ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDg4MDk0MzUuLmNjMWNkY2QgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTMsMTEgKzEzLDggQEAKICp+CiAuZ2RiX2hpc3RvcnkKIERvYy9idWlsZC8KLURvYy90b29scy9kb2N1dGlscy8KLURvYy90b29scy9qaW5qYS8KLURvYy90b29scy9qaW5qYTIvCi1Eb2MvdG9vbHMvcHlnbWVudHMvCi1Eb2MvdG9vbHMvc3BoaW54LworRG9jL3ZlbnYvCitMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKIExpYi9fc3lzY29uZmlnZGF0YS5weQpAQCAtMzEsMTggKzI4LDMxIEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAotTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgotTW9kdWxlcy9fdGVzdGVtYmVkCi1QQ2J1aWxkLyouYnNjCi1QQ2J1aWxkLyouZGxsCi1QQ2J1aWxkLyouZXhlCi1QQ2J1aWxkLyouZXhwCi1QQ2J1aWxkLyoubGliCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyoubwotUENidWlsZC8qLnBkYgotUENidWlsZC9XaW4zMi10ZW1wLSoKK1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQcm9ncmFtcy9fdGVzdGVtYmVkCitQQy9weXRob25fbnQqLmgKK1BDL3B5dGhvbm50X3JjKi5oCitQQy8qLyouZXhlCitQQy8qLyouZXhwCitQQy8qLyoubGliCitQQy8qLyouYnNjCitQQy8qLyouZGxsCitQQy8qLyoucGRiCitQQy8qLyoudXNlcgorUEMvKi8qLm5jYgorUEMvKi8qLnN1bworUEMvKi9XaW4zMi10ZW1wLSoKK1BDLyoveDY0LXRlbXAtKgorUEMvKi9hbWQ2NAorUENidWlsZC8qLnVzZXIKK1BDYnVpbGQvKi5zdW8KK1BDYnVpbGQvKi4qc2RmCitQQ2J1aWxkLyotcGdpCitQQ2J1aWxkLyotcGdvCitQQ2J1aWxkLy52cy8KIFBDYnVpbGQvYW1kNjQvCitQQ2J1aWxkL29iai8KK1BDQnVpbGQvd2luMzIvCiAucHVyaWZ5CiBQYXJzZXIvcGdlbgogX19weWNhY2hlX18KQEAgLTY0LDYgKzc0LDcgQEAKIHB5Y29uZmlnLmgKIHB5dGhvbi1jb25maWcKIHB5dGhvbi1jb25maWcucHkKK3B5dGhvbi5iYXQKIHB5dGhvbi5leGUKIHB5dGhvbi1nZGIucHkKIHB5dGhvbi5leGUtZ2RiLnB5CkBAIC03NSwzICs4Niw2IEBACiBjb3ZlcmFnZS8KIGV4dGVybmFscy8KIGh0bWxjb3YvCitUb29scy9tc2kvb2JqCitUb29scy9zc2wvYW1kNjQKK1Rvb2xzL3NzbC93aW4zMgpkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IDllNWE1ODMuLjgwNmUxNTYgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTksNiArOSw3IEBACiBhdXRvbTR0ZS5jYWNoZSQKIF5idWlsZC8KIF5Eb2MvYnVpbGQvCiteRG9jL3ZlbnYvCiBidWlsZG5vJAogY29uZmlnLmNhY2hlCiBjb25maWcubG9nCkBAIC0xOCw2ICsxOSw3IEBACiBwbGF0Zm9ybSQKIHB5Y29uZmlnLmgkCiBweXRob24kCitweXRob24uYmF0JAogcHl0aG9uLmV4ZSQKIHB5dGhvbi1jb25maWckCiBweXRob24tY29uZmlnLnB5JApAQCAtNDgsMTMgKzUwLDEyIEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KK0xpYi9kaXN0dXRpbHMvY29tbWFuZC8qLnBkYgogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQogUEMvcHl0aG9uX250Ki5oCiBQQy9weXRob25udF9yYyouaAotUEMvKi5vYmoKLVBDLyouZXhlCiBQQy8qLyouZXhlCiBQQy8qLyouZXhwCiBQQy8qLyoubGliCkBAIC02NywyOSArNjgsMjEgQEAKIFBDLyovV2luMzItdGVtcC0qCiBQQy8qL3g2NC10ZW1wLSoKIFBDLyovYW1kNjQKLVBDYnVpbGQvKi5leGUKLVBDYnVpbGQvKi5kbGwKLVBDYnVpbGQvKi5wZGIKLVBDYnVpbGQvKi5saWIKLVBDYnVpbGQvKi5leHAKLVBDYnVpbGQvKi5vCi1QQ2J1aWxkLyoubmNiCi1QQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyoudXNlcgogUENidWlsZC8qLnN1bwogUENidWlsZC8qLipzZGYKLVBDYnVpbGQvV2luMzItdGVtcC0qCi1QQ2J1aWxkL3g2NC10ZW1wLSoKIFBDYnVpbGQvKi1wZ2kKIFBDYnVpbGQvKi1wZ28KK1BDYnVpbGQvLnZzCiBQQ2J1aWxkL2FtZDY0Ci1QQ2J1aWxkL2lwY2gKK1BDYnVpbGQvb2JqCitQQ2J1aWxkL3dpbjMyCiBUb29scy91bmljb2RlL2J1aWxkLwogVG9vbHMvdW5pY29kZS9NQVBQSU5HUy8KIEJ1aWxkTG9nLmh0bQogX19weWNhY2hlX18KLU1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKLU1vZHVsZXMvX3Rlc3RlbWJlZAorUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1Byb2dyYW1zL190ZXN0ZW1iZWQKIC5jb3ZlcmFnZQogY292ZXJhZ2UvCiBleHRlcm5hbHMvCkBAIC05OCwzICs5MSw2IEBACiAqLmdjbm8KICouZ2NvdgogY292ZXJhZ2UuaW5mbworVG9vbHMvbXNpL29iagorVG9vbHMvc3NsL2FtZDY0CitUb29scy9zc2wvd2luMzIKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGQ1ZWVhMjQuLjAzZmY3M2YgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ0LDMgKzE0NCwxNiBAQAogYWIyYzAyM2E5NDMyZjE2NjUyZTg5YzQwNGJiYzg0YWE5MWJmNTVhZiB2My40LjIKIDY5ZGQ1MjhjYTYyNTVhNjZjMzdjYzVjZjY4MGU4MzU3ZDEwOGIwMzYgdjMuNC4zcmMxCiBiNGNiZWNiYzA3ODFlODlhMzA5ZDAzYjYwYTFmNzVmODQ5OTI1MGU2IHYzLjQuMworNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQorMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgorODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMworNDEzZTBlMDAwNGY0Zjk1NDMzMWNiODEyMmFhNTVmZTIwODk4NDk1NSB2My41LjBhNAorMDcxZmVmYmI1ZTNkYjc3MGM2YzE5ZmJhOTk5NDY5OWYxMjFiMWNlYSB2My41LjBiMQorN2EwODhhZjU2MTViZjA0MDI0ZTk5MTIwNjhmNGJkOGY0M2VkMzkxNyB2My41LjBiMgorMDAzNWZjZDliOTI0M2FlNTJjMmU4MzAyMDRmZDljMWY3ZDUyODUzNCB2My41LjBiMworYzBkNjQxMDU0NjM1ODFmODVkMGUzNjhlOGQ2ZTU5YjdmZDhmMTJiMSB2My41LjBiNAorMWE1OGIxMjI3NTAxZTA0NmVlZTEzZDkwZjExMzQxN2I2MDg0MzMwMSB2My41LjByYzEKK2NjMTVkNzM2ZDg2MDMwM2I5ZGE5MGQ0M2NkMzJkYjM5YmFiMDQ4ZGYgdjMuNS4wcmMyCis2NmVkNTIzNzVkZjgwMmY5ZDBhMzQ0ODBkYWFhOGNlNzlmYzQxMzEzIHYzLjUuMHJjMworMmQwMzNmZWRmYTdmMWUzMjVmZDE0Y2NkYWE5Y2I0MjE1NWRhMjA2ZiB2My41LjByYzQKKzM3NGY1MDFmNDU2N2I3NTk1ZjJhZDc3OThhYTA5YWZhMjQ1NmJiMjggdjMuNS4wCmRpZmYgLS1naXQgYS8uaGd0b3VjaCBiLy5oZ3RvdWNoCmluZGV4IDdlM2E1ZTcuLmI5YmUwZjEgMTAwNjQ0Ci0tLSBhLy5oZ3RvdWNoCisrKyBiLy5oZ3RvdWNoCkBAIC0yLDcgKzIsOSBAQAogIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCiAjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworUHl0aG9uL2ltcG9ydGxpYi5oOiBMaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworCitJbmNsdWRlL29wY29kZS5oOiAgTGliL29wY29kZS5weSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CiAKIEluY2x1ZGUvUHl0aG9uLWFzdC5oOiBQYXJzZXIvUHl0aG9uLmFzZGwgUGFyc2VyL2FzZGwucHkgUGFyc2VyL2FzZGxfYy5weQogUHl0aG9uL1B5dGhvbi1hc3QuYzogSW5jbHVkZS9QeXRob24tYXN0LmgKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCBlYTMwMjMxLi5hNDJlOThiIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTIgQEAKIAogLlBIT05ZOiBoZWxwIGJ1aWxkIGh0bWwgaHRtbGhlbHAgbGF0ZXggdGV4dCBjaGFuZ2VzIGxpbmtjaGVjayBcCiAJc3VzcGljaW91cyBjb3ZlcmFnZSBkb2N0ZXN0IHB5ZG9jLXRvcGljcyBodG1sdmlldyBjbGVhbiBkaXN0IGNoZWNrIHNlcnZlIFwKLQlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUKKwlhdXRvYnVpbGQtZGV2IGF1dG9idWlsZC1zdGFibGUgdmVudgogCiBoZWxwOgogCUBlY2hvICJQbGVhc2UgdXNlIFxgbWFrZSA8dGFyZ2V0Picgd2hlcmUgPHRhcmdldD4gaXMgb25lIG9mIgogCUBlY2hvICIgIGNsZWFuICAgICAgdG8gcmVtb3ZlIGJ1aWxkIGZpbGVzIgorCUBlY2hvICIgIHZlbnYgICAgICAgdG8gY3JlYXRlIGEgdmVudiB3aXRoIG5lY2Vzc2FyeSB0b29scyIKIAlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgogCUBlY2hvICIgIGh0bWx2aWV3ICAgdG8gb3BlbiB0aGUgaW5kZXggcGFnZSBidWlsdCBieSB0aGUgaHRtbCB0YXJnZXQgaW4geW91ciBicm93c2VyIgogCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgpAQCAtOTUsMTQgKzk2LDE4IEBACiAKIHB5ZG9jLXRvcGljczogQlVJTERFUiA9IHB5ZG9jLXRvcGljcwogcHlkb2MtdG9waWNzOiBidWlsZAotCUBlY2hvICJCdWlsZGluZyBmaW5pc2hlZDsgbm93IGNvcHkgYnVpbGQvcHlkb2MtdG9waWNzL3RvcGljcy5weSIgXAotCSAgICAgICJ0byAuLi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkiCisJQGVjaG8gIkJ1aWxkaW5nIGZpbmlzaGVkOyBub3cgcnVuIHRoaXM6IiBcCisJICAgICAgImNwIGJ1aWxkL3B5ZG9jLXRvcGljcy90b3BpY3MucHkgLi4vTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IgogCiBodG1sdmlldzogaHRtbAogCSAkKFBZVEhPTikgLWMgImltcG9ydCB3ZWJicm93c2VyOyB3ZWJicm93c2VyLm9wZW4oJ2J1aWxkL2h0bWwvaW5kZXguaHRtbCcpIgogCiBjbGVhbjoKLQktcm0gLXJmIGJ1aWxkLyoKKwktcm0gLXJmIGJ1aWxkLyogdmVudi8qCisKK3ZlbnY6CisJJChQWVRIT04pIC1tIHZlbnYgdmVudgorCS4vdmVudi9iaW4vcHl0aG9uMyAtbSBwaXAgaW5zdGFsbCAtVSBTcGhpbngKIAogZGlzdDoKIAlybSAtcmYgZGlzdApAQCAtMTcyLDQgKzE3NywzIEBACiAJCWV4aXQgMTs7IFwKIAllc2FjCiAJQG1ha2UgYXV0b2J1aWxkLWRldgotCmRpZmYgLS1naXQgYS9Eb2MvUkVBRE1FLnR4dCBiL0RvYy9SRUFETUUudHh0CmluZGV4IDU4YmRhNjIuLjU4MGQxMDIgMTAwNjQ0Ci0tLSBhL0RvYy9SRUFETUUudHh0CisrKyBiL0RvYy9SRUFETUUudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgcmVTdHJ1Y3R1cmVkVGV4dCAocmVTVCkgc291cmNlcyB0byB0aGUgUHl0aG9uCiBkb2N1bWVudGF0aW9uLiAgWW91IGRvbid0IG5lZWQgdG8gYnVpbGQgdGhlbSB5b3Vyc2VsZiwgcHJlYnVpbHQgdmVyc2lvbnMgYXJlCi1hdmFpbGFibGUgYXQgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC9kb3dubG9hZC5odG1sPi4KK2F2YWlsYWJsZSBhdCA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L2Rvd25sb2FkLmh0bWw+LgogCiBEb2N1bWVudGF0aW9uIG9uIGF1dGhvcmluZyBQeXRob24gZG9jdW1lbnRhdGlvbiwgaW5jbHVkaW5nIGluZm9ybWF0aW9uIGFib3V0CiBib3RoIHN0eWxlIGFuZCBtYXJrdXAsIGlzIGF2YWlsYWJsZSBpbiB0aGUgIkRvY3VtZW50aW5nIFB5dGhvbiIgY2hhcHRlciBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9hcmcucnN0IGIvRG9jL2MtYXBpL2FyZy5yc3QKaW5kZXggM2MwZjRiOS4uZWQ2MmRlYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2FyZy5yc3QKKysrIGIvRG9jL2MtYXBpL2FyZy5yc3QKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgogCi1gYHcqYGAgKDpjbGFzczpgYnl0ZWFycmF5YCBvciByZWFkLXdyaXRlIGJ5dGUtb3JpZW50ZWQgYnVmZmVyKSBbUHlfYnVmZmVyXQorYGB3KmBgIChyZWFkLXdyaXRlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApIFtQeV9idWZmZXJdCiAgICBUaGlzIGZvcm1hdCBhY2NlcHRzIGFueSBvYmplY3Qgd2hpY2ggaW1wbGVtZW50cyB0aGUgcmVhZC13cml0ZSBidWZmZXIKICAgIGludGVyZmFjZS4gSXQgZmlsbHMgYSA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBwcm92aWRlZCBieSB0aGUgY2FsbGVyLgogICAgVGhlIGJ1ZmZlciBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGJ5dGVzLiBUaGUgY2FsbGVyIGhhdmUgdG8gY2FsbApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2J1ZmZlci5yc3QgYi9Eb2MvYy1hcGkvYnVmZmVyLnJzdAppbmRleCBkMDk5YWNlLi40NmMxOWQzIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdAorKysgYi9Eb2MvYy1hcGkvYnVmZmVyLnJzdApAQCAtOTYsOCArOTYsOCBAQAogICAgICAgYmxvY2sgb2YgdGhlIGV4cG9ydGVyLiBGb3IgZXhhbXBsZSwgd2l0aCBuZWdhdGl2ZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuc3RyaWRlc2AKICAgICAgIHRoZSB2YWx1ZSBtYXkgcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgbWVtb3J5IGJsb2NrLgogCi0gICAgICBGb3IgY29udGlndW91cyBhcnJheXMsIHRoZSB2YWx1ZSBwb2ludHMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbWVtb3J5Ci0gICAgICBibG9jay4KKyAgICAgIEZvciA6dGVybTpgY29udGlndW91c2AgYXJyYXlzLCB0aGUgdmFsdWUgcG9pbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgIHRoZSBtZW1vcnkgYmxvY2suCiAKICAgIC4uIGM6bWVtYmVyOjogdm9pZCBcKm9iagogCkBAIC0yODEsMTEgKzI4MSwxNCBAQAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAogCisuLiBpbmRleDo6IGNvbnRpZ3VvdXMsIEMtY29udGlndW91cywgRm9ydHJhbiBjb250aWd1b3VzCisKIGNvbnRpZ3VpdHkgcmVxdWVzdHMKIH5+fn5+fn5+fn5+fn5+fn5+fn4KIAotQyBvciBGb3J0cmFuIGNvbnRpZ3VpdHkgY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkLCB3aXRoIGFuZCB3aXRob3V0IHN0cmlkZQotaW5mb3JtYXRpb24uIFdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLCB0aGUgYnVmZmVyIG11c3QgYmUgQy1jb250aWd1b3VzLgorQyBvciBGb3J0cmFuIDp0ZXJtOmBjb250aWd1aXR5IDxjb250aWd1b3VzPmAgY2FuIGJlIGV4cGxpY2l0bHkgcmVxdWVzdGVkLAord2l0aCBhbmQgd2l0aG91dCBzdHJpZGUgaW5mb3JtYXRpb24uIFdpdGhvdXQgc3RyaWRlIGluZm9ybWF0aW9uLCB0aGUgYnVmZmVyCittdXN0IGJlIEMtY29udGlndW91cy4KIAogLi4gdGFidWxhcmNvbHVtbnM6OiB8cHswLjM1XGxpbmV3aWR0aH18bHxsfGx8bHwKIApAQCAtNDY2LDEzICs0NjksMTMgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfSXNDb250aWd1b3VzKFB5X2J1ZmZlciAqdmlldywgY2hhciBvcmRlcikKIAogICAgUmV0dXJuIDEgaWYgdGhlIG1lbW9yeSBkZWZpbmVkIGJ5IHRoZSAqdmlldyogaXMgQy1zdHlsZSAoKm9yZGVyKiBpcwotICAgYGAnQydgYCkgb3IgRm9ydHJhbi1zdHlsZSAoKm9yZGVyKiBpcyBgYCdGJ2BgKSBjb250aWd1b3VzIG9yIGVpdGhlciBvbmUKKyAgIGBgJ0MnYGApIG9yIEZvcnRyYW4tc3R5bGUgKCpvcmRlciogaXMgYGAnRidgYCkgOnRlcm06YGNvbnRpZ3VvdXNgIG9yIGVpdGhlciBvbmUKICAgICgqb3JkZXIqIGlzIGBgJ0EnYGApLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgb3JkZXIpCiAKLSAgIEZpbGwgdGhlICpzdHJpZGVzKiBhcnJheSB3aXRoIGJ5dGUtc3RyaWRlcyBvZiBhIGNvbnRpZ3VvdXMgKEMtc3R5bGUgaWYKKyAgIEZpbGwgdGhlICpzdHJpZGVzKiBhcnJheSB3aXRoIGJ5dGUtc3RyaWRlcyBvZiBhIDp0ZXJtOmBjb250aWd1b3VzYCAoQy1zdHlsZSBpZgogICAgKm9yZGVyKiBpcyBgYCdDJ2BgIG9yIEZvcnRyYW4tc3R5bGUgaWYgKm9yZGVyKiBpcyBgYCdGJ2BgKSBhcnJheSBvZiB0aGUKICAgIGdpdmVuIHNoYXBlIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBieXRlcyBwZXIgZWxlbWVudC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvZGVjLnJzdCBiL0RvYy9jLWFwaS9jb2RlYy5yc3QKaW5kZXggODMyNTJhZi4uZGZlM2Q0MyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NvZGVjLnJzdAorKysgYi9Eb2MvYy1hcGkvY29kZWMucnN0CkBAIC0xMTYsMyArMTE2LDggQEAKICAgIFJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKGBgXHhgYCwgYGBcdWBgIGFuZAogICAgYGBcVWBgKS4KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpCisKKyAgIFJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY29uY3JldGUucnN0IGIvRG9jL2MtYXBpL2NvbmNyZXRlLnJzdAppbmRleCAyZDU2Mzg2Li40N2RhYjgxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvY29uY3JldGUucnN0CisrKyBiL0RvYy9jLWFwaS9jb25jcmV0ZS5yc3QKQEAgLTExMiw1ICsxMTIsNiBAQAogICAgd2Vha3JlZi5yc3QKICAgIGNhcHN1bGUucnN0CiAgICBnZW4ucnN0CisgICBjb3JvLnJzdAogICAgZGF0ZXRpbWUucnN0CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9jb3JvLnJzdCBiL0RvYy9jLWFwaS9jb3JvLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmU1MGI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2MtYXBpL2Nvcm8ucnN0CkBAIC0wLDAgKzEsMzQgQEAKKy4uIGhpZ2hsaWdodGxhbmc6OiBjCisKKy4uIF9jb3JvLW9iamVjdHM6CisKK0Nvcm91dGluZSBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworQ29yb3V0aW5lIG9iamVjdHMgYXJlIHdoYXQgZnVuY3Rpb25zIGRlY2xhcmVkIHdpdGggYW4gYGBhc3luY2BgIGtleXdvcmQKK3JldHVybi4KKworCisuLiBjOnR5cGU6OiBQeUNvcm9PYmplY3QKKworICAgVGhlIEMgc3RydWN0dXJlIHVzZWQgZm9yIGNvcm91dGluZSBvYmplY3RzLgorCisKKy4uIGM6dmFyOjogUHlUeXBlT2JqZWN0IFB5Q29yb19UeXBlCisKKyAgIFRoZSB0eXBlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIGNvcm91dGluZSBvYmplY3RzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb3JvX0NoZWNrRXhhY3QoUHlPYmplY3QgKm9iKQorCisgICBSZXR1cm4gdHJ1ZSBpZiAqb2IqJ3MgdHlwZSBpcyAqUHlDb3JvX1R5cGUqOyAqb2IqIG11c3Qgbm90IGJlICpOVUxMKi4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5Q29yb19OZXcoUHlGcmFtZU9iamVjdCAqZnJhbWUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCisKKyAgIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGNvcm91dGluZSBvYmplY3QgYmFzZWQgb24gdGhlICpmcmFtZSogb2JqZWN0LAorICAgd2l0aCBgYF9fbmFtZV9fYGAgYW5kIGBgX19xdWFsbmFtZV9fYGAgc2V0IHRvICpuYW1lKiBhbmQgKnF1YWxuYW1lKi4KKyAgIEEgcmVmZXJlbmNlIHRvICpmcmFtZSogaXMgc3RvbGVuIGJ5IHRoaXMgZnVuY3Rpb24uICBUaGUgKmZyYW1lKiBhcmd1bWVudAorICAgbXVzdCBub3QgYmUgKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IGMyZGY3NjcuLjNmZDY5YmEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTksMTMgKzksMTkgQEAKIAogVGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHdpbGwgbGV0IHlvdSBoYW5kbGUgYW5kIHJhaXNlIFB5dGhvbgogZXhjZXB0aW9ucy4gIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHNvbWUgb2YgdGhlIGJhc2ljcyBvZiBQeXRob24KLWV4Y2VwdGlvbiBoYW5kbGluZy4gIEl0IHdvcmtzIHNvbWV3aGF0IGxpa2UgdGhlIFVuaXggOmM6ZGF0YTpgZXJybm9gIHZhcmlhYmxlOgorZXhjZXB0aW9uIGhhbmRsaW5nLiAgSXQgd29ya3Mgc29tZXdoYXQgbGlrZSB0aGUgUE9TSVggOmM6ZGF0YTpgZXJybm9gIHZhcmlhYmxlOgogdGhlcmUgaXMgYSBnbG9iYWwgaW5kaWNhdG9yIChwZXIgdGhyZWFkKSBvZiB0aGUgbGFzdCBlcnJvciB0aGF0IG9jY3VycmVkLiAgTW9zdAotZnVuY3Rpb25zIGRvbid0IGNsZWFyIHRoaXMgb24gc3VjY2VzcywgYnV0IHdpbGwgc2V0IGl0IHRvIGluZGljYXRlIHRoZSBjYXVzZSBvZgotdGhlIGVycm9yIG9uIGZhaWx1cmUuICBNb3N0IGZ1bmN0aW9ucyBhbHNvIHJldHVybiBhbiBlcnJvciBpbmRpY2F0b3IsIHVzdWFsbHkKLSpOVUxMKiBpZiB0aGV5IGFyZSBzdXBwb3NlZCB0byByZXR1cm4gYSBwb2ludGVyLCBvciBgYC0xYGAgaWYgdGhleSByZXR1cm4gYW4KLWludGVnZXIgKGV4Y2VwdGlvbjogdGhlIDpjOmZ1bmM6YFB5QXJnX1wqYCBmdW5jdGlvbnMgcmV0dXJuIGBgMWBgIGZvciBzdWNjZXNzIGFuZAotYGAwYGAgZm9yIGZhaWx1cmUpLgorQyBBUEkgZnVuY3Rpb25zIGRvbid0IGNsZWFyIHRoaXMgb24gc3VjY2VzcywgYnV0IHdpbGwgc2V0IGl0IHRvIGluZGljYXRlIHRoZQorY2F1c2Ugb2YgdGhlIGVycm9yIG9uIGZhaWx1cmUuICBNb3N0IEMgQVBJIGZ1bmN0aW9ucyBhbHNvIHJldHVybiBhbiBlcnJvcgoraW5kaWNhdG9yLCB1c3VhbGx5ICpOVUxMKiBpZiB0aGV5IGFyZSBzdXBwb3NlZCB0byByZXR1cm4gYSBwb2ludGVyLCBvciBgYC0xYGAKK2lmIHRoZXkgcmV0dXJuIGFuIGludGVnZXIgKGV4Y2VwdGlvbjogdGhlIDpjOmZ1bmM6YFB5QXJnX1wqYCBmdW5jdGlvbnMKK3JldHVybiBgYDFgYCBmb3Igc3VjY2VzcyBhbmQgYGAwYGAgZm9yIGZhaWx1cmUpLgorCitDb25jcmV0ZWx5LCB0aGUgZXJyb3IgaW5kaWNhdG9yIGNvbnNpc3RzIG9mIHRocmVlIG9iamVjdCBwb2ludGVyczogdGhlCitleGNlcHRpb24ncyB0eXBlLCB0aGUgZXhjZXB0aW9uJ3MgdmFsdWUsIGFuZCB0aGUgdHJhY2ViYWNrIG9iamVjdC4gIEFueQorb2YgdGhvc2UgcG9pbnRlcnMgY2FuIGJlIE5VTEwgaWYgbm9uLXNldCAoYWx0aG91Z2ggc29tZSBjb21iaW5hdGlvbnMgYXJlCitmb3JiaWRkZW4sIGZvciBleGFtcGxlIHlvdSBjYW4ndCBoYXZlIGEgbm9uLU5VTEwgdHJhY2ViYWNrIGlmIHRoZSBleGNlcHRpb24KK3R5cGUgaXMgTlVMTCkuCiAKIFdoZW4gYSBmdW5jdGlvbiBtdXN0IGZhaWwgYmVjYXVzZSBzb21lIGZ1bmN0aW9uIGl0IGNhbGxlZCBmYWlsZWQsIGl0IGdlbmVyYWxseQogZG9lc24ndCBzZXQgdGhlIGVycm9yIGluZGljYXRvcjsgdGhlIGZ1bmN0aW9uIGl0IGNhbGxlZCBhbHJlYWR5IHNldCBpdC4gIEl0IGlzCkBAIC0yNywxMiArMzMsMjEgQEAKIHByb3BhZ2F0ZWQsIGFkZGl0aW9uYWwgY2FsbHMgaW50byB0aGUgUHl0aG9uL0MgQVBJIG1heSBub3QgYmVoYXZlIGFzIGludGVuZGVkCiBhbmQgbWF5IGZhaWwgaW4gbXlzdGVyaW91cyB3YXlzLgogCi1UaGUgZXJyb3IgaW5kaWNhdG9yIGNvbnNpc3RzIG9mIHRocmVlIFB5dGhvbiBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlc3VsdAotb2YgYGBzeXMuZXhjX2luZm8oKWBgLiAgQVBJIGZ1bmN0aW9ucyBleGlzdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBlcnJvciBpbmRpY2F0b3IKLWluIHZhcmlvdXMgd2F5cy4gIFRoZXJlIGlzIGEgc2VwYXJhdGUgZXJyb3IgaW5kaWNhdG9yIGZvciBlYWNoIHRocmVhZC4KKy4uIG5vdGU6OgorICAgVGhlIGVycm9yIGluZGljYXRvciBpcyAqKm5vdCoqIHRoZSByZXN1bHQgb2YgOmZ1bmM6YHN5cy5leGNfaW5mbygpYC4KKyAgIFRoZSBmb3JtZXIgY29ycmVzcG9uZHMgdG8gYW4gZXhjZXB0aW9uIHRoYXQgaXMgbm90IHlldCBjYXVnaHQgKGFuZCBpcworICAgdGhlcmVmb3JlIHN0aWxsIHByb3BhZ2F0aW5nKSwgd2hpbGUgdGhlIGxhdHRlciByZXR1cm5zIGFuIGV4Y2VwdGlvbiBhZnRlcgorICAgaXQgaXMgY2F1Z2h0IChhbmQgaGFzIHRoZXJlZm9yZSBzdG9wcGVkIHByb3BhZ2F0aW5nKS4KIAotLi4gWFhYIE9yZGVyIG9mIHRoZXNlIHNob3VsZCBiZSBtb3JlIHRob3VnaHRmdWwuCi0gICBFaXRoZXIgYWxwaGFiZXRpY2FsIG9yIHNvbWUga2luZCBvZiBzdHJ1Y3R1cmUuCisKK1ByaW50aW5nIGFuZCBjbGVhcmluZworPT09PT09PT09PT09PT09PT09PT09CisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfQ2xlYXIoKQorCisgICBDbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcyBub3Qgc2V0LCB0aGVyZSBpcyBubworICAgZWZmZWN0LgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1ByaW50RXgoaW50IHNldF9zeXNfbGFzdF92YXJzKQpAQCAtNTEsMTI3ICs2NiwyNCBAQAogICAgQWxpYXMgZm9yIGBgUHlFcnJfUHJpbnRFeCgxKWBgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlFcnJfT2NjdXJyZWQoKQorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKFB5T2JqZWN0ICpvYmopCiAKLSAgIFRlc3Qgd2hldGhlciB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIHNldC4gIElmIHNldCwgcmV0dXJuIHRoZSBleGNlcHRpb24gKnR5cGUqCi0gICAodGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gb25lIG9mIHRoZSA6YzpmdW5jOmBQeUVycl9TZXRcKmAKLSAgIGZ1bmN0aW9ucyBvciB0byA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYCkuICBJZiBub3Qgc2V0LCByZXR1cm4gKk5VTEwqLiAgWW91IGRvIG5vdAotICAgb3duIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1cm4gdmFsdWUsIHNvIHlvdSBkbyBub3QgbmVlZCB0byA6YzpmdW5jOmBQeV9ERUNSRUZgCi0gICBpdC4KKyAgIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gYGBzeXMuc3RkZXJyYGAgd2hlbiBhbgorICAgZXhjZXB0aW9uIGhhcyBiZWVuIHNldCBidXQgaXQgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIGludGVycHJldGVyIHRvIGFjdHVhbGx5CisgICByYWlzZSB0aGUgZXhjZXB0aW9uLiAgSXQgaXMgdXNlZCwgZm9yIGV4YW1wbGUsIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbgorICAgOm1ldGg6YF9fZGVsX19gIG1ldGhvZC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIERvIG5vdCBjb21wYXJlIHRoZSByZXR1cm4gdmFsdWUgdG8gYSBzcGVjaWZpYyBleGNlcHRpb247IHVzZQotICAgICAgOmM6ZnVuYzpgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlc2AgaW5zdGVhZCwgc2hvd24gYmVsb3cuICAoVGhlIGNvbXBhcmlzb24gY291bGQKLSAgICAgIGVhc2lseSBmYWlsIHNpbmNlIHRoZSBleGNlcHRpb24gbWF5IGJlIGFuIGluc3RhbmNlIGluc3RlYWQgb2YgYSBjbGFzcywgaW4gdGhlCi0gICAgICBjYXNlIG9mIGEgY2xhc3MgZXhjZXB0aW9uLCBvciBpdCBtYXkgYmUgYSBzdWJjbGFzcyBvZiB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uLikKKyAgIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAqb2JqKiB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbnRleHQKKyAgIGluIHdoaWNoIHRoZSB1bnJhaXNhYmxlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gVGhlIHJlcHIgb2YgKm9iaiogd2lsbCBiZSBwcmludGVkIGluCisgICB0aGUgd2FybmluZyBtZXNzYWdlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZXhjKQorUmFpc2luZyBleGNlcHRpb25zCis9PT09PT09PT09PT09PT09PT0KIAotICAgRXF1aXZhbGVudCB0byBgYFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhQeUVycl9PY2N1cnJlZCgpLCBleGMpYGAuICBUaGlzCi0gICBzaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaXMgYWN0dWFsbHkgc2V0OyBhIG1lbW9yeSBhY2Nlc3MKLSAgIHZpb2xhdGlvbiB3aWxsIG9jY3VyIGlmIG5vIGV4Y2VwdGlvbiBoYXMgYmVlbiByYWlzZWQuCi0KLQotLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoUHlPYmplY3QgKmdpdmVuLCBQeU9iamVjdCAqZXhjKQotCi0gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgKmdpdmVuKiBleGNlcHRpb24gbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGluICpleGMqLiAgSWYKLSAgICpleGMqIGlzIGEgY2xhc3Mgb2JqZWN0LCB0aGlzIGFsc28gcmV0dXJucyB0cnVlIHdoZW4gKmdpdmVuKiBpcyBhbiBpbnN0YW5jZQotICAgb2YgYSBzdWJjbGFzcy4gIElmICpleGMqIGlzIGEgdHVwbGUsIGFsbCBleGNlcHRpb25zIGluIHRoZSB0dXBsZSAoYW5kCi0gICByZWN1cnNpdmVseSBpbiBzdWJ0dXBsZXMpIGFyZSBzZWFyY2hlZCBmb3IgYSBtYXRjaC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oUHlPYmplY3QqKmV4YywgUHlPYmplY3QqKnZhbCwgUHlPYmplY3QqKnRiKQotCi0gICBVbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgOmM6ZnVuYzpgUHlFcnJfRmV0Y2hgIGJlbG93Ci0gICBjYW4gYmUgInVubm9ybWFsaXplZCIsIG1lYW5pbmcgdGhhdCBgYCpleGNgYCBpcyBhIGNsYXNzIG9iamVjdCBidXQgYGAqdmFsYGAgaXMKLSAgIG5vdCBhbiBpbnN0YW5jZSBvZiB0aGUgIHNhbWUgY2xhc3MuICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGluc3RhbnRpYXRlCi0gICB0aGUgY2xhc3MgaW4gdGhhdCBjYXNlLiAgSWYgdGhlIHZhbHVlcyBhcmUgYWxyZWFkeSBub3JtYWxpemVkLCBub3RoaW5nIGhhcHBlbnMuCi0gICBUaGUgZGVsYXllZCBub3JtYWxpemF0aW9uIGlzIGltcGxlbWVudGVkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBUaGlzIGZ1bmN0aW9uICpkb2VzIG5vdCogaW1wbGljaXRseSBzZXQgdGhlIGBgX190cmFjZWJhY2tfX2BgCi0gICAgICBhdHRyaWJ1dGUgb24gdGhlIGV4Y2VwdGlvbiB2YWx1ZS4gSWYgc2V0dGluZyB0aGUgdHJhY2ViYWNrCi0gICAgICBhcHByb3ByaWF0ZWx5IGlzIGRlc2lyZWQsIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBzbmlwcGV0IGlzIG5lZWRlZDo6Ci0KLSAgICAgICAgIGlmICh0YiAhPSBOVUxMKSB7Ci0gICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKLSAgICAgICAgIH0KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9DbGVhcigpCi0KLSAgIENsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICBJZiB0aGUgZXJyb3IgaW5kaWNhdG9yIGlzIG5vdCBzZXQsIHRoZXJlIGlzIG5vCi0gICBlZmZlY3QuCi0KLQotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfRmV0Y2goUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKLQotICAgUmV0cmlldmUgdGhlIGVycm9yIGluZGljYXRvciBpbnRvIHRocmVlIHZhcmlhYmxlcyB3aG9zZSBhZGRyZXNzZXMgYXJlIHBhc3NlZC4KLSAgIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgbm90IHNldCwgc2V0IGFsbCB0aHJlZSB2YXJpYWJsZXMgdG8gKk5VTEwqLiAgSWYgaXQgaXMKLSAgIHNldCwgaXQgd2lsbCBiZSBjbGVhcmVkIGFuZCB5b3Ugb3duIGEgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0IHJldHJpZXZlZC4gIFRoZQotICAgdmFsdWUgYW5kIHRyYWNlYmFjayBvYmplY3QgbWF5IGJlICpOVUxMKiBldmVuIHdoZW4gdGhlIHR5cGUgb2JqZWN0IGlzIG5vdC4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgb25seSB1c2VkIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBoYW5kbGUgZXhjZXB0aW9ucyBvcgotICAgICAgYnkgY29kZSB0aGF0IG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGVycm9yIGluZGljYXRvciB0ZW1wb3JhcmlseS4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9SZXN0b3JlKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCi0KLSAgIFNldCAgdGhlIGVycm9yIGluZGljYXRvciBmcm9tIHRoZSB0aHJlZSBvYmplY3RzLiAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcwotICAgYWxyZWFkeSBzZXQsIGl0IGlzIGNsZWFyZWQgZmlyc3QuICBJZiB0aGUgb2JqZWN0cyBhcmUgKk5VTEwqLCB0aGUgZXJyb3IKLSAgIGluZGljYXRvciBpcyBjbGVhcmVkLiAgRG8gbm90IHBhc3MgYSAqTlVMTCogdHlwZSBhbmQgbm9uLSpOVUxMKiB2YWx1ZSBvcgotICAgdHJhY2ViYWNrLiAgVGhlIGV4Y2VwdGlvbiB0eXBlIHNob3VsZCBiZSBhIGNsYXNzLiAgRG8gbm90IHBhc3MgYW4gaW52YWxpZAotICAgZXhjZXB0aW9uIHR5cGUgb3IgdmFsdWUuIChWaW9sYXRpbmcgdGhlc2UgcnVsZXMgd2lsbCBjYXVzZSBzdWJ0bGUgcHJvYmxlbXMKLSAgIGxhdGVyLikgIFRoaXMgY2FsbCB0YWtlcyBhd2F5IGEgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0OiB5b3UgbXVzdCBvd24gYQotICAgcmVmZXJlbmNlIHRvIGVhY2ggb2JqZWN0IGJlZm9yZSB0aGUgY2FsbCBhbmQgYWZ0ZXIgdGhlIGNhbGwgeW91IG5vIGxvbmdlciBvd24KLSAgIHRoZXNlIHJlZmVyZW5jZXMuICAoSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgdGhpcywgZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb24uICBJCi0gICB3YXJuZWQgeW91LikKLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm9ybWFsbHkgb25seSB1c2VkIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZQotICAgICAgZXJyb3IgaW5kaWNhdG9yIHRlbXBvcmFyaWx5OyB1c2UgOmM6ZnVuYzpgUHlFcnJfRmV0Y2hgIHRvIHNhdmUgdGhlIGN1cnJlbnQKLSAgICAgIGV4Y2VwdGlvbiBzdGF0ZS4KLQotCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9HZXRFeGNJbmZvKFB5T2JqZWN0ICoqcHR5cGUsIFB5T2JqZWN0ICoqcHZhbHVlLCBQeU9iamVjdCAqKnB0cmFjZWJhY2spCi0KLSAgIFJldHJpZXZlIHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycwotICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCi0gICBmcmVzaGx5IHJhaXNlZC4gIFJldHVybnMgbmV3IHJlZmVyZW5jZXMgZm9yIHRoZSB0aHJlZSBvYmplY3RzLCBhbnkgb2Ygd2hpY2gKLSAgIG1heSBiZSAqTlVMTCouICBEb2VzIG5vdCBtb2RpZnkgdGhlIGV4Y2VwdGlvbiBpbmZvIHN0YXRlLgotCi0gICAuLiBub3RlOjoKLQotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3Qgbm9ybWFsbHkgdXNlZCBieSBjb2RlIHRoYXQgd2FudHMgdG8gaGFuZGxlIGV4Y2VwdGlvbnMuCi0gICAgICBSYXRoZXIsIGl0IGNhbiBiZSB1c2VkIHdoZW4gY29kZSBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBleGNlcHRpb24KLSAgICAgIHN0YXRlIHRlbXBvcmFyaWx5LiAgVXNlIDpjOmZ1bmM6YFB5RXJyX1NldEV4Y0luZm9gIHRvIHJlc3RvcmUgb3IgY2xlYXIgdGhlCi0gICAgICBleGNlcHRpb24gc3RhdGUuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotCi0KLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1NldEV4Y0luZm8oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjaykKLQotICAgU2V0IHRoZSBleGNlcHRpb24gaW5mbywgYXMga25vd24gZnJvbSBgYHN5cy5leGNfaW5mbygpYGAuICBUaGlzIHJlZmVycwotICAgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzIGFscmVhZHkgY2F1Z2h0LCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCi0gICBmcmVzaGx5IHJhaXNlZC4gIFRoaXMgZnVuY3Rpb24gc3RlYWxzIHRoZSByZWZlcmVuY2VzIG9mIHRoZSBhcmd1bWVudHMuCi0gICBUbyBjbGVhciB0aGUgZXhjZXB0aW9uIHN0YXRlLCBwYXNzICpOVUxMKiBmb3IgYWxsIHRocmVlIGFyZ3VtZW50cy4KLSAgIEZvciBnZW5lcmFsIHJ1bGVzIGFib3V0IHRoZSB0aHJlZSBhcmd1bWVudHMsIHNlZSA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYC4KLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgotICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCi0gICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9HZXRFeGNJbmZvYCB0byByZWFkIHRoZSBleGNlcHRpb24KLSAgICAgIHN0YXRlLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKK1RoZXNlIGZ1bmN0aW9ucyBoZWxwIHlvdSBzZXQgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgZXJyb3IgaW5kaWNhdG9yLgorRm9yIGNvbnZlbmllbmNlLCBzb21lIG9mIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGFsd2F5cyByZXR1cm4gYQorTlVMTCBwb2ludGVyIGZvciB1c2UgaW4gYSBgYHJldHVybmBgIHN0YXRlbWVudC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRTdHJpbmcoUHlPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCkBAIC0xOTcsNiArMTA5LDE0IEBACiAgICBzdHJpbmcuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9Gb3JtYXRWKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKKworICAgU2FtZSBhcyA6YzpmdW5jOmBQeUVycl9Gb3JtYXRgLCBidXQgdGFraW5nIGEgOmM6dHlwZTpgdmFfbGlzdGAgYXJndW1lbnQgcmF0aGVyCisgICB0aGFuIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0Tm9uZShQeU9iamVjdCAqdHlwZSkKIAogICAgVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgYGBQeUVycl9TZXRPYmplY3QodHlwZSwgUHlfTm9uZSlgYC4KQEAgLTM0Niw2ICsyNjYsMjIgQEAKICAgIHVzZS4KIAogCitJc3N1aW5nIHdhcm5pbmdzCis9PT09PT09PT09PT09PT09CisKK1VzZSB0aGVzZSBmdW5jdGlvbnMgdG8gaXNzdWUgd2FybmluZ3MgZnJvbSBDIGNvZGUuICBUaGV5IG1pcnJvciBzaW1pbGFyCitmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhlIFB5dGhvbiA6bW9kOmB3YXJuaW5nc2AgbW9kdWxlLiAgVGhleSBub3JtYWxseQorcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gKnN5cy5zdGRlcnIqOyBob3dldmVyLCBpdCBpcworYWxzbyBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB3YXJuaW5ncyBhcmUgdG8gYmUgdHVybmVkIGludG8KK2Vycm9ycywgYW5kIGluIHRoYXQgY2FzZSB0aGV5IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0Cit0aGUgZnVuY3Rpb25zIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIGEgcHJvYmxlbSB3aXRoIHRoZSB3YXJuaW5nIG1hY2hpbmVyeS4KK1RoZSByZXR1cm4gdmFsdWUgaXMgYGAwYGAgaWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3IgYGAtMWBgIGlmIGFuIGV4Y2VwdGlvbgoraXMgcmFpc2VkLiAgKEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHdhcm5pbmcgbWVzc2FnZSBpcworYWN0dWFsbHkgcHJpbnRlZCwgbm9yIHdoYXQgdGhlIHJlYXNvbiBpcyBmb3IgdGhlIGV4Y2VwdGlvbjsgdGhpcyBpcworaW50ZW50aW9uYWwuKSAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIGNhbGxlciBzaG91bGQgZG8gaXRzIG5vcm1hbAorZXhjZXB0aW9uIGhhbmRsaW5nIChmb3IgZXhhbXBsZSwgOmM6ZnVuYzpgUHlfREVDUkVGYCBvd25lZCByZWZlcmVuY2VzIGFuZCByZXR1cm4KK2FuIGVycm9yIHZhbHVlKS4KKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9XYXJuRXgoUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICptZXNzYWdlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQogCiAgICBJc3N1ZSBhIHdhcm5pbmcgbWVzc2FnZS4gIFRoZSAqY2F0ZWdvcnkqIGFyZ3VtZW50IGlzIGEgd2FybmluZyBjYXRlZ29yeSAoc2VlCkBAIC0zNTUsMTggKzI5MSw2IEBACiAgICBpcyB0aGUgZnVuY3Rpb24gY2FsbGluZyA6YzpmdW5jOmBQeUVycl9XYXJuRXhgLCAyIGlzICB0aGUgZnVuY3Rpb24gYWJvdmUgdGhhdCwKICAgIGFuZCBzbyBmb3J0aC4KIAotICAgVGhpcyBmdW5jdGlvbiBub3JtYWxseSBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gKnN5cy5zdGRlcnIqOyBob3dldmVyLCBpdCBpcwotICAgYWxzbyBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB3YXJuaW5ncyBhcmUgdG8gYmUgdHVybmVkIGludG8KLSAgIGVycm9ycywgYW5kIGluIHRoYXQgY2FzZSB0aGlzIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGF0Ci0gICB0aGUgZnVuY3Rpb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiBiZWNhdXNlIG9mIGEgcHJvYmxlbSB3aXRoIHRoZSB3YXJuaW5nIG1hY2hpbmVyeQotICAgKHRoZSBpbXBsZW1lbnRhdGlvbiBpbXBvcnRzIHRoZSA6bW9kOmB3YXJuaW5nc2AgbW9kdWxlIHRvIGRvIHRoZSBoZWF2eSBsaWZ0aW5nKS4KLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYGAwYGAgaWYgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZCwgb3IgYGAtMWBgIGlmIGFuIGV4Y2VwdGlvbgotICAgaXMgcmFpc2VkLiAgKEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hldGhlciBhIHdhcm5pbmcgbWVzc2FnZSBpcwotICAgYWN0dWFsbHkgcHJpbnRlZCwgbm9yIHdoYXQgdGhlIHJlYXNvbiBpcyBmb3IgdGhlIGV4Y2VwdGlvbjsgdGhpcyBpcwotICAgaW50ZW50aW9uYWwuKSAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgdGhlIGNhbGxlciBzaG91bGQgZG8gaXRzIG5vcm1hbAotICAgZXhjZXB0aW9uIGhhbmRsaW5nIChmb3IgZXhhbXBsZSwgOmM6ZnVuYzpgUHlfREVDUkVGYCBvd25lZCByZWZlcmVuY2VzIGFuZCByZXR1cm4KLSAgIGFuIGVycm9yIHZhbHVlKS4KLQogICAgV2FybmluZyBjYXRlZ29yaWVzIG11c3QgYmUgc3ViY2xhc3NlcyBvZiA6YzpkYXRhOmBXYXJuaW5nYDsgdGhlIGRlZmF1bHQgd2FybmluZwogICAgY2F0ZWdvcnkgaXMgOmM6ZGF0YTpgUnVudGltZVdhcm5pbmdgLiAgVGhlIHN0YW5kYXJkIFB5dGhvbiB3YXJuaW5nIGNhdGVnb3JpZXMgYXJlCiAgICBhdmFpbGFibGUgYXMgZ2xvYmFsIHZhcmlhYmxlcyB3aG9zZSBuYW1lcyBhcmUgYGBQeUV4Y19gYCBmb2xsb3dlZCBieSB0aGUgUHl0aG9uCkBAIC00MTAsNiArMzM0LDEzOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX09jY3VycmVkKCkKKworICAgVGVzdCB3aGV0aGVyIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMgc2V0LiAgSWYgc2V0LCByZXR1cm4gdGhlIGV4Y2VwdGlvbiAqdHlwZSoKKyAgICh0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGxhc3QgY2FsbCB0byBvbmUgb2YgdGhlIDpjOmZ1bmM6YFB5RXJyX1NldFwqYAorICAgZnVuY3Rpb25zIG9yIHRvIDpjOmZ1bmM6YFB5RXJyX1Jlc3RvcmVgKS4gIElmIG5vdCBzZXQsIHJldHVybiAqTlVMTCouICBZb3UgZG8gbm90CisgICBvd24gYSByZWZlcmVuY2UgdG8gdGhlIHJldHVybiB2YWx1ZSwgc28geW91IGRvIG5vdCBuZWVkIHRvIDpjOmZ1bmM6YFB5X0RFQ1JFRmAKKyAgIGl0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRG8gbm90IGNvbXBhcmUgdGhlIHJldHVybiB2YWx1ZSB0byBhIHNwZWNpZmljIGV4Y2VwdGlvbjsgdXNlCisgICAgICA6YzpmdW5jOmBQeUVycl9FeGNlcHRpb25NYXRjaGVzYCBpbnN0ZWFkLCBzaG93biBiZWxvdy4gIChUaGUgY29tcGFyaXNvbiBjb3VsZAorICAgICAgZWFzaWx5IGZhaWwgc2luY2UgdGhlIGV4Y2VwdGlvbiBtYXkgYmUgYW4gaW5zdGFuY2UgaW5zdGVhZCBvZiBhIGNsYXNzLCBpbiB0aGUKKyAgICAgIGNhc2Ugb2YgYSBjbGFzcyBleGNlcHRpb24sIG9yIGl0IG1heSBiZSBhIHN1YmNsYXNzIG9mIHRoZSBleHBlY3RlZCBleGNlcHRpb24uKQorCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZXhjKQorCisgICBFcXVpdmFsZW50IHRvIGBgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKFB5RXJyX09jY3VycmVkKCksIGV4YylgYC4gIFRoaXMKKyAgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiBpcyBhY3R1YWxseSBzZXQ7IGEgbWVtb3J5IGFjY2VzcworICAgdmlvbGF0aW9uIHdpbGwgb2NjdXIgaWYgbm8gZXhjZXB0aW9uIGhhcyBiZWVuIHJhaXNlZC4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhQeU9iamVjdCAqZ2l2ZW4sIFB5T2JqZWN0ICpleGMpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSAqZ2l2ZW4qIGV4Y2VwdGlvbiBtYXRjaGVzIHRoZSBleGNlcHRpb24gdHlwZSBpbiAqZXhjKi4gIElmCisgICAqZXhjKiBpcyBhIGNsYXNzIG9iamVjdCwgdGhpcyBhbHNvIHJldHVybnMgdHJ1ZSB3aGVuICpnaXZlbiogaXMgYW4gaW5zdGFuY2UKKyAgIG9mIGEgc3ViY2xhc3MuICBJZiAqZXhjKiBpcyBhIHR1cGxlLCBhbGwgZXhjZXB0aW9uIHR5cGVzIGluIHRoZSB0dXBsZSAoYW5kCisgICByZWN1cnNpdmVseSBpbiBzdWJ0dXBsZXMpIGFyZSBzZWFyY2hlZCBmb3IgYSBtYXRjaC4KKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9GZXRjaChQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQorCisgICBSZXRyaWV2ZSB0aGUgZXJyb3IgaW5kaWNhdG9yIGludG8gdGhyZWUgdmFyaWFibGVzIHdob3NlIGFkZHJlc3NlcyBhcmUgcGFzc2VkLgorICAgSWYgdGhlIGVycm9yIGluZGljYXRvciBpcyBub3Qgc2V0LCBzZXQgYWxsIHRocmVlIHZhcmlhYmxlcyB0byAqTlVMTCouICBJZiBpdCBpcworICAgc2V0LCBpdCB3aWxsIGJlIGNsZWFyZWQgYW5kIHlvdSBvd24gYSByZWZlcmVuY2UgdG8gZWFjaCBvYmplY3QgcmV0cmlldmVkLiAgVGhlCisgICB2YWx1ZSBhbmQgdHJhY2ViYWNrIG9iamVjdCBtYXkgYmUgKk5VTEwqIGV2ZW4gd2hlbiB0aGUgdHlwZSBvYmplY3QgaXMgbm90LgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBvbmx5IHVzZWQgYnkgY29kZSB0aGF0IG5lZWRzIHRvIGNhdGNoIGV4Y2VwdGlvbnMgb3IKKyAgICAgIGJ5IGNvZGUgdGhhdCBuZWVkcyB0byBzYXZlIGFuZCByZXN0b3JlIHRoZSBlcnJvciBpbmRpY2F0b3IgdGVtcG9yYXJpbHksIGUuZy46OgorCisgICAgICAgICB7CisgICAgICAgICAgICBQeU9iamVjdCAqKnR5cGUsICoqdmFsdWUsICoqdHJhY2ViYWNrOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJnR5cGUsICZ2YWx1ZSwgJnRyYWNlYmFjayk7CisKKyAgICAgICAgICAgIC8qIC4uLiBjb2RlIHRoYXQgbWlnaHQgcHJvZHVjZSBvdGhlciBlcnJvcnMgLi4uICovCisKKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUodHlwZSwgdmFsdWUsIHRyYWNlYmFjayk7CisgICAgICAgICB9CisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKQorCisgICBTZXQgIHRoZSBlcnJvciBpbmRpY2F0b3IgZnJvbSB0aGUgdGhyZWUgb2JqZWN0cy4gIElmIHRoZSBlcnJvciBpbmRpY2F0b3IgaXMKKyAgIGFscmVhZHkgc2V0LCBpdCBpcyBjbGVhcmVkIGZpcnN0LiAgSWYgdGhlIG9iamVjdHMgYXJlICpOVUxMKiwgdGhlIGVycm9yCisgICBpbmRpY2F0b3IgaXMgY2xlYXJlZC4gIERvIG5vdCBwYXNzIGEgKk5VTEwqIHR5cGUgYW5kIG5vbi0qTlVMTCogdmFsdWUgb3IKKyAgIHRyYWNlYmFjay4gIFRoZSBleGNlcHRpb24gdHlwZSBzaG91bGQgYmUgYSBjbGFzcy4gIERvIG5vdCBwYXNzIGFuIGludmFsaWQKKyAgIGV4Y2VwdGlvbiB0eXBlIG9yIHZhbHVlLiAoVmlvbGF0aW5nIHRoZXNlIHJ1bGVzIHdpbGwgY2F1c2Ugc3VidGxlIHByb2JsZW1zCisgICBsYXRlci4pICBUaGlzIGNhbGwgdGFrZXMgYXdheSBhIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdDogeW91IG11c3Qgb3duIGEKKyAgIHJlZmVyZW5jZSB0byBlYWNoIG9iamVjdCBiZWZvcmUgdGhlIGNhbGwgYW5kIGFmdGVyIHRoZSBjYWxsIHlvdSBubyBsb25nZXIgb3duCisgICB0aGVzZSByZWZlcmVuY2VzLiAgKElmIHlvdSBkb24ndCB1bmRlcnN0YW5kIHRoaXMsIGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uLiAgSQorICAgd2FybmVkIHlvdS4pCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vcm1hbGx5IG9ubHkgdXNlZCBieSBjb2RlIHRoYXQgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKKyAgICAgIGVycm9yIGluZGljYXRvciB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9GZXRjaGAgdG8gc2F2ZSB0aGUgY3VycmVudAorICAgICAgZXJyb3IgaW5kaWNhdG9yLgorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbihQeU9iamVjdCoqZXhjLCBQeU9iamVjdCoqdmFsLCBQeU9iamVjdCoqdGIpCisKKyAgIFVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcywgdGhlIHZhbHVlcyByZXR1cm5lZCBieSA6YzpmdW5jOmBQeUVycl9GZXRjaGAgYmVsb3cKKyAgIGNhbiBiZSAidW5ub3JtYWxpemVkIiwgbWVhbmluZyB0aGF0IGBgKmV4Y2BgIGlzIGEgY2xhc3Mgb2JqZWN0IGJ1dCBgYCp2YWxgYCBpcworICAgbm90IGFuIGluc3RhbmNlIG9mIHRoZSAgc2FtZSBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW5zdGFudGlhdGUKKyAgIHRoZSBjbGFzcyBpbiB0aGF0IGNhc2UuICBJZiB0aGUgdmFsdWVzIGFyZSBhbHJlYWR5IG5vcm1hbGl6ZWQsIG5vdGhpbmcgaGFwcGVucy4KKyAgIFRoZSBkZWxheWVkIG5vcm1hbGl6YXRpb24gaXMgaW1wbGVtZW50ZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gKmRvZXMgbm90KiBpbXBsaWNpdGx5IHNldCB0aGUgYGBfX3RyYWNlYmFja19fYGAKKyAgICAgIGF0dHJpYnV0ZSBvbiB0aGUgZXhjZXB0aW9uIHZhbHVlLiBJZiBzZXR0aW5nIHRoZSB0cmFjZWJhY2sKKyAgICAgIGFwcHJvcHJpYXRlbHkgaXMgZGVzaXJlZCwgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHNuaXBwZXQgaXMgbmVlZGVkOjoKKworICAgICAgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICAgfQorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX0dldEV4Y0luZm8oUHlPYmplY3QgKipwdHlwZSwgUHlPYmplY3QgKipwdmFsdWUsIFB5T2JqZWN0ICoqcHRyYWNlYmFjaykKKworICAgUmV0cmlldmUgdGhlIGV4Y2VwdGlvbiBpbmZvLCBhcyBrbm93biBmcm9tIGBgc3lzLmV4Y19pbmZvKClgYC4gIFRoaXMgcmVmZXJzCisgICB0byBhbiBleGNlcHRpb24gdGhhdCB3YXMgKmFscmVhZHkgY2F1Z2h0Kiwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBSZXR1cm5zIG5ldyByZWZlcmVuY2VzIGZvciB0aGUgdGhyZWUgb2JqZWN0cywgYW55IG9mIHdoaWNoCisgICBtYXkgYmUgKk5VTEwqLiAgRG9lcyBub3QgbW9kaWZ5IHRoZSBleGNlcHRpb24gaW5mbyBzdGF0ZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9TZXRFeGNJbmZvYCB0byByZXN0b3JlIG9yIGNsZWFyIHRoZQorICAgICAgZXhjZXB0aW9uIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCisKKyAgIFNldCB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyAqYWxyZWFkeSBjYXVnaHQqLCBub3QgdG8gYW4gZXhjZXB0aW9uIHRoYXQgd2FzCisgICBmcmVzaGx5IHJhaXNlZC4gIFRoaXMgZnVuY3Rpb24gc3RlYWxzIHRoZSByZWZlcmVuY2VzIG9mIHRoZSBhcmd1bWVudHMuCisgICBUbyBjbGVhciB0aGUgZXhjZXB0aW9uIHN0YXRlLCBwYXNzICpOVUxMKiBmb3IgYWxsIHRocmVlIGFyZ3VtZW50cy4KKyAgIEZvciBnZW5lcmFsIHJ1bGVzIGFib3V0IHRoZSB0aHJlZSBhcmd1bWVudHMsIHNlZSA6YzpmdW5jOmBQeUVycl9SZXN0b3JlYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9HZXRFeGNJbmZvYCB0byByZWFkIHRoZSBleGNlcHRpb24KKyAgICAgIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitTaWduYWwgSGFuZGxpbmcKKz09PT09PT09PT09PT09PQorCisKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfQ2hlY2tTaWduYWxzKCkKIAogICAgLi4gaW5kZXg6OgpAQCAtNDQzLDEzICs1MDAsMjEgQEAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVNpZ25hbF9TZXRXYWtldXBGZChpbnQgZmQpCiAKLSAgIFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBzcGVjaWZpZXMgYSBmaWxlIGRlc2NyaXB0b3IgdG8gd2hpY2ggYSBgYCdcMCdgYCBieXRlIHdpbGwKLSAgIGJlIHdyaXR0ZW4gd2hlbmV2ZXIgYSBzaWduYWwgaXMgcmVjZWl2ZWQuICBJdCByZXR1cm5zIHRoZSBwcmV2aW91cyBzdWNoIGZpbGUKLSAgIGRlc2NyaXB0b3IuICBUaGUgdmFsdWUgYGAtMWBgIGRpc2FibGVzIHRoZSBmZWF0dXJlOyB0aGlzIGlzIHRoZSBpbml0aWFsIHN0YXRlLgorICAgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIHNwZWNpZmllcyBhIGZpbGUgZGVzY3JpcHRvciB0byB3aGljaCB0aGUgc2lnbmFsIG51bWJlcgorICAgaXMgd3JpdHRlbiBhcyBhIHNpbmdsZSBieXRlIHdoZW5ldmVyIGEgc2lnbmFsIGlzIHJlY2VpdmVkLiAqZmQqIG11c3QgYmUKKyAgIG5vbi1ibG9ja2luZy4gSXQgcmV0dXJucyB0aGUgcHJldmlvdXMgc3VjaCBmaWxlIGRlc2NyaXB0b3IuCisKKyAgIFRoZSB2YWx1ZSBgYC0xYGAgZGlzYWJsZXMgdGhlIGZlYXR1cmU7IHRoaXMgaXMgdGhlIGluaXRpYWwgc3RhdGUuCiAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gOmZ1bmM6YHNpZ25hbC5zZXRfd2FrZXVwX2ZkYCBpbiBQeXRob24sIGJ1dCB3aXRob3V0IGFueQogICAgZXJyb3IgY2hlY2tpbmcuICAqZmQqIHNob3VsZCBiZSBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci4gIFRoZSBmdW5jdGlvbiBzaG91bGQKICAgIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgT24gV2luZG93cywgdGhlIGZ1bmN0aW9uIG5vdyBhbHNvIHN1cHBvcnRzIHNvY2tldCBoYW5kbGVzLgorCisKK0V4Y2VwdGlvbiBDbGFzc2VzCis9PT09PT09PT09PT09PT09PQogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX05ld0V4Y2VwdGlvbihjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqYmFzZSwgUHlPYmplY3QgKmRpY3QpCiAKQEAgLTQ3NSwxOCArNTQwLDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShQeU9iamVjdCAqb2JqKQotCi0gICBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gcHJpbnRzIGEgd2FybmluZyBtZXNzYWdlIHRvIGBgc3lzLnN0ZGVycmBgIHdoZW4gYW4KLSAgIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQgYnV0IGl0IGlzIGltcG9zc2libGUgZm9yIHRoZSBpbnRlcnByZXRlciB0byBhY3R1YWxseQotICAgcmFpc2UgdGhlIGV4Y2VwdGlvbi4gIEl0IGlzIHVzZWQsIGZvciBleGFtcGxlLCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW4KLSAgIDptZXRoOmBfX2RlbF9fYCBtZXRob2QuCi0KLSAgIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAqb2JqKiB0aGF0IGlkZW50aWZpZXMgdGhlIGNvbnRleHQKLSAgIGluIHdoaWNoIHRoZSB1bnJhaXNhYmxlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gVGhlIHJlcHIgb2YgKm9iaiogd2lsbCBiZSBwcmludGVkIGluCi0gICB0aGUgd2FybmluZyBtZXNzYWdlLgotCi0KIEV4Y2VwdGlvbiBPYmplY3RzCiA9PT09PT09PT09PT09PT09PQogCkBAIC02MzAsMTIgKzY4MywxMiBAQAogICAgc2V0cyBhIDpleGM6YE1lbW9yeUVycm9yYCBhbmQgcmV0dXJucyBhIG5vbnplcm8gdmFsdWUuCiAKICAgIFRoZSBmdW5jdGlvbiB0aGVuIGNoZWNrcyBpZiB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIHJlYWNoZWQuICBJZiB0aGlzIGlzIHRoZQotICAgY2FzZSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHNldCBhbmQgYSBub256ZXJvIHZhbHVlIGlzIHJldHVybmVkLgorICAgY2FzZSwgYSA6ZXhjOmBSZWN1cnNpb25FcnJvcmAgaXMgc2V0IGFuZCBhIG5vbnplcm8gdmFsdWUgaXMgcmV0dXJuZWQuCiAgICBPdGhlcndpc2UsIHplcm8gaXMgcmV0dXJuZWQuCiAKICAgICp3aGVyZSogc2hvdWxkIGJlIGEgc3RyaW5nIHN1Y2ggYXMgYGAiIGluIGluc3RhbmNlIGNoZWNrImBgIHRvIGJlCi0gICBjb25jYXRlbmF0ZWQgdG8gdGhlIDpleGM6YFJ1bnRpbWVFcnJvcmAgbWVzc2FnZSBjYXVzZWQgYnkgdGhlIHJlY3Vyc2lvbiBkZXB0aAotICAgbGltaXQuCisgICBjb25jYXRlbmF0ZWQgdG8gdGhlIDpleGM6YFJlY3Vyc2lvbkVycm9yYCBtZXNzYWdlIGNhdXNlZCBieSB0aGUgcmVjdXJzaW9uCisgICBkZXB0aCBsaW1pdC4KIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCkKIApAQCAtNzQ3LDYgKzgwMCw4IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAgICAgICB8IDpleGM6YFByb2Nlc3NMb29rdXBFcnJvcmAgICAgICAgfCAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1JlY3Vyc2lvbkVycm9yYCAgICAgICAgICB8IDpleGM6YFJlY3Vyc2lvbkVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgICAgICB8IDpleGM6YFJlZmVyZW5jZUVycm9yYCAgICAgICAgICAgfCBcKDIpICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFJ1bnRpbWVFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CkBAIC03NzYsNiArODMxLDkgQEAKICAgIDpjOmRhdGE6YFB5RXhjX1Blcm1pc3Npb25FcnJvcmAsIDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAKICAgIGFuZCA6YzpkYXRhOmBQeUV4Y19UaW1lb3V0RXJyb3JgIHdlcmUgaW50cm9kdWNlZCBmb2xsb3dpbmcgOnBlcDpgMzE1MWAuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgOmM6ZGF0YTpgUHlFeGNfUmVjdXJzaW9uRXJyb3JgLgorCiAKIFRoZXNlIGFyZSBjb21wYXRpYmlsaXR5IGFsaWFzZXMgdG8gOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmA6CiAKQEAgLTgyNCw2ICs4ODIsNyBAQAogICAgc2luZ2xlOiBQeUV4Y19PdmVyZmxvd0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX1Blcm1pc3Npb25FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfUmVjdXJzaW9uRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUmVmZXJlbmNlRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfUnVudGltZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5bnRheEVycm9yCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZ2VuLnJzdCBiL0RvYy9jLWFwaS9nZW4ucnN0CmluZGV4IDMzY2QyN2EuLjNhYjA3M2IgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9nZW4ucnN0CisrKyBiL0RvYy9jLWFwaS9nZW4ucnN0CkBAIC03LDcgKzcsNyBAQAogCiBHZW5lcmF0b3Igb2JqZWN0cyBhcmUgd2hhdCBQeXRob24gdXNlcyB0byBpbXBsZW1lbnQgZ2VuZXJhdG9yIGl0ZXJhdG9ycy4gVGhleQogYXJlIG5vcm1hbGx5IGNyZWF0ZWQgYnkgaXRlcmF0aW5nIG92ZXIgYSBmdW5jdGlvbiB0aGF0IHlpZWxkcyB2YWx1ZXMsIHJhdGhlcgotdGhhbiBleHBsaWNpdGx5IGNhbGxpbmcgOmM6ZnVuYzpgUHlHZW5fTmV3YC4KK3RoYW4gZXhwbGljaXRseSBjYWxsaW5nIDpjOmZ1bmM6YFB5R2VuX05ld2Agb3IgOmM6ZnVuYzpgUHlHZW5fTmV3V2l0aFF1YWxOYW1lYC4KIAogCiAuLiBjOnR5cGU6OiBQeUdlbk9iamVjdApAQCAtMjAsMTkgKzIwLDI1IEBACiAgICBUaGUgdHlwZSBvYmplY3QgY29ycmVzcG9uZGluZyB0byBnZW5lcmF0b3Igb2JqZWN0cwogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2sob2IpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5R2VuX0NoZWNrKFB5T2JqZWN0ICpvYikKIAogICAgUmV0dXJuIHRydWUgaWYgKm9iKiBpcyBhIGdlbmVyYXRvciBvYmplY3Q7ICpvYiogbXVzdCBub3QgYmUgKk5VTEwqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2tFeGFjdChvYikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlHZW5fQ2hlY2tFeGFjdChQeU9iamVjdCAqb2IpCiAKLSAgIFJldHVybiB0cnVlIGlmICpvYioncyB0eXBlIGlzICpQeUdlbl9UeXBlKiBpcyBhIGdlbmVyYXRvciBvYmplY3Q7ICpvYiogbXVzdCBub3QKLSAgIGJlICpOVUxMKi4KKyAgIFJldHVybiB0cnVlIGlmICpvYioncyB0eXBlIGlzICpQeUdlbl9UeXBlKjsgKm9iKiBtdXN0IG5vdCBiZSAqTlVMTCouCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUdlbl9OZXcoUHlGcmFtZU9iamVjdCAqZnJhbWUpCiAKLSAgIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGdlbmVyYXRvciBvYmplY3QgYmFzZWQgb24gdGhlICpmcmFtZSogb2JqZWN0LiBBCi0gICByZWZlcmVuY2UgdG8gKmZyYW1lKiBpcyBzdG9sZW4gYnkgdGhpcyBmdW5jdGlvbi4gVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZQorICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgZ2VuZXJhdG9yIG9iamVjdCBiYXNlZCBvbiB0aGUgKmZyYW1lKiBvYmplY3QuCisgICBBIHJlZmVyZW5jZSB0byAqZnJhbWUqIGlzIHN0b2xlbiBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgYXJndW1lbnQgbXVzdCBub3QgYmUKICAgICpOVUxMKi4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoUHlGcmFtZU9iamVjdCAqZnJhbWUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCisKKyAgIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGdlbmVyYXRvciBvYmplY3QgYmFzZWQgb24gdGhlICpmcmFtZSogb2JqZWN0LAorICAgd2l0aCBgYF9fbmFtZV9fYGAgYW5kIGBgX19xdWFsbmFtZV9fYGAgc2V0IHRvICpuYW1lKiBhbmQgKnF1YWxuYW1lKi4KKyAgIEEgcmVmZXJlbmNlIHRvICpmcmFtZSogaXMgc3RvbGVuIGJ5IHRoaXMgZnVuY3Rpb24uICBUaGUgKmZyYW1lKiBhcmd1bWVudAorICAgbXVzdCBub3QgYmUgKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2ltcG9ydC5yc3QgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdAppbmRleCA2MDg2NWY0Li5iZjFiNDk1IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdApAQCAtMTgzLDkgKzE4Myw5IEBACiAKIC4uIGM6ZnVuY3Rpb246OiBsb25nIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKCkKIAotICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIFB5dGhvbiBieXRlY29kZSBmaWxlcyAoYS5rLmEuIDpmaWxlOmAucHljYCBhbmQKLSAgIDpmaWxlOmAucHlvYCBmaWxlcykuICBUaGUgbWFnaWMgbnVtYmVyIHNob3VsZCBiZSBwcmVzZW50IGluIHRoZSBmaXJzdCBmb3VyIGJ5dGVzCi0gICBvZiB0aGUgYnl0ZWNvZGUgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLiBSZXR1cm5zIC0xIG9uIGVycm9yLgorICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIFB5dGhvbiBieXRlY29kZSBmaWxlcyAoYS5rLmEuIDpmaWxlOmAucHljYCBmaWxlKS4KKyAgIFRoZSBtYWdpYyBudW1iZXIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIGZpcnN0IGZvdXIgYnl0ZXMgb2YgdGhlIGJ5dGVjb2RlCisgICBmaWxlLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIuIFJldHVybnMgLTEgb24gZXJyb3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZXR1cm4gdmFsdWUgb2YgLTEgdXBvbiBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2luaXQucnN0IGIvRG9jL2MtYXBpL2luaXQucnN0CmluZGV4IDRiYjUwNjQuLjgxODIzYmYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbml0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKQEAgLTEzNCw2ICsxMzQsOSBAQAogICAgY2hhbmdlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHByb2dyYW0ncyBleGVjdXRpb24uICBObyBjb2RlIGluIHRoZSBQeXRob24KICAgIGludGVycHJldGVyIHdpbGwgY2hhbmdlIHRoZSBjb250ZW50cyBvZiB0aGlzIHN0b3JhZ2UuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAKIC4uIGM6ZnVuY3Rpb246OiB3Y2hhciogUHlfR2V0UHJvZ3JhbU5hbWUoKQogCkBAIC0yNDUsNiArMjQ4LDkgQEAKICAgIDpkYXRhOmBzeXMuZXhlY19wcmVmaXhgIHRvIGJlIGVtcHR5LiAgSXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBtb2RpZnkgdGhlc2UKICAgIGlmIHJlcXVpcmVkIGFmdGVyIGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAgICBUaGUgcGF0aCBhcmd1bWVudCBpcyBjb3BpZWQgaW50ZXJuYWxseSwgc28gdGhlIGNhbGxlciBtYXkgZnJlZSBpdCBhZnRlciB0aGUKICAgIGNhbGwgY29tcGxldGVzLgogCkBAIC0zNDQsNiArMzUwLDkgQEAKICAgICAgOmRhdGE6YHN5cy5wYXRoYCwgd2hpY2ggaXMgdGhlIHNhbWUgYXMgcHJlcGVuZGluZyB0aGUgY3VycmVudCB3b3JraW5nCiAgICAgIGRpcmVjdG9yeSAoYGAiLiJgYCkuCiAKKyAgIFVzZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIHRvIGRlY29kZSBhIGJ5dGVzIHN0cmluZyB0byBnZXQgYQorICAgOmM6dHlwZTpgd2NoYXJfKmAgc3RyaW5nLgorCiAgICAuLiBub3RlOjoKICAgICAgIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYXBwbGljYXRpb25zIGVtYmVkZGluZyB0aGUgUHl0aG9uIGludGVycHJldGVyCiAgICAgICBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiBleGVjdXRpbmcgYSBzaW5nbGUgc2NyaXB0IHBhc3MgMCBhcyAqdXBkYXRlcGF0aCosCkBAIC0zNjgsNiArMzc3LDkgQEAKICAgIHRvIDEgdW5sZXNzIHRoZSA6cHJvZ3JhbTpgcHl0aG9uYCBpbnRlcnByZXRlciB3YXMgc3RhcnRlZCB3aXRoIHRoZQogICAgOm9wdGlvbjpgLUlgLgogCisgICBVc2UgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCB0byBkZWNvZGUgYSBieXRlcyBzdHJpbmcgdG8gZ2V0IGEKKyAgIDpjOnR5cGU6YHdjaGFyXypgIHN0cmluZy4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgVGhlICp1cGRhdGVwYXRoKiB2YWx1ZSBkZXBlbmRzIG9uIDpvcHRpb246YC1JYC4KIAogCkBAIC0zODIsNiArMzk0LDkgQEAKICAgIGV4ZWN1dGlvbi4gIE5vIGNvZGUgaW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciB3aWxsIGNoYW5nZSB0aGUgY29udGVudHMgb2YKICAgIHRoaXMgc3RvcmFnZS4KIAorICAgVXNlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgdG8gZGVjb2RlIGEgYnl0ZXMgc3RyaW5nIHRvIGdldCBhCisgICA6Yzp0eXBlOmB3Y2hhcl8qYCBzdHJpbmcuCisKIAogLi4gYzpmdW5jdGlvbjo6IHdfY2hhciogUHlfR2V0UHl0aG9uSG9tZSgpCiAKQEAgLTg1OCw2ICs4NzMsOCBAQAogICAgICAgaW5zdGVhZC4KIAogCisuLiBfc3ViLWludGVycHJldGVyLXN1cHBvcnQ6CisKIFN1Yi1pbnRlcnByZXRlciBzdXBwb3J0CiA9PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CmluZGV4IDc5MDg2MjIuLjczMzkwMDYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnkucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CkBAIC05Miw4ICs5Miw4IEBACiBuZWVkIHRvIGJlIGhlbGQuCiAKIFRoZSBkZWZhdWx0IHJhdyBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwgYGBtYWxsb2MoMSlgYCB3aGVuCi1yZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCis6YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKK2BgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMTA2LDYgKzEwNiwxNyBAQAogICAgYmVlbiBpbml0aWFsaXplZCBpbiBhbnkgd2F5LgogCiAKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQorCisgICBBbGxvY2F0ZXMgKm5lbGVtKiBlbGVtZW50cyBlYWNoIHdob3NlIHNpemUgaW4gYnl0ZXMgaXMgKmVsc2l6ZSogYW5kIHJldHVybnMKKyAgIGEgcG9pbnRlciBvZiB0eXBlIDpjOnR5cGU6YHZvaWRcKmAgdG8gdGhlIGFsbG9jYXRlZCBtZW1vcnksIG9yICpOVUxMKiBpZiB0aGUKKyAgIHJlcXVlc3QgZmFpbHMuIFRoZSBtZW1vcnkgaXMgaW5pdGlhbGl6ZWQgdG8gemVyb3MuIFJlcXVlc3RpbmcgemVybyBlbGVtZW50cworICAgb3IgZWxlbWVudHMgb2Ygc2l6ZSB6ZXJvIGJ5dGVzIHJldHVybnMgYSBkaXN0aW5jdCBub24tKk5VTEwqIHBvaW50ZXIgaWYKKyAgIHBvc3NpYmxlLCBhcyBpZiBgYFB5TWVtX1Jhd0NhbGxvYygxLCAxKWBgIGhhZCBiZWVuIGNhbGxlZCBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwLCBzaXplX3QgbikKIAogICAgUmVzaXplcyB0aGUgbWVtb3J5IGJsb2NrIHBvaW50ZWQgdG8gYnkgKnAqIHRvICpuKiBieXRlcy4gVGhlIGNvbnRlbnRzIHdpbGwKQEAgLTEzNiw4ICsxNDcsOCBAQAogbWVtb3J5IGZyb20gdGhlIFB5dGhvbiBoZWFwLgogCiBUaGUgZGVmYXVsdCBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6Ci06YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwgYGBtYWxsb2MoMSlgYCB3aGVuCi1yZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCis6YzpmdW5jOmBtYWxsb2NgLCA6YzpmdW5jOmBjYWxsb2NgLCA6YzpmdW5jOmByZWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWA7IGNhbGwKK2BgbWFsbG9jKDEpYGAgKG9yIGBgY2FsbG9jKDEsIDEpYGApIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtMTUyLDYgKzE2MywxNyBAQAogICAgYmVlbiBjYWxsZWQgaW5zdGVhZC4gVGhlIG1lbW9yeSB3aWxsIG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgaW4gYW55IHdheS4KIAogCisuLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKKworICAgQWxsb2NhdGVzICpuZWxlbSogZWxlbWVudHMgZWFjaCB3aG9zZSBzaXplIGluIGJ5dGVzIGlzICplbHNpemUqIGFuZCByZXR1cm5zCisgICBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZSBhbGxvY2F0ZWQgbWVtb3J5LCBvciAqTlVMTCogaWYgdGhlCisgICByZXF1ZXN0IGZhaWxzLiBUaGUgbWVtb3J5IGlzIGluaXRpYWxpemVkIHRvIHplcm9zLiBSZXF1ZXN0aW5nIHplcm8gZWxlbWVudHMKKyAgIG9yIGVsZW1lbnRzIG9mIHNpemUgemVybyBieXRlcyByZXR1cm5zIGEgZGlzdGluY3Qgbm9uLSpOVUxMKiBwb2ludGVyIGlmCisgICBwb3NzaWJsZSwgYXMgaWYgYGBQeU1lbV9DYWxsb2MoMSwgMSlgYCBoYWQgYmVlbiBjYWxsZWQgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG4pCiAKICAgIFJlc2l6ZXMgdGhlIG1lbW9yeSBibG9jayBwb2ludGVkIHRvIGJ5ICpwKiB0byAqbiogYnl0ZXMuIFRoZSBjb250ZW50cyB3aWxsIGJlCkBAIC0yMTAsNyArMjMyLDcgQEAKIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLS4uIGM6dHlwZTo6IFB5TWVtQWxsb2NhdG9yCisuLiBjOnR5cGU6OiBQeU1lbUFsbG9jYXRvckV4CiAKICAgIFN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRvci4gVGhlIHN0cnVjdHVyZSBoYXMKICAgIGZvdXIgZmllbGRzOgpAQCAtMjIyLDExICsyNDQsMTkgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkKiBtYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSlgYCAgICAgICAgICAgICAgICAgfCBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGB2b2lkKiBjYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpYGAgfCBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayBpbml0aWFsaXplZCAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHplcm9zICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkKiByZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpYGAgfCBhbGxvY2F0ZSBvciByZXNpemUgYSBtZW1vcnkgYmxvY2sgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGB2b2lkIGZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpYGAgICAgICAgICAgICAgICAgICAgICAgfCBmcmVlIGEgbWVtb3J5IGJsb2NrICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvcmAgc3RydWN0dXJlIHdhcyByZW5hbWVkIHRvCisgICAgICA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvckV4YCBhbmQgYSBuZXcgYGBjYWxsb2NgYCBmaWVsZCB3YXMgYWRkZWQuCisKKwogLi4gYzp0eXBlOjogUHlNZW1BbGxvY2F0b3JEb21haW4KIAogICAgRW51bSB1c2VkIHRvIGlkZW50aWZ5IGFuIGFsbG9jYXRvciBkb21haW4uIERvbWFpbnM6CkBAIC0yMzksMTIgKzI2OSwxMiBAQAogICAgICA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCBhbmQgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvciAqYWxsb2NhdG9yKQorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCiAgICBHZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fU2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jYXRvcikKIAogICAgU2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKaW5kZXggNWU1MDk3Ny4uOWY2YmZkNyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdApAQCAtMzUsNyArMzUsNyBAQAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzKFB5T2JqZWN0ICpvYmosIGludCBidWZmZXJ0eXBlLCBjaGFyIG9yZGVyKQogCi0gICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCB0byBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5IChpbiBlaXRoZXIKKyAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHRvIGEgOnRlcm06YGNvbnRpZ3VvdXNgIGNodW5rIG9mIG1lbW9yeSAoaW4gZWl0aGVyCiAgICAnQycgb3IgJ0Ynb3J0cmFuICpvcmRlciopIGZyb20gYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgYnVmZmVyCiAgICBpbnRlcmZhY2UuIElmIG1lbW9yeSBpcyBjb250aWd1b3VzLCB0aGUgbWVtb3J5dmlldyBvYmplY3QgcG9pbnRzIHRvIHRoZQogICAgb3JpZ2luYWwgbWVtb3J5LiBPdGhlcndpc2UsIGEgY29weSBpcyBtYWRlIGFuZCB0aGUgbWVtb3J5dmlldyBwb2ludHMgdG8gYQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21vZHVsZS5yc3QgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdAppbmRleCA5ODVhMzQ3Li5lZjc3OGNjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdAorKysgYi9Eb2MvYy1hcGkvbW9kdWxlLnJzdApAQCAtNyw4ICs3LDYgQEAKIAogLi4gaW5kZXg6OiBvYmplY3Q6IG1vZHVsZQogCi1UaGVyZSBhcmUgb25seSBhIGZldyBmdW5jdGlvbnMgc3BlY2lhbCB0byBtb2R1bGUgb2JqZWN0cy4KLQogCiAuLiBjOnZhcjo6IFB5VHlwZU9iamVjdCBQeU1vZHVsZV9UeXBlCiAKQEAgLTg0LDYgKzgyLDE4IEBACiAgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldE5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIG5hbWUgZW5jb2RlZCB0bwogICAgYGAndXRmLTgnYGAuCiAKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1vZHVsZV9HZXRTdGF0ZShQeU9iamVjdCAqbW9kdWxlKQorCisgICBSZXR1cm4gdGhlICJzdGF0ZSIgb2YgdGhlIG1vZHVsZSwgdGhhdCBpcywgYSBwb2ludGVyIHRvIHRoZSBibG9jayBvZiBtZW1vcnkKKyAgIGFsbG9jYXRlZCBhdCBtb2R1bGUgY3JlYXRpb24gdGltZSwgb3IgKk5VTEwqLiAgU2VlCisgICA6YzptZW1iZXI6YFB5TW9kdWxlRGVmLm1fc2l6ZWAuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5TW9kdWxlRGVmKiBQeU1vZHVsZV9HZXREZWYoUHlPYmplY3QgKm1vZHVsZSkKKworICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgOmM6dHlwZTpgUHlNb2R1bGVEZWZgIHN0cnVjdCBmcm9tIHdoaWNoIHRoZSBtb2R1bGUgd2FzCisgICBjcmVhdGVkLCBvciAqTlVMTCogaWYgdGhlIG1vZHVsZSB3YXNuJ3QgY3JlYXRlZCBmcm9tIGEgZGVmaW5pdGlvbi4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUpCiAKQEAgLTEwOSw3MCArMTE5LDI1IEBACiAgICAgICB1bmVuY29kYWJsZSBmaWxlbmFtZXMsIHVzZSA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgaW5zdGVhZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCogUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QgKm1vZHVsZSkKLQotICAgUmV0dXJuIHRoZSAic3RhdGUiIG9mIHRoZSBtb2R1bGUsIHRoYXQgaXMsIGEgcG9pbnRlciB0byB0aGUgYmxvY2sgb2YgbWVtb3J5Ci0gICBhbGxvY2F0ZWQgYXQgbW9kdWxlIGNyZWF0aW9uIHRpbWUsIG9yICpOVUxMKi4gIFNlZQotICAgOmM6bWVtYmVyOmBQeU1vZHVsZURlZi5tX3NpemVgLgotCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU1vZHVsZURlZiogUHlNb2R1bGVfR2V0RGVmKFB5T2JqZWN0ICptb2R1bGUpCi0KLSAgIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIDpjOnR5cGU6YFB5TW9kdWxlRGVmYCBzdHJ1Y3QgZnJvbSB3aGljaCB0aGUgbW9kdWxlIHdhcwotICAgY3JlYXRlZCwgb3IgKk5VTEwqIGlmIHRoZSBtb2R1bGUgd2Fzbid0IGNyZWF0ZWQgd2l0aAotICAgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYC4KLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVN0YXRlX0ZpbmRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKLQotICAgUmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gKmRlZiogZm9yIHRoZSBjdXJyZW50IGludGVycHJldGVyLgotICAgVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIG9iamVjdCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgd2l0aAotICAgOmM6ZnVuYzpgUHlTdGF0ZV9BZGRNb2R1bGVgIGJlZm9yZWhhbmQuIEluIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdCBpcyBub3QKLSAgIGZvdW5kIG9yIGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgeWV0LCBpdCByZXR1cm5zIE5VTEwuCi0KLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QgKm1vZHVsZSwgUHlNb2R1bGVEZWYgKmRlZikKLQotICAgQXR0YWNoZXMgdGhlIG1vZHVsZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuIFRoaXMgYWxsb3dzCi0gICB0aGUgbW9kdWxlIG9iamVjdCB0byBiZSBhY2Nlc3NpYmxlIHZpYQotICAgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKLQotICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworLi4gX2luaXRpYWxpemluZy1tb2R1bGVzOgogCiBJbml0aWFsaXppbmcgQyBtb2R1bGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZXNlIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSB1c2VkIGluIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uCitNb2R1bGVzIG9iamVjdHMgYXJlIHVzdWFsbHkgY3JlYXRlZCBmcm9tIGV4dGVuc2lvbiBtb2R1bGVzIChzaGFyZWQgbGlicmFyaWVzCit3aGljaCBleHBvcnQgYW4gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24pLCBvciBjb21waWxlZC1pbiBtb2R1bGVzCisod2hlcmUgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGlzIGFkZGVkIHVzaW5nIDpjOmZ1bmM6YFB5SW1wb3J0X0FwcGVuZEluaXR0YWJgKS4KK1NlZSA6cmVmOmBidWlsZGluZ2Agb3IgOnJlZjpgZXh0ZW5kaW5nLXdpdGgtZW1iZWRkaW5nYCBmb3IgZGV0YWlscy4KIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9DcmVhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLQotICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqLiAgVGhpcyBiZWhhdmVzCi0gICBsaWtlIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZTJgIHdpdGggKm1vZHVsZV9hcGlfdmVyc2lvbiogc2V0IHRvCi0gICA6Y29uc3Q6YFBZVEhPTl9BUElfVkVSU0lPTmAuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9DcmVhdGUyKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pCi0KLSAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgb2JqZWN0LCBnaXZlbiB0aGUgZGVmaW5pdGlvbiBpbiAqbW9kdWxlKiwgYXNzdW1pbmcgdGhlCi0gICBBUEkgdmVyc2lvbiAqbW9kdWxlX2FwaV92ZXJzaW9uKi4gIElmIHRoYXQgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbgotICAgb2YgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIsIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgIGlzIGVtaXR0ZWQuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBNb3N0IHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNpbmcgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYAotICAgICAgaW5zdGVhZDsgb25seSB1c2UgdGhpcyBpZiB5b3UgYXJlIHN1cmUgeW91IG5lZWQgaXQuCi0KK1RoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBjYW4gZWl0aGVyIHBhc3MgcGFzcyBhIG1vZHVsZSBkZWZpbml0aW9uIGluc3RhbmNlCit0byA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgbW9kdWxlIG9iamVjdCwKK29yIHJlcXVlc3QgIm11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIiBieSByZXR1cm5pbmcgdGhlIGRlZmluaXRpb24gc3RydWN0IGl0c2VsZi4KIAogLi4gYzp0eXBlOjogUHlNb2R1bGVEZWYKIAotICAgVGhpcyBzdHJ1Y3QgaG9sZHMgYWxsIGluZm9ybWF0aW9uIHRoYXQgaXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG1vZHVsZSBvYmplY3QuCi0gICBUaGVyZSBpcyB1c3VhbGx5IG9ubHkgb25lIHN0YXRpYyB2YXJpYWJsZSBvZiB0aGF0IHR5cGUgZm9yIGVhY2ggbW9kdWxlLCB3aGljaAotICAgaXMgc3RhdGljYWxseSBpbml0aWFsaXplZCBhbmQgdGhlbiBwYXNzZWQgdG8gOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlYCBpbiB0aGUKLSAgIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KKyAgIFRoZSBtb2R1bGUgZGVmaW5pdGlvbiBzdHJ1Y3QsIHdoaWNoIGhvbGRzIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlCisgICBhIG1vZHVsZSBvYmplY3QuIFRoZXJlIGlzIHVzdWFsbHkgb25seSBvbmUgc3RhdGljYWxseSBpbml0aWFsaXplZCB2YXJpYWJsZQorICAgb2YgdGhpcyB0eXBlIGZvciBlYWNoIG1vZHVsZS4KIAogICAgLi4gYzptZW1iZXI6OiBQeU1vZHVsZURlZl9CYXNlIG1fYmFzZQogCkBAIC0xODksMTkgKzE1NCwyMSBAQAogCiAgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgbV9zaXplCiAKLSAgICAgIFNvbWUgbW9kdWxlcyBhbGxvdyByZS1pbml0aWFsaXphdGlvbiAoY2FsbGluZyB0aGVpciBgYFB5SW5pdF8qYGAgZnVuY3Rpb24KLSAgICAgIG1vcmUgdGhhbiBvbmNlKS4gVGhlc2UgbW9kdWxlcyBzaG91bGQga2VlcCB0aGVpciBzdGF0ZSBpbiBhIHBlci1tb2R1bGUKLSAgICAgIG1lbW9yeSBhcmVhIHRoYXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIDpjOmZ1bmM6YFB5TW9kdWxlX0dldFN0YXRlYC4KKyAgICAgIE1vZHVsZSBzdGF0ZSBtYXkgYmUga2VwdCBpbiBhIHBlci1tb2R1bGUgbWVtb3J5IGFyZWEgdGhhdCBjYW4gYmUKKyAgICAgIHJldHJpZXZlZCB3aXRoIDpjOmZ1bmM6YFB5TW9kdWxlX0dldFN0YXRlYCwgcmF0aGVyIHRoYW4gaW4gc3RhdGljIGdsb2JhbHMuCisgICAgICBUaGlzIG1ha2VzIG1vZHVsZXMgc2FmZSBmb3IgdXNlIGluIG11bHRpcGxlIHN1Yi1pbnRlcnByZXRlcnMuCiAKLSAgICAgIFRoaXMgbWVtb3J5IHNob3VsZCBiZSB1c2VkLCByYXRoZXIgdGhhbiBzdGF0aWMgZ2xvYmFscywgdG8gaG9sZCBwZXItbW9kdWxlCi0gICAgICBzdGF0ZSwgc2luY2UgaXQgaXMgdGhlbiBzYWZlIGZvciB1c2UgaW4gbXVsdGlwbGUgc3ViLWludGVycHJldGVycy4gIEl0IGlzCi0gICAgICBmcmVlZCB3aGVuIHRoZSBtb2R1bGUgb2JqZWN0IGlzIGRlYWxsb2NhdGVkLCBhZnRlciB0aGUgOmM6bWVtYmVyOmBtX2ZyZWVgCi0gICAgICBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQsIGlmIHByZXNlbnQuCisgICAgICBUaGlzIG1lbW9yeSBhcmVhIGlzIGFsbG9jYXRlZCBiYXNlZCBvbiAqbV9zaXplKiBvbiBtb2R1bGUgY3JlYXRpb24sCisgICAgICBhbmQgZnJlZWQgd2hlbiB0aGUgbW9kdWxlIG9iamVjdCBpcyBkZWFsbG9jYXRlZCwgYWZ0ZXIgdGhlCisgICAgICA6YzptZW1iZXI6YG1fZnJlZWAgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLCBpZiBwcmVzZW50LgogCi0gICAgICBTZXR0aW5nIGBgbV9zaXplYGAgdG8gYGAtMWBgIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBjYW4gbm90IGJlCi0gICAgICByZS1pbml0aWFsaXplZCBiZWNhdXNlIGl0IGhhcyBnbG9iYWwgc3RhdGUuIFNldHRpbmcgaXQgdG8gYSBub24tbmVnYXRpdmUKLSAgICAgIHZhbHVlIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBjYW4gYmUgcmUtaW5pdGlhbGl6ZWQgYW5kIHNwZWNpZmllcyB0aGUKLSAgICAgIGFkZGl0aW9uYWwgYW1vdW50IG9mIG1lbW9yeSBpdCByZXF1aXJlcyBmb3IgaXRzIHN0YXRlLgorICAgICAgU2V0dGluZyBgYG1fc2l6ZWBgIHRvIGBgLTFgYCBtZWFucyB0aGF0IHRoZSBtb2R1bGUgZG9lcyBub3Qgc3VwcG9ydAorICAgICAgc3ViLWludGVycHJldGVycywgYmVjYXVzZSBpdCBoYXMgZ2xvYmFsIHN0YXRlLgorCisgICAgICBTZXR0aW5nIGl0IHRvIGEgbm9uLW5lZ2F0aXZlIHZhbHVlIG1lYW5zIHRoYXQgdGhlIG1vZHVsZSBjYW4gYmUKKyAgICAgIHJlLWluaXRpYWxpemVkIGFuZCBzcGVjaWZpZXMgdGhlIGFkZGl0aW9uYWwgYW1vdW50IG9mIG1lbW9yeSBpdCByZXF1aXJlcworICAgICAgZm9yIGl0cyBzdGF0ZS4gTm9uLW5lZ2F0aXZlIGBgbV9zaXplYGAgaXMgcmVxdWlyZWQgZm9yIG11bHRpLXBoYXNlCisgICAgICBpbml0aWFsaXphdGlvbi4KIAogICAgICAgU2VlIDpQRVA6YDMxMjFgIGZvciBtb3JlIGRldGFpbHMuCiAKQEAgLTIxMCw5ICsxNzcsMTggQEAKICAgICAgIEEgcG9pbnRlciB0byBhIHRhYmxlIG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMsIGRlc2NyaWJlZCBieQogICAgICAgOmM6dHlwZTpgUHlNZXRob2REZWZgIHZhbHVlcy4gIENhbiBiZSAqTlVMTCogaWYgbm8gZnVuY3Rpb25zIGFyZSBwcmVzZW50LgogCi0gICAuLiBjOm1lbWJlcjo6IGlucXVpcnkgbV9yZWxvYWQKKyAgIC4uIGM6bWVtYmVyOjogUHlNb2R1bGVEZWZfU2xvdCogbV9zbG90cwogCi0gICAgICBDdXJyZW50bHkgdW51c2VkLCBzaG91bGQgYmUgKk5VTEwqLgorICAgICAgQW4gYXJyYXkgb2Ygc2xvdCBkZWZpbml0aW9ucyBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sIHRlcm1pbmF0ZWQgYnkKKyAgICAgIGEgYGB7MCwgTlVMTH1gYCBlbnRyeS4KKyAgICAgIFdoZW4gdXNpbmcgc2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uLCAqbV9zbG90cyogbXVzdCBiZSAqTlVMTCouCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgICAgIFByaW9yIHRvIHZlcnNpb24gMy41LCB0aGlzIG1lbWJlciB3YXMgYWx3YXlzIHNldCB0byAqTlVMTCosCisgICAgICAgICBhbmQgd2FzIGRlZmluZWQgYXM6CisKKyAgICAgICAgICAgLi4gYzptZW1iZXI6OiBpbnF1aXJ5IG1fcmVsb2FkCiAKICAgIC4uIGM6bWVtYmVyOjogdHJhdmVyc2Vwcm9jIG1fdHJhdmVyc2UKIApAQCAtMjI5LDYgKzIwNSwyMDQgQEAKICAgICAgIEEgZnVuY3Rpb24gdG8gY2FsbCBkdXJpbmcgZGVhbGxvY2F0aW9uIG9mIHRoZSBtb2R1bGUgb2JqZWN0LCBvciAqTlVMTCogaWYKICAgICAgIG5vdCBuZWVkZWQuCiAKK1NpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1RoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbWF5IGNyZWF0ZSBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0CitkaXJlY3RseS4gVGhpcyBpcyByZWZlcnJlZCB0byBhcyAic2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uIiwgYW5kIHVzZXMgb25lCitvZiB0aGUgZm9sbG93aW5nIHR3byBtb2R1bGUgY3JlYXRpb24gZnVuY3Rpb25zOgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZShQeU1vZHVsZURlZiAqZGVmKQorCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKmRlZiouICBUaGlzIGJlaGF2ZXMKKyAgIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfQ3JlYXRlMmAgd2l0aCAqbW9kdWxlX2FwaV92ZXJzaW9uKiBzZXQgdG8KKyAgIDpjb25zdDpgUFlUSE9OX0FQSV9WRVJTSU9OYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX0NyZWF0ZTIoUHlNb2R1bGVEZWYgKmRlZiwgaW50IG1vZHVsZV9hcGlfdmVyc2lvbikKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICpkZWYqLCBhc3N1bWluZyB0aGUKKyAgIEFQSSB2ZXJzaW9uICptb2R1bGVfYXBpX3ZlcnNpb24qLiAgSWYgdGhhdCB2ZXJzaW9uIGRvZXMgbm90IG1hdGNoIHRoZSB2ZXJzaW9uCisgICBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciwgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AgaXMgZW1pdHRlZC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIE1vc3QgdXNlcyBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2luZyA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgCisgICAgICBpbnN0ZWFkOyBvbmx5IHVzZSB0aGlzIGlmIHlvdSBhcmUgc3VyZSB5b3UgbmVlZCBpdC4KKworQmVmb3JlIGl0IGlzIHJldHVybmVkIGZyb20gaW4gdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCB0aGUgcmVzdWx0aW5nIG1vZHVsZQorb2JqZWN0IGlzIHR5cGljYWxseSBwb3B1bGF0ZWQgdXNpbmcgZnVuY3Rpb25zIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfQWRkT2JqZWN0YC4KKworLi4gX211bHRpLXBoYXNlLWluaXRpYWxpemF0aW9uOgorCitNdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworQW4gYWx0ZXJuYXRlIHdheSB0byBzcGVjaWZ5IGV4dGVuc2lvbnMgaXMgdG8gcmVxdWVzdCAibXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24iLgorRXh0ZW5zaW9uIG1vZHVsZXMgY3JlYXRlZCB0aGlzIHdheSBiZWhhdmUgbW9yZSBsaWtlIFB5dGhvbiBtb2R1bGVzOiB0aGUKK2luaXRpYWxpemF0aW9uIGlzIHNwbGl0IGJldHdlZW4gdGhlICpjcmVhdGlvbiBwaGFzZSosIHdoZW4gdGhlIG1vZHVsZSBvYmplY3QKK2lzIGNyZWF0ZWQsIGFuZCB0aGUgKmV4ZWN1dGlvbiBwaGFzZSosIHdoZW4gaXQgaXMgcG9wdWxhdGVkLgorVGhlIGRpc3RpbmN0aW9uIGlzIHNpbWlsYXIgdG8gdGhlIDpweTptZXRoOmBfX25ld19fYCBhbmQgOnB5Om1ldGg6YF9faW5pdF9fYCBtZXRob2RzCitvZiBjbGFzc2VzLgorCitVbmxpa2UgbW9kdWxlcyBjcmVhdGVkIHVzaW5nIHNpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbiwgdGhlc2UgbW9kdWxlcyBhcmUgbm90CitzaW5nbGV0b25zOiBpZiB0aGUgKnN5cy5tb2R1bGVzKiBlbnRyeSBpcyByZW1vdmVkIGFuZCB0aGUgbW9kdWxlIGlzIHJlLWltcG9ydGVkLAorYSBuZXcgbW9kdWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgdGhlIG9sZCBtb2R1bGUgaXMgc3ViamVjdCB0byBub3JtYWwgZ2FyYmFnZQorY29sbGVjdGlvbiAtLSBhcyB3aXRoIFB5dGhvbiBtb2R1bGVzLgorQnkgZGVmYXVsdCwgbXVsdGlwbGUgbW9kdWxlcyBjcmVhdGVkIGZyb20gdGhlIHNhbWUgZGVmaW5pdGlvbiBzaG91bGQgYmUKK2luZGVwZW5kZW50OiBjaGFuZ2VzIHRvIG9uZSBzaG91bGQgbm90IGFmZmVjdCB0aGUgb3RoZXJzLgorVGhpcyBtZWFucyB0aGF0IGFsbCBzdGF0ZSBzaG91bGQgYmUgc3BlY2lmaWMgdG8gdGhlIG1vZHVsZSBvYmplY3QgKHVzaW5nIGUuZy4KK3VzaW5nIDpjOmZ1bmM6YFB5TW9kdWxlX0dldFN0YXRlYCksIG9yIGl0cyBjb250ZW50cyAoc3VjaCBhcyB0aGUgbW9kdWxlJ3MKKzphdHRyOmBfX2RpY3RfX2Agb3IgaW5kaXZpZHVhbCBjbGFzc2VzIGNyZWF0ZWQgd2l0aCA6YzpmdW5jOmBQeVR5cGVfRnJvbVNwZWNgKS4KKworQWxsIG1vZHVsZXMgY3JlYXRlZCB1c2luZyBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiBhcmUgZXhwZWN0ZWQgdG8gc3VwcG9ydAorOnJlZjpgc3ViLWludGVycHJldGVycyA8c3ViLWludGVycHJldGVyLXN1cHBvcnQ+YC4gTWFraW5nIHN1cmUgbXVsdGlwbGUgbW9kdWxlcworYXJlIGluZGVwZW5kZW50IGlzIHR5cGljYWxseSBlbm91Z2ggdG8gYWNoaWV2ZSB0aGlzLgorCitUbyByZXF1ZXN0IG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uLCB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24KKyhQeUluaXRfbW9kdWxlbmFtZSkgcmV0dXJucyBhIDpjOnR5cGU6YFB5TW9kdWxlRGVmYCBpbnN0YW5jZSB3aXRoIG5vbi1lbXB0eQorOmM6bWVtYmVyOmB+UHlNb2R1bGVEZWYubV9zbG90c2AuIEJlZm9yZSBpdCBpcyByZXR1cm5lZCwgdGhlIGBgUHlNb2R1bGVEZWZgYAoraW5zdGFuY2UgbXVzdCBiZSBpbml0aWFsaXplZCB3aXRoIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVEZWZfSW5pdChQeU1vZHVsZURlZiAqZGVmKQorCisgICBFbnN1cmVzIGEgbW9kdWxlIGRlZmluaXRpb24gaXMgYSBwcm9wZXJseSBpbml0aWFsaXplZCBQeXRob24gb2JqZWN0IHRoYXQKKyAgIGNvcnJlY3RseSByZXBvcnRzIGl0cyB0eXBlIGFuZCByZWZlcmVuY2UgY291bnQuCisKKyAgIFJldHVybnMgKmRlZiogY2FzdCB0byBgYFB5T2JqZWN0KmBgLCBvciAqTlVMTCogaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitUaGUgKm1fc2xvdHMqIG1lbWJlciBvZiB0aGUgbW9kdWxlIGRlZmluaXRpb24gbXVzdCBwb2ludCB0byBhbiBhcnJheSBvZgorYGBQeU1vZHVsZURlZl9TbG90YGAgc3RydWN0dXJlczoKKworLi4gYzp0eXBlOjogUHlNb2R1bGVEZWZfU2xvdAorCisgICAuLiBjOm1lbWJlcjo6IGludCBzbG90CisKKyAgICAgIEEgc2xvdCBJRCwgY2hvc2VuIGZyb20gdGhlIGF2YWlsYWJsZSB2YWx1ZXMgZXhwbGFpbmVkIGJlbG93LgorCisgICAuLiBjOm1lbWJlcjo6IHZvaWQqIHZhbHVlCisKKyAgICAgIFZhbHVlIG9mIHRoZSBzbG90LCB3aG9zZSBtZWFuaW5nIGRlcGVuZHMgb24gdGhlIHNsb3QgSUQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitUaGUgKm1fc2xvdHMqIGFycmF5IG11c3QgYmUgdGVybWluYXRlZCBieSBhIHNsb3Qgd2l0aCBpZCAwLgorCitUaGUgYXZhaWxhYmxlIHNsb3QgdHlwZXMgYXJlOgorCisuLiBjOnZhcjo6IFB5X21vZF9jcmVhdGUKKworICAgU3BlY2lmaWVzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgdG8gY3JlYXRlIHRoZSBtb2R1bGUgb2JqZWN0IGl0c2VsZi4KKyAgIFRoZSAqdmFsdWUqIHBvaW50ZXIgb2YgdGhpcyBzbG90IG11c3QgcG9pbnQgdG8gYSBmdW5jdGlvbiBvZiB0aGUgc2lnbmF0dXJlOgorCisgICAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIGNyZWF0ZV9tb2R1bGUoUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBhIDpweTpjbGFzczpgfmltcG9ydGxpYi5tYWNoaW5lcnkuTW9kdWxlU3BlY2AKKyAgIGluc3RhbmNlLCBhcyBkZWZpbmVkIGluIDpQRVA6YDQ1MWAsIGFuZCB0aGUgbW9kdWxlIGRlZmluaXRpb24uCisgICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IG1vZHVsZSBvYmplY3QsIG9yIHNldCBhbiBlcnJvcgorICAgYW5kIHJldHVybiAqTlVMTCouCisKKyAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGtlcHQgbWluaW1hbC4gSW4gcGFydGljdWxhciwgaXQgc2hvdWxkIG5vdAorICAgY2FsbCBhcmJpdHJhcnkgUHl0aG9uIGNvZGUsIGFzIHRyeWluZyB0byBpbXBvcnQgdGhlIHNhbWUgbW9kdWxlIGFnYWluIG1heQorICAgcmVzdWx0IGluIGFuIGluZmluaXRlIGxvb3AuCisKKyAgIE11bHRpcGxlIGBgUHlfbW9kX2NyZWF0ZWBgIHNsb3RzIG1heSBub3QgYmUgc3BlY2lmaWVkIGluIG9uZSBtb2R1bGUKKyAgIGRlZmluaXRpb24uCisKKyAgIElmIGBgUHlfbW9kX2NyZWF0ZWBgIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHdpbGwgY3JlYXRlCisgICBhIG5vcm1hbCBtb2R1bGUgb2JqZWN0IHVzaW5nIDpjOmZ1bmM6YFB5TW9kdWxlX05ld2AuIFRoZSBuYW1lIGlzIHRha2VuIGZyb20KKyAgICpzcGVjKiwgbm90IHRoZSBkZWZpbml0aW9uLCB0byBhbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBkeW5hbWljYWxseSBhZGp1c3QKKyAgIHRvIHRoZWlyIHBsYWNlIGluIHRoZSBtb2R1bGUgaGllcmFyY2h5IGFuZCBiZSBpbXBvcnRlZCB1bmRlciBkaWZmZXJlbnQKKyAgIG5hbWVzIHRocm91Z2ggc3ltbGlua3MsIGFsbCB3aGlsZSBzaGFyaW5nIGEgc2luZ2xlIG1vZHVsZSBkZWZpbml0aW9uLgorCisgICBUaGVyZSBpcyBubyByZXF1aXJlbWVudCBmb3IgdGhlIHJldHVybmVkIG9iamVjdCB0byBiZSBhbiBpbnN0YW5jZSBvZgorICAgOmM6dHlwZTpgUHlNb2R1bGVfVHlwZWAuIEFueSB0eXBlIGNhbiBiZSB1c2VkLCBhcyBsb25nIGFzIGl0IHN1cHBvcnRzCisgICBzZXR0aW5nIGFuZCBnZXR0aW5nIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMuCisgICBIb3dldmVyLCBvbmx5IGBgUHlNb2R1bGVfVHlwZWBgIGluc3RhbmNlcyBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlCisgICBgYFB5TW9kdWxlRGVmYGAgaGFzIG5vbi0qTlVMTCogYGBtX21ldGhvZHNgYCwgYGBtX3RyYXZlcnNlYGAsIGBgbV9jbGVhcmBgLAorICAgYGBtX2ZyZWVgYDsgbm9uLXplcm8gYGBtX3NpemVgYDsgb3Igc2xvdHMgb3RoZXIgdGhhbiBgYFB5X21vZF9jcmVhdGVgYC4KKworLi4gYzp2YXI6OiBQeV9tb2RfZXhlYworCisgICBTcGVjaWZpZXMgYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB0byAqZXhlY3V0ZSogdGhlIG1vZHVsZS4KKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBleGVjdXRpbmcgdGhlIGNvZGUgb2YgYSBQeXRob24gbW9kdWxlOiB0eXBpY2FsbHksCisgICB0aGlzIGZ1bmN0aW9uIGFkZHMgY2xhc3NlcyBhbmQgY29uc3RhbnRzIHRvIHRoZSBtb2R1bGUuCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoZSBmdW5jdGlvbiBpczoKKworICAgLi4gYzpmdW5jdGlvbjo6IGludCBleGVjX21vZHVsZShQeU9iamVjdCogbW9kdWxlKQorCisgICBJZiBtdWx0aXBsZSBgYFB5X21vZF9leGVjYGAgc2xvdHMgYXJlIHNwZWNpZmllZCwgdGhleSBhcmUgcHJvY2Vzc2VkIGluIHRoZQorICAgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlICptX3Nsb3RzKiBhcnJheS4KKworU2VlIDpQRVA6YDQ4OWAgZm9yIG1vcmUgZGV0YWlscyBvbiBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbi4KKworTG93LWxldmVsIG1vZHVsZSBjcmVhdGlvbiBmdW5jdGlvbnMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGhvb2Qgd2hlbiB1c2luZyBtdWx0aS1waGFzZQoraW5pdGlhbGl6YXRpb24uIFRoZXkgY2FuIGJlIHVzZWQgZGlyZWN0bHksIGZvciBleGFtcGxlIHdoZW4gY3JlYXRpbmcgbW9kdWxlCitvYmplY3RzIGR5bmFtaWNhbGx5LiBOb3RlIHRoYXQgYm90aCBgYFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYGAgYW5kCitgYFB5TW9kdWxlX0V4ZWNEZWZgYCBtdXN0IGJlIGNhbGxlZCB0byBmdWxseSBpbml0aWFsaXplIGEgbW9kdWxlLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QgKiBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYyhQeU1vZHVsZURlZiAqZGVmLCBQeU9iamVjdCAqc3BlYykKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBvYmplY3QsIGdpdmVuIHRoZSBkZWZpbml0aW9uIGluICptb2R1bGUqIGFuZCB0aGUKKyAgIE1vZHVsZVNwZWMgKnNwZWMqLiAgVGhpcyBiZWhhdmVzIGxpa2UgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyYAorICAgd2l0aCAqbW9kdWxlX2FwaV92ZXJzaW9uKiBzZXQgdG8gOmNvbnN0OmBQWVRIT05fQVBJX1ZFUlNJT05gLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICogUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKFB5TW9kdWxlRGVmICpkZWYsIFB5T2JqZWN0ICpzcGVjLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQorCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIG9iamVjdCwgZ2l2ZW4gdGhlIGRlZmluaXRpb24gaW4gKm1vZHVsZSogYW5kIHRoZQorICAgTW9kdWxlU3BlYyAqc3BlYyosIGFzc3VtaW5nIHRoZSBBUEkgdmVyc2lvbiAqbW9kdWxlX2FwaV92ZXJzaW9uKi4KKyAgIElmIHRoYXQgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbiBvZiB0aGUgcnVubmluZyBpbnRlcnByZXRlciwKKyAgIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgIGlzIGVtaXR0ZWQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBNb3N0IHVzZXMgb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNpbmcgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWNgCisgICAgICBpbnN0ZWFkOyBvbmx5IHVzZSB0aGlzIGlmIHlvdSBhcmUgc3VyZSB5b3UgbmVlZCBpdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfRXhlY0RlZihQeU9iamVjdCAqbW9kdWxlLCBQeU1vZHVsZURlZiAqZGVmKQorCisgICBQcm9jZXNzIGFueSBleGVjdXRpb24gc2xvdHMgKDpjOmRhdGE6YFB5X21vZF9leGVjYCkgZ2l2ZW4gaW4gKmRlZiouCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpkb2NzdHJpbmcpCisKKyAgIFNldCB0aGUgZG9jc3RyaW5nIGZvciAqbW9kdWxlKiB0byAqZG9jc3RyaW5nKi4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBjcmVhdGluZyBhIG1vZHVsZSBmcm9tCisgICBgYFB5TW9kdWxlRGVmYGAsIHVzaW5nIGVpdGhlciBgYFB5TW9kdWxlX0NyZWF0ZWBgIG9yCisgICBgYFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqbW9kdWxlLCBQeU1ldGhvZERlZiAqZnVuY3Rpb25zKQorCisgICBBZGQgdGhlIGZ1bmN0aW9ucyBmcm9tIHRoZSAqTlVMTCogdGVybWluYXRlZCAqZnVuY3Rpb25zKiBhcnJheSB0byAqbW9kdWxlKi4KKyAgIFJlZmVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1ldGhvZERlZmAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvbiBpbmRpdmlkdWFsCisgICBlbnRyaWVzIChkdWUgdG8gdGhlIGxhY2sgb2YgYSBzaGFyZWQgbW9kdWxlIG5hbWVzcGFjZSwgbW9kdWxlIGxldmVsCisgICAiZnVuY3Rpb25zIiBpbXBsZW1lbnRlZCBpbiBDIHR5cGljYWxseSByZWNlaXZlIHRoZSBtb2R1bGUgYXMgdGhlaXIgZmlyc3QKKyAgIHBhcmFtZXRlciwgbWFraW5nIHRoZW0gc2ltaWxhciB0byBpbnN0YW5jZSBtZXRob2RzIG9uIFB5dGhvbiBjbGFzc2VzKS4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBjcmVhdGluZyBhIG1vZHVsZSBmcm9tCisgICBgYFB5TW9kdWxlRGVmYGAsIHVzaW5nIGVpdGhlciBgYFB5TW9kdWxlX0NyZWF0ZWBgIG9yCisgICBgYFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitTdXBwb3J0IGZ1bmN0aW9ucworLi4uLi4uLi4uLi4uLi4uLi4KKworVGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiAoaWYgdXNpbmcgc2luZ2xlIHBoYXNlIGluaXRpYWxpemF0aW9uKSBvcgorYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhIG1vZHVsZSBleGVjdXRpb24gc2xvdCAoaWYgdXNpbmcgbXVsdGktcGhhc2UKK2luaXRpYWxpemF0aW9uKSwgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBoZWxwIGluaXRpYWxpemUgdGhlIG1vZHVsZQorc3RhdGU6CiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKIApAQCAtMjM2LDcgKzQxMCw2IEBACiAgICBiZSB1c2VkIGZyb20gdGhlIG1vZHVsZSdzIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAgVGhpcyBzdGVhbHMgYSByZWZlcmVuY2UgdG8KICAgICp2YWx1ZSouICBSZXR1cm4gYGAtMWBgIG9uIGVycm9yLCBgYDBgYCBvbiBzdWNjZXNzLgogCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqbmFtZSwgbG9uZyB2YWx1ZSkKIAogICAgQWRkIGFuIGludGVnZXIgY29uc3RhbnQgdG8gKm1vZHVsZSogYXMgKm5hbWUqLiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBjYW4gYmUKQEAgLTI0OCw3ICs0MjEsNyBAQAogCiAgICBBZGQgYSBzdHJpbmcgY29uc3RhbnQgdG8gKm1vZHVsZSogYXMgKm5hbWUqLiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBjYW4gYmUKICAgIHVzZWQgZnJvbSB0aGUgbW9kdWxlJ3MgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uICBUaGUgc3RyaW5nICp2YWx1ZSogbXVzdCBiZQotICAgbnVsbC10ZXJtaW5hdGVkLiAgUmV0dXJuIGBgLTFgYCBvbiBlcnJvciwgYGAwYGAgb24gc3VjY2Vzcy4KKyAgICpOVUxMKi10ZXJtaW5hdGVkLiAgUmV0dXJuIGBgLTFgYCBvbiBlcnJvciwgYGAwYGAgb24gc3VjY2Vzcy4KIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5TW9kdWxlX0FkZEludE1hY3JvKFB5T2JqZWN0ICptb2R1bGUsIG1hY3JvKQpAQCAtMjYyLDMgKzQzNSwzNiBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeU1vZHVsZV9BZGRTdHJpbmdNYWNybyhQeU9iamVjdCAqbW9kdWxlLCBtYWNybykKIAogICAgQWRkIGEgc3RyaW5nIGNvbnN0YW50IHRvICptb2R1bGUqLgorCisKK01vZHVsZSBsb29rdXAKK15eXl5eXl5eXl5eXl4KKworU2luZ2xlLXBoYXNlIGluaXRpYWxpemF0aW9uIGNyZWF0ZXMgc2luZ2xldG9uIG1vZHVsZXMgdGhhdCBjYW4gYmUgbG9va2VkIHVwCitpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCBpbnRlcnByZXRlci4gVGhpcyBhbGxvd3MgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUKK3JldHJpZXZlZCBsYXRlciB3aXRoIG9ubHkgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBkZWZpbml0aW9uLgorCitUaGVzZSBmdW5jdGlvbnMgd2lsbCBub3Qgd29yayBvbiBtb2R1bGVzIGNyZWF0ZWQgdXNpbmcgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sCitzaW5jZSBtdWx0aXBsZSBzdWNoIG1vZHVsZXMgY2FuIGJlIGNyZWF0ZWQgZnJvbSBhIHNpbmdsZSBkZWZpbml0aW9uLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5U3RhdGVfRmluZE1vZHVsZShQeU1vZHVsZURlZiAqZGVmKQorCisgICBSZXR1cm5zIHRoZSBtb2R1bGUgb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQgZnJvbSAqZGVmKiBmb3IgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuCisgICBUaGlzIG1ldGhvZCByZXF1aXJlcyB0aGF0IHRoZSBtb2R1bGUgb2JqZWN0IGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB3aXRoCisgICA6YzpmdW5jOmBQeVN0YXRlX0FkZE1vZHVsZWAgYmVmb3JlaGFuZC4gSW4gY2FzZSB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0IGlzIG5vdAorICAgZm91bmQgb3IgaGFzIG5vdCBiZWVuIGF0dGFjaGVkIHRvIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB5ZXQsIGl0IHJldHVybnMgKk5VTEwqLgorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5TW9kdWxlRGVmICpkZWYpCisKKyAgIEF0dGFjaGVzIHRoZSBtb2R1bGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gdG8gdGhlIGludGVycHJldGVyIHN0YXRlLiBUaGlzIGFsbG93cworICAgdGhlIG1vZHVsZSBvYmplY3QgdG8gYmUgYWNjZXNzaWJsZSB2aWEgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KKworICAgT25seSBlZmZlY3RpdmUgb24gbW9kdWxlcyBjcmVhdGVkIHVzaW5nIHNpbmdsZS1waGFzZSBpbml0aWFsaXphdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL251bWJlci5yc3QgYi9Eb2MvYy1hcGkvbnVtYmVyLnJzdAppbmRleCAyMTk1MWMzLi45YmNiNjQ5IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbnVtYmVyLnJzdAorKysgYi9Eb2MvYy1hcGkvbnVtYmVyLnJzdApAQCAtMzAsNiArMzAsMTQgQEAKICAgIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gZXhwcmVzc2lvbiBgYG8xICogbzJgYC4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQorCisgICBSZXR1cm5zIHRoZSByZXN1bHQgb2YgbWF0cml4IG11bHRpcGxpY2F0aW9uIG9uICpvMSogYW5kICpvMiosIG9yICpOVUxMKiBvbgorICAgZmFpbHVyZS4gIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIFB5dGhvbiBleHByZXNzaW9uIGBgbzEgQCBvMmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX0Zsb29yRGl2aWRlKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQogCiAgICBSZXR1cm4gdGhlIGZsb29yIG9mICpvMSogZGl2aWRlZCBieSAqbzIqLCBvciAqTlVMTCogb24gZmFpbHVyZS4gIFRoaXMgaXMKQEAgLTE0Niw2ICsxNTQsMTUgQEAKICAgIHRoZSBQeXRob24gc3RhdGVtZW50IGBgbzEgKj0gbzJgYC4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TnVtYmVyX0luUGxhY2VNYXRyaXhNdWx0aXBseShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMikKKworICAgUmV0dXJucyB0aGUgcmVzdWx0IG9mIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvbiAqbzEqIGFuZCAqbzIqLCBvciAqTlVMTCogb24KKyAgIGZhaWx1cmUuICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgKmluLXBsYWNlKiB3aGVuICpvMSogc3VwcG9ydHMgaXQuICBUaGlzIGlzCisgICB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIHN0YXRlbWVudCBgYG8xIEA9IG8yYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKQogCiAgICBSZXR1cm5zIHRoZSBtYXRoZW1hdGljYWwgZmxvb3Igb2YgZGl2aWRpbmcgKm8xKiBieSAqbzIqLCBvciAqTlVMTCogb24gZmFpbHVyZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zeXMucnN0IGIvRG9jL2MtYXBpL3N5cy5yc3QKaW5kZXggN2NlYWQwNy4uM2Q4M2IyNyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N5cy5yc3QKKysrIGIvRG9jL2MtYXBpL3N5cy5yc3QKQEAgLTQ3LDYgKzQ3LDYwIEBACiAgICBub3QgY2FsbCB0aG9zZSBmdW5jdGlvbnMgZGlyZWN0bHkhICA6Yzp0eXBlOmBQeU9TX3NpZ2hhbmRsZXJfdGAgaXMgYSB0eXBlZGVmCiAgICBhbGlhcyBmb3IgOmM6dHlwZTpgdm9pZCAoXCopKGludClgLgogCisuLiBjOmZ1bmN0aW9uOjogd2NoYXJfdCogUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQorCisgICBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUgOnJlZjpgc3Vycm9nYXRlZXNjYXBlCisgICBlcnJvciBoYW5kbGVyIDxzdXJyb2dhdGVlc2NhcGU+YDogdW5kZWNvZGFibGUgYnl0ZXMgYXJlIGRlY29kZWQgYXMKKyAgIGNoYXJhY3RlcnMgaW4gcmFuZ2UgVStEQzgwLi5VK0RDRkYuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhCisgICBzdXJyb2dhdGUgY2hhcmFjdGVyLCBlc2NhcGUgdGhlIGJ5dGVzIHVzaW5nIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKKyAgIGhhbmRsZXIgaW5zdGVhZCBvZiBkZWNvZGluZyB0aGVtLgorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZywgdXNlCisgICA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYCB0byBmcmVlIHRoZSBtZW1vcnkuIElmIHNpemUgaXMgbm90IGBgTlVMTGBgLCB3cml0ZQorICAgdGhlIG51bWJlciBvZiB3aWRlIGNoYXJhY3RlcnMgZXhjbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpbnRvIGBgKnNpemVgYAorCisgICBSZXR1cm4gYGBOVUxMYGAgb24gZGVjb2RpbmcgZXJyb3Igb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuIElmICpzaXplKiBpcworICAgbm90IGBgTlVMTGBgLCBgYCpzaXplYGAgaXMgc2V0IHRvIGBgKHNpemVfdCktMWBgIG9uIG1lbW9yeSBlcnJvciBvciBzZXQgdG8KKyAgIGBgKHNpemVfdCktMmBgIG9uIGRlY29kaW5nIGVycm9yLgorCisgICBEZWNvZGluZyBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCisgICBsaWJyYXJ5LgorCisgICBVc2UgdGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24gdG8gZW5jb2RlIHRoZSBjaGFyYWN0ZXIgc3RyaW5nCisgICBiYWNrIHRvIGEgYnl0ZSBzdHJpbmcuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGFuZAorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemVgIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5X0VuY29kZUxvY2FsZShjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKKworICAgRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKKyAgIDpyZWY6YHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIDxzdXJyb2dhdGVlc2NhcGU+YDogc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgIGluIHRoZSByYW5nZSBVK0RDODAuLlUrRENGRiBhcmUgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYuCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBzdHJpbmcsIHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYAorICAgdG8gZnJlZSB0aGUgbWVtb3J5LiBSZXR1cm4gYGBOVUxMYGAgb24gZW5jb2RpbmcgZXJyb3Igb3IgbWVtb3J5IGFsbG9jYXRpb24KKyAgIGVycm9yCisKKyAgIElmIGVycm9yX3BvcyBpcyBub3QgYGBOVUxMYGAsIGBgKmVycm9yX3Bvc2BgIGlzIHNldCB0byB0aGUgaW5kZXggb2YgdGhlCisgICBpbnZhbGlkIGNoYXJhY3RlciBvbiBlbmNvZGluZyBlcnJvciwgb3Igc2V0IHRvIGBgKHNpemVfdCktMWBgIG90aGVyd2lzZS4KKworICAgVXNlIHRoZSA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIGZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgYnl0ZXMgc3RyaW5nIGJhY2sKKyAgIHRvIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVGhlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIGFuZAorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBfc3lzdGVtZnVuY3Rpb25zOgogCiBTeXN0ZW0gRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKaW5kZXggNWRlOGJlMC4uYjUxMTNhYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdApAQCAtMjIwLDkgKzIyMCwxNCBAQAogICAgdGhlIHN1YnR5cGUncyA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfc2V0YXR0cmAgYW5kIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9zZXRhdHRyb2AgYXJlIGJvdGggKk5VTEwqLgogCiAKLS4uIGM6bWVtYmVyOjogdm9pZCogUHlUeXBlT2JqZWN0LnRwX3Jlc2VydmVkCisuLiBjOm1lbWJlcjo6IFB5QXN5bmNNZXRob2RzKiB0cF9hc19hc3luYwogCi0gICBSZXNlcnZlZCBzbG90LCBmb3JtZXJseSBrbm93biBhcyB0cF9jb21wYXJlLgorICAgUG9pbnRlciB0byBhbiBhZGRpdGlvbmFsIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIGZpZWxkcyByZWxldmFudCBvbmx5IHRvCisgICBvYmplY3RzIHdoaWNoIGltcGxlbWVudCA6dGVybTpgYXdhaXRhYmxlYCBhbmQgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAKKyAgIHByb3RvY29scyBhdCB0aGUgQy1sZXZlbC4gIFNlZSA6cmVmOmBhc3luYy1zdHJ1Y3RzYCBmb3IgZGV0YWlscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBGb3JtZXJseSBrbm93biBhcyBgYHRwX2NvbXBhcmVgYCBhbmQgYGB0cF9yZXNlcnZlZGBgLgogCiAKIC4uIGM6bWVtYmVyOjogcmVwcmZ1bmMgUHlUeXBlT2JqZWN0LnRwX3JlcHIKQEAgLTExMTgsNiArMTEyMyw5IEBACiAgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7CiAKICAgICAgICAgICAgIHVuYXJ5ZnVuYyBuYl9pbmRleDsKKworICAgICAgICAgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgICAgICAgICBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5OwogICAgICAgIH0gUHlOdW1iZXJNZXRob2RzOwogCiAgICAuLiBub3RlOjoKQEAgLTEzMjksMyArMTMzNyw1OCBAQAogCiAgICA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYCBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgY29uc3VtZXIgdGhhdAogICAgd3JhcHMgdGhpcyBmdW5jdGlvbi4KKworCisuLiBfYXN5bmMtc3RydWN0czoKKworCitBc3luYyBPYmplY3QgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gc2VjdGlvbmF1dGhvcjo6IFl1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gYzp0eXBlOjogUHlBc3luY01ldGhvZHMKKworICAgVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgcG9pbnRlcnMgdG8gdGhlIGZ1bmN0aW9ucyByZXF1aXJlZCB0byBpbXBsZW1lbnQKKyAgIDp0ZXJtOmBhd2FpdGFibGVgIGFuZCA6dGVybTpgYXN5bmNocm9ub3VzIGl0ZXJhdG9yYCBvYmplY3RzLgorCisgICBIZXJlIGlzIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbjo6CisKKyAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgeworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FpdGVyOworICAgICAgICAgICAgdW5hcnlmdW5jIGFtX2FuZXh0OworICAgICAgICB9IFB5QXN5bmNNZXRob2RzOworCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9hd2FpdAorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYXdhaXQoUHlPYmplY3QgKnNlbGYpCisKKyAgIFRoZSByZXR1cm5lZCBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYXRvciwgaS5lLiA6YzpmdW5jOmBQeUl0ZXJfQ2hlY2tgIG11c3QKKyAgIHJldHVybiBgYDFgYCBmb3IgaXQuCisKKyAgIFRoaXMgc2xvdCBtYXkgYmUgc2V0IHRvICpOVUxMKiBpZiBhbiBvYmplY3QgaXMgbm90IGFuIDp0ZXJtOmBhd2FpdGFibGVgLgorCisuLiBjOm1lbWJlcjo6IHVuYXJ5ZnVuYyBQeUFzeW5jTWV0aG9kcy5hbV9haXRlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICBQeU9iamVjdCAqYW1fYWl0ZXIoUHlPYmplY3QgKnNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdC4gIFNlZSA6bWV0aDpgX19hbmV4dF9fYCBmb3IgZGV0YWlscy4KKworICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqIGlmIGFuIG9iamVjdCBkb2VzIG5vdCBpbXBsZW1lbnQKKyAgIGFzeW5jaHJvbm91cyBpdGVyYXRpb24gcHJvdG9jb2wuCisKKy4uIGM6bWVtYmVyOjogdW5hcnlmdW5jIFB5QXN5bmNNZXRob2RzLmFtX2FuZXh0CisKKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgIFB5T2JqZWN0ICphbV9hbmV4dChQeU9iamVjdCAqc2VsZikKKworICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0LiAgU2VlIDptZXRoOmBfX2FuZXh0X19gIGZvciBkZXRhaWxzLgorICAgVGhpcyBzbG90IG1heSBiZSBzZXQgdG8gKk5VTEwqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGY3ZTk5ZDYuLjJlZWFkYjUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTc2NSwxMSArNzY1LDEzIEBACiAgICAqZXJyb3JzKiBpcyBgYE5VTExgYC4gICpzdHIqIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQKICAgIGNhbm5vdCBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC03OTAsMTEgKzc5MiwxMyBAQAogICAgKmVycm9ycyogaXMgYGBOVUxMYGAuIFJldHVybiBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gKnN0ciogY2Fubm90CiAgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4KIAorICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bworICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgUHl0aG9uIHN0YXJ0dXApLgorCiAgICAuLiBzZWVhbHNvOjoKIAotICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHRgIHRvIGVuY29kZSBhIHN0cmluZyB0bwotICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAotICAgICAgUHl0aG9uIHN0YXJ0dXApLgorICAgICAgVGhlIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCkBAIC04MzksMTIgKzg0MywxNCBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEgc3RyaW5nCisgICBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKLSAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCi0gICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgpAQCAtODc0LDEyICs4ODAsMTMgQEAKICAgIElmIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGlzIG5vdCBzZXQsIGZhbGwgYmFjayB0byB0aGUKICAgIGxvY2FsZSBlbmNvZGluZy4KIAorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhIHN0cmluZworICAgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisKICAgIC4uIHNlZWFsc286OgogCi0gICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCi0gICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZW5jb2RlIGEKLSAgICAgIHN0cmluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcsIHVzZQotICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxvY2FsZWAuCisgICAgICBUaGUgOmM6ZnVuYzpgUHlfRW5jb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9jb25mLnB5IGIvRG9jL2NvbmYucHkKaW5kZXggZjgwM2RlMi4uMjhkZDgwZiAxMDA2NDQKLS0tIGEvRG9jL2NvbmYucHkKKysrIGIvRG9jL2NvbmYucHkKQEAgLTM2LDYgKzM2LDkgQEAKICMgUmVxdWlyZSBTcGhpbnggMS4yIGZvciBidWlsZC4KIG5lZWRzX3NwaGlueCA9ICcxLjInCiAKKyMgSWdub3JlIGFueSAucnN0IGZpbGVzIGluIHRoZSB2ZW52LyBkaXJlY3RvcnkuCitleGNsdWRlX3BhdHRlcm5zID0gWyd2ZW52LyonXQorCiAKICMgT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IDYwMjU2MTcuLmUzODgxOTUgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtMzQ5LDYgKzM0OSwxMSBAQAogUHlFcnJfRm9ybWF0OmNvbnN0IGNoYXIqOmZvcm1hdDo6CiBQeUVycl9Gb3JtYXQ6Oi4uLjo6CiAKK1B5RXJyX0Zvcm1hdFY6UHlPYmplY3QqOjpudWxsOgorUHlFcnJfRm9ybWF0VjpQeU9iamVjdCo6ZXhjZXB0aW9uOisxOgorUHlFcnJfRm9ybWF0Vjpjb25zdCBjaGFyKjpmb3JtYXQ6OgorUHlFcnJfRm9ybWF0Vjp2YV9saXN0OnZhcmdzOjoKKwogUHlFcnJfV2FybkV4OmludDo6OgogUHlFcnJfV2FybkV4OlB5T2JqZWN0KjpjYXRlZ29yeTowOgogUHlFcnJfV2FybkV4OmNvbnN0IGNoYXIqOm1lc3NhZ2U6OgpAQCAtNDg2LDYgKzQ5MSwxMiBAQAogUHlHZW5fTmV3OlB5T2JqZWN0Kjo6KzE6CiBQeUdlbl9OZXc6UHlGcmFtZU9iamVjdCo6ZnJhbWU6MDoKIAorUHlHZW5fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0Kjo6KzE6CitQeUdlbl9OZXdXaXRoUXVhbE5hbWU6UHlGcmFtZU9iamVjdCo6ZnJhbWU6MDoKKworUHlDb3JvX05ldzpQeU9iamVjdCo6OisxOgorUHlDb3JvX05ldzpQeUZyYW1lT2JqZWN0KjpmcmFtZTowOgorCiBQeV9Jbml0TW9kdWxlOlB5T2JqZWN0Kjo6MDoKIFB5X0luaXRNb2R1bGU6Y29uc3QgY2hhcio6bmFtZTo6CiBQeV9Jbml0TW9kdWxlOlB5TWV0aG9kRGVmW106bWV0aG9kczo6CmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKaW5kZXggNmViODdjYi4uMzVhYTExNCAxMDA2NDQKLS0tIGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdApAQCAtODY4LDIzICs4NjgsMzEgQEAKIAogICAgQ3JlYXRlIGFuIGFyY2hpdmUgZmlsZSAoZWcuIGBgemlwYGAgb3IgYGB0YXJgYCkuICAqYmFzZV9uYW1lKiAgaXMgdGhlIG5hbWUgb2YKICAgIHRoZSBmaWxlIHRvIGNyZWF0ZSwgbWludXMgYW55IGZvcm1hdC1zcGVjaWZpYyBleHRlbnNpb247ICAqZm9ybWF0KiBpcyB0aGUKLSAgIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgYGB6aXBgYCwgYGB0YXJgYCwgIGBgenRhcmBgLCBvciBgYGd6dGFyYGAuICpyb290X2RpciogaXMKLSAgIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGFyY2hpdmU7IGllLiB3ZSB0eXBpY2FsbHkKLSAgIGBgY2hkaXJgYCBpbnRvICpyb290X2RpciogYmVmb3JlICBjcmVhdGluZyB0aGUgYXJjaGl2ZS4gICpiYXNlX2RpciogaXMgdGhlCi0gICBkaXJlY3Rvcnkgd2hlcmUgd2Ugc3RhcnQgIGFyY2hpdmluZyBmcm9tOyBpZS4gKmJhc2VfZGlyKiB3aWxsIGJlIHRoZSBjb21tb24KLSAgIHByZWZpeCBvZiBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZSBhcmNoaXZlLiAgKnJvb3RfZGlyKiBhbmQgKmJhc2VfZGlyKgotICAgYm90aCBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFyY2hpdmUgZmlsZS4KKyAgIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgYGB6aXBgYCwgYGB0YXJgYCwgYGBnenRhcmBgLCBgYGJ6dGFyYGAsIGBgeHp0YXJgYCwgb3IKKyAgIGBgenRhcmBgLiAqcm9vdF9kaXIqIGlzIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCisgICBhcmNoaXZlOyBpZS4gd2UgdHlwaWNhbGx5IGBgY2hkaXJgYCBpbnRvICpyb290X2RpciogYmVmb3JlICBjcmVhdGluZyB0aGUKKyAgIGFyY2hpdmUuICAqYmFzZV9kaXIqIGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgd2Ugc3RhcnQgIGFyY2hpdmluZyBmcm9tOyBpZS4KKyAgICpiYXNlX2Rpciogd2lsbCBiZSB0aGUgY29tbW9uIHByZWZpeCBvZiBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZQorICAgYXJjaGl2ZS4gICpyb290X2RpciogYW5kICpiYXNlX2RpciogYm90aCBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFyY2hpdmUgZmlsZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgeHp0YXJgYCBmb3JtYXQuCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX3RhcmJhbGwoYmFzZV9uYW1lLCBiYXNlX2RpclssIGNvbXByZXNzPSdnemlwJywgdmVyYm9zZT0wLCBkcnlfcnVuPTBdKQogCiAgICAnQ3JlYXRlIGFuIChvcHRpb25hbCBjb21wcmVzc2VkKSBhcmNoaXZlIGFzIGEgdGFyIGZpbGUgZnJvbSBhbGwgZmlsZXMgaW4gYW5kCi0gICB1bmRlciAqYmFzZV9kaXIqLiAqY29tcHJlc3MqIG11c3QgYmUgYGAnZ3ppcCdgYCAodGhlIGRlZmF1bHQpLCAgYGAnY29tcHJlc3MnYGAsCi0gICBgYCdiemlwMidgYCwgb3IgYGBOb25lYGAuICBCb3RoIDpwcm9ncmFtOmB0YXJgIGFuZCB0aGUgY29tcHJlc3Npb24gdXRpbGl0eSBuYW1lZAotICAgYnkgKmNvbXByZXNzKiBtdXN0IGJlIG9uIHRoZSAgZGVmYXVsdCBwcm9ncmFtIHNlYXJjaCBwYXRoLCBzbyB0aGlzIGlzIHByb2JhYmx5Ci0gICBVbml4LXNwZWNpZmljLiAgVGhlICBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCA6ZmlsZTpgYmFzZV9kaXIudGFyYCwKLSAgIHBvc3NpYmx5IHBsdXMgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoOmZpbGU6YC5nemAsIDpmaWxlOmAuYnoyYAotICAgb3IgOmZpbGU6YC5aYCkuICBSZXR1cm4gdGhlIG91dHB1dCBmaWxlbmFtZS4KKyAgIHVuZGVyICpiYXNlX2RpciouICpjb21wcmVzcyogbXVzdCBiZSBgYCdnemlwJ2BgICh0aGUgZGVmYXVsdCksCisgICBgYCdiemlwMidgYCwgYGAneHonYGAsIGBgJ2NvbXByZXNzJ2BgLCBvciBgYE5vbmVgYC4gIEZvciB0aGUgYGAnY29tcHJlc3MnYGAKKyAgIG1ldGhvZCB0aGUgY29tcHJlc3Npb24gdXRpbGl0eSBuYW1lZCBieSA6cHJvZ3JhbTpgY29tcHJlc3NgIG11c3QgYmUgb24gdGhlCisgICBkZWZhdWx0IHByb2dyYW0gc2VhcmNoIHBhdGgsIHNvIHRoaXMgaXMgcHJvYmFibHkgVW5peC1zcGVjaWZpYy4gIFRoZSBvdXRwdXQKKyAgIHRhciBmaWxlIHdpbGwgYmUgbmFtZWQgOmZpbGU6YGJhc2VfZGlyLnRhcmAsIHBvc3NpYmx5IHBsdXMgdGhlIGFwcHJvcHJpYXRlCisgICBjb21wcmVzc2lvbiBleHRlbnNpb24gKGBgLmd6YGAsIGBgLmJ6MmBgLCBgYC54emBgIG9yIGBgLlpgYCkuICBSZXR1cm4gdGhlCisgICBvdXRwdXQgZmlsZW5hbWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYHh6YGAgY29tcHJlc3Npb24uCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCBiYXNlX2RpclssIHZlcmJvc2U9MCwgZHJ5X3J1bj0wXSkKQEAgLTExOTMsMTIgKzEyMDEsMTIgQEAKIAogLi4gZnVuY3Rpb246OiBieXRlX2NvbXBpbGUocHlfZmlsZXNbLCBvcHRpbWl6ZT0wLCBmb3JjZT0wLCBwcmVmaXg9Tm9uZSwgYmFzZV9kaXI9Tm9uZSwgdmVyYm9zZT0xLCBkcnlfcnVuPTAsIGRpcmVjdD1Ob25lXSkKIAotICAgQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIGVpdGhlciA6ZmlsZTpgLnB5Y2Agb3IKLSAgIDpmaWxlOmAucHlvYCBmaWxlcyBpbiBhIDpmaWxlOmBfX3B5Y2FjaGVfX2Agc3ViZGlyZWN0b3J5IChzZWUgOnBlcDpgMzE0N2ApLgorICAgQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIDpmaWxlOmAucHljYCBmaWxlcyBpbiBhCisgICA6ZmlsZTpgX19weWNhY2hlX19gIHN1YmRpcmVjdG9yeSAoc2VlIDpwZXA6YDMxNDdgIGFuZCA6cGVwOmA0ODhgKS4KICAgICpweV9maWxlcyogaXMgYSBsaXN0IG9mIGZpbGVzIHRvIGNvbXBpbGU7IGFueSBmaWxlcyB0aGF0IGRvbid0IGVuZCBpbgogICAgOmZpbGU6YC5weWAgYXJlIHNpbGVudGx5IHNraXBwZWQuICAqb3B0aW1pemUqIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKLSAgICogYGAwYGAgLSBkb24ndCBvcHRpbWl6ZSAoZ2VuZXJhdGUgOmZpbGU6YC5weWNgKQorICAgKiBgYDBgYCAtIGRvbid0IG9wdGltaXplCiAgICAqIGBgMWBgIC0gbm9ybWFsIG9wdGltaXphdGlvbiAobGlrZSBgYHB5dGhvbiAtT2BgKQogICAgKiBgYDJgYCAtIGV4dHJhIG9wdGltaXphdGlvbiAobGlrZSBgYHB5dGhvbiAtT09gYCkKIApAQCAtMTIyMiwxMCArMTIzMCwxMyBAQAogICAgZG9pbmcsIGxlYXZlIGl0IHNldCB0byBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIuMwotICAgICAgQ3JlYXRlIGBgLnB5Y2BgIG9yIGBgLnB5b2BgIGZpbGVzIHdpdGggYW4gOmZ1bmM6YGltcG9ydCBtYWdpYyB0YWcKKyAgICAgIENyZWF0ZSBgYC5weWNgYCBmaWxlcyB3aXRoIGFuIDpmdW5jOmBpbXBvcnQgbWFnaWMgdGFnCiAgICAgICA8aW1wLmdldF90YWc+YCBpbiB0aGVpciBuYW1lLCBpbiBhIDpmaWxlOmBfX3B5Y2FjaGVfX2Agc3ViZGlyZWN0b3J5CiAgICAgICBpbnN0ZWFkIG9mIGZpbGVzIHdpdGhvdXQgdGFnIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQ3JlYXRlIGBgLnB5Y2BgIGZpbGVzIGFjY29yZGluZyB0byA6cGVwOmA0ODhgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmZjODIyX2VzY2FwZShoZWFkZXIpCiAKZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdCBiL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdAppbmRleCBjNTgyN2I2Li41MjNkMWUwIDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9idWlsdGRpc3QucnN0CkBAIC03MiwxMyArNzIsMTkgQEAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IEZvcm1hdCAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfAogKz09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PSsKLXwgYGBnenRhcmBgICAgfCBnemlwcGVkIHRhciBmaWxlICAgICAgICAgICAgIHwgKDEpLCgzKSB8Cit8IGBgZ3p0YXJgYCAgIHwgZ3ppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8IFwoMSkgICAgfAogfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5nemApICAgICAgICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCit8IGBgYnp0YXJgYCAgIHwgYnppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5iejJgKSAgICAgICAgICAgfCAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCit8IGBgeHp0YXJgYCAgIHwgeHppcHBlZCB0YXIgZmlsZSAgICAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci54emApICAgICAgICAgICAgfCAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IGBgenRhcmBgICAgIHwgY29tcHJlc3NlZCB0YXIgZmlsZSAgICAgICAgICB8IFwoMykgICAgfAogfCAgICAgICAgICAgICB8ICg6ZmlsZTpgLnRhci5aYCkgICAgICAgICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCi18IGBgdGFyYGAgICAgIHwgdGFyIGZpbGUgKDpmaWxlOmAudGFyYCkgICAgICB8IFwoMykgICAgfAorfCBgYHRhcmBgICAgICB8IHRhciBmaWxlICg6ZmlsZTpgLnRhcmApICAgICAgfCAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rCiB8IGBgemlwYGAgICAgIHwgemlwIGZpbGUgKDpmaWxlOmAuemlwYCkgICAgICB8ICgyKSwoNCkgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKQEAgLTk0LDYgKzEwMCw5IEBACiB8IGBgbXNpYGAgICAgIHwgTWljcm9zb2Z0IEluc3RhbGxlci4gICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSsKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYHh6dGFyYGAgZm9ybWF0LgorCiAKIE5vdGVzOgogCkBAIC0xMDQsOCArMTEzLDcgQEAKICAgIGRlZmF1bHQgb24gV2luZG93cwogCiAoMykKLSAgIHJlcXVpcmVzIGV4dGVybmFsIHV0aWxpdGllczogOnByb2dyYW06YHRhcmAgYW5kIHBvc3NpYmx5IG9uZSBvZiA6cHJvZ3JhbTpgZ3ppcGAsCi0gICA6cHJvZ3JhbTpgYnppcDJgLCBvciA6cHJvZ3JhbTpgY29tcHJlc3NgCisgICByZXF1aXJlcyBleHRlcm5hbCA6cHJvZ3JhbTpgY29tcHJlc3NgIHV0aWxpdHkuCiAKICg0KQogICAgcmVxdWlyZXMgZWl0aGVyIGV4dGVybmFsIDpwcm9ncmFtOmB6aXBgIHV0aWxpdHkgb3IgOm1vZDpgemlwZmlsZWAgbW9kdWxlIChwYXJ0CkBAIC0xMTksMjEgKzEyNywyMiBAQAogb3B0aW9uOyB5b3UgY2FuIGFsc28gdXNlIHRoZSBjb21tYW5kIHRoYXQgZGlyZWN0bHkgaW1wbGVtZW50cyB0aGUgZm9ybWF0IHlvdSdyZQogaW50ZXJlc3RlZCBpbi4gIFNvbWUgb2YgdGhlc2UgOmNvbW1hbmQ6YGJkaXN0YCAic3ViLWNvbW1hbmRzIiBhY3R1YWxseSBnZW5lcmF0ZQogc2V2ZXJhbCBzaW1pbGFyIGZvcm1hdHM7IGZvciBpbnN0YW5jZSwgdGhlIDpjb21tYW5kOmBiZGlzdF9kdW1iYCBjb21tYW5kCi1nZW5lcmF0ZXMgYWxsIHRoZSAiZHVtYiIgYXJjaGl2ZSBmb3JtYXRzIChgYHRhcmBgLCBgYHp0YXJgYCwgYGBnenRhcmBgLCBhbmQKLWBgemlwYGApLCBhbmQgOmNvbW1hbmQ6YGJkaXN0X3JwbWAgZ2VuZXJhdGVzIGJvdGggYmluYXJ5IGFuZCBzb3VyY2UgUlBNcy4gIFRoZQotOmNvbW1hbmQ6YGJkaXN0YCBzdWItY29tbWFuZHMsIGFuZCB0aGUgZm9ybWF0cyBnZW5lcmF0ZWQgYnkgZWFjaCwgYXJlOgorZ2VuZXJhdGVzIGFsbCB0aGUgImR1bWIiIGFyY2hpdmUgZm9ybWF0cyAoYGB0YXJgYCwgYGBnenRhcmBgLCBgYGJ6dGFyYGAsCitgYHh6dGFyYGAsIGBgenRhcmBgLCBhbmQgYGB6aXBgYCksIGFuZCA6Y29tbWFuZDpgYmRpc3RfcnBtYCBnZW5lcmF0ZXMgYm90aAorYmluYXJ5IGFuZCBzb3VyY2UgUlBNcy4gIFRoZSA6Y29tbWFuZDpgYmRpc3RgIHN1Yi1jb21tYW5kcywgYW5kIHRoZSBmb3JtYXRzCitnZW5lcmF0ZWQgYnkgZWFjaCwgYXJlOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IENvbW1hbmQgICAgICAgICAgICAgICAgICB8IEZvcm1hdHMgICAgICAgICAgICAgICB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb21tYW5kOmBiZGlzdF9kdW1iYCAgICB8IHRhciwgenRhciwgZ3p0YXIsIHppcCB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF9ycG1gICAgICB8IHJwbSwgc3JwbSAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF93aW5pbnN0YCB8IHdpbmluc3QgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb21tYW5kOmBiZGlzdF9tc2lgICAgICB8IG1zaSAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tbWFuZCAgICAgICAgICAgICAgICAgIHwgRm9ybWF0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IDpjb21tYW5kOmBiZGlzdF9kdW1iYCAgICB8IHRhciwgZ3p0YXIsIGJ6dGFyLCB4enRhciwgenRhciwgemlwIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCA6Y29tbWFuZDpgYmRpc3RfcnBtYCAgICAgfCBycG0sIHNycG0gICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbW1hbmQ6YGJkaXN0X3dpbmluc3RgIHwgd2luaW5zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IDpjb21tYW5kOmBiZGlzdF9tc2lgICAgICB8IG1zaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGdpdmUgZGV0YWlscyBvbiB0aGUgaW5kaXZpZHVhbCA6Y29tbWFuZDpgYmRpc3RfXCpgCiBjb21tYW5kcy4KZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdAppbmRleCAwZWNlNjQ2Li44ZjQ2YmQ3IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0xNTYsOCArMTU2LDggQEAKIAogcHVyZSBQeXRob24gbW9kdWxlCiAgICBhIG1vZHVsZSB3cml0dGVuIGluIFB5dGhvbiBhbmQgY29udGFpbmVkIGluIGEgc2luZ2xlIDpmaWxlOmAucHlgIGZpbGUgKGFuZAotICAgcG9zc2libHkgYXNzb2NpYXRlZCA6ZmlsZTpgLnB5Y2AgYW5kL29yIDpmaWxlOmAucHlvYCBmaWxlcykuICBTb21ldGltZXMgcmVmZXJyZWQKLSAgIHRvIGFzIGEgInB1cmUgbW9kdWxlLiIKKyAgIHBvc3NpYmx5IGFzc29jaWF0ZWQgOmZpbGU6YC5weWNgIGZpbGVzKS4gIFNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBhCisgICAicHVyZSBtb2R1bGUuIgogCiBleHRlbnNpb24gbW9kdWxlCiAgICBhIG1vZHVsZSB3cml0dGVuIGluIHRoZSBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugb2YgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbjogQy9DKysKQEAgLTIxMCw1ICsyMTAsMyBAQAogICAgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgeW91ciBzb3VyY2UgdHJlZSAob3IgIHNvdXJjZSBkaXN0cmlidXRpb24pOyB0aGUKICAgIGRpcmVjdG9yeSB3aGVyZSA6ZmlsZTpgc2V0dXAucHlgIGV4aXN0cy4gIEdlbmVyYWxseSAgOmZpbGU6YHNldHVwLnB5YCB3aWxsIGJlCiAgICBydW4gZnJvbSB0aGlzIGRpcmVjdG9yeS4KLQotCmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0IGIvRG9jL2Rpc3R1dGlscy9zb3VyY2VkaXN0LnJzdAppbmRleCBiOWYwY2M4Li5mYjcwNTE0IDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL3NvdXJjZWRpc3QucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvc291cmNlZGlzdC5yc3QKQEAgLTMyLDEyICszMiwxOCBAQAogfCBgYGJ6dGFyYGAgfCBiemlwMidlZCB0YXIgZmlsZSAgICAgICB8ICAgICAgICAgfAogfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuYnoyYCkgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKworfCBgYHh6dGFyYGAgfCB4eidlZCB0YXIgZmlsZSAgICAgICAgICB8ICAgICAgICAgfAorfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIueHpgKSAgICAgICB8ICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHp0YXJgYCAgfCBjb21wcmVzc2VkIHRhciBmaWxlICAgICB8IFwoNCkgICAgfAogfCAgICAgICAgICAgfCAoOmZpbGU6YC50YXIuWmApICAgICAgICB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogfCBgYHRhcmBgICAgfCB0YXIgZmlsZSAoOmZpbGU6YC50YXJgKSB8ICAgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKwogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgeHp0YXJgYCBmb3JtYXQuCisKIE5vdGVzOgogCiAoMSkKQEAgLTU0LDcgKzYwLDcgQEAKICAgIHJlcXVpcmVzIHRoZSA6cHJvZ3JhbTpgY29tcHJlc3NgIHByb2dyYW0uIE5vdGljZSB0aGF0IHRoaXMgZm9ybWF0IGlzIG5vdwogICAgcGVuZGluZyBmb3IgZGVwcmVjYXRpb24gYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbi4KIAotV2hlbiB1c2luZyBhbnkgYGB0YXJgYCBmb3JtYXQgKGBgZ3p0YXJgYCwgYGBienRhcmBgLCBgYHp0YXJgYCBvcgorV2hlbiB1c2luZyBhbnkgYGB0YXJgYCBmb3JtYXQgKGBgZ3p0YXJgYCwgYGBienRhcmBgLCBgYHh6dGFyYGAsIGBgenRhcmBgIG9yCiBgYHRhcmBgKSwgdW5kZXIgVW5peCB5b3UgY2FuIHNwZWNpZnkgdGhlIGBgb3duZXJgYCBhbmQgYGBncm91cGBgIG5hbWVzCiB0aGF0IHdpbGwgYmUgc2V0IGZvciBlYWNoIG1lbWJlciBvZiB0aGUgYXJjaGl2ZS4KIApkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9idWlsZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdAppbmRleCA2NTZhZjg4Li4xNjMxNzlkIDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2J1aWxkaW5nLnJzdApAQCAtMSwyNyArMSw1OCBAQAogLi4gaGlnaGxpZ2h0bGFuZzo6IGMKIAotCiAuLiBfYnVpbGRpbmc6CiAKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQnVpbGRpbmcgQyBhbmQgQysrIEV4dGVuc2lvbnMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK0EgQyBleHRlbnNpb24gZm9yIENQeXRob24gaXMgYSBzaGFyZWQgbGlicmFyeSAoZS5nLiBhIGBgLnNvYGAgZmlsZSBvbiBMaW51eCwKK2BgLnB5ZGBgIG9uIFdpbmRvd3MpLCB3aGljaCBleHBvcnRzIGFuICppbml0aWFsaXphdGlvbiBmdW5jdGlvbiouCisKK1RvIGJlIGltcG9ydGFibGUsIHRoZSBzaGFyZWQgbGlicmFyeSBtdXN0IGJlIGF2YWlsYWJsZSBvbiA6ZW52dmFyOmBQWVRIT05QQVRIYCwKK2FuZCBtdXN0IGJlIG5hbWVkIGFmdGVyIHRoZSBtb2R1bGUgbmFtZSwgd2l0aCBhbiBhcHByb3ByaWF0ZSBleHRlbnNpb24uCitXaGVuIHVzaW5nIGRpc3R1dGlscywgdGhlIGNvcnJlY3QgZmlsZW5hbWUgaXMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuCisKK1RoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBoYXMgdGhlIHNpZ25hdHVyZToKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUluaXRfbW9kdWxlbmFtZSh2b2lkKQorCitJdCByZXR1cm5zIGVpdGhlciBhIGZ1bGx5LWluaXRpYWxpemVkIG1vZHVsZSwgb3IgYSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAKK2luc3RhbmNlLiBTZWUgOnJlZjpgaW5pdGlhbGl6aW5nLW1vZHVsZXNgIGZvciBkZXRhaWxzLgorCisuLiBoaWdobGlnaHRsYW5nOjogcHl0aG9uCisKK0ZvciBtb2R1bGVzIHdpdGggQVNDSUktb25seSBuYW1lcywgdGhlIGZ1bmN0aW9uIG11c3QgYmUgbmFtZWQKK2BgUHlJbml0Xzxtb2R1bGVuYW1lPmBgLCB3aXRoIGBgPG1vZHVsZW5hbWU+YGAgcmVwbGFjZWQgYnkgdGhlIG5hbWUgb2YgdGhlCittb2R1bGUuIFdoZW4gdXNpbmcgOnJlZjpgbXVsdGktcGhhc2UtaW5pdGlhbGl6YXRpb25gLCBub24tQVNDSUkgbW9kdWxlIG5hbWVzCithcmUgYWxsb3dlZC4gSW4gdGhpcyBjYXNlLCB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gbmFtZSBpcworYGBQeUluaXRVXzxtb2R1bGVuYW1lPmBgLCB3aXRoIGBgPG1vZHVsZW5hbWU+YGAgZW5jb2RlZCB1c2luZyBQeXRob24ncworKnB1bnljb2RlKiBlbmNvZGluZyB3aXRoIGh5cGhlbnMgcmVwbGFjZWQgYnkgdW5kZXJzY29yZXMuIEluIFB5dGhvbjo6CisKKyAgICBkZWYgaW5pdGZ1bmNfbmFtZShuYW1lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VmZml4ID0gYidfJyArIG5hbWUuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzdWZmaXggPSBiJ1VfJyArIG5hbWUuZW5jb2RlKCdwdW55Y29kZScpLnJlcGxhY2UoYictJywgYidfJykKKyAgICAgICAgcmV0dXJuIGInUHlJbml0JyArIHN1ZmZpeAorCitJdCBpcyBwb3NzaWJsZSB0byBleHBvcnQgbXVsdGlwbGUgbW9kdWxlcyBmcm9tIGEgc2luZ2xlIHNoYXJlZCBsaWJyYXJ5IGJ5CitkZWZpbmluZyBtdWx0aXBsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMuIEhvd2V2ZXIsIGltcG9ydGluZyB0aGVtIHJlcXVpcmVzCit1c2luZyBzeW1ib2xpYyBsaW5rcyBvciBhIGN1c3RvbSBpbXBvcnRlciwgYmVjYXVzZSBieSBkZWZhdWx0IG9ubHkgdGhlCitmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaWxlbmFtZSBpcyBmb3VuZC4KK1NlZSA6UEVQOmA0ODkjbXVsdGlwbGUtbW9kdWxlcy1pbi1vbmUtbGlicmFyeWAgZm9yIGRldGFpbHMuCisKKworLi4gaGlnaGxpZ2h0bGFuZzo6IGMKKwogQnVpbGRpbmcgQyBhbmQgQysrIEV4dGVuc2lvbnMgd2l0aCBkaXN0dXRpbHMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBzZWN0aW9uYXV0aG9yOjogTWFydGluIHYuIEzDtndpcyA8bWFydGluQHYubG9ld2lzLmRlPgogCi0KLVN0YXJ0aW5nIGluIFB5dGhvbiAxLjQsIFB5dGhvbiBwcm92aWRlcywgb24gVW5peCwgYSBzcGVjaWFsIG1ha2UgZmlsZSBmb3IKLWJ1aWxkaW5nIG1ha2UgZmlsZXMgZm9yIGJ1aWxkaW5nIGR5bmFtaWNhbGx5LWxpbmtlZCBleHRlbnNpb25zIGFuZCBjdXN0b20KLWludGVycHJldGVycy4gIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDIuMCwgdGhpcyBtZWNoYW5pc20gKGtub3duIGFzIHJlbGF0ZWQgdG8KLU1ha2VmaWxlLnByZS5pbiwgYW5kIFNldHVwIGZpbGVzKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBCdWlsZGluZyBjdXN0b20KLWludGVycHJldGVycyB3YXMgcmFyZWx5IHVzZWQsIGFuZCBleHRlbnNpb24gbW9kdWxlcyBjYW4gYmUgYnVpbHQgdXNpbmcKLWRpc3R1dGlscy4KLQotQnVpbGRpbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZSB1c2luZyBkaXN0dXRpbHMgcmVxdWlyZXMgdGhhdCBkaXN0dXRpbHMgaXMKLWluc3RhbGxlZCBvbiB0aGUgYnVpbGQgbWFjaGluZSwgd2hpY2ggaXMgaW5jbHVkZWQgaW4gUHl0aG9uIDIueCBhbmQgYXZhaWxhYmxlCi1zZXBhcmF0ZWx5IGZvciBQeXRob24gMS41LiBTaW5jZSBkaXN0dXRpbHMgYWxzbyBzdXBwb3J0cyBjcmVhdGlvbiBvZiBiaW5hcnkKLXBhY2thZ2VzLCB1c2VycyBkb24ndCBuZWNlc3NhcmlseSBuZWVkIGEgY29tcGlsZXIgYW5kIGRpc3R1dGlscyB0byBpbnN0YWxsIHRoZQotZXh0ZW5zaW9uLgorRXh0ZW5zaW9uIG1vZHVsZXMgY2FuIGJlIGJ1aWx0IHVzaW5nIGRpc3R1dGlscywgIHdoaWNoIGlzIGluY2x1ZGVkIGluIFB5dGhvbi4KK1NpbmNlIGRpc3R1dGlscyBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIGJpbmFyeSBwYWNrYWdlcywgdXNlcnMgZG9uJ3QKK25lY2Vzc2FyaWx5IG5lZWQgYSBjb21waWxlciBhbmQgZGlzdHV0aWxzIHRvIGluc3RhbGwgdGhlIGV4dGVuc2lvbi4KIAogQSBkaXN0dXRpbHMgcGFja2FnZSBjb250YWlucyBhIGRyaXZlciBzY3JpcHQsIDpmaWxlOmBzZXR1cC5weWAuIFRoaXMgaXMgYSBwbGFpbgogUHl0aG9uIGZpbGUsIHdoaWNoLCBpbiB0aGUgbW9zdCBzaW1wbGUgY2FzZSwgY291bGQgbG9vayBsaWtlIHRoaXM6OgpkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CmluZGV4IDZjYjY4NmEuLmFjZDYwYWUgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKQEAgLTU4LDEyICs1OCwxOCBAQAogICAgaW50CiAgICBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICB7Ci0gICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOyAgLyogb3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkICovCi0gICAgIFB5X0luaXRpYWxpemUoKTsKLSAgICAgUHlSdW5fU2ltcGxlU3RyaW5nKCJmcm9tIHRpbWUgaW1wb3J0IHRpbWUsY3RpbWVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwcmludCgnVG9kYXkgaXMnLCBjdGltZSh0aW1lKCkpKVxuIik7Ci0gICAgIFB5X0ZpbmFsaXplKCk7Ci0gICAgIHJldHVybiAwOworICAgICAgIHdjaGFyX3QgKnByb2dyYW0gPSBQeV9EZWNvZGVMb2NhbGUoYXJndlswXSwgTlVMTCk7CisgICAgICAgaWYgKHByb2dyYW0gPT0gTlVMTCkgeworICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIGVycm9yOiBjYW5ub3QgZGVjb2RlIGFyZ3ZbMF1cbiIpOworICAgICAgICAgICBleGl0KDEpOworICAgICAgIH0KKyAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShwcm9ncmFtKTsgIC8qIG9wdGlvbmFsIGJ1dCByZWNvbW1lbmRlZCAqLworICAgICAgIFB5X0luaXRpYWxpemUoKTsKKyAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOworICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgUHlNZW1fUmF3RnJlZShwcm9ncmFtKTsKKyAgICAgICByZXR1cm4gMDsKICAgIH0KIAogVGhlIDpjOmZ1bmM6YFB5X1NldFByb2dyYW1OYW1lYCBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZQpAQCAtMTYwLDcgKzE2Niw3IEBACiBpbnRlcmVzdGluZyBwYXJ0IHdpdGggcmVzcGVjdCB0byBlbWJlZGRpbmcgUHl0aG9uIHN0YXJ0cyB3aXRoIDo6CiAKICAgIFB5X0luaXRpYWxpemUoKTsKLSAgIHBOYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYXJndlsxXSk7CisgICBwTmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYXJndlsxXSk7CiAgICAvKiBFcnJvciBjaGVja2luZyBvZiBwTmFtZSBsZWZ0IG91dCAqLwogICAgcE1vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydChwTmFtZSk7CiAKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAppbmRleCBiYTZiZmE3Li44Y2M0MTg0IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CkBAIC0zNzUsMTEgKzM3NSwxNyBAQAogICAgaW50CiAgICBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICB7CisgICAgICAgd2NoYXJfdCAqcHJvZ3JhbSA9IFB5X0RlY29kZUxvY2FsZShhcmd2WzBdLCBOVUxMKTsKKyAgICAgICBpZiAocHJvZ3JhbSA9PSBOVUxMKSB7CisgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgZXJyb3I6IGNhbm5vdCBkZWNvZGUgYXJndlswXVxuIik7CisgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgfQorCiAgICAgICAgLyogQWRkIGEgYnVpbHQtaW4gbW9kdWxlLCBiZWZvcmUgUHlfSW5pdGlhbGl6ZSAqLwogICAgICAgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWIoInNwYW0iLCBQeUluaXRfc3BhbSk7CiAKICAgICAgICAvKiBQYXNzIGFyZ3ZbMF0gdG8gdGhlIFB5dGhvbiBpbnRlcnByZXRlciAqLwotICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOworICAgICAgIFB5X1NldFByb2dyYW1OYW1lKHByb2dyYW0pOwogCiAgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGludGVycHJldGVyLiAgUmVxdWlyZWQuICovCiAgICAgICAgUHlfSW5pdGlhbGl6ZSgpOwpAQCAtMzkxLDYgKzM5NywxMCBAQAogCiAgICAgICAgLi4uCiAKKyAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOworICAgICAgIHJldHVybiAwOworICAgfQorCiAuLiBub3RlOjoKIAogICAgUmVtb3ZpbmcgZW50cmllcyBmcm9tIGBgc3lzLm1vZHVsZXNgYCBvciBpbXBvcnRpbmcgY29tcGlsZWQgbW9kdWxlcyBpbnRvCkBAIC00MDMsNiArNDEzLDEzIEBACiBhcyA6ZmlsZTpgTW9kdWxlcy94eG1vZHVsZS5jYC4gIFRoaXMgZmlsZSBtYXkgYmUgdXNlZCBhcyBhICB0ZW1wbGF0ZSBvciBzaW1wbHkKIHJlYWQgYXMgYW4gZXhhbXBsZS4KIAorLi4gbm90ZTo6CisKKyAgIFVubGlrZSBvdXIgYGBzcGFtYGAgZXhhbXBsZSwgYGB4eG1vZHVsZWBgIHVzZXMgKm11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uKgorICAgKG5ldyBpbiBQeXRob24gMy41KSwgd2hlcmUgYSBQeU1vZHVsZURlZiBzdHJ1Y3R1cmUgaXMgcmV0dXJuZWQgZnJvbQorICAgYGBQeUluaXRfc3BhbWBgLCBhbmQgY3JlYXRpb24gb2YgdGhlIG1vZHVsZSBpcyBsZWZ0IHRvIHRoZSBpbXBvcnQgbWFjaGluZXJ5LgorICAgRm9yIGRldGFpbHMgb24gbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24sIHNlZSA6UEVQOmA0ODlgLgorCiAKIC4uIF9jb21waWxhdGlvbjoKIApkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdAppbmRleCAwODg0NDMwLi5mNjBlMjA4IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdApAQCAtODAsNyArODAsNyBAQAogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCiAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCAxZGU4NmVmLi44NDZjMDFhIDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTY5LDExICs2OSwzNCBAQAogICAgICAgOnJlZjpgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhcmd1bWVudHMgYW5kIHBhcmFtZXRlcnMKICAgICAgIDxmYXEtYXJndW1lbnQtdnMtcGFyYW1ldGVyPmAsIGFuZCA6cGVwOmAzNjJgLgogCisgICBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyCisgICAgICBBbiBvYmplY3Qgd2hpY2ggY29udHJvbHMgdGhlIGVudmlyb25tZW50IHNlZW4gaW4gYW4KKyAgICAgIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQgYnkgZGVmaW5pbmcgOm1ldGg6YF9fYWVudGVyX19gIGFuZAorICAgICAgOm1ldGg6YF9fYWV4aXRfX2AgbWV0aG9kcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYC4KKworICAgYXN5bmNocm9ub3VzIGl0ZXJhYmxlCisgICAgICBBbiBvYmplY3QsIHRoYXQgY2FuIGJlIHVzZWQgaW4gYW4gOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50LgorICAgICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGF3YWl0YWJsZWAgZnJvbSBpdHMgOm1ldGg6YF9fYWl0ZXJfX2AgbWV0aG9kLAorICAgICAgd2hpY2ggc2hvdWxkIGluIHR1cm4gYmUgcmVzb2x2ZWQgaW4gYW4gOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAKKyAgICAgIG9iamVjdC4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYC4KKworICAgYXN5bmNocm9ub3VzIGl0ZXJhdG9yCisgICAgICBBbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIDptZXRoOmBfX2FpdGVyX19gIGFuZCA6bWV0aDpgX19hbmV4dF9fYAorICAgICAgbWV0aG9kcywgdGhhdCBtdXN0IHJldHVybiA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3RzLgorICAgICAgOmtleXdvcmQ6YGFzeW5jIGZvcmAgcmVzb2x2ZXMgYXdhaXRhYmxlIHJldHVybmVkIGZyb20gYXN5bmNocm9ub3VzCisgICAgICBpdGVyYXRvcidzIDptZXRoOmBfX2FuZXh0X19gIG1ldGhvZCB1bnRpbCBpdCByYWlzZXMKKyAgICAgIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXhjZXB0aW9uLiAgSW50cm9kdWNlZCBieSA6cGVwOmA0OTJgLgorCiAgICBhdHRyaWJ1dGUKICAgICAgIEEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGFuIG9iamVjdCB3aGljaCBpcyByZWZlcmVuY2VkIGJ5IG5hbWUgdXNpbmcKICAgICAgIGRvdHRlZCBleHByZXNzaW9ucy4gIEZvciBleGFtcGxlLCBpZiBhbiBvYmplY3QgKm8qIGhhcyBhbiBhdHRyaWJ1dGUKICAgICAgICphKiBpdCB3b3VsZCBiZSByZWZlcmVuY2VkIGFzICpvLmEqLgogCisgICBhd2FpdGFibGUKKyAgICAgIEFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGluIGFuIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4gIENhbiBiZQorICAgICAgYSA6dGVybTpgY29yb3V0aW5lYCBvciBhbiBvYmplY3Qgd2l0aCBhbiA6bWV0aDpgX19hd2FpdF9fYCBtZXRob2QuCisgICAgICBTZWUgYWxzbyA6cGVwOmA0OTJgLgorCiAgICBCREZMCiAgICAgICBCZW5ldm9sZW50IERpY3RhdG9yIEZvciBMaWZlLCBhLmsuYS4gYEd1aWRvIHZhbiBSb3NzdW0KICAgICAgIDxodHRwczovL3d3dy5weXRob24ub3JnL35ndWlkby8+YF8sIFB5dGhvbidzIGNyZWF0b3IuCkBAIC04NiwxMiArMTA5LDIxIEBACiAgICAgICAgICBBIDp0ZXJtOmB0ZXh0IGZpbGVgIHJlYWRzIGFuZCB3cml0ZXMgOmNsYXNzOmBzdHJgIG9iamVjdHMuCiAKICAgIGJ5dGVzLWxpa2Ugb2JqZWN0Ci0gICAgICBBbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyb2JqZWN0c2AsIGxpa2UgOmNsYXNzOmBieXRlc2AsCi0gICAgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb3IgOmNsYXNzOmBtZW1vcnl2aWV3YC4gIEJ5dGVzLWxpa2Ugb2JqZWN0cyBjYW4KLSAgICAgIGJlIHVzZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGV4cGVjdCBiaW5hcnkgZGF0YSwgc3VjaCBhcwotICAgICAgY29tcHJlc3Npb24sIHNhdmluZyB0byBhIGJpbmFyeSBmaWxlIG9yIHNlbmRpbmcgb3ZlciBhIHNvY2tldC4KLSAgICAgIFNvbWUgb3BlcmF0aW9ucyBuZWVkIHRoZSBiaW5hcnkgZGF0YSB0byBiZSBtdXRhYmxlLCBpbiB3aGljaCBjYXNlCi0gICAgICBub3QgYWxsIGJ5dGVzLWxpa2Ugb2JqZWN0cyBjYW4gYXBwbHkuCisgICAgICBBbiBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUgOnJlZjpgYnVmZmVyb2JqZWN0c2AgYW5kIGNhbgorICAgICAgZXhwb3J0IGEgQy06dGVybTpgY29udGlndW91c2AgYnVmZmVyLiBUaGlzIGluY2x1ZGVzIGFsbCA6Y2xhc3M6YGJ5dGVzYCwKKyAgICAgIDpjbGFzczpgYnl0ZWFycmF5YCwgYW5kIDpjbGFzczpgYXJyYXkuYXJyYXlgIG9iamVjdHMsIGFzIHdlbGwgYXMgbWFueQorICAgICAgY29tbW9uIDpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cy4gIEJ5dGVzLWxpa2Ugb2JqZWN0cyBjYW4KKyAgICAgIGJlIHVzZWQgZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IHdvcmsgd2l0aCBiaW5hcnkgZGF0YTsgdGhlc2UgaW5jbHVkZQorICAgICAgY29tcHJlc3Npb24sIHNhdmluZyB0byBhIGJpbmFyeSBmaWxlLCBhbmQgc2VuZGluZyBvdmVyIGEgc29ja2V0LgorCisgICAgICBTb21lIG9wZXJhdGlvbnMgbmVlZCB0aGUgYmluYXJ5IGRhdGEgdG8gYmUgbXV0YWJsZS4gIFRoZSBkb2N1bWVudGF0aW9uCisgICAgICBvZnRlbiByZWZlcnMgdG8gdGhlc2UgYXMgInJlYWQtd3JpdGUgYnl0ZXMtbGlrZSBvYmplY3RzIi4gIEV4YW1wbGUKKyAgICAgIG11dGFibGUgYnVmZmVyIG9iamVjdHMgaW5jbHVkZSA6Y2xhc3M6YGJ5dGVhcnJheWAgYW5kIGEKKyAgICAgIDpjbGFzczpgbWVtb3J5dmlld2Agb2YgYSA6Y2xhc3M6YGJ5dGVhcnJheWAuCisgICAgICBPdGhlciBvcGVyYXRpb25zIHJlcXVpcmUgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIHN0b3JlZCBpbgorICAgICAgaW1tdXRhYmxlIG9iamVjdHMgKCJyZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3RzIik7IGV4YW1wbGVzCisgICAgICBvZiB0aGVzZSBpbmNsdWRlIDpjbGFzczpgYnl0ZXNgIGFuZCBhIDpjbGFzczpgbWVtb3J5dmlld2AKKyAgICAgIG9mIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgogCiAgICBieXRlY29kZQogICAgICAgUHl0aG9uIHNvdXJjZSBjb2RlIGlzIGNvbXBpbGVkIGludG8gYnl0ZWNvZGUsIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgpAQCAtMTM5LDYgKzE3MSwzMiBAQAogICAgICAgc3RhdGVtZW50IGJ5IGRlZmluaW5nIDptZXRoOmBfX2VudGVyX19gIGFuZCA6bWV0aDpgX19leGl0X19gIG1ldGhvZHMuCiAgICAgICBTZWUgOnBlcDpgMzQzYC4KIAorICAgY29udGlndW91cworICAgICAgLi4gaW5kZXg6OiBDLWNvbnRpZ3VvdXMsIEZvcnRyYW4gY29udGlndW91cworCisgICAgICBBIGJ1ZmZlciBpcyBjb25zaWRlcmVkIGNvbnRpZ3VvdXMgZXhhY3RseSBpZiBpdCBpcyBlaXRoZXIKKyAgICAgICpDLWNvbnRpZ3VvdXMqIG9yICpGb3J0cmFuIGNvbnRpZ3VvdXMqLiAgWmVyby1kaW1lbnNpb25hbCBidWZmZXJzIGFyZQorICAgICAgQyBhbmQgRm9ydHJhbiBjb250aWd1b3VzLiAgSW4gb25lLWRpbWVuc2lvbmFsIGFycmF5cywgdGhlIGl0ZW1zCisgICAgICBtdXN0IGJlIGxheWVkIG91dCBpbiBtZW1vcnkgbmV4dCB0byBlYWNoIG90aGVyLCBpbiBvcmRlciBvZgorICAgICAgaW5jcmVhc2luZyBpbmRleGVzIHN0YXJ0aW5nIGZyb20gemVyby4gIEluIG11bHRpZGltZW5zaW9uYWwKKyAgICAgIEMtY29udGlndW91cyBhcnJheXMsIHRoZSBsYXN0IGluZGV4IHZhcmllcyB0aGUgZmFzdGVzdCB3aGVuCisgICAgICB2aXNpdGluZyBpdGVtcyBpbiBvcmRlciBvZiBtZW1vcnkgYWRkcmVzcy4gIEhvd2V2ZXIsIGluCisgICAgICBGb3J0cmFuIGNvbnRpZ3VvdXMgYXJyYXlzLCB0aGUgZmlyc3QgaW5kZXggdmFyaWVzIHRoZSBmYXN0ZXN0LgorCisgICBjb3JvdXRpbmUKKyAgICAgIENvcm91dGluZXMgaXMgYSBtb3JlIGdlbmVyYWxpemVkIGZvcm0gb2Ygc3Vicm91dGluZXMuIFN1YnJvdXRpbmVzIGFyZQorICAgICAgZW50ZXJlZCBhdCBvbmUgcG9pbnQgYW5kIGV4aXRlZCBhdCBhbm90aGVyIHBvaW50LiAgQ29yb3V0aW5lcyBjYW4gYmUKKyAgICAgIGVudGVyZWQsIGV4aXRlZCwgYW5kIHJlc3VtZWQgYXQgbWFueSBkaWZmZXJlbnQgcG9pbnRzLiAgVGhleSBjYW4gYmUKKyAgICAgIGltcGxlbWVudGVkIHdpdGggdGhlIDprZXl3b3JkOmBhc3luYyBkZWZgIHN0YXRlbWVudC4gIFNlZSBhbHNvCisgICAgICA6cGVwOmA0OTJgLgorCisgICBjb3JvdXRpbmUgZnVuY3Rpb24KKyAgICAgIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdC4gIEEgY29yb3V0aW5lCisgICAgICBmdW5jdGlvbiBtYXkgYmUgZGVmaW5lZCB3aXRoIHRoZSA6a2V5d29yZDpgYXN5bmMgZGVmYCBzdGF0ZW1lbnQsCisgICAgICBhbmQgbWF5IGNvbnRhaW4gOmtleXdvcmQ6YGF3YWl0YCwgOmtleXdvcmQ6YGFzeW5jIGZvcmAsIGFuZAorICAgICAgOmtleXdvcmQ6YGFzeW5jIHdpdGhgIGtleXdvcmRzLiAgVGhlc2Ugd2VyZSBpbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA0OTJgLgorCiAgICBDUHl0aG9uCiAgICAgICBUaGUgY2Fub25pY2FsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIGFzCiAgICAgICBkaXN0cmlidXRlZCBvbiBgcHl0aG9uLm9yZyA8aHR0cHM6Ly93d3cucHl0aG9uLm9yZz5gXy4gIFRoZSB0ZXJtICJDUHl0aG9uIgpAQCAtMjkwLDE0ICszNDgsMjMgQEAKICAgICAgIC4uIGluZGV4Ojogc2luZ2xlOiBnZW5lcmF0b3IKIAogICAgZ2VuZXJhdG9yCi0gICAgICBBIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gaXRlcmF0b3IuICBJdCBsb29rcyBsaWtlIGEgbm9ybWFsIGZ1bmN0aW9uCi0gICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudHMgZm9yIHByb2R1Y2luZyBhIHNlcmllcwotICAgICAgb2YgdmFsdWVzIHVzYWJsZSBpbiBhIGZvci1sb29wIG9yIHRoYXQgY2FuIGJlIHJldHJpZXZlZCBvbmUgYXQgYSB0aW1lIHdpdGgKLSAgICAgIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24uIEVhY2ggOmtleXdvcmQ6YHlpZWxkYCB0ZW1wb3JhcmlseSBzdXNwZW5kcwotICAgICAgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlIGxvY2F0aW9uIGV4ZWN1dGlvbiBzdGF0ZSAoaW5jbHVkaW5nIGxvY2FsCi0gICAgICB2YXJpYWJsZXMgYW5kIHBlbmRpbmcgdHJ5LXN0YXRlbWVudHMpLiAgV2hlbiB0aGUgZ2VuZXJhdG9yIHJlc3VtZXMsIGl0Ci0gICAgICBwaWNrcy11cCB3aGVyZSBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uCi0gICAgICBldmVyeSBpbnZvY2F0aW9uKS4KKyAgICAgIEEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhIDp0ZXJtOmBnZW5lcmF0b3IgaXRlcmF0b3JgLiAgSXQgbG9va3MgbGlrZSBhCisgICAgICBub3JtYWwgZnVuY3Rpb24gZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucworICAgICAgZm9yIHByb2R1Y2luZyBhIHNlcmllcyBvZiB2YWx1ZXMgdXNhYmxlIGluIGEgZm9yLWxvb3Agb3IgdGhhdCBjYW4gYmUKKyAgICAgIHJldHJpZXZlZCBvbmUgYXQgYSB0aW1lIHdpdGggdGhlIDpmdW5jOmBuZXh0YCBmdW5jdGlvbi4KKworICAgICAgVXN1YWxseSByZWZlcnMgdG8gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGJ1dCBtYXkgcmVmZXIgdG8gYQorICAgICAgKmdlbmVyYXRvciBpdGVyYXRvciogaW4gc29tZSBjb250ZXh0cy4gIEluIGNhc2VzIHdoZXJlIHRoZSBpbnRlbmRlZAorICAgICAgbWVhbmluZyBpc24ndCBjbGVhciwgdXNpbmcgdGhlIGZ1bGwgdGVybXMgYXZvaWRzIGFtYmlndWl0eS4KKworICAgZ2VuZXJhdG9yIGl0ZXJhdG9yCisgICAgICBBbiBvYmplY3QgY3JlYXRlZCBieSBhIDp0ZXJtOmBnZW5lcmF0b3JgIGZ1bmN0aW9uLgorCisgICAgICBFYWNoIDprZXl3b3JkOmB5aWVsZGAgdGVtcG9yYXJpbHkgc3VzcGVuZHMgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlCisgICAgICBsb2NhdGlvbiBleGVjdXRpb24gc3RhdGUgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMgYW5kIHBlbmRpbmcKKyAgICAgIHRyeS1zdGF0ZW1lbnRzKS4gIFdoZW4gdGhlICpnZW5lcmF0b3IgaXRlcmF0b3IqIHJlc3VtZXMsIGl0IHBpY2tzLXVwIHdoZXJlCisgICAgICBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uIGV2ZXJ5CisgICAgICBpbnZvY2F0aW9uKS4KIAogICAgICAgLi4gaW5kZXg6OiBzaW5nbGU6IGdlbmVyYXRvciBleHByZXNzaW9uCiAKQEAgLTQwMiw2ICs0NjksMTkgQEAKICAgICAgIHRoYW4gY29tcGlsZWQgb25lcywgdGhvdWdoIHRoZWlyIHByb2dyYW1zIGdlbmVyYWxseSBhbHNvIHJ1biBtb3JlCiAgICAgICBzbG93bHkuICBTZWUgYWxzbyA6dGVybTpgaW50ZXJhY3RpdmVgLgogCisgICBpbnRlcnByZXRlciBzaHV0ZG93bgorICAgICAgV2hlbiBhc2tlZCB0byBzaHV0IGRvd24sIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZW50ZXJzIGEgc3BlY2lhbCBwaGFzZQorICAgICAgd2hlcmUgaXQgZ3JhZHVhbGx5IHJlbGVhc2VzIGFsbCBhbGxvY2F0ZWQgcmVzb3VyY2VzLCBzdWNoIGFzIG1vZHVsZXMKKyAgICAgIGFuZCB2YXJpb3VzIGNyaXRpY2FsIGludGVybmFsIHN0cnVjdHVyZXMuICBJdCBhbHNvIG1ha2VzIHNldmVyYWwgY2FsbHMKKyAgICAgIHRvIHRoZSA6dGVybTpgZ2FyYmFnZSBjb2xsZWN0b3IgPGdhcmJhZ2UgY29sbGVjdGlvbj5gLiBUaGlzIGNhbiB0cmlnZ2VyCisgICAgICB0aGUgZXhlY3V0aW9uIG9mIGNvZGUgaW4gdXNlci1kZWZpbmVkIGRlc3RydWN0b3JzIG9yIHdlYWtyZWYgY2FsbGJhY2tzLgorICAgICAgQ29kZSBleGVjdXRlZCBkdXJpbmcgdGhlIHNodXRkb3duIHBoYXNlIGNhbiBlbmNvdW50ZXIgdmFyaW91cworICAgICAgZXhjZXB0aW9ucyBhcyB0aGUgcmVzb3VyY2VzIGl0IHJlbGllcyBvbiBtYXkgbm90IGZ1bmN0aW9uIGFueW1vcmUKKyAgICAgIChjb21tb24gZXhhbXBsZXMgYXJlIGxpYnJhcnkgbW9kdWxlcyBvciB0aGUgd2FybmluZ3MgbWFjaGluZXJ5KS4KKworICAgICAgVGhlIG1haW4gcmVhc29uIGZvciBpbnRlcnByZXRlciBzaHV0ZG93biBpcyB0aGF0IHRoZSBgYF9fbWFpbl9fYGAgbW9kdWxlCisgICAgICBvciB0aGUgc2NyaXB0IGJlaW5nIHJ1biBoYXMgZmluaXNoZWQgZXhlY3V0aW5nLgorCiAgICBpdGVyYWJsZQogICAgICAgQW4gb2JqZWN0IGNhcGFibGUgb2YgcmV0dXJuaW5nIGl0cyBtZW1iZXJzIG9uZSBhdCBhIHRpbWUuIEV4YW1wbGVzIG9mCiAgICAgICBpdGVyYWJsZXMgaW5jbHVkZSBhbGwgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgOmNsYXNzOmBsaXN0YCwgOmNsYXNzOmBzdHJgLApAQCAtNDQ0LDEyICs1MjQsMTMgQEAKIAogICAgICAgQSBudW1iZXIgb2YgdG9vbHMgaW4gUHl0aG9uIGFjY2VwdCBrZXkgZnVuY3Rpb25zIHRvIGNvbnRyb2wgaG93IGVsZW1lbnRzCiAgICAgICBhcmUgb3JkZXJlZCBvciBncm91cGVkLiAgVGhleSBpbmNsdWRlIDpmdW5jOmBtaW5gLCA6ZnVuYzpgbWF4YCwKLSAgICAgIDpmdW5jOmBzb3J0ZWRgLCA6bWV0aDpgbGlzdC5zb3J0YCwgOmZ1bmM6YGhlYXBxLm5zbWFsbGVzdGAsCi0gICAgICA6ZnVuYzpgaGVhcHEubmxhcmdlc3RgLCBhbmQgOmZ1bmM6YGl0ZXJ0b29scy5ncm91cGJ5YC4KKyAgICAgIDpmdW5jOmBzb3J0ZWRgLCA6bWV0aDpgbGlzdC5zb3J0YCwgOmZ1bmM6YGhlYXBxLm1lcmdlYCwKKyAgICAgIDpmdW5jOmBoZWFwcS5uc21hbGxlc3RgLCA6ZnVuYzpgaGVhcHEubmxhcmdlc3RgLCBhbmQKKyAgICAgIDpmdW5jOmBpdGVydG9vbHMuZ3JvdXBieWAuCiAKICAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gY3JlYXRlIGEga2V5IGZ1bmN0aW9uLiAgRm9yIGV4YW1wbGUuIHRoZQogICAgICAgOm1ldGg6YHN0ci5sb3dlcmAgbWV0aG9kIGNhbiBzZXJ2ZSBhcyBhIGtleSBmdW5jdGlvbiBmb3IgY2FzZSBpbnNlbnNpdGl2ZQotICAgICAgc29ydHMuICBBbHRlcm5hdGl2ZWx5LCBhbiBhZC1ob2Mga2V5IGZ1bmN0aW9uIGNhbiBiZSBidWlsdCBmcm9tIGEKKyAgICAgIHNvcnRzLiAgQWx0ZXJuYXRpdmVseSwgYSBrZXkgZnVuY3Rpb24gY2FuIGJlIGJ1aWx0IGZyb20gYQogICAgICAgOmtleXdvcmQ6YGxhbWJkYWAgZXhwcmVzc2lvbiBzdWNoIGFzIGBgbGFtYmRhIHI6IChyWzBdLCByWzJdKWBgLiAgQWxzbywKICAgICAgIHRoZSA6bW9kOmBvcGVyYXRvcmAgbW9kdWxlIHByb3ZpZGVzIHRocmVlIGtleSBmdW5jdGlvbiBjb25zdHJ1Y3RvcnM6CiAgICAgICA6ZnVuYzpgfm9wZXJhdG9yLmF0dHJnZXR0ZXJgLCA6ZnVuYzpgfm9wZXJhdG9yLml0ZW1nZXR0ZXJgLCBhbmQKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9jbGluaWMucnN0IGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKaW5kZXggZTM2MjYzMS4uNzUyNGM0YSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2NsaW5pYy5yc3QKKysrIGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKQEAgLTc1OCw2ICs3NTgsMTQgQEAKIEluIGFkZGl0aW9uLCBzb21lIGNvbnZlcnRlcnMgYWNjZXB0IGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSGVyZSBpcyBhIGxpc3QKIG9mIHRoZXNlIGFyZ3VtZW50cywgYWxvbmcgd2l0aCB0aGVpciBtZWFuaW5nczoKIAorICBgYGFjY2VwdGBgCisgICAgQSBzZXQgb2YgUHl0aG9uIHR5cGVzIChhbmQgcG9zc2libHkgcHNldWRvLXR5cGVzKTsKKyAgICB0aGlzIHJlc3RyaWN0cyB0aGUgYWxsb3dhYmxlIFB5dGhvbiBhcmd1bWVudCB0byB2YWx1ZXMgb2YgdGhlc2UgdHlwZXMuCisgICAgKFRoaXMgaXMgbm90IGEgZ2VuZXJhbC1wdXJwb3NlIGZhY2lsaXR5OyBhcyBhIHJ1bGUgaXQgb25seSBzdXBwb3J0cworICAgIHNwZWNpZmljIGxpc3RzIG9mIHR5cGVzIGFzIHNob3duIGluIHRoZSBsZWdhY3kgY29udmVydGVyIHRhYmxlLikKKworICAgIFRvIGFjY2VwdCBgYE5vbmVgYCwgYWRkIGBgTm9uZVR5cGVgYCB0byB0aGlzIHNldC4KKwogICBgYGJpdHdpc2VgYAogICAgIE9ubHkgc3VwcG9ydGVkIGZvciB1bnNpZ25lZCBpbnRlZ2Vycy4gIFRoZSBuYXRpdmUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzCiAgICAgUHl0aG9uIGFyZ3VtZW50IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgcGFyYW1ldGVyIHdpdGhvdXQgYW55IHJhbmdlIGNoZWNraW5nLApAQCAtNzcyLDM5ICs3ODAsMjcgQEAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIFNwZWNpZmllcyB0aGUgZW5jb2RpbmcgdG8gdXNlIHdoZW4gY29udmVydGluZwogICAgIHRoaXMgc3RyaW5nIGZyb20gYSBQeXRob24gc3RyIChVbmljb2RlKSB2YWx1ZSBpbnRvIGEgQyBgYGNoYXIgKmBgIHZhbHVlLgogCi0gIGBgbGVuZ3RoYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIHJlcXVlc3RzIHRoYXQgdGhlIGxlbmd0aCBvZiB0aGUKLSAgICBzdHJpbmcgYmUgcGFzc2VkIGluIHRvIHRoZSBpbXBsIGZ1bmN0aW9uLCBqdXN0IGFmdGVyIHRoZSBzdHJpbmcgcGFyYW1ldGVyLAotICAgIGluIGEgcGFyYW1ldGVyIG5hbWVkIGBgPHBhcmFtZXRlcl9uYW1lPl9sZW5ndGhgYC4KLQotICBgYG51bGxhYmxlYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3Igc3RyaW5ncy4gIElmIHRydWUsIHRoaXMgcGFyYW1ldGVyIG1heSBhbHNvIGJlIHNldCB0bwotICAgIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBDIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byBgYE5VTExgYC4KIAogICBgYHN1YmNsYXNzX29mYGAKICAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIGBgb2JqZWN0YGAgY29udmVydGVyLiAgUmVxdWlyZXMgdGhhdCB0aGUgUHl0aG9uCiAgICAgdmFsdWUgYmUgYSBzdWJjbGFzcyBvZiBhIFB5dGhvbiB0eXBlLCBhcyBleHByZXNzZWQgaW4gQy4KIAotICBgYHR5cGVzYGAKLSAgICBPbmx5IHN1cHBvcnRlZCBmb3IgdGhlIGBgb2JqZWN0YGAgKGFuZCBgYHNlbGZgYCkgY29udmVydGVyLiAgU3BlY2lmaWVzCisgIGBgdHlwZWBgCisgICAgT25seSBzdXBwb3J0ZWQgZm9yIHRoZSBgYG9iamVjdGBgIGFuZCBgYHNlbGZgYCBjb252ZXJ0ZXJzLiAgU3BlY2lmaWVzCiAgICAgdGhlIEMgdHlwZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBkZWNsYXJlIHRoZSB2YXJpYWJsZS4gIERlZmF1bHQgdmFsdWUgaXMKICAgICBgYCJQeU9iamVjdCAqImBgLgogCi0gIGBgdHlwZXNgYAotICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgYSBsaXN0IG9mIFB5dGhvbiB0eXBlcyAoYW5kIHBvc3NpYmx5IHBzZXVkby10eXBlcyk7Ci0gICAgdGhpcyByZXN0cmljdHMgdGhlIGFsbG93YWJsZSBQeXRob24gYXJndW1lbnQgdG8gdmFsdWVzIG9mIHRoZXNlIHR5cGVzLgotICAgIChUaGlzIGlzIG5vdCBhIGdlbmVyYWwtcHVycG9zZSBmYWNpbGl0eTsgYXMgYSBydWxlIGl0IG9ubHkgc3VwcG9ydHMKLSAgICBzcGVjaWZpYyBsaXN0cyBvZiB0eXBlcyBhcyBzaG93biBpbiB0aGUgbGVnYWN5IGNvbnZlcnRlciB0YWJsZS4pCi0KICAgYGB6ZXJvZXNgYAogICAgIE9ubHkgc3VwcG9ydGVkIGZvciBzdHJpbmdzLiAgSWYgdHJ1ZSwgZW1iZWRkZWQgTlVMIGJ5dGVzIChgYCdcXDAnYGApIGFyZQotICAgIHBlcm1pdHRlZCBpbnNpZGUgdGhlIHZhbHVlLgorICAgIHBlcm1pdHRlZCBpbnNpZGUgdGhlIHZhbHVlLiAgVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHdpbGwgYmUgcGFzc2VkIGluCisgICAgdG8gdGhlIGltcGwgZnVuY3Rpb24sIGp1c3QgYWZ0ZXIgdGhlIHN0cmluZyBwYXJhbWV0ZXIsIGFzIGEgcGFyYW1ldGVyIG5hbWVkCisgICAgYGA8cGFyYW1ldGVyX25hbWU+X2xlbmd0aGBgLgogCiBQbGVhc2Ugbm90ZSwgbm90IGV2ZXJ5IHBvc3NpYmxlIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyB3aWxsIHdvcmsuCi1PZnRlbiB0aGVzZSBhcmd1bWVudHMgYXJlIGltcGxlbWVudGVkIGludGVybmFsbHkgYnkgc3BlY2lmaWMgYGBQeUFyZ19QYXJzZVR1cGxlYGAKK1VzdWFsbHkgdGhlc2UgYXJndW1lbnRzIGFyZSBpbXBsZW1lbnRlZCBieSBzcGVjaWZpYyBgYFB5QXJnX1BhcnNlVHVwbGVgYAogKmZvcm1hdCB1bml0cyosIHdpdGggc3BlY2lmaWMgYmVoYXZpb3IuICBGb3IgZXhhbXBsZSwgY3VycmVudGx5IHlvdSBjYW5ub3QKLWNhbGwgYGBzdHJgYCBhbmQgcGFzcyBpbiBgYHplcm9lcz1UcnVlYGAgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgYW4gYGBlbmNvZGluZ2BgOwotYWx0aG91Z2ggaXQncyBwZXJmZWN0bHkgcmVhc29uYWJsZSB0byB0aGluayB0aGlzIHdvdWxkIHdvcmssIHRoZXNlIHNlbWFudGljcyBkb24ndAorY2FsbCBgYHVuc2lnbmVkX3Nob3J0YGAgd2l0aG91dCBhbHNvIHNwZWNpZnlpbmcgYGBiaXR3aXNlPVRydWVgYC4KK0FsdGhvdWdoIGl0J3MgcGVyZmVjdGx5IHJlYXNvbmFibGUgdG8gdGhpbmsgdGhpcyB3b3VsZCB3b3JrLCB0aGVzZSBzZW1hbnRpY3MgZG9uJ3QKIG1hcCB0byBhbnkgZXhpc3RpbmcgZm9ybWF0IHVuaXQuICBTbyBBcmd1bWVudCBDbGluaWMgZG9lc24ndCBzdXBwb3J0IGl0LiAgKE9yLCBhdAogbGVhc3QsIG5vdCB5ZXQuKQogCkBAIC04MTYsMTMgKzgxMiwxMyBAQAogYGAnQidgYCAgICAgYGB1bnNpZ25lZF9jaGFyKGJpdHdpc2U9VHJ1ZSlgYAogYGAnYidgYCAgICAgYGB1bnNpZ25lZF9jaGFyYGAKIGBgJ2MnYGAgICAgIGBgY2hhcmBgCi1gYCdDJ2BgICAgICBgYGludCh0eXBlcz0nc3RyJylgYAorYGAnQydgYCAgICAgYGBpbnQoYWNjZXB0PXtzdHJ9KWBgCiBgYCdkJ2BgICAgICBgYGRvdWJsZWBgCiBgYCdEJ2BgICAgICBgYFB5X2NvbXBsZXhgYAotYGAnZXMjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCBsZW5ndGg9VHJ1ZSwgemVyb2VzPVRydWUpYGAKIGBgJ2VzJ2BgICAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJylgYAotYGAnZXQjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB0eXBlcz0nYnl0ZXMgYnl0ZWFycmF5IHN0cicsIGxlbmd0aD1UcnVlKWBgCi1gYCdldCdgYCAgICBgYHN0cihlbmNvZGluZz0nbmFtZV9vZl9lbmNvZGluZycsIHR5cGVzPSdieXRlcyBieXRlYXJyYXkgc3RyJylgYAorYGAnZXMjJ2BgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCB6ZXJvZXM9VHJ1ZSlgYAorYGAnZXQnYGAgICAgYGBzdHIoZW5jb2Rpbmc9J25hbWVfb2ZfZW5jb2RpbmcnLCBhY2NlcHQ9e2J5dGVzLCBieXRlYXJyYXksIHN0cn0pYGAKK2BgJ2V0IydgYCAgIGBgc3RyKGVuY29kaW5nPSduYW1lX29mX2VuY29kaW5nJywgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9LCB6ZXJvZXM9VHJ1ZSlgYAogYGAnZidgYCAgICAgYGBmbG9hdGBgCiBgYCdoJ2BgICAgICBgYHNob3J0YGAKIGBgJ0gnYGAgICAgIGBgdW5zaWduZWRfc2hvcnQoYml0d2lzZT1UcnVlKWBgCkBAIC04MzAsMjkgKzgyNiwzMCBAQAogYGAnSSdgYCAgICAgYGB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKWBgCiBgYCdrJ2BgICAgICBgYHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKWBgCiBgYCdLJ2BgICAgICBgYHVuc2lnbmVkX1BZX0xPTkdfTE9ORyhiaXR3aXNlPVRydWUpYGAKK2BgJ2wnYGAgICAgIGBgbG9uZ2BgCiBgYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAorYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYAogYGAnTyYnYGAgICAgYGBvYmplY3QoY29udmVydGVyPSduYW1lX29mX2NfZnVuY3Rpb24nKWBgCi1gYCdPJ2BgICAgICBgYG9iamVjdGBgCiBgYCdwJ2BgICAgICBgYGJvb2xgYAotYGAncyMnYGAgICAgYGBzdHIobGVuZ3RoPVRydWUpYGAKIGBgJ1MnYGAgICAgIGBgUHlCeXRlc09iamVjdGBgCiBgYCdzJ2BgICAgICBgYHN0cmBgCi1gYCdzKidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInKWBgCi1gYCd1IydgYCAgICBgYFB5X1VOSUNPREUobGVuZ3RoPVRydWUpYGAKLWBgJ3UnYGAgICAgIGBgUHlfVU5JQ09ERWBgCitgYCdzIydgYCAgICBgYHN0cih6ZXJvZXM9VHJ1ZSlgYAorYGAncyonYGAgICAgYGBQeV9idWZmZXIoYWNjZXB0PXtidWZmZXIsIHN0cn0pYGAKIGBgJ1UnYGAgICAgIGBgdW5pY29kZWBgCi1gYCd3KidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nYnl0ZWFycmF5IHJ3YnVmZmVyJylgYAotYGAneSMnYGAgICAgYGBzdHIodHlwZXM9J2J5dGVzJywgbGVuZ3RoPVRydWUpYGAKK2BgJ3UnYGAgICAgIGBgUHlfVU5JQ09ERWBgCitgYCd1IydgYCAgICBgYFB5X1VOSUNPREUoemVyb2VzPVRydWUpYGAKK2BgJ3cqJ2BgICAgIGBgUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KWBgCiBgYCdZJ2BgICAgICBgYFB5Qnl0ZUFycmF5T2JqZWN0YGAKLWBgJ3knYGAgICAgIGBgc3RyKHR5cGVzPSdieXRlcycpYGAKK2BgJ3knYGAgICAgIGBgc3RyKGFjY2VwdD17Ynl0ZXN9KWBgCitgYCd5IydgYCAgICBgYHN0cihhY2NlcHQ9e3JvYnVmZmVyfSwgemVyb2VzPVRydWUpYGAKIGBgJ3kqJ2BgICAgIGBgUHlfYnVmZmVyYGAKLWBgJ1ojJ2BgICAgIGBgUHlfVU5JQ09ERShudWxsYWJsZT1UcnVlLCBsZW5ndGg9VHJ1ZSlgYAotYGAneiMnYGAgICAgYGBzdHIobnVsbGFibGU9VHJ1ZSwgbGVuZ3RoPVRydWUpYGAKLWBgJ1onYGAgICAgIGBgUHlfVU5JQ09ERShudWxsYWJsZT1UcnVlKWBgCi1gYCd6J2BgICAgICBgYHN0cihudWxsYWJsZT1UcnVlKWBgCi1gYCd6KidgYCAgICBgYFB5X2J1ZmZlcih0eXBlcz0nc3RyIGJ5dGVzIGJ5dGVhcnJheSBidWZmZXInLCBudWxsYWJsZT1UcnVlKWBgCitgYCdaJ2BgICAgICBgYFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSlgYAorYGAnWiMnYGAgICAgYGBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0sIHplcm9lcz1UcnVlKWBgCitgYCd6J2BgICAgICBgYHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KWBgCitgYCd6IydgYCAgICBgYHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9LCB6ZXJvZXM9VHJ1ZSlgYAorYGAneionYGAgICAgYGBQeV9idWZmZXIoYWNjZXB0PXtidWZmZXIsIHN0ciwgTm9uZVR5cGV9KWBgCiA9PT09PT09PT0gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQXMgYW4gZXhhbXBsZSwgaGVyZSdzIG91ciBzYW1wbGUgYGBwaWNrbGUuUGlja2xlci5kdW1wYGAgdXNpbmcgdGhlIHByb3BlcgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0IGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CmluZGV4IDE5NjliMzIuLjk0NWEyNDAgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAorKysgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKQEAgLTQ4MSwxMCArNDgxLDEwIEBACiBZb3UgY291bGQgZXF1YWxseSB3cml0ZSBgYGZvciBpIGluIGdlbmVyYXRlX2ludHMoNSlgYCwgb3IgYGBhLGIsYyA9CiBnZW5lcmF0ZV9pbnRzKDMpYGAuCiAKLUluc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bwotYGByYWlzZSBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgLiAgSWYgbm8gdmFsdWUgaXMgcmV0dXJuZWQgb3IgdGhlIGJvdHRvbSBvZiB0aGUKLWZ1bmN0aW9uIGlzIHJlYWNoZWQsIHRoZSBwcm9jZXNzaW9uIG9mIHZhbHVlcyBlbmRzIGFuZCB0aGUgZ2VuZXJhdG9yIGNhbm5vdAotcmV0dXJuIGFueSBmdXJ0aGVyIHZhbHVlcy4KK0luc2lkZSBhIGdlbmVyYXRvciBmdW5jdGlvbiwgYGByZXR1cm4gdmFsdWVgYCBjYXVzZXMgYGBTdG9wSXRlcmF0aW9uKHZhbHVlKWBgCit0byBiZSByYWlzZWQgZnJvbSB0aGUgOm1ldGg6YH5nZW5lcmF0b3IuX19uZXh0X19gIG1ldGhvZC4gIE9uY2UgdGhpcyBoYXBwZW5zLCBvcgordGhlIGJvdHRvbSBvZiB0aGUgZnVuY3Rpb24gaXMgcmVhY2hlZCwgdGhlIHByb2Nlc3Npb24gb2YgdmFsdWVzIGVuZHMgYW5kIHRoZQorZ2VuZXJhdG9yIGNhbm5vdCB5aWVsZCBhbnkgZnVydGhlciB2YWx1ZXMuCiAKIFlvdSBjb3VsZCBhY2hpZXZlIHRoZSBlZmZlY3Qgb2YgZ2VuZXJhdG9ycyBtYW51YWxseSBieSB3cml0aW5nIHlvdXIgb3duIGNsYXNzCiBhbmQgc3RvcmluZyBhbGwgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZ2VuZXJhdG9yIGFzIGluc3RhbmNlIHZhcmlhYmxlcy4gIEZvcgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0IGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CmluZGV4IDYzMDVkMjQuLjgxM2JjMGYgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAorKysgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKQEAgLTMyNSw2ICszMjUsMTUgQEAKIAogICAgIE1haW5UaHJlYWQ6IExvb2sgb3V0IQogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgUHJpb3IgdG8gUHl0aG9uIDMuNSwgdGhlIDpjbGFzczpgUXVldWVMaXN0ZW5lcmAgYWx3YXlzIHBhc3NlZCBldmVyeSBtZXNzYWdlCisgICByZWNlaXZlZCBmcm9tIHRoZSBxdWV1ZSB0byBldmVyeSBoYW5kbGVyIGl0IHdhcyBpbml0aWFsaXplZCB3aXRoLiAoVGhpcyB3YXMKKyAgIGJlY2F1c2UgaXQgd2FzIGFzc3VtZWQgdGhhdCBsZXZlbCBmaWx0ZXJpbmcgd2FzIGFsbCBkb25lIG9uIHRoZSBvdGhlciBzaWRlLAorICAgd2hlcmUgdGhlIHF1ZXVlIGlzIGZpbGxlZC4pIEZyb20gMy41IG9ud2FyZHMsIHRoaXMgYmVoYXZpb3VyIGNhbiBiZSBjaGFuZ2VkCisgICBieSBwYXNzaW5nIGEga2V5d29yZCBhcmd1bWVudCBgYHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1UcnVlYGAgdG8gdGhlCisgICBsaXN0ZW5lcidzIGNvbnN0cnVjdG9yLiBXaGVuIHRoaXMgaXMgZG9uZSwgdGhlIGxpc3RlbmVyIGNvbXBhcmVzIHRoZSBsZXZlbAorICAgb2YgZWFjaCBtZXNzYWdlIHdpdGggdGhlIGhhbmRsZXIncyBsZXZlbCwgYW5kIG9ubHkgcGFzc2VzIGEgbWVzc2FnZSB0byBhCisgICBoYW5kbGVyIGlmIGl0J3MgYXBwcm9wcmlhdGUgdG8gZG8gc28uCiAKIC4uIF9uZXR3b3JrLWxvZ2dpbmc6CiAKQEAgLTE2ODAsNyArMTY4OSw3IEBACiAKICAgICBkZWYgbWFpbigpOgogICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSclKG1lc3NhZ2UpcycpCi0gICAgICAgIGxvZ2dpbmcuaW5mbyhfKCdtZXNzYWdlIDEnLCBzZXRfdmFsdWU9c2V0KFsxLCAyLCAzXSksIHNub3dtYW49J1x1MjYwMycpKQorICAgICAgICBsb2dnaW5nLmluZm8oXygnbWVzc2FnZSAxJywgc2V0X3ZhbHVlPXsxLCAyLCAzfSwgc25vd21hbj0nXHUyNjAzJykpCiAKICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9weXBvcnRpbmcucnN0IGIvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKaW5kZXggNWU4NzVjZC4uYTJhYWYzNiAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKKysrIGIvRG9jL2hvd3RvL3B5cG9ydGluZy5yc3QKQEAgLTIwNywxMyArMjA3LDEyIEBACiB0YWJsZSBsaXN0cyB0aGUgKip1bmlxdWUqKiBtZXRob2RzIG9mIGVhY2ggZGF0YSB0eXBlIGFjcm9zcyBQeXRob24gMiAmIDMKIChlLmcuLCB0aGUgYGBkZWNvZGUoKWBgIG1ldGhvZCBpcyB1c2FibGUgb24gdGhlIGVxdWl2YWxlbnQgYmluYXJ5IGRhdGEgdHlwZSBpbgogZWl0aGVyIFB5dGhvbiAyIG9yIDMsIGJ1dCBpdCBjYW4ndCBiZSB1c2VkIGJ5IHRoZSB0ZXh0IGRhdGEgdHlwZSBjb25zaXN0ZW50bHkKLWJldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4KK2JldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4gRG8KK25vdGUgdGhhdCBhcyBvZiBQeXRob24gMy41IHRoZSBgYF9fbW9kX19gYCBtZXRob2Qgd2FzIGFkZGVkIHRvIHRoZSBieXRlcyB0eXBlLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09CiAqKlRleHQgZGF0YSoqICAgICAgICAgICAgKipCaW5hcnkgZGF0YSoqCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1fX21vZF9fIChgYCVgYCBvcGVyYXRvcikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFwgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGVuY29kZQpAQCAtMzQ4LDEwICszNDcsMTIgQEAKIFB5dGhvbiAyIG9yIDMgc3VwcG9ydC4KIAogWW91IG1heSBhbHNvIHdhbnQgdG8gdXNlIHVzZSB0aGUgYGAtYmJgYCBmbGFnIHdpdGggdGhlIFB5dGhvbiAzIGludGVycHJldGVyIHRvCi10cmlnZ2VyIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhcmUgY29tcGFyaW5nIGJ5dGVzIHRvIHN0cmluZ3MuIFVzdWFsbHkgaXQncwotc2ltcGx5IGBgRmFsc2VgYCwgYnV0IGlmIHlvdSBtYWRlIGEgbWlzdGFrZSBpbiB5b3VyIHNlcGFyYXRpb24gb2YgdGV4dC9iaW5hcnkKLWRhdGEgaGFuZGxpbmcgeW91IG1heSBiZSBhY2NpZGVudGFsbHkgY29tcGFyaW5nIHRleHQgYW5kIGJpbmFyeSBkYXRhLiBUaGlzIGZsYWcKLXdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhhdCBvY2N1cnMgdG8gaGVscCB0cmFjayBkb3duIHN1Y2ggY2FzZXMuCit0cmlnZ2VyIGFuIGV4Y2VwdGlvbiB3aGVuIHlvdSBhcmUgY29tcGFyaW5nIGJ5dGVzIHRvIHN0cmluZ3Mgb3IgYnl0ZXMgdG8gYW4gaW50CisodGhlIGxhdHRlciBpcyBhdmFpbGFibGUgc3RhcnRpbmcgaW4gUHl0aG9uIDMuNSkuIEJ5IGRlZmF1bHQgdHlwZS1kaWZmZXJpbmcKK2NvbXBhcmlzb25zIHNpbXBseSByZXR1cm4gYGBGYWxzZWBgLCBidXQgaWYgeW91IG1hZGUgYSBtaXN0YWtlIGluIHlvdXIKK3NlcGFyYXRpb24gb2YgdGV4dC9iaW5hcnkgZGF0YSBoYW5kbGluZyBvciBpbmRleGluZyBvbiBieXRlcyB5b3Ugd291bGRuJ3QgZWFzaWx5CitmaW5kIHRoZSBtaXN0YWtlLiBUaGlzIGZsYWcgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGVzZSBraW5kcyBvZgorY29tcGFyaXNvbnMgb2NjdXIsIG1ha2luZyB0aGUgbWlzdGFrZSBtdWNoIGVhc2llciB0byB0cmFjayBkb3duLgogCiBBbmQgdGhhdCdzIG1vc3RseSBpdCEgQXQgdGhpcyBwb2ludCB5b3VyIGNvZGUgYmFzZSBpcyBjb21wYXRpYmxlIHdpdGggYm90aAogUHl0aG9uIDIgYW5kIDMgc2ltdWx0YW5lb3VzbHkuIFlvdXIgdGVzdGluZyB3aWxsIGFsc28gYmUgc2V0IHVwIHNvIHRoYXQgeW91CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vcmVnZXgucnN0IGIvRG9jL2hvd3RvL3JlZ2V4LnJzdAppbmRleCA5YWUwNGQ3Li5hZDJjNmFiIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vcmVnZXgucnN0CisrKyBiL0RvYy9ob3d0by9yZWdleC5yc3QKQEAgLTExMzgsNyArMTEzOCw3IEBACiAKIElmICpyZXBsYWNlbWVudCogaXMgYSBzdHJpbmcsIGFueSBiYWNrc2xhc2ggZXNjYXBlcyBpbiBpdCBhcmUgcHJvY2Vzc2VkLiAgVGhhdAogaXMsIGBgXG5gYCBpcyBjb252ZXJ0ZWQgdG8gYSBzaW5nbGUgbmV3bGluZSBjaGFyYWN0ZXIsIGBgXHJgYCBpcyBjb252ZXJ0ZWQgdG8gYQotY2FycmlhZ2UgcmV0dXJuLCBhbmQgc28gZm9ydGguIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXGpgYCBhcmUgbGVmdCBhbG9uZS4KK2NhcnJpYWdlIHJldHVybiwgYW5kIHNvIGZvcnRoLiBVbmtub3duIGVzY2FwZXMgc3VjaCBhcyBgYFwmYGAgYXJlIGxlZnQgYWxvbmUuCiBCYWNrcmVmZXJlbmNlcywgc3VjaCBhcyBgYFw2YGAsIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSB0aGUKIGNvcnJlc3BvbmRpbmcgZ3JvdXAgaW4gdGhlIFJFLiAgVGhpcyBsZXRzIHlvdSBpbmNvcnBvcmF0ZSBwb3J0aW9ucyBvZiB0aGUKIG9yaWdpbmFsIHRleHQgaW4gdGhlIHJlc3VsdGluZyByZXBsYWNlbWVudCBzdHJpbmcuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdW5pY29kZS5yc3QgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKaW5kZXggYjQ5YWMzOS4uZWUzMWE5YyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0CisrKyBiL0RvYy9ob3d0by91bmljb2RlLnJzdApAQCAtMjgwLDggKzI4MCw5IEBACiBUaGUgKmVycm9ycyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSByZXNwb25zZSB3aGVuIHRoZSBpbnB1dCBzdHJpbmcgY2FuJ3QgYmUKIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIGVuY29kaW5nJ3MgcnVsZXMuICBMZWdhbCB2YWx1ZXMgZm9yIHRoaXMgYXJndW1lbnQgYXJlCiBgYCdzdHJpY3QnYGAgKHJhaXNlIGEgOmV4YzpgVW5pY29kZURlY29kZUVycm9yYCBleGNlcHRpb24pLCBgYCdyZXBsYWNlJ2BgICh1c2UKLWBgVStGRkZEYGAsIGBgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSYGApLCBvciBgYCdpZ25vcmUnYGAgKGp1c3QgbGVhdmUgdGhlCi1jaGFyYWN0ZXIgb3V0IG9mIHRoZSBVbmljb2RlIHJlc3VsdCkuCitgYFUrRkZGRGBgLCBgYFJFUExBQ0VNRU5UIENIQVJBQ1RFUmBgKSwgYGAnaWdub3JlJ2BgIChqdXN0IGxlYXZlIHRoZQorY2hhcmFjdGVyIG91dCBvZiB0aGUgVW5pY29kZSByZXN1bHQpLCBvciBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIChpbnNlcnRzIGEKK2BgXHhOTmBgIGVzY2FwZSBzZXF1ZW5jZSkuCiBUaGUgZm9sbG93aW5nIGV4YW1wbGVzIHNob3cgdGhlIGRpZmZlcmVuY2VzOjoKIAogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAic3RyaWN0IikgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTI5MSw2ICsyOTIsOCBAQAogICAgICAgaW52YWxpZCBzdGFydCBieXRlCiAgICAgPj4+IGInXHg4MGFiYycuZGVjb2RlKCJ1dGYtOCIsICJyZXBsYWNlIikKICAgICAnXHVmZmZkYWJjJworICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAiYmFja3NsYXNocmVwbGFjZSIpCisgICAgJ1xceDgwYWJjJwogICAgID4+PiBiJ1x4ODBhYmMnLmRlY29kZSgidXRmLTgiLCAiaWdub3JlIikKICAgICAnYWJjJwogCkBAIC0zMjUsOCArMzI4LDkgQEAKIDptZXRoOmB+Ynl0ZXMuZGVjb2RlYCBtZXRob2QgYnV0IHN1cHBvcnRzIGEgZmV3IG1vcmUgcG9zc2libGUgaGFuZGxlcnMuIEFzIHdlbGwgYXMKIGBgJ3N0cmljdCdgYCwgYGAnaWdub3JlJ2BgLCBhbmQgYGAncmVwbGFjZSdgYCAod2hpY2ggaW4gdGhpcyBjYXNlCiBpbnNlcnRzIGEgcXVlc3Rpb24gbWFyayBpbnN0ZWFkIG9mIHRoZSB1bmVuY29kYWJsZSBjaGFyYWN0ZXIpLCB0aGVyZSBpcwotYWxzbyBgYCd4bWxjaGFycmVmcmVwbGFjZSdgYCAoaW5zZXJ0cyBhbiBYTUwgY2hhcmFjdGVyIHJlZmVyZW5jZSkgYW5kCi1gYGJhY2tzbGFzaHJlcGxhY2VgYCAoaW5zZXJ0cyBhIGBgXHVOTk5OYGAgZXNjYXBlIHNlcXVlbmNlKS4KK2Fsc28gYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAgKGluc2VydHMgYW4gWE1MIGNoYXJhY3RlciByZWZlcmVuY2UpLAorYGBiYWNrc2xhc2hyZXBsYWNlYGAgKGluc2VydHMgYSBgYFx1Tk5OTmBgIGVzY2FwZSBzZXF1ZW5jZSkgYW5kCitgYG5hbWVyZXBsYWNlYGAgKGluc2VydHMgYSBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2UpLgogCiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIGRpZmZlcmVudCByZXN1bHRzOjoKIApAQCAtMzQ2LDYgKzM1MCw4IEBACiAgICAgYicmIzQwOTYwO2FiY2QmIzE5NzI7JwogICAgID4+PiB1LmVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgYidcXHVhMDAwYWJjZFxcdTA3YjQnCisgICAgPj4+IHUuZW5jb2RlKCdhc2NpaScsICduYW1lcmVwbGFjZScpCisgICAgYidcXE57WUkgU1lMTEFCTEUgSVR9YWJjZFxcdTA3YjQnCiAKIFRoZSBsb3ctbGV2ZWwgcm91dGluZXMgZm9yIHJlZ2lzdGVyaW5nIGFuZCBhY2Nlc3NpbmcgdGhlIGF2YWlsYWJsZQogZW5jb2RpbmdzIGFyZSBmb3VuZCBpbiB0aGUgOm1vZDpgY29kZWNzYCBtb2R1bGUuICBJbXBsZW1lbnRpbmcgbmV3CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkuYyBiL0RvYy9pbmNsdWRlcy9ub2RkeS5jCmluZGV4IDhmNzlmY2YuLjE5YTI3YTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeS5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeS5jCkBAIC0zOCw3ICszOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5KHZvaWQpIAorUHlJbml0X25vZGR5KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggMWM5ODYwZC4uOTg2ZDY3MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTEzLDcgKzEzLDcgQEAKICAgICB9CiAKICAgICBQeV9Jbml0aWFsaXplKCk7Ci0gICAgcE5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhhcmd2WzFdKTsKKyAgICBwTmFtZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYXJndlsxXSk7CiAgICAgLyogRXJyb3IgY2hlY2tpbmcgb2YgcE5hbWUgbGVmdCBvdXQgKi8KIAogICAgIHBNb2R1bGUgPSBQeUltcG9ydF9JbXBvcnQocE5hbWUpOwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaCBiL0RvYy9pbmNsdWRlcy90eXBlc3RydWN0LmgKaW5kZXggNzI2NTAwOS4uOWY0Nzg5OSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3R5cGVzdHJ1Y3QuaAorKysgYi9Eb2MvaW5jbHVkZXMvdHlwZXN0cnVjdC5oCkBAIC05LDcgKzksOCBAQAogICAgIHByaW50ZnVuYyB0cF9wcmludDsKICAgICBnZXRhdHRyZnVuYyB0cF9nZXRhdHRyOwogICAgIHNldGF0dHJmdW5jIHRwX3NldGF0dHI7Ci0gICAgdm9pZCAqdHBfcmVzZXJ2ZWQ7IC8qIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUgKi8KKyAgICBQeUFzeW5jTWV0aG9kcyAqdHBfYXNfYXN5bmM7IC8qIGZvcm1lcmx5IGtub3duIGFzIHRwX2NvbXBhcmUgKFB5dGhvbiAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdHBfcmVzZXJ2ZWQgKFB5dGhvbiAzKSAqLwogICAgIHJlcHJmdW5jIHRwX3JlcHI7CiAKICAgICAvKiBNZXRob2Qgc3VpdGVzIGZvciBzdGFuZGFyZCBjbGFzc2VzICovCmRpZmYgLS1naXQgYS9Eb2MvaW5zdGFsbC9pbmRleC5yc3QgYi9Eb2MvaW5zdGFsbC9pbmRleC5yc3QKaW5kZXggOGYzYWQ3Mi4uODc2ZjM1MCAxMDA2NDQKLS0tIGEvRG9jL2luc3RhbGwvaW5kZXgucnN0CisrKyBiL0RvYy9pbnN0YWxsL2luZGV4LnJzdApAQCAtMzYxLDcgKzM2MSw3IEBACiBUeXBlIG9mIGZpbGUgICAgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeQogPT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBtb2R1bGVzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXHNpdGUtcGFja2FnZXNgCi1zY3JpcHRzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFNjcmlwdHNgCitzY3JpcHRzICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXFNjcmlwdHNgCiBkYXRhICAgICAgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1gCiBDIGhlYWRlcnMgICAgICAgOmZpbGU6YHt1c2VyYmFzZX1cXFB5dGhvbntYWX1cXEluY2x1ZGVcXHtkaXN0bmFtZX1gCiA9PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L19fZnV0dXJlX18ucnN0IGIvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKaW5kZXggNzJmMjk2My4uNzNkOGI2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX19mdXR1cmVfXy5yc3QKQEAgLTg3LDYgKzg3LDkgQEAKIHwgdW5pY29kZV9saXRlcmFscyB8IDIuNi4wYTIgICAgIHwgMy4wICAgICAgICAgIHwgOnBlcDpgMzExMmA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICpCeXRlcyBsaXRlcmFscyBpbiBQeXRob24gMzAwMCogICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgZ2VuZXJhdG9yX3N0b3AgICB8IDMuNS4wYjEgICAgIHwgMy43ICAgICAgICAgIHwgOnBlcDpgNDc5YDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICpTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzKiAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAppbmRleCAwNjdmYjhmLi43MjA5NWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CkBAIC0xMzUsNyArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPSctJywgZnJvbWZpbGVfcHJlZml4X2NoYXJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRfZGVmYXVsdD1Ob25lLCBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9VHJ1ZSwgYWxsb3dfYWJicmV2PVRydWUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3QuIEFsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQKICAgIGFzIGtleXdvcmQgYXJndW1lbnRzLiBFYWNoIHBhcmFtZXRlciBoYXMgaXRzIG93biBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uCkBAIC0xNjksNiArMTY5LDEyIEBACiAKICAgICogYWRkX2hlbHBfIC0gQWRkIGEgLWgvLS1oZWxwIG9wdGlvbiB0byB0aGUgcGFyc2VyIChkZWZhdWx0OiBgYFRydWVgYCkKIAorICAgKiBhbGxvd19hYmJyZXZfIC0gQWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZSBhYmJyZXZpYXRlZCBpZiB0aGUKKyAgICAgYWJicmV2aWF0aW9uIGlzIHVuYW1iaWd1b3VzLiAoZGVmYXVsdDogYGBUcnVlYGApCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqYWxsb3dfYWJicmV2KiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiBUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIGhvdyBlYWNoIG9mIHRoZXNlIGFyZSB1c2VkLgogCiAKQEAgLTUxOCw2ICs1MjQsMjYgQEAKICAgID4+PiBwYXJzZXIucGFyc2VfYXJncyhbXSkKICAgIE5hbWVzcGFjZSgpCiAKKy4uIF9hbGxvd19hYmJyZXY6CisKK2FsbG93X2FiYnJldgorXl5eXl5eXl5eXl5eCisKK05vcm1hbGx5LCB3aGVuIHlvdSBwYXNzIGFuIGFyZ3VtZW50IGxpc3QgdG8gdGhlCis6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCBvZiBhIDpjbGFzczpgQXJndW1lbnRQYXJzZXJgLAoraXQgOnJlZjpgcmVjb2duaXplcyBhYmJyZXZpYXRpb25zIDxwcmVmaXgtbWF0Y2hpbmc+YCBvZiBsb25nIG9wdGlvbnMuCisKK1RoaXMgZmVhdHVyZSBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyBgYGFsbG93X2FiYnJldmBgIHRvIGBgRmFsc2VgYDo6CisKKyAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgYWxsb3dfYWJicmV2PUZhbHNlKQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZm9vYmFyJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvb25sZXknLCBhY3Rpb249J3N0b3JlX2ZhbHNlJykKKyAgID4+PiBwYXJzZXIucGFyc2VfYXJncyhbJy0tZm9vbiddKQorICAgdXNhZ2U6IFBST0cgWy1oXSBbLS1mb29iYXJdIFstLWZvb25sZXldCisgICBQUk9HOiBlcnJvcjogdW5yZWNvZ25pemVkIGFyZ3VtZW50czogLS1mb29uCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIGNvbmZsaWN0X2hhbmRsZXIKIF5eXl5eXl5eXl5eXl5eXl4KQEAgLTE0MTAsOSArMTQzNiw5IEBACiBBcmd1bWVudCBhYmJyZXZpYXRpb25zIChwcmVmaXggbWF0Y2hpbmcpCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCBhbGxvd3MgbG9uZyBvcHRpb25zIHRvIGJlCi1hYmJyZXZpYXRlZCB0byBhIHByZWZpeCwgaWYgdGhlIGFiYnJldmlhdGlvbiBpcyB1bmFtYmlndW91cyAodGhlIHByZWZpeCBtYXRjaGVzCi1hIHVuaXF1ZSBvcHRpb24pOjoKK1RoZSA6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3NgIG1ldGhvZCA6cmVmOmBieSBkZWZhdWx0IDxhbGxvd19hYmJyZXY+YAorYWxsb3dzIGxvbmcgb3B0aW9ucyB0byBiZSBhYmJyZXZpYXRlZCB0byBhIHByZWZpeCwgaWYgdGhlIGFiYnJldmlhdGlvbiBpcwordW5hbWJpZ3VvdXMgKHRoZSBwcmVmaXggbWF0Y2hlcyBhIHVuaXF1ZSBvcHRpb24pOjoKIAogICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnKQogICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJy1iYWNvbicpCkBAIC0xNDI2LDYgKzE0NTIsNyBAQAogICAgUFJPRzogZXJyb3I6IGFtYmlndW91cyBvcHRpb246IC1iYSBjb3VsZCBtYXRjaCAtYmFkZ2VyLCAtYmFjb24KIAogQW4gZXJyb3IgaXMgcHJvZHVjZWQgZm9yIGFyZ3VtZW50cyB0aGF0IGNvdWxkIHByb2R1Y2UgbW9yZSB0aGFuIG9uZSBvcHRpb25zLgorVGhpcyBmZWF0dXJlIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIDpyZWY6YGFsbG93X2FiYnJldmAgdG8gYGBGYWxzZWBgLgogCiAKIEJleW9uZCBgYHN5cy5hcmd2YGAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCBjNmZhMDYxLi43OTRkYThjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC0xNDcsNDAgKzE0Nyw2IEBACiAgICBieSB0aGUgY2hhbm5lbCBhZnRlciA6bWV0aDpgZm91bmRfdGVybWluYXRvcmAgaXMgY2FsbGVkLgogCiAKLWFzeW5jaGF0IC0gQXV4aWxpYXJ5IENsYXNzZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBjbGFzczo6IGZpZm8obGlzdD1Ob25lKQotCi0gICBBIDpjbGFzczpgZmlmb2AgaG9sZGluZyBkYXRhIHdoaWNoIGhhcyBiZWVuIHB1c2hlZCBieSB0aGUgYXBwbGljYXRpb24gYnV0Ci0gICBub3QgeWV0IHBvcHBlZCBmb3Igd3JpdGluZyB0byB0aGUgY2hhbm5lbC4gIEEgOmNsYXNzOmBmaWZvYCBpcyBhIGxpc3QgdXNlZAotICAgdG8gaG9sZCBkYXRhIGFuZC9vciBwcm9kdWNlcnMgdW50aWwgdGhleSBhcmUgcmVxdWlyZWQuICBJZiB0aGUgKmxpc3QqCi0gICBhcmd1bWVudCBpcyBwcm92aWRlZCB0aGVuIGl0IHNob3VsZCBjb250YWluIHByb2R1Y2VycyBvciBkYXRhIGl0ZW1zIHRvIGJlCi0gICB3cml0dGVuIHRvIHRoZSBjaGFubmVsLgotCi0KLSAgIC4uIG1ldGhvZDo6IGlzX2VtcHR5KCkKLQotICAgICAgUmV0dXJucyBgYFRydWVgYCBpZiBhbmQgb25seSBpZiB0aGUgZmlmbyBpcyBlbXB0eS4KLQotCi0gICAuLiBtZXRob2Q6OiBmaXJzdCgpCi0KLSAgICAgIFJldHVybnMgdGhlIGxlYXN0LXJlY2VudGx5IDptZXRoOmBwdXNoYFwgZWQgaXRlbSBmcm9tIHRoZSBmaWZvLgotCi0KLSAgIC4uIG1ldGhvZDo6IHB1c2goZGF0YSkKLQotICAgICAgQWRkcyB0aGUgZ2l2ZW4gZGF0YSAod2hpY2ggbWF5IGJlIGEgc3RyaW5nIG9yIGEgcHJvZHVjZXIgb2JqZWN0KSB0byB0aGUKLSAgICAgIHByb2R1Y2VyIGZpZm8uCi0KLQotICAgLi4gbWV0aG9kOjogcG9wKCkKLQotICAgICAgSWYgdGhlIGZpZm8gaXMgbm90IGVtcHR5LCByZXR1cm5zIGBgVHJ1ZSwgZmlyc3QoKWBgLCBkZWxldGluZyB0aGUgcG9wcGVkCi0gICAgICBpdGVtLiAgUmV0dXJucyBgYEZhbHNlLCBOb25lYGAgZm9yIGFuIGVtcHR5IGZpZm8uCi0KLQogLi4gX2FzeW5jaGF0LWV4YW1wbGU6CiAKIGFzeW5jaGF0IEV4YW1wbGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZGV2LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZGV2LnJzdAppbmRleCAzYTE5NmRiLi5lMjdjZWY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWRldi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1kZXYucnN0CkBAIC05OSw3ICs5OSw3IEBACiA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jYWxsX3Nvb25fdGhyZWFkc2FmZWAgbWV0aG9kIHNob3VsZCBiZSB1c2VkLiBFeGFtcGxlIHRvCiBzY2hlZHVsZSBhIGNvcm91dGluZSBmcm9tIGEgZGlmZmVyZW50IHRocmVhZDo6CiAKLSAgICBsb29wLmNhbGxfc29vbl90aHJlYWRzYWZlKGFzeW5jaW8uYXN5bmMsIGNvcm9fZnVuYygpKQorICAgIGxvb3AuY2FsbF9zb29uX3RocmVhZHNhZmUoYXN5bmNpby5lbnN1cmVfZnV0dXJlLCBjb3JvX2Z1bmMoKSkKIAogTW9zdCBhc3luY2lvIG9iamVjdHMgYXJlIG5vdCB0aHJlYWQgc2FmZS4gWW91IHNob3VsZCBvbmx5IHdvcnJ5IGlmIHlvdSBhY2Nlc3MKIG9iamVjdHMgb3V0c2lkZSB0aGUgZXZlbnQgbG9vcC4gRm9yIGV4YW1wbGUsIHRvIGNhbmNlbCBhIGZ1dHVyZSwgZG9uJ3QgY2FsbApAQCAtMTYyLDEwICsxNjIsMTAgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2hlbiBhIGNvcm91dGluZSBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGl0cyByZXN1bHQgaXMgbm90IHBhc3NlZCB0bwotOmZ1bmM6YGFzeW5jYCBvciB0byB0aGUgOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgIG1ldGhvZCwgdGhlIGV4ZWN1dGlvbgotb2YgdGhlIGNvcm91dGluZSBvYmplY3Qgd2lsbCBuZXZlciBiZSBzY2hlZHVsZWQgd2hpY2ggaXMgcHJvYmFibHkgYSBidWcuCi06cmVmOmBFbmFibGUgdGhlIGRlYnVnIG1vZGUgb2YgYXN5bmNpbyA8YXN5bmNpby1kZWJ1Zy1tb2RlPmAgdG8gOnJlZjpgbG9nIGEKLXdhcm5pbmcgPGFzeW5jaW8tbG9nZ2VyPmAgdG8gZGV0ZWN0IGl0LgorOmZ1bmM6YGVuc3VyZV9mdXR1cmVgIG9yIHRvIHRoZSA6bWV0aDpgQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFza2AgbWV0aG9kLAordGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29yb3V0aW5lIG9iamVjdCB3aWxsIG5ldmVyIGJlIHNjaGVkdWxlZCB3aGljaCBpcworcHJvYmFibHkgYSBidWcuICA6cmVmOmBFbmFibGUgdGhlIGRlYnVnIG1vZGUgb2YgYXN5bmNpbyA8YXN5bmNpby1kZWJ1Zy1tb2RlPmAKK3RvIDpyZWY6YGxvZyBhIHdhcm5pbmcgPGFzeW5jaW8tbG9nZ2VyPmAgdG8gZGV0ZWN0IGl0LgogCiBFeGFtcGxlIHdpdGggdGhlIGJ1Zzo6CiAKQEAgLTE4NCw3ICsxODQsNyBAQAogICAgICAgRmlsZSAidGVzdC5weSIsIGxpbmUgNywgaW4gPG1vZHVsZT4KICAgICAgICAgdGVzdCgpCiAKLVRoZSBmaXggaXMgdG8gY2FsbCB0aGUgOmZ1bmM6YGFzeW5jYCBmdW5jdGlvbiBvciB0aGUKK1RoZSBmaXggaXMgdG8gY2FsbCB0aGUgOmZ1bmM6YGVuc3VyZV9mdXR1cmVgIGZ1bmN0aW9uIG9yIHRoZQogOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgIG1ldGhvZCB3aXRoIHRoZSBjb3JvdXRpbmUgb2JqZWN0LgogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdAppbmRleCAyNzdlNDA0Li44ODljOGUyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CkBAIC0zNiw3ICszNiw3IEBACiAgICBSdW4gdW50aWwgdGhlIDpjbGFzczpgRnV0dXJlYCBpcyBkb25lLgogCiAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSA6cmVmOmBjb3JvdXRpbmUgb2JqZWN0IDxjb3JvdXRpbmU+YCwgaXQgaXMgd3JhcHBlZCBieQotICAgOmZ1bmM6YGFzeW5jYC4KKyAgIDpmdW5jOmBlbnN1cmVfZnV0dXJlYC4KIAogICAgUmV0dXJuIHRoZSBGdXR1cmUncyByZXN1bHQsIG9yIHJhaXNlIGl0cyBleGNlcHRpb24uCiAKQEAgLTI3NSw3ICsyNzUsOSBAQAogICAgICB0byBiaW5kIHRoZSBzb2NrZXQgdG8gbG9jYWxseS4gIFRoZSAqbG9jYWxfaG9zdCogYW5kICpsb2NhbF9wb3J0KgogICAgICBhcmUgbG9va2VkIHVwIHVzaW5nIGdldGFkZHJpbmZvKCksIHNpbWlsYXJseSB0byAqaG9zdCogYW5kICpwb3J0Ki4KIAotICAgT24gV2luZG93cyB3aXRoIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgLCBTU0wvVExTIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBPbiBXaW5kb3dzIHdpdGggOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAsIFNTTC9UTFMgaXMgbm93IHN1cHBvcnRlZC4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTM1OCw3ICszNjAsOSBAQAogCiAgICBUaGlzIG1ldGhvZCBpcyBhIDpyZWY6YGNvcm91dGluZSA8Y29yb3V0aW5lPmAuCiAKLSAgIE9uIFdpbmRvd3Mgd2l0aCA6Y2xhc3M6YFByb2FjdG9yRXZlbnRMb29wYCwgU1NML1RMUyBpcyBub3Qgc3VwcG9ydGVkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgT24gV2luZG93cyB3aXRoIDpjbGFzczpgUHJvYWN0b3JFdmVudExvb3BgLCBTU0wvVExTIGlzIG5vdyBzdXBwb3J0ZWQuCiAKICAgIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3BzLnJzdAppbmRleCBhZmI4YjlmLi5hZTNiZjkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wcy5yc3QKQEAgLTEwMCw4ICsxMDAsNiBAQAogCiA6Y2xhc3M6YFByb2FjdG9yRXZlbnRMb29wYCBzcGVjaWZpYyBsaW1pdHM6CiAKLS0gU1NMIGlzIG5vdCBzdXBwb3J0ZWQ6IDptZXRoOmB+QmFzZUV2ZW50TG9vcC5jcmVhdGVfY29ubmVjdGlvbmAgYW5kCi0gIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5jcmVhdGVfc2VydmVyYCBjYW5ub3QgYmUgdXNlZCB3aXRoIFNTTCBmb3IgZXhhbXBsZQogLSA6bWV0aDpgfkJhc2VFdmVudExvb3AuY3JlYXRlX2RhdGFncmFtX2VuZHBvaW50YCAoVURQKSBpcyBub3Qgc3VwcG9ydGVkCiAtIDptZXRoOmB+QmFzZUV2ZW50TG9vcC5hZGRfcmVhZGVyYCBhbmQgOm1ldGg6YH5CYXNlRXZlbnRMb29wLmFkZF93cml0ZXJgIGFyZQogICBub3Qgc3VwcG9ydGVkCkBAIC0xMTIsNiArMTEwLDEwIEBACiA8aHR0cDovL2ZyLndpa2lwZWRpYS5vcmcvd2lraS9IaWdoX1ByZWNpc2lvbl9FdmVudF9UaW1lcj5gXykgYW5kIG9uIHRoZSBXaW5kb3dzCiBjb25maWd1cmF0aW9uLiBTZWUgOnJlZjpgYXN5bmNpbyBkZWxheWVkIGNhbGxzIDxhc3luY2lvLWRlbGF5ZWQtY2FsbHM+YC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgOmNsYXNzOmBQcm9hY3RvckV2ZW50TG9vcGAgbm93IHN1cHBvcnRzIFNTTC4KKwogCiBNYWMgT1MgWAogXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tcHJvdG9jb2wucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QKaW5kZXggMDJhMWI2OC4uNmNkYzEzZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QKQEAgLTQ0OCw5ICs0NDgsOSBAQAogQ29yb3V0aW5lcyBhbmQgcHJvdG9jb2xzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQ29yb3V0aW5lcyBjYW4gYmUgc2NoZWR1bGVkIGluIGEgcHJvdG9jb2wgbWV0aG9kIHVzaW5nIDpmdW5jOmBhc3luY2AsIGJ1dCB0aGVyZQotaXMgbm8gZ3VhcmFudGVlIG1hZGUgYWJvdXQgdGhlIGV4ZWN1dGlvbiBvcmRlci4gIFByb3RvY29scyBhcmUgbm90IGF3YXJlIG9mCi1jb3JvdXRpbmVzIGNyZWF0ZWQgaW4gcHJvdG9jb2wgbWV0aG9kcyBhbmQgc28gd2lsbCBub3Qgd2FpdCBmb3IgdGhlbS4KK0Nvcm91dGluZXMgY2FuIGJlIHNjaGVkdWxlZCBpbiBhIHByb3RvY29sIG1ldGhvZCB1c2luZyA6ZnVuYzpgZW5zdXJlX2Z1dHVyZWAsCitidXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIG1hZGUgYWJvdXQgdGhlIGV4ZWN1dGlvbiBvcmRlci4gIFByb3RvY29scyBhcmUgbm90Cithd2FyZSBvZiBjb3JvdXRpbmVzIGNyZWF0ZWQgaW4gcHJvdG9jb2wgbWV0aG9kcyBhbmQgc28gd2lsbCBub3Qgd2FpdCBmb3IgdGhlbS4KIAogVG8gaGF2ZSBhIHJlbGlhYmxlIGV4ZWN1dGlvbiBvcmRlciwgdXNlIDpyZWY6YHN0cmVhbSBvYmplY3RzIDxhc3luY2lvLXN0cmVhbXM+YCBpbiBhCiBjb3JvdXRpbmUgd2l0aCBgYHlpZWxkIGZyb21gYC4gRm9yIGV4YW1wbGUsIHRoZSA6bWV0aDpgU3RyZWFtV3JpdGVyLmRyYWluYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNpby1xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLXF1ZXVlLnJzdAppbmRleCAzMzcwNjcyLi5mMTFjMDlhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLXF1ZXVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2lvLXF1ZXVlLnJzdApAQCAtOCw3ICs4LDYgQEAKICogOmNsYXNzOmBRdWV1ZWAKICogOmNsYXNzOmBQcmlvcml0eVF1ZXVlYAogKiA6Y2xhc3M6YExpZm9RdWV1ZWAKLSogOmNsYXNzOmBKb2luYWJsZVF1ZXVlYAogCiBhc3luY2lvIHF1ZXVlIEFQSSB3YXMgZGVzaWduZWQgdG8gYmUgY2xvc2UgdG8gY2xhc3NlcyBvZiB0aGUgOm1vZDpgcXVldWVgCiBtb2R1bGUgKDpjbGFzczpgfnF1ZXVlLlF1ZXVlYCwgOmNsYXNzOmB+cXVldWUuUHJpb3JpdHlRdWV1ZWAsCkBAIC0xNDQsMTYgKzE0Myw2IEBACiAgICAgZmlyc3QuCiAKIAotSm9pbmFibGVRdWV1ZQotXl5eXl5eXl5eXl5eXgotCi0uLiBjbGFzczo6IEpvaW5hYmxlUXVldWUKLQotICAgRGVwcmVjYXRlZCBhbGlhcyBmb3IgOmNsYXNzOmBRdWV1ZWAuCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQuNAotCi0KIEV4Y2VwdGlvbnMKIF5eXl5eXl5eXl4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNpby10YXNrLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tdGFzay5yc3QKaW5kZXggZTdmZjdkMi4uMTY2YWI3MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby10YXNrLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2lvLXRhc2sucnN0CkBAIC04LDE3ICs4LDIzIEBACiBDb3JvdXRpbmVzCiAtLS0tLS0tLS0tCiAKLUEgY29yb3V0aW5lIGlzIGEgZ2VuZXJhdG9yIHRoYXQgZm9sbG93cyBjZXJ0YWluIGNvbnZlbnRpb25zLiAgRm9yCi1kb2N1bWVudGF0aW9uIHB1cnBvc2VzLCBhbGwgY29yb3V0aW5lcyBzaG91bGQgYmUgZGVjb3JhdGVkIHdpdGgKLWBgQGFzeW5jaW8uY29yb3V0aW5lYGAsIGJ1dCB0aGlzIGNhbm5vdCBiZSBzdHJpY3RseSBlbmZvcmNlZC4KK0Nvcm91dGluZXMgdXNlZCB3aXRoIDptb2Q6YGFzeW5jaW9gIG1heSBiZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUKKzprZXl3b3JkOmBhc3luYyBkZWZgIHN0YXRlbWVudCwgb3IgYnkgdXNpbmcgOnRlcm06YGdlbmVyYXRvcnMgPGdlbmVyYXRvcj5gLgorVGhlIDprZXl3b3JkOmBhc3luYyBkZWZgIHR5cGUgb2YgY29yb3V0aW5lIHdhcyBhZGRlZCBpbiBQeXRob24gMy41LCBhbmQKK2lzIHJlY29tbWVuZGVkIGlmIHRoZXJlIGlzIG5vIG5lZWQgdG8gc3VwcG9ydCBvbGRlciBQeXRob24gdmVyc2lvbnMuCiAKLUNvcm91dGluZXMgdXNlIHRoZSBgYHlpZWxkIGZyb21gYCBzeW50YXggaW50cm9kdWNlZCBpbiA6cGVwOmAzODBgLAorR2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMgc2hvdWxkIGJlIGRlY29yYXRlZCB3aXRoIDpmdW5jOmBAYXN5bmNpby5jb3JvdXRpbmUKKzxhc3luY2lvLmNvcm91dGluZT5gLCBhbHRob3VnaCB0aGlzIGlzIG5vdCBzdHJpY3RseSBlbmZvcmNlZC4KK1RoZSBkZWNvcmF0b3IgZW5hYmxlcyBjb21wYXRpYmlsaXR5IHdpdGggOmtleXdvcmQ6YGFzeW5jIGRlZmAgY29yb3V0aW5lcywKK2FuZCBhbHNvIHNlcnZlcyBhcyBkb2N1bWVudGF0aW9uLiAgR2VuZXJhdG9yLWJhc2VkCitjb3JvdXRpbmVzIHVzZSB0aGUgYGB5aWVsZCBmcm9tYGAgc3ludGF4IGludHJvZHVjZWQgaW4gOnBlcDpgMzgwYCwKIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGBgeWllbGRgYCBzeW50YXguCiAKIFRoZSB3b3JkICJjb3JvdXRpbmUiLCBsaWtlIHRoZSB3b3JkICJnZW5lcmF0b3IiLCBpcyB1c2VkIGZvciB0d28KIGRpZmZlcmVudCAodGhvdWdoIHJlbGF0ZWQpIGNvbmNlcHRzOgogCi0tIFRoZSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgYSBjb3JvdXRpbmUgKGEgZnVuY3Rpb24gZGVmaW5pdGlvbgorLSBUaGUgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIGEgY29yb3V0aW5lCisgIChhIGZ1bmN0aW9uIGRlZmluaXRpb24gdXNpbmcgOmtleXdvcmQ6YGFzeW5jIGRlZmAgb3IKICAgZGVjb3JhdGVkIHdpdGggYGBAYXN5bmNpby5jb3JvdXRpbmVgYCkuICBJZiBkaXNhbWJpZ3VhdGlvbiBpcyBuZWVkZWQKICAgd2Ugd2lsbCBjYWxsIHRoaXMgYSAqY29yb3V0aW5lIGZ1bmN0aW9uKiAoOmZ1bmM6YGlzY29yb3V0aW5lZnVuY3Rpb25gCiAgIHJldHVybnMgYGBUcnVlYGApLgpAQCAtMzAsMjkgKzM2LDMwIEBACiAKIFRoaW5ncyBhIGNvcm91dGluZSBjYW4gZG86CiAKLS0gYGByZXN1bHQgPSB5aWVsZCBmcm9tIGZ1dHVyZWBgIC0tIHN1c3BlbmRzIHRoZSBjb3JvdXRpbmUgdW50aWwgdGhlCistIGBgcmVzdWx0ID0gYXdhaXQgZnV0dXJlYGAgb3IgYGByZXN1bHQgPSB5aWVsZCBmcm9tIGZ1dHVyZWBgIC0tCisgIHN1c3BlbmRzIHRoZSBjb3JvdXRpbmUgdW50aWwgdGhlCiAgIGZ1dHVyZSBpcyBkb25lLCB0aGVuIHJldHVybnMgdGhlIGZ1dHVyZSdzIHJlc3VsdCwgb3IgcmFpc2VzIGFuCiAgIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSBwcm9wYWdhdGVkLiAgKElmIHRoZSBmdXR1cmUgaXMgY2FuY2VsbGVkLAogICBpdCB3aWxsIHJhaXNlIGEgYGBDYW5jZWxsZWRFcnJvcmBgIGV4Y2VwdGlvbi4pICBOb3RlIHRoYXQgdGFza3MgYXJlCiAgIGZ1dHVyZXMsIGFuZCBldmVyeXRoaW5nIHNhaWQgYWJvdXQgZnV0dXJlcyBhbHNvIGFwcGxpZXMgdG8gdGFza3MuCiAKLS0gYGByZXN1bHQgPSB5aWVsZCBmcm9tIGNvcm91dGluZWBgIC0tIHdhaXQgZm9yIGFub3RoZXIgY29yb3V0aW5lIHRvCistIGBgcmVzdWx0ID0gYXdhaXQgY29yb3V0aW5lYGAgb3IgYGByZXN1bHQgPSB5aWVsZCBmcm9tIGNvcm91dGluZWBgIC0tCisgIHdhaXQgZm9yIGFub3RoZXIgY29yb3V0aW5lIHRvCiAgIHByb2R1Y2UgYSByZXN1bHQgKG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiwgd2hpY2ggd2lsbCBiZSBwcm9wYWdhdGVkKS4KICAgVGhlIGBgY29yb3V0aW5lYGAgZXhwcmVzc2lvbiBtdXN0IGJlIGEgKmNhbGwqIHRvIGFub3RoZXIgY29yb3V0aW5lLgogCiAtIGBgcmV0dXJuIGV4cHJlc3Npb25gYCAtLSBwcm9kdWNlIGEgcmVzdWx0IHRvIHRoZSBjb3JvdXRpbmUgdGhhdCBpcwotICB3YWl0aW5nIGZvciB0aGlzIG9uZSB1c2luZyBgYHlpZWxkIGZyb21gYC4KKyAgd2FpdGluZyBmb3IgdGhpcyBvbmUgdXNpbmcgOmtleXdvcmQ6YGF3YWl0YCBvciBgYHlpZWxkIGZyb21gYC4KIAogLSBgYHJhaXNlIGV4Y2VwdGlvbmBgIC0tIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiB0aGUgY29yb3V0aW5lIHRoYXQgaXMKLSAgd2FpdGluZyBmb3IgdGhpcyBvbmUgdXNpbmcgYGB5aWVsZCBmcm9tYGAuCisgIHdhaXRpbmcgZm9yIHRoaXMgb25lIHVzaW5nIDprZXl3b3JkOmBhd2FpdGAgb3IgYGB5aWVsZCBmcm9tYGAuCiAKLUNhbGxpbmcgYSBjb3JvdXRpbmUgZG9lcyBub3Qgc3RhcnQgaXRzIGNvZGUgcnVubmluZyAtLSBpdCBpcyBqdXN0IGEKLWdlbmVyYXRvciwgYW5kIHRoZSBjb3JvdXRpbmUgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBjYWxsIGlzIHJlYWxseSBhCi1nZW5lcmF0b3Igb2JqZWN0LCB3aGljaCBkb2Vzbid0IGRvIGFueXRoaW5nIHVudGlsIHlvdSBpdGVyYXRlIG92ZXIgaXQuCi1JbiB0aGUgY2FzZSBvZiBhIGNvcm91dGluZSBvYmplY3QsIHRoZXJlIGFyZSB0d28gYmFzaWMgd2F5cyB0byBzdGFydAotaXQgcnVubmluZzogY2FsbCBgYHlpZWxkIGZyb20gY29yb3V0aW5lYGAgZnJvbSBhbm90aGVyIGNvcm91dGluZQorQ2FsbGluZyBhIGNvcm91dGluZSBkb2VzIG5vdCBzdGFydCBpdHMgY29kZSBydW5uaW5nIC0tCit0aGUgY29yb3V0aW5lIG9iamVjdCByZXR1cm5lZCBieSB0aGUgY2FsbCBkb2Vzbid0IGRvIGFueXRoaW5nIHVudGlsIHlvdQorc2NoZWR1bGUgaXRzIGV4ZWN1dGlvbi4gIFRoZXJlIGFyZSB0d28gYmFzaWMgd2F5cyB0byBzdGFydCBpdCBydW5uaW5nOgorY2FsbCBgYGF3YWl0IGNvcm91dGluZWBgIG9yIGBgeWllbGQgZnJvbSBjb3JvdXRpbmVgYCBmcm9tIGFub3RoZXIgY29yb3V0aW5lCiAoYXNzdW1pbmcgdGhlIG90aGVyIGNvcm91dGluZSBpcyBhbHJlYWR5IHJ1bm5pbmchKSwgb3Igc2NoZWR1bGUgaXRzIGV4ZWN1dGlvbgotdXNpbmcgdGhlIDpmdW5jOmBhc3luY2AgZnVuY3Rpb24gb3IgdGhlIDptZXRoOmBCYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrYAordXNpbmcgdGhlIDpmdW5jOmBlbnN1cmVfZnV0dXJlYCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YEJhc2VFdmVudExvb3AuY3JlYXRlX3Rhc2tgCiBtZXRob2QuCiAKIApAQCAtNjAsOSArNjcsMTUgQEAKIAogLi4gZGVjb3JhdG9yOjogY29yb3V0aW5lCiAKLSAgICBEZWNvcmF0b3IgdG8gbWFyayBjb3JvdXRpbmVzLgorICAgIERlY29yYXRvciB0byBtYXJrIGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzLiAgVGhpcyBlbmFibGVzCisgICAgdGhlIGdlbmVyYXRvciB1c2UgOmtleXdvcmQ6YCF5aWVsZCBmcm9tYCB0byBjYWxsIDprZXl3b3JkOmBhc3luYworICAgIGRlZmAgY29yb3V0aW5lcywgYW5kIGFsc28gZW5hYmxlcyB0aGUgZ2VuZXJhdG9yIHRvIGJlIGNhbGxlZCBieQorICAgIDprZXl3b3JkOmBhc3luYyBkZWZgIGNvcm91dGluZXMsIGZvciBpbnN0YW5jZSB1c2luZyBhbgorICAgIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4KIAotICAgIElmIHRoZSBjb3JvdXRpbmUgaXMgbm90IHlpZWxkZWQgZnJvbSBiZWZvcmUgaXQgaXMgZGVzdHJveWVkLCBhbiBlcnJvcgorICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gZGVjb3JhdGUgOmtleXdvcmQ6YGFzeW5jIGRlZmAgY29yb3V0aW5lcyB0aGVtc2VsdmVzLgorCisgICAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgeWllbGRlZCBmcm9tIGJlZm9yZSBpdCBpcyBkZXN0cm95ZWQsIGFuIGVycm9yCiAgICAgbWVzc2FnZSBpcyBsb2dnZWQuIFNlZSA6cmVmOmBEZXRlY3QgY29yb3V0aW5lcyBuZXZlciBzY2hlZHVsZWQKICAgICA8YXN5bmNpby1jb3JvdXRpbmUtbm90LXNjaGVkdWxlZD5gLgogCkBAIC03Miw3ICs4NSw3IEBACiAgICAgZXZlbiBpZiB0aGV5IGFyZSBwbGFpbiBQeXRob24gZnVuY3Rpb25zIHJldHVybmluZyBhIDpjbGFzczpgRnV0dXJlYC4KICAgICBUaGlzIGlzIGludGVudGlvbmFsIHRvIGhhdmUgYSBmcmVlZG9tIG9mIHR3ZWFraW5nIHRoZSBpbXBsZW1lbnRhdGlvbgogICAgIG9mIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgZnV0dXJlLiBJZiBzdWNoIGEgZnVuY3Rpb24gaXMgbmVlZGVkIHRvIGJlCi0gICAgdXNlZCBpbiBhIGNhbGxiYWNrLXN0eWxlIGNvZGUsIHdyYXAgaXRzIHJlc3VsdCB3aXRoIDpmdW5jOmBhc3luY2AuCisgICAgdXNlZCBpbiBhIGNhbGxiYWNrLXN0eWxlIGNvZGUsIHdyYXAgaXRzIHJlc3VsdCB3aXRoIDpmdW5jOmBlbnN1cmVfZnV0dXJlYC4KIAogCiAuLiBfYXN5bmNpby1oZWxsby13b3JsZC1jb3JvdXRpbmU6CkBAIC04NCw4ICs5Nyw3IEBACiAKICAgICBpbXBvcnQgYXN5bmNpbwogCi0gICAgQGFzeW5jaW8uY29yb3V0aW5lCi0gICAgZGVmIGhlbGxvX3dvcmxkKCk6CisgICAgYXN5bmMgZGVmIGhlbGxvX3dvcmxkKCk6CiAgICAgICAgIHByaW50KCJIZWxsbyBXb3JsZCEiKQogCiAgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQpAQCAtMTExLDYgKzEyMywyMSBAQAogICAgIGltcG9ydCBhc3luY2lvCiAgICAgaW1wb3J0IGRhdGV0aW1lCiAKKyAgICBhc3luYyBkZWYgZGlzcGxheV9kYXRlKGxvb3ApOgorICAgICAgICBlbmRfdGltZSA9IGxvb3AudGltZSgpICsgNS4wCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBwcmludChkYXRldGltZS5kYXRldGltZS5ub3coKSkKKyAgICAgICAgICAgIGlmIChsb29wLnRpbWUoKSArIDEuMCkgPj0gZW5kX3RpbWU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMSkKKworICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKKyAgICAjIEJsb2NraW5nIGNhbGwgd2hpY2ggcmV0dXJucyB3aGVuIHRoZSBkaXNwbGF5X2RhdGUoKSBjb3JvdXRpbmUgaXMgZG9uZQorICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGRpc3BsYXlfZGF0ZShsb29wKSkKKyAgICBsb29wLmNsb3NlKCkKKworVGhlIHNhbWUgY29yb3V0aW5lIGltcGxlbWVudGVkIHVzaW5nIGEgZ2VuZXJhdG9yOjoKKwogICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgIGRlZiBkaXNwbGF5X2RhdGUobG9vcCk6CiAgICAgICAgIGVuZF90aW1lID0gbG9vcC50aW1lKCkgKyA1LjAKQEAgLTEyMCwxMSArMTQ3LDYgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDEpCiAKLSAgICBsb29wID0gYXN5bmNpby5nZXRfZXZlbnRfbG9vcCgpCi0gICAgIyBCbG9ja2luZyBjYWxsIHdoaWNoIHJldHVybnMgd2hlbiB0aGUgZGlzcGxheV9kYXRlKCkgY29yb3V0aW5lIGlzIGRvbmUKLSAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShkaXNwbGF5X2RhdGUobG9vcCkpCi0gICAgbG9vcC5jbG9zZSgpCi0KIC4uIHNlZWFsc286OgogCiAgICBUaGUgOnJlZjpgZGlzcGxheSB0aGUgY3VycmVudCBkYXRlIHdpdGggY2FsbF9sYXRlcigpCkBAIC0xMzksMTUgKzE2MSwxMyBAQAogCiAgICAgaW1wb3J0IGFzeW5jaW8KIAotICAgIEBhc3luY2lvLmNvcm91dGluZQotICAgIGRlZiBjb21wdXRlKHgsIHkpOgorICAgIGFzeW5jIGRlZiBjb21wdXRlKHgsIHkpOgogICAgICAgICBwcmludCgiQ29tcHV0ZSAlcyArICVzIC4uLiIgJSAoeCwgeSkpCi0gICAgICAgIHlpZWxkIGZyb20gYXN5bmNpby5zbGVlcCgxLjApCisgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMS4wKQogICAgICAgICByZXR1cm4geCArIHkKIAotICAgIEBhc3luY2lvLmNvcm91dGluZQotICAgIGRlZiBwcmludF9zdW0oeCwgeSk6Ci0gICAgICAgIHJlc3VsdCA9IHlpZWxkIGZyb20gY29tcHV0ZSh4LCB5KQorICAgIGFzeW5jIGRlZiBwcmludF9zdW0oeCwgeSk6CisgICAgICAgIHJlc3VsdCA9IGF3YWl0IGNvbXB1dGUoeCwgeSkKICAgICAgICAgcHJpbnQoIiVzICsgJXMgPSAlcyIgJSAoeCwgeSwgcmVzdWx0KSkKIAogICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKQEAgLTM3NCw3ICszOTQsNyBAQAogICAgPGNvcm91dGluZT5gIGRpZCBub3QgY29tcGxldGUuIEl0IGlzIHByb2JhYmx5IGEgYnVnIGFuZCBhIHdhcm5pbmcgaXMKICAgIGxvZ2dlZDogc2VlIDpyZWY6YFBlbmRpbmcgdGFzayBkZXN0cm95ZWQgPGFzeW5jaW8tcGVuZGluZy10YXNrLWRlc3Ryb3llZD5gLgogCi0gICBEb24ndCBkaXJlY3RseSBjcmVhdGUgOmNsYXNzOmBUYXNrYCBpbnN0YW5jZXM6IHVzZSB0aGUgOmZ1bmM6YGFzeW5jYAorICAgRG9uJ3QgZGlyZWN0bHkgY3JlYXRlIDpjbGFzczpgVGFza2AgaW5zdGFuY2VzOiB1c2UgdGhlIDpmdW5jOmBlbnN1cmVfZnV0dXJlYAogICAgZnVuY3Rpb24gb3IgdGhlIDptZXRoOmBCYXNlRXZlbnRMb29wLmNyZWF0ZV90YXNrYCBtZXRob2QuCiAKICAgIFRoaXMgY2xhc3MgaXMgOnJlZjpgbm90IHRocmVhZCBzYWZlIDxhc3luY2lvLW11bHRpdGhyZWFkaW5nPmAuCkBAIC01NTAsMTIgKzU3MCwxNCBAQAogCiAuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lKG9iaikKIAotICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpvYmoqIGlzIGEgOnJlZjpgY29yb3V0aW5lIG9iamVjdCA8Y29yb3V0aW5lPmAuCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgKm9iaiogaXMgYSA6cmVmOmBjb3JvdXRpbmUgb2JqZWN0IDxjb3JvdXRpbmU+YCwKKyAgIHdoaWNoIG1heSBiZSBiYXNlZCBvbiBhIGdlbmVyYXRvciBvciBhbiA6a2V5d29yZDpgYXN5bmMgZGVmYCBjb3JvdXRpbmUuCiAKLS4uIGZ1bmN0aW9uOjogaXNjb3JvdXRpbmVmdW5jdGlvbihvYmopCisuLiBmdW5jdGlvbjo6IGlzY29yb3V0aW5lZnVuY3Rpb24oZnVuYykKIAotICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpmdW5jKiBpcyBhIGRlY29yYXRlZCA6cmVmOmBjb3JvdXRpbmUgZnVuY3Rpb24KLSAgIDxjb3JvdXRpbmU+YC4KKyAgIFJldHVybiBgYFRydWVgYCBpZiAqZnVuYyogaXMgZGV0ZXJtaW5lZCB0byBiZSBhIDpyZWY6YGNvcm91dGluZSBmdW5jdGlvbgorICAgPGNvcm91dGluZT5gLCB3aGljaCBtYXkgYmUgYSBkZWNvcmF0ZWQgZ2VuZXJhdG9yIGZ1bmN0aW9uIG9yIGFuCisgICA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4KIAogLi4gY29yb3V0aW5lZnVuY3Rpb246OiBzbGVlcChkZWxheSwgcmVzdWx0PU5vbmUsIFwqLCBsb29wPU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QgYi9Eb2MvbGlicmFyeS9iejIucnN0CmluZGV4IDQ4OGNkYTUuLjFiOGQ5Y2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2J6Mi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYnoyLnJzdApAQCAtMTIwLDYgKzEyMCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCisgICAgICBgYE5vbmVgYC4KKwogCiBJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTYyLDE1ICsxNjYsMzIgQEAKICAgICAgIHlvdSBuZWVkIHRvIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAsCiAgICAgICB5b3UgbXVzdCB1c2UgYSBuZXcgZGVjb21wcmVzc29yIGZvciBlYWNoIHN0cmVhbS4KIAotICAgLi4gbWV0aG9kOjogZGVjb21wcmVzcyhkYXRhKQorICAgLi4gbWV0aG9kOjogZGVjb21wcmVzcyhkYXRhLCBtYXhfbGVuZ3RoPS0xKQogCi0gICAgICBQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQKLSAgICAgIGRhdGEgaWYgcG9zc2libGUsIG9yIGFuIGVtcHR5IGJ5dGUgc3RyaW5nIG90aGVyd2lzZS4KKyAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApLCByZXR1cm5pbmcKKyAgICAgIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLiBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQKKyAgICAgIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUKKyAgICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBvdXRwdXQgb2YgYW55CisgICAgICBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCiAKLSAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RyZWFtIGlzCi0gICAgICByZWFjaGVkIHJhaXNlcyBhbiA6ZXhjOmBFT0ZFcnJvcmAuIElmIGFueSBkYXRhIGlzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YKLSAgICAgIHRoZSBzdHJlYW0sIGl0IGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKyAgICAgIElmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKgorICAgICAgYnl0ZXMgb2YgZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlcgorICAgICAgb3V0cHV0IGNhbiBiZSBwcm9kdWNlZCwgdGhlIDphdHRyOmB+Lm5lZWRzX2lucHV0YCBhdHRyaWJ1dGUgd2lsbAorICAgICAgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dCBjYWxsIHRvCisgICAgICA6bWV0aDpgfi5kZWNvbXByZXNzYCBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYGBiJydgYCB0byBvYnRhaW4KKyAgICAgIG1vcmUgb2YgdGhlIG91dHB1dC4KIAorICAgICAgSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIKKyAgICAgIGJlY2F1c2UgdGhpcyB3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZQorICAgICAgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlCisgICAgICB3aWxsIGJlIHNldCB0byBgYFRydWVgYC4KKworICAgICAgQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAorICAgICAgcmFpc2VzIGFuIGBFT0ZFcnJvcmAuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZQorICAgICAgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgfi51bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgQWRkZWQgdGhlICptYXhfbGVuZ3RoKiBwYXJhbWV0ZXIuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGVvZgogCkBAIC0xODYsNiArMjA3LDEzIEBACiAgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGhhcyBiZWVuCiAgICAgICByZWFjaGVkLCBpdHMgdmFsdWUgd2lsbCBiZSBgYGInJ2BgLgogCisgICAuLiBhdHRyaWJ1dGU6OiBuZWVkc19pbnB1dAorCisgICAgICBgYEZhbHNlYGAgaWYgdGhlIDptZXRoOmAuZGVjb21wcmVzc2AgbWV0aG9kIGNhbiBwcm92aWRlIG1vcmUKKyAgICAgIGRlY29tcHJlc3NlZCBkYXRhIGJlZm9yZSByZXF1aXJpbmcgbmV3IHVuY29tcHJlc3NlZCBpbnB1dC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NnaS5yc3QgYi9Eb2MvbGlicmFyeS9jZ2kucnN0CmluZGV4IGZhMTMxNDUuLjBhOWU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NnaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY2dpLnJzdApAQCAtMTU3LDYgKzE1Nyw5IEBACiAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawogICAgICAgICAgICBsaW5lY291bnQgPSBsaW5lY291bnQgKyAxCiAKKzpjbGFzczpgRmllbGRTdG9yYWdlYCBvYmplY3RzIGFsc28gc3VwcG9ydCBiZWluZyB1c2VkIGluIGEgOmtleXdvcmQ6YHdpdGhgCitzdGF0ZW1lbnQsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjbG9zZSB0aGVtIHdoZW4gZG9uZS4KKwogSWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQgd2hlbiBvYnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIGFuIHVwbG9hZGVkIGZpbGUKIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgdXNlciBpbnRlcnJ1cHRzIHRoZSBmb3JtIHN1Ym1pc3Npb24gYnkgY2xpY2tpbmcgb24KIGEgQmFjayBvciBDYW5jZWwgYnV0dG9uKSB0aGUgOmF0dHI6YH5GaWVsZFN0b3JhZ2UuZG9uZWAgYXR0cmlidXRlIG9mIHRoZQpAQCAtMTgyLDYgKzE4NSwxMCBAQAogICAgVGhlIDphdHRyOmB+RmllbGRTdG9yYWdlLmZpbGVgIGF0dHJpYnV0ZSBpcyBhdXRvbWF0aWNhbGx5IGNsb3NlZCB1cG9uIHRoZQogICAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9mIHRoZSBjcmVhdGluZyA6Y2xhc3M6YEZpZWxkU3RvcmFnZWAgaW5zdGFuY2UuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIHRvIHRoZQorICAgOmNsYXNzOmBGaWVsZFN0b3JhZ2VgIGNsYXNzLgorCiAKIEhpZ2hlciBMZXZlbCBJbnRlcmZhY2UKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdCBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAppbmRleCBhOTgxZDk0Li5hYjYxOWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CkBAIC0yMDcsNiArMjA3LDM4IEBACiAgICBhbmQgYGBGYWxzZWBgIG90aGVyd2lzZS4KIAogCisuLiBmdW5jdGlvbjo6IGlzY2xvc2UoYSwgYiwgKiwgcmVsX3RvbD0xZS0wOSwgYWJzX3RvbD0wLjApCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgdmFsdWVzICphKiBhbmQgKmIqIGFyZSBjbG9zZSB0byBlYWNoIG90aGVyIGFuZAorICAgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgV2hldGhlciBvciBub3QgdHdvIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBjbG9zZSBpcyBkZXRlcm1pbmVkIGFjY29yZGluZyB0bworICAgZ2l2ZW4gYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHRvbGVyYW5jZXMuCisKKyAgICpyZWxfdG9sKiBpcyB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIC0tIGl0IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgZGlmZmVyZW5jZQorICAgYmV0d2VlbiAqYSogYW5kICpiKiwgcmVsYXRpdmUgdG8gdGhlIGxhcmdlciBhYnNvbHV0ZSB2YWx1ZSBvZiAqYSogb3IgKmIqLgorICAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIHRvbGVyYW5jZSBvZiA1JSwgcGFzcyBgYHJlbF90b2w9MC4wNWBgLiAgVGhlIGRlZmF1bHQKKyAgIHRvbGVyYW5jZSBpcyBgYDFlLTA5YGAsIHdoaWNoIGFzc3VyZXMgdGhhdCB0aGUgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUKKyAgIHdpdGhpbiBhYm91dCA5IGRlY2ltYWwgZGlnaXRzLiAgKnJlbF90b2wqIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICphYnNfdG9sKiBpcyB0aGUgbWluaW11bSBhYnNvbHV0ZSB0b2xlcmFuY2UgLS0gdXNlZnVsIGZvciBjb21wYXJpc29ucyBuZWFyCisgICB6ZXJvLiAqYWJzX3RvbCogbXVzdCBiZSBhdCBsZWFzdCB6ZXJvLgorCisgICBJZiBubyBlcnJvcnMgb2NjdXIsIHRoZSByZXN1bHQgd2lsbCBiZToKKyAgIGBgYWJzKGEtYikgPD0gbWF4KHJlbF90b2wgKiBtYXgoYWJzKGEpLCBhYnMoYikpLCBhYnNfdG9sKWBgLgorCisgICBUaGUgSUVFRSA3NTQgc3BlY2lhbCB2YWx1ZXMgb2YgYGBOYU5gYCwgYGBpbmZgYCwgYW5kIGBgLWluZmBgIHdpbGwgYmUKKyAgIGhhbmRsZWQgYWNjb3JkaW5nIHRvIElFRUUgcnVsZXMuICBTcGVjaWZpY2FsbHksIGBgTmFOYGAgaXMgbm90IGNvbnNpZGVyZWQKKyAgIGNsb3NlIHRvIGFueSBvdGhlciB2YWx1ZSwgaW5jbHVkaW5nIGBgTmFOYGAuICBgYGluZmBgIGFuZCBgYC1pbmZgYCBhcmUgb25seQorICAgY29uc2lkZXJlZCBjbG9zZSB0byB0aGVtc2VsdmVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDpwZXA6YDQ4NWAgLS0gQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorCisKIENvbnN0YW50cwogLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGUucnN0IGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKaW5kZXggNWI1ZDdjYy4uMjc1MjAxYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKQEAgLTQsNiArNCw3IEBACiAuLiBtb2R1bGU6OiBjb2RlCiAgICA6c3lub3BzaXM6IEZhY2lsaXRpZXMgdG8gaW1wbGVtZW50IHJlYWQtZXZhbC1wcmludCBsb29wcy4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29kZS5weWAKIAogVGhlIGBgY29kZWBgIG1vZHVsZSBwcm92aWRlcyBmYWNpbGl0aWVzIHRvIGltcGxlbWVudCByZWFkLWV2YWwtcHJpbnQgbG9vcHMgaW4KIFB5dGhvbi4gIFR3byBjbGFzc2VzIGFuZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgYXJlIGluY2x1ZGVkIHdoaWNoIGNhbiBiZSB1c2VkIHRvCkBAIC0xMTMsNiArMTE0LDkgQEAKICAgIGJlY2F1c2UgaXQgaXMgd2l0aGluIHRoZSBpbnRlcnByZXRlciBvYmplY3QgaW1wbGVtZW50YXRpb24uIFRoZSBvdXRwdXQgaXMKICAgIHdyaXR0ZW4gYnkgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNSBUaGUgZnVsbCBjaGFpbmVkIHRyYWNlYmFjayBpcyBkaXNwbGF5ZWQgaW5zdGVhZAorICAgICAgb2YganVzdCB0aGUgcHJpbWFyeSB0cmFjZWJhY2suCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVJbnRlcnByZXRlci53cml0ZShkYXRhKQogCkBAIC0xNjUsNCArMTY5LDMgQEAKICAgIG5ld2xpbmUuICBXaGVuIHRoZSB1c2VyIGVudGVycyB0aGUgRU9GIGtleSBzZXF1ZW5jZSwgOmV4YzpgRU9GRXJyb3JgIGlzIHJhaXNlZC4KICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHJlYWRzIGZyb20gYGBzeXMuc3RkaW5gYDsgYSBzdWJjbGFzcyBtYXkgcmVwbGFjZSB0aGlzCiAgICB3aXRoIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0IGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAppbmRleCBmMzAxN2RhLi43NDM4YWVjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKQEAgLTcsNiArNyw3IEBACiAuLiBzZWN0aW9uYXV0aG9yOjogTWFyYy1BbmRyw6kgTGVtYnVyZyA8bWFsQGxlbWJ1cmcuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IE1hcnRpbiB2LiBMw7Z3aXMgPG1hcnRpbkB2LmxvZXdpcy5kZT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29kZWNzLnB5YAogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IFVuaWNvZGUKQEAgLTI5LDEwICszMCw5IEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB3aXRoCiBhbnkgY29kZWM6CiAKLS4uIGZ1bmN0aW9uOjogZW5jb2RlKG9iaiwgW2VuY29kaW5nWywgZXJyb3JzXV0pCisuLiBmdW5jdGlvbjo6IGVuY29kZShvYmosIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0nc3RyaWN0JykKIAotICAgRW5jb2RlcyAqb2JqKiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgKmVuY29kaW5nKi4gVGhlIGRlZmF1bHQKLSAgIGVuY29kaW5nIGlzIGBgdXRmLThgYC4KKyAgIEVuY29kZXMgKm9iaiogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouCiAKICAgICpFcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgdGhlIGRlc2lyZWQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUKICAgIGRlZmF1bHQgZXJyb3IgaGFuZGxlciBpcyBgYCdzdHJpY3QnYGAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZQpAQCAtNDAsMTAgKzQwLDkgQEAKICAgIDpleGM6YFVuaWNvZGVFbmNvZGVFcnJvcmApLiBSZWZlciB0byA6cmVmOmBjb2RlYy1iYXNlLWNsYXNzZXNgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBjb2RlYyBlcnJvciBoYW5kbGluZy4KIAotLi4gZnVuY3Rpb246OiBkZWNvZGUob2JqLCBbZW5jb2RpbmdbLCBlcnJvcnNdXSkKKy4uIGZ1bmN0aW9uOjogZGVjb2RlKG9iaiwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKQogCi0gICBEZWNvZGVzICpvYmoqIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciAqZW5jb2RpbmcqLiBUaGUgZGVmYXVsdAotICAgZW5jb2RpbmcgaXMgYGB1dGYtOGBgLgorICAgRGVjb2RlcyAqb2JqKiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgKmVuY29kaW5nKi4KIAogICAgKkVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCB0aGUgZGVzaXJlZCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZQogICAgZGVmYXVsdCBlcnJvciBoYW5kbGVyIGlzIGBgJ3N0cmljdCdgYCBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlCkBAIC0xMDQsNyArMTAzLDYgQEAKIFRvIHNpbXBsaWZ5IGFjY2VzcyB0byB0aGUgdmFyaW91cyBjb2RlYyBjb21wb25lbnRzLCB0aGUgbW9kdWxlIHByb3ZpZGVzCiB0aGVzZSBhZGRpdGlvbmFsIGZ1bmN0aW9ucyB3aGljaCB1c2UgOmZ1bmM6YGxvb2t1cGAgZm9yIHRoZSBjb2RlYyBsb29rdXA6CiAKLQogLi4gZnVuY3Rpb246OiBnZXRlbmNvZGVyKGVuY29kaW5nKQogCiAgICBMb29rIHVwIHRoZSBjb2RlYyBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIGFuZCByZXR1cm4gaXRzIGVuY29kZXIgZnVuY3Rpb24uCkBAIC0yNzQsNiArMjcyLDcgQEAKIGNvZGVjIHdpbGwgaGFuZGxlIGVuY29kaW5nIGFuZCBkZWNvZGluZyBlcnJvcnMuCiAKIAorLi4gX3N1cnJvZ2F0ZWVzY2FwZToKIC4uIF9lcnJvci1oYW5kbGVyczoKIAogRXJyb3IgSGFuZGxlcnMKQEAgLTMxNSwxMCArMzE0LDE0IEBACiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuICBJbXBsZW1lbnRlZCAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbiA6ZnVuYzpgeG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzYC4gICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgIHwgUmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZXMgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgfCAob25seSBmb3IgZW5jb2RpbmcpLiAgSW1wbGVtZW50ZWQgaW4gICAgICAgICAgfAorfCBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgICB8IFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2VzLiAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW1wbGVtZW50ZWQgaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgYmFja3NsYXNocmVwbGFjZV9lcnJvcnNgLiAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJ25hbWVyZXBsYWNlJ2BgICAgICAgIHwgUmVwbGFjZSB3aXRoIGBgXE57Li4ufWBgIGVzY2FwZSBzZXF1ZW5jZXMgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCAob25seSBmb3IgZW5jb2RpbmcpLiAgSW1wbGVtZW50ZWQgaW4gICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBuYW1lcmVwbGFjZV9lcnJvcnNgLiAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgICAgfCBPbiBkZWNvZGluZywgcmVwbGFjZSBieXRlIHdpdGggaW5kaXZpZHVhbCAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1cnJvZ2F0ZSBjb2RlIHJhbmdpbmcgZnJvbSBgYFUrREM4MGBgIHRvICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBVK0RDRkZgYC4gIFRoaXMgY29kZSB3aWxsIHRoZW4gYmUgdHVybmVkICAgIHwKQEAgLTM0NCw2ICszNDcsMTMgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICBUaGUgYGAnc3Vycm9nYXRlcGFzcydgYCBlcnJvciBoYW5kbGVycyBub3cgd29ya3Mgd2l0aCB1dGYtMTZcKiBhbmQgdXRmLTMyXCogY29kZWNzLgogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgIFRoZSBgYCduYW1lcmVwbGFjZSdgYCBlcnJvciBoYW5kbGVyLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmtzIHdpdGggZGVjb2RpbmcgYW5kCisgICB0cmFuc2xhdGluZy4KKwogVGhlIHNldCBvZiBhbGxvd2VkIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgYnkgcmVnaXN0ZXJpbmcgYSBuZXcgbmFtZWQgZXJyb3IKIGhhbmRsZXI6CiAKQEAgLTQxMSw5ICs0MjEsMTcgQEAKIAogLi4gZnVuY3Rpb246OiBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyhleGNlcHRpb24pCiAKLSAgIEltcGxlbWVudHMgdGhlIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgZXJyb3IgaGFuZGxpbmcgKGZvciBlbmNvZGluZyB3aXRoCisgICBJbXBsZW1lbnRzIHRoZSBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIGVycm9yIGhhbmRsaW5nIChmb3IKKyAgIDp0ZXJtOmB0ZXh0IGVuY29kaW5ncyA8dGV4dCBlbmNvZGluZz5gIG9ubHkpOiBtYWxmb3JtZWQgZGF0YSBpcworICAgcmVwbGFjZWQgYnkgYSBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2UuCisKKy4uIGZ1bmN0aW9uOjogbmFtZXJlcGxhY2VfZXJyb3JzKGV4Y2VwdGlvbikKKworICAgSW1wbGVtZW50cyB0aGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxpbmcgKGZvciBlbmNvZGluZyB3aXRoCiAgICA6dGVybTpgdGV4dCBlbmNvZGluZ3MgPHRleHQgZW5jb2Rpbmc+YCBvbmx5KTogdGhlCi0gICB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgYnkgYSBiYWNrc2xhc2hlZCBlc2NhcGUgc2VxdWVuY2UuCisgICB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgYnkgYSBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKIC4uIF9jb2RlYy1vYmplY3RzOgpAQCAtMTE0Miw4ICsxMTYwLDE2IEBACiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGtvaThfciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJ1c3NpYW4gICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGtvaThfdCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRhamlrICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNSAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGtvaThfdSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVrcmFpbmlhbiAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGt6MTA0OCAgICAgICAgICB8IGt6XzEwNDgsIHN0cmsxMDQ4XzIwMDIsIHJrMTA0OCB8IEthemFraCAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNSAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IG1hY19jeXJpbGxpYyAgICB8IG1hY2N5cmlsbGljICAgICAgICAgICAgICAgICAgICB8IEJ1bGdhcmlhbiwgQnllbG9ydXNzaWFuLCAgICAgICB8CiB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1hY2Vkb25pYW4sIFJ1c3NpYW4sIFNlcmJpYW4gICB8CiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xNDQ0LDQgKzE0NzAsMyBAQAogQk9NIHdpbGwgYmUgcHJlcGVuZGVkIHRvIHRoZSBVVEYtOCBlbmNvZGVkIGJ5dGVzLiBGb3IgdGhlIHN0YXRlZnVsIGVuY29kZXIgdGhpcwogaXMgb25seSBkb25lIG9uY2UgKG9uIHRoZSBmaXJzdCB3cml0ZSB0byB0aGUgYnl0ZSBzdHJlYW0pLiAgRm9yIGRlY29kaW5nIGFuCiBvcHRpb25hbCBVVEYtOCBlbmNvZGVkIEJPTSBhdCB0aGUgc3RhcnQgb2YgdGhlIGRhdGEgd2lsbCBiZSBza2lwcGVkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCA5OWM0MzExLi41NjNjMWJjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTMzLDEzICszMywxNCBAQAogCiAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfEx8THxMfAogCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogQUJDICAgICAgICAgICAgICAgICAgICAgICAgSW5oZXJpdHMgZnJvbSAgICAgICAgICBBYnN0cmFjdCBNZXRob2RzICAgICAgICBNaXhpbiBNZXRob2RzCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCiA6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAogOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKIDpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCiAKQEAgLTgwLDcgKzgxLDExIEBACiA6Y2xhc3M6YEtleXNWaWV3YCAgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCwgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAogOmNsYXNzOmBWYWx1ZXNWaWV3YCAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAKLT09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmNsYXNzOmBBd2FpdGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fYXdhaXRfX2BgCis6Y2xhc3M6YENvcm91dGluZWAgICAgICAgICA6Y2xhc3M6YEF3YWl0YWJsZWAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYAorOmNsYXNzOmBBc3luY0l0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fYWl0ZXJfX2BgCis6Y2xhc3M6YEFzeW5jSXRlcmF0b3JgICAgICA6Y2xhc3M6YEFzeW5jSXRlcmFibGVgIGBgX19hbmV4dF9fYGAgICAgICAgICAgIGBgX19haXRlcl9fYGAKKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKIC4uIGNsYXNzOjogQ29udGFpbmVyCkBAIC0xMDIsMTEgKzEwNywzNCBAQAogICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mCiAgICA6dGVybTpgaXRlcmF0b3JgLgogCisuLiBjbGFzczo6IEdlbmVyYXRvcgorCisgICBBQkMgZm9yIGdlbmVyYXRvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoZSBwcm90b2NvbCBkZWZpbmVkIGluCisgICA6cGVwOmAzNDJgIHRoYXQgZXh0ZW5kcyBpdGVyYXRvcnMgd2l0aCB0aGUgOm1ldGg6YH5nZW5lcmF0b3Iuc2VuZGAsCisgICA6bWV0aDpgfmdlbmVyYXRvci50aHJvd2AgYW5kIDptZXRoOmB+Z2VuZXJhdG9yLmNsb3NlYCBtZXRob2RzLgorICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGdlbmVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBjbGFzczo6IFNlcXVlbmNlCiAgICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQogCiAgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KIAorICAgSW1wbGVtZW50YXRpb24gbm90ZTogU29tZSBvZiB0aGUgbWl4aW4gbWV0aG9kcywgc3VjaCBhcworICAgOm1ldGg6YF9faXRlcl9fYCwgOm1ldGg6YF9fcmV2ZXJzZWRfX2AgYW5kIDptZXRoOmBpbmRleGAsIG1ha2UKKyAgIHJlcGVhdGVkIGNhbGxzIHRvIHRoZSB1bmRlcmx5aW5nIDptZXRoOmBfX2dldGl0ZW1fX2AgbWV0aG9kLgorICAgQ29uc2VxdWVudGx5LCBpZiA6bWV0aDpgX19nZXRpdGVtX19gIGlzIGltcGxlbWVudGVkIHdpdGggY29uc3RhbnQKKyAgIGFjY2VzcyBzcGVlZCwgdGhlIG1peGluIG1ldGhvZHMgd2lsbCBoYXZlIGxpbmVhciBwZXJmb3JtYW5jZTsKKyAgIGhvd2V2ZXIsIGlmIHRoZSB1bmRlcmx5aW5nIG1ldGhvZCBpcyBsaW5lYXIgKGFzIGl0IHdvdWxkIGJlIHdpdGggYQorICAgbGlua2VkIGxpc3QpLCB0aGUgbWl4aW5zIHdpbGwgaGF2ZSBxdWFkcmF0aWMgcGVyZm9ybWFuY2UgYW5kIHdpbGwKKyAgIGxpa2VseSBuZWVkIHRvIGJlIG92ZXJyaWRkZW4uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgaW5kZXgoKSBtZXRob2QgYWRkZWQgc3VwcG9ydCBmb3IgKnN0b3AqIGFuZCAqc3RhcnQqCisgICAgICBhcmd1bWVudHMuCisKKwogLi4gY2xhc3M6OiBTZXQKICAgICAgICAgICAgTXV0YWJsZVNldAogCkBAIC0xMjQsNiArMTUyLDU2IEBACiAKICAgIEFCQ3MgZm9yIG1hcHBpbmcsIGl0ZW1zLCBrZXlzLCBhbmQgdmFsdWVzIDp0ZXJtOmB2aWV3cyA8dmlldz5gLgogCisuLiBjbGFzczo6IEF3YWl0YWJsZQorCisgICBBQkMgZm9yIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdHMsIHdoaWNoIGNhbiBiZSB1c2VkIGluIDprZXl3b3JkOmBhd2FpdGAKKyAgIGV4cHJlc3Npb25zLiAgQ3VzdG9tIGltcGxlbWVudGF0aW9ucyBtdXN0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2F3YWl0X19gCisgICBtZXRob2QuCisKKyAgIDp0ZXJtOmBDb3JvdXRpbmVgIG9iamVjdHMgYW5kIGluc3RhbmNlcyBvZiB0aGUKKyAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmVgIEFCQyBhcmUgYWxsIGluc3RhbmNlcyBvZiB0aGlzIEFCQy4KKworICAgLi4gbm90ZTo6CisgICAgICBJbiBDUHl0aG9uLCBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyBkZWNvcmF0ZWQgd2l0aAorICAgICAgOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAgb3IgOmZ1bmM6YGFzeW5jaW8uY29yb3V0aW5lYCkgYXJlCisgICAgICAqYXdhaXRhYmxlcyosIGV2ZW4gdGhvdWdoIHRoZXkgZG8gbm90IGhhdmUgYW4gOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorICAgICAgVXNpbmcgYGBpc2luc3RhbmNlKGdlbmNvcm8sIEF3YWl0YWJsZSlgYCBmb3IgdGhlbSB3aWxsIHJldHVybiBgYEZhbHNlYGAuCisgICAgICBVc2UgOmZ1bmM6YGluc3BlY3QuaXNhd2FpdGFibGVgIHRvIGRldGVjdCB0aGVtLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY2xhc3M6OiBDb3JvdXRpbmUKKworICAgQUJDIGZvciBjb3JvdXRpbmUgY29tcGF0aWJsZSBjbGFzc2VzLiAgVGhlc2UgaW1wbGVtZW50IHRoZQorICAgZm9sbG93aW5nIG1ldGhvZHMsIGRlZmluZWQgaW4gOnJlZjpgY29yb3V0aW5lLW9iamVjdHNgOgorICAgOm1ldGg6YH5jb3JvdXRpbmUuc2VuZGAsIDptZXRoOmB+Y29yb3V0aW5lLnRocm93YCwgYW5kCisgICA6bWV0aDpgfmNvcm91dGluZS5jbG9zZWAuICBDdXN0b20gaW1wbGVtZW50YXRpb25zIG11c3QgYWxzbyBpbXBsZW1lbnQKKyAgIDptZXRoOmBfX2F3YWl0X19gLiAgQWxsIDpjbGFzczpgQ29yb3V0aW5lYCBpbnN0YW5jZXMgYXJlIGFsc28gaW5zdGFuY2VzIG9mCisgICA6Y2xhc3M6YEF3YWl0YWJsZWAuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYC4KKworICAgLi4gbm90ZTo6CisgICAgICBJbiBDUHl0aG9uLCBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyBkZWNvcmF0ZWQgd2l0aAorICAgICAgOmZ1bmM6YHR5cGVzLmNvcm91dGluZWAgb3IgOmZ1bmM6YGFzeW5jaW8uY29yb3V0aW5lYCkgYXJlCisgICAgICAqYXdhaXRhYmxlcyosIGV2ZW4gdGhvdWdoIHRoZXkgZG8gbm90IGhhdmUgYW4gOm1ldGg6YF9fYXdhaXRfX2AgbWV0aG9kLgorICAgICAgVXNpbmcgYGBpc2luc3RhbmNlKGdlbmNvcm8sIENvcm91dGluZSlgYCBmb3IgdGhlbSB3aWxsIHJldHVybiBgYEZhbHNlYGAuCisgICAgICBVc2UgOmZ1bmM6YGluc3BlY3QuaXNhd2FpdGFibGVgIHRvIGRldGVjdCB0aGVtLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY2xhc3M6OiBBc3luY0l0ZXJhYmxlCisKKyAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgYGBfX2FpdGVyX19gYCBtZXRob2QuICBTZWUgYWxzbyB0aGUKKyAgIGRlZmluaXRpb24gb2YgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYWJsZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisuLiBjbGFzczo6IEFzeW5jSXRlcmF0b3IKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSBgYF9fYWl0ZXJfX2BgIGFuZCBgYF9fYW5leHRfX2BgCisgICBtZXRob2RzLiAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIFRoZXNlIEFCQ3MgYWxsb3cgdXMgdG8gYXNrIGNsYXNzZXMgb3IgaW5zdGFuY2VzIGlmIHRoZXkgcHJvdmlkZQogcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LCBmb3IgZXhhbXBsZTo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKaW5kZXggMzQ3Y2YxZi4uODEyMWNjNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdApAQCAtMzg3LDcgKzM4Nyw3IEBACiAgICAgICBTZWN0aW9uIDQuNi4zLCBFeGVyY2lzZSAxOSouCiAKICAgICAqIFRvIGVudW1lcmF0ZSBhbGwgZGlzdGluY3QgbXVsdGlzZXRzIG9mIGEgZ2l2ZW4gc2l6ZSBvdmVyIGEgZ2l2ZW4gc2V0IG9mCi0gICAgICBlbGVtZW50cywgc2VlIDpmdW5jOmBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnRgLgorICAgICAgZWxlbWVudHMsIHNlZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50YDoKIAogICAgICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCiAKQEAgLTQzNyw2ICs0MzcsMTMgQEAKICAgICAgICAgUmVtb3ZlIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBkZXF1ZSBsZWF2aW5nIGl0IHdpdGggbGVuZ3RoIDAuCiAKIAorICAgIC4uIG1ldGhvZDo6IGNvcHkoKQorCisgICAgICAgIENyZWF0ZSBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGVxdWUuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogICAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCiAKICAgICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBkZXF1ZSBlbGVtZW50cyBlcXVhbCB0byAqeCouCkBAIC00NTcsNiArNDY0LDIyIEBACiAgICAgICAgIGVsZW1lbnRzIGluIHRoZSBpdGVyYWJsZSBhcmd1bWVudC4KIAogCisgICAgLi4gbWV0aG9kOjogaW5kZXgoeFssIHN0YXJ0Wywgc3RvcF1dKQorCisgICAgICAgIFJldHVybiB0aGUgcG9zaXRpb24gb2YgKngqIGluIHRoZSBkZXF1ZSAoYXQgb3IgYWZ0ZXIgaW5kZXggKnN0YXJ0KgorICAgICAgICBhbmQgYmVmb3JlIGluZGV4ICpzdG9wKikuICBSZXR1cm5zIHRoZSBmaXJzdCBtYXRjaCBvciByYWlzZXMKKyAgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgaWYgbm90IGZvdW5kLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKyAgICAuLiBtZXRob2Q6OiBpbnNlcnQoaSwgeCkKKworICAgICAgICBJbnNlcnQgKngqIGludG8gdGhlIGRlcXVlIGF0IHBvc2l0aW9uICppKi4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAgICAgLi4gbWV0aG9kOjogcG9wKCkKIAogICAgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubwpAQCAtNDcxLDcgKzQ5NCw3IEBACiAKICAgICAuLiBtZXRob2Q6OiByZW1vdmUodmFsdWUpCiAKLSAgICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQorICAgICAgICBSZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnZhbHVlKi4gIElmIG5vdCBmb3VuZCwgcmFpc2VzIGEKICAgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIApAQCAtNTA0LDYgKzUyNyw5IEBACiBhY2Nlc3MgaXMgTygxKSBhdCBib3RoIGVuZHMgYnV0IHNsb3dzIHRvIE8obikgaW4gdGhlIG1pZGRsZS4gIEZvciBmYXN0IHJhbmRvbQogYWNjZXNzLCB1c2UgbGlzdHMgaW5zdGVhZC4KIAorU3RhcnRpbmcgaW4gdmVyc2lvbiAzLjUsIGRlcXVlcyBzdXBwb3J0IGBgX19hZGRfXygpYGAsIGBgX19tdWxfXygpYGAsCithbmQgYGBfX2ltdWxfXygpYGAuCisKIEV4YW1wbGU6CiAKIC4uIGRvY3Rlc3Q6OgpAQCAtODk5LDYgKzkyNSwxNSBAQAogCiAgICAgPj4+IFBvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKIAorRG9jc3RyaW5ncyBjYW4gYmUgY3VzdG9taXplZCBieSBtYWtpbmcgZGlyZWN0IGFzc2lnbm1lbnRzIHRvIHRoZSBgYF9fZG9jX19gYAorZmllbGRzOgorCisgICA+Pj4gQm9vayA9IG5hbWVkdHVwbGUoJ0Jvb2snLCBbJ2lkJywgJ3RpdGxlJywgJ2F1dGhvcnMnXSkKKyAgID4+PiBCb29rLl9fZG9jX18gPSAnSGFyZGNvdmVyIGJvb2sgaW4gYWN0aXZlIGNvbGxlY3Rpb24nCisgICA+Pj4gQm9vay5pZC5fX2RvY19fID0gJzEzLWRpZ2l0IElTQk4nCisgICA+Pj4gQm9vay50aXRsZS5fX2RvY19fID0gJ1RpdGxlIG9mIGZpcnN0IHByaW50aW5nJworICAgPj4+IEJvb2suYXV0aG9yLl9fZG9jX18gPSAnTGlzdCBvZiBhdXRob3JzIHNvcnRlZCBieSBsYXN0IG5hbWUnCisKIERlZmF1bHQgdmFsdWVzIGNhbiBiZSBpbXBsZW1lbnRlZCBieSB1c2luZyA6bWV0aDpgX3JlcGxhY2VgIHRvCiBjdXN0b21pemUgYSBwcm90b3R5cGUgaW5zdGFuY2U6CiAKQEAgLTk4Miw2ICsxMDE3LDkgQEAKIGtleXdvcmQgYXJndW1lbnRzLCBidXQgdGhlaXIgb3JkZXIgaXMgbG9zdCBiZWNhdXNlIFB5dGhvbidzIGZ1bmN0aW9uIGNhbGwKIHNlbWFudGljcyBwYXNzLWluIGtleXdvcmQgYXJndW1lbnRzIHVzaW5nIGEgcmVndWxhciB1bm9yZGVyZWQgZGljdGlvbmFyeS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YCBvZiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBub3cKKyAgIHN1cHBvcnQgcmV2ZXJzZSBpdGVyYXRpb24gdXNpbmcgOmZ1bmM6YHJldmVyc2VkYC4KIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgRXhhbXBsZXMgYW5kIFJlY2lwZXMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC0xMTE5LDMgKzExNTcsNyBAQAogICAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKICAgICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZwogICAgIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgTmV3IG1ldGhvZHMgYGBfX2dldG5ld2FyZ3NfX2BgLCBgYF9fcm1vZF9fYGAsIGBgY2FzZWZvbGRgYCwKKyAgICAgICBgYGZvcm1hdF9tYXBgYCwgYGBpc3ByaW50YWJsZWBgLCBhbmQgYGBtYWtldHJhbnNgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0IGIvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKaW5kZXggOTcxMmRlMi4uYzU3MzZmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKQEAgLTQyLDcgKzQyLDggQEAKIAogLi4gY21kb3B0aW9uOjogLXEKIAotICAgRG8gbm90IHByaW50IHRoZSBsaXN0IG9mIGZpbGVzIGNvbXBpbGVkLCBwcmludCBvbmx5IGVycm9yIG1lc3NhZ2VzLgorICAgRG8gbm90IHByaW50IHRoZSBsaXN0IG9mIGZpbGVzIGNvbXBpbGVkLiBJZiBwYXNzZWQgb25jZSwgZXJyb3IgbWVzc2FnZXMgd2lsbAorICAgc3RpbGwgYmUgcHJpbnRlZC4gSWYgcGFzc2VkIHR3aWNlIChgYC1xcWBgKSwgYWxsIG91dHB1dCBpcyBzdXBwcmVzc2VkLgogCiAuLiBjbWRvcHRpb246OiAtZCBkZXN0ZGlyCiAKQEAgLTcwLDkgKzcxLDI4IEBACiAgICBpcyB0byB3cml0ZSBmaWxlcyB0byB0aGVpciA6cGVwOmAzMTQ3YCBsb2NhdGlvbnMgYW5kIG5hbWVzLCB3aGljaCBhbGxvd3MKICAgIGJ5dGUtY29kZSBmaWxlcyBmcm9tIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiB0byBjb2V4aXN0LgogCisuLiBjbWRvcHRpb246OiAtcgorCisgICBDb250cm9sIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBsZXZlbCBmb3Igc3ViZGlyZWN0b3JpZXMuCisgICBJZiB0aGlzIGlzIGdpdmVuLCB0aGVuIGBgLWxgYCBvcHRpb24gd2lsbCBub3QgYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgOnByb2dyYW06YHB5dGhvbiAtbSBjb21waWxlYWxsIDxkaXJlY3Rvcnk+IC1yIDBgIGlzIGVxdWl2YWxlbnQgdG8KKyAgIDpwcm9ncmFtOmBweXRob24gLW0gY29tcGlsZWFsbCA8ZGlyZWN0b3J5PiAtbGAuCisKKy4uIGNtZG9wdGlvbjo6IC1qIE4KKworICAgVXNlICpOKiB3b3JrZXJzIHRvIGNvbXBpbGUgdGhlIGZpbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgorICAgSWYgYGAwYGAgaXMgdXNlZCwgdGhlbiB0aGUgcmVzdWx0IG9mIDpmdW5jOmBvcy5jcHVfY291bnQoKWAKKyAgIHdpbGwgYmUgdXNlZC4KKwogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgIEFkZGVkIHRoZSBgYC1pYGAsIGBgLWJgYCBhbmQgYGAtaGBgIG9wdGlvbnMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBBZGRlZCB0aGUgIGBgLWpgYCwgYGAtcmBgLCBhbmQgYGAtcXFgYCBvcHRpb25zLiAgYGAtcWBgIG9wdGlvbgorICAgd2FzIGNoYW5nZWQgdG8gYSBtdWx0aWxldmVsIHZhbHVlLiAgYGAtYmBgIHdpbGwgYWx3YXlzIHByb2R1Y2UgYQorICAgYnl0ZS1jb2RlIGZpbGUgZW5kaW5nIGluIGBgLnB5Y2BgLCBuZXZlciBgYC5weW9gYC4KKworCiBUaGVyZSBpcyBubyBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIGNvbnRyb2wgdGhlIG9wdGltaXphdGlvbiBsZXZlbCB1c2VkIGJ5IHRoZQogOmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLCBiZWNhdXNlIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXRzZWxmIGFscmVhZHkKIHByb3ZpZGVzIHRoZSBvcHRpb246IDpwcm9ncmFtOmBweXRob24gLU8gLW0gY29tcGlsZWFsbGAuCkBAIC04MCw3ICsxMDAsNyBAQAogUHVibGljIGZ1bmN0aW9ucwogLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKKy4uIGZ1bmN0aW9uOjogY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEsIHdvcmtlcnM9MSkKIAogICAgUmVjdXJzaXZlbHkgZGVzY2VuZCB0aGUgZGlyZWN0b3J5IHRyZWUgbmFtZWQgYnkgKmRpciosIGNvbXBpbGluZyBhbGwgOmZpbGU6YC5weWAKICAgIGZpbGVzIGFsb25nIHRoZSB3YXkuCkBAIC0xMDEsOCArMTIxLDkgQEAKICAgIGZpbGUgY29uc2lkZXJlZCBmb3IgY29tcGlsYXRpb24sIGFuZCBpZiBpdCByZXR1cm5zIGEgdHJ1ZSB2YWx1ZSwgdGhlIGZpbGUKICAgIGlzIHNraXBwZWQuCiAKLSAgIElmICpxdWlldCogaXMgdHJ1ZSwgbm90aGluZyBpcyBwcmludGVkIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQgdW5sZXNzIGVycm9ycwotICAgb2NjdXIuCisgICBJZiAqcXVpZXQqIGlzIGBgRmFsc2VgYCBvciBgYDBgYCAodGhlIGRlZmF1bHQpLCB0aGUgZmlsZW5hbWVzIGFuZCBvdGhlcgorICAgaW5mb3JtYXRpb24gYXJlIHByaW50ZWQgdG8gc3RhbmRhcmQgb3V0LiBTZXQgdG8gYGAxYGAsIG9ubHkgZXJyb3JzIGFyZQorICAgcHJpbnRlZC4gU2V0IHRvIGBgMmBgLCBhbGwgb3V0cHV0IGlzIHN1cHByZXNzZWQuCiAKICAgIElmICpsZWdhY3kqIGlzIHRydWUsIGJ5dGUtY29kZSBmaWxlcyBhcmUgd3JpdHRlbiB0byB0aGVpciBsZWdhY3kgbG9jYXRpb25zCiAgICBhbmQgbmFtZXMsIHdoaWNoIG1heSBvdmVyd3JpdGUgYnl0ZS1jb2RlIGZpbGVzIGNyZWF0ZWQgYnkgYW5vdGhlciB2ZXJzaW9uIG9mCkBAIC0xMTMsMTEgKzEzNCwyNiBAQAogICAgKm9wdGltaXplKiBzcGVjaWZpZXMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBmb3IgdGhlIGNvbXBpbGVyLiAgSXQgaXMgcGFzc2VkIHRvCiAgICB0aGUgYnVpbHQtaW4gOmZ1bmM6YGNvbXBpbGVgIGZ1bmN0aW9uLgogCisgICBUaGUgYXJndW1lbnQgKndvcmtlcnMqIHNwZWNpZmllcyBob3cgbWFueSB3b3JrZXJzIGFyZSB1c2VkIHRvCisgICBjb21waWxlIGZpbGVzIGluIHBhcmFsbGVsLiBUaGUgZGVmYXVsdCBpcyB0byBub3QgdXNlIG11bHRpcGxlIHdvcmtlcnMuCisgICBJZiB0aGUgcGxhdGZvcm0gY2FuJ3QgdXNlIG11bHRpcGxlIHdvcmtlcnMgYW5kICp3b3JrZXJzKiBhcmd1bWVudCBpcyBnaXZlbiwKKyAgIHRoZW4gc2VxdWVudGlhbCBjb21waWxhdGlvbiB3aWxsIGJlIHVzZWQgYXMgYSBmYWxsYmFjay4gIElmICp3b3JrZXJzKiBpcworICAgbG93ZXIgdGhhbiBgYDBgYCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqbGVnYWN5KiBhbmQgKm9wdGltaXplKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgKndvcmtlcnMqIHBhcmFtZXRlci4KIAotLi4gZnVuY3Rpb246OiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PUZhbHNlLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpxdWlldCogcGFyYW1ldGVyIHdhcyBjaGFuZ2VkIHRvIGEgbXVsdGlsZXZlbCB2YWx1ZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqbGVnYWN5KiBwYXJhbWV0ZXIgb25seSB3cml0ZXMgb3V0IGBgLnB5Y2BgIGZpbGVzLCBub3QgYGAucHlvYGAgZmlsZXMKKyAgICAgIG5vIG1hdHRlciB3aGF0IHRoZSB2YWx1ZSBvZiAqb3B0aW1pemUqIGlzLgorCisuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAogICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4KIApAQCAtMTMxLDggKzE2Nyw5IEBACiAgICBmaWxlIGJlaW5nIGNvbXBpbGVkLCBhbmQgaWYgaXQgcmV0dXJucyBhIHRydWUgdmFsdWUsIHRoZSBmaWxlIGlzIG5vdAogICAgY29tcGlsZWQgYW5kIGBgVHJ1ZWBgIGlzIHJldHVybmVkLgogCi0gICBJZiAqcXVpZXQqIGlzIHRydWUsIG5vdGhpbmcgaXMgcHJpbnRlZCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHVubGVzcyBlcnJvcnMKLSAgIG9jY3VyLgorICAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgb3IgYGAwYGAgKHRoZSBkZWZhdWx0KSwgdGhlIGZpbGVuYW1lcyBhbmQgb3RoZXIKKyAgIGluZm9ybWF0aW9uIGFyZSBwcmludGVkIHRvIHN0YW5kYXJkIG91dC4gU2V0IHRvIGBgMWBgLCBvbmx5IGVycm9ycyBhcmUKKyAgIHByaW50ZWQuIFNldCB0byBgYDJgYCwgYWxsIG91dHB1dCBpcyBzdXBwcmVzc2VkLgogCiAgICBJZiAqbGVnYWN5KiBpcyB0cnVlLCBieXRlLWNvZGUgZmlsZXMgYXJlIHdyaXR0ZW4gdG8gdGhlaXIgbGVnYWN5IGxvY2F0aW9ucwogICAgYW5kIG5hbWVzLCB3aGljaCBtYXkgb3ZlcndyaXRlIGJ5dGUtY29kZSBmaWxlcyBjcmVhdGVkIGJ5IGFub3RoZXIgdmVyc2lvbiBvZgpAQCAtMTQ1LDggKzE4MiwxNCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpxdWlldCogcGFyYW1ldGVyIHdhcyBjaGFuZ2VkIHRvIGEgbXVsdGlsZXZlbCB2YWx1ZS4KIAotLi4gZnVuY3Rpb246OiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9VHJ1ZSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqbGVnYWN5KiBwYXJhbWV0ZXIgb25seSB3cml0ZXMgb3V0IGBgLnB5Y2BgIGZpbGVzLCBub3QgYGAucHlvYGAgZmlsZXMKKyAgICAgIG5vIG1hdHRlciB3aGF0IHRoZSB2YWx1ZSBvZiAqb3B0aW1pemUqIGlzLgorCisuLiBmdW5jdGlvbjo6IGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1UcnVlLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKICAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gSWYKICAgICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCkBAIC0xNTcsNiArMjAwLDEyIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlICpsZWdhY3kqIGFuZCAqb3B0aW1pemUqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpxdWlldCogcGFyYW1ldGVyIHdhcyBjaGFuZ2VkIHRvIGEgbXVsdGlsZXZlbCB2YWx1ZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqbGVnYWN5KiBwYXJhbWV0ZXIgb25seSB3cml0ZXMgb3V0IGBgLnB5Y2BgIGZpbGVzLCBub3QgYGAucHlvYGAgZmlsZXMKKyAgICAgIG5vIG1hdHRlciB3aGF0IHRoZSB2YWx1ZSBvZiAqb3B0aW1pemUqIGlzLgogCiBUbyBmb3JjZSBhIHJlY29tcGlsZSBvZiBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGluIHRoZSA6ZmlsZTpgTGliL2AKIHN1YmRpcmVjdG9yeSBhbmQgYWxsIGl0cyBzdWJkaXJlY3Rvcmllczo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCBjYzhiMzM1Li45YWM2MTcxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTM4LDcgKzM4LDcgQEAKICAgICAgICAgICAgICAgZnV0dXJlID0gZXhlY3V0b3Iuc3VibWl0KHBvdywgMzIzLCAxMjM1KQogICAgICAgICAgICAgICBwcmludChmdXR1cmUucmVzdWx0KCkpCiAKLSAgICAuLiBtZXRob2Q6OiBtYXAoZnVuYywgKml0ZXJhYmxlcywgdGltZW91dD1Ob25lKQorICAgIC4uIG1ldGhvZDo6IG1hcChmdW5jLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUsIGNodW5rc2l6ZT0xKQogCiAgICAgICAgRXF1aXZhbGVudCB0byA6ZnVuYzpgbWFwKGZ1bmMsICppdGVyYWJsZXMpIDxtYXA+YCBleGNlcHQgKmZ1bmMqIGlzIGV4ZWN1dGVkCiAgICAgICAgYXN5bmNocm9ub3VzbHkgYW5kIHNldmVyYWwgY2FsbHMgdG8gKmZ1bmMqIG1heSBiZSBtYWRlIGNvbmN1cnJlbnRseS4gIFRoZQpAQCAtNDgsNyArNDgsMTYgQEAKICAgICAgICAqdGltZW91dCogY2FuIGJlIGFuIGludCBvciBhIGZsb2F0LiAgSWYgKnRpbWVvdXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IKICAgICAgICBgYE5vbmVgYCwgdGhlcmUgaXMgbm8gbGltaXQgdG8gdGhlIHdhaXQgdGltZS4gIElmIGEgY2FsbCByYWlzZXMgYW4KICAgICAgICBleGNlcHRpb24sIHRoZW4gdGhhdCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBpdHMgdmFsdWUgaXMKLSAgICAgICByZXRyaWV2ZWQgZnJvbSB0aGUgaXRlcmF0b3IuCisgICAgICAgcmV0cmlldmVkIGZyb20gdGhlIGl0ZXJhdG9yLiBXaGVuIHVzaW5nIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAsIHRoaXMKKyAgICAgICBtZXRob2QgY2hvcHMgKml0ZXJhYmxlcyogaW50byBhIG51bWJlciBvZiBjaHVua3Mgd2hpY2ggaXQgc3VibWl0cyB0byB0aGUKKyAgICAgICBwb29sIGFzIHNlcGFyYXRlIHRhc2tzLiBUaGUgKGFwcHJveGltYXRlKSBzaXplIG9mIHRoZXNlIGNodW5rcyBjYW4gYmUKKyAgICAgICBzcGVjaWZpZWQgYnkgc2V0dGluZyAqY2h1bmtzaXplKiB0byBhIHBvc2l0aXZlIGludGVnZXIuIEZvciB2ZXJ5IGxvbmcKKyAgICAgICBpdGVyYWJsZXMsIHVzaW5nIGEgbGFyZ2UgdmFsdWUgZm9yICpjaHVua3NpemUqIGNhbiBzaWduaWZpY2FudGx5IGltcHJvdmUKKyAgICAgICBwZXJmb3JtYW5jZSBjb21wYXJlZCB0byB0aGUgZGVmYXVsdCBzaXplIG9mIDEuIFdpdGggOmNsYXNzOmBUaHJlYWRQb29sRXhlY3V0b3JgLAorICAgICAgICpjaHVua3NpemUqIGhhcyBubyBlZmZlY3QuCisKKyAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgIEFkZGVkIHRoZSAqY2h1bmtzaXplKiBhcmd1bWVudC4KIAogICAgIC4uIG1ldGhvZDo6IHNodXRkb3duKHdhaXQ9VHJ1ZSkKIApAQCAtMTE1LDExICsxMjQsMTkgQEAKICAgIGV4ZWN1dG9yLnN1Ym1pdCh3YWl0X29uX2Z1dHVyZSkKIAogCi0uLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2VycykKKy4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUpCiAKICAgIEFuIDpjbGFzczpgRXhlY3V0b3JgIHN1YmNsYXNzIHRoYXQgdXNlcyBhIHBvb2wgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqCiAgICB0aHJlYWRzIHRvIGV4ZWN1dGUgY2FsbHMgYXN5bmNocm9ub3VzbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiAqbWF4X3dvcmtlcnMqIGlzIGBgTm9uZWBgIG9yCisgICAgICBub3QgZ2l2ZW4sIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMgb24gdGhlIG1hY2hpbmUsCisgICAgICBtdWx0aXBsaWVkIGJ5IGBgNWBgLCBhc3N1bWluZyB0aGF0IDpjbGFzczpgVGhyZWFkUG9vbEV4ZWN1dG9yYCBpcyBvZnRlbgorICAgICAgdXNlZCB0byBvdmVybGFwIEkvTyBpbnN0ZWFkIG9mIENQVSB3b3JrIGFuZCB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKKyAgICAgIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKKyAgICAgIGZvciA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLgorCiAKIC4uIF90aHJlYWRwb29sZXhlY3V0b3ItZXhhbXBsZToKIApAQCAtMTc1LDYgKzE5Miw4IEBACiAgICBBbiA6Y2xhc3M6YEV4ZWN1dG9yYCBzdWJjbGFzcyB0aGF0IGV4ZWN1dGVzIGNhbGxzIGFzeW5jaHJvbm91c2x5IHVzaW5nIGEgcG9vbAogICAgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqIHByb2Nlc3Nlcy4gIElmICptYXhfd29ya2VycyogaXMgYGBOb25lYGAgb3Igbm90CiAgICBnaXZlbiwgaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBvbiB0aGUgbWFjaGluZS4KKyAgIElmICptYXhfd29ya2VycyogaXMgbG93ZXIgb3IgZXF1YWwgdG8gYGAwYGAsIHRoZW4gYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgd2lsbCBiZSByYWlzZWQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBXaGVuIG9uZSBvZiB0aGUgd29ya2VyIHByb2Nlc3NlcyB0ZXJtaW5hdGVzIGFicnVwdGx5LCBhCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25maWdwYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdAppbmRleCA5MjU1MWJjLi5jOTE4N2EzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25maWdwYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5yc3QKQEAgLTExLDYgKzExLDggQEAKIC4uIHNlY3Rpb25hdXRob3I6OiBDaHJpc3RvcGhlciBHLiBQZXRyaWxsaSA8cGV0cmlsbGlAYW1iZXIub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IMWBdWthc3ogTGFuZ2EgPGx1a2FzekBsYW5nYS5wbD4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29uZmlncGFyc2VyLnB5YAorCiAuLiBpbmRleDo6CiAgICBwYWlyOiAuaW5pOyBmaWxlCiAgICBwYWlyOiBjb25maWd1cmF0aW9uOyBmaWxlCkBAIC0xNDIsMTIgKzE0NCwxMyBAQAogICAgPj4+IGZsb2F0KHRvcHNlY3JldFsnQ29tcHJlc3Npb25MZXZlbCddKQogICAgOS4wCiAKLUV4dHJhY3RpbmcgQm9vbGVhbiB2YWx1ZXMgaXMgbm90IHRoYXQgc2ltcGxlLCB0aG91Z2guICBQYXNzaW5nIHRoZSB2YWx1ZQotdG8gYGBib29sKClgYCB3b3VsZCBkbyBubyBnb29kIHNpbmNlIGBgYm9vbCgnRmFsc2UnKWBgIGlzIHN0aWxsCi1gYFRydWVgYC4gIFRoaXMgaXMgd2h5IGNvbmZpZyBwYXJzZXJzIGFsc28gcHJvdmlkZSA6bWV0aDpgZ2V0Ym9vbGVhbmAuCi1UaGlzIG1ldGhvZCBpcyBjYXNlLWluc2Vuc2l0aXZlIGFuZCByZWNvZ25pemVzIEJvb2xlYW4gdmFsdWVzIGZyb20KLWBgJ3llcydgYC9gYCdubydgYCwgYGAnb24nYGAvYGAnb2ZmJ2BgIGFuZCBgYCcxJ2BgL2BgJzAnYGAgWzFdXy4KLUZvciBleGFtcGxlOgorU2luY2UgdGhpcyB0YXNrIGlzIHNvIGNvbW1vbiwgY29uZmlnIHBhcnNlcnMgcHJvdmlkZSBhIHJhbmdlIG9mIGhhbmR5IGdldHRlcgorbWV0aG9kcyB0byBoYW5kbGUgaW50ZWdlcnMsIGZsb2F0cyBhbmQgYm9vbGVhbnMuICBUaGUgbGFzdCBvbmUgaXMgdGhlIG1vc3QKK2ludGVyZXN0aW5nIGJlY2F1c2Ugc2ltcGx5IHBhc3NpbmcgdGhlIHZhbHVlIHRvIGBgYm9vbCgpYGAgd291bGQgZG8gbm8gZ29vZAorc2luY2UgYGBib29sKCdGYWxzZScpYGAgaXMgc3RpbGwgYGBUcnVlYGAuICBUaGlzIGlzIHdoeSBjb25maWcgcGFyc2VycyBhbHNvCitwcm92aWRlIDptZXRoOmBnZXRib29sZWFuYC4gIFRoaXMgbWV0aG9kIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHJlY29nbml6ZXMKK0Jvb2xlYW4gdmFsdWVzIGZyb20gYGAneWVzJ2BgL2BgJ25vJ2BgLCBgYCdvbidgYC9gYCdvZmYnYGAsCitgYCd0cnVlJ2BgL2BgJ2ZhbHNlJ2BgIGFuZCBgYCcxJ2BgL2BgJzAnYGAgWzFdXy4gIEZvciBleGFtcGxlOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTU5LDEwICsxNjIsOCBAQAogICAgVHJ1ZQogCiBBcGFydCBmcm9tIDptZXRoOmBnZXRib29sZWFuYCwgY29uZmlnIHBhcnNlcnMgYWxzbyBwcm92aWRlIGVxdWl2YWxlbnQKLTptZXRoOmBnZXRpbnRgIGFuZCA6bWV0aDpgZ2V0ZmxvYXRgIG1ldGhvZHMsIGJ1dCB0aGVzZSBhcmUgZmFyIGxlc3MKLXVzZWZ1bCBzaW5jZSBjb252ZXJzaW9uIHVzaW5nIDpmdW5jOmBpbnRgIGFuZCA6ZnVuYzpgZmxvYXRgIGlzCi1zdWZmaWNpZW50IGZvciB0aGVzZSB0eXBlcy4KLQorOm1ldGg6YGdldGludGAgYW5kIDptZXRoOmBnZXRmbG9hdGAgbWV0aG9kcy4gIFlvdSBjYW4gcmVnaXN0ZXIgeW91ciBvd24KK2NvbnZlcnRlcnMgYW5kIGN1c3RvbWl6ZSB0aGUgcHJvdmlkZWQgb25lcy4gWzFdXwogCiBGYWxsYmFjayBWYWx1ZXMKIC0tLS0tLS0tLS0tLS0tLQpAQCAtMzE3LDExICszMTgsMTEgQEAKIC4uIGNsYXNzOjogRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkKIAogICAgQW4gYWx0ZXJuYXRpdmUgaGFuZGxlciBmb3IgaW50ZXJwb2xhdGlvbiB3aGljaCBpbXBsZW1lbnRzIGEgbW9yZSBhZHZhbmNlZAotICAgc3ludGF4LCB1c2VkIGZvciBpbnN0YW5jZSBpbiBgYHpjLmJ1aWxkb3V0YGAuIEV4dGVuZGVkIGludGVycG9sYXRpb24gaXMKKyAgIHN5bnRheCwgdXNlZCBmb3IgaW5zdGFuY2UgaW4gYGB6Yy5idWlsZG91dGBgLiAgRXh0ZW5kZWQgaW50ZXJwb2xhdGlvbiBpcwogICAgdXNpbmcgYGAke3NlY3Rpb246b3B0aW9ufWBgIHRvIGRlbm90ZSBhIHZhbHVlIGZyb20gYSBmb3JlaWduIHNlY3Rpb24uCi0gICBJbnRlcnBvbGF0aW9uIGNhbiBzcGFuIG11bHRpcGxlIGxldmVscy4gRm9yIGNvbnZlbmllbmNlLCBpZiB0aGUgYGBzZWN0aW9uOmBgCi0gICBwYXJ0IGlzIG9taXR0ZWQsIGludGVycG9sYXRpb24gZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgc2VjdGlvbiAoYW5kIHBvc3NpYmx5Ci0gICB0aGUgZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgc3BlY2lhbCBzZWN0aW9uKS4KKyAgIEludGVycG9sYXRpb24gY2FuIHNwYW4gbXVsdGlwbGUgbGV2ZWxzLiAgRm9yIGNvbnZlbmllbmNlLCBpZiB0aGUKKyAgIGBgc2VjdGlvbjpgYCBwYXJ0IGlzIG9taXR0ZWQsIGludGVycG9sYXRpb24gZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgc2VjdGlvbgorICAgKGFuZCBwb3NzaWJseSB0aGUgZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgc3BlY2lhbCBzZWN0aW9uKS4KIAogICAgRm9yIGV4YW1wbGUsIHRoZSBjb25maWd1cmF0aW9uIHNwZWNpZmllZCBhYm92ZSB3aXRoIGJhc2ljIGludGVycG9sYXRpb24sCiAgICB3b3VsZCBsb29rIGxpa2UgdGhpcyB3aXRoIGV4dGVuZGVkIGludGVycG9sYXRpb246CkBAIC0zOTksMTMgKzQwMCwxMyBAQAogICAqIGBgcGFyc2VyLnBvcGl0ZW0oKWBgIG5ldmVyIHJldHVybnMgaXQuCiAKICogYGBwYXJzZXIuZ2V0KHNlY3Rpb24sIG9wdGlvbiwgKiprd2FyZ3MpYGAgLSB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzICoqbm90KioKLSAgYSBmYWxsYmFjayB2YWx1ZS4gTm90ZSBob3dldmVyIHRoYXQgdGhlIHNlY3Rpb24tbGV2ZWwgYGBnZXQoKWBgIG1ldGhvZHMgYXJlCisgIGEgZmFsbGJhY2sgdmFsdWUuICBOb3RlIGhvd2V2ZXIgdGhhdCB0aGUgc2VjdGlvbi1sZXZlbCBgYGdldCgpYGAgbWV0aG9kcyBhcmUKICAgY29tcGF0aWJsZSBib3RoIHdpdGggdGhlIG1hcHBpbmcgcHJvdG9jb2wgYW5kIHRoZSBjbGFzc2ljIGNvbmZpZ3BhcnNlciBBUEkuCiAKICogYGBwYXJzZXIuaXRlbXMoKWBgIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZyBwcm90b2NvbCAocmV0dXJucyBhIGxpc3Qgb2YKICAgKnNlY3Rpb25fbmFtZSosICpzZWN0aW9uX3Byb3h5KiBwYWlycyBpbmNsdWRpbmcgdGhlIERFRkFVTFRTRUNUKS4gIEhvd2V2ZXIsCiAgIHRoaXMgbWV0aG9kIGNhbiBhbHNvIGJlIGludm9rZWQgd2l0aCBhcmd1bWVudHM6IGBgcGFyc2VyLml0ZW1zKHNlY3Rpb24sIHJhdywKLSAgdmFycylgYC4gVGhlIGxhdHRlciBjYWxsIHJldHVybnMgYSBsaXN0IG9mICpvcHRpb24qLCAqdmFsdWUqIHBhaXJzIGZvcgorICB2YXJzKWBgLiAgVGhlIGxhdHRlciBjYWxsIHJldHVybnMgYSBsaXN0IG9mICpvcHRpb24qLCAqdmFsdWUqIHBhaXJzIGZvcgogICBhIHNwZWNpZmllZCBgYHNlY3Rpb25gYCwgd2l0aCBhbGwgaW50ZXJwb2xhdGlvbnMgZXhwYW5kZWQgKHVubGVzcwogICBgYHJhdz1UcnVlYGAgaXMgcHJvdmlkZWQpLgogCkBAIC01MzksOSArNTQwLDkgQEAKIAogKiAqZGVsaW1pdGVycyosIGRlZmF1bHQgdmFsdWU6IGBgKCc9JywgJzonKWBgCiAKLSAgRGVsaW1pdGVycyBhcmUgc3Vic3RyaW5ncyB0aGF0IGRlbGltaXQga2V5cyBmcm9tIHZhbHVlcyB3aXRoaW4gYSBzZWN0aW9uLiBUaGUKLSAgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGRlbGltaXRpbmcgc3Vic3RyaW5nIG9uIGEgbGluZSBpcyBjb25zaWRlcmVkIGEgZGVsaW1pdGVyLgotICBUaGlzIG1lYW5zIHZhbHVlcyAoYnV0IG5vdCBrZXlzKSBjYW4gY29udGFpbiB0aGUgZGVsaW1pdGVycy4KKyAgRGVsaW1pdGVycyBhcmUgc3Vic3RyaW5ncyB0aGF0IGRlbGltaXQga2V5cyBmcm9tIHZhbHVlcyB3aXRoaW4gYSBzZWN0aW9uLgorICBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGRlbGltaXRpbmcgc3Vic3RyaW5nIG9uIGEgbGluZSBpcyBjb25zaWRlcmVkCisgIGEgZGVsaW1pdGVyLiAgVGhpcyBtZWFucyB2YWx1ZXMgKGJ1dCBub3Qga2V5cykgY2FuIGNvbnRhaW4gdGhlIGRlbGltaXRlcnMuCiAKICAgU2VlIGFsc28gdGhlICpzcGFjZV9hcm91bmRfZGVsaW1pdGVycyogYXJndW1lbnQgdG8KICAgOm1ldGg6YENvbmZpZ1BhcnNlci53cml0ZWAuCkBAIC01NTMsNyArNTU0LDcgQEAKICAgQ29tbWVudCBwcmVmaXhlcyBhcmUgc3RyaW5ncyB0aGF0IGluZGljYXRlIHRoZSBzdGFydCBvZiBhIHZhbGlkIGNvbW1lbnQgd2l0aGluCiAgIGEgY29uZmlnIGZpbGUuICpjb21tZW50X3ByZWZpeGVzKiBhcmUgdXNlZCBvbmx5IG9uIG90aGVyd2lzZSBlbXB0eSBsaW5lcwogICAob3B0aW9uYWxseSBpbmRlbnRlZCkgd2hlcmVhcyAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqIGNhbiBiZSB1c2VkIGFmdGVyCi0gIGV2ZXJ5IHZhbGlkIHZhbHVlIChlLmcuICBzZWN0aW9uIG5hbWVzLCBvcHRpb25zIGFuZCBlbXB0eSBsaW5lcyBhcyB3ZWxsKS4gQnkKKyAgZXZlcnkgdmFsaWQgdmFsdWUgKGUuZy4gc2VjdGlvbiBuYW1lcywgb3B0aW9ucyBhbmQgZW1wdHkgbGluZXMgYXMgd2VsbCkuICBCeQogICBkZWZhdWx0IGlubGluZSBjb21tZW50cyBhcmUgZGlzYWJsZWQgYW5kIGBgJyMnYGAgYW5kIGBgJzsnYGAgYXJlIHVzZWQgYXMKICAgcHJlZml4ZXMgZm9yIHdob2xlIGxpbmUgY29tbWVudHMuCiAKQEAgLTU2MywxMCArNTY0LDEwIEBACiAKICAgUGxlYXNlIG5vdGUgdGhhdCBjb25maWcgcGFyc2VycyBkb24ndCBzdXBwb3J0IGVzY2FwaW5nIG9mIGNvbW1lbnQgcHJlZml4ZXMgc28KICAgdXNpbmcgKmlubGluZV9jb21tZW50X3ByZWZpeGVzKiBtYXkgcHJldmVudCB1c2VycyBmcm9tIHNwZWNpZnlpbmcgb3B0aW9uCi0gIHZhbHVlcyB3aXRoIGNoYXJhY3RlcnMgdXNlZCBhcyBjb21tZW50IHByZWZpeGVzLiBXaGVuIGluIGRvdWJ0LCBhdm9pZCBzZXR0aW5nCi0gICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyouIEluIGFueSBjaXJjdW1zdGFuY2VzLCB0aGUgb25seSB3YXkgb2Ygc3RvcmluZwotICBjb21tZW50IHByZWZpeCBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIGluIG11bHRpbGluZSB2YWx1ZXMgaXMgdG8KLSAgaW50ZXJwb2xhdGUgdGhlIHByZWZpeCwgZm9yIGV4YW1wbGU6OgorICB2YWx1ZXMgd2l0aCBjaGFyYWN0ZXJzIHVzZWQgYXMgY29tbWVudCBwcmVmaXhlcy4gIFdoZW4gaW4gZG91YnQsIGF2b2lkCisgIHNldHRpbmcgKmlubGluZV9jb21tZW50X3ByZWZpeGVzKi4gIEluIGFueSBjaXJjdW1zdGFuY2VzLCB0aGUgb25seSB3YXkgb2YKKyAgc3RvcmluZyBjb21tZW50IHByZWZpeCBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIGluIG11bHRpbGluZQorICB2YWx1ZXMgaXMgdG8gaW50ZXJwb2xhdGUgdGhlIHByZWZpeCwgZm9yIGV4YW1wbGU6OgogCiAgICAgPj4+IGZyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIsIEV4dGVuZGVkSW50ZXJwb2xhdGlvbgogICAgID4+PiBwYXJzZXIgPSBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1FeHRlbmRlZEludGVycG9sYXRpb24oKSkKQEAgLTYxMSw3ICs2MTIsNyBAQAogCiAgIFdoZW4gc2V0IHRvIGBgVHJ1ZWBgLCB0aGUgcGFyc2VyIHdpbGwgbm90IGFsbG93IGZvciBhbnkgc2VjdGlvbiBvciBvcHRpb24KICAgZHVwbGljYXRlcyB3aGlsZSByZWFkaW5nIGZyb20gYSBzaW5nbGUgc291cmNlICh1c2luZyA6bWV0aDpgcmVhZF9maWxlYCwKLSAgOm1ldGg6YHJlYWRfc3RyaW5nYCBvciA6bWV0aDpgcmVhZF9kaWN0YCkuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBzdHJpY3QKKyAgOm1ldGg6YHJlYWRfc3RyaW5nYCBvciA6bWV0aDpgcmVhZF9kaWN0YCkuICBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2Ugc3RyaWN0CiAgIHBhcnNlcnMgaW4gbmV3IGFwcGxpY2F0aW9ucy4KIAogICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpAQCAtNjQ2LDEyICs2NDcsMTIgQEAKIAogICBUaGUgY29udmVudGlvbiBvZiBhbGxvd2luZyBhIHNwZWNpYWwgc2VjdGlvbiBvZiBkZWZhdWx0IHZhbHVlcyBmb3Igb3RoZXIKICAgc2VjdGlvbnMgb3IgaW50ZXJwb2xhdGlvbiBwdXJwb3NlcyBpcyBhIHBvd2VyZnVsIGNvbmNlcHQgb2YgdGhpcyBsaWJyYXJ5LAotICBsZXR0aW5nIHVzZXJzIGNyZWF0ZSBjb21wbGV4IGRlY2xhcmF0aXZlIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHNlY3Rpb24gaXMKKyAgbGV0dGluZyB1c2VycyBjcmVhdGUgY29tcGxleCBkZWNsYXJhdGl2ZSBjb25maWd1cmF0aW9ucy4gIFRoaXMgc2VjdGlvbiBpcwogICBub3JtYWxseSBjYWxsZWQgYGAiREVGQVVMVCJgYCBidXQgdGhpcyBjYW4gYmUgY3VzdG9taXplZCB0byBwb2ludCB0byBhbnkKLSAgb3RoZXIgdmFsaWQgc2VjdGlvbiBuYW1lLiBTb21lIHR5cGljYWwgdmFsdWVzIGluY2x1ZGU6IGBgImdlbmVyYWwiYGAgb3IKLSAgYGAiY29tbW9uImBgLiBUaGUgbmFtZSBwcm92aWRlZCBpcyB1c2VkIGZvciByZWNvZ25pemluZyBkZWZhdWx0IHNlY3Rpb25zIHdoZW4KLSAgcmVhZGluZyBmcm9tIGFueSBzb3VyY2UgYW5kIGlzIHVzZWQgd2hlbiB3cml0aW5nIGNvbmZpZ3VyYXRpb24gYmFjayB0bwotICBhIGZpbGUuIEl0cyBjdXJyZW50IHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlCisgIG90aGVyIHZhbGlkIHNlY3Rpb24gbmFtZS4gIFNvbWUgdHlwaWNhbCB2YWx1ZXMgaW5jbHVkZTogYGAiZ2VuZXJhbCJgYCBvcgorICBgYCJjb21tb24iYGAuICBUaGUgbmFtZSBwcm92aWRlZCBpcyB1c2VkIGZvciByZWNvZ25pemluZyBkZWZhdWx0IHNlY3Rpb25zCisgIHdoZW4gcmVhZGluZyBmcm9tIGFueSBzb3VyY2UgYW5kIGlzIHVzZWQgd2hlbiB3cml0aW5nIGNvbmZpZ3VyYXRpb24gYmFjayB0bworICBhIGZpbGUuICBJdHMgY3VycmVudCB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZQogICBgYHBhcnNlcl9pbnN0YW5jZS5kZWZhdWx0X3NlY3Rpb25gYCBhdHRyaWJ1dGUgYW5kIG1heSBiZSBtb2RpZmllZCBhdCBydW50aW1lCiAgIChpLmUuIHRvIGNvbnZlcnQgZmlsZXMgZnJvbSBvbmUgZm9ybWF0IHRvIGFub3RoZXIpLgogCkBAIC02NjAsMTQgKzY2MSwzMCBAQAogICBJbnRlcnBvbGF0aW9uIGJlaGF2aW91ciBtYXkgYmUgY3VzdG9taXplZCBieSBwcm92aWRpbmcgYSBjdXN0b20gaGFuZGxlcgogICB0aHJvdWdoIHRoZSAqaW50ZXJwb2xhdGlvbiogYXJndW1lbnQuIGBgTm9uZWBgIGNhbiBiZSB1c2VkIHRvIHR1cm4gb2ZmCiAgIGludGVycG9sYXRpb24gY29tcGxldGVseSwgYGBFeHRlbmRlZEludGVycG9sYXRpb24oKWBgIHByb3ZpZGVzIGEgbW9yZQotICBhZHZhbmNlZCB2YXJpYW50IGluc3BpcmVkIGJ5IGBgemMuYnVpbGRvdXRgYC4gTW9yZSBvbiB0aGUgc3ViamVjdCBpbiB0aGUKKyAgYWR2YW5jZWQgdmFyaWFudCBpbnNwaXJlZCBieSBgYHpjLmJ1aWxkb3V0YGAuICBNb3JlIG9uIHRoZSBzdWJqZWN0IGluIHRoZQogICBgZGVkaWNhdGVkIGRvY3VtZW50YXRpb24gc2VjdGlvbiA8I2ludGVycG9sYXRpb24tb2YtdmFsdWVzPmBfLgogICA6Y2xhc3M6YFJhd0NvbmZpZ1BhcnNlcmAgaGFzIGEgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYC4KIAorKiAqY29udmVydGVycyosIGRlZmF1bHQgdmFsdWU6IG5vdCBzZXQKKworICBDb25maWcgcGFyc2VycyBwcm92aWRlIG9wdGlvbiB2YWx1ZSBnZXR0ZXJzIHRoYXQgcGVyZm9ybSB0eXBlIGNvbnZlcnNpb24uICBCeQorICBkZWZhdWx0IDptZXRoOmBnZXRpbnRgLCA6bWV0aDpgZ2V0ZmxvYXRgLCBhbmQgOm1ldGg6YGdldGJvb2xlYW5gIGFyZQorICBpbXBsZW1lbnRlZC4gIFNob3VsZCBvdGhlciBnZXR0ZXJzIGJlIGRlc2lyYWJsZSwgdXNlcnMgbWF5IGRlZmluZSB0aGVtIGluCisgIGEgc3ViY2xhc3Mgb3IgcGFzcyBhIGRpY3Rpb25hcnkgd2hlcmUgZWFjaCBrZXkgaXMgYSBuYW1lIG9mIHRoZSBjb252ZXJ0ZXIgYW5kCisgIGVhY2ggdmFsdWUgaXMgYSBjYWxsYWJsZSBpbXBsZW1lbnRpbmcgc2FpZCBjb252ZXJzaW9uLiAgRm9yIGluc3RhbmNlLCBwYXNzaW5nCisgIGBgeydkZWNpbWFsJzogZGVjaW1hbC5EZWNpbWFsfWBgIHdvdWxkIGFkZCA6bWV0aDpgZ2V0ZGVjaW1hbGAgb24gYm90aCB0aGUKKyAgcGFyc2VyIG9iamVjdCBhbmQgYWxsIHNlY3Rpb24gcHJveGllcy4gIEluIG90aGVyIHdvcmRzLCBpdCB3aWxsIGJlIHBvc3NpYmxlCisgIHRvIHdyaXRlIGJvdGggYGBwYXJzZXJfaW5zdGFuY2UuZ2V0ZGVjaW1hbCgnc2VjdGlvbicsICdrZXknLCBmYWxsYmFjaz0wKWBgCisgIGFuZCBgYHBhcnNlcl9pbnN0YW5jZVsnc2VjdGlvbiddLmdldGRlY2ltYWwoJ2tleScsIDApYGAuCisKKyAgSWYgdGhlIGNvbnZlcnRlciBuZWVkcyB0byBhY2Nlc3MgdGhlIHN0YXRlIG9mIHRoZSBwYXJzZXIsIGl0IGNhbiBiZQorICBpbXBsZW1lbnRlZCBhcyBhIG1ldGhvZCBvbiBhIGNvbmZpZyBwYXJzZXIgc3ViY2xhc3MuICBJZiB0aGUgbmFtZSBvZiB0aGlzCisgIG1ldGhvZCBzdGFydHMgd2l0aCBgYGdldGBgLCBpdCB3aWxsIGJlIGF2YWlsYWJsZSBvbiBhbGwgc2VjdGlvbiBwcm94aWVzLCBpbgorICB0aGUgZGljdC1jb21wYXRpYmxlIGZvcm0gKHNlZSB0aGUgYGBnZXRkZWNpbWFsKClgYCBleGFtcGxlIGFib3ZlKS4KIAogTW9yZSBhZHZhbmNlZCBjdXN0b21pemF0aW9uIG1heSBiZSBhY2hpZXZlZCBieSBvdmVycmlkaW5nIGRlZmF1bHQgdmFsdWVzIG9mCi10aGVzZSBwYXJzZXIgYXR0cmlidXRlcy4gIFRoZSBkZWZhdWx0cyBhcmUgZGVmaW5lZCBvbiB0aGUgY2xhc3Nlcywgc28gdGhleQotbWF5IGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBvciBieSBhdHRyaWJ1dGUgYXNzaWdubWVudC4KK3RoZXNlIHBhcnNlciBhdHRyaWJ1dGVzLiAgVGhlIGRlZmF1bHRzIGFyZSBkZWZpbmVkIG9uIHRoZSBjbGFzc2VzLCBzbyB0aGV5IG1heQorYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIG9yIGJ5IGF0dHJpYnV0ZSBhc3NpZ25tZW50LgogCiAuLiBhdHRyaWJ1dGU6OiBCT09MRUFOX1NUQVRFUwogCkBAIC03MjUsMTAgKzc0MiwxMSBAQAogCiAuLiBhdHRyaWJ1dGU6OiBTRUNUQ1JFCiAKLSAgQSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBwYXJzZSBzZWN0aW9uIGhlYWRlcnMuIFRoZSBkZWZhdWx0Ci0gIG1hdGNoZXMgYGBbc2VjdGlvbl1gYCB0byB0aGUgbmFtZSBgYCJzZWN0aW9uImBgLiBXaGl0ZXNwYWNlIGlzIGNvbnNpZGVyZWQgcGFydAotICBvZiB0aGUgc2VjdGlvbiBuYW1lLCB0aHVzIGBgWyAgbGFyY2ggIF1gYCB3aWxsIGJlIHJlYWQgYXMgYSBzZWN0aW9uIG9mIG5hbWUKLSAgYGAiICBsYXJjaCAgImBgLiBPdmVycmlkZSB0aGlzIGF0dHJpYnV0ZSBpZiB0aGF0J3MgdW5zdWl0YWJsZS4gIEZvciBleGFtcGxlOgorICBBIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHBhcnNlIHNlY3Rpb24gaGVhZGVycy4gIFRoZSBkZWZhdWx0CisgIG1hdGNoZXMgYGBbc2VjdGlvbl1gYCB0byB0aGUgbmFtZSBgYCJzZWN0aW9uImBgLiAgV2hpdGVzcGFjZSBpcyBjb25zaWRlcmVkCisgIHBhcnQgb2YgdGhlIHNlY3Rpb24gbmFtZSwgdGh1cyBgYFsgIGxhcmNoICBdYGAgd2lsbCBiZSByZWFkIGFzIGEgc2VjdGlvbiBvZgorICBuYW1lIGBgIiAgbGFyY2ggICJgYC4gIE92ZXJyaWRlIHRoaXMgYXR0cmlidXRlIGlmIHRoYXQncyB1bnN1aXRhYmxlLiAgRm9yCisgIGV4YW1wbGU6CiAKICAgLi4gZG9jdGVzdDo6CiAKQEAgLTg1OSw3ICs4NzcsNyBAQAogQ29uZmlnUGFyc2VyIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIGNsYXNzOjogQ29uZmlnUGFyc2VyKGRlZmF1bHRzPU5vbmUsIGRpY3RfdHlwZT1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCwgYWxsb3dfbm9fdmFsdWU9RmFsc2UsIGRlbGltaXRlcnM9KCc9JywgJzonKSwgY29tbWVudF9wcmVmaXhlcz0oJyMnLCAnOycpLCBpbmxpbmVfY29tbWVudF9wcmVmaXhlcz1Ob25lLCBzdHJpY3Q9VHJ1ZSwgZW1wdHlfbGluZXNfaW5fdmFsdWVzPVRydWUsIGRlZmF1bHRfc2VjdGlvbj1jb25maWdwYXJzZXIuREVGQVVMVFNFQ1QsIGludGVycG9sYXRpb249QmFzaWNJbnRlcnBvbGF0aW9uKCkpCisuLiBjbGFzczo6IENvbmZpZ1BhcnNlcihkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QsIGFsbG93X25vX3ZhbHVlPUZhbHNlLCBkZWxpbWl0ZXJzPSgnPScsICc6JyksIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249Y29uZmlncGFyc2VyLkRFRkFVTFRTRUNULCBpbnRlcnBvbGF0aW9uPUJhc2ljSW50ZXJwb2xhdGlvbigpLCBjb252ZXJ0ZXJzPXt9KQogCiAgICBUaGUgbWFpbiBjb25maWd1cmF0aW9uIHBhcnNlci4gIFdoZW4gKmRlZmF1bHRzKiBpcyBnaXZlbiwgaXQgaXMgaW5pdGlhbGl6ZWQKICAgIGludG8gdGhlIGRpY3Rpb25hcnkgb2YgaW50cmluc2ljIGRlZmF1bHRzLiAgV2hlbiAqZGljdF90eXBlKiBpcyBnaXZlbiwgaXQKQEAgLTg2OSw4ICs4ODcsOCBAQAogICAgV2hlbiAqZGVsaW1pdGVycyogaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgYXMgdGhlIHNldCBvZiBzdWJzdHJpbmdzIHRoYXQKICAgIGRpdmlkZSBrZXlzIGZyb20gdmFsdWVzLiAgV2hlbiAqY29tbWVudF9wcmVmaXhlcyogaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgdXNlZAogICAgYXMgdGhlIHNldCBvZiBzdWJzdHJpbmdzIHRoYXQgcHJlZml4IGNvbW1lbnRzIGluIG90aGVyd2lzZSBlbXB0eSBsaW5lcy4KLSAgIENvbW1lbnRzIGNhbiBiZSBpbmRlbnRlZC4gV2hlbiAqaW5saW5lX2NvbW1lbnRfcHJlZml4ZXMqIGlzIGdpdmVuLCBpdCB3aWxsIGJlCi0gICB1c2VkIGFzIHRoZSBzZXQgb2Ygc3Vic3RyaW5ncyB0aGF0IHByZWZpeCBjb21tZW50cyBpbiBub24tZW1wdHkgbGluZXMuCisgICBDb21tZW50cyBjYW4gYmUgaW5kZW50ZWQuICBXaGVuICppbmxpbmVfY29tbWVudF9wcmVmaXhlcyogaXMgZ2l2ZW4sIGl0IHdpbGwKKyAgIGJlIHVzZWQgYXMgdGhlIHNldCBvZiBzdWJzdHJpbmdzIHRoYXQgcHJlZml4IGNvbW1lbnRzIGluIG5vbi1lbXB0eSBsaW5lcy4KIAogICAgV2hlbiAqc3RyaWN0KiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCB0aGUgcGFyc2VyIHdvbid0IGFsbG93IGZvcgogICAgYW55IHNlY3Rpb24gb3Igb3B0aW9uIGR1cGxpY2F0ZXMgd2hpbGUgcmVhZGluZyBmcm9tIGEgc2luZ2xlIHNvdXJjZSAoZmlsZSwKQEAgLTg4NCwxMyArOTAyLDEzIEBACiAKICAgIFdoZW4gKmRlZmF1bHRfc2VjdGlvbiogaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB0aGUgbmFtZSBmb3IgdGhlIHNwZWNpYWwKICAgIHNlY3Rpb24gaG9sZGluZyBkZWZhdWx0IHZhbHVlcyBmb3Igb3RoZXIgc2VjdGlvbnMgYW5kIGludGVycG9sYXRpb24gcHVycG9zZXMKLSAgIChub3JtYWxseSBuYW1lZCBgYCJERUZBVUxUImBgKS4gVGhpcyB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIGFuZCBjaGFuZ2VkIG9uCisgICAobm9ybWFsbHkgbmFtZWQgYGAiREVGQVVMVCJgYCkuICBUaGlzIHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgYW5kIGNoYW5nZWQgb24KICAgIHJ1bnRpbWUgdXNpbmcgdGhlIGBgZGVmYXVsdF9zZWN0aW9uYGAgaW5zdGFuY2UgYXR0cmlidXRlLgogCiAgICBJbnRlcnBvbGF0aW9uIGJlaGF2aW91ciBtYXkgYmUgY3VzdG9taXplZCBieSBwcm92aWRpbmcgYSBjdXN0b20gaGFuZGxlcgogICAgdGhyb3VnaCB0aGUgKmludGVycG9sYXRpb24qIGFyZ3VtZW50LiBgYE5vbmVgYCBjYW4gYmUgdXNlZCB0byB0dXJuIG9mZgogICAgaW50ZXJwb2xhdGlvbiBjb21wbGV0ZWx5LCBgYEV4dGVuZGVkSW50ZXJwb2xhdGlvbigpYGAgcHJvdmlkZXMgYSBtb3JlCi0gICBhZHZhbmNlZCB2YXJpYW50IGluc3BpcmVkIGJ5IGBgemMuYnVpbGRvdXRgYC4gTW9yZSBvbiB0aGUgc3ViamVjdCBpbiB0aGUKKyAgIGFkdmFuY2VkIHZhcmlhbnQgaW5zcGlyZWQgYnkgYGB6Yy5idWlsZG91dGBgLiAgTW9yZSBvbiB0aGUgc3ViamVjdCBpbiB0aGUKICAgIGBkZWRpY2F0ZWQgZG9jdW1lbnRhdGlvbiBzZWN0aW9uIDwjaW50ZXJwb2xhdGlvbi1vZi12YWx1ZXM+YF8uCiAKICAgIEFsbCBvcHRpb24gbmFtZXMgdXNlZCBpbiBpbnRlcnBvbGF0aW9uIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggdGhlCkBAIC04OTksNiArOTE3LDEyIEBACiAgICBjb252ZXJ0cyBvcHRpb24gbmFtZXMgdG8gbG93ZXIgY2FzZSksIHRoZSB2YWx1ZXMgYGBmb28gJShiYXIpc2BgIGFuZCBgYGZvbwogICAgJShCQVIpc2BgIGFyZSBlcXVpdmFsZW50LgogCisgICBXaGVuICpjb252ZXJ0ZXJzKiBpcyBnaXZlbiwgaXQgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSB3aGVyZSBlYWNoIGtleQorICAgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiBhIHR5cGUgY29udmVydGVyIGFuZCBlYWNoIHZhbHVlIGlzIGEgY2FsbGFibGUKKyAgIGltcGxlbWVudGluZyB0aGUgY29udmVyc2lvbiBmcm9tIHN0cmluZyB0byB0aGUgZGVzaXJlZCBkYXRhdHlwZS4gIEV2ZXJ5CisgICBjb252ZXJ0ZXIgZ2V0cyBpdHMgb3duIGNvcnJlc3BvbmRpbmcgOm1ldGg6YGdldCooKWAgbWV0aG9kIG9uIHRoZSBwYXJzZXIKKyAgIG9iamVjdCBhbmQgc2VjdGlvbiBwcm94aWVzLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgVGhlIGRlZmF1bHQgKmRpY3RfdHlwZSogaXMgOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGAuCiAKQEAgLTkwNyw2ICs5MzEsOSBAQAogICAgICAgKmVtcHR5X2xpbmVzX2luX3ZhbHVlcyosICpkZWZhdWx0X3NlY3Rpb24qIGFuZCAqaW50ZXJwb2xhdGlvbiogd2VyZQogICAgICAgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmNvbnZlcnRlcnMqIGFyZ3VtZW50IHdhcyBhZGRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBkZWZhdWx0cygpCiAKQEAgLTk0NCw3ICs5NzEsNyBAQAogICAgLi4gbWV0aG9kOjogaGFzX29wdGlvbihzZWN0aW9uLCBvcHRpb24pCiAKICAgICAgIElmIHRoZSBnaXZlbiAqc2VjdGlvbiogZXhpc3RzLCBhbmQgY29udGFpbnMgdGhlIGdpdmVuICpvcHRpb24qLCByZXR1cm4KLSAgICAgIDpjb25zdDpgVHJ1ZWA7IG90aGVyd2lzZSByZXR1cm4gOmNvbnN0OmBGYWxzZWAuIElmIHRoZSBzcGVjaWZpZWQKKyAgICAgIDpjb25zdDpgVHJ1ZWA7IG90aGVyd2lzZSByZXR1cm4gOmNvbnN0OmBGYWxzZWAuICBJZiB0aGUgc3BlY2lmaWVkCiAgICAgICAqc2VjdGlvbiogaXMgOmNvbnN0OmBOb25lYCBvciBhbiBlbXB0eSBzdHJpbmcsIERFRkFVTFQgaXMgYXNzdW1lZC4KIAogCkBAIC0xMDY5LDcgKzEwOTYsNyBAQAogICAgICAgOm1ldGg6YGdldGAgbWV0aG9kLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgICAgSXRlbXMgcHJlc2VudCBpbiAqdmFycyogbm8gbG9uZ2VyIGFwcGVhciBpbiB0aGUgcmVzdWx0LiBUaGUgcHJldmlvdXMKKyAgICAgICAgIEl0ZW1zIHByZXNlbnQgaW4gKnZhcnMqIG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIHJlc3VsdC4gIFRoZSBwcmV2aW91cwogICAgICAgICAgYmVoYXZpb3VyIG1peGVkIGFjdHVhbCBwYXJzZXIgb3B0aW9ucyB3aXRoIHZhcmlhYmxlcyBwcm92aWRlZCBmb3IKICAgICAgICAgIGludGVycG9sYXRpb24uCiAKQEAgLTExNzAsNyArMTE5Nyw3IEBACiAKICAgIC4uIG5vdGU6OgogICAgICAgQ29uc2lkZXIgdXNpbmcgOmNsYXNzOmBDb25maWdQYXJzZXJgIGluc3RlYWQgd2hpY2ggY2hlY2tzIHR5cGVzIG9mCi0gICAgICB0aGUgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbnRlcm5hbGx5LiBJZiB5b3UgZG9uJ3Qgd2FudCBpbnRlcnBvbGF0aW9uLCB5b3UKKyAgICAgIHRoZSB2YWx1ZXMgdG8gYmUgc3RvcmVkIGludGVybmFsbHkuICBJZiB5b3UgZG9uJ3Qgd2FudCBpbnRlcnBvbGF0aW9uLCB5b3UKICAgICAgIGNhbiB1c2UgYGBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKWBgLgogCiAKQEAgLTExODEsNyArMTIwOCw3IEBACiAgICAgICAqZGVmYXVsdCBzZWN0aW9uKiBuYW1lIGlzIHBhc3NlZCwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAgICBUeXBlIG9mICpzZWN0aW9uKiBpcyBub3QgY2hlY2tlZCB3aGljaCBsZXRzIHVzZXJzIGNyZWF0ZSBub24tc3RyaW5nIG5hbWVkCi0gICAgICBzZWN0aW9ucy4gVGhpcyBiZWhhdmlvdXIgaXMgdW5zdXBwb3J0ZWQgYW5kIG1heSBjYXVzZSBpbnRlcm5hbCBlcnJvcnMuCisgICAgICBzZWN0aW9ucy4gIFRoaXMgYmVoYXZpb3VyIGlzIHVuc3VwcG9ydGVkIGFuZCBtYXkgY2F1c2UgaW50ZXJuYWwgZXJyb3JzLgogCiAKICAgIC4uIG1ldGhvZDo6IHNldChzZWN0aW9uLCBvcHRpb24sIHZhbHVlKQpAQCAtMTI4MiwzICsxMzA5LDQgQEAKIC4uIFsxXSBDb25maWcgcGFyc2VycyBhbGxvdyBmb3IgaGVhdnkgY3VzdG9taXphdGlvbi4gIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbgogICAgICAgIGNoYW5naW5nIHRoZSBiZWhhdmlvdXIgb3V0bGluZWQgYnkgdGhlIGZvb3Rub3RlIHJlZmVyZW5jZSwgY29uc3VsdCB0aGUKICAgICAgICBgQ3VzdG9taXppbmcgUGFyc2VyIEJlaGF2aW91cmBfIHNlY3Rpb24uCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IDQyYjVhZjIuLmQ1YTBmMDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtNDUsNyArNDUsNiBAQAogICAgZm9yIG1vcmUgZGV0YWlscy4KIAogCi0KIC4uIGRhdGE6OiBFbGxpcHNpcwogCiAgICBUaGUgc2FtZSBhcyBgYC4uLmBgLiAgU3BlY2lhbCB2YWx1ZSB1c2VkIG1vc3RseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV4dGVuZGVkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IDZmMzY4NjQuLjU1MGIzNDcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xNzIsNiArMTcyLDE2IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCisuLiBmdW5jdGlvbjo6IHJlZGlyZWN0X3N0ZGVycihuZXdfdGFyZ2V0KQorCisgICBTaW1pbGFyIHRvIDpmdW5jOmB+Y29udGV4dGxpYi5yZWRpcmVjdF9zdGRvdXRgIGJ1dCByZWRpcmVjdGluZworICAgOmRhdGE6YHN5cy5zdGRlcnJgIHRvIGFub3RoZXIgZmlsZSBvciBmaWxlLWxpa2Ugb2JqZWN0LgorCisgICBUaGlzIGNvbnRleHQgbWFuYWdlciBpcyA6cmVmOmByZWVudHJhbnQgPHJlZW50cmFudC1jbXM+YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gY2xhc3M6OiBDb250ZXh0RGVjb3JhdG9yKCkKIAogICAgQSBiYXNlIGNsYXNzIHRoYXQgZW5hYmxlcyBhIGNvbnRleHQgbWFuYWdlciB0byBhbHNvIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCBlOWE5Y2I1Li40ZmNmYWVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTUsNiArNSw3IEBACiAgICA6c3lub3BzaXM6IFdyaXRlIGFuZCByZWFkIHRhYnVsYXIgZGF0YSB0byBhbmQgZnJvbSBkZWxpbWl0ZWQgZmlsZXMuCiAuLiBzZWN0aW9uYXV0aG9yOjogU2tpcCBNb250YW5hcm8gPHNraXBAcG9ib3guY29tPgogCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jc3YucHlgCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogY3N2CkBAIC00MTgsNyArNDE5LDcgQEAKIAogOmNsYXNzOmBXcml0ZXJgIG9iamVjdHMgKDpjbGFzczpgRGljdFdyaXRlcmAgaW5zdGFuY2VzIGFuZCBvYmplY3RzIHJldHVybmVkIGJ5CiB0aGUgOmZ1bmM6YHdyaXRlcmAgZnVuY3Rpb24pIGhhdmUgdGhlIGZvbGxvd2luZyBwdWJsaWMgbWV0aG9kcy4gIEEgKnJvdyogbXVzdCBiZQotYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIG9yIG51bWJlcnMgZm9yIDpjbGFzczpgV3JpdGVyYCBvYmplY3RzIGFuZCBhIGRpY3Rpb25hcnkKK2FuIGl0ZXJhYmxlIG9mIHN0cmluZ3Mgb3IgbnVtYmVycyBmb3IgOmNsYXNzOmBXcml0ZXJgIG9iamVjdHMgYW5kIGEgZGljdGlvbmFyeQogbWFwcGluZyBmaWVsZG5hbWVzIHRvIHN0cmluZ3Mgb3IgbnVtYmVycyAoYnkgcGFzc2luZyB0aGVtIHRocm91Z2ggOmZ1bmM6YHN0cmAKIGZpcnN0KSBmb3IgOmNsYXNzOmBEaWN0V3JpdGVyYCBvYmplY3RzLiAgTm90ZSB0aGF0IGNvbXBsZXggbnVtYmVycyBhcmUgd3JpdHRlbgogb3V0IHN1cnJvdW5kZWQgYnkgcGFyZW5zLiBUaGlzIG1heSBjYXVzZSBzb21lIHByb2JsZW1zIGZvciBvdGhlciBwcm9ncmFtcyB3aGljaApAQCAtNDMwLDYgKzQzMSw4IEBACiAgICBXcml0ZSB0aGUgKnJvdyogcGFyYW1ldGVyIHRvIHRoZSB3cml0ZXIncyBmaWxlIG9iamVjdCwgZm9ybWF0dGVkIGFjY29yZGluZyB0bwogICAgdGhlIGN1cnJlbnQgZGlhbGVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgYXJiaXRyYXJ5IGl0ZXJhYmxlcy4KIAogLi4gbWV0aG9kOjogY3N2d3JpdGVyLndyaXRlcm93cyhyb3dzKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdXJzZXMucnN0IGIvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAppbmRleCBmM2U2MGI0Li5lOGRmZDgzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKQEAgLTU5OSw2ICs1OTksMTMgQEAKICAgICAgIE9ubHkgb25lICpjaCogY2FuIGJlIHB1c2hlZCBiZWZvcmUgOm1ldGg6YGdldGNoYCBpcyBjYWxsZWQuCiAKIAorLi4gZnVuY3Rpb246OiB1cGRhdGVfbGluZXNfY29scygpCisKKyAgIFVwZGF0ZSA6ZW52dmFyOmBMSU5FU2AgYW5kIDplbnZ2YXI6YENPTFNgLiBVc2VmdWwgZm9yIGRldGVjdGluZyBtYW51YWwgc2NyZWVuIHJlc2l6ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiB1bmdldF93Y2goY2gpCiAKICAgIFB1c2ggKmNoKiBzbyB0aGUgbmV4dCA6bWV0aDpgZ2V0X3djaGAgd2lsbCByZXR1cm4gaXQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKaW5kZXggODhmM2Y2ZS4uOTc2Y2Q0OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdApAQCAtNyw2ICs3LDggQEAKIC4uIHNlY3Rpb25hdXRob3I6OiBUaW0gUGV0ZXJzIDx0aW1Aem9wZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogQS5NLiBLdWNobGluZyA8YW1rQGFtay5jYT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZGF0ZXRpbWUucHlgCisKIC4uIFhYWCB3aGF0IG9yZGVyIHNob3VsZCB0aGUgdHlwZXMgYmUgZGlzY3Vzc2VkIGluPwogCiBUaGUgOm1vZDpgZGF0ZXRpbWVgIG1vZHVsZSBzdXBwbGllcyBjbGFzc2VzIGZvciBtYW5pcHVsYXRpbmcgZGF0ZXMgYW5kIHRpbWVzIGluCkBAIC03NTcsMTMgKzc1OSwxOSBAQAogICAgOmF0dHI6YHR6aW5mb2AgYGBOb25lYGAuIFRoaXMgbWF5IHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzCiAgICBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbiwKICAgIGFuZCA6ZXhjOmBPU0Vycm9yYCBvbiA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCi0gICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluIDE5NzAgdGhyb3VnaCAyMDM4LiBTZWUgYWxzbwotICAgOm1ldGg6YGZyb210aW1lc3RhbXBgLgorICAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbiAxOTcwIHRocm91Z2ggMjAzOC4KIAotICAgT24gdGhlIFBPU0lYIGNvbXBsaWFudCBwbGF0Zm9ybXMsIGBgdXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApYGAKLSAgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uOjoKKyAgIFRvIGdldCBhbiBhd2FyZSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0LCBjYWxsIDptZXRoOmBmcm9tdGltZXN0YW1wYDo6CiAKLSAgICAgZGF0ZXRpbWUoMTk3MCwgMSwgMSkgKyB0aW1lZGVsdGEoc2Vjb25kcz10aW1lc3RhbXApCisgICAgIGRhdGV0aW1lLmZyb210aW1lc3RhbXAodGltZXN0YW1wLCB0aW1lem9uZS51dGMpCisKKyAgIE9uIHRoZSBQT1NJWCBjb21wbGlhbnQgcGxhdGZvcm1zLCBpdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcKKyAgIGV4cHJlc3Npb246OgorCisgICAgIGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz10aW1lem9uZS51dGMpICsgdGltZWRlbHRhKHNlY29uZHM9dGltZXN0YW1wKQorCisgICBleGNlcHQgdGhlIGxhdHRlciBmb3JtdWxhIGFsd2F5cyBzdXBwb3J0cyB0aGUgZnVsbCB5ZWFycyByYW5nZTogYmV0d2VlbgorICAgOmNvbnN0OmBNSU5ZRUFSYCBhbmQgOmNvbnN0OmBNQVhZRUFSYCBpbmNsdXNpdmUuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKQEAgLTEzNzYsMTAgKzEzODQsMTMgQEAKIAogKiBlZmZpY2llbnQgcGlja2xpbmcKIAotKiBpbiBCb29sZWFuIGNvbnRleHRzLCBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRvIGJlIHRydWUgaWYgYW5kCi0gIG9ubHkgaWYsIGFmdGVyIGNvbnZlcnRpbmcgaXQgdG8gbWludXRlcyBhbmQgc3VidHJhY3RpbmcgOm1ldGg6YHV0Y29mZnNldGAgKG9yCi0gIGBgMGBgIGlmIHRoYXQncyBgYE5vbmVgYCksIHRoZSByZXN1bHQgaXMgbm9uLXplcm8uCitJbiBib29sZWFuIGNvbnRleHRzLCBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCBpcyBhbHdheXMgY29uc2lkZXJlZCB0byBiZSB0cnVlLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQmVmb3JlIFB5dGhvbiAzLjUsIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IHdhcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGlmIGl0CisgICByZXByZXNlbnRlZCBtaWRuaWdodCBpbiBVVEMuICBUaGlzIGJlaGF2aW9yIHdhcyBjb25zaWRlcmVkIG9ic2N1cmUgYW5kCisgICBlcnJvci1wcm9uZSBhbmQgaGFzIGJlZW4gcmVtb3ZlZCBpbiBQeXRob24gMy41LiAgU2VlIDppc3N1ZTpgMTM5MzZgIGZvciBmdWxsCisgICBkZXRhaWxzLgogCiBJbnN0YW5jZSBtZXRob2RzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYm0ucnN0IGIvRG9jL2xpYnJhcnkvZGJtLnJzdAppbmRleCBlNmE4MmQ2Li4zZjNjNDNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYm0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RibS5yc3QKQEAgLTMyNSwxMyArMzI1LDE4IEBACiAgICBkdW1iZGJtIGRhdGFiYXNlIGlzIGNyZWF0ZWQsIGZpbGVzIHdpdGggOmZpbGU6YC5kYXRgIGFuZCA6ZmlsZTpgLmRpcmAgZXh0ZW5zaW9ucwogICAgYXJlIGNyZWF0ZWQuCiAKLSAgIFRoZSBvcHRpb25hbCAqZmxhZyogYXJndW1lbnQgaXMgY3VycmVudGx5IGlnbm9yZWQ7IHRoZSBkYXRhYmFzZSBpcyBhbHdheXMgb3BlbmVkCi0gICBmb3IgdXBkYXRlLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LgorICAgVGhlIG9wdGlvbmFsICpmbGFnKiBhcmd1bWVudCBzdXBwb3J0cyBvbmx5IHRoZSBzZW1hbnRpY3Mgb2YgYGAnYydgYAorICAgYW5kIGBgJ24nYGAgdmFsdWVzLiAgT3RoZXIgdmFsdWVzIHdpbGwgZGVmYXVsdCB0byBkYXRhYmFzZSBiZWluZyBhbHdheXMKKyAgIG9wZW5lZCBmb3IgdXBkYXRlLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogCiAgICBUaGUgb3B0aW9uYWwgKm1vZGUqIGFyZ3VtZW50IGlzIHRoZSBVbml4IG1vZGUgb2YgdGhlIGZpbGUsIHVzZWQgb25seSB3aGVuIHRoZQogICAgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0byBvY3RhbCBgYDBvNjY2YGAgKGFuZCB3aWxsIGJlIG1vZGlmaWVkCiAgICBieSB0aGUgcHJldmFpbGluZyB1bWFzaykuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICA6ZnVuYzpgLm9wZW5gIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdoZW4gdGhlIGZsYWcgaGFzIHRoZSB2YWx1ZQorICAgICAgYGAnbidgYC4KKwogICAgSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgcHJvdmlkZWQgYnkgdGhlCiAgICA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgY2xhc3MsIDpjbGFzczpgZHVtYmRibWAgb2JqZWN0cwogICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IDc1OWJlNzAuLjVkN2ZmZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC0xMiw2ICsxMiw4IEBACiAuLiBtb2R1bGVhdXRob3I6OiBTdGVmYW4gS3JhaCA8c2tyYWggYXQgYnl0ZXJlZWYub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgRC4gSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KIAorKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZGVjaW1hbC5weWAKKwogLi4gaW1wb3J0IG1vZHVsZXMgZm9yIHRlc3RpbmcgaW5saW5lIGRvY3Rlc3RzIHdpdGggdGhlIFNwaGlueCBkb2N0ZXN0IGJ1aWxkZXIKIC4uIHRlc3RzZXR1cDo6ICoKIApAQCAtNzQyLDcgKzc0NCw3IEBACiAgICAgICAqIGBgIk5hTiJgYCwgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIChOb3QgYSBOdW1iZXIpLgogICAgICAgKiBgYCJzTmFOImBgLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOLgogCi0gICAuLiBtZXRob2Q6OiBxdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSwgd2F0Y2hleHA9VHJ1ZSkKKyAgIC4uIG1ldGhvZDo6IHF1YW50aXplKGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKQogCiAgICAgICBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZQogICAgICAgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLgpAQCAtNzY1LDE0ICs3NjcsOCBAQAogICAgICAgYGBjb250ZXh0YGAgYXJndW1lbnQ7IGlmIG5laXRoZXIgYXJndW1lbnQgaXMgZ2l2ZW4gdGhlIHJvdW5kaW5nIG1vZGUgb2YKICAgICAgIHRoZSBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQgaXMgdXNlZC4KIAotICAgICAgSWYgKndhdGNoZXhwKiBpcyBzZXQgKGRlZmF1bHQpLCB0aGVuIGFuIGVycm9yIGlzIHJldHVybmVkIHdoZW5ldmVyIHRoZQotICAgICAgcmVzdWx0aW5nIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhhbiA6YXR0cjpgRW1heGAgb3IgbGVzcyB0aGFuCi0gICAgICA6YXR0cjpgRXRpbnlgLgotCi0gICAgICAuLiBkZXByZWNhdGVkOjogMy4zCi0gICAgICAgICAqd2F0Y2hleHAqIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBmcm9tIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uCi0gICAgICAgICBhbmQgaXMgbm90IHByZXNlbnQgaW4gdGhlIEMgdmVyc2lvbi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24KLSAgICAgICAgIDMuNCwgd2hlcmUgaXQgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisgICAgICBBbiBlcnJvciBpcyByZXR1cm5lZCB3aGVuZXZlciB0aGUgcmVzdWx0aW5nIGV4cG9uZW50IGlzIGdyZWF0ZXIgdGhhbgorICAgICAgOmF0dHI6YEVtYXhgIG9yIGxlc3MgdGhhbiA6YXR0cjpgRXRpbnlgLgogCiAgICAuLiBtZXRob2Q6OiByYWRpeCgpCiAKQEAgLTIwOTIsNCArMjA4OCwzIEBACiAKICAgID4+PiBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikuY3JlYXRlX2RlY2ltYWwoJzEuMjM0NTY3OCcpCiAgICBEZWNpbWFsKCcxLjIzNDUnKQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QgYi9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKaW5kZXggMDZlNzA0OC4uZDJiNWZhMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdApAQCAtMTYsNiArMTYsNyBAQAogCiAuLiB0b2N0cmVlOjoKIAorICAgdHlwaW5nLnJzdAogICAgcHlkb2MucnN0CiAgICBkb2N0ZXN0LnJzdAogICAgdW5pdHRlc3QucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaWZmbGliLnJzdCBiL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0CmluZGV4IDVmNzJlYTYuLjM4MjQ1ZTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0CkBAIC03LDYgKzcsOCBAQAogLi4gc2VjdGlvbmF1dGhvcjo6IFRpbSBQZXRlcnMgPHRpbV9vbmVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogLi4gTWFya3VwIGJ5IEZyZWQgTC4gRHJha2UsIEpyLiA8ZmRyYWtlQGFjbS5vcmc+CiAKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2RpZmZsaWIucHlgCisKIC4uIHRlc3RzZXR1cDo6CiAKICAgIGltcG9ydCBzeXMKQEAgLTI1LDcgKzI3LDkgQEAKICAgIGxpdHRsZSBmYW5jaWVyIHRoYW4sIGFuIGFsZ29yaXRobSBwdWJsaXNoZWQgaW4gdGhlIGxhdGUgMTk4MCdzIGJ5IFJhdGNsaWZmIGFuZAogICAgT2JlcnNoZWxwIHVuZGVyIHRoZSBoeXBlcmJvbGljIG5hbWUgImdlc3RhbHQgcGF0dGVybiBtYXRjaGluZy4iICBUaGUgaWRlYSBpcyB0bwogICAgZmluZCB0aGUgbG9uZ2VzdCBjb250aWd1b3VzIG1hdGNoaW5nIHN1YnNlcXVlbmNlIHRoYXQgY29udGFpbnMgbm8gImp1bmsiCi0gICBlbGVtZW50cyAodGhlIFJhdGNsaWZmIGFuZCBPYmVyc2hlbHAgYWxnb3JpdGhtIGRvZXNuJ3QgYWRkcmVzcyBqdW5rKS4gIFRoZSBzYW1lCisgICBlbGVtZW50czsgdGhlc2UgImp1bmsiIGVsZW1lbnRzIGFyZSBvbmVzIHRoYXQgYXJlIHVuaW50ZXJlc3RpbmcgaW4gc29tZQorICAgc2Vuc2UsIHN1Y2ggYXMgYmxhbmsgbGluZXMgb3Igd2hpdGVzcGFjZS4gIChIYW5kbGluZyBqdW5rIGlzIGFuCisgICBleHRlbnNpb24gdG8gdGhlIFJhdGNsaWZmIGFuZCBPYmVyc2hlbHAgYWxnb3JpdGhtLikgVGhlIHNhbWUKICAgIGlkZWEgaXMgdGhlbiBhcHBsaWVkIHJlY3Vyc2l2ZWx5IHRvIHRoZSBwaWVjZXMgb2YgdGhlIHNlcXVlbmNlcyB0byB0aGUgbGVmdCBhbmQKICAgIHRvIHRoZSByaWdodCBvZiB0aGUgbWF0Y2hpbmcgc3Vic2VxdWVuY2UuICBUaGlzIGRvZXMgbm90IHlpZWxkIG1pbmltYWwgZWRpdAogICAgc2VxdWVuY2VzLCBidXQgZG9lcyB0ZW5kIHRvIHlpZWxkIG1hdGNoZXMgdGhhdCAibG9vayByaWdodCIgdG8gcGVvcGxlLgpAQCAtMTAwLDcgKzEwNCw4IEBACiAKICAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgcHVibGljOgogCi0gICAuLiBtZXRob2Q6OiBtYWtlX2ZpbGUoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZGVzYz0nJywgdG9kZXNjPScnLCBjb250ZXh0PUZhbHNlLCBudW1saW5lcz01KQorICAgLi4gbWV0aG9kOjogbWFrZV9maWxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2M9JycsIHRvZGVzYz0nJywgY29udGV4dD1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIG51bWxpbmVzPTUsICosIGNoYXJzZXQ9J3V0Zi04JykKIAogICAgICAgQ29tcGFyZXMgKmZyb21saW5lcyogYW5kICp0b2xpbmVzKiAobGlzdHMgb2Ygc3RyaW5ncykgYW5kIHJldHVybnMgYSBzdHJpbmcgd2hpY2gKICAgICAgIGlzIGEgY29tcGxldGUgSFRNTCBmaWxlIGNvbnRhaW5pbmcgYSB0YWJsZSBzaG93aW5nIGxpbmUgYnkgbGluZSBkaWZmZXJlbmNlcyB3aXRoCkBAIC0xMTksNiArMTI0LDEwIEBACiAgICAgICB0aGUgbmV4dCBkaWZmZXJlbmNlIGhpZ2hsaWdodCBhdCB0aGUgdG9wIG9mIHRoZSBicm93c2VyIHdpdGhvdXQgYW55IGxlYWRpbmcKICAgICAgIGNvbnRleHQpLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgKmNoYXJzZXQqIGtleXdvcmQtb25seSBhcmd1bWVudCB3YXMgYWRkZWQuICBUaGUgZGVmYXVsdCBjaGFyc2V0IG9mCisgICAgICAgICBIVE1MIGRvY3VtZW50IGNoYW5nZWQgZnJvbSBgYCdJU08tODg1OS0xJ2BgIHRvIGBgJ3V0Zi04J2BgLgorCiAgICAuLiBtZXRob2Q6OiBtYWtlX3RhYmxlKGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2M9JycsIHRvZGVzYz0nJywgY29udGV4dD1GYWxzZSwgbnVtbGluZXM9NSkKIAogICAgICAgQ29tcGFyZXMgKmZyb21saW5lcyogYW5kICp0b2xpbmVzKiAobGlzdHMgb2Ygc3RyaW5ncykgYW5kIHJldHVybnMgYSBzdHJpbmcgd2hpY2gKQEAgLTIwOCw3ICsyMTcsNyBAQAogICAgQ29tcGFyZSAqYSogYW5kICpiKiAobGlzdHMgb2Ygc3RyaW5ncyk7IHJldHVybiBhIDpjbGFzczpgRGlmZmVyYFwgLXN0eWxlCiAgICBkZWx0YSAoYSA6dGVybTpgZ2VuZXJhdG9yYCBnZW5lcmF0aW5nIHRoZSBkZWx0YSBsaW5lcykuCiAKLSAgIE9wdGlvbmFsIGtleXdvcmQgcGFyYW1ldGVycyAqbGluZWp1bmsqIGFuZCAqY2hhcmp1bmsqIGFyZSBmb3IgZmlsdGVyIGZ1bmN0aW9ucworICAgT3B0aW9uYWwga2V5d29yZCBwYXJhbWV0ZXJzICpsaW5lanVuayogYW5kICpjaGFyanVuayogYXJlIGZpbHRlcmluZyBmdW5jdGlvbnMKICAgIChvciBgYE5vbmVgYCk6CiAKICAgICpsaW5lanVuayo6IEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCwgYW5kIHJldHVybnMKQEAgLTIyMiw3ICsyMzEsNyBAQAogICAgKmNoYXJqdW5rKjogQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBjaGFyYWN0ZXIgKGEgc3RyaW5nIG9mIGxlbmd0aCAxKSwgYW5kCiAgICByZXR1cm5zIGlmIHRoZSBjaGFyYWN0ZXIgaXMganVuaywgb3IgZmFsc2UgaWYgbm90LiBUaGUgZGVmYXVsdCBpcyBtb2R1bGUtbGV2ZWwKICAgIGZ1bmN0aW9uIDpmdW5jOmBJU19DSEFSQUNURVJfSlVOS2AsIHdoaWNoIGZpbHRlcnMgb3V0IHdoaXRlc3BhY2UgY2hhcmFjdGVycyAoYQotICAgYmxhbmsgb3IgdGFiOyBub3RlOiBiYWQgaWRlYSB0byBpbmNsdWRlIG5ld2xpbmUgaW4gdGhpcyEpLgorICAgYmxhbmsgb3IgdGFiOyBpdCdzIGEgYmFkIGlkZWEgdG8gaW5jbHVkZSBuZXdsaW5lIGluIHRoaXMhKS4KIAogICAgOmZpbGU6YFRvb2xzL3NjcmlwdHMvbmRpZmYucHlgIGlzIGEgY29tbWFuZC1saW5lIGZyb250LWVuZCB0byB0aGlzIGZ1bmN0aW9uLgogCkBAIC0zMDYsNiArMzE1LDIxIEBACiAKICAgIFNlZSA6cmVmOmBkaWZmbGliLWludGVyZmFjZWAgZm9yIGEgbW9yZSBkZXRhaWxlZCBleGFtcGxlLgogCisuLiBmdW5jdGlvbjo6IGRpZmZfYnl0ZXMoZGZ1bmMsIGEsIGIsIGZyb21maWxlPWInJywgdG9maWxlPWInJywgZnJvbWZpbGVkYXRlPWInJywgdG9maWxlZGF0ZT1iJycsIG49MywgbGluZXRlcm09YidcXG4nKQorCisgICBDb21wYXJlICphKiBhbmQgKmIqIChsaXN0cyBvZiBieXRlcyBvYmplY3RzKSB1c2luZyAqZGZ1bmMqOyB5aWVsZCBhCisgICBzZXF1ZW5jZSBvZiBkZWx0YSBsaW5lcyAoYWxzbyBieXRlcykgaW4gdGhlIGZvcm1hdCByZXR1cm5lZCBieSAqZGZ1bmMqLgorICAgKmRmdW5jKiBtdXN0IGJlIGEgY2FsbGFibGUsIHR5cGljYWxseSBlaXRoZXIgOmZ1bmM6YHVuaWZpZWRfZGlmZmAgb3IKKyAgIDpmdW5jOmBjb250ZXh0X2RpZmZgLgorCisgICBBbGxvd3MgeW91IHRvIGNvbXBhcmUgZGF0YSB3aXRoIHVua25vd24gb3IgaW5jb25zaXN0ZW50IGVuY29kaW5nLiBBbGwKKyAgIGlucHV0cyBleGNlcHQgKm4qIG11c3QgYmUgYnl0ZXMgb2JqZWN0cywgbm90IHN0ci4gV29ya3MgYnkgbG9zc2xlc3NseQorICAgY29udmVydGluZyBhbGwgaW5wdXRzIChleGNlcHQgKm4qKSB0byBzdHIsIGFuZCBjYWxsaW5nIGBgZGZ1bmMoYSwgYiwKKyAgIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbiwgbGluZXRlcm0pYGAuIFRoZSBvdXRwdXQgb2YKKyAgICpkZnVuYyogaXMgdGhlbiBjb252ZXJ0ZWQgYmFjayB0byBieXRlcywgc28gdGhlIGRlbHRhIGxpbmVzIHRoYXQgeW91CisgICByZWNlaXZlIGhhdmUgdGhlIHNhbWUgdW5rbm93bi9pbmNvbnNpc3RlbnQgZW5jb2RpbmdzIGFzICphKiBhbmQgKmIqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gZnVuY3Rpb246OiBJU19MSU5FX0pVTksobGluZSkKIApAQCAtNjIyLDYgKzY0NiwxMiBAQAogICAgbGVuZ3RoIDEpLCBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMganVuay4gVGhlIGRlZmF1bHQgaXMgYGBOb25lYGAsCiAgICBtZWFuaW5nIHRoYXQgbm8gY2hhcmFjdGVyIGlzIGNvbnNpZGVyZWQganVuay4KIAorICAgVGhlc2UganVuay1maWx0ZXJpbmcgZnVuY3Rpb25zIHNwZWVkIHVwIG1hdGNoaW5nIHRvIGZpbmQKKyAgIGRpZmZlcmVuY2VzIGFuZCBkbyBub3QgY2F1c2UgYW55IGRpZmZlcmluZyBsaW5lcyBvciBjaGFyYWN0ZXJzIHRvCisgICBiZSBpZ25vcmVkLiAgUmVhZCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlCisgICA6bWV0aDpgflNlcXVlbmNlTWF0Y2hlci5maW5kX2xvbmdlc3RfbWF0Y2hgIG1ldGhvZCdzICppc2p1bmsqCisgICBwYXJhbWV0ZXIgZm9yIGFuIGV4cGxhbmF0aW9uLgorCiAgICA6Y2xhc3M6YERpZmZlcmAgb2JqZWN0cyBhcmUgdXNlZCAoZGVsdGFzIGdlbmVyYXRlZCkgdmlhIGEgc2luZ2xlIG1ldGhvZDoKIAogCkBAIC03MTMsNjUgKzc0Myw0IEBACiBJdCBpcyBhbHNvIGNvbnRhaW5lZCBpbiB0aGUgUHl0aG9uIHNvdXJjZSBkaXN0cmlidXRpb24sIGFzCiA6ZmlsZTpgVG9vbHMvc2NyaXB0cy9kaWZmLnB5YC4KIAotLi4gdGVzdGNvZGU6OgotCi0gICAiIiIgQ29tbWFuZCBsaW5lIGludGVyZmFjZSB0byBkaWZmbGliLnB5IHByb3ZpZGluZyBkaWZmcyBpbiBmb3VyIGZvcm1hdHM6Ci0KLSAgICogbmRpZmY6ICAgIGxpc3RzIGV2ZXJ5IGxpbmUgYW5kIGhpZ2hsaWdodHMgaW50ZXJsaW5lIGNoYW5nZXMuCi0gICAqIGNvbnRleHQ6ICBoaWdobGlnaHRzIGNsdXN0ZXJzIG9mIGNoYW5nZXMgaW4gYSBiZWZvcmUvYWZ0ZXIgZm9ybWF0LgotICAgKiB1bmlmaWVkOiAgaGlnaGxpZ2h0cyBjbHVzdGVycyBvZiBjaGFuZ2VzIGluIGFuIGlubGluZSBmb3JtYXQuCi0gICAqIGh0bWw6ICAgICBnZW5lcmF0ZXMgc2lkZSBieSBzaWRlIGNvbXBhcmlzb24gd2l0aCBjaGFuZ2UgaGlnaGxpZ2h0cy4KLQotICAgIiIiCi0KLSAgIGltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBvcHRwYXJzZQotCi0gICBkZWYgbWFpbigpOgotICAgICAgICAjIENvbmZpZ3VyZSB0aGUgb3B0aW9uIHBhcnNlcgotICAgICAgIHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9uc10gZnJvbWZpbGUgdG9maWxlIgotICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSkKLSAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSBjb250ZXh0IGZvcm1hdCBkaWZmIChkZWZhdWx0KScpCi0gICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi11IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgdW5pZmllZCBmb3JtYXQgZGlmZicpCi0gICAgICAgaGxwID0gJ1Byb2R1Y2UgSFRNTCBzaWRlIGJ5IHNpZGUgZGlmZiAoY2FuIHVzZSAtYyBhbmQgLWwgaW4gY29uanVuY3Rpb24pJwotICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9aGxwKQotICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIG5kaWZmIGZvcm1hdCBkaWZmJykKLSAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWwiLCAiLS1saW5lcyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTZXQgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgKGRlZmF1bHQgMyknKQotICAgICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQotICAgICAgIGlmIGxlbihhcmdzKSA9PSAwOgotICAgICAgICAgICBwYXJzZXIucHJpbnRfaGVscCgpCi0gICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgaWYgbGVuKGFyZ3MpICE9IDI6Ci0gICAgICAgICAgIHBhcnNlci5lcnJvcigibmVlZCB0byBzcGVjaWZ5IGJvdGggYSBmcm9tZmlsZSBhbmQgdG9maWxlIikKLQotICAgICAgIG4gPSBvcHRpb25zLmxpbmVzCi0gICAgICAgZnJvbWZpbGUsIHRvZmlsZSA9IGFyZ3MgIyBhcyBzcGVjaWZpZWQgaW4gdGhlIHVzYWdlIHN0cmluZwotCi0gICAgICAgIyB3ZSdyZSBwYXNzaW5nIHRoZXNlIGFzIGFyZ3VtZW50cyB0byB0aGUgZGlmZiBmdW5jdGlvbgotICAgICAgIGZyb21kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KGZyb21maWxlKS5zdF9tdGltZSkKLSAgICAgICB0b2RhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQodG9maWxlKS5zdF9tdGltZSkKLSAgICAgICB3aXRoIG9wZW4oZnJvbWZpbGUpIGFzIGZyb21mLCBvcGVuKHRvZmlsZSkgYXMgdG9mOgotICAgICAgICAgICBmcm9tbGluZXMsIHRvbGluZXMgPSBsaXN0KGZyb21mKSwgbGlzdCh0b2YpCi0KLSAgICAgICBpZiBvcHRpb25zLnU6Ci0gICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tZGF0ZSwgdG9kYXRlLCBuPW4pCi0gICAgICAgZWxpZiBvcHRpb25zLm46Ci0gICAgICAgICAgIGRpZmYgPSBkaWZmbGliLm5kaWZmKGZyb21saW5lcywgdG9saW5lcykKLSAgICAgICBlbGlmIG9wdGlvbnMubToKLSAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKS5tYWtlX2ZpbGUoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9maWxlLCBjb250ZXh0PW9wdGlvbnMuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtbGluZXM9bikKLSAgICAgICBlbHNlOgotICAgICAgICAgICBkaWZmID0gZGlmZmxpYi5jb250ZXh0X2RpZmYoZnJvbWxpbmVzLCB0b2xpbmVzLCBmcm9tZmlsZSwgdG9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWRhdGUsIHRvZGF0ZSwgbj1uKQotCi0gICAgICAgIyB3ZSdyZSB1c2luZyB3cml0ZWxpbmVzIGJlY2F1c2UgZGlmZiBpcyBhIGdlbmVyYXRvcgotICAgICAgIHN5cy5zdGRvdXQud3JpdGVsaW5lcyhkaWZmKQotCi0gICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIG1haW4oKQorLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi8uLi9Ub29scy9zY3JpcHRzL2RpZmYucHkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IDI3M2ZiMjAuLjFiY2IzYTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtNDgsOCArNDgsOSBAQAogCiAuLiBjbGFzczo6IEJ5dGVjb2RlKHgsICosIGZpcnN0X2xpbmU9Tm9uZSwgY3VycmVudF9vZmZzZXQ9Tm9uZSkKIAotICAgQW5hbHlzZSB0aGUgYnl0ZWNvZGUgY29ycmVzcG9uZGluZyB0byBhIGZ1bmN0aW9uLCBtZXRob2QsIHN0cmluZyBvZiBzb3VyY2UKLSAgIGNvZGUsIG9yIGEgY29kZSBvYmplY3QgKGFzIHJldHVybmVkIGJ5IDpmdW5jOmBjb21waWxlYCkuCisKKyAgIEFuYWx5c2UgdGhlIGJ5dGVjb2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBmdW5jdGlvbiwgZ2VuZXJhdG9yLCBtZXRob2QsIHN0cmluZworICAgb2Ygc291cmNlIGNvZGUsIG9yIGEgY29kZSBvYmplY3QgKGFzIHJldHVybmVkIGJ5IDpmdW5jOmBjb21waWxlYCkuCiAKICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBtYW55IG9mIHRoZSBmdW5jdGlvbnMgbGlzdGVkIGJlbG93LCBtb3N0CiAgICBub3RhYmx5IDpmdW5jOmBnZXRfaW5zdHJ1Y3Rpb25zYCwgYXMgaXRlcmF0aW5nIG92ZXIgYSA6Y2xhc3M6YEJ5dGVjb2RlYApAQCAtMTA5LDcgKzExMCw3IEBACiAuLiBmdW5jdGlvbjo6IGNvZGVfaW5mbyh4KQogCiAgICBSZXR1cm4gYSBmb3JtYXR0ZWQgbXVsdGktbGluZSBzdHJpbmcgd2l0aCBkZXRhaWxlZCBjb2RlIG9iamVjdCBpbmZvcm1hdGlvbgotICAgZm9yIHRoZSBzdXBwbGllZCBmdW5jdGlvbiwgbWV0aG9kLCBzb3VyY2UgY29kZSBzdHJpbmcgb3IgY29kZSBvYmplY3QuCisgICBmb3IgdGhlIHN1cHBsaWVkIGZ1bmN0aW9uLCBnZW5lcmF0b3IsIG1ldGhvZCwgc291cmNlIGNvZGUgc3RyaW5nIG9yIGNvZGUgb2JqZWN0LgogCiAgICBOb3RlIHRoYXQgdGhlIGV4YWN0IGNvbnRlbnRzIG9mIGNvZGUgaW5mbyBzdHJpbmdzIGFyZSBoaWdobHkgaW1wbGVtZW50YXRpb24KICAgIGRlcGVuZGVudCBhbmQgdGhleSBtYXkgY2hhbmdlIGFyYml0cmFyaWx5IGFjcm9zcyBQeXRob24gVk1zIG9yIFB5dGhvbgpAQCAtMTM2LDExICsxMzcsMTEgQEAKIC4uIGZ1bmN0aW9uOjogZGlzKHg9Tm9uZSwgKiwgZmlsZT1Ob25lKQogCiAgICBEaXNhc3NlbWJsZSB0aGUgKngqIG9iamVjdC4gICp4KiBjYW4gZGVub3RlIGVpdGhlciBhIG1vZHVsZSwgYSBjbGFzcywgYQotICAgbWV0aG9kLCBhIGZ1bmN0aW9uLCBhIGNvZGUgb2JqZWN0LCBhIHN0cmluZyBvZiBzb3VyY2UgY29kZSBvciBhIGJ5dGUgc2VxdWVuY2UKLSAgIG9mIHJhdyBieXRlY29kZS4gIEZvciBhIG1vZHVsZSwgaXQgZGlzYXNzZW1ibGVzIGFsbCBmdW5jdGlvbnMuICBGb3IgYSBjbGFzcywKLSAgIGl0IGRpc2Fzc2VtYmxlcyBhbGwgbWV0aG9kcy4gIEZvciBhIGNvZGUgb2JqZWN0IG9yIHNlcXVlbmNlIG9mIHJhdyBieXRlY29kZSwKLSAgIGl0IHByaW50cyBvbmUgbGluZSBwZXIgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24uICBTdHJpbmdzIGFyZSBmaXJzdCBjb21waWxlZCB0bwotICAgY29kZSBvYmplY3RzIHdpdGggdGhlIDpmdW5jOmBjb21waWxlYCBidWlsdC1pbiBmdW5jdGlvbiBiZWZvcmUgYmVpbmcKKyAgIG1ldGhvZCwgYSBmdW5jdGlvbiwgYSBnZW5lcmF0b3IsIGEgY29kZSBvYmplY3QsIGEgc3RyaW5nIG9mIHNvdXJjZSBjb2RlIG9yCisgICBhIGJ5dGUgc2VxdWVuY2Ugb2YgcmF3IGJ5dGVjb2RlLiAgRm9yIGEgbW9kdWxlLCBpdCBkaXNhc3NlbWJsZXMgYWxsIGZ1bmN0aW9ucy4KKyAgIEZvciBhIGNsYXNzLCBpdCBkaXNhc3NlbWJsZXMgYWxsIG1ldGhvZHMuICBGb3IgYSBjb2RlIG9iamVjdCBvciBzZXF1ZW5jZSBvZgorICAgcmF3IGJ5dGVjb2RlLCBpdCBwcmludHMgb25lIGxpbmUgcGVyIGJ5dGVjb2RlIGluc3RydWN0aW9uLiAgU3RyaW5ncyBhcmUgZmlyc3QKKyAgIGNvbXBpbGVkIHRvIGNvZGUgb2JqZWN0cyB3aXRoIHRoZSA6ZnVuYzpgY29tcGlsZWAgYnVpbHQtaW4gZnVuY3Rpb24gYmVmb3JlIGJlaW5nCiAgICBkaXNhc3NlbWJsZWQuICBJZiBubyBvYmplY3QgaXMgcHJvdmlkZWQsIHRoaXMgZnVuY3Rpb24gZGlzYXNzZW1ibGVzIHRoZSBsYXN0CiAgICB0cmFjZWJhY2suCiAKQEAgLTM0NSw2ICszNDYsMTQgQEAKICAgIEltcGxlbWVudHMgYGBUT1MgPSBpdGVyKFRPUylgYC4KIAogCisuLiBvcGNvZGU6OiBHRVRfWUlFTERfRlJPTV9JVEVSCisKKyAgIElmIGBgVE9TYGAgaXMgYSA6dGVybTpgZ2VuZXJhdG9yIGl0ZXJhdG9yYCBvciA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QKKyAgIGl0IGlzIGxlZnQgYXMgaXMuICBPdGhlcndpc2UsIGltcGxlbWVudHMgYGBUT1MgPSBpdGVyKFRPUylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogKipCaW5hcnkgb3BlcmF0aW9ucyoqCiAKIEJpbmFyeSBvcGVyYXRpb25zIHJlbW92ZSB0aGUgdG9wIG9mIHRoZSBzdGFjayAoVE9TKSBhbmQgdGhlIHNlY29uZCB0b3AtbW9zdApAQCAtMzYxLDYgKzM3MCwxMyBAQAogICAgSW1wbGVtZW50cyBgYFRPUyA9IFRPUzEgKiBUT1NgYC4KIAogCisuLiBvcGNvZGU6OiBCSU5BUllfTUFUUklYX01VTFRJUExZCisKKyAgIEltcGxlbWVudHMgYGBUT1MgPSBUT1MxIEAgVE9TYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG9wY29kZTo6IEJJTkFSWV9GTE9PUl9ESVZJREUKIAogICAgSW1wbGVtZW50cyBgYFRPUyA9IFRPUzEgLy8gVE9TYGAuCkBAIC00MzMsNiArNDQ5LDEzIEBACiAgICBJbXBsZW1lbnRzIGluLXBsYWNlIGBgVE9TID0gVE9TMSAqIFRPU2BgLgogCiAKKy4uIG9wY29kZTo6IElOUExBQ0VfTUFUUklYX01VTFRJUExZCisKKyAgIEltcGxlbWVudHMgaW4tcGxhY2UgYGBUT1MgPSBUT1MxIEAgVE9TYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG9wY29kZTo6IElOUExBQ0VfRkxPT1JfRElWSURFCiAKICAgIEltcGxlbWVudHMgaW4tcGxhY2UgYGBUT1MgPSBUT1MxIC8vIFRPU2BgLgpAQCAtNDkzLDYgKzUxNiw0MCBAQAogICAgSW1wbGVtZW50cyBgYGRlbCBUT1MxW1RPU11gYC4KIAogCisqKkNvcm91dGluZSBvcGNvZGVzKioKKworLi4gb3Bjb2RlOjogR0VUX0FXQUlUQUJMRQorCisgICBJbXBsZW1lbnRzIGBgVE9TID0gZ2V0X2F3YWl0YWJsZShUT1MpYGAsIHdoZXJlIGBgZ2V0X2F3YWl0YWJsZShvKWBgCisgICByZXR1cm5zIGBgb2BgIGlmIGBgb2BgIGlzIGEgY29yb3V0aW5lIG9iamVjdCBvciBhIGdlbmVyYXRvciBvYmplY3Qgd2l0aAorICAgdGhlIENPX0lURVJBQkxFX0NPUk9VVElORSBmbGFnLCBvciByZXNvbHZlcworICAgYGBvLl9fYXdhaXRfX2BgLgorCisKKy4uIG9wY29kZTo6IEdFVF9BSVRFUgorCisgICBJbXBsZW1lbnRzIGBgVE9TID0gZ2V0X2F3YWl0YWJsZShUT1MuX19haXRlcl9fKCkpYGAuICBTZWUgYGBHRVRfQVdBSVRBQkxFYGAKKyAgIGZvciBkZXRhaWxzIGFib3V0IGBgZ2V0X2F3YWl0YWJsZWBgCisKKworLi4gb3Bjb2RlOjogR0VUX0FORVhUCisKKyAgIEltcGxlbWVudHMgYGBQVVNIKGdldF9hd2FpdGFibGUoVE9TLl9fYW5leHRfXygpKSlgYC4gIFNlZSBgYEdFVF9BV0FJVEFCTEVgYAorICAgZm9yIGRldGFpbHMgYWJvdXQgYGBnZXRfYXdhaXRhYmxlYGAKKworCisuLiBvcGNvZGU6OiBCRUZPUkVfQVNZTkNfV0lUSAorCisgICBSZXNvbHZlcyBgYF9fYWVudGVyX19gYCBhbmQgYGBfX2FleGl0X19gYCBmcm9tIHRoZSBvYmplY3Qgb24gdG9wIG9mIHRoZQorICAgc3RhY2suICBQdXNoZXMgYGBfX2FleGl0X19gYCBhbmQgcmVzdWx0IG9mIGBgX19hZW50ZXJfXygpYGAgdG8gdGhlIHN0YWNrLgorCisKKy4uIG9wY29kZTo6IFNFVFVQX0FTWU5DX1dJVEgKKworICAgQ3JlYXRlcyBhIG5ldyBmcmFtZSBvYmplY3QuCisKKworCiAqKk1pc2NlbGxhbmVvdXMgb3Bjb2RlcyoqCiAKIC4uIG9wY29kZTo6IFBSSU5UX0VYUFIKQEAgLTU5Nyw3ICs2NTQsNyBAQAogICAgOm9wY29kZTpgVU5QQUNLX1NFUVVFTkNFYCkuCiAKIAotLi4gb3Bjb2RlOjogV0lUSF9DTEVBTlVQCisuLiBvcGNvZGU6OiBXSVRIX0NMRUFOVVBfU1RBUlQKIAogICAgQ2xlYW5zIHVwIHRoZSBzdGFjayB3aGVuIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBibG9jayBleGl0cy4gIFRPUyBpcyB0aGUKICAgIGNvbnRleHQgbWFuYWdlcidzIDptZXRoOmBfX2V4aXRfX2AgYm91bmQgbWV0aG9kLiBCZWxvdyBUT1MgYXJlIDEtLTMgdmFsdWVzCkBAIC02MDksNyArNjY2LDEzIEBACiAgICAqIChTRUNPTkQsIFRISVJELCBGT1VSVEgpID0gZXhjX2luZm8oKQogCiAgICBJbiB0aGUgbGFzdCBjYXNlLCBgYFRPUyhTRUNPTkQsIFRISVJELCBGT1VSVEgpYGAgaXMgY2FsbGVkLCBvdGhlcndpc2UKLSAgIGBgVE9TKE5vbmUsIE5vbmUsIE5vbmUpYGAuICBJbiBhZGRpdGlvbiwgVE9TIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhY2suCisgICBgYFRPUyhOb25lLCBOb25lLCBOb25lKWBgLiAgUHVzaGVzIFNFQ09ORCBhbmQgcmVzdWx0IG9mIHRoZSBjYWxsCisgICB0byB0aGUgc3RhY2suCisKKworLi4gb3Bjb2RlOjogV0lUSF9DTEVBTlVQX0ZJTklTSAorCisgICBQb3BzIGV4Y2VwdGlvbiB0eXBlIGFuZCByZXN1bHQgb2YgJ2V4aXQnIGZ1bmN0aW9uIGNhbGwgZnJvbSB0aGUgc3RhY2suCiAKICAgIElmIHRoZSBzdGFjayByZXByZXNlbnRzIGFuIGV4Y2VwdGlvbiwgKmFuZCogdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJucyBhCiAgICAndHJ1ZScgdmFsdWUsIHRoaXMgaW5mb3JtYXRpb24gaXMgInphcHBlZCIgYW5kIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUKQEAgLTc5NSwxMCArODU4LDYgQEAKICAgIFB1c2hlcyBhIHRyeSBibG9jayBmcm9tIGEgdHJ5LWV4Y2VwdCBjbGF1c2Ugb250byB0aGUgYmxvY2sgc3RhY2suICpkZWx0YSoKICAgIHBvaW50cyB0byB0aGUgZmluYWxseSBibG9jay4KIAotLi4gb3Bjb2RlOjogU1RPUkVfTUFQCi0KLSAgIFN0b3JlIGEga2V5IGFuZCB2YWx1ZSBwYWlyIGluIGEgZGljdGlvbmFyeS4gIFBvcHMgdGhlIGtleSBhbmQgdmFsdWUgd2hpbGUKLSAgIGxlYXZpbmcgdGhlIGRpY3Rpb25hcnkgb24gdGhlIHN0YWNrLgogCiAuLiBvcGNvZGU6OiBMT0FEX0ZBU1QgKHZhcl9udW0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QgYi9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0CmluZGV4IGM0OTU0ZDEuLjNlNmU4NGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzdHJpYnV0aW9uLnJzdApAQCAtMTIsMyArMTIsNCBAQAogICAgZGlzdHV0aWxzLnJzdAogICAgZW5zdXJlcGlwLnJzdAogICAgdmVudi5yc3QKKyAgIHppcGFwcC5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKaW5kZXggZWE2ZTFiNS4uOWY3ZDEyYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QKQEAgLTEwNTMsMTUgKzEwNTMsOSBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHNhbWUgc2VhcmNoIHRlY2huaXF1ZSBhcyA6ZnVuYzpgdGVzdG1vZGAuCiAKLSAgIC4uIG5vdGU6OgotICAgICAgVW5saWtlIDpmdW5jOmB0ZXN0bW9kYCBhbmQgOmNsYXNzOmBEb2NUZXN0RmluZGVyYCwgdGhpcyBmdW5jdGlvbiByYWlzZXMKLSAgICAgIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKm1vZHVsZSogY29udGFpbnMgbm8gZG9jc3RyaW5ncy4gIFlvdSBjYW4gcHJldmVudAotICAgICAgdGhpcyBlcnJvciBieSBwYXNzaW5nIGEgOmNsYXNzOmBEb2NUZXN0RmluZGVyYCBpbnN0YW5jZSBhcyB0aGUKLSAgICAgICp0ZXN0X2ZpbmRlciogYXJndW1lbnQgd2l0aCBpdHMgKmV4Y2x1ZGVfZW1wdHkqIGtleXdvcmQgYXJndW1lbnQgc2V0Ci0gICAgICB0byBgYEZhbHNlYGA6OgotCi0gICAgICAgICA+Pj4gZmluZGVyID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKGV4Y2x1ZGVfZW1wdHk9RmFsc2UpCi0gICAgICAgICA+Pj4gc3VpdGUgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSh0ZXN0X2ZpbmRlcj1maW5kZXIpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgOmZ1bmM6YERvY1Rlc3RTdWl0ZWAgcmV0dXJucyBhbiBlbXB0eSA6Y2xhc3M6YHVuaXR0ZXN0LlRlc3RTdWl0ZWAgaWYgKm1vZHVsZSoKKyAgICAgIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YFZhbHVlRXJyb3JgLgogCiAKIFVuZGVyIHRoZSBjb3ZlcnMsIDpmdW5jOmBEb2NUZXN0U3VpdGVgIGNyZWF0ZXMgYSA6Y2xhc3M6YHVuaXR0ZXN0LlRlc3RTdWl0ZWAgb3V0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CmluZGV4IGFlZWE5NDIuLmI5MWYyNmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CkBAIC01NzgsNiArNTc4LDE1IEBACiAgICAgICB3aWxsIGJlICpmYWlsb2JqKi4KIAogCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCisKKyAgICAgIFJldHVybiB0aGUgbG93ZXJjYXNlZCB2YWx1ZSAod2l0aG91dCBwYXJhbWV0ZXJzKSBvZiB0aGUgbWVzc2FnZSdzCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIGlmIGl0IGhhcyBvbmUsIG9yIGBgTm9uZWBgLiAgVGhlCisgICAgICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoaXMgbWV0aG9kIGFyZSAqaW5saW5lKiwgKmF0dGFjaG1lbnQqIG9yIGBgTm9uZWBgCisgICAgICBpZiB0aGUgbWVzc2FnZSBmb2xsb3dzIDpyZmM6YDIxODNgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogICAgLi4gbWV0aG9kOjogd2FsaygpCiAKICAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCAxZDcwMjI1Li42N2QwYTY3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtMTk1LDcgKzE5NSw4IEBACiAgICBzZXQgb2YgdGhlIHRleHQgYW5kIGlzIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUKICAgIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cwogICAgdG8gYGB1cy1hc2NpaWBgIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgb25seSBgYGFzY2lpYGAgY29kZSBwb2ludHMsIGFuZAotICAgYGB1dGYtOGBgIG90aGVyd2lzZS4KKyAgIGBgdXRmLThgYCBvdGhlcndpc2UuICBUaGUgKl9jaGFyc2V0KiBwYXJhbWV0ZXIgYWNjZXB0cyBlaXRoZXIgYSBzdHJpbmcgb3IgYQorICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZS4KIAogICAgVW5sZXNzIHRoZSAqX2NoYXJzZXQqIGFyZ3VtZW50IGlzIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLCB0aGUKICAgIE1JTUVUZXh0IG9iamVjdCBjcmVhdGVkIHdpbGwgaGF2ZSBib3RoIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCkBAIC0yMDYsMyArMjA3LDYgQEAKICAgIGBgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2BgIGhlYWRlciwgYWZ0ZXIgd2hpY2ggYSBgYHNldF9wYXlsb2FkYGAgY2FsbAogICAgd2lsbCBhdXRvbWF0aWNhbGx5IGVuY29kZSB0aGUgbmV3IHBheWxvYWQgKGFuZCBhZGQgYSBuZXcKICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgKl9jaGFyc2V0KiBhbHNvIGFjY2VwdHMgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAppbmRleCBkNGUzZmMxLi4wNDViMTE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKQEAgLTE4Nyw2ICsxODcsMTggQEAKICAgICAgIDpjb25zdDpgRmFsc2VgICh0aGUgZGVmYXVsdCksIGRlZmVjdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCiAgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCiAKKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbVxfCisKKyAgICAgIElmIDpjb25zdDpgVHJ1ZWAsIGxpbmVzIHN0YXJ0aW5nIHdpdGggKiJGcm9tICIqIGluIHRoZSBib2R5IGFyZQorICAgICAgZXNjYXBlZCBieSBwdXR0aW5nIGEgYGA+YGAgaW4gZnJvbnQgb2YgdGhlbS4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB3aGVuCisgICAgICB0aGUgbWVzc2FnZSBpcyBiZWluZyBzZXJpYWxpemVkIGJ5IGEgZ2VuZXJhdG9yLgorICAgICAgRGVmYXVsdDogOmNvbnN0OmBGYWxzZWAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgICAgVGhlICptYW5nbGVfZnJvbV8qIHBhcmFtZXRlci4KKwogICAgVGhlIGZvbGxvd2luZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb2RlIHVzaW5nCiAgICB0aGUgZW1haWwgbGlicmFyeSB0byBjcmVhdGUgcG9saWN5IGluc3RhbmNlcyB3aXRoIGN1c3RvbSBzZXR0aW5nczoKIApAQCAtMzE5LDYgKzMzMSwxMyBAQAogICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0CiAgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KIAorICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQorICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXworCisgICAgICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYC4KKwogICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQogICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CiAKQEAgLTM1Niw2ICszNzUsMTQgQEAKICAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KIAogCitBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCBpcyBwcm92aWRlZCBhcyBhIG1vZHVsZSBjb25zdGFudDoKKworLi4gZGF0YTo6IGNvbXBhdDMyCisKKyAgIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgLCBwcm92aWRpbmcgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuCisKKwogLi4gbm90ZTo6CiAKICAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCkBAIC0zNzgsNiArNDA1LDE0IEBACiAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKICAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAuLiBhdHRyaWJ1dGU6OiB1dGY4CisKKyAgICAgIElmIGBgRmFsc2VgYCwgZm9sbG93IDpyZmM6YDUzMjJgLCBzdXBwb3J0aW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluCisgICAgICBoZWFkZXJzIGJ5IGVuY29kaW5nIHRoZW0gYXMgImVuY29kZWQgd29yZHMiLiAgSWYgYGBUcnVlYGAsIGZvbGxvdworICAgICAgOnJmYzpgNjUzMmAgYW5kIHVzZSBgYHV0Zi04YGAgZW5jb2RpbmcgZm9yIGhlYWRlcnMuICBNZXNzYWdlcworICAgICAgZm9ybWF0dGVkIGluIHRoaXMgd2F5IG1heSBiZSBwYXNzZWQgdG8gU01UUCBzZXJ2ZXJzIHRoYXQgc3VwcG9ydAorICAgICAgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKDpyZmM6YDY1MzFgKS4KKwogICAgLi4gYXR0cmlidXRlOjogcmVmb2xkX3NvdXJjZQogCiAgICAgICBJZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3Qgb3JpZ2luYXRlZCBmcm9tIGEKQEAgLTQ5OSw2ICs1MzQsMTQgQEAKICAgIExpa2UgYGBkZWZhdWx0YGAsIGJ1dCB3aXRoIGBgbGluZXNlcGBgIHNldCB0byBgYFxyXG5gYCwgd2hpY2ggaXMgUkZDCiAgICBjb21wbGlhbnQuCiAKKy4uIGRhdGE6OiBTTVRQVVRGOAorCisgICBUaGUgc2FtZSBhcyBgYFNNVFBgYCBleGNlcHQgdGhhdCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgVHJ1ZWBgLgorICAgVXNlZnVsIGZvciBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBhIG1lc3NhZ2Ugc3RvcmUgd2l0aG91dCB1c2luZyBlbmNvZGVkCisgICB3b3JkcyBpbiB0aGUgaGVhZGVycy4gIFNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIFNNVFAgdHJhc21pc3Npb24gaWYgdGhlCisgICBzZW5kZXIgb3IgcmVjaXBpZW50IGFkZHJlc3NlcyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzICh0aGUKKyAgIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlYCBtZXRob2QgaGFuZGxlcyB0aGlzIGF1dG9tYXRpY2FsbHkpLgorCiAuLiBkYXRhOjogSFRUUAogCiAgICBTdWl0YWJsZSBmb3Igc2VyaWFsaXppbmcgaGVhZGVycyB3aXRoIGZvciB1c2UgaW4gSFRUUCB0cmFmZmljLiAgTGlrZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW51bS5yc3QgYi9Eb2MvbGlicmFyeS9lbnVtLnJzdAppbmRleCBjZjA5NTU5Li45YjRmOWI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbnVtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbnVtLnJzdApAQCAtMzE0LDExICszMTQsMTEgQEAKICAgICA+Pj4gc3RyKE1vb2QuZnVua3kpCiAgICAgJ215IGN1c3RvbSBzdHIhIDEnCiAKLVRoZSBydWxlcyBmb3Igd2hhdCBpcyBhbGxvd2VkIGFyZSBhcyBmb2xsb3dzOiBfc3VuZGVyXyBuYW1lcyAoc3RhcnRpbmcgYW5kCi1lbmRpbmcgd2l0aCBhIHNpbmdsZSB1bmRlcnNjb3JlKSBhcmUgcmVzZXJ2ZWQgYnkgZW51bSBhbmQgY2Fubm90IGJlIHVzZWQ7Ci1hbGwgb3RoZXIgYXR0cmlidXRlcyBkZWZpbmVkIHdpdGhpbiBhbiBlbnVtZXJhdGlvbiB3aWxsIGJlY29tZSBtZW1iZXJzIG9mIHRoaXMKLWVudW1lcmF0aW9uLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgKl9fZHVuZGVyX18qIG5hbWVzIGFuZCBkZXNjcmlwdG9ycyAobWV0aG9kcwotYXJlIGFsc28gZGVzY3JpcHRvcnMpLgorVGhlIHJ1bGVzIGZvciB3aGF0IGlzIGFsbG93ZWQgYXJlIGFzIGZvbGxvd3M6IG5hbWVzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoIGEKK3dpdGggYSBzaW5nbGUgdW5kZXJzY29yZSBhcmUgcmVzZXJ2ZWQgYnkgZW51bSBhbmQgY2Fubm90IGJlIHVzZWQ7IGFsbCBvdGhlcgorYXR0cmlidXRlcyBkZWZpbmVkIHdpdGhpbiBhbiBlbnVtZXJhdGlvbiB3aWxsIGJlY29tZSBtZW1iZXJzIG9mIHRoaXMKK2VudW1lcmF0aW9uLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygc3BlY2lhbCBtZXRob2RzICg6bWV0aDpgX19zdHJfX2AsCis6bWV0aDpgX19hZGRfX2AsIGV0Yy4pIGFuZCBkZXNjcmlwdG9ycyAobWV0aG9kcyBhcmUgYWxzbyBkZXNjcmlwdG9ycykuCiAKIE5vdGU6ICBpZiB5b3VyIGVudW1lcmF0aW9uIGRlZmluZXMgOm1ldGg6YF9fbmV3X19gIGFuZC9vciA6bWV0aDpgX19pbml0X19gIHRoZW4KIHdoYXRldmVyIHZhbHVlKHMpIHdlcmUgZ2l2ZW4gdG8gdGhlIGVudW0gbWVtYmVyIHdpbGwgYmUgcGFzc2VkIGludG8gdGhvc2UKQEAgLTQwMCw3ICs0MDAsOCBAQAogd2hpdGVzcGFjZS1zZXBhcmF0ZWQgc3RyaW5nIG9mIG5hbWVzLCBhIHNlcXVlbmNlIG9mIG5hbWVzLCBhIHNlcXVlbmNlIG9mCiAyLXR1cGxlcyB3aXRoIGtleS92YWx1ZSBwYWlycywgb3IgYSBtYXBwaW5nIChlLmcuIGRpY3Rpb25hcnkpIG9mIG5hbWVzIHRvCiB2YWx1ZXMuICBUaGUgbGFzdCB0d28gb3B0aW9ucyBlbmFibGUgYXNzaWduaW5nIGFyYml0cmFyeSB2YWx1ZXMgdG8KLWVudW1lcmF0aW9uczsgdGhlIG90aGVycyBhdXRvLWFzc2lnbiBpbmNyZWFzaW5nIGludGVnZXJzIHN0YXJ0aW5nIHdpdGggMS4gIEEKK2VudW1lcmF0aW9uczsgdGhlIG90aGVycyBhdXRvLWFzc2lnbiBpbmNyZWFzaW5nIGludGVnZXJzIHN0YXJ0aW5nIHdpdGggMSAodXNlCit0aGUgYGBzdGFydGBgIHBhcmFtZXRlciB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IHN0YXJ0aW5nIHZhbHVlKS4gIEEKIG5ldyBjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBFbnVtYCBpcyByZXR1cm5lZC4gIEluIG90aGVyIHdvcmRzLCB0aGUgYWJvdmUKIGFzc2lnbm1lbnQgdG8gOmNsYXNzOmBBbmltYWxgIGlzIGVxdWl2YWxlbnQgdG86OgogCkBAIC00MzgsMTIgKzQzOSwxMiBAQAogCiBUaGUgY29tcGxldGUgc2lnbmF0dXJlIGlzOjoKIAotICAgIEVudW0odmFsdWU9J05ld0VudW1OYW1lJywgbmFtZXM9PC4uLj4sICosIG1vZHVsZT0nLi4uJywgcXVhbG5hbWU9Jy4uLicsIHR5cGU9PG1peGVkLWluIGNsYXNzPikKKyAgICBFbnVtKHZhbHVlPSdOZXdFbnVtTmFtZScsIG5hbWVzPTwuLi4+LCAqLCBtb2R1bGU9Jy4uLicsIHF1YWxuYW1lPScuLi4nLCB0eXBlPTxtaXhlZC1pbiBjbGFzcz4sIHN0YXJ0PTEpCiAKIDp2YWx1ZTogV2hhdCB0aGUgbmV3IEVudW0gY2xhc3Mgd2lsbCByZWNvcmQgYXMgaXRzIG5hbWUuCiAKIDpuYW1lczogVGhlIEVudW0gbWVtYmVycy4gIFRoaXMgY2FuIGJlIGEgd2hpdGVzcGFjZSBvciBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nCi0gICh2YWx1ZXMgd2lsbCBzdGFydCBhdCAxKTo6CisgICh2YWx1ZXMgd2lsbCBzdGFydCBhdCAxIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkKTo6CiAKICAgICAncmVkIGdyZWVuIGJsdWUnIHwgJ3JlZCxncmVlbixibHVlJyB8ICdyZWQsIGdyZWVuLCBibHVlJwogCkBAIC00NjUsNiArNDY2LDExIEBACiAKIDp0eXBlOiB0eXBlIHRvIG1peCBpbiB0byBuZXcgRW51bSBjbGFzcy4KIAorOnN0YXJ0OiBudW1iZXIgdG8gc3RhcnQgY291bnRpbmcgYXQgaWYgb25seSBuYW1lcyBhcmUgcGFzc2VkIGluLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlICpzdGFydCogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKwogCiBEZXJpdmVkIEVudW1lcmF0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Vycm5vLnJzdCBiL0RvYy9saWJyYXJ5L2Vycm5vLnJzdAppbmRleCBkMjE2M2I2Li4yMmE1Y2JjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lcnJuby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXJybm8ucnN0CkBAIC00MSw3ICs0MSwxMCBAQAogCiAuLiBkYXRhOjogRUlOVFIKIAotICAgSW50ZXJydXB0ZWQgc3lzdGVtIGNhbGwKKyAgIEludGVycnVwdGVkIHN5c3RlbSBjYWxsLgorCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIFRoaXMgZXJyb3IgaXMgbWFwcGVkIHRvIHRoZSBleGNlcHRpb24gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKIAogLi4gZGF0YTo6IEVJTwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCAyNzFhNWM4Li4wYTQyMmIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMTYyLDcgKzE2Miw4IEBACiAKIC4uIGV4Y2VwdGlvbjo6IEdlbmVyYXRvckV4aXQKIAotICAgUmFpc2VkIHdoZW4gYSA6dGVybTpgZ2VuZXJhdG9yYFwncyA6bWV0aDpgY2xvc2VgIG1ldGhvZCBpcyBjYWxsZWQuICBJdAorICAgUmFpc2VkIHdoZW4gYSA6dGVybTpgZ2VuZXJhdG9yYCBvciA6dGVybTpgY29yb3V0aW5lYCBpcyBjbG9zZWQ7CisgICBzZWUgOm1ldGg6YGdlbmVyYXRvci5jbG9zZWAgYW5kIDptZXRoOmBjb3JvdXRpbmUuY2xvc2VgLiAgSXQKICAgIGRpcmVjdGx5IGluaGVyaXRzIGZyb20gOmV4YzpgQmFzZUV4Y2VwdGlvbmAgaW5zdGVhZCBvZiA6ZXhjOmBFeGNlcHRpb25gIHNpbmNlCiAgICBpdCBpcyB0ZWNobmljYWxseSBub3QgYW4gZXJyb3IuCiAKQEAgLTI4MSw2ICsyODIsMTYgQEAKICAgIGhhbmRsaW5nIGluIEMsIG1vc3QgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBhcmUgbm90IGNoZWNrZWQuCiAKIAorLi4gZXhjZXB0aW9uOjogUmVjdXJzaW9uRXJyb3IKKworICAgVGhpcyBleGNlcHRpb24gaXMgZGVyaXZlZCBmcm9tIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBJdCBpcyByYWlzZWQgd2hlbiB0aGUKKyAgIGludGVycHJldGVyIGRldGVjdHMgdGhhdCB0aGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGggKHNlZQorICAgOmZ1bmM6YHN5cy5nZXRyZWN1cnNpb25saW1pdGApIGlzIGV4Y2VlZGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFByZXZpb3VzbHksIGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIC4uIGV4Y2VwdGlvbjo6IFJlZmVyZW5jZUVycm9yCiAKICAgIFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgd2VhayByZWZlcmVuY2UgcHJveHksIGNyZWF0ZWQgYnkgdGhlCkBAIC0zMDYsMTQgKzMxNywzMCBAQAogICAgZ2l2ZW4gYXMgYW4gYXJndW1lbnQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGV4Y2VwdGlvbiwgYW5kIGRlZmF1bHRzCiAgICB0byA6Y29uc3Q6YE5vbmVgLgogCi0gICBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIHJldHVybnMsIGEgbmV3IDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGlzCisgICBXaGVuIGEgOnRlcm06YGdlbmVyYXRvcmAgb3IgOnRlcm06YGNvcm91dGluZWAgZnVuY3Rpb24KKyAgIHJldHVybnMsIGEgbmV3IDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGlzCiAgICByYWlzZWQsIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlCiAgICA6YXR0cjpgdmFsdWVgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGV4Y2VwdGlvbi4KIAorICAgSWYgYSBnZW5lcmF0b3IgZnVuY3Rpb24gZGVmaW5lZCBpbiB0aGUgcHJlc2VuY2Ugb2YgYSBgYGZyb20gX19mdXR1cmVfXworICAgaW1wb3J0IGdlbmVyYXRvcl9zdG9wYGAgZGlyZWN0aXZlIHJhaXNlcyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgaXQgd2lsbCBiZQorICAgY29udmVydGVkIGludG8gYSA6ZXhjOmBSdW50aW1lRXJyb3JgIChyZXRhaW5pbmcgdGhlIDpleGM6YFN0b3BJdGVyYXRpb25gCisgICBhcyB0aGUgbmV3IGV4Y2VwdGlvbidzIGNhdXNlKS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIGBgdmFsdWVgYCBhdHRyaWJ1dGUgYW5kIHRoZSBhYmlsaXR5IGZvciBnZW5lcmF0b3IgZnVuY3Rpb25zIHRvCiAgICAgICB1c2UgaXQgdG8gcmV0dXJuIGEgdmFsdWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJbnRyb2R1Y2VkIHRoZSBSdW50aW1lRXJyb3IgdHJhbnNmb3JtYXRpb24uCisKKy4uIGV4Y2VwdGlvbjo6IFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICBNdXN0IGJlIHJhaXNlZCBieSA6bWV0aDpgX19hbmV4dF9fYCBtZXRob2Qgb2YgYW4KKyAgIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgIG9iamVjdCB0byBzdG9wIHRoZSBpdGVyYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBleGNlcHRpb246OiBTeW50YXhFcnJvcgogCiAgICBSYWlzZWQgd2hlbiB0aGUgcGFyc2VyIGVuY291bnRlcnMgYSBzeW50YXggZXJyb3IuICBUaGlzIG1heSBvY2N1ciBpbiBhbgpAQCAtNTM2LDcgKzU2MywxMiBAQAogLi4gZXhjZXB0aW9uOjogSW50ZXJydXB0ZWRFcnJvcgogCiAgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGJ5IGFuIGluY29taW5nIHNpZ25hbC4KLSAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVJTlRSYGAuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgOnB5OmRhdGE6YH5lcnJuby5FSU5UUmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBQeXRob24gbm93IHJldHJpZXMgc3lzdGVtIGNhbGxzIHdoZW4gYSBzeXNjYWxsIGlzIGludGVycnVwdGVkIGJ5IGEKKyAgICAgIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YAorICAgICAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CmluZGV4IGViMjAxNmEuLjNhNWJhZGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApAQCAtNDcsNiArNDcsOSBAQAogICAgRHVtcCB0aGUgdHJhY2ViYWNrcyBvZiBhbGwgdGhyZWFkcyBpbnRvICpmaWxlKi4gSWYgKmFsbF90aHJlYWRzKiBpcwogICAgYGBGYWxzZWBgLCBkdW1wIG9ubHkgdGhlIGN1cnJlbnQgdGhyZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KKwogCiBGYXVsdCBoYW5kbGVyIHN0YXRlCiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01OSw2ICs2MiwxMiBAQAogICAgcHJvZHVjZSB0cmFjZWJhY2tzIGZvciBldmVyeSBydW5uaW5nIHRocmVhZC4gT3RoZXJ3aXNlLCBkdW1wIG9ubHkgdGhlIGN1cnJlbnQKICAgIHRocmVhZC4KIAorICAgVGhlICpmaWxlKiBtdXN0IGJlIGtlcHQgb3BlbiB1bnRpbCB0aGUgZmF1bHQgaGFuZGxlciBpcyBkaXNhYmxlZDogc2VlCisgICA6cmVmOmBpc3N1ZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMgPGZhdWx0aGFuZGxlci1mZD5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcGFzc2luZyBmaWxlIGRlc2NyaXB0b3IgdG8gdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiBkaXNhYmxlKCkKIAogICAgRGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcjogdW5pbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlcnMgaW5zdGFsbGVkIGJ5CkBAIC04Miw5ICs5MSwxNiBAQAogICAgY2FsbCByZXBsYWNlcyBwcmV2aW91cyBwYXJhbWV0ZXJzIGFuZCByZXNldHMgdGhlIHRpbWVvdXQuIFRoZSB0aW1lciBoYXMgYQogICAgc3ViLXNlY29uZCByZXNvbHV0aW9uLgogCisgICBUaGUgKmZpbGUqIG11c3QgYmUga2VwdCBvcGVuIHVudGlsIHRoZSB0cmFjZWJhY2sgaXMgZHVtcGVkIG9yCisgICA6ZnVuYzpgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyYCBpcyBjYWxsZWQ6IHNlZSA6cmVmOmBpc3N1ZSB3aXRoIGZpbGUKKyAgIGRlc2NyaXB0b3JzIDxmYXVsdGhhbmRsZXItZmQ+YC4KKwogICAgVGhpcyBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHdhdGNoZG9nIHRocmVhZCBhbmQgdGhlcmVmb3JlIGlzIG5vdAogICAgYXZhaWxhYmxlIGlmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIHRocmVhZHMgZGlzYWJsZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgorCiAuLiBmdW5jdGlvbjo6IGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCiAKICAgIENhbmNlbCB0aGUgbGFzdCBjYWxsIHRvIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAuCkBAIC05OSw4ICsxMTUsMTQgQEAKICAgIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMsIG9yIG9mIHRoZSBjdXJyZW50IHRocmVhZCBpZiAqYWxsX3RocmVhZHMqIGlzCiAgICBgYEZhbHNlYGAsIGludG8gKmZpbGUqLiBDYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyIGlmIGNoYWluIGlzIGBgVHJ1ZWBgLgogCisgICBUaGUgKmZpbGUqIG11c3QgYmUga2VwdCBvcGVuIHVudGlsIHRoZSBzaWduYWwgaXMgdW5yZWdpc3RlcmVkIGJ5CisgICA6ZnVuYzpgdW5yZWdpc3RlcmA6IHNlZSA6cmVmOmBpc3N1ZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMgPGZhdWx0aGFuZGxlci1mZD5gLgorCiAgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgorCiAuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQogCiAgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCkBAIC0xMTAsNiArMTMyLDggQEAKICAgIE5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KIAogCisuLiBfZmF1bHRoYW5kbGVyLWZkOgorCiBJc3N1ZSB3aXRoIGZpbGUgZGVzY3JpcHRvcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mY250bC5yc3QgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKaW5kZXggOGU5MzJmYi4uNDMyMTQwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmNudGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdApAQCAtMjgsNDEgKzI4LDQxIEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIAotLi4gZnVuY3Rpb246OiBmY250bChmZCwgb3BbLCBhcmddKQorLi4gZnVuY3Rpb246OiBmY250bChmZCwgY21kLCBhcmc9MCkKIAotICAgUGVyZm9ybSB0aGUgb3BlcmF0aW9uICpvcCogb24gZmlsZSBkZXNjcmlwdG9yICpmZCogKGZpbGUgb2JqZWN0cyBwcm92aWRpbmcKKyAgIFBlcmZvcm0gdGhlIG9wZXJhdGlvbiAqY21kKiBvbiBmaWxlIGRlc2NyaXB0b3IgKmZkKiAoZmlsZSBvYmplY3RzIHByb3ZpZGluZwogICAgYSA6bWV0aDpgfmlvLklPQmFzZS5maWxlbm9gIG1ldGhvZCBhcmUgYWNjZXB0ZWQgYXMgd2VsbCkuICBUaGUgdmFsdWVzIHVzZWQKLSAgIGZvciAqb3AqIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUgYXMgY29uc3RhbnRzCisgICBmb3IgKmNtZCogYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZSBhcyBjb25zdGFudHMKICAgIGluIHRoZSA6bW9kOmBmY250bGAgbW9kdWxlLCB1c2luZyB0aGUgc2FtZSBuYW1lcyBhcyB1c2VkIGluIHRoZSByZWxldmFudCBDCi0gICBoZWFkZXIgZmlsZXMuICBUaGUgYXJndW1lbnQgKmFyZyogaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB0aGUgaW50ZWdlcgotICAgdmFsdWUgYGAwYGAuICBXaGVuIHByZXNlbnQsIGl0IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciB2YWx1ZSwgb3IgYSBzdHJpbmcuCi0gICBXaXRoIHRoZSBhcmd1bWVudCBtaXNzaW5nIG9yIGFuIGludGVnZXIgdmFsdWUsIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbgotICAgaXMgdGhlIGludGVnZXIgcmV0dXJuIHZhbHVlIG9mIHRoZSBDIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgV2hlbiB0aGUgYXJndW1lbnQgaXMKLSAgIGEgc3RyaW5nIGl0IHJlcHJlc2VudHMgYSBiaW5hcnkgc3RydWN0dXJlLCBlLmcuIGNyZWF0ZWQgYnkgOmZ1bmM6YHN0cnVjdC5wYWNrYC4KLSAgIFRoZSBiaW5hcnkgZGF0YSBpcyBjb3BpZWQgdG8gYSBidWZmZXIgd2hvc2UgYWRkcmVzcyBpcyBwYXNzZWQgdG8gdGhlIEMKLSAgIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgVGhlIHJldHVybiB2YWx1ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCBpcyB0aGUgY29udGVudHMKLSAgIG9mIHRoZSBidWZmZXIsIGNvbnZlcnRlZCB0byBhIHN0cmluZyBvYmplY3QuICBUaGUgbGVuZ3RoIG9mIHRoZSByZXR1cm5lZCBzdHJpbmcKLSAgIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGxlbmd0aCBvZiB0aGUgKmFyZyogYXJndW1lbnQuICBUaGlzIGlzIGxpbWl0ZWQgdG8gMTAyNAotICAgYnl0ZXMuICBJZiB0aGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgaW4gdGhlIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcwotICAgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcyBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24KLSAgIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEgY29ycnVwdGlvbi4KKyAgIGhlYWRlciBmaWxlcy4gVGhlIGFyZ3VtZW50ICphcmcqIGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciB2YWx1ZSwgb3IgYQorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiBXaXRoIGFuIGludGVnZXIgdmFsdWUsIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcworICAgZnVuY3Rpb24gaXMgdGhlIGludGVnZXIgcmV0dXJuIHZhbHVlIG9mIHRoZSBDIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgV2hlbgorICAgdGhlIGFyZ3VtZW50IGlzIGJ5dGVzIGl0IHJlcHJlc2VudHMgYSBiaW5hcnkgc3RydWN0dXJlLCBlLmcuIGNyZWF0ZWQgYnkKKyAgIDpmdW5jOmBzdHJ1Y3QucGFja2AuIFRoZSBiaW5hcnkgZGF0YSBpcyBjb3BpZWQgdG8gYSBidWZmZXIgd2hvc2UgYWRkcmVzcyBpcworICAgcGFzc2VkIHRvIHRoZSBDIDpjOmZ1bmM6YGZjbnRsYCBjYWxsLiAgVGhlIHJldHVybiB2YWx1ZSBhZnRlciBhIHN1Y2Nlc3NmdWwKKyAgIGNhbGwgaXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIsIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKyAgIFRoZSBsZW5ndGggb2YgdGhlIHJldHVybmVkIG9iamVjdCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGggb2YgdGhlCisgICAqYXJnKiBhcmd1bWVudC4gVGhpcyBpcyBsaW1pdGVkIHRvIDEwMjQgYnl0ZXMuIElmIHRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZAorICAgaW4gdGhlIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcyBsYXJnZXIgdGhhbiAxMDI0IGJ5dGVzLCB0aGlzIGlzCisgICBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24gdmlvbGF0aW9uIG9yIGEgbW9yZSBzdWJ0bGUgZGF0YQorICAgY29ycnVwdGlvbi4KIAogICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKLS4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIG9wWywgYXJnWywgbXV0YXRlX2ZsYWddXSkKKy4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIHJlcXVlc3QsIGFyZz0wLCBtdXRhdGVfZmxhZz1UcnVlKQogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgOmZ1bmM6YH5mY250bC5mY250bGAgZnVuY3Rpb24sIGV4Y2VwdAogICAgdGhhdCB0aGUgYXJndW1lbnQgaGFuZGxpbmcgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLgogCi0gICBUaGUgb3AgcGFyYW1ldGVyIGlzIGxpbWl0ZWQgdG8gdmFsdWVzIHRoYXQgY2FuIGZpdCBpbiAzMi1iaXRzLgotICAgQWRkaXRpb25hbCBjb25zdGFudHMgb2YgaW50ZXJlc3QgZm9yIHVzZSBhcyB0aGUgKm9wKiBhcmd1bWVudCBjYW4gYmUKKyAgIFRoZSAqcmVxdWVzdCogcGFyYW1ldGVyIGlzIGxpbWl0ZWQgdG8gdmFsdWVzIHRoYXQgY2FuIGZpdCBpbiAzMi1iaXRzLgorICAgQWRkaXRpb25hbCBjb25zdGFudHMgb2YgaW50ZXJlc3QgZm9yIHVzZSBhcyB0aGUgKnJlcXVlc3QqIGFyZ3VtZW50IGNhbiBiZQogICAgZm91bmQgaW4gdGhlIDptb2Q6YHRlcm1pb3NgIG1vZHVsZSwgdW5kZXIgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbgogICAgdGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLgogCi0gICBUaGUgcGFyYW1ldGVyICphcmcqIGNhbiBiZSBvbmUgb2YgYW4gaW50ZWdlciwgYWJzZW50ICh0cmVhdGVkIGlkZW50aWNhbGx5IHRvIHRoZQotICAgaW50ZWdlciBgYDBgYCksIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSByZWFkLW9ubHkgYnVmZmVyIGludGVyZmFjZSAobW9zdCBsaWtlbHkKLSAgIGEgcGxhaW4gUHl0aG9uIHN0cmluZykgb3IgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQtd3JpdGUgYnVmZmVyIGludGVyZmFjZS4KKyAgIFRoZSBwYXJhbWV0ZXIgKmFyZyogY2FuIGJlIG9uZSBvZiBhbiBpbnRlZ2VyLCBhbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUKKyAgIHJlYWQtb25seSBidWZmZXIgaW50ZXJmYWNlIChsaWtlIDpjbGFzczpgYnl0ZXNgKSBvciBhbiBvYmplY3Qgc3VwcG9ydGluZworICAgdGhlIHJlYWQtd3JpdGUgYnVmZmVyIGludGVyZmFjZSAobGlrZSA6Y2xhc3M6YGJ5dGVhcnJheWApLgogCiAgICBJbiBhbGwgYnV0IHRoZSBsYXN0IGNhc2UsIGJlaGF2aW91ciBpcyBhcyBmb3IgdGhlIDpmdW5jOmB+ZmNudGwuZmNudGxgCiAgICBmdW5jdGlvbi4KQEAgLTcyLDcgKzcyLDcgQEAKIAogICAgSWYgaXQgaXMgZmFsc2UsIHRoZSBidWZmZXIncyBtdXRhYmlsaXR5IGlzIGlnbm9yZWQgYW5kIGJlaGF2aW91ciBpcyBhcyBmb3IgYQogICAgcmVhZC1vbmx5IGJ1ZmZlciwgZXhjZXB0IHRoYXQgdGhlIDEwMjQgYnl0ZSBsaW1pdCBtZW50aW9uZWQgYWJvdmUgaXMgYXZvaWRlZCAtLQotICAgc28gbG9uZyBhcyB0aGUgYnVmZmVyIHlvdSBwYXNzIGlzIGFzIGxlYXN0IGFzIGxvbmcgYXMgd2hhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbQorICAgc28gbG9uZyBhcyB0aGUgYnVmZmVyIHlvdSBwYXNzIGlzIGF0IGxlYXN0IGFzIGxvbmcgYXMgd2hhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbQogICAgd2FudHMgdG8gcHV0IHRoZXJlLCB0aGluZ3Mgc2hvdWxkIHdvcmsuCiAKICAgIElmICptdXRhdGVfZmxhZyogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGVuIHRoZSBidWZmZXIgaXMgKGluIGVmZmVjdCkgcGFzc2VkCkBAIC05NywyNSArOTcsMjUgQEAKICAgICAgIGFycmF5KCdoJywgWzEzMzQxXSkKIAogCi0uLiBmdW5jdGlvbjo6IGZsb2NrKGZkLCBvcCkKKy4uIGZ1bmN0aW9uOjogZmxvY2soZmQsIG9wZXJhdGlvbikKIAotICAgUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gKm9wKiBvbiBmaWxlIGRlc2NyaXB0b3IgKmZkKiAoZmlsZSBvYmplY3RzIHByb3ZpZGluZworICAgUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gKm9wZXJhdGlvbiogb24gZmlsZSBkZXNjcmlwdG9yICpmZCogKGZpbGUgb2JqZWN0cyBwcm92aWRpbmcKICAgIGEgOm1ldGg6YH5pby5JT0Jhc2UuZmlsZW5vYCBtZXRob2QgYXJlIGFjY2VwdGVkIGFzIHdlbGwpLiBTZWUgdGhlIFVuaXggbWFudWFsCiAgICA6bWFucGFnZTpgZmxvY2soMilgIGZvciBkZXRhaWxzLiAgKE9uIHNvbWUgc3lzdGVtcywgdGhpcyBmdW5jdGlvbiBpcyBlbXVsYXRlZAogICAgdXNpbmcgOmM6ZnVuYzpgZmNudGxgLikKIAogCi0uLiBmdW5jdGlvbjo6IGxvY2tmKGZkLCBvcGVyYXRpb24sIFtsZW5ndGgsIFtzdGFydCwgW3doZW5jZV1dXSkKKy4uIGZ1bmN0aW9uOjogbG9ja2YoZmQsIGNtZCwgbGVuPTAsIHN0YXJ0PTAsIHdoZW5jZT0wKQogCiAgICBUaGlzIGlzIGVzc2VudGlhbGx5IGEgd3JhcHBlciBhcm91bmQgdGhlIDpmdW5jOmB+ZmNudGwuZmNudGxgIGxvY2tpbmcgY2FsbHMuCi0gICAqZmQqIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCAqb3BlcmF0aW9uKgorICAgKmZkKiBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgKmNtZCoKICAgIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKIAogICAgKiA6Y29uc3Q6YExPQ0tfVU5gIC0tIHVubG9jawogICAgKiA6Y29uc3Q6YExPQ0tfU0hgIC0tIGFjcXVpcmUgYSBzaGFyZWQgbG9jawogICAgKiA6Y29uc3Q6YExPQ0tfRVhgIC0tIGFjcXVpcmUgYW4gZXhjbHVzaXZlIGxvY2sKIAotICAgV2hlbiAqb3BlcmF0aW9uKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCisgICBXaGVuICpjbWQqIGlzIDpjb25zdDpgTE9DS19TSGAgb3IgOmNvbnN0OmBMT0NLX0VYYCwgaXQgY2FuIGFsc28gYmUKICAgIGJpdHdpc2UgT1JlZCB3aXRoIDpjb25zdDpgTE9DS19OQmAgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4KICAgIElmIDpjb25zdDpgTE9DS19OQmAgaXMgdXNlZCBhbmQgdGhlIGxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbgogICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQgYW5kIHRoZSBleGNlcHRpb24gd2lsbCBoYXZlIGFuICplcnJubyoKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgc3lzdGVtcywgOmNvbnN0OmBMT0NLX0VYYCBjYW4gb25seSBiZSB1c2VkIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJzIHRvIGEKICAgIGZpbGUgb3BlbmVkIGZvciB3cml0aW5nLgogCi0gICAqbGVuZ3RoKiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssICpzdGFydCogaXMgdGhlIGJ5dGUgb2Zmc2V0IGF0CisgICAqbGVuKiBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssICpzdGFydCogaXMgdGhlIGJ5dGUgb2Zmc2V0IGF0CiAgICB3aGljaCB0aGUgbG9jayBzdGFydHMsIHJlbGF0aXZlIHRvICp3aGVuY2UqLCBhbmQgKndoZW5jZSogaXMgYXMgd2l0aAogICAgOmZ1bmM6YGlvLklPQmFzZS5zZWVrYCwgc3BlY2lmaWNhbGx5OgogCkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICogOmNvbnN0OmAyYCAtLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlICg6ZGF0YTpgb3MuU0VFS19FTkRgKQogCiAgICBUaGUgZGVmYXVsdCBmb3IgKnN0YXJ0KiBpcyAwLCB3aGljaCBtZWFucyB0byBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgotICAgVGhlIGRlZmF1bHQgZm9yICpsZW5ndGgqIGlzIDAgd2hpY2ggbWVhbnMgdG8gbG9jayB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiAgVGhlCisgICBUaGUgZGVmYXVsdCBmb3IgKmxlbiogaXMgMCB3aGljaCBtZWFucyB0byBsb2NrIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuICBUaGUKICAgIGRlZmF1bHQgZm9yICp3aGVuY2UqIGlzIGFsc28gMC4KIAogRXhhbXBsZXMgKGFsbCBvbiBhIFNWUjQgY29tcGxpYW50IHN5c3RlbSk6OgpAQCAtMTQ3LDkgKzE0Nyw5IEBACiAgICBydiA9IGZjbnRsLmZjbnRsKGYsIGZjbnRsLkZfU0VUTEtXLCBsb2NrZGF0YSkKIAogTm90ZSB0aGF0IGluIHRoZSBmaXJzdCBleGFtcGxlIHRoZSByZXR1cm4gdmFsdWUgdmFyaWFibGUgKnJ2KiB3aWxsIGhvbGQgYW4KLWludGVnZXIgdmFsdWU7IGluIHRoZSBzZWNvbmQgZXhhbXBsZSBpdCB3aWxsIGhvbGQgYSBzdHJpbmcgdmFsdWUuICBUaGUgc3RydWN0dXJlCi1sYXktb3V0IGZvciB0aGUgKmxvY2tkYXRhKiB2YXJpYWJsZSBpcyBzeXN0ZW0gZGVwZW5kZW50IC0tLSB0aGVyZWZvcmUgdXNpbmcgdGhlCi06ZnVuYzpgZmxvY2tgIGNhbGwgbWF5IGJlIGJldHRlci4KK2ludGVnZXIgdmFsdWU7IGluIHRoZSBzZWNvbmQgZXhhbXBsZSBpdCB3aWxsIGhvbGQgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuICBUaGUKK3N0cnVjdHVyZSBsYXktb3V0IGZvciB0aGUgKmxvY2tkYXRhKiB2YXJpYWJsZSBpcyBzeXN0ZW0gZGVwZW5kZW50IC0tLSB0aGVyZWZvcmUKK3VzaW5nIHRoZSA6ZnVuYzpgZmxvY2tgIGNhbGwgbWF5IGJlIGJldHRlci4KIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Zvcm1hdHRlci5yc3QgYi9Eb2MvbGlicmFyeS9mb3JtYXR0ZXIucnN0CmluZGV4IDE4NDdhODAuLmE1MTVmNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Zvcm1hdHRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZm9ybWF0dGVyLnJzdApAQCAtNSw3ICs1LDcgQEAKICAgIDpzeW5vcHNpczogR2VuZXJpYyBvdXRwdXQgZm9ybWF0dGVyIGFuZCBkZXZpY2UgaW50ZXJmYWNlLgogICAgOmRlcHJlY2F0ZWQ6CiAKLS4uIGRlcHJlY2F0ZWQ6OiAzLjQKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNCAzLjYKICAgIER1ZSB0byBsYWNrIG9mIHVzYWdlLCB0aGUgZm9ybWF0dGVyIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCBpcyBzbGF0ZWQKICAgIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjYuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZyYWN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9mcmFjdGlvbnMucnN0CmluZGV4IGMyYzc0MDEuLmUwZjA2ODIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZyYWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnJhY3Rpb25zLnJzdApAQCAtMTcyLDYgKzE3Miw5IEBACiAgICBzaWduIGFzICpiKiBpZiAqYiogaXMgbm9uemVybzsgb3RoZXJ3aXNlIGl0IHRha2VzIHRoZSBzaWduIG9mICphKi4gIGBgZ2NkKDAsCiAgICAwKWBgIHJldHVybnMgYGAwYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6ZnVuYzpgbWF0aC5nY2RgIGluc3RlYWQuCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CmluZGV4IDUzNzczMzUuLjQwOWY2YzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdApAQCAtMTU2LDExICsxNTYsMTIgQEAKIAogLi4gZnVuY3Rpb246OiBjaHIoaSkKIAotICAgUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgY2hhcmFjdGVyIHdob3NlIFVuaWNvZGUgY29kZSBwb2ludCBpcyB0aGUgaW50ZWdlcgotICAgKmkqLiAgRm9yIGV4YW1wbGUsIGBgY2hyKDk3KWBgIHJldHVybnMgdGhlIHN0cmluZyBgYCdhJ2BgLiBUaGlzIGlzIHRoZQotICAgaW52ZXJzZSBvZiA6ZnVuYzpgb3JkYC4gIFRoZSB2YWxpZCByYW5nZSBmb3IgdGhlIGFyZ3VtZW50IGlzIGZyb20gMCB0aHJvdWdoCi0gICAxLDExNCwxMTEgKDB4MTBGRkZGIGluIGJhc2UgMTYpLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzCi0gICBvdXRzaWRlIHRoYXQgcmFuZ2UuCisgICBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRpbmcgYSBjaGFyYWN0ZXIgd2hvc2UgVW5pY29kZSBjb2RlIHBvaW50IGlzIHRoZQorICAgaW50ZWdlciAqaSouICBGb3IgZXhhbXBsZSwgYGBjaHIoOTcpYGAgcmV0dXJucyB0aGUgc3RyaW5nIGBgJ2EnYGAsIHdoaWxlCisgICBgYGNocig5NTcpYGAgcmV0dXJucyB0aGUgc3RyaW5nIGBgJ869J2BgLiBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIDpmdW5jOmBvcmRgLgorCisgICBUaGUgdmFsaWQgcmFuZ2UgZm9yIHRoZSBhcmd1bWVudCBpcyBmcm9tIDAgdGhyb3VnaCAxLDExNCwxMTEgKDB4MTBGRkZGIGluCisgICBiYXNlIDE2KS4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcyBvdXRzaWRlIHRoYXQgcmFuZ2UuCiAKIAogLi4gZnVuY3Rpb246OiBjbGFzc21ldGhvZChmdW5jdGlvbikKQEAgLTk3Miw5ICs5NzMsMTEgQEAKICAgICAgQ2hhcmFjdGVycyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBlbmNvZGluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUKICAgICAgYXBwcm9wcmlhdGUgWE1MIGNoYXJhY3RlciByZWZlcmVuY2UgYGAmI25ubjtgYC4KIAotICAgKiBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIChhbHNvIG9ubHkgc3VwcG9ydGVkIHdoZW4gd3JpdGluZykKLSAgICAgcmVwbGFjZXMgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycyB3aXRoIFB5dGhvbidzIGJhY2tzbGFzaGVkIGVzY2FwZQotICAgICBzZXF1ZW5jZXMuCisgICAqIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgcmVwbGFjZXMgbWFsZm9ybWVkIGRhdGEgYnkgUHl0aG9uJ3MgYmFja3NsYXNoZWQKKyAgICAgZXNjYXBlIHNlcXVlbmNlcy4KKworICAgKiBgYCduYW1lcmVwbGFjZSdgYCAoYWxzbyBvbmx5IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcpCisgICAgIHJlcGxhY2VzIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMgd2l0aCBgYFxOey4uLn1gYCBlc2NhcGUgc2VxdWVuY2VzLgogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgb3BlbigpIGJ1aWx0LWluIGZ1bmN0aW9uCkBAIC05OTksOCArMTAwMiw4IEBACiAKICAgIElmICpjbG9zZWZkKiBpcyBgYEZhbHNlYGAgYW5kIGEgZmlsZSBkZXNjcmlwdG9yIHJhdGhlciB0aGFuIGEgZmlsZW5hbWUgd2FzCiAgICBnaXZlbiwgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUga2VwdCBvcGVuIHdoZW4gdGhlIGZpbGUgaXMKLSAgIGNsb3NlZC4gIElmIGEgZmlsZW5hbWUgaXMgZ2l2ZW4gKmNsb3NlZmQqIGhhcyBubyBlZmZlY3QgYW5kIG11c3QgYmUgYGBUcnVlYGAKLSAgICh0aGUgZGVmYXVsdCkuCisgICBjbG9zZWQuICBJZiBhIGZpbGVuYW1lIGlzIGdpdmVuICpjbG9zZWZkKiBtdXN0IGJlIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkKKyAgIG90aGVyd2lzZSBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZC4KIAogICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcKICAgIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoCkBAIC0xMDYyLDE0ICsxMDY1LDE4IEBACiAKICAgICAgIFRoZSBgYCdVJ2BgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCiAKLS4uIFhYWCB3b3JrcyBmb3IgYnl0ZXMgdG9vLCBidXQgc2hvdWxkIGl0PworCiAuLiBmdW5jdGlvbjo6IG9yZChjKQogCiAgICBHaXZlbiBhIHN0cmluZyByZXByZXNlbnRpbmcgb25lIFVuaWNvZGUgY2hhcmFjdGVyLCByZXR1cm4gYW4gaW50ZWdlcgotICAgcmVwcmVzZW50aW5nIHRoZSBVbmljb2RlIGNvZGUKLSAgIHBvaW50IG9mIHRoYXQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgb3JkKCdhJylgYCByZXR1cm5zIHRoZSBpbnRlZ2VyIGBgOTdgYAotICAgYW5kIGBgb3JkKCdcdTIwMjAnKWBgIHJldHVybnMgYGA4MjI0YGAuICBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIDpmdW5jOmBjaHJgLgorICAgcmVwcmVzZW50aW5nIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgb2YgdGhhdCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwKKyAgIGBgb3JkKCdhJylgYCByZXR1cm5zIHRoZSBpbnRlZ2VyIGBgOTdgYCBhbmQgYGBvcmQoJ869JylgYCByZXR1cm5zIGBgOTU3YGAuCisgICBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIDpmdW5jOmBjaHJgLgogCiAKIC4uIGZ1bmN0aW9uOjogcG93KHgsIHlbLCB6XSkKQEAgLTExODYsNiArMTE5Myw5IEBACiAgICBUaGUgcmV0dXJuZWQgcHJvcGVydHkgb2JqZWN0IGFsc28gaGFzIHRoZSBhdHRyaWJ1dGVzIGBgZmdldGBgLCBgYGZzZXRgYCwgYW5kCiAgICBgYGZkZWxgYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZG9jc3RyaW5ncyBvZiBwcm9wZXJ0eSBvYmplY3RzIGFyZSBub3cgd3JpdGVhYmxlLgorCiAKIC4uIF9mdW5jLXJhbmdlOgogLi4gZnVuY3Rpb246OiByYW5nZShzdG9wKQpAQCAtMTIxOCw4ICsxMjI4LDggQEAKIC4uIGZ1bmN0aW9uOjogcm91bmQobnVtYmVyWywgbmRpZ2l0c10pCiAKICAgIFJldHVybiB0aGUgZmxvYXRpbmcgcG9pbnQgdmFsdWUgKm51bWJlciogcm91bmRlZCB0byAqbmRpZ2l0cyogZGlnaXRzIGFmdGVyCi0gICB0aGUgZGVjaW1hbCBwb2ludC4gIElmICpuZGlnaXRzKiBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byB6ZXJvLiBEZWxlZ2F0ZXMKLSAgIHRvIGBgbnVtYmVyLl9fcm91bmRfXyhuZGlnaXRzKWBgLgorICAgdGhlIGRlY2ltYWwgcG9pbnQuICBJZiAqbmRpZ2l0cyogaXMgb21pdHRlZCwgaXQgcmV0dXJucyB0aGUgbmVhcmVzdCBpbnRlZ2VyCisgICB0byBpdHMgaW5wdXQuICBEZWxlZ2F0ZXMgdG8gYGBudW1iZXIuX19yb3VuZF9fKG5kaWdpdHMpYGAuCiAKICAgIEZvciB0aGUgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydGluZyA6ZnVuYzpgcm91bmRgLCB2YWx1ZXMgYXJlIHJvdW5kZWQgdG8gdGhlCiAgICBjbG9zZXN0IG11bHRpcGxlIG9mIDEwIHRvIHRoZSBwb3dlciBtaW51cyAqbmRpZ2l0cyo7IGlmIHR3byBtdWx0aXBsZXMgYXJlCkBAIC0xNDg1LDcgKzE0OTUsOSBAQAogCiAgICBUaGUgbGVmdC10by1yaWdodCBldmFsdWF0aW9uIG9yZGVyIG9mIHRoZSBpdGVyYWJsZXMgaXMgZ3VhcmFudGVlZC4gVGhpcwogICAgbWFrZXMgcG9zc2libGUgYW4gaWRpb20gZm9yIGNsdXN0ZXJpbmcgYSBkYXRhIHNlcmllcyBpbnRvIG4tbGVuZ3RoIGdyb3VwcwotICAgdXNpbmcgYGB6aXAoKltpdGVyKHMpXSpuKWBgLgorICAgdXNpbmcgYGB6aXAoKltpdGVyKHMpXSpuKWBgLiAgVGhpcyByZXBlYXRzIHRoZSAqc2FtZSogaXRlcmF0b3IgYGBuYGAgdGltZXMKKyAgIHNvIHRoYXQgZWFjaCBvdXRwdXQgdHVwbGUgaGFzIHRoZSByZXN1bHQgb2YgYGBuYGAgY2FsbHMgdG8gdGhlIGl0ZXJhdG9yLgorICAgVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBkaXZpZGluZyB0aGUgaW5wdXQgaW50byBuLWxlbmd0aCBjaHVua3MuCiAKICAgIDpmdW5jOmB6aXBgIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCB1bmVxdWFsIGxlbmd0aCBpbnB1dHMgd2hlbiB5b3UgZG9uJ3QKICAgIGNhcmUgYWJvdXQgdHJhaWxpbmcsIHVubWF0Y2hlZCB2YWx1ZXMgZnJvbSB0aGUgbG9uZ2VyIGl0ZXJhYmxlcy4gIElmIHRob3NlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nYy5yc3QgYi9Eb2MvbGlicmFyeS9nYy5yc3QKaW5kZXggODEzNTU0Mi4uZDExYzJlMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2djLnJzdApAQCAtMTg2LDcgKzE4Niw3IEBACiAgICBhZGRlZCB0byB0aGlzIGxpc3QgcmF0aGVyIHRoYW4gZnJlZWQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBJZiB0aGlzIGxpc3QgaXMgbm9uLWVtcHR5IGF0IGludGVycHJldGVyIHNodXRkb3duLCBhCisgICAgICBJZiB0aGlzIGxpc3QgaXMgbm9uLWVtcHR5IGF0IDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAsIGEKICAgICAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgaXMgZW1pdHRlZCwgd2hpY2ggaXMgc2lsZW50IGJ5IGRlZmF1bHQuICBJZgogICAgICAgOmNvbnN0OmBERUJVR19VTkNPTExFQ1RBQkxFYCBpcyBzZXQsIGluIGFkZGl0aW9uIGFsbCB1bmNvbGxlY3RhYmxlIG9iamVjdHMKICAgICAgIGFyZSBwcmludGVkLgpAQCAtMjUyLDggKzI1Miw4IEBACiAgICB0byB0aGUgYGBnYXJiYWdlYGAgbGlzdC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIEFsc28gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSA6ZGF0YTpgZ2FyYmFnZWAgbGlzdCBhdCBpbnRlcnByZXRlcgotICAgICAgc2h1dGRvd24sIGlmIGl0IGlzbid0IGVtcHR5LgorICAgICAgQWxzbyBwcmludCB0aGUgY29udGVudHMgb2YgdGhlIDpkYXRhOmBnYXJiYWdlYCBsaXN0IGF0CisgICAgICA6dGVybTpgaW50ZXJwcmV0ZXIgc2h1dGRvd25gLCBpZiBpdCBpc24ndCBlbXB0eS4KIAogLi4gZGF0YTo6IERFQlVHX1NBVkVBTEwKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2V0dGV4dC5yc3QgYi9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdAppbmRleCBmZjIzYjU5Li41MTRjYzVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdApAQCAtMzQ0LDkgKzM0NCw5IEBACiBUaGUgZW50aXJlIHNldCBvZiBrZXkvdmFsdWUgcGFpcnMgYXJlIHBsYWNlZCBpbnRvIGEgZGljdGlvbmFyeSBhbmQgc2V0IGFzIHRoZQogInByb3RlY3RlZCIgOmF0dHI6YF9pbmZvYCBpbnN0YW5jZSB2YXJpYWJsZS4KIAotSWYgdGhlIDpmaWxlOmAubW9gIGZpbGUncyBtYWdpYyBudW1iZXIgaXMgaW52YWxpZCwgb3IgaWYgb3RoZXIgcHJvYmxlbXMgb2NjdXIKLXdoaWxlIHJlYWRpbmcgdGhlIGZpbGUsIGluc3RhbnRpYXRpbmcgYSA6Y2xhc3M6YEdOVVRyYW5zbGF0aW9uc2AgY2xhc3MgY2FuIHJhaXNlCi06ZXhjOmBPU0Vycm9yYC4KK0lmIHRoZSA6ZmlsZTpgLm1vYCBmaWxlJ3MgbWFnaWMgbnVtYmVyIGlzIGludmFsaWQsIHRoZSBtYWpvciB2ZXJzaW9uIG51bWJlciBpcwordW5leHBlY3RlZCwgb3IgaWYgb3RoZXIgcHJvYmxlbXMgb2NjdXIgd2hpbGUgcmVhZGluZyB0aGUgZmlsZSwgaW5zdGFudGlhdGluZyBhCis6Y2xhc3M6YEdOVVRyYW5zbGF0aW9uc2AgY2xhc3MgY2FuIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gZnJvbSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2xvYi5yc3QgYi9Eb2MvbGlicmFyeS9nbG9iLnJzdAppbmRleCBhYmNiZjM4Li41MGYzOGE0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nbG9iLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nbG9iLnJzdApAQCAtMjksNyArMjksNyBAQAogICAgVGhlIDptb2Q6YHBhdGhsaWJgIG1vZHVsZSBvZmZlcnMgaGlnaC1sZXZlbCBwYXRoIG9iamVjdHMuCiAKIAotLi4gZnVuY3Rpb246OiBnbG9iKHBhdGhuYW1lKQorLi4gZnVuY3Rpb246OiBnbG9iKHBhdGhuYW1lLCAqLCByZWN1cnNpdmU9RmFsc2UpCiAKICAgIFJldHVybiBhIHBvc3NpYmx5LWVtcHR5IGxpc3Qgb2YgcGF0aCBuYW1lcyB0aGF0IG1hdGNoICpwYXRobmFtZSosIHdoaWNoIG11c3QgYmUKICAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBwYXRoIHNwZWNpZmljYXRpb24uICpwYXRobmFtZSogY2FuIGJlIGVpdGhlciBhYnNvbHV0ZQpAQCAtMzcsOCArMzcsMTkgQEAKICAgIDpmaWxlOmAuLi8uLi9Ub29scy9cKi9cKi5naWZgKSwgYW5kIGNhbiBjb250YWluIHNoZWxsLXN0eWxlIHdpbGRjYXJkcy4gQnJva2VuCiAgICBzeW1saW5rcyBhcmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdHMgKGFzIGluIHRoZSBzaGVsbCkuCiAKKyAgIElmICpyZWN1cnNpdmUqIGlzIHRydWUsIHRoZSBwYXR0ZXJuICJgYCoqYGAiIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZCB6ZXJvIG9yCisgICBtb3JlIGRpcmVjdG9yaWVzIGFuZCBzdWJkaXJlY3Rvcmllcy4gIElmIHRoZSBwYXR0ZXJuIGlzIGZvbGxvd2VkIGJ5IGEKKyAgIGBgb3Muc2VwYGAsIG9ubHkgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzIG1hdGNoLgogCi0uLiBmdW5jdGlvbjo6IGlnbG9iKHBhdGhuYW1lKQorICAgLi4gbm90ZTo6CisgICAgICBVc2luZyB0aGUgImBgKipgYCIgcGF0dGVybiBpbiBsYXJnZSBkaXJlY3RvcnkgdHJlZXMgbWF5IGNvbnN1bWUKKyAgICAgIGFuIGlub3JkaW5hdGUgYW1vdW50IG9mIHRpbWUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBTdXBwb3J0IGZvciByZWN1cnNpdmUgZ2xvYnMgdXNpbmcgImBgKipgYCIuCisKKworLi4gZnVuY3Rpb246OiBpZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlPUZhbHNlKQogCiAgICBSZXR1cm4gYW4gOnRlcm06YGl0ZXJhdG9yYCB3aGljaCB5aWVsZHMgdGhlIHNhbWUgdmFsdWVzIGFzIDpmdW5jOmBnbG9iYAogICAgd2l0aG91dCBhY3R1YWxseSBzdG9yaW5nIHRoZW0gYWxsIHNpbXVsdGFuZW91c2x5LgpAQCAtNTUsOCArNjYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAotRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25seSB0aGUgZm9sbG93aW5nIGZpbGVzOgotOmZpbGU6YDEuZ2lmYCwgOmZpbGU6YDIudHh0YCwgYW5kIDpmaWxlOmBjYXJkLmdpZmAuICA6ZnVuYzpgZ2xvYmAgd2lsbCBwcm9kdWNlCitGb3IgZXhhbXBsZSwgY29uc2lkZXIgYSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGZpbGVzOgorOmZpbGU6YDEuZ2lmYCwgOmZpbGU6YDIudHh0YCwgOmZpbGU6YGNhcmQuZ2lmYCBhbmQgYSBzdWJkaXJlY3RvcnkgOmZpbGU6YHN1YmAKK3doaWNoIGNvbnRhaW5zIG9ubHkgdGhlIGZpbGUgOmZpbGU6YDMudHh0YC4gIDpmdW5jOmBnbG9iYCB3aWxsIHByb2R1Y2UKIHRoZSBmb2xsb3dpbmcgcmVzdWx0cy4gIE5vdGljZSBob3cgYW55IGxlYWRpbmcgY29tcG9uZW50cyBvZiB0aGUgcGF0aCBhcmUKIHByZXNlcnZlZC4gOjoKIApAQCAtNjcsNiArNzksMTAgQEAKICAgIFsnMS5naWYnLCAnY2FyZC5naWYnXQogICAgPj4+IGdsb2IuZ2xvYignPy5naWYnKQogICAgWycxLmdpZiddCisgICA+Pj4gZ2xvYi5nbG9iKCcqKi8qLnR4dCcsIHJlY3Vyc2l2ZT1UcnVlKQorICAgWycyLnR4dCcsICdzdWIvMy50eHQnXQorICAgPj4+IGdsb2IuZ2xvYignLi8qKi8nLCByZWN1cnNpdmU9VHJ1ZSkKKyAgIFsnLi8nLCAnLi9zdWIvJ10KIAogSWYgdGhlIGRpcmVjdG9yeSBjb250YWlucyBmaWxlcyBzdGFydGluZyB3aXRoIGBgLmBgIHRoZXkgd29uJ3QgYmUgbWF0Y2hlZCBieQogZGVmYXVsdC4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgOmZpbGU6YGNhcmQuZ2lmYCBhbmQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2d6aXAucnN0IGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKaW5kZXggNzg1MzZmYS4uMDRjNDFkNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKQEAgLTkwLDEzICs5MCw5IEBACiAgICBpcyBubyBjb21wcmVzc2lvbi4gVGhlIGRlZmF1bHQgaXMgYGA5YGAuCiAKICAgIFRoZSAqbXRpbWUqIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIG51bWVyaWMgdGltZXN0YW1wIHRvIGJlIHdyaXR0ZW4gdG8KLSAgIHRoZSBzdHJlYW0gd2hlbiBjb21wcmVzc2luZy4gIEFsbCA6cHJvZ3JhbTpgZ3ppcGAgY29tcHJlc3NlZCBzdHJlYW1zIGFyZQotICAgcmVxdWlyZWQgdG8gY29udGFpbiBhIHRpbWVzdGFtcC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSBjdXJyZW50Ci0gICB0aW1lIGlzIHVzZWQuICBUaGlzIG1vZHVsZSBpZ25vcmVzIHRoZSB0aW1lc3RhbXAgd2hlbiBkZWNvbXByZXNzaW5nOwotICAgaG93ZXZlciwgc29tZSBwcm9ncmFtcywgc3VjaCBhcyA6cHJvZ3JhbTpgZ3VuemlwYFwgLCBtYWtlIHVzZSBvZiBpdC4KLSAgIFRoZSBmb3JtYXQgb2YgdGhlIHRpbWVzdGFtcCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSByZXR1cm4gdmFsdWUgb2YKLSAgIGBgdGltZS50aW1lKClgYCBhbmQgb2YgdGhlIGBgc3RfbXRpbWVgYCBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCByZXR1cm5lZAotICAgYnkgYGBvcy5zdGF0KClgYC4KKyAgIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIGZpZWxkIGluIHRoZSBzdHJlYW0gd2hlbiBjb21wcmVzc2luZy4gIEl0CisgICBzaG91bGQgb25seSBiZSBwcm92aWRlZCBpbiBjb21wcmVzc2lvbiBtb2RlLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlCisgICBjdXJyZW50IHRpbWUgaXMgdXNlZC4gIFNlZSB0aGUgOmF0dHI6YG10aW1lYCBhdHRyaWJ1dGUgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgQ2FsbGluZyBhIDpjbGFzczpgR3ppcEZpbGVgIG9iamVjdCdzIDptZXRoOmBjbG9zZWAgbWV0aG9kIGRvZXMgbm90IGNsb3NlCiAgICAqZmlsZW9iaiosIHNpbmNlIHlvdSBtaWdodCB3aXNoIHRvIGFwcGVuZCBtb3JlIG1hdGVyaWFsIGFmdGVyIHRoZSBjb21wcmVzc2VkCkBAIC0xMDgsOSArMTA0LDkgQEAKICAgIGluY2x1ZGluZyBpdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgT25seSB0aGUKICAgIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kIGlzbid0IGltcGxlbWVudGVkLgogCi0gICA6Y2xhc3M6YEd6aXBGaWxlYCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZCBhbmQgYXR0cmlidXRlOgogCi0gICAuLiBtZXRob2Q6OiBwZWVrKFtuXSkKKyAgIC4uIG1ldGhvZDo6IHBlZWsobikKIAogICAgICAgUmVhZCAqbiogdW5jb21wcmVzc2VkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLgogICAgICAgQXQgbW9zdCBvbmUgc2luZ2xlIHJlYWQgb24gdGhlIGNvbXByZXNzZWQgc3RyZWFtIGlzIGRvbmUgdG8gc2F0aXNmeQpAQCAtMTI0LDkgKzEyMCwyMSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gYXR0cmlidXRlOjogbXRpbWUKKworICAgICAgV2hlbiBkZWNvbXByZXNzaW5nLCB0aGUgdmFsdWUgb2YgdGhlIGxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgZmllbGQgaW4KKyAgICAgIHRoZSBtb3N0IHJlY2VudGx5IHJlYWQgaGVhZGVyIG1heSBiZSByZWFkIGZyb20gdGhpcyBhdHRyaWJ1dGUsIGFzIGFuCisgICAgICBpbnRlZ2VyLiAgVGhlIGluaXRpYWwgdmFsdWUgYmVmb3JlIHJlYWRpbmcgYW55IGhlYWRlcnMgaXMgYGBOb25lYGAuCisKKyAgICAgIEFsbCA6cHJvZ3JhbTpgZ3ppcGAgY29tcHJlc3NlZCBzdHJlYW1zIGFyZSByZXF1aXJlZCB0byBjb250YWluIHRoaXMKKyAgICAgIHRpbWVzdGFtcCBmaWVsZC4gIFNvbWUgcHJvZ3JhbXMsIHN1Y2ggYXMgOnByb2dyYW06YGd1bnppcGBcICwgbWFrZSB1c2UKKyAgICAgIG9mIHRoZSB0aW1lc3RhbXAuICBUaGUgZm9ybWF0IGlzIHRoZSBzYW1lIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIDpmdW5jOmB0aW1lLnRpbWVgIGFuZCB0aGUgOmF0dHI6YH5vcy5zdGF0X3Jlc3VsdC5zdF9tdGltZWAgYXR0cmlidXRlIG9mCisgICAgICB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IDpmdW5jOmBvcy5zdGF0YC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZCwgYWxvbmcgd2l0aCB0aGUKLSAgICAgICptdGltZSogYXJndW1lbnQuCisgICAgICAqbXRpbWUqIGNvbnN0cnVjdG9yIGFyZ3VtZW50IGFuZCA6YXR0cjpgbXRpbWVgIGF0dHJpYnV0ZS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFN1cHBvcnQgZm9yIHplcm8tcGFkZGVkIGFuZCB1bnNlZWthYmxlIGZpbGVzIHdhcyBhZGRlZC4KQEAgLTEzNyw2ICsxNDUsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCBhbmQgYGAneGInYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB3cml0aW5nIGFyYml0cmFyeQorICAgICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0cyA8Ynl0ZXMtbGlrZSBvYmplY3Q+YC4KKyAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgorICAgICAgYGBOb25lYGAuCisKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBjb21wcmVzc2xldmVsPTkpCiAKQEAgLTE3NSw5ICsxODksMTAgQEAKIEV4YW1wbGUgb2YgaG93IHRvIEdaSVAgY29tcHJlc3MgYW4gZXhpc3RpbmcgZmlsZTo6CiAKICAgIGltcG9ydCBnemlwCisgICBpbXBvcnQgc2h1dGlsCiAgICB3aXRoIG9wZW4oJy9ob21lL2pvZS9maWxlLnR4dCcsICdyYicpIGFzIGZfaW46CiAgICAgICAgd2l0aCBnemlwLm9wZW4oJy9ob21lL2pvZS9maWxlLnR4dC5neicsICd3YicpIGFzIGZfb3V0OgotICAgICAgICAgICBmX291dC53cml0ZWxpbmVzKGZfaW4pCisgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihmX2luLCBmX291dCkKIAogRXhhbXBsZSBvZiBob3cgdG8gR1pJUCBjb21wcmVzcyBhIGJpbmFyeSBzdHJpbmc6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oZWFwcS5yc3QgYi9Eb2MvbGlicmFyeS9oZWFwcS5yc3QKaW5kZXggZjg5NzBiZS4uOWZiYmNjNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaGVhcHEucnN0CisrKyBiL0RvYy9saWJyYXJ5L2hlYXBxLnJzdApAQCAtODIsNyArODIsNyBAQAogVGhlIG1vZHVsZSBhbHNvIG9mZmVycyB0aHJlZSBnZW5lcmFsIHB1cnBvc2UgZnVuY3Rpb25zIGJhc2VkIG9uIGhlYXBzLgogCiAKLS4uIGZ1bmN0aW9uOjogbWVyZ2UoKml0ZXJhYmxlcykKKy4uIGZ1bmN0aW9uOjogbWVyZ2UoKml0ZXJhYmxlcywga2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpCiAKICAgIE1lcmdlIG11bHRpcGxlIHNvcnRlZCBpbnB1dHMgaW50byBhIHNpbmdsZSBzb3J0ZWQgb3V0cHV0IChmb3IgZXhhbXBsZSwgbWVyZ2UKICAgIHRpbWVzdGFtcGVkIGVudHJpZXMgZnJvbSBtdWx0aXBsZSBsb2cgZmlsZXMpLiAgUmV0dXJucyBhbiA6dGVybTpgaXRlcmF0b3JgCkBAIC05Miw2ICs5MiwxOCBAQAogICAgbm90IHB1bGwgdGhlIGRhdGEgaW50byBtZW1vcnkgYWxsIGF0IG9uY2UsIGFuZCBhc3N1bWVzIHRoYXQgZWFjaCBvZiB0aGUgaW5wdXQKICAgIHN0cmVhbXMgaXMgYWxyZWFkeSBzb3J0ZWQgKHNtYWxsZXN0IHRvIGxhcmdlc3QpLgogCisgICBIYXMgdHdvIG9wdGlvbmFsIGFyZ3VtZW50cyB3aGljaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgKmtleSogc3BlY2lmaWVzIGEgOnRlcm06YGtleSBmdW5jdGlvbmAgb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0bworICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBpbnB1dCBlbGVtZW50LiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMKKyAgIGBgTm9uZWBgIChjb21wYXJlIHRoZSBlbGVtZW50cyBkaXJlY3RseSkuCisKKyAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGlucHV0IGVsZW1lbnRzCisgICBhcmUgbWVyZ2VkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsICprZXkqIGFuZCAqcmV2ZXJzZSogcGFyYW1ldGVycy4KKwogCiAuLiBmdW5jdGlvbjo6IG5sYXJnZXN0KG4sIGl0ZXJhYmxlLCBrZXk9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CmluZGV4IGZlZjljMzguLjgyNDk5NWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKQEAgLTE2LDIxICsxNiwxMyBAQAogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIGNsYXNzIDpjbGFzczpgSFRNTFBhcnNlcmAgd2hpY2ggc2VydmVzIGFzIHRoZSBiYXNpcyBmb3IKIHBhcnNpbmcgdGV4dCBmaWxlcyBmb3JtYXR0ZWQgaW4gSFRNTCAoSHlwZXJUZXh0IE1hcmstdXAgTGFuZ3VhZ2UpIGFuZCBYSFRNTC4KIAotLi4gY2xhc3M6OiBIVE1MUGFyc2VyKHN0cmljdD1GYWxzZSwgKiwgY29udmVydF9jaGFycmVmcz1GYWxzZSkKKy4uIGNsYXNzOjogSFRNTFBhcnNlcigqLCBjb252ZXJ0X2NoYXJyZWZzPVRydWUpCiAKLSAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZSBhYmxlIHRvIHBhcnNlIGludmFsaWQgbWFya3VwLgogCi0gICBJZiAqY29udmVydF9jaGFycmVmcyogaXMgYGBUcnVlYGAgKGRlZmF1bHQ6IGBgRmFsc2VgYCksIGFsbCBjaGFyYWN0ZXIKKyAgIElmICpjb252ZXJ0X2NoYXJyZWZzKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCBhbGwgY2hhcmFjdGVyCiAgICByZWZlcmVuY2VzIChleGNlcHQgdGhlIG9uZXMgaW4gYGBzY3JpcHRgYC9gYHN0eWxlYGAgZWxlbWVudHMpIGFyZQogICAgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZSBjaGFyYWN0ZXJzLgotICAgVGhlIHVzZSBvZiBgYGNvbnZlcnRfY2hhcnJlZnM9VHJ1ZWBgIGlzIGVuY291cmFnZWQgYW5kIHdpbGwgYmVjb21lCi0gICB0aGUgZGVmYXVsdCBpbiBQeXRob24gMy41LgotCi0gICBJZiAqc3RyaWN0KiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSwgdGhlIHBhcnNlciB3aWxsIGFjY2VwdCBhbmQgcGFyc2UKLSAgIGludmFsaWQgbWFya3VwLiAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAgdGhlIHBhcnNlciB3aWxsIHJhaXNlIGFuCi0gICA6ZXhjOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlRXJyb3JgIGV4Y2VwdGlvbiBpbnN0ZWFkIFsjXV8gd2hlbiBpdCdzIG5vdAotICAgYWJsZSB0byBwYXJzZSB0aGUgbWFya3VwLiAgVGhlIHVzZSBvZiBgYHN0cmljdD1UcnVlYGAgaXMgZGlzY291cmFnZWQgYW5kCi0gICB0aGUgKnN0cmljdCogYXJndW1lbnQgaXMgZGVwcmVjYXRlZC4KIAogICAgQW4gOmNsYXNzOmAuSFRNTFBhcnNlcmAgaW5zdGFuY2UgaXMgZmVkIEhUTUwgZGF0YSBhbmQgY2FsbHMgaGFuZGxlciBtZXRob2RzCiAgICB3aGVuIHN0YXJ0IHRhZ3MsIGVuZCB0YWdzLCB0ZXh0LCBjb21tZW50cywgYW5kIG90aGVyIG1hcmt1cCBlbGVtZW50cyBhcmUKQEAgLTQwLDMxICszMiwxMSBAQAogICAgVGhpcyBwYXJzZXIgZG9lcyBub3QgY2hlY2sgdGhhdCBlbmQgdGFncyBtYXRjaCBzdGFydCB0YWdzIG9yIGNhbGwgdGhlIGVuZC10YWcKICAgIGhhbmRsZXIgZm9yIGVsZW1lbnRzIHdoaWNoIGFyZSBjbG9zZWQgaW1wbGljaXRseSBieSBjbG9zaW5nIGFuIG91dGVyIGVsZW1lbnQuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICAqc3RyaWN0KiBhcmd1bWVudCBhZGRlZC4KLQotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQotICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50IGFuZCB0aGUgc3RyaWN0IG1vZGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQuCi0gICAgICBUaGUgcGFyc2VyIGlzIG5vdyBhYmxlIHRvIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAgdG9vLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgKmNvbnZlcnRfY2hhcnJlZnMqIGtleXdvcmQgYXJndW1lbnQgYWRkZWQuCiAKLUFuIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIHdlbGw6Ci0KLQotLi4gZXhjZXB0aW9uOjogSFRNTFBhcnNlRXJyb3IKLQotICAgRXhjZXB0aW9uIHJhaXNlZCBieSB0aGUgOmNsYXNzOmBIVE1MUGFyc2VyYCBjbGFzcyB3aGVuIGl0IGVuY291bnRlcnMgYW4gZXJyb3IKLSAgIHdoaWxlIHBhcnNpbmcgYW5kICpzdHJpY3QqIGlzIGBgVHJ1ZWBgLiAgVGhpcyBleGNlcHRpb24gcHJvdmlkZXMgdGhyZWUKLSAgIGF0dHJpYnV0ZXM6IDphdHRyOmBtc2dgIGlzIGEgYnJpZWYgbWVzc2FnZSBleHBsYWluaW5nIHRoZSBlcnJvciwKLSAgIDphdHRyOmBsaW5lbm9gIGlzIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgb24gd2hpY2ggdGhlIGJyb2tlbiBjb25zdHJ1Y3Qgd2FzCi0gICBkZXRlY3RlZCwgYW5kIDphdHRyOmBvZmZzZXRgIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbnRvIHRoZSBsaW5lIGF0Ci0gICB3aGljaCB0aGUgY29uc3RydWN0IHN0YXJ0cy4KLQotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQotICAgICAgVGhpcyBleGNlcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBiZWNhdXNlIGl0J3MgbmV2ZXIgcmFpc2VkIGJ5IHRoZSBwYXJzZXIKLSAgICAgICh3aGVuIHRoZSBkZWZhdWx0IG5vbi1zdHJpY3QgbW9kZSBpcyB1c2VkKS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgYXJndW1lbnQgKmNvbnZlcnRfY2hhcnJlZnMqIGlzIG5vdyBgYFRydWVgYC4KIAogCiBFeGFtcGxlIEhUTUwgUGFyc2VyIEFwcGxpY2F0aW9uCkBAIC0yNDYsOCArMjE4LDcgQEAKIAogICAgVGhlICpkYXRhKiBwYXJhbWV0ZXIgd2lsbCBiZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBkZWNsYXJhdGlvbiBpbnNpZGUKICAgIHRoZSBgYDwhWy4uLl0+YGAgbWFya3VwLiAgSXQgaXMgc29tZXRpbWVzIHVzZWZ1bCB0byBiZSBvdmVycmlkZGVuIGJ5IGEKLSAgIGRlcml2ZWQgY2xhc3MuICBUaGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiByYWlzZXMgYW4gOmV4YzpgSFRNTFBhcnNlRXJyb3JgCi0gICB3aGVuICpzdHJpY3QqIGlzIGBgVHJ1ZWBgLgorICAgZGVyaXZlZCBjbGFzcy4gIFRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4KIAogCiAuLiBfaHRtbHBhcnNlci1leGFtcGxlczoKQEAgLTM1OCw5ICszMjksMyBAQAogICAgRGF0YSAgICAgOiB0YWcgc291cAogICAgRW5kIHRhZyAgOiBwCiAgICBFbmQgdGFnICA6IGEKLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsjXSBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zICpzdHJpY3QqIG1vZGUgZG9lcyBub3QgcmFpc2UKLSAgICAgICBleGNlcHRpb25zIGZvciBhbGwgbm9uLWNvbXBsaWFudCBIVE1MLiAgVGhhdCBpcywgc29tZSBpbnZhbGlkIEhUTUwKLSAgICAgICBpcyB0b2xlcmF0ZWQgZXZlbiBpbiAqc3RyaWN0KiBtb2RlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CmluZGV4IDgwN2Y2ODUuLmQ1NzY0OWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKQEAgLTE4MCw2ICsxODAsMTcgQEAKICAgIGlzIHJlY2VpdmVkIGluIHRoZSBIVFRQIHByb3RvY29sIGZyb20gdGhlIHNlcnZlci4KIAogCisuLiBleGNlcHRpb246OiBSZW1vdGVEaXNjb25uZWN0ZWQKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBDb25uZWN0aW9uUmVzZXRFcnJvcmAgYW5kIDpleGM6YEJhZFN0YXR1c0xpbmVgLiAgUmFpc2VkCisgICBieSA6bWV0aDpgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2VgIHdoZW4gdGhlIGF0dGVtcHQgdG8gcmVhZCB0aGUgcmVzcG9uc2UKKyAgIHJlc3VsdHMgaW4gbm8gZGF0YSByZWFkIGZyb20gdGhlIGNvbm5lY3Rpb24sIGluZGljYXRpbmcgdGhhdCB0aGUgcmVtb3RlIGVuZAorICAgaGFzIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBQcmV2aW91c2x5LCA6ZXhjOmBCYWRTdGF0dXNMaW5lYFwgYGAoJycpYGAgd2FzIHJhaXNlZC4KKworCiBUaGUgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUgYXJlOgogCiAuLiBkYXRhOjogSFRUUF9QT1JUCkBAIC0xOTEsMjIxICsyMDIsMTUgQEAKIAogICAgVGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIEhUVFBTIHByb3RvY29sIChhbHdheXMgYGA0NDNgYCkuCiAKLWFuZCBhbHNvIHRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGZvciBpbnRlZ2VyIHN0YXR1cyBjb2RlczoKLQotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IENvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWYWx1ZSAgIHwgRGVmaW5pdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotfCA6Y29uc3Q6YENPTlRJTlVFYCAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAxMDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMS4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjEuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgU1dJVENISU5HX1BST1RPQ09MU2AgICAgICAgICAgICAgfCBgYDEwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4xLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMS4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQUk9DRVNTSU5HYCAgICAgICAgICAgICAgICAgICAgICB8IGBgMTAyYGAgfCBXRUJEQVYsIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LndlYmRhdi5vcmcvc3BlY3MvcmZjMjUxOC5odG1sI1NUQVRVU18xMDI+YF8gICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBPS2AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMjAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjE+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YENSRUFURURgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMDFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuMj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQUNDRVBURURgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDIwMmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi4zPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTmAgICB8IGBgMjAzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjQ+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE5PX0NPTlRFTlRgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMDRgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMi41ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjIuNT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVTRVRfQ09OVEVOVGAgICAgICAgICAgICAgICAgICAgfCBgYDIwNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4yLjYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMi42PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQQVJUSUFMX0NPTlRFTlRgICAgICAgICAgICAgICAgICB8IGBgMjA2YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjIuNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4yLjc+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1VTFRJX1NUQVRVU2AgICAgICAgICAgICAgICAgICAgIHwgYGAyMDdgYCB8IFdFQkRBViBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cud2ViZGF2Lm9yZy9zcGVjcy9yZmMyNTE4Lmh0bWwjU1RBVFVTXzIwNz5gXyAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YElNX1VTRURgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAyMjZgYCB8IERlbHRhIGVuY29kaW5nIGluIEhUVFAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgOnJmYzpgMzIyOWAsIFNlY3Rpb24gMTAuNC4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1VTFRJUExFX0NIT0lDRVNgICAgICAgICAgICAgICAgIHwgYGAzMDBgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuMT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTU9WRURfUEVSTUFORU5UTFlgICAgICAgICAgICAgICAgfCBgYDMwMWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy4yPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBGT1VORGAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMzAyYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjM+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFNFRV9PVEhFUmAgICAgICAgICAgICAgICAgICAgICAgIHwgYGAzMDNgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuND5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX01PRElGSUVEYCAgICAgICAgICAgICAgICAgICAgfCBgYDMwNGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC4zLjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuMy41PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVU0VfUFJPWFlgICAgICAgICAgICAgICAgICAgICAgICB8IGBgMzA1YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC4zLjY+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFRFTVBPUkFSWV9SRURJUkVDVGAgICAgICAgICAgICAgIHwgYGAzMDdgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuMy44ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjMuOD5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQkFEX1JFUVVFU1RgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBVTkFVVEhPUklaRURgICAgICAgICAgICAgICAgICAgICB8IGBgNDAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFBBWU1FTlRfUkVRVUlSRURgICAgICAgICAgICAgICAgIHwgYGA0MDJgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgRk9SQklEREVOYCAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC40PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfRk9VTkRgICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDA0YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjU+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YE1FVEhPRF9OT1RfQUxMT1dFRGAgICAgICAgICAgICAgIHwgYGA0MDVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuNj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX0FDQ0VQVEFCTEVgICAgICAgICAgICAgICAgICAgfCBgYDQwNmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC43PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRGAgICB8IGBgNDA3YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40Ljg+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RfVElNRU9VVGAgICAgICAgICAgICAgICAgIHwgYGA0MDhgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC45ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuOT5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgQ09ORkxJQ1RgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQwOWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xMD5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBHT05FYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgNDEwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjExPmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YExFTkdUSF9SRVFVSVJFRGAgICAgICAgICAgICAgICAgIHwgYGA0MTFgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTI+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUFJFQ09ORElUSU9OX0ZBSUxFRGAgICAgICAgICAgICAgfCBgYDQxMmBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xMz5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0VgICAgICAgICB8IGBgNDEzYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE0PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YFJFUVVFU1RfVVJJX1RPT19MT05HYCAgICAgICAgICAgIHwgYGA0MTRgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTU+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVU5TVVBQT1JURURfTUVESUFfVFlQRWAgICAgICAgICAgfCBgYDQxNWBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC40LjE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNC4xNj5gXyB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBSRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFYCB8IGBgNDE2YGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjQuMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC40LjE3PmBfIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEVYUEVDVEFUSU9OX0ZBSUxFRGAgICAgICAgICAgICAgIHwgYGA0MTdgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNC4xOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjQuMTg+YF8gfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVU5QUk9DRVNTQUJMRV9FTlRJVFlgICAgICAgICAgICAgfCBgYDQyMmBgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNDIyPmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTE9DS0VEYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYDQyM2BgIHwgV0VCREFWIGBSRkMgMjUxOCwgU2VjdGlvbiAxMC40ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNDIzPmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgRkFJTEVEX0RFUEVOREVOQ1lgICAgICAgICAgICAgICAgfCBgYDQyNGBgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNDI0PmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVVBHUkFERV9SRVFVSVJFRGAgICAgICAgICAgICAgICAgfCBgYDQyNmBgIHwgSFRUUCBVcGdyYWRlIHRvIFRMUywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAyODE3YCwgU2VjdGlvbiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUFJFQ09ORElUSU9OX1JFUVVJUkVEYCAgICAgICAgICAgfCBgYDQyOGBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgVE9PX01BTllfUkVRVUVTVFNgICAgICAgICAgICAgICAgfCBgYDQyOWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRWAgfCBgYDQzMWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgSU5URVJOQUxfU0VSVkVSX0VSUk9SYCAgICAgICAgICAgfCBgYDUwMGBgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS4xPmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBOT1RfSU1QTEVNRU5URURgICAgICAgICAgICAgICAgICB8IGBgNTAxYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjI+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEJBRF9HQVRFV0FZYCAgICAgICAgICAgICAgICAgICAgIHwgYGA1MDJgYCB8IEhUVFAvMS4xIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuMz5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgU0VSVklDRV9VTkFWQUlMQUJMRWAgICAgICAgICAgICAgfCBgYDUwM2BgIHwgSFRUUC8xLjEsIGBSRkMgMjYxNiwgU2VjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAxMC41LjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDxodHRwOi8vd3d3LnczLm9yZy9Qcm90b2NvbHMvcmZjMjYxNi9yZmMyNjE2LXNlYzEwLmh0bWwjc2VjMTAuNS40PmBfICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmBHQVRFV0FZX1RJTUVPVVRgICAgICAgICAgICAgICAgICB8IGBgNTA0YGAgfCBIVFRQLzEuMSBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjU+YF8gIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEYCAgICAgIHwgYGA1MDVgYCB8IEhUVFAvMS4xLCBgUkZDIDI2MTYsIFNlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgMTAuNS42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53My5vcmcvUHJvdG9jb2xzL3JmYzI2MTYvcmZjMjYxNi1zZWMxMC5odG1sI3NlYzEwLjUuNj5gXyAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgSU5TVUZGSUNJRU5UX1NUT1JBR0VgICAgICAgICAgICAgfCBgYDUwN2BgIHwgV0VCREFWLCBgUkZDIDI1MTgsIFNlY3Rpb24gMTAuNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA8aHR0cDovL3d3dy53ZWJkYXYub3JnL3NwZWNzL3JmYzI1MTguaHRtbCNTVEFUVVNfNTA3PmBfICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTk9UX0VYVEVOREVEYCAgICAgICAgICAgICAgICAgICAgfCBgYDUxMGBgIHwgQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmAyNzc0YCwgU2VjdGlvbiA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRGAgfCBgYDUxMWBgIHwgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCA6cmZjOmA2NTg1YCwgU2VjdGlvbiA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLS4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICBBZGRlZCBjb2RlcyBgYDQyOGBgLCBgYDQyOWBgLCBgYDQzMWBgIGFuZCBgYDUxMWBgIGZyb20gOnJmYzpgNjU4NWAuCi0KLQogLi4gZGF0YTo6IHJlc3BvbnNlcwogCiAgICBUaGlzIGRpY3Rpb25hcnkgbWFwcyB0aGUgSFRUUCAxLjEgc3RhdHVzIGNvZGVzIHRvIHRoZSBXM0MgbmFtZXMuCiAKICAgIEV4YW1wbGU6IGBgaHR0cC5jbGllbnQucmVzcG9uc2VzW2h0dHAuY2xpZW50Lk5PVF9GT1VORF1gYCBpcyBgYCdOb3QgRm91bmQnYGAuCiAKK1NlZSA6cmVmOmBodHRwLXN0YXR1cy1jb2Rlc2AgZm9yIGEgbGlzdCBvZiBIVFRQIHN0YXR1cyBjb2RlcyB0aGF0IGFyZQorYXZhaWxhYmxlIGluIHRoaXMgbW9kdWxlIGFzIGNvbnN0YW50cy4KKwogCiAuLiBfaHR0cGNvbm5lY3Rpb24tb2JqZWN0czoKIApAQCAtNDU4LDYgKzI2MywxMSBAQAogICAgICAgTm90ZSB0aGF0IHlvdSBtdXN0IGhhdmUgcmVhZCB0aGUgd2hvbGUgcmVzcG9uc2UgYmVmb3JlIHlvdSBjYW4gc2VuZCBhIG5ldwogICAgICAgcmVxdWVzdCB0byB0aGUgc2VydmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgYSA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIG9yIHN1YmNsYXNzIGlzIHJhaXNlZCwgdGhlCisgICAgICA6Y2xhc3M6YEhUVFBDb25uZWN0aW9uYCBvYmplY3Qgd2lsbCBiZSByZWFkeSB0byByZWNvbm5lY3Qgd2hlbgorICAgICAgYSBuZXcgcmVxdWVzdCBpcyBzZW50LgorCiAKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnNldF9kZWJ1Z2xldmVsKGxldmVsKQogCkBAIC00OTYsNyArMzA2LDkgQEAKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uY29ubmVjdCgpCiAKLSAgIENvbm5lY3QgdG8gdGhlIHNlcnZlciBzcGVjaWZpZWQgd2hlbiB0aGUgb2JqZWN0IHdhcyBjcmVhdGVkLgorICAgQ29ubmVjdCB0byB0aGUgc2VydmVyIHNwZWNpZmllZCB3aGVuIHRoZSBvYmplY3Qgd2FzIGNyZWF0ZWQuICBCeSBkZWZhdWx0LAorICAgdGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIG1ha2luZyBhIHJlcXVlc3QgaWYgdGhlIGNsaWVudCBkb2VzIG5vdAorICAgYWxyZWFkeSBoYXZlIGEgY29ubmVjdGlvbi4KIAogCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAppbmRleCA2NDZmMmU4Li43Yzg1ZDA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKQEAgLTE0MywyNiArMTQzLDQzIEBACiAKICAgIFRoZSBrZXlzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgOm1ldGg6YH5Nb3JzZWwuX19lcV9fYCBub3cgdGFrZXMgOmF0dHI6YH5Nb3JzZWwua2V5YCBhbmQgOmF0dHI6YH5Nb3JzZWwudmFsdWVgCisgICAgICBpbnRvIGFjY291bnQuCisKIAogLi4gYXR0cmlidXRlOjogTW9yc2VsLnZhbHVlCiAKICAgIFRoZSB2YWx1ZSBvZiB0aGUgY29va2llLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBhc3NpZ25pbmcgdG8gYGB2YWx1ZWBgOyB1c2UgOm1ldGg6YH5Nb3JzZWwuc2V0YCBpbnN0ZWFkLgorCiAKIC4uIGF0dHJpYnV0ZTo6IE1vcnNlbC5jb2RlZF92YWx1ZQogCiAgICBUaGUgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgY29va2llIC0tLSB0aGlzIGlzIHdoYXQgc2hvdWxkIGJlIHNlbnQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIGFzc2lnbmluZyB0byBgYGNvZGVkX3ZhbHVlYGA7IHVzZSA6bWV0aDpgfk1vcnNlbC5zZXRgIGluc3RlYWQuCisKIAogLi4gYXR0cmlidXRlOjogTW9yc2VsLmtleQogCiAgICBUaGUgbmFtZSBvZiB0aGUgY29va2llLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBhc3NpZ25pbmcgdG8gYGBrZXlgYDsgdXNlIDptZXRoOmB+TW9yc2VsLnNldGAgaW5zdGVhZC4KKwogCiAuLiBtZXRob2Q6OiBNb3JzZWwuc2V0KGtleSwgdmFsdWUsIGNvZGVkX3ZhbHVlKQogCiAgICBTZXQgdGhlICprZXkqLCAqdmFsdWUqIGFuZCAqY29kZWRfdmFsdWUqIGF0dHJpYnV0ZXMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFRoZSB1bmRvY3VtZW50ZWQgKkxlZ2FsQ2hhcnMqIHBhcmFtZXRlciBpcyBpZ25vcmVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4KKyAgICAgIGEgZnV0dXJlIHZlcnNpb24uCisKIAogLi4gbWV0aG9kOjogTW9yc2VsLmlzUmVzZXJ2ZWRLZXkoSykKIApAQCAtMTkzLDYgKzIxMCwzMCBAQAogICAgVGhlIG1lYW5pbmcgZm9yICphdHRycyogaXMgdGhlIHNhbWUgYXMgaW4gOm1ldGg6YG91dHB1dGAuCiAKIAorLi4gbWV0aG9kOjogTW9yc2VsLnVwZGF0ZSh2YWx1ZXMpCisKKyAgIFVwZGF0ZSB0aGUgdmFsdWVzIGluIHRoZSBNb3JzZWwgZGljdGlvbmFyeSB3aXRoIHRoZSB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnkKKyAgICp2YWx1ZXMqLiAgUmFpc2UgYW4gZXJyb3IgaWYgYW55IG9mIHRoZSBrZXlzIGluIHRoZSAqdmFsdWVzKiBkaWN0IGlzIG5vdCBhCisgICB2YWxpZCA6cmZjOmAyMTA5YCBhdHRyaWJ1dGUuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBhbiBlcnJvciBpcyByYWlzZWQgZm9yIGludmFsaWQga2V5cy4KKworCisuLiBtZXRob2Q6OiBNb3JzZWwuY29weSh2YWx1ZSkKKworICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBNb3JzZWwgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgcmV0dXJuIGEgTW9yc2VsIG9iamVjdCBpbnN0ZWFkIG9mIGEgZGljdC4KKworCisuLiBtZXRob2Q6OiBNb3JzZWwuc2V0ZGVmYXVsdChrZXksIHZhbHVlPU5vbmUpCisKKyAgIFJhaXNlIGFuIGVycm9yIGlmIGtleSBpcyBub3QgYSB2YWxpZCA6cmZjOmAyMTA5YCBhdHRyaWJ1dGUsIG90aGVyd2lzZQorICAgYmVoYXZlIHRoZSBzYW1lIGFzIDptZXRoOmBkaWN0LnNldGRlZmF1bHRgLgorCisKIC4uIF9jb29raWUtZXhhbXBsZToKIAogRXhhbXBsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnJzdAppbmRleCBhMzg3YTM3Li5iNmYyYzU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnJzdApAQCAtMSw3ICsxLDE2IEBACiA6bW9kOmBodHRwYCAtLS0gSFRUUCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLWBgaHR0cGBgIGlzIGEgcGFja2FnZSB0aGF0IGNvbGxlY3RzIHNldmVyYWwgbW9kdWxlcyBmb3Igd29ya2luZyB3aXRoIHRoZQorLi4gbW9kdWxlOjogaHR0cAorICAgOnN5bm9wc2lzOiBIVFRQIHN0YXR1cyBjb2RlcyBhbmQgbWVzc2FnZXMKKworLi4gaW5kZXg6OgorICAgcGFpcjogSFRUUDsgcHJvdG9jb2wKKyAgIHNpbmdsZTogSFRUUDsgaHR0cCAoc3RhbmRhcmQgbW9kdWxlKQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9odHRwL19faW5pdF9fLnB5YAorCis6bW9kOmBodHRwYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCB0aGUKIEh5cGVyVGV4dCBUcmFuc2ZlciBQcm90b2NvbDoKIAogKiA6bW9kOmBodHRwLmNsaWVudGAgaXMgYSBsb3ctbGV2ZWwgSFRUUCBwcm90b2NvbCBjbGllbnQ7IGZvciBoaWdoLWxldmVsIFVSTApAQCAtOSwzICsxOCwxMDUgQEAKICogOm1vZDpgaHR0cC5zZXJ2ZXJgIGNvbnRhaW5zIGJhc2ljIEhUVFAgc2VydmVyIGNsYXNzZXMgYmFzZWQgb24gOm1vZDpgc29ja2V0c2VydmVyYAogKiA6bW9kOmBodHRwLmNvb2tpZXNgIGhhcyB1dGlsaXRpZXMgZm9yIGltcGxlbWVudGluZyBzdGF0ZSBtYW5hZ2VtZW50IHdpdGggY29va2llcwogKiA6bW9kOmBodHRwLmNvb2tpZWphcmAgcHJvdmlkZXMgcGVyc2lzdGVuY2Ugb2YgY29va2llcworCis6bW9kOmBodHRwYCBpcyBhbHNvIGEgbW9kdWxlIHRoYXQgZGVmaW5lcyBhIG51bWJlciBvZiBIVFRQIHN0YXR1cyBjb2RlcyBhbmQKK2Fzc29jaWF0ZWQgbWVzc2FnZXMgdGhyb3VnaCB0aGUgOmNsYXNzOmBodHRwLkhUVFBTdGF0dXNgIGVudW06CisKKy4uIGNsYXNzOjogSFRUUFN0YXR1cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgQSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGVudW0uSW50RW51bWAgdGhhdCBkZWZpbmVzIGEgc2V0IG9mIEhUVFAgc3RhdHVzIGNvZGVzLAorICAgcmVhc29uIHBocmFzZXMgYW5kIGxvbmcgZGVzY3JpcHRpb25zIHdyaXR0ZW4gaW4gRW5nbGlzaC4KKworICAgVXNhZ2U6OgorCisgICAgICA+Pj4gZnJvbSBodHRwIGltcG9ydCBIVFRQU3RhdHVzCisgICAgICA+Pj4gSFRUUFN0YXR1cy5PSworICAgICAgPEhUVFBTdGF0dXMuT0s6IDIwMD4KKyAgICAgID4+PiBIVFRQU3RhdHVzLk9LID09IDIwMAorICAgICAgVHJ1ZQorICAgICAgPj4+IGh0dHAuSFRUUFN0YXR1cy5PSy52YWx1ZQorICAgICAgMjAwCisgICAgICA+Pj4gSFRUUFN0YXR1cy5PSy5waHJhc2UKKyAgICAgICdPSycKKyAgICAgID4+PiBIVFRQU3RhdHVzLk9LLmRlc2NyaXB0aW9uCisgICAgICAnUmVxdWVzdCBmdWxmaWxsZWQsIGRvY3VtZW50IGZvbGxvd3MnCisgICAgICA+Pj4gbGlzdChIVFRQU3RhdHVzKQorICAgICAgWzxIVFRQU3RhdHVzLkNPTlRJTlVFOiAxMDA+LCA8SFRUUFN0YXR1cy5TV0lUQ0hJTkdfUFJPVE9DT0xTOiAxMDE+LCAuLi5dCisKKy4uIF9odHRwLXN0YXR1cy1jb2RlczoKKworSFRUUCBzdGF0dXMgY29kZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnRlZCwKK2BJQU5BLXJlZ2lzdGVyZWQgPGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1zdGF0dXMtY29kZXMvaHR0cC1zdGF0dXMtY29kZXMueGh0bWw+YF8KK3N0YXR1cyBjb2RlcyBhdmFpbGFibGUgaW4gOmNsYXNzOmBodHRwLkhUVFBTdGF0dXNgIGFyZToKKworPT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NvZGUgICAgRW51bSBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlscworPT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2BgMTAwYGAgYGBDT05USU5VRWBgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4yLjEKK2BgMTAxYGAgYGBTV0lUQ0hJTkdfUFJPVE9DT0xTYGAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4yLjIKK2BgMTAyYGAgYGBQUk9DRVNTSU5HYGAgICAgICAgICAgICAgICAgICAgICAgV2ViREFWIDpyZmM6YDI1MThgLCBTZWN0aW9uIDEwLjEKK2BgMjAwYGAgYGBPS2BgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjEKK2BgMjAxYGAgYGBDUkVBVEVEYGAgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjIKK2BgMjAyYGAgYGBBQ0NFUFRFRGBgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjMKK2BgMjAzYGAgYGBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTmBgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjQKK2BgMjA0YGAgYGBOT19DT05URU5UYGAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjUKK2BgMjA1YGAgYGBSRVNFVF9DT05URU5UYGAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi4zLjYKK2BgMjA2YGAgYGBQQVJUSUFMX0NPTlRFTlRgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzM2AsIFNlY3Rpb24gNC4xCitgYDIwN2BgIGBgTVVMVElfU1RBVFVTYGAgICAgICAgICAgICAgICAgICAgIFdlYkRBViA6cmZjOmA0OTE4YCwgU2VjdGlvbiAxMS4xCitgYDIwOGBgIGBgQUxSRUFEWV9SRVBPUlRFRGBgICAgICAgICAgICAgICAgIFdlYkRBViBCaW5kaW5nIEV4dGVuc2lvbnMgOnJmYzpgNTg0MmAsIFNlY3Rpb24gNy4xIChFeHBlcmltZW50YWwpCitgYDIyNmBgIGBgSU1fVVNFRGBgICAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhIEVuY29kaW5nIGluIEhUVFAgOnJmYzpgMzIyOWAsIFNlY3Rpb24gMTAuNC4xCitgYDMwMGBgIGBgTVVMVElQTEVfQ0hPSUNFU2BgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC4xCitgYDMwMWBgIGBgTU9WRURfUEVSTUFORU5UTFlgYCAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC4yCitgYDMwMmBgIGBgRk9VTkRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC4zCitgYDMwM2BgIGBgU0VFX09USEVSYGAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNC40CitgYDMwNGBgIGBgTk9UX01PRElGSUVEYGAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzJgLCBTZWN0aW9uIDQuMQorYGAzMDVgYCBgYFVTRV9QUk9YWWBgICAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuNQorYGAzMDdgYCBgYFRFTVBPUkFSWV9SRURJUkVDVGBgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjQuNworYGAzMDhgYCBgYFBFUk1BTkVOVF9SRURJUkVDVGBgICAgICAgICAgICAgICBQZXJtYW5lbnQgUmVkaXJlY3QgOnJmYzpgNzIzOGAsIFNlY3Rpb24gMyAoRXhwZXJpbWVudGFsKQorYGA0MDBgYCBgYEJBRF9SRVFVRVNUYGAgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMQorYGA0MDFgYCBgYFVOQVVUSE9SSVpFRGBgICAgICAgICAgICAgICAgICAgICBIVFRQLzEuMSBBdXRoZW50aWNhdGlvbiA6cmZjOmA3MjM1YCwgU2VjdGlvbiAzLjEKK2BgNDAyYGAgYGBQQVlNRU5UX1JFUVVJUkVEYGAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjIKK2BgNDAzYGAgYGBGT1JCSURERU5gYCAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjMKK2BgNDA0YGAgYGBOT1RfRk9VTkRgYCAgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjQKK2BgNDA1YGAgYGBNRVRIT0RfTk9UX0FMTE9XRURgYCAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjUKK2BgNDA2YGAgYGBOT1RfQUNDRVBUQUJMRWBgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjYKK2BgNDA3YGAgYGBQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRGBgICAgSFRUUC8xLjEgQXV0aGVudGljYXRpb24gOnJmYzpgNzIzNWAsIFNlY3Rpb24gMy4yCitgYDQwOGBgIGBgUkVRVUVTVF9USU1FT1VUYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS43CitgYDQwOWBgIGBgQ09ORkxJQ1RgYCAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS44CitgYDQxMGBgIGBgR09ORWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS45CitgYDQxMWBgIGBgTEVOR1RIX1JFUVVJUkVEYGAgICAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xMAorYGA0MTJgYCBgYFBSRUNPTkRJVElPTl9GQUlMRURgYCAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMyYCwgU2VjdGlvbiA0LjIKK2BgNDEzYGAgYGBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0VgYCAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi41LjExCitgYDQxNGBgIGBgUkVRVUVTVF9VUklfVE9PX0xPTkdgYCAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xMgorYGA0MTVgYCBgYFVOU1VQUE9SVEVEX01FRElBX1RZUEVgYCAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTMKK2BgNDE2YGAgYGBSRVFVRVNUX1JBTkdFX05PVF9TQVRJU0ZJQUJMRWBgICAgSFRUUC8xLjEgUmFuZ2UgUmVxdWVzdHMgOnJmYzpgNzIzM2AsIFNlY3Rpb24gNC40CitgYDQxN2BgIGBgRVhQRUNUQVRJT05fRkFJTEVEYGAgICAgICAgICAgICAgIEhUVFAvMS4xIDpyZmM6YDcyMzFgLCBTZWN0aW9uIDYuNS4xNAorYGA0MjJgYCBgYFVOUFJPQ0VTU0FCTEVfRU5USVRZYGAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuMgorYGA0MjNgYCBgYExPQ0tFRGBgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuMworYGA0MjRgYCBgYEZBSUxFRF9ERVBFTkRFTkNZYGAgICAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuNAorYGA0MjZgYCBgYFVQR1JBREVfUkVRVUlSRURgYCAgICAgICAgICAgICAgICBIVFRQLzEuMSA6cmZjOmA3MjMxYCwgU2VjdGlvbiA2LjUuMTUKK2BgNDI4YGAgYGBQUkVDT05ESVRJT05fUkVRVUlSRURgYCAgICAgICAgICAgQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcyA6cmZjOmA2NTg1YAorYGA0MjlgYCBgYFRPT19NQU5ZX1JFUVVFU1RTYGAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzIDpyZmM6YDY1ODVgCitgYDQzMWBgIGBgUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRWBgIEFkZGl0aW9uYWwgSFRUUCBTdGF0dXMgQ29kZXMgOnJmYzpgNjU4NWAKK2BgNTAwYGAgYGBJTlRFUk5BTF9TRVJWRVJfRVJST1JgYCAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjEKK2BgNTAxYGAgYGBOT1RfSU1QTEVNRU5URURgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjIKK2BgNTAyYGAgYGBCQURfR0FURVdBWWBgICAgICAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjMKK2BgNTAzYGAgYGBTRVJWSUNFX1VOQVZBSUxBQkxFYGAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjQKK2BgNTA0YGAgYGBHQVRFV0FZX1RJTUVPVVRgYCAgICAgICAgICAgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjUKK2BgNTA1YGAgYGBIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRGBgICAgICAgSFRUUC8xLjEgOnJmYzpgNzIzMWAsIFNlY3Rpb24gNi42LjYKK2BgNTA2YGAgYGBWQVJJQU5UX0FMU09fTkVHT1RJQVRFU2BgICAgICAgICAgVHJhbnNwYXJlbnQgQ29udGVudCBOZWdvdGlhdGlvbiBpbiBIVFRQIDpyZmM6YDIyOTVgLCBTZWN0aW9uIDguMSAoRXhwZXJpbWVudGFsKQorYGA1MDdgYCBgYElOU1VGRklDSUVOVF9TVE9SQUdFYGAgICAgICAgICAgICBXZWJEQVYgOnJmYzpgNDkxOGAsIFNlY3Rpb24gMTEuNQorYGA1MDhgYCBgYExPT1BfREVURUNURURgYCAgICAgICAgICAgICAgICAgICBXZWJEQVYgQmluZGluZyBFeHRlbnNpb25zIDpyZmM6YDU4NDJgLCBTZWN0aW9uIDcuMiAoRXhwZXJpbWVudGFsKQorYGA1MTBgYCBgYE5PVF9FWFRFTkRFRGBgICAgICAgICAgICAgICAgICAgICBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmsgOnJmYzpgMjc3NGAsIFNlY3Rpb24gNyAoRXhwZXJpbWVudGFsKQorYGA1MTFgYCBgYE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRURgYCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzIDpyZmM6YDY1ODVgLCBTZWN0aW9uIDYKKz09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0luIG9yZGVyIHRvIHByZXNlcnZlIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBlbnVtIHZhbHVlcyBhcmUgYWxzbyBwcmVzZW50CitpbiB0aGUgOm1vZDpgaHR0cC5jbGllbnRgIG1vZHVsZSBpbiB0aGUgZm9ybSBvZiBjb25zdGFudHMuIFRoZSBlbnVtIG5hbWUgaXMKK2VxdWFsIHRvIHRoZSBjb25zdGFudCBuYW1lIChpLmUuIGBgaHR0cC5IVFRQU3RhdHVzLk9LYGAgaXMgYWxzbyBhdmFpbGFibGUgYXMKK2BgaHR0cC5jbGllbnQuT0tgYCkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IGZhNzM2ZmUuLjE1YjA5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC0zNyw2ICszNywxOSBAQAogICAgaW5pdGlhbGl6ZWQuIElmICpob3N0KiBpcyBub3Qgc3BlY2lmaWVkLCBgYCcnYGAgKHRoZSBsb2NhbCBob3N0KSBpcyB1c2VkLiBJZgogICAgKnBvcnQqIGlzIG9taXR0ZWQsIHRoZSBzdGFuZGFyZCBJTUFQNCBwb3J0ICgxNDMpIGlzIHVzZWQuCiAKKyAgIFRoZSA6Y2xhc3M6YElNQVA0YCBjbGFzcyBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdXNlZAorICAgbGlrZSB0aGlzLCB0aGUgSU1BUDQgYGBMT0dPVVRgYCBjb21tYW5kIGlzIGlzc3VlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGV4aXRzLiAgRS5nLjo6CisKKyAgICA+Pj4gZnJvbSBpbWFwbGliIGltcG9ydCBJTUFQNAorICAgID4+PiB3aXRoIElNQVA0KCJkb21haW4ub3JnIikgYXMgTToKKyAgICAuLi4gICAgIE0ubm9vcCgpCisgICAgLi4uCisgICAgKCdPSycsIFtiJ05vdGhpbmcgQWNjb21wbGlzaGVkLiBkMjVpZjY1aHk5MDN3ZW8uODcnXSkKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KKwogVGhyZWUgZXhjZXB0aW9ucyBhcmUgZGVmaW5lZCBhcyBhdHRyaWJ1dGVzIG9mIHRoZSA6Y2xhc3M6YElNQVA0YCBjbGFzczoKIAogCkBAIC02NCw3ICs3Nyw4IEBACiBUaGVyZSdzIGFsc28gYSBzdWJjbGFzcyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zOgogCiAKLS4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKKy4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKIAogICAgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YElNQVA0YCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMCiAgICBlbmNyeXB0ZWQgc29ja2V0ICh0byB1c2UgdGhpcyBjbGFzcyB5b3UgbmVlZCBhIHNvY2tldCBtb2R1bGUgdGhhdCB3YXMgY29tcGlsZWQKQEAgLTE5OCw2ICsyMTIsMTAgQEAKICAgIHRoYXQgd2lsbCBiZSBiYXNlNjQgZW5jb2RlZCBhbmQgc2VudCB0byB0aGUgc2VydmVyLiAgSXQgc2hvdWxkIHJldHVybgogICAgYGBOb25lYGAgaWYgdGhlIGNsaWVudCBhYm9ydCByZXNwb25zZSBgYCpgYCBzaG91bGQgYmUgc2VudCBpbnN0ZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgc3RyaW5nIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIGFyZSBub3cgZW5jb2RlZCB0byBgYHV0Zi04YGAgaW5zdGVhZCBvZgorICAgICAgYmVpbmcgbGltaXRlZCB0byBBU0NJSS4KKwogCiAuLiBtZXRob2Q6OiBJTUFQNC5jaGVjaygpCiAKQEAgLTIzMCw2ICsyNDgsMTYgQEAKICAgIERlbGV0ZSB0aGUgQUNMcyAocmVtb3ZlIGFueSByaWdodHMpIHNldCBmb3Igd2hvIG9uIG1haWxib3guCiAKIAorLi4gbWV0aG9kOjogSU1BUDQuZW5hYmxlKGNhcGFiaWxpdHkpCisKKyAgIEVuYWJsZSAqY2FwYWJpbGl0eSogKHNlZSA6cmZjOmA1MTYxYCkuICBNb3N0IGNhcGFiaWxpdGllcyBkbyBub3QgbmVlZCB0byBiZQorICAgZW5hYmxlZC4gIEN1cnJlbnRseSBvbmx5IHRoZSBgYFVURjg9QUNDRVBUYGAgY2FwYWJpbGl0eSBpcyBzdXBwb3J0ZWQKKyAgIChzZWUgOlJGQzpgNjg1NWApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFRoZSA6bWV0aDpgZW5hYmxlYCBtZXRob2QgaXRzZWxmLCBhbmQgOlJGQzpgNjg1NWAgc3VwcG9ydC4KKworCiAuLiBtZXRob2Q6OiBJTUFQNC5leHB1bmdlKCkKIAogICAgUGVybWFuZW50bHkgcmVtb3ZlIGRlbGV0ZWQgaXRlbXMgZnJvbSBzZWxlY3RlZCBtYWlsYm94LiBHZW5lcmF0ZXMgYW4gYGBFWFBVTkdFYGAKQEAgLTM2Nyw3ICszOTUsOSBAQAogICAgU2VhcmNoIG1haWxib3ggZm9yIG1hdGNoaW5nIG1lc3NhZ2VzLiAgKmNoYXJzZXQqIG1heSBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQogICAgbm8gYGBDSEFSU0VUYGAgd2lsbCBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gIFRoZSBJTUFQCiAgICBwcm90b2NvbCByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBjcml0ZXJpb24gYmUgc3BlY2lmaWVkOyBhbiBleGNlcHRpb24gd2lsbCBiZQotICAgcmFpc2VkIHdoZW4gdGhlIHNlcnZlciByZXR1cm5zIGFuIGVycm9yLgorICAgcmFpc2VkIHdoZW4gdGhlIHNlcnZlciByZXR1cm5zIGFuIGVycm9yLiAgKmNoYXJzZXQqIG11c3QgYmUgYGBOb25lYGAgaWYKKyAgIHRoZSBgYFVURjg9QUNDRVBUYGAgY2FwYWJpbGl0eSB3YXMgZW5hYmxlZCB1c2luZyB0aGUgOm1ldGg6YGVuYWJsZWAKKyAgIGNvbW1hbmQuCiAKICAgIEV4YW1wbGU6OgogCkBAIC01MjksNiArNTU5LDE1IEBACiAgICB0aGUgbW9kdWxlIHZhcmlhYmxlIGBgRGVidWdgYC4gIFZhbHVlcyBncmVhdGVyIHRoYW4gdGhyZWUgdHJhY2UgZWFjaCBjb21tYW5kLgogCiAKKy4uIGF0dHJpYnV0ZTo6IElNQVA0LnV0ZjhfZW5hYmxlZAorCisgICBCb29sZWFuIHZhbHVlIHRoYXQgaXMgbm9ybWFsbHkgYGBGYWxzZWBgLCBidXQgaXMgc2V0IHRvIGBgVHJ1ZWBgIGlmIGFuCisgICA6bWV0aDpgZW5hYmxlYCBjb21tYW5kIGlzIHN1Y2Nlc3NmdWxseSBpc3N1ZWQgZm9yIHRoZSBgYFVURjg9QUNDRVBUYGAKKyAgIGNhcGFiaWxpdHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIF9pbWFwNC1leGFtcGxlOgogCiBJTUFQNCBFeGFtcGxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0IGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAppbmRleCA5ZTg5NTIzLi5mMTFmNmRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKQEAgLTQ4LDYgKzQ4LDE0IEBACiArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYCdwbmcnYGAgIHwgUG9ydGFibGUgTmV0d29yayBHcmFwaGljcyAgICAgICAgIHwKICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgJ3dlYnAnYGAgfCBXZWJQIGZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnZXhyJ2BgICB8IE9wZW5FWFIgRmlsZXMgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgIFRoZSAqZXhyKiBhbmQgKndlYnAqIGZvcm1hdHMgd2VyZSBhZGRlZC4KKwogCiBZb3UgY2FuIGV4dGVuZCB0aGUgbGlzdCBvZiBmaWxlIHR5cGVzIDptb2Q6YGltZ2hkcmAgY2FuIHJlY29nbml6ZSBieSBhcHBlbmRpbmcKIHRvIHRoaXMgdmFyaWFibGU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXAucnN0IGIvRG9jL2xpYnJhcnkvaW1wLnJzdAppbmRleCA4M2E1MmU0Li42OGE2YjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKQEAgLTE5NywxMSArMTk3LDkgQEAKICAgIHZhbHVlIHdvdWxkIGJlIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgZm9yIFB5dGhvbiAzLjIuCiAgICBUaGUgYGBjcHl0aG9uLTMyYGAgc3RyaW5nIGNvbWVzIGZyb20gdGhlIGN1cnJlbnQgbWFnaWMgdGFnIChzZWUKICAgIDpmdW5jOmBnZXRfdGFnYDsgaWYgOmF0dHI6YHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIG5vdCBkZWZpbmVkIHRoZW4KLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4gIFRoZSByZXR1cm5lZCBwYXRoIHdpbGwgZW5kIGluCi0gICBgYC5weWNgYCB3aGVuIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KLSAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgYGBGYWxzZWBgKS4gIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IgYGBGYWxzZWBgIGZvcgotICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKLSAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuIEJ5IHBhc3NpbmcgaW4gYGBUcnVlYGAgb3IKKyAgIGBgRmFsc2VgYCBmb3IgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IKKyAgIGBgX19kZWJ1Z19fYGAsIGxlYWRpbmcgdG8gb3B0aW1pemVkIGJ5dGVjb2RlLgogCiAgICAqcGF0aCogbmVlZCBub3QgZXhpc3QuCiAKQEAgLTIxMiw2ICsyMTAsOSBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAogICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaW5zdGVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlciBubyBsb25nZXIgY3JlYXRlcyBhIGBgLnB5b2BgIGZpbGUuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAppbmRleCBjODRkMmRmLi42MzJkZjc1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKQEAgLTU1LDYgKzU1LDEyIEBACiAgICAgOnBlcDpgNDUxYAogICAgICAgICBBIE1vZHVsZVNwZWMgVHlwZSBmb3IgdGhlIEltcG9ydCBTeXN0ZW0KIAorICAgIDpwZXA6YDQ4OGAKKyAgICAgICAgRWxpbWluYXRpb24gb2YgUFlPIGZpbGVzCisKKyAgICA6cGVwOmA0ODlgCisgICAgICAgIE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24KKwogICAgIDpwZXA6YDMxMjBgCiAgICAgICAgIFVzaW5nIFVURi04IGFzIHRoZSBEZWZhdWx0IFNvdXJjZSBFbmNvZGluZwogCkBAIC02OSw2ICs3NSwxMCBAQAogCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbi4KIAorICAgIC4uIG5vdGU6OgorICAgICAgIFByb2dyYW1tYXRpYyBpbXBvcnRpbmcgb2YgbW9kdWxlcyBzaG91bGQgdXNlIDpmdW5jOmBpbXBvcnRfbW9kdWxlYAorICAgICAgIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbi4KKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSkKIAogICAgIEltcG9ydCBhIG1vZHVsZS4gVGhlICpuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgd2hhdCBtb2R1bGUgdG8KQEAgLTgxLDEyICs5MSwxNSBAQAogCiAgICAgVGhlIDpmdW5jOmBpbXBvcnRfbW9kdWxlYCBmdW5jdGlvbiBhY3RzIGFzIGEgc2ltcGxpZnlpbmcgd3JhcHBlciBhcm91bmQKICAgICA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLiBUaGlzIG1lYW5zIGFsbCBzZW1hbnRpY3Mgb2YgdGhlIGZ1bmN0aW9uIGFyZQotICAgIGRlcml2ZWQgZnJvbSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLCBpbmNsdWRpbmcgcmVxdWlyaW5nIHRoZSBwYWNrYWdlCi0gICAgZnJvbSB3aGljaCBhbiBpbXBvcnQgaXMgb2NjdXJyaW5nIHRvIGhhdmUgYmVlbiBwcmV2aW91c2x5IGltcG9ydGVkCi0gICAgKGkuZS4sICpwYWNrYWdlKiBtdXN0IGFscmVhZHkgYmUgaW1wb3J0ZWQpLiBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZQotICAgIGlzIHRoYXQgOmZ1bmM6YGltcG9ydF9tb2R1bGVgIHJldHVybnMgdGhlIHNwZWNpZmllZCBwYWNrYWdlIG9yIG1vZHVsZQotICAgIChlLmcuIGBgcGtnLm1vZGBgKSwgd2hpbGUgOmZ1bmM6YF9faW1wb3J0X19gIHJldHVybnMgdGhlCi0gICAgdG9wLWxldmVsIHBhY2thZ2Ugb3IgbW9kdWxlIChlLmcuIGBgcGtnYGApLgorICAgIGRlcml2ZWQgZnJvbSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLiBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZQorICAgIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyB0aGF0IDpmdW5jOmBpbXBvcnRfbW9kdWxlYCByZXR1cm5zIHRoZQorICAgIHNwZWNpZmllZCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYAorICAgIHJldHVybnMgdGhlIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KKworICAgIElmIHlvdSBhcmUgZHluYW1pY2FsbHkgaW1wb3J0aW5nIGEgbW9kdWxlIHRoYXQgd2FzIGNyZWF0ZWQgc2luY2UgdGhlCisgICAgaW50ZXJwcmV0ZXIgYmVnYW4gZXhlY3V0aW9uIChlLmcuLCBjcmVhdGVkIGEgUHl0aG9uIHNvdXJjZSBmaWxlKSwgeW91IG1heQorICAgIG5lZWQgdG8gY2FsbCA6ZnVuYzpgaW52YWxpZGF0ZV9jYWNoZXNgIGluIG9yZGVyIGZvciB0aGUgbmV3IG1vZHVsZSB0byBiZQorICAgIG5vdGljZWQgYnkgdGhlIGltcG9ydCBzeXN0ZW0uCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgIFBhcmVudCBwYWNrYWdlcyBhcmUgYXV0b21hdGljYWxseSBpbXBvcnRlZC4KQEAgLTM0MSwxMyArMzU0LDE2IEBACiAKICAgICAuLiBtZXRob2Q6OiBjcmVhdGVfbW9kdWxlKHNwZWMpCiAKLSAgICAgICBBbiBvcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2R1bGUgb2JqZWN0IHRvIHVzZSB3aGVuCi0gICAgICAgaW1wb3J0aW5nIGEgbW9kdWxlLiAgY3JlYXRlX21vZHVsZSgpIG1heSBhbHNvIHJldHVybiBgYE5vbmVgYCwKLSAgICAgICBpbmRpY2F0aW5nIHRoYXQgdGhlIGRlZmF1bHQgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCB0YWtlIHBsYWNlCi0gICAgICAgaW5zdGVhZC4KKyAgICAgICBBIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIG1vZHVsZSBvYmplY3QgdG8gdXNlIHdoZW4KKyAgICAgICBpbXBvcnRpbmcgYSBtb2R1bGUuICBUaGlzIG1ldGhvZCBtYXkgcmV0dXJuIGBgTm9uZWBgLAorICAgICAgIGluZGljYXRpbmcgdGhhdCBkZWZhdWx0IG1vZHVsZSBjcmVhdGlvbiBzZW1hbnRpY3Mgc2hvdWxkIHRha2UgcGxhY2UuCiAKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAgU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgdGhpcyBtZXRob2Qgd2lsbCBub3QgYmUgb3B0aW9uYWwgd2hlbgorICAgICAgICAgIDptZXRoOmBleGVjX21vZHVsZWAgaXMgZGVmaW5lZC4KKwogICAgIC4uIG1ldGhvZDo6IGV4ZWNfbW9kdWxlKG1vZHVsZSkKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKQEAgLTQxMSw3ICs0MjcsNyBAQAogCiAgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIEFQSSBmb3IgbG9hZGluZyBhIG1vZHVsZSBpcyA6bWV0aDpgZXhlY19tb2R1bGVgCi0gICAgICAgICAgIChhbmQgb3B0aW9uYWxseSA6bWV0aDpgY3JlYXRlX21vZHVsZWApLiAgTG9hZGVycyBzaG91bGQgaW1wbGVtZW50CisgICAgICAgICAgIChhbmQgOm1ldGg6YGNyZWF0ZV9tb2R1bGVgKS4gIExvYWRlcnMgc2hvdWxkIGltcGxlbWVudAogICAgICAgICAgICBpdCBpbnN0ZWFkIG9mIGxvYWRfbW9kdWxlKCkuICBUaGUgaW1wb3J0IG1hY2hpbmVyeSB0YWtlcyBjYXJlIG9mCiAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcmVzcG9uc2liaWxpdGllcyBvZiBsb2FkX21vZHVsZSgpIHdoZW4gZXhlY19tb2R1bGUoKQogICAgICAgICAgICBpcyBpbXBsZW1lbnRlZC4KQEAgLTQ5Myw3ICs1MDksNyBAQAogICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgICAgICBSYWlzZXMgOmV4YzpgSW1wb3J0RXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKLSAgICAuLiBtZXRob2Q6OiBzb3VyY2VfdG9fY29kZShkYXRhLCBwYXRoPSc8c3RyaW5nPicpCisgICAgLi4gc3RhdGljbWV0aG9kOjogc291cmNlX3RvX2NvZGUoZGF0YSwgcGF0aD0nPHN0cmluZz4nKQogCiAgICAgICAgIENyZWF0ZSBhIGNvZGUgb2JqZWN0IGZyb20gUHl0aG9uIHNvdXJjZS4KIApAQCAtNTAyLDggKzUxOCwxNCBAQAogICAgICAgICB0aGUgInBhdGgiIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBvcmlnaW5hdGVkIGZyb20sIHdoaWNoIGNhbiBiZSBhbgogICAgICAgICBhYnN0cmFjdCBjb25jZXB0IChlLmcuIGxvY2F0aW9uIGluIGEgemlwIGZpbGUpLgogCisgICAgICAgIFdpdGggdGhlIHN1YnNlcXVlbnQgY29kZSBvYmplY3Qgb25lIGNhbiBleGVjdXRlIGl0IGluIGEgbW9kdWxlIGJ5CisgICAgICAgIHJ1bm5pbmcgYGBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXylgYC4KKwogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgICBNYWRlIHRoZSBtZXRob2Qgc3RhdGljLgorCiAgICAgLi4gbWV0aG9kOjogZXhlY19tb2R1bGUobW9kdWxlKQogCiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YExvYWRlci5leGVjX21vZHVsZWAuCkBAIC02ODksNiArNzExLDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6YXR0cjpgQllURUNPREVfU1VGRklYRVNgIGluc3RlYWQuCisKIC4uIGF0dHJpYnV0ZTo6IE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUwogCiAgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG9wdGltaXplZCBieXRlY29kZQpAQCAtNjk2LDE0ICs3MjEsMTkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKKyAgICAgIFVzZSA6YXR0cjpgQllURUNPREVfU1VGRklYRVNgIGluc3RlYWQuCisKIC4uIGF0dHJpYnV0ZTo6IEJZVEVDT0RFX1NVRkZJWEVTCiAKICAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBieXRlY29kZQotICAgbW9kdWxlcy4gU2V0IHRvIGVpdGhlciA6YXR0cjpgREVCVUdfQllURUNPREVfU1VGRklYRVNgIG9yCi0gICA6YXR0cjpgT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTYCBiYXNlZCBvbiB3aGV0aGVyIGBgX19kZWJ1Z19fYGAgaXMgdHJ1ZS4KKyAgIG1vZHVsZXMgKGluY2x1ZGluZyB0aGUgbGVhZGluZyBkb3QpLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSB2YWx1ZSBpcyBubyBsb25nZXIgZGVwZW5kZW50IG9uIGBgX19kZWJ1Z19fYGAuCisKIC4uIGF0dHJpYnV0ZTo6IEVYVEVOU0lPTl9TVUZGSVhFUwogCiAgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IKQEAgLTczMiw5ICs3NjIsOSBAQAogICAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKICAgICBpbnN0YW50aWF0aW9uLgogCi0gICAgLi4gbm90ZTo6Ci0gICAgICAgRHVlIHRvIGxpbWl0YXRpb25zIGluIHRoZSBleHRlbnNpb24gbW9kdWxlIEMtQVBJLCBmb3Igbm93Ci0gICAgICAgQnVpbHRpbkltcG9ydGVyIGRvZXMgbm90IGltcGxlbWVudCA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYC4KKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgIEFzIHBhcnQgb2YgOnBlcDpgNDg5YCwgdGhlIGJ1aWx0aW4gaW1wb3J0ZXIgbm93IGltcGxlbWVudHMKKyAgICAgICA6bWV0aDpgTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIGFuZCA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYAogCiAKIC4uIGNsYXNzOjogRnJvemVuSW1wb3J0ZXIKQEAgLTc4Miw2ICs4MTIsMTEgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBJZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtLSByZXByZXNlbnRlZCBieSBhbiBlbXB0eSBzdHJpbmcgLS0KKyAgICAgICAgIGlzIG5vIGxvbmdlciB2YWxpZCB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkIGJ1dCBubyB2YWx1ZSBpcyBjYWNoZWQKKyAgICAgICAgIGluIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKICAgIC4uIGNsYXNzbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKIAogICAgICAgQSBsZWdhY3kgd3JhcHBlciBhcm91bmQgOm1ldGg6YGZpbmRfc3BlY2AuCkBAIC05NDQsMTQgKzk3OSwxOCBAQAogCiAgICAgICBQYXRoIHRvIHRoZSBleHRlbnNpb24gbW9kdWxlLgogCi0gICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShuYW1lPU5vbmUpCisgICAuLiBtZXRob2Q6OiBjcmVhdGVfbW9kdWxlKHNwZWMpCiAKLSAgICAgIExvYWRzIHRoZSBleHRlbnNpb24gbW9kdWxlIGlmIGFuZCBvbmx5IGlmICpmdWxsbmFtZSogaXMgdGhlIHNhbWUgYXMKLSAgICAgIDphdHRyOmBuYW1lYCBvciBpcyBgYE5vbmVgYC4KKyAgICAgIENyZWF0ZXMgdGhlIG1vZHVsZSBvYmplY3QgZnJvbSB0aGUgZ2l2ZW4gc3BlY2lmaWNhdGlvbiBpbiBhY2NvcmRhbmNlCisgICAgICB3aXRoIDpwZXA6YDQ4OWAuCiAKLSAgICAgIC4uIG5vdGU6OgotICAgICAgICAgRHVlIHRvIGxpbWl0YXRpb25zIGluIHRoZSBleHRlbnNpb24gbW9kdWxlIEMtQVBJLCBmb3Igbm93Ci0gICAgICAgICBFeHRlbnNpb25GaWxlTG9hZGVyIGRvZXMgbm90IGltcGxlbWVudCA6bWV0aDpgTG9hZGVyLmV4ZWNfbW9kdWxlYC4KKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBtZXRob2Q6OiBleGVjX21vZHVsZShtb2R1bGUpCisKKyAgICAgIEluaXRpYWxpemVzIHRoZSBnaXZlbiBtb2R1bGUgb2JqZWN0IGluIGFjY29yZGFuY2Ugd2l0aCA6cGVwOmA0ODlgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogICAgLi4gbWV0aG9kOjogaXNfcGFja2FnZShmdWxsbmFtZSkKIApAQCAtMTA0NywyMyArMTA4NiwzNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotLi4gZnVuY3Rpb246OiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKQorLi4gZnVuY3Rpb246OiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lLCAqLCBvcHRpbWl6YXRpb249Tm9uZSkKIAotICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YCBwYXRoIHRvIHRoZSBieXRlLWNvbXBpbGVkIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgc291cmNlICpwYXRoKi4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCB0aGUgcmV0dXJuCisgICBSZXR1cm4gdGhlIDpwZXA6YDMxNDdgLzpwZXA6YDQ4OGAgcGF0aCB0byB0aGUgYnl0ZS1jb21waWxlZCBmaWxlIGFzc29jaWF0ZWQKKyAgIHdpdGggdGhlIHNvdXJjZSAqcGF0aCouICBGb3IgZXhhbXBsZSwgaWYgKnBhdGgqIGlzIGBgL2Zvby9iYXIvYmF6LnB5YGAgdGhlIHJldHVybgogICAgdmFsdWUgd291bGQgYmUgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCBmb3IgUHl0aG9uIDMuMi4KICAgIFRoZSBgYGNweXRob24tMzJgYCBzdHJpbmcgY29tZXMgZnJvbSB0aGUgY3VycmVudCBtYWdpYyB0YWcgKHNlZQogICAgOmZ1bmM6YGdldF90YWdgOyBpZiA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgaXMgbm90IGRlZmluZWQgdGhlbgotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgVGhlIHJldHVybmVkIHBhdGggd2lsbCBlbmQgaW4KLSAgIGBgLnB5Y2BgIHdoZW4gYGBfX2RlYnVnX19gYCBpcyBgYFRydWVgYCBvciBgYC5weW9gYCBmb3IgYW4gb3B0aW1pemVkIFB5dGhvbgotICAgKGkuZS4gYGBfX2RlYnVnX19gYCBpcyBgYEZhbHNlYGApLiAgQnkgcGFzc2luZyBpbiBgYFRydWVgYCBvciBgYEZhbHNlYGAgZm9yCi0gICAqZGVidWdfb3ZlcnJpZGUqIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIHN5c3RlbSdzIHZhbHVlIGZvciBgYF9fZGVidWdfX2BgIGZvcgotICAgZXh0ZW5zaW9uIHNlbGVjdGlvbi4KKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkKS4KIAotICAgKnBhdGgqIG5lZWQgbm90IGV4aXN0LgorICAgVGhlICpvcHRpbWl6YXRpb24qIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBvZiB0aGUKKyAgIGJ5dGVjb2RlIGZpbGUuIEFuIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIG5vIG9wdGltaXphdGlvbiwgc28KKyAgIGBgL2Zvby9iYXIvYmF6LnB5YGAgd2l0aCBhbiAqb3B0aW1pemF0aW9uKiBvZiBgYCcnYGAgd2lsbCByZXN1bHQgaW4gYQorICAgYnl0ZWNvZGUgcGF0aCBvZiBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgLiBgYE5vbmVgYCBjYXVzZXMKKyAgIHRoZSBpbnRlcnB0ZXIncyBvcHRpbWl6YXRpb24gbGV2ZWwgdG8gYmUgdXNlZC4gQW55IG90aGVyIHZhbHVlJ3Mgc3RyaW5nCisgICByZXByZXNlbnRhdGlvbiBiZWluZyB1c2VkLCBzbyBgYC9mb28vYmFyL2Jhei5weWBgIHdpdGggYW4gKm9wdGltaXphdGlvbiogb2YKKyAgIGBgMmBgIHdpbGwgbGVhZCB0byB0aGUgYnl0ZWNvZGUgcGF0aCBvZgorICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5vcHQtMi5weWNgYC4gVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbgorICAgb2YgKm9wdGltaXphdGlvbiogY2FuIG9ubHkgYmUgYWxwaGFudW1lcmljLCBlbHNlIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgVGhlICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlCisgICB0aGUgc3lzdGVtJ3MgdmFsdWUgZm9yIGBgX19kZWJ1Z19fYGAuIEEgYGBUcnVlYGAgdmFsdWUgaXMgdGhlIGVxdWl2YWxlbnQgb2YKKyAgIHNldHRpbmcgKm9wdGltaXphdGlvbiogdG8gdGhlIGVtcHR5IHN0cmluZy4gQSBgYEZhbHNlYGAgdmFsdWUgaXMgdGhlIHNhbWUgYXMKKyAgIHNldHRpbmcgKm9wdGltaXphdGlvbiogdG8gYGAxYGAuIElmIGJvdGggKmRlYnVnX292ZXJyaWRlKiBhbiAqb3B0aW1pemF0aW9uKgorICAgYXJlIG5vdCBgYE5vbmVgYCB0aGVuIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQgOjozLjUKKyAgICAgIFRoZSAqb3B0aW1pemF0aW9uKiBwYXJhbWV0ZXIgd2FzIGFkZGVkIGFuZCB0aGUgKmRlYnVnX292ZXJyaWRlKiBwYXJhbWV0ZXIKKyAgICAgIHdhcyBkZXByZWNhdGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMTA3MSw3ICsxMTI0LDcgQEAKICAgIGZpbGUgcGF0aC4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMKICAgIGBgL2Zvby9iYXIvX19weWNhY2hlX18vYmF6LmNweXRob24tMzIucHljYGAgdGhlIHJldHVybmVkIHBhdGggd291bGQgYmUKICAgIGBgL2Zvby9iYXIvYmF6LnB5YGAuICAqcGF0aCogbmVlZCBub3QgZXhpc3QsIGhvd2V2ZXIgaWYgaXQgZG9lcyBub3QgY29uZm9ybQotICAgdG8gOnBlcDpgMzE0N2AgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKKyAgIHRvIDpwZXA6YDMxNDdgIG9yIDpwZXA6YDQ4OGAgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKICAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCwKICAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KIApAQCAtMTExNyw2ICsxMTcwLDIxIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBmdW5jdGlvbjo6IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKworICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYC4KKworICAgSWYgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIHRoZW4gYW55CisgICBwcmUtZXhpc3RpbmcgYXR0cmlidXRlcyB3aWxsIG5vdCBiZSByZXNldC4gQWxzbywgbm8gOmV4YzpgQXR0cmlidXRlRXJyb3JgCisgICB3aWxsIGJlIHJhaXNlZCBpZiB0cmlnZ2VyZWQgd2hpbGUgYWNjZXNzaW5nICoqc3BlYyoqIG9yIHNldHRpbmcgYW4gYXR0cmlidXRlCisgICBvbiB0aGUgbW9kdWxlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHVzaW5nIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAgdG8gY3JlYXRlIGEKKyAgIG5ldyBtb2R1bGUgYXMgKipzcGVjKiogaXMgdXNlZCB0byBzZXQgYXMgbWFueSBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzIG9uCisgICB0aGUgbW9kdWxlIGFzIHBvc3NpYmxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGVjb3JhdG9yOjogbW9kdWxlX2Zvcl9sb2FkZXIKIAogICAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAKQEAgLTExOTUsMyArMTI2MywzOSBAQAogICAgbW9kdWxlIHdpbGwgYmUgZmlsZS1iYXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKy4uIGNsYXNzOjogTGF6eUxvYWRlcihsb2FkZXIpCisKKyAgIEEgY2xhc3Mgd2hpY2ggcG9zdHBvbmVzIHRoZSBleGVjdXRpb24gb2YgdGhlIGxvYWRlciBvZiBhIG1vZHVsZSB1bnRpbCB0aGUKKyAgIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGFjY2Vzc2VkLgorCisgICBUaGlzIGNsYXNzICoqb25seSoqIHdvcmtzIHdpdGggbG9hZGVycyB0aGF0IGRlZmluZQorICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgYXMgY29udHJvbCBvdmVyIHdoYXQgbW9kdWxlIHR5cGUKKyAgIGlzIHVzZWQgZm9yIHRoZSBtb2R1bGUgaXMgcmVxdWlyZWQuIEZvciB0aG9zZSBzYW1lIHJlYXNvbnMsIHRoZSBsb2FkZXIncworICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2Qgd2lsbCBiZSBpZ25vcmVkIChpLmUuLCB0aGUKKyAgIGxvYWRlcidzIG1ldGhvZCBzaG91bGQgb25seSByZXR1cm4gYGBOb25lYGApLiBGaW5hbGx5LAorICAgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsCisgICBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMKKyAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYQorICAgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgorCisgICAuLiBub3RlOjoKKyAgICAgIEZvciBwcm9qZWN0cyB3aGVyZSBzdGFydHVwIHRpbWUgaXMgY3JpdGljYWwsIHRoaXMgY2xhc3MgYWxsb3dzIGZvcgorICAgICAgcG90ZW50aWFsbHkgbWluaW1pemluZyB0aGUgY29zdCBvZiBsb2FkaW5nIGEgbW9kdWxlIGlmIGl0IGlzIG5ldmVyIHVzZWQuCisgICAgICBGb3IgcHJvamVjdHMgd2hlcmUgc3RhcnR1cCB0aW1lIGlzIG5vdCBlc3NlbnRpYWwgdGhlbiB1c2Ugb2YgdGhpcyBjbGFzcyBpcworICAgICAgKipoZWF2aWx5KiogZGlzY291cmFnZWQgZHVlIHRvIGVycm9yIG1lc3NhZ2VzIGNyZWF0ZWQgZHVyaW5nIGxvYWRpbmcgYmVpbmcKKyAgICAgIHBvc3Rwb25lZCBhbmQgdGh1cyBvY2N1cnJpbmcgb3V0IG9mIGNvbnRleHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBjbGFzc21ldGhvZDo6IGZhY3RvcnkobG9hZGVyKQorCisgICAgICBBIHN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNhbGxhYmxlIHRoYXQgY3JlYXRlcyBhIGxhenkgbG9hZGVyLiBUaGlzCisgICAgICBpcyBtZWFudCB0byBiZSB1c2VkIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGxvYWRlciBpcyBwYXNzZWQgYnkgY2xhc3MKKyAgICAgIGluc3RlYWQgb2YgYnkgaW5zdGFuY2UuCisgICAgICA6OgorCisgICAgICAgIHN1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCisgICAgICAgIGxhenlfbG9hZGVyID0gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KGxvYWRlcikKKyAgICAgICAgZmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKHBhdGgsIFsobGF6eV9sb2FkZXIsIHN1ZmZpeGVzKV0pCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IDU3ZWI0ZmYuLjI2YTI5MTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0yOCw3ICsyOCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgOmZ1bmM6YGdldG1lbWJlcnNgIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgbWVtYmVycyBvZiBhbiBvYmplY3Qgc3VjaCBhcyBhCi1jbGFzcyBvciBtb2R1bGUuIFRoZSBzaXh0ZWVuIGZ1bmN0aW9ucyB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoICJpcyIgYXJlIG1haW5seQorY2xhc3Mgb3IgbW9kdWxlLiBUaGUgZnVuY3Rpb25zIHdob3NlIG5hbWVzIGJlZ2luIHdpdGggImlzIiBhcmUgbWFpbmx5CiBwcm92aWRlZCBhcyBjb252ZW5pZW50IGNob2ljZXMgZm9yIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gOmZ1bmM6YGdldG1lbWJlcnNgLgogVGhleSBhbHNvIGhlbHAgeW91IGRldGVybWluZSB3aGVuIHlvdSBjYW4gZXhwZWN0IHRvIGZpbmQgdGhlIGZvbGxvd2luZyBzcGVjaWFsCiBhdHRyaWJ1dGVzOgpAQCAtMTY4LDYgKzE2OCwzMyBAQAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgYW5kIGxvY2FsICAgICAgIHwKIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgdmFyaWFibGVzICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBnZW5lcmF0b3IgfCBfX25hbWVfXyAgICAgICAgfCBuYW1lICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IF9fcXVhbG5hbWVfXyAgICB8IHF1YWxpZmllZCBuYW1lICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgZ2lfZnJhbWUgICAgICAgIHwgZnJhbWUgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBnaV9ydW5uaW5nICAgICAgfCBpcyB0aGUgZ2VuZXJhdG9yIHJ1bm5pbmc/IHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGdpX2NvZGUgICAgICAgICB8IGNvZGUgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgZ2lfeWllbGRmcm9tICAgIHwgb2JqZWN0IGJlaW5nIGl0ZXJhdGVkIGJ5ICB8Cit8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IGBgeWllbGQgZnJvbWBgLCBvciAgICAgICAgfAorfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGNvcm91dGluZSB8IF9fbmFtZV9fICAgICAgICB8IG5hbWUgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgX19xdWFsbmFtZV9fICAgIHwgcXVhbGlmaWVkIG5hbWUgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBjcl9hd2FpdCAgICAgICAgfCBvYmplY3QgYmVpbmcgYXdhaXRlZCBvbiwgIHwKK3wgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCBjcl9mcmFtZSAgICAgICAgfCBmcmFtZSAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8ICAgICAgICAgICB8IGNyX3J1bm5pbmcgICAgICB8IGlzIHRoZSBjb3JvdXRpbmUgcnVubmluZz8gfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgICAgICAgIHwgY3JfY29kZSAgICAgICAgIHwgY29kZSAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBidWlsdGluICAgfCBfX2RvY19fICAgICAgICAgfCBkb2N1bWVudGF0aW9uIHN0cmluZyAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8ICAgICAgICAgICB8IF9fbmFtZV9fICAgICAgICB8IG9yaWdpbmFsIG5hbWUgb2YgdGhpcyAgICAgfApAQCAtMTgwLDYgKzIwNywxMyBAQAogfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgIEFkZCBgYF9fcXVhbG5hbWVfX2BgIGFuZCBgYGdpX3lpZWxkZnJvbWBgIGF0dHJpYnV0ZXMgdG8gZ2VuZXJhdG9ycy4KKworICAgVGhlIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUgb2YgZ2VuZXJhdG9ycyBpcyBub3cgc2V0IGZyb20gdGhlIGZ1bmN0aW9uCisgICBuYW1lLCBpbnN0ZWFkIG9mIHRoZSBjb2RlIG5hbWUsIGFuZCBpdCBjYW4gbm93IGJlIG1vZGlmaWVkLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0bWVtYmVycyhvYmplY3RbLCBwcmVkaWNhdGVdKQogCkBAIC0yNjEsNiArMjk1LDQxIEBACiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZ2VuZXJhdG9yLgogCiAKKy4uIGZ1bmN0aW9uOjogaXNjb3JvdXRpbmVmdW5jdGlvbihvYmplY3QpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYAorICAgKGEgZnVuY3Rpb24gZGVmaW5lZCB3aXRoIGFuIDprZXl3b3JkOmBhc3luYyBkZWZgIHN5bnRheCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGZ1bmN0aW9uOjogaXNjb3JvdXRpbmUob2JqZWN0KQorCisgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgOnRlcm06YGNvcm91dGluZWAgY3JlYXRlZCBieSBhbgorICAgOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGZ1bmN0aW9uOjogaXNhd2FpdGFibGUob2JqZWN0KQorCisgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGNhbiBiZSB1c2VkIGluIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4KKworICAgQ2FuIGFsc28gYmUgdXNlZCB0byBkaXN0aW5ndWlzaCBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcyBmcm9tIHJlZ3VsYXIKKyAgIGdlbmVyYXRvcnM6OgorCisgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgeWllbGQKKyAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgIGRlZiBnZW5fY29ybygpOgorICAgICAgICAgIHlpZWxkCisKKyAgICAgIGFzc2VydCBub3QgaXNhd2FpdGFibGUoZ2VuKCkpCisgICAgICBhc3NlcnQgaXNhd2FpdGFibGUoZ2VuX2Nvcm8oKSkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBpc3RyYWNlYmFjayhvYmplY3QpCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB0cmFjZWJhY2suCkBAIC0zNTEsNiArNDIwLDEyIEBACiAuLiBmdW5jdGlvbjo6IGdldGRvYyhvYmplY3QpCiAKICAgIEdldCB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdCwgY2xlYW5lZCB1cCB3aXRoIDpmdW5jOmBjbGVhbmRvY2AuCisgICBJZiB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdCBpcyBub3QgcHJvdmlkZWQgYW5kIHRoZSBvYmplY3QgaXMKKyAgIGEgY2xhc3MsIGEgbWV0aG9kLCBhIHByb3BlcnR5IG9yIGEgZGVzY3JpcHRvciwgcmV0cmlldmUgdGhlIGRvY3VtZW50YXRpb24KKyAgIHN0cmluZyBmcm9tIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBEb2N1bWVudGF0aW9uIHN0cmluZ3MgYXJlIG5vdyBpbmhlcml0ZWQgaWYgbm90IG92ZXJyaWRkZW4uCiAKIAogLi4gZnVuY3Rpb246OiBnZXRjb21tZW50cyhvYmplY3QpCkBAIC00MjMsNyArNDk4LDcgQEAKIHJldHVybiBhbm5vdGF0aW9uLiAgVG8gcmV0cmlldmUgYSBTaWduYXR1cmUgb2JqZWN0LCB1c2UgdGhlIDpmdW5jOmBzaWduYXR1cmVgCiBmdW5jdGlvbi4KIAotLi4gZnVuY3Rpb246OiBzaWduYXR1cmUoY2FsbGFibGUpCisuLiBmdW5jdGlvbjo6IHNpZ25hdHVyZShjYWxsYWJsZSwgXCosIGZvbGxvd193cmFwcGVkPVRydWUpCiAKICAgIFJldHVybiBhIDpjbGFzczpgU2lnbmF0dXJlYCBvYmplY3QgZm9yIHRoZSBnaXZlbiBgYGNhbGxhYmxlYGA6OgogCkBAIC00NDgsNiArNTIzLDExIEBACiAgICBSYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgbm8gc2lnbmF0dXJlIGNhbiBiZSBwcm92aWRlZCwgYW5kCiAgICA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoYXQgdHlwZSBvZiBvYmplY3QgaXMgbm90IHN1cHBvcnRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBgYGZvbGxvd193cmFwcGVkYGAgcGFyYW1ldGVyLiBQYXNzIGBgRmFsc2VgYCB0byBnZXQgYSBzaWduYXR1cmUgb2YKKyAgICAgIGBgY2FsbGFibGVgYCBzcGVjaWZpY2FsbHkgKGBgY2FsbGFibGUuX193cmFwcGVkX19gYCB3aWxsIG5vdCBiZSB1c2VkIHRvCisgICAgICB1bndyYXAgZGVjb3JhdGVkIGNhbGxhYmxlcy4pCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBTb21lIGNhbGxhYmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50YXRpb25zIG9mCkBAIC00NzMsNiArNTUzLDkgQEAKICAgIFNpZ25hdHVyZSBvYmplY3RzIGFyZSAqaW1tdXRhYmxlKi4gIFVzZSA6bWV0aDpgU2lnbmF0dXJlLnJlcGxhY2VgIHRvIG1ha2UgYQogICAgbW9kaWZpZWQgY29weS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFNpZ25hdHVyZSBvYmplY3RzIGFyZSBwaWNrbGFibGUgYW5kIGhhc2hhYmxlLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUuZW1wdHkKIAogICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KQEAgLTUxNywxMiArNjAwLDMwIEBACiAgICAgICAgICA+Pj4gc3RyKG5ld19zaWcpCiAgICAgICAgICAiKGEsIGIpIC0+ICduZXcgcmV0dXJuIGFubm8nIgogCisgICAuLiBjbGFzc21ldGhvZDo6IFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKG9iaiwgXCosIGZvbGxvd193cmFwcGVkPVRydWUpCisKKyAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgKG9yIGl0cyBzdWJjbGFzcykgb2JqZWN0IGZvciBhIGdpdmVuIGNhbGxhYmxlCisgICAgICAgYGBvYmpgYC4gIFBhc3MgYGBmb2xsb3dfd3JhcHBlZD1GYWxzZWBgIHRvIGdldCBhIHNpZ25hdHVyZSBvZiBgYG9iamBgCisgICAgICAgd2l0aG91dCB1bndyYXBwaW5nIGl0cyBgYF9fd3JhcHBlZF9fYGAgY2hhaW4uCisKKyAgICAgICBUaGlzIG1ldGhvZCBzaW1wbGlmaWVzIHN1YmNsYXNzaW5nIG9mIDpjbGFzczpgU2lnbmF0dXJlYDo6CisKKyAgICAgICAgIGNsYXNzIE15U2lnbmF0dXJlKFNpZ25hdHVyZSk6CisgICAgICAgICAgICAgcGFzcworICAgICAgICAgc2lnID0gTXlTaWduYXR1cmUuZnJvbV9jYWxsYWJsZShtaW4pCisgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzaWcsIE15U2lnbmF0dXJlKQorCisgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogLi4gY2xhc3M6OiBQYXJhbWV0ZXIobmFtZSwga2luZCwgXCosIGRlZmF1bHQ9UGFyYW1ldGVyLmVtcHR5LCBhbm5vdGF0aW9uPVBhcmFtZXRlci5lbXB0eSkKIAogICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAogICAgeW91IGNhbiB1c2UgOm1ldGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlIHBpY2tsYWJsZSBhbmQgaGFzaGFibGUuCisKICAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5lbXB0eQogCiAgICAgICBBIHNwZWNpYWwgY2xhc3MtbGV2ZWwgbWFya2VyIHRvIHNwZWNpZnkgYWJzZW5jZSBvZiBkZWZhdWx0IHZhbHVlcyBhbmQKQEAgLTYzOSwyNyArNzQwLDggQEAKIAogICAgICAgICAgQXJndW1lbnRzIGZvciB3aGljaCA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yCiAgICAgICAgICA6bWV0aDpgU2lnbmF0dXJlLmJpbmRfcGFydGlhbGAgcmVsaWVkIG9uIGEgZGVmYXVsdCB2YWx1ZSBhcmUgc2tpcHBlZC4KLSAgICAgICAgIEhvd2V2ZXIsIGlmIG5lZWRlZCwgaXQgaXMgZWFzeSB0byBpbmNsdWRlIHRoZW0uCi0KLSAgICAgIDo6Ci0KLSAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0xMCk6Ci0gICAgICAgIC4uLiAgICAgcGFzcwotCi0gICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQotICAgICAgICA+Pj4gYmEgPSBzaWcuYmluZCg1KQotCi0gICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKLSAgICAgICAgKCg1LCksIHt9KQotCi0gICAgICAgID4+PiBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCk6Ci0gICAgICAgIC4uLiAgICAgaWYgKHBhcmFtLm5hbWUgbm90IGluIGJhLmFyZ3VtZW50cwotICAgICAgICAuLi4gICAgICAgICAgICAgYW5kIHBhcmFtLmRlZmF1bHQgaXMgbm90IHBhcmFtLmVtcHR5KToKLSAgICAgICAgLi4uICAgICAgICAgYmEuYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gcGFyYW0uZGVmYXVsdAotCi0gICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKLSAgICAgICAgKCg1LCAxMCksIHt9KQotCisgICAgICAgICBIb3dldmVyLCBpZiBuZWVkZWQsIHVzZSA6bWV0aDpgQm91bmRBcmd1bWVudHMuYXBwbHlfZGVmYXVsdHNgIHRvIGFkZAorICAgICAgICAgdGhlbS4KIAogICAgLi4gYXR0cmlidXRlOjogQm91bmRBcmd1bWVudHMuYXJncwogCkBAIC02NzUsNiArNzU3LDI2IEBACiAKICAgICAgIEEgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgOmNsYXNzOmBTaWduYXR1cmVgIG9iamVjdC4KIAorICAgLi4gbWV0aG9kOjogQm91bmRBcmd1bWVudHMuYXBwbHlfZGVmYXVsdHMoKQorCisgICAgICBTZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIG1pc3NpbmcgYXJndW1lbnRzLgorCisgICAgICBGb3IgdmFyaWFibGUtcG9zaXRpb25hbCBhcmd1bWVudHMgKGBgKmFyZ3NgYCkgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgIGVtcHR5IHR1cGxlLgorCisgICAgICBGb3IgdmFyaWFibGUta2V5d29yZCBhcmd1bWVudHMgKGBgKiprd2FyZ3NgYCkgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgIGVtcHR5IGRpY3QuCisKKyAgICAgIDo6CisKKyAgICAgICAgPj4+IGRlZiBmb28oYSwgYj0naGFtJywgKmFyZ3MpOiBwYXNzCisgICAgICAgID4+PiBiYSA9IGluc3BlY3Quc2lnbmF0dXJlKGZvbykuYmluZCgnc3BhbScpCisgICAgICAgID4+PiBiYS5hcHBseV9kZWZhdWx0cygpCisgICAgICAgID4+PiBiYS5hcmd1bWVudHMKKyAgICAgICAgT3JkZXJlZERpY3QoWygnYScsICdzcGFtJyksICgnYicsICdoYW0nKSwgKCdhcmdzJywgKCkpXSkKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKICAgIFRoZSA6YXR0cjpgYXJnc2AgYW5kIDphdHRyOmBrd2FyZ3NgIHByb3BlcnRpZXMgY2FuIGJlIHVzZWQgdG8gaW52b2tlCiAgICBmdW5jdGlvbnM6OgogCkBAIC03MTksOCArODIxLDEwIEBACiAgICAqbiogZWxlbWVudHMgbGlzdGVkIGluICphcmdzKi4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMAotICAgICAgVXNlIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AgaW5zdGVhZCwgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQKLSAgICAgIGtleXdvcmQtb25seSBhcmd1bWVudHMgYW5kIGFubm90YXRpb25zLgorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmVtb3ZlZAorICAgICAgaW4gUHl0aG9uIDMuNi4KIAogCiAuLiBmdW5jdGlvbjo6IGdldGZ1bGxhcmdzcGVjKGZ1bmMpCkBAIC03NDEsMTUgKzg0NSwxNiBAQAogCiAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCiAKLSAgIC4uIG5vdGU6OgotICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YAotICAgICAgaW50ZXJmYWNlLCB3aGljaCBwcm92aWRlcyBhIGJldHRlciB3YXkgb2YgaW50cm9zcGVjdGluZyBmdW5jdGlvbnMuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBiYXNlZCBvbiA6ZnVuYzpgc2lnbmF0dXJlYCwgYnV0IHN0aWxsIGlnbm9yZXMKICAgICAgIGBgX193cmFwcGVkX19gYCBhdHRyaWJ1dGVzIGFuZCBpbmNsdWRlcyB0aGUgYWxyZWFkeSBib3VuZCBmaXJzdAogICAgICAgcGFyYW1ldGVyIGluIHRoZSBzaWduYXR1cmUgb3V0cHV0IGZvciBib3VuZCBtZXRob2RzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCisgICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGFyZ3ZhbHVlcyhmcmFtZSkKIApAQCAtNzU5LDYgKzg2NCwxMSBAQAogICAgYXJlIHRoZSBuYW1lcyBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqbG9jYWxzKiBpcyB0aGUKICAgIGxvY2FscyBkaWN0aW9uYXJ5IG9mIHRoZSBnaXZlbiBmcmFtZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisKIAogLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9uc1ssIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlLCBmb3JtYXRyZXR1cm5zLCBmb3JtYXRhbm5vdGF0aW9uc11dKQogCkBAIC03ODEsNiArODkxLDExIEBACiAgICA+Pj4gZm9ybWF0YXJnc3BlYygqZ2V0ZnVsbGFyZ3NwZWMoZikpCiAgICAnKGE6IGludCwgYjogZmxvYXQpJwogCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOmZ1bmM6YHNpZ25hdHVyZWAgYW5kCisgICAgICA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YCwgd2hpY2ggcHJvdmlkZSBhCisgICAgICBiZXR0ZXIgaW50cm9zcGVjdGluZyBBUEkgZm9yIGNhbGxhYmxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3ZhbHVlcyhhcmdzWywgdmFyYXJncywgdmFya3csIGxvY2FscywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWVdKQogCkBAIC03ODgsNiArOTAzLDExIEBACiAgICA6ZnVuYzpgZ2V0YXJndmFsdWVzYC4gIFRoZSBmb3JtYXRcKiBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsCiAgICBmb3JtYXR0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNQorICAgICAgVXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQorICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRtcm8oY2xzKQogCkBAIC04MjIsOCArOTQyLDggQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIG5vdGU6OgotICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIGluc3RlYWQuCisgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICBVc2UgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBhbmQgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRjbG9zdXJldmFycyhmdW5jKQpAQCAtODY0LDExICs5ODQsMTcgQEAKIFRoZSBpbnRlcnByZXRlciBzdGFjawogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoZW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgcmV0dXJuICJmcmFtZSByZWNvcmRzLCIgZWFjaCByZWNvcmQgaXMgYSB0dXBsZSBvZgotc2l4IGl0ZW1zOiB0aGUgZnJhbWUgb2JqZWN0LCB0aGUgZmlsZW5hbWUsIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgY3VycmVudCBsaW5lLAorV2hlbiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gImZyYW1lIHJlY29yZHMsIiBlYWNoIHJlY29yZCBpcyBhCis6dGVybTpgbmFtZWQgdHVwbGVgCitgYEZyYW1lSW5mbyhmcmFtZSwgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgpYGAuCitUaGUgdHVwbGUgY29udGFpbnMgdGhlIGZyYW1lIG9iamVjdCwgdGhlIGZpbGVuYW1lLCB0aGUgbGluZSBudW1iZXIgb2YgdGhlCitjdXJyZW50IGxpbmUsCiB0aGUgZnVuY3Rpb24gbmFtZSwgYSBsaXN0IG9mIGxpbmVzIG9mIGNvbnRleHQgZnJvbSB0aGUgc291cmNlIGNvZGUsIGFuZCB0aGUKIGluZGV4IG9mIHRoZSBjdXJyZW50IGxpbmUgd2l0aGluIHRoYXQgbGlzdC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFJldHVybiBhIG5hbWVkIHR1cGxlIGluc3RlYWQgb2YgYSB0dXBsZS4KKwogLi4gbm90ZTo6CiAKICAgIEtlZXBpbmcgcmVmZXJlbmNlcyB0byBmcmFtZSBvYmplY3RzLCBhcyBmb3VuZCBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgZnJhbWUKQEAgLTkxMyw2ICsxMDM5LDExIEBACiAgICByZXR1cm5lZCBsaXN0IHJlcHJlc2VudHMgKmZyYW1lKjsgdGhlIGxhc3QgZW50cnkgcmVwcmVzZW50cyB0aGUgb3V0ZXJtb3N0IGNhbGwKICAgIG9uICpmcmFtZSoncyBzdGFjay4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEEgbGlzdCBvZiA6dGVybTpgbmFtZWQgdHVwbGVzIDxuYW1lZCB0dXBsZT5gCisgICAgICBgYEZyYW1lSW5mbyhmcmFtZSwgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgpYGAKKyAgICAgIGlzIHJldHVybmVkLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0aW5uZXJmcmFtZXModHJhY2ViYWNrLCBjb250ZXh0PTEpCiAKQEAgLTkyMSw2ICsxMDUyLDExIEBACiAgICBsaXN0IHJlcHJlc2VudHMgKnRyYWNlYmFjayo7IHRoZSBsYXN0IGVudHJ5IHJlcHJlc2VudHMgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXMKICAgIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEEgbGlzdCBvZiA6dGVybTpgbmFtZWQgdHVwbGVzIDxuYW1lZCB0dXBsZT5gCisgICAgICBgYEZyYW1lSW5mbyhmcmFtZSwgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgpYGAKKyAgICAgIGlzIHJldHVybmVkLgorCiAKIC4uIGZ1bmN0aW9uOjogY3VycmVudGZyYW1lKCkKIApAQCAtOTQwLDYgKzEwNzYsMTEgQEAKICAgIHJldHVybmVkIGxpc3QgcmVwcmVzZW50cyB0aGUgY2FsbGVyOyB0aGUgbGFzdCBlbnRyeSByZXByZXNlbnRzIHRoZSBvdXRlcm1vc3QKICAgIGNhbGwgb24gdGhlIHN0YWNrLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQSBsaXN0IG9mIDp0ZXJtOmBuYW1lZCB0dXBsZXMgPG5hbWVkIHR1cGxlPmAKKyAgICAgIGBgRnJhbWVJbmZvKGZyYW1lLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jdGlvbiwgY29kZV9jb250ZXh0LCBpbmRleClgYAorICAgICAgaXMgcmV0dXJuZWQuCisKIAogLi4gZnVuY3Rpb246OiB0cmFjZShjb250ZXh0PTEpCiAKQEAgLTk0OCw2ICsxMDg5LDExIEBACiAgICBlbnRyeSBpbiB0aGUgbGlzdCByZXByZXNlbnRzIHRoZSBjYWxsZXI7IHRoZSBsYXN0IGVudHJ5IHJlcHJlc2VudHMgd2hlcmUgdGhlCiAgICBleGNlcHRpb24gd2FzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEEgbGlzdCBvZiA6dGVybTpgbmFtZWQgdHVwbGVzIDxuYW1lZCB0dXBsZT5gCisgICAgICBgYEZyYW1lSW5mbyhmcmFtZSwgZmlsZW5hbWUsIGxpbmVubywgZnVuY3Rpb24sIGNvZGVfY29udGV4dCwgaW5kZXgpYGAKKyAgICAgIGlzIHJldHVybmVkLgorCiAKIEZldGNoaW5nIGF0dHJpYnV0ZXMgc3RhdGljYWxseQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDA3LDggKzExNTMsOCBAQAogICAgICAgICAgICBwYXNzCiAKIAotQ3VycmVudCBTdGF0ZSBvZiBhIEdlbmVyYXRvcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ3VycmVudCBTdGF0ZSBvZiBHZW5lcmF0b3JzIGFuZCBDb3JvdXRpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2hlbiBpbXBsZW1lbnRpbmcgY29yb3V0aW5lIHNjaGVkdWxlcnMgYW5kIGZvciBvdGhlciBhZHZhbmNlZCB1c2VzIG9mCiBnZW5lcmF0b3JzLCBpdCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnZW5lcmF0b3IgaXMgY3VycmVudGx5CkBAIC0xMDI4LDYgKzExNzQsMjEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGZ1bmN0aW9uOjogZ2V0Y29yb3V0aW5lc3RhdGUoY29yb3V0aW5lKQorCisgICBHZXQgY3VycmVudCBzdGF0ZSBvZiBhIGNvcm91dGluZSBvYmplY3QuICBUaGUgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUKKyAgIHVzZWQgd2l0aCBjb3JvdXRpbmUgb2JqZWN0cyBjcmVhdGVkIGJ5IDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9ucywgYnV0CisgICB3aWxsIGFjY2VwdCBhbnkgY29yb3V0aW5lLWxpa2Ugb2JqZWN0IHRoYXQgaGFzIGBgY3JfcnVubmluZ2BgIGFuZAorICAgYGBjcl9mcmFtZWBgIGF0dHJpYnV0ZXMuCisKKyAgIFBvc3NpYmxlIHN0YXRlcyBhcmU6CisgICAgKiBDT1JPX0NSRUFURUQ6IFdhaXRpbmcgdG8gc3RhcnQgZXhlY3V0aW9uLgorICAgICogQ09ST19SVU5OSU5HOiBDdXJyZW50bHkgYmVpbmcgZXhlY3V0ZWQgYnkgdGhlIGludGVycHJldGVyLgorICAgICogQ09ST19TVVNQRU5ERUQ6IEN1cnJlbnRseSBzdXNwZW5kZWQgYXQgYW4gYXdhaXQgZXhwcmVzc2lvbi4KKyAgICAqIENPUk9fQ0xPU0VEOiBFeGVjdXRpb24gaGFzIGNvbXBsZXRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIFRoZSBjdXJyZW50IGludGVybmFsIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgY2FuIGFsc28gYmUgcXVlcmllZC4gVGhpcyBpcwogbW9zdGx5IHVzZWZ1bCBmb3IgdGVzdGluZyBwdXJwb3NlcywgdG8gZW5zdXJlIHRoYXQgaW50ZXJuYWwgc3RhdGUgaXMgYmVpbmcKIHVwZGF0ZWQgYXMgZXhwZWN0ZWQ6CkBAIC0xMDUyLDYgKzEyMTMsMTMgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIGZ1bmN0aW9uOjogZ2V0Y29yb3V0aW5lbG9jYWxzKGNvcm91dGluZSkKKworICAgVGhpcyBmdW5jdGlvbiBpcyBhbmFsb2dvdXMgdG8gOmZ1bmM6YH5pbnNwZWN0LmdldGdlbmVyYXRvcmxvY2Fsc2AsIGJ1dAorICAgd29ya3MgZm9yIGNvcm91dGluZSBvYmplY3RzIGNyZWF0ZWQgYnkgOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogCiAuLiBfaW5zcGVjdC1tb2R1bGUtY2xpOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pby5yc3QgYi9Eb2MvbGlicmFyeS9pby5yc3QKaW5kZXggOWIxMjA0NS4uNDhmZDIyNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lvLnJzdApAQCAtMzM5LDggKzMzOSwxMSBAQAogICAgICAgaWYgKnNpemUqIGlzIG5vdCBzcGVjaWZpZWQpLiAgVGhlIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uIGlzbid0IGNoYW5nZWQuCiAgICAgICBUaGlzIHJlc2l6aW5nIGNhbiBleHRlbmQgb3IgcmVkdWNlIHRoZSBjdXJyZW50IGZpbGUgc2l6ZS4gIEluIGNhc2Ugb2YKICAgICAgIGV4dGVuc2lvbiwgdGhlIGNvbnRlbnRzIG9mIHRoZSBuZXcgZmlsZSBhcmVhIGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0KLSAgICAgIChvbiBtb3N0IHN5c3RlbXMsIGFkZGl0aW9uYWwgYnl0ZXMgYXJlIHplcm8tZmlsbGVkLCBvbiBXaW5kb3dzIHRoZXkncmUKLSAgICAgIHVuZGV0ZXJtaW5lZCkuICBUaGUgbmV3IGZpbGUgc2l6ZSBpcyByZXR1cm5lZC4KKyAgICAgIChvbiBtb3N0IHN5c3RlbXMsIGFkZGl0aW9uYWwgYnl0ZXMgYXJlIHplcm8tZmlsbGVkKS4gIFRoZSBuZXcgZmlsZSBzaXplCisgICAgICBpcyByZXR1cm5lZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFdpbmRvd3Mgd2lsbCBub3cgemVyby1maWxsIGZpbGVzIHdoZW4gZXh0ZW5kaW5nLgogCiAgICAuLiBtZXRob2Q6OiB3cml0YWJsZSgpCiAKQEAgLTM5MSw4ICszOTQsOCBAQAogICAgLi4gbWV0aG9kOjogcmVhZGludG8oYikKIAogICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gOmNsYXNzOmBieXRlYXJyYXlgICpiKiBhbmQgcmV0dXJuIHRoZQotICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBJZiB0aGUgb2JqZWN0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIGFuZCBubwotICAgICAgYnl0ZXMgYXJlIGF2YWlsYWJsZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAgICBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIElmIHRoZSBvYmplY3QgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgYW5kIG5vIGJ5dGVzCisgICAgICBhcmUgYXZhaWxhYmxlLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KIAogICAgLi4gbWV0aG9kOjogd3JpdGUoYikKIApAQCAtNDY1LDkgKzQ2OCwxMCBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkMShzaXplPS0xKQogCi0gICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKnNpemUqIGJ5dGVzLCB3aXRoIGF0IG1vc3Qgb25lIGNhbGwgdG8gdGhlIHVuZGVybHlpbmcKLSAgICAgIHJhdyBzdHJlYW0ncyA6bWV0aDpgflJhd0lPQmFzZS5yZWFkYCBtZXRob2QuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgeW91Ci0gICAgICBhcmUgaW1wbGVtZW50aW5nIHlvdXIgb3duIGJ1ZmZlcmluZyBvbiB0b3Agb2YgYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYAorICAgICAgUmVhZCBhbmQgcmV0dXJuIHVwIHRvICpzaXplKiBieXRlcywgd2l0aCBhdCBtb3N0IG9uZSBjYWxsIHRvIHRoZQorICAgICAgdW5kZXJseWluZyByYXcgc3RyZWFtJ3MgOm1ldGg6YH5SYXdJT0Jhc2UucmVhZGAgKG9yCisgICAgICA6bWV0aDpgflJhd0lPQmFzZS5yZWFkaW50b2ApIG1ldGhvZC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgYXJlCisgICAgICBpbXBsZW1lbnRpbmcgeW91ciBvd24gYnVmZmVyaW5nIG9uIHRvcCBvZiBhIDpjbGFzczpgQnVmZmVyZWRJT0Jhc2VgCiAgICAgICBvYmplY3QuCiAKICAgIC4uIG1ldGhvZDo6IHJlYWRpbnRvKGIpCkBAIC00NzgsOCArNDgyLDE5IEBACiAgICAgICBMaWtlIDptZXRoOmByZWFkYCwgbXVsdGlwbGUgcmVhZHMgbWF5IGJlIGlzc3VlZCB0byB0aGUgdW5kZXJseWluZyByYXcKICAgICAgIHN0cmVhbSwgdW5sZXNzIHRoZSBsYXR0ZXIgaXMgaW50ZXJhY3RpdmUuCiAKLSAgICAgIEEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBpbgotICAgICAgbm9uIGJsb2NraW5nLW1vZGUsIGFuZCBoYXMgbm8gZGF0YSBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC4KKyAgICAgIEEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBpbiBub24KKyAgICAgIGJsb2NraW5nLW1vZGUsIGFuZCBoYXMgbm8gZGF0YSBhdmFpbGFibGUgYXQgdGhlIG1vbWVudC4KKworICAgLi4gbWV0aG9kOjogcmVhZGludG8xKGIpCisKKyAgICAgIFJlYWQgdXAgdG8gYGBsZW4oYilgYCBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiosIHVzaW5nIGF0IG1vc3Qgb25lIGNhbGwgdG8KKyAgICAgIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0ncyA6bWV0aDpgflJhd0lPQmFzZS5yZWFkYCAob3IKKyAgICAgIDptZXRoOmB+UmF3SU9CYXNlLnJlYWRpbnRvYCkgbWV0aG9kLiBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLgorCisgICAgICBBIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gaXMgaW4gbm9uCisgICAgICBibG9ja2luZy1tb2RlLCBhbmQgaGFzIG5vIGRhdGEgYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCkBAIC01MDcsOSArNTIyLDEyIEBACiAgICBUaGUgKm5hbWUqIGNhbiBiZSBvbmUgb2YgdHdvIHRoaW5nczoKIAogICAgKiBhIGNoYXJhY3RlciBzdHJpbmcgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgcGF0aCB0byB0aGUKLSAgICAgZmlsZSB3aGljaCB3aWxsIGJlIG9wZW5lZDsKKyAgICAgZmlsZSB3aGljaCB3aWxsIGJlIG9wZW5lZC4gSW4gdGhpcyBjYXNlIGNsb3NlZmQgbXVzdCBiZSBUcnVlICh0aGUgZGVmYXVsdCkKKyAgICAgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkLgogICAgKiBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGFuIGV4aXN0aW5nIE9TLWxldmVsIGZpbGUgZGVzY3JpcHRvcgotICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4KKyAgICAgdG8gd2hpY2ggdGhlIHJlc3VsdGluZyA6Y2xhc3M6YEZpbGVJT2Agb2JqZWN0IHdpbGwgZ2l2ZSBhY2Nlc3MuIFdoZW4gdGhlCisgICAgIEZpbGVJTyBvYmplY3QgaXMgY2xvc2VkIHRoaXMgZmQgd2lsbCBiZSBjbG9zZWQgYXMgd2VsbCwgdW5sZXNzICpjbG9zZWZkKgorICAgICBpcyBzZXQgdG8gYGBGYWxzZWBgLgogCiAgICBUaGUgKm1vZGUqIGNhbiBiZSBgYCdyJ2BgLCBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgZm9yIHJlYWRpbmcKICAgIChkZWZhdWx0KSwgd3JpdGluZywgZXhjbHVzaXZlIGNyZWF0aW9uIG9yIGFwcGVuZGluZy4gVGhlIGZpbGUgd2lsbCBiZQpAQCAtNTk4LDYgKzYxNiwxMSBAQAogCiAgICAgICBJbiA6Y2xhc3M6YEJ5dGVzSU9gLCB0aGlzIGlzIHRoZSBzYW1lIGFzIDptZXRoOmByZWFkYC4KIAorICAgLi4gbWV0aG9kOjogcmVhZGludG8xKCkKKworICAgICAgSW4gOmNsYXNzOmBCeXRlc0lPYCwgdGhpcyBpcyB0aGUgc2FtZSBhcyA6bWV0aDpgcmVhZGludG9gLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gY2xhc3M6OiBCdWZmZXJlZFJlYWRlcihyYXcsIGJ1ZmZlcl9zaXplPURFRkFVTFRfQlVGRkVSX1NJWkUpCiAKQEAgLTgwOCwxMSArODMxLDEzIEBACiAgICBleGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZW5jb2RpbmcgZXJyb3IgKHRoZSBkZWZhdWx0IG9mIGBgTm9uZWBgIGhhcyB0aGUgc2FtZQogICAgZWZmZWN0KSwgb3IgcGFzcyBgYCdpZ25vcmUnYGAgdG8gaWdub3JlIGVycm9ycy4gIChOb3RlIHRoYXQgaWdub3JpbmcgZW5jb2RpbmcKICAgIGVycm9ycyBjYW4gbGVhZCB0byBkYXRhIGxvc3MuKSAgYGAncmVwbGFjZSdgYCBjYXVzZXMgYSByZXBsYWNlbWVudCBtYXJrZXIKLSAgIChzdWNoIGFzIGBgJz8nYGApIHRvIGJlIGluc2VydGVkIHdoZXJlIHRoZXJlIGlzIG1hbGZvcm1lZCBkYXRhLiAgV2hlbgotICAgd3JpdGluZywgYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAgKHJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MIGNoYXJhY3RlcgotICAgcmVmZXJlbmNlKSBvciBgYCdiYWNrc2xhc2hyZXBsYWNlJ2BgIChyZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlCi0gICBzZXF1ZW5jZXMpIGNhbiBiZSB1c2VkLiAgQW55IG90aGVyIGVycm9yIGhhbmRsaW5nIG5hbWUgdGhhdCBoYXMgYmVlbgotICAgcmVnaXN0ZXJlZCB3aXRoIDpmdW5jOmBjb2RlY3MucmVnaXN0ZXJfZXJyb3JgIGlzIGFsc28gdmFsaWQuCisgICAoc3VjaCBhcyBgYCc/J2BgKSB0byBiZSBpbnNlcnRlZCB3aGVyZSB0aGVyZSBpcyBtYWxmb3JtZWQgZGF0YS4KKyAgIGBgJ2JhY2tzbGFzaHJlcGxhY2UnYGAgY2F1c2VzIG1hbGZvcm1lZCBkYXRhIHRvIGJlIHJlcGxhY2VkIGJ5IGEKKyAgIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZS4gIFdoZW4gd3JpdGluZywgYGAneG1sY2hhcnJlZnJlcGxhY2UnYGAKKyAgIChyZXBsYWNlIHdpdGggdGhlIGFwcHJvcHJpYXRlIFhNTCBjaGFyYWN0ZXIgcmVmZXJlbmNlKSAgb3IgYGAnbmFtZXJlcGxhY2UnYGAKKyAgIChyZXBsYWNlIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlIHNlcXVlbmNlcykgY2FuIGJlIHVzZWQuICBBbnkgb3RoZXIgZXJyb3IKKyAgIGhhbmRsaW5nIG5hbWUgdGhhdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGgKKyAgIDpmdW5jOmBjb2RlY3MucmVnaXN0ZXJfZXJyb3JgIGlzIGFsc28gdmFsaWQuCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBpby5UZXh0SU9XcmFwcGVyIGNsYXNzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0IGIvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdAppbmRleCAzMDEwNDhlLi45MGZjYzc0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pcGFkZHJlc3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKQEAgLTE0Niw2ICsxNDYsMjAgQEAKICAgICAgIHRoZSBhcHByb3ByaWF0ZSBsZW5ndGggKG1vc3Qgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLiBUaGlzIGlzIDQgYnl0ZXMKICAgICAgIGZvciBJUHY0IGFuZCAxNiBieXRlcyBmb3IgSVB2Ni4KIAorICAgLi4gYXR0cmlidXRlOjogcmV2ZXJzZV9wb2ludGVyCisKKyAgICAgIFRoZSBuYW1lIG9mIHRoZSByZXZlcnNlIEROUyBQVFIgcmVjb3JkIGZvciB0aGUgSVAgYWRkcmVzcywgZS5nLjo6CisKKyAgICAgICAgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoIjEyNy4wLjAuMSIpLnJldmVyc2VfcG9pbnRlcgorICAgICAgICAgICcxLjAuMC4xMjcuaW4tYWRkci5hcnBhJworICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMjAwMTpkYjg6OjEiKS5yZXZlcnNlX3BvaW50ZXIKKyAgICAgICAgICAnMS4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuOC5iLmQuMC4xLjAuMC4yLmlwNi5hcnBhJworCisgICAgICBUaGlzIGlzIHRoZSBuYW1lIHRoYXQgY291bGQgYmUgdXNlZCBmb3IgcGVyZm9ybWluZyBhIFBUUiBsb29rdXAsIG5vdCB0aGUKKyAgICAgIHJlc29sdmVkIGhvc3RuYW1lIGl0c2VsZi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKICAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAogCiAgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3IgbXVsdGljYXN0IHVzZS4gIFNlZQpAQCAtMjI2LDYgKzI0MCw3IEBACiAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYCBjbGFzczoKIAogICAgLi4gYXR0cmlidXRlOjogcGFja2VkCisgICAuLiBhdHRyaWJ1dGU6OiByZXZlcnNlX3BvaW50ZXIKICAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KICAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdApAQCAtMzc3LDYgKzM5MiwxMiBAQAogICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCwgYmlnLWVuZGlhbi4KICAgICAgIFRoZSBpbnRlcnByZXRhdGlvbiBpcyBzaW1pbGFyIHRvIGFuIGludGVnZXIgKmFkZHJlc3MqLgogCisgICA0LiBBIHR3by10dXBsZSBvZiBhbiBhZGRyZXNzIGRlc2NyaXB0aW9uIGFuZCBhIG5ldG1hc2ssIHdoZXJlIHRoZSBhZGRyZXNzCisgICAgICBkZXNjcmlwdGlvbiBpcyBlaXRoZXIgYSBzdHJpbmcsIGEgMzItYml0cyBpbnRlZ2VyLCBhIDQtYnl0ZXMgcGFja2VkCisgICAgICBpbnRlZ2VyLCBvciBhbiBleGlzdGluZyBJUHY0QWRkcmVzcyBvYmplY3Q7IGFuZCB0aGUgbmV0bWFzayBpcyBlaXRoZXIKKyAgICAgIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoIChlLmcuIGBgMjRgYCkgb3IgYSBzdHJpbmcKKyAgICAgIHJlcHJlc2VudGluZyB0aGUgcHJlZml4IG1hc2sgKGUuZy4gYGAyNTUuMjU1LjI1NS4wYGApLgorCiAgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0CiAgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKICAgIGFuIElQdjQgYWRkcmVzcy4KQEAgLTM4OSw2ICs0MTAsMTAgQEAKICAgIG9iamVjdHMgd2lsbCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBhcmd1bWVudCdzIElQIHZlcnNpb24gaXMKICAgIGluY29tcGF0aWJsZSB0byBgYHNlbGZgYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICAgICBBZGRlZCB0aGUgdHdvLXR1cGxlIGZvcm0gZm9yIHRoZSAqYWRkcmVzcyogY29uc3RydWN0b3IgcGFyYW1ldGVyLgorCiAgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCiAKQEAgLTU1Myw2ICs1NzgsMTEgQEAKICAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDE2LCBiaWctZW5kaWFuLgogICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCiAKKyAgIDQuIEEgdHdvLXR1cGxlIG9mIGFuIGFkZHJlc3MgZGVzY3JpcHRpb24gYW5kIGEgbmV0bWFzaywgd2hlcmUgdGhlIGFkZHJlc3MKKyAgICAgIGRlc2NyaXB0aW9uIGlzIGVpdGhlciBhIHN0cmluZywgYSAxMjgtYml0cyBpbnRlZ2VyLCBhIDE2LWJ5dGVzIHBhY2tlZAorICAgICAgaW50ZWdlciwgb3IgYW4gZXhpc3RpbmcgSVB2NEFkZHJlc3Mgb2JqZWN0OyBhbmQgdGhlIG5ldG1hc2sgaXMgYW4KKyAgICAgIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoLgorCiAgICBBbiA6ZXhjOmBBZGRyZXNzVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY2CiAgICBhZGRyZXNzLiAgQSA6ZXhjOmBOZXRtYXNrVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBtYXNrIGlzIG5vdCB2YWxpZCBmb3IKICAgIGFuIElQdjYgYWRkcmVzcy4KQEAgLTU2MSw2ICs1OTEsMTAgQEAKICAgIHRoZW4gOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgaG9zdCBiaXRzIGFyZSBtYXNrZWQgb3V0CiAgICB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIG5ldHdvcmsgYWRkcmVzcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKworICAgICAgQWRkZWQgdGhlIHR3by10dXBsZSBmb3JtIGZvciB0aGUgKmFkZHJlc3MqIGNvbnN0cnVjdG9yIHBhcmFtZXRlci4KKwogICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgogICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgogICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCBmNDg5NTM1Li44Yzc1OTJkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTg3LDEwICs4NywxNSBAQAogCiAuLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkKIAotICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMuIEVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQotICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgb3IgOmNsYXNzOmB+ZnJhY3Rpb25zLkZyYWN0aW9uYC4KLSAgICBJZiB0aGUgb3B0aW9uYWwgKmZ1bmMqIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiB0d28KLSAgICBhcmd1bWVudHMgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFkZGl0aW9uLgorICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMsIG9yIGFjY3VtdWxhdGVkCisgICAgcmVzdWx0cyBvZiBvdGhlciBiaW5hcnkgZnVuY3Rpb25zIChzcGVjaWZpZWQgdmlhIHRoZSBvcHRpb25hbAorICAgICpmdW5jKiBhcmd1bWVudCkuICBJZiAqZnVuYyogaXMgc3VwcGxpZWQsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCisgICAgb2YgdHdvIGFyZ3VtZW50cy4gRWxlbWVudHMgb2YgdGhlIGlucHV0ICppdGVyYWJsZSogbWF5IGJlIGFueSB0eXBlCisgICAgdGhhdCBjYW4gYmUgYWNjZXB0ZWQgYXMgYXJndW1lbnRzIHRvICpmdW5jKi4gKEZvciBleGFtcGxlLCB3aXRoCisgICAgdGhlIGRlZmF1bHQgb3BlcmF0aW9uIG9mIGFkZGl0aW9uLCBlbGVtZW50cyBtYXkgYmUgYW55IGFkZGFibGUKKyAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIG9yCisgICAgOmNsYXNzOmB+ZnJhY3Rpb25zLkZyYWN0aW9uYC4pIElmIHRoZSBpbnB1dCBpdGVyYWJsZSBpcyBlbXB0eSwgdGhlCisgICAgb3V0cHV0IGl0ZXJhYmxlIHdpbGwgYWxzbyBiZSBlbXB0eS4KIAogICAgIEVxdWl2YWxlbnQgdG86OgogCkBAIC05OSw3ICsxMDQsMTAgQEAKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1CiAgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0sIG9wZXJhdG9yLm11bCkgLS0+IDEgMiA2IDI0IDEyMAogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRvdGFsID0gbmV4dChpdCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgeWllbGQgdG90YWwKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGl0OgogICAgICAgICAgICAgICAgIHRvdGFsID0gZnVuYyh0b3RhbCwgZWxlbWVudCkKQEAgLTQwMCw3ICs0MDgsMTAgQEAKICAgICAgICAgICBkZWYgX2dyb3VwZXIoc2VsZiwgdGd0a2V5KToKICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5jdXJya2V5ID09IHRndGtleToKICAgICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuY3VycnZhbHVlCi0gICAgICAgICAgICAgICAgICBzZWxmLmN1cnJ2YWx1ZSA9IG5leHQoc2VsZi5pdCkgICAgIyBFeGl0IG9uIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmN1cnJ2YWx1ZSA9IG5leHQoc2VsZi5pdCkKKyAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgc2VsZi5jdXJya2V5ID0gc2VsZi5rZXlmdW5jKHNlbGYuY3VycnZhbHVlKQogCiAKQEAgLTQyNCw3ICs0MzUsMTAgQEAKICAgICAgICAgICAjIGlzbGljZSgnQUJDREVGRycsIDAsIE5vbmUsIDIpIC0tPiBBIEMgRSBHCiAgICAgICAgICAgcyA9IHNsaWNlKCphcmdzKQogICAgICAgICAgIGl0ID0gaXRlcihyYW5nZShzLnN0YXJ0IG9yIDAsIHMuc3RvcCBvciBzeXMubWF4c2l6ZSwgcy5zdGVwIG9yIDEpKQotICAgICAgICAgIG5leHRpID0gbmV4dChpdCkKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIG5leHRpID0gbmV4dChpdCkKKyAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgZm9yIGksIGVsZW1lbnQgaW4gZW51bWVyYXRlKGl0ZXJhYmxlKToKICAgICAgICAgICAgICAgaWYgaSA9PSBuZXh0aToKICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW1lbnQKQEAgLTU4Miw3ICs1OTYsMTAgQEAKICAgICAgICAgICAgIGRlZiBnZW4obXlkZXF1ZSk6CiAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG15ZGVxdWU6ICAgICAgICAgICAgICMgd2hlbiB0aGUgbG9jYWwgZGVxdWUgaXMgZW1wdHkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbCA9IG5leHQoaXQpICAgICAgICMgZmV0Y2ggYSBuZXcgdmFsdWUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsID0gbmV4dChpdCkgICAjIGZldGNoIGEgbmV3IHZhbHVlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBkZXF1ZXM6ICAgICAgICAjIGxvYWQgaXQgdG8gYWxsIHRoZSBkZXF1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZChuZXd2YWwpCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIG15ZGVxdWUucG9wbGVmdCgpCkBAIC02NTcsNiArNjc0LDExIEBACiAgICAgICAgIlJldHVybiBmdW5jdGlvbigwKSwgZnVuY3Rpb24oMSksIC4uLiIKICAgICAgICByZXR1cm4gbWFwKGZ1bmN0aW9uLCBjb3VudChzdGFydCkpCiAKKyAgIGRlZiB0YWlsKG4sIGl0ZXJhYmxlKToKKyAgICAgICAiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGxhc3QgbiBpdGVtcyIKKyAgICAgICAjIHRhaWwoMywgJ0FCQ0RFRkcnKSAtLT4gRSBGIEcKKyAgICAgICByZXR1cm4gaXRlcihjb2xsZWN0aW9ucy5kZXF1ZShpdGVyYWJsZSwgbWF4bGVuPW4pKQorCiAgICBkZWYgY29uc3VtZShpdGVyYXRvciwgbik6CiAgICAgICAgIkFkdmFuY2UgdGhlIGl0ZXJhdG9yIG4tc3RlcHMgYWhlYWQuIElmIG4gaXMgbm9uZSwgY29uc3VtZSBlbnRpcmVseS4iCiAgICAgICAgIyBVc2UgZnVuY3Rpb25zIHRoYXQgY29uc3VtZSBpdGVyYXRvcnMgYXQgQyBzcGVlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2pzb24ucnN0IGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKaW5kZXggNmY1ZjhiMS4uNDliYjA5MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvanNvbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKQEAgLTEwNiw2ICsxMDYsOCBAQAogICAgICQgZWNobyAnezEuMjozLjR9JyB8IHB5dGhvbiAtbSBqc29uLnRvb2wKICAgICBFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzOiBsaW5lIDEgY29sdW1uIDIgKGNoYXIgMSkKIAorU2VlIDpyZWY6YGpzb24tY29tbWFuZGxpbmVgIGZvciBkZXRhaWxlZCBkb2N1bWVudGF0aW9uLgorCiAuLiBoaWdobGlnaHQ6OiBweXRob24zCiAKIC4uIG5vdGU6OgpAQCAtMjQ4LDcgKzI1MCw3IEBACiAgICB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3Igb2YgdGhlIGNsYXNzLgogCiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCiAuLiBmdW5jdGlvbjo6IGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKIApAQCAtMjU5LDcgKzI2MSw3IEBACiAgICAqZW5jb2RpbmcqIHdoaWNoIGlzIGlnbm9yZWQgYW5kIGRlcHJlY2F0ZWQuCiAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKIEVuY29kZXJzIGFuZCBEZWNvZGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMzIsMTMgKzMzNCwxNiBAQAogICAgYGAnXG4nYGAsIGBgJ1xyJ2BgIGFuZCBgYCdcMCdgYC4KIAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAogICAgLi4gbWV0aG9kOjogZGVjb2RlKHMpCiAKICAgICAgIFJldHVybiB0aGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UKICAgICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KQogCisgICAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZSBnaXZlbiBKU09OIGRvY3VtZW50IGlzIG5vdAorICAgICAgdmFsaWQuCisKICAgIC4uIG1ldGhvZDo6IHJhd19kZWNvZGUocykKIAogICAgICAgRGVjb2RlIGEgSlNPTiBkb2N1bWVudCBmcm9tICpzKiAoYSA6Y2xhc3M6YHN0cmAgYmVnaW5uaW5nIHdpdGggYQpAQCAtNDY3LDYgKzQ3MiwzNiBAQAogICAgICAgICAgICAgICAgIG15c29ja2V0LndyaXRlKGNodW5rKQogCiAKK0V4Y2VwdGlvbnMKKy0tLS0tLS0tLS0KKworLi4gZXhjZXB0aW9uOjogSlNPTkRlY29kZUVycm9yKG1zZywgZG9jLCBwb3MsIGVuZD1Ob25lKQorCisgICAgU3ViY2xhc3Mgb2YgOmV4YzpgVmFsdWVFcnJvcmAgd2l0aCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICAgIFRoZSB1bmZvcm1hdHRlZCBlcnJvciBtZXNzYWdlLgorCisgICAgLi4gYXR0cmlidXRlOjogZG9jCisKKyAgICAgICAgVGhlIEpTT04gZG9jdW1lbnQgYmVpbmcgcGFyc2VkLgorCisgICAgLi4gYXR0cmlidXRlOjogcG9zCisKKyAgICAgICAgVGhlIHN0YXJ0IGluZGV4IG9mICpkb2MqIHdoZXJlIHBhcnNpbmcgZmFpbGVkLgorCisgICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgICAgVGhlIGxpbmUgY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNvbG5vCisKKyAgICAgICAgVGhlIGNvbHVtbiBjb3JyZXNwb25kaW5nIHRvICpwb3MqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiBTdGFuZGFyZCBDb21wbGlhbmNlIGFuZCBJbnRlcm9wZXJhYmlsaXR5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTU4OCw2ICs2MjMsNjggQEAKIHdoZW4gc2VyaWFsaXppbmcgaW5zdGFuY2VzIG9mICJleG90aWMiIG51bWVyaWNhbCB0eXBlcyBzdWNoIGFzCiA6Y2xhc3M6YGRlY2ltYWwuRGVjaW1hbGAuCiAKKy4uIGhpZ2hsaWdodDo6IGJhc2gKKy4uIG1vZHVsZTo6IGpzb24udG9vbAorCisuLiBfanNvbi1jb21tYW5kbGluZToKKworQ29tbWFuZCBMaW5lIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpganNvbi50b29sYCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB2YWxpZGF0ZQorYW5kIHByZXR0eS1wcmludCBKU09OIG9iamVjdHMuCisKK0lmIHRoZSBvcHRpb25hbCBgYGluZmlsZWBgIGFuZCBgYG91dGZpbGVgYCBhcmd1bWVudHMgYXJlIG5vdAorc3BlY2lmaWVkLCA6YXR0cjpgc3lzLnN0ZGluYCBhbmQgOmF0dHI6YHN5cy5zdGRvdXRgIHdpbGwgYmUgdXNlZCByZXNwZWN0aXZlbHk6OgorCisgICAgJCBlY2hvICd7Impzb24iOiAib2JqIn0nIHwgcHl0aG9uIC1tIGpzb24udG9vbAorICAgIHsKKyAgICAgICAgImpzb24iOiAib2JqIgorICAgIH0KKyAgICAkIGVjaG8gJ3sxLjI6My40fScgfCBweXRob24gLW0ganNvbi50b29sCisgICAgRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlczogbGluZSAxIGNvbHVtbiAyIChjaGFyIDEpCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgb3V0cHV0IGlzIG5vdyBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgaW5wdXQuIFVzZSB0aGUKKyAgIDpvcHRpb246YC0tc29ydC1rZXlzYCBvcHRpb24gdG8gc29ydCB0aGUgb3V0cHV0IG9mIGRpY3Rpb25hcmllcworICAgYWxwaGFiZXRpY2FsbHkgYnkga2V5LgorCitDb21tYW5kIGxpbmUgb3B0aW9ucworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gY21kb3B0aW9uOjogaW5maWxlCisKKyAgIFRoZSBKU09OIGZpbGUgdG8gYmUgdmFsaWRhdGVkIG9yIHByZXR0eS1wcmludGVkOjoKKworICAgICAgJCBweXRob24gLW0ganNvbi50b29sIG1wX2ZpbG1zLmpzb24KKyAgICAgIFsKKyAgICAgICAgICB7CisgICAgICAgICAgICAgICJ0aXRsZSI6ICJBbmQgTm93IGZvciBTb21ldGhpbmcgQ29tcGxldGVseSBEaWZmZXJlbnQiLAorICAgICAgICAgICAgICAieWVhciI6IDE5NzEKKyAgICAgICAgICB9LAorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgInRpdGxlIjogIk1vbnR5IFB5dGhvbiBhbmQgdGhlIEhvbHkgR3JhaWwiLAorICAgICAgICAgICAgICAieWVhciI6IDE5NzUKKyAgICAgICAgICB9CisgICAgICBdCisKKyAgIElmICppbmZpbGUqIGlzIG5vdCBzcGVjaWZpZWQsIHJlYWQgZnJvbSA6YXR0cjpgc3lzLnN0ZGluYC4KKworLi4gY21kb3B0aW9uOjogb3V0ZmlsZQorCisgICBXcml0ZSB0aGUgb3V0cHV0IG9mIHRoZSAqaW5maWxlKiB0byB0aGUgZ2l2ZW4gKm91dGZpbGUqLiBPdGhlcndpc2UsIHdyaXRlIGl0CisgICB0byA6YXR0cjpgc3lzLnN0ZG91dGAuCisKKy4uIGNtZG9wdGlvbjo6IC0tc29ydC1rZXlzCisKKyAgIFNvcnQgdGhlIG91dHB1dCBvZiBkaWN0aW9uYXJpZXMgYWxwaGFiZXRpY2FsbHkgYnkga2V5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gY21kb3B0aW9uOjogLWgsIC0taGVscAorCisgICBTaG93IHRoZSBoZWxwIG1lc3NhZ2UuCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QgYi9Eb2MvbGlicmFyeS9saW5lY2FjaGUucnN0CmluZGV4IGYxOGIxY2QuLjZjOTJjYzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xpbmVjYWNoZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbGluZWNhY2hlLnJzdApAQCAtNDcsNiArNDcsMTQgQEAKICAgIGNoYW5nZWQgb24gZGlzaywgYW5kIHlvdSByZXF1aXJlIHRoZSB1cGRhdGVkIHZlcnNpb24uICBJZiAqZmlsZW5hbWUqIGlzIG9taXR0ZWQsCiAgICBpdCB3aWxsIGNoZWNrIGFsbCB0aGUgZW50cmllcyBpbiB0aGUgY2FjaGUuCiAKKy4uIGZ1bmN0aW9uOjogbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKKworICAgQ2FwdHVyZSBlbm91Z2ggZGV0YWlsIGFib3V0IGEgbm9uLWZpbGUgYmFzZWQgbW9kdWxlIHRvIHBlcm1pdCBnZXR0aW5nIGl0cworICAgbGluZXMgbGF0ZXIgdmlhIDpmdW5jOmBnZXRsaW5lYCBldmVuIGlmICptb2R1bGVfZ2xvYmFscyogaXMgTm9uZSBpbiB0aGUgbGF0ZXIKKyAgIGNhbGwuIFRoaXMgYXZvaWRzIGRvaW5nIEkvTyB1bnRpbCBhIGxpbmUgaXMgYWN0dWFsbHkgbmVlZGVkLCB3aXRob3V0IGhhdmluZworICAgdG8gY2FycnkgdGhlIG1vZHVsZSBnbG9iYWxzIGFyb3VuZCBpbmRlZmluaXRlbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiBFeGFtcGxlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggOTYwMDE5My4uYmM3ZjVmOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC0zODcsNiArMzg3LDE0IEBACiAgICBgYHN0cihmbG9hdClgYCwgYnV0IHRha2VzIHRoZSBkZWNpbWFsIHBvaW50IGludG8gYWNjb3VudC4KIAogCisuLiBmdW5jdGlvbjo6IGRlbG9jYWxpemUoc3RyaW5nKQorCisgICAgQ29udmVydHMgYSBzdHJpbmcgaW50byBhIG5vcm1hbGl6ZWQgbnVtYmVyIHN0cmluZywgZm9sbG93aW5nIHRoZQorICAgIDpjb25zdDpgTENfTlVNRVJJQ2Agc2V0dGluZ3MuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGF0b2Yoc3RyaW5nKQogCiAgICBDb252ZXJ0cyBhIHN0cmluZyB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgZm9sbG93aW5nIHRoZSA6Y29uc3Q6YExDX05VTUVSSUNgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IGQ5NDY4OTIuLjY3NDAzYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC04NTMsNyArODUzLDcgQEAKICAgIGNyZWRlbnRpYWxzLCB5b3Ugc2hvdWxkIGFsc28gc3BlY2lmeSBzZWN1cmU9VHJ1ZSBzbyB0aGF0IHlvdXIgdXNlcmlkIGFuZAogICAgcGFzc3dvcmQgYXJlIG5vdCBwYXNzZWQgaW4gY2xlYXJ0ZXh0IGFjcm9zcyB0aGUgd2lyZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFRoZSAqY29udGV4dCogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogICAgLi4gbWV0aG9kOjogbWFwTG9nUmVjb3JkKHJlY29yZCkKQEAgLTk1MywxMyArOTUzLDIwIEBACiBwb3NzaWJsZSwgd2hpbGUgYW55IHBvdGVudGlhbGx5IHNsb3cgb3BlcmF0aW9ucyAoc3VjaCBhcyBzZW5kaW5nIGFuIGVtYWlsIHZpYQogOmNsYXNzOmBTTVRQSGFuZGxlcmApIGFyZSBkb25lIG9uIGEgc2VwYXJhdGUgdGhyZWFkLgogCi0uLiBjbGFzczo6IFF1ZXVlTGlzdGVuZXIocXVldWUsICpoYW5kbGVycykKKy4uIGNsYXNzOjogUXVldWVMaXN0ZW5lcihxdWV1ZSwgKmhhbmRsZXJzLCByZXNwZWN0X2hhbmRsZXJfbGV2ZWw9RmFsc2UpCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgUXVldWVMaXN0ZW5lcmAgY2xhc3MuIFRoZSBpbnN0YW5jZSBpcwogICAgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgcXVldWUgdG8gc2VuZCBtZXNzYWdlcyB0byBhbmQgYSBsaXN0IG9mIGhhbmRsZXJzIHdoaWNoCiAgICB3aWxsIGhhbmRsZSBlbnRyaWVzIHBsYWNlZCBvbiB0aGUgcXVldWUuIFRoZSBxdWV1ZSBjYW4gYmUgYW55IHF1ZXVlLQogICAgbGlrZSBvYmplY3Q7IGl0J3MgcGFzc2VkIGFzLWlzIHRvIHRoZSA6bWV0aDpgZGVxdWV1ZWAgbWV0aG9kLCB3aGljaCBuZWVkcwotICAgdG8ga25vdyBob3cgdG8gZ2V0IG1lc3NhZ2VzIGZyb20gaXQuCisgICB0byBrbm93IGhvdyB0byBnZXQgbWVzc2FnZXMgZnJvbSBpdC4gSWYgYGByZXNwZWN0X2hhbmRsZXJfbGV2ZWxgYCBpcyBgYFRydWVgYCwKKyAgIGEgaGFuZGxlcidzIGxldmVsIGlzIHJlc3BlY3RlZCAoY29tcGFyZWQgd2l0aCB0aGUgbGV2ZWwgZm9yIHRoZSBtZXNzYWdlKSB3aGVuCisgICBkZWNpZGluZyB3aGV0aGVyIHRvIHBhc3MgbWVzc2FnZXMgdG8gdGhhdCBoYW5kbGVyOyBvdGhlcndpc2UsIHRoZSBiZWhhdmlvdXIKKyAgIGlzIGFzIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyAtIHRvIGFsd2F5cyBwYXNzIGVhY2ggbWVzc2FnZSB0byBlYWNoCisgICBoYW5kbGVyLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgcmVzcGVjdF9oYW5kbGVyX2xldmVsc2BgIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogICAgLi4gbWV0aG9kOjogZGVxdWV1ZShibG9jaykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdAppbmRleCA5MGZiOWIwLi5iZjgyMWFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdApAQCAtMTU5LDExICsxNTksMTMgQEAKICAgICptc2cqIHVzaW5nIHRoZSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRvci4gKE5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgeW91IGNhbgogICAgdXNlIGtleXdvcmRzIGluIHRoZSBmb3JtYXQgc3RyaW5nLCB0b2dldGhlciB3aXRoIGEgc2luZ2xlIGRpY3Rpb25hcnkgYXJndW1lbnQuKQogCi0gICBUaGVyZSBhcmUgdGhyZWUga2V5d29yZCBhcmd1bWVudHMgaW4gKmt3YXJncyogd2hpY2ggYXJlIGluc3BlY3RlZDogKmV4Y19pbmZvKgotICAgd2hpY2gsIGlmIGl0IGRvZXMgbm90IGV2YWx1YXRlIGFzIGZhbHNlLCBjYXVzZXMgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHRvIGJlCisgICBUaGVyZSBhcmUgdGhyZWUga2V5d29yZCBhcmd1bWVudHMgaW4gKmt3YXJncyogd2hpY2ggYXJlIGluc3BlY3RlZDoKKyAgICpleGNfaW5mbyosICpzdGFja19pbmZvKiwgYW5kICpleHRyYSouCisKKyAgIElmICpleGNfaW5mbyogZG9lcyBub3QgZXZhbHVhdGUgYXMgZmFsc2UsIGl0IGNhdXNlcyBleGNlcHRpb24gaW5mb3JtYXRpb24gdG8gYmUKICAgIGFkZGVkIHRvIHRoZSBsb2dnaW5nIG1lc3NhZ2UuIElmIGFuIGV4Y2VwdGlvbiB0dXBsZSAoaW4gdGhlIGZvcm1hdCByZXR1cm5lZCBieQotICAgOmZ1bmM6YHN5cy5leGNfaW5mb2ApIGlzIHByb3ZpZGVkLCBpdCBpcyB1c2VkOyBvdGhlcndpc2UsIDpmdW5jOmBzeXMuZXhjX2luZm9gCi0gICBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24uCisgICA6ZnVuYzpgc3lzLmV4Y19pbmZvYCkgb3IgYW4gZXhjZXB0aW9uIGluc3RhbmNlIGlzIHByb3ZpZGVkLCBpdCBpcyB1c2VkOworICAgb3RoZXJ3aXNlLCA6ZnVuYzpgc3lzLmV4Y19pbmZvYCBpcyBjYWxsZWQgdG8gZ2V0IHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24uCiAKICAgIFRoZSBzZWNvbmQgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCBpcyAqc3RhY2tfaW5mbyosIHdoaWNoIGRlZmF1bHRzIHRvCiAgICBgYEZhbHNlYGAuIElmIHRydWUsIHN0YWNrIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBsb2dnaW5nCkBAIC0yMjAsNiArMjIyLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgVGhlICpzdGFja19pbmZvKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlICpleGNfaW5mbyogcGFyYW1ldGVyIGNhbiBub3cgYWNjZXB0IGV4Y2VwdGlvbiBpbnN0YW5jZXMuCisKIAogLi4gbWV0aG9kOjogTG9nZ2VyLmluZm8obXNnLCAqYXJncywgKiprd2FyZ3MpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2x6bWEucnN0IGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKaW5kZXggYjcxMDUxZC4uMDU0NjAwNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbHptYS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTExMCw2ICsxMTAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAieCJgYCBhbmQgYGAieGIiYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKKyAgICAgIGBgTm9uZWBgLgorCiAKIENvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjIxLDEzICsyMjUsMzIgQEAKICAgICAgIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLCB5b3UgbXVzdAogICAgICAgY3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCiAKLSAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aD0tMSkKIAotICAgICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKLSAgICAgIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuCi0gICAgICBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bwotICAgICAgOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlCi0gICAgICBvdXRwdXQgb2YgYW55IHByZXZpb3VzIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4KKyAgICAgIERlY29tcHJlc3MgKmRhdGEqIChhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGApLCByZXR1cm5pbmcKKyAgICAgIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLiBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQKKyAgICAgIGludGVybmFsbHksIGZvciB1c2UgaW4gbGF0ZXIgY2FsbHMgdG8gOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUKKyAgICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBvdXRwdXQgb2YgYW55CisgICAgICBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgZGVjb21wcmVzc2AuCisKKyAgICAgIElmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKgorICAgICAgYnl0ZXMgb2YgZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlcgorICAgICAgb3V0cHV0IGNhbiBiZSBwcm9kdWNlZCwgdGhlIDphdHRyOmB+Lm5lZWRzX2lucHV0YCBhdHRyaWJ1dGUgd2lsbAorICAgICAgYmUgc2V0IHRvIGBgRmFsc2VgYC4gSW4gdGhpcyBjYXNlLCB0aGUgbmV4dCBjYWxsIHRvCisgICAgICA6bWV0aDpgfi5kZWNvbXByZXNzYCBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYGBiJydgYCB0byBvYnRhaW4KKyAgICAgIG1vcmUgb2YgdGhlIG91dHB1dC4KKworICAgICAgSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIKKyAgICAgIGJlY2F1c2UgdGhpcyB3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZQorICAgICAgKm1heF9sZW5ndGgqIHdhcyBuZWdhdGl2ZSksIHRoZSA6YXR0cjpgfi5uZWVkc19pbnB1dGAgYXR0cmlidXRlCisgICAgICB3aWxsIGJlIHNldCB0byBgYFRydWVgYC4KKworICAgICAgQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAorICAgICAgcmFpc2VzIGFuIGBFT0ZFcnJvcmAuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZQorICAgICAgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgfi51bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgQWRkZWQgdGhlICptYXhfbGVuZ3RoKiBwYXJhbWV0ZXIuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNoZWNrCiAKQEAgLTI0NSw2ICsyNjgsMTIgQEAKIAogICAgICAgQmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyByZWFjaGVkLCB0aGlzIHdpbGwgYmUgYGBiIiJgYC4KIAorICAgLi4gYXR0cmlidXRlOjogbmVlZHNfaW5wdXQKKworICAgICAgYGBGYWxzZWBgIGlmIHRoZSA6bWV0aDpgLmRlY29tcHJlc3NgIG1ldGhvZCBjYW4gcHJvdmlkZSBtb3JlCisgICAgICBkZWNvbXByZXNzZWQgZGF0YSBiZWZvcmUgcmVxdWlyaW5nIG5ldyB1bmNvbXByZXNzZWQgaW5wdXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXRoLnJzdCBiL0RvYy9saWJyYXJ5L21hdGgucnN0CmluZGV4IDBmYzdjN2MuLjI0NDY2M2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hdGgucnN0CkBAIC0xMDAsNiArMTAwLDQ4IEBACiAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMzkzMDkwLz5gX1wuCiAKIAorLi4gZnVuY3Rpb246OiBnY2QoYSwgYikKKworICAgUmV0dXJuIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0aGUgaW50ZWdlcnMgKmEqIGFuZCAqYiouICBJZiBlaXRoZXIKKyAgICphKiBvciAqYiogaXMgbm9uemVybywgdGhlbiB0aGUgdmFsdWUgb2YgYGBnY2QoYSwgYilgYCBpcyB0aGUgbGFyZ2VzdAorICAgcG9zaXRpdmUgaW50ZWdlciB0aGF0IGRpdmlkZXMgYm90aCAqYSogYW5kICpiKi4gIGBgZ2NkKDAsIDApYGAgcmV0dXJucworICAgYGAwYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIGZ1bmN0aW9uOjogaXNjbG9zZShhLCBiLCAqLCByZWxfdG9sPTFlLTA5LCBhYnNfdG9sPTAuMCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSB2YWx1ZXMgKmEqIGFuZCAqYiogYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgYW5kCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBXaGV0aGVyIG9yIG5vdCB0d28gdmFsdWVzIGFyZSBjb25zaWRlcmVkIGNsb3NlIGlzIGRldGVybWluZWQgYWNjb3JkaW5nIHRvCisgICBnaXZlbiBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgdG9sZXJhbmNlcy4KKworICAgKnJlbF90b2wqIGlzIHRoZSByZWxhdGl2ZSB0b2xlcmFuY2UgLS0gaXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBkaWZmZXJlbmNlCisgICBiZXR3ZWVuICphKiBhbmQgKmIqLCByZWxhdGl2ZSB0byB0aGUgbGFyZ2VyIGFic29sdXRlIHZhbHVlIG9mICphKiBvciAqYiouCisgICBGb3IgZXhhbXBsZSwgdG8gc2V0IGEgdG9sZXJhbmNlIG9mIDUlLCBwYXNzIGBgcmVsX3RvbD0wLjA1YGAuICBUaGUgZGVmYXVsdAorICAgdG9sZXJhbmNlIGlzIGBgMWUtMDlgYCwgd2hpY2ggYXNzdXJlcyB0aGF0IHRoZSB0d28gdmFsdWVzIGFyZSB0aGUgc2FtZQorICAgd2l0aGluIGFib3V0IDkgZGVjaW1hbCBkaWdpdHMuICAqcmVsX3RvbCogbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KKworICAgKmFic190b2wqIGlzIHRoZSBtaW5pbXVtIGFic29sdXRlIHRvbGVyYW5jZSAtLSB1c2VmdWwgZm9yIGNvbXBhcmlzb25zIG5lYXIKKyAgIHplcm8uICphYnNfdG9sKiBtdXN0IGJlIGF0IGxlYXN0IHplcm8uCisKKyAgIElmIG5vIGVycm9ycyBvY2N1ciwgdGhlIHJlc3VsdCB3aWxsIGJlOgorICAgYGBhYnMoYS1iKSA8PSBtYXgocmVsX3RvbCAqIG1heChhYnMoYSksIGFicyhiKSksIGFic190b2wpYGAuCisKKyAgIFRoZSBJRUVFIDc1NCBzcGVjaWFsIHZhbHVlcyBvZiBgYE5hTmBgLCBgYGluZmBgLCBhbmQgYGAtaW5mYGAgd2lsbCBiZQorICAgaGFuZGxlZCBhY2NvcmRpbmcgdG8gSUVFRSBydWxlcy4gIFNwZWNpZmljYWxseSwgYGBOYU5gYCBpcyBub3QgY29uc2lkZXJlZAorICAgY2xvc2UgdG8gYW55IG90aGVyIHZhbHVlLCBpbmNsdWRpbmcgYGBOYU5gYC4gIGBgaW5mYGAgYW5kIGBgLWluZmBgIGFyZSBvbmx5CisgICBjb25zaWRlcmVkIGNsb3NlIHRvIHRoZW1zZWx2ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOnBlcDpgNDg1YCAtLSBBIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIGFwcHJveGltYXRlIGVxdWFsaXR5CisKKwogLi4gZnVuY3Rpb246OiBpc2Zpbml0ZSh4KQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKngqIGlzIG5laXRoZXIgYW4gaW5maW5pdHkgbm9yIGEgTmFOLCBhbmQKQEAgLTM4Myw2ICs0MjUsMjIgQEAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgZSA9IDIuNzE4MjgxLi4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgogCiAKKy4uIGRhdGE6OiBpbmYKKworICAgQSBmbG9hdGluZy1wb2ludCBwb3NpdGl2ZSBpbmZpbml0eS4gIChGb3IgbmVnYXRpdmUgaW5maW5pdHksIHVzZQorICAgYGAtbWF0aC5pbmZgYC4pICBFcXVpdmFsZW50IHRvIHRoZSBvdXRwdXQgb2YgYGBmbG9hdCgnaW5mJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gZGF0YTo6IG5hbgorCisgICBBIGZsb2F0aW5nLXBvaW50ICJub3QgYSBudW1iZXIiIChOYU4pIHZhbHVlLiAgRXF1aXZhbGVudCB0byB0aGUgb3V0cHV0IG9mCisgICBgYGZsb2F0KCduYW4nKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBpbXBsLWRldGFpbDo6CiAKICAgIFRoZSA6bW9kOmBtYXRoYCBtb2R1bGUgY29uc2lzdHMgbW9zdGx5IG9mIHRoaW4gd3JhcHBlcnMgYXJvdW5kIHRoZSBwbGF0Zm9ybSBDCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tbWFwLnJzdCBiL0RvYy9saWJyYXJ5L21tYXAucnN0CmluZGV4IDE4ZTA1ZTMuLmI3NGE4MjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21tYXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L21tYXAucnN0CkBAIC0xNzQsNiArMTc0LDkgQEAKICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCiAgICAgICBSZXR1cm5zIGBgLTFgYCBvbiBmYWlsdXJlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBmbHVzaChbb2Zmc2V0Wywgc2l6ZV1dKQogCkBAIC0yMzQsNiArMjM3LDkgQEAKICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uCiAgICAgICBSZXR1cm5zIGBgLTFgYCBvbiBmYWlsdXJlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAgICAuLiBtZXRob2Q6OiBzZWVrKHBvc1ssIHdoZW5jZV0pCiAKQEAgLTI2MSw2ICsyNjcsOSBAQAogICAgICAgd2VyZSB3cml0dGVuLiBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCiAgICAgICB3cml0aW5nIHRvIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGVfYnl0ZShieXRlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0IGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAppbmRleCA5M2Y1OWNkLi4yMzcwMzIzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKQEAgLTEzNTIsNiArMTM1Miw5IEBACiAgICBOb3RlIHRoYXQgYWNjZXNzaW5nIHRoZSBjdHlwZXMgb2JqZWN0IHRocm91Z2ggdGhlIHdyYXBwZXIgY2FuIGJlIGEgbG90IHNsb3dlcgogICAgdGhhbiBhY2Nlc3NpbmcgdGhlIHJhdyBjdHlwZXMgb2JqZWN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3luY2hyb25pemVkIG9iamVjdHMgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuCisKIAogVGhlIHRhYmxlIGJlbG93IGNvbXBhcmVzIHRoZSBzeW50YXggZm9yIGNyZWF0aW5nIHNoYXJlZCBjdHlwZXMgb2JqZWN0cyBmcm9tCiBzaGFyZWQgbWVtb3J5IHdpdGggdGhlIG5vcm1hbCBjdHlwZXMgc3ludGF4LiAgKEluIHRoZSB0YWJsZSBgYE15U3RydWN0YGAgaXMgc29tZQpAQCAtMTgzOSw5ICsxODQyLDkgQEAKICAgICAgICAgID4+PiBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKICAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2xlbl9fJykKICAgICAgICAgIDEwCi0gICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoc2xpY2UoMiwgNyksKSkgICMgZXF1aXYgdG8gYGxbMjo3XWAKKyAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsIChzbGljZSgyLCA3KSwpKSAjIGVxdWl2YWxlbnQgdG8gbFsyOjddCiAgICAgICAgICBbMiwgMywgNCwgNSwgNl0KLSAgICAgICAgID4+PiBsLl9jYWxsbWV0aG9kKCdfX2dldGl0ZW1fXycsICgyMCwpKSAgICAgIyBlcXVpdiB0byBgbFsyMF1gCisgICAgICAgICA+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICAgICAgIyBlcXVpdmFsZW50IHRvIGxbMjBdCiAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAgICAuLi4KICAgICAgICAgIEluZGV4RXJyb3I6IGxpc3QgaW5kZXggb3V0IG9mIHJhbmdlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9vcGVyYXRvci5yc3QKaW5kZXggZjllMmEzZC4uYzAxZTYzYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3BlcmF0b3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L29wZXJhdG9yLnJzdApAQCAtMTM4LDYgKzEzOCwxNCBAQAogICAgUmV0dXJuIGBgYSAqIGJgYCwgZm9yICphKiBhbmQgKmIqIG51bWJlcnMuCiAKIAorLi4gZnVuY3Rpb246OiBtYXRtdWwoYSwgYikKKyAgICAgICAgICAgICAgX19tYXRtdWxfXyhhLCBiKQorCisgICBSZXR1cm4gYGBhIEAgYmBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IG5lZyhvYmopCiAgICAgICAgICAgICAgIF9fbmVnX18ob2JqKQogCkBAIC0zOTEsNiArMzk5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTXVsdGlwbGljYXRpb24gICAgICAgIHwgYGBhICogYmBgICAgICAgICAgICAgICAgfCBgYG11bChhLCBiKWBgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgTWF0cml4IE11bHRpcGxpY2F0aW9uIHwgYGBhIEAgYmBgICAgICAgICAgICAgICAgfCBgYG1hdG11bChhLCBiKWBgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTmVnYXRpb24gKEFyaXRobWV0aWMpIHwgYGAtIGFgYCAgICAgICAgICAgICAgICAgfCBgYG5lZyhhKWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTmVnYXRpb24gKExvZ2ljYWwpICAgIHwgYGBub3QgYWBgICAgICAgICAgICAgICAgfCBgYG5vdF8oYSlgYCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTQ5OSw2ICs1MDksMTQgQEAKICAgIGBgYSA9IGltdWwoYSwgYilgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSAqPSBiYGAuCiAKIAorLi4gZnVuY3Rpb246OiBpbWF0bXVsKGEsIGIpCisgICAgICAgICAgICAgIF9faW1hdG11bF9fKGEsIGIpCisKKyAgIGBgYSA9IGltYXRtdWwoYSwgYilgYCBpcyBlcXVpdmFsZW50IHRvIGBgYSBAPSBiYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogaW9yKGEsIGIpCiAgICAgICAgICAgICAgIF9faW9yX18oYSwgYikKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCA5MjYzMWIyLi5hM2ZlNzNjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNjYsMTEgKzY2LDM3IEBACiAgICBlbXB0eSBzdHJpbmcgKGBgJydgYCkuCiAKIAorLi4gZnVuY3Rpb246OiBjb21tb25wYXRoKHBhdGhzKQorCisgICBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIGVhY2ggcGF0aG5hbWUgaW4gdGhlIHNlcXVlbmNlCisgICAqcGF0aHMqLiAgUmFpc2UgVmFsdWVFcnJvciBpZiAqcGF0aHMqIGNvbnRhaW5zIGJvdGggYWJzb2x1dGUgYW5kIHJlbGF0aXZlCisgICBwYXRobmFtZXMsIG9yIGlmICpwYXRocyogaXMgZW1wdHkuICBVbmxpa2UgOmZ1bmM6YGNvbW1vbnByZWZpeGAsIHRoaXMKKyAgIHJldHVybnMgYSB2YWxpZCBwYXRoLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gZnVuY3Rpb246OiBjb21tb25wcmVmaXgobGlzdCkKIAotICAgUmV0dXJuIHRoZSBsb25nZXN0IHBhdGggcHJlZml4ICh0YWtlbiBjaGFyYWN0ZXItYnktY2hhcmFjdGVyKSB0aGF0IGlzIGEgcHJlZml4Ci0gICBvZiBhbGwgcGF0aHMgaW4gICpsaXN0Ki4gIElmICpsaXN0KiBpcyBlbXB0eSwgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgKGBgJydgYCkuCi0gICBOb3RlIHRoYXQgdGhpcyBtYXkgcmV0dXJuIGludmFsaWQgcGF0aHMgYmVjYXVzZSBpdCB3b3JrcyBhIGNoYXJhY3RlciBhdCBhIHRpbWUuCisgICBSZXR1cm4gdGhlIGxvbmdlc3QgcGF0aCBwcmVmaXggKHRha2VuIGNoYXJhY3Rlci1ieS1jaGFyYWN0ZXIpIHRoYXQgaXMgYQorICAgcHJlZml4IG9mIGFsbCBwYXRocyBpbiAgKmxpc3QqLiAgSWYgKmxpc3QqIGlzIGVtcHR5LCByZXR1cm4gdGhlIGVtcHR5IHN0cmluZworICAgKGBgJydgYCkuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gaW52YWxpZCBwYXRocyBiZWNhdXNlIGl0IHdvcmtzIGEKKyAgICAgIGNoYXJhY3RlciBhdCBhIHRpbWUuICBUbyBvYnRhaW4gYSB2YWxpZCBwYXRoLCBzZWUKKyAgICAgIDpmdW5jOmBjb21tb25wYXRoYC4KKworICAgICAgOjoKKworICAgICAgICA+Pj4gb3MucGF0aC5jb21tb25wcmVmaXgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQorICAgICAgICAnL3Vzci9sJworCisgICAgICAgID4+PiBvcy5wYXRoLmNvbW1vbnBhdGgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQorICAgICAgICAnL3VzcicKIAogCiAuLiBmdW5jdGlvbjo6IGRpcm5hbWUocGF0aCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCA5MTZmNWU1Li4zMGYxNjA1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC03OCw5ICs3OCwxMCBAQAogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgT24gc29tZSBzeXN0ZW1zLCBjb252ZXJzaW9uIHVzaW5nIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBtYXkgZmFpbC4gSW4gdGhpcwotICAgY2FzZSwgUHl0aG9uIHVzZXMgdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAgZW5jb2RpbmcgZXJyb3IgaGFuZGxlciwgd2hpY2ggbWVhbnMKLSAgIHRoYXQgdW5kZWNvZGFibGUgYnl0ZXMgYXJlIHJlcGxhY2VkIGJ5IGEgVW5pY29kZSBjaGFyYWN0ZXIgVStEQ3h4IG9uCi0gICBkZWNvZGluZywgYW5kIHRoZXNlIGFyZSBhZ2FpbiB0cmFuc2xhdGVkIHRvIHRoZSBvcmlnaW5hbCBieXRlIG9uIGVuY29kaW5nLgorICAgY2FzZSwgUHl0aG9uIHVzZXMgdGhlIDpyZWY6YHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGluZyBlcnJvciBoYW5kbGVyCisgICA8c3Vycm9nYXRlZXNjYXBlPmAsIHdoaWNoIG1lYW5zIHRoYXQgdW5kZWNvZGFibGUgYnl0ZXMgYXJlIHJlcGxhY2VkIGJ5IGEKKyAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrREN4eCBvbiBkZWNvZGluZywgYW5kIHRoZXNlIGFyZSBhZ2FpbiB0cmFuc2xhdGVkIHRvIHRoZQorICAgb3JpZ2luYWwgYnl0ZSBvbiBlbmNvZGluZy4KIAogCiBUaGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgbXVzdCBndWFyYW50ZWUgdG8gc3VjY2Vzc2Z1bGx5IGRlY29kZSBhbGwgYnl0ZXMKQEAgLTMxMSw4ICszMTIsNiBAQAogCiAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0cHBpZCgpCiAKQEAgLTU0OSw4ICs1NDgsNiBAQAogICAgT24gcGxhdGZvcm1zIHdoZXJlIDpjOmZ1bmM6YHN0cmVycm9yYCByZXR1cm5zIGBgTlVMTGBgIHdoZW4gZ2l2ZW4gYW4gdW5rbm93bgogICAgZXJyb3IgbnVtYmVyLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBkYXRhOjogc3VwcG9ydHNfYnl0ZXNfZW52aXJvbgogCkBAIC01NjQsOCArNTYxLDYgQEAKIAogICAgU2V0IHRoZSBjdXJyZW50IG51bWVyaWMgdW1hc2sgYW5kIHJldHVybiB0aGUgcHJldmlvdXMgdW1hc2suCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IHVuYW1lKCkKIApAQCAtNjU2LDggKzY1MSw2IEBACiAKICAgIENsb3NlIGZpbGUgZGVzY3JpcHRvciAqZmQqLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBsb3ctbGV2ZWwgSS9PIGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYSBmaWxlCkBAIC02NzcsOCArNjcwLDYgQEAKICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgcGFzcwogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBkZXZpY2VfZW5jb2RpbmcoZmQpCiAKQEAgLTY5NSw4ICs2ODYsNiBAQAogICAgMjogc3RkZXJyKSwgdGhlIG5ldyBmaWxlIGRlc2NyaXB0b3IgaXMgOnJlZjpgaW5oZXJpdGFibGUKICAgIDxmZF9pbmhlcml0YW5jZT5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgbmV3IGZpbGUgZGVzY3JpcHRvciBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCkBAIC03MDcsOCArNjk2LDYgQEAKICAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkMiogaXMgOnJlZjpgaW5oZXJpdGFibGUgPGZkX2luaGVyaXRhbmNlPmAgYnkgZGVmYXVsdCwKICAgIG9yIG5vbi1pbmhlcml0YWJsZSBpZiAqaW5oZXJpdGFibGUqIGlzIGBgRmFsc2VgYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkIHRoZSBvcHRpb25hbCAqaW5oZXJpdGFibGUqIHBhcmFtZXRlci4KIApAQCAtNzc0LDggKzc2MSw2IEBACiAKICAgICAgIFRoZSA6ZnVuYzpgLnN0YXRgIGZ1bmN0aW9uLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBmc3RhdHZmcyhmZCkKIApAQCAtODA0LDggKzc4OSwyMSBAQAogICAgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCiAgICBgYG9zLnRydW5jYXRlKGZkLCBsZW5ndGgpYGAuCiAKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MKKworLi4gZnVuY3Rpb246OiBnZXRfYmxvY2tpbmcoZmQpCisKKyAgIEdldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yOiBgYEZhbHNlYGAgaWYgdGhlCisgICA6ZGF0YTpgT19OT05CTE9DS2AgZmxhZyBpcyBzZXQsIGBgVHJ1ZWBgIGlmIHRoZSBmbGFnIGlzIGNsZWFyZWQuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBzZXRfYmxvY2tpbmdgIGFuZCA6bWV0aDpgc29ja2V0LnNvY2tldC5zZXRibG9ja2luZ2AuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGZ1bmN0aW9uOjogaXNhdHR5KGZkKQogCkBAIC04NDYsOCArODQ0LDYgQEAKICAgIGN1cnJlbnQgcG9zaXRpb247IDpjb25zdDpgU0VFS19FTkRgIG9yIGBgMmBgIHRvIHNldCBpdCByZWxhdGl2ZSB0byB0aGUgZW5kIG9mCiAgICB0aGUgZmlsZS4gUmV0dXJuIHRoZSBuZXcgY3Vyc29yIHBvc2l0aW9uIGluIGJ5dGVzLCBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBkYXRhOjogU0VFS19TRVQKICAgICAgICAgICBTRUVLX0NVUgpAQCAtODU2LDggKzg1Miw2IEBACiAgICBQYXJhbWV0ZXJzIHRvIHRoZSA6ZnVuYzpgbHNlZWtgIGZ1bmN0aW9uLiBUaGVpciB2YWx1ZXMgYXJlIDAsIDEsIGFuZCAyLAogICAgcmVzcGVjdGl2ZWx5LgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyBjb3VsZCBzdXBwb3J0IGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCiAgICAgICA6ZGF0YTpgb3MuU0VFS19IT0xFYCBvciA6ZGF0YTpgb3MuU0VFS19EQVRBYC4KQEAgLTg3OCw4ICs4NzIsNiBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YCB3aXRoIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBuZXcgZmlsZSBkZXNjcmlwdG9yIGlzIG5vdyBub24taW5oZXJpdGFibGUuCiAKQEAgLTg5Myw2ICs4ODUsMTEgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgb3B0aW9ucyBmb3IgdGhlICpmbGFncyogcGFyYW1ldGVyIHRvIHRoZQogOmZ1bmM6YH5vcy5vcGVuYCBmdW5jdGlvbi4gIFRoZXkgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIE9SIG9wZXJhdG9yCiBgYHxgYC4gIFNvbWUgb2YgdGhlbSBhcmUgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiAgRm9yIGRlc2NyaXB0aW9ucyBvZgpAQCAtMTA2MCw4ICsxMDU3LDYgQEAKICAgIGJ5dGVzIHJlYWQuICBJZiB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5ICpmZCogaGFzIGJlZW4gcmVhY2hlZCwgYW4KICAgIGVtcHR5IGJ5dGVzIG9iamVjdCBpcyByZXR1cm5lZC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQpAQCAtMTA3MCw2ICsxMDY1LDExIEBACiAgICAgICA6ZnVuYzpgcG9wZW5gIG9yIDpmdW5jOmBmZG9wZW5gLCBvciA6ZGF0YTpgc3lzLnN0ZGluYCwgdXNlIGl0cwogICAgICAgOm1ldGg6YH5maWxlLnJlYWRgIG9yIDptZXRoOmB+ZmlsZS5yZWFkbGluZWAgbWV0aG9kcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgY291bnQpCiAgICAgICAgICAgICAgIHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgY291bnQsIFtoZWFkZXJzXSwgW3RyYWlsZXJzXSwgZmxhZ3M9MCkKQEAgLTEwOTksOSArMTA5OSwyNiBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBGb3IgYSBoaWdoZXItbGV2ZWwgd3JhcHBlciBvZiA6ZnVuYzpgc2VuZGZpbGVgLCBzZWUKKyAgICAgIDptZXRoOmBzb2NrZXQuc29ja2V0LnNlbmRmaWxlYC4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfYmxvY2tpbmcoZmQsIGJsb2NraW5nKQorCisgICBTZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuIFNldCB0aGUKKyAgIDpkYXRhOmBPX05PTkJMT0NLYCBmbGFnIGlmIGJsb2NraW5nIGlzIGBgRmFsc2VgYCwgY2xlYXIgdGhlIGZsYWcgb3RoZXJ3aXNlLgorCisgICBTZWUgYWxzbyA6ZnVuYzpgZ2V0X2Jsb2NraW5nYCBhbmQgOm1ldGg6YHNvY2tldC5zb2NrZXQuc2V0YmxvY2tpbmdgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGRhdGE6OiBTRl9OT0RJU0tJTwogICAgICAgICAgIFNGX01OT1dBSVQKICAgICAgICAgICBTRl9TWU5DCkBAIC0xMTU4LDggKzExNzUsNiBAQAogICAgV3JpdGUgdGhlIGJ5dGVzdHJpbmcgaW4gKnN0ciogdG8gZmlsZSBkZXNjcmlwdG9yICpmZCouIFJldHVybiB0aGUgbnVtYmVyIG9mCiAgICBieXRlcyBhY3R1YWxseSB3cml0dGVuLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBsb3ctbGV2ZWwgSS9PIGFuZCBtdXN0IGJlIGFwcGxpZWQgdG8gYSBmaWxlCkBAIC0xMTY4LDYgKzExODMsMTEgQEAKICAgICAgIDpmdW5jOmBmZG9wZW5gLCBvciA6ZGF0YTpgc3lzLnN0ZG91dGAgb3IgOmRhdGE6YHN5cy5zdGRlcnJgLCB1c2UgaXRzCiAgICAgICA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHdyaXRldihmZCwgYnVmZmVycykKIApAQCAtMTMzMCw4ICsxMzUwLDYgQEAKICAgIG9yIG5vdCBpdCBpcyBhdmFpbGFibGUgdXNpbmcgOmRhdGE6YG9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHNgLiAgSWYgaXQgaXMKICAgIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gbm90ZTo6CiAKICAgICAgIFVzaW5nIDpmdW5jOmBhY2Nlc3NgIHRvIGNoZWNrIGlmIGEgdXNlciBpcyBhdXRob3JpemVkIHRvIGUuZy4gb3BlbiBhIGZpbGUKQEAgLTEzODQsOCArMTQwMiw2IEBACiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4gIFRoZQogICAgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbiBvcGVuIGZpbGUuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvcgogICAgICAgb24gc29tZSBwbGF0Zm9ybXMuCkBAIC0xNDQ3LDggKzE0NjMsNiBAQAogICAgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90CiAgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIG5vdGU6OgogCiAgICAgICBBbHRob3VnaCBXaW5kb3dzIHN1cHBvcnRzIDpmdW5jOmBjaG1vZGAsIHlvdSBjYW4gb25seSBzZXQgdGhlIGZpbGUncwpAQCAtMTQ5OSwxNSArMTUxMywxMSBAQAogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KIAogLi4gZnVuY3Rpb246OiBnZXRjd2RiKCkKIAogICAgUmV0dXJuIGEgYnl0ZXN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IGxjaGZsYWdzKHBhdGgsIGZsYWdzKQogCkBAIC0xNTcwLDcgKzE1ODAsMTEgQEAKICAgIC4uIG5vdGU6OgogICAgICAgVG8gZW5jb2RlIGBgc3RyYGAgZmlsZW5hbWVzIHRvIGBgYnl0ZXNgYCwgdXNlIDpmdW5jOmB+b3MuZnNlbmNvZGVgLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVGhlIDpmdW5jOmBzY2FuZGlyYCBmdW5jdGlvbiByZXR1cm5zIGRpcmVjdG9yeSBlbnRyaWVzIGFsb25nIHdpdGgKKyAgICAgIGZpbGUgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBnaXZpbmcgYmV0dGVyIHBlcmZvcm1hbmNlIGZvciBtYW55CisgICAgICBjb21tb24gdXNlIGNhc2VzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlICpwYXRoKiBwYXJhbWV0ZXIgYmVjYW1lIG9wdGlvbmFsLgpAQCAtMTYxOSw4ICsxNjMzLDYgQEAKICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3Rvcmllczsgc2VlIHRoZQogICAgOm1vZDpgdGVtcGZpbGVgIG1vZHVsZSdzIDpmdW5jOmB0ZW1wZmlsZS5ta2R0ZW1wYCBmdW5jdGlvbi4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIApAQCAtMTc3OSw4ICsxNzkxLDYgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gOmZ1bmM6YHVubGlua2AuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKQEAgLTE4MTQsOCArMTgyNCw2IEBACiAKICAgIElmIHlvdSB3YW50IGNyb3NzLXBsYXRmb3JtIG92ZXJ3cml0aW5nIG9mIHRoZSBkZXN0aW5hdGlvbiwgdXNlIDpmdW5jOmByZXBsYWNlYC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCiAKQEAgLTE4NDQsOCArMTg1Miw2IEBACiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IHNwZWNpZnlpbmcgKnNyY19kaXJfZmQqIGFuZC9vciAqZHN0X2Rpcl9mZCogdG8KICAgIHN1cHBseSA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKQEAgLTE4NTgsMTIgKzE4NjQsMTgwIEBACiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycwogICAgPGRpcl9mZD5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAogCisuLiBmdW5jdGlvbjo6IHNjYW5kaXIocGF0aD0nLicpCisKKyAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudHJpZXMKKyAgIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbiBhcmJpdHJhcnkKKyAgIG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90IGluY2x1ZGVkLgorCisgICBVc2luZyA6ZnVuYzpgc2NhbmRpcmAgaW5zdGVhZCBvZiA6ZnVuYzpgbGlzdGRpcmAgY2FuIHNpZ25pZmljYW50bHkKKyAgIGluY3JlYXNlIHRoZSBwZXJmb3JtYW5jZSBvZiBjb2RlIHRoYXQgYWxzbyBuZWVkcyBmaWxlIHR5cGUgb3IgZmlsZQorICAgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBiZWNhdXNlIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgZXhwb3NlIHRoaXMKKyAgIGluZm9ybWF0aW9uIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzIGl0IHdoZW4gc2Nhbm5pbmcgYSBkaXJlY3RvcnkuCisgICBBbGwgOmNsYXNzOmBEaXJFbnRyeWAgbWV0aG9kcyBtYXkgcGVyZm9ybSBhIHN5c3RlbSBjYWxsLCBidXQKKyAgIDpmdW5jOmB+RGlyRW50cnkuaXNfZGlyYCBhbmQgOmZ1bmM6YH5EaXJFbnRyeS5pc19maWxlYCB1c3VhbGx5IG9ubHkKKyAgIHJlcXVpcmUgYSBzeXN0ZW0gY2FsbCBmb3Igc3ltYm9saWMgbGlua3M7IDpmdW5jOmBEaXJFbnRyeS5zdGF0YAorICAgYWx3YXlzIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwgb24gVW5peCBidXQgb25seSByZXF1aXJlcyBvbmUgZm9yCisgICBzeW1ib2xpYyBsaW5rcyBvbiBXaW5kb3dzLgorCisgICBPbiBVbml4LCAqcGF0aCogY2FuIGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgICh1c2UKKyAgIDpmdW5jOmB+b3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBlbmNvZGUgYW5kIGRlY29kZQorICAgOmNsYXNzOmBieXRlc2AgcGF0aHMpLiBPbiBXaW5kb3dzLCAqcGF0aCogbXVzdCBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYC4KKyAgIE9uIGJvdGggc3l0ZW1zLCB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5EaXJFbnRyeS5uYW1lYCBhbmQKKyAgIDphdHRyOmB+RGlyRW50cnkucGF0aGAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgRGlyRW50cnlgIHdpbGwgYmUgb2YKKyAgIHRoZSBzYW1lIHR5cGUgYXMgKnBhdGgqLgorCisgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgdXNlIG9mIDpmdW5jOmBzY2FuZGlyYCB0byBkaXNwbGF5IGFsbAorICAgdGhlIGZpbGVzIChleGNsdWRpbmcgZGlyZWN0b3JpZXMpIGluIHRoZSBnaXZlbiAqcGF0aCogdGhhdCBkb24ndCBzdGFydCB3aXRoCisgICBgYCcuJ2BgLiBUaGUgYGBlbnRyeS5pc19maWxlKClgYCBjYWxsIHdpbGwgZ2VuZXJhbGx5IG5vdCBtYWtlIGFuIGFkZGl0aW9uYWwKKyAgIHN5c3RlbSBjYWxsOjoKKworICAgICAgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIocGF0aCk6CisgICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQorCisgICAuLiBub3RlOjoKKworICAgICAgT24gVW5peC1iYXNlZCBzeXN0ZW1zLCA6ZnVuYzpgc2NhbmRpcmAgdXNlcyB0aGUgc3lzdGVtJ3MKKyAgICAgIGBvcGVuZGlyKCkgPGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL29wZW5kaXIuaHRtbD5gXworICAgICAgYW5kCisgICAgICBgcmVhZGRpcigpIDxodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9yZWFkZGlyX3IuaHRtbD5gXworICAgICAgZnVuY3Rpb25zLiBPbiBXaW5kb3dzLCBpdCB1c2VzIHRoZSBXaW4zMgorICAgICAgYEZpbmRGaXJzdEZpbGVXIDxodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY0NDE4KHY9dnMuODUpLmFzcHg+YF8KKyAgICAgIGFuZAorICAgICAgYEZpbmROZXh0RmlsZVcgPGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYWEzNjQ0Mjgodj12cy44NSkuYXNweD5gXworICAgICAgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCisuLiBjbGFzczo6IERpckVudHJ5CisKKyAgIE9iamVjdCB5aWVsZGVkIGJ5IDpmdW5jOmBzY2FuZGlyYCB0byBleHBvc2UgdGhlIGZpbGUgcGF0aCBhbmQgb3RoZXIgZmlsZQorICAgYXR0cmlidXRlcyBvZiBhIGRpcmVjdG9yeSBlbnRyeS4KKworICAgOmZ1bmM6YHNjYW5kaXJgIHdpbGwgcHJvdmlkZSBhcyBtdWNoIG9mIHRoaXMgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgd2l0aG91dAorICAgbWFraW5nIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLiBXaGVuIGEgYGBzdGF0KClgYCBvciBgYGxzdGF0KClgYCBzeXN0ZW0gY2FsbAorICAgaXMgbWFkZSwgdGhlIGBgRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgorCisgICBgYERpckVudHJ5YGAgaW5zdGFuY2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgc3RvcmVkIGluIGxvbmctbGl2ZWQgZGF0YQorICAgc3RydWN0dXJlczsgaWYgeW91IGtub3cgdGhlIGZpbGUgbWV0YWRhdGEgaGFzIGNoYW5nZWQgb3IgaWYgYSBsb25nIHRpbWUgaGFzCisgICBlbGFwc2VkIHNpbmNlIGNhbGxpbmcgOmZ1bmM6YHNjYW5kaXJgLCBjYWxsIGBgb3Muc3RhdChlbnRyeS5wYXRoKWBgIHRvIGZldGNoCisgICB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICBCZWNhdXNlIHRoZSBgYERpckVudHJ5YGAgbWV0aG9kcyBjYW4gbWFrZSBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzLCB0aGV5IG1heQorICAgYWxzbyByYWlzZSA6ZXhjOmBPU0Vycm9yYC4gSWYgeW91IG5lZWQgdmVyeSBmaW5lLWdyYWluZWQKKyAgIGNvbnRyb2wgb3ZlciBlcnJvcnMsIHlvdSBjYW4gY2F0Y2ggOmV4YzpgT1NFcnJvcmAgd2hlbiBjYWxsaW5nIG9uZSBvZiB0aGUKKyAgIGBgRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCisKKyAgIEF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgb24gYSBgYERpckVudHJ5YGAgaW5zdGFuY2UgYXJlIGFzIGZvbGxvd3M6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIGVudHJ5J3MgYmFzZSBmaWxlbmFtZSwgcmVsYXRpdmUgdG8gdGhlIDpmdW5jOmBzY2FuZGlyYCAqcGF0aCoKKyAgICAgIGFyZ3VtZW50LgorCisgICAgICBUaGUgOmF0dHI6YG5hbWVgIGF0dHJpYnV0ZSB3aWxsIGJlIG9mIHRoZSBzYW1lIHR5cGUgKGBgc3RyYGAgb3IKKyAgICAgIGBgYnl0ZXNgYCkgYXMgdGhlIDpmdW5jOmBzY2FuZGlyYCAqcGF0aCogYXJndW1lbnQuIFVzZQorICAgICAgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZGVjb2RlIGJ5dGUgZmlsZW5hbWVzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBlbnRyeSdzIGZ1bGwgcGF0aCBuYW1lOiBlcXVpdmFsZW50IHRvIGBgb3MucGF0aC5qb2luKHNjYW5kaXJfcGF0aCwKKyAgICAgIGVudHJ5Lm5hbWUpYGAgd2hlcmUgKnNjYW5kaXJfcGF0aCogaXMgdGhlIDpmdW5jOmBzY2FuZGlyYCAqcGF0aCoKKyAgICAgIGFyZ3VtZW50LiAgVGhlIHBhdGggaXMgb25seSBhYnNvbHV0ZSBpZiB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKgorICAgICAgYXJndW1lbnQgd2FzIGFic29sdXRlLgorCisgICAgICBUaGUgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZSB3aWxsIGJlIG9mIHRoZSBzYW1lIHR5cGUgKGBgc3RyYGAgb3IKKyAgICAgIGBgYnl0ZXNgYCkgYXMgdGhlIDpmdW5jOmBzY2FuZGlyYCAqcGF0aCogYXJndW1lbnQuIFVzZQorICAgICAgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZGVjb2RlIGJ5dGUgZmlsZW5hbWVzLgorCisgICAuLiBtZXRob2Q6OiBpbm9kZSgpCisKKyAgICAgIFJldHVybiB0aGUgaW5vZGUgbnVtYmVyIG9mIHRoZSBlbnRyeS4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QsIHVzZSBgYG9zLnN0YXQoZW50cnkucGF0aCwKKyAgICAgIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vYGAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgICAgT24gVW5peCwgbm8gc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQuCisKKyAgIC4uIG1ldGhvZDo6IGlzX2RpcihcKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgICAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksIHJldHVybiBgYFRydWVgYCBpZiB0aGUKKyAgICAgIGVudHJ5IGlzIGEgZGlyZWN0b3J5IG9yIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBhIGRpcmVjdG9yeTsKKyAgICAgIHJldHVybiBgYEZhbHNlYGAgaWYgaXQgaXMgb3IgcG9pbnRzIHRvIGFueSBvdGhlciBraW5kIG9mIGZpbGUsIG9yIGlmIGl0CisgICAgICBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCisKKyAgICAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGBgRmFsc2VgYCwgcmV0dXJuIGBgVHJ1ZWBgIG9ubHkgaWYgdGhpcyBlbnRyeQorICAgICAgaXMgYSBkaXJlY3Rvcnk7IHJldHVybiBgYEZhbHNlYGAgaWYgaXQgaXMgYW55IG90aGVyIGtpbmQgb2YgZmlsZQorICAgICAgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAKKyAgICAgIGFsb25nIHdpdGggOmZ1bmM6YHN0YXQuU19JU0RJUmAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKworICAgICAgVGhpcyBtZXRob2QgY2FuIHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzdWNoIGFzIDpleGM6YFBlcm1pc3Npb25FcnJvcmAsCisgICAgICBidXQgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgIGlzIGNhdWdodCBhbmQgbm90IHJhaXNlZC4KKworICAgICAgSW4gbW9zdCBjYXNlcywgbm8gc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQuCisKKyAgIC4uIG1ldGhvZDo6IGlzX2ZpbGUoXCosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICAgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCByZXR1cm4gYGBUcnVlYGAgaWYgdGhlCisgICAgICBlbnRyeSBpcyBhIGZpbGUgb3IgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIGEgZmlsZTsgcmV0dXJuIGBgRmFsc2VgYAorICAgICAgaWYgaXQgaXMgb3IgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IG9yIG90aGVyIG5vbi1maWxlIGVudHJ5LCBvciBpZiBpdAorICAgICAgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICBJZiAqZm9sbG93X3N5bWxpbmtzKiBpcyBgYEZhbHNlYGAsIHJldHVybiBgYFRydWVgYCBvbmx5IGlmIHRoaXMgZW50cnkKKyAgICAgIGlzIGEgZmlsZTsgcmV0dXJuIGBgRmFsc2VgYCBpZiBpdCBpcyBhIGRpcmVjdG9yeSBvciBvdGhlciBub24tZmlsZSBlbnRyeSwKKyAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KKworICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwgOmZ1bmM6YG9zLnN0YXRgCisgICAgICBhbG9uZyB3aXRoIDpmdW5jOmBzdGF0LlNfSVNSRUdgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoaXMgbWV0aG9kIGNhbiByYWlzZSA6ZXhjOmBPU0Vycm9yYCwgc3VjaCBhcyA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgLAorICAgICAgYnV0IDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYCBpcyBjYXVnaHQgYW5kIG5vdCByYWlzZWQuCisKKyAgICAgIEluIG1vc3QgY2FzZXMsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkLgorCisgICAuLiBtZXRob2Q6OiBpc19zeW1saW5rKCkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoaXMgZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rIChldmVuIGlmIGJyb2tlbik7CisgICAgICByZXR1cm4gYGBGYWxzZWBgIGlmIGl0IHBvaW50cyB0byBhIGRpcmVjdG9yeSBvciBhbnkga2luZCBvZiBmaWxlLAorICAgICAgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgorCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAorICAgICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorCisgICAgICBUaGUgbWV0aG9kIGNhbiByYWlzZSA6ZXhjOmBPU0Vycm9yYCwgc3VjaCBhcyA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgLAorICAgICAgYnV0IDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYCBpcyBjYXVnaHQgYW5kIG5vdCByYWlzZWQuCisKKyAgICAgIEluIG1vc3QgY2FzZXMsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkLgorCisgICAuLiBtZXRob2Q6OiBzdGF0KFwqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgICAgUmV0dXJuIGEgOmNsYXNzOmBzdGF0X3Jlc3VsdGAgb2JqZWN0IGZvciB0aGlzIGVudHJ5LiBUaGlzIG1ldGhvZAorICAgICAgZm9sbG93cyBzeW1ib2xpYyBsaW5rcyBieSBkZWZhdWx0OyB0byBzdGF0IGEgc3ltYm9saWMgbGluayBhZGQgdGhlCisgICAgICBgYGZvbGxvd19zeW1saW5rcz1GYWxzZWBgIGFyZ3VtZW50LgorCisgICAgICBPbiBVbml4LCB0aGlzIG1ldGhvZCBhbHdheXMgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbC4gT24gV2luZG93cywKKyAgICAgIGBgRGlyRW50cnkuc3RhdCgpYGAgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbCBvbmx5IGlmIHRoZQorICAgICAgZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rLCBhbmQgYGBEaXJFbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYAorICAgICAgbmV2ZXIgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbC4KKworICAgICAgT24gV2luZG93cywgdGhlIGBgc3RfaW5vYGAsIGBgc3RfZGV2YGAgYW5kIGBgc3RfbmxpbmtgYCBhdHRyaWJ1dGVzIG9mIHRoZQorICAgICAgOmNsYXNzOmBzdGF0X3Jlc3VsdGAgYXJlIGFsd2F5cyBzZXQgdG8gemVyby4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KKyAgICAgIGdldCB0aGVzZSBhdHRyaWJ1dGVzLgorCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAKKyAgICAgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBHZXQgdGhlIHN0YXR1cyBvZiBhIGZpbGUgb3IgYSBmaWxlIGRlc2NyaXB0b3IuIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYQpAQCAtMTg5MCw4ICsyMDY0LDYgQEAKICAgICAgID4+PiBzdGF0aW5mby5zdF9zaXplCiAgICAgICAyNjQKIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBzZWVhbHNvOjoKIAogICAgICAgOmZ1bmM6YGZzdGF0YCBhbmQgOmZ1bmM6YGxzdGF0YCBmdW5jdGlvbnMuCkBAIC0yMDM5LDYgKzIyMTEsMTUgQEAKIAogICAgICAgRmlsZSB0eXBlLgogCisgICBPbiBXaW5kb3dzIHN5c3RlbXMsIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlIGlzIGFsc28gYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdF9maWxlX2F0dHJpYnV0ZXMKKworICAgICAgV2luZG93cyBmaWxlIGF0dHJpYnV0ZXM6IGBgZHdGaWxlQXR0cmlidXRlc2BgIG1lbWJlciBvZiB0aGUKKyAgICAgIGBgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT05gYCBzdHJ1Y3R1cmUgcmV0dXJuZWQgYnkKKyAgICAgIDpjOmZ1bmM6YEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlYC4gU2VlIHRoZSBgYEZJTEVfQVRUUklCVVRFXypgYAorICAgICAgY29uc3RhbnRzIGluIHRoZSA6bW9kOmBzdGF0YCBtb2R1bGUuCisKICAgIFRoZSBzdGFuZGFyZCBtb2R1bGUgOm1vZDpgc3RhdGAgZGVmaW5lcyBmdW5jdGlvbnMgYW5kIGNvbnN0YW50cyB0aGF0IGFyZQogICAgdXNlZnVsIGZvciBleHRyYWN0aW5nIGluZm9ybWF0aW9uIGZyb20gYSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUuIChPbgogICAgV2luZG93cywgc29tZSBpdGVtcyBhcmUgZmlsbGVkIHdpdGggZHVtbXkgdmFsdWVzLikKQEAgLTIwNTYsNiArMjIzNyw5IEBACiAgICAgICBBZGRlZCB0aGUgOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwgYW5kCiAgICAgICA6YXR0cjpgc3RfY3RpbWVfbnNgIG1lbWJlcnMuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlIDphdHRyOmBzdF9maWxlX2F0dHJpYnV0ZXNgIG1lbWJlciBvbiBXaW5kb3dzLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdF9mbG9hdF90aW1lcyhbbmV3dmFsdWVdKQogCkBAIC0yMjU5LDEwICsyNDQzLDEyIEBACiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cwogCiAuLiBmdW5jdGlvbjo6IHVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMjI3MSw4ICsyNDU3LDYgQEAKICAgIG5hbWUuICBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciA6ZnVuYzpgcmVtb3ZlYCBmb3IKICAgIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCkBAIC0yMzA5LDggKzI0OTMsNiBAQAogICAgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCBhbmQgOnJlZjpgbm90CiAgICBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCkBAIC0yNDAxLDYgKzI1ODMsMTAgQEAKICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgogICAgICAgICAgICAgICBvcy5ybWRpcihvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGlzIGZ1bmN0aW9uIG5vdyBjYWxscyA6ZnVuYzpgb3Muc2NhbmRpcmAgaW5zdGVhZCBvZiA6ZnVuYzpgb3MubGlzdGRpcmAsCisgICAgICBtYWtpbmcgaXQgZmFzdGVyIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gOmZ1bmM6YG9zLnN0YXRgLgorCiAKIC4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCiAKQEAgLTI1NTcsOCArMjc0Myw2IEBACiAgICBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgOmNvbnN0OmBTSUdBQlJUYCB3aXRoCiAgICA6ZnVuYzpgc2lnbmFsLnNpZ25hbGAuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQogCiAuLiBmdW5jdGlvbjo6IGV4ZWNsKHBhdGgsIGFyZzAsIGFyZzEsIC4uLikKICAgICAgICAgICAgICAgZXhlY2xlKHBhdGgsIGFyZzAsIGFyZzEsIC4uLiwgZW52KQpAQCAtMjYyMiw4ICsyODA2LDYgQEAKICAgIEV4aXQgdGhlIHByb2Nlc3Mgd2l0aCBzdGF0dXMgKm4qLCB3aXRob3V0IGNhbGxpbmcgY2xlYW51cCBoYW5kbGVycywgZmx1c2hpbmcKICAgIHN0ZGlvIGJ1ZmZlcnMsIGV0Yy4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgotCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhlIHN0YW5kYXJkIHdheSB0byBleGl0IGlzIGBgc3lzLmV4aXQobilgYC4gIDpmdW5jOmBfZXhpdGAgc2hvdWxkCkBAIC0yOTg2LDYgKzMxNjgsMTAgQEAKICAgIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4gIFVzZSB0aGUgOmZ1bmM6YG9zLnBhdGgubm9ybXBhdGhgIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGF0CiAgICB0aGUgcGF0aCBpcyBwcm9wZXJseSBlbmNvZGVkIGZvciBXaW4zMi4KIAorICAgVG8gcmVkdWNlIGludGVycHJldGVyIHN0YXJ0dXAgb3ZlcmhlYWQsIHRoZSBXaW4zMiA6YzpmdW5jOmBTaGVsbEV4ZWN1dGVgCisgICBmdW5jdGlvbiBpcyBub3QgcmVzb2x2ZWQgdW50aWwgdGhpcyBmdW5jdGlvbiBpcyBmaXJzdCBjYWxsZWQuICBJZiB0aGUgZnVuY3Rpb24KKyAgIGNhbm5vdCBiZSByZXNvbHZlZCwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisKICAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KIAogCkBAIC0zMTMzLDYgKzMzMTksMTEgQEAKICAgIGlkIGlzIGtub3duLCBub3QgbmVjZXNzYXJpbHkgYSBjaGlsZCBwcm9jZXNzLiBUaGUgOmZ1bmM6YHNwYXduXCogPHNwYXdubD5gCiAgICBmdW5jdGlvbnMgY2FsbGVkIHdpdGggOmNvbnN0OmBQX05PV0FJVGAgcmV0dXJuIHN1aXRhYmxlIHByb2Nlc3MgaGFuZGxlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHdhaXQzKG9wdGlvbnMpCiAKQEAgLTM1NDAsMyArMzczMSw5IEBACiAKICAgIEZvciBhbiBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCiAgICBwcm92aWRlZCBieSB5b3VyIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBPbiBMaW51eCAzLjE3IGFuZCBuZXdlciwgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIG5vdyB1c2VkCisgICAgICB3aGVuIGF2YWlsYWJsZS4gIE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgdGhlIEMgYGBnZXRlbnRyb3B5KClgYAorICAgICAgZnVuY3Rpb24gaXMgbm93IHVzZWQuIFRoZXNlIGZ1bmN0aW9ucyBhdm9pZCB0aGUgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgZmlsZQorICAgICAgZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdCBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAppbmRleCBiYjUwODFhLi5jNjBkNTk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CkBAIC0xNDgsMjEgKzE0OCwzMCBAQAogCiAuLiBtZXRob2Q6OiBvc3NfYXVkaW9fZGV2aWNlLndyaXRlKGRhdGEpCiAKLSAgIFdyaXRlIHRoZSBQeXRob24gc3RyaW5nICpkYXRhKiB0byB0aGUgYXVkaW8gZGV2aWNlIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZgotICAgYnl0ZXMgd3JpdHRlbi4gIElmIHRoZSBhdWRpbyBkZXZpY2UgaXMgaW4gYmxvY2tpbmcgbW9kZSAodGhlIGRlZmF1bHQpLCB0aGUKLSAgIGVudGlyZSBzdHJpbmcgaXMgYWx3YXlzIHdyaXR0ZW4gKGFnYWluLCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHVzdWFsIFVuaXggZGV2aWNlCi0gICBzZW1hbnRpY3MpLiAgSWYgdGhlIGRldmljZSBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSwgc29tZSBkYXRhIG1heSBub3QgYmUgd3JpdHRlbgorICAgV3JpdGUgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgICpkYXRhKiB0byB0aGUgYXVkaW8gZGV2aWNlIGFuZCByZXR1cm4gdGhlCisgICBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIElmIHRoZSBhdWRpbyBkZXZpY2UgaXMgaW4gYmxvY2tpbmcgbW9kZSAodGhlCisgICBkZWZhdWx0KSwgdGhlIGVudGlyZSBkYXRhIGlzIGFsd2F5cyB3cml0dGVuIChhZ2FpbiwgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbQorICAgdXN1YWwgVW5peCBkZXZpY2Ugc2VtYW50aWNzKS4gIElmIHRoZSBkZXZpY2UgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUsIHNvbWUKKyAgIGRhdGEgbWF5IG5vdCBiZSB3cml0dGVuCiAgICAtLS1zZWUgOm1ldGg6YHdyaXRlYWxsYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4gbWV0aG9kOjogb3NzX2F1ZGlvX2RldmljZS53cml0ZWFsbChkYXRhKQogCi0gICBXcml0ZSB0aGUgZW50aXJlIFB5dGhvbiBzdHJpbmcgKmRhdGEqIHRvIHRoZSBhdWRpbyBkZXZpY2U6IHdhaXRzIHVudGlsIHRoZSBhdWRpbwotICAgZGV2aWNlIGlzIGFibGUgdG8gYWNjZXB0IGRhdGEsIHdyaXRlcyBhcyBtdWNoIGRhdGEgYXMgaXQgd2lsbCBhY2NlcHQsIGFuZAotICAgcmVwZWF0cyB1bnRpbCAqZGF0YSogaGFzIGJlZW4gY29tcGxldGVseSB3cml0dGVuLiBJZiB0aGUgZGV2aWNlIGlzIGluIGJsb2NraW5nCi0gICBtb2RlICh0aGUgZGVmYXVsdCksIHRoaXMgaGFzIHRoZSBzYW1lIGVmZmVjdCBhcyA6bWV0aDpgd3JpdGVgOyA6bWV0aDpgd3JpdGVhbGxgCi0gICBpcyBvbmx5IHVzZWZ1bCBpbiBub24tYmxvY2tpbmcgbW9kZS4gIEhhcyBubyByZXR1cm4gdmFsdWUsIHNpbmNlIHRoZSBhbW91bnQgb2YKLSAgIGRhdGEgd3JpdHRlbiBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIGFtb3VudCBvZiBkYXRhIHN1cHBsaWVkLgorICAgV3JpdGUgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgICpkYXRhKiB0byB0aGUgYXVkaW8gZGV2aWNlOiB3YWl0cyB1bnRpbAorICAgdGhlIGF1ZGlvIGRldmljZSBpcyBhYmxlIHRvIGFjY2VwdCBkYXRhLCB3cml0ZXMgYXMgbXVjaCBkYXRhIGFzIGl0IHdpbGwKKyAgIGFjY2VwdCwgYW5kIHJlcGVhdHMgdW50aWwgKmRhdGEqIGhhcyBiZWVuIGNvbXBsZXRlbHkgd3JpdHRlbi4gSWYgdGhlIGRldmljZQorICAgaXMgaW4gYmxvY2tpbmcgbW9kZSAodGhlIGRlZmF1bHQpLCB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMKKyAgIDptZXRoOmB3cml0ZWA7IDptZXRoOmB3cml0ZWFsbGAgaXMgb25seSB1c2VmdWwgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBIYXMKKyAgIG5vIHJldHVybiB2YWx1ZSwgc2luY2UgdGhlIGFtb3VudCBvZiBkYXRhIHdyaXR0ZW4gaXMgYWx3YXlzIGVxdWFsIHRvIHRoZQorICAgYW1vdW50IG9mIGRhdGEgc3VwcGxpZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBBdWRpbyBkZXZpY2Ugb2JqZWN0cyBhbHNvIHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCwgaS5lLiB0aGV5IGNhbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wYXRobGliLnJzdAppbmRleCAyNGUyYTMwLi4yZjA2NTQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wYXRobGliLnJzdApAQCAtNjI4LDYgKzYyOCwxNyBAQAogICAgICAgUG9zaXhQYXRoKCcvaG9tZS9hbnRvaW5lL3BhdGhsaWInKQogCiAKKy4uIGNsYXNzbWV0aG9kOjogUGF0aC5ob21lKCkKKworICAgUmV0dXJuIGEgbmV3IHBhdGggb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IChhcworICAgcmV0dXJuZWQgYnkgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdXNlcmAgd2l0aCBgYH5gYCBjb25zdHJ1Y3QpOjoKKworICAgICAgPj4+IFBhdGguaG9tZSgpCisgICAgICBQb3NpeFBhdGgoJy9ob21lL2FudG9pbmUnKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBtZXRob2Q6OiBQYXRoLnN0YXQoKQogCiAgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBwYXRoIChzaW1pbGFybHkgdG8gOmZ1bmM6YG9zLnN0YXRgKS4KQEAgLTY3MCw2ICs2ODEsMTggQEAKICAgICAgIHN5bWxpbmsgKnBvaW50cyB0byogYW4gZXhpc3RpbmcgZmlsZSBvciBkaXJlY3RvcnkuCiAKIAorLi4gbWV0aG9kOjogUGF0aC5leHBhbmR1c2VyKCkKKworICAgUmV0dXJuIGEgbmV3IHBhdGggd2l0aCBleHBhbmRlZCBgYH5gYCBhbmQgYGB+dXNlcmBgIGNvbnN0cnVjdHMsCisgICBhcyByZXR1cm5lZCBieSA6bWV0aDpgb3MucGF0aC5leHBhbmR1c2VyYDo6CisKKyAgICAgID4+PiBwID0gUG9zaXhQYXRoKCd+L2ZpbG1zL01vbnR5IFB5dGhvbicpCisgICAgICA+Pj4gcC5leHBhbmR1c2VyKCkKKyAgICAgIFBvc2l4UGF0aCgnL2hvbWUvZXJpYy9maWxtcy9Nb250eSBQeXRob24nKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBtZXRob2Q6OiBQYXRoLmdsb2IocGF0dGVybikKIAogICAgR2xvYiB0aGUgZ2l2ZW4gKnBhdHRlcm4qIGluIHRoZSBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgdGhpcyBwYXRoLApAQCAtNzkxLDcgKzgxNCw3IEBACiAgICB0aGUgc3ltYm9saWMgbGluaydzIGluZm9ybWF0aW9uIHJhdGhlciB0aGFuIGl0cyB0YXJnZXQncy4KIAogCi0uLiBtZXRob2Q6OiBQYXRoLm1rZGlyKG1vZGU9MG83NzcsIHBhcmVudHM9RmFsc2UpCisuLiBtZXRob2Q6OiBQYXRoLm1rZGlyKG1vZGU9MG83NzcsIHBhcmVudHM9RmFsc2UsIGV4aXN0X29rPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGF0IHRoaXMgZ2l2ZW4gcGF0aC4gIElmICptb2RlKiBpcyBnaXZlbiwgaXQgaXMKICAgIGNvbWJpbmVkIHdpdGggdGhlIHByb2Nlc3MnIGBgdW1hc2tgYCB2YWx1ZSB0byBkZXRlcm1pbmUgdGhlIGZpbGUgbW9kZQpAQCAtODA1LDYgKzgyOCwxNiBAQAogICAgSWYgKnBhcmVudHMqIGlzIGZhbHNlICh0aGUgZGVmYXVsdCksIGEgbWlzc2luZyBwYXJlbnQgcmFpc2VzCiAgICA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAuCiAKKyAgIElmICpleGlzdF9vayogaXMgZmFsc2UgKHRoZSBkZWZhdWx0KSwgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcworICAgcmFpc2VkIGlmIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLgorCisgICBJZiAqZXhpc3Rfb2sqIGlzIHRydWUsIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgZXhjZXB0aW9ucyB3aWxsIGJlCisgICBpZ25vcmVkIChzYW1lIGJlaGF2aW9yIGFzIHRoZSBQT1NJWCBgYG1rZGlyIC1wYGAgY29tbWFuZCksIGJ1dCBvbmx5IGlmIHRoZQorICAgbGFzdCBwYXRoIGNvbXBvbmVudCBpcyBub3QgYW4gZXhpc3Rpbmcgbm9uLWRpcmVjdG9yeSBmaWxlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlICpleGlzdF9vayogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBQYXRoLm9wZW4obW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKIApAQCAtODI0LDYgKzg1NywzNCBAQAogICAgaWYgdGhlIGZpbGUncyB1aWQgaXNuJ3QgZm91bmQgaW4gdGhlIHN5c3RlbSBkYXRhYmFzZS4KIAogCisuLiBtZXRob2Q6OiBQYXRoLnJlYWRfYnl0ZXMoKQorCisgICBSZXR1cm4gdGhlIGJpbmFyeSBjb250ZW50cyBvZiB0aGUgcG9pbnRlZC10byBmaWxlIGFzIGEgYnl0ZXMgb2JqZWN0OjoKKworICAgICAgPj4+IHAgPSBQYXRoKCdteV9iaW5hcnlfZmlsZScpCisgICAgICA+Pj4gcC53cml0ZV9ieXRlcyhiJ0JpbmFyeSBmaWxlIGNvbnRlbnRzJykKKyAgICAgIDIwCisgICAgICA+Pj4gcC5yZWFkX2J5dGVzKCkKKyAgICAgIGInQmluYXJ5IGZpbGUgY29udGVudHMnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKKy4uIG1ldGhvZDo6IFBhdGgucmVhZF90ZXh0KGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQorCisgICBSZXR1cm4gdGhlIGRlY29kZWQgY29udGVudHMgb2YgdGhlIHBvaW50ZWQtdG8gZmlsZSBhcyBhIHN0cmluZzo6CisKKyAgICAgID4+PiBwID0gUGF0aCgnbXlfdGV4dF9maWxlJykKKyAgICAgID4+PiBwLndyaXRlX3RleHQoJ1RleHQgZmlsZSBjb250ZW50cycpCisgICAgICAxOAorICAgICAgPj4+IHAucmVhZF90ZXh0KCkKKyAgICAgICdUZXh0IGZpbGUgY29udGVudHMnCisKKyAgIFRoZSBvcHRpb25hbCBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbiA6ZnVuYzpgb3BlbmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIG1ldGhvZDo6IFBhdGgucmVuYW1lKHRhcmdldCkKIAogICAgUmVuYW1lIHRoaXMgZmlsZSBvciBkaXJlY3RvcnkgdG8gdGhlIGdpdmVuICp0YXJnZXQqLiAgKnRhcmdldCogY2FuIGJlCkBAIC04ODQsNiArOTQ1LDI1IEBACiAgICBSZW1vdmUgdGhpcyBkaXJlY3RvcnkuICBUaGUgZGlyZWN0b3J5IG11c3QgYmUgZW1wdHkuCiAKIAorLi4gbWV0aG9kOjogUGF0aC5zYW1lZmlsZShvdGhlcl9wYXRoKQorCisgICBSZXR1cm4gd2hldGhlciB0aGlzIHBhdGggcG9pbnRzIHRvIHRoZSBzYW1lIGZpbGUgYXMgKm90aGVyX3BhdGgqLCB3aGljaAorICAgY2FuIGJlIGVpdGhlciBhIFBhdGggb2JqZWN0LCBvciBhIHN0cmluZy4gIFRoZSBzZW1hbnRpY3MgYXJlIHNpbWlsYXIKKyAgIHRvIDpmdW5jOmBvcy5wYXRoLnNhbWVmaWxlYCBhbmQgOmZ1bmM6YG9zLnBhdGguc2FtZXN0YXRgLgorCisgICBBbiA6ZXhjOmBPU0Vycm9yYCBjYW4gYmUgcmFpc2VkIGlmIGVpdGhlciBmaWxlIGNhbm5vdCBiZSBhY2Nlc3NlZCBmb3Igc29tZQorICAgcmVhc29uLgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ3NwYW0nKQorICAgICAgPj4+IHEgPSBQYXRoKCdlZ2dzJykKKyAgICAgID4+PiBwLnNhbWVmaWxlKHEpCisgICAgICBGYWxzZQorICAgICAgPj4+IHAuc2FtZWZpbGUoJ3NwYW0nKQorICAgICAgVHJ1ZQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBtZXRob2Q6OiBQYXRoLnN5bWxpbmtfdG8odGFyZ2V0LCB0YXJnZXRfaXNfZGlyZWN0b3J5PUZhbHNlKQogCiAgICBNYWtlIHRoaXMgcGF0aCBhIHN5bWJvbGljIGxpbmsgdG8gKnRhcmdldCouICBVbmRlciBXaW5kb3dzLApAQCAtOTE3LDMgKzk5NywzMyBAQAogCiAgICBSZW1vdmUgdGhpcyBmaWxlIG9yIHN5bWJvbGljIGxpbmsuICBJZiB0aGUgcGF0aCBwb2ludHMgdG8gYSBkaXJlY3RvcnksCiAgICB1c2UgOmZ1bmM6YFBhdGgucm1kaXJgIGluc3RlYWQuCisKKworLi4gbWV0aG9kOjogUGF0aC53cml0ZV9ieXRlcyhkYXRhKQorCisgICBPcGVuIHRoZSBmaWxlIHBvaW50ZWQgdG8gaW4gYnl0ZXMgbW9kZSwgd3JpdGUgKmRhdGEqIHRvIGl0LCBhbmQgY2xvc2UgdGhlCisgICBmaWxlOjoKKworICAgICAgPj4+IHAgPSBQYXRoKCdteV9iaW5hcnlfZmlsZScpCisgICAgICA+Pj4gcC53cml0ZV9ieXRlcyhiJ0JpbmFyeSBmaWxlIGNvbnRlbnRzJykKKyAgICAgIDIwCisgICAgICA+Pj4gcC5yZWFkX2J5dGVzKCkKKyAgICAgIGInQmluYXJ5IGZpbGUgY29udGVudHMnCisKKyAgIEFuIGV4aXN0aW5nIGZpbGUgb2YgdGhlIHNhbWUgbmFtZSBpcyBvdmVyd3JpdHRlbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKworLi4gbWV0aG9kOjogUGF0aC53cml0ZV90ZXh0KGRhdGEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQorCisgICBPcGVuIHRoZSBmaWxlIHBvaW50ZWQgdG8gaW4gdGV4dCBtb2RlLCB3cml0ZSAqZGF0YSogdG8gaXQsIGFuZCBjbG9zZSB0aGUKKyAgIGZpbGU6OgorCisgICAgICA+Pj4gcCA9IFBhdGgoJ215X3RleHRfZmlsZScpCisgICAgICA+Pj4gcC53cml0ZV90ZXh0KCdUZXh0IGZpbGUgY29udGVudHMnKQorICAgICAgMTgKKyAgICAgID4+PiBwLnJlYWRfdGV4dCgpCisgICAgICAnVGV4dCBmaWxlIGNvbnRlbnRzJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CmluZGV4IDBmNDhjYjEuLmE5MjUyNmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiBBdHRlbXB0cyB0byBwaWNrbGUgdW5waWNrbGFibGUgb2JqZWN0cyB3aWxsIHJhaXNlIHRoZSA6ZXhjOmBQaWNrbGluZ0Vycm9yYAogZXhjZXB0aW9uOyB3aGVuIHRoaXMgaGFwcGVucywgYW4gdW5zcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzIG1heSBoYXZlIGFscmVhZHkKIGJlZW4gd3JpdHRlbiB0byB0aGUgdW5kZXJseWluZyBmaWxlLiAgVHJ5aW5nIHRvIHBpY2tsZSBhIGhpZ2hseSByZWN1cnNpdmUgZGF0YQotc3RydWN0dXJlIG1heSBleGNlZWQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2lsbCBiZQorc3RydWN0dXJlIG1heSBleGNlZWQgdGhlIG1heGltdW0gcmVjdXJzaW9uIGRlcHRoLCBhIDpleGM6YFJlY3Vyc2lvbkVycm9yYCB3aWxsIGJlCiByYWlzZWQgaW4gdGhpcyBjYXNlLiAgWW91IGNhbiBjYXJlZnVsbHkgcmFpc2UgdGhpcyBsaW1pdCB3aXRoCiA6ZnVuYzpgc3lzLnNldHJlY3Vyc2lvbmxpbWl0YC4KIApAQCAtODU5LDcgKzg1OSw3IEBACiAgICBkYXRhID0gewogICAgICAgICdhJzogWzEsIDIuMCwgMywgNCs2al0sCiAgICAgICAgJ2InOiAoImNoYXJhY3RlciBzdHJpbmciLCBiImJ5dGUgc3RyaW5nIiksCi0gICAgICAgJ2MnOiBzZXQoW05vbmUsIFRydWUsIEZhbHNlXSkKKyAgICAgICAnYyc6IHtOb25lLCBUcnVlLCBGYWxzZX0KICAgIH0KIAogICAgd2l0aCBvcGVuKCdkYXRhLnBpY2tsZScsICd3YicpIGFzIGY6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CmluZGV4IDEzZWE3YjkuLjVkMzI5NWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CkBAIC01OCw3ICs1OCw3IEBACiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKICAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCi0gICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGNsYXNzOjogSW1wTG9hZGVyKGZ1bGxuYW1lLCBmaWxlLCBmaWxlbmFtZSwgZXRjKQpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBUaGlzIGVtdWxhdGlvbiBpcyBubyBsb25nZXIgbmVlZGVkLCBhcyB0aGUgc3RhbmRhcmQgaW1wb3J0IG1lY2hhbmlzbQotICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYAorICAgICAgaXMgbm93IGZ1bGx5IFBFUCAzMDIgY29tcGxpYW50IGFuZCBhdmFpbGFibGUgaW4gOm1vZDpgaW1wb3J0bGliYC4KIAogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0IGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CmluZGV4IGUyN2YyYWQuLjY3OWNjNmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKQEAgLTI0Nyw2ICsyNDcsOCBAQAogCiAgICBUaGlzIGlzIGFub3RoZXIgbmFtZSBmb3IgOmZ1bmM6YGxpbnV4X2Rpc3RyaWJ1dGlvbmAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjcKKwogLi4gZnVuY3Rpb246OiBsaW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWU9JycsIHZlcnNpb249JycsIGlkPScnLCBzdXBwb3J0ZWRfZGlzdHM9KCdTdVNFJywnZGViaWFuJywncmVkaGF0JywnbWFuZHJha2UnLC4uLiksIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MSkKIAogICAgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBPUyBkaXN0cmlidXRpb24gbmFtZS4KQEAgLTI2Myw2ICsyNjUsOCBAQAogICAgcGFyYW1ldGVycy4gIGBgaWRgYCBpcyB0aGUgaXRlbSBpbiBwYXJlbnRoZXNlcyBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIuICBJdAogICAgaXMgdXN1YWxseSB0aGUgdmVyc2lvbiBjb2RlbmFtZS4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNworCiAuLiBmdW5jdGlvbjo6IGxpYmNfdmVyKGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsIGxpYj0nJywgdmVyc2lvbj0nJywgY2h1bmtzaXplPTIwNDgpCiAKICAgIFRyaWVzIHRvIGRldGVybWluZSB0aGUgbGliYyB2ZXJzaW9uIGFnYWluc3Qgd2hpY2ggdGhlIGZpbGUgZXhlY3V0YWJsZSAoZGVmYXVsdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CmluZGV4IDQ1YmFhZDkuLjg0NjhmNGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdApAQCAtMTk0LDYgKzE5NCwxNSBAQAogICAgdGhlIHVuaXF1ZSBpZCBmb3IgdGhhdCBtZXNzYWdlIGluIHRoZSBmb3JtIGBgJ3Jlc3BvbnNlIG1lc2dudW0gdWlkYGAsIG90aGVyd2lzZQogICAgcmVzdWx0IGlzIGxpc3QgYGAocmVzcG9uc2UsIFsnbWVzZ251bSB1aWQnLCAuLi5dLCBvY3RldHMpYGAuCiAKKworLi4gbWV0aG9kOjogUE9QMy51dGY4KCkKKworICAgVHJ5IHRvIHN3aXRjaCB0byBVVEYtOCBtb2RlLiBSZXR1cm5zIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgc3VjY2Vzc2Z1bCwKKyAgIHJhaXNlcyA6Y2xhc3M6YGVycm9yX3Byb3RvYCBpZiBub3QuIFNwZWNpZmllZCBpbiA6UkZDOmA2ODU2YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gbWV0aG9kOjogUE9QMy5zdGxzKGNvbnRleHQ9Tm9uZSkKIAogICAgU3RhcnQgYSBUTFMgc2Vzc2lvbiBvbiB0aGUgYWN0aXZlIGNvbm5lY3Rpb24gYXMgc3BlY2lmaWVkIGluIDpyZmM6YDI1OTVgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcHByaW50LnJzdCBiL0RvYy9saWJyYXJ5L3BwcmludC5yc3QKaW5kZXggYzA1ODlhMy4uMGI0NGRjOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHByaW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9wcHJpbnQucnN0CkBAIC0yMzUsMTAgKzIzNSwxMCBAQAogICAgICAgICAgICAgICdjbGFzc2lmaWVycyc6IFsnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDIuNicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyIDo6IE9ubHknXSwKLSAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIHNwZWNpYWwgZm9jdXNcclxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcHJvdG9jb2wgaW50ZWdyYXRpb24uJywKKyAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgZm9jdXNcclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCBtdWx0aXByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdyYXRpb24uJywKICAgICAgICAgICAgICAnZG9jc191cmwnOiAnJywKICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLAogICAgICAgICAgICAgICdob21lX3BhZ2UnOiAnaHR0cDovL3R3aXN0ZWRtYXRyaXguY29tLycsCkBAIC0yODgsMTAgKzI4OCwxMCBAQAogICAgICAgICAgICAgICdjaGVlc2VjYWtlX2RvY3VtZW50YXRpb25faWQnOiBOb25lLAogICAgICAgICAgICAgICdjaGVlc2VjYWtlX2luc3RhbGxhYmlsaXR5X2lkJzogTm9uZSwKICAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbLi4uXSwKLSAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIHNwZWNpYWwgZm9jdXNcclxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcHJvdG9jb2wgaW50ZWdyYXRpb24uJywKKyAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSBmcmFtZXdvcmsgZm9yIFB5dGhvbiBwcm9ncmFtbWluZywgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgZm9jdXNcclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCBuZXR3b3JrIHByb2dyYW1taW5nIGFuZCBtdWx0aXByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdyYXRpb24uJywKICAgICAgICAgICAgICAnZG9jc191cmwnOiAnJywKICAgICAgICAgICAgICAnZG93bmxvYWRfdXJsJzogJ1VOS05PV04nLAogICAgICAgICAgICAgICdob21lX3BhZ2UnOiAnaHR0cDovL3R3aXN0ZWRtYXRyaXguY29tLycsCkBAIC0zMjMsMTMgKzMyMywxMiBAQAogICAgICAgICAgICAgICdjaGVlc2VjYWtlX2luc3RhbGxhYmlsaXR5X2lkJzogTm9uZSwKICAgICAgICAgICAgICAnY2xhc3NpZmllcnMnOiBbLi4uXSwKICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnQW4gZXh0ZW5zaWJsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1ld29yayBmb3IgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbW1pbmcsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCBzcGVjaWFsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9jdXNcclxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvbiBldmVudC1iYXNlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmsgcHJvZ3JhbW1pbmcgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgbXVsdGlwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1ld29yayBmb3IgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZ3JhbW1pbmcsIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWFsIGZvY3VzXHJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb24gZXZlbnQtYmFzZWQgbmV0d29yayAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2dyYW1taW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpcHJvdG9jb2wgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JhdGlvbi4nLAogICAgICAgICAgICAgICdkb2NzX3VybCc6ICcnLAogICAgICAgICAgICAgICdkb3dubG9hZF91cmwnOiAnVU5LTk9XTicsCkBAIC0zNDQsOCArMzQzLDggQEAKICAgICAgICAgICAgICAncmVsZWFzZV91cmwnOiAnaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL1R3aXN0ZWQvMTIuMy4wJywKICAgICAgICAgICAgICAncmVxdWlyZXNfcHl0aG9uJzogTm9uZSwKICAgICAgICAgICAgICAnc3RhYmxlX3ZlcnNpb24nOiBOb25lLAotICAgICAgICAgICAgICdzdW1tYXJ5JzogJ0FuIGFzeW5jaHJvbm91cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnbmV0d29ya2luZyBmcmFtZXdvcmsgJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gaW4gUHl0aG9uJywKKyAgICAgICAgICAgICAnc3VtbWFyeSc6ICdBbiBhc3luY2hyb25vdXMgbmV0d29ya2luZyAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrIHdyaXR0ZW4gaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbicsCiAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMTIuMy4wJ30sCiAgICAgJ3VybHMnOiBbey4uLn0sIHsuLi59XX0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0IGIvRG9jL2xpYnJhcnkvcHJvZmlsZS5yc3QKaW5kZXggMjkyODgyMS4uOTU5ZDliOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHJvZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcHJvZmlsZS5yc3QKQEAgLTMzLDcgKzMzLDcgQEAKIDIuIDptb2Q6YHByb2ZpbGVgLCBhIHB1cmUgUHl0aG9uIG1vZHVsZSB3aG9zZSBpbnRlcmZhY2UgaXMgaW1pdGF0ZWQgYnkKICAgIDptb2Q6YGNQcm9maWxlYCwgYnV0IHdoaWNoIGFkZHMgc2lnbmlmaWNhbnQgb3ZlcmhlYWQgdG8gcHJvZmlsZWQgcHJvZ3JhbXMuCiAgICBJZiB5b3UncmUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgcHJvZmlsZXIgaW4gc29tZSB3YXksIHRoZSB0YXNrIG1pZ2h0IGJlIGVhc2llcgotICAgd2l0aCB0aGlzIG1vZHVsZS4KKyAgIHdpdGggdGhpcyBtb2R1bGUuICBPcmlnaW5hbGx5IGRlc2lnbmVkIGFuZCB3cml0dGVuIGJ5IEppbSBSb3NraW5kLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QgYi9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAppbmRleCBiYWU4NDUwLi45N2YyYjIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdApAQCAtMjksOSArMjksOSBAQAogLi4gZnVuY3Rpb246OiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUsIGRvcmFpc2U9RmFsc2UsIG9wdGltaXplPS0xKQogCiAgICBDb21waWxlIGEgc291cmNlIGZpbGUgdG8gYnl0ZS1jb2RlIGFuZCB3cml0ZSBvdXQgdGhlIGJ5dGUtY29kZSBjYWNoZSBmaWxlLgotICAgVGhlIHNvdXJjZSBjb2RlIGlzIGxvYWRlZCBmcm9tIHRoZSBmaWxlIG5hbWUgKmZpbGUqLiAgVGhlICBieXRlLWNvZGUgaXMKLSAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpQRVA6YDMxNDdgIHBhdGgsIGVuZGluZyBpbgotICAgYGAucHljYGAgKGBgLnB5b2BgIGlmIG9wdGltaXphdGlvbiBpcyBlbmFibGVkIGluIHRoZSBjdXJyZW50IGludGVycHJldGVyKS4KKyAgIFRoZSBzb3VyY2UgY29kZSBpcyBsb2FkZWQgZnJvbSB0aGUgZmlsZSBuYW1lICpmaWxlKi4gIFRoZSBieXRlLWNvZGUgaXMKKyAgIHdyaXR0ZW4gdG8gKmNmaWxlKiwgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDpwZXA6YDMxNDdgLzpwZXA6YDQ4OGAgcGF0aCwgZW5kaW5nCisgICBpbiBgYC5weWNgYC4KICAgIEZvciBleGFtcGxlLCBpZiAqZmlsZSogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCAqY2ZpbGUqIHdpbGwgZGVmYXVsdCB0bwogICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCBmb3IgUHl0aG9uIDMuMi4gIElmICpkZmlsZSogaXMKICAgIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgaW4gZXJyb3IgbWVzc2FnZXMgd2hlbgpAQCAtNjgsNyArNjgsNyBAQAogLi4gZnVuY3Rpb246OiBtYWluKGFyZ3M9Tm9uZSkKIAogICAgQ29tcGlsZSBzZXZlcmFsIHNvdXJjZSBmaWxlcy4gIFRoZSBmaWxlcyBuYW1lZCBpbiAqYXJncyogKG9yIG9uIHRoZSBjb21tYW5kCi0gICBsaW5lLCBpZiAqYXJncyogaXMgYGBOb25lYGApIGFyZSBjb21waWxlZCBhbmQgdGhlIHJlc3VsdGluZyBieXRlY29kZSBpcworICAgbGluZSwgaWYgKmFyZ3MqIGlzIGBgTm9uZWBgKSBhcmUgY29tcGlsZWQgYW5kIHRoZSByZXN1bHRpbmcgYnl0ZS1jb2RlIGlzCiAgICBjYWNoZWQgaW4gdGhlIG5vcm1hbCBtYW5uZXIuICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHNlYXJjaCBhIGRpcmVjdG9yeQogICAgc3RydWN0dXJlIHRvIGxvY2F0ZSBzb3VyY2UgZmlsZXM7IGl0IG9ubHkgY29tcGlsZXMgZmlsZXMgbmFtZWQgZXhwbGljaXRseS4KICAgIElmIGBgJy0nYGAgaXMgdGhlIG9ubHkgcGFyYW1ldGVyIGluIGFyZ3MsIHRoZSBsaXN0IG9mIGZpbGVzIGlzIHRha2VuIGZyb20KQEAgLTg2LDQgKzg2LDMgQEAKIAogICAgTW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgCiAgICAgICBVdGlsaXRpZXMgdG8gY29tcGlsZSBhbGwgUHl0aG9uIHNvdXJjZSBmaWxlcyBpbiBhIGRpcmVjdG9yeSB0cmVlLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKaW5kZXggNjgwZDY5MC4uMWNiMDkzNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdApAQCAtMTU4LDIyICsxNTgsMzIgQEAKIAogRXhhbXBsZSBvZiBob3cgdG8gd2FpdCBmb3IgZW5xdWV1ZWQgdGFza3MgdG8gYmUgY29tcGxldGVkOjoKIAotICAgZGVmIHdvcmtlcigpOgotICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgIGl0ZW0gPSBxLmdldCgpCi0gICAgICAgICAgIGRvX3dvcmsoaXRlbSkKLSAgICAgICAgICAgcS50YXNrX2RvbmUoKQorICAgIGRlZiB3b3JrZXIoKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGl0ZW0gPSBxLmdldCgpCisgICAgICAgICAgICBpZiBpdGVtIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGRvX3dvcmsoaXRlbSkKKyAgICAgICAgICAgIHEudGFza19kb25lKCkKIAotICAgcSA9IFF1ZXVlKCkKLSAgIGZvciBpIGluIHJhbmdlKG51bV93b3JrZXJfdGhyZWFkcyk6Ci0gICAgICAgIHQgPSBUaHJlYWQodGFyZ2V0PXdvcmtlcikKLSAgICAgICAgdC5kYWVtb24gPSBUcnVlCisgICAgcSA9IHF1ZXVlLlF1ZXVlKCkKKyAgICB0aHJlYWRzID0gW10KKyAgICBmb3IgaSBpbiByYW5nZShudW1fd29ya2VyX3RocmVhZHMpOgorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d29ya2VyKQogICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgdGhyZWFkcy5hcHBlbmQodCkKIAotICAgZm9yIGl0ZW0gaW4gc291cmNlKCk6Ci0gICAgICAgcS5wdXQoaXRlbSkKKyAgICBmb3IgaXRlbSBpbiBzb3VyY2UoKToKKyAgICAgICAgcS5wdXQoaXRlbSkKIAotICAgcS5qb2luKCkgICAgICAgIyBibG9jayB1bnRpbCBhbGwgdGFza3MgYXJlIGRvbmUKKyAgICAjIGJsb2NrIHVudGlsIGFsbCB0YXNrcyBhcmUgZG9uZQorICAgIHEuam9pbigpCisKKyAgICAjIHN0b3Agd29ya2VycworICAgIGZvciBpIGluIHJhbmdlKG51bV93b3JrZXJfdGhyZWFkcyk6CisgICAgICAgIHEucHV0KE5vbmUpCisgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgdC5qb2luKCkKIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CmluZGV4IDExZGQzNjcuLmY4Yjc3MjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdApAQCAtNDYsOCArNDYsNyBAQAogLi4gd2FybmluZzo6CiAKICAgIFRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgb2YgdGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgotICAgc2VjdXJpdHkgcHVycG9zZXMuICBVc2UgOmZ1bmM6YG9zLnVyYW5kb21gIG9yIDpjbGFzczpgU3lzdGVtUmFuZG9tYCBpZgotICAgeW91IHJlcXVpcmUgYSBjcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgorICAgc2VjdXJpdHkgcHVycG9zZXMuCiAKIAogQm9va2tlZXBpbmcgZnVuY3Rpb25zOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmUucnN0IGIvRG9jL2xpYnJhcnkvcmUucnN0CmluZGV4IGMzYzhiNjUuLjg4ODQ1ODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZS5yc3QKQEAgLTI4MSw5ICsyODEsNyBAQAogICAgYXNzZXJ0aW9uYC4gYGAoPzw9YWJjKWRlZmBgIHdpbGwgZmluZCBhIG1hdGNoIGluIGBgYWJjZGVmYGAsIHNpbmNlIHRoZQogICAgbG9va2JlaGluZCB3aWxsIGJhY2sgdXAgMyBjaGFyYWN0ZXJzIGFuZCBjaGVjayBpZiB0aGUgY29udGFpbmVkIHBhdHRlcm4gbWF0Y2hlcy4KICAgIFRoZSBjb250YWluZWQgcGF0dGVybiBtdXN0IG9ubHkgbWF0Y2ggc3RyaW5ncyBvZiBzb21lIGZpeGVkIGxlbmd0aCwgbWVhbmluZyB0aGF0Ci0gICBgYGFiY2BgIG9yIGBgYXxiYGAgYXJlIGFsbG93ZWQsIGJ1dCBgYGEqYGAgYW5kIGBgYXszLDR9YGAgYXJlIG5vdC4gIEdyb3VwCi0gICByZWZlcmVuY2VzIGFyZSBub3Qgc3VwcG9ydGVkIGV2ZW4gaWYgdGhleSBtYXRjaCBzdHJpbmdzIG9mIHNvbWUgZml4ZWQgbGVuZ3RoLgotICAgTm90ZSB0aGF0CisgICBgYGFiY2BgIG9yIGBgYXxiYGAgYXJlIGFsbG93ZWQsIGJ1dCBgYGEqYGAgYW5kIGBgYXszLDR9YGAgYXJlIG5vdC4gIE5vdGUgdGhhdAogICAgcGF0dGVybnMgd2hpY2ggc3RhcnQgd2l0aCBwb3NpdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbnMgd2lsbCBub3QgbWF0Y2ggYXQgdGhlCiAgICBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBiZWluZyBzZWFyY2hlZDsgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byB1c2UgdGhlCiAgICA6ZnVuYzpgc2VhcmNoYCBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aGUgOmZ1bmM6YG1hdGNoYCBmdW5jdGlvbjoKQEAgLTI5OSwxMiArMjk3LDE0IEBACiAgICAgICA+Pj4gbS5ncm91cCgwKQogICAgICAgJ2VnZycKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgZ3JvdXAgcmVmZXJlbmNlcyBvZiBmaXhlZCBsZW5ndGguCisKIGBgKD88IS4uLilgYAogICAgTWF0Y2hlcyBpZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIGlzIG5vdCBwcmVjZWRlZCBieSBhIG1hdGNoIGZvcgogICAgYGAuLi5gYC4gIFRoaXMgaXMgY2FsbGVkIGEgOmRmbjpgbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25gLiAgU2ltaWxhciB0bwogICAgcG9zaXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zLCB0aGUgY29udGFpbmVkIHBhdHRlcm4gbXVzdCBvbmx5IG1hdGNoIHN0cmluZ3Mgb2YKLSAgIHNvbWUgZml4ZWQgbGVuZ3RoIGFuZCBzaG91bGRuJ3QgY29udGFpbiBncm91cCByZWZlcmVuY2VzLgotICAgUGF0dGVybnMgd2hpY2ggc3RhcnQgd2l0aCBuZWdhdGl2ZSBsb29rYmVoaW5kIGFzc2VydGlvbnMgbWF5CisgICBzb21lIGZpeGVkIGxlbmd0aC4gIFBhdHRlcm5zIHdoaWNoIHN0YXJ0IHdpdGggbmVnYXRpdmUgbG9va2JlaGluZCBhc3NlcnRpb25zIG1heQogICAgbWF0Y2ggYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkLgogCiBgYCg/KGlkL25hbWUpeWVzLXBhdHRlcm58bm8tcGF0dGVybilgYApAQCAtNDM4LDYgKzQzOCwxMCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKKyAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQorICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtNTI0LDcgKzUyOCwxMSBAQAogICAgY3VycmVudCBsb2NhbGUuIFRoZSB1c2Ugb2YgdGhpcyBmbGFnIGlzIGRpc2NvdXJhZ2VkIGFzIHRoZSBsb2NhbGUgbWVjaGFuaXNtCiAgICBpcyB2ZXJ5IHVucmVsaWFibGUsIGFuZCBpdCBvbmx5IGhhbmRsZXMgb25lICJjdWx0dXJlIiBhdCBhIHRpbWUgYW55d2F5OwogICAgeW91IHNob3VsZCB1c2UgVW5pY29kZSBtYXRjaGluZyBpbnN0ZWFkLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMwotICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuCisgICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIG1ha2VzIHNlbnNlIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgorICAgICAgRGVwcmVjYXRlZCB0aGUgdXNlIG9mICA6Y29uc3Q6YHJlLkxPQ0FMRWAgd2l0aCBzdHJpbmcgcGF0dGVybnMgb3IKKyAgICAgIDpjb25zdDpgcmUuQVNDSUlgLgogCiAKIC4uIGRhdGE6OiBNCkBAIC02MjUsMTcgKzYzMywzNyBAQAogICAgVGhhdCB3YXksIHNlcGFyYXRvciBjb21wb25lbnRzIGFyZSBhbHdheXMgZm91bmQgYXQgdGhlIHNhbWUgcmVsYXRpdmUKICAgIGluZGljZXMgd2l0aGluIHRoZSByZXN1bHQgbGlzdC4KIAotICAgTm90ZSB0aGF0ICpzcGxpdCogd2lsbCBuZXZlciBzcGxpdCBhIHN0cmluZyBvbiBhbiBlbXB0eSBwYXR0ZXJuIG1hdGNoLgotICAgRm9yIGV4YW1wbGU6CisgICAuLiBub3RlOjoKIAotICAgICAgPj4+IHJlLnNwbGl0KCd4KicsICdmb28nKQotICAgICAgWydmb28nXQotICAgICAgPj4+IHJlLnNwbGl0KCIoP20pXiQiLCAiZm9vXG5cbmJhclxuIikKLSAgICAgIFsnZm9vXG5cbmJhclxuJ10KKyAgICAgIDpmdW5jOmBzcGxpdGAgZG9lc24ndCBjdXJyZW50bHkgc3BsaXQgYSBzdHJpbmcgb24gYW4gZW1wdHkgcGF0dGVybiBtYXRjaC4KKyAgICAgIEZvciBleGFtcGxlOgorCisgICAgICAgICA+Pj4gcmUuc3BsaXQoJ3gqJywgJ2F4YmMnKQorICAgICAgICAgWydhJywgJ2JjJ10KKworICAgICAgRXZlbiB0aG91Z2ggYGAneConYGAgYWxzbyBtYXRjaGVzIDAgJ3gnIGJlZm9yZSAnYScsIGJldHdlZW4gJ2InIGFuZCAnYycsCisgICAgICBhbmQgYWZ0ZXIgJ2MnLCBjdXJyZW50bHkgdGhlc2UgbWF0Y2hlcyBhcmUgaWdub3JlZC4gIFRoZSBjb3JyZWN0IGJlaGF2aW9yCisgICAgICAoaS5lLiBzcGxpdHRpbmcgb24gZW1wdHkgbWF0Y2hlcyB0b28gYW5kIHJldHVybmluZyBgYFsnJywgJ2EnLCAnYicsICdjJywKKyAgICAgICcnXWBgKSB3aWxsIGJlIGltcGxlbWVudGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24sIGJ1dCBzaW5jZSB0aGlzCisgICAgICBpcyBhIGJhY2t3YXJkIGluY29tcGF0aWJsZSBjaGFuZ2UsIGEgOmV4YzpgRnV0dXJlV2FybmluZ2Agd2lsbCBiZSByYWlzZWQKKyAgICAgIGluIHRoZSBtZWFud2hpbGUuCisKKyAgICAgIFBhdHRlcm5zIHRoYXQgY2FuIG9ubHkgbWF0Y2ggZW1wdHkgc3RyaW5ncyBjdXJyZW50bHkgbmV2ZXIgc3BsaXQgdGhlCisgICAgICBzdHJpbmcuICBTaW5jZSB0aGlzIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjU6OgorCisgICAgICAgICA+Pj4gcmUuc3BsaXQoIl4kIiwgImZvb1xuXG5iYXJcbiIsIGZsYWdzPXJlLk0pCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICAgIC4uLgorICAgICAgICAgVmFsdWVFcnJvcjogc3BsaXQoKSByZXF1aXJlcyBhIG5vbi1lbXB0eSBwYXR0ZXJuIG1hdGNoLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsIGZsYWdzIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgU3BsaXR0aW5nIG9uIGEgcGF0dGVybiB0aGF0IGNvdWxkIG1hdGNoIGFuIGVtcHR5IHN0cmluZyBub3cgcmFpc2VzCisgICAgICBhIHdhcm5pbmcuICBQYXR0ZXJucyB0aGF0IGNhbiBvbmx5IG1hdGNoIGVtcHR5IHN0cmluZ3MgYXJlIG5vdyByZWplY3RlZC4KIAogLi4gZnVuY3Rpb246OiBmaW5kYWxsKHBhdHRlcm4sIHN0cmluZywgZmxhZ3M9MCkKIApAQCAtNjYzLDcgKzY5MSw3IEBACiAgICAqc3RyaW5nKiBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICAqcmVwbCogY2FuIGJlIGEgc3RyaW5nIG9yIGEgZnVuY3Rpb247IGlmIGl0IGlzCiAgICBhIHN0cmluZywgYW55IGJhY2tzbGFzaCBlc2NhcGVzIGluIGl0IGFyZSBwcm9jZXNzZWQuICBUaGF0IGlzLCBgYFxuYGAgaXMKICAgIGNvbnZlcnRlZCB0byBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3RlciwgYGBccmBgIGlzIGNvbnZlcnRlZCB0byBhIGNhcnJpYWdlIHJldHVybiwgYW5kCi0gICBzbyBmb3J0aC4gIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXGpgYCBhcmUgbGVmdCBhbG9uZS4gIEJhY2tyZWZlcmVuY2VzLCBzdWNoCisgICBzbyBmb3J0aC4gIFVua25vd24gZXNjYXBlcyBzdWNoIGFzIGBgXCZgYCBhcmUgbGVmdCBhbG9uZS4gIEJhY2tyZWZlcmVuY2VzLCBzdWNoCiAgICBhcyBgYFw2YGAsIGFyZSByZXBsYWNlZCB3aXRoIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cCA2IGluIHRoZSBwYXR0ZXJuLgogICAgRm9yIGV4YW1wbGU6CiAKQEAgLTcwNSw2ICs3MzMsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCisgICAgICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorCiAKIC4uIGZ1bmN0aW9uOjogc3VibihwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGNvdW50PTAsIGZsYWdzPTApCiAKQEAgLTcxNCw2ICs3NDksOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgorCiAKIC4uIGZ1bmN0aW9uOjogZXNjYXBlKHN0cmluZykKIApAQCAtNzMwLDEzICs3NjgsMzYgQEAKICAgIENsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGUuCiAKIAotLi4gZXhjZXB0aW9uOjogZXJyb3IKKy4uIGV4Y2VwdGlvbjo6IGVycm9yKG1zZywgcGF0dGVybj1Ob25lLCBwb3M9Tm9uZSkKIAogICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgc3RyaW5nIHBhc3NlZCB0byBvbmUgb2YgdGhlIGZ1bmN0aW9ucyBoZXJlIGlzIG5vdCBhCiAgICB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gKGZvciBleGFtcGxlLCBpdCBtaWdodCBjb250YWluIHVubWF0Y2hlZCBwYXJlbnRoZXNlcykKICAgIG9yIHdoZW4gc29tZSBvdGhlciBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXBpbGF0aW9uIG9yIG1hdGNoaW5nLiAgSXQgaXMgbmV2ZXIgYW4KLSAgIGVycm9yIGlmIGEgc3RyaW5nIGNvbnRhaW5zIG5vIG1hdGNoIGZvciBhIHBhdHRlcm4uCisgICBlcnJvciBpZiBhIHN0cmluZyBjb250YWlucyBubyBtYXRjaCBmb3IgYSBwYXR0ZXJuLiAgVGhlIGVycm9yIGluc3RhbmNlIGhhcworICAgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZS4KKworICAgLi4gYXR0cmlidXRlOjogcGF0dGVybgorCisgICAgICBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4uCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBvcworCisgICAgICBUaGUgaW5kZXggb2YgKnBhdHRlcm4qIHdoZXJlIGNvbXBpbGF0aW9uIGZhaWxlZC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZW5vCisKKyAgICAgIFRoZSBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gKnBvcyouCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbG5vCisKKyAgICAgIFRoZSBjb2x1bW4gY29ycmVzcG9uZGluZyB0byAqcG9zKi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KIAogLi4gX3JlLW9iamVjdHM6CiAKQEAgLTg4OSw2ICs5NTAsOCBAQAogICAgKGBgXGc8MT5gYCwgYGBcZzxuYW1lPmBgKSBhcmUgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZQogICAgY29ycmVzcG9uZGluZyBncm91cC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cChbZ3JvdXAxLCAuLi5dKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggNjkyMzEwYi4uMzg2NGYwZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtNTksNiArNTksMTQgQEAKICAgIFNhdmUgYSByZWFkbGluZSBoaXN0b3J5IGZpbGUuIFRoZSBkZWZhdWx0IGZpbGVuYW1lIGlzIDpmaWxlOmB+Ly5oaXN0b3J5YC4KIAogCisuLiBmdW5jdGlvbjo6IGFwcGVuZF9oaXN0b3J5X2ZpbGUobmVsZW1lbnRzWywgZmlsZW5hbWVdKQorCisgICBBcHBlbmQgdGhlIGxhc3QgKm5lbGVtZW50cyogb2YgaGlzdG9yeSB0byBhIGZpbGUuICBUaGUgZGVmYXVsdCBmaWxlbmFtZSBpcworICAgOmZpbGU6YH4vLmhpc3RvcnlgLiAgVGhlIGZpbGUgbXVzdCBhbHJlYWR5IGV4aXN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBmdW5jdGlvbjo6IGNsZWFyX2hpc3RvcnkoKQogCiAgICBDbGVhciB0aGUgY3VycmVudCBoaXN0b3J5LiAgKE5vdGU6IHRoaXMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSBpZiB0aGUKQEAgLTIwOSw2ICsyMTcsMjYgQEAKIFRoaXMgY29kZSBpcyBhY3R1YWxseSBhdXRvbWF0aWNhbGx5IHJ1biB3aGVuIFB5dGhvbiBpcyBydW4gaW4KIDpyZWY6YGludGVyYWN0aXZlIG1vZGUgPHR1dC1pbnRlcmFjdGl2ZT5gIChzZWUgOnJlZjpgcmxjb21wbGV0ZXItY29uZmlnYCkuCiAKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBhY2hpZXZlcyB0aGUgc2FtZSBnb2FsIGJ1dCBzdXBwb3J0cyBjb25jdXJyZW50IGludGVyYWN0aXZlCitzZXNzaW9ucywgYnkgb25seSBhcHBlbmRpbmcgdGhlIG5ldyBoaXN0b3J5LiA6OgorCisgICBpbXBvcnQgYXRleGl0CisgICBpbXBvcnQgb3MKKyAgIGltcG9ydCByZWFsaW5lCisgICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weXRob25faGlzdG9yeSIpCisKKyAgIHRyeToKKyAgICAgICByZWFkbGluZS5yZWFkX2hpc3RvcnlfZmlsZShoaXN0ZmlsZSkKKyAgICAgICBoX2xlbiA9IHJlYWRsaW5lLmdldF9oaXN0b3J5X2xlbmd0aCgpCisgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgb3BlbihoaXN0ZmlsZSwgJ3diJykuY2xvc2UoKQorICAgICAgIGhfbGVuID0gMAorCisgICBkZWYgc2F2ZShwcmV2X2hfbGVuLCBoaXN0ZmlsZSk6CisgICAgICAgbmV3X2hfbGVuID0gcmVhZGxpbmUuZ2V0X2hpc3RvcnlfbGVuZ3RoKCkKKyAgICAgICByZWFkbGluZS5hcHBlbmRfaGlzdG9yeV9maWxlKG5ld19oX2xlbiAtIHByZXZfaF9sZW4sIGhpc3RmaWxlKQorICAgYXRleGl0LnJlZ2lzdGVyKHNhdmUsIGhfbGVuLCBoaXN0ZmlsZSkKKwogVGhlIGZvbGxvd2luZyBleGFtcGxlIGV4dGVuZHMgdGhlIDpjbGFzczpgY29kZS5JbnRlcmFjdGl2ZUNvbnNvbGVgIGNsYXNzIHRvCiBzdXBwb3J0IGhpc3Rvcnkgc2F2ZS9yZXN0b3JlLiA6OgogCkBAIC0yMzQsNCArMjYyLDMgQEAKIAogICAgICAgIGRlZiBzYXZlX2hpc3Rvcnkoc2VsZiwgaGlzdGZpbGUpOgogICAgICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CmluZGV4IDUzMzRhZjguLmE2MmRjODQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdApAQCAtMTQ1LDYgKzE0NSwxMyBAQAogICAgICAgbGlicmFyeSwgYW5kIGRvZXMgbm90IGhhbmRsZSBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgZG9uJ3Qgb3JpZ2luYXRlIGZyb20KICAgICAgIFdpblNvY2suCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCisKIC4uIGF0dHJpYnV0ZTo6IFBJUEVfQlVGCiAKICAgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyB3aGljaCBjYW4gYmUgd3JpdHRlbiB3aXRob3V0IGJsb2NraW5nIHRvIGEgcGlwZQpAQCAtMjQyLDYgKzI0OSwxMiBAQAogICAgcmV0dXJuaW5nLiBJZiAqdGltZW91dCogaXMgb21pdHRlZCwgLTEsIG9yIDpjb25zdDpgTm9uZWAsIHRoZSBjYWxsIHdpbGwKICAgIGJsb2NrIHVudGlsIHRoZXJlIGlzIGFuIGV2ZW50IGZvciB0aGlzIHBvbGwgb2JqZWN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIGlzIG5vdyByZXRyaWVkIHdpdGggYSByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieQorICAgICAgYSBzaWduYWwsIGV4Y2VwdCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiAoc2VlCisgICAgICA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKSwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYC4KKwogCiAuLiBfZXBvbGwtb2JqZWN0czoKIApAQCAtMzIyLDYgKzMzNSwxMiBAQAogCiAgICBXYWl0IGZvciBldmVudHMuIHRpbWVvdXQgaW4gc2Vjb25kcyAoZmxvYXQpCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkIGJ5CisgICAgICBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgLgorCiAKIC4uIF9wb2xsLW9iamVjdHM6CiAKQEAgLTQwMSw2ICs0MjAsMTIgQEAKICAgIHJldHVybmluZy4gSWYgKnRpbWVvdXQqIGlzIG9taXR0ZWQsIG5lZ2F0aXZlLCBvciA6Y29uc3Q6YE5vbmVgLCB0aGUgY2FsbCB3aWxsCiAgICBibG9jayB1bnRpbCB0aGVyZSBpcyBhbiBldmVudCBmb3IgdGhpcyBwb2xsIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkKKyAgICAgIGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKIAogLi4gX2txdWV1ZS1vYmplY3RzOgogCkBAIC00MzUsNiArNDYwLDEyIEBACiAgICAtIG1heF9ldmVudHMgbXVzdCBiZSAwIG9yIGEgcG9zaXRpdmUgaW50ZWdlcgogICAgLSB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0cyBwb3NzaWJsZSkKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgcmV0cmllZCB3aXRoIGEgcmVjb21wdXRlZCB0aW1lb3V0IHdoZW4gaW50ZXJydXB0ZWQgYnkKKyAgICAgIGEgc2lnbmFsLCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbiBleGNlcHRpb24gKHNlZQorICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKIAogLi4gX2tldmVudC1vYmplY3RzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3RvcnMucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0b3JzLnJzdAppbmRleCA5ODM3N2M4Li5mNmVmMjRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3RvcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdG9ycy5yc3QKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICstLSBTZWxlY3RTZWxlY3RvcgogICAgKy0tIFBvbGxTZWxlY3RvcgogICAgKy0tIEVwb2xsU2VsZWN0b3IKKyAgICstLSBEZXZwb2xsU2VsZWN0b3IKICAgICstLSBLcXVldWVTZWxlY3RvcgogCiAKQEAgLTE1OCw2ICsxNTksMTIgQEAKICAgICAgICAgICB0aW1lb3V0IGhhcyBlbGFwc2VkIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWw6IGluIHRoaXMKICAgICAgICAgICBjYXNlLCBhbiBlbXB0eSBsaXN0IHdpbGwgYmUgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBUaGUgc2VsZWN0b3IgaXMgbm93IHJldHJpZWQgd2l0aCBhIHJlY29tcHV0ZWQgdGltZW91dCB3aGVuIGludGVycnVwdGVkCisgICAgICAgICBieSBhIHNpZ25hbCBpZiB0aGUgc2lnbmFsIGhhbmRsZXIgZGlkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gKHNlZQorICAgICAgICAgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSksIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVtcHR5IGxpc3QKKyAgICAgICAgIG9mIGV2ZW50cyBiZWZvcmUgdGhlIHRpbWVvdXQuCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgQ2xvc2UgdGhlIHNlbGVjdG9yLgpAQCAtMjA3LDYgKzIxNCwxNiBAQAogICAgICAgVGhpcyByZXR1cm5zIHRoZSBmaWxlIGRlc2NyaXB0b3IgdXNlZCBieSB0aGUgdW5kZXJseWluZwogICAgICAgOmZ1bmM6YHNlbGVjdC5lcG9sbGAgb2JqZWN0LgogCisuLiBjbGFzczo6IERldnBvbGxTZWxlY3RvcigpCisKKyAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAtYmFzZWQgc2VsZWN0b3IuCisKKyAgIC4uIG1ldGhvZDo6IGZpbGVubygpCisKKyAgICAgIFRoaXMgcmV0dXJucyB0aGUgZmlsZSBkZXNjcmlwdG9yIHVzZWQgYnkgdGhlIHVuZGVybHlpbmcKKyAgICAgIDpmdW5jOmBzZWxlY3QuZGV2cG9sbGAgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gY2xhc3M6OiBLcXVldWVTZWxlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDA0YWZlOTIuLjNiNDY3ZTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtMTkxLDcgKzE5MSw4IEBACiAgICBtYXRjaCBvbmUgb2YgdGhlIGdsb2Itc3R5bGUgKnBhdHRlcm5zKiBwcm92aWRlZC4gIFNlZSB0aGUgZXhhbXBsZSBiZWxvdy4KIAogCi0uLiBmdW5jdGlvbjo6IGNvcHl0cmVlKHNyYywgZHN0LCBzeW1saW5rcz1GYWxzZSwgaWdub3JlPU5vbmUsIGNvcHlfZnVuY3Rpb249Y29weTIsIGlnbm9yZV9kYW5nbGluZ19zeW1saW5rcz1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogY29weXRyZWUoc3JjLCBkc3QsIHN5bWxpbmtzPUZhbHNlLCBpZ25vcmU9Tm9uZSwgXAorICAgICAgICAgICAgICBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKICAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKiwgcmV0dXJuaW5nIHRoZQogICAgZGVzdGluYXRpb24gZGlyZWN0b3J5LiAgVGhlIGRlc3RpbmF0aW9uCkBAIC0yODIsNyArMjgzLDcgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKKy4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCwgY29weV9mdW5jdGlvbj1jb3B5MikKIAogICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCiAgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KQEAgLTI5MiwxNSArMjkzLDI2IEBACiAgICBiZSBvdmVyd3JpdHRlbiBkZXBlbmRpbmcgb24gOmZ1bmM6YG9zLnJlbmFtZWAgc2VtYW50aWNzLgogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwotICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgotICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisgICB1c2VkLiBPdGhlcndpc2UsICpzcmMqIGlzIGNvcGllZCB0byAqZHN0KiB1c2luZyAqY29weV9mdW5jdGlvbiogYW5kIHRoZW4KKyAgIHJlbW92ZWQuICBJbiBjYXNlIG9mIHN5bWxpbmtzLCBhIG5ldyBzeW1saW5rIHBvaW50aW5nIHRvIHRoZSB0YXJnZXQgb2YgKnNyYyoKKyAgIHdpbGwgYmUgY3JlYXRlZCBpbiBvciBhcyAqZHN0KiBhbmQgKnNyYyogd2lsbCBiZSByZW1vdmVkLgorCisgICBJZiAqY29weV9mdW5jdGlvbiogaXMgZ2l2ZW4sIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMKKyAgICpzcmMqIGFuZCAqZHN0KiwgYW5kIHdpbGwgYmUgdXNlZCB0byBjb3B5ICpzcmMqIHRvICpkZXN0KiBpZgorICAgOmZ1bmM6YG9zLnJlbmFtZWAgY2Fubm90IGJlIHVzZWQuICBJZiB0aGUgc291cmNlIGlzIGEgZGlyZWN0b3J5LAorICAgOmZ1bmM6YGNvcHl0cmVlYCBpcyBjYWxsZWQsIHBhc3NpbmcgaXQgdGhlIDpmdW5jOmBjb3B5X2Z1bmN0aW9uYC4gVGhlCisgICBkZWZhdWx0ICpjb3B5X2Z1bmN0aW9uKiBpcyA6ZnVuYzpgY29weTJgLiAgVXNpbmcgOmZ1bmM6YGNvcHlgIGFzIHRoZQorICAgKmNvcHlfZnVuY3Rpb24qIGFsbG93cyB0aGUgbW92ZSB0byBzdWNjZWVkIHdoZW4gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGFsc28KKyAgIGNvcHkgdGhlIG1ldGFkYXRhLCBhdCB0aGUgZXhwZW5zZSBvZiBub3QgY29weWluZyBhbnkgb2YgdGhlIG1ldGFkYXRhLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgZXhwbGljaXQgc3ltbGluayBoYW5kbGluZyBmb3IgZm9yZWlnbiBmaWxlc3lzdGVtcywgdGh1cyBhZGFwdGluZwogICAgICAgaXQgdG8gdGhlIGJlaGF2aW9yIG9mIEdOVSdzIDpwcm9ncmFtOmBtdmAuCiAgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbioga2V5d29yZCBhcmd1bWVudC4KKwogLi4gZnVuY3Rpb246OiBkaXNrX3VzYWdlKHBhdGgpCiAKICAgIFJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSA6dGVybTpgbmFtZWQgdHVwbGVgCkBAIC00MTgsNiArNDMwLDI2IEBACiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCiAKIAorLi4gX3NodXRpbC1ybXRyZWUtZXhhbXBsZToKKworcm10cmVlIGV4YW1wbGUKK35+fn5+fn5+fn5+fn5+CisKK1RoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gcmVtb3ZlIGEgZGlyZWN0b3J5IHRyZWUgb24gV2luZG93cyB3aGVyZSBzb21lCitvZiB0aGUgZmlsZXMgaGF2ZSB0aGVpciByZWFkLW9ubHkgYml0IHNldC4gSXQgdXNlcyB0aGUgb25lcnJvciBjYWxsYmFjawordG8gY2xlYXIgdGhlIHJlYWRvbmx5IGJpdCBhbmQgcmVhdHRlbXB0IHRoZSByZW1vdmUuIEFueSBzdWJzZXF1ZW50IGZhaWx1cmUKK3dpbGwgcHJvcGFnYXRlLiA6OgorCisgICAgaW1wb3J0IG9zLCBzdGF0CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgZGVmIHJlbW92ZV9yZWFkb25seShmdW5jLCBwYXRoLCBfKToKKyAgICAgICAgIkNsZWFyIHRoZSByZWFkb25seSBiaXQgYW5kIHJlYXR0ZW1wdCB0aGUgcmVtb3ZhbCIKKyAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lXUklURSkKKyAgICAgICAgZnVuYyhwYXRoKQorCisgICAgc2h1dGlsLnJtdHJlZShkaXJlY3RvcnksIG9uZXJyb3I9cmVtb3ZlX3JlYWRvbmx5KQorCiAuLiBfYXJjaGl2aW5nLW9wZXJhdGlvbnM6CiAKIEFyY2hpdmluZyBvcGVyYXRpb25zCkBAIC00MzQsNyArNDY2LDggQEAKIAogICAgKmJhc2VfbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBpbmNsdWRpbmcgdGhlIHBhdGgsIG1pbnVzCiAgICBhbnkgZm9ybWF0LXNwZWNpZmljIGV4dGVuc2lvbi4gKmZvcm1hdCogaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YKLSAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KKyAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSksICJ4enRhciIKKyAgIChpZiB0aGUgOm1vZDpgbHptYWAgbW9kdWxlIGlzIGF2YWlsYWJsZSkgb3IgImd6dGFyIi4KIAogICAgKnJvb3RfZGlyKiBpcyBhIGRpcmVjdG9yeSB0aGF0IHdpbGwgYmUgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZQogICAgYXJjaGl2ZTsgZm9yIGV4YW1wbGUsIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICpyb290X2RpciogYmVmb3JlIGNyZWF0aW5nIHRoZQpAQCAtNDU3LDYgKzQ5MCw5IEBACiAKICAgIFRoZSAqdmVyYm9zZSogYXJndW1lbnQgaXMgdW51c2VkIGFuZCBkZXByZWNhdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlICp4enRhciogZm9ybWF0LgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTQ2Nyw2ICs1MDMsNyBAQAogCiAgICAtICpnenRhcio6IGd6aXAnZWQgdGFyLWZpbGUKICAgIC0gKmJ6dGFyKjogYnppcDInZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBiejJgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQorICAgLSAqeHp0YXIqOiB4eidlZCB0YXItZmlsZSAoaWYgdGhlIDptb2Q6YGx6bWFgIG1vZHVsZSBpcyBhdmFpbGFibGUuKQogICAgLSAqdGFyKjogdW5jb21wcmVzc2VkIHRhciBmaWxlCiAgICAtICp6aXAqOiBaSVAgZmlsZQogCkBAIC01NDIsNiArNTc5LDcgQEAKIAogICAgLSAqZ3p0YXIqOiBnemlwJ2VkIHRhci1maWxlCiAgICAtICpienRhcio6IGJ6aXAyJ2VkIHRhci1maWxlIChpZiB0aGUgOm1vZDpgYnoyYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKKyAgIC0gKnh6dGFyKjogeHonZWQgdGFyLWZpbGUgKGlmIHRoZSA6bW9kOmBsem1hYCBtb2R1bGUgaXMgYXZhaWxhYmxlLikKICAgIC0gKnRhcio6IHVuY29tcHJlc3NlZCB0YXIgZmlsZQogICAgLSAqemlwKjogWklQIGZpbGUKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdCBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKaW5kZXggOGI5MDk5NC4uOGY4MTRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaWduYWwucnN0CkBAIC02NSw2ICs2NSwxNiBAQAogTW9kdWxlIGNvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIHNpZ25hbCAoU0lHKiksIGhhbmRsZXIgKDpjb25zdDpgU0lHX0RGTGAsIDpjb25zdDpgU0lHX0lHTmApIGFuZCBzaWdtYXNrCisgICAoOmNvbnN0OmBTSUdfQkxPQ0tgLCA6Y29uc3Q6YFNJR19VTkJMT0NLYCwgOmNvbnN0OmBTSUdfU0VUTUFTS2ApCisgICByZWxhdGVkIGNvbnN0YW50cyBsaXN0ZWQgYmVsb3cgd2VyZSB0dXJuZWQgaW50bworICAgOmNsYXNzOmBlbnVtcyA8ZW51bS5JbnRFbnVtPmAuCisgICA6ZnVuYzpgZ2V0c2lnbmFsYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCBhbmQKKyAgIDpmdW5jOmBzaWd3YWl0YCBmdW5jdGlvbnMgcmV0dXJuIGh1bWFuLXJlYWRhYmxlCisgICA6Y2xhc3M6YGVudW1zIDxlbnVtLkludEVudW0+YC4KKworCiBUaGUgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHNpZ25hbGAgbW9kdWxlIGFyZToKIAogCkBAIC0yMDksMjEgKzIxOSwyMSBAQAogICAgOmZ1bmM6YHNpZ3BlbmRpbmdgLgogCiAKLS4uIGZ1bmN0aW9uOjogcHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKQorLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWduYWxudW0pCiAKLSAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbmFsbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKICAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQogICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KICAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCi0gICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKLSAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAotICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhCisgICBzaWduYWwgdG8gYSBwYXJ0aWN1bGFyIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsCisgICB0byBmYWlsIHdpdGggOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCiAKICAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAogICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQogICAgZm9yICp0aHJlYWRfaWQqLgogCi0gICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIElmICpzaWduYWxudW0qIGlzIDAsIHRoZW4gbm8gc2lnbmFsIGlzIHNlbnQsIGJ1dCBlcnJvciBjaGVja2luZyBpcyBzdGlsbAogICAgcGVyZm9ybWVkOyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSB0YXJnZXQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgcHRocmVhZF9raWxsKDMpYCBmb3IgZnVydGhlcgpAQCAtMzA4LDYgKzMxOCw5IEBACiAgICBhdHRlbXB0aW5nIHRvIGNhbGwgaXQgZnJvbSBvdGhlciB0aHJlYWRzIHdpbGwgY2F1c2UgYSA6ZXhjOmBWYWx1ZUVycm9yYAogICAgZXhjZXB0aW9uIHRvIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cyBzb2NrZXQgaGFuZGxlcy4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ2ludGVycnVwdChzaWduYWxudW0sIGZsYWcpCiAKQEAgLTM5NSw2ICs0MDgsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgaWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgbm90IGluICpzaWdzZXQqCisgICAgICBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yCisgICAgICB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNpZ3RpbWVkd2FpdChzaWdzZXQsIHRpbWVvdXQpCiAKQEAgLTQwOSw2ICs0MjcsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgZnVuY3Rpb24gaXMgbm93IHJldHJpZWQgd2l0aCB0aGUgcmVjb21wdXRlZCAqdGltZW91dCogaWYgaW50ZXJydXB0ZWQKKyAgICAgIGJ5IGEgc2lnbmFsIG5vdCBpbiAqc2lnc2V0KiBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBfc2lnbmFsLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTFlNWRhOC4uNDNkYWY3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTI2LDI0ICsyNiwyMyBAQAogICAgOm9wdGlvbjpgLVNgLgogCiAuLiBpbmRleDo6Ci0gICBwYWlyOiBzaXRlLXB5dGhvbjsgZGlyZWN0b3J5CiAgICBwYWlyOiBzaXRlLXBhY2thZ2VzOyBkaXJlY3RvcnkKIAogSXQgc3RhcnRzIGJ5IGNvbnN0cnVjdGluZyB1cCB0byBmb3VyIGRpcmVjdG9yaWVzIGZyb20gYSBoZWFkIGFuZCBhIHRhaWwgcGFydC4KIEZvciB0aGUgaGVhZCBwYXJ0LCBpdCB1c2VzIGBgc3lzLnByZWZpeGBgIGFuZCBgYHN5cy5leGVjX3ByZWZpeGBgOyBlbXB0eSBoZWFkcwogYXJlIHNraXBwZWQuICBGb3IgdGhlIHRhaWwgcGFydCwgaXQgdXNlcyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGVuCiA6ZmlsZTpgbGliL3NpdGUtcGFja2FnZXNgIChvbiBXaW5kb3dzKSBvcgotOmZpbGU6YGxpYi9weXRob257WC5ZfS9zaXRlLXBhY2thZ2VzYCBhbmQgdGhlbiA6ZmlsZTpgbGliL3NpdGUtcHl0aG9uYCAob24KLVVuaXggYW5kIE1hY2ludG9zaCkuICBGb3IgZWFjaCBvZiB0aGUgZGlzdGluY3QgaGVhZC10YWlsIGNvbWJpbmF0aW9ucywgaXQgc2VlcwotaWYgaXQgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSwgYW5kIGlmIHNvLCBhZGRzIGl0IHRvIGBgc3lzLnBhdGhgYCBhbmQKLWFsc28gaW5zcGVjdHMgdGhlIG5ld2x5IGFkZGVkIHBhdGggZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMuCis6ZmlsZTpgbGliL3B5dGhvbntYLll9L3NpdGUtcGFja2FnZXNgIChvbiBVbml4IGFuZCBNYWNpbnRvc2gpLiAgRm9yIGVhY2gKK29mIHRoZSBkaXN0aW5jdCBoZWFkLXRhaWwgY29tYmluYXRpb25zLCBpdCBzZWVzIGlmIGl0IHJlZmVycyB0byBhbiBleGlzdGluZworZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZCBhbHNvIGluc3BlY3RzIHRoZSBuZXdseQorYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAotLi4gZGVwcmVjYXRlZDo6IDMuNAotICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgU3VwcG9ydCBmb3IgdGhlICJzaXRlLXB5dGhvbiIgZGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQuCiAKIElmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCiBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKLWl0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyAoc3lzLmJhc2VfcHJlZml4IGFuZAogc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCiBpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKIHRoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKQEAgLTE5NSw4ICsxOTQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldHNpdGVwYWNrYWdlcygpCiAKLSAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMgKGFuZCBwb3NzaWJseQotICAgc2l0ZS1weXRob24pLgorICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIGFsbCBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcmllcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAppbmRleCAzZWJlZDA2Li45NzdmOWE4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGQucnN0CkBAIC0yMCw3ICsyMCw4IEBACiBBZGRpdGlvbmFsbHkgdGhlIFNNVFBDaGFubmVsIG1heSBiZSBleHRlbmRlZCB0byBpbXBsZW1lbnQgdmVyeSBzcGVjaWZpYwogaW50ZXJhY3Rpb24gYmVoYXZpb3VyIHdpdGggU01UUCBjbGllbnRzLgogCi1UaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBleHRlbnNpb24uCitUaGUgY29kZSBzdXBwb3J0cyA6UkZDOmA1MzIxYCwgcGx1cyB0aGUgOnJmYzpgMTg3MGAgU0laRSBhbmQgOnJmYzpgNjUzMWAKK1NNVFBVVEY4IGV4dGVuc2lvbnMuCiAKIAogU01UUFNlcnZlciBPYmplY3RzCkBAIC0yOCw3ICsyOSw3IEBACiAKIAogLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgSXQKQEAgLTM5LDI1ICs0MCw3NyBAQAogICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubwogICAgbGltaXQuCiAKLSAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCisgICAqbWFwKiBpcyB0aGUgc29ja2V0IG1hcCB0byB1c2UgZm9yIGNvbm5lY3Rpb25zIChhbiBpbml0aWFsbHkgZW1wdHkKKyAgIGRpY3Rpb25hcnkgaXMgYSBzdWl0YWJsZSB2YWx1ZSkuICBJZiBub3Qgc3BlY2lmaWVkIHRoZSA6bW9kOmBhc3luY29yZWAKKyAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKLSAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKKyAgICplbmFibGVfU01UUFVURjgqIGRldGVybWlucyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBJZiBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCAqZGVjb2RlX2RhdGEqIG11c3QgYmUgYGBGYWxzZWBgIChvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkKS4KKyAgIFdoZW4gYGBUcnVlYGAsIGBgU01UUFVURjhgYCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgYGBNQUlMYGAKKyAgIGNvbW1hbmQgYW5kIHdoZW4gcHJlc2VudCBpcyBwYXNzZWQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgaW4gdGhlCisgICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgogCi0gICAgICBSYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24uIE92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0bworICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjY7IHNwZWNpZnkKKyAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBXaGVuCisgICAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKKyAgIGV4dGVuc2lvbiAoOnJmYzpgNjE1MmApLCBhY2NlcHRzIHRoZSBgYEJPRFk9OEJJVE1JTUVgYCBwYXJhbWV0ZXIgdG8KKyAgIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBhbmQgd2hlbiBwcmVzZW50IHBhc3NlcyBpdCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYAorICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisKKyAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpCisKKyAgICAgIFJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KICAgICAgIGRvIHNvbWV0aGluZyB1c2VmdWwgd2l0aCB0aGlzIG1lc3NhZ2UuIFdoYXRldmVyIHdhcyBwYXNzZWQgaW4gdGhlCiAgICAgICBjb25zdHJ1Y3RvciBhcyAqcmVtb3RlYWRkciogd2lsbCBiZSBhdmFpbGFibGUgYXMgdGhlIDphdHRyOmBfcmVtb3RlYWRkcmAKICAgICAgIGF0dHJpYnV0ZS4gKnBlZXIqIGlzIHRoZSByZW1vdGUgaG9zdCdzIGFkZHJlc3MsICptYWlsZnJvbSogaXMgdGhlIGVudmVsb3BlCiAgICAgICBvcmlnaW5hdG9yLCAqcmNwdHRvcyogYXJlIHRoZSBlbnZlbG9wZSByZWNpcGllbnRzIGFuZCAqZGF0YSogaXMgYSBzdHJpbmcKLSAgICAgIGNvbnRhaW5pbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBlLW1haWwgKHdoaWNoIHNob3VsZCBiZSBpbiA6cmZjOmAyODIyYAorICAgICAgY29udGFpbmluZyB0aGUgY29udGVudHMgb2YgdGhlIGUtbWFpbCAod2hpY2ggc2hvdWxkIGJlIGluIDpyZmM6YDUzMjFgCiAgICAgICBmb3JtYXQpLgogCisgICAgICBJZiB0aGUgKmRlY29kZV9kYXRhKiBjb25zdHJ1Y3RvciBrZXl3b3JkIGlzIHNldCB0byBgYFRydWVgYCwgdGhlICpkYXRhKgorICAgICAgYXJndW1lbnQgd2lsbCBiZSBhIHVuaWNvZGUgc3RyaW5nLiAgSWYgaXQgaXMgc2V0IHRvIGBgRmFsc2VgYCwgaXQKKyAgICAgIHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCisKKyAgICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5CisgICAgICB1bmxlc3MgYXQgbGVhc3Qgb25lIG9mIGBgZGVjb2RlX2RhdGE9RmFsc2VgYCBvciBgYGVuYWJsZV9TTVRQVVRGOD1UcnVlYGAKKyAgICAgIHdhcyBnaXZlbiBhcyBhbiBpbml0IHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nCisgICAgICBrZXlzOgorCisgICAgICAgICAgKm1haWxfb3B0aW9ucyo6CisgICAgICAgICAgICAgYSBsaXN0IG9mIGFsbCByZWNlaXZlZCBwYXJhbWV0ZXJzIHRvIHRoZSBgYE1BSUxgYAorICAgICAgICAgICAgIGNvbW1hbmQgKHRoZSBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3M7IGV4YW1wbGU6CisgICAgICAgICAgICAgYGBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXWBgKS4KKworICAgICAgICAgICpyY3B0X29wdGlvbnMqOgorICAgICAgICAgICAgIHNhbWUgYXMgKm1haWxfb3B0aW9ucyogYnV0IGZvciB0aGUgYGBSQ1BUYGAgY29tbWFuZC4KKyAgICAgICAgICAgICBDdXJyZW50bHkgbm8gYGBSQ1BUIFRPYGAgb3B0aW9ucyBhcmUgc3VwcG9ydGVkLCBzbyBmb3Igbm93CisgICAgICAgICAgICAgdGhpcyB3aWxsIGFsd2F5cyBiZSBhbiBlbXB0eSBsaXN0LgorCisgICAgICBJbXBsZW1lbnRhdGlvbnMgb2YgYGBwcm9jZXNzX21lc3NhZ2VgYCBzaG91bGQgdXNlIHRoZSBgYCoqa3dhcmdzYGAKKyAgICAgIHNpZ25hdHVyZSB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLCBzaW5jZSBmdXR1cmUgZmVhdHVyZQorICAgICAgZW5oYW5jZW1lbnRzIG1heSBhZGQga2V5cyB0byB0aGUga3dhcmdzIGRpY3Rpb25hcnkuCisKKyAgICAgIFJldHVybiBgYE5vbmVgYCB0byByZXF1ZXN0IGEgbm9ybWFsIGBgMjUwIE9rYGAgcmVzcG9uc2U7IG90aGVyd2lzZQorICAgICAgcmV0dXJuIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiA6UkZDOmA1MzIxYCBmb3JtYXQuCisKICAgIC4uIGF0dHJpYnV0ZTo6IGNoYW5uZWxfY2xhc3MKIAogICAgICAgT3ZlcnJpZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvIHVzZSBhIGN1c3RvbSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBmb3IKICAgICAgIG1hbmFnaW5nIFNNVFAgY2xpZW50cy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSAqbWFwKiBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIFRoZSAqbWFwKiBjb25zdHJ1Y3RvciBhcmd1bWVudC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKKyAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKKyAgICAgIHNwZWNpZmllZC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtOTcsNyArMTUwLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBTTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTA4LDExICsxNjEsMjQgQEAKICAgIGFjY2VwdGVkIGluIGEgYGBEQVRBYGAgY29tbWFuZC4gIEEgdmFsdWUgb2YgYGBOb25lYGAgb3IgYGAwYGAgbWVhbnMgbm8KICAgIGxpbWl0LgogCisgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbnMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIGJvdGggKmVuYWJsZV9TTVRQVVRGOCogYW5kICpkZWNvZGVfZGF0YSogYXJlCisgICBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KKwogICAgQSBkaWN0aW9uYXJ5IGNhbiBiZSBzcGVjaWZpZWQgaW4gKm1hcCogdG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgc29ja2V0IG1hcC4KIAorICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBTcGVjaWZ5CisgICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLgorCiAgICBUbyB1c2UgYSBjdXN0b20gU01UUENoYW5uZWwgaW1wbGVtZW50YXRpb24geW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlCiAgICA6YXR0cjpgU01UUFNlcnZlci5jaGFubmVsX2NsYXNzYCBvZiB5b3VyIDpjbGFzczpgU01UUFNlcnZlcmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogYXJndW1lbnRzIHdlcmUgYWRkZWQuCisKICAgIFRoZSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBoYXMgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHNtdHBfc2VydmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDhlMWJmYjUuLmE3MWVlNTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC02MSw2ICs2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisgICAgICBUaGUgU01UUFVURjggZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkgaXMgbm93IHN1cHBvcnRlZC4KKworCiAuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPU5vbmUgWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKQpAQCAtMTYxLDYgKzE2NSwxMyBAQAogICAgVGhlIHNlcnZlciByZWZ1c2VkIG91ciBgYEhFTE9gYCBtZXNzYWdlLgogCiAKKy4uIGV4Y2VwdGlvbjo6IFNNVFBOb3RTdXBwb3J0ZWRFcnJvcgorCisgICAgVGhlIGNvbW1hbmQgb3Igb3B0aW9uIGF0dGVtcHRlZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBleGNlcHRpb246OiBTTVRQQXV0aGVudGljYXRpb25FcnJvcgogCiAgICBTTVRQIGF1dGhlbnRpY2F0aW9uIHdlbnQgd3JvbmcuICBNb3N0IHByb2JhYmx5IHRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUKQEAgLTE4OSw4ICsyMDAsMTIgQEAKIAogLi4gbWV0aG9kOjogU01UUC5zZXRfZGVidWdsZXZlbChsZXZlbCkKIAotICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHRydWUgdmFsdWUgZm9yICpsZXZlbCogcmVzdWx0cyBpbiBkZWJ1ZyBtZXNzYWdlcwotICAgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLgorICAgU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuICBBIHZhbHVlIG9mIDEgb3IgYGBUcnVlYGAgZm9yICpsZXZlbCogcmVzdWx0cyBpbgorICAgZGVidWcgbWVzc2FnZXMgZm9yIGNvbm5lY3Rpb24gYW5kIGZvciBhbGwgbWVzc2FnZXMgc2VudCB0byBhbmQgcmVjZWl2ZWQgZnJvbQorICAgdGhlIHNlcnZlci4gIEEgdmFsdWUgb2YgMiBmb3IgKmxldmVsKiByZXN1bHRzIGluIHRoZXNlIG1lc3NhZ2VzIGJlaW5nCisgICB0aW1lc3RhbXBlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUgQWRkZWQgZGVidWdsZXZlbCAyLgogCiAKIC4uIG1ldGhvZDo6IFNNVFAuZG9jbWQoY21kLCBhcmdzPScnKQpAQCAtMjQwLDggKzI1NSw3IEBACiAgICB0aGUgc2VydmVyIGlzIHN0b3JlZCBhcyB0aGUgOmF0dHI6YGVobG9fcmVzcGAgYXR0cmlidXRlLCA6YXR0cjpgZG9lc19lc210cGAKICAgIGlzIHNldCB0byB0cnVlIG9yIGZhbHNlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgRVNNVFAsIGFuZAogICAgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYCB3aWxsIGJlIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUKLSAgIFNNVFAgc2VydmljZSBleHRlbnNpb25zIHRoaXMgc2VydmVyIHN1cHBvcnRzLCBhbmQgdGhlaXIKLSAgIHBhcmFtZXRlcnMgKGlmIGFueSkuCisgICBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9ucyB0aGlzIHNlcnZlciBzdXBwb3J0cywgYW5kIHRoZWlyIHBhcmFtZXRlcnMgKGlmIGFueSkuCiAKICAgIFVubGVzcyB5b3Ugd2lzaCB0byB1c2UgOm1ldGg6YGhhc19leHRuYCBiZWZvcmUgc2VuZGluZyBtYWlsLCBpdCBzaG91bGQgbm90IGJlCiAgICBuZWNlc3NhcnkgdG8gY2FsbCB0aGlzIG1ldGhvZCBleHBsaWNpdGx5LiAgSXQgd2lsbCBiZSBpbXBsaWNpdGx5IGNhbGxlZCBieQpAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICBNYW55IHNpdGVzIGRpc2FibGUgU01UUCBgYFZSRllgYCBpbiBvcmRlciB0byBmb2lsIHNwYW1tZXJzLgogCiAKLS4uIG1ldGhvZDo6IFNNVFAubG9naW4odXNlciwgcGFzc3dvcmQpCisuLiBtZXRob2Q6OiBTTVRQLmxvZ2luKHVzZXIsIHBhc3N3b3JkLCAqLCBpbml0aWFsX3Jlc3BvbnNlX29rPVRydWUpCiAKICAgIExvZyBpbiBvbiBhbiBTTVRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLiBUaGUgYXJndW1lbnRzIGFyZSB0aGUKICAgIHVzZXJuYW1lIGFuZCB0aGUgcGFzc3dvcmQgdG8gYXV0aGVudGljYXRlIHdpdGguIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzCkBAIC0yODgsOSArMzAyLDY4IEBACiAgICA6ZXhjOmBTTVRQQXV0aGVudGljYXRpb25FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IGFjY2VwdCB0aGUgdXNlcm5hbWUvcGFzc3dvcmQgY29tYmluYXRpb24uCiAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKKyAgICAgIFRoZSBgYEFVVEhgYCBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKwogICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgZm91bmQuCiAKKyAgIEVhY2ggb2YgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IDptb2Q6YHNtdHBsaWJgIGFyZSB0cmllZCBpbgorICAgdHVybiBpZiB0aGV5IGFyZSBhZHZlcnRpc2VkIGFzIHN1cHBvcnRlZCBieSB0aGUgc2VydmVyLiAgU2VlIDptZXRoOmBhdXRoYAorICAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcy4gICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgcGFzc2VkIHRocm91Z2ggdG8gOm1ldGg6YGF1dGhgLgorCisgICBPcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICppbml0aWFsX3Jlc3BvbnNlX29rKiBzcGVjaWZpZXMgd2hldGhlciwgZm9yCisgICBhdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoYXQgc3VwcG9ydCBpdCwgYW4gImluaXRpYWwgcmVzcG9uc2UiIGFzIHNwZWNpZmllZAorICAgaW4gOnJmYzpgNDk1NGAgY2FuIGJlIHNlbnQgYWxvbmcgd2l0aCB0aGUgYGBBVVRIYGAgY29tbWFuZCwgcmF0aGVyIHRoYW4KKyAgIHJlcXVpcmluZyBhIGNoYWxsZW5nZS9yZXNwb25zZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlIHJhaXNlZCwgYW5kIHRoZQorICAgICAgKmluaXRpYWxfcmVzcG9uc2Vfb2sqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisKKworLi4gbWV0aG9kOjogU01UUC5hdXRoKG1lY2hhbmlzbSwgYXV0aG9iamVjdCwgKiwgaW5pdGlhbF9yZXNwb25zZV9vaz1UcnVlKQorCisgICBJc3N1ZSBhbiBgYFNNVFBgYCBgYEFVVEhgYCBjb21tYW5kIGZvciB0aGUgc3BlY2lmaWVkIGF1dGhlbnRpY2F0aW9uCisgICAqbWVjaGFuaXNtKiwgYW5kIGhhbmRsZSB0aGUgY2hhbGxlbmdlIHJlc3BvbnNlIHZpYSAqYXV0aG9iamVjdCouCisKKyAgICptZWNoYW5pc20qIHNwZWNpZmllcyB3aGljaCBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20gaXMgdG8KKyAgIGJlIHVzZWQgYXMgYXJndW1lbnQgdG8gdGhlIGBgQVVUSGBgIGNvbW1hbmQ7IHRoZSB2YWxpZCB2YWx1ZXMgYXJlCisgICB0aG9zZSBsaXN0ZWQgaW4gdGhlIGBgYXV0aGBgIGVsZW1lbnQgb2YgOmF0dHI6YGVzbXRwX2ZlYXR1cmVzYC4KKworICAgKmF1dGhvYmplY3QqIG11c3QgYmUgYSBjYWxsYWJsZSBvYmplY3QgdGFraW5nIGFuIG9wdGlvbmFsIHNpbmdsZSBhcmd1bWVudDoKKworICAgICBkYXRhID0gYXV0aG9iamVjdChjaGFsbGVuZ2U9Tm9uZSkKKworICAgSWYgb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqaW5pdGlhbF9yZXNwb25zZV9vayogaXMgdHJ1ZSwKKyAgIGBgYXV0aG9iamVjdCgpYGAgd2lsbCBiZSBjYWxsZWQgZmlyc3Qgd2l0aCBubyBhcmd1bWVudC4gIEl0IGNhbiByZXR1cm4gdGhlCisgICA6cmZjOmA0OTU0YCAiaW5pdGlhbCByZXNwb25zZSIgYnl0ZXMgd2hpY2ggd2lsbCBiZSBlbmNvZGVkIGFuZCBzZW50IHdpdGgKKyAgIHRoZSBgYEFVVEhgYCBjb21tYW5kIGFzIGJlbG93LiAgSWYgdGhlIGBgYXV0aG9iamVjdCgpYGAgZG9lcyBub3Qgc3VwcG9ydCBhbgorICAgaW5pdGlhbCByZXNwb25zZSAoZS5nLiBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgY2hhbGxlbmdlKSwgaXQgc2hvdWxkIHJldHVybgorICAgTm9uZSB3aGVuIGNhbGxlZCB3aXRoIGBgY2hhbGxlbmdlPU5vbmVgYC4gIElmICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgZmFsc2UsIHRoZW4gYGBhdXRob2JqZWN0KClgYCB3aWxsIG5vdCBiZSBjYWxsZWQgZmlyc3Qgd2l0aCBOb25lLgorCisgICBJZiB0aGUgaW5pdGlhbCByZXNwb25zZSBjaGVjayByZXR1cm5zIE5vbmUsIG9yIGlmICppbml0aWFsX3Jlc3BvbnNlX29rKiBpcworICAgZmFsc2UsIGBgYXV0aG9iamVjdCgpYGAgd2lsbCBiZSBjYWxsZWQgdG8gcHJvY2VzcyB0aGUgc2VydmVyJ3MgY2hhbGxlbmdlCisgICByZXNwb25zZTsgdGhlICpjaGFsbGVuZ2UqIGFyZ3VtZW50IGl0IGlzIHBhc3NlZCB3aWxsIGJlIGEgYGBieXRlc2BgLiAgSXQKKyAgIHNob3VsZCByZXR1cm4gYGBieXRlc2BgICpkYXRhKiB0aGF0IHdpbGwgYmUgYmFzZTY0IGVuY29kZWQgYW5kIHNlbnQgdG8gdGhlCisgICBzZXJ2ZXIuCisKKyAgIFRoZSBgYFNNVFBgYCBjbGFzcyBwcm92aWRlcyBgYGF1dGhvYmplY3RzYGAgZm9yIHRoZSBgYENSQU0tTUQ1YGAsIGBgUExBSU5gYCwKKyAgIGFuZCBgYExPR0lOYGAgbWVjaGFuaXNtczsgdGhleSBhcmUgbmFtZWQgYGBTTVRQLmF1dGhfY3JhbV9tZDVgYCwKKyAgIGBgU01UUC5hdXRoX3BsYWluYGAsIGFuZCBgYFNNVFAuYXV0aF9sb2dpbmBgIHJlc3BlY3RpdmVseS4gIFRoZXkgYWxsIHJlcXVpcmUKKyAgIHRoYXQgdGhlIGBgdXNlcmBgIGFuZCBgYHBhc3N3b3JkYGAgcHJvcGVydGllcyBvZiB0aGUgYGBTTVRQYGAgaW5zdGFuY2UgYXJlCisgICBzZXQgdG8gYXBwcm9wcmlhdGUgdmFsdWVzLgorCisgICBVc2VyIGNvZGUgZG9lcyBub3Qgbm9ybWFsbHkgbmVlZCB0byBjYWxsIGBgYXV0aGBgIGRpcmVjdGx5LCBidXQgY2FuIGluc3RlYWQKKyAgIGNhbGwgdGhlIDptZXRoOmBsb2dpbmAgbWV0aG9kLCB3aGljaCB3aWxsIHRyeSBlYWNoIG9mIHRoZSBhYm92ZSBtZWNoYW5pc21zCisgICBpbiB0dXJuLCBpbiB0aGUgb3JkZXIgbGlzdGVkLiAgYGBhdXRoYGAgaXMgZXhwb3NlZCB0byBmYWNpbGl0YXRlIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgYXV0aGVudGljYXRpb24gbWV0aG9kcyBub3QgKG9yIG5vdCB5ZXQpIHN1cHBvcnRlZAorICAgZGlyZWN0bHkgYnkgOm1vZDpgc210cGxpYmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc3RhcnR0bHMoa2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUpCiAKQEAgLTMxMCw3ICszODMsNyBAQAogICAgOmV4YzpgU01UUEhlbG9FcnJvcmAKICAgICAgIFRoZSBzZXJ2ZXIgZGlkbid0IHJlcGx5IHByb3Blcmx5IHRvIHRoZSBgYEhFTE9gYCBncmVldGluZy4KIAotICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAKKyAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAKICAgICAgVGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBTVEFSVFRMUyBleHRlbnNpb24uCiAKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAKQEAgLTMyNCw2ICszOTcsMTEgQEAKICAgICAgIDphdHRyOmBTU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRvciogKHNlZQogICAgICAgOmRhdGE6YH5zc2wuSEFTX1NOSWApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGVycm9yIHJhaXNlZCBmb3IgbGFjayBvZiBTVEFSVFRMUyBzdXBwb3J0IGlzIG5vdyB0aGUKKyAgICAgIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgc3ViY2xhc3MgaW5zdGVhZCBvZiB0aGUgYmFzZQorICAgICAgOmV4YzpgU01UUEV4Y2VwdGlvbmAuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zNjAsNiArNDM4LDkgQEAKICAgIHJlY2lwaWVudCB0aGF0IHdhcyByZWZ1c2VkLiAgRWFjaCBlbnRyeSBjb250YWlucyBhIHR1cGxlIG9mIHRoZSBTTVRQIGVycm9yIGNvZGUKICAgIGFuZCB0aGUgYWNjb21wYW55aW5nIGVycm9yIG1lc3NhZ2Ugc2VudCBieSB0aGUgc2VydmVyLgogCisgICBJZiBgYFNNVFBVVEY4YGAgaXMgaW5jbHVkZWQgaW4gKm1haWxfb3B0aW9ucyosIGFuZCB0aGUgc2VydmVyIHN1cHBvcnRzIGl0LAorICAgKmZyb21fYWRkciogYW5kICp0b19hZGRyKiBtYXkgY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycy4KKwogICAgVGhpcyBtZXRob2QgbWF5IHJhaXNlIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKIAogICAgOmV4YzpgU01UUFJlY2lwaWVudHNSZWZ1c2VkYApAQCAtMzc4LDEyICs0NTksMjAgQEAKICAgICAgIFRoZSBzZXJ2ZXIgcmVwbGllZCB3aXRoIGFuIHVuZXhwZWN0ZWQgZXJyb3IgY29kZSAob3RoZXIgdGhhbiBhIHJlZnVzYWwgb2YgYQogICAgICAgcmVjaXBpZW50KS4KIAorICAgOmV4YzpgU01UUE5vdFN1cHBvcnRlZEVycm9yYAorICAgICAgYGBTTVRQVVRGOGBgIHdhcyBnaXZlbiBpbiB0aGUgKm1haWxfb3B0aW9ucyogYnV0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCisgICAgICBzZXJ2ZXIuCisKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKm1zZyogbWF5IGJlIGEgYnl0ZSBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBgYFNNVFBVVEY4YGAgc3VwcG9ydCBhZGRlZCwgYW5kIDpleGM6YFNNVFBOb3RTdXBwb3J0ZWRFcnJvcmAgbWF5IGJlCisgICAgICByYWlzZWQgaWYgYGBTTVRQVVRGOGBgIGlzIHNwZWNpZmllZCBidXQgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IGl0LgorCiAKIC4uIG1ldGhvZDo6IFNNVFAuc2VuZF9tZXNzYWdlKG1zZywgZnJvbV9hZGRyPU5vbmUsIHRvX2FkZHJzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQpAQCAtMzk1LDcgKzQ4NCw3IEBACiAKICAgIElmICpmcm9tX2FkZHIqIGlzIGBgTm9uZWBgIG9yICp0b19hZGRycyogaXMgYGBOb25lYGAsIGBgc2VuZF9tZXNzYWdlYGAgZmlsbHMKICAgIHRob3NlIGFyZ3VtZW50cyB3aXRoIGFkZHJlc3NlcyBleHRyYWN0ZWQgZnJvbSB0aGUgaGVhZGVycyBvZiAqbXNnKiBhcwotICAgc3BlY2lmaWVkIGluIDpyZmM6YDI4MjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAorICAgc3BlY2lmaWVkIGluIDpyZmM6YDUzMjJgXDogKmZyb21fYWRkciogaXMgc2V0IHRvIHRoZSA6bWFpbGhlYWRlcjpgU2VuZGVyYAogICAgZmllbGQgaWYgaXQgaXMgcHJlc2VudCwgYW5kIG90aGVyd2lzZSB0byB0aGUgOm1haWxoZWFkZXI6YEZyb21gIGZpZWxkLgogICAgKnRvX2FkcmVzc2VzKiBjb21iaW5lcyB0aGUgdmFsdWVzIChpZiBhbnkpIG9mIHRoZSA6bWFpbGhlYWRlcjpgVG9gLAogICAgOm1haWxoZWFkZXI6YENjYCwgYW5kIDptYWlsaGVhZGVyOmBCY2NgIGZpZWxkcyBmcm9tICptc2cqLiAgSWYgZXhhY3RseSBvbmUKQEAgLTQxMCwxMCArNDk5LDE4IEBACiAgICBjYWxscyA6bWV0aDpgc2VuZG1haWxgIHRvIHRyYW5zbWl0IHRoZSByZXN1bHRpbmcgbWVzc2FnZS4gIFJlZ2FyZGxlc3Mgb2YgdGhlCiAgICB2YWx1ZXMgb2YgKmZyb21fYWRkciogYW5kICp0b19hZGRycyosIGBgc2VuZF9tZXNzYWdlYGAgZG9lcyBub3QgdHJhbnNtaXQgYW55CiAgICA6bWFpbGhlYWRlcjpgQmNjYCBvciA6bWFpbGhlYWRlcjpgUmVzZW50LUJjY2AgaGVhZGVycyB0aGF0IG1heSBhcHBlYXIKLSAgIGluICptc2cqLgorICAgaW4gKm1zZyouICBJZiBhbnkgb2YgdGhlIGFkZHJlc3NlcyBpbiAqZnJvbV9hZGRyKiBhbmQgKnRvX2FkZHJzKiBjb250YWluCisgICBub24tQVNDSUkgY2hhcmFjdGVycyBhbmQgdGhlIHNlcnZlciBkb2VzIG5vdCBhZHZlcnRpc2UgYGBTTVRQVVRGOGBgIHN1cHBvcnQsCisgICBhbiA6ZXhjOmBTTVRQTm90U3VwcG9ydGVkYCBlcnJvciBpcyByYWlzZWQuICBPdGhlcndpc2UgdGhlIGBgTWVzc2FnZWBgIGlzCisgICBzZXJpYWxpemVkIHdpdGggYSBjbG9uZSBvZiBpdHMgOm1vZDpgfmVtYWlsLnBvbGljeWAgd2l0aCB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGF0dHJpYnV0ZSBzZXQgdG8gYGBUcnVlYGAsIGFuZAorICAgYGBTTVRQVVRGOGBgIGFuZCBgYEJPRFk9OEJJVE1JTUVgYCBhcmUgYWRkZWQgdG8gKm1haWxfb3B0aW9ucyouCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFN1cHBvcnQgZm9yIGludGVybmF0aW9uYWxpemVkIGFkZHJlc3NlcyAoYGBTTVRQVVRGOGBgKS4KKwogCiAuLiBtZXRob2Q6OiBTTVRQLnF1aXQoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0IGIvRG9jL2xpYnJhcnkvc25kaGRyLnJzdAppbmRleCBmMzZkZjY4Li5mOGI1ZDhiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbmRoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NuZGhkci5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIAogVGhlIDptb2Q6YHNuZGhkcmAgcHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggYXR0ZW1wdCB0byBkZXRlcm1pbmUgdGhlIHR5cGUKIG9mIHNvdW5kIGRhdGEgd2hpY2ggaXMgaW4gYSBmaWxlLiAgV2hlbiB0aGVzZSBmdW5jdGlvbnMgYXJlIGFibGUgdG8gZGV0ZXJtaW5lCi13aGF0IHR5cGUgb2Ygc291bmQgZGF0YSBpcyBzdG9yZWQgaW4gYSBmaWxlLCB0aGV5IHJldHVybiBhIHR1cGxlIGBgKHR5cGUsCi1zYW1wbGluZ19yYXRlLCBjaGFubmVscywgZnJhbWVzLCBiaXRzX3Blcl9zYW1wbGUpYGAuICBUaGUgdmFsdWUgZm9yICp0eXBlKgord2hhdCB0eXBlIG9mIHNvdW5kIGRhdGEgaXMgc3RvcmVkIGluIGEgZmlsZSwgdGhleSByZXR1cm4gYQorOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCwgY29udGFpbmluZyBmaXZlIGF0dHJpYnV0ZXM6IChgYGZpbGV0eXBlYGAsCitgYGZyYW1lcmF0ZWBgLCBgYG5jaGFubmVsc2BgLCBgYG5mcmFtZXNgYCwgYGBzYW1wd2lkdGhgYCkuIFRoZSB2YWx1ZSBmb3IgKnR5cGUqCiBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZSBhbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgYGAnYWlmYydgYCwgYGAnYWlmZidgYCwKIGBgJ2F1J2BgLCBgYCdoY29tJ2BgLCBgYCdzbmRyJ2BgLCBgYCdzbmR0J2BgLCBgYCd2b2MnYGAsIGBgJ3dhdidgYCwgYGAnOHN2eCdgYCwKIGBgJ3NiJ2BgLCBgYCd1YidgYCwgb3IgYGAndWwnYGAuICBUaGUgKnNhbXBsaW5nX3JhdGUqIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKQEAgLTMxLDEzICszMiwxOSBAQAogLi4gZnVuY3Rpb246OiB3aGF0KGZpbGVuYW1lKQogCiAgICBEZXRlcm1pbmVzIHRoZSB0eXBlIG9mIHNvdW5kIGRhdGEgc3RvcmVkIGluIHRoZSBmaWxlICpmaWxlbmFtZSogdXNpbmcKLSAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgdHVwbGUgYXMgZGVzY3JpYmVkIGFib3ZlLCBvdGhlcndpc2UKKyAgIDpmdW5jOmB3aGF0aGRyYC4gIElmIGl0IHN1Y2NlZWRzLCByZXR1cm5zIGEgbmFtZWR0dXBsZSBhcyBkZXNjcmliZWQgYWJvdmUsIG90aGVyd2lzZQogICAgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIC4uIGZ1bmN0aW9uOjogd2hhdGhkcihmaWxlbmFtZSkKIAogICAgRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiBzb3VuZCBkYXRhIHN0b3JlZCBpbiBhIGZpbGUgYmFzZWQgb24gdGhlIGZpbGUgIGhlYWRlci4KLSAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzIGdpdmVuIGJ5ICpmaWxlbmFtZSouICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB0dXBsZSBhcworICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgaXMgZ2l2ZW4gYnkgKmZpbGVuYW1lKi4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5hbWVkdHVwbGUgYXMKICAgIGRlc2NyaWJlZCBhYm92ZSBvbiBzdWNjZXNzLCBvciBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFJlc3VsdCBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIG5hbWVkdHVwbGUuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDI3MWRkYTguLmU1ODNlYmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtNDYsMTcgKzQ2LDIwIEBACiAtIFRoZSBhZGRyZXNzIG9mIGFuIDpjb25zdDpgQUZfVU5JWGAgc29ja2V0IGJvdW5kIHRvIGEgZmlsZSBzeXN0ZW0gbm9kZQogICBpcyByZXByZXNlbnRlZCBhcyBhIHN0cmluZywgdXNpbmcgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIGFuZCB0aGUKICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKHNlZSA6cGVwOmAzODNgKS4gIEFuIGFkZHJlc3MgaW4KLSAgTGludXgncyBhYnN0cmFjdCBuYW1lc3BhY2UgaXMgcmV0dXJuZWQgYXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgd2l0aAorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgd2l0aAogICBhbiBpbml0aWFsIG51bGwgYnl0ZTsgbm90ZSB0aGF0IHNvY2tldHMgaW4gdGhpcyBuYW1lc3BhY2UgY2FuCiAgIGNvbW11bmljYXRlIHdpdGggbm9ybWFsIGZpbGUgc3lzdGVtIHNvY2tldHMsIHNvIHByb2dyYW1zIGludGVuZGVkIHRvCiAgIHJ1biBvbiBMaW51eCBtYXkgbmVlZCB0byBkZWFsIHdpdGggYm90aCB0eXBlcyBvZiBhZGRyZXNzLiAgQSBzdHJpbmcgb3IKLSAgOmNsYXNzOmBieXRlc2Agb2JqZWN0IGNhbiBiZSB1c2VkIGZvciBlaXRoZXIgdHlwZSBvZiBhZGRyZXNzIHdoZW4KKyAgYnl0ZXMtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgogICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAogICAgICAgZW5jb2RpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiAtIEEgcGFpciBgYChob3N0LCBwb3J0KWBgIGlzIHVzZWQgZm9yIHRoZSA6Y29uc3Q6YEFGX0lORVRgIGFkZHJlc3MgZmFtaWx5LAogICB3aGVyZSAqaG9zdCogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGVpdGhlciBhIGhvc3RuYW1lIGluIEludGVybmV0IGRvbWFpbgogICBub3RhdGlvbiBsaWtlIGBgJ2RhcmluZy5jd2kubmwnYGAgb3IgYW4gSVB2NCBhZGRyZXNzIGxpa2UgYGAnMTAwLjUwLjIwMC41J2BgLApAQCAtMjk4LDYgKzMwMSwxOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gZGF0YTo6IENBTl9SQVdfRkRfRlJBTUVTCisKKyAgIEVuYWJsZXMgQ0FOIEZEIHN1cHBvcnQgaW4gYSBDQU5fUkFXIHNvY2tldC4gVGhpcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgVGhpcyBhbGxvd3MgeW91ciBhcHBsaWNhdGlvbiB0byBzZW5kIGJvdGggQ0FOIGFuZCBDQU4gRkQgZnJhbWVzOyBob3dldmVyLAorICAgeW91IG9uZSBtdXN0IGFjY2VwdCBib3RoIENBTiBhbmQgQ0FOIEZEIGZyYW1lcyB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgc29ja2V0LgorCisgICBUaGlzIGNvbnN0YW50IGlzIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24uCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMy42LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gZGF0YTo6IEFGX1JEUwogICAgICAgICAgIFBGX1JEUwogICAgICAgICAgIFNPTF9SRFMKQEAgLTM5MCw3ICs0MDUsNiBAQAogICAgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlci4gIEFkZHJlc3MgZmFtaWx5LCBzb2NrZXQgdHlwZSwgYW5kIHByb3RvY29sIG51bWJlciBhcmUKICAgIGFzIGZvciB0aGUgOmZ1bmM6YC5zb2NrZXRgIGZ1bmN0aW9uIGFib3ZlLiBUaGUgZGVmYXVsdCBmYW1pbHkgaXMgOmNvbnN0OmBBRl9VTklYYAogICAgaWYgZGVmaW5lZCBvbiB0aGUgcGxhdGZvcm07IG90aGVyd2lzZSwgdGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBBRl9JTkVUYC4KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogICAgVGhlIG5ld2x5IGNyZWF0ZWQgc29ja2V0cyBhcmUgOnJlZjpgbm9uLWluaGVyaXRhYmxlIDxmZF9pbmhlcml0YW5jZT5gLgogCkBAIC00MDEsNiArNDE1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgcmV0dXJuZWQgc29ja2V0cyBhcmUgbm93IG5vbi1pbmhlcml0YWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFdpbmRvd3Mgc3VwcG9ydCBhZGRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3NbLCB0aW1lb3V0Wywgc291cmNlX2FkZHJlc3NdXSkKIApAQCAtNjQ3LDggKzY2NCw4IEBACiAKIC4uIGZ1bmN0aW9uOjogaW5ldF9udG9hKHBhY2tlZF9pcCkKIAotICAgQ29udmVydCBhIDMyLWJpdCBwYWNrZWQgSVB2NCBhZGRyZXNzIChhIGJ5dGVzIG9iamVjdCBmb3VyIGNoYXJhY3RlcnMgaW4KLSAgIGxlbmd0aCkgdG8gaXRzIHN0YW5kYXJkIGRvdHRlZC1xdWFkIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yIGV4YW1wbGUsCisgICBDb252ZXJ0IGEgMzItYml0IHBhY2tlZCBJUHY0IGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBmb3VyCisgICBieXRlcyBpbiBsZW5ndGgpIHRvIGl0cyBzdGFuZGFyZCBkb3R0ZWQtcXVhZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLAogICAgJzEyMy40NS42Ny44OScpLiAgVGhpcyBpcyB1c2VmdWwgd2hlbiBjb252ZXJzaW5nIHdpdGggYSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUKICAgIHN0YW5kYXJkIEMgbGlicmFyeSBhbmQgbmVlZHMgb2JqZWN0cyBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCwgd2hpY2gKICAgIGlzIHRoZSBDIHR5cGUgZm9yIHRoZSAzMi1iaXQgcGFja2VkIGJpbmFyeSBkYXRhIHRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgYW4KQEAgLTY1OSw2ICs2NzYsOSBAQAogICAgc3VwcG9ydCBJUHY2LCBhbmQgOmZ1bmM6YGluZXRfbnRvcGAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBmb3IgSVB2NC92NiBkdWFsCiAgICBzdGFjayBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDogMy41CisgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGluZXRfcHRvbihhZGRyZXNzX2ZhbWlseSwgaXBfc3RyaW5nKQogCkBAIC02ODEsMjIgKzcwMSwyNiBAQAogCiAuLiBmdW5jdGlvbjo6IGluZXRfbnRvcChhZGRyZXNzX2ZhbWlseSwgcGFja2VkX2lwKQogCi0gICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgYnl0ZXMgb2JqZWN0IG9mIHNvbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMpIHRvIGl0cwotICAgc3RhbmRhcmQsIGZhbWlseS1zcGVjaWZpYyBzdHJpbmcgcmVwcmVzZW50YXRpb24gKGZvciBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvcgotICAgYGAnNWFlZjoyYjo6OCdgYCkuIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sCi0gICByZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkKLSAgIG9yIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCisgICBDb252ZXJ0IGEgcGFja2VkIElQIGFkZHJlc3MgKGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvZiBzb21lIG51bWJlciBvZgorICAgYnl0ZXMpIHRvIGl0cyBzdGFuZGFyZCwgZmFtaWx5LXNwZWNpZmljIHN0cmluZyByZXByZXNlbnRhdGlvbiAoZm9yCisgICBleGFtcGxlLCBgYCc3LjEwLjAuNSdgYCBvciBgYCc1YWVmOjJiOjo4J2BgKS4KKyAgIDpmdW5jOmBpbmV0X250b3BgIGlzIHVzZWZ1bCB3aGVuIGEgbGlicmFyeSBvciBuZXR3b3JrIHByb3RvY29sIHJldHVybnMgYW4KKyAgIG9iamVjdCBvZiB0eXBlIDpjOnR5cGU6YHN0cnVjdCBpbl9hZGRyYCAoc2ltaWxhciB0byA6ZnVuYzpgaW5ldF9udG9hYCkgb3IKKyAgIDpjOnR5cGU6YHN0cnVjdCBpbjZfYWRkcmAuCiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAotICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCi0gICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgQQotICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KKyAgIDpjb25zdDpgQUZfSU5FVDZgLiBJZiB0aGUgYnl0ZXMgb2JqZWN0ICpwYWNrZWRfaXAqIGlzIG5vdCB0aGUgY29ycmVjdAorICAgbGVuZ3RoIGZvciB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgZmFtaWx5LCA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIEEgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcyksIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIHN1cHBvcnQgYWRkZWQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4KICAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CkBAIC04MjEsNiArODQ1LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIHNvY2tldCBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuYmluZChhZGRyZXNzKQogCkBAIC04NTMsNiArODgyLDE5IEBACiAgICBDb25uZWN0IHRvIGEgcmVtb3RlIHNvY2tldCBhdCAqYWRkcmVzcyouIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZQogICAgYWRkcmVzcyBmYW1pbHkgLS0tIHNlZSBhYm92ZS4pCiAKKyAgIElmIHRoZSBjb25uZWN0aW9uIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCB0aGUgbWV0aG9kIHdhaXRzIHVudGlsIHRoZQorICAgY29ubmVjdGlvbiBjb21wbGV0ZXMsIG9yIHJhaXNlIGEgOmV4Yzpgc29ja2V0LnRpbWVvdXRgIG9uIHRpbWVvdXQsIGlmIHRoZQorICAgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzCisgICBhIHRpbWVvdXQuIEZvciBub24tYmxvY2tpbmcgc29ja2V0cywgdGhlIG1ldGhvZCByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgY29ubmVjdGlvbiBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICBzaWduYWwgKG9yIHRoZSBleGNlcHRpb24gcmFpc2VkIGJ5IHRoZSBzaWduYWwgaGFuZGxlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgbWV0aG9kIG5vdyB3YWl0cyB1bnRpbCB0aGUgY29ubmVjdGlvbiBjb21wbGV0ZXMgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gaWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYQorICAgICAgc2lnbmFsLCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lc24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZSBzb2NrZXQgaXMKKyAgICAgIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQgKHNlZSB0aGUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKIApAQCAtOTQ4LDEyICs5OTAsMTUgQEAKICAgIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgOmZ1bmM6YGZjbnRsLmZjbnRsYCBhbmQgOmZ1bmM6YGZjbnRsLmlvY3RsYAogICAgZnVuY3Rpb25zIG1heSBiZSB1c2VkOyB0aGV5IGFjY2VwdCBhIHNvY2tldCBvYmplY3QgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCiAKLS4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oYmFja2xvZykKKy4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oW2JhY2tsb2ddKQogCi0gICBMaXN0ZW4gZm9yIGNvbm5lY3Rpb25zIG1hZGUgdG8gdGhlIHNvY2tldC4gIFRoZSAqYmFja2xvZyogYXJndW1lbnQgc3BlY2lmaWVzIHRoZQotICAgbWF4aW11bSBudW1iZXIgb2YgcXVldWVkIGNvbm5lY3Rpb25zIGFuZCBzaG91bGQgYmUgYXQgbGVhc3QgMDsgdGhlIG1heGltdW0gdmFsdWUKLSAgIGlzIHN5c3RlbS1kZXBlbmRlbnQgKHVzdWFsbHkgNSksIHRoZSBtaW5pbXVtIHZhbHVlIGlzIGZvcmNlZCB0byAwLgorICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKKyAgIGJlIGF0IGxlYXN0IDAgKGlmIGl0IGlzIGxvd2VyLCBpdCBpcyBzZXQgdG8gMCk7IGl0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisgICB1bmFjY2VwdGVkIGNvbm5lY3Rpb25zIHRoYXQgdGhlIHN5c3RlbSB3aWxsIGFsbG93IGJlZm9yZSByZWZ1c2luZyBuZXcKKyAgIGNvbm5lY3Rpb25zLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgcmVhc29uYWJsZSB2YWx1ZSBpcyBjaG9zZW4uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgKmJhY2tsb2cqIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwuCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5tYWtlZmlsZShtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsICosIGVuY29kaW5nPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQpAQCAtOTkxLDYgKzEwMzYsMTEgQEAKICAgICAgIEZvciBiZXN0IG1hdGNoIHdpdGggaGFyZHdhcmUgYW5kIG5ldHdvcmsgcmVhbGl0aWVzLCB0aGUgdmFsdWUgb2YgICpidWZzaXplKgogICAgICAgc2hvdWxkIGJlIGEgcmVsYXRpdmVseSBzbWFsbCBwb3dlciBvZiAyLCBmb3IgZXhhbXBsZSwgNDA5Ni4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Zmcm9tKGJ1ZnNpemVbLCBmbGFnc10pCiAKQEAgLTEwMDAsNiArMTA1MCwxMSBAQAogICAgOm1hbnBhZ2U6YHJlY3YoMilgIGZvciB0aGUgbWVhbmluZyBvZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmZsYWdzKjsgaXQgZGVmYXVsdHMKICAgIHRvIHplcm8uIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlIGFib3ZlLikKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQogCkBAIC0xMDY2LDYgKzExMjEsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQogCkBAIC0xMTMyLDYgKzExOTIsMTEgQEAKICAgIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGF0dGVtcHQgZGVsaXZlcnkgb2YgdGhlIHJlbWFpbmluZyBkYXRhLiBGb3IgZnVydGhlcgogICAgaW5mb3JtYXRpb24gb24gdGhpcyB0b3BpYywgY29uc3VsdCB0aGUgOnJlZjpgc29ja2V0LWhvd3RvYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlCisgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZworICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNlbmRhbGwoYnl0ZXNbLCBmbGFnc10pCiAKQEAgLTExNDIsNiArMTIwNywxNSBAQAogICAgc3VjY2Vzcy4gIE9uIGVycm9yLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmQgdGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSBob3cKICAgIG11Y2ggZGF0YSwgaWYgYW55LCB3YXMgc3VjY2Vzc2Z1bGx5IHNlbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm8gbW9yZSByZXNldCBlYWNoIHRpbWUgZGF0YSBpcyBzZW50IHN1Y2Nlc3NmdWx5LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0aGUgbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byBzZW5kIGFsbCBkYXRhLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UKKyAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCisgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZHRvKGJ5dGVzLCBhZGRyZXNzKQogICAgICAgICAgICAgc29ja2V0LnNlbmR0byhieXRlcywgZmxhZ3MsIGFkZHJlc3MpCkBAIC0xMTUyLDYgKzEyMjYsMTEgQEAKICAgIGJ5dGVzIHNlbnQuIChUaGUgZm9ybWF0IG9mICphZGRyZXNzKiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIGZhbWlseSAtLS0gc2VlCiAgICBhYm92ZS4pCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKQogCkBAIC0xMTg4LDYgKzEyNjcsMjYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZQorICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKKyAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCisKKyAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKKyAgIDptb2Q6YG9zLnNlbmRmaWxlYCBhbmQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggd2VyZSBzZW50LgorICAgKmZpbGUqIG11c3QgYmUgYSByZWd1bGFyIGZpbGUgb2JqZWN0IG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gSWYKKyAgIDptb2Q6YG9zLnNlbmRmaWxlYCBpcyBub3QgYXZhaWxhYmxlIChlLmcuIFdpbmRvd3MpIG9yICpmaWxlKiBpcyBub3QgYQorICAgcmVndWxhciBmaWxlIDptZXRoOmBzZW5kYCB3aWxsIGJlIHVzZWQgaW5zdGVhZC4gKm9mZnNldCogdGVsbHMgZnJvbSB3aGVyZSB0bworICAgc3RhcnQgcmVhZGluZyB0aGUgZmlsZS4gSWYgc3BlY2lmaWVkLCAqY291bnQqIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMKKyAgIHRvIHRyYW5zbWl0IGFzIG9wcG9zZWQgdG8gc2VuZGluZyB0aGUgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gRmlsZQorICAgcG9zaXRpb24gaXMgdXBkYXRlZCBvbiByZXR1cm4gb3IgYWxzbyBpbiBjYXNlIG9mIGVycm9yIGluIHdoaWNoIGNhc2UKKyAgIDptZXRoOmBmaWxlLnRlbGwoKSA8aW8uSU9CYXNlLnRlbGw+YCBjYW4gYmUgdXNlZCB0byBmaWd1cmUgb3V0IHRoZSBudW1iZXIgb2YKKyAgIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4gVGhlIHNvY2tldCBtdXN0IGJlIG9mIDpjb25zdDpgU09DS19TVFJFQU1gIHR5cGUuIE5vbi0KKyAgIGJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2V0X2luaGVyaXRhYmxlKGluaGVyaXRhYmxlKQogCkBAIC0xMjI3LDExICsxMzI2LDE1IEBACiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yIGEKLSAgIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgYSBidWZmZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0bworICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCisgICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCisgICB1cCB0byB0aGUgY2FsbGVyIHRvCiAgICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KICAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggM2U0OWFmNi4uMThiZTkzNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC0xMTQsNyArMTE0LDcgQEAKIEFub3RoZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHJlcXVlc3RzIGluIGFuIGVudmlyb25tZW50CiB0aGF0IHN1cHBvcnRzIG5laXRoZXIgdGhyZWFkcyBub3IgOmZ1bmM6YH5vcy5mb3JrYCAob3Igd2hlcmUgdGhlc2UgYXJlIHRvbwogZXhwZW5zaXZlIG9yIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBzZXJ2aWNlKSBpcyB0byBtYWludGFpbiBhbiBleHBsaWNpdCB0YWJsZSBvZgotcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2UgOmZ1bmM6YH5zZWxlY3Quc2VsZWN0YCB0byBkZWNpZGUgd2hpY2gKK3BhcnRpYWxseSBmaW5pc2hlZCByZXF1ZXN0cyBhbmQgdG8gdXNlIDptb2Q6YHNlbGVjdG9yc2AgdG8gZGVjaWRlIHdoaWNoCiByZXF1ZXN0IHRvIHdvcmsgb24gbmV4dCAob3Igd2hldGhlciB0byBoYW5kbGUgYSBuZXcgaW5jb21pbmcgcmVxdWVzdCkuICBUaGlzIGlzCiBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBzdHJlYW0gc2VydmljZXMgd2hlcmUgZWFjaCBjbGllbnQgY2FuIHBvdGVudGlhbGx5IGJlCiBjb25uZWN0ZWQgZm9yIGEgbG9uZyB0aW1lIChpZiB0aHJlYWRzIG9yIHN1YnByb2Nlc3NlcyBjYW5ub3QgYmUgdXNlZCkuICBTZWUKQEAgLTEzNyw3ICsxMzcsNyBAQAogLi4gbWV0aG9kOjogQmFzZVNlcnZlci5maWxlbm8oKQogCiAgICBSZXR1cm4gYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBzb2NrZXQgb24gd2hpY2ggdGhlIHNlcnZlciBpcwotICAgbGlzdGVuaW5nLiAgVGhpcyBmdW5jdGlvbiBpcyBtb3N0IGNvbW1vbmx5IHBhc3NlZCB0byA6ZnVuYzpgc2VsZWN0LnNlbGVjdGAsIHRvCisgICBsaXN0ZW5pbmcuICBUaGlzIGZ1bmN0aW9uIGlzIG1vc3QgY29tbW9ubHkgcGFzc2VkIHRvIDptb2Q6YHNlbGVjdG9yc2AsIHRvCiAgICBhbGxvdyBtb25pdG9yaW5nIG11bHRpcGxlIHNlcnZlcnMgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IDYwOTdlN2EuLmZjNjlhODAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC02NDksNiArNjQ5LDkgQEAKICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGNvbHVtbiBuYW1lcy4gSW1tZWRpYXRlbHkgYWZ0ZXIgYSBxdWVyeSwKICAgICAgIGl0IGlzIHRoZSBmaXJzdCBtZW1iZXIgb2YgZWFjaCB0dXBsZSBpbiA6YXR0cjpgQ3Vyc29yLmRlc2NyaXB0aW9uYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2Ygc2xpY2luZy4KKwogTGV0J3MgYXNzdW1lIHdlIGluaXRpYWxpemUgYSB0YWJsZSBhcyBpbiB0aGUgZXhhbXBsZSBnaXZlbiBhYm92ZTo6CiAKICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoIjptZW1vcnk6IikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CmluZGV4IDIzM2RlOGQuLjQwNzUxMzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdApAQCAtMzE1LDYgKzMxNSw4IEBACiAKICAgIEZvciBhbG1vc3QgYWxsIGFwcGxpY2F0aW9ucyA6ZnVuYzpgb3MudXJhbmRvbWAgaXMgcHJlZmVyYWJsZS4KIAorICAgRm9yIGFsbW9zdCBhbGwgYXBwbGljYXRpb25zIDpmdW5jOmBvcy51cmFuZG9tYCBpcyBwcmVmZXJhYmxlLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gZnVuY3Rpb246OiBSQU5EX3N0YXR1cygpCkBAIC0zMzUsNiArMzM3LDggQEAKICAgIFNlZSBodHRwOi8vZWdkLnNvdXJjZWZvcmdlLm5ldC8gb3IgaHR0cDovL3BybmdkLnNvdXJjZWZvcmdlLm5ldC8gZm9yIHNvdXJjZXMKICAgIG9mIGVudHJvcHktZ2F0aGVyaW5nIGRhZW1vbnMuCiAKKyAgIEF2YWlsYWJpbGl0eTogbm90IGF2YWlsYWJsZSB3aXRoIExpYnJlU1NMLgorCiAuLiBmdW5jdGlvbjo6IFJBTkRfYWRkKGJ5dGVzLCBlbnRyb3B5KQogCiAgICBNaXggdGhlIGdpdmVuICpieXRlcyogaW50byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gIFRoZQpAQCAtMzQyLDYgKzM0Niw5IEBACiAgICBzdHJpbmcgKHNvIHlvdSBjYW4gYWx3YXlzIHVzZSA6Y29uc3Q6YDAuMGApLiAgU2VlIDpyZmM6YDE3NTBgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBzb3VyY2VzIG9mIGVudHJvcHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjUKKyAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgorCiBDZXJ0aWZpY2F0ZSBoYW5kbGluZwogXl5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMzUwLDEwICszNTcsOSBAQAogICAgVmVyaWZ5IHRoYXQgKmNlcnQqIChpbiBkZWNvZGVkIGZvcm1hdCBhcyByZXR1cm5lZCBieQogICAgOm1ldGg6YFNTTFNvY2tldC5nZXRwZWVyY2VydGApIG1hdGNoZXMgdGhlIGdpdmVuICpob3N0bmFtZSouICBUaGUgcnVsZXMKICAgIGFwcGxpZWQgYXJlIHRob3NlIGZvciBjaGVja2luZyB0aGUgaWRlbnRpdHkgb2YgSFRUUFMgc2VydmVycyBhcyBvdXRsaW5lZAotICAgaW4gOnJmYzpgMjgxOGAgYW5kIDpyZmM6YDYxMjVgLCBleGNlcHQgdGhhdCBJUCBhZGRyZXNzZXMgYXJlIG5vdCBjdXJyZW50bHkKLSAgIHN1cHBvcnRlZC4gSW4gYWRkaXRpb24gdG8gSFRUUFMsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHN1aXRhYmxlIGZvcgotICAgY2hlY2tpbmcgdGhlIGlkZW50aXR5IG9mIHNlcnZlcnMgaW4gdmFyaW91cyBTU0wtYmFzZWQgcHJvdG9jb2xzIHN1Y2ggYXMKLSAgIEZUUFMsIElNQVBTLCBQT1BTIGFuZCBvdGhlcnMuCisgICBpbiA6cmZjOmAyODE4YCBhbmQgOnJmYzpgNjEyNWAuICBJbiBhZGRpdGlvbiB0byBIVFRQUywgdGhpcyBmdW5jdGlvbgorICAgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBjaGVja2luZyB0aGUgaWRlbnRpdHkgb2Ygc2VydmVycyBpbiB2YXJpb3VzCisgICBTU0wtYmFzZWQgcHJvdG9jb2xzIHN1Y2ggYXMgRlRQUywgSU1BUFMsIFBPUFMgYW5kIG90aGVycy4KIAogICAgOmV4YzpgQ2VydGlmaWNhdGVFcnJvcmAgaXMgcmFpc2VkIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MsIHRoZSBmdW5jdGlvbgogICAgcmV0dXJucyBub3RoaW5nOjoKQEAgLTM3NSwyMiArMzgxLDM4IEBACiAgICAgICBJRE4gQS1sYWJlbHMgc3VjaCBhcyBgYHd3dyoueG4tLXB0aG9uLWt2YS5vcmdgYCBhcmUgc3RpbGwgc3VwcG9ydGVkLAogICAgICAgYnV0IGBgeCoucHl0aG9uLm9yZ2BgIG5vIGxvbmdlciBtYXRjaGVzIGBgeG4tLXRkYS5weXRob24ub3JnYGAuCiAKLS4uIGZ1bmN0aW9uOjogY2VydF90aW1lX3RvX3NlY29uZHModGltZXN0cmluZykKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBNYXRjaGluZyBvZiBJUCBhZGRyZXNzZXMsIHdoZW4gcHJlc2VudCBpbiB0aGUgc3ViamVjdEFsdE5hbWUgZmllbGQKKyAgICAgIG9mIHRoZSBjZXJ0aWZpY2F0ZSwgaXMgbm93IHN1cHBvcnRlZC4KIAotICAgUmV0dXJucyBhIGZsb2F0aW5nLXBvaW50IHZhbHVlIGNvbnRhaW5pbmcgYSBub3JtYWwgc2Vjb25kcy1hZnRlci10aGUtZXBvY2gKLSAgIHRpbWUgdmFsdWUsIGdpdmVuIHRoZSB0aW1lLXN0cmluZyByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIKLSAgIGRhdGUgZnJvbSBhIGNlcnRpZmljYXRlLgorLi4gZnVuY3Rpb246OiBjZXJ0X3RpbWVfdG9fc2Vjb25kcyhjZXJ0X3RpbWUpCiAKLSAgIEhlcmUncyBhbiBleGFtcGxlOjoKKyAgIFJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCwgZ2l2ZW4gdGhlIGBgY2VydF90aW1lYGAKKyAgIHN0cmluZyByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZSBmcm9tIGEKKyAgIGNlcnRpZmljYXRlIGluIGBgIiViICVkICVIOiVNOiVTICVZICVaImBgIHN0cnB0aW1lIGZvcm1hdCAoQworICAgbG9jYWxlKS4KIAotICAgICA+Pj4gaW1wb3J0IHNzbAotICAgICA+Pj4gc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCJNYXkgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQotICAgICAxMTc4Njk0MDAwLjAKLSAgICAgPj4+IGltcG9ydCB0aW1lCi0gICAgID4+PiB0aW1lLmN0aW1lKHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygiTWF5ICA5IDAwOjAwOjAwIDIwMDcgR01UIikpCi0gICAgICdXZWQgTWF5ICA5IDAwOjAwOjAwIDIwMDcnCisgICBIZXJlJ3MgYW4gZXhhbXBsZToKIAotLi4gZnVuY3Rpb246OiBnZXRfc2VydmVyX2NlcnRpZmljYXRlKGFkZHIsIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYzLCBjYV9jZXJ0cz1Ob25lKQorICAgLi4gZG9jdGVzdDo6IG5ld2NvbnRleHQKKworICAgICAgPj4+IGltcG9ydCBzc2wKKyAgICAgID4+PiB0aW1lc3RhbXAgPSBzc2wuY2VydF90aW1lX3RvX3NlY29uZHMoIkphbiAgNSAwOTozNDo0MyAyMDE4IEdNVCIpCisgICAgICA+Pj4gdGltZXN0YW1wCisgICAgICAxNTE1MTQ0ODgzCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAgICAgID4+PiBwcmludChkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkpCisgICAgICAyMDE4LTAxLTA1IDA5OjM0OjQzCisKKyAgICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZXMgbXVzdCB1c2UgR01UICg6cmZjOmA1MjgwYCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBJbnRlcnByZXQgdGhlIGlucHV0IHRpbWUgYXMgYSB0aW1lIGluIFVUQyBhcyBzcGVjaWZpZWQgYnkgJ0dNVCcKKyAgICAgIHRpbWV6b25lIGluIHRoZSBpbnB1dCBzdHJpbmcuIExvY2FsIHRpbWV6b25lIHdhcyB1c2VkCisgICAgICBwcmV2aW91c2x5LiBSZXR1cm4gYW4gaW50ZWdlciAobm8gZnJhY3Rpb25zIG9mIGEgc2Vjb25kIGluIHRoZQorICAgICAgaW5wdXQgZm9ybWF0KQorCisuLiBmdW5jdGlvbjo6IGdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoYWRkciwgc3NsX3ZlcnNpb249UFJPVE9DT0xfU1NMdjIzLCBjYV9jZXJ0cz1Ob25lKQogCiAgICBHaXZlbiB0aGUgYWRkcmVzcyBgYGFkZHJgYCBvZiBhbiBTU0wtcHJvdGVjdGVkIHNlcnZlciwgYXMgYSAoKmhvc3RuYW1lKiwKICAgICpwb3J0LW51bWJlciopIHBhaXIsIGZldGNoZXMgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLCBhbmQgcmV0dXJucyBpdCBhcyBhCkBAIC00MDQsNiArNDI2LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgSVB2Ni1jb21wYXRpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGRlZmF1bHQgKnNzbF92ZXJzaW9uKiBpcyBjaGFuZ2VkIGZyb20gOmRhdGE6YFBST1RPQ09MX1NTTHYzYCB0bworICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eSB3aXRoIG1vZGVybiBzZXJ2ZXJzLgorCiAuLiBmdW5jdGlvbjo6IERFUl9jZXJ0X3RvX1BFTV9jZXJ0KERFUl9jZXJ0X2J5dGVzKQogCiAgICBHaXZlbiBhIGNlcnRpZmljYXRlIGFzIGEgREVSLWVuY29kZWQgYmxvYiBvZiBieXRlcywgcmV0dXJucyBhIFBFTS1lbmNvZGVkCkBAIC02NzEsNiArNjk3LDEzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBkYXRhOjogSEFTX0FMUE4KKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgKkFwcGxpY2F0aW9uLUxheWVyCisgICBQcm90b2NvbCBOZWdvdGlhdGlvbiogVExTIGV4dGVuc2lvbiBhcyBkZXNjcmliZWQgaW4gOnJmYzpgNzMwMWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBkYXRhOjogSEFTX0VDREgKIAogICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBFbGxpcHRpYyBDdXJ2ZS1iYXNlZApAQCAtNzg4LDYgKzgyMSw4IEBACiAgICAgIChidXQgcGFzc2luZyBhIG5vbi16ZXJvIGBgZmxhZ3NgYCBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCkKICAgIC0gOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmQoKWAsIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kYWxsKClgICh3aXRoCiAgICAgIHRoZSBzYW1lIGxpbWl0YXRpb24pCisgICAtIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kZmlsZSgpYCAoYnV0IDptb2Q6YG9zLnNlbmRmaWxlYCB3aWxsIGJlIHVzZWQKKyAgICAgZm9yIHBsYWluLXRleHQgc29ja2V0cyBvbmx5LCBlbHNlIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kKClgIHdpbGwgYmUgdXNlZCkKICAgIC0gOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNodXRkb3duKClgCiAKICAgIEhvd2V2ZXIsIHNpbmNlIHRoZSBTU0wgKGFuZCBUTFMpIHByb3RvY29sIGhhcyBpdHMgb3duIGZyYW1pbmcgYXRvcApAQCAtNzk4LDYgKzgzMywxNSBAQAogICAgVXN1YWxseSwgOmNsYXNzOmBTU0xTb2NrZXRgIGFyZSBub3QgY3JlYXRlZCBkaXJlY3RseSwgYnV0IHVzaW5nIHRoZQogICAgOmZ1bmM6YHdyYXBfc29ja2V0YCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSA6bWV0aDpgc2VuZGZpbGVgIG1ldGhvZCB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgOm1ldGg6YHNodXRkb3duYCBkb2VzIG5vdCByZXNldCB0aGUgc29ja2V0IHRpbWVvdXQgZWFjaCB0aW1lIGJ5dGVzCisgICAgICBhcmUgcmVjZWl2ZWQgb3Igc2VudC4gVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uCisgICAgICBvZiB0aGUgc2h1dGRvd24uCisKKwogU1NMIHNvY2tldHMgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQucmVhZChsZW49MCwgYnVmZmVyPU5vbmUpCkBAIC04MTIsNiArODU2LDExIEBACiAgICBBcyBhdCBhbnkgdGltZSBhIHJlLW5lZ290aWF0aW9uIGlzIHBvc3NpYmxlLCBhIGNhbGwgdG8gOm1ldGg6YHJlYWRgIGNhbiBhbHNvCiAgICBjYXVzZSB3cml0ZSBvcGVyYXRpb25zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHJlYWQgdXAgdG8gKmxlbioKKyAgICAgIGJ5dGVzLgorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQud3JpdGUoYnVmKQogCiAgICBXcml0ZSAqYnVmKiB0byB0aGUgU1NMIHNvY2tldCBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gVGhlCkBAIC04MjMsNiArODcyLDEwIEBACiAgICBBcyBhdCBhbnkgdGltZSBhIHJlLW5lZ290aWF0aW9uIGlzIHBvc3NpYmxlLCBhIGNhbGwgdG8gOm1ldGg6YHdyaXRlYCBjYW4KICAgIGFsc28gY2F1c2UgcmVhZCBvcGVyYXRpb25zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgorICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHdyaXRlICpidWYqLgorCiAuLiBub3RlOjoKIAogICAgVGhlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIGFuZCA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAgbWV0aG9kcyBhcmUgdGhlCkBAIC04NDQsNiArODk3LDEwIEBACiAgICAgICA6YXR0cjpgflNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGF0dHJpYnV0ZSBvZiB0aGUgc29ja2V0J3MKICAgICAgIDphdHRyOmB+U1NMU29ja2V0LmNvbnRleHRgIGlzIHRydWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm8gbW9yZSByZXNldCBlYWNoIHRpbWUgYnl0ZXMgYXJlIHJlY2VpdmVkIG9yIHNlbnQuCisgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24gb2YgdGhlIGhhbmRzaGFrZS4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LmdldHBlZXJjZXJ0KGJpbmFyeV9mb3JtPUZhbHNlKQogCiAgICBJZiB0aGVyZSBpcyBubyBjZXJ0aWZpY2F0ZSBmb3IgdGhlIHBlZXIgb24gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbiwKQEAgLTkxNyw2ICs5NzQsMTcgQEAKICAgIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIgb2Ygc2VjcmV0CiAgICBiaXRzIGJlaW5nIHVzZWQuICBJZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLCByZXR1cm5zIGBgTm9uZWBgLgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnMoKQorCisgICBSZXR1cm4gdGhlIGxpc3Qgb2YgY2lwaGVycyBzaGFyZWQgYnkgdGhlIGNsaWVudCBkdXJpbmcgdGhlIGhhbmRzaGFrZS4gIEVhY2gKKyAgIGVudHJ5IG9mIHRoZSByZXR1cm5lZCBsaXN0IGlzIGEgdGhyZWUtdmFsdWUgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUKKyAgIGNpcGhlciwgdGhlIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIKKyAgIG9mIHNlY3JldCBiaXRzIHRoZSBjaXBoZXIgdXNlcy4gIDptZXRoOmB+U1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzYCByZXR1cm5zCisgICBgYE5vbmVgYCBpZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkIG9yIHRoZSBzb2NrZXQgaXMgYSBjbGllbnQKKyAgIHNvY2tldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC5jb21wcmVzc2lvbigpCiAKICAgIFJldHVybiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGJlaW5nIHVzZWQgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgCkBAIC05NDAsMTIgKzEwMDgsMjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkKKworICAgUmV0dXJuIHRoZSBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUyBoYW5kc2hha2UuICBJZgorICAgOm1ldGg6YFNTTENvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgaWYgdGhlIG90aGVyIHBhcnR5IGRvZXMKKyAgIG5vdCBzdXBwb3J0IEFMUE4sIGlmIHRoaXMgc29ja2V0IGRvZXMgbm90IHN1cHBvcnQgYW55IG9mIHRoZSBjbGllbnQncworICAgcHJvcG9zZWQgcHJvdG9jb2xzLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgaGFwcGVuZWQgeWV0LCBgYE5vbmVgYCBpcworICAgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKIAotICAgUmV0dXJucyB0aGUgcHJvdG9jb2wgdGhhdCB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBUTFMvU1NMIGhhbmRzaGFrZS4gSWYKLSAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCB3YXMgbm90IGNhbGxlZCwgb3IgaWYgdGhlIG90aGVyIHBhcnR5Ci0gICBkb2VzIG5vdCBzdXBwb3J0IE5QTiwgb3IgaWYgdGhlIGhhbmRzaGFrZSBoYXMgbm90IHlldCBoYXBwZW5lZCwgdGhpcyB3aWxsCi0gICByZXR1cm4gYGBOb25lYGAuCisgICBSZXR1cm4gdGhlIGhpZ2hlci1sZXZlbCBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUy9TU0wKKyAgIGhhbmRzaGFrZS4gSWYgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIHdhcyBub3QgY2FsbGVkLCBvcgorICAgaWYgdGhlIG90aGVyIHBhcnR5IGRvZXMgbm90IHN1cHBvcnQgTlBOLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgeWV0CisgICBoYXBwZW5lZCwgdGhpcyB3aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKQEAgLTk1Nyw2ICsxMDM1LDE2IEBACiAgICByZXR1cm5lZCBzb2NrZXQgc2hvdWxkIGFsd2F5cyBiZSB1c2VkIGZvciBmdXJ0aGVyIGNvbW11bmljYXRpb24gd2l0aCB0aGUKICAgIG90aGVyIHNpZGUgb2YgdGhlIGNvbm5lY3Rpb24sIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBzb2NrZXQuCiAKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC52ZXJzaW9uKCkKKworICAgUmV0dXJuIHRoZSBhY3R1YWwgU1NMIHByb3RvY29sIHZlcnNpb24gbmVnb3RpYXRlZCBieSB0aGUgY29ubmVjdGlvbgorICAgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgIGlzIG5vIHNlY3VyZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorICAgQXMgb2YgdGhpcyB3cml0aW5nLCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGluY2x1ZGUgYGAiU1NMdjIiYGAsCisgICBgYCJTU0x2MyJgYCwgYGAiVExTdjEiYGAsIGBgIlRMU3YxLjEiYGAgYW5kIGBgIlRMU3YxLjIiYGAuCisgICBSZWNlbnQgT3BlblNTTCB2ZXJzaW9ucyBtYXkgZGVmaW5lIG1vcmUgcmV0dXJuIHZhbHVlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC5wZW5kaW5nKCkKIAogICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFscmVhZHkgZGVjcnlwdGVkIGJ5dGVzIGF2YWlsYWJsZSBmb3IgcmVhZCwgcGVuZGluZyBvbgpAQCAtMTEzNSw2ICsxMjIzLDIwIEBACiAgICAgICB3aGVuIGNvbm5lY3RlZCwgdGhlIDptZXRoOmBTU0xTb2NrZXQuY2lwaGVyYCBtZXRob2Qgb2YgU1NMIHNvY2tldHMgd2lsbAogICAgICAgZ2l2ZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNpcGhlci4KIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMocHJvdG9jb2xzKQorCisgICBTcGVjaWZ5IHdoaWNoIHByb3RvY29scyB0aGUgc29ja2V0IHNob3VsZCBhZHZlcnRpc2UgZHVyaW5nIHRoZSBTU0wvVExTCisgICBoYW5kc2hha2UuIEl0IHNob3VsZCBiZSBhIGxpc3Qgb2YgQVNDSUkgc3RyaW5ncywgbGlrZSBgYFsnaHR0cC8xLjEnLAorICAgJ3NwZHkvMiddYGAsIG9yZGVyZWQgYnkgcHJlZmVyZW5jZS4gVGhlIHNlbGVjdGlvbiBvZiBhIHByb3RvY29sIHdpbGwgaGFwcGVuCisgICBkdXJpbmcgdGhlIGhhbmRzaGFrZSwgYW5kIHdpbGwgcGxheSBvdXQgYWNjb3JkaW5nIHRvIDpyZmM6YDczMDFgLiBBZnRlciBhCisgICBzdWNjZXNzZnVsIGhhbmRzaGFrZSwgdGhlIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbGAgbWV0aG9kIHdpbGwKKyAgIHJldHVybiB0aGUgYWdyZWVkLXVwb24gcHJvdG9jb2wuCisKKyAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgOmRhdGE6YEhBU19BTFBOYCBpcworICAgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzKHByb3RvY29scykKIAogICAgU3BlY2lmeSB3aGljaCBwcm90b2NvbHMgdGhlIHNvY2tldCBzaG91bGQgYWR2ZXJ0aXNlIGR1cmluZyB0aGUgU1NML1RMUwpAQCAtMTE3NSw3ICsxMjc3LDcgQEAKIAogICAgRHVlIHRvIHRoZSBlYXJseSBuZWdvdGlhdGlvbiBwaGFzZSBvZiB0aGUgVExTIGNvbm5lY3Rpb24sIG9ubHkgbGltaXRlZAogICAgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBhcmUgdXNhYmxlIGxpa2UKLSAgIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sYCBhbmQgOmF0dHI6YFNTTFNvY2tldC5jb250ZXh0YC4KKyAgIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbGAgYW5kIDphdHRyOmBTU0xTb2NrZXQuY29udGV4dGAuCiAgICA6bWV0aDpgU1NMU29ja2V0LmdldHBlZXJjZXJ0YCwgOm1ldGg6YFNTTFNvY2tldC5nZXRwZWVyY2VydGAsCiAgICA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgYW5kIDptZXRoOmBTU0xTb2NrZXQuY29tcHJlc3NgIG1ldGhvZHMgcmVxdWlyZSB0aGF0CiAgICB0aGUgVExTIGNvbm5lY3Rpb24gaGFzIHByb2dyZXNzZWQgYmV5b25kIHRoZSBUTFMgQ2xpZW50IEhlbGxvIGFuZCB0aGVyZWZvcmUKQEAgLTEyNTEsMTAgKzEzNTMsMjAgQEAKICAgIHF1aXRlIHNpbWlsYXJseSB0byBIVFRQIHZpcnR1YWwgaG9zdHMuIFNwZWNpZnlpbmcgKnNlcnZlcl9ob3N0bmFtZSogd2lsbAogICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqc2VydmVyX3NpZGUqIGlzIHRydWUuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBbHdheXMgYWxsb3cgYSBzZXJ2ZXJfaG9zdG5hbWUgdG8gYmUgcGFzc2VkLCBldmVuIGlmIE9wZW5TU0wgZG9lcyBub3QKICAgICAgIGhhdmUgU05JLgogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisKKyAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYnkgd3JhcHBpbmcgdGhlIEJJTyBvYmplY3RzCisgICAqaW5jb21pbmcqIGFuZCAqb3V0Z29pbmcqLiBUaGUgU1NMIHJvdXRpbmVzIHdpbGwgcmVhZCBpbnB1dCBkYXRhIGZyb20gdGhlCisgICBpbmNvbWluZyBCSU8gYW5kIHdyaXRlIGRhdGEgdG8gdGhlIG91dGdvaW5nIEJJTy4KKworICAgVGhlICpzZXJ2ZXJfc2lkZSogYW5kICpzZXJ2ZXJfaG9zdG5hbWUqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCisgICBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2Vzc2lvbl9zdGF0cygpCiAKICAgIEdldCBzdGF0aXN0aWNzIGFib3V0IHRoZSBTU0wgc2Vzc2lvbnMgY3JlYXRlZCBvciBtYW5hZ2VkIGJ5IHRoaXMgY29udGV4dC4KQEAgLTE2MjcsNyArMTczOSw3IEBACiAKIEFuZCBnbyBiYWNrIHRvIGxpc3RlbmluZyBmb3IgbmV3IGNsaWVudCBjb25uZWN0aW9ucyAob2YgY291cnNlLCBhIHJlYWwgc2VydmVyCiB3b3VsZCBwcm9iYWJseSBoYW5kbGUgZWFjaCBjbGllbnQgY29ubmVjdGlvbiBpbiBhIHNlcGFyYXRlIHRocmVhZCwgb3IgcHV0Ci10aGUgc29ja2V0cyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgdXNlIGFuIGV2ZW50IGxvb3ApLgordGhlIHNvY2tldHMgaW4gOnJlZjpgbm9uLWJsb2NraW5nIG1vZGUgPHNzbC1ub25ibG9ja2luZz5gIGFuZCB1c2UgYW4gZXZlbnQgbG9vcCkuCiAKIAogLi4gX3NzbC1ub25ibG9ja2luZzoKQEAgLTE2NDksNiArMTc2MSwxMiBAQAogICBzb2NrZXQgZmlyc3QsIGFuZCBhdHRlbXB0cyB0byAqcmVhZCogZnJvbSB0aGUgU1NMIHNvY2tldCBtYXkgcmVxdWlyZQogICBhIHByaW9yICp3cml0ZSogdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgSW4gZWFybGllciBQeXRob24gdmVyc2lvbnMsIHRoZSA6bWV0aDpgIVNTTFNvY2tldC5zZW5kYCBtZXRob2QKKyAgICAgcmV0dXJuZWQgemVybyBpbnN0ZWFkIG9mIHJhaXNpbmcgOmV4YzpgU1NMV2FudFdyaXRlRXJyb3JgIG9yCisgICAgIDpleGM6YFNTTFdhbnRSZWFkRXJyb3JgLgorCiAtIENhbGxpbmcgOmZ1bmM6YH5zZWxlY3Quc2VsZWN0YCB0ZWxscyB5b3UgdGhhdCB0aGUgT1MtbGV2ZWwgc29ja2V0IGNhbiBiZQogICByZWFkIGZyb20gKG9yIHdyaXR0ZW4gdG8pLCBidXQgaXQgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGVyZSBpcyBzdWZmaWNpZW50CiAgIGRhdGEgYXQgdGhlIHVwcGVyIFNTTCBsYXllci4gIEZvciBleGFtcGxlLCBvbmx5IHBhcnQgb2YgYW4gU1NMIGZyYW1lIG1pZ2h0CkBAIC0xNjgxLDEzICsxNzk5LDE0MyBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgVGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBzdXBwb3J0cyBub24tYmxvY2tpbmcgU1NMIHNvY2tldHMgYW5kIHByb3ZpZGVzIGEKKyAgIFRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgc3VwcG9ydHMgOnJlZjpgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXRzCisgICA8c3NsLW5vbmJsb2NraW5nPmAgYW5kIHByb3ZpZGVzIGEKICAgIGhpZ2hlciBsZXZlbCBBUEkuIEl0IHBvbGxzIGZvciBldmVudHMgdXNpbmcgdGhlIDptb2Q6YHNlbGVjdG9yc2AgbW9kdWxlIGFuZAogICAgaGFuZGxlcyA6ZXhjOmBTU0xXYW50V3JpdGVFcnJvcmAsIDpleGM6YFNTTFdhbnRSZWFkRXJyb3JgIGFuZAogICAgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBleGNlcHRpb25zLiBJdCBydW5zIHRoZSBTU0wgaGFuZHNoYWtlIGFzeW5jaHJvbm91c2x5CiAgICBhcyB3ZWxsLgogCiAKK01lbW9yeSBCSU8gU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitFdmVyIHNpbmNlIHRoZSBTU0wgbW9kdWxlIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjYsIHRoZSA6Y2xhc3M6YFNTTFNvY2tldGAKK2NsYXNzIGhhcyBwcm92aWRlZCB0d28gcmVsYXRlZCBidXQgZGlzdGluY3QgYXJlYXMgb2YgZnVuY3Rpb25hbGl0eToKKworLSBTU0wgcHJvdG9jb2wgaGFuZGxpbmcKKy0gTmV0d29yayBJTworCitUaGUgbmV0d29yayBJTyBBUEkgaXMgaWRlbnRpY2FsIHRvIHRoYXQgcHJvdmlkZWQgYnkgOmNsYXNzOmBzb2NrZXQuc29ja2V0YCwKK2Zyb20gd2hpY2ggOmNsYXNzOmBTU0xTb2NrZXRgIGFsc28gaW5oZXJpdHMuIFRoaXMgYWxsb3dzIGFuIFNTTCBzb2NrZXQgdG8gYmUKK3VzZWQgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBhIHJlZ3VsYXIgc29ja2V0LCBtYWtpbmcgaXQgdmVyeSBlYXN5IHRvIGFkZAorU1NMIHN1cHBvcnQgdG8gYW4gZXhpc3RpbmcgYXBwbGljYXRpb24uCisKK0NvbWJpbmluZyBTU0wgcHJvdG9jb2wgaGFuZGxpbmcgYW5kIG5ldHdvcmsgSU8gdXN1YWxseSB3b3JrcyB3ZWxsLCBidXQgdGhlcmUKK2FyZSBzb21lIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QuIEFuIGV4YW1wbGUgaXMgYXN5bmMgSU8gZnJhbWV3b3JrcyB0aGF0IHdhbnQgdG8KK3VzZSBhIGRpZmZlcmVudCBJTyBtdWx0aXBsZXhpbmcgbW9kZWwgdGhhbiB0aGUgInNlbGVjdC9wb2xsIG9uIGEgZmlsZQorZGVzY3JpcHRvciIgKHJlYWRpbmVzcyBiYXNlZCkgbW9kZWwgdGhhdCBpcyBhc3N1bWVkIGJ5IDpjbGFzczpgc29ja2V0LnNvY2tldGAKK2FuZCBieSB0aGUgaW50ZXJuYWwgT3BlblNTTCBzb2NrZXQgSU8gcm91dGluZXMuIFRoaXMgaXMgbW9zdGx5IHJlbGV2YW50IGZvcgorcGxhdGZvcm1zIGxpa2UgV2luZG93cyB3aGVyZSB0aGlzIG1vZGVsIGlzIG5vdCBlZmZpY2llbnQuIEZvciB0aGlzIHB1cnBvc2UsIGEKK3JlZHVjZWQgc2NvcGUgdmFyaWFudCBvZiA6Y2xhc3M6YFNTTFNvY2tldGAgY2FsbGVkIDpjbGFzczpgU1NMT2JqZWN0YCBpcworcHJvdmlkZWQuCisKKy4uIGNsYXNzOjogU1NMT2JqZWN0CisKKyAgIEEgcmVkdWNlZC1zY29wZSB2YXJpYW50IG9mIDpjbGFzczpgU1NMU29ja2V0YCByZXByZXNlbnRpbmcgYW4gU1NMIHByb3RvY29sCisgICBpbnN0YW5jZSB0aGF0IGRvZXMgbm90IGNvbnRhaW4gYW55IG5ldHdvcmsgSU8gbWV0aG9kcy4gVGhpcyBjbGFzcyBpcworICAgdHlwaWNhbGx5IHVzZWQgYnkgZnJhbWV3b3JrIGF1dGhvcnMgdGhhdCB3YW50IHRvIGltcGxlbWVudCBhc3luY2hyb25vdXMgSU8KKyAgIGZvciBTU0wgdGhyb3VnaCBtZW1vcnkgYnVmZmVycy4KKworICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBvbiB0b3Agb2YgYSBsb3ctbGV2ZWwgU1NMIG9iamVjdCBhcworICAgaW1wbGVtZW50ZWQgYnkgT3BlblNTTC4gVGhpcyBvYmplY3QgY2FwdHVyZXMgdGhlIHN0YXRlIG9mIGFuIFNTTCBjb25uZWN0aW9uCisgICBidXQgZG9lcyBub3QgcHJvdmlkZSBhbnkgbmV0d29yayBJTyBpdHNlbGYuIElPIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCB0aHJvdWdoCisgICBzZXBhcmF0ZSAiQklPIiBvYmplY3RzIHdoaWNoIGFyZSBPcGVuU1NMJ3MgSU8gYWJzdHJhY3Rpb24gbGF5ZXIuCisKKyAgIEFuIDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBjYW4gYmUgY3JlYXRlZCB1c2luZyB0aGUKKyAgIDptZXRoOmB+U1NMQ29udGV4dC53cmFwX2Jpb2AgbWV0aG9kLiBUaGlzIG1ldGhvZCB3aWxsIGNyZWF0ZSB0aGUKKyAgIDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBhbmQgYmluZCBpdCB0byBhIHBhaXIgb2YgQklPcy4gVGhlICppbmNvbWluZyoKKyAgIEJJTyBpcyB1c2VkIHRvIHBhc3MgZGF0YSBmcm9tIFB5dGhvbiB0byB0aGUgU1NMIHByb3RvY29sIGluc3RhbmNlLCB3aGlsZSB0aGUKKyAgICpvdXRnb2luZyogQklPIGlzIHVzZWQgdG8gcGFzcyBkYXRhIHRoZSBvdGhlciB3YXkgYXJvdW5kLgorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGF2YWlsYWJsZToKKworICAgLSA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXJ2ZXJfc2lkZWAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX2hvc3RuYW1lYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5yZWFkYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuZ2V0cGVlcmNlcnRgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LnNlbGVjdGVkX25wbl9wcm90b2NvbGAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuY2lwaGVyYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5zaGFyZWRfY2lwaGVyc2AKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuY29tcHJlc3Npb25gCisgICAtIDptZXRoOmB+U1NMU29ja2V0LnBlbmRpbmdgCisgICAtIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAKKyAgIC0gOm1ldGg6YH5TU0xTb2NrZXQudW53cmFwYAorICAgLSA6bWV0aDpgflNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nYAorCisgICBXaGVuIGNvbXBhcmVkIHRvIDpjbGFzczpgU1NMU29ja2V0YCwgdGhpcyBvYmplY3QgbGFja3MgdGhlIGZvbGxvd2luZworICAgZmVhdHVyZXM6CisKKyAgIC0gQW55IGZvcm0gb2YgbmV0d29yayBJTyBpbmNsdWdpbmcgbWV0aG9kcyBzdWNoIGFzIGBgcmVjdigpYGAgYW5kCisgICAgIGBgc2VuZCgpYGAuCisKKyAgIC0gVGhlcmUgaXMgbm8gKmRvX2hhbmRzaGFrZV9vbl9jb25uZWN0KiBtYWNoaW5lcnkuIFlvdSBtdXN0IGFsd2F5cyBtYW51YWxseQorICAgICBjYWxsIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAgdG8gc3RhcnQgdGhlIGhhbmRzaGFrZS4KKworICAgLSBUaGVyZSBpcyBubyBoYW5kbGluZyBvZiAqc3VwcHJlc3NfcmFnZ2VkX2VvZnMqLiBBbGwgZW5kLW9mLWZpbGUgY29uZGl0aW9ucworICAgICB0aGF0IGFyZSBpbiB2aW9sYXRpb24gb2YgdGhlIHByb3RvY29sIGFyZSByZXBvcnRlZCB2aWEgdGhlCisgICAgIDpleGM6YFNTTEVPRkVycm9yYCBleGNlcHRpb24uCisKKyAgIC0gVGhlIG1ldGhvZCA6bWV0aDpgflNTTFNvY2tldC51bndyYXBgIGNhbGwgZG9lcyBub3QgcmV0dXJuIGFueXRoaW5nLAorICAgICB1bmxpa2UgZm9yIGFuIFNTTCBzb2NrZXQgd2hlcmUgaXQgcmV0dXJucyB0aGUgdW5kZXJseWluZyBzb2NrZXQuCisKKyAgIC0gVGhlICpzZXJ2ZXJfbmFtZV9jYWxsYmFjayogY2FsbGJhY2sgcGFzc2VkIHRvCisgICAgIDptZXRoOmBTU0xDb250ZXh0LnNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrYCB3aWxsIGdldCBhbiA6Y2xhc3M6YFNTTE9iamVjdGAKKyAgICAgaW5zdGFuY2UgaW5zdGVhZCBvZiBhIDpjbGFzczpgU1NMU29ja2V0YCBpbnN0YW5jZSBhcyBpdHMgZmlyc3QgcGFyYW1ldGVyLgorCisgICBTb21lIG5vdGVzIHJlbGF0ZWQgdG8gdGhlIHVzZSBvZiA6Y2xhc3M6YFNTTE9iamVjdGA6CisKKyAgIC0gQWxsIElPIG9uIGFuIDpjbGFzczpgU1NMT2JqZWN0YCBpcyA6cmVmOmBub24tYmxvY2tpbmcgPHNzbC1ub25ibG9ja2luZz5gLgorICAgICBUaGlzIG1lYW5zIHRoYXQgZm9yIGV4YW1wbGUgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAgd2lsbCByYWlzZSBhbgorICAgICA6ZXhjOmBTU0xXYW50UmVhZEVycm9yYCBpZiBpdCBuZWVkcyBtb3JlIGRhdGEgdGhhbiB0aGUgaW5jb21pbmcgQklPIGhhcworICAgICBhdmFpbGFibGUuCisKKyAgIC0gVGhlcmUgaXMgbm8gbW9kdWxlLWxldmVsIGBgd3JhcF9iaW8oKWBgIGNhbGwgbGlrZSB0aGVyZSBpcyBmb3IKKyAgICAgOm1ldGg6YH5TU0xDb250ZXh0LndyYXBfc29ja2V0YC4gQW4gOmNsYXNzOmBTU0xPYmplY3RgIGlzIGFsd2F5cyBjcmVhdGVkCisgICAgIHZpYSBhbiA6Y2xhc3M6YFNTTENvbnRleHRgLgorCitBbiBTU0xPYmplY3QgY29tbXVuaWNhdGVzIHdpdGggdGhlIG91dHNpZGUgd29ybGQgdXNpbmcgbWVtb3J5IGJ1ZmZlcnMuIFRoZQorY2xhc3MgOmNsYXNzOmBNZW1vcnlCSU9gIHByb3ZpZGVzIGEgbWVtb3J5IGJ1ZmZlciB0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGlzCitwdXJwb3NlLiAgSXQgd3JhcHMgYW4gT3BlblNTTCBtZW1vcnkgQklPIChCYXNpYyBJTykgb2JqZWN0OgorCisuLiBjbGFzczo6IE1lbW9yeUJJTworCisgICBBIG1lbW9yeSBidWZmZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXNzIGRhdGEgYmV0d2VlbiBQeXRob24gYW5kIGFuIFNTTAorICAgcHJvdG9jb2wgaW5zdGFuY2UuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IE1lbW9yeUJJTy5wZW5kaW5nCisKKyAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGN1cnJlbnRseSBpbiB0aGUgbWVtb3J5IGJ1ZmZlci4KKworICAgLi4gYXR0cmlidXRlOjogTWVtb3J5QklPLmVvZgorCisgICAgICBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgQklPIGlzIGN1cnJlbnQgYXQgdGhlIGVuZC1vZi1maWxlCisgICAgICBwb3NpdGlvbi4KKworICAgLi4gbWV0aG9kOjogTWVtb3J5QklPLnJlYWQobj0tMSkKKworICAgICAgUmVhZCB1cCB0byAqbiogYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IGJ1ZmZlci4gSWYgKm4qIGlzIG5vdCBzcGVjaWZpZWQgb3IKKyAgICAgIG5lZ2F0aXZlLCBhbGwgYnl0ZXMgYXJlIHJldHVybmVkLgorCisgICAuLiBtZXRob2Q6OiBNZW1vcnlCSU8ud3JpdGUoYnVmKQorCisgICAgICBXcml0ZSB0aGUgYnl0ZXMgZnJvbSAqYnVmKiB0byB0aGUgbWVtb3J5IEJJTy4gVGhlICpidWYqIGFyZ3VtZW50IG11c3QgYmUgYW4KKyAgICAgIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgcHJvdG9jb2wuCisKKyAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLCB3aGljaCBpcyBhbHdheXMgZXF1YWwgdG8KKyAgICAgIHRoZSBsZW5ndGggb2YgKmJ1ZiouCisKKyAgIC4uIG1ldGhvZDo6IE1lbW9yeUJJTy53cml0ZV9lb2YoKQorCisgICAgICBXcml0ZSBhbiBFT0YgbWFya2VyIHRvIHRoZSBtZW1vcnkgQklPLiBBZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGl0CisgICAgICBpcyBpbGxlZ2FsIHRvIGNhbGwgOm1ldGg6YH5NZW1vcnlCSU8ud3JpdGVgLiBUaGUgYXR0cmlidXRlIDphdHRyOmBlb2ZgIHdpbGwKKyAgICAgIGJlY29tZSB0cnVlIGFmdGVyIGFsbCBkYXRhIGN1cnJlbnRseSBpbiB0aGUgYnVmZmVyIGhhcyBiZWVuIHJlYWQuCisKKwogLi4gX3NzbC1zZWN1cml0eToKIAogU2VjdXJpdHkgY29uc2lkZXJhdGlvbnMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0YXQucnN0IGIvRG9jL2xpYnJhcnkvc3RhdC5yc3QKaW5kZXggMjQ3NjlmNi4uODQ1YjJlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RhdC5yc3QKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICB3YWxrdHJlZShzeXMuYXJndlsxXSwgdmlzaXRmaWxlKQogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gY292ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgorQW4gYWRkaXRpb25hbCB1dGlsaXR5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIGNvbnZlcnQgYSBmaWxlJ3MgbW9kZSBpbiBhIGh1bWFuCiByZWFkYWJsZSBzdHJpbmc6CiAKIC4uIGZ1bmN0aW9uOjogZmlsZW1vZGUobW9kZSkKQEAgLTM5OSwzICszOTksMjkgQEAKICAgIFRoZSBmaWxlIGlzIGEgc25hcHNob3QgZmlsZS4KIAogU2VlIHRoZSBcKkJTRCBvciBNYWMgT1Mgc3lzdGVtcyBtYW4gcGFnZSA6bWFucGFnZTpgY2hmbGFncygyKWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK09uIFdpbmRvd3MsIHRoZSBmb2xsb3dpbmcgZmlsZSBhdHRyaWJ1dGUgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSB3aGVuCit0ZXN0aW5nIGJpdHMgaW4gdGhlIGBgc3RfZmlsZV9hdHRyaWJ1dGVzYGAgbWVtYmVyIHJldHVybmVkIGJ5IDpmdW5jOmBvcy5zdGF0YC4KK1NlZSB0aGUgYFdpbmRvd3MgQVBJIGRvY3VtZW50YXRpb24KKzxodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2dnMjU4MTE3LmFzcHg+YF8KK2ZvciBtb3JlIGRldGFpbCBvbiB0aGUgbWVhbmluZyBvZiB0aGVzZSBjb25zdGFudHMuCisKKy4uIGRhdGE6OiBGSUxFX0FUVFJJQlVURV9BUkNISVZFCisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfQ09NUFJFU1NFRAorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RFVklDRQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0VOQ1JZUFRFRAorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0hJRERFTgorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0KKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUwKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1RfQ09OVEVOVF9JTkRFWEVECisgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX09GRkxJTkUKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9SRUFET05MWQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQKKyAgICAgICAgICBGSUxFX0FUVFJJQlVURV9TUEFSU0VfRklMRQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1NZU1RFTQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWQorICAgICAgICAgIEZJTEVfQVRUUklCVVRFX1ZJUlRVQUwKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKaW5kZXggYzNkYzYzZC4uYjNjOWUyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdApAQCAtMzU0LDcgKzM1NCw3IEBACiAgICBUaGUgbnVtZXJpYyBsaXRlcmFscyBhY2NlcHRlZCBpbmNsdWRlIHRoZSBkaWdpdHMgYGAwYGAgdG8gYGA5YGAgb3IgYW55CiAgICBVbmljb2RlIGVxdWl2YWxlbnQgKGNvZGUgcG9pbnRzIHdpdGggdGhlIGBgTmRgYCBwcm9wZXJ0eSkuCiAKLSAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjMuMC91Y2QvZXh0cmFjdGVkL0Rlcml2ZWROdW1lcmljVHlwZS50eHQKKyAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvZXh0cmFjdGVkL0Rlcml2ZWROdW1lcmljVHlwZS50eHQKICAgIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgY29kZSBwb2ludHMgd2l0aCB0aGUgYGBOZGBgIHByb3BlcnR5LgogCiAKQEAgLTE5NDAsNiArMTk0MCwxNiBAQAogICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLnN0cmlwKCdjbW93ei4nKQogICAgICAgJ2V4YW1wbGUnCiAKKyAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0cmlwcGVkCisgICBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgbGVhZGluZyBlbmQgdW50aWwKKyAgIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gdGhlIHNldCBvZgorICAgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzIHBsYWNlIG9uIHRoZSB0cmFpbGluZyBlbmQuCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBjb21tZW50X3N0cmluZyA9ICcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICMzMiAuLi4uLi4uJworICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nLnN0cmlwKCcuIyEgJykKKyAgICAgICdTZWN0aW9uIDMuMi4xIElzc3VlICMzMicKKwogCiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCkBAIC0yMjkzLDYgKzIzMDMsMTkgQEAKICAgID4+PiBieXRlcy5mcm9taGV4KCcyRWYwIEYxZjIgICcpCiAgICBiJy5ceGYwXHhmMVx4ZjInCiAKK0EgcmV2ZXJzZSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cyB0byB0cmFuc2Zvcm0gYSBieXRlcyBvYmplY3QgaW50byBpdHMKK2hleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLgorCisuLiBtZXRob2Q6OiBieXRlcy5oZXgoKQorCisgICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0IGNvbnRhaW5pbmcgdHdvIGhleGFkZWNpbWFsIGRpZ2l0cyBmb3IgZWFjaAorICAgYnl0ZSBpbiB0aGUgaW5zdGFuY2UuCisKKyAgID4+PiBiJ1x4ZjBceGYxXHhmMicuaGV4KCkKKyAgICdmMGYxZjInCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiBTaW5jZSBieXRlcyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgaW50ZWdlcnMgKGFraW4gdG8gYSB0dXBsZSksIGZvciBhIGJ5dGVzCiBvYmplY3QgKmIqLCBgYGJbMF1gYCB3aWxsIGJlIGFuIGludGVnZXIsIHdoaWxlIGBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzCiBvYmplY3Qgb2YgbGVuZ3RoIDEuICAoVGhpcyBjb250cmFzdHMgd2l0aCB0ZXh0IHN0cmluZ3MsIHdoZXJlIGJvdGggaW5kZXhpbmcKQEAgLTIzNDgsNiArMjM3MSwxOSBAQAogICAgPj4+IGJ5dGVhcnJheS5mcm9taGV4KCcyRWYwIEYxZjIgICcpCiAgICBieXRlYXJyYXkoYicuXHhmMFx4ZjFceGYyJykKIAorQSByZXZlcnNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZXhpc3RzIHRvIHRyYW5zZm9ybSBhIGJ5dGVhcnJheSBvYmplY3QgaW50byBpdHMKK2hleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLgorCisuLiBtZXRob2Q6OiBieXRlYXJyYXkuaGV4KCkKKworICAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdCBjb250YWluaW5nIHR3byBoZXhhZGVjaW1hbCBkaWdpdHMgZm9yIGVhY2gKKyAgIGJ5dGUgaW4gdGhlIGluc3RhbmNlLgorCisgICA+Pj4gYnl0ZWFycmF5KGInXHhmMFx4ZjFceGYyJykuaGV4KCkKKyAgICdmMGYxZjInCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiBTaW5jZSBieXRlYXJyYXkgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzIChha2luIHRvIGEgbGlzdCksIGZvciBhCiBieXRlYXJyYXkgb2JqZWN0ICpiKiwgYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUKIGEgYnl0ZWFycmF5IG9iamVjdCBvZiBsZW5ndGggMS4gIChUaGlzIGNvbnRyYXN0cyB3aXRoIHRleHQgc3RyaW5ncywgd2hlcmUKQEAgLTMwOTMsNiArMzEyOSwyMDMgQEAKICAgICAgIGFsd2F5cyBwcm9kdWNlcyBhIG5ldyBvYmplY3QsIGV2ZW4gaWYgbm8gY2hhbmdlcyB3ZXJlIG1hZGUuCiAKIAorLi4gX2J5dGVzLWZvcm1hdHRpbmc6CisKK2BgcHJpbnRmYGAtc3R5bGUgQnl0ZXMgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGZvcm1hdHRpbmcsIGJ5dGVzICglKQorICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBieXRlYXJyYXkgKCUpCisgICBzaW5nbGU6IGludGVycG9sYXRpb24sIGJ5dGVzICglKQorICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBieXRlYXJyYXkgKCUpCisgICBzaW5nbGU6IGJ5dGVzOyBmb3JtYXR0aW5nCisgICBzaW5nbGU6IGJ5dGVhcnJheTsgZm9ybWF0dGluZworICAgc2luZ2xlOiBieXRlczsgaW50ZXJwb2xhdGlvbgorICAgc2luZ2xlOiBieXRlYXJyYXk7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKKyAgIHNpbmdsZTogc3ByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCisgICBzaW5nbGU6ICUgZm9ybWF0dGluZworICAgc2luZ2xlOiAlIGludGVycG9sYXRpb24KKworLi4gbm90ZTo6CisKKyAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKKyAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBJZiB0aGUgdmFsdWUgYmVpbmcgcHJpbnRlZCBtYXkgYmUgYSB0dXBsZSBvcgorICAgZGljdGlvbmFyeSwgd3JhcCBpdCBpbiBhIHR1cGxlLgorCitCeXRlcyBvYmplY3RzIChgYGJ5dGVzYGAvYGBieXRlYXJyYXlgYCkgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjoKK3RoZSBgYCVgYCBvcGVyYXRvciAobW9kdWxvKS4KK1RoaXMgaXMgYWxzbyBrbm93biBhcyB0aGUgYnl0ZXMgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KK0dpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgYnl0ZXMgb2JqZWN0KSwgYGAlYGAgY29udmVyc2lvbgorc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgorVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHVzaW5nIHRoZSA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KKworSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tdHVwbGUKK29iamVjdC4gWzVdXyAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5IHRoZSBudW1iZXIgb2YKK2l0ZW1zIHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IGJ5dGVzIG9iamVjdCwgb3IgYSBzaW5nbGUgbWFwcGluZyBvYmplY3QgKGZvcgorZXhhbXBsZSwgYSBkaWN0aW9uYXJ5KS4KKworQSBjb252ZXJzaW9uIHNwZWNpZmllciBjb250YWlucyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGFuZCBoYXMgdGhlIGZvbGxvd2luZworY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOgorCisjLiBUaGUgYGAnJSdgYCBjaGFyYWN0ZXIsIHdoaWNoIG1hcmtzIHRoZSBzdGFydCBvZiB0aGUgc3BlY2lmaWVyLgorCisjLiBNYXBwaW5nIGtleSAob3B0aW9uYWwpLCBjb25zaXN0aW5nIG9mIGEgcGFyZW50aGVzaXNlZCBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzCisgICAoZm9yIGV4YW1wbGUsIGBgKHNvbWVuYW1lKWBgKS4KKworIy4gQ29udmVyc2lvbiBmbGFncyAob3B0aW9uYWwpLCB3aGljaCBhZmZlY3QgdGhlIHJlc3VsdCBvZiBzb21lIGNvbnZlcnNpb24KKyAgIHR5cGVzLgorCisjLiBNaW5pbXVtIGZpZWxkIHdpZHRoIChvcHRpb25hbCkuICBJZiBzcGVjaWZpZWQgYXMgYW4gYGAnKidgYCAoYXN0ZXJpc2spLCB0aGUKKyAgIGFjdHVhbCB3aWR0aCBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgdHVwbGUgaW4gKnZhbHVlcyosIGFuZCB0aGUKKyAgIG9iamVjdCB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoIGFuZCBvcHRpb25hbCBwcmVjaXNpb24uCisKKyMuIFByZWNpc2lvbiAob3B0aW9uYWwpLCBnaXZlbiBhcyBhIGBgJy4nYGAgKGRvdCkgZm9sbG93ZWQgYnkgdGhlIHByZWNpc2lvbi4gIElmCisgICBzcGVjaWZpZWQgYXMgYGAnKidgYCAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsIHByZWNpc2lvbiBpcyByZWFkIGZyb20gdGhlIG5leHQKKyAgIGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgdGhlIHZhbHVlIHRvIGNvbnZlcnQgY29tZXMgYWZ0ZXIgdGhlCisgICBwcmVjaXNpb24uCisKKyMuIExlbmd0aCBtb2RpZmllciAob3B0aW9uYWwpLgorCisjLiBDb252ZXJzaW9uIHR5cGUuCisKK1doZW4gdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIGEgZGljdGlvbmFyeSAob3Igb3RoZXIgbWFwcGluZyB0eXBlKSwgdGhlbiB0aGUKK2Zvcm1hdHMgaW4gdGhlIGJ5dGVzIG9iamVjdCAqbXVzdCogaW5jbHVkZSBhIHBhcmVudGhlc2lzZWQgbWFwcGluZyBrZXkgaW50byB0aGF0CitkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBgYCclJ2BgIGNoYXJhY3Rlci4gVGhlIG1hcHBpbmcga2V5CitzZWxlY3RzIHRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWQgZnJvbSB0aGUgbWFwcGluZy4gIEZvciBleGFtcGxlOgorCisgICA+Pj4gcHJpbnQoYiclKGxhbmd1YWdlKXMgaGFzICUobnVtYmVyKTAzZCBxdW90ZSB0eXBlcy4nICUKKyAgIC4uLiAgICAgICB7YidsYW5ndWFnZSc6IGIiUHl0aG9uIiwgYiJudW1iZXIiOiAyfSkKKyAgIGInUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuJworCitJbiB0aGlzIGNhc2Ugbm8gYGAqYGAgc3BlY2lmaWVycyBtYXkgb2NjdXIgaW4gYSBmb3JtYXQgKHNpbmNlIHRoZXkgcmVxdWlyZSBhCitzZXF1ZW50aWFsIHBhcmFtZXRlciBsaXN0KS4KKworVGhlIGNvbnZlcnNpb24gZmxhZyBjaGFyYWN0ZXJzIGFyZToKKworKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEZsYWcgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKys9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworfCBgYCcjJ2BgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgZm9ybSIgKHdoZXJlIGRlZmluZWQgICB8Cit8ICAgICAgICAgfCBiZWxvdykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYCcwJ2BgIHwgVGhlIGNvbnZlcnNpb24gd2lsbCBiZSB6ZXJvIHBhZGRlZCBmb3IgbnVtZXJpYyB2YWx1ZXMuICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnLSdgYCB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzIHRoZSBgYCcwJ2BgICAgICAgICAgfAorfCAgICAgICAgIHwgY29udmVyc2lvbiBpZiBib3RoIGFyZSBnaXZlbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnICdgYCB8IChhIHNwYWNlKSBBIGJsYW5rIHNob3VsZCBiZSBsZWZ0IGJlZm9yZSBhIHBvc2l0aXZlIG51bWJlciAob3IgZW1wdHkgfAorfCAgICAgICAgIHwgc3RyaW5nKSBwcm9kdWNlZCBieSBhIHNpZ25lZCBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAnKydgYCB8IEEgc2lnbiBjaGFyYWN0ZXIgKGBgJysnYGAgb3IgYGAnLSdgYCkgd2lsbCBwcmVjZWRlIHRoZSBjb252ZXJzaW9uICAgfAorfCAgICAgICAgIHwgKG92ZXJyaWRlcyBhICJzcGFjZSIgZmxhZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworQSBsZW5ndGggbW9kaWZpZXIgKGBgaGBgLCBgYGxgYCwgb3IgYGBMYGApIG1heSBiZSBwcmVzZW50LCBidXQgaXMgaWdub3JlZCBhcyBpdAoraXMgbm90IG5lY2Vzc2FyeSBmb3IgUHl0aG9uIC0tIHNvIGUuZy4gYGAlbGRgYCBpcyBpZGVudGljYWwgdG8gYGAlZGBgLgorCitUaGUgY29udmVyc2lvbiB0eXBlcyBhcmU6CisKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgQ29udmVyc2lvbiB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKKys9PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAnZCdgYCAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnaSdgYCAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbydgYCAgICB8IFNpZ25lZCBvY3RhbCB2YWx1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAndSdgYCAgICB8IE9ic29sZXRlIHR5cGUgLS0gaXQgaXMgaWRlbnRpY2FsIHRvIGBgJ2QnYGAuICAgICAgICB8IFwoOCkgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAneCdgYCAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAobG93ZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnWCdgYCAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAodXBwZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZSdgYCAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAobG93ZXJjYXNlKS4gICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnRSdgYCAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAodXBwZXJjYXNlKS4gICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZidgYCAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnRidgYCAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICB8IFwoMykgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnZydgYCAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyBsb3dlcmNhc2UgZXhwb25lbnRpYWwgICB8IFwoNCkgIHwKK3wgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnRydgYCAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyB1cHBlcmNhc2UgZXhwb25lbnRpYWwgICB8IFwoNCkgIHwKK3wgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnYydgYCAgICB8IFNpbmdsZSBieXRlIChhY2NlcHRzIGludGVnZXIgb3Igc2luZ2xlICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IGJ5dGUgb2JqZWN0cykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnYidgYCAgICB8IEJ5dGVzIChhbnkgb2JqZWN0IHRoYXQgZm9sbG93cyB0aGUgICAgICAgICAgICAgICAgICB8IFwoNSkgIHwKK3wgICAgICAgICAgICB8IDpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gIG9yIGhhcyAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IDptZXRoOmBfX2J5dGVzX19gKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAncydgYCAgICB8IGBgJ3MnYGAgaXMgYW4gYWxpYXMgZm9yIGBgJ2InYGAgYW5kIHNob3VsZCBvbmx5ICAgICB8IFwoNikgIHwKK3wgICAgICAgICAgICB8IGJlIHVzZWQgZm9yIFB5dGhvbjIvMyBjb2RlIGJhc2VzLiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnYSdgYCAgICB8IEJ5dGVzIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyAgICAgICAgICAgICB8IFwoNSkgIHwKK3wgICAgICAgICAgICB8IGBgcmVwcihvYmopLmVuY29kZSgnYXNjaWknLCdiYWNrc2xhc2hyZXBsYWNlKWBgKS4gICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAncidgYCAgICB8IGBgJ3InYGAgaXMgYW4gYWxpYXMgZm9yIGBgJ2EnYGAgYW5kIHNob3VsZCBvbmx5ICAgICB8IFwoNykgIHwKK3wgICAgICAgICAgICB8IGJlIHVzZWQgZm9yIFB5dGhvbjIvMyBjb2RlIGJhc2VzLiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnJSdgYCAgICB8IE5vIGFyZ3VtZW50IGlzIGNvbnZlcnRlZCwgcmVzdWx0cyBpbiBhIGBgJyUnYGAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgICB8IGNoYXJhY3RlciBpbiB0aGUgcmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKworTm90ZXM6CisKKygxKQorICAgVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoYGAnMCdgYCkgdG8gYmUgaW5zZXJ0ZWQgYmV0d2VlbgorICAgbGVmdC1oYW5kIHBhZGRpbmcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlIGxlYWRpbmcgY2hhcmFjdGVyCisgICBvZiB0aGUgcmVzdWx0IGlzIG5vdCBhbHJlYWR5IGEgemVyby4KKworKDIpCisgICBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyBgYCcweCdgYCBvciBgYCcwWCdgYCAoZGVwZW5kaW5nIG9uIHdoZXRoZXIKKyAgIHRoZSBgYCd4J2BgIG9yIGBgJ1gnYGAgZm9ybWF0IHdhcyB1c2VkKSB0byBiZSBpbnNlcnRlZCBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nCisgICBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG51bWJlciBpZiB0aGUgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QKKyAgIGFscmVhZHkgYSB6ZXJvLgorCisoMykKKyAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWwgcG9pbnQsIGV2ZW4gaWYKKyAgIG5vIGRpZ2l0cyBmb2xsb3cgaXQuCisKKyAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhbmQKKyAgIGRlZmF1bHRzIHRvIDYuCisKKyg0KQorICAgVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbCBwb2ludCwgYW5kCisgICB0cmFpbGluZyB6ZXJvZXMgYXJlIG5vdCByZW1vdmVkIGFzIHRoZXkgd291bGQgb3RoZXJ3aXNlIGJlLgorCisgICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgYmVmb3JlIGFuZCBhZnRlciB0aGUKKyAgIGRlY2ltYWwgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuCisKKyg1KQorICAgSWYgcHJlY2lzaW9uIGlzIGBgTmBgLCB0aGUgb3V0cHV0IGlzIHRydW5jYXRlZCB0byBgYE5gYCBjaGFyYWN0ZXJzLgorCisoNikKKyAgIGBgYiclcydgYCBpcyBkZXByZWNhdGVkLCBidXQgd2lsbCBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgdGhlIDMueCBzZXJpZXMuCisKKyg3KQorICAgYGBiJyVyJ2BgIGlzIGRlcHJlY2F0ZWQsIGJ1dCB3aWxsIG5vdCBiZSByZW1vdmVkIGR1cmluZyB0aGUgMy54IHNlcmllcy4KKworKDgpCisgICBTZWUgOnBlcDpgMjM3YC4KKworLi4gbm90ZTo6CisKKyAgIFRoZSBieXRlYXJyYXkgdmVyc2lvbiBvZiB0aGlzIG1ldGhvZCBkb2VzICpub3QqIG9wZXJhdGUgaW4gcGxhY2UgLSBpdAorICAgYWx3YXlzIHByb2R1Y2VzIGEgbmV3IG9iamVjdCwgZXZlbiBpZiBubyBjaGFuZ2VzIHdlcmUgbWFkZS4KKworLi4gc2VlYWxzbzo6IDpwZXA6YDQ2MWAuCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKwogLi4gX3R5cGVtZW1vcnl2aWV3OgogCiBNZW1vcnkgVmlld3MKQEAgLTMxMjEsMTAgKzMzNTQsOCBAQAogICAgdGhlIHZpZXcuIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKICAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgogCi0gICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuIElmCi0gICA6Y2xhc3M6YH5tZW1vcnl2aWV3LmZvcm1hdGAgaXMgb25lIG9mIHRoZSBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMKLSAgIGZyb20gdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLCBpbmRleGluZyB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50Ci0gICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuIEZ1bGwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgorICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHN1cHBvcnRzIHNsaWNpbmcgYW5kIGluZGV4aW5nIHRvIGV4cG9zZSBpdHMgZGF0YS4KKyAgIE9uZS1kaW1lbnNpb25hbCBzbGljaW5nIHdpbGwgcmVzdWx0IGluIGEgc3Vidmlldzo6CiAKICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoYidhYmNlZmcnKQogICAgID4+PiB2WzFdCkBAIC0zMTM2LDI1ICszMzY3LDI5IEBACiAgICAgPj4+IGJ5dGVzKHZbMTo0XSkKICAgICBiJ2JjZScKIAotICAgT3RoZXIgbmF0aXZlIGZvcm1hdHM6OgorICAgSWYgOmNsYXNzOmB+bWVtb3J5dmlldy5mb3JtYXRgIGlzIG9uZSBvZiB0aGUgbmF0aXZlIGZvcm1hdCBzcGVjaWZpZXJzCisgICBmcm9tIHRoZSA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSwgaW5kZXhpbmcgd2l0aCBhbiBpbnRlZ2VyIG9yIGEgdHVwbGUgb2YKKyAgIGludGVnZXJzIGlzIGFsc28gc3VwcG9ydGVkIGFuZCByZXR1cm5zIGEgc2luZ2xlICplbGVtZW50KiB3aXRoCisgICB0aGUgY29ycmVjdCB0eXBlLiAgT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIGNhbiBiZSBpbmRleGVkCisgICB3aXRoIGFuIGludGVnZXIgb3IgYSBvbmUtaW50ZWdlciB0dXBsZS4gIE11bHRpLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzCisgICBjYW4gYmUgaW5kZXhlZCB3aXRoIHR1cGxlcyBvZiBleGFjdGx5ICpuZGltKiBpbnRlZ2VycyB3aGVyZSAqbmRpbSogaXMKKyAgIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucy4gIFplcm8tZGltZW5zaW9uYWwgbWVtb3J5dmlld3MgY2FuIGJlIGluZGV4ZWQKKyAgIHdpdGggdGhlIGVtcHR5IHR1cGxlLgorCisgICBIZXJlIGlzIGFuIGV4YW1wbGUgd2l0aCBhIG5vbi1ieXRlIGZvcm1hdDo6CiAKICAgICAgID4+PiBpbXBvcnQgYXJyYXkKICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ2wnLCBbLTExMTExMTExLCAyMjIyMjIyMiwgLTMzMzMzMzMzLCA0NDQ0NDQ0NF0pCi0gICAgICA+Pj4gYVswXQorICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICA+Pj4gbVswXQogICAgICAgLTExMTExMTExCi0gICAgICA+Pj4gYVstMV0KKyAgICAgID4+PiBtWy0xXQogICAgICAgNDQ0NDQ0NDQKLSAgICAgID4+PiBhWzI6M10udG9saXN0KCkKLSAgICAgIFstMzMzMzMzMzNdCi0gICAgICA+Pj4gYVs6OjJdLnRvbGlzdCgpCisgICAgICA+Pj4gbVs6OjJdLnRvbGlzdCgpCiAgICAgICBbLTExMTExMTExLCAtMzMzMzMzMzNdCi0gICAgICA+Pj4gYVs6Oi0xXS50b2xpc3QoKQotICAgICAgWzQ0NDQ0NDQ0LCAtMzMzMzMzMzMsIDIyMjIyMjIyLCAtMTExMTExMTFdCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotCi0gICBJZiB0aGUgdW5kZXJseWluZyBvYmplY3QgaXMgd3JpdGFibGUsIHRoZSBtZW1vcnl2aWV3IHN1cHBvcnRzIHNsaWNlCi0gICBhc3NpZ25tZW50LiBSZXNpemluZyBpcyBub3QgYWxsb3dlZDo6CisgICBJZiB0aGUgdW5kZXJseWluZyBvYmplY3QgaXMgd3JpdGFibGUsIHRoZSBtZW1vcnl2aWV3IHN1cHBvcnRzCisgICBvbmUtZGltZW5zaW9uYWwgc2xpY2UgYXNzaWdubWVudC4gUmVzaXppbmcgaXMgbm90IGFsbG93ZWQ6OgogCiAgICAgICA+Pj4gZGF0YSA9IGJ5dGVhcnJheShiJ2FiY2VmZycpCiAgICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoZGF0YSkKQEAgLTMxODcsMTIgKzM0MjIsMTYgQEAKICAgICAgIFRydWUKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyBjYW4gbm93IGJlIHNsaWNlZC4KICAgICAgIE9uZS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cyB3aXRoIGZvcm1hdHMgJ0InLCAnYicgb3IgJ2MnIGFyZSBub3cgaGFzaGFibGUuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBtZW1vcnl2aWV3IGlzIG5vdyByZWdpc3RlcmVkIGF1dG9tYXRpY2FsbHkgd2l0aAogICAgICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBtZW1vcnl2aWV3cyBjYW4gbm93IGJlIGluZGV4ZWQgd2l0aCB0dXBsZSBvZiBpbnRlZ2Vycy4KKwogICAgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgc2V2ZXJhbCBtZXRob2RzOgogCiAgICAuLiBtZXRob2Q6OiBfX2VxX18oZXhwb3J0ZXIpCkBAIC0zMjU5LDYgKzM0OTgsMTcgQEAKICAgICAgIHN1cHBvcnRzIGFsbCBmb3JtYXQgc3RyaW5ncywgaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIG5vdCBpbgogICAgICAgOm1vZDpgc3RydWN0YCBtb2R1bGUgc3ludGF4LgogCisgICAuLiBtZXRob2Q6OiBoZXgoKQorCisgICAgICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0IGNvbnRhaW5pbmcgdHdvIGhleGFkZWNpbWFsIGRpZ2l0cyBmb3IgZWFjaAorICAgICAgYnl0ZSBpbiB0aGUgYnVmZmVyLiA6OgorCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYiJhYmMiKQorICAgICAgICAgPj4+IG0uaGV4KCkKKyAgICAgICAgICc2MTYyNjMnCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAuLiBtZXRob2Q6OiB0b2xpc3QoKQogCiAgICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgZWxlbWVudHMuIDo6CkBAIC0zMzE0LDEwICszNTY0LDEwIEBACiAgICAgICBDYXN0IGEgbWVtb3J5dmlldyB0byBhIG5ldyBmb3JtYXQgb3Igc2hhcGUuICpzaGFwZSogZGVmYXVsdHMgdG8KICAgICAgIGBgW2J5dGVfbGVuZ3RoLy9uZXdfaXRlbXNpemVdYGAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlc3VsdCB2aWV3CiAgICAgICB3aWxsIGJlIG9uZS1kaW1lbnNpb25hbC4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIG5ldyBtZW1vcnl2aWV3LCBidXQKLSAgICAgIHRoZSBidWZmZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuIFN1cHBvcnRlZCBjYXN0cyBhcmUgMUQgLT4gQy1jb250aWd1b3VzCisgICAgICB0aGUgYnVmZmVyIGl0c2VsZiBpcyBub3QgY29waWVkLiBTdXBwb3J0ZWQgY2FzdHMgYXJlIDFEIC0+IEMtOnRlcm06YGNvbnRpZ3VvdXNgCiAgICAgICBhbmQgQy1jb250aWd1b3VzIC0+IDFELgogCi0gICAgICBCb3RoIGZvcm1hdHMgYXJlIHJlc3RyaWN0ZWQgdG8gc2luZ2xlIGVsZW1lbnQgbmF0aXZlIGZvcm1hdHMgaW4KKyAgICAgIFRoZSBkZXN0aW5hdGlvbiBmb3JtYXQgaXMgcmVzdHJpY3RlZCB0byBhIHNpbmdsZSBlbGVtZW50IG5hdGl2ZSBmb3JtYXQgaW4KICAgICAgIDptb2Q6YHN0cnVjdGAgc3ludGF4LiBPbmUgb2YgdGhlIGZvcm1hdHMgbXVzdCBiZSBhIGJ5dGUgZm9ybWF0CiAgICAgICAoJ0InLCAnYicgb3IgJ2MnKS4gVGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgbXVzdCBiZSB0aGUgc2FtZQogICAgICAgYXMgdGhlIG9yaWdpbmFsIGxlbmd0aC4KQEAgLTMzOTgsNiArMzY0OCw5IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgVGhlIHNvdXJjZSBmb3JtYXQgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgd2hlbiBjYXN0aW5nIHRvIGEgYnl0ZSB2aWV3LgorCiAgICBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsIHJlYWRvbmx5IGF0dHJpYnV0ZXMgYXZhaWxhYmxlOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBvYmoKQEAgLTM1MDIsMTkgKzM3NTUsMTkgQEAKIAogICAgLi4gYXR0cmlidXRlOjogY19jb250aWd1b3VzCiAKLSAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBDLWNvbnRpZ3VvdXMuCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgQy06dGVybTpgY29udGlndW91c2AuCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAgICAuLiBhdHRyaWJ1dGU6OiBmX2NvbnRpZ3VvdXMKIAotICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEZvcnRyYW4gY29udGlndW91cy4KKyAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBGb3J0cmFuIDp0ZXJtOmBjb250aWd1b3VzYC4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRpZ3VvdXMKIAotICAgICAgQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIGNvbnRpZ3VvdXMuCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgOnRlcm06YGNvbnRpZ3VvdXNgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKaW5kZXggMTliZGIyMS4uMmJkOGRmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CkBAIC05NSw2ICs5NSwxMCBAQAogICAgICAgYW4gYXJiaXRyYXJ5IHNldCBvZiBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAgIDptZXRoOmBmb3JtYXRgIGlzIGp1c3QgYSB3cmFwcGVyIHRoYXQgY2FsbHMgOm1ldGg6YHZmb3JtYXRgLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy41CisgICAgICAgICBQYXNzaW5nIGEgZm9ybWF0IHN0cmluZyBhcyBrZXl3b3JkIGFyZ3VtZW50ICpmb3JtYXRfc3RyaW5nKiBoYXMgYmVlbgorICAgICAgICAgZGVwcmVjYXRlZC4KKwogICAgLi4gbWV0aG9kOjogdmZvcm1hdChmb3JtYXRfc3RyaW5nLCBhcmdzLCBrd2FyZ3MpCiAKICAgICAgIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgYWN0dWFsIHdvcmsgb2YgZm9ybWF0dGluZy4gIEl0IGlzIGV4cG9zZWQgYXMgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCA5YWM4ODgyLi5hZGY5OWVjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMjUsMTA0ICsyNSwzMiBAQAogVXNpbmcgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIE1vZHVsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGlzIHRvIHVzZSB0aGUgZm9sbG93aW5nCi1jb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGFsbCB1c2UgY2FzZXMgdGhleSBjYW4gaGFuZGxlLiBGb3IgbW9yZSBhZHZhbmNlZAotdXNlIGNhc2VzLCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFBvcGVuYCBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCitUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggdG8gaW52b2tpbmcgc3VicHJvY2Vzc2VzIGlzIHRvIHVzZSB0aGUgOmZ1bmM6YHJ1bmAKK2Z1bmN0aW9uIGZvciBhbGwgdXNlIGNhc2VzIGl0IGNhbiBoYW5kbGUuIEZvciBtb3JlIGFkdmFuY2VkIHVzZSBjYXNlcywgdGhlCit1bmRlcmx5aW5nIDpjbGFzczpgUG9wZW5gIGludGVyZmFjZSBjYW4gYmUgdXNlZCBkaXJlY3RseS4KKworVGhlIDpmdW5jOmBydW5gIGZ1bmN0aW9uIHdhcyBhZGRlZCBpbiBQeXRob24gMy41OyBpZiB5b3UgbmVlZCB0byByZXRhaW4KK2NvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucywgc2VlIHRoZSA6cmVmOmBjYWxsLWZ1bmN0aW9uLXRyaW9gIHNlY3Rpb24uCiAKIAotLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCisgICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCi0gICByZXR1cm4gdGhlIDphdHRyOmByZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgogCiAgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QgY29tbW9uIG9uZXMsIGRlc2NyaWJlZCBiZWxvdwogICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCiAgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCi0gICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSBhcGFydCBmcm9tICp0aW1lb3V0KiwKKyAgICppbnB1dCogYW5kICpjaGVjayosIGFsbCB0aGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIHBhc3NlZCB0aHJvdWdoIHRvCisgICB0aGF0IGludGVyZmFjZS4KIAotICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAotICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQotICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcwotICAgaGFzIHRlcm1pbmF0ZWQuCisgICBUaGlzIGRvZXMgbm90IGNhcHR1cmUgc3Rkb3V0IG9yIHN0ZGVyciBieSBkZWZhdWx0LiBUbyBkbyBzbywgcGFzcworICAgOmRhdGE6YFBJUEVgIGZvciB0aGUgKnN0ZG91dCogYW5kL29yICpzdGRlcnIqIGFyZ3VtZW50cy4KIAotICAgRXhhbXBsZXM6OgotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jYWxsKFsibHMiLCAiLWwiXSkKLSAgICAgIDAKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2FsbCgiZXhpdCAxIiwgc2hlbGw9VHJ1ZSkKLSAgICAgIDEKLQotICAgLi4gbm90ZTo6Ci0KLSAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKLSAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCi0gICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKLSAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICAqdGltZW91dCogd2FzIGFkZGVkLgotCi0KLS4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCi0KLSAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIHJldHVybgotICAgY29kZSB3YXMgemVybyB0aGVuIHJldHVybiwgb3RoZXJ3aXNlIHJhaXNlIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQotICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUKLSAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLnJldHVybmNvZGVgIGF0dHJpYnV0ZS4KLQotICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgotICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQotICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAotICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCi0KLSAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKLSAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKLSAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKLSAgIGhhcyB0ZXJtaW5hdGVkLgotCi0gICBFeGFtcGxlczo6Ci0KLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJscyIsICItbCJdKQotICAgICAgMAotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19jYWxsKCJleGl0IDEiLCBzaGVsbD1UcnVlKQotICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgLi4uCi0gICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBEbyBub3QgdXNlIGBgc3Rkb3V0PVBJUEVgYCBvciBgYHN0ZGVycj1QSVBFYGAgd2l0aCB0aGlzCi0gICAgICBmdW5jdGlvbi4gIFRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmxvY2sgaWYgaXQgZ2VuZXJhdGVzIGVub3VnaAotICAgICAgb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwIHRoZSBPUyBwaXBlIGJ1ZmZlciBhcyB0aGUgcGlwZXMgYXJlCi0gICAgICBub3QgYmVpbmcgcmVhZCBmcm9tLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KLQotCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBpbnB1dD1Ob25lLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQotCi0gICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCi0KLSAgIElmIHRoZSByZXR1cm4gY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCi0gICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZQotICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3IucmV0dXJuY29kZWAgYXR0cmlidXRlIGFuZCBhbnkgb3V0cHV0IGluIHRoZQotICAgOmF0dHI6YH5DYWxsZWRQcm9jZXNzRXJyb3Iub3V0cHV0YCBhdHRyaWJ1dGUuCi0KLSAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHVzZSBvZiBrZXl3b3JkLW9ubHkgbm90YXRpb24KLSAgIGluIHRoZSBhYmJyZXZpYXRlZCBzaWduYXR1cmUpLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKLSAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqaW5wdXQqIGFuZCAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0bwotICAgdGhhdCBpbnRlcmZhY2UuICBJbiBhZGRpdGlvbiwgKnN0ZG91dCogaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBhcmd1bWVudCwgYXMKLSAgIGl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBjb2xsZWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgc3VicHJvY2Vzcy4KLQotICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAotICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB3YWl0ZWQgZm9yLiAgVGhlCiAgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmUtcmFpc2VkIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzCiAgICBoYXMgdGVybWluYXRlZC4KIApAQCAtMTMyLDUzICs2MCw2NCBAQAogICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKICAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCiAKKyAgIElmICpjaGVjayogaXMgVHJ1ZSwgYW5kIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub24temVybyBleGl0IGNvZGUsIGEKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBBdHRyaWJ1dGVzIG9mIHRoYXQKKyAgIGV4Y2VwdGlvbiBob2xkIHRoZSBhcmd1bWVudHMsIHRoZSBleGl0IGNvZGUsIGFuZCBzdGRvdXQgYW5kIHN0ZGVyciBpZiB0aGV5CisgICB3ZXJlIGNhcHR1cmVkLgorCiAgICBFeGFtcGxlczo6CiAKLSAgICAgID4+PiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImVjaG8iLCAiSGVsbG8gV29ybGQhIl0pCi0gICAgICBiJ0hlbGxvIFdvcmxkIVxuJworICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dAorICAgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnXSwgcmV0dXJuY29kZT0wKQogCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJlY2hvIiwgIkhlbGxvIFdvcmxkISJdLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgICAgICdIZWxsbyBXb3JsZCFcbicKLQotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsic2VkIiwgIi1lIiwgInMvZm9vL2Jhci8iXSwKLSAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dD1iIndoZW4gaW4gdGhlIGNvdXJzZSBvZiBmb29tYW4gZXZlbnRzXG4iKQotICAgICAgYid3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgYmFybWFuIGV2ZW50c1xuJwotCi0gICAgICA+Pj4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImV4aXQgMSIsIHNoZWxsPVRydWUpCisgICAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oImV4aXQgMSIsIHNoZWxsPVRydWUsIGNoZWNrPVRydWUpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAuLi4KKyAgICAgICAgLi4uCiAgICAgICBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjogQ29tbWFuZCAnZXhpdCAxJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAxCiAKLSAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGRhdGEgYXMgZW5jb2RlZCBieXRlcy4gVGhlIGFjdHVhbAotICAgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dCBkYXRhIG1heSBkZXBlbmQgb24gdGhlIGNvbW1hbmQgYmVpbmcgaW52b2tlZCwgc28gdGhlCi0gICBkZWNvZGluZyB0byB0ZXh0IHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSBoYW5kbGVkIGF0IHRoZSBhcHBsaWNhdGlvbiBsZXZlbC4KKyAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIiwgIi9kZXYvbnVsbCJdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnLCAnL2Rldi9udWxsJ10sIHJldHVybmNvZGU9MCwKKyAgICAgIHN0ZG91dD1iJ2Nydy1ydy1ydy0gMSByb290IHJvb3QgMSwgMyBKYW4gMjMgMTY6MjMgL2Rldi9udWxsXG4nKQogCi0gICBUaGlzIGJlaGF2aW91ciBtYXkgYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nICp1bml2ZXJzYWxfbmV3bGluZXMqIHRvCi0gICBgYFRydWVgYCBhcyBkZXNjcmliZWQgYmVsb3cgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAotICAgVG8gYWxzbyBjYXB0dXJlIHN0YW5kYXJkIGVycm9yIGluIHRoZSByZXN1bHQsIHVzZQotICAgYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYDo6CisuLiBjbGFzczo6IENvbXBsZXRlZFByb2Nlc3MKIAotICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAotICAgICAgLi4uICAgICAibHMgbm9uX2V4aXN0ZW50X2ZpbGU7IGV4aXQgMCIsCi0gICAgICAuLi4gICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKLSAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKKyAgIFRoZSByZXR1cm4gdmFsdWUgZnJvbSA6ZnVuYzpgcnVuYCwgcmVwcmVzZW50aW5nIGEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZC4KIAotICAgLi4gbm90ZTo6CisgICAuLiBhdHRyaWJ1dGU6OiBhcmdzCiAKLSAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKLSAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCi0gICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKLSAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisgICAgICBUaGUgYXJndW1lbnRzIHVzZWQgdG8gbGF1bmNoIHRoZSBwcm9jZXNzLiBUaGlzIG1heSBiZSBhIGxpc3Qgb3IgYSBzdHJpbmcuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgLi4gYXR0cmlidXRlOjogcmV0dXJuY29kZQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KKyAgICAgIEV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzLiBUeXBpY2FsbHksIGFuIGV4aXQgc3RhdHVzIG9mIDAgaW5kaWNhdGVzCisgICAgICB0aGF0IGl0IHJhbiBzdWNjZXNzZnVsbHkuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40Ci0gICAgICAqaW5wdXQqIHdhcyBhZGRlZC4KKyAgICAgIEEgbmVnYXRpdmUgdmFsdWUgYGAtTmBgIGluZGljYXRlcyB0aGF0IHRoZSBjaGlsZCB3YXMgdGVybWluYXRlZCBieSBzaWduYWwKKyAgICAgIGBgTmBgIChQT1NJWCBvbmx5KS4KKworICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CisKKyAgICAgIENhcHR1cmVkIHN0ZG91dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gTm9uZSBpZiBzdGRvdXQKKyAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisKKyAgICAgIElmIHlvdSByYW4gdGhlIHByb2Nlc3Mgd2l0aCBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgLCBzdGRvdXQgYW5kCisgICAgICBzdGRlcnIgd2lsbCBiZSBjb21iaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIDphdHRyOmBzdGRlcnJgIHdpbGwgYmUKKyAgICAgIE5vbmUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHN0ZGVycgorCisgICAgICBDYXB0dXJlZCBzdGRlcnIgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIE5vbmUgaWYgc3RkZXJyCisgICAgICB3YXMgbm90IGNhcHR1cmVkLgorCisgICAuLiBtZXRob2Q6OiBjaGVja19yZXR1cm5jb2RlKCkKKworICAgICAgSWYgOmF0dHI6YHJldHVybmNvZGVgIGlzIG5vbi16ZXJvLCByYWlzZSBhIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBkYXRhOjogREVWTlVMTAogCkBAIC0yMjUsMTEgKzE2NCwyMiBAQAogCiAgICAgLi4gYXR0cmlidXRlOjogb3V0cHV0CiAKLSAgICAgICAgT3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBieQorICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgaXQgd2FzIGNhcHR1cmVkIGJ5IDpmdW5jOmBydW5gIG9yCiAgICAgICAgIDpmdW5jOmBjaGVja19vdXRwdXRgLiAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KIAorICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAorCisgICAgICAgIEFsaWFzIGZvciBvdXRwdXQsIGZvciBzeW1tZXRyeSB3aXRoIDphdHRyOmBzdGRlcnJgLgorCisgICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCisKKyAgICAgICAgU3RkZXJyIG91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAuCisgICAgICAgIE90aGVyd2lzZSwgYGBOb25lYGAuCisKICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBhdHRyaWJ1dGVzIGFkZGVkCiAKIC4uIGV4Y2VwdGlvbjo6IENhbGxlZFByb2Nlc3NFcnJvcgogCkBAIC0yNDYsOSArMTk2LDIwIEBACiAKICAgICAuLiBhdHRyaWJ1dGU6OiBvdXRwdXQKIAotICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGJ5CisgICAgICAgIE91dHB1dCBvZiB0aGUgY2hpbGQgcHJvY2VzcyBpZiBpdCB3YXMgY2FwdHVyZWQgYnkgOmZ1bmM6YHJ1bmAgb3IKICAgICAgICAgOmZ1bmM6YGNoZWNrX291dHB1dGAuICBPdGhlcndpc2UsIGBgTm9uZWBgLgogCisgICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CisKKyAgICAgICAgQWxpYXMgZm9yIG91dHB1dCwgZm9yIHN5bW1ldHJ5IHdpdGggOmF0dHI6YHN0ZGVycmAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKKworICAgICAgICBTdGRlcnIgb3V0cHV0IG9mIHRoZSBjaGlsZCBwcm9jZXNzIGlmIGl0IHdhcyBjYXB0dXJlZCBieSA6ZnVuYzpgcnVuYC4KKyAgICAgICAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBhdHRyaWJ1dGVzIGFkZGVkCiAKIAogLi4gX2ZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHM6CkBAIC02MzUsNiArNTk2LDcgQEAKICAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCiAKICAgIDptZXRoOmBjb21tdW5pY2F0ZWAgcmV0dXJucyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KKyAgIFRoZSBkYXRhIHdpbGwgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgc3RyaW5ncy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTg1MSw2ICs4MTMsMTEyIEBACiAKICAgIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGlmIDpkYXRhOmBDUkVBVEVfTkVXX0NPTlNPTEVgIGlzIHNwZWNpZmllZC4KIAorLi4gX2NhbGwtZnVuY3Rpb24tdHJpbzoKKworT2xkZXIgaGlnaC1sZXZlbCBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ByaW9yIHRvIFB5dGhvbiAzLjUsIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyBjb21wcmlzZWQgdGhlIGhpZ2ggbGV2ZWwgQVBJIHRvCitzdWJwcm9jZXNzLiBZb3UgY2FuIG5vdyB1c2UgOmZ1bmM6YHJ1bmAgaW4gbWFueSBjYXNlcywgYnV0IGxvdHMgb2YgZXhpc3RpbmcgY29kZQorY2FsbHMgdGhlc2UgZnVuY3Rpb25zLgorCisuLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQorCisgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KKyAgIHJldHVybiB0aGUgOmF0dHI6YH5Qb3Blbi5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICBydW4oLi4uKS5yZXR1cm5jb2RlCisKKyAgIChleGNlcHQgdGhhdCB0aGUgKmlucHV0KiBhbmQgKmNoZWNrKiBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkKQorCisgICBUaGUgYXJndW1lbnRzIHNob3duIGFib3ZlIGFyZSBtZXJlbHkgdGhlIG1vc3QKKyAgIGNvbW1vbiBvbmVzLiBUaGUgZnVsbCBmdW5jdGlvbiBzaWduYXR1cmUgaXMgbGFyZ2VseSB0aGUKKyAgIHNhbWUgYXMgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9uIHBhc3NlcyBhbGwKKyAgIHN1cHBsaWVkIGFyZ3VtZW50cyBvdGhlciB0aGFuICp0aW1lb3V0KiBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorCisgICAuLiBub3RlOjoKKworICAgICAgRG8gbm90IHVzZSBgYHN0ZG91dD1QSVBFYGAgb3IgYGBzdGRlcnI9UElQRWBgIHdpdGggdGhpcworICAgICAgZnVuY3Rpb24uICBUaGUgY2hpbGQgcHJvY2VzcyB3aWxsIGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2gKKyAgICAgIG91dHB1dCB0byBhIHBpcGUgdG8gZmlsbCB1cCB0aGUgT1MgcGlwZSBidWZmZXIgYXMgdGhlIHBpcGVzIGFyZQorICAgICAgbm90IGJlaW5nIHJlYWQgZnJvbS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCisKKy4uIGZ1bmN0aW9uOjogY2hlY2tfY2FsbChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisKKyAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZS4gSWYgdGhlIHJldHVybgorICAgY29kZSB3YXMgemVybyB0aGVuIHJldHVybiwgb3RoZXJ3aXNlIHJhaXNlIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAuIFRoZQorICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUKKyAgIDphdHRyOmB+Q2FsbGVkUHJvY2Vzc0Vycm9yLnJldHVybmNvZGVgIGF0dHJpYnV0ZS4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIHJ1biguLi4sIGNoZWNrPVRydWUpCisKKyAgIChleGNlcHQgdGhhdCB0aGUgKmlucHV0KiBwYXJhbWV0ZXIgaXMgbm90IHN1cHBvcnRlZCkKKworICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0CisgICBjb21tb24gb25lcy4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIERvIG5vdCB1c2UgYGBzdGRvdXQ9UElQRWBgIG9yIGBgc3RkZXJyPVBJUEVgYCB3aXRoIHRoaXMKKyAgICAgIGZ1bmN0aW9uLiAgVGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBibG9jayBpZiBpdCBnZW5lcmF0ZXMgZW5vdWdoCisgICAgICBvdXRwdXQgdG8gYSBwaXBlIHRvIGZpbGwgdXAgdGhlIE9TIHBpcGUgYnVmZmVyIGFzIHRoZSBwaXBlcyBhcmUKKyAgICAgIG5vdCBiZWluZyByZWFkIGZyb20uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisKKy4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisKKyAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dC4KKworICAgSWYgdGhlIHJldHVybiBjb2RlIHdhcyBub24temVybyBpdCByYWlzZXMgYSA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgLiBUaGUKKyAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgcmV0dXJuIGNvZGUgaW4gdGhlCisgICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5yZXR1cm5jb2RlYCBhdHRyaWJ1dGUgYW5kIGFueSBvdXRwdXQgaW4gdGhlCisgICA6YXR0cjpgfkNhbGxlZFByb2Nlc3NFcnJvci5vdXRwdXRgIGF0dHJpYnV0ZS4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIHJ1biguLi4sIGNoZWNrPVRydWUsIHN0ZG91dD1QSVBFKS5zdGRvdXQKKworICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLgorICAgVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlIHNhbWUgYXMgdGhhdCBvZiA6ZnVuYzpgcnVuYCAtCisgICBtb3N0IGFyZ3VtZW50cyBhcmUgcGFzc2VkIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBIb3dldmVyLCBleHBsaWNpdGx5IHBhc3NpbmcgYGBpbnB1dD1Ob25lYGAgdG8gaW5oZXJpdCB0aGUgcGFyZW50J3MKKyAgIHN0YW5kYXJkIGlucHV0IGZpbGUgaGFuZGxlIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgIEJ5IGRlZmF1bHQsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGRhdGEgYXMgZW5jb2RlZCBieXRlcy4gVGhlIGFjdHVhbAorICAgZW5jb2Rpbmcgb2YgdGhlIG91dHB1dCBkYXRhIG1heSBkZXBlbmQgb24gdGhlIGNvbW1hbmQgYmVpbmcgaW52b2tlZCwgc28gdGhlCisgICBkZWNvZGluZyB0byB0ZXh0IHdpbGwgb2Z0ZW4gbmVlZCB0byBiZSBoYW5kbGVkIGF0IHRoZSBhcHBsaWNhdGlvbiBsZXZlbC4KKworICAgVGhpcyBiZWhhdmlvdXIgbWF5IGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyAqdW5pdmVyc2FsX25ld2xpbmVzKiB0bworICAgYGBUcnVlYGAgYXMgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLgorCisgICBUbyBhbHNvIGNhcHR1cmUgc3RhbmRhcmQgZXJyb3IgaW4gdGhlIHJlc3VsdCwgdXNlCisgICBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgOjoKKworICAgICAgPj4+IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgLi4uICAgICAibHMgbm9uX2V4aXN0ZW50X2ZpbGU7IGV4aXQgMCIsCisgICAgICAuLi4gICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgIC4uLiAgICAgc2hlbGw9VHJ1ZSkKKyAgICAgICdsczogbm9uX2V4aXN0ZW50X2ZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcbicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAorICAgICAgU3VwcG9ydCBmb3IgdGhlICppbnB1dCoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCiAKIC4uIF9zdWJwcm9jZXNzLXJlcGxhY2VtZW50czoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0IGIvRG9jL2xpYnJhcnkvc3ltdGFibGUucnN0CmluZGV4IDI1MDNkMzMuLmJhMmNhZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5bXRhYmxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeW10YWJsZS5yc3QKQEAgLTcxLDEwICs3MSw2IEBACiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgYmxvY2sgdXNlcyBgYGV4ZWNgYC4KIAotICAgLi4gbWV0aG9kOjogaGFzX2ltcG9ydF9zdGFyKCkKLQotICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBibG9jayB1c2VzIGEgc3RhcnJlZCBmcm9tLWltcG9ydC4KLQogICAgLi4gbWV0aG9kOjogZ2V0X2lkZW50aWZpZXJzKCkKIAogICAgICAgUmV0dXJuIGEgbGlzdCBvZiBuYW1lcyBvZiBzeW1ib2xzIGluIHRoaXMgdGFibGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCAzMDI0MDg2Li5iYjliZGM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTE2Nyw3ICsxNjcsNyBAQAogCiAuLiBkYXRhOjogZG9udF93cml0ZV9ieXRlY29kZQogCi0gICBJZiB0aGlzIGlzIHRydWUsIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiB0aGlzIGlzIHRydWUsIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgZmlsZXMgb24gdGhlCiAgICBpbXBvcnQgb2Ygc291cmNlIG1vZHVsZXMuICBUaGlzIHZhbHVlIGlzIGluaXRpYWxseSBzZXQgdG8gYGBUcnVlYGAgb3IKICAgIGBgRmFsc2VgYCBkZXBlbmRpbmcgb24gdGhlIDpvcHRpb246YC1CYCBjb21tYW5kIGxpbmUgb3B0aW9uIGFuZCB0aGUKICAgIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IHlvdSBjYW4gc2V0IGl0CkBAIC01NzYsNiArNTc2LDE4IEBACiAgICAgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfY29yb3V0aW5lX3dyYXBwZXIoKQorCisgICBSZXR1cm5zIGBgTm9uZWBgLCBvciBhIHdyYXBwZXIgc2V0IGJ5IDpmdW5jOmBzZXRfY29yb3V0aW5lX3dyYXBwZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAorICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworCiAuLiBkYXRhOjogaGFzaF9pbmZvCiAKICAgIEEgOnRlcm06YHN0cnVjdCBzZXF1ZW5jZWAgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaApAQCAtNzE4LDYgKzczMCwxNCBAQAogICAgdmFsdWUgb2YgOmZ1bmM6YGludGVybmAgYXJvdW5kIHRvIGJlbmVmaXQgZnJvbSBpdC4KIAogCisuLiBmdW5jdGlvbjo6IGlzX2ZpbmFsaXppbmcoKQorCisgICBSZXR1cm4gOmNvbnN0OmBUcnVlYCBpZiB0aGUgUHl0aG9uIGludGVycHJldGVyIGlzCisgICA6dGVybTpgc2h1dHRpbmcgZG93biA8aW50ZXJwcmV0ZXIgc2h1dGRvd24+YCwgOmNvbnN0OmBGYWxzZWAgb3RoZXJ3aXNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBkYXRhOjogbGFzdF90eXBlCiAgICAgICAgICAgbGFzdF92YWx1ZQogICAgICAgICAgIGxhc3RfdHJhY2ViYWNrCkBAIC0xMDUzLDYgKzEwNzMsNDYgQEAKICAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKKworICAgQWxsb3dzIGludGVyY2VwdGluZyBjcmVhdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzIChvbmx5IG9uZXMgdGhhdAorICAgYXJlIGNyZWF0ZWQgYnkgYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb247IGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGgKKyAgIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAgd2lsbCBub3QgYmUKKyAgIGludGVyY2VwdGVkKS4KKworICAgVGhlICp3cmFwcGVyKiBhcmd1bWVudCBtdXN0IGJlIGVpdGhlcjoKKworICAgKiBhIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyBvbmUgYXJndW1lbnQgKGEgY29yb3V0aW5lIG9iamVjdCk7CisgICAqIGBgTm9uZWBgLCB0byByZXNldCB0aGUgd3JhcHBlci4KKworICAgSWYgY2FsbGVkIHR3aWNlLCB0aGUgbmV3IHdyYXBwZXIgcmVwbGFjZXMgdGhlIHByZXZpb3VzIG9uZS4gIFRoZSBmdW5jdGlvbgorICAgaXMgdGhyZWFkLXNwZWNpZmljLgorCisgICBUaGUgKndyYXBwZXIqIGNhbGxhYmxlIGNhbm5vdCBkZWZpbmUgbmV3IGNvcm91dGluZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseTo6CisKKyAgICAgICAgZGVmIHdyYXBwZXIoY29ybyk6CisgICAgICAgICAgICBhc3luYyBkZWYgd3JhcChjb3JvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgY29ybworICAgICAgICAgICAgcmV0dXJuIHdyYXAoY29ybykKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIGZhaWwgd2l0aCBhIFJ1bnRpbWVFcnJvciwgYmVjYXVzZQorICAgICAgICAjIGBgd3JhcHBlcmBgIGNyZWF0ZXMgYSBgYHdyYXAoY29ybylgYCBjb3JvdXRpbmU6CisgICAgICAgIGZvbygpCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBnZXRfY29yb3V0aW5lX3dyYXBwZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAorICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKICAgICAgICAgICBzdGRlcnIKQEAgLTEyMjMsNCArMTI4MywzIEBACiAuLiBydWJyaWM6OiBDaXRhdGlvbnMKIAogLi4gW0M5OV0gSVNPL0lFQyA5ODk5OjE5OTkuICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tIEMuIiAgQSBwdWJsaWMgZHJhZnQgb2YgdGhpcyBzdGFuZGFyZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMTQvd3d3L2RvY3MvbjEyNTYucGRmXCAuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RhcmZpbGUucnN0IGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKaW5kZXggMDVmMjlhZC4uYWRhY2IwYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QKQEAgLTYyLDYgKzYyLDIzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjp4eidgYCAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uLiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3gnYGAgb3IgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIGV4Y2x1c2l2ZWx5IHdpdGhvdXQgICAgICAgIHwKKyAgIHwgYGAneDonYGAgICAgICAgICB8IGNvbXByZXNzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd4Omd6J2BgICAgICAgIHwgQ3JlYXRlIGEgdGFyZmlsZSB3aXRoIGd6aXAgY29tcHJlc3Npb24uICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBSYWlzZSBhbiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGV4Y2VwdGlvbiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IGlmIGl0IGlzIGFscmVhZHkgZXhpc3RzLiAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3g6YnoyJ2BgICAgICAgfCBDcmVhdGUgYSB0YXJmaWxlIHdpdGggYnppcDIgY29tcHJlc3Npb24uICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8IFJhaXNlIGFuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgZXhjZXB0aW9uICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgaWYgaXQgaXMgYWxyZWFkeSBleGlzdHMuICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAneDp4eidgYCAgICAgICB8IENyZWF0ZSBhIHRhcmZpbGUgd2l0aCBsem1hIGNvbXByZXNzaW9uLiAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgUmFpc2UgYW4gOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBleGNlcHRpb24gICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCBpZiBpdCBpcyBhbHJlYWR5IGV4aXN0cy4gICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtODIsOSArOTksOSBAQAogICAgSWYgKmZpbGVvYmoqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBhIDp0ZXJtOmBmaWxlIG9iamVjdGAKICAgIG9wZW5lZCBpbiBiaW5hcnkgbW9kZSBmb3IgKm5hbWUqLiBJdCBpcyBzdXBwb3NlZCB0byBiZSBhdCBwb3NpdGlvbiAwLgogCi0gICBGb3IgbW9kZXMgYGAndzpneidgYCwgYGAncjpneidgYCwgYGAndzpiejInYGAsIGBgJ3I6YnoyJ2BgLCA6ZnVuYzpgdGFyZmlsZS5vcGVuYAotICAgYWNjZXB0cyB0aGUga2V5d29yZCBhcmd1bWVudCAqY29tcHJlc3NsZXZlbCogdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb2YKLSAgIHRoZSBmaWxlLgorICAgRm9yIG1vZGVzIGBgJ3c6Z3onYGAsIGBgJ3I6Z3onYGAsIGBgJ3c6YnoyJ2BgLCBgYCdyOmJ6MidgYCwgYGAneDpneidgYCwKKyAgIGBgJ3g6YnoyJ2BgLCA6ZnVuYzpgdGFyZmlsZS5vcGVuYCBhY2NlcHRzIHRoZSBrZXl3b3JkIGFyZ3VtZW50CisgICAqY29tcHJlc3NsZXZlbCogdG8gc3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIGZpbGUuCiAKICAgIEZvciBzcGVjaWFsIHB1cnBvc2VzLCB0aGVyZSBpcyBhIHNlY29uZCBmb3JtYXQgZm9yICptb2RlKjoKICAgIGBgJ2ZpbGVtb2RlfFtjb21wcmVzc2lvbl0nYGAuICA6ZnVuYzpgdGFyZmlsZS5vcGVuYCB3aWxsIHJldHVybiBhIDpjbGFzczpgVGFyRmlsZWAKQEAgLTEyNyw2ICsxNDQsOCBAQAogICAgfCAgICAgICAgICAgICB8IHdyaXRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYCd4J2BgIChleGNsdXNpdmUgY3JlYXRpb24pIG1vZGUgd2FzIGFkZGVkLgogCiAuLiBjbGFzczo6IFRhckZpbGUKIApAQCAtMjUyLDggKzI3MSw4IEBACiAgICBJbiB0aGlzIGNhc2UsIHRoZSBmaWxlIG9iamVjdCdzIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgaXMgdXNlZCBpZiBpdCBleGlzdHMuCiAKICAgICptb2RlKiBpcyBlaXRoZXIgYGAncidgYCB0byByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgYGAnYSdgYCB0byBhcHBlbmQKLSAgIGRhdGEgdG8gYW4gZXhpc3RpbmcgZmlsZSBvciBgYCd3J2BgIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nCi0gICBvbmUuCisgICBkYXRhIHRvIGFuIGV4aXN0aW5nIGZpbGUsIGBgJ3cnYGAgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcKKyAgIG9uZSBvciBgYCd4J2BgIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG9ubHkgaWYgaXQncyBub3QgZXhpc3RzLgogCiAgICBJZiAqZmlsZW9iaiogaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBkYXRhLiBJZiBpdCBjYW4gYmUKICAgIGRldGVybWluZWQsICptb2RlKiBpcyBvdmVycmlkZGVuIGJ5ICpmaWxlb2JqKidzIG1vZGUuICpmaWxlb2JqKiB3aWxsIGJlIHVzZWQKQEAgLTI5MiwxMiArMzExLDE0IEBACiAgICB0byBiZSBoYW5kbGVkLiBUaGUgZGVmYXVsdCBzZXR0aW5ncyB3aWxsIHdvcmsgZm9yIG1vc3QgdXNlcnMuCiAgICBTZWUgc2VjdGlvbiA6cmVmOmB0YXItdW5pY29kZWAgZm9yIGluLWRlcHRoIGluZm9ybWF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlICplcnJvcnMqIGFyZ3VtZW50LgotCiAgICBUaGUgKnBheF9oZWFkZXJzKiBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBkaWN0aW9uYXJ5IG9mIHN0cmluZ3Mgd2hpY2gKICAgIHdpbGwgYmUgYWRkZWQgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBpZiAqZm9ybWF0KiBpcyA6Y29uc3Q6YFBBWF9GT1JNQVRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgVXNlIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlICplcnJvcnMqIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKIC4uIGNsYXNzbWV0aG9kOjogVGFyRmlsZS5vcGVuKC4uLikKIApAQCAtMzI4LDExICszNDksMTUgQEAKICAgIHJldHVybmVkIGJ5IDptZXRoOmBnZXRtZW1iZXJzYC4KIAogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmxpc3QodmVyYm9zZT1UcnVlKQorLi4gbWV0aG9kOjogVGFyRmlsZS5saXN0KHZlcmJvc2U9VHJ1ZSwgKiwgbWVtYmVycz1Ob25lKQogCiAgICBQcmludCBhIHRhYmxlIG9mIGNvbnRlbnRzIHRvIGBgc3lzLnN0ZG91dGBgLiBJZiAqdmVyYm9zZSogaXMgOmNvbnN0OmBGYWxzZWAsCiAgICBvbmx5IHRoZSBuYW1lcyBvZiB0aGUgbWVtYmVycyBhcmUgcHJpbnRlZC4gSWYgaXQgaXMgOmNvbnN0OmBUcnVlYCwgb3V0cHV0Ci0gICBzaW1pbGFyIHRvIHRoYXQgb2YgOnByb2dyYW06YGxzIC1sYCBpcyBwcm9kdWNlZC4KKyAgIHNpbWlsYXIgdG8gdGhhdCBvZiA6cHJvZ3JhbTpgbHMgLWxgIGlzIHByb2R1Y2VkLiBJZiBvcHRpb25hbCAqbWVtYmVycyogaXMKKyAgIGdpdmVuLCBpdCBtdXN0IGJlIGEgc3Vic2V0IG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5IDptZXRoOmBnZXRtZW1iZXJzYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSAqbWVtYmVycyogcGFyYW1ldGVyLgogCiAKIC4uIG1ldGhvZDo6IFRhckZpbGUubmV4dCgpCkBAIC0zNDIsNyArMzY3LDcgQEAKICAgIGF2YWlsYWJsZS4KIAogCi0uLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RhbGwocGF0aD0iLiIsIG1lbWJlcnM9Tm9uZSkKKy4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGFsbChwYXRoPSIuIiwgbWVtYmVycz1Ob25lLCAqLCBudW1lcmljX293bmVyPUZhbHNlKQogCiAgICBFeHRyYWN0IGFsbCBtZW1iZXJzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb3IKICAgIGRpcmVjdG9yeSAqcGF0aCouIElmIG9wdGlvbmFsICptZW1iZXJzKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIHN1YnNldCBvZiB0aGUKQEAgLTM1Miw2ICszNzcsMTAgQEAKICAgIHJlc2V0IGVhY2ggdGltZSBhIGZpbGUgaXMgY3JlYXRlZCBpbiBpdC4gQW5kLCBpZiBhIGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGRvCiAgICBub3QgYWxsb3cgd3JpdGluZywgZXh0cmFjdGluZyBmaWxlcyB0byBpdCB3aWxsIGZhaWwuCiAKKyAgIElmICpudW1lcmljX293bmVyKiBpcyA6Y29uc3Q6YFRydWVgLCB0aGUgdWlkIGFuZCBnaWQgbnVtYmVycyBmcm9tIHRoZSB0YXJmaWxlCisgICBhcmUgdXNlZCB0byBzZXQgdGhlIG93bmVyL2dyb3VwIGZvciB0aGUgZXh0cmFjdGVkIGZpbGVzLiBPdGhlcndpc2UsIHRoZSBuYW1lZAorICAgdmFsdWVzIGZyb20gdGhlIHRhcmZpbGUgYXJlIHVzZWQuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBOZXZlciBleHRyYWN0IGFyY2hpdmVzIGZyb20gdW50cnVzdGVkIHNvdXJjZXMgd2l0aG91dCBwcmlvciBpbnNwZWN0aW9uLgpAQCAtMzU5LDggKzM4OCwxMSBAQAogICAgICAgdGhhdCBoYXZlIGFic29sdXRlIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGBgIi8iYGAgb3IgZmlsZW5hbWVzIHdpdGggdHdvCiAgICAgICBkb3RzIGBgIi4uImBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgdGhlICpudW1lcmljX29ubHkqIHBhcmFtZXRlci4KIAotLi4gbWV0aG9kOjogVGFyRmlsZS5leHRyYWN0KG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUpCisKKy4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdChtZW1iZXIsIHBhdGg9IiIsIHNldF9hdHRycz1UcnVlLCAqLCBudW1lcmljX293bmVyPUZhbHNlKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIHVzaW5nIGl0cwogICAgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseSBhcyBwb3NzaWJsZS4gKm1lbWJlcioKQEAgLTM2OCw2ICs0MDAsMTAgQEAKICAgIGRpcmVjdG9yeSB1c2luZyAqcGF0aCouIEZpbGUgYXR0cmlidXRlcyAob3duZXIsIG10aW1lLCBtb2RlKSBhcmUgc2V0IHVubGVzcwogICAgKnNldF9hdHRycyogaXMgZmFsc2UuCiAKKyAgIElmICpudW1lcmljX293bmVyKiBpcyA6Y29uc3Q6YFRydWVgLCB0aGUgdWlkIGFuZCBnaWQgbnVtYmVycyBmcm9tIHRoZSB0YXJmaWxlCisgICBhcmUgdXNlZCB0byBzZXQgdGhlIG93bmVyL2dyb3VwIGZvciB0aGUgZXh0cmFjdGVkIGZpbGVzLiBPdGhlcndpc2UsIHRoZSBuYW1lZAorICAgdmFsdWVzIGZyb20gdGhlIHRhcmZpbGUgYXJlIHVzZWQuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgOm1ldGg6YGV4dHJhY3RgIG1ldGhvZCBkb2VzIG5vdCB0YWtlIGNhcmUgb2Ygc2V2ZXJhbCBleHRyYWN0aW9uIGlzc3Vlcy4KQEAgLTM4MCw2ICs0MTYsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqc2V0X2F0dHJzKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBBZGRlZCB0aGUgKm51bWVyaWNfb25seSogcGFyYW1ldGVyLgorCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmV4dHJhY3RmaWxlKG1lbWJlcikKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuICptZW1iZXIqIG1heSBiZSBhIGZpbGVuYW1lCkBAIC04MDIsNCArODQxLDMgQEAKIGJlY2F1c2UgYWxsIHRoZSBtZXRhZGF0YSBpcyBzdG9yZWQgdXNpbmcgKlVURi04Ki4gKmVuY29kaW5nKiBpcyBvbmx5IHVzZWQgaW4KIHRoZSByYXJlIGNhc2VzIHdoZW4gYmluYXJ5IHBheCBoZWFkZXJzIGFyZSBkZWNvZGVkIG9yIHdoZW4gc3RyaW5ncyB3aXRoCiBzdXJyb2dhdGUgY2hhcmFjdGVycyBhcmUgc3RvcmVkLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggNDRkMDI1ZC4uODNmOTk0MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMTYsMTYgKzE2LDE4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGdlbmVyYXRlcyB0ZW1wb3JhcnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLiAgSXQgd29ya3Mgb24gYWxsCi1zdXBwb3J0ZWQgcGxhdGZvcm1zLiAgSXQgcHJvdmlkZXMgdGhyZWUgbmV3IGZ1bmN0aW9ucywKLTpmdW5jOmBOYW1lZFRlbXBvcmFyeUZpbGVgLCA6ZnVuYzpgbWtzdGVtcGAsIGFuZCA6ZnVuYzpgbWtkdGVtcGAsIHdoaWNoIHNob3VsZAotZWxpbWluYXRlIGFsbCByZW1haW5pbmcgbmVlZCB0byB1c2UgdGhlIGluc2VjdXJlIDpmdW5jOmBta3RlbXBgIGZ1bmN0aW9uLgotVGVtcG9yYXJ5IGZpbGUgbmFtZXMgY3JlYXRlZCBieSB0aGlzIG1vZHVsZSBubyBsb25nZXIgY29udGFpbiB0aGUgcHJvY2VzcyBJRDsKLWluc3RlYWQgYSBzdHJpbmcgb2Ygc2l4IHJhbmRvbSBjaGFyYWN0ZXJzIGlzIHVzZWQuCitUaGlzIG1vZHVsZSBjcmVhdGVzIHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICBJdCB3b3JrcyBvbiBhbGwKK3N1cHBvcnRlZCBwbGF0Zm9ybXMuIDpjbGFzczpgVGVtcG9yYXJ5RmlsZWAsIDpjbGFzczpgTmFtZWRUZW1wb3JhcnlGaWxlYCwKKzpjbGFzczpgVGVtcG9yYXJ5RGlyZWN0b3J5YCwgYW5kIDpjbGFzczpgU3Bvb2xlZFRlbXBvcmFyeUZpbGVgIGFyZSBoaWdoLWxldmVsCitpbnRlcmZhY2VzIHdoaWNoIHByb3ZpZGUgYXV0b21hdGljIGNsZWFudXAgYW5kIGNhbiBiZSB1c2VkIGFzCitjb250ZXh0IG1hbmFnZXJzLiA6ZnVuYzpgbWtzdGVtcGAgYW5kCis6ZnVuYzpgbWtkdGVtcGAgYXJlIGxvd2VyLWxldmVsIGZ1bmN0aW9ucyB3aGljaCByZXF1aXJlIG1hbnVhbCBjbGVhbnVwLgogCi1BbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCi1hbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCitBbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIGFuZCBjb25zdHJ1Y3RvcnMgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB3aGljaAorYWxsb3cgZGlyZWN0IGNvbnRyb2wgb3ZlciB0aGUgbG9jYXRpb24gYW5kIG5hbWUgb2YgdGVtcG9yYXJ5IGZpbGVzIGFuZAorZGlyZWN0b3JpZXMuIEZpbGVzIG5hbWVzIHVzZWQgYnkgdGhpcyBtb2R1bGUgaW5jbHVkZSBhIHN0cmluZyBvZgorcmFuZG9tIGNoYXJhY3RlcnMgd2hpY2ggYWxsb3dzIHRob3NlIGZpbGVzIHRvIGJlIHNlY3VyZWx5IGNyZWF0ZWQgaW4KK3NoYXJlZCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCkBAIC0zNCwyNSArMzYsMzcgQEAKIC4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLCBzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCiAKICAgIFJldHVybiBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgYXJlYS4KLSAgIFRoZSBmaWxlIGlzIGNyZWF0ZWQgdXNpbmcgOmZ1bmM6YG1rc3RlbXBgLiBJdCB3aWxsIGJlIGRlc3Ryb3llZCBhcyBzb29uCisgICBUaGUgZmlsZSBpcyBjcmVhdGVkIHNlY3VyZWx5LCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyA6ZnVuYzpgbWtzdGVtcGAuIEl0IHdpbGwgYmUgZGVzdHJveWVkIGFzIHNvb24KICAgIGFzIGl0IGlzIGNsb3NlZCAoaW5jbHVkaW5nIGFuIGltcGxpY2l0IGNsb3NlIHdoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlCi0gICBjb2xsZWN0ZWQpLiAgVW5kZXIgVW5peCwgdGhlIGRpcmVjdG9yeSBlbnRyeSBmb3IgdGhlIGZpbGUgaXMgcmVtb3ZlZAorICAgY29sbGVjdGVkKS4gIFVuZGVyIFVuaXgsIHRoZSBkaXJlY3RvcnkgZW50cnkgZm9yIHRoZSBmaWxlIGlzIGVpdGhlciBub3QgY3JlYXRlZCBhdCBhbGwgb3IgaXMgcmVtb3ZlZAogICAgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpbGUgaXMgY3JlYXRlZC4gIE90aGVyIHBsYXRmb3JtcyBkbyBub3Qgc3VwcG9ydAogICAgdGhpczsgeW91ciBjb2RlIHNob3VsZCBub3QgcmVseSBvbiBhIHRlbXBvcmFyeSBmaWxlIGNyZWF0ZWQgdXNpbmcgdGhpcwogICAgZnVuY3Rpb24gaGF2aW5nIG9yIG5vdCBoYXZpbmcgYSB2aXNpYmxlIG5hbWUgaW4gdGhlIGZpbGUgc3lzdGVtLgogCisgICBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoc2VlCisgICA6cmVmOmB0ZW1wZmlsZS1leGFtcGxlc2ApLiAgT24gY29tcGxldGlvbiBvZiB0aGUgY29udGV4dCBvcgorICAgZGVzdHJ1Y3Rpb24gb2YgdGhlIGZpbGUgb2JqZWN0IHRoZSB0ZW1wb3JhcnkgZmlsZSB3aWxsIGJlIHJlbW92ZWQKKyAgIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIFRoZSAqbW9kZSogcGFyYW1ldGVyIGRlZmF1bHRzIHRvIGBgJ3crYidgYCBzbyB0aGF0IHRoZSBmaWxlIGNyZWF0ZWQgY2FuCiAgICBiZSByZWFkIGFuZCB3cml0dGVuIHdpdGhvdXQgYmVpbmcgY2xvc2VkLiAgQmluYXJ5IG1vZGUgaXMgdXNlZCBzbyB0aGF0IGl0CiAgICBiZWhhdmVzIGNvbnNpc3RlbnRseSBvbiBhbGwgcGxhdGZvcm1zIHdpdGhvdXQgcmVnYXJkIGZvciB0aGUgZGF0YSB0aGF0IGlzCiAgICBzdG9yZWQuICAqYnVmZmVyaW5nKiwgKmVuY29kaW5nKiBhbmQgKm5ld2xpbmUqIGFyZSBpbnRlcnByZXRlZCBhcyBmb3IKICAgIDpmdW5jOmBvcGVuYC4KIAotICAgVGhlICpkaXIqLCAqcHJlZml4KiBhbmQgKnN1ZmZpeCogcGFyYW1ldGVycyBhcmUgcGFzc2VkIHRvIDpmdW5jOmBta3N0ZW1wYC4KKyAgIFRoZSAqZGlyKiwgKnByZWZpeCogYW5kICpzdWZmaXgqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nCisgICBhcyB3aXRoIDpmdW5jOmBta3N0ZW1wYC4KIAogICAgVGhlIHJldHVybmVkIG9iamVjdCBpcyBhIHRydWUgZmlsZSBvYmplY3Qgb24gUE9TSVggcGxhdGZvcm1zLiAgT24gb3RoZXIKICAgIHBsYXRmb3JtcywgaXQgaXMgYSBmaWxlLWxpa2Ugb2JqZWN0IHdob3NlIDphdHRyOmAhZmlsZWAgYXR0cmlidXRlIGlzIHRoZQotICAgdW5kZXJseWluZyB0cnVlIGZpbGUgb2JqZWN0LiBUaGlzIGZpbGUtbGlrZSBvYmplY3QgY2FuIGJlIHVzZWQgaW4gYQotICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCwganVzdCBsaWtlIGEgbm9ybWFsIGZpbGUuCisgICB1bmRlcmx5aW5nIHRydWUgZmlsZSBvYmplY3QuCisKKyAgIFRoZSA6cHk6ZGF0YTpgb3MuT19UTVBGSUxFYCBmbGFnIGlzIHVzZWQgaWYgaXQgaXMgYXZhaWxhYmxlIGFuZCB3b3JrcworICAgKExpbnV4LXNwZWNpZmljLCByZXF1aXJlcyBMaW51eCBrZXJuZWwgMy4xMSBvciBsYXRlcikuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgIFRoZSA6cHk6ZGF0YTpgb3MuT19UTVBGSUxFYCBmbGFnIGlzIG5vdyB1c2VkIGlmIGF2YWlsYWJsZS4KIAogCiAuLiBmdW5jdGlvbjo6IE5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwgbmV3bGluZT1Ob25lLCBzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUsIGRlbGV0ZT1UcnVlKQpAQCAtOTQsMTAgKzEwOCw5IEBACiAKIC4uIGZ1bmN0aW9uOjogVGVtcG9yYXJ5RGlyZWN0b3J5KHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKIAotICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1c2luZyA6ZnVuYzpgbWtkdGVtcGAKLSAgICh0aGUgc3VwcGxpZWQgYXJndW1lbnRzIGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24pLgorICAgVGhpcyBmdW5jdGlvbiBzZWN1cmVseSBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyA6ZnVuYzpgbWtkdGVtcGAuCiAgICBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoc2VlCi0gICA6cmVmOmBjb250ZXh0LW1hbmFnZXJzYCkuICBPbiBjb21wbGV0aW9uIG9mIHRoZSBjb250ZXh0IG9yIGRlc3RydWN0aW9uCisgICA6cmVmOmB0ZW1wZmlsZS1leGFtcGxlc2ApLiAgT24gY29tcGxldGlvbiBvZiB0aGUgY29udGV4dCBvciBkZXN0cnVjdGlvbgogICAgb2YgdGhlIHRlbXBvcmFyeSBkaXJlY3Rvcnkgb2JqZWN0IHRoZSBuZXdseSBjcmVhdGVkIHRlbXBvcmFyeSBkaXJlY3RvcnkKICAgIGFuZCBhbGwgaXRzIGNvbnRlbnRzIGFyZSByZW1vdmVkIGZyb20gdGhlIGZpbGVzeXN0ZW0uCiAKQEAgLTExMiw3ICsxMjUsNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotLi4gZnVuY3Rpb246OiBta3N0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSwgdGV4dD1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbWtzdGVtcChzdWZmaXg9Tm9uZSwgcHJlZml4PU5vbmUsIGRpcj1Ob25lLCB0ZXh0PUZhbHNlKQogCiAgICBDcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIG1vc3Qgc2VjdXJlIG1hbm5lciBwb3NzaWJsZS4gIFRoZXJlIGFyZQogICAgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBmaWxlJ3MgY3JlYXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHBsYXRmb3JtCkBAIC0xNDEsNiArMTU0LDE2IEBACiAgICBmaWxlbmFtZSB3aWxsIGhhdmUgYW55IG5pY2UgcHJvcGVydGllcywgc3VjaCBhcyBub3QgcmVxdWlyaW5nIHF1b3RpbmcKICAgIHdoZW4gcGFzc2VkIHRvIGV4dGVybmFsIGNvbW1hbmRzIHZpYSBgYG9zLnBvcGVuKClgYC4KIAorICAgKnN1ZmZpeCosICpwcmVmaXgqLCBhbmQgKmRpciogbXVzdCBhbGwgY29udGFpbiB0aGUgc2FtZSB0eXBlLCBpZiBzcGVjaWZpZWQuCisgICBJZiB0aGV5IGFyZSBieXRlcywgdGhlIHJldHVybmVkIG5hbWUgd2lsbCBiZSBieXRlcyBpbnN0ZWFkIG9mIHN0ci4KKyAgIElmIHlvdSB3YW50IHRvIGZvcmNlIGEgYnl0ZXMgcmV0dXJuIHZhbHVlIHdpdGggb3RoZXJ3aXNlIGRlZmF1bHQgYmVoYXZpb3IsCisgICBwYXNzIGBgc3VmZml4PWInJ2BgLgorCisgICBBICpwcmVmaXgqIHZhbHVlIG9mIGBgTm9uZWBgIG1lYW5zIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICA6ZnVuYzpgZ2V0dGVtcHByZWZpeGAgb3IgOmZ1bmM6YGdldHRlbXBwcmVmaXhiYCBhcyBhcHByb3ByaWF0ZS4KKworICAgQSAqc3VmZml4KiB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB1c2UgYW4gYXBwcm9wcmlhdGUgZW1wdHkgdmFsdWUuCisKICAgIElmICp0ZXh0KiBpcyBzcGVjaWZpZWQsIGl0IGluZGljYXRlcyB3aGV0aGVyIHRvIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5CiAgICBtb2RlICh0aGUgZGVmYXVsdCkgb3IgdGV4dCBtb2RlLiAgT24gc29tZSBwbGF0Zm9ybXMsIHRoaXMgbWFrZXMgbm8KICAgIGRpZmZlcmVuY2UuCkBAIC0xNDksOCArMTcyLDE0IEBACiAgICBmaWxlIChhcyB3b3VsZCBiZSByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmApIGFuZCB0aGUgYWJzb2x1dGUgcGF0aG5hbWUKICAgIG9mIHRoYXQgZmlsZSwgaW4gdGhhdCBvcmRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpzdWZmaXgqLCAqcHJlZml4KiwgYW5kICpkaXIqIG1heSBub3cgYmUgc3VwcGxpZWQgaW4gYnl0ZXMgaW4gb3JkZXIgdG8KKyAgICAgIG9idGFpbiBhIGJ5dGVzIHJldHVybiB2YWx1ZS4gIFByaW9yIHRvIHRoaXMsIG9ubHkgc3RyIHdhcyBhbGxvd2VkLgorICAgICAgKnN1ZmZpeCogYW5kICpwcmVmaXgqIG5vdyBhY2NlcHQgYW5kIGRlZmF1bHQgdG8gYGBOb25lYGAgdG8gY2F1c2UKKyAgICAgIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZC4KIAotLi4gZnVuY3Rpb246OiBta2R0ZW1wKHN1ZmZpeD0nJywgcHJlZml4PSd0bXAnLCBkaXI9Tm9uZSkKKworLi4gZnVuY3Rpb246OiBta2R0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpCiAKICAgIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIHRoZSBtb3N0IHNlY3VyZSBtYW5uZXIgcG9zc2libGUuIFRoZXJlCiAgICBhcmUgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBkaXJlY3RvcnkncyBjcmVhdGlvbi4gIFRoZSBkaXJlY3RvcnkgaXMKQEAgLTE2NCw1MCArMTkzLDIxIEBACiAKICAgIDpmdW5jOmBta2R0ZW1wYCByZXR1cm5zIHRoZSBhYnNvbHV0ZSBwYXRobmFtZSBvZiB0aGUgbmV3IGRpcmVjdG9yeS4KIAotCi0uLiBmdW5jdGlvbjo6IG1rdGVtcChzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAyLjMKLSAgICAgIFVzZSA6ZnVuYzpgbWtzdGVtcGAgaW5zdGVhZC4KLQotICAgUmV0dXJuIGFuIGFic29sdXRlIHBhdGhuYW1lIG9mIGEgZmlsZSB0aGF0IGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgdGhlCi0gICBjYWxsIGlzIG1hZGUuICBUaGUgKnByZWZpeCosICpzdWZmaXgqLCBhbmQgKmRpciogYXJndW1lbnRzIGFyZSB0aGUgc2FtZQotICAgYXMgZm9yIDpmdW5jOmBta3N0ZW1wYC4KLQotICAgLi4gd2FybmluZzo6Ci0KLSAgICAgIFVzZSBvZiB0aGlzIGZ1bmN0aW9uIG1heSBpbnRyb2R1Y2UgYSBzZWN1cml0eSBob2xlIGluIHlvdXIgcHJvZ3JhbS4gIEJ5Ci0gICAgICB0aGUgdGltZSB5b3UgZ2V0IGFyb3VuZCB0byBkb2luZyBhbnl0aGluZyB3aXRoIHRoZSBmaWxlIG5hbWUgaXQgcmV0dXJucywKLSAgICAgIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBiZWF0ZW4geW91IHRvIHRoZSBwdW5jaC4gIDpmdW5jOmBta3RlbXBgIHVzYWdlIGNhbgotICAgICAgYmUgcmVwbGFjZWQgZWFzaWx5IHdpdGggOmZ1bmM6YE5hbWVkVGVtcG9yYXJ5RmlsZWAsIHBhc3NpbmcgaXQgdGhlCi0gICAgICBgYGRlbGV0ZT1GYWxzZWBgIHBhcmFtZXRlcjo6Ci0KLSAgICAgICAgID4+PiBmID0gTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKLSAgICAgICAgID4+PiBmLm5hbWUKLSAgICAgICAgICcvdG1wL3RtcHRqdWpqdCcKLSAgICAgICAgID4+PiBmLndyaXRlKGIiSGVsbG8gV29ybGQhXG4iKQotICAgICAgICAgMTMKLSAgICAgICAgID4+PiBmLmNsb3NlKCkKLSAgICAgICAgID4+PiBvcy51bmxpbmsoZi5uYW1lKQotICAgICAgICAgPj4+IG9zLnBhdGguZXhpc3RzKGYubmFtZSkKLSAgICAgICAgIEZhbHNlCi0KLVRoZSBtb2R1bGUgdXNlcyBhIGdsb2JhbCB2YXJpYWJsZSB0aGF0IHRlbGwgaXQgaG93IHRvIGNvbnN0cnVjdCBhCi10ZW1wb3JhcnkgbmFtZS4gIFRoZXkgYXJlIGluaXRpYWxpemVkIGF0IHRoZSBmaXJzdCBjYWxsIHRvIGFueSBvZiB0aGUKLWZ1bmN0aW9ucyBhYm92ZS4gIFRoZSBjYWxsZXIgbWF5IGNoYW5nZSB0aGVtLCBidXQgdGhpcyBpcyBkaXNjb3VyYWdlZDsgdXNlCi10aGUgYXBwcm9wcmlhdGUgZnVuY3Rpb24gYXJndW1lbnRzLCBpbnN0ZWFkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgICpzdWZmaXgqLCAqcHJlZml4KiwgYW5kICpkaXIqIG1heSBub3cgYmUgc3VwcGxpZWQgaW4gYnl0ZXMgaW4gb3JkZXIgdG8KKyAgICAgIG9idGFpbiBhIGJ5dGVzIHJldHVybiB2YWx1ZS4gIFByaW9yIHRvIHRoaXMsIG9ubHkgc3RyIHdhcyBhbGxvd2VkLgorICAgICAgKnN1ZmZpeCogYW5kICpwcmVmaXgqIG5vdyBhY2NlcHQgYW5kIGRlZmF1bHQgdG8gYGBOb25lYGAgdG8gY2F1c2UKKyAgICAgIGFuIGFwcHJvcHJpYXRlIGRlZmF1bHQgdmFsdWUgdG8gYmUgdXNlZC4KIAogCi0uLiBkYXRhOjogdGVtcGRpcgorLi4gZnVuY3Rpb246OiBnZXR0ZW1wZGlyKCkKIAotICAgV2hlbiBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgLCB0aGlzIHZhcmlhYmxlIGRlZmluZXMgdGhlCi0gICBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKmRpciogYXJndW1lbnQgdG8gYWxsIHRoZSBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGlzCi0gICBtb2R1bGUuCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB1c2VkIGZvciB0ZW1wb3JhcnkgZmlsZXMuIFRoaXMKKyAgIGRlZmluZXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqZGlyKiBhcmd1bWVudCB0byBhbGwgZnVuY3Rpb25zCisgICBpbiB0aGlzIG1vZHVsZS4KIAotICAgSWYgYGB0ZW1wZGlyYGAgaXMgdW5zZXQgb3IgYGBOb25lYGAgYXQgYW55IGNhbGwgdG8gYW55IG9mIHRoZSBhYm92ZQotICAgZnVuY3Rpb25zLCBQeXRob24gc2VhcmNoZXMgYSBzdGFuZGFyZCBsaXN0IG9mIGRpcmVjdG9yaWVzIGFuZCBzZXRzCi0gICAqdGVtcGRpciogdG8gdGhlIGZpcnN0IG9uZSB3aGljaCB0aGUgY2FsbGluZyB1c2VyIGNhbiBjcmVhdGUgZmlsZXMgaW4uCi0gICBUaGUgbGlzdCBpczoKKyAgIFB5dGhvbiBzZWFyY2hlcyBhIHN0YW5kYXJkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gZmluZCBvbmUgd2hpY2gKKyAgIHRoZSBjYWxsaW5nIHVzZXIgY2FuIGNyZWF0ZSBmaWxlcyBpbi4gIFRoZSBsaXN0IGlzOgogCiAgICAjLiBUaGUgZGlyZWN0b3J5IG5hbWVkIGJ5IHRoZSA6ZW52dmFyOmBUTVBESVJgIGVudmlyb25tZW50IHZhcmlhYmxlLgogCkBAIC0yMjUsMTkgKzIyNSw0MyBAQAogCiAgICAjLiBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KIAorICAgVGhlIHJlc3VsdCBvZiB0aGlzIHNlYXJjaCBpcyBjYWNoZWQsIHNlZSB0aGUgZGVzY3JpcHRpb24gb2YKKyAgIDpkYXRhOmB0ZW1wZGlyYCBiZWxvdy4KIAotLi4gZnVuY3Rpb246OiBnZXR0ZW1wZGlyKCkKKy4uIGZ1bmN0aW9uOjogZ2V0dGVtcGRpcmIoKQogCi0gICBSZXR1cm4gdGhlIGRpcmVjdG9yeSBjdXJyZW50bHkgc2VsZWN0ZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlcyBpbi4gSWYKLSAgIDpkYXRhOmB0ZW1wZGlyYCBpcyBub3QgYGBOb25lYGAsIHRoaXMgc2ltcGx5IHJldHVybnMgaXRzIGNvbnRlbnRzOyBvdGhlcndpc2UsCi0gICB0aGUgc2VhcmNoIGRlc2NyaWJlZCBhYm92ZSBpcyBwZXJmb3JtZWQsIGFuZCB0aGUgcmVzdWx0IHJldHVybmVkLgorICAgU2FtZSBhcyA6ZnVuYzpgZ2V0dGVtcGRpcmAgYnV0IHRoZSByZXR1cm4gdmFsdWUgaXMgaW4gYnl0ZXMuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBmdW5jdGlvbjo6IGdldHRlbXBwcmVmaXgoKQogCiAgICBSZXR1cm4gdGhlIGZpbGVuYW1lIHByZWZpeCB1c2VkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZXMuICBUaGlzIGRvZXMgbm90CiAgICBjb250YWluIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50LgogCisuLiBmdW5jdGlvbjo6IGdldHRlbXBwcmVmaXhiKCkKKworICAgU2FtZSBhcyA6ZnVuYzpgZ2V0dGVtcHByZWZpeGJgIGJ1dCB0aGUgcmV0dXJuIHZhbHVlIGlzIGluIGJ5dGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworVGhlIG1vZHVsZSB1c2VzIGEgZ2xvYmFsIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkKK3VzZWQgZm9yIHRlbXBvcmFyeSBmaWxlcyByZXR1cm5lZCBieSA6ZnVuYzpgZ2V0dGVtcGRpcmAuICBJdCBjYW4gYmUKK3NldCBkaXJlY3RseSB0byBvdmVycmlkZSB0aGUgc2VsZWN0aW9uIHByb2Nlc3MsIGJ1dCB0aGlzIGlzIGRpc2NvdXJhZ2VkLgorQWxsIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB0YWtlIGEgKmRpciogYXJndW1lbnQgd2hpY2ggY2FuIGJlIHVzZWQKK3RvIHNwZWNpZnkgdGhlIGRpcmVjdG9yeSBhbmQgdGhpcyBpcyB0aGUgcmVjb21tZW5kIGFwcHJvYWNoLgorCisuLiBkYXRhOjogdGVtcGRpcgorCisgICBXaGVuIHNldCB0byBhIHZhbHVlIG90aGVyIHRoYW4gYGBOb25lYGAsIHRoaXMgdmFyaWFibGUgZGVmaW5lcyB0aGUKKyAgIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqZGlyKiBhcmd1bWVudCB0byBhbGwgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoaXMKKyAgIG1vZHVsZS4KKworICAgSWYgYGB0ZW1wZGlyYGAgaXMgdW5zZXQgb3IgYGBOb25lYGAgYXQgYW55IGNhbGwgdG8gYW55IG9mIHRoZSBhYm92ZQorICAgZnVuY3Rpb25zIGV4Y2VwdCA6ZnVuYzpgZ2V0dGVtcHByZWZpeGAgaXQgaXMgaW5pdGFsaXplZCBmb2xsb3dpbmcgdGhlCisgICBhbGdvcml0aG0gZGVzY3JpYmVkIGluIDpmdW5jOmBnZXR0ZW1wZGlyYC4KKworLi4gX3RlbXBmaWxlLWV4YW1wbGVzOgogCiBFeGFtcGxlcwogLS0tLS0tLS0KQEAgLTI3MSwzICsyOTUsNDIgQEAKICAgICA+Pj4KICAgICAjIGRpcmVjdG9yeSBhbmQgY29udGVudHMgaGF2ZSBiZWVuIHJlbW92ZWQKIAorCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgaGlzdG9yaWNhbCB3YXkgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlcyB3YXMgdG8gZmlyc3QgZ2VuZXJhdGUgYQorZmlsZSBuYW1lIHdpdGggdGhlIDpmdW5jOmBta3RlbXBgIGZ1bmN0aW9uIGFuZCB0aGVuIGNyZWF0ZSBhIGZpbGUKK3VzaW5nIHRoaXMgbmFtZS4gVW5mb3J0dW5hdGVseSB0aGlzIGlzIG5vdCBzZWN1cmUsIGJlY2F1c2UgYSBkaWZmZXJlbnQKK3Byb2Nlc3MgbWF5IGNyZWF0ZSBhIGZpbGUgd2l0aCB0aGlzIG5hbWUgaW4gdGhlIHRpbWUgYmV0d2VlbiB0aGUgY2FsbAordG8gOmZ1bmM6YG1rdGVtcGAgYW5kIHRoZSBzdWJzZXF1ZW50IGF0dGVtcHQgdG8gY3JlYXRlIHRoZSBmaWxlIGJ5IHRoZQorZmlyc3QgcHJvY2Vzcy4gVGhlIHNvbHV0aW9uIGlzIHRvIGNvbWJpbmUgdGhlIHR3byBzdGVwcyBhbmQgY3JlYXRlIHRoZQorZmlsZSBpbW1lZGlhdGVseS4gVGhpcyBhcHByb2FjaCBpcyB1c2VkIGJ5IDpmdW5jOmBta3N0ZW1wYCBhbmQgdGhlCitvdGhlciBmdW5jdGlvbnMgZGVzY3JpYmVkIGFib3ZlLgorCisuLiBmdW5jdGlvbjo6IG1rdGVtcChzdWZmaXg9JycsIHByZWZpeD0ndG1wJywgZGlyPU5vbmUpCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAyLjMKKyAgICAgIFVzZSA6ZnVuYzpgbWtzdGVtcGAgaW5zdGVhZC4KKworICAgUmV0dXJuIGFuIGFic29sdXRlIHBhdGhuYW1lIG9mIGEgZmlsZSB0aGF0IGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgdGhlCisgICBjYWxsIGlzIG1hZGUuICBUaGUgKnByZWZpeCosICpzdWZmaXgqLCBhbmQgKmRpciogYXJndW1lbnRzIGFyZSB0aGUgc2FtZQorICAgYXMgZm9yIDpmdW5jOmBta3N0ZW1wYC4KKworICAgLi4gd2FybmluZzo6CisKKyAgICAgIFVzZSBvZiB0aGlzIGZ1bmN0aW9uIG1heSBpbnRyb2R1Y2UgYSBzZWN1cml0eSBob2xlIGluIHlvdXIgcHJvZ3JhbS4gIEJ5CisgICAgICB0aGUgdGltZSB5b3UgZ2V0IGFyb3VuZCB0byBkb2luZyBhbnl0aGluZyB3aXRoIHRoZSBmaWxlIG5hbWUgaXQgcmV0dXJucywKKyAgICAgIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBiZWF0ZW4geW91IHRvIHRoZSBwdW5jaC4gIDpmdW5jOmBta3RlbXBgIHVzYWdlIGNhbgorICAgICAgYmUgcmVwbGFjZWQgZWFzaWx5IHdpdGggOmZ1bmM6YE5hbWVkVGVtcG9yYXJ5RmlsZWAsIHBhc3NpbmcgaXQgdGhlCisgICAgICBgYGRlbGV0ZT1GYWxzZWBgIHBhcmFtZXRlcjo6CisKKyAgICAgICAgID4+PiBmID0gTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgID4+PiBmLm5hbWUKKyAgICAgICAgICcvdG1wL3RtcHRqdWpqdCcKKyAgICAgICAgID4+PiBmLndyaXRlKGIiSGVsbG8gV29ybGQhXG4iKQorICAgICAgICAgMTMKKyAgICAgICAgID4+PiBmLmNsb3NlKCkKKyAgICAgICAgID4+PiBvcy51bmxpbmsoZi5uYW1lKQorICAgICAgICAgPj4+IG9zLnBhdGguZXhpc3RzKGYubmFtZSkKKyAgICAgICAgIEZhbHNlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDk3NDkwOWUuLmY3YWQ0NzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC01NjgsNiArNTY4LDE3IEBACiAgICAgICBkZWYgbG9hZF90ZXN0cygqYXJncyk6CiAgICAgICAgICAgcmV0dXJuIGxvYWRfcGFja2FnZV90ZXN0cyhvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAqYXJncykKIAorLi4gZnVuY3Rpb246OiBkZXRlY3RfYXBpX21pc21hdGNoKHJlZl9hcGksIG90aGVyX2FwaSwgKiwgaWdub3JlPSgpKToKKworICAgUmV0dXJucyB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMsIGZ1bmN0aW9ucyBvciBtZXRob2RzIG9mICpyZWZfYXBpKiBub3QKKyAgIGZvdW5kIG9uICpvdGhlcl9hcGkqLCBleGNlcHQgZm9yIGEgZGVmaW5lZCBsaXN0IG9mIGl0ZW1zIHRvIGJlCisgICBpZ25vcmVkIGluIHRoaXMgY2hlY2sgc3BlY2lmaWVkIGluICppZ25vcmUqLgorCisgICBCeSBkZWZhdWx0IHRoaXMgc2tpcHMgcHJpdmF0ZSBhdHRyaWJ1dGVzIGJlZ2lubmluZyB3aXRoICdfJyBidXQKKyAgIGluY2x1ZGVzIGFsbCBtYWdpYyBtZXRob2RzLCBpLmUuIHRob3NlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgaW4gJ19fJy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKIAogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1lLnJzdCBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CmluZGV4IDhkOGI3ZDQuLjNkMzM1YzggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CkBAIC0zMTQsOSArMzE0LDkgQEAKICAgIHByb2Nlc3NlcyBydW5uaW5nIGZvciBtb3JlIHRoYW4gNDkgZGF5cy4gT24gbW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgV2luZG93cwogICAgYW5kIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLCA6ZnVuYzpgbW9ub3RvbmljYCBpcyBzeXN0ZW0td2lkZS4KIAotICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBNYWMgT1MgWCwgTGludXgsIEZyZWVCU0QsIE9wZW5CU0QsIFNvbGFyaXMuCi0KICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZS4KIAogCiAuLiBmdW5jdGlvbjo6IHBlcmZfY291bnRlcigpCkBAIC0zNTAsNiArMzUwLDExIEBACiAgICByZXF1ZXN0ZWQgYnkgYW4gYXJiaXRyYXJ5IGFtb3VudCBiZWNhdXNlIG9mIHRoZSBzY2hlZHVsaW5nIG9mIG90aGVyIGFjdGl2aXR5CiAgICBpbiB0aGUgc3lzdGVtLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIGZ1bmN0aW9uIG5vdyBzbGVlcHMgYXQgbGVhc3QgKnNlY3MqIGV2ZW4gaWYgdGhlIHNsZWVwIGlzIGludGVycnVwdGVkCisgICAgICBieSBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uIChzZWUKKyAgICAgIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RyZnRpbWUoZm9ybWF0WywgdF0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CmluZGV4IDcwZGY0MDkuLmQxMDUxZjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdApAQCAtNTksMTggKzU5LDI2IEBACiBUaGUgbW9kdWxlIGRlZmluZXMgdGhyZWUgY29udmVuaWVuY2UgZnVuY3Rpb25zIGFuZCBhIHB1YmxpYyBjbGFzczoKIAogCi0uLiBmdW5jdGlvbjo6IHRpbWVpdChzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08ZGVmYXVsdCB0aW1lcj4sIG51bWJlcj0xMDAwMDAwKQorLi4gZnVuY3Rpb246OiB0aW1laXQoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PGRlZmF1bHQgdGltZXI+LCBudW1iZXI9MTAwMDAwMCwgZ2xvYmFscz1Ob25lKQogCiAgICBDcmVhdGUgYSA6Y2xhc3M6YFRpbWVyYCBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBzdGF0ZW1lbnQsICpzZXR1cCogY29kZSBhbmQKICAgICp0aW1lciogZnVuY3Rpb24gYW5kIHJ1biBpdHMgOm1ldGg6YC50aW1laXRgIG1ldGhvZCB3aXRoICpudW1iZXIqIGV4ZWN1dGlvbnMuCisgICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFyZ3VtZW50IHNwZWNpZmllcyBhIG5hbWVzcGFjZSBpbiB3aGljaCB0byBleGVjdXRlIHRoZQorICAgY29kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlcGVhdChzdG10PSdwYXNzJywgc2V0dXA9J3Bhc3MnLCB0aW1lcj08ZGVmYXVsdCB0aW1lcj4sIHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCkKKy4uIGZ1bmN0aW9uOjogcmVwZWF0KHN0bXQ9J3Bhc3MnLCBzZXR1cD0ncGFzcycsIHRpbWVyPTxkZWZhdWx0IHRpbWVyPiwgcmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwLCBnbG9iYWxzPU5vbmUpCiAKICAgIENyZWF0ZSBhIDpjbGFzczpgVGltZXJgIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIHN0YXRlbWVudCwgKnNldHVwKiBjb2RlIGFuZAogICAgKnRpbWVyKiBmdW5jdGlvbiBhbmQgcnVuIGl0cyA6bWV0aDpgLnJlcGVhdGAgbWV0aG9kIHdpdGggdGhlIGdpdmVuICpyZXBlYXQqCi0gICBjb3VudCBhbmQgKm51bWJlciogZXhlY3V0aW9ucy4KKyAgIGNvdW50IGFuZCAqbnVtYmVyKiBleGVjdXRpb25zLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhcmd1bWVudCBzcGVjaWZpZXMgYQorICAgbmFtZXNwYWNlIGluIHdoaWNoIHRvIGV4ZWN1dGUgdGhlIGNvZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIC4uIGZ1bmN0aW9uOjogZGVmYXVsdF90aW1lcigpCiAKQEAgLTgwLDcgKzg4LDcgQEAKICAgICAgIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAgaXMgbm93IHRoZSBkZWZhdWx0IHRpbWVyLgogCiAKLS4uIGNsYXNzOjogVGltZXIoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PHRpbWVyIGZ1bmN0aW9uPikKKy4uIGNsYXNzOjogVGltZXIoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PHRpbWVyIGZ1bmN0aW9uPiwgZ2xvYmFscz1Ob25lKQogCiAgICBDbGFzcyBmb3IgdGltaW5nIGV4ZWN1dGlvbiBzcGVlZCBvZiBzbWFsbCBjb2RlIHNuaXBwZXRzLgogCkBAIC04OCw3ICs5Niw5IEBACiAgICBmb3Igc2V0dXAsIGFuZCBhIHRpbWVyIGZ1bmN0aW9uLiAgQm90aCBzdGF0ZW1lbnRzIGRlZmF1bHQgdG8gYGAncGFzcydgYDsKICAgIHRoZSB0aW1lciBmdW5jdGlvbiBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgKHNlZSB0aGUgbW9kdWxlIGRvYyBzdHJpbmcpLgogICAgKnN0bXQqIGFuZCAqc2V0dXAqIG1heSBhbHNvIGNvbnRhaW4gbXVsdGlwbGUgc3RhdGVtZW50cyBzZXBhcmF0ZWQgYnkgYGA7YGAKLSAgIG9yIG5ld2xpbmVzLCBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgY29udGFpbiBtdWx0aS1saW5lIHN0cmluZyBsaXRlcmFscy4KKyAgIG9yIG5ld2xpbmVzLCBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgY29udGFpbiBtdWx0aS1saW5lIHN0cmluZyBsaXRlcmFscy4gIFRoZQorICAgc3RhdGVtZW50IHdpbGwgYnkgZGVmYXVsdCBiZSBleGVjdXRlZCB3aXRoaW4gdGltZWl0J3MgbmFtZXNwYWNlOyB0aGlzIGJlaGF2aW9yCisgICBjYW4gYmUgY29udHJvbGxlZCBieSBwYXNzaW5nIGEgbmFtZXNwYWNlIHRvICpnbG9iYWxzKi4KIAogICAgVG8gbWVhc3VyZSB0aGUgZXhlY3V0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHN0YXRlbWVudCwgdXNlIHRoZSA6bWV0aDpgLnRpbWVpdGAKICAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgbWV0aG9kIGlzIGEgY29udmVuaWVuY2UgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAKQEAgLTEwMSw2ICsxMTEsOCBAQAogICAgd2lsbCB0aGVuIGJlIGV4ZWN1dGVkIGJ5IDptZXRoOmAudGltZWl0YC4gIE5vdGUgdGhhdCB0aGUgdGltaW5nIG92ZXJoZWFkIGlzIGEKICAgIGxpdHRsZSBsYXJnZXIgaW4gdGhpcyBjYXNlIGJlY2F1c2Ugb2YgdGhlIGV4dHJhIGZ1bmN0aW9uIGNhbGxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAgICAuLiBtZXRob2Q6OiBUaW1lci50aW1laXQobnVtYmVyPTEwMDAwMDApCiAKQEAgLTE2OSw3ICsxODEsNyBAQAogCiBXaGVuIGNhbGxlZCBhcyBhIHByb2dyYW0gZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB0aGUgZm9sbG93aW5nIGZvcm0gaXMgdXNlZDo6CiAKLSAgIHB5dGhvbiAtbSB0aW1laXQgWy1uIE5dIFstciBOXSBbLXMgU10gWy10XSBbLWNdIFstaF0gW3N0YXRlbWVudCAuLi5dCisgICBweXRob24gLW0gdGltZWl0IFstbiBOXSBbLXIgTl0gWy11IFVdIFstcyBTXSBbLXRdIFstY10gWy1oXSBbc3RhdGVtZW50IC4uLl0KIAogV2hlcmUgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSB1bmRlcnN0b29kOgogCkBAIC0xOTgsNiArMjEwLDEyIEBACiAKICAgIHVzZSA6ZnVuYzpgdGltZS50aW1lYCAoZGVwcmVjYXRlZCkKIAorLi4gY21kb3B0aW9uOjogLXUsIC0tdW5pdD1VCisKKyAgICBzcGVjaWZ5IGEgdGltZSB1bml0IGZvciB0aW1lciBvdXRwdXQ7IGNhbiBzZWxlY3QgdXNlYywgbXNlYywgb3Igc2VjCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBjbWRvcHRpb246OiAtYywgLS1jbG9jawogCiAgICB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIChkZXByZWNhdGVkKQpAQCAtMzIwLDMgKzMzOCwxNyBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICBpbXBvcnQgdGltZWl0CiAgICAgICAgcHJpbnQodGltZWl0LnRpbWVpdCgidGVzdCgpIiwgc2V0dXA9ImZyb20gX19tYWluX18gaW1wb3J0IHRlc3QiKSkKKworQW5vdGhlciBvcHRpb24gaXMgdG8gcGFzcyA6ZnVuYzpgZ2xvYmFsc2AgdG8gdGhlICAqZ2xvYmFscyogcGFyYW1ldGVyLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBjb2RlCit0byBiZSBleGVjdXRlZCB3aXRoaW4geW91ciBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2UuICBUaGlzIGNhbiBiZSBtb3JlIGNvbnZlbmllbnQKK3RoYW4gaW5kaXZpZHVhbGx5IHNwZWNpZnlpbmcgaW1wb3J0czo6CisKKyAgIGRlZiBmKHgpOgorICAgICAgIHJldHVybiB4KioyCisgICBkZWYgZyh4KToKKyAgICAgICByZXR1cm4geCoqNAorICAgZGVmIGgoeCk6CisgICAgICAgcmV0dXJuIHgqKjgKKworICAgaW1wb3J0IHRpbWVpdAorICAgcHJpbnQodGltZWl0LnRpbWVpdCgnW2Z1bmMoNDIpIGZvciBmdW5jIGluIChmLGcsaCldJywgZ2xvYmFscz1nbG9iYWxzKCkpKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdG9rZW4ucnN0IGIvRG9jL2xpYnJhcnkvdG9rZW4ucnN0CmluZGV4IDRjZDcwOTguLjg4ZmIzOGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rva2VuLnJzdAorKysgYi9Eb2MvbGlicmFyeS90b2tlbi5yc3QKQEAgLTkzLDYgKzkzLDcgQEAKICAgICAgICAgICBET1VCTEVTTEFTSAogICAgICAgICAgIERPVUJMRVNMQVNIRVFVQUwKICAgICAgICAgICBBVAorICAgICAgICAgIEFURVFVQUwKICAgICAgICAgICBSQVJST1cKICAgICAgICAgICBFTExJUFNJUwogICAgICAgICAgIE9QCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAppbmRleCAxNWZiZWRjLi44ZDIxNmQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKQEAgLTIyLDE1ICsyMiwyMCBAQAogCiAuLiBmdW5jdGlvbjo6IHByaW50X3RiKHRyYWNlYmFjaywgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKQogCi0gICBQcmludCB1cCB0byAqbGltaXQqIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbSAqdHJhY2ViYWNrKi4gIElmICpsaW1pdCogaXMgb21pdHRlZAotICAgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzIGFyZSBwcmludGVkLiBJZiAqZmlsZSogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlCi0gICBvdXRwdXQgZ29lcyB0byBgYHN5cy5zdGRlcnJgYDsgb3RoZXJ3aXNlIGl0IHNob3VsZCBiZSBhbiBvcGVuIGZpbGUgb3IgZmlsZS1saWtlCi0gICBvYmplY3QgdG8gcmVjZWl2ZSB0aGUgb3V0cHV0LgorICAgUHJpbnQgdXAgdG8gKmxpbWl0KiBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20gKnRyYWNlYmFjayogKHN0YXJ0aW5nIGZyb20KKyAgIHRoZSBjYWxsZXIncyBmcmFtZSkgaWYgKmxpbWl0KiBpcyBwb3NpdGl2ZS4gIE90aGVyd2lzZSwgcHJpbnQgdGhlIGxhc3QKKyAgIGBgYWJzKGxpbWl0KWBgIGVudHJpZXMuICBJZiAqbGltaXQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzCisgICBhcmUgcHJpbnRlZC4gIElmICpmaWxlKiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgb3V0cHV0IGdvZXMgdG8KKyAgIGBgc3lzLnN0ZGVycmBgOyBvdGhlcndpc2UgaXQgc2hvdWxkIGJlIGFuIG9wZW4gZmlsZSBvciBmaWxlLWxpa2Ugb2JqZWN0CisgICB0byByZWNlaXZlIHRoZSBvdXRwdXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgQWRkZWQgbmVnYXRpdmUgKmxpbWl0KiBzdXBwb3J0LgogCiAKIC4uIGZ1bmN0aW9uOjogcHJpbnRfZXhjZXB0aW9uKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2ssIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSkKIAotICAgUHJpbnQgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGFuZCB1cCB0byAqbGltaXQqIHN0YWNrIHRyYWNlIGVudHJpZXMgZnJvbQorICAgUHJpbnQgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGFuZCBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20KICAgICp0cmFjZWJhY2sqIHRvICpmaWxlKi4gVGhpcyBkaWZmZXJzIGZyb20gOmZ1bmM6YHByaW50X3RiYCBpbiB0aGUgZm9sbG93aW5nCiAgICB3YXlzOgogCkBAIC00MSw2ICs0Niw3IEBACiAgICAgIHByaW50cyB0aGUgbGluZSB3aGVyZSB0aGUgc3ludGF4IGVycm9yIG9jY3VycmVkIHdpdGggYSBjYXJldCBpbmRpY2F0aW5nIHRoZQogICAgICBhcHByb3hpbWF0ZSBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCiAKKyAgIFRoZSBvcHRpb25hbCAqbGltaXQqIGFyZ3VtZW50IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciA6ZnVuYzpgcHJpbnRfdGJgLgogICAgSWYgKmNoYWluKiBpcyB0cnVlICh0aGUgZGVmYXVsdCksIHRoZW4gY2hhaW5lZCBleGNlcHRpb25zICh0aGUKICAgIDphdHRyOmBfX2NhdXNlX19gIG9yIDphdHRyOmBfX2NvbnRleHRfX2AgYXR0cmlidXRlcyBvZiB0aGUgZXhjZXB0aW9uKSB3aWxsIGJlCiAgICBwcmludGVkIGFzIHdlbGwsIGxpa2UgdGhlIGludGVycHJldGVyIGl0c2VsZiBkb2VzIHdoZW4gcHJpbnRpbmcgYW4gdW5oYW5kbGVkCkBAIC00OSwzMyArNTUsNDEgQEAKIAogLi4gZnVuY3Rpb246OiBwcmludF9leGMobGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKQogCi0gICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYHByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpYGAuCisgICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYHByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0LCBmaWxlLAorICAgY2hhaW4pYGAuCiAKIAogLi4gZnVuY3Rpb246OiBwcmludF9sYXN0KGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSwgY2hhaW49VHJ1ZSkKIAogICAgVGhpcyBpcyBhIHNob3J0aGFuZCBmb3IgYGBwcmludF9leGNlcHRpb24oc3lzLmxhc3RfdHlwZSwgc3lzLmxhc3RfdmFsdWUsCi0gICBzeXMubGFzdF90cmFjZWJhY2ssIGxpbWl0LCBmaWxlKWBgLiAgSW4gZ2VuZXJhbCBpdCB3aWxsIHdvcmsgb25seSBhZnRlcgotICAgYW4gZXhjZXB0aW9uIGhhcyByZWFjaGVkIGFuIGludGVyYWN0aXZlIHByb21wdCAoc2VlIDpkYXRhOmBzeXMubGFzdF90eXBlYCkuCisgICBzeXMubGFzdF90cmFjZWJhY2ssIGxpbWl0LCBmaWxlLCBjaGFpbilgYC4gIEluIGdlbmVyYWwgaXQgd2lsbCB3b3JrIG9ubHkKKyAgIGFmdGVyIGFuIGV4Y2VwdGlvbiBoYXMgcmVhY2hlZCBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQgKHNlZQorICAgOmRhdGE6YHN5cy5sYXN0X3R5cGVgKS4KIAogCiAuLiBmdW5jdGlvbjo6IHByaW50X3N0YWNrKGY9Tm9uZSwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKQogCi0gICBUaGlzIGZ1bmN0aW9uIHByaW50cyBhIHN0YWNrIHRyYWNlIGZyb20gaXRzIGludm9jYXRpb24gcG9pbnQuICBUaGUgb3B0aW9uYWwgKmYqCi0gICBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBzdGFjayBmcmFtZSB0byBzdGFydC4gIFRoZSBvcHRpb25hbAotICAgKmxpbWl0KiBhbmQgKmZpbGUqIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCi0gICA6ZnVuYzpgcHJpbnRfZXhjZXB0aW9uYC4KKyAgIFByaW50IHVwIHRvICpsaW1pdCogc3RhY2sgdHJhY2UgZW50cmllcyAoc3RhcnRpbmcgZnJvbSB0aGUgaW52b2NhdGlvbgorICAgcG9pbnQpIGlmICpsaW1pdCogaXMgcG9zaXRpdmUuICBPdGhlcndpc2UsIHByaW50IHRoZSBsYXN0IGBgYWJzKGxpbWl0KWBgCisgICBlbnRyaWVzLiAgSWYgKmxpbWl0KiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCBhbGwgZW50cmllcyBhcmUgcHJpbnRlZC4KKyAgIFRoZSBvcHRpb25hbCAqZiogYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGUgc3RhY2sgZnJhbWUKKyAgIHRvIHN0YXJ0LiAgVGhlIG9wdGlvbmFsICpmaWxlKiBhcmd1bWVudCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgIDpmdW5jOmBwcmludF90YmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICAgQWRkZWQgbmVnYXRpdmUgKmxpbWl0KiBzdXBwb3J0LgogCiAKIC4uIGZ1bmN0aW9uOjogZXh0cmFjdF90Yih0cmFjZWJhY2ssIGxpbWl0PU5vbmUpCiAKLSAgIFJldHVybiBhIGxpc3Qgb2YgdXAgdG8gKmxpbWl0KiAicHJlLXByb2Nlc3NlZCIgc3RhY2sgdHJhY2UgZW50cmllcyBleHRyYWN0ZWQKLSAgIGZyb20gdGhlIHRyYWNlYmFjayBvYmplY3QgKnRyYWNlYmFjayouICBJdCBpcyB1c2VmdWwgZm9yIGFsdGVybmF0ZSBmb3JtYXR0aW5nIG9mCi0gICBzdGFjayB0cmFjZXMuICBJZiAqbGltaXQqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGFsbCBlbnRyaWVzIGFyZSBleHRyYWN0ZWQuICBBCi0gICAicHJlLXByb2Nlc3NlZCIgc3RhY2sgdHJhY2UgZW50cnkgaXMgYSA0LXR1cGxlICgqZmlsZW5hbWUqLCAqbGluZSBudW1iZXIqLAotICAgKmZ1bmN0aW9uIG5hbWUqLCAqdGV4dCopIHJlcHJlc2VudGluZyB0aGUgaW5mb3JtYXRpb24gdGhhdCBpcyB1c3VhbGx5IHByaW50ZWQKLSAgIGZvciBhIHN0YWNrIHRyYWNlLiAgVGhlICp0ZXh0KiBpcyBhIHN0cmluZyB3aXRoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UKLSAgIHN0cmlwcGVkOyBpZiB0aGUgc291cmNlIGlzIG5vdCBhdmFpbGFibGUgaXQgaXMgYGBOb25lYGAuCisgICBSZXR1cm4gYSBsaXN0IG9mICJwcmUtcHJvY2Vzc2VkIiBzdGFjayB0cmFjZSBlbnRyaWVzIGV4dHJhY3RlZCBmcm9tIHRoZQorICAgdHJhY2ViYWNrIG9iamVjdCAqdHJhY2ViYWNrKi4gIEl0IGlzIHVzZWZ1bCBmb3IgYWx0ZXJuYXRlIGZvcm1hdHRpbmcgb2YKKyAgIHN0YWNrIHRyYWNlcy4gIFRoZSBvcHRpb25hbCAqbGltaXQqIGFyZ3VtZW50IGhhcyB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgorICAgOmZ1bmM6YHByaW50X3RiYC4gIEEgInByZS1wcm9jZXNzZWQiIHN0YWNrIHRyYWNlIGVudHJ5IGlzIGEgNC10dXBsZQorICAgKCpmaWxlbmFtZSosICpsaW5lIG51bWJlciosICpmdW5jdGlvbiBuYW1lKiwgKnRleHQqKSByZXByZXNlbnRpbmcgdGhlCisgICBpbmZvcm1hdGlvbiB0aGF0IGlzIHVzdWFsbHkgcHJpbnRlZCBmb3IgYSBzdGFjayB0cmFjZS4gIFRoZSAqdGV4dCogaXMgYQorICAgc3RyaW5nIHdpdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBzdHJpcHBlZDsgaWYgdGhlIHNvdXJjZSBpcworICAgbm90IGF2YWlsYWJsZSBpdCBpcyBgYE5vbmVgYC4KIAogCiAuLiBmdW5jdGlvbjo6IGV4dHJhY3Rfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lKQpAQCAtMTM2LDYgKzE1MCwxNjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIGZ1bmN0aW9uOjogd2Fsa19zdGFjayhmKQorCisgICBXYWxrIGEgc3RhY2sgZm9sbG93aW5nIGBgZi5mX2JhY2tgYCBmcm9tIHRoZSBnaXZlbiBmcmFtZSwgeWllbGRpbmcgdGhlIGZyYW1lCisgICBhbmQgbGluZSBudW1iZXIgZm9yIGVhY2ggZnJhbWUuIElmICpmKiBpcyBgYE5vbmVgYCwgdGhlIGN1cnJlbnQgc3RhY2sgaXMKKyAgIHVzZWQuIFRoaXMgaGVscGVyIGlzIHVzZWQgd2l0aCA6bWV0aDpgU3RhY2tTdW1tYXJ5LmV4dHJhY3RgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gZnVuY3Rpb246OiB3YWxrX3RiKHRiKQorCisgICBXYWxrIGEgdHJhY2ViYWNrIGZvbGxvd2luZyBgYHRiX25leHRgYCB5aWVsZGluZyB0aGUgZnJhbWUgYW5kIGxpbmUgbnVtYmVyCisgICBmb3IgZWFjaCBmcmFtZS4gVGhpcyBoZWxwZXIgaXMgdXNlZCB3aXRoIDptZXRoOmBTdGFja1N1bW1hcnkuZXh0cmFjdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCitUaGUgbW9kdWxlIGFsc28gZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CisKKzpjbGFzczpgVHJhY2ViYWNrRXhjZXB0aW9uYCBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworOmNsYXNzOmBUcmFjZWJhY2tFeGNlcHRpb25gIG9iamVjdHMgYXJlIGNyZWF0ZWQgZnJvbSBhY3R1YWwgZXhjZXB0aW9ucyB0bworY2FwdHVyZSBkYXRhIGZvciBsYXRlciBwcmludGluZyBpbiBhIGxpZ2h0d2VpZ2h0IGZhc2hpb24uCisKKy4uIGNsYXNzOjogVHJhY2ViYWNrRXhjZXB0aW9uKGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2ssICosIGxpbWl0PU5vbmUsIGxvb2t1cF9saW5lcz1UcnVlLCBjYXB0dXJlX2xvY2Fscz1GYWxzZSkKKworICAgQ2FwdHVyZSBhbiBleGNlcHRpb24gZm9yIGxhdGVyIHJlbmRlcmluZy4gKmxpbWl0KiwgKmxvb2t1cF9saW5lcyogYW5kCisgICAqY2FwdHVyZV9sb2NhbHMqIGFyZSBhcyBmb3IgdGhlIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBjbGFzcy4KKworICAgTm90ZSB0aGF0IHdoZW4gbG9jYWxzIGFyZSBjYXB0dXJlZCwgdGhleSBhcmUgYWxzbyBzaG93biBpbiB0aGUgdHJhY2ViYWNrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBfX2NhdXNlX18KKworICAgICAgQSA6Y2xhc3M6YFRyYWNlYmFja0V4Y2VwdGlvbmAgb2YgdGhlIG9yaWdpbmFsIGBgX19jYXVzZV9fYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fY29udGV4dF9fCisKKyAgICAgIEEgOmNsYXNzOmBUcmFjZWJhY2tFeGNlcHRpb25gIG9mIHRoZSBvcmlnaW5hbCBgYF9fY29udGV4dF9fYGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IF9fc3VwcHJlc3NfY29udGV4dF9fCisKKyAgICAgIFRoZSBgYF9fc3VwcHJlc3NfY29udGV4dF9fYGAgdmFsdWUgZnJvbSB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdGFjaworCisgICAgICBBIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCByZXByZXNlbnRpbmcgdGhlIHRyYWNlYmFjay4KKworICAgLi4gYXR0cmlidXRlOjogZXhjX3R5cGUKKworICAgICAgVGhlIGNsYXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFjZWJhY2suCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGZpbGVuYW1lCisKKyAgICAgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGZpbGUgbmFtZSB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVubworCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHRleHQKKworICAgICAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgdGV4dCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG9mZnNldAorCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1zZworCisgICAgICBGb3Igc3ludGF4IGVycm9ycyAtIHRoZSBjb21waWxlciBlcnJvciBtZXNzYWdlLgorCisgICAuLiBjbGFzc21ldGhvZDo6IGZyb21fZXhjZXB0aW9uKGV4YywgKiwgbGltaXQ9Tm9uZSwgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlKQorCisgICAgICBDYXB0dXJlIGFuIGV4Y2VwdGlvbiBmb3IgbGF0ZXIgcmVuZGVyaW5nLiAqbGltaXQqLCAqbG9va3VwX2xpbmVzKiBhbmQKKyAgICAgICpjYXB0dXJlX2xvY2FscyogYXJlIGFzIGZvciB0aGUgOmNsYXNzOmBTdGFja1N1bW1hcnlgIGNsYXNzLgorCisgICAgICBOb3RlIHRoYXQgd2hlbiBsb2NhbHMgYXJlIGNhcHR1cmVkLCB0aGV5IGFyZSBhbHNvIHNob3duIGluIHRoZSB0cmFjZWJhY2suCisKKyAgIC4uIG1ldGhvZDo6IGZvcm1hdCgqLCBjaGFpbj1UcnVlKQorCisgICAgICBGb3JtYXQgdGhlIGV4Y2VwdGlvbi4KKworICAgICAgSWYgKmNoYWluKiBpcyBub3QgYGBUcnVlYGAsIGBgX19jYXVzZV9fYGAgYW5kIGBgX19jb250ZXh0X19gYCB3aWxsIG5vdAorICAgICAgYmUgZm9ybWF0dGVkLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZSBhbmQKKyAgICAgIHNvbWUgY29udGFpbmluZyBpbnRlcm5hbCBuZXdsaW5lcy4gOmZ1bmM6YH50cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uYAorICAgICAgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZCB3aGljaCBqdXN0IHByaW50cyB0aGUgbGluZXMgdG8gYSBmaWxlLgorCisgICAgICBUaGUgbWVzc2FnZSBpbmRpY2F0aW5nIHdoaWNoIGV4Y2VwdGlvbiBvY2N1cnJlZCBpcyBhbHdheXMgdGhlIGxhc3QKKyAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgorCisgICAuLiBtZXRob2Q6OiAgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCkKKworICAgICAgRm9ybWF0IHRoZSBleGNlcHRpb24gcGFydCBvZiB0aGUgdHJhY2ViYWNrLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZ2VuZXJhdG9yIG9mIHN0cmluZ3MsIGVhY2ggZW5kaW5nIGluIGEgbmV3bGluZS4KKworICAgICAgTm9ybWFsbHksIHRoZSBnZW5lcmF0b3IgZW1pdHMgYSBzaW5nbGUgc3RyaW5nOyBob3dldmVyLCBmb3IKKyAgICAgIDpleGM6YFN5bnRheEVycm9yYCBleGNlcHRpb25zLCBpdCBlbWl0cyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdoZW4KKyAgICAgIHByaW50ZWQpIGRpc3BsYXkgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgd2hlcmUgdGhlIHN5bnRheAorICAgICAgZXJyb3Igb2NjdXJyZWQuCisKKyAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAorICAgICAgc3RyaW5nIGluIHRoZSBvdXRwdXQuCisKKworOmNsYXNzOmBTdGFja1N1bW1hcnlgIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCis6Y2xhc3M6YFN0YWNrU3VtbWFyeWAgb2JqZWN0cyByZXByZXNlbnQgYSBjYWxsIHN0YWNrIHJlYWR5IGZvciBmb3JtYXR0aW5nLgorCisuLiBjbGFzczo6IFN0YWNrU3VtbWFyeQorCisgICAuLiBjbGFzc21ldGhvZDo6IGV4dHJhY3QoZnJhbWVfZ2VuLCAqLCBsaW1pdD1Ob25lLCBsb29rdXBfbGluZXM9VHJ1ZSwgY2FwdHVyZV9sb2NhbHM9RmFsc2UpCisKKyAgICAgIENvbnN0cnVjdCBhIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBvYmplY3QgZnJvbSBhIGZyYW1lIGdlbmVyYXRvciAoc3VjaCBhcworICAgICAgaXMgcmV0dXJuZWQgYnkgOmZ1bmM6YH50cmFjZWJhY2sud2Fsa19zdGFja2Agb3IKKyAgICAgIDpmdW5jOmB+dHJhY2ViYWNrLndhbGtfdGJgKS4KKworICAgICAgSWYgKmxpbWl0KiBpcyBzdXBwbGllZCwgb25seSB0aGlzIG1hbnkgZnJhbWVzIGFyZSB0YWtlbiBmcm9tICpmcmFtZV9nZW4qLgorICAgICAgSWYgKmxvb2t1cF9saW5lcyogaXMgYGBGYWxzZWBgLCB0aGUgcmV0dXJuZWQgOmNsYXNzOmBGcmFtZVN1bW1hcnlgCisgICAgICBvYmplY3RzIHdpbGwgbm90IGhhdmUgcmVhZCB0aGVpciBsaW5lcyBpbiB5ZXQsIG1ha2luZyB0aGUgY29zdCBvZgorICAgICAgY3JlYXRpbmcgdGhlIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBjaGVhcGVyICh3aGljaCBtYXkgYmUgdmFsdWFibGUgaWYgaXQKKyAgICAgIG1heSBub3QgYWN0dWFsbHkgZ2V0IGZvcm1hdHRlZCkuIElmICpjYXB0dXJlX2xvY2FscyogaXMgYGBUcnVlYGAgdGhlCisgICAgICBsb2NhbCB2YXJpYWJsZXMgaW4gZWFjaCA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgYXJlIGNhcHR1cmVkIGFzIG9iamVjdAorICAgICAgcmVwcmVzZW50YXRpb25zLgorCisgICAuLiBjbGFzc21ldGhvZDo6IGZyb21fbGlzdChhX2xpc3QpCisKKyAgICAgIENvbnN0cnVjdCBhIDpjbGFzczpgU3RhY2tTdW1tYXJ5YCBvYmplY3QgZnJvbSBhIHN1cHBsaWVkIG9sZC1zdHlsZSBsaXN0CisgICAgICBvZiB0dXBsZXMuIEVhY2ggdHVwbGUgc2hvdWxkIGJlIGEgNC10dXBsZSB3aXRoIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsCisgICAgICBsaW5lIGFzIHRoZSBlbGVtZW50cy4KKworCis6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKzpjbGFzczpgRnJhbWVTdW1tYXJ5YCBvYmplY3RzIHJlcHJlc2VudCBhIHNpbmdsZSBmcmFtZSBpbiBhIHRyYWNlYmFjay4KKworLi4gY2xhc3M6OiBGcmFtZVN1bW1hcnkoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbG9va3VwX2xpbmU9VHJ1ZSwgbG9jYWxzPU5vbmUsIGxpbmU9Tm9uZSkKKworICAgUmVwcmVzZW50IGEgc2luZ2xlIGZyYW1lIGluIHRoZSB0cmFjZWJhY2sgb3Igc3RhY2sgdGhhdCBpcyBiZWluZyBmb3JtYXR0ZWQKKyAgIG9yIHByaW50ZWQuIEl0IG1heSBvcHRpb25hbGx5IGhhdmUgYSBzdHJpbmdpZmllZCB2ZXJzaW9uIG9mIHRoZSBmcmFtZXMKKyAgIGxvY2FscyBpbmNsdWRlZCBpbiBpdC4gSWYgKmxvb2t1cF9saW5lKiBpcyBgYEZhbHNlYGAsIHRoZSBzb3VyY2UgY29kZSBpcyBub3QKKyAgIGxvb2tlZCB1cCB1bnRpbCB0aGUgOmNsYXNzOmBGcmFtZVN1bW1hcnlgIGhhcyB0aGUgOmF0dHI6YH5GcmFtZVN1bW1hcnkubGluZWAKKyAgIGF0dHJpYnV0ZSBhY2Nlc3NlZCAod2hpY2ggYWxzbyBoYXBwZW5zIHdoZW4gY2FzdGluZyBpdCB0byBhIHR1cGxlKS4KKyAgIDphdHRyOmB+RnJhbWVTdW1tYXJ5LmxpbmVgIG1heSBiZSBkaXJlY3RseSBwcm92aWRlZCwgYW5kIHdpbGwgcHJldmVudCBsaW5lCisgICBsb29rdXBzIGhhcHBlbmluZyBhdCBhbGwuICpsb2NhbHMqIGlzIGFuIG9wdGlvbmFsIGxvY2FsIHZhcmlhYmxlCisgICBkaWN0aW9uYXJ5LCBhbmQgaWYgc3VwcGxpZWQgdGhlIHZhcmlhYmxlIHJlcHJlc2VudGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZQorICAgc3VtbWFyeSBmb3IgbGF0ZXIgZGlzcGxheS4KIAogLi4gX3RyYWNlYmFjay1leGFtcGxlOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKaW5kZXggYTA0YTQzMi4uMTNjODFhNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdApAQCAtMzYzLDcgKzM2Myw3IEBACiAgICBGaWx0ZXIgb24gdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MuCiAKICAgIFNlZSB0aGUgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAgZnVuY3Rpb24gZm9yIHRoZSBzeW50YXggb2YKLSAgICpmaWxlbmFtZV9wYXR0ZXJuKi4gVGhlIGBgJy5weWMnYGAgYW5kIGBgJy5weW8nYGAgZmlsZSBleHRlbnNpb25zIGFyZQorICAgKmZpbGVuYW1lX3BhdHRlcm4qLiBUaGUgYGAnLnB5YydgYCBmaWxlIGV4dGVuc2lvbiBpcwogICAgcmVwbGFjZWQgd2l0aCBgYCcucHknYGAuCiAKICAgIEV4YW1wbGVzOgpAQCAtMzc0LDYgKzM3NCwxMCBAQAogICAgICA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlCiAgICAqIGBgRmlsdGVyKEZhbHNlLCAiPHVua25vd24+IilgYCBleGNsdWRlcyBlbXB0eSB0cmFjZWJhY2tzCiAKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIFRoZSBgYCcucHlvJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KKwogICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCiAKICAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZApAQCAtNjMxLDQgKzYzNSwzIEBACiAgICAgICAgICAgICAgIG9iaiA9IE9iamVjdCgpCiAgICAgICAgICAgICBGaWxlICJ0ZXN0LnB5IiwgbGluZSAxMgogICAgICAgICAgICAgICB0YiA9IHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrKGYoKSkKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHVsaXBfY29yby5kaWEgYi9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYQppbmRleCBlY2NmNGZhLi43MGEzM2UzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYQorKysgYi9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLmRpYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90dWxpcF9jb3JvLnBuZyBiL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nCmluZGV4IDY1YjY5NTEuLjM2Y2VkOGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nCisrKyBiL0RvYy9saWJyYXJ5L3R1bGlwX2Nvcm8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QgYi9Eb2MvbGlicmFyeS90dXJ0bGUucnN0CmluZGV4IGVmZTVjNTQuLjMwZGQ2ZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHVydGxlLnJzdApAQCAtMTg3OSw3ICsxODc5LDcgQEAKIAogICAgICAgPj4+IGN2ID0gc2NyZWVuLmdldGNhbnZhcygpCiAgICAgICA+Pj4gY3YKLSAgICAgIDx0dXJ0bGUuU2Nyb2xsZWRDYW52YXMgb2JqZWN0IGF0IC4uLj4KKyAgICAgIDx0dXJ0bGUuU2Nyb2xsZWRDYW52YXMgb2JqZWN0IC4uLj4KIAogCiAuLiBmdW5jdGlvbjo6IGdldHNoYXBlcygpCkBAIC0yMzUxLDYgKzIzNTEsOSBAQAogfCAgICAgICAgICAgICAgICB8IHBhaXJ3aXNlIGluIG9wcG9zaXRlICAgICAgICAgfCBzaGFwZXNpemUsIHRpbHQsICAgICAgfAogfCAgICAgICAgICAgICAgICB8IGRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICAgfCBnZXRfc2hhcGVwb2x5LCB1cGRhdGUgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBzb3J0aW5nX2FuaW1hdGV8IHZpc3VhbCBkZW1vbnN0cmF0aW9uIG9mICAgICAgfCBzaW1wbGUgYWxpZ25tZW50LCAgICAgfAorfCAgICAgICAgICAgICAgICB8IGRpZmZlcmVudCBzb3J0aW5nIG1ldGhvZHMgICAgfCByYW5kb21pemF0aW9uICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCB0cmVlICAgICAgICAgICB8IGEgKGdyYXBoaWNhbCkgYnJlYWR0aCAgICAgICAgfCA6ZnVuYzpgY2xvbmVgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICB8IGZpcnN0IHRyZWUgKHVzaW5nIGdlbmVyYXRvcnMpfCAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IGFiZGI5MzkuLmViMjc4NDYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTg2LDggKzg2LDE2IEBACiAKIC4uIGRhdGE6OiBHZW5lcmF0b3JUeXBlCiAKLSAgIFRoZSB0eXBlIG9mIDp0ZXJtOmBnZW5lcmF0b3JgLWl0ZXJhdG9yIG9iamVjdHMsIHByb2R1Y2VkIGJ5IGNhbGxpbmcgYQotICAgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorICAgVGhlIHR5cGUgb2YgOnRlcm06YGdlbmVyYXRvcmAtaXRlcmF0b3Igb2JqZWN0cywgY3JlYXRlZCBieQorICAgZ2VuZXJhdG9yIGZ1bmN0aW9ucy4KKworCisuLiBkYXRhOjogQ29yb3V0aW5lVHlwZQorCisgICBUaGUgdHlwZSBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzLCBjcmVhdGVkIGJ5CisgICA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKIC4uIGRhdGE6OiBDb2RlVHlwZQpAQCAtMTE1LDYgKzEyMywxMCBAQAogICAgVGhlIHR5cGUgb2YgOnRlcm06YG1vZHVsZXMgPG1vZHVsZT5gLiBDb25zdHJ1Y3RvciB0YWtlcyB0aGUgbmFtZSBvZiB0aGUKICAgIG1vZHVsZSB0byBiZSBjcmVhdGVkIGFuZCBvcHRpb25hbGx5IGl0cyA6dGVybTpgZG9jc3RyaW5nYC4KIAorICAgLi4gbm90ZTo6CisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIHRvIGNyZWF0ZSBhIG5ldyBtb2R1bGUgaWYgeW91CisgICAgICB3aXNoIHRvIHNldCB0aGUgdmFyaW91cyBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBfX2RvY19fCiAKICAgICAgIFRoZSA6dGVybTpgZG9jc3RyaW5nYCBvZiB0aGUgbW9kdWxlLiBEZWZhdWx0cyB0byBgYE5vbmVgYC4KQEAgLTI2NywzICsyNzksMjUgQEAKICAgIGF0dHJpYnV0ZXMgb24gdGhlIGNsYXNzIHdpdGggdGhlIHNhbWUgbmFtZSAoc2VlIEVudW0gZm9yIGFuIGV4YW1wbGUpLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCitDb3JvdXRpbmUgVXRpbGl0eSBGdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGNvcm91dGluZShnZW5fZnVuYykKKworICAgVGhpcyBmdW5jdGlvbiB0cmFuc2Zvcm1zIGEgOnRlcm06YGdlbmVyYXRvcmAgZnVuY3Rpb24gaW50byBhCisgICA6dGVybTpgY29yb3V0aW5lIGZ1bmN0aW9uYCB3aGljaCByZXR1cm5zIGEgZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZS4KKyAgIFRoZSBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lIGlzIHN0aWxsIGEgOnRlcm06YGdlbmVyYXRvciBpdGVyYXRvcmAsCisgICBidXQgaXMgYWxzbyBjb25zaWRlcmVkIHRvIGJlIGEgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0IGFuZCBpcworICAgOnRlcm06YGF3YWl0YWJsZWAuICBIb3dldmVyLCBpdCBtYXkgbm90IG5lY2Vzc2FyaWx5IGltcGxlbWVudAorICAgdGhlIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKworICAgSWYgKmdlbl9mdW5jKiBpcyBhIGdlbmVyYXRvciBmdW5jdGlvbiwgaXQgd2lsbCBiZSBtb2RpZmllZCBpbi1wbGFjZS4KKworICAgSWYgKmdlbl9mdW5jKiBpcyBub3QgYSBnZW5lcmF0b3IgZnVuY3Rpb24sIGl0IHdpbGwgYmUgd3JhcHBlZC4gSWYgaXQKKyAgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yYCwgdGhlIGluc3RhbmNlCisgICB3aWxsIGJlIHdyYXBwZWQgaW4gYW4gKmF3YWl0YWJsZSogcHJveHkgb2JqZWN0LiAgQWxsIG90aGVyIHR5cGVzCisgICBvZiBvYmplY3RzIHdpbGwgYmUgcmV0dXJuZWQgYXMgaXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY4NTIzYgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKQEAgLTAsMCArMSw1MjQgQEAKKzptb2Q6YHR5cGluZ2AgLS0tIFN1cHBvcnQgZm9yIHR5cGUgaGludHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogdHlwaW5nCisgICA6c3lub3BzaXM6IFN1cHBvcnQgZm9yIHR5cGUgaGludHMgKHNlZSBQRVAgNDg0KS4KKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvdHlwaW5nLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBzdXBwb3J0cyB0eXBlIGhpbnRzIGFzIHNwZWNpZmllZCBieSA6cGVwOmA0ODRgLiAgVGhlIG1vc3QKK2Z1bmRhbWVudGFsIHN1cHBvcnQgY29uc2lzdHMgb2YgdGhlIHR5cGUgOmNsYXNzOmBBbnlgLCA6Y2xhc3M6YFVuaW9uYCwKKzpjbGFzczpgVHVwbGVgLCA6Y2xhc3M6YENhbGxhYmxlYCwgOmNsYXNzOmBUeXBlVmFyYCwgYW5kCis6Y2xhc3M6YEdlbmVyaWNgLiAgRm9yIGZ1bGwgc3BlY2lmaWNhdGlvbiBwbGVhc2Ugc2VlIDpwZXA6YDQ4NGAuICBGb3IKK2Egc2ltcGxpZmllZCBpbnRyb2R1Y3Rpb24gdG8gdHlwZSBoaW50cyBzZWUgOnBlcDpgNDgzYC4KKworCitUaGUgZnVuY3Rpb24gYmVsb3cgdGFrZXMgYW5kIHJldHVybnMgYSBzdHJpbmcgYW5kIGlzIGFubm90YXRlZCBhcyBmb2xsb3dzOjoKKworICAgZGVmIGdyZWV0aW5nKG5hbWU6IHN0cikgLT4gc3RyOgorICAgICAgIHJldHVybiAnSGVsbG8gJyArIG5hbWUKKworSW4gdGhlIGZ1bmN0aW9uIGBgZ3JlZXRpbmdgYCwgdGhlIGFyZ3VtZW50IGBgbmFtZWBgIGlzIGV4cGVjdGVkIHRvIGJ5IG9mIHR5cGUKKzpjbGFzczpgc3RyYCBhbmQgdGhlIHJldHVybiB0eXBlIDpjbGFzczpgc3RyYC4gU3VidHlwZXMgYXJlIGFjY2VwdGVkIGFzCithcmd1bWVudHMuCisKK1R5cGUgYWxpYXNlcworLS0tLS0tLS0tLS0tCisKK0EgdHlwZSBhbGlhcyBpcyBkZWZpbmVkIGJ5IGFzc2lnbmluZyB0aGUgdHlwZSB0byB0aGUgYWxpYXM6OgorCisgICBWZWN0b3IgPSBMaXN0W2Zsb2F0XQorCitDYWxsYWJsZQorLS0tLS0tLS0KKworRnJhbWV3b3JrcyBleHBlY3RpbmcgY2FsbGJhY2sgZnVuY3Rpb25zIG9mIHNwZWNpZmljIHNpZ25hdHVyZXMgbWlnaHQgYmUKK3R5cGUgaGludGVkIHVzaW5nIGBgQ2FsbGFibGVbW0FyZzFUeXBlLCBBcmcyVHlwZV0sIFJldHVyblR5cGVdYGAuCisKK0ZvciBleGFtcGxlOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCisKKyAgIGRlZiBmZWVkZXIoZ2V0X25leHRfaXRlbTogQ2FsbGFibGVbW10sIHN0cl0pIC0+IE5vbmU6CisgICAgICAgIyBCb2R5CisKKyAgIGRlZiBhc3luY19xdWVyeShvbl9zdWNjZXNzOiBDYWxsYWJsZVtbaW50XSwgTm9uZV0sCisgICAgICAgICAgICAgICAgICAgb25fZXJyb3I6IENhbGxhYmxlW1tpbnQsIEV4Y2VwdGlvbl0sIE5vbmVdKSAtPiBOb25lOgorICAgICAgICMgQm9keQorCitJdCBpcyBwb3NzaWJsZSB0byBkZWNsYXJlIHRoZSByZXR1cm4gdHlwZSBvZiBhIGNhbGxhYmxlIHdpdGhvdXQgc3BlY2lmeWluZwordGhlIGNhbGwgc2lnbmF0dXJlIGJ5IHN1YnN0aXR1dGluZyBhIGxpdGVyYWwgZWxsaXBzaXMKK2ZvciB0aGUgbGlzdCBvZiBhcmd1bWVudHMgaW4gdGhlIHR5cGUgaGludDogYGBDYWxsYWJsZVsuLi4sIFJldHVyblR5cGVdYGAuCitgYE5vbmVgYCBhcyBhIHR5cGUgaGludCBpcyBhIHNwZWNpYWwgY2FzZSBhbmQgaXMgcmVwbGFjZWQgYnkgYGB0eXBlKE5vbmUpYGAuCisKK0dlbmVyaWNzCistLS0tLS0tLQorCitTaW5jZSB0eXBlIGluZm9ybWF0aW9uIGFib3V0IG9iamVjdHMga2VwdCBpbiBjb250YWluZXJzIGNhbm5vdCBiZSBzdGF0aWNhbGx5CitpbmZlcnJlZCBpbiBhIGdlbmVyaWMgd2F5LCBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaGF2ZSBiZWVuIGV4dGVuZGVkIHRvIHN1cHBvcnQKK3N1YnNjcmlwdGlvbiB0byBkZW5vdGUgZXhwZWN0ZWQgdHlwZXMgZm9yIGNvbnRhaW5lciBlbGVtZW50cy4KKworOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IE1hcHBpbmcsIFNlcXVlbmNlCisKKyAgIGRlZiBub3RpZnlfYnlfZW1haWwoZW1wbG95ZWVzOiBTZXF1ZW5jZVtFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlczogTWFwcGluZ1tzdHIsIHN0cl0pIC0+IE5vbmU6IC4uLgorCitHZW5lcmljcyBjYW4gYmUgcGFyYW1ldHJpemVkIGJ5IHVzaW5nIGEgbmV3IGZhY3RvcnkgYXZhaWxhYmxlIGluIHR5cGluZworY2FsbGVkIDpjbGFzczpgVHlwZVZhcmAuCisKKzo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZSwgVHlwZVZhcgorCisgICBUID0gVHlwZVZhcignVCcpICAgICAgIyBEZWNsYXJlIHR5cGUgdmFyaWFibGUKKworICAgZGVmIGZpcnN0KGw6IFNlcXVlbmNlW1RdKSAtPiBUOiAgICMgR2VuZXJpYyBmdW5jdGlvbgorICAgICAgIHJldHVybiBsWzBdCisKKworVXNlci1kZWZpbmVkIGdlbmVyaWMgdHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgdXNlci1kZWZpbmVkIGNsYXNzIGNhbiBiZSBkZWZpbmVkIGFzIGEgZ2VuZXJpYyBjbGFzcy4KKworOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMKKyAgIGZyb20gbG9nZ2luZyBpbXBvcnQgTG9nZ2VyCisKKyAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgY2xhc3MgTG9nZ2VkVmFyKEdlbmVyaWNbVF0pOgorICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZTogVCwgbmFtZTogc3RyLCBsb2dnZXI6IExvZ2dlcikgLT4gTm9uZToKKyAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgICAgIGRlZiBzZXQoc2VsZiwgbmV3OiBUKSAtPiBOb25lOgorICAgICAgICAgICBzZWxmLmxvZygnU2V0ICcgKyByZXByKHNlbGYudmFsdWUpKQorICAgICAgICAgICBzZWxmLnZhbHVlID0gbmV3CisKKyAgICAgICBkZWYgZ2V0KHNlbGYpIC0+IFQ6CisgICAgICAgICAgIHNlbGYubG9nKCdHZXQgJyArIHJlcHIoc2VsZi52YWx1ZSkpCisgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisKKyAgICAgICBkZWYgbG9nKHNlbGYsIG1lc3NhZ2U6IHN0cikgLT4gTm9uZToKKyAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygne306IHt9Jy5mb3JtYXQoc2VsZi5uYW1lLCBtZXNzYWdlKSkKKworYGBHZW5lcmljW1RdYGAgYXMgYSBiYXNlIGNsYXNzIGRlZmluZXMgdGhhdCB0aGUgY2xhc3MgYGBMb2dnZWRWYXJgYCB0YWtlcyBhCitzaW5nbGUgdHlwZSBwYXJhbWV0ZXIgYGBUYGAgLiBUaGlzIGFsc28gbWFrZXMgYGBUYGAgdmFsaWQgYXMgYSB0eXBlIHdpdGhpbiB0aGUKK2NsYXNzIGJvZHkuCisKK1RoZSA6Y2xhc3M6YEdlbmVyaWNgIGJhc2UgY2xhc3MgdXNlcyBhIG1ldGFjbGFzcyB0aGF0IGRlZmluZXMKKzptZXRoOmBfX2dldGl0ZW1fX2Agc28gdGhhdCBgYExvZ2dlZFZhclt0XWBgIGlzIHZhbGlkIGFzIGEgdHlwZTo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorCisgICBkZWYgemVyb19hbGxfdmFycyh2YXJzOiBJdGVyYWJsZVtMb2dnZWRWYXJbaW50XV0pIC0+IE5vbmU6CisgICAgICAgZm9yIHZhciBpbiB2YXJzOgorICAgICAgICAgICB2YXIuc2V0KDApCisKK0EgZ2VuZXJpYyB0eXBlIGNhbiBoYXZlIGFueSBudW1iZXIgb2YgdHlwZSB2YXJpYWJsZXMsIGFuZCB0eXBlIHZhcmlhYmxlcyBtYXkKK2JlIGNvbnN0cmFpbmVkOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMKKyAgIC4uLgorCisgICBUID0gVHlwZVZhcignVCcpCisgICBTID0gVHlwZVZhcignUycsIGludCwgc3RyKQorCisgICBjbGFzcyBTdHJhbmdlUGFpcihHZW5lcmljW1QsIFNdKToKKyAgICAgICAuLi4KKworRWFjaCB0eXBlIHZhcmlhYmxlIGFyZ3VtZW50IHRvIDpjbGFzczpgR2VuZXJpY2AgbXVzdCBiZSBkaXN0aW5jdC4KK1RoaXMgaXMgdGh1cyBpbnZhbGlkOjoKKworICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEdlbmVyaWMKKyAgIC4uLgorCisgICBUID0gVHlwZVZhcignVCcpCisKKyAgIGNsYXNzIFBhaXIoR2VuZXJpY1tULCBUXSk6ICAgIyBJTlZBTElECisgICAgICAgLi4uCisKK1lvdSBjYW4gdXNlIG11bHRpcGxlIGluaGVyaXRhbmNlIHdpdGggOmNsYXNzOmBHZW5lcmljYDo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyLCBHZW5lcmljLCBTaXplZAorCisgICBUID0gVHlwZVZhcignVCcpCisKKyAgIGNsYXNzIExpbmtlZExpc3QoU2l6ZWQsIEdlbmVyaWNbVF0pOgorICAgICAgIC4uLgorCitXaGVuIGluaGVyaXRpbmcgZnJvbSBnZW5lcmljIGNsYXNzZXMsIHNvbWUgdHlwZSB2YXJpYWJsZXMgY291bGQgZml4ZWQ6OgorCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIE1hcHBpbmcKKworICAgIFQgPSBUeXBlVmFyKCdUJykKKworICAgIGNsYXNzIE15RGljdChNYXBwaW5nW3N0ciwgVF0pOgorICAgICAgICAuLi4KKworSW4gdGhpcyBjYXNlIGBgTXlEaWN0YGAgaGFzIGEgc2luZ2xlIHBhcmFtZXRlciwgYGBUYGAuCisKK1N1YmNsYXNzaW5nIGEgZ2VuZXJpYyBjbGFzcyB3aXRob3V0IHNwZWNpZnlpbmcgdHlwZSBwYXJhbWV0ZXJzIGFzc3VtZXMKKzpjbGFzczpgQW55YCBmb3IgZWFjaCBwb3NpdGlvbi4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBgYE15SXRlcmFibGVgYCBpcworbm90IGdlbmVyaWMgYnV0IGltcGxpY2l0bHkgaW5oZXJpdHMgZnJvbSBgYEl0ZXJhYmxlW0FueV1gYDo6CisKKyAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorCisgICBjbGFzcyBNeUl0ZXJhYmxlKEl0ZXJhYmxlKTogIyBTYW1lIGFzIEl0ZXJhYmxlW0FueV0KKworVGhlIG1ldGFjbGFzcyB1c2VkIGJ5IDpjbGFzczpgR2VuZXJpY2AgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGFiYy5BQkNNZXRhYC4KK0EgZ2VuZXJpYyBjbGFzcyBjYW4gYmUgYW4gQUJDIGJ5IGluY2x1ZGluZyBhYnN0cmFjdCBtZXRob2RzIG9yIHByb3BlcnRpZXMsCithbmQgZ2VuZXJpYyBjbGFzc2VzIGNhbiBhbHNvIGhhdmUgQUJDcyBhcyBiYXNlIGNsYXNzZXMgd2l0aG91dCBhIG1ldGFjbGFzcworY29uZmxpY3QuICBHZW5lcmljIG1ldGFjbGFzc2VzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisKK1RoZSA6Y2xhc3M6YEFueWAgdHlwZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Egc3BlY2lhbCBraW5kIG9mIHR5cGUgaXMgOmNsYXNzOmBBbnlgLiBFdmVyeSB0eXBlIGlzIGEgc3VidHlwZSBvZgorOmNsYXNzOmBBbnlgLiBUaGlzIGlzIGFsc28gdHJ1ZSBmb3IgdGhlIGJ1aWx0aW4gdHlwZSBvYmplY3QuIEhvd2V2ZXIsIHRvIHRoZQorc3RhdGljIHR5cGUgY2hlY2tlciB0aGVzZSBhcmUgY29tcGxldGVseSBkaWZmZXJlbnQuCisKK1doZW4gdGhlIHR5cGUgb2YgYSB2YWx1ZSBpcyA6Y2xhc3M6YG9iamVjdGAsIHRoZSB0eXBlIGNoZWNrZXIgd2lsbCByZWplY3QKK2FsbW9zdCBhbGwgb3BlcmF0aW9ucyBvbiBpdCwgYW5kIGFzc2lnbmluZyBpdCB0byBhIHZhcmlhYmxlIChvciB1c2luZyBpdCBhcyBhCityZXR1cm4gdmFsdWUpIG9mIGEgbW9yZSBzcGVjaWFsaXplZCB0eXBlIGlzIGEgdHlwZSBlcnJvci4gT24gdGhlIG90aGVyIGhhbmQsCit3aGVuIGEgdmFsdWUgaGFzIHR5cGUgOmNsYXNzOmBBbnlgLCB0aGUgdHlwZSBjaGVja2VyIHdpbGwgYWxsb3cgYWxsIG9wZXJhdGlvbnMKK29uIGl0LCBhbmQgYSB2YWx1ZSBvZiB0eXBlIDpjbGFzczpgQW55YCBjYW4gYmUgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSAob3IgdXNlZAorYXMgYSByZXR1cm4gdmFsdWUpIG9mIGEgbW9yZSBjb25zdHJhaW5lZCB0eXBlLgorCisKK0NsYXNzZXMsIGZ1bmN0aW9ucywgYW5kIGRlY29yYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlcywgZnVuY3Rpb25zIGFuZCBkZWNvcmF0b3JzOgorCisuLiBjbGFzczo6IEFueQorCisgICBTcGVjaWFsIHR5cGUgaW5kaWNhdGluZyBhbiB1bmNvbnN0cmFpbmVkIHR5cGUuCisKKyAgICogQW55IG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEFueWAuCisgICAqIEFueSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgQW55YC4KKyAgICogQXMgYSBzcGVjaWFsIGNhc2UsIDpjbGFzczpgQW55YCBhbmQgOmNsYXNzOmBvYmplY3RgIGFyZSBzdWJjbGFzc2VzIG9mCisgICAgIGVhY2ggb3RoZXIuCisKKy4uIGNsYXNzOjogVHlwZVZhcgorCisgICAgVHlwZSB2YXJpYWJsZS4KKworICAgIFVzYWdlOjoKKworICAgICAgVCA9IFR5cGVWYXIoJ1QnKSAgIyBDYW4gYmUgYW55dGhpbmcKKyAgICAgIEEgPSBUeXBlVmFyKCdBJywgc3RyLCBieXRlcykgICMgTXVzdCBiZSBzdHIgb3IgYnl0ZXMKKworICAgIFR5cGUgdmFyaWFibGVzIGV4aXN0IHByaW1hcmlseSBmb3IgdGhlIGJlbmVmaXQgb2Ygc3RhdGljIHR5cGUKKyAgICBjaGVja2Vycy4gIFRoZXkgc2VydmUgYXMgdGhlIHBhcmFtZXRlcnMgZm9yIGdlbmVyaWMgdHlwZXMgYXMgd2VsbAorICAgIGFzIGZvciBnZW5lcmljIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgU2VlIGNsYXNzIEdlbmVyaWMgZm9yIG1vcmUKKyAgICBpbmZvcm1hdGlvbiBvbiBnZW5lcmljIHR5cGVzLiAgR2VuZXJpYyBmdW5jdGlvbnMgd29yayBhcyBmb2xsb3dzOjoKKworICAgICAgIGRlZiByZXBlYXQoeDogVCwgbjogaW50KSAtPiBTZXF1ZW5jZVtUXToKKyAgICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIG4gcmVmZXJlbmNlcyB0byB4LiIiIgorICAgICAgICAgICByZXR1cm4gW3hdKm4KKworICAgICAgIGRlZiBsb25nZXN0KHg6IEEsIHk6IEEpIC0+IEE6CisgICAgICAgICAgICIiIlJldHVybiB0aGUgbG9uZ2VzdCBvZiB0d28gc3RyaW5ncy4iIiIKKyAgICAgICAgICAgcmV0dXJuIHggaWYgbGVuKHgpID49IGxlbih5KSBlbHNlIHkKKworICAgIFRoZSBsYXR0ZXIgZXhhbXBsZSdzIHNpZ25hdHVyZSBpcyBlc3NlbnRpYWxseSB0aGUgb3ZlcmxvYWRpbmcKKyAgICBvZiBgYChzdHIsIHN0cikgLT4gc3RyYGAgYW5kIGBgKGJ5dGVzLCBieXRlcykgLT4gYnl0ZXNgYC4gIEFsc28gbm90ZQorICAgIHRoYXQgaWYgdGhlIGFyZ3VtZW50cyBhcmUgaW5zdGFuY2VzIG9mIHNvbWUgc3ViY2xhc3Mgb2YgOmNsYXNzOmBzdHJgLAorICAgIHRoZSByZXR1cm4gdHlwZSBpcyBzdGlsbCBwbGFpbiA6Y2xhc3M6YHN0cmAuCisKKyAgICBBdCBydW50aW1lLCBgYGlzaW5zdGFuY2UoeCwgVClgYCB3aWxsIHJhaXNlIDpleGM6YFR5cGVFcnJvcmAuICBJbiBnZW5lcmFsLAorICAgIDpmdW5jOmBpc2luc3RhbmNlYCBhbmQgOmZ1bmM6YGlzc3ViY2xhc3NgIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHR5cGVzLgorCisgICAgVHlwZSB2YXJpYWJsZXMgbWF5IGJlIG1hcmtlZCBjb3ZhcmlhbnQgb3IgY29udHJhdmFyaWFudCBieSBwYXNzaW5nCisgICAgYGBjb3ZhcmlhbnQ9VHJ1ZWBgIG9yIGBgY29udHJhdmFyaWFudD1UcnVlYGAuICBTZWUgOnBlcDpgNDg0YCBmb3IgbW9yZQorICAgIGRldGFpbHMuICBCeSBkZWZhdWx0IHR5cGUgdmFyaWFibGVzIGFyZSBpbnZhcmlhbnQuICBBbHRlcm5hdGl2ZWx5LAorICAgIGEgdHlwZSB2YXJpYWJsZSBtYXkgc3BlY2lmeSBhbiB1cHBlciBib3VuZCB1c2luZyBgYGJvdW5kPTx0eXBlPmBgLgorICAgIFRoaXMgbWVhbnMgdGhhdCBhbiBhY3R1YWwgdHlwZSBzdWJzdGl0dXRlZCAoZXhwbGljaXRseSBvciBpbXBsaWNpdGx5KQorICAgIGZvciB0aGUgdHlwZSB2YXJpYWJsZSBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgdGhlIGJvdW5kYXJ5IHR5cGUsCisgICAgc2VlIDpwZXA6YDQ4NGAuCisKKy4uIGNsYXNzOjogVW5pb24KKworICAgVW5pb24gdHlwZTsgYGBVbmlvbltYLCBZXWBgIG1lYW5zIGVpdGhlciBYIG9yIFkuCisKKyAgIFRvIGRlZmluZSBhIHVuaW9uLCB1c2UgZS5nLiBgYFVuaW9uW2ludCwgc3RyXWBgLiAgRGV0YWlsczoKKworICAgKiBUaGUgYXJndW1lbnRzIG11c3QgYmUgdHlwZXMgYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lLgorCisgICAqIFVuaW9ucyBvZiB1bmlvbnMgYXJlIGZsYXR0ZW5lZCwgZS5nLjo6CisKKyAgICAgICBVbmlvbltVbmlvbltpbnQsIHN0cl0sIGZsb2F0XSA9PSBVbmlvbltpbnQsIHN0ciwgZmxvYXRdCisKKyAgICogVW5pb25zIG9mIGEgc2luZ2xlIGFyZ3VtZW50IHZhbmlzaCwgZS5nLjo6CisKKyAgICAgICBVbmlvbltpbnRdID09IGludCAgIyBUaGUgY29uc3RydWN0b3IgYWN0dWFsbHkgcmV0dXJucyBpbnQKKworICAgKiBSZWR1bmRhbnQgYXJndW1lbnRzIGFyZSBza2lwcGVkLCBlLmcuOjoKKworICAgICAgIFVuaW9uW2ludCwgc3RyLCBpbnRdID09IFVuaW9uW2ludCwgc3RyXQorCisgICAqIFdoZW4gY29tcGFyaW5nIHVuaW9ucywgdGhlIGFyZ3VtZW50IG9yZGVyIGlzIGlnbm9yZWQsIGUuZy46OgorCisgICAgICAgVW5pb25baW50LCBzdHJdID09IFVuaW9uW3N0ciwgaW50XQorCisgICAqIElmIDpjbGFzczpgQW55YCBpcyBwcmVzZW50IGl0IGlzIHRoZSBzb2xlIHN1cnZpdm9yLCBlLmcuOjoKKworICAgICAgIFVuaW9uW2ludCwgQW55XSA9PSBBbnkKKworICAgKiBZb3UgY2Fubm90IHN1YmNsYXNzIG9yIGluc3RhbnRpYXRlIGEgdW5pb24uCisKKyAgICogWW91IGNhbm5vdCB3cml0ZSBgYFVuaW9uW1hdW1ldYGAuCisKKyAgICogWW91IGNhbiB1c2UgYGBPcHRpb25hbFtYXWBgIGFzIGEgc2hvcnRoYW5kIGZvciBgYFVuaW9uW1gsIE5vbmVdYGAuCisKKy4uIGNsYXNzOjogT3B0aW9uYWwKKworICAgT3B0aW9uYWwgdHlwZS4KKworICAgYGBPcHRpb25hbFtYXWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBVbmlvbltYLCB0eXBlKE5vbmUpXWBgLgorCisuLiBjbGFzczo6IFR1cGxlCisKKyAgVHVwbGUgdHlwZTsgYGBUdXBsZVtYLCBZXWBgIGlzIHRoZSBpcyB0aGUgdHlwZSBvZiBhIHR1cGxlIG9mIHR3byBpdGVtcworICB3aXRoIHRoZSBmaXJzdCBpdGVtIG9mIHR5cGUgWCBhbmQgdGhlIHNlY29uZCBvZiB0eXBlIFkuCisKKyAgRXhhbXBsZTogYGBUdXBsZVtUMSwgVDJdYGAgaXMgYSB0dXBsZSBvZiB0d28gZWxlbWVudHMgY29ycmVzcG9uZGluZworICB0byB0eXBlIHZhcmlhYmxlcyBUMSBhbmQgVDIuICBgYFR1cGxlW2ludCwgZmxvYXQsIHN0cl1gYCBpcyBhIHR1cGxlCisgIG9mIGFuIGludCwgYSBmbG9hdCBhbmQgYSBzdHJpbmcuCisKKyAgVG8gc3BlY2lmeSBhIHZhcmlhYmxlLWxlbmd0aCB0dXBsZSBvZiBob21vZ2VuZW91cyB0eXBlLAorICB1c2UgbGl0ZXJhbCBlbGxpcHNpcywgZS5nLiBgYFR1cGxlW2ludCwgLi4uXWBgLgorCisuLiBjbGFzczo6IENhbGxhYmxlCisKKyAgIENhbGxhYmxlIHR5cGU7IGBgQ2FsbGFibGVbW2ludF0sIHN0cl1gYCBpcyBhIGZ1bmN0aW9uIG9mIChpbnQpIC0+IHN0ci4KKworICAgVGhlIHN1YnNjcmlwdGlvbiBzeW50YXggbXVzdCBhbHdheXMgYmUgdXNlZCB3aXRoIGV4YWN0bHkgdHdvCisgICB2YWx1ZXM6IHRoZSBhcmd1bWVudCBsaXN0IGFuZCB0aGUgcmV0dXJuIHR5cGUuICBUaGUgYXJndW1lbnQgbGlzdAorICAgbXVzdCBiZSBhIGxpc3Qgb2YgdHlwZXM7IHRoZSByZXR1cm4gdHlwZSBtdXN0IGJlIGEgc2luZ2xlIHR5cGUuCisKKyAgIFRoZXJlIGlzIG5vIHN5bnRheCB0byBpbmRpY2F0ZSBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cywKKyAgIHN1Y2ggZnVuY3Rpb24gdHlwZXMgYXJlIHJhcmVseSB1c2VkIGFzIGNhbGxiYWNrIHR5cGVzLgorICAgYGBDYWxsYWJsZVsuLi4sIFJldHVyblR5cGVdYGAgY291bGQgYmUgdXNlZCB0byB0eXBlIGhpbnQgYSBjYWxsYWJsZQorICAgdGFraW5nIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIGFuZCByZXR1cm5pbmcgYGBSZXR1cm5UeXBlYGAuCisgICBBIHBsYWluIDpjbGFzczpgQ2FsbGFibGVgIGlzIGVxdWl2YWxlbnQgdG8gYGBDYWxsYWJsZVsuLi4sIEFueV1gYC4KKworLi4gY2xhc3M6OiBHZW5lcmljCisKKyAgIEFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGdlbmVyaWMgdHlwZXMuCisKKyAgIEEgZ2VuZXJpYyB0eXBlIGlzIHR5cGljYWxseSBkZWNsYXJlZCBieSBpbmhlcml0aW5nIGZyb20gYW4KKyAgIGluc3RhbnRpYXRpb24gb2YgdGhpcyBjbGFzcyB3aXRoIG9uZSBvciBtb3JlIHR5cGUgdmFyaWFibGVzLgorICAgRm9yIGV4YW1wbGUsIGEgZ2VuZXJpYyBtYXBwaW5nIHR5cGUgbWlnaHQgYmUgZGVmaW5lZCBhczo6CisKKyAgICAgIGNsYXNzIE1hcHBpbmcoR2VuZXJpY1tLVCwgVlRdKToKKyAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBLVCkgLT4gVlQ6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAjIEV0Yy4KKworICAgVGhpcyBjbGFzcyBjYW4gdGhlbiBiZSB1c2VkIGFzIGZvbGxvd3M6OgorCisgICAgICBYID0gVHlwZVZhcignWCcpCisgICAgICBZID0gVHlwZVZhcignWScpCisKKyAgICAgIGRlZiBsb29rdXBfbmFtZShtYXBwaW5nOiBNYXBwaW5nW1gsIFldLCBrZXk6IFgsIGRlZmF1bHQ6IFkpIC0+IFk6CisgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICByZXR1cm4gbWFwcGluZ1trZXldCisgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorCisuLiBjbGFzczo6IEl0ZXJhYmxlKEdlbmVyaWNbVF9jb10pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuSXRlcmFibGVgLgorCisuLiBjbGFzczo6IEl0ZXJhdG9yKEl0ZXJhYmxlW1RfY29dKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgdGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yYC4KKworLi4gY2xhc3M6OiBTdXBwb3J0c0ludAorCisgICAgQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBgYF9faW50X19gYC4KKworLi4gY2xhc3M6OiBTdXBwb3J0c0Zsb2F0CisKKyAgICBBbiBBQkMgd2l0aCBvbmUgYWJzdHJhY3QgbWV0aG9kIGBgX19mbG9hdF9fYGAuCisKKy4uIGNsYXNzOjogU3VwcG9ydHNBYnMKKworICAgIEFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgYGBfX2Fic19fYGAgdGhhdCBpcyBjb3ZhcmlhbnQKKyAgICBpbiBpdHMgcmV0dXJuIHR5cGUuCisKKy4uIGNsYXNzOjogU3VwcG9ydHNSb3VuZAorCisgICAgQW4gQUJDIHdpdGggb25lIGFic3RyYWN0IG1ldGhvZCBgYF9fcm91bmRfX2BgCisgICAgdGhhdCBpcyBjb3ZhcmlhbnQgaW4gaXRzIHJldHVybiB0eXBlLgorCisuLiBjbGFzczo6IFJldmVyc2libGUKKworICAgIEFuIEFCQyB3aXRoIG9uZSBhYnN0cmFjdCBtZXRob2QgYGBfX3JldmVyc2VkX19gYCByZXR1cm5pbmcKKyAgICBhbiBgYEl0ZXJhdG9yW1RfY29dYGAuCisKKy4uIGNsYXNzOjogQ29udGFpbmVyKEdlbmVyaWNbVF9jb10pCisKKyAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Db250YWluZXJgLgorCisuLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YC4KKworLi4gY2xhc3M6OiBNdXRhYmxlU2V0KEFic3RyYWN0U2V0W1RdKQorCisgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNldGAuCisKKy4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLgorCisuLiBjbGFzczo6IE11dGFibGVNYXBwaW5nKE1hcHBpbmdbS1QsIFZUXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYC4KKworLi4gY2xhc3M6OiBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSkKKworICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYC4KKworLi4gY2xhc3M6OiBNdXRhYmxlU2VxdWVuY2UoU2VxdWVuY2VbVF0pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAuCisKKy4uIGNsYXNzOjogQnl0ZVN0cmluZyhTZXF1ZW5jZVtpbnRdKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5CeXRlU3RyaW5nYC4KKworICAgVGhpcyB0eXBlIHJlcHJlc2VudHMgdGhlIHR5cGVzIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YGJ5dGVhcnJheWAsCisgICBhbmQgOmNsYXNzOmBtZW1vcnl2aWV3YC4KKworICAgQXMgYSBzaG9ydGhhbmQgZm9yIHRoaXMgdHlwZSwgOmNsYXNzOmBieXRlc2AgY2FuIGJlIHVzZWQgdG8KKyAgIGFubm90YXRlIGFyZ3VtZW50cyBvZiBhbnkgb2YgdGhlIHR5cGVzIG1lbnRpb25lZCBhYm92ZS4KKworLi4gY2xhc3M6OiBMaXN0KGxpc3QsIE11dGFibGVTZXF1ZW5jZVtUXSkKKworICAgR2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgbGlzdGAuCisgICBVc2VmdWwgZm9yIGFubm90YXRpbmcgcmV0dXJuIHR5cGVzLiBUbyBhbm5vdGF0ZSBhcmd1bWVudHMgaXQgaXMgcHJlZmVycmVkCisgICB0byB1c2UgYWJzdHJhY3QgY29sbGVjdGlvbiB0eXBlcyBzdWNoIGFzIDpjbGFzczpgTWFwcGluZ2AsIDpjbGFzczpgU2VxdWVuY2VgLAorICAgb3IgOmNsYXNzOmBBYnN0cmFjdFNldGAuCisKKyAgIFRoaXMgdHlwZSBtYXkgYmUgdXNlZCBhcyBmb2xsb3dzOjoKKworICAgICAgVCA9IFR5cGVWYXIoJ1QnLCBpbnQsIGZsb2F0KQorCisgICAgICBkZWYgdmVjMih4OiBULCB5OiBUKSAtPiBMaXN0W1RdOgorICAgICAgICAgIHJldHVybiBbeCwgeV0KKworICAgICAgZGVmIHNsaWNlX190b180KHZlY3RvcjogU2VxdWVuY2VbVF0pIC0+IExpc3RbVF06CisgICAgICAgICAgcmV0dXJuIHZlY3RvclswOjRdCisKKy4uIGNsYXNzOjogQWJzdHJhY3RTZXQoc2V0LCBNdXRhYmxlU2V0W1RdKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXRgLgorCisuLiBjbGFzczo6IE1hcHBpbmdWaWV3KFNpemVkLCBJdGVyYWJsZVtUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ1ZpZXdgLgorCisuLiBjbGFzczo6IEtleXNWaWV3KE1hcHBpbmdWaWV3W0tUX2NvXSwgQWJzdHJhY3RTZXRbS1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5LZXlzVmlld2AuCisKKy4uIGNsYXNzOjogSXRlbXNWaWV3KE1hcHBpbmdWaWV3LCBHZW5lcmljW0tUX2NvLCBWVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkl0ZW1zVmlld2AuCisKKy4uIGNsYXNzOjogVmFsdWVzVmlldyhNYXBwaW5nVmlld1tWVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlZhbHVlc1ZpZXdgLgorCisuLiBjbGFzczo6IERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBkaWN0YC4KKyAgIFRoZSB1c2FnZSBvZiB0aGlzIHR5cGUgaXMgYXMgZm9sbG93czo6CisKKyAgICAgIGRlZiBnZXRfcG9zaXRpb25faW5faW5kZXgod29yZF9saXN0OiBEaWN0W3N0ciwgaW50XSwgd29yZDogc3RyKSAtPiBpbnQ6CisgICAgICAgICAgcmV0dXJuIHdvcmRfbGlzdFt3b3JkXQorCisuLiBjbGFzczo6IEdlbmVyYXRvcihJdGVyYXRvcltUX2NvXSwgR2VuZXJpY1tUX2NvLCBUX2NvbnRyYSwgVl9jb10pCisKKy4uIGNsYXNzOjogaW8KKworICAgV3JhcHBlciBuYW1lc3BhY2UgZm9yIEkvTyBzdHJlYW0gdHlwZXMuCisKKyAgIFRoaXMgZGVmaW5lcyB0aGUgZ2VuZXJpYyB0eXBlIGBgSU9bQW55U3RyXWBgIGFuZCBhbGlhc2VzIGBgVGV4dElPYGAKKyAgIGFuZCBgYEJpbmFyeUlPYGAgZm9yIHJlc3BlY3RpdmVseSBgYElPW3N0cl1gYCBhbmQgYGBJT1tieXRlc11gYC4KKyAgIFRoZXNlIHJlcHJlc2VudGluZyB0aGUgdHlwZXMgb2YgSS9PIHN0cmVhbXMgc3VjaCBhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YG9wZW5gLgorCisuLiBjbGFzczo6IHJlCisKKyAgIFdyYXBwZXIgbmFtZXNwYWNlIGZvciByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdHlwZXMuCisKKyAgIFRoaXMgZGVmaW5lcyB0aGUgdHlwZSBhbGlhc2VzIGBgUGF0dGVybmBgIGFuZCBgYE1hdGNoYGAgd2hpY2gKKyAgIGNvcnJlc3BvbmQgdG8gdGhlIHJldHVybiB0eXBlcyBmcm9tIDpmdW5jOmByZS5jb21waWxlYCBhbmQKKyAgIDpmdW5jOmByZS5tYXRjaGAuICBUaGVzZSB0eXBlcyAoYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucykKKyAgIGFyZSBnZW5lcmljIGluIGBgQW55U3RyYGAgYW5kIGNhbiBiZSBtYWRlIHNwZWNpZmljIGJ5IHdyaXRpbmcKKyAgIGBgUGF0dGVybltzdHJdYGAsIGBgUGF0dGVybltieXRlc11gYCwgYGBNYXRjaFtzdHJdYGAsIG9yCisgICBgYE1hdGNoW2J5dGVzXWBgLgorCisuLiBmdW5jdGlvbjo6IE5hbWVkVHVwbGUodHlwZW5hbWUsIGZpZWxkcykKKworICAgVHlwZWQgdmVyc2lvbiBvZiBuYW1lZHR1cGxlLgorCisgICBVc2FnZTo6CisKKyAgICAgICBFbXBsb3llZSA9IHR5cGluZy5OYW1lZFR1cGxlKCdFbXBsb3llZScsIFsoJ25hbWUnLCBzdHIpLCAnaWQnLCBpbnQpXSkKKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKKworICAgICAgIEVtcGxveWVlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnRW1wbG95ZWUnLCBbJ25hbWUnLCAnaWQnXSkKKworICAgVGhlIHJlc3VsdGluZyBjbGFzcyBoYXMgb25lIGV4dHJhIGF0dHJpYnV0ZTogX2ZpZWxkX3R5cGVzLAorICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcworICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgQVBJLikKKworLi4gZnVuY3Rpb246OiBjYXN0KHR5cCwgdmFsKQorCisgICBDYXN0IGEgdmFsdWUgdG8gYSB0eXBlLgorCisgICBUaGlzIHJldHVybnMgdGhlIHZhbHVlIHVuY2hhbmdlZC4gIFRvIHRoZSB0eXBlIGNoZWNrZXIgdGhpcworICAgc2lnbmFscyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBkZXNpZ25hdGVkIHR5cGUsIGJ1dCBhdAorICAgcnVudGltZSB3ZSBpbnRlbnRpb25hbGx5IGRvbid0IGNoZWNrIGFueXRoaW5nICh3ZSB3YW50IHRoaXMKKyAgIHRvIGJlIGFzIGZhc3QgYXMgcG9zc2libGUpLgorCisuLiBmdW5jdGlvbjo6IGdldF90eXBlX2hpbnRzKG9iaikKKworICAgUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKworICAgVGhpcyBpcyBvZnRlbiB0aGUgc2FtZSBhcyBgYG9iai5fX2Fubm90YXRpb25zX19gYCwgYnV0IGl0IGhhbmRsZXMKKyAgIGZvcndhcmQgcmVmZXJlbmNlcyBlbmNvZGVkIGFzIHN0cmluZyBsaXRlcmFscywgYW5kIGlmIG5lY2Vzc2FyeQorICAgYWRkcyBgYE9wdGlvbmFsW3RdYGAgaWYgYSBkZWZhdWx0IHZhbHVlIGVxdWFsIHRvIE5vbmUgaXMgc2V0LgorCisuLiBkZWNvcmF0b3I6OiBub190eXBlX2NoZWNrKGFyZykKKworICAgRGVjb3JhdG9yIHRvIGluZGljYXRlIHRoYXQgYW5ub3RhdGlvbnMgYXJlIG5vdCB0eXBlIGhpbnRzLgorCisgICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNsYXNzIG9yIGZ1bmN0aW9uOyBpZiBpdCBpcyBhIGNsYXNzLCBpdAorICAgYXBwbGllcyByZWN1cnNpdmVseSB0byBhbGwgbWV0aG9kcyBkZWZpbmVkIGluIHRoYXQgY2xhc3MgKGJ1dCBub3QKKyAgIHRvIG1ldGhvZHMgZGVmaW5lZCBpbiBpdHMgc3VwZXJjbGFzc2VzIG9yIHN1YmNsYXNzZXMpLgorCisgICBUaGlzIG11dGF0ZXMgdGhlIGZ1bmN0aW9uKHMpIGluIHBsYWNlLgorCisuLiBkZWNvcmF0b3I6OiBub190eXBlX2NoZWNrX2RlY29yYXRvcihkZWNvcmF0b3IpCisKKyAgIERlY29yYXRvciB0byBnaXZlIGFub3RoZXIgZGVjb3JhdG9yIHRoZSA6ZnVuYzpgbm9fdHlwZV9jaGVja2AgZWZmZWN0LgorCisgICBUaGlzIHdyYXBzIHRoZSBkZWNvcmF0b3Igd2l0aCBzb21ldGhpbmcgdGhhdCB3cmFwcyB0aGUgZGVjb3JhdGVkCisgICBmdW5jdGlvbiBpbiA6ZnVuYzpgbm9fdHlwZV9jaGVja2AuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggM2IzZDNhMC4uMTQzMGQ5YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTUsOCArMTUsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDYuMy4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTE2Niw2ICsxNjYsNiBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMy4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjMuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAppbmRleCA0OGVlZmU5Li4xYjI3MWM4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMTk4LDcgKzE5OCw3IEBACiB0aGUgKm5ld19jYWxsYWJsZSogYXJndW1lbnQgdG8gOmZ1bmM6YHBhdGNoYC4KIAogCi0uLiBjbGFzczo6IE1vY2soc3BlYz1Ob25lLCBzaWRlX2VmZmVjdD1Ob25lLCByZXR1cm5fdmFsdWU9REVGQVVMVCwgd3JhcHM9Tm9uZSwgbmFtZT1Ob25lLCBzcGVjX3NldD1Ob25lLCAqKmt3YXJncykKKy4uIGNsYXNzOjogTW9jayhzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MpCiAKICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBNb2NrYCBvYmplY3QuIDpjbGFzczpgTW9ja2AgdGFrZXMgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMKICAgICB0aGF0IHNwZWNpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgTW9jayBvYmplY3Q6CkBAIC0yMzUsNiArMjM1LDEyIEBACiAgICAgICB0aGlzIGlzIGEgbmV3IE1vY2sgKGNyZWF0ZWQgb24gZmlyc3QgYWNjZXNzKS4gU2VlIHRoZQogICAgICAgOmF0dHI6YHJldHVybl92YWx1ZWAgYXR0cmlidXRlLgogCisgICAgKiAqdW5zYWZlKjogQnkgZGVmYXVsdCBpZiBhbnkgYXR0cmlidXRlIHN0YXJ0cyB3aXRoICphc3NlcnQqIG9yCisgICAgICAqYXNzcmV0KiB3aWxsIHJhaXNlIGFuIDpleGM6YEF0dHJpYnV0ZUVycm9yYC4gUGFzc2luZyBgYHVuc2FmZT1UcnVlYGAKKyAgICAgIHdpbGwgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIGF0dHJpYnV0ZXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAgICAgKiAqd3JhcHMqOiBJdGVtIGZvciB0aGUgbW9jayBvYmplY3QgdG8gd3JhcC4gSWYgKndyYXBzKiBpcyBub3QgTm9uZSB0aGVuCiAgICAgICBjYWxsaW5nIHRoZSBNb2NrIHdpbGwgcGFzcyB0aGUgY2FsbCB0aHJvdWdoIHRvIHRoZSB3cmFwcGVkIG9iamVjdAogICAgICAgKHJldHVybmluZyB0aGUgcmVhbCByZXN1bHQpLiBBdHRyaWJ1dGUgYWNjZXNzIG9uIHRoZSBtb2NrIHdpbGwgcmV0dXJuIGEKQEAgLTMxNSw2ICszMjEsMjAgQEAKICAgICAgICAgICAgID4+PiBjYWxscyA9IFtjYWxsKDQpLCBjYWxsKDIpLCBjYWxsKDMpXQogICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPVRydWUpCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoZSBtb2NrIHdhcyBuZXZlciBjYWxsZWQuCisKKyAgICAgICAgICAgID4+PiBtID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICA+Pj4gb2JqID0gbS5oZWxsbygpCisgICAgICAgICAgICA+Pj4gbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdoZWxsbycgdG8gbm90IGhhdmUgYmVlbiBjYWxsZWQuIENhbGxlZCAxIHRpbWVzLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAKICAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKIApAQCAtMTAzMiw2ICsxMDUyLDEyIEBACiAgICAgZGVmYXVsdCBiZWNhdXNlIGl0IGNhbiBiZSBkYW5nZXJvdXMuIFdpdGggaXQgc3dpdGNoZWQgb24geW91IGNhbiB3cml0ZQogICAgIHBhc3NpbmcgdGVzdHMgYWdhaW5zdCBBUElzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QhCiAKKyAgICAuLiBub3RlOjoKKworICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgICAgICBJZiB5b3UgYXJlIHBhdGNoaW5nIGJ1aWx0aW5zIGluIGEgbW9kdWxlIHRoZW4geW91IGRvbid0CisgICAgICAgICAgIG5lZWQgdG8gcGFzcyBgYGNyZWF0ZT1UcnVlYGAsIGl0IHdpbGwgYmUgYWRkZWQgYnkgZGVmYXVsdC4KKwogICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgOmNsYXNzOmBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQogICAgIGRlY29yYXRpbmcgZWFjaCB0ZXN0IG1ldGhvZCBpbiB0aGUgY2xhc3MuIFRoaXMgcmVkdWNlcyB0aGUgYm9pbGVycGxhdGUKICAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gOmZ1bmM6YHBhdGNoYCBmaW5kcwpAQCAtMTQwMyw2ICsxNDI5LDIyIEBACiAgICAgU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIE9ubHkgc3RvcHMgcGF0Y2hlcyBzdGFydGVkIHdpdGggYGBzdGFydGBgLgogCiAKKy4uIF9wYXRjaC1idWlsdGluczoKKworcGF0Y2ggYnVpbHRpbnMKK35+fn5+fn5+fn5+fn5+CitZb3UgY2FuIHBhdGNoIGFueSBidWlsdGlucyB3aXRoaW4gYSBtb2R1bGUuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBwYXRjaGVzCitidWlsdGluIDpmdW5jOmBvcmRgOgorCisgICAgPj4+IEBwYXRjaCgnX19tYWluX18ub3JkJykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19vcmQpOgorICAgIC4uLiAgICAgbW9ja19vcmQucmV0dXJuX3ZhbHVlID0gMTAxCisgICAgLi4uICAgICBwcmludChvcmQoJ2MnKSkKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisgICAgMTAxCisKKwogVEVTVF9QUkVGSVgKIH5+fn5+fn5+fn5+CiAKQEAgLTE1ODcsNyArMTYyOSw3IEBACiAqIENvbnRleHQgbWFuYWdlcjogYGBfX2VudGVyX19gYCBhbmQgYGBfX2V4aXRfX2BgCiAqIFVuYXJ5IG51bWVyaWMgbWV0aG9kczogYGBfX25lZ19fYGAsIGBgX19wb3NfX2BgIGFuZCBgYF9faW52ZXJ0X19gYAogKiBUaGUgbnVtZXJpYyBtZXRob2RzIChpbmNsdWRpbmcgcmlnaHQgaGFuZCBhbmQgaW4tcGxhY2UgdmFyaWFudHMpOgotICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fZGl2X19gYCwgYGBfX3RydWVkaXZfX2BgLAorICBgYF9fYWRkX19gYCwgYGBfX3N1Yl9fYGAsIGBgX19tdWxfX2BgLCBgYF9fbWF0bXVsX19gYCwgYGBfX2Rpdl9fYGAsIGBgX190cnVlZGl2X19gYCwKICAgYGBfX2Zsb29yZGl2X19gYCwgYGBfX21vZF9fYGAsIGBgX19kaXZtb2RfX2BgLCBgYF9fbHNoaWZ0X19gYCwKICAgYGBfX3JzaGlmdF9fYGAsIGBgX19hbmRfX2BgLCBgYF9feG9yX19gYCwgYGBfX29yX19gYCwgYW5kIGBgX19wb3dfX2BgCiAqIE51bWVyaWMgY29udmVyc2lvbiBtZXRob2RzOiBgYF9fY29tcGxleF9fYGAsIGBgX19pbnRfX2BgLCBgYF9fZmxvYXRfX2BgCkBAIC0yMDA2LDcgKzIwNDgsNyBAQAogICAgICAgVGhlIG1vY2sgb2YgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGAgY2hhbmdlZCB0byBjb25zdW1lICpyZWFkX2RhdGEqIHJhdGhlcgogICAgICAgdGhhbiByZXR1cm5pbmcgaXQgb24gZWFjaCBjYWxsLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC40CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgKnJlYWRfZGF0YSogaXMgbm93IHJlc2V0IG9uIGVhY2ggY2FsbCB0byB0aGUgKm1vY2sqLgogCiBVc2luZyA6ZnVuYzpgb3BlbmAgYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgYSBncmVhdCB3YXkgdG8gZW5zdXJlIHlvdXIgZmlsZSBoYW5kbGVzCkBAIC0yMDIzLDcgKzIwNjUsNyBAQAogZW5vdWdoIHRoYXQgYSBoZWxwZXIgZnVuY3Rpb24gaXMgdXNlZnVsLgogCiAgICAgPj4+IG0gPSBtb2NrX29wZW4oKQotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSwgY3JlYXRlPVRydWUpOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbSk6CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycsICd3JykgYXMgaDoKICAgICAuLi4gICAgICAgICBoLndyaXRlKCdzb21lIHN0dWZmJykKICAgICAuLi4KQEAgLTIwMzgsNyArMjA4MCw3IEBACiAKIEFuZCBmb3IgcmVhZGluZyBmaWxlczoKIAotICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJyksIGNyZWF0ZT1UcnVlKSBhcyBtOgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5vcGVuJywgbW9ja19vcGVuKHJlYWRfZGF0YT0nYmliYmxlJykpIGFzIG06CiAgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6CiAgICAgLi4uICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKICAgICAuLi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCAxOTMwZjc4Li5kM2EzNjQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC0yMTQsOSArMjE0LDE2IEBACiAKICAgIFN0b3AgdGhlIHRlc3QgcnVuIG9uIHRoZSBmaXJzdCBlcnJvciBvciBmYWlsdXJlLgogCisuLiBjbWRvcHRpb246OiAtLWxvY2FscworCisgICBTaG93IGxvY2FsIHZhcmlhYmxlcyBpbiB0cmFjZWJhY2tzLgorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgIFRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBgYC1iYGAsIGBgLWNgYCBhbmQgYGAtZmBgIHdlcmUgYWRkZWQuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgVGhlIGNvbW1hbmQtbGluZSBvcHRpb24gYGAtLWxvY2Fsc2BgLgorCiBUaGUgY29tbWFuZCBsaW5lIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRlc3QgZGlzY292ZXJ5LCBmb3IgcnVubmluZyBhbGwgb2YgdGhlCiB0ZXN0cyBpbiBhIHByb2plY3Qgb3IganVzdCBhIHN1YnNldC4KIApAQCAtMTU0MSw2ICsxNTQ4LDIwIEBACiAgICA6ZGF0YTpgdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXJgLiAgVXNpbmcgYSBzdWJjbGFzcyBvciBpbnN0YW5jZSwgaG93ZXZlciwKICAgIGFsbG93cyBjdXN0b21pemF0aW9uIG9mIHNvbWUgY29uZmlndXJhYmxlIHByb3BlcnRpZXMuCiAKKyAgIDpjbGFzczpgVGVzdExvYWRlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcnJvcnMKKworICAgICAgQSBsaXN0IG9mIHRoZSBub24tZmF0YWwgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIGxvYWRpbmcgdGVzdHMuIE5vdCByZXNldAorICAgICAgYnkgdGhlIGxvYWRlciBhdCBhbnkgcG9pbnQuIEZhdGFsIGVycm9ycyBhcmUgc2lnbmFsbGVkIGJ5IHRoZSByZWxldmFudAorICAgICAgYSBtZXRob2QgcmFpc2luZyBhbiBleGNlcHRpb24gdG8gdGhlIGNhbGxlci4gTm9uLWZhdGFsIGVycm9ycyBhcmUgYWxzbworICAgICAgaW5kaWNhdGVkIGJ5IGEgc3ludGhldGljIHRlc3QgdGhhdCB3aWxsIHJhaXNlIHRoZSBvcmlnaW5hbCBlcnJvciB3aGVuCisgICAgICBydW4uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKICAgIDpjbGFzczpgVGVzdExvYWRlcmAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogCkBAIC0xNTU2LDcgKzE1NzcsNyBAQAogICAgICAgY2FzZSBpcyBjcmVhdGVkIGZvciB0aGF0IG1ldGhvZCBpbnN0ZWFkLgogCiAKLSAgIC4uIG1ldGhvZDo6IGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKQorICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49Tm9uZSkKIAogICAgICAgUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiB0aGUgZ2l2ZW4gbW9kdWxlLiBUaGlzCiAgICAgICBtZXRob2Qgc2VhcmNoZXMgKm1vZHVsZSogZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tIDpjbGFzczpgVGVzdENhc2VgIGFuZApAQCAtMTU3MywxMSArMTU5NCwxOCBAQAogCiAgICAgICBJZiBhIG1vZHVsZSBwcm92aWRlcyBhIGBgbG9hZF90ZXN0c2BgIGZ1bmN0aW9uIGl0IHdpbGwgYmUgY2FsbGVkIHRvCiAgICAgICBsb2FkIHRoZSB0ZXN0cy4gVGhpcyBhbGxvd3MgbW9kdWxlcyB0byBjdXN0b21pemUgdGVzdCBsb2FkaW5nLgotICAgICAgVGhpcyBpcyB0aGUgYGxvYWRfdGVzdHMgcHJvdG9jb2xgXy4KKyAgICAgIFRoaXMgaXMgdGhlIGBsb2FkX3Rlc3RzIHByb3RvY29sYF8uICBUaGUgKnBhdHRlcm4qIGFyZ3VtZW50IGlzIHBhc3NlZCBhcworICAgICAgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIGBgbG9hZF90ZXN0c2BgLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgICAgU3VwcG9ydCBmb3IgYGBsb2FkX3Rlc3RzYGAgYWRkZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBUaGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsICp1c2VfbG9hZF90ZXN0cyogZGVmYXVsdCBhcmd1bWVudCBpcworICAgICAgICAgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCwgYWx0aG91Z2ggaXQgaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIGJhY2t3YXJkCisgICAgICAgICBjb21wYXRpYmlsaXR5LiAgVGhlIG1ldGhvZCBhbHNvIG5vdyBhY2NlcHRzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgICAgICAgICAqcGF0dGVybiogd2hpY2ggaXMgcGFzc2VkIHRvIGBgbG9hZF90ZXN0c2BgIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4KKwogCiAgICAuLiBtZXRob2Q6OiBsb2FkVGVzdHNGcm9tTmFtZShuYW1lLCBtb2R1bGU9Tm9uZSkKIApAQCAtMTYwMyw2ICsxNjMxLDEyIEBACiAKICAgICAgIFRoZSBtZXRob2Qgb3B0aW9uYWxseSByZXNvbHZlcyAqbmFtZSogcmVsYXRpdmUgdG8gdGhlIGdpdmVuICptb2R1bGUqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgSWYgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIG9yIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvY2N1cnMgd2hpbGUgdHJhdmVyc2luZworICAgICAgKm5hbWUqIHRoZW4gYSBzeW50aGV0aWMgdGVzdCB0aGF0IHJhaXNlcyB0aGF0IGVycm9yIHdoZW4gcnVuIHdpbGwgYmUKKyAgICAgIHJldHVybmVkLiBUaGVzZSBlcnJvcnMgYXJlIGluY2x1ZGVkIGluIHRoZSBlcnJvcnMgYWNjdW11bGF0ZWQgYnkKKyAgICAgIHNlbGYuZXJyb3JzLgorCiAKICAgIC4uIG1ldGhvZDo6IGxvYWRUZXN0c0Zyb21OYW1lcyhuYW1lcywgbW9kdWxlPU5vbmUpCiAKQEAgLTE2MjksMTggKzE2NjMsMjIgQEAKICAgICAgIHRoZSBzdGFydCBkaXJlY3RvcnkgaXMgbm90IHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IHRoZW4gdGhlIHRvcCBsZXZlbAogICAgICAgZGlyZWN0b3J5IG11c3QgYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkuCiAKLSAgICAgIElmIGltcG9ydGluZyBhIG1vZHVsZSBmYWlscywgZm9yIGV4YW1wbGUgZHVlIHRvIGEgc3ludGF4IGVycm9yLCB0aGVuIHRoaXMKLSAgICAgIHdpbGwgYmUgcmVjb3JkZWQgYXMgYSBzaW5nbGUgZXJyb3IgYW5kIGRpc2NvdmVyeSB3aWxsIGNvbnRpbnVlLiAgSWYgdGhlCi0gICAgICBpbXBvcnQgZmFpbHVyZSBpcyBkdWUgdG8gOmV4YzpgU2tpcFRlc3RgIGJlaW5nIHJhaXNlZCwgaXQgd2lsbCBiZSByZWNvcmRlZAotICAgICAgYXMgYSBza2lwIGluc3RlYWQgb2YgYW4gZXJyb3IuCisgICAgICBJZiBpbXBvcnRpbmcgYSBtb2R1bGUgZmFpbHMsIGZvciBleGFtcGxlIGR1ZSB0byBhIHN5bnRheCBlcnJvciwgdGhlbgorICAgICAgdGhpcyB3aWxsIGJlIHJlY29yZGVkIGFzIGEgc2luZ2xlIGVycm9yIGFuZCBkaXNjb3Zlcnkgd2lsbCBjb250aW51ZS4gIElmCisgICAgICB0aGUgaW1wb3J0IGZhaWx1cmUgaXMgZHVlIHRvIDpleGM6YFNraXBUZXN0YCBiZWluZyByYWlzZWQsIGl0IHdpbGwgYmUKKyAgICAgIHJlY29yZGVkIGFzIGEgc2tpcCBpbnN0ZWFkIG9mIGFuIGVycm9yLgogCi0gICAgICBJZiBhIHRlc3QgcGFja2FnZSBuYW1lIChkaXJlY3Rvcnkgd2l0aCA6ZmlsZTpgX19pbml0X18ucHlgKSBtYXRjaGVzIHRoZQotICAgICAgcGF0dGVybiB0aGVuIHRoZSBwYWNrYWdlIHdpbGwgYmUgY2hlY2tlZCBmb3IgYSBgYGxvYWRfdGVzdHNgYAotICAgICAgZnVuY3Rpb24uIElmIHRoaXMgZXhpc3RzIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCAqbG9hZGVyKiwgKnRlc3RzKiwKLSAgICAgICpwYXR0ZXJuKi4KKyAgICAgIElmIGEgcGFja2FnZSAoYSBkaXJlY3RvcnkgY29udGFpbmluZyBhIGZpbGUgbmFtZWQgOmZpbGU6YF9faW5pdF9fLnB5YCkgaXMKKyAgICAgIGZvdW5kLCB0aGUgcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZm9yIGEgYGBsb2FkX3Rlc3RzYGAgZnVuY3Rpb24uIElmIHRoaXMKKyAgICAgIGV4aXN0cyB0aGVuIGl0IHdpbGwgYmUgY2FsbGVkCisgICAgICBgYHBhY2thZ2UubG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKWBgLiBUZXN0IGRpc2NvdmVyeSB0YWtlcyBjYXJlCisgICAgICB0byBlbnN1cmUgdGhhdCBhIHBhY2thZ2UgaXMgb25seSBjaGVja2VkIGZvciB0ZXN0cyBvbmNlIGR1cmluZyBhbgorICAgICAgaW52b2NhdGlvbiwgZXZlbiBpZiB0aGUgbG9hZF90ZXN0cyBmdW5jdGlvbiBpdHNlbGYgY2FsbHMKKyAgICAgIGBgbG9hZGVyLmRpc2NvdmVyYGAuCiAKLSAgICAgIElmIGBgbG9hZF90ZXN0c2BgIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICpub3QqIHJlY3Vyc2UgaW50byB0aGUgcGFja2FnZSwKLSAgICAgIGBgbG9hZF90ZXN0c2BgIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIGFsbCB0ZXN0cyBpbiB0aGUgcGFja2FnZS4KKyAgICAgIElmIGBgbG9hZF90ZXN0c2BgIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICpub3QqIHJlY3Vyc2UgaW50byB0aGUKKyAgICAgIHBhY2thZ2UsIGBgbG9hZF90ZXN0c2BgIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIGFsbCB0ZXN0cyBpbiB0aGUKKyAgICAgIHBhY2thZ2UuCiAKICAgICAgIFRoZSBwYXR0ZXJuIGlzIGRlbGliZXJhdGVseSBub3Qgc3RvcmVkIGFzIGEgbG9hZGVyIGF0dHJpYnV0ZSBzbyB0aGF0CiAgICAgICBwYWNrYWdlcyBjYW4gY29udGludWUgZGlzY292ZXJ5IHRoZW1zZWx2ZXMuICp0b3BfbGV2ZWxfZGlyKiBpcyBzdG9yZWQgc28KQEAgLTE2NTksNiArMTY5NywxMSBAQAogICAgICAgICAgICB0aGUgc2FtZSBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtJ3Mgb3JkZXJpbmcgaXMgbm90CiAgICAgICAgICAgIGRlcGVuZGVudCBvbiBmaWxlIG5hbWUuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAgICBGb3VuZCBwYWNrYWdlcyBhcmUgbm93IGNoZWNrZWQgZm9yIGBgbG9hZF90ZXN0c2BgIHJlZ2FyZGxlc3Mgb2YKKyAgICAgICAgIHdoZXRoZXIgdGhlaXIgcGF0aCBtYXRjaGVzICpwYXR0ZXJuKiwgYmVjYXVzZSBpdCBpcyBpbXBvc3NpYmxlIGZvcgorICAgICAgICAgYSBwYWNrYWdlIG5hbWUgdG8gbWF0Y2ggdGhlIGRlZmF1bHQgcGF0dGVybi4KKwogCiAgICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgb2YgYSA6Y2xhc3M6YFRlc3RMb2FkZXJgIGNhbiBiZSBjb25maWd1cmVkIGVpdGhlciBieQogICAgc3ViY2xhc3Npbmcgb3IgYXNzaWdubWVudCBvbiBhbiBpbnN0YW5jZToKQEAgLTE3NDEsMTIgKzE3ODQsMTAgQEAKIAogICAgICAgU2V0IHRvIGBgVHJ1ZWBgIHdoZW4gdGhlIGV4ZWN1dGlvbiBvZiB0ZXN0cyBzaG91bGQgc3RvcCBieSA6bWV0aDpgc3RvcGAuCiAKLQogICAgLi4gYXR0cmlidXRlOjogdGVzdHNSdW4KIAogICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiB0ZXN0cyBydW4gc28gZmFyLgogCi0KICAgIC4uIGF0dHJpYnV0ZTo6IGJ1ZmZlcgogCiAgICAgICBJZiBzZXQgdG8gdHJ1ZSwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIHdpbGwgYmUgYnVmZmVyZWQgaW4gYmV0d2VlbgpAQCAtMTc1Niw3ICsxNzk3LDYgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLQogICAgLi4gYXR0cmlidXRlOjogZmFpbGZhc3QKIAogICAgICAgSWYgc2V0IHRvIHRydWUgOm1ldGg6YHN0b3BgIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBmaXJzdCBmYWlsdXJlIG9yIGVycm9yLApAQCAtMTc2NCw2ICsxODA0LDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBhdHRyaWJ1dGU6OiB0Yl9sb2NhbHMKKworICAgICAgSWYgc2V0IHRvIHRydWUgdGhlbiBsb2NhbCB2YXJpYWJsZXMgd2lsbCBiZSBzaG93biBpbiB0cmFjZWJhY2tzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogICAgLi4gbWV0aG9kOjogd2FzU3VjY2Vzc2Z1bCgpCiAKQEAgLTE3NzQsNyArMTgxOSw2IEBACiAgICAgICAgICBSZXR1cm5zIGBgRmFsc2VgYCBpZiB0aGVyZSB3ZXJlIGFueSA6YXR0cjpgdW5leHBlY3RlZFN1Y2Nlc3Nlc2AKICAgICAgICAgIGZyb20gdGVzdHMgbWFya2VkIHdpdGggdGhlIDpmdW5jOmBleHBlY3RlZEZhaWx1cmVgIGRlY29yYXRvci4KIAotCiAgICAuLiBtZXRob2Q6OiBzdG9wKCkKIAogICAgICAgVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCB0byBzaWduYWwgdGhhdCB0aGUgc2V0IG9mIHRlc3RzIGJlaW5nIHJ1biBzaG91bGQKQEAgLTE5MDYsMTIgKzE5NTAsMTQgQEAKIAogCiAuLiBjbGFzczo6IFRleHRUZXN0UnVubmVyKHN0cmVhbT1Ob25lLCBkZXNjcmlwdGlvbnM9VHJ1ZSwgdmVyYm9zaXR5PTEsIGZhaWxmYXN0PUZhbHNlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPUZhbHNlLCByZXN1bHRjbGFzcz1Ob25lLCB3YXJuaW5ncz1Ob25lLCAqLCB0Yl9sb2NhbHM9RmFsc2UpCiAKICAgIEEgYmFzaWMgdGVzdCBydW5uZXIgaW1wbGVtZW50YXRpb24gdGhhdCBvdXRwdXRzIHJlc3VsdHMgdG8gYSBzdHJlYW0uIElmICpzdHJlYW0qCiAgICBpcyBgYE5vbmVgYCwgdGhlIGRlZmF1bHQsIDpkYXRhOmBzeXMuc3RkZXJyYCBpcyB1c2VkIGFzIHRoZSBvdXRwdXQgc3RyZWFtLiBUaGlzIGNsYXNzCiAgICBoYXMgYSBmZXcgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMsIGJ1dCBpcyBlc3NlbnRpYWxseSB2ZXJ5IHNpbXBsZS4gIEdyYXBoaWNhbAotICAgYXBwbGljYXRpb25zIHdoaWNoIHJ1biB0ZXN0IHN1aXRlcyBzaG91bGQgcHJvdmlkZSBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb25zLgorICAgYXBwbGljYXRpb25zIHdoaWNoIHJ1biB0ZXN0IHN1aXRlcyBzaG91bGQgcHJvdmlkZSBhbHRlcm5hdGUgaW1wbGVtZW50YXRpb25zLiBTdWNoCisgICBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGFjY2VwdCBgYCoqa3dhcmdzYGAgYXMgdGhlIGludGVyZmFjZSB0byBjb25zdHJ1Y3QgcnVubmVycworICAgY2hhbmdlcyB3aGVuIGZlYXR1cmVzIGFyZSBhZGRlZCB0byB1bml0dGVzdC4KIAogICAgQnkgZGVmYXVsdCB0aGlzIHJ1bm5lciBzaG93cyA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLAogICAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AsIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kCkBAIC0xOTMwLDYgKzE5NzYsOSBAQAogICAgICAgVGhlIGRlZmF1bHQgc3RyZWFtIGlzIHNldCB0byA6ZGF0YTpgc3lzLnN0ZGVycmAgYXQgaW5zdGFudGlhdGlvbiB0aW1lIHJhdGhlcgogICAgICAgdGhhbiBpbXBvcnQgdGltZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHRoZSB0Yl9sb2NhbHMgcGFyYW1ldGVyLgorCiAgICAuLiBtZXRob2Q6OiBfbWFrZVJlc3VsdCgpCiAKICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGluc3RhbmNlIG9mIGBgVGVzdFJlc3VsdGBgIHVzZWQgYnkgOm1ldGg6YHJ1bmAuCkBAIC0yMDI3LDcgKzIwNzYsMTAgQEAKIElmIGEgdGVzdCBtb2R1bGUgZGVmaW5lcyBgYGxvYWRfdGVzdHNgYCBpdCB3aWxsIGJlIGNhbGxlZCBieQogOm1ldGg6YFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZWAgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czo6CiAKLSAgICBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIE5vbmUpCisgICAgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBwYXR0ZXJuKQorCit3aGVyZSAqcGF0dGVybiogaXMgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggZnJvbSBgYGxvYWRUZXN0c0Zyb21Nb2R1bGVgYC4gIEl0CitkZWZhdWx0cyB0byBgYE5vbmVgYC4KIAogSXQgc2hvdWxkIHJldHVybiBhIDpjbGFzczpgVGVzdFN1aXRlYC4KIApAQCAtMjA0OSwyMSArMjEwMSwxMiBAQAogICAgICAgICAgICAgc3VpdGUuYWRkVGVzdHModGVzdHMpCiAgICAgICAgIHJldHVybiBzdWl0ZQogCi1JZiBkaXNjb3ZlcnkgaXMgc3RhcnRlZCwgZWl0aGVyIGZyb20gdGhlIGNvbW1hbmQgbGluZSBvciBieSBjYWxsaW5nCi06bWV0aDpgVGVzdExvYWRlci5kaXNjb3ZlcmAsIHdpdGggYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhIHBhY2thZ2UKLW5hbWUgdGhlbiB0aGUgcGFja2FnZSA6ZmlsZTpgX19pbml0X18ucHlgIHdpbGwgYmUgY2hlY2tlZCBmb3IgYGBsb2FkX3Rlc3RzYGAuCi0KLS4uIG5vdGU6OgotCi0gICBUaGUgZGVmYXVsdCBwYXR0ZXJuIGlzIGBgJ3Rlc3QqLnB5J2BgLiBUaGlzIG1hdGNoZXMgYWxsIFB5dGhvbiBmaWxlcwotICAgdGhhdCBzdGFydCB3aXRoIGBgJ3Rlc3QnYGAgYnV0ICp3b24ndCogbWF0Y2ggYW55IHRlc3QgZGlyZWN0b3JpZXMuCi0KLSAgIEEgcGF0dGVybiBsaWtlIGBgJ3Rlc3QqJ2BgIHdpbGwgbWF0Y2ggdGVzdCBwYWNrYWdlcyBhcyB3ZWxsIGFzCi0gICBtb2R1bGVzLgotCi1JZiB0aGUgcGFja2FnZSA6ZmlsZTpgX19pbml0X18ucHlgIGRlZmluZXMgYGBsb2FkX3Rlc3RzYGAgdGhlbiBpdCB3aWxsIGJlCi1jYWxsZWQgYW5kIGRpc2NvdmVyeSBub3QgY29udGludWVkIGludG8gdGhlIHBhY2thZ2UuIGBgbG9hZF90ZXN0c2BgCi1pcyBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czo6CitJZiBkaXNjb3ZlcnkgaXMgc3RhcnRlZCBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgcGFja2FnZSwgZWl0aGVyIGZyb20gdGhlCitjb21tYW5kIGxpbmUgb3IgYnkgY2FsbGluZyA6bWV0aDpgVGVzdExvYWRlci5kaXNjb3ZlcmAsIHRoZW4gdGhlIHBhY2thZ2UKKzpmaWxlOmBfX2luaXRfXy5weWAgd2lsbCBiZSBjaGVja2VkIGZvciBgYGxvYWRfdGVzdHNgYC4gIElmIHRoYXQgZnVuY3Rpb24gZG9lcworbm90IGV4aXN0LCBkaXNjb3Zlcnkgd2lsbCByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UgYXMgdGhvdWdoIGl0IHdlcmUganVzdAorYW5vdGhlciBkaXJlY3RvcnkuICBPdGhlcndpc2UsIGRpc2NvdmVyeSBvZiB0aGUgcGFja2FnZSdzIHRlc3RzIHdpbGwgYmUgbGVmdCB1cAordG8gYGBsb2FkX3Rlc3RzYGAgd2hpY2ggaXMgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6OgogCiAgICAgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBwYXR0ZXJuKQogCkBAIC0yMDgyLDYgKzIxMjUsMTEgQEAKICAgICAgICAgc3RhbmRhcmRfdGVzdHMuYWRkVGVzdHMocGFja2FnZV90ZXN0cykKICAgICAgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBEaXNjb3Zlcnkgbm8gbG9uZ2VyIGNoZWNrcyBwYWNrYWdlIG5hbWVzIGZvciBtYXRjaGluZyAqcGF0dGVybiogZHVlIHRvIHRoZQorICAgaW1wb3NzaWJpbGl0eSBvZiBwYWNrYWdlIG5hbWVzIG1hdGNoaW5nIHRoZSBkZWZhdWx0IHBhdHRlcm4uCisKKwogCiBDbGFzcyBhbmQgTW9kdWxlIEZpeHR1cmVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAppbmRleCBmYmJhYmNhLi40MDA5OGQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKQEAgLTI3MCw2ICsyNzAsMTEgQEAKICAgIDpmdW5jOmB1cmx1bnNwbGl0YCwgcmVtb3ZpbmcgcG9zc2libGUgKnNjaGVtZSogYW5kICpuZXRsb2MqIHBhcnRzLgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisKKyAgICAgIEJlaGF2aW91ciB1cGRhdGVkIHRvIG1hdGNoIHRoZSBzZW1hbnRpY3MgZGVmaW5lZCBpbiA6cmZjOmAzOTg2YC4KKworCiAuLiBmdW5jdGlvbjo6IHVybGRlZnJhZyh1cmwpCiAKICAgIElmICp1cmwqIGNvbnRhaW5zIGEgZnJhZ21lbnQgaWRlbnRpZmllciwgcmV0dXJuIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiAqdXJsKgpAQCAtNTE2LDcgKzUyMSw4IEBACiAgICBFeGFtcGxlOiBgYHVucXVvdGVfdG9fYnl0ZXMoJ2ElMjYlRUYnKWBgIHlpZWxkcyBgYGInYSZceGVmJ2BgLgogCiAKLS4uIGZ1bmN0aW9uOjogdXJsZW5jb2RlKHF1ZXJ5LCBkb3NlcT1GYWxzZSwgc2FmZT0nJywgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCisuLiBmdW5jdGlvbjo6IHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1Ob25lLCBxdW90ZV92aWE9cXVvdGVfcGx1cykKIAogICAgQ29udmVydCBhIG1hcHBpbmcgb2JqZWN0IG9yIGEgc2VxdWVuY2Ugb2YgdHdvLWVsZW1lbnQgdHVwbGVzLCB3aGljaCBtYXkKICAgIGNvbnRhaW4gOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMsIHRvIGEgInBlcmNlbnQtZW5jb2RlZCIKQEAgLTUyNSw4ICs1MzEsMTYgQEAKICAgIHByb3Blcmx5IGVuY29kZWQgdG8gYnl0ZXMsIG90aGVyd2lzZSBpdCB3b3VsZCByZXN1bHQgaW4gYSA6ZXhjOmBUeXBlRXJyb3JgLgogCiAgICBUaGUgcmVzdWx0aW5nIHN0cmluZyBpcyBhIHNlcmllcyBvZiBgYGtleT12YWx1ZWBgIHBhaXJzIHNlcGFyYXRlZCBieSBgYCcmJ2BgCi0gICBjaGFyYWN0ZXJzLCB3aGVyZSBib3RoICprZXkqIGFuZCAqdmFsdWUqIGFyZSBxdW90ZWQgdXNpbmcgOmZ1bmM6YHF1b3RlX3BsdXNgCi0gICBhYm92ZS4gV2hlbiBhIHNlcXVlbmNlIG9mIHR3by1lbGVtZW50IHR1cGxlcyBpcyB1c2VkIGFzIHRoZSAqcXVlcnkqCisgICBjaGFyYWN0ZXJzLCB3aGVyZSBib3RoICprZXkqIGFuZCAqdmFsdWUqIGFyZSBxdW90ZWQgdXNpbmcgdGhlICpxdW90ZV92aWEqCisgICBmdW5jdGlvbi4gIEJ5IGRlZmF1bHQsIDpmdW5jOmBxdW90ZV9wbHVzYCBpcyB1c2VkIHRvIHF1b3RlIHRoZSB2YWx1ZXMsIHdoaWNoCisgICBtZWFucyBzcGFjZXMgYXJlIHF1b3RlZCBhcyBhIGBgJysnYGAgY2hhcmFjdGVyIGFuZCAnLycgY2hhcmFjdGVycyBhcmUKKyAgIGVuY29kZWQgYXMgYGAlMkZgYCwgd2hpY2ggZm9sbG93cyB0aGUgc3RhbmRhcmQgZm9yIEdFVCByZXF1ZXN0cworICAgKGBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYGApLiAgQW4gYWx0ZXJuYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGJlCisgICBwYXNzZWQgYXMgKnF1b3RlX3ZpYSogaXMgOmZ1bmM6YHF1b3RlYCwgd2hpY2ggd2lsbCBlbmNvZGUgc3BhY2VzIGFzIGBgJTIwYGAKKyAgIGFuZCBub3QgZW5jb2RlICcvJyBjaGFyYWN0ZXJzLiAgRm9yIG1heGltdW0gY29udHJvbCBvZiB3aGF0IGlzIHF1b3RlZCwgdXNlCisgICBgYHF1b3RlYGAgYW5kIHNwZWNpZnkgYSB2YWx1ZSBmb3IgKnNhZmUqLgorCisgICBXaGVuIGEgc2VxdWVuY2Ugb2YgdHdvLWVsZW1lbnQgdHVwbGVzIGlzIHVzZWQgYXMgdGhlICpxdWVyeSoKICAgIGFyZ3VtZW50LCB0aGUgZmlyc3QgZWxlbWVudCBvZiBlYWNoIHR1cGxlIGlzIGEga2V5IGFuZCB0aGUgc2Vjb25kIGlzIGEKICAgIHZhbHVlLiBUaGUgdmFsdWUgZWxlbWVudCBpbiBpdHNlbGYgY2FuIGJlIGEgc2VxdWVuY2UgYW5kIGluIHRoYXQgY2FzZSwgaWYKICAgIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgKmRvc2VxKiBpcyBldmFsdWF0ZXMgdG8gKlRydWUqLCBpbmRpdmlkdWFsCkBAIC01MzUsNyArNTQ5LDcgQEAKICAgIHN0cmluZyB3aWxsIG1hdGNoIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXIgdHVwbGVzIGluIHRoZSBzZXF1ZW5jZS4KIAogICAgVGhlICpzYWZlKiwgKmVuY29kaW5nKiwgYW5kICplcnJvcnMqIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBkb3duIHRvCi0gICA6ZnVuYzpgcXVvdGVfcGx1c2AgKHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzIGFyZSBvbmx5IHBhc3NlZAorICAgKnF1b3RlX3ZpYSogKHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzIGFyZSBvbmx5IHBhc3NlZAogICAgd2hlbiBhIHF1ZXJ5IGVsZW1lbnQgaXMgYSA6Y2xhc3M6YHN0cmApLgogCiAgICBUbyByZXZlcnNlIHRoaXMgZW5jb2RpbmcgcHJvY2VzcywgOmZ1bmM6YHBhcnNlX3FzYCBhbmQgOmZ1bmM6YHBhcnNlX3FzbGAgYXJlCkBAIC01NDcsNiArNTYxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBRdWVyeSBwYXJhbWV0ZXIgc3VwcG9ydHMgYnl0ZXMgYW5kIHN0cmluZyBvYmplY3RzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKyAgICAgICpxdW90ZV92aWEqIHBhcmFtZXRlci4KKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IDc1Yjk1ZDkuLjM0OWJhNzAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTExNSw2ICsxMTUsNyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMwogICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KIAorCiAuLiBmdW5jdGlvbjo6IGluc3RhbGxfb3BlbmVyKG9wZW5lcikKIAogICAgSW5zdGFsbCBhbiA6Y2xhc3M6YE9wZW5lckRpcmVjdG9yYCBpbnN0YW5jZSBhcyB0aGUgZGVmYXVsdCBnbG9iYWwgb3BlbmVyLgpAQCAtMjg3LDEzICsyODgsMzcgQEAKICAgIGZpdHMuCiAKIAorLi4gY2xhc3M6OiBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoKCkKKworICAgQSB2YXJpYW50IG9mIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbWAgdGhhdCBhbHNvIGhhcyBhCisgICBkYXRhYmFzZSBvZiBgYHVyaSAtPiBpc19hdXRoZW50aWNhdGVkYGAgbWFwcGluZ3MuICBDYW4gYmUgdXNlZCBieSBhCisgICBCYXNpY0F1dGggaGFuZGxlciB0byBkZXRlcm1pbmUgd2hlbiB0byBzZW5kIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzCisgICBpbW1lZGlhdGVseSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGEgYGA0MDFgYCByZXNwb25zZSBmaXJzdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKwogLi4gY2xhc3M6OiBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIocGFzc3dvcmRfbWdyPU5vbmUpCiAKICAgIFRoaXMgaXMgYSBtaXhpbiBjbGFzcyB0aGF0IGhlbHBzIHdpdGggSFRUUCBhdXRoZW50aWNhdGlvbiwgYm90aCB0byB0aGUgcmVtb3RlCiAgICBob3N0IGFuZCB0byBhIHByb3h5LiAqcGFzc3dvcmRfbWdyKiwgaWYgZ2l2ZW4sIHNob3VsZCBiZSBzb21ldGhpbmcgdGhhdCBpcwogICAgY29tcGF0aWJsZSB3aXRoIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyYDsgcmVmZXIgdG8gc2VjdGlvbgogICAgOnJlZjpgaHR0cC1wYXNzd29yZC1tZ3JgIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaW50ZXJmYWNlIHRoYXQgbXVzdCBiZQotICAgc3VwcG9ydGVkLgorICAgc3VwcG9ydGVkLiAgSWYgKnBhc3N3ZF9tZ3IqIGFsc28gcHJvdmlkZXMgYGBpc19hdXRoZW50aWNhdGVkYGAgYW5kCisgICBgYHVwZGF0ZV9hdXRoZW50aWNhdGVkYGAgbWV0aG9kcyAoc2VlCisgICA6cmVmOmBodHRwLXBhc3N3b3JkLW1nci13aXRoLXByaW9yLWF1dGhgKSwgdGhlbiB0aGUgaGFuZGxlciB3aWxsIHVzZSB0aGUKKyAgIGBgaXNfYXV0aGVudGljYXRlZGBgIHJlc3VsdCBmb3IgYSBnaXZlbiBVUkkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvCisgICBzZW5kIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIHdpdGggdGhlIHJlcXVlc3QuICBJZiBgYGlzX2F1dGhlbnRpY2F0ZWRgYAorICAgcmV0dXJucyBgYFRydWVgYCBmb3IgdGhlIFVSSSwgY3JlZGVudGlhbHMgYXJlIHNlbnQuICBJZiBgYGlzX2F1dGhlbnRpY2F0ZWRgYAorICAgaXMgYGBGYWxzZWBgLCBjcmVkZW50aWFscyBhcmUgbm90IHNlbnQsIGFuZCB0aGVuIGlmIGEgYGA0MDFgYCByZXNwb25zZSBpcworICAgcmVjZWl2ZWQgdGhlIHJlcXVlc3QgaXMgcmUtc2VudCB3aXRoIHRoZSBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gIElmCisgICBhdXRoZW50aWNhdGlvbiBzdWNjZWVkcywgYGB1cGRhdGVfYXV0aGVudGljYXRlZGBgIGlzIGNhbGxlZCB0byBzZXQKKyAgIGBgaXNfYXV0aGVudGljYXRlZGBgIGBgVHJ1ZWBgIGZvciB0aGUgVVJJLCBzbyB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdHMgdG8KKyAgIHRoZSBVUkkgb3IgYW55IG9mIGl0cyBzdXBlci1VUklzIHdpbGwgYXV0b21hdGljYWxseSBpbmNsdWRlIHRoZQorICAgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorICAgICAgQWRkZWQgYGBpc19hdXRoZW50aWNhdGVkYGAgc3VwcG9ydC4KIAogCiAuLiBjbGFzczo6IEhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQpAQCAtODQ1LDYgKzg3MCw0MiBAQAogICAgc2VhcmNoZWQgaWYgdGhlIGdpdmVuICpyZWFsbSogaGFzIG5vIG1hdGNoaW5nIHVzZXIvcGFzc3dvcmQuCiAKIAorLi4gX2h0dHAtcGFzc3dvcmQtbWdyLXdpdGgtcHJpb3ItYXV0aDoKKworSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aCBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwYXNzd29yZCBtYW5hZ2VyIGV4dGVuZHMgOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JXaXRoRGVmYXVsdFJlYWxtYCB0byBzdXBwb3J0Cit0cmFja2luZyBVUklzIGZvciB3aGljaCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBzaG91bGQgYWx3YXlzIGJlIHNlbnQuCisKKworLi4gbWV0aG9kOjogSFRUUFBhc3N3b3JkTWdyV2l0aFByaW9yQXV0aC5hZGRfcGFzc3dvcmQocmVhbG0sIHVyaSwgdXNlciwgXAorICAgICAgICAgICAgcGFzc3dkLCBpc19hdXRoZW50aWNhdGVkPUZhbHNlKQorCisgICAqcmVhbG0qLCAqdXJpKiwgKnVzZXIqLCAqcGFzc3dkKiBhcmUgYXMgZm9yCisgICA6bWV0aDpgSFRUUFBhc3N3b3JkTWdyLmFkZF9wYXNzd29yZGAuICAqaXNfYXV0aGVudGljYXRlZCogc2V0cyB0aGUgaW5pdGlhbAorICAgdmFsdWUgb2YgdGhlIGBgaXNfYXV0aGVudGljYXRlZGBgIGZsYWcgZm9yIHRoZSBnaXZlbiBVUkkgb3IgbGlzdCBvZiBVUklzLgorICAgSWYgKmlzX2F1dGhlbnRpY2F0ZWQqIGlzIHNwZWNpZmllZCBhcyBgYFRydWVgYCwgKnJlYWxtKiBpcyBpZ25vcmVkLgorCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1nci5maW5kX3VzZXJfcGFzc3dvcmQocmVhbG0sIGF1dGh1cmkpCisKKyAgIFNhbWUgYXMgZm9yIDpjbGFzczpgSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbWAgb2JqZWN0cworCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgudXBkYXRlX2F1dGhlbnRpY2F0ZWQoc2VsZiwgdXJpLCBcCisgICAgICAgICAgICBpc19hdXRoZW50aWNhdGVkPUZhbHNlKQorCisgICBVcGRhdGUgdGhlIGBgaXNfYXV0aGVudGljYXRlZGBgIGZsYWcgZm9yIHRoZSBnaXZlbiAqdXJpKiBvciBsaXN0CisgICBvZiBVUklzLgorCisKKy4uIG1ldGhvZDo6IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGguaXNfYXV0aGVudGljYXRlZChzZWxmLCBhdXRodXJpKQorCisgICBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBgYGlzX2F1dGhlbnRpY2F0ZWRgYCBmbGFnIGZvcgorICAgdGhlIGdpdmVuIFVSSS4KKworCiAuLiBfYWJzdHJhY3QtYmFzaWMtYXV0aC1oYW5kbGVyOgogCiBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgT2JqZWN0cwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QgYi9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdAppbmRleCBjYzg4M2IxLi4yZTE2MDc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93ZWFrcmVmLnJzdApAQCAtMjU4LDcgKzI1OCw3IEBACiAgICBhcmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgb2YgY3JlYXRpb24uCiAKICAgIEEgZmluYWxpemVyIHdpbGwgbmV2ZXIgaW52b2tlIGl0cyBjYWxsYmFjayBkdXJpbmcgdGhlIGxhdGVyIHBhcnQgb2YKLSAgIHRoZSBpbnRlcnByZXRlciBzaHV0ZG93biB3aGVuIG1vZHVsZSBnbG9iYWxzIGFyZSBsaWFibGUgdG8gaGF2ZQorICAgdGhlIDp0ZXJtOmBpbnRlcnByZXRlciBzaHV0ZG93bmAgd2hlbiBtb2R1bGUgZ2xvYmFscyBhcmUgbGlhYmxlIHRvIGhhdmUKICAgIGJlZW4gcmVwbGFjZWQgYnkgOmNvbnN0OmBOb25lYC4KIAogICAgLi4gbWV0aG9kOjogX19jYWxsX18oKQpAQCAtNTI3LDggKzUyNyw4IEBACiAKIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMgbm8gbG9uZ2VyIHByZXZlbnQKIHJlZmVyZW5jZSBjeWNsZXMgZnJvbSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCwgYW5kIG1vZHVsZSBnbG9iYWxzIGFyZQotbm8gbG9uZ2VyIGZvcmNlZCB0byA6Y29uc3Q6YE5vbmVgIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bi4gU28gdGhpcwotY29kZSBzaG91bGQgd29yayB3aXRob3V0IGFueSBpc3N1ZXMgb24gQ1B5dGhvbi4KK25vIGxvbmdlciBmb3JjZWQgdG8gOmNvbnN0OmBOb25lYCBkdXJpbmcgOnRlcm06YGludGVycHJldGVyIHNodXRkb3duYC4KK1NvIHRoaXMgY29kZSBzaG91bGQgd29yayB3aXRob3V0IGFueSBpc3N1ZXMgb24gQ1B5dGhvbi4KIAogSG93ZXZlciwgaGFuZGxpbmcgb2YgOm1ldGg6YF9fZGVsX19gIG1ldGhvZHMgaXMgbm90b3Jpb3VzbHkgaW1wbGVtZW50YXRpb24KIHNwZWNpZmljLCBzaW5jZSBpdCBkZXBlbmRzIG9uIGludGVybmFsIGRldGFpbHMgb2YgdGhlIGludGVycHJldGVyJ3MgZ2FyYmFnZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCBhOWUxOWRhLi5kZTc0YzMwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtMTg0LDEwICsxODQsMTEgQEAKIG1hbmlwdWxhdGlvbiBvZiBXU0dJIHJlc3BvbnNlIGhlYWRlcnMgdXNpbmcgYSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlLgogCiAKLS4uIGNsYXNzOjogSGVhZGVycyhoZWFkZXJzKQorLi4gY2xhc3M6OiBIZWFkZXJzKFtoZWFkZXJzXSkKIAogICAgQ3JlYXRlIGEgbWFwcGluZy1saWtlIG9iamVjdCB3cmFwcGluZyAqaGVhZGVycyosIHdoaWNoIG11c3QgYmUgYSBsaXN0IG9mIGhlYWRlcgotICAgbmFtZS92YWx1ZSB0dXBsZXMgYXMgZGVzY3JpYmVkIGluIDpwZXA6YDMzMzNgLgorICAgbmFtZS92YWx1ZSB0dXBsZXMgYXMgZGVzY3JpYmVkIGluIDpwZXA6YDMzMzNgLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAqaGVhZGVycyogaXMKKyAgIGFuIGVtcHR5IGxpc3QuCiAKICAgIDpjbGFzczpgSGVhZGVyc2Agb2JqZWN0cyBzdXBwb3J0IHR5cGljYWwgbWFwcGluZyBvcGVyYXRpb25zIGluY2x1ZGluZwogICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCwgOm1ldGg6YGdldGAsIDptZXRoOmBfX3NldGl0ZW1fX2AsIDptZXRoOmBzZXRkZWZhdWx0YCwKQEAgLTI1MSw2ICsyNTIsMTAgQEAKICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICAgICAqaGVhZGVycyogcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgorCisKIDptb2Q6YHdzZ2lyZWYuc2ltcGxlX3NlcnZlcmAgLS0gYSBzaW1wbGUgV1NHSSBIVFRQIHNlcnZlcgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5zYXgucmVhZGVyLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgucmVhZGVyLnJzdAppbmRleCAzYWI2MDYzLi4zMWNhMjYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLnNheC5yZWFkZXIucnN0CkBAIC0xMDAsOCArMTAwLDEwIEBACiAgICBzeXN0ZW0gaWRlbnRpZmllciAoYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIGlucHV0IHNvdXJjZSAtLSB0eXBpY2FsbHkgYSBmaWxlCiAgICBuYW1lIG9yIGFuIFVSTCksIGEgZmlsZS1saWtlIG9iamVjdCwgb3IgYW4gOmNsYXNzOmBJbnB1dFNvdXJjZWAgb2JqZWN0LiBXaGVuCiAgICA6bWV0aDpgcGFyc2VgIHJldHVybnMsIHRoZSBpbnB1dCBpcyBjb21wbGV0ZWx5IHByb2Nlc3NlZCwgYW5kIHRoZSBwYXJzZXIgb2JqZWN0Ci0gICBjYW4gYmUgZGlzY2FyZGVkIG9yIHJlc2V0LiBBcyBhIGxpbWl0YXRpb24sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkKLSAgIGFjY2VwdHMgYnl0ZSBzdHJlYW1zOyBwcm9jZXNzaW5nIG9mIGNoYXJhY3RlciBzdHJlYW1zIGlzIGZvciBmdXJ0aGVyIHN0dWR5LgorICAgY2FuIGJlIGRpc2NhcmRlZCBvciByZXNldC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgY2hhcmFjdGVyIHN0cmVhbXMuCiAKIAogLi4gbWV0aG9kOjogWE1MUmVhZGVyLmdldENvbnRlbnRIYW5kbGVyKCkKQEAgLTI4OCw4ICsyOTAsNyBAQAogCiAuLiBtZXRob2Q6OiBJbnB1dFNvdXJjZS5zZXRCeXRlU3RyZWFtKGJ5dGVmaWxlKQogCi0gICBTZXQgdGhlIGJ5dGUgc3RyZWFtIChhIFB5dGhvbiBmaWxlLWxpa2Ugb2JqZWN0IHdoaWNoIGRvZXMgbm90IHBlcmZvcm0KLSAgIGJ5dGUtdG8tY2hhcmFjdGVyIGNvbnZlcnNpb24pIGZvciB0aGlzIGlucHV0IHNvdXJjZS4KKyAgIFNldCB0aGUgYnl0ZSBzdHJlYW0gKGEgOnRlcm06YGJpbmFyeSBmaWxlYCkgZm9yIHRoaXMgaW5wdXQgc291cmNlLgogCiAgICBUaGUgU0FYIHBhcnNlciB3aWxsIGlnbm9yZSB0aGlzIGlmIHRoZXJlIGlzIGFsc28gYSBjaGFyYWN0ZXIgc3RyZWFtIHNwZWNpZmllZCwKICAgIGJ1dCBpdCB3aWxsIHVzZSBhIGJ5dGUgc3RyZWFtIGluIHByZWZlcmVuY2UgdG8gb3BlbmluZyBhIFVSSSBjb25uZWN0aW9uIGl0c2VsZi4KQEAgLTMwOCw4ICszMDksNyBAQAogCiAuLiBtZXRob2Q6OiBJbnB1dFNvdXJjZS5zZXRDaGFyYWN0ZXJTdHJlYW0oY2hhcmZpbGUpCiAKLSAgIFNldCB0aGUgY2hhcmFjdGVyIHN0cmVhbSBmb3IgdGhpcyBpbnB1dCBzb3VyY2UuIChUaGUgc3RyZWFtIG11c3QgYmUgYSBQeXRob24gMS42Ci0gICBVbmljb2RlLXdyYXBwZWQgZmlsZS1saWtlIHRoYXQgcGVyZm9ybXMgY29udmVyc2lvbiB0byBzdHJpbmdzLikKKyAgIFNldCB0aGUgY2hhcmFjdGVyIHN0cmVhbSAoYSA6dGVybTpgdGV4dCBmaWxlYCkgZm9yIHRoaXMgaW5wdXQgc291cmNlLgogCiAgICBJZiB0aGVyZSBpcyBhIGNoYXJhY3RlciBzdHJlYW0gc3BlY2lmaWVkLCB0aGUgU0FYIHBhcnNlciB3aWxsIGlnbm9yZSBhbnkgYnl0ZQogICAgc3RyZWFtIGFuZCB3aWxsIG5vdCBhdHRlbXB0IHRvIG9wZW4gYSBVUkkgY29ubmVjdGlvbiB0byB0aGUgc3lzdGVtIGlkZW50aWZpZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuc2F4LnJzdCBiL0RvYy9saWJyYXJ5L3htbC5zYXgucnN0CmluZGV4IGU5NWQ2YjAuLjU1Zjk3OTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5zYXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5zYXgucnN0CkBAIC00Nyw3ICs0NywxMSBAQAogLi4gZnVuY3Rpb246OiBwYXJzZVN0cmluZyhzdHJpbmcsIGhhbmRsZXIsIGVycm9yX2hhbmRsZXI9aGFuZGxlci5FcnJvckhhbmRsZXIoKSkKIAogICAgU2ltaWxhciB0byA6ZnVuYzpgcGFyc2VgLCBidXQgcGFyc2VzIGZyb20gYSBidWZmZXIgKnN0cmluZyogcmVjZWl2ZWQgYXMgYQotICAgcGFyYW1ldGVyLgorICAgcGFyYW1ldGVyLiAgKnN0cmluZyogbXVzdCBiZSBhIDpjbGFzczpgc3RyYCBpbnN0YW5jZSBvciBhCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBvZiA6Y2xhc3M6YHN0cmAgaW5zdGFuY2VzLgogCiBBIHR5cGljYWwgU0FYIGFwcGxpY2F0aW9uIHVzZXMgdGhyZWUga2luZHMgb2Ygb2JqZWN0czogcmVhZGVycywgaGFuZGxlcnMgYW5kCiBpbnB1dCBzb3VyY2VzLiAgIlJlYWRlciIgaW4gdGhpcyBjb250ZXh0IGlzIGFub3RoZXIgdGVybSBmb3IgcGFyc2VyLCBpLmUuIHNvbWUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKaW5kZXggY2M1ZTgzYS4uZTE5OTkzMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKQEAgLTI3LDcgKzI3LDcgQEAKICAgIGNvbnN0cnVjdGVkIGRhdGEuICBJZiB5b3UgbmVlZCB0byBwYXJzZSB1bnRydXN0ZWQgb3IgdW5hdXRoZW50aWNhdGVkIGRhdGEgc2VlCiAgICA6cmVmOmB4bWwtdnVsbmVyYWJpbGl0aWVzYC4KIAotLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAogICAgRm9yIGh0dHBzIFVSSXMsIDptb2Q6YHhtbHJwYy5jbGllbnRgIG5vdyBwZXJmb3JtcyBhbGwgdGhlIG5lY2Vzc2FyeQogICAgY2VydGlmaWNhdGUgYW5kIGhvc3RuYW1lIGNoZWNrcyBieSBkZWZhdWx0CkBAIC0xMjksNyArMTI5LDcgQEAKICAgIDpjbGFzczpgU2VydmVyYCBpcyByZXRhaW5lZCBhcyBhbiBhbGlhcyBmb3IgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgZm9yIGJhY2t3YXJkcwogICAgY29tcGF0aWJpbGl0eS4gIE5ldyBjb2RlIHNob3VsZCB1c2UgOmNsYXNzOmBTZXJ2ZXJQcm94eWAuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCB0aGUgKmNvbnRleHQqIGFyZ3VtZW50LgogCiAKQEAgLTIwMCw2ICsyMDAsMTEgQEAKICAgIG5vIHN1Y2ggc3RyaW5nIGlzIGF2YWlsYWJsZSwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLiBUaGUgZG9jdW1lbnRhdGlvbgogICAgc3RyaW5nIG1heSBjb250YWluIEhUTUwgbWFya3VwLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorCisgICBJbnN0YW5jZXMgb2YgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wKKyAgIGZvciBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydC4KKwogCiBBIHdvcmtpbmcgZXhhbXBsZSBmb2xsb3dzLiBUaGUgc2VydmVyIGNvZGU6OgogCkBAIC0yMTcsOSArMjIyLDkgQEAKIAogICAgaW1wb3J0IHhtbHJwYy5jbGllbnQKIAotICAgcHJveHkgPSB4bWxycGMuY2xpZW50LlNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvIikKLSAgIHByaW50KCIzIGlzIGV2ZW46ICVzIiAlIHN0cihwcm94eS5pc19ldmVuKDMpKSkKLSAgIHByaW50KCIxMDAgaXMgZXZlbjogJXMiICUgc3RyKHByb3h5LmlzX2V2ZW4oMTAwKSkpCisgICB3aXRoIHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHkoImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8iKSBhcyBwcm94eToKKyAgICAgICBwcmludCgiMyBpcyBldmVuOiAlcyIgJSBzdHIocHJveHkuaXNfZXZlbigzKSkpCisgICAgICAgcHJpbnQoIjEwMCBpcyBldmVuOiAlcyIgJSBzdHIocHJveHkuaXNfZXZlbigxMDApKSkKIAogLi4gX2RhdGV0aW1lLW9iamVjdHM6CiAKQEAgLTUyNywxNCArNTMyLDE0IEBACiAgICBmcm9tIHhtbHJwYy5jbGllbnQgaW1wb3J0IFNlcnZlclByb3h5LCBFcnJvcgogCiAgICAjIHNlcnZlciA9IFNlcnZlclByb3h5KCJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSAjIGxvY2FsIHNlcnZlcgotICAgc2VydmVyID0gU2VydmVyUHJveHkoImh0dHA6Ly9iZXR0eS51c2VybGFuZC5jb20iKQorICAgd2l0aCBTZXJ2ZXJQcm94eSgiaHR0cDovL2JldHR5LnVzZXJsYW5kLmNvbSIpIGFzIHByb3h5OgogCi0gICBwcmludChzZXJ2ZXIpCisgICAgICAgcHJpbnQocHJveHkpCiAKLSAgIHRyeToKLSAgICAgICBwcmludChzZXJ2ZXIuZXhhbXBsZXMuZ2V0U3RhdGVOYW1lKDQxKSkKLSAgIGV4Y2VwdCBFcnJvciBhcyB2OgotICAgICAgIHByaW50KCJFUlJPUiIsIHYpCisgICAgICAgdHJ5OgorICAgICAgICAgICBwcmludChwcm94eS5leGFtcGxlcy5nZXRTdGF0ZU5hbWUoNDEpKQorICAgICAgIGV4Y2VwdCBFcnJvciBhcyB2OgorICAgICAgICAgICBwcmludCgiRVJST1IiLCB2KQogCiBUbyBhY2Nlc3MgYW4gWE1MLVJQQyBzZXJ2ZXIgdGhyb3VnaCBhIHByb3h5LCB5b3UgbmVlZCB0byBkZWZpbmUgIGEgY3VzdG9tCiB0cmFuc3BvcnQuICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwYXBwLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGFwcC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ0ODRjOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3ppcGFwcC5yc3QKQEAgLTAsMCArMSwyNTkgQEAKKzptb2Q6YHppcGFwcGAgLS0tIE1hbmFnZSBleGVjdXRhYmxlIHB5dGhvbiB6aXAgYXJjaGl2ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogemlwYXBwCisgICA6c3lub3BzaXM6IE1hbmFnZSBleGVjdXRhYmxlIHB5dGhvbiB6aXAgYXJjaGl2ZXMKKworCisuLiBpbmRleDo6CisgICBzaW5nbGU6IEV4ZWN1dGFibGUgWmlwIEZpbGVzCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi96aXBhcHAucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIHRvb2xzIHRvIG1hbmFnZSB0aGUgY3JlYXRpb24gb2YgemlwIGZpbGVzIGNvbnRhaW5pbmcKK1B5dGhvbiBjb2RlLCB3aGljaCBjYW4gYmUgIDpyZWY6YGV4ZWN1dGVkIGRpcmVjdGx5IGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKKzx1c2luZy1vbi1pbnRlcmZhY2Utb3B0aW9ucz5gLiAgVGhlIG1vZHVsZSBwcm92aWRlcyBib3RoIGEKKzpyZWY6YHppcGFwcC1jb21tYW5kLWxpbmUtaW50ZXJmYWNlYCBhbmQgYSA6cmVmOmB6aXBhcHAtcHl0aG9uLWFwaWAuCisKKworQmFzaWMgRXhhbXBsZQorLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgaG93IHRoZSA6cmVmOmBjb21tYW5kLWxpbmUtaW50ZXJmYWNlYAorY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUgYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcKK1B5dGhvbiBjb2RlLiAgV2hlbiBydW4sIHRoZSBhcmNoaXZlIHdpbGwgZXhlY3V0ZSB0aGUgYGBtYWluYGAgZnVuY3Rpb24gZnJvbQordGhlIG1vZHVsZSBgYG15YXBwYGAgaW4gdGhlIGFyY2hpdmUuCisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIm15YXBwOm1haW4iCisgICAkIHB5dGhvbiBteWFwcC5weXoKKyAgIDxvdXRwdXQgZnJvbSBteWFwcD4KKworCisuLiBfemlwYXBwLWNvbW1hbmQtbGluZS1pbnRlcmZhY2U6CisKK0NvbW1hbmQtTGluZSBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBjYWxsZWQgYXMgYSBwcm9ncmFtIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgdGhlIGZvbGxvd2luZyBmb3JtIGlzIHVzZWQ6CisKKy4uIGNvZGUtYmxvY2s6OiBzaAorCisgICAkIHB5dGhvbiAtbSB6aXBhcHAgc291cmNlIFtvcHRpb25zXQorCitJZiAqc291cmNlKiBpcyBhIGRpcmVjdG9yeSwgdGhpcyB3aWxsIGNyZWF0ZSBhbiBhcmNoaXZlIGZyb20gdGhlIGNvbnRlbnRzIG9mCisqc291cmNlKi4gIElmICpzb3VyY2UqIGlzIGEgZmlsZSwgaXQgc2hvdWxkIGJlIGFuIGFyY2hpdmUsIGFuZCBpdCB3aWxsIGJlCitjb3BpZWQgdG8gdGhlIHRhcmdldCBhcmNoaXZlIChvciB0aGUgY29udGVudHMgb2YgaXRzIHNoZWJhbmcgbGluZSB3aWxsIGJlCitkaXNwbGF5ZWQgaWYgdGhlIC0taW5mbyBvcHRpb24gaXMgc3BlY2lmaWVkKS4KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSB1bmRlcnN0b29kOgorCisuLiBwcm9ncmFtOjogemlwYXBwCisKKy4uIGNtZG9wdGlvbjo6IC1vIDxvdXRwdXQ+LCAtLW91dHB1dD08b3V0cHV0PgorCisgICBXcml0ZSB0aGUgb3V0cHV0IHRvIGEgZmlsZSBuYW1lZCAqb3V0cHV0Ki4gIElmIHRoaXMgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsCisgICB0aGUgb3V0cHV0IGZpbGVuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGlucHV0ICpzb3VyY2UqLCB3aXRoIHRoZQorICAgZXh0ZW5zaW9uIGBgLnB5emBgIGFkZGVkLiAgSWYgYW4gZXhwbGljaXQgZmlsZW5hbWUgaXMgZ2l2ZW4sIGl0IGlzIHVzZWQgYXMKKyAgIGlzIChzbyBhIGBgLnB5emBgIGV4dGVuc2lvbiBzaG91bGQgYmUgaW5jbHVkZWQgaWYgcmVxdWlyZWQpLgorCisgICBBbiBvdXRwdXQgZmlsZW5hbWUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgdGhlICpzb3VyY2UqIGlzIGFuIGFyY2hpdmUgKGFuZCBpbgorICAgdGhhdCBjYXNlLCAqb3V0cHV0KiBtdXN0IG5vdCBiZSB0aGUgc2FtZSBhcyAqc291cmNlKikuCisKKy4uIGNtZG9wdGlvbjo6IC1wIDxpbnRlcnByZXRlcj4sIC0tcHl0aG9uPTxpbnRlcnByZXRlcj4KKworICAgQWRkIGEgYGAjIWBgIGxpbmUgdG8gdGhlIGFyY2hpdmUgc3BlY2lmeWluZyAqaW50ZXJwcmV0ZXIqIGFzIHRoZSBjb21tYW5kCisgICB0byBydW4uICBBbHNvLCBvbiBQT1NJWCwgbWFrZSB0aGUgYXJjaGl2ZSBleGVjdXRhYmxlLiAgVGhlIGRlZmF1bHQgaXMgdG8KKyAgIHdyaXRlIG5vIGBgIyFgYCBsaW5lLCBhbmQgbm90IG1ha2UgdGhlIGZpbGUgZXhlY3V0YWJsZS4KKworLi4gY21kb3B0aW9uOjogLW0gPG1haW5mbj4sIC0tbWFpbj08bWFpbmZuPgorCisgICBXcml0ZSBhIGBgX19tYWluX18ucHlgYCBmaWxlIHRvIHRoZSBhcmNoaXZlIHRoYXQgZXhlY3V0ZXMgKm1haW5mbiouICBUaGUKKyAgICptYWluZm4qIGFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICJwa2cubW9kOmZuIiwgd2hlcmUgInBrZy5tb2QiIGlzIGEKKyAgIHBhY2thZ2UvbW9kdWxlIGluIHRoZSBhcmNoaXZlLCBhbmQgImZuIiBpcyBhIGNhbGxhYmxlIGluIHRoZSBnaXZlbiBtb2R1bGUuCisgICBUaGUgYGBfX21haW5fXy5weWBgIGZpbGUgd2lsbCBleGVjdXRlIHRoYXQgY2FsbGFibGUuCisKKyAgIDpvcHRpb246YC0tbWFpbmAgY2Fubm90IGJlIHNwZWNpZmllZCB3aGVuIGNvcHlpbmcgYW4gYXJjaGl2ZS4KKworLi4gY21kb3B0aW9uOjogLS1pbmZvCisKKyAgIERpc3BsYXkgdGhlIGludGVycHJldGVyIGVtYmVkZGVkIGluIHRoZSBhcmNoaXZlLCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gIEluCisgICB0aGlzIGNhc2UsIGFueSBvdGhlciBvcHRpb25zIGFyZSBpZ25vcmVkIGFuZCBTT1VSQ0UgbXVzdCBiZSBhbiBhcmNoaXZlLCBub3QgYQorICAgZGlyZWN0b3J5LgorCisuLiBjbWRvcHRpb246OiAtaCwgLS1oZWxwCisKKyAgIFByaW50IGEgc2hvcnQgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdC4KKworCisuLiBfemlwYXBwLXB5dGhvbi1hcGk6CisKK1B5dGhvbiBBUEkKKy0tLS0tLS0tLS0KKworVGhlIG1vZHVsZSBkZWZpbmVzIHR3byBjb252ZW5pZW5jZSBmdW5jdGlvbnM6CisKKworLi4gZnVuY3Rpb246OiBjcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldD1Ob25lLCBpbnRlcnByZXRlcj1Ob25lLCBtYWluPU5vbmUpCisKKyAgIENyZWF0ZSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGZyb20gKnNvdXJjZSouICBUaGUgc291cmNlIGNhbiBiZSBhbnkKKyAgIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgICogVGhlIG5hbWUgb2YgYSBkaXJlY3RvcnksIG9yIGEgOmNsYXNzOmBwYXRobGliLlBhdGhgIG9iamVjdCByZWZlcnJpbmcKKyAgICAgdG8gYSBkaXJlY3RvcnksIGluIHdoaWNoIGNhc2UgYSBuZXcgYXBwbGljYXRpb24gYXJjaGl2ZSB3aWxsIGJlCisgICAgIGNyZWF0ZWQgZnJvbSB0aGUgY29udGVudCBvZiB0aGF0IGRpcmVjdG9yeS4KKyAgICogVGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgYXBwbGljYXRpb24gYXJjaGl2ZSBmaWxlLCBvciBhIDpjbGFzczpgcGF0aGxpYi5QYXRoYAorICAgICBvYmplY3QgcmVmZXJyaW5nIHRvIHN1Y2ggYSBmaWxlLCBpbiB3aGljaCBjYXNlIHRoZSBmaWxlIGlzIGNvcGllZCB0bworICAgICB0aGUgdGFyZ2V0IChtb2RpZnlpbmcgaXQgdG8gcmVmbGVjdCB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqaW50ZXJwcmV0ZXIqCisgICAgIGFyZ3VtZW50KS4gIFRoZSBmaWxlIG5hbWUgc2hvdWxkIGluY2x1ZGUgdGhlIGBgLnB5emBgIGV4dGVuc2lvbiwgaWYgcmVxdWlyZWQuCisgICAqIEEgZmlsZSBvYmplY3Qgb3BlbiBmb3IgcmVhZGluZyBpbiBieXRlcyBtb2RlLiAgVGhlIGNvbnRlbnQgb2YgdGhlCisgICAgIGZpbGUgc2hvdWxkIGJlIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUsIGFuZCB0aGUgZmlsZSBvYmplY3QgaXMKKyAgICAgYXNzdW1lZCB0byBiZSBwb3NpdGlvbmVkIGF0IHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZS4KKworICAgVGhlICp0YXJnZXQqIGFyZ3VtZW50IGRldGVybWluZXMgd2hlcmUgdGhlIHJlc3VsdGluZyBhcmNoaXZlIHdpbGwgYmUKKyAgIHdyaXR0ZW46CisKKyAgICogSWYgaXQgaXMgdGhlIG5hbWUgb2YgYSBmaWxlLCBvciBhIDpjbGFzczpgcGF0aGxiLlBhdGhgIG9iamVjdCwKKyAgICAgdGhlIGFyY2hpdmUgd2lsbCBiZSB3cml0dGVuIHRvIHRoYXQgZmlsZS4KKyAgICogSWYgaXQgaXMgYW4gb3BlbiBmaWxlIG9iamVjdCwgdGhlIGFyY2hpdmUgd2lsbCBiZSB3cml0dGVuIHRvIHRoYXQKKyAgICAgZmlsZSBvYmplY3QsIHdoaWNoIG11c3QgYmUgb3BlbiBmb3Igd3JpdGluZyBpbiBieXRlcyBtb2RlLgorICAgKiBJZiB0aGUgdGFyZ2V0IGlzIG9taXR0ZWQgKG9yIE5vbmUpLCB0aGUgc291cmNlIG11c3QgYmUgYSBkaXJlY3RvcnkKKyAgICAgYW5kIHRoZSB0YXJnZXQgd2lsbCBiZSBhIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSBzb3VyY2UsIHdpdGgKKyAgICAgYSBgYC5weXpgYCBleHRlbnNpb24gYWRkZWQuCisKKyAgIFRoZSAqaW50ZXJwcmV0ZXIqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgUHl0aG9uCisgICBpbnRlcnByZXRlciB3aXRoIHdoaWNoIHRoZSBhcmNoaXZlIHdpbGwgYmUgZXhlY3V0ZWQuICBJdCBpcyB3cml0dGVuIGFzCisgICBhICJzaGViYW5nIiBsaW5lIGF0IHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZS4gIE9uIFBPU0lYLCB0aGlzIHdpbGwgYmUKKyAgIGludGVycHJldGVkIGJ5IHRoZSBPUywgYW5kIG9uIFdpbmRvd3MgaXQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBQeXRob24KKyAgIGxhdW5jaGVyLiAgT21pdHRpbmcgdGhlICppbnRlcnByZXRlciogcmVzdWx0cyBpbiBubyBzaGViYW5nIGxpbmUgYmVpbmcKKyAgIHdyaXR0ZW4uICBJZiBhbiBpbnRlcnByZXRlciBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgdGFyZ2V0IGlzIGEKKyAgIGZpbGVuYW1lLCB0aGUgZXhlY3V0YWJsZSBiaXQgb2YgdGhlIHRhcmdldCBmaWxlIHdpbGwgYmUgc2V0LgorCisgICBUaGUgKm1haW4qIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUKKyAgIHVzZWQgYXMgdGhlIG1haW4gcHJvZ3JhbSBmb3IgdGhlIGFyY2hpdmUuICBJdCBjYW4gb25seSBiZSBzcGVjaWZpZWQgaWYKKyAgIHRoZSBzb3VyY2UgaXMgYSBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIGRvZXMgbm90IGFscmVhZHkgY29udGFpbiBhCisgICBgYF9fbWFpbl9fLnB5YGAgZmlsZS4gIFRoZSAqbWFpbiogYXJndW1lbnQgc2hvdWxkIHRha2UgdGhlIGZvcm0KKyAgICJwa2cubW9kdWxlOmNhbGxhYmxlIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nCisgICAicGtnLm1vZHVsZSIgYW5kIGV4ZWN1dGluZyB0aGUgZ2l2ZW4gY2FsbGFibGUgd2l0aCBubyBhcmd1bWVudHMuICBJdAorICAgaXMgYW4gZXJyb3IgdG8gb21pdCAqbWFpbiogaWYgdGhlIHNvdXJjZSBpcyBhIGRpcmVjdG9yeSBhbmQgZG9lcyBub3QKKyAgIGNvbnRhaW4gYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSwgYXMgb3RoZXJ3aXNlIHRoZSByZXN1bHRpbmcgYXJjaGl2ZQorICAgd291bGQgbm90IGJlIGV4ZWN1dGFibGUuCisKKyAgIElmIGEgZmlsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGZvciAqc291cmNlKiBvciAqdGFyZ2V0KiwgaXQgaXMgdGhlCisgICBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBjbG9zZSBpdCBhZnRlciBjYWxsaW5nIGNyZWF0ZV9hcmNoaXZlLgorCisgICBXaGVuIGNvcHlpbmcgYW4gZXhpc3RpbmcgYXJjaGl2ZSwgZmlsZSBvYmplY3RzIHN1cHBsaWVkIG9ubHkgbmVlZAorICAgYGByZWFkYGAgYW5kIGBgcmVhZGxpbmVgYCwgb3IgYGB3cml0ZWBgIG1ldGhvZHMuICBXaGVuIGNyZWF0aW5nIGFuCisgICBhcmNoaXZlIGZyb20gYSBkaXJlY3RvcnksIGlmIHRoZSB0YXJnZXQgaXMgYSBmaWxlIG9iamVjdCBpdCB3aWxsIGJlCisgICBwYXNzZWQgdG8gdGhlIGBgemlwZmlsZS5aaXBGaWxlYGAgY2xhc3MsIGFuZCBtdXN0IHN1cHBseSB0aGUgbWV0aG9kcworICAgbmVlZGVkIGJ5IHRoYXQgY2xhc3MuCisKKy4uIGZ1bmN0aW9uOjogZ2V0X2ludGVycHJldGVyKGFyY2hpdmUpCisKKyAgIFJldHVybiB0aGUgaW50ZXJwcmV0ZXIgc3BlY2lmaWVkIGluIHRoZSBgYCMhYGAgbGluZSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgICBhcmNoaXZlLiAgSWYgdGhlcmUgaXMgbm8gYGAjIWBgIGxpbmUsIHJldHVybiA6Y29uc3Q6YE5vbmVgLgorICAgVGhlICphcmNoaXZlKiBhcmd1bWVudCBjYW4gYmUgYSBmaWxlbmFtZSBvciBhIGZpbGUtbGlrZSBvYmplY3Qgb3BlbgorICAgZm9yIHJlYWRpbmcgaW4gYnl0ZXMgbW9kZS4gIEl0IGlzIGFzc3VtZWQgdG8gYmUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBhcmNoaXZlLgorCisKKy4uIF96aXBhcHAtZXhhbXBsZXM6CisKK0V4YW1wbGVzCistLS0tLS0tLQorCitQYWNrIHVwIGEgZGlyZWN0b3J5IGludG8gYW4gYXJjaGl2ZSwgYW5kIHJ1biBpdC4KKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICQgcHl0aG9uIC1tIHppcGFwcCBteWFwcAorICAgJCBweXRob24gbXlhcHAucHl6CisgICA8b3V0cHV0IGZyb20gbXlhcHA+CisKK1RoZSBzYW1lIGNhbiBiZSBkb25lIHVzaW5nIHRoZSA6ZnVuYzpgY3JlYXRlX2FyY2hpdmVgIGZ1bmN0b246OgorCisgICA+Pj4gaW1wb3J0IHppcGFwcAorICAgPj4+IHppcGFwcC5jcmVhdGVfYXJjaGl2ZSgnbXlhcHAucHl6JywgJ215YXBwJykKKworVG8gbWFrZSB0aGUgYXBwbGljYXRpb24gZGlyZWN0bHkgZXhlY3V0YWJsZSBvbiBQT1NJWCwgc3BlY2lmeSBhbiBpbnRlcnByZXRlcgordG8gdXNlLgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1wICIvdXNyL2Jpbi9lbnYgcHl0aG9uIgorICAgJCAuL215YXBwLnB5egorICAgPG91dHB1dCBmcm9tIG15YXBwPgorCitUbyByZXBsYWNlIHRoZSBzaGViYW5nIGxpbmUgb24gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgY3JlYXRlIGEgbW9kaWZpZWQgYXJjaGl2ZQordXNpbmcgdGhlIDpmdW5jOmBjcmVhdGVfYXJjaGl2ZWAgZnVuY3Rpb246OgorCisgICA+Pj4gaW1wb3J0IHppcGFwcAorICAgPj4+IHppcGFwcC5jcmVhdGVfYXJjaGl2ZSgnb2xkX2FyY2hpdmUucHl6JywgJ25ld19hcmNoaXZlLnB5eicsICcvdXNyL2Jpbi9weXRob24zJykKKworVG8gdXBkYXRlIHRoZSBmaWxlIGluIHBsYWNlLCBkbyB0aGUgcmVwbGFjZW1lbnQgaW4gbWVtb3J5IHVzaW5nIGEgOmNsYXNzOmBCeXRlc0lPYAorb2JqZWN0LCBhbmQgdGhlbiBvdmVyd3JpdGUgdGhlIHNvdXJjZSBhZnRlcndhcmRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgcmlzaword2hlbiBvdmVyd3JpdGluZyBhIGZpbGUgaW4gcGxhY2UgdGhhdCBhbiBlcnJvciB3aWxsIHJlc3VsdCBpbiB0aGUgbG9zcyBvZgordGhlIG9yaWdpbmFsIGZpbGUuICBUaGlzIGNvZGUgZG9lcyBub3QgcHJvdGVjdCBhZ2FpbnN0IHN1Y2ggZXJyb3JzLCBidXQKK3Byb2R1Y3Rpb24gY29kZSBzaG91bGQgZG8gc28uICBBbHNvLCB0aGlzIG1ldGhvZCB3aWxsIG9ubHkgd29yayBpZiB0aGUgYXJjaGl2ZQorZml0cyBpbiBtZW1vcnk6OgorCisgICA+Pj4gaW1wb3J0IHppcGFwcAorICAgPj4+IGltcG9ydCBpbworICAgPj4+IHRlbXAgPSBpby5CeXRlc0lPKCkKKyAgID4+PiB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoJ215YXBwLnB5eicsIHRlbXAsICcvdXNyL2Jpbi9weXRob24yJykKKyAgID4+PiB3aXRoIG9wZW4oJ215YXBwLnB5eicsICd3YicpIGFzIGY6CisgICA+Pj4gICAgIGYud3JpdGUodGVtcC5nZXR2YWx1ZSgpKQorCitOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgYW4gaW50ZXJwcmV0ZXIgYW5kIHRoZW4gZGlzdHJpYnV0ZSB5b3VyIGFwcGxpY2F0aW9uCithcmNoaXZlLCB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgdXNlZCBpcyBwb3J0YWJsZS4gIFRoZSBQeXRob24KK2xhdW5jaGVyIGZvciBXaW5kb3dzIHN1cHBvcnRzIG1vc3QgY29tbW9uIGZvcm1zIG9mIFBPU0lYIGBgIyFgYCBsaW5lLCBidXQgdGhlcmUKK2FyZSBvdGhlciBpc3N1ZXMgdG8gY29uc2lkZXI6CisKKyogSWYgeW91IHVzZSAiL3Vzci9iaW4vZW52IHB5dGhvbiIgKG9yIG90aGVyIGZvcm1zIG9mIHRoZSAicHl0aG9uIiBjb21tYW5kLAorICBzdWNoIGFzICIvdXNyL2Jpbi9weXRob24iKSwgeW91IG5lZWQgdG8gY29uc2lkZXIgdGhhdCB5b3VyIHVzZXJzIG1heSBoYXZlCisgIGVpdGhlciBQeXRob24gMiBvciBQeXRob24gMyBhcyB0aGVpciBkZWZhdWx0LCBhbmQgd3JpdGUgeW91ciBjb2RlIHRvIHdvcmsKKyAgdW5kZXIgYm90aCB2ZXJzaW9ucy4KKyogSWYgeW91IHVzZSBhbiBleHBsaWNpdCB2ZXJzaW9uLCBmb3IgZXhhbXBsZSAiL3Vzci9iaW4vZW52IHB5dGhvbjMiIHlvdXIKKyAgYXBwbGljYXRpb24gd2lsbCBub3Qgd29yayBmb3IgdXNlcnMgd2hvIGRvIG5vdCBoYXZlIHRoYXQgdmVyc2lvbi4gIChUaGlzCisgIG1heSBiZSB3aGF0IHlvdSB3YW50IGlmIHlvdSBoYXZlIG5vdCBtYWRlIHlvdXIgY29kZSBQeXRob24gMiBjb21wYXRpYmxlKS4KKyogVGhlcmUgaXMgbm8gd2F5IHRvIHNheSAicHl0aG9uIFguWSBvciBsYXRlciIsIHNvIGJlIGNhcmVmdWwgb2YgdXNpbmcgYW4KKyAgZXhhY3QgdmVyc2lvbiBsaWtlICIvdXNyL2Jpbi9lbnYgcHl0aG9uMy40IiBhcyB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB5b3VyCisgIHNoZWJhbmcgbGluZSBmb3IgdXNlcnMgb2YgUHl0aG9uIDMuNSwgZm9yIGV4YW1wbGUuCisKK1RoZSBQeXRob24gWmlwIEFwcGxpY2F0aW9uIEFyY2hpdmUgRm9ybWF0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQeXRob24gaGFzIGJlZW4gYWJsZSB0byBleGVjdXRlIHppcCBmaWxlcyB3aGljaCBjb250YWluIGEgYGBfX21haW5fXy5weWBgIGZpbGUKK3NpbmNlIHZlcnNpb24gMi42LiAgSW4gb3JkZXIgdG8gYmUgZXhlY3V0ZWQgYnkgUHl0aG9uLCBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlCitzaW1wbHkgaGFzIHRvIGJlIGEgc3RhbmRhcmQgemlwIGZpbGUgY29udGFpbmluZyBhIGBgX19tYWluX18ucHlgYCBmaWxlIHdoaWNoCit3aWxsIGJlIHJ1biBhcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBhcHBsaWNhdGlvbi4gIEFzIHVzdWFsIGZvciBhbnkgUHl0aG9uCitzY3JpcHQsIHRoZSBwYXJlbnQgb2YgdGhlIHNjcmlwdCAoaW4gdGhpcyBjYXNlIHRoZSB6aXAgZmlsZSkgd2lsbCBiZSBwbGFjZWQgb24KKzpkYXRhOmBzeXMucGF0aGAgYW5kIHRodXMgZnVydGhlciBtb2R1bGVzIGNhbiBiZSBpbXBvcnRlZCBmcm9tIHRoZSB6aXAgZmlsZS4KKworVGhlIHppcCBmaWxlIGZvcm1hdCBhbGxvd3MgYXJiaXRyYXJ5IGRhdGEgdG8gYmUgcHJlcGVuZGVkIHRvIGEgemlwIGZpbGUuICBUaGUKK3ppcCBhcHBsaWNhdGlvbiBmb3JtYXQgdXNlcyB0aGlzIGFiaWxpdHkgdG8gcHJlcGVuZCBhIHN0YW5kYXJkIFBPU0lYICJzaGViYW5nIgorbGluZSB0byB0aGUgZmlsZSAoYGAjIS9wYXRoL3RvL2ludGVycHJldGVyYGApLgorCitGb3JtYWxseSwgdGhlIFB5dGhvbiB6aXAgYXBwbGljYXRpb24gZm9ybWF0IGlzIHRoZXJlZm9yZToKKworMS4gQW4gb3B0aW9uYWwgc2hlYmFuZyBsaW5lLCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGBgYicjISdgYCBmb2xsb3dlZCBieSBhbgorICAgaW50ZXJwcmV0ZXIgbmFtZSwgYW5kIHRoZW4gYSBuZXdsaW5lIChgYGInXG4nYGApIGNoYXJhY3Rlci4gIFRoZSBpbnRlcnByZXRlcgorICAgbmFtZSBjYW4gYmUgYW55dGhpbmcgYWNjZXB0YWJsZSB0byB0aGUgT1MgInNoZWJhbmciIHByb2Nlc3NpbmcsIG9yIHRoZSBQeXRob24KKyAgIGxhdW5jaGVyIG9uIFdpbmRvd3MuICBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkIGJlIGVuY29kZWQgaW4gVVRGLTggb24gV2luZG93cywKKyAgIGFuZCBpbiA6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpYCBvbiBQT1NJWC4KKzIuIFN0YW5kYXJkIHppcGZpbGUgZGF0YSwgYXMgZ2VuZXJhdGVkIGJ5IHRoZSA6bW9kOmB6aXBmaWxlYCBtb2R1bGUuICBUaGUKKyAgIHppcGZpbGUgY29udGVudCAqbXVzdCogaW5jbHVkZSBhIGZpbGUgY2FsbGVkIGBgX19tYWluX18ucHlgYCAod2hpY2ggbXVzdCBiZQorICAgaW4gdGhlICJyb290IiBvZiB0aGUgemlwZmlsZSAtIGkuZS4sIGl0IGNhbm5vdCBiZSBpbiBhIHN1YmRpcmVjdG9yeSkuICBUaGUKKyAgIHppcGZpbGUgZGF0YSBjYW4gYmUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQuCisKK0lmIGFuIGFwcGxpY2F0aW9uIGFyY2hpdmUgaGFzIGEgc2hlYmFuZyBsaW5lLCBpdCBtYXkgaGF2ZSB0aGUgZXhlY3V0YWJsZSBiaXQgc2V0CitvbiBQT1NJWCBzeXN0ZW1zLCB0byBhbGxvdyBpdCB0byBiZSBleGVjdXRlZCBkaXJlY3RseS4KKworVGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhhdCB0aGUgdG9vbHMgaW4gdGhpcyBtb2R1bGUgYXJlIHVzZWQgdG8gY3JlYXRlCithcHBsaWNhdGlvbiBhcmNoaXZlcyAtIHRoZSBtb2R1bGUgaXMgYSBjb252ZW5pZW5jZSwgYnV0IGFyY2hpdmVzIGluIHRoZSBhYm92ZQorZm9ybWF0IGNyZWF0ZWQgYnkgYW55IG1lYW5zIGFyZSBhY2NlcHRhYmxlIHRvIFB5dGhvbi4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAppbmRleCAxMGEwOTRmLi5kNDAzMTVlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdApAQCAtMTM0LDEyICsxMzQsMTYgQEAKIAogICAgT3BlbiBhIFpJUCBmaWxlLCB3aGVyZSAqZmlsZSogY2FuIGJlIGVpdGhlciBhIHBhdGggdG8gYSBmaWxlIChhIHN0cmluZykgb3IgYQogICAgZmlsZS1saWtlIG9iamVjdC4gIFRoZSAqbW9kZSogcGFyYW1ldGVyIHNob3VsZCBiZSBgYCdyJ2BgIHRvIHJlYWQgYW4gZXhpc3RpbmcKLSAgIGZpbGUsIGBgJ3cnYGAgdG8gdHJ1bmNhdGUgYW5kIHdyaXRlIGEgbmV3IGZpbGUsIG9yIGBgJ2EnYGAgdG8gYXBwZW5kIHRvIGFuCi0gICBleGlzdGluZyBmaWxlLiAgSWYgKm1vZGUqIGlzIGBgJ2EnYGAgYW5kICpmaWxlKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgWklQCisgICBmaWxlLCBgYCd3J2BgIHRvIHRydW5jYXRlIGFuZCB3cml0ZSBhIG5ldyBmaWxlLCBgYCd4J2BgIHRvIGV4Y2x1c2l2ZSBjcmVhdGUKKyAgIGFuZCB3cml0ZSBhIG5ldyBmaWxlLCBvciBgYCdhJ2BgIHRvIGFwcGVuZCB0byBhbiBleGlzdGluZyBmaWxlLgorICAgSWYgKm1vZGUqIGlzIGBgJ3gnYGAgYW5kICpmaWxlKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZmlsZSwKKyAgIGEgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIElmICptb2RlKiBpcyBgYCdhJ2BgIGFuZCAqZmlsZSogcmVmZXJzIHRvIGFuIGV4aXN0aW5nIFpJUAogICAgZmlsZSwgdGhlbiBhZGRpdGlvbmFsIGZpbGVzIGFyZSBhZGRlZCB0byBpdC4gIElmICpmaWxlKiBkb2VzIG5vdCByZWZlciB0byBhCiAgICBaSVAgZmlsZSwgdGhlbiBhIG5ldyBaSVAgYXJjaGl2ZSBpcyBhcHBlbmRlZCB0byB0aGUgZmlsZS4gIFRoaXMgaXMgbWVhbnQgZm9yCiAgICBhZGRpbmcgYSBaSVAgYXJjaGl2ZSB0byBhbm90aGVyIGZpbGUgKHN1Y2ggYXMgOmZpbGU6YHB5dGhvbi5leGVgKS4gIElmCiAgICAqbW9kZSogaXMgYGBhYGAgYW5kIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IGF0IGFsbCwgaXQgaXMgY3JlYXRlZC4KKyAgIElmICptb2RlKiBpcyBgYHJgYCBvciBgYGFgYCwgdGhlIGZpbGUgc2hvdWxkIGJlIHNlZWthYmxlLgogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAogICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZApAQCAtMTUxLDcgKzE1NSw3IEBACiAgICBleHRlbnNpb25zIHdoZW4gdGhlIHppcGZpbGUgaXMgbGFyZ2VyIHRoYW4gMiBHaUIuIElmIGl0IGlzICBmYWxzZSA6bW9kOmB6aXBmaWxlYAogICAgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgWklQIGZpbGUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zLgogCi0gICBJZiB0aGUgZmlsZSBpcyBjcmVhdGVkIHdpdGggbW9kZSBgYCdhJ2BgIG9yIGBgJ3cnYGAgYW5kIHRoZW4KKyAgIElmIHRoZSBmaWxlIGlzIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBhbmQgdGhlbgogICAgOm1ldGg6YGNsb3NlZCA8Y2xvc2U+YCB3aXRob3V0IGFkZGluZyBhbnkgZmlsZXMgdG8gdGhlIGFyY2hpdmUsIHRoZSBhcHByb3ByaWF0ZQogICAgWklQIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IGFyY2hpdmUgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBmaWxlLgogCkBAIC0xNzEsNiArMTc1LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgWklQNjQgZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyB0byB1bnNlZWthYmxlIHN0cmVhbXMuCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCBtb2RlLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCkBAIC0yMjYsMTQgKzIzNCw4IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBJZiB0aGUgWmlwRmlsZSB3YXMgY3JlYXRlZCBieSBwYXNzaW5nIGluIGEgZmlsZS1saWtlIG9iamVjdCBhcyB0aGUgIGZpcnN0Ci0gICAgICBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIHRoZW4gdGhlIG9iamVjdCByZXR1cm5lZCBieSA6bWV0aDpgLm9wZW5gIHNoYXJlcyB0aGUKLSAgICAgIFppcEZpbGUncyBmaWxlIHBvaW50ZXIuICBVbmRlciB0aGVzZSAgY2lyY3Vtc3RhbmNlcywgdGhlIG9iamVjdCByZXR1cm5lZCBieQotICAgICAgOm1ldGg6YC5vcGVuYCBzaG91bGQgbm90ICBiZSB1c2VkIGFmdGVyIGFueSBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZAotICAgICAgb24gdGhlICBaaXBGaWxlIG9iamVjdC4gIElmIHRoZSBaaXBGaWxlIHdhcyBjcmVhdGVkIGJ5IHBhc3NpbmcgaW4gYSBzdHJpbmcgKHRoZQotICAgICAgZmlsZW5hbWUpIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIHRoZW4gIDptZXRoOmAub3BlbmAgd2lsbAotICAgICAgY3JlYXRlIGEgbmV3IGZpbGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBoZWxkIGJ5IHRoZSBaaXBFeHRGaWxlLCBhbGxvd2luZyBpdCB0bwotICAgICAgb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZSAgWmlwRmlsZS4KKyAgICAgIE9iamVjdHMgcmV0dXJuZWQgYnkgOm1ldGg6YC5vcGVuYCBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZQorICAgICAgWmlwRmlsZS4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTMxOCw3ICszMjAsOCBAQAogICAgKmFyY25hbWUqIChieSBkZWZhdWx0LCB0aGlzIHdpbGwgYmUgdGhlIHNhbWUgYXMgKmZpbGVuYW1lKiwgYnV0IHdpdGhvdXQgYSBkcml2ZQogICAgbGV0dGVyIGFuZCB3aXRoIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLiAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKgogICAgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbiogcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IKLSAgIHRoZSBuZXcgZW50cnkuICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gd2l0aCBtb2RlIGBgJ3cnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCisgICB0aGUgbmV3IGVudHJ5LgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZwogICAgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCB3aWxsIHJhaXNlIGEKICAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBDYWxsaW5nICA6bWV0aDpgd3JpdGVgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCiAgICA6ZXhjOmBSdW50aW1lRXJyb3JgLgpAQCAtMzQwLDE2ICszNDMsMTYgQEAKICAgICAgIElmIGBgYXJjbmFtZWBgIChvciBgYGZpbGVuYW1lYGAsIGlmIGBgYXJjbmFtZWBgIGlzICBub3QgZ2l2ZW4pIGNvbnRhaW5zIGEgbnVsbAogICAgICAgYnl0ZSwgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgdGhlIG51bGwgYnl0ZS4KIAotCiAuLiBtZXRob2Q6OiBaaXBGaWxlLndyaXRlc3RyKHppbmZvX29yX2FyY25hbWUsIGJ5dGVzWywgY29tcHJlc3NfdHlwZV0pCiAKICAgIFdyaXRlIHRoZSBzdHJpbmcgKmJ5dGVzKiB0byB0aGUgYXJjaGl2ZTsgKnppbmZvX29yX2FyY25hbWUqIGlzIGVpdGhlciB0aGUgZmlsZQogICAgbmFtZSBpdCB3aWxsIGJlIGdpdmVuIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UuICBJZiBpdCdzCiAgICBhbiBpbnN0YW5jZSwgYXQgbGVhc3QgdGhlIGZpbGVuYW1lLCBkYXRlLCBhbmQgdGltZSBtdXN0IGJlIGdpdmVuLiAgSWYgaXQncyBhCi0gICBuYW1lLCB0aGUgZGF0ZSBhbmQgdGltZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZS4gVGhlIGFyY2hpdmUgbXVzdCBiZQotICAgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZyAgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIFppcEZpbGUKLSAgIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZwotICAgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgbmFtZSwgdGhlIGRhdGUgYW5kIHRpbWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuCisgICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKKyAgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbAorICAgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgogCiAgICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qCiAgICBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgbmV3IGVudHJ5LCBvciBpbiB0aGUgKnppbmZvX29yX2FyY25hbWUqCkBAIC0zNzcsNyArMzgwLDggQEAKIC4uIGF0dHJpYnV0ZTo6IFppcEZpbGUuY29tbWVudAogCiAgICBUaGUgY29tbWVudCB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgWklQIGZpbGUuICBJZiBhc3NpZ25pbmcgYSBjb21tZW50IHRvIGEKLSAgIDpjbGFzczpgWmlwRmlsZWAgaW5zdGFuY2UgY3JlYXRlZCB3aXRoIG1vZGUgJ2EnIG9yICd3JywgdGhpcyBzaG91bGQgYmUgYQorICAgOmNsYXNzOmBaaXBGaWxlYCBpbnN0YW5jZSBjcmVhdGVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAsCisgICB0aGlzIHNob3VsZCBiZSBhCiAgICBzdHJpbmcgbm8gbG9uZ2VyIHRoYW4gNjU1MzUgYnl0ZXMuICBDb21tZW50cyBsb25nZXIgdGhhbiB0aGlzIHdpbGwgYmUKICAgIHRydW5jYXRlZCBpbiB0aGUgd3JpdHRlbiBhcmNoaXZlIHdoZW4gOm1ldGg6YGNsb3NlYCBpcyBjYWxsZWQuCiAKQEAgLTQwNyw4ICs0MTEsNyBAQAogICAgICAgYXJjaGl2ZS4KIAogICAgICAgSWYgdGhlICpvcHRpbWl6ZSogcGFyYW1ldGVyIHRvIDpjbGFzczpgUHlaaXBGaWxlYCB3YXMgbm90IGdpdmVuIG9yIGBgLTFgYCwKLSAgICAgIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgaXMgYSA6ZmlsZTpgXCoucHlvYCBmaWxlIGlmIGF2YWlsYWJsZSwgZWxzZSBhCi0gICAgICA6ZmlsZTpgXCoucHljYCBmaWxlLCBjb21waWxpbmcgaWYgbmVjZXNzYXJ5LgorICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBpcyBhIDpmaWxlOmBcKi5weWNgIGZpbGUsIGNvbXBpbGluZyBpZiBuZWNlc3NhcnkuCiAKICAgICAgIElmIHRoZSAqb3B0aW1pemUqIHBhcmFtZXRlciB0byA6Y2xhc3M6YFB5WmlwRmlsZWAgd2FzIGBgMGBgLCBgYDFgYCBvcgogICAgICAgYGAyYGAsIG9ubHkgZmlsZXMgd2l0aCB0aGF0IG9wdGltaXphdGlvbiBsZXZlbCAoc2VlIDpmdW5jOmBjb21waWxlYCkgYXJlCkBAIC01NzEsNCArNTc0LDMgQEAKIC4uIGF0dHJpYnV0ZTo6IFppcEluZm8uZmlsZV9zaXplCiAKICAgIFNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBmaWxlLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0IGIvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAppbmRleCAyY2Y1MDhiLi44YTVkNWQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKQEAgLTIwLDEwICsyMCwxMCBAQAogaW1wb3J0IGZyb20gdGhlIDpmaWxlOmBsaWIvYCBzdWJkaXJlY3Rvcnkgd2l0aGluIHRoZSBhcmNoaXZlLgogCiBBbnkgZmlsZXMgbWF5IGJlIHByZXNlbnQgaW4gdGhlIFpJUCBhcmNoaXZlLCBidXQgb25seSBmaWxlcyA6ZmlsZTpgLnB5YCBhbmQKLTpmaWxlOmAucHlbY29dYCBhcmUgYXZhaWxhYmxlIGZvciBpbXBvcnQuICBaSVAgaW1wb3J0IG9mIGR5bmFtaWMgbW9kdWxlcworOmZpbGU6YC5weWNgIGFyZSBhdmFpbGFibGUgZm9yIGltcG9ydC4gIFpJUCBpbXBvcnQgb2YgZHluYW1pYyBtb2R1bGVzCiAoOmZpbGU6YC5weWRgLCA6ZmlsZTpgLnNvYCkgaXMgZGlzYWxsb3dlZC4gTm90ZSB0aGF0IGlmIGFuIGFyY2hpdmUgb25seSBjb250YWlucwogOmZpbGU6YC5weWAgZmlsZXMsIFB5dGhvbiB3aWxsIG5vdCBhdHRlbXB0IHRvIG1vZGlmeSB0aGUgYXJjaGl2ZSBieSBhZGRpbmcgdGhlCi1jb3JyZXNwb25kaW5nIDpmaWxlOmAucHljYCBvciA6ZmlsZTpgLnB5b2AgZmlsZSwgbWVhbmluZyB0aGF0IGlmIGEgWklQIGFyY2hpdmUKK2NvcnJlc3BvbmRpbmcgOmZpbGU6YC5weWNgIGZpbGUsIG1lYW5pbmcgdGhhdCBpZiBhIFpJUCBhcmNoaXZlCiBkb2Vzbid0IGNvbnRhaW4gOmZpbGU6YC5weWNgIGZpbGVzLCBpbXBvcnRpbmcgbWF5IGJlIHJhdGhlciBzbG93LgogCiBaSVAgYXJjaGl2ZXMgd2l0aCBhbiBhcmNoaXZlIGNvbW1lbnQgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgpAQCAtMTYxLDQgKzE2MSwzIEBACiAgICA+Pj4gaW1wb3J0IGp3enRocmVhZGluZwogICAgPj4+IGp3enRocmVhZGluZy5fX2ZpbGVfXwogICAgJ2V4YW1wbGUuemlwL2p3enRocmVhZGluZy5weScKLQpkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDI1MWY4MjIuLjVhYjgwODUgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTgsOSArOCwyMyBAQAogaWYgIiVTUEhJTlhCVUlMRCUiIEVRVSAiIiBzZXQgU1BISU5YQlVJTEQ9c3BoaW54LWJ1aWxkDQogaWYgIiVQWVRIT04lIiBFUVUgIiIgc2V0IFBZVEhPTj1weQ0KIA0KLWlmIERFRklORUQgUHJvZ3JhbUZpbGVzKHg4Nikgc2V0IF9QUkdNRkxTPSVQcm9ncmFtRmlsZXMoeDg2KSUNCi1pZiBOT1QgREVGSU5FRCBQcm9ncmFtRmlsZXMoeDg2KSBzZXQgX1BSR01GTFM9JVByb2dyYW1GaWxlcyUNCi1pZiAiJUhUTUxIRUxQJSIgRVFVICIiIHNldCBIVE1MSEVMUD0lX1BSR01GTFMlXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhlDQoraWYgIiUxIiBORVEgImh0bWxoZWxwIiBnb3RvIDpza2lwaGhjc2VhcmNoDQoraWYgZXhpc3QgIiVIVE1MSEVMUCUiIGdvdG8gOnNraXBoaGNzZWFyY2gNCisNCityZW0gU2VhcmNoIGZvciBISEMgaW4gbGlrZWx5IHBsYWNlcw0KK3NldCBIVE1MSEVMUD0NCit3aGVyZSBoaGMgL3EgJiYgc2V0IEhUTUxIRUxQPWhoYyAmJiBnb3RvIDpza2lwaGhjc2VhcmNoDQord2hlcmUgL1IgLi5cZXh0ZXJuYWxzIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyINCitpZiBub3QgZXhpc3QgIiVIVE1MSEVMUCUiIHdoZXJlIC9SICIlUHJvZ3JhbUZpbGVzKHg4NiklIiBoaGMgPiAiJVRFTVAlXGhoYy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgSFRNTEhFTFA9IDwgIiVURU1QJVxoaGMubG9jIiAmIGRlbCAiJVRFTVAlXGhoYy5sb2MiDQoraWYgbm90IGV4aXN0ICIlSFRNTEhFTFAlIiB3aGVyZSAvUiAiJVByb2dyYW1GaWxlcyUiIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyINCitpZiBub3QgZXhpc3QgIiVIVE1MSEVMUCUiICgNCisgICAgZWNoby4NCisgICAgZWNoby5UaGUgSFRNTCBIZWxwIFdvcmtzaG9wIHdhcyBub3QgZm91bmQuICBTZXQgdGhlIEhUTUxIRUxQIHZhcmlhYmxlDQorICAgIGVjaG8udG8gdGhlIHBhdGggdG8gaGhjLmV4ZSBvciBkb3dubG9hZCBhbmQgaW5zdGFsbCBpdCBmcm9tDQorICAgIGVjaG8uaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjY5OTg1DQorICAgIGV4aXQgL0IgMQ0KKykNCis6c2tpcGhoY3NlYXJjaA0KIA0KIGlmICIlRElTVFZFUlNJT04lIiBFUVUgIiIgZm9yIC9mICJ1c2ViYWNrcSIgJSV2IGluIChgJVBZVEhPTiUgdG9vbHMvZXh0ZW5zaW9ucy9wYXRjaGxldmVsLnB5YCkgZG8gc2V0IERJU1RWRVJTSU9OPSUldg0KIA0KQEAgLTM2LDcgKzUwLDggQEAKICAgICBlY2hvLg0KICAgICBlY2hvLklmIHlvdSBkb24ndCBoYXZlIFNwaGlueCBpbnN0YWxsZWQsIGdyYWIgaXQgZnJvbQ0KICAgICBlY2hvLmh0dHA6Ly9zcGhpbngtZG9jLm9yZy8NCi0gICAgZ290byBlbmQNCisgICAgcG9wZA0KKyAgICBleGl0IC9CIDENCiApDQogDQogcmVtIFRhcmdldHMgdGhhdCBkbyByZXF1aXJlIHNwaGlueC1idWlsZCBhbmQgaGF2ZSB0aGVpciBvd24gbGFiZWwNCkBAIC03NiwxNSArOTEsNiBAQAogY21kIC9DICVTUEhJTlhCVUlMRCUgJVNQSElOWE9QVFMlIC1iJTEgLWRidWlsZFxkb2N0cmVlcyAuICVCVUlMRERJUiVcJSoNCiANCiBpZiAiJTEiIEVRVSAiaHRtbGhlbHAiICgNCi0gICAgaWYgIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgKA0KLSAgICAgICAgZWNoby4NCi0gICAgICAgIGVjaG8uVGhlIEhUTUwgSGVscCBXb3Jrc2hvcCB3YXMgbm90IGZvdW5kLiAgU2V0IHRoZSBIVE1MSEVMUCB2YXJpYWJsZQ0KLSAgICAgICAgZWNoby50byB0aGUgcGF0aCB0byBoaGMuZXhlIG9yIGRvd25sb2FkIGFuZCBpbnN0YWxsIGl0IGZyb20NCi0gICAgICAgIGVjaG8uaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjY5OTg1DQotICAgICAgICByZW0gU2V0IGVycm9ybGV2ZWwgdG8gMSBhbmQgZXhpdA0KLSAgICAgICAgY21kIC9DIGV4aXQgL2IgMQ0KLSAgICAgICAgZ290byBlbmQNCi0gICAgKQ0KICAgICBjbWQgL0MgIiVIVE1MSEVMUCUiIGJ1aWxkXGh0bWxoZWxwXHB5dGhvbiVESVNUVkVSU0lPTjouPSUuaGhwDQogICAgIHJlbSBoaGMuZXhlIHNlZW1zIHRvIGFsd2F5cyBleGl0IHdpdGggY29kZSAxLCByZXNldCB0byAwIGZvciBsZXNzIHRoYW4gMg0KICAgICBpZiBub3QgZXJyb3JsZXZlbCAyIGNtZCAvQyBleGl0IC9iIDANCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CmluZGV4IDVkZDE3ZWIuLjAxY2ZkNmQgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CkBAIC01MSw2ICs1MSw5IEBACiAgICAgICAgICAgICAgICAgOiB8IGB3aXRoX3N0bXRgCiAgICAgICAgICAgICAgICAgOiB8IGBmdW5jZGVmYAogICAgICAgICAgICAgICAgIDogfCBgY2xhc3NkZWZgCisgICAgICAgICAgICAgICAgOiB8IGBhc3luY193aXRoX3N0bXRgCisgICAgICAgICAgICAgICAgOiB8IGBhc3luY19mb3Jfc3RtdGAKKyAgICAgICAgICAgICAgICA6IHwgYGFzeW5jX2Z1bmNkZWZgCiAgICBzdWl0ZTogYHN0bXRfbGlzdGAgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIGBzdGF0ZW1lbnRgKyBERURFTlQKICAgIHN0YXRlbWVudDogYHN0bXRfbGlzdGAgTkVXTElORSB8IGBjb21wb3VuZF9zdG10YAogICAgc3RtdF9saXN0OiBgc2ltcGxlX3N0bXRgICgiOyIgYHNpbXBsZV9zdG10YCkqIFsiOyJdCkBAIC02NjAsNiArNjYzLDEzMCBAQAogICAgOnBlcDpgMzEyOWAgLSBDbGFzcyBEZWNvcmF0b3JzCiAKIAorQ29yb3V0aW5lcworPT09PT09PT09PQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworLi4gaW5kZXg6OiBzdGF0ZW1lbnQ6IGFzeW5jIGRlZgorLi4gX2Bhc3luYyBkZWZgOgorCitDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYXN5bmNfZnVuY2RlZjogW2BkZWNvcmF0b3JzYF0gImFzeW5jIiAiZGVmIiBgZnVuY25hbWVgICIoIiBbYHBhcmFtZXRlcl9saXN0YF0gIikiIFsiLT4iIGBleHByZXNzaW9uYF0gIjoiIGBzdWl0ZWAKKworLi4gaW5kZXg6OgorICAga2V5d29yZDogYXN5bmMKKyAgIGtleXdvcmQ6IGF3YWl0CisKK0V4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnkgcG9pbnRzCisoc2VlIDp0ZXJtOmBjb3JvdXRpbmVgKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgYGBhd2FpdGBgIGFuZAorYGBhc3luY2BgIGlkZW50aWZpZXJzIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkczsgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9ucywKKzprZXl3b3JkOmBhc3luYyBmb3JgIGFuZCA6a2V5d29yZDpgYXN5bmMgd2l0aGAgY2FuIG9ubHkgYmUgdXNlZCBpbgorY29yb3V0aW5lIGJvZGllcy4KKworRnVuY3Rpb25zIGRlZmluZWQgd2l0aCBgYGFzeW5jIGRlZmBgIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZSBmdW5jdGlvbnMsCitldmVuIGlmIHRoZXkgZG8gbm90IGNvbnRhaW4gYGBhd2FpdGBgIG9yIGBgYXN5bmNgYCBrZXl3b3Jkcy4KKworSXQgaXMgYSA6ZXhjOmBTeW50YXhFcnJvcmAgdG8gdXNlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbnMgaW4KK2BgYXN5bmMgZGVmYGAgY29yb3V0aW5lcy4KKworQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjo6CisKKyAgICBhc3luYyBkZWYgZnVuYyhwYXJhbTEsIHBhcmFtMik6CisgICAgICAgIGRvX3N0dWZmKCkKKyAgICAgICAgYXdhaXQgc29tZV9jb3JvdXRpbmUoKQorCisKKy4uIGluZGV4Ojogc3RhdGVtZW50OiBhc3luYyBmb3IKKy4uIF9gYXN5bmMgZm9yYDoKKworVGhlIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBhc3luY19mb3Jfc3RtdDogImFzeW5jIiBgZm9yX3N0bXRgCisKK0FuIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmFibGVgIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSBpbiBpdHMKKyppdGVyKiBpbXBsZW1lbnRhdGlvbiwgYW5kIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgIGNhbiBjYWxsIGFzeW5jaHJvbm91cworY29kZSBpbiBpdHMgKm5leHQqIG1ldGhvZC4KKworVGhlIGBgYXN5bmMgZm9yYGAgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyIGFzeW5jaHJvbm91cworaXRlcmF0b3JzLgorCitUaGUgZm9sbG93aW5nIGNvZGU6OgorCisgICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOgorICAgICAgICBCTE9DSworICAgIGVsc2U6CisgICAgICAgIEJMT0NLMgorCitJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzo6CisKKyAgICBpdGVyID0gKElURVIpCisgICAgaXRlciA9IGF3YWl0IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpCisgICAgcnVubmluZyA9IFRydWUKKyAgICB3aGlsZSBydW5uaW5nOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBUQVJHRVQgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYW5leHRfXyhpdGVyKQorICAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOgorICAgICAgICAgICAgcnVubmluZyA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBCTE9DSworICAgIGVsc2U6CisgICAgICAgIEJMT0NLMgorCitTZWUgYWxzbyA6bWV0aDpgX19haXRlcl9fYCBhbmQgOm1ldGg6YF9fYW5leHRfX2AgZm9yIGRldGFpbHMuCisKK0l0IGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgIHRvIHVzZSBgYGFzeW5jIGZvcmBgIHN0YXRlbWVudCBvdXRzaWRlIG9mIGFuCis6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbi4KKworCisuLiBpbmRleDo6IHN0YXRlbWVudDogYXN5bmMgd2l0aAorLi4gX2Bhc3luYyB3aXRoYDoKKworVGhlIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFzeW5jX3dpdGhfc3RtdDogImFzeW5jIiBgd2l0aF9zdG10YAorCitBbiA6dGVybTpgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcmAgaXMgYSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCB0aGF0IGlzCithYmxlIHRvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy4KKworVGhlIGZvbGxvd2luZyBjb2RlOjoKKworICAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6CisgICAgICAgIEJMT0NLCisKK0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOjoKKworICAgIG1nciA9IChFWFBSKQorICAgIGFleGl0ID0gdHlwZShtZ3IpLl9fYWV4aXRfXworICAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncikKKyAgICBleGMgPSBUcnVlCisKKyAgICBWQVIgPSBhd2FpdCBhZW50ZXIKKyAgICB0cnk6CisgICAgICAgIEJMT0NLCisgICAgZXhjZXB0OgorICAgICAgICBpZiBub3QgYXdhaXQgYWV4aXQobWdyLCAqc3lzLmV4Y19pbmZvKCkpOgorICAgICAgICAgICAgcmFpc2UKKyAgICBlbHNlOgorICAgICAgICBhd2FpdCBhZXhpdChtZ3IsIE5vbmUsIE5vbmUsIE5vbmUpCisKK1NlZSBhbHNvIDptZXRoOmBfX2FlbnRlcl9fYCBhbmQgOm1ldGg6YF9fYWV4aXRfX2AgZm9yIGRldGFpbHMuCisKK0l0IGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgIHRvIHVzZSBgYGFzeW5jIHdpdGhgYCBzdGF0ZW1lbnQgb3V0c2lkZSBvZiBhbgorOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24uCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0OTJgIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXgKKworCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAogLi4gWyNdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdCBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAppbmRleCA0YWNmMTNlLi5lMWQ3MWI4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CkBAIC02MTYsNiArNjE2LDE2IEBACiAgICAgICBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCB0aGUgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mCiAgICAgICB2YWx1ZXMgdG8gYmUgcmV0dXJuZWQuCiAKKyAgIENvcm91dGluZSBmdW5jdGlvbnMKKyAgICAgIC4uIGluZGV4OjoKKyAgICAgICAgIHNpbmdsZTogY29yb3V0aW5lOyBmdW5jdGlvbgorCisgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nIDprZXl3b3JkOmBhc3luYyBkZWZgIGlzIGNhbGxlZAorICAgICAgYSA6ZGZuOmBjb3JvdXRpbmUgZnVuY3Rpb25gLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgcmV0dXJucyBhCisgICAgICA6dGVybTpgY29yb3V0aW5lYCBvYmplY3QuICBJdCBtYXkgY29udGFpbiA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zLAorICAgICAgYXMgd2VsbCBhcyA6a2V5d29yZDpgYXN5bmMgd2l0aGAgYW5kIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudHMuIFNlZQorICAgICAgYWxzbyB0aGUgOnJlZjpgY29yb3V0aW5lLW9iamVjdHNgIHNlY3Rpb24uCisKICAgIEJ1aWx0LWluIGZ1bmN0aW9ucwogICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgb2JqZWN0OiBidWlsdC1pbiBmdW5jdGlvbgpAQCAtMTk5MCw2ICsyMDAwLDcgQEAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgICAgIG9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKQpAQCAtMjAwNiwxNSArMjAxNywxNiBAQAogICAgICAgYnVpbHRpbjogcG93CiAgICAgICBidWlsdGluOiBwb3cKIAotICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGArYGAsCi0gICBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLAotICAgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24KLSAgIGBgeCArIHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gOm1ldGg6YF9fYWRkX19gCi0gICBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIDptZXRoOmBfX2Rpdm1vZF9fYCBtZXRob2Qgc2hvdWxkIGJlIHRoZQotICAgZXF1aXZhbGVudCB0byB1c2luZyA6bWV0aDpgX19mbG9vcmRpdl9fYCBhbmQgOm1ldGg6YF9fbW9kX19gOyBpdCBzaG91bGQgbm90IGJlCi0gICByZWxhdGVkIHRvIDptZXRoOmBfX3RydWVkaXZfX2AuICBOb3RlIHRoYXQgOm1ldGg6YF9fcG93X19gIHNob3VsZCBiZSBkZWZpbmVkCi0gICB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4KLSAgIDpmdW5jOmBwb3dgIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC4KKyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMKKyAgIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYEBgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLAorICAgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0bworICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0CisgICBoYXMgYW4gOm1ldGg6YF9fYWRkX19gIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBpcyBjYWxsZWQuICBUaGUKKyAgIDptZXRoOmBfX2Rpdm1vZF9fYCBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nCisgICA6bWV0aDpgX19mbG9vcmRpdl9fYCBhbmQgOm1ldGg6YF9fbW9kX19gOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8KKyAgIDptZXRoOmBfX3RydWVkaXZfX2AuICBOb3RlIHRoYXQgOm1ldGg6YF9fcG93X19gIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdAorICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gOmZ1bmM6YHBvd2AKKyAgIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC4KIAogICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlIHN1cHBsaWVkCiAgICBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLgpAQCAtMjAyMyw2ICsyMDM1LDcgQEAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgICAgIG9iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpCiAgICAgICAgICAgICBvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcikKQEAgLTIwMzgsMTQgKzIwNTEsMTQgQEAKICAgICAgIGJ1aWx0aW46IGRpdm1vZAogICAgICAgYnVpbHRpbjogcG93CiAKLSAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKGBgK2BgLAotICAgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsIDpmdW5jOmBwb3dgLCBgYCoqYGAsCi0gICBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLgotICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlCi0gICBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsjXV8gIEZvcgotICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mCi0gICBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX3JzdWJfX2AgbWV0aG9kLCBgYHkuX19yc3ViX18oeClgYCBpcyBjYWxsZWQgaWYKLSAgIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJucyAqTm90SW1wbGVtZW50ZWQqLgorICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucworICAgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsCisgICA6ZnVuYzpgcG93YCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkgd2l0aCByZWZsZWN0ZWQKKyAgIChzd2FwcGVkKSBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzCisgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50CisgICB0eXBlcy4gWyNdXyBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzCisgICBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX3JzdWJfX2AgbWV0aG9kLCBgYHkuX19yc3ViX18oeClgYAorICAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJucyAqTm90SW1wbGVtZW50ZWQqLgogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IHBvdwogCkBAIC0yMDYzLDYgKzIwNzYsNyBAQAogLi4gbWV0aG9kOjogb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKQorICAgICAgICAgICAgb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcikKICAgICAgICAgICAgIG9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKQogICAgICAgICAgICAgb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKQpAQCAtMjA3NCwxNyArMjA4OCwxNyBAQAogICAgICAgICAgICAgb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpCiAKICAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljIGFzc2lnbm1lbnRzCi0gICAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGAvPWBgLCBgYC8vPWBgLCBgYCU9YGAsIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsCi0gICBgYCY9YGAsIGBgXj1gYCwgYGB8PWBgKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbgotICAgaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzCi0gICBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkCi0gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4KLSAgIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhbiA6bWV0aDpgX19pYWRkX19gIG1ldGhvZCwgYGB4ICs9IHlgYCBpcyBlcXVpdmFsZW50Ci0gICB0byBgYHggPSB4Ll9faWFkZF9fKHkpYGAgLiBPdGhlcndpc2UsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgCi0gICBhcmUgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuIEluIGNlcnRhaW4gc2l0dWF0aW9ucywKLSAgIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnMgKHNlZQotICAgOnJlZjpgZmFxLWF1Z21lbnRlZC1hc3NpZ25tZW50LXR1cGxlLWVycm9yYCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluCi0gICBmYWN0IHBhcnQgb2YgdGhlIGRhdGEgbW9kZWwuCisgICAoYGArPWBgLCBgYC09YGAsIGBgKj1gYCwgYGBAPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCwgYGAqKj1gYCwgYGA8PD1gYCwKKyAgIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUKKyAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwKKyAgIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZQorICAgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KgorICAgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuIDptZXRoOmBfX2lhZGRfX2AgbWV0aG9kLCBgYHggKz0geWBgIGlzCisgICBlcXVpdmFsZW50IHRvIGBgeCA9IHguX19pYWRkX18oeSlgYCAuIE90aGVyd2lzZSwgYGB4Ll9fYWRkX18oeSlgYCBhbmQKKyAgIGBgeS5fX3JhZGRfXyh4KWBgIGFyZSBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC4gSW4KKyAgIGNlcnRhaW4gc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9ycyAoc2VlCisgICA6cmVmOmBmYXEtYXVnbWVudGVkLWFzc2lnbm1lbnQtdHVwbGUtZXJyb3JgKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdAorICAgcGFydCBvZiB0aGUgZGF0YSBtb2RlbC4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19uZWdfXyhzZWxmKQpAQCAtMjI1NCw2ICsyMjY4LDE1NSBAQAogb2JqZWN0IGl0c2VsZiBpbiBvcmRlciB0byBiZSBjb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLgogCiAKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogY29yb3V0aW5lCisKK0Nvcm91dGluZXMKKz09PT09PT09PT0KKworCitBd2FpdGFibGUgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gOnRlcm06YGF3YWl0YWJsZWAgb2JqZWN0IGdlbmVyYWxseSBpbXBsZW1lbnRzIGFuIDptZXRoOmBfX2F3YWl0X19gIG1ldGhvZC4KKzp0ZXJtOmBDb3JvdXRpbmVgIG9iamVjdHMgcmV0dXJuZWQgZnJvbSA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbnMKK2FyZSBhd2FpdGFibGUuCisKKy4uIG5vdGU6OgorCisgICBUaGUgOnRlcm06YGdlbmVyYXRvciBpdGVyYXRvcmAgb2JqZWN0cyByZXR1cm5lZCBmcm9tIGdlbmVyYXRvcnMKKyAgIGRlY29yYXRlZCB3aXRoIDpmdW5jOmB0eXBlcy5jb3JvdXRpbmVgIG9yIDpmdW5jOmBhc3luY2lvLmNvcm91dGluZWAKKyAgIGFyZSBhbHNvIGF3YWl0YWJsZSwgYnV0IHRoZXkgZG8gbm90IGltcGxlbWVudCA6bWV0aDpgX19hd2FpdF9fYC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYXdhaXRfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiA6dGVybTpgaXRlcmF0b3JgLiAgU2hvdWxkIGJlIHVzZWQgdG8gaW1wbGVtZW50CisgICA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3RzLiAgRm9yIGluc3RhbmNlLCA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBpbXBsZW1lbnRzCisgICB0aGlzIG1ldGhvZCB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIDprZXl3b3JkOmBhd2FpdGAgZXhwcmVzc2lvbi4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKy4uIHNlZWFsc286OiA6cGVwOmA0OTJgIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGF3YWl0YWJsZSBvYmplY3RzLgorCisKKy4uIF9jb3JvdXRpbmUtb2JqZWN0czoKKworQ29yb3V0aW5lIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKzp0ZXJtOmBDb3JvdXRpbmVgIG9iamVjdHMgYXJlIDp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdHMuCitBIGNvcm91dGluZSdzIGV4ZWN1dGlvbiBjYW4gYmUgY29udHJvbGxlZCBieSBjYWxsaW5nIDptZXRoOmBfX2F3YWl0X19gIGFuZAoraXRlcmF0aW5nIG92ZXIgdGhlIHJlc3VsdC4gIFdoZW4gdGhlIGNvcm91dGluZSBoYXMgZmluaXNoZWQgZXhlY3V0aW5nIGFuZAorcmV0dXJucywgdGhlIGl0ZXJhdG9yIHJhaXNlcyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCwgYW5kIHRoZSBleGNlcHRpb24ncworOmF0dHI6YH5TdG9wSXRlcmF0aW9uLnZhbHVlYCBhdHRyaWJ1dGUgaG9sZHMgdGhlIHJldHVybiB2YWx1ZS4gIElmIHRoZQorY29yb3V0aW5lIHJhaXNlcyBhbiBleGNlcHRpb24sIGl0IGlzIHByb3BhZ2F0ZWQgYnkgdGhlIGl0ZXJhdG9yLiAgQ29yb3V0aW5lcworc2hvdWxkIG5vdCBkaXJlY3RseSByYWlzZSB1bmhhbmRsZWQgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgZXhjZXB0aW9ucy4KKworQ29yb3V0aW5lcyBhbHNvIGhhdmUgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LCB3aGljaCBhcmUgYW5hbG9nb3VzIHRvCit0aG9zZSBvZiBnZW5lcmF0b3JzIChzZWUgOnJlZjpgZ2VuZXJhdG9yLW1ldGhvZHNgKS4gIEhvd2V2ZXIsIHVubGlrZQorZ2VuZXJhdG9ycywgY29yb3V0aW5lcyBkbyBub3QgZGlyZWN0bHkgc3VwcG9ydCBpdGVyYXRpb24uCisKKy4uIG1ldGhvZDo6IGNvcm91dGluZS5zZW5kKHZhbHVlKQorCisgICBTdGFydHMgb3IgcmVzdW1lcyBleGVjdXRpb24gb2YgdGhlIGNvcm91dGluZS4gIElmICp2YWx1ZSogaXMgYGBOb25lYGAsCisgICB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYWR2YW5jaW5nIHRoZSBpdGVyYXRvciByZXR1cm5lZCBieQorICAgOm1ldGg6YF9fYXdhaXRfX2AuICBJZiAqdmFsdWUqIGlzIG5vdCBgYE5vbmVgYCwgdGhpcyBtZXRob2QgZGVsZWdhdGVzCisgICB0byB0aGUgOm1ldGg6YH5nZW5lcmF0b3Iuc2VuZGAgbWV0aG9kIG9mIHRoZSBpdGVyYXRvciB0aGF0IGNhdXNlZAorICAgdGhlIGNvcm91dGluZSB0byBzdXNwZW5kLiAgVGhlIHJlc3VsdCAocmV0dXJuIHZhbHVlLAorICAgOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIG9yIG90aGVyIGV4Y2VwdGlvbikgaXMgdGhlIHNhbWUgYXMgd2hlbgorICAgaXRlcmF0aW5nIG92ZXIgdGhlIDptZXRoOmBfX2F3YWl0X19gIHJldHVybiB2YWx1ZSwgZGVzY3JpYmVkIGFib3ZlLgorCisuLiBtZXRob2Q6OiBjb3JvdXRpbmUudGhyb3codHlwZVssIHZhbHVlWywgdHJhY2ViYWNrXV0pCisKKyAgIFJhaXNlcyB0aGUgc3BlY2lmaWVkIGV4Y2VwdGlvbiBpbiB0aGUgY29yb3V0aW5lLiAgVGhpcyBtZXRob2QgZGVsZWdhdGVzCisgICB0byB0aGUgOm1ldGg6YH5nZW5lcmF0b3IudGhyb3dgIG1ldGhvZCBvZiB0aGUgaXRlcmF0b3IgdGhhdCBjYXVzZWQKKyAgIHRoZSBjb3JvdXRpbmUgdG8gc3VzcGVuZCwgaWYgaXQgaGFzIHN1Y2ggYSBtZXRob2QuICBPdGhlcndpc2UsCisgICB0aGUgZXhjZXB0aW9uIGlzIHJhaXNlZCBhdCB0aGUgc3VzcGVuc2lvbiBwb2ludC4gIFRoZSByZXN1bHQKKyAgIChyZXR1cm4gdmFsdWUsIDpleGM6YFN0b3BJdGVyYXRpb25gLCBvciBvdGhlciBleGNlcHRpb24pIGlzIHRoZSBzYW1lIGFzCisgICB3aGVuIGl0ZXJhdGluZyBvdmVyIHRoZSA6bWV0aDpgX19hd2FpdF9fYCByZXR1cm4gdmFsdWUsIGRlc2NyaWJlZAorICAgYWJvdmUuICBJZiB0aGUgZXhjZXB0aW9uIGlzIG5vdCBjYXVnaHQgaW4gdGhlIGNvcm91dGluZSwgaXQgcHJvcGFnYXRlcworICAgYmFjayB0byB0aGUgY2FsbGVyLgorCisuLiBtZXRob2Q6OiBjb3JvdXRpbmUuY2xvc2UoKQorCisgICBDYXVzZXMgdGhlIGNvcm91dGluZSB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIGV4aXQuICBJZiB0aGUgY29yb3V0aW5lCisgICBpcyBzdXNwZW5kZWQsIHRoaXMgbWV0aG9kIGZpcnN0IGRlbGVnYXRlcyB0byB0aGUgOm1ldGg6YH5nZW5lcmF0b3IuY2xvc2VgCisgICBtZXRob2Qgb2YgdGhlIGl0ZXJhdG9yIHRoYXQgY2F1c2VkIHRoZSBjb3JvdXRpbmUgdG8gc3VzcGVuZCwgaWYgaXQKKyAgIGhhcyBzdWNoIGEgbWV0aG9kLiAgVGhlbiBpdCByYWlzZXMgOmV4YzpgR2VuZXJhdG9yRXhpdGAgYXQgdGhlCisgICBzdXNwZW5zaW9uIHBvaW50LCBjYXVzaW5nIHRoZSBjb3JvdXRpbmUgdG8gaW1tZWRpYXRlbHkgY2xlYW4gaXRzZWxmIHVwLgorICAgRmluYWxseSwgdGhlIGNvcm91dGluZSBpcyBtYXJrZWQgYXMgaGF2aW5nIGZpbmlzaGVkIGV4ZWN1dGluZywgZXZlbiBpZgorICAgaXQgd2FzIG5ldmVyIHN0YXJ0ZWQuCisKKyAgIENvcm91dGluZSBvYmplY3RzIGFyZSBhdXRvbWF0aWNhbGx5IGNsb3NlZCB1c2luZyB0aGUgYWJvdmUgcHJvY2VzcyB3aGVuCisgICB0aGV5IGFyZSBhYm91dCB0byBiZSBkZXN0cm95ZWQuCisKKworQXN5bmNocm9ub3VzIEl0ZXJhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzCitgYF9fYWl0ZXJfX2BgIGltcGxlbWVudGF0aW9uLCBhbmQgYW4gKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGwKK2FzeW5jaHJvbm91cyBjb2RlIGluIGl0cyBgYF9fYW5leHRfX2BgIG1ldGhvZC4KKworQXN5bmNocm9ub3VzIGl0ZXJhdG9ycyBjYW4gYmUgdXNlZCBpbiBhIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudC4KKworLi4gbWV0aG9kOjogb2JqZWN0Ll9fYWl0ZXJfXyhzZWxmKQorCisgICBNdXN0IHJldHVybiBhbiAqYXdhaXRhYmxlKiByZXN1bHRpbmcgaW4gYW4gKmFzeW5jaHJvbm91cyBpdGVyYXRvciogb2JqZWN0LgorCisuLiBtZXRob2Q6OiBvYmplY3QuX19hbmV4dF9fKHNlbGYpCisKKyAgIE11c3QgcmV0dXJuIGFuICphd2FpdGFibGUqIHJlc3VsdGluZyBpbiBhIG5leHQgdmFsdWUgb2YgdGhlIGl0ZXJhdG9yLiAgU2hvdWxkCisgICByYWlzZSBhIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXJyb3Igd2hlbiB0aGUgaXRlcmF0aW9uIGlzIG92ZXIuCisKK0FuIGV4YW1wbGUgb2YgYW4gYXN5bmNocm9ub3VzIGl0ZXJhYmxlIG9iamVjdDo6CisKKyAgICBjbGFzcyBSZWFkZXI6CisgICAgICAgIGFzeW5jIGRlZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgICAgIC4uLgorCisgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICB2YWwgPSBhd2FpdCBzZWxmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIGlmIHZhbCA9PSBiJyc6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgICAgICByZXR1cm4gdmFsCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKK0FzeW5jaHJvbm91cyBDb250ZXh0IE1hbmFnZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0IGlzIGFibGUgdG8KK3N1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyBgYF9fYWVudGVyX19gYCBhbmQgYGBfX2FleGl0X19gYCBtZXRob2RzLgorCitBc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VycyBjYW4gYmUgdXNlZCBpbiBhIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQuCisKKy4uIG1ldGhvZDo6IG9iamVjdC5fX2FlbnRlcl9fKHNlbGYpCisKKyAgIFRoaXMgbWV0aG9kIGlzIHNlbWFudGljYWxseSBzaW1pbGFyIHRvIHRoZSA6bWV0aDpgX19lbnRlcl9fYCwgd2l0aCBvbmx5CisgICBkaWZmZXJlbmNlIHRoYXQgaXQgbXVzdCByZXR1cm4gYW4gKmF3YWl0YWJsZSouCisKKy4uIG1ldGhvZDo6IG9iamVjdC5fX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKQorCisgICBUaGlzIG1ldGhvZCBpcyBzZW1hbnRpY2FsbHkgc2ltaWxhciB0byB0aGUgOm1ldGg6YF9fZXhpdF9fYCwgd2l0aCBvbmx5CisgICBkaWZmZXJlbmNlIHRoYXQgaXQgbXVzdCByZXR1cm4gYW4gKmF3YWl0YWJsZSouCisKK0FuIGV4YW1wbGUgb2YgYW4gYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciBjbGFzczo6CisKKyAgICBjbGFzcyBBc3luY0NvbnRleHRNYW5hZ2VyOgorICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIGF3YWl0IGxvZygnZW50ZXJpbmcgY29udGV4dCcpCisKKyAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCB0Yik6CisgICAgICAgICAgICBhd2FpdCBsb2coJ2V4aXRpbmcgY29udGV4dCcpCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCiAuLiBbI10gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3QncyB0eXBlLCB1bmRlciBjZXJ0YWluCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdCBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CmluZGV4IDcxNjg0YjcuLjNhNTFmOTcgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0CkBAIC0zOTAsNiArMzkwLDcgQEAKICAgICAgIHRvIHN1Yi1nZW5lcmF0b3JzIGVhc3kuCiAKIC4uIGluZGV4Ojogb2JqZWN0OiBnZW5lcmF0b3IKKy4uIF9nZW5lcmF0b3ItbWV0aG9kczoKIAogR2VuZXJhdG9yLWl0ZXJhdG9yIG1ldGhvZHMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC00NDMsMTIgKzQ0NCwxMiBAQAogLi4gbWV0aG9kOjogZ2VuZXJhdG9yLmNsb3NlKCkKIAogICAgUmFpc2VzIGEgOmV4YzpgR2VuZXJhdG9yRXhpdGAgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gd2FzCi0gICBwYXVzZWQuICBJZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRoZW4gcmFpc2VzIDpleGM6YFN0b3BJdGVyYXRpb25gIChieQotICAgZXhpdGluZyBub3JtYWxseSwgb3IgZHVlIHRvIGFscmVhZHkgYmVpbmcgY2xvc2VkKSBvciA6ZXhjOmBHZW5lcmF0b3JFeGl0YCAoYnkKLSAgIG5vdCBjYXRjaGluZyB0aGUgZXhjZXB0aW9uKSwgY2xvc2UgcmV0dXJucyB0byBpdHMgY2FsbGVyLiAgSWYgdGhlIGdlbmVyYXRvcgotICAgeWllbGRzIGEgdmFsdWUsIGEgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgZ2VuZXJhdG9yIHJhaXNlcyBhbnkKLSAgIG90aGVyIGV4Y2VwdGlvbiwgaXQgaXMgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyLiAgOm1ldGg6YGNsb3NlYCBkb2VzIG5vdGhpbmcKLSAgIGlmIHRoZSBnZW5lcmF0b3IgaGFzIGFscmVhZHkgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24gb3Igbm9ybWFsIGV4aXQuCisgICBwYXVzZWQuICBJZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIHRoZW4gZXhpdHMgZ3JhY2VmdWxseSwgaXMgYWxyZWFkeSBjbG9zZWQsCisgICBvciByYWlzZXMgOmV4YzpgR2VuZXJhdG9yRXhpdGAgKGJ5IG5vdCBjYXRjaGluZyB0aGUgZXhjZXB0aW9uKSwgY2xvc2UKKyAgIHJldHVybnMgdG8gaXRzIGNhbGxlci4gIElmIHRoZSBnZW5lcmF0b3IgeWllbGRzIGEgdmFsdWUsIGEKKyAgIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIGdlbmVyYXRvciByYWlzZXMgYW55IG90aGVyIGV4Y2VwdGlvbiwKKyAgIGl0IGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4gIDptZXRoOmBjbG9zZWAgZG9lcyBub3RoaW5nIGlmIHRoZSBnZW5lcmF0b3IKKyAgIGhhcyBhbHJlYWR5IGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uIG9yIG5vcm1hbCBleGl0LgogCiAuLiBpbmRleDo6IHNpbmdsZTogeWllbGQ7IGV4YW1wbGVzCiAKQEAgLTgxMSw2ICs4MTIsMjAgQEAKICAgIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuCiAKIAorLi4gX2F3YWl0OgorCitBd2FpdCBleHByZXNzaW9uCis9PT09PT09PT09PT09PT09CisKK1N1c3BlbmQgdGhlIGV4ZWN1dGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvbiBhbiA6dGVybTpgYXdhaXRhYmxlYCBvYmplY3QuCitDYW4gb25seSBiZSB1c2VkIGluc2lkZSBhIDp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25gLgorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBhd2FpdDogWyJhd2FpdCJdIGBwcmltYXJ5YAorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworCiAuLiBfcG93ZXI6CiAKIFRoZSBwb3dlciBvcGVyYXRvcgpAQCAtODIwLDcgKzgzNSw3IEBACiBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgVGhlIHN5bnRheCBpczoKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgotICAgcG93ZXI6IGBwcmltYXJ5YCBbIioqIiBgdV9leHByYF0KKyAgIHBvd2VyOiBgYXdhaXRgIFsiKioiIGB1X2V4cHJgXQogCiBUaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlIG9wZXJhdG9ycwogYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluIHRoZSBldmFsdWF0aW9uIG9yZGVyCkBAIC04OTEsOCArOTA2LDkgQEAKIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZSBvcGVyYXRvcnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIG1fZXhwcjogYHVfZXhwcmAgfCBgbV9leHByYCAiKiIgYHVfZXhwcmAgfCBgbV9leHByYCAiLy8iIGB1X2V4cHJgIHwgYG1fZXhwcmAgIi8iIGB1X2V4cHJgCi0gICAgICAgICA6IHwgYG1fZXhwcmAgIiUiIGB1X2V4cHJgCisgICBtX2V4cHI6IGB1X2V4cHJgIHwgYG1fZXhwcmAgIioiIGB1X2V4cHJgIHwgYG1fZXhwcmAgIkAiIGBtX2V4cHJgIHwKKyAgICAgICAgIDogYG1fZXhwcmAgIi8vIiBgdV9leHByYHwgYG1fZXhwcmAgIi8iIGB1X2V4cHJgIHwKKyAgICAgICAgIDogYG1fZXhwcmAgIiUiIGB1X2V4cHJgCiAgICBhX2V4cHI6IGBtX2V4cHJgIHwgYGFfZXhwcmAgIisiIGBtX2V4cHJgIHwgYGFfZXhwcmAgIi0iIGBtX2V4cHJgCiAKIC4uIGluZGV4Ojogc2luZ2xlOiBtdWx0aXBsaWNhdGlvbgpAQCAtOTAzLDYgKzkxOSwxMyBAQAogY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCB0b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UKIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS4KIAorLi4gaW5kZXg6OiBzaW5nbGU6IG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorCitUaGUgYGBAYGAgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24uICBObworYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNQorCiAuLiBpbmRleDo6CiAgICBleGNlcHRpb246IFplcm9EaXZpc2lvbkVycm9yCiAgICBzaW5nbGU6IGRpdmlzaW9uCkBAIC0xMzQ2LDEzICsxMzY5LDE2IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwgcmVtYWluZGVyIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyNdXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgbWF0cml4ICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG11bHRpcGxpY2F0aW9uIGRpdmlzaW9uLCAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVtYWluZGVyIFsjXV8gICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgK3hgYCwgYGAteGBgLCBgYH54YGAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYCoqYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbI11fICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBhd2FpdGBgIGBgeGBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXdhaXQgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgeFtpbmRleF1gYCwgYGB4W2luZGV4OmluZGV4XWBgLCAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgICAgICAgICAgICAgIHwKIHwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgIHwgY2FsbCwgYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKaW5kZXggMTZkMjhkOC4uZDU0OWIyNiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMzM5LDYgKzMzOSw3IEBACiAKICAgICBtb2R1bGUgPSBOb25lCiAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmUgYW5kIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICMgSXQgaXMgYXNzdW1lZCAnZXhlY19tb2R1bGUnIHdpbGwgYWxzbyBiZSBkZWZpbmVkIG9uIHRoZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gTW9kdWxlVHlwZShzcGVjLm5hbWUpCkBAIC00MjcsNyArNDI4LDcgQEAKIGJ5IGltcGxlbWVudGluZyBhIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kLgogSXQgdGFrZXMgb25lIGFyZ3VtZW50LCB0aGUgbW9kdWxlIHNwZWMsIGFuZCByZXR1cm5zIHRoZSBuZXcgbW9kdWxlIG9iamVjdAogdG8gdXNlIGR1cmluZyBsb2FkaW5nLiAgYGBjcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCBuZWVkIHRvIHNldCBhbnkgYXR0cmlidXRlcwotb24gdGhlIG1vZHVsZSBvYmplY3QuICBJZiB0aGUgbG9hZGVyIGRvZXMgbm90IGRlZmluZSBgYGNyZWF0ZV9tb2R1bGUoKWBgLCB0aGUKK29uIHRoZSBtb2R1bGUgb2JqZWN0LiAgSWYgdGhlIG1ldGhvZCByZXR1cm5zIGBgTm9uZWBgLCB0aGUKIGltcG9ydCBtYWNoaW5lcnkgd2lsbCBjcmVhdGUgdGhlIG5ldyBtb2R1bGUgaXRzZWxmLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKQEAgLTQ1OSw3ICs0NjAsMTMgQEAKIAogICAgICogSWYgbG9hZGluZyBmYWlscywgdGhlIGxvYWRlciBtdXN0IHJlbW92ZSBhbnkgbW9kdWxlcyBpdCBoYXMgaW5zZXJ0ZWQKICAgICAgIGludG8gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYnV0IGl0IG11c3QgcmVtb3ZlICoqb25seSoqIHRoZSBmYWlsaW5nCi0gICAgICBtb2R1bGUsIGFuZCBvbmx5IGlmIHRoZSBsb2FkZXIgaXRzZWxmIGhhcyBsb2FkZWQgaXQgZXhwbGljaXRseS4KKyAgICAgIG1vZHVsZShzKSwgYW5kIG9ubHkgaWYgdGhlIGxvYWRlciBpdHNlbGYgaGFzIGxvYWRlZCB0aGUgbW9kdWxlKHMpCisgICAgICBleHBsaWNpdGx5LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgQSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGlzIHJhaXNlZCB3aGVuIGBgZXhlY19tb2R1bGUoKWBgIGlzIGRlZmluZWQgYnV0CisgICBgYGNyZWF0ZV9tb2R1bGUoKWBgIGlzIG5vdC4gU3RhcnRpbmcgaW4gUHl0aG9uIDMuNiBpdCB3aWxsIGJlIGFuIGVycm9yIHRvIG5vdAorICAgZGVmaW5lIGBgY3JlYXRlX21vZHVsZSgpYGAgb24gYSBsb2FkZXIgYXR0YWNoZWQgdG8gYSBNb2R1bGVTcGVjLgogCiBTdWJtb2R1bGVzCiAtLS0tLS0tLS0tCkBAIC02NzQsNyArNjgxLDcgQEAKIAogVGhlIGRlZmF1bHQgc2V0IG9mIHBhdGggZW50cnkgZmluZGVycyBpbXBsZW1lbnQgYWxsIHRoZSBzZW1hbnRpY3MgZm9yIGZpbmRpbmcKIG1vZHVsZXMgb24gdGhlIGZpbGUgc3lzdGVtLCBoYW5kbGluZyBzcGVjaWFsIGZpbGUgdHlwZXMgc3VjaCBhcyBQeXRob24gc291cmNlCi1jb2RlIChgYC5weWBgIGZpbGVzKSwgUHl0aG9uIGJ5dGUgY29kZSAoYGAucHljYGAgYW5kIGBgLnB5b2BgIGZpbGVzKSBhbmQKK2NvZGUgKGBgLnB5YGAgZmlsZXMpLCBQeXRob24gYnl0ZSBjb2RlIChgYC5weWNgYCBmaWxlcykgYW5kCiBzaGFyZWQgbGlicmFyaWVzIChlLmcuIGBgLnNvYGAgZmlsZXMpLiBXaGVuIHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgemlwaW1wb3J0YAogbW9kdWxlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB0aGUgZGVmYXVsdCBwYXRoIGVudHJ5IGZpbmRlcnMgYWxzbyBoYW5kbGUKIGxvYWRpbmcgYWxsIG9mIHRoZXNlIGZpbGUgdHlwZXMgKG90aGVyIHRoYW4gc2hhcmVkIGxpYnJhcmllcykgZnJvbSB6aXBmaWxlcy4KQEAgLTc4OCw2ICs3OTUsMTUgQEAKIHRvIGFzayB0aGUgZmluZGVyIGZvciBhIG1vZHVsZSBzcGVjLCB3aGljaCBpcyB0aGVuIHVzZWQgd2hlbiBsb2FkaW5nIHRoZQogbW9kdWxlLgogCitUaGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSAtLSBkZW5vdGVkIGJ5IGFuIGVtcHR5IHN0cmluZyAtLSBpcyBoYW5kbGVkCitzbGlnaHRseSBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGVudHJpZXMgb24gOmRhdGE6YHN5cy5wYXRoYC4gRmlyc3QsIGlmIHRoZQorY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyBmb3VuZCB0byBub3QgZXhpc3QsIG5vIHZhbHVlIGlzIHN0b3JlZCBpbgorOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4gU2Vjb25kLCB0aGUgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHdvcmtpbmcKK2RpcmVjdG9yeSBpcyBsb29rZWQgdXAgZnJlc2ggZm9yIGVhY2ggbW9kdWxlIGxvb2t1cC4gVGhpcmQsIHRoZSBwYXRoIHVzZWQgZm9yCis6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGFuZCByZXR1cm5lZCBieQorOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWNgIHdpbGwgYmUgdGhlIGFjdHVhbCBjdXJyZW50Cit3b3JraW5nIGRpcmVjdG9yeSBhbmQgbm90IHRoZSBlbXB0eSBzdHJpbmcuCisKIFBhdGggZW50cnkgZmluZGVyIHByb3RvY29sCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCBhMTI2NWNmLi44YWQ5NzVmIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTMxMyw3ICszMTMsNyBAQAogKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzCiAqICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zCiAqICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gYFByb3BMaXN0LnR4dAotICA8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL1Byb3BMaXN0LnR4dD5gXyB0byBzdXBwb3J0IGJhY2t3YXJkcworICA8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL1Byb3BMaXN0LnR4dD5gXyB0byBzdXBwb3J0IGJhY2t3YXJkcwogICBjb21wYXRpYmlsaXR5CiAqICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZQogCkBAIC02OTIsNyArNjkyLDcgQEAKIAogVGhlIGZvbGxvd2luZyB0b2tlbnMgYXJlIG9wZXJhdG9yczo6CiAKLSAgICsgICAgICAgLSAgICAgICAqICAgICAgICoqICAgICAgLyAgICAgICAvLyAgICAgICUKKyAgICsgICAgICAgLSAgICAgICAqICAgICAgICoqICAgICAgLyAgICAgICAvLyAgICAgICUgICAgICBACiAgICA8PCAgICAgID4+ICAgICAgJiAgICAgICB8ICAgICAgIF4gICAgICAgfgogICAgPCAgICAgICA+ICAgICAgIDw9ICAgICAgPj0gICAgICA9PSAgICAgICE9CiAKQEAgLTcwOCw3ICs3MDgsNyBAQAogCiAgICAoICAgICAgICkgICAgICAgWyAgICAgICBdICAgICAgIHsgICAgICAgfQogICAgLCAgICAgICA6ICAgICAgIC4gICAgICAgOyAgICAgICBAICAgICAgID0gICAgICAgLT4KLSAgICs9ICAgICAgLT0gICAgICAqPSAgICAgIC89ICAgICAgLy89ICAgICAlPQorICAgKz0gICAgICAtPSAgICAgICo9ICAgICAgLz0gICAgICAvLz0gICAgICU9ICAgICAgQD0KICAgICY9ICAgICAgfD0gICAgICBePSAgICAgID4+PSAgICAgPDw9ICAgICAqKj0KIAogVGhlIHBlcmlvZCBjYW4gYWxzbyBvY2N1ciBpbiBmbG9hdGluZy1wb2ludCBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLiAgQSBzZXF1ZW5jZQpAQCAtNzI5LDQgKzcyOSw0IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4zLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCA4OTQ2YjRmLi41ZjYwNTQwIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC0yODEsNyArMjgxLDcgQEAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQ6IGBhdWd0YXJnZXRgIGBhdWdvcGAgKGBleHByZXNzaW9uX2xpc3RgIHwgYHlpZWxkX2V4cHJlc3Npb25gKQogICAgYXVndGFyZ2V0OiBgaWRlbnRpZmllcmAgfCBgYXR0cmlidXRlcmVmYCB8IGBzdWJzY3JpcHRpb25gIHwgYHNsaWNpbmdgCi0gICBhdWdvcDogIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iCisgICBhdWdvcDogIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IgogICAgICAgICA6IHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IgogCiAoU2VlIHNlY3Rpb24gOnJlZjpgcHJpbWFyaWVzYCBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKaW5kZXggNjRhNTY2NS4uZDQ0YjA1MiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CkBAIC0zNCw3ICszNCw3IEBACiAKIAogSVNTVUVfVVJJID0gJ2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy40LyVzJworU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNS8lcycKIAogIyBtb25rZXktcGF0Y2ggcmVTVCBwYXJzZXIgdG8gZGlzYWJsZSBhbHBoYWJldGljIGFuZCByb21hbiBlbnVtZXJhdGVkIGxpc3RzCiBmcm9tIGRvY3V0aWxzLnBhcnNlcnMucnN0LnN0YXRlcyBpbXBvcnQgQm9keQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgppbmRleCAwMzI1MzFkLi42ZTlkZWQzIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgpAQCAtMTIxLDYgKzEyMSw4IEBACiBsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQogbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKIGxpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsIj4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiIjIwMDE6ZGI4OjoxIiIpLnJldmVyc2VfcG9pbnRlciIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwiPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIiMjAwMTpkYjg6OjEiIikucmV2ZXJzZV9wb2ludGVyIgogbGlicmFyeS9pcGFkZHJlc3MsLDo6LCIiIjo6YWJjOjc6ZGVmIiIiCiBsaWJyYXJ5L2lwYWRkcmVzcywsOmRlZiwiIiI6OmFiYzo3OmRlZiIiIgogbGlicmFyeS9pcGFkZHJlc3MsLDo6LDo6RkZGRi85NgpAQCAtMTM4LDggKzE0MCw2IEBACiBsaWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAogbGlicmFyeS9tbWFwLCw6aTIsb2JqW2kxOmkyXQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAjIGVxdWl2IHRvIGBsWzIwXWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKHNsaWNlKDIsIDcpLCkpICAjIGVxdWl2IHRvIGBsWzI6N11gIgogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLDpxdWV1ZSwiPj4+IFF1ZXVlTWFuYWdlci5yZWdpc3RlcignZ2V0X3F1ZXVlJywgY2FsbGFibGU9bGFtYmRhOnF1ZXVlKSIKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZigpYCBhbmQgYGcoKWAgYWNjZXNzaWJsZSB2aWEgcHJveHkKIGxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgcmVnaXN0ZXIgdGhlIEZvbyBjbGFzczsgbWFrZSBgZygpYCBhbmQgYF9oKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CkBAIC0xNzYsOCArMTc2LDYgQEAKIGxpYnJhcnkvc3NsLCw6b3BzLEVtYWlsIEFkZHJlc3MgW106b3BzQG15c2VydmVyLm15Z3JvdXAubXlvcmdhbml6YXRpb24uY29tCiBsaWJyYXJ5L3NzbCwsOlNvbWUsIkxvY2FsaXR5IE5hbWUgKGVnLCBjaXR5KSBbXTpTb21lIENpdHkiCiBsaWJyYXJ5L3NzbCwsOlVTLENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkgW0FVXTpVUwotbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGFbOjotMV0udG9saXN0KCkKLWxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBhWzo6Ml0udG9saXN0KCkKIGxpYnJhcnkvc3RkdHlwZXMsLDplbmQsc1tzdGFydDplbmRdCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gaGFzaCh2Wzo6LTJdKSA9PSBoYXNoKGInYWJjZWZnJ1s6Oi0yXSkKIGxpYnJhcnkvc3RkdHlwZXMsLDpsZW4sc1tsZW4ocyk6bGVuKHMpXQpAQCAtMjA3LDE2ICsyMDUsNiBAQAogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZSIKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmFjdG9yLCJmb3IgYWN0b3IgaW4gcm9vdC5maW5kYWxsKCdyZWFsX3BlcnNvbjphY3RvcicsIG5zKToiCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOm5hbWUsIm5hbWUgPSBhY3Rvci5maW5kKCdyZWFsX3BlcnNvbjpuYW1lJywgbnMpIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsImZvciBjaGFyIGluIGFjdG9yLmZpbmRhbGwoJ3JvbGU6Y2hhcmFjdGVyJywgbnMpOiIKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aApAQCAtMjQzLDcgKzIzMSw2IEBACiB0dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsImZpZWxkcyA9IHN0cnVjdC51bnBhY2soJzxJSUlISCcsIGRhdGFbc3RhcnQ6c3RhcnQrMTZdKSIKIHR1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxmaWxlbmFtZSA9IGRhdGFbc3RhcnQ6c3RhcnQrZmlsZW5hbWVzaXplXQogdHV0b3JpYWwvc3RkbGliMiwsOldhcm5pbmcsV0FSTklORzpyb290Oldhcm5pbmc6Y29uZmlnIGZpbGUgc2VydmVyLmNvbmYgbm90IGZvdW5kCi10dXRvcmlhbC92ZW52LCw6YzdiOTY0NWE2ZjM1LCJQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KSIKIHVzaW5nL2NtZGxpbmUsLDpjYXRlZ29yeSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCiB1c2luZy9jbWRsaW5lLCw6bGluZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQpAQCAtMjY0LDYgKzI1MSwxMSBAQAogd2hhdHNuZXcvMi41LCw6bWVtb3J5LDptZW1vcnk6CiB3aGF0c25ldy8yLjUsLDpzdGVwLFtzdGFydDpzdG9wOnN0ZXBdCiB3aGF0c25ldy8yLjUsLDpzdG9wLFtzdGFydDpzdG9wOnN0ZXBdCit3aGF0c25ldy8yLjcsLDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCit3aGF0c25ldy8yLjcsLDo6LD4+PiB1cmxwYXJzZS51cmxwYXJzZSgnaHR0cDovL1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdL2ZvbycpCit3aGF0c25ldy8yLjcsLDpTdW5kYXksJzIwMDk6NDpTdW5kYXknCit3aGF0c25ldy8yLjcsLDpDb29raWUsImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKK3doYXRzbmV3LzIuNywsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKIHdoYXRzbmV3LzMuMiwsOmFmZmUsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKIHdoYXRzbmV3LzMuMiwsOmFmZmUsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQogd2hhdHNuZXcvMy4yLCw6YmVlZiwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgpAQCAtMjc5LDE0ICsyNzEsMjcgQEAKIHdoYXRzbmV3LzMuMiwsOmd6LCI+Pj4gd2l0aCB0YXJmaWxlLm9wZW4obmFtZT0nbXlhcmNoaXZlLnRhci5neicsIG1vZGU9J3c6Z3onKSBhcyB0ZjoiCiB3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259CiB3aGF0c25ldy8zLjIsLDpwcmVmaXgsem9wZS1jb25mID0gJHtjdXN0b206cHJlZml4fS9ldGMvem9wZS5jb25mCi13aGF0c25ldy9jaGFuZ2Vsb2csLDpwbGF0Zm9ybSw6cGxhdGZvcm06CiB3aGF0c25ldy9jaGFuZ2Vsb2csLDpneiwiOiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICIidzpneiIiIG1vZGUgZGlkbid0Igotd2hhdHNuZXcvY2hhbmdlbG9nLCw6UHl0aG9uQ21kLCJXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkIgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBGaXggRlRQIHRlc3RzIGZvciBJUHY2LCBiaW5kIHRvICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiLiIKIHdoYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOnBhc3N3b3JkLHVzZXI6cGFzc3dvcmQKLXdoYXRzbmV3LzIuNyw3ODAsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKLXdoYXRzbmV3LzIuNyw5MDcsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNyw5MDcsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDE2NTcsOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKLXdoYXRzbmV3LzIuNywxNjU3LDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCitsaWJyYXJ5L3RhcmZpbGUsMTQ5LDp4eiwneDp4eicKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDI5MCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzMyLDphY3RvciwiZm9yIGFjdG9yIGluIHJvb3QuZmluZGFsbCgncmVhbF9wZXJzb246YWN0b3InLCBucyk6IgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzMyLDpuYW1lLCJuYW1lID0gYWN0b3IuZmluZCgncmVhbF9wZXJzb246bmFtZScsIG5zKSIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMzMiw6Y2hhcmFjdGVyLCJmb3IgY2hhciBpbiBhY3Rvci5maW5kYWxsKCdyb2xlOmNoYXJhY3RlcicsIG5zKToiCitsaWJyYXJ5L3ppcGFwcCwzMSw6bWFpbiwiJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICIibXlhcHA6bWFpbiIiIgorbGlicmFyeS96aXBhcHAsODIsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKK2xpYnJhcnkvemlwYXBwLDE1NSw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gbVs6OjJdLnRvbGlzdCgpCitsaWJyYXJ5L3N5cywxMTE1LGAsIyBgYHdyYXBwZXJgYCBjcmVhdGVzIGEgYGB3cmFwKGNvcm8pYGAgY29yb3V0aW5lOgordHV0b3JpYWwvdmVudiw3Nyw6YzdiOTY0NWE2ZjM1LCJQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KSIKK3doYXRzbmV3LzMuNSw5NjUsOnJvb3QsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCit3aGF0c25ldy8zLjUsOTY1LDp3YXJuaW5nLCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJword2hhdHNuZXcvMy41LDEyOTIsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKQord2hhdHNuZXcvMy41LDEzNTQsOnJvb3QsRVJST1I6cm9vdDpleGNlcHRpb24KK3doYXRzbmV3LzMuNSwxMzU0LDpleGNlcHRpb24sRVJST1I6cm9vdDpleGNlcHRpb24KZGlmZiAtLWdpdCBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCmluZGV4IGFiZGYwNzAuLjc4ZTljNGYgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKKysrIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbApAQCAtMyw4ICszLDcgQEAKIDxoMz5Eb2NzIGZvciBvdGhlciB2ZXJzaW9uczwvaDM+CiA8dWw+CiAgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8yLjcvIj5QeXRob24gMi43IChzdGFibGUpPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjMvIj5QeXRob24gMy4zIChzdGFibGUpPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjUvIj5QeXRob24gMy41IChpbiBkZXZlbG9wbWVudCk8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC8iPlB5dGhvbiAzLjQgKHN0YWJsZSk8L2E+PC9saT4KICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG9jL3ZlcnNpb25zLyI+T2xkIHZlcnNpb25zPC9hPjwvbGk+CiA8L3VsPgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0IGIvRG9jL3R1dG9yaWFsL2FwcGVuZGl4LnJzdAppbmRleCBjZTUwYzFlLi5lMDQ0NTliIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvYXBwZW5kaXgucnN0CisrKyBiL0RvYy90dXRvcmlhbC9hcHBlbmRpeC5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKIE9uIEJTRCdpc2ggVW5peCBzeXN0ZW1zLCBQeXRob24gc2NyaXB0cyBjYW4gYmUgbWFkZSBkaXJlY3RseSBleGVjdXRhYmxlLCBsaWtlCiBzaGVsbCBzY3JpcHRzLCBieSBwdXR0aW5nIHRoZSBsaW5lIDo6CiAKLSAgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMuNAorICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMy41CiAKIChhc3N1bWluZyB0aGF0IHRoZSBpbnRlcnByZXRlciBpcyBvbiB0aGUgdXNlcidzIDplbnZ2YXI6YFBBVEhgKSBhdCB0aGUgYmVnaW5uaW5nCiBvZiB0aGUgc2NyaXB0IGFuZCBnaXZpbmcgdGhlIGZpbGUgYW4gZXhlY3V0YWJsZSBtb2RlLiAgVGhlIGBgIyFgYCBtdXN0IGJlIHRoZQpAQCAtMTA3LDcgKzEwNyw3IEBACiAKICAgID4+PiBpbXBvcnQgc2l0ZQogICAgPj4+IHNpdGUuZ2V0dXNlcnNpdGVwYWNrYWdlcygpCi0gICAnL2hvbWUvdXNlci8ubG9jYWwvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJworICAgJy9ob21lL3VzZXIvLmxvY2FsL2xpYi9weXRob24zLjUvc2l0ZS1wYWNrYWdlcycKIAogTm93IHlvdSBjYW4gY3JlYXRlIGEgZmlsZSBuYW1lZCA6ZmlsZTpgdXNlcmN1c3RvbWl6ZS5weWAgaW4gdGhhdCBkaXJlY3RvcnkgYW5kCiBwdXQgYW55dGhpbmcgeW91IHdhbnQgaW4gaXQuICBJdCB3aWxsIGFmZmVjdCBldmVyeSBpbnZvY2F0aW9uIG9mIFB5dGhvbiwgdW5sZXNzCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0IGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdAppbmRleCAxZWEyOTlmLi4wZDUxNDgwIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKQEAgLTczLDEwICs3MywxMSBAQAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZXMgKngqIGFwcGVhcnMgaW4gdGhlIGxpc3QuCiAKIAotLi4gbWV0aG9kOjogbGlzdC5zb3J0KCkKKy4uIG1ldGhvZDo6IGxpc3Quc29ydChrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkKICAgIDpub2luZGV4OgogCi0gICBTb3J0IHRoZSBpdGVtcyBvZiB0aGUgbGlzdCBpbiBwbGFjZS4KKyAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGluIHBsYWNlICh0aGUgYXJndW1lbnRzIGNhbiBiZSB1c2VkIGZvciBzb3J0CisgICBjdXN0b21pemF0aW9uLCBzZWUgOmZ1bmM6YHNvcnRlZGAgZm9yIHRoZWlyIGV4cGxhbmF0aW9uKS4KIAogCiAuLiBtZXRob2Q6OiBsaXN0LnJldmVyc2UoKQpAQCAtNjExLDE4ICs2MTIsMTggQEAKICAgIG9yYW5nZQogICAgcGVhcgogCi1UbyBjaGFuZ2UgYSBzZXF1ZW5jZSB5b3UgYXJlIGl0ZXJhdGluZyBvdmVyIHdoaWxlIGluc2lkZSB0aGUgbG9vcCAoZm9yCi1leGFtcGxlIHRvIGR1cGxpY2F0ZSBjZXJ0YWluIGl0ZW1zKSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZmlyc3QgbWFrZQotYSBjb3B5LiAgTG9vcGluZyBvdmVyIGEgc2VxdWVuY2UgZG9lcyBub3QgaW1wbGljaXRseSBtYWtlIGEgY29weS4gIFRoZSBzbGljZQotbm90YXRpb24gbWFrZXMgdGhpcyBlc3BlY2lhbGx5IGNvbnZlbmllbnQ6OgorSXQgaXMgc29tZXRpbWVzIHRlbXB0aW5nIHRvIGNoYW5nZSBhIGxpc3Qgd2hpbGUgeW91IGFyZSBsb29waW5nIG92ZXIgaXQ7Citob3dldmVyLCBpdCBpcyBvZnRlbiBzaW1wbGVyIGFuZCBzYWZlciB0byBjcmVhdGUgYSBuZXcgbGlzdCBpbnN0ZWFkLiA6OgogCi0gICA+Pj4gd29yZHMgPSBbJ2NhdCcsICd3aW5kb3cnLCAnZGVmZW5lc3RyYXRlJ10KLSAgID4+PiBmb3IgdyBpbiB3b3Jkc1s6XTogICMgTG9vcCBvdmVyIGEgc2xpY2UgY29weSBvZiB0aGUgZW50aXJlIGxpc3QuCi0gICAuLi4gICAgIGlmIGxlbih3KSA+IDY6Ci0gICAuLi4gICAgICAgICB3b3Jkcy5pbnNlcnQoMCwgdykKKyAgID4+PiBpbXBvcnQgbWF0aAorICAgPj4+IHJhd19kYXRhID0gWzU2LjIsIGZsb2F0KCdOYU4nKSwgNTEuNywgNTUuMywgNTIuNSwgZmxvYXQoJ05hTicpLCA0Ny44XQorICAgPj4+IGZpbHRlcmVkX2RhdGEgPSBbXQorICAgPj4+IGZvciB2YWx1ZSBpbiByYXdfZGF0YToKKyAgIC4uLiAgICAgaWYgbm90IG1hdGguaXNuYW4odmFsdWUpOgorICAgLi4uICAgICAgICAgZmlsdGVyZWRfZGF0YS5hcHBlbmQodmFsdWUpCiAgICAuLi4KLSAgID4+PiB3b3JkcwotICAgWydkZWZlbmVzdHJhdGUnLCAnY2F0JywgJ3dpbmRvdycsICdkZWZlbmVzdHJhdGUnXQorICAgPj4+IGZpbHRlcmVkX2RhdGEKKyAgIFs1Ni4yLCA1MS43LCA1NS4zLCA1Mi41LCA0Ny44XQogCiAKIC4uIF90dXQtY29uZGl0aW9uczoKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IGRkNmIxYTkuLmU5NjYwODUgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjRgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjVgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjQKKyAgIHB5dGhvbjMuNQogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zNGAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjM1YCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzQKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zNQogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTYsOCArOTYsOCBAQAogcHJpbnRzIGEgd2VsY29tZSBtZXNzYWdlIHN0YXRpbmcgaXRzIHZlcnNpb24gbnVtYmVyIGFuZCBhIGNvcHlyaWdodCBub3RpY2UKIGJlZm9yZSBwcmludGluZyB0aGUgZmlyc3QgcHJvbXB0OjoKIAotICAgJCBweXRob24zLjQKLSAgIFB5dGhvbiAzLjQgKGRlZmF1bHQsIE1hciAxNiAyMDE0LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy41CisgICBQeXRob24gMy41IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKaW5kZXggZmQzNjFhZS4uOWFlNjRiMCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdApAQCAtMjE2LDE1ICsyMTYsMTUgQEAKICAgc3RhdGVtZW50cywgdGhlIGBgLU9PYGAgc3dpdGNoIHJlbW92ZXMgYm90aCBhc3NlcnQgc3RhdGVtZW50cyBhbmQgX19kb2NfXwogICBzdHJpbmdzLiAgU2luY2Ugc29tZSBwcm9ncmFtcyBtYXkgcmVseSBvbiBoYXZpbmcgdGhlc2UgYXZhaWxhYmxlLCB5b3Ugc2hvdWxkCiAgIG9ubHkgdXNlIHRoaXMgb3B0aW9uIGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLiAgIk9wdGltaXplZCIgbW9kdWxlcyBoYXZlCi0gIGEgLnB5byByYXRoZXIgdGhhbiBhIC5weWMgc3VmZml4IGFuZCBhcmUgdXN1YWxseSBzbWFsbGVyLiAgRnV0dXJlIHJlbGVhc2VzIG1heQorICBhbiBgYG9wdC1gYCB0YWcgYW5kIGFyZSB1c3VhbGx5IHNtYWxsZXIuICBGdXR1cmUgcmVsZWFzZXMgbWF5CiAgIGNoYW5nZSB0aGUgZWZmZWN0cyBvZiBvcHRpbWl6YXRpb24uCiAKLSogQSBwcm9ncmFtIGRvZXNuJ3QgcnVuIGFueSBmYXN0ZXIgd2hlbiBpdCBpcyByZWFkIGZyb20gYSBgYC5weWNgYCBvciBgYC5weW9gYAorKiBBIHByb2dyYW0gZG9lc24ndCBydW4gYW55IGZhc3RlciB3aGVuIGl0IGlzIHJlYWQgZnJvbSBhIGBgLnB5Y2BgCiAgIGZpbGUgdGhhbiB3aGVuIGl0IGlzIHJlYWQgZnJvbSBhIGBgLnB5YGAgZmlsZTsgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGZhc3RlcgotICBhYm91dCBgYC5weWNgYCBvciBgYC5weW9gYCBmaWxlcyBpcyB0aGUgc3BlZWQgd2l0aCB3aGljaCB0aGV5IGFyZSBsb2FkZWQuCisgIGFib3V0IGBgLnB5Y2BgIGZpbGVzIGlzIHRoZSBzcGVlZCB3aXRoIHdoaWNoIHRoZXkgYXJlIGxvYWRlZC4KIAotKiBUaGUgbW9kdWxlIDptb2Q6YGNvbXBpbGVhbGxgIGNhbiBjcmVhdGUgLnB5YyBmaWxlcyAob3IgLnB5byBmaWxlcyB3aGVuCi0gIDpvcHRpb246YC1PYCBpcyB1c2VkKSBmb3IgYWxsIG1vZHVsZXMgaW4gYSBkaXJlY3RvcnkuCisqIFRoZSBtb2R1bGUgOm1vZDpgY29tcGlsZWFsbGAgY2FuIGNyZWF0ZSAucHljIGZpbGVzIGZvciBhbGwgbW9kdWxlcyBpbiBhCisgIGRpcmVjdG9yeS4KIAogKiBUaGVyZSBpcyBtb3JlIGRldGFpbCBvbiB0aGlzIHByb2Nlc3MsIGluY2x1ZGluZyBhIGZsb3cgY2hhcnQgb2YgdGhlCiAgIGRlY2lzaW9ucywgaW4gUEVQIDMxNDcuCkBAIC01NDgsNCArNTQ4LDMgQEAKIC4uIFsjXSBJbiBmYWN0IGZ1bmN0aW9uIGRlZmluaXRpb25zIGFyZSBhbHNvICdzdGF0ZW1lbnRzJyB0aGF0IGFyZSAnZXhlY3V0ZWQnOyB0aGUKICAgIGV4ZWN1dGlvbiBvZiBhIG1vZHVsZS1sZXZlbCBmdW5jdGlvbiBkZWZpbml0aW9uIGVudGVycyB0aGUgZnVuY3Rpb24gbmFtZSBpbgogICAgdGhlIG1vZHVsZSdzIGdsb2JhbCBzeW1ib2wgdGFibGUuCi0KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggNzJkNTFkZS4uMDk1NGViYSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzQnCisgICAnQzpcXFB5dGhvbjM1JwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKaW5kZXggYzAxOTdlYS4uZjdkMmEwYSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdApAQCAtMTgsNyArMTgsNyBAQAogCiAgICA+Pj4gaW1wb3J0IHJlcHJsaWIKICAgID4+PiByZXBybGliLnJlcHIoc2V0KCdzdXBlcmNhbGlmcmFnaWxpc3RpY2V4cGlhbGlkb2Npb3VzJykpCi0gICAic2V0KFsnYScsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAuLi5dKSIKKyAgICJ7J2EnLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgLi4ufSIKIAogVGhlIDptb2Q6YHBwcmludGAgbW9kdWxlIG9mZmVycyBtb3JlIHNvcGhpc3RpY2F0ZWQgY29udHJvbCBvdmVyIHByaW50aW5nIGJvdGgKIGJ1aWx0LWluIGFuZCB1c2VyIGRlZmluZWQgb2JqZWN0cyBpbiBhIHdheSB0aGF0IGlzIHJlYWRhYmxlIGJ5IHRoZSBpbnRlcnByZXRlci4KQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzQvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zNS9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IGE0NjM0OWIuLmM3MjEwYTAgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTE5MCwxMyArMTkwLDE2IEBACiAKIC4uIGNtZG9wdGlvbjo6IC1iCiAKLSAgIElzc3VlIGEgd2FybmluZyB3aGVuIGNvbXBhcmluZyBzdHIgYW5kIGJ5dGVzLiBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQorICAgSXNzdWUgYSB3YXJuaW5nIHdoZW4gY29tcGFyaW5nIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YCB3aXRoCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agd2l0aCA6Y2xhc3M6YGludGAuICBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZQogICAgb3B0aW9uIGlzIGdpdmVuIHR3aWNlICg6b3B0aW9uOmAtYmJgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6IDMuNQorICAgICAgQWZmZWN0cyBjb21wYXJpc29ucyBvZiA6Y2xhc3M6YGJ5dGVzYCB3aXRoIDpjbGFzczpgaW50YC4KIAogLi4gY21kb3B0aW9uOjogLUIKIAotICAgSWYgZ2l2ZW4sIFB5dGhvbiB3b24ndCB0cnkgdG8gd3JpdGUgYGAucHljYGAgb3IgYGAucHlvYGAgZmlsZXMgb24gdGhlCisgICBJZiBnaXZlbiwgUHl0aG9uIHdvbid0IHRyeSB0byB3cml0ZSBgYC5weWNgYCBmaWxlcyBvbiB0aGUKICAgIGltcG9ydCBvZiBzb3VyY2UgbW9kdWxlcy4gIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkRPTlRXUklURUJZVEVDT0RFYC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwppbmRleCA0NWJkZDVhLi4wMmJjYmVlIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTIxLDExICsyMSwxMSBAQAogT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91CiBkb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIGM6XFB5dGhvbjM0XFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisgICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gYzpcUHl0aG9uMzVcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKIAogb3IgZXF1aXZhbGVudGx5OjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzRccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CiAKIFRoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgogCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcgYi9Eb2MvdXNpbmcvd2luX2luc3RhbGxlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjODhhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy91c2luZy93aW5faW5zdGFsbGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYzA1ZjcyYS4uMjExNmMxMCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtNywyMiArNywyMTMgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioKIAogLi4gc2VjdGlvbmF1dGhvcjo6IFJvYmVydCBMZWhtYW5uIDxsZWhtYW5ucm9AZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPgogCiBUaGlzIGRvY3VtZW50IGFpbXMgdG8gZ2l2ZSBhbiBvdmVydmlldyBvZiBXaW5kb3dzLXNwZWNpZmljIGJlaGF2aW91ciB5b3Ugc2hvdWxkCiBrbm93IGFib3V0IHdoZW4gdXNpbmcgUHl0aG9uIG9uIE1pY3Jvc29mdCBXaW5kb3dzLgogCi0uLiBYWFggKG5jb2dobGFuKQotCi0gICBUaGlzIGxvb2tzIHJhdGhlciBzdGFsZSB0byBtZS4uLgotCi0KIEluc3RhbGxpbmcgUHl0aG9uCiA9PT09PT09PT09PT09PT09PQogCi1Vbmxpa2UgbW9zdCBVbml4IHN5c3RlbXMgYW5kIHNlcnZpY2VzLCBXaW5kb3dzIGRvZXMgbm90IHJlcXVpcmUgUHl0aG9uIG5hdGl2ZWx5Ci1hbmQgdGh1cyBkb2VzIG5vdCBwcmUtaW5zdGFsbCBhIHZlcnNpb24gb2YgUHl0aG9uLiAgSG93ZXZlciwgdGhlIENQeXRob24gdGVhbQorVW5saWtlIG1vc3QgVW5peCBzeXN0ZW1zIGFuZCBzZXJ2aWNlcywgV2luZG93cyBkb2VzIG5vdCBpbmNsdWRlIGEgc3lzdGVtCitzdXBwb3J0ZWQgaW5zdGFsbGF0aW9uIG9mIFB5dGhvbi4gVG8gbWFrZSBQeXRob24gYXZhaWxhYmxlLCB0aGUgQ1B5dGhvbiB0ZWFtCiBoYXMgY29tcGlsZWQgV2luZG93cyBpbnN0YWxsZXJzIChNU0kgcGFja2FnZXMpIHdpdGggZXZlcnkgYHJlbGVhc2UKLTxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4KKzxodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLz5gXyBmb3IgbWFueSB5ZWFycy4gVGhlc2UgaW5zdGFsbGVycworYXJlIHByaW1hcmlseSBpbnRlbmRlZCB0byBhZGQgYSBwZXItdXNlciBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLCB3aXRoIHRoZQorY29yZSBpbnRlcnByZXRlciBhbmQgbGlicmFyeSBiZWluZyB1c2VkIGJ5IGEgc2luZ2xlIHVzZXIuIFRoZSBpbnN0YWxsZXIgaXMgYWxzbworYWJsZSB0byBpbnN0YWxsIGZvciBhbGwgdXNlcnMgb2YgYSBzaW5nbGUgbWFjaGluZSwgYW5kIGEgc2VwYXJhdGUgWklQIGZpbGUgaXMKK2F2YWlsYWJsZSBmb3IgYXBwbGljYXRpb24tbG9jYWwgZGlzdHJpYnV0aW9ucy4KKworSW5zdGFsbGF0aW9uIFN0ZXBzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRm91ciBQeXRob24gMy41IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlIDMyLWJpdAorYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbCBpbml0aWFsCitkb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcworbmVjZXNzYXJ5LiBUaGUgKm9mZmxpbmUgaW5zdGFsbGVyKiBpbmNsdWRlcyB0aGUgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIGEKK2RlZmF1bHQgaW5zdGFsbGF0aW9uIGFuZCBvbmx5IHJlcXVpcmVzIGFuIGludGVybmV0IGNvbm5lY3Rpb24gZm9yIG9wdGlvbmFsCitmZWF0dXJlcy4gU2VlIDpyZWY6YGluc3RhbGwtbGF5b3V0LW9wdGlvbmAgZm9yIG90aGVyIHdheXMgdG8gYXZvaWQgZG93bmxvYWRpbmcKK2R1cmluZyBpbnN0YWxsYXRpb24uCisKK0FmdGVyIHN0YXJ0aW5nIHRoZSBpbnN0YWxsZXIsIG9uZSBvZiB0d28gb3B0aW9ucyBtYXkgYmUgc2VsZWN0ZWQ6CisKKy4uIGltYWdlOjogd2luX2luc3RhbGxlci5wbmcKKworSWYgeW91IHNlbGVjdCAiSW5zdGFsbCBOb3ciOgorCisqIFlvdSB3aWxsICpub3QqIG5lZWQgdG8gYmUgYW4gYWRtaW5pc3RyYXRvciAodW5sZXNzIGEgc3lzdGVtIHVwZGF0ZSBmb3IgdGhlCisgIEMgUnVudGltZSBMaWJyYXJ5IGlzIHJlcXVpcmVkIG9yIHlvdSBpbnN0YWxsIHRoZSA6cmVmOmBsYXVuY2hlcmAgZm9yIGFsbAorICB1c2VycykKKyogUHl0aG9uIHdpbGwgYmUgaW5zdGFsbGVkIGludG8geW91ciB1c2VyIGRpcmVjdG9yeQorKiBUaGUgOnJlZjpgbGF1bmNoZXJgIHdpbGwgYmUgaW5zdGFsbGVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9uIGF0IHRoZSBib3R0b20KKyAgb2YgdGhlIGZpcnN0IHBhY2UKKyogVGhlIHN0YW5kYXJkIGxpYnJhcnksIHRlc3Qgc3VpdGUsIGxhdW5jaGVyIGFuZCBwaXAgd2lsbCBiZSBpbnN0YWxsZWQKKyogSWYgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIHRvIHlvdXIgOmVudnZhcjpgUEFUSGAKKyogU2hvcnRjdXRzIHdpbGwgb25seSBiZSB2aXNpYmxlIGZvciB0aGUgY3VycmVudCB1c2VyCisKK1NlbGVjdGluZyAiQ3VzdG9taXplIGluc3RhbGxhdGlvbiIgd2lsbCBhbGxvdyB5b3UgdG8gc2VsZWN0IHRoZSBmZWF0dXJlcyB0bworaW5zdGFsbCwgdGhlIGluc3RhbGxhdGlvbiBsb2NhdGlvbiBhbmQgb3RoZXIgb3B0aW9ucyBvciBwb3N0LWluc3RhbGwgYWN0aW9ucy4KK1RvIGluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgb3IgYmluYXJpZXMsIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHRoaXMgb3B0aW9uLgorCitUbyBwZXJmb3JtIGFuIGFsbC11c2VycyBpbnN0YWxsYXRpb24sIHlvdSBzaG91bGQgc2VsZWN0ICJDdXN0b21pemUKK2luc3RhbGxhdGlvbiIuIEluIHRoaXMgY2FzZToKKworKiBZb3UgbWF5IGJlIHJlcXVpcmVkIHRvIHByb3ZpZGUgYWRtaW5pc3RyYXRpdmUgY3JlZGVudGlhbHMgb3IgYXBwcm92YWwKKyogUHl0aG9uIHdpbGwgYmUgaW5zdGFsbGVkIGludG8gdGhlIFByb2dyYW0gRmlsZXMgZGlyZWN0b3J5CisqIFRoZSA6cmVmOmBsYXVuY2hlcmAgd2lsbCBiZSBpbnN0YWxsZWQgaW50byB0aGUgV2luZG93cyBkaXJlY3RvcnkKKyogT3B0aW9uYWwgZmVhdHVyZXMgbWF5IGJlIHNlbGVjdGVkIGR1cmluZyBpbnN0YWxsYXRpb24KKyogVGhlIHN0YW5kYXJkIGxpYnJhcnkgY2FuIGJlIHByZS1jb21waWxlZCB0byBieXRlY29kZQorKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAorKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCisKKy4uIF9pbnN0YWxsLXF1aWV0LW9wdGlvbjoKKworSW5zdGFsbGluZyBXaXRob3V0IFVJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbiB0aGUgaW5zdGFsbGVyIFVJIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBmcm9tIHRoZQorY29tbWFuZCBsaW5lLCBhbGxvd2luZyBzY3JpcHRlZCBpbnN0YWxsZXJzIHRvIHJlcGxpY2F0ZSBhbiBpbnN0YWxsYXRpb24gb24gbWFueQorbWFjaGluZXMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLiAgVGhlc2Ugb3B0aW9ucyBtYXkgYWxzbyBiZSBzZXQgd2l0aG91dAorc3VwcHJlc3NpbmcgdGhlIFVJIGluIG9yZGVyIHRvIGNoYW5nZSBzb21lIG9mIHRoZSBkZWZhdWx0cy4KKworVG8gY29tcGxldGVseSBoaWRlIHRoZSBpbnN0YWxsZXIgVUkgYW5kIGluc3RhbGwgUHl0aG9uIHNpbGVudGx5LCBwYXNzIHRoZQorYGAvcXVpZXRgYCBvcHRpb24uIFRvIHNraXAgcGFzdCB0aGUgdXNlciBpbnRlcmFjdGlvbiBidXQgc3RpbGwgZGlzcGxheQorcHJvZ3Jlc3MgYW5kIGVycm9ycywgcGFzcyB0aGUgYGAvcGFzc2l2ZWBgIG9wdGlvbi4gVGhlIGBgL3VuaW5zdGFsbGBgCitvcHRpb24gbWF5IGJlIHBhc3NlZCB0byBpbW1lZGlhdGVseSBiZWdpbiByZW1vdmluZyBQeXRob24gLSBubyBwcm9tcHQgd2lsbCBiZQorZGlzcGxheWVkLgorCitBbGwgb3RoZXIgb3B0aW9ucyBhcmUgcGFzc2VkIGFzIGBgbmFtZT12YWx1ZWBgLCB3aGVyZSB0aGUgdmFsdWUgaXMgdXN1YWxseQorYGAwYGAgdG8gZGlzYWJsZSBhIGZlYXR1cmUsIGBgMWBgIHRvIGVuYWJsZSBhIGZlYXR1cmUsIG9yIGEgcGF0aC4gVGhlIGZ1bGwgbGlzdAorb2YgYXZhaWxhYmxlIG9wdGlvbnMgaXMgc2hvd24gYmVsb3cuCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE5hbWUgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWZhdWx0ICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgSW5zdGFsbEFsbFVzZXJzICAgICAgICAgICB8IFBlcmZvcm0gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBUYXJnZXREaXIgICAgICAgICAgICAgICAgIHwgVGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgICAgICAgICAgIHwgU2VsZWN0ZWQgYmFzZWQgb24gICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEluc3RhbGxBbGxVc2VycyAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIgIHwgVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAgIHwgOmZpbGU6YCVQcm9ncmFtRmlsZXMlXFxcIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvciBhbGwtdXNlciBpbnN0YWxscyAgICAgICAgICAgICAgICB8IFB5dGhvbiBYLllgIG9yIDpmaWxlOmBcICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAlUHJvZ3JhbUZpbGVzKHg4NiklXFxcICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIFguWWAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IERlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIgfCBUaGUgZGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSBmb3IgICAgfCA6ZmlsZTpgJUxvY2FsQXBwRGF0YSVcXFwgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwganVzdC1mb3ItbWUgaW5zdGFsbHMgICAgICAgICAgICAgICAgIHwgUHJvZ3JhbXNcXFB5dGhvblhZYCBvciAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmaWxlOmAlTG9jYWxBcHBEYXRhJVxcXCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQcm9ncmFtc1xcUHl0aG9uWFktMzJgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRGVmYXVsdEN1c3RvbVRhcmdldERpciAgICB8IFRoZSBkZWZhdWx0IGN1c3RvbSBpbnN0YWxsIGRpcmVjdG9yeSB8IChlbXB0eSkgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ZWQgaW4gdGhlIFVJICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQXNzb2NpYXRlRmlsZXMgICAgICAgICAgICB8IENyZWF0ZSBmaWxlIGFzc29jaWF0aW9ucyBpZiB0aGUgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBsYXVuY2hlciBpcyBhbHNvIGluc3RhbGxlZC4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29tcGlsZUFsbCAgICAgICAgICAgICAgICB8IENvbXBpbGUgYWxsIGBgLnB5YGAgZmlsZXMgdG8gICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYC5weWNgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgUHJlcGVuZFBhdGggICAgICAgICAgICAgICB8IEFkZCBpbnN0YWxsIGFuZCBTY3JpcHRzIGRpcmVjdG9yaWVzICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aG8gOmVudnZhcjpgUEFUSGAgYW5kIGBgLlBZYGAgdG8gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOmVudnZhcjpgUEFUSEVYVGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNob3J0Y3V0cyAgICAgICAgICAgICAgICAgfCBDcmVhdGUgc2hvcnRjdXRzIGZvciB0aGUgaW50ZXJwcmV0ZXIsfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG9jdW1lbnRhdGlvbiBhbmQgSURMRSBpZiBpbnN0YWxsZWQuIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfZG9jICAgICAgICAgICAgICAgfCBJbnN0YWxsIFB5dGhvbiBtYW51YWwgICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9kZWJ1ZyAgICAgICAgICAgICB8IEluc3RhbGwgZGVidWcgYmluYXJpZXMgICAgICAgICAgICAgICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2RldiAgICAgICAgICAgICAgIHwgSW5zdGFsbCBkZXZlbG9wZXIgaGVhZGVycyBhbmQgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGxpYnJhcmllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2V4ZSAgICAgICAgICAgICAgIHwgSW5zdGFsbCA6ZmlsZTpgcHl0aG9uLmV4ZWAgYW5kICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlbGF0ZWQgZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX2xhdW5jaGVyICAgICAgICAgIHwgSW5zdGFsbCA6cmVmOmBsYXVuY2hlcmAuICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluc3RhbGxMYXVuY2hlckFsbFVzZXJzICAgfCBJbnN0YWxscyA6cmVmOmBsYXVuY2hlcmAgZm9yIGFsbCAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXNlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfbGliICAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgYW5kICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXh0ZW5zaW9uIG1vZHVsZXMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfcGlwICAgICAgICAgICAgICAgfCBJbnN0YWxsIGJ1bmRsZWQgcGlwIGFuZCBzZXR1cHRvb2xzICAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV9zeW1ib2xzICAgICAgICAgICB8IEluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgKGAqYC5wZGIpICB8IDAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBJbmNsdWRlX3RjbHRrICAgICAgICAgICAgIHwgSW5zdGFsbCBUY2wvVGsgc3VwcG9ydCBhbmQgSURMRSAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEluY2x1ZGVfdGVzdCAgICAgICAgICAgICAgfCBJbnN0YWxsIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZSAgfCAxICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgSW5jbHVkZV90b29scyAgICAgICAgICAgICB8IEluc3RhbGwgdXRpbGl0eSBzY3JpcHRzICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBMYXVuY2hlck9ubHkgICAgICAgICAgICAgIHwgT25seSBpbnN0YWxscyB0aGUgbGF1bmNoZXIuIFRoaXMgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpbGwgb3ZlcnJpZGUgbW9zdCBvdGhlciBvcHRpb25zLiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBTaW1wbGVJbnN0YWxsICAgICAgICAgICAgIHwgRGlzYWJsZSBtb3N0IGluc3RhbGwgVUkgICAgICAgICAgICAgIHwgMCAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbiAgfCBBIGN1c3RvbSBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB0aGUgfCAoZW1wdHkpICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2ltcGxpZmllZCBpbnN0YWxsIFVJIGlzIHVzZWQuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0ZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKK3lvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CisKKyAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisKK1RvIGFsbG93IHVzZXJzIHRvIGVhc2lseSBpbnN0YWxsIGEgcGVyc29uYWwgY29weSBvZiBQeXRob24gd2l0aG91dCB0aGUgdGVzdAorc3VpdGUsIHlvdSBjb3VsZCBwcm92aWRlIGEgc2hvcnRjdXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQuIFRoaXMgd2lsbAorZGlzcGxheSBhIHNpbXBsaWZpZWQgaW5pdGlhbCBwYWdlIGFuZCBkaXNhbGxvdyBjdXN0b21pemF0aW9uOjoKKworICAgIHB5dGhvbi0zLjUuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCisgICAgICAgIFNpbXBsZUluc3RhbGw9MSBTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb249Ikp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlLiIKKworKE5vdGUgdGhhdCBvbWl0dGluZyB0aGUgbGF1bmNoZXIgYWxzbyBvbWl0cyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlzIG9ubHkKK3JlY29tbWVuZGVkIGZvciBwZXItdXNlciBpbnN0YWxscyB3aGVuIHRoZXJlIGlzIGFsc28gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24KK3RoYXQgaW5jbHVkZWQgdGhlIGxhdW5jaGVyLikKKworVGhlIG9wdGlvbnMgbGlzdGVkIGFib3ZlIGNhbiBhbHNvIGJlIHByb3ZpZGVkIGluIGEgZmlsZSBuYW1lZCBgYHVuYXR0ZW5kLnhtbGBgCithbG9uZ3NpZGUgdGhlIGV4ZWN1dGFibGUuIFRoaXMgZmlsZSBzcGVjaWZpZXMgYSBsaXN0IG9mIG9wdGlvbnMgYW5kIHZhbHVlcy4KK1doZW4gYSB2YWx1ZSBpcyBwcm92aWRlZCBhcyBhbiBhdHRyaWJ1dGUsIGl0IHdpbGwgYmUgY29udmVydGVkIHRvIGEgbnVtYmVyIGlmCitwb3NzaWJsZS4gVmFsdWVzIHByb3ZpZGVkIGFzIGVsZW1lbnQgdGV4dCBhcmUgYWx3YXlzIGxlZnQgYXMgc3RyaW5ncy4gVGhpcworZXhhbXBsZSBmaWxlIHNldHMgdGhlIHNhbWUgb3B0aW9ucyBhbmQgdGhlIHByZXZpb3VzIGV4YW1wbGU6OgorCisgICAgPE9wdGlvbnM+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5zdGFsbEFsbFVzZXJzIiBWYWx1ZT0ibm8iIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5jbHVkZV9sYXVuY2hlciIgVmFsdWU9IjAiIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iSW5jbHVkZV90ZXN0IiBWYWx1ZT0ibm8iIC8+CisgICAgICAgIDxPcHRpb24gTmFtZT0iU2ltcGxlSW5zdGFsbCIgVmFsdWU9InllcyIgLz4KKyAgICAgICAgPE9wdGlvbiBOYW1lPSJTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb24iPkp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlPC9PcHRpb24+CisgICAgPC9PcHRpb25zPgorCisuLiBfaW5zdGFsbC1sYXlvdXQtb3B0aW9uOgorCitJbnN0YWxsaW5nIFdpdGhvdXQgRG93bmxvYWRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyBzb21lIGZlYXR1cmVzIG9mIFB5dGhvbiBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBpbml0aWFsIGluc3RhbGxlciBkb3dubG9hZCwKK3NlbGVjdGluZyB0aG9zZSBmZWF0dXJlcyBtYXkgcmVxdWlyZSBhbiBpbnRlcm5ldCBjb25uZWN0aW9uLiAgVG8gYXZvaWQgdGhpcworbmVlZCwgYWxsIHBvc3NpYmxlIGNvbXBvbmVudHMgbWF5IGJlIGRvd25sb2FkZWQgb24tZGVtYW5kIHRvIGNyZWF0ZSBhIGNvbXBsZXRlCisqbGF5b3V0KiB0aGF0IHdpbGwgbm8gbG9uZ2VyIHJlcXVpcmUgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiByZWdhcmRsZXNzIG9mIHRoZQorc2VsZWN0ZWQgZmVhdHVyZXMuIE5vdGUgdGhhdCB0aGlzIGRvd25sb2FkIG1heSBiZSBiaWdnZXIgdGhhbiByZXF1aXJlZCwgYnV0Cit3aGVyZSBhIGxhcmdlIG51bWJlciBvZiBpbnN0YWxsYXRpb25zIGFyZSBnb2luZyB0byBiZSBwZXJmb3JtZWQgaXQgaXMgdmVyeQordXNlZnVsIHRvIGhhdmUgYSBsb2NhbGx5IGNhY2hlZCBjb3B5LgorCitFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIENvbW1hbmQgUHJvbXB0IHRvIGRvd25sb2FkIGFsbCBwb3NzaWJsZQorcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNS4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCituYW1lIG9mIHlvdXIgaW5zdGFsbGVyLCBhbmQgdG8gY3JlYXRlIGxheW91dHMgaW4gdGhlaXIgb3duIGRpcmVjdG9yaWVzIHRvCithdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgorCis6OgorCisgICAgcHl0aG9uLTMuNS4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQorCitZb3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgYGAvcXVpZXRgYCBvcHRpb24gdG8gaGlkZSB0aGUgcHJvZ3Jlc3MgZGlzcGxheS4KKworCitPdGhlciBQbGF0Zm9ybXMKKy0tLS0tLS0tLS0tLS0tLQogCiBXaXRoIG9uZ29pbmcgZGV2ZWxvcG1lbnQgb2YgUHl0aG9uLCBzb21lIHBsYXRmb3JtcyB0aGF0IHVzZWQgdG8gYmUgc3VwcG9ydGVkCiBlYXJsaWVyIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIChkdWUgdG8gdGhlIGxhY2sgb2YgdXNlcnMgb3IgZGV2ZWxvcGVycykuCkBAIC02NiwxOSArMjU3LDMxIEBACiBgQWN0aXZlUHl0aG9uIDxodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVweXRob24vPmBfCiAgICAgSW5zdGFsbGVyIHdpdGggbXVsdGktcGxhdGZvcm0gY29tcGF0aWJpbGl0eSwgZG9jdW1lbnRhdGlvbiwgUHlXaW4zMgogCi1gRW50aG91Z2h0IFB5dGhvbiBEaXN0cmlidXRpb24gPGh0dHBzOi8vd3d3LmVudGhvdWdodC5jb20vcHJvZHVjdHMvZXBkLz5gXwotICAgIFBvcHVsYXIgbW9kdWxlcyAoc3VjaCBhcyBQeVdpbjMyKSB3aXRoIHRoZWlyIHJlc3BlY3RpdmUgZG9jdW1lbnRhdGlvbiwgdG9vbAotICAgIHN1aXRlIGZvciBidWlsZGluZyBleHRlbnNpYmxlIFB5dGhvbiBhcHBsaWNhdGlvbnMKK2BBbmFjb25kYSA8aHR0cDovL3d3dy5jb250aW51dW0uaW8vZG93bmxvYWRzLz5gXworICAgIFBvcHVsYXIgc2NpZW50aWZpYyBtb2R1bGVzIChzdWNoIGFzIG51bXB5LCBzY2lweSBhbmQgcGFuZGFzKSBhbmQgdGhlCisgICAgYGBjb25kYWBgIHBhY2thZ2UgbWFuYWdlci4KIAotTm90aWNlIHRoYXQgdGhlc2UgcGFja2FnZXMgYXJlIGxpa2VseSB0byBpbnN0YWxsICpvbGRlciogdmVyc2lvbnMgb2YgUHl0aG9uLgorYENhbm9weSA8aHR0cHM6Ly93d3cuZW50aG91Z2h0LmNvbS9wcm9kdWN0cy9jYW5vcHkvPmBfCisgICAgQSAiY29tcHJlaGVuc2l2ZSBQeXRob24gYW5hbHlzaXMgZW52aXJvbm1lbnQiIHdpdGggZWRpdG9ycyBhbmQgb3RoZXIKKyAgICBkZXZlbG9wbWVudCB0b29scy4KKworYFdpblB5dGhvbiA8aHR0cHM6Ly93aW5weXRob24uZ2l0aHViLmlvLz5gXworICAgIFdpbmRvd3Mtc3BlY2lmaWMgZGlzdHJpYnV0aW9uIHdpdGggcHJlYnVpbHQgc2NpZW50aWZpYyBwYWNrYWdlcyBhbmQKKyAgICB0b29scyBmb3IgYnVpbGRpbmcgcGFja2FnZXMuCisKK05vdGUgdGhhdCB0aGVzZSBwYWNrYWdlcyBtYXkgbm90IGluY2x1ZGUgdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiBQeXRob24gb3IKK290aGVyIGxpYnJhcmllcywgYW5kIGFyZSBub3QgbWFpbnRhaW5lZCBvciBzdXBwb3J0ZWQgYnkgdGhlIGNvcmUgUHl0aG9uIHRlYW0uCiAKIAogCiBDb25maWd1cmluZyBQeXRob24KID09PT09PT09PT09PT09PT09PQogCi1JbiBvcmRlciB0byBydW4gUHl0aG9uIGZsYXdsZXNzbHksIHlvdSBtaWdodCBoYXZlIHRvIGNoYW5nZSBjZXJ0YWluIGVudmlyb25tZW50Ci1zZXR0aW5ncyBpbiBXaW5kb3dzLgorVG8gcnVuIFB5dGhvbiBjb252ZW5pZW50bHkgZnJvbSBhIGNvbW1hbmQgcHJvbXB0LCB5b3UgbWlnaHQgY29uc2lkZXIgY2hhbmdpbmcKK3NvbWUgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gV2luZG93cy4gIFdoaWxlIHRoZSBpbnN0YWxsZXIgcHJvdmlkZXMgYW4KK29wdGlvbiB0byBjb25maWd1cmUgdGhlIFBBVEggYW5kIFBBVEhFWFQgdmFyaWFibGVzIGZvciB5b3UsIHRoaXMgaXMgb25seQorcmVsaWFibGUgZm9yIGEgc2luZ2xlLCBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24uICBJZiB5b3UgcmVndWxhcmx5IHVzZSBtdWx0aXBsZQordmVyc2lvbnMgb2YgUHl0aG9uLCBjb25zaWRlciB1c2luZyB0aGUgOnJlZjpgbGF1bmNoZXJgLgogCiAKIC4uIF9zZXR0aW5nLWVudnZhcnM6CkBAIC04NiwxNjMgKzI4OSw4NiBAQAogRXhjdXJzdXM6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2luZG93cyBoYXMgYSBidWlsdC1pbiBkaWFsb2cgZm9yIGNoYW5naW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9sbG93aW5nCi1ndWlkZSBhcHBsaWVzIHRvIFhQIGNsYXNzaWNhbCB2aWV3KTogUmlnaHQtY2xpY2sgdGhlIGljb24gZm9yIHlvdXIgbWFjaGluZQotKHVzdWFsbHkgbG9jYXRlZCBvbiB5b3VyIERlc2t0b3AgYW5kIGNhbGxlZCAiTXkgQ29tcHV0ZXIiKSBhbmQgY2hvb3NlCi06bWVudXNlbGVjdGlvbjpgUHJvcGVydGllc2AgdGhlcmUuICBUaGVuLCBvcGVuIHRoZSA6Z3VpbGFiZWw6YEFkdmFuY2VkYCB0YWIKLWFuZCBjbGljayB0aGUgOmd1aWxhYmVsOmBFbnZpcm9ubWVudCBWYXJpYWJsZXNgIGJ1dHRvbi4KK1dpbmRvd3MgYWxsb3dzIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBiZSBjb25maWd1cmVkIHBlcm1hbmVudGx5IGF0IGJvdGggdGhlCitVc2VyIGxldmVsIGFuZCB0aGUgU3lzdGVtIGxldmVsLCBvciB0ZW1wb3JhcmlseSBpbiBhIGNvbW1hbmQgcHJvbXB0LgogCi1JbiBzaG9ydCwgeW91ciBwYXRoIGlzOgorVG8gdGVtcG9yYXJpbHkgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcywgb3BlbiBDb21tYW5kIFByb21wdCBhbmQgdXNlIHRoZQorOmNvbW1hbmQ6YHNldGAgY29tbWFuZDo6CiAKLSAgICA6bWVudXNlbGVjdGlvbjpgTXkgQ29tcHV0ZXIKLSAgICAtLT4gUHJvcGVydGllcwotICAgIC0tPiBBZHZhbmNlZAotICAgIC0tPiBFbnZpcm9ubWVudCBWYXJpYWJsZXNgCisgICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNTslUEFUSCUKKyAgICBDOlw+c2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKKyAgICBDOlw+cHl0aG9uCiAKK1RoZXNlIGNoYW5nZXMgd2lsbCBhcHBseSB0byBhbnkgZnVydGhlciBjb21tYW5kcyBleGVjdXRlZCBpbiB0aGF0IGNvbnNvbGUsIGFuZAord2lsbCBiZSBpbmhlcml0ZWQgYnkgYW55IGFwcGxpY2F0aW9ucyBzdGFydGVkIGZyb20gdGhlIGNvbnNvbGUuCisKK0luY2x1ZGluZyB0aGUgdmFyaWFibGUgbmFtZSB3aXRoaW4gcGVyY2VudCBzaWducyB3aWxsIGV4cGFuZCB0byB0aGUgZXhpc3RpbmcKK3ZhbHVlLCBhbGxvd2luZyB5b3UgdG8gYWRkIHlvdXIgbmV3IHZhbHVlIGF0IGVpdGhlciB0aGUgc3RhcnQgb3IgdGhlIGVuZC4KK01vZGlmeWluZyA6ZW52dmFyOmBQQVRIYCBieSBhZGRpbmcgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nCis6cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgdG8gdGhlIHN0YXJ0IGlzIGEgY29tbW9uIHdheSB0byBlbnN1cmUgdGhlIGNvcnJlY3QgdmVyc2lvbgorb2YgUHl0aG9uIGlzIGxhdW5jaGVkLgorCitUbyBwZXJtYW5lbnRseSBtb2RpZnkgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBjbGljayBTdGFydCBhbmQgc2VhcmNoCitmb3IgJ2VkaXQgZW52aXJvbm1lbnQgdmFyaWFibGVzJywgb3Igb3BlbiBTeXN0ZW0gcHJvcGVydGllcywgOmd1aWxhYmVsOmBBZHZhbmNlZAorc3lzdGVtIHNldHRpbmdzYCBhbmQgY2xpY2sgdGhlIDpndWlsYWJlbDpgRW52aXJvbm1lbnQgVmFyaWFibGVzYCBidXR0b24uCiBJbiB0aGlzIGRpYWxvZywgeW91IGNhbiBhZGQgb3IgbW9kaWZ5IFVzZXIgYW5kIFN5c3RlbSB2YXJpYWJsZXMuIFRvIGNoYW5nZQogU3lzdGVtIHZhcmlhYmxlcywgeW91IG5lZWQgbm9uLXJlc3RyaWN0ZWQgYWNjZXNzIHRvIHlvdXIgbWFjaGluZQogKGkuZS4gQWRtaW5pc3RyYXRvciByaWdodHMpLgogCi1Bbm90aGVyIHdheSBvZiBhZGRpbmcgdmFyaWFibGVzIHRvIHlvdXIgZW52aXJvbm1lbnQgaXMgdXNpbmcgdGhlIDpjb21tYW5kOmBzZXRgCi1jb21tYW5kOjoKKy4uIG5vdGU6OgogCi0gICAgc2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKKyAgICBXaW5kb3dzIHdpbGwgY29uY2F0ZW5hdGUgVXNlciB2YXJpYWJsZXMgKmFmdGVyKiBTeXN0ZW0gdmFyaWFibGVzLCB3aGljaCBtYXkKKyAgICBjYXVzZSB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBtb2RpZnlpbmcgOmVudnZhcjpgUEFUSGAuCiAKLVRvIG1ha2UgdGhpcyBzZXR0aW5nIHBlcm1hbmVudCwgeW91IGNvdWxkIGFkZCB0aGUgY29ycmVzcG9uZGluZyBjb21tYW5kIGxpbmUgdG8KLXlvdXIgOmZpbGU6YGF1dG9leGVjLmJhdGAuIDpwcm9ncmFtOmBtc2NvbmZpZ2AgaXMgYSBncmFwaGljYWwgaW50ZXJmYWNlIHRvIHRoaXMKLWZpbGUuCi0KLVZpZXdpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBhbHNvIGJlIGRvbmUgbW9yZSBzdHJhaWdodC1mb3J3YXJkOiBUaGUKLWNvbW1hbmQgcHJvbXB0IHdpbGwgZXhwYW5kIHN0cmluZ3Mgd3JhcHBlZCBpbnRvIHBlcmNlbnQgc2lnbnMgYXV0b21hdGljYWxseTo6Ci0KLSAgICBlY2hvICVQQVRIJQotCi1Db25zdWx0IDpjb21tYW5kOmBzZXQgLz9gIGZvciBkZXRhaWxzIG9uIHRoaXMgYmVoYXZpb3VyLgorICAgIFRoZSA6ZW52dmFyOmBQWVRIT05QQVRIYCB2YXJpYWJsZSBpcyB1c2VkIGJ5IGFsbCB2ZXJzaW9ucyBvZiBQeXRob24gMiBhbmQKKyAgICBQeXRob24gMywgc28geW91IHNob3VsZCBub3QgcGVybWFuZW50bHkgY29uZmlndXJlIHRoaXMgdmFyaWFibGUgdW5sZXNzIGl0CisgICAgb25seSBpbmNsdWRlcyBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBvZiB5b3VyIGluc3RhbGxlZCBQeXRob24KKyAgICB2ZXJzaW9ucy4KIAogLi4gc2VlYWxzbzo6CiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMTAwODQzCisgICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8xMDA4NDMKICAgICAgIEVudmlyb25tZW50IHZhcmlhYmxlcyBpbiBXaW5kb3dzIE5UCiAKLSAgIGh0dHA6Ly9zdXBwb3J0Lm1pY3Jvc29mdC5jb20va2IvMzEwNTE5CisgICAgaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2NjNzU0MjUwLmFzcHgKKyAgICAgIFRoZSBTRVQgY29tbWFuZCwgZm9yIHRlbXBvcmFyaWx5IG1vZGlmeWluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworICAgIGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc1NTEwNC5hc3B4CisgICAgICBUaGUgU0VUWCBjb21tYW5kLCBmb3IgcGVybWFuZW50bHkgbW9kaWZ5aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcworCisgICAgaHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi8zMTA1MTkKICAgICAgIEhvdyBUbyBNYW5hZ2UgRW52aXJvbm1lbnQgVmFyaWFibGVzIGluIFdpbmRvd3MgWFAKIAotICAgaHR0cDovL3d3dy5jaGVtLmdsYS5hYy51ay9+bG91aXMvc29mdHdhcmUvZmFxL3ExLmh0bWwKKyAgICBodHRwOi8vd3d3LmNoZW0uZ2xhLmFjLnVrL35sb3Vpcy9zb2Z0d2FyZS9mYXEvcTEuaHRtbAogICAgICAgU2V0dGluZyBFbnZpcm9ubWVudCB2YXJpYWJsZXMsIExvdWlzIEouIEZhcnJ1Z2lhCiAKLQogLi4gX3dpbmRvd3MtcGF0aC1tb2Q6CiAKIEZpbmRpbmcgdGhlIFB5dGhvbiBleGVjdXRhYmxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KLWludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBBcyBvZgotUHl0aG9uIDMuMywgdGhlIGluc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCitpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gVGhlCitpbnN0YWxsZXIgZm9yIFB5dGhvbiAzLjUgYW5kIGxhdGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotQXQgdGhlICJDdXN0b21pemUgUHl0aG9uIDMuMyIgc2NyZWVuLCBhbiBvcHRpb24gY2FsbGVkCi0iQWRkIHB5dGhvbi5leGUgdG8gc2VhcmNoIHBhdGgiIGNhbiBiZSBlbmFibGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBwbGFjZQoteW91ciBpbnN0YWxsYXRpb24gaW50byB0aGUgOmVudnZhcjpgJVBBVEglYC4gVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUKLTpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKK09uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiAzLjUgdG8KK1BBVEgiIGNhbiBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCis6ZW52dmFyOmBQQVRIYC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgOmZpbGU6YFNjcmlwdHNcXGAgZm9sZGVyIGlzIGFsc28gYWRkZWQuCitUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSA6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLCBhbmQKKzpjb21tYW5kOmBwaXBgIG9yIC4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgogc2NyaXB0cyB3aXRoIGNvbW1hbmQgbGluZSBvcHRpb25zLCBzZWUgOnJlZjpgdXNpbmctb24tY21kbGluZWAgZG9jdW1lbnRhdGlvbi4KIAogSWYgeW91IGRvbid0IGVuYWJsZSB0aGlzIG9wdGlvbiBhdCBpbnN0YWxsIHRpbWUsIHlvdSBjYW4gYWx3YXlzIHJlLXJ1biB0aGUKLWluc3RhbGxlciB0byBjaG9vc2UgaXQuCitpbnN0YWxsZXIsIHNlbGVjdCBNb2RpZnksIGFuZCBlbmFibGUgaXQuICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIG1hbnVhbGx5Cittb2RpZnkgdGhlIDplbnZ2YXI6YFBBVEhgIHVzaW5nIHRoZSBkaXJlY3Rpb25zIGluIDpyZWY6YHNldHRpbmctZW52dmFyc2AuICBZb3UKK25lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgUEFUSGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5CitvZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24sIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuICBBbgorZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFscmVhZHkKK2V4aXN0ZWQpOjoKIAotVGhlIGFsdGVybmF0aXZlIGlzIG1hbnVhbGx5IG1vZGlmeWluZyB0aGUgOmVudnZhcjpgJVBBVEglYCB1c2luZyB0aGUKLWRpcmVjdGlvbnMgaW4gOnJlZjpgc2V0dGluZy1lbnZ2YXJzYC4gWW91IG5lZWQgdG8gc2V0IHlvdXIgOmVudnZhcjpgJVBBVEglYAotZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IG9mIHlvdXIgUHl0aG9uIGRpc3RyaWJ1dGlvbiwKLWRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyIGVudHJpZXMuIEFuIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vawotbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYXJlIFdpbmRvd3MnIGRlZmF1bHQpOjoKLQotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24zMwotCi0KLUZpbmRpbmcgbW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tCi0KLVB5dGhvbiB1c3VhbGx5IHN0b3JlcyBpdHMgbGlicmFyeSAoYW5kIHRoZXJlYnkgeW91ciBzaXRlLXBhY2thZ2VzIGZvbGRlcikgaW4gdGhlCi1pbnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgU28sIGlmIHlvdSBoYWQgaW5zdGFsbGVkIFB5dGhvbiB0bwotOmZpbGU6YEM6XFxQeXRob25cXGAsIHRoZSBkZWZhdWx0IGxpYnJhcnkgd291bGQgcmVzaWRlIGluCi06ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxgIGFuZCB0aGlyZC1wYXJ0eSBtb2R1bGVzIHNob3VsZCBiZSBzdG9yZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXHNpdGUtcGFja2FnZXNcXGAuCi0KLVRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uIFdpbmRvd3M6Ci0KLSogQW4gZW1wdHkgZW50cnkgaXMgYWRkZWQgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAotICBkaXJlY3RvcnkuCi0KLSogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTlBBVEhgIGV4aXN0cywgYXMgZGVzY3JpYmVkIGluCi0gIDpyZWY6YHVzaW5nLW9uLWVudnZhcnNgLCBpdHMgZW50cmllcyBhcmUgYWRkZWQgbmV4dC4gIE5vdGUgdGhhdCBvbiBXaW5kb3dzLAotICBwYXRocyBpbiB0aGlzIHZhcmlhYmxlIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMsIHRvIGRpc3Rpbmd1aXNoIHRoZW0KLSAgZnJvbSB0aGUgY29sb24gdXNlZCBpbiBkcml2ZSBpZGVudGlmaWVycyAoYGBDOlxgYCBldGMuKS4KLQotKiBBZGRpdGlvbmFsICJhcHBsaWNhdGlvbiBwYXRocyIgY2FuIGJlIGFkZGVkIGluIHRoZSByZWdpc3RyeSBhcyBzdWJrZXlzIG9mCi0gIDpzYW1wOmBcXFNPRlRXQVJFXFxQeXRob25cXFB5dGhvbkNvcmVcXHt2ZXJzaW9ufVxcUHl0aG9uUGF0aGAgdW5kZXIgYm90aCB0aGUKLSAgYGBIS0VZX0NVUlJFTlRfVVNFUmBgIGFuZCBgYEhLRVlfTE9DQUxfTUFDSElORWBgIGhpdmVzLiAgU3Via2V5cyB3aGljaCBoYXZlCi0gIHNlbWljb2xvbi1kZWxpbWl0ZWQgcGF0aCBzdHJpbmdzIGFzIHRoZWlyIGRlZmF1bHQgdmFsdWUgd2lsbCBjYXVzZSBlYWNoIHBhdGgKLSAgdG8gYmUgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYC4gIChOb3RlIHRoYXQgYWxsIGtub3duIGluc3RhbGxlcnMgb25seSB1c2UKLSAgSEtMTSwgc28gSEtDVSBpcyB0eXBpY2FsbHkgZW1wdHkuKQotCi0qIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05IT01FYCBpcyBzZXQsIGl0IGlzIGFzc3VtZWQgYXMKLSAgIlB5dGhvbiBIb21lIi4gIE90aGVyd2lzZSwgdGhlIHBhdGggb2YgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUgaXMgdXNlZCB0bwotICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGBgTGliXG9zLnB5YGApIHRvIGRlZHVjZSB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEKLSAgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYAotICAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0IGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUKLSAgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aCBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgotCi0qIElmIHRoZSBQeXRob24gSG9tZSBjYW5ub3QgYmUgbG9jYXRlZCwgbm8gOmVudnZhcjpgUFlUSE9OUEFUSGAgaXMgc3BlY2lmaWVkIGluCi0gIHRoZSBlbnZpcm9ubWVudCwgYW5kIG5vIHJlZ2lzdHJ5IGVudHJpZXMgY2FuIGJlIGZvdW5kLCBhIGRlZmF1bHQgcGF0aCB3aXRoCi0gIHJlbGF0aXZlIGVudHJpZXMgaXMgdXNlZCAoZS5nLiBgYC5cTGliOy5ccGxhdC13aW5gYCwgZXRjKS4KLQotVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6Ci0KLSogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCi0gIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCi0gIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKLSAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KLQotKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAotICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCi0gIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCi0KLSogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGlzIG5vIHJlZ2lzdHJ5IChlZywgZnJvemVuIC5leGUsIHNvbWUKLSAgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAotICByZWxhdGl2ZSwgcGF0aHMuCi0KLQotRXhlY3V0aW5nIHNjcmlwdHMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUFzIG9mIFB5dGhvbiAzLjMsIFB5dGhvbiBpbmNsdWRlcyBhIGxhdW5jaGVyIHdoaWNoIGZhY2lsaXRhdGVzIHJ1bm5pbmcgUHl0aG9uCi1zY3JpcHRzLiBTZWUgOnJlZjpgbGF1bmNoZXJgIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi1FeGVjdXRpbmcgc2NyaXB0cyB3aXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XaXRob3V0IHRoZSBQeXRob24gbGF1bmNoZXIgaW5zdGFsbGVkLCBQeXRob24gc2NyaXB0cyAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uCi1gYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5IDpwcm9ncmFtOmBweXRob24uZXhlYCBieSBkZWZhdWx0LiAgVGhpcyBleGVjdXRhYmxlCi1vcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cyBvcGVuIGV2ZW4gaWYgdGhlIHByb2dyYW0gdXNlcyBhIEdVSS4gIElmIHlvdSBkbwotbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUgZXh0ZW5zaW9uIGBgLnB5d2BgIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNjcmlwdAotdG8gYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbncuZXhlYCBieSBkZWZhdWx0IChib3RoIGV4ZWN1dGFibGVzIGFyZQotbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsIG9mIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkpLiAgVGhpcwotc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uIHN0YXJ0dXAuCi0KLVlvdSBjYW4gYWxzbyBtYWtlIGFsbCBgYC5weWBgIHNjcmlwdHMgZXhlY3V0ZSB3aXRoIDpwcm9ncmFtOmBweXRob253LmV4ZWAsCi1zZXR0aW5nIHRoaXMgdGhyb3VnaCB0aGUgdXN1YWwgZmFjaWxpdGllcywgZm9yIGV4YW1wbGUgKG1pZ2h0IHJlcXVpcmUKLWFkbWluaXN0cmF0aXZlIHJpZ2h0cyk6Ci0KLSMuIExhdW5jaCBhIGNvbW1hbmQgcHJvbXB0LgotIy4gQXNzb2NpYXRlIHRoZSBjb3JyZWN0IGZpbGUgZ3JvdXAgd2l0aCBgYC5weWBgIHNjcmlwdHM6OgotCi0gICAgICBhc3NvYyAucHk9UHl0aG9uLkZpbGUKLQotIy4gUmVkaXJlY3QgYWxsIFB5dGhvbiBmaWxlcyB0byB0aGUgbmV3IGV4ZWN1dGFibGU6OgotCi0gICAgICBmdHlwZSBQeXRob24uRmlsZT1DOlxQYXRoXHRvXHB5dGhvbncuZXhlICIlMSIgJSoKLQorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjUKIAogLi4gX2xhdW5jaGVyOgogCkBAIC0yNTEsMjEgKzM3NywyNiBAQAogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotVGhlIFB5dGhvbiBsYXVuY2hlciBmb3IgV2luZG93cyBpcyBhIHV0aWxpdHkgd2hpY2ggYWlkcyBpbiB0aGUgbG9jYXRpb24gYW5kCi1leGVjdXRpb24gb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKK1RoZSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MgaXMgYSB1dGlsaXR5IHdoaWNoIGFpZHMgaW4gbG9jYXRpbmcgYW5kCitleGVjdXRpbmcgb2YgZGlmZmVyZW50IFB5dGhvbiB2ZXJzaW9ucy4gIEl0IGFsbG93cyBzY3JpcHRzIChvciB0aGUKIGNvbW1hbmQtbGluZSkgdG8gaW5kaWNhdGUgYSBwcmVmZXJlbmNlIGZvciBhIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLCBhbmQKIHdpbGwgbG9jYXRlIGFuZCBleGVjdXRlIHRoYXQgdmVyc2lvbi4KIAorVW5saWtlIHRoZSA6ZW52dmFyOmBQQVRIYCB2YXJpYWJsZSwgdGhlIGxhdW5jaGVyIHdpbGwgY29ycmVjdGx5IHNlbGVjdCB0aGUgbW9zdAorYXBwcm9wcmlhdGUgdmVyc2lvbiBvZiBQeXRob24uIEl0IHdpbGwgcHJlZmVyIHBlci11c2VyIGluc3RhbGxhdGlvbnMgb3Zlcgorc3lzdGVtLXdpZGUgb25lcywgYW5kIG9yZGVycyBieSBsYW5ndWFnZSB2ZXJzaW9uIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBtb3N0CityZWNlbnRseSBpbnN0YWxsZWQgdmVyc2lvbi4KKwogR2V0dGluZyBzdGFydGVkCiAtLS0tLS0tLS0tLS0tLS0KIAogRnJvbSB0aGUgY29tbWFuZC1saW5lCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotWW91IHNob3VsZCBlbnN1cmUgdGhlIGxhdW5jaGVyIGlzIG9uIHlvdXIgUEFUSCAtIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzCi1pbnN0YWxsZWQgaXQgbWF5IGFscmVhZHkgYmUgdGhlcmUsIGJ1dCBjaGVjayBqdXN0IGluIGNhc2UgaXQgaXMgbm90LgotCi1Gcm9tIGEgY29tbWFuZC1wcm9tcHQsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorU3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24gMy4zIGFuZCBsYXRlciB3aWxsIHB1dCB0aGUgbGF1bmNoZXIgb24geW91cgorOmVudnZhcjpgUEFUSGAuIFRoZSBsYXVuY2hlciBpcyBjb21wYXRpYmxlIHdpdGggYWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBvZgorUHl0aG9uLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQuIFRvIGNoZWNrIHRoYXQgdGhlCitsYXVuY2hlciBpcyBhdmFpbGFibGUsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIENvbW1hbmQgUHJvbXB0OgogCiA6OgogCkBAIC0yOTEsNiArNDIyLDI4IEBACiAKIFlvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDMueCBzdGFydHMuCiAKK0lmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IGRvIG5vdCBoYXZlIHRoZSBsYXVuY2hlciBpbnN0YWxsZWQ6CisKKzo6CisKKyAgJ3B5JyBpcyBub3QgcmVjb2duaXplZCBhcyBhbiBpbnRlcm5hbCBvciBleHRlcm5hbCBjb21tYW5kLAorICBvcGVyYWJsZSBwcm9ncmFtIG9yIGJhdGNoIGZpbGUuCisKK1Blci11c2VyIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIGRvIG5vdCBhZGQgdGhlIGxhdW5jaGVyIHRvIDplbnZ2YXI6YFBBVEhgCit1bmxlc3MgdGhlIG9wdGlvbiB3YXMgc2VsZWN0ZWQgb24gaW5zdGFsbGF0aW9uLgorCitWaXJ0dWFsIGVudmlyb25tZW50cworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK0lmIHRoZSBsYXVuY2hlciBpcyBydW4gd2l0aCBubyBleHBsaWNpdCBQeXRob24gdmVyc2lvbiBzcGVjaWZpY2F0aW9uLCBhbmQgYQordmlydHVhbCBlbnZpcm9ubWVudCAoY3JlYXRlZCB3aXRoIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IDptb2Q6YHZlbnZgIG1vZHVsZSBvcgordGhlIGV4dGVybmFsIGBgdmlydHVhbGVudmBgIHRvb2wpIGFjdGl2ZSwgdGhlIGxhdW5jaGVyIHdpbGwgcnVuIHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudCdzIGludGVycHJldGVyIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgb25lLiAgVG8gcnVuIHRoZSBnbG9iYWwKK2ludGVycHJldGVyLCBlaXRoZXIgZGVhY3RpdmF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgb3IgZXhwbGljaXRseSBzcGVjaWZ5Cit0aGUgZ2xvYmFsIFB5dGhvbiB2ZXJzaW9uLgorCiBGcm9tIGEgc2NyaXB0CiBeXl5eXl5eXl5eXl5eCiAKQEAgLTMyNiw3ICs0NzksNyBAQAogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCiBUaGUgbGF1bmNoZXIgc2hvdWxkIGhhdmUgYmVlbiBhc3NvY2lhdGVkIHdpdGggUHl0aG9uIGZpbGVzIChpLmUuIGBgLnB5YGAsCi1gYC5weXdgYCwgYGAucHljYGAsIGBgLnB5b2BgIGZpbGVzKSB3aGVuIGl0IHdhcyBpbnN0YWxsZWQuICBUaGlzIG1lYW5zIHRoYXQKK2BgLnB5d2BgLCBgYC5weWNgYCBmaWxlcykgd2hlbiBpdCB3YXMgaW5zdGFsbGVkLiAgVGhpcyBtZWFucyB0aGF0CiB3aGVuIHlvdSBkb3VibGUtY2xpY2sgb24gb25lIG9mIHRoZXNlIGZpbGVzIGZyb20gV2luZG93cyBleHBsb3JlciB0aGUgbGF1bmNoZXIKIHdpbGwgYmUgdXNlZCwgYW5kIHRoZXJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmYWNpbGl0aWVzIGRlc2NyaWJlZCBhYm92ZSB0bwogaGF2ZSB0aGUgc2NyaXB0IHNwZWNpZnkgdGhlIHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuCkBAIC0zNjUsNiArNTE4LDE2IEBACiBvbiBXaW5kb3dzIHdoaWNoIHlvdSBob3BlIHdpbGwgYmUgdXNlZnVsIG9uIFVuaXgsIHlvdSBzaG91bGQgdXNlIG9uZSBvZiB0aGUKIHNoZWJhbmcgbGluZXMgc3RhcnRpbmcgd2l0aCBgYC91c3JgYC4KIAorQW55IG9mIHRoZSBhYm92ZSB2aXJ0dWFsIGNvbW1hbmRzIGNhbiBiZSBzdWZmaXhlZCB3aXRoIGFuIGV4cGxpY2l0IHZlcnNpb24KKyhlaXRoZXIganVzdCB0aGUgbWFqb3IgdmVyc2lvbiwgb3IgdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uKSAtIGZvciBleGFtcGxlCitgYC91c3IvYmluL3B5dGhvbjIuN2BgIC0gd2hpY2ggd2lsbCBjYXVzZSB0aGF0IHNwZWNpZmljIHZlcnNpb24gdG8gYmUgbG9jYXRlZAorYW5kIHVzZWQuCisKK1RoZSBgYC91c3IvYmluL2VudmBgIGZvcm0gb2Ygc2hlYmFuZyBsaW5lIGhhcyBvbmUgZnVydGhlciBzcGVjaWFsIHByb3BlcnR5LgorQmVmb3JlIGxvb2tpbmcgZm9yIGluc3RhbGxlZCBQeXRob24gaW50ZXJwcmV0ZXJzLCB0aGlzIGZvcm0gd2lsbCBzZWFyY2ggdGhlCitleGVjdXRhYmxlIDplbnZ2YXI6YFBBVEhgIGZvciBhIFB5dGhvbiBleGVjdXRhYmxlLiBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQorYmVoYXZpb3VyIG9mIHRoZSBVbml4IGBgZW52YGAgcHJvZ3JhbSwgd2hpY2ggcGVyZm9ybXMgYSA6ZW52dmFyOmBQQVRIYCBzZWFyY2guCisKIEFyZ3VtZW50cyBpbiBzaGViYW5nIGxpbmVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0zODMsMTcgKzU0NiwxNiBAQAogQ3VzdG9taXphdGlvbiB2aWEgSU5JIGZpbGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAotICAgIFR3byAuaW5pIGZpbGVzIHdpbGwgYmUgc2VhcmNoZWQgYnkgdGhlIGxhdW5jaGVyIC0gYGBweS5pbmlgYCBpbiB0aGUKLSAgICBjdXJyZW50IHVzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQKLSAgICBieSBjYWxsaW5nIHRoZSBXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpCi0gICAgYW5kIGBgcHkuaW5pYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlci4gIFRoZSBzYW1lIC5pbmkKLSAgICBmaWxlcyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuCi0gICAgcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbiAoaS5lLiBweXcuZXhlKQorVHdvIC5pbmkgZmlsZXMgd2lsbCBiZSBzZWFyY2hlZCBieSB0aGUgbGF1bmNoZXIgLSBgYHB5LmluaWBgIGluIHRoZSBjdXJyZW50Cit1c2VyJ3MgImFwcGxpY2F0aW9uIGRhdGEiIGRpcmVjdG9yeSAoaS5lLiB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5IGNhbGxpbmcgdGhlCitXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpIGFuZCBgYHB5LmluaWBgIGluIHRoZQorc2FtZSBkaXJlY3RvcnkgYXMgdGhlIGxhdW5jaGVyLiBUaGUgc2FtZSAuaW5pIGZpbGVzIGFyZSB1c2VkIGZvciBib3RoIHRoZQorJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuIHB5LmV4ZSkgYW5kIGZvciB0aGUgJ3dpbmRvd3MnIHZlcnNpb24KKyhpLmUuIHB5dy5leGUpCiAKLSAgICBDdXN0b21pemF0aW9uIHNwZWNpZmllZCBpbiB0aGUgImFwcGxpY2F0aW9uIGRpcmVjdG9yeSIgd2lsbCBoYXZlCi0gICAgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUgbmV4dCB0byB0aGUgZXhlY3V0YWJsZSwgc28gYSB1c2VyLCB3aG8gbWF5IG5vdAotICAgIGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoZSAuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZQotICAgIGNvbW1hbmRzIGluIHRoYXQgZ2xvYmFsIC5pbmkgZmlsZSkKK0N1c3RvbWl6YXRpb24gc3BlY2lmaWVkIGluIHRoZSAiYXBwbGljYXRpb24gZGlyZWN0b3J5IiB3aWxsIGhhdmUgcHJlY2VkZW5jZSBvdmVyCit0aGUgb25lIG5leHQgdG8gdGhlIGV4ZWN1dGFibGUsIHNvIGEgdXNlciwgd2hvIG1heSBub3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlCisuaW5pIGZpbGUgbmV4dCB0byB0aGUgbGF1bmNoZXIsIGNhbiBvdmVycmlkZSBjb21tYW5kcyBpbiB0aGF0IGdsb2JhbCAuaW5pIGZpbGUpCiAKIEN1c3RvbWl6aW5nIGRlZmF1bHQgUHl0aG9uIHZlcnNpb25zCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtNDg4LDYgKzY1MCw5OSBAQAogdGFyZ2V0IFB5dGhvbi4KIAogCisKKy4uIGZpbmRpbmdfbW9kdWxlczoKKworRmluZGluZyBtb2R1bGVzCis9PT09PT09PT09PT09PT0KKworUHl0aG9uIHVzdWFsbHkgc3RvcmVzIGl0cyBsaWJyYXJ5IChhbmQgdGhlcmVieSB5b3VyIHNpdGUtcGFja2FnZXMgZm9sZGVyKSBpbiB0aGUKK2luc3RhbGxhdGlvbiBkaXJlY3RvcnkuICBTbywgaWYgeW91IGhhZCBpbnN0YWxsZWQgUHl0aG9uIHRvCis6ZmlsZTpgQzpcXFB5dGhvblxcYCwgdGhlIGRlZmF1bHQgbGlicmFyeSB3b3VsZCByZXNpZGUgaW4KKzpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgorOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KKworVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKKworKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CisgIGRpcmVjdG9yeS4KKworKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgZXhpc3RzLCBhcyBkZXNjcmliZWQgaW4KKyAgOnJlZjpgdXNpbmctb24tZW52dmFyc2AsIGl0cyBlbnRyaWVzIGFyZSBhZGRlZCBuZXh0LiAgTm90ZSB0aGF0IG9uIFdpbmRvd3MsCisgIHBhdGhzIGluIHRoaXMgdmFyaWFibGUgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucywgdG8gZGlzdGluZ3Vpc2ggdGhlbQorICBmcm9tIHRoZSBjb2xvbiB1c2VkIGluIGRyaXZlIGlkZW50aWZpZXJzIChgYEM6XGBgIGV0Yy4pLgorCisqIEFkZGl0aW9uYWwgImFwcGxpY2F0aW9uIHBhdGhzIiBjYW4gYmUgYWRkZWQgaW4gdGhlIHJlZ2lzdHJ5IGFzIHN1YmtleXMgb2YKKyAgOnNhbXA6YFxcU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3ZlcnNpb259XFxQeXRob25QYXRoYCB1bmRlciBib3RoIHRoZQorICBgYEhLRVlfQ1VSUkVOVF9VU0VSYGAgYW5kIGBgSEtFWV9MT0NBTF9NQUNISU5FYGAgaGl2ZXMuICBTdWJrZXlzIHdoaWNoIGhhdmUKKyAgc2VtaWNvbG9uLWRlbGltaXRlZCBwYXRoIHN0cmluZ3MgYXMgdGhlaXIgZGVmYXVsdCB2YWx1ZSB3aWxsIGNhdXNlIGVhY2ggcGF0aAorICB0byBiZSBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiAgKE5vdGUgdGhhdCBhbGwga25vd24gaW5zdGFsbGVycyBvbmx5IHVzZQorICBIS0xNLCBzbyBIS0NVIGlzIHR5cGljYWxseSBlbXB0eS4pCisKKyogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcworICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQorICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCisgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQorICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisKKyogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KKyAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKKyAgcmVsYXRpdmUgZW50cmllcyBpcyB1c2VkIChlLmcuIGBgLlxMaWI7LlxwbGF0LXdpbmBgLCBldGMpLgorCitJZiBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaXMgZm91bmQgYWxvbmdzaWRlIHRoZSBtYWluIGV4ZWN1dGFibGUgb3IgaW4gdGhlCitkaXJlY3Rvcnkgb25lIGxldmVsIGFib3ZlIHRoZSBleGVjdXRhYmxlLCB0aGUgZm9sbG93aW5nIHZhcmlhdGlvbnMgYXBwbHk6CisKKyogSWYgYGBob21lYGAgaXMgYW4gYWJzb2x1dGUgcGF0aCBhbmQgOmVudnZhcjpgUFlUSE9OSE9NRWAgaXMgbm90IHNldCwgdGhpcworICBwYXRoIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlIHdoZW4gZGVkdWNpbmcgdGhlCisgIGhvbWUgbG9jYXRpb24uCisKKyogSWYgYGBhcHBsb2NhbGBgIGlzIHNldCB0byB0cnVlLCB0aGUgYGBob21lYGAgcHJvcGVydHkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZQorICBpcyBhbHdheXMgdXNlZCBhcyB0aGUgaG9tZSBwYXRoLCBhbmQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciByZWdpc3RyeQorICB2YWx1ZXMgYWZmZWN0aW5nIHRoZSBwYXRoIGFyZSBpZ25vcmVkLiBUaGUgbGFuZG1hcmsgZmlsZSBpcyBub3QgY2hlY2tlZC4KKworVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CisKKyogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCisgIGRpcmVjdG9yeSAoZWl0aGVyIGFuIGluc3RhbGxlZCB2ZXJzaW9uLCBvciBkaXJlY3RseSBmcm9tIHRoZSBQQ2J1aWxkCisgIGRpcmVjdG9yeSksIHRoZSBjb3JlIHBhdGggaXMgZGVkdWNlZCwgYW5kIHRoZSBjb3JlIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhcmUKKyAgaWdub3JlZC4gIE90aGVyICJhcHBsaWNhdGlvbiBwYXRocyIgaW4gdGhlIHJlZ2lzdHJ5IGFyZSBhbHdheXMgcmVhZC4KKworKiBXaGVuIFB5dGhvbiBpcyBob3N0ZWQgaW4gYW5vdGhlciAuZXhlIChkaWZmZXJlbnQgZGlyZWN0b3J5LCBlbWJlZGRlZCB2aWEgQ09NLAorICBldGMpLCB0aGUgIlB5dGhvbiBIb21lIiB3aWxsIG5vdCBiZSBkZWR1Y2VkLCBzbyB0aGUgY29yZSBwYXRoIGZyb20gdGhlCisgIHJlZ2lzdHJ5IGlzIHVzZWQuICBPdGhlciAiYXBwbGljYXRpb24gcGF0aHMiIGluIHRoZSByZWdpc3RyeSBhcmUgYWx3YXlzIHJlYWQuCisKKyogSWYgUHl0aG9uIGNhbid0IGZpbmQgaXRzIGhvbWUgYW5kIHRoZXJlIGFyZSBubyByZWdpc3RyeSB2YWx1ZSAoZnJvemVuIC5leGUsCisgIHNvbWUgdmVyeSBzdHJhbmdlIGluc3RhbGxhdGlvbiBzZXR1cCkgeW91IGdldCBhIHBhdGggd2l0aCBzb21lIGRlZmF1bHQsIGJ1dAorICByZWxhdGl2ZSwgcGF0aHMuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKK2ZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CisKKyogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCisgIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCisgIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgorICBJdCB3aWxsIGFsc28gaWdub3JlIHVzZXIgc2l0ZS1wYWNrYWdlcyBhbmQgb3RoZXIgcGF0aHMgbGlzdGVkIGluIHRoZQorICByZWdpc3RyeS4KKworKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzUuZGxsYCBpbiB5b3VyIG93bgorICBleGVjdXRhYmxlLCBleHBsaWNpdGx5IGNhbGwgOmM6ZnVuYzpgUHlfU2V0UGF0aGAgb3IgKGF0IGxlYXN0KQorICA6YzpmdW5jOmBQeV9TZXRQcm9ncmFtTmFtZWAgYmVmb3JlIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgorCisqIENsZWFyIGFuZC9vciBvdmVyd3JpdGUgOmVudnZhcjpgUFlUSE9OUEFUSGAgYW5kIHNldCA6ZW52dmFyOmBQWVRIT05IT01FYAorICBiZWZvcmUgbGF1bmNoaW5nIDpmaWxlOmBweXRob24uZXhlYCBmcm9tIHlvdXIgYXBwbGljYXRpb24uCisKKyogSWYgeW91IGNhbm5vdCB1c2UgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb25zIChmb3IgZXhhbXBsZSwgeW91IGFyZSBhCisgIGRpc3RyaWJ1dGlvbiB0aGF0IGFsbG93cyBwZW9wbGUgdG8gcnVuIDpmaWxlOmBweXRob24uZXhlYCBkaXJlY3RseSksIGVuc3VyZQorICB0aGF0IHRoZSBsYW5kbWFyayBmaWxlICg6ZmlsZTpgTGliXFxvcy5weWApIGV4aXN0cyBpbiB5b3VyIGluc3RhbGwgZGlyZWN0b3J5LgorICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLikKKworVGhlc2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgZmlsZXMgaW4gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gd2lsbCBub3QgdGFrZQorcHJlY2VkZW5jZSBvdmVyIHRoZSBjb3B5IG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJ1bmRsZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLgorT3RoZXJ3aXNlLCB5b3VyIHVzZXJzIG1heSBleHBlcmllbmNlIHByb2JsZW1zIHVzaW5nIHlvdXIgYXBwbGljYXRpb24uIE5vdGUgdGhhdAordGhlIGZpcnN0IHN1Z2dlc3Rpb24gaXMgdGhlIGJlc3QsIGFzIHRoZSBvdGhlciBtYXkgc3RpbGwgYmUgc3VzY2VwdGlibGUgdG8KK25vbi1zdGFuZGFyZCBwYXRocyBpbiB0aGUgcmVnaXN0cnkgYW5kIHVzZXIgc2l0ZS1wYWNrYWdlcy4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtNDk4LDcgKzc1Myw2IEBACiBUaGUgV2luZG93cy1zcGVjaWZpYyBzdGFuZGFyZCBtb2R1bGVzIGFyZSBkb2N1bWVudGVkIGluCiA6cmVmOmBtc3dpbi1zcGVjaWZpYy1zZXJ2aWNlc2AuCiAKLQogUHlXaW4zMgogLS0tLS0tLQogCkBAIC01NTcsMjAgKzgxMSw4IEBACiA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvc2V0dXAuaHRtbCNnZXR0aW5nLXRoZS1zb3VyY2UtY29kZT5gXy4KIAogVGhlIHNvdXJjZSB0cmVlIGNvbnRhaW5zIGEgYnVpbGQgc29sdXRpb24gYW5kIHByb2plY3QgZmlsZXMgZm9yIE1pY3Jvc29mdAotVmlzdWFsIEMrKywgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcy4KLVZpZXcgdGhlIDpmaWxlOmByZWFkbWUudHh0YCBpbiB0aGVpciByZXNwZWN0aXZlIGRpcmVjdG9yaWVzOgotCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IERpcmVjdG9yeSAgICAgICAgICB8IE1TVkMgdmVyc2lvbiB8IFZpc3VhbCBTdHVkaW8gdmVyc2lvbiB8Ci0rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpmaWxlOmBQQy9WUzkuMC9gICB8IDkuMCAgICAgICAgICB8IDIwMDggICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpmaWxlOmBQQ2J1aWxkL2AgICB8IDEwLjAgICAgICAgICB8IDIwMTAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLU5vdGUgdGhhdCBhbnkgYnVpbGQgZGlyZWN0b3JpZXMgd2l0aGluIHRoZSA6ZmlsZTpgUENgIGRpcmVjdG9yeSBhcmUgbm90Ci1uZWNlc3NhcmlseSBmdWxseSBzdXBwb3J0ZWQuICBUaGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZmlsZXMKLWZvciB0aGUgY29tcGlsZXIgdXNlZCB0byBidWlsZCB0aGUgb2ZmaWNpYWwgcmVsZWFzZS4KK1Zpc3VhbCBTdHVkaW8gMjAxNSwgd2hpY2ggaXMgdGhlIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgdGhlIG9mZmljaWFsIFB5dGhvbgorcmVsZWFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbiB0aGUgOmZpbGU6YFBDYnVpbGRgIGRpcmVjdG9yeS4KIAogQ2hlY2sgOmZpbGU6YFBDYnVpbGQvcmVhZG1lLnR4dGAgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIGJ1aWxkIHByb2Nlc3MuCiAKQEAgLTU4OCw2ICs4MzAsODMgQEAKICAgICAgIGJ5IFRyZW50IEFwdGVkIGV0IGFsLCAyMDA3CiAKIAorRW1iZWRkZWQgRGlzdHJpYnV0aW9uCis9PT09PT09PT09PT09PT09PT09PT0KKworLi4gdmVyc2lvbmFkZGVkOjogMy41CisKK1RoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgYSBaSVAgZmlsZSBjb250YWluaW5nIGEgbWluaW1hbCBQeXRob24gZW52aXJvbm1lbnQuCitJdCBpcyBpbnRlbmRlZCBmb3IgYWN0aW5nIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4gYmVpbmcKK2RpcmVjdGx5IGFjY2Vzc2VkIGJ5IGVuZC11c2Vycy4KKworV2hlbiBleHRyYWN0ZWQsIHRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgKGFsbW9zdCkgZnVsbHkgaXNvbGF0ZWQgZnJvbSB0aGUKK3VzZXIncyBzeXN0ZW0sIGluY2x1ZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHN5c3RlbSByZWdpc3RyeSBzZXR0aW5ncywgYW5kCitpbnN0YWxsZWQgcGFja2FnZXMuIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGluY2x1ZGVkIGFzIHByZS1jb21waWxlZCBhbmQKK29wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNS5kbGxgYCwKK2BgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgYXJlIGFsbCBwcm92aWRlZC4gVGNsL3RrIChpbmNsdWRpbmcgYWxsCitkZXBlbmRhbnRzLCBzdWNoIGFzIElkbGUpLCBwaXAgYW5kIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBhcmUgbm90IGluY2x1ZGVkLgorCisuLiBub3RlOjoKKworICAgIFRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gZG9lcyBub3QgaW5jbHVkZSB0aGUgYE1pY3Jvc29mdCBDIFJ1bnRpbWUKKyAgICA8aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL2Rvd25sb2FkL2RldGFpbHMuYXNweD9pZD00ODE0NT5gXyBhbmQgaXQgaXMKKyAgICB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIGluc3RhbGxlciB0byBwcm92aWRlIHRoaXMuIFRoZQorICAgIHJ1bnRpbWUgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCBvbiBhIHVzZXIncyBzeXN0ZW0gcHJldmlvdXNseSBvcgorICAgIGF1dG9tYXRpY2FsbHkgdmlhIFdpbmRvd3MgVXBkYXRlLCBhbmQgY2FuIGJlIGRldGVjdGVkIGJ5IGZpbmRpbmcKKyAgICBgYHVjcnRiYXNlLmRsbGBgIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3J5LgorCitUaGlyZC1wYXJ0eSBwYWNrYWdlcyBzaG91bGQgYmUgaW5zdGFsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZXIgYWxvbmdzaWRlCit0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uLiBVc2luZyBwaXAgdG8gbWFuYWdlIGRlcGVuZGVuY2llcyBhcyBmb3IgYSByZWd1bGFyCitQeXRob24gaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbiwgdGhvdWdoIHdpdGggc29tZQorY2FyZSBpdCBtYXkgYmUgcG9zc2libGUgdG8gaW5jbHVkZSBhbmQgdXNlIHBpcCBmb3IgYXV0b21hdGljIHVwZGF0ZXMuIEluCitnZW5lcmFsLCB0aGlyZC1wYXJ0eSBwYWNrYWdlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBhcHBsaWNhdGlvbgorKCJ2ZW5kb3JpbmciKSBzbyB0aGF0IHRoZSBkZXZlbG9wZXIgY2FuIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggbmV3ZXIKK3ZlcnNpb25zIGJlZm9yZSBwcm92aWRpbmcgdXBkYXRlcyB0byB1c2Vycy4KKworVGhlIHR3byByZWNvbW1lbmRlZCB1c2UgY2FzZXMgZm9yIHRoaXMgZGlzdHJpYnV0aW9uIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1B5dGhvbiBBcHBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGFwcGxpY2F0aW9uIHdyaXR0ZW4gaW4gUHl0aG9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IHJlcXVpcmUgdXNlcnMgdG8gYmUgYXdhcmUKK29mIHRoYXQgZmFjdC4gVGhlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBtYXkgYmUgdXNlZCBpbiB0aGlzIGNhc2UgdG8gaW5jbHVkZSBhCitwcml2YXRlIHZlcnNpb24gb2YgUHl0aG9uIGluIGFuIGluc3RhbGwgcGFja2FnZS4gRGVwZW5kaW5nIG9uIGhvdyB0cmFuc3BhcmVudCBpdAorc2hvdWxkIGJlIChvciBjb252ZXJzZWx5LCBob3cgcHJvZmVzc2lvbmFsIGl0IHNob3VsZCBhcHBlYXIpLCB0aGVyZSBhcmUgdHdvCitvcHRpb25zLgorCitVc2luZyBhIHNwZWNpYWxpemVkIGV4ZWN1dGFibGUgYXMgYSBsYXVuY2hlciByZXF1aXJlcyBzb21lIGNvZGluZywgYnV0IHByb3ZpZGVzCit0aGUgbW9zdCB0cmFuc3BhcmVudCBleHBlcmllbmNlIGZvciB1c2Vycy4gV2l0aCBhIGN1c3RvbWl6ZWQgbGF1bmNoZXIsIHRoZXJlIGFyZQorbm8gb2J2aW91cyBpbmRpY2F0aW9ucyB0aGF0IHRoZSBwcm9ncmFtIGlzIHJ1bm5pbmcgb24gUHl0aG9uOiBpY29ucyBjYW4gYmUKK2N1c3RvbWl6ZWQsIGNvbXBhbnkgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24gY2FuIGJlIHNwZWNpZmllZCwgYW5kIGZpbGUKK2Fzc29jaWF0aW9ucyBiZWhhdmUgcHJvcGVybHkuIEluIG1vc3QgY2FzZXMsIGEgY3VzdG9tIGxhdW5jaGVyIHNob3VsZCBzaW1wbHkgYmUKK2FibGUgdG8gY2FsbCBgYFB5X01haW5gYCB3aXRoIGEgaGFyZC1jb2RlZCBjb21tYW5kIGxpbmUuCisKK1RoZSBzaW1wbGVyIGFwcHJvYWNoIGlzIHRvIHByb3ZpZGUgYSBiYXRjaCBmaWxlIG9yIGdlbmVyYXRlZCBzaG9ydGN1dCB0aGF0CitkaXJlY3RseSBjYWxscyB0aGUgYGBweXRob24uZXhlYGAgb3IgYGBweXRob253LmV4ZWBgIHdpdGggdGhlIHJlcXVpcmVkCitjb21tYW5kLWxpbmUgYXJndW1lbnRzLiBJbiB0aGlzIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGFwcGVhciB0byBiZSBQeXRob24KK2FuZCBub3QgaXRzIGFjdHVhbCBuYW1lLCBhbmQgdXNlcnMgbWF5IGhhdmUgdHJvdWJsZSBkaXN0aW5ndWlzaGluZyBpdCBmcm9tIG90aGVyCitydW5uaW5nIFB5dGhvbiBwcm9jZXNzZXMgb3IgZmlsZSBhc3NvY2lhdGlvbnMuCisKK1dpdGggdGhlIGxhdHRlciBhcHByb2FjaCwgcGFja2FnZXMgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyBkaXJlY3RvcmllcyBhbG9uZ3NpZGUKK3RoZSBQeXRob24gZXhlY3V0YWJsZSB0byBlbnN1cmUgdGhleSBhcmUgYXZhaWxhYmxlIG9uIHRoZSBwYXRoLiBXaXRoIHRoZQorc3BlY2lhbGl6ZWQgbGF1bmNoZXIsIHBhY2thZ2VzIGNhbiBiZSBsb2NhdGVkIGluIG90aGVyIGxvY2F0aW9ucyBhcyB0aGVyZSBpcyBhbgorb3Bwb3J0dW5pdHkgdG8gc3BlY2lmeSB0aGUgc2VhcmNoIHBhdGggYmVmb3JlIGxhdW5jaGluZyB0aGUgYXBwbGljYXRpb24uCisKK0VtYmVkZGluZyBQeXRob24KKy0tLS0tLS0tLS0tLS0tLS0KKworQXBwbGljYXRpb25zIHdyaXR0ZW4gaW4gbmF0aXZlIGNvZGUgb2Z0ZW4gcmVxdWlyZSBzb21lIGZvcm0gb2Ygc2NyaXB0aW5nCitsYW5ndWFnZSwgYW5kIHRoZSBlbWJlZGRlZCBQeXRob24gZGlzdHJpYnV0aW9uIGNhbiBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuIEluCitnZW5lcmFsLCB0aGUgbWFqb3JpdHkgb2YgdGhlIGFwcGxpY2F0aW9uIGlzIGluIG5hdGl2ZSBjb2RlLCBhbmQgc29tZSBwYXJ0IHdpbGwKK2VpdGhlciBpbnZva2UgYGBweXRob24uZXhlYGAgb3IgZGlyZWN0bHkgdXNlIGBgcHl0aG9uMy5kbGxgYC4gRm9yIGVpdGhlciBjYXNlLAorZXh0cmFjdGluZyB0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIHRvIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBhcHBsaWNhdGlvbgoraW5zdGFsbGF0aW9uIGlzIHN1ZmZpY2llbnQgdG8gcHJvdmlkZSBhIGxvYWRhYmxlIFB5dGhvbiBpbnRlcnByZXRlci4KKworQXMgd2l0aCB0aGUgYXBwbGljYXRpb24gdXNlLCBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkIHRvIGFueSBsb2NhdGlvbiBhcyB0aGVyZQoraXMgYW4gb3Bwb3J0dW5pdHkgdG8gc3BlY2lmeSBzZWFyY2ggcGF0aHMgYmVmb3JlIGluaXRpYWxpemluZyB0aGUgaW50ZXJwcmV0ZXIuCitPdGhlcndpc2UsIHRoZXJlIGlzIG5vIGZ1bmRhbWVudGFsIGRpZmZlcmVuY2VzIGJldHdlZW4gdXNpbmcgdGhlIGVtYmVkZGVkCitkaXN0cmlidXRpb24gYW5kIGEgcmVndWxhciBpbnN0YWxsYXRpb24uCisKIE90aGVyIHJlc291cmNlcwogPT09PT09PT09PT09PT09CiAKQEAgLTYwMyw1ICs5MjIsMyBAQAogCiAgICA6cGVwOmAzOTdgIC0gUHl0aG9uIGxhdW5jaGVyIGZvciBXaW5kb3dzCiAgICAgICBUaGUgcHJvcG9zYWwgZm9yIHRoZSBsYXVuY2hlciB0byBiZSBpbmNsdWRlZCBpbiB0aGUgUHl0aG9uIGRpc3RyaWJ1dGlvbi4KLQotCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdCBiL0RvYy93aGF0c25ldy8zLjUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjODViMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdApAQCAtMCwwICsxLDI0NjkgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy41CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpFZGl0b3JzOiBFbHZpcyBQcmFuc2tldmljaHVzIDxlbHZpc0BtYWdpYy5pbz4sIFl1cnkgU2VsaXZhbm92IDx5dXJ5QG1hZ2ljLmlvPgorCisuLiBSdWxlcyBmb3IgbWFpbnRlbmFuY2U6CisKKyAgICogQW55b25lIGNhbiBhZGQgdGV4dCB0byB0aGlzIGRvY3VtZW50LiAgRG8gbm90IHNwZW5kIHZlcnkgbXVjaCB0aW1lCisgICBvbiB0aGUgd29yZGluZyBvZiB5b3VyIGNoYW5nZXMsIGJlY2F1c2UgeW91ciB0ZXh0IHdpbGwgcHJvYmFibHkKKyAgIGdldCByZXdyaXR0ZW4gdG8gc29tZSBkZWdyZWUuCisKKyAgICogVGhlIG1haW50YWluZXIgd2lsbCBnbyB0aHJvdWdoIE1pc2MvTkVXUyBwZXJpb2RpY2FsbHkgYW5kIGFkZAorICAgY2hhbmdlczsgaXQncyB0aGVyZWZvcmUgbW9yZSBpbXBvcnRhbnQgdG8gYWRkIHlvdXIgY2hhbmdlcyB0bworICAgTWlzYy9ORVdTIHRoYW4gdG8gdGhpcyBmaWxlLgorCisgICAqIFRoaXMgaXMgbm90IGEgY29tcGxldGUgbGlzdCBvZiBldmVyeSBzaW5nbGUgY2hhbmdlOyBjb21wbGV0ZW5lc3MKKyAgIGlzIHRoZSBwdXJwb3NlIG9mIE1pc2MvTkVXUy4gIFNvbWUgY2hhbmdlcyBJIGNvbnNpZGVyIHRvbyBzbWFsbAorICAgb3IgZXNvdGVyaWMgdG8gaW5jbHVkZS4gIElmIHN1Y2ggYSBjaGFuZ2UgaXMgYWRkZWQgdG8gdGhlIHRleHQsCisgICBJJ2xsIGp1c3QgcmVtb3ZlIGl0LiAgKFRoaXMgaXMgYW5vdGhlciByZWFzb24geW91IHNob3VsZG4ndCBzcGVuZAorICAgdG9vIG11Y2ggdGltZSBvbiB3cml0aW5nIHlvdXIgYWRkaXRpb24uKQorCisgICAqIElmIHlvdSB3YW50IHRvIGRyYXcgeW91ciBuZXcgdGV4dCB0byB0aGUgYXR0ZW50aW9uIG9mIHRoZQorICAgbWFpbnRhaW5lciwgYWRkICdYWFgnIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFncmFwaCBvcgorICAgc2VjdGlvbi4KKworICAgKiBJdCdzIE9LIHRvIGp1c3QgYWRkIGEgZnJhZ21lbnRhcnkgbm90ZSBhYm91dCBhIGNoYW5nZS4gIEZvcgorICAgZXhhbXBsZTogIlhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlCisgICBzb2NrZXQgbW9kdWxlLiIgIFRoZSBtYWludGFpbmVyIHdpbGwgcmVzZWFyY2ggdGhlIGNoYW5nZSBhbmQKKyAgIHdyaXRlIHRoZSBuZWNlc3NhcnkgdGV4dC4KKworICAgKiBZb3UgY2FuIGNvbW1lbnQgb3V0IHlvdXIgYWRkaXRpb25zIGlmIHlvdSBsaWtlLCBidXQgaXQncyBub3QKKyAgIG5lY2Vzc2FyeSAoZXNwZWNpYWxseSB3aGVuIGEgZmluYWwgcmVsZWFzZSBpcyBzb21lIG1vbnRocyBhd2F5KS4KKworICAgKiBDcmVkaXQgdGhlIGF1dGhvciBvZiBhIHBhdGNoIG9yIGJ1Z2ZpeC4gICBKdXN0IHRoZSBuYW1lIGlzCisgICBzdWZmaWNpZW50OyB0aGUgZS1tYWlsIGFkZHJlc3MgaXNuJ3QgbmVjZXNzYXJ5LgorCisgICAqIEl0J3MgaGVscGZ1bCB0byBhZGQgdGhlIGJ1Zy9wYXRjaCBudW1iZXIgYXMgYSBjb21tZW50OgorCisgICBYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZSBzb2NrZXQKKyAgIG1vZHVsZS4KKyAgIChDb250cmlidXRlZCBieSBQLlkuIERldmVsb3BlciBpbiA6aXNzdWU6YDEyMzQ1YC4pCisKKyAgIFRoaXMgc2F2ZXMgdGhlIG1haW50YWluZXIgdGhlIGVmZm9ydCBvZiBnb2luZyB0aHJvdWdoIHRoZSBNZXJjdXJpYWwgbG9nCisgICB3aGVuIHJlc2VhcmNoaW5nIGEgY2hhbmdlLgorCitUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy41LCBjb21wYXJlZCB0byAzLjQuCitQeXRob24gMy41IHdhcyByZWxlYXNlZCBvbiBTZXB0ZW1iZXIgMTMsIDIwMTUuIMKgU2VlIHRoZQorYGNoYW5nZWxvZyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3L2NoYW5nZWxvZy5odG1sPmBfIGZvciBhIGZ1bGwKK2xpc3Qgb2YgY2hhbmdlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0NzhgIC0gUHl0aG9uIDMuNSBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogOnJlZjpgUEVQIDQ5MiA8d2hhdHNuZXctcGVwLTQ5Mj5gLCBjb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheC4KKyogOnJlZjpgUEVQIDQ2NSA8d2hhdHNuZXctcGVwLTQ2NT5gLCBhIG5ldyBtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3I6IGBgYSBAIGJgYC4KKyogOnJlZjpgUEVQIDQ0OCA8d2hhdHNuZXctcGVwLTQ0OD5gLCBhZGRpdGlvbmFsIHVucGFja2luZyBnZW5lcmFsaXphdGlvbnMuCisKKworTmV3IGxpYnJhcnkgbW9kdWxlczoKKworKiA6bW9kOmB0eXBpbmdgOiA6cmVmOmBQRVAgNDg0IC0tIFR5cGUgSGludHMgPHdoYXRzbmV3LXBlcC00ODQ+YC4KKyogOm1vZDpgemlwYXBwYDogOnJlZjpgUEVQIDQ0MSBJbXByb3ZpbmcgUHl0aG9uIFpJUCBBcHBsaWNhdGlvbiBTdXBwb3J0CisgIDx3aGF0c25ldy16aXBhcHA+YC4KKworCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogYGBieXRlcyAlIGFyZ3NgYCwgYGBieXRlYXJyYXkgJSBhcmdzYGA6IDpyZWY6YFBFUCA0NjEgPHdoYXRzbmV3LXBlcC00NjE+YCAtLQorICBBZGRpbmcgYGAlYGAgZm9ybWF0dGluZyB0byBieXRlcyBhbmQgYnl0ZWFycmF5LgorCisqIE5ldyA6bWV0aDpgYnl0ZXMuaGV4YCwgOm1ldGg6YGJ5dGVhcnJheS5oZXhgIGFuZCA6bWV0aDpgbWVtb3J5dmlldy5oZXhgCisgIG1ldGhvZHMuIChDb250cmlidXRlZCBieSBBcm5vbiBZYWFyaSBpbiA6aXNzdWU6YDk5NTFgLikKKworKiA6Y2xhc3M6YG1lbW9yeXZpZXdgIG5vdyBzdXBwb3J0cyB0dXBsZSBpbmRleGluZyAoaW5jbHVkaW5nIG11bHRpLWRpbWVuc2lvbmFsKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjM2MzJgLikKKworKiBHZW5lcmF0b3JzIGhhdmUgYSBuZXcgYGBnaV95aWVsZGZyb21gYCBhdHRyaWJ1dGUsIHdoaWNoIHJldHVybnMgdGhlCisgIG9iamVjdCBiZWluZyBpdGVyYXRlZCBieSBgYHlpZWxkIGZyb21gYCBleHByZXNzaW9ucy4gKENvbnRyaWJ1dGVkCisgIGJ5IEJlbm5vIExlc2xpZSBhbmQgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDQ1MGAuKQorCisqIEEgbmV3IDpleGM6YFJlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24gaXMgbm93IHJhaXNlZCB3aGVuIG1heGltdW0KKyAgcmVjdXJzaW9uIGRlcHRoIGlzIHJlYWNoZWQuICAoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsCisgIGluIDppc3N1ZTpgMTkyMzVgLikKKworCitDUHl0aG9uIGltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBXaGVuIHRoZSBgYExDX1RZUEVgYCBsb2NhbGUgaXMgdGhlIFBPU0lYIGxvY2FsZSAoYGBDYGAgbG9jYWxlKSwKKyAgOnB5OmRhdGE6YHN5cy5zdGRpbmAgYW5kIDpweTpkYXRhOmBzeXMuc3Rkb3V0YCBub3cgdXNlIHRoZQorICBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yIGhhbmRsZXIsIGluc3RlYWQgb2YgdGhlIGBgc3RyaWN0YGAgZXJyb3IgaGFuZGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTk5NzdgLikKKworKiBgYC5weW9gYCBmaWxlcyBhcmUgbm8gbG9uZ2VyIHVzZWQgYW5kIGhhdmUgYmVlbiByZXBsYWNlZCBieSBhIG1vcmUgZmxleGlibGUKKyAgc2NoZW1lIHRoYXQgaW5jbHVkZXMgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBleHBsaWNpdGx5IGluIGBgLnB5Y2BgIG5hbWUuCisgIChTZWUgOnJlZjpgUEVQIDQ4OCBvdmVydmlldyA8d2hhdHNuZXctcGVwLTQ4OD5gLikKKworKiBCdWlsdGluIGFuZCBleHRlbnNpb24gbW9kdWxlcyBhcmUgbm93IGluaXRpYWxpemVkIGluIGEgbXVsdGktcGhhc2UgcHJvY2VzcywKKyAgd2hpY2ggaXMgc2ltaWxhciB0byBob3cgUHl0aG9uIG1vZHVsZXMgYXJlIGxvYWRlZC4KKyAgKFNlZSA6cmVmOmBQRVAgNDg5IG92ZXJ2aWV3IDx3aGF0c25ldy1wZXAtNDg5PmAuKQorCisKK1NpZ25pZmljYW50IGltcHJvdmVtZW50cyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworKiA6Y2xhc3M6YGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBpcyBub3cKKyAgOnJlZjpgaW1wbGVtZW50ZWQgaW4gQyA8d2hhdHNuZXctb3JkZXJlZGRpY3Q+YCwgd2hpY2ggbWFrZXMgaXQKKyAgNCB0byAxMDAgdGltZXMgZmFzdGVyLgorCisqIDptb2Q6YHNzbGAgbW9kdWxlIGdhaW5lZAorICA6cmVmOmBzdXBwb3J0IGZvciBNZW1vcnkgQklPIDx3aGF0c25ldy1zc2xtZW1vcnliaW8+YCwgd2hpY2ggZGVjb3VwbGVzIFNTTAorICBwcm90b2NvbCBoYW5kbGluZyBmcm9tIG5ldHdvcmsgSU8uCisKKyogVGhlIG5ldyA6ZnVuYzpgb3Muc2NhbmRpcmAgZnVuY3Rpb24gcHJvdmlkZXMgYQorICA6cmVmOmBiZXR0ZXIgYW5kIHNpZ25pZmljYW50bHkgZmFzdGVyIHdheSA8d2hhdHNuZXctcGVwLTQ3MT5gCisgIG9mIGRpcmVjdG9yeSB0cmF2ZXJzYWwuCisKKyogOmZ1bmM6YGZ1bmN0b29scy5scnVfY2FjaGVgIGhhcyBiZWVuIG1vc3RseQorICA6cmVmOmByZWltcGxlbWVudGVkIGluIEMgPHdoYXRzbmV3LWxydWNhY2hlPmAsIHlpZWxkaW5nIG11Y2ggYmV0dGVyCisgIHBlcmZvcm1hbmNlLgorCisqIFRoZSBuZXcgOmZ1bmM6YHN1YnByb2Nlc3MucnVuYCBmdW5jdGlvbiBwcm92aWRlcyBhCisgIDpyZWY6YHN0cmVhbWxpbmVkIHdheSB0byBydW4gc3VicHJvY2Vzc2VzIDx3aGF0c25ldy1zdWJwcm9jZXNzPmAuCisKKyogVGhlIDptb2Q6YHRyYWNlYmFja2AgbW9kdWxlIGhhcyBiZWVuIHNpZ25pZmljYW50bHkKKyAgOnJlZjpgZW5oYW5jZWQgPHdoYXRzbmV3LXRyYWNlYmFjaz5gIGZvciBpbXByb3ZlZAorICBwZXJmb3JtYW5jZSBhbmQgZGV2ZWxvcGVyIGNvbnZlbmllbmNlLgorCisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBTU0x2MyBpcyBub3cgZGlzYWJsZWQgdGhyb3VnaG91dCB0aGUgc3RhbmRhcmQgbGlicmFyeS4KKyAgSXQgY2FuIHN0aWxsIGJlIGVuYWJsZWQgYnkgaW5zdGFudGlhdGluZyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgCisgIG1hbnVhbGx5LiAgKFNlZSA6aXNzdWU6YDIyNjM4YCBmb3IgbW9yZSBkZXRhaWxzOyB0aGlzIGNoYW5nZSB3YXMKKyAgYmFja3BvcnRlZCB0byBDUHl0aG9uIDMuNCBhbmQgMi43LikKKworKiBIVFRQIGNvb2tpZSBwYXJzaW5nIGlzIG5vdyBzdHJpY3RlciwgaW4gb3JkZXIgdG8gcHJvdGVjdAorICBhZ2FpbnN0IHBvdGVudGlhbCBpbmplY3Rpb24gYXR0YWNrcy4gKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91CisgIGluIDppc3N1ZTpgMjI3OTZgLikKKworCitXaW5kb3dzIGltcHJvdmVtZW50czoKKworKiBBIG5ldyBpbnN0YWxsZXIgZm9yIFdpbmRvd3MgaGFzIHJlcGxhY2VkIHRoZSBvbGQgTVNJLgorICBTZWUgOnJlZjpgdXNpbmctb24td2luZG93c2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyogV2luZG93cyBidWlsZHMgbm93IHVzZSBNaWNyb3NvZnQgVmlzdWFsIEMrKyAxNC4wLCBhbmQgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgc2hvdWxkIHVzZSB0aGUgc2FtZS4KKworCitQbGVhc2UgcmVhZCBvbiBmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3Qgb2YgdXNlci1mYWNpbmcgY2hhbmdlcywgaW5jbHVkaW5nIG1hbnkKK290aGVyIHNtYWxsZXIgaW1wcm92ZW1lbnRzLCBDUHl0aG9uIG9wdGltaXphdGlvbnMsIGRlcHJlY2F0aW9ucywgYW5kIHBvdGVudGlhbAorcG9ydGluZyBpc3N1ZXMuCisKKworTmV3IEZlYXR1cmVzCis9PT09PT09PT09PT0KKworLi4gX3doYXRzbmV3LXBlcC00OTI6CisKK1BFUCA0OTIgLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ5MmAgZ3JlYXRseSBpbXByb3ZlcyBzdXBwb3J0IGZvciBhc3luY2hyb25vdXMgcHJvZ3JhbW1pbmcgaW4gUHl0aG9uCitieSBhZGRpbmcgOnRlcm06YGF3YWl0YWJsZSBvYmplY3RzIDxhd2FpdGFibGU+YCwKKzp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25zIDxjb3JvdXRpbmUgZnVuY3Rpb24+YCwKKzp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0aW9uIDxhc3luY2hyb25vdXMgaXRlcmFibGU+YCwKK2FuZCA6dGVybTpgYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlcnMgPGFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXI+YC4KKworQ29yb3V0aW5lIGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQgdXNpbmcgdGhlIG5ldyA6a2V5d29yZDpgYXN5bmMgZGVmYCBzeW50YXg6OgorCisgICAgPj4+IGFzeW5jIGRlZiBjb3JvKCk6CisgICAgLi4uICAgICByZXR1cm4gJ3NwYW0nCisKK0luc2lkZSBhIGNvcm91dGluZSBmdW5jdGlvbiwgdGhlIG5ldyA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb24gY2FuIGJlIHVzZWQKK3RvIHN1c3BlbmQgY29yb3V0aW5lIGV4ZWN1dGlvbiB1bnRpbCB0aGUgcmVzdWx0IGlzIGF2YWlsYWJsZS4gIEFueSBvYmplY3QKK2NhbiBiZSAqYXdhaXRlZCosIGFzIGxvbmcgYXMgaXQgaW1wbGVtZW50cyB0aGUgOnRlcm06YGF3YWl0YWJsZWAgcHJvdG9jb2wgYnkKK2RlZmluaW5nIHRoZSA6bWV0aDpgX19hd2FpdF9fYCBtZXRob2QuCisKK1BFUCA0OTIgYWxzbyBhZGRzIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudCBmb3IgY29udmVuaWVudCBpdGVyYXRpb24KK292ZXIgYXN5bmNocm9ub3VzIGl0ZXJhYmxlcy4KKworQW4gZXhhbXBsZSBvZiBhIHJ1ZGltZW50YXJ5IEhUVFAgY2xpZW50IHdyaXR0ZW4gdXNpbmcgdGhlIG5ldyBzeW50YXg6OgorCisgICAgaW1wb3J0IGFzeW5jaW8KKworICAgIGFzeW5jIGRlZiBodHRwX2dldChkb21haW4pOgorICAgICAgICByZWFkZXIsIHdyaXRlciA9IGF3YWl0IGFzeW5jaW8ub3Blbl9jb25uZWN0aW9uKGRvbWFpbiwgODApCisKKyAgICAgICAgd3JpdGVyLndyaXRlKGInXHJcbicuam9pbihbCisgICAgICAgICAgICBiJ0dFVCAvIEhUVFAvMS4xJywKKyAgICAgICAgICAgIGInSG9zdDogJWInICUgZG9tYWluLmVuY29kZSgnbGF0aW4tMScpLAorICAgICAgICAgICAgYidDb25uZWN0aW9uOiBjbG9zZScsCisgICAgICAgICAgICBiJycsIGInJworICAgICAgICBdKSkKKworICAgICAgICBhc3luYyBmb3IgbGluZSBpbiByZWFkZXI6CisgICAgICAgICAgICBwcmludCgnPj4+JywgbGluZSkKKworICAgICAgICB3cml0ZXIuY2xvc2UoKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIHRyeToKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoaHR0cF9nZXQoJ2V4YW1wbGUuY29tJykpCisgICAgZmluYWxseToKKyAgICAgICAgbG9vcC5jbG9zZSgpCisKKworU2ltaWxhcmx5IHRvIGFzeW5jaHJvbm91cyBpdGVyYXRpb24sIHRoZXJlIGlzIGEgbmV3IHN5bnRheCBmb3IgYXN5bmNocm9ub3VzCitjb250ZXh0IG1hbmFnZXJzLiAgVGhlIGZvbGxvd2luZyBzY3JpcHQ6OgorCisgICAgaW1wb3J0IGFzeW5jaW8KKworICAgIGFzeW5jIGRlZiBjb3JvKG5hbWUsIGxvY2spOgorICAgICAgICBwcmludCgnY29ybyB7fTogd2FpdGluZyBmb3IgbG9jaycuZm9ybWF0KG5hbWUpKQorICAgICAgICBhc3luYyB3aXRoIGxvY2s6CisgICAgICAgICAgICBwcmludCgnY29ybyB7fTogaG9sZGluZyB0aGUgbG9jaycuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgxKQorICAgICAgICAgICAgcHJpbnQoJ2Nvcm8ge306IHJlbGVhc2luZyB0aGUgbG9jaycuZm9ybWF0KG5hbWUpKQorCisgICAgbG9vcCA9IGFzeW5jaW8uZ2V0X2V2ZW50X2xvb3AoKQorICAgIGxvY2sgPSBhc3luY2lvLkxvY2soKQorICAgIGNvcm9zID0gYXN5bmNpby5nYXRoZXIoY29ybygxLCBsb2NrKSwgY29ybygyLCBsb2NrKSkKKyAgICB0cnk6CisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGNvcm9zKQorICAgIGZpbmFsbHk6CisgICAgICAgIGxvb3AuY2xvc2UoKQorCit3aWxsIG91dHB1dDo6CisKKyAgICBjb3JvIDI6IHdhaXRpbmcgZm9yIGxvY2sKKyAgICBjb3JvIDI6IGhvbGRpbmcgdGhlIGxvY2sKKyAgICBjb3JvIDE6IHdhaXRpbmcgZm9yIGxvY2sKKyAgICBjb3JvIDI6IHJlbGVhc2luZyB0aGUgbG9jaworICAgIGNvcm8gMTogaG9sZGluZyB0aGUgbG9jaworICAgIGNvcm8gMTogcmVsZWFzaW5nIHRoZSBsb2NrCisKK05vdGUgdGhhdCBib3RoIDprZXl3b3JkOmBhc3luYyBmb3JgIGFuZCA6a2V5d29yZDpgYXN5bmMgd2l0aGAgY2FuIG9ubHkKK2JlIHVzZWQgaW5zaWRlIGEgY29yb3V0aW5lIGZ1bmN0aW9uIGRlY2xhcmVkIHdpdGggOmtleXdvcmQ6YGFzeW5jIGRlZmAuCisKK0Nvcm91dGluZSBmdW5jdGlvbnMgYXJlIGludGVuZGVkIHRvIGJlIHJ1biBpbnNpZGUgYSBjb21wYXRpYmxlIGV2ZW50IGxvb3AsCitzdWNoIGFzIHRoZSA6cmVmOmBhc3luY2lvIGxvb3AgPGFzeW5jaW8tZXZlbnQtbG9vcD5gLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDkyYCAtLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheAorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKKy4uIF93aGF0c25ldy1wZXAtNDY1OgorCitQRVAgNDY1IC0gQSBkZWRpY2F0ZWQgaW5maXggb3BlcmF0b3IgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDY1YCBhZGRzIHRoZSBgYEBgYCBpbmZpeCBvcGVyYXRvciBmb3IgbWF0cml4IG11bHRpcGxpY2F0aW9uLgorQ3VycmVudGx5LCBubyBidWlsdGluIFB5dGhvbiB0eXBlcyBpbXBsZW1lbnQgdGhlIG5ldyBvcGVyYXRvciwgaG93ZXZlciwgaXQKK2NhbiBiZSBpbXBsZW1lbnRlZCBieSBkZWZpbmluZyA6bWV0aDpgX19tYXRtdWxfX2AsIDptZXRoOmBfX3JtYXRtdWxfX2AsCithbmQgOm1ldGg6YF9faW1hdG11bF9fYCBmb3IgcmVndWxhciwgcmVmbGVjdGVkLCBhbmQgaW4tcGxhY2UgbWF0cml4CittdWx0aXBsaWNhdGlvbi4gIFRoZSBzZW1hbnRpY3Mgb2YgdGhlc2UgbWV0aG9kcyBpcyBzaW1pbGFyIHRvIHRoYXQgb2YKK21ldGhvZHMgZGVmaW5pbmcgb3RoZXIgaW5maXggYXJpdGhtZXRpYyBvcGVyYXRvcnMuCisKK01hdHJpeCBtdWx0aXBsaWNhdGlvbiBpcyBhIG5vdGFibHkgY29tbW9uIG9wZXJhdGlvbiBpbiBtYW55IGZpZWxkcyBvZgorbWF0aGVtYXRpY3MsIHNjaWVuY2UsIGVuZ2luZWVyaW5nLCBhbmQgdGhlIGFkZGl0aW9uIG9mIGBgQGBgIGFsbG93cyB3cml0aW5nCitjbGVhbmVyIGNvZGU6OgorCisgICAgUyA9IChIIEAgYmV0YSAtIHIpLlQgQCBpbnYoSCBAIFYgQCBILlQpIEAgKEggQCBiZXRhIC0gcikKKworaW5zdGVhZCBvZjo6CisKKyAgICBTID0gZG90KChkb3QoSCwgYmV0YSkgLSByKS5ULAorICAgICAgICAgICAgZG90KGludihkb3QoZG90KEgsIFYpLCBILlQpKSwgZG90KEgsIGJldGEpIC0gcikpCisKK0FuIHVwY29taW5nIHJlbGVhc2Ugb2YgTnVtUHkgMS4xMCB3aWxsIGFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IG9wZXJhdG9yOjoKKworICAgID4+PiBpbXBvcnQgbnVtcHkKKworICAgID4+PiB4ID0gbnVtcHkub25lcygzKQorICAgID4+PiB4CisgICAgYXJyYXkoWyAxLiwgMS4sIDEuXSkKKworICAgID4+PiBtID0gbnVtcHkuZXllKDMpCisgICAgPj4+IG0KKyAgICBhcnJheShbWyAxLiwgMC4sIDAuXSwKKyAgICAgICAgICAgWyAwLiwgMS4sIDAuXSwKKyAgICAgICAgICAgWyAwLiwgMC4sIDEuXV0pCisKKyAgICA+Pj4geCBAIG0KKyAgICBhcnJheShbIDEuLCAxLiwgMS5dKQorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjVgIC0tIEEgZGVkaWNhdGVkIGluZml4IG9wZXJhdG9yIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IE5hdGhhbmllbCBKLiBTbWl0aDsgaW1wbGVtZW50ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24uCisKKworLi4gX3doYXRzbmV3LXBlcC00NDg6CisKK1BFUCA0NDggLSBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDQ4YCBleHRlbmRzIHRoZSBhbGxvd2VkIHVzZXMgb2YgdGhlIGBgKmBgIGl0ZXJhYmxlIHVucGFja2luZworb3BlcmF0b3IgYW5kIGBgKipgYCBkaWN0aW9uYXJ5IHVucGFja2luZyBvcGVyYXRvci4gIEl0IGlzIG5vdyBwb3NzaWJsZQordG8gdXNlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdW5wYWNraW5ncyBpbiBmdW5jdGlvbiBjYWxsczo6CisKKyAgICA+Pj4gcHJpbnQoKlsxXSwgKlsyXSwgMywgKls0LCA1XSkKKyAgICAxIDIgMyA0IDUKKworICAgID4+PiBkZWYgZm4oYSwgYiwgYywgZCk6CisgICAgLi4uICAgICBwcmludChhLCBiLCBjLCBkKQorICAgIC4uLgorCisgICAgPj4+IGZuKCoqeydhJzogMSwgJ2MnOiAzfSwgKip7J2InOiAyLCAnZCc6IDR9KQorICAgIDEgMiAzIDQKKworU2ltaWxhcmx5LCB0dXBsZSwgbGlzdCwgc2V0LCBhbmQgZGljdGlvbmFyeSBkaXNwbGF5cyBhbGxvdyBtdWx0aXBsZQordW5wYWNraW5nczo6CisKKyAgICA+Pj4gKnJhbmdlKDQpLCA0CisgICAgKDAsIDEsIDIsIDMsIDQpCisKKyAgICA+Pj4gWypyYW5nZSg0KSwgNF0KKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiB7KnJhbmdlKDQpLCA0LCAqKDUsIDYsIDcpfQorICAgIHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3fQorCisgICAgPj4+IHsneCc6IDEsICoqeyd5JzogMn19CisgICAgeyd4JzogMSwgJ3knOiAyfQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDQ4YCAtLSBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEpvc2h1YSBMYW5kYXU7IGltcGxlbWVudGVkIGJ5IE5laWwgR2lyZGhhciwKKyAgICAgIFRob21hcyBXb3V0ZXJzLCBhbmQgSm9zaHVhIExhbmRhdS4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ2MToKKworUEVQIDQ2MSAtICUgZm9ybWF0dGluZyBzdXBwb3J0IGZvciBieXRlcyBhbmQgYnl0ZWFycmF5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDYxYCBhZGRzIHN1cHBvcnQgZm9yIGBgJWBgCis6cmVmOmBpbnRlcnBvbGF0aW9uIG9wZXJhdG9yIDxieXRlcy1mb3JtYXR0aW5nPmAgdG8gOmNsYXNzOmBieXRlc2AKK2FuZCA6Y2xhc3M6YGJ5dGVhcnJheWAuCisKK1doaWxlIGludGVycG9sYXRpb24gaXMgdXN1YWxseSB0aG91Z2h0IG9mIGFzIGEgc3RyaW5nIG9wZXJhdGlvbiwgdGhlcmUgYXJlCitjYXNlcyB3aGVyZSBpbnRlcnBvbGF0aW9uIG9uIGBgYnl0ZXNgYCBvciBgYGJ5dGVhcnJheXNgYCBtYWtlcyBzZW5zZSwgYW5kIHRoZQord29yayBuZWVkZWQgdG8gbWFrZSB1cCBmb3IgdGhpcyBtaXNzaW5nIGZ1bmN0aW9uYWxpdHkgZGV0cmFjdHMgZnJvbSB0aGUKK292ZXJhbGwgcmVhZGFiaWxpdHkgb2YgdGhlIGNvZGUuICBUaGlzIGlzc3VlIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgd2hlbgorZGVhbGluZyB3aXRoIHdpcmUgZm9ybWF0IHByb3RvY29scywgd2hpY2ggYXJlIG9mdGVuIGEgbWl4dHVyZSBvZiBiaW5hcnkKK2FuZCBBU0NJSSBjb21wYXRpYmxlIHRleHQuCisKK0V4YW1wbGVzOjoKKworICAgID4+PiBiJ0hlbGxvICViIScgJSBiJ1dvcmxkJworICAgIGInSGVsbG8gV29ybGQhJworCisgICAgPj4+IGIneD0laSB5PSVmJyAlICgxLCAyLjUpCisgICAgYid4PTEgeT0yLjUwMDAwMCcKKworVW5pY29kZSBpcyBub3QgYWxsb3dlZCBmb3IgYGAlYmBgLCBidXQgaXQgaXMgYWNjZXB0ZWQgYnkgYGAlYWBgIChlcXVpdmFsZW50IG9mCitgYHJlcHIob2JqKS5lbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKWBgKTo6CisKKyAgICA+Pj4gYidIZWxsbyAlYiEnICUgJ1dvcmxkJworICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgVHlwZUVycm9yOiAlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnc3RyJworCisgICAgPj4+IGIncHJpY2U6ICVhJyAlICcxMOKCrCcKKyAgICBiInByaWNlOiAnMTBcXHUyMGFjJyIKKworTm90ZSB0aGF0IGBgJXNgYCBhbmQgYGAlcmBgIGNvbnZlcnNpb24gdHlwZXMsIGFsdGhvdWdoIHN1cHBvcnRlZCwgc2hvdWxkCitvbmx5IGJlIHVzZWQgaW4gY29kZWJhc2VzIHRoYXQgbmVlZCBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NjFgIC0tIEFkZGluZyAlIGZvcm1hdHRpbmcgdG8gYnl0ZXMgYW5kIGJ5dGVhcnJheQorICAgICAgUEVQIHdyaXR0ZW4gYnkgRXRoYW4gRnVybWFuOyBpbXBsZW1lbnRlZCBieSBOZWlsIFNjaGVtZW5hdWVyIGFuZAorICAgICAgRXRoYW4gRnVybWFuLgorCisKKy4uIF93aGF0c25ldy1wZXAtNDg0OgorCitQRVAgNDg0IC0gVHlwZSBIaW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnVuY3Rpb24gYW5ub3RhdGlvbiBzeW50YXggaGFzIGJlZW4gYSBQeXRob24gZmVhdHVyZSBzaW5jZSB2ZXJzaW9uIDMuMAorKDpwZXA6YDMxMDdgKSwgaG93ZXZlciB0aGUgc2VtYW50aWNzIG9mIGFubm90YXRpb25zIGhhcyBiZWVuIGxlZnQgdW5kZWZpbmVkLgorCitFeHBlcmllbmNlIGhhcyBzaG93biB0aGF0IHRoZSBtYWpvcml0eSBvZiBmdW5jdGlvbiBhbm5vdGF0aW9uCit1c2VzIHdlcmUgdG8gcHJvdmlkZSB0eXBlIGhpbnRzIHRvIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1ZXMuICBJdAorYmVjYW1lIGV2aWRlbnQgdGhhdCBpdCB3b3VsZCBiZSBiZW5lZmljaWFsIGZvciBQeXRob24gdXNlcnMsIGlmIHRoZQorc3RhbmRhcmQgbGlicmFyeSBpbmNsdWRlZCB0aGUgYmFzZSBkZWZpbml0aW9ucyBhbmQgdG9vbHMgZm9yIHR5cGUgYW5ub3RhdGlvbnMuCisKKzpwZXA6YDQ4NGAgaW50cm9kdWNlcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIGFwaT5gIHRvCitwcm92aWRlIHRoZXNlIHN0YW5kYXJkIGRlZmluaXRpb25zIGFuZCB0b29scywgYWxvbmcgd2l0aCBzb21lIGNvbnZlbnRpb25zCitmb3Igc2l0dWF0aW9ucyB3aGVyZSBhbm5vdGF0aW9ucyBhcmUgbm90IGF2YWlsYWJsZS4KKworRm9yIGV4YW1wbGUsIGhlcmUgaXMgYSBzaW1wbGUgZnVuY3Rpb24gd2hvc2UgYXJndW1lbnQgYW5kIHJldHVybiB0eXBlCithcmUgZGVjbGFyZWQgaW4gdGhlIGFubm90YXRpb25zOjoKKworICAgIGRlZiBncmVldGluZyhuYW1lOiBzdHIpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJuICdIZWxsbyAnICsgbmFtZQorCitXaGlsZSB0aGVzZSBhbm5vdGF0aW9ucyBhcmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWUgdGhyb3VnaCB0aGUgdXN1YWwKKzphdHRyOmBfX2Fubm90YXRpb25zX19gIGF0dHJpYnV0ZSwgKm5vIGF1dG9tYXRpYyB0eXBlIGNoZWNraW5nIGhhcHBlbnMgYXQKK3J1bnRpbWUqLiAgSW5zdGVhZCwgaXQgaXMgYXNzdW1lZCB0aGF0IGEgc2VwYXJhdGUgb2ZmLWxpbmUgdHlwZSBjaGVja2VyCisoZS5nLiBgbXlweSA8aHR0cDovL215cHktbGFuZy5vcmc+YF8pIHdpbGwgYmUgdXNlZCBmb3Igb24tZGVtYW5kCitzb3VyY2UgY29kZSBhbmFseXNpcy4KKworVGhlIHR5cGUgc3lzdGVtIHN1cHBvcnRzIHVuaW9ucywgZ2VuZXJpYyB0eXBlcywgYW5kIGEgc3BlY2lhbCB0eXBlCituYW1lZCA6Y2xhc3M6YH50eXBpbmcuQW55YCB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGggKGkuZS4gYXNzaWduYWJsZSB0bworYW5kIGZyb20pIGFsbCB0eXBlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgICogOm1vZDpgdHlwaW5nYCBtb2R1bGUgZG9jdW1lbnRhdGlvbgorICAgKiA6cGVwOmA0ODRgIC0tIFR5cGUgSGludHMKKyAgICAgICAgUEVQIHdyaXR0ZW4gYnkgR3VpZG8gdmFuIFJvc3N1bSwgSnVra2EgTGVodG9zYWxvLCBhbmQgxYF1a2FzeiBMYW5nYTsKKyAgICAgICAgaW1wbGVtZW50ZWQgYnkgR3VpZG8gdmFuIFJvc3N1bS4KKyAgICogOnBlcDpgNDgzYCAtLSBUaGUgVGhlb3J5IG9mIFR5cGUgSGludHMKKyAgICAgICAgUEVQIHdyaXR0ZW4gYnkgR3VpZG8gdmFuIFJvc3N1bQorCisKKy4uIF93aGF0c25ldy1wZXAtNDcxOgorCitQRVAgNDcxIC0gb3Muc2NhbmRpcigpIGZ1bmN0aW9uIC0tIGEgYmV0dGVyIGFuZCBmYXN0ZXIgZGlyZWN0b3J5IGl0ZXJhdG9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ3MWAgYWRkcyBhIG5ldyBkaXJlY3RvcnkgaXRlcmF0aW9uIGZ1bmN0aW9uLCA6ZnVuYzpgb3Muc2NhbmRpcmAsCit0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIEFkZGl0aW9uYWxseSwgOmZ1bmM6YG9zLndhbGtgIGlzIG5vdworaW1wbGVtZW50ZWQgdXNpbmcgYGBzY2FuZGlyYGAsIHdoaWNoIG1ha2VzIGl0IDMgdG8gNSB0aW1lcyBmYXN0ZXIKK29uIFBPU0lYIHN5c3RlbXMgYW5kIDcgdG8gMjAgdGltZXMgZmFzdGVyIG9uIFdpbmRvd3Mgc3lzdGVtcy4gIFRoaXMgaXMKK2xhcmdlbHkgYWNoaWV2ZWQgYnkgZ3JlYXRseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDpmdW5jOmBvcy5zdGF0YAorcmVxdWlyZWQgdG8gd2FsayBhIGRpcmVjdG9yeSB0cmVlLgorCitBZGRpdGlvbmFsbHksIGBgc2NhbmRpcmBgIHJldHVybnMgYW4gaXRlcmF0b3IsIGFzIG9wcG9zZWQgdG8gcmV0dXJuaW5nCithIGxpc3Qgb2YgZmlsZSBuYW1lcywgd2hpY2ggaW1wcm92ZXMgbWVtb3J5IGVmZmljaWVuY3kgd2hlbiBpdGVyYXRpbmcKK292ZXIgdmVyeSBsYXJnZSBkaXJlY3Rvcmllcy4KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGEgc2ltcGxlIHVzZSBvZiA6ZnVuYzpgb3Muc2NhbmRpcmAgdG8gZGlzcGxheSBhbGwKK3RoZSBmaWxlcyAoZXhjbHVkaW5nIGRpcmVjdG9yaWVzKSBpbiB0aGUgZ2l2ZW4gKnBhdGgqIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aAorYGAnLidgYC4gVGhlIDptZXRoOmBlbnRyeS5pc19maWxlKCkgPG9zLkRpckVudHJ5LmlzX2ZpbGU+YCBjYWxsIHdpbGwgZ2VuZXJhbGx5Citub3QgbWFrZSBhbiBhZGRpdGlvbmFsIHN5c3RlbSBjYWxsOjoKKworICAgIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKHBhdGgpOgorICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0NzFgIC0tIG9zLnNjYW5kaXIoKSBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvcgorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEJlbiBIb3l0IHdpdGggdGhlIGhlbHAgb2YgVmljdG9yIFN0aW5uZXIuCisKKworLi4gX3doYXRzbmV3LXBlcC00NzU6CisKK1BFUCA0NzU6IFJldHJ5IHN5c3RlbSBjYWxscyBmYWlsaW5nIHdpdGggRUlOVFIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSA6cHk6ZGF0YTpgZXJybm8uRUlOVFJgIGVycm9yIGNvZGUgaXMgcmV0dXJuZWQgd2hlbmV2ZXIgYSBzeXN0ZW0gY2FsbCwgdGhhdAoraXMgd2FpdGluZyBmb3IgSS9PLCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4gIFByZXZpb3VzbHksIFB5dGhvbiB3b3VsZAorcmFpc2UgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgaW4gc3VjaCBjYXNlLiAgVGhpcyBtZWFudCB0aGF0LCB3aGVuIHdyaXRpbmcgYQorUHl0aG9uIGFwcGxpY2F0aW9uLCB0aGUgZGV2ZWxvcGVyIGhhZCB0d28gY2hvaWNlczoKKworIy4gSWdub3JlIHRoZSBgYEludGVycnVwdGVkRXJyb3JgYC4KKyMuIEhhbmRsZSB0aGUgYGBJbnRlcnJ1cHRlZEVycm9yYGAgYW5kIGF0dGVtcHQgdG8gcmVzdGFydCB0aGUgaW50ZXJydXB0ZWQKKyAgIHN5c3RlbSBjYWxsIGF0IGV2ZXJ5IGNhbGwgc2l0ZS4KKworVGhlIGZpcnN0IG9wdGlvbiBtYWtlcyBhbiBhcHBsaWNhdGlvbiBmYWlsIGludGVybWl0dGVudGx5LgorVGhlIHNlY29uZCBvcHRpb24gYWRkcyBhIGxhcmdlIGFtb3VudCBvZiBib2lsZXJwbGF0ZSB0aGF0IG1ha2VzIHRoZQorY29kZSBuZWFybHkgdW5yZWFkYWJsZS4gIENvbXBhcmU6OgorCisgICAgcHJpbnQoIkhlbGxvIFdvcmxkIikKKworYW5kOjoKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KCJIZWxsbyBXb3JsZCIpCisgICAgICAgICAgICBicmVhaworICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKzpwZXA6YDQ3NWAgaW1wbGVtZW50cyBhdXRvbWF0aWMgcmV0cnkgb2Ygc3lzdGVtIGNhbGxzIG9uCitgYEVJTlRSYGAuICBUaGlzIHJlbW92ZXMgdGhlIGJ1cmRlbiBvZiBkZWFsaW5nIHdpdGggYGBFSU5UUmBgCitvciA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBpbiB1c2VyIGNvZGUgaW4gbW9zdCBzaXR1YXRpb25zIGFuZCBtYWtlcworUHl0aG9uIHByb2dyYW1zLCBpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnksIG1vcmUgcm9idXN0LiAgTm90ZSB0aGF0Cit0aGUgc3lzdGVtIGNhbGwgaXMgb25seSByZXRyaWVkIGlmIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorZXhjZXB0aW9uLgorCitCZWxvdyBpcyBhIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIGFyZSBub3cgcmV0cmllZCB3aGVuIGludGVycnVwdGVkCitieSBhIHNpZ25hbDoKKworKiA6ZnVuYzpgb3BlbmAgYW5kIDpmdW5jOmBpby5vcGVuYDsKKworKiBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YGZhdWx0aGFuZGxlcmAgbW9kdWxlOworCisqIDptb2Q6YG9zYCBmdW5jdGlvbnM6IDpmdW5jOmB+b3MuZmNoZGlyYCwgOmZ1bmM6YH5vcy5mY2htb2RgLAorICA6ZnVuYzpgfm9zLmZjaG93bmAsIDpmdW5jOmB+b3MuZmRhdGFzeW5jYCwgOmZ1bmM6YH5vcy5mc3RhdGAsCisgIDpmdW5jOmB+b3MuZnN0YXR2ZnNgLCA6ZnVuYzpgfm9zLmZzeW5jYCwgOmZ1bmM6YH5vcy5mdHJ1bmNhdGVgLAorICA6ZnVuYzpgfm9zLm1rZmlmb2AsIDpmdW5jOmB+b3MubWtub2RgLCA6ZnVuYzpgfm9zLm9wZW5gLAorICA6ZnVuYzpgfm9zLnBvc2l4X2ZhZHZpc2VgLCA6ZnVuYzpgfm9zLnBvc2l4X2ZhbGxvY2F0ZWAsIDpmdW5jOmB+b3MucHJlYWRgLAorICA6ZnVuYzpgfm9zLnB3cml0ZWAsIDpmdW5jOmB+b3MucmVhZGAsIDpmdW5jOmB+b3MucmVhZHZgLCA6ZnVuYzpgfm9zLnNlbmRmaWxlYCwKKyAgOmZ1bmM6YH5vcy53YWl0M2AsIDpmdW5jOmB+b3Mud2FpdDRgLCA6ZnVuYzpgfm9zLndhaXRgLAorICA6ZnVuYzpgfm9zLndhaXRpZGAsIDpmdW5jOmB+b3Mud2FpdHBpZGAsIDpmdW5jOmB+b3Mud3JpdGVgLAorICA6ZnVuYzpgfm9zLndyaXRldmA7CisKKyogc3BlY2lhbCBjYXNlczogOmZ1bmM6YG9zLmNsb3NlYCBhbmQgOmZ1bmM6YG9zLmR1cDJgIG5vdyBpZ25vcmUKKyAgOnB5OmRhdGE6YH5lcnJuby5FSU5UUmAgZXJyb3IsIHRoZSBzeXNjYWxsIGlzIG5vdCByZXRyaWVkIChzZWUgdGhlIFBFUAorICBmb3IgdGhlIHJhdGlvbmFsZSk7CisKKyogOm1vZDpgc2VsZWN0YCBmdW5jdGlvbnM6IDpmdW5jOmBkZXZwb2xsLnBvbGwoKSA8c2VsZWN0LmRldnBvbGwucG9sbD5gLAorICA6ZnVuYzpgZXBvbGwucG9sbCgpIDxzZWxlY3QuZXBvbGwucG9sbD5gLAorICA6ZnVuYzpga3F1ZXVlLmNvbnRyb2woKSA8c2VsZWN0LmtxdWV1ZS5jb250cm9sPmAsCisgIDpmdW5jOmBwb2xsLnBvbGwoKSA8c2VsZWN0LnBvbGwucG9sbD5gLCA6ZnVuYzpgfnNlbGVjdC5zZWxlY3RgOworCisqIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzOiA6bWV0aDpgfnNvY2tldC5zb2NrZXQuYWNjZXB0YCwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmNvbm5lY3RgIChleGNlcHQgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzKSwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnJlY3ZgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQucmVjdmZyb21gLAorICA6bWV0aDpgfnNvY2tldC5zb2NrZXQucmVjdm1zZ2AsIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kYCwKKyAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRhbGxgLCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ2AsCisgIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kdG9gOworCisqIDpmdW5jOmBzaWduYWwuc2lndGltZWR3YWl0YCBhbmQgOmZ1bmM6YHNpZ25hbC5zaWd3YWl0aW5mb2A7CisKKyogOmZ1bmM6YHRpbWUuc2xlZXBgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDc1YCAtLSBSZXRyeSBzeXN0ZW0gY2FsbHMgZmFpbGluZyB3aXRoIEVJTlRSCisgICAgICBQRVAgYW5kIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpIGFuZAorICAgICAgVmljdG9yIFN0aW5uZXIsIHdpdGggdGhlIGhlbHAgb2YgQW50b2luZSBQaXRyb3UgKHRoZSBGcmVuY2ggY29ubmVjdGlvbikuCisKKworLi4gX3doYXRzbmV3LXBlcC00Nzk6CisKK1BFUCA0Nzk6IENoYW5nZSBTdG9wSXRlcmF0aW9uIGhhbmRsaW5nIGluc2lkZSBnZW5lcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaW50ZXJhY3Rpb24gb2YgZ2VuZXJhdG9ycyBhbmQgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW4gUHl0aG9uIDMuNCBhbmQKK2VhcmxpZXIgd2FzIHNvbWV0aW1lcyBzdXJwcmlzaW5nLCBhbmQgY291bGQgY29uY2VhbCBvYnNjdXJlIGJ1Z3MuICBQcmV2aW91c2x5LAorYGBTdG9wSXRlcmF0aW9uYGAgcmFpc2VkIGFjY2lkZW50YWxseSBpbnNpZGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd2FzCitpbnRlcnByZXRlZCBhcyB0aGUgZW5kIG9mIHRoZSBpdGVyYXRpb24gYnkgdGhlIGxvb3AgY29uc3RydWN0IGRyaXZpbmcgdGhlCitnZW5lcmF0b3IuCisKKzpwZXA6YDQ3OWAgY2hhbmdlcyB0aGUgYmVoYXZpb3Igb2YgZ2VuZXJhdG9yczogd2hlbiBhIGBgU3RvcEl0ZXJhdGlvbmBgCitleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZSBhIGdlbmVyYXRvciwgaXQgaXMgcmVwbGFjZWQgd2l0aCBhCis6ZXhjOmBSdW50aW1lRXJyb3JgIGJlZm9yZSBpdCBleGl0cyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiAgVGhlIG1haW4gZ29hbCBvZgordGhpcyBjaGFuZ2UgaXMgdG8gZWFzZSBkZWJ1Z2dpbmcgaW4gdGhlIHNpdHVhdGlvbiB3aGVyZSBhbiB1bmd1YXJkZWQKKzpmdW5jOmBuZXh0YCBjYWxsIHJhaXNlcyBgYFN0b3BJdGVyYXRpb25gYCBhbmQgY2F1c2VzIHRoZSBpdGVyYXRpb24gY29udHJvbGxlZAorYnkgdGhlIGdlbmVyYXRvciB0byB0ZXJtaW5hdGUgc2lsZW50bHkuIFRoaXMgaXMgcGFydGljdWxhcmx5IHBlcm5pY2lvdXMgaW4KK2NvbWJpbmF0aW9uIHdpdGggdGhlIGBgeWllbGQgZnJvbWBgIGNvbnN0cnVjdC4KKworVGhpcyBpcyBhIGJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlLCBzbyB0byBlbmFibGUgdGhlIG5ldyBiZWhhdmlvciwKK2EgOnRlcm06YF9fZnV0dXJlX19gIGltcG9ydCBpcyBuZWNlc3Nhcnk6OgorCisgICAgPj4+IGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9yX3N0b3AKKworICAgID4+PiBkZWYgZ2VuKCk6CisgICAgLi4uICAgICBuZXh0KGl0ZXIoW10pKQorICAgIC4uLiAgICAgeWllbGQKKyAgICAuLi4KKyAgICA+Pj4gbmV4dChnZW4oKSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiBnZW4KKyAgICBTdG9wSXRlcmF0aW9uCisKKyAgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOgorCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICBSdW50aW1lRXJyb3I6IGdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbgorCitXaXRob3V0IGEgYGBfX2Z1dHVyZV9fYGAgaW1wb3J0LCBhIDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgIHdpbGwgYmUKK3JhaXNlZCB3aGVuZXZlciBhIGBgU3RvcEl0ZXJhdGlvbmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlIGEgZ2VuZXJhdG9yLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDc5YCAtLSBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycworICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2hyaXMgQW5nZWxpY28gYW5kIEd1aWRvIHZhbiBSb3NzdW0uIEltcGxlbWVudGVkIGJ5CisgICAgICBDaHJpcyBBbmdlbGljbywgWXVyeSBTZWxpdmFub3YgYW5kIE5pY2sgQ29naGxhbi4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ4NToKKworUEVQIDQ4NTogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyBhcHByb3hpbWF0ZSBlcXVhbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODVgIGFkZHMgdGhlIDpmdW5jOmBtYXRoLmlzY2xvc2VgIGFuZCA6ZnVuYzpgY21hdGguaXNjbG9zZWAKK2Z1bmN0aW9ucyB3aGljaCB0ZWxsIHdoZXRoZXIgdHdvIHZhbHVlcyBhcmUgYXBwcm94aW1hdGVseSBlcXVhbCBvcgorImNsb3NlIiB0byBlYWNoIG90aGVyLiAgV2hldGhlciBvciBub3QgdHdvIHZhbHVlcyBhcmUgY29uc2lkZXJlZAorY2xvc2UgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8gZ2l2ZW4gYWJzb2x1dGUgYW5kIHJlbGF0aXZlIHRvbGVyYW5jZXMuCitSZWxhdGl2ZSB0b2xlcmFuY2UgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBkaWZmZXJlbmNlIGJldHdlZW4gYGBpc2Nsb3NlYGAKK2FyZ3VtZW50cywgcmVsYXRpdmUgdG8gdGhlIGxhcmdlciBhYnNvbHV0ZSB2YWx1ZTo6CisKKyAgICA+Pj4gaW1wb3J0IG1hdGgKKyAgICA+Pj4gYSA9IDUuMAorICAgID4+PiBiID0gNC45OTk5OAorICAgID4+PiBtYXRoLmlzY2xvc2UoYSwgYiwgcmVsX3RvbD0xZS01KQorICAgIFRydWUKKyAgICA+Pj4gbWF0aC5pc2Nsb3NlKGEsIGIsIHJlbF90b2w9MWUtNikKKyAgICBGYWxzZQorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNvbXBhcmUgdHdvIHZhbHVlcyB1c2luZyBhYnNvbHV0ZSB0b2xlcmFuY2UsIHdoaWNoCittdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIHZhbHVlOjoKKworICAgID4+PiBpbXBvcnQgbWF0aAorICAgID4+PiBhID0gNS4wCisgICAgPj4+IGIgPSA0Ljk5OTk4CisgICAgPj4+IG1hdGguaXNjbG9zZShhLCBiLCBhYnNfdG9sPTAuMDAwMDMpCisgICAgVHJ1ZQorICAgID4+PiBtYXRoLmlzY2xvc2UoYSwgYiwgYWJzX3RvbD0wLjAwMDAxKQorICAgIEZhbHNlCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0ODVgIC0tIEEgZnVuY3Rpb24gZm9yIHRlc3RpbmcgYXBwcm94aW1hdGUgZXF1YWxpdHkKKyAgICAgIFBFUCB3cml0dGVuIGJ5IENocmlzdG9waGVyIEJhcmtlcjsgaW1wbGVtZW50ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZAorICAgICAgVGFsIEVpbmF0LgorCisKKy4uIF93aGF0c25ldy1wZXAtNDg2OgorCitQRVAgNDg2OiBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODZgIG1ha2VzIHRoZSBXaW5kb3dzIGxhdW5jaGVyIChzZWUgOnBlcDpgMzk3YCkgYXdhcmUgb2YgYW4gYWN0aXZlCit2aXJ0dWFsIGVudmlyb25tZW50LiBXaGVuIHRoZSBkZWZhdWx0IGludGVycHJldGVyIHdvdWxkIGJlIHVzZWQgYW5kIHRoZQorYGBWSVJUVUFMX0VOVmBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdGhlIGludGVycHJldGVyIGluIHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudCB3aWxsIGJlIHVzZWQuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDg2YCAtLSBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbCBlbnZpcm9ubWVudHMKKyAgICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFBhdWwgTW9vcmUuCisKKworLi4gX3doYXRzbmV3LXBlcC00ODg6CisKK1BFUCA0ODg6IEVsaW1pbmF0aW9uIG9mIFBZTyBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ4OGAgZG9lcyBhd2F5IHdpdGggdGhlIGNvbmNlcHQgb2YgYGAucHlvYGAgZmlsZXMuIFRoaXMgbWVhbnMgdGhhdAorYGAucHljYGAgZmlsZXMgcmVwcmVzZW50IGJvdGggdW5vcHRpbWl6ZWQgYW5kIG9wdGltaXplZCBieXRlY29kZS4gVG8gcHJldmVudCB0aGUKK25lZWQgdG8gY29uc3RhbnRseSByZWdlbmVyYXRlIGJ5dGVjb2RlIGZpbGVzLCBgYC5weWNgYCBmaWxlcyBub3cgaGF2ZSBhbgorb3B0aW9uYWwgYGBvcHQtYGAgdGFnIGluIHRoZWlyIG5hbWUgd2hlbiB0aGUgYnl0ZWNvZGUgaXMgb3B0aW1pemVkLiBUaGlzIGhhcyB0aGUKK3NpZGUtZWZmZWN0IG9mIG5vIG1vcmUgYnl0ZWNvZGUgZmlsZSBuYW1lIGNsYXNoZXMgd2hlbiBydW5uaW5nIHVuZGVyIGVpdGhlcgorOm9wdGlvbjpgLU9gIG9yIDpvcHRpb246YC1PT2AuIENvbnNlcXVlbnRseSwgYnl0ZWNvZGUgZmlsZXMgZ2VuZXJhdGVkIGZyb20KKzpvcHRpb246YC1PYCwgYW5kIDpvcHRpb246YC1PT2AgbWF5IG5vdyBleGlzdCBzaW11bHRhbmVvdXNseS4KKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaGFzIGFuIHVwZGF0ZWQgQVBJIHRvIGhlbHAgd2l0aAordGhpcyBjaGFuZ2UuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0ODhgIC0tIEVsaW1pbmF0aW9uIG9mIFBZTyBmaWxlcworICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEJyZXR0IENhbm5vbi4KKworCisuLiBfd2hhdHNuZXctcGVwLTQ4OToKKworUEVQIDQ4OTogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODlgIHVwZGF0ZXMgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUKK3R3byBzdGVwIG1vZHVsZSBsb2FkaW5nIG1lY2hhbmlzbSBpbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ1MWAgaW4gUHl0aG9uIDMuNC4KKworVGhpcyBjaGFuZ2UgYnJpbmdzIHRoZSBpbXBvcnQgc2VtYW50aWNzIG9mIGV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgb3B0LWluIHRvCit1c2luZyB0aGUgbmV3IG1lY2hhbmlzbSBtdWNoIGNsb3NlciB0byB0aG9zZSBvZiBQeXRob24gc291cmNlIGFuZCBieXRlY29kZQorbW9kdWxlcywgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHVzZSBhbnkgdmFsaWQgaWRlbnRpZmllciBhcyBhIG1vZHVsZSBuYW1lLAorcmF0aGVyIHRoYW4gYmVpbmcgcmVzdHJpY3RlZCB0byBBU0NJSS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ4OWAgLS0gTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbgorICAgICAgUEVQIHdyaXR0ZW4gYnkgUGV0ciBWaWt0b3JpbiwgU3RlZmFuIEJlaG5lbCwgYW5kIE5pY2sgQ29naGxhbjsKKyAgICAgIGltcGxlbWVudGVkIGJ5IFBldHIgVmlrdG9yaW4uCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQWRkZWQgdGhlIGBgIm5hbWVyZXBsYWNlImBgIGVycm9yIGhhbmRsZXJzLiAgVGhlIGBgImJhY2tzbGFzaHJlcGxhY2UiYGAKKyAgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmsgd2l0aCBkZWNvZGluZyBhbmQgdHJhbnNsYXRpbmcuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTk2NzZgIGFuZCA6aXNzdWU6YDIyMjg2YC4pCisKKyogVGhlIDpvcHRpb246YC1iYCBvcHRpb24gbm93IGFmZmVjdHMgY29tcGFyaXNvbnMgb2YgOmNsYXNzOmBieXRlc2Agd2l0aAorICA6Y2xhc3M6YGludGAuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNjgxYC4pCisKKyogTmV3IEthemFraCBgYGt6MTA0OGBgIGFuZCBUYWppayBgYGtvaThfdGBgIDpyZWY6YGNvZGVjcyA8c3RhbmRhcmQtZW5jb2RpbmdzPmAuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI2ODJgIGFuZCA6aXNzdWU6YDIyNjgxYC4pCisKKyogUHJvcGVydHkgZG9jc3RyaW5ncyBhcmUgbm93IHdyaXRhYmxlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgorICA6ZnVuYzpgY29sbGVjdGlvbnMubmFtZWR0dXBsZWAgZG9jc3RyaW5ncy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyNDA2NGAuKQorCisqIENpcmN1bGFyIGltcG9ydHMgaW52b2x2aW5nIHJlbGF0aXZlIGltcG9ydHMgYXJlIG5vdyBzdXBwb3J0ZWQuCisgIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gYW5kIEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTc2MzZgLikKKworCitOZXcgTW9kdWxlcworPT09PT09PT09PT0KKwordHlwaW5nCistLS0tLS0KKworVGhlIG5ldyA6bW9kOmB0eXBpbmdgIDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgYXBpPmAgbW9kdWxlCitwcm92aWRlcyBzdGFuZGFyZCBkZWZpbml0aW9ucyBhbmQgdG9vbHMgZm9yIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMuCitTZWUgOnJlZjpgVHlwZSBIaW50cyA8d2hhdHNuZXctcGVwLTQ4ND5gIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBfd2hhdHNuZXctemlwYXBwOgorCit6aXBhcHAKKy0tLS0tLQorCitUaGUgbmV3IDptb2Q6YHppcGFwcGAgbW9kdWxlIChzcGVjaWZpZWQgaW4gOnBlcDpgNDQxYCkgcHJvdmlkZXMgYW4gQVBJIGFuZAorY29tbWFuZCBsaW5lIHRvb2wgZm9yIGNyZWF0aW5nIGV4ZWN1dGFibGUgUHl0aG9uIFppcCBBcHBsaWNhdGlvbnMsIHdoaWNoCit3ZXJlIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuNiBpbiA6aXNzdWU6YDE3Mzk0NjhgLCBidXQgd2hpY2ggd2VyZSBub3Qgd2VsbAorcHVibGljaXplZCwgZWl0aGVyIGF0IHRoZSB0aW1lIG9yIHNpbmNlLgorCitXaXRoIHRoZSBuZXcgbW9kdWxlLCBidW5kbGluZyB5b3VyIGFwcGxpY2F0aW9uIGlzIGFzIHNpbXBsZSBhcyBwdXR0aW5nIGFsbAordGhlIGZpbGVzLCBpbmNsdWRpbmcgYSBgYF9fbWFpbl9fLnB5YGAgZmlsZSwgaW50byBhIGRpcmVjdG9yeSBgYG15YXBwYGAKK2FuZCBydW5uaW5nOjoKKworICAgICQgcHl0aG9uIC1tIHppcGFwcCBteWFwcAorICAgICQgcHl0aG9uIG15YXBwLnB5egorCitUaGUgbW9kdWxlIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIGNvbnRyaWJ1dGVkIGJ5IFBhdWwgTW9vcmUgaW4KKzppc3N1ZTpgMjM0OTFgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDQxYCAtLSBJbXByb3ZpbmcgUHl0aG9uIFpJUCBBcHBsaWNhdGlvbiBTdXBwb3J0CisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCithcmdwYXJzZQorLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfmFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyYCBjbGFzcyBub3cgYWxsb3dzIHRvIGRpc2FibGUKKzpyZWY6YGFiYnJldmlhdGVkIHVzYWdlIDxwcmVmaXgtbWF0Y2hpbmc+YCBvZiBsb25nIG9wdGlvbnMgYnkgc2V0dGluZworOnJlZjpgYWxsb3dfYWJicmV2YCB0byBgYEZhbHNlYGAuICAoQ29udHJpYnV0ZWQgYnkgSm9uYXRoYW4gUGF1Z2gsCitTdGV2ZW4gQmV0aGFyZCwgcGF1bCBqMyBhbmQgRGFuaWVsIEVyaWtzc29uIGluIDppc3N1ZTpgMTQ5MTBgLikKKworCithc3luY2lvCistLS0tLS0tCisKK1NpbmNlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBpcyA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gLAorYWxsIGNoYW5nZXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy41IGhhdmUgYWxzbyBiZWVuIGJhY2twb3J0ZWQgdG8gUHl0aG9uIDMuNC54LgorCitOb3RhYmxlIGNoYW5nZXMgaW4gdGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBzaW5jZSBQeXRob24gMy40LjA6CisKKyogTmV3IGRlYnVnZ2luZyBBUElzOiA6bWV0aDpgbG9vcC5zZXRfZGVidWcoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLnNldF9kZWJ1Zz5gCisgIGFuZCA6bWV0aDpgbG9vcC5nZXRfZGVidWcoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmdldF9kZWJ1Zz5gIG1ldGhvZHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lci4pCisKKyogVGhlIHByb2FjdG9yIGV2ZW50IGxvb3Agbm93IHN1cHBvcnRzIFNTTC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGFuZCBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyNTYwYC4pCisKKyogQSBuZXcgOm1ldGg6YGxvb3AuaXNfY2xvc2VkKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5pc19jbG9zZWQ+YCBtZXRob2QgdG8KKyAgY2hlY2sgaWYgdGhlIGV2ZW50IGxvb3AgaXMgY2xvc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTMyNmAuKQorCisqIEEgbmV3IDptZXRoOmBsb29wLmNyZWF0ZV90YXNrKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFzaz5gCisgIHRvIGNvbnZlbmllbnRseSBjcmVhdGUgYW5kIHNjaGVkdWxlIGEgbmV3IDpjbGFzczpgfmFzeW5jaW8uVGFza2AKKyAgZm9yIGEgY29yb3V0aW5lLiAgVGhlIGBgY3JlYXRlX3Rhc2tgYCBtZXRob2QgaXMgYWxzbyB1c2VkIGJ5IGFsbAorICBhc3luY2lvIGZ1bmN0aW9ucyB0aGF0IHdyYXAgY29yb3V0aW5lcyBpbnRvIHRhc2tzLCBzdWNoIGFzCisgIDpmdW5jOmBhc3luY2lvLndhaXRgLCA6ZnVuYzpgYXN5bmNpby5nYXRoZXJgLCBldGMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lci4pCisKKyogQSBuZXcgOm1ldGg6YHRyYW5zcG9ydC5nZXRfd3JpdGVfYnVmZmVyX2xpbWl0cygpIDxhc3luY2lvLldyaXRlVHJhbnNwb3J0LmdldF93cml0ZV9idWZmZXJfbGltaXRzPmAKKyAgbWV0aG9kIHRvIGlucXVpcmUgZm9yICpoaWdoLSogYW5kICpsb3ctKiB3YXRlciBsaW1pdHMgb2YgdGhlIGZsb3cKKyAgY29udHJvbC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworKiBUaGUgOmZ1bmM6YH5hc3luY2lvLmFzeW5jYCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mCisgIDpmdW5jOmB+YXN5bmNpby5lbnN1cmVfZnV0dXJlYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOm1ldGg6YGxvb3Auc2V0X3Rhc2tfZmFjdG9yeSgpIDxhc3luY2lvLkJhc2VFdmVudExvb3Auc2V0X3Rhc2tfZmFjdG9yeT5gCisgIGFuZCA6bWV0aDpgbG9vcC5zZXRfdGFza19mYWN0b3J5KCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRfdGFza19mYWN0b3J5PmAKKyAgbWV0aG9kcyB0byBjdXN0b21pemUgdGhlIHRhc2sgZmFjdG9yeSB0aGF0CisgIDptZXRoOmBsb29wLmNyZWF0ZV90YXNrKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfdGFzaz5gIG1ldGhvZCB1c2VzLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6bWV0aDpgUXVldWUuam9pbigpIDxhc3luY2lvLlF1ZXVlLmpvaW4+YCBhbmQKKyAgOm1ldGg6YFF1ZXVlLnRhc2tfZG9uZSgpIDxhc3luY2lvLlF1ZXVlLnRhc2tfZG9uZT5gIHF1ZXVlIG1ldGhvZHMuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lci4pCisKKyogVGhlIGBgSm9pbmFibGVRdWV1ZWBgIGNsYXNzIHdhcyByZW1vdmVkLCBpbiBmYXZvciBvZiB0aGUKKyAgOmNsYXNzOmBhc3luY2lvLlF1ZXVlYCBjbGFzcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLikKKworCitiejIKKy0tLQorCitUaGUgOm1ldGg6YEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzIDxiejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3M+YAorbWV0aG9kIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsICptYXhfbGVuZ3RoKiBhcmd1bWVudCB0byBsaW1pdCB0aGUgbWF4aW11bQorc2l6ZSBvZiBkZWNvbXByZXNzZWQgZGF0YS4gKENvbnRyaWJ1dGVkIGJ5IE5pa29sYXVzIFJhdGggaW4gOmlzc3VlOmAxNTk1NWAuKQorCisKK2NnaQorLS0tCisKK1RoZSA6Y2xhc3M6YH5jZ2kuRmllbGRTdG9yYWdlYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgCitwcm90b2NvbC4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjAyODlgLikKKworCitjbWF0aAorLS0tLS0KKworQSBuZXcgZnVuY3Rpb24gOmZ1bmM6YH5jbWF0aC5pc2Nsb3NlYCBwcm92aWRlcyBhIHdheSB0byB0ZXN0IGZvciBhcHByb3hpbWF0ZQorZXF1YWxpdHkuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQmFya2VyIGFuZCBUYWwgRWluYXQgaW4gOmlzc3VlOmAyNDI3MGAuKQorCisKK2NvZGUKKy0tLS0KKworVGhlIDpmdW5jOmBJbnRlcmFjdGl2ZUludGVycHJldGVyLnNob3d0cmFjZWJhY2soKSA8Y29kZS5JbnRlcmFjdGl2ZUludGVycHJldGVyLnNob3d0cmFjZWJhY2s+YAorbWV0aG9kIG5vdyBwcmludHMgdGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2ssIGp1c3QgbGlrZSB0aGUgaW50ZXJhY3RpdmUKK2ludGVycHJldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE3NDQyYC4pCisKKworY29sbGVjdGlvbnMKKy0tLS0tLS0tLS0tCisKKy4uIF93aGF0c25ldy1vcmRlcmVkZGljdDoKKworVGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YCBjbGFzcyBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQywgd2hpY2gKK21ha2VzIGl0IDQgdG8gMTAwIHRpbWVzIGZhc3Rlci4gIChDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNjk5MWAuKQorCis6bWV0aDpgT3JkZXJlZERpY3QuaXRlbXMoKSA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QuaXRlbXM+YCwKKzptZXRoOmBPcmRlcmVkRGljdC5rZXlzKCkgPGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LmtleXM+YCwKKzptZXRoOmBPcmRlcmVkRGljdC52YWx1ZXMoKSA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QudmFsdWVzPmAgdmlld3Mgbm93IHN1cHBvcnQKKzpmdW5jOmByZXZlcnNlZGAgaXRlcmF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxOTUwNWAuKQorCitUaGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuZGVxdWVgIGNsYXNzIG5vdyBkZWZpbmVzCis6bWV0aDpgfmNvbGxlY3Rpb25zLmRlcXVlLmluZGV4YCwgOm1ldGg6YH5jb2xsZWN0aW9ucy5kZXF1ZS5pbnNlcnRgLCBhbmQKKzptZXRoOmB+Y29sbGVjdGlvbnMuZGVxdWUuY29weWAsIGFzIHdlbGwgYXMgc3VwcG9ydHMgYGArYGAgYW5kIGBgKmBgIG9wZXJhdG9ycy4KK1RoaXMgYWxsb3dzIGRlcXVlcyB0byBiZSByZWNvZ25pemVkIGFzIGEgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAKK2FuZCBpbXByb3ZlcyB0aGVpciBzdWJzdGl0dXRhYmlsaXR5IGZvciBsaXN0cy4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciA6aXNzdWU6YDIzNzA0YC4pCisKK0RvY3N0cmluZ3MgcHJvZHVjZWQgYnkgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBjYW4gbm93IGJlIHVwZGF0ZWQ6OgorCisgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCisgICAgUG9pbnQuX19kb2NfXyA9ICdvcmRlcmVkIHBhaXInCisgICAgUG9pbnQueC5fX2RvY19fID0gJ2Fic2Npc3NhJworICAgIFBvaW50LnkuX19kb2NfXyA9ICdvcmRpbmF0ZScKKworKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyNDA2NGAuKQorCitUaGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuVXNlclN0cmluZ2AgY2xhc3Mgbm93IGltcGxlbWVudHMKKzptZXRoOmBfX2dldG5ld2FyZ3NfX2AsIDptZXRoOmBfX3Jtb2RfX2AsIDptZXRoOmB+c3RyLmNhc2Vmb2xkYCwKKzptZXRoOmB+c3RyLmZvcm1hdF9tYXBgLCA6bWV0aDpgfnN0ci5pc3ByaW50YWJsZWAsIGFuZCA6bWV0aDpgfnN0ci5tYWtldHJhbnNgCittZXRob2RzIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMgb2YgOmNsYXNzOmBzdHJgLgorKENvbnRyaWJ1dGVkIGJ5IEpvZSBKZXZuaWsgaW4gOmlzc3VlOmAyMjE4OWAuKQorCisKK2NvbGxlY3Rpb25zLmFiYworLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bWV0aDpgU2VxdWVuY2UuaW5kZXgoKSA8Y29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlLmluZGV4PmAgbWV0aG9kIG5vdworYWNjZXB0cyAqc3RhcnQqIGFuZCAqc3RvcCogYXJndW1lbnRzIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMKK29mIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YGxpc3RgLCBldGMuCisoQ29udHJpYnV0ZWQgYnkgRGV2aW4gSmVhbnBpZXJyZSBpbiA6aXNzdWU6YDIzMDg2YC4pCisKK0EgbmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3JgIGFic3RyYWN0IGJhc2UgY2xhc3MuIChDb250cmlidXRlZAorYnkgU3RlZmFuIEJlaG5lbCBpbiA6aXNzdWU6YDI0MDE4YC4pCisKK05ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlYCA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lYCwKKzpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Bc3luY0l0ZXJhdG9yYCwgYW5kCis6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYWJsZWAgYWJzdHJhY3QgYmFzZSBjbGFzc2VzLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQxODRgLikKKworRm9yIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zLCBhIGJhY2twb3J0IG9mIHRoZSBuZXcgQUJDcyBpcyBhdmFpbGFibGUgaW4gYW4KK2V4dGVybmFsIGBQeVBJIHBhY2thZ2UgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYmFja3BvcnRzX2FiYz5gXy4KKworCitjb21waWxlYWxsCistLS0tLS0tLS0tCisKK0EgbmV3IDptb2Q6YGNvbXBpbGVhbGxgIG9wdGlvbiwgOnNhbXA6YC1qIHtOfWAsIGFsbG93cyB0byBydW4gKk4qIHdvcmtlcnMKK3N1bXVsdGFuZW91c2x5IHRvIHBlcmZvcm0gcGFyYWxsZWwgYnl0ZWNvZGUgY29tcGlsYXRpb24uCitUaGUgOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfZGlyYCBmdW5jdGlvbiBoYXMgYSBjb3JyZXNwb25kaW5nIGBgd29ya2Vyc2BgCitwYXJhbWV0ZXIuICAoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTYxMDRgLikKKworQW5vdGhlciBuZXcgb3B0aW9uLCBgYC1yYGAsIGFsbG93cyB0byBjb250cm9sIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbgorbGV2ZWwgZm9yIHN1YmRpcmVjdG9yaWVzLiAgKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE5NjI4YC4pCisKK1RoZSBgYC1xYGAgY29tbWFuZCBsaW5lIG9wdGlvbiBjYW4gbm93IGJlIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSwgaW4KK3doaWNoIGNhc2UgYWxsIG91dHB1dCwgaW5jbHVkaW5nIGVycm9ycywgd2lsbCBiZSBzdXBwcmVzc2VkLiAgVGhlIGNvcnJlc3BvbmRpbmcKK2BgcXVpZXRgYCBwYXJhbWV0ZXIgaW4gOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfZGlyYCwKKzpmdW5jOmB+Y29tcGlsZWFsbC5jb21waWxlX2ZpbGVgLCBhbmQgOmZ1bmM6YH5jb21waWxlYWxsLmNvbXBpbGVfcGF0aGAgY2FuIG5vdworYWNjZXB0IGFuIGludGVnZXIgdmFsdWUgaW5kaWNhdGluZyB0aGUgbGV2ZWwgb2Ygb3V0cHV0IHN1cHByZXNzaW9uLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjEzMzhgLikKKworCitjb25jdXJyZW50LmZ1dHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1ldGg6YEV4ZWN1dG9yLm1hcCgpIDxjb25jdXJyZW50LmZ1dHVyZXMuRXhlY3V0b3IubWFwPmAgbWV0aG9kIG5vdyBhY2NlcHRzIGEKKypjaHVua3NpemUqIGFyZ3VtZW50IHRvIGFsbG93IGJhdGNoaW5nIG9mIHRhc2tzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugd2hlbgorOm1ldGg6YH5jb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaXMgdXNlZC4KKyhDb250cmlidXRlZCBieSBEYW4gTydSZWlsbHkgaW4gOmlzc3VlOmAxMTI3MWAuKQorCitBIG51bWJlciBvZiB3b3JrZXJzIGluIDpjbGFzczpgfmNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3JgIGNvbnN0cnVjdG9yIGlzCitvcHRpb25hbCBub3cuICBUaGUgZGVmYXVsdCB2YWx1ZSBlcXVhbHMgdG8gNSB0aW1lcyB0aGUgbnVtYmVyIG9mIENQVXMuCisoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMjE1MjdgLikKKworCitjb25maWdwYXJzZXIKKy0tLS0tLS0tLS0tLQorCis6bW9kOmBjb25maWdwYXJzZXJgIG5vdyBwcm92aWRlcyBhIHdheSB0byBjdXN0b21pemUgdGhlIGNvbnZlcnNpb24KK29mIHZhbHVlcyBieSBzcGVjaWZ5aW5nIGEgZGljdGlvbmFyeSBvZiBjb252ZXJ0ZXJzIGluCis6Y2xhc3M6YH5jb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyYCBjb25zdHJ1Y3Rvciwgb3IgYnkgZGVmaW5pbmcgdGhlbQorYXMgbWV0aG9kcyBpbiBgYENvbmZpZ1BhcnNlcmBgIHN1YmNsYXNzZXMuICBDb252ZXJ0ZXJzIGRlZmluZWQgaW4KK3BhcnNlciBpbnN0YW5jZSBhcmUgaW5oZXJpdGVkIGJ5IGl0cyBzZWN0aW9uIHByb3hpZXMuCisKK0V4YW1wbGU6OgorCisgICAgPj4+IGltcG9ydCBjb25maWdwYXJzZXIKKyAgICA+Pj4gY29udiA9IHt9CisgICAgPj4+IGNvbnZbJ2xpc3QnXSA9IGxhbWJkYSB2OiBbZS5zdHJpcCgpIGZvciBlIGluIHYuc3BsaXQoKSBpZiBlLnN0cmlwKCldCisgICAgPj4+IGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoY29udmVydGVycz1jb252KQorICAgID4+PiBjZmcucmVhZF9zdHJpbmcoIiIiCisgICAgLi4uIFtzXQorICAgIC4uLiBsaXN0ID0gYSBiIGMgZCBlIGYgZworICAgIC4uLiAiIiIpCisgICAgPj4+IGNmZy5nZXQoJ3MnLCAnbGlzdCcpCisgICAgJ2EgYiBjIGQgZSBmIGcnCisgICAgPj4+IGNmZy5nZXRsaXN0KCdzJywgJ2xpc3QnKQorICAgIFsnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZyddCisgICAgPj4+IHNlY3Rpb24gPSBjZmdbJ3MnXQorICAgID4+PiBzZWN0aW9uLmdldGxpc3QoJ2xpc3QnKQorICAgIFsnYScsICdiJywgJ2MnLCAnZCcsICdlJywgJ2YnLCAnZyddCisKKyhDb250cmlidXRlZCBieSDFgXVrYXN6IExhbmdhIGluIDppc3N1ZTpgMTgxNTlgLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5jb250ZXh0bGliLnJlZGlyZWN0X3N0ZGVycmAgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgKHNpbWlsYXIgdG8KKzpmdW5jOmB+Y29udGV4dGxpYi5yZWRpcmVjdF9zdGRvdXRgKSBtYWtlcyBpdCBlYXNpZXIgZm9yIHV0aWxpdHkgc2NyaXB0cyB0bworaGFuZGxlIGluZmxleGlibGUgQVBJcyB0aGF0IHdyaXRlIHRoZWlyIG91dHB1dCB0byA6ZGF0YTpgc3lzLnN0ZGVycmAgYW5kCitkb24ndCBwcm92aWRlIGFueSBvcHRpb25zIHRvIHJlZGlyZWN0IGl0OjoKKworICAgID4+PiBpbXBvcnQgY29udGV4dGxpYiwgaW8sIGxvZ2dpbmcKKyAgICA+Pj4gZiA9IGlvLlN0cmluZ0lPKCkKKyAgICA+Pj4gd2l0aCBjb250ZXh0bGliLnJlZGlyZWN0X3N0ZGVycihmKToKKyAgICAuLi4gICAgIGxvZ2dpbmcud2FybmluZygnd2FybmluZycpCisgICAgLi4uCisgICAgPj4+IGYuZ2V0dmFsdWUoKQorICAgICdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJworCisoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIyMzg5YC4pCisKKworY3N2CistLS0KKworVGhlIDptZXRoOmB+Y3N2LmNzdndyaXRlci53cml0ZXJvd2AgbWV0aG9kIG5vdyBzdXBwb3J0cyBhcmJpdHJhcnkgaXRlcmFibGVzLAorbm90IGp1c3Qgc2VxdWVuY2VzLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzE3MWAuKQorCisKK2N1cnNlcworLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5jdXJzZXMudXBkYXRlX2xpbmVzX2NvbHNgIGZ1bmN0aW9uIHVwZGF0ZXMgOmVudnZhcjpgTElORVNgCithbmQgOmVudnZhcjpgQ09MU2AgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGRldGVjdGluZworbWFudWFsIHNjcmVlbiByZXNpemUuICAoQ29udHJpYnV0ZWQgYnkgQXJub24gWWFhcmkgaW4gOmlzc3VlOmA0MjU0YC4pCisKKworZGJtCistLS0KKworOmZ1bmM6YGR1bWIub3BlbiA8ZGJtLmR1bWIub3Blbj5gIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdoZW4gdGhlIGZsYWcKK2hhcyB0aGUgdmFsdWUgYGAibiJgYC4gIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4gOmlzc3VlOmAxODAzOWAuKQorCisKK2RpZmZsaWIKKy0tLS0tLS0KKworVGhlIGNoYXJzZXQgb2YgSFRNTCBkb2N1bWVudHMgZ2VuZXJhdGVkIGJ5Cis6bWV0aDpgSHRtbERpZmYubWFrZV9maWxlKCkgPGRpZmZsaWIuSHRtbERpZmYubWFrZV9maWxlPmAKK2NhbiBub3cgYmUgY3VzdG9taXplZCBieSB1c2luZyBhIG5ldyAqY2hhcnNldCoga2V5d29yZC1vbmx5IGFyZ3VtZW50LgorVGhlIGRlZmF1bHQgY2hhcnNldCBvZiBIVE1MIGRvY3VtZW50IGNoYW5nZWQgZnJvbSBgYCJJU08tODg1OS0xImBgCit0byBgYCJ1dGYtOCJgYC4KKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjA1MmAuKQorCitUaGUgOmZ1bmM6YH5kaWZmbGliLmRpZmZfYnl0ZXNgIGZ1bmN0aW9uIGNhbiBub3cgY29tcGFyZSBsaXN0cyBvZiBieXRlCitzdHJpbmdzLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gZnJvbSBQeXRob24gMi4KKyhDb250cmlidXRlZCBieSBUZXJyeSBKLiBSZWVkeSBhbmQgR3JlZyBXYXJkIGluIDppc3N1ZTpgMTc0NDVgLikKKworCitkaXN0dXRpbHMKKy0tLS0tLS0tLQorCitCb3RoIGBgYnVpbGRgYCBhbmQgYGBidWlsZF9leHRgYCBjb21tYW5kcyBub3cgYWNjZXB0IGEgYGAtamBgIG9wdGlvbiB0bworZW5hYmxlIHBhcmFsbGVsIGJ1aWxkaW5nIG9mIGV4dGVuc2lvbiBtb2R1bGVzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgNTMwOWAuKQorCitUaGUgOm1vZDpgZGlzdHV0aWxzYCBtb2R1bGUgbm93IHN1cHBvcnRzIGBgeHpgYCBjb21wcmVzc2lvbiwgYW5kIGNhbiBiZQorZW5hYmxlZCBieSBwYXNzaW5nIGBgeHp0YXJgYCBhcyBhbiBhcmd1bWVudCB0byBgYGJkaXN0IC0tZm9ybWF0YGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE2MzE0YC4pCisKKworZG9jdGVzdAorLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5kb2N0ZXN0LkRvY1Rlc3RTdWl0ZWAgZnVuY3Rpb24gcmV0dXJucyBhbiBlbXB0eQorOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIGlmICptb2R1bGUqIGNvbnRhaW5zIG5vIGRvY3N0cmluZ3MgaW5zdGVhZCBvZgorcmFpc2luZyA6ZXhjOmBWYWx1ZUVycm9yYC4gIChDb250cmlidXRlZCBieSBHbGVubiBKb25lcyBpbiA6aXNzdWU6YDE1OTE2YC4pCisKKworZW1haWwKKy0tLS0tCisKK0EgbmV3IHBvbGljeSBvcHRpb24gOmF0dHI6YFBvbGljeS5tYW5nbGVfZnJvbV8gPGVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fPmAKK2NvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGxpbmVzIHRoYXQgc3RhcnQgd2l0aCBgYCJGcm9tICJgYCBpbiBlbWFpbCBib2RpZXMgYXJlCitwcmVmaXhlZCB3aXRoIGEgYGAiPiJgYCBjaGFyYWN0ZXIgYnkgZ2VuZXJhdG9ycy4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvcgorOmF0dHI6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlciBwb2xpY2llcy4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggaW4gOmlzc3VlOmAyMDA5OGAuKQorCitBIG5ldworOm1ldGg6YE1lc3NhZ2UuZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKSA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uPmAKK21ldGhvZCBwcm92aWRlcyBlYXN5IGFjY2VzcyB0byBhIGNhbm9uaWNhbCB2YWx1ZSBmb3IgdGhlCis6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgorKENvbnRyaWJ1dGVkIGJ5IEFiaGlsYXNoIFJhaiBpbiA6aXNzdWU6YDIxMDgzYC4pCisKK0EgbmV3IHBvbGljeSBvcHRpb24gOmF0dHI6YEVtYWlsUG9saWN5LnV0ZjggPGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4PmAKK2NhbiBiZSBzZXQgdG8gYGBUcnVlYGAgdG8gZW5jb2RlIGVtYWlsIGhlYWRlcnMgdXNpbmcgdGhlIFVURi04IGNoYXJzZXQgaW5zdGVhZAorb2YgdXNpbmcgZW5jb2RlZCB3b3Jkcy4gIFRoaXMgYWxsb3dzIGBgTWVzc2FnZXNgYCB0byBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvCis6cmZjOmA2NTMyYCBhbmQgdXNlZCB3aXRoIGFuIFNNVFAgc2VydmVyIHRoYXQgc3VwcG9ydHMgdGhlIDpyZmM6YDY1MzFgCitgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkIE11cnJheSBpbgorOmlzc3VlOmAyNDIxMWAuKQorCitUaGUgOmNsYXNzOmBtaW1lLnRleHQuTUlNRVRleHQgPGVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dD5gIGNvbnN0cnVjdG9yIG5vdworYWNjZXB0cyBhIDpjbGFzczpgY2hhcnNldC5DaGFyc2V0IDxlbWFpbC5jaGFyc2V0LkNoYXJzZXQ+YCBpbnN0YW5jZS4KKyhDb250cmlidXRlZCBieSBDbGF1ZGUgUGFyb3ogYW5kIEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAxNjMyNGAuKQorCisKK2VudW0KKy0tLS0KKworVGhlIDpjbGFzczpgfmVudW0uRW51bWAgY2FsbGFibGUgaGFzIGEgbmV3IHBhcmFtZXRlciAqc3RhcnQqIHRvCitzcGVjaWZ5IHRoZSBpbml0aWFsIG51bWJlciBvZiBlbnVtIHZhbHVlcyBpZiBvbmx5ICpuYW1lcyogYXJlIHByb3ZpZGVkOjoKKworICAgID4+PiBBbmltYWwgPSBlbnVtLkVudW0oJ0FuaW1hbCcsICdjYXQgZG9nJywgc3RhcnQ9MTApCisgICAgPj4+IEFuaW1hbC5jYXQKKyAgICA8QW5pbWFsLmNhdDogMTA+CisgICAgPj4+IEFuaW1hbC5kb2cKKyAgICA8QW5pbWFsLmRvZzogMTE+CisKKyhDb250cmlidXRlZCBieSBFdGhhbiBGdXJtYW4gaW4gOmlzc3VlOmAyMTcwNmAuKQorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKKzpmdW5jOmB+ZmF1bHRoYW5kbGVyLmVuYWJsZWAsIDpmdW5jOmB+ZmF1bHRoYW5kbGVyLnJlZ2lzdGVyYCwKKzpmdW5jOmB+ZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrYCBhbmQKKzpmdW5jOmB+ZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyYCBmdW5jdGlvbnMgbm93IGFjY2VwdCBmaWxlCitkZXNjcmlwdG9ycyBpbiBhZGRpdGlvbiB0byBmaWxlLWxpa2Ugb2JqZWN0cy4KKyhDb250cmlidXRlZCBieSBXZWkgV3UgaW4gOmlzc3VlOmAyMzU2NmAuKQorCisKK2Z1bmN0b29scworLS0tLS0tLS0tCisKKy4uIF93aGF0c25ldy1scnVjYWNoZToKKworTW9zdCBvZiA6ZnVuYzpgfmZ1bmN0b29scy5scnVfY2FjaGVgIG1hY2hpbmVyeSBpcyBub3cgaW1wbGVtZW50ZWQgaW4gQywgbWFraW5nCitpdCBzaWduaWZpY2FudGx5IGZhc3Rlci4gIChDb250cmlidXRlZCBieSBNYXR0IEpvaW5lciwgQWxleGV5IEthY2hheWV2LCBhbmQKK1NlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNDM3M2AuKQorCisKK2dsb2IKKy0tLS0KKworOmZ1bmM6YH5nbG9iLmlnbG9iYCBhbmQgOmZ1bmM6YH5nbG9iLmdsb2JgIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCByZWN1cnNpdmUKK3NlYXJjaCBpbiBzdWJkaXJlY3RvcmllcyB1c2luZyB0aGUgYGAiKioiYGAgcGF0dGVybi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTM5NjhgLikKKworCitnemlwCistLS0tCisKK1RoZSAqbW9kZSogYXJndW1lbnQgb2YgOmNsYXNzOmB+Z3ppcC5HemlwRmlsZWAgY29uc3RydWN0b3Igbm93CithY2NlcHRzIGBgIngiYGAgdG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgVGltIEhlYW5leSBpbiA6aXNzdWU6YDE5MjIyYC4pCisKKworaGVhcHEKKy0tLS0tCisKK0VsZW1lbnQgY29tcGFyaXNvbiBpbiA6ZnVuYzpgfmhlYXBxLm1lcmdlYCBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgYnkKK3Bhc3NpbmcgYSA6dGVybTpga2V5IGZ1bmN0aW9uYCBpbiBhIG5ldyBvcHRpb25hbCAqa2V5KiBrZXl3b3JkIGFyZ3VtZW50LAorYW5kIGEgbmV3IG9wdGlvbmFsICpyZXZlcnNlKiBrZXl3b3JkIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHJldmVyc2UgZWxlbWVudAorY29tcGFyaXNvbjo6CisKKyAgICA+Pj4gaW1wb3J0IGhlYXBxCisgICAgPj4+IGEgPSBbJzknLCAnNzc3JywgJzU1NTU1J10KKyAgICA+Pj4gYiA9IFsnODgnLCAnNjY2NiddCisgICAgPj4+IGxpc3QoaGVhcHEubWVyZ2UoYSwgYiwga2V5PWxlbikpCisgICAgWyc5JywgJzg4JywgJzc3NycsICc2NjY2JywgJzU1NTU1J10KKyAgICA+Pj4gbGlzdChoZWFwcS5tZXJnZShyZXZlcnNlZChhKSwgcmV2ZXJzZWQoYiksIGtleT1sZW4sIHJldmVyc2U9VHJ1ZSkpCisgICAgWyc1NTU1NScsICc2NjY2JywgJzc3NycsICc4OCcsICc5J10KKworKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTM3NDJgLikKKworCitodHRwCistLS0tCisKK0EgbmV3IDpjbGFzczpgSFRUUFN0YXR1cyA8aHR0cC5IVFRQU3RhdHVzPmAgZW51bSB0aGF0IGRlZmluZXMgYSBzZXQgb2YKK0hUVFAgc3RhdHVzIGNvZGVzLCByZWFzb24gcGhyYXNlcyBhbmQgbG9uZyBkZXNjcmlwdGlvbnMgd3JpdHRlbiBpbiBFbmdsaXNoLgorKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMTc5M2AuKQorCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKSA8aHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2U+YAorbm93IHJhaXNlcyBhIDpleGM6YH5odHRwLmNsaWVudC5SZW1vdGVEaXNjb25uZWN0ZWRgIGV4Y2VwdGlvbiB3aGVuIGEKK3JlbW90ZSBzZXJ2ZXIgY29ubmVjdGlvbiBpcyBjbG9zZWQgdW5leHBlY3RlZGx5LiAgQWRkaXRpb25hbGx5LCBpZiBhCis6ZXhjOmBDb25uZWN0aW9uRXJyb3JgIChvZiB3aGljaCBgYFJlbW90ZURpc2Nvbm5lY3RlZGBgCitpcyBhIHN1YmNsYXNzKSBpcyByYWlzZWQsIHRoZSBjbGllbnQgc29ja2V0IGlzIG5vdyBjbG9zZWQgYXV0b21hdGljYWxseSwKK2FuZCB3aWxsIHJlY29ubmVjdCBvbiB0aGUgbmV4dCByZXF1ZXN0OjoKKworICAgIGltcG9ydCBodHRwLmNsaWVudAorICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbignd3d3LnB5dGhvbi5vcmcnKQorICAgIGZvciByZXRyaWVzIGluIHJhbmdlKDMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvJykKKyAgICAgICAgICAgIHJlc3AgPSBjb25uLmdldHJlc3BvbnNlKCkKKyAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LlJlbW90ZURpc2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHBhc3MKKworKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAzNTY2YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSBpZGxlbGliIGltcGxlbWVudHMgdGhlIElETEUgc2hlbGwgYW5kIGVkaXRvciBhbmQgaXMgbm90IGludGVuZGVkIGZvcgoraW1wb3J0IGJ5IG90aGVyIHByb2dyYW1zLCBpdCBnZXRzIGltcHJvdmVtZW50cyB3aXRoIGV2ZXJ5IHJlbGVhc2UuICBTZWUKKzpmaWxlOmBMaWIvaWRsZWxpYi9ORVdTLnR4dGAgZm9yIGEgY3VtdWxhdGl2ZSBsaXN0IG9mIGNoYW5nZXMgc2luY2UgMy40LjAsCithcyB3ZWxsIGFzIGNoYW5nZXMgbWFkZSBpbiBmdXR1cmUgMy41LnggcmVsZWFzZXMuIFRoaXMgZmlsZSBpcyBhbHNvIGF2YWlsYWJsZQorZnJvbSB0aGUgSURMRSA6bWVudXNlbGVjdGlvbjpgSGVscCAtLT4gQWJvdXQgSURMRWAgZGlhbG9nLgorCisKK2ltYXBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgfmltYXBsaWIuSU1BUDRgIGNsYXNzIG5vdyBzdXBwb3J0cyA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4KK1doZW4gdXNlZCBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQsIHRoZSBJTUFQNCBgYExPR09VVGBgCitjb21tYW5kIHdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2suCisoQ29udHJpYnV0ZWQgYnkgVGFyZWsgWmlhZMOpIGFuZCBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgNDk3MmAuKQorCitUaGUgOm1vZDpgaW1hcGxpYmAgbW9kdWxlIG5vdyBzdXBwb3J0cyA6cmZjOmA1MTYxYCAoRU5BQkxFIEV4dGVuc2lvbikKK2FuZCA6cmZjOmA2ODU1YCAoVVRGLTggU3VwcG9ydCkgdmlhIHRoZSA6bWV0aDpgSU1BUDQuZW5hYmxlKCkgPGltYXBsaWIuSU1BUDQuZW5hYmxlPmAKK21ldGhvZC4gIEEgbmV3IDphdHRyOmBJTUFQNC51dGY4X2VuYWJsZWQgPGltYXBsaWIuSU1BUDQudXRmOF9lbmFibGVkPmAKK2F0dHJpYnV0ZSwgdHJhY2tzIHdoZXRoZXIgb3Igbm90IDpyZmM6YDY4NTVgIHN1cHBvcnQgaXMgZW5hYmxlZC4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2gsIFIuIERhdmlkIE11cnJheSwgYW5kIE1hY2llaiBTenVsaWsgaW4KKzppc3N1ZTpgMjE4MDBgLikKKworVGhlIDptb2Q6YGltYXBsaWJgIG1vZHVsZSBub3cgYXV0b21hdGljYWxseSBlbmNvZGVzIG5vbi1BU0NJSSBzdHJpbmcgdXNlcm5hbWVzCithbmQgcGFzc3dvcmRzIHVzaW5nIFVURi04LCBhcyByZWNvbW1lbmRlZCBieSB0aGUgUkZDcy4gIChDb250cmlidXRlZCBieSBNaWxhbgorT2JlcmtpcmNoIGluIDppc3N1ZTpgMjE4MDBgLikKKworCitpbWdoZHIKKy0tLS0tLQorCitUaGUgOmZ1bmM6YH5pbWdoZHIud2hhdGAgZnVuY3Rpb24gbm93IHJlY29nbml6ZXMgdGhlCitgT3BlbkVYUiA8aHR0cDovL3d3dy5vcGVuZXhyLmNvbT5gXyBmb3JtYXQKKyhjb250cmlidXRlZCBieSBNYXJ0aW4gVmlnbmFsaSBhbmQgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMjAyOTVgKSwKK2FuZCB0aGUgYFdlYlAgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlYlA+YF8gZm9ybWF0CisoY29udHJpYnV0ZWQgYnkgRmFicmljZSBBbmVjaGUgYW5kIENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDIwMTk3YC4pCisKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworVGhlIDpjbGFzczpgdXRpbC5MYXp5TG9hZGVyIDxpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyPmAgY2xhc3MgYWxsb3dzIGZvcgorbGF6eSBsb2FkaW5nIG9mIG1vZHVsZXMgaW4gYXBwbGljYXRpb25zIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBpbXBvcnRhbnQuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTc2MjFgLikKKworVGhlIDpmdW5jOmBhYmMuSW5zcGVjdExvYWRlci5zb3VyY2VfdG9fY29kZSgpIDxpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuc291cmNlX3RvX2NvZGU+YAorbWV0aG9kIGlzIG5vdyBhIHN0YXRpYyBtZXRob2QuICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBpbml0aWFsaXplIGEgbW9kdWxlCitvYmplY3Qgd2l0aCBjb2RlIGNvbXBpbGVkIGZyb20gYSBzdHJpbmcgYnkgcnVubmluZworYGBleGVjKGNvZGUsIG1vZHVsZS5fX2RpY3RfXylgYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyMTE1NmAuKQorCitUaGUgbmV3IDpmdW5jOmB1dGlsLm1vZHVsZV9mcm9tX3NwZWMoKSA8aW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYz5gCitmdW5jdGlvbiBpcyBub3cgdGhlIHByZWZlcnJlZCB3YXkgdG8gY3JlYXRlIGEgbmV3IG1vZHVsZS4gIEFzIG9wcG9zZWQgdG8KK2NyZWF0aW5nIGEgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCBpbnN0YW5jZSBkaXJlY3RseSwgdGhpcyBuZXcgZnVuY3Rpb24KK3dpbGwgc2V0IHRoZSB2YXJpb3VzIGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIHBhc3NlZC1pbgorc3BlYyBvYmplY3QuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjAzODNgLikKKworCitpbnNwZWN0CistLS0tLS0tCisKK0JvdGggOmNsYXNzOmB+aW5zcGVjdC5TaWduYXR1cmVgIGFuZCA6Y2xhc3M6YH5pbnNwZWN0LlBhcmFtZXRlcmAgY2xhc3NlcyBhcmUKK25vdyBwaWNrbGFibGUgYW5kIGhhc2hhYmxlLiAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjA3MjZgCithbmQgOmlzc3VlOmAyMDMzNGAuKQorCitBIG5ldworOm1ldGg6YEJvdW5kQXJndW1lbnRzLmFwcGx5X2RlZmF1bHRzKCkgPGluc3BlY3QuQm91bmRBcmd1bWVudHMuYXBwbHlfZGVmYXVsdHM+YAorbWV0aG9kIHByb3ZpZGVzIGEgd2F5IHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBhcmd1bWVudHM6OgorCisgICAgPj4+IGRlZiBmb28oYSwgYj0naGFtJywgKmFyZ3MpOiBwYXNzCisgICAgPj4+IGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKCdzcGFtJykKKyAgICA+Pj4gYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgID4+PiBiYS5hcmd1bWVudHMKKyAgICBPcmRlcmVkRGljdChbKCdhJywgJ3NwYW0nKSwgKCdiJywgJ2hhbScpLCAoJ2FyZ3MnLCAoKSldKQorCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDE5MGAuKQorCitBIG5ldyBjbGFzcyBtZXRob2QKKzptZXRoOmBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIDxpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlPmAgbWFrZXMKK3N1YmNsYXNzaW5nIG9mIDpjbGFzczpgfmluc3BlY3QuU2lnbmF0dXJlYCBlYXNpZXIuICAoQ29udHJpYnV0ZWQKK2J5IFl1cnkgU2VsaXZhbm92IGFuZCBFcmljIFNub3cgaW4gOmlzc3VlOmAxNzM3M2AuKQorCitUaGUgOmZ1bmM6YH5pbnNwZWN0LnNpZ25hdHVyZWAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYSAqZm9sbG93X3dyYXBwZWQqCitvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50LCB3aGljaCwgd2hlbiBzZXQgdG8gYGBGYWxzZWBgLCBkaXNhYmxlcyBhdXRvbWF0aWMKK2ZvbGxvd2luZyBvZiBgYF9fd3JhcHBlZF9fYGAgbGlua3MuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyMDY5MWAuKQorCitBIHNldCBvZiBuZXcgZnVuY3Rpb25zIHRvIGluc3BlY3QKKzp0ZXJtOmBjb3JvdXRpbmUgZnVuY3Rpb25zIDxjb3JvdXRpbmUgZnVuY3Rpb24+YCBhbmQKKzp0ZXJtOmBjb3JvdXRpbmUgb2JqZWN0cyA8Y29yb3V0aW5lPmAgaGFzIGJlZW4gYWRkZWQ6Cis6ZnVuYzpgfmluc3BlY3QuaXNjb3JvdXRpbmVgLCA6ZnVuYzpgfmluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbmAsCis6ZnVuYzpgfmluc3BlY3QuaXNhd2FpdGFibGVgLCA6ZnVuYzpgfmluc3BlY3QuZ2V0Y29yb3V0aW5lbG9jYWxzYCwKK2FuZCA6ZnVuYzpgfmluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGVgLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjQwMTdgIGFuZCA6aXNzdWU6YDI0NDAwYC4pCisKKzpmdW5jOmB+aW5zcGVjdC5zdGFja2AsIDpmdW5jOmB+aW5zcGVjdC50cmFjZWAsCis6ZnVuYzpgfmluc3BlY3QuZ2V0b3V0ZXJmcmFtZXNgLCBhbmQgOmZ1bmM6YH5pbnNwZWN0LmdldGlubmVyZnJhbWVzYAorZnVuY3Rpb25zIG5vdyByZXR1cm4gYSBsaXN0IG9mIG5hbWVkIHR1cGxlcy4KKyhDb250cmlidXRlZCBieSBEYW5pZWwgU2hhaGFmIGluIDppc3N1ZTpgMTY4MDhgLikKKworCitpbworLS0KKworQSBuZXcgOm1ldGg6YEJ1ZmZlcmVkSU9CYXNlLnJlYWRpbnRvMSgpIDxpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50bzE+YAorbWV0aG9kLCB0aGF0IHVzZXMgYXQgbW9zdCBvbmUgY2FsbCB0byB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtJ3MKKzptZXRoOmBSYXdJT0Jhc2UucmVhZCgpIDxpby5SYXdJT0Jhc2UucmVhZD5gIG9yCis6bWV0aDpgUmF3SU9CYXNlLnJlYWRpbnRvKCkgPGlvLlJhd0lPQmFzZS5yZWFkaW50bz5gIG1ldGhvZHMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xhdXMgUmF0aCBpbiA6aXNzdWU6YDIwNTc4YC4pCisKKworaXBhZGRyZXNzCistLS0tLS0tLS0KKworQm90aCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2Nk5ldHdvcmtgIGNsYXNzZXMKK25vdyBhY2NlcHQgYW4gYGAoYWRkcmVzcywgbmV0bWFzaylgYCB0dXBsZSBhcmd1bWVudCwgc28gYXMgdG8gZWFzaWx5IGNvbnN0cnVjdAorbmV0d29yayBvYmplY3RzIGZyb20gZXhpc3RpbmcgYWRkcmVzc2VzOjoKKworICAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisgICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzEyNy4wLjAuMCcsIDgpKQorICAgIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpCisgICAgPj4+IGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzEyNy4wLjAuMCcsICcyNTUuMC4wLjAnKSkKKyAgICBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorCisoQ29udHJpYnV0ZWQgYnkgUGV0ZXIgTW9vZHkgYW5kIEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTY1MzFgLikKKworQSBuZXcgOmF0dHI6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsucmV2ZXJzZV9wb2ludGVyYCBhdHRyaWJ1dGUgZm9yCis6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YH5pcGFkZHJlc3MuSVB2Nk5ldHdvcmtgIGNsYXNzZXMKK3JldHVybnMgdGhlIG5hbWUgb2YgdGhlIHJldmVyc2UgRE5TIFBUUiByZWNvcmQ6OgorCisgICAgPj4+IGltcG9ydCBpcGFkZHJlc3MKKyAgICA+Pj4gYWRkciA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgICA+Pj4gYWRkci5yZXZlcnNlX3BvaW50ZXIKKyAgICAnMS4wLjAuMTI3LmluLWFkZHIuYXJwYScKKyAgICA+Pj4gYWRkcjYgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpCisgICAgPj4+IGFkZHI2LnJldmVyc2VfcG9pbnRlcgorICAgICcxLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuaXA2LmFycGEnCisKKyhDb250cmlidXRlZCBieSBMZW9uIFdlYmVyIGluIDppc3N1ZTpgMjA0ODBgLikKKworCitqc29uCistLS0tCisKK1RoZSA6bW9kOmBqc29uLnRvb2xgIGNvbW1hbmQgbGluZSBpbnRlcmZhY2Ugbm93IHByZXNlcnZlcyB0aGUgb3JkZXIgb2Yga2V5cyBpbgorSlNPTiBvYmplY3RzIHBhc3NlZCBpbiBpbnB1dC4gIFRoZSBuZXcgYGAtLXNvcnQta2V5c2BgIG9wdGlvbiBjYW4gYmUgdXNlZAordG8gc29ydCB0aGUga2V5cyBhbHBoYWJldGljYWxseS4gKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcKK2luIDppc3N1ZTpgMjE2NTBgLikKKworSlNPTiBkZWNvZGVyIG5vdyByYWlzZXMgOmV4Yzpgfmpzb24uSlNPTkRlY29kZUVycm9yYCBpbnN0ZWFkIG9mCis6ZXhjOmBWYWx1ZUVycm9yYCB0byBwcm92aWRlIGJldHRlciBjb250ZXh0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTkzNjFgLikKKworCitsaW5lY2FjaGUKKy0tLS0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmxpbmVjYWNoZS5sYXp5Y2FjaGVgIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGNhcHR1cmUgaW5mb3JtYXRpb24KK2Fib3V0IGEgbm9uLWZpbGUgYmFzZWQgbW9kdWxlIHRvIHBlcm1pdCBnZXR0aW5nIGl0cyBsaW5lcyBsYXRlciB2aWEKKzpmdW5jOmB+bGluZWNhY2hlLmdldGxpbmVgLiBUaGlzIGF2b2lkcyBkb2luZyBJL08gdW50aWwgYSBsaW5lIGlzIGFjdHVhbGx5CituZWVkZWQsIHdpdGhvdXQgaGF2aW5nIHRvIGNhcnJ5IHRoZSBtb2R1bGUgZ2xvYmFscyBhcm91bmQgaW5kZWZpbml0ZWx5LgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTc5MTFgLikKKworCitsb2NhbGUKKy0tLS0tLQorCitBIG5ldyA6ZnVuYzpgfmxvY2FsZS5kZWxvY2FsaXplYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGEgc3RyaW5nIGludG8KK2Egbm9ybWFsaXplZCBudW1iZXIgc3RyaW5nLCB0YWtpbmcgdGhlIGBgTENfTlVNRVJJQ2BgIHNldHRpbmdzIGludG8gYWNjb3VudDo6CisKKyAgICA+Pj4gaW1wb3J0IGxvY2FsZQorICAgID4+PiBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19OVU1FUklDLCAnZGVfREUuVVRGLTgnKQorICAgICdkZV9ERS5VVEYtOCcKKyAgICA+Pj4gbG9jYWxlLmRlbG9jYWxpemUoJzEuMjM0LDU2JykKKyAgICAnMTIzNC41NicKKyAgICA+Pj4gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfTlVNRVJJQywgJ2VuX1VTLlVURi04JykKKyAgICAnZW5fVVMuVVRGLTgnCisgICAgPj4+IGxvY2FsZS5kZWxvY2FsaXplKCcxLDIzNC41NicpCisgICAgJzEyMzQuNTYnCisKKyhDb250cmlidXRlZCBieSBDw6lkcmljIEtyaWVyIGluIDppc3N1ZTpgMTM5MThgLikKKworCitsb2dnaW5nCistLS0tLS0tCisKK0FsbCBsb2dnaW5nIG1ldGhvZHMgKDpjbGFzczpgfmxvZ2dpbmcuTG9nZ2VyYCA6bWV0aDpgfmxvZ2dpbmcuTG9nZ2VyLmxvZ2AsCis6bWV0aDpgfmxvZ2dpbmcuTG9nZ2VyLmV4Y2VwdGlvbmAsIDptZXRoOmB+bG9nZ2luZy5Mb2dnZXIuY3JpdGljYWxgLAorOm1ldGg6YH5sb2dnaW5nLkxvZ2dlci5kZWJ1Z2AsIGV0Yy4pLCBub3cgYWNjZXB0IGV4Y2VwdGlvbiBpbnN0YW5jZXMKK2FzIGFuICpleGNfaW5mbyogYXJndW1lbnQsIGluIGFkZGl0aW9uIHRvIGJvb2xlYW4gdmFsdWVzIGFuZCBleGNlcHRpb24KK3R1cGxlczo6CisKKyAgICA+Pj4gaW1wb3J0IGxvZ2dpbmcKKyAgICA+Pj4gdHJ5OgorICAgIC4uLiAgICAgMS8wCisgICAgLi4uIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBleDoKKyAgICAuLi4gICAgIGxvZ2dpbmcuZXJyb3IoJ2V4Y2VwdGlvbicsIGV4Y19pbmZvPWV4KQorICAgIEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCisKKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDIwNTM3YC4pCisKK1RoZSA6Y2xhc3M6YGhhbmRsZXJzLkhUVFBIYW5kbGVyIDxsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyPmAgY2xhc3Mgbm93CithY2NlcHRzIGFuIG9wdGlvbmFsIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlIHRvIGNvbmZpZ3VyZSBTU0wKK3NldHRpbmdzIHVzZWQgaW4gYW4gSFRUUCBjb25uZWN0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEFsZXggR2F5bm9yIGluIDppc3N1ZTpgMjI3ODhgLikKKworVGhlIDpjbGFzczpgaGFuZGxlcnMuUXVldWVMaXN0ZW5lciA8bG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyPmAgY2xhc3Mgbm93Cit0YWtlcyBhICpyZXNwZWN0X2hhbmRsZXJfbGV2ZWwqIGtleXdvcmQgYXJndW1lbnQgd2hpY2gsIGlmIHNldCB0byBgYFRydWVgYCwKK3dpbGwgcGFzcyBtZXNzYWdlcyB0byBoYW5kbGVycyB0YWtpbmcgaGFuZGxlciBsZXZlbHMgaW50byBhY2NvdW50LgorKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwLikKKworCitsem1hCistLS0tCisKK1RoZSA6bWV0aDpgTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgPGx6bWEuTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzPmAKK21ldGhvZCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCAqbWF4X2xlbmd0aCogYXJndW1lbnQgdG8gbGltaXQgdGhlIG1heGltdW0KK3NpemUgb2YgZGVjb21wcmVzc2VkIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDE1OTU1YC4pCisKKworbWF0aAorLS0tLQorCitUd28gbmV3IGNvbnN0YW50cyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZTogOmRhdGE6YH5tYXRoLmluZmAKK2FuZCA6ZGF0YTpgfm1hdGgubmFuYC4gIChDb250cmlidXRlZCBieSBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDIzMTg1YC4pCisKK0EgbmV3IGZ1bmN0aW9uIDpmdW5jOmB+bWF0aC5pc2Nsb3NlYCBwcm92aWRlcyBhIHdheSB0byB0ZXN0IGZvciBhcHByb3hpbWF0ZQorZXF1YWxpdHkuIChDb250cmlidXRlZCBieSBDaHJpcyBCYXJrZXIgYW5kIFRhbCBFaW5hdCBpbiA6aXNzdWU6YDI0MjcwYC4pCisKK0EgbmV3IDpmdW5jOmB+bWF0aC5nY2RgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiAgVGhlIDpmdW5jOmBmcmFjdGlvbnMuZ2NkYAorZnVuY3Rpb24gaXMgbm93IGRlcHJlY2F0ZWQuIChDb250cmlidXRlZCBieSBNYXJrIERpY2tpbnNvbiBhbmQgU2VyaGl5CitTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQ4NmAuKQorCisKK211bHRpcHJvY2Vzc2luZworLS0tLS0tLS0tLS0tLS0tCisKKzpmdW5jOmBzaGFyZWRjdHlwZXMuc3luY2hyb25pemVkKCkgPG11bHRpcHJvY2Vzc2luZy5zaGFyZWRjdHlwZXMuc3luY2hyb25pemVkPmAKK29iamVjdHMgbm93IHN1cHBvcnQgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaSBpbiA6aXNzdWU6YDIxNTY1YC4pCisKKworb3BlcmF0b3IKKy0tLS0tLS0tCisKKzpmdW5jOmB+b3BlcmF0b3IuYXR0cmdldHRlcmAsIDpmdW5jOmB+b3BlcmF0b3IuaXRlbWdldHRlcmAsCithbmQgOmZ1bmM6YH5vcGVyYXRvci5tZXRob2RjYWxsZXJgIG9iamVjdHMgbm93IHN1cHBvcnQgcGlja2xpbmcuCisoQ29udHJpYnV0ZWQgYnkgSm9zaCBSb3NlbmJlcmcgYW5kIFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjk1NWAuKQorCitOZXcgOmZ1bmM6YH5vcGVyYXRvci5tYXRtdWxgIGFuZCA6ZnVuYzpgfm9wZXJhdG9yLmltYXRtdWxgIGZ1bmN0aW9ucwordG8gcGVyZm9ybSBtYXRyaXggbXVsdGlwbGljYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMTE3NmAuKQorCisKK29zCistLQorCitUaGUgbmV3IDpmdW5jOmB+b3Muc2NhbmRpcmAgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGl0ZXJhdG9yIG9mCis6Y2xhc3M6YH5vcy5EaXJFbnRyeWAgb2JqZWN0cyBoYXMgYmVlbiBhZGRlZC4gIElmIHBvc3NpYmxlLCA6ZnVuYzpgfm9zLnNjYW5kaXJgCitleHRyYWN0cyBmaWxlIGF0dHJpYnV0ZXMgd2hpbGUgc2Nhbm5pbmcgYSBkaXJlY3RvcnksIHJlbW92aW5nIHRoZSBuZWVkIHRvCitwZXJmb3JtIHN1YnNlcXVlbnQgc3lzdGVtIGNhbGxzIHRvIGRldGVybWluZSBmaWxlIHR5cGUgb3IgYXR0cmlidXRlcywgd2hpY2ggbWF5CitzaWduaWZpY2FudGx5IGltcHJvdmUgcGVyZm9ybWFuY2UuICAoQ29udHJpYnV0ZWQgYnkgQmVuIEhveXQgd2l0aCB0aGUgaGVscAorb2YgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjUyNGAuKQorCitPbiBXaW5kb3dzLCBhIG5ldworOmF0dHI6YHN0YXRfcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyA8b3Muc3RhdF9yZXN1bHQuc3RfZmlsZV9hdHRyaWJ1dGVzPmAKK2F0dHJpYnV0ZSBpcyBub3cgYXZhaWxhYmxlLiAgSXQgY29ycmVzcG9uZHMgdG8gdGhlIGBgZHdGaWxlQXR0cmlidXRlc2BgIG1lbWJlcgorb2YgdGhlIGBgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT05gYCBzdHJ1Y3R1cmUgcmV0dXJuZWQgYnkKK2BgR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoKWBgLiAgKENvbnRyaWJ1dGVkIGJ5IEJlbiBIb3l0IGluIDppc3N1ZTpgMjE3MTlgLikKKworVGhlIDpmdW5jOmB+b3MudXJhbmRvbWAgZnVuY3Rpb24gbm93IHVzZXMgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgb24gTGludXggMy4xNworb3IgbmV3ZXIsIGFuZCBgYGdldGVudHJvcHkoKWBgIG9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgcmVtb3ZpbmcgdGhlIG5lZWQgdG8KK3VzZSBgYC9kZXYvdXJhbmRvbWBgIGFuZCBhdm9pZGluZyBmYWlsdXJlcyBkdWUgdG8gcG90ZW50aWFsIGZpbGUgZGVzY3JpcHRvcgorZXhoYXVzdGlvbi4gIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMTgxYC4pCisKK05ldyA6ZnVuYzpgfm9zLmdldF9ibG9ja2luZ2AgYW5kIDpmdW5jOmB+b3Muc2V0X2Jsb2NraW5nYCBmdW5jdGlvbnMgYWxsb3cgdG8KK2dldCBhbmQgc2V0IGEgZmlsZSBkZXNjcmlwdG9yIGJsb2NraW5nIG1vZGUgKDpkYXRhOmB+b3MuT19OT05CTE9DS2AuKQorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNTRgLikKKworVGhlIDpmdW5jOmB+b3MudHJ1bmNhdGVgIGFuZCA6ZnVuYzpgfm9zLmZ0cnVuY2F0ZWAgZnVuY3Rpb25zIGFyZSBub3cgc3VwcG9ydGVkCitvbiBXaW5kb3dzLiAgKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjM2NjhgLikKKworVGhlcmUgaXMgYSBuZXcgOmZ1bmM6YG9zLnBhdGguY29tbW9ucGF0aGAgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb25nZXN0Citjb21tb24gc3ViLXBhdGggb2YgZWFjaCBwYXNzZWQgcGF0aG5hbWUuICBVbmxpa2UgdGhlCis6ZnVuYzpgb3MucGF0aC5jb21tb25wcmVmaXhgIGZ1bmN0aW9uLCBpdCBhbHdheXMgcmV0dXJucyBhIHZhbGlkCitwYXRoOjoKKworICAgID4+PiBvcy5wYXRoLmNvbW1vbnByZWZpeChbJy91c3IvbGliJywgJy91c3IvbG9jYWwvbGliJ10pCisgICAgJy91c3IvbCcKKworICAgID4+PiBvcy5wYXRoLmNvbW1vbnBhdGgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQorICAgICcvdXNyJworCisoQ29udHJpYnV0ZWQgYnkgUmFmaWsgRHJhb3VpIGFuZCBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTAzOTVgLikKKworCitwYXRobGliCistLS0tLS0tCisKK1RoZSBuZXcgOm1ldGg6YFBhdGguc2FtZWZpbGUoKSA8cGF0aGxpYi5QYXRoLnNhbWVmaWxlPmAgbWV0aG9kIGNhbiBiZSB1c2VkCit0byBjaGVjayB3aGV0aGVyIHRoZSBwYXRoIHBvaW50cyB0byB0aGUgc2FtZSBmaWxlIGFzIG90aGVyIHBhdGgsIHdoaWNoIGNhbiBiZQorZWl0aGVyIGFuIGFub3RoZXIgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3QsIG9yIGEgc3RyaW5nOjoKKworICAgID4+PiBpbXBvcnQgcGF0aGxpYgorICAgID4+PiBwMSA9IHBhdGhsaWIuUGF0aCgnL2V0Yy9ob3N0cycpCisgICAgPj4+IHAyID0gcGF0aGxpYi5QYXRoKCcvZXRjLy4uL2V0Yy9ob3N0cycpCisgICAgPj4+IHAxLnNhbWVmaWxlKHAyKQorICAgIFRydWUKKworKENvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvayBhbmQgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxOTc3NWAuKQorCitUaGUgOm1ldGg6YFBhdGgubWtkaXIoKSA8cGF0aGxpYi5QYXRoLm1rZGlyPmAgbWV0aG9kIGhvdyBhY2NlcHRzIGEgbmV3IG9wdGlvbmFsCisqZXhpc3Rfb2sqIGFyZ3VtZW50IHRvIG1hdGNoIGBgbWtkaXIgLXBgYCBhbmQgOmZ1bmM6YG9zLm1ha3JkaXJzYAorZnVuY3Rpb25hbGl0eS4gIChDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjE1MzlgLikKKworVGhlcmUgaXMgYSBuZXcgOm1ldGg6YFBhdGguZXhwYW5kdXNlcigpIDxwYXRobGliLlBhdGguZXhwYW5kdXNlcj5gIG1ldGhvZCB0bworZXhwYW5kIGBgfmBgIGFuZCBgYH51c2VyYGAgcHJlZml4ZXMuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBhbmQKK0NsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDE5Nzc2YC4pCisKK0EgbmV3IDptZXRoOmBQYXRoLmhvbWUoKSA8cGF0aGxpYi5QYXRoLmhvbWU+YCBjbGFzcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gZ2V0CithbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHVzZXLigJlzIGhvbWUKK2RpcmVjdG9yeS4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU2FsZ2FkbyBhbmQgTWF5YW5rIFRyaXBhdGhpIGluIDppc3N1ZTpgMTk3NzdgLikKKworTmV3IDptZXRoOmBQYXRoLndyaXRlX3RleHQoKSA8cGF0aGxpYi5QYXRoLndyaXRlX3RleHQ+YCwKKzptZXRoOmBQYXRoLnJlYWRfdGV4dCgpIDxwYXRobGliLlBhdGgucmVhZF90ZXh0PmAsCis6bWV0aDpgUGF0aC53cml0ZV9ieXRlcygpIDxwYXRobGliLlBhdGgud3JpdGVfYnl0ZXM+YCwKKzptZXRoOmBQYXRoLnJlYWRfYnl0ZXMoKSA8cGF0aGxpYi5QYXRoLnJlYWRfYnl0ZXM+YCBtZXRob2RzIHRvIHNpbXBsaWZ5CityZWFkL3dyaXRlIG9wZXJhdGlvbnMgb24gZmlsZXMuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBzbmlwcGV0IHdpbGwgY3JlYXRlIG9yIHJld3JpdGUgZXhpc3RpbmcgZmlsZQorYGB+L3NwYW00MmBgOjoKKworICAgID4+PiBpbXBvcnQgcGF0aGxpYgorICAgID4+PiBwID0gcGF0aGxpYi5QYXRoKCd+L3NwYW00MicpCisgICAgPj4+IHAuZXhwYW5kdXNlcigpLndyaXRlX3RleHQoJ2hhbScpCisgICAgMworCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0b3BoZXIgV2VsYm9ybiBpbiA6aXNzdWU6YDIwMjE4YC4pCisKKworcGlja2xlCistLS0tLS0KKworTmVzdGVkIG9iamVjdHMsIHN1Y2ggYXMgdW5ib3VuZCBtZXRob2RzIG9yIG5lc3RlZCBjbGFzc2VzLCBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoZXNlIGNhc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeQorU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2MTFgLikKKworCitwb3BsaWIKKy0tLS0tLQorCitBIG5ldyA6bWV0aDpgUE9QMy51dGY4KCkgPHBvcGxpYi5QT1AzLnV0Zjg+YCBjb21tYW5kIGVuYWJsZXMgOnJmYzpgNjg1NmAKKyhJbnRlcm5hdGlvbmFsaXplZCBFbWFpbCkgc3VwcG9ydCwgaWYgYSBQT1Agc2VydmVyIHN1cHBvcnRzIGl0LgorKENvbnRyaWJ1dGVkIGJ5IE1pbGFuIE9iZXJLaXJjaCBpbiA6aXNzdWU6YDIxODA0YC4pCisKKworcmUKKy0tCisKK1JlZmVyZW5jZXMgYW5kIGNvbmRpdGlvbmFsIHJlZmVyZW5jZXMgdG8gZ3JvdXBzIHdpdGggZml4ZWQgbGVuZ3RoIGFyZSBub3cKK2FsbG93ZWQgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zOjoKKworICAgID4+PiBpbXBvcnQgcmUKKyAgICA+Pj4gcGF0ID0gcmUuY29tcGlsZShyJyhhfGIpLig/PD1cMSljJykKKyAgICA+Pj4gcGF0Lm1hdGNoKCdhYWMnKQorICAgIDxfc3JlLlNSRV9NYXRjaCBvYmplY3Q7IHNwYW49KDAsIDMpLCBtYXRjaD0nYWFjJz4KKyAgICA+Pj4gcGF0Lm1hdGNoKCdiYmMnKQorICAgIDxfc3JlLlNSRV9NYXRjaCBvYmplY3Q7IHNwYW49KDAsIDMpLCBtYXRjaD0nYmJjJz4KKworKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmA5MTc5YC4pCisKK1RoZSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gaXMgbm8gbG9uZ2VyIGxpbWl0ZWQgYnkKKzEwMC4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0MzdgLikKKworVGhlIDpmdW5jOmB+cmUuc3ViYCBhbmQgOmZ1bmM6YH5yZS5zdWJuYCBmdW5jdGlvbnMgbm93IHJlcGxhY2UgdW5tYXRjaGVkCitncm91cHMgd2l0aCBlbXB0eSBzdHJpbmdzIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE1MTk2MzhgLikKKworVGhlIDpjbGFzczpgcmUuZXJyb3JgIGV4Y2VwdGlvbnMgaGF2ZSBuZXcgYXR0cmlidXRlczoKKzphdHRyOmB+cmUuZXJyb3IubXNnYCwgOmF0dHI6YH5yZS5lcnJvci5wYXR0ZXJuYCwKKzphdHRyOmB+cmUuZXJyb3IucG9zYCwgOmF0dHI6YH5yZS5lcnJvci5saW5lbm9gLAorYW5kIDphdHRyOmB+cmUuZXJyb3IuY29sbm9gIHRoYXQgcHJvdmlkZSBiZXR0ZXIgY29udGV4dAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGVycm9yOjoKKworICAgID4+PiByZS5jb21waWxlKCIiIgorICAgIC4uLiAgICAgKD94KQorICAgIC4uLiAgICAgLisrCisgICAgLi4uICIiIikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgLi4uCisgICAgc3JlX2NvbnN0YW50cy5lcnJvcjogbXVsdGlwbGUgcmVwZWF0IGF0IHBvc2l0aW9uIDE2IChsaW5lIDMsIGNvbHVtbiA3KQorCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNTc4YC4pCisKKworcmVhZGxpbmUKKy0tLS0tLS0tCisKK0EgbmV3IDpmdW5jOmB+cmVhZGxpbmUuYXBwZW5kX2hpc3RvcnlfZmlsZWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYXBwZW5kCit0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0cmFpbGluZyBlbGVtZW50cyBpbiBoaXN0b3J5IHRvIHRoZSBnaXZlbiBmaWxlLgorKENvbnRyaWJ1dGVkIGJ5IEJydW5vIENhdWV0IGluIDppc3N1ZTpgMjI5NDBgLikKKworCitzZWxlY3RvcnMKKy0tLS0tLS0tLQorCitUaGUgbmV3IDpjbGFzczpgfnNlbGVjdG9ycy5EZXZwb2xsU2VsZWN0b3JgIHN1cHBvcnRzIGVmZmljaWVudAorYGAvZGV2L3BvbGxgYCBwb2xsaW5nIG9uIFNvbGFyaXMuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxODkzMWAuKQorCisKK3NodXRpbAorLS0tLS0tCisKK1RoZSA6ZnVuYzpgfnNodXRpbC5tb3ZlYCBmdW5jdGlvbiBub3cgYWNjZXB0cyBhICpjb3B5X2Z1bmN0aW9uKiBhcmd1bWVudCwKK2FsbG93aW5nLCBmb3IgZXhhbXBsZSwgdGhlIDpmdW5jOmB+c2h1dGlsLmNvcHlgIGZ1bmN0aW9uIHRvIGJlIHVzZWQgaW5zdGVhZCBvZgordGhlIGRlZmF1bHQgOmZ1bmM6YH5zaHV0aWwuY29weTJgIGlmIHRoZXJlIGlzIGEgbmVlZCB0byBpZ25vcmUgZmlsZSBtZXRhZGF0YQord2hlbiBtb3ZpbmcuCisoQ29udHJpYnV0ZWQgYnkgQ2xhdWRpdSBQb3BhIGluIDppc3N1ZTpgMTk4NDBgLikKKworVGhlIDpmdW5jOmB+c2h1dGlsLm1ha2VfYXJjaGl2ZWAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZSAqeHp0YXIqIGZvcm1hdC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgNTQxMWAuKQorCisKK3NpZ25hbAorLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6ZnVuYzpgfnNpZ25hbC5zZXRfd2FrZXVwX2ZkYCBmdW5jdGlvbiBub3cgYWxzbyBzdXBwb3J0cworc29ja2V0IGhhbmRsZXMuICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjAxOGAuKQorCitWYXJpb3VzIGBgU0lHKmBgIGNvbnN0YW50cyBpbiB0aGUgOm1vZDpgc2lnbmFsYCBtb2R1bGUgaGF2ZSBiZWVuIGNvbnZlcnRlZCBpbnRvCis6bW9kOmBFbnVtcyA8ZW51bT5gLiAgVGhpcyBhbGxvd3MgbWVhbmluZ2Z1bCBuYW1lcyB0byBiZSBwcmludGVkCitkdXJpbmcgZGVidWdnaW5nLCBpbnN0ZWFkIG9mIGludGVnZXIgIm1hZ2ljIG51bWJlcnMiLgorKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIGluIDppc3N1ZTpgMjEwNzZgLikKKworCitzbXRwZAorLS0tLS0KKworQm90aCA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYCBhbmQgOmNsYXNzOmB+c210cGQuU01UUENoYW5uZWxgIGNsYXNzZXMgbm93CithY2NlcHQgYSAqZGVjb2RlX2RhdGEqIGtleXdvcmQgYXJndW1lbnQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgYERBVEFgYCBwb3J0aW9uIG9mCit0aGUgU01UUCB0cmFuc2FjdGlvbiBpcyBkZWNvZGVkIHVzaW5nIHRoZSBgYCJ1dGYtOCJgYCBjb2RlYyBvciBpcyBpbnN0ZWFkCitwcm92aWRlZCB0byB0aGUKKzptZXRoOmBTTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZSgpIDxzbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZT5gCittZXRob2QgYXMgYSBieXRlIHN0cmluZy4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CityZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBJZiAqZGVjb2RlX2RhdGEqIGlzIHNldAordG8gYGBGYWxzZWBgLCB0aGUgYGBwcm9jZXNzX21lc3NhZ2VgYCBtZXRob2QgbXVzdCBiZSBwcmVwYXJlZCB0byBhY2NlcHQga2V5d29yZAorYXJndW1lbnRzLgorKENvbnRyaWJ1dGVkIGJ5IE1hY2llaiBTenVsaWsgaW4gOmlzc3VlOmAxOTY2MmAuKQorCitUaGUgOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgY2xhc3Mgbm93IGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYCBleHRlbnNpb24KKyg6cmZjOmA2MTUyYCkgaWYgKmRlY29kZV9kYXRhKiBoYXMgYmVlbiBzZXQgYGBUcnVlYGAuICBJZiB0aGUgY2xpZW50CitzcGVjaWZpZXMgYGBCT0RZPThCSVRNSU1FYGAgb24gdGhlIGBgTUFJTGBgIGNvbW1hbmQsIGl0IGlzIHBhc3NlZCB0bworOm1ldGg6YFNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlKCkgPHNtdHBkLlNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlPmAKK3ZpYSB0aGUgKm1haWxfb3B0aW9ucyoga2V5d29yZC4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggYW5kIFIuICBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMTc5NWAuKQorCitUaGUgOmNsYXNzOmB+c210cGQuU01UUFNlcnZlcmAgY2xhc3Mgbm93IGFsc28gc3VwcG9ydHMgdGhlIGBgU01UUFVURjhgYAorZXh0ZW5zaW9uICg6cmZjOmA2NTMxYDogSW50ZXJuYXRpb25hbGl6ZWQgRW1haWwpLiAgSWYgdGhlIGNsaWVudCBzcGVjaWZpZWQKK2BgU01UUFVURjggQk9EWT04QklUTUlNRWBgIG9uIHRoZSBgYE1BSUxgYCBjb21tYW5kLCB0aGV5IGFyZSBwYXNzZWQgdG8KKzptZXRoOmBTTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZSgpIDxzbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZT5gCit2aWEgdGhlICptYWlsX29wdGlvbnMqIGtleXdvcmQuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCitgYHByb2Nlc3NfbWVzc2FnZWBgIG1ldGhvZCB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBgYFNNVFBVVEY4YGAgZGF0YS4KKyhDb250cmlidXRlZCBieSBNaWxhbiBPYmVya2lyY2ggaW4gOmlzc3VlOmAyMTcyNWAuKQorCitJdCBpcyBub3cgcG9zc2libGUgdG8gcHJvdmlkZSwgZGlyZWN0bHkgb3IgdmlhIG5hbWUgcmVzb2x1dGlvbiwgSVB2NgorYWRkcmVzc2VzIGluIHRoZSA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYCBjb25zdHJ1Y3RvciwgYW5kIGhhdmUgaXQKK3N1Y2Nlc3NmdWxseSBjb25uZWN0LiAgKENvbnRyaWJ1dGVkIGJ5IE1pbGFuIE9iZXJraXJjaCBpbiA6aXNzdWU6YDE0NzU4YC4pCisKKworc210cGxpYgorLS0tLS0tLQorCitBIG5ldyA6bWV0aDpgU01UUC5hdXRoKCkgPHNtdHBsaWIuU01UUC5hdXRoPmAgbWV0aG9kIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8KK2ltcGxlbWVudCBjdXN0b20gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcy4gKENvbnRyaWJ1dGVkIGJ5IE1pbGFuCitPYmVya2lyY2ggaW4gOmlzc3VlOmAxNTAxNGAuKQorCitUaGUgOm1ldGg6YFNNVFAuc2V0X2RlYnVnbGV2ZWwoKSA8c210cGxpYi5TTVRQLnNldF9kZWJ1Z2xldmVsPmAgbWV0aG9kIG5vdworYWNjZXB0cyBhbiBhZGRpdGlvbmFsIGRlYnVnbGV2ZWwgKDIpLCB3aGljaCBlbmFibGVzIHRpbWVzdGFtcHMgaW4gZGVidWcKK21lc3NhZ2VzLiAoQ29udHJpYnV0ZWQgYnkgR2F2aW4gQ2hhcHBlbGwgYW5kIE1hY2llaiBTenVsaWsgaW4gOmlzc3VlOmAxNjkxNGAuKQorCitCb3RoIDptZXRoOmBTTVRQLnNlbmRtYWlsKCkgPHNtdHBsaWIuU01UUC5zZW5kbWFpbD5gIGFuZAorOm1ldGg6YFNNVFAuc2VuZF9tZXNzYWdlKCkgPHNtdHBsaWIuU01UUC5zZW5kX21lc3NhZ2U+YCBtZXRob2RzIG5vdworc3VwcG9ydCBzdXBwb3J0IDpyZmM6YDY1MzFgIChTTVRQVVRGOCkuCisoQ29udHJpYnV0ZWQgYnkgTWlsYW4gT2JlcmtpcmNoIGFuZCBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMjAyN2AuKQorCisKK3NuZGhkcgorLS0tLS0tCisKKzpmdW5jOmB+c25kaGRyLndoYXRgIGFuZCA6ZnVuYzpgfnNuZGhkci53aGF0aGRyYCBmdW5jdGlvbnMgIG5vdyByZXR1cm4KK2EgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYC4gIChDb250cmlidXRlZCBieSBDbGF1ZGl1IFBvcGEgaW4KKzppc3N1ZTpgMTg2MTVgLikKKworCitzb2NrZXQKKy0tLS0tLQorCitGdW5jdGlvbnMgd2l0aCB0aW1lb3V0cyBub3cgdXNlIGEgbW9ub3RvbmljIGNsb2NrLCBpbnN0ZWFkIG9mIGEgc3lzdGVtIGNsb2NrLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjIwNDNgLikKKworQSBuZXcgOm1ldGg6YHNvY2tldC5zZW5kZmlsZSgpIDxzb2NrZXQuc29ja2V0LnNlbmRmaWxlPmAgbWV0aG9kIGFsbG93cyB0bworc2VuZCBhIGZpbGUgb3ZlciBhIHNvY2tldCBieSB1c2luZyB0aGUgaGlnaC1wZXJmb3JtYW5jZSA6ZnVuYzpgb3Muc2VuZGZpbGVgCitmdW5jdGlvbiBvbiBVTklYIHJlc3VsdGluZyBpbiB1cGxvYWRzIGJlaW5nIGZyb20gMiB0byAzIHRpbWVzIGZhc3RlciB0aGFuIHdoZW4KK3VzaW5nIHBsYWluIDptZXRoOmBzb2NrZXQuc2VuZCgpIDxzb2NrZXQuc29ja2V0LnNlbmQ+YC4KKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2xhJyBpbiA6aXNzdWU6YDE3NTUyYC4pCisKK1RoZSA6bWV0aDpgc29ja2V0LnNlbmRhbGwoKSA8c29ja2V0LnNvY2tldC5zZW5kYWxsPmAgbWV0aG9kIG5vIGxvbmdlciByZXNldHMgdGhlCitzb2NrZXQgdGltZW91dCBldmVyeSB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LiAgVGhlIHNvY2tldCB0aW1lb3V0IGlzCitub3cgdGhlIG1heGltdW0gdG90YWwgZHVyYXRpb24gdG8gc2VuZCBhbGwgZGF0YS4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIzODUzYC4pCisKK1RoZSAqYmFja2xvZyogYXJndW1lbnQgb2YgdGhlIDptZXRoOmBzb2NrZXQubGlzdGVuKCkgPHNvY2tldC5zb2NrZXQubGlzdGVuPmAKK21ldGhvZCBpcyBub3cgb3B0aW9uYWwuICBCeSBkZWZhdWx0IGl0IGlzIHNldCB0bworOmRhdGE6YFNPTUFYQ09OTiA8c29ja2V0LlNPTUFYQ09OTj5gIG9yIHRvIGBgMTI4YGAgd2hpY2hldmVyIGlzIGxlc3MuCisoQ29udHJpYnV0ZWQgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpIGluIDppc3N1ZTpgMjE0NTVgLikKKworCitzc2wKKy0tLQorCisuLiBfd2hhdHNuZXctc3NsbWVtb3J5YmlvOgorCitNZW1vcnkgQklPIFN1cHBvcnQKK35+fn5+fn5+fn5+fn5+fn5+fgorCisoQ29udHJpYnV0ZWQgYnkgR2VlcnQgSmFuc2VuIGluIDppc3N1ZTpgMjE5NjVgLikKKworVGhlIG5ldyA6Y2xhc3M6YH5zc2wuU1NMT2JqZWN0YCBjbGFzcyBoYXMgYmVlbiBhZGRlZCB0byBwcm92aWRlIFNTTCBwcm90b2NvbAorc3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgbmV0d29yayBJL08gY2FwYWJpbGl0aWVzIG9mIDpjbGFzczpgfnNzbC5TU0xTb2NrZXRgCithcmUgbm90IG5lY2Vzc2FyeSBvciBzdWJvcHRpbWFsLiAgYGBTU0xPYmplY3RgYCByZXByZXNlbnRzCithbiBTU0wgcHJvdG9jb2wgaW5zdGFuY2UsIGJ1dCBkb2VzIG5vdCBpbXBsZW1lbnQgYW55IG5ldHdvcmsgSS9PIG1ldGhvZHMsIGFuZAoraW5zdGVhZCBwcm92aWRlcyBhIG1lbW9yeSBidWZmZXIgaW50ZXJmYWNlLiAgVGhlIG5ldyA6Y2xhc3M6YH5zc2wuTWVtb3J5QklPYAorY2xhc3MgY2FuIGJlIHVzZWQgdG8gcGFzcyBkYXRhIGJldHdlZW4gUHl0aG9uIGFuZCBhbiBTU0wgcHJvdG9jb2wgaW5zdGFuY2UuCisKK1RoZSBtZW1vcnkgQklPIFNTTCBzdXBwb3J0IGlzIHByaW1hcmlseSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGZyYW1ld29ya3MKK2ltcGxlbWVudGluZyBhc3luY2hyb25vdXMgSS9PIGZvciB3aGljaCA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YCdzIHJlYWRpbmVzcworbW9kZWwgKCJzZWxlY3QvcG9sbCIpIGlzIGluZWZmaWNpZW50LgorCitBIG5ldyA6bWV0aDpgU1NMQ29udGV4dC53cmFwX2JpbygpIDxzc2wuU1NMQ29udGV4dC53cmFwX2Jpbz5gIG1ldGhvZCBjYW4gYmUgdXNlZAordG8gY3JlYXRlIGEgbmV3IGBgU1NMT2JqZWN0YGAgaW5zdGFuY2UuCisKKworQXBwbGljYXRpb24tTGF5ZXIgUHJvdG9jb2wgTmVnb3RpYXRpb24gU3VwcG9ydAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMDE4OGAuKQorCitXaGVyZSBPcGVuU1NMIHN1cHBvcnQgaXMgcHJlc2VudCwgOm1vZDpgc3NsYCBtb2R1bGUgbm93IGltcGxlbWVudHMKKypBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiogVExTIGV4dGVuc2lvbiBhcyBkZXNjcmliZWQKK2luIDpyZmM6YDczMDFgLgorCitUaGUgbmV3IDptZXRoOmBTU0xDb250ZXh0LnNldF9hbHBuX3Byb3RvY29scygpIDxzc2wuU1NMQ29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHM+YAorY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBwcm90b2NvbHMgYSBzb2NrZXQgc2hvdWxkIGFkdmVydGlzZSBkdXJpbmcKK3RoZSBUTFMgaGFuZHNoYWtlLgorCitUaGUgbmV3Cis6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSA8c3NsLlNTTFNvY2tldC5zZWxlY3RlZF9hbHBuX3Byb3RvY29sPmAKK3JldHVybnMgdGhlIHByb3RvY29sIHRoYXQgd2FzIHNlbGVjdGVkIGR1cmluZyB0aGUgVExTIGhhbmRzaGFrZS4KKzpkYXRhOmB+c3NsLkhBU19BTFBOYCBmbGFnIGluZGljYXRlcyB3aGV0aGVyIEFQTE4gc3VwcG9ydCBpcyBwcmVzZW50LgorCisKK090aGVyIENoYW5nZXMKK35+fn5+fn5+fn5+fn4KKworVGhlcmUgaXMgYSBuZXcgOm1ldGg6YFNTTFNvY2tldC52ZXJzaW9uKCkgPHNzbC5TU0xTb2NrZXQudmVyc2lvbj5gIG1ldGhvZCB0bworcXVlcnkgdGhlIGFjdHVhbCBwcm90b2NvbCB2ZXJzaW9uIGluIHVzZS4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDIwNDIxYC4pCisKK1RoZSA6Y2xhc3M6YH5zc2wuU1NMU29ja2V0YCBjbGFzcyBub3cgaW1wbGVtZW50cworYSA6bWV0aDpgU1NMU29ja2V0LnNlbmRmaWxlKCkgPHNzbC5TU0xTb2NrZXQuc2VuZGZpbGU+YCBtZXRob2QuCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgaW4gOmlzc3VlOmAxNzU1MmAuKQorCitUaGUgOm1ldGg6YFNTTFNvY2tldC5zZW5kKCkgPHNzbC5TU0xTb2NrZXQuc2VuZD5gIG1ldGhvZCBub3cgcmFpc2VzIGVpdGhlcgorOmV4Yzpgc3NsLlNTTFdhbnRSZWFkRXJyb3JgIG9yIDpleGM6YHNzbC5TU0xXYW50V3JpdGVFcnJvcmAgZXhjZXB0aW9uIG9uIGEKK25vbi1ibG9ja2luZyBzb2NrZXQgaWYgdGhlIG9wZXJhdGlvbiB3b3VsZCBibG9jay4gUHJldmlvdXNseSwgaXQgd291bGQgcmV0dXJuCitgYDBgYC4gIChDb250cmlidXRlZCBieSBOaWtvbGF1cyBSYXRoIGluIDppc3N1ZTpgMjA5NTFgLikKKworVGhlIDpmdW5jOmB+c3NsLmNlcnRfdGltZV90b19zZWNvbmRzYCBmdW5jdGlvbiBub3cgaW50ZXJwcmV0cyB0aGUgaW5wdXQgdGltZQorYXMgVVRDIGFuZCBub3QgYXMgbG9jYWwgdGltZSwgcGVyIDpyZmM6YDUyODBgLiAgQWRkaXRpb25hbGx5LCB0aGUgcmV0dXJuCit2YWx1ZSBpcyBhbHdheXMgYW4gOmNsYXNzOmBpbnRgLiAoQ29udHJpYnV0ZWQgYnkgQWtpcmEgTGkgaW4gOmlzc3VlOmAxOTk0MGAuKQorCitOZXcgOm1ldGg6YFNTTE9iamVjdC5zaGFyZWRfY2lwaGVycygpIDxzc2wuU1NMT2JqZWN0LnNoYXJlZF9jaXBoZXJzPmAgYW5kCis6bWV0aDpgU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzKCkgPHNzbC5TU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnM+YCBtZXRob2RzIHJldHVybgordGhlIGxpc3Qgb2YgY2lwaGVycyBzZW50IGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2UuCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24gaW4gOmlzc3VlOmAyMzE4NmAuKQorCitUaGUgOm1ldGg6YFNTTFNvY2tldC5kb19oYW5kc2hha2UoKSA8c3NsLlNTTFNvY2tldC5kb19oYW5kc2hha2U+YCwKKzptZXRoOmBTU0xTb2NrZXQucmVhZCgpIDxzc2wuU1NMU29ja2V0LnJlYWQ+YCwKKzptZXRoOmBTU0xTb2NrZXQuc2h1dGRvd24oKSA8c3NsLlNTTFNvY2tldC5zaHV0ZG93bj5gLCBhbmQKKzptZXRoOmBTU0xTb2NrZXQud3JpdGUoKSA8c3NsLlNTTFNvY2tldC53cml0ZT5gIG1ldGhvZHMgb2YgOmNsYXNzOmB+c3NsLlNTTFNvY2tldGAKK2NsYXNzIG5vIGxvbmdlciByZXNldCB0aGUgc29ja2V0IHRpbWVvdXQgZXZlcnkgdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KK1RoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdGhlIG1heGltdW0gdG90YWwgZHVyYXRpb24gb2YgdGhlIG1ldGhvZC4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIzODUzYC4pCisKK1RoZSA6ZnVuYzpgfnNzbC5tYXRjaF9ob3N0bmFtZWAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIG1hdGNoaW5nIG9mIElQIGFkZHJlc3Nlcy4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDIzMjM5YC4pCisKKworc3FsaXRlMworLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+c3FsaXRlMy5Sb3dgIGNsYXNzIG5vdyBmdWxseSBzdXBwb3J0cyBzZXF1ZW5jZSBwcm90b2NvbCwKK2luIHBhcnRpY3VsYXIgOmZ1bmM6YHJldmVyc2VkYCBpdGVyYXRpb24gYW5kIHNsaWNlIGluZGV4aW5nLgorKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDEwMjAzYDsgYnkgTHVjYXMgU2luY2xhaXIsCitKZXNzaWNhIE1jS2VsbGFyLCBhbmQgIFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMzU4M2AuKQorCisKKy4uIF93aGF0c25ldy1zdWJwcm9jZXNzOgorCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5zdWJwcm9jZXNzLnJ1bmAgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQuCitJdCBydW5zIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBhbmQgYW5kIHJldHVybnMgYQorOmNsYXNzOmB+c3VicHJvY2Vzcy5Db21wbGV0ZWRQcm9jZXNzYCBvYmplY3QsIHdoaWNoIGRlc2NyaWJlcyBhIGZpbmlzaGVkCitwcm9jZXNzLiAgVGhlIG5ldyBBUEkgaXMgbW9yZSBjb25zaXN0ZW50IGFuZCBpcyB0aGUgcmVjb21tZW5kZWQgYXBwcm9hY2gKK3RvIGludm9raW5nIHN1YnByb2Nlc3NlcyBpbiBQeXRob24gY29kZSB0aGF0IGRvZXMgbm90IG5lZWQgdG8gbWFpbnRhaW4KK2NvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucy4KKyhDb250cmlidXRlZCBieSBUaG9tYXMgS2x1eXZlciBpbiA6aXNzdWU6YDIzMzQyYC4pCisKK0V4YW1wbGVzOjoKKworICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKKyAgICBDb21wbGV0ZWRQcm9jZXNzKGFyZ3M9WydscycsICctbCddLCByZXR1cm5jb2RlPTApCisKKyAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oImV4aXQgMSIsIHNoZWxsPVRydWUsIGNoZWNrPVRydWUpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ2V4aXQgMScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMQorCisgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiLCAiL2Rldi9udWxsIl0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgQ29tcGxldGVkUHJvY2VzcyhhcmdzPVsnbHMnLCAnLWwnLCAnL2Rldi9udWxsJ10sIHJldHVybmNvZGU9MCwKKyAgICBzdGRvdXQ9YidjcnctcnctcnctIDEgcm9vdCByb290IDEsIDMgSmFuIDIzIDE2OjIzIC9kZXYvbnVsbFxuJykKKworCitzeXMKKy0tLQorCitBIG5ldyA6ZnVuYzpgfnN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXJgIGZ1bmN0aW9uIGFsbG93cyBzZXR0aW5nIGEgZ2xvYmFsCitob29rIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSA6dGVybTpgY29yb3V0aW5lIG9iamVjdCA8Y29yb3V0aW5lPmAKK2lzIGNyZWF0ZWQgYnkgYW4gOmtleXdvcmQ6YGFzeW5jIGRlZmAgZnVuY3Rpb24uICBBIGNvcnJlc3BvbmRpbmcKKzpmdW5jOmB+c3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcmAgY2FuIGJlIHVzZWQgdG8gb2J0YWluIGEgY3VycmVudGx5IHNldAord3JhcHBlci4gIEJvdGggZnVuY3Rpb25zIGFyZSA6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIGFwaT5gLAorYW5kIGFyZSBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIG9ubHkuICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YKK2luIDppc3N1ZTpgMjQwMTdgLikKKworQSBuZXcgOmZ1bmM6YH5zeXMuaXNfZmluYWxpemluZ2AgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIFB5dGhvbgoraW50ZXJwcmV0ZXIgaXMgOnRlcm06YHNodXR0aW5nIGRvd24gPGludGVycHJldGVyIHNodXRkb3duPmAuCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAyMjY5NmAuKQorCisKK3N5c2NvbmZpZworLS0tLS0tLS0tCisKK1RoZSBuYW1lIG9mIHRoZSB1c2VyIHNjcmlwdHMgZGlyZWN0b3J5IG9uIFdpbmRvd3Mgbm93IGluY2x1ZGVzIHRoZSBmaXJzdAordHdvIGNvbXBvbmVudHMgb2YgUHl0aG9uIHZlcnNpb24uIChDb250cmlidXRlZCBieSBQYXVsIE1vb3JlCitpbiA6aXNzdWU6YDIzNDM3YC4pCisKKwordGFyZmlsZQorLS0tLS0tLQorCitUaGUgKm1vZGUqIGFyZ3VtZW50IG9mIHRoZSA6ZnVuYzpgfnRhcmZpbGUub3BlbmAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYGAieCJgYAordG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxNzE3YC4pCisKKzptZXRoOmBUYXJGaWxlLmV4dHJhY3RhbGwoKSA8dGFyZmlsZS5UYXJGaWxlLmV4dHJhY3RhbGw+YCBhbmQKKzptZXRoOmBUYXJGaWxlLmV4dHJhY3QoKSA8dGFyZmlsZS5UYXJGaWxlLmV4dHJhY3Q+YCBtZXRob2RzIG5vdyB0YWtlIGEga2V5d29yZAorYXJndW1lbnQgKm51bWVyaWNfb25seSouICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZSBleHRyYWN0ZWQgZmlsZXMgYW5kCitkaXJlY3RvcmllcyB3aWxsIGJlIG93bmVkIGJ5IHRoZSBudW1lcmljIGBgdWlkYGAgYW5kIGBgZ2lkYGAgZnJvbSB0aGUgdGFyZmlsZS4KK0lmIHNldCB0byBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0LCBhbmQgdGhlIGJlaGF2aW9yIGluIHZlcnNpb25zIHByaW9yIHRvIDMuNSksCit0aGV5IHdpbGwgYmUgb3duZWQgYnkgdGhlIG5hbWVkIHVzZXIgYW5kIGdyb3VwIGluIHRoZSB0YXJmaWxlLgorKENvbnRyaWJ1dGVkIGJ5IE1pY2hhZWwgVm9ndCBhbmQgRXJpYyBTbWl0aCBpbiA6aXNzdWU6YDIzMTkzYC4pCisKK1RoZSA6bWV0aDpgVGFyRmlsZS5saXN0KCkgPHRhcmZpbGUuVGFyRmlsZS5saXN0PmAgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwKKyptZW1iZXJzKiBrZXl3b3JkIGFyZ3VtZW50IHRoYXQgY2FuIGJlIHNldCB0byBhIHN1YnNldCBvZiB0aGUgbGlzdCByZXR1cm5lZAorYnkgOm1ldGg6YFRhckZpbGUuZ2V0bWVtYmVycygpIDx0YXJmaWxlLlRhckZpbGUuZ2V0bWVtYmVycz5gLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMTU0OWAuKQorCisKK3RocmVhZGluZworLS0tLS0tLS0tCisKK0JvdGggOm1ldGg6YExvY2suYWNxdWlyZSgpIDx0aHJlYWRpbmcuTG9jay5hY3F1aXJlPmAgYW5kCis6bWV0aDpgUkxvY2suYWNxdWlyZSgpIDx0aHJlYWRpbmcuUkxvY2suYWNxdWlyZT5gIG1ldGhvZHMKK25vdyB1c2UgYSBtb25vdG9uaWMgY2xvY2sgZm9yIHRpbWVvdXQgbWFuYWdlbWVudC4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIyMDQzYC4pCisKKwordGltZQorLS0tLQorCitUaGUgOmZ1bmM6YH50aW1lLm1vbm90b25pY2AgZnVuY3Rpb24gaXMgbm93IGFsd2F5cyBhdmFpbGFibGUuCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMjA0M2AuKQorCisKK3RpbWVpdAorLS0tLS0tCisKK0EgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24gYGAtdWBgIG9yIDpzYW1wOmAtLXVuaXQ9e1V9YCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHRoZSB0aW1lCit1bml0IGZvciB0aGUgdGltZXIgb3V0cHV0LiAgU3VwcG9ydGVkIG9wdGlvbnMgYXJlIGBgdXNlY2BgLCBgYG1zZWNgYCwKK29yIGBgc2VjYGAuICAoQ29udHJpYnV0ZWQgYnkgSnVsaWFuIEdpbmRpIGluIDppc3N1ZTpgMTg5ODNgLikKKworVGhlIDpmdW5jOmB+dGltZWl0LnRpbWVpdGAgZnVuY3Rpb24gaGFzIGEgbmV3ICpnbG9iYWxzKiBwYXJhbWV0ZXIgZm9yCitzcGVjaWZ5aW5nIHRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdGhlIGNvZGUgd2lsbCBiZSBydW5uaW5nLgorKENvbnRyaWJ1dGVkIGJ5IEJlbiBSb2JlcnRzIGluIDppc3N1ZTpgMjUyN2AuKQorCisKK3RraW50ZXIKKy0tLS0tLS0KKworVGhlIDptb2Q6YHRraW50ZXIuX2ZpeGAgbW9kdWxlIHVzZWQgZm9yIHNldHRpbmcgdXAgdGhlIFRjbC9UayBlbnZpcm9ubWVudAorb24gV2luZG93cyBoYXMgYmVlbiByZXBsYWNlZCBieSBhIHByaXZhdGUgZnVuY3Rpb24gaW4gdGhlIDptb2Q6YF90a2ludGVyYAorbW9kdWxlIHdoaWNoIG1ha2VzIG5vIHBlcm1hbmVudCBjaGFuZ2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyhDb250cmlidXRlZCBieSBaYWNoYXJ5IFdhcmUgaW4gOmlzc3VlOmAyMDAzNWAuKQorCisKKy4uIF93aGF0c25ldy10cmFjZWJhY2s6CisKK3RyYWNlYmFjaworLS0tLS0tLS0tCisKK05ldyA6ZnVuYzpgfnRyYWNlYmFjay53YWxrX3N0YWNrYCBhbmQgOmZ1bmM6YH50cmFjZWJhY2sud2Fsa190YmAKK2Z1bmN0aW9ucyB0byBjb252ZW5pZW50bHkgdHJhdmVyc2UgZnJhbWUgYW5kIHRyYWNlYmFjayBvYmplY3RzLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTc5MTFgLikKKworTmV3IGxpZ2h0d2VpZ2h0IGNsYXNzZXM6IDpjbGFzczpgfnRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb25gLAorOmNsYXNzOmB+dHJhY2ViYWNrLlN0YWNrU3VtbWFyeWAsIGFuZCA6Y2xhc3M6YH50cmFjZWJhY2suRnJhbWVTdW1tYXJ5YC4KKyhDb250cmlidXRlZCBieSBSb2JlcnQgQ29sbGlucyBpbiA6aXNzdWU6YDE3OTExYC4pCisKK0JvdGggOmZ1bmM6YH50cmFjZWJhY2sucHJpbnRfdGJgIGFuZCA6ZnVuYzpgfnRyYWNlYmFjay5wcmludF9zdGFja2AgZnVuY3Rpb25zCitub3cgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIHRoZSAqbGltaXQqIGFyZ3VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IERtaXRyeSBLYXpha292IGluIDppc3N1ZTpgMjI2MTlgLikKKworCit0eXBlcworLS0tLS0KKworQSBuZXcgOmZ1bmM6YH50eXBlcy5jb3JvdXRpbmVgIGZ1bmN0aW9uIHRvIHRyYW5zZm9ybQorOnRlcm06YGdlbmVyYXRvciA8Z2VuZXJhdG9yIGl0ZXJhdG9yPmAgYW5kCis6Y2xhc3M6YGdlbmVyYXRvci1saWtlIDxjb2xsZWN0aW9ucy5hYmMuR2VuZXJhdG9yPmAgb2JqZWN0cyBpbnRvCis6dGVybTpgYXdhaXRhYmxlcyA8YXdhaXRhYmxlPmAuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDAxN2AuKQorCitBIG5ldyA6Y2xhc3M6YH50eXBlcy5Db3JvdXRpbmVUeXBlYCBpcyB0aGUgdHlwZSBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzCitjcmVhdGVkIGJ5IDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9ucy4KKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI0NDAwYC4pCisKKwordW5pY29kZWRhdGEKKy0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB1bmljb2RlZGF0YWAgbW9kdWxlIG5vdyB1c2VzIGRhdGEgZnJvbSBgVW5pY29kZSA4LjAuMAorPGh0dHA6Ly91bmljb2RlLm9yZy92ZXJzaW9ucy9Vbmljb2RlOC4wLjAvPmBfLgorCisKK3VuaXR0ZXN0CistLS0tLS0tLQorCitUaGUgOm1ldGg6YFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSgpIDx1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGU+YAorbWV0aG9kIG5vdyBhY2NlcHRzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50ICpwYXR0ZXJuKiB3aGljaCBpcyBwYXNzZWQgdG8KK2BgbG9hZF90ZXN0c2BgIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4gIEZvdW5kIHBhY2thZ2VzIGFyZSBub3cgY2hlY2tlZCBmb3IKK2BgbG9hZF90ZXN0c2BgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVpciBwYXRoIG1hdGNoZXMgKnBhdHRlcm4qLCBiZWNhdXNlIGl0CitpcyBpbXBvc3NpYmxlIGZvciBhIHBhY2thZ2UgbmFtZSB0byBtYXRjaCB0aGUgZGVmYXVsdCBwYXR0ZXJuLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGFuZCBCYXJyeSBBLiBXYXJzYXcgaW4gOmlzc3VlOmAxNjY2MmAuKQorCitVbml0dGVzdCBkaXNjb3ZlcnkgZXJyb3JzIG5vdyBhcmUgZXhwb3NlZCBpbgorOmRhdGE6YFRlc3RMb2FkZXIuZXJyb3JzIDx1bml0dGVzdC5UZXN0TG9hZGVyLmVycm9ycz5gIGF0dHJpYnV0ZSBvZiB0aGUKKzpjbGFzczpgfnVuaXR0ZXN0LlRlc3RMb2FkZXJgIGluc3RhbmNlLgorKENvbnRyaWJ1dGVkIGJ5IFJvYmVydCBDb2xsaW5zIGluIDppc3N1ZTpgMTk3NDZgLikKKworQSBuZXcgY29tbWFuZCBsaW5lIG9wdGlvbiBgYC0tbG9jYWxzYGAgdG8gc2hvdyBsb2NhbCB2YXJpYWJsZXMgaW4KK3RyYWNlYmFja3MuICAoQ29udHJpYnV0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgaW4gOmlzc3VlOmAyMjkzNmAuKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIENsYXNzIGNvbnN0cnVjdG9yIGhhcyBhIG5ldyAqdW5zYWZlKiBwYXJhbWV0ZXIsIHdoaWNoIGNhdXNlcyBtb2NrCisgIG9iamVjdHMgdG8gcmFpc2UgOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9uIGF0dHJpYnV0ZSBuYW1lcyBzdGFydGluZworICB3aXRoIGBgImFzc2VydCJgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTIzOGAuKQorCisqIEEgbmV3IDptZXRoOmBNb2NrLmFzc2VydF9ub3RfY2FsbGVkKCkgPHVuaXR0ZXN0Lm1vY2suTW9jay5hc3NlcnRfbm90X2NhbGxlZD5gCisgIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgbW9jayBvYmplY3Qgd2FzIGNhbGxlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTI2MmAuKQorCitUaGUgOmNsYXNzOmB+dW5pdHRlc3QubW9jay5NYWdpY01vY2tgIGNsYXNzIG5vdyBzdXBwb3J0cyA6bWV0aDpgX190cnVlZGl2X19gLAorOm1ldGg6YF9fZGl2bW9kX19gIGFuZCA6bWV0aDpgX19tYXRtdWxfX2Agb3BlcmF0b3JzLgorKENvbnRyaWJ1dGVkIGJ5IEpvaGFubmVzIEJhaXRlciBpbiA6aXNzdWU6YDIwOTY4YCwgYW5kIEjDpWthbiBMw7Z2ZGFobAoraW4gOmlzc3VlOmAyMzU4MWAgYW5kIDppc3N1ZTpgMjM1NjhgLikKKworSXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IHBhc3MgYGBjcmVhdGU9VHJ1ZWBgIHRvIHRoZQorOmZ1bmM6YH51bml0dGVzdC5tb2NrLnBhdGNoYCBmdW5jdGlvbiB3aGVuIHBhdGNoaW5nIGJ1aWx0aW4gbmFtZXMuCisoQ29udHJpYnV0ZWQgYnkgS3VzaGFsIERhcyBpbiA6aXNzdWU6YDE3NjYwYC4pCisKKwordXJsbGliCistLS0tLS0KKworQSBuZXcKKzpjbGFzczpgcmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoIDx1cmxsaWIucmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoPmAKK2NsYXNzIGFsbG93cyBIVFRQIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIHRvIGJlIG1hbmFnZWQgc28gYXMgdG8KK2VsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBgYDQwMWBgIHJlc3BvbnNlIGhhbmRsaW5nLCBvciB0byB1bmNvbmRpdGlvbmFsbHkgc2VuZAorY3JlZGVudGlhbHMgb24gdGhlIGZpcnN0IHJlcXVlc3QgaW4gb3JkZXIgdG8gY29tbXVuaWNhdGUgd2l0aCBzZXJ2ZXJzIHRoYXQKK3JldHVybiBhIGBgNDA0YGAgcmVzcG9uc2UgaW5zdGVhZCBvZiBhIGBgNDAxYGAgaWYgdGhlIGBgQXV0aG9yaXphdGlvbmBgIGhlYWRlcgoraXMgbm90IHNlbnQuIChDb250cmlidXRlZCBieSBNYXRlaiBDZXBsIGluIDppc3N1ZTpgMTk0OTRgIGFuZCBBa3NoaXQgS2h1cmFuYSBpbgorOmlzc3VlOmA3MTU5YC4pCisKK0EgbmV3ICpxdW90ZV92aWEqIGFyZ3VtZW50IGZvciB0aGUKKzpmdW5jOmBwYXJzZS51cmxlbmNvZGUoKSA8dXJsbGliLnBhcnNlLnVybGVuY29kZT5gCitmdW5jdGlvbiBwcm92aWRlcyBhIHdheSB0byBjb250cm9sIHRoZSBlbmNvZGluZyBvZiBxdWVyeSBwYXJ0cyBpZiBuZWVkZWQuCisoQ29udHJpYnV0ZWQgYnkgU2Ftd3lzZSBhbmQgQXJub24gWWFhcmkgaW4gOmlzc3VlOmAxMzg2NmAuKQorCitUaGUgOmZ1bmM6YHJlcXVlc3QudXJsb3BlbigpIDx1cmxsaWIucmVxdWVzdC51cmxvcGVuPmAgZnVuY3Rpb24gYWNjZXB0cyBhbgorOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IGFzIGEgKmNvbnRleHQqIGFyZ3VtZW50LCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yCit0aGUgSFRUUFMgY29ubmVjdGlvbi4gIChDb250cmlidXRlZCBieSBBbGV4IEdheW5vciBpbiA6aXNzdWU6YDIyMzY2YC4pCisKK1RoZSA6ZnVuYzpgcGFyc2UudXJsam9pbigpIDx1cmxsaWIucGFyc2UudXJsam9pbj5gIHdhcyB1cGRhdGVkIHRvIHVzZSB0aGUKKzpyZmM6YDM5ODZgIHNlbWFudGljcyBmb3IgdGhlIHJlc29sdXRpb24gb2YgcmVsYXRpdmUgVVJMcywgcmF0aGVyIHRoYW4KKzpyZmM6YDE4MDhgIGFuZCA6cmZjOmAyMzk2YC4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBTZW50aGlsIEt1bWFyYW4gaW4gOmlzc3VlOmAyMjExOGAuKQorCisKK3dzZ2lyZWYKKy0tLS0tLS0KKworVGhlICpoZWFkZXJzKiBhcmd1bWVudCBvZiB0aGUgOmNsYXNzOmBoZWFkZXJzLkhlYWRlcnMgPHdzZ2lyZWYuaGVhZGVycy5IZWFkZXJzPmAKK2NsYXNzIGNvbnN0cnVjdG9yIGlzIG5vdyBvcHRpb25hbC4KKyhDb250cmlidXRlZCBieSBQYWJsbyBUb3JyZXMgTmF2YXJyZXRlIGFuZCBTaWxlbnRHaG9zdCBpbiA6aXNzdWU6YDU4MDBgLikKKworCit4bWxycGMKKy0tLS0tLQorCitUaGUgOmNsYXNzOmBjbGllbnQuU2VydmVyUHJveHkgPHhtbHJwYy5jbGllbnQuU2VydmVyUHJveHk+YCBjbGFzcyBub3cgc3VwcG9ydHMKKzp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IENsYXVkaXUgUG9wYSBpbiA6aXNzdWU6YDIwNjI3YC4pCisKKzpjbGFzczpgY2xpZW50LlNlcnZlclByb3h5IDx4bWxycGMuY2xpZW50LlNlcnZlclByb3h5PmAgY29uc3RydWN0b3Igbm93IGFjY2VwdHMKK2FuIG9wdGlvbmFsIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlLgorKENvbnRyaWJ1dGVkIGJ5IEFsZXggR2F5bm9yIGluIDppc3N1ZTpgMjI5NjBgLikKKworCit4bWwuc2F4CistLS0tLS0tCisKK1NBWCBwYXJzZXJzIG5vdyBzdXBwb3J0IGEgY2hhcmFjdGVyIHN0cmVhbSBvZiB0aGUKKzpjbGFzczpgeG1scmVhZGVyLklucHV0U291cmNlIDx4bWwuc2F4LnhtbHJlYWRlci5JbnB1dFNvdXJjZT5gIG9iamVjdC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE3NWAuKQorCis6ZnVuYzpgfnhtbC5zYXgucGFyc2VTdHJpbmdgIG5vdyBhY2NlcHRzIGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxMDU5MGAuKQorCisKK3ppcGZpbGUKKy0tLS0tLS0KKworWklQIG91dHB1dCBjYW4gbm93IGJlIHdyaXR0ZW4gdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzI1MmAuKQorCitUaGUgKm1vZGUqIGFyZ3VtZW50IG9mIDptZXRoOmBaaXBGaWxlLm9wZW4oKSA8emlwZmlsZS5aaXBGaWxlLm9wZW4+YCBtZXRob2Qgbm93CithY2NlcHRzIGBgIngiYGAgdG8gcmVxdWVzdCBleGNsdXNpdmUgY3JlYXRpb24uCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIxNzE3YC4pCisKKworT3RoZXIgbW9kdWxlLWxldmVsIGNoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK01hbnkgZnVuY3Rpb25zIGluIDptb2Q6YG1tYXBgLCA6bW9kOmBvc3NhdWRpb2RldmAsIDptb2Q6YHNvY2tldGAsCis6bW9kOmBzc2xgLCBhbmQgOm1vZDpgY29kZWNzYCBtb2R1bGVzIG5vdyBhY2NlcHQgd3JpdGFibGUKKzp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMDAxYC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCitUaGUgOmZ1bmM6YG9zLndhbGtgIGZ1bmN0aW9uIGhhcyBiZWVuIHNwZWQgdXAgYnkgMyB0byA1IHRpbWVzIG9uIFBPU0lYIHN5c3RlbXMsCithbmQgYnkgNyB0byAyMCB0aW1lcyBvbiBXaW5kb3dzLiAgVGhpcyB3YXMgZG9uZSB1c2luZyB0aGUgbmV3IDpmdW5jOmBvcy5zY2FuZGlyYAorZnVuY3Rpb24sIHdoaWNoIGV4cG9zZXMgZmlsZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSB1bmRlcmx5aW5nIGBgcmVhZGRpcmBgIG9yCitgYEZpbmRGaXJzdEZpbGVgYC9gYEZpbmROZXh0RmlsZWBgIHN5c3RlbSBjYWxscy4gIChDb250cmlidXRlZCBieQorQmVuIEhveXQgd2l0aCBoZWxwIGZyb20gVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMzYwNWAuKQorCitDb25zdHJ1Y3Rpb24gb2YgYGBieXRlcyhpbnQpYGAgKGZpbGxlZCBieSB6ZXJvIGJ5dGVzKSBpcyBmYXN0ZXIgYW5kIHVzZXMgbGVzcworbWVtb3J5IGZvciBsYXJnZSBvYmplY3RzLiBgYGNhbGxvYygpYGAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgbWFsbG9jKClgYCB0bworYWxsb2NhdGUgbWVtb3J5IGZvciB0aGVzZSBvYmplY3RzLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMzNgLikKKworU29tZSBvcGVyYXRpb25zIG9uIDptb2Q6YGlwYWRkcmVzc2AgOmNsYXNzOmB+aXBhZGRyZXNzLklQdjROZXR3b3JrYCBhbmQKKzpjbGFzczpgfmlwYWRkcmVzcy5JUHY2TmV0d29ya2AgaGF2ZSBiZWVuIG1hc3NpdmVseSBzcGVkIHVwLCBzdWNoIGFzCis6bWV0aDpgfmlwYWRkcmVzcy5JUHY0TmV0d29yay5zdWJuZXRzYCwgOm1ldGg6YH5pcGFkZHJlc3MuSVB2NE5ldHdvcmsuc3VwZXJuZXRgLAorOmZ1bmM6YH5pcGFkZHJlc3Muc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2VgLCA6ZnVuYzpgfmlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXNgLgorVGhlIHNwZWVkIHVwIGNhbiByYW5nZSBmcm9tIDMgdG8gMTUgdGltZXMuCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UsIE1pY2hlbCBBbGJlcnQsIGFuZCBNYXJrdXMgaW4KKzppc3N1ZTpgMjE0ODZgLCA6aXNzdWU6YDIxNDg3YCwgOmlzc3VlOmAyMDgyNmAsIDppc3N1ZTpgMjMyNjZgLikKKworUGlja2xpbmcgb2YgOm1vZDpgaXBhZGRyZXNzYCBvYmplY3RzIHdhcyBvcHRpbWl6ZWQgdG8gcHJvZHVjZSBzaWduaWZpY2FudGx5CitzbWFsbGVyIG91dHB1dC4gIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjMxMzNgLikKKworTWFueSBvcGVyYXRpb25zIG9uIDpjbGFzczpgaW8uQnl0ZXNJT2AgYXJlIG5vdyA1MCUgdG8gMTAwJSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE1MzgxYCBhbmQgRGF2aWQgV2lsc29uIGluCis6aXNzdWU6YDIyMDAzYC4pCisKK1RoZSA6ZnVuYzpgbWFyc2hhbC5kdW1wc2AgZnVuY3Rpb24gaXMgbm93IGZhc3RlcjogNjUtODUlIHdpdGggdmVyc2lvbnMgMworYW5kIDQsIDIwLTI1JSB3aXRoIHZlcnNpb25zIDAgdG8gMiBvbiB0eXBpY2FsIGRhdGEsIGFuZCB1cCB0byA1IHRpbWVzIGluCitiZXN0IGNhc2VzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMDQxNmAgYW5kIDppc3N1ZTpgMjMzNDRgLikKKworVGhlIFVURi0zMiBlbmNvZGVyIGlzIG5vdyAzIHRvIDcgdGltZXMgZmFzdGVyLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNTAyN2AuKQorCitSZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBub3cgcGFyc2VkIHVwIHRvIDEwJSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE5MzgwYC4pCisKK1RoZSA6ZnVuYzpganNvbi5kdW1wc2AgZnVuY3Rpb24gd2FzIG9wdGltaXplZCB0byBydW4gd2l0aAorYGBlbnN1cmVfYXNjaWk9RmFsc2VgYCBhcyBmYXN0IGFzIHdpdGggYGBlbnN1cmVfYXNjaWk9VHJ1ZWBgLgorKENvbnRyaWJ1dGVkIGJ5IE5hb2tpIEluYWRhIGluIDppc3N1ZTpgMjMyMDZgLikKKworVGhlIDpjOmZ1bmM6YFB5T2JqZWN0X0lzSW5zdGFuY2VgIGFuZCA6YzpmdW5jOmBQeU9iamVjdF9Jc1N1YmNsYXNzYAorZnVuY3Rpb25zIGhhdmUgYmVlbiBzcGVkIHVwIGluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBzZWNvbmQgYXJndW1lbnQKK2hhcyA6Y2xhc3M6YHR5cGVgIGFzIGl0cyBtZXRhY2xhc3MuCisoQ29udHJpYnV0ZWQgR2VvcmcgQnJhbmRsIGJ5IGluIDppc3N1ZTpgMjI1NDBgLikKKworTWV0aG9kIGNhY2hpbmcgd2FzIHNsaWdodGx5IGltcHJvdmVkLCB5aWVsZGluZyB1cCB0byA1JSBwZXJmb3JtYW5jZQoraW1wcm92ZW1lbnQgaW4gc29tZSBiZW5jaG1hcmtzLgorKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMjI4NDdgLikKKworT2JqZWN0cyBmcm9tIDptb2Q6YHJhbmRvbWAgbW9kdWxlIG5vdyB1c2UgdHdvIHRpbWVzIGxlc3MgbWVtb3J5IG9uIDY0LWJpdAorYnVpbGRzLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzQ4OGAuKQorCitUaGUgOmZ1bmM6YHByb3BlcnR5YCBnZXR0ZXIgY2FsbHMgYXJlIHVwIHRvIDI1JSBmYXN0ZXIuCisoQ29udHJpYnV0ZWQgYnkgSm9lIEpldm5payBpbiA6aXNzdWU6YDIzOTEwYC4pCisKK0luc3RhbnRpYXRpb24gb2YgOmNsYXNzOmBmcmFjdGlvbnMuRnJhY3Rpb25gIGlzIG5vdyB1cCB0byAzMCUgZmFzdGVyLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZWZhbiBCZWhuZWwgaW4gOmlzc3VlOmAyMjQ2NGAuKQorCitTdHJpbmcgbWV0aG9kcyA6bWV0aDpgfnN0ci5maW5kYCwgOm1ldGg6YH5zdHIucmZpbmRgLCA6bWV0aDpgfnN0ci5zcGxpdGAsCis6bWV0aDpgfnN0ci5wYXJ0aXRpb25gIGFuZCA6a2V5d29yZDpgaW5gIHN0cmluZyBvcGVyYXRvciBhcmUgbm93IHNpZ25pZmljYW50bHkKK2Zhc3RlciBmb3Igc2VhcmNoaW5nIDEtY2hhcmFjdGVyIHN1YnN0cmluZ3MuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzNTczYC4pCisKKworQnVpbGQgYW5kIEMgQVBJIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK05ldyBgYGNhbGxvY2BgIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkOgorCisqIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AsCisqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AsCisqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsCisqIDpjOmZ1bmM6YF9QeU9iamVjdF9HQ19DYWxsb2NgLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTIzM2AuKQorCitOZXcgZW5jb2RpbmcvZGVjb2RpbmcgaGVscGVyIGZ1bmN0aW9uczoKKworKiA6YzpmdW5jOmBQeV9EZWNvZGVMb2NhbGVgIChyZXBsYWNlZCBgYF9QeV9jaGFyMndjaGFyKClgYCksCisqIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAgKHJlcGxhY2VkIGBgX1B5X3djaGFyMmNoYXIoKWBgKS4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMTgzOTVgLikKKworQSBuZXcgOmM6ZnVuYzpgUHlDb2RlY19OYW1lUmVwbGFjZUVycm9yc2AgZnVuY3Rpb24gdG8gcmVwbGFjZSB0aGUgdW5pY29kZQorZW5jb2RlIGVycm9yIHdpdGggYGBcTnsuLi59YGAgZXNjYXBlcy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTk2NzZgLikKKworQSBuZXcgOmM6ZnVuYzpgUHlFcnJfRm9ybWF0VmAgZnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9Gb3JtYXRgLAorYnV0IGFjY2VwdHMgYSBgYHZhX2xpc3RgYCBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdSBpbiA6aXNzdWU6YDE4NzExYC4pCisKK0EgbmV3IDpjOmRhdGE6YFB5RXhjX1JlY3Vyc2lvbkVycm9yYCBleGNlcHRpb24uCisoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsIGluIDppc3N1ZTpgMTkyMzVgLikKKworTmV3IDpjOmZ1bmM6YFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjYCwgOmM6ZnVuYzpgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyYCwKK2FuZCA6YzpmdW5jOmBQeU1vZHVsZV9FeGVjRGVmYCBmdW5jdGlvbnMgaW50cm9kdWNlZCBieSA6cGVwOmA0ODlgIC0tCittdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFBldHIgVmlrdG9yaW4gaW4gOmlzc3VlOmAyNDI2OGAuKQorCitOZXcgOmM6ZnVuYzpgUHlOdW1iZXJfTWF0cml4TXVsdGlwbHlgIGFuZAorOmM6ZnVuYzpgUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5YCBmdW5jdGlvbnMgdG8gcGVyZm9ybSBtYXRyaXgKK211bHRpcGxpY2F0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEJlbmphbWluIFBldGVyc29uIGluIDppc3N1ZTpgMjExNzZgLiAgU2VlIGFsc28gOnBlcDpgNDY1YAorZm9yIGRldGFpbHMuKQorCitUaGUgOmM6bWVtYmVyOmBQeVR5cGVPYmplY3QudHBfZmluYWxpemVgIHNsb3QgaXMgbm93IHBhcnQgb2Ygc3RhYmxlIEFCSS4KKworV2luZG93cyBidWlsZHMgbm93IHJlcXVpcmUgTWljcm9zb2Z0IFZpc3VhbCBDKysgMTQuMCwgd2hpY2gKK2lzIGF2YWlsYWJsZSBhcyBwYXJ0IG9mIGBWaXN1YWwgU3R1ZGlvIDIwMTUgPGh0dHA6Ly93d3cudmlzdWFsc3R1ZGlvLmNvbT5gXy4KKworRXh0ZW5zaW9uIG1vZHVsZXMgbm93IGluY2x1ZGUgcGxhdGZvcm0gaW5mb3JtYXRpb24gdGFnIGluIHRoZWlyIGZpbGVuYW1lIG9uCitzb21lIHBsYXRmb3JtcyAodGhlIHRhZyBpcyBvcHRpb25hbCwgYW5kIENQeXRob24gd2lsbCBpbXBvcnQgZXh0ZW5zaW9ucyB3aXRob3V0CitpdDsgYWx0aG91Z2ggaWYgdGhlIHRhZyBpcyBwcmVzZW50IGFuZCBtaXNtYXRjaGVkLCB0aGUgZXh0ZW5zaW9uIHdvbid0IGJlCitsb2FkZWQpOgorCisqIE9uIExpbnV4LCBleHRlbnNpb24gbW9kdWxlIGZpbGVuYW1lcyBlbmQgd2l0aAorICBgYC5jcHl0aG9uLTxtYWpvcj48bWlub3I+bS08YXJjaGl0ZWN0dXJlPi08b3M+LnB5ZGBgOgorCisgICogYGA8bWFqb3I+YGAgaXMgdGhlIG1ham9yIG51bWJlciBvZiB0aGUgUHl0aG9uIHZlcnNpb247CisgICAgZm9yIFB5dGhvbiAzLjUgdGhpcyBpcyBgYDNgYC4KKworICAqIGBgPG1pbm9yPmBgIGlzIHRoZSBtaW5vciBudW1iZXIgb2YgdGhlIFB5dGhvbiB2ZXJzaW9uOworICAgIGZvciBQeXRob24gMy41IHRoaXMgaXMgYGA1YGAuCisKKyAgKiBgYDxhcmNoaXRlY3R1cmU+YGAgaXMgdGhlIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSB0aGUgZXh0ZW5zaW9uIG1vZHVsZQorICAgIHdhcyBidWlsdCB0byBydW4gb24uIEl0J3MgbW9zdCBjb21tb25seSBlaXRoZXIgYGBpMzg2YGAgZm9yIDMyLWJpdCBJbnRlbAorICAgIHBsYXRmb3JtcyBvciBgYHg4Nl82NGBgIGZvciA2NC1iaXQgSW50ZWwgKGFuZCBBTUQpIHBsYXRmb3Jtcy4KKworICAqIGBgPG9zPmBgIGlzIGFsd2F5cyBgYGxpbnV4LWdudWBgLCBleGNlcHQgZm9yIGV4dGVuc2lvbnMgYnVpbHQgdG8KKyAgICB0YWxrIHRvIHRoZSAzMi1iaXQgQUJJIG9uIDY0LWJpdCBwbGF0Zm9ybXMsIGluIHdoaWNoIGNhc2UgaXQgaXMKKyAgICBgYGxpbnV4LWdudTMyYGAgKGFuZCBgYDxhcmNoaXRlY3R1cmU+YGAgd2lsbCBiZSBgYHg4Nl82NGBgKS4KKworKiBPbiBXaW5kb3dzLCBleHRlbnNpb24gbW9kdWxlIGZpbGVuYW1lcyBlbmQgd2l0aAorICBgYDxkZWJ1Zz4uY3A8bWFqb3I+PG1pbm9yPi08cGxhdGZvcm0+LnB5ZGBgOgorCisgICogYGA8bWFqb3I+YGAgaXMgdGhlIG1ham9yIG51bWJlciBvZiB0aGUgUHl0aG9uIHZlcnNpb247CisgICAgZm9yIFB5dGhvbiAzLjUgdGhpcyBpcyBgYDNgYC4KKworICAqIGBgPG1pbm9yPmBgIGlzIHRoZSBtaW5vciBudW1iZXIgb2YgdGhlIFB5dGhvbiB2ZXJzaW9uOworICAgIGZvciBQeXRob24gMy41IHRoaXMgaXMgYGA1YGAuCisKKyAgKiBgYDxwbGF0Zm9ybT5gYCBpcyB0aGUgcGxhdGZvcm0gdGhlIGV4dGVuc2lvbiBtb2R1bGUgd2FzIGJ1aWx0IGZvciwKKyAgICBlaXRoZXIgYGB3aW4zMmBgIGZvciBXaW4zMiwgYGB3aW5fYW1kNjRgYCBmb3IgV2luNjQsIGBgd2luX2lhNjRgYCBmb3IKKyAgICBXaW5kb3dzIEl0YW5pdW0gNjQsIGFuZCBgYHdpbl9hcm1gYCBmb3IgV2luZG93cyBvbiBBUk0uCisKKyAgKiBJZiBidWlsdCBpbiBkZWJ1ZyBtb2RlLCBgYDxkZWJ1Zz5gYCB3aWxsIGJlIGBgX2RgYCwKKyAgICBvdGhlcndpc2UgaXQgd2lsbCBiZSBibGFuay4KKworKiBPbiBPUyBYIHBsYXRmb3JtcywgZXh0ZW5zaW9uIG1vZHVsZSBmaWxlbmFtZXMgbm93IGVuZCB3aXRoIGBgLWRhcndpbi5zb2BgLgorCisqIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIGV4dGVuc2lvbiBtb2R1bGUgZmlsZW5hbWVzIGFyZSB0aGUgc2FtZSBhcyB0aGV5IHdlcmUKKyAgd2l0aCBQeXRob24gMy40LgorCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworTmV3IEtleXdvcmRzCistLS0tLS0tLS0tLS0KKworYGBhc3luY2BgIGFuZCBgYGF3YWl0YGAgYXJlIG5vdCByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGFzIHZhcmlhYmxlLCBjbGFzcywKK2Z1bmN0aW9uIG9yIG1vZHVsZSBuYW1lcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYCBpbiBQeXRob24gMy41LCB0aGV5IHdpbGwKK2JlY29tZSBwcm9wZXIga2V5d29yZHMgaW4gUHl0aG9uIDMuNy4KKworCitEZXByZWNhdGVkIFB5dGhvbiBCZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmFpc2luZyA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24gaW5zaWRlIGEgZ2VuZXJhdG9yIHdpbGwgbm93IGdlbmVyYXRlIGEgc2lsZW50Cis6ZXhjOmBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYCwgd2hpY2ggd2lsbCBiZWNvbWUgYSBub24tc2lsZW50IGRlcHJlY2F0aW9uCit3YXJuaW5nIGluIFB5dGhvbiAzLjYgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaW4gUHl0aG9uIDMuNy4KK1NlZSA6cmVmOmBQRVAgNDc5OiBDaGFuZ2UgU3RvcEl0ZXJhdGlvbiBoYW5kbGluZyBpbnNpZGUgZ2VuZXJhdG9ycyA8d2hhdHNuZXctcGVwLTQ3OT5gCitmb3IgZGV0YWlscy4KKworCitVbnN1cHBvcnRlZCBPcGVyYXRpbmcgU3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2luZG93cyBYUCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IE1pY3Jvc29mdCwgdGh1cywgcGVyIDpQRVA6YDExYCwgQ1B5dGhvbgorMy41IGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5IHN1cHBvcnRlZCBvbiB0aGlzIE9TLgorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIG1vZHVsZXMsIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBmb3JtYXR0ZXJgIG1vZHVsZSBoYXMgbm93IGdyYWR1YXRlZCB0byBmdWxsIGRlcHJlY2F0aW9uIGFuZCBpcyBzdGlsbAorc2xhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjYuCisKK1RoZSA6ZnVuYzpgYXN5bmNpby5hc3luY2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorOmZ1bmM6YH5hc3luY2lvLmVuc3VyZV9mdXR1cmVgLgorCitUaGUgOm1vZDpgc210cGRgIG1vZHVsZSBoYXMgaW4gdGhlIHBhc3QgYWx3YXlzIGRlY29kZWQgdGhlIERBVEEgcG9ydGlvbiBvZgorZW1haWwgbWVzc2FnZXMgdXNpbmcgdGhlIGBgdXRmLThgYCBjb2RlYy4gIFRoaXMgY2FuIG5vdyBiZSBjb250cm9sbGVkIGJ5IHRoZQorbmV3ICpkZWNvZGVfZGF0YSoga2V5d29yZCB0byA6Y2xhc3M6YH5zbXRwZC5TTVRQU2VydmVyYC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCitgYFRydWVgYCwgYnV0IHRoaXMgZGVmYXVsdCBpcyBkZXByZWNhdGVkLiAgU3BlY2lmeSB0aGUgKmRlY29kZV9kYXRhKiBrZXl3b3JkCit3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHRvIGF2b2lkIHRoZSBkZXByZWNhdGlvbiB3YXJuaW5nLgorCitEaXJlY3RseSBhc3NpZ25pbmcgdmFsdWVzIHRvIHRoZSA6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwua2V5YCwKKzphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC52YWx1ZWAgYW5kCis6YXR0cjpgfmh0dHAuY29va2llcy5Nb3JzZWwuY29kZWRfdmFsdWVgIG9mIDpjbGFzczpgaHR0cC5jb29raWVzLk1vcnNlbGAKK29iamVjdHMgaXMgZGVwcmVjYXRlZC4gIFVzZSB0aGUgOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgbWV0aG9kCitpbnN0ZWFkLiAgSW4gYWRkaXRpb24sIHRoZSB1bmRvY3VtZW50ZWQgKkxlZ2FsQ2hhcnMqIHBhcmFtZXRlciBvZgorOm1ldGg6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgaXMgZGVwcmVjYXRlZCwgYW5kIGlzIG5vdyBpZ25vcmVkLgorCitQYXNzaW5nIGEgZm9ybWF0IHN0cmluZyBhcyBrZXl3b3JkIGFyZ3VtZW50ICpmb3JtYXRfc3RyaW5nKiB0byB0aGUKKzptZXRoOmB+c3RyaW5nLkZvcm1hdHRlci5mb3JtYXRgIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmBzdHJpbmcuRm9ybWF0dGVyYAorY2xhc3MgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjM2NzFgLikKKworVGhlIDpmdW5jOmBwbGF0Zm9ybS5kaXN0YCBhbmQgOmZ1bmM6YHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbmAgZnVuY3Rpb25zCithcmUgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43LiAgTGludXggZGlzdHJpYnV0aW9ucyB1c2UKK3RvbyBtYW55IGRpZmZlcmVudCB3YXlzIG9mIGRlc2NyaWJpbmcgdGhlbXNlbHZlcywgc28gdGhlIGZ1bmN0aW9uYWxpdHkgaXMKK2xlZnQgdG8gYSBwYWNrYWdlLgorKENvbnRyaWJ1dGVkIGJ5IFZhanJhc2t5IEtvayBhbmQgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDEzMjJgLikKKworVGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIGBgZnJvbV9mdW5jdGlvbmBgIGFuZCBgYGZyb21fYnVpbHRpbmBgIG1ldGhvZHMgb2YKKzpjbGFzczpgaW5zcGVjdC5TaWduYXR1cmVgIGFyZSBkZXByZWNhdGVkLiAgVXNlIHRoZSBuZXcKKzptZXRoOmBTaWduYXR1cmUuZnJvbV9jYWxsYWJsZSgpIDxpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlPmAKK21ldGhvZCBpbnN0ZWFkLiAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNDI0OGAuKQorCitUaGUgOmZ1bmM6YGluc3BlY3QuZ2V0YXJnc3BlY2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIHRvIGJlCityZW1vdmVkIGluIFB5dGhvbiAzLjYuICAoU2VlIDppc3N1ZTpgMjA0MzhgIGZvciBkZXRhaWxzLikKKworVGhlIDptb2Q6YGluc3BlY3RgIDpmdW5jOmB+aW5zcGVjdC5nZXRmdWxsYXJnc3BlY2AsCis6ZnVuYzpgfmluc3BlY3QuZ2V0YXJndmFsdWVzYCwgOmZ1bmM6YH5pbnNwZWN0LmdldGNhbGxhcmdzYCwKKzpmdW5jOmB+aW5zcGVjdC5nZXRhcmd2YWx1ZXNgLCA6ZnVuYzpgfmluc3BlY3QuZm9ybWF0YXJnc3BlY2AsIGFuZAorOmZ1bmM6YH5pbnNwZWN0LmZvcm1hdGFyZ3ZhbHVlc2AgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mCis6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIEFQSS4KKyhDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDIwNDM4YC4pCisKK1VzZSBvZiA6Y29uc3Q6YHJlLkxPQ0FMRWAgZmxhZyB3aXRoIHN0ciBwYXR0ZXJucyBvciA6Y29uc3Q6YHJlLkFTQ0lJYCBpcyBub3cKK2RlcHJlY2F0ZWQuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNDA3YC4pCisKK1VzZSBvZiB1bnJlY29nbml6ZWQgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIKK2luIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJucyBhbmQgcmVwbGFjZW1lbnQgcGF0dGVybnMgbm93IHJhaXNlcyBhCitkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzYyMmAuKQorCitUaGUgdW5kb2N1bWVudGVkIGFuZCB1bm9mZmljaWFsICp1c2VfbG9hZF90ZXN0cyogZGVmYXVsdCBhcmd1bWVudCBvZiB0aGUKKzptZXRoOmB1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGVgIG1ldGhvZCBub3cgaXMKK2RlcHJlY2F0ZWQgYW5kIGlnbm9yZWQuCisoQ29udHJpYnV0ZWQgYnkgUm9iZXJ0IENvbGxpbnMgYW5kIEJhcnJ5IEEuIFdhcnNhdyBpbiA6aXNzdWU6YDE2NjYyYC4pCisKKworUmVtb3ZlZAorPT09PT09PQorCitBUEkgYW5kIEZlYXR1cmUgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIG9ic29sZXRlIGFuZCBwcmV2aW91c2x5IGRlcHJlY2F0ZWQgQVBJcyBhbmQgZmVhdHVyZXMgaGF2ZSBiZWVuCityZW1vdmVkOgorCisqIFRoZSBgYF9fdmVyc2lvbl9fYGAgYXR0cmlidXRlIGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgZW1haWwgcGFja2FnZS4gIFRoZQorICBlbWFpbCBjb2RlIGhhc24ndCBiZWVuIHNoaXBwZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBzdGRsaWIgZm9yIGEgbG9uZyB0aW1lLAorICBhbmQgdGhlIGBgX192ZXJzaW9uX19gYCBzdHJpbmcgd2FzIG5vdCB1cGRhdGVkIGluIHRoZSBsYXN0IGZldyByZWxlYXNlcy4KKworKiBUaGUgaW50ZXJuYWwgYGBOZXRyY2BgIGNsYXNzIGluIHRoZSA6bW9kOmBmdHBsaWJgIG1vZHVsZSB3YXMgZGVwcmVjYXRlZCBpbgorICAzLjQsIGFuZCBoYXMgbm93IGJlZW4gcmVtb3ZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hdHQgQ2hhcHV0IGluIDppc3N1ZTpgNjYyM2AuKQorCisqIFRoZSBjb25jZXB0IG9mIGBgLnB5b2BgIGZpbGVzIGhhcyBiZWVuIHJlbW92ZWQuCisKKyogVGhlIEpvaW5hYmxlUXVldWUgY2xhc3MgaW4gdGhlIHByb3Zpc2lvbmFsIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSB3YXMKKyAgZGVwcmVjYXRlZCBpbiAzLjQuNCBhbmQgaXMgbm93IHJlbW92ZWQuCisgIChDb250cmlidXRlZCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcyBpbiA6aXNzdWU6YDIzNDY0YC4pCisKKworUG9ydGluZyB0byBQeXRob24gMy41Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCisKK0NoYW5nZXMgaW4gUHl0aG9uIGJlaGF2aW9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIER1ZSB0byBhbiBvdmVyc2lnaHQsIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zIGVycm9uZW91c2x5IGFjY2VwdGVkIHRoZQorICBmb2xsb3dpbmcgc3ludGF4OjoKKworICAgICAgZigxIGZvciB4IGluIFsxXSwgKmFyZ3MpCisgICAgICBmKDEgZm9yIHggaW4gWzFdLCAqKmt3YXJncykKKworICBQeXRob24gMy41IG5vdyBjb3JyZWN0bHkgcmFpc2VzIGEgOmV4YzpgU3ludGF4RXJyb3JgLCBhcyBnZW5lcmF0b3IKKyAgZXhwcmVzc2lvbnMgbXVzdCBiZSBwdXQgaW4gcGFyZW50aGVzZXMgaWYgbm90IGEgc29sZSBhcmd1bWVudCB0byBhIGZ1bmN0aW9uLgorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6cGVwOmA0NzVgOiBTeXN0ZW0gY2FsbHMgYXJlIG5vdyByZXRyaWVkIHdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgaW5zdGVhZAorICBvZiByYWlzaW5nIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QKKyAgcmFpc2UgYW4gZXhjZXB0aW9uLgorCisqIEJlZm9yZSBQeXRob24gMy41LCBhIDpjbGFzczpgZGF0ZXRpbWUudGltZWAgb2JqZWN0IHdhcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlCisgIGlmIGl0IHJlcHJlc2VudGVkIG1pZG5pZ2h0IGluIFVUQy4gIFRoaXMgYmVoYXZpb3Igd2FzIGNvbnNpZGVyZWQgb2JzY3VyZSBhbmQKKyAgZXJyb3ItcHJvbmUgYW5kIGhhcyBiZWVuIHJlbW92ZWQgaW4gUHl0aG9uIDMuNS4gIFNlZSA6aXNzdWU6YDEzOTM2YCBmb3IgZnVsbAorICBkZXRhaWxzLgorCisqIFRoZSA6bWV0aDpgc3NsLlNTTFNvY2tldC5zZW5kKClgIG1ldGhvZCBub3cgcmFpc2VzIGVpdGhlcgorICA6ZXhjOmBzc2wuU1NMV2FudFJlYWRFcnJvcmAgb3IgOmV4Yzpgc3NsLlNTTFdhbnRXcml0ZUVycm9yYAorICBvbiBhIG5vbi1ibG9ja2luZyBzb2NrZXQgaWYgdGhlIG9wZXJhdGlvbiB3b3VsZCBibG9jay4gIFByZXZpb3VzbHksCisgIGl0IHdvdWxkIHJldHVybiBgYDBgYC4gIChDb250cmlidXRlZCBieSBOaWtvbGF1cyBSYXRoIGluIDppc3N1ZTpgMjA5NTFgLikKKworKiBUaGUgYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSBvZiBnZW5lcmF0b3IgaXMgbm93IHNldCBmcm9tIHRoZSBmdW5jdGlvbiBuYW1lLAorICBpbnN0ZWFkIG9mIGJlaW5nIHNldCBmcm9tIHRoZSBjb2RlIG5hbWUuIFVzZSBgYGdlbi5naV9jb2RlLmNvX25hbWVgYCB0bworICByZXRyaWV2ZSB0aGUgY29kZSBuYW1lLiBHZW5lcmF0b3JzIGFsc28gaGF2ZSBhIG5ldyBgYF9fcXVhbG5hbWVfX2BgCisgIGF0dHJpYnV0ZSwgdGhlIHF1YWxpZmllZCBuYW1lLCB3aGljaCBpcyBub3cgdXNlZCBmb3IgdGhlIHJlcHJlc2VudGF0aW9uCisgIG9mIGEgZ2VuZXJhdG9yIChgYHJlcHIoZ2VuKWBgKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMDVgLikKKworKiBUaGUgZGVwcmVjYXRlZCAic3RyaWN0IiBtb2RlIGFuZCBhcmd1bWVudCBvZiA6Y2xhc3M6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VyYCwKKyAgOm1ldGg6YEhUTUxQYXJzZXIuZXJyb3JgLCBhbmQgdGhlIDpleGM6YEhUTUxQYXJzZXJFcnJvcmAgZXhjZXB0aW9uIGhhdmUgYmVlbgorICByZW1vdmVkLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDE1MTE0YC4pCisgIFRoZSAqY29udmVydF9jaGFycmVmcyogYXJndW1lbnQgb2YgOmNsYXNzOmB+aHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAgaXMKKyAgbm93IGBgVHJ1ZWBgIGJ5IGRlZmF1bHQuICAoQ29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZyBpbiA6aXNzdWU6YDIxMDQ3YC4pCisKKyogQWx0aG91Z2ggaXQgaXMgbm90IGZvcm1hbGx5IHBhcnQgb2YgdGhlIEFQSSwgaXQgaXMgd29ydGggbm90aW5nIGZvciBwb3J0aW5nCisgIHB1cnBvc2VzIChpZTogZml4aW5nIHRlc3RzKSB0aGF0IGVycm9yIG1lc3NhZ2VzIHRoYXQgd2VyZSBwcmV2aW91c2x5IG9mIHRoZQorICBmb3JtICInc29tZXR5cGUnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCIgYXJlIG5vdyBvZiB0aGUgZm9ybSAiYQorICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIHJlcXVpcmVkLCBub3QgJ3NvbWV0eXBlJyIuCisgIChDb250cmlidXRlZCBieSBFemlvIE1lbG90dGkgaW4gOmlzc3VlOmAxNjUxOGAuKQorCisqIElmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBzZXQgdG8gYSBkaXJlY3RvcnkgdGhhdCBubyBsb25nZXIgZXhpc3RzIHRoZW4KKyAgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgIHdpbGwgbm8gbG9uZ2VyIGJlIHJhaXNlZCBhbmQgaW5zdGVhZAorICA6bWV0aDpgfmltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5maW5kX3NwZWNgIHdpbGwgcmV0dXJuIGBgTm9uZWBgCisgICoqd2l0aG91dCoqIGNhY2hpbmcgYGBOb25lYGAgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB3aGljaCBpcworICBkaWZmZXJlbnQgdGhhbiB0aGUgdHlwaWNhbCBjYXNlICg6aXNzdWU6YDIyODM0YCkuCisKKyogSFRUUCBzdGF0dXMgY29kZSBhbmQgbWVzc2FnZXMgZnJvbSA6bW9kOmBodHRwLmNsaWVudGAgYW5kIDptb2Q6YGh0dHAuc2VydmVyYAorICB3ZXJlIHJlZmFjdG9yZWQgaW50byBhIGNvbW1vbiA6Y2xhc3M6YH5odHRwLkhUVFBTdGF0dXNgIGVudW0uICBUaGUgdmFsdWVzIGluCisgIDptb2Q6YGh0dHAuY2xpZW50YCBhbmQgOm1vZDpgaHR0cC5zZXJ2ZXJgIHJlbWFpbiBhdmFpbGFibGUgZm9yIGJhY2t3YXJkcworICBjb21wYXRpYmlsaXR5LiAgKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgaW4gOmlzc3VlOmAyMTc5M2AuKQorCisqIFdoZW4gYW4gaW1wb3J0IGxvYWRlciBkZWZpbmVzIDptZXRoOmBpbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5leGVjX21vZHVsZWAKKyAgaXQgaXMgbm93IGV4cGVjdGVkIHRvIGFsc28gZGVmaW5lCisgIDptZXRoOmB+aW1wb3J0bGliLm1hY2hpbmVyeS5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgKHJhaXNlcyBhCisgIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2Agbm93LCB3aWxsIGJlIGFuIGVycm9yIGluIFB5dGhvbiAzLjYpLiBJZiB0aGUgbG9hZGVyCisgIGluaGVyaXRzIGZyb20gOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkxvYWRlcmAgdGhlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCBlbHNlCisgIHNpbXBseSBkZWZpbmUgOm1ldGg6YH5pbXBvcnRsaWIubWFjaGluZXJ5LkxvYWRlci5jcmVhdGVfbW9kdWxlYCB0byByZXR1cm4KKyAgYGBOb25lYGAuICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjMwMTRgLikKKworKiBUaGUgOmZ1bmM6YHJlLnNwbGl0YCBmdW5jdGlvbiBhbHdheXMgaWdub3JlZCBlbXB0eSBwYXR0ZXJuIG1hdGNoZXMsIHNvIHRoZQorICBgYCJ4KiJgYCBwYXR0ZXJuIHdvcmtlZCB0aGUgc2FtZSBhcyBgYCJ4KyJgYCwgYW5kIHRoZSBgYCJcYiJgYCBwYXR0ZXJuIG5ldmVyCisgIHdvcmtlZC4gIE5vdyA6ZnVuYzpgcmUuc3BsaXRgIHJhaXNlcyBhIHdhcm5pbmcgaWYgdGhlIHBhdHRlcm4gY291bGQgbWF0Y2gKKyAgYW4gZW1wdHkgc3RyaW5nLiAgRm9yIGNvbXBhdGliaWxpdHkgdXNlIHBhdHRlcm5zIHRoYXQgbmV2ZXIgbWF0Y2ggYW4gZW1wdHkKKyAgc3RyaW5nIChlLmcuIGBgIngrImBgIGluc3RlYWQgb2YgYGAieCoiYGApLiAgUGF0dGVybnMgdGhhdCBjb3VsZCBvbmx5IG1hdGNoCisgIGFuIGVtcHR5IHN0cmluZyAoc3VjaCBhcyBgYCJcYiJgYCkgbm93IHJhaXNlIGFuIGVycm9yLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyODE4YC4pCisKKyogVGhlIDpjbGFzczpgaHR0cC5jb29raWVzLk1vcnNlbGAgZGljdC1saWtlIGludGVyZmFjZSBoYXMgYmVlbiBtYWRlIHNlbGYKKyAgY29uc2lzdGVudDogIG1vcnNlbCBjb21wYXJpc29uIG5vdyB0YWtlcyB0aGUgOmF0dHI6YH5odHRwLmNvb2tpZXMuTW9yc2VsLmtleWAKKyAgYW5kIDphdHRyOmB+aHR0cC5jb29raWVzLk1vcnNlbC52YWx1ZWAgaW50byBhY2NvdW50LAorICA6bWV0aDpgfmh0dHAuY29va2llcy5Nb3JzZWwuY29weWAgbm93IHJlc3VsdHMgaW4gYQorICA6Y2xhc3M6YH5odHRwLmNvb2tpZXMuTW9yc2VsYCBpbnN0YW5jZSByYXRoZXIgdGhhbiBhIDpjbGFzczpgZGljdGAsIGFuZAorICA6bWV0aDpgfmh0dHAuY29va2llcy5Nb3JzZWwudXBkYXRlYCB3aWxsIG5vdyByYWlzZSBhbiBleGNlcHRpb24gaWYgYW55IG9mIHRoZQorICBrZXlzIGluIHRoZSB1cGRhdGUgZGljdGlvbmFyeSBhcmUgaW52YWxpZC4gIEluIGFkZGl0aW9uLCB0aGUgdW5kb2N1bWVudGVkCisgICpMZWdhbENoYXJzKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YH5odHRwLmNvb2tpZXMuTW9yc2VsLnNldGAgaXMgZGVwcmVjYXRlZCBhbmQKKyAgaXMgbm93IGlnbm9yZWQuICAoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBpbiA6aXNzdWU6YDIyMTFgLikKKworKiA6cGVwOmA0ODhgIGhhcyByZW1vdmVkIGBgLnB5b2BgIGZpbGVzIGZyb20gUHl0aG9uIGFuZCBpbnRyb2R1Y2VkIHRoZSBvcHRpb25hbAorICBgYG9wdC1gYCB0YWcgaW4gYGAucHljYGAgZmlsZSBuYW1lcy4gVGhlCisgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAgaGFzIGdhaW5lZCBhbiAqb3B0aW1pemF0aW9uKgorICBwYXJhbWV0ZXIgdG8gaGVscCBjb250cm9sIHRoZSBgYG9wdC1gYCB0YWcuIEJlY2F1c2Ugb2YgdGhpcywgdGhlCisgICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyIG9mIHRoZSBmdW5jdGlvbiBpcyBub3cgZGVwcmVjYXRlZC4gYC5weW9gIGZpbGVzCisgIGFyZSBhbHNvIG5vIGxvbmdlciBzdXBwb3J0ZWQgYXMgYSBmaWxlIGFyZ3VtZW50IHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgYW5kCisgIHRodXMgc2VydmUgbm8gcHVycG9zZSB3aGVuIGRpc3RyaWJ1dGVkIG9uIHRoZWlyIG93biAoaS5lLiBzb3VyY2xlc3MgY29kZQorICBkaXN0cmlidXRpb24pLiBEdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgbWFnaWMgbnVtYmVyIGZvciBieXRlY29kZSBoYXMgY2hhbmdlZAorICBpbiBQeXRob24gMy41LCBhbGwgb2xkIGAucHlvYCBmaWxlcyBmcm9tIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiBhcmUKKyAgaW52YWxpZCByZWdhcmRsZXNzIG9mIHRoaXMgUEVQLgorCisqIFRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSBub3cgZXhwb3J0cyB0aGUgOmRhdGE6YH5zb2NrZXQuQ0FOX1JBV19GRF9GUkFNRVNgCisgIGNvbnN0YW50IG9uIGxpbnV4IDMuNiBhbmQgZ3JlYXRlci4KKworKiBUaGUgOmZ1bmM6YHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kc2AgZnVuY3Rpb24gbm93IGludGVycHJldHMgdGhlIGlucHV0IHRpbWUKKyAgYXMgVVRDIGFuZCBub3QgYXMgbG9jYWwgdGltZSwgcGVyIDpyZmM6YDUyODBgLiAgQWRkaXRpb25hbGx5LCB0aGUgcmV0dXJuCisgIHZhbHVlIGlzIGFsd2F5cyBhbiA6Y2xhc3M6YGludGAuIChDb250cmlidXRlZCBieSBBa2lyYSBMaSBpbiA6aXNzdWU6YDE5OTQwYC4pCisKKyogVGhlIGBgcHlnZXR0ZXh0LnB5YGAgVG9vbCBub3cgdXNlcyB0aGUgc3RhbmRhcmQgK05OTk4gZm9ybWF0IGZvciB0aW1lem9uZXMgaW4KKyAgdGhlIFBPVC1DcmVhdGlvbi1EYXRlIGhlYWRlci4KKworKiBUaGUgOm1vZDpgc210cGxpYmAgbW9kdWxlIG5vdyB1c2VzIDpkYXRhOmBzeXMuc3RkZXJyYCBpbnN0ZWFkIG9mIHByZXZpb3VzCisgIG1vZHVsZSBsZXZlbCA6ZGF0YTpgc3RkZXJyYCB2YXJpYWJsZSBmb3IgZGVidWcgb3V0cHV0LiAgSWYgeW91ciAodGVzdCkKKyAgcHJvZ3JhbSBkZXBlbmRzIG9uIHBhdGNoaW5nIHRoZSBtb2R1bGUgbGV2ZWwgdmFyaWFibGUgdG8gY2FwdHVyZSB0aGUgZGVidWcKKyAgb3V0cHV0LCB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSBpdCB0byBjYXB0dXJlIHN5cy5zdGRlcnIgaW5zdGVhZC4KKworKiBUaGUgOm1ldGg6YHN0ci5zdGFydHN3aXRoYCBhbmQgOm1ldGg6YHN0ci5lbmRzd2l0aGAgbWV0aG9kcyBubyBsb25nZXIgcmV0dXJuCisgIGBgVHJ1ZWBgIHdoZW4gZmluZGluZyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGUgaW5kZXhlcyBhcmUgY29tcGxldGVseSBvdXQgb2YKKyAgcmFuZ2UuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI0Mjg0YC4pCisKKyogVGhlIDpmdW5jOmBpbnNwZWN0LmdldGRvY2AgZnVuY3Rpb24gbm93IHJldHVybnMgZG9jdW1lbnRhdGlvbiBzdHJpbmdzCisgIGluaGVyaXRlZCBmcm9tIGJhc2UgY2xhc3Nlcy4gIERvY3VtZW50YXRpb24gc3RyaW5ncyBubyBsb25nZXIgbmVlZCB0byBiZQorICBkdXBsaWNhdGVkIGlmIHRoZSBpbmhlcml0ZWQgZG9jdW1lbnRhdGlvbiBpcyBhcHByb3ByaWF0ZS4gIFRvIHN1cHByZXNzIGFuCisgIGluaGVyaXRlZCBzdHJpbmcsIGFuIGVtcHR5IHN0cmluZyBtdXN0IGJlIHNwZWNpZmllZCAob3IgdGhlIGRvY3VtZW50YXRpb24KKyAgbWF5IGJlIGZpbGxlZCBpbikuICBUaGlzIGNoYW5nZSBhZmZlY3RzIHRoZSBvdXRwdXQgb2YgdGhlIDptb2Q6YHB5ZG9jYAorICBtb2R1bGUgYW5kIHRoZSA6ZnVuYzpgaGVscGAgZnVuY3Rpb24uCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTU1ODJgLikKKworQ2hhbmdlcyBpbiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIHVuZG9jdW1lbnRlZCA6YzptZW1iZXI6YH5QeU1lbW9yeVZpZXdPYmplY3QuZm9ybWF0YCBtZW1iZXIgb2YgdGhlCisgIChub24tcHVibGljKSA6Yzp0eXBlOmBQeU1lbW9yeVZpZXdPYmplY3RgIHN0cnVjdHVyZSBoYXMgYmVlbiByZW1vdmVkLgorICBBbGwgZXh0ZW5zaW9ucyByZWx5aW5nIG9uIHRoZSByZWxldmFudCBwYXJ0cyBpbiBgYG1lbW9yeW9iamVjdC5oYGAKKyAgbXVzdCBiZSByZWJ1aWx0LgorCisqIFRoZSA6Yzp0eXBlOmBQeU1lbUFsbG9jYXRvcmAgc3RydWN0dXJlIHdhcyByZW5hbWVkIHRvCisgIDpjOnR5cGU6YFB5TWVtQWxsb2NhdG9yRXhgIGFuZCBhIG5ldyBgYGNhbGxvY2BgIGZpZWxkIHdhcyBhZGRlZC4KKworKiBSZW1vdmVkIG5vbi1kb2N1bWVudGVkIG1hY3JvIDpjOm1hY3JvOmBQeU9iamVjdF9SRVBSYCB3aGljaCBsZWFrZWQgcmVmZXJlbmNlcy4KKyAgVXNlIGZvcm1hdCBjaGFyYWN0ZXIgYGAlUmBgIGluIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YC1saWtlIGZ1bmN0aW9ucworICB0byBmb3JtYXQgdGhlIDpmdW5jOmByZXByYCBvZiB0aGUgb2JqZWN0LgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNDUzYC4pCisKKyogQmVjYXVzZSB0aGUgbGFjayBvZiB0aGUgOmF0dHI6YF9fbW9kdWxlX19gIGF0dHJpYnV0ZSBicmVha3MgcGlja2xpbmcgYW5kCisgIGludHJvc3BlY3Rpb24sIGEgZGVwcmVjYXRpb24gd2FybmluZyBub3cgaXMgcmFpc2VkIGZvciBidWlsdGluIHR5cGUgd2l0aG91dAorICB0aGUgOmF0dHI6YF9fbW9kdWxlX19gIGF0dHJpYnV0ZS4gIFdvdWxkIGJlIGFuIEF0dHJpYnV0ZUVycm9yIGluIGZ1dHVyZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMDIwNGAuKQorCisqIEFzIHBhcnQgb2YgOnBlcDpgNDkyYCBpbXBsZW1lbnRhdGlvbiwgYGB0cF9yZXNlcnZlZGBgIHNsb3Qgb2YKKyAgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YCB3YXMgcmVwbGFjZWQgd2l0aCBhCisgIDpjOm1lbWJlcjpgdHBfYXNfYXN5bmNgIHNsb3QuICBSZWZlciB0byA6cmVmOmBjb3JvLW9iamVjdHNgIGZvcgorICBuZXcgdHlwZXMsIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9ucy4KKwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggMjk5MDJlNC4uZWRiNTUwMiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjUucnN0CiAgICAzLjQucnN0CiAgICAzLjMucnN0CiAgICAzLjIucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggMDVjMzE4MS4uOTlmY2VhMCAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMjEsOCArMjEsMTEgQEAKIAogZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKIGRlY29yYXRvcnM6IGRlY29yYXRvcisKLWRlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKQorZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYgfCBhc3luY19mdW5jZGVmKQorCithc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmCiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCisKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCiB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKICAgICAgICBbJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmXV0KQEAgLTQwLDcgKzQzLDcgQEAKIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCi1hdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CithdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCiAjIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CkBAIC02NSw3ICs2OCw4IEBACiBub25sb2NhbF9zdG10OiAnbm9ubG9jYWwnIE5BTUUgKCcsJyBOQU1FKSoKIGFzc2VydF9zdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KIAotY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCitjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10Cithc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KQogaWZfc3RtdDogJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCiB3aGlsZV9zdG10OiAnd2hpbGUnIHRlc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQogZm9yX3N0bXQ6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3QgJzonIHN1aXRlIFsnZWxzZScgJzonIHN1aXRlXQpAQCAtODksNyArOTMsNyBAQAogbm90X3Rlc3Q6ICdub3QnIG5vdF90ZXN0IHwgY29tcGFyaXNvbgogY29tcGFyaXNvbjogZXhwciAoY29tcF9vcCBleHByKSoKICMgPD4gaXNuJ3QgYWN0dWFsbHkgYSB2YWxpZCBjb21wYXJpc29uIG9wZXJhdG9yIGluIFB5dGhvbi4gSXQncyBoZXJlIGZvciB0aGUKLSMgc2FrZSBvZiBhIF9fZnV0dXJlX18gaW1wb3J0IGRlc2NyaWJlZCBpbiBQRVAgNDAxCisjIHNha2Ugb2YgYSBfX2Z1dHVyZV9fIGltcG9ydCBkZXNjcmliZWQgaW4gUEVQIDQwMSAod2hpY2ggcmVhbGx5IHdvcmtzIDotKQogY29tcF9vcDogJzwnfCc+J3wnPT0nfCc+PSd8Jzw9J3wnPD4nfCchPSd8J2luJ3wnbm90JyAnaW4nfCdpcyd8J2lzJyAnbm90Jwogc3Rhcl9leHByOiAnKicgZXhwcgogZXhwcjogeG9yX2V4cHIgKCd8JyB4b3JfZXhwcikqCkBAIC05Nyw5ICsxMDEsMTAgQEAKIGFuZF9leHByOiBzaGlmdF9leHByICgnJicgc2hpZnRfZXhwcikqCiBzaGlmdF9leHByOiBhcml0aF9leHByICgoJzw8J3wnPj4nKSBhcml0aF9leHByKSoKIGFyaXRoX2V4cHI6IHRlcm0gKCgnKyd8Jy0nKSB0ZXJtKSoKLXRlcm06IGZhY3RvciAoKCcqJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCit0ZXJtOiBmYWN0b3IgKCgnKid8J0AnfCcvJ3wnJSd8Jy8vJykgZmFjdG9yKSoKIGZhY3RvcjogKCcrJ3wnLSd8J34nKSBmYWN0b3IgfCBwb3dlcgotcG93ZXI6IGF0b20gdHJhaWxlciogWycqKicgZmFjdG9yXQorcG93ZXI6IGF0b21fZXhwciBbJyoqJyBmYWN0b3JdCithdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgogYXRvbTogKCcoJyBbeWllbGRfZXhwcnx0ZXN0bGlzdF9jb21wXSAnKScgfAogICAgICAgICdbJyBbdGVzdGxpc3RfY29tcF0gJ10nIHwKICAgICAgICAneycgW2RpY3RvcnNldG1ha2VyXSAnfScgfApAQCAtMTExLDE3ICsxMTYsMjkgQEAKIHNsaWNlb3A6ICc6JyBbdGVzdF0KIGV4cHJsaXN0OiAoZXhwcnxzdGFyX2V4cHIpICgnLCcgKGV4cHJ8c3Rhcl9leHByKSkqIFsnLCddCiB0ZXN0bGlzdDogdGVzdCAoJywnIHRlc3QpKiBbJywnXQotZGljdG9yc2V0bWFrZXI6ICggKHRlc3QgJzonIHRlc3QgKGNvbXBfZm9yIHwgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pKSB8Ci0gICAgICAgICAgICAgICAgICAodGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSkpICkKK2RpY3RvcnNldG1ha2VyOiAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikKKyAgICAgICAgICAgICAgICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKSkqIFsnLCddKSkgfAorICAgICAgICAgICAgICAgICAgKCh0ZXN0IHwgc3Rhcl9leHByKQorICAgICAgICAgICAgICAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCBzdGFyX2V4cHIpKSogWycsJ10pKSApCiAKIGNsYXNzZGVmOiAnY2xhc3MnIE5BTUUgWycoJyBbYXJnbGlzdF0gJyknXSAnOicgc3VpdGUKIAotYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXQotICAgICAgICAgICAgICAgICAgICAgICAgIHwnKicgdGVzdCAoJywnIGFyZ3VtZW50KSogWycsJyAnKionIHRlc3RdIAotICAgICAgICAgICAgICAgICAgICAgICAgIHwnKionIHRlc3QpCithcmdsaXN0OiBhcmd1bWVudCAoJywnIGFyZ3VtZW50KSogIFsnLCddCisKICMgVGhlIHJlYXNvbiB0aGF0IGtleXdvcmRzIGFyZSB0ZXN0IG5vZGVzIGluc3RlYWQgb2YgTkFNRSBpcyB0aGF0IHVzaW5nIE5BTUUKICMgcmVzdWx0cyBpbiBhbiBhbWJpZ3VpdHkuIGFzdC5jIG1ha2VzIHN1cmUgaXQncyBhIE5BTUUuCi1hcmd1bWVudDogdGVzdCBbY29tcF9mb3JdIHwgdGVzdCAnPScgdGVzdCAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisjICJ0ZXN0ICc9JyB0ZXN0IiBpcyByZWFsbHkgImtleXdvcmQgJz0nIHRlc3QiLCBidXQgd2UgaGF2ZSBubyBzdWNoIHRva2VuLgorIyBUaGVzZSBuZWVkIHRvIGJlIGluIGEgc2luZ2xlIHJ1bGUgdG8gYXZvaWQgZ3JhbW1hciB0aGF0IGlzIGFtYmlndW91cworIyB0byBvdXIgTEwoMSkgcGFyc2VyLiBFdmVuIHRob3VnaCAndGVzdCcgaW5jbHVkZXMgJypleHByJyBpbiBzdGFyX2V4cHIsCisjIHdlIGV4cGxpY2l0bHkgbWF0Y2ggJyonIGhlcmUsIHRvbywgdG8gZ2l2ZSBpdCBwcm9wZXIgcHJlY2VkZW5jZS4KKyMgSWxsZWdhbCBjb21iaW5hdGlvbnMgYW5kIG9yZGVyaW5ncyBhcmUgYmxvY2tlZCBpbiBhc3QuYzoKKyMgbXVsdGlwbGUgKHRlc3QgY29tcF9mb3IpIGFyZ3VlbWVudHMgYXJlIGJsb2NrZWQ7IGtleXdvcmQgdW5wYWNraW5ncworIyB0aGF0IHByZWNlZGUgaXRlcmFibGUgdW5wYWNraW5ncyBhcmUgYmxvY2tlZDsgZXRjLgorYXJndW1lbnQ6ICggdGVzdCBbY29tcF9mb3JdIHwKKyAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAorICAgICAgICAgICAgJyoqJyB0ZXN0IHwKKyAgICAgICAgICAgICcqJyB0ZXN0ICkKKwogY29tcF9pdGVyOiBjb21wX2ZvciB8IGNvbXBfaWYKIGNvbXBfZm9yOiAnZm9yJyBleHBybGlzdCAnaW4nIG9yX3Rlc3QgW2NvbXBfaXRlcl0KIGNvbXBfaWY6ICdpZicgdGVzdF9ub2NvbmQgW2NvbXBfaXRlcl0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKaW5kZXggNjdkNjc3Yi4uM2JjMDE1ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24tYXN0LmgKKysrIGIvSW5jbHVkZS9QeXRob24tYXN0LmgKQEAgLTE1LDkgKzE1LDkgQEAKIAogdHlwZWRlZiBlbnVtIF9ib29sb3AgeyBBbmQ9MSwgT3I9MiB9IGJvb2xvcF90eTsKIAotdHlwZWRlZiBlbnVtIF9vcGVyYXRvciB7IEFkZD0xLCBTdWI9MiwgTXVsdD0zLCBEaXY9NCwgTW9kPTUsIFBvdz02LCBMU2hpZnQ9NywKLSAgICAgICAgICAgICAgICAgICAgICAgICBSU2hpZnQ9OCwgQml0T3I9OSwgQml0WG9yPTEwLCBCaXRBbmQ9MTEsIEZsb29yRGl2PTEyIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcl90eTsKK3R5cGVkZWYgZW51bSBfb3BlcmF0b3IgeyBBZGQ9MSwgU3ViPTIsIE11bHQ9MywgTWF0TXVsdD00LCBEaXY9NSwgTW9kPTYsIFBvdz03LAorICAgICAgICAgICAgICAgICAgICAgICAgIExTaGlmdD04LCBSU2hpZnQ9OSwgQml0T3I9MTAsIEJpdFhvcj0xMSwgQml0QW5kPTEyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEZsb29yRGl2PTEzIH0gb3BlcmF0b3JfdHk7CiAKIHR5cGVkZWYgZW51bSBfdW5hcnlvcCB7IEludmVydD0xLCBOb3Q9MiwgVUFkZD0zLCBVU3ViPTQgfSB1bmFyeW9wX3R5OwogCkBAIC02MywxMiArNjMsMTMgQEAKICAgICB9IHY7CiB9OwogCi1lbnVtIF9zdG10X2tpbmQge0Z1bmN0aW9uRGVmX2tpbmQ9MSwgQ2xhc3NEZWZfa2luZD0yLCBSZXR1cm5fa2luZD0zLAotICAgICAgICAgICAgICAgICAgRGVsZXRlX2tpbmQ9NCwgQXNzaWduX2tpbmQ9NSwgQXVnQXNzaWduX2tpbmQ9NiwgRm9yX2tpbmQ9NywKLSAgICAgICAgICAgICAgICAgIFdoaWxlX2tpbmQ9OCwgSWZfa2luZD05LCBXaXRoX2tpbmQ9MTAsIFJhaXNlX2tpbmQ9MTEsCi0gICAgICAgICAgICAgICAgICBUcnlfa2luZD0xMiwgQXNzZXJ0X2tpbmQ9MTMsIEltcG9ydF9raW5kPTE0LAotICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE1LCBHbG9iYWxfa2luZD0xNiwgTm9ubG9jYWxfa2luZD0xNywKLSAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0xOCwgUGFzc19raW5kPTE5LCBCcmVha19raW5kPTIwLCBDb250aW51ZV9raW5kPTIxfTsKK2VudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ9MiwgQ2xhc3NEZWZfa2luZD0zLAorICAgICAgICAgICAgICAgICAgUmV0dXJuX2tpbmQ9NCwgRGVsZXRlX2tpbmQ9NSwgQXNzaWduX2tpbmQ9NiwKKyAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEZvcl9raW5kPTgsIEFzeW5jRm9yX2tpbmQ9OSwgV2hpbGVfa2luZD0xMCwKKyAgICAgICAgICAgICAgICAgIElmX2tpbmQ9MTEsIFdpdGhfa2luZD0xMiwgQXN5bmNXaXRoX2tpbmQ9MTMsIFJhaXNlX2tpbmQ9MTQsCisgICAgICAgICAgICAgICAgICBUcnlfa2luZD0xNSwgQXNzZXJ0X2tpbmQ9MTYsIEltcG9ydF9raW5kPTE3LAorICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE4LCBHbG9iYWxfa2luZD0xOSwgTm9ubG9jYWxfa2luZD0yMCwKKyAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0yMSwgUGFzc19raW5kPTIyLCBCcmVha19raW5kPTIzLCBDb250aW51ZV9raW5kPTI0fTsKIHN0cnVjdCBfc3RtdCB7CiAgICAgZW51bSBfc3RtdF9raW5kIGtpbmQ7CiAgICAgdW5pb24gewpAQCAtODIsMTAgKzgzLDE2IEBACiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lOworICAgICAgICAgICAgYXJndW1lbnRzX3R5IGFyZ3M7CisgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKKyAgICAgICAgICAgIGFzZGxfc2VxICpkZWNvcmF0b3JfbGlzdDsKKyAgICAgICAgICAgIGV4cHJfdHkgcmV0dXJuczsKKyAgICAgICAgfSBBc3luY0Z1bmN0aW9uRGVmOworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKICAgICAgICAgICAgIGFzZGxfc2VxICpiYXNlczsKICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkczsKLSAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3M7Ci0gICAgICAgICAgICBleHByX3R5IGt3YXJnczsKICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgYXNkbF9zZXEgKmRlY29yYXRvcl9saXN0OwogICAgICAgICB9IENsYXNzRGVmOwpAQCAtMTE3LDYgKzEyNCwxMyBAQAogICAgICAgICB9IEZvcjsKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgICAgIGV4cHJfdHkgaXRlcjsKKyAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OworICAgICAgICAgICAgYXNkbF9zZXEgKm9yZWxzZTsKKyAgICAgICAgfSBBc3luY0ZvcjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBleHByX3R5IHRlc3Q7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CkBAIC0xMzQsNiArMTQ4LDExIEBACiAgICAgICAgIH0gV2l0aDsKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBhc2RsX3NlcSAqaXRlbXM7CisgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKKyAgICAgICAgfSBBc3luY1dpdGg7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSBleGM7CiAgICAgICAgICAgICBleHByX3R5IGNhdXNlOwogICAgICAgICB9IFJhaXNlOwpAQCAtMTgwLDExICsxOTksMTEgQEAKIGVudW0gX2V4cHJfa2luZCB7Qm9vbE9wX2tpbmQ9MSwgQmluT3Bfa2luZD0yLCBVbmFyeU9wX2tpbmQ9MywgTGFtYmRhX2tpbmQ9NCwKICAgICAgICAgICAgICAgICAgIElmRXhwX2tpbmQ9NSwgRGljdF9raW5kPTYsIFNldF9raW5kPTcsIExpc3RDb21wX2tpbmQ9OCwKICAgICAgICAgICAgICAgICAgIFNldENvbXBfa2luZD05LCBEaWN0Q29tcF9raW5kPTEwLCBHZW5lcmF0b3JFeHBfa2luZD0xMSwKLSAgICAgICAgICAgICAgICAgIFlpZWxkX2tpbmQ9MTIsIFlpZWxkRnJvbV9raW5kPTEzLCBDb21wYXJlX2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBDYWxsX2tpbmQ9MTUsIE51bV9raW5kPTE2LCBTdHJfa2luZD0xNywgQnl0ZXNfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIE5hbWVDb25zdGFudF9raW5kPTE5LCBFbGxpcHNpc19raW5kPTIwLCBBdHRyaWJ1dGVfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIFN1YnNjcmlwdF9raW5kPTIyLCBTdGFycmVkX2tpbmQ9MjMsIE5hbWVfa2luZD0yNCwKLSAgICAgICAgICAgICAgICAgIExpc3Rfa2luZD0yNSwgVHVwbGVfa2luZD0yNn07CisgICAgICAgICAgICAgICAgICBBd2FpdF9raW5kPTEyLCBZaWVsZF9raW5kPTEzLCBZaWVsZEZyb21fa2luZD0xNCwKKyAgICAgICAgICAgICAgICAgIENvbXBhcmVfa2luZD0xNSwgQ2FsbF9raW5kPTE2LCBOdW1fa2luZD0xNywgU3RyX2tpbmQ9MTgsCisgICAgICAgICAgICAgICAgICBCeXRlc19raW5kPTE5LCBOYW1lQ29uc3RhbnRfa2luZD0yMCwgRWxsaXBzaXNfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTIyLCBTdWJzY3JpcHRfa2luZD0yMywgU3RhcnJlZF9raW5kPTI0LAorICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI1LCBMaXN0X2tpbmQ9MjYsIFR1cGxlX2tpbmQ9Mjd9Owogc3RydWN0IF9leHByIHsKICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0yNDcsNiArMjY2LDEwIEBACiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgfSBBd2FpdDsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogICAgICAgICB9IFlpZWxkOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKQEAgLTI2Myw4ICsyODYsNiBAQAogICAgICAgICAgICAgZXhwcl90eSBmdW5jOwogICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3M7CiAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHM7Ci0gICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzOwotICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAgICAgICAgIH0gQ2FsbDsKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CkBAIC00MDYsMTEgKzQyNywxNCBAQAogc3RtdF90eSBfUHlfRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHNfdHkgYXJncywgYXNkbF9zZXEgKiBib2R5LAogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgZXhwcl90eSByZXR1cm5zLCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgQ2xhc3NEZWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIF9QeV9DbGFzc0RlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSkKKyNkZWZpbmUgQXN5bmNGdW5jdGlvbkRlZihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIF9QeV9Bc3luY0Z1bmN0aW9uRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKK3N0bXRfdHkgX1B5X0FzeW5jRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHNfdHkgYXJncywgYXNkbF9zZXEgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBhc2RsX3NlcSAqIGRlY29yYXRvcl9saXN0LCBleHByX3R5IHJldHVybnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIENsYXNzRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgX1B5X0NsYXNzRGVmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykKIHN0bXRfdHkgX1B5X0NsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKiBiYXNlcywgYXNkbF9zZXEgKiBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcmFyZ3MsIGV4cHJfdHkga3dhcmdzLCBhc2RsX3NlcSAqIGJvZHksCi0gICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqIGRlY29yYXRvcl9saXN0LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgaW50IGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFJldHVybihhMCwgYTEsIGEyLCBhMykgX1B5X1JldHVybihhMCwgYTEsIGEyLCBhMykKIHN0bXRfdHkgX1B5X1JldHVybihleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBEZWxldGUoYTAsIGExLCBhMiwgYTMpIF9QeV9EZWxldGUoYTAsIGExLCBhMiwgYTMpCkBAIC00MjUsNiArNDQ5LDkgQEAKICNkZWZpbmUgRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQogc3RtdF90eSBfUHlfRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQXN5bmNGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Bc3luY0ZvcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikKK3N0bXRfdHkgX1B5X0FzeW5jRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKgorICAgICAgICAgICAgICAgICAgICAgb3JlbHNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBXaGlsZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfV2hpbGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X1doaWxlKGV4cHJfdHkgdGVzdCwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywKICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC00MzQsNiArNDYxLDkgQEAKICNkZWZpbmUgV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9XaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBBc3luY1dpdGgoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfQXN5bmNXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkKK3N0bXRfdHkgX1B5X0FzeW5jV2l0aChhc2RsX3NlcSAqIGl0ZW1zLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sIGludAorICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgUmFpc2UoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfUmFpc2UoYTAsIGExLCBhMiwgYTMsIGE0KQogc3RtdF90eSBfUHlfUmFpc2UoZXhwcl90eSBleGMsIGV4cHJfdHkgY2F1c2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNDk2LDYgKzUyNiw4IEBACiAjZGVmaW5lIEdlbmVyYXRvckV4cChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9HZW5lcmF0b3JFeHAoYTAsIGExLCBhMiwgYTMsIGE0KQogZXhwcl90eSBfUHlfR2VuZXJhdG9yRXhwKGV4cHJfdHkgZWx0LCBhc2RsX3NlcSAqIGdlbmVyYXRvcnMsIGludCBsaW5lbm8sIGludAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQXdhaXQoYTAsIGExLCBhMiwgYTMpIF9QeV9Bd2FpdChhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X0F3YWl0KGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFlpZWxkKGEwLCBhMSwgYTIsIGEzKSBfUHlfWWllbGQoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9ZaWVsZChleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBZaWVsZEZyb20oYTAsIGExLCBhMiwgYTMpIF9QeV9ZaWVsZEZyb20oYTAsIGExLCBhMiwgYTMpCkBAIC01MDQsMTAgKzUzNiw5IEBACiAjZGVmaW5lIENvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0NvbXBhcmUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0NvbXBhcmUoZXhwcl90eSBsZWZ0LCBhc2RsX2ludF9zZXEgKiBvcHMsIGFzZGxfc2VxICogY29tcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIENhbGwoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KSBfUHlfQ2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpCi1leHByX3R5IF9QeV9DYWxsKGV4cHJfdHkgZnVuYywgYXNkbF9zZXEgKiBhcmdzLCBhc2RsX3NlcSAqIGtleXdvcmRzLCBleHByX3R5Ci0gICAgICAgICAgICAgICAgIHN0YXJhcmdzLCBleHByX3R5IGt3YXJncywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKLSAgICAgICAgICAgICAgICAgKmFyZW5hKTsKKyNkZWZpbmUgQ2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQ2FsbChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQorZXhwcl90eSBfUHlfQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgaW50CisgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgTnVtKGEwLCBhMSwgYTIsIGEzKSBfUHlfTnVtKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfTnVtKG9iamVjdCBuLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9TdHIoYTAsIGExLCBhMiwgYTMpCmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi5oIGIvSW5jbHVkZS9QeXRob24uaAppbmRleCAyZGQ4MjkwLi44NThkYmQxIDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLmgKQEAgLTg1LDYgKzg1LDcgQEAKICNpbmNsdWRlICJ0dXBsZW9iamVjdC5oIgogI2luY2x1ZGUgImxpc3RvYmplY3QuaCIKICNpbmNsdWRlICJkaWN0b2JqZWN0LmgiCisjaW5jbHVkZSAib2RpY3RvYmplY3QuaCIKICNpbmNsdWRlICJlbnVtb2JqZWN0LmgiCiAjaW5jbHVkZSAic2V0b2JqZWN0LmgiCiAjaW5jbHVkZSAibWV0aG9kb2JqZWN0LmgiCkBAIC0xMTIsNiArMTEzLDcgQEAKICNpbmNsdWRlICJweWFyZW5hLmgiCiAjaW5jbHVkZSAibW9kc3VwcG9ydC5oIgogI2luY2x1ZGUgInB5dGhvbnJ1bi5oIgorI2luY2x1ZGUgInB5bGlmZWN5Y2xlLmgiCiAjaW5jbHVkZSAiY2V2YWwuaCIKICNpbmNsdWRlICJzeXNtb2R1bGUuaCIKICNpbmNsdWRlICJpbnRyY2hlY2suaCIKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCA2ZTg1MGI4Li44M2RiZjk0IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC0yNjYsNiArMjY2LDEyIEBACiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqY2FsbGFibGVfb2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKndoZXJlKTsKKyNlbmRpZgorCiAgICAgICAgLyoKICAgICAgQ2FsbCBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QsIGNhbGxhYmxlX29iamVjdCwgd2l0aAogICAgICBhcmd1bWVudHMgYW5kIGtleXdvcmRzIGFyZ3VtZW50cy4gIFRoZSAnYXJncycgYXJndW1lbnQgY2FuIG5vdCBiZQpAQCAtNjU4LDYgKzY2NCwxMiBAQAogICAgICBvMSpvMi4KICAgICAgICAqLwogCisgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlOdW1iZXJfTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOworCisgICAgICAgLyoKKyAgICAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIGV4cHJlc3Npb246IG8xIEAgbzIuCisgICAgICAgKi8KKwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TnVtYmVyX0Zsb29yRGl2aWRlKFB5T2JqZWN0ICpvMSwgUHlPYmplY3QgKm8yKTsKIAogICAgICAgIC8qCkBAIC04MzIsNiArODQ0LDEyIEBACiAgICAgIG8xICo9IG8yLgogICAgICAgICovCiAKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKm8xLCBQeU9iamVjdCAqbzIpOworCisgICAgICAgLyoKKyAgICAgVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgUHl0aG9uIGV4cHJlc3Npb246IG8xIEA9IG8yLgorICAgICAgICovCisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUoUHlPYmplY3QgKm8xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbzIpOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCmluZGV4IDE0OThiOGYuLjExZDVmNDIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCisrKyBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCkBAIC0yMSw4ICsyMSw4IEBACiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKIGV4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKIAotLyogVGhpcyBvbmUgZ2V0cyB0aGUgcmF3IGFyZ3VtZW50IGxpc3QuICovCi1leHRlcm4gUHlPYmplY3QqIF9QeV9ieXRlc19tYWtldHJhbnMoUHlPYmplY3QgKmFyZ3MpOworLyogVGhlIG1ha2V0cmFucygpIHN0YXRpYyBtZXRob2QuICovCitleHRlcm4gUHlPYmplY3QqIF9QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOwogCiAvKiBTaGFyZWQgX19kb2NfXyBzdHJpbmdzLiAqLwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2lzc3BhY2VfX2RvY19fW107CmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmggYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKaW5kZXggMGVlOGQzNi4uZTM3OWJhYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc29iamVjdC5oCisrKyBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaApAQCAtNjIsNiArNjIsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY2V2YWwuaCBiL0luY2x1ZGUvY2V2YWwuaAppbmRleCA0OTM3ZjJjLi5lYjFlZTQzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NldmFsLmgKKysrIGIvSW5jbHVkZS9jZXZhbC5oCkBAIC0yMyw2ICsyMyw4IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9TZXRQcm9maWxlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9TZXRUcmFjZShQeV90cmFjZWZ1bmMsIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NldENvcm91dGluZVdyYXBwZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0Q29yb3V0aW5lV3JhcHBlcih2b2lkKTsKICNlbmRpZgogCiBzdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwpAQCAtNDYsMTYgKzQ4LDE2IEBACiAKICAgIEluIFB5dGhvbiAzLjAsIHRoaXMgcHJvdGVjdGlvbiBoYXMgdHdvIGxldmVsczoKICAgICogbm9ybWFsIGFudGktcmVjdXJzaW9uIHByb3RlY3Rpb24gaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHJlY3Vyc2lvbiBsZXZlbAotICAgICBleGNlZWRzIHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBsaW1pdC4gSXQgcmFpc2VzIGEgUnVudGltZUVycm9yLCBhbmQgc2V0cworICAgICBleGNlZWRzIHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBsaW1pdC4gSXQgcmFpc2VzIGEgUmVjdXJzaW9uRXJyb3IsIGFuZCBzZXRzCiAgICAgIHRoZSAib3ZlcmZsb3dlZCIgZmxhZyBpbiB0aGUgdGhyZWFkIHN0YXRlIHN0cnVjdHVyZS4gVGhpcyBmbGFnCiAgICAgIHRlbXBvcmFyaWx5ICpkaXNhYmxlcyogdGhlIG5vcm1hbCBwcm90ZWN0aW9uOyB0aGlzIGFsbG93cyBjbGVhbnVwIGNvZGUKICAgICAgdG8gcG90ZW50aWFsbHkgb3V0Z3JvdyB0aGUgcmVjdXJzaW9uIGxpbWl0IHdoaWxlIHByb2Nlc3NpbmcgdGhlCi0gICAgIFJ1bnRpbWVFcnJvci4KKyAgICAgUmVjdXJzaW9uRXJyb3IuCiAgICAqICJsYXN0IGNoYW5jZSIgYW50aS1yZWN1cnNpb24gcHJvdGVjdGlvbiBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcmVjdXJzaW9uCiAgICAgIGxldmVsIGV4Y2VlZHMgImN1cnJlbnQgcmVjdXJzaW9uIGxpbWl0ICsgNTAiLiBCeSBjb25zdHJ1Y3Rpb24sIHRoaXMKICAgICAgcHJvdGVjdGlvbiBjYW4gb25seSBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgIm92ZXJmbG93ZWQiIGZsYWcgaXMgc2V0LiBJdAogICAgICBtZWFucyB0aGUgY2xlYW51cCBjb2RlIGhhcyBpdHNlbGYgZ29uZSBpbnRvIGFuIGluZmluaXRlIGxvb3AsIG9yIHRoZQotICAgICBSdW50aW1lRXJyb3IgaGFzIGJlZW4gbWlzdGFraW5nbHkgaWdub3JlZC4gV2hlbiB0aGlzIHByb3RlY3Rpb24gaXMKKyAgICAgUmVjdXJzaW9uRXJyb3IgaGFzIGJlZW4gbWlzdGFraW5nbHkgaWdub3JlZC4gV2hlbiB0aGlzIHByb3RlY3Rpb24gaXMKICAgICAgdHJpZ2dlcmVkLCB0aGUgaW50ZXJwcmV0ZXIgYWJvcnRzIHdpdGggYSBGYXRhbCBFcnJvci4KIAogICAgSW4gYWRkaXRpb24sIHRoZSAib3ZlcmZsb3dlZCIgZmxhZyBpcyBhdXRvbWF0aWNhbGx5IHJlc2V0IHdoZW4gdGhlCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvZGUuaCBiL0luY2x1ZGUvY29kZS5oCmluZGV4IDdjN2U1YmYuLjU2ZTZlYzEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZS5oCisrKyBiL0luY2x1ZGUvY29kZS5oCkBAIC0yMSw3ICsyMSwxMiBAQAogICAgIFB5T2JqZWN0ICpjb192YXJuYW1lczsJLyogdHVwbGUgb2Ygc3RyaW5ncyAobG9jYWwgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2ZyZWV2YXJzOwkvKiB0dXBsZSBvZiBzdHJpbmdzIChmcmVlIHZhcmlhYmxlIG5hbWVzKSAqLwogICAgIFB5T2JqZWN0ICpjb19jZWxsdmFyczsgICAgICAvKiB0dXBsZSBvZiBzdHJpbmdzIChjZWxsIHZhcmlhYmxlIG5hbWVzKSAqLwotICAgIC8qIFRoZSByZXN0IGRvZXNuJ3QgY291bnQgZm9yIGhhc2ggb3IgY29tcGFyaXNvbnMgKi8KKyAgICAvKiBUaGUgcmVzdCBhcmVuJ3QgdXNlZCBpbiBlaXRoZXIgaGFzaCBvciBjb21wYXJpc29ucywgZXhjZXB0IGZvcgorICAgICAgIGNvX25hbWUgKHVzZWQgaW4gYm90aCkgYW5kIGNvX2ZpcnN0bGluZW5vICh1c2VkIG9ubHkgaW4KKyAgICAgICBjb21wYXJpc29ucykuICBUaGlzIGlzIGRvbmUgdG8gcHJlc2VydmUgdGhlIG5hbWUgYW5kIGxpbmUgbnVtYmVyCisgICAgICAgZm9yIHRyYWNlYmFja3MgYW5kIGRlYnVnZ2Vyczsgb3RoZXJ3aXNlLCBjb25zdGFudCBkZS1kdXBsaWNhdGlvbgorICAgICAgIHdvdWxkIGNvbGxhcHNlIGlkZW50aWNhbCBmdW5jdGlvbnMvbGFtYmRhcyBkZWZpbmVkIG9uIGRpZmZlcmVudCBsaW5lcy4KKyAgICAqLwogICAgIHVuc2lnbmVkIGNoYXIgKmNvX2NlbGwyYXJnOyAvKiBNYXBzIGNlbGwgdmFycyB3aGljaCBhcmUgYXJndW1lbnRzLiAqLwogICAgIFB5T2JqZWN0ICpjb19maWxlbmFtZTsJLyogdW5pY29kZSAod2hlcmUgaXQgd2FzIGxvYWRlZCBmcm9tKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lOwkJLyogdW5pY29kZSAobmFtZSwgZm9yIHJlZmVyZW5jZSkgKi8KQEAgLTQ2LDYgKzUxLDExIEBACiAqLwogI2RlZmluZSBDT19OT0ZSRUUgICAgICAgMHgwMDQwCiAKKy8qIFRoZSBDT19DT1JPVVRJTkUgZmxhZyBpcyBzZXQgZm9yIGNvcm91dGluZSBmdW5jdGlvbnMgKGRlZmluZWQgd2l0aAorICAgYGBhc3luYyBkZWZgYCBrZXl3b3JkcykgKi8KKyNkZWZpbmUgQ09fQ09ST1VUSU5FICAgICAgICAgICAgMHgwMDgwCisjZGVmaW5lIENPX0lURVJBQkxFX0NPUk9VVElORSAgIDB4MDEwMAorCiAvKiBUaGVzZSBhcmUgbm8gbG9uZ2VyIHVzZWQuICovCiAjaWYgMAogI2RlZmluZSBDT19HRU5FUkFUT1JfQUxMT1dFRCAgICAweDEwMDAKQEAgLTU3LDYgKzY3LDcgQEAKICNkZWZpbmUgQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMgMHgyMDAwMAogCiAjZGVmaW5lIENPX0ZVVFVSRV9CQVJSWV9BU19CREZMICAweDQwMDAwCisjZGVmaW5lIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCAgMHg4MDAwMAogCiAvKiBUaGlzIHZhbHVlIGlzIGZvdW5kIGluIHRoZSBjb19jZWxsMmFyZyBhcnJheSB3aGVuIHRoZSBhc3NvY2lhdGVkIGNlbGwKICAgIHZhcmlhYmxlIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW4gYXJndW1lbnQuIFRoZSBtYXhpbXVtIG51bWJlciBvZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlY3MuaCBiL0luY2x1ZGUvY29kZWNzLmgKaW5kZXggYjMwODhlNC4uOWU0ZjMwNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlY3MuaAorKysgYi9JbmNsdWRlL2NvZGVjcy5oCkBAIC03MSw3ICs3MSw3IEBACiAgICBvYmplY3QgaXMgcGFzc2VkIHRocm91Z2ggdGhlIGVuY29kZXIgZnVuY3Rpb24gZm91bmQgZm9yIHRoZSBnaXZlbgogICAgZW5jb2RpbmcgdXNpbmcgdGhlIGVycm9yIGhhbmRsaW5nIG1ldGhvZCBkZWZpbmVkIGJ5IGVycm9ycy4gZXJyb3JzCiAgICBtYXkgYmUgTlVMTCB0byB1c2UgdGhlIGRlZmF1bHQgbWV0aG9kIGRlZmluZWQgZm9yIHRoZSBjb2RlYy4KLSAgIAorCiAgICBSYWlzZXMgYSBMb29rdXBFcnJvciBpbiBjYXNlIG5vIGVuY29kZXIgY2FuIGJlIGZvdW5kLgogCiAgKi8KQEAgLTg3LDcgKzg3LDcgQEAKICAgIG9iamVjdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGUgZGVjb2RlciBmdW5jdGlvbiBmb3VuZCBmb3IgdGhlIGdpdmVuCiAgICBlbmNvZGluZyB1c2luZyB0aGUgZXJyb3IgaGFuZGxpbmcgbWV0aG9kIGRlZmluZWQgYnkgZXJyb3JzLiBlcnJvcnMKICAgIG1heSBiZSBOVUxMIHRvIHVzZSB0aGUgZGVmYXVsdCBtZXRob2QgZGVmaW5lZCBmb3IgdGhlIGNvZGVjLgotICAgCisKICAgIFJhaXNlcyBhIExvb2t1cEVycm9yIGluIGNhc2Ugbm8gZW5jb2RlciBjYW4gYmUgZm91bmQuCiAKICAqLwpAQCAtMTQ1LDcgKzE0NSw3IEBACiAKIAogCi0vKiAtLS0gQ29kZWMgTG9va3VwIEFQSXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCisvKiAtLS0gQ29kZWMgTG9va3VwIEFQSXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgQWxsIEFQSXMgcmV0dXJuIGEgY29kZWMgb2JqZWN0IHdpdGggaW5jcmVtZW50ZWQgcmVmY291bnQgYW5kIGFyZQogICAgYmFzZWQgb24gX1B5Q29kZWNfTG9va3VwKCkuICBUaGUgc2FtZSBjb21tZW50cyB3L3IgdG8gdGhlIGVuY29kaW5nCkBAIC0yMjUsNiArMjI1LDkgQEAKIC8qIHJlcGxhY2UgdGhlIHVuaWNvZGUgZW5jb2RlIGVycm9yIHdpdGggYmFja3NsYXNoIGVzY2FwZXMgKFx4LCBcdSBhbmQgXFUpICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycyhQeU9iamVjdCAqZXhjKTsKIAorLyogcmVwbGFjZSB0aGUgdW5pY29kZSBlbmNvZGUgZXJyb3Igd2l0aCBiYWNrc2xhc2ggZXNjYXBlcyAoXE4sIFx4LCBcdSBhbmQgXFUpICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4Yyk7CisKIFB5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9oZXhkaWdpdHM7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21waWxlLmggYi9JbmNsdWRlL2NvbXBpbGUuaAppbmRleCBjNjY1MGQ3Li5lY2Q4ZGMxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBpbGUuaAorKysgYi9JbmNsdWRlL2NvbXBpbGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBGVVRVUkVfUFJJTlRfRlVOQ1RJT04gInByaW50X2Z1bmN0aW9uIgogI2RlZmluZSBGVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyAidW5pY29kZV9saXRlcmFscyIKICNkZWZpbmUgRlVUVVJFX0JBUlJZX0FTX0JERkwgImJhcnJ5X2FzX0ZMVUZMIgorI2RlZmluZSBGVVRVUkVfR0VORVJBVE9SX1NUT1AgImdlbmVyYXRvcl9zdG9wIgogCiBzdHJ1Y3QgX21vZDsgLyogRGVjbGFyZSB0aGUgZXhpc3RlbmNlIG9mIHRoaXMgdHlwZSAqLwogI2RlZmluZSBQeUFTVF9Db21waWxlKG1vZCwgcywgZiwgYXIpIFB5QVNUX0NvbXBpbGVFeChtb2QsIHMsIGYsIC0xLCBhcikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29tcGxleG9iamVjdC5oIGIvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmgKaW5kZXggMTkzNGYzYi4uY2I4YzUyYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmgKQEAgLTE0LDIxICsxNCwxMyBAQAogCiAvKiBPcGVyYXRpb25zIG9uIGNvbXBsZXggbnVtYmVycyBmcm9tIGNvbXBsZXhtb2R1bGUuYyAqLwogCi0jZGVmaW5lIGNfc3VtIF9QeV9jX3N1bQotI2RlZmluZSBjX2RpZmYgX1B5X2NfZGlmZgotI2RlZmluZSBjX25lZyBfUHlfY19uZWcKLSNkZWZpbmUgY19wcm9kIF9QeV9jX3Byb2QKLSNkZWZpbmUgY19xdW90IF9QeV9jX3F1b3QKLSNkZWZpbmUgY19wb3cgX1B5X2NfcG93Ci0jZGVmaW5lIGNfYWJzIF9QeV9jX2FicwotCi1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfc3VtKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX2RpZmYoUHlfY29tcGxleCwgUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfbmVnKFB5X2NvbXBsZXgpOwotUHlBUElfRlVOQyhQeV9jb21wbGV4KSBjX3Byb2QoUHlfY29tcGxleCwgUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKFB5X2NvbXBsZXgpIGNfcXVvdChQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKLVB5QVBJX0ZVTkMoUHlfY29tcGxleCkgY19wb3coUHlfY29tcGxleCwgUHlfY29tcGxleCk7Ci1QeUFQSV9GVU5DKGRvdWJsZSkgY19hYnMoUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKFB5X2NvbXBsZXgpIF9QeV9jX3N1bShQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2NfZGlmZihQeV9jb21wbGV4LCBQeV9jb21wbGV4KTsKK1B5QVBJX0ZVTkMoUHlfY29tcGxleCkgX1B5X2NfbmVnKFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19wcm9kKFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19xdW90KFB5X2NvbXBsZXgsIFB5X2NvbXBsZXgpOworUHlBUElfRlVOQyhQeV9jb21wbGV4KSBfUHlfY19wb3coUHlfY29tcGxleCwgUHlfY29tcGxleCk7CitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X2NfYWJzKFB5X2NvbXBsZXgpOwogI2VuZGlmCiAKIC8qIENvbXBsZXggb2JqZWN0IGludGVyZmFjZSAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBlZjEyMmJkLi4zMjBmOWVjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMjcsNiArMjcsMTEgQEAKICAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKIH0gUHlEaWN0T2JqZWN0OwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5RGljdE9iamVjdCAqZHZfZGljdDsKK30gX1B5RGljdFZpZXdPYmplY3Q7CisKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlEaWN0X1R5cGU7CkBAIC00MCw5ICs0NSw5IEBACiAjZGVmaW5lIFB5RGljdF9DaGVjayhvcCkgXAogICAgICAgICAgICAgICAgICBQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX0RJQ1RfU1VCQ0xBU1MpCiAjZGVmaW5lIFB5RGljdF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5RGljdF9UeXBlKQotI2RlZmluZSBQeURpY3RLZXlzX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5RGljdEtleXNfVHlwZSkKLSNkZWZpbmUgUHlEaWN0SXRlbXNfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlEaWN0SXRlbXNfVHlwZSkKLSNkZWZpbmUgUHlEaWN0VmFsdWVzX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5RGljdFZhbHVlc19UeXBlKQorI2RlZmluZSBQeURpY3RLZXlzX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeURpY3RLZXlzX1R5cGUpCisjZGVmaW5lIFB5RGljdEl0ZW1zX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeURpY3RJdGVtc19UeXBlKQorI2RlZmluZSBQeURpY3RWYWx1ZXNfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5RGljdFZhbHVlc19UeXBlKQogLyogVGhpcyBleGNsdWRlcyBWYWx1ZXMsIHNpbmNlIHRoZXkgYXJlIG5vdCBzZXRzLiAqLwogIyBkZWZpbmUgUHlEaWN0Vmlld1NldF9DaGVjayhvcCkgXAogICAgIChQeURpY3RLZXlzX0NoZWNrKG9wKSB8fCBQeURpY3RJdGVtc19DaGVjayhvcCkpCkBAIC01MCw2ICs1NSwxMCBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9OZXcodm9pZCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gpOworI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yKFB5T2JqZWN0ICpkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpOwpAQCAtNTgsNiArNjcsMTAgQEAKICAgICBQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZhdWx0b2JqKTsKICNlbmRpZgogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKml0ZW0pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0sIFB5X2hhc2hfdCBoYXNoKTsKKyNlbmRpZgogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RGljdF9DbGVhcihQeU9iamVjdCAqbXApOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9OZXh0KApAQCAtNjcsNiArODAsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZW5lcmljR2V0RGljdChQeU9iamVjdCAqLCB2b2lkICopOwogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTmV4dCgKICAgICBQeU9iamVjdCAqbXAsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5T2JqZWN0ICoqdmFsdWUsIFB5X2hhc2hfdCAqaGFzaCk7CitQeU9iamVjdCAqX1B5RGljdFZpZXdfTmV3KFB5T2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfS2V5cyhQeU9iamVjdCAqbXApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfVmFsdWVzKFB5T2JqZWN0ICptcCk7CkBAIC04MCw2ICs5NCw5IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeURpY3RfTWF5YmVVbnRyYWNrKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9IYXNPbmx5U3RyaW5nS2V5cyhQeU9iamVjdCAqbXApOwogUHlfc3NpemVfdCBfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpOworUHlPYmplY3QgKl9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqKTsKK1B5T2JqZWN0ICpfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeU9iamVjdCAqX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNkZWZpbmUgX1B5RGljdF9IYXNTcGxpdFRhYmxlKGQpICgoZCktPm1hX3ZhbHVlcyAhPSBOVUxMKQogCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CkBAIC05Nyw2ICsxMTQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm90aGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RWaWV3X0ludGVyc2VjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm90aGVyKTsKKyNlbmRpZgorCiAvKiBQeURpY3RfTWVyZ2VGcm9tU2VxMiB1cGRhdGVzL21lcmdlcyBmcm9tIGFuIGl0ZXJhYmxlIG9iamVjdCBwcm9kdWNpbmcKICAgIGl0ZXJhYmxlIG9iamVjdHMgb2YgbGVuZ3RoIDIuICBJZiBvdmVycmlkZSBpcyB0cnVlLCB0aGUgbGFzdCBvY2N1cnJlbmNlCiAgICBvZiBhIGtleSB3aW5zLCBlbHNlIHRoZSBmaXJzdC4gIFRoZSBQeXRob24gZGljdCBjb25zdHJ1Y3RvciBkaWN0KHNlcTIpCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCmluZGV4IDA5Mzk3NDQuLjAzMTU1ZDMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCkBAIC0zMiwxNyArMzIsNiBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZpbGVfTmV3U3RkUHJpbnRlcihpbnQpOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5U3RkUHJpbnRlcl9UeXBlOwotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwCi0vKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAotICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKLSAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCi0gKiBWaXN1YWwgU3R1ZGlvIDIwMDUKLSAqLwotaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOwotI2Vsc2UKLSNkZWZpbmUgX1B5VmVyaWZ5X2ZkKEEpICgxKSAvKiBkdW1teSAqLwotI2VuZGlmCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogLyogQSByb3V0aW5lIHRvIGNoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGNhbiBiZSBzZWxlY3QoKS1lZC4gKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZXV0aWxzLmggYi9JbmNsdWRlL2ZpbGV1dGlscy5oCmluZGV4IGU5YmFkODAuLmI0YTY4M2MgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZXV0aWxzLmgKKysrIGIvSW5jbHVkZS9maWxldXRpbHMuaApAQCAtNywzMCArNyw1OSBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKIAotUHlBUElfRlVOQyh3Y2hhcl90ICopIF9QeV9jaGFyMndjaGFyKAorUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0RlY29kZUxvY2FsZSgKICAgICBjb25zdCBjaGFyICphcmcsCiAgICAgc2l6ZV90ICpzaXplKTsKIAotUHlBUElfRlVOQyhjaGFyKikgX1B5X3djaGFyMmNoYXIoCitQeUFQSV9GVU5DKGNoYXIqKSBQeV9FbmNvZGVMb2NhbGUoCiAgICAgY29uc3Qgd2NoYXJfdCAqdGV4dCwKICAgICBzaXplX3QgKmVycm9yX3Bvcyk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfU1RBVCkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKLVB5QVBJX0ZVTkMoaW50KSBfUHlfd3N0YXQoCi0gICAgY29uc3Qgd2NoYXJfdCogcGF0aCwKLSAgICBzdHJ1Y3Qgc3RhdCAqYnVmKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgeworICAgIHVuc2lnbmVkIGxvbmcgc3RfZGV2OworICAgIF9faW50NjQgc3RfaW5vOworICAgIHVuc2lnbmVkIHNob3J0IHN0X21vZGU7CisgICAgaW50IHN0X25saW5rOworICAgIGludCBzdF91aWQ7CisgICAgaW50IHN0X2dpZDsKKyAgICB1bnNpZ25lZCBsb25nIHN0X3JkZXY7CisgICAgX19pbnQ2NCBzdF9zaXplOworICAgIHRpbWVfdCBzdF9hdGltZTsKKyAgICBpbnQgc3RfYXRpbWVfbnNlYzsKKyAgICB0aW1lX3Qgc3RfbXRpbWU7CisgICAgaW50IHN0X210aW1lX25zZWM7CisgICAgdGltZV90IHN0X2N0aW1lOworICAgIGludCBzdF9jdGltZV9uc2VjOworICAgIHVuc2lnbmVkIGxvbmcgc3RfZmlsZV9hdHRyaWJ1dGVzOworfTsKKyNlbHNlCisjICBkZWZpbmUgX1B5X3N0YXRfc3RydWN0IHN0YXQKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9TVEFUCitQeUFQSV9GVU5DKGludCkgX1B5X2ZzdGF0KAorICAgIGludCBmZCwKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpOworCitQeUFQSV9GVU5DKGludCkgX1B5X2ZzdGF0X25vcmFpc2UoCisgICAgaW50IGZkLAorICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnN0YXR1cyk7CisjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiBQeUFQSV9GVU5DKGludCkgX1B5X3N0YXQoCiAgICAgUHlPYmplY3QgKnBhdGgsCi0gICAgc3RydWN0IHN0YXQgKnN0YXRidWYpOwotI2VuZGlmCisgICAgc3RydWN0IHN0YXQgKnN0YXR1cyk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlfb3BlbigKICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKICAgICBpbnQgZmxhZ3MpOworCitQeUFQSV9GVU5DKGludCkgX1B5X29wZW5fbm9yYWlzZSgKKyAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKKyAgICBpbnQgZmxhZ3MpOwogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoRklMRSAqKSBfUHlfd2ZvcGVuKApAQCAtNDUsNiArNzQsMjEgQEAKICAgICBQeU9iamVjdCAqcGF0aCwKICAgICBjb25zdCBjaGFyICptb2RlKTsKIAorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfcmVhZCgKKyAgICBpbnQgZmQsCisgICAgdm9pZCAqYnVmLAorICAgIHNpemVfdCBjb3VudCk7CisKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5X3dyaXRlKAorICAgIGludCBmZCwKKyAgICBjb25zdCB2b2lkICpidWYsCisgICAgc2l6ZV90IGNvdW50KTsKKworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfd3JpdGVfbm9yYWlzZSgKKyAgICBpbnQgZmQsCisgICAgY29uc3Qgdm9pZCAqYnVmLAorICAgIHNpemVfdCBjb3VudCk7CisKICNpZmRlZiBIQVZFX1JFQURMSU5LCiBQeUFQSV9GVU5DKGludCkgX1B5X3dyZWFkbGluaygKICAgICBjb25zdCB3Y2hhcl90ICpwYXRoLApAQCAtNzAsOCArMTE0LDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzKTsKIAogUHlBUElfRlVOQyhpbnQpIF9QeV9kdXAoaW50IGZkKTsKKworI2lmbmRlZiBNU19XSU5ET1dTCitQeUFQSV9GVU5DKGludCkgX1B5X2dldF9ibG9ja2luZyhpbnQgZmQpOworCitQeUFQSV9GVU5DKGludCkgX1B5X3NldF9ibG9ja2luZyhpbnQgZmQsIGludCBibG9ja2luZyk7CisjZW5kaWYgICAvKiAhTVNfV0lORE9XUyAqLworCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAorLyogQSByb3V0aW5lIHRvIGNoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIG9uIFdpbmRvd3MuICBSZXR1cm5zIDAKKyAqIGFuZCBzZXRzIGVycm5vIHRvIEVCQURGIGlmIGl0IGlzbid0LiAgVGhpcyBpcyB0byBhdm9pZCBBc3NlcnRpb25zCisgKiBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBXaW5kb3dzIENSVCBiZWdpbm5pbmcgd2l0aAorICogVmlzdWFsIFN0dWRpbyAyMDA1CisgKi8KK2ludCBfUHlWZXJpZnlfZmQoaW50IGZkKTsKKworI2Vsc2UKKyNkZWZpbmUgX1B5VmVyaWZ5X2ZkKEEpICgxKSAvKiBkdW1teSAqLwogI2VuZGlmCiAKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCA2NWYxZWNmLi40YzcxODYxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTEwLDIxICsxMCwyNiBAQAogCiBzdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwogCisvKiBfUHlHZW5PYmplY3RfSEVBRCBkZWZpbmVzIHRoZSBpbml0aWFsIHNlZ21lbnQgb2YgZ2VuZXJhdG9yCisgICBhbmQgY29yb3V0aW5lIG9iamVjdHMuICovCisjZGVmaW5lIF9QeUdlbk9iamVjdF9IRUFEKHByZWZpeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0X0hFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBOb3RlOiBnaV9mcmFtZSBjYW4gYmUgTlVMTCBpZiB0aGUgZ2VuZXJhdG9yIGlzICJmaW5pc2hlZCIgKi8gICAgICAgICBcCisgICAgc3RydWN0IF9mcmFtZSAqcHJlZml4IyNfZnJhbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGFyIHByZWZpeCMjX3J1bm5pbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogVGhlIGNvZGUgb2JqZWN0IGJhY2tpbmcgdGhlIGdlbmVyYXRvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19jb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3dlYWtyZWZsaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIE5hbWUgb2YgdGhlIGdlbmVyYXRvci4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfbmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogUXVhbGlmaWVkIG5hbWUgb2YgdGhlIGdlbmVyYXRvci4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19xdWFsbmFtZTsKKwogdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKICAgICAvKiBUaGUgZ2lfIHByZWZpeCBpcyBpbnRlbmRlZCB0byByZW1pbmQgb2YgZ2VuZXJhdG9yLWl0ZXJhdG9yLiAqLwotCi0gICAgLyogTm90ZTogZ2lfZnJhbWUgY2FuIGJlIE5VTEwgaWYgdGhlIGdlbmVyYXRvciBpcyAiZmluaXNoZWQiICovCi0gICAgc3RydWN0IF9mcmFtZSAqZ2lfZnJhbWU7Ci0KLSAgICAvKiBUcnVlIGlmIGdlbmVyYXRvciBpcyBiZWluZyBleGVjdXRlZC4gKi8KLSAgICBjaGFyIGdpX3J1bm5pbmc7Ci0KLSAgICAvKiBUaGUgY29kZSBvYmplY3QgYmFja2luZyB0aGUgZ2VuZXJhdG9yICovCi0gICAgUHlPYmplY3QgKmdpX2NvZGU7Ci0KLSAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlLiAqLwotICAgIFB5T2JqZWN0ICpnaV93ZWFrcmVmbGlzdDsKKyAgICBfUHlHZW5PYmplY3RfSEVBRChnaSkKIH0gUHlHZW5PYmplY3Q7CiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUdlbl9UeXBlOwpAQCAtMzMsMTEgKzM4LDI4IEBACiAjZGVmaW5lIFB5R2VuX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlHZW5fVHlwZSkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUdlbl9OZXcoc3RydWN0IF9mcmFtZSAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlHZW5fTmV3V2l0aFF1YWxOYW1lKHN0cnVjdCBfZnJhbWUgKiwKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKIFB5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5R2VuX0ZpbmFsaXplKFB5T2JqZWN0ICpzZWxmKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgeworICAgIF9QeUdlbk9iamVjdF9IRUFEKGNyKQorfSBQeUNvcm9PYmplY3Q7CisKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUNvcm9fVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlDb3JvV3JhcHBlcl9UeXBlOworCisjZGVmaW5lIFB5Q29yb19DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5Q29yb19UeXBlKQorUHlPYmplY3QgKl9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbyk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29yb19OZXcoc3RydWN0IF9mcmFtZSAqLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworI2VuZGlmCisKKyN1bmRlZiBfUHlHZW5PYmplY3RfSEVBRAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbWluaXQuaCBiL0luY2x1ZGUvZ3JhbWluaXQuaAppbmRleCAzZWM5NDlhLi5kMDMwYmMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1pbml0LmgKKysrIGIvSW5jbHVkZS9ncmFtaW5pdC5oCkBAIC02LDc5ICs2LDgyIEBACiAjZGVmaW5lIGRlY29yYXRvciAyNTkKICNkZWZpbmUgZGVjb3JhdG9ycyAyNjAKICNkZWZpbmUgZGVjb3JhdGVkIDI2MQotI2RlZmluZSBmdW5jZGVmIDI2MgotI2RlZmluZSBwYXJhbWV0ZXJzIDI2MwotI2RlZmluZSB0eXBlZGFyZ3NsaXN0IDI2NAotI2RlZmluZSB0ZnBkZWYgMjY1Ci0jZGVmaW5lIHZhcmFyZ3NsaXN0IDI2NgotI2RlZmluZSB2ZnBkZWYgMjY3Ci0jZGVmaW5lIHN0bXQgMjY4Ci0jZGVmaW5lIHNpbXBsZV9zdG10IDI2OQotI2RlZmluZSBzbWFsbF9zdG10IDI3MAotI2RlZmluZSBleHByX3N0bXQgMjcxCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzIKLSNkZWZpbmUgYXVnYXNzaWduIDI3MwotI2RlZmluZSBkZWxfc3RtdCAyNzQKLSNkZWZpbmUgcGFzc19zdG10IDI3NQotI2RlZmluZSBmbG93X3N0bXQgMjc2Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc3Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc4Ci0jZGVmaW5lIHJldHVybl9zdG10IDI3OQotI2RlZmluZSB5aWVsZF9zdG10IDI4MAotI2RlZmluZSByYWlzZV9zdG10IDI4MQotI2RlZmluZSBpbXBvcnRfc3RtdCAyODIKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjgzCi0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NAotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODUKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg2Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODcKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OAotI2RlZmluZSBkb3R0ZWRfbmFtZSAyODkKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkwCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkxCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MgotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5MwotI2RlZmluZSBpZl9zdG10IDI5NAotI2RlZmluZSB3aGlsZV9zdG10IDI5NQotI2RlZmluZSBmb3Jfc3RtdCAyOTYKLSNkZWZpbmUgdHJ5X3N0bXQgMjk3Ci0jZGVmaW5lIHdpdGhfc3RtdCAyOTgKLSNkZWZpbmUgd2l0aF9pdGVtIDI5OQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMAotI2RlZmluZSBzdWl0ZSAzMDEKLSNkZWZpbmUgdGVzdCAzMDIKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzAzCi0jZGVmaW5lIGxhbWJkZWYgMzA0Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNQotI2RlZmluZSBvcl90ZXN0IDMwNgotI2RlZmluZSBhbmRfdGVzdCAzMDcKLSNkZWZpbmUgbm90X3Rlc3QgMzA4Ci0jZGVmaW5lIGNvbXBhcmlzb24gMzA5Ci0jZGVmaW5lIGNvbXBfb3AgMzEwCi0jZGVmaW5lIHN0YXJfZXhwciAzMTEKLSNkZWZpbmUgZXhwciAzMTIKLSNkZWZpbmUgeG9yX2V4cHIgMzEzCi0jZGVmaW5lIGFuZF9leHByIDMxNAotI2RlZmluZSBzaGlmdF9leHByIDMxNQotI2RlZmluZSBhcml0aF9leHByIDMxNgotI2RlZmluZSB0ZXJtIDMxNwotI2RlZmluZSBmYWN0b3IgMzE4Ci0jZGVmaW5lIHBvd2VyIDMxOQotI2RlZmluZSBhdG9tIDMyMAotI2RlZmluZSB0ZXN0bGlzdF9jb21wIDMyMQotI2RlZmluZSB0cmFpbGVyIDMyMgotI2RlZmluZSBzdWJzY3JpcHRsaXN0IDMyMwotI2RlZmluZSBzdWJzY3JpcHQgMzI0Ci0jZGVmaW5lIHNsaWNlb3AgMzI1Ci0jZGVmaW5lIGV4cHJsaXN0IDMyNgotI2RlZmluZSB0ZXN0bGlzdCAzMjcKLSNkZWZpbmUgZGljdG9yc2V0bWFrZXIgMzI4Ci0jZGVmaW5lIGNsYXNzZGVmIDMyOQotI2RlZmluZSBhcmdsaXN0IDMzMAotI2RlZmluZSBhcmd1bWVudCAzMzEKLSNkZWZpbmUgY29tcF9pdGVyIDMzMgotI2RlZmluZSBjb21wX2ZvciAzMzMKLSNkZWZpbmUgY29tcF9pZiAzMzQKLSNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzUKLSNkZWZpbmUgeWllbGRfZXhwciAzMzYKLSNkZWZpbmUgeWllbGRfYXJnIDMzNworI2RlZmluZSBhc3luY19mdW5jZGVmIDI2MgorI2RlZmluZSBmdW5jZGVmIDI2MworI2RlZmluZSBwYXJhbWV0ZXJzIDI2NAorI2RlZmluZSB0eXBlZGFyZ3NsaXN0IDI2NQorI2RlZmluZSB0ZnBkZWYgMjY2CisjZGVmaW5lIHZhcmFyZ3NsaXN0IDI2NworI2RlZmluZSB2ZnBkZWYgMjY4CisjZGVmaW5lIHN0bXQgMjY5CisjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAorI2RlZmluZSBzbWFsbF9zdG10IDI3MQorI2RlZmluZSBleHByX3N0bXQgMjcyCisjZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKKyNkZWZpbmUgYXVnYXNzaWduIDI3NAorI2RlZmluZSBkZWxfc3RtdCAyNzUKKyNkZWZpbmUgcGFzc19zdG10IDI3NgorI2RlZmluZSBmbG93X3N0bXQgMjc3CisjZGVmaW5lIGJyZWFrX3N0bXQgMjc4CisjZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5CisjZGVmaW5lIHJldHVybl9zdG10IDI4MAorI2RlZmluZSB5aWVsZF9zdG10IDI4MQorI2RlZmluZSByYWlzZV9zdG10IDI4MgorI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKKyNkZWZpbmUgaW1wb3J0X25hbWUgMjg0CisjZGVmaW5lIGltcG9ydF9mcm9tIDI4NQorI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKKyNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3CisjZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKKyNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKKyNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCisjZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCisjZGVmaW5lIGFzc2VydF9zdG10IDI5MworI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAorI2RlZmluZSBhc3luY19zdG10IDI5NQorI2RlZmluZSBpZl9zdG10IDI5NgorI2RlZmluZSB3aGlsZV9zdG10IDI5NworI2RlZmluZSBmb3Jfc3RtdCAyOTgKKyNkZWZpbmUgdHJ5X3N0bXQgMjk5CisjZGVmaW5lIHdpdGhfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9pdGVtIDMwMQorI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgorI2RlZmluZSBzdWl0ZSAzMDMKKyNkZWZpbmUgdGVzdCAzMDQKKyNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1CisjZGVmaW5lIGxhbWJkZWYgMzA2CisjZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNworI2RlZmluZSBvcl90ZXN0IDMwOAorI2RlZmluZSBhbmRfdGVzdCAzMDkKKyNkZWZpbmUgbm90X3Rlc3QgMzEwCisjZGVmaW5lIGNvbXBhcmlzb24gMzExCisjZGVmaW5lIGNvbXBfb3AgMzEyCisjZGVmaW5lIHN0YXJfZXhwciAzMTMKKyNkZWZpbmUgZXhwciAzMTQKKyNkZWZpbmUgeG9yX2V4cHIgMzE1CisjZGVmaW5lIGFuZF9leHByIDMxNgorI2RlZmluZSBzaGlmdF9leHByIDMxNworI2RlZmluZSBhcml0aF9leHByIDMxOAorI2RlZmluZSB0ZXJtIDMxOQorI2RlZmluZSBmYWN0b3IgMzIwCisjZGVmaW5lIHBvd2VyIDMyMQorI2RlZmluZSBhdG9tX2V4cHIgMzIyCisjZGVmaW5lIGF0b20gMzIzCisjZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0CisjZGVmaW5lIHRyYWlsZXIgMzI1CisjZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2CisjZGVmaW5lIHN1YnNjcmlwdCAzMjcKKyNkZWZpbmUgc2xpY2VvcCAzMjgKKyNkZWZpbmUgZXhwcmxpc3QgMzI5CisjZGVmaW5lIHRlc3RsaXN0IDMzMAorI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKKyNkZWZpbmUgY2xhc3NkZWYgMzMyCisjZGVmaW5lIGFyZ2xpc3QgMzMzCisjZGVmaW5lIGFyZ3VtZW50IDMzNAorI2RlZmluZSBjb21wX2l0ZXIgMzM1CisjZGVmaW5lIGNvbXBfZm9yIDMzNgorI2RlZmluZSBjb21wX2lmIDMzNworI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAorI2RlZmluZSB5aWVsZF9leHByIDMzOQorI2RlZmluZSB5aWVsZF9hcmcgMzQwCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1tYXIuaCBiL0luY2x1ZGUvZ3JhbW1hci5oCmluZGV4IGJhN2QxOWQuLjg1MTIwYjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbW1hci5oCisrKyBiL0luY2x1ZGUvZ3JhbW1hci5oCkBAIC0zNyw3ICszNyw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgaW50CQkgc19uYXJjczsKICAgICBhcmMJCSpzX2FyYzsJCS8qIEFycmF5IG9mIGFyY3MgKi8KLQkKKwogICAgIC8qIE9wdGlvbmFsIGFjY2VsZXJhdG9ycyAqLwogICAgIGludAkJIHNfbG93ZXI7CS8qIExvd2VzdCBsYWJlbCBpbmRleCAqLwogICAgIGludAkJIHNfdXBwZXI7CS8qIEhpZ2hlc3QgbGFiZWwgaW5kZXggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbGlzdG9iamVjdC5oIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKaW5kZXggNzRjZjQ2Zi4uZGFhNTEzZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9saXN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9saXN0b2JqZWN0LmgKQEAgLTcyLDYgKzcyLDcgQEAKICNkZWZpbmUgUHlMaXN0X0dFVF9JVEVNKG9wLCBpKSAoKChQeUxpc3RPYmplY3QgKikob3ApKS0+b2JfaXRlbVtpXSkKICNkZWZpbmUgUHlMaXN0X1NFVF9JVEVNKG9wLCBpLCB2KSAoKChQeUxpc3RPYmplY3QgKikob3ApKS0+b2JfaXRlbVtpXSA9ICh2KSkKICNkZWZpbmUgUHlMaXN0X0dFVF9TSVpFKG9wKSAgICBQeV9TSVpFKG9wKQorI2RlZmluZSBfUHlMaXN0X0lURU1TKG9wKSAgICAgICgoKFB5TGlzdE9iamVjdCAqKShvcCkpLT5vYl9pdGVtKQogI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCBmZjQzMzA5Li5hZWQ1OWNlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtMTk4LDYgKzE5OCw5IEBACiBQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcpIFB5T1Nfc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5T1Nfc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIAorLyogRm9yIHVzZSBieSB0aGUgZ2NkIGZ1bmN0aW9uIGluIG1hdGhtb2R1bGUuYyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0dDRChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmggYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCmluZGV4IDM4MmNhOTIuLmFiNWVlMDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZW1vcnlvYmplY3QuaApAQCAtNDUsOSArNDUsNiBAQAogfSBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0OwogCiAKLS8qIGRlcHJlY2F0ZWQsIHJlbW92ZWQgaW4gMy41ICovCi0jZGVmaW5lIF9QeV9NRU1PUllWSUVXX01BWF9GT1JNQVQgMyAvKiBtdXN0IGJlID49IDMgKi8KLQogLyogbWVtb3J5dmlldyBzdGF0ZSBmbGFncyAqLwogI2RlZmluZSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRCAgICAweDAwMSAgLyogYWNjZXNzIHRvIG1hc3RlciBidWZmZXIgYmxvY2tlZCAqLwogI2RlZmluZSBfUHlfTUVNT1JZVklFV19DICAgICAgICAgICAweDAwMiAgLyogQy1jb250aWd1b3VzIGxheW91dCAqLwpAQCAtNjIsNyArNTksNiBAQAogICAgIGludCBmbGFnczsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXRlIGZsYWdzICovCiAgICAgUHlfc3NpemVfdCBleHBvcnRzOyAgICAgICAgICAgLyogbnVtYmVyIG9mIGJ1ZmZlciByZS1leHBvcnRzICovCiAgICAgUHlfYnVmZmVyIHZpZXc7ICAgICAgICAgICAgICAgLyogcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIHZpZXcgKi8KLSAgICBjaGFyIGZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFUXTsgLyogZGVwcmVjYXRlZCwgcmVtb3ZlZCBpbiAzLjUgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlfc3NpemVfdCBvYl9hcnJheVsxXTsgICAgICAgLyogc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMgKi8KIH0gUHlNZW1vcnlWaWV3T2JqZWN0OwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggM2NjMmVhOS4uZTJhZDgwNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC00Nyw3ICs0Nyw3IEBACiB0eXBlZGVmIHN0cnVjdCBQeU1ldGhvZERlZiBQeU1ldGhvZERlZjsKIAogI2RlZmluZSBQeUNGdW5jdGlvbl9OZXcoTUwsIFNFTEYpIFB5Q0Z1bmN0aW9uX05ld0V4KChNTCksIChTRUxGKSwgTlVMTCkKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fTmV3RXgoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKiwgCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX05ld0V4KFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogCiAvKiBGbGFnIHBhc3NlZCB0byBuZXdtZXRob2RvYmplY3QgKi8KQEAgLTY2LDcgKzY2LDcgQEAKIAogLyogTUVUSF9DT0VYSVNUIGFsbG93cyBhIG1ldGhvZCB0byBiZSBlbnRlcmVkIGV2ZW4gdGhvdWdoIGEgc2xvdCBoYXMKICAgIGFscmVhZHkgZmlsbGVkIHRoZSBlbnRyeS4gIFdoZW4gZGVmaW5lZCwgdGhlIGZsYWcgYWxsb3dzIGEgc2VwYXJhdGUKLSAgIG1ldGhvZCwgIl9fY29udGFpbnNfXyIgZm9yIGV4YW1wbGUsIHRvIGNvZXhpc3Qgd2l0aCBhIGRlZmluZWQgCisgICBtZXRob2QsICJfX2NvbnRhaW5zX18iIGZvciBleGFtcGxlLCB0byBjb2V4aXN0IHdpdGggYSBkZWZpbmVkCiAgICBzbG90IGxpa2Ugc3FfY29udGFpbnMuICovCiAKICNkZWZpbmUgTUVUSF9DT0VYSVNUICAgMHgwMDQwCkBAIC03Nyw2ICs3Nyw3IEBACiAgICAgUHlNZXRob2REZWYgKm1fbWw7IC8qIERlc2NyaXB0aW9uIG9mIHRoZSBDIGZ1bmN0aW9uIHRvIGNhbGwgKi8KICAgICBQeU9iamVjdCAgICAqbV9zZWxmOyAvKiBQYXNzZWQgYXMgJ3NlbGYnIGFyZyB0byB0aGUgQyBmdW5jLCBjYW4gYmUgTlVMTCAqLwogICAgIFB5T2JqZWN0ICAgICptX21vZHVsZTsgLyogVGhlIF9fbW9kdWxlX18gYXR0cmlidXRlLCBjYW4gYmUgYW55dGhpbmcgKi8KKyAgICBQeU9iamVjdCAgICAqbV93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gUHlDRnVuY3Rpb25PYmplY3Q7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCA1ZGUwNDU4Li44MjlhYWY4IDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMTIsMTMgKzEyLDEzIEBACiAvKiBJZiBQWV9TU0laRV9UX0NMRUFOIGlzIGRlZmluZWQsIGVhY2ggZnVuY3Rpb25zIHRyZWF0cyAjLXNwZWNpZmllcgogICAgdG8gbWVhbiBQeV9zc2l6ZV90ICovCiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgotI2RlZmluZSBQeUFyZ19QYXJzZQkJCV9QeUFyZ19QYXJzZV9TaXplVAotI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlCQlfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAotI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMJX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotI2RlZmluZSBQeUFyZ19WYVBhcnNlCQkJX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKLSNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMJX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0jZGVmaW5lIFB5X0J1aWxkVmFsdWUJCQlfUHlfQnVpbGRWYWx1ZV9TaXplVAotI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUJCQlfUHlfVmFCdWlsZFZhbHVlX1NpemVUCisjZGVmaW5lIFB5QXJnX1BhcnNlICAgICAgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlX1NpemVUCisjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjZGVmaW5lIFB5QXJnX1ZhUGFyc2UgICAgICAgICAgICAgICAgICAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNkZWZpbmUgUHlfQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgICBfUHlfQnVpbGRWYWx1ZV9TaXplVAorI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUgICAgICAgICAgICAgICAgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKICNlbHNlCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKICNlbmRpZgpAQCAtNTAsNiArNTAsMTMgQEAKICNkZWZpbmUgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgYykgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgI2MsIGMpCiAjZGVmaW5lIFB5TW9kdWxlX0FkZFN0cmluZ01hY3JvKG0sIGMpIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICNjLCBjKQogCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzA1MDAwMAorLyogTmV3IGluIDMuNSAqLworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX1NldERvY1N0cmluZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOworUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZEZ1bmN0aW9ucyhQeU9iamVjdCAqLCBQeU1ldGhvZERlZiAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9FeGVjRGVmKFB5T2JqZWN0ICptb2R1bGUsIFB5TW9kdWxlRGVmICpkZWYpOworI2VuZGlmCisKICNkZWZpbmUgUHlfQ0xFQU5VUF9TVVBQT1JURUQgMHgyMDAwMAogCiAjZGVmaW5lIFBZVEhPTl9BUElfVkVSU0lPTiAxMDEzCkBAIC02NywzNSArNzQsMzUgQEAKICAgIFBsZWFzZSBhZGQgYSBsaW5lIG9yIHR3byB0byB0aGUgdG9wIG9mIHRoaXMgbG9nIGZvciBlYWNoIEFQSQogICAgdmVyc2lvbiBjaGFuZ2U6CiAKLSAgIDIyLUZlYi0yMDA2ICBNdkwJMTAxMwlQRVAgMzUzIC0gbG9uZyBpbmRpY2VzIGZvciBzZXF1ZW5jZSBsZW5ndGhzCisgICAyMi1GZWItMjAwNiAgTXZMICAgICAxMDEzICAgIFBFUCAzNTMgLSBsb25nIGluZGljZXMgZm9yIHNlcXVlbmNlIGxlbmd0aHMKIAotICAgMTktQXVnLTIwMDIgIEd2UgkxMDEyCUNoYW5nZXMgdG8gc3RyaW5nIG9iamVjdCBzdHJ1Y3QgZm9yCi0gICAJCQkJaW50ZXJuaW5nIGNoYW5nZXMsIHNhdmluZyAzIGJ5dGVzLgorICAgMTktQXVnLTIwMDIgIEd2UiAgICAgMTAxMiAgICBDaGFuZ2VzIHRvIHN0cmluZyBvYmplY3Qgc3RydWN0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5pbmcgY2hhbmdlcywgc2F2aW5nIDMgYnl0ZXMuCiAKLSAgIDE3LUp1bC0yMDAxCUd2UgkxMDExCURlc2NyLWJyYW5jaCwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlCisgICAxNy1KdWwtMjAwMSAgR3ZSICAgICAxMDExICAgIERlc2NyLWJyYW5jaCwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlCiAKICAgIDI1LUphbi0yMDAxICBGTEQgICAgIDEwMTAgICAgUGFyYW1ldGVycyBhZGRlZCB0byBQeUNvZGVfTmV3KCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVfTmV3KCk7IFB5dGhvbiAyLjFhMgogCiAgICAxNC1NYXItMjAwMCAgR3ZSICAgICAxMDA5ICAgIFVuaWNvZGUgQVBJIGFkZGVkCiAKLSAgIDMtSmFuLTE5OTkJR3ZSCTEwMDcJRGVjaWRlZCB0byBjaGFuZ2UgYmFjayEgIChEb24ndCByZXVzZSAxMDA4ISkKKyAgIDMtSmFuLTE5OTkgICBHdlIgICAgIDEwMDcgICAgRGVjaWRlZCB0byBjaGFuZ2UgYmFjayEgIChEb24ndCByZXVzZSAxMDA4ISkKIAotICAgMy1EZWMtMTk5OAlHdlIJMTAwOAlQeXRob24gMS41LjJiMQorICAgMy1EZWMtMTk5OCAgIEd2UiAgICAgMTAwOCAgICBQeXRob24gMS41LjJiMQogCi0gICAxOC1KYW4tMTk5NwlHdlIJMTAwNwlzdHJpbmcgaW50ZXJuaW5nIGFuZCBvdGhlciBzcGVlZHVwcworICAgMTgtSmFuLTE5OTcgIEd2UiAgICAgMTAwNyAgICBzdHJpbmcgaW50ZXJuaW5nIGFuZCBvdGhlciBzcGVlZHVwcwogCi0gICAxMS1PY3QtMTk5NglHdlIJcmVuYW1lZCBQeV9FbGxpcHNlcyB0byBQeV9FbGxpcHNpcyA6LSgKKyAgIDExLU9jdC0xOTk2ICBHdlIgICAgIHJlbmFtZWQgUHlfRWxsaXBzZXMgdG8gUHlfRWxsaXBzaXMgOi0oCiAKLSAgIDMwLUp1bC0xOTk2CUd2UglTbGljZSBhbmQgZWxsaXBzZXMgc3ludGF4IGFkZGVkCisgICAzMC1KdWwtMTk5NiAgR3ZSICAgICBTbGljZSBhbmQgZWxsaXBzZXMgc3ludGF4IGFkZGVkCiAKLSAgIDIzLUp1bC0xOTk2CUd2UglGb3IgMS40IC0tIGJldHRlciBzYWZlIHRoYW4gc29ycnkgdGhpcyB0aW1lIDotKQorICAgMjMtSnVsLTE5OTYgIEd2UiAgICAgRm9yIDEuNCAtLSBiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5IHRoaXMgdGltZSA6LSkKIAotICAgNy1Ob3YtMTk5NQlHdlIJS2V5d29yZCBhcmd1bWVudHMgKHNob3VsZCd2ZSBiZWVuIGRvbmUgYXQgMS4zIDotKCApCisgICA3LU5vdi0xOTk1ICAgR3ZSICAgICBLZXl3b3JkIGFyZ3VtZW50cyAoc2hvdWxkJ3ZlIGJlZW4gZG9uZSBhdCAxLjMgOi0oICkKIAotICAgMTAtSmFuLTE5OTUJR3ZSCVJlbmFtZWQgZ2xvYmFscyB0byBuZXcgbmFtaW5nIHNjaGVtZQorICAgMTAtSmFuLTE5OTUgIEd2UiAgICAgUmVuYW1lZCBnbG9iYWxzIHRvIG5ldyBuYW1pbmcgc2NoZW1lCiAKLSAgIDktSmFuLTE5OTUJR3ZSCUluaXRpYWwgdmVyc2lvbiAoaW5jb21wYXRpYmxlIHdpdGggb2xkZXIgQVBJKQorICAgOS1KYW4tMTk5NSAgIEd2UiAgICAgSW5pdGlhbCB2ZXJzaW9uIChpbmNvbXBhdGlibGUgd2l0aCBvbGRlciBBUEkpCiAqLwogCiAvKiBUaGUgUFlUSE9OX0FCSV9WRVJTSU9OIGlzIGludHJvZHVjZWQgaW4gUEVQIDM4NC4gRm9yIHRoZSBsaWZldGltZSBvZgpAQCAtMTA1LDEwICsxMTIsMTEgQEAKICNkZWZpbmUgUFlUSE9OX0FCSV9TVFJJTkcgIjMiCiAKICNpZmRlZiBQeV9UUkFDRV9SRUZTCi0gLyogV2hlbiB3ZSBhcmUgdHJhY2luZyByZWZlcmVuY2UgY291bnRzLCByZW5hbWUgUHlNb2R1bGVfQ3JlYXRlMiBzbworIC8qIFdoZW4gd2UgYXJlIHRyYWNpbmcgcmVmZXJlbmNlIGNvdW50cywgcmVuYW1lIG1vZHVsZSBjcmVhdGlvbiBmdW5jdGlvbnMgc28KICAgICBtb2R1bGVzIGNvbXBpbGVkIHdpdGggaW5jb21wYXRpYmxlIHNldHRpbmdzIHdpbGwgZ2VuZXJhdGUgYQogICAgIGxpbmstdGltZSBlcnJvci4gKi8KICAjZGVmaW5lIFB5TW9kdWxlX0NyZWF0ZTIgUHlNb2R1bGVfQ3JlYXRlMlRyYWNlUmVmcworICNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMlRyYWNlUmVmcwogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfQ3JlYXRlMihzdHJ1Y3QgUHlNb2R1bGVEZWYqLApAQCAtMTE2LDEyICsxMjQsMjcgQEAKIAogI2lmZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5TW9kdWxlX0NyZWF0ZShtb2R1bGUpIFwKLQlQeU1vZHVsZV9DcmVhdGUyKG1vZHVsZSwgUFlUSE9OX0FCSV9WRVJTSU9OKQorICAgICAgICBQeU1vZHVsZV9DcmVhdGUyKG1vZHVsZSwgUFlUSE9OX0FCSV9WRVJTSU9OKQogI2Vsc2UKICNkZWZpbmUgUHlNb2R1bGVfQ3JlYXRlKG1vZHVsZSkgXAotCVB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQVBJX1ZFUlNJT04pCisgICAgICAgIFB5TW9kdWxlX0NyZWF0ZTIobW9kdWxlLCBQWVRIT05fQVBJX1ZFUlNJT04pCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKFB5TW9kdWxlRGVmICpkZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2R1bGVfYXBpX3ZlcnNpb24pOworCisjaWZkZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMobW9kdWxlLCBzcGVjKSBcCisgICAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKG1vZHVsZSwgc3BlYywgUFlUSE9OX0FCSV9WRVJTSU9OKQorI2Vsc2UKKyNkZWZpbmUgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMobW9kdWxlLCBzcGVjKSBcCisgICAgUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMyKG1vZHVsZSwgc3BlYywgUFlUSE9OX0FQSV9WRVJTSU9OKQorI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCisjZW5kaWYgLyogTmV3IGluIDMuNSAqLworCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKGNoYXIgKikgX1B5X1BhY2thZ2VDb250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaAppbmRleCBmMTE5MzY0Li4yMjlkN2ZhIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHVsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKQEAgLTMwLDYgKzMwLDEyIEBACiBQeUFQSV9GVU5DKHN0cnVjdCBQeU1vZHVsZURlZiopIFB5TW9kdWxlX0dldERlZihQeU9iamVjdCopOwogUHlBUElfRlVOQyh2b2lkKikgUHlNb2R1bGVfR2V0U3RhdGUoUHlPYmplY3QqKTsKIAorI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVEZWZfSW5pdChzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1vZHVsZURlZl9UeXBlOworI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IFB5TW9kdWxlRGVmX0Jhc2UgewogICBQeU9iamVjdF9IRUFECiAgIFB5T2JqZWN0KiAoKm1faW5pdCkodm9pZCk7CkBAIC00NCwxOSArNTAsMzUgQEAKICAgICBOVUxMLCAvKiBtX2NvcHkgKi8gICAgICAgICAgXAogICB9CiAKK3N0cnVjdCBQeU1vZHVsZURlZl9TbG90OworI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwNTAwMDAKKy8qIE5ldyBpbiAzLjUgKi8KK3R5cGVkZWYgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3R7CisgICAgaW50IHNsb3Q7CisgICAgdm9pZCAqdmFsdWU7Cit9IFB5TW9kdWxlRGVmX1Nsb3Q7CisKKyNkZWZpbmUgUHlfbW9kX2NyZWF0ZSAxCisjZGVmaW5lIFB5X21vZF9leGVjIDIKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBfUHlfbW9kX0xBU1RfU0xPVCAyCisjZW5kaWYKKworI2VuZGlmIC8qIE5ldyBpbiAzLjUgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgUHlNb2R1bGVEZWZ7CiAgIFB5TW9kdWxlRGVmX0Jhc2UgbV9iYXNlOwogICBjb25zdCBjaGFyKiBtX25hbWU7CiAgIGNvbnN0IGNoYXIqIG1fZG9jOwogICBQeV9zc2l6ZV90IG1fc2l6ZTsKICAgUHlNZXRob2REZWYgKm1fbWV0aG9kczsKLSAgaW5xdWlyeSBtX3JlbG9hZDsKKyAgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3QqIG1fc2xvdHM7CiAgIHRyYXZlcnNlcHJvYyBtX3RyYXZlcnNlOwogICBpbnF1aXJ5IG1fY2xlYXI7CiAgIGZyZWVmdW5jIG1fZnJlZTsKIH1QeU1vZHVsZURlZjsKIAotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ub2RlLmggYi9JbmNsdWRlL25vZGUuaAppbmRleCAyZTRlMmJhLi42NTRhZDg1IDEwMDY0NAotLS0gYS9JbmNsdWRlL25vZGUuaAorKysgYi9JbmNsdWRlL25vZGUuaApAQCAtMjYsNyArMjYsNyBAQAogCiAvKiBOb2RlIGFjY2VzcyBmdW5jdGlvbnMgKi8KICNkZWZpbmUgTkNIKG4pCQkoKG4pLT5uX25jaGlsZHJlbikKLQkKKwogI2RlZmluZSBDSElMRChuLCBpKQkoJihuKS0+bl9jaGlsZFtpXSkKICNkZWZpbmUgUkNISUxEKG4sIGkpCShDSElMRChuLCBOQ0gobikgKyBpKSkKICNkZWZpbmUgVFlQRShuKQkJKChuKS0+bl90eXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmplY3QuaCBiL0luY2x1ZGUvb2JqZWN0LmgKaW5kZXggNWY4NjJhYi4uNGQyODZlZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmplY3QuaAorKysgYi9JbmNsdWRlL29iamVjdC5oCkBAIC02NSw2ICs2NSw3IEBACiAjZXJyb3IgUHlfTElNSVRFRF9BUEkgaXMgaW5jb21wYXRpYmxlIHdpdGggUHlfREVCVUcsIFB5X1RSQUNFX1JFRlMsIGFuZCBQeV9SRUZfREVCVUcKICNlbmRpZgogCisKICNpZmRlZiBQeV9UUkFDRV9SRUZTCiAvKiBEZWZpbmUgcG9pbnRlcnMgdG8gc3VwcG9ydCBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBhbGwgbGl2ZSBoZWFwIG9iamVjdHMuICovCiAjZGVmaW5lIF9QeU9iamVjdF9IRUFEX0VYVFJBICAgICAgICAgICAgXApAQCAtMjc1LDYgKzI3Niw5IEBACiAgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX3RydWVfZGl2aWRlOwogCiAgICAgdW5hcnlmdW5jIG5iX2luZGV4OworCisgICAgYmluYXJ5ZnVuYyBuYl9tYXRyaXhfbXVsdGlwbHk7CisgICAgYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseTsKIH0gUHlOdW1iZXJNZXRob2RzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yOTcsNiArMzAxLDExIEBACiAgICAgb2Jqb2JqYXJncHJvYyBtcF9hc3Nfc3Vic2NyaXB0OwogfSBQeU1hcHBpbmdNZXRob2RzOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5hcnlmdW5jIGFtX2F3YWl0OworICAgIHVuYXJ5ZnVuYyBhbV9haXRlcjsKKyAgICB1bmFyeWZ1bmMgYW1fYW5leHQ7Cit9IFB5QXN5bmNNZXRob2RzOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgIGdldGJ1ZmZlcnByb2MgYmZfZ2V0YnVmZmVyOwpAQCAtMzQyLDcgKzM1MSw4IEBACiAgICAgcHJpbnRmdW5jIHRwX3ByaW50OwogICAgIGdldGF0dHJmdW5jIHRwX2dldGF0dHI7CiAgICAgc2V0YXR0cmZ1bmMgdHBfc2V0YXR0cjsKLSAgICB2b2lkICp0cF9yZXNlcnZlZDsgLyogZm9ybWVybHkga25vd24gYXMgdHBfY29tcGFyZSAqLworICAgIFB5QXN5bmNNZXRob2RzICp0cF9hc19hc3luYzsgLyogZm9ybWVybHkga25vd24gYXMgdHBfY29tcGFyZSAoUHl0aG9uIDIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0cF9yZXNlcnZlZCAoUHl0aG9uIDMpICovCiAgICAgcmVwcmZ1bmMgdHBfcmVwcjsKIAogICAgIC8qIE1ldGhvZCBzdWl0ZXMgZm9yIHN0YW5kYXJkIGNsYXNzZXMgKi8KQEAgLTQ0OSw2ICs0NTksNyBAQAogICAgIC8qIE5vdGU6IHRoZXJlJ3MgYSBkZXBlbmRlbmN5IG9uIHRoZSBvcmRlciBvZiB0aGVzZSBtZW1iZXJzCiAgICAgICAgaW4gc2xvdHB0cigpIGluIHR5cGVvYmplY3QuYyAuICovCiAgICAgUHlUeXBlT2JqZWN0IGh0X3R5cGU7CisgICAgUHlBc3luY01ldGhvZHMgYXNfYXN5bmM7CiAgICAgUHlOdW1iZXJNZXRob2RzIGFzX251bWJlcjsKICAgICBQeU1hcHBpbmdNZXRob2RzIGFzX21hcHBpbmc7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgYXNfc2VxdWVuY2U7IC8qIGFzX3NlcXVlbmNlIGNvbWVzIGFmdGVyIGFzX21hcHBpbmcsCkBAIC01NzIsMTMgKzU4Myw2IEBACiBQeUFQSV9GVU5DKGludCkgUHlfUmVwckVudGVyKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBQeV9SZXByTGVhdmUoUHlPYmplY3QgKik7CiAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLS8qIEhlbHBlciBmb3IgcGFzc2luZyBvYmplY3RzIHRvIHByaW50ZiBhbmQgdGhlIGxpa2UuCi0gICBMZWFrcyByZWZjb3VudHMuICBEb24ndCB1c2UgaXQhCi0qLwotI2RlZmluZSBQeU9iamVjdF9SRVBSKG9iaikgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKG9iaikpCi0jZW5kaWYKLQogLyogRmxhZyBiaXRzIGZvciBwcmludGluZzogKi8KICNkZWZpbmUgUHlfUFJJTlRfUkFXICAgIDEgICAgICAgLyogTm8gc3RyaW5nIHF1b3RlcyBldGMuICovCiAKQEAgLTcxNCwxMSArNzE4LDE3IEBACiAgICAgICAgICAgICAgICAgX1B5X05lZ2F0aXZlUmVmY291bnQoX19GSUxFX18sIF9fTElORV9fLCAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKShPUCkpOyAgICAgICAgIFwKIH0KKy8qIFB5X1JFRl9ERUJVRyBhbHNvIGNvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIHJlZmNvdW50cyBhbmQgbWVtb3J5IGJsb2NrCisgKiBhbGxvY2F0aW9ucyBhdCB0aGUgaW50ZXJhY3RpdmUgcHJvbXB0IGFuZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bgorICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeURlYnVnX1ByaW50VG90YWxSZWZzKHZvaWQpOworI2RlZmluZSBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpIF9QeURlYnVnX1ByaW50VG90YWxSZWZzKCkKICNlbHNlCiAjZGVmaW5lIF9QeV9JTkNfUkVGVE9UQUwKICNkZWZpbmUgX1B5X0RFQ19SRUZUT1RBTAogI2RlZmluZSBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIF9QeV9DSEVDS19SRUZDTlQoT1ApICAgIC8qIGEgc2VtaWNvbG9uICovOworI2RlZmluZSBfUFlfREVCVUdfUFJJTlRfVE9UQUxfUkVGUygpCiAjZW5kaWYgLyogUHlfUkVGX0RFQlVHICovCiAKICNpZmRlZiBDT1VOVF9BTExPQ1MKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggM2YyMWI3MC4uNjViNmQ5MSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTk1LDYgKzk1LDcgQEAKICAgIHRoZSByYXcgbWVtb3J5LgogKi8KIFB5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9NYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9GcmVlKHZvaWQgKnB0cik7CiAKQEAgLTMyMSw3ICszMjIsOCBAQAogICAgICAgICAoIVB5VHVwbGVfQ2hlY2tFeGFjdChvYmopIHx8IF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG9iaikpKQogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3QpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3Qgc2l6ZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXcoUHlUeXBlT2JqZWN0ICopOwogUHlBUElfRlVOQyhQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfR0NfVHJhY2sodm9pZCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvb2RpY3RvYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQ5NTkyCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9vZGljdG9iamVjdC5oCkBAIC0wLDAgKzEsNDMgQEAKKyNpZm5kZWYgUHlfT0RJQ1RPQkpFQ1RfSAorI2RlZmluZSBQeV9PRElDVE9CSkVDVF9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKworLyogT3JkZXJlZERpY3QgKi8KKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCit0eXBlZGVmIHN0cnVjdCBfb2RpY3RvYmplY3QgUHlPRGljdE9iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU9EaWN0SXRlcl9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5T0RpY3RLZXlzX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdEl0ZW1zX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlPRGljdFZhbHVlc19UeXBlOworCisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KKworI2RlZmluZSBQeU9EaWN0X0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeU9EaWN0X1R5cGUpCisjZGVmaW5lIFB5T0RpY3RfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeU9EaWN0X1R5cGUpCisjZGVmaW5lIFB5T0RpY3RfU0laRShvcCkgKChQeURpY3RPYmplY3QgKilvcCktPm1hX3VzZWQKKyNkZWZpbmUgUHlPRGljdF9IYXNLZXkob2QsIGtleSkgKFB5TWFwcGluZ19IYXNLZXkoUHlPYmplY3QgKilvZCwga2V5KQorCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T0RpY3RfTmV3KHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5T0RpY3RfU2V0SXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICppdGVtKTsKK1B5QVBJX0ZVTkMoaW50KSBQeU9EaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KTsKKworLyogd3JhcHBlcnMgYXJvdW5kIFB5RGljdCogZnVuY3Rpb25zICovCisjZGVmaW5lIFB5T0RpY3RfR2V0SXRlbShvZCwga2V5KSBQeURpY3RfR2V0SXRlbSgoUHlPYmplY3QgKilvZCwga2V5KQorI2RlZmluZSBQeU9EaWN0X0dldEl0ZW1XaXRoRXJyb3Iob2QsIGtleSkgXAorICAgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKW9kLCBrZXkpCisjZGVmaW5lIFB5T0RpY3RfQ29udGFpbnMob2QsIGtleSkgUHlEaWN0X0NvbnRhaW5zKChQeU9iamVjdCAqKW9kLCBrZXkpCisjZGVmaW5lIFB5T0RpY3RfU2l6ZShvZCkgUHlEaWN0X1NpemUoKFB5T2JqZWN0ICopb2QpCisjZGVmaW5lIFB5T0RpY3RfR2V0SXRlbVN0cmluZyhvZCwga2V5KSBcCisgICAgUHlEaWN0X0dldEl0ZW1TdHJpbmcoKFB5T2JqZWN0ICopb2QsIGtleSkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfT0RJQ1RPQkpFQ1RfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vcGNvZGUuaCBiL0luY2x1ZGUvb3Bjb2RlLmgKaW5kZXggMDkzNmYyZC4uM2Y5MTdmYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vcGNvZGUuaAorKysgYi9JbmNsdWRlL29wY29kZS5oCkBAIC0xLDMgKzEsNCBAQAorLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLwogI2lmbmRlZiBQeV9PUENPREVfSAogI2RlZmluZSBQeV9PUENPREVfSAogI2lmZGVmIF9fY3BsdXNwbHVzCkBAIC01LDE0MSArNiwxMjIgQEAKICNlbmRpZgogCiAKLS8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KLQotI2RlZmluZSBQT1BfVE9QICAgICAgICAgMQotI2RlZmluZSBST1RfVFdPICAgICAgICAgMgotI2RlZmluZSBST1RfVEhSRUUgICAgICAgMwotI2RlZmluZSBEVVBfVE9QICAgICAgICAgNAotI2RlZmluZSBEVVBfVE9QX1RXTyAgICAgNQotI2RlZmluZSBOT1AgICAgICAgICAgICAgOQotCi0jZGVmaW5lIFVOQVJZX1BPU0lUSVZFICAxMAotI2RlZmluZSBVTkFSWV9ORUdBVElWRSAgMTEKLSNkZWZpbmUgVU5BUllfTk9UICAgICAgIDEyCi0KLSNkZWZpbmUgVU5BUllfSU5WRVJUICAgIDE1Ci0KLSNkZWZpbmUgQklOQVJZX1BPV0VSICAgIDE5Ci0KLSNkZWZpbmUgQklOQVJZX01VTFRJUExZIDIwCi0KLSNkZWZpbmUgQklOQVJZX01PRFVMTyAgIDIyCi0jZGVmaW5lIEJJTkFSWV9BREQgICAgICAyMwotI2RlZmluZSBCSU5BUllfU1VCVFJBQ1QgMjQKLSNkZWZpbmUgQklOQVJZX1NVQlNDUiAgIDI1Ci0jZGVmaW5lIEJJTkFSWV9GTE9PUl9ESVZJREUgMjYKLSNkZWZpbmUgQklOQVJZX1RSVUVfRElWSURFIDI3Ci0jZGVmaW5lIElOUExBQ0VfRkxPT1JfRElWSURFIDI4Ci0jZGVmaW5lIElOUExBQ0VfVFJVRV9ESVZJREUgMjkKLQotI2RlZmluZSBTVE9SRV9NQVAgICAgICAgNTQKLSNkZWZpbmUgSU5QTEFDRV9BREQgICAgIDU1Ci0jZGVmaW5lIElOUExBQ0VfU1VCVFJBQ1QgICAgICAgIDU2Ci0jZGVmaW5lIElOUExBQ0VfTVVMVElQTFkgICAgICAgIDU3Ci0KLSNkZWZpbmUgSU5QTEFDRV9NT0RVTE8gIDU5Ci0jZGVmaW5lIFNUT1JFX1NVQlNDUiAgICA2MAotI2RlZmluZSBERUxFVEVfU1VCU0NSICAgNjEKLQotI2RlZmluZSBCSU5BUllfTFNISUZUICAgNjIKLSNkZWZpbmUgQklOQVJZX1JTSElGVCAgIDYzCi0jZGVmaW5lIEJJTkFSWV9BTkQgICAgICA2NAotI2RlZmluZSBCSU5BUllfWE9SICAgICAgNjUKLSNkZWZpbmUgQklOQVJZX09SICAgICAgIDY2Ci0jZGVmaW5lIElOUExBQ0VfUE9XRVIgICA2NwotI2RlZmluZSBHRVRfSVRFUiAgICAgICAgNjgKLSNkZWZpbmUgUFJJTlRfRVhQUiAgICAgIDcwCi0jZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgNzEKLSNkZWZpbmUgWUlFTERfRlJPTSAgICAgIDcyCi0KLSNkZWZpbmUgSU5QTEFDRV9MU0hJRlQgIDc1Ci0jZGVmaW5lIElOUExBQ0VfUlNISUZUICA3NgotI2RlZmluZSBJTlBMQUNFX0FORCAgICAgNzcKLSNkZWZpbmUgSU5QTEFDRV9YT1IgICAgIDc4Ci0jZGVmaW5lIElOUExBQ0VfT1IgICAgICA3OQotI2RlZmluZSBCUkVBS19MT09QICAgICAgODAKLSNkZWZpbmUgV0lUSF9DTEVBTlVQICAgIDgxCi0KLSNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgIDgzCi0jZGVmaW5lIElNUE9SVF9TVEFSICAgICA4NAotCi0jZGVmaW5lIFlJRUxEX1ZBTFVFICAgICA4NgotI2RlZmluZSBQT1BfQkxPQ0sgICAgICAgODcKLSNkZWZpbmUgRU5EX0ZJTkFMTFkgICAgIDg4Ci0jZGVmaW5lIFBPUF9FWENFUFQgICAgICA4OQotCi0jZGVmaW5lIEhBVkVfQVJHVU1FTlQgICA5MCAgICAgIC8qIE9wY29kZXMgZnJvbSBoZXJlIGhhdmUgYW4gYXJndW1lbnQ6ICovCi0KLSNkZWZpbmUgU1RPUkVfTkFNRSAgICAgIDkwICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9OQU1FICAgICA5MSAgICAgIC8qICIiICovCi0jZGVmaW5lIFVOUEFDS19TRVFVRU5DRSA5MiAgICAgIC8qIE51bWJlciBvZiBzZXF1ZW5jZSBpdGVtcyAqLwotI2RlZmluZSBGT1JfSVRFUiAgICAgICAgOTMKLSNkZWZpbmUgVU5QQUNLX0VYICAgICAgIDk0ICAgICAgLyogTnVtIGl0ZW1zIGJlZm9yZSB2YXJpYWJsZSBwYXJ0ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE51bSBpdGVtcyBhZnRlciB2YXJpYWJsZSBwYXJ0IDw8IDgpICovCi0KLSNkZWZpbmUgU1RPUkVfQVRUUiAgICAgIDk1ICAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9BVFRSICAgICA5NiAgICAgIC8qICIiICovCi0jZGVmaW5lIFNUT1JFX0dMT0JBTCAgICA5NyAgICAgIC8qICIiICovCi0jZGVmaW5lIERFTEVURV9HTE9CQUwgICA5OCAgICAgIC8qICIiICovCi0KLSNkZWZpbmUgTE9BRF9DT05TVCAgICAgIDEwMCAgICAgLyogSW5kZXggaW4gY29uc3QgbGlzdCAqLwotI2RlZmluZSBMT0FEX05BTUUgICAgICAgMTAxICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQlVJTERfVFVQTEUgICAgIDEwMiAgICAgLyogTnVtYmVyIG9mIHR1cGxlIGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX0xJU1QgICAgICAxMDMgICAgIC8qIE51bWJlciBvZiBsaXN0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX1NFVCAgICAgICAxMDQgICAgIC8qIE51bWJlciBvZiBzZXQgaXRlbXMgKi8KLSNkZWZpbmUgQlVJTERfTUFQICAgICAgIDEwNSAgICAgLyogQWx3YXlzIHplcm8gZm9yIG5vdyAqLwotI2RlZmluZSBMT0FEX0FUVFIgICAgICAgMTA2ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQ09NUEFSRV9PUCAgICAgIDEwNyAgICAgLyogQ29tcGFyaXNvbiBvcGVyYXRvciAqLwotI2RlZmluZSBJTVBPUlRfTkFNRSAgICAgMTA4ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgSU1QT1JUX0ZST00gICAgIDEwOSAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0KLSNkZWZpbmUgSlVNUF9GT1JXQVJEICAgIDExMCAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgKi8KLSNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgMTExICAgICAgICAvKiBUYXJnZXQgYnl0ZSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgY29kZSAqLwotI2RlZmluZSBKVU1QX0lGX1RSVUVfT1JfUE9QIDExMiAvKiAiIiAqLwotI2RlZmluZSBKVU1QX0FCU09MVVRFICAgMTEzICAgICAvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9GQUxTRSAxMTQgICAvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9UUlVFIDExNSAgICAvKiAiIiAqLwotCi0jZGVmaW5lIExPQURfR0xPQkFMICAgICAxMTYgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotCi0jZGVmaW5lIENPTlRJTlVFX0xPT1AgICAxMTkgICAgIC8qIFN0YXJ0IG9mIGxvb3AgKGFic29sdXRlKSAqLwotI2RlZmluZSBTRVRVUF9MT09QICAgICAgMTIwICAgICAvKiBUYXJnZXQgYWRkcmVzcyAocmVsYXRpdmUpICovCi0jZGVmaW5lIFNFVFVQX0VYQ0VQVCAgICAxMjEgICAgIC8qICIiICovCi0jZGVmaW5lIFNFVFVQX0ZJTkFMTFkgICAxMjIgICAgIC8qICIiICovCi0KLSNkZWZpbmUgTE9BRF9GQVNUICAgICAgIDEyNCAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAxMjUgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotI2RlZmluZSBERUxFVEVfRkFTVCAgICAgMTI2ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KLQotI2RlZmluZSBSQUlTRV9WQVJBUkdTICAgMTMwICAgICAvKiBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyIG9yIDMpICovCi0vKiBDQUxMX0ZVTkNUSU9OX1hYWCBvcGNvZGVzIGRlZmluZWQgYmVsb3cgZGVwZW5kIG9uIHRoaXMgZGVmaW5pdGlvbiAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgMTMxICAgICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgMTMyICAgICAvKiAjZGVmYXVsdHMgKyAja3dkZWZhdWx0czw8OCArICNhbm5vdGF0aW9uczw8MTYgKi8KLSNkZWZpbmUgQlVJTERfU0xJQ0UgICAgIDEzMyAgICAgLyogTnVtYmVyIG9mIGl0ZW1zICovCi0KLSNkZWZpbmUgTUFLRV9DTE9TVVJFICAgIDEzNCAgICAgLyogc2FtZSBhcyBNQUtFX0ZVTkNUSU9OICovCi0jZGVmaW5lIExPQURfQ0xPU1VSRSAgICAxMzUgICAgIC8qIExvYWQgZnJlZSB2YXJpYWJsZSBmcm9tIGNsb3N1cmUgKi8KLSNkZWZpbmUgTE9BRF9ERVJFRiAgICAgIDEzNiAgICAgLyogTG9hZCBhbmQgZGVyZWZlcmVuY2UgZnJvbSBjbG9zdXJlIGNlbGwgKi8gCi0jZGVmaW5lIFNUT1JFX0RFUkVGICAgICAxMzcgICAgIC8qIFN0b3JlIGludG8gY2VsbCAqLyAKLSNkZWZpbmUgREVMRVRFX0RFUkVGICAgIDEzOCAgICAgLyogRGVsZXRlIGNsb3N1cmUgY2VsbCAqLyAKLQotLyogVGhlIG5leHQgMyBvcGNvZGVzIG11c3QgYmUgY29udGlndW91cyBhbmQgc2F0aXNmeQotICAgKENBTExfRlVOQ1RJT05fVkFSIC0gQ0FMTF9GVU5DVElPTikgJiAzID09IDEgICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgICAgIDE0MCAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgICAgMTQxICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAgICAxNDIgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCi0KLSNkZWZpbmUgU0VUVVBfV0lUSCAxNDMKLQotLyogU3VwcG9ydCBmb3Igb3BhcmdzIG1vcmUgdGhhbiAxNiBiaXRzIGxvbmcgKi8KLSNkZWZpbmUgRVhURU5ERURfQVJHICAxNDQKLQotI2RlZmluZSBMSVNUX0FQUEVORCAgICAgMTQ1Ci0jZGVmaW5lIFNFVF9BREQgICAgICAgICAxNDYKLSNkZWZpbmUgTUFQX0FERCAgICAgICAgIDE0NwotCi0jZGVmaW5lIExPQURfQ0xBU1NERVJFRiAgIDE0OAorICAgIC8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KKyNkZWZpbmUgUE9QX1RPUCAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFJPVF9UV08gICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBST1RfVEhSRUUgICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgRFVQX1RPUCAgICAgICAgICAgICAgICAgICA0CisjZGVmaW5lIERVUF9UT1BfVFdPICAgICAgICAgICAgICAgNQorI2RlZmluZSBOT1AgICAgICAgICAgICAgICAgICAgICAgIDkKKyNkZWZpbmUgVU5BUllfUE9TSVRJVkUgICAgICAgICAgIDEwCisjZGVmaW5lIFVOQVJZX05FR0FUSVZFICAgICAgICAgICAxMQorI2RlZmluZSBVTkFSWV9OT1QgICAgICAgICAgICAgICAgMTIKKyNkZWZpbmUgVU5BUllfSU5WRVJUICAgICAgICAgICAgIDE1CisjZGVmaW5lIEJJTkFSWV9NQVRSSVhfTVVMVElQTFkgICAxNgorI2RlZmluZSBJTlBMQUNFX01BVFJJWF9NVUxUSVBMWSAgMTcKKyNkZWZpbmUgQklOQVJZX1BPV0VSICAgICAgICAgICAgIDE5CisjZGVmaW5lIEJJTkFSWV9NVUxUSVBMWSAgICAgICAgICAyMAorI2RlZmluZSBCSU5BUllfTU9EVUxPICAgICAgICAgICAgMjIKKyNkZWZpbmUgQklOQVJZX0FERCAgICAgICAgICAgICAgIDIzCisjZGVmaW5lIEJJTkFSWV9TVUJUUkFDVCAgICAgICAgICAyNAorI2RlZmluZSBCSU5BUllfU1VCU0NSICAgICAgICAgICAgMjUKKyNkZWZpbmUgQklOQVJZX0ZMT09SX0RJVklERSAgICAgIDI2CisjZGVmaW5lIEJJTkFSWV9UUlVFX0RJVklERSAgICAgICAyNworI2RlZmluZSBJTlBMQUNFX0ZMT09SX0RJVklERSAgICAgMjgKKyNkZWZpbmUgSU5QTEFDRV9UUlVFX0RJVklERSAgICAgIDI5CisjZGVmaW5lIEdFVF9BSVRFUiAgICAgICAgICAgICAgICA1MAorI2RlZmluZSBHRVRfQU5FWFQgICAgICAgICAgICAgICAgNTEKKyNkZWZpbmUgQkVGT1JFX0FTWU5DX1dJVEggICAgICAgIDUyCisjZGVmaW5lIElOUExBQ0VfQUREICAgICAgICAgICAgICA1NQorI2RlZmluZSBJTlBMQUNFX1NVQlRSQUNUICAgICAgICAgNTYKKyNkZWZpbmUgSU5QTEFDRV9NVUxUSVBMWSAgICAgICAgIDU3CisjZGVmaW5lIElOUExBQ0VfTU9EVUxPICAgICAgICAgICA1OQorI2RlZmluZSBTVE9SRV9TVUJTQ1IgICAgICAgICAgICAgNjAKKyNkZWZpbmUgREVMRVRFX1NVQlNDUiAgICAgICAgICAgIDYxCisjZGVmaW5lIEJJTkFSWV9MU0hJRlQgICAgICAgICAgICA2MgorI2RlZmluZSBCSU5BUllfUlNISUZUICAgICAgICAgICAgNjMKKyNkZWZpbmUgQklOQVJZX0FORCAgICAgICAgICAgICAgIDY0CisjZGVmaW5lIEJJTkFSWV9YT1IgICAgICAgICAgICAgICA2NQorI2RlZmluZSBCSU5BUllfT1IgICAgICAgICAgICAgICAgNjYKKyNkZWZpbmUgSU5QTEFDRV9QT1dFUiAgICAgICAgICAgIDY3CisjZGVmaW5lIEdFVF9JVEVSICAgICAgICAgICAgICAgICA2OAorI2RlZmluZSBHRVRfWUlFTERfRlJPTV9JVEVSICAgICAgNjkKKyNkZWZpbmUgUFJJTlRfRVhQUiAgICAgICAgICAgICAgIDcwCisjZGVmaW5lIExPQURfQlVJTERfQ0xBU1MgICAgICAgICA3MQorI2RlZmluZSBZSUVMRF9GUk9NICAgICAgICAgICAgICAgNzIKKyNkZWZpbmUgR0VUX0FXQUlUQUJMRSAgICAgICAgICAgIDczCisjZGVmaW5lIElOUExBQ0VfTFNISUZUICAgICAgICAgICA3NQorI2RlZmluZSBJTlBMQUNFX1JTSElGVCAgICAgICAgICAgNzYKKyNkZWZpbmUgSU5QTEFDRV9BTkQgICAgICAgICAgICAgIDc3CisjZGVmaW5lIElOUExBQ0VfWE9SICAgICAgICAgICAgICA3OAorI2RlZmluZSBJTlBMQUNFX09SICAgICAgICAgICAgICAgNzkKKyNkZWZpbmUgQlJFQUtfTE9PUCAgICAgICAgICAgICAgIDgwCisjZGVmaW5lIFdJVEhfQ0xFQU5VUF9TVEFSVCAgICAgICA4MQorI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKKyNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCisjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgICAgICAgICAgODYKKyNkZWZpbmUgUE9QX0JMT0NLICAgICAgICAgICAgICAgIDg3CisjZGVmaW5lIEVORF9GSU5BTExZICAgICAgICAgICAgICA4OAorI2RlZmluZSBQT1BfRVhDRVBUICAgICAgICAgICAgICAgODkKKyNkZWZpbmUgSEFWRV9BUkdVTUVOVCAgICAgICAgICAgIDkwCisjZGVmaW5lIFNUT1JFX05BTUUgICAgICAgICAgICAgICA5MAorI2RlZmluZSBERUxFVEVfTkFNRSAgICAgICAgICAgICAgOTEKKyNkZWZpbmUgVU5QQUNLX1NFUVVFTkNFICAgICAgICAgIDkyCisjZGVmaW5lIEZPUl9JVEVSICAgICAgICAgICAgICAgICA5MworI2RlZmluZSBVTlBBQ0tfRVggICAgICAgICAgICAgICAgOTQKKyNkZWZpbmUgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDk1CisjZGVmaW5lIERFTEVURV9BVFRSICAgICAgICAgICAgICA5NgorI2RlZmluZSBTVE9SRV9HTE9CQUwgICAgICAgICAgICAgOTcKKyNkZWZpbmUgREVMRVRFX0dMT0JBTCAgICAgICAgICAgIDk4CisjZGVmaW5lIExPQURfQ09OU1QgICAgICAgICAgICAgIDEwMAorI2RlZmluZSBMT0FEX05BTUUgICAgICAgICAgICAgICAxMDEKKyNkZWZpbmUgQlVJTERfVFVQTEUgICAgICAgICAgICAgMTAyCisjZGVmaW5lIEJVSUxEX0xJU1QgICAgICAgICAgICAgIDEwMworI2RlZmluZSBCVUlMRF9TRVQgICAgICAgICAgICAgICAxMDQKKyNkZWZpbmUgQlVJTERfTUFQICAgICAgICAgICAgICAgMTA1CisjZGVmaW5lIExPQURfQVRUUiAgICAgICAgICAgICAgIDEwNgorI2RlZmluZSBDT01QQVJFX09QICAgICAgICAgICAgICAxMDcKKyNkZWZpbmUgSU1QT1JUX05BTUUgICAgICAgICAgICAgMTA4CisjZGVmaW5lIElNUE9SVF9GUk9NICAgICAgICAgICAgIDEwOQorI2RlZmluZSBKVU1QX0ZPUldBUkQgICAgICAgICAgICAxMTAKKyNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgICAgMTExCisjZGVmaW5lIEpVTVBfSUZfVFJVRV9PUl9QT1AgICAgIDExMgorI2RlZmluZSBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMTMKKyNkZWZpbmUgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgMTE0CisjZGVmaW5lIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDExNQorI2RlZmluZSBMT0FEX0dMT0JBTCAgICAgICAgICAgICAxMTYKKyNkZWZpbmUgQ09OVElOVUVfTE9PUCAgICAgICAgICAgMTE5CisjZGVmaW5lIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDEyMAorI2RlZmluZSBTRVRVUF9FWENFUFQgICAgICAgICAgICAxMjEKKyNkZWZpbmUgU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIyCisjZGVmaW5lIExPQURfRkFTVCAgICAgICAgICAgICAgIDEyNAorI2RlZmluZSBTVE9SRV9GQVNUICAgICAgICAgICAgICAxMjUKKyNkZWZpbmUgREVMRVRFX0ZBU1QgICAgICAgICAgICAgMTI2CisjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAgICAgICAgIDEzMAorI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAxMzEKKyNkZWZpbmUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgMTMyCisjZGVmaW5lIEJVSUxEX1NMSUNFICAgICAgICAgICAgIDEzMworI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgICAgICAgICAxMzQKKyNkZWZpbmUgTE9BRF9DTE9TVVJFICAgICAgICAgICAgMTM1CisjZGVmaW5lIExPQURfREVSRUYgICAgICAgICAgICAgIDEzNgorI2RlZmluZSBTVE9SRV9ERVJFRiAgICAgICAgICAgICAxMzcKKyNkZWZpbmUgREVMRVRFX0RFUkVGICAgICAgICAgICAgMTM4CisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgIDE0MAorI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAxNDEKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgMTQyCisjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MworI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKKyNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CisjZGVmaW5lIFNFVF9BREQgICAgICAgICAgICAgICAgIDE0NgorI2RlZmluZSBNQVBfQUREICAgICAgICAgICAgICAgICAxNDcKKyNkZWZpbmUgTE9BRF9DTEFTU0RFUkVGICAgICAgICAgMTQ4CisjZGVmaW5lIEJVSUxEX0xJU1RfVU5QQUNLICAgICAgIDE0OQorI2RlZmluZSBCVUlMRF9NQVBfVU5QQUNLICAgICAgICAxNTAKKyNkZWZpbmUgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgMTUxCisjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDSyAgICAgIDE1MgorI2RlZmluZSBCVUlMRF9TRVRfVU5QQUNLICAgICAgICAxNTMKKyNkZWZpbmUgU0VUVVBfQVNZTkNfV0lUSCAgICAgICAgMTU0CiAKIC8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KICAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQpAQCAtMTQ4LDggKzEzMCw5IEBACiAjZGVmaW5lIEVYQ0VQVF9IQU5ETEVSIDI1NwogCiAKLWVudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwgUHlDbXBfR1Q9UHlfR1QsIFB5Q21wX0dFPVB5X0dFLAotICAgICAgICAgICAgIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sIFB5Q21wX0lTLCBQeUNtcF9JU19OT1QsIFB5Q21wX0VYQ19NQVRDSCwgUHlDbXBfQkFEfTsKK2VudW0gY21wX29wIHtQeUNtcF9MVD1QeV9MVCwgUHlDbXBfTEU9UHlfTEUsIFB5Q21wX0VRPVB5X0VRLCBQeUNtcF9ORT1QeV9ORSwKKyAgICAgICAgICAgICAgICBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsIFB5Q21wX0lOLCBQeUNtcF9OT1RfSU4sCisgICAgICAgICAgICAgICAgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OwogCiAjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3NkZWZzLmggYi9JbmNsdWRlL29zZGVmcy5oCmluZGV4IDBjMmUzNGIuLmJkODRjMWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3NkZWZzLmgKKysrIGIvSW5jbHVkZS9vc2RlZnMuaApAQCAtNywxNSArNywxMiBAQAogCiAvKiBPcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVuY2llcyAqLwogCi0vKiBNb2QgYnkgY2hyaXNoOiBRTlggaGFzIFdBVENPTSwgYnV0IGlzbid0IERPUyAqLwotI2lmICFkZWZpbmVkKF9fUU5YX18pCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX1dBVENPTUNfXykgfHwgZGVmaW5lZChfX0RKR1BQX18pCisjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBTRVAgTCdcXCcKICNkZWZpbmUgQUxUU0VQIEwnLycKICNkZWZpbmUgTUFYUEFUSExFTiAyNTYKICNkZWZpbmUgREVMSU0gTCc7JwogI2VuZGlmCi0jZW5kaWYKIAogLyogRmlsZW5hbWUgc2VwYXJhdG9yICovCiAjaWZuZGVmIFNFUApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCBmODg0Y2QxLi41MTQ1ZGQ0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTMgKzE3LDEzIEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNAotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTMKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk1CisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMAogI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKICNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNC4zKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy41LjArIgogLyotLWVuZCBjb25zdGFudHMtLSovCiAKIC8qIFZlcnNpb24gYXMgYSBzaW5nbGUgNC1ieXRlIGhleCBudW1iZXIsIGUuZy4gMHgwMTA1MDJCMiA9PSAxLjUuMmIyLgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWF0b21pYy5oIGIvSW5jbHVkZS9weWF0b21pYy5oCmluZGV4IGQ0ZTE5ZTAuLjk5ODE2YTUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlhdG9taWMuaAorKysgYi9JbmNsdWRlL3B5YXRvbWljLmgKQEAgLTEsMTQgKzEsMTUgQEAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIElzc3VlICMyMzY0NDogPHN0ZGF0b21pYy5oPiBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKyssIHNlZToKKyAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTYwOTMyICovCisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpICYmICFkZWZpbmVkKF9fY3BsdXNwbHVzKQogI2lmbmRlZiBQeV9BVE9NSUNfSAogI2RlZmluZSBQeV9BVE9NSUNfSAotLyogWFhYOiBXaGVuIGNvbXBpbGVycyBzdGFydCBvZmZlcmluZyBhIHN0ZGF0b21pYy5oIHdpdGggbG9jay1mcmVlCi0gICBhdG9taWNfaW50IGFuZCBhdG9taWNfYWRkcmVzcyB0eXBlcywgaW5jbHVkZSB0aGF0IGhlcmUgYW5kIHJld3JpdGUKLSAgIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBpdC4gKi8KIAogI2luY2x1ZGUgImR5bmFtaWNfYW5ub3RhdGlvbnMuaCIKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKKyNpbmNsdWRlICJweWNvbmZpZy5oIgorCisjaWYgZGVmaW5lZChIQVZFX1NURF9BVE9NSUMpCisjaW5jbHVkZSA8c3RkYXRvbWljLmg+CiAjZW5kaWYKIAogLyogVGhpcyBpcyBtb2RlbGVkIGFmdGVyIHRoZSBhdG9taWNzIGludGVyZmFjZSBmcm9tIEMxeCwgYWNjb3JkaW5nIHRvCkBAIC0yMCw2ICsyMSw3NiBAQAogICogQmV3YXJlLCB0aGUgaW1wbGVtZW50YXRpb25zIGhlcmUgYXJlIGRlZXAgbWFnaWMuCiAgKi8KIAorI2lmIGRlZmluZWQoSEFWRV9TVERfQVRPTUlDKQorCit0eXBlZGVmIGVudW0gX1B5X21lbW9yeV9vcmRlciB7CisgICAgX1B5X21lbW9yeV9vcmRlcl9yZWxheGVkID0gbWVtb3J5X29yZGVyX3JlbGF4ZWQsCisgICAgX1B5X21lbW9yeV9vcmRlcl9hY3F1aXJlID0gbWVtb3J5X29yZGVyX2FjcXVpcmUsCisgICAgX1B5X21lbW9yeV9vcmRlcl9yZWxlYXNlID0gbWVtb3J5X29yZGVyX3JlbGVhc2UsCisgICAgX1B5X21lbW9yeV9vcmRlcl9hY3FfcmVsID0gbWVtb3J5X29yZGVyX2FjcV9yZWwsCisgICAgX1B5X21lbW9yeV9vcmRlcl9zZXFfY3N0ID0gbWVtb3J5X29yZGVyX3NlcV9jc3QKK30gX1B5X21lbW9yeV9vcmRlcjsKKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19hZGRyZXNzIHsKKyAgICBfQXRvbWljIHZvaWQgKl92YWx1ZTsKK30gX1B5X2F0b21pY19hZGRyZXNzOworCit0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CisgICAgYXRvbWljX2ludCBfdmFsdWU7Cit9IF9QeV9hdG9taWNfaW50OworCisjZGVmaW5lIF9QeV9hdG9taWNfc2lnbmFsX2ZlbmNlKC8qbWVtb3J5X29yZGVyKi8gT1JERVIpIFwKKyAgICBhdG9taWNfc2lnbmFsX2ZlbmNlKE9SREVSKQorCisjZGVmaW5lIF9QeV9hdG9taWNfdGhyZWFkX2ZlbmNlKC8qbWVtb3J5X29yZGVyKi8gT1JERVIpIFwKKyAgICBhdG9taWNfdGhyZWFkX2ZlbmNlKE9SREVSKQorCisjZGVmaW5lIF9QeV9hdG9taWNfc3RvcmVfZXhwbGljaXQoQVRPTUlDX1ZBTCwgTkVXX1ZBTCwgT1JERVIpIFwKKyAgICBhdG9taWNfc3RvcmVfZXhwbGljaXQoJihBVE9NSUNfVkFMKS0+X3ZhbHVlLCBORVdfVkFMLCBPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX2xvYWRfZXhwbGljaXQoQVRPTUlDX1ZBTCwgT1JERVIpIFwKKyAgICBhdG9taWNfbG9hZF9leHBsaWNpdCgmKEFUT01JQ19WQUwpLT5fdmFsdWUsIE9SREVSKQorCisvKiBVc2UgYnVpbHRpbiBhdG9taWMgb3BlcmF0aW9ucyBpbiBHQ0MgPj0gNC43ICovCisjZWxpZiBkZWZpbmVkKEhBVkVfQlVJTFRJTl9BVE9NSUMpCisKK3R5cGVkZWYgZW51bSBfUHlfbWVtb3J5X29yZGVyIHsKKyAgICBfUHlfbWVtb3J5X29yZGVyX3JlbGF4ZWQgPSBfX0FUT01JQ19SRUxBWEVELAorICAgIF9QeV9tZW1vcnlfb3JkZXJfYWNxdWlyZSA9IF9fQVRPTUlDX0FDUVVJUkUsCisgICAgX1B5X21lbW9yeV9vcmRlcl9yZWxlYXNlID0gX19BVE9NSUNfUkVMRUFTRSwKKyAgICBfUHlfbWVtb3J5X29yZGVyX2FjcV9yZWwgPSBfX0FUT01JQ19BQ1FfUkVMLAorICAgIF9QeV9tZW1vcnlfb3JkZXJfc2VxX2NzdCA9IF9fQVRPTUlDX1NFUV9DU1QKK30gX1B5X21lbW9yeV9vcmRlcjsKKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19hZGRyZXNzIHsKKyAgICB2b2lkICpfdmFsdWU7Cit9IF9QeV9hdG9taWNfYWRkcmVzczsKKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgeworICAgIGludCBfdmFsdWU7Cit9IF9QeV9hdG9taWNfaW50OworCisjZGVmaW5lIF9QeV9hdG9taWNfc2lnbmFsX2ZlbmNlKC8qbWVtb3J5X29yZGVyKi8gT1JERVIpIFwKKyAgICBfX2F0b21pY19zaWduYWxfZmVuY2UoT1JERVIpCisKKyNkZWZpbmUgX1B5X2F0b21pY190aHJlYWRfZmVuY2UoLyptZW1vcnlfb3JkZXIqLyBPUkRFUikgXAorICAgIF9fYXRvbWljX3RocmVhZF9mZW5jZShPUkRFUikKKworI2RlZmluZSBfUHlfYXRvbWljX3N0b3JlX2V4cGxpY2l0KEFUT01JQ19WQUwsIE5FV19WQUwsIE9SREVSKSBcCisgICAgKGFzc2VydCgoT1JERVIpID09IF9fQVRPTUlDX1JFTEFYRUQgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfU0VRX0NTVCAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgKE9SREVSKSA9PSBfX0FUT01JQ19SRUxFQVNFKSwgICAgICAgICAgICAgICAgICBcCisgICAgIF9fYXRvbWljX3N0b3JlX24oJihBVE9NSUNfVkFMKS0+X3ZhbHVlLCBORVdfVkFMLCBPUkRFUikpCisKKyNkZWZpbmUgX1B5X2F0b21pY19sb2FkX2V4cGxpY2l0KEFUT01JQ19WQUwsIE9SREVSKSAgICAgICAgICAgXAorICAgIChhc3NlcnQoKE9SREVSKSA9PSBfX0FUT01JQ19SRUxBWEVEICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB8fCAoT1JERVIpID09IF9fQVRPTUlDX1NFUV9DU1QgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHx8IChPUkRFUikgPT0gX19BVE9NSUNfQUNRVUlSRSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfHwgKE9SREVSKSA9PSBfX0FUT01JQ19DT05TVU1FKSwgICAgICAgICAgICAgICAgICBcCisgICAgIF9fYXRvbWljX2xvYWRfbigmKEFUT01JQ19WQUwpLT5fdmFsdWUsIE9SREVSKSkKKworI2Vsc2UKKwogdHlwZWRlZiBlbnVtIF9QeV9tZW1vcnlfb3JkZXIgewogICAgIF9QeV9tZW1vcnlfb3JkZXJfcmVsYXhlZCwKICAgICBfUHlfbWVtb3J5X29yZGVyX2FjcXVpcmUsCkBAIC0xNjIsNiArMjMzLDcgQEAKICAgICAoKEFUT01JQ19WQUwpLT5fdmFsdWUpCiAKICNlbmRpZiAgLyogIWdjYyB4ODYgKi8KKyNlbmRpZgogCiAvKiBTdGFuZGFyZGl6ZWQgc2hvcnRjdXRzLiAqLwogI2RlZmluZSBfUHlfYXRvbWljX3N0b3JlKEFUT01JQ19WQUwsIE5FV19WQUwpIFwKQEAgLTE3Niw5ICsyNDgsNSBAQAogI2RlZmluZSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZChBVE9NSUNfVkFMKSBcCiAgICAgX1B5X2F0b21pY19sb2FkX2V4cGxpY2l0KEFUT01JQ19WQUwsIF9QeV9tZW1vcnlfb3JkZXJfcmVsYXhlZCkKIAotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQogI2VuZGlmICAvKiBQeV9BVE9NSUNfSCAqLwogI2VuZGlmICAvKiBQeV9MSU1JVEVEX0FQSSAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCA4ZmU5ODE4Li4xOWJlYzJiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtNSw2ICs1LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIFRoZXNlIGdsb2JhbCB2YXJpYWJsZSBhcmUgZGVmaW5lZCBpbiBweWxpZmVjeWNsZS5jICovCisvKiBYWFggKG5jb2dobGFuKTogbW92ZSB0aGVzZSBkZWNsYXJhdGlvbnMgdG8gcHlsaWZlY3ljbGUuaD8gKi8KIFB5QVBJX0RBVEEoaW50KSBQeV9EZWJ1Z0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfVmVyYm9zZUZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfUXVpZXRGbGFnOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWVycm9ycy5oIGIvSW5jbHVkZS9weWVycm9ycy5oCmluZGV4IDAyZjY1ZDYuLjM1YWVkYjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHllcnJvcnMuaAorKysgYi9JbmNsdWRlL3B5ZXJyb3JzLmgKQEAgLTk5LDYgKzk5LDcgQEAKICNkZWZpbmUgX1B5X05PX1JFVFVSTgogI2VuZGlmCiAKKy8qIERlZmluZWQgaW4gUHl0aG9uL3B5bGlmZWN5Y2xlLmMgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKSBfUHlfTk9fUkVUVVJOOwogCiAjaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKQEAgLTE0Niw2ICsxNDcsNyBAQAogCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jhc2VFeGNlcHRpb247CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0V4Y2VwdGlvbjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19TdG9wSXRlcmF0aW9uOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19HZW5lcmF0b3JFeGl0OwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Bcml0aG1ldGljRXJyb3I7CkBAIC0xNjUsNiArMTY3LDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTmFtZUVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PdmVyZmxvd0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19SdW50aW1lRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1JlY3Vyc2lvbkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19TeW50YXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZW50YXRpb25FcnJvcjsKQEAgLTI0NCw2ICsyNDcsMTIgQEAKICAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCiAgICAgLi4uCiAgICAgKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX0Zvcm1hdFYoCisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgdmFfbGlzdCB2YXJncyk7CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmggYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZWJlMgotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaApAQCAtMCwwICsxLDEyNCBAQAorCisvKiBJbnRlcmZhY2VzIHRvIGNvbmZpZ3VyZSwgcXVlcnksIGNyZWF0ZSAmIGRlc3Ryb3kgdGhlIFB5dGhvbiBydW50aW1lICovCisKKyNpZm5kZWYgUHlfUFlMSUZFQ1lDTEVfSAorI2RlZmluZSBQeV9QWUxJRkVDWUNMRV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1B5QVBJX0ZVTkModm9pZCkgUHlfU2V0UHJvZ3JhbU5hbWUod2NoYXJfdCAqKTsKK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKTsKKworUHlBUElfRlVOQyh2b2lkKSBQeV9TZXRQeXRob25Ib21lKHdjaGFyX3QgKik7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHl0aG9uSG9tZSh2b2lkKTsKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogT25seSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0aGF0IGVtYmVkIHRoZSBpbnRlcnByZXRlciBhbmQgbmVlZCB0bworICogb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGVuY29kaW5nIGRldGVybWluYXRpb24gbWVjaGFuaXNtCisgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeV9TZXRTdGFuZGFyZFN0cmVhbUVuY29kaW5nKGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKyNlbmRpZgorCitQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5X0luaXRpYWxpemVFeChpbnQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOworI2VuZGlmCitQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CitQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKik7CisKKworLyogUHlfUHlBdEV4aXQgaXMgZm9yIHRoZSBhdGV4aXQgbW9kdWxlLCBQeV9BdEV4aXQgaXMgZm9yIGxvdy1sZXZlbAorICogZXhpdCBmdW5jdGlvbnMuCisgKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X1B5QXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSk7CisjZW5kaWYKK1B5QVBJX0ZVTkMoaW50KSBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKKworUHlBUElfRlVOQyh2b2lkKSBQeV9FeGl0KGludCk7CisKKy8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4gKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpOworCitQeUFQSV9GVU5DKGludCkgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKiwgY29uc3QgY2hhciAqKTsKKyNlbmRpZgorCisvKiBCb290c3RyYXAgX19tYWluX18gKGRlZmluZWQgaW4gTW9kdWxlcy9tYWluLmMpICovCitQeUFQSV9GVU5DKGludCkgUHlfTWFpbihpbnQgYXJnYywgd2NoYXJfdCAqKmFyZ3YpOworCisvKiBJbiBnZXRwYXRoLmMgKi8KK1B5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRQcm9ncmFtRnVsbFBhdGgodm9pZCk7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJlZml4KHZvaWQpOworUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldEV4ZWNQcmVmaXgodm9pZCk7CitQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UGF0aCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgICAgICBQeV9TZXRQYXRoKGNvbnN0IHdjaGFyX3QgKik7CisjaWZkZWYgTVNfV0lORE9XUworaW50IF9QeV9DaGVja1B5dGhvbjMoKTsKKyNlbmRpZgorCisvKiBJbiB0aGVpciBvd24gZmlsZXMgKi8KK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRWZXJzaW9uKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldFBsYXRmb3JtKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvcHlyaWdodCh2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKK1B5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOworI2VuZGlmCisKKy8qIEludGVybmFsIC0tIHZhcmlvdXMgb25lLXRpbWUgaW5pdGlhbGl6YXRpb25zICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ1aWx0aW5fSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0luaXQodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9Jbml0KHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfSW5pdChQeU9iamVjdCAqIGJsdGlubW9kKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlGcmFtZV9Jbml0KHZvaWQpOworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0luaXQodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlCeXRlQXJyYXlfSW5pdCh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0luaXQodm9pZCk7CisjZW5kaWYKKworLyogVmFyaW91cyBpbnRlcm5hbCBmaW5hbGl6ZXJzICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlNZXRob2RfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlGcmFtZV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUNGdW5jdGlvbl9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeURpY3RfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlUdXBsZV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUxpc3RfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlTZXRfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVBcnJheV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUZsb2F0X0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5T1NfRmluaUludGVycnVwdHModm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUdDX0R1bXBTaHV0ZG93blN0YXRzKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeVNsaWNlX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeVR5cGVfRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0Zpbmkodm9pZCk7CisKK1B5QVBJX0RBVEEoUHlUaHJlYWRTdGF0ZSAqKSBfUHlfRmluYWxpemluZzsKKyNlbmRpZgorCisvKiBTaWduYWxzICovCit0eXBlZGVmIHZvaWQgKCpQeU9TX3NpZ2hhbmRsZXJfdCkoaW50KTsKK1B5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7CitQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKKworLyogUmFuZG9tICovCitQeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9QWUxJRkVDWUNMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWFjcm8uaCBiL0luY2x1ZGUvcHltYWNyby5oCmluZGV4IDc5OTdjNTUuLjNmNmY1ZGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYWNyby5oCisrKyBiL0luY2x1ZGUvcHltYWNyby5oCkBAIC0xLDEzICsxLDI2IEBACiAjaWZuZGVmIFB5X1BZTUFDUk9fSAogI2RlZmluZSBQeV9QWU1BQ1JPX0gKIAorLyogTWluaW11bSB2YWx1ZSBiZXR3ZWVuIHggYW5kIHkgKi8KICNkZWZpbmUgUHlfTUlOKHgsIHkpICgoKHgpID4gKHkpKSA/ICh5KSA6ICh4KSkKKworLyogTWF4aW11bSB2YWx1ZSBiZXR3ZWVuIHggYW5kIHkgKi8KICNkZWZpbmUgUHlfTUFYKHgsIHkpICgoKHgpID4gKHkpKSA/ICh4KSA6ICh5KSkKIAorLyogQWJzb2x1dGUgdmFsdWUgb2YgdGhlIG51bWJlciB4ICovCisjZGVmaW5lIFB5X0FCUyh4KSAoKHgpIDwgMCA/IC0oeCkgOiAoeCkpCisKKyNkZWZpbmUgX1B5X1hTVFJJTkdJRlkoeCkgI3gKKworLyogQ29udmVydCB0aGUgYXJndW1lbnQgdG8gYSBzdHJpbmcuIEZvciBleGFtcGxlLCBQeV9TVFJJTkdJRlkoMTIzKSBpcyByZXBsYWNlZAorICAgd2l0aCAiMTIzIiBieSB0aGUgcHJlcHJvY2Vzc29yLiBEZWZpbmVzIGFyZSBhbHNvIHJlcGxhY2VkIGJ5IHRoZWlyIHZhbHVlLgorICAgRm9yIGV4YW1wbGUgUHlfU1RSSU5HSUZZKF9fTElORV9fKSBpcyByZXBsYWNlZCBieSB0aGUgbGluZSBudW1iZXIsIG5vdAorICAgYnkgIl9fTElORV9fIi4gKi8KKyNkZWZpbmUgUHlfU1RSSU5HSUZZKHgpIF9QeV9YU1RSSU5HSUZZKHgpCisKIC8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KICNkZWZpbmUgUHlfQ0hBUk1BU0soYykgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKIAotCiAvKiBBc3NlcnQgYSBidWlsZC10aW1lIGRlcGVuZGVuY3ksIGFzIGFuIGV4cHJlc3Npb24uCiAKICAgIFlvdXIgY29tcGlsZSB3aWxsIGZhaWwgaWYgdGhlIGNvbmRpdGlvbiBpc24ndCB0cnVlLCBvciBjYW4ndCBiZSBldmFsdWF0ZWQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltZW0uaCBiL0luY2x1ZGUvcHltZW0uaAppbmRleCAyMzcyYjg2Li4wNDNkYjY0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWVtLmgKKysrIGIvSW5jbHVkZS9weW1lbS5oCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdNYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9SYXdGcmVlKHZvaWQgKnB0cik7CiAjZW5kaWYKQEAgLTU3LDYgKzU4LDcgQEAKICovCiAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9NYWxsb2Moc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9GcmVlKHZvaWQgKnB0cik7CiAKQEAgLTEyNiwyMiArMTI4LDI1IEBACiB9IFB5TWVtQWxsb2NhdG9yRG9tYWluOwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogdXNlciBjb250ZXh0IHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIDMgZnVuY3Rpb25zICovCisgICAgLyogdXNlciBjb250ZXh0IHBhc3NlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIDQgZnVuY3Rpb25zICovCiAgICAgdm9pZCAqY3R4OwogCiAgICAgLyogYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgKi8KICAgICB2b2lkKiAoKm1hbGxvYykgKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOwogCisgICAgLyogYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgaW5pdGlhbGl6ZWQgYnkgemVyb3MgKi8KKyAgICB2b2lkKiAoKmNhbGxvYykgKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKKwogICAgIC8qIGFsbG9jYXRlIG9yIHJlc2l6ZSBhIG1lbW9yeSBibG9jayAqLwogICAgIHZvaWQqICgqcmVhbGxvYykgKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogCiAgICAgLyogcmVsZWFzZSBhIG1lbW9yeSBibG9jayAqLwogICAgIHZvaWQgKCpmcmVlKSAodm9pZCAqY3R4LCB2b2lkICpwdHIpOwotfSBQeU1lbUFsbG9jYXRvcjsKK30gUHlNZW1BbGxvY2F0b3JFeDsKIAogLyogR2V0IHRoZSBtZW1vcnkgYmxvY2sgYWxsb2NhdG9yIG9mIHRoZSBzcGVjaWZpZWQgZG9tYWluLiAqLwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpOwogCiAvKiBTZXQgdGhlIG1lbW9yeSBibG9jayBhbGxvY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBkb21haW4uCiAKQEAgLTE1NSw3ICsxNjAsNyBAQAogICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCkgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgdG8gcmVpbnN0YWxsIHRoZSBkZWJ1ZyBob29rcwogICAgb24gdG9wIG9uIHRoZSBuZXcgYWxsb2NhdG9yLiAqLwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jYXRvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpOwogCiAvKiBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgZm9sbG93aW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yCiAgICBmdW5jdGlvbnM6CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCBiMjlmOWJkLi42NmUwMGQ0IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTM1NywyOCArMzU3LDYgQEAKICAqIHN0YXQoKSBhbmQgZnN0YXQoKSBmaWRkbGluZyAqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogV2UgZXhwZWN0IHRoYXQgc3RhdCBhbmQgZnN0YXQgZXhpc3Qgb24gbW9zdCBzeXN0ZW1zLgotICogIEl0J3MgY29uZmlybWVkIG9uIFVuaXgsIE1hYyBhbmQgV2luZG93cy4KLSAqICBJZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtLCBhZGQKLSAqICAgICAgI2RlZmluZSBET05UX0hBVkVfU1RBVAotICogYW5kL29yCi0gKiAgICAgICNkZWZpbmUgRE9OVF9IQVZFX0ZTVEFUCi0gKiB0byB5b3VyIHB5Y29uZmlnLmguIFB5dGhvbiBjb2RlIGJleW9uZCB0aGlzIHNob3VsZCBjaGVjayBIQVZFX1NUQVQgYW5kCi0gKiBIQVZFX0ZTVEFUIGluc3RlYWQuCi0gKiBBbHNvCi0gKiAgICAgICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9ICi0gKiBpZiA8c3lzL3N0YXQuaD4gZXhpc3RzIG9uIHlvdXIgcGxhdGZvcm0sIGFuZAotICogICAgICAjZGVmaW5lIEhBVkVfU1RBVF9ICi0gKiBpZiA8c3RhdC5oPiBkb2VzLgotICovCi0jaWZuZGVmIERPTlRfSEFWRV9TVEFUCi0jZGVmaW5lIEhBVkVfU1RBVAotI2VuZGlmCi0KLSNpZm5kZWYgRE9OVF9IQVZFX0ZTVEFUCi0jZGVmaW5lIEhBVkVfRlNUQVQKLSNlbmRpZgotCiAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbGlmIGRlZmluZWQoSEFWRV9TVEFUX0gpCkBAIC01ODgsNiArNTY2LDI1IEBACiAgICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCisjaWZkZWYgSEFWRV9HQ0NfQVNNX0ZPUl9NQzY4ODgxCisjZGVmaW5lIEhBVkVfUFlfU0VUXzUzQklUX1BSRUNJU0lPTiAxCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0hFQURFUiBcCisgIHVuc2lnbmVkIGludCBvbGRfZnBjciwgbmV3X2ZwY3IKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQJCQkJCVwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsJCQlcCisgICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8JCQlcCisgICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOwkJCQlcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsJXAorICB9IHdoaWxlICgwKQorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQJCQkJCVwKKyAgZG8gewkJCQkJCQkJCVwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOwlcCisgIH0gd2hpbGUgKDApCisjZW5kaWYKKwogLyogZGVmYXVsdCBkZWZpbml0aW9ucyBhcmUgZW1wdHkgKi8KICNpZm5kZWYgSEFWRV9QWV9TRVRfNTNCSVRfUFJFQ0lTSU9OCiAjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0hFQURFUgpAQCAtODgwLDQgKzg3NywyNCBAQAogI2RlZmluZSBQWV9MSVRUTEVfRU5ESUFOIDEKICNlbmRpZgogCisjaWZkZWYgUHlfQlVJTERfQ09SRSAKKy8qCisgKiBNYWNyb3MgdG8gcHJvdGVjdCBDUlQgY2FsbHMgYWdhaW5zdCBpbnN0YW50IHRlcm1pbmF0aW9uIHdoZW4gcGFzc2VkIGFuCisgKiBpbnZhbGlkIHBhcmFtZXRlciAoaXNzdWUyMzUyNCkuCisgKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE5MDAKKworZXh0ZXJuIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIF9QeV9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcjsKKyNkZWZpbmUgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSCB7IF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIF9QeV9vbGRfaGFuZGxlciA9IFwKKyAgICBfc2V0X3RocmVhZF9sb2NhbF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKF9QeV9zaWxlbnRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcik7CisjZGVmaW5lIF9QeV9FTkRfU1VQUFJFU1NfSVBIIF9zZXRfdGhyZWFkX2xvY2FsX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoX1B5X29sZF9oYW5kbGVyKTsgfQorCisjZWxzZQorCisjZGVmaW5lIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNkZWZpbmUgX1B5X0VORF9TVVBQUkVTU19JUEgKKworI2VuZGlmIC8qIF9NU0NfVkVSID49IDE5MDAgKi8KKyNlbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCisKICNlbmRpZiAvKiBQeV9QWVBPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCA0OTkyYzIyLi5hMmZkODAzIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtMTM0LDYgKzEzNCw5IEBACiAgICAgdm9pZCAoKm9uX2RlbGV0ZSkodm9pZCAqKTsKICAgICB2b2lkICpvbl9kZWxldGVfZGF0YTsKIAorICAgIFB5T2JqZWN0ICpjb3JvdXRpbmVfd3JhcHBlcjsKKyAgICBpbnQgaW5fY29yb3V0aW5lX3dyYXBwZXI7CisKICAgICAvKiBYWFggc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBhbHNvIGJlIGhlcmUgKi8KIAogfSBQeVRocmVhZFN0YXRlOwpAQCAtMTc0LDEyICsxNzcsMTYgQEAKIC8qIFZhcmlhYmxlIGFuZCBtYWNybyBmb3IgaW4tbGluZSBhY2Nlc3MgdG8gY3VycmVudCB0aHJlYWQgc3RhdGUgKi8KIAogLyogQXNzdW1pbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGhvbGRzIHRoZSBHSUwsIHRoaXMgaXMgdGhlCi0gICBQeVRocmVhZFN0YXRlIGZvciB0aGUgY3VycmVudCB0aHJlYWQuICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCisgICBQeVRocmVhZFN0YXRlIGZvciB0aGUgY3VycmVudCB0aHJlYWQuCisKKyAgIElzc3VlICMyMzY0NDogcHlhdG9taWMuaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKysgKHlldCkuIERpc2FibGUKKyAgIFB5VGhyZWFkU3RhdGVfR0VUKCkgb3B0aW1pemF0aW9uOiBkZWNsYXJlIGl0IGFzIGFuIGFsaWFzIHRvCisgICBQeVRocmVhZFN0YXRlX0dldCgpLCBhcyBkb25lIGZvciBsaW1pdGVkIEFQSS4gKi8KKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgJiYgIWRlZmluZWQoX19jcGx1c3BsdXMpCiBQeUFQSV9EQVRBKF9QeV9hdG9taWNfYWRkcmVzcykgX1B5VGhyZWFkU3RhdGVfQ3VycmVudDsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKKyNpZiBkZWZpbmVkKFB5X0RFQlVHKSB8fCBkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBkZWZpbmVkKF9fY3BsdXNwbHVzKQogI2RlZmluZSBQeVRocmVhZFN0YXRlX0dFVCgpIFB5VGhyZWFkU3RhdGVfR2V0KCkKICNlbHNlCiAjZGVmaW5lIFB5VGhyZWFkU3RhdGVfR0VUKCkgXApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0cmhleC5oIGIvSW5jbHVkZS9weXN0cmhleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYzEyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5c3RyaGV4LmgKQEAgLTAsMCArMSwxNyBAQAorI2lmbmRlZiBQeV9TVFJIRVhfSAorI2RlZmluZSBQeV9TVFJIRVhfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFJldHVybnMgYSBzdHIoKSBjb250YWluaW5nIHRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXgoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CisvKiBSZXR1cm5zIGEgYnl0ZXMoKSBjb250YWluaW5nIHRoZSBBU0NJSSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXhfYnl0ZXMoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiAhUHlfU1RSSEVYX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IDJmYzU1NzguLmY5MjE0OGQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtOSw3ICs5LDggQEAKIAogI2RlZmluZSBQeUNGX01BU0sgKENPX0ZVVFVSRV9ESVZJU0lPTiB8IENPX0ZVVFVSRV9BQlNPTFVURV9JTVBPUlQgfCBcCiAgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX1dJVEhfU1RBVEVNRU5UIHwgQ09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OIHwgXAotICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9VTklDT0RFX0xJVEVSQUxTIHwgQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwpCisgICAgICAgICAgICAgICAgICAgQ09fRlVUVVJFX1VOSUNPREVfTElURVJBTFMgfCBDT19GVVRVUkVfQkFSUllfQVNfQkRGTCB8IFwKKyAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1ApCiAjZGVmaW5lIFB5Q0ZfTUFTS19PQlNPTEVURSAoQ09fTkVTVEVEKQogI2RlZmluZSBQeUNGX1NPVVJDRV9JU19VVEY4ICAweDAxMDAKICNkZWZpbmUgUHlDRl9ET05UX0lNUExZX0RFREVOVCAweDAyMDAKQEAgLTIyLDMwICsyMyw2IEBACiB9IFB5Q29tcGlsZXJGbGFnczsKICNlbmRpZgogCi1QeUFQSV9GVU5DKHZvaWQpIFB5X1NldFByb2dyYW1OYW1lKHdjaGFyX3QgKik7Ci1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7Ci0KLVB5QVBJX0ZVTkModm9pZCkgUHlfU2V0UHl0aG9uSG9tZSh3Y2hhcl90ICopOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFB5dGhvbkhvbWUodm9pZCk7Ci0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLS8qIE9ubHkgdXNlZCBieSBhcHBsaWNhdGlvbnMgdGhhdCBlbWJlZCB0aGUgaW50ZXJwcmV0ZXIgYW5kIG5lZWQgdG8KLSAqIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBlbmNvZGluZyBkZXRlcm1pbmF0aW9uIG1lY2hhbmlzbQotICovCi1QeUFQSV9GVU5DKGludCkgUHlfU2V0U3RhbmRhcmRTdHJlYW1FbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7Ci0jZW5kaWYKLQotUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeV9Jbml0aWFsaXplRXgoaW50KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKLSNlbmRpZgotUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKLVB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwotUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOwotCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlSdW5fU2ltcGxlU3RyaW5nRmxhZ3MoY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CiBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CkBAIC0xNjYsMjYgKzE0Myw2IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX1ByaW50RXgoaW50KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfRGlzcGxheShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAotLyogUHlfUHlBdEV4aXQgaXMgZm9yIHRoZSBhdGV4aXQgbW9kdWxlLCBQeV9BdEV4aXQgaXMgZm9yIGxvdy1sZXZlbAotICogZXhpdCBmdW5jdGlvbnMuCi0gKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5X1B5QXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKTsKLQotUHlBUElfRlVOQyh2b2lkKSBQeV9FeGl0KGludCk7Ci0KLS8qIFJlc3RvcmUgc2lnbmFscyB0aGF0IHRoZSBpbnRlcnByZXRlciBoYXMgY2FsbGVkIFNJR19JR04gb24gdG8gU0lHX0RGTC4gKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModm9pZCkgX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpOwotCi1QeUFQSV9GVU5DKGludCkgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKiwgY29uc3QgY2hhciAqKTsKLSNlbmRpZgotCi0vKiBCb290c3RyYXAgKi8KLVB5QVBJX0ZVTkMoaW50KSBQeV9NYWluKGludCBhcmdjLCB3Y2hhcl90ICoqYXJndik7Ci0KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFVzZSBtYWNyb3MgZm9yIGEgYnVuY2ggb2Ygb2xkIHZhcmlhbnRzICovCiAjZGVmaW5lIFB5UnVuX1N0cmluZyhzdHIsIHMsIGcsIGwpIFB5UnVuX1N0cmluZ0ZsYWdzKHN0ciwgcywgZywgbCwgTlVMTCkKQEAgLTIwNyw2NCArMTY0LDYgQEAKICAgICBQeVJ1bl9GaWxlRXhGbGFncyhmcCwgcCwgcywgZywgbCwgMCwgZmxhZ3MpCiAjZW5kaWYKIAotLyogSW4gZ2V0cGF0aC5jICovCi1QeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoKHZvaWQpOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFByZWZpeCh2b2lkKTsKLVB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9HZXRFeGVjUHJlZml4KHZvaWQpOwotUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0dldFBhdGgodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpICAgICAgUHlfU2V0UGF0aChjb25zdCB3Y2hhcl90ICopOwotI2lmZGVmIE1TX1dJTkRPV1MKLWludCBfUHlfQ2hlY2tQeXRob24zKCk7Ci0jZW5kaWYKLQotLyogSW4gdGhlaXIgb3duIGZpbGVzICovCi1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0VmVyc2lvbih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRQbGF0Zm9ybSh2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ2lkZW50aWZpZXIodm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hndmVyc2lvbih2b2lkKTsKLSNlbmRpZgotCi0vKiBJbnRlcm5hbCAtLSB2YXJpb3VzIG9uZS10aW1lIGluaXRpYWxpemF0aW9ucyAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCdWlsdGluX0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19Jbml0KHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQoUHlPYmplY3QgKiBibHRpbm1vZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydEhvb2tzX0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKGludCkgX1B5RnJhbWVfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9Jbml0KHZvaWQpOwotUHlBUElfRlVOQyhpbnQpIFB5Qnl0ZUFycmF5X0luaXQodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9Jbml0KHZvaWQpOwotI2VuZGlmCi0KLS8qIFZhcmlvdXMgaW50ZXJuYWwgZmluYWxpemVycyAqLwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyh2b2lkKSBfUHlFeGNfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5TWV0aG9kX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5RnJhbWVfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlDRnVuY3Rpb25fRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5VHVwbGVfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlMaXN0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5U2V0X0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlCeXRlQXJyYXlfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlGbG9hdF9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBQeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19EdW1wU2h1dGRvd25TdGF0cyh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5R0NfRmluaSh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlUeXBlX0Zpbmkodm9pZCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9GaW5pKHZvaWQpOwotCi1QeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7Ci0jZW5kaWYKLQogLyogU3R1ZmYgd2l0aCBubyBwcm9wZXIgaG9tZSAoeWV0KSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhjaGFyICopIFB5T1NfUmVhZGxpbmUoRklMRSAqLCBGSUxFICosIGNvbnN0IGNoYXIgKik7CkBAIC0yOTAsMTQgKzE4OSw2IEBACiBQeUFQSV9GVU5DKGludCkgUHlPU19DaGVja1N0YWNrKHZvaWQpOwogI2VuZGlmCiAKLS8qIFNpZ25hbHMgKi8KLXR5cGVkZWYgdm9pZCAoKlB5T1Nfc2lnaGFuZGxlcl90KShpbnQpOwotUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19nZXRzaWcoaW50KTsKLVB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1Nfc2V0c2lnKGludCwgUHlPU19zaWdoYW5kbGVyX3QpOwotCi0vKiBSYW5kb20gKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tICh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7Ci0KICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGltZS5oIGIvSW5jbHVkZS9weXRpbWUuaAppbmRleCBiMGZjNmQwLi40OTQzMjJjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGltZS5oCisrKyBiL0luY2x1ZGUvcHl0aW1lLmgKQEAgLTEzLDYwICsxMywyNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfR0VUVElNRU9GREFZCi10eXBlZGVmIHN0cnVjdCB0aW1ldmFsIF9QeVRpbWVfdGltZXZhbDsKKyNpZmRlZiBQWV9JTlQ2NF9UCisvKiBfUHlUaW1lX3Q6IFB5dGhvbiB0aW1lc3RhbXAgd2l0aCBzdWJzZWNvbmQgcHJlY2lzaW9uLiBJdCBjYW4gYmUgdXNlZCB0bworICAgc3RvcmUgYSBkdXJhdGlvbiwgYW5kIHNvIGluZGlyZWN0bHkgYSBkYXRlIChyZWxhdGVkIHRvIGFub3RoZXIgZGF0ZSwgbGlrZQorICAgVU5JWCBlcG9jaCkuICovCit0eXBlZGVmIFBZX0lOVDY0X1QgX1B5VGltZV90OworI2RlZmluZSBfUHlUaW1lX01JTiBQWV9MTE9OR19NSU4KKyNkZWZpbmUgX1B5VGltZV9NQVggUFlfTExPTkdfTUFYCiAjZWxzZQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIHRpbWVfdCAgICAgICB0dl9zZWM7ICAgLyogc2Vjb25kcyBzaW5jZSBKYW4uIDEsIDE5NzAgKi8KLSAgICBsb25nICAgICAgICAgdHZfdXNlYzsgIC8qIGFuZCBtaWNyb3NlY29uZHMgKi8KLX0gX1B5VGltZV90aW1ldmFsOworIyAgZXJyb3IgIl9QeVRpbWVfdCBuZWVkIHNpZ25lZCA2NC1iaXQgaW50ZWdlciB0eXBlIgogI2VuZGlmCiAKLS8qIFN0cnVjdHVyZSB1c2VkIGJ5IHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGNvbnN0IGNoYXIgKmltcGxlbWVudGF0aW9uOwotICAgIGludCBtb25vdG9uaWM7Ci0gICAgaW50IGFkanVzdGFibGU7Ci0gICAgZG91YmxlIHJlc29sdXRpb247Ci19IF9QeV9jbG9ja19pbmZvX3Q7Ci0KLS8qIFNpbWlsYXIgdG8gUE9TSVggZ2V0dGltZW9mZGF5IGJ1dCBjYW5ub3QgZmFpbC4gIElmIHN5c3RlbSBnZXR0aW1lb2ZkYXkKLSAqIGZhaWxzIG9yIGlzIG5vdCBhdmFpbGFibGUsIGZhbGwgYmFjayB0byBsb3dlciByZXNvbHV0aW9uIGNsb2Nrcy4KLSAqLwotUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKTsKLQotLyogU2ltaWxhciB0byBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGJ1dCByZXRyaWV2ZSBhbHNvIGluZm9ybWF0aW9uIG9uIHRoZQotICogY2xvY2sgdXNlZCB0byBnZXQgdGhlIGN1cnJlbnQgdGltZS4gKi8KLVB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygKLSAgICBfUHlUaW1lX3RpbWV2YWwgKnRwLAotICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOwotCi0jZGVmaW5lIF9QeVRpbWVfQUREX1NFQ09ORFModHYsIGludGVydmFsKSBcCi1kbyB7IFwKLSAgICB0di50dl91c2VjICs9IChsb25nKSAoKChsb25nKSBpbnRlcnZhbCAtIGludGVydmFsKSAqIDEwMDAwMDApOyBcCi0gICAgdHYudHZfc2VjICs9ICh0aW1lX3QpIGludGVydmFsICsgKHRpbWVfdCkgKHR2LnR2X3VzZWMgLyAxMDAwMDAwKTsgXAotICAgIHR2LnR2X3VzZWMgJT0gMTAwMDAwMDsgXAotfSB3aGlsZSAoMCkKLQotI2RlZmluZSBfUHlUaW1lX0lOVEVSVkFMKHR2X3N0YXJ0LCB0dl9lbmQpIFwKLSAgICAoKHR2X2VuZC50dl9zZWMgLSB0dl9zdGFydC50dl9zZWMpICsgXAotICAgICAodHZfZW5kLnR2X3VzZWMgLSB0dl9zdGFydC50dl91c2VjKSAqIDAuMDAwMDAxKQotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi0KIHR5cGVkZWYgZW51bSB7Ci0gICAgLyogUm91bmQgdG93YXJkcyB6ZXJvLiAqLwotICAgIF9QeVRpbWVfUk9VTkRfRE9XTj0wLAotICAgIC8qIFJvdW5kIGF3YXkgZnJvbSB6ZXJvLiAqLwotICAgIF9QeVRpbWVfUk9VTkRfVVAKKyAgICAvKiBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKS4KKyAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCB0byByZWFkIGEgY2xvY2suICovCisgICAgX1B5VGltZV9ST1VORF9GTE9PUj0wLAorICAgIC8qIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpLgorICAgICAgIEZvciBleGFtcGxlLCB1c2VkIGZvciB0aW1lb3V0IHRvIHdhaXQgImF0IGxlYXN0IiBOIHNlY29uZHMuICovCisgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HCiB9IF9QeVRpbWVfcm91bmRfdDsKIAotLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIHRpbWVfdC4gKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZV90KAotICAgIFB5T2JqZWN0ICpvYmosCi0gICAgdGltZV90ICpzZWMsCi0gICAgX1B5VGltZV9yb3VuZF90KTsKLQogLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gcm9tVGltZV90KAogICAgIHRpbWVfdCBzZWMpOwpAQCAtNzUsNiArNDEsMTIgQEAKIFB5QVBJX0ZVTkModGltZV90KSBfUHlMb25nX0FzVGltZV90KAogICAgIFB5T2JqZWN0ICpvYmopOwogCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gdGltZV90LiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICB0aW1lX3QgKnNlYywKKyAgICBfUHlUaW1lX3JvdW5kX3QpOworCiAvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMsIGludCBvciBmbG9hdCwgdG8gYSB0aW1ldmFsIHN0cnVjdHVyZS4KICAgIHVzZWMgaXMgaW4gdGhlIHJhbmdlIFswOyA5OTk5OTldIGFuZCByb3VuZGVkIHRvd2FyZHMgemVyby4KICAgIEZvciBleGFtcGxlLCAtMS4yIGlzIGNvbnZlcnRlZCB0byAoLTIsIDgwMDAwMCkuICovCkBAIC05MiwxMCArNjQsMTI2IEBACiAgICAgdGltZV90ICpzZWMsCiAgICAgbG9uZyAqbnNlYywKICAgICBfUHlUaW1lX3JvdW5kX3QpOworCisKKy8qIENyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tU2Vjb25kcyhpbnQgc2Vjb25kcyk7CisKKy8qIE1hY3JvIHRvIGNyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIHNlY29uZHMsIG5vIGludGVnZXIgb3ZlcmZsb3cuCisgICBPbmx5IHVzZSB0aGUgbWFjcm8gZm9yIHNtYWxsIHZhbHVlcywgcHJlZmVyIF9QeVRpbWVfRnJvbVNlY29uZHMoKS4gKi8KKyNkZWZpbmUgX1BZVElNRV9GUk9NU0VDT05EUyhzZWNvbmRzKSBcCisgICAgICAgICAgICAoKF9QeVRpbWVfdCkoc2Vjb25kcykgKiAoMTAwMCAqIDEwMDAgKiAxMDAwKSkKKworLyogQ3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICovCitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKTsKKworLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIChQeXRob24gZmxvYXQgb3IgaW50KSB0byBhIHRpbWV0YW1wLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdChfUHlUaW1lX3QgKnQsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyAoUHl0aG9uIGZsb2F0IG9yIGludCwgMTBeLTMpIHRvIGEgdGltZXRhbXAuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0Zyb21NaWxsaXNlY29uZHNPYmplY3QoX1B5VGltZV90ICp0LAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCBhIHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgQyBkb3VibGUuICovCitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoX1B5VGltZV90IHQpOworCisvKiBDb252ZXJ0IHRpbWVzdGFtcCB0byBhIG51bWJlciBvZiBtaWxsaXNlY29uZHMgKDEwXi0zIHNlY29uZHMpLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoX1B5VGltZV90IHQsCisgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKTsKKworLyogQ29udmVydCB0aW1lc3RhbXAgdG8gYSBudW1iZXIgb2YgbWljcm9zZWNvbmRzICgxMF4tNiBzZWNvbmRzKS4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0FzTWljcm9zZWNvbmRzKF9QeVRpbWVfdCB0LAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIENvbnZlcnQgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICgxMF4tOSBzZWNvbmRzKSBhcyBhIFB5dGhvbiBpbnQKKyAgIG9iamVjdC4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KTsKKworLyogQ29udmVydCBhIHRpbWVzdGFtcCB0byBhIHRpbWV2YWwgc3RydWN0dXJlIChtaWNyb3NlY29uZCByZXNvbHV0aW9uKS4KKyAgIHR2X3VzZWMgaXMgYWx3YXlzIHBvc2l0aXZlLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgaWYgdGhlIGNvbnZlcnNpb24gb3ZlcmZsb3dlZCwKKyAgIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Bc1RpbWV2YWwoX1B5VGltZV90IHQsCisgICAgc3RydWN0IHRpbWV2YWwgKnR2LAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKy8qIFNpbWlsYXIgdG8gX1B5VGltZV9Bc1RpbWV2YWwoKSwgYnV0IGRvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKF9QeVRpbWVfdCB0LAorICAgIHN0cnVjdCB0aW1ldmFsICp0diwKKyAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpOworCisvKiBDb252ZXJ0IGEgdGltZXN0YW1wIHRvIGEgbnVtYmVyIG9mIHNlY29uZHMgKHNlY3MpIGFuZCBtaWNyb3NlY29uZHMgKHVzKS4KKyAgIHVzIGlzIGFsd2F5cyBwb3NpdGl2ZS4gVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIF9QeVRpbWVfQXNUaW1ldmFsKCkKKyAgIGV4Y2VwdCB0aGF0IHNlY3MgaXMgYWx3YXlzIGEgdGltZV90IHR5cGUsIHdoZXJlYXMgdGhlIHRpbWV2YWwgc3RydWN0dXJlCisgICB1c2VzIGEgQyBsb25nIGZvciB0dl9zZWMgb24gV2luZG93cy4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIGlmIHRoZSBjb252ZXJzaW9uIG92ZXJmbG93ZWQsCisgICByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1ldmFsVGltZV90KAorICAgIF9QeVRpbWVfdCB0LAorICAgIHRpbWVfdCAqc2VjcywKKyAgICBpbnQgKnVzLAorICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCk7CisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKKy8qIENvbnZlcnQgYSB0aW1lc3RhbXAgdG8gYSB0aW1lc3BlYyBzdHJ1Y3R1cmUgKG5hbm9zZWNvbmQgcmVzb2x1dGlvbikuCisgICB0dl9uc2VjIGlzIGFsd2F5cyBwb3NpdGl2ZS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfQXNUaW1lc3BlYyhfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWVzcGVjICp0cyk7CiAjZW5kaWYKIAotLyogRHVtbXkgdG8gZm9yY2UgbGlua2luZy4gKi8KLVB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9Jbml0KHZvaWQpOworLyogR2V0IHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLgorCisgICBUaGUgZnVuY3Rpb24gY2Fubm90IGZhaWwuIF9QeVRpbWVfSW5pdCgpIGVuc3VyZXMgdGhhdCB0aGUgc3lzdGVtIGNsb2NrCisgICB3b3Jrcy4gKi8KK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrKHZvaWQpOworCisvKiBHZXQgdGhlIHRpbWUgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jayB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuCisgICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLiBUaGUgcmVmZXJlbmNlIHBvaW50IG9mCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIFRoZSBmdW5jdGlvbiBjYW5ub3QgZmFpbC4gX1B5VGltZV9Jbml0KCkgZW5zdXJlcyB0aGF0IGEgbW9ub3RvbmljIGNsb2NrCisgICBpcyBhdmFpbGFibGUgYW5kIHdvcmtzLiAqLworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2sodm9pZCk7CisKKworLyogU3RydWN0dXJlIHVzZWQgYnkgdGltZS5nZXRfY2xvY2tfaW5mbygpICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb247CisgICAgaW50IG1vbm90b25pYzsKKyAgICBpbnQgYWRqdXN0YWJsZTsKKyAgICBkb3VibGUgcmVzb2x1dGlvbjsKK30gX1B5X2Nsb2NrX2luZm9fdDsKKworLyogR2V0IHRoZSBjdXJyZW50IHRpbWUgZnJvbSB0aGUgc3lzdGVtIGNsb2NrLgorICogRmlsbCBjbG9jayBpbmZvcm1hdGlvbiBpZiBpbmZvIGlzIG5vdCBOVUxMLgorICogUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuCisgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8oCisgICAgX1B5VGltZV90ICp0LAorICAgIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOworCisvKiBHZXQgdGhlIHRpbWUgb2YgYSBtb25vdG9uaWMgY2xvY2ssIGkuZS4gYSBjbG9jayB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuCisgICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLiBUaGUgcmVmZXJlbmNlIHBvaW50IG9mCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUKKyAgIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIEZpbGwgaW5mbyAoaWYgc2V0KSB3aXRoIGluZm9ybWF0aW9uIG9mIHRoZSBmdW5jdGlvbiB1c2VkIHRvIGdldCB0aGUgdGltZS4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKAorICAgIF9QeVRpbWVfdCAqdCwKKyAgICBfUHlfY2xvY2tfaW5mb190ICppbmZvKTsKKworCisvKiBJbml0aWFsaXplIHRpbWUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0luaXQodm9pZCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggYWUzZjU1Ni4uZjE3YmMxYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC02LDM4ICs2LDQzIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKLS8qCi1UaGVyZSBhcmUgdGhyZWUga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgorLyogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlOgogCiAxLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTAogMi4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teQogMy4gRHVtbXk6ICAga2V5ID09IGR1bW15CiAKLU5vdGU6IC5wb3AoKSBhYnVzZXMgdGhlIGhhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcwotbm8gbWVhbmluZyBvdGhlcndpc2UuCitUaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaGF2ZSBubyBtZWFuaW5nLgorVGhlIGhhc2ggZmllbGQgb2YgRHVtbW55IHNsb3RzIGFyZSBzZXQgdG8gLTEKK21lYW5pbmcgdGhhdCBkdW1teSBlbnRyaWVzIGNhbiBiZSBkZXRlY3RlZCBieQorZWl0aGVyIGVudHJ5LT5rZXk9PWR1bW15IG9yIGJ5IGVudHJ5LT5oYXNoPT0tMS4KICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCisKICNkZWZpbmUgUHlTZXRfTUlOU0laRSA4CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICAvKiBDYWNoZWQgaGFzaCBjb2RlIG9mIHRoZSBrZXkuICovCiAgICAgUHlPYmplY3QgKmtleTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiB0aGUga2V5ICovCiB9IHNldGVudHJ5OwogCisvKiBUaGUgU2V0T2JqZWN0IGRhdGEgc3RydWN0dXJlIGlzIHNoYXJlZCBieSBzZXQgYW5kIGZyb3plbnNldCBvYmplY3RzLgogCi0vKgotVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBzaGFyZWQgYnkgc2V0IGFuZCBmcm96ZW5zZXQgb2JqZWN0cy4KK0ludmFyaWFudCBmb3Igc2V0czoKKyAtIGhhc2ggaXMgLTEKKworSW52YXJpYW50cyBmb3IgZnJvemVuc2V0czoKKyAtIGRhdGEgaXMgaW1tdXRhYmxlLgorIC0gaGFzaCBpcyB0aGUgaGFzaCBvZiB0aGUgZnJvemVuc2V0IG9yIC0xIGlmIG5vdCBjb21wdXRlZCB5ZXQuCisKICovCiAKLXR5cGVkZWYgc3RydWN0IF9zZXRvYmplY3QgUHlTZXRPYmplY3Q7Ci1zdHJ1Y3QgX3NldG9iamVjdCB7Cit0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogCi0gICAgUHlfc3NpemVfdCBmaWxsOyAgLyogIyBBY3RpdmUgKyAjIER1bW15ICovCi0gICAgUHlfc3NpemVfdCB1c2VkOyAgLyogIyBBY3RpdmUgKi8KKyAgICBQeV9zc2l6ZV90IGZpbGw7ICAgICAgICAgICAgLyogTnVtYmVyIGFjdGl2ZSBhbmQgZHVtbXkgZW50cmllcyovCisgICAgUHlfc3NpemVfdCB1c2VkOyAgICAgICAgICAgIC8qIE51bWJlciBhY3RpdmUgZW50cmllcyAqLwogCiAgICAgLyogVGhlIHRhYmxlIGNvbnRhaW5zIG1hc2sgKyAxIHNsb3RzLCBhbmQgdGhhdCdzIGEgcG93ZXIgb2YgMi4KICAgICAgKiBXZSBzdG9yZSB0aGUgbWFzayBpbnN0ZWFkIG9mIHRoZSBzaXplIGJlY2F1c2UgdGhlIG1hc2sgaXMgbW9yZQpAQCAtNDUsMzMgKzUwLDQyIEBACiAgICAgICovCiAgICAgUHlfc3NpemVfdCBtYXNrOwogCi0gICAgLyogdGFibGUgcG9pbnRzIHRvIHNtYWxsdGFibGUgZm9yIHNtYWxsIHRhYmxlcywgZWxzZSB0bwotICAgICAqIGFkZGl0aW9uYWwgbWFsbG9jJ2VkIG1lbW9yeS4gIHRhYmxlIGlzIG5ldmVyIE5VTEwhICBUaGlzIHJ1bGUKLSAgICAgKiBzYXZlcyByZXBlYXRlZCBydW50aW1lIG51bGwtdGVzdHMuCisgICAgLyogVGhlIHRhYmxlIHBvaW50cyB0byBhIGZpeGVkLXNpemUgc21hbGx0YWJsZSBmb3Igc21hbGwgdGFibGVzCisgICAgICogb3IgdG8gYWRkaXRpb25hbCBtYWxsb2MnZWQgbWVtb3J5IGZvciBiaWdnZXIgdGFibGVzLgorICAgICAqIFRoZSB0YWJsZSBwb2ludGVyIGlzIG5ldmVyIE5VTEwgd2hpY2ggc2F2ZXMgdXMgZnJvbSByZXBlYXRlZAorICAgICAqIHJ1bnRpbWUgbnVsbC10ZXN0cy4KICAgICAgKi8KICAgICBzZXRlbnRyeSAqdGFibGU7Ci0gICAgc2V0ZW50cnkgKigqbG9va3VwKShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKTsKLSAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogb25seSB1c2VkIGJ5IGZyb3plbnNldCBvYmplY3RzICovCi0gICAgc2V0ZW50cnkgc21hbGx0YWJsZVtQeVNldF9NSU5TSVpFXTsKKyAgICBQeV9oYXNoX3QgaGFzaDsgICAgICAgICAgICAgLyogT25seSB1c2VkIGJ5IGZyb3plbnNldCBvYmplY3RzICovCisgICAgUHlfc3NpemVfdCBmaW5nZXI7ICAgICAgICAgIC8qIFNlYXJjaCBmaW5nZXIgZm9yIHBvcCgpICovCiAKKyAgICBzZXRlbnRyeSBzbWFsbHRhYmxlW1B5U2V0X01JTlNJWkVdOwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgICAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwotfTsKLSNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworfSBQeVNldE9iamVjdDsKKworI2RlZmluZSBQeVNldF9HRVRfU0laRShzbykgKCgoUHlTZXRPYmplY3QgKikoc28pKS0+dXNlZCkKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlTZXRfRHVtbXk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCk7CitQeUFQSV9GVU5DKGludCkgX1B5U2V0X1VwZGF0ZShQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqaXRlcmFibGUpOworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CisKKyNlbmRpZiAvKiBTZWN0aW9uIGV4Y2x1ZGVkIGJ5IFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVNldF9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RnJvemVuU2V0X1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlTZXRJdGVyX1R5cGU7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVNldF9EdW1teTsKLSNlbmRpZgogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U2V0X05ldyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGcm96ZW5TZXRfTmV3KFB5T2JqZWN0ICopOwogCi0vKiBJbnZhcmlhbnRzIGZvciBmcm96ZW5zZXRzOgotICogICAgIGRhdGEgaXMgaW1tdXRhYmxlLgotICogICAgIGhhc2ggaXMgdGhlIGhhc2ggb2YgdGhlIGZyb3plbnNldCBvciAtMSBpZiBub3QgY29tcHV0ZWQgeWV0LgotICogSW52YXJpYW50cyBmb3Igc2V0czoKLSAqICAgICBoYXNoIGlzIC0xCi0gKi8KK1B5QVBJX0ZVTkMoaW50KSBQeVNldF9BZGQoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfQ29udGFpbnMoUHlPYmplY3QgKmFueXNldCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgUHlTZXRfRGlzY2FyZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVNldF9TaXplKFB5T2JqZWN0ICphbnlzZXQpOwogCiAjZGVmaW5lIFB5RnJvemVuU2V0X0NoZWNrRXhhY3Qob2IpIChQeV9UWVBFKG9iKSA9PSAmUHlGcm96ZW5TZXRfVHlwZSkKICNkZWZpbmUgUHlBbnlTZXRfQ2hlY2tFeGFjdChvYikgXApAQCAtODcsMjYgKzEwMSw2IEBACiAgICAgKFB5X1RZUEUob2IpID09ICZQeUZyb3plblNldF9UeXBlIHx8IFwKICAgICAgIFB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYiksICZQeUZyb3plblNldF9UeXBlKSkKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVNldF9OZXcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnJvemVuU2V0X05ldyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlTZXRfU2l6ZShQeU9iamVjdCAqYW55c2V0KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlTZXRfR0VUX1NJWkUoc28pICgoKFB5U2V0T2JqZWN0ICopKHNvKSktPnVzZWQpCi0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9DbGVhcihQeU9iamVjdCAqc2V0KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9Db250YWlucyhQeU9iamVjdCAqYW55c2V0LCBQeU9iamVjdCAqa2V5KTsKLVB5QVBJX0ZVTkMoaW50KSBQeVNldF9EaXNjYXJkKFB5T2JqZWN0ICpzZXQsIFB5T2JqZWN0ICprZXkpOwotUHlBUElfRlVOQyhpbnQpIFB5U2V0X0FkZChQeU9iamVjdCAqc2V0LCBQeU9iamVjdCAqa2V5KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhpbnQpIF9QeVNldF9VcGRhdGUoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKml0ZXJhYmxlKTsKLQotUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7Ci0jZW5kaWYKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2xpY2VvYmplY3QuaCBiL0luY2x1ZGUvc2xpY2VvYmplY3QuaAppbmRleCBmN2VlOTBjLi4yNjM3MGUwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3NsaWNlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zbGljZW9iamVjdC5oCkBAIC00MSw3ICs0MSw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlTbGljZV9HZXRJbmRpY2VzKFB5T2JqZWN0ICpyLCBQeV9zc2l6ZV90IGxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgUHlfc3NpemVfdCAqc3RlcCk7CiBQeUFQSV9GVU5DKGludCkgUHlTbGljZV9HZXRJbmRpY2VzRXgoUHlPYmplY3QgKnIsIFB5X3NzaXplX3QgbGVuZ3RoLAotCQkJCSAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgCisJCQkJICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICpzdG9wLAogCQkJCSAgICBQeV9zc2l6ZV90ICpzdGVwLCBQeV9zc2l6ZV90ICpzbGljZWxlbmd0aCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IDFjZmQ4ODQuLjE0MDljZDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTQzLDcgKzQzLDYgQEAKICAgICBQeU9iamVjdCAqc3RlX2NoaWxkcmVuOyAgLyogbGlzdCBvZiBjaGlsZCBibG9ja3MgKi8KICAgICBQeU9iamVjdCAqc3RlX2RpcmVjdGl2ZXM7LyogbG9jYXRpb25zIG9mIGdsb2JhbCBhbmQgbm9ubG9jYWwgc3RhdGVtZW50cyAqLwogICAgIF9QeV9ibG9ja190eSBzdGVfdHlwZTsgICAvKiBtb2R1bGUsIGNsYXNzLCBvciBmdW5jdGlvbiAqLwotICAgIGludCBzdGVfdW5vcHRpbWl6ZWQ7ICAgICAvKiBmYWxzZSBpZiBuYW1lc3BhY2UgaXMgb3B0aW1pemVkICovCiAgICAgaW50IHN0ZV9uZXN0ZWQ7ICAgICAgLyogdHJ1ZSBpZiBibG9jayBpcyBuZXN0ZWQgKi8KICAgICB1bnNpZ25lZCBzdGVfZnJlZSA6IDE7ICAgICAgICAvKiB0cnVlIGlmIGJsb2NrIGhhcyBmcmVlIHZhcmlhYmxlcyAqLwogICAgIHVuc2lnbmVkIHN0ZV9jaGlsZF9mcmVlIDogMTsgIC8qIHRydWUgaWYgYSBjaGlsZCBibG9jayBoYXMgZnJlZSB2YXJzLApAQCAtMTA4LDEwICsxMDcsNiBAQAogI2RlZmluZSBGUkVFIDQKICNkZWZpbmUgQ0VMTCA1CiAKLS8qIFRoZSBmb2xsb3dpbmcgdHdvIG5hbWVzIGFyZSB1c2VkIGZvciB0aGUgc3RlX3Vub3B0aW1pemVkIGJpdCBmaWVsZCAqLwotI2RlZmluZSBPUFRfSU1QT1JUX1NUQVIgMQotI2RlZmluZSBPUFRfVE9QTEVWRUwgMiAgLyogdG9wLWxldmVsIG5hbWVzLCBpbmNsdWRpbmcgZXZhbCBhbmQgZXhlYyAqLwotCiAjZGVmaW5lIEdFTkVSQVRPUiAxCiAjZGVmaW5lIEdFTkVSQVRPUl9FWFBSRVNTSU9OIDIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS90b2tlbi5oIGIvSW5jbHVkZS90b2tlbi5oCmluZGV4IDkwNTAyMmIuLjU5NWFmYTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdG9rZW4uaAorKysgYi9JbmNsdWRlL3Rva2VuLmgKQEAgLTU4LDEzICs1OCwxNiBAQAogI2RlZmluZSBET1VCTEVTVEFSRVFVQUwJNDYKICNkZWZpbmUgRE9VQkxFU0xBU0gJNDcKICNkZWZpbmUgRE9VQkxFU0xBU0hFUVVBTCA0OAotI2RlZmluZSBBVCAgICAgICAgICAgICAgNDkJCi0jZGVmaW5lIFJBUlJPVyAgICAgICAgICA1MAotI2RlZmluZSBFTExJUFNJUyAgICAgICAgNTEKKyNkZWZpbmUgQVQgICAgICAgICAgICAgIDQ5CisjZGVmaW5lIEFURVFVQUwJCTUwCisjZGVmaW5lIFJBUlJPVyAgICAgICAgICA1MQorI2RlZmluZSBFTExJUFNJUyAgICAgICAgNTIKIC8qIERvbid0IGZvcmdldCB0byB1cGRhdGUgdGhlIHRhYmxlIF9QeVBhcnNlcl9Ub2tlbk5hbWVzIGluIHRva2VuaXplci5jISAqLwotI2RlZmluZSBPUAkJNTIKLSNkZWZpbmUgRVJST1JUT0tFTgk1MwotI2RlZmluZSBOX1RPS0VOUwk1NAorI2RlZmluZSBPUAkJNTMKKyNkZWZpbmUgQVdBSVQJCTU0CisjZGVmaW5lIEFTWU5DCQk1NQorI2RlZmluZSBFUlJPUlRPS0VOCTU2CisjZGVmaW5lIE5fVE9LRU5TCTU3CiAKIC8qIFNwZWNpYWwgZGVmaW5pdGlvbnMgZm9yIGNvb3BlcmF0aW9uIHdpdGggcGFyc2VyICovCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHlwZXNsb3RzLmggYi9JbmNsdWRlL3R5cGVzbG90cy5oCmluZGV4IGFkM2NkZmIuLjBjZTZhMzcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHlwZXNsb3RzLmgKKysrIGIvSW5jbHVkZS90eXBlc2xvdHMuaApAQCAtNzQsMyArNzQsMTIgQEAKICNkZWZpbmUgUHlfdHBfbWVtYmVycyA3MgogI2RlZmluZSBQeV90cF9nZXRzZXQgNzMKICNkZWZpbmUgUHlfdHBfZnJlZSA3NAorI2RlZmluZSBQeV9uYl9tYXRyaXhfbXVsdGlwbHkgNzUKKyNkZWZpbmUgUHlfbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHkgNzYKKyNkZWZpbmUgUHlfYW1fYXdhaXQgNzcKKyNkZWZpbmUgUHlfYW1fYWl0ZXIgNzgKKyNkZWZpbmUgUHlfYW1fYW5leHQgNzkKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDUwMDAwCisvKiBOZXcgaW4gMy41ICovCisjZGVmaW5lIFB5X3RwX2ZpbmFsaXplIDgwCisjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdWNuaGFzaC5oIGIvSW5jbHVkZS91Y25oYXNoLmgKaW5kZXggOGRlOWJhMC4uNDUzNjJlOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS91Y25oYXNoLmgKKysrIGIvSW5jbHVkZS91Y25oYXNoLmgKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBpbnQgc2l6ZTsKIAogICAgIC8qIEdldCBuYW1lIGZvciBhIGdpdmVuIGNoYXJhY3RlciBjb2RlLiAgUmV0dXJucyBub24temVybyBpZgotICAgICAgIHN1Y2Nlc3MsIHplcm8gaWYgbm90LiAgRG9lcyBub3Qgc2V0IFB5dGhvbiBleGNlcHRpb25zLiAKKyAgICAgICBzdWNjZXNzLCB6ZXJvIGlmIG5vdC4gIERvZXMgbm90IHNldCBQeXRob24gZXhjZXB0aW9ucy4KICAgICAgICBJZiBzZWxmIGlzIE5VTEwsIGRhdGEgY29tZSBmcm9tIHRoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlLgogICAgICAgIElmIGl0IGlzIG5vdCBOVUxMLCBpdCBzaG91bGQgYmUgYSB1bmljb2RlZGF0YS51Y2RfWF9ZX1ogb2JqZWN0ICovCiAgICAgaW50ICgqZ2V0bmFtZSkoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLApkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCBkN2IyYWNlLi40YmE2MzI4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtMjA2MCwxMiArMjA2MCw2IEBACiAgICAgUHlPYmplY3QgKmVsZW1lbnQgICAgICAgICAgIC8qIEVsZW1lbnQgc3RyaW5nICovCiAgICAgKTsKIAotLyogQ2hlY2tzIHdoZXRoZXIgdGhlIHN0cmluZyBjb250YWlucyBhbnkgTlVMIGNoYXJhY3RlcnMuICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0ICopOwotI2VuZGlmCi0KIC8qIENoZWNrcyB3aGV0aGVyIGFyZ3VtZW50IGlzIGEgdmFsaWQgaWRlbnRpZmllci4gKi8KIAogUHlBUElfRlVOQyhpbnQpIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIoUHlPYmplY3QgKnMpOwpAQCAtMjI0NSw2ICsyMjM5LDggQEAKICAgICBQeV9VTklDT0RFIGMKICAgICApOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gb3JtYXRMb25nKFB5T2JqZWN0ICosIGludCwgaW50LCBpbnQpOworCiAvKiBDcmVhdGUgYSBjb3B5IG9mIGEgdW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gTlVMTAogICAgYW5kIHJhaXNlIGEgTWVtb3J5RXJyb3IgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsIG90aGVyd2lzZQogICAgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSBQeU1lbV9GcmVlKCkgdG8gZnJlZSB0aGUgYnVmZmVyKS4gKi8KZGlmZiAtLWdpdCBhL0xpYi9fX2Z1dHVyZV9fLnB5IGIvTGliL19fZnV0dXJlX18ucHkKaW5kZXggM2IyZDVlYy4uNjNiMmJlMyAxMDA2NDQKLS0tIGEvTGliL19fZnV0dXJlX18ucHkKKysrIGIvTGliL19fZnV0dXJlX18ucHkKQEAgLTU2LDYgKzU2LDcgQEAKICAgICAicHJpbnRfZnVuY3Rpb24iLAogICAgICJ1bmljb2RlX2xpdGVyYWxzIiwKICAgICAiYmFycnlfYXNfRkxVRkwiLAorICAgICJnZW5lcmF0b3Jfc3RvcCIsCiBdCiAKIF9fYWxsX18gPSBbImFsbF9mZWF0dXJlX25hbWVzIl0gKyBhbGxfZmVhdHVyZV9uYW1lcwpAQCAtNzIsNiArNzMsNyBAQAogQ09fRlVUVVJFX1BSSU5UX0ZVTkNUSU9OICA9IDB4MTAwMDAgICAjIHByaW50IGZ1bmN0aW9uCiBDT19GVVRVUkVfVU5JQ09ERV9MSVRFUkFMUyA9IDB4MjAwMDAgIyB1bmljb2RlIHN0cmluZyBsaXRlcmFscwogQ09fRlVUVVJFX0JBUlJZX0FTX0JERkwgPSAweDQwMDAwCitDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgID0gMHg4MDAwMCAjIFN0b3BJdGVyYXRpb24gYmVjb21lcyBSdW50aW1lRXJyb3IgaW4gZ2VuZXJhdG9ycwogCiBjbGFzcyBfRmVhdHVyZToKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9uYWxSZWxlYXNlLCBtYW5kYXRvcnlSZWxlYXNlLCBjb21waWxlcl9mbGFnKToKQEAgLTEzMiwzICsxMzQsNyBAQAogYmFycnlfYXNfRkxVRkwgPSBfRmVhdHVyZSgoMywgMSwgMCwgImFscGhhIiwgMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKDMsIDksIDAsICJhbHBoYSIsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgIENPX0ZVVFVSRV9CQVJSWV9BU19CREZMKQorCitnZW5lcmF0b3Jfc3RvcCA9IF9GZWF0dXJlKCgzLCA1LCAwLCAiYmV0YSIsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgzLCA3LCAwLCAiYWxwaGEiLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1ApCmRpZmYgLS1naXQgYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weSBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CmluZGV4IDMzYjU5YWIuLmY4OWJiNmYgMTAwNjQ0Ci0tLSBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CisrKyBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CkBAIC05LDcgKzksOCBAQAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgc3lzCiAKLV9fYWxsX18gPSBbIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwKK19fYWxsX18gPSBbIkF3YWl0YWJsZSIsICJDb3JvdXRpbmUiLCAiQXN5bmNJdGVyYWJsZSIsICJBc3luY0l0ZXJhdG9yIiwKKyAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsCiAgICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLAogICAgICAgICAgICAiU2V0IiwgIk11dGFibGVTZXQiLAogICAgICAgICAgICAiTWFwcGluZyIsICJNdXRhYmxlTWFwcGluZyIsCkBAIC01MCw2ICs1MSwxMyBAQAogZGljdF9pdGVtcyA9IHR5cGUoe30uaXRlbXMoKSkKICMjIG1pc2MgIyMKIG1hcHBpbmdwcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKK2dlbmVyYXRvciA9IHR5cGUoKGxhbWJkYTogKHlpZWxkKSkoKSkKKyMjIGNvcm91dGluZSAjIworYXN5bmMgZGVmIF9jb3JvKCk6IHBhc3MKK19jb3JvID0gX2Nvcm8oKQorY29yb3V0aW5lID0gdHlwZShfY29ybykKK19jb3JvLmNsb3NlKCkgICMgUHJldmVudCBSZXNvdXJjZVdhcm5pbmcKK2RlbCBfY29ybwogCiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwpAQCAtNzMsNiArODEsMTEzIEBACiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKK2NsYXNzIEF3YWl0YWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgeWllbGQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBBd2FpdGFibGU6CisgICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186CisgICAgICAgICAgICAgICAgaWYgIl9fYXdhaXRfXyIgaW4gQi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19hd2FpdF9fIl06CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitjbGFzcyBDb3JvdXRpbmUoQXdhaXRhYmxlKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6CisgICAgICAgICIiIlNlbmQgYSB2YWx1ZSBpbnRvIHRoZSBjb3JvdXRpbmUuCisgICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgIiIiUmFpc2UgYW4gZXhjZXB0aW9uIGluIHRoZSBjb3JvdXRpbmUuCisgICAgICAgIFJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHZhbCBpcyBOb25lOgorICAgICAgICAgICAgaWYgdGIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSB0eXAKKyAgICAgICAgICAgIHZhbCA9IHR5cCgpCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdmFsID0gdmFsLndpdGhfdHJhY2ViYWNrKHRiKQorICAgICAgICByYWlzZSB2YWwKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiUmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgY29yb3V0aW5lLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgKEdlbmVyYXRvckV4aXQsIFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0IikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBDb3JvdXRpbmU6CisgICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KKyAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgorICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKKyAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworQ29yb3V0aW5lLnJlZ2lzdGVyKGNvcm91dGluZSkKKworCitjbGFzcyBBc3luY0l0ZXJhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gQXN5bmNJdGVyYXRvcigpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYWJsZToKKyAgICAgICAgICAgIGlmIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworY2xhc3MgQXN5bmNJdGVyYXRvcihBc3luY0l0ZXJhYmxlKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSBvciByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24gd2hlbiBleGhhdXN0ZWQuIiIiCisgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhdG9yOgorICAgICAgICAgICAgaWYgKGFueSgiX19hbmV4dF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykgYW5kCisgICAgICAgICAgICAgICAgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKwogY2xhc3MgSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTEyNCw2ICsyMzksNjQgQEAKIEl0ZXJhdG9yLnJlZ2lzdGVyKHR1cGxlX2l0ZXJhdG9yKQogSXRlcmF0b3IucmVnaXN0ZXIoemlwX2l0ZXJhdG9yKQogCisKK2NsYXNzIEdlbmVyYXRvcihJdGVyYXRvcik6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSBmcm9tIHRoZSBnZW5lcmF0b3IuCisgICAgICAgIFdoZW4gZXhoYXVzdGVkLCByYWlzZSBTdG9wSXRlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VuZChOb25lKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgZ2VuZXJhdG9yLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICIiIlJhaXNlIGFuIGV4Y2VwdGlvbiBpbiB0aGUgZ2VuZXJhdG9yLgorICAgICAgICBSZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHRiIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgdHlwCisgICAgICAgICAgICB2YWwgPSB0eXAoKQorICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKKyAgICAgICAgcmFpc2UgdmFsCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIlJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGdlbmVyYXRvci4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudGhyb3coR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZXhjZXB0IChHZW5lcmF0b3JFeGl0LCBTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgR2VuZXJhdG9yOgorICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCisgICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19pdGVyX18nLCAnX19uZXh0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgorICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKKyAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKworR2VuZXJhdG9yLnJlZ2lzdGVyKGdlbmVyYXRvcikKKworCiBjbGFzcyBTaXplZChtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtNDUzLDYgKzYyNiw4IEBACiAKIGNsYXNzIE1hcHBpbmdWaWV3KFNpemVkKToKIAorICAgIF9fc2xvdHNfXyA9ICdfbWFwcGluZycsCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFwcGluZyk6CiAgICAgICAgIHNlbGYuX21hcHBpbmcgPSBtYXBwaW5nCiAKQEAgLTQ2NSw2ICs2NDAsOCBAQAogCiBjbGFzcyBLZXlzVmlldyhNYXBwaW5nVmlldywgU2V0KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb21faXRlcmFibGUoc2VsZiwgaXQpOgogICAgICAgICByZXR1cm4gc2V0KGl0KQpAQCAtNDgwLDYgKzY1Nyw4IEBACiAKIGNsYXNzIEl0ZW1zVmlldyhNYXBwaW5nVmlldywgU2V0KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb21faXRlcmFibGUoc2VsZiwgaXQpOgogICAgICAgICByZXR1cm4gc2V0KGl0KQpAQCAtNTAyLDYgKzY4MSw4IEBACiAKIGNsYXNzIFZhbHVlc1ZpZXcoTWFwcGluZ1ZpZXcpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6CiAgICAgICAgICAgICBpZiB2YWx1ZSA9PSBzZWxmLl9tYXBwaW5nW2tleV06CkBAIC02NDcsMTMgKzgyOCwyMyBAQAogICAgICAgICBmb3IgaSBpbiByZXZlcnNlZChyYW5nZShsZW4oc2VsZikpKToKICAgICAgICAgICAgIHlpZWxkIHNlbGZbaV0KIAotICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSk6Ci0gICAgICAgICcnJ1MuaW5kZXgodmFsdWUpIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLgorICAgIGRlZiBpbmRleChzZWxmLCB2YWx1ZSwgc3RhcnQ9MCwgc3RvcD1Ob25lKToKKyAgICAgICAgJycnUy5pbmRleCh2YWx1ZSwgW3N0YXJ0LCBbc3RvcF1dKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS4KICAgICAgICAgICAgUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LgogICAgICAgICAnJycKLSAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKHNlbGYpOgotICAgICAgICAgICAgaWYgdiA9PSB2YWx1ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gaQorICAgICAgICBpZiBzdGFydCBpcyBub3QgTm9uZSBhbmQgc3RhcnQgPCAwOgorICAgICAgICAgICAgc3RhcnQgPSBtYXgobGVuKHNlbGYpICsgc3RhcnQsIDApCisgICAgICAgIGlmIHN0b3AgaXMgbm90IE5vbmUgYW5kIHN0b3AgPCAwOgorICAgICAgICAgICAgc3RvcCArPSBsZW4oc2VsZikKKworICAgICAgICBpID0gc3RhcnQKKyAgICAgICAgd2hpbGUgc3RvcCBpcyBOb25lIG9yIGkgPCBzdG9wOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHNlbGZbaV0gPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaSArPSAxCiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKIAogICAgIGRlZiBjb3VudChzZWxmLCB2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvX2NvbXByZXNzaW9uLnB5IGIvTGliL19jb21wcmVzc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDBmMzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL19jb21wcmVzc2lvbi5weQpAQCAtMCwwICsxLDE1MiBAQAorIiIiSW50ZXJuYWwgY2xhc3NlcyB1c2VkIGJ5IHRoZSBnemlwLCBsem1hIGFuZCBiejIgbW9kdWxlcyIiIgorCitpbXBvcnQgaW8KKworCitCVUZGRVJfU0laRSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUgICMgQ29tcHJlc3NlZCBkYXRhIHJlYWQgY2h1bmsgc2l6ZQorCisKK2NsYXNzIEJhc2VTdHJlYW0oaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgICIiIk1vZGUtY2hlY2tpbmcgaGVscGVyIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiBfY2hlY2tfbm90X2Nsb3NlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3JlYWQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYud3JpdGFibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiU2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib24gZmlsZXMgb3BlbiBmb3IgcmVhZGluZyIpCisgICAgICAgIGlmIG5vdCBzZWxmLnNlZWthYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCisKKworY2xhc3MgRGVjb21wcmVzc1JlYWRlcihpby5SYXdJT0Jhc2UpOgorICAgICIiIkFkYXB0cyB0aGUgZGVjb21wcmVzc29yIEFQSSB0byBhIFJhd0lPQmFzZSByZWFkZXIgQVBJIiIiCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnAsIGRlY29tcF9mYWN0b3J5LCB0cmFpbGluZ19lcnJvcj0oKSwgKipkZWNvbXBfYXJncyk6CisgICAgICAgIHNlbGYuX2ZwID0gZnAKKyAgICAgICAgc2VsZi5fZW9mID0gRmFsc2UKKyAgICAgICAgc2VsZi5fcG9zID0gMCAgIyBDdXJyZW50IG9mZnNldCBpbiBkZWNvbXByZXNzZWQgc3RyZWFtCisKKyAgICAgICAgIyBTZXQgdG8gc2l6ZSBvZiBkZWNvbXByZXNzZWQgc3RyZWFtIG9uY2UgaXQgaXMga25vd24sIGZvciBTRUVLX0VORAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICAjIFNhdmUgdGhlIGRlY29tcHJlc3NvciBmYWN0b3J5IGFuZCBhcmd1bWVudHMuCisgICAgICAgICMgSWYgdGhlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBlYWNoCisgICAgICAgICMgc3RyZWFtIHdpbGwgbmVlZCBhIHNlcGFyYXRlIGRlY29tcHJlc3NvciBvYmplY3QuIEEgbmV3IGRlY29tcHJlc3NvcgorICAgICAgICAjIG9iamVjdCBpcyBhbHNvIG5lZWRlZCB3aGVuIGltcGxlbWVudGluZyBhIGJhY2t3YXJkcyBzZWVrKCkuCisgICAgICAgIHNlbGYuX2RlY29tcF9mYWN0b3J5ID0gZGVjb21wX2ZhY3RvcnkKKyAgICAgICAgc2VsZi5fZGVjb21wX2FyZ3MgPSBkZWNvbXBfYXJncworICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBzZWxmLl9kZWNvbXBfZmFjdG9yeSgqKnNlbGYuX2RlY29tcF9hcmdzKQorCisgICAgICAgICMgRXhjZXB0aW9uIGNsYXNzIHRvIGNhdGNoIGZyb20gZGVjb21wcmVzc29yIHNpZ25pZnlpbmcgaW52YWxpZAorICAgICAgICAjIHRyYWlsaW5nIGRhdGEgdG8gaWdub3JlCisgICAgICAgIHNlbGYuX3RyYWlsaW5nX2Vycm9yID0gdHJhaWxpbmdfZXJyb3IKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICByZXR1cm4gc3VwZXIoKS5jbG9zZSgpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3LCB2aWV3LmNhc3QoIkIiKSBhcyBieXRlX3ZpZXc6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihieXRlX3ZpZXcpKQorICAgICAgICAgICAgYnl0ZV92aWV3WzpsZW4oZGF0YSldID0gZGF0YQorICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKworICAgICAgICBpZiBub3Qgc2l6ZSBvciBzZWxmLl9lb2Y6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGRhdGEgPSBOb25lICAjIERlZmF1bHQgaWYgRU9GIGlzIGVuY291bnRlcmVkCisgICAgICAgICMgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBkYXRhLCBvdXIgY2FsbCB0byB0aGUgZGVjb21wcmVzc29yIG1heSBub3QKKyAgICAgICAgIyByZXR1cm4gYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgdHJ5IGFnYWluIGFmdGVyIHJlYWRpbmcgYW5vdGhlciBibG9jay4KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSAoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnAucmVhZChCVUZGRVJfU0laRSkpCisgICAgICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gc2VsZi5fZGVjb21wX2ZhY3RvcnkoCisgICAgICAgICAgICAgICAgICAgICoqc2VsZi5fZGVjb21wX2FyZ3MpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2ssIHNpemUpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuX3RyYWlsaW5nX2Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIFRyYWlsaW5nIGRhdGEgaXNuJ3QgYSB2YWxpZCBjb21wcmVzc2VkIHN0cmVhbTsgaWdub3JlIGl0LgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IubmVlZHNfaW5wdXQ6CisgICAgICAgICAgICAgICAgICAgIHJhd2Jsb2NrID0gc2VsZi5fZnAucmVhZChCVUZGRVJfU0laRSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmF3YmxvY2sgPSBiIiIKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2ssIHNpemUpCisgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgc2VsZi5fZW9mID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcworICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KKyAgICBkZWYgX3Jld2luZChzZWxmKToKKyAgICAgICAgc2VsZi5fZnAuc2VlaygwKQorICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQorICAgICAgICBzZWxmLl9wb3MgPSAwCisgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KCoqc2VsZi5fZGVjb21wX2FyZ3MpCisKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT1pby5TRUVLX1NFVCk6CisgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCisgICAgICAgIGlmIHdoZW5jZSA9PSBpby5TRUVLX1NFVDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19FTkQ6CisgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KKyAgICAgICAgICAgIGlmIHNlbGYuX3NpemUgPCAwOgorICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYucmVhZChpby5ERUZBVUxUX0JVRkZFUl9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiB7fSIuZm9ybWF0KHdoZW5jZSkpCisKKyAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgorICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLl9wb3M6CisgICAgICAgICAgICBzZWxmLl9yZXdpbmQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2Zmc2V0IC09IHNlbGYuX3BvcworCisgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgorICAgICAgICB3aGlsZSBvZmZzZXQgPiAwOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZChtaW4oaW8uREVGQVVMVF9CVUZGRVJfU0laRSwgb2Zmc2V0KSkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBvZmZzZXQgLT0gbGVuKGRhdGEpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcG9zCmRpZmYgLS1naXQgYS9MaWIvX2R1bW15X3RocmVhZC5weSBiL0xpYi9fZHVtbXlfdGhyZWFkLnB5CmluZGV4IGI2N2NmYjkuLjM2ZTVmMzggMTAwNjQ0Ci0tLSBhL0xpYi9fZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi9fZHVtbXlfdGhyZWFkLnB5CkBAIC0xNDAsNiArMTQwLDE0IEBACiAgICAgZGVmIGxvY2tlZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkX3N0YXR1cwogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjwlcyAlcy4lcyBvYmplY3QgYXQgJXM+IiAlICgKKyAgICAgICAgICAgICJsb2NrZWQiIGlmIHNlbGYubG9ja2VkX3N0YXR1cyBlbHNlICJ1bmxvY2tlZCIsCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgaGV4KGlkKHNlbGYpKQorICAgICAgICApCisKICMgVXNlZCB0byBzaWduYWwgdGhhdCBpbnRlcnJ1cHRfbWFpbiB3YXMgY2FsbGVkIGluIGEgInRocmVhZCIKIF9pbnRlcnJ1cHQgPSBGYWxzZQogIyBUcnVlIHdoZW4gbm90IGV4ZWN1dGluZyBpbiBhICJ0aHJlYWQiCmRpZmYgLS1naXQgYS9MaWIvX3B5ZGVjaW1hbC5weSBiL0xpYi9fcHlkZWNpbWFsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YmE0ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvX3B5ZGVjaW1hbC5weQpAQCAtMCwwICsxLDYzODAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA0IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisjIFdyaXR0ZW4gYnkgRXJpYyBQcmljZSA8ZXByaWNlIGF0IHRqaHNzdC5lZHU+CisjICAgIGFuZCBGYWN1bmRvIEJhdGlzdGEgPGZhY3VuZG8gYXQgdGFuaXF1ZXRpbC5jb20uYXI+CisjICAgIGFuZCBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CisjICAgIGFuZCBBYWh6IDxhYWh6IGF0IHBvYm94LmNvbT4KKyMgICAgYW5kIFRpbSBQZXRlcnMKKworIyBUaGlzIG1vZHVsZSBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggdGhlIGxhdGVzdCB1cGRhdGVzIG9mIHRoZQorIyBJQk0gc3BlY2lmaWNhdGlvbiBhcyBpdCBldm9sdmVzLiAgVGhvc2UgdXBkYXRlcyB3aWxsIGJlIHRyZWF0ZWQKKyMgYXMgYnVnIGZpeGVzIChkZXZpYXRpb24gZnJvbSB0aGUgc3BlYyBpcyBhIGNvbXBhdGliaWxpdHksIHVzYWJpbGl0eQorIyBidWcpIGFuZCB3aWxsIGJlIGJhY2twb3J0ZWQuICBBdCB0aGlzIHBvaW50IHRoZSBzcGVjIGlzIHN0YWJpbGl6aW5nCisjIGFuZCB0aGUgdXBkYXRlcyBhcmUgYmVjb21pbmcgZmV3ZXIsIHNtYWxsZXIsIGFuZCBsZXNzIHNpZ25pZmljYW50LgorCisiIiIKK1RoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIGJhc2VkIG9uCit0aGUgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbjoKKworICAgIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC9kZWNhcml0aC5odG1sCisKK2FuZCBJRUVFIHN0YW5kYXJkIDg1NC0xOTg3OgorCisgICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRUVFXzg1NC0xOTg3CisKK0RlY2ltYWwgZmxvYXRpbmcgcG9pbnQgaGFzIGZpbml0ZSBwcmVjaXNpb24gd2l0aCBhcmJpdHJhcmlseSBsYXJnZSBib3VuZHMuCisKK1RoZSBwdXJwb3NlIG9mIHRoaXMgbW9kdWxlIGlzIHRvIHN1cHBvcnQgYXJpdGhtZXRpYyB1c2luZyBmYW1pbGlhcgorInNjaG9vbGhvdXNlIiBydWxlcyBhbmQgdG8gYXZvaWQgc29tZSBvZiB0aGUgdHJpY2t5IHJlcHJlc2VudGF0aW9uCitpc3N1ZXMgYXNzb2NpYXRlZCB3aXRoIGJpbmFyeSBmbG9hdGluZyBwb2ludC4gIFRoZSBwYWNrYWdlIGlzIGVzcGVjaWFsbHkKK3VzZWZ1bCBmb3IgZmluYW5jaWFsIGFwcGxpY2F0aW9ucyBvciBmb3IgY29udGV4dHMgd2hlcmUgdXNlcnMgaGF2ZQorZXhwZWN0YXRpb25zIHRoYXQgYXJlIGF0IG9kZHMgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQgKGZvciBpbnN0YW5jZSwKK2luIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgMS4wMCAlIDAuMSBnaXZlcyAwLjA5OTk5OTk5OTk5OTk5OTk1IGluc3RlYWQKK29mIDAuMDsgRGVjaW1hbCgnMS4wMCcpICUgRGVjaW1hbCgnMC4xJykgcmV0dXJucyB0aGUgZXhwZWN0ZWQKK0RlY2ltYWwoJzAuMDAnKSkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIGRlY2ltYWwgbW9kdWxlOgorCis+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCis+Pj4gc2V0Y29udGV4dChFeHRlbmRlZENvbnRleHQpCis+Pj4gRGVjaW1hbCgwKQorRGVjaW1hbCgnMCcpCis+Pj4gRGVjaW1hbCgnMScpCitEZWNpbWFsKCcxJykKKz4+PiBEZWNpbWFsKCctLjAxMjMnKQorRGVjaW1hbCgnLTAuMDEyMycpCis+Pj4gRGVjaW1hbCgxMjM0NTYpCitEZWNpbWFsKCcxMjM0NTYnKQorPj4+IERlY2ltYWwoJzEyMy40NWUxMjM0NTY3OCcpCitEZWNpbWFsKCcxLjIzNDVFKzEyMzQ1NjgwJykKKz4+PiBEZWNpbWFsKCcxLjMzJykgKyBEZWNpbWFsKCcxLjI3JykKK0RlY2ltYWwoJzIuNjAnKQorPj4+IERlY2ltYWwoJzEyLjM0JykgKyBEZWNpbWFsKCczLjg3JykgLSBEZWNpbWFsKCcxOC40MScpCitEZWNpbWFsKCctMi4yMCcpCis+Pj4gZGlnID0gRGVjaW1hbCgxKQorPj4+IHByaW50KGRpZyAvIERlY2ltYWwoMykpCiswLjMzMzMzMzMzMworPj4+IGdldGNvbnRleHQoKS5wcmVjID0gMTgKKz4+PiBwcmludChkaWcgLyBEZWNpbWFsKDMpKQorMC4zMzMzMzMzMzMzMzMzMzMzMzMKKz4+PiBwcmludChkaWcuc3FydCgpKQorMQorPj4+IHByaW50KERlY2ltYWwoMykuc3FydCgpKQorMS43MzIwNTA4MDc1Njg4NzcyOQorPj4+IHByaW50KERlY2ltYWwoMykgKiogMTIzKQorNC44NTE5Mjc4MDk3Njg5NjQyN0UrNTgKKz4+PiBpbmYgPSBEZWNpbWFsKDEpIC8gRGVjaW1hbCgwKQorPj4+IHByaW50KGluZikKK0luZmluaXR5Cis+Pj4gbmVnaW5mID0gRGVjaW1hbCgtMSkgLyBEZWNpbWFsKDApCis+Pj4gcHJpbnQobmVnaW5mKQorLUluZmluaXR5Cis+Pj4gcHJpbnQobmVnaW5mICsgaW5mKQorTmFOCis+Pj4gcHJpbnQobmVnaW5mICogaW5mKQorLUluZmluaXR5Cis+Pj4gcHJpbnQoZGlnIC8gMCkKK0luZmluaXR5Cis+Pj4gZ2V0Y29udGV4dCgpLnRyYXBzW0RpdmlzaW9uQnlaZXJvXSA9IDEKKz4+PiBwcmludChkaWcgLyAwKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAuLi4KKyAgLi4uCisgIC4uLgorZGVjaW1hbC5EaXZpc2lvbkJ5WmVybzogeCAvIDAKKz4+PiBjID0gQ29udGV4dCgpCis+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMAorPj4+IGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpCitEZWNpbWFsKCdOYU4nKQorPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAxCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzEKKz4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAorPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCiswCis+Pj4gcHJpbnQoYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkpCitUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgIC4uLgorICAuLi4KKyAgLi4uCitkZWNpbWFsLkludmFsaWRPcGVyYXRpb246IDAgLyAwCis+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKzEKKz4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAorPj4+IGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSAwCis+Pj4gcHJpbnQoYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkpCitOYU4KKz4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorMQorPj4+CisiIiIKKworX19hbGxfXyA9IFsKKyAgICAjIFR3byBtYWpvciBjbGFzc2VzCisgICAgJ0RlY2ltYWwnLCAnQ29udGV4dCcsCisKKyAgICAjIE5hbWVkIHR1cGxlIHJlcHJlc2VudGF0aW9uCisgICAgJ0RlY2ltYWxUdXBsZScsCisKKyAgICAjIENvbnRleHRzCisgICAgJ0RlZmF1bHRDb250ZXh0JywgJ0Jhc2ljQ29udGV4dCcsICdFeHRlbmRlZENvbnRleHQnLAorCisgICAgIyBFeGNlcHRpb25zCisgICAgJ0RlY2ltYWxFeGNlcHRpb24nLCAnQ2xhbXBlZCcsICdJbnZhbGlkT3BlcmF0aW9uJywgJ0RpdmlzaW9uQnlaZXJvJywKKyAgICAnSW5leGFjdCcsICdSb3VuZGVkJywgJ1N1Ym5vcm1hbCcsICdPdmVyZmxvdycsICdVbmRlcmZsb3cnLAorICAgICdGbG9hdE9wZXJhdGlvbicsCisKKyAgICAjIEV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIEludmFsaWRPcGVyYXRpb24KKyAgICAnRGl2aXNpb25JbXBvc3NpYmxlJywgJ0ludmFsaWRDb250ZXh0JywgJ0NvbnZlcnNpb25TeW50YXgnLCAnRGl2aXNpb25VbmRlZmluZWQnLAorCisgICAgIyBDb25zdGFudHMgZm9yIHVzZSBpbiBzZXR0aW5nIHVwIGNvbnRleHRzCisgICAgJ1JPVU5EX0RPV04nLCAnUk9VTkRfSEFMRl9VUCcsICdST1VORF9IQUxGX0VWRU4nLCAnUk9VTkRfQ0VJTElORycsCisgICAgJ1JPVU5EX0ZMT09SJywgJ1JPVU5EX1VQJywgJ1JPVU5EX0hBTEZfRE9XTicsICdST1VORF8wNVVQJywKKworICAgICMgRnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgY29udGV4dHMKKyAgICAnc2V0Y29udGV4dCcsICdnZXRjb250ZXh0JywgJ2xvY2FsY29udGV4dCcsCisKKyAgICAjIExpbWl0cyBmb3IgdGhlIEMgdmVyc2lvbiBmb3IgY29tcGF0aWJpbGl0eQorICAgICdNQVhfUFJFQycsICAnTUFYX0VNQVgnLCAnTUlOX0VNSU4nLCAnTUlOX0VUSU5ZJywKKworICAgICMgQyB2ZXJzaW9uOiBjb21waWxlIHRpbWUgY2hvaWNlIHRoYXQgZW5hYmxlcyB0aGUgdGhyZWFkIGxvY2FsIGNvbnRleHQKKyAgICAnSEFWRV9USFJFQURTJworXQorCitfX3huYW1lX18gPSBfX25hbWVfXyAgICAjIHN5cy5tb2R1bGVzIGxvb2t1cCAoLS13aXRob3V0LXRocmVhZHMpCitfX25hbWVfXyA9ICdkZWNpbWFsJyAgICAjIEZvciBwaWNrbGluZworX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCitfX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KKworaW1wb3J0IG1hdGggYXMgX21hdGgKK2ltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCitpbXBvcnQgc3lzCisKK3RyeToKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCisgICAgRGVjaW1hbFR1cGxlID0gX25hbWVkdHVwbGUoJ0RlY2ltYWxUdXBsZScsICdzaWduIGRpZ2l0cyBleHBvbmVudCcpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgRGVjaW1hbFR1cGxlID0gbGFtYmRhICphcmdzOiBhcmdzCisKKyMgUm91bmRpbmcKK1JPVU5EX0RPV04gPSAnUk9VTkRfRE9XTicKK1JPVU5EX0hBTEZfVVAgPSAnUk9VTkRfSEFMRl9VUCcKK1JPVU5EX0hBTEZfRVZFTiA9ICdST1VORF9IQUxGX0VWRU4nCitST1VORF9DRUlMSU5HID0gJ1JPVU5EX0NFSUxJTkcnCitST1VORF9GTE9PUiA9ICdST1VORF9GTE9PUicKK1JPVU5EX1VQID0gJ1JPVU5EX1VQJworUk9VTkRfSEFMRl9ET1dOID0gJ1JPVU5EX0hBTEZfRE9XTicKK1JPVU5EXzA1VVAgPSAnUk9VTkRfMDVVUCcKKworIyBDb21wYXRpYmlsaXR5IHdpdGggdGhlIEMgdmVyc2lvbgorSEFWRV9USFJFQURTID0gVHJ1ZQoraWYgc3lzLm1heHNpemUgPT0gMioqNjMtMToKKyAgICBNQVhfUFJFQyA9IDk5OTk5OTk5OTk5OTk5OTk5OQorICAgIE1BWF9FTUFYID0gOTk5OTk5OTk5OTk5OTk5OTk5CisgICAgTUlOX0VNSU4gPSAtOTk5OTk5OTk5OTk5OTk5OTk5CitlbHNlOgorICAgIE1BWF9QUkVDID0gNDI1MDAwMDAwCisgICAgTUFYX0VNQVggPSA0MjUwMDAwMDAKKyAgICBNSU5fRU1JTiA9IC00MjUwMDAwMDAKKworTUlOX0VUSU5ZID0gTUlOX0VNSU4gLSAoTUFYX1BSRUMtMSkKKworIyBFcnJvcnMKKworY2xhc3MgRGVjaW1hbEV4Y2VwdGlvbihBcml0aG1ldGljRXJyb3IpOgorICAgICIiIkJhc2UgZXhjZXB0aW9uIGNsYXNzLgorCisgICAgVXNlZCBleGNlcHRpb25zIGRlcml2ZSBmcm9tIHRoaXMuCisgICAgSWYgYW4gZXhjZXB0aW9uIGRlcml2ZXMgZnJvbSBhbm90aGVyIGV4Y2VwdGlvbiBiZXNpZGVzIHRoaXMgKHN1Y2ggYXMKKyAgICBVbmRlcmZsb3cgKEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCkgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBvbmx5CisgICAgY2FsbGVkIGlmIHRoZSBvdGhlcnMgYXJlIHByZXNlbnQuICBUaGlzIGlzbid0IGFjdHVhbGx5IHVzZWQgZm9yCisgICAgYW55dGhpbmcsIHRob3VnaC4KKworICAgIGhhbmRsZSAgLS0gQ2FsbGVkIHdoZW4gY29udGV4dC5fcmFpc2VfZXJyb3IgaXMgY2FsbGVkIGFuZCB0aGUKKyAgICAgICAgICAgICAgIHRyYXBfZW5hYmxlciBpcyBub3Qgc2V0LiAgRmlyc3QgYXJndW1lbnQgaXMgc2VsZiwgc2Vjb25kIGlzIHRoZQorICAgICAgICAgICAgICAgY29udGV4dC4gIE1vcmUgYXJndW1lbnRzIGNhbiBiZSBnaXZlbiwgdGhvc2UgYmVpbmcgYWZ0ZXIKKyAgICAgICAgICAgICAgIHRoZSBleHBsYW5hdGlvbiBpbiBfcmFpc2VfZXJyb3IgKEZvciBleGFtcGxlLAorICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoTmV3RXJyb3IsICcoLXgpIScsIHNlbGYuX3NpZ24pIHdvdWxkCisgICAgICAgICAgICAgICBjYWxsIE5ld0Vycm9yKCkuaGFuZGxlKGNvbnRleHQsIHNlbGYuX3NpZ24pLikKKworICAgIFRvIGRlZmluZSBhIG5ldyBleGNlcHRpb24sIGl0IHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGhhdmUgaXQgZGVyaXZlCisgICAgZnJvbSBEZWNpbWFsRXhjZXB0aW9uLgorICAgICIiIgorICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQ2xhbXBlZChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJFeHBvbmVudCBvZiBhIDAgY2hhbmdlZCB0byBmaXQgYm91bmRzLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgY2xhbXBlZCBpZiB0aGUgZXhwb25lbnQgb2YgYSByZXN1bHQgaGFzIGJlZW4KKyAgICBhbHRlcmVkIGluIG9yZGVyIHRvIGZpdCB0aGUgY29uc3RyYWludHMgb2YgYSBzcGVjaWZpYyBjb25jcmV0ZQorICAgIHJlcHJlc2VudGF0aW9uLiAgVGhpcyBtYXkgb2NjdXIgd2hlbiB0aGUgZXhwb25lbnQgb2YgYSB6ZXJvIHJlc3VsdCB3b3VsZAorICAgIGJlIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhIHJlcHJlc2VudGF0aW9uLCBvciB3aGVuIGEgbGFyZ2Ugbm9ybWFsCisgICAgbnVtYmVyIHdvdWxkIGhhdmUgYW4gZW5jb2RlZCBleHBvbmVudCB0aGF0IGNhbm5vdCBiZSByZXByZXNlbnRlZC4gIEluCisgICAgdGhpcyBsYXR0ZXIgY2FzZSwgdGhlIGV4cG9uZW50IGlzIHJlZHVjZWQgdG8gZml0IGFuZCB0aGUgY29ycmVzcG9uZGluZworICAgIG51bWJlciBvZiB6ZXJvIGRpZ2l0cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGNvZWZmaWNpZW50ICgiZm9sZC1kb3duIikuCisgICAgIiIiCisKK2NsYXNzIEludmFsaWRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbik6CisgICAgIiIiQW4gaW52YWxpZCBvcGVyYXRpb24gd2FzIHBlcmZvcm1lZC4KKworICAgIFZhcmlvdXMgYmFkIHRoaW5ncyBjYXVzZSB0aGlzOgorCisgICAgU29tZXRoaW5nIGNyZWF0ZXMgYSBzaWduYWxpbmcgTmFOCisgICAgLUlORiArIElORgorICAgIDAgKiAoKy0pSU5GCisgICAgKCstKUlORiAvICgrLSlJTkYKKyAgICB4ICUgMAorICAgICgrLSlJTkYgJSB4CisgICAgeC5fcmVzY2FsZSggbm9uLWludGVnZXIgKQorICAgIHNxcnQoLXgpICwgeCA+IDAKKyAgICAwICoqIDAKKyAgICB4ICoqIChub24taW50ZWdlcikKKyAgICB4ICoqICgrLSlJTkYKKyAgICBBbiBvcGVyYW5kIGlzIGludmFsaWQKKworICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhZnRlciB0aGVzZSBpcyBhIHF1aWV0IHBvc2l0aXZlIE5hTiwKKyAgICBleGNlcHQgd2hlbiB0aGUgY2F1c2UgaXMgYSBzaWduYWxpbmcgTmFOLCBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMKKyAgICBhbHNvIGEgcXVpZXQgTmFOLCBidXQgd2l0aCB0aGUgb3JpZ2luYWwgc2lnbiwgYW5kIGFuIG9wdGlvbmFsCisgICAgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4KKyAgICAiIiIKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYXJnc1swXS5fc2lnbiwgYXJnc1swXS5faW50LCAnbicsIFRydWUpCisgICAgICAgICAgICByZXR1cm4gYW5zLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgIHJldHVybiBfTmFOCisKK2NsYXNzIENvbnZlcnNpb25TeW50YXgoSW52YWxpZE9wZXJhdGlvbik6CisgICAgIiIiVHJ5aW5nIHRvIGNvbnZlcnQgYmFkbHkgZm9ybWVkIHN0cmluZy4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGFuIHN0cmluZyBpcyBiZWluZworICAgIGNvbnZlcnRlZCB0byBhIG51bWJlciBhbmQgaXQgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgbnVtZXJpYyBzdHJpbmcKKyAgICBzeW50YXguICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgorICAgICIiIgorICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBEaXZpc2lvbkJ5WmVybyhEZWNpbWFsRXhjZXB0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6CisgICAgIiIiRGl2aXNpb24gYnkgMC4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGRpdmlzaW9uLWJ5LXplcm8gaWYgZGl2aXNpb24gb2YgYSBmaW5pdGUgbnVtYmVyCisgICAgYnkgemVybyB3YXMgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciBvciBkaXZpZGUgb3BlcmF0aW9uLCBvciBhCisgICAgcG93ZXIgb3BlcmF0aW9uIHdpdGggbmVnYXRpdmUgcmlnaHQtaGFuZCBvcGVyYW5kKSwgYW5kIHRoZSBkaXZpZGVuZCB3YXMKKyAgICBub3QgemVyby4KKworICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpcyBbc2lnbixpbmZdLCB3aGVyZSBzaWduIGlzIHRoZSBleGNsdXNpdmUKKyAgICBvciBvZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGZvciBkaXZpZGUsIG9yIGlzIDEgZm9yIGFuIG9kZCBwb3dlciBvZgorICAgIC0wLCBmb3IgcG93ZXIuCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtzaWduXQorCitjbGFzcyBEaXZpc2lvbkltcG9zc2libGUoSW52YWxpZE9wZXJhdGlvbik6CisgICAgIiIiQ2Fubm90IHBlcmZvcm0gdGhlIGRpdmlzaW9uIGFkZXF1YXRlbHkuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiB0aGUgaW50ZWdlciByZXN1bHQgb2YgYQorICAgIGRpdmlkZS1pbnRlZ2VyIG9yIHJlbWFpbmRlciBvcGVyYXRpb24gaGFkIHRvbyBtYW55IGRpZ2l0cyAod291bGQgYmUKKyAgICBsb25nZXIgdGhhbiBwcmVjaXNpb24pLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBEaXZpc2lvblVuZGVmaW5lZChJbnZhbGlkT3BlcmF0aW9uLCBaZXJvRGl2aXNpb25FcnJvcik6CisgICAgIiIiVW5kZWZpbmVkIHJlc3VsdCBvZiBkaXZpc2lvbi4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGRpdmlzaW9uIGJ5IHplcm8gd2FzCisgICAgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciwgZGl2aWRlLCBvciByZW1haW5kZXIgb3BlcmF0aW9uKSwgYW5kCisgICAgdGhlIGRpdmlkZW5kIGlzIGFsc28gemVyby4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKKyAgICAgICAgcmV0dXJuIF9OYU4KKworY2xhc3MgSW5leGFjdChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJIYWQgdG8gcm91bmQsIGxvc2luZyBpbmZvcm1hdGlvbi4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGluZXhhY3Qgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKKyAgICBub3QgZXhhY3QgKHRoYXQgaXMsIGl0IG5lZWRlZCB0byBiZSByb3VuZGVkIGFuZCBhbnkgZGlzY2FyZGVkIGRpZ2l0cworICAgIHdlcmUgbm9uLXplcm8pLCBvciBpZiBhbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgY29uZGl0aW9uIG9jY3Vycy4gIFRoZQorICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgorCisgICAgVGhlIGluZXhhY3Qgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCisgICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB3YXMgaW5leGFjdC4KKyAgICAiIiIKKworY2xhc3MgSW52YWxpZENvbnRleHQoSW52YWxpZE9wZXJhdGlvbik6CisgICAgIiIiSW52YWxpZCBjb250ZXh0LiAgVW5rbm93biByb3VuZGluZywgZm9yIGV4YW1wbGUuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBpbnZhbGlkIGNvbnRleHQgd2FzCisgICAgZGV0ZWN0ZWQgZHVyaW5nIGFuIG9wZXJhdGlvbi4gIFRoaXMgY2FuIG9jY3VyIGlmIGNvbnRleHRzIGFyZSBub3QgY2hlY2tlZAorICAgIG9uIGNyZWF0aW9uIGFuZCBlaXRoZXIgdGhlIHByZWNpc2lvbiBleGNlZWRzIHRoZSBjYXBhYmlsaXR5IG9mIHRoZQorICAgIHVuZGVybHlpbmcgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb3IgYW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCByb3VuZGluZworICAgIHdhcyBzcGVjaWZpZWQuICBUaGVzZSBhc3BlY3RzIG9mIHRoZSBjb250ZXh0IG5lZWQgb25seSBiZSBjaGVja2VkIHdoZW4KKyAgICB0aGUgdmFsdWVzIGFyZSByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KKyAgICAiIiIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgY29udGV4dCwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gX05hTgorCitjbGFzcyBSb3VuZGVkKERlY2ltYWxFeGNlcHRpb24pOgorICAgICIiIk51bWJlciBnb3Qgcm91bmRlZCAobm90ICBuZWNlc3NhcmlseSBjaGFuZ2VkIGR1cmluZyByb3VuZGluZykuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyByb3VuZGVkIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCisgICAgcm91bmRlZCAodGhhdCBpcywgc29tZSB6ZXJvIG9yIG5vbi16ZXJvIGRpZ2l0cyB3ZXJlIGRpc2NhcmRlZCBmcm9tIHRoZQorICAgIGNvZWZmaWNpZW50KSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKKyAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KKworICAgIFRoZSByb3VuZGVkIHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgorICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgY2F1c2VkIGEgbG9zcyBvZiBwcmVjaXNpb24uCisgICAgIiIiCisKK2NsYXNzIFN1Ym5vcm1hbChEZWNpbWFsRXhjZXB0aW9uKToKKyAgICAiIiJFeHBvbmVudCA8IEVtaW4gYmVmb3JlIHJvdW5kaW5nLgorCisgICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgc3Vibm9ybWFsIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYSBjb252ZXJzaW9uIG9yCisgICAgb3BlcmF0aW9uIGlzIHN1Ym5vcm1hbCAodGhhdCBpcywgaXRzIGFkanVzdGVkIGV4cG9uZW50IGlzIGxlc3MgdGhhbgorICAgIEVtaW4sIGJlZm9yZSBhbnkgcm91bmRpbmcpLiAgVGhlIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgorCisgICAgVGhlIHN1Ym5vcm1hbCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KKyAgICBvciBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIHlpZWxkZWQgYSBzdWJub3JtYWwgcmVzdWx0LgorICAgICIiIgorCitjbGFzcyBPdmVyZmxvdyhJbmV4YWN0LCBSb3VuZGVkKToKKyAgICAiIiJOdW1lcmljYWwgb3ZlcmZsb3cuCisKKyAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBvdmVyZmxvdyBpZiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgYSByZXN1bHQKKyAgICAoZnJvbSBhIGNvbnZlcnNpb24gb3IgZnJvbSBhbiBvcGVyYXRpb24gdGhhdCBpcyBub3QgYW4gYXR0ZW1wdCB0byBkaXZpZGUKKyAgICBieSB6ZXJvKSwgYWZ0ZXIgcm91bmRpbmcsIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0CisgICAgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUgRW1heCkuCisKKyAgICBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHJvdW5kaW5nIG1vZGU6CisKKyAgICBGb3Igcm91bmQtaGFsZi11cCBhbmQgcm91bmQtaGFsZi1ldmVuIChhbmQgZm9yIHJvdW5kLWhhbGYtZG93biBhbmQKKyAgICByb3VuZC11cCwgaWYgaW1wbGVtZW50ZWQpLCB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwKKyAgICB3aGVyZSBzaWduIGlzIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yIHJvdW5kLWRvd24sIHRoZQorICAgIHJlc3VsdCBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQorICAgIGN1cnJlbnQgcHJlY2lzaW9uLCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0LiAgRm9yCisgICAgcm91bmQtY2VpbGluZywgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3Igcm91bmQtZG93biBpZiB0aGUgc2lnbiBvZgorICAgIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGlzIDEsIG9yIGlzIFswLGluZl0gb3RoZXJ3aXNlLiAgRm9yIHJvdW5kLWZsb29yLAorICAgIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZQorICAgIHJlc3VsdCBpcyAwLCBvciBpcyBbMSxpbmZdIG90aGVyd2lzZS4gIEluIGFsbCBjYXNlcywgSW5leGFjdCBhbmQgUm91bmRlZAorICAgIHdpbGwgYWxzbyBiZSByYWlzZWQuCisgICAgIiIiCisKKyAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsIHNpZ24sICphcmdzKToKKyAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyBpbiAoUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9FVkVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBST1VORF9IQUxGX0RPV04sIFJPVU5EX1VQKToKKyAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKyAgICAgICAgaWYgc2lnbiA9PSAwOgorICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9DRUlMSU5HOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5FbWF4LWNvbnRleHQucHJlYysxKQorICAgICAgICBpZiBzaWduID09IDE6CisgICAgICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICc5Jypjb250ZXh0LnByZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKKworCitjbGFzcyBVbmRlcmZsb3coSW5leGFjdCwgUm91bmRlZCwgU3Vibm9ybWFsKToKKyAgICAiIiJOdW1lcmljYWwgdW5kZXJmbG93IHdpdGggcmVzdWx0IHJvdW5kZWQgdG8gMC4KKworICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHVuZGVyZmxvdyBpZiBhIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCB0aGUKKyAgICBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIHNtYWxsZXIgKG1vcmUgbmVnYXRpdmUpIHRoYW4KKyAgICB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gKHRoZSB2YWx1ZQorICAgIEVtaW4pLiAgVGhhdCBpcywgdGhlIHJlc3VsdCBpcyBib3RoIGluZXhhY3QgYW5kIHN1Ym5vcm1hbC4KKworICAgIFRoZSByZXN1bHQgYWZ0ZXIgYW4gdW5kZXJmbG93IHdpbGwgYmUgYSBzdWJub3JtYWwgbnVtYmVyIHJvdW5kZWQsIGlmCisgICAgbmVjZXNzYXJ5LCBzbyB0aGF0IGl0cyBleHBvbmVudCBpcyBub3QgbGVzcyB0aGFuIEV0aW55LiAgVGhpcyBtYXkgcmVzdWx0CisgICAgaW4gMCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCBhbiBleHBvbmVudCBvZiBFdGlueS4KKworICAgIEluIGFsbCBjYXNlcywgSW5leGFjdCwgUm91bmRlZCwgYW5kIFN1Ym5vcm1hbCB3aWxsIGFsc28gYmUgcmFpc2VkLgorICAgICIiIgorCitjbGFzcyBGbG9hdE9wZXJhdGlvbihEZWNpbWFsRXhjZXB0aW9uLCBUeXBlRXJyb3IpOgorICAgICIiIkVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSBEZWNpbWFsKCkgY29uc3RydWN0b3IsIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKSBhbmQKKyAgICBhbGwgY29tcGFyaXNvbiBvcGVyYXRvcnMuIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LgorICAgIEFueSBvY2N1cnJlbmNlIG9mIGEgbWl4ZWQgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcKKyAgICBGbG9hdE9wZXJhdGlvbiBpbiB0aGUgY29udGV4dCBmbGFncy4gIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGgKKyAgICBEZWNpbWFsLmZyb21fZmxvYXQoKSBvciBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSBkbyBub3QKKyAgICBzZXQgdGhlIGZsYWcuCisKKyAgICBPdGhlcndpc2UgKHRoZSBzaWduYWwgaXMgdHJhcHBlZCksIG9ubHkgZXF1YWxpdHkgY29tcGFyaXNvbnMgYW5kIGV4cGxpY2l0CisgICAgY29udmVyc2lvbnMgYXJlIHNpbGVudC4gQWxsIG90aGVyIG1peGVkIG9wZXJhdGlvbnMgcmFpc2UgRmxvYXRPcGVyYXRpb24uCisgICAgIiIiCisKKyMgTGlzdCBvZiBwdWJsaWMgdHJhcHMgYW5kIGZsYWdzCitfc2lnbmFscyA9IFtDbGFtcGVkLCBEaXZpc2lvbkJ5WmVybywgSW5leGFjdCwgT3ZlcmZsb3csIFJvdW5kZWQsCisgICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbCwgRmxvYXRPcGVyYXRpb25dCisKKyMgTWFwIGNvbmRpdGlvbnMgKHBlciB0aGUgc3BlYykgdG8gc2lnbmFscworX2NvbmRpdGlvbl9tYXAgPSB7Q29udmVyc2lvblN5bnRheDpJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgRGl2aXNpb25JbXBvc3NpYmxlOkludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICBEaXZpc2lvblVuZGVmaW5lZDpJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgSW52YWxpZENvbnRleHQ6SW52YWxpZE9wZXJhdGlvbn0KKworIyBWYWxpZCByb3VuZGluZyBtb2RlcworX3JvdW5kaW5nX21vZGVzID0gKFJPVU5EX0RPV04sIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwgUk9VTkRfQ0VJTElORywKKyAgICAgICAgICAgICAgICAgICBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfMDVVUCkKKworIyMjIyMgQ29udGV4dCBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBUaGUgZ2V0Y29udGV4dCgpIGFuZCBzZXRjb250ZXh0KCkgZnVuY3Rpb24gbWFuYWdlIGFjY2VzcyB0byBhIHRocmVhZC1sb2NhbAorIyBjdXJyZW50IGNvbnRleHQuICBQeTIuNCBvZmZlcnMgZGlyZWN0IHN1cHBvcnQgZm9yIHRocmVhZCBsb2NhbHMuICBJZiB0aGF0CisjIGlzIG5vdCBhdmFpbGFibGUsIHVzZSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSB3aGljaCBpcyBzbG93ZXIgYnV0IHdpbGwKKyMgd29yayBmb3Igb2xkZXIgUHl0aG9ucy4gIElmIHRocmVhZHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBidWlsZCwgY3JlYXRlIGEKKyMgbW9jayB0aHJlYWRpbmcgb2JqZWN0IHdpdGggdGhyZWFkaW5nLmxvY2FsKCkgcmV0dXJuaW5nIHRoZSBtb2R1bGUgbmFtZXNwYWNlLgorCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHM7IGNyZWF0ZSBhIG1vY2sgb2JqZWN0IGluc3RlYWQKKyAgICBjbGFzcyBNb2NrVGhyZWFkaW5nKG9iamVjdCk6CisgICAgICAgIGRlZiBsb2NhbChzZWxmLCBzeXM9c3lzKToKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tfX3huYW1lX19dCisgICAgdGhyZWFkaW5nID0gTW9ja1RocmVhZGluZygpCisgICAgZGVsIE1vY2tUaHJlYWRpbmcKKwordHJ5OgorICAgIHRocmVhZGluZy5sb2NhbAorCitleGNlcHQgQXR0cmlidXRlRXJyb3I6CisKKyAgICAjIFRvIGZpeCByZWxvYWRpbmcsIGZvcmNlIGl0IHRvIGNyZWF0ZSBhIG5ldyBjb250ZXh0CisgICAgIyBPbGQgY29udGV4dHMgaGF2ZSBkaWZmZXJlbnQgZXhjZXB0aW9ucyBpbiB0aGVpciBkaWN0cywgbWFraW5nIHByb2JsZW1zLgorICAgIGlmIGhhc2F0dHIodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCksICdfX2RlY2ltYWxfY29udGV4dF9fJyk6CisgICAgICAgIGRlbCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCisKKyAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0KToKKyAgICAgICAgIiIiU2V0IHRoaXMgdGhyZWFkJ3MgY29udGV4dCB0byBjb250ZXh0LiIiIgorICAgICAgICBpZiBjb250ZXh0IGluIChEZWZhdWx0Q29udGV4dCwgQmFzaWNDb250ZXh0LCBFeHRlbmRlZENvbnRleHQpOgorICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKworICAgIGRlZiBnZXRjb250ZXh0KCk6CisgICAgICAgICIiIlJldHVybnMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgorCisgICAgICAgIElmIHRoaXMgdGhyZWFkIGRvZXMgbm90IHlldCBoYXZlIGEgY29udGV4dCwgcmV0dXJucworICAgICAgICBhIG5ldyBjb250ZXh0IGFuZCBzZXRzIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KKyAgICAgICAgTmV3IGNvbnRleHRzIGFyZSBjb3BpZXMgb2YgRGVmYXVsdENvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKKworZWxzZToKKworICAgIGxvY2FsID0gdGhyZWFkaW5nLmxvY2FsKCkKKyAgICBpZiBoYXNhdHRyKGxvY2FsLCAnX19kZWNpbWFsX2NvbnRleHRfXycpOgorICAgICAgICBkZWwgbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXworCisgICAgZGVmIGdldGNvbnRleHQoX2xvY2FsPWxvY2FsKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCisKKyAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCisgICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgorICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCisgICAgICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0CisKKyAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0LCBfbG9jYWw9bG9jYWwpOgorICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6CisgICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQorICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKKworICAgIGRlbCB0aHJlYWRpbmcsIGxvY2FsICAgICAgICAjIERvbid0IGNvbnRhbWluYXRlIHRoZSBuYW1lc3BhY2UKKworZGVmIGxvY2FsY29udGV4dChjdHg9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIGZvciBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQKKworICAgIFVzZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQKKyAgICBUaGUgcmV0dXJuZWQgY29udGV4dCBtYW5hZ2VyIGNyZWF0ZXMgYSBsb2NhbCBkZWNpbWFsIGNvbnRleHQKKyAgICBpbiBhIHdpdGggc3RhdGVtZW50OgorICAgICAgICBkZWYgc2luKHgpOgorICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgY3R4OgorICAgICAgICAgICAgICAgICBjdHgucHJlYyArPSAyCisgICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCisgICAgICAgICAgICAgICAgICMgdXNlcyBhIHByZWNpc2lvbiAyIGdyZWF0ZXIgdGhhbiBub3JtYWwKKyAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIHByZWNpc2lvbgorCisgICAgICAgICBkZWYgc2luKHgpOgorICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6CisgICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCisgICAgICAgICAgICAgICAgICMgdXNlcyB0aGUgRXh0ZW5kZWQgQ29udGV4dCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAjIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KKyAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIGNvbnRleHQKKworICAgID4+PiBzZXRjb250ZXh0KERlZmF1bHRDb250ZXh0KQorICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKKyAgICAyOAorICAgID4+PiB3aXRoIGxvY2FsY29udGV4dCgpOgorICAgIC4uLiAgICAgY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgLi4uICAgICBjdHgucHJlYyArPSAyCisgICAgLi4uICAgICBwcmludChjdHgucHJlYykKKyAgICAuLi4KKyAgICAzMAorICAgID4+PiB3aXRoIGxvY2FsY29udGV4dChFeHRlbmRlZENvbnRleHQpOgorICAgIC4uLiAgICAgcHJpbnQoZ2V0Y29udGV4dCgpLnByZWMpCisgICAgLi4uCisgICAgOQorICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKKyAgICAyOAorICAgICIiIgorICAgIGlmIGN0eCBpcyBOb25lOiBjdHggPSBnZXRjb250ZXh0KCkKKyAgICByZXR1cm4gX0NvbnRleHRNYW5hZ2VyKGN0eCkKKworCisjIyMjIyBEZWNpbWFsIGNsYXNzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBEbyBub3Qgc3ViY2xhc3MgRGVjaW1hbCBmcm9tIG51bWJlcnMuUmVhbCBhbmQgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIHN1Y2gKKyMgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdCBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4gIFNlZSB0aGUgbm90ZXMgaW4KKyMgbnVtYmVycy5weSBmb3IgbW9yZSBkZXRhaWwuCisKK2NsYXNzIERlY2ltYWwob2JqZWN0KToKKyAgICAiIiJGbG9hdGluZyBwb2ludCBjbGFzcyBmb3IgZGVjaW1hbCBhcml0aG1ldGljLiIiIgorCisgICAgX19zbG90c19fID0gKCdfZXhwJywnX2ludCcsJ19zaWduJywgJ19pc19zcGVjaWFsJykKKyAgICAjIEdlbmVyYWxseSwgdGhlIHZhbHVlIG9mIHRoZSBEZWNpbWFsIGluc3RhbmNlIGlzIGdpdmVuIGJ5CisgICAgIyAgKC0xKSoqX3NpZ24gKiBfaW50ICogMTAqKl9leHAKKyAgICAjIFNwZWNpYWwgdmFsdWVzIGFyZSBzaWduaWZpZWQgYnkgX2lzX3NwZWNpYWwgPT0gVHJ1ZQorCisgICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXworICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9IjAiLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIHBvaW50IGluc3RhbmNlLgorCisgICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykgICAgICAgICAgICAgICMgc3RyaW5nIGlucHV0CisgICAgICAgIERlY2ltYWwoJzMuMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbCgoMCwgKDMsIDEsIDQpLCAtMikpICAjIHR1cGxlIChzaWduLCBkaWdpdF90dXBsZSwgZXhwb25lbnQpCisgICAgICAgIERlY2ltYWwoJzMuMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbCgzMTQpICAgICAgICAgICAgICAgICAjIGludAorICAgICAgICBEZWNpbWFsKCczMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbChEZWNpbWFsKDMxNCkpICAgICAgICAjIGFub3RoZXIgZGVjaW1hbCBpbnN0YW5jZQorICAgICAgICBEZWNpbWFsKCczMTQnKQorICAgICAgICA+Pj4gRGVjaW1hbCgnICAzLjE0ICBcXG4nKSAgICAgICAgIyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9rYXkKKyAgICAgICAgRGVjaW1hbCgnMy4xNCcpCisgICAgICAgICIiIgorCisgICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb2VmZmljaWVudCwgc2VsZi5faW50LCBpcyBhY3R1YWxseSBzdG9yZWQgYXMKKyAgICAgICAgIyBhIHN0cmluZyByYXRoZXIgdGhhbiBhcyBhIHR1cGxlIG9mIGRpZ2l0cy4gIFRoaXMgc3BlZWRzIHVwCisgICAgICAgICMgdGhlICJkaWdpdHMgdG8gaW50ZWdlciIgYW5kICJpbnRlZ2VyIHRvIGRpZ2l0cyIgY29udmVyc2lvbnMKKyAgICAgICAgIyB0aGF0IGFyZSB1c2VkIGluIGFsbW9zdCBldmVyeSBhcml0aG1ldGljIG9wZXJhdGlvbiBvbgorICAgICAgICAjIERlY2ltYWxzLiAgVGhpcyBpcyBhbiBpbnRlcm5hbCBkZXRhaWw6IHRoZSBhc190dXBsZSBmdW5jdGlvbgorICAgICAgICAjIGFuZCB0aGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBzdGlsbCBkZWFsIHdpdGggdHVwbGVzIG9mCisgICAgICAgICMgZGlnaXRzLgorCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCisKKyAgICAgICAgIyBGcm9tIGEgc3RyaW5nCisgICAgICAgICMgUkVzIGluc2lzdCBvbiByZWFsIHN0cmluZ3MsIHNvIHdlIGNhbiB0b28uCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpKQorICAgICAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBsaXRlcmFsIGZvciBEZWNpbWFsOiAlciIgJSB2YWx1ZSkKKworICAgICAgICAgICAgaWYgbS5ncm91cCgnc2lnbicpID09ICItIjoKKyAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAorICAgICAgICAgICAgaW50cGFydCA9IG0uZ3JvdXAoJ2ludCcpCisgICAgICAgICAgICBpZiBpbnRwYXJ0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcgorICAgICAgICAgICAgICAgIGZyYWNwYXJ0ID0gbS5ncm91cCgnZnJhYycpIG9yICcnCisgICAgICAgICAgICAgICAgZXhwID0gaW50KG0uZ3JvdXAoJ2V4cCcpIG9yICcwJykKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIoaW50KGludHBhcnQrZnJhY3BhcnQpKQorICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IGV4cCAtIGxlbihmcmFjcGFydCkKKyAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlhZyA9IG0uZ3JvdXAoJ2RpYWcnKQorICAgICAgICAgICAgICAgIGlmIGRpYWcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgTmFOCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoZGlhZyBvciAnMCcpKS5sc3RyaXAoJzAnKQorICAgICAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduYWwnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9ICdOJworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ24nCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBpbmZpbml0eQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ0YnCisgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgIyBGcm9tIGFuIGludGVnZXIKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIGlmIHZhbHVlID49IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDEKKyAgICAgICAgICAgIHNlbGYuX2V4cCA9IDAKKyAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihhYnModmFsdWUpKQorICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICMgRnJvbSBhbm90aGVyIGRlY2ltYWwKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6CisgICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAorICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCisgICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAorICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAjIEZyb20gYW4gaW50ZXJuYWwgd29ya2luZyB2YWx1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBfV29ya1JlcCk6CisgICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuc2lnbgorICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKHZhbHVlLmludCkKKyAgICAgICAgICAgIHNlbGYuX2V4cCA9IGludCh2YWx1ZS5leHApCisgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgIyB0dXBsZS9saXN0IGNvbnZlcnNpb24gKHBvc3NpYmx5IGZyb20gYXNfdHVwbGUoKSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGxpc3QsdHVwbGUpKToKKyAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgIT0gMzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHR1cGxlIHNpemUgaW4gY3JlYXRpb24gb2YgRGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSBsaXN0IG9yIHR1cGxlLiAgVGhlIGxpc3Qgb3IgdHVwbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBoYXZlIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMuJykKKyAgICAgICAgICAgICMgcHJvY2VzcyBzaWduLiAgVGhlIGlzaW5zdGFuY2UgdGVzdCByZWplY3RzIGZsb2F0cworICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKHZhbHVlWzBdLCBpbnQpIGFuZCB2YWx1ZVswXSBpbiAoMCwxKSk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBzaWduLiAgVGhlIGZpcnN0IHZhbHVlIGluIHRoZSB0dXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlIGFuIGludGVnZXI7IGVpdGhlciAwIGZvciBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGl2ZSBudW1iZXIgb3IgMSBmb3IgYSBuZWdhdGl2ZSBudW1iZXIuIikKKyAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZVswXQorICAgICAgICAgICAgaWYgdmFsdWVbMl0gPT0gJ0YnOgorICAgICAgICAgICAgICAgICMgaW5maW5pdHk6IHZhbHVlWzFdIGlzIGlnbm9yZWQKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKKyAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQorICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbmQgdmFsaWRhdGUgdGhlIGRpZ2l0cyBpbiB2YWx1ZVsxXQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IFtdCisgICAgICAgICAgICAgICAgZm9yIGRpZ2l0IGluIHZhbHVlWzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRpZ2l0LCBpbnQpIGFuZCAwIDw9IGRpZ2l0IDw9IDk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgbGVhZGluZyB6ZXJvcworICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlnaXRzIG9yIGRpZ2l0ICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmFwcGVuZChkaWdpdCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBzZWNvbmQgdmFsdWUgaW4gdGhlIHR1cGxlIG11c3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgY29tcG9zZWQgb2YgaW50ZWdlcnMgaW4gdGhlIHJhbmdlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAgdGhyb3VnaCA5LiIpCisgICAgICAgICAgICAgICAgaWYgdmFsdWVbMl0gaW4gKCduJywgJ04nKToKKyAgICAgICAgICAgICAgICAgICAgIyBOYU46IGRpZ2l0cyBmb3JtIHRoZSBkaWFnbm9zdGljCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWVbMl0sIGludCk6CisgICAgICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcjogZGlnaXRzIGdpdmUgdGhlIGNvZWZmaWNpZW50CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzIG9yIFswXSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSB0aGlyZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGFuIGludGVnZXIsIG9yIG9uZSBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzICdGJywgJ24nLCAnTicuIikKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgIgorICAgICAgICAgICAgICAgICJlbmFibGVkIikKKyAgICAgICAgICAgIHZhbHVlID0gRGVjaW1hbC5mcm9tX2Zsb2F0KHZhbHVlKQorICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKKyAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgorICAgICAgICAgICAgc2VsZi5faW50ICA9IHZhbHVlLl9pbnQKKyAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgID0gdmFsdWUuX2lzX3NwZWNpYWwKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCAlciB0byBEZWNpbWFsIiAlIHZhbHVlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZmxvYXQoY2xzLCBmKToKKyAgICAgICAgIiIiQ29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LgorCisgICAgICAgIE5vdGUgdGhhdCBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuCisgICAgICAgIFNpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgdGhlCisgICAgICAgIHZhbHVlIGlzIHN0b3JlZCBhcyB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIHZhbHVlIHdoaWNoIGlzCisgICAgICAgIDB4MS45OTk5OTk5OTk5OTlhcC00LiAgVGhlIGV4YWN0IGVxdWl2YWxlbnQgb2YgdGhlIHZhbHVlIGluIGRlY2ltYWwKKyAgICAgICAgaXMgMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1LgorCisgICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQorICAgICAgICBEZWNpbWFsKCcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKQorICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgtZmxvYXQoJ2luZicpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC0wLjApCisgICAgICAgIERlY2ltYWwoJy0wJykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBpbnQpOiAgICAgICAgICAgICAgICAjIGhhbmRsZSBpbnRlZ2VyIGlucHV0cworICAgICAgICAgICAgcmV0dXJuIGNscyhmKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0LiIpCisgICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOgorICAgICAgICAgICAgcmV0dXJuIGNscyhyZXByKGYpKQorICAgICAgICBpZiBfbWF0aC5jb3B5c2lnbigxLjAsIGYpID09IDEuMDoKKyAgICAgICAgICAgIHNpZ24gPSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaWduID0gMQorICAgICAgICBuLCBkID0gYWJzKGYpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICBrID0gZC5iaXRfbGVuZ3RoKCkgLSAxCisgICAgICAgIHJlc3VsdCA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKG4qNSoqayksIC1rKQorICAgICAgICBpZiBjbHMgaXMgRGVjaW1hbDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBjbHMocmVzdWx0KQorCisgICAgZGVmIF9pc25hbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KKworICAgICAgICAwIGlmIGEgbnVtYmVyCisgICAgICAgIDEgaWYgTmFOCisgICAgICAgIDIgaWYgc05hTgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cAorICAgICAgICAgICAgaWYgZXhwID09ICduJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgZWxpZiBleHAgPT0gJ04nOgorICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2lzaW5maW5pdHkoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIGlzIGluZmluaXRlCisKKyAgICAgICAgMCBpZiBmaW5pdGUgb3Igbm90IGEgbnVtYmVyCisgICAgICAgIDEgaWYgK0lORgorICAgICAgICAtMSBpZiAtSU5GCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgorICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2NoZWNrX25hbnMoc2VsZiwgb3RoZXI9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KKworICAgICAgICBpZiBzZWxmLCBvdGhlciBhcmUgc05hTiwgc2lnbmFsCisgICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBOYU4gcmV0dXJuIG5hbgorICAgICAgICByZXR1cm4gMAorCisgICAgICAgIERvbmUgYmVmb3JlIG9wZXJhdGlvbnMuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGZfaXNfbmFuID0gc2VsZi5faXNuYW4oKQorICAgICAgICBpZiBvdGhlciBpcyBOb25lOgorICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCisKKyAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAgICAgaWYgc2VsZl9pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlcl9pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICAgICAgaWYgc2VsZl9pc19uYW46CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeF9uYW4oY29udGV4dCkKKworICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2NvbXBhcmVfY2hlY2tfbmFucyhzZWxmLCBvdGhlciwgY29udGV4dCk6CisgICAgICAgICIiIlZlcnNpb24gb2YgX2NoZWNrX25hbnMgdXNlZCBmb3IgdGhlIHNpZ25hbGluZyBjb21wYXJpc29ucworICAgICAgICBjb21wYXJlX3NpZ25hbCwgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLgorCisgICAgICAgIFNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBzZWxmIG9yIG90aGVyIGlzIGEgKHF1aWV0CisgICAgICAgIG9yIHNpZ25hbGluZykgTmFOLiAgU2lnbmFsaW5nIE5hTnMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcXVpZXQKKyAgICAgICAgTmFOcy4KKworICAgICAgICBSZXR1cm4gMCBpZiBuZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4uCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKKyAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfc25hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgc05hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICAgICAgZWxpZiBzZWxmLmlzX3FuYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCisgICAgICAgICAgICBlbGlmIG90aGVyLmlzX3FuYW4oKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5vbnplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgTmFOcyBhbmQgaW5maW5pdGllcyBhcmUgY29uc2lkZXJlZCBub256ZXJvLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3NwZWNpYWwgb3Igc2VsZi5faW50ICE9ICcwJworCisgICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgorICAgICAgICAiIiJDb21wYXJlIHRoZSB0d28gbm9uLU5hTiBkZWNpbWFsIGluc3RhbmNlcyBzZWxmIGFuZCBvdGhlci4KKworICAgICAgICBSZXR1cm5zIC0xIGlmIHNlbGYgPCBvdGhlciwgMCBpZiBzZWxmID09IG90aGVyIGFuZCAxCisgICAgICAgIGlmIHNlbGYgPiBvdGhlci4gIFRoaXMgcm91dGluZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIiIiCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHNlbGZfaW5mID0gc2VsZi5faXNpbmZpbml0eSgpCisgICAgICAgICAgICBvdGhlcl9pbmYgPSBvdGhlci5faXNpbmZpbml0eSgpCisgICAgICAgICAgICBpZiBzZWxmX2luZiA9PSBvdGhlcl9pbmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsaWYgc2VsZl9pbmYgPCBvdGhlcl9pbmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgIyBjaGVjayBmb3IgemVyb3M7ICBEZWNpbWFsKCcwJykgPT0gRGVjaW1hbCgnLTAnKQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gLSgoLTEpKipvdGhlci5fc2lnbikKKyAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KKworICAgICAgICAjIElmIGRpZmZlcmVudCBzaWducywgbmVnIG9uZSBpcyBsZXNzCisgICAgICAgIGlmIG90aGVyLl9zaWduIDwgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBzZWxmLl9zaWduIDwgb3RoZXIuX3NpZ246CisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIHNlbGZfYWRqdXN0ZWQgPSBzZWxmLmFkanVzdGVkKCkKKyAgICAgICAgb3RoZXJfYWRqdXN0ZWQgPSBvdGhlci5hZGp1c3RlZCgpCisgICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPT0gb3RoZXJfYWRqdXN0ZWQ6CisgICAgICAgICAgICBzZWxmX3BhZGRlZCA9IHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCkKKyAgICAgICAgICAgIG90aGVyX3BhZGRlZCA9IG90aGVyLl9pbnQgKyAnMCcqKG90aGVyLl9leHAgLSBzZWxmLl9leHApCisgICAgICAgICAgICBpZiBzZWxmX3BhZGRlZCA9PSBvdGhlcl9wYWRkZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsaWYgc2VsZl9wYWRkZWQgPCBvdGhlcl9wYWRkZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0oLTEpKipzZWxmLl9zaWduCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAoLTEpKipzZWxmLl9zaWduCisgICAgICAgIGVsaWYgc2VsZl9hZGp1c3RlZCA+IG90aGVyX2FkanVzdGVkOgorICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KKyAgICAgICAgZWxzZTogIyBzZWxmX2FkanVzdGVkIDwgb3RoZXJfYWRqdXN0ZWQKKyAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKnNlbGYuX3NpZ24pCisKKyAgICAjIE5vdGU6IFRoZSBEZWNpbWFsIHN0YW5kYXJkIGRvZXNuJ3QgY292ZXIgcmljaCBjb21wYXJpc29ucyBmb3IKKyAgICAjIERlY2ltYWxzLiAgSW4gcGFydGljdWxhciwgdGhlIHNwZWNpZmljYXRpb24gaXMgc2lsZW50IG9uIHRoZQorICAgICMgc3ViamVjdCBvZiB3aGF0IHNob3VsZCBoYXBwZW4gZm9yIGEgY29tcGFyaXNvbiBpbnZvbHZpbmcgYSBOYU4uCisgICAgIyBXZSB0YWtlIHRoZSBmb2xsb3dpbmcgYXBwcm9hY2g6CisgICAgIworICAgICMgICA9PSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBGYWxzZQorICAgICMgICAhPSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBUcnVlCisgICAgIyAgID09IG9yICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHNpZ25hbGluZyBOYU4gc2lnbmFsCisgICAgIyAgICAgIEludmFsaWRPcGVyYXRpb24sIGFuZCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSBhcyBhYm92ZSBpZiB0aGUKKyAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KKyAgICAjICAgPCwgPiwgPD0gYW5kID49IGNvbXBhcmlzb25zIGludm9sdmluZyBhIChxdWlldCBvciBzaWduYWxpbmcpCisgICAgIyAgICAgIE5hTiBzaWduYWwgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBpZiB0aGUKKyAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KKyAgICAjCisgICAgIyBUaGlzIGJlaGF2aW9yIGlzIGRlc2lnbmVkIHRvIGNvbmZvcm0gYXMgY2xvc2VseSBhcyBwb3NzaWJsZSB0bworICAgICMgdGhhdCBzcGVjaWZpZWQgYnkgSUVFRSA3NTQuCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1UcnVlKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBpZiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8IDAKKworICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKKworICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID4gMAorCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPj0gMAorCisgICAgZGVmIGNvbXBhcmUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmUgc2VsZiB0byBvdGhlci4gIFJldHVybiBhIGRlY2ltYWwgdmFsdWU6CisKKyAgICAgICAgYSBvciBiIGlzIGEgTmFOID09PiBEZWNpbWFsKCdOYU4nKQorICAgICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJykKKyAgICAgICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJykKKyAgICAgICAgYSA+IGIgICAgICAgICAgID09PiBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICAjIENvbXBhcmUoTmFOLCBOYU4pID0gTmFOCisgICAgICAgIGlmIChzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyIGFuZCBvdGhlci5faXNfc3BlY2lhbCk6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmLl9jbXAob3RoZXIpKQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAiIiJ4Ll9faGFzaF9fKCkgPD09PiBoYXNoKHgpIiIiCisKKyAgICAgICAgIyBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGFzaCBvZiBhIERlY2ltYWwgaW5zdGFuY2UKKyAgICAgICAgIyBhZ3JlZXMgd2l0aCB0aGUgaGFzaCBvZiBhIG51bWVyaWNhbGx5IGVxdWFsIGludGVnZXIsIGZsb2F0CisgICAgICAgICMgb3IgRnJhY3Rpb24sIHdlIGZvbGxvdyB0aGUgcnVsZXMgZm9yIG51bWVyaWMgaGFzaGVzIG91dGxpbmVkCisgICAgICAgICMgaW4gdGhlIGRvY3VtZW50YXRpb24uICAoU2VlIGxpYnJhcnkgZG9jcywgJ0J1aWx0LWluIFR5cGVzJykuCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBoYXNoIGEgc2lnbmFsaW5nIE5hTiB2YWx1ZS4nKQorICAgICAgICAgICAgZWxpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX05BTgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLV9QeUhBU0hfSU5GCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9QeUhBU0hfSU5GCisKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICBleHBfaGFzaCA9IHBvdygxMCwgc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHBfaGFzaCA9IHBvdyhfUHlIQVNIXzEwSU5WLCAtc2VsZi5fZXhwLCBfUHlIQVNIX01PRFVMVVMpCisgICAgICAgIGhhc2hfID0gaW50KHNlbGYuX2ludCkgKiBleHBfaGFzaCAlIF9QeUhBU0hfTU9EVUxVUworICAgICAgICBhbnMgPSBoYXNoXyBpZiBzZWxmID49IDAgZWxzZSAtaGFzaF8KKyAgICAgICAgcmV0dXJuIC0yIGlmIGFucyA9PSAtMSBlbHNlIGFucworCisgICAgZGVmIGFzX3R1cGxlKHNlbGYpOgorICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYSB0cmlwbGUgdHVwbGUuCisKKyAgICAgICAgVG8gc2hvdyB0aGUgaW50ZXJuYWxzIGV4YWN0bHkgYXMgdGhleSBhcmUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRGVjaW1hbFR1cGxlKHNlbGYuX3NpZ24sIHR1cGxlKG1hcChpbnQsIHNlbGYuX2ludCkpLCBzZWxmLl9leHApCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgorICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZAorICAgICAgICByZXR1cm4gIkRlY2ltYWwoJyVzJykiICUgc3RyKHNlbGYpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmc9RmFsc2UsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBpbiBzY2llbnRpZmljIG5vdGF0aW9uLgorCisgICAgICAgIENhcHR1cmVzIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHVuZGVybHlpbmcgcmVwcmVzZW50YXRpb24uCisgICAgICAgICIiIgorCisgICAgICAgIHNpZ24gPSBbJycsICctJ11bc2VsZi5fc2lnbl0KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnRic6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnSW5maW5pdHknCisgICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnTmFOJyArIHNlbGYuX2ludAorICAgICAgICAgICAgZWxzZTogIyBzZWxmLl9leHAgPT0gJ04nCisgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyAnc05hTicgKyBzZWxmLl9pbnQKKworICAgICAgICAjIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIGxlZnQgb2YgZGVjaW1hbCBwb2ludAorICAgICAgICBsZWZ0ZGlnaXRzID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkKKworICAgICAgICAjIGRvdHBsYWNlIGlzIG51bWJlciBvZiBkaWdpdHMgb2Ygc2VsZi5faW50IHRvIHRoZSBsZWZ0IG9mIHRoZQorICAgICAgICAjIGRlY2ltYWwgcG9pbnQgaW4gdGhlIG1hbnRpc3NhIG9mIHRoZSBvdXRwdXQgc3RyaW5nICh0aGF0IGlzLAorICAgICAgICAjIGFmdGVyIGFkanVzdGluZyB0aGUgZXhwb25lbnQpCisgICAgICAgIGlmIHNlbGYuX2V4cCA8PSAwIGFuZCBsZWZ0ZGlnaXRzID4gLTY6CisgICAgICAgICAgICAjIG5vIGV4cG9uZW50IHJlcXVpcmVkCisgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKKyAgICAgICAgZWxpZiBub3QgZW5nOgorICAgICAgICAgICAgIyB1c3VhbCBzY2llbnRpZmljIG5vdGF0aW9uOiAxIGRpZ2l0IG9uIGxlZnQgb2YgdGhlIHBvaW50CisgICAgICAgICAgICBkb3RwbGFjZSA9IDEKKyAgICAgICAgZWxpZiBzZWxmLl9pbnQgPT0gJzAnOgorICAgICAgICAgICAgIyBlbmdpbmVlcmluZyBub3RhdGlvbiwgemVybworICAgICAgICAgICAgZG90cGxhY2UgPSAobGVmdGRpZ2l0cyArIDEpICUgMyAtIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIG5vbnplcm8KKyAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgLSAxKSAlIDMgKyAxCisKKyAgICAgICAgaWYgZG90cGxhY2UgPD0gMDoKKyAgICAgICAgICAgIGludHBhcnQgPSAnMCcKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgJzAnKigtZG90cGxhY2UpICsgc2VsZi5faW50CisgICAgICAgIGVsaWYgZG90cGxhY2UgPj0gbGVuKHNlbGYuX2ludCk6CisgICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50KycwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCisgICAgICAgICAgICBmcmFjcGFydCA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0KKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJy4nICsgc2VsZi5faW50W2RvdHBsYWNlOl0KKyAgICAgICAgaWYgbGVmdGRpZ2l0cyA9PSBkb3RwbGFjZToKKyAgICAgICAgICAgIGV4cCA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgZXhwID0gWydlJywgJ0UnXVtjb250ZXh0LmNhcGl0YWxzXSArICIlK2QiICUgKGxlZnRkaWdpdHMtZG90cGxhY2UpCisKKyAgICAgICAgcmV0dXJuIHNpZ24gKyBpbnRwYXJ0ICsgZnJhY3BhcnQgKyBleHAKKworICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbnZlcnQgdG8gZW5naW5lZXJpbmctdHlwZSBzdHJpbmcuCisKKyAgICAgICAgRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmUKKyAgICAgICAgYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuCisKKyAgICAgICAgU2FtZSBydWxlcyBmb3Igd2hlbiBpbiBleHBvbmVudGlhbCBhbmQgd2hlbiBhcyBhIHZhbHVlIGFzIGluIF9fc3RyX18uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fX3N0cl9fKGVuZz1UcnVlLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19uZWdfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIHN3aXRjaGVkLgorCisgICAgICAgIFJvdW5kcywgaWYgaXQgaGFzIHJlYXNvbi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgorICAgICAgICAgICAgIyAtRGVjaW1hbCgnMCcpIGlzIERlY2ltYWwoJzAnKSwgbm90IERlY2ltYWwoJy0wJyksIGV4Y2VwdAorICAgICAgICAgICAgIyBpbiBST1VORF9GTE9PUiByb3VuZGluZyBtb2RlLgorICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X2FicygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfbmVnYXRlKCkKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfX3Bvc19fKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5LCB1bmxlc3MgaXQgaXMgYSBzTmFOLgorCisgICAgICAgIFJvdW5kcyB0aGUgbnVtYmVyIChpZiBtb3JlIHRoZW4gcHJlY2lzaW9uIGRpZ2l0cykKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBjb250ZXh0LnJvdW5kaW5nICE9IFJPVU5EX0ZMT09SOgorICAgICAgICAgICAgIyArICgtMCkgPSAwLCBleGNlcHQgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KKyAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmKQorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9fYWJzX18oc2VsZiwgcm91bmQ9VHJ1ZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2Ygc2VsZi4KKworICAgICAgICBJZiB0aGUga2V5d29yZCBhcmd1bWVudCAncm91bmQnIGlzIGZhbHNlLCBkbyBub3Qgcm91bmQuICBUaGUKKyAgICAgICAgZXhwcmVzc2lvbiBzZWxmLl9fYWJzX18ocm91bmQ9RmFsc2UpIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgICAgc2VsZi5jb3B5X2FicygpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHJvdW5kOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9hYnMoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX19uZWdfXyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9fcG9zX18oY29udGV4dD1jb250ZXh0KQorCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHNlbGYgKyBvdGhlci4KKworICAgICAgICAtSU5GICsgSU5GIChvciB0aGUgcmV2ZXJzZSkgY2F1c2UgSW52YWxpZE9wZXJhdGlvbiBlcnJvcnMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICAjIElmIGJvdGggSU5GLCBzYW1lIHNpZ24gPT4gc2FtZSBhcyBib3RoLCBvcHBvc2l0ZSA9PiBlcnJvci4KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJy1JTkYgKyBJTkYnKQorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKSAgIyBDYW4ndCBib3RoIGJlIGluZmluaXR5IGhlcmUKKworICAgICAgICBleHAgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQorICAgICAgICBuZWdhdGl2ZXplcm8gPSAwCisgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfRkxPT1IgYW5kIHNlbGYuX3NpZ24gIT0gb3RoZXIuX3NpZ246CisgICAgICAgICAgICAjIElmIHRoZSBhbnN3ZXIgaXMgMCwgdGhlIHNpZ24gc2hvdWxkIGJlIG5lZ2F0aXZlLCBpbiB0aGlzIGNhc2UuCisgICAgICAgICAgICBuZWdhdGl2ZXplcm8gPSAxCisKKyAgICAgICAgaWYgbm90IHNlbGYgYW5kIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIHNpZ24gPSBtaW4oc2VsZi5fc2lnbiwgb3RoZXIuX3NpZ24pCisgICAgICAgICAgICBpZiBuZWdhdGl2ZXplcm86CisgICAgICAgICAgICAgICAgc2lnbiA9IDEKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCBleHApCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGV4cCA9IG1heChleHAsIG90aGVyLl9leHAgLSBjb250ZXh0LnByZWMtMSkKKyAgICAgICAgICAgIGFucyA9IG90aGVyLl9yZXNjYWxlKGV4cCwgY29udGV4dC5yb3VuZGluZykKKyAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGV4cCA9IG1heChleHAsIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYy0xKQorICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorICAgICAgICBvcDEsIG9wMiA9IF9ub3JtYWxpemUob3AxLCBvcDIsIGNvbnRleHQucHJlYykKKworICAgICAgICByZXN1bHQgPSBfV29ya1JlcCgpCisgICAgICAgIGlmIG9wMS5zaWduICE9IG9wMi5zaWduOgorICAgICAgICAgICAgIyBFcXVhbCBhbmQgb3Bwb3NpdGUKKyAgICAgICAgICAgIGlmIG9wMS5pbnQgPT0gb3AyLmludDoKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKG5lZ2F0aXZlemVybywgJzAnLCBleHApCisgICAgICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgICAgICBpZiBvcDEuaW50IDwgb3AyLmludDoKKyAgICAgICAgICAgICAgICBvcDEsIG9wMiA9IG9wMiwgb3AxCisgICAgICAgICAgICAgICAgIyBPSywgbm93IGFicyhvcDEpID4gYWJzKG9wMikKKyAgICAgICAgICAgIGlmIG9wMS5zaWduID09IDE6CisgICAgICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAxCisgICAgICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gb3AyLnNpZ24sIG9wMS5zaWduCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMAorICAgICAgICAgICAgICAgICMgU28gd2Uga25vdyB0aGUgc2lnbiwgYW5kIG9wMSA+IDAuCisgICAgICAgIGVsaWYgb3AxLnNpZ24gPT0gMToKKyAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQorICAgICAgICAgICAgb3AxLnNpZ24sIG9wMi5zaWduID0gKDAsIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKKyAgICAgICAgIyBOb3csIG9wMSA+IGFicyhvcDIpID4gMAorCisgICAgICAgIGlmIG9wMi5zaWduID09IDA6CisgICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCArIG9wMi5pbnQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5pbnQgPSBvcDEuaW50IC0gb3AyLmludAorCisgICAgICAgIHJlc3VsdC5leHAgPSBvcDEuZXhwCisgICAgICAgIGFucyA9IERlY2ltYWwocmVzdWx0KQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBfX3JhZGRfXyA9IF9fYWRkX18KKworICAgIGRlZiBfX3N1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gc2VsZiAtIG90aGVyIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBzZWxmIC0gb3RoZXIgaXMgY29tcHV0ZWQgYXMgc2VsZiArIG90aGVyLmNvcHlfbmVnYXRlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19hZGRfXyhvdGhlci5jb3B5X25lZ2F0ZSgpLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBvdGhlciAtIHNlbGYiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICByZXR1cm4gb3RoZXIuX19zdWJfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19tdWxfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHNlbGYgKiBvdGhlci4KKworICAgICAgICAoKy0pIElORiAqIDAgKG9yIGl0cyByZXZlcnNlKSByYWlzZSBJbnZhbGlkT3BlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgcmVzdWx0c2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcoKy0pSU5GICogMCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQorCisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiAoKy0pSU5GJykKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdHNpZ25dCisKKyAgICAgICAgcmVzdWx0ZXhwID0gc2VsZi5fZXhwICsgb3RoZXIuX2V4cAorCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSB6ZXJvCisgICAgICAgIGlmIG5vdCBzZWxmIG9yIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgJzAnLCByZXN1bHRleHApCisgICAgICAgICAgICAjIEZpeGluZyBpbiBjYXNlIHRoZSBleHBvbmVudCBpcyBvdXQgb2YgYm91bmRzCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBtdWx0aXBseWluZyBieSBwb3dlciBvZiAxMAorICAgICAgICBpZiBzZWxmLl9pbnQgPT0gJzEnOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRzaWduLCBvdGhlci5faW50LCByZXN1bHRleHApCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICBpZiBvdGhlci5faW50ID09ICcxJzoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc2VsZi5faW50LCByZXN1bHRleHApCisgICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQorCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgc3RyKG9wMS5pbnQgKiBvcDIuaW50KSwgcmVzdWx0ZXhwKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgIHJldHVybiBhbnMKKyAgICBfX3JtdWxfXyA9IF9fbXVsX18KKworICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHNlbGYgLyBvdGhlci4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpIGFuZCBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORi8oKy0pSU5GJykKKworICAgICAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KKworICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkLCAnRGl2aXNpb24gYnkgaW5maW5pdHknKQorICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgY29udGV4dC5FdGlueSgpKQorCisgICAgICAgICMgU3BlY2lhbCBjYXNlcyBmb3IgemVyb2VzCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgLyAwJykKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLyAwJywgc2lnbikKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKKyAgICAgICAgICAgIGNvZWZmID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPSywgc28gbmVpdGhlciA9IDAsIElORiBvciBOYU4KKyAgICAgICAgICAgIHNoaWZ0ID0gbGVuKG90aGVyLl9pbnQpIC0gbGVuKHNlbGYuX2ludCkgKyBjb250ZXh0LnByZWMgKyAxCisgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwIC0gc2hpZnQKKyAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgICAgIGlmIHNoaWZ0ID49IDA6CisgICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50ICogMTAqKnNoaWZ0LCBvcDIuaW50KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb2VmZiwgcmVtYWluZGVyID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQgKiAxMCoqLXNoaWZ0KQorICAgICAgICAgICAgaWYgcmVtYWluZGVyOgorICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgYWRqdXN0IHRvIGVuc3VyZSBjb3JyZWN0IHJvdW5kaW5nCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSA1ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGNvZWZmICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyByZXN1bHQgaXMgZXhhY3Q7IGdldCBhcyBjbG9zZSB0byBpZGVhbCBleHBvbmVudCBhcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cCAtIG90aGVyLl9leHAKKyAgICAgICAgICAgICAgICB3aGlsZSBleHAgPCBpZGVhbF9leHAgYW5kIGNvZWZmICUgMTAgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgLy89IDEwCisgICAgICAgICAgICAgICAgICAgIGV4cCArPSAxCisKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoY29lZmYpLCBleHApCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9kaXZpZGUoc2VsZiwgb3RoZXIsIGNvbnRleHQpOgorICAgICAgICAiIiJSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlciksIHRvIGNvbnRleHQucHJlYyBwcmVjaXNpb24uCisKKyAgICAgICAgQXNzdW1lcyB0aGF0IG5laXRoZXIgc2VsZiBub3Igb3RoZXIgaXMgYSBOYU4sIHRoYXQgc2VsZiBpcyBub3QKKyAgICAgICAgaW5maW5pdGUgYW5kIHRoYXQgb3RoZXIgaXMgbm9uemVyby4KKyAgICAgICAgIiIiCisgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KKyAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGlkZWFsX2V4cCA9IHNlbGYuX2V4cAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWRlYWxfZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKKworICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQorICAgICAgICBpZiBub3Qgc2VsZiBvciBvdGhlci5faXNpbmZpbml0eSgpIG9yIGV4cGRpZmYgPD0gLTI6CisgICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgJzAnLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVzY2FsZShpZGVhbF9leHAsIGNvbnRleHQucm91bmRpbmcpKQorICAgICAgICBpZiBleHBkaWZmIDw9IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKKyAgICAgICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKKyAgICAgICAgICAgIGlmIHEgPCAxMCoqY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgIHJldHVybiAoX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIocSksIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzdHIociksIGlkZWFsX2V4cCkpCisKKyAgICAgICAgIyBIZXJlIHRoZSBxdW90aWVudCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50YWJsZQorICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdW90aWVudCB0b28gbGFyZ2UgaW4gLy8sICUgb3IgZGl2bW9kJykKKyAgICAgICAgcmV0dXJuIGFucywgYW5zCisKKyAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fdHJ1ZWRpdl9fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX190cnVlZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gKHNlbGYgLy8gb3RoZXIsIHNlbGYgJSBvdGhlcikKKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiAoYW5zLCBhbnMpCisKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbgorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdkaXZtb2QoSU5GLCBJTkYpJykKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIChfU2lnbmVkSW5maW5pdHlbc2lnbl0sCisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpKQorCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgIGFucyA9IGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnZGl2bW9kKDAsIDApJykKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zLCBhbnMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsIHNpZ24pLAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykpCisKKyAgICAgICAgcXVvdGllbnQsIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dCkKKyAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHF1b3RpZW50LCByZW1haW5kZXIKKworICAgIGRlZiBfX3JkaXZtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Rpdm1vZF9fLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorICAgICAgICByZXR1cm4gb3RoZXIuX19kaXZtb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgX19tb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgJSBvdGhlcgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GICUgeCcpCisgICAgICAgIGVsaWYgbm90IG90aGVyOgorICAgICAgICAgICAgaWYgc2VsZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3ggJSAwJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAlIDAnKQorCisgICAgICAgIHJlbWFpbmRlciA9IHNlbGYuX2RpdmlkZShvdGhlciwgY29udGV4dClbMV0KKyAgICAgICAgcmVtYWluZGVyID0gcmVtYWluZGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHJlbWFpbmRlcgorCisgICAgZGVmIF9fcm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fbW9kX18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX21vZF9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKKworICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbWFpbmRlciBuZWFyZXN0IHRvIDAtICBhYnMocmVtYWluZGVyLW5lYXIpIDw9IG90aGVyLzIKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgc2VsZiA9PSArLy1pbmZpbml0eSAtPiBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcihpbmZpbml0eSwgeCknKQorCisgICAgICAgICMgb3RoZXIgPT0gMCAtPiBlaXRoZXIgSW52YWxpZE9wZXJhdGlvbiBvciBEaXZpc2lvblVuZGVmaW5lZAorICAgICAgICBpZiBub3Qgb3RoZXI6CisgICAgICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoeCwgMCknKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZW1haW5kZXJfbmVhcigwLCAwKScpCisKKyAgICAgICAgIyBvdGhlciA9ICsvLWluZmluaXR5IC0+IHJlbWFpbmRlciA9IHNlbGYKKyAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgICMgc2VsZiA9IDAgLT4gcmVtYWluZGVyID0gc2VsZiwgd2l0aCBpZGVhbCBleHBvbmVudAorICAgICAgICBpZGVhbF9leHBvbmVudCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGlkZWFsX2V4cG9uZW50KQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgIyBjYXRjaCBtb3N0IGNhc2VzIG9mIGxhcmdlIG9yIHNtYWxsIHF1b3RpZW50CisgICAgICAgIGV4cGRpZmYgPSBzZWxmLmFkanVzdGVkKCkgLSBvdGhlci5hZGp1c3RlZCgpCisgICAgICAgIGlmIGV4cGRpZmYgPj0gY29udGV4dC5wcmVjICsgMToKKyAgICAgICAgICAgICMgZXhwZGlmZiA+PSBwcmVjKzEgPT4gYWJzKHNlbGYvb3RoZXIpID4gMTAqKnByZWMKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkltcG9zc2libGUpCisgICAgICAgIGlmIGV4cGRpZmYgPD0gLTI6CisgICAgICAgICAgICAjIGV4cGRpZmYgPD0gLTIgPT4gYWJzKHNlbGYvb3RoZXIpIDwgMC4xCisgICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGlkZWFsX2V4cG9uZW50LCBjb250ZXh0LnJvdW5kaW5nKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgIyBhZGp1c3QgYm90aCBhcmd1bWVudHMgdG8gaGF2ZSB0aGUgc2FtZSBleHBvbmVudCwgdGhlbiBkaXZpZGUKKyAgICAgICAgb3AxID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgIGlmIG9wMS5leHAgPj0gb3AyLmV4cDoKKyAgICAgICAgICAgIG9wMS5pbnQgKj0gMTAqKihvcDEuZXhwIC0gb3AyLmV4cCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wMi5pbnQgKj0gMTAqKihvcDIuZXhwIC0gb3AxLmV4cCkKKyAgICAgICAgcSwgciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50KQorICAgICAgICAjIHJlbWFpbmRlciBpcyByKjEwKippZGVhbF9leHBvbmVudDsgb3RoZXIgaXMgKy8tb3AyLmludCAqCisgICAgICAgICMgMTAqKmlkZWFsX2V4cG9uZW50LiAgIEFwcGx5IGNvcnJlY3Rpb24gdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgIyBhYnMocmVtYWluZGVyKSA8PSBhYnMob3RoZXIpLzIKKyAgICAgICAgaWYgMipyICsgKHEmMSkgPiBvcDIuaW50OgorICAgICAgICAgICAgciAtPSBvcDIuaW50CisgICAgICAgICAgICBxICs9IDEKKworICAgICAgICBpZiBxID49IDEwKipjb250ZXh0LnByZWM6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQorCisgICAgICAgICMgcmVzdWx0IGhhcyBzYW1lIHNpZ24gYXMgc2VsZiB1bmxlc3MgciBpcyBuZWdhdGl2ZQorICAgICAgICBzaWduID0gc2VsZi5fc2lnbgorICAgICAgICBpZiByIDwgMDoKKyAgICAgICAgICAgIHNpZ24gPSAxLXNpZ24KKyAgICAgICAgICAgIHIgPSAtcgorCisgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHIpLCBpZGVhbF9leHBvbmVudCkKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJzZWxmIC8vIG90aGVyIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnSU5GIC8vIElORicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQorCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAneCAvLyAwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8vIDAnKQorCisgICAgICAgIHJldHVybiBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzBdCisKKyAgICBkZWYgX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX2Zsb29yZGl2X18uIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIHJldHVybiBvdGhlci5fX2Zsb29yZGl2X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKKyAgICAgICAgIiIiRmxvYXQgcmVwcmVzZW50YXRpb24uIiIiCisgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6CisgICAgICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgY29udmVydCBzaWduYWxpbmcgTmFOIHRvIGZsb2F0IikKKyAgICAgICAgICAgIHMgPSAiLW5hbiIgaWYgc2VsZi5fc2lnbiBlbHNlICJuYW4iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzID0gc3RyKHNlbGYpCisgICAgICAgIHJldHVybiBmbG9hdChzKQorCisgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICIiIkNvbnZlcnRzIHNlbGYgdG8gYW4gaW50LCB0cnVuY2F0aW5nIGlmIG5lY2Vzc2FyeS4iIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuX2lzbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIiKQorICAgICAgICAgICAgZWxpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgaW5maW5pdHkgdG8gaW50ZWdlciIpCisgICAgICAgIHMgPSAoLTEpKipzZWxmLl9zaWduCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludCkqMTAqKnNlbGYuX2V4cAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHMqaW50KHNlbGYuX2ludFs6c2VsZi5fZXhwXSBvciAnMCcpCisKKyAgICBfX3RydW5jX18gPSBfX2ludF9fCisKKyAgICBkZWYgcmVhbChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKyAgICByZWFsID0gcHJvcGVydHkocmVhbCkKKworICAgIGRlZiBpbWFnKHNlbGYpOgorICAgICAgICByZXR1cm4gRGVjaW1hbCgwKQorICAgIGltYWcgPSBwcm9wZXJ0eShpbWFnKQorCisgICAgZGVmIGNvbmp1Z2F0ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGNvbXBsZXgoZmxvYXQoc2VsZikpCisKKyAgICBkZWYgX2ZpeF9uYW4oc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIkRlY2FwaXRhdGUgdGhlIHBheWxvYWQgb2YgYSBOYU4gdG8gZml0IHRoZSBjb250ZXh0IiIiCisgICAgICAgIHBheWxvYWQgPSBzZWxmLl9pbnQKKworICAgICAgICAjIG1heGltdW0gbGVuZ3RoIG9mIHBheWxvYWQgaXMgcHJlY2lzaW9uIGlmIGNsYW1wPTAsCisgICAgICAgICMgcHJlY2lzaW9uLTEgaWYgY2xhbXA9MS4KKyAgICAgICAgbWF4X3BheWxvYWRfbGVuID0gY29udGV4dC5wcmVjIC0gY29udGV4dC5jbGFtcAorICAgICAgICBpZiBsZW4ocGF5bG9hZCkgPiBtYXhfcGF5bG9hZF9sZW46CisgICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZFtsZW4ocGF5bG9hZCktbWF4X3BheWxvYWRfbGVuOl0ubHN0cmlwKCcwJykKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHBheWxvYWQsIHNlbGYuX2V4cCwgVHJ1ZSkKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgIGRlZiBfZml4KHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiJSb3VuZCBpZiBpdCBpcyBuZWNlc3NhcnkgdG8ga2VlcCBzZWxmIHdpdGhpbiBwcmVjIHByZWNpc2lvbi4KKworICAgICAgICBSb3VuZHMgYW5kIGZpeGVzIHRoZSBleHBvbmVudC4gIERvZXMgbm90IHJhaXNlIG9uIGEgc05hTi4KKworICAgICAgICBBcmd1bWVudHM6CisgICAgICAgIHNlbGYgLSBEZWNpbWFsIGluc3RhbmNlCisgICAgICAgIGNvbnRleHQgLSBjb250ZXh0IHVzZWQuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgorICAgICAgICAgICAgICAgICMgZGVjYXBpdGF0ZSBwYXlsb2FkIGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgc2VsZiBpcyArLy1JbmZpbml0eTsgcmV0dXJuIHVuYWx0ZXJlZAorICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyBpZiBzZWxmIGlzIHplcm8gdGhlbiBleHBvbmVudCBzaG91bGQgYmUgYmV0d2VlbiBFdGlueSBhbmQKKyAgICAgICAgIyBFbWF4IGlmIGNsYW1wPT0wLCBhbmQgYmV0d2VlbiBFdGlueSBhbmQgRXRvcCBpZiBjbGFtcD09MS4KKyAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKKyAgICAgICAgRXRvcCA9IGNvbnRleHQuRXRvcCgpCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIEV0b3BdW2NvbnRleHQuY2xhbXBdCisgICAgICAgICAgICBuZXdfZXhwID0gbWluKG1heChzZWxmLl9leHAsIEV0aW55KSwgZXhwX21heCkKKyAgICAgICAgICAgIGlmIG5ld19leHAgIT0gc2VsZi5fZXhwOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBuZXdfZXhwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgZXhwX21pbiBpcyB0aGUgc21hbGxlc3QgYWxsb3dhYmxlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQsCisgICAgICAgICMgZXF1YWwgdG8gbWF4KHNlbGYuYWRqdXN0ZWQoKS1jb250ZXh0LnByZWMrMSwgRXRpbnkpCisgICAgICAgIGV4cF9taW4gPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGNvbnRleHQucHJlYworICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKKyAgICAgICAgICAgICMgb3ZlcmZsb3c6IGV4cF9taW4gPiBFdG9wIGlmZiBzZWxmLmFkanVzdGVkKCkgPiBFbWF4CisgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgc2VsZl9pc19zdWJub3JtYWwgPSBleHBfbWluIDwgRXRpbnkKKyAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICBleHBfbWluID0gRXRpbnkKKworICAgICAgICAjIHJvdW5kIGlmIHNlbGYgaGFzIHRvbyBtYW55IGRpZ2l0cworICAgICAgICBpZiBzZWxmLl9leHAgPCBleHBfbWluOgorICAgICAgICAgICAgZGlnaXRzID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBleHBfbWluCisgICAgICAgICAgICBpZiBkaWdpdHMgPCAwOgorICAgICAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcxJywgZXhwX21pbi0xKQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDAKKyAgICAgICAgICAgIHJvdW5kaW5nX21ldGhvZCA9IHNlbGYuX3BpY2tfcm91bmRpbmdfZnVuY3Rpb25bY29udGV4dC5yb3VuZGluZ10KKyAgICAgICAgICAgIGNoYW5nZWQgPSByb3VuZGluZ19tZXRob2Qoc2VsZiwgZGlnaXRzKQorICAgICAgICAgICAgY29lZmYgPSBzZWxmLl9pbnRbOmRpZ2l0c10gb3IgJzAnCisgICAgICAgICAgICBpZiBjaGFuZ2VkID4gMDoKKyAgICAgICAgICAgICAgICBjb2VmZiA9IHN0cihpbnQoY29lZmYpKzEpCisgICAgICAgICAgICAgICAgaWYgbGVuKGNvZWZmKSA+IGNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBjb2VmZls6LTFdCisgICAgICAgICAgICAgICAgICAgIGV4cF9taW4gKz0gMQorCisgICAgICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHJvdW5kaW5nIHB1c2hlZCB0aGUgZXhwb25lbnQgb3V0IG9mIHJhbmdlCisgICAgICAgICAgICBpZiBleHBfbWluID4gRXRvcDoKKyAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihPdmVyZmxvdywgJ2Fib3ZlIEVtYXgnLCBzZWxmLl9zaWduKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIGNvZWZmLCBleHBfbWluKQorCisgICAgICAgICAgICAjIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBzaWduYWxzLCB0YWtpbmcgY2FyZSB0byByZXNwZWN0CisgICAgICAgICAgICAjIHRoZSBwcmVjZWRlbmNlIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICAgICAgaWYgY2hhbmdlZCBhbmQgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQorICAgICAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQorICAgICAgICAgICAgaWYgY2hhbmdlZDoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgIGlmIG5vdCBhbnM6CisgICAgICAgICAgICAgICAgIyByYWlzZSBDbGFtcGVkIG9uIHVuZGVyZmxvdyB0byAwCisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmX2lzX3N1Ym5vcm1hbDoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKKworICAgICAgICAjIGZvbGQgZG93biBpZiBjbGFtcCA9PSAxIGFuZCBzZWxmIGhhcyB0b28gZmV3IGRpZ2l0cworICAgICAgICBpZiBjb250ZXh0LmNsYW1wID09IDEgYW5kIHNlbGYuX2V4cCA+IEV0b3A6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQorICAgICAgICAgICAgc2VsZl9wYWRkZWQgPSBzZWxmLl9pbnQgKyAnMCcqKHNlbGYuX2V4cCAtIEV0b3ApCisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmX3BhZGRlZCwgRXRvcCkKKworICAgICAgICAjIGhlcmUgc2VsZiB3YXMgcmVwcmVzZW50YWJsZSB0byBiZWdpbiB3aXRoOyByZXR1cm4gdW5jaGFuZ2VkCisgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAjIGZvciBlYWNoIG9mIHRoZSByb3VuZGluZyBmdW5jdGlvbnMgYmVsb3c6CisgICAgIyAgIHNlbGYgaXMgYSBmaW5pdGUsIG5vbnplcm8gRGVjaW1hbAorICAgICMgICBwcmVjIGlzIGFuIGludGVnZXIgc2F0aXNmeWluZyAwIDw9IHByZWMgPCBsZW4oc2VsZi5faW50KQorICAgICMKKyAgICAjIGVhY2ggZnVuY3Rpb24gcmV0dXJucyBlaXRoZXIgLTEsIDAsIG9yIDEsIGFzIGZvbGxvd3M6CisgICAgIyAgIDEgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pCisgICAgIyAgIDAgaW5kaWNhdGVzIHRoYXQgc2VsZiBzaG91bGQgYmUgdHJ1bmNhdGVkLCBhbmQgdGhhdCBhbGwgdGhlCisgICAgIyAgICAgZGlnaXRzIHRvIGJlIHRydW5jYXRlZCBhcmUgemVyb3MgKHNvIHRoZSB2YWx1ZSBpcyB1bmNoYW5nZWQpCisgICAgIyAgLTEgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIG5vbnplcm8gZGlnaXRzIHRvIGJlIHRydW5jYXRlZAorCisgICAgZGVmIF9yb3VuZF9kb3duKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJBbHNvIGtub3duIGFzIHJvdW5kLXRvd2FyZHMtMCwgdHJ1bmNhdGUuIiIiCisgICAgICAgIGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgIGRlZiBfcm91bmRfdXAoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyBhd2F5IGZyb20gMC4iIiIKKyAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCisKKyAgICBkZWYgX3JvdW5kX2hhbGZfdXAoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyA1IHVwIChhd2F5IGZyb20gMCkiIiIKKyAgICAgICAgaWYgc2VsZi5faW50W3ByZWNdIGluICc1Njc4OSc6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBlbGlmIF9hbGxfemVyb3Moc2VsZi5faW50LCBwcmVjKToKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLTEKKworICAgIGRlZiBfcm91bmRfaGFsZl9kb3duKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZCA1IGRvd24iIiIKKyAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKToKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2hhbGZfdXAocHJlYykKKworICAgIGRlZiBfcm91bmRfaGFsZl9ldmVuKHNlbGYsIHByZWMpOgorICAgICAgICAiIiJSb3VuZCA1IHRvIGV2ZW4sIHJlc3QgdG8gbmVhcmVzdC4iIiIKKyAgICAgICAgaWYgX2V4YWN0X2hhbGYoc2VsZi5faW50LCBwcmVjKSBhbmQgXAorICAgICAgICAgICAgICAgIChwcmVjID09IDAgb3Igc2VsZi5faW50W3ByZWMtMV0gaW4gJzAyNDY4Jyk6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCisKKyAgICBkZWYgX3JvdW5kX2NlaWxpbmcoc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyB1cCAobm90IGF3YXkgZnJvbSAwIGlmIG5lZ2F0aXZlLikiIiIKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKworICAgIGRlZiBfcm91bmRfZmxvb3Ioc2VsZiwgcHJlYyk6CisgICAgICAgICIiIlJvdW5kcyBkb3duIChub3QgdG93YXJkcyAwIGlmIG5lZ2F0aXZlKSIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9kb3duKHByZWMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gLXNlbGYuX3JvdW5kX2Rvd24ocHJlYykKKworICAgIGRlZiBfcm91bmRfMDV1cChzZWxmLCBwcmVjKToKKyAgICAgICAgIiIiUm91bmQgZG93biB1bmxlc3MgZGlnaXQgcHJlYy0xIGlzIDAgb3IgNS4iIiIKKyAgICAgICAgaWYgcHJlYyBhbmQgc2VsZi5faW50W3ByZWMtMV0gbm90IGluICcwNSc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCisKKyAgICBfcGlja19yb3VuZGluZ19mdW5jdGlvbiA9IGRpY3QoCisgICAgICAgIFJPVU5EX0RPV04gPSBfcm91bmRfZG93biwKKyAgICAgICAgUk9VTkRfVVAgPSBfcm91bmRfdXAsCisgICAgICAgIFJPVU5EX0hBTEZfVVAgPSBfcm91bmRfaGFsZl91cCwKKyAgICAgICAgUk9VTkRfSEFMRl9ET1dOID0gX3JvdW5kX2hhbGZfZG93biwKKyAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gX3JvdW5kX2hhbGZfZXZlbiwKKyAgICAgICAgUk9VTkRfQ0VJTElORyA9IF9yb3VuZF9jZWlsaW5nLAorICAgICAgICBST1VORF9GTE9PUiA9IF9yb3VuZF9mbG9vciwKKyAgICAgICAgUk9VTkRfMDVVUCA9IF9yb3VuZF8wNXVwLAorICAgICkKKworICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgbj1Ob25lKToKKyAgICAgICAgIiIiUm91bmQgc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBvciB0byBhIGdpdmVuIHByZWNpc2lvbi4KKworICAgICAgICBJZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBzdXBwbGllZCwgcm91bmQgYSBmaW5pdGUgRGVjaW1hbAorICAgICAgICBpbnN0YW5jZSBzZWxmIHRvIHRoZSBuZWFyZXN0IGludGVnZXIuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yCisgICAgICAgIGEgTmFOIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIElmIHNlbGYgaXMgZmluaXRlCisgICAgICAgIGFuZCBsaWVzIGV4YWN0bHkgaGFsZndheSBiZXR3ZWVuIHR3byBpbnRlZ2VycyB0aGVuIGl0IGlzCisgICAgICAgIHJvdW5kZWQgdG8gdGhlIGludGVnZXIgd2l0aCBldmVuIGxhc3QgZGlnaXQuCisKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSkKKyAgICAgICAgMTIzCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctNDU2Ljc4OScpKQorICAgICAgICAtNDU3CisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctMy4wJykpCisgICAgICAgIC0zCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcyLjUnKSkKKyAgICAgICAgMgorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMy41JykpCisgICAgICAgIDQKKyAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ0luZicpKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIE92ZXJmbG93RXJyb3I6IGNhbm5vdCByb3VuZCBhbiBpbmZpbml0eQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnTmFOJykpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgVmFsdWVFcnJvcjogY2Fubm90IHJvdW5kIGEgTmFOCisKKyAgICAgICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgbiBpcyBzdXBwbGllZCwgc2VsZiBpcyByb3VuZGVkIHRvIG4KKyAgICAgICAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgdGhlIHJvdW5kaW5nIG1vZGUgZm9yIHRoZSBjdXJyZW50CisgICAgICAgIGNvbnRleHQuCisKKyAgICAgICAgRm9yIGFuIGludGVnZXIgbiwgcm91bmQoc2VsZiwgLW4pIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bworICAgICAgICBzZWxmLnF1YW50aXplKERlY2ltYWwoJzFFbicpKS4KKworICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAwKQorICAgICAgICBEZWNpbWFsKCcxMjMnKQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAyKQorICAgICAgICBEZWNpbWFsKCcxMjMuNDYnKQorICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMTIzLjQ1NicpLCAtMikKKyAgICAgICAgRGVjaW1hbCgnMUUrMicpCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCctSW5maW5pdHknKSwgMzcpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdzTmFOMTIzJyksIDApCisgICAgICAgIERlY2ltYWwoJ05hTjEyMycpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIHR3by1hcmd1bWVudCBmb3JtOiB1c2UgdGhlIGVxdWl2YWxlbnQgcXVhbnRpemUgY2FsbAorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobiwgaW50KToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1NlY29uZCBhcmd1bWVudCB0byByb3VuZCBzaG91bGQgYmUgaW50ZWdyYWwnKQorICAgICAgICAgICAgZXhwID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIC1uKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucXVhbnRpemUoZXhwKQorCisgICAgICAgICMgb25lLWFyZ3VtZW50IGZvcm0KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0hBTEZfRVZFTikpCisKKyAgICBkZWYgX19mbG9vcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZsb29yIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBncmVhdGVzdAorICAgICAgICBpbnRlZ2VyIG4gc3VjaCB0aGF0IG4gPD0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4KKyAgICAgICAgdGhlbiBhIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQorICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfRkxPT1IpKQorCisgICAgZGVmIF9fY2VpbF9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGNlaWxpbmcgb2Ygc2VsZiwgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBGb3IgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBzZWxmLCByZXR1cm4gdGhlIGxlYXN0IGludGVnZXIgbgorICAgICAgICBzdWNoIHRoYXQgbiA+PSBzZWxmLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvciBhIE5hTiB0aGVuIGEKKyAgICAgICAgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9DRUlMSU5HKSkKKworICAgIGRlZiBmbWEoc2VsZiwgb3RoZXIsIHRoaXJkLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJGdXNlZCBtdWx0aXBseS1hZGQuCisKKyAgICAgICAgUmV0dXJucyBzZWxmKm90aGVyK3RoaXJkIHdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZQorICAgICAgICBwcm9kdWN0IHNlbGYqb3RoZXIuCisKKyAgICAgICAgc2VsZiBhbmQgb3RoZXIgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHdpdGggbm8gcm91bmRpbmcgb2YKKyAgICAgICAgdGhlIHJlc3VsdC4gIFRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCwKKyAgICAgICAgYW5kIGEgc2luZ2xlIGZpbmFsIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgIyBjb21wdXRlIHByb2R1Y3Q7IHJhaXNlIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIG9wZXJhbmQgaXMKKyAgICAgICAgIyBhIHNpZ25hbGluZyBOYU4gb3IgaWYgdGhlIHByb2R1Y3QgaXMgemVybyB0aW1lcyBpbmZpbml0eS4KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ04nOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsIHNlbGYpCisgICAgICAgICAgICBpZiBvdGhlci5fZXhwID09ICdOJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBvdGhlcikKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IHNlbGYKKyAgICAgICAgICAgIGVsaWYgb3RoZXIuX2V4cCA9PSAnbic6CisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IG90aGVyCisgICAgICAgICAgICBlbGlmIHNlbGYuX2V4cCA9PSAnRic6CisgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTkYgKiAwIGluIGZtYScpCisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCisgICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ0YnOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwICogSU5GIGluIGZtYScpCisgICAgICAgICAgICAgICAgcHJvZHVjdCA9IF9TaWduZWRJbmZpbml0eVtzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ25dCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcm9kdWN0ID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBpbnQob3RoZXIuX2ludCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwICsgb3RoZXIuX2V4cCkKKworICAgICAgICByZXR1cm4gcHJvZHVjdC5fX2FkZF9fKHRoaXJkLCBjb250ZXh0KQorCisgICAgZGVmIF9wb3dlcl9tb2R1bG8oc2VsZiwgb3RoZXIsIG1vZHVsbywgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiVGhyZWUgYXJndW1lbnQgdmVyc2lvbiBvZiBfX3Bvd19fIiIiCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvKQorICAgICAgICBpZiBtb2R1bG8gaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gbW9kdWxvCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgZGVhbCB3aXRoIE5hTnM6IGlmIHRoZXJlIGFyZSBhbnkgc05hTnMgdGhlbiBmaXJzdCBvbmUgd2lucywKKyAgICAgICAgIyAoaS5lLiBiZWhhdmlvdXIgZm9yIE5hTnMgaXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YgZm1hKQorICAgICAgICBzZWxmX2lzX25hbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgb3RoZXJfaXNfbmFuID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgbW9kdWxvX2lzX25hbiA9IG1vZHVsby5faXNuYW4oKQorICAgICAgICBpZiBzZWxmX2lzX25hbiBvciBvdGhlcl9pc19uYW4gb3IgbW9kdWxvX2lzX25hbjoKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQorICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuID09IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcikKKyAgICAgICAgICAgIGlmIG1vZHVsb19pc19uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsbykKKyAgICAgICAgICAgIGlmIHNlbGZfaXNfbmFuOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgICAgICBpZiBvdGhlcl9pc19uYW46CisgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gbW9kdWxvLl9maXhfbmFuKGNvbnRleHQpCisKKyAgICAgICAgIyBjaGVjayBpbnB1dHM6IHdlIGFwcGx5IHNhbWUgcmVzdHJpY3Rpb25zIGFzIFB5dGhvbidzIHBvdygpCisgICAgICAgIGlmIG5vdCAoc2VsZi5faXNpbnRlZ2VyKCkgYW5kCisgICAgICAgICAgICAgICAgb3RoZXIuX2lzaW50ZWdlcigpIGFuZAorICAgICAgICAgICAgICAgIG1vZHVsby5faXNpbnRlZ2VyKCkpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BvdygpIDNyZCBhcmd1bWVudCBub3QgYWxsb3dlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VubGVzcyBhbGwgYXJndW1lbnRzIGFyZSBpbnRlZ2VycycpCisgICAgICAgIGlmIG90aGVyIDwgMDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAybmQgYXJndW1lbnQgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVnYXRpdmUgd2hlbiAzcmQgYXJndW1lbnQgc3BlY2lmaWVkJykKKyAgICAgICAgaWYgbm90IG1vZHVsbzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgY2Fubm90IGJlIDAnKQorCisgICAgICAgICMgYWRkaXRpb25hbCByZXN0cmljdGlvbiBmb3IgZGVjaW1hbDogdGhlIG1vZHVsdXMgbXVzdCBiZSBsZXNzCisgICAgICAgICMgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZQorICAgICAgICBpZiBtb2R1bG8uYWRqdXN0ZWQoKSA+PSBjb250ZXh0LnByZWM6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdWZmaWNpZW50IHByZWNpc2lvbjogcG93KCkgM3JkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgbXVzdCBub3QgaGF2ZSBtb3JlIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gZGlnaXRzJykKKworICAgICAgICAjIGRlZmluZSAwKiowID09IE5hTiwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdHdvLWFyZ3VtZW50IHBvdworICAgICAgICAjIChldmVuIHRob3VnaCBpdCBodXJ0cyEpCisgICAgICAgIGlmIG5vdCBvdGhlciBhbmQgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXQgbGVhc3Qgb25lIG9mIHBvdygpIDFzdCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZCAybmQgYXJndW1lbnQgbXVzdCBiZSBub256ZXJvIDsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAqKjAgaXMgbm90IGRlZmluZWQnKQorCisgICAgICAgICMgY29tcHV0ZSBzaWduIG9mIHJlc3VsdAorICAgICAgICBpZiBvdGhlci5faXNldmVuKCk6CisgICAgICAgICAgICBzaWduID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KKworICAgICAgICAjIGNvbnZlcnQgbW9kdWxvIHRvIGEgUHl0aG9uIGludGVnZXIsIGFuZCBzZWxmIGFuZCBvdGhlciB0bworICAgICAgICAjIERlY2ltYWwgaW50ZWdlcnMgKGkuZS4gZm9yY2UgdGhlaXIgZXhwb25lbnRzIHRvIGJlID49IDApCisgICAgICAgIG1vZHVsbyA9IGFicyhpbnQobW9kdWxvKSkKKyAgICAgICAgYmFzZSA9IF9Xb3JrUmVwKHNlbGYudG9faW50ZWdyYWxfdmFsdWUoKSkKKyAgICAgICAgZXhwb25lbnQgPSBfV29ya1JlcChvdGhlci50b19pbnRlZ3JhbF92YWx1ZSgpKQorCisgICAgICAgICMgY29tcHV0ZSByZXN1bHQgdXNpbmcgaW50ZWdlciBwb3coKQorICAgICAgICBiYXNlID0gKGJhc2UuaW50ICUgbW9kdWxvICogcG93KDEwLCBiYXNlLmV4cCwgbW9kdWxvKSkgJSBtb2R1bG8KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoZXhwb25lbnQuZXhwKToKKyAgICAgICAgICAgIGJhc2UgPSBwb3coYmFzZSwgMTAsIG1vZHVsbykKKyAgICAgICAgYmFzZSA9IHBvdyhiYXNlLCBleHBvbmVudC5pbnQsIG1vZHVsbykKKworICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCBzdHIoYmFzZSksIDApCisKKyAgICBkZWYgX3Bvd2VyX2V4YWN0KHNlbGYsIG90aGVyLCBwKToKKyAgICAgICAgIiIiQXR0ZW1wdCB0byBjb21wdXRlIHNlbGYqKm90aGVyIGV4YWN0bHkuCisKKyAgICAgICAgR2l2ZW4gRGVjaW1hbHMgc2VsZiBhbmQgb3RoZXIgYW5kIGFuIGludGVnZXIgcCwgYXR0ZW1wdCB0bworICAgICAgICBjb21wdXRlIGFuIGV4YWN0IHJlc3VsdCBmb3IgdGhlIHBvd2VyIHNlbGYqKm90aGVyLCB3aXRoIHAKKyAgICAgICAgZGlnaXRzIG9mIHByZWNpc2lvbi4gIFJldHVybiBOb25lIGlmIHNlbGYqKm90aGVyIGlzIG5vdAorICAgICAgICBleGFjdGx5IHJlcHJlc2VudGFibGUgaW4gcCBkaWdpdHMuCisKKyAgICAgICAgQXNzdW1lcyB0aGF0IGVsaW1pbmF0aW9uIG9mIHNwZWNpYWwgY2FzZXMgaGFzIGFscmVhZHkgYmVlbgorICAgICAgICBwZXJmb3JtZWQ6IHNlbGYgYW5kIG90aGVyIG11c3QgYm90aCBiZSBub25zcGVjaWFsOyBzZWxmIG11c3QKKyAgICAgICAgYmUgcG9zaXRpdmUgYW5kIG5vdCBudW1lcmljYWxseSBlcXVhbCB0byAxOyBvdGhlciBtdXN0IGJlCisgICAgICAgIG5vbnplcm8uICBGb3IgZWZmaWNpZW5jeSwgb3RoZXIuX2V4cCBzaG91bGQgbm90IGJlIHRvbyBsYXJnZSwKKyAgICAgICAgc28gdGhhdCAxMCoqYWJzKG90aGVyLl9leHApIGlzIGEgZmVhc2libGUgY2FsY3VsYXRpb24uIiIiCisKKyAgICAgICAgIyBJbiB0aGUgY29tbWVudHMgYmVsb3csIHdlIHdyaXRlIHggZm9yIHRoZSB2YWx1ZSBvZiBzZWxmIGFuZCB5IGZvciB0aGUKKyAgICAgICAgIyB2YWx1ZSBvZiBvdGhlci4gIFdyaXRlIHggPSB4YyoxMCoqeGUgYW5kIGFicyh5KSA9IHljKjEwKip5ZSwgd2l0aCB4YworICAgICAgICAjIGFuZCB5YyBwb3NpdGl2ZSBpbnRlZ2VycyBub3QgZGl2aXNpYmxlIGJ5IDEwLgorCisgICAgICAgICMgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBpZGVudGlmeSB0aGUgKmZhaWx1cmUqCisgICAgICAgICMgb2YgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgd2l0aCBhcyBsaXR0bGUgZWZmb3J0IGFzCisgICAgICAgICMgcG9zc2libGUuICBTbyB3ZSBsb29rIGZvciBjaGVhcCBhbmQgZWFzeSB0ZXN0cyB0aGF0CisgICAgICAgICMgZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiB4Kip5IGJlaW5nIGV4YWN0LiAgT25seSBpZiBhbGwKKyAgICAgICAgIyB0aGVzZSB0ZXN0cyBhcmUgcGFzc2VkIGRvIHdlIGdvIG9uIHRvIGFjdHVhbGx5IGNvbXB1dGUgeCoqeS4KKworICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbnVtYmVyIG0vbiwgd2l0aCBtIGFuZAorICAgICAgICAjIG4gcmVsYXRpdmVseSBwcmltZSBhbmQgbj4wLiAgVGhlbiBmb3IgeCoqeSB0byBiZSBleGFjdGx5CisgICAgICAgICMgcmVwcmVzZW50YWJsZSAoYXQgKmFueSogcHJlY2lzaW9uKSwgeGMgbXVzdCBiZSB0aGUgbnRoIHBvd2VyIG9mIGEKKyAgICAgICAgIyBwb3NpdGl2ZSBpbnRlZ2VyIGFuZCB4ZSBtdXN0IGJlIGRpdmlzaWJsZSBieSBuLiAgSWYgeSBpcyBuZWdhdGl2ZQorICAgICAgICAjIHRoZW4gYWRkaXRpb25hbGx5IHhjIG11c3QgYmUgYSBwb3dlciBvZiBlaXRoZXIgMiBvciA1LCBoZW5jZSBhIHBvd2VyCisgICAgICAgICMgb2YgMioqbiBvciA1KipuLgorICAgICAgICAjCisgICAgICAgICMgVGhlcmUncyBhIGxpbWl0IHRvIGhvdyBzbWFsbCB8eXwgY2FuIGJlOiBpZiB5PW0vbiBhcyBhYm92ZQorICAgICAgICAjIHRoZW46CisgICAgICAgICMKKyAgICAgICAgIyAgKDEpIGlmIHhjICE9IDEgdGhlbiBmb3IgdGhlIHJlc3VsdCB0byBiZSByZXByZXNlbnRhYmxlIHdlCisgICAgICAgICMgICAgICBuZWVkIHhjKiooMS9uKSA+PSAyLCBhbmQgaGVuY2UgYWxzbyB4YyoqfHl8ID49IDIuICBTbworICAgICAgICAjICAgICAgaWYgfHl8IDw9IDEvbmJpdHMoeGMpIHRoZW4geGMgPCAyKipuYml0cyh4YykgPD0KKyAgICAgICAgIyAgICAgIDIqKigxL3x5fCksIGhlbmNlIHhjKip8eXwgPCAyIGFuZCB0aGUgcmVzdWx0IGlzIG5vdAorICAgICAgICAjICAgICAgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgIworICAgICAgICAjICAoMikgaWYgeGUgIT0gMCwgfHhlfCooMS9uKSA+PSAxLCBzbyB8eGV8Knx5fCA+PSAxLiAgSGVuY2UgaWYKKyAgICAgICAgIyAgICAgIHx5fCA8IDEvfHhlfCB0aGVuIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCisgICAgICAgICMKKyAgICAgICAgIyBOb3RlIHRoYXQgc2luY2UgeCBpcyBub3QgZXF1YWwgdG8gMSwgYXQgbGVhc3Qgb25lIG9mICgxKSBhbmQKKyAgICAgICAgIyAoMikgbXVzdCBhcHBseS4gIE5vdyB8eXwgPCAxL25iaXRzKHhjKSBpZmYgfHljfCpuYml0cyh4YykgPAorICAgICAgICAjIDEwKioteWUgaWZmIGxlbihzdHIofHljfCpuYml0cyh4YykpIDw9IC15ZS4KKyAgICAgICAgIworICAgICAgICAjIFRoZXJlJ3MgYWxzbyBhIGxpbWl0IHRvIGhvdyBsYXJnZSB5IGNhbiBiZSwgYXQgbGVhc3QgaWYgaXQncworICAgICAgICAjIHBvc2l0aXZlOiB0aGUgbm9ybWFsaXplZCByZXN1bHQgd2lsbCBoYXZlIGNvZWZmaWNpZW50IHhjKip5LAorICAgICAgICAjIHNvIGlmIGl0J3MgcmVwcmVzZW50YWJsZSB0aGVuIHhjKip5IDwgMTAqKnAsIGFuZCB5IDwKKyAgICAgICAgIyBwL2xvZzEwKHhjKS4gIEhlbmNlIGlmIHkqbG9nMTAoeGMpID49IHAgdGhlbiB0aGUgcmVzdWx0IGlzCisgICAgICAgICMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZS4KKworICAgICAgICAjIGlmIGxlbihzdHIoYWJzKHljKnhlKSkgPD0gLXllIHRoZW4gYWJzKHljKnhlKSA8IDEwKioteWUsCisgICAgICAgICMgc28gfHl8IDwgMS94ZSBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgIyBTaW1pbGFybHksIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllIGltcGxpZXMgfHl8CisgICAgICAgICMgPCAxL25iaXRzKHhjKS4KKworICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCisgICAgICAgIHdoaWxlIHhjICUgMTAgPT0gMDoKKyAgICAgICAgICAgIHhjIC8vPSAxMAorICAgICAgICAgICAgeGUgKz0gMQorCisgICAgICAgIHkgPSBfV29ya1JlcChvdGhlcikKKyAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCisgICAgICAgIHdoaWxlIHljICUgMTAgPT0gMDoKKyAgICAgICAgICAgIHljIC8vPSAxMAorICAgICAgICAgICAgeWUgKz0gMQorCisgICAgICAgICMgY2FzZSB3aGVyZSB4YyA9PSAxOiByZXN1bHQgaXMgMTAqKih4ZSp5KSwgd2l0aCB4ZSp5CisgICAgICAgICMgcmVxdWlyZWQgdG8gYmUgYW4gaW50ZWdlcgorICAgICAgICBpZiB4YyA9PSAxOgorICAgICAgICAgICAgeGUgKj0geWMKKyAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdyAxMCoqKHhlICogMTAqKnllKTsgIHhlICogMTAqKnllIG11c3QgYmUgaW50ZWdyYWwKKyAgICAgICAgICAgIHdoaWxlIHhlICUgMTAgPT0gMDoKKyAgICAgICAgICAgICAgICB4ZSAvLz0gMTAKKyAgICAgICAgICAgICAgICB5ZSArPSAxCisgICAgICAgICAgICBpZiB5ZSA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGV4cG9uZW50ID0geGUgKiAxMCoqeWUKKyAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50CisgICAgICAgICAgICAjIGlmIG90aGVyIGlzIGEgbm9ubmVnYXRpdmUgaW50ZWdlciwgdXNlIGlkZWFsIGV4cG9uZW50CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCkgYW5kIG90aGVyLl9zaWduID09IDA6CisgICAgICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQorICAgICAgICAgICAgICAgIHplcm9zID0gbWluKGV4cG9uZW50LWlkZWFsX2V4cG9uZW50LCBwLTEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHplcm9zID0gMAorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnICsgJzAnKnplcm9zLCBleHBvbmVudC16ZXJvcykKKworICAgICAgICAjIGNhc2Ugd2hlcmUgeSBpcyBuZWdhdGl2ZTogeGMgbXVzdCBiZSBlaXRoZXIgYSBwb3dlcgorICAgICAgICAjIG9mIDIgb3IgYSBwb3dlciBvZiA1LgorICAgICAgICBpZiB5LnNpZ24gPT0gMToKKyAgICAgICAgICAgIGxhc3RfZGlnaXQgPSB4YyAlIDEwCisgICAgICAgICAgICBpZiBsYXN0X2RpZ2l0IGluICgyLDQsNiw4KToKKyAgICAgICAgICAgICAgICAjIHF1aWNrIHRlc3QgZm9yIHBvd2VyIG9mIDIKKyAgICAgICAgICAgICAgICBpZiB4YyAmIC14YyAhPSB4YzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICAjIG5vdyB4YyBpcyBhIHBvd2VyIG9mIDI7IGUgaXMgaXRzIGV4cG9uZW50CisgICAgICAgICAgICAgICAgZSA9IF9uYml0cyh4YyktMQorCisgICAgICAgICAgICAgICAgIyBXZSBub3cgaGF2ZToKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHggPSAyKiplICogMTAqKnhlLCBlID4gMCwgYW5kIHkgPCAwLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFRoZSBleGFjdCByZXN1bHQgaXM6CisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB4Kip5ID0gNSoqKC1lKnkpICogMTAqKihlKnkgKyB4ZSp5KQorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHByb3ZpZGVkIHRoYXQgYm90aCBlKnkgYW5kIHhlKnkgYXJlIGludGVnZXJzLiAgTm90ZSB0aGF0IGlmCisgICAgICAgICAgICAgICAgIyA1KiooLWUqeSkgPj0gMTAqKnAsIHRoZW4gdGhlIHJlc3VsdCBjYW4ndCBiZSBleHByZXNzZWQKKyAgICAgICAgICAgICAgICAjIGV4YWN0bHkgd2l0aCBwIGRpZ2l0cyBvZiBwcmVjaXNpb24uCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgVXNpbmcgdGhlIGFib3ZlLCB3ZSBjYW4gZ3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUuCisgICAgICAgICAgICAgICAgIyA5My82NSBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nKDEwKS9sb2coNSksIHNvIGlmCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB5ZSA+PSBsZW4oc3RyKDkzKnAvLzY1KSkKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyB0aGVuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICAtZSp5ID49IC15ID49IDEwKip5ZSA+IDkzKnAvNjUgPiBwKmxvZygxMCkvbG9nKDUpLAorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHNvIDUqKigtZSp5KSA+PSAxMCoqcCwgYW5kIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICAgIyBjYW4ndCBiZSBleHByZXNzZWQgaW4gcCBkaWdpdHMuCisKKyAgICAgICAgICAgICAgICAjIGVtYXggPj0gbGFyZ2VzdCBlIHN1Y2ggdGhhdCA1KiplIDwgMTAqKnAuCisgICAgICAgICAgICAgICAgZW1heCA9IHAqOTMvLzY1CisgICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICAjIEZpbmQgLWUqeSBhbmQgLXhlKnk7IGJvdGggbXVzdCBiZSBpbnRlZ2VycworICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHhjID0gNSoqZQorCisgICAgICAgICAgICBlbGlmIGxhc3RfZGlnaXQgPT0gNToKKyAgICAgICAgICAgICAgICAjIGUgPj0gbG9nXzUoeGMpIGlmIHhjIGlzIGEgcG93ZXIgb2YgNTsgd2UgaGF2ZQorICAgICAgICAgICAgICAgICMgZXF1YWxpdHkgYWxsIHRoZSB3YXkgdXAgdG8geGM9NSoqMjY1OAorICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpKjI4Ly82NQorICAgICAgICAgICAgICAgIHhjLCByZW1haW5kZXIgPSBkaXZtb2QoNSoqZSwgeGMpCisgICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHdoaWxlIHhjICUgNSA9PSAwOgorICAgICAgICAgICAgICAgICAgICB4YyAvLz0gNQorICAgICAgICAgICAgICAgICAgICBlIC09IDEKKworICAgICAgICAgICAgICAgICMgR3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUsIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIGluCisgICAgICAgICAgICAgICAgIyB0aGUgJ3hjIGlzIGEgcG93ZXIgb2YgMicgYnJhbmNoLiAgMTAvMyBpcyBhbiB1cHBlciBib3VuZCBmb3IKKyAgICAgICAgICAgICAgICAjIGxvZygxMCkvbG9nKDIpLgorICAgICAgICAgICAgICAgIGVtYXggPSBwKjEwLy8zCisgICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICB4YyA9IDIqKmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgaWYgeGMgPj0gMTAqKnA6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIHhlID0gLWUteGUKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cih4YyksIHhlKQorCisgICAgICAgICMgbm93IHkgaXMgcG9zaXRpdmU7IGZpbmQgbSBhbmQgbiBzdWNoIHRoYXQgeSA9IG0vbgorICAgICAgICBpZiB5ZSA+PSAwOgorICAgICAgICAgICAgbSwgbiA9IHljKjEwKip5ZSwgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgeGUgIT0gMCBhbmQgbGVuKHN0cihhYnMoeWMqeGUpKSkgPD0gLXllOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICB4Y19iaXRzID0gX25iaXRzKHhjKQorICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgbGVuKHN0cihhYnMoeWMpKnhjX2JpdHMpKSA8PSAteWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIG0sIG4gPSB5YywgMTAqKigteWUpCisgICAgICAgICAgICB3aGlsZSBtICUgMiA9PSBuICUgMiA9PSAwOgorICAgICAgICAgICAgICAgIG0gLy89IDIKKyAgICAgICAgICAgICAgICBuIC8vPSAyCisgICAgICAgICAgICB3aGlsZSBtICUgNSA9PSBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG0gLy89IDUKKyAgICAgICAgICAgICAgICBuIC8vPSA1CisKKyAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjKjEwKip4ZQorICAgICAgICBpZiBuID4gMToKKyAgICAgICAgICAgICMgaWYgMSA8IHhjIDwgMioqbiB0aGVuIHhjIGlzbid0IGFuIG50aCBwb3dlcgorICAgICAgICAgICAgaWYgeGMgIT0gMSBhbmQgeGNfYml0cyA8PSBuOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgIHhlLCByZW0gPSBkaXZtb2QoeGUsIG4pCisgICAgICAgICAgICBpZiByZW0gIT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICAgICAjIGNvbXB1dGUgbnRoIHJvb3Qgb2YgeGMgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kCisgICAgICAgICAgICBhID0gMSA8PCAtKC1fbmJpdHMoeGMpLy9uKSAjIGluaXRpYWwgZXN0aW1hdGUKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcSwgciA9IGRpdm1vZCh4YywgYSoqKG4tMSkpCisgICAgICAgICAgICAgICAgaWYgYSA8PSBxOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGEgPSAoYSoobi0xKSArIHEpLy9uCisgICAgICAgICAgICBpZiBub3QgKGEgPT0gcSBhbmQgciA9PSAwKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgeGMgPSBhCisKKyAgICAgICAgIyBub3cgeGMqMTAqKnhlIGlzIHRoZSBudGggcm9vdCBvZiB0aGUgb3JpZ2luYWwgeGMqMTAqKnhlCisgICAgICAgICMgY29tcHV0ZSBtdGggcG93ZXIgb2YgeGMqMTAqKnhlCisKKyAgICAgICAgIyBpZiBtID4gcCoxMDAvL19sb2cxMF9sYih4YykgdGhlbiBtID4gcC9sb2cxMCh4YyksIGhlbmNlIHhjKiptID4KKyAgICAgICAgIyAxMCoqcCBhbmQgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZS4KKyAgICAgICAgaWYgeGMgPiAxIGFuZCBtID4gcCoxMDAvL19sb2cxMF9sYih4Yyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB4YyA9IHhjKiptCisgICAgICAgIHhlICo9IG0KKyAgICAgICAgaWYgeGMgPiAxMCoqcDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgIyBieSB0aGlzIHBvaW50IHRoZSByZXN1bHQgKmlzKiBleGFjdGx5IHJlcHJlc2VudGFibGUKKyAgICAgICAgIyBhZGp1c3QgdGhlIGV4cG9uZW50IHRvIGdldCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgaWRlYWwKKyAgICAgICAgIyBleHBvbmVudCwgaWYgbmVjZXNzYXJ5CisgICAgICAgIHN0cl94YyA9IHN0cih4YykKKyAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgorICAgICAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBzZWxmLl9leHAqaW50KG90aGVyKQorICAgICAgICAgICAgemVyb3MgPSBtaW4oeGUtaWRlYWxfZXhwb25lbnQsIHAtbGVuKHN0cl94YykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB6ZXJvcyA9IDAKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyX3hjKycwJyp6ZXJvcywgeGUtemVyb3MpCisKKyAgICBkZWYgX19wb3dfXyhzZWxmLCBvdGhlciwgbW9kdWxvPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBzZWxmICoqIG90aGVyIFsgJSBtb2R1bG9dLgorCisgICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBzZWxmKipvdGhlci4KKworICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoc2VsZioqb3RoZXIpICUgbW9kdWxvLiAgRm9yIHRoZQorICAgICAgICB0aHJlZSBhcmd1bWVudCBmb3JtLCB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBvbiB0aGUKKyAgICAgICAgYXJndW1lbnRzIGhvbGQ6CisKKyAgICAgICAgIC0gYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsCisgICAgICAgICAtIG90aGVyIG11c3QgYmUgbm9ubmVnYXRpdmUKKyAgICAgICAgIC0gZWl0aGVyIHNlbGYgb3Igb3RoZXIgKG9yIGJvdGgpIG11c3QgYmUgbm9uemVybworICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBtdXN0IGhhdmUgYXQgbW9zdCBwIGRpZ2l0cywKKyAgICAgICAgICAgd2hlcmUgcCBpcyB0aGUgY29udGV4dCBwcmVjaXNpb24uCisKKyAgICAgICAgSWYgYW55IG9mIHRoZXNlIHJlc3RyaWN0aW9ucyBpcyB2aW9sYXRlZCB0aGUgSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBmbGFnIGlzIHJhaXNlZC4KKworICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhzZWxmLCBvdGhlciwgbW9kdWxvKSBpcyBpZGVudGljYWwgdG8gdGhlCisgICAgICAgIHJlc3VsdCB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoc2VsZioqb3RoZXIpICUKKyAgICAgICAgbW9kdWxvIHdpdGggdW5ib3VuZGVkIHByZWNpc2lvbiwgYnV0IGlzIGNvbXB1dGVkIG1vcmUKKyAgICAgICAgZWZmaWNpZW50bHkuICBJdCBpcyBhbHdheXMgZXhhY3QuCisgICAgICAgICIiIgorCisgICAgICAgIGlmIG1vZHVsbyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3dlcl9tb2R1bG8ob3RoZXIsIG1vZHVsbywgY29udGV4dCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQorICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBvdGhlcgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGVpdGhlciBhcmd1bWVudCBpcyBhIE5hTiA9PiByZXN1bHQgaXMgTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICAjIDAqKjAgPSBOYU4gKCEpLCB4KiowID0gMSBmb3Igbm9uemVybyB4IChpbmNsdWRpbmcgKy8tSW5maW5pdHkpCisgICAgICAgIGlmIG5vdCBvdGhlcjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnMCAqKiAwJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKworICAgICAgICAjIHJlc3VsdCBoYXMgc2lnbiAxIGlmZiBzZWxmLl9zaWduIGlzIDEgYW5kIG90aGVyIGlzIGFuIG9kZCBpbnRlZ2VyCisgICAgICAgIHJlc3VsdF9zaWduID0gMAorICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6CisgICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IG90aGVyLl9pc2V2ZW4oKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3NpZ24gPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgLXZlKipub25pbnRlZ2VyID0gTmFOCisgICAgICAgICAgICAgICAgIyAoLTApKipub25pbnRlZ2VyID0gMCoqbm9uaW50ZWdlcgorICAgICAgICAgICAgICAgIGlmIHNlbGY6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3ggKiogeSB3aXRoIHggbmVnYXRpdmUgYW5kIHkgbm90IGFuIGludGVnZXInKQorICAgICAgICAgICAgIyBuZWdhdGUgc2VsZiwgd2l0aG91dCBkb2luZyBhbnkgdW53YW50ZWQgcm91bmRpbmcKKyAgICAgICAgICAgIHNlbGYgPSBzZWxmLmNvcHlfbmVnYXRlKCkKKworICAgICAgICAjIDAqKigrdmUgb3IgSW5mKT0gMDsgMCoqKC12ZSBvciAtSW5mKSA9IEluZmluaXR5CisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQorCisgICAgICAgICMgSW5mKiooK3ZlIG9yIEluZikgPSBJbmY7IEluZioqKC12ZSBvciAtSW5mKSA9IDAKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3Jlc3VsdF9zaWduXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzAnLCAwKQorCisgICAgICAgICMgMSoqb3RoZXIgPSAxLCBidXQgdGhlIGNob2ljZSBvZiBleHBvbmVudCBhbmQgdGhlIGZsYWdzCisgICAgICAgICMgZGVwZW5kIG9uIHRoZSBleHBvbmVudCBvZiBzZWxmLCBhbmQgb24gd2hldGhlciBvdGhlciBpcyBhCisgICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciwgYSBuZWdhdGl2ZSBpbnRlZ2VyLCBvciBuZWl0aGVyCisgICAgICAgIGlmIHNlbGYgPT0gX09uZToKKyAgICAgICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKToKKyAgICAgICAgICAgICAgICAjIGV4cCA9IG1heChzZWxmLl9leHAqbWF4KGludChvdGhlciksIDApLAorICAgICAgICAgICAgICAgICMgMS1jb250ZXh0LnByZWMpIGJ1dCBldmFsdWF0aW5nIGludChvdGhlcikgZGlyZWN0bHkKKyAgICAgICAgICAgICAgICAjIGlzIGRhbmdlcm91cyB1bnRpbCB3ZSBrbm93IG90aGVyIGlzIHNtYWxsIChvdGhlcgorICAgICAgICAgICAgICAgICMgY291bGQgYmUgMWU5OTk5OTk5OTkpCisgICAgICAgICAgICAgICAgaWYgb3RoZXIuX3NpZ24gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IDAKKyAgICAgICAgICAgICAgICBlbGlmIG90aGVyID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gY29udGV4dC5wcmVjCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGludChvdGhlcikKKworICAgICAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cCAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgICAgICBpZiBleHAgPCAxLWNvbnRleHQucHJlYzoKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gMS1jb250ZXh0LnByZWMKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCisKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScrJzAnKi1leHAsIGV4cCkKKworICAgICAgICAjIGNvbXB1dGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZgorICAgICAgICBzZWxmX2FkaiA9IHNlbGYuYWRqdXN0ZWQoKQorCisgICAgICAgICMgc2VsZiAqKiBpbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmID4gMSwgMCBpZiBzZWxmIDwgMQorICAgICAgICAjIHNlbGYgKiogLWluZmluaXR5IGlzIGluZmluaXR5IGlmIHNlbGYgPCAxLCAwIGlmIHNlbGYgPiAxCisgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICBpZiAob3RoZXIuX3NpZ24gPT0gMCkgPT0gKHNlbGZfYWRqIDwgMCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KKworICAgICAgICAjIGZyb20gaGVyZSBvbiwgdGhlIHJlc3VsdCBhbHdheXMgZ29lcyB0aHJvdWdoIHRoZSBjYWxsCisgICAgICAgICMgdG8gX2ZpeCBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIGFucyA9IE5vbmUKKyAgICAgICAgZXhhY3QgPSBGYWxzZQorCisgICAgICAgICMgY3J1ZGUgdGVzdCB0byBjYXRjaCBjYXNlcyBvZiBleHRyZW1lIG92ZXJmbG93L3VuZGVyZmxvdy4gIElmCisgICAgICAgICMgbG9nMTAoc2VsZikqb3RoZXIgPj0gMTAqKmJvdW5kIGFuZCBib3VuZCA+PSBsZW4oc3RyKEVtYXgpKQorICAgICAgICAjIHRoZW4gMTAqKmJvdW5kID49IDEwKipsZW4oc3RyKEVtYXgpKSA+PSBFbWF4KzEgYW5kIGhlbmNlCisgICAgICAgICMgc2VsZioqb3RoZXIgPj0gMTAqKihFbWF4KzEpLCBzbyBvdmVyZmxvdyBvY2N1cnMuICBUaGUgdGVzdAorICAgICAgICAjIGZvciB1bmRlcmZsb3cgaXMgc2ltaWxhci4KKyAgICAgICAgYm91bmQgPSBzZWxmLl9sb2cxMF9leHBfYm91bmQoKSArIG90aGVyLmFkanVzdGVkKCkKKyAgICAgICAgaWYgKHNlbGZfYWRqID49IDApID09IChvdGhlci5fc2lnbiA9PSAwKToKKyAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyICt2ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyIC12ZQorICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdworICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cihjb250ZXh0LkVtYXgpKToKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIGNvbnRleHQuRW1heCsxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBzZWxmID4gMSBhbmQgb3RoZXIgLXZlLCBvciBzZWxmIDwgMSBhbmQgb3RoZXIgK3ZlCisgICAgICAgICAgICAjIHBvc3NpYmlsaXR5IG9mIHVuZGVyZmxvdyB0byAwCisgICAgICAgICAgICBFdGlueSA9IGNvbnRleHQuRXRpbnkoKQorICAgICAgICAgICAgaWYgYm91bmQgPj0gbGVuKHN0cigtRXRpbnkpKToKKyAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMScsIEV0aW55LTEpCisKKyAgICAgICAgIyB0cnkgZm9yIGFuIGV4YWN0IHJlc3VsdCB3aXRoIHByZWNpc2lvbiArMQorICAgICAgICBpZiBhbnMgaXMgTm9uZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX3Bvd2VyX2V4YWN0KG90aGVyLCBjb250ZXh0LnByZWMgKyAxKQorICAgICAgICAgICAgaWYgYW5zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9zaWduID09IDE6CisgICAgICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMSwgYW5zLl9pbnQsIGFucy5fZXhwKQorICAgICAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQorCisgICAgICAgICMgdXN1YWwgY2FzZTogaW5leGFjdCByZXN1bHQsIHgqKnkgY29tcHV0ZWQgZGlyZWN0bHkgYXMgZXhwKHkqbG9nKHgpKQorICAgICAgICBpZiBhbnMgaXMgTm9uZToKKyAgICAgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKyAgICAgICAgICAgIHggPSBfV29ya1JlcChzZWxmKQorICAgICAgICAgICAgeGMsIHhlID0geC5pbnQsIHguZXhwCisgICAgICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCisgICAgICAgICAgICB5YywgeWUgPSB5LmludCwgeS5leHAKKyAgICAgICAgICAgIGlmIHkuc2lnbiA9PSAxOgorICAgICAgICAgICAgICAgIHljID0gLXljCisKKyAgICAgICAgICAgICMgY29tcHV0ZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6ICBzdGFydCB3aXRoIHByZWNpc2lvbiArMywKKyAgICAgICAgICAgICMgdGhlbiBpbmNyZWFzZSBwcmVjaXNpb24gdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCisgICAgICAgICAgICBleHRyYSA9IDMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY29lZmYsIGV4cCA9IF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHArZXh0cmEpCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoY29lZmYpKS1wLTEpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleHRyYSArPSAzCisKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sIHN0cihjb2VmZiksIGV4cCkKKworICAgICAgICAjIHVubGlrZSBleHAsIGxuIGFuZCBsb2cxMCwgdGhlIHBvd2VyIGZ1bmN0aW9uIHJlc3BlY3RzIHRoZQorICAgICAgICAjIHJvdW5kaW5nIG1vZGU7IG5vIG5lZWQgdG8gc3dpdGNoIHRvIFJPVU5EX0hBTEZfRVZFTiBoZXJlCisKKyAgICAgICAgIyBUaGVyZSdzIGEgZGlmZmljdWx0eSBoZXJlIHdoZW4gJ290aGVyJyBpcyBub3QgYW4gaW50ZWdlciBhbmQKKyAgICAgICAgIyB0aGUgcmVzdWx0IGlzIGV4YWN0LiAgSW4gdGhpcyBjYXNlLCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICAjIHJlcXVpcmVzIHRoYXQgdGhlIEluZXhhY3QgZmxhZyBiZSByYWlzZWQgKGluIHNwaXRlIG9mCisgICAgICAgICMgZXhhY3RuZXNzKSwgYnV0IHNpbmNlIHRoZSByZXN1bHQgaXMgZXhhY3QgX2ZpeCB3b24ndCBkbyB0aGlzCisgICAgICAgICMgZm9yIHVzLiAgKENvcnJlc3BvbmRpbmdseSwgdGhlIFVuZGVyZmxvdyBzaWduYWwgc2hvdWxkIGFsc28KKyAgICAgICAgIyBiZSByYWlzZWQgZm9yIHN1Ym5vcm1hbCByZXN1bHRzLikgIFdlIGNhbid0IGRpcmVjdGx5IHJhaXNlCisgICAgICAgICMgdGhlc2Ugc2lnbmFscyBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIGNhbGxpbmcgX2ZpeCwgc2luY2UKKyAgICAgICAgIyB0aGF0IHdvdWxkIHZpb2xhdGUgdGhlIHByZWNlZGVuY2UgZm9yIHNpZ25hbHMuICBTbyB3ZSB3cmFwCisgICAgICAgICMgdGhlIC5fZml4IGNhbGwgaW4gYSB0ZW1wb3JhcnkgY29udGV4dCwgYW5kIHJlcmFpc2UKKyAgICAgICAgIyBhZnRlcndhcmRzLgorICAgICAgICBpZiBleGFjdCBhbmQgbm90IG90aGVyLl9pc2ludGVnZXIoKToKKyAgICAgICAgICAgICMgcGFkIHdpdGggemVyb3MgdXAgdG8gbGVuZ3RoIGNvbnRleHQucHJlYysxIGlmIG5lY2Vzc2FyeTsgdGhpcworICAgICAgICAgICAgIyBlbnN1cmVzIHRoYXQgdGhlIFJvdW5kZWQgc2lnbmFsIHdpbGwgYmUgcmFpc2VkLgorICAgICAgICAgICAgaWYgbGVuKGFucy5faW50KSA8PSBjb250ZXh0LnByZWM6CisgICAgICAgICAgICAgICAgZXhwZGlmZiA9IGNvbnRleHQucHJlYyArIDEgLSBsZW4oYW5zLl9pbnQpCisgICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShhbnMuX3NpZ24sIGFucy5faW50KycwJypleHBkaWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9leHAtZXhwZGlmZikKKworICAgICAgICAgICAgIyBjcmVhdGUgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQsIHdpdGggY2xlYXJlZCBmbGFncy90cmFwcworICAgICAgICAgICAgbmV3Y29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgICAgICBuZXdjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gX3NpZ25hbHM6CisgICAgICAgICAgICAgICAgbmV3Y29udGV4dC50cmFwc1tleGNlcHRpb25dID0gMAorCisgICAgICAgICAgICAjIHJvdW5kIGluIHRoZSBuZXcgY29udGV4dAorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgobmV3Y29udGV4dCkKKworICAgICAgICAgICAgIyByYWlzZSBJbmV4YWN0LCBhbmQgaWYgbmVjZXNzYXJ5LCBVbmRlcmZsb3cKKyAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW1N1Ym5vcm1hbF06CisgICAgICAgICAgICAgICAgbmV3Y29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQorCisgICAgICAgICAgICAjIHByb3BhZ2F0ZSBzaWduYWxzIHRvIHRoZSBvcmlnaW5hbCBjb250ZXh0OyBfZml4IGNvdWxkCisgICAgICAgICAgICAjIGhhdmUgcmFpc2VkIGFueSBvZiBPdmVyZmxvdywgVW5kZXJmbG93LCBTdWJub3JtYWwsCisgICAgICAgICAgICAjIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQuICBPdmVyZmxvdyBuZWVkcyB0aGUgY29ycmVjdAorICAgICAgICAgICAgIyBhcmd1bWVudHMuICBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBleGNlcHRpb25zIGlzCisgICAgICAgICAgICAjIGltcG9ydGFudCBoZXJlLgorICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tPdmVyZmxvd106CisgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4JywgYW5zLl9zaWduKQorICAgICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBVbmRlcmZsb3csIFN1Ym5vcm1hbCwgSW5leGFjdCwgUm91bmRlZCwgQ2xhbXBlZDoKKyAgICAgICAgICAgICAgICBpZiBuZXdjb250ZXh0LmZsYWdzW2V4Y2VwdGlvbl06CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGV4Y2VwdGlvbikKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgX19ycG93X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19wb3dfXy4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKKyAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gb3RoZXIKKyAgICAgICAgcmV0dXJuIG90aGVyLl9fcG93X18oc2VsZiwgY29udGV4dD1jb250ZXh0KQorCisgICAgZGVmIG5vcm1hbGl6ZShzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJOb3JtYWxpemUtIHN0cmlwIHRyYWlsaW5nIDBzLCBjaGFuZ2UgYW55dGhpbmcgZXF1YWwgdG8gMCB0byAwZTAiIiIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBkdXAgPSBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgaWYgZHVwLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gZHVwCisKKyAgICAgICAgaWYgbm90IGR1cDoKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKGR1cC5fc2lnbiwgJzAnLCAwKQorICAgICAgICBleHBfbWF4ID0gW2NvbnRleHQuRW1heCwgY29udGV4dC5FdG9wKCldW2NvbnRleHQuY2xhbXBdCisgICAgICAgIGVuZCA9IGxlbihkdXAuX2ludCkKKyAgICAgICAgZXhwID0gZHVwLl9leHAKKyAgICAgICAgd2hpbGUgZHVwLl9pbnRbZW5kLTFdID09ICcwJyBhbmQgZXhwIDwgZXhwX21heDoKKyAgICAgICAgICAgIGV4cCArPSAxCisgICAgICAgICAgICBlbmQgLT0gMQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sIGR1cC5faW50WzplbmRdLCBleHApCisKKyAgICBkZWYgcXVhbnRpemUoc2VsZiwgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJRdWFudGl6ZSBzZWxmIHNvIGl0cyBleHBvbmVudCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIGV4cC4KKworICAgICAgICBTaW1pbGFyIHRvIHNlbGYuX3Jlc2NhbGUoZXhwLl9leHApIGJ1dCB3aXRoIGVycm9yIGNoZWNraW5nLgorICAgICAgICAiIiIKKyAgICAgICAgZXhwID0gX2NvbnZlcnRfb3RoZXIoZXhwLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiByb3VuZGluZyBpcyBOb25lOgorICAgICAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCisKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBleHAuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGV4cCwgY29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgICAgIGlmIGV4cC5faXNpbmZpbml0eSgpIG9yIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKSAgIyBpZiBib3RoIGFyZSBpbmYsIGl0IGlzIE9LCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHdpdGggb25lIElORicpCisKKyAgICAgICAgIyBleHAuX2V4cCBzaG91bGQgYmUgYmV0d2VlbiBFdGlueSBhbmQgRW1heAorICAgICAgICBpZiBub3QgKGNvbnRleHQuRXRpbnkoKSA8PSBleHAuX2V4cCA8PSBjb250ZXh0LkVtYXgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgJ3RhcmdldCBleHBvbmVudCBvdXQgb2YgYm91bmRzIGluIHF1YW50aXplJykKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBleHAuX2V4cCkKKyAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgICAgIHNlbGZfYWRqdXN0ZWQgPSBzZWxmLmFkanVzdGVkKCkKKyAgICAgICAgaWYgc2VsZl9hZGp1c3RlZCA+IGNvbnRleHQuRW1heDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudCBvZiBxdWFudGl6ZSByZXN1bHQgdG9vIGxhcmdlIGZvciBjdXJyZW50IGNvbnRleHQnKQorICAgICAgICBpZiBzZWxmX2FkanVzdGVkIC0gZXhwLl9leHAgKyAxID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHJlc3VsdCBoYXMgdG9vIG1hbnkgZGlnaXRzIGZvciBjdXJyZW50IGNvbnRleHQnKQorCisgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLl9leHAsIHJvdW5kaW5nKQorICAgICAgICBpZiBhbnMuYWRqdXN0ZWQoKSA+IGNvbnRleHQuRW1heDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudCBvZiBxdWFudGl6ZSByZXN1bHQgdG9vIGxhcmdlIGZvciBjdXJyZW50IGNvbnRleHQnKQorICAgICAgICBpZiBsZW4oYW5zLl9pbnQpID4gY29udGV4dC5wcmVjOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1YW50aXplIHJlc3VsdCBoYXMgdG9vIG1hbnkgZGlnaXRzIGZvciBjdXJyZW50IGNvbnRleHQnKQorCisgICAgICAgICMgcmFpc2UgYXBwcm9wcmlhdGUgZmxhZ3MKKyAgICAgICAgaWYgYW5zIGFuZCBhbnMuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbjoKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKKyAgICAgICAgaWYgYW5zLl9leHAgPiBzZWxmLl9leHA6CisgICAgICAgICAgICBpZiBhbnMgIT0gc2VsZjoKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKKworICAgICAgICAjIGNhbGwgdG8gZml4IHRha2VzIGNhcmUgb2YgYW55IG5lY2Vzc2FyeSBmb2xkZG93biwgYW5kCisgICAgICAgICMgc2lnbmFscyBDbGFtcGVkIGlmIG5lY2Vzc2FyeQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgc2FtZV9xdWFudHVtKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50OyBvdGhlcndpc2UKKyAgICAgICAgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgc3BlY2lhbCB2YWx1ZSwgdGhlIGZvbGxvd2luZyBydWxlcyBhcmUgdXNlZDoKKyAgICAgICAgICAgKiByZXR1cm4gVHJ1ZSBpZiBib3RoIG9wZXJhbmRzIGFyZSBpbmZpbml0aWVzCisgICAgICAgICAgICogcmV0dXJuIFRydWUgaWYgYm90aCBvcGVyYW5kcyBhcmUgTmFOcworICAgICAgICAgICAqIG90aGVyd2lzZSwgcmV0dXJuIEZhbHNlLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLmlzX25hbigpIGFuZCBvdGhlci5pc19uYW4oKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLmlzX2luZmluaXRlKCkgYW5kIG90aGVyLmlzX2luZmluaXRlKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gb3RoZXIuX2V4cAorCisgICAgZGVmIF9yZXNjYWxlKHNlbGYsIGV4cCwgcm91bmRpbmcpOgorICAgICAgICAiIiJSZXNjYWxlIHNlbGYgc28gdGhhdCB0aGUgZXhwb25lbnQgaXMgZXhwLCBlaXRoZXIgYnkgcGFkZGluZyB3aXRoIHplcm9zCisgICAgICAgIG9yIGJ5IHRydW5jYXRpbmcgZGlnaXRzLCB1c2luZyB0aGUgZ2l2ZW4gcm91bmRpbmcgbW9kZS4KKworICAgICAgICBTcGVjaWFscyBhcmUgcmV0dXJuZWQgd2l0aG91dCBjaGFuZ2UuICBUaGlzIG9wZXJhdGlvbiBpcworICAgICAgICBxdWlldDogaXQgcmFpc2VzIG5vIGZsYWdzLCBhbmQgdXNlcyBubyBpbmZvcm1hdGlvbiBmcm9tIHRoZQorICAgICAgICBjb250ZXh0LgorCisgICAgICAgIGV4cCA9IGV4cCB0byBzY2FsZSB0byAoYW4gaW50ZWdlcikKKyAgICAgICAgcm91bmRpbmcgPSByb3VuZGluZyBtb2RlCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGV4cCkKKworICAgICAgICBpZiBzZWxmLl9leHAgPj0gZXhwOgorICAgICAgICAgICAgIyBwYWQgYW5zd2VyIHdpdGggemVyb3MgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gZXhwKSwgZXhwKQorCisgICAgICAgICMgdG9vIG1hbnkgZGlnaXRzOyByb3VuZCBhbmQgbG9zZSBkYXRhLiAgSWYgc2VsZi5hZGp1c3RlZCgpIDwKKyAgICAgICAgIyBleHAtMSwgcmVwbGFjZSBzZWxmIGJ5IDEwKiooZXhwLTEpIGJlZm9yZSByb3VuZGluZworICAgICAgICBkaWdpdHMgPSBsZW4oc2VsZi5faW50KSArIHNlbGYuX2V4cCAtIGV4cAorICAgICAgICBpZiBkaWdpdHMgPCAwOgorICAgICAgICAgICAgc2VsZiA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzEnLCBleHAtMSkKKyAgICAgICAgICAgIGRpZ2l0cyA9IDAKKyAgICAgICAgdGhpc19mdW5jdGlvbiA9IHNlbGYuX3BpY2tfcm91bmRpbmdfZnVuY3Rpb25bcm91bmRpbmddCisgICAgICAgIGNoYW5nZWQgPSB0aGlzX2Z1bmN0aW9uKHNlbGYsIGRpZ2l0cykKKyAgICAgICAgY29lZmYgPSBzZWxmLl9pbnRbOmRpZ2l0c10gb3IgJzAnCisgICAgICAgIGlmIGNoYW5nZWQgPT0gMToKKyAgICAgICAgICAgIGNvZWZmID0gc3RyKGludChjb2VmZikrMSkKKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgY29lZmYsIGV4cCkKKworICAgIGRlZiBfcm91bmQoc2VsZiwgcGxhY2VzLCByb3VuZGluZyk6CisgICAgICAgICIiIlJvdW5kIGEgbm9uemVybywgbm9uc3BlY2lhbCBEZWNpbWFsIHRvIGEgZml4ZWQgbnVtYmVyIG9mCisgICAgICAgIHNpZ25pZmljYW50IGZpZ3VyZXMsIHVzaW5nIHRoZSBnaXZlbiByb3VuZGluZyBtb2RlLgorCisgICAgICAgIEluZmluaXRpZXMsIE5hTnMgYW5kIHplcm9zIGFyZSByZXR1cm5lZCB1bmFsdGVyZWQuCisKKyAgICAgICAgVGhpcyBvcGVyYXRpb24gaXMgcXVpZXQ6IGl0IHJhaXNlcyBubyBmbGFncywgYW5kIHVzZXMgbm8KKyAgICAgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29udGV4dC4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgcGxhY2VzIDw9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhcmd1bWVudCBzaG91bGQgYmUgYXQgbGVhc3QgMSBpbiBfcm91bmQiKQorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShzZWxmLmFkanVzdGVkKCkrMS1wbGFjZXMsIHJvdW5kaW5nKQorICAgICAgICAjIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgcmVzY2FsZSBhbHRlcnMgdGhlIGFkanVzdGVkIGV4cG9uZW50OworICAgICAgICAjIGZvciBleGFtcGxlIHdoZW4gcm91bmRpbmcgOTkuOTcgdG8gMyBzaWduaWZpY2FudCBmaWd1cmVzLgorICAgICAgICAjIFdoZW4gdGhpcyBoYXBwZW5zIHdlIGVuZCB1cCB3aXRoIGFuIGV4dHJhIDAgYXQgdGhlIGVuZCBvZgorICAgICAgICAjIHRoZSBudW1iZXI7IGEgc2Vjb25kIHJlc2NhbGUgZml4ZXMgdGhpcy4KKyAgICAgICAgaWYgYW5zLmFkanVzdGVkKCkgIT0gc2VsZi5hZGp1c3RlZCgpOgorICAgICAgICAgICAgYW5zID0gYW5zLl9yZXNjYWxlKGFucy5hZGp1c3RlZCgpKzEtcGxhY2VzLCByb3VuZGluZykKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIHRvX2ludGVncmFsX2V4YWN0KHNlbGYsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJvdW5kcyB0byBhIG5lYXJieSBpbnRlZ2VyLgorCisgICAgICAgIElmIG5vIHJvdW5kaW5nIG1vZGUgaXMgc3BlY2lmaWVkLCB0YWtlIHRoZSByb3VuZGluZyBtb2RlIGZyb20KKyAgICAgICAgdGhlIGNvbnRleHQuICBUaGlzIG1ldGhvZCByYWlzZXMgdGhlIFJvdW5kZWQgYW5kIEluZXhhY3QgZmxhZ3MKKyAgICAgICAgd2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBTZWUgYWxzbzogdG9faW50ZWdyYWxfdmFsdWUsIHdoaWNoIGRvZXMgZXhhY3RseSB0aGUgc2FtZSBhcworICAgICAgICB0aGlzIG1ldGhvZCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IHJhaXNlIEluZXhhY3Qgb3IgUm91bmRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgICAgICByZXR1cm4gYW5zCisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCAwKQorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIHJvdW5kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKKyAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKKyAgICAgICAgaWYgYW5zICE9IHNlbGY6CisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQorICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgdG9faW50ZWdyYWxfdmFsdWUoc2VsZiwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUm91bmRzIHRvIHRoZSBuZWFyZXN0IGludGVnZXIsIHdpdGhvdXQgcmFpc2luZyBpbmV4YWN0LCByb3VuZGVkLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGlmIHJvdW5kaW5nIGlzIE5vbmU6CisgICAgICAgICAgICByb3VuZGluZyA9IGNvbnRleHQucm91bmRpbmcKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgICAgIHJldHVybiBhbnMKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQorCisgICAgIyB0aGUgbWV0aG9kIG5hbWUgY2hhbmdlZCwgYnV0IHdlIHByb3ZpZGUgYWxzbyB0aGUgb2xkIG9uZSwgZm9yIGNvbXBhdGliaWxpdHkKKyAgICB0b19pbnRlZ3JhbCA9IHRvX2ludGVncmFsX3ZhbHVlCisKKyAgICBkZWYgc3FydChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHNlbGYuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgYW5kIHNlbGYuX3NpZ24gPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgIyBleHBvbmVudCA9IHNlbGYuX2V4cCAvLyAyLiAgc3FydCgtMCkgPSAtMAorICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIHNlbGYuX2V4cCAvLyAyKQorICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzcXJ0KC14KSwgeCA+IDAnKQorCisgICAgICAgICMgQXQgdGhpcyBwb2ludCBzZWxmIHJlcHJlc2VudHMgYSBwb3NpdGl2ZSBudW1iZXIuICBMZXQgcCBiZQorICAgICAgICAjIHRoZSBkZXNpcmVkIHByZWNpc2lvbiBhbmQgZXhwcmVzcyBzZWxmIGluIHRoZSBmb3JtIGMqMTAwKiplCisgICAgICAgICMgd2l0aCBjIGEgcG9zaXRpdmUgcmVhbCBudW1iZXIgYW5kIGUgYW4gaW50ZWdlciwgYyBhbmQgZQorICAgICAgICAjIGJlaW5nIGNob3NlbiBzbyB0aGF0IDEwMCoqKHAtMSkgPD0gYyA8IDEwMCoqcC4gIFRoZW4gdGhlCisgICAgICAgICMgKGV4YWN0KSBzcXVhcmUgcm9vdCBvZiBzZWxmIGlzIHNxcnQoYykqMTAqKmUsIGFuZCAxMCoqKHAtMSkKKyAgICAgICAgIyA8PSBzcXJ0KGMpIDwgMTAqKnAsIHNvIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgRGVjaW1hbCBhdAorICAgICAgICAjIHByZWNpc2lvbiBwIGlzIG4qMTAqKmUgd2hlcmUgbiA9IHJvdW5kX2hhbGZfZXZlbihzcXJ0KGMpKSwKKyAgICAgICAgIyB0aGUgY2xvc2VzdCBpbnRlZ2VyIHRvIHNxcnQoYykgd2l0aCB0aGUgZXZlbiBpbnRlZ2VyIGNob3NlbgorICAgICAgICAjIGluIHRoZSBjYXNlIG9mIGEgdGllLgorICAgICAgICAjCisgICAgICAgICMgVG8gZW5zdXJlIGNvcnJlY3Qgcm91bmRpbmcgaW4gYWxsIGNhc2VzLCB3ZSB1c2UgdGhlCisgICAgICAgICMgZm9sbG93aW5nIHRyaWNrOiB3ZSBjb21wdXRlIHRoZSBzcXVhcmUgcm9vdCB0byBhbiBleHRyYQorICAgICAgICAjIHBsYWNlIChwcmVjaXNpb24gcCsxIGluc3RlYWQgb2YgcHJlY2lzaW9uIHApLCByb3VuZGluZyBkb3duLgorICAgICAgICAjIFRoZW4sIGlmIHRoZSByZXN1bHQgaXMgaW5leGFjdCBhbmQgaXRzIGxhc3QgZGlnaXQgaXMgMCBvciA1LAorICAgICAgICAjIHdlIGluY3JlYXNlIHRoZSBsYXN0IGRpZ2l0IHRvIDEgb3IgNiByZXNwZWN0aXZlbHk7IGlmIGl0J3MKKyAgICAgICAgIyBleGFjdCB3ZSBsZWF2ZSB0aGUgbGFzdCBkaWdpdCBhbG9uZS4gIE5vdyB0aGUgZmluYWwgcm91bmQgdG8KKyAgICAgICAgIyBwIHBsYWNlcyAob3IgZmV3ZXIgaW4gdGhlIGNhc2Ugb2YgdW5kZXJmbG93KSB3aWxsIHJvdW5kCisgICAgICAgICMgY29ycmVjdGx5IGFuZCByYWlzZSB0aGUgYXBwcm9wcmlhdGUgZmxhZ3MuCisKKyAgICAgICAgIyB1c2UgYW4gZXh0cmEgZGlnaXQgb2YgcHJlY2lzaW9uCisgICAgICAgIHByZWMgPSBjb250ZXh0LnByZWMrMQorCisgICAgICAgICMgd3JpdGUgYXJndW1lbnQgaW4gdGhlIGZvcm0gYyoxMDAqKmUgd2hlcmUgZSA9IHNlbGYuX2V4cC8vMgorICAgICAgICAjIGlzIHRoZSAnaWRlYWwnIGV4cG9uZW50LCB0byBiZSB1c2VkIGlmIHRoZSBzcXVhcmUgcm9vdCBpcworICAgICAgICAjIGV4YWN0bHkgcmVwcmVzZW50YWJsZS4gIGwgaXMgdGhlIG51bWJlciBvZiAnZGlnaXRzJyBvZiBjIGluCisgICAgICAgICMgYmFzZSAxMDAsIHNvIHRoYXQgMTAwKioobC0xKSA8PSBjIDwgMTAwKipsLgorICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIGUgPSBvcC5leHAgPj4gMQorICAgICAgICBpZiBvcC5leHAgJiAxOgorICAgICAgICAgICAgYyA9IG9wLmludCAqIDEwCisgICAgICAgICAgICBsID0gKGxlbihzZWxmLl9pbnQpID4+IDEpICsgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYyA9IG9wLmludAorICAgICAgICAgICAgbCA9IGxlbihzZWxmLl9pbnQpKzEgPj4gMQorCisgICAgICAgICMgcmVzY2FsZSBzbyB0aGF0IGMgaGFzIGV4YWN0bHkgcHJlYyBiYXNlIDEwMCAnZGlnaXRzJworICAgICAgICBzaGlmdCA9IHByZWMtbAorICAgICAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICAgICAgYyAqPSAxMDAqKnNoaWZ0CisgICAgICAgICAgICBleGFjdCA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGMsIHJlbWFpbmRlciA9IGRpdm1vZChjLCAxMDAqKi1zaGlmdCkKKyAgICAgICAgICAgIGV4YWN0ID0gbm90IHJlbWFpbmRlcgorICAgICAgICBlIC09IHNoaWZ0CisKKyAgICAgICAgIyBmaW5kIG4gPSBmbG9vcihzcXJ0KGMpKSB1c2luZyBOZXd0b24ncyBtZXRob2QKKyAgICAgICAgbiA9IDEwKipwcmVjCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBxID0gYy8vbgorICAgICAgICAgICAgaWYgbiA8PSBxOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG4gPSBuICsgcSA+PiAxCisgICAgICAgIGV4YWN0ID0gZXhhY3QgYW5kIG4qbiA9PSBjCisKKyAgICAgICAgaWYgZXhhY3Q6CisgICAgICAgICAgICAjIHJlc3VsdCBpcyBleGFjdDsgcmVzY2FsZSB0byB1c2UgaWRlYWwgZXhwb25lbnQgZQorICAgICAgICAgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgICAgICAgICAjIGFzc2VydCBuICUgMTAqKnNoaWZ0ID09IDAKKyAgICAgICAgICAgICAgICBuIC8vPSAxMCoqc2hpZnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbiAqPSAxMCoqLXNoaWZ0CisgICAgICAgICAgICBlICs9IHNoaWZ0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHJlc3VsdCBpcyBub3QgZXhhY3Q7IGZpeCBsYXN0IGRpZ2l0IGFzIGRlc2NyaWJlZCBhYm92ZQorICAgICAgICAgICAgaWYgbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKworICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cihuKSwgZSkKKworICAgICAgICAjIHJvdW5kLCBhbmQgZml0IHRvIGN1cnJlbnQgY29udGV4dAorICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgbWF4KHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXIgdmFsdWUuCisKKyAgICAgICAgTGlrZSBtYXgoc2VsZiwgb3RoZXIpIGV4Y2VwdCBpZiBvbmUgaXMgbm90IGEgbnVtYmVyLCByZXR1cm5zCisgICAgICAgIE5hTiAoYW5kIHNpZ25hbHMgaWYgb25lIGlzIHNOYU4pLiAgQWxzbyByb3VuZHMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQorICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCisgICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgICAgIGlmIHNuIG9yIG9uOgorICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorCisgICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCisgICAgICAgIGlmIGMgPT0gMDoKKyAgICAgICAgICAgICMgSWYgYm90aCBvcGVyYW5kcyBhcmUgZmluaXRlIGFuZCBlcXVhbCBpbiBudW1lcmljYWwgdmFsdWUKKyAgICAgICAgICAgICMgdGhlbiBhbiBvcmRlcmluZyBpcyBhcHBsaWVkOgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBJZiB0aGUgc2lnbnMgZGlmZmVyIHRoZW4gbWF4IHJldHVybnMgdGhlIG9wZXJhbmQgd2l0aCB0aGUKKyAgICAgICAgICAgICMgcG9zaXRpdmUgc2lnbiBhbmQgbWluIHJldHVybnMgdGhlIG9wZXJhbmQgd2l0aCB0aGUgbmVnYXRpdmUgc2lnbgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBJZiB0aGUgc2lnbnMgYXJlIHRoZSBzYW1lIHRoZW4gdGhlIGV4cG9uZW50IGlzIHVzZWQgdG8gc2VsZWN0CisgICAgICAgICAgICAjIHRoZSByZXN1bHQuICBUaGlzIGlzIGV4YWN0bHkgdGhlIG9yZGVyaW5nIHVzZWQgaW4gY29tcGFyZV90b3RhbC4KKyAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCisKKyAgICAgICAgaWYgYyA9PSAtMToKKyAgICAgICAgICAgIGFucyA9IG90aGVyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisKKyAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCisKKyAgICBkZWYgbWluKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVyIHZhbHVlLgorCisgICAgICAgIExpa2UgbWluKHNlbGYsIG90aGVyKSBleGNlcHQgaWYgb25lIGlzIG5vdCBhIG51bWJlciwgcmV0dXJucworICAgICAgICBOYU4gKGFuZCBzaWduYWxzIGlmIG9uZSBpcyBzTmFOKS4gIEFsc28gcm91bmRzLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKKyAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAorICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCisgICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgICAgICBpZiBzbiBvciBvbjoKKyAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKworICAgICAgICBjID0gc2VsZi5fY21wKG90aGVyKQorICAgICAgICBpZiBjID09IDA6CisgICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQorCisgICAgICAgIGlmIGMgPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBvdGhlcgorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIF9pc2ludGVnZXIoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciBzZWxmIGlzIGFuIGludGVnZXIiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJlc3QgPSBzZWxmLl9pbnRbc2VsZi5fZXhwOl0KKyAgICAgICAgcmV0dXJuIHJlc3QgPT0gJzAnKmxlbihyZXN0KQorCisgICAgZGVmIF9pc2V2ZW4oc2VsZik6CisgICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiBzZWxmIGlzIGV2ZW4uICBBc3N1bWVzIHNlbGYgaXMgYW4gaW50ZWdlci4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYgb3Igc2VsZi5fZXhwID4gMDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9pbnRbLTErc2VsZi5fZXhwXSBpbiAnMDI0NjgnCisKKyAgICBkZWYgYWRqdXN0ZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZiIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCisgICAgICAgICMgSWYgTmFOIG9yIEluZmluaXR5LCBzZWxmLl9leHAgaXMgc3RyaW5nCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIGNhbm9uaWNhbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KKworICAgICAgICBBcyB3ZSBkbyBub3QgaGF2ZSBkaWZmZXJlbnQgZW5jb2RpbmdzIGZvciB0aGUgc2FtZSBudW1iZXIsIHRoZQorICAgICAgICByZWNlaXZlZCBvYmplY3QgYWxyZWFkeSBpcyBpbiBpdHMgY2Fub25pY2FsIGZvcm0uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGNvbXBhcmVfc2lnbmFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIHRoZSBvdGhlciBvcGVyYW5kIG51bWVyaWNhbGx5LgorCisgICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCisgICAgICAgIE5hTnMgdGFraW5nIHByZWNlZGVuY2Ugb3ZlciBxdWlldCBOYU5zLgorICAgICAgICAiIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdCA9IFRydWUpCisgICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworICAgICAgICByZXR1cm4gc2VsZi5jb21wYXJlKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCisKKyAgICBkZWYgY29tcGFyZV90b3RhbChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byBvdGhlciB1c2luZyB0aGUgYWJzdHJhY3QgcmVwcmVzZW50YXRpb25zLgorCisgICAgICAgIFRoaXMgaXMgbm90IGxpa2UgdGhlIHN0YW5kYXJkIGNvbXBhcmUsIHdoaWNoIHVzZSB0aGVpciBudW1lcmljYWwKKyAgICAgICAgdmFsdWUuIE5vdGUgdGhhdCBhIHRvdGFsIG9yZGVyaW5nIGlzIGRlZmluZWQgZm9yIGFsbCBwb3NzaWJsZSBhYnN0cmFjdAorICAgICAgICByZXByZXNlbnRhdGlvbnMuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgIyBpZiBvbmUgaXMgbmVnYXRpdmUgYW5kIHRoZSBvdGhlciBpcyBwb3NpdGl2ZSwgaXQncyBlYXN5CisgICAgICAgIGlmIHNlbGYuX3NpZ24gYW5kIG5vdCBvdGhlci5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgaWYgbm90IHNlbGYuX3NpZ24gYW5kIG90aGVyLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KKworICAgICAgICAjIGxldCdzIGhhbmRsZSBib3RoIE5hTiB0eXBlcworICAgICAgICBzZWxmX25hbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgb3RoZXJfbmFuID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgaWYgc2VsZl9uYW4gb3Igb3RoZXJfbmFuOgorICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gb3RoZXJfbmFuOgorICAgICAgICAgICAgICAgICMgY29tcGFyZSBwYXlsb2FkcyBhcyB0aG91Z2ggdGhleSdyZSBpbnRlZ2VycworICAgICAgICAgICAgICAgIHNlbGZfa2V5ID0gbGVuKHNlbGYuX2ludCksIHNlbGYuX2ludAorICAgICAgICAgICAgICAgIG90aGVyX2tleSA9IGxlbihvdGhlci5faW50KSwgb3RoZXIuX2ludAorICAgICAgICAgICAgICAgIGlmIHNlbGZfa2V5IDwgb3RoZXJfa2V5OgorICAgICAgICAgICAgICAgICAgICBpZiBzaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmX2tleSA+IG90aGVyX2tleToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgcmV0dXJuIF9aZXJvCisKKyAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQorICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKyAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGZfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKKworICAgICAgICBpZiBzZWxmIDwgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgIGlmIHNlbGYgPiBvdGhlcjoKKyAgICAgICAgICAgIHJldHVybiBfT25lCisKKyAgICAgICAgaWYgc2VsZi5fZXhwIDwgb3RoZXIuX2V4cDoKKyAgICAgICAgICAgIGlmIHNpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQorICAgICAgICBpZiBzZWxmLl9leHAgPiBvdGhlci5fZXhwOgorICAgICAgICAgICAgaWYgc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBfT25lCisgICAgICAgIHJldHVybiBfWmVybworCisKKyAgICBkZWYgY29tcGFyZV90b3RhbF9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gb3RoZXIgdXNpbmcgYWJzdHJhY3QgcmVwci4sIGlnbm9yaW5nIHNpZ24uCisKKyAgICAgICAgTGlrZSBjb21wYXJlX3RvdGFsLCBidXQgd2l0aCBvcGVyYW5kJ3Mgc2lnbiBpZ25vcmVkIGFuZCBhc3N1bWVkIHRvIGJlIDAuCisgICAgICAgICIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgcyA9IHNlbGYuY29weV9hYnMoKQorICAgICAgICBvID0gb3RoZXIuY29weV9hYnMoKQorICAgICAgICByZXR1cm4gcy5jb21wYXJlX3RvdGFsKG8pCisKKyAgICBkZWYgY29weV9hYnMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBjb3B5IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuICIiIgorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKKworICAgIGRlZiBjb3B5X25lZ2F0ZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC4iIiIKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMSwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCisKKyAgICBkZWYgY29weV9zaWduKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHNlbGYgd2l0aCB0aGUgc2lnbiBvZiBvdGhlci4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShvdGhlci5fc2lnbiwgc2VsZi5faW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCisKKyAgICBkZWYgZXhwKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgZSAqKiBzZWxmLiIiIgorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICAjIGV4cChOYU4pID0gTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBleHAoLUluZmluaXR5KSA9IDAKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgorICAgICAgICAgICAgcmV0dXJuIF9aZXJvCisKKyAgICAgICAgIyBleHAoMCkgPSAxCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIF9PbmUKKworICAgICAgICAjIGV4cChJbmZpbml0eSkgPSBJbmZpbml0eQorICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyB0aGUgcmVzdWx0IGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIGluZXhhY3QgKHRoZSB0cnVlCisgICAgICAgICMgbWF0aGVtYXRpY2FsIHJlc3VsdCBpcyB0cmFuc2NlbmRlbnRhbCkuIFRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAgICAjIHJhaXNlIFJvdW5kZWQgYW5kIEluZXhhY3QgaGVyZS0tLXRoZXknbGwgYWx3YXlzIGJlIHJhaXNlZCBhcworICAgICAgICAjIGEgcmVzdWx0IG9mIHRoZSBjYWxsIHRvIF9maXguCisgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKyAgICAgICAgYWRqID0gc2VsZi5hZGp1c3RlZCgpCisKKyAgICAgICAgIyB3ZSBvbmx5IG5lZWQgdG8gZG8gYW55IGNvbXB1dGF0aW9uIGZvciBxdWl0ZSBhIHNtYWxsIHJhbmdlCisgICAgICAgICMgb2YgYWRqdXN0ZWQgZXhwb25lbnRzLS0tZm9yIGV4YW1wbGUsIC0yOSA8PSBhZGogPD0gMTAgZm9yCisgICAgICAgICMgdGhlIGRlZmF1bHQgY29udGV4dC4gIEZvciBzbWFsbGVyIGV4cG9uZW50IHRoZSByZXN1bHQgaXMKKyAgICAgICAgIyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIDEgYXQgdGhlIGdpdmVuIHByZWNpc2lvbiwgd2hpbGUgZm9yCisgICAgICAgICMgbGFyZ2VyIGV4cG9uZW50IHRoZSByZXN1bHQgZWl0aGVyIG92ZXJmbG93cyBvciB1bmRlcmZsb3dzLgorICAgICAgICBpZiBzZWxmLl9zaWduID09IDAgYW5kIGFkaiA+IGxlbihzdHIoKGNvbnRleHQuRW1heCsxKSozKSk6CisgICAgICAgICAgICAjIG92ZXJmbG93CisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgY29udGV4dC5FbWF4KzEpCisgICAgICAgIGVsaWYgc2VsZi5fc2lnbiA9PSAxIGFuZCBhZGogPiBsZW4oc3RyKCgtY29udGV4dC5FdGlueSgpKzEpKjMpKToKKyAgICAgICAgICAgICMgdW5kZXJmbG93IHRvIDAKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkV0aW55KCktMSkKKyAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDAgYW5kIGFkaiA8IC1wOgorICAgICAgICAgICAgIyBwKzEgZGlnaXRzOyBmaW5hbCByb3VuZCB3aWxsIHJhaXNlIGNvcnJlY3QgZmxhZ3MKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnICsgJzAnKihwLTEpICsgJzEnLCAtcCkKKyAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDEgYW5kIGFkaiA8IC1wLTE6CisgICAgICAgICAgICAjIHArMSBkaWdpdHM7IGZpbmFsIHJvdW5kIHdpbGwgcmFpc2UgY29ycmVjdCBmbGFncworICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnOScqKHArMSksIC1wLTEpCisgICAgICAgICMgZ2VuZXJhbCBjYXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgICAgIGlmIG9wLnNpZ24gPT0gMToKKyAgICAgICAgICAgICAgICBjID0gLWMKKworICAgICAgICAgICAgIyBjb21wdXRlIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogaW5jcmVhc2UgcHJlY2lzaW9uIGJ5CisgICAgICAgICAgICAjIDMgZGlnaXRzIGF0IGEgdGltZSB1bnRpbCB3ZSBnZXQgYW4gdW5hbWJpZ3VvdXNseQorICAgICAgICAgICAgIyByb3VuZGFibGUgcmVzdWx0CisgICAgICAgICAgICBleHRyYSA9IDMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY29lZmYsIGV4cCA9IF9kZXhwKGMsIGUsIHArZXh0cmEpCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoY29lZmYpKS1wLTEpKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleHRyYSArPSAzCisKKyAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyKGNvZWZmKSwgZXhwKQorCisgICAgICAgICMgYXQgdGhpcyBzdGFnZSwgYW5zIHNob3VsZCByb3VuZCBjb3JyZWN0bHkgd2l0aCAqYW55KgorICAgICAgICAjIHJvdW5kaW5nIG1vZGUsIG5vdCBqdXN0IHdpdGggUk9VTkRfSEFMRl9FVkVOCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworCisgICAgICAgIHJldHVybiBhbnMKKworICAgIGRlZiBpc19jYW5vbmljYWwoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgY2Fub25pY2FsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIGVuY29kaW5nIG9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMKKyAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBpc19maW5pdGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEEgRGVjaW1hbCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGZpbml0ZSBpZiBpdCBpcyBuZWl0aGVyCisgICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBub3Qgc2VsZi5faXNfc3BlY2lhbAorCisgICAgZGVmIGlzX2luZmluaXRlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGluZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09ICdGJworCisgICAgZGVmIGlzX25hbihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHFOYU4gb3Igc05hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCBpbiAoJ24nLCAnTicpCisKKyAgICBkZWYgaXNfbm9ybWFsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBub3JtYWwgbnVtYmVyOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuRW1pbiA8PSBzZWxmLmFkanVzdGVkKCkKKworICAgIGRlZiBpc19xbmFuKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgcXVpZXQgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09ICduJworCisgICAgZGVmIGlzX3NpZ25lZChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBuZWdhdGl2ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NpZ24gPT0gMQorCisgICAgZGVmIGlzX3NuYW4oc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBzaWduYWxpbmcgTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZXhwID09ICdOJworCisgICAgZGVmIGlzX3N1Ym5vcm1hbChzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIHN1Ym5vcm1hbDsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHJldHVybiBzZWxmLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW4KKworICAgIGRlZiBpc196ZXJvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4iIiIKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9pc19zcGVjaWFsIGFuZCBzZWxmLl9pbnQgPT0gJzAnCisKKyAgICBkZWYgX2xuX2V4cF9ib3VuZChzZWxmKToKKyAgICAgICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZi5sbigpLgorICAgICAgICBJbiBvdGhlciB3b3JkcywgY29tcHV0ZSByIHN1Y2ggdGhhdCBzZWxmLmxuKCkgPj0gMTAqKnIuICBBc3N1bWVzCisgICAgICAgIHRoYXQgc2VsZiBpcyBmaW5pdGUgYW5kIHBvc2l0aXZlIGFuZCB0aGF0IHNlbGYgIT0gMS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBmb3IgMC4xIDw9IHggPD0gMTAgd2UgdXNlIHRoZSBpbmVxdWFsaXRpZXMgMS0xL3ggPD0gbG4oeCkgPD0geC0xCisgICAgICAgIGFkaiA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQorICAgICAgICBpZiBhZGogPj0gMToKKyAgICAgICAgICAgICMgYXJndW1lbnQgPj0gMTA7IHdlIHVzZSAyMy8xMCA9IDIuMyBhcyBhIGxvd2VyIGJvdW5kIGZvciBsbigxMCkKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKGFkaioyMy8vMTApKSAtIDEKKyAgICAgICAgaWYgYWRqIDw9IC0yOgorICAgICAgICAgICAgIyBhcmd1bWVudCA8PSAwLjEKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKCgtMS1hZGopKjIzLy8xMCkpIC0gMQorICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAorICAgICAgICBpZiBhZGogPT0gMDoKKyAgICAgICAgICAgICMgMSA8IHNlbGYgPCAxMAorICAgICAgICAgICAgbnVtID0gc3RyKGMtMTAqKi1lKQorICAgICAgICAgICAgZGVuID0gc3RyKGMpCisgICAgICAgICAgICByZXR1cm4gbGVuKG51bSkgLSBsZW4oZGVuKSAtIChudW0gPCBkZW4pCisgICAgICAgICMgYWRqID09IC0xLCAwLjEgPD0gc2VsZiA8IDEKKyAgICAgICAgcmV0dXJuIGUgKyBsZW4oc3RyKDEwKiotZSAtIGMpKSAtIDEKKworCisgICAgZGVmIGxuKHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHNlbGYuIiIiCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgICMgbG4oTmFOKSA9IE5hTgorICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgICMgbG4oMC4wKSA9PSAtSW5maW5pdHkKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKKworICAgICAgICAjIGxuKEluZmluaXR5KSA9IEluZmluaXR5CisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQorCisgICAgICAgICMgbG4oMS4wKSA9PSAwLjAKKyAgICAgICAgaWYgc2VsZiA9PSBfT25lOgorICAgICAgICAgICAgcmV0dXJuIF9aZXJvCisKKyAgICAgICAgIyBsbihuZWdhdGl2ZSkgcmFpc2VzIEludmFsaWRPcGVyYXRpb24KKyAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xuIG9mIGEgbmVnYXRpdmUgdmFsdWUnKQorCisgICAgICAgICMgcmVzdWx0IGlzIGlycmF0aW9uYWwsIHNvIG5lY2Vzc2FyaWx5IGluZXhhY3QKKyAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQorICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgcCA9IGNvbnRleHQucHJlYworCisgICAgICAgICMgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiByZXBlYXRlZGx5IGluY3JlYXNlIHByZWNpc2lvbiBieSAzCisgICAgICAgICMgdW50aWwgd2UgZ2V0IGFuIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlIHJlc3VsdAorICAgICAgICBwbGFjZXMgPSBwIC0gc2VsZi5fbG5fZXhwX2JvdW5kKCkgKyAyICMgYXQgbGVhc3QgcCszIHBsYWNlcworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY29lZmYgPSBfZGxvZyhjLCBlLCBwbGFjZXMpCisgICAgICAgICAgICAjIGFzc2VydCBsZW4oc3RyKGFicyhjb2VmZikpKS1wID49IDEKKyAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGFicyhjb2VmZikpKS1wLTEpKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcGxhY2VzICs9IDMKKyAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShpbnQoY29lZmY8MCksIHN0cihhYnMoY29lZmYpKSwgLXBsYWNlcykKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5fc2hhbGxvd19jb3B5KCkKKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQorICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIF9sb2cxMF9leHBfYm91bmQoc2VsZik6CisgICAgICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYubG9nMTAoKS4KKyAgICAgICAgSW4gb3RoZXIgd29yZHMsIGZpbmQgciBzdWNoIHRoYXQgc2VsZi5sb2cxMCgpID49IDEwKipyLgorICAgICAgICBBc3N1bWVzIHRoYXQgc2VsZiBpcyBmaW5pdGUgYW5kIHBvc2l0aXZlIGFuZCB0aGF0IHNlbGYgIT0gMS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBGb3IgeCA+PSAxMCBvciB4IDwgMC4xIHdlIG9ubHkgbmVlZCBhIGJvdW5kIG9uIHRoZSBpbnRlZ2VyCisgICAgICAgICMgcGFydCBvZiBsb2cxMChzZWxmKSwgYW5kIHRoaXMgY29tZXMgZGlyZWN0bHkgZnJvbSB0aGUKKyAgICAgICAgIyBleHBvbmVudCBvZiB4LiAgRm9yIDAuMSA8PSB4IDw9IDEwIHdlIHVzZSB0aGUgaW5lcXVhbGl0aWVzCisgICAgICAgICMgMS0xL3ggPD0gbG9nKHgpIDw9IHgtMS4gSWYgeCA+IDEgd2UgaGF2ZSB8bG9nMTAoeCl8ID4KKyAgICAgICAgIyAoMS0xL3gpLzIuMzEgPiAwLiAgSWYgeCA8IDEgdGhlbiB8bG9nMTAoeCl8ID4gKDEteCkvMi4zMSA+IDAKKworICAgICAgICBhZGogPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKKyAgICAgICAgaWYgYWRqID49IDE6CisgICAgICAgICAgICAjIHNlbGYgPj0gMTAKKyAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKGFkaikpLTEKKyAgICAgICAgaWYgYWRqIDw9IC0yOgorICAgICAgICAgICAgIyBzZWxmIDwgMC4xCisgICAgICAgICAgICByZXR1cm4gbGVuKHN0cigtMS1hZGopKS0xCisgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKKyAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCisgICAgICAgIGlmIGFkaiA9PSAwOgorICAgICAgICAgICAgIyAxIDwgc2VsZiA8IDEwCisgICAgICAgICAgICBudW0gPSBzdHIoYy0xMCoqLWUpCisgICAgICAgICAgICBkZW4gPSBzdHIoMjMxKmMpCisgICAgICAgICAgICByZXR1cm4gbGVuKG51bSkgLSBsZW4oZGVuKSAtIChudW0gPCBkZW4pICsgMgorICAgICAgICAjIGFkaiA9PSAtMSwgMC4xIDw9IHNlbGYgPCAxCisgICAgICAgIG51bSA9IHN0cigxMCoqLWUtYykKKyAgICAgICAgcmV0dXJuIGxlbihudW0pICsgZSAtIChudW0gPCAiMjMxIikgLSAxCisKKyAgICBkZWYgbG9nMTAoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2Ygc2VsZi4iIiIKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBsb2cxMChOYU4pID0gTmFOCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgIyBsb2cxMCgwLjApID09IC1JbmZpbml0eQorICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQorCisgICAgICAgICMgbG9nMTAoSW5maW5pdHkpID0gSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gX0luZmluaXR5CisKKyAgICAgICAgIyBsb2cxMChuZWdhdGl2ZSBvciAtSW5maW5pdHkpIHJhaXNlcyBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb2cxMCBvZiBhIG5lZ2F0aXZlIHZhbHVlJykKKworICAgICAgICAjIGxvZzEwKDEwKipuKSA9IG4KKyAgICAgICAgaWYgc2VsZi5faW50WzBdID09ICcxJyBhbmQgc2VsZi5faW50WzE6XSA9PSAnMCcqKGxlbihzZWxmLl9pbnQpIC0gMSk6CisgICAgICAgICAgICAjIGFuc3dlciBtYXkgbmVlZCByb3VuZGluZworICAgICAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHJlc3VsdCBpcyBpcnJhdGlvbmFsLCBzbyBuZWNlc3NhcmlseSBpbmV4YWN0CisgICAgICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCisgICAgICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKKyAgICAgICAgICAgIHAgPSBjb250ZXh0LnByZWMKKworICAgICAgICAgICAgIyBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IHJlcGVhdGVkbHkgaW5jcmVhc2UgcHJlY2lzaW9uCisgICAgICAgICAgICAjIHVudGlsIHJlc3VsdCBpcyB1bmFtYmlndW91c2x5IHJvdW5kYWJsZQorICAgICAgICAgICAgcGxhY2VzID0gcC1zZWxmLl9sb2cxMF9leHBfYm91bmQoKSsyCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGNvZWZmID0gX2Rsb2cxMChjLCBlLCBwbGFjZXMpCisgICAgICAgICAgICAgICAgIyBhc3NlcnQgbGVuKHN0cihhYnMoY29lZmYpKSktcCA+PSAxCisgICAgICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoYWJzKGNvZWZmKSkpLXAtMSkpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHBsYWNlcyArPSAzCisgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGludChjb2VmZjwwKSwgc3RyKGFicyhjb2VmZikpLCAtcGxhY2VzKQorCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQorICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCisgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICByZXR1cm4gYW5zCisKKyAgICBkZWYgbG9nYihzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiIgUmV0dXJucyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiBzZWxmJ3MgTVNELgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGludGVnZXIgd2hpY2ggaXMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUKKyAgICAgICAgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2Ygc2VsZiAoYXMgdGhvdWdoIGl0IHdlcmUgdHJ1bmNhdGVkCisgICAgICAgIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZSB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZAorICAgICAgICB3aXRob3V0IGxpbWl0aW5nIHRoZSByZXN1bHRpbmcgZXhwb25lbnQpLgorICAgICAgICAiIiIKKyAgICAgICAgIyBsb2diKE5hTikgPSBOYU4KKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgIyBsb2diKCsvLUluZikgPSArSW5mCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKKworICAgICAgICAjIGxvZ2IoMCkgPSAtSW5mLCBEaXZpc2lvbkJ5WmVybworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ2xvZ2IoMCknLCAxKQorCisgICAgICAgICMgb3RoZXJ3aXNlLCBzaW1wbHkgcmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLCBhcyBhCisgICAgICAgICMgRGVjaW1hbC4gIE5vdGUgdGhhdCBubyBhdHRlbXB0IGlzIG1hZGUgdG8gZml0IHRoZSByZXN1bHQKKyAgICAgICAgIyBpbnRvIHRoZSBjdXJyZW50IGNvbnRleHQuCisgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZi5hZGp1c3RlZCgpKQorICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBfaXNsb2dpY2FsKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgbG9naWNhbCBvcGVyYW5kLgorCisgICAgICAgIEZvciBiZWluZyBsb2dpY2FsLCBpdCBtdXN0IGJlIGEgZmluaXRlIG51bWJlciB3aXRoIGEgc2lnbiBvZiAwLAorICAgICAgICBhbiBleHBvbmVudCBvZiAwLCBhbmQgYSBjb2VmZmljaWVudCB3aG9zZSBkaWdpdHMgbXVzdCBhbGwgYmUKKyAgICAgICAgZWl0aGVyIDAgb3IgMS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3NpZ24gIT0gMCBvciBzZWxmLl9leHAgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBmb3IgZGlnIGluIHNlbGYuX2ludDoKKyAgICAgICAgICAgIGlmIGRpZyBub3QgaW4gJzAxJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfZmlsbF9sb2dpY2FsKHNlbGYsIGNvbnRleHQsIG9wYSwgb3BiKToKKyAgICAgICAgZGlmID0gY29udGV4dC5wcmVjIC0gbGVuKG9wYSkKKyAgICAgICAgaWYgZGlmID4gMDoKKyAgICAgICAgICAgIG9wYSA9ICcwJypkaWYgKyBvcGEKKyAgICAgICAgZWxpZiBkaWYgPCAwOgorICAgICAgICAgICAgb3BhID0gb3BhWy1jb250ZXh0LnByZWM6XQorICAgICAgICBkaWYgPSBjb250ZXh0LnByZWMgLSBsZW4ob3BiKQorICAgICAgICBpZiBkaWYgPiAwOgorICAgICAgICAgICAgb3BiID0gJzAnKmRpZiArIG9wYgorICAgICAgICBlbGlmIGRpZiA8IDA6CisgICAgICAgICAgICBvcGIgPSBvcGJbLWNvbnRleHQucHJlYzpdCisgICAgICAgIHJldHVybiBvcGEsIG9wYgorCisgICAgZGVmIGxvZ2ljYWxfYW5kKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJBcHBsaWVzIGFuICdhbmQnIG9wZXJhdGlvbiBiZXR3ZWVuIHNlbGYgYW5kIG90aGVyJ3MgZGlnaXRzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9pc2xvZ2ljYWwoKSBvciBub3Qgb3RoZXIuX2lzbG9naWNhbCgpOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgIyBmaWxsIHRvIGNvbnRleHQucHJlYworICAgICAgICAob3BhLCBvcGIpID0gc2VsZi5fZmlsbF9sb2dpY2FsKGNvbnRleHQsIHNlbGYuX2ludCwgb3RoZXIuX2ludCkKKworICAgICAgICAjIG1ha2UgdGhlIG9wZXJhdGlvbiwgYW5kIGNsZWFuIHN0YXJ0aW5nIHplcm9lcworICAgICAgICByZXN1bHQgPSAiIi5qb2luKFtzdHIoaW50KGEpJmludChiKSkgZm9yIGEsYiBpbiB6aXAob3BhLG9wYildKQorICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCByZXN1bHQubHN0cmlwKCcwJykgb3IgJzAnLCAwKQorCisgICAgZGVmIGxvZ2ljYWxfaW52ZXJ0KHNlbGYsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkludmVydCBhbGwgaXRzIGRpZ2l0cy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICByZXR1cm4gc2VsZi5sb2dpY2FsX3hvcihfZGVjX2Zyb21fdHJpcGxlKDAsJzEnKmNvbnRleHQucHJlYywwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKworICAgIGRlZiBsb2dpY2FsX29yKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJBcHBsaWVzIGFuICdvcicgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCisgICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQorCisgICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCisgICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSl8aW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCisKKyAgICBkZWYgbG9naWNhbF94b3Ioc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIkFwcGxpZXMgYW4gJ3hvcicgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCisgICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQorCisgICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCisgICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSleaW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCisKKyAgICBkZWYgbWF4X21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4iIiIKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgIyBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWJlciwgdGhlbiB0aGUKKyAgICAgICAgICAgICMgbnVtYmVyIGlzIGFsd2F5cyByZXR1cm5lZAorICAgICAgICAgICAgc24gPSBzZWxmLl9pc25hbigpCisgICAgICAgICAgICBvbiA9IG90aGVyLl9pc25hbigpCisgICAgICAgICAgICBpZiBzbiBvciBvbjoKKyAgICAgICAgICAgICAgICBpZiBvbiA9PSAxIGFuZCBzbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4KGNvbnRleHQpCisgICAgICAgICAgICAgICAgaWYgc24gPT0gMSBhbmQgb24gPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKworICAgICAgICBjID0gc2VsZi5jb3B5X2FicygpLl9jbXAob3RoZXIuY29weV9hYnMoKSkKKyAgICAgICAgaWYgYyA9PSAwOgorICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKKworICAgICAgICBpZiBjID09IC0xOgorICAgICAgICAgICAgYW5zID0gb3RoZXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFucyA9IHNlbGYKKworICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKKworICAgIGRlZiBtaW5fbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLiIiIgorICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQorICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCisgICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKKyAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKKyAgICAgICAgICAgIGlmIHNuIG9yIG9uOgorICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorCisgICAgICAgIGMgPSBzZWxmLmNvcHlfYWJzKCkuX2NtcChvdGhlci5jb3B5X2FicygpKQorICAgICAgICBpZiBjID09IDA6CisgICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQorCisgICAgICAgIGlmIGMgPT0gLTE6CisgICAgICAgICAgICBhbnMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbnMgPSBvdGhlcgorCisgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQorCisgICAgZGVmIG5leHRfbWludXMoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBzbWFsbGVyIHRoYW4gaXRzZWxmLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6CisgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6CisgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCAnOScqY29udGV4dC5wcmVjLCBjb250ZXh0LkV0b3AoKSkKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0ZMT09SKQorICAgICAgICBjb250ZXh0Ll9pZ25vcmVfYWxsX2ZsYWdzKCkKKyAgICAgICAgbmV3X3NlbGYgPSBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgaWYgbmV3X3NlbGYgIT0gc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBuZXdfc2VsZgorICAgICAgICByZXR1cm4gc2VsZi5fX3N1Yl9fKF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkV0aW55KCktMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKworICAgIGRlZiBuZXh0X3BsdXMoc2VsZiwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4gaXRzZWxmLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IC0xOgorICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMSwgJzknKmNvbnRleHQucHJlYywgY29udGV4dC5FdG9wKCkpCisKKyAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCisgICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9DRUlMSU5HKQorICAgICAgICBjb250ZXh0Ll9pZ25vcmVfYWxsX2ZsYWdzKCkKKyAgICAgICAgbmV3X3NlbGYgPSBzZWxmLl9maXgoY29udGV4dCkKKyAgICAgICAgaWYgbmV3X3NlbGYgIT0gc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBuZXdfc2VsZgorICAgICAgICByZXR1cm4gc2VsZi5fX2FkZF9fKF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkV0aW55KCktMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKKworICAgIGRlZiBuZXh0X3Rvd2FyZChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gc2VsZiwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIG90aGVyLgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgdG8gc2VsZgorICAgICAgICAoZXhjbHVkaW5nIHNlbGYpIHRoYXQgaXMgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIG90aGVyLAorICAgICAgICB1bmxlc3MgYm90aCBoYXZlIHRoZSBzYW1lIHZhbHVlLiAgSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUKKyAgICAgICAgbnVtZXJpY2FsbHkgZXF1YWwsIHRoZW4gdGhlIHJlc3VsdCBpcyBhIGNvcHkgb2Ygc2VsZiB3aXRoIHRoZQorICAgICAgICBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiBvdGhlci4KKyAgICAgICAgIiIiCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGNvbXBhcmlzb24gPSBzZWxmLl9jbXAob3RoZXIpCisgICAgICAgIGlmIGNvbXBhcmlzb24gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcHlfc2lnbihvdGhlcikKKworICAgICAgICBpZiBjb21wYXJpc29uID09IC0xOgorICAgICAgICAgICAgYW5zID0gc2VsZi5uZXh0X3BsdXMoY29udGV4dCkKKyAgICAgICAgZWxzZTogIyBjb21wYXJpc29uID09IDEKKyAgICAgICAgICAgIGFucyA9IHNlbGYubmV4dF9taW51cyhjb250ZXh0KQorCisgICAgICAgICMgZGVjaWRlIHdoaWNoIGZsYWdzIHRvIHJhaXNlIHVzaW5nIHZhbHVlIG9mIGFucworICAgICAgICBpZiBhbnMuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luZmluaXRlIHJlc3VsdCBmcm9tIG5leHRfdG93YXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFucy5fc2lnbikKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCisgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQorICAgICAgICBlbGlmIGFucy5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluOgorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoVW5kZXJmbG93KQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCisgICAgICAgICAgICAjIGlmIHByZWNpc2lvbiA9PSAxIHRoZW4gd2UgZG9uJ3QgcmFpc2UgQ2xhbXBlZCBmb3IgYQorICAgICAgICAgICAgIyByZXN1bHQgMEUtRXRpbnkuCisgICAgICAgICAgICBpZiBub3QgYW5zOgorICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCisKKyAgICAgICAgcmV0dXJuIGFucworCisgICAgZGVmIG51bWJlcl9jbGFzcyhzZWxmLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHNlbGYuCisKKyAgICAgICAgVGhlIGNsYXNzIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CisgICAgICAgICAgc05hTgorICAgICAgICAgIE5hTgorICAgICAgICAgIC1JbmZpbml0eQorICAgICAgICAgIC1Ob3JtYWwKKyAgICAgICAgICAtU3Vibm9ybWFsCisgICAgICAgICAgLVplcm8KKyAgICAgICAgICArWmVybworICAgICAgICAgICtTdWJub3JtYWwKKyAgICAgICAgICArTm9ybWFsCisgICAgICAgICAgK0luZmluaXR5CisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmlzX3NuYW4oKToKKyAgICAgICAgICAgIHJldHVybiAic05hTiIKKyAgICAgICAgaWYgc2VsZi5pc19xbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gIk5hTiIKKyAgICAgICAgaW5mID0gc2VsZi5faXNpbmZpbml0eSgpCisgICAgICAgIGlmIGluZiA9PSAxOgorICAgICAgICAgICAgcmV0dXJuICIrSW5maW5pdHkiCisgICAgICAgIGlmIGluZiA9PSAtMToKKyAgICAgICAgICAgIHJldHVybiAiLUluZmluaXR5IgorICAgICAgICBpZiBzZWxmLmlzX3plcm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICAgICAgcmV0dXJuICItWmVybyIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICIrWmVybyIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBpZiBzZWxmLmlzX3N1Ym5vcm1hbChjb250ZXh0PWNvbnRleHQpOgorICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIi1TdWJub3JtYWwiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAiK1N1Ym5vcm1hbCIKKyAgICAgICAgIyBqdXN0IGEgbm9ybWFsLCByZWd1bGFyLCBib3JpbmcgbnVtYmVyLCA6KQorICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgcmV0dXJuICItTm9ybWFsIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICIrTm9ybWFsIgorCisgICAgZGVmIHJhZGl4KHNlbGYpOgorICAgICAgICAiIiJKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOikiIiIKKyAgICAgICAgcmV0dXJuIERlY2ltYWwoMTApCisKKyAgICBkZWYgcm90YXRlKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIGEgcm90YXRlZCBjb3B5IG9mIHNlbGYsIHZhbHVlLW9mLW90aGVyIHRpbWVzLiIiIgorICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCisKKyAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorCisgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCisgICAgICAgIGlmIGFuczoKKyAgICAgICAgICAgIHJldHVybiBhbnMKKworICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgaWYgbm90ICgtY29udGV4dC5wcmVjIDw9IGludChvdGhlcikgPD0gY29udGV4dC5wcmVjKToKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorCisgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKKyAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCisKKyAgICAgICAgIyBnZXQgdmFsdWVzLCBwYWQgaWYgbmVjZXNzYXJ5CisgICAgICAgIHRvcm90ID0gaW50KG90aGVyKQorICAgICAgICByb3RkaWcgPSBzZWxmLl9pbnQKKyAgICAgICAgdG9wYWQgPSBjb250ZXh0LnByZWMgLSBsZW4ocm90ZGlnKQorICAgICAgICBpZiB0b3BhZCA+IDA6CisgICAgICAgICAgICByb3RkaWcgPSAnMCcqdG9wYWQgKyByb3RkaWcKKyAgICAgICAgZWxpZiB0b3BhZCA8IDA6CisgICAgICAgICAgICByb3RkaWcgPSByb3RkaWdbLXRvcGFkOl0KKworICAgICAgICAjIGxldCdzIHJvdGF0ZSEKKyAgICAgICAgcm90YXRlZCA9IHJvdGRpZ1t0b3JvdDpdICsgcm90ZGlnWzp0b3JvdF0KKyAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlZC5sc3RyaXAoJzAnKSBvciAnMCcsIHNlbGYuX2V4cCkKKworICAgIGRlZiBzY2FsZWIoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgc2VsZiBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlIHRvIGl0cyBleHAuIiIiCisgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKworICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCisKKyAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKKyAgICAgICAgaWYgYW5zOgorICAgICAgICAgICAgcmV0dXJuIGFucworCisgICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICBsaW1pbmYgPSAtMiAqIChjb250ZXh0LkVtYXggKyBjb250ZXh0LnByZWMpCisgICAgICAgIGxpbXN1cCA9ICAyICogKGNvbnRleHQuRW1heCArIGNvbnRleHQucHJlYykKKyAgICAgICAgaWYgbm90IChsaW1pbmYgPD0gaW50KG90aGVyKSA8PSBsaW1zdXApOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisKKyAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgorICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKKworICAgICAgICBkID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCArIGludChvdGhlcikpCisgICAgICAgIGQgPSBkLl9maXgoY29udGV4dCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBzaGlmdChzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHNoaWZ0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy4iIiIKKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKKworICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQorICAgICAgICBpZiBhbnM6CisgICAgICAgICAgICByZXR1cm4gYW5zCisKKyAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCisgICAgICAgIGlmIG5vdCAoLWNvbnRleHQucHJlYyA8PSBpbnQob3RoZXIpIDw9IGNvbnRleHQucHJlYyk6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKKworICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQorCisgICAgICAgICMgZ2V0IHZhbHVlcywgcGFkIGlmIG5lY2Vzc2FyeQorICAgICAgICB0b3JvdCA9IGludChvdGhlcikKKyAgICAgICAgcm90ZGlnID0gc2VsZi5faW50CisgICAgICAgIHRvcGFkID0gY29udGV4dC5wcmVjIC0gbGVuKHJvdGRpZykKKyAgICAgICAgaWYgdG9wYWQgPiAwOgorICAgICAgICAgICAgcm90ZGlnID0gJzAnKnRvcGFkICsgcm90ZGlnCisgICAgICAgIGVsaWYgdG9wYWQgPCAwOgorICAgICAgICAgICAgcm90ZGlnID0gcm90ZGlnWy10b3BhZDpdCisKKyAgICAgICAgIyBsZXQncyBzaGlmdCEKKyAgICAgICAgaWYgdG9yb3QgPCAwOgorICAgICAgICAgICAgc2hpZnRlZCA9IHJvdGRpZ1s6dG9yb3RdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaGlmdGVkID0gcm90ZGlnICsgJzAnKnRvcm90CisgICAgICAgICAgICBzaGlmdGVkID0gc2hpZnRlZFstY29udGV4dC5wcmVjOl0KKworICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRlZC5sc3RyaXAoJzAnKSBvciAnMCcsIHNlbGYuX2V4cCkKKworICAgICMgU3VwcG9ydCBmb3IgcGlja2xpbmcsIGNvcHksIGFuZCBkZWVwY29weQorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCAoc3RyKHNlbGYpLCkpCisKKyAgICBkZWYgX19jb3B5X18oc2VsZik6CisgICAgICAgIGlmIHR5cGUoc2VsZikgaXMgRGVjaW1hbDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmICAgICAjIEknbSBpbW11dGFibGU7IHRoZXJlZm9yZSBJIGFtIG15IG93biBjbG9uZQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc3RyKHNlbGYpKQorCisgICAgZGVmIF9fZGVlcGNvcHlfXyhzZWxmLCBtZW1vKToKKyAgICAgICAgaWYgdHlwZShzZWxmKSBpcyBEZWNpbWFsOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYgICAgICMgTXkgY29tcG9uZW50cyBhcmUgYWxzbyBpbW11dGFibGUKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHN0cihzZWxmKSkKKworICAgICMgUEVQIDMxMDEgc3VwcG9ydC4gIHRoZSBfbG9jYWxlY29udiBrZXl3b3JkIGFyZ3VtZW50IHNob3VsZCBiZQorICAgICMgY29uc2lkZXJlZCBwcml2YXRlOiBpdCdzIHByb3ZpZGVkIGZvciBlYXNlIG9mIHRlc3Rpbmcgb25seS4KKyAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjaWZpZXIsIGNvbnRleHQ9Tm9uZSwgX2xvY2FsZWNvbnY9Tm9uZSk6CisgICAgICAgICIiIkZvcm1hdCBhIERlY2ltYWwgaW5zdGFuY2UgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBzcGVjaWZpZXIuCisKKyAgICAgICAgVGhlIHNwZWNpZmllciBzaG91bGQgYmUgYSBzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyLCB3aXRoIHRoZQorICAgICAgICBmb3JtIGRlc2NyaWJlZCBpbiBQRVAgMzEwMS4gIEZvcm1hdHRpbmcgdHlwZXMgJ2UnLCAnRScsICdmJywKKyAgICAgICAgJ0YnLCAnZycsICdHJywgJ24nIGFuZCAnJScgYXJlIHN1cHBvcnRlZC4gIElmIHRoZSBmb3JtYXR0aW5nCisgICAgICAgIHR5cGUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0byAnZycgb3IgJ0cnLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgIHZhbHVlIG9mIGNvbnRleHQuY2FwaXRhbHMuCisgICAgICAgICIiIgorCisgICAgICAgICMgTm90ZTogUEVQIDMxMDEgc2F5cyB0aGF0IGlmIHRoZSB0eXBlIGlzIG5vdCBwcmVzZW50IHRoZW4KKyAgICAgICAgIyB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LgorICAgICAgICAjIFdlIHRha2UgdGhlIGxpYmVydHkgb2YgaWdub3JpbmcgdGhpcyByZXF1aXJlbWVudCBmb3IKKyAgICAgICAgIyBEZWNpbWFsLS0taXQncyBwcmVzdW1hYmx5IHRoZXJlIHRvIG1ha2Ugc3VyZSB0aGF0CisgICAgICAgICMgZm9ybWF0KGZsb2F0LCAnJykgYmVoYXZlcyBzaW1pbGFybHkgdG8gc3RyKGZsb2F0KS4KKyAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgorICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorCisgICAgICAgIHNwZWMgPSBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcihzcGVjaWZpZXIsIF9sb2NhbGVjb252PV9sb2NhbGVjb252KQorCisgICAgICAgICMgc3BlY2lhbCB2YWx1ZXMgZG9uJ3QgY2FyZSBhYm91dCB0aGUgdHlwZSBvciBwcmVjaXNpb24KKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIHNpZ24gPSBfZm9ybWF0X3NpZ24oc2VsZi5fc2lnbiwgc3BlYykKKyAgICAgICAgICAgIGJvZHkgPSBzdHIoc2VsZi5jb3B5X2FicygpKQorICAgICAgICAgICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKKyAgICAgICAgICAgICAgICBib2R5ICs9ICclJworICAgICAgICAgICAgcmV0dXJuIF9mb3JtYXRfYWxpZ24oc2lnbiwgYm9keSwgc3BlYykKKworICAgICAgICAjIGEgdHlwZSBvZiBOb25lIGRlZmF1bHRzIHRvICdnJyBvciAnRycsIGRlcGVuZGluZyBvbiBjb250ZXh0CisgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpcyBOb25lOgorICAgICAgICAgICAgc3BlY1sndHlwZSddID0gWydnJywgJ0cnXVtjb250ZXh0LmNhcGl0YWxzXQorCisgICAgICAgICMgaWYgdHlwZSBpcyAnJScsIGFkanVzdCBleHBvbmVudCBvZiBzZWxmIGFjY29yZGluZ2x5CisgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6CisgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCsyKQorCisgICAgICAgICMgcm91bmQgaWYgbmVjZXNzYXJ5LCB0YWtpbmcgcm91bmRpbmcgbW9kZSBmcm9tIHRoZSBjb250ZXh0CisgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZworICAgICAgICBwcmVjaXNpb24gPSBzcGVjWydwcmVjaXNpb24nXQorICAgICAgICBpZiBwcmVjaXNpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKKyAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcm91bmQocHJlY2lzaW9uKzEsIHJvdW5kaW5nKQorICAgICAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6CisgICAgICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3Jlc2NhbGUoLXByZWNpc2lvbiwgcm91bmRpbmcpCisgICAgICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZ0cnIGFuZCBsZW4oc2VsZi5faW50KSA+IHByZWNpc2lvbjoKKyAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcm91bmQocHJlY2lzaW9uLCByb3VuZGluZykKKyAgICAgICAgIyBzcGVjaWFsIGNhc2U6IHplcm9zIHdpdGggYSBwb3NpdGl2ZSBleHBvbmVudCBjYW4ndCBiZQorICAgICAgICAjIHJlcHJlc2VudGVkIGluIGZpeGVkIHBvaW50OyByZXNjYWxlIHRoZW0gdG8gMGUwLgorICAgICAgICBpZiBub3Qgc2VsZiBhbmQgc2VsZi5fZXhwID4gMCBhbmQgc3BlY1sndHlwZSddIGluICdmRiUnOgorICAgICAgICAgICAgc2VsZiA9IHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCisKKyAgICAgICAgIyBmaWd1cmUgb3V0IHBsYWNlbWVudCBvZiB0aGUgZGVjaW1hbCBwb2ludAorICAgICAgICBsZWZ0ZGlnaXRzID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkKKyAgICAgICAgaWYgc3BlY1sndHlwZSddIGluICdlRSc6CisgICAgICAgICAgICBpZiBub3Qgc2VsZiBhbmQgcHJlY2lzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMSAtIHByZWNpc2lvbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IDEKKyAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6CisgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKKyAgICAgICAgZWxpZiBzcGVjWyd0eXBlJ10gaW4gJ2dHJzoKKyAgICAgICAgICAgIGlmIHNlbGYuX2V4cCA8PSAwIGFuZCBsZWZ0ZGlnaXRzID4gLTY6CisgICAgICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMQorCisgICAgICAgICMgZmluZCBkaWdpdHMgYmVmb3JlIGFuZCBhZnRlciBkZWNpbWFsIHBvaW50LCBhbmQgZ2V0IGV4cG9uZW50CisgICAgICAgIGlmIGRvdHBsYWNlIDwgMDoKKyAgICAgICAgICAgIGludHBhcnQgPSAnMCcKKyAgICAgICAgICAgIGZyYWNwYXJ0ID0gJzAnKigtZG90cGxhY2UpICsgc2VsZi5faW50CisgICAgICAgIGVsaWYgZG90cGxhY2UgPiBsZW4oc2VsZi5faW50KToKKyAgICAgICAgICAgIGludHBhcnQgPSBzZWxmLl9pbnQgKyAnMCcqKGRvdHBsYWNlLWxlbihzZWxmLl9pbnQpKQorICAgICAgICAgICAgZnJhY3BhcnQgPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludFs6ZG90cGxhY2VdIG9yICcwJworICAgICAgICAgICAgZnJhY3BhcnQgPSBzZWxmLl9pbnRbZG90cGxhY2U6XQorICAgICAgICBleHAgPSBsZWZ0ZGlnaXRzLWRvdHBsYWNlCisKKyAgICAgICAgIyBkb25lIHdpdGggdGhlIGRlY2ltYWwtc3BlY2lmaWMgc3R1ZmY7ICBoYW5kIG92ZXIgdGhlIHJlc3QKKyAgICAgICAgIyBvZiB0aGUgZm9ybWF0dGluZyB0byB0aGUgX2Zvcm1hdF9udW1iZXIgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuIF9mb3JtYXRfbnVtYmVyKHNlbGYuX3NpZ24sIGludHBhcnQsIGZyYWNwYXJ0LCBleHAsIHNwZWMpCisKK2RlZiBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIGNvZWZmaWNpZW50LCBleHBvbmVudCwgc3BlY2lhbD1GYWxzZSk6CisgICAgIiIiQ3JlYXRlIGEgZGVjaW1hbCBpbnN0YW5jZSBkaXJlY3RseSwgd2l0aG91dCBhbnkgdmFsaWRhdGlvbiwKKyAgICBub3JtYWxpemF0aW9uIChlLmcuIHJlbW92YWwgb2YgbGVhZGluZyB6ZXJvcykgb3IgYXJndW1lbnQKKyAgICBjb252ZXJzaW9uLgorCisgICAgVGhpcyBmdW5jdGlvbiBpcyBmb3IgKmludGVybmFsIHVzZSBvbmx5Ki4KKyAgICAiIiIKKworICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhEZWNpbWFsKQorICAgIHNlbGYuX3NpZ24gPSBzaWduCisgICAgc2VsZi5faW50ID0gY29lZmZpY2llbnQKKyAgICBzZWxmLl9leHAgPSBleHBvbmVudAorICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBzcGVjaWFsCisKKyAgICByZXR1cm4gc2VsZgorCisjIFJlZ2lzdGVyIERlY2ltYWwgYXMgYSBraW5kIG9mIE51bWJlciAoYW4gYWJzdHJhY3QgYmFzZSBjbGFzcykuCisjIEhvd2V2ZXIsIGRvIG5vdCByZWdpc3RlciBpdCBhcyBSZWFsIChiZWNhdXNlIERlY2ltYWxzIGFyZSBub3QKKyMgaW50ZXJvcGVyYWJsZSB3aXRoIGZsb2F0cykuCitfbnVtYmVycy5OdW1iZXIucmVnaXN0ZXIoRGVjaW1hbCkKKworCisjIyMjIyBDb250ZXh0IGNsYXNzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgX0NvbnRleHRNYW5hZ2VyKG9iamVjdCk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIGNsYXNzIHRvIHN1cHBvcnQgbG9jYWxjb250ZXh0KCkuCisKKyAgICAgIFNldHMgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIF9fZW50ZXJfXygpIGFuZCByZXN0b3JlcworICAgICAgdGhlIHByZXZpb3VzIGRlY2ltYWwgY29udGV4dCBpbiBfX2V4aXRfXygpCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld19jb250ZXh0KToKKyAgICAgICAgc2VsZi5uZXdfY29udGV4dCA9IG5ld19jb250ZXh0LmNvcHkoKQorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuc2F2ZWRfY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZXRjb250ZXh0KHNlbGYubmV3X2NvbnRleHQpCisgICAgICAgIHJldHVybiBzZWxmLm5ld19jb250ZXh0CisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKKyAgICAgICAgc2V0Y29udGV4dChzZWxmLnNhdmVkX2NvbnRleHQpCisKK2NsYXNzIENvbnRleHQob2JqZWN0KToKKyAgICAiIiJDb250YWlucyB0aGUgY29udGV4dCBmb3IgYSBEZWNpbWFsIGluc3RhbmNlLgorCisgICAgQ29udGFpbnM6CisgICAgcHJlYyAtIHByZWNpc2lvbiAoZm9yIHVzZSBpbiByb3VuZGluZywgZGl2aXNpb24sIHNxdWFyZSByb290cy4uKQorICAgIHJvdW5kaW5nIC0gcm91bmRpbmcgdHlwZSAoaG93IHlvdSByb3VuZCkKKyAgICB0cmFwcyAtIElmIHRyYXBzW2V4Y2VwdGlvbl0gPSAxLCB0aGVuIHRoZSBleGNlcHRpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgcmFpc2VkIHdoZW4gaXQgaXMgY2F1c2VkLiAgT3RoZXJ3aXNlLCBhIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGluLgorICAgIGZsYWdzICAtIFdoZW4gYW4gZXhjZXB0aW9uIGlzIGNhdXNlZCwgZmxhZ3NbZXhjZXB0aW9uXSBpcyBzZXQuCisgICAgICAgICAgICAgKFdoZXRoZXIgb3Igbm90IHRoZSB0cmFwX2VuYWJsZXIgaXMgc2V0KQorICAgICAgICAgICAgIFNob3VsZCBiZSByZXNldCBieSB1c2VyIG9mIERlY2ltYWwgaW5zdGFuY2UuCisgICAgRW1pbiAtICAgTWluaW11bSBleHBvbmVudAorICAgIEVtYXggLSAgIE1heGltdW0gZXhwb25lbnQKKyAgICBjYXBpdGFscyAtICAgICAgSWYgMSwgMSoxMF4xIGlzIHByaW50ZWQgYXMgMUUrMS4KKyAgICAgICAgICAgICAgICAgICAgSWYgMCwgcHJpbnRlZCBhcyAxZTEKKyAgICBjbGFtcCAtICBJZiAxLCBjaGFuZ2UgZXhwb25lbnRzIGlmIHRvbyBoaWdoIChEZWZhdWx0IDApCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLCBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwgdHJhcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CisgICAgICAgICMgU2V0IGRlZmF1bHRzOyBmb3IgZXZlcnl0aGluZyBleGNlcHQgZmxhZ3MgYW5kIF9pZ25vcmVkX2ZsYWdzLAorICAgICAgICAjIGluaGVyaXQgZnJvbSBEZWZhdWx0Q29udGV4dC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGMgPSBEZWZhdWx0Q29udGV4dAorICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYucHJlYyA9IHByZWMgaWYgcHJlYyBpcyBub3QgTm9uZSBlbHNlIGRjLnByZWMKKyAgICAgICAgc2VsZi5yb3VuZGluZyA9IHJvdW5kaW5nIGlmIHJvdW5kaW5nIGlzIG5vdCBOb25lIGVsc2UgZGMucm91bmRpbmcKKyAgICAgICAgc2VsZi5FbWluID0gRW1pbiBpZiBFbWluIGlzIG5vdCBOb25lIGVsc2UgZGMuRW1pbgorICAgICAgICBzZWxmLkVtYXggPSBFbWF4IGlmIEVtYXggaXMgbm90IE5vbmUgZWxzZSBkYy5FbWF4CisgICAgICAgIHNlbGYuY2FwaXRhbHMgPSBjYXBpdGFscyBpZiBjYXBpdGFscyBpcyBub3QgTm9uZSBlbHNlIGRjLmNhcGl0YWxzCisgICAgICAgIHNlbGYuY2xhbXAgPSBjbGFtcCBpZiBjbGFtcCBpcyBub3QgTm9uZSBlbHNlIGRjLmNsYW1wCisKKyAgICAgICAgaWYgX2lnbm9yZWRfZmxhZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IF9pZ25vcmVkX2ZsYWdzCisKKyAgICAgICAgaWYgdHJhcHMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkYy50cmFwcy5jb3B5KCkKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh0cmFwcywgZGljdCk6CisgICAgICAgICAgICBzZWxmLnRyYXBzID0gZGljdCgocywgaW50KHMgaW4gdHJhcHMpKSBmb3IgcyBpbiBfc2lnbmFscyArIHRyYXBzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50cmFwcyA9IHRyYXBzCisKKyAgICAgICAgaWYgZmxhZ3MgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0LmZyb21rZXlzKF9zaWduYWxzLCAwKQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGZsYWdzLCBkaWN0KToKKyAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBkaWN0KChzLCBpbnQocyBpbiBmbGFncykpIGZvciBzIGluIF9zaWduYWxzICsgZmxhZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZsYWdzID0gZmxhZ3MKKworICAgIGRlZiBfc2V0X2ludGVnZXJfY2hlY2soc2VsZiwgbmFtZSwgdmFsdWUsIHZtaW4sIHZtYXgpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhbiBpbnRlZ2VyIiAlIG5hbWUpCisgICAgICAgIGlmIHZtaW4gPT0gJy1pbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVzLCAlZF0uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxpZiB2bWF4ID09ICdpbmYnOgorICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlc10uIGdvdDogJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbiBvciB2YWx1ZSA+IHZtYXg6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVkXS4gZ290ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisKKyAgICBkZWYgX3NldF9zaWduYWxfZGljdChzZWxmLCBuYW1lLCBkKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZCwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYSBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIGQ6CisgICAgICAgICAgICBpZiBub3Qga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICBmb3Iga2V5IGluIF9zaWduYWxzOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBkOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKCIlcyBpcyBub3QgYSB2YWxpZCBzaWduYWwgZGljdCIgJSBkKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIGQpCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBpZiBuYW1lID09ICdwcmVjJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMSwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1pbic6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsICctaW5mJywgMCkKKyAgICAgICAgZWxpZiBuYW1lID09ICdFbWF4JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgJ2luZicpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnY2FwaXRhbHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NsYW1wJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdyb3VuZGluZyc6CisgICAgICAgICAgICBpZiBub3QgdmFsdWUgaW4gX3JvdW5kaW5nX21vZGVzOgorICAgICAgICAgICAgICAgICMgcmFpc2UgVHlwZUVycm9yIGV2ZW4gZm9yIHN0cmluZ3MgdG8gaGF2ZSBjb25zaXN0ZW5jeQorICAgICAgICAgICAgICAgICMgYW1vbmcgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlczogaW52YWxpZCByb3VuZGluZyBtb2RlIiAlIHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdmbGFncycgb3IgbmFtZSA9PSAndHJhcHMnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9zaWduYWxfZGljdChuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdfaWdub3JlZF9mbGFncyc6CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCisgICAgICAgICAgICAgICAgIidkZWNpbWFsLkNvbnRleHQnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclcyciICUgbmFtZSkKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGNhbm5vdCBiZSBkZWxldGVkIiAlIG5hbWUpCisKKyAgICAjIFN1cHBvcnQgZm9yIHBpY2tsaW5nLCBjb3B5LCBhbmQgZGVlcGNvcHkKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgZmxhZ3MgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHRyYXBzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYudHJhcHMuaXRlbXMoKSBpZiB2XQorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLAorICAgICAgICAgICAgICAgIChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAorICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBmbGFncywgdHJhcHMpKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAiIiJTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuIiIiCisgICAgICAgIHMgPSBbXQorICAgICAgICBzLmFwcGVuZCgnQ29udGV4dChwcmVjPSUocHJlYylkLCByb3VuZGluZz0lKHJvdW5kaW5nKXMsICcKKyAgICAgICAgICAgICAgICAgJ0VtaW49JShFbWluKWQsIEVtYXg9JShFbWF4KWQsIGNhcGl0YWxzPSUoY2FwaXRhbHMpZCwgJworICAgICAgICAgICAgICAgICAnY2xhbXA9JShjbGFtcClkJworICAgICAgICAgICAgICAgICAlIHZhcnMoc2VsZikpCisgICAgICAgIG5hbWVzID0gW2YuX19uYW1lX18gZm9yIGYsIHYgaW4gc2VsZi5mbGFncy5pdGVtcygpIGlmIHZdCisgICAgICAgIHMuYXBwZW5kKCdmbGFncz1bJyArICcsICcuam9pbihuYW1lcykgKyAnXScpCisgICAgICAgIG5hbWVzID0gW3QuX19uYW1lX18gZm9yIHQsIHYgaW4gc2VsZi50cmFwcy5pdGVtcygpIGlmIHZdCisgICAgICAgIHMuYXBwZW5kKCd0cmFwcz1bJyArICcsICcuam9pbihuYW1lcykgKyAnXScpCisgICAgICAgIHJldHVybiAnLCAnLmpvaW4ocykgKyAnKScKKworICAgIGRlZiBjbGVhcl9mbGFncyhzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgYWxsIGZsYWdzIHRvIHplcm8iIiIKKyAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi5mbGFnczoKKyAgICAgICAgICAgIHNlbGYuZmxhZ3NbZmxhZ10gPSAwCisKKyAgICBkZWYgY2xlYXJfdHJhcHMoc2VsZik6CisgICAgICAgICIiIlJlc2V0IGFsbCB0cmFwcyB0byB6ZXJvIiIiCisgICAgICAgIGZvciBmbGFnIGluIHNlbGYudHJhcHM6CisgICAgICAgICAgICBzZWxmLnRyYXBzW2ZsYWddID0gMAorCisgICAgZGVmIF9zaGFsbG93X2NvcHkoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBzaGFsbG93IGNvcHkgZnJvbSBzZWxmLiIiIgorICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuZmxhZ3MsIHNlbGYudHJhcHMsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQorICAgICAgICByZXR1cm4gbmMKKworICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgZGVlcCBjb3B5IGZyb20gc2VsZi4iIiIKKyAgICAgICAgbmMgPSBDb250ZXh0KHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFncy5jb3B5KCksIHNlbGYudHJhcHMuY29weSgpLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncykKKyAgICAgICAgcmV0dXJuIG5jCisgICAgX19jb3B5X18gPSBjb3B5CisKKyAgICBkZWYgX3JhaXNlX2Vycm9yKHNlbGYsIGNvbmRpdGlvbiwgZXhwbGFuYXRpb24gPSBOb25lLCAqYXJncyk6CisgICAgICAgICIiIkhhbmRsZXMgYW4gZXJyb3IKKworICAgICAgICBJZiB0aGUgZmxhZyBpcyBpbiBfaWdub3JlZF9mbGFncywgcmV0dXJucyB0aGUgZGVmYXVsdCByZXNwb25zZS4KKyAgICAgICAgT3RoZXJ3aXNlLCBpdCBzZXRzIHRoZSBmbGFnLCB0aGVuLCBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICB0cmFwX2VuYWJsZXIgaXMgc2V0LCBpdCByZXJhaXNlcyB0aGUgZXhjZXB0aW9uLiAgT3RoZXJ3aXNlLCBpdCByZXR1cm5zCisgICAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIGFmdGVyIHNldHRpbmcgdGhlIGZsYWcuCisgICAgICAgICIiIgorICAgICAgICBlcnJvciA9IF9jb25kaXRpb25fbWFwLmdldChjb25kaXRpb24sIGNvbmRpdGlvbikKKyAgICAgICAgaWYgZXJyb3IgaW4gc2VsZi5faWdub3JlZF9mbGFnczoKKyAgICAgICAgICAgICMgRG9uJ3QgdG91Y2ggdGhlIGZsYWcKKyAgICAgICAgICAgIHJldHVybiBlcnJvcigpLmhhbmRsZShzZWxmLCAqYXJncykKKworICAgICAgICBzZWxmLmZsYWdzW2Vycm9yXSA9IDEKKyAgICAgICAgaWYgbm90IHNlbGYudHJhcHNbZXJyb3JdOgorICAgICAgICAgICAgIyBUaGUgZXJyb3JzIGRlZmluZSBob3cgdG8gaGFuZGxlIHRoZW1zZWx2ZXMuCisgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uKCkuaGFuZGxlKHNlbGYsICphcmdzKQorCisgICAgICAgICMgRXJyb3JzIHNob3VsZCBvbmx5IGJlIHJpc2tlZCBvbiBjb3BpZXMgb2YgdGhlIGNvbnRleHQKKyAgICAgICAgIyBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gW10KKyAgICAgICAgcmFpc2UgZXJyb3IoZXhwbGFuYXRpb24pCisKKyAgICBkZWYgX2lnbm9yZV9hbGxfZmxhZ3Moc2VsZik6CisgICAgICAgICIiIklnbm9yZSBhbGwgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCIiIgorICAgICAgICByZXR1cm4gc2VsZi5faWdub3JlX2ZsYWdzKCpfc2lnbmFscykKKworICAgIGRlZiBfaWdub3JlX2ZsYWdzKHNlbGYsICpmbGFncyk6CisgICAgICAgICIiIklnbm9yZSB0aGUgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCIiIgorICAgICAgICAjIERvIG5vdCBtdXRhdGUtLSBUaGlzIHdheSwgY29waWVzIG9mIGEgY29udGV4dCBsZWF2ZSB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBhbG9uZS4KKyAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IChzZWxmLl9pZ25vcmVkX2ZsYWdzICsgbGlzdChmbGFncykpCisgICAgICAgIHJldHVybiBsaXN0KGZsYWdzKQorCisgICAgZGVmIF9yZWdhcmRfZmxhZ3Moc2VsZiwgKmZsYWdzKToKKyAgICAgICAgIiIiU3RvcCBpZ25vcmluZyB0aGUgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCIiIgorICAgICAgICBpZiBmbGFncyBhbmQgaXNpbnN0YW5jZShmbGFnc1swXSwgKHR1cGxlLGxpc3QpKToKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3NbMF0KKyAgICAgICAgZm9yIGZsYWcgaW4gZmxhZ3M6CisgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzLnJlbW92ZShmbGFnKQorCisgICAgIyBXZSBpbmhlcml0IG9iamVjdC5fX2hhc2hfXywgc28gd2UgbXVzdCBkZW55IHRoaXMgZXhwbGljaXRseQorICAgIF9faGFzaF9fID0gTm9uZQorCisgICAgZGVmIEV0aW55KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIEV0aW55ICg9IEVtaW4gLSBwcmVjICsgMSkiIiIKKyAgICAgICAgcmV0dXJuIGludChzZWxmLkVtaW4gLSBzZWxmLnByZWMgKyAxKQorCisgICAgZGVmIEV0b3Aoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgbWF4aW11bSBleHBvbmVudCAoPSBFbWF4IC0gcHJlYyArIDEpIiIiCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5FbWF4IC0gc2VsZi5wcmVjICsgMSkKKworICAgIGRlZiBfc2V0X3JvdW5kaW5nKHNlbGYsIHR5cGUpOgorICAgICAgICAiIiJTZXRzIHRoZSByb3VuZGluZyB0eXBlLgorCisgICAgICAgIFNldHMgdGhlIHJvdW5kaW5nIHR5cGUsIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IChwcmV2aW91cykKKyAgICAgICAgcm91bmRpbmcgdHlwZS4gIE9mdGVuIHVzZWQgbGlrZToKKworICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKKyAgICAgICAgIyBzbyB5b3UgZG9uJ3QgY2hhbmdlIHRoZSBjYWxsaW5nIGNvbnRleHQKKyAgICAgICAgIyBpZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIG1pZGRsZS4KKyAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfVVApCisgICAgICAgIHZhbCA9IHNlbGYuX19zdWJfXyhvdGhlciwgY29udGV4dD1jb250ZXh0KQorICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcocm91bmRpbmcpCisKKyAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgcm91bmQgdXAgZm9yIHRoYXQgb3BlcmF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcm91bmRpbmcgPSBzZWxmLnJvdW5kaW5nCisgICAgICAgIHNlbGYucm91bmRpbmc9IHR5cGUKKyAgICAgICAgcmV0dXJuIHJvdW5kaW5nCisKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWwoc2VsZiwgbnVtPScwJyk6CisgICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBidXQgdXNpbmcgc2VsZiBhcyBjb250ZXh0LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlCisgICAgICAgIElCTSBEZWNpbWFsIHNwZWNpZmljYXRpb24uIiIiCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIG51bSAhPSBudW0uc3RyaXAoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyB0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJtaXR0ZWQuIikKKworICAgICAgICBkID0gRGVjaW1hbChudW0sIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgZC5faXNuYW4oKSBhbmQgbGVuKGQuX2ludCkgPiBzZWxmLnByZWMgLSBzZWxmLmNsYW1wOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpYWdub3N0aWMgaW5mbyB0b28gbG9uZyBpbiBOYU4iKQorICAgICAgICByZXR1cm4gZC5fZml4KHNlbGYpCisKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChzZWxmLCBmKToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGZyb20gYSBmbG9hdCBidXQgcm91bmRpbmcgdXNpbmcgc2VsZgorICAgICAgICBhcyB0aGUgY29udGV4dC4KKworICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9ET1dOKQorICAgICAgICA+Pj4gY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDMuMTQxNTkyNjUzNTg5NzkzMikKKyAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKKyAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgdHJhcHM9W0luZXhhY3RdKQorICAgICAgICA+Pj4gY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDMuMTQxNTkyNjUzNTg5NzkzMikKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgLi4uCisgICAgICAgIGRlY2ltYWwuSW5leGFjdAorCisgICAgICAgICIiIgorICAgICAgICBkID0gRGVjaW1hbC5mcm9tX2Zsb2F0KGYpICAgICAgICMgQW4gZXhhY3QgY29udmVyc2lvbgorICAgICAgICByZXR1cm4gZC5fZml4KHNlbGYpICAgICAgICAgICAgICMgQXBwbHkgdGhlIGNvbnRleHQgcm91bmRpbmcKKworICAgICMgTWV0aG9kcworICAgIGRlZiBhYnMoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvcGVyYW5kLgorCisgICAgICAgIElmIHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHVzaW5nIHRoZSBtaW51cworICAgICAgICBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuICBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdXNpbmcKKyAgICAgICAgdGhlIHBsdXMgb3BlcmF0aW9uIG9uIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAwJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJzEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnLTEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoLTEpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuX19hYnNfXyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgYWRkKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHN1bSBvZiB0aGUgdHdvIG9wZXJhbmRzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzcuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTkuMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKCcxRSsyJyksIERlY2ltYWwoJzEuMDFFKzQnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMkUrNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKDgpLCA1KQorICAgICAgICBEZWNpbWFsKCcxMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKDUsIDUpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fYWRkX18oYiwgY29udGV4dD1zZWxmKQorICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9hcHBseShzZWxmLCBhKToKKyAgICAgICAgcmV0dXJuIHN0cihhLl9maXgoc2VsZikpCisKKyAgICBkZWYgY2Fub25pY2FsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBzYW1lIERlY2ltYWwgb2JqZWN0LgorCisgICAgICAgIEFzIHdlIGRvIG5vdCBoYXZlIGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBzYW1lIG51bWJlciwgdGhlCisgICAgICAgIHJlY2VpdmVkIG9iamVjdCBhbHJlYWR5IGlzIGluIGl0cyBjYW5vbmljYWwgZm9ybS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIERlY2ltYWwoJzIuNTAnKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKKyAgICAgICAgcmV0dXJuIGEuY2Fub25pY2FsKCkKKworICAgIGRlZiBjb21wYXJlKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB2YWx1ZXMgbnVtZXJpY2FsbHkuCisKKyAgICAgICAgSWYgdGhlIHNpZ25zIG9mIHRoZSBvcGVyYW5kcyBkaWZmZXIsIGEgdmFsdWUgcmVwcmVzZW50aW5nIGVhY2ggb3BlcmFuZAorICAgICAgICAoJy0xJyBpZiB0aGUgb3BlcmFuZCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSBvcGVyYW5kIGlzIHplcm8gb3IKKyAgICAgICAgbmVnYXRpdmUgemVybywgb3IgJzEnIGlmIHRoZSBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvKSBpcyB1c2VkIGluCisgICAgICAgIHBsYWNlIG9mIHRoYXQgb3BlcmFuZCBmb3IgdGhlIGNvbXBhcmlzb24gaW5zdGVhZCBvZiB0aGUgYWN0dWFsCisgICAgICAgIG9wZXJhbmQuCisKKyAgICAgICAgVGhlIGNvbXBhcmlzb24gaXMgdGhlbiBlZmZlY3RlZCBieSBzdWJ0cmFjdGluZyB0aGUgc2Vjb25kIG9wZXJhbmQgZnJvbQorICAgICAgICB0aGUgZmlyc3QgYW5kIHRoZW4gcmV0dXJuaW5nIGEgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQgb2YgdGhlCisgICAgICAgIHN1YnRyYWN0aW9uOiAnLTEnIGlmIHRoZSByZXN1bHQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgcmVzdWx0IGlzCisgICAgICAgIHplcm8gb3IgbmVnYXRpdmUgemVybywgb3IgJzEnIGlmIHRoZSByZXN1bHQgaXMgZ3JlYXRlciB0aGFuIHplcm8uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJy0zJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKDEsIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKDEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvbXBhcmUoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGNvbXBhcmVfc2lnbmFsKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG9mIHRoZSB0d28gb3BlcmFuZHMgbnVtZXJpY2FsbHkuCisKKyAgICAgICAgSXQncyBwcmV0dHkgbXVjaCBsaWtlIGNvbXBhcmUoKSwgYnV0IGFsbCBOYU5zIHNpZ25hbCwgd2l0aCBzaWduYWxpbmcKKyAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDAKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnTmFOJyksIERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgMQorICAgICAgICA+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDAKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnc05hTicpLCBEZWNpbWFsKCcyLjEnKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisgICAgICAgIDEKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoLTEsIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgtMSksIDIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoLTEsIERlY2ltYWwoMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvbXBhcmVfc2lnbmFsKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJDb21wYXJlcyB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uCisKKyAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbAorICAgICAgICB2YWx1ZS4gTm90ZSB0aGF0IGEgdG90YWwgb3JkZXJpbmcgaXMgZGVmaW5lZCBmb3IgYWxsIHBvc3NpYmxlIGFic3RyYWN0CisgICAgICAgIHJlcHJlc2VudGF0aW9ucy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuNzMnKSwgRGVjaW1hbCgnMTI3LjknKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnLTEyNycpLCAgRGVjaW1hbCgnMTInKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMzAnKSwgRGVjaW1hbCgnMTIuMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zMCcpLCBEZWNpbWFsKCcxMi4zMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMnKSwgIERlY2ltYWwoJzEyLjMwMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMnKSwgIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbCgxLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbCgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb21wYXJlX3RvdGFsKGIpCisKKyAgICBkZWYgY29tcGFyZV90b3RhbF9tYWcoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiBpZ25vcmluZyBzaWduLgorCisgICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuY29tcGFyZV90b3RhbF9tYWcoYikKKworICAgIGRlZiBjb3B5X2FicyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgb2YgdGhlIG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKERlY2ltYWwoJy0xMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2FicygtMSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5jb3B5X2FicygpCisKKyAgICBkZWYgY29weV9kZWNpbWFsKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgZGVjaW1hbCBvYmplY3QuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzIuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9kZWNpbWFsKERlY2ltYWwoJy0xLjAwJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoMSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gRGVjaW1hbChhKQorCisgICAgZGVmIGNvcHlfbmVnYXRlKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgb3BlcmFuZCB3aXRoIHRoZSBzaWduIGludmVydGVkLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoRGVjaW1hbCgnMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwMS41JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZShEZWNpbWFsKCctMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKDEpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvcHlfbmVnYXRlKCkKKworICAgIGRlZiBjb3B5X3NpZ24oc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvcGllcyB0aGUgc2Vjb25kIG9wZXJhbmQncyBzaWduIHRvIHRoZSBmaXJzdCBvbmUuCisKKyAgICAgICAgSW4gZGV0YWlsLCBpdCByZXR1cm5zIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoIHRoZSBzaWduCisgICAgICAgIGVxdWFsIHRvIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCAnMS41MCcpLCBEZWNpbWFsKCc3LjMzJykpCisgICAgICAgIERlY2ltYWwoJzEuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCctMS41MCcpLCBEZWNpbWFsKCc3LjMzJykpCisgICAgICAgIERlY2ltYWwoJzEuNTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCAnMS41MCcpLCBEZWNpbWFsKCctNy4zMycpKQorICAgICAgICBEZWNpbWFsKCctMS41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoJy0xLjUwJyksIERlY2ltYWwoJy03LjMzJykpCisgICAgICAgIERlY2ltYWwoJy0xLjUwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oMSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oMSwgRGVjaW1hbCgtMikpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmNvcHlfc2lnbihiKQorCisgICAgZGVmIGRpdmlkZShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiRGVjaW1hbCBkaXZpc2lvbiBpbiBhIHNwZWNpZmllZCBjb250ZXh0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcwLjMzMzMzMzMzMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcwLjY2NjY2NjY2NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzUnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcyLjUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzAuMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEyJyksIERlY2ltYWwoJzEyJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCc4LjAwJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnNC4wMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzIuNDAwJyksIERlY2ltYWwoJzIuMCcpKQorICAgICAgICBEZWNpbWFsKCcxLjIwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTAwMCcpLCBEZWNpbWFsKCcxMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMDAwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzIuNDBFKzYnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCcxLjIwRSs2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoNSwgNSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoNSksIDUpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZSg1LCBEZWNpbWFsKDUpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHIgPSBhLl9fdHJ1ZWRpdl9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBkaXZpZGVfaW50KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJEaXZpZGVzIHR3byBudW1iZXJzIGFuZCByZXR1cm5zIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHJlc3VsdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMC4zJykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoMTAsIDMpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgxMCksIDMpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoMTAsIERlY2ltYWwoMykpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19mbG9vcmRpdl9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBkaXZtb2Qoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybiAoYSAvLyBiLCBhICUgYikuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgRGVjaW1hbCgzKSkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMicpKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCBEZWNpbWFsKDQpKQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIDQpCisgICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoRGVjaW1hbCg4KSwgNCkKKyAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZCg4LCBEZWNpbWFsKDQpKQorICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByID0gYS5fX2Rpdm1vZF9fKGIsIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBleHAoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgZSAqKiBhLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCctSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCctMScpKQorICAgICAgICBEZWNpbWFsKCcwLjM2Nzg3OTQ0MScpCisgICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcyLjcxODI4MTgzJykKKyAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzAuNjkzMTQ3MTgxJykpCisgICAgICAgIERlY2ltYWwoJzIuMDAwMDAwMDAnKQorICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnK0luZmluaXR5JykpCisgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgPj4+IGMuZXhwKDEwKQorICAgICAgICBEZWNpbWFsKCcyMjAyNi40NjU4JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPV9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuZXhwKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBmbWEoc2VsZiwgYSwgYiwgYyk6CisgICAgICAgICIiIlJldHVybnMgYSBtdWx0aXBsaWVkIGJ5IGIsIHBsdXMgYy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyLCB1c2luZyBtdWx0aXBseSwKKyAgICAgICAgdGhlIHRoaXJkIG9wZXJhbmQgaXMgdGhlbiBhZGRlZCB0byB0aGUgcmVzdWx0IG9mIHRoYXQKKyAgICAgICAgbXVsdGlwbGljYXRpb24sIHVzaW5nIGFkZCwgYWxsIHdpdGggb25seSBvbmUgZmluYWwgcm91bmRpbmcuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc1JyksIERlY2ltYWwoJzcnKSkKKyAgICAgICAgRGVjaW1hbCgnMjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCczJyksIERlY2ltYWwoJy01JyksIERlY2ltYWwoJzcnKSkKKyAgICAgICAgRGVjaW1hbCgnLTgnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCc4ODg1NjUyOTAnKSwgRGVjaW1hbCgnMTU1Ny45NjkzMCcpLCBEZWNpbWFsKCctODYwODcuNzU3OCcpKQorICAgICAgICBEZWNpbWFsKCcxLjM4NDM1NzM2RSsxMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIDMsIDQpCisgICAgICAgIERlY2ltYWwoJzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCBEZWNpbWFsKDMpLCA0KQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgMywgRGVjaW1hbCg0KSkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5mbWEoYiwgYywgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGlzX2Nhbm9uaWNhbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgY2Fub25pY2FsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIGVuY29kaW5nIG9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMKKyAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImlzX2Nhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKKyAgICAgICAgcmV0dXJuIGEuaXNfY2Fub25pY2FsKCkKKworICAgIGRlZiBpc19maW5pdGUoc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgorICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJy0wLjMnKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCcwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnSW5mJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJ05hTicpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZSgxKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19maW5pdGUoKQorCisgICAgZGVmIGlzX2luZmluaXRlKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCctSW5mJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZShEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19pbmZpbml0ZSgxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfaW5maW5pdGUoKQorCisgICAgZGVmIGlzX25hbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBxTmFOIG9yIHNOYU47CisgICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oRGVjaW1hbCgnMi41MCcpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCctc05hTicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19uYW4oKQorCisgICAgZGVmIGlzX25vcm1hbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBub3JtYWwgbnVtYmVyOworICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzAuMUUtOTk5JykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCcwLjAwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCctSW5mJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX25vcm1hbChEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfbm9ybWFsKDEpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX25vcm1hbChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgaXNfcW5hbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBxdWlldCBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJ05hTicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbihEZWNpbWFsKCdzTmFOJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfcW5hbigxKQorICAgICAgICBGYWxzZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfcW5hbigpCisKKyAgICBkZWYgaXNfc2lnbmVkKHNlbGYsIGEpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJy0xMicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJy0wJykpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoOCkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoLTgpCisgICAgICAgIFRydWUKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3NpZ25lZCgpCisKKyAgICBkZWYgaXNfc25hbihzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSBzaWduYWxpbmcgTmFOOworICAgICAgICBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbihEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oMSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmlzX3NuYW4oKQorCisgICAgZGVmIGlzX3N1Ym5vcm1hbChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgc3Vibm9ybWFsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCcwLjFFLTk5OScpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCcwLjAwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCctSW5mJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBjLmlzX3N1Ym5vcm1hbChEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRmFsc2UKKyAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKDEpCisgICAgICAgIEZhbHNlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5pc19zdWJub3JtYWwoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGlzX3plcm8oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEgemVybzsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oRGVjaW1hbCgnMCcpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCcyLjUwJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCctMEUrMicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygxKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMCkKKyAgICAgICAgVHJ1ZQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuaXNfemVybygpCisKKyAgICBkZWYgbG4oc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLgorCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQorICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQorICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMS4wMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzIuNzE4MjgxODMnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMCcpCisgICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzIuMzAyNTg1MDknKQorICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcrSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sbigxKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxuKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2cxMChzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCisgICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CisgICAgICAgID4+PiBjLkVtYXggPSA5OTkKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcwLjAwMScpKQorICAgICAgICBEZWNpbWFsKCctMycpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzEuMDAwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzAuMzAxMDI5OTk2JykKKyAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzcwJykpCisgICAgICAgIERlY2ltYWwoJzEuODQ1MDk4MDQnKQorICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcrSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sb2cxMCgwKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5sb2cxMCgxKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZzEwKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBsb2diKHNlbGYsIGEpOgorICAgICAgICAiIiIgUmV0dXJucyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3BlcmFuZCdzIE1TRC4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBpbnRlZ2VyIHdoaWNoIGlzIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlCisgICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHRoZSBvcGVyYW5kIChhcyB0aG91Z2ggdGhlCisgICAgICAgIG9wZXJhbmQgd2VyZSB0cnVuY2F0ZWQgdG8gYSBzaW5nbGUgZGlnaXQgd2hpbGUgbWFpbnRhaW5pbmcgdGhlCisgICAgICAgIHZhbHVlIG9mIHRoYXQgZGlnaXQgYW5kIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzI1MCcpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzIuNTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYihEZWNpbWFsKCcwLjAzJykpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKDEpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMTApCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMTAwKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2IoY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2ljYWxfYW5kKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAnYW5kJyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KKworICAgICAgICBUaGUgb3BlcmFuZHMgbXVzdCBiZSBib3RoIGxvZ2ljYWwgbnVtYmVycy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMTExMScpLCBEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoMTEwLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoMTEwKSwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZCgxMTAsIERlY2ltYWwoMTEwMSkpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2dpY2FsX2FuZChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9naWNhbF9pbnZlcnQoc2VsZiwgYSk6CisgICAgICAgICIiIkludmVydCBhbGwgdGhlIGRpZ2l0cyBpbiB0aGUgb3BlcmFuZC4KKworICAgICAgICBUaGUgb3BlcmFuZCBtdXN0IGJlIGEgbG9naWNhbCBudW1iZXIuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzExMTExMTExMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxMTExMTExMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzExMTExMTExMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxMDEwMTAxMDEnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAxMDEwMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KDExMDEpCisgICAgICAgIERlY2ltYWwoJzExMTExMDAxMCcpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5sb2dpY2FsX2ludmVydChjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbG9naWNhbF9vcihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQXBwbGllcyB0aGUgbG9naWNhbCBvcGVyYXRpb24gJ29yJyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KKworICAgICAgICBUaGUgb3BlcmFuZHMgbXVzdCBiZSBib3RoIGxvZ2ljYWwgbnVtYmVycy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMTEwMCcpLCBEZWNpbWFsKCcxMDEwJykpCisgICAgICAgIERlY2ltYWwoJzExMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoRGVjaW1hbCgnMTExMCcpLCBEZWNpbWFsKCcxMCcpKQorICAgICAgICBEZWNpbWFsKCcxMTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKDExMCwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTExMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKDExMCksIDExMDEpCisgICAgICAgIERlY2ltYWwoJzExMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoMTEwLCBEZWNpbWFsKDExMDEpKQorICAgICAgICBEZWNpbWFsKCcxMTExJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLmxvZ2ljYWxfb3IoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIGxvZ2ljYWxfeG9yKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAneG9yJyBiZXR3ZWVuIGVhY2ggb3BlcmFuZCdzIGRpZ2l0cy4KKworICAgICAgICBUaGUgb3BlcmFuZHMgbXVzdCBiZSBib3RoIGxvZ2ljYWwgbnVtYmVycy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTEwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxMTExJyksIERlY2ltYWwoJzEwJykpCisgICAgICAgIERlY2ltYWwoJzExMDEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKDExMCwgMTEwMSkKKyAgICAgICAgRGVjaW1hbCgnMTAxMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgxMTApLCAxMTAxKQorICAgICAgICBEZWNpbWFsKCcxMDExJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcigxMTAsIERlY2ltYWwoMTEwMSkpCisgICAgICAgIERlY2ltYWwoJzEwMTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubG9naWNhbF94b3IoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1heChzZWxmLCBhLCBiKToKKyAgICAgICAgIiIibWF4IGNvbXBhcmVzIHR3byB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybnMgdGhlIG1heGltdW0uCisKKyAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4gdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgb3BlcmFuZHMgYXJlIGNvbXBhcmVkIGFzIHRob3VnaCBieSB0aGUgY29tcGFyZQorICAgICAgICBvcGVyYXRpb24uICBJZiB0aGV5IGFyZSBudW1lcmljYWxseSBlcXVhbCB0aGVuIHRoZSBsZWZ0LWhhbmQgb3BlcmFuZAorICAgICAgICBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSB0aGUgbWF4aW11bSAoY2xvc2VyIHRvIHBvc2l0aXZlCisgICAgICAgIGluZmluaXR5KSBvZiB0aGUgdHdvIG9wZXJhbmRzIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzEuMCcpLCBEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoMSwgMikKKyAgICAgICAgRGVjaW1hbCgnMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heCgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm1heChiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWF4X21hZyhzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgnNycpLCBEZWNpbWFsKCdOYU4nKSkKKyAgICAgICAgRGVjaW1hbCgnNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKCc3JyksIERlY2ltYWwoJy0xMCcpKQorICAgICAgICBEZWNpbWFsKCctMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoMSwgLTIpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoMSksIC0yKQorICAgICAgICBEZWNpbWFsKCctMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZygxLCBEZWNpbWFsKC0yKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubWF4X21hZyhiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbWluKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJtaW4gY29tcGFyZXMgdHdvIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJucyB0aGUgbWluaW11bS4KKworICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIE5hTiB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgorICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYXMgdGhvdWdoIGJ5IHRoZSBjb21wYXJlCisgICAgICAgIG9wZXJhdGlvbi4gIElmIHRoZXkgYXJlIG51bWVyaWNhbGx5IGVxdWFsIHRoZW4gdGhlIGxlZnQtaGFuZCBvcGVyYW5kCisgICAgICAgIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlIHRoZSBtaW5pbXVtIChjbG9zZXIgdG8gbmVnYXRpdmUKKyAgICAgICAgaW5maW5pdHkpIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCcxLjAnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcxLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQorICAgICAgICBEZWNpbWFsKCc3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oMSwgMikKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoMSksIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbigxLCBEZWNpbWFsKDI5KSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5taW4oYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1pbl9tYWcoc2VsZiwgYSwgYik6CisgICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnLTInKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnTmFOJykpCisgICAgICAgIERlY2ltYWwoJy0zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKDEsIC0yKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKERlY2ltYWwoMSksIC0yKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW5fbWFnKDEsIERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm1pbl9tYWcoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG1pbnVzKHNlbGYsIGEpOgorICAgICAgICAiIiJNaW51cyBjb3JyZXNwb25kcyB0byB1bmFyeSBwcmVmaXggbWludXMgaW4gUHl0aG9uLgorCisgICAgICAgIFRoZSBvcGVyYXRpb24gaXMgZXZhbHVhdGVkIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzIHN1YnRyYWN0OyB0aGUKKyAgICAgICAgb3BlcmF0aW9uIG1pbnVzKGEpIGlzIGNhbGN1bGF0ZWQgYXMgc3VidHJhY3QoJzAnLCBhKSB3aGVyZSB0aGUgJzAnCisgICAgICAgIGhhcyB0aGUgc2FtZSBleHBvbmVudCBhcyB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKERlY2ltYWwoJzEuMycpKQorICAgICAgICBEZWNpbWFsKCctMS4zJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cyhEZWNpbWFsKCctMS4zJykpCisgICAgICAgIERlY2ltYWwoJzEuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoMSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEuX19uZWdfXyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbXVsdGlwbHkoc2VsZiwgYSwgYik6CisgICAgICAgICIiIm11bHRpcGx5IG11bHRpcGxpZXMgdHdvIG9wZXJhbmRzLgorCisgICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgc3BlY2lhbCB2YWx1ZSB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgorICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgbXVsdGlwbGllZCB0b2dldGhlcgorICAgICAgICAoJ2xvbmcgbXVsdGlwbGljYXRpb24nKSwgcmVzdWx0aW5nIGluIGEgbnVtYmVyIHdoaWNoIG1heSBiZSBhcyBsb25nIGFzCisgICAgICAgIHRoZSBzdW0gb2YgdGhlIGxlbmd0aHMgb2YgdGhlIHR3byBvcGVyYW5kcy4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzEuMjAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCczLjYwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCc3JyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCcwLjgnKSkKKyAgICAgICAgRGVjaW1hbCgnMC43MicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMC45JyksIERlY2ltYWwoJy0wJykpCisgICAgICAgIERlY2ltYWwoJy0wLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzY1NDMyMScpLCBEZWNpbWFsKCc2NTQzMjEnKSkKKyAgICAgICAgRGVjaW1hbCgnNC4yODEzNTk3MUUrMTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KDcsIDcpCisgICAgICAgIERlY2ltYWwoJzQ5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKDcpLCA3KQorICAgICAgICBEZWNpbWFsKCc0OScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoNywgRGVjaW1hbCg3KSkKKyAgICAgICAgRGVjaW1hbCgnNDknKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19tdWxfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgbmV4dF9taW51cyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBzbWFsbGVyIHRoYW4gYS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfbWludXMoRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwLjk5OTk5OTk5OScpCisgICAgICAgID4+PiBjLm5leHRfbWludXMoRGVjaW1hbCgnMUUtMTAwNycpKQorICAgICAgICBEZWNpbWFsKCcwRS0xMDA3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5uZXh0X21pbnVzKERlY2ltYWwoJy0xLjAwMDAwMDAzJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDA0JykKKyAgICAgICAgPj4+IGMubmV4dF9taW51cyhEZWNpbWFsKCdJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCc5Ljk5OTk5OTk5RSs5OTknKQorICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKDEpCisgICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm5leHRfbWludXMoY29udGV4dD1zZWxmKQorCisgICAgZGVmIG5leHRfcGx1cyhzZWxmLCBhKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4gYS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfcGx1cyhEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQorICAgICAgICA+Pj4gYy5uZXh0X3BsdXMoRGVjaW1hbCgnLTFFLTEwMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnLTBFLTEwMDcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfcGx1cyhEZWNpbWFsKCctMS4wMDAwMDAwMycpKQorICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwMicpCisgICAgICAgID4+PiBjLm5leHRfcGx1cyhEZWNpbWFsKCctSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnLTkuOTk5OTk5OTlFKzk5OScpCisgICAgICAgID4+PiBjLm5leHRfcGx1cygxKQorICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm5leHRfcGx1cyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgbmV4dF90b3dhcmQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBjbG9zZXN0IHRvIGEsIGluIGRpcmVjdGlvbiB0b3dhcmRzIGIuCisKKyAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBmcm9tIHRoZSBmaXJzdAorICAgICAgICBvcGVyYW5kIChidXQgbm90IHRoZSBmaXJzdCBvcGVyYW5kKSB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24KKyAgICAgICAgdG93YXJkcyB0aGUgc2Vjb25kIG9wZXJhbmQsIHVubGVzcyB0aGUgb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZQorICAgICAgICB2YWx1ZS4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzInKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xRS0xMDA3JyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTBFLTEwMDcnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMS4wMDAwMDAwMycpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDAyJykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnMUUtMTAwNycpLCBEZWNpbWFsKCctMTAwJykpCisgICAgICAgIERlY2ltYWwoJzBFLTEwMDcnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCctMS4wMDAwMDAwMycpLCBEZWNpbWFsKCctMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDQnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcwLjAwJyksIERlY2ltYWwoJy0wLjAwMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuMDAnKQorICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZCgwLCAxKQorICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKKyAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgwKSwgMSkKKyAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCisgICAgICAgID4+PiBjLm5leHRfdG93YXJkKDAsIERlY2ltYWwoMSkpCisgICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubmV4dF90b3dhcmQoYiwgY29udGV4dD1zZWxmKQorCisgICAgZGVmIG5vcm1hbGl6ZShzZWxmLCBhKToKKyAgICAgICAgIiIibm9ybWFsaXplIHJlZHVjZXMgYW4gb3BlcmFuZCB0byBpdHMgc2ltcGxlc3QgZm9ybS4KKworICAgICAgICBFc3NlbnRpYWxseSBhIHBsdXMgb3BlcmF0aW9uIHdpdGggYWxsIHRyYWlsaW5nIHplcm9zIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgICAgcmVzdWx0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCctMi4wJykpCisgICAgICAgIERlY2ltYWwoJy0yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMS4yMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4yJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnLTEyMCcpKQorICAgICAgICBEZWNpbWFsKCctMS4yRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMTIwLjAwJykpCisgICAgICAgIERlY2ltYWwoJzEuMkUrMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJzAuMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKDYpCisgICAgICAgIERlY2ltYWwoJzYnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEubm9ybWFsaXplKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBudW1iZXJfY2xhc3Moc2VsZiwgYSk6CisgICAgICAgICIiIlJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2YgdGhlIG9wZXJhbmQuCisKKyAgICAgICAgVGhlIGNsYXNzIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CisgICAgICAgICAgLXNOYU4KKyAgICAgICAgICAtTmFOCisgICAgICAgICAgLUluZmluaXR5CisgICAgICAgICAgLU5vcm1hbAorICAgICAgICAgIC1TdWJub3JtYWwKKyAgICAgICAgICAtWmVybworICAgICAgICAgICtaZXJvCisgICAgICAgICAgK1N1Ym5vcm1hbAorICAgICAgICAgICtOb3JtYWwKKyAgICAgICAgICArSW5maW5pdHkKKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnSW5maW5pdHknKSkKKyAgICAgICAgJytJbmZpbml0eScKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzFFLTEwJykpCisgICAgICAgICcrTm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMi41MCcpKQorICAgICAgICAnK05vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJzAuMUUtOTk5JykpCisgICAgICAgICcrU3Vibm9ybWFsJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMCcpKQorICAgICAgICAnK1plcm8nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMCcpKQorICAgICAgICAnLVplcm8nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMC4xRS05OTknKSkKKyAgICAgICAgJy1TdWJub3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMUUtMTAnKSkKKyAgICAgICAgJy1Ob3JtYWwnCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMi41MCcpKQorICAgICAgICAnLU5vcm1hbCcKKyAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy1JbmZpbml0eScpKQorICAgICAgICAnLUluZmluaXR5JworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnTmFOJykpCisgICAgICAgICdOYU4nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctTmFOJykpCisgICAgICAgICdOYU4nCisgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdzTmFOJykpCisgICAgICAgICdzTmFOJworICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoMTIzKQorICAgICAgICAnK05vcm1hbCcKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLm51bWJlcl9jbGFzcyhjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgcGx1cyhzZWxmLCBhKToKKyAgICAgICAgIiIiUGx1cyBjb3JyZXNwb25kcyB0byB1bmFyeSBwcmVmaXggcGx1cyBpbiBQeXRob24uCisKKyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBldmFsdWF0ZWQgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgYWRkOyB0aGUKKyAgICAgICAgb3BlcmF0aW9uIHBsdXMoYSkgaXMgY2FsY3VsYXRlZCBhcyBhZGQoJzAnLCBhKSB3aGVyZSB0aGUgJzAnCisgICAgICAgIGhhcyB0aGUgc2FtZSBleHBvbmVudCBhcyB0aGUgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoRGVjaW1hbCgnMS4zJykpCisgICAgICAgIERlY2ltYWwoJzEuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cyhEZWNpbWFsKCctMS4zJykpCisgICAgICAgIERlY2ltYWwoJy0xLjMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBsdXMoLTEpCisgICAgICAgIERlY2ltYWwoJy0xJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLl9fcG9zX18oY29udGV4dD1zZWxmKQorCisgICAgZGVmIHBvd2VyKHNlbGYsIGEsIGIsIG1vZHVsbz1Ob25lKToKKyAgICAgICAgIiIiUmFpc2VzIGEgdG8gdGhlIHBvd2VyIG9mIGIsIHRvIG1vZHVsbyBpZiBnaXZlbi4KKworICAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgYSoqYi4gIElmIGEgaXMgbmVnYXRpdmUgdGhlbiBiCisgICAgICAgIG11c3QgYmUgaW50ZWdyYWwuICBUaGUgcmVzdWx0IHdpbGwgYmUgaW5leGFjdCB1bmxlc3MgYiBpcworICAgICAgICBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseQorICAgICAgICBpbiAncHJlY2lzaW9uJyBkaWdpdHMuCisKKyAgICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgKGEqKmIpICUgbW9kdWxvLiAgRm9yIHRoZQorICAgICAgICB0aHJlZSBhcmd1bWVudCBmb3JtLCB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9ucyBvbiB0aGUKKyAgICAgICAgYXJndW1lbnRzIGhvbGQ6CisKKyAgICAgICAgIC0gYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsCisgICAgICAgICAtIGIgbXVzdCBiZSBub25uZWdhdGl2ZQorICAgICAgICAgLSBhdCBsZWFzdCBvbmUgb2YgYSBvciBiIG11c3QgYmUgbm9uemVybworICAgICAgICAgLSBtb2R1bG8gbXVzdCBiZSBub256ZXJvIGFuZCBoYXZlIGF0IG1vc3QgJ3ByZWNpc2lvbicgZGlnaXRzCisKKyAgICAgICAgVGhlIHJlc3VsdCBvZiBwb3coYSwgYiwgbW9kdWxvKSBpcyBpZGVudGljYWwgdG8gdGhlIHJlc3VsdAorICAgICAgICB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGJ5IGNvbXB1dGluZyAoYSoqYikgJSBtb2R1bG8gd2l0aAorICAgICAgICB1bmJvdW5kZWQgcHJlY2lzaW9uLCBidXQgaXMgY29tcHV0ZWQgbW9yZSBlZmZpY2llbnRseS4gIEl0IGlzCisgICAgICAgIGFsd2F5cyBleGFjdC4KKworICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKKyAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKKyAgICAgICAgPj4+IGMuRW1heCA9IDk5OQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnOCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0yJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTgnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyJyksIERlY2ltYWwoJy0zJykpCisgICAgICAgIERlY2ltYWwoJzAuMTI1JykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMS43JyksIERlY2ltYWwoJzgnKSkKKyAgICAgICAgRGVjaW1hbCgnNjkuNzU3NTc0NCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMzAxMDI5OTk2JykpCisgICAgICAgIERlY2ltYWwoJzIuMDAwMDAwMDAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCctMScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCctMScpKQorICAgICAgICBEZWNpbWFsKCctMCcpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctSW5maW5pdHknKSwgRGVjaW1hbCgnMicpKQorICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCdOYU4nKQorCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCcxNicpKQorICAgICAgICBEZWNpbWFsKCcxMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0zJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMTYnKSkKKyAgICAgICAgRGVjaW1hbCgnLTExJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnOCcpLCBEZWNpbWFsKCcxNicpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJy0xNicpKQorICAgICAgICBEZWNpbWFsKCcxMScpCisgICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzIzRTEyMzQ1JyksIERlY2ltYWwoJzY3RTE4OScpLCBEZWNpbWFsKCcxMjM0NTY3ODknKSkKKyAgICAgICAgRGVjaW1hbCgnMTE3Mjk4MzAnKQorICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxNycpLCBEZWNpbWFsKCcxNzI5JykpCisgICAgICAgIERlY2ltYWwoJy0wJykKKyAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTIzJyksIERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnNjU1MzcnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgNykKKyAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcihEZWNpbWFsKDcpLCA3KQorICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIERlY2ltYWwoNyksIDIpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19wb3dfXyhiLCBtb2R1bG8sIGNvbnRleHQ9c2VsZikKKyAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBxdWFudGl6ZShzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHZhbHVlIGVxdWFsIHRvICdhJyAocm91bmRlZCksIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgJ2InLgorCisgICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGRlcml2ZWQgZnJvbSB0aGF0IG9mIHRoZSBsZWZ0LWhhbmQKKyAgICAgICAgb3BlcmFuZC4gIEl0IG1heSBiZSByb3VuZGVkIHVzaW5nIHRoZSBjdXJyZW50IHJvdW5kaW5nIHNldHRpbmcgKGlmIHRoZQorICAgICAgICBleHBvbmVudCBpcyBiZWluZyBpbmNyZWFzZWQpLCBtdWx0aXBsaWVkIGJ5IGEgcG9zaXRpdmUgcG93ZXIgb2YgdGVuIChpZgorICAgICAgICB0aGUgZXhwb25lbnQgaXMgYmVpbmcgZGVjcmVhc2VkKSwgb3IgaXMgdW5jaGFuZ2VkIChpZiB0aGUgZXhwb25lbnQgaXMKKyAgICAgICAgYWxyZWFkeSBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQpLgorCisgICAgICAgIFVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBjb2VmZmljaWVudCBhZnRlciB0aGUKKyAgICAgICAgcXVhbnRpemUgb3BlcmF0aW9uIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBwcmVjaXNpb24gdGhlbiBhbiBJbnZhbGlkCisgICAgICAgIG9wZXJhdGlvbiBjb25kaXRpb24gaXMgcmFpc2VkLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQsIHVubGVzcyB0aGVyZSBpcworICAgICAgICBhbiBlcnJvciBjb25kaXRpb24sIHRoZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0IG9mIGEgcXVhbnRpemUgaXMgYWx3YXlzCisgICAgICAgIGVxdWFsIHRvIHRoYXQgb2YgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZC4KKworICAgICAgICBBbHNvIHVubGlrZSBvdGhlciBvcGVyYXRpb25zLCBxdWFudGl6ZSB3aWxsIG5ldmVyIHJhaXNlIFVuZGVyZmxvdywgZXZlbgorICAgICAgICBpZiB0aGUgcmVzdWx0IGlzIHN1Ym5vcm1hbCBhbmQgaW5leGFjdC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMDEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4xNzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMScpKQorICAgICAgICBEZWNpbWFsKCcyLjE3JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMScpKQorICAgICAgICBEZWNpbWFsKCcyLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMWUrMCcpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMEUrMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLUluZicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMC4xJyksIERlY2ltYWwoJzEnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0wJyksIERlY2ltYWwoJzFlKzUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTBFKzUnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJyszNTIzNjQ1MC42JyksIERlY2ltYWwoJzFlLTInKSkKKyAgICAgICAgRGVjaW1hbCgnTmFOJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCisgICAgICAgIERlY2ltYWwoJ05hTicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTEnKSkKKyAgICAgICAgRGVjaW1hbCgnMjE3LjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0wJykpCisgICAgICAgIERlY2ltYWwoJzIxNycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzEnKSkKKyAgICAgICAgRGVjaW1hbCgnMi4yRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUrMicpKQorICAgICAgICBEZWNpbWFsKCcyRSsyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZSgxLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKDEpLCAyKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZSgxLCBEZWNpbWFsKDIpKQorICAgICAgICBEZWNpbWFsKCcxJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnF1YW50aXplKGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiByYWRpeChzZWxmKToKKyAgICAgICAgIiIiSnVzdCByZXR1cm5zIDEwLCBhcyB0aGlzIGlzIERlY2ltYWwsIDopCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yYWRpeCgpCisgICAgICAgIERlY2ltYWwoJzEwJykKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBEZWNpbWFsKDEwKQorCisgICAgZGVmIHJlbWFpbmRlcihzZWxmLCBhLCBiKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4KKworICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSByZXNpZHVlIG9mIHRoZSBkaXZpZGVuZCBhZnRlciB0aGUgb3BlcmF0aW9uIG9mCisgICAgICAgIGNhbGN1bGF0aW5nIGludGVnZXIgZGl2aXNpb24gYXMgZGVzY3JpYmVkIGZvciBkaXZpZGUtaW50ZWdlciwgcm91bmRlZAorICAgICAgICB0byBwcmVjaXNpb24gZGlnaXRzIGlmIG5lY2Vzc2FyeS4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsIGlmCisgICAgICAgIG5vbi16ZXJvLCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBvcmlnaW5hbCBkaXZpZGVuZC4KKworICAgICAgICBUaGlzIG9wZXJhdGlvbiB3aWxsIGZhaWwgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBpbnRlZ2VyIGRpdmlzaW9uCisgICAgICAgICh0aGF0IGlzLCBpZiBpbnRlZ2VyIGRpdmlzaW9uIG9uIHRoZSBzYW1lIHR3byBvcGVyYW5kcyB3b3VsZCBmYWlsLCB0aGUKKyAgICAgICAgcmVtYWluZGVyIGNhbm5vdCBiZSBjYWxjdWxhdGVkKS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCcyLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCctMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwLjInKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4xJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMy42JyksIERlY2ltYWwoJzEuMycpKQorICAgICAgICBEZWNpbWFsKCcxLjAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcigyMiwgNikKKyAgICAgICAgRGVjaW1hbCgnNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoMjIpLCA2KQorICAgICAgICBEZWNpbWFsKCc0JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoMjIsIERlY2ltYWwoNikpCisgICAgICAgIERlY2ltYWwoJzQnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19tb2RfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgcmVtYWluZGVyX25lYXIoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgdG8gYmUgImEgLSBiICogbiIsIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGUgZXhhY3QKKyAgICAgICAgdmFsdWUgb2YgInggLyBiIiAoaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUKKyAgICAgICAgaXMgY2hvc2VuKS4gIElmIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gMCB0aGVuIGl0cyBzaWduIHdpbGwgYmUgdGhlCisgICAgICAgIHNpZ24gb2YgYS4KKworICAgICAgICBUaGlzIG9wZXJhdGlvbiB3aWxsIGZhaWwgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBpbnRlZ2VyIGRpdmlzaW9uCisgICAgICAgICh0aGF0IGlzLCBpZiBpbnRlZ2VyIGRpdmlzaW9uIG9uIHRoZSBzYW1lIHR3byBvcGVyYW5kcyB3b3VsZCBmYWlsLCB0aGUKKyAgICAgICAgcmVtYWluZGVyIGNhbm5vdCBiZSBjYWxjdWxhdGVkKS4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCisgICAgICAgIERlY2ltYWwoJy0wLjknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzYnKSkKKyAgICAgICAgRGVjaW1hbCgnLTInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnMScpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwLjInKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBEZWNpbWFsKCcwLjInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMycpKQorICAgICAgICBEZWNpbWFsKCcwLjEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzMuNicpLCBEZWNpbWFsKCcxLjMnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoMywgMTEpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMyksIDExKQorICAgICAgICBEZWNpbWFsKCczJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcigzLCBEZWNpbWFsKDExKSkKKyAgICAgICAgRGVjaW1hbCgnMycpCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5yZW1haW5kZXJfbmVhcihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgcm90YXRlKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIGEgcm90YXRlZCBjb3B5IG9mIGEsIGIgdGltZXMuCisKKyAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgYSByb3RhdGVkIGNvcHkgb2YgdGhlIGRpZ2l0cyBpbgorICAgICAgICB0aGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQuICBUaGUgbnVtYmVyIG9mIHBsYWNlcyBvZgorICAgICAgICByb3RhdGlvbiBpcyB0YWtlbiBmcm9tIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQsCisgICAgICAgIHdpdGggdGhlIHJvdGF0aW9uIGJlaW5nIHRvIHRoZSBsZWZ0IGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcworICAgICAgICBwb3NpdGl2ZSBvciB0byB0aGUgcmlnaHQgb3RoZXJ3aXNlLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzM0JyksIERlY2ltYWwoJzgnKSkKKyAgICAgICAgRGVjaW1hbCgnNDAwMDAwMDAzJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnOScpKQorICAgICAgICBEZWNpbWFsKCcxMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCctMicpKQorICAgICAgICBEZWNpbWFsKCc4OTEyMzQ1NjcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnMCcpKQorICAgICAgICBEZWNpbWFsKCcxMjM0NTY3ODknKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnKzInKSkKKyAgICAgICAgRGVjaW1hbCgnMzQ1Njc4OTEyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoMTMzMzMzMywgMSkKKyAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKDEzMzMzMzMpLCAxKQorICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKDEzMzMzMzMsIERlY2ltYWwoMSkpCisgICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnJvdGF0ZShiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgc2FtZV9xdWFudHVtKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIFRydWUgaWYgdGhlIHR3byBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIGV4cG9uZW50LgorCisgICAgICAgIFRoZSByZXN1bHQgaXMgbmV2ZXIgYWZmZWN0ZWQgYnkgZWl0aGVyIHRoZSBzaWduIG9yIHRoZSBjb2VmZmljaWVudCBvZgorICAgICAgICBlaXRoZXIgb3BlcmFuZC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzAuMDAxJykpCisgICAgICAgIEZhbHNlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMScpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMScpKQorICAgICAgICBGYWxzZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKCdJbmYnKSwgRGVjaW1hbCgnLUluZicpKQorICAgICAgICBUcnVlCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKDEwMDAwLCAtMSkKKyAgICAgICAgVHJ1ZQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bShEZWNpbWFsKDEwMDAwKSwgLTEpCisgICAgICAgIFRydWUKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oMTAwMDAsIERlY2ltYWwoLTEpKQorICAgICAgICBUcnVlCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS5zYW1lX3F1YW50dW0oYikKKworICAgIGRlZiBzY2FsZWIgKHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlIGl0cyBleHAuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCctMicpKQorICAgICAgICBEZWNpbWFsKCcwLjA3NTAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnNy41MCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnMycpKQorICAgICAgICBEZWNpbWFsKCc3LjUwRSszJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoMSwgNCkKKyAgICAgICAgRGVjaW1hbCgnMUUrNCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoMSksIDQpCisgICAgICAgIERlY2ltYWwoJzFFKzQnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYigxLCBEZWNpbWFsKDQpKQorICAgICAgICBEZWNpbWFsKCcxRSs0JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNjYWxlYihiLCBjb250ZXh0PXNlbGYpCisKKyAgICBkZWYgc2hpZnQoc2VsZiwgYSwgYik6CisgICAgICAgICIiIlJldHVybnMgYSBzaGlmdGVkIGNvcHkgb2YgYSwgYiB0aW1lcy4KKworICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBhIHNoaWZ0ZWQgY29weSBvZiB0aGUgZGlnaXRzCisgICAgICAgIGluIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4gIFRoZSBudW1iZXIgb2YgcGxhY2VzCisgICAgICAgIHRvIHNoaWZ0IGlzIHRha2VuIGZyb20gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwKKyAgICAgICAgd2l0aCB0aGUgc2hpZnQgYmVpbmcgdG8gdGhlIGxlZnQgaWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzCisgICAgICAgIHBvc2l0aXZlIG9yIHRvIHRoZSByaWdodCBvdGhlcndpc2UuICBEaWdpdHMgc2hpZnRlZCBpbnRvIHRoZQorICAgICAgICBjb2VmZmljaWVudCBhcmUgemVyb3MuCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCczNCcpLCBEZWNpbWFsKCc4JykpCisgICAgICAgIERlY2ltYWwoJzQwMDAwMDAwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnOScpKQorICAgICAgICBEZWNpbWFsKCcwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnLTInKSkKKyAgICAgICAgRGVjaW1hbCgnMTIzNDU2NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2hpZnQoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTIzNDU2Nzg5JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnKzInKSkKKyAgICAgICAgRGVjaW1hbCgnMzQ1Njc4OTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdCg4ODg4ODg4OCwgMikKKyAgICAgICAgRGVjaW1hbCgnODg4ODg4ODAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKDg4ODg4ODg4KSwgMikKKyAgICAgICAgRGVjaW1hbCgnODg4ODg4ODAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdCg4ODg4ODg4OCwgRGVjaW1hbCgyKSkKKyAgICAgICAgRGVjaW1hbCgnODg4ODg4ODAwJykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNoaWZ0KGIsIGNvbnRleHQ9c2VsZikKKworICAgIGRlZiBzcXJ0KHNlbGYsIGEpOgorICAgICAgICAiIiJTcXVhcmUgcm9vdCBvZiBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgdG8gY29udGV4dCBwcmVjaXNpb24uCisKKyAgICAgICAgSWYgdGhlIHJlc3VsdCBtdXN0IGJlIGluZXhhY3QsIGl0IGlzIHJvdW5kZWQgdXNpbmcgdGhlIHJvdW5kLWhhbGYtZXZlbgorICAgICAgICBhbGdvcml0aG0uCisKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCctMCcpKQorICAgICAgICBEZWNpbWFsKCctMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcwLjM5JykpCisgICAgICAgIERlY2ltYWwoJzAuNjI0NDk5ODAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxJykpCisgICAgICAgIERlY2ltYWwoJzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMS4wJykpCisgICAgICAgIERlY2ltYWwoJzEuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxLjAwJykpCisgICAgICAgIERlY2ltYWwoJzEuMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCc3JykpCisgICAgICAgIERlY2ltYWwoJzIuNjQ1NzUxMzEnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMTAnKSkKKyAgICAgICAgRGVjaW1hbCgnMy4xNjIyNzc2NicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydCgyKQorICAgICAgICBEZWNpbWFsKCcxLjQxNDIxMzU2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wcmVjCisgICAgICAgIDkKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnNxcnQoY29udGV4dD1zZWxmKQorCisgICAgZGVmIHN1YnRyYWN0KHNlbGYsIGEsIGIpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG9wZXJhbmRzLgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCgnMS4zJyksIERlY2ltYWwoJzEuMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4yMycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCgnMS4zJyksIERlY2ltYWwoJzEuMzAnKSkKKyAgICAgICAgRGVjaW1hbCgnMC4wMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCgnMS4zJyksIERlY2ltYWwoJzIuMDcnKSkKKyAgICAgICAgRGVjaW1hbCgnLTAuNzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KDgsIDUpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KERlY2ltYWwoOCksIDUpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnN1YnRyYWN0KDgsIERlY2ltYWwoNSkpCisgICAgICAgIERlY2ltYWwoJzMnKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgciA9IGEuX19zdWJfXyhiLCBjb250ZXh0PXNlbGYpCisgICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByCisKKyAgICBkZWYgdG9fZW5nX3N0cmluZyhzZWxmLCBhKToKKyAgICAgICAgIiIiQ29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uCisKKyAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQuCisgICAgICAgICIiIgorICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQorICAgICAgICByZXR1cm4gYS50b19lbmdfc3RyaW5nKGNvbnRleHQ9c2VsZikKKworICAgIGRlZiB0b19zY2lfc3RyaW5nKHNlbGYsIGEpOgorICAgICAgICAiIiJDb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi4KKworICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgY29udGV4dC4KKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLl9fc3RyX18oY29udGV4dD1zZWxmKQorCisgICAgZGVmIHRvX2ludGVncmFsX2V4YWN0KHNlbGYsIGEpOgorICAgICAgICAiIiJSb3VuZHMgdG8gYW4gaW50ZWdlci4KKworICAgICAgICBXaGVuIHRoZSBvcGVyYW5kIGhhcyBhIG5lZ2F0aXZlIGV4cG9uZW50LCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCisgICAgICAgIGFzIHVzaW5nIHRoZSBxdWFudGl6ZSgpIG9wZXJhdGlvbiB1c2luZyB0aGUgZ2l2ZW4gb3BlcmFuZCBhcyB0aGUKKyAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KKyAgICAgICAgb2YgdGhlIG9wZXJhbmQgYXMgdGhlIHByZWNpc2lvbiBzZXR0aW5nOyBJbmV4YWN0IGFuZCBSb3VuZGVkIGZsYWdzCisgICAgICAgIGFyZSBhbGxvd2VkIGluIHRoaXMgb3BlcmF0aW9uLiAgVGhlIHJvdW5kaW5nIG1vZGUgaXMgdGFrZW4gZnJvbSB0aGUKKyAgICAgICAgY29udGV4dC4KKworICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzIuMScpKQorICAgICAgICBEZWNpbWFsKCcyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDAnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAwJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDAuMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMS41JykpCisgICAgICAgIERlY2ltYWwoJzEwMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnLTEwMS41JykpCisgICAgICAgIERlY2ltYWwoJy0xMDInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwRSs1JykpCisgICAgICAgIERlY2ltYWwoJzEuMEUrNicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnNy44OUUrNzcnKSkKKyAgICAgICAgRGVjaW1hbCgnNy44OUUrNzcnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJy1JbmYnKSkKKyAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgIiIiCisgICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCisgICAgICAgIHJldHVybiBhLnRvX2ludGVncmFsX2V4YWN0KGNvbnRleHQ9c2VsZikKKworICAgIGRlZiB0b19pbnRlZ3JhbF92YWx1ZShzZWxmLCBhKToKKyAgICAgICAgIiIiUm91bmRzIHRvIGFuIGludGVnZXIuCisKKyAgICAgICAgV2hlbiB0aGUgb3BlcmFuZCBoYXMgYSBuZWdhdGl2ZSBleHBvbmVudCwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZQorICAgICAgICBhcyB1c2luZyB0aGUgcXVhbnRpemUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCisgICAgICAgIGxlZnQtaGFuZC1vcGVyYW5kLCAxRSswIGFzIHRoZSByaWdodC1oYW5kLW9wZXJhbmQsIGFuZCB0aGUgcHJlY2lzaW9uCisgICAgICAgIG9mIHRoZSBvcGVyYW5kIGFzIHRoZSBwcmVjaXNpb24gc2V0dGluZywgZXhjZXB0IHRoYXQgbm8gZmxhZ3Mgd2lsbAorICAgICAgICBiZSBzZXQuICBUaGUgcm91bmRpbmcgbW9kZSBpcyB0YWtlbiBmcm9tIHRoZSBjb250ZXh0LgorCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMi4xJykpCisgICAgICAgIERlY2ltYWwoJzInKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMCcpKQorICAgICAgICBEZWNpbWFsKCcxMDAnKQorICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMC4wJykpCisgICAgICAgIERlY2ltYWwoJzEwMCcpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnMTAyJykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCctMTAxLjUnKSkKKyAgICAgICAgRGVjaW1hbCgnLTEwMicpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTBFKzUnKSkKKyAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKKyAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCc3Ljg5RSs3NycpKQorICAgICAgICBEZWNpbWFsKCc3Ljg5RSs3NycpCisgICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnLUluZicpKQorICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQorICAgICAgICAiIiIKKyAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIGEudG9faW50ZWdyYWxfdmFsdWUoY29udGV4dD1zZWxmKQorCisgICAgIyB0aGUgbWV0aG9kIG5hbWUgY2hhbmdlZCwgYnV0IHdlIHByb3ZpZGUgYWxzbyB0aGUgb2xkIG9uZSwgZm9yIGNvbXBhdGliaWxpdHkKKyAgICB0b19pbnRlZ3JhbCA9IHRvX2ludGVncmFsX3ZhbHVlCisKK2NsYXNzIF9Xb3JrUmVwKG9iamVjdCk6CisgICAgX19zbG90c19fID0gKCdzaWduJywnaW50JywnZXhwJykKKyAgICAjIHNpZ246IDAgb3IgMQorICAgICMgaW50OiAgaW50CisgICAgIyBleHA6ICBOb25lLCBpbnQsIG9yIHN0cmluZworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPU5vbmUpOgorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5zaWduID0gTm9uZQorICAgICAgICAgICAgc2VsZi5pbnQgPSAwCisgICAgICAgICAgICBzZWxmLmV4cCA9IE5vbmUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHNlbGYuc2lnbiA9IHZhbHVlLl9zaWduCisgICAgICAgICAgICBzZWxmLmludCA9IGludCh2YWx1ZS5faW50KQorICAgICAgICAgICAgc2VsZi5leHAgPSB2YWx1ZS5fZXhwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGFzc2VydCBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSkKKyAgICAgICAgICAgIHNlbGYuc2lnbiA9IHZhbHVlWzBdCisgICAgICAgICAgICBzZWxmLmludCA9IHZhbHVlWzFdCisgICAgICAgICAgICBzZWxmLmV4cCA9IHZhbHVlWzJdCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiKCVyLCAlciwgJXIpIiAlIChzZWxmLnNpZ24sIHNlbGYuaW50LCBzZWxmLmV4cCkKKworICAgIF9fc3RyX18gPSBfX3JlcHJfXworCisKKworZGVmIF9ub3JtYWxpemUob3AxLCBvcDIsIHByZWMgPSAwKToKKyAgICAiIiJOb3JtYWxpemVzIG9wMSwgb3AyIHRvIGhhdmUgdGhlIHNhbWUgZXhwIGFuZCBsZW5ndGggb2YgY29lZmZpY2llbnQuCisKKyAgICBEb25lIGR1cmluZyBhZGRpdGlvbi4KKyAgICAiIiIKKyAgICBpZiBvcDEuZXhwIDwgb3AyLmV4cDoKKyAgICAgICAgdG1wID0gb3AyCisgICAgICAgIG90aGVyID0gb3AxCisgICAgZWxzZToKKyAgICAgICAgdG1wID0gb3AxCisgICAgICAgIG90aGVyID0gb3AyCisKKyAgICAjIExldCBleHAgPSBtaW4odG1wLmV4cCAtIDEsIHRtcC5hZGp1c3RlZCgpIC0gcHJlY2lzaW9uIC0gMSkuCisgICAgIyBUaGVuIGFkZGluZyAxMCoqZXhwIHRvIHRtcCBoYXMgdGhlIHNhbWUgZWZmZWN0IChhZnRlciByb3VuZGluZykKKyAgICAjIGFzIGFkZGluZyBhbnkgcG9zaXRpdmUgcXVhbnRpdHkgc21hbGxlciB0aGFuIDEwKipleHA7IHNpbWlsYXJseQorICAgICMgZm9yIHN1YnRyYWN0aW9uLiAgU28gaWYgb3RoZXIgaXMgc21hbGxlciB0aGFuIDEwKipleHAgd2UgcmVwbGFjZQorICAgICMgaXQgd2l0aCAxMCoqZXhwLiAgVGhpcyBhdm9pZHMgdG1wLmV4cCAtIG90aGVyLmV4cCBnZXR0aW5nIHRvbyBsYXJnZS4KKyAgICB0bXBfbGVuID0gbGVuKHN0cih0bXAuaW50KSkKKyAgICBvdGhlcl9sZW4gPSBsZW4oc3RyKG90aGVyLmludCkpCisgICAgZXhwID0gdG1wLmV4cCArIG1pbigtMSwgdG1wX2xlbiAtIHByZWMgLSAyKQorICAgIGlmIG90aGVyX2xlbiArIG90aGVyLmV4cCAtIDEgPCBleHA6CisgICAgICAgIG90aGVyLmludCA9IDEKKyAgICAgICAgb3RoZXIuZXhwID0gZXhwCisKKyAgICB0bXAuaW50ICo9IDEwICoqICh0bXAuZXhwIC0gb3RoZXIuZXhwKQorICAgIHRtcC5leHAgPSBvdGhlci5leHAKKyAgICByZXR1cm4gb3AxLCBvcDIKKworIyMjIyMgSW50ZWdlciBhcml0aG1ldGljIGZ1bmN0aW9ucyB1c2VkIGJ5IGxuLCBsb2cxMCwgZXhwIGFuZCBfX3Bvd19fICMjIyMjCisKK19uYml0cyA9IGludC5iaXRfbGVuZ3RoCisKK2RlZiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QobiwgZSk6CisgICAgIiIiIEdpdmVuIGludGVnZXJzIG4gYW5kIGUsIHJldHVybiBuICogMTAqKmUgaWYgaXQncyBhbiBpbnRlZ2VyLCBlbHNlIE5vbmUuCisKKyAgICBUaGUgY29tcHV0YXRpb24gaXMgZGVzaWduZWQgdG8gYXZvaWQgY29tcHV0aW5nIGxhcmdlIHBvd2VycyBvZiAxMAorICAgIHVubmVjZXNzYXJpbHkuCisKKyAgICA+Pj4gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KDMsIDQpCisgICAgMzAwMDAKKyAgICA+Pj4gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KDMwMCwgLTk5OTk5OTk5OSkgICMgcmV0dXJucyBOb25lCisKKyAgICAiIiIKKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiAwCisgICAgZWxpZiBlID49IDA6CisgICAgICAgIHJldHVybiBuICogMTAqKmUKKyAgICBlbHNlOgorICAgICAgICAjIHZhbF9uID0gbGFyZ2VzdCBwb3dlciBvZiAxMCBkaXZpZGluZyBuLgorICAgICAgICBzdHJfbiA9IHN0cihhYnMobikpCisgICAgICAgIHZhbF9uID0gbGVuKHN0cl9uKSAtIGxlbihzdHJfbi5yc3RyaXAoJzAnKSkKKyAgICAgICAgcmV0dXJuIE5vbmUgaWYgdmFsX24gPCAtZSBlbHNlIG4gLy8gMTAqKi1lCisKK2RlZiBfc3FydF9uZWFyZXN0KG4sIGEpOgorICAgICIiIkNsb3Nlc3QgaW50ZWdlciB0byB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHBvc2l0aXZlIGludGVnZXIgbi4gIGEgaXMKKyAgICBhbiBpbml0aWFsIGFwcHJveGltYXRpb24gdG8gdGhlIHNxdWFyZSByb290LiAgQW55IHBvc2l0aXZlIGludGVnZXIKKyAgICB3aWxsIGRvIGZvciBhLCBidXQgdGhlIGNsb3NlciBhIGlzIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiBuIHRoZQorICAgIGZhc3RlciBjb252ZXJnZW5jZSB3aWxsIGJlLgorCisgICAgIiIiCisgICAgaWYgbiA8PSAwIG9yIGEgPD0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQm90aCBhcmd1bWVudHMgdG8gX3NxcnRfbmVhcmVzdCBzaG91bGQgYmUgcG9zaXRpdmUuIikKKworICAgIGI9MAorICAgIHdoaWxlIGEgIT0gYjoKKyAgICAgICAgYiwgYSA9IGEsIGEtLW4vL2E+PjEKKyAgICByZXR1cm4gYQorCitkZWYgX3JzaGlmdF9uZWFyZXN0KHgsIHNoaWZ0KToKKyAgICAiIiJHaXZlbiBhbiBpbnRlZ2VyIHggYW5kIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBzaGlmdCwgcmV0dXJuIGNsb3Nlc3QKKyAgICBpbnRlZ2VyIHRvIHggLyAyKipzaGlmdDsgdXNlIHJvdW5kLXRvLWV2ZW4gaW4gY2FzZSBvZiBhIHRpZS4KKworICAgICIiIgorICAgIGIsIHEgPSAxIDw8IHNoaWZ0LCB4ID4+IHNoaWZ0CisgICAgcmV0dXJuIHEgKyAoMiooeCAmIChiLTEpKSArIChxJjEpID4gYikKKworZGVmIF9kaXZfbmVhcmVzdChhLCBiKToKKyAgICAiIiJDbG9zZXN0IGludGVnZXIgdG8gYS9iLCBhIGFuZCBiIHBvc2l0aXZlIGludGVnZXJzOyByb3VuZHMgdG8gZXZlbgorICAgIGluIHRoZSBjYXNlIG9mIGEgdGllLgorCisgICAgIiIiCisgICAgcSwgciA9IGRpdm1vZChhLCBiKQorICAgIHJldHVybiBxICsgKDIqciArIChxJjEpID4gYikKKworZGVmIF9pbG9nKHgsIE0sIEwgPSA4KToKKyAgICAiIiJJbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gTSpsb2coeC9NKSwgd2l0aCBhYnNvbHV0ZSBlcnJvciBib3VuZGFibGUKKyAgICBpbiB0ZXJtcyBvbmx5IG9mIHgvTS4KKworICAgIEdpdmVuIHBvc2l0aXZlIGludGVnZXJzIHggYW5kIE0sIHJldHVybiBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8KKyAgICBNICogbG9nKHgvTSkuICBGb3IgTCA9IDggYW5kIDAuMSA8PSB4L00gPD0gMTAgdGhlIGRpZmZlcmVuY2UKKyAgICBiZXR3ZWVuIHRoZSBhcHByb3hpbWF0aW9uIGFuZCB0aGUgZXhhY3QgcmVzdWx0IGlzIGF0IG1vc3QgMjIuICBGb3IKKyAgICBMID0gOCBhbmQgMS4wIDw9IHgvTSA8PSAxMC4wIHRoZSBkaWZmZXJlbmNlIGlzIGF0IG1vc3QgMTUuICBJbgorICAgIGJvdGggY2FzZXMgdGhlc2UgYXJlIHVwcGVyIGJvdW5kcyBvbiB0aGUgZXJyb3I7IGl0IHdpbGwgdXN1YWxseSBiZQorICAgIG11Y2ggc21hbGxlci4iIiIKKworICAgICMgVGhlIGJhc2ljIGFsZ29yaXRobSBpcyB0aGUgZm9sbG93aW5nOiBsZXQgbG9nMXAgYmUgdGhlIGZ1bmN0aW9uCisgICAgIyBsb2cxcCh4KSA9IGxvZygxK3gpLiAgVGhlbiBsb2coeC9NKSA9IGxvZzFwKCh4LU0pL00pLiAgV2UgdXNlCisgICAgIyB0aGUgcmVkdWN0aW9uCisgICAgIworICAgICMgICAgbG9nMXAoeSkgPSAyKmxvZzFwKHkvKDErc3FydCgxK3kpKSkKKyAgICAjCisgICAgIyByZXBlYXRlZGx5IHVudGlsIHRoZSBhcmd1bWVudCB0byBsb2cxcCBpcyBzbWFsbCAoPCAyKiotTCBpbgorICAgICMgYWJzb2x1dGUgdmFsdWUpLiAgRm9yIHNtYWxsIHkgd2UgY2FuIHVzZSB0aGUgVGF5bG9yIHNlcmllcworICAgICMgZXhwYW5zaW9uCisgICAgIworICAgICMgICAgbG9nMXAoeSkgfiB5IC0geSoqMi8yICsgeSoqMy8zIC0gLi4uIC0gKC15KSoqVC9UCisgICAgIworICAgICMgdHJ1bmNhdGluZyBhdCBUIHN1Y2ggdGhhdCB5KipUIGlzIHNtYWxsIGVub3VnaC4gIFRoZSB3aG9sZQorICAgICMgY29tcHV0YXRpb24gaXMgY2FycmllZCBvdXQgaW4gYSBmb3JtIG9mIGZpeGVkLXBvaW50IGFyaXRobWV0aWMsCisgICAgIyB3aXRoIGEgcmVhbCBudW1iZXIgeiBiZWluZyByZXByZXNlbnRlZCBieSBhbiBpbnRlZ2VyCisgICAgIyBhcHByb3hpbWF0aW9uIHRvIHoqTS4gIFRvIGF2b2lkIGxvc3Mgb2YgcHJlY2lzaW9uLCB0aGUgeSBiZWxvdworICAgICMgaXMgYWN0dWFsbHkgYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIDIqKlIqeSpNLCB3aGVyZSBSIGlzIHRoZQorICAgICMgbnVtYmVyIG9mIHJlZHVjdGlvbnMgcGVyZm9ybWVkIHNvIGZhci4KKworICAgIHkgPSB4LU0KKyAgICAjIGFyZ3VtZW50IHJlZHVjdGlvbjsgUiA9IG51bWJlciBvZiByZWR1Y3Rpb25zIHBlcmZvcm1lZAorICAgIFIgPSAwCisgICAgd2hpbGUgKFIgPD0gTCBhbmQgYWJzKHkpIDw8IEwtUiA+PSBNIG9yCisgICAgICAgICAgIFIgPiBMIGFuZCBhYnMoeSkgPj4gUi1MID49IE0pOgorICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KChNKnkpIDw8IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgTSArIF9zcXJ0X25lYXJlc3QoTSooTStfcnNoaWZ0X25lYXJlc3QoeSwgUikpLCBNKSkKKyAgICAgICAgUiArPSAxCisKKyAgICAjIFRheWxvciBzZXJpZXMgd2l0aCBUIHRlcm1zCisgICAgVCA9IC1pbnQoLTEwKmxlbihzdHIoTSkpLy8oMypMKSkKKyAgICB5c2hpZnQgPSBfcnNoaWZ0X25lYXJlc3QoeSwgUikKKyAgICB3ID0gX2Rpdl9uZWFyZXN0KE0sIFQpCisgICAgZm9yIGsgaW4gcmFuZ2UoVC0xLCAwLCAtMSk6CisgICAgICAgIHcgPSBfZGl2X25lYXJlc3QoTSwgaykgLSBfZGl2X25lYXJlc3QoeXNoaWZ0KncsIE0pCisKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KHcqeSwgTSkKKworZGVmIF9kbG9nMTAoYywgZSwgcCk6CisgICAgIiIiR2l2ZW4gaW50ZWdlcnMgYywgZSBhbmQgcCB3aXRoIGMgPiAwLCBwID49IDAsIGNvbXB1dGUgYW4gaW50ZWdlcgorICAgIGFwcHJveGltYXRpb24gdG8gMTAqKnAgKiBsb2cxMChjKjEwKiplKSwgd2l0aCBhbiBhYnNvbHV0ZSBlcnJvciBvZgorICAgIGF0IG1vc3QgMS4gIEFzc3VtZXMgdGhhdCBjKjEwKiplIGlzIG5vdCBleGFjdGx5IDEuIiIiCisKKyAgICAjIGluY3JlYXNlIHByZWNpc2lvbiBieSAyOyBjb21wZW5zYXRlIGZvciB0aGlzIGJ5IGRpdmlkaW5nCisgICAgIyBmaW5hbCByZXN1bHQgYnkgMTAwCisgICAgcCArPSAyCisKKyAgICAjIHdyaXRlIGMqMTAqKmUgYXMgZCoxMCoqZiB3aXRoIGVpdGhlcjoKKyAgICAjICAgZiA+PSAwIGFuZCAxIDw9IGQgPD0gMTAsIG9yCisgICAgIyAgIGYgPD0gMCBhbmQgMC4xIDw9IGQgPD0gMS4KKyAgICAjIFRodXMgZm9yIGMqMTAqKmUgY2xvc2UgdG8gMSwgZiA9IDAKKyAgICBsID0gbGVuKHN0cihjKSkKKyAgICBmID0gZStsIC0gKGUrbCA+PSAxKQorCisgICAgaWYgcCA+IDA6CisgICAgICAgIE0gPSAxMCoqcAorICAgICAgICBrID0gZStwLWYKKyAgICAgICAgaWYgayA+PSAwOgorICAgICAgICAgICAgYyAqPSAxMCoqaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYyA9IF9kaXZfbmVhcmVzdChjLCAxMCoqLWspCisKKyAgICAgICAgbG9nX2QgPSBfaWxvZyhjLCBNKSAjIGVycm9yIDwgNSArIDIyID0gMjcKKyAgICAgICAgbG9nXzEwID0gX2xvZzEwX2RpZ2l0cyhwKSAjIGVycm9yIDwgMQorICAgICAgICBsb2dfZCA9IF9kaXZfbmVhcmVzdChsb2dfZCpNLCBsb2dfMTApCisgICAgICAgIGxvZ190ZW5wb3dlciA9IGYqTSAjIGV4YWN0CisgICAgZWxzZToKKyAgICAgICAgbG9nX2QgPSAwICAjIGVycm9yIDwgMi4zMQorICAgICAgICBsb2dfdGVucG93ZXIgPSBfZGl2X25lYXJlc3QoZiwgMTAqKi1wKSAjIGVycm9yIDwgMC41CisKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KGxvZ190ZW5wb3dlcitsb2dfZCwgMTAwKQorCitkZWYgX2Rsb2coYywgZSwgcCk6CisgICAgIiIiR2l2ZW4gaW50ZWdlcnMgYywgZSBhbmQgcCB3aXRoIGMgPiAwLCBjb21wdXRlIGFuIGludGVnZXIKKyAgICBhcHByb3hpbWF0aW9uIHRvIDEwKipwICogbG9nKGMqMTAqKmUpLCB3aXRoIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgYXQgbW9zdCAxLiAgQXNzdW1lcyB0aGF0IGMqMTAqKmUgaXMgbm90IGV4YWN0bHkgMS4iIiIKKworICAgICMgSW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDIuIFRoZSBwcmVjaXNpb24gaW5jcmVhc2UgaXMgY29tcGVuc2F0ZWQKKyAgICAjIGZvciBhdCB0aGUgZW5kIHdpdGggYSBkaXZpc2lvbiBieSAxMDAuCisgICAgcCArPSAyCisKKyAgICAjIHJld3JpdGUgYyoxMCoqZSBhcyBkKjEwKipmIHdpdGggZWl0aGVyIGYgPj0gMCBhbmQgMSA8PSBkIDw9IDEwLAorICAgICMgb3IgZiA8PSAwIGFuZCAwLjEgPD0gZCA8PSAxLiAgVGhlbiB3ZSBjYW4gY29tcHV0ZSAxMCoqcCAqIGxvZyhjKjEwKiplKQorICAgICMgYXMgMTAqKnAgKiBsb2coZCkgKyAxMCoqcCpmICogbG9nKDEwKS4KKyAgICBsID0gbGVuKHN0cihjKSkKKyAgICBmID0gZStsIC0gKGUrbCA+PSAxKQorCisgICAgIyBjb21wdXRlIGFwcHJveGltYXRpb24gdG8gMTAqKnAqbG9nKGQpLCB3aXRoIGVycm9yIDwgMjcKKyAgICBpZiBwID4gMDoKKyAgICAgICAgayA9IGUrcC1mCisgICAgICAgIGlmIGsgPj0gMDoKKyAgICAgICAgICAgIGMgKj0gMTAqKmsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGMgPSBfZGl2X25lYXJlc3QoYywgMTAqKi1rKSAgIyBlcnJvciBvZiA8PSAwLjUgaW4gYworCisgICAgICAgICMgX2lsb2cgbWFnbmlmaWVzIGV4aXN0aW5nIGVycm9yIGluIGMgYnkgYSBmYWN0b3Igb2YgYXQgbW9zdCAxMAorICAgICAgICBsb2dfZCA9IF9pbG9nKGMsIDEwKipwKSAjIGVycm9yIDwgNSArIDIyID0gMjcKKyAgICBlbHNlOgorICAgICAgICAjIHAgPD0gMDoganVzdCBhcHByb3hpbWF0ZSB0aGUgd2hvbGUgdGhpbmcgYnkgMDsgZXJyb3IgPCAyLjMxCisgICAgICAgIGxvZ19kID0gMAorCisgICAgIyBjb21wdXRlIGFwcHJveGltYXRpb24gdG8gZioxMCoqcCpsb2coMTApLCB3aXRoIGVycm9yIDwgMTEuCisgICAgaWYgZjoKKyAgICAgICAgZXh0cmEgPSBsZW4oc3RyKGFicyhmKSkpLTEKKyAgICAgICAgaWYgcCArIGV4dHJhID49IDA6CisgICAgICAgICAgICAjIGVycm9yIGluIGYgKiBfbG9nMTBfZGlnaXRzKHArZXh0cmEpIDwgfGZ8ICogMSA9IHxmfAorICAgICAgICAgICAgIyBhZnRlciBkaXZpc2lvbiwgZXJyb3IgPCB8ZnwvMTAqKmV4dHJhICsgMC41IDwgMTAgKyAwLjUgPCAxMQorICAgICAgICAgICAgZl9sb2dfdGVuID0gX2Rpdl9uZWFyZXN0KGYqX2xvZzEwX2RpZ2l0cyhwK2V4dHJhKSwgMTAqKmV4dHJhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZl9sb2dfdGVuID0gMAorICAgIGVsc2U6CisgICAgICAgIGZfbG9nX3RlbiA9IDAKKworICAgICMgZXJyb3IgaW4gc3VtIDwgMTErMjcgPSAzODsgZXJyb3IgYWZ0ZXIgZGl2aXNpb24gPCAwLjM4ICsgMC41IDwgMQorICAgIHJldHVybiBfZGl2X25lYXJlc3QoZl9sb2dfdGVuICsgbG9nX2QsIDEwMCkKKworY2xhc3MgX0xvZzEwTWVtb2l6ZShvYmplY3QpOgorICAgICIiIkNsYXNzIHRvIGNvbXB1dGUsIHN0b3JlLCBhbmQgYWxsb3cgcmV0cmlldmFsIG9mLCBkaWdpdHMgb2YgdGhlCisgICAgY29uc3RhbnQgbG9nKDEwKSA9IDIuMzAyNTg1Li4uLiAgVGhpcyBjb25zdGFudCBpcyBuZWVkZWQgYnkKKyAgICBEZWNpbWFsLmxuLCBEZWNpbWFsLmxvZzEwLCBEZWNpbWFsLmV4cCBhbmQgRGVjaW1hbC5fX3Bvd19fLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWdpdHMgPSAiMjMwMjU4NTA5Mjk5NDA0NTY4NDAxNzk5MTQ1NDY4NDM2NDIwNzYwMTEwMTQ4ODYiCisKKyAgICBkZWYgZ2V0ZGlnaXRzKHNlbGYsIHApOgorICAgICAgICAiIiJHaXZlbiBhbiBpbnRlZ2VyIHAgPj0gMCwgcmV0dXJuIGZsb29yKDEwKipwKSpsb2coMTApLgorCisgICAgICAgIEZvciBleGFtcGxlLCBzZWxmLmdldGRpZ2l0cygzKSByZXR1cm5zIDIzMDIuCisgICAgICAgICIiIgorICAgICAgICAjIGRpZ2l0cyBhcmUgc3RvcmVkIGFzIGEgc3RyaW5nLCBmb3IgcXVpY2sgY29udmVyc2lvbiB0bworICAgICAgICAjIGludGVnZXIgaW4gdGhlIGNhc2UgdGhhdCB3ZSd2ZSBhbHJlYWR5IGNvbXB1dGVkIGVub3VnaAorICAgICAgICAjIGRpZ2l0czsgdGhlIHN0b3JlZCBkaWdpdHMgc2hvdWxkIGFsd2F5cyBiZSBjb3JyZWN0CisgICAgICAgICMgKHRydW5jYXRlZCwgbm90IHJvdW5kZWQgdG8gbmVhcmVzdCkuCisgICAgICAgIGlmIHAgPCAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicCBzaG91bGQgYmUgbm9ubmVnYXRpdmUiKQorCisgICAgICAgIGlmIHAgPj0gbGVuKHNlbGYuZGlnaXRzKToKKyAgICAgICAgICAgICMgY29tcHV0ZSBwKzMsIHArNiwgcCs5LCAuLi4gZGlnaXRzOyBjb250aW51ZSB1bnRpbCBhdAorICAgICAgICAgICAgIyBsZWFzdCBvbmUgb2YgdGhlIGV4dHJhIGRpZ2l0cyBpcyBub256ZXJvCisgICAgICAgICAgICBleHRyYSA9IDMKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgIyBjb21wdXRlIHArZXh0cmEgZGlnaXRzLCBjb3JyZWN0IHRvIHdpdGhpbiAxdWxwCisgICAgICAgICAgICAgICAgTSA9IDEwKioocCtleHRyYSsyKQorICAgICAgICAgICAgICAgIGRpZ2l0cyA9IHN0cihfZGl2X25lYXJlc3QoX2lsb2coMTAqTSwgTSksIDEwMCkpCisgICAgICAgICAgICAgICAgaWYgZGlnaXRzWy1leHRyYTpdICE9ICcwJypleHRyYToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleHRyYSArPSAzCisgICAgICAgICAgICAjIGtlZXAgYWxsIHJlbGlhYmxlIGRpZ2l0cyBzbyBmYXI7IHJlbW92ZSB0cmFpbGluZyB6ZXJvcworICAgICAgICAgICAgIyBhbmQgbmV4dCBub256ZXJvIGRpZ2l0CisgICAgICAgICAgICBzZWxmLmRpZ2l0cyA9IGRpZ2l0cy5yc3RyaXAoJzAnKVs6LTFdCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5kaWdpdHNbOnArMV0pCisKK19sb2cxMF9kaWdpdHMgPSBfTG9nMTBNZW1vaXplKCkuZ2V0ZGlnaXRzCisKK2RlZiBfaWV4cCh4LCBNLCBMPTgpOgorICAgICIiIkdpdmVuIGludGVnZXJzIHggYW5kIE0sIE0gPiAwLCBzdWNoIHRoYXQgeC9NIGlzIHNtYWxsIGluIGFic29sdXRlCisgICAgdmFsdWUsIGNvbXB1dGUgYW4gaW50ZWdlciBhcHByb3hpbWF0aW9uIHRvIE0qZXhwKHgvTSkuICBGb3IgMCA8PQorICAgIHgvTSA8PSAyLjQsIHRoZSBhYnNvbHV0ZSBlcnJvciBpbiB0aGUgcmVzdWx0IGlzIGJvdW5kZWQgYnkgNjAgKGFuZAorICAgIGlzIHVzdWFsbHkgbXVjaCBzbWFsbGVyKS4iIiIKKworICAgICMgQWxnb3JpdGhtOiB0byBjb21wdXRlIGV4cCh6KSBmb3IgYSByZWFsIG51bWJlciB6LCBmaXJzdCBkaXZpZGUgegorICAgICMgYnkgYSBzdWl0YWJsZSBwb3dlciBSIG9mIDIgc28gdGhhdCB8ei8yKipSfCA8IDIqKi1MLiAgVGhlbgorICAgICMgY29tcHV0ZSBleHBtMSh6LzIqKlIpID0gZXhwKHovMioqUikgLSAxIHVzaW5nIHRoZSB1c3VhbCBUYXlsb3IKKyAgICAjIHNlcmllcworICAgICMKKyAgICAjICAgICBleHBtMSh4KSA9IHggKyB4KioyLzIhICsgeCoqMy8zISArIC4uLgorICAgICMKKyAgICAjIE5vdyB1c2UgdGhlIGlkZW50aXR5CisgICAgIworICAgICMgICAgIGV4cG0xKDJ4KSA9IGV4cG0xKHgpKihleHBtMSh4KSsyKQorICAgICMKKyAgICAjIFIgdGltZXMgdG8gY29tcHV0ZSB0aGUgc2VxdWVuY2UgZXhwbTEoei8yKipSKSwKKyAgICAjIGV4cG0xKHovMioqKFItMSkpLCAuLi4gLCBleHAoei8yKSwgZXhwKHopLgorCisgICAgIyBGaW5kIFIgc3VjaCB0aGF0IHgvMioqUi9NIDw9IDIqKi1MCisgICAgUiA9IF9uYml0cygoeDw8TCkvL00pCisKKyAgICAjIFRheWxvciBzZXJpZXMuICAoMioqTCkqKlQgPiBNCisgICAgVCA9IC1pbnQoLTEwKmxlbihzdHIoTSkpLy8oMypMKSkKKyAgICB5ID0gX2Rpdl9uZWFyZXN0KHgsIFQpCisgICAgTXNoaWZ0ID0gTTw8UgorICAgIGZvciBpIGluIHJhbmdlKFQtMSwgMCwgLTEpOgorICAgICAgICB5ID0gX2Rpdl9uZWFyZXN0KHgqKE1zaGlmdCArIHkpLCBNc2hpZnQgKiBpKQorCisgICAgIyBFeHBhbnNpb24KKyAgICBmb3IgayBpbiByYW5nZShSLTEsIC0xLCAtMSk6CisgICAgICAgIE1zaGlmdCA9IE08PChrKzIpCisgICAgICAgIHkgPSBfZGl2X25lYXJlc3QoeSooeStNc2hpZnQpLCBNc2hpZnQpCisKKyAgICByZXR1cm4gTSt5CisKK2RlZiBfZGV4cChjLCBlLCBwKToKKyAgICAiIiJDb21wdXRlIGFuIGFwcHJveGltYXRpb24gdG8gZXhwKGMqMTAqKmUpLCB3aXRoIHAgZGVjaW1hbCBwbGFjZXMgb2YKKyAgICBwcmVjaXNpb24uCisKKyAgICBSZXR1cm5zIGludGVnZXJzIGQsIGYgc3VjaCB0aGF0OgorCisgICAgICAxMCoqKHAtMSkgPD0gZCA8PSAxMCoqcCwgYW5kCisgICAgICAoZC0xKSoxMCoqZiA8IGV4cChjKjEwKiplKSA8IChkKzEpKjEwKipmCisKKyAgICBJbiBvdGhlciB3b3JkcywgZCoxMCoqZiBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIGV4cChjKjEwKiplKSB3aXRoIHAKKyAgICBkaWdpdHMgb2YgcHJlY2lzaW9uLCBhbmQgd2l0aCBhbiBlcnJvciBpbiBkIG9mIGF0IG1vc3QgMS4gIFRoaXMgaXMKKyAgICBhbG1vc3QsIGJ1dCBub3QgcXVpdGUsIHRoZSBzYW1lIGFzIHRoZSBlcnJvciBiZWluZyA8IDF1bHA6IHdoZW4gZAorICAgID0gMTAqKihwLTEpIHRoZSBlcnJvciBjb3VsZCBiZSB1cCB0byAxMCB1bHAuIiIiCisKKyAgICAjIHdlJ2xsIGNhbGwgaWV4cCB3aXRoIE0gPSAxMCoqKHArMiksIGdpdmluZyBwKzMgZGlnaXRzIG9mIHByZWNpc2lvbgorICAgIHAgKz0gMgorCisgICAgIyBjb21wdXRlIGxvZygxMCkgd2l0aCBleHRyYSBwcmVjaXNpb24gPSBhZGp1c3RlZCBleHBvbmVudCBvZiBjKjEwKiplCisgICAgZXh0cmEgPSBtYXgoMCwgZSArIGxlbihzdHIoYykpIC0gMSkKKyAgICBxID0gcCArIGV4dHJhCisKKyAgICAjIGNvbXB1dGUgcXVvdGllbnQgYyoxMCoqZS8obG9nKDEwKSkgPSBjKjEwKiooZStxKS8obG9nKDEwKSoxMCoqcSksCisgICAgIyByb3VuZGluZyBkb3duCisgICAgc2hpZnQgPSBlK3EKKyAgICBpZiBzaGlmdCA+PSAwOgorICAgICAgICBjc2hpZnQgPSBjKjEwKipzaGlmdAorICAgIGVsc2U6CisgICAgICAgIGNzaGlmdCA9IGMvLzEwKiotc2hpZnQKKyAgICBxdW90LCByZW0gPSBkaXZtb2QoY3NoaWZ0LCBfbG9nMTBfZGlnaXRzKHEpKQorCisgICAgIyByZWR1Y2UgcmVtYWluZGVyIGJhY2sgdG8gb3JpZ2luYWwgcHJlY2lzaW9uCisgICAgcmVtID0gX2Rpdl9uZWFyZXN0KHJlbSwgMTAqKmV4dHJhKQorCisgICAgIyBlcnJvciBpbiByZXN1bHQgb2YgX2lleHAgPCAxMjA7ICBlcnJvciBhZnRlciBkaXZpc2lvbiA8IDAuNjIKKyAgICByZXR1cm4gX2Rpdl9uZWFyZXN0KF9pZXhwKHJlbSwgMTAqKnApLCAxMDAwKSwgcXVvdCAtIHAgKyAzCisKK2RlZiBfZHBvd2VyKHhjLCB4ZSwgeWMsIHllLCBwKToKKyAgICAiIiJHaXZlbiBpbnRlZ2VycyB4YywgeGUsIHljIGFuZCB5ZSByZXByZXNlbnRpbmcgRGVjaW1hbHMgeCA9IHhjKjEwKip4ZSBhbmQKKyAgICB5ID0geWMqMTAqKnllLCBjb21wdXRlIHgqKnkuICBSZXR1cm5zIGEgcGFpciBvZiBpbnRlZ2VycyAoYywgZSkgc3VjaCB0aGF0OgorCisgICAgICAxMCoqKHAtMSkgPD0gYyA8PSAxMCoqcCwgYW5kCisgICAgICAoYy0xKSoxMCoqZSA8IHgqKnkgPCAoYysxKSoxMCoqZQorCisgICAgaW4gb3RoZXIgd29yZHMsIGMqMTAqKmUgaXMgYW4gYXBwcm94aW1hdGlvbiB0byB4Kip5IHdpdGggcCBkaWdpdHMKKyAgICBvZiBwcmVjaXNpb24sIGFuZCB3aXRoIGFuIGVycm9yIGluIGMgb2YgYXQgbW9zdCAxLiAgKFRoaXMgaXMKKyAgICBhbG1vc3QsIGJ1dCBub3QgcXVpdGUsIHRoZSBzYW1lIGFzIHRoZSBlcnJvciBiZWluZyA8IDF1bHA6IHdoZW4gYworICAgID09IDEwKioocC0xKSB3ZSBjYW4gb25seSBndWFyYW50ZWUgZXJyb3IgPCAxMHVscC4pCisKKyAgICBXZSBhc3N1bWUgdGhhdDogeCBpcyBwb3NpdGl2ZSBhbmQgbm90IGVxdWFsIHRvIDEsIGFuZCB5IGlzIG5vbnplcm8uCisgICAgIiIiCisKKyAgICAjIEZpbmQgYiBzdWNoIHRoYXQgMTAqKihiLTEpIDw9IHx5fCA8PSAxMCoqYgorICAgIGIgPSBsZW4oc3RyKGFicyh5YykpKSArIHllCisKKyAgICAjIGxvZyh4KSA9IGx4YyoxMCoqKC1wLWItMSksIHRvIHArYisxIHBsYWNlcyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludAorICAgIGx4YyA9IF9kbG9nKHhjLCB4ZSwgcCtiKzEpCisKKyAgICAjIGNvbXB1dGUgcHJvZHVjdCB5KmxvZyh4KSA9IHljKmx4YyoxMCoqKC1wLWItMSt5ZSkgPSBwYyoxMCoqKC1wLTEpCisgICAgc2hpZnQgPSB5ZS1iCisgICAgaWYgc2hpZnQgPj0gMDoKKyAgICAgICAgcGMgPSBseGMqeWMqMTAqKnNoaWZ0CisgICAgZWxzZToKKyAgICAgICAgcGMgPSBfZGl2X25lYXJlc3QobHhjKnljLCAxMCoqLXNoaWZ0KQorCisgICAgaWYgcGMgPT0gMDoKKyAgICAgICAgIyB3ZSBwcmVmZXIgYSByZXN1bHQgdGhhdCBpc24ndCBleGFjdGx5IDE7IHRoaXMgbWFrZXMgaXQKKyAgICAgICAgIyBlYXNpZXIgdG8gY29tcHV0ZSBhIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdCBpbiBfX3Bvd19fCisgICAgICAgIGlmICgobGVuKHN0cih4YykpICsgeGUgPj0gMSkgPT0gKHljID4gMCkpOiAjIGlmIHgqKnkgPiAxOgorICAgICAgICAgICAgY29lZmYsIGV4cCA9IDEwKioocC0xKSsxLCAxLXAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvZWZmLCBleHAgPSAxMCoqcC0xLCAtcAorICAgIGVsc2U6CisgICAgICAgIGNvZWZmLCBleHAgPSBfZGV4cChwYywgLShwKzEpLCBwKzEpCisgICAgICAgIGNvZWZmID0gX2Rpdl9uZWFyZXN0KGNvZWZmLCAxMCkKKyAgICAgICAgZXhwICs9IDEKKworICAgIHJldHVybiBjb2VmZiwgZXhwCisKK2RlZiBfbG9nMTBfbGIoYywgY29ycmVjdGlvbiA9IHsKKyAgICAgICAgJzEnOiAxMDAsICcyJzogNzAsICczJzogNTMsICc0JzogNDAsICc1JzogMzEsCisgICAgICAgICc2JzogMjMsICc3JzogMTYsICc4JzogMTAsICc5JzogNX0pOgorICAgICIiIkNvbXB1dGUgYSBsb3dlciBib3VuZCBmb3IgMTAwKmxvZzEwKGMpIGZvciBhIHBvc2l0aXZlIGludGVnZXIgYy4iIiIKKyAgICBpZiBjIDw9IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBhcmd1bWVudCB0byBfbG9nMTBfbGIgc2hvdWxkIGJlIG5vbm5lZ2F0aXZlLiIpCisgICAgc3RyX2MgPSBzdHIoYykKKyAgICByZXR1cm4gMTAwKmxlbihzdHJfYykgLSBjb3JyZWN0aW9uW3N0cl9jWzBdXQorCisjIyMjIyBIZWxwZXIgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PUZhbHNlLCBhbGxvd19mbG9hdD1GYWxzZSk6CisgICAgIiIiQ29udmVydCBvdGhlciB0byBEZWNpbWFsLgorCisgICAgVmVyaWZpZXMgdGhhdCBpdCdzIG9rIHRvIHVzZSBpbiBhbiBpbXBsaWNpdCBjb25zdHJ1Y3Rpb24uCisgICAgSWYgYWxsb3dfZmxvYXQgaXMgdHJ1ZSwgYWxsb3cgY29udmVyc2lvbiBmcm9tIGZsb2F0OyAgdGhpcworICAgIGlzIHVzZWQgaW4gdGhlIGNvbXBhcmlzb24gbWV0aG9kcyAoX19lcV9fIGFuZCBmcmllbmRzKS4KKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIERlY2ltYWwpOgorICAgICAgICByZXR1cm4gb3RoZXIKKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBpbnQpOgorICAgICAgICByZXR1cm4gRGVjaW1hbChvdGhlcikKKyAgICBpZiBhbGxvd19mbG9hdCBhbmQgaXNpbnN0YW5jZShvdGhlciwgZmxvYXQpOgorICAgICAgICByZXR1cm4gRGVjaW1hbC5mcm9tX2Zsb2F0KG90aGVyKQorCisgICAgaWYgcmFpc2VpdDoKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIG90aGVyKQorICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCitkZWYgX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIsIGVxdWFsaXR5X29wPUZhbHNlKToKKyAgICAiIiJHaXZlbiBhIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiBhbmQgYSBQeXRob24gb2JqZWN0IG90aGVyLCByZXR1cm4KKyAgICBhIHBhaXIgKHMsIG8pIG9mIERlY2ltYWwgaW5zdGFuY2VzIHN1Y2ggdGhhdCAicyBvcCBvIiBpcworICAgIGVxdWl2YWxlbnQgdG8gInNlbGYgb3Agb3RoZXIiIGZvciBhbnkgb2YgdGhlIDYgY29tcGFyaXNvbgorICAgIG9wZXJhdG9ycyAib3AiLgorCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGVjaW1hbCk6CisgICAgICAgIHJldHVybiBzZWxmLCBvdGhlcgorCisgICAgIyBDb21wYXJpc29uIHdpdGggYSBSYXRpb25hbCBpbnN0YW5jZSAoYWxzbyBpbmNsdWRlcyBpbnRlZ2Vycyk6CisgICAgIyBzZWxmIG9wIG4vZCA8PT4gc2VsZipkIG9wIG4gKGZvciBuIGFuZCBkIGludGVnZXJzLCBkIHBvc2l0aXZlKS4KKyAgICAjIEEgTmFOIG9yIGluZmluaXR5IGNhbiBiZSBsZWZ0IHVuY2hhbmdlZCB3aXRob3V0IGFmZmVjdGluZyB0aGUKKyAgICAjIGNvbXBhcmlzb24gcmVzdWx0LgorICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLlJhdGlvbmFsKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogb3RoZXIuZGVub21pbmF0b3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwKQorICAgICAgICByZXR1cm4gc2VsZiwgRGVjaW1hbChvdGhlci5udW1lcmF0b3IpCisKKyAgICAjIENvbXBhcmlzb25zIHdpdGggZmxvYXQgYW5kIGNvbXBsZXggdHlwZXMuICA9PSBhbmQgIT0gY29tcGFyaXNvbnMKKyAgICAjIHdpdGggY29tcGxleCBudW1iZXJzIHNob3VsZCBzdWNjZWVkLCByZXR1cm5pbmcgZWl0aGVyIFRydWUgb3IgRmFsc2UKKyAgICAjIGFzIGFwcHJvcHJpYXRlLiAgT3RoZXIgY29tcGFyaXNvbnMgcmV0dXJuIE5vdEltcGxlbWVudGVkLgorICAgIGlmIGVxdWFsaXR5X29wIGFuZCBpc2luc3RhbmNlKG90aGVyLCBfbnVtYmVycy5Db21wbGV4KSBhbmQgb3RoZXIuaW1hZyA9PSAwOgorICAgICAgICBvdGhlciA9IG90aGVyLnJlYWwKKyAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6CisgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgZXF1YWxpdHlfb3A6CisgICAgICAgICAgICBjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgZW5hYmxlZCIpCisgICAgICAgIHJldHVybiBzZWxmLCBEZWNpbWFsLmZyb21fZmxvYXQob3RoZXIpCisgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkLCBOb3RJbXBsZW1lbnRlZAorCisKKyMjIyMjIFNldHVwIFNwZWNpZmljIENvbnRleHRzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgVGhlIGRlZmF1bHQgY29udGV4dCBwcm90b3R5cGUgdXNlZCBieSBDb250ZXh0KCkKKyMgSXMgbXV0YWJsZSwgc28gdGhhdCBuZXcgY29udGV4dHMgY2FuIGhhdmUgZGlmZmVyZW50IGRlZmF1bHQgdmFsdWVzCisKK0RlZmF1bHRDb250ZXh0ID0gQ29udGV4dCgKKyAgICAgICAgcHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLAorICAgICAgICB0cmFwcz1bRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uXSwKKyAgICAgICAgZmxhZ3M9W10sCisgICAgICAgIEVtYXg9OTk5OTk5LAorICAgICAgICBFbWluPS05OTk5OTksCisgICAgICAgIGNhcGl0YWxzPTEsCisgICAgICAgIGNsYW1wPTAKKykKKworIyBQcmUtbWFkZSBhbHRlcm5hdGUgY29udGV4dHMgb2ZmZXJlZCBieSB0aGUgc3BlY2lmaWNhdGlvbgorIyBEb24ndCBjaGFuZ2UgdGhlc2U7IHRoZSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIHNlbGVjdCB0aGVzZQorIyBjb250ZXh0cyBhbmQgYmUgYWJsZSB0byByZXByb2R1Y2UgcmVzdWx0cyBmcm9tIG90aGVyIGltcGxlbWVudGF0aW9ucworIyBvZiB0aGUgc3BlYy4KKworQmFzaWNDb250ZXh0ID0gQ29udGV4dCgKKyAgICAgICAgcHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX1VQLAorICAgICAgICB0cmFwcz1bRGl2aXNpb25CeVplcm8sIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBDbGFtcGVkLCBVbmRlcmZsb3ddLAorICAgICAgICBmbGFncz1bXSwKKykKKworRXh0ZW5kZWRDb250ZXh0ID0gQ29udGV4dCgKKyAgICAgICAgcHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sCisgICAgICAgIHRyYXBzPVtdLAorICAgICAgICBmbGFncz1bXSwKKykKKworCisjIyMjIyBjcnVkIGZvciBwYXJzaW5nIHN0cmluZ3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIFJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIGZvciBwYXJzaW5nIG51bWVyaWMgc3RyaW5ncy4gIEFkZGl0aW9uYWwKKyMgY29tbWVudHM6CisjCisjIDEuIFVuY29tbWVudCB0aGUgdHdvICdccyonIGxpbmVzIHRvIGFsbG93IGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nCisjIHdoaXRlc3BhY2UuICBCdXQgbm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIGRpc2FsbG93cyB3aGl0ZXNwYWNlIGluCisjIGEgbnVtZXJpYyBzdHJpbmcuCisjCisjIDIuIEZvciBmaW5pdGUgbnVtYmVycyAobm90IGluZmluaXRpZXMgYW5kIE5hTnMpIHRoZSBib2R5IG9mIHRoZQorIyBudW1iZXIgYmV0d2VlbiB0aGUgb3B0aW9uYWwgc2lnbiBhbmQgdGhlIG9wdGlvbmFsIGV4cG9uZW50IG11c3QgaGF2ZQorIyBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCwgcG9zc2libHkgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICBUaGUKKyMgbG9va2FoZWFkIGV4cHJlc3Npb24gJyg/PVxkfFwuXGQpJyBjaGVja3MgdGhpcy4KKworaW1wb3J0IHJlCitfcGFyc2VyID0gcmUuY29tcGlsZShyIiIiICAgICAgICAjIEEgbnVtZXJpYyBzdHJpbmcgY29uc2lzdHMgb2Y6CisjICAgIFxzKgorICAgICg/UDxzaWduPlstK10pPyAgICAgICAgICAgICAgIyBhbiBvcHRpb25hbCBzaWduLCBmb2xsb3dlZCBieSBlaXRoZXIuLi4KKyAgICAoCisgICAgICAgICg/PVxkfFwuXGQpICAgICAgICAgICAgICAjIC4uLmEgbnVtYmVyICh3aXRoIGF0IGxlYXN0IG9uZSBkaWdpdCkKKyAgICAgICAgKD9QPGludD5cZCopICAgICAgICAgICAgICMgaGF2aW5nIGEgKHBvc3NpYmx5IGVtcHR5KSBpbnRlZ2VyIHBhcnQKKyAgICAgICAgKFwuKD9QPGZyYWM+XGQqKSk/ICAgICAgICMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgZnJhY3Rpb25hbCBwYXJ0CisgICAgICAgIChFKD9QPGV4cD5bLStdP1xkKykpPyAgICAjIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGV4cG9uZW50LCBvci4uLgorICAgIHwKKyAgICAgICAgSW5mKGluaXR5KT8gICAgICAgICAgICAgICMgLi4uYW4gaW5maW5pdHksIG9yLi4uCisgICAgfAorICAgICAgICAoP1A8c2lnbmFsPnMpPyAgICAgICAgICAgIyAuLi5hbiAob3B0aW9uYWxseSBzaWduYWxpbmcpCisgICAgICAgIE5hTiAgICAgICAgICAgICAgICAgICAgICAjIE5hTgorICAgICAgICAoP1A8ZGlhZz5cZCopICAgICAgICAgICAgIyB3aXRoIChwb3NzaWJseSBlbXB0eSkgZGlhZ25vc3RpYyBpbmZvLgorICAgICkKKyMgICAgXHMqCisgICAgXFoKKyIiIiwgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpLm1hdGNoCisKK19hbGxfemVyb3MgPSByZS5jb21waWxlKCcwKiQnKS5tYXRjaAorX2V4YWN0X2hhbGYgPSByZS5jb21waWxlKCc1MCokJykubWF0Y2gKKworIyMjIyMgUEVQMzEwMSBzdXBwb3J0IGZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGhhdmUgbGl0dGxlIHRvIGRvIHdpdGggdGhlIERlY2ltYWwKKyMgY2xhc3MsIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBiZSByZXVzZWQgb3IgYWRhcHRlZCBmb3Igb3RoZXIgcHVyZQorIyBQeXRob24gbnVtZXJpYyBjbGFzc2VzIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgX19mb3JtYXRfXworIworIyBBIGZvcm1hdCBzcGVjaWZpZXIgZm9yIERlY2ltYWwgbG9va3MgbGlrZToKKyMKKyMgICBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW21pbmltdW13aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KKworX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXJfcmVnZXggPSByZS5jb21waWxlKHIiIiJcQQorKD86CisgICAoP1A8ZmlsbD4uKT8KKyAgICg/UDxhbGlnbj5bPD49Xl0pCispPworKD9QPHNpZ24+Wy0rIF0pPworKD9QPGFsdD5cIyk/CisoP1A8emVyb3BhZD4wKT8KKyg/UDxtaW5pbXVtd2lkdGg+KD8hMClcZCspPworKD9QPHRob3VzYW5kc19zZXA+LCk/CisoPzpcLig/UDxwcmVjaXNpb24+MHwoPyEwKVxkKykpPworKD9QPHR5cGU+W2VFZkZnR24lXSk/CitcWgorIiIiLCByZS5WRVJCT1NFfHJlLkRPVEFMTCkKKworZGVsIHJlCisKKyMgVGhlIGxvY2FsZSBtb2R1bGUgaXMgb25seSBuZWVkZWQgZm9yIHRoZSAnbicgZm9ybWF0IHNwZWNpZmllci4gIFRoZQorIyByZXN0IG9mIHRoZSBQRVAgMzEwMSBjb2RlIGZ1bmN0aW9ucyBxdWl0ZSBoYXBwaWx5IHdpdGhvdXQgaXQsIHNvIHdlCisjIGRvbid0IGNhcmUgdG9vIG11Y2ggaWYgbG9jYWxlIGlzbid0IHByZXNlbnQuCit0cnk6CisgICAgaW1wb3J0IGxvY2FsZSBhcyBfbG9jYWxlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCitkZWYgX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIoZm9ybWF0X3NwZWMsIF9sb2NhbGVjb252PU5vbmUpOgorICAgICIiIlBhcnNlIGFuZCB2YWxpZGF0ZSBhIGZvcm1hdCBzcGVjaWZpZXIuCisKKyAgICBUdXJucyBhIHN0YW5kYXJkIG51bWVyaWMgZm9ybWF0IHNwZWNpZmllciBpbnRvIGEgZGljdCwgd2l0aCB0aGUKKyAgICBmb2xsb3dpbmcgZW50cmllczoKKworICAgICAgZmlsbDogZmlsbCBjaGFyYWN0ZXIgdG8gcGFkIGZpZWxkIHRvIG1pbmltdW0gd2lkdGgKKyAgICAgIGFsaWduOiBhbGlnbm1lbnQgdHlwZSwgZWl0aGVyICc8JywgJz4nLCAnPScgb3IgJ14nCisgICAgICBzaWduOiBlaXRoZXIgJysnLCAnLScgb3IgJyAnCisgICAgICBtaW5pbXVtd2lkdGg6IG5vbm5lZ2F0aXZlIGludGVnZXIgZ2l2aW5nIG1pbmltdW0gd2lkdGgKKyAgICAgIHplcm9wYWQ6IGJvb2xlYW4sIGluZGljYXRpbmcgd2hldGhlciB0byBwYWQgd2l0aCB6ZXJvcworICAgICAgdGhvdXNhbmRzX3NlcDogc3RyaW5nIHRvIHVzZSBhcyB0aG91c2FuZHMgc2VwYXJhdG9yLCBvciAnJworICAgICAgZ3JvdXBpbmc6IGdyb3VwaW5nIGZvciB0aG91c2FuZHMgc2VwYXJhdG9ycywgaW4gZm9ybWF0CisgICAgICAgIHVzZWQgYnkgbG9jYWxlY29udgorICAgICAgZGVjaW1hbF9wb2ludDogc3RyaW5nIHRvIHVzZSBmb3IgZGVjaW1hbCBwb2ludAorICAgICAgcHJlY2lzaW9uOiBub25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBwcmVjaXNpb24sIG9yIE5vbmUKKyAgICAgIHR5cGU6IG9uZSBvZiB0aGUgY2hhcmFjdGVycyAnZUVmRmdHJScsIG9yIE5vbmUKKworICAgICIiIgorICAgIG0gPSBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcl9yZWdleC5tYXRjaChmb3JtYXRfc3BlYykKKyAgICBpZiBtIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorCisgICAgIyBnZXQgdGhlIGRpY3Rpb25hcnkKKyAgICBmb3JtYXRfZGljdCA9IG0uZ3JvdXBkaWN0KCkKKworICAgICMgemVyb3BhZDsgZGVmYXVsdHMgZm9yIGZpbGwgYW5kIGFsaWdubWVudC4gIElmIHplcm8gcGFkZGluZworICAgICMgaXMgcmVxdWVzdGVkLCB0aGUgZmlsbCBhbmQgYWxpZ24gZmllbGRzIHNob3VsZCBiZSBhYnNlbnQuCisgICAgZmlsbCA9IGZvcm1hdF9kaWN0WydmaWxsJ10KKyAgICBhbGlnbiA9IGZvcm1hdF9kaWN0WydhbGlnbiddCisgICAgZm9ybWF0X2RpY3RbJ3plcm9wYWQnXSA9IChmb3JtYXRfZGljdFsnemVyb3BhZCddIGlzIG5vdCBOb25lKQorICAgIGlmIGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ106CisgICAgICAgIGlmIGZpbGwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGaWxsIGNoYXJhY3RlciBjb25mbGljdHMgd2l0aCAnMCciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaW4gZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorICAgICAgICBpZiBhbGlnbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFsaWdubWVudCBjb25mbGljdHMgd2l0aCAnMCcgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcjogIiArIGZvcm1hdF9zcGVjKQorICAgIGZvcm1hdF9kaWN0WydmaWxsJ10gPSBmaWxsIG9yICcgJworICAgICMgUEVQIDMxMDEgb3JpZ2luYWxseSBzcGVjaWZpZWQgdGhhdCB0aGUgZGVmYXVsdCBhbGlnbm1lbnQgc2hvdWxkCisgICAgIyBiZSBsZWZ0OyAgaXQgd2FzIGxhdGVyIGFncmVlZCB0aGF0IHJpZ2h0LWFsaWduZWQgbWFrZXMgbW9yZSBzZW5zZQorICAgICMgZm9yIG51bWVyaWMgdHlwZXMuICBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTY4NTcuCisgICAgZm9ybWF0X2RpY3RbJ2FsaWduJ10gPSBhbGlnbiBvciAnPicKKworICAgICMgZGVmYXVsdCBzaWduIGhhbmRsaW5nOiAnLScgZm9yIG5lZ2F0aXZlLCAnJyBmb3IgcG9zaXRpdmUKKyAgICBpZiBmb3JtYXRfZGljdFsnc2lnbiddIGlzIE5vbmU6CisgICAgICAgIGZvcm1hdF9kaWN0WydzaWduJ10gPSAnLScKKworICAgICMgbWluaW11bXdpZHRoIGRlZmF1bHRzIHRvIDA7IHByZWNpc2lvbiByZW1haW5zIE5vbmUgaWYgbm90IGdpdmVuCisgICAgZm9ybWF0X2RpY3RbJ21pbmltdW13aWR0aCddID0gaW50KGZvcm1hdF9kaWN0WydtaW5pbXVtd2lkdGgnXSBvciAnMCcpCisgICAgaWYgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddIGlzIG5vdCBOb25lOgorICAgICAgICBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gPSBpbnQoZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddKQorCisgICAgIyBpZiBmb3JtYXQgdHlwZSBpcyAnZycgb3IgJ0cnIHRoZW4gYSBwcmVjaXNpb24gb2YgMCBtYWtlcyBsaXR0bGUKKyAgICAjIHNlbnNlOyBjb252ZXJ0IGl0IHRvIDEuICBTYW1lIGlmIGZvcm1hdCB0eXBlIGlzIHVuc3BlY2lmaWVkLgorICAgIGlmIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9PSAwOgorICAgICAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddIGlzIE5vbmUgb3IgZm9ybWF0X2RpY3RbJ3R5cGUnXSBpbiAnZ0duJzoKKyAgICAgICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IDEKKworICAgICMgZGV0ZXJtaW5lIHRob3VzYW5kcyBzZXBhcmF0b3IsIGdyb3VwaW5nLCBhbmQgZGVjaW1hbCBzZXBhcmF0b3IsIGFuZAorICAgICMgYWRkIGFwcHJvcHJpYXRlIGVudHJpZXMgdG8gZm9ybWF0X2RpY3QKKyAgICBpZiBmb3JtYXRfZGljdFsndHlwZSddID09ICduJzoKKyAgICAgICAgIyBhcGFydCBmcm9tIHNlcGFyYXRvcnMsICduJyBiZWhhdmVzIGp1c3QgbGlrZSAnZycKKyAgICAgICAgZm9ybWF0X2RpY3RbJ3R5cGUnXSA9ICdnJworICAgICAgICBpZiBfbG9jYWxlY29udiBpcyBOb25lOgorICAgICAgICAgICAgX2xvY2FsZWNvbnYgPSBfbG9jYWxlLmxvY2FsZWNvbnYoKQorICAgICAgICBpZiBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRXhwbGljaXQgdGhvdXNhbmRzIHNlcGFyYXRvciBjb25mbGljdHMgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInbicgdHlwZSBpbiBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCisgICAgICAgIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gPSBfbG9jYWxlY29udlsndGhvdXNhbmRzX3NlcCddCisgICAgICAgIGZvcm1hdF9kaWN0Wydncm91cGluZyddID0gX2xvY2FsZWNvbnZbJ2dyb3VwaW5nJ10KKyAgICAgICAgZm9ybWF0X2RpY3RbJ2RlY2ltYWxfcG9pbnQnXSA9IF9sb2NhbGVjb252WydkZWNpbWFsX3BvaW50J10KKyAgICBlbHNlOgorICAgICAgICBpZiBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddIGlzIE5vbmU6CisgICAgICAgICAgICBmb3JtYXRfZGljdFsndGhvdXNhbmRzX3NlcCddID0gJycKKyAgICAgICAgZm9ybWF0X2RpY3RbJ2dyb3VwaW5nJ10gPSBbMywgMF0KKyAgICAgICAgZm9ybWF0X2RpY3RbJ2RlY2ltYWxfcG9pbnQnXSA9ICcuJworCisgICAgcmV0dXJuIGZvcm1hdF9kaWN0CisKK2RlZiBfZm9ybWF0X2FsaWduKHNpZ24sIGJvZHksIHNwZWMpOgorICAgICIiIkdpdmVuIGFuIHVucGFkZGVkLCBub24tYWxpZ25lZCBudW1lcmljIHN0cmluZyAnYm9keScgYW5kIHNpZ24KKyAgICBzdHJpbmcgJ3NpZ24nLCBhZGQgcGFkZGluZyBhbmQgYWxpZ25tZW50IGNvbmZvcm1pbmcgdG8gdGhlIGdpdmVuCisgICAgZm9ybWF0IHNwZWNpZmllciBkaWN0aW9uYXJ5ICdzcGVjJyAoYXMgcHJvZHVjZWQgYnkKKyAgICBwYXJzZV9mb3JtYXRfc3BlY2lmaWVyKS4KKworICAgICIiIgorICAgICMgaG93IG11Y2ggZXh0cmEgc3BhY2UgZG8gd2UgaGF2ZSB0byBwbGF5IHdpdGg/CisgICAgbWluaW11bXdpZHRoID0gc3BlY1snbWluaW11bXdpZHRoJ10KKyAgICBmaWxsID0gc3BlY1snZmlsbCddCisgICAgcGFkZGluZyA9IGZpbGwqKG1pbmltdW13aWR0aCAtIGxlbihzaWduKSAtIGxlbihib2R5KSkKKworICAgIGFsaWduID0gc3BlY1snYWxpZ24nXQorICAgIGlmIGFsaWduID09ICc8JzoKKyAgICAgICAgcmVzdWx0ID0gc2lnbiArIGJvZHkgKyBwYWRkaW5nCisgICAgZWxpZiBhbGlnbiA9PSAnPic6CisgICAgICAgIHJlc3VsdCA9IHBhZGRpbmcgKyBzaWduICsgYm9keQorICAgIGVsaWYgYWxpZ24gPT0gJz0nOgorICAgICAgICByZXN1bHQgPSBzaWduICsgcGFkZGluZyArIGJvZHkKKyAgICBlbGlmIGFsaWduID09ICdeJzoKKyAgICAgICAgaGFsZiA9IGxlbihwYWRkaW5nKS8vMgorICAgICAgICByZXN1bHQgPSBwYWRkaW5nWzpoYWxmXSArIHNpZ24gKyBib2R5ICsgcGFkZGluZ1toYWxmOl0KKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbmlzZWQgYWxpZ25tZW50IGZpZWxkJykKKworICAgIHJldHVybiByZXN1bHQKKworZGVmIF9ncm91cF9sZW5ndGhzKGdyb3VwaW5nKToKKyAgICAiIiJDb252ZXJ0IGEgbG9jYWxlY29udi1zdHlsZSBncm91cGluZyBpbnRvIGEgKHBvc3NpYmx5IGluZmluaXRlKQorICAgIGl0ZXJhYmxlIG9mIGludGVnZXJzIHJlcHJlc2VudGluZyBncm91cCBsZW5ndGhzLgorCisgICAgIiIiCisgICAgIyBUaGUgcmVzdWx0IGZyb20gbG9jYWxlY29udigpWydncm91cGluZyddLCBhbmQgdGhlIGlucHV0IHRvIHRoaXMKKyAgICAjIGZ1bmN0aW9uLCBzaG91bGQgYmUgYSBsaXN0IG9mIGludGVnZXJzIGluIG9uZSBvZiB0aGUKKyAgICAjIGZvbGxvd2luZyB0aHJlZSBmb3JtczoKKyAgICAjCisgICAgIyAgICgxKSBhbiBlbXB0eSBsaXN0LCBvcgorICAgICMgICAoMikgbm9uZW1wdHkgbGlzdCBvZiBwb3NpdGl2ZSBpbnRlZ2VycyArIFswXQorICAgICMgICAoMykgbGlzdCBvZiBwb3NpdGl2ZSBpbnRlZ2VycyArIFtsb2NhbGUuQ0hBUl9NQVhdLCBvcgorCisgICAgZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluLCByZXBlYXQKKyAgICBpZiBub3QgZ3JvdXBpbmc6CisgICAgICAgIHJldHVybiBbXQorICAgIGVsaWYgZ3JvdXBpbmdbLTFdID09IDAgYW5kIGxlbihncm91cGluZykgPj0gMjoKKyAgICAgICAgcmV0dXJuIGNoYWluKGdyb3VwaW5nWzotMV0sIHJlcGVhdChncm91cGluZ1stMl0pKQorICAgIGVsaWYgZ3JvdXBpbmdbLTFdID09IF9sb2NhbGUuQ0hBUl9NQVg6CisgICAgICAgIHJldHVybiBncm91cGluZ1s6LTFdCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndW5yZWNvZ25pc2VkIGZvcm1hdCBmb3IgZ3JvdXBpbmcnKQorCitkZWYgX2luc2VydF90aG91c2FuZHNfc2VwKGRpZ2l0cywgc3BlYywgbWluX3dpZHRoPTEpOgorICAgICIiIkluc2VydCB0aG91c2FuZHMgc2VwYXJhdG9ycyBpbnRvIGEgZGlnaXQgc3RyaW5nLgorCisgICAgc3BlYyBpcyBhIGRpY3Rpb25hcnkgd2hvc2Uga2V5cyBzaG91bGQgaW5jbHVkZSAndGhvdXNhbmRzX3NlcCcgYW5kCisgICAgJ2dyb3VwaW5nJzsgdHlwaWNhbGx5IGl0J3MgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBmb3JtYXQKKyAgICBzcGVjaWZpZXIgdXNpbmcgX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIuCisKKyAgICBUaGUgbWluX3dpZHRoIGtleXdvcmQgYXJndW1lbnQgZ2l2ZXMgdGhlIG1pbmltdW0gbGVuZ3RoIG9mIHRoZQorICAgIHJlc3VsdCwgd2hpY2ggd2lsbCBiZSBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyBpZiBuZWNlc3NhcnkuCisKKyAgICBJZiBuZWNlc3NhcnksIHRoZSB6ZXJvIHBhZGRpbmcgYWRkcyBhbiBleHRyYSAnMCcgb24gdGhlIGxlZnQgdG8KKyAgICBhdm9pZCBhIGxlYWRpbmcgdGhvdXNhbmRzIHNlcGFyYXRvci4gIEZvciBleGFtcGxlLCBpbnNlcnRpbmcKKyAgICBjb21tYXMgZXZlcnkgdGhyZWUgZGlnaXRzIGluICcxMjM0NTYnLCB3aXRoIG1pbl93aWR0aD04LCBnaXZlcworICAgICcwLDEyMyw0NTYnLCBldmVuIHRob3VnaCB0aGF0IGhhcyBsZW5ndGggOS4KKworICAgICIiIgorCisgICAgc2VwID0gc3BlY1sndGhvdXNhbmRzX3NlcCddCisgICAgZ3JvdXBpbmcgPSBzcGVjWydncm91cGluZyddCisKKyAgICBncm91cHMgPSBbXQorICAgIGZvciBsIGluIF9ncm91cF9sZW5ndGhzKGdyb3VwaW5nKToKKyAgICAgICAgaWYgbCA8PSAwOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZ3JvdXAgbGVuZ3RoIHNob3VsZCBiZSBwb3NpdGl2ZSIpCisgICAgICAgICMgbWF4KC4uLiwgMSkgZm9yY2VzIGF0IGxlYXN0IDEgZGlnaXQgdG8gdGhlIGxlZnQgb2YgYSBzZXBhcmF0b3IKKyAgICAgICAgbCA9IG1pbihtYXgobGVuKGRpZ2l0cyksIG1pbl93aWR0aCwgMSksIGwpCisgICAgICAgIGdyb3Vwcy5hcHBlbmQoJzAnKihsIC0gbGVuKGRpZ2l0cykpICsgZGlnaXRzWy1sOl0pCisgICAgICAgIGRpZ2l0cyA9IGRpZ2l0c1s6LWxdCisgICAgICAgIG1pbl93aWR0aCAtPSBsCisgICAgICAgIGlmIG5vdCBkaWdpdHMgYW5kIG1pbl93aWR0aCA8PSAwOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbWluX3dpZHRoIC09IGxlbihzZXApCisgICAgZWxzZToKKyAgICAgICAgbCA9IG1heChsZW4oZGlnaXRzKSwgbWluX3dpZHRoLCAxKQorICAgICAgICBncm91cHMuYXBwZW5kKCcwJyoobCAtIGxlbihkaWdpdHMpKSArIGRpZ2l0c1stbDpdKQorICAgIHJldHVybiBzZXAuam9pbihyZXZlcnNlZChncm91cHMpKQorCitkZWYgX2Zvcm1hdF9zaWduKGlzX25lZ2F0aXZlLCBzcGVjKToKKyAgICAiIiJEZXRlcm1pbmUgc2lnbiBjaGFyYWN0ZXIuIiIiCisKKyAgICBpZiBpc19uZWdhdGl2ZToKKyAgICAgICAgcmV0dXJuICctJworICAgIGVsaWYgc3BlY1snc2lnbiddIGluICcgKyc6CisgICAgICAgIHJldHVybiBzcGVjWydzaWduJ10KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycKKworZGVmIF9mb3JtYXRfbnVtYmVyKGlzX25lZ2F0aXZlLCBpbnRwYXJ0LCBmcmFjcGFydCwgZXhwLCBzcGVjKToKKyAgICAiIiJGb3JtYXQgYSBudW1iZXIsIGdpdmVuIHRoZSBmb2xsb3dpbmcgZGF0YToKKworICAgIGlzX25lZ2F0aXZlOiB0cnVlIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIGVsc2UgZmFsc2UKKyAgICBpbnRwYXJ0OiBzdHJpbmcgb2YgZGlnaXRzIHRoYXQgbXVzdCBhcHBlYXIgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50CisgICAgZnJhY3BhcnQ6IHN0cmluZyBvZiBkaWdpdHMgdGhhdCBtdXN0IGNvbWUgYWZ0ZXIgdGhlIHBvaW50CisgICAgZXhwOiBleHBvbmVudCwgYXMgYW4gaW50ZWdlcgorICAgIHNwZWM6IGRpY3Rpb25hcnkgcmVzdWx0aW5nIGZyb20gcGFyc2luZyB0aGUgZm9ybWF0IHNwZWNpZmllcgorCisgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBpbmZvcm1hdGlvbiBpbiBzcGVjIHRvOgorICAgICAgaW5zZXJ0IHNlcGFyYXRvcnMgKGRlY2ltYWwgc2VwYXJhdG9yIGFuZCB0aG91c2FuZHMgc2VwYXJhdG9ycykKKyAgICAgIGZvcm1hdCB0aGUgc2lnbgorICAgICAgZm9ybWF0IHRoZSBleHBvbmVudAorICAgICAgYWRkIHRyYWlsaW5nICclJyBmb3IgdGhlICclJyB0eXBlCisgICAgICB6ZXJvLXBhZCBpZiBuZWNlc3NhcnkKKyAgICAgIGZpbGwgYW5kIGFsaWduIGlmIG5lY2Vzc2FyeQorICAgICIiIgorCisgICAgc2lnbiA9IF9mb3JtYXRfc2lnbihpc19uZWdhdGl2ZSwgc3BlYykKKworICAgIGlmIGZyYWNwYXJ0IG9yIHNwZWNbJ2FsdCddOgorICAgICAgICBmcmFjcGFydCA9IHNwZWNbJ2RlY2ltYWxfcG9pbnQnXSArIGZyYWNwYXJ0CisKKyAgICBpZiBleHAgIT0gMCBvciBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKKyAgICAgICAgZWNoYXIgPSB7J0UnOiAnRScsICdlJzogJ2UnLCAnRyc6ICdFJywgJ2cnOiAnZSd9W3NwZWNbJ3R5cGUnXV0KKyAgICAgICAgZnJhY3BhcnQgKz0gInswfXsxOit9Ii5mb3JtYXQoZWNoYXIsIGV4cCkKKyAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgorICAgICAgICBmcmFjcGFydCArPSAnJScKKworICAgIGlmIHNwZWNbJ3plcm9wYWQnXToKKyAgICAgICAgbWluX3dpZHRoID0gc3BlY1snbWluaW11bXdpZHRoJ10gLSBsZW4oZnJhY3BhcnQpIC0gbGVuKHNpZ24pCisgICAgZWxzZToKKyAgICAgICAgbWluX3dpZHRoID0gMAorICAgIGludHBhcnQgPSBfaW5zZXJ0X3Rob3VzYW5kc19zZXAoaW50cGFydCwgc3BlYywgbWluX3dpZHRoKQorCisgICAgcmV0dXJuIF9mb3JtYXRfYWxpZ24oc2lnbiwgaW50cGFydCtmcmFjcGFydCwgc3BlYykKKworCisjIyMjIyBVc2VmdWwgQ29uc3RhbnRzIChpbnRlcm5hbCB1c2Ugb25seSkgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBSZXVzYWJsZSBkZWZhdWx0cworX0luZmluaXR5ID0gRGVjaW1hbCgnSW5mJykKK19OZWdhdGl2ZUluZmluaXR5ID0gRGVjaW1hbCgnLUluZicpCitfTmFOID0gRGVjaW1hbCgnTmFOJykKK19aZXJvID0gRGVjaW1hbCgwKQorX09uZSA9IERlY2ltYWwoMSkKK19OZWdhdGl2ZU9uZSA9IERlY2ltYWwoLTEpCisKKyMgX1NpZ25lZEluZmluaXR5W3NpZ25dIGlzIGluZmluaXR5IHcvIHRoYXQgc2lnbgorX1NpZ25lZEluZmluaXR5ID0gKF9JbmZpbml0eSwgX05lZ2F0aXZlSW5maW5pdHkpCisKKyMgQ29uc3RhbnRzIHJlbGF0ZWQgdG8gdGhlIGhhc2ggaW1wbGVtZW50YXRpb247ICBoYXNoKHgpIGlzIGJhc2VkCisjIG9uIHRoZSByZWR1Y3Rpb24gb2YgeCBtb2R1bG8gX1B5SEFTSF9NT0RVTFVTCitfUHlIQVNIX01PRFVMVVMgPSBzeXMuaGFzaF9pbmZvLm1vZHVsdXMKKyMgaGFzaCB2YWx1ZXMgdG8gdXNlIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdGllcywgYW5kIG5hbnMKK19QeUhBU0hfSU5GID0gc3lzLmhhc2hfaW5mby5pbmYKK19QeUhBU0hfTkFOID0gc3lzLmhhc2hfaW5mby5uYW4KKworIyBfUHlIQVNIXzEwSU5WIGlzIHRoZSBpbnZlcnNlIG9mIDEwIG1vZHVsbyB0aGUgcHJpbWUgX1B5SEFTSF9NT0RVTFVTCitfUHlIQVNIXzEwSU5WID0gcG93KDEwLCBfUHlIQVNIX01PRFVMVVMgLSAyLCBfUHlIQVNIX01PRFVMVVMpCitkZWwgc3lzCmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggYzBiNWZkMS4uZjQ3ZGY5MSAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNiwxMSArNiwxOCBAQAogaW1wb3J0IGFiYwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCitpbXBvcnQgYXJyYXkKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCiAjIEltcG9ydCBfdGhyZWFkIGluc3RlYWQgb2YgdGhyZWFkaW5nIHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jawogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZyb20gX2R1bW15X3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCitpZiBzeXMucGxhdGZvcm0gaW4geyd3aW4zMicsICdjeWd3aW4nfToKKyAgICBmcm9tIG1zdmNydCBpbXBvcnQgc2V0bW9kZSBhcyBfc2V0bW9kZQorZWxzZToKKyAgICBfc2V0bW9kZSA9IE5vbmUKIAogaW1wb3J0IGlvCiBmcm9tIGlvIGltcG9ydCAoX19hbGxfXywgU0VFS19TRVQsIFNFRUtfQ1VSLCBTRUVLX0VORCkKQEAgLTI1Niw3ICsyNjMsNyBAQAogICAgIFRyaWNrIHNvIHRoYXQgb3BlbiB3b24ndCBiZWNvbWUgYSBib3VuZCBtZXRob2Qgd2hlbiBzdG9yZWQKICAgICBhcyBhIGNsYXNzIHZhcmlhYmxlIChhcyBkYm0uZHVtYiBkb2VzKS4KIAotICAgIFNlZSBpbml0c3RkaW8oKSBpbiBQeXRob24vcHl0aG9ucnVuLmMuCisgICAgU2VlIGluaXRzdGRpbygpIGluIFB5dGhvbi9weWxpZmVjeWNsZS5jLgogICAgICIiIgogICAgIF9fZG9jX18gPSBEb2NEZXNjcmlwdG9yKCkKIApAQCAtNjYyLDE2ICs2NjksMzMgQEAKICAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubwogICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCiAgICAgICAgICIiIgotICAgICAgICAjIFhYWCBUaGlzIG91Z2h0IHRvIHdvcmsgd2l0aCBhbnl0aGluZyB0aGF0IHN1cHBvcnRzIHRoZSBidWZmZXIgQVBJCi0gICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKGIpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50byhiLCByZWFkMT1GYWxzZSkKKworICAgIGRlZiByZWFkaW50bzEoc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gKmIqLCB1c2luZyBhdCBtb3N0IG9uZSBzeXN0ZW0gY2FsbAorCisgICAgICAgIFJldHVybnMgYW4gaW50IHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRikuCisKKyAgICAgICAgUmFpc2VzIEJsb2NraW5nSU9FcnJvciBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGhhcyBubworICAgICAgICBkYXRhIGF0IHRoZSBtb21lbnQuCisgICAgICAgICIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkaW50byhiLCByZWFkMT1UcnVlKQorCisgICAgZGVmIF9yZWFkaW50byhzZWxmLCBiLCByZWFkMSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGIsIG1lbW9yeXZpZXcpOgorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgYiA9IGIuY2FzdCgnQicpCisKKyAgICAgICAgaWYgcmVhZDE6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkMShsZW4oYikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5yZWFkKGxlbihiKSkKICAgICAgICAgbiA9IGxlbihkYXRhKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBiWzpuXSA9IGRhdGEKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBpbXBvcnQgYXJyYXkKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGIsIGFycmF5LmFycmF5KToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnIKLSAgICAgICAgICAgIGJbOm5dID0gYXJyYXkuYXJyYXkoJ2InLCBkYXRhKQorCisgICAgICAgIGJbOm5dID0gZGF0YQorCiAgICAgICAgIHJldHVybiBuCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgYik6CkBAIC03OTAsMTMgKzgxNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGNsc25hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICBtb2RuYW1lID0gc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXworICAgICAgICBjbHNuYW1lID0gc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiAiPF9weWlvLnswfT4iLmZvcm1hdChjbHNuYW1lKQorICAgICAgICAgICAgcmV0dXJuICI8e30ue30+Ii5mb3JtYXQobW9kbmFtZSwgY2xzbmFtZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiPF9weWlvLnswfSBuYW1lPXsxIXJ9PiIuZm9ybWF0KGNsc25hbWUsIG5hbWUpCisgICAgICAgICAgICByZXR1cm4gIjx7fS57fSBuYW1lPXshcn0+Ii5mb3JtYXQobW9kbmFtZSwgY2xzbmFtZSwgbmFtZSkKIAogICAgICMjIyBMb3dlci1sZXZlbCBBUElzICMjIwogCkBAIC05OTMsMTAgKzEwMTgsNyBAQAogICAgICAgICAgICAgY3VycmVudF9zaXplID0gMAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFJlYWQgdW50aWwgRU9GIG9yIHVudGlsIHJlYWQoKSB3b3VsZCBibG9jay4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKCkKICAgICAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgICAgICBicmVhawpAQCAtMTAxNSwxMCArMTAzNyw3IEBACiAgICAgICAgIGNodW5rcyA9IFtidWZbcG9zOl1dCiAgICAgICAgIHdhbnRlZCA9IG1heChzZWxmLmJ1ZmZlcl9zaXplLCBuKQogICAgICAgICB3aGlsZSBhdmFpbCA8IG46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWQod2FudGVkKQogICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgIG5vZGF0YV92YWwgPSBjaHVuawogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMDQ3LDEyICsxMDY2LDcgQEAKICAgICAgICAgaGF2ZSA9IGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcwogICAgICAgICBpZiBoYXZlIDwgd2FudCBvciBoYXZlIDw9IDA6CiAgICAgICAgICAgICB0b19yZWFkID0gc2VsZi5idWZmZXJfc2l6ZSAtIGhhdmUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5yYXcucmVhZCh0b19yZWFkKQogICAgICAgICAgICAgaWYgY3VycmVudDoKICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2J1ZiA9IHNlbGYuX3JlYWRfYnVmW3NlbGYuX3JlYWRfcG9zOl0gKyBjdXJyZW50CiAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSAwCkBAIC0xMDcxLDYgKzEwODUsNTggQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VubG9ja2VkKAogICAgICAgICAgICAgICAgIG1pbihzaXplLCBsZW4oc2VsZi5fcmVhZF9idWYpIC0gc2VsZi5fcmVhZF9wb3MpKQogCisgICAgIyBJbXBsZW1lbnRpbmcgcmVhZGludG8oKSBhbmQgcmVhZGludG8xKCkgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSAod2UKKyAgICAjIGNvdWxkIHJlbHkgb24gdGhlIGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZgorICAgICMgcmVhZCgpIGFuZCByZWFkMSgpKS4gV2UgZG8gaXQgYW55d2F5IHRvIGtlZXAgdGhlIF9weWlvIGltcGxlbWVudGF0aW9uCisgICAgIyBzaW1pbGFyIHRvIHRoZSBpbyBpbXBsZW1lbnRhdGlvbiAod2hpY2ggaW1wbGVtZW50cyB0aGUgbWV0aG9kcyBmb3IKKyAgICAjIHBlcmZvcm1hbmNlIHJlYXNvbnMpLgorICAgIGRlZiBfcmVhZGludG8oc2VsZiwgYnVmLCByZWFkMSk6CisgICAgICAgICIiIlJlYWQgZGF0YSBpbnRvICpidWYqIHdpdGggYXQgbW9zdCBvbmUgc3lzdGVtIGNhbGwuIiIiCisKKyAgICAgICAgaWYgbGVuKGJ1ZikgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgIyBOZWVkIHRvIGNyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IG9mIHR5cGUgJ2InLCBvdGhlcndpc2UKKyAgICAgICAgIyB3ZSBtYXkgbm90IGJlIGFibGUgdG8gYXNzaWduIGJ5dGVzIHRvIGl0LCBhbmQgc2xpY2luZyBpdAorICAgICAgICAjIHdvdWxkIGNyZWF0ZSBhIG5ldyBvYmplY3QuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJ1ZiwgbWVtb3J5dmlldyk6CisgICAgICAgICAgICBidWYgPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgYnVmID0gYnVmLmNhc3QoJ0InKQorCisgICAgICAgIHdyaXR0ZW4gPSAwCisgICAgICAgIHdpdGggc2VsZi5fcmVhZF9sb2NrOgorICAgICAgICAgICAgd2hpbGUgd3JpdHRlbiA8IGxlbihidWYpOgorCisgICAgICAgICAgICAgICAgIyBGaXJzdCB0cnkgdG8gcmVhZCBmcm9tIGludGVybmFsIGJ1ZmZlcgorICAgICAgICAgICAgICAgIGF2YWlsID0gbWluKGxlbihzZWxmLl9yZWFkX2J1ZikgLSBzZWxmLl9yZWFkX3BvcywgbGVuKGJ1ZikpCisgICAgICAgICAgICAgICAgaWYgYXZhaWw6CisgICAgICAgICAgICAgICAgICAgIGJ1Zlt3cml0dGVuOndyaXR0ZW4rYXZhaWxdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9idWZbc2VsZi5fcmVhZF9wb3M6c2VsZi5fcmVhZF9wb3MrYXZhaWxdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zICs9IGF2YWlsCisgICAgICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gYXZhaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgd3JpdHRlbiA9PSBsZW4oYnVmKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICAgICAjIElmIHJlbWFpbmluZyBzcGFjZSBpbiBjYWxsZXJzIGJ1ZmZlciBpcyBsYXJnZXIgdGhhbgorICAgICAgICAgICAgICAgICMgaW50ZXJuYWwgYnVmZmVyLCByZWFkIGRpcmVjdGx5IGludG8gY2FsbGVycyBidWZmZXIKKyAgICAgICAgICAgICAgICBpZiBsZW4oYnVmKSAtIHdyaXR0ZW4gPiBzZWxmLmJ1ZmZlcl9zaXplOgorICAgICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcucmVhZGludG8oYnVmW3dyaXR0ZW46XSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG46CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAjIGVvZgorICAgICAgICAgICAgICAgICAgICB3cml0dGVuICs9IG4KKworICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHJlZmlsbCBpbnRlcm5hbCBidWZmZXIgLSB1bmxlc3Mgd2UncmUKKyAgICAgICAgICAgICAgICAjIGluIHJlYWQxIG1vZGUgYW5kIGFscmVhZHkgZ290IHNvbWUgZGF0YQorICAgICAgICAgICAgICAgIGVsaWYgbm90IChyZWFkMSBhbmQgd3JpdHRlbik6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wZWVrX3VubG9ja2VkKDEpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBlb2YKKworICAgICAgICAgICAgICAgICMgSW4gcmVhZGludG8xIG1vZGUsIHJldHVybiBhcyBzb29uIGFzIHdlIGhhdmUgc29tZSBkYXRhCisgICAgICAgICAgICAgICAgaWYgcmVhZDEgYW5kIHdyaXR0ZW46CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIHdyaXR0ZW4KKwogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpIC0gbGVuKHNlbGYuX3JlYWRfYnVmKSArIHNlbGYuX3JlYWRfcG9zCiAKQEAgLTExNDksOCArMTIxNSw2IEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcud3JpdGUoc2VsZi5fd3JpdGVfYnVmKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzZWxmLnJhdyBzaG91bGQgaW1wbGVtZW50IFJhd0lPQmFzZTogaXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCByYWlzZSBCbG9ja2luZ0lPRXJyb3IiKQpAQCAtMTIyMCw2ICsxMjg0LDkgQEAKICAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJlYWRlci5yZWFkMShzaXplKQogCisgICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGVyLnJlYWRpbnRvMShiKQorCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5yZWFkZXIucmVhZGFibGUoKQogCkBAIC0xMzA0LDYgKzEzNzEsMTAgQEAKICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkMShzZWxmLCBzaXplKQogCisgICAgZGVmIHJlYWRpbnRvMShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgIHJldHVybiBCdWZmZXJlZFJlYWRlci5yZWFkaW50bzEoc2VsZiwgYikKKwogICAgIGRlZiB3cml0ZShzZWxmLCBiKToKICAgICAgICAgaWYgc2VsZi5fcmVhZF9idWY6CiAgICAgICAgICAgICAjIFVuZG8gcmVhZGFoZWFkCkBAIC0xMzEzLDYgKzEzODQsMzQ1IEBACiAgICAgICAgIHJldHVybiBCdWZmZXJlZFdyaXRlci53cml0ZShzZWxmLCBiKQogCiAKK2NsYXNzIEZpbGVJTyhSYXdJT0Jhc2UpOgorICAgIF9mZCA9IC0xCisgICAgX2NyZWF0ZWQgPSBGYWxzZQorICAgIF9yZWFkYWJsZSA9IEZhbHNlCisgICAgX3dyaXRhYmxlID0gRmFsc2UKKyAgICBfYXBwZW5kaW5nID0gRmFsc2UKKyAgICBfc2Vla2FibGUgPSBOb25lCisgICAgX2Nsb3NlZmQgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0ncicsIGNsb3NlZmQ9VHJ1ZSwgb3BlbmVyPU5vbmUpOgorICAgICAgICAiIiJPcGVuIGEgZmlsZS4gIFRoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCisgICAgICAgIHdyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQKKyAgICAgICAgZG9lc24ndCBleGlzdCB3aGVuIG9wZW5lZCBmb3Igd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkCisgICAgICAgIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQorICAgICAgICBleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcgaW1wbGllcworICAgICAgICB3cml0aW5nIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gJ3cnLiBBZGQgYSAnKycgdG8gdGhlIG1vZGUKKyAgICAgICAgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieQorICAgICAgICBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKKyAgICAgICAgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS4KKyAgICAgICAgKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKgorICAgICAgICByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fZmQgPj0gMDoKKyAgICAgICAgICAgICMgSGF2ZSB0byBjbG9zZSB0aGUgZXhpc3RpbmcgZmlsZSBmaXJzdC4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fZmQgPSAtMQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgZmxvYXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQnKQorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIGludCk6CisgICAgICAgICAgICBmZCA9IGZpbGUKKyAgICAgICAgICAgIGlmIGZkIDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3InKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmQgPSAtMQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ludmFsaWQgbW9kZTogJXMnICUgKG1vZGUsKSkKKyAgICAgICAgaWYgbm90IHNldChtb2RlKSA8PSBzZXQoJ3hyd2FiKycpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignaW52YWxpZCBtb2RlOiAlcycgJSAobW9kZSwpKQorICAgICAgICBpZiBzdW0oYyBpbiAncndheCcgZm9yIGMgaW4gbW9kZSkgIT0gMSBvciBtb2RlLmNvdW50KCcrJykgPiAxOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RlIGFuZCBhdCBtb3N0IG9uZSBwbHVzJykKKworICAgICAgICBpZiAneCcgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX2NyZWF0ZWQgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKyAgICAgICAgICAgIGZsYWdzID0gb3MuT19FWENMIHwgb3MuT19DUkVBVAorICAgICAgICBlbGlmICdyJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IDAKKyAgICAgICAgZWxpZiAndycgaW4gbW9kZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRhYmxlID0gVHJ1ZQorICAgICAgICAgICAgZmxhZ3MgPSBvcy5PX0NSRUFUIHwgb3MuT19UUlVOQworICAgICAgICBlbGlmICdhJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGFibGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9hcHBlbmRpbmcgPSBUcnVlCisgICAgICAgICAgICBmbGFncyA9IG9zLk9fQVBQRU5EIHwgb3MuT19DUkVBVAorCisgICAgICAgIGlmICcrJyBpbiBtb2RlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0YWJsZSA9IFRydWUKKworICAgICAgICBpZiBzZWxmLl9yZWFkYWJsZSBhbmQgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1JEV1IKKyAgICAgICAgZWxpZiBzZWxmLl9yZWFkYWJsZToKKyAgICAgICAgICAgIGZsYWdzIHw9IG9zLk9fUkRPTkxZCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmbGFncyB8PSBvcy5PX1dST05MWQorCisgICAgICAgIGZsYWdzIHw9IGdldGF0dHIob3MsICdPX0JJTkFSWScsIDApCisKKyAgICAgICAgbm9pbmhlcml0X2ZsYWcgPSAoZ2V0YXR0cihvcywgJ09fTk9JTkhFUklUJywgMCkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihvcywgJ09fQ0xPRVhFQycsIDApKQorICAgICAgICBmbGFncyB8PSBub2luaGVyaXRfZmxhZworCisgICAgICAgIG93bmVkX2ZkID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBmZCA8IDA6CisgICAgICAgICAgICAgICAgaWYgbm90IGNsb3NlZmQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZScpCisgICAgICAgICAgICAgICAgaWYgb3BlbmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihmaWxlLCBmbGFncywgMG82NjYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcGVuZXIoZmlsZSwgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZkLCBpbnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBpbnRlZ2VyIGZyb20gb3BlbmVyJykKKyAgICAgICAgICAgICAgICAgICAgaWYgZmQgPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yJykKKyAgICAgICAgICAgICAgICBvd25lZF9mZCA9IGZkCisgICAgICAgICAgICAgICAgaWYgbm90IG5vaW5oZXJpdF9mbGFnOgorICAgICAgICAgICAgICAgICAgICBvcy5zZXRfaW5oZXJpdGFibGUoZmQsIEZhbHNlKQorCisgICAgICAgICAgICBzZWxmLl9jbG9zZWZkID0gY2xvc2VmZAorICAgICAgICAgICAgZmRmc3RhdCA9IG9zLmZzdGF0KGZkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHN0YXQuU19JU0RJUihmZGZzdGF0LnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJc0FEaXJlY3RvcnlFcnJvcihlcnJuby5FSVNESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0cmVycm9yKGVycm5vLkVJU0RJUiksIGZpbGUpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgdGhlIEF0dHJpYnVlRXJyb3IgaWYgc3RhdC5TX0lTRElSIG9yIGVycm5vLkVJU0RJUgorICAgICAgICAgICAgICAgICMgZG9uJ3QgZXhpc3QuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5fYmxrc2l6ZSA9IGdldGF0dHIoZmRmc3RhdCwgJ3N0X2Jsa3NpemUnLCAwKQorICAgICAgICAgICAgaWYgc2VsZi5fYmxrc2l6ZSA8PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX2Jsa3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisKKyAgICAgICAgICAgIGlmIF9zZXRtb2RlOgorICAgICAgICAgICAgICAgICMgZG9uJ3QgdHJhbnNsYXRlIG5ld2xpbmVzIChcclxuIDw9PiBcbikKKyAgICAgICAgICAgICAgICBfc2V0bW9kZShmZCwgb3MuT19CSU5BUlkpCisKKyAgICAgICAgICAgIHNlbGYubmFtZSA9IGZpbGUKKyAgICAgICAgICAgIGlmIHNlbGYuX2FwcGVuZGluZzoKKyAgICAgICAgICAgICAgICAjIEZvciBjb25zaXN0ZW50IGJlaGF2aW91ciwgd2UgZXhwbGljaXRseSBzZWVrIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZW5kIG9mIGZpbGUgKG90aGVyd2lzZSwgaXQgbWlnaHQgYmUgZG9uZSBvbmx5IG9uIHRoZQorICAgICAgICAgICAgICAgICMgZmlyc3Qgd3JpdGUoKSkuCisgICAgICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIFNFRUtfRU5EKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpZiBvd25lZF9mZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShvd25lZF9mZCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuX2ZkID0gZmQKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VuY2xvc2VkIGZpbGUgJXInICUgKHNlbGYsKSwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBjbGFzc19uYW1lID0gJyVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pCisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmV0dXJuICc8JXMgW2Nsb3NlZF0+JyAlIGNsYXNzX25hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gKCc8JXMgZmQ9JWQgbW9kZT0lciBjbG9zZWZkPSVyPicgJQorICAgICAgICAgICAgICAgICAgICAoY2xhc3NfbmFtZSwgc2VsZi5fZmQsIHNlbGYubW9kZSwgc2VsZi5fY2xvc2VmZCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gKCc8JXMgbmFtZT0lciBtb2RlPSVyIGNsb3NlZmQ9JXI+JyAlCisgICAgICAgICAgICAgICAgICAgIChjbGFzc19uYW1lLCBuYW1lLCBzZWxmLm1vZGUsIHNlbGYuX2Nsb3NlZmQpKQorCisgICAgZGVmIF9jaGVja1JlYWRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbignRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZycpCisKKyAgICBkZWYgX2NoZWNrV3JpdGFibGUoc2VsZiwgbXNnPU5vbmUpOgorICAgICAgICBpZiBub3Qgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbignRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZycpCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKKyAgICAgICAgT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQKKyAgICAgICAgSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgTm9uZSBpZiBubyBkYXRhIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrUmVhZGFibGUoKQorICAgICAgICBpZiBzaXplIGlzIE5vbmUgb3Igc2l6ZSA8IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG9zLnJlYWQoc2VsZi5fZmQsIHNpemUpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHJlYWRhbGwoc2VsZik6CisgICAgICAgICIiIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgZmlsZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCisKKyAgICAgICAgSW4gbm9uLWJsb2NraW5nIG1vZGUsIHJldHVybnMgYXMgbXVjaCBhcyBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsCisgICAgICAgIG9yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tSZWFkYWJsZSgpCisgICAgICAgIGJ1ZnNpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvcyA9IG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKKyAgICAgICAgICAgIGVuZCA9IG9zLmZzdGF0KHNlbGYuX2ZkKS5zdF9zaXplCisgICAgICAgICAgICBpZiBlbmQgPj0gcG9zOgorICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBlbmQgLSBwb3MgKyAxCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHJlc3VsdCA9IGJ5dGVhcnJheSgpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSA+PSBidWZzaXplOgorICAgICAgICAgICAgICAgIGJ1ZnNpemUgPSBsZW4ocmVzdWx0KQorICAgICAgICAgICAgICAgIGJ1ZnNpemUgKz0gbWF4KGJ1ZnNpemUsIERFRkFVTFRfQlVGRkVSX1NJWkUpCisgICAgICAgICAgICBuID0gYnVmc2l6ZSAtIGxlbihyZXN1bHQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2h1bmsgPSBvcy5yZWFkKHNlbGYuX2ZkLCBuKQorICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIG5vdCBjaHVuazogIyByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVzdWx0ICs9IGNodW5rCisKKyAgICAgICAgcmV0dXJuIGJ5dGVzKHJlc3VsdCkKKworICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4iIiIKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikuY2FzdCgnQicpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQobGVuKG0pKQorICAgICAgICBuID0gbGVuKGRhdGEpCisgICAgICAgIG1bOm5dID0gZGF0YQorICAgICAgICByZXR1cm4gbgorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICAiIiJXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi4KKworICAgICAgICBPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KKyAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiAgSW4gbm9uLWJsb2NraW5nIG1vZGUsCisgICAgICAgIHJldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrV3JpdGFibGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gb3Mud3JpdGUoc2VsZi5fZmQsIGIpCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHNlZWsoc2VsZiwgcG9zLCB3aGVuY2U9U0VFS19TRVQpOgorICAgICAgICAiIiJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIEFyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8KKyAgICAgICAgU0VFS19TRVQgb3IgMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0IHNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzCisgICAgICAgIGFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSwKKyAgICAgICAgYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoCisgICAgICAgIG1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS4KKworICAgICAgICBOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwb3MsIGZsb2F0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYW4gaW50ZWdlciBpcyByZXF1aXJlZCcpCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmxzZWVrKHNlbGYuX2ZkLCBwb3MsIHdoZW5jZSkKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICAiIiJ0ZWxsKCkgLT4gaW50LiAgQ3VycmVudCBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIENhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmxzZWVrKHNlbGYuX2ZkLCAwLCBTRUVLX0NVUikKKworICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuCisKKyAgICAgICAgU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuCisgICAgICAgIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tXcml0YWJsZSgpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLnRlbGwoKQorICAgICAgICBvcy5mdHJ1bmNhdGUoc2VsZi5fZmQsIHNpemUpCisgICAgICAgIHJldHVybiBzaXplCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIEEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorICAgICAgICBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZkOgorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShzZWxmLl9mZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisKKyAgICBkZWYgc2Vla2FibGUoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgZmlsZSBzdXBwb3J0cyByYW5kb20tYWNjZXNzLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlIGlzIE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi50ZWxsKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9zZWVrYWJsZQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHJlYWQgbW9kZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSB3cml0ZSBtb2RlLiIiIgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl93cml0YWJsZQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZkCisKKyAgICBkZWYgaXNhdHR5KHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIG9zLmlzYXR0eShzZWxmLl9mZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWZkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nsb3NlZmQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtb2RlKHNlbGYpOgorICAgICAgICAiIiJTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUiIiIKKyAgICAgICAgaWYgc2VsZi5fY3JlYXRlZDoKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAneGIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3hiJworICAgICAgICBlbGlmIHNlbGYuX2FwcGVuZGluZzoKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgICAgIHJldHVybiAnYWIrJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2FiJworICAgICAgICBlbGlmIHNlbGYuX3JlYWRhYmxlOgorICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGFibGU6CisgICAgICAgICAgICAgICAgcmV0dXJuICdyYisnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAncmInCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJ3diJworCisKIGNsYXNzIFRleHRJT0Jhc2UoSU9CYXNlKToKIAogICAgICIiIkJhc2UgY2xhc3MgZm9yIHRleHQgSS9PLgpAQCAtMTU2Niw3ICsxOTc2LDggQEAKICAgICAjICAgLSAiY2hhcnNfLi4uIiBmb3IgaW50ZWdlciB2YXJpYWJsZXMgdGhhdCBjb3VudCBkZWNvZGVkIGNoYXJhY3RlcnMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gIjxfcHlpby5UZXh0SU9XcmFwcGVyIgorICAgICAgICByZXN1bHQgPSAiPHt9Lnt9Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZjc2ZmZmMS4uMzc0OTIzZCAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC0xNjcsOSArMTY3LDkgQEAKICAgICAgICAgICAgIHRpbWUudHpzZXQoKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIG5vX3NhdmluZyA9IGZyb3plbnNldChbInV0YyIsICJnbXQiLCB0aW1lLnR6bmFtZVswXS5sb3dlcigpXSkKKyAgICAgICAgbm9fc2F2aW5nID0gZnJvemVuc2V0KHsidXRjIiwgImdtdCIsIHRpbWUudHpuYW1lWzBdLmxvd2VyKCl9KQogICAgICAgICBpZiB0aW1lLmRheWxpZ2h0OgotICAgICAgICAgICAgaGFzX3NhdmluZyA9IGZyb3plbnNldChbdGltZS50em5hbWVbMV0ubG93ZXIoKV0pCisgICAgICAgICAgICBoYXNfc2F2aW5nID0gZnJvemVuc2V0KHt0aW1lLnR6bmFtZVsxXS5sb3dlcigpfSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGhhc19zYXZpbmcgPSBmcm96ZW5zZXQoKQogICAgICAgICBzZWxmLnRpbWV6b25lID0gKG5vX3NhdmluZywgaGFzX3NhdmluZykKQEAgLTI1Myw4ICsyNTMsOCBAQAogICAgICAgICAjIGZvcm1hdCBkaXJlY3RpdmVzICglbSwgZXRjLikuCiAgICAgICAgIHJlZ2V4X2NoYXJzID0gcmVfY29tcGlsZShyIihbXFwuXiQqKz9cKFwpe31cW1xdfF0pIikKICAgICAgICAgZm9ybWF0ID0gcmVnZXhfY2hhcnMuc3ViKHIiXFxcMSIsIGZvcm1hdCkKLSAgICAgICAgd2hpdGVzcGFjZV9yZXBsYWNlbWVudCA9IHJlX2NvbXBpbGUoJ1xzKycpCi0gICAgICAgIGZvcm1hdCA9IHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQuc3ViKCdccysnLCBmb3JtYXQpCisgICAgICAgIHdoaXRlc3BhY2VfcmVwbGFjZW1lbnQgPSByZV9jb21waWxlKHInXHMrJykKKyAgICAgICAgZm9ybWF0ID0gd2hpdGVzcGFjZV9yZXBsYWNlbWVudC5zdWIocidcXHMrJywgZm9ybWF0KQogICAgICAgICB3aGlsZSAnJScgaW4gZm9ybWF0OgogICAgICAgICAgICAgZGlyZWN0aXZlX2luZGV4ID0gZm9ybWF0LmluZGV4KCclJykrMQogICAgICAgICAgICAgcHJvY2Vzc2VkX2Zvcm1hdCA9ICIlcyVzJXMiICUgKHByb2Nlc3NlZF9mb3JtYXQsCmRpZmYgLS1naXQgYS9MaWIvYWJjLnB5IGIvTGliL2FiYy5weQppbmRleCAwMzU4YTQ2Li4xY2JmOTZhIDEwMDY0NAotLS0gYS9MaWIvYWJjLnB5CisrKyBiL0xpYi9hYmMucHkKQEAgLTE2OCw3ICsxNjgsNyBAQAogCiAgICAgZGVmIF9kdW1wX3JlZ2lzdHJ5KGNscywgZmlsZT1Ob25lKToKICAgICAgICAgIiIiRGVidWcgaGVscGVyIHRvIHByaW50IHRoZSBBQkMgcmVnaXN0cnkuIiIiCi0gICAgICAgIHByaW50KCJDbGFzczogJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19uYW1lX18pLCBmaWxlPWZpbGUpCisgICAgICAgIHByaW50KCJDbGFzczogJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19xdWFsbmFtZV9fKSwgZmlsZT1maWxlKQogICAgICAgICBwcmludCgiSW52LmNvdW50ZXI6ICVzIiAlIEFCQ01ldGEuX2FiY19pbnZhbGlkYXRpb25fY291bnRlciwgZmlsZT1maWxlKQogICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoY2xzLl9fZGljdF9fLmtleXMoKSk6CiAgICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoIl9hYmNfIik6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggYmUyNzZiYi4uOWEwNjcxOSAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtMTIwOSwxMSArMTIwOSw2IEBACiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikgPT0gdmFycyhvdGhlcikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgTmFtZXNwYWNlKToKLSAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQotCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgogICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX19kaWN0X18KIApAQCAtMTU5NSw2ICsxNTkwLDcgQEAKICAgICAgICAgLSBhcmd1bWVudF9kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbGwgYXJndW1lbnRzCiAgICAgICAgIC0gY29uZmxpY3RfaGFuZGxlciAtLSBTdHJpbmcgaW5kaWNhdGluZyBob3cgdG8gaGFuZGxlIGNvbmZsaWN0cwogICAgICAgICAtIGFkZF9oZWxwIC0tIEFkZCBhIC1oLy1oZWxwIG9wdGlvbgorICAgICAgICAtIGFsbG93X2FiYnJldiAtLSBBbGxvdyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdW5hbWJpZ3VvdXNseQogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsCkBAIC0xNjA4LDcgKzE2MDQsOCBAQAogICAgICAgICAgICAgICAgICBmcm9tZmlsZV9wcmVmaXhfY2hhcnM9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXJndW1lbnRfZGVmYXVsdD1Ob25lLAogICAgICAgICAgICAgICAgICBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsCi0gICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUpOgorICAgICAgICAgICAgICAgICBhZGRfaGVscD1UcnVlLAorICAgICAgICAgICAgICAgICBhbGxvd19hYmJyZXY9VHJ1ZSk6CiAKICAgICAgICAgc3VwZXJpbml0ID0gc3VwZXIoQXJndW1lbnRQYXJzZXIsIHNlbGYpLl9faW5pdF9fCiAgICAgICAgIHN1cGVyaW5pdChkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbiwKQEAgLTE2MjYsNiArMTYyMyw3IEBACiAgICAgICAgIHNlbGYuZm9ybWF0dGVyX2NsYXNzID0gZm9ybWF0dGVyX2NsYXNzCiAgICAgICAgIHNlbGYuZnJvbWZpbGVfcHJlZml4X2NoYXJzID0gZnJvbWZpbGVfcHJlZml4X2NoYXJzCiAgICAgICAgIHNlbGYuYWRkX2hlbHAgPSBhZGRfaGVscAorICAgICAgICBzZWxmLmFsbG93X2FiYnJldiA9IGFsbG93X2FiYnJldgogCiAgICAgICAgIGFkZF9ncm91cCA9IHNlbGYuYWRkX2FyZ3VtZW50X2dyb3VwCiAgICAgICAgIHNlbGYuX3Bvc2l0aW9uYWxzID0gYWRkX2dyb3VwKF8oJ3Bvc2l0aW9uYWwgYXJndW1lbnRzJykpCkBAIC0yMTAzLDIzICsyMTAxLDI0IEBACiAgICAgICAgICAgICAgICAgYWN0aW9uID0gc2VsZi5fb3B0aW9uX3N0cmluZ19hY3Rpb25zW29wdGlvbl9zdHJpbmddCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnCiAKLSAgICAgICAgIyBzZWFyY2ggdGhyb3VnaCBhbGwgcG9zc2libGUgcHJlZml4ZXMgb2YgdGhlIG9wdGlvbiBzdHJpbmcKLSAgICAgICAgIyBhbmQgYWxsIGFjdGlvbnMgaW4gdGhlIHBhcnNlciBmb3IgcG9zc2libGUgaW50ZXJwcmV0YXRpb25zCi0gICAgICAgIG9wdGlvbl90dXBsZXMgPSBzZWxmLl9nZXRfb3B0aW9uX3R1cGxlcyhhcmdfc3RyaW5nKQorICAgICAgICBpZiBzZWxmLmFsbG93X2FiYnJldjoKKyAgICAgICAgICAgICMgc2VhcmNoIHRocm91Z2ggYWxsIHBvc3NpYmxlIHByZWZpeGVzIG9mIHRoZSBvcHRpb24gc3RyaW5nCisgICAgICAgICAgICAjIGFuZCBhbGwgYWN0aW9ucyBpbiB0aGUgcGFyc2VyIGZvciBwb3NzaWJsZSBpbnRlcnByZXRhdGlvbnMKKyAgICAgICAgICAgIG9wdGlvbl90dXBsZXMgPSBzZWxmLl9nZXRfb3B0aW9uX3R1cGxlcyhhcmdfc3RyaW5nKQogCi0gICAgICAgICMgaWYgbXVsdGlwbGUgYWN0aW9ucyBtYXRjaCwgdGhlIG9wdGlvbiBzdHJpbmcgd2FzIGFtYmlndW91cwotICAgICAgICBpZiBsZW4ob3B0aW9uX3R1cGxlcykgPiAxOgotICAgICAgICAgICAgb3B0aW9ucyA9ICcsICcuam9pbihbb3B0aW9uX3N0cmluZwotICAgICAgICAgICAgICAgIGZvciBhY3Rpb24sIG9wdGlvbl9zdHJpbmcsIGV4cGxpY2l0X2FyZyBpbiBvcHRpb25fdHVwbGVzXSkKLSAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IGFyZ19zdHJpbmcsICdtYXRjaGVzJzogb3B0aW9uc30KLSAgICAgICAgICAgIG1zZyA9IF8oJ2FtYmlndW91cyBvcHRpb246ICUob3B0aW9uKXMgY291bGQgbWF0Y2ggJShtYXRjaGVzKXMnKQotICAgICAgICAgICAgc2VsZi5lcnJvcihtc2cgJSBhcmdzKQorICAgICAgICAgICAgIyBpZiBtdWx0aXBsZSBhY3Rpb25zIG1hdGNoLCB0aGUgb3B0aW9uIHN0cmluZyB3YXMgYW1iaWd1b3VzCisgICAgICAgICAgICBpZiBsZW4ob3B0aW9uX3R1cGxlcykgPiAxOgorICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAnLCAnLmpvaW4oW29wdGlvbl9zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgZm9yIGFjdGlvbiwgb3B0aW9uX3N0cmluZywgZXhwbGljaXRfYXJnIGluIG9wdGlvbl90dXBsZXNdKQorICAgICAgICAgICAgICAgIGFyZ3MgPSB7J29wdGlvbic6IGFyZ19zdHJpbmcsICdtYXRjaGVzJzogb3B0aW9uc30KKyAgICAgICAgICAgICAgICBtc2cgPSBfKCdhbWJpZ3VvdXMgb3B0aW9uOiAlKG9wdGlvbilzIGNvdWxkIG1hdGNoICUobWF0Y2hlcylzJykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yKG1zZyAlIGFyZ3MpCiAKLSAgICAgICAgIyBpZiBleGFjdGx5IG9uZSBhY3Rpb24gbWF0Y2hlZCwgdGhpcyBzZWdtZW50YXRpb24gaXMgZ29vZCwKLSAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KLSAgICAgICAgZWxpZiBsZW4ob3B0aW9uX3R1cGxlcykgPT0gMToKLSAgICAgICAgICAgIG9wdGlvbl90dXBsZSwgPSBvcHRpb25fdHVwbGVzCi0gICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCisgICAgICAgICAgICAjIGlmIGV4YWN0bHkgb25lIGFjdGlvbiBtYXRjaGVkLCB0aGlzIHNlZ21lbnRhdGlvbiBpcyBnb29kLAorICAgICAgICAgICAgIyBzbyByZXR1cm4gdGhlIHBhcnNlZCBhY3Rpb24KKyAgICAgICAgICAgIGVsaWYgbGVuKG9wdGlvbl90dXBsZXMpID09IDE6CisgICAgICAgICAgICAgICAgb3B0aW9uX3R1cGxlLCA9IG9wdGlvbl90dXBsZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uX3R1cGxlCiAKICAgICAgICAgIyBpZiBpdCB3YXMgbm90IGZvdW5kIGFzIGFuIG9wdGlvbiwgYnV0IGl0IGxvb2tzIGxpa2UgYSBuZWdhdGl2ZQogICAgICAgICAjIG51bWJlciwgaXQgd2FzIG1lYW50IHRvIGJlIHBvc2l0aW9uYWwKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IDAyYzNiMjguLjAzYzMwZjYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMTk0LDcgKzE5NCw3IEBACiAgICAgYmUgZm91bmQuICBJZiB0aGUgbm9kZSBwcm92aWRlZCBkb2VzIG5vdCBoYXZlIGRvY3N0cmluZ3MgYSBUeXBlRXJyb3IKICAgICB3aWxsIGJlIHJhaXNlZC4KICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKKyAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoQXN5bmNGdW5jdGlvbkRlZiwgRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlciBjYW4ndCBoYXZlIGRvY3N0cmluZ3MiICUgbm9kZS5fX2NsYXNzX18uX19uYW1lX18pCiAgICAgaWYgbm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikgYW5kIFwKICAgICAgICBpc2luc3RhbmNlKG5vZGUuYm9keVswXS52YWx1ZSwgU3RyKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCAxNGMxNTJmLi5mNzI4ZDFiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0yODcsNiArMjg3LDkgQEAKIAogY2xhc3MgZmlmbzoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGlzdD1Ob25lKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYnLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKCkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY29yZS5weSBiL0xpYi9hc3luY29yZS5weQppbmRleCAwMGE2Mzk2Li4zYjUxZjBmIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNvcmUucHkKKysrIGIvTGliL2FzeW5jb3JlLnB5CkBAIC01Nyw4ICs1Nyw4IEBACiAgICAgIEVOT1RDT05OLCBFU0hVVERPV04sIEVJU0NPTk4sIEVCQURGLCBFQ09OTkFCT1JURUQsIEVQSVBFLCBFQUdBSU4sIFwKICAgICAgZXJyb3Jjb2RlCiAKLV9ESVNDT05ORUNURUQgPSBmcm96ZW5zZXQoKEVDT05OUkVTRVQsIEVOT1RDT05OLCBFU0hVVERPV04sIEVDT05OQUJPUlRFRCwgRVBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBFQkFERikpCitfRElTQ09OTkVDVEVEID0gZnJvemVuc2V0KHtFQ09OTlJFU0VULCBFTk9UQ09OTiwgRVNIVVRET1dOLCBFQ09OTkFCT1JURUQsIEVQSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREZ9KQogCiB0cnk6CiAgICAgc29ja2V0X21hcApAQCAtMTQxLDEwICsxNDEsNyBAQAogICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QociwgdywgZSwgdGltZW91dCkKIAogICAgICAgICBmb3IgZmQgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0xODIsMTAgKzE3OSw4IEBACiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gc2VsZWN0LlBPTExPVVQKICAgICAgICAgICAgIGlmIGZsYWdzOgogICAgICAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKGZkLCBmbGFncykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciA9IHBvbGxzdGVyLnBvbGwodGltZW91dCkKLSAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICByID0gW10KKworICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQogICAgICAgICBmb3IgZmQsIGZsYWdzIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQogICAgICAgICAgICAgaWYgb2JqIGlzIE5vbmU6CkBAIC0yMjAsNyArMjE1LDcgQEAKICAgICBjb25uZWN0aW5nID0gRmFsc2UKICAgICBjbG9zaW5nID0gRmFsc2UKICAgICBhZGRyID0gTm9uZQotICAgIGlnbm9yZV9sb2dfdHlwZXMgPSBmcm96ZW5zZXQoWyd3YXJuaW5nJ10pCisgICAgaWdub3JlX2xvZ190eXBlcyA9IGZyb3plbnNldCh7J3dhcm5pbmcnfSkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrPU5vbmUsIG1hcD1Ob25lKToKICAgICAgICAgaWYgbWFwIGlzIE5vbmU6CkBAIC0yNTUsNyArMjUwLDcgQEAKICAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gTm9uZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBzdGF0dXMgPSBbc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXysiLiIrc2VsZi5fX2NsYXNzX18uX19uYW1lX19dCisgICAgICAgIHN0YXR1cyA9IFtzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fKyIuIitzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX19dCiAgICAgICAgIGlmIHNlbGYuYWNjZXB0aW5nIGFuZCBzZWxmLmFkZHI6CiAgICAgICAgICAgICBzdGF0dXMuYXBwZW5kKCdsaXN0ZW5pbmcnKQogICAgICAgICBlbGlmIHNlbGYuY29ubmVjdGVkOgpAQCAtNDA0LDIwICszOTksNiBAQAogICAgICAgICAgICAgICAgIGlmIHdoeS5hcmdzWzBdIG5vdCBpbiAoRU5PVENPTk4sIEVCQURGKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAotICAgICMgY2hlYXAgaW5oZXJpdGFuY2UsIHVzZWQgdG8gcGFzcyBhbGwgb3RoZXIgYXR0cmlidXRlCi0gICAgIyByZWZlcmVuY2VzIHRvIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXRhdHRyID0gZ2V0YXR0cihzZWxmLnNvY2tldCwgYXR0cikKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGF0dHIpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gIiUobWUpcy4lKGF0dHIpcyBpcyBkZXByZWNhdGVkOyB1c2UgJShtZSlzLnNvY2tldC4lKGF0dHIpcyAiIFwKLSAgICAgICAgICAgICAgICAgICJpbnN0ZWFkIiAlIHsnbWUnIDogc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICdhdHRyJyA6IGF0dHJ9Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgICAgICByZXR1cm4gcmV0YXR0cgotCiAgICAgIyBsb2cgYW5kIGxvZ19pbmZvIG1heSBiZSBvdmVycmlkZGVuIHRvIHByb3ZpZGUgbW9yZSBzb3BoaXN0aWNhdGVkCiAgICAgIyBsb2dnaW5nIGFuZCB3YXJuaW5nIG1ldGhvZHMuIEluIGdlbmVyYWwsIGxvZyBpcyBmb3IgJ2hpdCcgbG9nZ2luZwogICAgICMgYW5kICdsb2dfaW5mbycgaXMgZm9yIGluZm9ybWF0aW9uYWwsIHdhcm5pbmcgYW5kIGVycm9yIGxvZ2dpbmcuCkBAIC02MDQsOCArNTg1LDYgQEAKICMgUmVnYXJkbGVzcywgdGhpcyBpcyB1c2VmdWwgZm9yIHBpcGVzLCBhbmQgc3RkaW4vc3Rkb3V0Li4uCiAKIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKLSAgICBpbXBvcnQgZmNudGwKLQogICAgIGNsYXNzIGZpbGVfd3JhcHBlcjoKICAgICAgICAgIyBIZXJlIHdlIG92ZXJyaWRlIGp1c3QgZW5vdWdoIHRvIG1ha2UgYSBmaWxlCiAgICAgICAgICMgbG9vayBsaWtlIGEgc29ja2V0IGZvciB0aGUgcHVycG9zZXMgb2YgYXN5bmNvcmUuCkBAIC02NTYsOSArNjM1LDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLnNldF9maWxlKGZkKQogICAgICAgICAgICAgIyBzZXQgaXQgdG8gbm9uLWJsb2NraW5nIG1vZGUKLSAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCi0gICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSwotICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKGZkLCBGYWxzZSkKIAogICAgICAgICBkZWYgc2V0X2ZpbGUoc2VsZiwgZmQpOgogICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBmaWxlX3dyYXBwZXIoZmQpCmRpZmYgLS1naXQgYS9MaWIvYmluaGV4LnB5IGIvTGliL2JpbmhleC5weQppbmRleCA4MjcyZDVjLi41NmI1Zjg1IDEwMDY0NAotLS0gYS9MaWIvYmluaGV4LnB5CisrKyBiL0xpYi9iaW5oZXgucHkKQEAgLTIzNSwxNCArMjM1LDEzIEBACiAgICAgZmluZm8gPSBnZXRmaWxlaW5mbyhpbnApCiAgICAgb2ZwID0gQmluSGV4KGZpbmZvLCBvdXQpCiAKLSAgICBpZnAgPSBpby5vcGVuKGlucCwgJ3JiJykKLSAgICAjIFhYWFggRG8gdGV4dGZpbGUgdHJhbnNsYXRpb24gb24gbm9uLW1hYyBzeXN0ZW1zCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKLSAgICAgICAgaWYgbm90IGQ6IGJyZWFrCi0gICAgICAgIG9mcC53cml0ZShkKQotICAgIG9mcC5jbG9zZV9kYXRhKCkKLSAgICBpZnAuY2xvc2UoKQorICAgIHdpdGggaW8ub3BlbihpbnAsICdyYicpIGFzIGlmcDoKKyAgICAgICAgIyBYWFhYIERvIHRleHRmaWxlIHRyYW5zbGF0aW9uIG9uIG5vbi1tYWMgc3lzdGVtcworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZCA9IGlmcC5yZWFkKDEyODAwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkOiBicmVhaworICAgICAgICAgICAgb2ZwLndyaXRlKGQpCisgICAgICAgIG9mcC5jbG9zZV9kYXRhKCkKIAogICAgIGlmcCA9IG9wZW5yc3JjKGlucCwgJ3JiJykKICAgICB3aGlsZSBUcnVlOgpAQCAtNDU5LDEzICs0NTgsMTIgQEAKICAgICBpZiBub3Qgb3V0OgogICAgICAgICBvdXQgPSBpZnAuRk5hbWUKIAotICAgIG9mcCA9IGlvLm9wZW4ob3V0LCAnd2InKQotICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBkID0gaWZwLnJlYWQoMTI4MDAwKQotICAgICAgICBpZiBub3QgZDogYnJlYWsKLSAgICAgICAgb2ZwLndyaXRlKGQpCi0gICAgb2ZwLmNsb3NlKCkKKyAgICB3aXRoIGlvLm9wZW4ob3V0LCAnd2InKSBhcyBvZnA6CisgICAgICAgICMgWFhYWCBEbyB0cmFuc2xhdGlvbiBvbiBub24tbWFjIHN5c3RlbXMKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGQgPSBpZnAucmVhZCgxMjgwMDApCisgICAgICAgICAgICBpZiBub3QgZDogYnJlYWsKKyAgICAgICAgICAgIG9mcC53cml0ZShkKQogICAgIGlmcC5jbG9zZV9kYXRhKCkKIAogICAgIGQgPSBpZnAucmVhZF9yc3JjKDEyODAwMCkKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IDZjNWE2MGQuLmJjNzhjNTQgMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTIsNiArMTIsNyBAQAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IF9jb21wcmVzc2lvbgogCiB0cnk6CiAgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFJMb2NrCkBAIC0yMywxMyArMjQsMTEgQEAKIAogX01PREVfQ0xPU0VEICAgPSAwCiBfTU9ERV9SRUFEICAgICA9IDEKLV9NT0RFX1JFQURfRU9GID0gMgorIyBWYWx1ZSAyIG5vIGxvbmdlciB1c2VkCiBfTU9ERV9XUklURSAgICA9IDMKIAotX0JVRkZFUl9TSVpFID0gODE5MgogCi0KLWNsYXNzIEJaMkZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorY2xhc3MgQloyRmlsZShfY29tcHJlc3Npb24uQmFzZVN0cmVhbSk6CiAKICAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBiemlwMiAoZGUpY29tcHJlc3Npb24uCiAKQEAgLTYxLDEzICs2MCwxMSBAQAogICAgICAgICBtdWx0aXBsZSBjb21wcmVzc2VkIHN0cmVhbXMuCiAgICAgICAgICIiIgogICAgICAgICAjIFRoaXMgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZSwgc28gdGhhdCBCdWZmZXJlZElPQmFzZSdzCi0gICAgICAgICMgcmVhZGxpbmUoKSwgcmVhZGxpbmVzKCkgYW5kIHdyaXRlbGluZXMoKSBkb24ndCBkZWFkbG9jay4KKyAgICAgICAgIyB3cml0ZWxpbmVzKCkgZG9lcyBub3QgZGVhZGxvY2suCiAgICAgICAgIHNlbGYuX2xvY2sgPSBSTG9jaygpCiAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQogICAgICAgICBzZWxmLl9jbG9zZWZwID0gRmFsc2UKICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX0NMT1NFRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX3NpemUgPSAtMQogCiAgICAgICAgIGlmIGJ1ZmZlcmluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlVzZSBvZiAnYnVmZmVyaW5nJyBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKQEAgLTc5LDkgKzc2LDYgQEAKICAgICAgICAgaWYgbW9kZSBpbiAoIiIsICJyIiwgInJiIik6CiAgICAgICAgICAgICBtb2RlID0gInJiIgogICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAotICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKICAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIpOgogICAgICAgICAgICAgbW9kZSA9ICJ3YiIKICAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCkBAIC0xMDcsNiArMTAxLDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQogCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLAorICAgICAgICAgICAgICAgIEJaMkRlY29tcHJlc3NvciwgdHJhaWxpbmdfZXJyb3I9T1NFcnJvcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IDAKKwogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgogCkBAIC0xMTcsOCArMTE4LDggQEAKICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VEOgogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKQEAgLTEzMCw4ICsxMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjbG9zZWQoc2VsZik6CkBAIC0xNDUsMTI1ICsxNDUsMTggQEAKIAogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9idWZmZXIuc2Vla2FibGUoKQogCiAgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFECiAKICAgICBkZWYgd3JpdGFibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQogCi0gICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCi0KLSAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9tb2RlIG5vdCBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3IgcmVhZGluZyIpCi0KLSAgICBkZWYgX2NoZWNrX2Nhbl93cml0ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9XUklURToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHdyaXRpbmciKQotCi0gICAgZGVmIF9jaGVja19jYW5fc2VlayhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQotICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKLQotICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCi0gICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAjIERlcGVuZGluZyBvbiB0aGUgaW5wdXQgZGF0YSwgb3VyIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvciBtYXkgbm90Ci0gICAgICAgICMgcmV0dXJuIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHRyeSBhZ2FpbiBhZnRlciByZWFkaW5nIGFub3RoZXIgYmxvY2suCi0gICAgICAgIHdoaWxlIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICByYXdibG9jayA9IChzZWxmLl9kZWNvbXByZXNzb3IudW51c2VkX2RhdGEgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKSkKLQotICAgICAgICAgICAgaWYgbm90IHJhd2Jsb2NrOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6Ci0gICAgICAgICAgICAgICAgICAgICMgRW5kLW9mLXN0cmVhbSBtYXJrZXIgYW5kIGVuZCBvZiBmaWxlLiBXZSdyZSBnb29kLgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFByb2JsZW0gLSB3ZSB3ZXJlIGV4cGVjdGluZyBtb3JlIGNvbXByZXNzZWQgZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKLQotICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKLSAgICAgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgotICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBUcmFpbGluZyBkYXRhIGlzbid0IGEgdmFsaWQgYnppcDIgc3RyZWFtLiBXZSdyZSBkb25lIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCi0gICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KLSAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgICAgICBibG9ja3MgPSBbXQotICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KLSAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KLSAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCi0KLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBuIC09IGxlbihkYXRhKQotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KICAgICBkZWYgcGVlayhzZWxmLCBuPTApOgogICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KIApAQCAtMjcyLDkgKzE2NSwxMCBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIiIgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgICAgICMgUmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgZmFjdCB0aGF0IEJ1ZmZlcmVkUmVhZGVyLnBlZWsoKQorICAgICAgICAgICAgIyBhbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSAoZXhjZXB0IGF0IEVPRiksIGluZGVwZW5kZW50CisgICAgICAgICAgICAjIG9mIHRoZSB2YWx1ZSBvZiBuCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnBlZWsobikKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0yODQsNDcgKzE3OCwyOSBAQAogICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGVsaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKLSAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uIFJlYWRzIHVwIHRvIGEKKyAgICAgICAgYnVmZmVyJ3Mgd29ydGggb2YgZGF0YSBpZiBzaXplIGlzIG5lZ2F0aXZlLgogCiAgICAgICAgIFJldHVybnMgYicnIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KICAgICAgICAgIiIiCi0gICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCi0gICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCi0gICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgIGlmIChzaXplID09IDAgb3IKLSAgICAgICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgotICAgICAgICAgICAgICAgICMgVGhpcyBnaXZlcyBhIHNpZ25pZmljYW50IHNwZWVkdXAgaWYgKnNpemUqIGlzIHNtYWxsLgotICAgICAgICAgICAgICAgIChzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpIGFuZCBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSkpOgotICAgICAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgICAgIGlmIHNpemUgPiAwOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICs9IGxlbihkYXRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZDEoc2l6ZSkKIAogICAgIGRlZiByZWFkaW50byhzZWxmLCBiKToKLSAgICAgICAgIiIiUmVhZCB1cCB0byBsZW4oYikgYnl0ZXMgaW50byBiLgorICAgICAgICAiIiJSZWFkIGJ5dGVzIGludG8gYi4KIAogICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KICAgICAgICAgIiIiCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50byhzZWxmLCBiKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkaW50byhiKQogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTMzOSwxNSArMjE1LDcgQEAKICAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKLSAgICAgICAgICAgICMgU2hvcnRjdXQgZm9yIHRoZSBjb21tb24gY2FzZSAtIHRoZSB3aG9sZSBsaW5lIGlzIGluIHRoZSBidWZmZXIuCi0gICAgICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCi0gICAgICAgICAgICAgICAgaWYgZW5kID4gMDoKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4obGluZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZShzaXplKQogCiAgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCkBAIC0zNjEsNyArMjI5LDggQEAKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQogICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lcyhzZWxmLCBzaXplKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkbGluZXMoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBieXRlIHN0cmluZyB0byB0aGUgZmlsZS4KQEAgLTM4NiwxOCArMjU1LDkgQEAKICAgICAgICAgTGluZSBzZXBhcmF0b3JzIGFyZSBub3QgYWRkZWQgYmV0d2VlbiB0aGUgd3JpdHRlbiBieXRlIHN0cmluZ3MuCiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVsaW5lcyhzZWxmLCBzZXEpCisgICAgICAgICAgICByZXR1cm4gX2NvbXByZXNzaW9uLkJhc2VTdHJlYW0ud3JpdGVsaW5lcyhzZWxmLCBzZXEpCiAKLSAgICAjIFJld2luZCB0aGUgZmlsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkYXRhIHN0cmVhbS4KLSAgICBkZWYgX3Jld2luZChzZWxmKToKLSAgICAgICAgc2VsZi5fZnAuc2VlaygwLCAwKQotICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRAotICAgICAgICBzZWxmLl9wb3MgPSAwCi0gICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotCi0gICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9aW8uU0VFS19TRVQpOgogICAgICAgICAiIiJDaGFuZ2UgdGhlIGZpbGUgcG9zaXRpb24uCiAKICAgICAgICAgVGhlIG5ldyBwb3NpdGlvbiBpcyBzcGVjaWZpZWQgYnkgb2Zmc2V0LCByZWxhdGl2ZSB0byB0aGUKQEAgLTQxNCwzNSArMjc0LDE0IEBACiAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fc2VlaygpCi0KLSAgICAgICAgICAgICMgUmVjYWxjdWxhdGUgb2Zmc2V0IGFzIGFuIGFic29sdXRlIGZpbGUgcG9zaXRpb24uCi0gICAgICAgICAgICBpZiB3aGVuY2UgPT0gMDoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIHdoZW5jZSA9PSAxOgotICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAotICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMjoKLSAgICAgICAgICAgICAgICAjIFNlZWtpbmcgcmVsYXRpdmUgdG8gRU9GIC0gd2UgbmVlZCB0byBrbm93IHRoZSBmaWxlJ3Mgc2l6ZS4KLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9hbGwocmV0dXJuX2RhdGE9RmFsc2UpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5fc2l6ZSArIG9mZnNldAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIHZhbHVlIGZvciB3aGVuY2U6ICVzIiAlICh3aGVuY2UsKSkKLQotICAgICAgICAgICAgIyBNYWtlIGl0IHNvIHRoYXQgb2Zmc2V0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmb3J3YXJkLgotICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgotICAgICAgICAgICAgICAgIHNlbGYuX3Jld2luZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKLQotICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGRhdGEgdW50aWwgd2UgcmVhY2ggdGhlIGRlc2lyZWQgcG9zaXRpb24uCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2Jsb2NrKG9mZnNldCwgcmV0dXJuX2RhdGE9RmFsc2UpCi0KLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4iIiIKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci50ZWxsKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wb3MKIAogCmRpZmYgLS1naXQgYS9MaWIvY2dpLnB5IGIvTGliL2NnaS5weQppbmRleCA0NWJhZGY2Li4yNmQyNTQ0IDEwMDc1NQotLS0gYS9MaWIvY2dpLnB5CisrKyBiL0xpYi9jZ2kucHkKQEAgLTU2Niw2ICs1NjYsMTIgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbi4iIiIKICAgICAgICAgcmV0dXJuICJGaWVsZFN0b3JhZ2UoJXIsICVyLCAlcikiICUgKApkaWZmIC0tZ2l0IGEvTGliL2NnaXRiLnB5IGIvTGliL2NnaXRiLnB5CmluZGV4IDZlYjUyZTcuLmIyOTExMDAgMTAwNjQ0Ci0tLSBhL0xpYi9jZ2l0Yi5weQorKysgYi9MaWIvY2dpdGIucHkKQEAgLTI5NCw5ICsyOTQsOCBAQAogICAgICAgICAgICAgKGZkLCBwYXRoKSA9IHRlbXBmaWxlLm1rc3RlbXAoc3VmZml4PXN1ZmZpeCwgZGlyPXNlbGYubG9nZGlyKQogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9zLmZkb3BlbihmZCwgJ3cnKQotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQotICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3MuZmRvcGVuKGZkLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoZG9jKQogICAgICAgICAgICAgICAgIG1zZyA9ICclcyBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhpcyBlcnJvci4nICUgcGF0aAogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBzYXZlIHRyYWNlYmFjayB0byAlcywgYnV0IGZhaWxlZC4nICUgcGF0aApkaWZmIC0tZ2l0IGEvTGliL2NvZGUucHkgYi9MaWIvY29kZS5weQppbmRleCBmODE4NGI2Li41MzI0NGUzIDEwMDY0NAotLS0gYS9MaWIvY29kZS5weQorKysgYi9MaWIvY29kZS5weQpAQCAtNyw2ICs3LDcgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IGFyZ3BhcnNlCiBmcm9tIGNvZGVvcCBpbXBvcnQgQ29tbWFuZENvbXBpbGVyLCBjb21waWxlX2NvbW1hbmQKIAogX19hbGxfXyA9IFsiSW50ZXJhY3RpdmVJbnRlcnByZXRlciIsICJJbnRlcmFjdGl2ZUNvbnNvbGUiLCAiaW50ZXJhY3QiLApAQCAtMTM2LDI1ICsxMzcsMTggQEAKICAgICAgICAgVGhlIG91dHB1dCBpcyB3cml0dGVuIGJ5IHNlbGYud3JpdGUoKSwgYmVsb3cuCiAKICAgICAgICAgIiIiCisgICAgICAgIHN5cy5sYXN0X3R5cGUsIHN5cy5sYXN0X3ZhbHVlLCBsYXN0X3RiID0gZWkgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSBsYXN0X3RiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQotICAgICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gdGIKLSAgICAgICAgICAgIHRibGlzdCA9IHRyYWNlYmFjay5leHRyYWN0X3RiKHRiKQotICAgICAgICAgICAgZGVsIHRibGlzdFs6MV0KLSAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9saXN0KHRibGlzdCkKLSAgICAgICAgICAgIGlmIGxpbmVzOgotICAgICAgICAgICAgICAgIGxpbmVzLmluc2VydCgwLCAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuIikKLSAgICAgICAgICAgIGxpbmVzLmV4dGVuZCh0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKSkKKyAgICAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZWlbMF0sIGVpWzFdLCBsYXN0X3RiLnRiX25leHQpCisgICAgICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgICAgICMgb3ZlciBzZWxmLndyaXRlCisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soZWlbMF0sIGVpWzFdLCBsYXN0X3RiKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgdGJsaXN0ID0gdGIgPSBOb25lCi0gICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCi0gICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQotICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQorICAgICAgICAgICAgbGFzdF90YiA9IGVpID0gTm9uZQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KQEAgLTI5OSw0ICsyOTMsMTIgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGludGVyYWN0KCkKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMiKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5xIG9yIHN5cy5mbGFncy5xdWlldDoKKyAgICAgICAgYmFubmVyID0gJycKKyAgICBlbHNlOgorICAgICAgICBiYW5uZXIgPSBOb25lCisgICAgaW50ZXJhY3QoYmFubmVyKQpkaWZmIC0tZ2l0IGEvTGliL2NvZGVjcy5weSBiL0xpYi9jb2RlY3MucHkKaW5kZXggNGE0ZDA0My4uMjJkNWY4MiAxMDA2NDQKLS0tIGEvTGliL2NvZGVjcy5weQorKysgYi9MaWIvY29kZWNzLnB5CkBAIC0yNyw3ICsyNyw4IEBACiAgICAgICAgICAgICJnZXRpbmNyZW1lbnRhbGRlY29kZXIiLCAiZ2V0cmVhZGVyIiwgImdldHdyaXRlciIsCiAgICAgICAgICAgICJlbmNvZGUiLCAiZGVjb2RlIiwgIml0ZXJlbmNvZGUiLCAiaXRlcmRlY29kZSIsCiAgICAgICAgICAgICJzdHJpY3RfZXJyb3JzIiwgImlnbm9yZV9lcnJvcnMiLCAicmVwbGFjZV9lcnJvcnMiLAotICAgICAgICAgICAieG1sY2hhcnJlZnJlcGxhY2VfZXJyb3JzIiwgImJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzIiwKKyAgICAgICAgICAgInhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyIsICJuYW1lcmVwbGFjZV9lcnJvcnMiLAogICAgICAgICAgICAicmVnaXN0ZXJfZXJyb3IiLCAibG9va3VwX2Vycm9yIl0KIAogIyMjIENvbnN0YW50cwpAQCAtMTA1LDggKzEwNiw4IEBACiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzLiVzIG9iamVjdCBmb3IgZW5jb2RpbmcgJXMgYXQgMHgleD4iICUgXAotICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgcmV0dXJuICI8JXMuJXMgb2JqZWN0IGZvciBlbmNvZGluZyAlcyBhdCAlI3g+IiAlIFwKKyAgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIGlkKHNlbGYpKQogCiBjbGFzcyBDb2RlYzoKQEAgLTEyNiw3ICsxMjcsOCBAQAogICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScgLSByZXBsYWNlIHdpdGggcHJpdmF0ZSBjb2RlIHBvaW50cyBVK0RDbm4uCiAgICAgICAgICAneG1sY2hhcnJlZnJlcGxhY2UnIC0gUmVwbGFjZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBYTUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgcmVmZXJlbmNlIChvbmx5IGZvciBlbmNvZGluZykuCi0gICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgIC0gUmVwbGFjZSB3aXRoIGJhY2tzbGFzaGVkIGVzY2FwZSBzZXF1ZW5jZXMKKyAgICAgICAgICdiYWNrc2xhc2hyZXBsYWNlJyAgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlcy4KKyAgICAgICAgICduYW1lcmVwbGFjZScgICAgICAgLSBSZXBsYWNlIHdpdGggXFxOey4uLn0gZXNjYXBlIHNlcXVlbmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IGZvciBlbmNvZGluZykuCiAKICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHZhbHVlcyBjYW4gYmUgZXh0ZW5kZWQgdmlhIHJlZ2lzdGVyX2Vycm9yLgpAQCAtMzU4LDcgKzM2MCw4IEBACiAgICAgICAgICAgICAgJ3htbGNoYXJyZWZyZXBsYWNlJyAtIFJlcGxhY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgWE1MCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciByZWZlcmVuY2UuCiAgICAgICAgICAgICAgJ2JhY2tzbGFzaHJlcGxhY2UnICAtIFJlcGxhY2Ugd2l0aCBiYWNrc2xhc2hlZCBlc2NhcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VzIChvbmx5IGZvciBlbmNvZGluZykuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlcy4KKyAgICAgICAgICAgICAnbmFtZXJlcGxhY2UnICAgICAgIC0gUmVwbGFjZSB3aXRoIFxcTnsuLi59IGVzY2FwZSBzZXF1ZW5jZXMuCiAKICAgICAgICAgICAgIFRoZSBzZXQgb2YgYWxsb3dlZCBwYXJhbWV0ZXIgdmFsdWVzIGNhbiBiZSBleHRlbmRlZCB2aWEKICAgICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLgpAQCAtNDI4LDcgKzQzMSw4IEBACiAKICAgICAgICAgICAgICAnc3RyaWN0JyAtIHJhaXNlIGEgVmFsdWVFcnJvciAob3IgYSBzdWJjbGFzcykKICAgICAgICAgICAgICAnaWdub3JlJyAtIGlnbm9yZSB0aGUgY2hhcmFjdGVyIGFuZCBjb250aW51ZSB3aXRoIHRoZSBuZXh0Ci0gICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXI7CisgICAgICAgICAgICAgJ3JlcGxhY2UnLSByZXBsYWNlIHdpdGggYSBzdWl0YWJsZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAnYmFja3NsYXNocmVwbGFjZScgLSBSZXBsYWNlIHdpdGggYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlczsKIAogICAgICAgICAgICAgVGhlIHNldCBvZiBhbGxvd2VkIHBhcmFtZXRlciB2YWx1ZXMgY2FuIGJlIGV4dGVuZGVkIHZpYQogICAgICAgICAgICAgcmVnaXN0ZXJfZXJyb3IuCkBAIC0xMDgwLDYgKzEwODQsNyBAQAogICAgIHJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJyZXBsYWNlIikKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBsb29rdXBfZXJyb3IoInhtbGNoYXJyZWZyZXBsYWNlIikKICAgICBiYWNrc2xhc2hyZXBsYWNlX2Vycm9ycyA9IGxvb2t1cF9lcnJvcigiYmFja3NsYXNocmVwbGFjZSIpCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gbG9va3VwX2Vycm9yKCJuYW1lcmVwbGFjZSIpCiBleGNlcHQgTG9va3VwRXJyb3I6CiAgICAgIyBJbiAtLWRpc2FibGUtdW5pY29kZSBidWlsZHMsIHRoZXNlIGVycm9yIGhhbmRsZXIgYXJlIG1pc3NpbmcKICAgICBzdHJpY3RfZXJyb3JzID0gTm9uZQpAQCAtMTA4Nyw2ICsxMDkyLDcgQEAKICAgICByZXBsYWNlX2Vycm9ycyA9IE5vbmUKICAgICB4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMgPSBOb25lCiAgICAgYmFja3NsYXNocmVwbGFjZV9lcnJvcnMgPSBOb25lCisgICAgbmFtZXJlcGxhY2VfZXJyb3JzID0gTm9uZQogCiAjIFRlbGwgbW9kdWxlZmluZGVyIHRoYXQgdXNpbmcgY29kZWNzIHByb2JhYmx5IG5lZWRzIHRoZSBlbmNvZGluZ3MKICMgcGFja2FnZQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CmluZGV4IDMzOTU1MmUuLjk0M2NiY2EgMTAwNjQ0Ci0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQorKysgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgX2NvbGxlY3Rpb25zX2FiYwogX19hbGxfXyArPSBfY29sbGVjdGlvbnNfYWJjLl9fYWxsX18KIAotZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBkZWZhdWx0ZGljdAogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlciBhcyBfaXRlbWdldHRlciwgZXEgYXMgX2VxCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZCBhcyBfaXNrZXl3b3JkCiBpbXBvcnQgc3lzIGFzIF9zeXMKQEAgLTE2LDEwICsxNSw0MCBAQAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHJlcGVhdCBhcyBfcmVwZWF0LCBjaGFpbiBhcyBfY2hhaW4sIHN0YXJtYXAgYXMgX3N0YXJtYXAKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIgYXMgX3JlY3Vyc2l2ZV9yZXByCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIE11dGFibGVTZXF1ZW5jZS5yZWdpc3RlcihkZXF1ZSkKKwordHJ5OgorICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIE9yZGVyZWREaWN0CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitjbGFzcyBfT3JkZXJlZERpY3RLZXlzVmlldyhLZXlzVmlldyk6CisKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHJldmVyc2VkKHNlbGYuX21hcHBpbmcpCisKK2NsYXNzIF9PcmRlcmVkRGljdEl0ZW1zVmlldyhJdGVtc1ZpZXcpOgorCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgZm9yIGtleSBpbiByZXZlcnNlZChzZWxmLl9tYXBwaW5nKToKKyAgICAgICAgICAgIHlpZWxkIChrZXksIHNlbGYuX21hcHBpbmdba2V5XSkKKworY2xhc3MgX09yZGVyZWREaWN0VmFsdWVzVmlldyhWYWx1ZXNWaWV3KToKKworICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIGZvciBrZXkgaW4gcmV2ZXJzZWQoc2VsZi5fbWFwcGluZyk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9tYXBwaW5nW2tleV0KKwogY2xhc3MgX0xpbmsob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAncHJldicsICduZXh0JywgJ2tleScsICdfX3dlYWtyZWZfXycKIApAQCAtODMsNiArMTEyLDggQEAKICAgICAgICAgbGlua19uZXh0ID0gbGluay5uZXh0CiAgICAgICAgIGxpbmtfcHJldi5uZXh0ID0gbGlua19uZXh0CiAgICAgICAgIGxpbmtfbmV4dC5wcmV2ID0gbGlua19wcmV2CisgICAgICAgIGxpbmsucHJldiA9IE5vbmUKKyAgICAgICAgbGluay5uZXh0ID0gTm9uZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAnb2QuX19pdGVyX18oKSA8PT0+IGl0ZXIob2QpJwpAQCAtMTY2LDkgKzE5NywxOSBAQAogICAgICAgICByZXR1cm4gc2l6ZQogCiAgICAgdXBkYXRlID0gX191cGRhdGUgPSBNdXRhYmxlTWFwcGluZy51cGRhdGUKLSAgICBrZXlzID0gTXV0YWJsZU1hcHBpbmcua2V5cwotICAgIHZhbHVlcyA9IE11dGFibGVNYXBwaW5nLnZhbHVlcwotICAgIGl0ZW1zID0gTXV0YWJsZU1hcHBpbmcuaXRlbXMKKworICAgIGRlZiBrZXlzKHNlbGYpOgorICAgICAgICAiRC5rZXlzKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3Mga2V5cyIKKyAgICAgICAgcmV0dXJuIF9PcmRlcmVkRGljdEtleXNWaWV3KHNlbGYpCisKKyAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgICJELml0ZW1zKCkgLT4gYSBzZXQtbGlrZSBvYmplY3QgcHJvdmlkaW5nIGEgdmlldyBvbiBEJ3MgaXRlbXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RJdGVtc1ZpZXcoc2VsZikKKworICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAgICJELnZhbHVlcygpIC0+IGFuIG9iamVjdCBwcm92aWRpbmcgYSB2aWV3IG9uIEQncyB2YWx1ZXMiCisgICAgICAgIHJldHVybiBfT3JkZXJlZERpY3RWYWx1ZXNWaWV3KHNlbGYpCisKICAgICBfX25lX18gPSBNdXRhYmxlTWFwcGluZy5fX25lX18KIAogICAgIF9fbWFya2VyID0gb2JqZWN0KCkKQEAgLTIzMyw2ICsyNzQsMTMgQEAKICAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVyKQogCiAKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAjIExlYXZlIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGluIHBsYWNlLgorICAgIHBhc3MKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIG5hbWVkdHVwbGUKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02OTYsMTQgKzc0NCwyMiBAQAogCiAgICAgZGVmIF9fcG9zX18oc2VsZik6CiAgICAgICAgICdBZGRzIGFuIGVtcHR5IGNvdW50ZXIsIGVmZmVjdGl2ZWx5IHN0cmlwcGluZyBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMnCi0gICAgICAgIHJldHVybiBzZWxmICsgQ291bnRlcigpCisgICAgICAgIHJlc3VsdCA9IENvdW50ZXIoKQorICAgICAgICBmb3IgZWxlbSwgY291bnQgaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgaWYgY291bnQgPiAwOgorICAgICAgICAgICAgICAgIHJlc3VsdFtlbGVtXSA9IGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfX25lZ19fKHNlbGYpOgogICAgICAgICAnJydTdWJ0cmFjdHMgZnJvbSBhbiBlbXB0eSBjb3VudGVyLiAgU3RyaXBzIHBvc2l0aXZlIGFuZCB6ZXJvIGNvdW50cywKICAgICAgICAgYW5kIGZsaXBzIHRoZSBzaWduIG9uIG5lZ2F0aXZlIGNvdW50cy4KIAogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIENvdW50ZXIoKSAtIHNlbGYKKyAgICAgICAgcmVzdWx0ID0gQ291bnRlcigpCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjb3VudCA8IDA6CisgICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gMCAtIGNvdW50CisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfa2VlcF9wb3NpdGl2ZShzZWxmKToKICAgICAgICAgJycnSW50ZXJuYWwgbWV0aG9kIHRvIHN0cmlwIGVsZW1lbnRzIHdpdGggYSBuZWdhdGl2ZSBvciB6ZXJvIGNvdW50JycnCkBAIC05NDgsNyArMTAwNCw2IEBACiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPCAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPD0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPT0gc2VsZi5fX2Nhc3Qob3RoZXIpCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgIT0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ3RfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPiAgc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6IHJldHVybiBzZWxmLmRhdGEgPj0gc2VsZi5fX2Nhc3Qob3RoZXIpCiAgICAgZGVmIF9fY2FzdChzZWxmLCBvdGhlcik6CkBAIC0xMDIwLDE1ICsxMDc1LDEzIEBACiAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKTogcmV0dXJuIGZsb2F0KHNlbGYuZGF0YSkKICAgICBkZWYgX19jb21wbGV4X18oc2VsZik6IHJldHVybiBjb21wbGV4KHNlbGYuZGF0YSkKICAgICBkZWYgX19oYXNoX18oc2VsZik6IHJldHVybiBoYXNoKHNlbGYuZGF0YSkKKyAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5kYXRhWzpdLCkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA9PSBzdHJpbmcuZGF0YQogICAgICAgICByZXR1cm4gc2VsZi5kYXRhID09IHN0cmluZwotICAgIGRlZiBfX25lX18oc2VsZiwgc3RyaW5nKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSAhPSBzdHJpbmcuZGF0YQotICAgICAgICByZXR1cm4gc2VsZi5kYXRhICE9IHN0cmluZwogICAgIGRlZiBfX2x0X18oc2VsZiwgc3RyaW5nKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzdHJpbmcsIFVzZXJTdHJpbmcpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YSA8IHN0cmluZy5kYXRhCkBAIC0xMDY4LDkgKzExMjEsMTMgQEAKICAgICBfX3JtdWxfXyA9IF9fbXVsX18KICAgICBkZWYgX19tb2RfXyhzZWxmLCBhcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YSAlIGFyZ3MpCisgICAgZGVmIF9fcm1vZF9fKHNlbGYsIGZvcm1hdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhmb3JtYXQgJSBhcmdzKQogCiAgICAgIyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGRlZmluZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyOgogICAgIGRlZiBjYXBpdGFsaXplKHNlbGYpOiByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5kYXRhLmNhcGl0YWxpemUoKSkKKyAgICBkZWYgY2FzZWZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2FzZWZvbGQoKSkKICAgICBkZWYgY2VudGVyKHNlbGYsIHdpZHRoLCAqYXJncyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuY2VudGVyKHdpZHRoLCAqYXJncykpCiAgICAgZGVmIGNvdW50KHNlbGYsIHN1Yiwgc3RhcnQ9MCwgZW5kPV9zeXMubWF4c2l6ZSk6CkBAIC0xMDkzLDYgKzExNTAsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmZpbmQoc3ViLCBzdGFydCwgZW5kKQogICAgIGRlZiBmb3JtYXQoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0KCphcmdzLCAqKmt3ZHMpCisgICAgZGVmIGZvcm1hdF9tYXAoc2VsZiwgbWFwcGluZyk6CisgICAgICAgIHJldHVybiBzZWxmLmRhdGEuZm9ybWF0X21hcChtYXBwaW5nKQogICAgIGRlZiBpbmRleChzZWxmLCBzdWIsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLmluZGV4KHN1Yiwgc3RhcnQsIGVuZCkKICAgICBkZWYgaXNhbHBoYShzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2FscGhhKCkKQEAgLTExMDIsNiArMTE2MSw3IEBACiAgICAgZGVmIGlzaWRlbnRpZmllcihzZWxmKTogcmV0dXJuIHNlbGYuZGF0YS5pc2lkZW50aWZpZXIoKQogICAgIGRlZiBpc2xvd2VyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzbG93ZXIoKQogICAgIGRlZiBpc251bWVyaWMoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNudW1lcmljKCkKKyAgICBkZWYgaXNwcmludGFibGUoc2VsZik6IHJldHVybiBzZWxmLmRhdGEuaXNwcmludGFibGUoKQogICAgIGRlZiBpc3NwYWNlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzc3BhY2UoKQogICAgIGRlZiBpc3RpdGxlKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdGl0bGUoKQogICAgIGRlZiBpc3VwcGVyKHNlbGYpOiByZXR1cm4gc2VsZi5kYXRhLmlzdXBwZXIoKQpAQCAtMTExMCw2ICsxMTcwLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sanVzdCh3aWR0aCwgKmFyZ3MpKQogICAgIGRlZiBsb3dlcihzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5sb3dlcigpKQogICAgIGRlZiBsc3RyaXAoc2VsZiwgY2hhcnM9Tm9uZSk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEubHN0cmlwKGNoYXJzKSkKKyAgICBtYWtldHJhbnMgPSBzdHIubWFrZXRyYW5zCiAgICAgZGVmIHBhcnRpdGlvbihzZWxmLCBzZXApOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnBhcnRpdGlvbihzZXApCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgb2xkLCBuZXcsIG1heHNwbGl0PS0xKToKZGlmZiAtLWdpdCBhL0xpYi9jb21waWxlYWxsLnB5IGIvTGliL2NvbXBpbGVhbGwucHkKaW5kZXggZDk1N2VlNS4uNjRjMGE5YSAxMDA2NDQKLS0tIGEvTGliL2NvbXBpbGVhbGwucHkKKysrIGIvTGliL2NvbXBpbGVhbGwucHkKQEAgLTEsNCArMSw0IEBACi0iIiJNb2R1bGUvc2NyaXB0IHRvIGJ5dGUtY29tcGlsZSBhbGwgLnB5IGZpbGVzIHRvIC5weWMgKG9yIC5weW8pIGZpbGVzLgorIiIiTW9kdWxlL3NjcmlwdCB0byBieXRlLWNvbXBpbGUgYWxsIC5weSBmaWxlcyB0byAucHljIGZpbGVzLgogCiBXaGVuIGNhbGxlZCBhcyBhIHNjcmlwdCB3aXRoIGFyZ3VtZW50cywgdGhpcyBjb21waWxlcyB0aGUgZGlyZWN0b3JpZXMKIGdpdmVuIGFzIGFyZ3VtZW50cyByZWN1cnNpdmVseTsgdGhlIC1sIG9wdGlvbiBwcmV2ZW50cyBpdCBmcm9tCkBAIC0xNiwzMiArMTYsMjQgQEAKIGltcG9ydCBweV9jb21waWxlCiBpbXBvcnQgc3RydWN0CiAKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIFByb2Nlc3NQb29sRXhlY3V0b3IgPSBOb25lCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAorCiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKLWRlZiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwKLSAgICAgICAgICAgICAgICBxdWlldD1GYWxzZSwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGFsbCBtb2R1bGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgdHJlZS4KLQotICAgIEFyZ3VtZW50cyAob25seSBkaXIgaXMgcmVxdWlyZWQpOgotCi0gICAgZGlyOiAgICAgICB0aGUgZGlyZWN0b3J5IHRvIGJ5dGUtY29tcGlsZQotICAgIG1heGxldmVsczogbWF4aW11bSByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMTApCi0gICAgZGRpcjogICAgICB0aGUgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8gdGhlIHBhdGggdG8gdGhlCi0gICAgICAgICAgICAgICBmaWxlIGFzIGl0IGlzIGNvbXBpbGVkIGludG8gZWFjaCBieXRlLWNvZGUgZmlsZS4KLSAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgotICAgIGxlZ2FjeTogICAgaWYgVHJ1ZSwgcHJvZHVjZSBsZWdhY3kgcHljIHBhdGhzIGluc3RlYWQgb2YgUEVQIDMxNDcgcGF0aHMKLSAgICBvcHRpbWl6ZTogIG9wdGltaXphdGlvbiBsZXZlbCBvciAtMSBmb3IgbGV2ZWwgb2YgdGhlIGludGVycHJldGVyCi0gICAgIiIiCitkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlyKQogICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwcmludCgiQ2FuJ3QgbGlzdCB7IXJ9Ii5mb3JtYXQoZGlyKSkKKyAgICAgICAgaWYgcXVpZXQgPCAyOgorICAgICAgICAgICAgcHJpbnQoIkNhbid0IGxpc3QgeyFyfSIuZm9ybWF0KGRpcikpCiAgICAgICAgIG5hbWVzID0gW10KICAgICBuYW1lcy5zb3J0KCkKLSAgICBzdWNjZXNzID0gMQogICAgIGZvciBuYW1lIGluIG5hbWVzOgogICAgICAgICBpZiBuYW1lID09ICdfX3B5Y2FjaGVfXyc6CiAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTEsMTcgKzQzLDUzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkZmlsZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZnVsbG5hbWUpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgIHlpZWxkIGZ1bGxuYW1lCiAgICAgICAgIGVsaWYgKG1heGxldmVscyA+IDAgYW5kIG5hbWUgIT0gb3MuY3VyZGlyIGFuZCBuYW1lICE9IG9zLnBhcmRpciBhbmQKICAgICAgICAgICAgICAgb3MucGF0aC5pc2RpcihmdWxsbmFtZSkgYW5kIG5vdCBvcy5wYXRoLmlzbGluayhmdWxsbmFtZSkpOgotICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGZ1bGxuYW1lLCBtYXhsZXZlbHMgLSAxLCBkZmlsZSwgZm9yY2UsIHJ4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0LCBsZWdhY3ksIG9wdGltaXplKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gX3dhbGtfZGlyKGZ1bGxuYW1lLCBkZGlyPWRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGV2ZWxzPW1heGxldmVscyAtIDEsIHF1aWV0PXF1aWV0KQorCitkZWYgY29tcGlsZV9kaXIoZGlyLCBtYXhsZXZlbHM9MTAsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsCisgICAgICAgICAgICAgICAgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSwgd29ya2Vycz0xKToKKyAgICAiIiJCeXRlLWNvbXBpbGUgYWxsIG1vZHVsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSB0cmVlLgorCisgICAgQXJndW1lbnRzIChvbmx5IGRpciBpcyByZXF1aXJlZCk6CisKKyAgICBkaXI6ICAgICAgIHRoZSBkaXJlY3RvcnkgdG8gYnl0ZS1jb21waWxlCisgICAgbWF4bGV2ZWxzOiBtYXhpbXVtIHJlY3Vyc2lvbiBsZXZlbCAoZGVmYXVsdCAxMCkKKyAgICBkZGlyOiAgICAgIHRoZSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUKKyAgICAgICAgICAgICAgIGZpbGUgYXMgaXQgaXMgY29tcGlsZWQgaW50byBlYWNoIGJ5dGUtY29kZSBmaWxlLgorICAgIGZvcmNlOiAgICAgaWYgVHJ1ZSwgZm9yY2UgY29tcGlsYXRpb24sIGV2ZW4gaWYgdGltZXN0YW1wcyBhcmUgdXAtdG8tZGF0ZQorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCisgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocworICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKKyAgICB3b3JrZXJzOiAgIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMKKyAgICAiIiIKKyAgICBmaWxlcyA9IF93YWxrX2RpcihkaXIsIHF1aWV0PXF1aWV0LCBtYXhsZXZlbHM9bWF4bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGRkaXI9ZGRpcikKKyAgICBzdWNjZXNzID0gMQorICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd29ya2VycyA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwJykKKworICAgICAgICB3b3JrZXJzID0gd29ya2VycyBvciBOb25lCisgICAgICAgIHdpdGggUHJvY2Vzc1Bvb2xFeGVjdXRvcihtYXhfd29ya2Vycz13b3JrZXJzKSBhcyBleGVjdXRvcjoKKyAgICAgICAgICAgIHJlc3VsdHMgPSBleGVjdXRvci5tYXAocGFydGlhbChjb21waWxlX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyLCBmb3JjZT1mb3JjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1yeCwgcXVpZXQ9cXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQorICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgZWxzZToKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9maWxlKGZpbGUsIGRkaXIsIGZvcmNlLCByeCwgcXVpZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2FjeSwgb3B0aW1pemUpOgogICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9RmFsc2UsCitkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLAogICAgICAgICAgICAgICAgICBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKToKICAgICAiIiJCeXRlLWNvbXBpbGUgb25lIGZpbGUuCiAKQEAgLTcxLDcgKzk5LDggQEAKICAgICBkZGlyOiAgICAgIGlmIGdpdmVuLCB0aGUgZGlyZWN0b3J5IG5hbWUgY29tcGlsZWQgaW4gdG8gdGhlCiAgICAgICAgICAgICAgICBieXRlLWNvZGUgZmlsZS4KICAgICBmb3JjZTogICAgIGlmIFRydWUsIGZvcmNlIGNvbXBpbGF0aW9uLCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwLXRvLWRhdGUKLSAgICBxdWlldDogICAgIGlmIFRydWUsIGJlIHF1aWV0IGR1cmluZyBjb21waWxhdGlvbgorICAgIHF1aWV0OiAgICAgZnVsbCBvdXRwdXQgd2l0aCBGYWxzZSBvciAwLCBlcnJvcnMgb25seSB3aXRoIDEsCisgICAgICAgICAgICAgICBubyBvdXRwdXQgd2l0aCAyCiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKQEAgLTg3LDExICsxMTYsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbG5hbWUpOgogICAgICAgICBpZiBsZWdhY3k6Ci0gICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpCisgICAgICAgICAgICBjZmlsZSA9IGZ1bGxuYW1lICsgJ2MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+PSAwOgorICAgICAgICAgICAgICAgIG9wdCA9IG9wdGltaXplIGlmIG9wdGltaXplID49IDEgZWxzZSAnJwogICAgICAgICAgICAgICAgIGNmaWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxuYW1lLCBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZ1bGxuYW1lKQogICAgICAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGNmaWxlKQpAQCAtMTE0LDcgKzE0NCwxMCBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgaWYgcXVpZXQ6CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcworICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogRXJyb3IgY29tcGlsaW5nIHshcn0uLi4nLmZvcm1hdChmdWxsbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJyoqKiAnLCBlbmQ9JycpCkBAIC0xMjMsMjAgKzE1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIGlmIHF1aWV0OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKKyAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgogICAgICAgICAgICAgICAgICAgICBwcmludCgnKioqIEVycm9yIGNvbXBpbGluZyB7IXJ9Li4uJy5mb3JtYXQoZnVsbG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcqKiogJywgZW5kPScnKQogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCiAgICAgcmV0dXJuIHN1Y2Nlc3MKIAotZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PUZhbHNlLAorZGVmIGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj0xLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsCiAgICAgICAgICAgICAgICAgIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpOgogICAgICIiIkJ5dGUtY29tcGlsZSBhbGwgbW9kdWxlIG9uIHN5cy5wYXRoLgogCkBAIC0xNDUsMTQgKzE3OSwxNSBAQAogICAgIHNraXBfY3VyZGlyOiBpZiB0cnVlLCBza2lwIGN1cnJlbnQgZGlyZWN0b3J5IChkZWZhdWx0IFRydWUpCiAgICAgbWF4bGV2ZWxzOiAgIG1heCByZWN1cnNpb24gbGV2ZWwgKGRlZmF1bHQgMCkKICAgICBmb3JjZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCi0gICAgcXVpZXQ6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IEZhbHNlKQorICAgIHF1aWV0OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCAwKQogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgogICAgIHN1Y2Nlc3MgPSAxCiAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKICAgICAgICAgaWYgKG5vdCBkaXIgb3IgZGlyID09IG9zLmN1cmRpcikgYW5kIHNraXBfY3VyZGlyOgotICAgICAgICAgICAgcHJpbnQoJ1NraXBwaW5nIGN1cnJlbnQgZGlyZWN0b3J5JykKKyAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKKyAgICAgICAgICAgICAgICBwcmludCgnU2tpcHBpbmcgY3VycmVudCBkaXJlY3RvcnknKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgYW5kIGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzLCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlLCBxdWlldD1xdWlldCwKQEAgLTE2OSwxMCArMjA0LDE1IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9MCwKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9MTAsIGRlc3Q9J21heGxldmVscycsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCByZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgdHlwZT1pbnQsIGRlc3Q9J3JlY3Vyc2lvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnY29udHJvbCB0aGUgbWF4aW11bSByZWN1cnNpb24gbGV2ZWwuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZiBgLWxgIGFuZCBgLXJgIG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZW4gYC1yYCB0YWtlcyBwcmVjZWRlbmNlLicpKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nZm9yY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZm9yY2UgcmVidWlsZCBldmVuIGlmIHRpbWVzdGFtcHMgYXJlIHVwIHRvIGRhdGUnKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncXVpZXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXMnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgYWN0aW9uPSdjb3VudCcsIGRlc3Q9J3F1aWV0JywgZGVmYXVsdD0wLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IG9ubHkgZXJyb3IgbWVzc2FnZXM7IC1xcSB3aWxsIHN1cHByZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBtZXNzYWdlcyBhcyB3ZWxsLicpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdsZWdhY3knLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGxlZ2FjeSAocHJlLVBFUDMxNDcpIGNvbXBpbGVkIGZpbGUgbG9jYXRpb25zJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZCcsIG1ldGF2YXI9J0RFU1RESVInLCAgZGVzdD0nZGRpcicsIGRlZmF1bHQ9Tm9uZSwKQEAgLTE5Miw4ICsyMzIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCd6ZXJvIG9yIG1vcmUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBjb21waWxlOyBpZiBubyBhcmd1bWVudHMgZ2l2ZW4sIGRlZmF1bHRzICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZXF1aXZhbGVudCBvZiAtbCBzeXMucGF0aCcpKQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWonLCAnLS13b3JrZXJzJywgZGVmYXVsdD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsIGhlbHA9J1J1biBjb21waWxlYWxsIGNvbmN1cnJlbnRseScpCiAKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIGNvbXBpbGVfZGVzdHMgPSBhcmdzLmNvbXBpbGVfZGVzdAogCiAgICAgaWYgKGFyZ3MuZGRpciBhbmQgKGxlbihjb21waWxlX2Rlc3RzKSAhPSAxCkBAIC0yMDMsNiArMjQ1LDEyIEBACiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBhcmdzLnJ4ID0gcmUuY29tcGlsZShhcmdzLnJ4KQogCisKKyAgICBpZiBhcmdzLnJlY3Vyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgbWF4bGV2ZWxzID0gYXJncy5yZWN1cnNpb24KKyAgICBlbHNlOgorICAgICAgICBtYXhsZXZlbHMgPSBhcmdzLm1heGxldmVscworCiAgICAgIyBpZiBmbGlzdCBpcyBwcm92aWRlZCB0aGVuIGxvYWQgaXQKICAgICBpZiBhcmdzLmZsaXN0OgogICAgICAgICB0cnk6CkBAIC0yMTAsOSArMjU4LDEzIEBACiAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZV9kZXN0cy5hcHBlbmQobGluZS5zdHJpcCgpKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJFcnJvciByZWFkaW5nIGZpbGUgbGlzdCB7fSIuZm9ybWF0KGFyZ3MuZmxpc3QpKQorICAgICAgICAgICAgaWYgYXJncy5xdWlldCA8IDI6CisgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yIHJlYWRpbmcgZmlsZSBsaXN0IHt9Ii5mb3JtYXQoYXJncy5mbGlzdCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGlmIGFyZ3Mud29ya2VycyBpcyBub3QgTm9uZToKKyAgICAgICAgYXJncy53b3JrZXJzID0gYXJncy53b3JrZXJzIG9yIE5vbmUKKwogICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgdHJ5OgogICAgICAgICBpZiBjb21waWxlX2Rlc3RzOgpAQCAtMjIyLDE2ICsyNzQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnF1aWV0LCBhcmdzLmxlZ2FjeSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29tcGlsZV9kaXIoZGVzdCwgYXJncy5tYXhsZXZlbHMsIGFyZ3MuZGRpciwKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZGlyKGRlc3QsIG1heGxldmVscywgYXJncy5kZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5mb3JjZSwgYXJncy5yeCwgYXJncy5xdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubGVnYWN5LCB3b3JrZXJzPWFyZ3Mud29ya2Vycyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZV9wYXRoKGxlZ2FjeT1hcmdzLmxlZ2FjeSwgZm9yY2U9YXJncy5mb3JjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9YXJncy5xdWlldCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQorICAgICAgICBpZiBhcmdzLnF1aWV0IDwgMjoKKyAgICAgICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRlZF0iKQogICAgICAgICByZXR1cm4gRmFsc2UKICAgICByZXR1cm4gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQppbmRleCBhY2QwNWQwLi45ZTQ0NzEzIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKQEAgLTMwMiwxNyArMzAyLDIwIEBACiAgICAgICAgIHdpdGggc2VsZi5fY29uZGl0aW9uOgogICAgICAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gRklOSVNIRUQ6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxGdXR1cmUgYXQgJXMgc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBoZXgoaWQoc2VsZikpLAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXMgcmFpc2VkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24uX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPEZ1dHVyZSBhdCAlcyBzdGF0ZT0lcyByZXR1cm5lZCAlcz4nICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgaGV4KGlkKHNlbGYpKSwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8JXMgYXQgJSN4IHN0YXRlPSVzIHJldHVybmVkICVzPicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgX1NUQVRFX1RPX0RFU0NSSVBUSU9OX01BUFtzZWxmLl9zdGF0ZV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXN1bHQuX19jbGFzc19fLl9fbmFtZV9fKQotICAgICAgICAgICAgcmV0dXJuICc8RnV0dXJlIGF0ICVzIHN0YXRlPSVzPicgJSAoCi0gICAgICAgICAgICAgICAgICAgIGhleChpZChzZWxmKSksCisgICAgICAgICAgICByZXR1cm4gJzwlcyBhdCAlI3ggc3RhdGU9JXM+JyAlICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAogICAgICAgICAgICAgICAgICAgIF9TVEFURV9UT19ERVNDUklQVElPTl9NQVBbc2VsZi5fc3RhdGVdKQogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTUxNyw3ICs1MjAsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCiAKLSAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUpOgorICAgIGRlZiBtYXAoc2VsZiwgZm4sICppdGVyYWJsZXMsIHRpbWVvdXQ9Tm9uZSwgY2h1bmtzaXplPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGEgaXRlcmF0b3IgZXF1aXZhbGVudCB0byBtYXAoZm4sIGl0ZXIpLgogCiAgICAgICAgIEFyZ3M6CkBAIC01MjUsNiArNTI4LDEwIEBACiAgICAgICAgICAgICAgICAgcGFzc2VkIGl0ZXJhYmxlcy4KICAgICAgICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKICAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgorICAgICAgICAgICAgY2h1bmtzaXplOiBUaGUgc2l6ZSBvZiB0aGUgY2h1bmtzIHRoZSBpdGVyYWJsZSB3aWxsIGJlIGJyb2tlbiBpbnRvCisgICAgICAgICAgICAgICAgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byBhIGNoaWxkIHByb2Nlc3MuIFRoaXMgYXJndW1lbnQgaXMgb25seQorICAgICAgICAgICAgICAgIHVzZWQgYnkgUHJvY2Vzc1Bvb2xFeGVjdXRvcjsgaXQgaXMgaWdub3JlZCBieQorICAgICAgICAgICAgICAgIFRocmVhZFBvb2xFeGVjdXRvci4KIAogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgQW4gaXRlcmF0b3IgZXF1aXZhbGVudCB0bzogbWFwKGZ1bmMsICppdGVyYWJsZXMpIGJ1dCB0aGUgY2FsbHMgbWF5CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKaW5kZXggMDdiNTIyNS4uM2RkNmRhMSAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQpAQCAtNTUsNiArNTUsOSBAQAogZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHdlYWtyZWYKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdHJhY2ViYWNrCiAKICMgV29ya2VycyBhcmUgY3JlYXRlZCBhcyBkYWVtb24gdGhyZWFkcyBhbmQgcHJvY2Vzc2VzLiBUaGlzIGlzIGRvbmUgdG8gYWxsb3cgdGhlCiAjIGludGVycHJldGVyIHRvIGV4aXQgd2hlbiB0aGVyZSBhcmUgc3RpbGwgaWRsZSBwcm9jZXNzZXMgaW4gYQpAQCAtODgsNiArOTEsMjcgQEAKICMgKEZ1dHVyZXMgaW4gdGhlIGNhbGwgcXVldWUgY2Fubm90IGJlIGNhbmNlbGxlZCkuCiBFWFRSQV9RVUVVRURfQ0FMTFMgPSAxCiAKKyMgSGFjayB0byBlbWJlZCBzdHJpbmdpZmljYXRpb24gb2YgcmVtb3RlIHRyYWNlYmFjayBpbiBsb2NhbCB0cmFjZWJhY2sKKworY2xhc3MgX1JlbW90ZVRyYWNlYmFjayhFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Yik6CisgICAgICAgIHNlbGYudGIgPSB0YgorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50YgorCitjbGFzcyBfRXhjZXB0aW9uV2l0aFRyYWNlYmFjazoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjLCB0Yik6CisgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShleGMpLCBleGMsIHRiKQorICAgICAgICB0YiA9ICcnLmpvaW4odGIpCisgICAgICAgIHNlbGYuZXhjID0gZXhjCisgICAgICAgIHNlbGYudGIgPSAnXG4iIiJcbiVzIiIiJyAlIHRiCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBfcmVidWlsZF9leGMsIChzZWxmLmV4Yywgc2VsZi50YikKKworZGVmIF9yZWJ1aWxkX2V4YyhleGMsIHRiKToKKyAgICBleGMuX19jYXVzZV9fID0gX1JlbW90ZVRyYWNlYmFjayh0YikKKyAgICByZXR1cm4gZXhjCisKIGNsYXNzIF9Xb3JrSXRlbShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdXR1cmUsIGZuLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICBzZWxmLmZ1dHVyZSA9IGZ1dHVyZQpAQCAtMTA4LDYgKzEzMiwyNiBAQAogICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYua3dhcmdzID0ga3dhcmdzCiAKK2RlZiBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemUpOgorICAgICIiIiBJdGVyYXRlcyBvdmVyIHppcCgpZWQgaXRlcmFibGVzIGluIGNodW5rcy4gIiIiCisgICAgaXQgPSB6aXAoKml0ZXJhYmxlcykKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBjaHVuayA9IHR1cGxlKGl0ZXJ0b29scy5pc2xpY2UoaXQsIGNodW5rc2l6ZSkpCisgICAgICAgIGlmIG5vdCBjaHVuazoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB5aWVsZCBjaHVuaworCitkZWYgX3Byb2Nlc3NfY2h1bmsoZm4sIGNodW5rKToKKyAgICAiIiIgUHJvY2Vzc2VzIGEgY2h1bmsgb2YgYW4gaXRlcmFibGUgcGFzc2VkIHRvIG1hcC4KKworICAgIFJ1bnMgdGhlIGZ1bmN0aW9uIHBhc3NlZCB0byBtYXAoKSBvbiBhIGNodW5rIG9mIHRoZQorICAgIGl0ZXJhYmxlIHBhc3NlZCB0byBtYXAuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHJ1biBpbiBhIHNlcGFyYXRlIHByb2Nlc3MuCisKKyAgICAiIiIKKyAgICByZXR1cm4gW2ZuKCphcmdzKSBmb3IgYXJncyBpbiBjaHVua10KKwogZGVmIF9wcm9jZXNzX3dvcmtlcihjYWxsX3F1ZXVlLCByZXN1bHRfcXVldWUpOgogICAgICIiIkV2YWx1YXRlcyBjYWxscyBmcm9tIGNhbGxfcXVldWUgYW5kIHBsYWNlcyB0aGUgcmVzdWx0cyBpbiByZXN1bHRfcXVldWUuCiAKQEAgLTEzMCw4ICsxNzQsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gY2FsbF9pdGVtLmZuKCpjYWxsX2l0ZW0uYXJncywgKipjYWxsX2l0ZW0ua3dhcmdzKQogICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uPWUpKQorICAgICAgICAgICAgZXhjID0gX0V4Y2VwdGlvbldpdGhUcmFjZWJhY2soZSwgZS5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChfUmVzdWx0SXRlbShjYWxsX2l0ZW0ud29ya19pZCwgZXhjZXB0aW9uPWV4YykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHRfcXVldWUucHV0KF9SZXN1bHRJdGVtKGNhbGxfaXRlbS53b3JrX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9cikpCkBAIC0zMzQsNiArMzc4LDkgQEAKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gb3MuY3B1X2NvdW50KCkgb3IgMQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtYXhfd29ya2VycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIikKKwogICAgICAgICAgICAgc2VsZi5fbWF4X3dvcmtlcnMgPSBtYXhfd29ya2VycwogCiAgICAgICAgICMgTWFrZSB0aGUgY2FsbCBxdWV1ZSBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyB0bwpAQCAtNDA4LDYgKzQ1NSwzNSBAQAogICAgICAgICAgICAgcmV0dXJuIGYKICAgICBzdWJtaXQuX19kb2NfXyA9IF9iYXNlLkV4ZWN1dG9yLnN1Ym1pdC5fX2RvY19fCiAKKyAgICBkZWYgbWFwKHNlbGYsIGZuLCAqaXRlcmFibGVzLCB0aW1lb3V0PU5vbmUsIGNodW5rc2l6ZT0xKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG8gbWFwKGZuLCBpdGVyKS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZm46IEEgY2FsbGFibGUgdGhhdCB3aWxsIHRha2UgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlCisgICAgICAgICAgICAgICAgcGFzc2VkIGl0ZXJhYmxlcy4KKyAgICAgICAgICAgIHRpbWVvdXQ6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQuIElmIE5vbmUsIHRoZW4gdGhlcmUKKyAgICAgICAgICAgICAgICBpcyBubyBsaW1pdCBvbiB0aGUgd2FpdCB0aW1lLgorICAgICAgICAgICAgY2h1bmtzaXplOiBJZiBncmVhdGVyIHRoYW4gb25lLCB0aGUgaXRlcmFibGVzIHdpbGwgYmUgY2hvcHBlZCBpbnRvCisgICAgICAgICAgICAgICAgY2h1bmtzIG9mIHNpemUgY2h1bmtzaXplIGFuZCBzdWJtaXR0ZWQgdG8gdGhlIHByb2Nlc3MgcG9vbC4KKyAgICAgICAgICAgICAgICBJZiBzZXQgdG8gb25lLCB0aGUgaXRlbXMgaW4gdGhlIGxpc3Qgd2lsbCBiZSBzZW50IG9uZSBhdCBhIHRpbWUuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIGVxdWl2YWxlbnQgdG86IG1hcChmdW5jLCAqaXRlcmFibGVzKSBidXQgdGhlIGNhbGxzIG1heQorICAgICAgICAgICAgYmUgZXZhbHVhdGVkIG91dC1vZi1vcmRlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBUaW1lb3V0RXJyb3I6IElmIHRoZSBlbnRpcmUgcmVzdWx0IGl0ZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICBiZWZvcmUgdGhlIGdpdmVuIHRpbWVvdXQuCisgICAgICAgICAgICBFeGNlcHRpb246IElmIGZuKCphcmdzKSByYWlzZXMgZm9yIGFueSB2YWx1ZXMuCisgICAgICAgICIiIgorICAgICAgICBpZiBjaHVua3NpemUgPCAxOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2h1bmtzaXplIG11c3QgYmUgPj0gMS4iKQorCisgICAgICAgIHJlc3VsdHMgPSBzdXBlcigpLm1hcChwYXJ0aWFsKF9wcm9jZXNzX2NodW5rLCBmbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2V0X2NodW5rcygqaXRlcmFibGVzLCBjaHVua3NpemU9Y2h1bmtzaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKHJlc3VsdHMpCisKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgd2FpdD1UcnVlKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgogICAgICAgICAgICAgc2VsZi5fc2h1dGRvd25fdGhyZWFkID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQppbmRleCBmOWJlYjBmLi4zYWU0NDJkIDEwMDY0NAotLS0gYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgd2Vha3JlZgoraW1wb3J0IG9zCiAKICMgV29ya2VycyBhcmUgY3JlYXRlZCBhcyBkYWVtb24gdGhyZWFkcy4gVGhpcyBpcyBkb25lIHRvIGFsbG93IHRoZSBpbnRlcnByZXRlcgogIyB0byBleGl0IHdoZW4gdGhlcmUgYXJlIHN0aWxsIGlkbGUgdGhyZWFkcyBpbiBhIFRocmVhZFBvb2xFeGVjdXRvcidzIHRocmVhZApAQCAtODAsMTMgKzgxLDIwIEBACiAgICAgICAgIF9iYXNlLkxPR0dFUi5jcml0aWNhbCgnRXhjZXB0aW9uIGluIHdvcmtlcicsIGV4Y19pbmZvPVRydWUpCiAKIGNsYXNzIFRocmVhZFBvb2xFeGVjdXRvcihfYmFzZS5FeGVjdXRvcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KICAgICAgICAgIiIiCisgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CisgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgorICAgICAgICAgICAgIyB1c2VkIHRvIG92ZXJsYXAgSS9PIGluc3RlYWQgb2YgQ1BVIHdvcmsuCisgICAgICAgICAgICBtYXhfd29ya2VycyA9IChvcy5jcHVfY291bnQoKSBvciAxKSAqIDUKKyAgICAgICAgaWYgbWF4X3dvcmtlcnMgPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1heF93b3JrZXJzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKQorCiAgICAgICAgIHNlbGYuX21heF93b3JrZXJzID0gbWF4X3dvcmtlcnMKICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSA9IHF1ZXVlLlF1ZXVlKCkKICAgICAgICAgc2VsZi5fdGhyZWFkcyA9IHNldCgpCmRpZmYgLS1naXQgYS9MaWIvY29uZmlncGFyc2VyLnB5IGIvTGliL2NvbmZpZ3BhcnNlci5weQppbmRleCBkY2I3ZWM0Li4zYTlmYjU2IDEwMDY0NAotLS0gYS9MaWIvY29uZmlncGFyc2VyLnB5CisrKyBiL0xpYi9jb25maWdwYXJzZXIucHkKQEAgLTE3LDcgKzE3LDggQEAKICAgICBfX2luaXRfXyhkZWZhdWx0cz1Ob25lLCBkaWN0X3R5cGU9X2RlZmF1bHRfZGljdCwgYWxsb3dfbm9fdmFsdWU9RmFsc2UsCiAgICAgICAgICAgICAgZGVsaW1pdGVycz0oJz0nLCAnOicpLCBjb21tZW50X3ByZWZpeGVzPSgnIycsICc7JyksCiAgICAgICAgICAgICAgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwgc3RyaWN0PVRydWUsCi0gICAgICAgICAgICAgZW1wdHlfbGluZXNfaW5fdmFsdWVzPVRydWUpOgorICAgICAgICAgICAgIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLCBkZWZhdWx0X3NlY3Rpb249J0RFRkFVTFQnLAorICAgICAgICAgICAgIGludGVycG9sYXRpb249PHVuc2V0PiwgY29udmVydGVycz08dW5zZXQ+KToKICAgICAgICAgQ3JlYXRlIHRoZSBwYXJzZXIuIFdoZW4gYGRlZmF1bHRzJyBpcyBnaXZlbiwgaXQgaXMgaW5pdGlhbGl6ZWQgaW50byB0aGUKICAgICAgICAgZGljdGlvbmFyeSBvciBpbnRyaW5zaWMgZGVmYXVsdHMuIFRoZSBrZXlzIG11c3QgYmUgc3RyaW5ncywgdGhlIHZhbHVlcwogICAgICAgICBtdXN0IGJlIGFwcHJvcHJpYXRlIGZvciAlKClzIHN0cmluZyBpbnRlcnBvbGF0aW9uLgpAQCAtNDcsNiArNDgsMjUgQEAKICAgICAgICAgV2hlbiBgYWxsb3dfbm9fdmFsdWUnIGlzIFRydWUgKGRlZmF1bHQ6IEZhbHNlKSwgb3B0aW9ucyB3aXRob3V0CiAgICAgICAgIHZhbHVlcyBhcmUgYWNjZXB0ZWQ7IHRoZSB2YWx1ZSBwcmVzZW50ZWQgZm9yIHRoZXNlIGlzIE5vbmUuCiAKKyAgICAgICAgV2hlbiBgZGVmYXVsdF9zZWN0aW9uJyBpcyBnaXZlbiwgdGhlIG5hbWUgb2YgdGhlIHNwZWNpYWwgc2VjdGlvbiBpcworICAgICAgICBuYW1lZCBhY2NvcmRpbmdseS4gQnkgZGVmYXVsdCBpdCBpcyBjYWxsZWQgYGAiREVGQVVMVCJgYCBidXQgdGhpcyBjYW4KKyAgICAgICAgYmUgY3VzdG9taXplZCB0byBwb2ludCB0byBhbnkgb3RoZXIgdmFsaWQgc2VjdGlvbiBuYW1lLiBJdHMgY3VycmVudAorICAgICAgICB2YWx1ZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZSBgYHBhcnNlcl9pbnN0YW5jZS5kZWZhdWx0X3NlY3Rpb25gYAorICAgICAgICBhdHRyaWJ1dGUgYW5kIG1heSBiZSBtb2RpZmllZCBhdCBydW50aW1lLgorCisgICAgICAgIFdoZW4gYGludGVycG9sYXRpb25gIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYW4gSW50ZXJwb2xhdGlvbiBzdWJjbGFzcworICAgICAgICBpbnN0YW5jZS4gSXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBoYW5kbGVyIGZvciBvcHRpb24gdmFsdWUKKyAgICAgICAgcHJlLXByb2Nlc3Npbmcgd2hlbiB1c2luZyBnZXR0ZXJzLiBSYXdDb25maWdQYXJzZXIgb2JqZWN0IHMgZG9uJ3QgZG8KKyAgICAgICAgYW55IHNvcnQgb2YgaW50ZXJwb2xhdGlvbiwgd2hlcmVhcyBDb25maWdQYXJzZXIgdXNlcyBhbiBpbnN0YW5jZSBvZgorICAgICAgICBCYXNpY0ludGVycG9sYXRpb24uIFRoZSBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgYSBgYHpjLmJ1aWxkYm90YGAKKyAgICAgICAgaW5zcGlyZWQgRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFdoZW4gYGNvbnZlcnRlcnNgIGlzIGdpdmVuLCBpdCBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IHdoZXJlIGVhY2gga2V5CisgICAgICAgIHJlcHJlc2VudHMgdGhlIG5hbWUgb2YgYSB0eXBlIGNvbnZlcnRlciBhbmQgZWFjaCB2YWx1ZSBpcyBhIGNhbGxhYmxlCisgICAgICAgIGltcGxlbWVudGluZyB0aGUgY29udmVyc2lvbiBmcm9tIHN0cmluZyB0byB0aGUgZGVzaXJlZCBkYXRhdHlwZS4gRXZlcnkKKyAgICAgICAgY29udmVydGVyIGdldHMgaXRzIGNvcnJlc3BvbmRpbmcgZ2V0KigpIG1ldGhvZCBvbiB0aGUgcGFyc2VyIG9iamVjdCBhbmQKKyAgICAgICAgc2VjdGlvbiBwcm94aWVzLgorCiAgICAgc2VjdGlvbnMoKQogICAgICAgICBSZXR1cm4gYWxsIHRoZSBjb25maWd1cmF0aW9uIHNlY3Rpb24gbmFtZXMsIHNhbnMgREVGQVVMVC4KIApAQCAtMTI5LDkgKzE0OSwxMSBAQAogCiBfX2FsbF9fID0gWyJOb1NlY3Rpb25FcnJvciIsICJEdXBsaWNhdGVPcHRpb25FcnJvciIsICJEdXBsaWNhdGVTZWN0aW9uRXJyb3IiLAogICAgICAgICAgICAiTm9PcHRpb25FcnJvciIsICJJbnRlcnBvbGF0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvbkRlcHRoRXJyb3IiLAotICAgICAgICAgICAiSW50ZXJwb2xhdGlvblN5bnRheEVycm9yIiwgIlBhcnNpbmdFcnJvciIsCi0gICAgICAgICAgICJNaXNzaW5nU2VjdGlvbkhlYWRlckVycm9yIiwKKyAgICAgICAgICAgIkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IiLCAiSW50ZXJwb2xhdGlvblN5bnRheEVycm9yIiwKKyAgICAgICAgICAgIlBhcnNpbmdFcnJvciIsICJNaXNzaW5nU2VjdGlvbkhlYWRlckVycm9yIiwKICAgICAgICAgICAgIkNvbmZpZ1BhcnNlciIsICJTYWZlQ29uZmlnUGFyc2VyIiwgIlJhd0NvbmZpZ1BhcnNlciIsCisgICAgICAgICAgICJJbnRlcnBvbGF0aW9uIiwgIkJhc2ljSW50ZXJwb2xhdGlvbiIsICAiRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIiwKKyAgICAgICAgICAgIkxlZ2FjeUludGVycG9sYXRpb24iLCAiU2VjdGlvblByb3h5IiwgIkNvbnZlcnRlck1hcHBpbmciLAogICAgICAgICAgICAiREVGQVVMVFNFQ1QiLCAiTUFYX0lOVEVSUE9MQVRJT05fREVQVEgiXQogCiBERUZBVUxUU0VDVCA9ICJERUZBVUxUIgpAQCAtNDA4LDcgKzQzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHYgPSBtYXBbdmFyXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHNlY3Rpb24sIHJhd3ZhbCwgdmFyKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICBpZiAiJSIgaW4gdjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdGlvbiwgYWNjdW0sIHYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgbWFwLCBkZXB0aCArIDEpCkBAIC00ODEsNyArNTAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0aGFuIG9uZSAnOicgZm91bmQ6ICVyIiAlIChyZXN0LCkpCiAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlFcnJvciwgTm9TZWN0aW9uRXJyb3IsIE5vT3B0aW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsICI6Ii5qb2luKHBhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsICI6Ii5qb2luKHBhdGgpKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICBpZiAiJCIgaW4gdjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGVfc29tZShwYXJzZXIsIG9wdCwgYWNjdW0sIHYsIHNlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChwYXJzZXIuaXRlbXMoc2VjdCwgcmF3PVRydWUpKSwKQEAgLTUxNCw3ICs1MzYsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICUgdmFycwogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnRlcnBvbGF0aW9uTWlzc2luZ09wdGlvbkVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCBzZWN0aW9uLCByYXd2YWwsIGUuYXJnc1swXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgc2VjdGlvbiwgcmF3dmFsLCBlLmFyZ3NbMF0pIGZyb20gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiB2YWx1ZSBhbmQgIiUoIiBpbiB2YWx1ZToKQEAgLTU3OSwxMSArNjAxLDEyIEBACiAgICAgICAgICAgICAgICAgIGNvbW1lbnRfcHJlZml4ZXM9KCcjJywgJzsnKSwgaW5saW5lX2NvbW1lbnRfcHJlZml4ZXM9Tm9uZSwKICAgICAgICAgICAgICAgICAgc3RyaWN0PVRydWUsIGVtcHR5X2xpbmVzX2luX3ZhbHVlcz1UcnVlLAogICAgICAgICAgICAgICAgICBkZWZhdWx0X3NlY3Rpb249REVGQVVMVFNFQ1QsCi0gICAgICAgICAgICAgICAgIGludGVycG9sYXRpb249X1VOU0VUKToKKyAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbj1fVU5TRVQsIGNvbnZlcnRlcnM9X1VOU0VUKToKIAogICAgICAgICBzZWxmLl9kaWN0ID0gZGljdF90eXBlCiAgICAgICAgIHNlbGYuX3NlY3Rpb25zID0gc2VsZi5fZGljdCgpCiAgICAgICAgIHNlbGYuX2RlZmF1bHRzID0gc2VsZi5fZGljdCgpCisgICAgICAgIHNlbGYuX2NvbnZlcnRlcnMgPSBDb252ZXJ0ZXJNYXBwaW5nKHNlbGYpCiAgICAgICAgIHNlbGYuX3Byb3hpZXMgPSBzZWxmLl9kaWN0KCkKICAgICAgICAgc2VsZi5fcHJveGllc1tkZWZhdWx0X3NlY3Rpb25dID0gU2VjdGlvblByb3h5KHNlbGYsIGRlZmF1bHRfc2VjdGlvbikKICAgICAgICAgaWYgZGVmYXVsdHM6CkBAIC02MTEsNiArNjM0LDggQEAKICAgICAgICAgICAgIHNlbGYuX2ludGVycG9sYXRpb24gPSBzZWxmLl9ERUZBVUxUX0lOVEVSUE9MQVRJT04KICAgICAgICAgaWYgc2VsZi5faW50ZXJwb2xhdGlvbiBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5faW50ZXJwb2xhdGlvbiA9IEludGVycG9sYXRpb24oKQorICAgICAgICBpZiBjb252ZXJ0ZXJzIGlzIG5vdCBfVU5TRVQ6CisgICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZXJzLnVwZGF0ZShjb252ZXJ0ZXJzKQogCiAgICAgZGVmIGRlZmF1bHRzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdHMKQEAgLTY0Niw3ICs2NzEsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcHRzID0gc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0uY29weSgpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pCisgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICAgb3B0cy51cGRhdGUoc2VsZi5fZGVmYXVsdHMpCiAgICAgICAgIHJldHVybiBsaXN0KG9wdHMua2V5cygpKQogCkBAIC03NzQsMzYgKzc5OSwzMSBAQAogICAgIGRlZiBfZ2V0KHNlbGYsIHNlY3Rpb24sIGNvbnYsIG9wdGlvbiwgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gY29udihzZWxmLmdldChzZWN0aW9uLCBvcHRpb24sICoqa3dhcmdzKSkKIAotICAgIGRlZiBnZXRpbnQoc2VsZiwgc2VjdGlvbiwgb3B0aW9uLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSwKLSAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCk6CisgICAgZGVmIF9nZXRfY29udihzZWxmLCBzZWN0aW9uLCBvcHRpb24sIGNvbnYsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAorICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgaW50LCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgY29udiwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQogICAgICAgICBleGNlcHQgKE5vU2VjdGlvbkVycm9yLCBOb09wdGlvbkVycm9yKToKICAgICAgICAgICAgIGlmIGZhbGxiYWNrIGlzIF9VTlNFVDoKICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sKKyAgICAgICAgICAgIHJldHVybiBmYWxsYmFjaworCisgICAgIyBnZXRpbnQsIGdldGZsb2F0IGFuZCBnZXRib29sZWFuIHByb3ZpZGVkIGRpcmVjdGx5IGZvciBiYWNrd2FyZHMgY29tcGF0CisgICAgZGVmIGdldGludChzZWxmLCBzZWN0aW9uLCBvcHRpb24sICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAorICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGludCwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQogCiAgICAgZGVmIGdldGZsb2F0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCi0gICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgZmxvYXQsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzKQotICAgICAgICBleGNlcHQgKE5vU2VjdGlvbkVycm9yLCBOb09wdGlvbkVycm9yKToKLSAgICAgICAgICAgIGlmIGZhbGxiYWNrIGlzIF9VTlNFVDoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsbGJhY2sKKyAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGZsb2F0LCByYXc9cmF3LCB2YXJzPXZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaywgKiprd2FyZ3MpCiAKICAgICBkZWYgZ2V0Ym9vbGVhbihzZWxmLCBzZWN0aW9uLCBvcHRpb24sICosIHJhdz1GYWxzZSwgdmFycz1Ob25lLAotICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPV9VTlNFVCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoc2VjdGlvbiwgc2VsZi5fY29udmVydF90b19ib29sZWFuLCBvcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1yYXcsIHZhcnM9dmFycykKLSAgICAgICAgZXhjZXB0IChOb1NlY3Rpb25FcnJvciwgTm9PcHRpb25FcnJvcik6Ci0gICAgICAgICAgICBpZiBmYWxsYmFjayBpcyBfVU5TRVQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9X1VOU0VULCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIHNlbGYuX2NvbnZlcnRfdG9fYm9vbGVhbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1yYXcsIHZhcnM9dmFycywgZmFsbGJhY2s9ZmFsbGJhY2ssICoqa3dhcmdzKQogCiAgICAgZGVmIGl0ZW1zKHNlbGYsIHNlY3Rpb249X1VOU0VULCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgKG5hbWUsIHZhbHVlKSB0dXBsZXMgZm9yIGVhY2ggb3B0aW9uIGluIGEgc2VjdGlvbi4KQEAgLTg3NSw3ICs4OTUsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlY3RkaWN0ID0gc2VsZi5fc2VjdGlvbnNbc2VjdGlvbl0KICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKQorICAgICAgICAgICAgICAgIHJhaXNlIE5vU2VjdGlvbkVycm9yKHNlY3Rpb24pIGZyb20gTm9uZQogICAgICAgICBzZWN0ZGljdFtzZWxmLm9wdGlvbnhmb3JtKG9wdGlvbildID0gdmFsdWUKIAogICAgIGRlZiB3cml0ZShzZWxmLCBmcCwgc3BhY2VfYXJvdW5kX2RlbGltaXRlcnM9VHJ1ZSk6CkBAIC05MTYsNyArOTM2LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWN0ZGljdCA9IHNlbGYuX3NlY3Rpb25zW3NlY3Rpb25dCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTm9TZWN0aW9uRXJyb3Ioc2VjdGlvbikKKyAgICAgICAgICAgICAgICByYWlzZSBOb1NlY3Rpb25FcnJvcihzZWN0aW9uKSBmcm9tIE5vbmUKICAgICAgICAgb3B0aW9uID0gc2VsZi5vcHRpb254Zm9ybShvcHRpb24pCiAgICAgICAgIGV4aXN0ZWQgPSBvcHRpb24gaW4gc2VjdGRpY3QKICAgICAgICAgaWYgZXhpc3RlZDoKQEAgLTExNTMsNiArMTE3MywxMCBAQAogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJvcHRpb24gdmFsdWVzIG11c3QgYmUgc3RyaW5ncyIpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udmVydGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnZlcnRlcnMKKwogCiBjbGFzcyBDb25maWdQYXJzZXIoUmF3Q29uZmlnUGFyc2VyKToKICAgICAiIiJDb25maWdQYXJzZXIgaW1wbGVtZW50aW5nIGludGVycG9sYXRpb24uIiIiCkBAIC0xMTkzLDYgKzEyMTcsMTAgQEAKICAgICAgICAgIiIiQ3JlYXRlcyBhIHZpZXcgb24gYSBzZWN0aW9uIG9mIHRoZSBzcGVjaWZpZWQgYG5hbWVgIGluIGBwYXJzZXJgLiIiIgogICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgZm9yIGNvbnYgaW4gcGFyc2VyLmNvbnZlcnRlcnM6CisgICAgICAgICAgICBrZXkgPSAnZ2V0JyArIGNvbnYKKyAgICAgICAgICAgIGdldHRlciA9IGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuZ2V0LCBfaW1wbD1nZXRhdHRyKHBhcnNlciwga2V5KSkKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCBnZXR0ZXIpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnPFNlY3Rpb246IHt9PicuZm9ybWF0KHNlbGYuX25hbWUpCkBAIC0xMjI2LDIyICsxMjU0LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZGVmYXVsdHMoKQogCi0gICAgZGVmIGdldChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXQoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCi0gICAgZGVmIGdldGludChzZWxmLCBvcHRpb24sIGZhbGxiYWNrPU5vbmUsICosIHJhdz1GYWxzZSwgdmFycz1Ob25lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlci5nZXRpbnQoc2VsZi5fbmFtZSwgb3B0aW9uLCByYXc9cmF3LCB2YXJzPXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCi0gICAgZGVmIGdldGZsb2F0KHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUpOgotICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VyLmdldGZsb2F0KHNlbGYuX25hbWUsIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCi0gICAgZGVmIGdldGJvb2xlYW4oc2VsZiwgb3B0aW9uLCBmYWxsYmFjaz1Ob25lLCAqLCByYXc9RmFsc2UsIHZhcnM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJzZXIuZ2V0Ym9vbGVhbihzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrKQotCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHBhcnNlcihzZWxmKToKICAgICAgICAgIyBUaGUgcGFyc2VyIG9iamVjdCBvZiB0aGUgcHJveHkgaXMgcmVhZC1vbmx5LgpAQCAtMTI1MSwzICsxMjYzLDc3IEBACiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHNlY3Rpb24gb24gYSBwcm94eSBpcyByZWFkLW9ubHkuCiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgZ2V0KHNlbGYsIG9wdGlvbiwgZmFsbGJhY2s9Tm9uZSwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICBfaW1wbD1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgICIiIkdldCBhbiBvcHRpb24gdmFsdWUuCisKKyAgICAgICAgVW5sZXNzIGBmYWxsYmFja2AgaXMgcHJvdmlkZWQsIGBOb25lYCB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBvcHRpb24KKyAgICAgICAgaXMgbm90IGZvdW5kLgorCisgICAgICAgICIiIgorICAgICAgICAjIElmIGBfaW1wbGAgaXMgcHJvdmlkZWQsIGl0IHNob3VsZCBiZSBhIGdldHRlciBtZXRob2Qgb24gdGhlIHBhcnNlcgorICAgICAgICAjIG9iamVjdCB0aGF0IHByb3ZpZGVzIHRoZSBkZXNpcmVkIHR5cGUgY29udmVyc2lvbi4KKyAgICAgICAgaWYgbm90IF9pbXBsOgorICAgICAgICAgICAgX2ltcGwgPSBzZWxmLl9wYXJzZXIuZ2V0CisgICAgICAgIHJldHVybiBfaW1wbChzZWxmLl9uYW1lLCBvcHRpb24sIHJhdz1yYXcsIHZhcnM9dmFycywKKyAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWZhbGxiYWNrLCAqKmt3YXJncykKKworCitjbGFzcyBDb252ZXJ0ZXJNYXBwaW5nKE11dGFibGVNYXBwaW5nKToKKyAgICAiIiJFbmFibGVzIHJldXNlIG9mIGdldCooKSBtZXRob2RzIGJldHdlZW4gdGhlIHBhcnNlciBhbmQgc2VjdGlvbiBwcm94aWVzLgorCisgICAgSWYgYSBwYXJzZXIgY2xhc3MgaW1wbGVtZW50cyBhIGdldHRlciBkaXJlY3RseSwgdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4KKyAgICBrZXkgd2lsbCBiZSBgYE5vbmVgYC4gVGhlIHByZXNlbmNlIG9mIHRoZSBjb252ZXJ0ZXIgbmFtZSBoZXJlIGVuYWJsZXMKKyAgICBzZWN0aW9uIHByb3hpZXMgdG8gZmluZCBhbmQgdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvbiB0aGUgcGFyc2VyIGNsYXNzLgorICAgICIiIgorCisgICAgR0VUVEVSQ1JFID0gcmUuY29tcGlsZShyIl5nZXQoP1A8bmFtZT4uKykkIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKKyAgICAgICAgc2VsZi5fZGF0YSA9IHt9CisgICAgICAgIGZvciBnZXR0ZXIgaW4gZGlyKHNlbGYuX3BhcnNlcik6CisgICAgICAgICAgICBtID0gc2VsZi5HRVRURVJDUkUubWF0Y2goZ2V0dGVyKQorICAgICAgICAgICAgaWYgbm90IG0gb3Igbm90IGNhbGxhYmxlKGdldGF0dHIoc2VsZi5fcGFyc2VyLCBnZXR0ZXIpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5fZGF0YVttLmdyb3VwKCduYW1lJyldID0gTm9uZSAgICMgU2VlIGNsYXNzIGRvY3N0cmluZy4KKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVtrZXldCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGsgPSAnZ2V0JyArIGtleQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW5jb21wYXRpYmxlIGtleToge30gKHR5cGU6IHt9KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycuZm9ybWF0KGtleSwgdHlwZShrZXkpKSkKKyAgICAgICAgaWYgayA9PSAnZ2V0JzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0luY29tcGF0aWJsZSBrZXk6IGNhbm5vdCB1c2UgIiIgYXMgYSBuYW1lJykKKyAgICAgICAgc2VsZi5fZGF0YVtrZXldID0gdmFsdWUKKyAgICAgICAgZnVuYyA9IGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuX3BhcnNlci5fZ2V0X2NvbnYsIGNvbnY9dmFsdWUpCisgICAgICAgIGZ1bmMuY29udmVydGVyID0gdmFsdWUKKyAgICAgICAgc2V0YXR0cihzZWxmLl9wYXJzZXIsIGssIGZ1bmMpCisgICAgICAgIGZvciBwcm94eSBpbiBzZWxmLl9wYXJzZXIudmFsdWVzKCk6CisgICAgICAgICAgICBnZXR0ZXIgPSBmdW5jdG9vbHMucGFydGlhbChwcm94eS5nZXQsIF9pbXBsPWZ1bmMpCisgICAgICAgICAgICBzZXRhdHRyKHByb3h5LCBrLCBnZXR0ZXIpCisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgayA9ICdnZXQnICsgKGtleSBvciBOb25lKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3Ioa2V5KQorICAgICAgICBkZWwgc2VsZi5fZGF0YVtrZXldCisgICAgICAgIGZvciBpbnN0IGluIGl0ZXJ0b29scy5jaGFpbigoc2VsZi5fcGFyc2VyLCksIHNlbGYuX3BhcnNlci52YWx1ZXMoKSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsYXR0cihpbnN0LCBrKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgZG9uJ3QgcmFpc2Ugc2luY2UgdGhlIGVudHJ5IHdhcyBwcmVzZW50IGluIF9kYXRhLCBzaWxlbnRseQorICAgICAgICAgICAgICAgICMgY2xlYW4gdXAKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9kYXRhKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fZGF0YSkKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggMDdiMjI2MS4uNTM3Nzk4NyAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTUsNyArNSw3IEBACiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKIAogX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIiwgIkV4aXRTdGFjayIsCi0gICAgICAgICAgICJyZWRpcmVjdF9zdGRvdXQiLCAic3VwcHJlc3MiXQorICAgICAgICAgICAicmVkaXJlY3Rfc3Rkb3V0IiwgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtNzcsMTAgKzc3LDE3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5nZW4udGhyb3codHlwZSwgdmFsdWUsIHRyYWNlYmFjaykKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImdlbmVyYXRvciBkaWRuJ3Qgc3RvcCBhZnRlciB0aHJvdygpIikKICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIFN1cHByZXNzIHRoZSBleGNlcHRpb24gKnVubGVzcyogaXQncyB0aGUgc2FtZSBleGNlcHRpb24gdGhhdAorICAgICAgICAgICAgICAgICMgU3VwcHJlc3MgU3RvcEl0ZXJhdGlvbiAqdW5sZXNzKiBpdCdzIHRoZSBzYW1lIGV4Y2VwdGlvbiB0aGF0CiAgICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIHRvIHRocm93KCkuICBUaGlzIHByZXZlbnRzIGEgU3RvcEl0ZXJhdGlvbgotICAgICAgICAgICAgICAgICMgcmFpc2VkIGluc2lkZSB0aGUgIndpdGgiIHN0YXRlbWVudCBmcm9tIGJlaW5nIHN1cHByZXNzZWQKKyAgICAgICAgICAgICAgICAjIHJhaXNlZCBpbnNpZGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgZnJvbSBiZWluZyBzdXBwcmVzc2VkLgogICAgICAgICAgICAgICAgIHJldHVybiBleGMgaXMgbm90IHZhbHVlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIExpa2V3aXNlLCBhdm9pZCBzdXBwcmVzc2luZyBpZiBhIFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgIyB3YXMgcGFzc2VkIHRvIHRocm93KCkgYW5kIGxhdGVyIHdyYXBwZWQgaW50byBhIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgICAgICMgKHNlZSBQRVAgNDc5KS4KKyAgICAgICAgICAgICAgICBpZiBleGMuX19jYXVzZV9fIGlzIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICMgb25seSByZS1yYWlzZSBpZiBpdCdzICpub3QqIHRoZSBleGNlcHRpb24gdGhhdCB3YXMKICAgICAgICAgICAgICAgICAjIHBhc3NlZCB0byB0aHJvdygpLCBiZWNhdXNlIF9fZXhpdF9fKCkgbXVzdCBub3QgcmFpc2UKQEAgLTE1MSw4ICsxNTgsMjcgQEAKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCiAKLWNsYXNzIHJlZGlyZWN0X3N0ZG91dDoKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRlbXBvcmFyaWx5IHJlZGlyZWN0aW5nIHN0ZG91dCB0byBhbm90aGVyIGZpbGUKKworY2xhc3MgX1JlZGlyZWN0U3RyZWFtOgorCisgICAgX3N0cmVhbSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdfdGFyZ2V0KToKKyAgICAgICAgc2VsZi5fbmV3X3RhcmdldCA9IG5ld190YXJnZXQKKyAgICAgICAgIyBXZSB1c2UgYSBsaXN0IG9mIG9sZCB0YXJnZXRzIHRvIG1ha2UgdGhpcyBDTSByZS1lbnRyYW50CisgICAgICAgIHNlbGYuX29sZF90YXJnZXRzID0gW10KKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuX29sZF90YXJnZXRzLmFwcGVuZChnZXRhdHRyKHN5cywgc2VsZi5fc3RyZWFtKSkKKyAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYuX3N0cmVhbSwgc2VsZi5fbmV3X3RhcmdldCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX25ld190YXJnZXQKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGN0eXBlLCBleGNpbnN0LCBleGN0Yik6CisgICAgICAgIHNldGF0dHIoc3lzLCBzZWxmLl9zdHJlYW0sIHNlbGYuX29sZF90YXJnZXRzLnBvcCgpKQorCisKK2NsYXNzIHJlZGlyZWN0X3N0ZG91dChfUmVkaXJlY3RTdHJlYW0pOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGVtcG9yYXJpbHkgcmVkaXJlY3Rpbmcgc3Rkb3V0IHRvIGFub3RoZXIgZmlsZS4KIAogICAgICAgICAjIEhvdyB0byBzZW5kIGhlbHAoKSB0byBzdGRlcnIKICAgICAgICAgd2l0aCByZWRpcmVjdF9zdGRvdXQoc3lzLnN0ZGVycik6CkBAIC0xNjQsMTggKzE5MCwxMyBAQAogICAgICAgICAgICAgICAgIGhlbHAocG93KQogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5ld190YXJnZXQpOgotICAgICAgICBzZWxmLl9uZXdfdGFyZ2V0ID0gbmV3X3RhcmdldAotICAgICAgICAjIFdlIHVzZSBhIGxpc3Qgb2Ygb2xkIHRhcmdldHMgdG8gbWFrZSB0aGlzIENNIHJlLWVudHJhbnQKLSAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMgPSBbXQorICAgIF9zdHJlYW0gPSAic3Rkb3V0IgogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fb2xkX3RhcmdldHMuYXBwZW5kKHN5cy5zdGRvdXQpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLl9uZXdfdGFyZ2V0Ci0gICAgICAgIHJldHVybiBzZWxmLl9uZXdfdGFyZ2V0CiAKLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjdHlwZSwgZXhjaW5zdCwgZXhjdGIpOgotICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5fb2xkX3RhcmdldHMucG9wKCkKK2NsYXNzIHJlZGlyZWN0X3N0ZGVycihfUmVkaXJlY3RTdHJlYW0pOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgdGVtcG9yYXJpbHkgcmVkaXJlY3Rpbmcgc3RkZXJyIHRvIGFub3RoZXIgZmlsZS4iIiIKKworICAgIF9zdHJlYW0gPSAic3RkZXJyIgogCiAKIGNsYXNzIHN1cHByZXNzOgpkaWZmIC0tZ2l0IGEvTGliL2NvcHkucHkgYi9MaWIvY29weS5weQppbmRleCBiYjg4NDBlLi4zYTQ1ZmRmIDEwMDY0NAotLS0gYS9MaWIvY29weS5weQorKysgYi9MaWIvY29weS5weQpAQCAtOTQsNyArOTQsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJlZHVjdG9yID0gZ2V0YXR0cih4LCAiX19yZWR1Y2VfZXhfXyIsIE5vbmUpCiAgICAgICAgIGlmIHJlZHVjdG9yOgotICAgICAgICAgICAgcnYgPSByZWR1Y3RvcigyKQorICAgICAgICAgICAgcnYgPSByZWR1Y3Rvcig0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9fIiwgTm9uZSkKICAgICAgICAgICAgIGlmIHJlZHVjdG9yOgpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmVkdWN0b3IgPSBnZXRhdHRyKHgsICJfX3JlZHVjZV9leF9fIiwgTm9uZSkKICAgICAgICAgICAgICAgICAgICAgaWYgcmVkdWN0b3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjdG9yKDIpCisgICAgICAgICAgICAgICAgICAgICAgICBydiA9IHJlZHVjdG9yKDQpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICByZWR1Y3RvciA9IGdldGF0dHIoeCwgIl9fcmVkdWNlX18iLCBOb25lKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVkdWN0b3I6CkBAIC0yMjEsMTcgKzIyMSwxNSBAQAogZFtsaXN0XSA9IF9kZWVwY29weV9saXN0CiAKIGRlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbyk6Ci0gICAgeSA9IFtdCi0gICAgZm9yIGEgaW4geDoKLSAgICAgICAgeS5hcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCisgICAgeSA9IFtkZWVwY29weShhLCBtZW1vKSBmb3IgYSBpbiB4XQogICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQogICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgogICAgIHRyeToKICAgICAgICAgcmV0dXJuIG1lbW9baWQoeCldCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICBwYXNzCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKHgpKToKLSAgICAgICAgaWYgeFtpXSBpcyBub3QgeVtpXToKKyAgICBmb3IgaywgaiBpbiB6aXAoeCwgeSk6CisgICAgICAgIGlmIGsgaXMgbm90IGo6CiAgICAgICAgICAgICB5ID0gdHVwbGUoeSkKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9jc3YucHkgYi9MaWIvY3N2LnB5CmluZGV4IGE1NmVlZDguLmNhNDBlNWUgMTAwNjQ0Ci0tLSBhL0xpYi9jc3YucHkKKysrIGIvTGliL2Nzdi5weQpAQCAtMTQ3LDE2ICsxNDcsMTMgQEAKICAgICAgICAgICAgIGlmIHdyb25nX2ZpZWxkczoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkaWN0IGNvbnRhaW5zIGZpZWxkcyBub3QgaW4gZmllbGRuYW1lczogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCAiLmpvaW4oW3JlcHIoeCkgZm9yIHggaW4gd3JvbmdfZmllbGRzXSkpCi0gICAgICAgIHJldHVybiBbcm93ZGljdC5nZXQoa2V5LCBzZWxmLnJlc3R2YWwpIGZvciBrZXkgaW4gc2VsZi5maWVsZG5hbWVzXQorICAgICAgICByZXR1cm4gKHJvd2RpY3QuZ2V0KGtleSwgc2VsZi5yZXN0dmFsKSBmb3Iga2V5IGluIHNlbGYuZmllbGRuYW1lcykKIAogICAgIGRlZiB3cml0ZXJvdyhzZWxmLCByb3dkaWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlcm93KHNlbGYuX2RpY3RfdG9fbGlzdChyb3dkaWN0KSkKIAogICAgIGRlZiB3cml0ZXJvd3Moc2VsZiwgcm93ZGljdHMpOgotICAgICAgICByb3dzID0gW10KLSAgICAgICAgZm9yIHJvd2RpY3QgaW4gcm93ZGljdHM6Ci0gICAgICAgICAgICByb3dzLmFwcGVuZChzZWxmLl9kaWN0X3RvX2xpc3Qocm93ZGljdCkpCi0gICAgICAgIHJldHVybiBzZWxmLndyaXRlci53cml0ZXJvd3Mocm93cykKKyAgICAgICAgcmV0dXJuIHNlbGYud3JpdGVyLndyaXRlcm93cyhtYXAoc2VsZi5fZGljdF90b19saXN0LCByb3dkaWN0cykpCiAKICMgR3VhcmQgU25pZmZlcidzIHR5cGUgY2hlY2tpbmcgYWdhaW5zdCBidWlsZHMgdGhhdCBleGNsdWRlIGNvbXBsZXgoKQogdHJ5OgpAQCAtMjMxLDIwICsyMjgsMjEgQEAKICAgICAgICAgcXVvdGVzID0ge30KICAgICAgICAgZGVsaW1zID0ge30KICAgICAgICAgc3BhY2VzID0gMAorICAgICAgICBncm91cGluZGV4ID0gcmVnZXhwLmdyb3VwaW5kZXgKICAgICAgICAgZm9yIG0gaW4gbWF0Y2hlczoKLSAgICAgICAgICAgIG4gPSByZWdleHAuZ3JvdXBpbmRleFsncXVvdGUnXSAtIDEKKyAgICAgICAgICAgIG4gPSBncm91cGluZGV4WydxdW90ZSddIC0gMQogICAgICAgICAgICAga2V5ID0gbVtuXQogICAgICAgICAgICAgaWYga2V5OgogICAgICAgICAgICAgICAgIHF1b3Rlc1trZXldID0gcXVvdGVzLmdldChrZXksIDApICsgMQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG4gPSByZWdleHAuZ3JvdXBpbmRleFsnZGVsaW0nXSAtIDEKKyAgICAgICAgICAgICAgICBuID0gZ3JvdXBpbmRleFsnZGVsaW0nXSAtIDEKICAgICAgICAgICAgICAgICBrZXkgPSBtW25dCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGtleSBhbmQgKGRlbGltaXRlcnMgaXMgTm9uZSBvciBrZXkgaW4gZGVsaW1pdGVycyk6CiAgICAgICAgICAgICAgICAgZGVsaW1zW2tleV0gPSBkZWxpbXMuZ2V0KGtleSwgMCkgKyAxCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbiA9IHJlZ2V4cC5ncm91cGluZGV4WydzcGFjZSddIC0gMQorICAgICAgICAgICAgICAgIG4gPSBncm91cGluZGV4WydzcGFjZSddIC0gMQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBtW25dOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggNWM4MDNmZi4uNGNiNmQwZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0yMzcsMTQgKzIzNyw4IEBACiAKIGNsYXNzIGNfY2hhcl9wKF9TaW1wbGVDRGF0YSk6CiAgICAgX3R5cGVfID0gInoiCi0gICAgaWYgX29zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgaWYgbm90IHdpbmRsbC5rZXJuZWwzMi5Jc0JhZFN0cmluZ1B0ckEoc2VsZiwgLTEpOgotICAgICAgICAgICAgICAgIHJldHVybiAiJXMoJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi52YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY2FzdChzZWxmLCBjX3ZvaWRfcCkudmFsdWUpCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuICIlcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBjYXN0KHNlbGYsIGNfdm9pZF9wKS52YWx1ZSkKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgY192b2lkX3AuZnJvbV9idWZmZXIoc2VsZikudmFsdWUpCiBfY2hlY2tfc2l6ZShjX2NoYXJfcCwgIlAiKQogCiBjbGFzcyBjX3ZvaWRfcChfU2ltcGxlQ0RhdGEpOgpAQCAtMjU5LDYgKzI1Myw4IEBACiAKIGNsYXNzIGNfd2NoYXJfcChfU2ltcGxlQ0RhdGEpOgogICAgIF90eXBlXyA9ICJaIgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIlcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBjX3ZvaWRfcC5mcm9tX2J1ZmZlcihzZWxmKS52YWx1ZSkKIAogY2xhc3MgY193Y2hhcihfU2ltcGxlQ0RhdGEpOgogICAgIF90eXBlXyA9ICJ1IgpAQCAtMzUzLDcgKzM0OSw3IEBACiAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5kbGUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8JXMgJyVzJywgaGFuZGxlICV4IGF0ICV4PiIgJSBcCisgICAgICAgIHJldHVybiAiPCVzICclcycsIGhhbmRsZSAleCBhdCAlI3g+IiAlIFwKICAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbmFtZSwKICAgICAgICAgICAgICAgICAoc2VsZi5faGFuZGxlICYgKF9zeXMubWF4c2l6ZSoyICsgMSkpLAogICAgICAgICAgICAgICAgIGlkKHNlbGYpICYgKF9zeXMubWF4c2l6ZSoyICsgMSkpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19lbmRpYW4ucHkgYi9MaWIvY3R5cGVzL19lbmRpYW4ucHkKaW5kZXggZGFlNjVmYy4uMzc0NDRiZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fZW5kaWFuLnB5CisrKyBiL0xpYi9jdHlwZXMvX2VuZGlhbi5weQpAQCAtNDUsNiArNDUsNyBAQAogCiAgICAgY2xhc3MgQmlnRW5kaWFuU3RydWN0dXJlKFN0cnVjdHVyZSwgbWV0YWNsYXNzPV9zd2FwcGVkX21ldGEpOgogICAgICAgICAiIiJTdHJ1Y3R1cmUgd2l0aCBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIiIiIKKyAgICAgICAgX19zbG90c19fID0gKCkKICAgICAgICAgX3N3YXBwZWRieXRlc18gPSBOb25lCiAKIGVsaWYgc3lzLmJ5dGVvcmRlciA9PSAiYmlnIjoKQEAgLTUzLDYgKzU0LDcgQEAKICAgICBCaWdFbmRpYW5TdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmUKICAgICBjbGFzcyBMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUoU3RydWN0dXJlLCBtZXRhY2xhc3M9X3N3YXBwZWRfbWV0YSk6CiAgICAgICAgICIiIlN0cnVjdHVyZSB3aXRoIGxpdHRsZSBlbmRpYW4gYnl0ZSBvcmRlciIiIgorICAgICAgICBfX3Nsb3RzX18gPSAoKQogICAgICAgICBfc3dhcHBlZGJ5dGVzXyA9IE5vbmUKIAogZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2FzX3BhcmFtZXRlci5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2FzX3BhcmFtZXRlci5weQppbmRleCA5NDhiNDYzLi4yYTM0ODRiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hc19wYXJhbWV0ZXIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYXNfcGFyYW1ldGVyLnB5CkBAIC0xOTQsNyArMTk0LDcgQEAKIAogICAgICAgICBhID0gQSgpCiAgICAgICAgIGEuX2FzX3BhcmFtZXRlcl8gPSBhCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBjX2ludC5mcm9tX3BhcmFtKGEpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYnl0ZXN3YXAucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weQppbmRleCA0MjdiYjhiLi4wMWM5N2U4IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9ieXRlc3dhcC5weQpAQCAtMjIsNiArMjIsMjYgQEAKICAgICAgICAgICAgIHNldGF0dHIoYml0cywgImklcyIgJSBpLCAxKQogICAgICAgICAgICAgZHVtcChiaXRzKQogCisgICAgZGVmIHRlc3Rfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEJpZ1BvaW50KEJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY19pbnQpLCAoInkiLCBjX2ludCldCisKKyAgICAgICAgY2xhc3MgTG93UG9pbnQoTGl0dGxlRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgICAgICBfZmllbGRzXyA9IFsoIngiLCBjX2ludCksICgieSIsIGNfaW50KV0KKworICAgICAgICBiaWcgPSBCaWdQb2ludCgpCisgICAgICAgIGxpdHRsZSA9IExvd1BvaW50KCkKKyAgICAgICAgYmlnLnggPSA0CisgICAgICAgIGJpZy55ID0gMgorICAgICAgICBsaXR0bGUueCA9IDIKKyAgICAgICAgbGl0dGxlLnkgPSA0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgYmlnLnogPSA0MgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGxpdHRsZS56ID0gMjQKKwogICAgIGRlZiB0ZXN0X2VuZGlhbl9zaG9ydChzZWxmKToKICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY19zaG9ydC5fX2N0eXBlX2xlX18sIGNfc2hvcnQpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQppbmRleCA0ZmI4OTY0Li4yODQ2OGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKQEAgLTUyLDcgKzUyLDkgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUobGliY19uYW1lKQorICAgICAgICAjIENSVCBpcyBubyBsb25nZXIgZGlyZWN0bHkgbG9hZGFibGUuIFNlZSBpc3N1ZTIzNjA2IGZvciB0aGUKKyAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCisgICAgICAgICNzZWxmLmFzc2VydElzTm90Tm9uZShsaWJjX25hbWUpCiAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJrZXJuZWwzMiIpKQogICAgICAgICAgICAgcHJpbnQoZmluZF9saWJyYXJ5KCJ1c2VyMzIiKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BvaW50ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKaW5kZXggZTI0YTUyMC4uNDA3MzhmNyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkKQEAgLTIyLDcgKzIyLDEwIEBACiAgICAgZGVmIHRlc3RfcGFzc19wb2ludGVycyhzZWxmKToKICAgICAgICAgZGxsID0gQ0RMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCiAgICAgICAgIGZ1bmMgPSBkbGwuX3Rlc3RmdW5jX3BfcAotICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKKyAgICAgICAgaWYgc2l6ZW9mKGNfbG9uZ2xvbmcpID09IHNpemVvZihjX3ZvaWRfcCk6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmdsb25nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmdW5jLnJlc3R5cGUgPSBjX2xvbmcKIAogICAgICAgICBpID0gY19pbnQoMTIzNDU2NzgpCiAjIyAgICAgICAgZnVuYy5hcmd0eXBlcyA9IChQT0lOVEVSKGNfaW50KSwpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHJvdG90eXBlcy5weQppbmRleCA4MThjMTExLi5jZDBjNjQ5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wcm90b3R5cGVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3Byb3RvdHlwZXMucHkKQEAgLTY5LDcgKzY5LDEwIEBACiAKICAgICBkZWYgdGVzdF9pbnRfcG9pbnRlcl9hcmcoc2VsZik6CiAgICAgICAgIGZ1bmMgPSB0ZXN0ZGxsLl90ZXN0ZnVuY19wX3AKLSAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nCisgICAgICAgIGlmIHNpemVvZihjX2xvbmdsb25nKSA9PSBzaXplb2YoY192b2lkX3ApOgorICAgICAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nbG9uZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnVuYy5yZXN0eXBlID0gY19sb25nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZnVuYygwKSkKIAogICAgICAgICBjaSA9IGNfaW50KDApCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKaW5kZXggMWMxZmQ3ZC4uOTU1MWU3YSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQpAQCAtNTksOCArNTksMTMgQEAKICAgICAgICAgaXRlbXMgPSBbXQogICAgICAgICAjIF9mcm96ZW5faW1wb3J0bGliIGNoYW5nZXMgc2l6ZSB3aGVuZXZlciBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogICAgICAgICAjIGNoYW5nZXMsIHNvIGl0IGdldHMgYSBzcGVjaWFsIGNhc2UuICBXZSBzaG91bGQgbWFrZSBzdXJlIGl0J3MKLSAgICAgICAgIyBmb3VuZCwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IGl0cyBzaXplIHRvbyBtdWNoLgotICAgICAgICBfZnpuX2ltcGxpYl9zZWVuID0gRmFsc2UKKyAgICAgICAgIyBmb3VuZCwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IGl0cyBzaXplIHRvbyBtdWNoLiAgVGhlIHNhbWUKKyAgICAgICAgIyBhcHBsaWVzIHRvIF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsLgorICAgICAgICBib290c3RyYXBfc2VlbiA9IFtdCisgICAgICAgIGJvb3RzdHJhcF9leHBlY3RlZCA9IFsKKyAgICAgICAgICAgICAgICBiJ19mcm96ZW5faW1wb3J0bGliJywKKyAgICAgICAgICAgICAgICBiJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJywKKyAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciBlbnRyeSBpbiBmdDoKICAgICAgICAgICAgICMgVGhpcyBpcyBkYW5nZXJvdXMuIFdlICpjYW4qIGl0ZXJhdGUgb3ZlciBhIHBvaW50ZXIsIGJ1dAogICAgICAgICAgICAgIyB0aGUgbG9vcCB3aWxsIG5vdCB0ZXJtaW5hdGUgKG1heWJlIHdpdGggYW4gYWNjZXNzCkBAIC02OCwxMCArNzMsMTAgQEAKICAgICAgICAgICAgIGlmIGVudHJ5Lm5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiBlbnRyeS5uYW1lID09IGInX2Zyb3plbl9pbXBvcnRsaWInOgotICAgICAgICAgICAgICAgIF9mem5faW1wbGliX3NlZW4gPSBUcnVlCisgICAgICAgICAgICBpZiBlbnRyeS5uYW1lIGluIGJvb3RzdHJhcF9leHBlY3RlZDoKKyAgICAgICAgICAgICAgICBib290c3RyYXBfc2Vlbi5hcHBlbmQoZW50cnkubmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW50cnkuc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgIl9mcm96ZW5faW1wb3J0bGliIHdhcyByZXBvcnRlZCBhcyBoYXZpbmcgbm8gc2l6ZSIpCisgICAgICAgICAgICAgICAgICAgICJ7fSB3YXMgcmVwb3J0ZWQgYXMgaGF2aW5nIG5vIHNpemUiLmZvcm1hdChlbnRyeS5uYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKChlbnRyeS5uYW1lLCBlbnRyeS5zaXplKSkKIApAQCAtODEsOCArODYsOCBAQAogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbXMsIGV4cGVjdGVkKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfZnpuX2ltcGxpYl9zZWVuLAotICAgICAgICAgICAgIl9mcm96ZW5faW1wb3J0bGliIHdhc24ndCBmb3VuZCBpbiBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoYm9vdHN0cmFwX3NlZW4pLCBib290c3RyYXBfZXhwZWN0ZWQsCisgICAgICAgICAgICAiZnJvemVuIGJvb3RzdHJhcCBtb2R1bGVzIGRpZCBub3QgbWF0Y2ggUHlJbXBvcnRfRnJvemVuTW9kdWxlcyIpCiAKICAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IF9wb2ludGVyX3R5cGVfY2FjaGUKICAgICAgICAgZGVsIF9wb2ludGVyX3R5cGVfY2FjaGVbc3RydWN0X2Zyb3plbl0KZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCA1OTUxMTNiLi45ZTc0Y2NkIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC0xOSw2ICsxOSw4IEBACiAgICAgICAgIGkgPSBpICsgbGVuKHByZWZpeCkKICAgICAgICAgcywgcmVzdCA9IHN5cy52ZXJzaW9uW2k6XS5zcGxpdCgiICIsIDEpCiAgICAgICAgIG1ham9yVmVyc2lvbiA9IGludChzWzotMl0pIC0gNgorICAgICAgICBpZiBtYWpvclZlcnNpb24gPj0gMTM6CisgICAgICAgICAgICBtYWpvclZlcnNpb24gKz0gMQogICAgICAgICBtaW5vclZlcnNpb24gPSBpbnQoc1syOjNdKSAvIDEwLjAKICAgICAgICAgIyBJIGRvbid0IHRoaW5rIHBhdGhzIGFyZSBhZmZlY3RlZCBieSBtaW5vciB2ZXJzaW9uIGluIHZlcnNpb24gNgogICAgICAgICBpZiBtYWpvclZlcnNpb24gPT0gNjoKQEAgLTM2LDggKzM4LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBpZiB2ZXJzaW9uIDw9IDY6CiAgICAgICAgICAgICBjbGlibmFtZSA9ICdtc3ZjcnQnCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgdmVyc2lvbiA8PSAxMzoKICAgICAgICAgICAgIGNsaWJuYW1lID0gJ21zdmNyJWQnICUgKHZlcnNpb24gKiAxMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQ1JUIGlzIG5vIGxvbmdlciBkaXJlY3RseSBsb2FkYWJsZS4gU2VlIGlzc3VlMjM2MDYgZm9yIHRoZQorICAgICAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgICMgSWYgcHl0aG9uIHdhcyBidWlsdCB3aXRoIGluIGRlYnVnIG1vZGUKICAgICAgICAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCAzYWYxMmU3Li5iOTcxOWNiIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAKIE1JTllFQVIgPSAxCiBNQVhZRUFSID0gOTk5OQotX01BWE9SRElOQUwgPSAzNjUyMDU5ICMgZGF0ZS5tYXgudG9vcmRpbmFsKCkKK19NQVhPUkRJTkFMID0gMzY1MjA1OSAgIyBkYXRlLm1heC50b29yZGluYWwoKQogCiAjIFV0aWxpdHkgZnVuY3Rpb25zLCBhZGFwdGVkIGZyb20gUHl0aG9uJ3MgRGVtby9jbGFzc2VzL0RhdGVzLnB5LCB3aGljaAogIyBhbHNvIGFzc3VtZXMgdGhlIGN1cnJlbnQgR3JlZ29yaWFuIGNhbGVuZGFyIGluZGVmaW5pdGVseSBleHRlbmRlZCBpbgpAQCAtMjYsNyArMjYsNyBAQAogIyAtMSBpcyBhIHBsYWNlaG9sZGVyIGZvciBpbmRleGluZyBwdXJwb3Nlcy4KIF9EQVlTX0lOX01PTlRIID0gWy0xLCAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXQogCi1fREFZU19CRUZPUkVfTU9OVEggPSBbLTFdICMgLTEgaXMgYSBwbGFjZWhvbGRlciBmb3IgaW5kZXhpbmcgcHVycG9zZXMuCitfREFZU19CRUZPUkVfTU9OVEggPSBbLTFdICAjIC0xIGlzIGEgcGxhY2Vob2xkZXIgZm9yIGluZGV4aW5nIHB1cnBvc2VzLgogZGJtID0gMAogZm9yIGRpbSBpbiBfREFZU19JTl9NT05USFsxOl06CiAgICAgX0RBWVNfQkVGT1JFX01PTlRILmFwcGVuZChkYm0pCkBAIC0xNjIsOSArMTYyLDkgQEAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6CiAgICAgIyBEb24ndCBjYWxsIHV0Y29mZnNldCgpIG9yIHR6bmFtZSgpIHVubGVzcyBhY3R1YWxseSBuZWVkZWQuCi0gICAgZnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVmCi0gICAgenJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICV6Ci0gICAgWnJlcGxhY2UgPSBOb25lICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVaCisgICAgZnJlcGxhY2UgPSBOb25lICAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlZgorICAgIHpyZXBsYWNlID0gTm9uZSAgIyB0aGUgc3RyaW5nIHRvIHVzZSBmb3IgJXoKKyAgICBacmVwbGFjZSA9IE5vbmUgICMgdGhlIHN0cmluZyB0byB1c2UgZm9yICVaCiAKICAgICAjIFNjYW4gZm9ybWF0IGZvciAleiBhbmQgJVogZXNjYXBlcywgcmVwbGFjaW5nIGFzIG5lZWRlZC4KICAgICBuZXdmb3JtYXQgPSBbXQpAQCAtMjE3LDExICsyMTcsNiBAQAogICAgIG5ld2Zvcm1hdCA9ICIiLmpvaW4obmV3Zm9ybWF0KQogICAgIHJldHVybiBfdGltZS5zdHJmdGltZShuZXdmb3JtYXQsIHRpbWV0dXBsZSkKIAotZGVmIF9jYWxsX3R6aW5mb19tZXRob2QodHppbmZvLCBtZXRobmFtZSwgdHppbmZvYXJnKToKLSAgICBpZiB0emluZm8gaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gZ2V0YXR0cih0emluZm8sIG1ldGhuYW1lKSh0emluZm9hcmcpCi0KICMgSnVzdCByYWlzZSBUeXBlRXJyb3IgaWYgdGhlIGFyZyBpc24ndCBOb25lIG9yIGEgc3RyaW5nLgogZGVmIF9jaGVja190em5hbWUobmFtZSk6CiAgICAgaWYgbmFtZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKQEAgLTI0NSwxMyArMjQwLDMxIEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIGEgd2hvbGUgbnVtYmVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgbWludXRlcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQogICAgIGlmIG5vdCAtdGltZWRlbHRhKDEpIDwgb2Zmc2V0IDwgdGltZWRlbHRhKDEpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcygpPSVzLCBtdXN0IGJlIG11c3QgYmUgc3RyaWN0bHkgYmV0d2VlbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiIC10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCB0aW1lZGVsdGEoaG91cnM9MjQpIgotICAgICAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIG9mZnNldCkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgb2Zmc2V0KSkKKworZGVmIF9jaGVja19pbnRfZmllbGQodmFsdWUpOgorICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgIHJldHVybiB2YWx1ZQorICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuX19pbnRfXygpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19faW50X18gcmV0dXJuZWQgbm9uLWludCAodHlwZSAlcyknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHZhbHVlKS5fX25hbWVfXykKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSAlcyknICUKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgIHJhaXNlIFR5cGVFcnJvcignaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0JykKIAogZGVmIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KToKLSAgICBpZiBub3QgaXNpbnN0YW5jZSh5ZWFyLCBpbnQpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ludCBleHBlY3RlZCcpCisgICAgeWVhciA9IF9jaGVja19pbnRfZmllbGQoeWVhcikKKyAgICBtb250aCA9IF9jaGVja19pbnRfZmllbGQobW9udGgpCisgICAgZGF5ID0gX2NoZWNrX2ludF9maWVsZChkYXkpCiAgICAgaWYgbm90IE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5ZWFyIG11c3QgYmUgaW4gJWQuLiVkJyAlIChNSU5ZRUFSLCBNQVhZRUFSKSwgeWVhcikKICAgICBpZiBub3QgMSA8PSBtb250aCA8PSAxMjoKQEAgLTI1OSwxMCArMjcyLDEzIEBACiAgICAgZGltID0gX2RheXNfaW5fbW9udGgoeWVhciwgbW9udGgpCiAgICAgaWYgbm90IDEgPD0gZGF5IDw9IGRpbToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGF5IG11c3QgYmUgaW4gMS4uJWQnICUgZGltLCBkYXkpCisgICAgcmV0dXJuIHllYXIsIG1vbnRoLCBkYXkKIAogZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpOgotICAgIGlmIG5vdCBpc2luc3RhbmNlKGhvdXIsIGludCk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcignaW50IGV4cGVjdGVkJykKKyAgICBob3VyID0gX2NoZWNrX2ludF9maWVsZChob3VyKQorICAgIG1pbnV0ZSA9IF9jaGVja19pbnRfZmllbGQobWludXRlKQorICAgIHNlY29uZCA9IF9jaGVja19pbnRfZmllbGQoc2Vjb25kKQorICAgIG1pY3Jvc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChtaWNyb3NlY29uZCkKICAgICBpZiBub3QgMCA8PSBob3VyIDw9IDIzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdob3VyIG11c3QgYmUgaW4gMC4uMjMnLCBob3VyKQogICAgIGlmIG5vdCAwIDw9IG1pbnV0ZSA8PSA1OToKQEAgLTI3MSw2ICsyODcsNyBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzZWNvbmQgbXVzdCBiZSBpbiAwLi41OScsIHNlY29uZCkKICAgICBpZiBub3QgMCA8PSBtaWNyb3NlY29uZCA8PSA5OTk5OTk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21pY3Jvc2Vjb25kIG11c3QgYmUgaW4gMC4uOTk5OTk5JywgbWljcm9zZWNvbmQpCisgICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZAogCiBkZWYgX2NoZWNrX3R6aW5mb19hcmcodHopOgogICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKQEAgLTMxNiw3ICszMzMsNyBAQAogICAgIFJlcHJlc2VudGF0aW9uOiAoZGF5cywgc2Vjb25kcywgbWljcm9zZWNvbmRzKS4gIFdoeT8gIEJlY2F1c2UgSQogICAgIGZlbHQgbGlrZSBpdC4KICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX2RheXMnLCAnX3NlY29uZHMnLCAnX21pY3Jvc2Vjb25kcycKKyAgICBfX3Nsb3RzX18gPSAnX2RheXMnLCAnX3NlY29uZHMnLCAnX21pY3Jvc2Vjb25kcycsICdfaGFzaGNvZGUnCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIGRheXM9MCwgc2Vjb25kcz0wLCBtaWNyb3NlY29uZHM9MCwKICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM9MCwgbWludXRlcz0wLCBob3Vycz0wLCB3ZWVrcz0wKToKQEAgLTM4MiwzOCArMzk5LDI2IEBACiAgICAgICAgICMgc2Vjb25kc2ZyYWMgaXNuJ3QgcmVmZXJlbmNlZCBhZ2FpbgogCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobWljcm9zZWNvbmRzLCBmbG9hdCk6Ci0gICAgICAgICAgICBtaWNyb3NlY29uZHMgKz0gdXNkb3VibGUKLSAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcywgMCkKLSAgICAgICAgICAgIHNlY29uZHMsIG1pY3Jvc2Vjb25kcyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDFlNikKLSAgICAgICAgICAgIGFzc2VydCBtaWNyb3NlY29uZHMgPT0gaW50KG1pY3Jvc2Vjb25kcykKLSAgICAgICAgICAgIGFzc2VydCBzZWNvbmRzID09IGludChzZWNvbmRzKQotICAgICAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNC4qMzYwMC4pCi0gICAgICAgICAgICBhc3NlcnQgZGF5cyA9PSBpbnQoZGF5cykKLSAgICAgICAgICAgIGFzc2VydCBzZWNvbmRzID09IGludChzZWNvbmRzKQotICAgICAgICAgICAgZCArPSBpbnQoZGF5cykKLSAgICAgICAgICAgIHMgKz0gaW50KHNlY29uZHMpICAgIyBjYW4ndCBvdmVyZmxvdwotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KQotICAgICAgICAgICAgYXNzZXJ0IGFicyhzKSA8PSAzICogMjQgKiAzNjAwCi0gICAgICAgIGVsc2U6CisgICAgICAgICAgICBtaWNyb3NlY29uZHMgPSByb3VuZChtaWNyb3NlY29uZHMgKyB1c2RvdWJsZSkKICAgICAgICAgICAgIHNlY29uZHMsIG1pY3Jvc2Vjb25kcyA9IGRpdm1vZChtaWNyb3NlY29uZHMsIDEwMDAwMDApCiAgICAgICAgICAgICBkYXlzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDI0KjM2MDApCiAgICAgICAgICAgICBkICs9IGRheXMKLSAgICAgICAgICAgIHMgKz0gaW50KHNlY29uZHMpICAgICMgY2FuJ3Qgb3ZlcmZsb3cKLSAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKLSAgICAgICAgICAgIGFzc2VydCBhYnMocykgPD0gMyAqIDI0ICogMzYwMAotICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gZmxvYXQobWljcm9zZWNvbmRzKQotICAgICAgICAgICAgbWljcm9zZWNvbmRzICs9IHVzZG91YmxlCi0gICAgICAgICAgICBtaWNyb3NlY29uZHMgPSByb3VuZChtaWNyb3NlY29uZHMsIDApCisgICAgICAgICAgICBzICs9IHNlY29uZHMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IGludChtaWNyb3NlY29uZHMpCisgICAgICAgICAgICBzZWNvbmRzLCBtaWNyb3NlY29uZHMgPSBkaXZtb2QobWljcm9zZWNvbmRzLCAxMDAwMDAwKQorICAgICAgICAgICAgZGF5cywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCAyNCozNjAwKQorICAgICAgICAgICAgZCArPSBkYXlzCisgICAgICAgICAgICBzICs9IHNlY29uZHMKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9IHJvdW5kKG1pY3Jvc2Vjb25kcyArIHVzZG91YmxlKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBpbnQpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1pY3Jvc2Vjb25kcywgaW50KQogICAgICAgICBhc3NlcnQgYWJzKHMpIDw9IDMgKiAyNCAqIDM2MDAKICAgICAgICAgYXNzZXJ0IGFicyhtaWNyb3NlY29uZHMpIDwgMy4xZTYKIAogICAgICAgICAjIEp1c3QgYSBsaXR0bGUgYml0IG9mIGNhcnJ5aW5nIHBvc3NpYmxlIGZvciBtaWNyb3NlY29uZHMgYW5kIHNlY29uZHMuCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1pY3Jvc2Vjb25kcywgZmxvYXQpCi0gICAgICAgIGFzc2VydCBpbnQobWljcm9zZWNvbmRzKSA9PSBtaWNyb3NlY29uZHMKLSAgICAgICAgdXMgPSBpbnQobWljcm9zZWNvbmRzKQotICAgICAgICBzZWNvbmRzLCB1cyA9IGRpdm1vZCh1cywgMTAwMDAwMCkKLSAgICAgICAgcyArPSBzZWNvbmRzICAgICMgY2FudCd0IG92ZXJmbG93Ci0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGludCkKKyAgICAgICAgc2Vjb25kcywgdXMgPSBkaXZtb2QobWljcm9zZWNvbmRzLCAxMDAwMDAwKQorICAgICAgICBzICs9IHNlY29uZHMKICAgICAgICAgZGF5cywgcyA9IGRpdm1vZChzLCAyNCozNjAwKQogICAgICAgICBkICs9IGRheXMKIApAQCAtNDIxLDI3ICs0MjYsMzEgQEAKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgaW50KSBhbmQgMCA8PSBzIDwgMjQqMzYwMAogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh1cywgaW50KSBhbmQgMCA8PSB1cyA8IDEwMDAwMDAKIAotICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQotCi0gICAgICAgIHNlbGYuX2RheXMgPSBkCi0gICAgICAgIHNlbGYuX3NlY29uZHMgPSBzCi0gICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kcyA9IHVzCiAgICAgICAgIGlmIGFicyhkKSA+IDk5OTk5OTk5OToKICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoInRpbWVkZWx0YSAjIG9mIGRheXMgaXMgdG9vIGxhcmdlOiAlZCIgJSBkKQogCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgIHNlbGYuX2RheXMgPSBkCisgICAgICAgIHNlbGYuX3NlY29uZHMgPSBzCisgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kcyA9IHVzCisgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5fbWljcm9zZWNvbmRzOgotICAgICAgICAgICAgcmV0dXJuICIlcyglZCwgJWQsICVkKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzKQorICAgICAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmRzKQogICAgICAgICBpZiBzZWxmLl9zZWNvbmRzOgotICAgICAgICAgICAgcmV0dXJuICIlcyglZCwgJWQpIiAlICgnZGF0ZXRpbWUuJyArIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzKQotICAgICAgICByZXR1cm4gIiVzKCVkKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fZGF5cykKKyAgICAgICAgICAgIHJldHVybiAiJXMuJXMoJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWNvbmRzKQorICAgICAgICByZXR1cm4gIiVzLiVzKCVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheXMpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgbW0sIHNzID0gZGl2bW9kKHNlbGYuX3NlY29uZHMsIDYwKQpAQCAtNDU3LDcgKzQ2Niw3IEBACiAKICAgICBkZWYgdG90YWxfc2Vjb25kcyhzZWxmKToKICAgICAgICAgIiIiVG90YWwgc2Vjb25kcyBpbiB0aGUgZHVyYXRpb24uIiIiCi0gICAgICAgIHJldHVybiAoKHNlbGYuZGF5cyAqIDg2NDAwICsgc2VsZi5zZWNvbmRzKSoxMCoqNiArCisgICAgICAgIHJldHVybiAoKHNlbGYuZGF5cyAqIDg2NDAwICsgc2VsZi5zZWNvbmRzKSAqIDEwKio2ICsKICAgICAgICAgICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kcykgLyAxMCoqNgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC01NzgsMTIgKzU4Nyw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lZGVsdGEpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMApAQCAtNjEzLDcgKzYxNiw5IEBACiAgICAgICAgIHJldHVybiBfY21wKHNlbGYuX2dldHN0YXRlKCksIG90aGVyLl9nZXRzdGF0ZSgpKQogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIChzZWxmLl9kYXlzICE9IDAgb3IKQEAgLTY2MSw3ICs2NjYsNyBAQAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKICAgICB5ZWFyLCBtb250aCwgZGF5CiAgICAgIiIiCi0gICAgX19zbG90c19fID0gJ195ZWFyJywgJ19tb250aCcsICdfZGF5JworICAgIF9fc2xvdHNfXyA9ICdfeWVhcicsICdfbW9udGgnLCAnX2RheScsICdfaGFzaGNvZGUnCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCkBAIC02NzAsMTcgKzY3NSwxOSBAQAogCiAgICAgICAgIHllYXIsIG1vbnRoLCBkYXkgKHJlcXVpcmVkLCBiYXNlIDEpCiAgICAgICAgICIiIgotICAgICAgICBpZiAoaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSA0IGFuZAotICAgICAgICAgICAgMSA8PSB5ZWFyWzJdIDw9IDEyIGFuZCBtb250aCBpcyBOb25lKTogICMgTW9udGggaXMgc2FuZQorICAgICAgICBpZiBtb250aCBpcyBOb25lIGFuZCBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDQgYW5kIFwKKyAgICAgICAgICAgICAgICAxIDw9IHllYXJbMl0gPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIpCisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBfY2hlY2tfZGF0ZV9maWVsZHMoeWVhciwgbW9udGgsIGRheSkKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl95ZWFyID0geWVhcgogICAgICAgICBzZWxmLl9tb250aCA9IG1vbnRoCiAgICAgICAgIHNlbGYuX2RheSA9IGRheQorICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIEFkZGl0aW9uYWwgY29uc3RydWN0b3JzCkBAIC03MjAsMTAgKzcyNywxMSBAQAogICAgICAgICA+Pj4gcmVwcihkdCkKICAgICAgICAgJ2RhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDEsIDEsIDAsIDAsIHR6aW5mbz1kYXRldGltZS50aW1lem9uZS51dGMpJwogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICIlcyglZCwgJWQsICVkKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5feWVhciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9udGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RheSkKKyAgICAgICAgcmV0dXJuICIlcy4lcyglZCwgJWQsICVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl95ZWFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGF5KQogICAgICMgWFhYIFRoZXNlIHNob3VsZG4ndCBkZXBlbmQgb24gdGltZS5sb2NhbHRpbWUoKSwgYmVjYXVzZSB0aGF0CiAgICAgIyBjbGlwcyB0aGUgdXNhYmxlIGRhdGVzIHRvIFsxOTcwIC4uIDIwMzgpLiAgQXQgbGVhc3QgY3RpbWUoKSBpcwogICAgICMgZWFzaWx5IGRvbmUgd2l0aG91dCB1c2luZyBzdHJmdGltZSgpIC0tIHRoYXQncyBiZXR0ZXIgdG9vIGJlY2F1c2UKQEAgLTc0Myw2ICs3NTEsOCBAQAogICAgICAgICByZXR1cm4gX3dyYXBfc3RyZnRpbWUoc2VsZiwgZm10LCBzZWxmLnRpbWV0dXBsZSgpKQogCiAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm10KToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZm10LCBzdHIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtdXN0IGJlIHN0ciwgbm90ICVzIiAlIHR5cGUoZm10KS5fX25hbWVfXykKICAgICAgICAgaWYgbGVuKGZtdCkgIT0gMDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLnN0cmZ0aW1lKGZtdCkKICAgICAgICAgcmV0dXJuIHN0cihzZWxmKQpAQCAtODAwLDcgKzgxMCw2IEBACiAgICAgICAgICAgICBtb250aCA9IHNlbGYuX21vbnRoCiAgICAgICAgIGlmIGRheSBpcyBOb25lOgogICAgICAgICAgICAgZGF5ID0gc2VsZi5fZGF5Ci0gICAgICAgIF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQogICAgICAgICByZXR1cm4gZGF0ZSh5ZWFyLCBtb250aCwgZGF5KQogCiAgICAgIyBDb21wYXJpc29ucyBvZiBkYXRlIG9iamVjdHMgd2l0aCBvdGhlci4KQEAgLTgxMCwxMSArODE5LDYgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCi0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotCiAgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGUpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPD0gMApAQCAtODQzLDcgKzg0Nyw5IEBACiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgICJIYXNoLiIKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6CisgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hjb2RlCiAKICAgICAjIENvbXB1dGF0aW9ucwogCkBAIC05MTMsOCArOTE5LDYgQEAKICAgICAgICAgcmV0dXJuIGJ5dGVzKFt5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheV0pLAogCiAgICAgZGVmIF9fc2V0c3RhdGUoc2VsZiwgc3RyaW5nKToKLSAgICAgICAgaWYgbGVuKHN0cmluZykgIT0gNCBvciBub3QgKDEgPD0gc3RyaW5nWzJdIDw9IDEyKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGVub3VnaCBhcmd1bWVudHMiKQogICAgICAgICB5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAKQEAgLTkzMyw2ICs5MzcsNyBAQAogICAgIFN1YmNsYXNzZXMgbXVzdCBvdmVycmlkZSB0aGUgbmFtZSgpLCB1dGNvZmZzZXQoKSBhbmQgZHN0KCkgbWV0aG9kcy4KICAgICAiIiIKICAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CiAgICAgICAgICJkYXRldGltZSAtPiBzdHJpbmcgbmFtZSBvZiB0aW1lIHpvbmUuIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJ0emluZm8gc3ViY2xhc3MgbXVzdCBvdmVycmlkZSB0em5hbWUoKSIpCkBAIC0xMDE5LDYgKzEwMjQsNyBAQAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbwogICAgICIiIgorICAgIF9fc2xvdHNfXyA9ICdfaG91cicsICdfbWludXRlJywgJ19zZWNvbmQnLCAnX21pY3Jvc2Vjb25kJywgJ190emluZm8nLCAnX2hhc2hjb2RlJwogCiAgICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KQEAgLTEwMjksMTggKzEwMzUsMjIgQEAKICAgICAgICAgc2Vjb25kLCBtaWNyb3NlY29uZCAoZGVmYXVsdCB0byB6ZXJvKQogICAgICAgICB0emluZm8gKGRlZmF1bHQgdG8gTm9uZSkKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdIDwgMjQ6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CisgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKGhvdXIsIG1pbnV0ZSBvciBOb25lKQorICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCi0gICAgICAgIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCiAgICAgICAgIHNlbGYuX21pbnV0ZSA9IG1pbnV0ZQogICAgICAgICBzZWxmLl9zZWNvbmQgPSBzZWNvbmQKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KKyAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMDc5LDEyICsxMDg5LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCB0aW1lKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpIDw9IDAKQEAgLTExMjUsOCArMTEyOSw4IEBACiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKICAgICAgICAgICAgIHJldHVybiBfY21wKChzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCksCi0gICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX2hvdXIsIG90aGVyLl9taW51dGUsIG90aGVyLl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgogICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKQEAgLTExMzksMTYgKzExNDMsMjAgQEAKIAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIiIiSGFzaC4iIiIKLSAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCi0gICAgICAgIGlmIG5vdCB0em9mZjogIyB6ZXJvIG9yIE5vbmUKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCi0gICAgICAgIGgsIG0gPSBkaXZtb2QodGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgLSB0em9mZiwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCi0gICAgICAgIGFzc2VydCBub3QgbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICBtIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQotICAgICAgICBpZiAwIDw9IGggPCAyNDoKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHRpbWUoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQotICAgICAgICByZXR1cm4gaGFzaCgoaCwgbSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpKQorICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKKyAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgbm90IHR6b2ZmOiAgIyB6ZXJvIG9yIE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWRlbHRhKGhvdXJzPTEpKQorICAgICAgICAgICAgICAgIGFzc2VydCBub3QgbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgorICAgICAgICAgICAgICAgIG0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICAgICAgaWYgMCA8PSBoIDwgMjQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0aW1lKGgsIG0sIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goKGgsIG0sIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hjb2RlCiAKICAgICAjIENvbnZlcnNpb24gdG8gc3RyaW5nCiAKQEAgLTExNzYsOCArMTE4NCw5IEBACiAgICAgICAgICAgICBzID0gIiwgJWQiICUgc2VsZi5fc2Vjb25kCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzID0gIiIKLSAgICAgICAgcz0gIiVzKCVkLCAlZCVzKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzKQorICAgICAgICBzPSAiJXMuJXMoJWQsICVkJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgcykKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCkBAIC0xMjEwLDYgKzEyMTksOCBAQAogICAgICAgICByZXR1cm4gX3dyYXBfc3RyZnRpbWUoc2VsZiwgZm10LCB0aW1ldHVwbGUpCiAKICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBmbXQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmbXQsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm11c3QgYmUgc3RyLCBub3QgJXMiICUgdHlwZShmbXQpLl9fbmFtZV9fKQogICAgICAgICBpZiBsZW4oZm10KSAhPSAwOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RyZnRpbWUoZm10KQogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCkBAIC0xMjY2LDE2ICsxMjc3LDggQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCi0gICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKICAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8pCiAKLSAgICBkZWYgX19ib29sX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2Vjb25kIG9yIHNlbGYubWljcm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpIG9yIHRpbWVkZWx0YSgwKQotICAgICAgICByZXR1cm4gdGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgIT0gb2Zmc2V0Ci0KICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCiAgICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKQEAgLTEyODksMTUgKzEyOTIsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCBzZWxmLl90emluZm8pCiAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6Ci0gICAgICAgIGlmIGxlbihzdHJpbmcpICE9IDYgb3Igc3RyaW5nWzBdID49IDI0OgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIikKLSAgICAgICAgKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKKyAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCisgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwotICAgICAgICBpZiB0emluZm8gaXMgTm9uZSBvciBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6Ci0gICAgICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmcgJXIiICUgdHppbmZvKQorICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKHRpbWUsIHNlbGYuX2dldHN0YXRlKCkpCkBAIC0xMzE0LDI1ICsxMzEzLDMwIEBACiAgICAgVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbgogICAgIGluc3RhbmNlIG9mIGEgdHppbmZvIHN1YmNsYXNzLiBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50cy4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArIHRpbWUuX19zbG90c19fCiAKLSAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArICgKLSAgICAgICAgJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsCi0gICAgICAgICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycpCiAgICAgZGVmIF9fbmV3X18oY2xzLCB5ZWFyLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsCiAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwOgorICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZCAxIDw9IHllYXJbMl0gPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0Ci0gICAgICAgICAgICBzZWxmID0gZGF0ZS5fX25ld19fKGNscywgeWVhcls6NF0pCisgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIsIG1vbnRoKQorICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKLSAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKLSAgICAgICAgc2VsZiA9IGRhdGUuX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoLCBkYXkpCisgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCisgICAgICAgIHNlbGYuX21vbnRoID0gbW9udGgKKyAgICAgICAgc2VsZi5fZGF5ID0gZGF5CiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCiAgICAgICAgIHNlbGYuX21pbnV0ZSA9IG1pbnV0ZQogICAgICAgICBzZWxmLl9zZWNvbmQgPSBzZWNvbmQKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KKyAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMzk5LDExICsxNDAzLDYgQEAKICAgICAgICAgIiIiQ29uc3RydWN0IGEgbmFpdmUgVVRDIGRhdGV0aW1lIGZyb20gYSBQT1NJWCB0aW1lc3RhbXAuIiIiCiAgICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgVHJ1ZSwgTm9uZSkKIAotICAgICMgWFhYIFRoaXMgaXMgc3VwcG9zZWQgdG8gZG8gYmV0dGVyIHRoYW4gd2UgKmNhbiogZG8gYnkgdXNpbmcgdGltZS50aW1lKCksCi0gICAgIyBYWFggaWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIGEgbW9yZSBhY2N1cmF0ZSB3YXkuICBUaGUgQyBpbXBsZW1lbnRhdGlvbgotICAgICMgWFhYIHVzZXMgZ2V0dGltZW9mZGF5IG9uIHBsYXRmb3JtcyB0aGF0IGhhdmUgaXQsIGJ1dCB0aGF0IGlzbid0Ci0gICAgIyBYWFggYXZhaWxhYmxlIGZyb20gUHl0aG9uLiAgU28gbm93KCkgbWF5IHJldHVybiBkaWZmZXJlbnQgcmVzdWx0cwotICAgICMgWFhYIGFjcm9zcyB0aGUgaW1wbGVtZW50YXRpb25zLgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBub3coY2xzLCB0ej1Ob25lKToKICAgICAgICAgIkNvbnN0cnVjdCBhIGRhdGV0aW1lIGZyb20gdGltZS50aW1lKCkgYW5kIG9wdGlvbmFsIHRpbWUgem9uZSBpbmZvLiIKQEAgLTE0OTAsMTEgKzE0ODksOCBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCi0gICAgICAgIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCi0gICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKLSAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvKQorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKQogCiAgICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHo9Tm9uZSk6CiAgICAgICAgIGlmIHR6IGlzIE5vbmU6CkBAIC0xNTY0LDEwICsxNTYwLDkgQEAKICAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgc2VwIHNwZWNpZmllcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gZGF0ZSBhbmQKICAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCiAgICAgICAgICIiIgotICAgICAgICBzID0gKCIlMDRkLSUwMmQtJTAyZCVjIiAlIChzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcCkgKwotICAgICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQorICAgICAgICBzID0gKCIlMDRkLSUwMmQtJTAyZCVjIiAlIChzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCBzZXApICsKKyAgICAgICAgICAgICBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgb2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICBpZiBvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBvZmYuZGF5cyA8IDA6CkBAIC0xNTgzLDE0ICsxNTc4LDE1IEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIkNvbnZlcnQgdG8gZm9ybWFsIHN0cmluZywgZm9yIHJlcHIoKS4iIiIKLSAgICAgICAgTCA9IFtzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCAjIFRoZXNlIGFyZSBuZXZlciB6ZXJvCisgICAgICAgIEwgPSBbc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgICMgVGhlc2UgYXJlIG5ldmVyIHplcm8KICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgc2VsZi5fbWljcm9zZWNvbmRdCiAgICAgICAgIGlmIExbLTFdID09IDA6CiAgICAgICAgICAgICBkZWwgTFstMV0KICAgICAgICAgaWYgTFstMV0gPT0gMDoKICAgICAgICAgICAgIGRlbCBMWy0xXQotICAgICAgICBzID0gIiwgIi5qb2luKG1hcChzdHIsIEwpKQotICAgICAgICBzID0gIiVzKCVzKSIgJSAoJ2RhdGV0aW1lLicgKyBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgcykKKyAgICAgICAgcyA9ICIlcy4lcyglcykiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4obWFwKHN0ciwgTCkpKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKQEAgLTE2MjIsNyArMTYxOCw5IEBACiAgICAgICAgIGl0IG1lYW4gYW55dGhpbmcgaW4gcGFydGljdWxhci4gRm9yIGV4YW1wbGUsICJHTVQiLCAiVVRDIiwgIi01MDAiLAogICAgICAgICAiLTU6MDAiLCAiRURUIiwgIlVTL0Vhc3Rlcm4iLCAiQW1lcmljYS9OZXcgWW9yayIgYXJlIGFsbCB2YWxpZCByZXBsaWVzLgogICAgICAgICAiIiIKLSAgICAgICAgbmFtZSA9IF9jYWxsX3R6aW5mb19tZXRob2Qoc2VsZi5fdHppbmZvLCAidHpuYW1lIiwgc2VsZikKKyAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBuYW1lID0gc2VsZi5fdHppbmZvLnR6bmFtZShzZWxmKQogICAgICAgICBfY2hlY2tfdHpuYW1lKG5hbWUpCiAgICAgICAgIHJldHVybiBuYW1lCiAKQEAgLTE2NTEsMTQgKzE2NDksNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKLSAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCkBAIC0xNzA4LDkgKzE2OTgsOSBAQAogICAgICAgICAgICAgcmV0dXJuIF9jbXAoKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpLAotICAgICAgICAgICAgICAgICAgICAgICAob3RoZXIuX3llYXIsIG90aGVyLl9tb250aCwgb3RoZXIuX2RheSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChvdGhlci5feWVhciwgb3RoZXIuX21vbnRoLCBvdGhlci5fZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCiAgICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKICAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgogICAgICAgICAgICAgICAgIHJldHVybiAyICMgYXJiaXRyYXJ5IG5vbi16ZXJvIHZhbHVlCkBAIC0xNzY4LDEyICsxNzU4LDE1IEBACiAgICAgICAgIHJldHVybiBiYXNlICsgb3RvZmYgLSBteW9mZgogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKLSAgICAgICAgaWYgdHpvZmYgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCi0gICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQotICAgICAgICBzZWNvbmRzID0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZAotICAgICAgICByZXR1cm4gaGFzaCh0aW1lZGVsdGEoZGF5cywgc2Vjb25kcywgc2VsZi5taWNyb3NlY29uZCkgLSB0em9mZikKKyAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6CisgICAgICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIHR6b2ZmIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQorICAgICAgICAgICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHRpbWVkZWx0YShkYXlzLCBzZWNvbmRzLCBzZWxmLm1pY3Jvc2Vjb25kKSAtIHR6b2ZmKQorICAgICAgICByZXR1cm4gc2VsZi5faGFzaGNvZGUKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKQEAgLTE3OTAsMTQgKzE3ODMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCBzZWxmLl90emluZm8pCiAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CisgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQogICAgICAgICAoeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCiAgICAgICAgICBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKICAgICAgICAgc2VsZi5feWVhciA9IHloaSAqIDI1NiArIHlsbwogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKLSAgICAgICAgaWYgdHppbmZvIGlzIE5vbmUgb3IgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgotICAgICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnICVyIiAlIHR6aW5mbykKKyAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKQEAgLTE4MTMsNyArMTgwNSw3IEBACiAgICAgIyBYWFggVGhpcyBjb3VsZCBiZSBkb25lIG1vcmUgZWZmaWNpZW50bHkKICAgICBUSFVSU0RBWSA9IDMKICAgICBmaXJzdGRheSA9IF95bWQyb3JkKHllYXIsIDEsIDEpCi0gICAgZmlyc3R3ZWVrZGF5ID0gKGZpcnN0ZGF5ICsgNikgJSA3ICMgU2VlIHdlZWtkYXkoKSBhYm92ZQorICAgIGZpcnN0d2Vla2RheSA9IChmaXJzdGRheSArIDYpICUgNyAgIyBTZWUgd2Vla2RheSgpIGFib3ZlCiAgICAgd2VlazFtb25kYXkgPSBmaXJzdGRheSAtIGZpcnN0d2Vla2RheQogICAgIGlmIGZpcnN0d2Vla2RheSA+IFRIVVJTREFZOgogICAgICAgICB3ZWVrMW1vbmRheSArPSA3CkBAIC0xODM0LDEzICsxODI2LDEyIEBACiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyaW5nIikKICAgICAgICAgaWYgbm90IGNscy5fbWlub2Zmc2V0IDw9IG9mZnNldCA8PSBjbHMuX21heG9mZnNldDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHRpbWVkZWx0YShob3Vycz0yNCkuIikKLSAgICAgICAgaWYgKG9mZnNldC5taWNyb3NlY29uZHMgIT0gMCBvcgotICAgICAgICAgICAgb2Zmc2V0LnNlY29uZHMgJSA2MCAhPSAwKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdGx5IGJldHdlZW4gLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVkZWx0YShob3Vycz0yNCkuIikKKyAgICAgICAgaWYgKG9mZnNldC5taWNyb3NlY29uZHMgIT0gMCBvciBvZmZzZXQuc2Vjb25kcyAlIDYwICE9IDApOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKQogICAgICAgICByZXR1cm4gY2xzLl9jcmVhdGUob2Zmc2V0LCBuYW1lKQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC0xODc3LDEwICsxODY4LDEyIEBACiAgICAgICAgIGlmIHNlbGYgaXMgc2VsZi51dGM6CiAgICAgICAgICAgICByZXR1cm4gJ2RhdGV0aW1lLnRpbWV6b25lLnV0YycKICAgICAgICAgaWYgc2VsZi5fbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICIlcyglcikiICUgKCdkYXRldGltZS4nICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0KQotICAgICAgICByZXR1cm4gIiVzKCVyLCAlcikiICUgKCdkYXRldGltZS4nICsgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0LCBzZWxmLl9uYW1lKQorICAgICAgICAgICAgcmV0dXJuICIlcy4lcyglcikiICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCkKKyAgICAgICAgcmV0dXJuICIlcy4lcyglciwgJXIpIiAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQsIHNlbGYuX25hbWUpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYudHpuYW1lKE5vbmUpCkBAIC0yMTM1LDE0ICsyMTI4LDEzIEBACiAgICAgcGFzcwogZWxzZToKICAgICAjIENsZWFuIHVwIHVudXNlZCBuYW1lcwotICAgIGRlbCAoX0RBWU5BTUVTLCBfREFZU19CRUZPUkVfTU9OVEgsIF9EQVlTX0lOX01PTlRILAotICAgICAgICAgX0RJMTAwWSwgX0RJNDAwWSwgX0RJNFksIF9NQVhPUkRJTkFMLCBfTU9OVEhOQU1FUywKLSAgICAgICAgIF9idWlsZF9zdHJ1Y3RfdGltZSwgX2NhbGxfdHppbmZvX21ldGhvZCwgX2NoZWNrX2RhdGVfZmllbGRzLAotICAgICAgICAgX2NoZWNrX3RpbWVfZmllbGRzLCBfY2hlY2tfdHppbmZvX2FyZywgX2NoZWNrX3R6bmFtZSwKLSAgICAgICAgIF9jaGVja191dGNfb2Zmc2V0LCBfY21wLCBfY21wZXJyb3IsIF9kYXRlX2NsYXNzLCBfZGF5c19iZWZvcmVfbW9udGgsCi0gICAgICAgICBfZGF5c19iZWZvcmVfeWVhciwgX2RheXNfaW5fbW9udGgsIF9mb3JtYXRfdGltZSwgX2lzX2xlYXAsCi0gICAgICAgICBfaXNvd2VlazFtb25kYXksIF9tYXRoLCBfb3JkMnltZCwgX3RpbWUsIF90aW1lX2NsYXNzLCBfdHppbmZvX2NsYXNzLAotICAgICAgICAgX3dyYXBfc3RyZnRpbWUsIF95bWQyb3JkKQorICAgIGRlbCAoX0RBWU5BTUVTLCBfREFZU19CRUZPUkVfTU9OVEgsIF9EQVlTX0lOX01PTlRILCBfREkxMDBZLCBfREk0MDBZLAorICAgICAgICAgX0RJNFksIF9FUE9DSCwgX01BWE9SRElOQUwsIF9NT05USE5BTUVTLCBfYnVpbGRfc3RydWN0X3RpbWUsCisgICAgICAgICBfY2hlY2tfZGF0ZV9maWVsZHMsIF9jaGVja19pbnRfZmllbGQsIF9jaGVja190aW1lX2ZpZWxkcywKKyAgICAgICAgIF9jaGVja190emluZm9fYXJnLCBfY2hlY2tfdHpuYW1lLCBfY2hlY2tfdXRjX29mZnNldCwgX2NtcCwgX2NtcGVycm9yLAorICAgICAgICAgX2RhdGVfY2xhc3MsIF9kYXlzX2JlZm9yZV9tb250aCwgX2RheXNfYmVmb3JlX3llYXIsIF9kYXlzX2luX21vbnRoLAorICAgICAgICAgX2Zvcm1hdF90aW1lLCBfaXNfbGVhcCwgX2lzb3dlZWsxbW9uZGF5LCBfbWF0aCwgX29yZDJ5bWQsCisgICAgICAgICBfdGltZSwgX3RpbWVfY2xhc3MsIF90emluZm9fY2xhc3MsIF93cmFwX3N0cmZ0aW1lLCBfeW1kMm9yZCkKICAgICAjIFhYWCBTaW5jZSBpbXBvcnQgKiBhYm92ZSBleGNsdWRlcyBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggXywKICAgICAjIGRvY3N0cmluZyBkb2VzIG5vdCBnZXQgb3ZlcndyaXR0ZW4uIEluIHRoZSBmdXR1cmUsIGl0IG1heSBiZQogICAgICMgYXBwcm9wcmlhdGUgdG8gbWFpbnRhaW4gYSBzaW5nbGUgbW9kdWxlIGxldmVsIGRvY3N0cmluZyBhbmQKZGlmZiAtLWdpdCBhL0xpYi9kYm0vX19pbml0X18ucHkgYi9MaWIvZGJtL19faW5pdF9fLnB5CmluZGV4IDVmNDY2NGEuLjY4MzFhODQgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vX19pbml0X18ucHkKKysrIGIvTGliL2RibS9fX2luaXRfXy5weQpAQCAtMTUzLDkgKzE1Myw5IEBACiAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAjIFJlYWQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIC0tIHRoZSBtYWdpYyBudW1iZXIKLSAgICBzMTYgPSBmLnJlYWQoMTYpCi0gICAgZi5jbG9zZSgpCisgICAgd2l0aCBmOgorICAgICAgICAjIFJlYWQgdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIC0tIHRoZSBtYWdpYyBudW1iZXIKKyAgICAgICAgczE2ID0gZi5yZWFkKDE2KQogICAgIHMgPSBzMTZbMDo0XQogCiAgICAgIyBSZXR1cm4gIiIgaWYgbm90IGF0IGxlYXN0IDQgYnl0ZXMKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCA2M2JjMzI5Li43Nzc3YTdjIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC00NSw3ICs0NSw3IEBACiAgICAgX29zID0gX29zICAgICAgICMgZm9yIF9jb21taXQoKQogICAgIF9pbyA9IF9pbyAgICAgICAjIGZvciBfY29tbWl0KCkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlYmFzZW5hbWUsIG1vZGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlYmFzZW5hbWUsIG1vZGUsIGZsYWc9J2MnKToKICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGUKIAogICAgICAgICAjIFRoZSBkaXJlY3RvcnkgZmlsZSBpcyBhIHRleHQgZmlsZS4gIEVhY2ggbGluZSBsb29rcyBsaWtlCkBAIC02NSw2ICs2NSwxNyBAQAogICAgICAgICAjIFRoZSBpbmRleCBpcyBhbiBpbi1tZW1vcnkgZGljdCwgbWlycm9yaW5nIHRoZSBkaXJlY3RvcnkgZmlsZS4KICAgICAgICAgc2VsZi5faW5kZXggPSBOb25lICAjIG1hcHMga2V5cyB0byAocG9zLCBzaXopIHBhaXJzCiAKKyAgICAgICAgIyBIYW5kbGUgdGhlIGNyZWF0aW9uCisgICAgICAgIHNlbGYuX2NyZWF0ZShmbGFnKQorICAgICAgICBzZWxmLl91cGRhdGUoKQorCisgICAgZGVmIF9jcmVhdGUoc2VsZiwgZmxhZyk6CisgICAgICAgIGlmIGZsYWcgPT0gJ24nOgorICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIChzZWxmLl9kYXRmaWxlLCBzZWxmLl9iYWtmaWxlLCBzZWxmLl9kaXJmaWxlKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF9vcy5yZW1vdmUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBNb2QgYnkgSmFjazogY3JlYXRlIGRhdGEgZmlsZSBpZiBuZWVkZWQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IF9pby5vcGVuKHNlbGYuX2RhdGZpbGUsICdyJywgZW5jb2Rpbmc9IkxhdGluLTEiKQpAQCAtNzMsNyArODQsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2NobW9kKHNlbGYuX2RhdGZpbGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgc2VsZi5fdXBkYXRlKCkKIAogICAgICMgUmVhZCBkaXJlY3RvcnkgZmlsZSBpbnRvIHRoZSBpbi1tZW1vcnkgaW5kZXggZGljdC4KICAgICBkZWYgX3VwZGF0ZShzZWxmKToKQEAgLTI2NiwyMCArMjc2LDIwIEBACiAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAKLWRlZiBvcGVuKGZpbGUsIGZsYWc9Tm9uZSwgbW9kZT0wbzY2Nik6CitkZWYgb3BlbihmaWxlLCBmbGFnPSdjJywgbW9kZT0wbzY2Nik6CiAgICAgIiIiT3BlbiB0aGUgZGF0YWJhc2UgZmlsZSwgZmlsZW5hbWUsIGFuZCByZXR1cm4gY29ycmVzcG9uZGluZyBvYmplY3QuCiAKICAgICBUaGUgZmxhZyBhcmd1bWVudCwgdXNlZCB0byBjb250cm9sIGhvdyB0aGUgZGF0YWJhc2UgaXMgb3BlbmVkIGluIHRoZQotICAgIG90aGVyIERCTSBpbXBsZW1lbnRhdGlvbnMsIGlzIGlnbm9yZWQgaW4gdGhlIGRibS5kdW1iIG1vZHVsZTsgdGhlCi0gICAgZGF0YWJhc2UgaXMgYWx3YXlzIG9wZW5lZCBmb3IgdXBkYXRlLCBhbmQgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMKLSAgICBub3QgZXhpc3QuCisgICAgb3RoZXIgREJNIGltcGxlbWVudGF0aW9ucywgc3VwcG9ydHMgb25seSB0aGUgc2VtYW50aWNzIG9mICdjJyBhbmQgJ24nCisgICAgdmFsdWVzLiAgT3RoZXIgdmFsdWVzIHdpbGwgZGVmYXVsdCB0byB0aGUgc2VtYW50aWNzIG9mICdjJyB2YWx1ZToKKyAgICB0aGUgZGF0YWJhc2Ugd2lsbCBhbHdheXMgb3BlbmVkIGZvciB1cGRhdGUgYW5kIHdpbGwgYmUgY3JlYXRlZCBpZiBpdAorICAgIGRvZXMgbm90IGV4aXN0LgogCiAgICAgVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVOSVggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5IHdoZW4KICAgICB0aGUgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0byBvY3RhbCBjb2RlIDBvNjY2IChhbmQKICAgICB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoZSBwcmV2YWlsaW5nIHVtYXNrKS4KIAogICAgICIiIgotICAgICMgZmxhZyBhcmd1bWVudCBpcyBjdXJyZW50bHkgaWdub3JlZAogCiAgICAgIyBNb2RpZnkgbW9kZSBkZXBlbmRpbmcgb24gdGhlIHVtYXNrCiAgICAgdHJ5OgpAQCAtMjkwLDUgKzMwMCw0IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUdXJuIG9mZiBhbnkgYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIHVtYXNrCiAgICAgICAgIG1vZGUgPSBtb2RlICYgKH51bSkKLQotICAgIHJldHVybiBfRGF0YWJhc2UoZmlsZSwgbW9kZSkKKyAgICByZXR1cm4gX0RhdGFiYXNlKGZpbGUsIG1vZGUsIGZsYWc9ZmxhZykKZGlmZiAtLWdpdCBhL0xpYi9kZWNpbWFsLnB5IGIvTGliL2RlY2ltYWwucHkKaW5kZXggMzI0ZTRmOS4uNzc0NmVhMiAxMDA2NDQKLS0tIGEvTGliL2RlY2ltYWwucHkKKysrIGIvTGliL2RlY2ltYWwucHkKQEAgLTEsNjQxMyArMSwxMSBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMDQgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLSMgV3JpdHRlbiBieSBFcmljIFByaWNlIDxlcHJpY2UgYXQgdGpoc3N0LmVkdT4KLSMgICAgYW5kIEZhY3VuZG8gQmF0aXN0YSA8ZmFjdW5kbyBhdCB0YW5pcXVldGlsLmNvbS5hcj4KLSMgICAgYW5kIFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KLSMgICAgYW5kIEFhaHogPGFhaHogYXQgcG9ib3guY29tPgotIyAgICBhbmQgVGltIFBldGVycwotCi0jIFRoaXMgbW9kdWxlIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgbGF0ZXN0IHVwZGF0ZXMgb2YgdGhlCi0jIElCTSBzcGVjaWZpY2F0aW9uIGFzIGl0IGV2b2x2ZXMuICBUaG9zZSB1cGRhdGVzIHdpbGwgYmUgdHJlYXRlZAotIyBhcyBidWcgZml4ZXMgKGRldmlhdGlvbiBmcm9tIHRoZSBzcGVjIGlzIGEgY29tcGF0aWJpbGl0eSwgdXNhYmlsaXR5Ci0jIGJ1ZykgYW5kIHdpbGwgYmUgYmFja3BvcnRlZC4gIEF0IHRoaXMgcG9pbnQgdGhlIHNwZWMgaXMgc3RhYmlsaXppbmcKLSMgYW5kIHRoZSB1cGRhdGVzIGFyZSBiZWNvbWluZyBmZXdlciwgc21hbGxlciwgYW5kIGxlc3Mgc2lnbmlmaWNhbnQuCi0KLSIiIgotVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFzZWQgb24KLXRoZSBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uOgotCi0gICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY2FyaXRoLmh0bWwKLQotYW5kIElFRUUgc3RhbmRhcmQgODU0LTE5ODc6Ci0KLSAgICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfODU0LTE5ODcKLQotRGVjaW1hbCBmbG9hdGluZyBwb2ludCBoYXMgZmluaXRlIHByZWNpc2lvbiB3aXRoIGFyYml0cmFyaWx5IGxhcmdlIGJvdW5kcy4KLQotVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMgdG8gc3VwcG9ydCBhcml0aG1ldGljIHVzaW5nIGZhbWlsaWFyCi0ic2Nob29saG91c2UiIHJ1bGVzIGFuZCB0byBhdm9pZCBzb21lIG9mIHRoZSB0cmlja3kgcmVwcmVzZW50YXRpb24KLWlzc3VlcyBhc3NvY2lhdGVkIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50LiAgVGhlIHBhY2thZ2UgaXMgZXNwZWNpYWxseQotdXNlZnVsIGZvciBmaW5hbmNpYWwgYXBwbGljYXRpb25zIG9yIGZvciBjb250ZXh0cyB3aGVyZSB1c2VycyBoYXZlCi1leHBlY3RhdGlvbnMgdGhhdCBhcmUgYXQgb2RkcyB3aXRoIGJpbmFyeSBmbG9hdGluZyBwb2ludCAoZm9yIGluc3RhbmNlLAotaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCAxLjAwICUgMC4xIGdpdmVzIDAuMDk5OTk5OTk5OTk5OTk5OTUgaW5zdGVhZAotb2YgMC4wOyBEZWNpbWFsKCcxLjAwJykgJSBEZWNpbWFsKCcwLjEnKSByZXR1cm5zIHRoZSBleHBlY3RlZAotRGVjaW1hbCgnMC4wMCcpKS4KLQotSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB1c2luZyB0aGUgZGVjaW1hbCBtb2R1bGU6Ci0KLT4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0ICoKLT4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKLT4+PiBEZWNpbWFsKDApCi1EZWNpbWFsKCcwJykKLT4+PiBEZWNpbWFsKCcxJykKLURlY2ltYWwoJzEnKQotPj4+IERlY2ltYWwoJy0uMDEyMycpCi1EZWNpbWFsKCctMC4wMTIzJykKLT4+PiBEZWNpbWFsKDEyMzQ1NikKLURlY2ltYWwoJzEyMzQ1NicpCi0+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4JykKLURlY2ltYWwoJzEuMjM0NUUrMTIzNDU2ODAnKQotPj4+IERlY2ltYWwoJzEuMzMnKSArIERlY2ltYWwoJzEuMjcnKQotRGVjaW1hbCgnMi42MCcpCi0+Pj4gRGVjaW1hbCgnMTIuMzQnKSArIERlY2ltYWwoJzMuODcnKSAtIERlY2ltYWwoJzE4LjQxJykKLURlY2ltYWwoJy0yLjIwJykKLT4+PiBkaWcgPSBEZWNpbWFsKDEpCi0+Pj4gcHJpbnQoZGlnIC8gRGVjaW1hbCgzKSkKLTAuMzMzMzMzMzMzCi0+Pj4gZ2V0Y29udGV4dCgpLnByZWMgPSAxOAotPj4+IHByaW50KGRpZyAvIERlY2ltYWwoMykpCi0wLjMzMzMzMzMzMzMzMzMzMzMzMwotPj4+IHByaW50KGRpZy5zcXJ0KCkpCi0xCi0+Pj4gcHJpbnQoRGVjaW1hbCgzKS5zcXJ0KCkpCi0xLjczMjA1MDgwNzU2ODg3NzI5Ci0+Pj4gcHJpbnQoRGVjaW1hbCgzKSAqKiAxMjMpCi00Ljg1MTkyNzgwOTc2ODk2NDI3RSs1OAotPj4+IGluZiA9IERlY2ltYWwoMSkgLyBEZWNpbWFsKDApCi0+Pj4gcHJpbnQoaW5mKQotSW5maW5pdHkKLT4+PiBuZWdpbmYgPSBEZWNpbWFsKC0xKSAvIERlY2ltYWwoMCkKLT4+PiBwcmludChuZWdpbmYpCi0tSW5maW5pdHkKLT4+PiBwcmludChuZWdpbmYgKyBpbmYpCi1OYU4KLT4+PiBwcmludChuZWdpbmYgKiBpbmYpCi0tSW5maW5pdHkKLT4+PiBwcmludChkaWcgLyAwKQotSW5maW5pdHkKLT4+PiBnZXRjb250ZXh0KCkudHJhcHNbRGl2aXNpb25CeVplcm9dID0gMQotPj4+IHByaW50KGRpZyAvIDApCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uLgotICAuLi4KLSAgLi4uCi1kZWNpbWFsLkRpdmlzaW9uQnlaZXJvOiB4IC8gMAotPj4+IGMgPSBDb250ZXh0KCkKLT4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0wCi0+Pj4gYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkKLURlY2ltYWwoJ05hTicpCi0+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDEKLT4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotMQotPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLTAKLT4+PiBwcmludChjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKSkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4uCi0gIC4uLgotICAuLi4KLWRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbjogMCAvIDAKLT4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotMQotPj4+IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0gPSAwCi0+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKLT4+PiBwcmludChjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKSkKLU5hTgotPj4+IHByaW50KGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCi0xCi0+Pj4KLSIiIgotCi1fX2FsbF9fID0gWwotICAgICMgVHdvIG1ham9yIGNsYXNzZXMKLSAgICAnRGVjaW1hbCcsICdDb250ZXh0JywKLQotICAgICMgTmFtZWQgdHVwbGUgcmVwcmVzZW50YXRpb24KLSAgICAnRGVjaW1hbFR1cGxlJywKLQotICAgICMgQ29udGV4dHMKLSAgICAnRGVmYXVsdENvbnRleHQnLCAnQmFzaWNDb250ZXh0JywgJ0V4dGVuZGVkQ29udGV4dCcsCi0KLSAgICAjIEV4Y2VwdGlvbnMKLSAgICAnRGVjaW1hbEV4Y2VwdGlvbicsICdDbGFtcGVkJywgJ0ludmFsaWRPcGVyYXRpb24nLCAnRGl2aXNpb25CeVplcm8nLAotICAgICdJbmV4YWN0JywgJ1JvdW5kZWQnLCAnU3Vibm9ybWFsJywgJ092ZXJmbG93JywgJ1VuZGVyZmxvdycsCi0gICAgJ0Zsb2F0T3BlcmF0aW9uJywKLQotICAgICMgRXhjZXB0aW9uYWwgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXIgSW52YWxpZE9wZXJhdGlvbgotICAgICdEaXZpc2lvbkltcG9zc2libGUnLCAnSW52YWxpZENvbnRleHQnLCAnQ29udmVyc2lvblN5bnRheCcsICdEaXZpc2lvblVuZGVmaW5lZCcsCi0KLSAgICAjIENvbnN0YW50cyBmb3IgdXNlIGluIHNldHRpbmcgdXAgY29udGV4dHMKLSAgICAnUk9VTkRfRE9XTicsICdST1VORF9IQUxGX1VQJywgJ1JPVU5EX0hBTEZfRVZFTicsICdST1VORF9DRUlMSU5HJywKLSAgICAnUk9VTkRfRkxPT1InLCAnUk9VTkRfVVAnLCAnUk9VTkRfSEFMRl9ET1dOJywgJ1JPVU5EXzA1VVAnLAotCi0gICAgIyBGdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBjb250ZXh0cwotICAgICdzZXRjb250ZXh0JywgJ2dldGNvbnRleHQnLCAnbG9jYWxjb250ZXh0JywKLQotICAgICMgTGltaXRzIGZvciB0aGUgQyB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5Ci0gICAgJ01BWF9QUkVDJywgICdNQVhfRU1BWCcsICdNSU5fRU1JTicsICdNSU5fRVRJTlknLAotCi0gICAgIyBDIHZlcnNpb246IGNvbXBpbGUgdGltZSBjaG9pY2UgdGhhdCBlbmFibGVzIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAotICAgICdIQVZFX1RIUkVBRFMnCi1dCi0KLV9fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsLwotX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjEiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCi0KLWltcG9ydCBtYXRoIGFzIF9tYXRoCi1pbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycwotaW1wb3J0IHN5cwogCiB0cnk6Ci0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQotICAgIERlY2ltYWxUdXBsZSA9IF9uYW1lZHR1cGxlKCdEZWNpbWFsVHVwbGUnLCAnc2lnbiBkaWdpdHMgZXhwb25lbnQnKQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIERlY2ltYWxUdXBsZSA9IGxhbWJkYSAqYXJnczogYXJncwotCi0jIFJvdW5kaW5nCi1ST1VORF9ET1dOID0gJ1JPVU5EX0RPV04nCi1ST1VORF9IQUxGX1VQID0gJ1JPVU5EX0hBTEZfVVAnCi1ST1VORF9IQUxGX0VWRU4gPSAnUk9VTkRfSEFMRl9FVkVOJwotUk9VTkRfQ0VJTElORyA9ICdST1VORF9DRUlMSU5HJwotUk9VTkRfRkxPT1IgPSAnUk9VTkRfRkxPT1InCi1ST1VORF9VUCA9ICdST1VORF9VUCcKLVJPVU5EX0hBTEZfRE9XTiA9ICdST1VORF9IQUxGX0RPV04nCi1ST1VORF8wNVVQID0gJ1JPVU5EXzA1VVAnCi0KLSMgQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDIHZlcnNpb24KLUhBVkVfVEhSRUFEUyA9IFRydWUKLWlmIHN5cy5tYXhzaXplID09IDIqKjYzLTE6Ci0gICAgTUFYX1BSRUMgPSA5OTk5OTk5OTk5OTk5OTk5OTkKLSAgICBNQVhfRU1BWCA9IDk5OTk5OTk5OTk5OTk5OTk5OQotICAgIE1JTl9FTUlOID0gLTk5OTk5OTk5OTk5OTk5OTk5OQotZWxzZToKLSAgICBNQVhfUFJFQyA9IDQyNTAwMDAwMAotICAgIE1BWF9FTUFYID0gNDI1MDAwMDAwCi0gICAgTUlOX0VNSU4gPSAtNDI1MDAwMDAwCi0KLU1JTl9FVElOWSA9IE1JTl9FTUlOIC0gKE1BWF9QUkVDLTEpCi0KLSMgRXJyb3JzCi0KLWNsYXNzIERlY2ltYWxFeGNlcHRpb24oQXJpdGhtZXRpY0Vycm9yKToKLSAgICAiIiJCYXNlIGV4Y2VwdGlvbiBjbGFzcy4KLQotICAgIFVzZWQgZXhjZXB0aW9ucyBkZXJpdmUgZnJvbSB0aGlzLgotICAgIElmIGFuIGV4Y2VwdGlvbiBkZXJpdmVzIGZyb20gYW5vdGhlciBleGNlcHRpb24gYmVzaWRlcyB0aGlzIChzdWNoIGFzCi0gICAgVW5kZXJmbG93IChJbmV4YWN0LCBSb3VuZGVkLCBTdWJub3JtYWwpIHRoYXQgaW5kaWNhdGVzIHRoYXQgaXQgaXMgb25seQotICAgIGNhbGxlZCBpZiB0aGUgb3RoZXJzIGFyZSBwcmVzZW50LiAgVGhpcyBpc24ndCBhY3R1YWxseSB1c2VkIGZvcgotICAgIGFueXRoaW5nLCB0aG91Z2guCi0KLSAgICBoYW5kbGUgIC0tIENhbGxlZCB3aGVuIGNvbnRleHQuX3JhaXNlX2Vycm9yIGlzIGNhbGxlZCBhbmQgdGhlCi0gICAgICAgICAgICAgICB0cmFwX2VuYWJsZXIgaXMgbm90IHNldC4gIEZpcnN0IGFyZ3VtZW50IGlzIHNlbGYsIHNlY29uZCBpcyB0aGUKLSAgICAgICAgICAgICAgIGNvbnRleHQuICBNb3JlIGFyZ3VtZW50cyBjYW4gYmUgZ2l2ZW4sIHRob3NlIGJlaW5nIGFmdGVyCi0gICAgICAgICAgICAgICB0aGUgZXhwbGFuYXRpb24gaW4gX3JhaXNlX2Vycm9yIChGb3IgZXhhbXBsZSwKLSAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE5ld0Vycm9yLCAnKC14KSEnLCBzZWxmLl9zaWduKSB3b3VsZAotICAgICAgICAgICAgICAgY2FsbCBOZXdFcnJvcigpLmhhbmRsZShjb250ZXh0LCBzZWxmLl9zaWduKS4pCi0KLSAgICBUbyBkZWZpbmUgYSBuZXcgZXhjZXB0aW9uLCBpdCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBoYXZlIGl0IGRlcml2ZQotICAgIGZyb20gRGVjaW1hbEV4Y2VwdGlvbi4KLSAgICAiIiIKLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcGFzcwotCi0KLWNsYXNzIENsYW1wZWQoRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhwb25lbnQgb2YgYSAwIGNoYW5nZWQgdG8gZml0IGJvdW5kcy4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGNsYW1wZWQgaWYgdGhlIGV4cG9uZW50IG9mIGEgcmVzdWx0IGhhcyBiZWVuCi0gICAgYWx0ZXJlZCBpbiBvcmRlciB0byBmaXQgdGhlIGNvbnN0cmFpbnRzIG9mIGEgc3BlY2lmaWMgY29uY3JldGUKLSAgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgbWF5IG9jY3VyIHdoZW4gdGhlIGV4cG9uZW50IG9mIGEgemVybyByZXN1bHQgd291bGQKLSAgICBiZSBvdXRzaWRlIHRoZSBib3VuZHMgb2YgYSByZXByZXNlbnRhdGlvbiwgb3Igd2hlbiBhIGxhcmdlIG5vcm1hbAotICAgIG51bWJlciB3b3VsZCBoYXZlIGFuIGVuY29kZWQgZXhwb25lbnQgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQuICBJbgotICAgIHRoaXMgbGF0dGVyIGNhc2UsIHRoZSBleHBvbmVudCBpcyByZWR1Y2VkIHRvIGZpdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICBudW1iZXIgb2YgemVybyBkaWdpdHMgYXJlIGFwcGVuZGVkIHRvIHRoZSBjb2VmZmljaWVudCAoImZvbGQtZG93biIpLgotICAgICIiIgotCi1jbGFzcyBJbnZhbGlkT3BlcmF0aW9uKERlY2ltYWxFeGNlcHRpb24pOgotICAgICIiIkFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBwZXJmb3JtZWQuCi0KLSAgICBWYXJpb3VzIGJhZCB0aGluZ3MgY2F1c2UgdGhpczoKLQotICAgIFNvbWV0aGluZyBjcmVhdGVzIGEgc2lnbmFsaW5nIE5hTgotICAgIC1JTkYgKyBJTkYKLSAgICAwICogKCstKUlORgotICAgICgrLSlJTkYgLyAoKy0pSU5GCi0gICAgeCAlIDAKLSAgICAoKy0pSU5GICUgeAotICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKLSAgICBzcXJ0KC14KSAsIHggPiAwCi0gICAgMCAqKiAwCi0gICAgeCAqKiAobm9uLWludGVnZXIpCi0gICAgeCAqKiAoKy0pSU5GCi0gICAgQW4gb3BlcmFuZCBpcyBpbnZhbGlkCi0KLSAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gYWZ0ZXIgdGhlc2UgaXMgYSBxdWlldCBwb3NpdGl2ZSBOYU4sCi0gICAgZXhjZXB0IHdoZW4gdGhlIGNhdXNlIGlzIGEgc2lnbmFsaW5nIE5hTiwgaW4gd2hpY2ggY2FzZSB0aGUgcmVzdWx0IGlzCi0gICAgYWxzbyBhIHF1aWV0IE5hTiwgYnV0IHdpdGggdGhlIG9yaWdpbmFsIHNpZ24sIGFuZCBhbiBvcHRpb25hbAotICAgIGRpYWdub3N0aWMgaW5mb3JtYXRpb24uCi0gICAgIiIiCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6Ci0gICAgICAgIGlmIGFyZ3M6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGFyZ3NbMF0uX3NpZ24sIGFyZ3NbMF0uX2ludCwgJ24nLCBUcnVlKQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4X25hbihjb250ZXh0KQotICAgICAgICByZXR1cm4gX05hTgotCi1jbGFzcyBDb252ZXJzaW9uU3ludGF4KEludmFsaWRPcGVyYXRpb24pOgotICAgICIiIlRyeWluZyB0byBjb252ZXJ0IGJhZGx5IGZvcm1lZCBzdHJpbmcuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBzdHJpbmcgaXMgYmVpbmcKLSAgICBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgYW5kIGl0IGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIG51bWVyaWMgc3RyaW5nCi0gICAgc3ludGF4LiAgVGhlIHJlc3VsdCBpcyBbMCxxTmFOXS4KLSAgICAiIiIKLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgRGl2aXNpb25CeVplcm8oRGVjaW1hbEV4Y2VwdGlvbiwgWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICIiIkRpdmlzaW9uIGJ5IDAuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBkaXZpc2lvbi1ieS16ZXJvIGlmIGRpdmlzaW9uIG9mIGEgZmluaXRlIG51bWJlcgotICAgIGJ5IHplcm8gd2FzIGF0dGVtcHRlZCAoZHVyaW5nIGEgZGl2aWRlLWludGVnZXIgb3IgZGl2aWRlIG9wZXJhdGlvbiwgb3IgYQotICAgIHBvd2VyIG9wZXJhdGlvbiB3aXRoIG5lZ2F0aXZlIHJpZ2h0LWhhbmQgb3BlcmFuZCksIGFuZCB0aGUgZGl2aWRlbmQgd2FzCi0gICAgbm90IHplcm8uCi0KLSAgICBUaGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24gaXMgW3NpZ24saW5mXSwgd2hlcmUgc2lnbiBpcyB0aGUgZXhjbHVzaXZlCi0gICAgb3Igb2YgdGhlIHNpZ25zIG9mIHRoZSBvcGVyYW5kcyBmb3IgZGl2aWRlLCBvciBpcyAxIGZvciBhbiBvZGQgcG93ZXIgb2YKLSAgICAtMCwgZm9yIHBvd2VyLgotICAgICIiIgotCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCBzaWduLCAqYXJncyk6Ci0gICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbc2lnbl0KLQotY2xhc3MgRGl2aXNpb25JbXBvc3NpYmxlKEludmFsaWRPcGVyYXRpb24pOgotICAgICIiIkNhbm5vdCBwZXJmb3JtIHRoZSBkaXZpc2lvbiBhZGVxdWF0ZWx5LgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgdGhlIGludGVnZXIgcmVzdWx0IG9mIGEKLSAgICBkaXZpZGUtaW50ZWdlciBvciByZW1haW5kZXIgb3BlcmF0aW9uIGhhZCB0b28gbWFueSBkaWdpdHMgKHdvdWxkIGJlCi0gICAgbG9uZ2VyIHRoYW4gcHJlY2lzaW9uKS4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgRGl2aXNpb25VbmRlZmluZWQoSW52YWxpZE9wZXJhdGlvbiwgWmVyb0RpdmlzaW9uRXJyb3IpOgotICAgICIiIlVuZGVmaW5lZCByZXN1bHQgb2YgZGl2aXNpb24uCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBkaXZpc2lvbiBieSB6ZXJvIHdhcwotICAgIGF0dGVtcHRlZCAoZHVyaW5nIGEgZGl2aWRlLWludGVnZXIsIGRpdmlkZSwgb3IgcmVtYWluZGVyIG9wZXJhdGlvbiksIGFuZAotICAgIHRoZSBkaXZpZGVuZCBpcyBhbHNvIHplcm8uICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgotICAgICIiIgotCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCAqYXJncyk6Ci0gICAgICAgIHJldHVybiBfTmFOCi0KLWNsYXNzIEluZXhhY3QoRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiSGFkIHRvIHJvdW5kLCBsb3NpbmcgaW5mb3JtYXRpb24uCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbmV4YWN0IHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCi0gICAgbm90IGV4YWN0ICh0aGF0IGlzLCBpdCBuZWVkZWQgdG8gYmUgcm91bmRlZCBhbmQgYW55IGRpc2NhcmRlZCBkaWdpdHMKLSAgICB3ZXJlIG5vbi16ZXJvKSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKLSAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KLQotICAgIFRoZSBpbmV4YWN0IHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgotICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgd2FzIGluZXhhY3QuCi0gICAgIiIiCi0KLWNsYXNzIEludmFsaWRDb250ZXh0KEludmFsaWRPcGVyYXRpb24pOgotICAgICIiIkludmFsaWQgY29udGV4dC4gIFVua25vd24gcm91bmRpbmcsIGZvciBleGFtcGxlLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgYW4gaW52YWxpZCBjb250ZXh0IHdhcwotICAgIGRldGVjdGVkIGR1cmluZyBhbiBvcGVyYXRpb24uICBUaGlzIGNhbiBvY2N1ciBpZiBjb250ZXh0cyBhcmUgbm90IGNoZWNrZWQKLSAgICBvbiBjcmVhdGlvbiBhbmQgZWl0aGVyIHRoZSBwcmVjaXNpb24gZXhjZWVkcyB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKLSAgICB1bmRlcmx5aW5nIGNvbmNyZXRlIHJlcHJlc2VudGF0aW9uIG9yIGFuIHVua25vd24gb3IgdW5zdXBwb3J0ZWQgcm91bmRpbmcKLSAgICB3YXMgc3BlY2lmaWVkLiAgVGhlc2UgYXNwZWN0cyBvZiB0aGUgY29udGV4dCBuZWVkIG9ubHkgYmUgY2hlY2tlZCB3aGVuCi0gICAgdGhlIHZhbHVlcyBhcmUgcmVxdWlyZWQgdG8gYmUgdXNlZC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCi0gICAgIiIiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYsIGNvbnRleHQsICphcmdzKToKLSAgICAgICAgcmV0dXJuIF9OYU4KLQotY2xhc3MgUm91bmRlZChEZWNpbWFsRXhjZXB0aW9uKToKLSAgICAiIiJOdW1iZXIgZ290IHJvdW5kZWQgKG5vdCAgbmVjZXNzYXJpbHkgY2hhbmdlZCBkdXJpbmcgcm91bmRpbmcpLgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgcm91bmRlZCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiBpcwotICAgIHJvdW5kZWQgKHRoYXQgaXMsIHNvbWUgemVybyBvciBub24temVybyBkaWdpdHMgd2VyZSBkaXNjYXJkZWQgZnJvbSB0aGUKLSAgICBjb2VmZmljaWVudCksIG9yIGlmIGFuIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBjb25kaXRpb24gb2NjdXJzLiAgVGhlCi0gICAgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCi0KLSAgICBUaGUgcm91bmRlZCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KLSAgICBvcGVyYXRpb24gKG9yIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMpIGNhdXNlZCBhIGxvc3Mgb2YgcHJlY2lzaW9uLgotICAgICIiIgotCi1jbGFzcyBTdWJub3JtYWwoRGVjaW1hbEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhwb25lbnQgPCBFbWluIGJlZm9yZSByb3VuZGluZy4KLQotICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHN1Ym5vcm1hbCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGEgY29udmVyc2lvbiBvcgotICAgIG9wZXJhdGlvbiBpcyBzdWJub3JtYWwgKHRoYXQgaXMsIGl0cyBhZGp1c3RlZCBleHBvbmVudCBpcyBsZXNzIHRoYW4KLSAgICBFbWluLCBiZWZvcmUgYW55IHJvdW5kaW5nKS4gIFRoZSByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KLQotICAgIFRoZSBzdWJub3JtYWwgc2lnbmFsIG1heSBiZSB0ZXN0ZWQgKG9yIHRyYXBwZWQpIHRvIGRldGVybWluZSBpZiBhIGdpdmVuCi0gICAgb3Igb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB5aWVsZGVkIGEgc3Vibm9ybWFsIHJlc3VsdC4KLSAgICAiIiIKLQotY2xhc3MgT3ZlcmZsb3coSW5leGFjdCwgUm91bmRlZCk6Ci0gICAgIiIiTnVtZXJpY2FsIG92ZXJmbG93LgotCi0gICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgb3ZlcmZsb3cgaWYgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIGEgcmVzdWx0Ci0gICAgKGZyb20gYSBjb252ZXJzaW9uIG9yIGZyb20gYW4gb3BlcmF0aW9uIHRoYXQgaXMgbm90IGFuIGF0dGVtcHQgdG8gZGl2aWRlCi0gICAgYnkgemVybyksIGFmdGVyIHJvdW5kaW5nLCB3b3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIGxhcmdlc3QgdmFsdWUgdGhhdAotICAgIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlIEVtYXgpLgotCi0gICAgVGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSByb3VuZGluZyBtb2RlOgotCi0gICAgRm9yIHJvdW5kLWhhbGYtdXAgYW5kIHJvdW5kLWhhbGYtZXZlbiAoYW5kIGZvciByb3VuZC1oYWxmLWRvd24gYW5kCi0gICAgcm91bmQtdXAsIGlmIGltcGxlbWVudGVkKSwgdGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGlzIFtzaWduLGluZl0sCi0gICAgd2hlcmUgc2lnbiBpcyB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvciByb3VuZC1kb3duLCB0aGUKLSAgICByZXN1bHQgaXMgdGhlIGxhcmdlc3QgZmluaXRlIG51bWJlciB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBpbiB0aGUKLSAgICBjdXJyZW50IHByZWNpc2lvbiwgd2l0aCB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvcgotICAgIHJvdW5kLWNlaWxpbmcsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YKLSAgICB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBpcyAxLCBvciBpcyBbMCxpbmZdIG90aGVyd2lzZS4gIEZvciByb3VuZC1mbG9vciwKLSAgICB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIGZvciByb3VuZC1kb3duIGlmIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUKLSAgICByZXN1bHQgaXMgMCwgb3IgaXMgWzEsaW5mXSBvdGhlcndpc2UuICBJbiBhbGwgY2FzZXMsIEluZXhhY3QgYW5kIFJvdW5kZWQKLSAgICB3aWxsIGFsc28gYmUgcmFpc2VkLgotICAgICIiIgotCi0gICAgZGVmIGhhbmRsZShzZWxmLCBjb250ZXh0LCBzaWduLCAqYXJncyk6Ci0gICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgaW4gKFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9VTkRfSEFMRl9ET1dOLCBST1VORF9VUCk6Ci0gICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0gICAgICAgIGlmIHNpZ24gPT0gMDoKLSAgICAgICAgICAgIGlmIGNvbnRleHQucm91bmRpbmcgPT0gUk9VTkRfQ0VJTElORzoKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnOScqY29udGV4dC5wcmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heC1jb250ZXh0LnByZWMrMSkKLSAgICAgICAgaWYgc2lnbiA9PSAxOgotICAgICAgICAgICAgaWYgY29udGV4dC5yb3VuZGluZyA9PSBST1VORF9GTE9PUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnOScqY29udGV4dC5wcmVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtYXgtY29udGV4dC5wcmVjKzEpCi0KLQotY2xhc3MgVW5kZXJmbG93KEluZXhhY3QsIFJvdW5kZWQsIFN1Ym5vcm1hbCk6Ci0gICAgIiIiTnVtZXJpY2FsIHVuZGVyZmxvdyB3aXRoIHJlc3VsdCByb3VuZGVkIHRvIDAuCi0KLSAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyB1bmRlcmZsb3cgaWYgYSByZXN1bHQgaXMgaW5leGFjdCBhbmQgdGhlCi0gICAgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIHJlc3VsdCB3b3VsZCBiZSBzbWFsbGVyIChtb3JlIG5lZ2F0aXZlKSB0aGFuCi0gICAgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uICh0aGUgdmFsdWUKLSAgICBFbWluKS4gIFRoYXQgaXMsIHRoZSByZXN1bHQgaXMgYm90aCBpbmV4YWN0IGFuZCBzdWJub3JtYWwuCi0KLSAgICBUaGUgcmVzdWx0IGFmdGVyIGFuIHVuZGVyZmxvdyB3aWxsIGJlIGEgc3Vibm9ybWFsIG51bWJlciByb3VuZGVkLCBpZgotICAgIG5lY2Vzc2FyeSwgc28gdGhhdCBpdHMgZXhwb25lbnQgaXMgbm90IGxlc3MgdGhhbiBFdGlueS4gIFRoaXMgbWF5IHJlc3VsdAotICAgIGluIDAgd2l0aCB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCBhbmQgYW4gZXhwb25lbnQgb2YgRXRpbnkuCi0KLSAgICBJbiBhbGwgY2FzZXMsIEluZXhhY3QsIFJvdW5kZWQsIGFuZCBTdWJub3JtYWwgd2lsbCBhbHNvIGJlIHJhaXNlZC4KLSAgICAiIiIKLQotY2xhc3MgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgVHlwZUVycm9yKToKLSAgICAiIiJFbmFibGUgc3RyaWN0ZXIgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscy4KLQotICAgIElmIHRoZSBzaWduYWwgaXMgbm90IHRyYXBwZWQgKGRlZmF1bHQpLCBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBpcwotICAgIHBlcm1pdHRlZCBpbiB0aGUgRGVjaW1hbCgpIGNvbnN0cnVjdG9yLCBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKCkgYW5kCi0gICAgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLiBCb3RoIGNvbnZlcnNpb24gYW5kIGNvbXBhcmlzb25zIGFyZSBleGFjdC4KLSAgICBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkIG9wZXJhdGlvbiBpcyBzaWxlbnRseSByZWNvcmRlZCBieSBzZXR0aW5nCi0gICAgRmxvYXRPcGVyYXRpb24gaW4gdGhlIGNvbnRleHQgZmxhZ3MuICBFeHBsaWNpdCBjb252ZXJzaW9ucyB3aXRoCi0gICAgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgb3IgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCkgZG8gbm90Ci0gICAgc2V0IHRoZSBmbGFnLgotCi0gICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAotICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIEZsb2F0T3BlcmF0aW9uLgotICAgICIiIgotCi0jIExpc3Qgb2YgcHVibGljIHRyYXBzIGFuZCBmbGFncwotX3NpZ25hbHMgPSBbQ2xhbXBlZCwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkLAotICAgICAgICAgICAgVW5kZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBTdWJub3JtYWwsIEZsb2F0T3BlcmF0aW9uXQotCi0jIE1hcCBjb25kaXRpb25zIChwZXIgdGhlIHNwZWMpIHRvIHNpZ25hbHMKLV9jb25kaXRpb25fbWFwID0ge0NvbnZlcnNpb25TeW50YXg6SW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgIERpdmlzaW9uSW1wb3NzaWJsZTpJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgRGl2aXNpb25VbmRlZmluZWQ6SW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgIEludmFsaWRDb250ZXh0OkludmFsaWRPcGVyYXRpb259Ci0KLSMgVmFsaWQgcm91bmRpbmcgbW9kZXMKLV9yb3VuZGluZ19tb2RlcyA9IChST1VORF9ET1dOLCBST1VORF9IQUxGX1VQLCBST1VORF9IQUxGX0VWRU4sIFJPVU5EX0NFSUxJTkcsCi0gICAgICAgICAgICAgICAgICAgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9IQUxGX0RPV04sIFJPVU5EXzA1VVApCi0KLSMjIyMjIENvbnRleHQgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgVGhlIGdldGNvbnRleHQoKSBhbmQgc2V0Y29udGV4dCgpIGZ1bmN0aW9uIG1hbmFnZSBhY2Nlc3MgdG8gYSB0aHJlYWQtbG9jYWwKLSMgY3VycmVudCBjb250ZXh0LiAgUHkyLjQgb2ZmZXJzIGRpcmVjdCBzdXBwb3J0IGZvciB0aHJlYWQgbG9jYWxzLiAgSWYgdGhhdAotIyBpcyBub3QgYXZhaWxhYmxlLCB1c2UgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkgd2hpY2ggaXMgc2xvd2VyIGJ1dCB3aWxsCi0jIHdvcmsgZm9yIG9sZGVyIFB5dGhvbnMuICBJZiB0aHJlYWRzIGFyZSBub3QgcGFydCBvZiB0aGUgYnVpbGQsIGNyZWF0ZSBhCi0jIG1vY2sgdGhyZWFkaW5nIG9iamVjdCB3aXRoIHRocmVhZGluZy5sb2NhbCgpIHJldHVybmluZyB0aGUgbW9kdWxlIG5hbWVzcGFjZS4KLQotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWRzOyBjcmVhdGUgYSBtb2NrIG9iamVjdCBpbnN0ZWFkCi0gICAgY2xhc3MgTW9ja1RocmVhZGluZyhvYmplY3QpOgotICAgICAgICBkZWYgbG9jYWwoc2VsZiwgc3lzPXN5cyk6Ci0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbX19uYW1lX19dCi0gICAgdGhyZWFkaW5nID0gTW9ja1RocmVhZGluZygpCi0gICAgZGVsIE1vY2tUaHJlYWRpbmcKLQotdHJ5OgotICAgIHRocmVhZGluZy5sb2NhbAotCi1leGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0KLSAgICAjIFRvIGZpeCByZWxvYWRpbmcsIGZvcmNlIGl0IHRvIGNyZWF0ZSBhIG5ldyBjb250ZXh0Ci0gICAgIyBPbGQgY29udGV4dHMgaGF2ZSBkaWZmZXJlbnQgZXhjZXB0aW9ucyBpbiB0aGVpciBkaWN0cywgbWFraW5nIHByb2JsZW1zLgotICAgIGlmIGhhc2F0dHIodGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCksICdfX2RlY2ltYWxfY29udGV4dF9fJyk6Ci0gICAgICAgIGRlbCB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fCi0KLSAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0KToKLSAgICAgICAgIiIiU2V0IHRoaXMgdGhyZWFkJ3MgY29udGV4dCB0byBjb250ZXh0LiIiIgotICAgICAgICBpZiBjb250ZXh0IGluIChEZWZhdWx0Q29udGV4dCwgQmFzaWNDb250ZXh0LCBFeHRlbmRlZENvbnRleHQpOgotICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQuY29weSgpCi0gICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKLQotICAgIGRlZiBnZXRjb250ZXh0KCk6Ci0gICAgICAgICIiIlJldHVybnMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgotCi0gICAgICAgIElmIHRoaXMgdGhyZWFkIGRvZXMgbm90IHlldCBoYXZlIGEgY29udGV4dCwgcmV0dXJucwotICAgICAgICBhIG5ldyBjb250ZXh0IGFuZCBzZXRzIHRoaXMgdGhyZWFkJ3MgY29udGV4dC4KLSAgICAgICAgTmV3IGNvbnRleHRzIGFyZSBjb3BpZXMgb2YgRGVmYXVsdENvbnRleHQuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkuX19kZWNpbWFsX2NvbnRleHRfXwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCi0gICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5fX2RlY2ltYWxfY29udGV4dF9fID0gY29udGV4dAotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLQotZWxzZToKLQotICAgIGxvY2FsID0gdGhyZWFkaW5nLmxvY2FsKCkKLSAgICBpZiBoYXNhdHRyKGxvY2FsLCAnX19kZWNpbWFsX2NvbnRleHRfXycpOgotICAgICAgICBkZWwgbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXwotCi0gICAgZGVmIGdldGNvbnRleHQoX2xvY2FsPWxvY2FsKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGlzIHRocmVhZCdzIGNvbnRleHQuCi0KLSAgICAgICAgSWYgdGhpcyB0aHJlYWQgZG9lcyBub3QgeWV0IGhhdmUgYSBjb250ZXh0LCByZXR1cm5zCi0gICAgICAgIGEgbmV3IGNvbnRleHQgYW5kIHNldHMgdGhpcyB0aHJlYWQncyBjb250ZXh0LgotICAgICAgICBOZXcgY29udGV4dHMgYXJlIGNvcGllcyBvZiBEZWZhdWx0Q29udGV4dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBjb250ZXh0ID0gQ29udGV4dCgpCi0gICAgICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0KLSAgICBkZWYgc2V0Y29udGV4dChjb250ZXh0LCBfbG9jYWw9bG9jYWwpOgotICAgICAgICAiIiJTZXQgdGhpcyB0aHJlYWQncyBjb250ZXh0IHRvIGNvbnRleHQuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaW4gKERlZmF1bHRDb250ZXh0LCBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKLSAgICAgICAgICAgIGNvbnRleHQuY2xlYXJfZmxhZ3MoKQotICAgICAgICBfbG9jYWwuX19kZWNpbWFsX2NvbnRleHRfXyA9IGNvbnRleHQKLQotICAgIGRlbCB0aHJlYWRpbmcsIGxvY2FsICAgICAgICAjIERvbid0IGNvbnRhbWluYXRlIHRoZSBuYW1lc3BhY2UKLQotZGVmIGxvY2FsY29udGV4dChjdHg9Tm9uZSk6Ci0gICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIGZvciBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQKLQotICAgIFVzZXMgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBzcGVjaWZpZWQKLSAgICBUaGUgcmV0dXJuZWQgY29udGV4dCBtYW5hZ2VyIGNyZWF0ZXMgYSBsb2NhbCBkZWNpbWFsIGNvbnRleHQKLSAgICBpbiBhIHdpdGggc3RhdGVtZW50OgotICAgICAgICBkZWYgc2luKHgpOgotICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgY3R4OgotICAgICAgICAgICAgICAgICBjdHgucHJlYyArPSAyCi0gICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCi0gICAgICAgICAgICAgICAgICMgdXNlcyBhIHByZWNpc2lvbiAyIGdyZWF0ZXIgdGhhbiBub3JtYWwKLSAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIHByZWNpc2lvbgotCi0gICAgICAgICBkZWYgc2luKHgpOgotICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KEV4dGVuZGVkQ29udGV4dCk6Ci0gICAgICAgICAgICAgICAgICMgUmVzdCBvZiBzaW4gY2FsY3VsYXRpb24gYWxnb3JpdGhtCi0gICAgICAgICAgICAgICAgICMgdXNlcyB0aGUgRXh0ZW5kZWQgQ29udGV4dCBmcm9tIHRoZQotICAgICAgICAgICAgICAgICAjIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24KLSAgICAgICAgICAgICByZXR1cm4gK3MgICMgQ29udmVydCByZXN1bHQgdG8gbm9ybWFsIGNvbnRleHQKLQotICAgID4+PiBzZXRjb250ZXh0KERlZmF1bHRDb250ZXh0KQotICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKLSAgICAyOAotICAgID4+PiB3aXRoIGxvY2FsY29udGV4dCgpOgotICAgIC4uLiAgICAgY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgLi4uICAgICBjdHgucHJlYyArPSAyCi0gICAgLi4uICAgICBwcmludChjdHgucHJlYykKLSAgICAuLi4KLSAgICAzMAotICAgID4+PiB3aXRoIGxvY2FsY29udGV4dChFeHRlbmRlZENvbnRleHQpOgotICAgIC4uLiAgICAgcHJpbnQoZ2V0Y29udGV4dCgpLnByZWMpCi0gICAgLi4uCi0gICAgOQotICAgID4+PiBwcmludChnZXRjb250ZXh0KCkucHJlYykKLSAgICAyOAotICAgICIiIgotICAgIGlmIGN0eCBpcyBOb25lOiBjdHggPSBnZXRjb250ZXh0KCkKLSAgICByZXR1cm4gX0NvbnRleHRNYW5hZ2VyKGN0eCkKLQotCi0jIyMjIyBEZWNpbWFsIGNsYXNzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBEbyBub3Qgc3ViY2xhc3MgRGVjaW1hbCBmcm9tIG51bWJlcnMuUmVhbCBhbmQgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIHN1Y2gKLSMgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdCBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4gIFNlZSB0aGUgbm90ZXMgaW4KLSMgbnVtYmVycy5weSBmb3IgbW9yZSBkZXRhaWwuCi0KLWNsYXNzIERlY2ltYWwob2JqZWN0KToKLSAgICAiIiJGbG9hdGluZyBwb2ludCBjbGFzcyBmb3IgZGVjaW1hbCBhcml0aG1ldGljLiIiIgotCi0gICAgX19zbG90c19fID0gKCdfZXhwJywnX2ludCcsJ19zaWduJywgJ19pc19zcGVjaWFsJykKLSAgICAjIEdlbmVyYWxseSwgdGhlIHZhbHVlIG9mIHRoZSBEZWNpbWFsIGluc3RhbmNlIGlzIGdpdmVuIGJ5Ci0gICAgIyAgKC0xKSoqX3NpZ24gKiBfaW50ICogMTAqKl9leHAKLSAgICAjIFNwZWNpYWwgdmFsdWVzIGFyZSBzaWduaWZpZWQgYnkgX2lzX3NwZWNpYWwgPT0gVHJ1ZQotCi0gICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXwotICAgIGRlZiBfX25ld19fKGNscywgdmFsdWU9IjAiLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIHBvaW50IGluc3RhbmNlLgotCi0gICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykgICAgICAgICAgICAgICMgc3RyaW5nIGlucHV0Ci0gICAgICAgIERlY2ltYWwoJzMuMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbCgoMCwgKDMsIDEsIDQpLCAtMikpICAjIHR1cGxlIChzaWduLCBkaWdpdF90dXBsZSwgZXhwb25lbnQpCi0gICAgICAgIERlY2ltYWwoJzMuMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbCgzMTQpICAgICAgICAgICAgICAgICAjIGludAotICAgICAgICBEZWNpbWFsKCczMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbChEZWNpbWFsKDMxNCkpICAgICAgICAjIGFub3RoZXIgZGVjaW1hbCBpbnN0YW5jZQotICAgICAgICBEZWNpbWFsKCczMTQnKQotICAgICAgICA+Pj4gRGVjaW1hbCgnICAzLjE0ICBcXG4nKSAgICAgICAgIyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9rYXkKLSAgICAgICAgRGVjaW1hbCgnMy4xNCcpCi0gICAgICAgICIiIgotCi0gICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb2VmZmljaWVudCwgc2VsZi5faW50LCBpcyBhY3R1YWxseSBzdG9yZWQgYXMKLSAgICAgICAgIyBhIHN0cmluZyByYXRoZXIgdGhhbiBhcyBhIHR1cGxlIG9mIGRpZ2l0cy4gIFRoaXMgc3BlZWRzIHVwCi0gICAgICAgICMgdGhlICJkaWdpdHMgdG8gaW50ZWdlciIgYW5kICJpbnRlZ2VyIHRvIGRpZ2l0cyIgY29udmVyc2lvbnMKLSAgICAgICAgIyB0aGF0IGFyZSB1c2VkIGluIGFsbW9zdCBldmVyeSBhcml0aG1ldGljIG9wZXJhdGlvbiBvbgotICAgICAgICAjIERlY2ltYWxzLiAgVGhpcyBpcyBhbiBpbnRlcm5hbCBkZXRhaWw6IHRoZSBhc190dXBsZSBmdW5jdGlvbgotICAgICAgICAjIGFuZCB0aGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBzdGlsbCBkZWFsIHdpdGggdHVwbGVzIG9mCi0gICAgICAgICMgZGlnaXRzLgotCi0gICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCi0KLSAgICAgICAgIyBGcm9tIGEgc3RyaW5nCi0gICAgICAgICMgUkVzIGluc2lzdCBvbiByZWFsIHN0cmluZ3MsIHNvIHdlIGNhbiB0b28uCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpKQotICAgICAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBsaXRlcmFsIGZvciBEZWNpbWFsOiAlciIgJSB2YWx1ZSkKLQotICAgICAgICAgICAgaWYgbS5ncm91cCgnc2lnbicpID09ICItIjoKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zaWduID0gMAotICAgICAgICAgICAgaW50cGFydCA9IG0uZ3JvdXAoJ2ludCcpCi0gICAgICAgICAgICBpZiBpbnRwYXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcgotICAgICAgICAgICAgICAgIGZyYWNwYXJ0ID0gbS5ncm91cCgnZnJhYycpIG9yICcnCi0gICAgICAgICAgICAgICAgZXhwID0gaW50KG0uZ3JvdXAoJ2V4cCcpIG9yICcwJykKLSAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSBzdHIoaW50KGludHBhcnQrZnJhY3BhcnQpKQotICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IGV4cCAtIGxlbihmcmFjcGFydCkKLSAgICAgICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlhZyA9IG0uZ3JvdXAoJ2RpYWcnKQotICAgICAgICAgICAgICAgIGlmIGRpYWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICMgTmFOCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihpbnQoZGlhZyBvciAnMCcpKS5sc3RyaXAoJzAnKQotICAgICAgICAgICAgICAgICAgICBpZiBtLmdyb3VwKCdzaWduYWwnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9ICdOJwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ24nCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBpbmZpbml0eQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gJ0YnCi0gICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgIyBGcm9tIGFuIGludGVnZXIKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKLSAgICAgICAgICAgIGlmIHZhbHVlID49IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2lnbiA9IDEKLSAgICAgICAgICAgIHNlbGYuX2V4cCA9IDAKLSAgICAgICAgICAgIHNlbGYuX2ludCA9IHN0cihhYnModmFsdWUpKQotICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IEZhbHNlCi0gICAgICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgICAgICMgRnJvbSBhbm90aGVyIGRlY2ltYWwKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgRGVjaW1hbCk6Ci0gICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAotICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCi0gICAgICAgICAgICBzZWxmLl9pbnQgID0gdmFsdWUuX2ludAotICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCAgPSB2YWx1ZS5faXNfc3BlY2lhbAotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAjIEZyb20gYW4gaW50ZXJuYWwgd29ya2luZyB2YWx1ZQotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBfV29ya1JlcCk6Ci0gICAgICAgICAgICBzZWxmLl9zaWduID0gdmFsdWUuc2lnbgotICAgICAgICAgICAgc2VsZi5faW50ID0gc3RyKHZhbHVlLmludCkKLSAgICAgICAgICAgIHNlbGYuX2V4cCA9IGludCh2YWx1ZS5leHApCi0gICAgICAgICAgICBzZWxmLl9pc19zcGVjaWFsID0gRmFsc2UKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgIyB0dXBsZS9saXN0IGNvbnZlcnNpb24gKHBvc3NpYmx5IGZyb20gYXNfdHVwbGUoKSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGxpc3QsdHVwbGUpKToKLSAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgIT0gMzoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIHR1cGxlIHNpemUgaW4gY3JlYXRpb24gb2YgRGVjaW1hbCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSBsaXN0IG9yIHR1cGxlLiAgVGhlIGxpc3Qgb3IgdHVwbGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBoYXZlIGV4YWN0bHkgdGhyZWUgZWxlbWVudHMuJykKLSAgICAgICAgICAgICMgcHJvY2VzcyBzaWduLiAgVGhlIGlzaW5zdGFuY2UgdGVzdCByZWplY3RzIGZsb2F0cwotICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKHZhbHVlWzBdLCBpbnQpIGFuZCB2YWx1ZVswXSBpbiAoMCwxKSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBzaWduLiAgVGhlIGZpcnN0IHZhbHVlIGluIHRoZSB0dXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIGJlIGFuIGludGVnZXI7IGVpdGhlciAwIGZvciBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3NpdGl2ZSBudW1iZXIgb3IgMSBmb3IgYSBuZWdhdGl2ZSBudW1iZXIuIikKLSAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZVswXQotICAgICAgICAgICAgaWYgdmFsdWVbMl0gPT0gJ0YnOgotICAgICAgICAgICAgICAgICMgaW5maW5pdHk6IHZhbHVlWzFdIGlzIGlnbm9yZWQKLSAgICAgICAgICAgICAgICBzZWxmLl9pbnQgPSAnMCcKLSAgICAgICAgICAgICAgICBzZWxmLl9leHAgPSB2YWx1ZVsyXQotICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgcHJvY2VzcyBhbmQgdmFsaWRhdGUgdGhlIGRpZ2l0cyBpbiB2YWx1ZVsxXQotICAgICAgICAgICAgICAgIGRpZ2l0cyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIGRpZ2l0IGluIHZhbHVlWzFdOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRpZ2l0LCBpbnQpIGFuZCAwIDw9IGRpZ2l0IDw9IDk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgbGVhZGluZyB6ZXJvcwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGlnaXRzIG9yIGRpZ2l0ICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmFwcGVuZChkaWdpdCkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBzZWNvbmQgdmFsdWUgaW4gdGhlIHR1cGxlIG11c3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgY29tcG9zZWQgb2YgaW50ZWdlcnMgaW4gdGhlIHJhbmdlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAgdGhyb3VnaCA5LiIpCi0gICAgICAgICAgICAgICAgaWYgdmFsdWVbMl0gaW4gKCduJywgJ04nKToKLSAgICAgICAgICAgICAgICAgICAgIyBOYU46IGRpZ2l0cyBmb3JtIHRoZSBkaWFnbm9zdGljCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhwID0gdmFsdWVbMl0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faXNfc3BlY2lhbCA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWVbMl0sIGludCk6Ci0gICAgICAgICAgICAgICAgICAgICMgZmluaXRlIG51bWJlcjogZGlnaXRzIGdpdmUgdGhlIGNvZWZmaWNpZW50Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludCA9ICcnLmpvaW4obWFwKHN0ciwgZGlnaXRzIG9yIFswXSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCA9IHZhbHVlWzJdCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSB0aGlyZCB2YWx1ZSBpbiB0aGUgdHVwbGUgbXVzdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGFuIGludGVnZXIsIG9yIG9uZSBvZiB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzICdGJywgJ24nLCAnTicuIikKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZmxvYXQpOgotICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgIgotICAgICAgICAgICAgICAgICJlbmFibGVkIikKLSAgICAgICAgICAgIHZhbHVlID0gRGVjaW1hbC5mcm9tX2Zsb2F0KHZhbHVlKQotICAgICAgICAgICAgc2VsZi5fZXhwICA9IHZhbHVlLl9leHAKLSAgICAgICAgICAgIHNlbGYuX3NpZ24gPSB2YWx1ZS5fc2lnbgotICAgICAgICAgICAgc2VsZi5faW50ICA9IHZhbHVlLl9pbnQKLSAgICAgICAgICAgIHNlbGYuX2lzX3NwZWNpYWwgID0gdmFsdWUuX2lzX3NwZWNpYWwKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCAlciB0byBEZWNpbWFsIiAlIHZhbHVlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fZmxvYXQoY2xzLCBmKToKLSAgICAgICAgIiIiQ29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LgotCi0gICAgICAgIE5vdGUgdGhhdCBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuCi0gICAgICAgIFNpbmNlIDAuMSBpcyBub3QgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIGJpbmFyeSBmbG9hdGluZyBwb2ludCwgdGhlCi0gICAgICAgIHZhbHVlIGlzIHN0b3JlZCBhcyB0aGUgbmVhcmVzdCByZXByZXNlbnRhYmxlIHZhbHVlIHdoaWNoIGlzCi0gICAgICAgIDB4MS45OTk5OTk5OTk5OTlhcC00LiAgVGhlIGV4YWN0IGVxdWl2YWxlbnQgb2YgdGhlIHZhbHVlIGluIGRlY2ltYWwKLSAgICAgICAgaXMgMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1LgotCi0gICAgICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQotICAgICAgICBEZWNpbWFsKCcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLSAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdCgtZmxvYXQoJ2luZicpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KC0wLjApCi0gICAgICAgIERlY2ltYWwoJy0wJykKLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBpbnQpOiAgICAgICAgICAgICAgICAjIGhhbmRsZSBpbnRlZ2VyIGlucHV0cwotICAgICAgICAgICAgcmV0dXJuIGNscyhmKQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IG11c3QgYmUgaW50IG9yIGZsb2F0LiIpCi0gICAgICAgIGlmIF9tYXRoLmlzaW5mKGYpIG9yIF9tYXRoLmlzbmFuKGYpOgotICAgICAgICAgICAgcmV0dXJuIGNscyhyZXByKGYpKQotICAgICAgICBpZiBfbWF0aC5jb3B5c2lnbigxLjAsIGYpID09IDEuMDoKLSAgICAgICAgICAgIHNpZ24gPSAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzaWduID0gMQotICAgICAgICBuLCBkID0gYWJzKGYpLmFzX2ludGVnZXJfcmF0aW8oKQotICAgICAgICBrID0gZC5iaXRfbGVuZ3RoKCkgLSAxCi0gICAgICAgIHJlc3VsdCA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKG4qNSoqayksIC1rKQotICAgICAgICBpZiBjbHMgaXMgRGVjaW1hbDoKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBjbHMocmVzdWx0KQotCi0gICAgZGVmIF9pc25hbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KLQotICAgICAgICAwIGlmIGEgbnVtYmVyCi0gICAgICAgIDEgaWYgTmFOCi0gICAgICAgIDIgaWYgc05hTgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGV4cCA9IHNlbGYuX2V4cAotICAgICAgICAgICAgaWYgZXhwID09ICduJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgZWxpZiBleHAgPT0gJ04nOgotICAgICAgICAgICAgICAgIHJldHVybiAyCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2lzaW5maW5pdHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgd2hldGhlciB0aGUgbnVtYmVyIGlzIGluZmluaXRlCi0KLSAgICAgICAgMCBpZiBmaW5pdGUgb3Igbm90IGEgbnVtYmVyCi0gICAgICAgIDEgaWYgK0lORgotICAgICAgICAtMSBpZiAtSU5GCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2NoZWNrX25hbnMoc2VsZiwgb3RoZXI9Tm9uZSwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHRoZSBudW1iZXIgaXMgbm90IGFjdHVhbGx5IG9uZS4KLQotICAgICAgICBpZiBzZWxmLCBvdGhlciBhcmUgc05hTiwgc2lnbmFsCi0gICAgICAgIGlmIHNlbGYsIG90aGVyIGFyZSBOYU4gcmV0dXJuIG5hbgotICAgICAgICByZXR1cm4gMAotCi0gICAgICAgIERvbmUgYmVmb3JlIG9wZXJhdGlvbnMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGZfaXNfbmFuID0gc2VsZi5faXNuYW4oKQotICAgICAgICBpZiBvdGhlciBpcyBOb25lOgotICAgICAgICAgICAgb3RoZXJfaXNfbmFuID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCi0KLSAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuOgotICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAgICAgaWYgc2VsZl9pc19uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAgICBpZiBvdGhlcl9pc19uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQotICAgICAgICAgICAgaWYgc2VsZl9pc19uYW46Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeF9uYW4oY29udGV4dCkKLQotICAgICAgICAgICAgcmV0dXJuIG90aGVyLl9maXhfbmFuKGNvbnRleHQpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgX2NvbXBhcmVfY2hlY2tfbmFucyhzZWxmLCBvdGhlciwgY29udGV4dCk6Ci0gICAgICAgICIiIlZlcnNpb24gb2YgX2NoZWNrX25hbnMgdXNlZCBmb3IgdGhlIHNpZ25hbGluZyBjb21wYXJpc29ucwotICAgICAgICBjb21wYXJlX3NpZ25hbCwgX19sZV9fLCBfX2x0X18sIF9fZ2VfXywgX19ndF9fLgotCi0gICAgICAgIFNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBzZWxmIG9yIG90aGVyIGlzIGEgKHF1aWV0Ci0gICAgICAgIG9yIHNpZ25hbGluZykgTmFOLiAgU2lnbmFsaW5nIE5hTnMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcXVpZXQKLSAgICAgICAgTmFOcy4KLQotICAgICAgICBSZXR1cm4gMCBpZiBuZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4uCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGludm9sdmluZyBzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGVsaWYgb3RoZXIuaXNfc25hbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBpbnZvbHZpbmcgc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQotICAgICAgICAgICAgZWxpZiBzZWxmLmlzX3FuYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAgICBlbGlmIG90aGVyLmlzX3FuYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW52b2x2aW5nIE5hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyKQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIF9fYm9vbF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5vbnplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgTmFOcyBhbmQgaW5maW5pdGllcyBhcmUgY29uc2lkZXJlZCBub256ZXJvLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2lzX3NwZWNpYWwgb3Igc2VsZi5faW50ICE9ICcwJwotCi0gICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgotICAgICAgICAiIiJDb21wYXJlIHRoZSB0d28gbm9uLU5hTiBkZWNpbWFsIGluc3RhbmNlcyBzZWxmIGFuZCBvdGhlci4KLQotICAgICAgICBSZXR1cm5zIC0xIGlmIHNlbGYgPCBvdGhlciwgMCBpZiBzZWxmID09IG90aGVyIGFuZCAxCi0gICAgICAgIGlmIHNlbGYgPiBvdGhlci4gIFRoaXMgcm91dGluZSBpcyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHNlbGZfaW5mID0gc2VsZi5faXNpbmZpbml0eSgpCi0gICAgICAgICAgICBvdGhlcl9pbmYgPSBvdGhlci5faXNpbmZpbml0eSgpCi0gICAgICAgICAgICBpZiBzZWxmX2luZiA9PSBvdGhlcl9pbmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgIGVsaWYgc2VsZl9pbmYgPCBvdGhlcl9pbmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAgIyBjaGVjayBmb3IgemVyb3M7ICBEZWNpbWFsKCcwJykgPT0gRGVjaW1hbCgnLTAnKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gLSgoLTEpKipvdGhlci5fc2lnbikKLSAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KLQotICAgICAgICAjIElmIGRpZmZlcmVudCBzaWducywgbmVnIG9uZSBpcyBsZXNzCi0gICAgICAgIGlmIG90aGVyLl9zaWduIDwgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBpZiBzZWxmLl9zaWduIDwgb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgIHNlbGZfYWRqdXN0ZWQgPSBzZWxmLmFkanVzdGVkKCkKLSAgICAgICAgb3RoZXJfYWRqdXN0ZWQgPSBvdGhlci5hZGp1c3RlZCgpCi0gICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgPT0gb3RoZXJfYWRqdXN0ZWQ6Ci0gICAgICAgICAgICBzZWxmX3BhZGRlZCA9IHNlbGYuX2ludCArICcwJyooc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCkKLSAgICAgICAgICAgIG90aGVyX3BhZGRlZCA9IG90aGVyLl9pbnQgKyAnMCcqKG90aGVyLl9leHAgLSBzZWxmLl9leHApCi0gICAgICAgICAgICBpZiBzZWxmX3BhZGRlZCA9PSBvdGhlcl9wYWRkZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgIGVsaWYgc2VsZl9wYWRkZWQgPCBvdGhlcl9wYWRkZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0oLTEpKipzZWxmLl9zaWduCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAoLTEpKipzZWxmLl9zaWduCi0gICAgICAgIGVsaWYgc2VsZl9hZGp1c3RlZCA+IG90aGVyX2FkanVzdGVkOgotICAgICAgICAgICAgcmV0dXJuICgtMSkqKnNlbGYuX3NpZ24KLSAgICAgICAgZWxzZTogIyBzZWxmX2FkanVzdGVkIDwgb3RoZXJfYWRqdXN0ZWQKLSAgICAgICAgICAgIHJldHVybiAtKCgtMSkqKnNlbGYuX3NpZ24pCi0KLSAgICAjIE5vdGU6IFRoZSBEZWNpbWFsIHN0YW5kYXJkIGRvZXNuJ3QgY292ZXIgcmljaCBjb21wYXJpc29ucyBmb3IKLSAgICAjIERlY2ltYWxzLiAgSW4gcGFydGljdWxhciwgdGhlIHNwZWNpZmljYXRpb24gaXMgc2lsZW50IG9uIHRoZQotICAgICMgc3ViamVjdCBvZiB3aGF0IHNob3VsZCBoYXBwZW4gZm9yIGEgY29tcGFyaXNvbiBpbnZvbHZpbmcgYSBOYU4uCi0gICAgIyBXZSB0YWtlIHRoZSBmb2xsb3dpbmcgYXBwcm9hY2g6Ci0gICAgIwotICAgICMgICA9PSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBGYWxzZQotICAgICMgICAhPSBjb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldCBOYU4gYWx3YXlzIHJldHVybiBUcnVlCi0gICAgIyAgID09IG9yICE9IGNvbXBhcmlzb25zIGludm9sdmluZyBhIHNpZ25hbGluZyBOYU4gc2lnbmFsCi0gICAgIyAgICAgIEludmFsaWRPcGVyYXRpb24sIGFuZCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSBhcyBhYm92ZSBpZiB0aGUKLSAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KLSAgICAjICAgPCwgPiwgPD0gYW5kID49IGNvbXBhcmlzb25zIGludm9sdmluZyBhIChxdWlldCBvciBzaWduYWxpbmcpCi0gICAgIyAgICAgIE5hTiBzaWduYWwgSW52YWxpZE9wZXJhdGlvbiwgYW5kIHJldHVybiBGYWxzZSBpZiB0aGUKLSAgICAjICAgICAgSW52YWxpZE9wZXJhdGlvbiBpcyBub3QgdHJhcHBlZC4KLSAgICAjCi0gICAgIyBUaGlzIGJlaGF2aW9yIGlzIGRlc2lnbmVkIHRvIGNvbmZvcm0gYXMgY2xvc2VseSBhcyBwb3NzaWJsZSB0bwotICAgICMgdGhhdCBzcGVjaWZpZWQgYnkgSUVFRSA3NTQuCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1UcnVlKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBpZiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA9PSAwCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyLCBlcXVhbGl0eV9vcD1UcnVlKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBpZiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpICE9IDAKLQotCi0gICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgc2VsZiwgb3RoZXIgPSBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPCAwCi0KLSAgICBkZWYgX19sZV9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA8PSAwCi0KLSAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICBzZWxmLCBvdGhlciA9IF9jb252ZXJ0X2Zvcl9jb21wYXJpc29uKHNlbGYsIG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICBhbnMgPSBzZWxmLl9jb21wYXJlX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSA+IDAKLQotICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYsIG90aGVyID0gX2NvbnZlcnRfZm9yX2NvbXBhcmlzb24oc2VsZiwgb3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIGFucyA9IHNlbGYuX2NvbXBhcmVfY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID49IDAKLQotICAgIGRlZiBjb21wYXJlKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlIHNlbGYgdG8gb3RoZXIuICBSZXR1cm4gYSBkZWNpbWFsIHZhbHVlOgotCi0gICAgICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJykKLSAgICAgICAgYSA8IGIgICAgICAgICAgID09PiBEZWNpbWFsKCctMScpCi0gICAgICAgIGEgPT0gYiAgICAgICAgICA9PT4gRGVjaW1hbCgnMCcpCi0gICAgICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgIyBDb21wYXJlKE5hTiwgTmFOKSA9IE5hTgotICAgICAgICBpZiAoc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlciBhbmQgb3RoZXIuX2lzX3NwZWNpYWwpOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZi5fY21wKG90aGVyKSkKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgIiIieC5fX2hhc2hfXygpIDw9PT4gaGFzaCh4KSIiIgotCi0gICAgICAgICMgSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhhc2ggb2YgYSBEZWNpbWFsIGluc3RhbmNlCi0gICAgICAgICMgYWdyZWVzIHdpdGggdGhlIGhhc2ggb2YgYSBudW1lcmljYWxseSBlcXVhbCBpbnRlZ2VyLCBmbG9hdAotICAgICAgICAjIG9yIEZyYWN0aW9uLCB3ZSBmb2xsb3cgdGhlIHJ1bGVzIGZvciBudW1lcmljIGhhc2hlcyBvdXRsaW5lZAotICAgICAgICAjIGluIHRoZSBkb2N1bWVudGF0aW9uLiAgKFNlZSBsaWJyYXJ5IGRvY3MsICdCdWlsdC1pbiBUeXBlcycpLgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDYW5ub3QgaGFzaCBhIHNpZ25hbGluZyBOYU4gdmFsdWUuJykKLSAgICAgICAgICAgIGVsaWYgc2VsZi5pc19uYW4oKToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5SEFTSF9OQU4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1fUHlIQVNIX0lORgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfUHlIQVNIX0lORgotCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgZXhwX2hhc2ggPSBwb3coMTAsIHNlbGYuX2V4cCwgX1B5SEFTSF9NT0RVTFVTKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXhwX2hhc2ggPSBwb3coX1B5SEFTSF8xMElOViwgLXNlbGYuX2V4cCwgX1B5SEFTSF9NT0RVTFVTKQotICAgICAgICBoYXNoXyA9IGludChzZWxmLl9pbnQpICogZXhwX2hhc2ggJSBfUHlIQVNIX01PRFVMVVMKLSAgICAgICAgYW5zID0gaGFzaF8gaWYgc2VsZiA+PSAwIGVsc2UgLWhhc2hfCi0gICAgICAgIHJldHVybiAtMiBpZiBhbnMgPT0gLTEgZWxzZSBhbnMKLQotICAgIGRlZiBhc190dXBsZShzZWxmKToKLSAgICAgICAgIiIiUmVwcmVzZW50cyB0aGUgbnVtYmVyIGFzIGEgdHJpcGxlIHR1cGxlLgotCi0gICAgICAgIFRvIHNob3cgdGhlIGludGVybmFscyBleGFjdGx5IGFzIHRoZXkgYXJlLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIERlY2ltYWxUdXBsZShzZWxmLl9zaWduLCB0dXBsZShtYXAoaW50LCBzZWxmLl9pbnQpKSwgc2VsZi5fZXhwKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYW4gaW5zdGFuY2Ugb2YgRGVjaW1hbC4iIiIKLSAgICAgICAgIyBJbnZhcmlhbnQ6ICBldmFsKHJlcHIoZCkpID09IGQKLSAgICAgICAgcmV0dXJuICJEZWNpbWFsKCclcycpIiAlIHN0cihzZWxmKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZiwgZW5nPUZhbHNlLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4KLQotICAgICAgICBDYXB0dXJlcyBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGluIHRoZSB1bmRlcmx5aW5nIHJlcHJlc2VudGF0aW9uLgotICAgICAgICAiIiIKLQotICAgICAgICBzaWduID0gWycnLCAnLSddW3NlbGYuX3NpZ25dCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ0luZmluaXR5JwotICAgICAgICAgICAgZWxpZiBzZWxmLl9leHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ05hTicgKyBzZWxmLl9pbnQKLSAgICAgICAgICAgIGVsc2U6ICMgc2VsZi5fZXhwID09ICdOJwotICAgICAgICAgICAgICAgIHJldHVybiBzaWduICsgJ3NOYU4nICsgc2VsZi5faW50Ci0KLSAgICAgICAgIyBudW1iZXIgb2YgZGlnaXRzIG9mIHNlbGYuX2ludCB0byBsZWZ0IG9mIGRlY2ltYWwgcG9pbnQKLSAgICAgICAgbGVmdGRpZ2l0cyA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpCi0KLSAgICAgICAgIyBkb3RwbGFjZSBpcyBudW1iZXIgb2YgZGlnaXRzIG9mIHNlbGYuX2ludCB0byB0aGUgbGVmdCBvZiB0aGUKLSAgICAgICAgIyBkZWNpbWFsIHBvaW50IGluIHRoZSBtYW50aXNzYSBvZiB0aGUgb3V0cHV0IHN0cmluZyAodGhhdCBpcywKLSAgICAgICAgIyBhZnRlciBhZGp1c3RpbmcgdGhlIGV4cG9uZW50KQotICAgICAgICBpZiBzZWxmLl9leHAgPD0gMCBhbmQgbGVmdGRpZ2l0cyA+IC02OgotICAgICAgICAgICAgIyBubyBleHBvbmVudCByZXF1aXJlZAotICAgICAgICAgICAgZG90cGxhY2UgPSBsZWZ0ZGlnaXRzCi0gICAgICAgIGVsaWYgbm90IGVuZzoKLSAgICAgICAgICAgICMgdXN1YWwgc2NpZW50aWZpYyBub3RhdGlvbjogMSBkaWdpdCBvbiBsZWZ0IG9mIHRoZSBwb2ludAotICAgICAgICAgICAgZG90cGxhY2UgPSAxCi0gICAgICAgIGVsaWYgc2VsZi5faW50ID09ICcwJzoKLSAgICAgICAgICAgICMgZW5naW5lZXJpbmcgbm90YXRpb24sIHplcm8KLSAgICAgICAgICAgIGRvdHBsYWNlID0gKGxlZnRkaWdpdHMgKyAxKSAlIDMgLSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIGVuZ2luZWVyaW5nIG5vdGF0aW9uLCBub256ZXJvCi0gICAgICAgICAgICBkb3RwbGFjZSA9IChsZWZ0ZGlnaXRzIC0gMSkgJSAzICsgMQotCi0gICAgICAgIGlmIGRvdHBsYWNlIDw9IDA6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gJzAnCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcuJyArICcwJyooLWRvdHBsYWNlKSArIHNlbGYuX2ludAotICAgICAgICBlbGlmIGRvdHBsYWNlID49IGxlbihzZWxmLl9pbnQpOgotICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludCsnMCcqKGRvdHBsYWNlLWxlbihzZWxmLl9pbnQpKQotICAgICAgICAgICAgZnJhY3BhcnQgPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludFs6ZG90cGxhY2VdCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcuJyArIHNlbGYuX2ludFtkb3RwbGFjZTpdCi0gICAgICAgIGlmIGxlZnRkaWdpdHMgPT0gZG90cGxhY2U6Ci0gICAgICAgICAgICBleHAgPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgICAgIGV4cCA9IFsnZScsICdFJ11bY29udGV4dC5jYXBpdGFsc10gKyAiJStkIiAlIChsZWZ0ZGlnaXRzLWRvdHBsYWNlKQotCi0gICAgICAgIHJldHVybiBzaWduICsgaW50cGFydCArIGZyYWNwYXJ0ICsgZXhwCi0KLSAgICBkZWYgdG9fZW5nX3N0cmluZyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb252ZXJ0IHRvIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLgotCi0gICAgICAgIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudCB3aGljaCBpcyBhIG11bHRpcGxlIG9mIDMsIHNvIHRoZXJlCi0gICAgICAgIGFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLgotCi0gICAgICAgIFNhbWUgcnVsZXMgZm9yIHdoZW4gaW4gZXhwb25lbnRpYWwgYW5kIHdoZW4gYXMgYSB2YWx1ZSBhcyBpbiBfX3N0cl9fLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19zdHJfXyhlbmc9VHJ1ZSwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fbmVnX18oc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzd2l0Y2hlZC4KLQotICAgICAgICBSb3VuZHMsIGlmIGl0IGhhcyByZWFzb24uCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBub3Qgc2VsZiBhbmQgY29udGV4dC5yb3VuZGluZyAhPSBST1VORF9GTE9PUjoKLSAgICAgICAgICAgICMgLURlY2ltYWwoJzAnKSBpcyBEZWNpbWFsKCcwJyksIG5vdCBEZWNpbWFsKCctMCcpLCBleGNlcHQKLSAgICAgICAgICAgICMgaW4gUk9VTkRfRkxPT1Igcm91bmRpbmcgbW9kZS4KLSAgICAgICAgICAgIGFucyA9IHNlbGYuY29weV9hYnMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZi5jb3B5X25lZ2F0ZSgpCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX19wb3NfXyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSwgdW5sZXNzIGl0IGlzIGEgc05hTi4KLQotICAgICAgICBSb3VuZHMgdGhlIG51bWJlciAoaWYgbW9yZSB0aGVuIHByZWNpc2lvbiBkaWdpdHMpCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBpZiBub3Qgc2VsZiBhbmQgY29udGV4dC5yb3VuZGluZyAhPSBST1VORF9GTE9PUjoKLSAgICAgICAgICAgICMgKyAoLTApID0gMCwgZXhjZXB0IGluIFJPVU5EX0ZMT09SIHJvdW5kaW5nIG1vZGUuCi0gICAgICAgICAgICBhbnMgPSBzZWxmLmNvcHlfYWJzKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IERlY2ltYWwoc2VsZikKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfX2Fic19fKHNlbGYsIHJvdW5kPVRydWUsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHNlbGYuCi0KLSAgICAgICAgSWYgdGhlIGtleXdvcmQgYXJndW1lbnQgJ3JvdW5kJyBpcyBmYWxzZSwgZG8gbm90IHJvdW5kLiAgVGhlCi0gICAgICAgIGV4cHJlc3Npb24gc2VsZi5fX2Fic19fKHJvdW5kPUZhbHNlKSBpcyBlcXVpdmFsZW50IHRvCi0gICAgICAgIHNlbGYuY29weV9hYnMoKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCByb3VuZDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcHlfYWJzKCkKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9fbmVnX18oY29udGV4dD1jb250ZXh0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fX3Bvc19fKGNvbnRleHQ9Y29udGV4dCkKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBzZWxmICsgb3RoZXIuCi0KLSAgICAgICAgLUlORiArIElORiAob3IgdGhlIHJldmVyc2UpIGNhdXNlIEludmFsaWRPcGVyYXRpb24gZXJyb3JzLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgIyBJZiBib3RoIElORiwgc2FtZSBzaWduID0+IHNhbWUgYXMgYm90aCwgb3Bwb3NpdGUgPT4gZXJyb3IuCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5fc2lnbiAhPSBvdGhlci5fc2lnbiBhbmQgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICctSU5GICsgSU5GJykKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChvdGhlcikgICMgQ2FuJ3QgYm90aCBiZSBpbmZpbml0eSBoZXJlCi0KLSAgICAgICAgZXhwID0gbWluKHNlbGYuX2V4cCwgb3RoZXIuX2V4cCkKLSAgICAgICAgbmVnYXRpdmV6ZXJvID0gMAotICAgICAgICBpZiBjb250ZXh0LnJvdW5kaW5nID09IFJPVU5EX0ZMT09SIGFuZCBzZWxmLl9zaWduICE9IG90aGVyLl9zaWduOgotICAgICAgICAgICAgIyBJZiB0aGUgYW5zd2VyIGlzIDAsIHRoZSBzaWduIHNob3VsZCBiZSBuZWdhdGl2ZSwgaW4gdGhpcyBjYXNlLgotICAgICAgICAgICAgbmVnYXRpdmV6ZXJvID0gMQotCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBzaWduID0gbWluKHNlbGYuX3NpZ24sIG90aGVyLl9zaWduKQotICAgICAgICAgICAgaWYgbmVnYXRpdmV6ZXJvOgotICAgICAgICAgICAgICAgIHNpZ24gPSAxCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgZXhwKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICBleHAgPSBtYXgoZXhwLCBvdGhlci5fZXhwIC0gY29udGV4dC5wcmVjLTEpCi0gICAgICAgICAgICBhbnMgPSBvdGhlci5fcmVzY2FsZShleHAsIGNvbnRleHQucm91bmRpbmcpCi0gICAgICAgICAgICBhbnMgPSBhbnMuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBleHAgPSBtYXgoZXhwLCBzZWxmLl9leHAgLSBjb250ZXh0LnByZWMtMSkKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX3Jlc2NhbGUoZXhwLCBjb250ZXh0LnJvdW5kaW5nKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLSAgICAgICAgb3AxLCBvcDIgPSBfbm9ybWFsaXplKG9wMSwgb3AyLCBjb250ZXh0LnByZWMpCi0KLSAgICAgICAgcmVzdWx0ID0gX1dvcmtSZXAoKQotICAgICAgICBpZiBvcDEuc2lnbiAhPSBvcDIuc2lnbjoKLSAgICAgICAgICAgICMgRXF1YWwgYW5kIG9wcG9zaXRlCi0gICAgICAgICAgICBpZiBvcDEuaW50ID09IG9wMi5pbnQ6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShuZWdhdGl2ZXplcm8sICcwJywgZXhwKQotICAgICAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICAgICAgaWYgb3AxLmludCA8IG9wMi5pbnQ6Ci0gICAgICAgICAgICAgICAgb3AxLCBvcDIgPSBvcDIsIG9wMQotICAgICAgICAgICAgICAgICMgT0ssIG5vdyBhYnMob3AxKSA+IGFicyhvcDIpCi0gICAgICAgICAgICBpZiBvcDEuc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIHJlc3VsdC5zaWduID0gMQotICAgICAgICAgICAgICAgIG9wMS5zaWduLCBvcDIuc2lnbiA9IG9wMi5zaWduLCBvcDEuc2lnbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXN1bHQuc2lnbiA9IDAKLSAgICAgICAgICAgICAgICAjIFNvIHdlIGtub3cgdGhlIHNpZ24sIGFuZCBvcDEgPiAwLgotICAgICAgICBlbGlmIG9wMS5zaWduID09IDE6Ci0gICAgICAgICAgICByZXN1bHQuc2lnbiA9IDEKLSAgICAgICAgICAgIG9wMS5zaWduLCBvcDIuc2lnbiA9ICgwLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LnNpZ24gPSAwCi0gICAgICAgICMgTm93LCBvcDEgPiBhYnMob3AyKSA+IDAKLQotICAgICAgICBpZiBvcDIuc2lnbiA9PSAwOgotICAgICAgICAgICAgcmVzdWx0LmludCA9IG9wMS5pbnQgKyBvcDIuaW50Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXN1bHQuaW50ID0gb3AxLmludCAtIG9wMi5pbnQKLQotICAgICAgICByZXN1bHQuZXhwID0gb3AxLmV4cAotICAgICAgICBhbnMgPSBEZWNpbWFsKHJlc3VsdCkKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgX19yYWRkX18gPSBfX2FkZF9fCi0KLSAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIHNlbGYgLSBvdGhlciIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICMgc2VsZiAtIG90aGVyIGlzIGNvbXB1dGVkIGFzIHNlbGYgKyBvdGhlci5jb3B5X25lZ2F0ZSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9fYWRkX18ob3RoZXIuY29weV9uZWdhdGUoKSwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fcnN1Yl9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gb3RoZXIgLSBzZWxmIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgcmV0dXJuIG90aGVyLl9fc3ViX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fbXVsX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzZWxmICogb3RoZXIuCi0KLSAgICAgICAgKCstKSBJTkYgKiAwIChvciBpdHMgcmV2ZXJzZSkgcmFpc2UgSW52YWxpZE9wZXJhdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIHJlc3VsdHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnKCstKUlORiAqIDAnKQotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0c2lnbl0KLQotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICcwICogKCstKUlORicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRzaWduXQotCi0gICAgICAgIHJlc3VsdGV4cCA9IHNlbGYuX2V4cCArIG90aGVyLl9leHAKLQotICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgbXVsdGlwbHlpbmcgYnkgemVybwotICAgICAgICBpZiBub3Qgc2VsZiBvciBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sICcwJywgcmVzdWx0ZXhwKQotICAgICAgICAgICAgIyBGaXhpbmcgaW4gY2FzZSB0aGUgZXhwb25lbnQgaXMgb3V0IG9mIGJvdW5kcwotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgbXVsdGlwbHlpbmcgYnkgcG93ZXIgb2YgMTAKLSAgICAgICAgaWYgc2VsZi5faW50ID09ICcxJzoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUocmVzdWx0c2lnbiwgb3RoZXIuX2ludCwgcmVzdWx0ZXhwKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgaWYgb3RoZXIuX2ludCA9PSAnMSc6Ci0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIHNlbGYuX2ludCwgcmVzdWx0ZXhwKQotICAgICAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBvcDIgPSBfV29ya1JlcChvdGhlcikKLQotICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdHNpZ24sIHN0cihvcDEuaW50ICogb3AyLmludCksIHJlc3VsdGV4cCkKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICByZXR1cm4gYW5zCi0gICAgX19ybXVsX18gPSBfX211bF9fCi0KLSAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBzZWxmIC8gb3RoZXIuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG90aGVyLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSBhbmQgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJygrLSlJTkYvKCstKUlORicpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NpZ25dCi0KLSAgICAgICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCwgJ0RpdmlzaW9uIGJ5IGluZmluaXR5JykKLSAgICAgICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzaWduLCAnMCcsIGNvbnRleHQuRXRpbnkoKSkKLQotICAgICAgICAjIFNwZWNpYWwgY2FzZXMgZm9yIHplcm9lcwotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25VbmRlZmluZWQsICcwIC8gMCcpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8gMCcsIHNpZ24pCi0KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwCi0gICAgICAgICAgICBjb2VmZiA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgT0ssIHNvIG5laXRoZXIgPSAwLCBJTkYgb3IgTmFOCi0gICAgICAgICAgICBzaGlmdCA9IGxlbihvdGhlci5faW50KSAtIGxlbihzZWxmLl9pbnQpICsgY29udGV4dC5wcmVjICsgMQotICAgICAgICAgICAgZXhwID0gc2VsZi5fZXhwIC0gb3RoZXIuX2V4cCAtIHNoaWZ0Ci0gICAgICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgICAgICBpZiBzaGlmdCA+PSAwOgotICAgICAgICAgICAgICAgIGNvZWZmLCByZW1haW5kZXIgPSBkaXZtb2Qob3AxLmludCAqIDEwKipzaGlmdCwgb3AyLmludCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29lZmYsIHJlbWFpbmRlciA9IGRpdm1vZChvcDEuaW50LCBvcDIuaW50ICogMTAqKi1zaGlmdCkKLSAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAjIHJlc3VsdCBpcyBub3QgZXhhY3Q7IGFkanVzdCB0byBlbnN1cmUgY29ycmVjdCByb3VuZGluZwotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgNSA9PSAwOgotICAgICAgICAgICAgICAgICAgICBjb2VmZiArPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgcmVzdWx0IGlzIGV4YWN0OyBnZXQgYXMgY2xvc2UgdG8gaWRlYWwgZXhwb25lbnQgYXMgcG9zc2libGUKLSAgICAgICAgICAgICAgICBpZGVhbF9leHAgPSBzZWxmLl9leHAgLSBvdGhlci5fZXhwCi0gICAgICAgICAgICAgICAgd2hpbGUgZXhwIDwgaWRlYWxfZXhwIGFuZCBjb2VmZiAlIDEwID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvZWZmIC8vPSAxMAotICAgICAgICAgICAgICAgICAgICBleHAgKz0gMQotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKGNvZWZmKSwgZXhwKQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBfZGl2aWRlKHNlbGYsIG90aGVyLCBjb250ZXh0KToKLSAgICAgICAgIiIiUmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpLCB0byBjb250ZXh0LnByZWMgcHJlY2lzaW9uLgotCi0gICAgICAgIEFzc3VtZXMgdGhhdCBuZWl0aGVyIHNlbGYgbm9yIG90aGVyIGlzIGEgTmFOLCB0aGF0IHNlbGYgaXMgbm90Ci0gICAgICAgIGluZmluaXRlIGFuZCB0aGF0IG90aGVyIGlzIG5vbnplcm8uCi0gICAgICAgICIiIgotICAgICAgICBzaWduID0gc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduCi0gICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBpZGVhbF9leHAgPSBzZWxmLl9leHAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlkZWFsX2V4cCA9IG1pbihzZWxmLl9leHAsIG90aGVyLl9leHApCi0KLSAgICAgICAgZXhwZGlmZiA9IHNlbGYuYWRqdXN0ZWQoKSAtIG90aGVyLmFkanVzdGVkKCkKLSAgICAgICAgaWYgbm90IHNlbGYgb3Igb3RoZXIuX2lzaW5maW5pdHkoKSBvciBleHBkaWZmIDw9IC0yOgotICAgICAgICAgICAgcmV0dXJuIChfZGVjX2Zyb21fdHJpcGxlKHNpZ24sICcwJywgMCksCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc2NhbGUoaWRlYWxfZXhwLCBjb250ZXh0LnJvdW5kaW5nKSkKLSAgICAgICAgaWYgZXhwZGlmZiA8PSBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICBvcDEgPSBfV29ya1JlcChzZWxmKQotICAgICAgICAgICAgb3AyID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgICAgICBpZiBvcDEuZXhwID49IG9wMi5leHA6Ci0gICAgICAgICAgICAgICAgb3AxLmludCAqPSAxMCoqKG9wMS5leHAgLSBvcDIuZXhwKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvcDIuaW50ICo9IDEwKioob3AyLmV4cCAtIG9wMS5leHApCi0gICAgICAgICAgICBxLCByID0gZGl2bW9kKG9wMS5pbnQsIG9wMi5pbnQpCi0gICAgICAgICAgICBpZiBxIDwgMTAqKmNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICByZXR1cm4gKF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKHEpLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc3RyKHIpLCBpZGVhbF9leHApKQotCi0gICAgICAgICMgSGVyZSB0aGUgcXVvdGllbnQgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGFibGUKLSAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVvdGllbnQgdG9vIGxhcmdlIGluIC8vLCAlIG9yIGRpdm1vZCcpCi0gICAgICAgIHJldHVybiBhbnMsIGFucwotCi0gICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX3RydWVkaXZfXy4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgcmV0dXJuIG90aGVyLl9fdHJ1ZWRpdl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIChzZWxmIC8vIG90aGVyLCBzZWxmICUgb3RoZXIpCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gKGFucywgYW5zKQotCi0gICAgICAgIHNpZ24gPSBzZWxmLl9zaWduIF4gb3RoZXIuX3NpZ24KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnZGl2bW9kKElORiwgSU5GKScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFucywgYW5zCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAoX1NpZ25lZEluZmluaXR5W3NpZ25dLAotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAlIHgnKSkKLQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICBhbnMgPSBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJ2Rpdm1vZCgwLCAwKScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGFucywgYW5zCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAoY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25CeVplcm8sICd4IC8vIDAnLCBzaWduKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICd4ICUgMCcpKQotCi0gICAgICAgIHF1b3RpZW50LCByZW1haW5kZXIgPSBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIHJlbWFpbmRlciA9IHJlbWFpbmRlci5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiBxdW90aWVudCwgcmVtYWluZGVyCi0KLSAgICBkZWYgX19yZGl2bW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19kaXZtb2RfXy4iIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLSAgICAgICAgcmV0dXJuIG90aGVyLl9fZGl2bW9kX18oc2VsZiwgY29udGV4dD1jb250ZXh0KQotCi0gICAgZGVmIF9fbW9kX18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBzZWxmICUgb3RoZXIKLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAlIHgnKQotICAgICAgICBlbGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgIGlmIHNlbGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICd4ICUgMCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvblVuZGVmaW5lZCwgJzAgJSAwJykKLQotICAgICAgICByZW1haW5kZXIgPSBzZWxmLl9kaXZpZGUob3RoZXIsIGNvbnRleHQpWzFdCi0gICAgICAgIHJlbWFpbmRlciA9IHJlbWFpbmRlci5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiByZW1haW5kZXIKLQotICAgIGRlZiBfX3Jtb2RfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiU3dhcHMgc2VsZi9vdGhlciBhbmQgcmV0dXJucyBfX21vZF9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX19tb2RfXyhzZWxmLCBjb250ZXh0PWNvbnRleHQpCi0KLSAgICBkZWYgcmVtYWluZGVyX25lYXIoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBSZW1haW5kZXIgbmVhcmVzdCB0byAwLSAgYWJzKHJlbWFpbmRlci1uZWFyKSA8PSBvdGhlci8yCi0gICAgICAgICIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIHNlbGYgPT0gKy8taW5maW5pdHkgLT4gSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoaW5maW5pdHksIHgpJykKLQotICAgICAgICAjIG90aGVyID09IDAgLT4gZWl0aGVyIEludmFsaWRPcGVyYXRpb24gb3IgRGl2aXNpb25VbmRlZmluZWQKLSAgICAgICAgaWYgbm90IG90aGVyOgotICAgICAgICAgICAgaWYgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmRlcl9uZWFyKHgsIDApJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtYWluZGVyX25lYXIoMCwgMCknKQotCi0gICAgICAgICMgb3RoZXIgPSArLy1pbmZpbml0eSAtPiByZW1haW5kZXIgPSBzZWxmCi0gICAgICAgIGlmIG90aGVyLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYpCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICAjIHNlbGYgPSAwIC0+IHJlbWFpbmRlciA9IHNlbGYsIHdpdGggaWRlYWwgZXhwb25lbnQKLSAgICAgICAgaWRlYWxfZXhwb25lbnQgPSBtaW4oc2VsZi5fZXhwLCBvdGhlci5fZXhwKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgJzAnLCBpZGVhbF9leHBvbmVudCkKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgICMgY2F0Y2ggbW9zdCBjYXNlcyBvZiBsYXJnZSBvciBzbWFsbCBxdW90aWVudAotICAgICAgICBleHBkaWZmID0gc2VsZi5hZGp1c3RlZCgpIC0gb3RoZXIuYWRqdXN0ZWQoKQotICAgICAgICBpZiBleHBkaWZmID49IGNvbnRleHQucHJlYyArIDE6Ci0gICAgICAgICAgICAjIGV4cGRpZmYgPj0gcHJlYysxID0+IGFicyhzZWxmL290aGVyKSA+IDEwKipwcmVjCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoRGl2aXNpb25JbXBvc3NpYmxlKQotICAgICAgICBpZiBleHBkaWZmIDw9IC0yOgotICAgICAgICAgICAgIyBleHBkaWZmIDw9IC0yID0+IGFicyhzZWxmL290aGVyKSA8IDAuMQotICAgICAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShpZGVhbF9leHBvbmVudCwgY29udGV4dC5yb3VuZGluZykKLSAgICAgICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgICAgICMgYWRqdXN0IGJvdGggYXJndW1lbnRzIHRvIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQsIHRoZW4gZGl2aWRlCi0gICAgICAgIG9wMSA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIG9wMiA9IF9Xb3JrUmVwKG90aGVyKQotICAgICAgICBpZiBvcDEuZXhwID49IG9wMi5leHA6Ci0gICAgICAgICAgICBvcDEuaW50ICo9IDEwKioob3AxLmV4cCAtIG9wMi5leHApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcDIuaW50ICo9IDEwKioob3AyLmV4cCAtIG9wMS5leHApCi0gICAgICAgIHEsIHIgPSBkaXZtb2Qob3AxLmludCwgb3AyLmludCkKLSAgICAgICAgIyByZW1haW5kZXIgaXMgcioxMCoqaWRlYWxfZXhwb25lbnQ7IG90aGVyIGlzICsvLW9wMi5pbnQgKgotICAgICAgICAjIDEwKippZGVhbF9leHBvbmVudC4gICBBcHBseSBjb3JyZWN0aW9uIHRvIGVuc3VyZSB0aGF0Ci0gICAgICAgICMgYWJzKHJlbWFpbmRlcikgPD0gYWJzKG90aGVyKS8yCi0gICAgICAgIGlmIDIqciArIChxJjEpID4gb3AyLmludDoKLSAgICAgICAgICAgIHIgLT0gb3AyLmludAotICAgICAgICAgICAgcSArPSAxCi0KLSAgICAgICAgaWYgcSA+PSAxMCoqY29udGV4dC5wcmVjOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uSW1wb3NzaWJsZSkKLQotICAgICAgICAjIHJlc3VsdCBoYXMgc2FtZSBzaWduIGFzIHNlbGYgdW5sZXNzIHIgaXMgbmVnYXRpdmUKLSAgICAgICAgc2lnbiA9IHNlbGYuX3NpZ24KLSAgICAgICAgaWYgciA8IDA6Ci0gICAgICAgICAgICBzaWduID0gMS1zaWduCi0gICAgICAgICAgICByID0gLXIKLQotICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNpZ24sIHN0cihyKSwgaWRlYWxfZXhwb25lbnQpCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIic2VsZiAvLyBvdGhlciIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ0lORiAvLyBJTkYnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX1NpZ25lZEluZmluaXR5W3NlbGYuX3NpZ24gXiBvdGhlci5fc2lnbl0KLQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBzZWxmOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihEaXZpc2lvbkJ5WmVybywgJ3ggLy8gMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpZ24gXiBvdGhlci5fc2lnbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uVW5kZWZpbmVkLCAnMCAvLyAwJykKLQotICAgICAgICByZXR1cm4gc2VsZi5fZGl2aWRlKG90aGVyLCBjb250ZXh0KVswXQotCi0gICAgZGVmIF9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlN3YXBzIHNlbGYvb3RoZXIgYW5kIHJldHVybnMgX19mbG9vcmRpdl9fLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyKQotICAgICAgICBpZiBvdGhlciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJldHVybiBvdGhlcgotICAgICAgICByZXR1cm4gb3RoZXIuX19mbG9vcmRpdl9fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6Ci0gICAgICAgICIiIkZsb2F0IHJlcHJlc2VudGF0aW9uLiIiIgotICAgICAgICBpZiBzZWxmLl9pc25hbigpOgotICAgICAgICAgICAgaWYgc2VsZi5pc19zbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgc2lnbmFsaW5nIE5hTiB0byBmbG9hdCIpCi0gICAgICAgICAgICBzID0gIi1uYW4iIGlmIHNlbGYuX3NpZ24gZWxzZSAibmFuIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcyA9IHN0cihzZWxmKQotICAgICAgICByZXR1cm4gZmxvYXQocykKLQotICAgIGRlZiBfX2ludF9fKHNlbGYpOgotICAgICAgICAiIiJDb252ZXJ0cyBzZWxmIHRvIGFuIGludCwgdHJ1bmNhdGluZyBpZiBuZWNlc3NhcnkuIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc25hbigpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIikKLSAgICAgICAgICAgIGVsaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoIkNhbm5vdCBjb252ZXJ0IGluZmluaXR5IHRvIGludGVnZXIiKQotICAgICAgICBzID0gKC0xKSoqc2VsZi5fc2lnbgotICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBzKmludChzZWxmLl9pbnQpKjEwKipzZWxmLl9leHAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzKmludChzZWxmLl9pbnRbOnNlbGYuX2V4cF0gb3IgJzAnKQotCi0gICAgX190cnVuY19fID0gX19pbnRfXwotCi0gICAgZGVmIHJlYWwoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0gICAgcmVhbCA9IHByb3BlcnR5KHJlYWwpCi0KLSAgICBkZWYgaW1hZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoMCkKLSAgICBpbWFnID0gcHJvcGVydHkoaW1hZykKLQotICAgIGRlZiBjb25qdWdhdGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19jb21wbGV4X18oc2VsZik6Ci0gICAgICAgIHJldHVybiBjb21wbGV4KGZsb2F0KHNlbGYpKQotCi0gICAgZGVmIF9maXhfbmFuKHNlbGYsIGNvbnRleHQpOgotICAgICAgICAiIiJEZWNhcGl0YXRlIHRoZSBwYXlsb2FkIG9mIGEgTmFOIHRvIGZpdCB0aGUgY29udGV4dCIiIgotICAgICAgICBwYXlsb2FkID0gc2VsZi5faW50Ci0KLSAgICAgICAgIyBtYXhpbXVtIGxlbmd0aCBvZiBwYXlsb2FkIGlzIHByZWNpc2lvbiBpZiBjbGFtcD0wLAotICAgICAgICAjIHByZWNpc2lvbi0xIGlmIGNsYW1wPTEuCi0gICAgICAgIG1heF9wYXlsb2FkX2xlbiA9IGNvbnRleHQucHJlYyAtIGNvbnRleHQuY2xhbXAKLSAgICAgICAgaWYgbGVuKHBheWxvYWQpID4gbWF4X3BheWxvYWRfbGVuOgotICAgICAgICAgICAgcGF5bG9hZCA9IHBheWxvYWRbbGVuKHBheWxvYWQpLW1heF9wYXlsb2FkX2xlbjpdLmxzdHJpcCgnMCcpCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBwYXlsb2FkLCBzZWxmLl9leHAsIFRydWUpCi0gICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICBkZWYgX2ZpeChzZWxmLCBjb250ZXh0KToKLSAgICAgICAgIiIiUm91bmQgaWYgaXQgaXMgbmVjZXNzYXJ5IHRvIGtlZXAgc2VsZiB3aXRoaW4gcHJlYyBwcmVjaXNpb24uCi0KLSAgICAgICAgUm91bmRzIGFuZCBmaXhlcyB0aGUgZXhwb25lbnQuICBEb2VzIG5vdCByYWlzZSBvbiBhIHNOYU4uCi0KLSAgICAgICAgQXJndW1lbnRzOgotICAgICAgICBzZWxmIC0gRGVjaW1hbCBpbnN0YW5jZQotICAgICAgICBjb250ZXh0IC0gY29udGV4dCB1c2VkLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5faXNuYW4oKToKLSAgICAgICAgICAgICAgICAjIGRlY2FwaXRhdGUgcGF5bG9hZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIHNlbGYgaXMgKy8tSW5maW5pdHk7IHJldHVybiB1bmFsdGVyZWQKLSAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgICMgaWYgc2VsZiBpcyB6ZXJvIHRoZW4gZXhwb25lbnQgc2hvdWxkIGJlIGJldHdlZW4gRXRpbnkgYW5kCi0gICAgICAgICMgRW1heCBpZiBjbGFtcD09MCwgYW5kIGJldHdlZW4gRXRpbnkgYW5kIEV0b3AgaWYgY2xhbXA9PTEuCi0gICAgICAgIEV0aW55ID0gY29udGV4dC5FdGlueSgpCi0gICAgICAgIEV0b3AgPSBjb250ZXh0LkV0b3AoKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGV4cF9tYXggPSBbY29udGV4dC5FbWF4LCBFdG9wXVtjb250ZXh0LmNsYW1wXQotICAgICAgICAgICAgbmV3X2V4cCA9IG1pbihtYXgoc2VsZi5fZXhwLCBFdGlueSksIGV4cF9tYXgpCi0gICAgICAgICAgICBpZiBuZXdfZXhwICE9IHNlbGYuX2V4cDoKLSAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihDbGFtcGVkKQotICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgbmV3X2V4cCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIGV4cF9taW4gaXMgdGhlIHNtYWxsZXN0IGFsbG93YWJsZSBleHBvbmVudCBvZiB0aGUgcmVzdWx0LAotICAgICAgICAjIGVxdWFsIHRvIG1heChzZWxmLmFkanVzdGVkKCktY29udGV4dC5wcmVjKzEsIEV0aW55KQotICAgICAgICBleHBfbWluID0gbGVuKHNlbGYuX2ludCkgKyBzZWxmLl9leHAgLSBjb250ZXh0LnByZWMKLSAgICAgICAgaWYgZXhwX21pbiA+IEV0b3A6Ci0gICAgICAgICAgICAjIG92ZXJmbG93OiBleHBfbWluID4gRXRvcCBpZmYgc2VsZi5hZGp1c3RlZCgpID4gRW1heAotICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4Jywgc2VsZi5fc2lnbikKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIHNlbGZfaXNfc3Vibm9ybWFsID0gZXhwX21pbiA8IEV0aW55Ci0gICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgotICAgICAgICAgICAgZXhwX21pbiA9IEV0aW55Ci0KLSAgICAgICAgIyByb3VuZCBpZiBzZWxmIGhhcyB0b28gbWFueSBkaWdpdHMKLSAgICAgICAgaWYgc2VsZi5fZXhwIDwgZXhwX21pbjoKLSAgICAgICAgICAgIGRpZ2l0cyA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gZXhwX21pbgotICAgICAgICAgICAgaWYgZGlnaXRzIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMScsIGV4cF9taW4tMSkKLSAgICAgICAgICAgICAgICBkaWdpdHMgPSAwCi0gICAgICAgICAgICByb3VuZGluZ19tZXRob2QgPSBzZWxmLl9waWNrX3JvdW5kaW5nX2Z1bmN0aW9uW2NvbnRleHQucm91bmRpbmddCi0gICAgICAgICAgICBjaGFuZ2VkID0gcm91bmRpbmdfbWV0aG9kKHNlbGYsIGRpZ2l0cykKLSAgICAgICAgICAgIGNvZWZmID0gc2VsZi5faW50WzpkaWdpdHNdIG9yICcwJwotICAgICAgICAgICAgaWYgY2hhbmdlZCA+IDA6Ci0gICAgICAgICAgICAgICAgY29lZmYgPSBzdHIoaW50KGNvZWZmKSsxKQotICAgICAgICAgICAgICAgIGlmIGxlbihjb2VmZikgPiBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICAgICAgICAgIGNvZWZmID0gY29lZmZbOi0xXQotICAgICAgICAgICAgICAgICAgICBleHBfbWluICs9IDEKLQotICAgICAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoZSByb3VuZGluZyBwdXNoZWQgdGhlIGV4cG9uZW50IG91dCBvZiByYW5nZQotICAgICAgICAgICAgaWYgZXhwX21pbiA+IEV0b3A6Ci0gICAgICAgICAgICAgICAgYW5zID0gY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csICdhYm92ZSBFbWF4Jywgc2VsZi5fc2lnbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBjb2VmZiwgZXhwX21pbikKLQotICAgICAgICAgICAgIyByYWlzZSB0aGUgYXBwcm9wcmlhdGUgc2lnbmFscywgdGFraW5nIGNhcmUgdG8gcmVzcGVjdAotICAgICAgICAgICAgIyB0aGUgcHJlY2VkZW5jZSBkZXNjcmliZWQgaW4gdGhlIHNwZWNpZmljYXRpb24KLSAgICAgICAgICAgIGlmIGNoYW5nZWQgYW5kIHNlbGZfaXNfc3Vibm9ybWFsOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKLSAgICAgICAgICAgIGlmIHNlbGZfaXNfc3Vibm9ybWFsOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFN1Ym5vcm1hbCkKLSAgICAgICAgICAgIGlmIGNoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgICAgICBpZiBub3QgYW5zOgotICAgICAgICAgICAgICAgICMgcmFpc2UgQ2xhbXBlZCBvbiB1bmRlcmZsb3cgdG8gMAotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKENsYW1wZWQpCi0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgc2VsZl9pc19zdWJub3JtYWw6Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCi0KLSAgICAgICAgIyBmb2xkIGRvd24gaWYgY2xhbXAgPT0gMSBhbmQgc2VsZiBoYXMgdG9vIGZldyBkaWdpdHMKLSAgICAgICAgaWYgY29udGV4dC5jbGFtcCA9PSAxIGFuZCBzZWxmLl9leHAgPiBFdG9wOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKLSAgICAgICAgICAgIHNlbGZfcGFkZGVkID0gc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBFdG9wKQotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiwgc2VsZl9wYWRkZWQsIEV0b3ApCi0KLSAgICAgICAgIyBoZXJlIHNlbGYgd2FzIHJlcHJlc2VudGFibGUgdG8gYmVnaW4gd2l0aDsgcmV0dXJuIHVuY2hhbmdlZAotICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgIyBmb3IgZWFjaCBvZiB0aGUgcm91bmRpbmcgZnVuY3Rpb25zIGJlbG93OgotICAgICMgICBzZWxmIGlzIGEgZmluaXRlLCBub256ZXJvIERlY2ltYWwKLSAgICAjICAgcHJlYyBpcyBhbiBpbnRlZ2VyIHNhdGlzZnlpbmcgMCA8PSBwcmVjIDwgbGVuKHNlbGYuX2ludCkKLSAgICAjCi0gICAgIyBlYWNoIGZ1bmN0aW9uIHJldHVybnMgZWl0aGVyIC0xLCAwLCBvciAxLCBhcyBmb2xsb3dzOgotICAgICMgICAxIGluZGljYXRlcyB0aGF0IHNlbGYgc2hvdWxkIGJlIHJvdW5kZWQgdXAgKGF3YXkgZnJvbSB6ZXJvKQotICAgICMgICAwIGluZGljYXRlcyB0aGF0IHNlbGYgc2hvdWxkIGJlIHRydW5jYXRlZCwgYW5kIHRoYXQgYWxsIHRoZQotICAgICMgICAgIGRpZ2l0cyB0byBiZSB0cnVuY2F0ZWQgYXJlIHplcm9zIChzbyB0aGUgdmFsdWUgaXMgdW5jaGFuZ2VkKQotICAgICMgIC0xIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBub256ZXJvIGRpZ2l0cyB0byBiZSB0cnVuY2F0ZWQKLQotICAgIGRlZiBfcm91bmRfZG93bihzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiQWxzbyBrbm93biBhcyByb3VuZC10b3dhcmRzLTAsIHRydW5jYXRlLiIiIgotICAgICAgICBpZiBfYWxsX3plcm9zKHNlbGYuX2ludCwgcHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICBkZWYgX3JvdW5kX3VwKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgYXdheSBmcm9tIDAuIiIiCi0gICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQotCi0gICAgZGVmIF9yb3VuZF9oYWxmX3VwKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgNSB1cCAoYXdheSBmcm9tIDApIiIiCi0gICAgICAgIGlmIHNlbGYuX2ludFtwcmVjXSBpbiAnNTY3ODknOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxpZiBfYWxsX3plcm9zKHNlbGYuX2ludCwgcHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICBkZWYgX3JvdW5kX2hhbGZfZG93bihzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiUm91bmQgNSBkb3duIiIiCi0gICAgICAgIGlmIF9leGFjdF9oYWxmKHNlbGYuX2ludCwgcHJlYyk6Ci0gICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9yb3VuZF9oYWxmX3VwKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2hhbGZfZXZlbihzZWxmLCBwcmVjKToKLSAgICAgICAgIiIiUm91bmQgNSB0byBldmVuLCByZXN0IHRvIG5lYXJlc3QuIiIiCi0gICAgICAgIGlmIF9leGFjdF9oYWxmKHNlbGYuX2ludCwgcHJlYykgYW5kIFwKLSAgICAgICAgICAgICAgICAocHJlYyA9PSAwIG9yIHNlbGYuX2ludFtwcmVjLTFdIGluICcwMjQ2OCcpOgotICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfaGFsZl91cChwcmVjKQotCi0gICAgZGVmIF9yb3VuZF9jZWlsaW5nKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgdXAgKG5vdCBhd2F5IGZyb20gMCBpZiBuZWdhdGl2ZS4pIiIiCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kX2Zsb29yKHNlbGYsIHByZWMpOgotICAgICAgICAiIiJSb3VuZHMgZG93biAobm90IHRvd2FyZHMgMCBpZiBuZWdhdGl2ZSkiIiIKLSAgICAgICAgaWYgbm90IHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcm91bmRfZG93bihwcmVjKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIC1zZWxmLl9yb3VuZF9kb3duKHByZWMpCi0KLSAgICBkZWYgX3JvdW5kXzA1dXAoc2VsZiwgcHJlYyk6Ci0gICAgICAgICIiIlJvdW5kIGRvd24gdW5sZXNzIGRpZ2l0IHByZWMtMSBpcyAwIG9yIDUuIiIiCi0gICAgICAgIGlmIHByZWMgYW5kIHNlbGYuX2ludFtwcmVjLTFdIG5vdCBpbiAnMDUnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JvdW5kX2Rvd24ocHJlYykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAtc2VsZi5fcm91bmRfZG93bihwcmVjKQotCi0gICAgX3BpY2tfcm91bmRpbmdfZnVuY3Rpb24gPSBkaWN0KAotICAgICAgICBST1VORF9ET1dOID0gX3JvdW5kX2Rvd24sCi0gICAgICAgIFJPVU5EX1VQID0gX3JvdW5kX3VwLAotICAgICAgICBST1VORF9IQUxGX1VQID0gX3JvdW5kX2hhbGZfdXAsCi0gICAgICAgIFJPVU5EX0hBTEZfRE9XTiA9IF9yb3VuZF9oYWxmX2Rvd24sCi0gICAgICAgIFJPVU5EX0hBTEZfRVZFTiA9IF9yb3VuZF9oYWxmX2V2ZW4sCi0gICAgICAgIFJPVU5EX0NFSUxJTkcgPSBfcm91bmRfY2VpbGluZywKLSAgICAgICAgUk9VTkRfRkxPT1IgPSBfcm91bmRfZmxvb3IsCi0gICAgICAgIFJPVU5EXzA1VVAgPSBfcm91bmRfMDV1cCwKLSAgICApCi0KLSAgICBkZWYgX19yb3VuZF9fKHNlbGYsIG49Tm9uZSk6Ci0gICAgICAgICIiIlJvdW5kIHNlbGYgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgb3IgdG8gYSBnaXZlbiBwcmVjaXNpb24uCi0KLSAgICAgICAgSWYgb25seSBvbmUgYXJndW1lbnQgaXMgc3VwcGxpZWQsIHJvdW5kIGEgZmluaXRlIERlY2ltYWwKLSAgICAgICAgaW5zdGFuY2Ugc2VsZiB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLiAgSWYgc2VsZiBpcyBpbmZpbml0ZSBvcgotICAgICAgICBhIE5hTiB0aGVuIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICBJZiBzZWxmIGlzIGZpbml0ZQotICAgICAgICBhbmQgbGllcyBleGFjdGx5IGhhbGZ3YXkgYmV0d2VlbiB0d28gaW50ZWdlcnMgdGhlbiBpdCBpcwotICAgICAgICByb3VuZGVkIHRvIHRoZSBpbnRlZ2VyIHdpdGggZXZlbiBsYXN0IGRpZ2l0LgotCi0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCcxMjMuNDU2JykpCi0gICAgICAgIDEyMwotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLTQ1Ni43ODknKSkKLSAgICAgICAgLTQ1NwotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLTMuMCcpKQotICAgICAgICAtMwotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnMi41JykpCi0gICAgICAgIDIKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzMuNScpKQotICAgICAgICA0Ci0gICAgICAgID4+PiByb3VuZChEZWNpbWFsKCdJbmYnKSkKLSAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgIC4uLgotICAgICAgICBPdmVyZmxvd0Vycm9yOiBjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJ05hTicpKQotICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgLi4uCi0gICAgICAgIFZhbHVlRXJyb3I6IGNhbm5vdCByb3VuZCBhIE5hTgotCi0gICAgICAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IG4gaXMgc3VwcGxpZWQsIHNlbGYgaXMgcm91bmRlZCB0byBuCi0gICAgICAgIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHRoZSByb3VuZGluZyBtb2RlIGZvciB0aGUgY3VycmVudAotICAgICAgICBjb250ZXh0LgotCi0gICAgICAgIEZvciBhbiBpbnRlZ2VyIG4sIHJvdW5kKHNlbGYsIC1uKSBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KLSAgICAgICAgc2VsZi5xdWFudGl6ZShEZWNpbWFsKCcxRW4nKSkuCi0KLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgMCkKLSAgICAgICAgRGVjaW1hbCgnMTIzJykKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMTIzLjQ2JykKLSAgICAgICAgPj4+IHJvdW5kKERlY2ltYWwoJzEyMy40NTYnKSwgLTIpCi0gICAgICAgIERlY2ltYWwoJzFFKzInKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnLUluZmluaXR5JyksIDM3KQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gcm91bmQoRGVjaW1hbCgnc05hTjEyMycpLCAwKQotICAgICAgICBEZWNpbWFsKCdOYU4xMjMnKQotCi0gICAgICAgICIiIgotICAgICAgICBpZiBuIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyB0d28tYXJndW1lbnQgZm9ybTogdXNlIHRoZSBlcXVpdmFsZW50IHF1YW50aXplIGNhbGwKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG4sIGludCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdTZWNvbmQgYXJndW1lbnQgdG8gcm91bmQgc2hvdWxkIGJlIGludGVncmFsJykKLSAgICAgICAgICAgIGV4cCA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCAtbikKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnF1YW50aXplKGV4cCkKLQotICAgICAgICAjIG9uZS1hcmd1bWVudCBmb3JtCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCByb3VuZCBhIE5hTiIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCByb3VuZCBhbiBpbmZpbml0eSIpCi0gICAgICAgIHJldHVybiBpbnQoc2VsZi5fcmVzY2FsZSgwLCBST1VORF9IQUxGX0VWRU4pKQotCi0gICAgZGVmIF9fZmxvb3JfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBmbG9vciBvZiBzZWxmLCBhcyBhbiBpbnRlZ2VyLgotCi0gICAgICAgIEZvciBhIGZpbml0ZSBEZWNpbWFsIGluc3RhbmNlIHNlbGYsIHJldHVybiB0aGUgZ3JlYXRlc3QKLSAgICAgICAgaW50ZWdlciBuIHN1Y2ggdGhhdCBuIDw9IHNlbGYuICBJZiBzZWxmIGlzIGluZmluaXRlIG9yIGEgTmFOCi0gICAgICAgIHRoZW4gYSBQeXRob24gZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHJvdW5kIGEgTmFOIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IHJvdW5kIGFuIGluZmluaXR5IikKLSAgICAgICAgcmV0dXJuIGludChzZWxmLl9yZXNjYWxlKDAsIFJPVU5EX0ZMT09SKSkKLQotICAgIGRlZiBfX2NlaWxfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjZWlsaW5nIG9mIHNlbGYsIGFzIGFuIGludGVnZXIuCi0KLSAgICAgICAgRm9yIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2Ugc2VsZiwgcmV0dXJuIHRoZSBsZWFzdCBpbnRlZ2VyIG4KLSAgICAgICAgc3VjaCB0aGF0IG4gPj0gc2VsZi4gIElmIHNlbGYgaXMgaW5maW5pdGUgb3IgYSBOYU4gdGhlbiBhCi0gICAgICAgIFB5dGhvbiBleGNlcHRpb24gaXMgcmFpc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3Qgcm91bmQgYSBOYU4iKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3Qgcm91bmQgYW4gaW5maW5pdHkiKQotICAgICAgICByZXR1cm4gaW50KHNlbGYuX3Jlc2NhbGUoMCwgUk9VTkRfQ0VJTElORykpCi0KLSAgICBkZWYgZm1hKHNlbGYsIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiRnVzZWQgbXVsdGlwbHktYWRkLgotCi0gICAgICAgIFJldHVybnMgc2VsZipvdGhlcit0aGlyZCB3aXRoIG5vIHJvdW5kaW5nIG9mIHRoZSBpbnRlcm1lZGlhdGUKLSAgICAgICAgcHJvZHVjdCBzZWxmKm90aGVyLgotCi0gICAgICAgIHNlbGYgYW5kIG90aGVyIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyLCB3aXRoIG5vIHJvdW5kaW5nIG9mCi0gICAgICAgIHRoZSByZXN1bHQuICBUaGUgdGhpcmQgb3BlcmFuZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSByZXN1bHQsCi0gICAgICAgIGFuZCBhIHNpbmdsZSBmaW5hbCByb3VuZGluZyBpcyBwZXJmb3JtZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgdGhpcmQgPSBfY29udmVydF9vdGhlcih0aGlyZCwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgICMgY29tcHV0ZSBwcm9kdWN0OyByYWlzZSBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBvcGVyYW5kIGlzCi0gICAgICAgICMgYSBzaWduYWxpbmcgTmFOIG9yIGlmIHRoZSBwcm9kdWN0IGlzIHplcm8gdGltZXMgaW5maW5pdHkuCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICAgICAgaWYgc2VsZi5fZXhwID09ICdOJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NOYU4nLCBzZWxmKQotICAgICAgICAgICAgaWYgb3RoZXIuX2V4cCA9PSAnTic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywgb3RoZXIpCi0gICAgICAgICAgICBpZiBzZWxmLl9leHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBzZWxmCi0gICAgICAgICAgICBlbGlmIG90aGVyLl9leHAgPT0gJ24nOgotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBvdGhlcgotICAgICAgICAgICAgZWxpZiBzZWxmLl9leHAgPT0gJ0YnOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5GICogMCBpbiBmbWEnKQotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQotICAgICAgICAgICAgZWxpZiBvdGhlci5fZXhwID09ICdGJzoKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCAqIElORiBpbiBmbWEnKQotICAgICAgICAgICAgICAgIHByb2R1Y3QgPSBfU2lnbmVkSW5maW5pdHlbc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJvZHVjdCA9IF9kZWNfZnJvbV90cmlwbGUoc2VsZi5fc2lnbiBeIG90aGVyLl9zaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGludChzZWxmLl9pbnQpICogaW50KG90aGVyLl9pbnQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCArIG90aGVyLl9leHApCi0KLSAgICAgICAgcmV0dXJuIHByb2R1Y3QuX19hZGRfXyh0aGlyZCwgY29udGV4dCkKLQotICAgIGRlZiBfcG93ZXJfbW9kdWxvKHNlbGYsIG90aGVyLCBtb2R1bG8sIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlRocmVlIGFyZ3VtZW50IHZlcnNpb24gb2YgX19wb3dfXyIiIgotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIG1vZHVsbyA9IF9jb252ZXJ0X290aGVyKG1vZHVsbykKLSAgICAgICAgaWYgbW9kdWxvIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG1vZHVsbwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGRlYWwgd2l0aCBOYU5zOiBpZiB0aGVyZSBhcmUgYW55IHNOYU5zIHRoZW4gZmlyc3Qgb25lIHdpbnMsCi0gICAgICAgICMgKGkuZS4gYmVoYXZpb3VyIGZvciBOYU5zIGlzIGlkZW50aWNhbCB0byB0aGF0IG9mIGZtYSkKLSAgICAgICAgc2VsZl9pc19uYW4gPSBzZWxmLl9pc25hbigpCi0gICAgICAgIG90aGVyX2lzX25hbiA9IG90aGVyLl9pc25hbigpCi0gICAgICAgIG1vZHVsb19pc19uYW4gPSBtb2R1bG8uX2lzbmFuKCkKLSAgICAgICAgaWYgc2VsZl9pc19uYW4gb3Igb3RoZXJfaXNfbmFuIG9yIG1vZHVsb19pc19uYW46Ci0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKLSAgICAgICAgICAgIGlmIG90aGVyX2lzX25hbiA9PSAyOgotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLCAnc05hTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpCi0gICAgICAgICAgICBpZiBtb2R1bG9faXNfbmFuID09IDI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sICdzTmFOJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bG8pCi0gICAgICAgICAgICBpZiBzZWxmX2lzX25hbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZml4X25hbihjb250ZXh0KQotICAgICAgICAgICAgaWYgb3RoZXJfaXNfbmFuOgotICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4X25hbihjb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsby5fZml4X25hbihjb250ZXh0KQotCi0gICAgICAgICMgY2hlY2sgaW5wdXRzOiB3ZSBhcHBseSBzYW1lIHJlc3RyaWN0aW9ucyBhcyBQeXRob24ncyBwb3coKQotICAgICAgICBpZiBub3QgKHNlbGYuX2lzaW50ZWdlcigpIGFuZAotICAgICAgICAgICAgICAgIG90aGVyLl9pc2ludGVnZXIoKSBhbmQKLSAgICAgICAgICAgICAgICBtb2R1bG8uX2lzaW50ZWdlcigpKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwb3coKSAzcmQgYXJndW1lbnQgbm90IGFsbG93ZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmxlc3MgYWxsIGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMnKQotICAgICAgICBpZiBvdGhlciA8IDA6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgMm5kIGFyZ3VtZW50IGNhbm5vdCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZ2F0aXZlIHdoZW4gM3JkIGFyZ3VtZW50IHNwZWNpZmllZCcpCi0gICAgICAgIGlmIG5vdCBtb2R1bG86Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93KCkgM3JkIGFyZ3VtZW50IGNhbm5vdCBiZSAwJykKLQotICAgICAgICAjIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gZm9yIGRlY2ltYWw6IHRoZSBtb2R1bHVzIG11c3QgYmUgbGVzcwotICAgICAgICAjIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWUKLSAgICAgICAgaWYgbW9kdWxvLmFkanVzdGVkKCkgPj0gY29udGV4dC5wcmVjOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3VmZmljaWVudCBwcmVjaXNpb246IHBvdygpIDNyZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IG11c3Qgbm90IGhhdmUgbW9yZSB0aGFuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIGRpZ2l0cycpCi0KLSAgICAgICAgIyBkZWZpbmUgMCoqMCA9PSBOYU4sIGZvciBjb25zaXN0ZW5jeSB3aXRoIHR3by1hcmd1bWVudCBwb3cKLSAgICAgICAgIyAoZXZlbiB0aG91Z2ggaXQgaHVydHMhKQotICAgICAgICBpZiBub3Qgb3RoZXIgYW5kIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IGxlYXN0IG9uZSBvZiBwb3coKSAxc3QgYXJndW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgMm5kIGFyZ3VtZW50IG11c3QgYmUgbm9uemVybyA7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwKiowIGlzIG5vdCBkZWZpbmVkJykKLQotICAgICAgICAjIGNvbXB1dGUgc2lnbiBvZiByZXN1bHQKLSAgICAgICAgaWYgb3RoZXIuX2lzZXZlbigpOgotICAgICAgICAgICAgc2lnbiA9IDAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNpZ24gPSBzZWxmLl9zaWduCi0KLSAgICAgICAgIyBjb252ZXJ0IG1vZHVsbyB0byBhIFB5dGhvbiBpbnRlZ2VyLCBhbmQgc2VsZiBhbmQgb3RoZXIgdG8KLSAgICAgICAgIyBEZWNpbWFsIGludGVnZXJzIChpLmUuIGZvcmNlIHRoZWlyIGV4cG9uZW50cyB0byBiZSA+PSAwKQotICAgICAgICBtb2R1bG8gPSBhYnMoaW50KG1vZHVsbykpCi0gICAgICAgIGJhc2UgPSBfV29ya1JlcChzZWxmLnRvX2ludGVncmFsX3ZhbHVlKCkpCi0gICAgICAgIGV4cG9uZW50ID0gX1dvcmtSZXAob3RoZXIudG9faW50ZWdyYWxfdmFsdWUoKSkKLQotICAgICAgICAjIGNvbXB1dGUgcmVzdWx0IHVzaW5nIGludGVnZXIgcG93KCkKLSAgICAgICAgYmFzZSA9IChiYXNlLmludCAlIG1vZHVsbyAqIHBvdygxMCwgYmFzZS5leHAsIG1vZHVsbykpICUgbW9kdWxvCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGV4cG9uZW50LmV4cCk6Ci0gICAgICAgICAgICBiYXNlID0gcG93KGJhc2UsIDEwLCBtb2R1bG8pCi0gICAgICAgIGJhc2UgPSBwb3coYmFzZSwgZXhwb25lbnQuaW50LCBtb2R1bG8pCi0KLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgc3RyKGJhc2UpLCAwKQotCi0gICAgZGVmIF9wb3dlcl9leGFjdChzZWxmLCBvdGhlciwgcCk6Ci0gICAgICAgICIiIkF0dGVtcHQgdG8gY29tcHV0ZSBzZWxmKipvdGhlciBleGFjdGx5LgotCi0gICAgICAgIEdpdmVuIERlY2ltYWxzIHNlbGYgYW5kIG90aGVyIGFuZCBhbiBpbnRlZ2VyIHAsIGF0dGVtcHQgdG8KLSAgICAgICAgY29tcHV0ZSBhbiBleGFjdCByZXN1bHQgZm9yIHRoZSBwb3dlciBzZWxmKipvdGhlciwgd2l0aCBwCi0gICAgICAgIGRpZ2l0cyBvZiBwcmVjaXNpb24uICBSZXR1cm4gTm9uZSBpZiBzZWxmKipvdGhlciBpcyBub3QKLSAgICAgICAgZXhhY3RseSByZXByZXNlbnRhYmxlIGluIHAgZGlnaXRzLgotCi0gICAgICAgIEFzc3VtZXMgdGhhdCBlbGltaW5hdGlvbiBvZiBzcGVjaWFsIGNhc2VzIGhhcyBhbHJlYWR5IGJlZW4KLSAgICAgICAgcGVyZm9ybWVkOiBzZWxmIGFuZCBvdGhlciBtdXN0IGJvdGggYmUgbm9uc3BlY2lhbDsgc2VsZiBtdXN0Ci0gICAgICAgIGJlIHBvc2l0aXZlIGFuZCBub3QgbnVtZXJpY2FsbHkgZXF1YWwgdG8gMTsgb3RoZXIgbXVzdCBiZQotICAgICAgICBub256ZXJvLiAgRm9yIGVmZmljaWVuY3ksIG90aGVyLl9leHAgc2hvdWxkIG5vdCBiZSB0b28gbGFyZ2UsCi0gICAgICAgIHNvIHRoYXQgMTAqKmFicyhvdGhlci5fZXhwKSBpcyBhIGZlYXNpYmxlIGNhbGN1bGF0aW9uLiIiIgotCi0gICAgICAgICMgSW4gdGhlIGNvbW1lbnRzIGJlbG93LCB3ZSB3cml0ZSB4IGZvciB0aGUgdmFsdWUgb2Ygc2VsZiBhbmQgeSBmb3IgdGhlCi0gICAgICAgICMgdmFsdWUgb2Ygb3RoZXIuICBXcml0ZSB4ID0geGMqMTAqKnhlIGFuZCBhYnMoeSkgPSB5YyoxMCoqeWUsIHdpdGggeGMKLSAgICAgICAgIyBhbmQgeWMgcG9zaXRpdmUgaW50ZWdlcnMgbm90IGRpdmlzaWJsZSBieSAxMC4KLQotICAgICAgICAjIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gaWRlbnRpZnkgdGhlICpmYWlsdXJlKgotICAgICAgICAjIG9mIHgqKnkgdG8gYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIHdpdGggYXMgbGl0dGxlIGVmZm9ydCBhcwotICAgICAgICAjIHBvc3NpYmxlLiAgU28gd2UgbG9vayBmb3IgY2hlYXAgYW5kIGVhc3kgdGVzdHMgdGhhdAotICAgICAgICAjIGVsaW1pbmF0ZSB0aGUgcG9zc2liaWxpdHkgb2YgeCoqeSBiZWluZyBleGFjdC4gIE9ubHkgaWYgYWxsCi0gICAgICAgICMgdGhlc2UgdGVzdHMgYXJlIHBhc3NlZCBkbyB3ZSBnbyBvbiB0byBhY3R1YWxseSBjb21wdXRlIHgqKnkuCi0KLSAgICAgICAgIyBIZXJlJ3MgdGhlIG1haW4gaWRlYS4gIEV4cHJlc3MgeSBhcyBhIHJhdGlvbmFsIG51bWJlciBtL24sIHdpdGggbSBhbmQKLSAgICAgICAgIyBuIHJlbGF0aXZlbHkgcHJpbWUgYW5kIG4+MC4gIFRoZW4gZm9yIHgqKnkgdG8gYmUgZXhhY3RseQotICAgICAgICAjIHJlcHJlc2VudGFibGUgKGF0ICphbnkqIHByZWNpc2lvbiksIHhjIG11c3QgYmUgdGhlIG50aCBwb3dlciBvZiBhCi0gICAgICAgICMgcG9zaXRpdmUgaW50ZWdlciBhbmQgeGUgbXVzdCBiZSBkaXZpc2libGUgYnkgbi4gIElmIHkgaXMgbmVnYXRpdmUKLSAgICAgICAgIyB0aGVuIGFkZGl0aW9uYWxseSB4YyBtdXN0IGJlIGEgcG93ZXIgb2YgZWl0aGVyIDIgb3IgNSwgaGVuY2UgYSBwb3dlcgotICAgICAgICAjIG9mIDIqKm4gb3IgNSoqbi4KLSAgICAgICAgIwotICAgICAgICAjIFRoZXJlJ3MgYSBsaW1pdCB0byBob3cgc21hbGwgfHl8IGNhbiBiZTogaWYgeT1tL24gYXMgYWJvdmUKLSAgICAgICAgIyB0aGVuOgotICAgICAgICAjCi0gICAgICAgICMgICgxKSBpZiB4YyAhPSAxIHRoZW4gZm9yIHRoZSByZXN1bHQgdG8gYmUgcmVwcmVzZW50YWJsZSB3ZQotICAgICAgICAjICAgICAgbmVlZCB4YyoqKDEvbikgPj0gMiwgYW5kIGhlbmNlIGFsc28geGMqKnx5fCA+PSAyLiAgU28KLSAgICAgICAgIyAgICAgIGlmIHx5fCA8PSAxL25iaXRzKHhjKSB0aGVuIHhjIDwgMioqbmJpdHMoeGMpIDw9Ci0gICAgICAgICMgICAgICAyKiooMS98eXwpLCBoZW5jZSB4YyoqfHl8IDwgMiBhbmQgdGhlIHJlc3VsdCBpcyBub3QKLSAgICAgICAgIyAgICAgIHJlcHJlc2VudGFibGUuCi0gICAgICAgICMKLSAgICAgICAgIyAgKDIpIGlmIHhlICE9IDAsIHx4ZXwqKDEvbikgPj0gMSwgc28gfHhlfCp8eXwgPj0gMS4gIEhlbmNlIGlmCi0gICAgICAgICMgICAgICB8eXwgPCAxL3x4ZXwgdGhlbiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlLgotICAgICAgICAjCi0gICAgICAgICMgTm90ZSB0aGF0IHNpbmNlIHggaXMgbm90IGVxdWFsIHRvIDEsIGF0IGxlYXN0IG9uZSBvZiAoMSkgYW5kCi0gICAgICAgICMgKDIpIG11c3QgYXBwbHkuICBOb3cgfHl8IDwgMS9uYml0cyh4YykgaWZmIHx5Y3wqbmJpdHMoeGMpIDwKLSAgICAgICAgIyAxMCoqLXllIGlmZiBsZW4oc3RyKHx5Y3wqbmJpdHMoeGMpKSA8PSAteWUuCi0gICAgICAgICMKLSAgICAgICAgIyBUaGVyZSdzIGFsc28gYSBsaW1pdCB0byBob3cgbGFyZ2UgeSBjYW4gYmUsIGF0IGxlYXN0IGlmIGl0J3MKLSAgICAgICAgIyBwb3NpdGl2ZTogdGhlIG5vcm1hbGl6ZWQgcmVzdWx0IHdpbGwgaGF2ZSBjb2VmZmljaWVudCB4YyoqeSwKLSAgICAgICAgIyBzbyBpZiBpdCdzIHJlcHJlc2VudGFibGUgdGhlbiB4YyoqeSA8IDEwKipwLCBhbmQgeSA8Ci0gICAgICAgICMgcC9sb2cxMCh4YykuICBIZW5jZSBpZiB5KmxvZzEwKHhjKSA+PSBwIHRoZW4gdGhlIHJlc3VsdCBpcwotICAgICAgICAjIG5vdCBleGFjdGx5IHJlcHJlc2VudGFibGUuCi0KLSAgICAgICAgIyBpZiBsZW4oc3RyKGFicyh5Yyp4ZSkpIDw9IC15ZSB0aGVuIGFicyh5Yyp4ZSkgPCAxMCoqLXllLAotICAgICAgICAjIHNvIHx5fCA8IDEveGUgYW5kIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgICMgU2ltaWxhcmx5LCBsZW4oc3RyKGFicyh5YykqeGNfYml0cykpIDw9IC15ZSBpbXBsaWVzIHx5fAotICAgICAgICAjIDwgMS9uYml0cyh4YykuCi0KLSAgICAgICAgeCA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIHhjLCB4ZSA9IHguaW50LCB4LmV4cAotICAgICAgICB3aGlsZSB4YyAlIDEwID09IDA6Ci0gICAgICAgICAgICB4YyAvLz0gMTAKLSAgICAgICAgICAgIHhlICs9IDEKLQotICAgICAgICB5ID0gX1dvcmtSZXAob3RoZXIpCi0gICAgICAgIHljLCB5ZSA9IHkuaW50LCB5LmV4cAotICAgICAgICB3aGlsZSB5YyAlIDEwID09IDA6Ci0gICAgICAgICAgICB5YyAvLz0gMTAKLSAgICAgICAgICAgIHllICs9IDEKLQotICAgICAgICAjIGNhc2Ugd2hlcmUgeGMgPT0gMTogcmVzdWx0IGlzIDEwKiooeGUqeSksIHdpdGggeGUqeQotICAgICAgICAjIHJlcXVpcmVkIHRvIGJlIGFuIGludGVnZXIKLSAgICAgICAgaWYgeGMgPT0gMToKLSAgICAgICAgICAgIHhlICo9IHljCi0gICAgICAgICAgICAjIHJlc3VsdCBpcyBub3cgMTAqKih4ZSAqIDEwKip5ZSk7ICB4ZSAqIDEwKip5ZSBtdXN0IGJlIGludGVncmFsCi0gICAgICAgICAgICB3aGlsZSB4ZSAlIDEwID09IDA6Ci0gICAgICAgICAgICAgICAgeGUgLy89IDEwCi0gICAgICAgICAgICAgICAgeWUgKz0gMQotICAgICAgICAgICAgaWYgeWUgPCAwOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBleHBvbmVudCA9IHhlICogMTAqKnllCi0gICAgICAgICAgICBpZiB5LnNpZ24gPT0gMToKLSAgICAgICAgICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudAotICAgICAgICAgICAgIyBpZiBvdGhlciBpcyBhIG5vbm5lZ2F0aXZlIGludGVnZXIsIHVzZSBpZGVhbCBleHBvbmVudAotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpIGFuZCBvdGhlci5fc2lnbiA9PSAwOgotICAgICAgICAgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gc2VsZi5fZXhwKmludChvdGhlcikKLSAgICAgICAgICAgICAgICB6ZXJvcyA9IG1pbihleHBvbmVudC1pZGVhbF9leHBvbmVudCwgcC0xKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6ZXJvcyA9IDAKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJyArICcwJyp6ZXJvcywgZXhwb25lbnQtemVyb3MpCi0KLSAgICAgICAgIyBjYXNlIHdoZXJlIHkgaXMgbmVnYXRpdmU6IHhjIG11c3QgYmUgZWl0aGVyIGEgcG93ZXIKLSAgICAgICAgIyBvZiAyIG9yIGEgcG93ZXIgb2YgNS4KLSAgICAgICAgaWYgeS5zaWduID09IDE6Ci0gICAgICAgICAgICBsYXN0X2RpZ2l0ID0geGMgJSAxMAotICAgICAgICAgICAgaWYgbGFzdF9kaWdpdCBpbiAoMiw0LDYsOCk6Ci0gICAgICAgICAgICAgICAgIyBxdWljayB0ZXN0IGZvciBwb3dlciBvZiAyCi0gICAgICAgICAgICAgICAgaWYgeGMgJiAteGMgIT0geGM6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgIyBub3cgeGMgaXMgYSBwb3dlciBvZiAyOyBlIGlzIGl0cyBleHBvbmVudAotICAgICAgICAgICAgICAgIGUgPSBfbmJpdHMoeGMpLTEKLQotICAgICAgICAgICAgICAgICMgV2Ugbm93IGhhdmU6Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgICB4ID0gMioqZSAqIDEwKip4ZSwgZSA+IDAsIGFuZCB5IDwgMC4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUaGUgZXhhY3QgcmVzdWx0IGlzOgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICAgeCoqeSA9IDUqKigtZSp5KSAqIDEwKiooZSp5ICsgeGUqeSkKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBwcm92aWRlZCB0aGF0IGJvdGggZSp5IGFuZCB4ZSp5IGFyZSBpbnRlZ2Vycy4gIE5vdGUgdGhhdCBpZgotICAgICAgICAgICAgICAgICMgNSoqKC1lKnkpID49IDEwKipwLCB0aGVuIHRoZSByZXN1bHQgY2FuJ3QgYmUgZXhwcmVzc2VkCi0gICAgICAgICAgICAgICAgIyBleGFjdGx5IHdpdGggcCBkaWdpdHMgb2YgcHJlY2lzaW9uLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFVzaW5nIHRoZSBhYm92ZSwgd2UgY2FuIGd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLgotICAgICAgICAgICAgICAgICMgOTMvNjUgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZygxMCkvbG9nKDUpLCBzbyBpZgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICAgeWUgPj0gbGVuKHN0cig5MypwLy82NSkpCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgdGhlbgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICAgLWUqeSA+PSAteSA+PSAxMCoqeWUgPiA5MypwLzY1ID4gcCpsb2coMTApL2xvZyg1KSwKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBzbyA1KiooLWUqeSkgPj0gMTAqKnAsIGFuZCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdAotICAgICAgICAgICAgICAgICMgY2FuJ3QgYmUgZXhwcmVzc2VkIGluIHAgZGlnaXRzLgotCi0gICAgICAgICAgICAgICAgIyBlbWF4ID49IGxhcmdlc3QgZSBzdWNoIHRoYXQgNSoqZSA8IDEwKipwLgotICAgICAgICAgICAgICAgIGVtYXggPSBwKjkzLy82NQotICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAgICAgIyBGaW5kIC1lKnkgYW5kIC14ZSp5OyBib3RoIG11c3QgYmUgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCi0gICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICB4YyA9IDUqKmUKLQotICAgICAgICAgICAgZWxpZiBsYXN0X2RpZ2l0ID09IDU6Ci0gICAgICAgICAgICAgICAgIyBlID49IGxvZ181KHhjKSBpZiB4YyBpcyBhIHBvd2VyIG9mIDU7IHdlIGhhdmUKLSAgICAgICAgICAgICAgICAjIGVxdWFsaXR5IGFsbCB0aGUgd2F5IHVwIHRvIHhjPTUqKjI2NTgKLSAgICAgICAgICAgICAgICBlID0gX25iaXRzKHhjKSoyOC8vNjUKLSAgICAgICAgICAgICAgICB4YywgcmVtYWluZGVyID0gZGl2bW9kKDUqKmUsIHhjKQotICAgICAgICAgICAgICAgIGlmIHJlbWFpbmRlcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICB3aGlsZSB4YyAlIDUgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgeGMgLy89IDUKLSAgICAgICAgICAgICAgICAgICAgZSAtPSAxCi0KLSAgICAgICAgICAgICAgICAjIEd1YXJkIGFnYWluc3QgbGFyZ2UgdmFsdWVzIG9mIHllLCB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBpbgotICAgICAgICAgICAgICAgICMgdGhlICd4YyBpcyBhIHBvd2VyIG9mIDInIGJyYW5jaC4gIDEwLzMgaXMgYW4gdXBwZXIgYm91bmQgZm9yCi0gICAgICAgICAgICAgICAgIyBsb2coMTApL2xvZygyKS4KLSAgICAgICAgICAgICAgICBlbWF4ID0gcCoxMC8vMwotICAgICAgICAgICAgICAgIGlmIHllID49IGxlbihzdHIoZW1heCkpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAgICAgZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdChlICogeWMsIHllKQotICAgICAgICAgICAgICAgIHhlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KHhlICogeWMsIHllKQotICAgICAgICAgICAgICAgIGlmIGUgaXMgTm9uZSBvciB4ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAgICAgaWYgZSA+IGVtYXg6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgeGMgPSAyKiplCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgIGlmIHhjID49IDEwKipwOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICB4ZSA9IC1lLXhlCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIoeGMpLCB4ZSkKLQotICAgICAgICAjIG5vdyB5IGlzIHBvc2l0aXZlOyBmaW5kIG0gYW5kIG4gc3VjaCB0aGF0IHkgPSBtL24KLSAgICAgICAgaWYgeWUgPj0gMDoKLSAgICAgICAgICAgIG0sIG4gPSB5YyoxMCoqeWUsIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHhlICE9IDAgYW5kIGxlbihzdHIoYWJzKHljKnhlKSkpIDw9IC15ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgeGNfYml0cyA9IF9uYml0cyh4YykKLSAgICAgICAgICAgIGlmIHhjICE9IDEgYW5kIGxlbihzdHIoYWJzKHljKSp4Y19iaXRzKSkgPD0gLXllOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBtLCBuID0geWMsIDEwKiooLXllKQotICAgICAgICAgICAgd2hpbGUgbSAlIDIgPT0gbiAlIDIgPT0gMDoKLSAgICAgICAgICAgICAgICBtIC8vPSAyCi0gICAgICAgICAgICAgICAgbiAvLz0gMgotICAgICAgICAgICAgd2hpbGUgbSAlIDUgPT0gbiAlIDUgPT0gMDoKLSAgICAgICAgICAgICAgICBtIC8vPSA1Ci0gICAgICAgICAgICAgICAgbiAvLz0gNQotCi0gICAgICAgICMgY29tcHV0ZSBudGggcm9vdCBvZiB4YyoxMCoqeGUKLSAgICAgICAgaWYgbiA+IDE6Ci0gICAgICAgICAgICAjIGlmIDEgPCB4YyA8IDIqKm4gdGhlbiB4YyBpc24ndCBhbiBudGggcG93ZXIKLSAgICAgICAgICAgIGlmIHhjICE9IDEgYW5kIHhjX2JpdHMgPD0gbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICB4ZSwgcmVtID0gZGl2bW9kKHhlLCBuKQotICAgICAgICAgICAgaWYgcmVtICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAgICAgIyBjb21wdXRlIG50aCByb290IG9mIHhjIHVzaW5nIE5ld3RvbidzIG1ldGhvZAotICAgICAgICAgICAgYSA9IDEgPDwgLSgtX25iaXRzKHhjKS8vbikgIyBpbml0aWFsIGVzdGltYXRlCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoeGMsIGEqKihuLTEpKQotICAgICAgICAgICAgICAgIGlmIGEgPD0gcToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBhID0gKGEqKG4tMSkgKyBxKS8vbgotICAgICAgICAgICAgaWYgbm90IChhID09IHEgYW5kIHIgPT0gMCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHhjID0gYQotCi0gICAgICAgICMgbm93IHhjKjEwKip4ZSBpcyB0aGUgbnRoIHJvb3Qgb2YgdGhlIG9yaWdpbmFsIHhjKjEwKip4ZQotICAgICAgICAjIGNvbXB1dGUgbXRoIHBvd2VyIG9mIHhjKjEwKip4ZQotCi0gICAgICAgICMgaWYgbSA+IHAqMTAwLy9fbG9nMTBfbGIoeGMpIHRoZW4gbSA+IHAvbG9nMTAoeGMpLCBoZW5jZSB4YyoqbSA+Ci0gICAgICAgICMgMTAqKnAgYW5kIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUuCi0gICAgICAgIGlmIHhjID4gMSBhbmQgbSA+IHAqMTAwLy9fbG9nMTBfbGIoeGMpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgeGMgPSB4YyoqbQotICAgICAgICB4ZSAqPSBtCi0gICAgICAgIGlmIHhjID4gMTAqKnA6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgYnkgdGhpcyBwb2ludCB0aGUgcmVzdWx0ICppcyogZXhhY3RseSByZXByZXNlbnRhYmxlCi0gICAgICAgICMgYWRqdXN0IHRoZSBleHBvbmVudCB0byBnZXQgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIGlkZWFsCi0gICAgICAgICMgZXhwb25lbnQsIGlmIG5lY2Vzc2FyeQotICAgICAgICBzdHJfeGMgPSBzdHIoeGMpCi0gICAgICAgIGlmIG90aGVyLl9pc2ludGVnZXIoKSBhbmQgb3RoZXIuX3NpZ24gPT0gMDoKLSAgICAgICAgICAgIGlkZWFsX2V4cG9uZW50ID0gc2VsZi5fZXhwKmludChvdGhlcikKLSAgICAgICAgICAgIHplcm9zID0gbWluKHhlLWlkZWFsX2V4cG9uZW50LCBwLWxlbihzdHJfeGMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgemVyb3MgPSAwCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHN0cl94YysnMCcqemVyb3MsIHhlLXplcm9zKQotCi0gICAgZGVmIF9fcG93X18oc2VsZiwgb3RoZXIsIG1vZHVsbz1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gc2VsZiAqKiBvdGhlciBbICUgbW9kdWxvXS4KLQotICAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgc2VsZioqb3RoZXIuCi0KLSAgICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgKHNlbGYqKm90aGVyKSAlIG1vZHVsby4gIEZvciB0aGUKLSAgICAgICAgdGhyZWUgYXJndW1lbnQgZm9ybSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgb24gdGhlCi0gICAgICAgIGFyZ3VtZW50cyBob2xkOgotCi0gICAgICAgICAtIGFsbCB0aHJlZSBhcmd1bWVudHMgbXVzdCBiZSBpbnRlZ3JhbAotICAgICAgICAgLSBvdGhlciBtdXN0IGJlIG5vbm5lZ2F0aXZlCi0gICAgICAgICAtIGVpdGhlciBzZWxmIG9yIG90aGVyIChvciBib3RoKSBtdXN0IGJlIG5vbnplcm8KLSAgICAgICAgIC0gbW9kdWxvIG11c3QgYmUgbm9uemVybyBhbmQgbXVzdCBoYXZlIGF0IG1vc3QgcCBkaWdpdHMsCi0gICAgICAgICAgIHdoZXJlIHAgaXMgdGhlIGNvbnRleHQgcHJlY2lzaW9uLgotCi0gICAgICAgIElmIGFueSBvZiB0aGVzZSByZXN0cmljdGlvbnMgaXMgdmlvbGF0ZWQgdGhlIEludmFsaWRPcGVyYXRpb24KLSAgICAgICAgZmxhZyBpcyByYWlzZWQuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBvZiBwb3coc2VsZiwgb3RoZXIsIG1vZHVsbykgaXMgaWRlbnRpY2FsIHRvIHRoZQotICAgICAgICByZXN1bHQgdGhhdCB3b3VsZCBiZSBvYnRhaW5lZCBieSBjb21wdXRpbmcgKHNlbGYqKm90aGVyKSAlCi0gICAgICAgIG1vZHVsbyB3aXRoIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlCi0gICAgICAgIGVmZmljaWVudGx5LiAgSXQgaXMgYWx3YXlzIGV4YWN0LgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBtb2R1bG8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcG93ZXJfbW9kdWxvKG90aGVyLCBtb2R1bG8sIGNvbnRleHQpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlcikKLSAgICAgICAgaWYgb3RoZXIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gb3RoZXIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgIyBlaXRoZXIgYXJndW1lbnQgaXMgYSBOYU4gPT4gcmVzdWx0IGlzIE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgIyAwKiowID0gTmFOICghKSwgeCoqMCA9IDEgZm9yIG5vbnplcm8geCAoaW5jbHVkaW5nICsvLUluZmluaXR5KQotICAgICAgICBpZiBub3Qgb3RoZXI6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJzAgKiogMCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0KLSAgICAgICAgIyByZXN1bHQgaGFzIHNpZ24gMSBpZmYgc2VsZi5fc2lnbiBpcyAxIGFuZCBvdGhlciBpcyBhbiBvZGQgaW50ZWdlcgotICAgICAgICByZXN1bHRfc2lnbiA9IDAKLSAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgotICAgICAgICAgICAgaWYgb3RoZXIuX2lzaW50ZWdlcigpOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvdGhlci5faXNldmVuKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zaWduID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIC12ZSoqbm9uaW50ZWdlciA9IE5hTgotICAgICAgICAgICAgICAgICMgKC0wKSoqbm9uaW50ZWdlciA9IDAqKm5vbmludGVnZXIKLSAgICAgICAgICAgICAgICBpZiBzZWxmOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICd4ICoqIHkgd2l0aCB4IG5lZ2F0aXZlIGFuZCB5IG5vdCBhbiBpbnRlZ2VyJykKLSAgICAgICAgICAgICMgbmVnYXRlIHNlbGYsIHdpdGhvdXQgZG9pbmcgYW55IHVud2FudGVkIHJvdW5kaW5nCi0gICAgICAgICAgICBzZWxmID0gc2VsZi5jb3B5X25lZ2F0ZSgpCi0KLSAgICAgICAgIyAwKiooK3ZlIG9yIEluZik9IDA7IDAqKigtdmUgb3IgLUluZikgPSBJbmZpbml0eQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KLQotICAgICAgICAjIEluZioqKCt2ZSBvciBJbmYpID0gSW5mOyBJbmYqKigtdmUgb3IgLUluZikgPSAwCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9TaWduZWRJbmZpbml0eVtyZXN1bHRfc2lnbl0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUocmVzdWx0X3NpZ24sICcwJywgMCkKLQotICAgICAgICAjIDEqKm90aGVyID0gMSwgYnV0IHRoZSBjaG9pY2Ugb2YgZXhwb25lbnQgYW5kIHRoZSBmbGFncwotICAgICAgICAjIGRlcGVuZCBvbiB0aGUgZXhwb25lbnQgb2Ygc2VsZiwgYW5kIG9uIHdoZXRoZXIgb3RoZXIgaXMgYQotICAgICAgICAjIHBvc2l0aXZlIGludGVnZXIsIGEgbmVnYXRpdmUgaW50ZWdlciwgb3IgbmVpdGhlcgotICAgICAgICBpZiBzZWxmID09IF9PbmU6Ci0gICAgICAgICAgICBpZiBvdGhlci5faXNpbnRlZ2VyKCk6Ci0gICAgICAgICAgICAgICAgIyBleHAgPSBtYXgoc2VsZi5fZXhwKm1heChpbnQob3RoZXIpLCAwKSwKLSAgICAgICAgICAgICAgICAjIDEtY29udGV4dC5wcmVjKSBidXQgZXZhbHVhdGluZyBpbnQob3RoZXIpIGRpcmVjdGx5Ci0gICAgICAgICAgICAgICAgIyBpcyBkYW5nZXJvdXMgdW50aWwgd2Uga25vdyBvdGhlciBpcyBzbWFsbCAob3RoZXIKLSAgICAgICAgICAgICAgICAjIGNvdWxkIGJlIDFlOTk5OTk5OTk5KQotICAgICAgICAgICAgICAgIGlmIG90aGVyLl9zaWduID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSAwCi0gICAgICAgICAgICAgICAgZWxpZiBvdGhlciA+IGNvbnRleHQucHJlYzoKLSAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IGNvbnRleHQucHJlYwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG11bHRpcGxpZXIgPSBpbnQob3RoZXIpCi0KLSAgICAgICAgICAgICAgICBleHAgPSBzZWxmLl9leHAgKiBtdWx0aXBsaWVyCi0gICAgICAgICAgICAgICAgaWYgZXhwIDwgMS1jb250ZXh0LnByZWM6Ci0gICAgICAgICAgICAgICAgICAgIGV4cCA9IDEtY29udGV4dC5wcmVjCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgICAgICBleHAgPSAxLWNvbnRleHQucHJlYwotCi0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnKycwJyotZXhwLCBleHApCi0KLSAgICAgICAgIyBjb21wdXRlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYKLSAgICAgICAgc2VsZl9hZGogPSBzZWxmLmFkanVzdGVkKCkKLQotICAgICAgICAjIHNlbGYgKiogaW5maW5pdHkgaXMgaW5maW5pdHkgaWYgc2VsZiA+IDEsIDAgaWYgc2VsZiA8IDEKLSAgICAgICAgIyBzZWxmICoqIC1pbmZpbml0eSBpcyBpbmZpbml0eSBpZiBzZWxmIDwgMSwgMCBpZiBzZWxmID4gMQotICAgICAgICBpZiBvdGhlci5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgaWYgKG90aGVyLl9zaWduID09IDApID09IChzZWxmX2FkaiA8IDApOgotICAgICAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCAnMCcsIDApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBfU2lnbmVkSW5maW5pdHlbcmVzdWx0X3NpZ25dCi0KLSAgICAgICAgIyBmcm9tIGhlcmUgb24sIHRoZSByZXN1bHQgYWx3YXlzIGdvZXMgdGhyb3VnaCB0aGUgY2FsbAotICAgICAgICAjIHRvIF9maXggYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBhbnMgPSBOb25lCi0gICAgICAgIGV4YWN0ID0gRmFsc2UKLQotICAgICAgICAjIGNydWRlIHRlc3QgdG8gY2F0Y2ggY2FzZXMgb2YgZXh0cmVtZSBvdmVyZmxvdy91bmRlcmZsb3cuICBJZgotICAgICAgICAjIGxvZzEwKHNlbGYpKm90aGVyID49IDEwKipib3VuZCBhbmQgYm91bmQgPj0gbGVuKHN0cihFbWF4KSkKLSAgICAgICAgIyB0aGVuIDEwKipib3VuZCA+PSAxMCoqbGVuKHN0cihFbWF4KSkgPj0gRW1heCsxIGFuZCBoZW5jZQotICAgICAgICAjIHNlbGYqKm90aGVyID49IDEwKiooRW1heCsxKSwgc28gb3ZlcmZsb3cgb2NjdXJzLiAgVGhlIHRlc3QKLSAgICAgICAgIyBmb3IgdW5kZXJmbG93IGlzIHNpbWlsYXIuCi0gICAgICAgIGJvdW5kID0gc2VsZi5fbG9nMTBfZXhwX2JvdW5kKCkgKyBvdGhlci5hZGp1c3RlZCgpCi0gICAgICAgIGlmIChzZWxmX2FkaiA+PSAwKSA9PSAob3RoZXIuX3NpZ24gPT0gMCk6Ci0gICAgICAgICAgICAjIHNlbGYgPiAxIGFuZCBvdGhlciArdmUsIG9yIHNlbGYgPCAxIGFuZCBvdGhlciAtdmUKLSAgICAgICAgICAgICMgcG9zc2liaWxpdHkgb2Ygb3ZlcmZsb3cKLSAgICAgICAgICAgIGlmIGJvdW5kID49IGxlbihzdHIoY29udGV4dC5FbWF4KSk6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnLCBjb250ZXh0LkVtYXgrMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgc2VsZiA+IDEgYW5kIG90aGVyIC12ZSwgb3Igc2VsZiA8IDEgYW5kIG90aGVyICt2ZQotICAgICAgICAgICAgIyBwb3NzaWJpbGl0eSBvZiB1bmRlcmZsb3cgdG8gMAotICAgICAgICAgICAgRXRpbnkgPSBjb250ZXh0LkV0aW55KCkKLSAgICAgICAgICAgIGlmIGJvdW5kID49IGxlbihzdHIoLUV0aW55KSk6Ci0gICAgICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShyZXN1bHRfc2lnbiwgJzEnLCBFdGlueS0xKQotCi0gICAgICAgICMgdHJ5IGZvciBhbiBleGFjdCByZXN1bHQgd2l0aCBwcmVjaXNpb24gKzEKLSAgICAgICAgaWYgYW5zIGlzIE5vbmU6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9wb3dlcl9leGFjdChvdGhlciwgY29udGV4dC5wcmVjICsgMSkKLSAgICAgICAgICAgIGlmIGFucyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRfc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDEsIGFucy5faW50LCBhbnMuX2V4cCkKLSAgICAgICAgICAgICAgICBleGFjdCA9IFRydWUKLQotICAgICAgICAjIHVzdWFsIGNhc2U6IGluZXhhY3QgcmVzdWx0LCB4Kip5IGNvbXB1dGVkIGRpcmVjdGx5IGFzIGV4cCh5KmxvZyh4KSkKLSAgICAgICAgaWYgYW5zIGlzIE5vbmU6Ci0gICAgICAgICAgICBwID0gY29udGV4dC5wcmVjCi0gICAgICAgICAgICB4ID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgICAgIHhjLCB4ZSA9IHguaW50LCB4LmV4cAotICAgICAgICAgICAgeSA9IF9Xb3JrUmVwKG90aGVyKQotICAgICAgICAgICAgeWMsIHllID0geS5pbnQsIHkuZXhwCi0gICAgICAgICAgICBpZiB5LnNpZ24gPT0gMToKLSAgICAgICAgICAgICAgICB5YyA9IC15YwotCi0gICAgICAgICAgICAjIGNvbXB1dGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiAgc3RhcnQgd2l0aCBwcmVjaXNpb24gKzMsCi0gICAgICAgICAgICAjIHRoZW4gaW5jcmVhc2UgcHJlY2lzaW9uIHVudGlsIHJlc3VsdCBpcyB1bmFtYmlndW91c2x5IHJvdW5kYWJsZQotICAgICAgICAgICAgZXh0cmEgPSAzCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGNvZWZmLCBleHAgPSBfZHBvd2VyKHhjLCB4ZSwgeWMsIHllLCBwK2V4dHJhKQotICAgICAgICAgICAgICAgIGlmIGNvZWZmICUgKDUqMTAqKihsZW4oc3RyKGNvZWZmKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXh0cmEgKz0gMwotCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHJlc3VsdF9zaWduLCBzdHIoY29lZmYpLCBleHApCi0KLSAgICAgICAgIyB1bmxpa2UgZXhwLCBsbiBhbmQgbG9nMTAsIHRoZSBwb3dlciBmdW5jdGlvbiByZXNwZWN0cyB0aGUKLSAgICAgICAgIyByb3VuZGluZyBtb2RlOyBubyBuZWVkIHRvIHN3aXRjaCB0byBST1VORF9IQUxGX0VWRU4gaGVyZQotCi0gICAgICAgICMgVGhlcmUncyBhIGRpZmZpY3VsdHkgaGVyZSB3aGVuICdvdGhlcicgaXMgbm90IGFuIGludGVnZXIgYW5kCi0gICAgICAgICMgdGhlIHJlc3VsdCBpcyBleGFjdC4gIEluIHRoaXMgY2FzZSwgdGhlIHNwZWNpZmljYXRpb24KLSAgICAgICAgIyByZXF1aXJlcyB0aGF0IHRoZSBJbmV4YWN0IGZsYWcgYmUgcmFpc2VkIChpbiBzcGl0ZSBvZgotICAgICAgICAjIGV4YWN0bmVzcyksIGJ1dCBzaW5jZSB0aGUgcmVzdWx0IGlzIGV4YWN0IF9maXggd29uJ3QgZG8gdGhpcwotICAgICAgICAjIGZvciB1cy4gIChDb3JyZXNwb25kaW5nbHksIHRoZSBVbmRlcmZsb3cgc2lnbmFsIHNob3VsZCBhbHNvCi0gICAgICAgICMgYmUgcmFpc2VkIGZvciBzdWJub3JtYWwgcmVzdWx0cy4pICBXZSBjYW4ndCBkaXJlY3RseSByYWlzZQotICAgICAgICAjIHRoZXNlIHNpZ25hbHMgZWl0aGVyIGJlZm9yZSBvciBhZnRlciBjYWxsaW5nIF9maXgsIHNpbmNlCi0gICAgICAgICMgdGhhdCB3b3VsZCB2aW9sYXRlIHRoZSBwcmVjZWRlbmNlIGZvciBzaWduYWxzLiAgU28gd2Ugd3JhcAotICAgICAgICAjIHRoZSAuX2ZpeCBjYWxsIGluIGEgdGVtcG9yYXJ5IGNvbnRleHQsIGFuZCByZXJhaXNlCi0gICAgICAgICMgYWZ0ZXJ3YXJkcy4KLSAgICAgICAgaWYgZXhhY3QgYW5kIG5vdCBvdGhlci5faXNpbnRlZ2VyKCk6Ci0gICAgICAgICAgICAjIHBhZCB3aXRoIHplcm9zIHVwIHRvIGxlbmd0aCBjb250ZXh0LnByZWMrMSBpZiBuZWNlc3Nhcnk7IHRoaXMKLSAgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHRoZSBSb3VuZGVkIHNpZ25hbCB3aWxsIGJlIHJhaXNlZC4KLSAgICAgICAgICAgIGlmIGxlbihhbnMuX2ludCkgPD0gY29udGV4dC5wcmVjOgotICAgICAgICAgICAgICAgIGV4cGRpZmYgPSBjb250ZXh0LnByZWMgKyAxIC0gbGVuKGFucy5faW50KQotICAgICAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoYW5zLl9zaWduLCBhbnMuX2ludCsnMCcqZXhwZGlmZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFucy5fZXhwLWV4cGRpZmYpCi0KLSAgICAgICAgICAgICMgY3JlYXRlIGEgY29weSBvZiB0aGUgY3VycmVudCBjb250ZXh0LCB3aXRoIGNsZWFyZWQgZmxhZ3MvdHJhcHMKLSAgICAgICAgICAgIG5ld2NvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICAgICAgbmV3Y29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgICAgICBmb3IgZXhjZXB0aW9uIGluIF9zaWduYWxzOgotICAgICAgICAgICAgICAgIG5ld2NvbnRleHQudHJhcHNbZXhjZXB0aW9uXSA9IDAKLQotICAgICAgICAgICAgIyByb3VuZCBpbiB0aGUgbmV3IGNvbnRleHQKLSAgICAgICAgICAgIGFucyA9IGFucy5fZml4KG5ld2NvbnRleHQpCi0KLSAgICAgICAgICAgICMgcmFpc2UgSW5leGFjdCwgYW5kIGlmIG5lY2Vzc2FyeSwgVW5kZXJmbG93Ci0gICAgICAgICAgICBuZXdjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tTdWJub3JtYWxdOgotICAgICAgICAgICAgICAgIG5ld2NvbnRleHQuX3JhaXNlX2Vycm9yKFVuZGVyZmxvdykKLQotICAgICAgICAgICAgIyBwcm9wYWdhdGUgc2lnbmFscyB0byB0aGUgb3JpZ2luYWwgY29udGV4dDsgX2ZpeCBjb3VsZAotICAgICAgICAgICAgIyBoYXZlIHJhaXNlZCBhbnkgb2YgT3ZlcmZsb3csIFVuZGVyZmxvdywgU3Vibm9ybWFsLAotICAgICAgICAgICAgIyBJbmV4YWN0LCBSb3VuZGVkLCBDbGFtcGVkLiAgT3ZlcmZsb3cgbmVlZHMgdGhlIGNvcnJlY3QKLSAgICAgICAgICAgICMgYXJndW1lbnRzLiAgTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgZXhjZXB0aW9ucyBpcwotICAgICAgICAgICAgIyBpbXBvcnRhbnQgaGVyZS4KLSAgICAgICAgICAgIGlmIG5ld2NvbnRleHQuZmxhZ3NbT3ZlcmZsb3ddOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKE92ZXJmbG93LCAnYWJvdmUgRW1heCcsIGFucy5fc2lnbikKLSAgICAgICAgICAgIGZvciBleGNlcHRpb24gaW4gVW5kZXJmbG93LCBTdWJub3JtYWwsIEluZXhhY3QsIFJvdW5kZWQsIENsYW1wZWQ6Ci0gICAgICAgICAgICAgICAgaWYgbmV3Y29udGV4dC5mbGFnc1tleGNlcHRpb25dOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihleGNlcHRpb24pCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIF9fcnBvd19fKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJTd2FwcyBzZWxmL290aGVyIGFuZCByZXR1cm5zIF9fcG93X18uIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCi0gICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmV0dXJuIG90aGVyCi0gICAgICAgIHJldHVybiBvdGhlci5fX3Bvd19fKHNlbGYsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBub3JtYWxpemUoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiTm9ybWFsaXplLSBzdHJpcCB0cmFpbGluZyAwcywgY2hhbmdlIGFueXRoaW5nIGVxdWFsIHRvIDAgdG8gMGUwIiIiCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgZHVwID0gc2VsZi5fZml4KGNvbnRleHQpCi0gICAgICAgIGlmIGR1cC5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIGR1cAotCi0gICAgICAgIGlmIG5vdCBkdXA6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShkdXAuX3NpZ24sICcwJywgMCkKLSAgICAgICAgZXhwX21heCA9IFtjb250ZXh0LkVtYXgsIGNvbnRleHQuRXRvcCgpXVtjb250ZXh0LmNsYW1wXQotICAgICAgICBlbmQgPSBsZW4oZHVwLl9pbnQpCi0gICAgICAgIGV4cCA9IGR1cC5fZXhwCi0gICAgICAgIHdoaWxlIGR1cC5faW50W2VuZC0xXSA9PSAnMCcgYW5kIGV4cCA8IGV4cF9tYXg6Ci0gICAgICAgICAgICBleHAgKz0gMQotICAgICAgICAgICAgZW5kIC09IDEKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoZHVwLl9zaWduLCBkdXAuX2ludFs6ZW5kXSwgZXhwKQotCi0gICAgZGVmIHF1YW50aXplKHNlbGYsIGV4cCwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lLCB3YXRjaGV4cD1UcnVlKToKLSAgICAgICAgIiIiUXVhbnRpemUgc2VsZiBzbyBpdHMgZXhwb25lbnQgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiBleHAuCi0KLSAgICAgICAgU2ltaWxhciB0byBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwKSBidXQgd2l0aCBlcnJvciBjaGVja2luZy4KLSAgICAgICAgIiIiCi0gICAgICAgIGV4cCA9IF9jb252ZXJ0X290aGVyKGV4cCwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZwotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3IgZXhwLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhleHAsIGNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgICAgICBpZiBleHAuX2lzaW5maW5pdHkoKSBvciBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICAgICAgaWYgZXhwLl9pc2luZmluaXR5KCkgYW5kIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikgICMgaWYgYm90aCBhcmUgaW5mLCBpdCBpcyBPSwotICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdWFudGl6ZSB3aXRoIG9uZSBJTkYnKQotCi0gICAgICAgICMgaWYgd2UncmUgbm90IHdhdGNoaW5nIGV4cG9uZW50cywgZG8gYSBzaW1wbGUgcmVzY2FsZQotICAgICAgICBpZiBub3Qgd2F0Y2hleHA6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKGV4cC5fZXhwLCByb3VuZGluZykKLSAgICAgICAgICAgICMgcmFpc2UgSW5leGFjdCBhbmQgUm91bmRlZCB3aGVyZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgaWYgYW5zLl9leHAgPiBzZWxmLl9leHA6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgICAgICBpZiBhbnMgIT0gc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGV4cC5fZXhwIHNob3VsZCBiZSBiZXR3ZWVuIEV0aW55IGFuZCBFbWF4Ci0gICAgICAgIGlmIG5vdCAoY29udGV4dC5FdGlueSgpIDw9IGV4cC5fZXhwIDw9IGNvbnRleHQuRW1heCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAndGFyZ2V0IGV4cG9uZW50IG91dCBvZiBib3VuZHMgaW4gcXVhbnRpemUnKQotCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIGV4cC5fZXhwKQotICAgICAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICAgICAgc2VsZl9hZGp1c3RlZCA9IHNlbGYuYWRqdXN0ZWQoKQotICAgICAgICBpZiBzZWxmX2FkanVzdGVkID4gY29udGV4dC5FbWF4OgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50IG9mIHF1YW50aXplIHJlc3VsdCB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0gICAgICAgIGlmIHNlbGZfYWRqdXN0ZWQgLSBleHAuX2V4cCArIDEgPiBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fcmVzY2FsZShleHAuX2V4cCwgcm91bmRpbmcpCi0gICAgICAgIGlmIGFucy5hZGp1c3RlZCgpID4gY29udGV4dC5FbWF4OgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50IG9mIHF1YW50aXplIHJlc3VsdCB0b28gbGFyZ2UgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0gICAgICAgIGlmIGxlbihhbnMuX2ludCkgPiBjb250ZXh0LnByZWM6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVhbnRpemUgcmVzdWx0IGhhcyB0b28gbWFueSBkaWdpdHMgZm9yIGN1cnJlbnQgY29udGV4dCcpCi0KLSAgICAgICAgIyByYWlzZSBhcHByb3ByaWF0ZSBmbGFncwotICAgICAgICBpZiBhbnMgYW5kIGFucy5hZGp1c3RlZCgpIDwgY29udGV4dC5FbWluOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoU3Vibm9ybWFsKQotICAgICAgICBpZiBhbnMuX2V4cCA+IHNlbGYuX2V4cDoKLSAgICAgICAgICAgIGlmIGFucyAhPSBzZWxmOgotICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihSb3VuZGVkKQotCi0gICAgICAgICMgY2FsbCB0byBmaXggdGFrZXMgY2FyZSBvZiBhbnkgbmVjZXNzYXJ5IGZvbGRkb3duLCBhbmQKLSAgICAgICAgIyBzaWduYWxzIENsYW1wZWQgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBzYW1lX3F1YW50dW0oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgYW5kIG90aGVyIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQ7IG90aGVyd2lzZQotICAgICAgICByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBzcGVjaWFsIHZhbHVlLCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFyZSB1c2VkOgotICAgICAgICAgICAqIHJldHVybiBUcnVlIGlmIGJvdGggb3BlcmFuZHMgYXJlIGluZmluaXRpZXMKLSAgICAgICAgICAgKiByZXR1cm4gVHJ1ZSBpZiBib3RoIG9wZXJhbmRzIGFyZSBOYU5zCi0gICAgICAgICAgICogb3RoZXJ3aXNlLCByZXR1cm4gRmFsc2UuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICByZXR1cm4gKHNlbGYuaXNfbmFuKCkgYW5kIG90aGVyLmlzX25hbigpIG9yCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuaXNfaW5maW5pdGUoKSBhbmQgb3RoZXIuaXNfaW5maW5pdGUoKSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cCA9PSBvdGhlci5fZXhwCi0KLSAgICBkZWYgX3Jlc2NhbGUoc2VsZiwgZXhwLCByb3VuZGluZyk6Ci0gICAgICAgICIiIlJlc2NhbGUgc2VsZiBzbyB0aGF0IHRoZSBleHBvbmVudCBpcyBleHAsIGVpdGhlciBieSBwYWRkaW5nIHdpdGggemVyb3MKLSAgICAgICAgb3IgYnkgdHJ1bmNhdGluZyBkaWdpdHMsIHVzaW5nIHRoZSBnaXZlbiByb3VuZGluZyBtb2RlLgotCi0gICAgICAgIFNwZWNpYWxzIGFyZSByZXR1cm5lZCB3aXRob3V0IGNoYW5nZS4gIFRoaXMgb3BlcmF0aW9uIGlzCi0gICAgICAgIHF1aWV0OiBpdCByYWlzZXMgbm8gZmxhZ3MsIGFuZCB1c2VzIG5vIGluZm9ybWF0aW9uIGZyb20gdGhlCi0gICAgICAgIGNvbnRleHQuCi0KLSAgICAgICAgZXhwID0gZXhwIHRvIHNjYWxlIHRvIChhbiBpbnRlZ2VyKQotICAgICAgICByb3VuZGluZyA9IHJvdW5kaW5nIG1vZGUKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgZXhwKQotCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSBleHA6Ci0gICAgICAgICAgICAjIHBhZCBhbnN3ZXIgd2l0aCB6ZXJvcyBpZiBuZWNlc3NhcnkKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faW50ICsgJzAnKihzZWxmLl9leHAgLSBleHApLCBleHApCi0KLSAgICAgICAgIyB0b28gbWFueSBkaWdpdHM7IHJvdW5kIGFuZCBsb3NlIGRhdGEuICBJZiBzZWxmLmFkanVzdGVkKCkgPAotICAgICAgICAjIGV4cC0xLCByZXBsYWNlIHNlbGYgYnkgMTAqKihleHAtMSkgYmVmb3JlIHJvdW5kaW5nCi0gICAgICAgIGRpZ2l0cyA9IGxlbihzZWxmLl9pbnQpICsgc2VsZi5fZXhwIC0gZXhwCi0gICAgICAgIGlmIGRpZ2l0cyA8IDA6Ci0gICAgICAgICAgICBzZWxmID0gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMScsIGV4cC0xKQotICAgICAgICAgICAgZGlnaXRzID0gMAotICAgICAgICB0aGlzX2Z1bmN0aW9uID0gc2VsZi5fcGlja19yb3VuZGluZ19mdW5jdGlvbltyb3VuZGluZ10KLSAgICAgICAgY2hhbmdlZCA9IHRoaXNfZnVuY3Rpb24oc2VsZiwgZGlnaXRzKQotICAgICAgICBjb2VmZiA9IHNlbGYuX2ludFs6ZGlnaXRzXSBvciAnMCcKLSAgICAgICAgaWYgY2hhbmdlZCA9PSAxOgotICAgICAgICAgICAgY29lZmYgPSBzdHIoaW50KGNvZWZmKSsxKQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCBjb2VmZiwgZXhwKQotCi0gICAgZGVmIF9yb3VuZChzZWxmLCBwbGFjZXMsIHJvdW5kaW5nKToKLSAgICAgICAgIiIiUm91bmQgYSBub256ZXJvLCBub25zcGVjaWFsIERlY2ltYWwgdG8gYSBmaXhlZCBudW1iZXIgb2YKLSAgICAgICAgc2lnbmlmaWNhbnQgZmlndXJlcywgdXNpbmcgdGhlIGdpdmVuIHJvdW5kaW5nIG1vZGUuCi0KLSAgICAgICAgSW5maW5pdGllcywgTmFOcyBhbmQgemVyb3MgYXJlIHJldHVybmVkIHVuYWx0ZXJlZC4KLQotICAgICAgICBUaGlzIG9wZXJhdGlvbiBpcyBxdWlldDogaXQgcmFpc2VzIG5vIGZsYWdzLCBhbmQgdXNlcyBubwotICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb250ZXh0LgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBwbGFjZXMgPD0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFyZ3VtZW50IHNob3VsZCBiZSBhdCBsZWFzdCAxIGluIF9yb3VuZCIpCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKHNlbGYuYWRqdXN0ZWQoKSsxLXBsYWNlcywgcm91bmRpbmcpCi0gICAgICAgICMgaXQgY2FuIGhhcHBlbiB0aGF0IHRoZSByZXNjYWxlIGFsdGVycyB0aGUgYWRqdXN0ZWQgZXhwb25lbnQ7Ci0gICAgICAgICMgZm9yIGV4YW1wbGUgd2hlbiByb3VuZGluZyA5OS45NyB0byAzIHNpZ25pZmljYW50IGZpZ3VyZXMuCi0gICAgICAgICMgV2hlbiB0aGlzIGhhcHBlbnMgd2UgZW5kIHVwIHdpdGggYW4gZXh0cmEgMCBhdCB0aGUgZW5kIG9mCi0gICAgICAgICMgdGhlIG51bWJlcjsgYSBzZWNvbmQgcmVzY2FsZSBmaXhlcyB0aGlzLgotICAgICAgICBpZiBhbnMuYWRqdXN0ZWQoKSAhPSBzZWxmLmFkanVzdGVkKCk6Ci0gICAgICAgICAgICBhbnMgPSBhbnMuX3Jlc2NhbGUoYW5zLmFkanVzdGVkKCkrMS1wbGFjZXMsIHJvdW5kaW5nKQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgdG9faW50ZWdyYWxfZXhhY3Qoc2VsZiwgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUm91bmRzIHRvIGEgbmVhcmJ5IGludGVnZXIuCi0KLSAgICAgICAgSWYgbm8gcm91bmRpbmcgbW9kZSBpcyBzcGVjaWZpZWQsIHRha2UgdGhlIHJvdW5kaW5nIG1vZGUgZnJvbQotICAgICAgICB0aGUgY29udGV4dC4gIFRoaXMgbWV0aG9kIHJhaXNlcyB0aGUgUm91bmRlZCBhbmQgSW5leGFjdCBmbGFncwotICAgICAgICB3aGVuIGFwcHJvcHJpYXRlLgotCi0gICAgICAgIFNlZSBhbHNvOiB0b19pbnRlZ3JhbF92YWx1ZSwgd2hpY2ggZG9lcyBleGFjdGx5IHRoZSBzYW1lIGFzCi0gICAgICAgIHRoaXMgbWV0aG9kIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgcmFpc2UgSW5leGFjdCBvciBSb3VuZGVkLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgICAgIHJldHVybiBhbnMKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLCAnMCcsIDApCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZwotICAgICAgICBhbnMgPSBzZWxmLl9yZXNjYWxlKDAsIHJvdW5kaW5nKQotICAgICAgICBpZiBhbnMgIT0gc2VsZjoKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEluZXhhY3QpCi0gICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiB0b19pbnRlZ3JhbF92YWx1ZShzZWxmLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSb3VuZHMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciwgd2l0aG91dCByYWlzaW5nIGluZXhhY3QsIHJvdW5kZWQuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgaWYgcm91bmRpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5yb3VuZGluZwotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFucwotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLSAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Jlc2NhbGUoMCwgcm91bmRpbmcpCi0KLSAgICAjIHRoZSBtZXRob2QgbmFtZSBjaGFuZ2VkLCBidXQgd2UgcHJvdmlkZSBhbHNvIHRoZSBvbGQgb25lLCBmb3IgY29tcGF0aWJpbGl0eQotICAgIHRvX2ludGVncmFsID0gdG9faW50ZWdyYWxfdmFsdWUKLQotICAgIGRlZiBzcXJ0KHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygc2VsZi4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSBhbmQgc2VsZi5fc2lnbiA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICAjIGV4cG9uZW50ID0gc2VsZi5fZXhwIC8vIDIuICBzcXJ0KC0wKSA9IC0wCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sICcwJywgc2VsZi5fZXhwIC8vIDIpCi0gICAgICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwgJ3NxcnQoLXgpLCB4ID4gMCcpCi0KLSAgICAgICAgIyBBdCB0aGlzIHBvaW50IHNlbGYgcmVwcmVzZW50cyBhIHBvc2l0aXZlIG51bWJlci4gIExldCBwIGJlCi0gICAgICAgICMgdGhlIGRlc2lyZWQgcHJlY2lzaW9uIGFuZCBleHByZXNzIHNlbGYgaW4gdGhlIGZvcm0gYyoxMDAqKmUKLSAgICAgICAgIyB3aXRoIGMgYSBwb3NpdGl2ZSByZWFsIG51bWJlciBhbmQgZSBhbiBpbnRlZ2VyLCBjIGFuZCBlCi0gICAgICAgICMgYmVpbmcgY2hvc2VuIHNvIHRoYXQgMTAwKioocC0xKSA8PSBjIDwgMTAwKipwLiAgVGhlbiB0aGUKLSAgICAgICAgIyAoZXhhY3QpIHNxdWFyZSByb290IG9mIHNlbGYgaXMgc3FydChjKSoxMCoqZSwgYW5kIDEwKioocC0xKQotICAgICAgICAjIDw9IHNxcnQoYykgPCAxMCoqcCwgc28gdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBEZWNpbWFsIGF0Ci0gICAgICAgICMgcHJlY2lzaW9uIHAgaXMgbioxMCoqZSB3aGVyZSBuID0gcm91bmRfaGFsZl9ldmVuKHNxcnQoYykpLAotICAgICAgICAjIHRoZSBjbG9zZXN0IGludGVnZXIgdG8gc3FydChjKSB3aXRoIHRoZSBldmVuIGludGVnZXIgY2hvc2VuCi0gICAgICAgICMgaW4gdGhlIGNhc2Ugb2YgYSB0aWUuCi0gICAgICAgICMKLSAgICAgICAgIyBUbyBlbnN1cmUgY29ycmVjdCByb3VuZGluZyBpbiBhbGwgY2FzZXMsIHdlIHVzZSB0aGUKLSAgICAgICAgIyBmb2xsb3dpbmcgdHJpY2s6IHdlIGNvbXB1dGUgdGhlIHNxdWFyZSByb290IHRvIGFuIGV4dHJhCi0gICAgICAgICMgcGxhY2UgKHByZWNpc2lvbiBwKzEgaW5zdGVhZCBvZiBwcmVjaXNpb24gcCksIHJvdW5kaW5nIGRvd24uCi0gICAgICAgICMgVGhlbiwgaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0IGFuZCBpdHMgbGFzdCBkaWdpdCBpcyAwIG9yIDUsCi0gICAgICAgICMgd2UgaW5jcmVhc2UgdGhlIGxhc3QgZGlnaXQgdG8gMSBvciA2IHJlc3BlY3RpdmVseTsgaWYgaXQncwotICAgICAgICAjIGV4YWN0IHdlIGxlYXZlIHRoZSBsYXN0IGRpZ2l0IGFsb25lLiAgTm93IHRoZSBmaW5hbCByb3VuZCB0bwotICAgICAgICAjIHAgcGxhY2VzIChvciBmZXdlciBpbiB0aGUgY2FzZSBvZiB1bmRlcmZsb3cpIHdpbGwgcm91bmQKLSAgICAgICAgIyBjb3JyZWN0bHkgYW5kIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBmbGFncy4KLQotICAgICAgICAjIHVzZSBhbiBleHRyYSBkaWdpdCBvZiBwcmVjaXNpb24KLSAgICAgICAgcHJlYyA9IGNvbnRleHQucHJlYysxCi0KLSAgICAgICAgIyB3cml0ZSBhcmd1bWVudCBpbiB0aGUgZm9ybSBjKjEwMCoqZSB3aGVyZSBlID0gc2VsZi5fZXhwLy8yCi0gICAgICAgICMgaXMgdGhlICdpZGVhbCcgZXhwb25lbnQsIHRvIGJlIHVzZWQgaWYgdGhlIHNxdWFyZSByb290IGlzCi0gICAgICAgICMgZXhhY3RseSByZXByZXNlbnRhYmxlLiAgbCBpcyB0aGUgbnVtYmVyIG9mICdkaWdpdHMnIG9mIGMgaW4KLSAgICAgICAgIyBiYXNlIDEwMCwgc28gdGhhdCAxMDAqKihsLTEpIDw9IGMgPCAxMDAqKmwuCi0gICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgZSA9IG9wLmV4cCA+PiAxCi0gICAgICAgIGlmIG9wLmV4cCAmIDE6Ci0gICAgICAgICAgICBjID0gb3AuaW50ICogMTAKLSAgICAgICAgICAgIGwgPSAobGVuKHNlbGYuX2ludCkgPj4gMSkgKyAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjID0gb3AuaW50Ci0gICAgICAgICAgICBsID0gbGVuKHNlbGYuX2ludCkrMSA+PiAxCi0KLSAgICAgICAgIyByZXNjYWxlIHNvIHRoYXQgYyBoYXMgZXhhY3RseSBwcmVjIGJhc2UgMTAwICdkaWdpdHMnCi0gICAgICAgIHNoaWZ0ID0gcHJlYy1sCi0gICAgICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgICAgICBjICo9IDEwMCoqc2hpZnQKLSAgICAgICAgICAgIGV4YWN0ID0gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYywgcmVtYWluZGVyID0gZGl2bW9kKGMsIDEwMCoqLXNoaWZ0KQotICAgICAgICAgICAgZXhhY3QgPSBub3QgcmVtYWluZGVyCi0gICAgICAgIGUgLT0gc2hpZnQKLQotICAgICAgICAjIGZpbmQgbiA9IGZsb29yKHNxcnQoYykpIHVzaW5nIE5ld3RvbidzIG1ldGhvZAotICAgICAgICBuID0gMTAqKnByZWMKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHEgPSBjLy9uCi0gICAgICAgICAgICBpZiBuIDw9IHE6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbiA9IG4gKyBxID4+IDEKLSAgICAgICAgZXhhY3QgPSBleGFjdCBhbmQgbipuID09IGMKLQotICAgICAgICBpZiBleGFjdDoKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIGV4YWN0OyByZXNjYWxlIHRvIHVzZSBpZGVhbCBleHBvbmVudCBlCi0gICAgICAgICAgICBpZiBzaGlmdCA+PSAwOgotICAgICAgICAgICAgICAgICMgYXNzZXJ0IG4gJSAxMCoqc2hpZnQgPT0gMAotICAgICAgICAgICAgICAgIG4gLy89IDEwKipzaGlmdAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuICo9IDEwKiotc2hpZnQKLSAgICAgICAgICAgIGUgKz0gc2hpZnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIG5vdCBleGFjdDsgZml4IGxhc3QgZGlnaXQgYXMgZGVzY3JpYmVkIGFib3ZlCi0gICAgICAgICAgICBpZiBuICUgNSA9PSAwOgotICAgICAgICAgICAgICAgIG4gKz0gMQotCi0gICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgc3RyKG4pLCBlKQotCi0gICAgICAgICMgcm91bmQsIGFuZCBmaXQgdG8gY3VycmVudCBjb250ZXh0Ci0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCi0gICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZwotCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBtYXgoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGxhcmdlciB2YWx1ZS4KLQotICAgICAgICBMaWtlIG1heChzZWxmLCBvdGhlcikgZXhjZXB0IGlmIG9uZSBpcyBub3QgYSBudW1iZXIsIHJldHVybnMKLSAgICAgICAgTmFOIChhbmQgc2lnbmFscyBpZiBvbmUgaXMgc05hTikuICBBbHNvIHJvdW5kcy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgYyA9PSAwOgotICAgICAgICAgICAgIyBJZiBib3RoIG9wZXJhbmRzIGFyZSBmaW5pdGUgYW5kIGVxdWFsIGluIG51bWVyaWNhbCB2YWx1ZQotICAgICAgICAgICAgIyB0aGVuIGFuIG9yZGVyaW5nIGlzIGFwcGxpZWQ6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIElmIHRoZSBzaWducyBkaWZmZXIgdGhlbiBtYXggcmV0dXJucyB0aGUgb3BlcmFuZCB3aXRoIHRoZQotICAgICAgICAgICAgIyBwb3NpdGl2ZSBzaWduIGFuZCBtaW4gcmV0dXJucyB0aGUgb3BlcmFuZCB3aXRoIHRoZSBuZWdhdGl2ZSBzaWduCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIElmIHRoZSBzaWducyBhcmUgdGhlIHNhbWUgdGhlbiB0aGUgZXhwb25lbnQgaXMgdXNlZCB0byBzZWxlY3QKLSAgICAgICAgICAgICMgdGhlIHJlc3VsdC4gIFRoaXMgaXMgZXhhY3RseSB0aGUgb3JkZXJpbmcgdXNlZCBpbiBjb21wYXJlX3RvdGFsLgotICAgICAgICAgICAgYyA9IHNlbGYuY29tcGFyZV90b3RhbChvdGhlcikKLQotICAgICAgICBpZiBjID09IC0xOgotICAgICAgICAgICAgYW5zID0gb3RoZXIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IHNlbGYKLQotICAgICAgICByZXR1cm4gYW5zLl9maXgoY29udGV4dCkKLQotICAgIGRlZiBtaW4oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNtYWxsZXIgdmFsdWUuCi0KLSAgICAgICAgTGlrZSBtaW4oc2VsZiwgb3RoZXIpIGV4Y2VwdCBpZiBvbmUgaXMgbm90IGEgbnVtYmVyLCByZXR1cm5zCi0gICAgICAgIE5hTiAoYW5kIHNpZ25hbHMgaWYgb25lIGlzIHNOYU4pLiAgQWxzbyByb3VuZHMuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQotICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCi0gICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKLSAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKLSAgICAgICAgICAgIGlmIHNuIG9yIG9uOgotICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotCi0gICAgICAgIGMgPSBzZWxmLl9jbXAob3RoZXIpCi0gICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCi0KLSAgICAgICAgaWYgYyA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IG90aGVyCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgX2lzaW50ZWdlcihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHNlbGYgaXMgYW4gaW50ZWdlciIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmVzdCA9IHNlbGYuX2ludFtzZWxmLl9leHA6XQotICAgICAgICByZXR1cm4gcmVzdCA9PSAnMCcqbGVuKHJlc3QpCi0KLSAgICBkZWYgX2lzZXZlbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBUcnVlIGlmIHNlbGYgaXMgZXZlbi4gIEFzc3VtZXMgc2VsZiBpcyBhbiBpbnRlZ2VyLiIiIgotICAgICAgICBpZiBub3Qgc2VsZiBvciBzZWxmLl9leHAgPiAwOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ludFstMStzZWxmLl9leHBdIGluICcwMjQ2OCcKLQotICAgIGRlZiBhZGp1c3RlZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KSAtIDEKLSAgICAgICAgIyBJZiBOYU4gb3IgSW5maW5pdHksIHNlbGYuX2V4cCBpcyBzdHJpbmcKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICBkZWYgY2Fub25pY2FsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBzYW1lIERlY2ltYWwgb2JqZWN0LgotCi0gICAgICAgIEFzIHdlIGRvIG5vdCBoYXZlIGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBzYW1lIG51bWJlciwgdGhlCi0gICAgICAgIHJlY2VpdmVkIG9iamVjdCBhbHJlYWR5IGlzIGluIGl0cyBjYW5vbmljYWwgZm9ybS4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgY29tcGFyZV9zaWduYWwoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHNlbGYgdG8gdGhlIG90aGVyIG9wZXJhbmQgbnVtZXJpY2FsbHkuCi0KLSAgICAgICAgSXQncyBwcmV0dHkgbXVjaCBsaWtlIGNvbXBhcmUoKSwgYnV0IGFsbCBOYU5zIHNpZ25hbCwgd2l0aCBzaWduYWxpbmcKLSAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCi0gICAgICAgICIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0ID0gVHJ1ZSkKLSAgICAgICAgYW5zID0gc2VsZi5fY29tcGFyZV9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0gICAgICAgIHJldHVybiBzZWxmLmNvbXBhcmUob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKLQotICAgIGRlZiBjb21wYXJlX3RvdGFsKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlcyBzZWxmIHRvIG90aGVyIHVzaW5nIHRoZSBhYnN0cmFjdCByZXByZXNlbnRhdGlvbnMuCi0KLSAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbAotICAgICAgICB2YWx1ZS4gTm90ZSB0aGF0IGEgdG90YWwgb3JkZXJpbmcgaXMgZGVmaW5lZCBmb3IgYWxsIHBvc3NpYmxlIGFic3RyYWN0Ci0gICAgICAgIHJlcHJlc2VudGF0aW9ucy4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICAjIGlmIG9uZSBpcyBuZWdhdGl2ZSBhbmQgdGhlIG90aGVyIGlzIHBvc2l0aXZlLCBpdCdzIGVhc3kKLSAgICAgICAgaWYgc2VsZi5fc2lnbiBhbmQgbm90IG90aGVyLl9zaWduOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICBpZiBub3Qgc2VsZi5fc2lnbiBhbmQgb3RoZXIuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICBzaWduID0gc2VsZi5fc2lnbgotCi0gICAgICAgICMgbGV0J3MgaGFuZGxlIGJvdGggTmFOIHR5cGVzCi0gICAgICAgIHNlbGZfbmFuID0gc2VsZi5faXNuYW4oKQotICAgICAgICBvdGhlcl9uYW4gPSBvdGhlci5faXNuYW4oKQotICAgICAgICBpZiBzZWxmX25hbiBvciBvdGhlcl9uYW46Ci0gICAgICAgICAgICBpZiBzZWxmX25hbiA9PSBvdGhlcl9uYW46Ci0gICAgICAgICAgICAgICAgIyBjb21wYXJlIHBheWxvYWRzIGFzIHRob3VnaCB0aGV5J3JlIGludGVnZXJzCi0gICAgICAgICAgICAgICAgc2VsZl9rZXkgPSBsZW4oc2VsZi5faW50KSwgc2VsZi5faW50Ci0gICAgICAgICAgICAgICAgb3RoZXJfa2V5ID0gbGVuKG90aGVyLl9pbnQpLCBvdGhlci5faW50Ci0gICAgICAgICAgICAgICAgaWYgc2VsZl9rZXkgPCBvdGhlcl9rZXk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgICAgIGlmIHNlbGZfa2V5ID4gb3RoZXJfa2V5OgotICAgICAgICAgICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gX1plcm8KLQotICAgICAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgb3RoZXJfbmFuID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfT25lCi0gICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmX25hbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgICAgIGlmIG90aGVyX25hbiA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgICAgICAgICAgaWYgc2VsZl9uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgICAgICAgICBpZiBvdGhlcl9uYW4gPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZU9uZQotCi0gICAgICAgIGlmIHNlbGYgPCBvdGhlcjoKLSAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgaWYgc2VsZiA+IG90aGVyOgotICAgICAgICAgICAgcmV0dXJuIF9PbmUKLQotICAgICAgICBpZiBzZWxmLl9leHAgPCBvdGhlci5fZXhwOgotICAgICAgICAgICAgaWYgc2lnbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gX09uZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX05lZ2F0aXZlT25lCi0gICAgICAgIGlmIHNlbGYuX2V4cCA+IG90aGVyLl9leHA6Ci0gICAgICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVPbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9PbmUKLSAgICAgICAgcmV0dXJuIF9aZXJvCi0KLQotICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQ29tcGFyZXMgc2VsZiB0byBvdGhlciB1c2luZyBhYnN0cmFjdCByZXByLiwgaWdub3Jpbmcgc2lnbi4KLQotICAgICAgICBMaWtlIGNvbXBhcmVfdG90YWwsIGJ1dCB3aXRoIG9wZXJhbmQncyBzaWduIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4KLSAgICAgICAgIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBzID0gc2VsZi5jb3B5X2FicygpCi0gICAgICAgIG8gPSBvdGhlci5jb3B5X2FicygpCi0gICAgICAgIHJldHVybiBzLmNvbXBhcmVfdG90YWwobykKLQotICAgIGRlZiBjb3B5X2FicyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBhIGNvcHkgd2l0aCB0aGUgc2lnbiBzZXQgdG8gMC4gIiIiCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHNlbGYuX2ludCwgc2VsZi5fZXhwLCBzZWxmLl9pc19zcGVjaWFsKQotCi0gICAgZGVmIGNvcHlfbmVnYXRlKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSB3aXRoIHRoZSBzaWduIGludmVydGVkLiIiIgotICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgc2VsZi5faW50LCBzZWxmLl9leHAsIHNlbGYuX2lzX3NwZWNpYWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgxLCBzZWxmLl9pbnQsIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKLQotICAgIGRlZiBjb3B5X3NpZ24oc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgc2VsZiB3aXRoIHRoZSBzaWduIG9mIG90aGVyLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKG90aGVyLl9zaWduLCBzZWxmLl9pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2V4cCwgc2VsZi5faXNfc3BlY2lhbCkKLQotICAgIGRlZiBleHAoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBlICoqIHNlbGYuIiIiCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgICMgZXhwKE5hTikgPSBOYU4KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGV4cCgtSW5maW5pdHkpID0gMAotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gX1plcm8KLQotICAgICAgICAjIGV4cCgwKSA9IDEKLSAgICAgICAgaWYgbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gX09uZQotCi0gICAgICAgICMgZXhwKEluZmluaXR5KSA9IEluZmluaXR5Ci0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIHRoZSByZXN1bHQgaXMgbm93IGd1YXJhbnRlZWQgdG8gYmUgaW5leGFjdCAodGhlIHRydWUKLSAgICAgICAgIyBtYXRoZW1hdGljYWwgcmVzdWx0IGlzIHRyYW5zY2VuZGVudGFsKS4gVGhlcmUncyBubyBuZWVkIHRvCi0gICAgICAgICMgcmFpc2UgUm91bmRlZCBhbmQgSW5leGFjdCBoZXJlLS0tdGhleSdsbCBhbHdheXMgYmUgcmFpc2VkIGFzCi0gICAgICAgICMgYSByZXN1bHQgb2YgdGhlIGNhbGwgdG8gX2ZpeC4KLSAgICAgICAgcCA9IGNvbnRleHQucHJlYwotICAgICAgICBhZGogPSBzZWxmLmFkanVzdGVkKCkKLQotICAgICAgICAjIHdlIG9ubHkgbmVlZCB0byBkbyBhbnkgY29tcHV0YXRpb24gZm9yIHF1aXRlIGEgc21hbGwgcmFuZ2UKLSAgICAgICAgIyBvZiBhZGp1c3RlZCBleHBvbmVudHMtLS1mb3IgZXhhbXBsZSwgLTI5IDw9IGFkaiA8PSAxMCBmb3IKLSAgICAgICAgIyB0aGUgZGVmYXVsdCBjb250ZXh0LiAgRm9yIHNtYWxsZXIgZXhwb25lbnQgdGhlIHJlc3VsdCBpcwotICAgICAgICAjIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gMSBhdCB0aGUgZ2l2ZW4gcHJlY2lzaW9uLCB3aGlsZSBmb3IKLSAgICAgICAgIyBsYXJnZXIgZXhwb25lbnQgdGhlIHJlc3VsdCBlaXRoZXIgb3ZlcmZsb3dzIG9yIHVuZGVyZmxvd3MuCi0gICAgICAgIGlmIHNlbGYuX3NpZ24gPT0gMCBhbmQgYWRqID4gbGVuKHN0cigoY29udGV4dC5FbWF4KzEpKjMpKToKLSAgICAgICAgICAgICMgb3ZlcmZsb3cKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBjb250ZXh0LkVtYXgrMSkKLSAgICAgICAgZWxpZiBzZWxmLl9zaWduID09IDEgYW5kIGFkaiA+IGxlbihzdHIoKC1jb250ZXh0LkV0aW55KCkrMSkqMykpOgotICAgICAgICAgICAgIyB1bmRlcmZsb3cgdG8gMAotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKQotICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMCBhbmQgYWRqIDwgLXA6Ci0gICAgICAgICAgICAjIHArMSBkaWdpdHM7IGZpbmFsIHJvdW5kIHdpbGwgcmFpc2UgY29ycmVjdCBmbGFncwotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCAnMScgKyAnMCcqKHAtMSkgKyAnMScsIC1wKQotICAgICAgICBlbGlmIHNlbGYuX3NpZ24gPT0gMSBhbmQgYWRqIDwgLXAtMToKLSAgICAgICAgICAgICMgcCsxIGRpZ2l0czsgZmluYWwgcm91bmQgd2lsbCByYWlzZSBjb3JyZWN0IGZsYWdzCi0gICAgICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKDAsICc5JyoocCsxKSwgLXAtMSkKLSAgICAgICAgIyBnZW5lcmFsIGNhc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICAgICAgaWYgb3Auc2lnbiA9PSAxOgotICAgICAgICAgICAgICAgIGMgPSAtYwotCi0gICAgICAgICAgICAjIGNvbXB1dGUgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0OiBpbmNyZWFzZSBwcmVjaXNpb24gYnkKLSAgICAgICAgICAgICMgMyBkaWdpdHMgYXQgYSB0aW1lIHVudGlsIHdlIGdldCBhbiB1bmFtYmlndW91c2x5Ci0gICAgICAgICAgICAjIHJvdW5kYWJsZSByZXN1bHQKLSAgICAgICAgICAgIGV4dHJhID0gMwotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBjb2VmZiwgZXhwID0gX2RleHAoYywgZSwgcCtleHRyYSkKLSAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihjb2VmZikpLXAtMSkpOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKLQotICAgICAgICAgICAgYW5zID0gX2RlY19mcm9tX3RyaXBsZSgwLCBzdHIoY29lZmYpLCBleHApCi0KLSAgICAgICAgIyBhdCB0aGlzIHN0YWdlLCBhbnMgc2hvdWxkIHJvdW5kIGNvcnJlY3RseSB3aXRoICphbnkqCi0gICAgICAgICMgcm91bmRpbmcgbW9kZSwgbm90IGp1c3Qgd2l0aCBST1VORF9IQUxGX0VWRU4KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0KLSAgICAgICAgcmV0dXJuIGFucwotCi0gICAgZGVmIGlzX2Nhbm9uaWNhbChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBjYW5vbmljYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cwotICAgICAgICBjYW5vbmljYWwsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMgVHJ1ZSBmb3IgYW55IERlY2ltYWwuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIGlzX2Zpbml0ZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBmaW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKLSAgICAgICAgaW5maW5pdGUgbm9yIGEgTmFOLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9pc19zcGVjaWFsCi0KLSAgICBkZWYgaXNfaW5maW5pdGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgaW5maW5pdGU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ0YnCi0KLSAgICBkZWYgaXNfbmFuKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgcU5hTiBvciBzTmFOOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZXhwIGluICgnbicsICdOJykKLQotICAgIGRlZiBpc19ub3JtYWwoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIG5vcm1hbCBudW1iZXI7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igbm90IHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICByZXR1cm4gY29udGV4dC5FbWluIDw9IHNlbGYuYWRqdXN0ZWQoKQotCi0gICAgZGVmIGlzX3FuYW4oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxdWlldCBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ24nCi0KLSAgICBkZWYgaXNfc2lnbmVkKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fc2lnbiA9PSAxCi0KLSAgICBkZWYgaXNfc25hbihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHNpZ25hbGluZyBOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9leHAgPT0gJ04nCi0KLSAgICBkZWYgaXNfc3Vibm9ybWFsKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgc3Vibm9ybWFsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsIG9yIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgcmV0dXJuIHNlbGYuYWRqdXN0ZWQoKSA8IGNvbnRleHQuRW1pbgotCi0gICAgZGVmIGlzX3plcm8oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLiIiIgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX2lzX3NwZWNpYWwgYW5kIHNlbGYuX2ludCA9PSAnMCcKLQotICAgIGRlZiBfbG5fZXhwX2JvdW5kKHNlbGYpOgotICAgICAgICAiIiJDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxuKCkuCi0gICAgICAgIEluIG90aGVyIHdvcmRzLCBjb21wdXRlIHIgc3VjaCB0aGF0IHNlbGYubG4oKSA+PSAxMCoqci4gIEFzc3VtZXMKLSAgICAgICAgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgotICAgICAgICAiIiIKLQotICAgICAgICAjIGZvciAwLjEgPD0geCA8PSAxMCB3ZSB1c2UgdGhlIGluZXF1YWxpdGllcyAxLTEveCA8PSBsbih4KSA8PSB4LTEKLSAgICAgICAgYWRqID0gc2VsZi5fZXhwICsgbGVuKHNlbGYuX2ludCkgLSAxCi0gICAgICAgIGlmIGFkaiA+PSAxOgotICAgICAgICAgICAgIyBhcmd1bWVudCA+PSAxMDsgd2UgdXNlIDIzLzEwID0gMi4zIGFzIGEgbG93ZXIgYm91bmQgZm9yIGxuKDEwKQotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoYWRqKjIzLy8xMCkpIC0gMQotICAgICAgICBpZiBhZGogPD0gLTI6Ci0gICAgICAgICAgICAjIGFyZ3VtZW50IDw9IDAuMQotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoKC0xLWFkaikqMjMvLzEwKSkgLSAxCi0gICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgYywgZSA9IG9wLmludCwgb3AuZXhwCi0gICAgICAgIGlmIGFkaiA9PSAwOgotICAgICAgICAgICAgIyAxIDwgc2VsZiA8IDEwCi0gICAgICAgICAgICBudW0gPSBzdHIoYy0xMCoqLWUpCi0gICAgICAgICAgICBkZW4gPSBzdHIoYykKLSAgICAgICAgICAgIHJldHVybiBsZW4obnVtKSAtIGxlbihkZW4pIC0gKG51bSA8IGRlbikKLSAgICAgICAgIyBhZGogPT0gLTEsIDAuMSA8PSBzZWxmIDwgMQotICAgICAgICByZXR1cm4gZSArIGxlbihzdHIoMTAqKi1lIC0gYykpIC0gMQotCi0KLSAgICBkZWYgbG4oc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2Ygc2VsZi4iIiIKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgIyBsbihOYU4pID0gTmFOCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMoY29udGV4dD1jb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgIyBsbigwLjApID09IC1JbmZpbml0eQotICAgICAgICBpZiBub3Qgc2VsZjoKLSAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQotCi0gICAgICAgICMgbG4oSW5maW5pdHkpID0gSW5maW5pdHkKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gX0luZmluaXR5Ci0KLSAgICAgICAgIyBsbigxLjApID09IDAuMAotICAgICAgICBpZiBzZWxmID09IF9PbmU6Ci0gICAgICAgICAgICByZXR1cm4gX1plcm8KLQotICAgICAgICAjIGxuKG5lZ2F0aXZlKSByYWlzZXMgSW52YWxpZE9wZXJhdGlvbgotICAgICAgICBpZiBzZWxmLl9zaWduID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG4gb2YgYSBuZWdhdGl2ZSB2YWx1ZScpCi0KLSAgICAgICAgIyByZXN1bHQgaXMgaXJyYXRpb25hbCwgc28gbmVjZXNzYXJpbHkgaW5leGFjdAotICAgICAgICBvcCA9IF9Xb3JrUmVwKHNlbGYpCi0gICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICBwID0gY29udGV4dC5wcmVjCi0KLSAgICAgICAgIyBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQ6IHJlcGVhdGVkbHkgaW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDMKLSAgICAgICAgIyB1bnRpbCB3ZSBnZXQgYW4gdW5hbWJpZ3VvdXNseSByb3VuZGFibGUgcmVzdWx0Ci0gICAgICAgIHBsYWNlcyA9IHAgLSBzZWxmLl9sbl9leHBfYm91bmQoKSArIDIgIyBhdCBsZWFzdCBwKzMgcGxhY2VzCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjb2VmZiA9IF9kbG9nKGMsIGUsIHBsYWNlcykKLSAgICAgICAgICAgICMgYXNzZXJ0IGxlbihzdHIoYWJzKGNvZWZmKSkpLXAgPj0gMQotICAgICAgICAgICAgaWYgY29lZmYgJSAoNSoxMCoqKGxlbihzdHIoYWJzKGNvZWZmKSkpLXAtMSkpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwbGFjZXMgKz0gMwotICAgICAgICBhbnMgPSBfZGVjX2Zyb21fdHJpcGxlKGludChjb2VmZjwwKSwgc3RyKGFicyhjb2VmZikpLCAtcGxhY2VzKQotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0Ll9zaGFsbG93X2NvcHkoKQotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9IQUxGX0VWRU4pCi0gICAgICAgIGFucyA9IGFucy5fZml4KGNvbnRleHQpCi0gICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZwotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgX2xvZzEwX2V4cF9ib3VuZChzZWxmKToKLSAgICAgICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZi5sb2cxMCgpLgotICAgICAgICBJbiBvdGhlciB3b3JkcywgZmluZCByIHN1Y2ggdGhhdCBzZWxmLmxvZzEwKCkgPj0gMTAqKnIuCi0gICAgICAgIEFzc3VtZXMgdGhhdCBzZWxmIGlzIGZpbml0ZSBhbmQgcG9zaXRpdmUgYW5kIHRoYXQgc2VsZiAhPSAxLgotICAgICAgICAiIiIKLQotICAgICAgICAjIEZvciB4ID49IDEwIG9yIHggPCAwLjEgd2Ugb25seSBuZWVkIGEgYm91bmQgb24gdGhlIGludGVnZXIKLSAgICAgICAgIyBwYXJ0IG9mIGxvZzEwKHNlbGYpLCBhbmQgdGhpcyBjb21lcyBkaXJlY3RseSBmcm9tIHRoZQotICAgICAgICAjIGV4cG9uZW50IG9mIHguICBGb3IgMC4xIDw9IHggPD0gMTAgd2UgdXNlIHRoZSBpbmVxdWFsaXRpZXMKLSAgICAgICAgIyAxLTEveCA8PSBsb2coeCkgPD0geC0xLiBJZiB4ID4gMSB3ZSBoYXZlIHxsb2cxMCh4KXwgPgotICAgICAgICAjICgxLTEveCkvMi4zMSA+IDAuICBJZiB4IDwgMSB0aGVuIHxsb2cxMCh4KXwgPiAoMS14KS8yLjMxID4gMAotCi0gICAgICAgIGFkaiA9IHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMQotICAgICAgICBpZiBhZGogPj0gMToKLSAgICAgICAgICAgICMgc2VsZiA+PSAxMAotICAgICAgICAgICAgcmV0dXJuIGxlbihzdHIoYWRqKSktMQotICAgICAgICBpZiBhZGogPD0gLTI6Ci0gICAgICAgICAgICAjIHNlbGYgPCAwLjEKLSAgICAgICAgICAgIHJldHVybiBsZW4oc3RyKC0xLWFkaikpLTEKLSAgICAgICAgb3AgPSBfV29ya1JlcChzZWxmKQotICAgICAgICBjLCBlID0gb3AuaW50LCBvcC5leHAKLSAgICAgICAgaWYgYWRqID09IDA6Ci0gICAgICAgICAgICAjIDEgPCBzZWxmIDwgMTAKLSAgICAgICAgICAgIG51bSA9IHN0cihjLTEwKiotZSkKLSAgICAgICAgICAgIGRlbiA9IHN0cigyMzEqYykKLSAgICAgICAgICAgIHJldHVybiBsZW4obnVtKSAtIGxlbihkZW4pIC0gKG51bSA8IGRlbikgKyAyCi0gICAgICAgICMgYWRqID09IC0xLCAwLjEgPD0gc2VsZiA8IDEKLSAgICAgICAgbnVtID0gc3RyKDEwKiotZS1jKQotICAgICAgICByZXR1cm4gbGVuKG51bSkgKyBlIC0gKG51bSA8ICIyMzEiKSAtIDEKLQotICAgIGRlZiBsb2cxMChzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiBzZWxmLiIiIgotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGxvZzEwKE5hTikgPSBOYU4KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICAjIGxvZzEwKDAuMCkgPT0gLUluZmluaXR5Ci0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIF9OZWdhdGl2ZUluZmluaXR5Ci0KLSAgICAgICAgIyBsb2cxMChJbmZpbml0eSkgPSBJbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBfSW5maW5pdHkKLQotICAgICAgICAjIGxvZzEwKG5lZ2F0aXZlIG9yIC1JbmZpbml0eSkgcmFpc2VzIEludmFsaWRPcGVyYXRpb24KLSAgICAgICAgaWYgc2VsZi5fc2lnbiA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvZzEwIG9mIGEgbmVnYXRpdmUgdmFsdWUnKQotCi0gICAgICAgICMgbG9nMTAoMTAqKm4pID0gbgotICAgICAgICBpZiBzZWxmLl9pbnRbMF0gPT0gJzEnIGFuZCBzZWxmLl9pbnRbMTpdID09ICcwJyoobGVuKHNlbGYuX2ludCkgLSAxKToKLSAgICAgICAgICAgICMgYW5zd2VyIG1heSBuZWVkIHJvdW5kaW5nCi0gICAgICAgICAgICBhbnMgPSBEZWNpbWFsKHNlbGYuX2V4cCArIGxlbihzZWxmLl9pbnQpIC0gMSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgcmVzdWx0IGlzIGlycmF0aW9uYWwsIHNvIG5lY2Vzc2FyaWx5IGluZXhhY3QKLSAgICAgICAgICAgIG9wID0gX1dvcmtSZXAoc2VsZikKLSAgICAgICAgICAgIGMsIGUgPSBvcC5pbnQsIG9wLmV4cAotICAgICAgICAgICAgcCA9IGNvbnRleHQucHJlYwotCi0gICAgICAgICAgICAjIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdDogcmVwZWF0ZWRseSBpbmNyZWFzZSBwcmVjaXNpb24KLSAgICAgICAgICAgICMgdW50aWwgcmVzdWx0IGlzIHVuYW1iaWd1b3VzbHkgcm91bmRhYmxlCi0gICAgICAgICAgICBwbGFjZXMgPSBwLXNlbGYuX2xvZzEwX2V4cF9ib3VuZCgpKzIKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgY29lZmYgPSBfZGxvZzEwKGMsIGUsIHBsYWNlcykKLSAgICAgICAgICAgICAgICAjIGFzc2VydCBsZW4oc3RyKGFicyhjb2VmZikpKS1wID49IDEKLSAgICAgICAgICAgICAgICBpZiBjb2VmZiAlICg1KjEwKioobGVuKHN0cihhYnMoY29lZmYpKSktcC0xKSk6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgcGxhY2VzICs9IDMKLSAgICAgICAgICAgIGFucyA9IF9kZWNfZnJvbV90cmlwbGUoaW50KGNvZWZmPDApLCBzdHIoYWJzKGNvZWZmKSksIC1wbGFjZXMpCi0KLSAgICAgICAgY29udGV4dCA9IGNvbnRleHQuX3NoYWxsb3dfY29weSgpCi0gICAgICAgIHJvdW5kaW5nID0gY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0hBTEZfRVZFTikKLSAgICAgICAgYW5zID0gYW5zLl9maXgoY29udGV4dCkKLSAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCi0gICAgICAgIHJldHVybiBhbnMKLQotICAgIGRlZiBsb2diKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIiBSZXR1cm5zIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHNlbGYncyBNU0QuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQotICAgICAgICBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBzZWxmIChhcyB0aG91Z2ggaXQgd2VyZSB0cnVuY2F0ZWQKLSAgICAgICAgdG8gYSBzaW5nbGUgZGlnaXQgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIHZhbHVlIG9mIHRoYXQgZGlnaXQgYW5kCi0gICAgICAgIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCi0gICAgICAgICIiIgotICAgICAgICAjIGxvZ2IoTmFOKSA9IE5hTgotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICAjIGxvZ2IoKy8tSW5mKSA9ICtJbmYKLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQotCi0gICAgICAgICMgbG9nYigwKSA9IC1JbmYsIERpdmlzaW9uQnlaZXJvCi0gICAgICAgIGlmIG5vdCBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKERpdmlzaW9uQnlaZXJvLCAnbG9nYigwKScsIDEpCi0KLSAgICAgICAgIyBvdGhlcndpc2UsIHNpbXBseSByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHNlbGYsIGFzIGEKLSAgICAgICAgIyBEZWNpbWFsLiAgTm90ZSB0aGF0IG5vIGF0dGVtcHQgaXMgbWFkZSB0byBmaXQgdGhlIHJlc3VsdAotICAgICAgICAjIGludG8gdGhlIGN1cnJlbnQgY29udGV4dC4KLSAgICAgICAgYW5zID0gRGVjaW1hbChzZWxmLmFkanVzdGVkKCkpCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIF9pc2xvZ2ljYWwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBsb2dpY2FsIG9wZXJhbmQuCi0KLSAgICAgICAgRm9yIGJlaW5nIGxvZ2ljYWwsIGl0IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyIHdpdGggYSBzaWduIG9mIDAsCi0gICAgICAgIGFuIGV4cG9uZW50IG9mIDAsIGFuZCBhIGNvZWZmaWNpZW50IHdob3NlIGRpZ2l0cyBtdXN0IGFsbCBiZQotICAgICAgICBlaXRoZXIgMCBvciAxLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5fc2lnbiAhPSAwIG9yIHNlbGYuX2V4cCAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGZvciBkaWcgaW4gc2VsZi5faW50OgotICAgICAgICAgICAgaWYgZGlnIG5vdCBpbiAnMDEnOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9maWxsX2xvZ2ljYWwoc2VsZiwgY29udGV4dCwgb3BhLCBvcGIpOgotICAgICAgICBkaWYgPSBjb250ZXh0LnByZWMgLSBsZW4ob3BhKQotICAgICAgICBpZiBkaWYgPiAwOgotICAgICAgICAgICAgb3BhID0gJzAnKmRpZiArIG9wYQotICAgICAgICBlbGlmIGRpZiA8IDA6Ci0gICAgICAgICAgICBvcGEgPSBvcGFbLWNvbnRleHQucHJlYzpdCi0gICAgICAgIGRpZiA9IGNvbnRleHQucHJlYyAtIGxlbihvcGIpCi0gICAgICAgIGlmIGRpZiA+IDA6Ci0gICAgICAgICAgICBvcGIgPSAnMCcqZGlmICsgb3BiCi0gICAgICAgIGVsaWYgZGlmIDwgMDoKLSAgICAgICAgICAgIG9wYiA9IG9wYlstY29udGV4dC5wcmVjOl0KLSAgICAgICAgcmV0dXJuIG9wYSwgb3BiCi0KLSAgICBkZWYgbG9naWNhbF9hbmQoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkFwcGxpZXMgYW4gJ2FuZCcgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2lzbG9naWNhbCgpIG9yIG5vdCBvdGhlci5faXNsb2dpY2FsKCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLQotICAgICAgICAjIGZpbGwgdG8gY29udGV4dC5wcmVjCi0gICAgICAgIChvcGEsIG9wYikgPSBzZWxmLl9maWxsX2xvZ2ljYWwoY29udGV4dCwgc2VsZi5faW50LCBvdGhlci5faW50KQotCi0gICAgICAgICMgbWFrZSB0aGUgb3BlcmF0aW9uLCBhbmQgY2xlYW4gc3RhcnRpbmcgemVyb2VzCi0gICAgICAgIHJlc3VsdCA9ICIiLmpvaW4oW3N0cihpbnQoYSkmaW50KGIpKSBmb3IgYSxiIGluIHppcChvcGEsb3BiKV0pCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsIHJlc3VsdC5sc3RyaXAoJzAnKSBvciAnMCcsIDApCi0KLSAgICBkZWYgbG9naWNhbF9pbnZlcnQoc2VsZiwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiSW52ZXJ0IGFsbCBpdHMgZGlnaXRzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHJldHVybiBzZWxmLmxvZ2ljYWxfeG9yKF9kZWNfZnJvbV90cmlwbGUoMCwnMScqY29udGV4dC5wcmVjLDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQotCi0gICAgZGVmIGxvZ2ljYWxfb3Ioc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkFwcGxpZXMgYW4gJ29yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKLSAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCi0KLSAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKLSAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKXxpbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKLQotICAgIGRlZiBsb2dpY2FsX3hvcihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiQXBwbGllcyBhbiAneG9yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBub3Qgc2VsZi5faXNsb2dpY2FsKCkgb3Igbm90IG90aGVyLl9pc2xvZ2ljYWwoKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgICMgZmlsbCB0byBjb250ZXh0LnByZWMKLSAgICAgICAgKG9wYSwgb3BiKSA9IHNlbGYuX2ZpbGxfbG9naWNhbChjb250ZXh0LCBzZWxmLl9pbnQsIG90aGVyLl9pbnQpCi0KLSAgICAgICAgIyBtYWtlIHRoZSBvcGVyYXRpb24sIGFuZCBjbGVhbiBzdGFydGluZyB6ZXJvZXMKLSAgICAgICAgcmVzdWx0ID0gIiIuam9pbihbc3RyKGludChhKV5pbnQoYikpIGZvciBhLGIgaW4gemlwKG9wYSxvcGIpXSkKLSAgICAgICAgcmV0dXJuIF9kZWNfZnJvbV90cmlwbGUoMCwgcmVzdWx0LmxzdHJpcCgnMCcpIG9yICcwJywgMCkKLQotICAgIGRlZiBtYXhfbWFnKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLiIiIgotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWwgb3Igb3RoZXIuX2lzX3NwZWNpYWw6Ci0gICAgICAgICAgICAjIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXMgbnVtYmVyLCB0aGVuIHRoZQotICAgICAgICAgICAgIyBudW1iZXIgaXMgYWx3YXlzIHJldHVybmVkCi0gICAgICAgICAgICBzbiA9IHNlbGYuX2lzbmFuKCkKLSAgICAgICAgICAgIG9uID0gb3RoZXIuX2lzbmFuKCkKLSAgICAgICAgICAgIGlmIHNuIG9yIG9uOgotICAgICAgICAgICAgICAgIGlmIG9uID09IDEgYW5kIHNuID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9maXgoY29udGV4dCkKLSAgICAgICAgICAgICAgICBpZiBzbiA9PSAxIGFuZCBvbiA9PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotCi0gICAgICAgIGMgPSBzZWxmLmNvcHlfYWJzKCkuX2NtcChvdGhlci5jb3B5X2FicygpKQotICAgICAgICBpZiBjID09IDA6Ci0gICAgICAgICAgICBjID0gc2VsZi5jb21wYXJlX3RvdGFsKG90aGVyKQotCi0gICAgICAgIGlmIGMgPT0gLTE6Ci0gICAgICAgICAgICBhbnMgPSBvdGhlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYW5zID0gc2VsZgotCi0gICAgICAgIHJldHVybiBhbnMuX2ZpeChjb250ZXh0KQotCi0gICAgZGVmIG1pbl9tYWcoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuIiIiCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbCBvciBvdGhlci5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgICMgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1iZXIsIHRoZW4gdGhlCi0gICAgICAgICAgICAjIG51bWJlciBpcyBhbHdheXMgcmV0dXJuZWQKLSAgICAgICAgICAgIHNuID0gc2VsZi5faXNuYW4oKQotICAgICAgICAgICAgb24gPSBvdGhlci5faXNuYW4oKQotICAgICAgICAgICAgaWYgc24gb3Igb246Ci0gICAgICAgICAgICAgICAgaWYgb24gPT0gMSBhbmQgc24gPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICAgICAgICAgIGlmIHNuID09IDEgYW5kIG9uID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci5fZml4KGNvbnRleHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0KLSAgICAgICAgYyA9IHNlbGYuY29weV9hYnMoKS5fY21wKG90aGVyLmNvcHlfYWJzKCkpCi0gICAgICAgIGlmIGMgPT0gMDoKLSAgICAgICAgICAgIGMgPSBzZWxmLmNvbXBhcmVfdG90YWwob3RoZXIpCi0KLSAgICAgICAgaWYgYyA9PSAtMToKLSAgICAgICAgICAgIGFucyA9IHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFucyA9IG90aGVyCi0KLSAgICAgICAgcmV0dXJuIGFucy5fZml4KGNvbnRleHQpCi0KLSAgICBkZWYgbmV4dF9taW51cyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBpdHNlbGYuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAtMToKLSAgICAgICAgICAgIHJldHVybiBfTmVnYXRpdmVJbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gMToKLSAgICAgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICc5Jypjb250ZXh0LnByZWMsIGNvbnRleHQuRXRvcCgpKQotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcoUk9VTkRfRkxPT1IpCi0gICAgICAgIGNvbnRleHQuX2lnbm9yZV9hbGxfZmxhZ3MoKQotICAgICAgICBuZXdfc2VsZiA9IHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICBpZiBuZXdfc2VsZiAhPSBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIG5ld19zZWxmCi0gICAgICAgIHJldHVybiBzZWxmLl9fc3ViX18oX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQotCi0gICAgZGVmIG5leHRfcGx1cyhzZWxmLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBpdHNlbGYuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKGNvbnRleHQ9Y29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIF9JbmZpbml0eQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCkgPT0gLTE6Ci0gICAgICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZSgxLCAnOScqY29udGV4dC5wcmVjLCBjb250ZXh0LkV0b3AoKSkKLQotICAgICAgICBjb250ZXh0ID0gY29udGV4dC5jb3B5KCkKLSAgICAgICAgY29udGV4dC5fc2V0X3JvdW5kaW5nKFJPVU5EX0NFSUxJTkcpCi0gICAgICAgIGNvbnRleHQuX2lnbm9yZV9hbGxfZmxhZ3MoKQotICAgICAgICBuZXdfc2VsZiA9IHNlbGYuX2ZpeChjb250ZXh0KQotICAgICAgICBpZiBuZXdfc2VsZiAhPSBzZWxmOgotICAgICAgICAgICAgcmV0dXJuIG5ld19zZWxmCi0gICAgICAgIHJldHVybiBzZWxmLl9fYWRkX18oX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGNvbnRleHQuRXRpbnkoKS0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KQotCi0gICAgZGVmIG5leHRfdG93YXJkKHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBzZWxmLCBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgY2xvc2VzdCByZXByZXNlbnRhYmxlIG51bWJlciB0byBzZWxmCi0gICAgICAgIChleGNsdWRpbmcgc2VsZikgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIsCi0gICAgICAgIHVubGVzcyBib3RoIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZQotICAgICAgICBudW1lcmljYWxseSBlcXVhbCwgdGhlbiB0aGUgcmVzdWx0IGlzIGEgY29weSBvZiBzZWxmIHdpdGggdGhlCi0gICAgICAgIHNpZ24gc2V0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIG90aGVyLgotICAgICAgICAiIiIKLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgY29tcGFyaXNvbiA9IHNlbGYuX2NtcChvdGhlcikKLSAgICAgICAgaWYgY29tcGFyaXNvbiA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29weV9zaWduKG90aGVyKQotCi0gICAgICAgIGlmIGNvbXBhcmlzb24gPT0gLTE6Ci0gICAgICAgICAgICBhbnMgPSBzZWxmLm5leHRfcGx1cyhjb250ZXh0KQotICAgICAgICBlbHNlOiAjIGNvbXBhcmlzb24gPT0gMQotICAgICAgICAgICAgYW5zID0gc2VsZi5uZXh0X21pbnVzKGNvbnRleHQpCi0KLSAgICAgICAgIyBkZWNpZGUgd2hpY2ggZmxhZ3MgdG8gcmFpc2UgdXNpbmcgdmFsdWUgb2YgYW5zCi0gICAgICAgIGlmIGFucy5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoT3ZlcmZsb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5maW5pdGUgcmVzdWx0IGZyb20gbmV4dF90b3dhcmQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5zLl9zaWduKQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoSW5leGFjdCkKLSAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKFJvdW5kZWQpCi0gICAgICAgIGVsaWYgYW5zLmFkanVzdGVkKCkgPCBjb250ZXh0LkVtaW46Ci0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihVbmRlcmZsb3cpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihTdWJub3JtYWwpCi0gICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbmV4YWN0KQotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoUm91bmRlZCkKLSAgICAgICAgICAgICMgaWYgcHJlY2lzaW9uID09IDEgdGhlbiB3ZSBkb24ndCByYWlzZSBDbGFtcGVkIGZvciBhCi0gICAgICAgICAgICAjIHJlc3VsdCAwRS1FdGlueS4KLSAgICAgICAgICAgIGlmIG5vdCBhbnM6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoQ2xhbXBlZCkKLQotICAgICAgICByZXR1cm4gYW5zCi0KLSAgICBkZWYgbnVtYmVyX2NsYXNzKHNlbGYsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2Ygc2VsZi4KLQotICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKLSAgICAgICAgICBzTmFOCi0gICAgICAgICAgTmFOCi0gICAgICAgICAgLUluZmluaXR5Ci0gICAgICAgICAgLU5vcm1hbAotICAgICAgICAgIC1TdWJub3JtYWwKLSAgICAgICAgICAtWmVybwotICAgICAgICAgICtaZXJvCi0gICAgICAgICAgK1N1Ym5vcm1hbAotICAgICAgICAgICtOb3JtYWwKLSAgICAgICAgICArSW5maW5pdHkKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuaXNfc25hbigpOgotICAgICAgICAgICAgcmV0dXJuICJzTmFOIgotICAgICAgICBpZiBzZWxmLmlzX3FuYW4oKToKLSAgICAgICAgICAgIHJldHVybiAiTmFOIgotICAgICAgICBpbmYgPSBzZWxmLl9pc2luZmluaXR5KCkKLSAgICAgICAgaWYgaW5mID09IDE6Ci0gICAgICAgICAgICByZXR1cm4gIitJbmZpbml0eSIKLSAgICAgICAgaWYgaW5mID09IC0xOgotICAgICAgICAgICAgcmV0dXJuICItSW5maW5pdHkiCi0gICAgICAgIGlmIHNlbGYuaXNfemVybygpOgotICAgICAgICAgICAgaWYgc2VsZi5fc2lnbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gIi1aZXJvIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gIitaZXJvIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIGlmIHNlbGYuaXNfc3Vibm9ybWFsKGNvbnRleHQ9Y29udGV4dCk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zaWduOgotICAgICAgICAgICAgICAgIHJldHVybiAiLVN1Ym5vcm1hbCIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICIrU3Vibm9ybWFsIgotICAgICAgICAjIGp1c3QgYSBub3JtYWwsIHJlZ3VsYXIsIGJvcmluZyBudW1iZXIsIDopCi0gICAgICAgIGlmIHNlbGYuX3NpZ246Ci0gICAgICAgICAgICByZXR1cm4gIi1Ob3JtYWwiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIitOb3JtYWwiCi0KLSAgICBkZWYgcmFkaXgoc2VsZik6Ci0gICAgICAgICIiIkp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KSIiIgotICAgICAgICByZXR1cm4gRGVjaW1hbCgxMCkKLQotICAgIGRlZiByb3RhdGUoc2VsZiwgb3RoZXIsIGNvbnRleHQ9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybnMgYSByb3RhdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuIiIiCi0gICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKLQotICAgICAgICBvdGhlciA9IF9jb252ZXJ0X290aGVyKG90aGVyLCByYWlzZWl0PVRydWUpCi0KLSAgICAgICAgYW5zID0gc2VsZi5fY2hlY2tfbmFucyhvdGhlciwgY29udGV4dCkKLSAgICAgICAgaWYgYW5zOgotICAgICAgICAgICAgcmV0dXJuIGFucwotCi0gICAgICAgIGlmIG90aGVyLl9leHAgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotICAgICAgICBpZiBub3QgKC1jb250ZXh0LnByZWMgPD0gaW50KG90aGVyKSA8PSBjb250ZXh0LnByZWMpOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0KLSAgICAgICAgaWYgc2VsZi5faXNpbmZpbml0eSgpOgotICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoc2VsZikKLQotICAgICAgICAjIGdldCB2YWx1ZXMsIHBhZCBpZiBuZWNlc3NhcnkKLSAgICAgICAgdG9yb3QgPSBpbnQob3RoZXIpCi0gICAgICAgIHJvdGRpZyA9IHNlbGYuX2ludAotICAgICAgICB0b3BhZCA9IGNvbnRleHQucHJlYyAtIGxlbihyb3RkaWcpCi0gICAgICAgIGlmIHRvcGFkID4gMDoKLSAgICAgICAgICAgIHJvdGRpZyA9ICcwJyp0b3BhZCArIHJvdGRpZwotICAgICAgICBlbGlmIHRvcGFkIDwgMDoKLSAgICAgICAgICAgIHJvdGRpZyA9IHJvdGRpZ1stdG9wYWQ6XQotCi0gICAgICAgICMgbGV0J3Mgcm90YXRlIQotICAgICAgICByb3RhdGVkID0gcm90ZGlnW3Rvcm90Ol0gKyByb3RkaWdbOnRvcm90XQotICAgICAgICByZXR1cm4gX2RlY19mcm9tX3RyaXBsZShzZWxmLl9zaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGVkLmxzdHJpcCgnMCcpIG9yICcwJywgc2VsZi5fZXhwKQotCi0gICAgZGVmIHNjYWxlYihzZWxmLCBvdGhlciwgY29udGV4dD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyBzZWxmIG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWUgdG8gaXRzIGV4cC4iIiIKLSAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgotICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLQotICAgICAgICBhbnMgPSBzZWxmLl9jaGVja19uYW5zKG90aGVyLCBjb250ZXh0KQotICAgICAgICBpZiBhbnM6Ci0gICAgICAgICAgICByZXR1cm4gYW5zCi0KLSAgICAgICAgaWYgb3RoZXIuX2V4cCAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuX3JhaXNlX2Vycm9yKEludmFsaWRPcGVyYXRpb24pCi0gICAgICAgIGxpbWluZiA9IC0yICogKGNvbnRleHQuRW1heCArIGNvbnRleHQucHJlYykKLSAgICAgICAgbGltc3VwID0gIDIgKiAoY29udGV4dC5FbWF4ICsgY29udGV4dC5wcmVjKQotICAgICAgICBpZiBub3QgKGxpbWluZiA8PSBpbnQob3RoZXIpIDw9IGxpbXN1cCk6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLQotICAgICAgICBpZiBzZWxmLl9pc2luZmluaXR5KCk6Ci0gICAgICAgICAgICByZXR1cm4gRGVjaW1hbChzZWxmKQotCi0gICAgICAgIGQgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGYuX2ludCwgc2VsZi5fZXhwICsgaW50KG90aGVyKSkKLSAgICAgICAgZCA9IGQuX2ZpeChjb250ZXh0KQotICAgICAgICByZXR1cm4gZAotCi0gICAgZGVmIHNoaWZ0KHNlbGYsIG90aGVyLCBjb250ZXh0PU5vbmUpOgotICAgICAgICAiIiJSZXR1cm5zIGEgc2hpZnRlZCBjb3B5IG9mIHNlbGYsIHZhbHVlLW9mLW90aGVyIHRpbWVzLiIiIgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQotCi0gICAgICAgIGFucyA9IHNlbGYuX2NoZWNrX25hbnMob3RoZXIsIGNvbnRleHQpCi0gICAgICAgIGlmIGFuczoKLSAgICAgICAgICAgIHJldHVybiBhbnMKLQotICAgICAgICBpZiBvdGhlci5fZXhwICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5fcmFpc2VfZXJyb3IoSW52YWxpZE9wZXJhdGlvbikKLSAgICAgICAgaWYgbm90ICgtY29udGV4dC5wcmVjIDw9IGludChvdGhlcikgPD0gY29udGV4dC5wcmVjKToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ll9yYWlzZV9lcnJvcihJbnZhbGlkT3BlcmF0aW9uKQotCi0gICAgICAgIGlmIHNlbGYuX2lzaW5maW5pdHkoKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsKHNlbGYpCi0KLSAgICAgICAgIyBnZXQgdmFsdWVzLCBwYWQgaWYgbmVjZXNzYXJ5Ci0gICAgICAgIHRvcm90ID0gaW50KG90aGVyKQotICAgICAgICByb3RkaWcgPSBzZWxmLl9pbnQKLSAgICAgICAgdG9wYWQgPSBjb250ZXh0LnByZWMgLSBsZW4ocm90ZGlnKQotICAgICAgICBpZiB0b3BhZCA+IDA6Ci0gICAgICAgICAgICByb3RkaWcgPSAnMCcqdG9wYWQgKyByb3RkaWcKLSAgICAgICAgZWxpZiB0b3BhZCA8IDA6Ci0gICAgICAgICAgICByb3RkaWcgPSByb3RkaWdbLXRvcGFkOl0KLQotICAgICAgICAjIGxldCdzIHNoaWZ0IQotICAgICAgICBpZiB0b3JvdCA8IDA6Ci0gICAgICAgICAgICBzaGlmdGVkID0gcm90ZGlnWzp0b3JvdF0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNoaWZ0ZWQgPSByb3RkaWcgKyAnMCcqdG9yb3QKLSAgICAgICAgICAgIHNoaWZ0ZWQgPSBzaGlmdGVkWy1jb250ZXh0LnByZWM6XQotCi0gICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdGVkLmxzdHJpcCgnMCcpIG9yICcwJywgc2VsZi5fZXhwKQotCi0gICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5Ci0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIChzdHIoc2VsZiksKSkKLQotICAgIGRlZiBfX2NvcHlfXyhzZWxmKToKLSAgICAgICAgaWYgdHlwZShzZWxmKSBpcyBEZWNpbWFsOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYgICAgICMgSSdtIGltbXV0YWJsZTsgdGhlcmVmb3JlIEkgYW0gbXkgb3duIGNsb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzdHIoc2VsZikpCi0KLSAgICBkZWYgX19kZWVwY29weV9fKHNlbGYsIG1lbW8pOgotICAgICAgICBpZiB0eXBlKHNlbGYpIGlzIERlY2ltYWw6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZiAgICAgIyBNeSBjb21wb25lbnRzIGFyZSBhbHNvIGltbXV0YWJsZQotICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc3RyKHNlbGYpKQotCi0gICAgIyBQRVAgMzEwMSBzdXBwb3J0LiAgdGhlIF9sb2NhbGVjb252IGtleXdvcmQgYXJndW1lbnQgc2hvdWxkIGJlCi0gICAgIyBjb25zaWRlcmVkIHByaXZhdGU6IGl0J3MgcHJvdmlkZWQgZm9yIGVhc2Ugb2YgdGVzdGluZyBvbmx5LgotICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWNpZmllciwgY29udGV4dD1Ob25lLCBfbG9jYWxlY29udj1Ob25lKToKLSAgICAgICAgIiIiRm9ybWF0IGEgRGVjaW1hbCBpbnN0YW5jZSBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHNwZWNpZmllci4KLQotICAgICAgICBUaGUgc3BlY2lmaWVyIHNob3VsZCBiZSBhIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIsIHdpdGggdGhlCi0gICAgICAgIGZvcm0gZGVzY3JpYmVkIGluIFBFUCAzMTAxLiAgRm9ybWF0dGluZyB0eXBlcyAnZScsICdFJywgJ2YnLAotICAgICAgICAnRicsICdnJywgJ0cnLCAnbicgYW5kICclJyBhcmUgc3VwcG9ydGVkLiAgSWYgdGhlIGZvcm1hdHRpbmcKLSAgICAgICAgdHlwZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvICdnJyBvciAnRycsIGRlcGVuZGluZyBvbiB0aGUKLSAgICAgICAgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBOb3RlOiBQRVAgMzEwMSBzYXlzIHRoYXQgaWYgdGhlIHR5cGUgaXMgbm90IHByZXNlbnQgdGhlbgotICAgICAgICAjIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuCi0gICAgICAgICMgV2UgdGFrZSB0aGUgbGliZXJ0eSBvZiBpZ25vcmluZyB0aGlzIHJlcXVpcmVtZW50IGZvcgotICAgICAgICAjIERlY2ltYWwtLS1pdCdzIHByZXN1bWFibHkgdGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQKLSAgICAgICAgIyBmb3JtYXQoZmxvYXQsICcnKSBiZWhhdmVzIHNpbWlsYXJseSB0byBzdHIoZmxvYXQpLgotICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0KLSAgICAgICAgc3BlYyA9IF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyKHNwZWNpZmllciwgX2xvY2FsZWNvbnY9X2xvY2FsZWNvbnYpCi0KLSAgICAgICAgIyBzcGVjaWFsIHZhbHVlcyBkb24ndCBjYXJlIGFib3V0IHRoZSB0eXBlIG9yIHByZWNpc2lvbgotICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgotICAgICAgICAgICAgc2lnbiA9IF9mb3JtYXRfc2lnbihzZWxmLl9zaWduLCBzcGVjKQotICAgICAgICAgICAgYm9keSA9IHN0cihzZWxmLmNvcHlfYWJzKCkpCi0gICAgICAgICAgICBpZiBzcGVjWyd0eXBlJ10gPT0gJyUnOgotICAgICAgICAgICAgICAgIGJvZHkgKz0gJyUnCi0gICAgICAgICAgICByZXR1cm4gX2Zvcm1hdF9hbGlnbihzaWduLCBib2R5LCBzcGVjKQotCi0gICAgICAgICMgYSB0eXBlIG9mIE5vbmUgZGVmYXVsdHMgdG8gJ2cnIG9yICdHJywgZGVwZW5kaW5nIG9uIGNvbnRleHQKLSAgICAgICAgaWYgc3BlY1sndHlwZSddIGlzIE5vbmU6Ci0gICAgICAgICAgICBzcGVjWyd0eXBlJ10gPSBbJ2cnLCAnRyddW2NvbnRleHQuY2FwaXRhbHNdCi0KLSAgICAgICAgIyBpZiB0eXBlIGlzICclJywgYWRqdXN0IGV4cG9uZW50IG9mIHNlbGYgYWNjb3JkaW5nbHkKLSAgICAgICAgaWYgc3BlY1sndHlwZSddID09ICclJzoKLSAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sIHNlbGYuX2ludCwgc2VsZi5fZXhwKzIpCi0KLSAgICAgICAgIyByb3VuZCBpZiBuZWNlc3NhcnksIHRha2luZyByb3VuZGluZyBtb2RlIGZyb20gdGhlIGNvbnRleHQKLSAgICAgICAgcm91bmRpbmcgPSBjb250ZXh0LnJvdW5kaW5nCi0gICAgICAgIHByZWNpc2lvbiA9IHNwZWNbJ3ByZWNpc2lvbiddCi0gICAgICAgIGlmIHByZWNpc2lvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgotICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yb3VuZChwcmVjaXNpb24rMSwgcm91bmRpbmcpCi0gICAgICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKLSAgICAgICAgICAgICAgICBzZWxmID0gc2VsZi5fcmVzY2FsZSgtcHJlY2lzaW9uLCByb3VuZGluZykKLSAgICAgICAgICAgIGVsaWYgc3BlY1sndHlwZSddIGluICdnRycgYW5kIGxlbihzZWxmLl9pbnQpID4gcHJlY2lzaW9uOgotICAgICAgICAgICAgICAgIHNlbGYgPSBzZWxmLl9yb3VuZChwcmVjaXNpb24sIHJvdW5kaW5nKQotICAgICAgICAjIHNwZWNpYWwgY2FzZTogemVyb3Mgd2l0aCBhIHBvc2l0aXZlIGV4cG9uZW50IGNhbid0IGJlCi0gICAgICAgICMgcmVwcmVzZW50ZWQgaW4gZml4ZWQgcG9pbnQ7IHJlc2NhbGUgdGhlbSB0byAwZTAuCi0gICAgICAgIGlmIG5vdCBzZWxmIGFuZCBzZWxmLl9leHAgPiAwIGFuZCBzcGVjWyd0eXBlJ10gaW4gJ2ZGJSc6Ci0gICAgICAgICAgICBzZWxmID0gc2VsZi5fcmVzY2FsZSgwLCByb3VuZGluZykKLQotICAgICAgICAjIGZpZ3VyZSBvdXQgcGxhY2VtZW50IG9mIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAgICAgIGxlZnRkaWdpdHMgPSBzZWxmLl9leHAgKyBsZW4oc2VsZi5faW50KQotICAgICAgICBpZiBzcGVjWyd0eXBlJ10gaW4gJ2VFJzoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmIGFuZCBwcmVjaXNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxIC0gcHJlY2lzaW9uCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRvdHBsYWNlID0gMQotICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZkYlJzoKLSAgICAgICAgICAgIGRvdHBsYWNlID0gbGVmdGRpZ2l0cwotICAgICAgICBlbGlmIHNwZWNbJ3R5cGUnXSBpbiAnZ0cnOgotICAgICAgICAgICAgaWYgc2VsZi5fZXhwIDw9IDAgYW5kIGxlZnRkaWdpdHMgPiAtNjoKLSAgICAgICAgICAgICAgICBkb3RwbGFjZSA9IGxlZnRkaWdpdHMKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZG90cGxhY2UgPSAxCi0KLSAgICAgICAgIyBmaW5kIGRpZ2l0cyBiZWZvcmUgYW5kIGFmdGVyIGRlY2ltYWwgcG9pbnQsIGFuZCBnZXQgZXhwb25lbnQKLSAgICAgICAgaWYgZG90cGxhY2UgPCAwOgotICAgICAgICAgICAgaW50cGFydCA9ICcwJwotICAgICAgICAgICAgZnJhY3BhcnQgPSAnMCcqKC1kb3RwbGFjZSkgKyBzZWxmLl9pbnQKLSAgICAgICAgZWxpZiBkb3RwbGFjZSA+IGxlbihzZWxmLl9pbnQpOgotICAgICAgICAgICAgaW50cGFydCA9IHNlbGYuX2ludCArICcwJyooZG90cGxhY2UtbGVuKHNlbGYuX2ludCkpCi0gICAgICAgICAgICBmcmFjcGFydCA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbnRwYXJ0ID0gc2VsZi5faW50Wzpkb3RwbGFjZV0gb3IgJzAnCi0gICAgICAgICAgICBmcmFjcGFydCA9IHNlbGYuX2ludFtkb3RwbGFjZTpdCi0gICAgICAgIGV4cCA9IGxlZnRkaWdpdHMtZG90cGxhY2UKLQotICAgICAgICAjIGRvbmUgd2l0aCB0aGUgZGVjaW1hbC1zcGVjaWZpYyBzdHVmZjsgIGhhbmQgb3ZlciB0aGUgcmVzdAotICAgICAgICAjIG9mIHRoZSBmb3JtYXR0aW5nIHRvIHRoZSBfZm9ybWF0X251bWJlciBmdW5jdGlvbgotICAgICAgICByZXR1cm4gX2Zvcm1hdF9udW1iZXIoc2VsZi5fc2lnbiwgaW50cGFydCwgZnJhY3BhcnQsIGV4cCwgc3BlYykKLQotZGVmIF9kZWNfZnJvbV90cmlwbGUoc2lnbiwgY29lZmZpY2llbnQsIGV4cG9uZW50LCBzcGVjaWFsPUZhbHNlKToKLSAgICAiIiJDcmVhdGUgYSBkZWNpbWFsIGluc3RhbmNlIGRpcmVjdGx5LCB3aXRob3V0IGFueSB2YWxpZGF0aW9uLAotICAgIG5vcm1hbGl6YXRpb24gKGUuZy4gcmVtb3ZhbCBvZiBsZWFkaW5nIHplcm9zKSBvciBhcmd1bWVudAotICAgIGNvbnZlcnNpb24uCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIGZvciAqaW50ZXJuYWwgdXNlIG9ubHkqLgotICAgICIiIgotCi0gICAgc2VsZiA9IG9iamVjdC5fX25ld19fKERlY2ltYWwpCi0gICAgc2VsZi5fc2lnbiA9IHNpZ24KLSAgICBzZWxmLl9pbnQgPSBjb2VmZmljaWVudAotICAgIHNlbGYuX2V4cCA9IGV4cG9uZW50Ci0gICAgc2VsZi5faXNfc3BlY2lhbCA9IHNwZWNpYWwKLQotICAgIHJldHVybiBzZWxmCi0KLSMgUmVnaXN0ZXIgRGVjaW1hbCBhcyBhIGtpbmQgb2YgTnVtYmVyIChhbiBhYnN0cmFjdCBiYXNlIGNsYXNzKS4KLSMgSG93ZXZlciwgZG8gbm90IHJlZ2lzdGVyIGl0IGFzIFJlYWwgKGJlY2F1c2UgRGVjaW1hbHMgYXJlIG5vdAotIyBpbnRlcm9wZXJhYmxlIHdpdGggZmxvYXRzKS4KLV9udW1iZXJzLk51bWJlci5yZWdpc3RlcihEZWNpbWFsKQotCi0KLSMjIyMjIENvbnRleHQgY2xhc3MgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1jbGFzcyBfQ29udGV4dE1hbmFnZXIob2JqZWN0KToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgY2xhc3MgdG8gc3VwcG9ydCBsb2NhbGNvbnRleHQoKS4KLQotICAgICAgU2V0cyBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gX19lbnRlcl9fKCkgYW5kIHJlc3RvcmVzCi0gICAgICB0aGUgcHJldmlvdXMgZGVjaW1hbCBjb250ZXh0IGluIF9fZXhpdF9fKCkKLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmV3X2NvbnRleHQpOgotICAgICAgICBzZWxmLm5ld19jb250ZXh0ID0gbmV3X2NvbnRleHQuY29weSgpCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF9jb250ZXh0ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHNldGNvbnRleHQoc2VsZi5uZXdfY29udGV4dCkKLSAgICAgICAgcmV0dXJuIHNlbGYubmV3X2NvbnRleHQKLSAgICBkZWYgX19leGl0X18oc2VsZiwgdCwgdiwgdGIpOgotICAgICAgICBzZXRjb250ZXh0KHNlbGYuc2F2ZWRfY29udGV4dCkKLQotY2xhc3MgQ29udGV4dChvYmplY3QpOgotICAgICIiIkNvbnRhaW5zIHRoZSBjb250ZXh0IGZvciBhIERlY2ltYWwgaW5zdGFuY2UuCi0KLSAgICBDb250YWluczoKLSAgICBwcmVjIC0gcHJlY2lzaW9uIChmb3IgdXNlIGluIHJvdW5kaW5nLCBkaXZpc2lvbiwgc3F1YXJlIHJvb3RzLi4pCi0gICAgcm91bmRpbmcgLSByb3VuZGluZyB0eXBlIChob3cgeW91IHJvdW5kKQotICAgIHRyYXBzIC0gSWYgdHJhcHNbZXhjZXB0aW9uXSA9IDEsIHRoZW4gdGhlIGV4Y2VwdGlvbiBpcwotICAgICAgICAgICAgICAgICAgICByYWlzZWQgd2hlbiBpdCBpcyBjYXVzZWQuICBPdGhlcndpc2UsIGEgdmFsdWUgaXMKLSAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0ZWQgaW4uCi0gICAgZmxhZ3MgIC0gV2hlbiBhbiBleGNlcHRpb24gaXMgY2F1c2VkLCBmbGFnc1tleGNlcHRpb25dIGlzIHNldC4KLSAgICAgICAgICAgICAoV2hldGhlciBvciBub3QgdGhlIHRyYXBfZW5hYmxlciBpcyBzZXQpCi0gICAgICAgICAgICAgU2hvdWxkIGJlIHJlc2V0IGJ5IHVzZXIgb2YgRGVjaW1hbCBpbnN0YW5jZS4KLSAgICBFbWluIC0gICBNaW5pbXVtIGV4cG9uZW50Ci0gICAgRW1heCAtICAgTWF4aW11bSBleHBvbmVudAotICAgIGNhcGl0YWxzIC0gICAgICBJZiAxLCAxKjEwXjEgaXMgcHJpbnRlZCBhcyAxRSsxLgotICAgICAgICAgICAgICAgICAgICBJZiAwLCBwcmludGVkIGFzIDFlMQotICAgIGNsYW1wIC0gIElmIDEsIGNoYW5nZSBleHBvbmVudHMgaWYgdG9vIGhpZ2ggKERlZmF1bHQgMCkKLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lLCBmbGFncz1Ob25lLCB0cmFwcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBfaWdub3JlZF9mbGFncz1Ob25lKToKLSAgICAgICAgIyBTZXQgZGVmYXVsdHM7IGZvciBldmVyeXRoaW5nIGV4Y2VwdCBmbGFncyBhbmQgX2lnbm9yZWRfZmxhZ3MsCi0gICAgICAgICMgaW5oZXJpdCBmcm9tIERlZmF1bHRDb250ZXh0LgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkYyA9IERlZmF1bHRDb250ZXh0Ci0gICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgc2VsZi5wcmVjID0gcHJlYyBpZiBwcmVjIGlzIG5vdCBOb25lIGVsc2UgZGMucHJlYwotICAgICAgICBzZWxmLnJvdW5kaW5nID0gcm91bmRpbmcgaWYgcm91bmRpbmcgaXMgbm90IE5vbmUgZWxzZSBkYy5yb3VuZGluZwotICAgICAgICBzZWxmLkVtaW4gPSBFbWluIGlmIEVtaW4gaXMgbm90IE5vbmUgZWxzZSBkYy5FbWluCi0gICAgICAgIHNlbGYuRW1heCA9IEVtYXggaWYgRW1heCBpcyBub3QgTm9uZSBlbHNlIGRjLkVtYXgKLSAgICAgICAgc2VsZi5jYXBpdGFscyA9IGNhcGl0YWxzIGlmIGNhcGl0YWxzIGlzIG5vdCBOb25lIGVsc2UgZGMuY2FwaXRhbHMKLSAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wIGlmIGNsYW1wIGlzIG5vdCBOb25lIGVsc2UgZGMuY2xhbXAKLQotICAgICAgICBpZiBfaWdub3JlZF9mbGFncyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5faWdub3JlZF9mbGFncyA9IFtdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gX2lnbm9yZWRfZmxhZ3MKLQotICAgICAgICBpZiB0cmFwcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi50cmFwcyA9IGRjLnRyYXBzLmNvcHkoKQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHRyYXBzLCBkaWN0KToKLSAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzICsgdHJhcHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKLQotICAgICAgICBpZiBmbGFncyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QuZnJvbWtleXMoX3NpZ25hbHMsIDApCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZmxhZ3MsIGRpY3QpOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QoKHMsIGludChzIGluIGZsYWdzKSkgZm9yIHMgaW4gX3NpZ25hbHMgKyBmbGFncykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBmbGFncwotCi0gICAgZGVmIF9zZXRfaW50ZWdlcl9jaGVjayhzZWxmLCBuYW1lLCB2YWx1ZSwgdm1pbiwgdm1heCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGFuIGludGVnZXIiICUgbmFtZSkKLSAgICAgICAgaWYgdm1pbiA9PSAnLWluZic6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA+IHZtYXg6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJXMsICVkXS4gZ290OiAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQotICAgICAgICBlbGlmIHZtYXggPT0gJ2luZic6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW46Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgbXVzdCBiZSBpbiBbJWQsICVzXS4gZ290OiAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgdmFsdWUgPCB2bWluIG9yIHZhbHVlID4gdm1heDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJWRdLiBnb3QgJXMiICUgKG5hbWUsIHZtaW4sIHZtYXgsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKLQotICAgIGRlZiBfc2V0X3NpZ25hbF9kaWN0KHNlbGYsIG5hbWUsIGQpOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkLCBkaWN0KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgbXVzdCBiZSBhIHNpZ25hbCBkaWN0IiAlIGQpCi0gICAgICAgIGZvciBrZXkgaW4gZDoKLSAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHNpZ25hbCBkaWN0IiAlIGQpCi0gICAgICAgIGZvciBrZXkgaW4gX3NpZ25hbHM6Ci0gICAgICAgICAgICBpZiBub3Qga2V5IGluIGQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHNpZ25hbCBkaWN0IiAlIGQpCi0gICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgZCkKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgPT0gJ3ByZWMnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAxLCAnaW5mJykKLSAgICAgICAgZWxpZiBuYW1lID09ICdFbWluJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgJy1pbmYnLCAwKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtYXgnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAnaW5mJykKLSAgICAgICAgZWxpZiBuYW1lID09ICdjYXBpdGFscyc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCi0gICAgICAgIGVsaWYgbmFtZSA9PSAnY2xhbXAnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAwLCAxKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ3JvdW5kaW5nJzoKLSAgICAgICAgICAgIGlmIG5vdCB2YWx1ZSBpbiBfcm91bmRpbmdfbW9kZXM6Ci0gICAgICAgICAgICAgICAgIyByYWlzZSBUeXBlRXJyb3IgZXZlbiBmb3Igc3RyaW5ncyB0byBoYXZlIGNvbnNpc3RlbmN5Ci0gICAgICAgICAgICAgICAgIyBhbW9uZyB2YXJpb3VzIGltcGxlbWVudGF0aW9ucy4KLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzOiBpbnZhbGlkIHJvdW5kaW5nIG1vZGUiICUgdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ2ZsYWdzJyBvciBuYW1lID09ICd0cmFwcyc6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X3NpZ25hbF9kaWN0KG5hbWUsIHZhbHVlKQotICAgICAgICBlbGlmIG5hbWUgPT0gJ19pZ25vcmVkX2ZsYWdzJzoKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKLSAgICAgICAgICAgICAgICAiJ2RlY2ltYWwuQ29udGV4dCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIgJSBuYW1lKQotCi0gICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgotICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXMgY2Fubm90IGJlIGRlbGV0ZWQiICUgbmFtZSkKLQotICAgICMgU3VwcG9ydCBmb3IgcGlja2xpbmcsIGNvcHksIGFuZCBkZWVwY29weQotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICBmbGFncyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLmZsYWdzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgdHJhcHMgPSBbc2lnIGZvciBzaWcsIHYgaW4gc2VsZi50cmFwcy5pdGVtcygpIGlmIHZdCi0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sCi0gICAgICAgICAgICAgICAgKHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCi0gICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIGZsYWdzLCB0cmFwcykpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgICIiIlNob3cgdGhlIGN1cnJlbnQgY29udGV4dC4iIiIKLSAgICAgICAgcyA9IFtdCi0gICAgICAgIHMuYXBwZW5kKCdDb250ZXh0KHByZWM9JShwcmVjKWQsIHJvdW5kaW5nPSUocm91bmRpbmcpcywgJwotICAgICAgICAgICAgICAgICAnRW1pbj0lKEVtaW4pZCwgRW1heD0lKEVtYXgpZCwgY2FwaXRhbHM9JShjYXBpdGFscylkLCAnCi0gICAgICAgICAgICAgICAgICdjbGFtcD0lKGNsYW1wKWQnCi0gICAgICAgICAgICAgICAgICUgdmFycyhzZWxmKSkKLSAgICAgICAgbmFtZXMgPSBbZi5fX25hbWVfXyBmb3IgZiwgdiBpbiBzZWxmLmZsYWdzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgcy5hcHBlbmQoJ2ZsYWdzPVsnICsgJywgJy5qb2luKG5hbWVzKSArICddJykKLSAgICAgICAgbmFtZXMgPSBbdC5fX25hbWVfXyBmb3IgdCwgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KLSAgICAgICAgcy5hcHBlbmQoJ3RyYXBzPVsnICsgJywgJy5qb2luKG5hbWVzKSArICddJykKLSAgICAgICAgcmV0dXJuICcsICcuam9pbihzKSArICcpJwotCi0gICAgZGVmIGNsZWFyX2ZsYWdzKHNlbGYpOgotICAgICAgICAiIiJSZXNldCBhbGwgZmxhZ3MgdG8gemVybyIiIgotICAgICAgICBmb3IgZmxhZyBpbiBzZWxmLmZsYWdzOgotICAgICAgICAgICAgc2VsZi5mbGFnc1tmbGFnXSA9IDAKLQotICAgIGRlZiBjbGVhcl90cmFwcyhzZWxmKToKLSAgICAgICAgIiIiUmVzZXQgYWxsIHRyYXBzIHRvIHplcm8iIiIKLSAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi50cmFwczoKLSAgICAgICAgICAgIHNlbGYudHJhcHNbZmxhZ10gPSAwCi0KLSAgICBkZWYgX3NoYWxsb3dfY29weShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHNoYWxsb3cgY29weSBmcm9tIHNlbGYuIiIiCi0gICAgICAgIG5jID0gQ29udGV4dChzZWxmLnByZWMsIHNlbGYucm91bmRpbmcsIHNlbGYuRW1pbiwgc2VsZi5FbWF4LAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgc2VsZi5mbGFncywgc2VsZi50cmFwcywKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MpCi0gICAgICAgIHJldHVybiBuYwotCi0gICAgZGVmIGNvcHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSBkZWVwIGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLmNvcHkoKSwgc2VsZi50cmFwcy5jb3B5KCksCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQotICAgICAgICByZXR1cm4gbmMKLSAgICBfX2NvcHlfXyA9IGNvcHkKLQotICAgIGRlZiBfcmFpc2VfZXJyb3Ioc2VsZiwgY29uZGl0aW9uLCBleHBsYW5hdGlvbiA9IE5vbmUsICphcmdzKToKLSAgICAgICAgIiIiSGFuZGxlcyBhbiBlcnJvcgotCi0gICAgICAgIElmIHRoZSBmbGFnIGlzIGluIF9pZ25vcmVkX2ZsYWdzLCByZXR1cm5zIHRoZSBkZWZhdWx0IHJlc3BvbnNlLgotICAgICAgICBPdGhlcndpc2UsIGl0IHNldHMgdGhlIGZsYWcsIHRoZW4sIGlmIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICAgIHRyYXBfZW5hYmxlciBpcyBzZXQsIGl0IHJlcmFpc2VzIHRoZSBleGNlcHRpb24uICBPdGhlcndpc2UsIGl0IHJldHVybnMKLSAgICAgICAgdGhlIGRlZmF1bHQgdmFsdWUgYWZ0ZXIgc2V0dGluZyB0aGUgZmxhZy4KLSAgICAgICAgIiIiCi0gICAgICAgIGVycm9yID0gX2NvbmRpdGlvbl9tYXAuZ2V0KGNvbmRpdGlvbiwgY29uZGl0aW9uKQotICAgICAgICBpZiBlcnJvciBpbiBzZWxmLl9pZ25vcmVkX2ZsYWdzOgotICAgICAgICAgICAgIyBEb24ndCB0b3VjaCB0aGUgZmxhZwotICAgICAgICAgICAgcmV0dXJuIGVycm9yKCkuaGFuZGxlKHNlbGYsICphcmdzKQotCi0gICAgICAgIHNlbGYuZmxhZ3NbZXJyb3JdID0gMQotICAgICAgICBpZiBub3Qgc2VsZi50cmFwc1tlcnJvcl06Ci0gICAgICAgICAgICAjIFRoZSBlcnJvcnMgZGVmaW5lIGhvdyB0byBoYW5kbGUgdGhlbXNlbHZlcy4KLSAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24oKS5oYW5kbGUoc2VsZiwgKmFyZ3MpCi0KLSAgICAgICAgIyBFcnJvcnMgc2hvdWxkIG9ubHkgYmUgcmlza2VkIG9uIGNvcGllcyBvZiB0aGUgY29udGV4dAotICAgICAgICAjIHNlbGYuX2lnbm9yZWRfZmxhZ3MgPSBbXQotICAgICAgICByYWlzZSBlcnJvcihleHBsYW5hdGlvbikKLQotICAgIGRlZiBfaWdub3JlX2FsbF9mbGFncyhzZWxmKToKLSAgICAgICAgIiIiSWdub3JlIGFsbCBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9pZ25vcmVfZmxhZ3MoKl9zaWduYWxzKQotCi0gICAgZGVmIF9pZ25vcmVfZmxhZ3Moc2VsZiwgKmZsYWdzKToKLSAgICAgICAgIiIiSWdub3JlIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCi0gICAgICAgICMgRG8gbm90IG11dGF0ZS0tIFRoaXMgd2F5LCBjb3BpZXMgb2YgYSBjb250ZXh0IGxlYXZlIHRoZSBvcmlnaW5hbAotICAgICAgICAjIGFsb25lLgotICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzID0gKHNlbGYuX2lnbm9yZWRfZmxhZ3MgKyBsaXN0KGZsYWdzKSkKLSAgICAgICAgcmV0dXJuIGxpc3QoZmxhZ3MpCi0KLSAgICBkZWYgX3JlZ2FyZF9mbGFncyhzZWxmLCAqZmxhZ3MpOgotICAgICAgICAiIiJTdG9wIGlnbm9yaW5nIHRoZSBmbGFncywgaWYgdGhleSBhcmUgcmFpc2VkIiIiCi0gICAgICAgIGlmIGZsYWdzIGFuZCBpc2luc3RhbmNlKGZsYWdzWzBdLCAodHVwbGUsbGlzdCkpOgotICAgICAgICAgICAgZmxhZ3MgPSBmbGFnc1swXQotICAgICAgICBmb3IgZmxhZyBpbiBmbGFnczoKLSAgICAgICAgICAgIHNlbGYuX2lnbm9yZWRfZmxhZ3MucmVtb3ZlKGZsYWcpCi0KLSAgICAjIFdlIGluaGVyaXQgb2JqZWN0Ll9faGFzaF9fLCBzbyB3ZSBtdXN0IGRlbnkgdGhpcyBleHBsaWNpdGx5Ci0gICAgX19oYXNoX18gPSBOb25lCi0KLSAgICBkZWYgRXRpbnkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgRXRpbnkgKD0gRW1pbiAtIHByZWMgKyAxKSIiIgotICAgICAgICByZXR1cm4gaW50KHNlbGYuRW1pbiAtIHNlbGYucHJlYyArIDEpCi0KLSAgICBkZWYgRXRvcChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyBtYXhpbXVtIGV4cG9uZW50ICg9IEVtYXggLSBwcmVjICsgMSkiIiIKLSAgICAgICAgcmV0dXJuIGludChzZWxmLkVtYXggLSBzZWxmLnByZWMgKyAxKQotCi0gICAgZGVmIF9zZXRfcm91bmRpbmcoc2VsZiwgdHlwZSk6Ci0gICAgICAgICIiIlNldHMgdGhlIHJvdW5kaW5nIHR5cGUuCi0KLSAgICAgICAgU2V0cyB0aGUgcm91bmRpbmcgdHlwZSwgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgKHByZXZpb3VzKQotICAgICAgICByb3VuZGluZyB0eXBlLiAgT2Z0ZW4gdXNlZCBsaWtlOgotCi0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQotICAgICAgICAjIHNvIHlvdSBkb24ndCBjaGFuZ2UgdGhlIGNhbGxpbmcgY29udGV4dAotICAgICAgICAjIGlmIGFuIGVycm9yIG9jY3VycyBpbiB0aGUgbWlkZGxlLgotICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9VUCkKLSAgICAgICAgdmFsID0gc2VsZi5fX3N1Yl9fKG90aGVyLCBjb250ZXh0PWNvbnRleHQpCi0gICAgICAgIGNvbnRleHQuX3NldF9yb3VuZGluZyhyb3VuZGluZykKLQotICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCByb3VuZCB1cCBmb3IgdGhhdCBvcGVyYXRpb24uCi0gICAgICAgICIiIgotICAgICAgICByb3VuZGluZyA9IHNlbGYucm91bmRpbmcKLSAgICAgICAgc2VsZi5yb3VuZGluZz0gdHlwZQotICAgICAgICByZXR1cm4gcm91bmRpbmcKLQotICAgIGRlZiBjcmVhdGVfZGVjaW1hbChzZWxmLCBudW09JzAnKToKLSAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGJ1dCB1c2luZyBzZWxmIGFzIGNvbnRleHQuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUKLSAgICAgICAgSUJNIERlY2ltYWwgc3BlY2lmaWNhdGlvbi4iIiIKLQotICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgbnVtICE9IG51bS5zdHJpcCgpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZC4iKQotCi0gICAgICAgIGQgPSBEZWNpbWFsKG51bSwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiBkLl9pc25hbigpIGFuZCBsZW4oZC5faW50KSA+IHNlbGYucHJlYyAtIHNlbGYuY2xhbXA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhZ25vc3RpYyBpbmZvIHRvbyBsb25nIGluIE5hTiIpCi0gICAgICAgIHJldHVybiBkLl9maXgoc2VsZikKLQotICAgIGRlZiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KHNlbGYsIGYpOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBhIGZsb2F0IGJ1dCByb3VuZGluZyB1c2luZyBzZWxmCi0gICAgICAgIGFzIHRoZSBjb250ZXh0LgotCi0gICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCi0gICAgICAgID4+PiBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMy4xNDE1OTI2NTM1ODk3OTMyKQotICAgICAgICBEZWNpbWFsKCczLjE0MTUnKQotICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCi0gICAgICAgID4+PiBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMy4xNDE1OTI2NTM1ODk3OTMyKQotICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAgICAgICAuLi4KLSAgICAgICAgZGVjaW1hbC5JbmV4YWN0OiBOb25lCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGQgPSBEZWNpbWFsLmZyb21fZmxvYXQoZikgICAgICAgIyBBbiBleGFjdCBjb252ZXJzaW9uCi0gICAgICAgIHJldHVybiBkLl9maXgoc2VsZikgICAgICAgICAgICAgIyBBcHBseSB0aGUgY29udGV4dCByb3VuZGluZwotCi0gICAgIyBNZXRob2RzCi0gICAgZGVmIGFicyhzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgSWYgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgdXNpbmcgdGhlIG1pbnVzCi0gICAgICAgIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZwotICAgICAgICB0aGUgcGx1cyBvcGVyYXRpb24gb24gdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWJzKERlY2ltYWwoJy0xMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAxLjUnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicygtMSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX2Fic19fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBhZGQoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgc3VtIG9mIHRoZSB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnNy4wMCcpKQotICAgICAgICBEZWNpbWFsKCcxOS4wMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzFFKzInKSwgRGVjaW1hbCgnMS4wMUUrNCcpKQotICAgICAgICBEZWNpbWFsKCcxLjAyRSs0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoOCksIDUpCi0gICAgICAgIERlY2ltYWwoJzEzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoNSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgciA9IGEuX19hZGRfXyhiLCBjb250ZXh0PXNlbGYpCi0gICAgICAgIGlmIHIgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgYikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgX2FwcGx5KHNlbGYsIGEpOgotICAgICAgICByZXR1cm4gc3RyKGEuX2ZpeChzZWxmKSkKLQotICAgIGRlZiBjYW5vbmljYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNhbWUgRGVjaW1hbCBvYmplY3QuCi0KLSAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKLSAgICAgICAgcmVjZWl2ZWQgb2JqZWN0IGFscmVhZHkgaXMgaW4gaXRzIGNhbm9uaWNhbCBmb3JtLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMi41MCcpCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQotICAgICAgICByZXR1cm4gYS5jYW5vbmljYWwoKQotCi0gICAgZGVmIGNvbXBhcmUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHZhbHVlcyBudW1lcmljYWxseS4KLQotICAgICAgICBJZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGRpZmZlciwgYSB2YWx1ZSByZXByZXNlbnRpbmcgZWFjaCBvcGVyYW5kCi0gICAgICAgICgnLTEnIGlmIHRoZSBvcGVyYW5kIGlzIGxlc3MgdGhhbiB6ZXJvLCAnMCcgaWYgdGhlIG9wZXJhbmQgaXMgemVybyBvcgotICAgICAgICBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFuIHplcm8pIGlzIHVzZWQgaW4KLSAgICAgICAgcGxhY2Ugb2YgdGhhdCBvcGVyYW5kIGZvciB0aGUgY29tcGFyaXNvbiBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwKLSAgICAgICAgb3BlcmFuZC4KLQotICAgICAgICBUaGUgY29tcGFyaXNvbiBpcyB0aGVuIGVmZmVjdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZWNvbmQgb3BlcmFuZCBmcm9tCi0gICAgICAgIHRoZSBmaXJzdCBhbmQgdGhlbiByZXR1cm5pbmcgYSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdCBvZiB0aGUKLSAgICAgICAgc3VidHJhY3Rpb246ICctMScgaWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gemVybywgJzAnIGlmIHRoZSByZXN1bHQgaXMKLSAgICAgICAgemVybyBvciBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIHJlc3VsdCBpcyBncmVhdGVyIHRoYW4gemVyby4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnLTMnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCctMycpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29tcGFyZShiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgY29tcGFyZV9zaWduYWwoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHRoZSB2YWx1ZXMgb2YgdGhlIHR3byBvcGVyYW5kcyBudW1lcmljYWxseS4KLQotICAgICAgICBJdCdzIHByZXR0eSBtdWNoIGxpa2UgY29tcGFyZSgpLCBidXQgYWxsIE5hTnMgc2lnbmFsLCB3aXRoIHNpZ25hbGluZwotICAgICAgICBOYU5zIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgcXVpZXQgTmFOcy4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dAotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAotICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLSAgICAgICAgMAotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCdOYU4nKSwgRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0gICAgICAgID4+PiBwcmludChjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQotICAgICAgICAxCi0gICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAotICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLSAgICAgICAgMAotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKCdzTmFOJyksIERlY2ltYWwoJzIuMScpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gcHJpbnQoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKLSAgICAgICAgMQotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKC0xKSwgMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgRGVjaW1hbCgyKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29tcGFyZV9zaWduYWwoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGNvbXBhcmVfdG90YWwoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkNvbXBhcmVzIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbi4KLQotICAgICAgICBUaGlzIGlzIG5vdCBsaWtlIHRoZSBzdGFuZGFyZCBjb21wYXJlLCB3aGljaCB1c2UgdGhlaXIgbnVtZXJpY2FsCi0gICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKLSAgICAgICAgcmVwcmVzZW50YXRpb25zLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi43MycpLCBEZWNpbWFsKCcxMjcuOScpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCctMTI3JyksICBEZWNpbWFsKCcxMicpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zMCcpLCBEZWNpbWFsKCcxMi4zJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMycpLCAgRGVjaW1hbCgnMTIuMzAwJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnMTIuMycpLCAgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIDIpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIDIpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmNvbXBhcmVfdG90YWwoYikKLQotICAgIGRlZiBjb21wYXJlX3RvdGFsX21hZyhzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIGlnbm9yaW5nIHNpZ24uCi0KLSAgICAgICAgTGlrZSBjb21wYXJlX3RvdGFsLCBidXQgd2l0aCBvcGVyYW5kJ3Mgc2lnbiBpZ25vcmVkIGFuZCBhc3N1bWVkIHRvIGJlIDAuCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5jb21wYXJlX3RvdGFsX21hZyhiKQotCi0gICAgZGVmIGNvcHlfYWJzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIGEgY29weSBvZiB0aGUgb3BlcmFuZCB3aXRoIHRoZSBzaWduIHNldCB0byAwLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnLTEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKC0xKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmNvcHlfYWJzKCkKLQotICAgIGRlZiBjb3B5X2RlY2ltYWwoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBkZWNpbWFsIG9iamVjdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoRGVjaW1hbCgnLTEuMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbCgxKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBEZWNpbWFsKGEpCi0KLSAgICBkZWYgY29weV9uZWdhdGUoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X25lZ2F0ZShEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCctMTAxLjUnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDEuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9uZWdhdGUoMSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29weV9uZWdhdGUoKQotCi0gICAgZGVmIGNvcHlfc2lnbihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29waWVzIHRoZSBzZWNvbmQgb3BlcmFuZCdzIHNpZ24gdG8gdGhlIGZpcnN0IG9uZS4KLQotICAgICAgICBJbiBkZXRhaWwsIGl0IHJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIHNpZ24KLSAgICAgICAgZXF1YWwgdG8gdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS41MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoJy0xLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS41MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJy03LjMzJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuNTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKDEpLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuY29weV9zaWduKGIpCi0KLSAgICBkZWYgZGl2aWRlKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJEZWNpbWFsIGRpdmlzaW9uIGluIGEgc3BlY2lmaWVkIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzAuMzMzMzMzMzMzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzAuNjY2NjY2NjY3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnNScpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzIuNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMTInKSwgRGVjaW1hbCgnMTInKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzguMDAnKSwgRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCc0LjAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMi40MDAnKSwgRGVjaW1hbCgnMi4wJykpCi0gICAgICAgIERlY2ltYWwoJzEuMjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMDAwJyksIERlY2ltYWwoJzEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxMDAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnMi40MEUrNicpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzEuMjBFKzYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZSg1LCA1KQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCg1KSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIERlY2ltYWwoNSkpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgciA9IGEuX190cnVlZGl2X18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIGRpdmlkZV9pbnQoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkRpdmlkZXMgdHdvIG51bWJlcnMgYW5kIHJldHVybnMgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgcmVzdWx0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcwLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgMykKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKDEwKSwgMykKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgRGVjaW1hbCgzKSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX2Zsb29yZGl2X18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIGRpdm1vZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJuIChhIC8vIGIsIGEgJSBiKS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCBEZWNpbWFsKDMpKQotICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoNCkpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZtb2QoOCwgNCkKLSAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdm1vZChEZWNpbWFsKDgpLCA0KQotICAgICAgICAoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIERlY2ltYWwoNCkpCi0gICAgICAgIChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHIgPSBhLl9fZGl2bW9kX18oYiwgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIGV4cChzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBlICoqIGEuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy1JbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy0xJykpCi0gICAgICAgIERlY2ltYWwoJzAuMzY3ODc5NDQxJykKLSAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzIuNzE4MjgxODMnKQotICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMC42OTMxNDcxODEnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCi0gICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcrSW5maW5pdHknKSkKLSAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5leHAoMTApCi0gICAgICAgIERlY2ltYWwoJzIyMDI2LjQ2NTgnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9X2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5leHAoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGZtYShzZWxmLCBhLCBiLCBjKToKLSAgICAgICAgIiIiUmV0dXJucyBhIG11bHRpcGxpZWQgYnkgYiwgcGx1cyBjLgotCi0gICAgICAgIFRoZSBmaXJzdCB0d28gb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHVzaW5nIG11bHRpcGx5LAotICAgICAgICB0aGUgdGhpcmQgb3BlcmFuZCBpcyB0aGVuIGFkZGVkIHRvIHRoZSByZXN1bHQgb2YgdGhhdAotICAgICAgICBtdWx0aXBsaWNhdGlvbiwgdXNpbmcgYWRkLCBhbGwgd2l0aCBvbmx5IG9uZSBmaW5hbCByb3VuZGluZy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCczJyksIERlY2ltYWwoJzUnKSwgRGVjaW1hbCgnNycpKQotICAgICAgICBEZWNpbWFsKCcyMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnLTUnKSwgRGVjaW1hbCgnNycpKQotICAgICAgICBEZWNpbWFsKCctOCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzg4ODU2NTI5MCcpLCBEZWNpbWFsKCcxNTU3Ljk2OTMwJyksIERlY2ltYWwoJy04NjA4Ny43NTc4JykpCi0gICAgICAgIERlY2ltYWwoJzEuMzg0MzU3MzZFKzEyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgMywgNCkKLSAgICAgICAgRGVjaW1hbCgnNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIERlY2ltYWwoMyksIDQpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCBEZWNpbWFsKDQpKQotICAgICAgICBEZWNpbWFsKCc3JykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmZtYShiLCBjLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgaXNfY2Fub25pY2FsKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBjYW5vbmljYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgQ3VycmVudGx5LCB0aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cwotICAgICAgICBjYW5vbmljYWwsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMgVHJ1ZSBmb3IgYW55IERlY2ltYWwuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaXNfY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQotICAgICAgICByZXR1cm4gYS5pc19jYW5vbmljYWwoKQotCi0gICAgZGVmIGlzX2Zpbml0ZShzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgIEEgRGVjaW1hbCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGZpbml0ZSBpZiBpdCBpcyBuZWl0aGVyCi0gICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnLTAuMycpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdJbmYnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKDEpCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX2Zpbml0ZSgpCi0KLSAgICBkZWYgaXNfaW5maW5pdGUoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIGluZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfaW5maW5pdGUoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2luZmluaXRlKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19pbmZpbml0ZSgpCi0KLSAgICBkZWYgaXNfbmFuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHFOYU4gb3Igc05hTjsKLSAgICAgICAgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX25hbihEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJ05hTicpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfbmFuKERlY2ltYWwoJy1zTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19uYW4oMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX25hbigpCi0KLSAgICBkZWYgaXNfbm9ybWFsKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIG5vcm1hbCBudW1iZXI7Ci0gICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoRGVjaW1hbCgnMC4xRS05OTknKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJzAuMDAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfbm9ybWFsKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19ub3JtYWwoMSkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfbm9ybWFsKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBpc19xbmFuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3FuYW4oRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKERlY2ltYWwoJ3NOYU4nKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19xbmFuKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc19xbmFuKCkKLQotICAgIGRlZiBpc19zaWduZWQoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc2lnbmVkKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnLTEyJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zaWduZWQoRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZCg4KQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NpZ25lZCgtOCkKLSAgICAgICAgVHJ1ZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfc2lnbmVkKCkKLQotICAgIGRlZiBpc19zbmFuKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU47Ci0gICAgICAgIG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19zbmFuKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3NuYW4oRGVjaW1hbCgnc05hTicpKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfc25hbigxKQotICAgICAgICBGYWxzZQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuaXNfc25hbigpCi0KLSAgICBkZWYgaXNfc3Vibm9ybWFsKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzAuMUUtOTk5JykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJzAuMDAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJy1JbmYnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoJ05hTicpKQotICAgICAgICBGYWxzZQotICAgICAgICA+Pj4gYy5pc19zdWJub3JtYWwoMSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmlzX3N1Ym5vcm1hbChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgaXNfemVybyhzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybyhEZWNpbWFsKCcwJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJzIuNTAnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKERlY2ltYWwoJy0wRSsyJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc196ZXJvKDEpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygwKQotICAgICAgICBUcnVlCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5pc196ZXJvKCkKLQotICAgIGRlZiBsbihzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCi0KLSAgICAgICAgPj4+IGMgPSBFeHRlbmRlZENvbnRleHQuY29weSgpCi0gICAgICAgID4+PiBjLkVtaW4gPSAtOTk5Ci0gICAgICAgID4+PiBjLkVtYXggPSA5OTkKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICA+Pj4gYy5sbihEZWNpbWFsKCcxLjAwMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMi43MTgyODE4MycpKQotICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAwJykKLSAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4zMDI1ODUwOScpCi0gICAgICAgID4+PiBjLmxuKERlY2ltYWwoJytJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxuKDEpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG4oY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZzEwKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKLSAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKLSAgICAgICAgPj4+IGMuRW1heCA9IDk5OQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAuMDAxJykpCi0gICAgICAgIERlY2ltYWwoJy0zJykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMS4wMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMC4zMDEwMjk5OTYnKQotICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnNzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS44NDUwOTgwNCcpCi0gICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJytJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxvZzEwKDApCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLmxvZzEwKDEpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9nMTAoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIGxvZ2Ioc2VsZiwgYSk6Ci0gICAgICAgICIiIiBSZXR1cm5zIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELgotCi0gICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGludGVnZXIgd2hpY2ggaXMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUKLSAgICAgICAgb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgdGhlIG9wZXJhbmQgKGFzIHRob3VnaCB0aGUKLSAgICAgICAgb3BlcmFuZCB3ZXJlIHRydW5jYXRlZCB0byBhIHNpbmdsZSBkaWdpdCB3aGlsZSBtYWludGFpbmluZyB0aGUKLSAgICAgICAgdmFsdWUgb2YgdGhhdCBkaWdpdCBhbmQgd2l0aG91dCBsaW1pdGluZyB0aGUgcmVzdWx0aW5nIGV4cG9uZW50KS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMjUwJykpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMi41MCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2diKERlY2ltYWwoJzAuMDMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2IoMSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxMCkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9nYigxMDApCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9nYihjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9naWNhbF9hbmQoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICdhbmQnIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgotCi0gICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZChEZWNpbWFsKCcxMTExJyksIERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2FuZCgxMTAsIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9hbmQoRGVjaW1hbCgxMTApLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfYW5kKDExMCwgRGVjaW1hbCgxMTAxKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmxvZ2ljYWxfYW5kKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX2ludmVydChzZWxmLCBhKToKLSAgICAgICAgIiIiSW52ZXJ0IGFsbCB0aGUgZGlnaXRzIGluIHRoZSBvcGVyYW5kLgotCi0gICAgICAgIFRoZSBvcGVyYW5kIG11c3QgYmUgYSBsb2dpY2FsIG51bWJlci4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMTExMTExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX2ludmVydChEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzExMTExMTExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgnMTExMTExMTExJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoJzEwMTAxMDEwMScpKQotICAgICAgICBEZWNpbWFsKCcxMDEwMTAxMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9pbnZlcnQoMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTExMTEwMDEwJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLmxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBsb2dpY2FsX29yKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJBcHBsaWVzIHRoZSBsb2dpY2FsIG9wZXJhdGlvbiAnb3InIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgotCi0gICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcwJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxMTAwJyksIERlY2ltYWwoJzEwMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTExMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcihEZWNpbWFsKCcxMTEwJyksIERlY2ltYWwoJzEwJykpCi0gICAgICAgIERlY2ltYWwoJzExMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfb3IoMTEwLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMTExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX29yKERlY2ltYWwoMTEwKSwgMTEwMSkKLSAgICAgICAgRGVjaW1hbCgnMTExMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF9vcigxMTAsIERlY2ltYWwoMTEwMSkpCi0gICAgICAgIERlY2ltYWwoJzExMTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubG9naWNhbF9vcihiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbG9naWNhbF94b3Ioc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIkFwcGxpZXMgdGhlIGxvZ2ljYWwgb3BlcmF0aW9uICd4b3InIGJldHdlZW4gZWFjaCBvcGVyYW5kJ3MgZGlnaXRzLgotCi0gICAgICAgIFRoZSBvcGVyYW5kcyBtdXN0IGJlIGJvdGggbG9naWNhbCBudW1iZXJzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoRGVjaW1hbCgnMScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzExMDAnKSwgRGVjaW1hbCgnMTAxMCcpKQotICAgICAgICBEZWNpbWFsKCcxMTAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKERlY2ltYWwoJzExMTEnKSwgRGVjaW1hbCgnMTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTEwMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubG9naWNhbF94b3IoMTEwLCAxMTAxKQotICAgICAgICBEZWNpbWFsKCcxMDExJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5sb2dpY2FsX3hvcihEZWNpbWFsKDExMCksIDExMDEpCi0gICAgICAgIERlY2ltYWwoJzEwMTEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmxvZ2ljYWxfeG9yKDExMCwgRGVjaW1hbCgxMTAxKSkKLSAgICAgICAgRGVjaW1hbCgnMTAxMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5sb2dpY2FsX3hvcihiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbWF4KHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJtYXggY29tcGFyZXMgdHdvIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJucyB0aGUgbWF4aW11bS4KLQotICAgICAgICBJZiBlaXRoZXIgb3BlcmFuZCBpcyBhIE5hTiB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgotICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYXMgdGhvdWdoIGJ5IHRoZSBjb21wYXJlCi0gICAgICAgIG9wZXJhdGlvbi4gIElmIHRoZXkgYXJlIG51bWVyaWNhbGx5IGVxdWFsIHRoZW4gdGhlIGxlZnQtaGFuZCBvcGVyYW5kCi0gICAgICAgIGlzIGNob3NlbiBhcyB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlIHRoZSBtYXhpbXVtIChjbG9zZXIgdG8gcG9zaXRpdmUKLSAgICAgICAgaW5maW5pdHkpIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heCgxLCAyKQotICAgICAgICBEZWNpbWFsKCcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubWF4KGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtYXhfbWFnKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZyhEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQotICAgICAgICBEZWNpbWFsKCc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTEwJykpCi0gICAgICAgIERlY2ltYWwoJy0xMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4X21hZygxLCAtMikKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heF9tYWcoRGVjaW1hbCgxKSwgLTIpCi0gICAgICAgIERlY2ltYWwoJy0yJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXhfbWFnKDEsIERlY2ltYWwoLTIpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5tYXhfbWFnKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtaW4oc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIm1pbiBjb21wYXJlcyB0d28gdmFsdWVzIG51bWVyaWNhbGx5IGFuZCByZXR1cm5zIHRoZSBtaW5pbXVtLgotCi0gICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgTmFOIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBjb21wYXJlZCBhcyB0aG91Z2ggYnkgdGhlIGNvbXBhcmUKLSAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKLSAgICAgICAgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuICBPdGhlcndpc2UgdGhlIG1pbmltdW0gKGNsb3NlciB0byBuZWdhdGl2ZQotICAgICAgICBpbmZpbml0eSkgb2YgdGhlIHR3byBvcGVyYW5kcyBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbihEZWNpbWFsKCczJyksIERlY2ltYWwoJzInKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzEuMCcpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzEuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnTmFOJykpCi0gICAgICAgIERlY2ltYWwoJzcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbigxLCAyKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW4oRGVjaW1hbCgxKSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluKDEsIERlY2ltYWwoMjkpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLm1pbihiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbWluX21hZyhzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiQ29tcGFyZXMgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCctMicpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWluX21hZyhEZWNpbWFsKCctMycpLCBEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgRGVjaW1hbCgnLTMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoMSwgLTIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoRGVjaW1hbCgxKSwgLTIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbl9tYWcoMSwgRGVjaW1hbCgtMikpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubWluX21hZyhiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbWludXMoc2VsZiwgYSk6Ci0gICAgICAgICIiIk1pbnVzIGNvcnJlc3BvbmRzIHRvIHVuYXJ5IHByZWZpeCBtaW51cyBpbiBQeXRob24uCi0KLSAgICAgICAgVGhlIG9wZXJhdGlvbiBpcyBldmFsdWF0ZWQgdXNpbmcgdGhlIHNhbWUgcnVsZXMgYXMgc3VidHJhY3Q7IHRoZQotICAgICAgICBvcGVyYXRpb24gbWludXMoYSkgaXMgY2FsY3VsYXRlZCBhcyBzdWJ0cmFjdCgnMCcsIGEpIHdoZXJlIHRoZSAnMCcKLSAgICAgICAgaGFzIHRoZSBzYW1lIGV4cG9uZW50IGFzIHRoZSBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWludXMoRGVjaW1hbCgnMS4zJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1pbnVzKERlY2ltYWwoJy0xLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5taW51cygxKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5fX25lZ19fKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBtdWx0aXBseShzZWxmLCBhLCBiKToKLSAgICAgICAgIiIibXVsdGlwbHkgbXVsdGlwbGllcyB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBzcGVjaWFsIHZhbHVlIHRoZW4gdGhlIGdlbmVyYWwgcnVsZXMgYXBwbHkuCi0gICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyCi0gICAgICAgICgnbG9uZyBtdWx0aXBsaWNhdGlvbicpLCByZXN1bHRpbmcgaW4gYSBudW1iZXIgd2hpY2ggbWF5IGJlIGFzIGxvbmcgYXMKLSAgICAgICAgdGhlIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIG9wZXJhbmRzLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMS4yMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzMuNjAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcyMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnMC45JyksIERlY2ltYWwoJzAuOCcpKQotICAgICAgICBEZWNpbWFsKCcwLjcyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcwLjknKSwgRGVjaW1hbCgnLTAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNjU0MzIxJyksIERlY2ltYWwoJzY1NDMyMScpKQotICAgICAgICBEZWNpbWFsKCc0LjI4MTM1OTcxRSsxMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoNywgNykKLSAgICAgICAgRGVjaW1hbCgnNDknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoNyksIDcpCi0gICAgICAgIERlY2ltYWwoJzQ5JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCBEZWNpbWFsKDcpKQotICAgICAgICBEZWNpbWFsKCc0OScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX211bF9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiBuZXh0X21pbnVzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBhLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAuOTk5OTk5OTk5JykKLSAgICAgICAgPj4+IGMubmV4dF9taW51cyhEZWNpbWFsKCcxRS0xMDA3JykpCi0gICAgICAgIERlY2ltYWwoJzBFLTEwMDcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5leHRfbWludXMoRGVjaW1hbCgnLTEuMDAwMDAwMDMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDQnKQotICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJzkuOTk5OTk5OTlFKzk5OScpCi0gICAgICAgID4+PiBjLm5leHRfbWludXMoMSkKLSAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubmV4dF9taW51cyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbmV4dF9wbHVzKHNlbGYsIGEpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBhLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9wbHVzKERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wMDAwMDAwMScpCi0gICAgICAgID4+PiBjLm5leHRfcGx1cyhEZWNpbWFsKCctMUUtMTAwNycpKQotICAgICAgICBEZWNpbWFsKCctMEUtMTAwNycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9wbHVzKERlY2ltYWwoJy0xLjAwMDAwMDAzJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDAyJykKLSAgICAgICAgPj4+IGMubmV4dF9wbHVzKERlY2ltYWwoJy1JbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCctOS45OTk5OTk5OUUrOTk5JykKLSAgICAgICAgPj4+IGMubmV4dF9wbHVzKDEpCi0gICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubmV4dF9wbHVzKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBuZXh0X3Rvd2FyZChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8gYSwgaW4gZGlyZWN0aW9uIHRvd2FyZHMgYi4KLQotICAgICAgICBUaGUgcmVzdWx0IGlzIHRoZSBjbG9zZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGZyb20gdGhlIGZpcnN0Ci0gICAgICAgIG9wZXJhbmQgKGJ1dCBub3QgdGhlIGZpcnN0IG9wZXJhbmQpIHRoYXQgaXMgaW4gdGhlIGRpcmVjdGlvbgotICAgICAgICB0b3dhcmRzIHRoZSBzZWNvbmQgb3BlcmFuZCwgdW5sZXNzIHRoZSBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lCi0gICAgICAgIHZhbHVlLgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMicpKQotICAgICAgICBEZWNpbWFsKCcxLjAwMDAwMDAxJykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoRGVjaW1hbCgnLTFFLTEwMDcnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCctMEUtMTAwNycpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xLjAwMDAwMDAzJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMDAwMDAwMDInKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKCcxRS0xMDA3JyksIERlY2ltYWwoJy0xMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMEUtMTAwNycpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJy0xLjAwMDAwMDAzJyksIERlY2ltYWwoJy0xMCcpKQotICAgICAgICBEZWNpbWFsKCctMS4wMDAwMDAwNCcpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKERlY2ltYWwoJzAuMDAnKSwgRGVjaW1hbCgnLTAuMDAwMCcpKQotICAgICAgICBEZWNpbWFsKCctMC4wMCcpCi0gICAgICAgID4+PiBjLm5leHRfdG93YXJkKDAsIDEpCi0gICAgICAgIERlY2ltYWwoJzFFLTEwMDcnKQotICAgICAgICA+Pj4gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDApLCAxKQotICAgICAgICBEZWNpbWFsKCcxRS0xMDA3JykKLSAgICAgICAgPj4+IGMubmV4dF90b3dhcmQoMCwgRGVjaW1hbCgxKSkKLSAgICAgICAgRGVjaW1hbCgnMUUtMTAwNycpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5uZXh0X3Rvd2FyZChiLCBjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgbm9ybWFsaXplKHNlbGYsIGEpOgotICAgICAgICAiIiJub3JtYWxpemUgcmVkdWNlcyBhbiBvcGVyYW5kIHRvIGl0cyBzaW1wbGVzdCBmb3JtLgotCi0gICAgICAgIEVzc2VudGlhbGx5IGEgcGx1cyBvcGVyYXRpb24gd2l0aCBhbGwgdHJhaWxpbmcgemVyb3MgcmVtb3ZlZCBmcm9tIHRoZQotICAgICAgICByZXN1bHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubm9ybWFsaXplKERlY2ltYWwoJy0yLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnLTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcxLjIwMCcpKQotICAgICAgICBEZWNpbWFsKCcxLjInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCctMTIwJykpCi0gICAgICAgIERlY2ltYWwoJy0xLjJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm5vcm1hbGl6ZShEZWNpbWFsKCcxMjAuMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4yRSsyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoRGVjaW1hbCgnMC4wMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5ub3JtYWxpemUoNikKLSAgICAgICAgRGVjaW1hbCgnNicpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS5ub3JtYWxpemUoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIG51bWJlcl9jbGFzcyhzZWxmLCBhKToKLSAgICAgICAgIiIiUmV0dXJucyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBjbGFzcyBvZiB0aGUgb3BlcmFuZC4KLQotICAgICAgICBUaGUgY2xhc3MgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKLSAgICAgICAgICAtc05hTgotICAgICAgICAgIC1OYU4KLSAgICAgICAgICAtSW5maW5pdHkKLSAgICAgICAgICAtTm9ybWFsCi0gICAgICAgICAgLVN1Ym5vcm1hbAotICAgICAgICAgIC1aZXJvCi0gICAgICAgICAgK1plcm8KLSAgICAgICAgICArU3Vibm9ybWFsCi0gICAgICAgICAgK05vcm1hbAotICAgICAgICAgICtJbmZpbml0eQotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdJbmZpbml0eScpKQotICAgICAgICAnK0luZmluaXR5JwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMUUtMTAnKSkKLSAgICAgICAgJytOb3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcyLjUwJykpCi0gICAgICAgICcrTm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMC4xRS05OTknKSkKLSAgICAgICAgJytTdWJub3JtYWwnCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwJykpCi0gICAgICAgICcrWmVybycKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0wJykpCi0gICAgICAgICctWmVybycKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0wLjFFLTk5OScpKQotICAgICAgICAnLVN1Ym5vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0xRS0xMCcpKQotICAgICAgICAnLU5vcm1hbCcKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0yLjUwJykpCi0gICAgICAgICctTm9ybWFsJwotICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLUluZmluaXR5JykpCi0gICAgICAgICctSW5maW5pdHknCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdOYU4nKSkKLSAgICAgICAgJ05hTicKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy1OYU4nKSkKLSAgICAgICAgJ05hTicKLSAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ3NOYU4nKSkKLSAgICAgICAgJ3NOYU4nCi0gICAgICAgID4+PiBjLm51bWJlcl9jbGFzcygxMjMpCi0gICAgICAgICcrTm9ybWFsJwotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEubnVtYmVyX2NsYXNzKGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBwbHVzKHNlbGYsIGEpOgotICAgICAgICAiIiJQbHVzIGNvcnJlc3BvbmRzIHRvIHVuYXJ5IHByZWZpeCBwbHVzIGluIFB5dGhvbi4KLQotICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGV2YWx1YXRlZCB1c2luZyB0aGUgc2FtZSBydWxlcyBhcyBhZGQ7IHRoZQotICAgICAgICBvcGVyYXRpb24gcGx1cyhhKSBpcyBjYWxjdWxhdGVkIGFzIGFkZCgnMCcsIGEpIHdoZXJlIHRoZSAnMCcKLSAgICAgICAgaGFzIHRoZSBzYW1lIGV4cG9uZW50IGFzIHRoZSBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cyhEZWNpbWFsKCcxLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wbHVzKERlY2ltYWwoJy0xLjMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEuMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucGx1cygtMSkKLSAgICAgICAgRGVjaW1hbCgnLTEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuX19wb3NfXyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgcG93ZXIoc2VsZiwgYSwgYiwgbW9kdWxvPU5vbmUpOgotICAgICAgICAiIiJSYWlzZXMgYSB0byB0aGUgcG93ZXIgb2YgYiwgdG8gbW9kdWxvIGlmIGdpdmVuLgotCi0gICAgICAgIFdpdGggdHdvIGFyZ3VtZW50cywgY29tcHV0ZSBhKipiLiAgSWYgYSBpcyBuZWdhdGl2ZSB0aGVuIGIKLSAgICAgICAgbXVzdCBiZSBpbnRlZ3JhbC4gIFRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyBiIGlzCi0gICAgICAgIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZSBhbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5Ci0gICAgICAgIGluICdwcmVjaXNpb24nIGRpZ2l0cy4KLQotICAgICAgICBXaXRoIHRocmVlIGFyZ3VtZW50cywgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uICBGb3IgdGhlCi0gICAgICAgIHRocmVlIGFyZ3VtZW50IGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZQotICAgICAgICBhcmd1bWVudHMgaG9sZDoKLQotICAgICAgICAgLSBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWwKLSAgICAgICAgIC0gYiBtdXN0IGJlIG5vbm5lZ2F0aXZlCi0gICAgICAgICAtIGF0IGxlYXN0IG9uZSBvZiBhIG9yIGIgbXVzdCBiZSBub256ZXJvCi0gICAgICAgICAtIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGhhdmUgYXQgbW9zdCAncHJlY2lzaW9uJyBkaWdpdHMKLQotICAgICAgICBUaGUgcmVzdWx0IG9mIHBvdyhhLCBiLCBtb2R1bG8pIGlzIGlkZW50aWNhbCB0byB0aGUgcmVzdWx0Ci0gICAgICAgIHRoYXQgd291bGQgYmUgb2J0YWluZWQgYnkgY29tcHV0aW5nIChhKipiKSAlIG1vZHVsbyB3aXRoCi0gICAgICAgIHVuYm91bmRlZCBwcmVjaXNpb24sIGJ1dCBpcyBjb21wdXRlZCBtb3JlIGVmZmljaWVudGx5LiAgSXQgaXMKLSAgICAgICAgYWx3YXlzIGV4YWN0LgotCi0gICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQotICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQotICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5Ci0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCc4JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTInKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctOCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnLTMnKSkKLSAgICAgICAgRGVjaW1hbCgnMC4xMjUnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxLjcnKSwgRGVjaW1hbCgnOCcpKQotICAgICAgICBEZWNpbWFsKCc2OS43NTc1NzQ0JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zMDEwMjk5OTYnKSkKLSAgICAgICAgRGVjaW1hbCgnMi4wMDAwMDAwMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJy0xJykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCdJbmZpbml0eScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJy0xJykpCi0gICAgICAgIERlY2ltYWwoJy0wJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzAnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcyJykpCi0gICAgICAgIERlY2ltYWwoJ0luZmluaXR5JykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJ05hTicpCi0KLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCi0gICAgICAgIERlY2ltYWwoJzExJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCcxNicpKQotICAgICAgICBEZWNpbWFsKCctMTEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc4JyksIERlY2ltYWwoJzE2JykpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCczJyksIERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnLTE2JykpCi0gICAgICAgIERlY2ltYWwoJzExJykKLSAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMjNFMTIzNDUnKSwgRGVjaW1hbCgnNjdFMTg5JyksIERlY2ltYWwoJzEyMzQ1Njc4OScpKQotICAgICAgICBEZWNpbWFsKCcxMTcyOTgzMCcpCi0gICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0wJyksIERlY2ltYWwoJzE3JyksIERlY2ltYWwoJzE3MjknKSkKLSAgICAgICAgRGVjaW1hbCgnLTAnKQotICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMjMnKSwgRGVjaW1hbCgnMCcpLCBEZWNpbWFsKCc2NTUzNycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5wb3dlcig3LCA3KQotICAgICAgICBEZWNpbWFsKCc4MjM1NDMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKERlY2ltYWwoNyksIDcpCi0gICAgICAgIERlY2ltYWwoJzgyMzU0MycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucG93ZXIoNywgRGVjaW1hbCg3KSwgMikKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX3Bvd19fKGIsIG1vZHVsbywgY29udGV4dD1zZWxmKQotICAgICAgICBpZiByIGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsIiAlIGIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcgotCi0gICAgZGVmIHF1YW50aXplKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIGEgdmFsdWUgZXF1YWwgdG8gJ2EnIChyb3VuZGVkKSwgaGF2aW5nIHRoZSBleHBvbmVudCBvZiAnYicuCi0KLSAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgZGVyaXZlZCBmcm9tIHRoYXQgb2YgdGhlIGxlZnQtaGFuZAotICAgICAgICBvcGVyYW5kLiAgSXQgbWF5IGJlIHJvdW5kZWQgdXNpbmcgdGhlIGN1cnJlbnQgcm91bmRpbmcgc2V0dGluZyAoaWYgdGhlCi0gICAgICAgIGV4cG9uZW50IGlzIGJlaW5nIGluY3JlYXNlZCksIG11bHRpcGxpZWQgYnkgYSBwb3NpdGl2ZSBwb3dlciBvZiB0ZW4gKGlmCi0gICAgICAgIHRoZSBleHBvbmVudCBpcyBiZWluZyBkZWNyZWFzZWQpLCBvciBpcyB1bmNoYW5nZWQgKGlmIHRoZSBleHBvbmVudCBpcwotICAgICAgICBhbHJlYWR5IGVxdWFsIHRvIHRoYXQgb2YgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCkuCi0KLSAgICAgICAgVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZQotICAgICAgICBxdWFudGl6ZSBvcGVyYXRpb24gd291bGQgYmUgZ3JlYXRlciB0aGFuIHByZWNpc2lvbiB0aGVuIGFuIEludmFsaWQKLSAgICAgICAgb3BlcmF0aW9uIGNvbmRpdGlvbiBpcyByYWlzZWQuICBUaGlzIGd1YXJhbnRlZXMgdGhhdCwgdW5sZXNzIHRoZXJlIGlzCi0gICAgICAgIGFuIGVycm9yIGNvbmRpdGlvbiwgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQgb2YgYSBxdWFudGl6ZSBpcyBhbHdheXMKLSAgICAgICAgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kLgotCi0gICAgICAgIEFsc28gdW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIHF1YW50aXplIHdpbGwgbmV2ZXIgcmFpc2UgVW5kZXJmbG93LCBldmVuCi0gICAgICAgIGlmIHRoZSByZXN1bHQgaXMgc3Vibm9ybWFsIGFuZCBpbmV4YWN0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQotICAgICAgICBEZWNpbWFsKCcyLjE3MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAxJykpCi0gICAgICAgIERlY2ltYWwoJzIuMTcnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4xJykpCi0gICAgICAgIERlY2ltYWwoJzIuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSswJykpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMWUrMScpKQotICAgICAgICBEZWNpbWFsKCcwRSsxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctSW5mJyksIERlY2ltYWwoJ0luZmluaXR5JykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0wLjEnKSwgRGVjaW1hbCgnMScpKQotICAgICAgICBEZWNpbWFsKCctMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnLTAnKSwgRGVjaW1hbCgnMWUrNScpKQotICAgICAgICBEZWNpbWFsKCctMEUrNScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnKzM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQotICAgICAgICBEZWNpbWFsKCdOYU4nKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy0zNTIzNjQ1MC42JyksIERlY2ltYWwoJzFlLTInKSkKLSAgICAgICAgRGVjaW1hbCgnTmFOJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUtMScpKQotICAgICAgICBEZWNpbWFsKCcyMTcuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTAnKSkKLSAgICAgICAgRGVjaW1hbCgnMjE3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyMTcnKSwgRGVjaW1hbCgnMWUrMScpKQotICAgICAgICBEZWNpbWFsKCcyLjJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZSsyJykpCi0gICAgICAgIERlY2ltYWwoJzJFKzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIDIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoMSksIDIpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIERlY2ltYWwoMikpCi0gICAgICAgIERlY2ltYWwoJzEnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEucXVhbnRpemUoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHJhZGl4KHNlbGYpOgotICAgICAgICAiIiJKdXN0IHJldHVybnMgMTAsIGFzIHRoaXMgaXMgRGVjaW1hbCwgOikKLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJhZGl4KCkKLSAgICAgICAgRGVjaW1hbCgnMTAnKQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIERlY2ltYWwoMTApCi0KLSAgICBkZWYgcmVtYWluZGVyKHNlbGYsIGEsIGIpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLgotCi0gICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIHJlc2lkdWUgb2YgdGhlIGRpdmlkZW5kIGFmdGVyIHRoZSBvcGVyYXRpb24gb2YKLSAgICAgICAgY2FsY3VsYXRpbmcgaW50ZWdlciBkaXZpc2lvbiBhcyBkZXNjcmliZWQgZm9yIGRpdmlkZS1pbnRlZ2VyLCByb3VuZGVkCi0gICAgICAgIHRvIHByZWNpc2lvbiBkaWdpdHMgaWYgbmVjZXNzYXJ5LiAgVGhlIHNpZ24gb2YgdGhlIHJlc3VsdCwgaWYKLSAgICAgICAgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLgotCi0gICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KLSAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQotICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzIuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJy0xJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzEwJyksIERlY2ltYWwoJzAuMycpKQotICAgICAgICBEZWNpbWFsKCcwLjEnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCczLjYnKSwgRGVjaW1hbCgnMS4zJykpCi0gICAgICAgIERlY2ltYWwoJzEuMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCA2KQotICAgICAgICBEZWNpbWFsKCc0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgyMiksIDYpCi0gICAgICAgIERlY2ltYWwoJzQnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcigyMiwgRGVjaW1hbCg2KSkKLSAgICAgICAgRGVjaW1hbCgnNCcpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX21vZF9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiByZW1haW5kZXJfbmVhcihzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyB0byBiZSAiYSAtIGIgKiBuIiwgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRoZSBleGFjdAotICAgICAgICB2YWx1ZSBvZiAieCAvIGIiIChpZiB0d28gaW50ZWdlcnMgYXJlIGVxdWFsbHkgbmVhciB0aGVuIHRoZSBldmVuIG9uZQotICAgICAgICBpcyBjaG9zZW4pLiAgSWYgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUKLSAgICAgICAgc2lnbiBvZiBhLgotCi0gICAgICAgIFRoaXMgb3BlcmF0aW9uIHdpbGwgZmFpbCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGludGVnZXIgZGl2aXNpb24KLSAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQotICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKLSAgICAgICAgRGVjaW1hbCgnLTAuOScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnNicpKQotICAgICAgICBEZWNpbWFsKCctMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCcxJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCctMTAnKSwgRGVjaW1hbCgnMycpKQotICAgICAgICBEZWNpbWFsKCctMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIERlY2ltYWwoJzAuMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCi0gICAgICAgIERlY2ltYWwoJzAuMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMy42JyksIERlY2ltYWwoJzEuMycpKQotICAgICAgICBEZWNpbWFsKCctMC4zJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcigzLCAxMSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgzKSwgMTEpCi0gICAgICAgIERlY2ltYWwoJzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKDMsIERlY2ltYWwoMTEpKQotICAgICAgICBEZWNpbWFsKCczJykKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnJlbWFpbmRlcl9uZWFyKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiByb3RhdGUoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgYSByb3RhdGVkIGNvcHkgb2YgYSwgYiB0aW1lcy4KLQotICAgICAgICBUaGUgY29lZmZpY2llbnQgb2YgdGhlIHJlc3VsdCBpcyBhIHJvdGF0ZWQgY29weSBvZiB0aGUgZGlnaXRzIGluCi0gICAgICAgIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZC4gIFRoZSBudW1iZXIgb2YgcGxhY2VzIG9mCi0gICAgICAgIHJvdGF0aW9uIGlzIHRha2VuIGZyb20gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCwKLSAgICAgICAgd2l0aCB0aGUgcm90YXRpb24gYmVpbmcgdG8gdGhlIGxlZnQgaWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzCi0gICAgICAgIHBvc2l0aXZlIG9yIHRvIHRoZSByaWdodCBvdGhlcndpc2UuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMzQnKSwgRGVjaW1hbCgnOCcpKQotICAgICAgICBEZWNpbWFsKCc0MDAwMDAwMDMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCi0gICAgICAgIERlY2ltYWwoJzEyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoRGVjaW1hbCgnMTIzNDU2Nzg5JyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJzg5MTIzNDU2NycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcwJykpCi0gICAgICAgIERlY2ltYWwoJzEyMzQ1Njc4OScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQotICAgICAgICBEZWNpbWFsKCczNDU2Nzg5MTInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJvdGF0ZSgxMzMzMzMzLCAxKQotICAgICAgICBEZWNpbWFsKCcxMzMzMzMzMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucm90YXRlKERlY2ltYWwoMTMzMzMzMyksIDEpCi0gICAgICAgIERlY2ltYWwoJzEzMzMzMzMwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yb3RhdGUoMTMzMzMzMywgRGVjaW1hbCgxKSkKLSAgICAgICAgRGVjaW1hbCgnMTMzMzMzMzAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEucm90YXRlKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBzYW1lX3F1YW50dW0oc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuCi0KLSAgICAgICAgVGhlIHJlc3VsdCBpcyBuZXZlciBhZmZlY3RlZCBieSBlaXRoZXIgdGhlIHNpZ24gb3IgdGhlIGNvZWZmaWNpZW50IG9mCi0gICAgICAgIGVpdGhlciBvcGVyYW5kLgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMDEnKSkKLSAgICAgICAgRmFsc2UKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAxJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxJykpCi0gICAgICAgIEZhbHNlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoJ0luZicpLCBEZWNpbWFsKCctSW5mJykpCi0gICAgICAgIFRydWUKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zYW1lX3F1YW50dW0oMTAwMDAsIC0xKQotICAgICAgICBUcnVlCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2FtZV9xdWFudHVtKERlY2ltYWwoMTAwMDApLCAtMSkKLSAgICAgICAgVHJ1ZQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNhbWVfcXVhbnR1bSgxMDAwMCwgRGVjaW1hbCgtMSkpCi0gICAgICAgIFRydWUKLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnNhbWVfcXVhbnR1bShiKQotCi0gICAgZGVmIHNjYWxlYiAoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGZpcnN0IG9wZXJhbmQgYWZ0ZXIgYWRkaW5nIHRoZSBzZWNvbmQgdmFsdWUgaXRzIGV4cC4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYihEZWNpbWFsKCc3LjUwJyksIERlY2ltYWwoJy0yJykpCi0gICAgICAgIERlY2ltYWwoJzAuMDc1MCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKERlY2ltYWwoJzcuNTAnKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCc3LjUwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgnNy41MCcpLCBEZWNpbWFsKCczJykpCi0gICAgICAgIERlY2ltYWwoJzcuNTBFKzMnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNjYWxlYigxLCA0KQotICAgICAgICBEZWNpbWFsKCcxRSs0JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zY2FsZWIoRGVjaW1hbCgxKSwgNCkKLSAgICAgICAgRGVjaW1hbCgnMUUrNCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc2NhbGViKDEsIERlY2ltYWwoNCkpCi0gICAgICAgIERlY2ltYWwoJzFFKzQnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc2NhbGViKGIsIGNvbnRleHQ9c2VsZikKLQotICAgIGRlZiBzaGlmdChzZWxmLCBhLCBiKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHNoaWZ0ZWQgY29weSBvZiBhLCBiIHRpbWVzLgotCi0gICAgICAgIFRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0IGlzIGEgc2hpZnRlZCBjb3B5IG9mIHRoZSBkaWdpdHMKLSAgICAgICAgaW4gdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kLiAgVGhlIG51bWJlciBvZiBwbGFjZXMKLSAgICAgICAgdG8gc2hpZnQgaXMgdGFrZW4gZnJvbSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kLAotICAgICAgICB3aXRoIHRoZSBzaGlmdCBiZWluZyB0byB0aGUgbGVmdCBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgaXMKLSAgICAgICAgcG9zaXRpdmUgb3IgdG8gdGhlIHJpZ2h0IG90aGVyd2lzZS4gIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlCi0gICAgICAgIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzM0JyksIERlY2ltYWwoJzgnKSkKLSAgICAgICAgRGVjaW1hbCgnNDAwMDAwMDAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc5JykpCi0gICAgICAgIERlY2ltYWwoJzAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCctMicpKQotICAgICAgICBEZWNpbWFsKCcxMjM0NTY3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zaGlmdChEZWNpbWFsKCcxMjM0NTY3ODknKSwgRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcxMjM0NTY3ODknKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoJzEyMzQ1Njc4OScpLCBEZWNpbWFsKCcrMicpKQotICAgICAgICBEZWNpbWFsKCczNDU2Nzg5MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KDg4ODg4ODg4LCAyKQotICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KERlY2ltYWwoODg4ODg4ODgpLCAyKQotICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNoaWZ0KDg4ODg4ODg4LCBEZWNpbWFsKDIpKQotICAgICAgICBEZWNpbWFsKCc4ODg4ODg4MDAnKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc2hpZnQoYiwgY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHNxcnQoc2VsZiwgYSk6Ci0gICAgICAgICIiIlNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi4KLQotICAgICAgICBJZiB0aGUgcmVzdWx0IG11c3QgYmUgaW5leGFjdCwgaXQgaXMgcm91bmRlZCB1c2luZyB0aGUgcm91bmQtaGFsZi1ldmVuCi0gICAgICAgIGFsZ29yaXRobS4KLQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMCcpKQotICAgICAgICBEZWNpbWFsKCcwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJy0wJykpCi0gICAgICAgIERlY2ltYWwoJy0wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzAuMzknKSkKLSAgICAgICAgRGVjaW1hbCgnMC42MjQ0OTk4MDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnNxcnQoRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEnKSkKLSAgICAgICAgRGVjaW1hbCgnMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzEuMDAnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KERlY2ltYWwoJzcnKSkKLSAgICAgICAgRGVjaW1hbCgnMi42NDU3NTEzMScpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3FydChEZWNpbWFsKCcxMCcpKQotICAgICAgICBEZWNpbWFsKCczLjE2MjI3NzY2JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zcXJ0KDIpCi0gICAgICAgIERlY2ltYWwoJzEuNDE0MjEzNTYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnByZWMKLSAgICAgICAgOQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuc3FydChjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgc3VidHJhY3Qoc2VsZiwgYSwgYik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gb3BlcmFuZHMuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMS4wNycpKQotICAgICAgICBEZWNpbWFsKCcwLjIzJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMS4zMCcpKQotICAgICAgICBEZWNpbWFsKCcwLjAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5zdWJ0cmFjdChEZWNpbWFsKCcxLjMnKSwgRGVjaW1hbCgnMi4wNycpKQotICAgICAgICBEZWNpbWFsKCctMC43NycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoOCwgNSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoRGVjaW1hbCg4KSwgNSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuc3VidHJhY3QoOCwgRGVjaW1hbCg1KSkKLSAgICAgICAgRGVjaW1hbCgnMycpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByID0gYS5fX3N1Yl9fKGIsIGNvbnRleHQ9c2VsZikKLSAgICAgICAgaWYgciBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbCIgJSBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHIKLQotICAgIGRlZiB0b19lbmdfc3RyaW5nKHNlbGYsIGEpOgotICAgICAgICAiIiJDb252ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi4KLQotICAgICAgICBUaGUgb3BlcmF0aW9uIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgY29udGV4dC4KLSAgICAgICAgIiIiCi0gICAgICAgIGEgPSBfY29udmVydF9vdGhlcihhLCByYWlzZWl0PVRydWUpCi0gICAgICAgIHJldHVybiBhLnRvX2VuZ19zdHJpbmcoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHRvX3NjaV9zdHJpbmcoc2VsZiwgYSk6Ci0gICAgICAgICIiIkNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3RyaW5nLCB1c2luZyBzY2llbnRpZmljIG5vdGF0aW9uLgotCi0gICAgICAgIFRoZSBvcGVyYXRpb24gaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0LgotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEuX19zdHJfXyhjb250ZXh0PXNlbGYpCi0KLSAgICBkZWYgdG9faW50ZWdyYWxfZXhhY3Qoc2VsZiwgYSk6Ci0gICAgICAgICIiIlJvdW5kcyB0byBhbiBpbnRlZ2VyLgotCi0gICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKLSAgICAgICAgYXMgdXNpbmcgdGhlIHF1YW50aXplKCkgb3BlcmF0aW9uIHVzaW5nIHRoZSBnaXZlbiBvcGVyYW5kIGFzIHRoZQotICAgICAgICBsZWZ0LWhhbmQtb3BlcmFuZCwgMUUrMCBhcyB0aGUgcmlnaHQtaGFuZC1vcGVyYW5kLCBhbmQgdGhlIHByZWNpc2lvbgotICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmc7IEluZXhhY3QgYW5kIFJvdW5kZWQgZmxhZ3MKLSAgICAgICAgYXJlIGFsbG93ZWQgaW4gdGhpcyBvcGVyYXRpb24uICBUaGUgcm91bmRpbmcgbW9kZSBpcyB0YWtlbiBmcm9tIHRoZQotICAgICAgICBjb250ZXh0LgotCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMi4xJykpCi0gICAgICAgIERlY2ltYWwoJzInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMCcpKQotICAgICAgICBEZWNpbWFsKCcxMDAnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMC4wJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctMTAxLjUnKSkKLSAgICAgICAgRGVjaW1hbCgnLTEwMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnMTBFKzUnKSkKLSAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCc3Ljg5RSs3NycpKQotICAgICAgICBEZWNpbWFsKCc3Ljg5RSs3NycpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnLUluZicpKQotICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQotICAgICAgICAiIiIKLSAgICAgICAgYSA9IF9jb252ZXJ0X290aGVyKGEsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIGEudG9faW50ZWdyYWxfZXhhY3QoY29udGV4dD1zZWxmKQotCi0gICAgZGVmIHRvX2ludGVncmFsX3ZhbHVlKHNlbGYsIGEpOgotICAgICAgICAiIiJSb3VuZHMgdG8gYW4gaW50ZWdlci4KLQotICAgICAgICBXaGVuIHRoZSBvcGVyYW5kIGhhcyBhIG5lZ2F0aXZlIGV4cG9uZW50LCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lCi0gICAgICAgIGFzIHVzaW5nIHRoZSBxdWFudGl6ZSgpIG9wZXJhdGlvbiB1c2luZyB0aGUgZ2l2ZW4gb3BlcmFuZCBhcyB0aGUKLSAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KLSAgICAgICAgb2YgdGhlIG9wZXJhbmQgYXMgdGhlIHByZWNpc2lvbiBzZXR0aW5nLCBleGNlcHQgdGhhdCBubyBmbGFncyB3aWxsCi0gICAgICAgIGJlIHNldC4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlIGNvbnRleHQuCi0KLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcyLjEnKSkKLSAgICAgICAgRGVjaW1hbCgnMicpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwJykpCi0gICAgICAgIERlY2ltYWwoJzEwMCcpCi0gICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwLjAnKSkKLSAgICAgICAgRGVjaW1hbCgnMTAwJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMDEuNScpKQotICAgICAgICBEZWNpbWFsKCcxMDInKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy0xMDEuNScpKQotICAgICAgICBEZWNpbWFsKCctMTAyJykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCcxMEUrNScpKQotICAgICAgICBEZWNpbWFsKCcxLjBFKzYnKQotICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzcuODlFKzc3JykpCi0gICAgICAgIERlY2ltYWwoJzcuODlFKzc3JykKLSAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF92YWx1ZShEZWNpbWFsKCctSW5mJykpCi0gICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCi0gICAgICAgICIiIgotICAgICAgICBhID0gX2NvbnZlcnRfb3RoZXIoYSwgcmFpc2VpdD1UcnVlKQotICAgICAgICByZXR1cm4gYS50b19pbnRlZ3JhbF92YWx1ZShjb250ZXh0PXNlbGYpCi0KLSAgICAjIHRoZSBtZXRob2QgbmFtZSBjaGFuZ2VkLCBidXQgd2UgcHJvdmlkZSBhbHNvIHRoZSBvbGQgb25lLCBmb3IgY29tcGF0aWJpbGl0eQotICAgIHRvX2ludGVncmFsID0gdG9faW50ZWdyYWxfdmFsdWUKLQotY2xhc3MgX1dvcmtSZXAob2JqZWN0KToKLSAgICBfX3Nsb3RzX18gPSAoJ3NpZ24nLCdpbnQnLCdleHAnKQotICAgICMgc2lnbjogMCBvciAxCi0gICAgIyBpbnQ6ICBpbnQKLSAgICAjIGV4cDogIE5vbmUsIGludCwgb3Igc3RyaW5nCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9Tm9uZSk6Ci0gICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNpZ24gPSBOb25lCi0gICAgICAgICAgICBzZWxmLmludCA9IDAKLSAgICAgICAgICAgIHNlbGYuZXhwID0gTm9uZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIERlY2ltYWwpOgotICAgICAgICAgICAgc2VsZi5zaWduID0gdmFsdWUuX3NpZ24KLSAgICAgICAgICAgIHNlbGYuaW50ID0gaW50KHZhbHVlLl9pbnQpCi0gICAgICAgICAgICBzZWxmLmV4cCA9IHZhbHVlLl9leHAKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgYXNzZXJ0IGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKQotICAgICAgICAgICAgc2VsZi5zaWduID0gdmFsdWVbMF0KLSAgICAgICAgICAgIHNlbGYuaW50ID0gdmFsdWVbMV0KLSAgICAgICAgICAgIHNlbGYuZXhwID0gdmFsdWVbMl0KLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICIoJXIsICVyLCAlcikiICUgKHNlbGYuc2lnbiwgc2VsZi5pbnQsIHNlbGYuZXhwKQotCi0gICAgX19zdHJfXyA9IF9fcmVwcl9fCi0KLQotCi1kZWYgX25vcm1hbGl6ZShvcDEsIG9wMiwgcHJlYyA9IDApOgotICAgICIiIk5vcm1hbGl6ZXMgb3AxLCBvcDIgdG8gaGF2ZSB0aGUgc2FtZSBleHAgYW5kIGxlbmd0aCBvZiBjb2VmZmljaWVudC4KLQotICAgIERvbmUgZHVyaW5nIGFkZGl0aW9uLgotICAgICIiIgotICAgIGlmIG9wMS5leHAgPCBvcDIuZXhwOgotICAgICAgICB0bXAgPSBvcDIKLSAgICAgICAgb3RoZXIgPSBvcDEKLSAgICBlbHNlOgotICAgICAgICB0bXAgPSBvcDEKLSAgICAgICAgb3RoZXIgPSBvcDIKLQotICAgICMgTGV0IGV4cCA9IG1pbih0bXAuZXhwIC0gMSwgdG1wLmFkanVzdGVkKCkgLSBwcmVjaXNpb24gLSAxKS4KLSAgICAjIFRoZW4gYWRkaW5nIDEwKipleHAgdG8gdG1wIGhhcyB0aGUgc2FtZSBlZmZlY3QgKGFmdGVyIHJvdW5kaW5nKQotICAgICMgYXMgYWRkaW5nIGFueSBwb3NpdGl2ZSBxdWFudGl0eSBzbWFsbGVyIHRoYW4gMTAqKmV4cDsgc2ltaWxhcmx5Ci0gICAgIyBmb3Igc3VidHJhY3Rpb24uICBTbyBpZiBvdGhlciBpcyBzbWFsbGVyIHRoYW4gMTAqKmV4cCB3ZSByZXBsYWNlCi0gICAgIyBpdCB3aXRoIDEwKipleHAuICBUaGlzIGF2b2lkcyB0bXAuZXhwIC0gb3RoZXIuZXhwIGdldHRpbmcgdG9vIGxhcmdlLgotICAgIHRtcF9sZW4gPSBsZW4oc3RyKHRtcC5pbnQpKQotICAgIG90aGVyX2xlbiA9IGxlbihzdHIob3RoZXIuaW50KSkKLSAgICBleHAgPSB0bXAuZXhwICsgbWluKC0xLCB0bXBfbGVuIC0gcHJlYyAtIDIpCi0gICAgaWYgb3RoZXJfbGVuICsgb3RoZXIuZXhwIC0gMSA8IGV4cDoKLSAgICAgICAgb3RoZXIuaW50ID0gMQotICAgICAgICBvdGhlci5leHAgPSBleHAKLQotICAgIHRtcC5pbnQgKj0gMTAgKiogKHRtcC5leHAgLSBvdGhlci5leHApCi0gICAgdG1wLmV4cCA9IG90aGVyLmV4cAotICAgIHJldHVybiBvcDEsIG9wMgotCi0jIyMjIyBJbnRlZ2VyIGFyaXRobWV0aWMgZnVuY3Rpb25zIHVzZWQgYnkgbG4sIGxvZzEwLCBleHAgYW5kIF9fcG93X18gIyMjIyMKLQotX25iaXRzID0gaW50LmJpdF9sZW5ndGgKLQotZGVmIF9kZWNpbWFsX2xzaGlmdF9leGFjdChuLCBlKToKLSAgICAiIiIgR2l2ZW4gaW50ZWdlcnMgbiBhbmQgZSwgcmV0dXJuIG4gKiAxMCoqZSBpZiBpdCdzIGFuIGludGVnZXIsIGVsc2UgTm9uZS4KLQotICAgIFRoZSBjb21wdXRhdGlvbiBpcyBkZXNpZ25lZCB0byBhdm9pZCBjb21wdXRpbmcgbGFyZ2UgcG93ZXJzIG9mIDEwCi0gICAgdW5uZWNlc3NhcmlseS4KLQotICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMywgNCkKLSAgICAzMDAwMAotICAgID4+PiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoMzAwLCAtOTk5OTk5OTk5KSAgIyByZXR1cm5zIE5vbmUKLQotICAgICIiIgotICAgIGlmIG4gPT0gMDoKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbGlmIGUgPj0gMDoKLSAgICAgICAgcmV0dXJuIG4gKiAxMCoqZQotICAgIGVsc2U6Ci0gICAgICAgICMgdmFsX24gPSBsYXJnZXN0IHBvd2VyIG9mIDEwIGRpdmlkaW5nIG4uCi0gICAgICAgIHN0cl9uID0gc3RyKGFicyhuKSkKLSAgICAgICAgdmFsX24gPSBsZW4oc3RyX24pIC0gbGVuKHN0cl9uLnJzdHJpcCgnMCcpKQotICAgICAgICByZXR1cm4gTm9uZSBpZiB2YWxfbiA8IC1lIGVsc2UgbiAvLyAxMCoqLWUKLQotZGVmIF9zcXJ0X25lYXJlc3QobiwgYSk6Ci0gICAgIiIiQ2xvc2VzdCBpbnRlZ2VyIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcG9zaXRpdmUgaW50ZWdlciBuLiAgYSBpcwotICAgIGFuIGluaXRpYWwgYXBwcm94aW1hdGlvbiB0byB0aGUgc3F1YXJlIHJvb3QuICBBbnkgcG9zaXRpdmUgaW50ZWdlcgotICAgIHdpbGwgZG8gZm9yIGEsIGJ1dCB0aGUgY2xvc2VyIGEgaXMgdG8gdGhlIHNxdWFyZSByb290IG9mIG4gdGhlCi0gICAgZmFzdGVyIGNvbnZlcmdlbmNlIHdpbGwgYmUuCi0KLSAgICAiIiIKLSAgICBpZiBuIDw9IDAgb3IgYSA8PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJCb3RoIGFyZ3VtZW50cyB0byBfc3FydF9uZWFyZXN0IHNob3VsZCBiZSBwb3NpdGl2ZS4iKQotCi0gICAgYj0wCi0gICAgd2hpbGUgYSAhPSBiOgotICAgICAgICBiLCBhID0gYSwgYS0tbi8vYT4+MQotICAgIHJldHVybiBhCi0KLWRlZiBfcnNoaWZ0X25lYXJlc3QoeCwgc2hpZnQpOgotICAgICIiIkdpdmVuIGFuIGludGVnZXIgeCBhbmQgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIHNoaWZ0LCByZXR1cm4gY2xvc2VzdAotICAgIGludGVnZXIgdG8geCAvIDIqKnNoaWZ0OyB1c2Ugcm91bmQtdG8tZXZlbiBpbiBjYXNlIG9mIGEgdGllLgotCi0gICAgIiIiCi0gICAgYiwgcSA9IDEgPDwgc2hpZnQsIHggPj4gc2hpZnQKLSAgICByZXR1cm4gcSArICgyKih4ICYgKGItMSkpICsgKHEmMSkgPiBiKQotCi1kZWYgX2Rpdl9uZWFyZXN0KGEsIGIpOgotICAgICIiIkNsb3Nlc3QgaW50ZWdlciB0byBhL2IsIGEgYW5kIGIgcG9zaXRpdmUgaW50ZWdlcnM7IHJvdW5kcyB0byBldmVuCi0gICAgaW4gdGhlIGNhc2Ugb2YgYSB0aWUuCi0KLSAgICAiIiIKLSAgICBxLCByID0gZGl2bW9kKGEsIGIpCi0gICAgcmV0dXJuIHEgKyAoMipyICsgKHEmMSkgPiBiKQotCi1kZWYgX2lsb2coeCwgTSwgTCA9IDgpOgotICAgICIiIkludGVnZXIgYXBwcm94aW1hdGlvbiB0byBNKmxvZyh4L00pLCB3aXRoIGFic29sdXRlIGVycm9yIGJvdW5kYWJsZQotICAgIGluIHRlcm1zIG9ubHkgb2YgeC9NLgotCi0gICAgR2l2ZW4gcG9zaXRpdmUgaW50ZWdlcnMgeCBhbmQgTSwgcmV0dXJuIGFuIGludGVnZXIgYXBwcm94aW1hdGlvbiB0bwotICAgIE0gKiBsb2coeC9NKS4gIEZvciBMID0gOCBhbmQgMC4xIDw9IHgvTSA8PSAxMCB0aGUgZGlmZmVyZW5jZQotICAgIGJldHdlZW4gdGhlIGFwcHJveGltYXRpb24gYW5kIHRoZSBleGFjdCByZXN1bHQgaXMgYXQgbW9zdCAyMi4gIEZvcgotICAgIEwgPSA4IGFuZCAxLjAgPD0geC9NIDw9IDEwLjAgdGhlIGRpZmZlcmVuY2UgaXMgYXQgbW9zdCAxNS4gIEluCi0gICAgYm90aCBjYXNlcyB0aGVzZSBhcmUgdXBwZXIgYm91bmRzIG9uIHRoZSBlcnJvcjsgaXQgd2lsbCB1c3VhbGx5IGJlCi0gICAgbXVjaCBzbWFsbGVyLiIiIgotCi0gICAgIyBUaGUgYmFzaWMgYWxnb3JpdGhtIGlzIHRoZSBmb2xsb3dpbmc6IGxldCBsb2cxcCBiZSB0aGUgZnVuY3Rpb24KLSAgICAjIGxvZzFwKHgpID0gbG9nKDEreCkuICBUaGVuIGxvZyh4L00pID0gbG9nMXAoKHgtTSkvTSkuICBXZSB1c2UKLSAgICAjIHRoZSByZWR1Y3Rpb24KLSAgICAjCi0gICAgIyAgICBsb2cxcCh5KSA9IDIqbG9nMXAoeS8oMStzcXJ0KDEreSkpKQotICAgICMKLSAgICAjIHJlcGVhdGVkbHkgdW50aWwgdGhlIGFyZ3VtZW50IHRvIGxvZzFwIGlzIHNtYWxsICg8IDIqKi1MIGluCi0gICAgIyBhYnNvbHV0ZSB2YWx1ZSkuICBGb3Igc21hbGwgeSB3ZSBjYW4gdXNlIHRoZSBUYXlsb3Igc2VyaWVzCi0gICAgIyBleHBhbnNpb24KLSAgICAjCi0gICAgIyAgICBsb2cxcCh5KSB+IHkgLSB5KioyLzIgKyB5KiozLzMgLSAuLi4gLSAoLXkpKipUL1QKLSAgICAjCi0gICAgIyB0cnVuY2F0aW5nIGF0IFQgc3VjaCB0aGF0IHkqKlQgaXMgc21hbGwgZW5vdWdoLiAgVGhlIHdob2xlCi0gICAgIyBjb21wdXRhdGlvbiBpcyBjYXJyaWVkIG91dCBpbiBhIGZvcm0gb2YgZml4ZWQtcG9pbnQgYXJpdGhtZXRpYywKLSAgICAjIHdpdGggYSByZWFsIG51bWJlciB6IGJlaW5nIHJlcHJlc2VudGVkIGJ5IGFuIGludGVnZXIKLSAgICAjIGFwcHJveGltYXRpb24gdG8geipNLiAgVG8gYXZvaWQgbG9zcyBvZiBwcmVjaXNpb24sIHRoZSB5IGJlbG93Ci0gICAgIyBpcyBhY3R1YWxseSBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gMioqUip5Kk0sIHdoZXJlIFIgaXMgdGhlCi0gICAgIyBudW1iZXIgb2YgcmVkdWN0aW9ucyBwZXJmb3JtZWQgc28gZmFyLgotCi0gICAgeSA9IHgtTQotICAgICMgYXJndW1lbnQgcmVkdWN0aW9uOyBSID0gbnVtYmVyIG9mIHJlZHVjdGlvbnMgcGVyZm9ybWVkCi0gICAgUiA9IDAKLSAgICB3aGlsZSAoUiA8PSBMIGFuZCBhYnMoeSkgPDwgTC1SID49IE0gb3IKLSAgICAgICAgICAgUiA+IEwgYW5kIGFicyh5KSA+PiBSLUwgPj0gTSk6Ci0gICAgICAgIHkgPSBfZGl2X25lYXJlc3QoKE0qeSkgPDwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNICsgX3NxcnRfbmVhcmVzdChNKihNK19yc2hpZnRfbmVhcmVzdCh5LCBSKSksIE0pKQotICAgICAgICBSICs9IDEKLQotICAgICMgVGF5bG9yIHNlcmllcyB3aXRoIFQgdGVybXMKLSAgICBUID0gLWludCgtMTAqbGVuKHN0cihNKSkvLygzKkwpKQotICAgIHlzaGlmdCA9IF9yc2hpZnRfbmVhcmVzdCh5LCBSKQotICAgIHcgPSBfZGl2X25lYXJlc3QoTSwgVCkKLSAgICBmb3IgayBpbiByYW5nZShULTEsIDAsIC0xKToKLSAgICAgICAgdyA9IF9kaXZfbmVhcmVzdChNLCBrKSAtIF9kaXZfbmVhcmVzdCh5c2hpZnQqdywgTSkKLQotICAgIHJldHVybiBfZGl2X25lYXJlc3Qodyp5LCBNKQotCi1kZWYgX2Rsb2cxMChjLCBlLCBwKToKLSAgICAiIiJHaXZlbiBpbnRlZ2VycyBjLCBlIGFuZCBwIHdpdGggYyA+IDAsIHAgPj0gMCwgY29tcHV0ZSBhbiBpbnRlZ2VyCi0gICAgYXBwcm94aW1hdGlvbiB0byAxMCoqcCAqIGxvZzEwKGMqMTAqKmUpLCB3aXRoIGFuIGFic29sdXRlIGVycm9yIG9mCi0gICAgYXQgbW9zdCAxLiAgQXNzdW1lcyB0aGF0IGMqMTAqKmUgaXMgbm90IGV4YWN0bHkgMS4iIiIKLQotICAgICMgaW5jcmVhc2UgcHJlY2lzaW9uIGJ5IDI7IGNvbXBlbnNhdGUgZm9yIHRoaXMgYnkgZGl2aWRpbmcKLSAgICAjIGZpbmFsIHJlc3VsdCBieSAxMDAKLSAgICBwICs9IDIKLQotICAgICMgd3JpdGUgYyoxMCoqZSBhcyBkKjEwKipmIHdpdGggZWl0aGVyOgotICAgICMgICBmID49IDAgYW5kIDEgPD0gZCA8PSAxMCwgb3IKLSAgICAjICAgZiA8PSAwIGFuZCAwLjEgPD0gZCA8PSAxLgotICAgICMgVGh1cyBmb3IgYyoxMCoqZSBjbG9zZSB0byAxLCBmID0gMAotICAgIGwgPSBsZW4oc3RyKGMpKQotICAgIGYgPSBlK2wgLSAoZStsID49IDEpCi0KLSAgICBpZiBwID4gMDoKLSAgICAgICAgTSA9IDEwKipwCi0gICAgICAgIGsgPSBlK3AtZgotICAgICAgICBpZiBrID49IDA6Ci0gICAgICAgICAgICBjICo9IDEwKiprCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjID0gX2Rpdl9uZWFyZXN0KGMsIDEwKiotaykKLQotICAgICAgICBsb2dfZCA9IF9pbG9nKGMsIE0pICMgZXJyb3IgPCA1ICsgMjIgPSAyNwotICAgICAgICBsb2dfMTAgPSBfbG9nMTBfZGlnaXRzKHApICMgZXJyb3IgPCAxCi0gICAgICAgIGxvZ19kID0gX2Rpdl9uZWFyZXN0KGxvZ19kKk0sIGxvZ18xMCkKLSAgICAgICAgbG9nX3RlbnBvd2VyID0gZipNICMgZXhhY3QKLSAgICBlbHNlOgotICAgICAgICBsb2dfZCA9IDAgICMgZXJyb3IgPCAyLjMxCi0gICAgICAgIGxvZ190ZW5wb3dlciA9IF9kaXZfbmVhcmVzdChmLCAxMCoqLXApICMgZXJyb3IgPCAwLjUKLQotICAgIHJldHVybiBfZGl2X25lYXJlc3QobG9nX3RlbnBvd2VyK2xvZ19kLCAxMDApCi0KLWRlZiBfZGxvZyhjLCBlLCBwKToKLSAgICAiIiJHaXZlbiBpbnRlZ2VycyBjLCBlIGFuZCBwIHdpdGggYyA+IDAsIGNvbXB1dGUgYW4gaW50ZWdlcgotICAgIGFwcHJveGltYXRpb24gdG8gMTAqKnAgKiBsb2coYyoxMCoqZSksIHdpdGggYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICBhdCBtb3N0IDEuICBBc3N1bWVzIHRoYXQgYyoxMCoqZSBpcyBub3QgZXhhY3RseSAxLiIiIgotCi0gICAgIyBJbmNyZWFzZSBwcmVjaXNpb24gYnkgMi4gVGhlIHByZWNpc2lvbiBpbmNyZWFzZSBpcyBjb21wZW5zYXRlZAotICAgICMgZm9yIGF0IHRoZSBlbmQgd2l0aCBhIGRpdmlzaW9uIGJ5IDEwMC4KLSAgICBwICs9IDIKLQotICAgICMgcmV3cml0ZSBjKjEwKiplIGFzIGQqMTAqKmYgd2l0aCBlaXRoZXIgZiA+PSAwIGFuZCAxIDw9IGQgPD0gMTAsCi0gICAgIyBvciBmIDw9IDAgYW5kIDAuMSA8PSBkIDw9IDEuICBUaGVuIHdlIGNhbiBjb21wdXRlIDEwKipwICogbG9nKGMqMTAqKmUpCi0gICAgIyBhcyAxMCoqcCAqIGxvZyhkKSArIDEwKipwKmYgKiBsb2coMTApLgotICAgIGwgPSBsZW4oc3RyKGMpKQotICAgIGYgPSBlK2wgLSAoZStsID49IDEpCi0KLSAgICAjIGNvbXB1dGUgYXBwcm94aW1hdGlvbiB0byAxMCoqcCpsb2coZCksIHdpdGggZXJyb3IgPCAyNwotICAgIGlmIHAgPiAwOgotICAgICAgICBrID0gZStwLWYKLSAgICAgICAgaWYgayA+PSAwOgotICAgICAgICAgICAgYyAqPSAxMCoqawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYyA9IF9kaXZfbmVhcmVzdChjLCAxMCoqLWspICAjIGVycm9yIG9mIDw9IDAuNSBpbiBjCi0KLSAgICAgICAgIyBfaWxvZyBtYWduaWZpZXMgZXhpc3RpbmcgZXJyb3IgaW4gYyBieSBhIGZhY3RvciBvZiBhdCBtb3N0IDEwCi0gICAgICAgIGxvZ19kID0gX2lsb2coYywgMTAqKnApICMgZXJyb3IgPCA1ICsgMjIgPSAyNwotICAgIGVsc2U6Ci0gICAgICAgICMgcCA8PSAwOiBqdXN0IGFwcHJveGltYXRlIHRoZSB3aG9sZSB0aGluZyBieSAwOyBlcnJvciA8IDIuMzEKLSAgICAgICAgbG9nX2QgPSAwCi0KLSAgICAjIGNvbXB1dGUgYXBwcm94aW1hdGlvbiB0byBmKjEwKipwKmxvZygxMCksIHdpdGggZXJyb3IgPCAxMS4KLSAgICBpZiBmOgotICAgICAgICBleHRyYSA9IGxlbihzdHIoYWJzKGYpKSktMQotICAgICAgICBpZiBwICsgZXh0cmEgPj0gMDoKLSAgICAgICAgICAgICMgZXJyb3IgaW4gZiAqIF9sb2cxMF9kaWdpdHMocCtleHRyYSkgPCB8ZnwgKiAxID0gfGZ8Ci0gICAgICAgICAgICAjIGFmdGVyIGRpdmlzaW9uLCBlcnJvciA8IHxmfC8xMCoqZXh0cmEgKyAwLjUgPCAxMCArIDAuNSA8IDExCi0gICAgICAgICAgICBmX2xvZ190ZW4gPSBfZGl2X25lYXJlc3QoZipfbG9nMTBfZGlnaXRzKHArZXh0cmEpLCAxMCoqZXh0cmEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmX2xvZ190ZW4gPSAwCi0gICAgZWxzZToKLSAgICAgICAgZl9sb2dfdGVuID0gMAotCi0gICAgIyBlcnJvciBpbiBzdW0gPCAxMSsyNyA9IDM4OyBlcnJvciBhZnRlciBkaXZpc2lvbiA8IDAuMzggKyAwLjUgPCAxCi0gICAgcmV0dXJuIF9kaXZfbmVhcmVzdChmX2xvZ190ZW4gKyBsb2dfZCwgMTAwKQotCi1jbGFzcyBfTG9nMTBNZW1vaXplKG9iamVjdCk6Ci0gICAgIiIiQ2xhc3MgdG8gY29tcHV0ZSwgc3RvcmUsIGFuZCBhbGxvdyByZXRyaWV2YWwgb2YsIGRpZ2l0cyBvZiB0aGUKLSAgICBjb25zdGFudCBsb2coMTApID0gMi4zMDI1ODUuLi4uICBUaGlzIGNvbnN0YW50IGlzIG5lZWRlZCBieQotICAgIERlY2ltYWwubG4sIERlY2ltYWwubG9nMTAsIERlY2ltYWwuZXhwIGFuZCBEZWNpbWFsLl9fcG93X18uIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmRpZ2l0cyA9ICIyMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjA3NjAxMTAxNDg4NiIKLQotICAgIGRlZiBnZXRkaWdpdHMoc2VsZiwgcCk6Ci0gICAgICAgICIiIkdpdmVuIGFuIGludGVnZXIgcCA+PSAwLCByZXR1cm4gZmxvb3IoMTAqKnApKmxvZygxMCkuCi0KLSAgICAgICAgRm9yIGV4YW1wbGUsIHNlbGYuZ2V0ZGlnaXRzKDMpIHJldHVybnMgMjMwMi4KLSAgICAgICAgIiIiCi0gICAgICAgICMgZGlnaXRzIGFyZSBzdG9yZWQgYXMgYSBzdHJpbmcsIGZvciBxdWljayBjb252ZXJzaW9uIHRvCi0gICAgICAgICMgaW50ZWdlciBpbiB0aGUgY2FzZSB0aGF0IHdlJ3ZlIGFscmVhZHkgY29tcHV0ZWQgZW5vdWdoCi0gICAgICAgICMgZGlnaXRzOyB0aGUgc3RvcmVkIGRpZ2l0cyBzaG91bGQgYWx3YXlzIGJlIGNvcnJlY3QKLSAgICAgICAgIyAodHJ1bmNhdGVkLCBub3Qgcm91bmRlZCB0byBuZWFyZXN0KS4KLSAgICAgICAgaWYgcCA8IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwIHNob3VsZCBiZSBub25uZWdhdGl2ZSIpCi0KLSAgICAgICAgaWYgcCA+PSBsZW4oc2VsZi5kaWdpdHMpOgotICAgICAgICAgICAgIyBjb21wdXRlIHArMywgcCs2LCBwKzksIC4uLiBkaWdpdHM7IGNvbnRpbnVlIHVudGlsIGF0Ci0gICAgICAgICAgICAjIGxlYXN0IG9uZSBvZiB0aGUgZXh0cmEgZGlnaXRzIGlzIG5vbnplcm8KLSAgICAgICAgICAgIGV4dHJhID0gMwotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAjIGNvbXB1dGUgcCtleHRyYSBkaWdpdHMsIGNvcnJlY3QgdG8gd2l0aGluIDF1bHAKLSAgICAgICAgICAgICAgICBNID0gMTAqKihwK2V4dHJhKzIpCi0gICAgICAgICAgICAgICAgZGlnaXRzID0gc3RyKF9kaXZfbmVhcmVzdChfaWxvZygxMCpNLCBNKSwgMTAwKSkKLSAgICAgICAgICAgICAgICBpZiBkaWdpdHNbLWV4dHJhOl0gIT0gJzAnKmV4dHJhOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4dHJhICs9IDMKLSAgICAgICAgICAgICMga2VlcCBhbGwgcmVsaWFibGUgZGlnaXRzIHNvIGZhcjsgcmVtb3ZlIHRyYWlsaW5nIHplcm9zCi0gICAgICAgICAgICAjIGFuZCBuZXh0IG5vbnplcm8gZGlnaXQKLSAgICAgICAgICAgIHNlbGYuZGlnaXRzID0gZGlnaXRzLnJzdHJpcCgnMCcpWzotMV0KLSAgICAgICAgcmV0dXJuIGludChzZWxmLmRpZ2l0c1s6cCsxXSkKLQotX2xvZzEwX2RpZ2l0cyA9IF9Mb2cxME1lbW9pemUoKS5nZXRkaWdpdHMKLQotZGVmIF9pZXhwKHgsIE0sIEw9OCk6Ci0gICAgIiIiR2l2ZW4gaW50ZWdlcnMgeCBhbmQgTSwgTSA+IDAsIHN1Y2ggdGhhdCB4L00gaXMgc21hbGwgaW4gYWJzb2x1dGUKLSAgICB2YWx1ZSwgY29tcHV0ZSBhbiBpbnRlZ2VyIGFwcHJveGltYXRpb24gdG8gTSpleHAoeC9NKS4gIEZvciAwIDw9Ci0gICAgeC9NIDw9IDIuNCwgdGhlIGFic29sdXRlIGVycm9yIGluIHRoZSByZXN1bHQgaXMgYm91bmRlZCBieSA2MCAoYW5kCi0gICAgaXMgdXN1YWxseSBtdWNoIHNtYWxsZXIpLiIiIgotCi0gICAgIyBBbGdvcml0aG06IHRvIGNvbXB1dGUgZXhwKHopIGZvciBhIHJlYWwgbnVtYmVyIHosIGZpcnN0IGRpdmlkZSB6Ci0gICAgIyBieSBhIHN1aXRhYmxlIHBvd2VyIFIgb2YgMiBzbyB0aGF0IHx6LzIqKlJ8IDwgMioqLUwuICBUaGVuCi0gICAgIyBjb21wdXRlIGV4cG0xKHovMioqUikgPSBleHAoei8yKipSKSAtIDEgdXNpbmcgdGhlIHVzdWFsIFRheWxvcgotICAgICMgc2VyaWVzCi0gICAgIwotICAgICMgICAgIGV4cG0xKHgpID0geCArIHgqKjIvMiEgKyB4KiozLzMhICsgLi4uCi0gICAgIwotICAgICMgTm93IHVzZSB0aGUgaWRlbnRpdHkKLSAgICAjCi0gICAgIyAgICAgZXhwbTEoMngpID0gZXhwbTEoeCkqKGV4cG0xKHgpKzIpCi0gICAgIwotICAgICMgUiB0aW1lcyB0byBjb21wdXRlIHRoZSBzZXF1ZW5jZSBleHBtMSh6LzIqKlIpLAotICAgICMgZXhwbTEoei8yKiooUi0xKSksIC4uLiAsIGV4cCh6LzIpLCBleHAoeikuCi0KLSAgICAjIEZpbmQgUiBzdWNoIHRoYXQgeC8yKipSL00gPD0gMioqLUwKLSAgICBSID0gX25iaXRzKCh4PDxMKS8vTSkKLQotICAgICMgVGF5bG9yIHNlcmllcy4gICgyKipMKSoqVCA+IE0KLSAgICBUID0gLWludCgtMTAqbGVuKHN0cihNKSkvLygzKkwpKQotICAgIHkgPSBfZGl2X25lYXJlc3QoeCwgVCkKLSAgICBNc2hpZnQgPSBNPDxSCi0gICAgZm9yIGkgaW4gcmFuZ2UoVC0xLCAwLCAtMSk6Ci0gICAgICAgIHkgPSBfZGl2X25lYXJlc3QoeCooTXNoaWZ0ICsgeSksIE1zaGlmdCAqIGkpCi0KLSAgICAjIEV4cGFuc2lvbgotICAgIGZvciBrIGluIHJhbmdlKFItMSwgLTEsIC0xKToKLSAgICAgICAgTXNoaWZ0ID0gTTw8KGsrMikKLSAgICAgICAgeSA9IF9kaXZfbmVhcmVzdCh5Kih5K01zaGlmdCksIE1zaGlmdCkKLQotICAgIHJldHVybiBNK3kKLQotZGVmIF9kZXhwKGMsIGUsIHApOgotICAgICIiIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiB0byBleHAoYyoxMCoqZSksIHdpdGggcCBkZWNpbWFsIHBsYWNlcyBvZgotICAgIHByZWNpc2lvbi4KLQotICAgIFJldHVybnMgaW50ZWdlcnMgZCwgZiBzdWNoIHRoYXQ6Ci0KLSAgICAgIDEwKioocC0xKSA8PSBkIDw9IDEwKipwLCBhbmQKLSAgICAgIChkLTEpKjEwKipmIDwgZXhwKGMqMTAqKmUpIDwgKGQrMSkqMTAqKmYKLQotICAgIEluIG90aGVyIHdvcmRzLCBkKjEwKipmIGlzIGFuIGFwcHJveGltYXRpb24gdG8gZXhwKGMqMTAqKmUpIHdpdGggcAotICAgIGRpZ2l0cyBvZiBwcmVjaXNpb24sIGFuZCB3aXRoIGFuIGVycm9yIGluIGQgb2YgYXQgbW9zdCAxLiAgVGhpcyBpcwotICAgIGFsbW9zdCwgYnV0IG5vdCBxdWl0ZSwgdGhlIHNhbWUgYXMgdGhlIGVycm9yIGJlaW5nIDwgMXVscDogd2hlbiBkCi0gICAgPSAxMCoqKHAtMSkgdGhlIGVycm9yIGNvdWxkIGJlIHVwIHRvIDEwIHVscC4iIiIKLQotICAgICMgd2UnbGwgY2FsbCBpZXhwIHdpdGggTSA9IDEwKioocCsyKSwgZ2l2aW5nIHArMyBkaWdpdHMgb2YgcHJlY2lzaW9uCi0gICAgcCArPSAyCi0KLSAgICAjIGNvbXB1dGUgbG9nKDEwKSB3aXRoIGV4dHJhIHByZWNpc2lvbiA9IGFkanVzdGVkIGV4cG9uZW50IG9mIGMqMTAqKmUKLSAgICBleHRyYSA9IG1heCgwLCBlICsgbGVuKHN0cihjKSkgLSAxKQotICAgIHEgPSBwICsgZXh0cmEKLQotICAgICMgY29tcHV0ZSBxdW90aWVudCBjKjEwKiplLyhsb2coMTApKSA9IGMqMTAqKihlK3EpLyhsb2coMTApKjEwKipxKSwKLSAgICAjIHJvdW5kaW5nIGRvd24KLSAgICBzaGlmdCA9IGUrcQotICAgIGlmIHNoaWZ0ID49IDA6Ci0gICAgICAgIGNzaGlmdCA9IGMqMTAqKnNoaWZ0Ci0gICAgZWxzZToKLSAgICAgICAgY3NoaWZ0ID0gYy8vMTAqKi1zaGlmdAotICAgIHF1b3QsIHJlbSA9IGRpdm1vZChjc2hpZnQsIF9sb2cxMF9kaWdpdHMocSkpCi0KLSAgICAjIHJlZHVjZSByZW1haW5kZXIgYmFjayB0byBvcmlnaW5hbCBwcmVjaXNpb24KLSAgICByZW0gPSBfZGl2X25lYXJlc3QocmVtLCAxMCoqZXh0cmEpCi0KLSAgICAjIGVycm9yIGluIHJlc3VsdCBvZiBfaWV4cCA8IDEyMDsgIGVycm9yIGFmdGVyIGRpdmlzaW9uIDwgMC42MgotICAgIHJldHVybiBfZGl2X25lYXJlc3QoX2lleHAocmVtLCAxMCoqcCksIDEwMDApLCBxdW90IC0gcCArIDMKLQotZGVmIF9kcG93ZXIoeGMsIHhlLCB5YywgeWUsIHApOgotICAgICIiIkdpdmVuIGludGVnZXJzIHhjLCB4ZSwgeWMgYW5kIHllIHJlcHJlc2VudGluZyBEZWNpbWFscyB4ID0geGMqMTAqKnhlIGFuZAotICAgIHkgPSB5YyoxMCoqeWUsIGNvbXB1dGUgeCoqeS4gIFJldHVybnMgYSBwYWlyIG9mIGludGVnZXJzIChjLCBlKSBzdWNoIHRoYXQ6Ci0KLSAgICAgIDEwKioocC0xKSA8PSBjIDw9IDEwKipwLCBhbmQKLSAgICAgIChjLTEpKjEwKiplIDwgeCoqeSA8IChjKzEpKjEwKiplCi0KLSAgICBpbiBvdGhlciB3b3JkcywgYyoxMCoqZSBpcyBhbiBhcHByb3hpbWF0aW9uIHRvIHgqKnkgd2l0aCBwIGRpZ2l0cwotICAgIG9mIHByZWNpc2lvbiwgYW5kIHdpdGggYW4gZXJyb3IgaW4gYyBvZiBhdCBtb3N0IDEuICAoVGhpcyBpcwotICAgIGFsbW9zdCwgYnV0IG5vdCBxdWl0ZSwgdGhlIHNhbWUgYXMgdGhlIGVycm9yIGJlaW5nIDwgMXVscDogd2hlbiBjCi0gICAgPT0gMTAqKihwLTEpIHdlIGNhbiBvbmx5IGd1YXJhbnRlZSBlcnJvciA8IDEwdWxwLikKLQotICAgIFdlIGFzc3VtZSB0aGF0OiB4IGlzIHBvc2l0aXZlIGFuZCBub3QgZXF1YWwgdG8gMSwgYW5kIHkgaXMgbm9uemVyby4KLSAgICAiIiIKLQotICAgICMgRmluZCBiIHN1Y2ggdGhhdCAxMCoqKGItMSkgPD0gfHl8IDw9IDEwKipiCi0gICAgYiA9IGxlbihzdHIoYWJzKHljKSkpICsgeWUKLQotICAgICMgbG9nKHgpID0gbHhjKjEwKiooLXAtYi0xKSwgdG8gcCtiKzEgcGxhY2VzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50Ci0gICAgbHhjID0gX2Rsb2coeGMsIHhlLCBwK2IrMSkKLQotICAgICMgY29tcHV0ZSBwcm9kdWN0IHkqbG9nKHgpID0geWMqbHhjKjEwKiooLXAtYi0xK3llKSA9IHBjKjEwKiooLXAtMSkKLSAgICBzaGlmdCA9IHllLWIKLSAgICBpZiBzaGlmdCA+PSAwOgotICAgICAgICBwYyA9IGx4Yyp5YyoxMCoqc2hpZnQKLSAgICBlbHNlOgotICAgICAgICBwYyA9IF9kaXZfbmVhcmVzdChseGMqeWMsIDEwKiotc2hpZnQpCi0KLSAgICBpZiBwYyA9PSAwOgotICAgICAgICAjIHdlIHByZWZlciBhIHJlc3VsdCB0aGF0IGlzbid0IGV4YWN0bHkgMTsgdGhpcyBtYWtlcyBpdAotICAgICAgICAjIGVhc2llciB0byBjb21wdXRlIGEgY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0IGluIF9fcG93X18KLSAgICAgICAgaWYgKChsZW4oc3RyKHhjKSkgKyB4ZSA+PSAxKSA9PSAoeWMgPiAwKSk6ICMgaWYgeCoqeSA+IDE6Ci0gICAgICAgICAgICBjb2VmZiwgZXhwID0gMTAqKihwLTEpKzEsIDEtcAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29lZmYsIGV4cCA9IDEwKipwLTEsIC1wCi0gICAgZWxzZToKLSAgICAgICAgY29lZmYsIGV4cCA9IF9kZXhwKHBjLCAtKHArMSksIHArMSkKLSAgICAgICAgY29lZmYgPSBfZGl2X25lYXJlc3QoY29lZmYsIDEwKQotICAgICAgICBleHAgKz0gMQotCi0gICAgcmV0dXJuIGNvZWZmLCBleHAKLQotZGVmIF9sb2cxMF9sYihjLCBjb3JyZWN0aW9uID0gewotICAgICAgICAnMSc6IDEwMCwgJzInOiA3MCwgJzMnOiA1MywgJzQnOiA0MCwgJzUnOiAzMSwKLSAgICAgICAgJzYnOiAyMywgJzcnOiAxNiwgJzgnOiAxMCwgJzknOiA1fSk6Ci0gICAgIiIiQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciAxMDAqbG9nMTAoYykgZm9yIGEgcG9zaXRpdmUgaW50ZWdlciBjLiIiIgotICAgIGlmIGMgPD0gMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGFyZ3VtZW50IHRvIF9sb2cxMF9sYiBzaG91bGQgYmUgbm9ubmVnYXRpdmUuIikKLSAgICBzdHJfYyA9IHN0cihjKQotICAgIHJldHVybiAxMDAqbGVuKHN0cl9jKSAtIGNvcnJlY3Rpb25bc3RyX2NbMF1dCi0KLSMjIyMjIEhlbHBlciBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi1kZWYgX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9RmFsc2UsIGFsbG93X2Zsb2F0PUZhbHNlKToKLSAgICAiIiJDb252ZXJ0IG90aGVyIHRvIERlY2ltYWwuCi0KLSAgICBWZXJpZmllcyB0aGF0IGl0J3Mgb2sgdG8gdXNlIGluIGFuIGltcGxpY2l0IGNvbnN0cnVjdGlvbi4KLSAgICBJZiBhbGxvd19mbG9hdCBpcyB0cnVlLCBhbGxvdyBjb252ZXJzaW9uIGZyb20gZmxvYXQ7ICB0aGlzCi0gICAgaXMgdXNlZCBpbiB0aGUgY29tcGFyaXNvbiBtZXRob2RzIChfX2VxX18gYW5kIGZyaWVuZHMpLgotCi0gICAgIiIiCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGVjaW1hbCk6Ci0gICAgICAgIHJldHVybiBvdGhlcgotICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGludCk6Ci0gICAgICAgIHJldHVybiBEZWNpbWFsKG90aGVyKQotICAgIGlmIGFsbG93X2Zsb2F0IGFuZCBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6Ci0gICAgICAgIHJldHVybiBEZWNpbWFsLmZyb21fZmxvYXQob3RoZXIpCi0KLSAgICBpZiByYWlzZWl0OgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWwiICUgb3RoZXIpCi0gICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0KLWRlZiBfY29udmVydF9mb3JfY29tcGFyaXNvbihzZWxmLCBvdGhlciwgZXF1YWxpdHlfb3A9RmFsc2UpOgotICAgICIiIkdpdmVuIGEgRGVjaW1hbCBpbnN0YW5jZSBzZWxmIGFuZCBhIFB5dGhvbiBvYmplY3Qgb3RoZXIsIHJldHVybgotICAgIGEgcGFpciAocywgbykgb2YgRGVjaW1hbCBpbnN0YW5jZXMgc3VjaCB0aGF0ICJzIG9wIG8iIGlzCi0gICAgZXF1aXZhbGVudCB0byAic2VsZiBvcCBvdGhlciIgZm9yIGFueSBvZiB0aGUgNiBjb21wYXJpc29uCi0gICAgb3BlcmF0b3JzICJvcCIuCi0KLSAgICAiIiIKLSAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBEZWNpbWFsKToKLSAgICAgICAgcmV0dXJuIHNlbGYsIG90aGVyCi0KLSAgICAjIENvbXBhcmlzb24gd2l0aCBhIFJhdGlvbmFsIGluc3RhbmNlIChhbHNvIGluY2x1ZGVzIGludGVnZXJzKToKLSAgICAjIHNlbGYgb3Agbi9kIDw9PiBzZWxmKmQgb3AgbiAoZm9yIG4gYW5kIGQgaW50ZWdlcnMsIGQgcG9zaXRpdmUpLgotICAgICMgQSBOYU4gb3IgaW5maW5pdHkgY2FuIGJlIGxlZnQgdW5jaGFuZ2VkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZQotICAgICMgY29tcGFyaXNvbiByZXN1bHQuCi0gICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX251bWJlcnMuUmF0aW9uYWwpOgotICAgICAgICBpZiBub3Qgc2VsZi5faXNfc3BlY2lhbDoKLSAgICAgICAgICAgIHNlbGYgPSBfZGVjX2Zyb21fdHJpcGxlKHNlbGYuX3NpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoaW50KHNlbGYuX2ludCkgKiBvdGhlci5kZW5vbWluYXRvciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHApCi0gICAgICAgIHJldHVybiBzZWxmLCBEZWNpbWFsKG90aGVyLm51bWVyYXRvcikKLQotICAgICMgQ29tcGFyaXNvbnMgd2l0aCBmbG9hdCBhbmQgY29tcGxleCB0eXBlcy4gID09IGFuZCAhPSBjb21wYXJpc29ucwotICAgICMgd2l0aCBjb21wbGV4IG51bWJlcnMgc2hvdWxkIHN1Y2NlZWQsIHJldHVybmluZyBlaXRoZXIgVHJ1ZSBvciBGYWxzZQotICAgICMgYXMgYXBwcm9wcmlhdGUuICBPdGhlciBjb21wYXJpc29ucyByZXR1cm4gTm90SW1wbGVtZW50ZWQuCi0gICAgaWYgZXF1YWxpdHlfb3AgYW5kIGlzaW5zdGFuY2Uob3RoZXIsIF9udW1iZXJzLkNvbXBsZXgpIGFuZCBvdGhlci5pbWFnID09IDA6Ci0gICAgICAgIG90aGVyID0gb3RoZXIucmVhbAotICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGZsb2F0KToKLSAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQotICAgICAgICBpZiBlcXVhbGl0eV9vcDoKLSAgICAgICAgICAgIGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dID0gMQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSBlbmFibGVkIikKLSAgICAgICAgcmV0dXJuIHNlbGYsIERlY2ltYWwuZnJvbV9mbG9hdChvdGhlcikKLSAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQsIE5vdEltcGxlbWVudGVkCi0KLQotIyMjIyMgU2V0dXAgU3BlY2lmaWMgQ29udGV4dHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBUaGUgZGVmYXVsdCBjb250ZXh0IHByb3RvdHlwZSB1c2VkIGJ5IENvbnRleHQoKQotIyBJcyBtdXRhYmxlLCBzbyB0aGF0IG5ldyBjb250ZXh0cyBjYW4gaGF2ZSBkaWZmZXJlbnQgZGVmYXVsdCB2YWx1ZXMKLQotRGVmYXVsdENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sCi0gICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb25dLAotICAgICAgICBmbGFncz1bXSwKLSAgICAgICAgRW1heD05OTk5OTksCi0gICAgICAgIEVtaW49LTk5OTk5OSwKLSAgICAgICAgY2FwaXRhbHM9MSwKLSAgICAgICAgY2xhbXA9MAotKQotCi0jIFByZS1tYWRlIGFsdGVybmF0ZSBjb250ZXh0cyBvZmZlcmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uCi0jIERvbid0IGNoYW5nZSB0aGVzZTsgdGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gc2VsZWN0IHRoZXNlCi0jIGNvbnRleHRzIGFuZCBiZSBhYmxlIHRvIHJlcHJvZHVjZSByZXN1bHRzIGZyb20gb3RoZXIgaW1wbGVtZW50YXRpb25zCi0jIG9mIHRoZSBzcGVjLgotCi1CYXNpY0NvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfVVAsCi0gICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIENsYW1wZWQsIFVuZGVyZmxvd10sCi0gICAgICAgIGZsYWdzPVtdLAotKQotCi1FeHRlbmRlZENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwKLSAgICAgICAgdHJhcHM9W10sCi0gICAgICAgIGZsYWdzPVtdLAotKQotCi0KLSMjIyMjIGNydWQgZm9yIHBhcnNpbmcgc3RyaW5ncyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgUmVndWxhciBleHByZXNzaW9uIHVzZWQgZm9yIHBhcnNpbmcgbnVtZXJpYyBzdHJpbmdzLiAgQWRkaXRpb25hbAotIyBjb21tZW50czoKLSMKLSMgMS4gVW5jb21tZW50IHRoZSB0d28gJ1xzKicgbGluZXMgdG8gYWxsb3cgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcKLSMgd2hpdGVzcGFjZS4gIEJ1dCBub3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24gZGlzYWxsb3dzIHdoaXRlc3BhY2UgaW4KLSMgYSBudW1lcmljIHN0cmluZy4KLSMKLSMgMi4gRm9yIGZpbml0ZSBudW1iZXJzIChub3QgaW5maW5pdGllcyBhbmQgTmFOcykgdGhlIGJvZHkgb2YgdGhlCi0jIG51bWJlciBiZXR3ZWVuIHRoZSBvcHRpb25hbCBzaWduIGFuZCB0aGUgb3B0aW9uYWwgZXhwb25lbnQgbXVzdCBoYXZlCi0jIGF0IGxlYXN0IG9uZSBkZWNpbWFsIGRpZ2l0LCBwb3NzaWJseSBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC4gIFRoZQotIyBsb29rYWhlYWQgZXhwcmVzc2lvbiAnKD89XGR8XC5cZCknIGNoZWNrcyB0aGlzLgotCi1pbXBvcnQgcmUKLV9wYXJzZXIgPSByZS5jb21waWxlKHIiIiIgICAgICAgICMgQSBudW1lcmljIHN0cmluZyBjb25zaXN0cyBvZjoKLSMgICAgXHMqCi0gICAgKD9QPHNpZ24+Wy0rXSk/ICAgICAgICAgICAgICAjIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGVpdGhlci4uLgotICAgICgKLSAgICAgICAgKD89XGR8XC5cZCkgICAgICAgICAgICAgICMgLi4uYSBudW1iZXIgKHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0KQotICAgICAgICAoP1A8aW50PlxkKikgICAgICAgICAgICAgIyBoYXZpbmcgYSAocG9zc2libHkgZW1wdHkpIGludGVnZXIgcGFydAotICAgICAgICAoXC4oP1A8ZnJhYz5cZCopKT8gICAgICAgIyBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBmcmFjdGlvbmFsIHBhcnQKLSAgICAgICAgKEUoP1A8ZXhwPlstK10/XGQrKSk/ICAgICMgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgZXhwb25lbnQsIG9yLi4uCi0gICAgfAotICAgICAgICBJbmYoaW5pdHkpPyAgICAgICAgICAgICAgIyAuLi5hbiBpbmZpbml0eSwgb3IuLi4KLSAgICB8Ci0gICAgICAgICg/UDxzaWduYWw+cyk/ICAgICAgICAgICAjIC4uLmFuIChvcHRpb25hbGx5IHNpZ25hbGluZykKLSAgICAgICAgTmFOICAgICAgICAgICAgICAgICAgICAgICMgTmFOCi0gICAgICAgICg/UDxkaWFnPlxkKikgICAgICAgICAgICAjIHdpdGggKHBvc3NpYmx5IGVtcHR5KSBkaWFnbm9zdGljIGluZm8uCi0gICAgKQotIyAgICBccyoKLSAgICBcWgotIiIiLCByZS5WRVJCT1NFIHwgcmUuSUdOT1JFQ0FTRSkubWF0Y2gKLQotX2FsbF96ZXJvcyA9IHJlLmNvbXBpbGUoJzAqJCcpLm1hdGNoCi1fZXhhY3RfaGFsZiA9IHJlLmNvbXBpbGUoJzUwKiQnKS5tYXRjaAotCi0jIyMjIyBQRVAzMTAxIHN1cHBvcnQgZnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gaGF2ZSBsaXR0bGUgdG8gZG8gd2l0aCB0aGUgRGVjaW1hbAotIyBjbGFzcywgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGJlIHJldXNlZCBvciBhZGFwdGVkIGZvciBvdGhlciBwdXJlCi0jIFB5dGhvbiBudW1lcmljIGNsYXNzZXMgdGhhdCB3YW50IHRvIGltcGxlbWVudCBfX2Zvcm1hdF9fCi0jCi0jIEEgZm9ybWF0IHNwZWNpZmllciBmb3IgRGVjaW1hbCBsb29rcyBsaWtlOgotIwotIyAgIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bbWluaW11bXdpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQotCi1fcGFyc2VfZm9ybWF0X3NwZWNpZmllcl9yZWdleCA9IHJlLmNvbXBpbGUociIiIlxBCi0oPzoKLSAgICg/UDxmaWxsPi4pPwotICAgKD9QPGFsaWduPls8Pj1eXSkKLSk/Ci0oP1A8c2lnbj5bLSsgXSk/Ci0oP1A8YWx0PlwjKT8KLSg/UDx6ZXJvcGFkPjApPwotKD9QPG1pbmltdW13aWR0aD4oPyEwKVxkKyk/Ci0oP1A8dGhvdXNhbmRzX3NlcD4sKT8KLSg/OlwuKD9QPHByZWNpc2lvbj4wfCg/ITApXGQrKSk/Ci0oP1A8dHlwZT5bZUVmRmdHbiVdKT8KLVxaCi0iIiIsIHJlLlZFUkJPU0V8cmUuRE9UQUxMKQotCi1kZWwgcmUKLQotIyBUaGUgbG9jYWxlIG1vZHVsZSBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlICduJyBmb3JtYXQgc3BlY2lmaWVyLiAgVGhlCi0jIHJlc3Qgb2YgdGhlIFBFUCAzMTAxIGNvZGUgZnVuY3Rpb25zIHF1aXRlIGhhcHBpbHkgd2l0aG91dCBpdCwgc28gd2UKLSMgZG9uJ3QgY2FyZSB0b28gbXVjaCBpZiBsb2NhbGUgaXNuJ3QgcHJlc2VudC4KLXRyeToKLSAgICBpbXBvcnQgbG9jYWxlIGFzIF9sb2NhbGUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLWRlZiBfcGFyc2VfZm9ybWF0X3NwZWNpZmllcihmb3JtYXRfc3BlYywgX2xvY2FsZWNvbnY9Tm9uZSk6Ci0gICAgIiIiUGFyc2UgYW5kIHZhbGlkYXRlIGEgZm9ybWF0IHNwZWNpZmllci4KLQotICAgIFR1cm5zIGEgc3RhbmRhcmQgbnVtZXJpYyBmb3JtYXQgc3BlY2lmaWVyIGludG8gYSBkaWN0LCB3aXRoIHRoZQotICAgIGZvbGxvd2luZyBlbnRyaWVzOgotCi0gICAgICBmaWxsOiBmaWxsIGNoYXJhY3RlciB0byBwYWQgZmllbGQgdG8gbWluaW11bSB3aWR0aAotICAgICAgYWxpZ246IGFsaWdubWVudCB0eXBlLCBlaXRoZXIgJzwnLCAnPicsICc9JyBvciAnXicKLSAgICAgIHNpZ246IGVpdGhlciAnKycsICctJyBvciAnICcKLSAgICAgIG1pbmltdW13aWR0aDogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgbWluaW11bSB3aWR0aAotICAgICAgemVyb3BhZDogYm9vbGVhbiwgaW5kaWNhdGluZyB3aGV0aGVyIHRvIHBhZCB3aXRoIHplcm9zCi0gICAgICB0aG91c2FuZHNfc2VwOiBzdHJpbmcgdG8gdXNlIGFzIHRob3VzYW5kcyBzZXBhcmF0b3IsIG9yICcnCi0gICAgICBncm91cGluZzogZ3JvdXBpbmcgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3JzLCBpbiBmb3JtYXQKLSAgICAgICAgdXNlZCBieSBsb2NhbGVjb252Ci0gICAgICBkZWNpbWFsX3BvaW50OiBzdHJpbmcgdG8gdXNlIGZvciBkZWNpbWFsIHBvaW50Ci0gICAgICBwcmVjaXNpb246IG5vbm5lZ2F0aXZlIGludGVnZXIgZ2l2aW5nIHByZWNpc2lvbiwgb3IgTm9uZQotICAgICAgdHlwZTogb25lIG9mIHRoZSBjaGFyYWN0ZXJzICdlRWZGZ0clJywgb3IgTm9uZQotCi0gICAgIiIiCi0gICAgbSA9IF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyX3JlZ2V4Lm1hdGNoKGZvcm1hdF9zcGVjKQotICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCi0KLSAgICAjIGdldCB0aGUgZGljdGlvbmFyeQotICAgIGZvcm1hdF9kaWN0ID0gbS5ncm91cGRpY3QoKQotCi0gICAgIyB6ZXJvcGFkOyBkZWZhdWx0cyBmb3IgZmlsbCBhbmQgYWxpZ25tZW50LiAgSWYgemVybyBwYWRkaW5nCi0gICAgIyBpcyByZXF1ZXN0ZWQsIHRoZSBmaWxsIGFuZCBhbGlnbiBmaWVsZHMgc2hvdWxkIGJlIGFic2VudC4KLSAgICBmaWxsID0gZm9ybWF0X2RpY3RbJ2ZpbGwnXQotICAgIGFsaWduID0gZm9ybWF0X2RpY3RbJ2FsaWduJ10KLSAgICBmb3JtYXRfZGljdFsnemVyb3BhZCddID0gKGZvcm1hdF9kaWN0Wyd6ZXJvcGFkJ10gaXMgbm90IE5vbmUpCi0gICAgaWYgZm9ybWF0X2RpY3RbJ3plcm9wYWQnXToKLSAgICAgICAgaWYgZmlsbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZpbGwgY2hhcmFjdGVyIGNvbmZsaWN0cyB3aXRoICcwJyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbiBmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCi0gICAgICAgIGlmIGFsaWduIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWxpZ25tZW50IGNvbmZsaWN0cyB3aXRoICcwJyBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVyOiAiICsgZm9ybWF0X3NwZWMpCi0gICAgZm9ybWF0X2RpY3RbJ2ZpbGwnXSA9IGZpbGwgb3IgJyAnCi0gICAgIyBQRVAgMzEwMSBvcmlnaW5hbGx5IHNwZWNpZmllZCB0aGF0IHRoZSBkZWZhdWx0IGFsaWdubWVudCBzaG91bGQKLSAgICAjIGJlIGxlZnQ7ICBpdCB3YXMgbGF0ZXIgYWdyZWVkIHRoYXQgcmlnaHQtYWxpZ25lZCBtYWtlcyBtb3JlIHNlbnNlCi0gICAgIyBmb3IgbnVtZXJpYyB0eXBlcy4gIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNjg1Ny4KLSAgICBmb3JtYXRfZGljdFsnYWxpZ24nXSA9IGFsaWduIG9yICc+JwotCi0gICAgIyBkZWZhdWx0IHNpZ24gaGFuZGxpbmc6ICctJyBmb3IgbmVnYXRpdmUsICcnIGZvciBwb3NpdGl2ZQotICAgIGlmIGZvcm1hdF9kaWN0WydzaWduJ10gaXMgTm9uZToKLSAgICAgICAgZm9ybWF0X2RpY3RbJ3NpZ24nXSA9ICctJwotCi0gICAgIyBtaW5pbXVtd2lkdGggZGVmYXVsdHMgdG8gMDsgcHJlY2lzaW9uIHJlbWFpbnMgTm9uZSBpZiBub3QgZ2l2ZW4KLSAgICBmb3JtYXRfZGljdFsnbWluaW11bXdpZHRoJ10gPSBpbnQoZm9ybWF0X2RpY3RbJ21pbmltdW13aWR0aCddIG9yICcwJykKLSAgICBpZiBmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgIGZvcm1hdF9kaWN0WydwcmVjaXNpb24nXSA9IGludChmb3JtYXRfZGljdFsncHJlY2lzaW9uJ10pCi0KLSAgICAjIGlmIGZvcm1hdCB0eXBlIGlzICdnJyBvciAnRycgdGhlbiBhIHByZWNpc2lvbiBvZiAwIG1ha2VzIGxpdHRsZQotICAgICMgc2Vuc2U7IGNvbnZlcnQgaXQgdG8gMS4gIFNhbWUgaWYgZm9ybWF0IHR5cGUgaXMgdW5zcGVjaWZpZWQuCi0gICAgaWYgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID09IDA6Ci0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaXMgTm9uZSBvciBmb3JtYXRfZGljdFsndHlwZSddIGluICdnR24nOgotICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gMQotCi0gICAgIyBkZXRlcm1pbmUgdGhvdXNhbmRzIHNlcGFyYXRvciwgZ3JvdXBpbmcsIGFuZCBkZWNpbWFsIHNlcGFyYXRvciwgYW5kCi0gICAgIyBhZGQgYXBwcm9wcmlhdGUgZW50cmllcyB0byBmb3JtYXRfZGljdAotICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gPT0gJ24nOgotICAgICAgICAjIGFwYXJ0IGZyb20gc2VwYXJhdG9ycywgJ24nIGJlaGF2ZXMganVzdCBsaWtlICdnJwotICAgICAgICBmb3JtYXRfZGljdFsndHlwZSddID0gJ2cnCi0gICAgICAgIGlmIF9sb2NhbGVjb252IGlzIE5vbmU6Ci0gICAgICAgICAgICBfbG9jYWxlY29udiA9IF9sb2NhbGUubG9jYWxlY29udigpCi0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBsaWNpdCB0aG91c2FuZHMgc2VwYXJhdG9yIGNvbmZsaWN0cyB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiduJyB0eXBlIGluIGZvcm1hdCBzcGVjaWZpZXI6ICIgKyBmb3JtYXRfc3BlYykKLSAgICAgICAgZm9ybWF0X2RpY3RbJ3Rob3VzYW5kc19zZXAnXSA9IF9sb2NhbGVjb252Wyd0aG91c2FuZHNfc2VwJ10KLSAgICAgICAgZm9ybWF0X2RpY3RbJ2dyb3VwaW5nJ10gPSBfbG9jYWxlY29udlsnZ3JvdXBpbmcnXQotICAgICAgICBmb3JtYXRfZGljdFsnZGVjaW1hbF9wb2ludCddID0gX2xvY2FsZWNvbnZbJ2RlY2ltYWxfcG9pbnQnXQotICAgIGVsc2U6Ci0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gaXMgTm9uZToKLSAgICAgICAgICAgIGZvcm1hdF9kaWN0Wyd0aG91c2FuZHNfc2VwJ10gPSAnJwotICAgICAgICBmb3JtYXRfZGljdFsnZ3JvdXBpbmcnXSA9IFszLCAwXQotICAgICAgICBmb3JtYXRfZGljdFsnZGVjaW1hbF9wb2ludCddID0gJy4nCi0KLSAgICByZXR1cm4gZm9ybWF0X2RpY3QKLQotZGVmIF9mb3JtYXRfYWxpZ24oc2lnbiwgYm9keSwgc3BlYyk6Ci0gICAgIiIiR2l2ZW4gYW4gdW5wYWRkZWQsIG5vbi1hbGlnbmVkIG51bWVyaWMgc3RyaW5nICdib2R5JyBhbmQgc2lnbgotICAgIHN0cmluZyAnc2lnbicsIGFkZCBwYWRkaW5nIGFuZCBhbGlnbm1lbnQgY29uZm9ybWluZyB0byB0aGUgZ2l2ZW4KLSAgICBmb3JtYXQgc3BlY2lmaWVyIGRpY3Rpb25hcnkgJ3NwZWMnIChhcyBwcm9kdWNlZCBieQotICAgIHBhcnNlX2Zvcm1hdF9zcGVjaWZpZXIpLgotCi0gICAgIiIiCi0gICAgIyBob3cgbXVjaCBleHRyYSBzcGFjZSBkbyB3ZSBoYXZlIHRvIHBsYXkgd2l0aD8KLSAgICBtaW5pbXVtd2lkdGggPSBzcGVjWydtaW5pbXVtd2lkdGgnXQotICAgIGZpbGwgPSBzcGVjWydmaWxsJ10KLSAgICBwYWRkaW5nID0gZmlsbCoobWluaW11bXdpZHRoIC0gbGVuKHNpZ24pIC0gbGVuKGJvZHkpKQotCi0gICAgYWxpZ24gPSBzcGVjWydhbGlnbiddCi0gICAgaWYgYWxpZ24gPT0gJzwnOgotICAgICAgICByZXN1bHQgPSBzaWduICsgYm9keSArIHBhZGRpbmcKLSAgICBlbGlmIGFsaWduID09ICc+JzoKLSAgICAgICAgcmVzdWx0ID0gcGFkZGluZyArIHNpZ24gKyBib2R5Ci0gICAgZWxpZiBhbGlnbiA9PSAnPSc6Ci0gICAgICAgIHJlc3VsdCA9IHNpZ24gKyBwYWRkaW5nICsgYm9keQotICAgIGVsaWYgYWxpZ24gPT0gJ14nOgotICAgICAgICBoYWxmID0gbGVuKHBhZGRpbmcpLy8yCi0gICAgICAgIHJlc3VsdCA9IHBhZGRpbmdbOmhhbGZdICsgc2lnbiArIGJvZHkgKyBwYWRkaW5nW2hhbGY6XQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VucmVjb2duaXNlZCBhbGlnbm1lbnQgZmllbGQnKQotCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgX2dyb3VwX2xlbmd0aHMoZ3JvdXBpbmcpOgotICAgICIiIkNvbnZlcnQgYSBsb2NhbGVjb252LXN0eWxlIGdyb3VwaW5nIGludG8gYSAocG9zc2libHkgaW5maW5pdGUpCi0gICAgaXRlcmFibGUgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGdyb3VwIGxlbmd0aHMuCi0KLSAgICAiIiIKLSAgICAjIFRoZSByZXN1bHQgZnJvbSBsb2NhbGVjb252KClbJ2dyb3VwaW5nJ10sIGFuZCB0aGUgaW5wdXQgdG8gdGhpcwotICAgICMgZnVuY3Rpb24sIHNob3VsZCBiZSBhIGxpc3Qgb2YgaW50ZWdlcnMgaW4gb25lIG9mIHRoZQotICAgICMgZm9sbG93aW5nIHRocmVlIGZvcm1zOgotICAgICMKLSAgICAjICAgKDEpIGFuIGVtcHR5IGxpc3QsIG9yCi0gICAgIyAgICgyKSBub25lbXB0eSBsaXN0IG9mIHBvc2l0aXZlIGludGVnZXJzICsgWzBdCi0gICAgIyAgICgzKSBsaXN0IG9mIHBvc2l0aXZlIGludGVnZXJzICsgW2xvY2FsZS5DSEFSX01BWF0sIG9yCi0KLSAgICBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHJlcGVhdAotICAgIGlmIG5vdCBncm91cGluZzoKLSAgICAgICAgcmV0dXJuIFtdCi0gICAgZWxpZiBncm91cGluZ1stMV0gPT0gMCBhbmQgbGVuKGdyb3VwaW5nKSA+PSAyOgotICAgICAgICByZXR1cm4gY2hhaW4oZ3JvdXBpbmdbOi0xXSwgcmVwZWF0KGdyb3VwaW5nWy0yXSkpCi0gICAgZWxpZiBncm91cGluZ1stMV0gPT0gX2xvY2FsZS5DSEFSX01BWDoKLSAgICAgICAgcmV0dXJuIGdyb3VwaW5nWzotMV0KLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bnJlY29nbmlzZWQgZm9ybWF0IGZvciBncm91cGluZycpCi0KLWRlZiBfaW5zZXJ0X3Rob3VzYW5kc19zZXAoZGlnaXRzLCBzcGVjLCBtaW5fd2lkdGg9MSk6Ci0gICAgIiIiSW5zZXJ0IHRob3VzYW5kcyBzZXBhcmF0b3JzIGludG8gYSBkaWdpdCBzdHJpbmcuCi0KLSAgICBzcGVjIGlzIGEgZGljdGlvbmFyeSB3aG9zZSBrZXlzIHNob3VsZCBpbmNsdWRlICd0aG91c2FuZHNfc2VwJyBhbmQKLSAgICAnZ3JvdXBpbmcnOyB0eXBpY2FsbHkgaXQncyB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIGZvcm1hdAotICAgIHNwZWNpZmllciB1c2luZyBfcGFyc2VfZm9ybWF0X3NwZWNpZmllci4KLQotICAgIFRoZSBtaW5fd2lkdGgga2V5d29yZCBhcmd1bWVudCBnaXZlcyB0aGUgbWluaW11bSBsZW5ndGggb2YgdGhlCi0gICAgcmVzdWx0LCB3aGljaCB3aWxsIGJlIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeS4KLQotICAgIElmIG5lY2Vzc2FyeSwgdGhlIHplcm8gcGFkZGluZyBhZGRzIGFuIGV4dHJhICcwJyBvbiB0aGUgbGVmdCB0bwotICAgIGF2b2lkIGEgbGVhZGluZyB0aG91c2FuZHMgc2VwYXJhdG9yLiAgRm9yIGV4YW1wbGUsIGluc2VydGluZwotICAgIGNvbW1hcyBldmVyeSB0aHJlZSBkaWdpdHMgaW4gJzEyMzQ1NicsIHdpdGggbWluX3dpZHRoPTgsIGdpdmVzCi0gICAgJzAsMTIzLDQ1NicsIGV2ZW4gdGhvdWdoIHRoYXQgaGFzIGxlbmd0aCA5LgotCi0gICAgIiIiCi0KLSAgICBzZXAgPSBzcGVjWyd0aG91c2FuZHNfc2VwJ10KLSAgICBncm91cGluZyA9IHNwZWNbJ2dyb3VwaW5nJ10KLQotICAgIGdyb3VwcyA9IFtdCi0gICAgZm9yIGwgaW4gX2dyb3VwX2xlbmd0aHMoZ3JvdXBpbmcpOgotICAgICAgICBpZiBsIDw9IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJncm91cCBsZW5ndGggc2hvdWxkIGJlIHBvc2l0aXZlIikKLSAgICAgICAgIyBtYXgoLi4uLCAxKSBmb3JjZXMgYXQgbGVhc3QgMSBkaWdpdCB0byB0aGUgbGVmdCBvZiBhIHNlcGFyYXRvcgotICAgICAgICBsID0gbWluKG1heChsZW4oZGlnaXRzKSwgbWluX3dpZHRoLCAxKSwgbCkKLSAgICAgICAgZ3JvdXBzLmFwcGVuZCgnMCcqKGwgLSBsZW4oZGlnaXRzKSkgKyBkaWdpdHNbLWw6XSkKLSAgICAgICAgZGlnaXRzID0gZGlnaXRzWzotbF0KLSAgICAgICAgbWluX3dpZHRoIC09IGwKLSAgICAgICAgaWYgbm90IGRpZ2l0cyBhbmQgbWluX3dpZHRoIDw9IDA6Ci0gICAgICAgICAgICBicmVhawotICAgICAgICBtaW5fd2lkdGggLT0gbGVuKHNlcCkKLSAgICBlbHNlOgotICAgICAgICBsID0gbWF4KGxlbihkaWdpdHMpLCBtaW5fd2lkdGgsIDEpCi0gICAgICAgIGdyb3Vwcy5hcHBlbmQoJzAnKihsIC0gbGVuKGRpZ2l0cykpICsgZGlnaXRzWy1sOl0pCi0gICAgcmV0dXJuIHNlcC5qb2luKHJldmVyc2VkKGdyb3VwcykpCi0KLWRlZiBfZm9ybWF0X3NpZ24oaXNfbmVnYXRpdmUsIHNwZWMpOgotICAgICIiIkRldGVybWluZSBzaWduIGNoYXJhY3Rlci4iIiIKLQotICAgIGlmIGlzX25lZ2F0aXZlOgotICAgICAgICByZXR1cm4gJy0nCi0gICAgZWxpZiBzcGVjWydzaWduJ10gaW4gJyArJzoKLSAgICAgICAgcmV0dXJuIHNwZWNbJ3NpZ24nXQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJwotCi1kZWYgX2Zvcm1hdF9udW1iZXIoaXNfbmVnYXRpdmUsIGludHBhcnQsIGZyYWNwYXJ0LCBleHAsIHNwZWMpOgotICAgICIiIkZvcm1hdCBhIG51bWJlciwgZ2l2ZW4gdGhlIGZvbGxvd2luZyBkYXRhOgotCi0gICAgaXNfbmVnYXRpdmU6IHRydWUgaWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgZWxzZSBmYWxzZQotICAgIGludHBhcnQ6IHN0cmluZyBvZiBkaWdpdHMgdGhhdCBtdXN0IGFwcGVhciBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQKLSAgICBmcmFjcGFydDogc3RyaW5nIG9mIGRpZ2l0cyB0aGF0IG11c3QgY29tZSBhZnRlciB0aGUgcG9pbnQKLSAgICBleHA6IGV4cG9uZW50LCBhcyBhbiBpbnRlZ2VyCi0gICAgc3BlYzogZGljdGlvbmFyeSByZXN1bHRpbmcgZnJvbSBwYXJzaW5nIHRoZSBmb3JtYXQgc3BlY2lmaWVyCi0KLSAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGluZm9ybWF0aW9uIGluIHNwZWMgdG86Ci0gICAgICBpbnNlcnQgc2VwYXJhdG9ycyAoZGVjaW1hbCBzZXBhcmF0b3IgYW5kIHRob3VzYW5kcyBzZXBhcmF0b3JzKQotICAgICAgZm9ybWF0IHRoZSBzaWduCi0gICAgICBmb3JtYXQgdGhlIGV4cG9uZW50Ci0gICAgICBhZGQgdHJhaWxpbmcgJyUnIGZvciB0aGUgJyUnIHR5cGUKLSAgICAgIHplcm8tcGFkIGlmIG5lY2Vzc2FyeQotICAgICAgZmlsbCBhbmQgYWxpZ24gaWYgbmVjZXNzYXJ5Ci0gICAgIiIiCi0KLSAgICBzaWduID0gX2Zvcm1hdF9zaWduKGlzX25lZ2F0aXZlLCBzcGVjKQotCi0gICAgaWYgZnJhY3BhcnQgb3Igc3BlY1snYWx0J106Ci0gICAgICAgIGZyYWNwYXJ0ID0gc3BlY1snZGVjaW1hbF9wb2ludCddICsgZnJhY3BhcnQKLQotICAgIGlmIGV4cCAhPSAwIG9yIHNwZWNbJ3R5cGUnXSBpbiAnZUUnOgotICAgICAgICBlY2hhciA9IHsnRSc6ICdFJywgJ2UnOiAnZScsICdHJzogJ0UnLCAnZyc6ICdlJ31bc3BlY1sndHlwZSddXQotICAgICAgICBmcmFjcGFydCArPSAiezB9ezE6K30iLmZvcm1hdChlY2hhciwgZXhwKQotICAgIGlmIHNwZWNbJ3R5cGUnXSA9PSAnJSc6Ci0gICAgICAgIGZyYWNwYXJ0ICs9ICclJwotCi0gICAgaWYgc3BlY1snemVyb3BhZCddOgotICAgICAgICBtaW5fd2lkdGggPSBzcGVjWydtaW5pbXVtd2lkdGgnXSAtIGxlbihmcmFjcGFydCkgLSBsZW4oc2lnbikKLSAgICBlbHNlOgotICAgICAgICBtaW5fd2lkdGggPSAwCi0gICAgaW50cGFydCA9IF9pbnNlcnRfdGhvdXNhbmRzX3NlcChpbnRwYXJ0LCBzcGVjLCBtaW5fd2lkdGgpCi0KLSAgICByZXR1cm4gX2Zvcm1hdF9hbGlnbihzaWduLCBpbnRwYXJ0K2ZyYWNwYXJ0LCBzcGVjKQotCi0KLSMjIyMjIFVzZWZ1bCBDb25zdGFudHMgKGludGVybmFsIHVzZSBvbmx5KSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIFJldXNhYmxlIGRlZmF1bHRzCi1fSW5maW5pdHkgPSBEZWNpbWFsKCdJbmYnKQotX05lZ2F0aXZlSW5maW5pdHkgPSBEZWNpbWFsKCctSW5mJykKLV9OYU4gPSBEZWNpbWFsKCdOYU4nKQotX1plcm8gPSBEZWNpbWFsKDApCi1fT25lID0gRGVjaW1hbCgxKQotX05lZ2F0aXZlT25lID0gRGVjaW1hbCgtMSkKLQotIyBfU2lnbmVkSW5maW5pdHlbc2lnbl0gaXMgaW5maW5pdHkgdy8gdGhhdCBzaWduCi1fU2lnbmVkSW5maW5pdHkgPSAoX0luZmluaXR5LCBfTmVnYXRpdmVJbmZpbml0eSkKLQotIyBDb25zdGFudHMgcmVsYXRlZCB0byB0aGUgaGFzaCBpbXBsZW1lbnRhdGlvbjsgIGhhc2goeCkgaXMgYmFzZWQKLSMgb24gdGhlIHJlZHVjdGlvbiBvZiB4IG1vZHVsbyBfUHlIQVNIX01PRFVMVVMKLV9QeUhBU0hfTU9EVUxVUyA9IHN5cy5oYXNoX2luZm8ubW9kdWx1cwotIyBoYXNoIHZhbHVlcyB0byB1c2UgZm9yIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0aWVzLCBhbmQgbmFucwotX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgotX1B5SEFTSF9OQU4gPSBzeXMuaGFzaF9pbmZvLm5hbgotCi0jIF9QeUhBU0hfMTBJTlYgaXMgdGhlIGludmVyc2Ugb2YgMTAgbW9kdWxvIHRoZSBwcmltZSBfUHlIQVNIX01PRFVMVVMKLV9QeUhBU0hfMTBJTlYgPSBwb3coMTAsIF9QeUhBU0hfTU9EVUxVUyAtIDIsIF9QeUhBU0hfTU9EVUxVUykKLWRlbCBzeXMKLQotdHJ5OgotICAgIGltcG9ydCBfZGVjaW1hbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6Ci0gICAgczEgPSBzZXQoZGlyKCkpCi0gICAgczIgPSBzZXQoZGlyKF9kZWNpbWFsKSkKLSAgICBmb3IgbmFtZSBpbiBzMSAtIHMyOgotICAgICAgICBkZWwgZ2xvYmFscygpW25hbWVdCi0gICAgZGVsIHMxLCBzMiwgbmFtZQogICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0ICoKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgZG9jdGVzdCwgZGVjaW1hbAotICAgIGRvY3Rlc3QudGVzdG1vZChkZWNpbWFsKQorICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fZG9jX18KKyAgICBmcm9tIF9kZWNpbWFsIGltcG9ydCBfX3ZlcnNpb25fXworICAgIGZyb20gX2RlY2ltYWwgaW1wb3J0IF9fbGlibXBkZWNfdmVyc2lvbl9fCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCAqCisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX2RvY19fCisgICAgZnJvbSBfcHlkZWNpbWFsIGltcG9ydCBfX3ZlcnNpb25fXworICAgIGZyb20gX3B5ZGVjaW1hbCBpbXBvcnQgX19saWJtcGRlY192ZXJzaW9uX18KZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggN2ViNDJhOS4uMjJkOTE0NSAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTI4LDkgKzI4LDkgQEAKIAogX19hbGxfXyA9IFsnZ2V0X2Nsb3NlX21hdGNoZXMnLCAnbmRpZmYnLCAncmVzdG9yZScsICdTZXF1ZW5jZU1hdGNoZXInLAogICAgICAgICAgICAnRGlmZmVyJywnSVNfQ0hBUkFDVEVSX0pVTksnLCAnSVNfTElORV9KVU5LJywgJ2NvbnRleHRfZGlmZicsCi0gICAgICAgICAgICd1bmlmaWVkX2RpZmYnLCAnSHRtbERpZmYnLCAnTWF0Y2gnXQorICAgICAgICAgICAndW5pZmllZF9kaWZmJywgJ2RpZmZfYnl0ZXMnLCAnSHRtbERpZmYnLCAnTWF0Y2gnXQogCi1pbXBvcnQgaGVhcHEKK2Zyb20gaGVhcHEgaW1wb3J0IG5sYXJnZXN0IGFzIF9ubGFyZ2VzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZSBhcyBfbmFtZWR0dXBsZQogCiBNYXRjaCA9IF9uYW1lZHR1cGxlKCdNYXRjaCcsICdhIGIgc2l6ZScpCkBAIC03MjksNyArNzI5LDcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHMucmF0aW8oKSwgeCkpCiAKICAgICAjIE1vdmUgdGhlIGJlc3Qgc2NvcmVycyB0byBoZWFkIG9mIGxpc3QKLSAgICByZXN1bHQgPSBoZWFwcS5ubGFyZ2VzdChuLCByZXN1bHQpCisgICAgcmVzdWx0ID0gX25sYXJnZXN0KG4sIHJlc3VsdCkKICAgICAjIFN0cmlwIHNjb3JlcyBmb3IgdGhlIGJlc3QgbiBtYXRjaGVzCiAgICAgcmV0dXJuIFt4IGZvciBzY29yZSwgeCBpbiByZXN1bHRdCiAKQEAgLTg1MiwxMCArODUyLDkgQEAKICAgICAgICAgICBhbmQgcmV0dXJuIHRydWUgaWZmIHRoZSBzdHJpbmcgaXMganVuay4gVGhlIG1vZHVsZS1sZXZlbCBmdW5jdGlvbgogICAgICAgICAgIGBJU19MSU5FX0pVTktgIG1heSBiZSB1c2VkIHRvIGZpbHRlciBvdXQgbGluZXMgd2l0aG91dCB2aXNpYmxlCiAgICAgICAgICAgY2hhcmFjdGVycywgZXhjZXB0IGZvciBhdCBtb3N0IG9uZSBzcGxhdCAoJyMnKS4gIEl0IGlzIHJlY29tbWVuZGVkCi0gICAgICAgICAgdG8gbGVhdmUgbGluZWp1bmsgTm9uZTsgYXMgb2YgUHl0aG9uIDIuMywgdGhlIHVuZGVybHlpbmcKLSAgICAgICAgICBTZXF1ZW5jZU1hdGNoZXIgY2xhc3MgaGFzIGdyb3duIGFuIGFkYXB0aXZlIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzCi0gICAgICAgICAgdGhhdCdzIGJldHRlciB0aGFuIGFueSBzdGF0aWMgZGVmaW5pdGlvbiB0aGUgYXV0aG9yIGhhcyBldmVyIGJlZW4KLSAgICAgICAgICBhYmxlIHRvIGNyYWZ0LgorICAgICAgICAgIHRvIGxlYXZlIGxpbmVqdW5rIE5vbmU7IHRoZSB1bmRlcmx5aW5nIFNlcXVlbmNlTWF0Y2hlciBjbGFzcyBoYXMKKyAgICAgICAgICBhbiBhZGFwdGl2ZSBub3Rpb24gb2YgIm5vaXNlIiBsaW5lcyB0aGF0J3MgYmV0dGVyIHRoYW4gYW55IHN0YXRpYworICAgICAgICAgIGRlZmluaXRpb24gdGhlIGF1dGhvciBoYXMgZXZlciBiZWVuIGFibGUgdG8gY3JhZnQuCiAKICAgICAgICAgLSBgY2hhcmp1bmtgOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHN0cmluZyBvZiBsZW5ndGggMS4gVGhlCiAgICAgICAgICAgbW9kdWxlLWxldmVsIGZ1bmN0aW9uIGBJU19DSEFSQUNURVJfSlVOS2AgbWF5IGJlIHVzZWQgdG8gZmlsdGVyIG91dApAQCAtMTE3NSw2ICsxMTc0LDcgQEAKICAgICAgZm91cgogICAgICIiIgogCisgICAgX2NoZWNrX3R5cGVzKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbGluZXRlcm0pCiAgICAgc3RhcnRlZCA9IEZhbHNlCiAgICAgZm9yIGdyb3VwIGluIFNlcXVlbmNlTWF0Y2hlcihOb25lLGEsYikuZ2V0X2dyb3VwZWRfb3Bjb2RlcyhuKToKICAgICAgICAgaWYgbm90IHN0YXJ0ZWQ6CkBAIC0xMjYyLDYgKzEyNjIsNyBAQAogICAgICAgZm91cgogICAgICIiIgogCisgICAgX2NoZWNrX3R5cGVzKGEsIGIsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21maWxlZGF0ZSwgdG9maWxlZGF0ZSwgbGluZXRlcm0pCiAgICAgcHJlZml4ID0gZGljdChpbnNlcnQ9JysgJywgZGVsZXRlPSctICcsIHJlcGxhY2U9JyEgJywgZXF1YWw9JyAgJykKICAgICBzdGFydGVkID0gRmFsc2UKICAgICBmb3IgZ3JvdXAgaW4gU2VxdWVuY2VNYXRjaGVyKE5vbmUsYSxiKS5nZXRfZ3JvdXBlZF9vcGNvZGVzKG4pOgpAQCAtMTI5MywyMiArMTI5NCw3MCBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBiW2oxOmoyXToKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHByZWZpeFt0YWddICsgbGluZQogCitkZWYgX2NoZWNrX3R5cGVzKGEsIGIsICphcmdzKToKKyAgICAjIENoZWNraW5nIHR5cGVzIGlzIHdlaXJkLCBidXQgdGhlIGFsdGVybmF0aXZlIGlzIGdhcmJsZWQgb3V0cHV0IHdoZW4KKyAgICAjIHNvbWVvbmUgcGFzc2VzIG1peGVkIGJ5dGVzIGFuZCBzdHIgdG8ge3VuaWZpZWQsY29udGV4dH1fZGlmZigpLiBFLmcuCisgICAgIyB3aXRob3V0IHRoaXMgY2hlY2ssIHBhc3NpbmcgZmlsZW5hbWVzIGFzIGJ5dGVzIHJlc3VsdHMgaW4gb3V0cHV0IGxpa2UKKyAgICAjICAgLS0tIGInb2xkZmlsZS50eHQnCisgICAgIyAgICsrKyBiJ25ld2ZpbGUudHh0JworICAgICMgYmVjYXVzZSBvZiBob3cgc3RyLmZvcm1hdCgpIGluY29ycG9yYXRlcyBieXRlcyBvYmplY3RzLgorICAgIGlmIGEgYW5kIG5vdCBpc2luc3RhbmNlKGFbMF0sIHN0cik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbGluZXMgdG8gY29tcGFyZSBtdXN0IGJlIHN0ciwgbm90ICVzICglciknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKGFbMF0pLl9fbmFtZV9fLCBhWzBdKSkKKyAgICBpZiBiIGFuZCBub3QgaXNpbnN0YW5jZShiWzBdLCBzdHIpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xpbmVzIHRvIGNvbXBhcmUgbXVzdCBiZSBzdHIsIG5vdCAlcyAoJXIpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShiWzBdKS5fX25hbWVfXywgYlswXSkpCisgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmcsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FsbCBhcmd1bWVudHMgbXVzdCBiZSBzdHIsIG5vdDogJXInICUgKGFyZywpKQorCitkZWYgZGlmZl9ieXRlcyhkZnVuYywgYSwgYiwgZnJvbWZpbGU9YicnLCB0b2ZpbGU9YicnLAorICAgICAgICAgICAgICAgZnJvbWZpbGVkYXRlPWInJywgdG9maWxlZGF0ZT1iJycsIG49MywgbGluZXRlcm09YidcbicpOgorICAgIHIiIiIKKyAgICBDb21wYXJlIGBhYCBhbmQgYGJgLCB0d28gc2VxdWVuY2VzIG9mIGxpbmVzIHJlcHJlc2VudGVkIGFzIGJ5dGVzIHJhdGhlcgorICAgIHRoYW4gc3RyLiBUaGlzIGlzIGEgd3JhcHBlciBmb3IgYGRmdW5jYCwgd2hpY2ggaXMgdHlwaWNhbGx5IGVpdGhlcgorICAgIHVuaWZpZWRfZGlmZigpIG9yIGNvbnRleHRfZGlmZigpLiBJbnB1dHMgYXJlIGxvc3NsZXNzbHkgY29udmVydGVkIHRvCisgICAgc3RyaW5ncyBzbyB0aGF0IGBkZnVuY2Agb25seSBoYXMgdG8gd29ycnkgYWJvdXQgc3RyaW5ncywgYW5kIGVuY29kZWQKKyAgICBiYWNrIHRvIGJ5dGVzIG9uIHJldHVybi4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gY29tcGFyZSBmaWxlcyB3aXRoCisgICAgdW5rbm93biBvciBpbmNvbnNpc3RlbnQgZW5jb2RpbmcuIEFsbCBvdGhlciBpbnB1dHMgKGV4Y2VwdCBgbmApIG11c3QgYmUKKyAgICBieXRlcyByYXRoZXIgdGhhbiBzdHIuCisgICAgIiIiCisgICAgZGVmIGRlY29kZShzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHMuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbXNnID0gKCdhbGwgYXJndW1lbnRzIG11c3QgYmUgYnl0ZXMsIG5vdCAlcyAoJXIpJyAlCisgICAgICAgICAgICAgICAgICAgKHR5cGUocykuX19uYW1lX18sIHMpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykgZnJvbSBlcnIKKyAgICBhID0gbGlzdChtYXAoZGVjb2RlLCBhKSkKKyAgICBiID0gbGlzdChtYXAoZGVjb2RlLCBiKSkKKyAgICBmcm9tZmlsZSA9IGRlY29kZShmcm9tZmlsZSkKKyAgICB0b2ZpbGUgPSBkZWNvZGUodG9maWxlKQorICAgIGZyb21maWxlZGF0ZSA9IGRlY29kZShmcm9tZmlsZWRhdGUpCisgICAgdG9maWxlZGF0ZSA9IGRlY29kZSh0b2ZpbGVkYXRlKQorICAgIGxpbmV0ZXJtID0gZGVjb2RlKGxpbmV0ZXJtKQorCisgICAgbGluZXMgPSBkZnVuYyhhLCBiLCBmcm9tZmlsZSwgdG9maWxlLCBmcm9tZmlsZWRhdGUsIHRvZmlsZWRhdGUsIG4sIGxpbmV0ZXJtKQorICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICB5aWVsZCBsaW5lLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKwogZGVmIG5kaWZmKGEsIGIsIGxpbmVqdW5rPU5vbmUsIGNoYXJqdW5rPUlTX0NIQVJBQ1RFUl9KVU5LKToKICAgICByIiIiCiAgICAgQ29tcGFyZSBgYWAgYW5kIGBiYCAobGlzdHMgb2Ygc3RyaW5ncyk7IHJldHVybiBhIGBEaWZmZXJgLXN0eWxlIGRlbHRhLgogCiAgICAgT3B0aW9uYWwga2V5d29yZCBwYXJhbWV0ZXJzIGBsaW5lanVua2AgYW5kIGBjaGFyanVua2AgYXJlIGZvciBmaWx0ZXIKLSAgICBmdW5jdGlvbnMgKG9yIE5vbmUpOgorICAgIGZ1bmN0aW9ucywgb3IgY2FuIGJlIE5vbmU6CiAKLSAgICAtIGxpbmVqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGFjY2VwdCBhIHNpbmdsZSBzdHJpbmcgYXJndW1lbnQsIGFuZAorICAgIC0gbGluZWp1bms6IEEgZnVuY3Rpb24gdGhhdCBzaG91bGQgYWNjZXB0IGEgc2luZ2xlIHN0cmluZyBhcmd1bWVudCBhbmQKICAgICAgIHJldHVybiB0cnVlIGlmZiB0aGUgc3RyaW5nIGlzIGp1bmsuICBUaGUgZGVmYXVsdCBpcyBOb25lLCBhbmQgaXMKLSAgICAgIHJlY29tbWVuZGVkOyBhcyBvZiBQeXRob24gMi4zLCBhbiBhZGFwdGl2ZSBub3Rpb24gb2YgIm5vaXNlIiBsaW5lcyBpcwotICAgICAgdXNlZCB0aGF0IGRvZXMgYSBnb29kIGpvYiBvbiBpdHMgb3duLgorICAgICAgcmVjb21tZW5kZWQ7IHRoZSB1bmRlcmx5aW5nIFNlcXVlbmNlTWF0Y2hlciBjbGFzcyBoYXMgYW4gYWRhcHRpdmUKKyAgICAgIG5vdGlvbiBvZiAibm9pc2UiIGxpbmVzLgogCi0gICAgLSBjaGFyanVuazogQSBmdW5jdGlvbiB0aGF0IHNob3VsZCBhY2NlcHQgYSBzdHJpbmcgb2YgbGVuZ3RoIDEuIFRoZQotICAgICAgZGVmYXVsdCBpcyBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gSVNfQ0hBUkFDVEVSX0pVTkssIHdoaWNoIGZpbHRlcnMgb3V0Ci0gICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEgYmxhbmsgb3IgdGFiOyBub3RlOiBiYWQgaWRlYSB0byBpbmNsdWRlIG5ld2xpbmUKLSAgICAgIGluIHRoaXMhKS4KKyAgICAtIGNoYXJqdW5rOiBBIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIGNoYXJhY3RlciAoc3RyaW5nIG9mIGxlbmd0aAorICAgICAgMSksIGFuZCByZXR1cm5zIHRydWUgaWZmIHRoZSBjaGFyYWN0ZXIgaXMganVuay4gVGhlIGRlZmF1bHQgaXMKKyAgICAgIHRoZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb24gSVNfQ0hBUkFDVEVSX0pVTkssIHdoaWNoIGZpbHRlcnMgb3V0CisgICAgICB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKGEgYmxhbmsgb3IgdGFiOyBub3RlOiBpdCdzIGEgYmFkIGlkZWEgdG8KKyAgICAgIGluY2x1ZGUgbmV3bGluZSBpbiB0aGlzISkuCiAKICAgICBUb29scy9zY3JpcHRzL25kaWZmLnB5IGlzIGEgY29tbWFuZC1saW5lIGZyb250LWVuZCB0byB0aGlzIGZ1bmN0aW9uLgogCkBAIC0xNDEwLDcgKzE0NTksNyBAQAogICAgICAgICAgICAgY2hhbmdlX3JlLnN1YihyZWNvcmRfc3ViX2luZm8sbWFya2VycykKICAgICAgICAgICAgICMgcHJvY2VzcyBlYWNoIHR1cGxlIGluc2VydGluZyBvdXIgc3BlY2lhbCBtYXJrcyB0aGF0IHdvbid0IGJlCiAgICAgICAgICAgICAjIG5vdGljZWQgYnkgYW4geG1sL2h0bWwgZXNjYXBlci4KLSAgICAgICAgICAgIGZvciBrZXksKGJlZ2luLGVuZCkgaW4gc3ViX2luZm9bOjotMV06CisgICAgICAgICAgICBmb3Iga2V5LChiZWdpbixlbmQpIGluIHJldmVyc2VkKHN1Yl9pbmZvKToKICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dFswOmJlZ2luXSsnXDAnK2tleSt0ZXh0W2JlZ2luOmVuZF0rJ1wxJyt0ZXh0W2VuZDpdCiAgICAgICAgICAgICB0ZXh0ID0gdGV4dFsyOl0KICAgICAgICAgIyBIYW5kbGUgY2FzZSBvZiBhZGQvZGVsZXRlIGVudGlyZSBsaW5lCkBAIC0xNDQ4LDEwICsxNDk3LDcgQEAKICAgICAgICAgICAgICMgYXJlIGEgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGVhY2ggb2YgdGhlIDQgbGluZXMKICAgICAgICAgICAgICMgc28gd2UgY2FuIGRvIHNvbWUgdmVyeSByZWFkYWJsZSBjb21wYXJpc29ucy4KICAgICAgICAgICAgIHdoaWxlIGxlbihsaW5lcykgPCA0OgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKG5leHQoZGlmZl9saW5lc19pdGVyYXRvcikpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnWCcpCisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKG5leHQoZGlmZl9saW5lc19pdGVyYXRvciwgJ1gnKSkKICAgICAgICAgICAgIHMgPSAnJy5qb2luKFtsaW5lWzBdIGZvciBsaW5lIGluIGxpbmVzXSkKICAgICAgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnWCcpOgogICAgICAgICAgICAgICAgICMgV2hlbiBubyBtb3JlIGxpbmVzLCBwdW1wIG91dCBhbnkgcmVtYWluaW5nIGJsYW5rIGxpbmVzIHNvIHRoZQpAQCAtMTUxNCw3ICsxNTYwLDcgQEAKICAgICAgICAgICAgICAgICBudW1fYmxhbmtzX3RvX3lpZWxkIC09IDEKICAgICAgICAgICAgICAgICB5aWVsZCAoJycsJ1xuJyksTm9uZSxUcnVlCiAgICAgICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoJ1gnKToKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIGZyb21fbGluZSx0b19saW5lLFRydWUKIApAQCAtMTUzNiw3ICsxNTgyLDEwIEBACiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAjIENvbGxlY3RpbmcgbGluZXMgb2YgdGV4dCB1bnRpbCB3ZSBoYXZlIGEgZnJvbS90byBwYWlyCiAgICAgICAgICAgICB3aGlsZSAobGVuKGZyb21saW5lcyk9PTAgb3IgbGVuKHRvbGluZXMpPT0wKToKLSAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgIGlmIGZyb21fbGluZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZnJvbWxpbmVzLmFwcGVuZCgoZnJvbV9saW5lLGZvdW5kX2RpZmYpKQogICAgICAgICAgICAgICAgIGlmIHRvX2xpbmUgaXMgbm90IE5vbmU6CkBAIC0xNTUwLDggKzE1OTksNyBAQAogICAgICMgdGhlbSB1cCB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2Ugd2l0aCB0aGVtLgogICAgIGxpbmVfcGFpcl9pdGVyYXRvciA9IF9saW5lX3BhaXJfaXRlcmF0b3IoKQogICAgIGlmIGNvbnRleHQgaXMgTm9uZToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHlpZWxkIG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQorICAgICAgICB5aWVsZCBmcm9tIGxpbmVfcGFpcl9pdGVyYXRvcgogICAgICMgSGFuZGxlIGNhc2Ugd2hlcmUgdXNlciB3YW50cyBjb250ZXh0IGRpZmZlcmVuY2luZy4gIFdlIG11c3QgZG8gc29tZQogICAgICMgc3RvcmFnZSBvZiBsaW5lcyB1bnRpbCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgdGhleSBhcmUgdG8gYmUgeWllbGRlZC4KICAgICBlbHNlOgpAQCAtMTU2NCw3ICsxNjEyLDEwIEBACiAgICAgICAgICAgICBpbmRleCwgY29udGV4dExpbmVzID0gMCwgW05vbmVdKihjb250ZXh0KQogICAgICAgICAgICAgZm91bmRfZGlmZiA9IEZhbHNlCiAgICAgICAgICAgICB3aGlsZShmb3VuZF9kaWZmIGlzIEZhbHNlKToKLSAgICAgICAgICAgICAgICBmcm9tX2xpbmUsIHRvX2xpbmUsIGZvdW5kX2RpZmYgPSBuZXh0KGxpbmVfcGFpcl9pdGVyYXRvcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZiA9IG5leHQobGluZV9wYWlyX2l0ZXJhdG9yKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBpID0gaW5kZXggJSBjb250ZXh0CiAgICAgICAgICAgICAgICAgY29udGV4dExpbmVzW2ldID0gKGZyb21fbGluZSwgdG9fbGluZSwgZm91bmRfZGlmZikKICAgICAgICAgICAgICAgICBpbmRleCArPSAxCkBAIC0xNjAxLDcgKzE2NTIsNyBAQAogCiA8aGVhZD4KICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiCi0gICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CisgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PSUoY2hhcnNldClzIiAvPgogICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+JShzdHlsZXMpcwogICAgIDwvc3R5bGU+CkBAIC0xNjc5LDcgKzE3MzAsNyBAQAogICAgICAgICB0YWJzaXplIC0tIHRhYiBzdG9wIHNwYWNpbmcsIGRlZmF1bHRzIHRvIDguCiAgICAgICAgIHdyYXBjb2x1bW4gLS0gY29sdW1uIG51bWJlciB3aGVyZSBsaW5lcyBhcmUgYnJva2VuIGFuZCB3cmFwcGVkLAogICAgICAgICAgICAgZGVmYXVsdHMgdG8gTm9uZSB3aGVyZSBsaW5lcyBhcmUgbm90IHdyYXBwZWQuCi0gICAgICAgIGxpbmVqdW5rLGNoYXJqdW5rIC0tIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbnRvIG5kaWZmKCkgKHVzZWQgdG8gYnkKKyAgICAgICAgbGluZWp1bmssY2hhcmp1bmsgLS0ga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gbmRpZmYoKSAodXNlZCBieQogICAgICAgICAgICAgSHRtbERpZmYoKSB0byBnZW5lcmF0ZSB0aGUgc2lkZSBieSBzaWRlIEhUTUwgZGlmZmVyZW5jZXMpLiAgU2VlCiAgICAgICAgICAgICBuZGlmZigpIGRvY3VtZW50YXRpb24gZm9yIGFyZ3VtZW50IGRlZmF1bHQgdmFsdWVzIGFuZCBkZXNjcmlwdGlvbnMuCiAgICAgICAgICIiIgpAQCAtMTY4OCw4ICsxNzM5LDggQEAKICAgICAgICAgc2VsZi5fbGluZWp1bmsgPSBsaW5lanVuawogICAgICAgICBzZWxmLl9jaGFyanVuayA9IGNoYXJqdW5rCiAKLSAgICBkZWYgbWFrZV9maWxlKHNlbGYsZnJvbWxpbmVzLHRvbGluZXMsZnJvbWRlc2M9JycsdG9kZXNjPScnLGNvbnRleHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICBudW1saW5lcz01KToKKyAgICBkZWYgbWFrZV9maWxlKHNlbGYsIGZyb21saW5lcywgdG9saW5lcywgZnJvbWRlc2M9JycsIHRvZGVzYz0nJywKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQ9RmFsc2UsIG51bWxpbmVzPTUsICosIGNoYXJzZXQ9J3V0Zi04Jyk6CiAgICAgICAgICIiIlJldHVybnMgSFRNTCBmaWxlIG9mIHNpZGUgYnkgc2lkZSBjb21wYXJpc29uIHdpdGggY2hhbmdlIGhpZ2hsaWdodHMKIAogICAgICAgICBBcmd1bWVudHM6CkBAIC0xNzA0LDEzICsxNzU1LDE2IEBACiAgICAgICAgICAgICBXaGVuIGNvbnRleHQgaXMgRmFsc2UsIGNvbnRyb2xzIHRoZSBudW1iZXIgb2YgbGluZXMgdG8gcGxhY2UKICAgICAgICAgICAgIHRoZSAibmV4dCIgbGluayBhbmNob3JzIGJlZm9yZSB0aGUgbmV4dCBjaGFuZ2UgKHNvIGNsaWNrIG9mCiAgICAgICAgICAgICAibmV4dCIgbGluayBqdW1wcyB0byBqdXN0IGJlZm9yZSB0aGUgY2hhbmdlKS4KKyAgICAgICAgY2hhcnNldCAtLSBjaGFyc2V0IG9mIHRoZSBIVE1MIGRvY3VtZW50CiAgICAgICAgICIiIgogCi0gICAgICAgIHJldHVybiBzZWxmLl9maWxlX3RlbXBsYXRlICUgZGljdCgKLSAgICAgICAgICAgIHN0eWxlcyA9IHNlbGYuX3N0eWxlcywKLSAgICAgICAgICAgIGxlZ2VuZCA9IHNlbGYuX2xlZ2VuZCwKLSAgICAgICAgICAgIHRhYmxlID0gc2VsZi5tYWtlX3RhYmxlKGZyb21saW5lcyx0b2xpbmVzLGZyb21kZXNjLHRvZGVzYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCxudW1saW5lcz1udW1saW5lcykpCisgICAgICAgIHJldHVybiAoc2VsZi5fZmlsZV90ZW1wbGF0ZSAlIGRpY3QoCisgICAgICAgICAgICBzdHlsZXM9c2VsZi5fc3R5bGVzLAorICAgICAgICAgICAgbGVnZW5kPXNlbGYuX2xlZ2VuZCwKKyAgICAgICAgICAgIHRhYmxlPXNlbGYubWFrZV90YWJsZShmcm9tbGluZXMsIHRvbGluZXMsIGZyb21kZXNjLCB0b2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBudW1saW5lcz1udW1saW5lcyksCisgICAgICAgICAgICBjaGFyc2V0PWNoYXJzZXQKKyAgICAgICAgKSkuZW5jb2RlKGNoYXJzZXQsICd4bWxjaGFycmVmcmVwbGFjZScpLmRlY29kZShjaGFyc2V0KQogCiAgICAgZGVmIF90YWJfbmV3bGluZV9yZXBsYWNlKHNlbGYsZnJvbWxpbmVzLHRvbGluZXMpOgogICAgICAgICAiIiJSZXR1cm5zIGZyb20vdG8gbGluZSBsaXN0cyB3aXRoIHRhYnMgZXhwYW5kZWQgYW5kIG5ld2xpbmVzIHJlbW92ZWQuCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCA4MWNiZTdmLi5hZjM3Y2RmIDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICByZXR1cm4gYwogCiBkZWYgZGlzKHg9Tm9uZSwgKiwgZmlsZT1Ob25lKToKLSAgICAiIiJEaXNhc3NlbWJsZSBjbGFzc2VzLCBtZXRob2RzLCBmdW5jdGlvbnMsIG9yIGNvZGUuCisgICAgIiIiRGlzYXNzZW1ibGUgY2xhc3NlcywgbWV0aG9kcywgZnVuY3Rpb25zLCBnZW5lcmF0b3JzLCBvciBjb2RlLgogCiAgICAgV2l0aCBubyBhcmd1bWVudCwgZGlzYXNzZW1ibGUgdGhlIGxhc3QgdHJhY2ViYWNrLgogCkBAIC00MSw2ICs0MSw4IEBACiAgICAgICAgIHggPSB4Ll9fZnVuY19fCiAgICAgaWYgaGFzYXR0cih4LCAnX19jb2RlX18nKTogICMgRnVuY3Rpb24KICAgICAgICAgeCA9IHguX19jb2RlX18KKyAgICBpZiBoYXNhdHRyKHgsICdnaV9jb2RlJyk6ICAjIEdlbmVyYXRvcgorICAgICAgICB4ID0geC5naV9jb2RlCiAgICAgaWYgaGFzYXR0cih4LCAnX19kaWN0X18nKTogICMgQ2xhc3Mgb3IgbW9kdWxlCiAgICAgICAgIGl0ZW1zID0gc29ydGVkKHguX19kaWN0X18uaXRlbXMoKSkKICAgICAgICAgZm9yIG5hbWUsIHgxIGluIGl0ZW1zOgpAQCAtODIsNiArODQsOCBAQAogICAgIDE2OiAiTkVTVEVEIiwKICAgICAzMjogIkdFTkVSQVRPUiIsCiAgICAgNjQ6ICJOT0ZSRUUiLAorICAgMTI4OiAiQ09ST1VUSU5FIiwKKyAgIDI1NjogIklURVJBQkxFX0NPUk9VVElORSIsCiB9CiAKIGRlZiBwcmV0dHlfZmxhZ3MoZmxhZ3MpOgpAQCAtOTksMTEgKzEwMywxMyBAQAogICAgIHJldHVybiAiLCAiLmpvaW4obmFtZXMpCiAKIGRlZiBfZ2V0X2NvZGVfb2JqZWN0KHgpOgotICAgICIiIkhlbHBlciB0byBoYW5kbGUgbWV0aG9kcywgZnVuY3Rpb25zLCBzdHJpbmdzIGFuZCByYXcgY29kZSBvYmplY3RzIiIiCisgICAgIiIiSGVscGVyIHRvIGhhbmRsZSBtZXRob2RzLCBmdW5jdGlvbnMsIGdlbmVyYXRvcnMsIHN0cmluZ3MgYW5kIHJhdyBjb2RlIG9iamVjdHMiIiIKICAgICBpZiBoYXNhdHRyKHgsICdfX2Z1bmNfXycpOiAjIE1ldGhvZAogICAgICAgICB4ID0geC5fX2Z1bmNfXwogICAgIGlmIGhhc2F0dHIoeCwgJ19fY29kZV9fJyk6ICMgRnVuY3Rpb24KICAgICAgICAgeCA9IHguX19jb2RlX18KKyAgICBpZiBoYXNhdHRyKHgsICdnaV9jb2RlJyk6ICAjIEdlbmVyYXRvcgorICAgICAgICB4ID0geC5naV9jb2RlCiAgICAgaWYgaXNpbnN0YW5jZSh4LCBzdHIpOiAgICAgIyBTb3VyY2UgY29kZQogICAgICAgICB4ID0gX3RyeV9jb21waWxlKHgsICI8ZGlzYXNzZW1ibHk+IikKICAgICBpZiBoYXNhdHRyKHgsICdjb19jb2RlJyk6ICAjIENvZGUgb2JqZWN0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL19tc3ZjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL19tc3ZjY29tcGlsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNhNWYxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvX21zdmNjb21waWxlci5weQpAQCAtMCwwICsxLDU0NCBAQAorIiIiZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIKKworQ29udGFpbnMgTVNWQ0NvbXBpbGVyLCBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWJzdHJhY3QgQ0NvbXBpbGVyIGNsYXNzCitmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxNS4KKworVGhlIG1vZHVsZSBpcyBjb21wYXRpYmxlIHdpdGggVlMgMjAxNSBhbmQgbGF0ZXIuIFlvdSBjYW4gZmluZCBsZWdhY3kgc3VwcG9ydAorZm9yIG9sZGVyIHZlcnNpb25zIGluIGRpc3R1dGlscy5tc3ZjOWNvbXBpbGVyIGFuZCBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyLgorIiIiCisKKyMgV3JpdHRlbiBieSBQZXJyeSBTdG9sbAorIyBoYWNrZWQgYnkgUm9iaW4gQmVja2VyIGFuZCBUaG9tYXMgSGVsbGVyIHRvIGRvIGEgYmV0dGVyIGpvYiBvZgorIyAgIGZpbmRpbmcgRGV2U3R1ZGlvICh0aHJvdWdoIHRoZSByZWdpc3RyeSkKKyMgcG9ydGVkIHRvIFZTIDIwMDUgYW5kIFZTIDIwMDggYnkgQ2hyaXN0aWFuIEhlaW1lcworIyBwb3J0ZWQgdG8gVlMgMjAxNSBieSBTdGV2ZSBEb3dlcgorCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3VicHJvY2VzcworCitmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvciwgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxlRXJyb3IsIExpYkVycm9yLCBMaW5rRXJyb3IKK2Zyb20gZGlzdHV0aWxzLmNjb21waWxlciBpbXBvcnQgQ0NvbXBpbGVyLCBnZW5fbGliX29wdGlvbnMKK2Zyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKK2Zyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQorCitpbXBvcnQgd2lucmVnCitmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY291bnQKKworZGVmIF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpOgorICAgIHdpdGggd2lucmVnLk9wZW5LZXlFeCgKKyAgICAgICAgd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgciJTb2Z0d2FyZVxNaWNyb3NvZnRcVmlzdWFsU3R1ZGlvXFN4U1xWQzciLAorICAgICAgICBhY2Nlc3M9d2lucmVnLktFWV9SRUFEIHwgd2lucmVnLktFWV9XT1c2NF8zMktFWQorICAgICkgYXMga2V5OgorICAgICAgICBpZiBub3Qga2V5OgorICAgICAgICAgICAgbG9nLmRlYnVnKCJWaXN1YWwgQysrIGlzIG5vdCByZWdpc3RlcmVkIikKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisKKyAgICAgICAgYmVzdF92ZXJzaW9uID0gMAorICAgICAgICBiZXN0X2RpciA9IE5vbmUKKyAgICAgICAgZm9yIGkgaW4gY291bnQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2LCB2Y19kaXIsIHZ0ID0gd2lucmVnLkVudW1WYWx1ZShrZXksIGkpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgdiBhbmQgdnQgPT0gd2lucmVnLlJFR19TWiBhbmQgb3MucGF0aC5pc2Rpcih2Y19kaXIpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGludChmbG9hdCh2KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA+PSAxNCBhbmQgdmVyc2lvbiA+IGJlc3RfdmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgYmVzdF92ZXJzaW9uLCBiZXN0X2RpciA9IHZlcnNpb24sIHZjX2RpcgorICAgICAgICBpZiBub3QgYmVzdF92ZXJzaW9uOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJObyBzdWl0YWJsZSBWaXN1YWwgQysrIHZlcnNpb24gZm91bmQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKworICAgICAgICB2Y3ZhcnNhbGwgPSBvcy5wYXRoLmpvaW4oYmVzdF9kaXIsICJ2Y3ZhcnNhbGwuYmF0IikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHZjdmFyc2FsbCk6CisgICAgICAgICAgICBsb2cuZGVidWcoIiVzIGNhbm5vdCBiZSBmb3VuZCIsIHZjdmFyc2FsbCkKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisKKyAgICAgICAgdmNydW50aW1lID0gTm9uZQorICAgICAgICB2Y3J1bnRpbWVfc3BlYyA9IF9WQ1ZBUlNfUExBVF9UT19WQ1JVTlRJTUVfUkVESVNULmdldChwbGF0X3NwZWMpCisgICAgICAgIGlmIHZjcnVudGltZV9zcGVjOgorICAgICAgICAgICAgdmNydW50aW1lID0gb3MucGF0aC5qb2luKGJlc3RfZGlyLAorICAgICAgICAgICAgICAgIHZjcnVudGltZV9zcGVjLmZvcm1hdChiZXN0X3ZlcnNpb24pKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHZjcnVudGltZSk6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCIlcyBjYW5ub3QgYmUgZm91bmQiLCB2Y3J1bnRpbWUpCisgICAgICAgICAgICAgICAgdmNydW50aW1lID0gTm9uZQorCisgICAgICAgIHJldHVybiB2Y3ZhcnNhbGwsIHZjcnVudGltZQorCitkZWYgX2dldF92Y19lbnYocGxhdF9zcGVjKToKKyAgICBpZiBvcy5nZXRlbnYoIkRJU1RVVElMU19VU0VfU0RLIik6CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBrZXkubG93ZXIoKTogdmFsdWUKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKQorICAgICAgICB9CisKKyAgICB2Y3ZhcnNhbGwsIHZjcnVudGltZSA9IF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpCisgICAgaWYgbm90IHZjdmFyc2FsbDoKKyAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiVW5hYmxlIHRvIGZpbmQgdmN2YXJzYWxsLmJhdCIpCisKKyAgICB0cnk6CisgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KAorICAgICAgICAgICAgJyJ7fSIge30gJiYgc2V0Jy5mb3JtYXQodmN2YXJzYWxsLCBwbGF0X3NwZWMpLAorICAgICAgICAgICAgc2hlbGw9VHJ1ZSwKKyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICApCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4YzoKKyAgICAgICAgbG9nLmVycm9yKGV4Yy5vdXRwdXQpCisgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoIkVycm9yIGV4ZWN1dGluZyB7fSIKKyAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Yy5jbWQpKQorCisgICAgZW52ID0geworICAgICAgICBrZXkubG93ZXIoKTogdmFsdWUKKyAgICAgICAgZm9yIGtleSwgXywgdmFsdWUgaW4KKyAgICAgICAgKGxpbmUucGFydGl0aW9uKCc9JykgZm9yIGxpbmUgaW4gb3V0LnNwbGl0bGluZXMoKSkKKyAgICAgICAgaWYga2V5IGFuZCB2YWx1ZQorICAgIH0KKworICAgIGlmIHZjcnVudGltZToKKyAgICAgICAgZW52WydweV92Y3J1bnRpbWVfcmVkaXN0J10gPSB2Y3J1bnRpbWUKKyAgICByZXR1cm4gZW52CisKK2RlZiBfZmluZF9leGUoZXhlLCBwYXRocz1Ob25lKToKKyAgICAiIiJSZXR1cm4gcGF0aCB0byBhbiBNU1ZDIGV4ZWN1dGFibGUgcHJvZ3JhbS4KKworICAgIFRyaWVzIHRvIGZpbmQgdGhlIHByb2dyYW0gaW4gc2V2ZXJhbCBwbGFjZXM6IGZpcnN0LCBvbmUgb2YgdGhlCisgICAgTVNWQyBwcm9ncmFtIHNlYXJjaCBwYXRocyBmcm9tIHRoZSByZWdpc3RyeTsgbmV4dCwgdGhlIGRpcmVjdG9yaWVzCisgICAgaW4gdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuICBJZiBhbnkgb2YgdGhvc2Ugd29yaywgcmV0dXJuIGFuCisgICAgYWJzb2x1dGUgcGF0aCB0aGF0IGlzIGtub3duIHRvIGV4aXN0LiAgSWYgbm9uZSBvZiB0aGVtIHdvcmssIGp1c3QKKyAgICByZXR1cm4gdGhlIG9yaWdpbmFsIHByb2dyYW0gbmFtZSwgJ2V4ZScuCisgICAgIiIiCisgICAgaWYgbm90IHBhdGhzOgorICAgICAgICBwYXRocyA9IG9zLmdldGVudigncGF0aCcpLnNwbGl0KG9zLnBhdGhzZXApCisgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgIGZuID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChwKSwgZXhlKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICByZXR1cm4gZm4KKyAgICByZXR1cm4gZXhlCisKKyMgQSBtYXAga2V5ZWQgYnkgZ2V0X3BsYXRmb3JtKCkgcmV0dXJuIHZhbHVlcyB0byB2YWx1ZXMgYWNjZXB0ZWQgYnkKKyMgJ3ZjdmFyc2FsbC5iYXQnLiAgTm90ZSBhIGNyb3NzLWNvbXBpbGUgbWF5IGNvbWJpbmUgdGhlc2UgKGVnLCAneDg2X2FtZDY0JyBpcworIyB0aGUgcGFyYW0gdG8gY3Jvc3MtY29tcGlsZSBvbiB4ODYgdGFyZ2V0dGluZyBhbWQ2NC4pCitQTEFUX1RPX1ZDVkFSUyA9IHsKKyAgICAnd2luMzInIDogJ3g4NicsCisgICAgJ3dpbi1hbWQ2NCcgOiAnYW1kNjQnLAorfQorCisjIEEgbWFwIGtleWVkIGJ5IGdldF9wbGF0Zm9ybSgpIHJldHVybiB2YWx1ZXMgdG8gdGhlIGZpbGUgdW5kZXIKKyMgdGhlIFZDIGluc3RhbGwgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHZjcnVudGltZSByZWRpc3RyaWJ1dGFibGUuCitfVkNWQVJTX1BMQVRfVE9fVkNSVU5USU1FX1JFRElTVCA9IHsKKyAgICAneDg2JyA6ICdyZWRpc3RcXHg4NlxcTWljcm9zb2Z0LlZDezB9MC5DUlRcXHZjcnVudGltZXswfTAuZGxsJywKKyAgICAnYW1kNjQnIDogJ3JlZGlzdFxceDY0XFxNaWNyb3NvZnQuVkN7MH0wLkNSVFxcdmNydW50aW1lezB9MC5kbGwnLAorICAgICd4ODZfYW1kNjQnIDogJ3JlZGlzdFxceDY0XFxNaWNyb3NvZnQuVkN7MH0wLkNSVFxcdmNydW50aW1lezB9MC5kbGwnLAorfQorCisjIEEgc2V0IGNvbnRhaW5pbmcgdGhlIERMTHMgdGhhdCBhcmUgZ3VhcmFudGVlZCB0byBiZSBhdmFpbGFibGUgZm9yCisjIGFsbCBtaWNybyB2ZXJzaW9ucyBvZiB0aGlzIFB5dGhvbiB2ZXJzaW9uLiBLbm93biBleHRlbnNpb24KKyMgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIG5vdCBpbiB0aGlzIHNldCB3aWxsIGJlIGNvcGllZCB0byB0aGUgb3V0cHV0CisjIHBhdGguCitfQlVORExFRF9ETExTID0gZnJvemVuc2V0KFsndmNydW50aW1lMTQwLmRsbCddKQorCitjbGFzcyBNU1ZDQ29tcGlsZXIoQ0NvbXBpbGVyKSA6CisgICAgIiIiQ29uY3JldGUgY2xhc3MgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byBNaWNyb3NvZnQgVmlzdWFsIEMrKywKKyAgICAgICBhcyBkZWZpbmVkIGJ5IHRoZSBDQ29tcGlsZXIgYWJzdHJhY3QgY2xhc3MuIiIiCisKKyAgICBjb21waWxlcl90eXBlID0gJ21zdmMnCisKKyAgICAjIEp1c3Qgc2V0IHRoaXMgc28gQ0NvbXBpbGVyJ3MgY29uc3RydWN0b3IgZG9lc24ndCBiYXJmLiAgV2UgY3VycmVudGx5CisgICAgIyBkb24ndCB1c2UgdGhlICdzZXRfZXhlY3V0YWJsZXMoKScgYnVyZWF1Y3JhY3kgcHJvdmlkZWQgYnkgQ0NvbXBpbGVyLAorICAgICMgYXMgaXQgcmVhbGx5IGlzbid0IG5lY2Vzc2FyeSBmb3IgdGhpcyBzb3J0IG9mIHNpbmdsZS1jb21waWxlciBjbGFzcy4KKyAgICAjIFdvdWxkIGJlIG5pY2UgdG8gaGF2ZSBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlIHdpdGggVW5peENDb21waWxlciwKKyAgICAjIHRob3VnaCwgc28gaXQncyB3b3J0aCB0aGlua2luZyBhYm91dC4KKyAgICBleGVjdXRhYmxlcyA9IHt9CisKKyAgICAjIFByaXZhdGUgY2xhc3MgZGF0YSAobmVlZCB0byBkaXN0aW5ndWlzaCBDIGZyb20gQysrIHNvdXJjZSBmb3IgY29tcGlsZXIpCisgICAgX2NfZXh0ZW5zaW9ucyA9IFsnLmMnXQorICAgIF9jcHBfZXh0ZW5zaW9ucyA9IFsnLmNjJywgJy5jcHAnLCAnLmN4eCddCisgICAgX3JjX2V4dGVuc2lvbnMgPSBbJy5yYyddCisgICAgX21jX2V4dGVuc2lvbnMgPSBbJy5tYyddCisKKyAgICAjIE5lZWRlZCBmb3IgdGhlIGZpbGVuYW1lIGdlbmVyYXRpb24gbWV0aG9kcyBwcm92aWRlZCBieSB0aGUKKyAgICAjIGJhc2UgY2xhc3MsIENDb21waWxlci4KKyAgICBzcmNfZXh0ZW5zaW9ucyA9IChfY19leHRlbnNpb25zICsgX2NwcF9leHRlbnNpb25zICsKKyAgICAgICAgICAgICAgICAgICAgICBfcmNfZXh0ZW5zaW9ucyArIF9tY19leHRlbnNpb25zKQorICAgIHJlc19leHRlbnNpb24gPSAnLnJlcycKKyAgICBvYmpfZXh0ZW5zaW9uID0gJy5vYmonCisgICAgc3RhdGljX2xpYl9leHRlbnNpb24gPSAnLmxpYicKKyAgICBzaGFyZWRfbGliX2V4dGVuc2lvbiA9ICcuZGxsJworICAgIHN0YXRpY19saWJfZm9ybWF0ID0gc2hhcmVkX2xpYl9mb3JtYXQgPSAnJXMlcycKKyAgICBleGVfZXh0ZW5zaW9uID0gJy5leGUnCisKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJib3NlPTAsIGRyeV9ydW49MCwgZm9yY2U9MCk6CisgICAgICAgIENDb21waWxlci5fX2luaXRfXyAoc2VsZiwgdmVyYm9zZSwgZHJ5X3J1biwgZm9yY2UpCisgICAgICAgICMgdGFyZ2V0IHBsYXRmb3JtICgucGxhdF9uYW1lIGlzIGNvbnNpc3RlbnQgd2l0aCAnYmRpc3QnKQorICAgICAgICBzZWxmLnBsYXRfbmFtZSA9IE5vbmUKKyAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IEZhbHNlCisKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWxmLCBwbGF0X25hbWU9Tm9uZSk6CisgICAgICAgICMgbXVsdGktaW5pdCBtZWFucyB3ZSB3b3VsZCBuZWVkIHRvIGNoZWNrIHBsYXRmb3JtIHNhbWUgZWFjaCB0aW1lLi4uCisgICAgICAgIGFzc2VydCBub3Qgc2VsZi5pbml0aWFsaXplZCwgImRvbid0IGluaXQgbXVsdGlwbGUgdGltZXMiCisgICAgICAgIGlmIHBsYXRfbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgcGxhdF9uYW1lID0gZ2V0X3BsYXRmb3JtKCkKKyAgICAgICAgIyBzYW5pdHkgY2hlY2sgZm9yIHBsYXRmb3JtcyB0byBwcmV2ZW50IG9ic2N1cmUgZXJyb3JzIGxhdGVyLgorICAgICAgICBpZiBwbGF0X25hbWUgbm90IGluIFBMQVRfVE9fVkNWQVJTOgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiLS1wbGF0LW5hbWUgbXVzdCBiZSBvbmUgb2Yge30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodHVwbGUoUExBVF9UT19WQ1ZBUlMpKSkKKworICAgICAgICAjIE9uIHg4NiwgJ3ZjdmFyc2FsbC5iYXQgYW1kNjQnIGNyZWF0ZXMgYW4gZW52IHRoYXQgZG9lc24ndCB3b3JrOworICAgICAgICAjIHRvIGNyb3NzIGNvbXBpbGUsIHlvdSB1c2UgJ3g4Nl9hbWQ2NCcuCisgICAgICAgICMgT24gQU1ENjQsICd2Y3ZhcnNhbGwuYmF0IGFtZDY0JyBpcyBhIG5hdGl2ZSBidWlsZCBlbnY7IHRvIGNyb3NzCisgICAgICAgICMgY29tcGlsZSB1c2UgJ3g4NicgKGllLCBpdCBydW5zIHRoZSB4ODYgY29tcGlsZXIgZGlyZWN0bHkpCisgICAgICAgIGlmIHBsYXRfbmFtZSA9PSBnZXRfcGxhdGZvcm0oKSBvciBwbGF0X25hbWUgPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICMgbmF0aXZlIGJ1aWxkIG9yIGNyb3NzLWNvbXBpbGUgdG8gd2luMzIKKyAgICAgICAgICAgIHBsYXRfc3BlYyA9IFBMQVRfVE9fVkNWQVJTW3BsYXRfbmFtZV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgY3Jvc3MgY29tcGlsZSBmcm9tIHdpbjMyIC0+IHNvbWUgNjRiaXQKKyAgICAgICAgICAgIHBsYXRfc3BlYyA9ICd7fV97fScuZm9ybWF0KAorICAgICAgICAgICAgICAgIFBMQVRfVE9fVkNWQVJTW2dldF9wbGF0Zm9ybSgpXSwKKyAgICAgICAgICAgICAgICBQTEFUX1RPX1ZDVkFSU1twbGF0X25hbWVdCisgICAgICAgICAgICApCisKKyAgICAgICAgdmNfZW52ID0gX2dldF92Y19lbnYocGxhdF9zcGVjKQorICAgICAgICBpZiBub3QgdmNfZW52OgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigiVW5hYmxlIHRvIGZpbmQgYSBjb21wYXRpYmxlICIKKyAgICAgICAgICAgICAgICAiVmlzdWFsIFN0dWRpbyBpbnN0YWxsYXRpb24uIikKKworICAgICAgICBzZWxmLl9wYXRocyA9IHZjX2Vudi5nZXQoJ3BhdGgnLCAnJykKKyAgICAgICAgcGF0aHMgPSBzZWxmLl9wYXRocy5zcGxpdChvcy5wYXRoc2VwKQorICAgICAgICBzZWxmLmNjID0gX2ZpbmRfZXhlKCJjbC5leGUiLCBwYXRocykKKyAgICAgICAgc2VsZi5saW5rZXIgPSBfZmluZF9leGUoImxpbmsuZXhlIiwgcGF0aHMpCisgICAgICAgIHNlbGYubGliID0gX2ZpbmRfZXhlKCJsaWIuZXhlIiwgcGF0aHMpCisgICAgICAgIHNlbGYucmMgPSBfZmluZF9leGUoInJjLmV4ZSIsIHBhdGhzKSAgICMgcmVzb3VyY2UgY29tcGlsZXIKKyAgICAgICAgc2VsZi5tYyA9IF9maW5kX2V4ZSgibWMuZXhlIiwgcGF0aHMpICAgIyBtZXNzYWdlIGNvbXBpbGVyCisgICAgICAgIHNlbGYubXQgPSBfZmluZF9leGUoIm10LmV4ZSIsIHBhdGhzKSAgICMgbWVzc2FnZSBjb21waWxlcgorICAgICAgICBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0ID0gdmNfZW52LmdldCgncHlfdmNydW50aW1lX3JlZGlzdCcsICcnKQorCisgICAgICAgIGZvciBkaXIgaW4gdmNfZW52LmdldCgnaW5jbHVkZScsICcnKS5zcGxpdChvcy5wYXRoc2VwKToKKyAgICAgICAgICAgIGlmIGRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9pbmNsdWRlX2RpcihkaXIpCisKKyAgICAgICAgZm9yIGRpciBpbiB2Y19lbnYuZ2V0KCdsaWInLCAnJykuc3BsaXQob3MucGF0aHNlcCk6CisgICAgICAgICAgICBpZiBkaXI6CisgICAgICAgICAgICAgICAgc2VsZi5hZGRfbGlicmFyeV9kaXIoZGlyKQorCisgICAgICAgIHNlbGYucHJlcHJvY2Vzc19vcHRpb25zID0gTm9uZQorICAgICAgICAjIElmIHZjcnVudGltZV9yZWRpc3QgaXMgYXZhaWxhYmxlLCBsaW5rIGFnYWluc3QgaXQgZHluYW1pY2FsbHkuIE90aGVyd2lzZSwKKyAgICAgICAgIyB1c2UgL01UW2RdIHRvIGJ1aWxkIHN0YXRpY2FsbHksIHRoZW4gc3dpdGNoIGZyb20gbGlidWNydFtkXS5saWIgdG8gdWNydFtkXS5saWIKKyAgICAgICAgIyBsYXRlciB0byBkeW5hbWljYWxseSBsaW5rIHRvIHVjcnRiYXNlIGJ1dCBub3QgdmNydW50aW1lLgorICAgICAgICBzZWxmLmNvbXBpbGVfb3B0aW9ucyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJywgJy9PeCcsICcvVzMnLCAnL0dMJywgJy9ETkRFQlVHJworICAgICAgICBdCisgICAgICAgIHNlbGYuY29tcGlsZV9vcHRpb25zLmFwcGVuZCgnL01EJyBpZiBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0IGVsc2UgJy9NVCcpCisKKyAgICAgICAgc2VsZi5jb21waWxlX29wdGlvbnNfZGVidWcgPSBbCisgICAgICAgICAgICAnL25vbG9nbycsICcvT2QnLCAnL01EZCcsICcvWmknLCAnL1czJywgJy9EX0RFQlVHJworICAgICAgICBdCisKKyAgICAgICAgbGRmbGFncyA9IFsKKyAgICAgICAgICAgICcvbm9sb2dvJywgJy9JTkNSRU1FTlRBTDpOTycsICcvTFRDRycKKyAgICAgICAgXQorICAgICAgICBpZiBub3Qgc2VsZi5fdmNydW50aW1lX3JlZGlzdDoKKyAgICAgICAgICAgIGxkZmxhZ3MuZXh0ZW5kKCgnL25vZGVmYXVsdGxpYjpsaWJ1Y3J0LmxpYicsICd1Y3J0LmxpYicpKQorCisgICAgICAgIGxkZmxhZ3NfZGVidWcgPSBbCisgICAgICAgICAgICAnL25vbG9nbycsICcvSU5DUkVNRU5UQUw6Tk8nLCAnL0xUQ0cnLCAnL0RFQlVHOkZVTEwnCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmxkZmxhZ3NfZXhlID0gWypsZGZsYWdzLCAnL01BTklGRVNUOkVNQkVELElEPTEnXQorICAgICAgICBzZWxmLmxkZmxhZ3NfZXhlX2RlYnVnID0gWypsZGZsYWdzX2RlYnVnLCAnL01BTklGRVNUOkVNQkVELElEPTEnXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc2hhcmVkID0gWypsZGZsYWdzLCAnL0RMTCcsICcvTUFOSUZFU1Q6RU1CRUQsSUQ9MicsICcvTUFOSUZFU1RVQUM6Tk8nXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc2hhcmVkX2RlYnVnID0gWypsZGZsYWdzX2RlYnVnLCAnL0RMTCcsICcvTUFOSUZFU1Q6RU1CRUQsSUQ9MicsICcvTUFOSUZFU1RVQUM6Tk8nXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc3RhdGljID0gWypsZGZsYWdzXQorICAgICAgICBzZWxmLmxkZmxhZ3Nfc3RhdGljX2RlYnVnID0gWypsZGZsYWdzX2RlYnVnXQorCisgICAgICAgIHNlbGYuX2xkZmxhZ3MgPSB7CisgICAgICAgICAgICAoQ0NvbXBpbGVyLkVYRUNVVEFCTEUsIE5vbmUpOiBzZWxmLmxkZmxhZ3NfZXhlLAorICAgICAgICAgICAgKENDb21waWxlci5FWEVDVVRBQkxFLCBGYWxzZSk6IHNlbGYubGRmbGFnc19leGUsCisgICAgICAgICAgICAoQ0NvbXBpbGVyLkVYRUNVVEFCTEUsIFRydWUpOiBzZWxmLmxkZmxhZ3NfZXhlX2RlYnVnLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfT0JKRUNULCBOb25lKTogc2VsZi5sZGZsYWdzX3NoYXJlZCwKKyAgICAgICAgICAgIChDQ29tcGlsZXIuU0hBUkVEX09CSkVDVCwgRmFsc2UpOiBzZWxmLmxkZmxhZ3Nfc2hhcmVkLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfT0JKRUNULCBUcnVlKTogc2VsZi5sZGZsYWdzX3NoYXJlZF9kZWJ1ZywKKyAgICAgICAgICAgIChDQ29tcGlsZXIuU0hBUkVEX0xJQlJBUlksIE5vbmUpOiBzZWxmLmxkZmxhZ3Nfc3RhdGljLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfTElCUkFSWSwgRmFsc2UpOiBzZWxmLmxkZmxhZ3Nfc3RhdGljLAorICAgICAgICAgICAgKENDb21waWxlci5TSEFSRURfTElCUkFSWSwgVHJ1ZSk6IHNlbGYubGRmbGFnc19zdGF0aWNfZGVidWcsCisgICAgICAgIH0KKworICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgIyAtLSBXb3JrZXIgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGRlZiBvYmplY3RfZmlsZW5hbWVzKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGVuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcF9kaXI9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZGlyPScnKToKKyAgICAgICAgZXh0X21hcCA9IHsKKyAgICAgICAgICAgICoqe2V4dDogc2VsZi5vYmpfZXh0ZW5zaW9uIGZvciBleHQgaW4gc2VsZi5zcmNfZXh0ZW5zaW9uc30sCisgICAgICAgICAgICAqKntleHQ6IHNlbGYucmVzX2V4dGVuc2lvbiBmb3IgZXh0IGluIHNlbGYuX3JjX2V4dGVuc2lvbnMgKyBzZWxmLl9tY19leHRlbnNpb25zfSwKKyAgICAgICAgfQorCisgICAgICAgIG91dHB1dF9kaXIgPSBvdXRwdXRfZGlyIG9yICcnCisKKyAgICAgICAgZGVmIG1ha2Vfb3V0X3BhdGgocCk6CisgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHApCisgICAgICAgICAgICBpZiBzdHJpcF9kaXI6CisgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoYmFzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgXywgYmFzZSA9IG9zLnBhdGguc3BsaXRkcml2ZShiYXNlKQorICAgICAgICAgICAgICAgIGlmIGJhc2Uuc3RhcnRzd2l0aCgob3MucGF0aC5zZXAsIG9zLnBhdGguYWx0c2VwKSk6CisgICAgICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlWzE6XQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgWFhYOiBUaGlzIG1heSBwcm9kdWNlIGFic3VyZGx5IGxvbmcgcGF0aHMuIFdlIHNob3VsZCBjaGVjaworICAgICAgICAgICAgICAgICMgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IGFuZCB0cmltIGJhc2UgdW50aWwgd2UgZml0IHdpdGhpbgorICAgICAgICAgICAgICAgICMgMjYwIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihvdXRwdXRfZGlyLCBiYXNlICsgZXh0X21hcFtleHRdKQorICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgICAgICMgQmV0dGVyIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIHNpbGVudGx5IGNvbnRpbnVpbmcKKyAgICAgICAgICAgICAgICAjIGFuZCBsYXRlciBjb21wbGFpbiBhYm91dCBzb3VyY2VzIGFuZCB0YXJnZXRzIGhhdmluZworICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IGxlbmd0aHMKKyAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IoIkRvbid0IGtub3cgaG93IHRvIGNvbXBpbGUge30iLmZvcm1hdChwKSkKKworICAgICAgICByZXR1cm4gbGlzdChtYXAobWFrZV9vdXRfcGF0aCwgc291cmNlX2ZpbGVuYW1lcykpCisKKworICAgIGRlZiBjb21waWxlKHNlbGYsIHNvdXJjZXMsCisgICAgICAgICAgICAgICAgb3V0cHV0X2Rpcj1Ob25lLCBtYWNyb3M9Tm9uZSwgaW5jbHVkZV9kaXJzPU5vbmUsIGRlYnVnPTAsCisgICAgICAgICAgICAgICAgZXh0cmFfcHJlYXJncz1Ob25lLCBleHRyYV9wb3N0YXJncz1Ob25lLCBkZXBlbmRzPU5vbmUpOgorCisgICAgICAgIGlmIG5vdCBzZWxmLmluaXRpYWxpemVkOgorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKCkKKyAgICAgICAgY29tcGlsZV9pbmZvID0gc2VsZi5fc2V0dXBfY29tcGlsZShvdXRwdXRfZGlyLCBtYWNyb3MsIGluY2x1ZGVfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzLCBkZXBlbmRzLCBleHRyYV9wb3N0YXJncykKKyAgICAgICAgbWFjcm9zLCBvYmplY3RzLCBleHRyYV9wb3N0YXJncywgcHBfb3B0cywgYnVpbGQgPSBjb21waWxlX2luZm8KKworICAgICAgICBjb21waWxlX29wdHMgPSBleHRyYV9wcmVhcmdzIG9yIFtdCisgICAgICAgIGNvbXBpbGVfb3B0cy5hcHBlbmQoJy9jJykKKyAgICAgICAgaWYgZGVidWc6CisgICAgICAgICAgICBjb21waWxlX29wdHMuZXh0ZW5kKHNlbGYuY29tcGlsZV9vcHRpb25zX2RlYnVnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29tcGlsZV9vcHRzLmV4dGVuZChzZWxmLmNvbXBpbGVfb3B0aW9ucykKKworCisgICAgICAgIGFkZF9jcHBfb3B0cyA9IEZhbHNlCisKKyAgICAgICAgZm9yIG9iaiBpbiBvYmplY3RzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNyYywgZXh0ID0gYnVpbGRbb2JqXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgICAgICAjIHBhc3MgdGhlIGZ1bGwgcGF0aG5hbWUgdG8gTVNWQyBpbiBkZWJ1ZyBtb2RlLAorICAgICAgICAgICAgICAgICMgdGhpcyBhbGxvd3MgdGhlIGRlYnVnZ2VyIHRvIGZpbmQgdGhlIHNvdXJjZSBmaWxlCisgICAgICAgICAgICAgICAgIyB3aXRob3V0IGFza2luZyB0aGUgdXNlciB0byBicm93c2UgZm9yIGl0CisgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5hYnNwYXRoKHNyYykKKworICAgICAgICAgICAgaWYgZXh0IGluIHNlbGYuX2NfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICBpbnB1dF9vcHQgPSAiL1RjIiArIHNyYworICAgICAgICAgICAgZWxpZiBleHQgaW4gc2VsZi5fY3BwX2V4dGVuc2lvbnM6CisgICAgICAgICAgICAgICAgaW5wdXRfb3B0ID0gIi9UcCIgKyBzcmMKKyAgICAgICAgICAgICAgICBhZGRfY3BwX29wdHMgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGV4dCBpbiBzZWxmLl9yY19leHRlbnNpb25zOgorICAgICAgICAgICAgICAgICMgY29tcGlsZSAuUkMgdG8gLlJFUyBmaWxlCisgICAgICAgICAgICAgICAgaW5wdXRfb3B0ID0gc3JjCisgICAgICAgICAgICAgICAgb3V0cHV0X29wdCA9ICIvZm8iICsgb2JqCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLnJjXSArIHBwX29wdHMgKyBbb3V0cHV0X29wdCwgaW5wdXRfb3B0XSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBleHQgaW4gc2VsZi5fbWNfZXh0ZW5zaW9uczoKKyAgICAgICAgICAgICAgICAjIENvbXBpbGUgLk1DIHRvIC5SQyBmaWxlIHRvIC5SRVMgZmlsZS4KKyAgICAgICAgICAgICAgICAjICAgKiAnLWggZGlyJyBzcGVjaWZpZXMgdGhlIGRpcmVjdG9yeSBmb3IgdGhlCisgICAgICAgICAgICAgICAgIyAgICAgZ2VuZXJhdGVkIGluY2x1ZGUgZmlsZQorICAgICAgICAgICAgICAgICMgICAqICctciBkaXInIHNwZWNpZmllcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBvZiB0aGUKKyAgICAgICAgICAgICAgICAjICAgICBnZW5lcmF0ZWQgUkMgZmlsZSBhbmQgdGhlIGJpbmFyeSBtZXNzYWdlIHJlc291cmNlCisgICAgICAgICAgICAgICAgIyAgICAgaXQgaW5jbHVkZXMKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBGb3Igbm93IChzaW5jZSB0aGVyZSBhcmUgbm8gb3B0aW9ucyB0byBjaGFuZ2UgdGhpcyksCisgICAgICAgICAgICAgICAgIyB3ZSB1c2UgdGhlIHNvdXJjZS1kaXJlY3RvcnkgZm9yIHRoZSBpbmNsdWRlIGZpbGUgYW5kCisgICAgICAgICAgICAgICAgIyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgUkMgZmlsZSBhbmQgbWVzc2FnZQorICAgICAgICAgICAgICAgICMgcmVzb3VyY2VzLiBUaGlzIHdvcmtzIGF0IGxlYXN0IGZvciB3aW4zMmFsbC4KKyAgICAgICAgICAgICAgICBoX2RpciA9IG9zLnBhdGguZGlybmFtZShzcmMpCisgICAgICAgICAgICAgICAgcmNfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9iaikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgZmlyc3QgY29tcGlsZSAuTUMgdG8gLlJDIGFuZCAuSCBmaWxlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Bhd24oW3NlbGYubWMsICctaCcsIGhfZGlyLCAnLXInLCByY19kaXIsIHNyY10pCisgICAgICAgICAgICAgICAgICAgIGJhc2UsIF8gPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUgKHNyYykpCisgICAgICAgICAgICAgICAgICAgIHJjX2ZpbGUgPSBvcy5wYXRoLmpvaW4ocmNfZGlyLCBiYXNlICsgJy5yYycpCisgICAgICAgICAgICAgICAgICAgICMgdGhlbiBjb21waWxlIC5SQyB0byAuUkVTIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihbc2VsZi5yYywgIi9mbyIgKyBvYmosIHJjX2ZpbGVdKQorCisgICAgICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIENvbXBpbGVFcnJvcihtc2cpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBob3cgdG8gaGFuZGxlIHRoaXMgZmlsZT8KKyAgICAgICAgICAgICAgICByYWlzZSBDb21waWxlRXJyb3IoIkRvbid0IGtub3cgaG93IHRvIGNvbXBpbGUge30gdG8ge30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc3JjLCBvYmopKQorCisgICAgICAgICAgICBhcmdzID0gW3NlbGYuY2NdICsgY29tcGlsZV9vcHRzICsgcHBfb3B0cworICAgICAgICAgICAgaWYgYWRkX2NwcF9vcHRzOgorICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCcvRUhzYycpCisgICAgICAgICAgICBhcmdzLmFwcGVuZChpbnB1dF9vcHQpCisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiL0ZvIiArIG9iaikKKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKGV4dHJhX3Bvc3RhcmdzKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihhcmdzKQorICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcGlsZUVycm9yKG1zZykKKworICAgICAgICByZXR1cm4gb2JqZWN0cworCisKKyAgICBkZWYgY3JlYXRlX3N0YXRpY19saWIoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2xpYm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWc9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2xhbmc9Tm9uZSk6CisKKyAgICAgICAgaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoKQorICAgICAgICBvYmplY3RzLCBvdXRwdXRfZGlyID0gc2VsZi5fZml4X29iamVjdF9hcmdzKG9iamVjdHMsIG91dHB1dF9kaXIpCisgICAgICAgIG91dHB1dF9maWxlbmFtZSA9IHNlbGYubGlicmFyeV9maWxlbmFtZShvdXRwdXRfbGlibmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kaXI9b3V0cHV0X2RpcikKKworICAgICAgICBpZiBzZWxmLl9uZWVkX2xpbmsob2JqZWN0cywgb3V0cHV0X2ZpbGVuYW1lKToKKyAgICAgICAgICAgIGxpYl9hcmdzID0gb2JqZWN0cyArIFsnL09VVDonICsgb3V0cHV0X2ZpbGVuYW1lXQorICAgICAgICAgICAgaWYgZGVidWc6CisgICAgICAgICAgICAgICAgcGFzcyAjIFhYWCB3aGF0IGdvZXMgaGVyZT8KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoJ0V4ZWN1dGluZyAiJXMiICVzJywgc2VsZi5saWIsICcgJy5qb2luKGxpYl9hcmdzKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLmxpYl0gKyBsaWJfYXJncykKKyAgICAgICAgICAgIGV4Y2VwdCBEaXN0dXRpbHNFeGVjRXJyb3IgYXMgbXNnOgorICAgICAgICAgICAgICAgIHJhaXNlIExpYkVycm9yKG1zZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZy5kZWJ1Zygic2tpcHBpbmcgJXMgKHVwLXRvLWRhdGUpIiwgb3V0cHV0X2ZpbGVuYW1lKQorCisKKyAgICBkZWYgbGluayhzZWxmLAorICAgICAgICAgICAgIHRhcmdldF9kZXNjLAorICAgICAgICAgICAgIG9iamVjdHMsCisgICAgICAgICAgICAgb3V0cHV0X2ZpbGVuYW1lLAorICAgICAgICAgICAgIG91dHB1dF9kaXI9Tm9uZSwKKyAgICAgICAgICAgICBsaWJyYXJpZXM9Tm9uZSwKKyAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9Tm9uZSwKKyAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1Ob25lLAorICAgICAgICAgICAgIGV4cG9ydF9zeW1ib2xzPU5vbmUsCisgICAgICAgICAgICAgZGVidWc9MCwKKyAgICAgICAgICAgICBleHRyYV9wcmVhcmdzPU5vbmUsCisgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3M9Tm9uZSwKKyAgICAgICAgICAgICBidWlsZF90ZW1wPU5vbmUsCisgICAgICAgICAgICAgdGFyZ2V0X2xhbmc9Tm9uZSk6CisKKyAgICAgICAgaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICBzZWxmLmluaXRpYWxpemUoKQorICAgICAgICBvYmplY3RzLCBvdXRwdXRfZGlyID0gc2VsZi5fZml4X29iamVjdF9hcmdzKG9iamVjdHMsIG91dHB1dF9kaXIpCisgICAgICAgIGZpeGVkX2FyZ3MgPSBzZWxmLl9maXhfbGliX2FyZ3MobGlicmFyaWVzLCBsaWJyYXJ5X2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZV9saWJyYXJ5X2RpcnMpCisgICAgICAgIGxpYnJhcmllcywgbGlicmFyeV9kaXJzLCBydW50aW1lX2xpYnJhcnlfZGlycyA9IGZpeGVkX2FyZ3MKKworICAgICAgICBpZiBydW50aW1lX2xpYnJhcnlfZGlyczoKKyAgICAgICAgICAgIHNlbGYud2FybigiSSBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAncnVudGltZV9saWJyYXJ5X2RpcnMnOiAiCisgICAgICAgICAgICAgICAgICAgICAgICsgc3RyKHJ1bnRpbWVfbGlicmFyeV9kaXJzKSkKKworICAgICAgICBsaWJfb3B0cyA9IGdlbl9saWJfb3B0aW9ucyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnMsIHJ1bnRpbWVfbGlicmFyeV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMpCisgICAgICAgIGlmIG91dHB1dF9kaXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvdXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGVuYW1lKQorCisgICAgICAgIGlmIHNlbGYuX25lZWRfbGluayhvYmplY3RzLCBvdXRwdXRfZmlsZW5hbWUpOgorICAgICAgICAgICAgbGRmbGFncyA9IHNlbGYuX2xkZmxhZ3NbdGFyZ2V0X2Rlc2MsIGRlYnVnXQorCisgICAgICAgICAgICBleHBvcnRfb3B0cyA9IFsiL0VYUE9SVDoiICsgc3ltIGZvciBzeW0gaW4gKGV4cG9ydF9zeW1ib2xzIG9yIFtdKV0KKworICAgICAgICAgICAgbGRfYXJncyA9IChsZGZsYWdzICsgbGliX29wdHMgKyBleHBvcnRfb3B0cyArCisgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgKyBbJy9PVVQ6JyArIG91dHB1dF9maWxlbmFtZV0pCisKKyAgICAgICAgICAgICMgVGhlIE1TVkMgbGlua2VyIGdlbmVyYXRlcyAubGliIGFuZCAuZXhwIGZpbGVzLCB3aGljaCBjYW5ub3QgYmUKKyAgICAgICAgICAgICMgc3VwcHJlc3NlZCBieSBhbnkgbGlua2VyIHN3aXRjaGVzLiBUaGUgLmxpYiBmaWxlcyBtYXkgZXZlbiBiZQorICAgICAgICAgICAgIyBuZWVkZWQhIE1ha2Ugc3VyZSB0aGV5IGFyZSBnZW5lcmF0ZWQgaW4gdGhlIHRlbXBvcmFyeSBidWlsZAorICAgICAgICAgICAgIyBkaXJlY3RvcnkuIFNpbmNlIHRoZXkgaGF2ZSBkaWZmZXJlbnQgbmFtZXMgZm9yIGRlYnVnIGFuZCByZWxlYXNlCisgICAgICAgICAgICAjIGJ1aWxkcywgdGhleSBjYW4gZ28gaW50byB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgICAgICAgICBidWlsZF90ZW1wID0gb3MucGF0aC5kaXJuYW1lKG9iamVjdHNbMF0pCisgICAgICAgICAgICBpZiBleHBvcnRfc3ltYm9scyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAoZGxsX25hbWUsIGRsbF9leHQpID0gb3MucGF0aC5zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShvdXRwdXRfZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIGltcGxpYl9maWxlID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBidWlsZF90ZW1wLAorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZmlsZW5hbWUoZGxsX25hbWUpKQorICAgICAgICAgICAgICAgIGxkX2FyZ3MuYXBwZW5kICgnL0lNUExJQjonICsgaW1wbGliX2ZpbGUpCisKKyAgICAgICAgICAgIGlmIGV4dHJhX3ByZWFyZ3M6CisgICAgICAgICAgICAgICAgbGRfYXJnc1s6MF0gPSBleHRyYV9wcmVhcmdzCisgICAgICAgICAgICBpZiBleHRyYV9wb3N0YXJnczoKKyAgICAgICAgICAgICAgICBsZF9hcmdzLmV4dGVuZChleHRyYV9wb3N0YXJncykKKworICAgICAgICAgICAgb3V0cHV0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgob3V0cHV0X2ZpbGVuYW1lKSkKKyAgICAgICAgICAgIHNlbGYubWtwYXRoKG91dHB1dF9kaXIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCdFeGVjdXRpbmcgIiVzIiAlcycsIHNlbGYubGlua2VyLCAnICcuam9pbihsZF9hcmdzKSkKKyAgICAgICAgICAgICAgICBzZWxmLnNwYXduKFtzZWxmLmxpbmtlcl0gKyBsZF9hcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuX2NvcHlfdmNydW50aW1lKG91dHB1dF9kaXIpCisgICAgICAgICAgICBleGNlcHQgRGlzdHV0aWxzRXhlY0Vycm9yIGFzIG1zZzoKKyAgICAgICAgICAgICAgICByYWlzZSBMaW5rRXJyb3IobXNnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nLmRlYnVnKCJza2lwcGluZyAlcyAodXAtdG8tZGF0ZSkiLCBvdXRwdXRfZmlsZW5hbWUpCisKKyAgICBkZWYgX2NvcHlfdmNydW50aW1lKHNlbGYsIG91dHB1dF9kaXIpOgorICAgICAgICB2Y3J1bnRpbWUgPSBzZWxmLl92Y3J1bnRpbWVfcmVkaXN0CisgICAgICAgIGlmIG5vdCB2Y3J1bnRpbWUgb3Igbm90IG9zLnBhdGguaXNmaWxlKHZjcnVudGltZSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKHZjcnVudGltZSkubG93ZXIoKSBpbiBfQlVORExFRF9ETExTOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgbG9nLmRlYnVnKCdDb3B5aW5nICIlcyInLCB2Y3J1bnRpbWUpCisgICAgICAgIHZjcnVudGltZSA9IHNodXRpbC5jb3B5KHZjcnVudGltZSwgb3V0cHV0X2RpcikKKyAgICAgICAgb3MuY2htb2QodmNydW50aW1lLCBzdGF0LlNfSVdSSVRFKQorCisgICAgZGVmIHNwYXduKHNlbGYsIGNtZCk6CisgICAgICAgIG9sZF9wYXRoID0gb3MuZ2V0ZW52KCdwYXRoJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZW52aXJvblsncGF0aCddID0gc2VsZi5fcGF0aHMKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnNwYXduKGNtZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ3BhdGgnXSA9IG9sZF9wYXRoCisKKyAgICAjIC0tIE1pc2NlbGxhbmVvdXMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgVGhlc2UgYXJlIGFsbCB1c2VkIGJ5IHRoZSAnZ2VuX2xpYl9vcHRpb25zKCkgZnVuY3Rpb24sIGluCisgICAgIyBjY29tcGlsZXIucHkuCisKKyAgICBkZWYgbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CisgICAgICAgIHJldHVybiAiL0xJQlBBVEg6IiArIGRpcgorCisgICAgZGVmIHJ1bnRpbWVfbGlicmFyeV9kaXJfb3B0aW9uKHNlbGYsIGRpcik6CisgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoCisgICAgICAgICAgICAgICJkb24ndCBrbm93IGhvdyB0byBzZXQgcnVudGltZSBsaWJyYXJ5IHNlYXJjaCBwYXRoIGZvciBNU1ZDIikKKworICAgIGRlZiBsaWJyYXJ5X29wdGlvbihzZWxmLCBsaWIpOgorICAgICAgICByZXR1cm4gc2VsZi5saWJyYXJ5X2ZpbGVuYW1lKGxpYikKKworICAgIGRlZiBmaW5kX2xpYnJhcnlfZmlsZShzZWxmLCBkaXJzLCBsaWIsIGRlYnVnPTApOgorICAgICAgICAjIFByZWZlciBhIGRlYnVnZ2luZyBsaWJyYXJ5IGlmIGZvdW5kIChhbmQgcmVxdWVzdGVkKSwgYnV0IGRlYWwKKyAgICAgICAgIyB3aXRoIGl0IGlmIHdlIGRvbid0IGhhdmUgb25lLgorICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgIHRyeV9uYW1lcyA9IFtsaWIgKyAiX2QiLCBsaWJdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnlfbmFtZXMgPSBbbGliXQorICAgICAgICBmb3IgZGlyIGluIGRpcnM6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiB0cnlfbmFtZXM6CisgICAgICAgICAgICAgICAgbGliZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIHNlbGYubGlicmFyeV9maWxlbmFtZShuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShsaWJmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpYmZpbGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT29wcywgZGlkbid0IGZpbmQgaXQgaW4gKmFueSogb2YgJ2RpcnMnCisgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCA0NDcwYmIwLi5iZWQxMzg0IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtNTcsMjYgKzU3LDI4IEBACiAgICAgIiIiQ3JlYXRlIGEgKHBvc3NpYmx5IGNvbXByZXNzZWQpIHRhciBmaWxlIGZyb20gYWxsIHRoZSBmaWxlcyB1bmRlcgogICAgICdiYXNlX2RpcicuCiAKLSAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJjb21wcmVzcyIsICJiemlwMiIsIG9yIE5vbmUuCi0gICAgKGNvbXByZXNzIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBQeXRob24gMy4yKQorICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImJ6aXAyIiwgInh6IiwgImNvbXByZXNzIiwgb3IKKyAgICBOb25lLiAgKCJjb21wcmVzcyIgd2lsbCBiZSBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIpCiAKICAgICAnb3duZXInIGFuZCAnZ3JvdXAnIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBvd25lciBhbmQgYSBncm91cCBmb3IgdGhlCiAgICAgYXJjaGl2ZSB0aGF0IGlzIGJlaW5nIGJ1aWx0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IG93bmVyIGFuZCBncm91cAogICAgIHdpbGwgYmUgdXNlZC4KIAogICAgIFRoZSBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCAnYmFzZV9kaXInICsgICIudGFyIiwgcG9zc2libHkgcGx1cwotICAgIHRoZSBhcHByb3ByaWF0ZSBjb21wcmVzc2lvbiBleHRlbnNpb24gKCIuZ3oiLCAiLmJ6MiIgb3IgIi5aIikuCisgICAgdGhlIGFwcHJvcHJpYXRlIGNvbXByZXNzaW9uIGV4dGVuc2lvbiAoIi5neiIsICIuYnoyIiwgIi54eiIgb3IgIi5aIikuCiAKICAgICBSZXR1cm5zIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAgIiIiCi0gICAgdGFyX2NvbXByZXNzaW9uID0geydnemlwJzogJ2d6JywgJ2J6aXAyJzogJ2J6MicsIE5vbmU6ICcnLCAnY29tcHJlc3MnOiAnJ30KLSAgICBjb21wcmVzc19leHQgPSB7J2d6aXAnOiAnLmd6JywgJ2J6aXAyJzogJy5iejInLCAnY29tcHJlc3MnOiAnLlonfQorICAgIHRhcl9jb21wcmVzc2lvbiA9IHsnZ3ppcCc6ICdneicsICdiemlwMic6ICdiejInLCAneHonOiAneHonLCBOb25lOiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZXNzJzogJyd9CisgICAgY29tcHJlc3NfZXh0ID0geydnemlwJzogJy5neicsICdiemlwMic6ICcuYnoyJywgJ3h6JzogJy54eicsCisgICAgICAgICAgICAgICAgICAgICdjb21wcmVzcyc6ICcuWid9CiAKICAgICAjIGZsYWdzIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtLCBlYWNoIGVsZW1lbnQgb2YgbGlzdCB3aWxsIGJlIGFuIGFyZ3VtZW50CiAgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQua2V5cygpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnOiBtdXN0IGJlIE5vbmUsICdnemlwJywgJ2J6aXAyJyAiCi0gICAgICAgICAgICAgICJvciAnY29tcHJlc3MnIikKKyAgICAgICAgICAgICAgImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJzogbXVzdCBiZSBOb25lLCAnZ3ppcCcsICdiemlwMicsICIKKyAgICAgICAgICAgICAgIid4eicgb3IgJ2NvbXByZXNzJyIpCiAKICAgICBhcmNoaXZlX25hbWUgPSBiYXNlX25hbWUgKyAnLnRhcicKICAgICBpZiBjb21wcmVzcyAhPSAnY29tcHJlc3MnOgpAQCAtMTc3LDYgKzE3OSw3IEBACiBBUkNISVZFX0ZPUk1BVFMgPSB7CiAgICAgJ2d6dGFyJzogKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnZ3ppcCcpXSwgImd6aXAnZWQgdGFyLWZpbGUiKSwKICAgICAnYnp0YXInOiAobWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdiemlwMicpXSwgImJ6aXAyJ2VkIHRhci1maWxlIiksCisgICAgJ3h6dGFyJzogKG1ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAneHonKV0sICJ4eidlZCB0YXItZmlsZSIpLAogICAgICd6dGFyJzogIChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2NvbXByZXNzJyldLCAiY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgICd0YXInOiAgIChtYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgTm9uZSldLCAidW5jb21wcmVzc2VkIHRhciBmaWxlIiksCiAgICAgJ3ppcCc6ICAgKG1ha2VfemlwZmlsZSwgW10sIlpJUCBmaWxlIikKQEAgLTE5Nyw4ICsyMDAsOCBAQAogICAgICIiIkNyZWF0ZSBhbiBhcmNoaXZlIGZpbGUgKGVnLiB6aXAgb3IgdGFyKS4KIAogICAgICdiYXNlX25hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZSwgbWludXMgYW55IGZvcm1hdC1zcGVjaWZpYwotICAgIGV4dGVuc2lvbjsgJ2Zvcm1hdCcgaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YgInppcCIsICJ0YXIiLCAienRhciIsCi0gICAgb3IgImd6dGFyIi4KKyAgICBleHRlbnNpb247ICdmb3JtYXQnIGlzIHRoZSBhcmNoaXZlIGZvcm1hdDogb25lIG9mICJ6aXAiLCAidGFyIiwgImd6dGFyIiwKKyAgICAiYnp0YXIiLCAieHp0YXIiLCBvciAienRhciIuCiAKICAgICAncm9vdF9kaXInIGlzIGEgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlCiAgICAgYXJjaGl2ZTsgaWUuIHdlIHR5cGljYWxseSBjaGRpciBpbnRvICdyb290X2RpcicgYmVmb3JlIGNyZWF0aW5nIHRoZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQppbmRleCBlOTNhMjczLi44MmZkN2Q1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2Njb21waWxlci5weQpAQCAtOTU5LDcgKzk1OSw3IEBACiAjIGlzIGFzc3VtZWQgdG8gYmUgaW4gdGhlICdkaXN0dXRpbHMnIHBhY2thZ2UuKQogY29tcGlsZXJfY2xhc3MgPSB7ICd1bml4JzogICAgKCd1bml4Y2NvbXBpbGVyJywgJ1VuaXhDQ29tcGlsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFuZGFyZCBVTklYLXN0eWxlIGNvbXBpbGVyIiksCi0gICAgICAgICAgICAgICAgICAgJ21zdmMnOiAgICAoJ21zdmNjb21waWxlcicsICdNU1ZDQ29tcGlsZXInLAorICAgICAgICAgICAgICAgICAgICdtc3ZjJzogICAgKCdfbXN2Y2NvbXBpbGVyJywgJ01TVkNDb21waWxlcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pY3Jvc29mdCBWaXN1YWwgQysrIiksCiAgICAgICAgICAgICAgICAgICAgJ2N5Z3dpbic6ICAoJ2N5Z3dpbmNjb21waWxlcicsICdDeWd3aW5DQ29tcGlsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDeWd3aW4gcG9ydCBvZiBHTlUgQyBDb21waWxlciBmb3IgV2luMzIiKSwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdC5weQppbmRleCA2ODE0YTFjLi4wMTQ4NzFkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0LnB5CkBAIC02MSwxMyArNjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJ30KIAogICAgICMgRXN0YWJsaXNoIHRoZSBwcmVmZXJyZWQgb3JkZXIgKGZvciB0aGUgLS1oZWxwLWZvcm1hdHMgb3B0aW9uKS4KLSAgICBmb3JtYXRfY29tbWFuZHMgPSBbJ3JwbScsICdnenRhcicsICdienRhcicsICd6dGFyJywgJ3RhcicsCisgICAgZm9ybWF0X2NvbW1hbmRzID0gWydycG0nLCAnZ3p0YXInLCAnYnp0YXInLCAneHp0YXInLCAnenRhcicsICd0YXInLAogICAgICAgICAgICAgICAgICAgICAgICAnd2luaW5zdCcsICd6aXAnLCAnbXNpJ10KIAogICAgICMgQW5kIHRoZSByZWFsIGluZm9ybWF0aW9uLgogICAgIGZvcm1hdF9jb21tYW5kID0geydycG0nOiAgICgnYmRpc3RfcnBtJywgICJSUE0gZGlzdHJpYnV0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgJ2d6dGFyJzogKCdiZGlzdF9kdW1iJywgImd6aXAnZWQgdGFyIGZpbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAnYnp0YXInOiAoJ2JkaXN0X2R1bWInLCAiYnppcDInZWQgdGFyIGZpbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAneHp0YXInOiAoJ2JkaXN0X2R1bWInLCAieHonZWQgdGFyIGZpbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAnenRhcic6ICAoJ2JkaXN0X2R1bWInLCAiY29tcHJlc3NlZCB0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd0YXInOiAgICgnYmRpc3RfZHVtYicsICJ0YXIgZmlsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JzogKCdiZGlzdF93aW5pbnN0JywKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKaW5kZXggNDQwNWQxMi4uZjFiZmIyNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKQEAgLTIyLDcgKzIyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBuYW1lIHRvIGVtYmVkIGluIGdlbmVyYXRlZCBmaWxlbmFtZXMgIgogICAgICAgICAgICAgICAgICAgICAgIihkZWZhdWx0OiAlcykiICUgZ2V0X3BsYXRmb3JtKCkpLAogICAgICAgICAgICAgICAgICAgICAoJ2Zvcm1hdD0nLCAnZicsCi0gICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBmb3JtYXQgdG8gY3JlYXRlICh0YXIsIHp0YXIsIGd6dGFyLCB6aXApIiksCisgICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBmb3JtYXQgdG8gY3JlYXRlICh0YXIsIGd6dGFyLCBienRhciwgeHp0YXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJ6dGFyLCB6aXApIiksCiAgICAgICAgICAgICAgICAgICAgICgna2VlcC10ZW1wJywgJ2snLAogICAgICAgICAgICAgICAgICAgICAgImtlZXAgdGhlIHBzZXVkby1pbnN0YWxsYXRpb24gdHJlZSBhcm91bmQgYWZ0ZXIgIiArCiAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBhcmNoaXZlIiksCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IDk1OWE4YmYuLjBjMGUyYzEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0zMDMsNyArMzAzLDYgQEAKICAgICAgICAgcmV0dXJuIGluc3RhbGxlcl9uYW1lCiAKICAgICBkZWYgZ2V0X2V4ZV9ieXRlcyhzZWxmKToKLSAgICAgICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBnZXRfYnVpbGRfdmVyc2lvbgogICAgICAgICAjIElmIGEgdGFyZ2V0LXZlcnNpb24gb3RoZXIgdGhhbiB0aGUgY3VycmVudCB2ZXJzaW9uIGhhcyBiZWVuCiAgICAgICAgICMgc3BlY2lmaWVkLCB0aGVuIHVzaW5nIHRoZSBNU1ZDIHZlcnNpb24gZnJvbSAqdGhpcyogYnVpbGQgaXMgbm8gZ29vZC4KICAgICAgICAgIyBXaXRob3V0IGFjdHVhbGx5IGZpbmRpbmcgYW5kIGV4ZWN1dGluZyB0aGUgdGFyZ2V0IHZlcnNpb24gYW5kIHBhcnNpbmcKQEAgLTMxMywyMCArMzEyLDMzIEBACiAgICAgICAgICMgV2UgY2FuIHRoZW4gZXhlY3V0ZSB0aGlzIHByb2dyYW0gdG8gb2J0YWluIGFueSBpbmZvIHdlIG5lZWQsIHN1Y2gKICAgICAgICAgIyBhcyB0aGUgcmVhbCBzeXMudmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBidWlsZC4KICAgICAgICAgY3VyX3ZlcnNpb24gPSBnZXRfcHl0aG9uX3ZlcnNpb24oKQotICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uIGFuZCBzZWxmLnRhcmdldF92ZXJzaW9uICE9IGN1cl92ZXJzaW9uOgotICAgICAgICAgICAgIyBJZiB0aGUgdGFyZ2V0IHZlcnNpb24gaXMgKmxhdGVyKiB0aGFuIHVzLCB0aGVuIHdlIGFzc3VtZSB0aGV5Ci0gICAgICAgICAgICAjIHVzZSB3aGF0IHdlIHVzZQotICAgICAgICAgICAgIyBzdHJpbmcgY29tcGFyZXMgc2VlbSB3cm9uZywgYnV0IGFyZSB3aGF0IHN5c2NvbmZpZy5weSBpdHNlbGYgdXNlcwotICAgICAgICAgICAgaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA+IGN1cl92ZXJzaW9uOgotICAgICAgICAgICAgICAgIGJ2ID0gZ2V0X2J1aWxkX3ZlcnNpb24oKQorCisgICAgICAgICMgSWYgdGhlIHRhcmdldCB2ZXJzaW9uIGlzICpsYXRlciogdGhhbiB1cywgdGhlbiB3ZSBhc3N1bWUgdGhleQorICAgICAgICAjIHVzZSB3aGF0IHdlIHVzZQorICAgICAgICAjIHN0cmluZyBjb21wYXJlcyBzZWVtIHdyb25nLCBidXQgYXJlIHdoYXQgc3lzY29uZmlnLnB5IGl0c2VsZiB1c2VzCisgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gYW5kIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCBjdXJfdmVyc2lvbjoKKyAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPCAiMi40IjoKKyAgICAgICAgICAgICAgICBidiA9IDYuMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uID09ICIyLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gNy4xCisgICAgICAgICAgICBlbGlmIHNlbGYudGFyZ2V0X3ZlcnNpb24gPT0gIjIuNSI6CisgICAgICAgICAgICAgICAgYnYgPSA4LjAKKyAgICAgICAgICAgIGVsaWYgc2VsZi50YXJnZXRfdmVyc2lvbiA8PSAiMy4yIjoKKyAgICAgICAgICAgICAgICBidiA9IDkuMAorICAgICAgICAgICAgZWxpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDw9ICIzLjQiOgorICAgICAgICAgICAgICAgIGJ2ID0gMTAuMAogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnRhcmdldF92ZXJzaW9uIDwgIjIuNCI6Ci0gICAgICAgICAgICAgICAgICAgIGJ2ID0gNi4wCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnYgPSA3LjEKKyAgICAgICAgICAgICAgICBidiA9IDE0LjAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZm9yIGN1cnJlbnQgdmVyc2lvbiAtIHVzZSBhdXRob3JpdGF0aXZlIGNoZWNrLgotICAgICAgICAgICAgYnYgPSBnZXRfYnVpbGRfdmVyc2lvbigpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnJvbSBtc3ZjcnQgaW1wb3J0IENSVF9BU1NFTUJMWV9WRVJTSU9OCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgIyBjcm9zcy1idWlsZGluZywgc28gYXNzdW1lIHRoZSBsYXRlc3QgdmVyc2lvbgorICAgICAgICAgICAgICAgIGJ2ID0gMTQuMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidiA9IGZsb2F0KCcuJy5qb2luKENSVF9BU1NFTUJMWV9WRVJTSU9OLnNwbGl0KCcuJywgMilbOjJdKSkKKwogCiAgICAgICAgICMgd2luaW5zdC14LnkuZXhlIGlzIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGlzIGZpbGUKICAgICAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CmluZGV4IGNmYzE1Y2YuLjMzN2RkMGIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKQEAgLTM2LDYgKzM2LDggQEAKICAgICAgICAgICIoZGVmYXVsdDogJXMpIiAlIGdldF9wbGF0Zm9ybSgpKSwKICAgICAgICAgKCdjb21waWxlcj0nLCAnYycsCiAgICAgICAgICAic3BlY2lmeSB0aGUgY29tcGlsZXIgdHlwZSIpLAorICAgICAgICAoJ3BhcmFsbGVsPScsICdqJywKKyAgICAgICAgICJudW1iZXIgb2YgcGFyYWxsZWwgYnVpbGQgam9icyIpLAogICAgICAgICAoJ2RlYnVnJywgJ2cnLAogICAgICAgICAgImNvbXBpbGUgZXh0ZW5zaW9ucyBhbmQgbGlicmFyaWVzIHdpdGggZGVidWdnaW5nIGluZm9ybWF0aW9uIiksCiAgICAgICAgICgnZm9yY2UnLCAnZicsCkBAIC02NSw2ICs2Nyw3IEBACiAgICAgICAgIHNlbGYuZGVidWcgPSBOb25lCiAgICAgICAgIHNlbGYuZm9yY2UgPSAwCiAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXJhbGxlbCA9IE5vbmUKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSBpcyBOb25lOgpAQCAtMTE2LDYgKzExOSwxMiBAQAogICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhcmFsbGVsLCBzdHIpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucGFyYWxsZWwgPSBpbnQoc2VsZi5wYXJhbGxlbCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc09wdGlvbkVycm9yKCJwYXJhbGxlbCBzaG91bGQgYmUgYW4gaW50ZWdlciIpCisKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICAjIFJ1biBhbGwgcmVsZXZhbnQgc3ViLWNvbW1hbmRzLiAgVGhpcyB3aWxsIGJlIHNvbWUgc3Vic2V0IG9mOgogICAgICAgICAjICAtIGJ1aWxkX3B5ICAgICAgLSBwdXJlIFB5dGhvbiBtb2R1bGVzCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQppbmRleCBhY2JlNjQ4Li5kNGNiMTFlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKQEAgLTQsNyArNCwxMCBAQAogbW9kdWxlcyAoY3VycmVudGx5IGxpbWl0ZWQgdG8gQyBleHRlbnNpb25zLCBzaG91bGQgYWNjb21tb2RhdGUgQysrCiBleHRlbnNpb25zIEFTQVApLiIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCAqCiBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGN1c3RvbWl6ZV9jb21waWxlciwgZ2V0X3B5dGhvbl92ZXJzaW9uCkBAIC0xNiwxMCArMTksNiBAQAogCiBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQogCi1pZiBvcy5uYW1lID09ICdudCc6Ci0gICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBnZXRfYnVpbGRfdmVyc2lvbgotICAgIE1TVkNfVkVSU0lPTiA9IGludChnZXRfYnVpbGRfdmVyc2lvbigpKQotCiAjIEFuIGV4dGVuc2lvbiBuYW1lIGlzIGp1c3QgYSBkb3Qtc2VwYXJhdGVkIGxpc3Qgb2YgUHl0aG9uIE5BTUVzIChpZS4KICMgdGhlIHNhbWUgYXMgYSBmdWxseS1xdWFsaWZpZWQgbW9kdWxlIG5hbWUpLgogZXh0ZW5zaW9uX25hbWVfcmUgPSByZS5jb21waWxlIFwKQEAgLTg1LDYgKzg0LDggQEAKICAgICAgICAgICJmb3JjaWJseSBidWlsZCBldmVyeXRoaW5nIChpZ25vcmUgZmlsZSB0aW1lc3RhbXBzKSIpLAogICAgICAgICAoJ2NvbXBpbGVyPScsICdjJywKICAgICAgICAgICJzcGVjaWZ5IHRoZSBjb21waWxlciB0eXBlIiksCisgICAgICAgICgncGFyYWxsZWw9JywgJ2onLAorICAgICAgICAgIm51bWJlciBvZiBwYXJhbGxlbCBidWlsZCBqb2JzIiksCiAgICAgICAgICgnc3dpZy1jcHAnLCBOb25lLAogICAgICAgICAgIm1ha2UgU1dJRyBjcmVhdGUgQysrIGZpbGVzIChkZWZhdWx0IGlzIEMpIiksCiAgICAgICAgICgnc3dpZy1vcHRzPScsIE5vbmUsCkBAIC0xMjQsNiArMTI1LDcgQEAKICAgICAgICAgc2VsZi5zd2lnX2NwcCA9IE5vbmUKICAgICAgICAgc2VsZi5zd2lnX29wdHMgPSBOb25lCiAgICAgICAgIHNlbGYudXNlciA9IE5vbmUKKyAgICAgICAgc2VsZi5wYXJhbGxlbCA9IE5vbmUKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCkBAIC0xMzQsNiArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjb21waWxlcicsICdjb21waWxlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RlYnVnJywgJ2RlYnVnJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9yY2UnLCAnZm9yY2UnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdwYXJhbGxlbCcsICdwYXJhbGxlbCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3BsYXRfbmFtZScsICdwbGF0X25hbWUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCkBAIC0xOTksMjcgKzIwMiwxNyBAQAogICAgICAgICAgICAgX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCiAgICAgICAgICAgICBpZiBfc3lzX2hvbWU6CiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKF9zeXNfaG9tZSkKLSAgICAgICAgICAgIGlmIE1TVkNfVkVSU0lPTiA+PSA5OgotICAgICAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSAnJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgd2luLWFtZDY0IG9yIHdpbi1pYTY0Ci0gICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHNlbGYucGxhdF9uYW1lWzQ6XQotICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnUENidWlsZCcpCi0gICAgICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgICAgICBuZXdfbGliID0gb3MucGF0aC5qb2luKG5ld19saWIsIHN1ZmZpeCkKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQobmV3X2xpYikKIAotICAgICAgICAgICAgZWxpZiBNU1ZDX1ZFUlNJT04gPT0gODoKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDJywgJ1ZTOC4wJykpCi0gICAgICAgICAgICBlbGlmIE1TVkNfVkVSU0lPTiA9PSA3OgotICAgICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUEMnLCAnVlM3LjEnKSkKKyAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKKyAgICAgICAgICAgIGlmIHNlbGYucGxhdF9uYW1lID09ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc3VmZml4ID0gJ3dpbjMyJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BDJywgJ1ZDNicpKQorICAgICAgICAgICAgICAgICMgd2luLWFtZDY0IG9yIHdpbi1pYTY0CisgICAgICAgICAgICAgICAgc3VmZml4ID0gc2VsZi5wbGF0X25hbWVbNDpdCisgICAgICAgICAgICBuZXdfbGliID0gb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ1BDYnVpbGQnKQorICAgICAgICAgICAgaWYgc3VmZml4OgorICAgICAgICAgICAgICAgIG5ld19saWIgPSBvcy5wYXRoLmpvaW4obmV3X2xpYiwgc3VmZml4KQorICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG5ld19saWIpCiAKICAgICAgICAgIyBmb3IgZXh0ZW5zaW9ucyB1bmRlciBDeWd3aW4gYW5kIEF0aGVPUyBQeXRob24ncyBsaWJyYXJ5IGRpcmVjdG9yeSBtdXN0IGJlCiAgICAgICAgICMgYXBwZW5kZWQgdG8gbGlicmFyeV9kaXJzCkBAIC0yNzQsNiArMjY3LDEyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKHVzZXJfbGliKQogICAgICAgICAgICAgICAgIHNlbGYucnBhdGguYXBwZW5kKHVzZXJfbGliKQogCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXJhbGxlbCwgc3RyKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnBhcmFsbGVsID0gaW50KHNlbGYucGFyYWxsZWwpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNPcHRpb25FcnJvcigicGFyYWxsZWwgc2hvdWxkIGJlIGFuIGludGVnZXIiKQorCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVyIGltcG9ydCBuZXdfY29tcGlsZXIKIApAQCAtNDQyLDE1ICs0NDEsNDUgQEAKICAgICBkZWYgYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKToKICAgICAgICAgIyBGaXJzdCwgc2FuaXR5LWNoZWNrIHRoZSAnZXh0ZW5zaW9ucycgbGlzdAogICAgICAgICBzZWxmLmNoZWNrX2V4dGVuc2lvbnNfbGlzdChzZWxmLmV4dGVuc2lvbnMpCisgICAgICAgIGlmIHNlbGYucGFyYWxsZWw6CisgICAgICAgICAgICBzZWxmLl9idWlsZF9leHRlbnNpb25zX3BhcmFsbGVsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2J1aWxkX2V4dGVuc2lvbnNfc2VyaWFsKCkKIAorICAgIGRlZiBfYnVpbGRfZXh0ZW5zaW9uc19wYXJhbGxlbChzZWxmKToKKyAgICAgICAgd29ya2VycyA9IHNlbGYucGFyYWxsZWwKKyAgICAgICAgaWYgc2VsZi5wYXJhbGxlbCBpcyBUcnVlOgorICAgICAgICAgICAgd29ya2VycyA9IG9zLmNwdV9jb3VudCgpICAjIG1heSByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgVGhyZWFkUG9vbEV4ZWN1dG9yCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHdvcmtlcnMgPSBOb25lCisKKyAgICAgICAgaWYgd29ya2VycyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fYnVpbGRfZXh0ZW5zaW9uc19zZXJpYWwoKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgd2l0aCBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9d29ya2VycykgYXMgZXhlY3V0b3I6CisgICAgICAgICAgICBmdXR1cmVzID0gW2V4ZWN1dG9yLnN1Ym1pdChzZWxmLmJ1aWxkX2V4dGVuc2lvbiwgZXh0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uc10KKyAgICAgICAgICAgIGZvciBleHQsIGZ1dCBpbiB6aXAoc2VsZi5leHRlbnNpb25zLCBmdXR1cmVzKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2ZpbHRlcl9idWlsZF9lcnJvcnMoZXh0KToKKyAgICAgICAgICAgICAgICAgICAgZnV0LnJlc3VsdCgpCisKKyAgICBkZWYgX2J1aWxkX2V4dGVuc2lvbnNfc2VyaWFsKHNlbGYpOgogICAgICAgICBmb3IgZXh0IGluIHNlbGYuZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fZmlsdGVyX2J1aWxkX2Vycm9ycyhleHQpOgogICAgICAgICAgICAgICAgIHNlbGYuYnVpbGRfZXh0ZW5zaW9uKGV4dCkKLSAgICAgICAgICAgIGV4Y2VwdCAoQ0NvbXBpbGVyRXJyb3IsIERpc3R1dGlsc0Vycm9yLCBDb21waWxlRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGV4dC5vcHRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICBzZWxmLndhcm4oJ2J1aWxkaW5nIGV4dGVuc2lvbiAiJXMiIGZhaWxlZDogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBlKSkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIF9maWx0ZXJfYnVpbGRfZXJyb3JzKHNlbGYsIGV4dCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGV4Y2VwdCAoQ0NvbXBpbGVyRXJyb3IsIERpc3R1dGlsc0Vycm9yLCBDb21waWxlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICBpZiBub3QgZXh0Lm9wdGlvbmFsOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLndhcm4oJ2J1aWxkaW5nIGV4dGVuc2lvbiAiJXMiIGZhaWxlZDogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAoZXh0Lm5hbWUsIGUpKQogCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbihzZWxmLCBleHQpOgogICAgICAgICBzb3VyY2VzID0gZXh0LnNvdXJjZXMKQEAgLTUwMiwxNSArNTMxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfcG9zdGFyZ3M9ZXh0cmFfYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1leHQuZGVwZW5kcykKIAotICAgICAgICAjIFhYWCAtLSB0aGlzIGlzIGEgVmlsZSBIQUNLIQotICAgICAgICAjCi0gICAgICAgICMgVGhlIHNldHVwLnB5IHNjcmlwdCBmb3IgUHl0aG9uIG9uIFVuaXggbmVlZHMgdG8gYmUgYWJsZSB0bwotICAgICAgICAjIGdldCB0aGlzIGxpc3Qgc28gaXQgY2FuIHBlcmZvcm0gYWxsIHRoZSBjbGVhbiB1cCBuZWVkZWQgdG8KLSAgICAgICAgIyBhdm9pZCBrZWVwaW5nIG9iamVjdCBmaWxlcyBhcm91bmQgd2hlbiBjbGVhbmluZyBvdXQgYSBmYWlsZWQKLSAgICAgICAgIyBidWlsZCBvZiBhbiBleHRlbnNpb24gbW9kdWxlLiAgU2luY2UgRGlzdHV0aWxzIGRvZXMgbm90Ci0gICAgICAgICMgdHJhY2sgZGVwZW5kZW5jaWVzLCB3ZSBoYXZlIHRvIGdldCByaWQgb2YgaW50ZXJtZWRpYXRlcyB0bwotICAgICAgICAjIGVuc3VyZSBhbGwgdGhlIGludGVybWVkaWF0ZXMgd2lsbCBiZSBwcm9wZXJseSByZS1idWlsdC4KLSAgICAgICAgIworICAgICAgICAjIFhYWCBvdXRkYXRlZCB2YXJpYWJsZSwga2VwdCBoZXJlIGluIGNhc2UgdGhpcmQtcGFydCBjb2RlCisgICAgICAgICMgbmVlZHMgaXQuCiAgICAgICAgIHNlbGYuX2J1aWx0X29iamVjdHMgPSBvYmplY3RzWzpdCiAKICAgICAgICAgIyBOb3cgbGluayB0aGUgb2JqZWN0IGZpbGVzIHRvZ2V0aGVyIGludG8gYSAic2hhcmVkIG9iamVjdCIgLS0KQEAgLTY1NSwxMCArNjc3LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKICAgICAgICAgZXh0X3BhdGggPSBleHRfbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICMgZXh0ZW5zaW9ucyBpbiBkZWJ1Z19tb2RlIGFyZSBuYW1lZCAnbW9kdWxlX2QucHlkJyB1bmRlciB3aW5kb3dzCiAgICAgICAgIGV4dF9zdWZmaXggPSBnZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmV4dF9wYXRoKSArICdfZCcgKyBleHRfc3VmZml4CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmV4dF9wYXRoKSArIGV4dF9zdWZmaXgKIAogICAgIGRlZiBnZXRfZXhwb3J0X3N5bWJvbHMoc2VsZiwgZXh0KToKQEAgLTY4Myw3ICs3MDIsNyBAQAogICAgICAgICAjIHRvIG5lZWQgaXQgbWVudGlvbmVkIGV4cGxpY2l0bHksIHRob3VnaCwgc28gdGhhdCdzIHdoYXQgd2UgZG8uCiAgICAgICAgICMgQXBwZW5kICdfZCcgdG8gdGhlIHB5dGhvbiBpbXBvcnQgbGlicmFyeSBvbiBkZWJ1ZyBidWlsZHMuCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyIGltcG9ydCBNU1ZDQ29tcGlsZXIKKyAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgaW1wb3J0IE1TVkNDb21waWxlcgogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5jb21waWxlciwgTVNWQ0NvbXBpbGVyKToKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICJweXRob24lZCVkIgogICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfcHkucHkKaW5kZXggOTEwMGI5Ni4uY2YwY2E1NyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9weS5weQpAQCAtMzE0LDEwICszMTQsMTAgQEAKICAgICAgICAgICAgIGlmIGluY2x1ZGVfYnl0ZWNvZGU6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb21waWxlOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1UcnVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBvcHRpbWl6YXRpb249JycpKQogICAgICAgICAgICAgICAgIGlmIHNlbGYub3B0aW1pemUgPiAwOgogICAgICAgICAgICAgICAgICAgICBvdXRwdXRzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBkZWJ1Z19vdmVycmlkZT1GYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgb3B0aW1pemF0aW9uPXNlbGYub3B0aW1pemUpKQogCiAgICAgICAgIG91dHB1dHMgKz0gWwogICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IGQ3NjhkYzUuLjY3ZGIwMDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CkBAIC01MSw3ICs1MSw3IEBACiAgICAgICAgICdwdXJlbGliJzogJyR1c2Vyc2l0ZScsCiAgICAgICAgICdwbGF0bGliJzogJyR1c2Vyc2l0ZScsCiAgICAgICAgICdoZWFkZXJzJzogJyR1c2VyYmFzZS9QeXRob24kcHlfdmVyc2lvbl9ub2RvdC9JbmNsdWRlLyRkaXN0X25hbWUnLAotICAgICAgICAnc2NyaXB0cyc6ICckdXNlcmJhc2UvU2NyaXB0cycsCisgICAgICAgICdzY3JpcHRzJzogJyR1c2VyYmFzZS9QeXRob24kcHlfdmVyc2lvbl9ub2RvdC9TY3JpcHRzJywKICAgICAgICAgJ2RhdGEnICAgOiAnJHVzZXJiYXNlJywKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9saWIucHkKaW5kZXggMjE1ODEzYi4uNjE1NGNmMCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2xpYi5weQpAQCAtMjIsMTUgKzIyLDE1IEBACiAgICAgIyBwb3NzaWJsZSBzY2VuYXJpb3M6CiAgICAgIyAgIDEpIG5vIGNvbXBpbGF0aW9uIGF0IGFsbCAoLS1uby1jb21waWxlIC0tbm8tb3B0aW1pemUpCiAgICAgIyAgIDIpIGNvbXBpbGUgLnB5YyBvbmx5ICgtLWNvbXBpbGUgLS1uby1vcHRpbWl6ZTsgZGVmYXVsdCkKLSAgICAjICAgMykgY29tcGlsZSAucHljIGFuZCAibGV2ZWwgMSIgLnB5byAoLS1jb21waWxlIC0tb3B0aW1pemUpCi0gICAgIyAgIDQpIGNvbXBpbGUgImxldmVsIDEiIC5weW8gb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUpCi0gICAgIyAgIDUpIGNvbXBpbGUgLnB5YyBhbmQgImxldmVsIDIiIC5weW8gKC0tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCi0gICAgIyAgIDYpIGNvbXBpbGUgImxldmVsIDIiIC5weW8gb25seSAoLS1uby1jb21waWxlIC0tb3B0aW1pemUtbW9yZSkKKyAgICAjICAgMykgY29tcGlsZSAucHljIGFuZCAib3B0LTEiIC5weWMgKC0tY29tcGlsZSAtLW9wdGltaXplKQorICAgICMgICA0KSBjb21waWxlICJvcHQtMSIgLnB5YyBvbmx5ICgtLW5vLWNvbXBpbGUgLS1vcHRpbWl6ZSkKKyAgICAjICAgNSkgY29tcGlsZSAucHljIGFuZCAib3B0LTIiIC5weWMgKC0tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCisgICAgIyAgIDYpIGNvbXBpbGUgIm9wdC0yIiAucHljIG9ubHkgKC0tbm8tY29tcGlsZSAtLW9wdGltaXplLW1vcmUpCiAgICAgIwotICAgICMgVGhlIFVJIGZvciB0aGlzIGlzIHR3byBvcHRpb24sICdjb21waWxlJyBhbmQgJ29wdGltaXplJy4KKyAgICAjIFRoZSBVSSBmb3IgdGhpcyBpcyB0d28gb3B0aW9ucywgJ2NvbXBpbGUnIGFuZCAnb3B0aW1pemUnLgogICAgICMgJ2NvbXBpbGUnIGlzIHN0cmljdGx5IGJvb2xlYW4sIGFuZCBvbmx5IGRlY2lkZXMgd2hldGhlciB0bwogICAgICMgZ2VuZXJhdGUgLnB5YyBmaWxlcy4gICdvcHRpbWl6ZScgaXMgdGhyZWUtd2F5ICgwLCAxLCBvciAyKSwgYW5kCi0gICAgIyBkZWNpZGVzIGJvdGggd2hldGhlciB0byBnZW5lcmF0ZSAucHlvIGZpbGVzIGFuZCB3aGF0IGxldmVsIG9mCisgICAgIyBkZWNpZGVzIGJvdGggd2hldGhlciB0byBnZW5lcmF0ZSAucHljIGZpbGVzIGFuZCB3aGF0IGxldmVsIG9mCiAgICAgIyBvcHRpbWl6YXRpb24gdG8gdXNlLgogCiAgICAgdXNlcl9vcHRpb25zID0gWwpAQCAtMTY2LDEwICsxNjYsMTAgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgc2VsZi5jb21waWxlOgogICAgICAgICAgICAgICAgIGJ5dGVjb2RlX2ZpbGVzLmFwcGVuZChpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIG9wdGltaXphdGlvbj0nJykpCiAgICAgICAgICAgICBpZiBzZWxmLm9wdGltaXplID4gMDoKICAgICAgICAgICAgICAgICBieXRlY29kZV9maWxlcy5hcHBlbmQoaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoCi0gICAgICAgICAgICAgICAgICAgIHB5X2ZpbGUsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgcHlfZmlsZSwgb3B0aW1pemF0aW9uPXNlbGYub3B0aW1pemUpKQogCiAgICAgICAgIHJldHVybiBieXRlY29kZV9maWxlcwogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3VwbG9hZC5weQppbmRleCAxYTk2ZTIyLi4xYzRmYzQ4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkKQEAgLTEsMTEgKzEsMTQgQEAKLSIiImRpc3R1dGlscy5jb21tYW5kLnVwbG9hZAorIiIiCitkaXN0dXRpbHMuY29tbWFuZC51cGxvYWQKIAotSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICd1cGxvYWQnIHN1YmNvbW1hbmQgKHVwbG9hZCBwYWNrYWdlIHRvIFB5UEkpLiIiIgorSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICd1cGxvYWQnIHN1YmNvbW1hbmQgKHVwbG9hZCBwYWNrYWdlIHRvIGEgcGFja2FnZQoraW5kZXgpLgorIiIiCiAKLWltcG9ydCBzeXMKLWltcG9ydCBvcywgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBvcworaW1wb3J0IGlvCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBoYXNobGliCiBmcm9tIGJhc2U2NCBpbXBvcnQgc3RhbmRhcmRfYjY0ZW5jb2RlCiBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuLCBSZXF1ZXN0LCBIVFRQRXJyb3IKIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQpAQCAtMTQsMTIgKzE3LDYgQEAKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZwogCi0jIHRoaXMga2VlcHMgY29tcGF0aWJpbGl0eSBmb3IgMi4zIGFuZCAyLjQKLWlmIHN5cy52ZXJzaW9uIDwgIjIuNSI6Ci0gICAgZnJvbSBtZDUgaW1wb3J0IG1kNQotZWxzZToKLSAgICBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQotCiBjbGFzcyB1cGxvYWQoUHlQSVJDQ29tbWFuZCk6CiAKICAgICBkZXNjcmlwdGlvbiA9ICJ1cGxvYWQgYmluYXJ5IHBhY2thZ2UgdG8gUHlQSSIKQEAgLTYwLDcgKzU3LDggQEAKIAogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgotICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IoIk5vIGRpc3QgZmlsZSBjcmVhdGVkIGluIGVhcmxpZXIgY29tbWFuZCIpCisgICAgICAgICAgICBtc2cgPSAiTm8gZGlzdCBmaWxlIGNyZWF0ZWQgaW4gZWFybGllciBjb21tYW5kIgorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IobXNnKQogICAgICAgICBmb3IgY29tbWFuZCwgcHl2ZXJzaW9uLCBmaWxlbmFtZSBpbiBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgogICAgICAgICAgICAgc2VsZi51cGxvYWRfZmlsZShjb21tYW5kLCBweXZlcnNpb24sIGZpbGVuYW1lKQogCkBAIC0xMDMsMTAgKzEwMSwxMCBAQAogICAgICAgICAgICAgJ2NvbnRlbnQnOiAob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksY29udGVudCksCiAgICAgICAgICAgICAnZmlsZXR5cGUnOiBjb21tYW5kLAogICAgICAgICAgICAgJ3B5dmVyc2lvbic6IHB5dmVyc2lvbiwKLSAgICAgICAgICAgICdtZDVfZGlnZXN0JzogbWQ1KGNvbnRlbnQpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgJ21kNV9kaWdlc3QnOiBoYXNobGliLm1kNShjb250ZW50KS5oZXhkaWdlc3QoKSwKIAogICAgICAgICAgICAgIyBhZGRpdGlvbmFsIG1ldGEtZGF0YQotICAgICAgICAgICAgJ21ldGFkYXRhX3ZlcnNpb24nIDogJzEuMCcsCisgICAgICAgICAgICAnbWV0YWRhdGFfdmVyc2lvbic6ICcxLjAnLAogICAgICAgICAgICAgJ3N1bW1hcnknOiBtZXRhLmdldF9kZXNjcmlwdGlvbigpLAogICAgICAgICAgICAgJ2hvbWVfcGFnZSc6IG1ldGEuZ2V0X3VybCgpLAogICAgICAgICAgICAgJ2F1dGhvcic6IG1ldGEuZ2V0X2NvbnRhY3QoKSwKQEAgLTE0OSw3ICsxNDcsNyBAQAogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICB0aXRsZSA9ICdcclxuQ29udGVudC1EaXNwb3NpdGlvbjogZm9ybS1kYXRhOyBuYW1lPSIlcyInICUga2V5CiAgICAgICAgICAgICAjIGhhbmRsZSBtdWx0aXBsZSBlbnRyaWVzIGZvciB0aGUgc2FtZSBuYW1lCi0gICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSAhPSB0eXBlKFtdKToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyB0dXBsZToKQEAgLTE2NiwxMyArMTY0LDE1IEBACiAgICAgICAgIGJvZHkud3JpdGUoZW5kX2JvdW5kYXJ5KQogICAgICAgICBib2R5ID0gYm9keS5nZXR2YWx1ZSgpCiAKLSAgICAgICAgc2VsZi5hbm5vdW5jZSgiU3VibWl0dGluZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIHNlbGYucmVwb3NpdG9yeSksIGxvZy5JTkZPKQorICAgICAgICBtc2cgPSAiU3VibWl0dGluZyAlcyB0byAlcyIgJSAoZmlsZW5hbWUsIHNlbGYucmVwb3NpdG9yeSkKKyAgICAgICAgc2VsZi5hbm5vdW5jZShtc2csIGxvZy5JTkZPKQogCiAgICAgICAgICMgYnVpbGQgdGhlIFJlcXVlc3QKLSAgICAgICAgaGVhZGVycyA9IHsnQ29udGVudC10eXBlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0lcycgJSBib3VuZGFyeSwKLSAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnOiBzdHIobGVuKGJvZHkpKSwKLSAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGF1dGh9CisgICAgICAgIGhlYWRlcnMgPSB7CisgICAgICAgICAgICAnQ29udGVudC10eXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSVzJyAlIGJvdW5kYXJ5LAorICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJzogc3RyKGxlbihib2R5KSksCisgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGF1dGgsCisgICAgICAgIH0KIAogICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdChzZWxmLnJlcG9zaXRvcnksIGRhdGE9Ym9keSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz1oZWFkZXJzKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC1hbWQ2NC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLWFtZDY0LmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTVlNzhkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC1hbWQ2NC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xNC4wLmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzQzMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTQuMC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CmluZGV4IDJiZmU2NmEuLmYwNWIzNGIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKQEAgLTIyMSw4ICsyMjEsNiBAQAogICAgICAgICAjIEhtbSwgc2hvdWxkIHdlIGRvIHNvbWV0aGluZyBpZiBleGl0aW5nIHdpdGggYSBub24temVybyBjb2RlCiAgICAgICAgICMgKGllLiBlcnJvcik/CiAgICAgICAgIHBhc3MKLSAgICBleGNlcHQ6Ci0gICAgICAgIHJhaXNlCiAKICAgICBpZiBfc2V0dXBfZGlzdHJpYnV0aW9uIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigoIidkaXN0dXRpbHMuY29yZS5zZXR1cCgpJyB3YXMgbmV2ZXIgY2FsbGVkIC0tICIKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQppbmRleCA3ZWIwNGJjLi5mZmIzM2ZmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CkBAIC00LDcgKzQsOSBAQAogYmVpbmcgYnVpbHQvaW5zdGFsbGVkL2Rpc3RyaWJ1dGVkLgogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgcmUKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9maWxlCiAKIHRyeToKQEAgLTIyLDcgKzI0LDcgQEAKICMgdGhlIHNhbWUgYXMgYSBQeXRob24gTkFNRSAtLSBJIGRvbid0IGFsbG93IGxlYWRpbmcgdW5kZXJzY29yZXMuICBUaGUgZmFjdAogIyB0aGF0IHRoZXkncmUgdmVyeSBzaW1pbGFyIGlzIG5vIGNvaW5jaWRlbmNlOyB0aGUgZGVmYXVsdCBuYW1pbmcgc2NoZW1lIGlzCiAjIHRvIGxvb2sgZm9yIGEgUHl0aG9uIG1vZHVsZSBuYW1lZCBhZnRlciB0aGUgY29tbWFuZC4KLWNvbW1hbmRfcmUgPSByZS5jb21waWxlIChyJ15bYS16QS1aXShbYS16QS1aMC05X10qKSQnKQorY29tbWFuZF9yZSA9IHJlLmNvbXBpbGUocideW2EtekEtWl0oW2EtekEtWjAtOV9dKikkJykKIAogCiBjbGFzcyBEaXN0cmlidXRpb246CkBAIC0zOSw3ICs0MSw2IEBACiAgICAgU2VlIHRoZSBjb2RlIGZvciAnc2V0dXAoKScsIGluIGNvcmUucHksIGZvciBkZXRhaWxzLgogICAgICIiIgogCi0KICAgICAjICdnbG9iYWxfb3B0aW9ucycgZGVzY3JpYmVzIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyB0aGF0IG1heSBiZQogICAgICMgc3VwcGxpZWQgdG8gdGhlIHNldHVwIHNjcmlwdCBwcmlvciB0byBhbnkgYWN0dWFsIGNvbW1hbmRzLgogICAgICMgRWcuICIuL3NldHVwLnB5IC1uIiBvciAiLi9zZXR1cC5weSAtLXF1aWV0IiBib3RoIHRha2UgYWR2YW50YWdlIG9mCkBAIC00OCwxMiArNDksMTMgQEAKICAgICAjIGRvbid0IHdhbnQgdG8gcG9sbHV0ZSB0aGUgY29tbWFuZHMgd2l0aCB0b28gbWFueSBvcHRpb25zIHRoYXQgdGhleQogICAgICMgaGF2ZSBtaW5pbWFsIGNvbnRyb2wgb3Zlci4KICAgICAjIFRoZSBmb3VydGggZW50cnkgZm9yIHZlcmJvc2UgbWVhbnMgdGhhdCBpdCBjYW4gYmUgcmVwZWF0ZWQuCi0gICAgZ2xvYmFsX29wdGlvbnMgPSBbKCd2ZXJib3NlJywgJ3YnLCAicnVuIHZlcmJvc2VseSAoZGVmYXVsdCkiLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ3F1aWV0JywgJ3EnLCAicnVuIHF1aWV0bHkgKHR1cm5zIHZlcmJvc2l0eSBvZmYpIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCdkcnktcnVuJywgJ24nLCAiZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmciKSwKLSAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnaCcsICJzaG93IGRldGFpbGVkIGhlbHAgbWVzc2FnZSIpLAotICAgICAgICAgICAgICAgICAgICAgICgnbm8tdXNlci1jZmcnLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlIHB5ZGlzdHV0aWxzLmNmZyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5JyksCisgICAgZ2xvYmFsX29wdGlvbnMgPSBbCisgICAgICAgICgndmVyYm9zZScsICd2JywgInJ1biB2ZXJib3NlbHkgKGRlZmF1bHQpIiwgMSksCisgICAgICAgICgncXVpZXQnLCAncScsICJydW4gcXVpZXRseSAodHVybnMgdmVyYm9zaXR5IG9mZikiKSwKKyAgICAgICAgKCdkcnktcnVuJywgJ24nLCAiZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmciKSwKKyAgICAgICAgKCdoZWxwJywgJ2gnLCAic2hvdyBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UiKSwKKyAgICAgICAgKCduby11c2VyLWNmZycsIE5vbmUsCisgICAgICAgICAgICAnaWdub3JlIHB5ZGlzdHV0aWxzLmNmZyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5JyksCiAgICAgXQogCiAgICAgIyAnY29tbW9uX3VzYWdlJyBpcyBhIHNob3J0ICgyLTMgbGluZSkgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNvbW1vbgpAQCAtMTE1LDEwICsxMTcsOSBAQAogICAgICMgbmVnYXRpdmUgb3B0aW9ucyBhcmUgb3B0aW9ucyB0aGF0IGV4Y2x1ZGUgb3RoZXIgb3B0aW9ucwogICAgIG5lZ2F0aXZlX29wdCA9IHsncXVpZXQnOiAndmVyYm9zZSd9CiAKLQogICAgICMgLS0gQ3JlYXRpb24vaW5pdGlhbGl6YXRpb24gbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICBkZWYgX19pbml0X18gKHNlbGYsIGF0dHJzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhdHRycz1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgbmV3IERpc3RyaWJ1dGlvbiBpbnN0YW5jZTogaW5pdGlhbGl6ZSBhbGwgdGhlCiAgICAgICAgIGF0dHJpYnV0ZXMgb2YgYSBEaXN0cmlidXRpb24sIGFuZCB0aGVuIHVzZSAnYXR0cnMnIChhIGRpY3Rpb25hcnkKICAgICAgICAgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gdmFsdWVzKSB0byBhc3NpZ24gc29tZSBvZiB0aG9zZQpAQCAtNTMyLDE1ICs1MzMsMTUgQEAKICAgICAgICAgIyB0byBiZSBzdXJlIHRoYXQgdGhlIGJhc2ljICJjb21tYW5kIiBpbnRlcmZhY2UgaXMgaW1wbGVtZW50ZWQuCiAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGNtZF9jbGFzcywgQ29tbWFuZCk6CiAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNDbGFzc0Vycm9yKAotICAgICAgICAgICAgICAgICAgImNvbW1hbmQgY2xhc3MgJXMgbXVzdCBzdWJjbGFzcyBDb21tYW5kIiAlIGNtZF9jbGFzcykKKyAgICAgICAgICAgICAgICAiY29tbWFuZCBjbGFzcyAlcyBtdXN0IHN1YmNsYXNzIENvbW1hbmQiICUgY21kX2NsYXNzKQogCiAgICAgICAgICMgQWxzbyBtYWtlIHN1cmUgdGhhdCB0aGUgY29tbWFuZCBvYmplY3QgcHJvdmlkZXMgYSBsaXN0IG9mIGl0cwogICAgICAgICAjIGtub3duIG9wdGlvbnMuCiAgICAgICAgIGlmIG5vdCAoaGFzYXR0cihjbWRfY2xhc3MsICd1c2VyX29wdGlvbnMnKSBhbmQKICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGNtZF9jbGFzcy51c2VyX29wdGlvbnMsIGxpc3QpKToKLSAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0NsYXNzRXJyb3IoKCJjb21tYW5kIGNsYXNzICVzIG11c3QgcHJvdmlkZSAiICsKLSAgICAgICAgICAgICAgICAgICAiJ3VzZXJfb3B0aW9ucycgYXR0cmlidXRlIChhIGxpc3Qgb2YgdHVwbGVzKSIpICUgXAotICAgICAgICAgICAgICAgICAgY21kX2NsYXNzKQorICAgICAgICAgICAgbXNnID0gKCJjb21tYW5kIGNsYXNzICVzIG11c3QgcHJvdmlkZSAiCisgICAgICAgICAgICAgICAgIid1c2VyX29wdGlvbnMnIGF0dHJpYnV0ZSAoYSBsaXN0IG9mIHR1cGxlcykiKQorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQ2xhc3NFcnJvcihtc2cgJSBjbWRfY2xhc3MpCiAKICAgICAgICAgIyBJZiB0aGUgY29tbWFuZCBjbGFzcyBoYXMgYSBsaXN0IG9mIG5lZ2F0aXZlIGFsaWFzIG9wdGlvbnMsCiAgICAgICAgICMgbWVyZ2UgaXQgaW4gd2l0aCB0aGUgZ2xvYmFsIG5lZ2F0aXZlIGFsaWFzZXMuCkBAIC01NTIsMTIgKzU1MywxMSBAQAogICAgICAgICAjIENoZWNrIGZvciBoZWxwX29wdGlvbnMgaW4gY29tbWFuZCBjbGFzcy4gIFRoZXkgaGF2ZSBhIGRpZmZlcmVudAogICAgICAgICAjIGZvcm1hdCAodHVwbGUgb2YgZm91cikgc28gd2UgbmVlZCB0byBwcmVwcm9jZXNzIHRoZW0gaGVyZS4KICAgICAgICAgaWYgKGhhc2F0dHIoY21kX2NsYXNzLCAnaGVscF9vcHRpb25zJykgYW5kCi0gICAgICAgICAgICBpc2luc3RhbmNlKGNtZF9jbGFzcy5oZWxwX29wdGlvbnMsIGxpc3QpKToKKyAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGNtZF9jbGFzcy5oZWxwX29wdGlvbnMsIGxpc3QpKToKICAgICAgICAgICAgIGhlbHBfb3B0aW9ucyA9IGZpeF9oZWxwX29wdGlvbnMoY21kX2NsYXNzLmhlbHBfb3B0aW9ucykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGhlbHBfb3B0aW9ucyA9IFtdCiAKLQogICAgICAgICAjIEFsbCBjb21tYW5kcyBzdXBwb3J0IHRoZSBnbG9iYWwgb3B0aW9ucyB0b28sIGp1c3QgYnkgYWRkaW5nCiAgICAgICAgICMgaW4gJ2dsb2JhbF9vcHRpb25zJy4KICAgICAgICAgcGFyc2VyLnNldF9vcHRpb25fdGFibGUoc2VsZi5nbG9iYWxfb3B0aW9ucyArCkBAIC01NzAsNyArNTcwLDcgQEAKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIChoYXNhdHRyKGNtZF9jbGFzcywgJ2hlbHBfb3B0aW9ucycpIGFuZAotICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CisgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShjbWRfY2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CiAgICAgICAgICAgICBoZWxwX29wdGlvbl9mb3VuZD0wCiAgICAgICAgICAgICBmb3IgKGhlbHBfb3B0aW9uLCBzaG9ydCwgZGVzYywgZnVuYykgaW4gY21kX2NsYXNzLmhlbHBfb3B0aW9uczoKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9wdHMsIHBhcnNlci5nZXRfYXR0cl9uYW1lKGhlbHBfb3B0aW9uKSk6CkBAIC02NDcsNyArNjQ3LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAga2xhc3MgPSBzZWxmLmdldF9jb21tYW5kX2NsYXNzKGNvbW1hbmQpCiAgICAgICAgICAgICBpZiAoaGFzYXR0cihrbGFzcywgJ2hlbHBfb3B0aW9ucycpIGFuZAotICAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uoa2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CisgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uoa2xhc3MuaGVscF9vcHRpb25zLCBsaXN0KSk6CiAgICAgICAgICAgICAgICAgcGFyc2VyLnNldF9vcHRpb25fdGFibGUoa2xhc3MudXNlcl9vcHRpb25zICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhfaGVscF9vcHRpb25zKGtsYXNzLmhlbHBfb3B0aW9ucykpCiAgICAgICAgICAgICBlbHNlOgpAQCAtODE0LDcgKzgxNCw3IEBACiAgICAgICAgICAgICBrbGFzc19uYW1lID0gY29tbWFuZAogCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX19pbXBvcnRfXyAobW9kdWxlX25hbWUpCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSkKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtODIzLDggKzgyMyw4IEBACiAgICAgICAgICAgICAgICAga2xhc3MgPSBnZXRhdHRyKG1vZHVsZSwga2xhc3NfbmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNNb2R1bGVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb21tYW5kICclcycgKG5vIGNsYXNzICclcycgaW4gbW9kdWxlICclcycpIgotICAgICAgICAgICAgICAgICAgICAgICUgKGNvbW1hbmQsIGtsYXNzX25hbWUsIG1vZHVsZV9uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgY29tbWFuZCAnJXMnIChubyBjbGFzcyAnJXMnIGluIG1vZHVsZSAnJXMnKSIKKyAgICAgICAgICAgICAgICAgICAgJSAoY29tbWFuZCwga2xhc3NfbmFtZSwgbW9kdWxlX25hbWUpKQogCiAgICAgICAgICAgICBzZWxmLmNtZGNsYXNzW2NvbW1hbmRdID0ga2xhc3MKICAgICAgICAgICAgIHJldHVybiBrbGFzcwpAQCAtODQwLDcgKzg0MCw3IEBACiAgICAgICAgIGNtZF9vYmogPSBzZWxmLmNvbW1hbmRfb2JqLmdldChjb21tYW5kKQogICAgICAgICBpZiBub3QgY21kX29iaiBhbmQgY3JlYXRlOgogICAgICAgICAgICAgaWYgREVCVUc6Ci0gICAgICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgiRGlzdHJpYnV0aW9uLmdldF9jb21tYW5kX29iaigpOiAiIFwKKyAgICAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCJEaXN0cmlidXRpb24uZ2V0X2NvbW1hbmRfb2JqKCk6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGluZyAnJXMnIGNvbW1hbmQgb2JqZWN0IiAlIGNvbW1hbmQpCiAKICAgICAgICAgICAgIGtsYXNzID0gc2VsZi5nZXRfY29tbWFuZF9jbGFzcyhjb21tYW5kKQpAQCAtODk3LDggKzg5Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIoY29tbWFuZF9vYmosIG9wdGlvbiwgdmFsdWUpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBpbiAlczogY29tbWFuZCAnJXMnIGhhcyBubyBzdWNoIG9wdGlvbiAnJXMnIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzb3VyY2UsIGNvbW1hbmRfbmFtZSwgb3B0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBpbiAlczogY29tbWFuZCAnJXMnIGhhcyBubyBzdWNoIG9wdGlvbiAnJXMnIgorICAgICAgICAgICAgICAgICAgICAgICAgJSAoc291cmNlLCBjb21tYW5kX25hbWUsIG9wdGlvbikpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBtc2c6CiAgICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IobXNnKQogCkBAIC05NzQsNyArOTc0LDYgQEAKICAgICAgICAgY21kX29iai5ydW4oKQogICAgICAgICBzZWxmLmhhdmVfcnVuW2NvbW1hbmRdID0gMQogCi0KICAgICAjIC0tIERpc3RyaWJ1dGlvbiBxdWVyeSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgZGVmIGhhc19wdXJlX21vZHVsZXMoc2VsZik6CkBAIC0xMTEyLDE3ICsxMTExLDE3IEBACiAgICAgICAgICIiIgogICAgICAgICB2ZXJzaW9uID0gJzEuMCcKICAgICAgICAgaWYgKHNlbGYucHJvdmlkZXMgb3Igc2VsZi5yZXF1aXJlcyBvciBzZWxmLm9ic29sZXRlcyBvcgotICAgICAgICAgICAgc2VsZi5jbGFzc2lmaWVycyBvciBzZWxmLmRvd25sb2FkX3VybCk6CisgICAgICAgICAgICAgICAgc2VsZi5jbGFzc2lmaWVycyBvciBzZWxmLmRvd25sb2FkX3VybCk6CiAgICAgICAgICAgICB2ZXJzaW9uID0gJzEuMScKIAogICAgICAgICBmaWxlLndyaXRlKCdNZXRhZGF0YS1WZXJzaW9uOiAlc1xuJyAlIHZlcnNpb24pCi0gICAgICAgIGZpbGUud3JpdGUoJ05hbWU6ICVzXG4nICUgc2VsZi5nZXRfbmFtZSgpICkKLSAgICAgICAgZmlsZS53cml0ZSgnVmVyc2lvbjogJXNcbicgJSBzZWxmLmdldF92ZXJzaW9uKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdTdW1tYXJ5OiAlc1xuJyAlIHNlbGYuZ2V0X2Rlc2NyaXB0aW9uKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdIb21lLXBhZ2U6ICVzXG4nICUgc2VsZi5nZXRfdXJsKCkgKQotICAgICAgICBmaWxlLndyaXRlKCdBdXRob3I6ICVzXG4nICUgc2VsZi5nZXRfY29udGFjdCgpICkKLSAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yLWVtYWlsOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3RfZW1haWwoKSApCi0gICAgICAgIGZpbGUud3JpdGUoJ0xpY2Vuc2U6ICVzXG4nICUgc2VsZi5nZXRfbGljZW5zZSgpICkKKyAgICAgICAgZmlsZS53cml0ZSgnTmFtZTogJXNcbicgJSBzZWxmLmdldF9uYW1lKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ1ZlcnNpb246ICVzXG4nICUgc2VsZi5nZXRfdmVyc2lvbigpKQorICAgICAgICBmaWxlLndyaXRlKCdTdW1tYXJ5OiAlc1xuJyAlIHNlbGYuZ2V0X2Rlc2NyaXB0aW9uKCkpCisgICAgICAgIGZpbGUud3JpdGUoJ0hvbWUtcGFnZTogJXNcbicgJSBzZWxmLmdldF91cmwoKSkKKyAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3QoKSkKKyAgICAgICAgZmlsZS53cml0ZSgnQXV0aG9yLWVtYWlsOiAlc1xuJyAlIHNlbGYuZ2V0X2NvbnRhY3RfZW1haWwoKSkKKyAgICAgICAgZmlsZS53cml0ZSgnTGljZW5zZTogJXNcbicgJSBzZWxmLmdldF9saWNlbnNlKCkpCiAgICAgICAgIGlmIHNlbGYuZG93bmxvYWRfdXJsOgogICAgICAgICAgICAgZmlsZS53cml0ZSgnRG93bmxvYWQtVVJMOiAlc1xuJyAlIHNlbGYuZG93bmxvYWRfdXJsKQogCkBAIC0xMTMxLDcgKzExMzAsNyBAQAogCiAgICAgICAgIGtleXdvcmRzID0gJywnLmpvaW4oc2VsZi5nZXRfa2V5d29yZHMoKSkKICAgICAgICAgaWYga2V5d29yZHM6Ci0gICAgICAgICAgICBmaWxlLndyaXRlKCdLZXl3b3JkczogJXNcbicgJSBrZXl3b3JkcyApCisgICAgICAgICAgICBmaWxlLndyaXRlKCdLZXl3b3JkczogJXNcbicgJSBrZXl3b3JkcykKIAogICAgICAgICBzZWxmLl93cml0ZV9saXN0KGZpbGUsICdQbGF0Zm9ybScsIHNlbGYuZ2V0X3BsYXRmb3JtcygpKQogICAgICAgICBzZWxmLl93cml0ZV9saXN0KGZpbGUsICdDbGFzc2lmaWVyJywgc2VsZi5nZXRfY2xhc3NpZmllcnMoKSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5IGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKaW5kZXggYTkzNjU1YS4uN2VmYmI3NCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKQEAgLTEzMSw2ICsxMzEsMTQgQEAKICAgICAgICAgICAgIG1zZyA9ICJVbmtub3duIEV4dGVuc2lvbiBvcHRpb25zOiAlcyIgJSBvcHRpb25zCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKG1zZykKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXMuJXMoJXIpIGF0ICUjeD4nICUgKAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgIHNlbGYubmFtZSwKKyAgICAgICAgICAgIGlkKHNlbGYpKQorCisKIGRlZiByZWFkX3NldHVwX2ZpbGUoZmlsZW5hbWUpOgogICAgICIiIlJlYWRzIGEgU2V0dXAgZmlsZSBhbmQgcmV0dXJucyBFeHRlbnNpb24gaW5zdGFuY2VzLiIiIgogICAgIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgKHBhcnNlX21ha2VmaWxlLCBleHBhbmRfbWFrZWZpbGVfdmFycywKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQppbmRleCBhNWE1MDEwLi5kYTRiMjFkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CkBAIC0xNzksNiArMTc5LDkgQEAKICAgICBpID0gaSArIGxlbihwcmVmaXgpCiAgICAgcywgcmVzdCA9IHN5cy52ZXJzaW9uW2k6XS5zcGxpdCgiICIsIDEpCiAgICAgbWFqb3JWZXJzaW9uID0gaW50KHNbOi0yXSkgLSA2CisgICAgaWYgbWFqb3JWZXJzaW9uID49IDEzOgorICAgICAgICAjIHYxMyB3YXMgc2tpcHBlZCBhbmQgc2hvdWxkIGJlIHYxNAorICAgICAgICBtYWpvclZlcnNpb24gKz0gMQogICAgIG1pbm9yVmVyc2lvbiA9IGludChzWzI6M10pIC8gMTAuMAogICAgICMgSSBkb24ndCB0aGluayBwYXRocyBhcmUgYWZmZWN0ZWQgYnkgbWlub3IgdmVyc2lvbiBpbiB2ZXJzaW9uIDYKICAgICBpZiBtYWpvclZlcnNpb24gPT0gNjoKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9tc3ZjY29tcGlsZXIucHkKaW5kZXggODExNjY1Ni4uMTA0OGNkNCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9tc3ZjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjY29tcGlsZXIucHkKQEAgLTE1Nyw2ICsxNTcsOSBAQAogICAgIGkgPSBpICsgbGVuKHByZWZpeCkKICAgICBzLCByZXN0ID0gc3lzLnZlcnNpb25baTpdLnNwbGl0KCIgIiwgMSkKICAgICBtYWpvclZlcnNpb24gPSBpbnQoc1s6LTJdKSAtIDYKKyAgICBpZiBtYWpvclZlcnNpb24gPj0gMTM6CisgICAgICAgICMgdjEzIHdhcyBza2lwcGVkIGFuZCBzaG91bGQgYmUgdjE0CisgICAgICAgIG1ham9yVmVyc2lvbiArPSAxCiAgICAgbWlub3JWZXJzaW9uID0gaW50KHNbMjozXSkgLyAxMC4wCiAgICAgIyBJIGRvbid0IHRoaW5rIHBhdGhzIGFyZSBhZmZlY3RlZCBieSBtaW5vciB2ZXJzaW9uIGluIHZlcnNpb24gNgogICAgIGlmIG1ham9yVmVyc2lvbiA9PSA2OgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkKaW5kZXggMjJlODdlOC4uNWRkNDE1YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9zcGF3bi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3NwYXduLnB5CkBAIC0xMzcsOSArMTM3LDYgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQocGlkLCAwKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgIGltcG9ydCBlcnJubwotICAgICAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBub3QgREVCVUc6CiAgICAgICAgICAgICAgICAgICAgIGNtZCA9IGV4ZWN1dGFibGUKICAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNFeGVjRXJyb3IoCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CmluZGV4IGExNDUyZmUuLjU3MzcyNGQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CkBAIC05LDYgKzksNyBAQAogRW1haWw6ICAgICAgICA8ZmRyYWtlQGFjbS5vcmc+CiAiIiIKIAoraW1wb3J0IF9pbXAKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCkBAIC0yMiwyMyArMjMsMTUgQEAKIEJBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQogCiAjIFBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LiBPbiBXaW5kb3dzIHRoZSBiaW5hcnkgbWF5Ci0jIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkOS4gIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiB4NjQgV2luZG93cyBidWlsZCwKLSMgaXQnbGwgbGl2ZSBpbiBwcm9qZWN0L1BDYnVpbGQvYW1kNjQuCisjIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkL3dpbjMyIG9yIHByb2plY3QvUENCdWlsZC9hbWQ2NC4KICMgc2V0IGZvciBjcm9zcyBidWlsZHMKIGlmICJfUFlUSE9OX1BST0pFQ1RfQkFTRSIgaW4gb3MuZW52aXJvbjoKICAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MuZW52aXJvblsiX1BZVEhPTl9QUk9KRUNUX0JBU0UiXSkKIGVsc2U6CiAgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCi1pZiBvcy5uYW1lID09ICJudCIgYW5kICJwY2J1aWxkIiBpbiBwcm9qZWN0X2Jhc2VbLTg6XS5sb3dlcigpOgotICAgIHByb2plY3RfYmFzZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocHJvamVjdF9iYXNlLCBvcy5wYXRoLnBhcmRpcikpCi0jIFBDL1ZTNy4xCi1pZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjXFx2IiBpbiBwcm9qZWN0X2Jhc2VbLTEwOl0ubG93ZXIoKToKLSAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnBhcmRpcikpCi0jIFBDL0FNRDY0Ci1pZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjYnVpbGRcXGFtZDY0IiBpbiBwcm9qZWN0X2Jhc2VbLTE0Ol0ubG93ZXIoKToKLSAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHByb2plY3RfYmFzZSwgb3MucGF0aC5wYXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnBhcmRpcikpCitpZiAob3MubmFtZSA9PSAnbnQnIGFuZAorICAgIHByb2plY3RfYmFzZS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKKyAgICBwcm9qZWN0X2Jhc2UgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHByb2plY3RfYmFzZSkpCiAKICMgcHl0aG9uX2J1aWxkOiAoQm9vbGVhbikgaWYgdHJ1ZSwgd2UncmUgZWl0aGVyIGJ1aWxkaW5nIFB5dGhvbiBvcgogIyBidWlsZGluZyBhbiBleHRlbnNpb24gd2l0aCBhbiB1bi1pbnN0YWxsZWQgUHl0aG9uLCBzbyB3ZSB1c2UKQEAgLTUxLDExICs0NCw5IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCi1pZiBfc3lzX2hvbWUgYW5kIG9zLm5hbWUgPT0gJ250JyBhbmQgXAotICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgncGNidWlsZCcsICdwY2J1aWxkXFxhbWQ2NCcpKToKLSAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQotICAgIGlmIF9zeXNfaG9tZS5lbmRzd2l0aCgncGNidWlsZCcpOiAgICMgbXVzdCBiZSBhbWQ2NAotICAgICAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKQoraWYgKF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZAorICAgIF9zeXNfaG9tZS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKKyAgICBfc3lzX2hvbWUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkpCiBkZWYgX3B5dGhvbl9idWlsZCgpOgogICAgIGlmIF9zeXNfaG9tZToKICAgICAgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihfc3lzX2hvbWUpCkBAIC00NjgsNyArNDU5LDcgQEAKICAgICAjIFhYWCBobW1tLi4gYSBub3JtYWwgaW5zdGFsbCBwdXRzIGluY2x1ZGUgZmlsZXMgaGVyZQogICAgIGdbJ0lOQ0xVREVQWSddID0gZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wKQogCi0gICAgZ1snRVhUX1NVRkZJWCddID0gJy5weWQnCisgICAgZ1snRVhUX1NVRkZJWCddID0gX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKVswXQogICAgIGdbJ0VYRSddID0gIi5leGUiCiAgICAgZ1snVkVSU0lPTiddID0gZ2V0X3B5dGhvbl92ZXJzaW9uKCkucmVwbGFjZSgiLiIsICIiKQogICAgIGdbJ0JJTkRJUiddID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQppbmRleCAyZDcyYWY0Li4wMmZhMWUyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSQ0hJVkVfRk9STUFUUykKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUsIHNwYXduCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3dhcm5pbmdzLCBydW5fdW5pdHRlc3QsIHBhdGNoCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MsIHJ1bl91bml0dGVzdCwgcGF0Y2gsIGNoYW5nZV9jd2QKIAogdHJ5OgogICAgIGltcG9ydCBncnAKQEAgLTM0LDYgKzM0LDE2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgWkxJQl9TVVBQT1JUID0gRmFsc2UKIAordHJ5OgorICAgIGltcG9ydCBiejIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBiejIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCisKIGRlZiBjYW5fZnNfZW5jb2RlKGZpbGVuYW1lKToKICAgICAiIiIKICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZW5hbWUgY2FuIGJlIHNhdmVkIGluIHRoZSBmaWxlIHN5c3RlbS4KQEAgLTUyLDE5ICs2MiwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaTElCX1NVUFBPUlQsICdOZWVkIHpsaWIgc3VwcG9ydCB0byBydW4nKQotICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKLSAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCdhcmNoaXZlJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGwoc2VsZiwgbmFtZT0nYXJjaGl2ZScpOgorICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKKyAgICAgICAgdG1wZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKHRtcGRpciwgbmFtZSwgJy50YXIuZ3onKQorICAgICAgICAjIHRyeWluZyBhbiB1bmNvbXByZXNzZWQgb25lCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsIG5hbWUsICcudGFyJywgY29tcHJlc3M9Tm9uZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2d6aXAoc2VsZik6CisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsICdhcmNoaXZlJywgJy50YXIuZ3onLCBjb21wcmVzcz0nZ3ppcCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhiejIsICdOZWVkIGJ6MiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2J6aXAyKHNlbGYpOgorICAgICAgICB0bXBkaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwodG1wZGlyLCAnYXJjaGl2ZScsICcudGFyLmJ6MicsIGNvbXByZXNzPSdiemlwMicpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsem1hLCAnTmVlZCBsem1hIHN1cHBvcnQgdG8gcnVuJykKKyAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfeHooc2VsZik6CisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCh0bXBkaXIsICdhcmNoaXZlJywgJy50YXIueHonLCBjb21wcmVzcz0neHonKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgnw6VyY2hpdicpLAogICAgICAgICAnRmlsZSBzeXN0ZW0gY2Fubm90IGhhbmRsZSB0aGlzIGZpbGVuYW1lJykKICAgICBkZWYgdGVzdF9tYWtlX3RhcmJhbGxfbGF0aW4xKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgbGF0aW4gY2hhcmFjdGVycy4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgnw6VyY2hpdicpICMgbm90ZSB0aGlzIGlzbid0IGEgcmVhbCB3b3JkCisgICAgICAgIHNlbGYudGVzdF9tYWtlX3RhcmJhbGwoJ8OlcmNoaXYnKSAjIG5vdGUgdGhpcyBpc24ndCBhIHJlYWwgd29yZAogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fZnNfZW5jb2RlKCfjga7jgqLjg7zjgqvjgqTjg5YnKSwKICAgICAgICAgJ0ZpbGUgc3lzdGVtIGNhbm5vdCBoYW5kbGUgdGhpcyBmaWxlbmFtZScpCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsX2V4dGVuZGVkKHNlbGYpOgpAQCAtNzIsMTYgKzk5LDkgQEAKICAgICAgICAgTWlycm9yIHRlc3RfbWFrZV90YXJiYWxsLCBleGNlcHQgZmlsZW5hbWUgY29udGFpbnMgZXh0ZW5kZWQKICAgICAgICAgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBsYXRpbiBjaGFyc2V0LgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCfjga7jgqLjg7zjgqvjgqTjg5YnKSAjIGphcGFuZXNlIGZvciBhcmNoaXZlCisgICAgICAgIHNlbGYudGVzdF9tYWtlX3RhcmJhbGwoJ+OBruOCouODvOOCq+OCpOODlicpICMgamFwYW5lc2UgZm9yIGFyY2hpdmUKIAotICAgIGRlZiBfbWFrZV90YXJiYWxsKHNlbGYsIHRhcmdldF9uYW1lKToKLSAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCi0gICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCi0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbih0bXBkaXIsICdzdWInKSkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdzdWInLCAnZmlsZTMnXSwgJ3h4eCcpCi0KKyAgICBkZWYgX21ha2VfdGFyYmFsbChzZWxmLCB0bXBkaXIsIHRhcmdldF9uYW1lLCBzdWZmaXgsICoqa3dhcmdzKToKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIHVuaXR0ZXN0LnNraXBVbmxlc3Moc3BsaXRkcml2ZSh0bXBkaXIpWzBdID09IHNwbGl0ZHJpdmUodG1wZGlyMilbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSBhbmQgdGFyZ2V0IHNob3VsZCBiZSBvbiBzYW1lIGRyaXZlIikKQEAgLTg5LDI3ICsxMDksMTMgQEAKICAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHRtcGRpcjIsIHRhcmdldF9uYW1lKQogCiAgICAgICAgICMgd29ya2luZyB3aXRoIHJlbGF0aXZlIHBhdGhzIHRvIGF2b2lkIHRhciB3YXJuaW5ncwotICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3MuY2hkaXIodG1wZGlyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtYWtlX3RhcmJhbGwoc3BsaXRkcml2ZShiYXNlX25hbWUpWzFdLCAnLicpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5jaGRpcihvbGRfZGlyKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodG1wZGlyKToKKyAgICAgICAgICAgIG1ha2VfdGFyYmFsbChzcGxpdGRyaXZlKGJhc2VfbmFtZSlbMV0sICdkaXN0JywgKiprd2FyZ3MpCiAKICAgICAgICAgIyBjaGVjayBpZiB0aGUgY29tcHJlc3NlZCB0YXJiYWxsIHdhcyBjcmVhdGVkCi0gICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnRhci5neicKKyAgICAgICAgdGFyYmFsbCA9IGJhc2VfbmFtZSArIHN1ZmZpeAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCi0KLSAgICAgICAgIyB0cnlpbmcgYW4gdW5jb21wcmVzc2VkIG9uZQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgdGFyZ2V0X25hbWUpCi0gICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICBvcy5jaGRpcih0bXBkaXIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1ha2VfdGFyYmFsbChzcGxpdGRyaXZlKGJhc2VfbmFtZSlbMV0sICcuJywgY29tcHJlc3M9Tm9uZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLmNoZGlyKG9sZF9kaXIpCi0gICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnRhcicKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8odGFyYmFsbCksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCiAKICAgICBkZWYgX3RhcmluZm8oc2VsZiwgcGF0aCk6CiAgICAgICAgIHRhciA9IHRhcmZpbGUub3BlbihwYXRoKQpAQCAtMTIwLDYgKzEyNiw5IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0YXIuY2xvc2UoKQogCisgICAgX2NyZWF0ZWRfZmlsZXMgPSAoJ2Rpc3QnLCAnZGlzdC9maWxlMScsICdkaXN0L2ZpbGUyJywKKyAgICAgICAgICAgICAgICAgICAgICAnZGlzdC9zdWInLCAnZGlzdC9zdWIvZmlsZTMnLCAnZGlzdC9zdWIyJykKKwogICAgIGRlZiBfY3JlYXRlX2ZpbGVzKHNlbGYpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKQEAgLTEzMCwxNSArMTM5LDE1IEBACiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkaXN0LCAnc3ViJykpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShbZGlzdCwgJ3N1YicsICdmaWxlMyddLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRpc3QsICdzdWIyJykpCi0gICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQotICAgICAgICByZXR1cm4gdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUKKyAgICAgICAgcmV0dXJuIHRtcGRpcgogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmluZF9leGVjdXRhYmxlKCd0YXInKSBhbmQgZmluZF9leGVjdXRhYmxlKCdnemlwJykKICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgWkxJQl9TVVBQT1JULAogICAgICAgICAgICAgICAgICAgICAgICAgICdOZWVkIHRoZSB0YXIsIGd6aXAgYW5kIHpsaWIgY29tbWFuZCB0byBydW4nKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfdnNfdGFyKHNlbGYpOgotICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICB0bXBkaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCiAgICAgICAgIG9sZF9kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICBvcy5jaGRpcih0bXBkaXIpCiAgICAgICAgIHRyeToKQEAgLTE2NCw3ICsxNzMsOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsMikpCiAgICAgICAgICMgbGV0J3MgY29tcGFyZSBib3RoIHRhcmJhbGxzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyh0YXJiYWxsKSwgc2VsZi5fdGFyaW5mbyh0YXJiYWxsMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyh0YXJiYWxsKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHRhcmJhbGwyKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKIAogICAgICAgICAjIHRyeWluZyBhbiB1bmNvbXByZXNzZWQgb25lCiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCkBAIC0xOTEsNyArMjAxLDggQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmaW5kX2V4ZWN1dGFibGUoJ2NvbXByZXNzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBjb21wcmVzcyBwcm9ncmFtIGlzIHJlcXVpcmVkJykKICAgICBkZWYgdGVzdF9jb21wcmVzc19kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICB0bXBkaXIgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnYXJjaGl2ZScpCiAKICAgICAgICAgIyB1c2luZyBjb21wcmVzcyBhbmQgdGVzdGluZyB0aGUgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZwogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKQEAgLTIyNCwxNyArMjM1LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05lZWQgemlwIGFuZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3ppcGZpbGUoc2VsZik6CiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHRhcgotICAgICAgICB0bXBkaXIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUxJ10sICd4eHgnKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ2ZpbGUyJ10sICd4eHgnKQotCi0gICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQotICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyMiwgJ2FyY2hpdmUnKQotICAgICAgICBtYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCB0bXBkaXIpCisgICAgICAgIHRtcGRpciA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodG1wZGlyKToKKyAgICAgICAgICAgIG1ha2VfemlwZmlsZShiYXNlX25hbWUsICdkaXN0JykKIAogICAgICAgICAjIGNoZWNrIGlmIHRoZSBjb21wcmVzc2VkIHRhcmJhbGwgd2FzIGNyZWF0ZWQKICAgICAgICAgdGFyYmFsbCA9IGJhc2VfbmFtZSArICcuemlwJwogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModGFyYmFsbCkpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHRhcmJhbGwpIGFzIHpmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoemYubmFtZWxpc3QoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZGlzdC9maWxlMScsICdkaXN0L2ZpbGUyJywgJ2Rpc3Qvc3ViL2ZpbGUzJ10pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaSVBfU1VQUE9SVCwgJ05lZWQgemlwIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3ppcGZpbGVfbm9femxpYihzZWxmKToKQEAgLTI1MCwxOCArMjYxLDI0IEBACiAgICAgICAgIHBhdGNoKHNlbGYsIGFyY2hpdmVfdXRpbC56aXBmaWxlLCAnWmlwRmlsZScsIGZha2VfemlwZmlsZSkKIAogICAgICAgICAjIGNyZWF0ZSBzb21ldGhpbmcgdG8gdGFyIGFuZCBjb21wcmVzcwotICAgICAgICB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZSA9IHNlbGYuX2NyZWF0ZV9maWxlcygpCi0gICAgICAgIG1ha2VfemlwZmlsZShiYXNlX25hbWUsIHRtcGRpcikKKyAgICAgICAgdG1wZGlyID0gc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgYmFzZV9uYW1lID0gb3MucGF0aC5qb2luKHNlbGYubWtkdGVtcCgpLCAnYXJjaGl2ZScpCisgICAgICAgIHdpdGggY2hhbmdlX2N3ZCh0bXBkaXIpOgorICAgICAgICAgICAgbWFrZV96aXBmaWxlKGJhc2VfbmFtZSwgJ2Rpc3QnKQogCiAgICAgICAgIHRhcmJhbGwgPSBiYXNlX25hbWUgKyAnLnppcCcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygodGFyYmFsbCwgInciKSwgeydjb21wcmVzc2lvbic6IHppcGZpbGUuWklQX1NUT1JFRH0pXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHRhcmJhbGwpKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh0YXJiYWxsKSBhcyB6ZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHpmLm5hbWVsaXN0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2Rpc3QvZmlsZTEnLCAnZGlzdC9maWxlMicsICdkaXN0L3N1Yi9maWxlMyddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrX2FyY2hpdmVfZm9ybWF0cyhbJ2d6dGFyJywgJ3h4eCcsICd6aXAnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3h4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKFsnZ3p0YXInLCAnemlwJ10pLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjaGVja19hcmNoaXZlX2Zvcm1hdHMoWydnenRhcicsICdienRhcicsICd4enRhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3p0YXInLCAndGFyJywgJ3ppcCddKSkKIAogICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZShzZWxmKToKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKQEAgLTI4Miw2ICsyOTksNDEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGRlbCBBUkNISVZFX0ZPUk1BVFNbJ3h4eCddCiAKKyAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfdGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICd0YXInLCBiYXNlX2RpciwgJ2Rpc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocmVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHJlcyksICdhcmNoaXZlLnRhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fdGFyaW5mbyhyZXMpLCBzZWxmLl9jcmVhdGVkX2ZpbGVzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKKyAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfZ3p0YXIoc2VsZik6CisgICAgICAgIGJhc2VfZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSAsICdhcmNoaXZlJykKKyAgICAgICAgcmVzID0gbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgJ2d6dGFyJywgYmFzZV9kaXIsICdkaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShyZXMpLCAnYXJjaGl2ZS50YXIuZ3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3RhcmluZm8ocmVzKSwgc2VsZi5fY3JlYXRlZF9maWxlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGJ6MiwgJ05lZWQgYnoyIHN1cHBvcnQgdG8gcnVuJykKKyAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfYnp0YXIoc2VsZik6CisgICAgICAgIGJhc2VfZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSAsICdhcmNoaXZlJykKKyAgICAgICAgcmVzID0gbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgJ2J6dGFyJywgYmFzZV9kaXIsICdkaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShyZXMpLCAnYXJjaGl2ZS50YXIuYnoyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHJlcyksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsem1hLCAnTmVlZCB4eiBzdXBwb3J0IHRvIHJ1bicpCisgICAgZGVmIHRlc3RfbWFrZV9hcmNoaXZlX3h6dGFyKHNlbGYpOgorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCkgLCAnYXJjaGl2ZScpCisgICAgICAgIHJlcyA9IG1ha2VfYXJjaGl2ZShiYXNlX25hbWUsICd4enRhcicsIGJhc2VfZGlyLCAnZGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhyZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUocmVzKSwgJ2FyY2hpdmUudGFyLnh6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl90YXJpbmZvKHJlcyksIHNlbGYuX2NyZWF0ZWRfZmlsZXMpCisKICAgICBkZWYgdGVzdF9tYWtlX2FyY2hpdmVfb3duZXJfZ3JvdXAoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyBtYWtlX2FyY2hpdmUgd2l0aCBvd25lciBhbmQgZ3JvdXAsIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMKICAgICAgICAgIyB0aGlzIHdvcmtzIGV2ZW4gaWYgdGhlcmUncyBub3QgZ2lkL3VpZCBzdXBwb3J0CkBAIC0yOTEsNyArMzQzLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGdyb3VwID0gb3duZXIgPSAncm9vdCcKIAotICAgICAgICBiYXNlX2Rpciwgcm9vdF9kaXIsIGJhc2VfbmFtZSA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICBiYXNlX2RpciA9ICBzZWxmLl9jcmVhdGVfZmlsZXMoKQorICAgICAgICByb290X2RpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSAsICdhcmNoaXZlJykKICAgICAgICAgcmVzID0gbWFrZV9hcmNoaXZlKGJhc2VfbmFtZSwgJ3ppcCcsIHJvb3RfZGlyLCBiYXNlX2Rpciwgb3duZXI9b3duZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cD1ncm91cCkKQEAgLTMxMSw3ICszNjQsOCBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgIlJlcXVpcmVzIHpsaWIiKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfcm9vdF9vd25lcihzZWxmKToKLSAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKKyAgICAgICAgdG1wZGlyID0gIHNlbGYuX2NyZWF0ZV9maWxlcygpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2FyY2hpdmUnKQogICAgICAgICBvbGRfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgb3MuY2hkaXIodG1wZGlyKQogICAgICAgICBncm91cCA9IGdycC5nZXRncmdpZCgwKVswXQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0LnB5CmluZGV4IDUwM2E2ZTguLmY3NjJmNWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3QucHkKQEAgLTIxLDcgKzIxLDcgQEAKIAogICAgICAgICAjIHdoYXQgZm9ybWF0cyBkb2VzIGJkaXN0IG9mZmVyPwogICAgICAgICBmb3JtYXRzID0gWydienRhcicsICdnenRhcicsICdtc2knLCAncnBtJywgJ3RhcicsCi0gICAgICAgICAgICAgICAgICAgJ3dpbmluc3QnLCAnemlwJywgJ3p0YXInXQorICAgICAgICAgICAgICAgICAgICd3aW5pbnN0JywgJ3h6dGFyJywgJ3ppcCcsICd6dGFyJ10KICAgICAgICAgZm91bmQgPSBzb3J0ZWQoY21kLmZvcm1hdF9jb21tYW5kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBmb3JtYXRzKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQppbmRleCBiOWY0MDdmLi4zNjZmZmJlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKQEAgLTM3LDYgKzM3LDkgQEAKICAgICAgICAgZnJvbSBkaXN0dXRpbHMuY29tbWFuZCBpbXBvcnQgYnVpbGRfZXh0CiAgICAgICAgIGJ1aWxkX2V4dC5VU0VSX0JBU0UgPSBzaXRlLlVTRVJfQkFTRQogCisgICAgZGVmIGJ1aWxkX2V4dChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gYnVpbGRfZXh0KCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiB0ZXN0X2J1aWxkX2V4dChzZWxmKToKICAgICAgICAgZ2xvYmFsIEFMUkVBRFlfVEVTVEVECiAgICAgICAgIGNvcHlfeHhtb2R1bGVfYyhzZWxmLnRtcF9kaXIpCkBAIC00NCw3ICs0Nyw3IEBACiAgICAgICAgIHh4X2V4dCA9IEV4dGVuc2lvbigneHgnLCBbeHhfY10pCiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4JywgJ2V4dF9tb2R1bGVzJzogW3h4X2V4dF19KQogICAgICAgICBkaXN0LnBhY2thZ2VfZGlyID0gc2VsZi50bXBfZGlyCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBmaXh1cF9idWlsZF9leHQoY21kKQogICAgICAgICBjbWQuYnVpbGRfbGliID0gc2VsZi50bXBfZGlyCiAgICAgICAgIGNtZC5idWlsZF90ZW1wID0gc2VsZi50bXBfZGlyCkBAIC05MSw3ICs5NCw3IEBACiAKICAgICBkZWYgdGVzdF9zb2xhcmlzX2VuYWJsZV9zaGFyZWQoc2VsZik6CiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4J30pCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBvbGQgPSBzeXMucGxhdGZvcm0KIAogICAgICAgICBzeXMucGxhdGZvcm0gPSAnc3Vub3MnICMgZm9vbGluZyBmaW5hbGl6ZV9vcHRpb25zCkBAIC0xMTMsNyArMTE2LDcgQEAKICAgICBkZWYgdGVzdF91c2VyX3NpdGUoc2VsZik6CiAgICAgICAgIGltcG9ydCBzaXRlCiAgICAgICAgIGRpc3QgPSBEaXN0cmlidXRpb24oeyduYW1lJzogJ3h4J30pCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogCiAgICAgICAgICMgbWFraW5nIHN1cmUgdGhlIHVzZXIgb3B0aW9uIGlzIHRoZXJlCiAgICAgICAgIG9wdGlvbnMgPSBbbmFtZSBmb3IgbmFtZSwgc2hvcnQsIGxhYmxlIGluCkBAIC0xNDQsMTQgKzE0NywxNCBAQAogICAgICAgICAjIHdpdGggdGhlIG9wdGlvbmFsIGFyZ3VtZW50LgogICAgICAgICBtb2R1bGVzID0gW0V4dGVuc2lvbignZm9vJywgWyd4eHgnXSwgb3B0aW9uYWw9RmFsc2UpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVW5rbm93bkZpbGVFcnJvciwgQ29tcGlsZUVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kLnJ1bikgICMgc2hvdWxkIHJhaXNlIGFuIGVycm9yCiAKICAgICAgICAgbW9kdWxlcyA9IFtFeHRlbnNpb24oJ2ZvbycsIFsneHh4J10sIG9wdGlvbmFsPVRydWUpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBjbWQucnVuKCkgICMgc2hvdWxkIHBhc3MKIApAQCAtMTYwLDcgKzE2Myw3IEBACiAgICAgICAgICMgZXRjLikgYXJlIGluIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoLgogICAgICAgICBtb2R1bGVzID0gW0V4dGVuc2lvbignZm9vJywgWyd4eHgnXSwgb3B0aW9uYWw9RmFsc2UpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogCiAgICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKQEAgLTE3MiwxNCArMTc1LDE0IEBACiAKICAgICAgICAgIyBtYWtlIHN1cmUgY21kLmxpYnJhcmllcyBpcyB0dXJuZWQgaW50byBhIGxpc3QKICAgICAgICAgIyBpZiBpdCdzIGEgc3RyaW5nCi0gICAgICAgIGNtZCA9IGJ1aWxkX2V4dChkaXN0KQorICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQubGlicmFyaWVzID0gJ215X2xpYiwgb3RoZXJfbGliIGxhc3RsaWInCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQubGlicmFyaWVzLCBbJ215X2xpYicsICdvdGhlcl9saWInLCAnbGFzdGxpYiddKQogCiAgICAgICAgICMgbWFrZSBzdXJlIGNtZC5saWJyYXJ5X2RpcnMgaXMgdHVybmVkIGludG8gYSBsaXN0CiAgICAgICAgICMgaWYgaXQncyBhIHN0cmluZwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmxpYnJhcnlfZGlycyA9ICdteV9saWJfZGlyJXNvdGhlcl9saWJfZGlyJyAlIG9zLnBhdGhzZXAKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogICAgICAgICBzZWxmLmFzc2VydEluKCdteV9saWJfZGlyJywgY21kLmxpYnJhcnlfZGlycykKQEAgLTE4Nyw3ICsxOTAsNyBAQAogCiAgICAgICAgICMgbWFrZSBzdXJlIHJwYXRoIGlzIHR1cm5lZCBpbnRvIGEgbGlzdAogICAgICAgICAjIGlmIGl0J3MgYSBzdHJpbmcKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5ycGF0aCA9ICdvbmUlc3R3bycgJSBvcy5wYXRoc2VwCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQucnBhdGgsIFsnb25lJywgJ3R3byddKQpAQCAtMTk2LDMyICsxOTksMzIgQEAKIAogICAgICAgICAjIG1ha2Ugc3VyZSBkZWZpbmUgaXMgdHVybmVkIGludG8gMi10dXBsZXMKICAgICAgICAgIyBzdHJpbmdzIGlmIHRoZXkgYXJlICcsJy1zZXBhcmF0ZWQgc3RyaW5ncwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmRlZmluZSA9ICdvbmUsdHdvJwogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmRlZmluZSwgWygnb25lJywgJzEnKSwgKCd0d28nLCAnMScpXSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSB1bmRlZiBpcyB0dXJuZWQgaW50byBhIGxpc3Qgb2YKICAgICAgICAgIyBzdHJpbmdzIGlmIHRoZXkgYXJlICcsJy1zZXBhcmF0ZWQgc3RyaW5ncwotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLnVuZGVmID0gJ29uZSx0d28nCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQudW5kZWYsIFsnb25lJywgJ3R3byddKQogCiAgICAgICAgICMgbWFrZSBzdXJlIHN3aWdfb3B0cyBpcyB0dXJuZWQgaW50byBhIGxpc3QKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5zd2lnX29wdHMgPSBOb25lCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuc3dpZ19vcHRzLCBbXSkKIAotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLnN3aWdfb3B0cyA9ICcxIDInCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuc3dpZ19vcHRzLCBbJzEnLCAnMiddKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfZXh0ZW5zaW9uc19saXN0KHNlbGYpOgogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5maW5hbGl6ZV9vcHRpb25zKCkKIAogICAgICAgICAjJ2V4dGVuc2lvbnMnIG9wdGlvbiBtdXN0IGJlIGEgbGlzdCBvZiBFeHRlbnNpb24gaW5zdGFuY2VzCkBAIC0yNzAsNyArMjczLDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlX2ZpbGVzKHNlbGYpOgogICAgICAgICBtb2R1bGVzID0gW0V4dGVuc2lvbignZm9vJywgWyd4eHgnXSwgb3B0aW9uYWw9RmFsc2UpXQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsICdleHRfbW9kdWxlcyc6IG1vZHVsZXN9KQotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5nZXRfc291cmNlX2ZpbGVzKCksIFsneHh4J10pCiAKQEAgLTI3OSw3ICsyODIsNyBAQAogICAgICAgICAjIHNob3VsZCBub3QgYmUgb3ZlcnJpZGVuIGJ5IGEgY29tcGlsZXIgaW5zdGFuY2UKICAgICAgICAgIyB3aGVuIHRoZSBjb21tYW5kIGlzIHJ1bgogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5jb21waWxlciA9ICd1bml4JwogICAgICAgICBjbWQuZW5zdXJlX2ZpbmFsaXplZCgpCiAgICAgICAgIGNtZC5ydW4oKQpAQCAtMjkyLDcgKzI5NSw3IEBACiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbignZm9vJywgW2NfZmlsZV0sIG9wdGlvbmFsPUZhbHNlKQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHRfbW9kdWxlcyc6IFtleHRdfSkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGZpeHVwX2J1aWxkX2V4dChjbWQpCiAgICAgICAgIGNtZC5lbnN1cmVfZmluYWxpemVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY21kLmdldF9vdXRwdXRzKCkpLCAxKQpAQCAtMzU1LDcgKzM1OCw3IEBACiAgICAgICAgICNldHJlZV9leHQgPSBFeHRlbnNpb24oJ2x4bWwuZXRyZWUnLCBbZXRyZWVfY10pCiAgICAgICAgICNkaXN0ID0gRGlzdHJpYnV0aW9uKHsnbmFtZSc6ICdseG1sJywgJ2V4dF9tb2R1bGVzJzogW2V0cmVlX2V4dF19KQogICAgICAgICBkaXN0ID0gRGlzdHJpYnV0aW9uKCkKLSAgICAgICAgY21kID0gYnVpbGRfZXh0KGRpc3QpCisgICAgICAgIGNtZCA9IHNlbGYuYnVpbGRfZXh0KGRpc3QpCiAgICAgICAgIGNtZC5pbnBsYWNlID0gMQogICAgICAgICBjbWQuZGlzdHJpYnV0aW9uLnBhY2thZ2VfZGlyID0geycnOiAnc3JjJ30KICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5wYWNrYWdlcyA9IFsnbHhtbCcsICdseG1sLmh0bWwnXQpAQCAtNDYyLDcgKzQ2NSw3IEBACiAgICAgICAgICAgICAnZXh0X21vZHVsZXMnOiBbZGVwdGFyZ2V0X2V4dF0KICAgICAgICAgfSkKICAgICAgICAgZGlzdC5wYWNrYWdlX2RpciA9IHNlbGYudG1wX2RpcgotICAgICAgICBjbWQgPSBidWlsZF9leHQoZGlzdCkKKyAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmJ1aWxkX2xpYiA9IHNlbGYudG1wX2RpcgogICAgICAgICBjbWQuYnVpbGRfdGVtcCA9IHNlbGYudG1wX2RpcgogCkBAIC00ODEsOCArNDg0LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZhaWwoIldyb25nIGRlcGxveW1lbnQgdGFyZ2V0IGR1cmluZyBjb21waWxhdGlvbiIpCiAKIAorY2xhc3MgUGFyYWxsZWxCdWlsZEV4dFRlc3RDYXNlKEJ1aWxkRXh0VGVzdENhc2UpOgorCisgICAgZGVmIGJ1aWxkX2V4dChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBidWlsZF9leHQgPSBzdXBlcigpLmJ1aWxkX2V4dCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGJ1aWxkX2V4dC5wYXJhbGxlbCA9IFRydWUKKyAgICAgICAgcmV0dXJuIGJ1aWxkX2V4dAorCisKIGRlZiB0ZXN0X3N1aXRlKCk6Ci0gICAgcmV0dXJuIHVuaXR0ZXN0Lm1ha2VTdWl0ZShCdWlsZEV4dFRlc3RDYXNlKQorICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZShCdWlsZEV4dFRlc3RDYXNlKSkKKyAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZShQYXJhbGxlbEJ1aWxkRXh0VGVzdENhc2UpKQorICAgIHJldHVybiBzdWl0ZQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQppbmRleCBjOGY2Yjg5Li4xODI4M2RjIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CkBAIC0xMjAsOCArMTIwLDggQEAKICAgICAgICAgZm91bmQgPSBvcy5saXN0ZGlyKGNtZC5idWlsZF9saWIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwgWydfX3B5Y2FjaGVfXycsICdib2lsZWRlZ2dzLnB5J10pCiAgICAgICAgIGZvdW5kID0gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2xpYiwgJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvdW5kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2JvaWxlZGVnZ3MuJXMucHlvJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWddKQorICAgICAgICBleHBlY3QgPSAnYm9pbGVkZWdncy57fS5vcHQtMS5weWMnLmZvcm1hdChzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChmb3VuZCksIFtleHBlY3RdKQogCiAgICAgZGVmIHRlc3RfZGlyX2luX3BhY2thZ2VfZGF0YShzZWxmKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CmluZGV4IDE4ZTFlNTcuLjkzMTMzMzAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CkBAIC0yMCw4ICsyMCw2IEBACiAKIAogZGVmIF9tYWtlX2V4dF9uYW1lKG1vZG5hbWUpOgotICAgIGlmIG9zLm5hbWUgPT0gJ250JyBhbmQgc3lzLmV4ZWN1dGFibGUuZW5kc3dpdGgoJ19kLmV4ZScpOgotICAgICAgICBtb2RuYW1lICs9ICdfZCcKICAgICByZXR1cm4gbW9kbmFtZSArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignRVhUX1NVRkZJWCcpCiAKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CmluZGV4IDQwZGQxYTkuLjUzNzhhYTggMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKQEAgLTQ0LDEyICs0NCwxMSBAQAogICAgICAgICBmID0gb3MucGF0aC5qb2luKHByb2plY3RfZGlyLCAnZm9vLnB5JykKICAgICAgICAgc2VsZi53cml0ZV9maWxlKGYsICcjIHB5dGhvbiBmaWxlJykKICAgICAgICAgY21kLmJ5dGVfY29tcGlsZShbZl0pCi0gICAgICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkKLSAgICAgICAgcHlvX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1GYWxzZSkKKyAgICAgICAgcHljX2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5Jywgb3B0aW1pemF0aW9uPScnKQorICAgICAgICBweWNfb3B0X2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnZm9vLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249Y21kLm9wdGltaXplKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocHljX2ZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocHlvX2ZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocHljX29wdF9maWxlKSkKIAogICAgIGRlZiB0ZXN0X2dldF9vdXRwdXRzKHNlbGYpOgogICAgICAgICBwcm9qZWN0X2RpciwgZGlzdCA9IHNlbGYuY3JlYXRlX2Rpc3QoKQpAQCAtNjYsOCArNjUsOCBAQAogICAgICAgICBjbWQuZGlzdHJpYnV0aW9uLnBhY2thZ2VzID0gWydzcGFtJ10KICAgICAgICAgY21kLmRpc3RyaWJ1dGlvbi5zY3JpcHRfbmFtZSA9ICdzZXR1cC5weScKIAotICAgICAgICAjIGdldF9vdXRwdXRzIHNob3VsZCByZXR1cm4gNCBlbGVtZW50czogc3BhbS9fX2luaXRfXy5weSwgLnB5YyBhbmQKLSAgICAgICAgIyAucHlvLCBmb28uaW1wb3J0LXRhZy1hYmlmbGFncy5zbyAvIGZvby5weWQKKyAgICAgICAgIyBnZXRfb3V0cHV0cyBzaG91bGQgcmV0dXJuIDQgZWxlbWVudHM6IHNwYW0vX19pbml0X18ucHkgYW5kIC5weWMsCisgICAgICAgICMgZm9vLmltcG9ydC10YWctYWJpZmxhZ3Muc28gLyBmb28ucHlkCiAgICAgICAgIG91dHB1dHMgPSBjbWQuZ2V0X291dHB1dHMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRwdXRzKSwgNCwgb3V0cHV0cykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X21zdmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9tc3ZjY29tcGlsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRkOTExZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9tc3ZjY29tcGlsZXIucHkKQEAgLTAsMCArMSw5MCBAQAorIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyLiIiIgoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKKworZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCitmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorCisKK1NLSVBfTUVTU0FHRSA9IChOb25lIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIGVsc2UKKyAgICAgICAgICAgICAgICAiVGhlc2UgdGVzdHMgYXJlIG9ubHkgZm9yIHdpbjMyIikKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0tJUF9NRVNTQUdFIGlzIE5vbmUsIFNLSVBfTUVTU0FHRSkKK2NsYXNzIG1zdmNjb21waWxlclRlc3RDYXNlKHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fY29tcGlsZXIoc2VsZik6CisgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuX21zdmNjb21waWxlciBhcyBfbXN2Y2NvbXBpbGVyCisgICAgICAgICMgbWFrZXMgc3VyZSBxdWVyeV92Y3ZhcnNhbGwgcmFpc2VzCisgICAgICAgICMgYSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yIGlmIHRoZSBjb21waWxlcgorICAgICAgICAjIGlzIG5vdCBmb3VuZAorICAgICAgICBkZWYgX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQorCisgICAgICAgIG9sZF9maW5kX3ZjdmFyc2FsbCA9IF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsCisgICAgICAgIF9tc3ZjY29tcGlsZXIuX2ZpbmRfdmN2YXJzYWxsID0gX2ZpbmRfdmN2YXJzYWxsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc1BsYXRmb3JtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbXN2Y2NvbXBpbGVyLl9nZXRfdmNfZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd29udCBmaW5kIHRoaXMgdmVyc2lvbicpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbCA9IG9sZF9maW5kX3ZjdmFyc2FsbAorCisgICAgZGVmIHRlc3RfY29tcGlsZXJfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5fbXN2Y2NvbXBpbGVyIGFzIF9tc3ZjY29tcGlsZXIKKyAgICAgICAgIyBzdXBwcmVzcyBwYXRoIHRvIHZjcnVudGltZSBmcm9tIF9maW5kX3ZjdmFyc2FsbCB0bworICAgICAgICAjIGNoZWNrIHRoYXQgL01UIGlzIGFkZGVkIHRvIGNvbXBpbGUgb3B0aW9ucworICAgICAgICBvbGRfZmluZF92Y3ZhcnNhbGwgPSBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbAorICAgICAgICBkZWYgX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYyk6CisgICAgICAgICAgICByZXR1cm4gb2xkX2ZpbmRfdmN2YXJzYWxsKHBsYXRfc3BlYylbMF0sIE5vbmUKKyAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBfZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29tcGlsZXIgPSBfbXN2Y2NvbXBpbGVyLk1TVkNDb21waWxlcigpCisgICAgICAgICAgICBjb21waWxlci5pbml0aWFsaXplKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignL01UJywgY29tcGlsZXIuY29tcGlsZV9vcHRpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignL01EJywgY29tcGlsZXIuY29tcGlsZV9vcHRpb25zKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBvbGRfZmluZF92Y3ZhcnNhbGwKKworICAgIGRlZiB0ZXN0X3ZjcnVudGltZV9jb3B5KHNlbGYpOgorICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLl9tc3ZjY29tcGlsZXIgYXMgX21zdmNjb21waWxlcgorICAgICAgICAjIGZvcmNlIHBhdGggdG8gYSBrbm93biBmaWxlIC0gaXQgZG9lc24ndCBtYXR0ZXIKKyAgICAgICAgIyB3aGF0IHdlIGNvcHkgYXMgbG9uZyBhcyBpdHMgbmFtZSBpcyBub3QgaW4KKyAgICAgICAgIyBfbXN2Y2NvbXBpbGVyLl9CVU5ETEVEX0RMTFMKKyAgICAgICAgb2xkX2ZpbmRfdmN2YXJzYWxsID0gX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwKKyAgICAgICAgZGVmIF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpOgorICAgICAgICAgICAgcmV0dXJuIG9sZF9maW5kX3ZjdmFyc2FsbChwbGF0X3NwZWMpWzBdLCBfX2ZpbGVfXworICAgICAgICBfbXN2Y2NvbXBpbGVyLl9maW5kX3ZjdmFyc2FsbCA9IF9maW5kX3ZjdmFyc2FsbAorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZW1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIGNvbXBpbGVyID0gX21zdmNjb21waWxlci5NU1ZDQ29tcGlsZXIoKQorICAgICAgICAgICAgY29tcGlsZXIuaW5pdGlhbGl6ZSgpCisgICAgICAgICAgICBjb21waWxlci5fY29weV92Y3J1bnRpbWUodGVtcGRpcikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICB0ZW1wZGlyLCBvcy5wYXRoLmJhc2VuYW1lKF9fZmlsZV9fKSkpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX21zdmNjb21waWxlci5fZmluZF92Y3ZhcnNhbGwgPSBvbGRfZmluZF92Y3ZhcnNhbGwKKworICAgIGRlZiB0ZXN0X3ZjcnVudGltZV9za2lwX2NvcHkoc2VsZik6CisgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuX21zdmNjb21waWxlciBhcyBfbXN2Y2NvbXBpbGVyCisKKyAgICAgICAgdGVtcGRpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGNvbXBpbGVyID0gX21zdmNjb21waWxlci5NU1ZDQ29tcGlsZXIoKQorICAgICAgICBjb21waWxlci5pbml0aWFsaXplKCkKKyAgICAgICAgZGxsID0gY29tcGlsZXIuX3ZjcnVudGltZV9yZWRpc3QKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGRsbCkpCisKKyAgICAgICAgY29tcGlsZXIuX2NvcHlfdmNydW50aW1lKHRlbXBkaXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICB0ZW1wZGlyLCBvcy5wYXRoLmJhc2VuYW1lKGRsbCkpKSkKKworZGVmIHRlc3Rfc3VpdGUoKToKKyAgICByZXR1cm4gdW5pdHRlc3QubWFrZVN1aXRlKG1zdmNjb21waWxlclRlc3RDYXNlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggNWFkY2FjNS4uZTQyMzMyNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtMzIyLDExICszMjIsMTEgQEAKICAgICAgICAgICAgICAgICAgIHByZWZpeD1Ob25lLCBiYXNlX2Rpcj1Ob25lLAogICAgICAgICAgICAgICAgICAgdmVyYm9zZT0xLCBkcnlfcnVuPTAsCiAgICAgICAgICAgICAgICAgICBkaXJlY3Q9Tm9uZSk6Ci0gICAgIiIiQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIGVpdGhlciAucHljCi0gICAgb3IgLnB5byBmaWxlcyBpbiBhIF9fcHljYWNoZV9fIHN1YmRpcmVjdG9yeS4gICdweV9maWxlcycgaXMgYSBsaXN0CisgICAgIiIiQnl0ZS1jb21waWxlIGEgY29sbGVjdGlvbiBvZiBQeXRob24gc291cmNlIGZpbGVzIHRvIC5weWMKKyAgICBmaWxlcyBpbiBhIF9fcHljYWNoZV9fIHN1YmRpcmVjdG9yeS4gICdweV9maWxlcycgaXMgYSBsaXN0CiAgICAgb2YgZmlsZXMgdG8gY29tcGlsZTsgYW55IGZpbGVzIHRoYXQgZG9uJ3QgZW5kIGluICIucHkiIGFyZSBzaWxlbnRseQogICAgIHNraXBwZWQuICAnb3B0aW1pemUnIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAwIC0gZG9uJ3Qgb3B0aW1pemUgKGdlbmVyYXRlIC5weWMpCisgICAgICAwIC0gZG9uJ3Qgb3B0aW1pemUKICAgICAgIDEgLSBub3JtYWwgb3B0aW1pemF0aW9uIChsaWtlICJweXRob24gLU8iKQogICAgICAgMiAtIGV4dHJhIG9wdGltaXphdGlvbiAobGlrZSAicHl0aG9uIC1PTyIpCiAgICAgSWYgJ2ZvcmNlJyBpcyB0cnVlLCBhbGwgZmlsZXMgYXJlIHJlY29tcGlsZWQgcmVnYXJkbGVzcyBvZgpAQCAtNDM4LDggKzQzOCw5IEBACiAgICAgICAgICAgICAjICAgY2ZpbGUgLSBieXRlLWNvbXBpbGVkIGZpbGUKICAgICAgICAgICAgICMgICBkZmlsZSAtIHB1cnBvcnRlZCBzb3VyY2UgZmlsZW5hbWUgKHNhbWUgYXMgJ2ZpbGUnIGJ5IGRlZmF1bHQpCiAgICAgICAgICAgICBpZiBvcHRpbWl6ZSA+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+CiBNU0dfT09CID0gMHgxICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIGRhdGEgb3V0IG9mIGJhbmQKQEAgLTkyMywxMTUgKzkyMyw2IEBACiAgICAgdGFyZ2V0LnZvaWRyZXNwKCkKIAogCi1jbGFzcyBOZXRyYzoKLSAgICAiIiJDbGFzcyB0byBwYXJzZSAmIHByb3ZpZGUgYWNjZXNzIHRvICduZXRyYycgZm9ybWF0IGZpbGVzLgotCi0gICAgU2VlIHRoZSBuZXRyYyg0KSBtYW4gcGFnZSBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGZpbGUgZm9ybWF0LgotCi0gICAgV0FSTklORzogVGhpcyBjbGFzcyBpcyBvYnNvbGV0ZSAtLSB1c2UgbW9kdWxlIG5ldHJjIGluc3RlYWQuCi0KLSAgICAiIiIKLSAgICBfX2RlZnVzZXIgPSBOb25lCi0gICAgX19kZWZwYXNzd2QgPSBOb25lCi0gICAgX19kZWZhY2N0ID0gTm9uZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lPU5vbmUpOgotICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGlzIGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSB0aGUgbmV0cmMgbW9kdWxlIGluc3RlYWQiLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmICJIT01FIiBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIkhPTUUiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLm5ldHJjIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigic3BlY2lmeSBmaWxlIHRvIGxvYWQgb3Igc2V0ICRIT01FIikKLSAgICAgICAgc2VsZi5fX2hvc3RzID0ge30KLSAgICAgICAgc2VsZi5fX21hY3JvcyA9IHt9Ci0gICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgInIiKQotICAgICAgICBpbl9tYWNybyA9IDAKLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgaW5fbWFjcm8gYW5kIGxpbmUuc3RyaXAoKToKLSAgICAgICAgICAgICAgICBtYWNyb19saW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxpZiBpbl9tYWNybzoKLSAgICAgICAgICAgICAgICBzZWxmLl9fbWFjcm9zW21hY3JvX25hbWVdID0gdHVwbGUobWFjcm9fbGluZXMpCi0gICAgICAgICAgICAgICAgaW5fbWFjcm8gPSAwCi0gICAgICAgICAgICB3b3JkcyA9IGxpbmUuc3BsaXQoKQotICAgICAgICAgICAgaG9zdCA9IHVzZXIgPSBwYXNzd2QgPSBhY2N0ID0gTm9uZQotICAgICAgICAgICAgZGVmYXVsdCA9IDAKLSAgICAgICAgICAgIGkgPSAwCi0gICAgICAgICAgICB3aGlsZSBpIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICB3MSA9IHdvcmRzW2ldCi0gICAgICAgICAgICAgICAgaWYgaSsxIDwgbGVuKHdvcmRzKToKLSAgICAgICAgICAgICAgICAgICAgdzIgPSB3b3Jkc1tpICsgMV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB3MiA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiB3MSA9PSAnZGVmYXVsdCc6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnbWFjaGluZScgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICBob3N0ID0gdzIubG93ZXIoKQotICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKLSAgICAgICAgICAgICAgICBlbGlmIHcxID09ICdsb2dpbicgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICB1c2VyID0gdzIKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAncGFzc3dvcmQnIGFuZCB3MjoKLSAgICAgICAgICAgICAgICAgICAgcGFzc3dkID0gdzIKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnYWNjb3VudCcgYW5kIHcyOgotICAgICAgICAgICAgICAgICAgICBhY2N0ID0gdzIKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgZWxpZiB3MSA9PSAnbWFjZGVmJyBhbmQgdzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY3JvX25hbWUgPSB3MgotICAgICAgICAgICAgICAgICAgICBtYWNyb19saW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGluX21hY3JvID0gMQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgaWYgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGVmdXNlciA9IHVzZXIgb3Igc2VsZi5fX2RlZnVzZXIKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGVmcGFzc3dkID0gcGFzc3dkIG9yIHNlbGYuX19kZWZwYXNzd2QKLSAgICAgICAgICAgICAgICBzZWxmLl9fZGVmYWNjdCA9IGFjY3Qgb3Igc2VsZi5fX2RlZmFjY3QKLSAgICAgICAgICAgIGlmIGhvc3Q6Ci0gICAgICAgICAgICAgICAgaWYgaG9zdCBpbiBzZWxmLl9faG9zdHM6Ci0gICAgICAgICAgICAgICAgICAgIG91c2VyLCBvcGFzc3dkLCBvYWNjdCA9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19ob3N0c1tob3N0XQotICAgICAgICAgICAgICAgICAgICB1c2VyID0gdXNlciBvciBvdXNlcgotICAgICAgICAgICAgICAgICAgICBwYXNzd2QgPSBwYXNzd2Qgb3Igb3Bhc3N3ZAotICAgICAgICAgICAgICAgICAgICBhY2N0ID0gYWNjdCBvciBvYWNjdAotICAgICAgICAgICAgICAgIHNlbGYuX19ob3N0c1tob3N0XSA9IHVzZXIsIHBhc3N3ZCwgYWNjdAotICAgICAgICBmcC5jbG9zZSgpCi0KLSAgICBkZWYgZ2V0X2hvc3RzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGhvc3RzIG1lbnRpb25lZCBpbiB0aGUgLm5ldHJjIGZpbGUuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9faG9zdHMua2V5cygpCi0KLSAgICBkZWYgZ2V0X2FjY291bnQoc2VsZiwgaG9zdCk6Ci0gICAgICAgICIiIlJldHVybnMgbG9naW4gaW5mb3JtYXRpb24gZm9yIHRoZSBuYW1lZCBob3N0LgotCi0gICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSB0cmlwbGUgY29udGFpbmluZyB1c2VyaWQsCi0gICAgICAgIHBhc3N3b3JkLCBhbmQgdGhlIGFjY291bnRpbmcgZmllbGQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGhvc3QgPSBob3N0Lmxvd2VyKCkKLSAgICAgICAgdXNlciA9IHBhc3N3ZCA9IGFjY3QgPSBOb25lCi0gICAgICAgIGlmIGhvc3QgaW4gc2VsZi5fX2hvc3RzOgotICAgICAgICAgICAgdXNlciwgcGFzc3dkLCBhY2N0ID0gc2VsZi5fX2hvc3RzW2hvc3RdCi0gICAgICAgIHVzZXIgPSB1c2VyIG9yIHNlbGYuX19kZWZ1c2VyCi0gICAgICAgIHBhc3N3ZCA9IHBhc3N3ZCBvciBzZWxmLl9fZGVmcGFzc3dkCi0gICAgICAgIGFjY3QgPSBhY2N0IG9yIHNlbGYuX19kZWZhY2N0Ci0gICAgICAgIHJldHVybiB1c2VyLCBwYXNzd2QsIGFjY3QKLQotICAgIGRlZiBnZXRfbWFjcm9zKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBkZWZpbmVkIG1hY3JvIG5hbWVzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fX21hY3Jvcy5rZXlzKCkKLQotICAgIGRlZiBnZXRfbWFjcm8oc2VsZiwgbWFjcm8pOgotICAgICAgICAiIiJSZXR1cm4gYSBzZXF1ZW5jZSBvZiBsaW5lcyB3aGljaCBkZWZpbmUgYSBuYW1lZCBtYWNyby4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19tYWNyb3NbbWFjcm9dCi0KLQotCiBkZWYgdGVzdCgpOgogICAgICcnJ1Rlc3QgcHJvZ3JhbS4KICAgICBVc2FnZTogZnRwIFstZF0gWy1yW2ZpbGVdXSBob3N0IFstbFtkaXJdXSBbLWRbZGlyXV0gWy1wXSBbZmlsZV0gLi4uCkBAIC0xMDQ1LDYgKzkzNiw4IEBACiAgICAgICAgIHByaW50KHRlc3QuX19kb2NfXykKICAgICAgICAgc3lzLmV4aXQoMCkKIAorICAgIGltcG9ydCBuZXRyYworCiAgICAgZGVidWdnaW5nID0gMAogICAgIHJjZmlsZSA9IE5vbmUKICAgICB3aGlsZSBzeXMuYXJndlsxXSA9PSAnLWQnOgpAQCAtMTA1OSwxNCArOTUyLDE0IEBACiAgICAgZnRwLnNldF9kZWJ1Z2xldmVsKGRlYnVnZ2luZykKICAgICB1c2VyaWQgPSBwYXNzd2QgPSBhY2N0ID0gJycKICAgICB0cnk6Ci0gICAgICAgIG5ldHJjID0gTmV0cmMocmNmaWxlKQorICAgICAgICBuZXRyY29iaiA9IG5ldHJjLm5ldHJjKHJjZmlsZSkKICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgaWYgcmNmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ291bGQgbm90IG9wZW4gYWNjb3VudCBmaWxlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIC0tIHVzaW5nIGFub255bW91cyBsb2dpbi4iKQogICAgIGVsc2U6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHVzZXJpZCwgcGFzc3dkLCBhY2N0ID0gbmV0cmMuZ2V0X2FjY291bnQoaG9zdCkKKyAgICAgICAgICAgIHVzZXJpZCwgYWNjdCwgcGFzc3dkID0gbmV0cmNvYmouYXV0aGVudGljYXRvcnMoaG9zdCkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgIyBubyBhY2NvdW50IGZvciBob3N0CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKApkaWZmIC0tZ2l0IGEvTGliL2Z1bmN0b29scy5weSBiL0xpYi9mdW5jdG9vbHMucHkKaW5kZXggMmMyOTlkNy4uMDZhNGZmMSAxMDA2NDQKLS0tIGEvTGliL2Z1bmN0b29scy5weQorKysgYi9MaWIvZnVuY3Rvb2xzLnB5CkBAIC0yMyw3ICsyMyw3IEBACiBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtLZXlEaWN0aW9uYXJ5CiB0cnk6CiAgICAgZnJvbSBfdGhyZWFkIGltcG9ydCBSTG9jawotZXhjZXB0OgorZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGNsYXNzIFJMb2NrOgogICAgICAgICAnRHVtbXkgcmVlbnRyYW50IGxvY2sgZm9yIGJ1aWxkcyB3aXRob3V0IHRocmVhZHMnCiAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6IHBhc3MKQEAgLTk0LDEwOCArOTQsMTA5IEBACiAjIGluZmluaXRlIHJlY3Vyc2lvbiB0aGF0IGNvdWxkIG9jY3VyIHdoZW4gdGhlIG9wZXJhdG9yIGRpc3BhdGNoIGxvZ2ljCiAjIGRldGVjdHMgYSBOb3RJbXBsZW1lbnRlZCByZXN1bHQgYW5kIHRoZW4gY2FsbHMgYSByZWZsZWN0ZWQgbWV0aG9kLgogCi1kZWYgX2d0X2Zyb21fbHQoc2VsZiwgb3RoZXIpOgorZGVmIF9ndF9mcm9tX2x0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID4gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8IGIpIGFuZCAoYSAhPSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2x0X18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCiAKLWRlZiBfbGVfZnJvbV9sdChzZWxmLCBvdGhlcik6CitkZWYgX2xlX2Zyb21fbHQoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPD0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChhIDwgYikgb3IgKGEgPT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sdF9fKG90aGVyKQogICAgIHJldHVybiBvcF9yZXN1bHQgb3Igc2VsZiA9PSBvdGhlcgogCi1kZWYgX2dlX2Zyb21fbHQoc2VsZiwgb3RoZXIpOgorZGVmIF9nZV9mcm9tX2x0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPCBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2x0X18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CiAKLWRlZiBfZ2VfZnJvbV9sZShzZWxmLCBvdGhlcik6CitkZWYgX2dlX2Zyb21fbGUoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPj0gYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA8PSBiKSBvciAoYSA9PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2xlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKIAotZGVmIF9sdF9mcm9tX2xlKHNlbGYsIG90aGVyKToKK2RlZiBfbHRfZnJvbV9sZShzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA8PSBiKSBhbmQgKGEgIT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19sZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gb3BfcmVzdWx0IGFuZCBzZWxmICE9IG90aGVyCiAKLWRlZiBfZ3RfZnJvbV9sZShzZWxmLCBvdGhlcik6CitkZWYgX2d0X2Zyb21fbGUoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPiBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhIDw9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fbGVfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG5vdCBvcF9yZXN1bHQKIAotZGVmIF9sdF9mcm9tX2d0KHNlbGYsIG90aGVyKToKK2RlZiBfbHRfZnJvbV9ndChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPiBiKSBhbmQgKGEgIT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19ndF9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgogCi1kZWYgX2dlX2Zyb21fZ3Qoc2VsZiwgb3RoZXIpOgorZGVmIF9nZV9mcm9tX2d0KHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhID49IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAoYSA+IGIpIG9yIChhID09IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ3RfXyhvdGhlcikKICAgICByZXR1cm4gb3BfcmVzdWx0IG9yIHNlbGYgPT0gb3RoZXIKIAotZGVmIF9sZV9mcm9tX2d0KHNlbGYsIG90aGVyKToKK2RlZiBfbGVfZnJvbV9ndChzZWxmLCBvdGhlciwgTm90SW1wbGVtZW50ZWQ9Tm90SW1wbGVtZW50ZWQpOgogICAgICdSZXR1cm4gYSA8PSBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKG5vdCBhID4gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19ndF9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdAogCi1kZWYgX2xlX2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgorZGVmIF9sZV9mcm9tX2dlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDw9IGIuICBDb21wdXRlZCBieSBAdG90YWxfb3JkZXJpbmcgZnJvbSAobm90IGEgPj0gYikgb3IgKGEgPT0gYikuJwogICAgIG9wX3Jlc3VsdCA9IHNlbGYuX19nZV9fKG90aGVyKQogICAgIGlmIG9wX3Jlc3VsdCBpcyBOb3RJbXBsZW1lbnRlZDoKLSAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvcF9yZXN1bHQKICAgICByZXR1cm4gbm90IG9wX3Jlc3VsdCBvciBzZWxmID09IG90aGVyCiAKLWRlZiBfZ3RfZnJvbV9nZShzZWxmLCBvdGhlcik6CitkZWYgX2d0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIsIE5vdEltcGxlbWVudGVkPU5vdEltcGxlbWVudGVkKToKICAgICAnUmV0dXJuIGEgPiBiLiAgQ29tcHV0ZWQgYnkgQHRvdGFsX29yZGVyaW5nIGZyb20gKGEgPj0gYikgYW5kIChhICE9IGIpLicKICAgICBvcF9yZXN1bHQgPSBzZWxmLl9fZ2VfXyhvdGhlcikKICAgICBpZiBvcF9yZXN1bHQgaXMgTm90SW1wbGVtZW50ZWQ6Ci0gICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3BfcmVzdWx0CiAgICAgcmV0dXJuIG9wX3Jlc3VsdCBhbmQgc2VsZiAhPSBvdGhlcgogCi1kZWYgX2x0X2Zyb21fZ2Uoc2VsZiwgb3RoZXIpOgorZGVmIF9sdF9mcm9tX2dlKHNlbGYsIG90aGVyLCBOb3RJbXBsZW1lbnRlZD1Ob3RJbXBsZW1lbnRlZCk6CiAgICAgJ1JldHVybiBhIDwgYi4gIENvbXB1dGVkIGJ5IEB0b3RhbF9vcmRlcmluZyBmcm9tIChub3QgYSA+PSBiKS4nCiAgICAgb3BfcmVzdWx0ID0gc2VsZi5fX2dlX18ob3RoZXIpCiAgICAgaWYgb3BfcmVzdWx0IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG9wX3Jlc3VsdAogICAgIHJldHVybiBub3Qgb3BfcmVzdWx0CiAKK19jb252ZXJ0ID0geworICAgICdfX2x0X18nOiBbKCdfX2d0X18nLCBfZ3RfZnJvbV9sdCksCisgICAgICAgICAgICAgICAoJ19fbGVfXycsIF9sZV9mcm9tX2x0KSwKKyAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fbHQpXSwKKyAgICAnX19sZV9fJzogWygnX19nZV9fJywgX2dlX2Zyb21fbGUpLAorICAgICAgICAgICAgICAgKCdfX2x0X18nLCBfbHRfZnJvbV9sZSksCisgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2xlKV0sCisgICAgJ19fZ3RfXyc6IFsoJ19fbHRfXycsIF9sdF9mcm9tX2d0KSwKKyAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fZ3QpLAorICAgICAgICAgICAgICAgKCdfX2xlX18nLCBfbGVfZnJvbV9ndCldLAorICAgICdfX2dlX18nOiBbKCdfX2xlX18nLCBfbGVfZnJvbV9nZSksCisgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2dlKSwKKyAgICAgICAgICAgICAgICgnX19sdF9fJywgX2x0X2Zyb21fZ2UpXQorfQorCiBkZWYgdG90YWxfb3JkZXJpbmcoY2xzKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgdGhhdCBmaWxscyBpbiBtaXNzaW5nIG9yZGVyaW5nIG1ldGhvZHMiIiIKLSAgICBjb252ZXJ0ID0gewotICAgICAgICAnX19sdF9fJzogWygnX19ndF9fJywgX2d0X2Zyb21fbHQpLAotICAgICAgICAgICAgICAgICAgICgnX19sZV9fJywgX2xlX2Zyb21fbHQpLAotICAgICAgICAgICAgICAgICAgICgnX19nZV9fJywgX2dlX2Zyb21fbHQpXSwKLSAgICAgICAgJ19fbGVfXyc6IFsoJ19fZ2VfXycsIF9nZV9mcm9tX2xlKSwKLSAgICAgICAgICAgICAgICAgICAoJ19fbHRfXycsIF9sdF9mcm9tX2xlKSwKLSAgICAgICAgICAgICAgICAgICAoJ19fZ3RfXycsIF9ndF9mcm9tX2xlKV0sCi0gICAgICAgICdfX2d0X18nOiBbKCdfX2x0X18nLCBfbHRfZnJvbV9ndCksCi0gICAgICAgICAgICAgICAgICAgKCdfX2dlX18nLCBfZ2VfZnJvbV9ndCksCi0gICAgICAgICAgICAgICAgICAgKCdfX2xlX18nLCBfbGVfZnJvbV9ndCldLAotICAgICAgICAnX19nZV9fJzogWygnX19sZV9fJywgX2xlX2Zyb21fZ2UpLAotICAgICAgICAgICAgICAgICAgICgnX19ndF9fJywgX2d0X2Zyb21fZ2UpLAotICAgICAgICAgICAgICAgICAgICgnX19sdF9fJywgX2x0X2Zyb21fZ2UpXQotICAgIH0KICAgICAjIEZpbmQgdXNlci1kZWZpbmVkIGNvbXBhcmlzb25zIChub3QgdGhvc2UgaW5oZXJpdGVkIGZyb20gb2JqZWN0KS4KLSAgICByb290cyA9IFtvcCBmb3Igb3AgaW4gY29udmVydCBpZiBnZXRhdHRyKGNscywgb3AsIE5vbmUpIGlzIG5vdCBnZXRhdHRyKG9iamVjdCwgb3AsIE5vbmUpXQorICAgIHJvb3RzID0gW29wIGZvciBvcCBpbiBfY29udmVydCBpZiBnZXRhdHRyKGNscywgb3AsIE5vbmUpIGlzIG5vdCBnZXRhdHRyKG9iamVjdCwgb3AsIE5vbmUpXQogICAgIGlmIG5vdCByb290czoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbXVzdCBkZWZpbmUgYXQgbGVhc3Qgb25lIG9yZGVyaW5nIG9wZXJhdGlvbjogPCA+IDw9ID49JykKICAgICByb290ID0gbWF4KHJvb3RzKSAgICAgICAjIHByZWZlciBfX2x0X18gdG8gX19sZV9fIHRvIF9fZ3RfXyB0byBfX2dlX18KLSAgICBmb3Igb3BuYW1lLCBvcGZ1bmMgaW4gY29udmVydFtyb290XToKKyAgICBmb3Igb3BuYW1lLCBvcGZ1bmMgaW4gX2NvbnZlcnRbcm9vdF06CiAgICAgICAgIGlmIG9wbmFtZSBub3QgaW4gcm9vdHM6CiAgICAgICAgICAgICBvcGZ1bmMuX19uYW1lX18gPSBvcG5hbWUKICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBvcG5hbWUsIG9wZnVuYykKQEAgLTIyMiw4ICsyMjMsNiBAQAogICAgICAgICAgICAgcmV0dXJuIG15Y21wKHNlbGYub2JqLCBvdGhlci5vYmopIDw9IDAKICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICByZXR1cm4gbXljbXAoc2VsZi5vYmosIG90aGVyLm9iaikgPj0gMAotICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgICAgIHJldHVybiBteWNtcChzZWxmLm9iaiwgb3RoZXIub2JqKSAhPSAwCiAgICAgICAgIF9faGFzaF9fID0gTm9uZQogICAgIHJldHVybiBLCiAKQEAgLTI0Miw2ICsyNDEsMTQgQEAKICAgICAiIiJOZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZSBnaXZlbiBhcmd1bWVudHMKICAgICBhbmQga2V5d29yZHMuCiAgICAgIiIiCisgICAgaWYgaGFzYXR0cihmdW5jLCAnZnVuYycpOgorICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncworICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCisgICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAga2V5d29yZHMgPSB0bXBrdworICAgICAgICBkZWwgdG1wa3cKKyAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYworCiAgICAgZGVmIG5ld2Z1bmMoKmZhcmdzLCAqKmZrZXl3b3Jkcyk6CiAgICAgICAgIG5ld2tleXdvcmRzID0ga2V5d29yZHMuY29weSgpCiAgICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShma2V5d29yZHMpCkBAIC0yOTEsNyArMjk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICJ7bW9kdWxlfS57Y2xzfSh7ZnVuY30sIHthcmdzfSwge2tleXdvcmRzfSkiCiAgICAgICAgIHJldHVybiBmb3JtYXRfc3RyaW5nLmZvcm1hdChtb2R1bGU9c2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1zZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscz1zZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jPXNlbGYuZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzPWtleXdvcmRzKQpAQCAtNDEyLDEyMCArNDE5LDEyOSBAQAogICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKG1heHNpemUsIGludCk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgbWF4c2l6ZSB0byBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUnKQogCisgICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbik6CisgICAgICAgIHdyYXBwZXIgPSBfbHJ1X2NhY2hlX3dyYXBwZXIodXNlcl9mdW5jdGlvbiwgbWF4c2l6ZSwgdHlwZWQsIF9DYWNoZUluZm8pCisgICAgICAgIHJldHVybiB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB1c2VyX2Z1bmN0aW9uKQorCisgICAgcmV0dXJuIGRlY29yYXRpbmdfZnVuY3Rpb24KKworZGVmIF9scnVfY2FjaGVfd3JhcHBlcih1c2VyX2Z1bmN0aW9uLCBtYXhzaXplLCB0eXBlZCwgX0NhY2hlSW5mbyk6CiAgICAgIyBDb25zdGFudHMgc2hhcmVkIGJ5IGFsbCBscnUgY2FjaGUgaW5zdGFuY2VzOgogICAgIHNlbnRpbmVsID0gb2JqZWN0KCkgICAgICAgICAgIyB1bmlxdWUgb2JqZWN0IHVzZWQgdG8gc2lnbmFsIGNhY2hlIG1pc3NlcwogICAgIG1ha2Vfa2V5ID0gX21ha2Vfa2V5ICAgICAgICAgIyBidWlsZCBhIGtleSBmcm9tIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKICAgICBQUkVWLCBORVhULCBLRVksIFJFU1VMVCA9IDAsIDEsIDIsIDMgICAjIG5hbWVzIGZvciB0aGUgbGluayBmaWVsZHMKIAotICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24pOgotICAgICAgICBjYWNoZSA9IHt9Ci0gICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCi0gICAgICAgIGZ1bGwgPSBGYWxzZQotICAgICAgICBjYWNoZV9nZXQgPSBjYWNoZS5nZXQgICAgIyBib3VuZCBtZXRob2QgdG8gbG9va3VwIGEga2V5IG9yIHJldHVybiBOb25lCi0gICAgICAgIGxvY2sgPSBSTG9jaygpICAgICAgICAgICAjIGJlY2F1c2UgbGlua2VkbGlzdCB1cGRhdGVzIGFyZW4ndCB0aHJlYWRzYWZlCi0gICAgICAgIHJvb3QgPSBbXSAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgdGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdAotICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdICAgICAjIGluaXRpYWxpemUgYnkgcG9pbnRpbmcgdG8gc2VsZgorICAgIGNhY2hlID0ge30KKyAgICBoaXRzID0gbWlzc2VzID0gMAorICAgIGZ1bGwgPSBGYWxzZQorICAgIGNhY2hlX2dldCA9IGNhY2hlLmdldCAgICAjIGJvdW5kIG1ldGhvZCB0byBsb29rdXAgYSBrZXkgb3IgcmV0dXJuIE5vbmUKKyAgICBsb2NrID0gUkxvY2soKSAgICAgICAgICAgIyBiZWNhdXNlIGxpbmtlZGxpc3QgdXBkYXRlcyBhcmVuJ3QgdGhyZWFkc2FmZQorICAgIHJvb3QgPSBbXSAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgdGhlIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdAorICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCiAKLSAgICAgICAgaWYgbWF4c2l6ZSA9PSAwOgorICAgIGlmIG1heHNpemUgPT0gMDoKIAotICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgIyBObyBjYWNoaW5nIC0tIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbAotICAgICAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICMgTm8gY2FjaGluZyAtLSBqdXN0IGEgc3RhdGlzdGljcyB1cGRhdGUgYWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwKKyAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcworICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGVsaWYgbWF4c2l6ZSBpcyBOb25lOgorCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIyBTaW1wbGUgY2FjaGluZyB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKKyAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcworICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCisgICAgICAgICAgICByZXN1bHQgPSBjYWNoZV9nZXQoa2V5LCBzZW50aW5lbCkKKyAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3Qgc2VudGluZWw6CisgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQorICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAorICAgICAgICAgICAgbWlzc2VzICs9IDEKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgICAgICBlbGlmIG1heHNpemUgaXMgTm9uZToKKyAgICBlbHNlOgogCi0gICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2RzKToKLSAgICAgICAgICAgICAgICAjIFNpbXBsZSBjYWNoaW5nIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAotICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcwotICAgICAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlX2dldChrZXksIHNlbnRpbmVsKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3Qgc2VudGluZWw6CisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIyBTaXplIGxpbWl0ZWQgY2FjaGluZyB0aGF0IHRyYWNrcyBhY2Nlc3NlcyBieSByZWNlbmN5CisgICAgICAgICAgICBub25sb2NhbCByb290LCBoaXRzLCBtaXNzZXMsIGZ1bGwKKyAgICAgICAgICAgIGtleSA9IG1ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHR5cGVkKQorICAgICAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgICAgIGxpbmsgPSBjYWNoZV9nZXQoa2V5KQorICAgICAgICAgICAgICAgIGlmIGxpbmsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgTW92ZSB0aGUgbGluayB0byB0aGUgZnJvbnQgb2YgdGhlIGNpcmN1bGFyIHF1ZXVlCisgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldiwgbGlua19uZXh0LCBfa2V5LCByZXN1bHQgPSBsaW5rCisgICAgICAgICAgICAgICAgICAgIGxpbmtfcHJldltORVhUXSA9IGxpbmtfbmV4dAorICAgICAgICAgICAgICAgICAgICBsaW5rX25leHRbUFJFVl0gPSBsaW5rX3ByZXYKKyAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgIGxpbmtbUFJFVl0gPSBsYXN0CisgICAgICAgICAgICAgICAgICAgIGxpbmtbTkVYVF0gPSByb290CiAgICAgICAgICAgICAgICAgICAgIGhpdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByZXN1bHQKKyAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgICAgICMgR2V0dGluZyBoZXJlIG1lYW5zIHRoYXQgdGhpcyBzYW1lIGtleSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgU2luY2UgdGhlIGxpbmsKKyAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgaXMgYWxyZWFkeSBkb25lLCB3ZSBuZWVkIG9ubHkgcmV0dXJuIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbXB1dGVkIHJlc3VsdCBhbmQgdXBkYXRlIHRoZSBjb3VudCBvZiBtaXNzZXMuCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBlbGlmIGZ1bGw6CisgICAgICAgICAgICAgICAgICAgICMgVXNlIHRoZSBvbGQgcm9vdCB0byBzdG9yZSB0aGUgbmV3IGtleSBhbmQgcmVzdWx0LgorICAgICAgICAgICAgICAgICAgICBvbGRyb290ID0gcm9vdAorICAgICAgICAgICAgICAgICAgICBvbGRyb290W0tFWV0gPSBrZXkKKyAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtSRVNVTFRdID0gcmVzdWx0CisgICAgICAgICAgICAgICAgICAgICMgRW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdC4KKyAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBvbGQga2V5IGFuZCBvbGQgcmVzdWx0IHRvCisgICAgICAgICAgICAgICAgICAgICMgcHJldmVudCB0aGVpciByZWYgY291bnRzIGZyb20gZ29pbmcgdG8gemVybyBkdXJpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0CisgICAgICAgICAgICAgICAgICAgICMgY2xlYW4tdXAgY29kZSAoaS5lLiBfX2RlbF9fKSBmcm9tIHJ1bm5pbmcgd2hpbGUgd2UncmUKKyAgICAgICAgICAgICAgICAgICAgIyBzdGlsbCBhZGp1c3RpbmcgdGhlIGxpbmtzLgorICAgICAgICAgICAgICAgICAgICByb290ID0gb2xkcm9vdFtORVhUXQorICAgICAgICAgICAgICAgICAgICBvbGRrZXkgPSByb290W0tFWV0KKyAgICAgICAgICAgICAgICAgICAgb2xkcmVzdWx0ID0gcm9vdFtSRVNVTFRdCisgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IHJvb3RbUkVTVUxUXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgIyBOb3cgdXBkYXRlIHRoZSBjYWNoZSBkaWN0aW9uYXJ5LgorICAgICAgICAgICAgICAgICAgICBkZWwgY2FjaGVbb2xka2V5XQorICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIHBvdGVudGlhbGx5IHJlZW50cmFudCBjYWNoZVtrZXldIGFzc2lnbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFzdCwgYWZ0ZXIgdGhlIHJvb3QgYW5kIGxpbmtzIGhhdmUgYmVlbiBwdXQgaW4KKyAgICAgICAgICAgICAgICAgICAgIyBhIGNvbnNpc3RlbnQgc3RhdGUuCisgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBvbGRyb290CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBQdXQgcmVzdWx0IGluIGEgbmV3IGxpbmsgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZS4KKyAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgbGluayA9IFtsYXN0LCByb290LCBrZXksIHJlc3VsdF0KKyAgICAgICAgICAgICAgICAgICAgbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBjYWNoZVtrZXldID0gbGluaworICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGxlbihjYWNoZSkgPj0gbWF4c2l6ZSkKICAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgICAgICBlbHNlOgorICAgIGRlZiBjYWNoZV9pbmZvKCk6CisgICAgICAgICIiIlJlcG9ydCBjYWNoZSBzdGF0aXN0aWNzIiIiCisgICAgICAgIHdpdGggbG9jazoKKyAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgbGVuKGNhY2hlKSkKIAotICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6Ci0gICAgICAgICAgICAgICAgIyBTaXplIGxpbWl0ZWQgY2FjaGluZyB0aGF0IHRyYWNrcyBhY2Nlc3NlcyBieSByZWNlbmN5Ci0gICAgICAgICAgICAgICAgbm9ubG9jYWwgcm9vdCwgaGl0cywgbWlzc2VzLCBmdWxsCi0gICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCi0gICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICBsaW5rID0gY2FjaGVfZ2V0KGtleSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTW92ZSB0aGUgbGluayB0byB0aGUgZnJvbnQgb2YgdGhlIGNpcmN1bGFyIHF1ZXVlCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rX3ByZXYsIGxpbmtfbmV4dCwgX2tleSwgcmVzdWx0ID0gbGluawotICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2W05FWFRdID0gbGlua19uZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rX25leHRbUFJFVl0gPSBsaW5rX3ByZXYKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbUFJFVl0gPSBsYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5rW05FWFRdID0gcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9mdW5jdGlvbigqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgIHdpdGggbG9jazoKLSAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGNhY2hlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXR0aW5nIGhlcmUgbWVhbnMgdGhhdCB0aGlzIHNhbWUga2V5IHdhcyBhZGRlZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgY2FjaGUgd2hpbGUgdGhlIGxvY2sgd2FzIHJlbGVhc2VkLiAgU2luY2UgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlzIGFscmVhZHkgZG9uZSwgd2UgbmVlZCBvbmx5IHJldHVybiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgY29tcHV0ZWQgcmVzdWx0IGFuZCB1cGRhdGUgdGhlIGNvdW50IG9mIG1pc3Nlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmdWxsOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIG9sZCByb290IHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290ID0gcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcm9vdFtLRVldID0ga2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyb290W1JFU1VMVF0gPSByZXN1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgRW1wdHkgdGhlIG9sZGVzdCBsaW5rIGFuZCBtYWtlIGl0IHRoZSBuZXcgcm9vdC4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bwotICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuCi0gICAgICAgICAgICAgICAgICAgICAgICByb290ID0gb2xkcm9vdFtORVhUXQotICAgICAgICAgICAgICAgICAgICAgICAgb2xka2V5ID0gcm9vdFtLRVldCi0gICAgICAgICAgICAgICAgICAgICAgICBvbGRyZXN1bHQgPSByb290W1JFU1VMVF0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RbS0VZXSA9IHJvb3RbUkVTVUxUXSA9IE5vbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHVwZGF0ZSB0aGUgY2FjaGUgZGljdGlvbmFyeS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjYWNoZVtvbGRrZXldCi0gICAgICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIHBvdGVudGlhbGx5IHJlZW50cmFudCBjYWNoZVtrZXldIGFzc2lnbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhc3QsIGFmdGVyIHRoZSByb290IGFuZCBsaW5rcyBoYXZlIGJlZW4gcHV0IGluCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgY29uc2lzdGVudCBzdGF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSBvbGRyb290Ci0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB1dCByZXN1bHQgaW4gYSBuZXcgbGluayBhdCB0aGUgZnJvbnQgb2YgdGhlIHF1ZXVlLgotICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBbbGFzdCwgcm9vdCwga2V5LCByZXN1bHRdCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGNhY2hlW2tleV0gPSBsaW5rCi0gICAgICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGxlbihjYWNoZSkgPj0gbWF4c2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgbWlzc2VzICs9IDEKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZGVmIGNhY2hlX2NsZWFyKCk6CisgICAgICAgICIiIkNsZWFyIHRoZSBjYWNoZSBhbmQgY2FjaGUgc3RhdGlzdGljcyIiIgorICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGZ1bGwKKyAgICAgICAgd2l0aCBsb2NrOgorICAgICAgICAgICAgY2FjaGUuY2xlYXIoKQorICAgICAgICAgICAgcm9vdFs6XSA9IFtyb290LCByb290LCBOb25lLCBOb25lXQorICAgICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKKyAgICAgICAgICAgIGZ1bGwgPSBGYWxzZQogCi0gICAgICAgIGRlZiBjYWNoZV9pbmZvKCk6Ci0gICAgICAgICAgICAiIiJSZXBvcnQgY2FjaGUgc3RhdGlzdGljcyIiIgotICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgbGVuKGNhY2hlKSkKKyAgICB3cmFwcGVyLmNhY2hlX2luZm8gPSBjYWNoZV9pbmZvCisgICAgd3JhcHBlci5jYWNoZV9jbGVhciA9IGNhY2hlX2NsZWFyCisgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCiAKLSAgICAgICAgZGVmIGNhY2hlX2NsZWFyKCk6Ci0gICAgICAgICAgICAiIiJDbGVhciB0aGUgY2FjaGUgYW5kIGNhY2hlIHN0YXRpc3RpY3MiIiIKLSAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcywgZnVsbAotICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLSAgICAgICAgICAgICAgICByb290WzpdID0gW3Jvb3QsIHJvb3QsIE5vbmUsIE5vbmVdCi0gICAgICAgICAgICAgICAgaGl0cyA9IG1pc3NlcyA9IDAKLSAgICAgICAgICAgICAgICBmdWxsID0gRmFsc2UKLQotICAgICAgICB3cmFwcGVyLmNhY2hlX2luZm8gPSBjYWNoZV9pbmZvCi0gICAgICAgIHdyYXBwZXIuY2FjaGVfY2xlYXIgPSBjYWNoZV9jbGVhcgotICAgICAgICByZXR1cm4gdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgdXNlcl9mdW5jdGlvbikKLQotICAgIHJldHVybiBkZWNvcmF0aW5nX2Z1bmN0aW9uCit0cnk6CisgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBfbHJ1X2NhY2hlX3dyYXBwZXIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xpYi9nZW5lcmljcGF0aC5weSBiL0xpYi9nZW5lcmljcGF0aC5weQppbmRleCBjYTRhNTEwLi42NzE0MDYxIDEwMDY0NAotLS0gYS9MaWIvZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL2dlbmVyaWNwYXRoLnB5CkBAIC0xMzAsMyArMTMwLDE2IEBACiAgICAgICAgICAgICBmaWxlbmFtZUluZGV4ICs9IDEKIAogICAgIHJldHVybiBwLCBwWzowXQorCitkZWYgX2NoZWNrX2FyZ190eXBlcyhmdW5jbmFtZSwgKmFyZ3MpOgorICAgIGhhc3N0ciA9IGhhc2J5dGVzID0gRmFsc2UKKyAgICBmb3IgcyBpbiBhcmdzOgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgICAgICBoYXNzdHIgPSBUcnVlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CisgICAgICAgICAgICBoYXNieXRlcyA9IFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXMoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNuYW1lLCBzLl9fY2xhc3NfXy5fX25hbWVfXykpIGZyb20gTm9uZQorICAgIGlmIGhhc3N0ciBhbmQgaGFzYnl0ZXM6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIpIGZyb20gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2dldHRleHQucHkgYi9MaWIvZ2V0dGV4dC5weQppbmRleCA4Y2FmMWQxLi4xMDEzNzhmIDEwMDY0NAotLS0gYS9MaWIvZ2V0dGV4dC5weQorKysgYi9MaWIvZ2V0dGV4dC5weQpAQCAtMjI3LDYgKzIyNywxMyBAQAogICAgIExFX01BR0lDID0gMHg5NTA0MTJkZQogICAgIEJFX01BR0lDID0gMHhkZTEyMDQ5NQogCisgICAgIyBBY2NlcHRhYmxlIC5tbyB2ZXJzaW9ucworICAgIFZFUlNJT05TID0gKDAsIDEpCisKKyAgICBkZWYgX2dldF92ZXJzaW9ucyhzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxlIG9mIG1ham9yIHZlcnNpb24sIG1pbm9yIHZlcnNpb24iIiIKKyAgICAgICAgcmV0dXJuICh2ZXJzaW9uID4+IDE2LCB2ZXJzaW9uICYgMHhmZmZmKQorCiAgICAgZGVmIF9wYXJzZShzZWxmLCBmcCk6CiAgICAgICAgICIiIk92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgLm1vIGZvcm1hdHMuIiIiCiAgICAgICAgIHVucGFjayA9IHN0cnVjdC51bnBhY2sKQEAgLTI0Nyw2ICsyNTQsMTIgQEAKICAgICAgICAgICAgIGlpID0gJz5JSScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMCwgJ0JhZCBtYWdpYyBudW1iZXInLCBmaWxlbmFtZSkKKworICAgICAgICBtYWpvcl92ZXJzaW9uLCBtaW5vcl92ZXJzaW9uID0gc2VsZi5fZ2V0X3ZlcnNpb25zKHZlcnNpb24pCisKKyAgICAgICAgaWYgbWFqb3JfdmVyc2lvbiBub3QgaW4gc2VsZi5WRVJTSU9OUzoKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoMCwgJ0JhZCB2ZXJzaW9uIG51bWJlciAnICsgc3RyKG1ham9yX3ZlcnNpb24pLCBmaWxlbmFtZSkKKwogICAgICAgICAjIE5vdyBwdXQgYWxsIG1lc3NhZ2VzIGZyb20gdGhlIC5tbyBmaWxlIGJ1ZmZlciBpbnRvIHRoZSBjYXRhbG9nCiAgICAgICAgICMgZGljdGlvbmFyeS4KICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbXNnY291bnQpOgpkaWZmIC0tZ2l0IGEvTGliL2dsb2IucHkgYi9MaWIvZ2xvYi5weQppbmRleCBkNmVjYTI0Li41NmQ2NzA0IDEwMDY0NAotLS0gYS9MaWIvZ2xvYi5weQorKysgYi9MaWIvZ2xvYi5weQpAQCAtNiw3ICs2LDcgQEAKIAogX19hbGxfXyA9IFsiZ2xvYiIsICJpZ2xvYiJdCiAKLWRlZiBnbG9iKHBhdGhuYW1lKToKK2RlZiBnbG9iKHBhdGhuYW1lLCAqLCByZWN1cnNpdmU9RmFsc2UpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgcGF0aHMgbWF0Y2hpbmcgYSBwYXRobmFtZSBwYXR0ZXJuLgogCiAgICAgVGhlIHBhdHRlcm4gbWF5IGNvbnRhaW4gc2ltcGxlIHNoZWxsLXN0eWxlIHdpbGRjYXJkcyBhIGxhCkBAIC0xNCwxMCArMTQsMTIgQEAKICAgICBkb3QgYXJlIHNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgbm90IG1hdGNoZWQgYnkgJyonIGFuZCAnPycKICAgICBwYXR0ZXJucy4KIAorICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAorICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpc3QoaWdsb2IocGF0aG5hbWUpKQorICAgIHJldHVybiBsaXN0KGlnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmU9cmVjdXJzaXZlKSkKIAotZGVmIGlnbG9iKHBhdGhuYW1lKToKK2RlZiBpZ2xvYihwYXRobmFtZSwgKiwgcmVjdXJzaXZlPUZhbHNlKToKICAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igd2hpY2ggeWllbGRzIHRoZSBwYXRocyBtYXRjaGluZyBhIHBhdGhuYW1lIHBhdHRlcm4uCiAKICAgICBUaGUgcGF0dGVybiBtYXkgY29udGFpbiBzaW1wbGUgc2hlbGwtc3R5bGUgd2lsZGNhcmRzIGEgbGEKQEAgLTI1LDYgKzI3LDggQEAKICAgICBkb3QgYXJlIHNwZWNpYWwgY2FzZXMgdGhhdCBhcmUgbm90IG1hdGNoZWQgYnkgJyonIGFuZCAnPycKICAgICBwYXR0ZXJucy4KIAorICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAorICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCiAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgIGlmIG5vdCBoYXNfbWFnaWMocGF0aG5hbWUpOgpAQCAtMzcsMTcgKzQxLDIzIEBACiAgICAgICAgICAgICAgICAgeWllbGQgcGF0aG5hbWUKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGRpcm5hbWU6Ci0gICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoTm9uZSwgYmFzZW5hbWUpCisgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IxKGRpcm5hbWUsIGJhc2VuYW1lKQogICAgICAgICByZXR1cm4KICAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgdGhlIGFyZ3VtZW50IGl0c2VsZiBhcyBhIGRpcm5hbWUgaWYgaXQgaXMgYQogICAgICMgZHJpdmUgb3IgVU5DIHBhdGguICBQcmV2ZW50IGFuIGluZmluaXRlIHJlY3Vyc2lvbiBpZiBhIGRyaXZlIG9yIFVOQyBwYXRoCiAgICAgIyBjb250YWlucyBtYWdpYyBjaGFyYWN0ZXJzIChpLmUuIHInXFw/XEM6JykuCiAgICAgaWYgZGlybmFtZSAhPSBwYXRobmFtZSBhbmQgaGFzX21hZ2ljKGRpcm5hbWUpOgotICAgICAgICBkaXJzID0gaWdsb2IoZGlybmFtZSkKKyAgICAgICAgZGlycyA9IGlnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZT1yZWN1cnNpdmUpCiAgICAgZWxzZToKICAgICAgICAgZGlycyA9IFtkaXJuYW1lXQogICAgIGlmIGhhc19tYWdpYyhiYXNlbmFtZSk6Ci0gICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjEKKyAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMQogICAgIGVsc2U6CiAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjAKICAgICBmb3IgZGlybmFtZSBpbiBkaXJzOgpAQCAtODMsNiArOTMsMzQgQEAKICAgICAgICAgICAgIHJldHVybiBbYmFzZW5hbWVdCiAgICAgcmV0dXJuIFtdCiAKKyMgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsCisjIGRpcmVjdG9yeS4KKworZGVmIGdsb2IyKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKKyAgICBpZiBkaXJuYW1lOgorICAgICAgICB5aWVsZCBwYXR0ZXJuWzowXQorICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUpCisKKyMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KKworZGVmIF9ybGlzdGRpcihkaXJuYW1lKToKKyAgICBpZiBub3QgZGlybmFtZToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShkaXJuYW1lLCBieXRlcyk6CisgICAgICAgICAgICBkaXJuYW1lID0gYnl0ZXMob3MuY3VyZGlyLCAnQVNDSUknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLmN1cmRpcgorICAgIHRyeToKKyAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCisgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgeCBpbiBuYW1lczoKKyAgICAgICAgaWYgbm90IF9pc2hpZGRlbih4KToKKyAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgeCkgaWYgZGlybmFtZSBlbHNlIHgKKyAgICAgICAgICAgIGZvciB5IGluIF9ybGlzdGRpcihwYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oeCwgeSkKKwogCiBtYWdpY19jaGVjayA9IHJlLmNvbXBpbGUoJyhbKj9bXSknKQogbWFnaWNfY2hlY2tfYnl0ZXMgPSByZS5jb21waWxlKGInKFsqP1tdKScpCkBAIC05Nyw2ICsxMzUsMTIgQEAKIGRlZiBfaXNoaWRkZW4ocGF0aCk6CiAgICAgcmV0dXJuIHBhdGhbMF0gaW4gKCcuJywgYicuJ1swXSkKIAorZGVmIF9pc3JlY3Vyc2l2ZShwYXR0ZXJuKToKKyAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJ5dGVzKToKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT0gYicqKicKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcGF0dGVybiA9PSAnKionCisKIGRlZiBlc2NhcGUocGF0aG5hbWUpOgogICAgICIiIkVzY2FwZSBhbGwgc3BlY2lhbCBjaGFyYWN0ZXJzLgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2d6aXAucHkgYi9MaWIvZ3ppcC5weQppbmRleCA3YWQwMGUxLi40NTE1MmU0IDEwMDY0NAotLS0gYS9MaWIvZ3ppcC5weQorKysgYi9MaWIvZ3ppcC5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCB6bGliCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbworaW1wb3J0IF9jb21wcmVzc2lvbgogCiBfX2FsbF9fID0gWyJHemlwRmlsZSIsICJvcGVuIiwgImNvbXByZXNzIiwgImRlY29tcHJlc3MiXQogCkBAIC04OSw0OSArOTAsMzUgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXJbcmVhZDpdICsgXAogICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZS5yZWFkKHNpemUtc2VsZi5fbGVuZ3RoK3JlYWQpCiAKLSAgICBkZWYgcHJlcGVuZChzZWxmLCBwcmVwZW5kPWInJywgcmVhZHByZXZpb3VzPUZhbHNlKToKKyAgICBkZWYgcHJlcGVuZChzZWxmLCBwcmVwZW5kPWInJyk6CiAgICAgICAgIGlmIHNlbGYuX3JlYWQgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHByZXBlbmQKLSAgICAgICAgZWxpZiByZWFkcHJldmlvdXMgYW5kIGxlbihwcmVwZW5kKSA8PSBzZWxmLl9yZWFkOgorICAgICAgICBlbHNlOiAgIyBBc3N1bWUgZGF0YSB3YXMgcmVhZCBzaW5jZSB0aGUgbGFzdCBwcmVwZW5kKCkgY2FsbAogICAgICAgICAgICAgc2VsZi5fcmVhZCAtPSBsZW4ocHJlcGVuZCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NlbGYuX3JlYWQ6XSArIHByZXBlbmQKICAgICAgICAgc2VsZi5fbGVuZ3RoID0gbGVuKHNlbGYuX2J1ZmZlcikKICAgICAgICAgc2VsZi5fcmVhZCA9IDAKIAotICAgIGRlZiB1bnVzZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX3JlYWQgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBiJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9yZWFkOl0KLQotICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgotICAgICAgICAjIFRoaXMgaXMgb25seSBldmVyIGNhbGxlZCB3aXRoIG9mZnNldD13aGVuY2U9MAotICAgICAgICBpZiB3aGVuY2UgPT0gMSBhbmQgc2VsZi5fcmVhZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIDAgPD0gb2Zmc2V0ICsgc2VsZi5fcmVhZCA8PSBzZWxmLl9sZW5ndGg6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZCArPSBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbGYuX2xlbmd0aCAtIHNlbGYuX3JlYWQKKyAgICBkZWYgc2VlayhzZWxmLCBvZmYpOgogICAgICAgICBzZWxmLl9yZWFkID0gTm9uZQogICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLmZpbGUuc2VlayhvZmZzZXQsIHdoZW5jZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5zZWVrKG9mZikKIAotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5maWxlLCBuYW1lKQorICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUgICMgQWxsb3dzIGZhc3QtZm9yd2FyZGluZyBldmVuIGluIHVuc2Vla2FibGUgc3RyZWFtcwogCi0KLWNsYXNzIEd6aXBGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKK2NsYXNzIEd6aXBGaWxlKF9jb21wcmVzc2lvbi5CYXNlU3RyZWFtKToKICAgICAiIiJUaGUgR3ppcEZpbGUgY2xhc3Mgc2ltdWxhdGVzIG1vc3Qgb2YgdGhlIG1ldGhvZHMgb2YgYSBmaWxlIG9iamVjdCB3aXRoCi0gICAgdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcmVhZGludG8oKSBhbmQgdHJ1bmNhdGUoKSBtZXRob2RzLgorICAgIHRoZSBleGNlcHRpb24gb2YgdGhlIHRydW5jYXRlKCkgbWV0aG9kLgogCiAgICAgVGhpcyBjbGFzcyBvbmx5IHN1cHBvcnRzIG9wZW5pbmcgZmlsZXMgaW4gYmluYXJ5IG1vZGUuIElmIHlvdSBuZWVkIHRvIG9wZW4gYQogICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHVzZSB0aGUgZ3ppcC5vcGVuKCkgZnVuY3Rpb24uCiAKICAgICAiIiIKIAorICAgICMgT3ZlcnJpZGRlbiB3aXRoIGludGVybmFsIGZpbGUgb2JqZWN0IHRvIGJlIGNsb3NlZCwgaWYgb25seSBhIGZpbGVuYW1lCisgICAgIyBpcyBwYXNzZWQgaW4KICAgICBteWZpbGVvYmogPSBOb25lCi0gICAgbWF4X3JlYWRfY2h1bmsgPSAxMCAqIDEwMjQgKiAxMDI0ICAgIyAxME1iCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLAogICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSk6CkBAIC0xNjMsMTMgKzE1MCw4IEBACiAgICAgICAgIGF0IGFsbC4gVGhlIGRlZmF1bHQgaXMgOS4KIAogICAgICAgICBUaGUgbXRpbWUgYXJndW1lbnQgaXMgYW4gb3B0aW9uYWwgbnVtZXJpYyB0aW1lc3RhbXAgdG8gYmUgd3JpdHRlbgotICAgICAgICB0byB0aGUgc3RyZWFtIHdoZW4gY29tcHJlc3NpbmcuICBBbGwgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbXMKLSAgICAgICAgYXJlIHJlcXVpcmVkIHRvIGNvbnRhaW4gYSB0aW1lc3RhbXAuICBJZiBvbWl0dGVkIG9yIE5vbmUsIHRoZQotICAgICAgICBjdXJyZW50IHRpbWUgaXMgdXNlZC4gIFRoaXMgbW9kdWxlIGlnbm9yZXMgdGhlIHRpbWVzdGFtcCB3aGVuCi0gICAgICAgIGRlY29tcHJlc3Npbmc7IGhvd2V2ZXIsIHNvbWUgcHJvZ3JhbXMsIHN1Y2ggYXMgZ3VuemlwLCBtYWtlIHVzZQotICAgICAgICBvZiBpdC4gIFRoZSBmb3JtYXQgb2YgdGhlIHRpbWVzdGFtcCBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZQotICAgICAgICByZXR1cm4gdmFsdWUgb2YgdGltZS50aW1lKCkgYW5kIG9mIHRoZSBzdF9tdGltZSBtZW1iZXIgb2YgdGhlCi0gICAgICAgIG9iamVjdCByZXR1cm5lZCBieSBvcy5zdGF0KCkuCisgICAgICAgIHRvIHRoZSBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lIGZpZWxkIGluIHRoZSBzdHJlYW0gd2hlbiBjb21wcmVzc2luZy4KKyAgICAgICAgSWYgb21pdHRlZCBvciBOb25lLCB0aGUgY3VycmVudCB0aW1lIGlzIHVzZWQuCiAKICAgICAgICAgIiIiCiAKQEAgLTE4OCwxOCArMTcwLDkgQEAKIAogICAgICAgICBpZiBtb2RlLnN0YXJ0c3dpdGgoJ3InKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFJFQUQKLSAgICAgICAgICAgICMgU2V0IGZsYWcgaW5kaWNhdGluZyBzdGFydCBvZiBhIG5ldyBtZW1iZXIKLSAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCi0gICAgICAgICAgICAjIEJ1ZmZlciBkYXRhIHJlYWQgZnJvbSBnemlwIGZpbGUuIGV4dHJhc3RhcnQgaXMgb2Zmc2V0IGluCi0gICAgICAgICAgICAjIHN0cmVhbSB3aGVyZSBidWZmZXIgc3RhcnRzLiBleHRyYXNpemUgaXMgbnVtYmVyIG9mCi0gICAgICAgICAgICAjIGJ5dGVzIHJlbWFpbmluZyBpbiBidWZmZXIgZnJvbSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4KLSAgICAgICAgICAgIHNlbGYuZXh0cmFidWYgPSBiIiIKLSAgICAgICAgICAgIHNlbGYuZXh0cmFzaXplID0gMAotICAgICAgICAgICAgc2VsZi5leHRyYXN0YXJ0ID0gMAorICAgICAgICAgICAgcmF3ID0gX0d6aXBSZWFkZXIoZmlsZW9iaikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdykKICAgICAgICAgICAgIHNlbGYubmFtZSA9IGZpbGVuYW1lCi0gICAgICAgICAgICAjIFN0YXJ0cyBzbWFsbCwgc2NhbGVzIGV4cG9uZW50aWFsbHkKLSAgICAgICAgICAgIHNlbGYubWluX3JlYWRzaXplID0gMTAwCi0gICAgICAgICAgICBmaWxlb2JqID0gX1BhZGRlZEZpbGUoZmlsZW9iaikKIAogICAgICAgICBlbGlmIG1vZGUuc3RhcnRzd2l0aCgoJ3cnLCAnYScsICd4JykpOgogICAgICAgICAgICAgc2VsZi5tb2RlID0gV1JJVEUKQEAgLTIwOSwxMiArMTgyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhfV0JJVFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6bGliLkRFRl9NRU1fTEVWRUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfbXRpbWUgPSBtdGltZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKICAgICAgICAgc2VsZi5maWxlb2JqID0gZmlsZW9iagotICAgICAgICBzZWxmLm9mZnNldCA9IDAKLSAgICAgICAgc2VsZi5tdGltZSA9IG10aW1lCiAKICAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFOgogICAgICAgICAgICAgc2VsZi5fd3JpdGVfZ3ppcF9oZWFkZXIoKQpAQCAtMjI3LDI2ICsxOTksMjIgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbWUgKyAiLmd6IgogICAgICAgICByZXR1cm4gc2VsZi5uYW1lCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbXRpbWUoc2VsZik6CisgICAgICAgICIiIkxhc3QgbW9kaWZpY2F0aW9uIHRpbWUgcmVhZCBmcm9tIHN0cmVhbSwgb3IgTm9uZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnJhdy5fbGFzdF9tdGltZQorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBmaWxlb2JqID0gc2VsZi5maWxlb2JqCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW9iaiwgX1BhZGRlZEZpbGUpOgotICAgICAgICAgICAgZmlsZW9iaiA9IGZpbGVvYmouZmlsZQotICAgICAgICBzID0gcmVwcihmaWxlb2JqKQorICAgICAgICBzID0gcmVwcihzZWxmLmZpbGVvYmopCiAgICAgICAgIHJldHVybiAnPGd6aXAgJyArIHNbMTotMV0gKyAnICcgKyBoZXgoaWQoc2VsZikpICsgJz4nCiAKLSAgICBkZWYgX2NoZWNrX2Nsb3NlZChzZWxmKToKLSAgICAgICAgIiIiUmFpc2VzIGEgVmFsdWVFcnJvciBpZiB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCBoYXMgYmVlbiBjbG9zZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZS4nKQotCiAgICAgZGVmIF9pbml0X3dyaXRlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgc2VsZi5uYW1lID0gZmlsZW5hbWUKICAgICAgICAgc2VsZi5jcmMgPSB6bGliLmNyYzMyKGIiIikgJiAweGZmZmZmZmZmCiAgICAgICAgIHNlbGYuc2l6ZSA9IDAKICAgICAgICAgc2VsZi53cml0ZWJ1ZiA9IFtdCiAgICAgICAgIHNlbGYuYnVmc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5vZmZzZXQgPSAwICAjIEN1cnJlbnQgZmlsZSBvZmZzZXQgZm9yIHNlZWsoKSwgdGVsbCgpLCBldGMKIAogICAgIGRlZiBfd3JpdGVfZ3ppcF9oZWFkZXIoc2VsZik6CiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShiJ1wwMzdcMjEzJykgICAgICAgICAgICAgIyBtYWdpYyBoZWFkZXIKQEAgLTI2NSw3ICsyMzMsNyBAQAogICAgICAgICBpZiBmbmFtZToKICAgICAgICAgICAgIGZsYWdzID0gRk5BTUUKICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGNocihmbGFncykuZW5jb2RlKCdsYXRpbi0xJykpCi0gICAgICAgIG10aW1lID0gc2VsZi5tdGltZQorICAgICAgICBtdGltZSA9IHNlbGYuX3dyaXRlX210aW1lCiAgICAgICAgIGlmIG10aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBtdGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgIHdyaXRlMzJ1KHNlbGYuZmlsZW9iaiwgaW50KG10aW1lKSkKQEAgLTI3NCw1OSArMjQyLDggQEAKICAgICAgICAgaWYgZm5hbWU6CiAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoZm5hbWUgKyBiJ1wwMDAnKQogCi0gICAgZGVmIF9pbml0X3JlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpICYgMHhmZmZmZmZmZgotICAgICAgICBzZWxmLnNpemUgPSAwCi0KLSAgICBkZWYgX3JlYWRfZXhhY3Qoc2VsZiwgbik6Ci0gICAgICAgIGRhdGEgPSBzZWxmLmZpbGVvYmoucmVhZChuKQotICAgICAgICB3aGlsZSBsZW4oZGF0YSkgPCBuOgotICAgICAgICAgICAgYiA9IHNlbGYuZmlsZW9iai5yZWFkKG4gLSBsZW4oZGF0YSkpCi0gICAgICAgICAgICBpZiBub3QgYjoKLSAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCi0gICAgICAgICAgICBkYXRhICs9IGIKLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBfcmVhZF9nemlwX2hlYWRlcihzZWxmKToKLSAgICAgICAgbWFnaWMgPSBzZWxmLmZpbGVvYmoucmVhZCgyKQotICAgICAgICBpZiBtYWdpYyA9PSBiJyc6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBtYWdpYyAhPSBiJ1wwMzdcMjEzJzoKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05vdCBhIGd6aXBwZWQgZmlsZScpCi0KLSAgICAgICAgbWV0aG9kLCBmbGFnLCBzZWxmLm10aW1lID0gc3RydWN0LnVucGFjaygiPEJCSXh4Iiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKLSAgICAgICAgaWYgbWV0aG9kICE9IDg6Ci0gICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCcpCi0KLSAgICAgICAgaWYgZmxhZyAmIEZFWFRSQToKLSAgICAgICAgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIGV4dHJhIGZpZWxkLCBpZiBwcmVzZW50Ci0gICAgICAgICAgICBleHRyYV9sZW4sID0gc3RydWN0LnVucGFjaygiPEgiLCBzZWxmLl9yZWFkX2V4YWN0KDIpKQotICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdChleHRyYV9sZW4pCi0gICAgICAgIGlmIGZsYWcgJiBGTkFNRToKLSAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZmlsZW5hbWUKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgcyA9IHNlbGYuZmlsZW9iai5yZWFkKDEpCi0gICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgZmxhZyAmIEZDT01NRU5UOgotICAgICAgICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBjb250YWluaW5nIGEgY29tbWVudAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBzID0gc2VsZi5maWxlb2JqLnJlYWQoMSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBmbGFnICYgRkhDUkM6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkX2V4YWN0KDIpICAgICAjIFJlYWQgJiBkaXNjYXJkIHRoZSAxNi1iaXQgaGVhZGVyIENSQwotCi0gICAgICAgIHVudXNlZCA9IHNlbGYuZmlsZW9iai51bnVzZWQoKQotICAgICAgICBpZiB1bnVzZWQ6Ci0gICAgICAgICAgICB1bmNvbXByZXNzID0gc2VsZi5kZWNvbXByZXNzLmRlY29tcHJlc3ModW51c2VkKQotICAgICAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSh1bmNvbXByZXNzKQotICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIHdyaXRlKHNlbGYsZGF0YSk6Ci0gICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gV1JJVEU6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJ3cml0ZSgpIG9uIHJlYWQtb25seSBHemlwRmlsZSBvYmplY3QiKQpAQCAtMzM0LDE2NiArMjUxLDQ3IEBACiAgICAgICAgIGlmIHNlbGYuZmlsZW9iaiBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUoKSBvbiBjbG9zZWQgR3ppcEZpbGUgb2JqZWN0IikKIAotICAgICAgICAjIENvbnZlcnQgZGF0YSB0eXBlIGlmIGNhbGxlZCBieSBpby5CdWZmZXJlZFdyaXRlci4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBtZW1vcnl2aWV3KToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhLnRvYnl0ZXMoKQorICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJ5dGVzKToKKyAgICAgICAgICAgIGxlbmd0aCA9IGxlbihkYXRhKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBhY2NlcHQgYW55IGRhdGEgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sCisgICAgICAgICAgICBkYXRhID0gbWVtb3J5dmlldyhkYXRhKQorICAgICAgICAgICAgbGVuZ3RoID0gZGF0YS5uYnl0ZXMKIAotICAgICAgICBpZiBsZW4oZGF0YSkgPiAwOgorICAgICAgICBpZiBsZW5ndGggPiAwOgogICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHNlbGYuY29tcHJlc3MuY29tcHJlc3MoZGF0YSkpCi0gICAgICAgICAgICBzZWxmLnNpemUgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBzZWxmLnNpemUgKz0gbGVuZ3RoCiAgICAgICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5jcmMpICYgMHhmZmZmZmZmZgotICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBzZWxmLm9mZnNldCArPSBsZW5ndGgKIAotICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBsZW5ndGgKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5tb2RlICE9IFJFQUQ6CiAgICAgICAgICAgICBpbXBvcnQgZXJybm8KICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUJBREYsICJyZWFkKCkgb24gd3JpdGUtb25seSBHemlwRmlsZSBvYmplY3QiKQotCi0gICAgICAgIGlmIHNlbGYuZXh0cmFzaXplIDw9IDAgYW5kIHNlbGYuZmlsZW9iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGInJwotCi0gICAgICAgIHJlYWRzaXplID0gMTAyNAotICAgICAgICBpZiBzaXplIDwgMDogICAgICAgICMgZ2V0IHRoZSB3aG9sZSB0aGluZwotICAgICAgICAgICAgd2hpbGUgc2VsZi5fcmVhZChyZWFkc2l6ZSk6Ci0gICAgICAgICAgICAgICAgcmVhZHNpemUgPSBtaW4oc2VsZi5tYXhfcmVhZF9jaHVuaywgcmVhZHNpemUgKiAyKQotICAgICAgICAgICAgc2l6ZSA9IHNlbGYuZXh0cmFzaXplCi0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgIyBqdXN0IGdldCBzb21lIG1vcmUgb2YgaXQKLSAgICAgICAgICAgIHdoaWxlIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZChyZWFkc2l6ZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlYWRzaXplID0gbWluKHNlbGYubWF4X3JlYWRfY2h1bmssIHJlYWRzaXplICogMikKLQotICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICBjaHVuayA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBvZmZzZXQgKyBzaXplXQotICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IHNlbGYuZXh0cmFzaXplIC0gc2l6ZQotCi0gICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKLSAgICAgICAgcmV0dXJuIGNodW5rCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZChzaXplKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICAiIiJJbXBsZW1lbnRzIEJ1ZmZlcmVkSU9CYXNlLnJlYWQxKCkKKworICAgICAgICBSZWFkcyB1cCB0byBhIGJ1ZmZlcidzIHdvcnRoIG9mIGRhdGEgaXMgc2l6ZSBpcyBuZWdhdGl2ZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgogICAgICAgICAgICAgaW1wb3J0IGVycm5vCiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKGVycm5vLkVCQURGLCAicmVhZDEoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCiAKLSAgICAgICAgaWYgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5maWxlb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gYicnCi0KLSAgICAgICAgIyBGb3IgY2VydGFpbiBpbnB1dCBkYXRhLCBhIHNpbmdsZSBjYWxsIHRvIF9yZWFkKCkgbWF5IG5vdCByZXR1cm4KLSAgICAgICAgIyBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCByZXRyeSB1bnRpbCB3ZSBnZXQgc29tZSBkYXRhIG9yIHJlYWNoIEVPRi4KLSAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5fcmVhZCgpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBzaXplIDwgMCBvciBzaXplID4gc2VsZi5leHRyYXNpemU6Ci0gICAgICAgICAgICBzaXplID0gc2VsZi5leHRyYXNpemUKLQotICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICBjaHVuayA9IHNlbGYuZXh0cmFidWZbb2Zmc2V0OiBvZmZzZXQgKyBzaXplXQotICAgICAgICBzZWxmLmV4dHJhc2l6ZSAtPSBzaXplCi0gICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKLSAgICAgICAgcmV0dXJuIGNodW5rCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkMShzaXplKQogCiAgICAgZGVmIHBlZWsoc2VsZiwgbik6CisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FQkFERiwgInBlZWsoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCi0KLSAgICAgICAgIyBEbyBub3QgcmV0dXJuIHJpZGljdWxvdXNseSBzbWFsbCBidWZmZXJzLCBmb3Igb25lIGNvbW1vbiBpZGlvbQotICAgICAgICAjIGlzIHRvIGNhbGwgcGVlaygxKSBhbmQgZXhwZWN0IG1vcmUgYnl0ZXMgaW4gcmV0dXJuLgotICAgICAgICBpZiBuIDwgMTAwOgotICAgICAgICAgICAgbiA9IDEwMAotICAgICAgICBpZiBzZWxmLmV4dHJhc2l6ZSA9PSAwOgotICAgICAgICAgICAgaWYgc2VsZi5maWxlb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGInJwotICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkb24ndCByZXR1cm4gYiIiIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZCBFT0YuCi0gICAgICAgICAgICAjIDEwMjQgaXMgdGhlIHNhbWUgYnVmZmVyaW5nIGhldXJpc3RpYyB1c2VkIGluIHJlYWQoKQotICAgICAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPT0gMCBhbmQgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgLSBzZWxmLmV4dHJhc3RhcnQKLSAgICAgICAgcmVtYWluaW5nID0gc2VsZi5leHRyYXNpemUKLSAgICAgICAgYXNzZXJ0IHJlbWFpbmluZyA9PSBsZW4oc2VsZi5leHRyYWJ1ZikgLSBvZmZzZXQKLSAgICAgICAgcmV0dXJuIHNlbGYuZXh0cmFidWZbb2Zmc2V0Om9mZnNldCArIG5dCi0KLSAgICBkZWYgX3VucmVhZChzZWxmLCBidWYpOgotICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IGxlbihidWYpICsgc2VsZi5leHRyYXNpemUKLSAgICAgICAgc2VsZi5vZmZzZXQgLT0gbGVuKGJ1ZikKLQotICAgIGRlZiBfcmVhZChzZWxmLCBzaXplPTEwMjQpOgotICAgICAgICBpZiBzZWxmLmZpbGVvYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuX25ld19tZW1iZXI6Ci0gICAgICAgICAgICAjIElmIHRoZSBfbmV3X21lbWJlciBmbGFnIGlzIHNldCwgd2UgaGF2ZSB0bwotICAgICAgICAgICAgIyBqdW1wIHRvIHRoZSBuZXh0IG1lbWJlciwgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICAgICAgc2VsZi5faW5pdF9yZWFkKCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFkX2d6aXBfaGVhZGVyKCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBzZWxmLmRlY29tcHJlc3MgPSB6bGliLmRlY29tcHJlc3NvYmooLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IEZhbHNlCi0KLSAgICAgICAgIyBSZWFkIGEgY2h1bmsgb2YgZGF0YSBmcm9tIHRoZSBmaWxlCi0gICAgICAgIGJ1ZiA9IHNlbGYuZmlsZW9iai5yZWFkKHNpemUpCi0KLSAgICAgICAgIyBJZiB0aGUgRU9GIGhhcyBiZWVuIHJlYWNoZWQsIGZsdXNoIHRoZSBkZWNvbXByZXNzaW9uIG9iamVjdAotICAgICAgICAjIGFuZCBtYXJrIHRoaXMgb2JqZWN0IGFzIGZpbmlzaGVkLgotCi0gICAgICAgIGlmIGJ1ZiA9PSBiIiI6Ci0gICAgICAgICAgICB1bmNvbXByZXNzID0gc2VsZi5kZWNvbXByZXNzLmZsdXNoKCkKLSAgICAgICAgICAgICMgUHJlcGVuZCB0aGUgYWxyZWFkeSByZWFkIGJ5dGVzIHRvIHRoZSBmaWxlb2JqIHRvIHRoZXkgY2FuIGJlCi0gICAgICAgICAgICAjIHNlZW4gYnkgX3JlYWRfZW9mKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZW9iai5wcmVwZW5kKHNlbGYuZGVjb21wcmVzcy51bnVzZWRfZGF0YSwgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuX3JlYWRfZW9mKCkKLSAgICAgICAgICAgIHNlbGYuX2FkZF9yZWFkX2RhdGEoIHVuY29tcHJlc3MgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuZGVjb21wcmVzcy5kZWNvbXByZXNzKGJ1ZikKLSAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCi0KLSAgICAgICAgaWYgc2VsZi5kZWNvbXByZXNzLnVudXNlZF9kYXRhICE9IGIiIjoKLSAgICAgICAgICAgICMgRW5kaW5nIGNhc2U6IHdlJ3ZlIGNvbWUgdG8gdGhlIGVuZCBvZiBhIG1lbWJlciBpbiB0aGUgZmlsZSwKLSAgICAgICAgICAgICMgc28gc2VlayBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgdW51c2VkIGRhdGEsIGZpbmlzaCB1cAotICAgICAgICAgICAgIyB0aGlzIG1lbWJlciwgYW5kIHJlYWQgYSBuZXcgZ3ppcCBoZWFkZXIuCi0gICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiB0byB0aGV5IGNhbiBiZQotICAgICAgICAgICAgIyBzZWVuIGJ5IF9yZWFkX2VvZigpIGFuZCBfcmVhZF9nemlwX2hlYWRlcigpCi0gICAgICAgICAgICBzZWxmLmZpbGVvYmoucHJlcGVuZChzZWxmLmRlY29tcHJlc3MudW51c2VkX2RhdGEsIFRydWUpCi0gICAgICAgICAgICAjIENoZWNrIHRoZSBDUkMgYW5kIGZpbGUgc2l6ZSwgYW5kIHNldCB0aGUgZmxhZyBzbyB3ZSByZWFkCi0gICAgICAgICAgICAjIGEgbmV3IG1lbWJlciBvbiB0aGUgbmV4dCBjYWxsCi0gICAgICAgICAgICBzZWxmLl9yZWFkX2VvZigpCi0gICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9hZGRfcmVhZF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmNyYyA9IHpsaWIuY3JjMzIoZGF0YSwgc2VsZi5jcmMpICYgMHhmZmZmZmZmZgotICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydAotICAgICAgICBzZWxmLmV4dHJhYnVmID0gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6XSArIGRhdGEKLSAgICAgICAgc2VsZi5leHRyYXNpemUgPSBzZWxmLmV4dHJhc2l6ZSArIGxlbihkYXRhKQotICAgICAgICBzZWxmLmV4dHJhc3RhcnQgPSBzZWxmLm9mZnNldAotICAgICAgICBzZWxmLnNpemUgPSBzZWxmLnNpemUgKyBsZW4oZGF0YSkKLQotICAgIGRlZiBfcmVhZF9lb2Yoc2VsZik6Ci0gICAgICAgICMgV2UndmUgcmVhZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlCi0gICAgICAgICMgV2UgY2hlY2sgdGhlIHRoYXQgdGhlIGNvbXB1dGVkIENSQyBhbmQgc2l6ZSBvZiB0aGUKLSAgICAgICAgIyB1bmNvbXByZXNzZWQgZGF0YSBtYXRjaGVzIHRoZSBzdG9yZWQgdmFsdWVzLiAgTm90ZSB0aGF0IHRoZSBzaXplCi0gICAgICAgICMgc3RvcmVkIGlzIHRoZSB0cnVlIGZpbGUgc2l6ZSBtb2QgMioqMzIuCi0gICAgICAgIGNyYzMyLCBpc2l6ZSA9IHN0cnVjdC51bnBhY2soIjxJSSIsIHNlbGYuX3JlYWRfZXhhY3QoOCkpCi0gICAgICAgIGlmIGNyYzMyICE9IHNlbGYuY3JjOgotICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiQ1JDIGNoZWNrIGZhaWxlZCAlcyAhPSAlcyIgJSAoaGV4KGNyYzMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleChzZWxmLmNyYykpKQotICAgICAgICBlbGlmIGlzaXplICE9IChzZWxmLnNpemUgJiAweGZmZmZmZmZmKToKLSAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkluY29ycmVjdCBsZW5ndGggb2YgZGF0YSBwcm9kdWNlZCIpCi0KLSAgICAgICAgIyBHemlwIGZpbGVzIGNhbiBiZSBwYWRkZWQgd2l0aCB6ZXJvZXMgYW5kIHN0aWxsIGhhdmUgYXJjaGl2ZXMuCi0gICAgICAgICMgQ29uc3VtZSBhbGwgemVybyBieXRlcyBhbmQgc2V0IHRoZSBmaWxlIHBvc2l0aW9uIHRvIHRoZSBmaXJzdAotICAgICAgICAjIG5vbi16ZXJvIGJ5dGUuIFNlZSBodHRwOi8vd3d3Lmd6aXAub3JnLyNmYXE4Ci0gICAgICAgIGMgPSBiIlx4MDAiCi0gICAgICAgIHdoaWxlIGMgPT0gYiJceDAwIjoKLSAgICAgICAgICAgIGMgPSBzZWxmLmZpbGVvYmoucmVhZCgxKQotICAgICAgICBpZiBjOgotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnByZXBlbmQoYywgVHJ1ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5wZWVrKG4pCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY2xvc2VkKHNlbGYpOgpAQCAtNTEwLDYgKzMwOCw4IEBACiAgICAgICAgICAgICAgICAgd3JpdGUzMnUoZmlsZW9iaiwgc2VsZi5jcmMpCiAgICAgICAgICAgICAgICAgIyBzZWxmLnNpemUgbWF5IGV4Y2VlZCAyR0IsIG9yIGV2ZW4gNEdCCiAgICAgICAgICAgICAgICAgd3JpdGUzMnUoZmlsZW9iaiwgc2VsZi5zaXplICYgMHhmZmZmZmZmZikKKyAgICAgICAgICAgIGVsaWYgc2VsZi5tb2RlID09IFJFQUQ6CisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmNsb3NlKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG15ZmlsZW9iaiA9IHNlbGYubXlmaWxlb2JqCiAgICAgICAgICAgICBpZiBteWZpbGVvYmo6CkBAIC01MTcsNyArMzE3LDcgQEAKICAgICAgICAgICAgICAgICBteWZpbGVvYmouY2xvc2UoKQogCiAgICAgZGVmIGZsdXNoKHNlbGYsemxpYl9tb2RlPXpsaWIuWl9TWU5DX0ZMVVNIKToKLSAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYubW9kZSA9PSBXUklURToKICAgICAgICAgICAgICMgRW5zdXJlIHRoZSBjb21wcmVzc29yJ3MgYnVmZmVyIGlzIGZsdXNoZWQKICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShzZWxmLmNvbXByZXNzLmZsdXNoKHpsaWJfbW9kZSkpCkBAIC01MzYsMTIgKzMzNiw3IEBACiAgICAgICAgIGJlZ2lubmluZyBvZiB0aGUgZmlsZScnJwogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIkNhbid0IHJld2luZCBpbiB3cml0ZSBtb2RlIikKLSAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKLSAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKLSAgICAgICAgc2VsZi5leHRyYWJ1ZiA9IGIiIgotICAgICAgICBzZWxmLmV4dHJhc2l6ZSA9IDAKLSAgICAgICAgc2VsZi5leHRyYXN0YXJ0ID0gMAotICAgICAgICBzZWxmLm9mZnNldCA9IDAKKyAgICAgICAgc2VsZi5fYnVmZmVyLnNlZWsoMCkKIAogICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubW9kZSA9PSBSRUFECkBAIC01NTIsMTMgKzM0NywxMyBAQAogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgotICAgICAgICBpZiB3aGVuY2U6Ci0gICAgICAgICAgICBpZiB3aGVuY2UgPT0gMToKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCArIG9mZnNldAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTZWVrIGZyb20gZW5kIG5vdCBzdXBwb3J0ZWQnKQorICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAgaWYgc2VsZi5tb2RlID09IFdSSVRFOgorICAgICAgICAgICAgaWYgd2hlbmNlICE9IGlvLlNFRUtfU0VUOgorICAgICAgICAgICAgICAgIGlmIHdoZW5jZSA9PSBpby5TRUVLX0NVUjoKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQgKyBvZmZzZXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdTZWVrIGZyb20gZW5kIG5vdCBzdXBwb3J0ZWQnKQogICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgc2VlayBpbiB3cml0ZSBtb2RlJykKICAgICAgICAgICAgIGNvdW50ID0gb2Zmc2V0IC0gc2VsZi5vZmZzZXQKQEAgLTU2Nyw1NSArMzYyLDE1NiBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoY2h1bmspCiAgICAgICAgICAgICBzZWxmLndyaXRlKGJ5dGVzKGNvdW50ICUgMTAyNCkpCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlID09IFJFQUQ6Ci0gICAgICAgICAgICBpZiBvZmZzZXQgPCBzZWxmLm9mZnNldDoKLSAgICAgICAgICAgICAgICAjIGZvciBuZWdhdGl2ZSBzZWVrLCByZXdpbmQgYW5kIGRvIHBvc2l0aXZlIHNlZWsKLSAgICAgICAgICAgICAgICBzZWxmLnJld2luZCgpCi0gICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0Ci0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCAvLyAxMDI0KToKLSAgICAgICAgICAgICAgICBzZWxmLnJlYWQoMTAyNCkKLSAgICAgICAgICAgIHNlbGYucmVhZChjb3VudCAlIDEwMjQpCisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIuc2VlayhvZmZzZXQsIHdoZW5jZSkKIAogICAgICAgICByZXR1cm4gc2VsZi5vZmZzZXQKIAogICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZGxpbmUoc2l6ZSkKKworCitjbGFzcyBfR3ppcFJlYWRlcihfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZwKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhfUGFkZGVkRmlsZShmcCksIHpsaWIuZGVjb21wcmVzc29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz0temxpYi5NQVhfV0JJVFMpCisgICAgICAgICMgU2V0IGZsYWcgaW5kaWNhdGluZyBzdGFydCBvZiBhIG5ldyBtZW1iZXIKKyAgICAgICAgc2VsZi5fbmV3X21lbWJlciA9IFRydWUKKyAgICAgICAgc2VsZi5fbGFzdF9tdGltZSA9IE5vbmUKKworICAgIGRlZiBfaW5pdF9yZWFkKHNlbGYpOgorICAgICAgICBzZWxmLl9jcmMgPSB6bGliLmNyYzMyKGIiIikgJiAweGZmZmZmZmZmCisgICAgICAgIHNlbGYuX3N0cmVhbV9zaXplID0gMCAgIyBEZWNvbXByZXNzZWQgc2l6ZSBvZiB1bmNvbmNhdGVuYXRlZCBzdHJlYW0KKworICAgIGRlZiBfcmVhZF9leGFjdChzZWxmLCBuKToKKyAgICAgICAgJycnUmVhZCBleGFjdGx5ICpuKiBieXRlcyBmcm9tIGBzZWxmLl9mcGAKKworICAgICAgICBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBiZWNhdXNlIHNlbGYuX2ZwIG1heSBiZSB1bmJ1ZmZlcmVkLAorICAgICAgICBpLmUuIHJldHVybiBzaG9ydCByZWFkcy4KKyAgICAgICAgJycnCisKKyAgICAgICAgZGF0YSA9IHNlbGYuX2ZwLnJlYWQobikKKyAgICAgICAgd2hpbGUgbGVuKGRhdGEpIDwgbjoKKyAgICAgICAgICAgIGIgPSBzZWxmLl9mcC5yZWFkKG4gLSBsZW4oZGF0YSkpCisgICAgICAgICAgICBpZiBub3QgYjoKKyAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCisgICAgICAgICAgICBkYXRhICs9IGIKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBfcmVhZF9nemlwX2hlYWRlcihzZWxmKToKKyAgICAgICAgbWFnaWMgPSBzZWxmLl9mcC5yZWFkKDIpCisgICAgICAgIGlmIG1hZ2ljID09IGInJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIG1hZ2ljICE9IGInXDAzN1wyMTMnOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTm90IGEgZ3ppcHBlZCBmaWxlICglciknICUgbWFnaWMpCisKKyAgICAgICAgKG1ldGhvZCwgZmxhZywKKyAgICAgICAgIHNlbGYuX2xhc3RfbXRpbWUpID0gc3RydWN0LnVucGFjaygiPEJCSXh4Iiwgc2VsZi5fcmVhZF9leGFjdCg4KSkKKyAgICAgICAgaWYgbWV0aG9kICE9IDg6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCdVbmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCcpCisKKyAgICAgICAgaWYgZmxhZyAmIEZFWFRSQToKKyAgICAgICAgICAgICMgUmVhZCAmIGRpc2NhcmQgdGhlIGV4dHJhIGZpZWxkLCBpZiBwcmVzZW50CisgICAgICAgICAgICBleHRyYV9sZW4sID0gc3RydWN0LnVucGFjaygiPEgiLCBzZWxmLl9yZWFkX2V4YWN0KDIpKQorICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdChleHRyYV9sZW4pCisgICAgICAgIGlmIGZsYWcgJiBGTkFNRToKKyAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgY29udGFpbmluZyB0aGUgZmlsZW5hbWUKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuX2ZwLnJlYWQoMSkKKyAgICAgICAgICAgICAgICBpZiBub3QgcyBvciBzPT1iJ1wwMDAnOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBmbGFnICYgRkNPTU1FTlQ6CisgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgYSBjb21tZW50CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLl9mcC5yZWFkKDEpCisgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcz09YidcMDAwJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZmxhZyAmIEZIQ1JDOgorICAgICAgICAgICAgc2VsZi5fcmVhZF9leGFjdCgyKSAgICAgIyBSZWFkICYgZGlzY2FyZCB0aGUgMTYtYml0IGhlYWRlciBDUkMKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgogICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgICMgU2hvcnRjdXQgY29tbW9uIGNhc2UgLSBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlci4KLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0Ci0gICAgICAgICAgICBpID0gc2VsZi5leHRyYWJ1Zi5maW5kKGInXG4nLCBvZmZzZXQpICsgMQotICAgICAgICAgICAgaWYgaSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5leHRyYXNpemUgLT0gaSAtIG9mZnNldAotICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGkgLSBvZmZzZXQKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6IGldCisgICAgICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWxsKCkKKyAgICAgICAgIyBzaXplPTAgaXMgc3BlY2lhbCBiZWNhdXNlIGRlY29tcHJlc3MobWF4X2xlbmd0aD0wKSBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgIGlmIG5vdCBzaXplOgorICAgICAgICAgICAgcmV0dXJuIGIiIgogCi0gICAgICAgICAgICBzaXplID0gc3lzLm1heHNpemUKLSAgICAgICAgICAgIHJlYWRzaXplID0gc2VsZi5taW5fcmVhZHNpemUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlYWRzaXplID0gc2l6ZQotICAgICAgICBidWZzID0gW10KLSAgICAgICAgd2hpbGUgc2l6ZSAhPSAwOgotICAgICAgICAgICAgYyA9IHNlbGYucmVhZChyZWFkc2l6ZSkKLSAgICAgICAgICAgIGkgPSBjLmZpbmQoYidcbicpCisgICAgICAgICMgRm9yIGNlcnRhaW4gaW5wdXQgZGF0YSwgYSBzaW5nbGUKKyAgICAgICAgIyBjYWxsIHRvIGRlY29tcHJlc3MoKSBtYXkgbm90IHJldHVybgorICAgICAgICAjIGFueSBkYXRhLiBJbiB0aGlzIGNhc2UsIHJldHJ5IHVudGlsIHdlIGdldCBzb21lIGRhdGEgb3IgcmVhY2ggRU9GLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAjIEVuZGluZyBjYXNlOiB3ZSd2ZSBjb21lIHRvIHRoZSBlbmQgb2YgYSBtZW1iZXIgaW4gdGhlIGZpbGUsCisgICAgICAgICAgICAgICAgIyBzbyBmaW5pc2ggdXAgdGhpcyBtZW1iZXIsIGFuZCByZWFkIGEgbmV3IGd6aXAgaGVhZGVyLgorICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIENSQyBhbmQgZmlsZSBzaXplLCBhbmQgc2V0IHRoZSBmbGFnIHNvIHdlIHJlYWQKKyAgICAgICAgICAgICAgICAjIGEgbmV3IG1lbWJlcgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfZW9mKCkKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHNlbGYuX2RlY29tcF9mYWN0b3J5KAorICAgICAgICAgICAgICAgICAgICAqKnNlbGYuX2RlY29tcF9hcmdzKQogCi0gICAgICAgICAgICAjIFdlIHNldCBpPXNpemUgdG8gYnJlYWsgb3V0IG9mIHRoZSBsb29wIHVuZGVyIHR3bwotICAgICAgICAgICAgIyBjb25kaXRpb25zOiAxKSB0aGVyZSdzIG5vIG5ld2xpbmUsIGFuZCB0aGUgY2h1bmsgaXMKLSAgICAgICAgICAgICMgbGFyZ2VyIHRoYW4gc2l6ZSwgb3IgMikgdGhlcmUgaXMgYSBuZXdsaW5lLCBidXQgdGhlCi0gICAgICAgICAgICAjIHJlc3VsdGluZyBsaW5lIHdvdWxkIGJlIGxvbmdlciB0aGFuICdzaXplJy4KLSAgICAgICAgICAgIGlmIChzaXplIDw9IGkpIG9yIChpID09IC0xIGFuZCBsZW4oYykgPiBzaXplKToKLSAgICAgICAgICAgICAgICBpID0gc2l6ZSAtIDEKKyAgICAgICAgICAgIGlmIHNlbGYuX25ld19tZW1iZXI6CisgICAgICAgICAgICAgICAgIyBJZiB0aGUgX25ld19tZW1iZXIgZmxhZyBpcyBzZXQsIHdlIGhhdmUgdG8KKyAgICAgICAgICAgICAgICAjIGp1bXAgdG8gdGhlIG5leHQgbWVtYmVyLCBpZiB0aGVyZSBpcyBvbmUuCisgICAgICAgICAgICAgICAgc2VsZi5faW5pdF9yZWFkKCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZF9nemlwX2hlYWRlcigpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gRmFsc2UKIAotICAgICAgICAgICAgaWYgaSA+PSAwIG9yIGMgPT0gYicnOgotICAgICAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGNbOmkgKyAxXSkgICAgIyBBZGQgcG9ydGlvbiBvZiBsYXN0IGNodW5rCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5yZWFkKGNbaSArIDE6XSkgICAjIFB1c2ggYmFjayByZXN0IG9mIGNodW5rCisgICAgICAgICAgICAjIFJlYWQgYSBjaHVuayBvZiBkYXRhIGZyb20gdGhlIGZpbGUKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2ZwLnJlYWQoaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKKworICAgICAgICAgICAgdW5jb21wcmVzcyA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKGJ1Ziwgc2l6ZSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bmNvbnN1bWVkX3RhaWwgIT0gYiIiOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhICE9IGIiIjoKKyAgICAgICAgICAgICAgICAjIFByZXBlbmQgdGhlIGFscmVhZHkgcmVhZCBieXRlcyB0byB0aGUgZmlsZW9iaiBzbyB0aGV5IGNhbgorICAgICAgICAgICAgICAgICMgYmUgc2VlbiBieSBfcmVhZF9lb2YoKSBhbmQgX3JlYWRfZ3ppcF9oZWFkZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhKQorCisgICAgICAgICAgICBpZiB1bmNvbXByZXNzICE9IGIiIjoKICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgYnVmID09IGIiIjoKKyAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmQtb2Ytc3RyZWFtIG1hcmtlciB3YXMgcmVhY2hlZCIpCiAKLSAgICAgICAgICAgICMgQXBwZW5kIGNodW5rIHRvIGxpc3QsIGRlY3JlYXNlICdzaXplJywKLSAgICAgICAgICAgIGJ1ZnMuYXBwZW5kKGMpCi0gICAgICAgICAgICBzaXplID0gc2l6ZSAtIGxlbihjKQotICAgICAgICAgICAgcmVhZHNpemUgPSBtaW4oc2l6ZSwgcmVhZHNpemUgKiAyKQotICAgICAgICBpZiByZWFkc2l6ZSA+IHNlbGYubWluX3JlYWRzaXplOgotICAgICAgICAgICAgc2VsZi5taW5fcmVhZHNpemUgPSBtaW4ocmVhZHNpemUsIHNlbGYubWluX3JlYWRzaXplICogMiwgNTEyKQotICAgICAgICByZXR1cm4gYicnLmpvaW4oYnVmcykgIyBSZXR1cm4gcmVzdWx0aW5nIGxpbmUKKyAgICAgICAgc2VsZi5fYWRkX3JlYWRfZGF0YSggdW5jb21wcmVzcyApCisgICAgICAgIHNlbGYuX3BvcyArPSBsZW4odW5jb21wcmVzcykKKyAgICAgICAgcmV0dXJuIHVuY29tcHJlc3MKIAorICAgIGRlZiBfYWRkX3JlYWRfZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5fY3JjID0gemxpYi5jcmMzMihkYXRhLCBzZWxmLl9jcmMpICYgMHhmZmZmZmZmZgorICAgICAgICBzZWxmLl9zdHJlYW1fc2l6ZSA9IHNlbGYuX3N0cmVhbV9zaXplICsgbGVuKGRhdGEpCisKKyAgICBkZWYgX3JlYWRfZW9mKHNlbGYpOgorICAgICAgICAjIFdlJ3ZlIHJlYWQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZQorICAgICAgICAjIFdlIGNoZWNrIHRoZSB0aGF0IHRoZSBjb21wdXRlZCBDUkMgYW5kIHNpemUgb2YgdGhlCisgICAgICAgICMgdW5jb21wcmVzc2VkIGRhdGEgbWF0Y2hlcyB0aGUgc3RvcmVkIHZhbHVlcy4gIE5vdGUgdGhhdCB0aGUgc2l6ZQorICAgICAgICAjIHN0b3JlZCBpcyB0aGUgdHJ1ZSBmaWxlIHNpemUgbW9kIDIqKjMyLgorICAgICAgICBjcmMzMiwgaXNpemUgPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBzZWxmLl9yZWFkX2V4YWN0KDgpKQorICAgICAgICBpZiBjcmMzMiAhPSBzZWxmLl9jcmM6CisgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJDUkMgY2hlY2sgZmFpbGVkICVzICE9ICVzIiAlIChoZXgoY3JjMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4KHNlbGYuX2NyYykpKQorICAgICAgICBlbGlmIGlzaXplICE9IChzZWxmLl9zdHJlYW1fc2l6ZSAmIDB4ZmZmZmZmZmYpOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigiSW5jb3JyZWN0IGxlbmd0aCBvZiBkYXRhIHByb2R1Y2VkIikKKworICAgICAgICAjIEd6aXAgZmlsZXMgY2FuIGJlIHBhZGRlZCB3aXRoIHplcm9lcyBhbmQgc3RpbGwgaGF2ZSBhcmNoaXZlcy4KKyAgICAgICAgIyBDb25zdW1lIGFsbCB6ZXJvIGJ5dGVzIGFuZCBzZXQgdGhlIGZpbGUgcG9zaXRpb24gdG8gdGhlIGZpcnN0CisgICAgICAgICMgbm9uLXplcm8gYnl0ZS4gU2VlIGh0dHA6Ly93d3cuZ3ppcC5vcmcvI2ZhcTgKKyAgICAgICAgYyA9IGIiXHgwMCIKKyAgICAgICAgd2hpbGUgYyA9PSBiIlx4MDAiOgorICAgICAgICAgICAgYyA9IHNlbGYuX2ZwLnJlYWQoMSkKKyAgICAgICAgaWYgYzoKKyAgICAgICAgICAgIHNlbGYuX2ZwLnByZXBlbmQoYykKKworICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzdXBlcigpLl9yZXdpbmQoKQorICAgICAgICBzZWxmLl9uZXdfbWVtYmVyID0gVHJ1ZQogCiBkZWYgY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KToKICAgICAiIiJDb21wcmVzcyBkYXRhIGluIG9uZSBzaG90IGFuZCByZXR1cm4gdGhlIGNvbXByZXNzZWQgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvTGliL2hlYXBxLnB5IGIvTGliL2hlYXBxLnB5CmluZGV4IGQ2MTUyMzkuLjA3YWYzN2UgMTAwNjQ0Ci0tLSBhL0xpYi9oZWFwcS5weQorKysgYi9MaWIvaGVhcHEucHkKQEAgLTEyNyw4ICsxMjcsNiBAQAogX19hbGxfXyA9IFsnaGVhcHB1c2gnLCAnaGVhcHBvcCcsICdoZWFwaWZ5JywgJ2hlYXByZXBsYWNlJywgJ21lcmdlJywKICAgICAgICAgICAgJ25sYXJnZXN0JywgJ25zbWFsbGVzdCcsICdoZWFwcHVzaHBvcCddCiAKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UsIGNvdW50LCB0ZWUsIGNoYWluCi0KIGRlZiBoZWFwcHVzaChoZWFwLCBpdGVtKToKICAgICAiIiJQdXNoIGl0ZW0gb250byBoZWFwLCBtYWludGFpbmluZyB0aGUgaGVhcCBpbnZhcmlhbnQuIiIiCiAgICAgaGVhcC5hcHBlbmQoaXRlbSkKQEAgLTE0MSw5ICsxMzksOCBAQAogICAgICAgICByZXR1cm5pdGVtID0gaGVhcFswXQogICAgICAgICBoZWFwWzBdID0gbGFzdGVsdAogICAgICAgICBfc2lmdHVwKGhlYXAsIDApCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuaXRlbSA9IGxhc3RlbHQKLSAgICByZXR1cm4gcmV0dXJuaXRlbQorICAgICAgICByZXR1cm4gcmV0dXJuaXRlbQorICAgIHJldHVybiBsYXN0ZWx0CiAKIGRlZiBoZWFwcmVwbGFjZShoZWFwLCBpdGVtKToKICAgICAiIiJQb3AgYW5kIHJldHVybiB0aGUgY3VycmVudCBzbWFsbGVzdCB2YWx1ZSwgYW5kIGFkZCB0aGUgbmV3IGl0ZW0uCkBAIC0xNzksMTIgKzE3NiwyMiBAQAogICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKICAgICAgICAgX3NpZnR1cCh4LCBpKQogCi1kZWYgX2hlYXBwdXNocG9wX21heChoZWFwLCBpdGVtKToKLSAgICAiIiJNYXhoZWFwIHZlcnNpb24gb2YgYSBoZWFwcHVzaCBmb2xsb3dlZCBieSBhIGhlYXBwb3AuIiIiCi0gICAgaWYgaGVhcCBhbmQgaXRlbSA8IGhlYXBbMF06Ci0gICAgICAgIGl0ZW0sIGhlYXBbMF0gPSBoZWFwWzBdLCBpdGVtCitkZWYgX2hlYXBwb3BfbWF4KGhlYXApOgorICAgICIiIk1heGhlYXAgdmVyc2lvbiBvZiBhIGhlYXBwb3AuIiIiCisgICAgbGFzdGVsdCA9IGhlYXAucG9wKCkgICAgIyByYWlzZXMgYXBwcm9wcmlhdGUgSW5kZXhFcnJvciBpZiBoZWFwIGlzIGVtcHR5CisgICAgaWYgaGVhcDoKKyAgICAgICAgcmV0dXJuaXRlbSA9IGhlYXBbMF0KKyAgICAgICAgaGVhcFswXSA9IGxhc3RlbHQKICAgICAgICAgX3NpZnR1cF9tYXgoaGVhcCwgMCkKLSAgICByZXR1cm4gaXRlbQorICAgICAgICByZXR1cm4gcmV0dXJuaXRlbQorICAgIHJldHVybiBsYXN0ZWx0CisKK2RlZiBfaGVhcHJlcGxhY2VfbWF4KGhlYXAsIGl0ZW0pOgorICAgICIiIk1heGhlYXAgdmVyc2lvbiBvZiBhIGhlYXBwb3AgZm9sbG93ZWQgYnkgYSBoZWFwcHVzaC4iIiIKKyAgICByZXR1cm5pdGVtID0gaGVhcFswXSAgICAjIHJhaXNlcyBhcHByb3ByaWF0ZSBJbmRleEVycm9yIGlmIGhlYXAgaXMgZW1wdHkKKyAgICBoZWFwWzBdID0gaXRlbQorICAgIF9zaWZ0dXBfbWF4KGhlYXAsIDApCisgICAgcmV0dXJuIHJldHVybml0ZW0KIAogZGVmIF9oZWFwaWZ5X21heCh4KToKICAgICAiIiJUcmFuc2Zvcm0gbGlzdCBpbnRvIGEgbWF4aGVhcCwgaW4tcGxhY2UsIGluIE8obGVuKHgpKSB0aW1lLiIiIgpAQCAtMTkyLDQyICsxOTksNiBAQAogICAgIGZvciBpIGluIHJldmVyc2VkKHJhbmdlKG4vLzIpKToKICAgICAgICAgX3NpZnR1cF9tYXgoeCwgaSkKIAotZGVmIG5sYXJnZXN0KG4sIGl0ZXJhYmxlKToKLSAgICAiIiJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgotCi0gICAgRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwgcmV2ZXJzZT1UcnVlKVs6bl0KLSAgICAiIiIKLSAgICBpZiBuIDwgMDoKLSAgICAgICAgcmV0dXJuIFtdCi0gICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgIHJlc3VsdCA9IGxpc3QoaXNsaWNlKGl0LCBuKSkKLSAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgaGVhcGlmeShyZXN1bHQpCi0gICAgX2hlYXBwdXNocG9wID0gaGVhcHB1c2hwb3AKLSAgICBmb3IgZWxlbSBpbiBpdDoKLSAgICAgICAgX2hlYXBwdXNocG9wKHJlc3VsdCwgZWxlbSkKLSAgICByZXN1bHQuc29ydChyZXZlcnNlPVRydWUpCi0gICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgbnNtYWxsZXN0KG4sIGl0ZXJhYmxlKToKLSAgICAiIiJGaW5kIHRoZSBuIHNtYWxsZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC4KLQotICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUpWzpuXQotICAgICIiIgotICAgIGlmIG4gPCAwOgotICAgICAgICByZXR1cm4gW10KLSAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgcmVzdWx0ID0gbGlzdChpc2xpY2UoaXQsIG4pKQotICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBfaGVhcGlmeV9tYXgocmVzdWx0KQotICAgIF9oZWFwcHVzaHBvcCA9IF9oZWFwcHVzaHBvcF9tYXgKLSAgICBmb3IgZWxlbSBpbiBpdDoKLSAgICAgICAgX2hlYXBwdXNocG9wKHJlc3VsdCwgZWxlbSkKLSAgICByZXN1bHQuc29ydCgpCi0gICAgcmV0dXJuIHJlc3VsdAotCiAjICdoZWFwJyBpcyBhIGhlYXAgYXQgYWxsIGluZGljZXMgPj0gc3RhcnRwb3MsIGV4Y2VwdCBwb3NzaWJseSBmb3IgcG9zLiAgcG9zCiAjIGlzIHRoZSBpbmRleCBvZiBhIGxlYWYgd2l0aCBhIHBvc3NpYmx5IG91dC1vZi1vcmRlciB2YWx1ZS4gIFJlc3RvcmUgdGhlCiAjIGhlYXAgaW52YXJpYW50LgpAQCAtMzQwLDEzICszMTEsNyBAQAogICAgIGhlYXBbcG9zXSA9IG5ld2l0ZW0KICAgICBfc2lmdGRvd25fbWF4KGhlYXAsIHN0YXJ0cG9zLCBwb3MpCiAKLSMgSWYgYXZhaWxhYmxlLCB1c2UgQyBpbXBsZW1lbnRhdGlvbgotdHJ5OgotICAgIGZyb20gX2hlYXBxIGltcG9ydCAqCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotCi1kZWYgbWVyZ2UoKml0ZXJhYmxlcyk6CitkZWYgbWVyZ2UoKml0ZXJhYmxlcywga2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpOgogICAgICcnJ01lcmdlIG11bHRpcGxlIHNvcnRlZCBpbnB1dHMgaW50byBhIHNpbmdsZSBzb3J0ZWQgb3V0cHV0LgogCiAgICAgU2ltaWxhciB0byBzb3J0ZWQoaXRlcnRvb2xzLmNoYWluKCppdGVyYWJsZXMpKSBidXQgcmV0dXJucyBhIGdlbmVyYXRvciwKQEAgLTM1Niw1MSArMzIxLDE1OCBAQAogICAgID4+PiBsaXN0KG1lcmdlKFsxLDMsNSw3XSwgWzAsMiw0LDhdLCBbNSwxMCwxNSwyMF0sIFtdLCBbMjVdKSkKICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNSwgNywgOCwgMTAsIDE1LCAyMCwgMjVdCiAKKyAgICBJZiAqa2V5KiBpcyBub3QgTm9uZSwgYXBwbGllcyBhIGtleSBmdW5jdGlvbiB0byBlYWNoIGVsZW1lbnQgdG8gZGV0ZXJtaW5lCisgICAgaXRzIHNvcnQgb3JkZXIuCisKKyAgICA+Pj4gbGlzdChtZXJnZShbJ2RvZycsICdob3JzZSddLCBbJ2NhdCcsICdmaXNoJywgJ2thbmdhcm9vJ10sIGtleT1sZW4pKQorICAgIFsnZG9nJywgJ2NhdCcsICdmaXNoJywgJ2hvcnNlJywgJ2thbmdhcm9vJ10KKwogICAgICcnJwotICAgIF9oZWFwcG9wLCBfaGVhcHJlcGxhY2UsIF9TdG9wSXRlcmF0aW9uID0gaGVhcHBvcCwgaGVhcHJlcGxhY2UsIFN0b3BJdGVyYXRpb24KLSAgICBfbGVuID0gbGVuCiAKICAgICBoID0gW10KICAgICBoX2FwcGVuZCA9IGguYXBwZW5kCi0gICAgZm9yIGl0bnVtLCBpdCBpbiBlbnVtZXJhdGUobWFwKGl0ZXIsIGl0ZXJhYmxlcykpOgorCisgICAgaWYgcmV2ZXJzZToKKyAgICAgICAgX2hlYXBpZnkgPSBfaGVhcGlmeV9tYXgKKyAgICAgICAgX2hlYXBwb3AgPSBfaGVhcHBvcF9tYXgKKyAgICAgICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAorICAgICAgICBkaXJlY3Rpb24gPSAtMQorICAgIGVsc2U6CisgICAgICAgIF9oZWFwaWZ5ID0gaGVhcGlmeQorICAgICAgICBfaGVhcHBvcCA9IGhlYXBwb3AKKyAgICAgICAgX2hlYXByZXBsYWNlID0gaGVhcHJlcGxhY2UKKyAgICAgICAgZGlyZWN0aW9uID0gMQorCisgICAgaWYga2V5IGlzIE5vbmU6CisgICAgICAgIGZvciBvcmRlciwgaXQgaW4gZW51bWVyYXRlKG1hcChpdGVyLCBpdGVyYWJsZXMpKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXh0ID0gaXQuX19uZXh0X18KKyAgICAgICAgICAgICAgICBoX2FwcGVuZChbbmV4dCgpLCBvcmRlciAqIGRpcmVjdGlvbiwgbmV4dF0pCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIF9oZWFwaWZ5KGgpCisgICAgICAgIHdoaWxlIGxlbihoKSA+IDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUsIG9yZGVyLCBuZXh0ID0gcyA9IGhbMF0KKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc1swXSA9IG5leHQoKSAgICAgICAgICAgIyByYWlzZXMgU3RvcEl0ZXJhdGlvbiB3aGVuIGV4aGF1c3RlZAorICAgICAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UoaCwgcykgICAgICAjIHJlc3RvcmUgaGVhcCBjb25kaXRpb24KKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgIF9oZWFwcG9wKGgpICAgICAgICAgICAgICAgICAjIHJlbW92ZSBlbXB0eSBpdGVyYXRvcgorICAgICAgICBpZiBoOgorICAgICAgICAgICAgIyBmYXN0IGNhc2Ugd2hlbiBvbmx5IGEgc2luZ2xlIGl0ZXJhdG9yIHJlbWFpbnMKKyAgICAgICAgICAgIHZhbHVlLCBvcmRlciwgbmV4dCA9IGhbMF0KKyAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgICAgICB5aWVsZCBmcm9tIG5leHQuX19zZWxmX18KKyAgICAgICAgcmV0dXJuCisKKyAgICBmb3Igb3JkZXIsIGl0IGluIGVudW1lcmF0ZShtYXAoaXRlciwgaXRlcmFibGVzKSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5leHQgPSBpdC5fX25leHRfXwotICAgICAgICAgICAgaF9hcHBlbmQoW25leHQoKSwgaXRudW0sIG5leHRdKQotICAgICAgICBleGNlcHQgX1N0b3BJdGVyYXRpb246CisgICAgICAgICAgICB2YWx1ZSA9IG5leHQoKQorICAgICAgICAgICAgaF9hcHBlbmQoW2tleSh2YWx1ZSksIG9yZGVyICogZGlyZWN0aW9uLCB2YWx1ZSwgbmV4dF0pCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgICAgICAgcGFzcwotICAgIGhlYXBpZnkoaCkKLQotICAgIHdoaWxlIF9sZW4oaCkgPiAxOgorICAgIF9oZWFwaWZ5KGgpCisgICAgd2hpbGUgbGVuKGgpID4gMToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICB2LCBpdG51bSwgbmV4dCA9IHMgPSBoWzBdCi0gICAgICAgICAgICAgICAgeWllbGQgdgotICAgICAgICAgICAgICAgIHNbMF0gPSBuZXh0KCkgICAgICAgICAgICAgICAjIHJhaXNlcyBTdG9wSXRlcmF0aW9uIHdoZW4gZXhoYXVzdGVkCi0gICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKGgsIHMpICAgICAgICAgICMgcmVzdG9yZSBoZWFwIGNvbmRpdGlvbgotICAgICAgICBleGNlcHQgX1N0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICBfaGVhcHBvcChoKSAgICAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIGVtcHR5IGl0ZXJhdG9yCisgICAgICAgICAgICAgICAga2V5X3ZhbHVlLCBvcmRlciwgdmFsdWUsIG5leHQgPSBzID0gaFswXQorICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlCisgICAgICAgICAgICAgICAgdmFsdWUgPSBuZXh0KCkKKyAgICAgICAgICAgICAgICBzWzBdID0ga2V5KHZhbHVlKQorICAgICAgICAgICAgICAgIHNbMl0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIF9oZWFwcmVwbGFjZShoLCBzKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIF9oZWFwcG9wKGgpCiAgICAgaWYgaDoKLSAgICAgICAgIyBmYXN0IGNhc2Ugd2hlbiBvbmx5IGEgc2luZ2xlIGl0ZXJhdG9yIHJlbWFpbnMKLSAgICAgICAgdiwgaXRudW0sIG5leHQgPSBoWzBdCi0gICAgICAgIHlpZWxkIHYKKyAgICAgICAga2V5X3ZhbHVlLCBvcmRlciwgdmFsdWUsIG5leHQgPSBoWzBdCisgICAgICAgIHlpZWxkIHZhbHVlCiAgICAgICAgIHlpZWxkIGZyb20gbmV4dC5fX3NlbGZfXwogCi0jIEV4dGVuZCB0aGUgaW1wbGVtZW50YXRpb25zIG9mIG5zbWFsbGVzdCBhbmQgbmxhcmdlc3QgdG8gdXNlIGEga2V5PSBhcmd1bWVudAotX25zbWFsbGVzdCA9IG5zbWFsbGVzdAorCisjIEFsZ29yaXRobSBub3RlcyBmb3Igbmxhcmdlc3QoKSBhbmQgbnNtYWxsZXN0KCkKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBNYWtlIGEgc2luZ2xlIHBhc3Mgb3ZlciB0aGUgZGF0YSB3aGlsZSBrZWVwaW5nIHRoZSBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMKKyMgaW4gYSBoZWFwLiAgTWVtb3J5IGNvbnN1bXB0aW9uIGlzIGxpbWl0ZWQgdG8ga2VlcGluZyBrIHZhbHVlcyBpbiBhIGxpc3QuCisjCisjIE1lYXN1cmVkIHBlcmZvcm1hbmNlIGZvciByYW5kb20gaW5wdXRzOgorIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGNvbXBhcmlzb25zCisjICAgIG4gaW5wdXRzICAgICBrLWV4dHJlbWUgdmFsdWVzICAoYXZlcmFnZSBvZiA1IHRyaWFscykgICAlIG1vcmUgdGhhbiBtaW4oKQorIyAtLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgICAxLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgICAgMywzMTcgICAgICAgICAgICAgICAyMzEuNyUKKyMgICAgIDEwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgICAxNCwwNDYgICAgICAgICAgICAgICAgNDAuNSUKKyMgICAgMTAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAgIDEwNSw3NDkgICAgICAgICAgICAgICAgIDUuNyUKKyMgIDEsMDAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgICAxLDAwNyw3NTEgICAgICAgICAgICAgICAgIDAuOCUKKyMgMTAsMDAwLDAwMCAgICAgICAgICAgMTAwICAgICAgICAgICAgIDEwLDAwOSw0MDEgICAgICAgICAgICAgICAgIDAuMSUKKyMKKyMgVGhlb3JldGljYWwgbnVtYmVyIG9mIGNvbXBhcmlzb25zIGZvciBrIHNtYWxsZXN0IG9mIG4gcmFuZG9tIGlucHV0czoKKyMKKyMgU3RlcCAgIENvbXBhcmlzb25zICAgICAgICAgICAgICAgICAgQWN0aW9uCisjIC0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgMSAgICAgMS42NiAqIGsgICAgICAgICAgICAgICAgICAgICBoZWFwaWZ5IHRoZSBmaXJzdCBrLWlucHV0cworIyAgMiAgICAgbiAtIGsgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlIHJlbWFpbmluZyBlbGVtZW50cyB0byB0b3Agb2YgaGVhcAorIyAgMyAgICAgayAqICgxICsgbGcyKGspKSAqIGxuKG4vaykgICByZXBsYWNlIHRoZSB0b3Btb3N0IHZhbHVlIG9uIHRoZSBoZWFwCisjICA0ICAgICBrICogbGcyKGspIC0gKGsvMikgICAgICAgICAgIGZpbmFsIHNvcnQgb2YgdGhlIGsgbW9zdCBleHRyZW1lIHZhbHVlcworIworIyBDb21iaW5pbmcgYW5kIHNpbXBsaWZ5aW5nIGZvciBhIHJvdWdoIGVzdGltYXRlIGdpdmVzOgorIworIyAgICAgICAgY29tcGFyaXNvbnMgPSBuICsgayAqIChsb2coaywgMikgKiBsb2cobi9rKSArIGxvZyhrLCAyKSArIGxvZyhuL2spKQorIworIyBDb21wdXRpbmcgdGhlIG51bWJlciBvZiBjb21wYXJpc29ucyBmb3Igc3RlcCAzOgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAqIEZvciB0aGUgaS10aCBuZXcgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUsIHRoZSBwcm9iYWJpbGl0eSBvZiBiZWluZyBpbiB0aGUKKyMgICBrIG1vc3QgZXh0cmVtZSB2YWx1ZXMgaXMgay9pLiAgRm9yIGV4YW1wbGUsIHRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgMTAxc3QKKyMgICB2YWx1ZSBzZWVuIGJlaW5nIGluIHRoZSAxMDAgbW9zdCBleHRyZW1lIHZhbHVlcyBpcyAxMDAvMTAxLgorIyAqIElmIHRoZSB2YWx1ZSBpcyBhIG5ldyBleHRyZW1lIHZhbHVlLCB0aGUgY29zdCBvZiBpbnNlcnRpbmcgaXQgaW50byB0aGUKKyMgICBoZWFwIGlzIDEgKyBsb2coaywgMikuCisjICogVGhlIHByb2JhYmlsaXR5IHRpbWVzIHRoZSBjb3N0IGdpdmVzOgorIyAgICAgICAgICAgIChrL2kpICogKDEgKyBsb2coaywgMikpCisjICogU3VtbWluZyBhY3Jvc3MgdGhlIHJlbWFpbmluZyBuLWsgZWxlbWVudHMgZ2l2ZXM6CisjICAgICAgICAgICAgc3VtKChrL2kpICogKDEgKyBsb2coaywgMikpIGZvciBpIGluIHJhbmdlKGsrMSwgbisxKSkKKyMgKiBUaGlzIHJlZHVjZXMgdG86CisjICAgICAgICAgICAgKEgobikgLSBIKGspKSAqIGsgKiAoMSArIGxvZyhrLCAyKSkKKyMgKiBXaGVyZSBIKG4pIGlzIHRoZSBuLXRoIGhhcm1vbmljIG51bWJlciBlc3RpbWF0ZWQgYnk6CisjICAgICAgICAgICAgZ2FtbWEgPSAwLjU3NzIxNTY2NDkKKyMgICAgICAgICAgICBIKG4pID0gbG9nKG4sIGUpICsgZ2FtbWEgKyAxIC8gKDIgKiBuKQorIyAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFybW9uaWNfc2VyaWVzXyhtYXRoZW1hdGljcykjUmF0ZV9vZl9kaXZlcmdlbmNlCisjICogU3Vic3RpdHV0aW5nIHRoZSBIKG4pIGZvcm11bGE6CisjICAgICAgICAgICAgY29tcGFyaXNvbnMgPSBrICogKDEgKyBsb2coaywgMikpICogKGxvZyhuL2ssIGUpICsgKDEvbiAtIDEvaykgLyAyKQorIworIyBXb3JzdC1jYXNlIGZvciBzdGVwIDM6CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW4gdGhlIHdvcnN0IGNhc2UsIHRoZSBpbnB1dCBkYXRhIGlzIHJldmVyc2VkIHNvcnRlZCBzbyB0aGF0IGV2ZXJ5IG5ldyBlbGVtZW50CisjIG11c3QgYmUgaW5zZXJ0ZWQgaW4gdGhlIGhlYXA6CisjCisjICAgICAgICAgICAgIGNvbXBhcmlzb25zID0gMS42NiAqIGsgKyBsb2coaywgMikgKiAobiAtIGspCisjCisjIEFsdGVybmF0aXZlIEFsZ29yaXRobXMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPdGhlciBhbGdvcml0aG1zIHdlcmUgbm90IHVzZWQgYmVjYXVzZSB0aGV5OgorIyAxKSBUb29rIG11Y2ggbW9yZSBhdXhpbGlhcnkgbWVtb3J5LAorIyAyKSBNYWRlIG11bHRpcGxlIHBhc3NlcyBvdmVyIHRoZSBkYXRhLgorIyAzKSBNYWRlIG1vcmUgY29tcGFyaXNvbnMgaW4gY29tbW9uIGNhc2VzIChzbWFsbCBrLCBsYXJnZSBuLCBzZW1pLXJhbmRvbSBpbnB1dCkuCisjIFNlZSB0aGUgbW9yZSBkZXRhaWxlZCBjb21wYXJpc29uIG9mIGFwcHJvYWNoIGF0OgorIyBodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc1NzMtY29tcGFyZS1hbGdvcml0aG1zLWZvci1oZWFwcXNtYWxsZXN0CisKIGRlZiBuc21hbGxlc3QobiwgaXRlcmFibGUsIGtleT1Ob25lKToKICAgICAiIiJGaW5kIHRoZSBuIHNtYWxsZXN0IGVsZW1lbnRzIGluIGEgZGF0YXNldC4KIAogICAgIEVxdWl2YWxlbnQgdG86ICBzb3J0ZWQoaXRlcmFibGUsIGtleT1rZXkpWzpuXQogICAgICIiIgotICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtaW4oKSB3aGVuIGxlbihpdGVyYWJsZSk+MAorCisgICAgIyBTaG9ydC1jdXQgZm9yIG49PTEgaXMgdG8gdXNlIG1pbigpCiAgICAgaWYgbiA9PSAxOgogICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCi0gICAgICAgIGhlYWQgPSBsaXN0KGlzbGljZShpdCwgMSkpCi0gICAgICAgIGlmIG5vdCBoZWFkOgotICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHNlbnRpbmVsID0gb2JqZWN0KCkKICAgICAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gW21pbihjaGFpbihoZWFkLCBpdCkpXQotICAgICAgICByZXR1cm4gW21pbihjaGFpbihoZWFkLCBpdCksIGtleT1rZXkpXQorICAgICAgICAgICAgcmVzdWx0ID0gbWluKGl0LCBkZWZhdWx0PXNlbnRpbmVsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gbWluKGl0LCBkZWZhdWx0PXNlbnRpbmVsLCBrZXk9a2V5KQorICAgICAgICByZXR1cm4gW10gaWYgcmVzdWx0IGlzIHNlbnRpbmVsIGVsc2UgW3Jlc3VsdF0KIAogICAgICMgV2hlbiBuPj1zaXplLCBpdCdzIGZhc3RlciB0byB1c2Ugc29ydGVkKCkKICAgICB0cnk6CkBAIC00MTMsMzIgKzQ4NSw1NyBAQAogCiAgICAgIyBXaGVuIGtleSBpcyBub25lLCB1c2Ugc2ltcGxlciBkZWNvcmF0aW9uCiAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgIGl0ID0gemlwKGl0ZXJhYmxlLCBjb3VudCgpKSAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlY29yYXRlCi0gICAgICAgIHJlc3VsdCA9IF9uc21hbGxlc3QobiwgaXQpCi0gICAgICAgIHJldHVybiBbclswXSBmb3IgciBpbiByZXN1bHRdICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVjb3JhdGUKKyAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQorICAgICAgICAjIHB1dCB0aGUgcmFuZ2UobikgZmlyc3Qgc28gdGhhdCB6aXAoKSBkb2Vzbid0CisgICAgICAgICMgY29uc3VtZSBvbmUgdG9vIG1hbnkgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmF0b3IKKyAgICAgICAgcmVzdWx0ID0gWyhlbGVtLCBpKSBmb3IgaSwgZWxlbSBpbiB6aXAocmFuZ2UobiksIGl0KV0KKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgX2hlYXBpZnlfbWF4KHJlc3VsdCkKKyAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgIG9yZGVyID0gbgorICAgICAgICBfaGVhcHJlcGxhY2UgPSBfaGVhcHJlcGxhY2VfbWF4CisgICAgICAgIGZvciBlbGVtIGluIGl0OgorICAgICAgICAgICAgaWYgZWxlbSA8IHRvcDoKKyAgICAgICAgICAgICAgICBfaGVhcHJlcGxhY2UocmVzdWx0LCAoZWxlbSwgb3JkZXIpKQorICAgICAgICAgICAgICAgIHRvcCA9IHJlc3VsdFswXVswXQorICAgICAgICAgICAgICAgIG9yZGVyICs9IDEKKyAgICAgICAgcmVzdWx0LnNvcnQoKQorICAgICAgICByZXR1cm4gW3JbMF0gZm9yIHIgaW4gcmVzdWx0XQogCiAgICAgIyBHZW5lcmFsIGNhc2UsIHNsb3dlc3QgbWV0aG9kCi0gICAgaW4xLCBpbjIgPSB0ZWUoaXRlcmFibGUpCi0gICAgaXQgPSB6aXAobWFwKGtleSwgaW4xKSwgY291bnQoKSwgaW4yKSAgICAgICAgICAgICAgICAgICAjIGRlY29yYXRlCi0gICAgcmVzdWx0ID0gX25zbWFsbGVzdChuLCBpdCkKLSAgICByZXR1cm4gW3JbMl0gZm9yIHIgaW4gcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWNvcmF0ZQorICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKKyAgICByZXN1bHQgPSBbKGtleShlbGVtKSwgaSwgZWxlbSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKG4pLCBpdCldCisgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIF9oZWFwaWZ5X21heChyZXN1bHQpCisgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgb3JkZXIgPSBuCisgICAgX2hlYXByZXBsYWNlID0gX2hlYXByZXBsYWNlX21heAorICAgIGZvciBlbGVtIGluIGl0OgorICAgICAgICBrID0ga2V5KGVsZW0pCisgICAgICAgIGlmIGsgPCB0b3A6CisgICAgICAgICAgICBfaGVhcHJlcGxhY2UocmVzdWx0LCAoaywgb3JkZXIsIGVsZW0pKQorICAgICAgICAgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgICAgICAgICBvcmRlciArPSAxCisgICAgcmVzdWx0LnNvcnQoKQorICAgIHJldHVybiBbclsyXSBmb3IgciBpbiByZXN1bHRdCiAKLV9ubGFyZ2VzdCA9IG5sYXJnZXN0CiBkZWYgbmxhcmdlc3QobiwgaXRlcmFibGUsIGtleT1Ob25lKToKICAgICAiIiJGaW5kIHRoZSBuIGxhcmdlc3QgZWxlbWVudHMgaW4gYSBkYXRhc2V0LgogCiAgICAgRXF1aXZhbGVudCB0bzogIHNvcnRlZChpdGVyYWJsZSwga2V5PWtleSwgcmV2ZXJzZT1UcnVlKVs6bl0KICAgICAiIiIKIAotICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtYXgoKSB3aGVuIGxlbihpdGVyYWJsZSk+MAorICAgICMgU2hvcnQtY3V0IGZvciBuPT0xIGlzIHRvIHVzZSBtYXgoKQogICAgIGlmIG4gPT0gMToKICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQotICAgICAgICBoZWFkID0gbGlzdChpc2xpY2UoaXQsIDEpKQotICAgICAgICBpZiBub3QgaGVhZDoKLSAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBzZW50aW5lbCA9IG9iamVjdCgpCiAgICAgICAgIGlmIGtleSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIFttYXgoY2hhaW4oaGVhZCwgaXQpKV0KLSAgICAgICAgcmV0dXJuIFttYXgoY2hhaW4oaGVhZCwgaXQpLCBrZXk9a2V5KV0KKyAgICAgICAgICAgIHJlc3VsdCA9IG1heChpdCwgZGVmYXVsdD1zZW50aW5lbCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IG1heChpdCwgZGVmYXVsdD1zZW50aW5lbCwga2V5PWtleSkKKyAgICAgICAgcmV0dXJuIFtdIGlmIHJlc3VsdCBpcyBzZW50aW5lbCBlbHNlIFtyZXN1bHRdCiAKICAgICAjIFdoZW4gbj49c2l6ZSwgaXQncyBmYXN0ZXIgdG8gdXNlIHNvcnRlZCgpCiAgICAgdHJ5OgpAQCAtNDUxLDI2ICs1NDgsNjAgQEAKIAogICAgICMgV2hlbiBrZXkgaXMgbm9uZSwgdXNlIHNpbXBsZXIgZGVjb3JhdGlvbgogICAgIGlmIGtleSBpcyBOb25lOgotICAgICAgICBpdCA9IHppcChpdGVyYWJsZSwgY291bnQoMCwtMSkpICAgICAgICAgICAgICAgICAgICAgIyBkZWNvcmF0ZQotICAgICAgICByZXN1bHQgPSBfbmxhcmdlc3QobiwgaXQpCi0gICAgICAgIHJldHVybiBbclswXSBmb3IgciBpbiByZXN1bHRdICAgICAgICAgICAgICAgICAgICAgICAjIHVuZGVjb3JhdGUKKyAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQorICAgICAgICByZXN1bHQgPSBbKGVsZW0sIGkpIGZvciBpLCBlbGVtIGluIHppcChyYW5nZSgwLCAtbiwgLTEpLCBpdCldCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIGhlYXBpZnkocmVzdWx0KQorICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgb3JkZXIgPSAtbgorICAgICAgICBfaGVhcHJlcGxhY2UgPSBoZWFwcmVwbGFjZQorICAgICAgICBmb3IgZWxlbSBpbiBpdDoKKyAgICAgICAgICAgIGlmIHRvcCA8IGVsZW06CisgICAgICAgICAgICAgICAgX2hlYXByZXBsYWNlKHJlc3VsdCwgKGVsZW0sIG9yZGVyKSkKKyAgICAgICAgICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgICAgICAgICBvcmRlciAtPSAxCisgICAgICAgIHJlc3VsdC5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIFtyWzBdIGZvciByIGluIHJlc3VsdF0KIAogICAgICMgR2VuZXJhbCBjYXNlLCBzbG93ZXN0IG1ldGhvZAotICAgIGluMSwgaW4yID0gdGVlKGl0ZXJhYmxlKQotICAgIGl0ID0gemlwKG1hcChrZXksIGluMSksIGNvdW50KDAsLTEpLCBpbjIpICAgICAgICAgICAgICAgIyBkZWNvcmF0ZQotICAgIHJlc3VsdCA9IF9ubGFyZ2VzdChuLCBpdCkKLSAgICByZXR1cm4gW3JbMl0gZm9yIHIgaW4gcmVzdWx0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5kZWNvcmF0ZQorICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKKyAgICByZXN1bHQgPSBbKGtleShlbGVtKSwgaSwgZWxlbSkgZm9yIGksIGVsZW0gaW4gemlwKHJhbmdlKDAsIC1uLCAtMSksIGl0KV0KKyAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgaGVhcGlmeShyZXN1bHQpCisgICAgdG9wID0gcmVzdWx0WzBdWzBdCisgICAgb3JkZXIgPSAtbgorICAgIF9oZWFwcmVwbGFjZSA9IGhlYXByZXBsYWNlCisgICAgZm9yIGVsZW0gaW4gaXQ6CisgICAgICAgIGsgPSBrZXkoZWxlbSkKKyAgICAgICAgaWYgdG9wIDwgazoKKyAgICAgICAgICAgIF9oZWFwcmVwbGFjZShyZXN1bHQsIChrLCBvcmRlciwgZWxlbSkpCisgICAgICAgICAgICB0b3AgPSByZXN1bHRbMF1bMF0KKyAgICAgICAgICAgIG9yZGVyIC09IDEKKyAgICByZXN1bHQuc29ydChyZXZlcnNlPVRydWUpCisgICAgcmV0dXJuIFtyWzJdIGZvciByIGluIHJlc3VsdF0KKworIyBJZiBhdmFpbGFibGUsIHVzZSBDIGltcGxlbWVudGF0aW9uCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwcmVwbGFjZV9tYXgKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfaGVhcHEgaW1wb3J0IF9oZWFwaWZ5X21heAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK3RyeToKKyAgICBmcm9tIF9oZWFwcSBpbXBvcnQgX2hlYXBwb3BfbWF4CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIyBTaW1wbGUgc2FuaXR5IHRlc3QKLSAgICBoZWFwID0gW10KLSAgICBkYXRhID0gWzEsIDMsIDUsIDcsIDksIDIsIDQsIDYsIDgsIDBdCi0gICAgZm9yIGl0ZW0gaW4gZGF0YToKLSAgICAgICAgaGVhcHB1c2goaGVhcCwgaXRlbSkKLSAgICBzb3J0ID0gW10KLSAgICB3aGlsZSBoZWFwOgotICAgICAgICBzb3J0LmFwcGVuZChoZWFwcG9wKGhlYXApKQotICAgIHByaW50KHNvcnQpCiAKICAgICBpbXBvcnQgZG9jdGVzdAotICAgIGRvY3Rlc3QudGVzdG1vZCgpCisgICAgcHJpbnQoZG9jdGVzdC50ZXN0bW9kKCkpCmRpZmYgLS1naXQgYS9MaWIvaHRtbC9lbnRpdGllcy5weSBiL0xpYi9odG1sL2VudGl0aWVzLnB5CmluZGV4IGY3ZGVhZTYuLjNlMTc3OGIgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL2VudGl0aWVzLnB5CisrKyBiL0xpYi9odG1sL2VudGl0aWVzLnB5CkBAIC0xLDUgKzEsOCBAQAogIiIiSFRNTCBjaGFyYWN0ZXIgZW50aXR5IHJlZmVyZW5jZXMuIiIiCiAKK19fYWxsX18gPSBbJ2h0bWw1JywgJ25hbWUyY29kZXBvaW50JywgJ2NvZGVwb2ludDJuYW1lJywgJ2VudGl0eWRlZnMnXQorCisKICMgbWFwcyB0aGUgSFRNTCBlbnRpdHkgbmFtZSB0byB0aGUgVW5pY29kZSBjb2RlIHBvaW50CiBuYW1lMmNvZGVwb2ludCA9IHsKICAgICAnQUVsaWcnOiAgICAweDAwYzYsICMgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgQUUgPSBsYXRpbiBjYXBpdGFsIGxpZ2F0dXJlIEFFLCBVKzAwQzYgSVNPbGF0MQpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IDlhZTMxYjkuLjQzZTY0MTEgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTI5LDM1ICsyOSwxNSBAQAogcGljbG9zZSA9IHJlLmNvbXBpbGUoJz4nKQogY29tbWVudGNsb3NlID0gcmUuY29tcGlsZShyJy0tXHMqPicpCiAjIE5vdGU6Ci0jICAxKSB0aGUgc3RyaWN0IGF0dHJmaW5kIGlzbid0IHJlYWxseSBzdHJpY3QsIGJ1dCB3ZSBjYW4ndCBtYWtlIGl0Ci0jICAgICBjb3JyZWN0bHkgc3RyaWN0IHdpdGhvdXQgYnJlYWtpbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eTsKLSMgIDIpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCByZW1lbWJlciB0byB1cGRhdGUgbG9jYXRlc3RhcnR0YWdlbmQgdG9vOwotIyAgMykgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIGFuZC9vciBsb2NhdGVzdGFydHRhZ2VuZCB0aGUgcGFyc2VyIHdpbGwKKyMgIDEpIGlmIHlvdSBjaGFuZ2UgdGFnZmluZC9hdHRyZmluZCByZW1lbWJlciB0byB1cGRhdGUgbG9jYXRlc3RhcnR0YWdlbmQgdG9vOworIyAgMikgaWYgeW91IGNoYW5nZSB0YWdmaW5kL2F0dHJmaW5kIGFuZC9vciBsb2NhdGVzdGFydHRhZ2VuZCB0aGUgcGFyc2VyIHdpbGwKICMgICAgIGV4cGxvZGUsIHNvIGRvbid0IGRvIGl0LgotdGFnZmluZCA9IHJlLmNvbXBpbGUoJyhbYS16QS1aXVstLmEtekEtWjAtOTpfXSopKD86XHN8Lyg/IT4pKSonKQogIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW9wZW4tc3RhdGUKICMgYW5kIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCiB0YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgnKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCi1hdHRyZmluZCA9IHJlLmNvbXBpbGUoCi0gICAgcidccyooW2EtekEtWl9dWy0uOmEtekEtWl8wLTldKikoXHMqPVxzKicKLSAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8W15ccyJcJz08PmBdKikpPycpCiBhdHRyZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoCiAgICAgcicoKD88PVtcJyJccy9dKVteXHMvPl1bXlxzLz0+XSopKFxzKj0rXHMqJwogICAgIHInKFwnW15cJ10qXCd8IlteIl0qInwoPyFbXCciXSlbXj5cc10qKSk/KD86XHN8Lyg/IT4pKSonKQotbG9jYXRlc3RhcnR0YWdlbmQgPSByZS5jb21waWxlKHIiIiIKLSAgPFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKiAgICAgICAgICAjIHRhZyBuYW1lCi0gICg/OlxzKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGl0ZXNwYWNlIGJlZm9yZSBhdHRyaWJ1dGUgbmFtZQotICAgICg/OlthLXpBLVpfXVstLjphLXpBLVowLTlfXSogICAgICMgYXR0cmlidXRlIG5hbWUKLSAgICAgICg/OlxzKj1ccyogICAgICAgICAgICAgICAgICAgICAjIHZhbHVlIGluZGljYXRvcgotICAgICAgICAoPzonW14nXSonICAgICAgICAgICAgICAgICAgICMgTElUQS1lbmNsb3NlZCB2YWx1ZQotICAgICAgICAgIHxcIlteXCJdKlwiICAgICAgICAgICAgICAgICMgTElULWVuY2xvc2VkIHZhbHVlCi0gICAgICAgICAgfFteJ1wiPlxzXSsgICAgICAgICAgICAgICAgIyBiYXJlIHZhbHVlCi0gICAgICAgICApCi0gICAgICAgKT8KLSAgICAgKQotICAgKSoKLSAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyYWlsaW5nIHdoaXRlc3BhY2UKLSIiIiwgcmUuVkVSQk9TRSkKIGxvY2F0ZXN0YXJ0dGFnZW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZShyIiIiCiAgIDxbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSogICAgICAgIyB0YWcgbmFtZQogICAoPzpbXHMvXSogICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgd2hpdGVzcGFjZSBiZWZvcmUgYXR0cmlidXRlIG5hbWUKQEAgLTc5LDI1ICs1OSw2IEBACiBlbmR0YWdmaW5kID0gcmUuY29tcGlsZSgnPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQogCiAKLWNsYXNzIEhUTUxQYXJzZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIHJhaXNlZCBmb3IgYWxsIHBhcnNlIGVycm9ycy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIHBvc2l0aW9uPShOb25lLCBOb25lKSk6Ci0gICAgICAgIGFzc2VydCBtc2cKLSAgICAgICAgc2VsZi5tc2cgPSBtc2cKLSAgICAgICAgc2VsZi5saW5lbm8gPSBwb3NpdGlvblswXQotICAgICAgICBzZWxmLm9mZnNldCA9IHBvc2l0aW9uWzFdCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5tc2cKLSAgICAgICAgaWYgc2VsZi5saW5lbm8gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyAiLCBhdCBsaW5lICVkIiAlIHNlbGYubGluZW5vCi0gICAgICAgIGlmIHNlbGYub2Zmc2V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgIiwgY29sdW1uICVkIiAlIChzZWxmLm9mZnNldCArIDEpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotCi1fZGVmYXVsdF9zZW50aW5lbCA9IG9iamVjdCgpCiAKIGNsYXNzIEhUTUxQYXJzZXIoX21hcmt1cGJhc2UuUGFyc2VyQmFzZSk6CiAgICAgIiIiRmluZCB0YWdzIGFuZCBvdGhlciBtYXJrdXAgYW5kIGNhbGwgaGFuZGxlciBmdW5jdGlvbnMuCkBAIC0xMjMsMjcgKzg0LDEyIEBACiAKICAgICBDREFUQV9DT05URU5UX0VMRU1FTlRTID0gKCJzY3JpcHQiLCAic3R5bGUiKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0cmljdD1fZGVmYXVsdF9zZW50aW5lbCwgKiwKLSAgICAgICAgICAgICAgICAgY29udmVydF9jaGFycmVmcz1fZGVmYXVsdF9zZW50aW5lbCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIGNvbnZlcnRfY2hhcnJlZnM9VHJ1ZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW5kIHJlc2V0IHRoaXMgaW5zdGFuY2UuCiAKLSAgICAgICAgSWYgY29udmVydF9jaGFycmVmcyBpcyBUcnVlIChkZWZhdWx0OiBGYWxzZSksIGFsbCBjaGFyYWN0ZXIgcmVmZXJlbmNlcworICAgICAgICBJZiBjb252ZXJ0X2NoYXJyZWZzIGlzIFRydWUgKHRoZSBkZWZhdWx0KSwgYWxsIGNoYXJhY3RlciByZWZlcmVuY2VzCiAgICAgICAgIGFyZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byB0aGUgY29ycmVzcG9uZGluZyBVbmljb2RlIGNoYXJhY3RlcnMuCi0gICAgICAgIElmIHN0cmljdCBpcyBzZXQgdG8gRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGUgcGFyc2VyIHdpbGwgcGFyc2UgaW52YWxpZAotICAgICAgICBtYXJrdXAsIG90aGVyd2lzZSBpdCB3aWxsIHJhaXNlIGFuIGVycm9yLiAgTm90ZSB0aGF0IHRoZSBzdHJpY3QgbW9kZQotICAgICAgICBhbmQgYXJndW1lbnQgYXJlIGRlcHJlY2F0ZWQuCiAgICAgICAgICIiIgotICAgICAgICBpZiBzdHJpY3QgaXMgbm90IF9kZWZhdWx0X3NlbnRpbmVsOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIHN0cmljdCBhcmd1bWVudCBhbmQgbW9kZSBhcmUgZGVwcmVjYXRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cmljdCA9IEZhbHNlICAjIGRlZmF1bHQKLSAgICAgICAgc2VsZi5zdHJpY3QgPSBzdHJpY3QKLSAgICAgICAgaWYgY29udmVydF9jaGFycmVmcyBpcyBfZGVmYXVsdF9zZW50aW5lbDoKLSAgICAgICAgICAgIGNvbnZlcnRfY2hhcnJlZnMgPSBGYWxzZSAgIyBkZWZhdWx0Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgdmFsdWUgb2YgY29udmVydF9jaGFycmVmcyB3aWxsIGJlY29tZSBUcnVlIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjMuNS4gWW91IGFyZSBlbmNvdXJhZ2VkIHRvIHNldCB0aGUgdmFsdWUgZXhwbGljaXRseS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5jb252ZXJ0X2NoYXJyZWZzID0gY29udmVydF9jaGFycmVmcwogICAgICAgICBzZWxmLnJlc2V0KCkKIApAQCAtMTY4LDExICsxMTQsNiBAQAogICAgICAgICAiIiJIYW5kbGUgYW55IGJ1ZmZlcmVkIGRhdGEuIiIiCiAgICAgICAgIHNlbGYuZ29haGVhZCgxKQogCi0gICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ2Vycm9yJyBtZXRob2QgaXMgZGVwcmVjYXRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICByYWlzZSBIVE1MUGFyc2VFcnJvcihtZXNzYWdlLCBzZWxmLmdldHBvcygpKQotCiAgICAgX19zdGFydHRhZ190ZXh0ID0gTm9uZQogCiAgICAgZGVmIGdldF9zdGFydHRhZ190ZXh0KHNlbGYpOgpAQCAtMjM1LDEwICsxNzYsNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRzd2l0aCgiPD8iLCBpKToKICAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfcGkoaSkKICAgICAgICAgICAgICAgICBlbGlmIHN0YXJ0c3dpdGgoIjwhIiwgaSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfZGVjbGFyYXRpb24oaSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLnBhcnNlX2h0bWxfZGVjbGFyYXRpb24oaSkKKyAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYucGFyc2VfaHRtbF9kZWNsYXJhdGlvbihpKQogICAgICAgICAgICAgICAgIGVsaWYgKGkgKyAxKSA8IG46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoIjwiKQogICAgICAgICAgICAgICAgICAgICBrID0gaSArIDEKQEAgLTI0Nyw4ICsxODUsNiBAQAogICAgICAgICAgICAgICAgIGlmIGsgPCAwOgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZW5kOgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJFT0YgaW4gbWlkZGxlIG9mIGNvbnN0cnVjdCIpCiAgICAgICAgICAgICAgICAgICAgIGsgPSByYXdkYXRhLmZpbmQoJz4nLCBpICsgMSkKICAgICAgICAgICAgICAgICAgICAgaWYgayA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcmF3ZGF0YS5maW5kKCc8JywgaSArIDEpCkBAIC0yOTAsMTMgKzIyNiwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgICAgICAjIG1hdGNoLmdyb3VwKCkgd2lsbCBjb250YWluIGF0IGxlYXN0IDIgY2hhcnMKICAgICAgICAgICAgICAgICAgICAgaWYgZW5kIGFuZCBtYXRjaC5ncm91cCgpID09IHJhd2RhdGFbaTpdOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcigiRU9GIGluIG1pZGRsZSBvZiBlbnRpdHkgb3IgY2hhciByZWYiKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbWF0Y2guZW5kKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDw9IGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHNlbGYudXBkYXRlcG9zKGksIGkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgayA9IG1hdGNoLmVuZCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBrIDw9IGk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG4KKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBzZWxmLnVwZGF0ZXBvcyhpLCBpICsgMSkKICAgICAgICAgICAgICAgICAgICAgIyBpbmNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxpZiAoaSArIDEpIDwgbjoKQEAgLTM3NSwxOCArMzA4LDEyIEBACiAKICAgICAgICAgIyBOb3cgcGFyc2UgdGhlIGRhdGEgYmV0d2VlbiBpKzEgYW5kIGogaW50byBhIHRhZyBhbmQgYXR0cnMKICAgICAgICAgYXR0cnMgPSBbXQotICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgIG1hdGNoID0gdGFnZmluZC5tYXRjaChyYXdkYXRhLCBpKzEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXRjaCA9IHRhZ2ZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSsxKQorICAgICAgICBtYXRjaCA9IHRhZ2ZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaSsxKQogICAgICAgICBhc3NlcnQgbWF0Y2gsICd1bmV4cGVjdGVkIGNhbGwgdG8gcGFyc2Vfc3RhcnR0YWcoKScKICAgICAgICAgayA9IG1hdGNoLmVuZCgpCiAgICAgICAgIHNlbGYubGFzdHRhZyA9IHRhZyA9IG1hdGNoLmdyb3VwKDEpLmxvd2VyKCkKICAgICAgICAgd2hpbGUgayA8IGVuZHBvczoKLSAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgIG0gPSBhdHRyZmluZC5tYXRjaChyYXdkYXRhLCBrKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtID0gYXR0cmZpbmRfdG9sZXJhbnQubWF0Y2gocmF3ZGF0YSwgaykKKyAgICAgICAgICAgIG0gPSBhdHRyZmluZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBrKQogICAgICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGF0dHJuYW1lLCByZXN0LCBhdHRydmFsdWUgPSBtLmdyb3VwKDEsIDIsIDMpCkBAIC00MDksOSArMzM2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAtIHNlbGYuX19zdGFydHRhZ190ZXh0LnJmaW5kKCJcbiIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldCArIGxlbihzZWxmLl9fc3RhcnR0YWdfdGV4dCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoImp1bmsgY2hhcmFjdGVycyBpbiBzdGFydCB0YWc6ICVyIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocmF3ZGF0YVtrOmVuZHBvc11bOjIwXSwpKQogICAgICAgICAgICAgc2VsZi5oYW5kbGVfZGF0YShyYXdkYXRhW2k6ZW5kcG9zXSkKICAgICAgICAgICAgIHJldHVybiBlbmRwb3MKICAgICAgICAgaWYgZW5kLmVuZHN3aXRoKCcvPicpOgpAQCAtNDI3LDEwICszNTEsNyBAQAogICAgICMgb3IgLTEgaWYgaW5jb21wbGV0ZS4KICAgICBkZWYgY2hlY2tfZm9yX3dob2xlX3N0YXJ0X3RhZyhzZWxmLCBpKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgIG0gPSBsb2NhdGVzdGFydHRhZ2VuZC5tYXRjaChyYXdkYXRhLCBpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbSA9IGxvY2F0ZXN0YXJ0dGFnZW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkpCisgICAgICAgIG0gPSBsb2NhdGVzdGFydHRhZ2VuZF90b2xlcmFudC5tYXRjaChyYXdkYXRhLCBpKQogICAgICAgICBpZiBtOgogICAgICAgICAgICAgaiA9IG0uZW5kKCkKICAgICAgICAgICAgIG5leHQgPSByYXdkYXRhW2o6aisxXQpAQCAtNDQzLDkgKzM2NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICMgYnVmZmVyIGJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgICAgICMgZWxzZSBib2d1cyBpbnB1dAotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RyaWN0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZXBvcyhpLCBqICsgMSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcigibWFsZm9ybWVkIGVtcHR5IHN0YXJ0IHRhZyIpCiAgICAgICAgICAgICAgICAgaWYgaiA+IGk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTQ1OCw5ICszNzYsNiBAQAogICAgICAgICAgICAgICAgICMgZW5kIG9mIGlucHV0IGluIG9yIGJlZm9yZSBhdHRyaWJ1dGUgdmFsdWUsIG9yIHdlIGhhdmUgdGhlCiAgICAgICAgICAgICAgICAgIyAnLycgZnJvbSBhICcvPicgZW5kaW5nCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZXBvcyhpLCBqKQotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoIm1hbGZvcm1lZCBzdGFydCB0YWciKQogICAgICAgICAgICAgaWYgaiA+IGk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGoKICAgICAgICAgICAgIGVsc2U6CkBAIC00ODAsOCArMzk1LDYgQEAKICAgICAgICAgICAgIGlmIHNlbGYuY2RhdGFfZWxlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKHJhd2RhdGFbaTpndHBvc10pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGd0cG9zCi0gICAgICAgICAgICBpZiBzZWxmLnN0cmljdDoKLSAgICAgICAgICAgICAgICBzZWxmLmVycm9yKCJiYWQgZW5kIHRhZzogJXIiICUgKHJhd2RhdGFbaTpndHBvc10sKSkKICAgICAgICAgICAgICMgZmluZCB0aGUgbmFtZTogdzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCiAgICAgICAgICAgICBuYW1lbWF0Y2ggPSB0YWdmaW5kX3RvbGVyYW50Lm1hdGNoKHJhd2RhdGEsIGkrMikKICAgICAgICAgICAgIGlmIG5vdCBuYW1lbWF0Y2g6CkBAIC01NDcsOCArNDYwLDcgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHVua25vd25fZGVjbChzZWxmLCBkYXRhKToKLSAgICAgICAgaWYgc2VsZi5zdHJpY3Q6Ci0gICAgICAgICAgICBzZWxmLmVycm9yKCJ1bmtub3duIGRlY2xhcmF0aW9uOiAlciIgJSAoZGF0YSwpKQorICAgICAgICBwYXNzCiAKICAgICAjIEludGVybmFsIC0tIGhlbHBlciB0byByZW1vdmUgc3BlY2lhbCBjaGFyYWN0ZXIgcXVvdGluZwogICAgIGRlZiB1bmVzY2FwZShzZWxmLCBzKToKZGlmZiAtLWdpdCBhL0xpYi9odHRwL19faW5pdF9fLnB5IGIvTGliL2h0dHAvX19pbml0X18ucHkKaW5kZXggMTk2ZDM3OC4uZDQzMzRjYyAxMDA2NDQKLS0tIGEvTGliL2h0dHAvX19pbml0X18ucHkKKysrIGIvTGliL2h0dHAvX19pbml0X18ucHkKQEAgLTEgKzEsMTM0IEBACi0jIFRoaXMgZGlyZWN0b3J5IGlzIGEgUHl0aG9uIHBhY2thZ2UuCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0KKworX19hbGxfXyA9IFsnSFRUUFN0YXR1cyddCisKK2NsYXNzIEhUVFBTdGF0dXMoSW50RW51bSk6CisgICAgIiIiSFRUUCBzdGF0dXMgY29kZXMgYW5kIHJlYXNvbiBwaHJhc2VzCisKKyAgICBTdGF0dXMgY29kZXMgZnJvbSB0aGUgZm9sbG93aW5nIFJGQ3MgYXJlIGFsbCBvYnNlcnZlZDoKKworICAgICAgICAqIFJGQyA3MjMxOiBIeXBlcnRleHQgVHJhbnNmZXIgUHJvdG9jb2wgKEhUVFAvMS4xKSwgb2Jzb2xldGVzIDI2MTYKKyAgICAgICAgKiBSRkMgNjU4NTogQWRkaXRpb25hbCBIVFRQIFN0YXR1cyBDb2RlcworICAgICAgICAqIFJGQyAzMjI5OiBEZWx0YSBlbmNvZGluZyBpbiBIVFRQCisgICAgICAgICogUkZDIDQ5MTg6IEhUVFAgRXh0ZW5zaW9ucyBmb3IgV2ViREFWLCBvYnNvbGV0ZXMgMjUxOAorICAgICAgICAqIFJGQyA1ODQyOiBCaW5kaW5nIEV4dGVuc2lvbnMgdG8gV2ViREFWCisgICAgICAgICogUkZDIDcyMzg6IFBlcm1hbmVudCBSZWRpcmVjdAorICAgICAgICAqIFJGQyAyMjk1OiBUcmFuc3BhcmVudCBDb250ZW50IE5lZ290aWF0aW9uIGluIEhUVFAKKyAgICAgICAgKiBSRkMgMjc3NDogQW4gSFRUUCBFeHRlbnNpb24gRnJhbWV3b3JrCisgICAgIiIiCisgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSwgcGhyYXNlLCBkZXNjcmlwdGlvbj0nJyk6CisgICAgICAgIG9iaiA9IGludC5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgIG9iai5fdmFsdWVfID0gdmFsdWUKKworICAgICAgICBvYmoucGhyYXNlID0gcGhyYXNlCisgICAgICAgIG9iai5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCisgICAgICAgIHJldHVybiBvYmoKKworICAgICMgaW5mb3JtYXRpb25hbAorICAgIENPTlRJTlVFID0gMTAwLCAnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJworICAgIFNXSVRDSElOR19QUk9UT0NPTFMgPSAoMTAxLCAnU3dpdGNoaW5nIFByb3RvY29scycsCisgICAgICAgICAgICAnU3dpdGNoaW5nIHRvIG5ldyBwcm90b2NvbDsgb2JleSBVcGdyYWRlIGhlYWRlcicpCisgICAgUFJPQ0VTU0lORyA9IDEwMiwgJ1Byb2Nlc3NpbmcnCisKKyAgICAjIHN1Y2Nlc3MKKyAgICBPSyA9IDIwMCwgJ09LJywgJ1JlcXVlc3QgZnVsZmlsbGVkLCBkb2N1bWVudCBmb2xsb3dzJworICAgIENSRUFURUQgPSAyMDEsICdDcmVhdGVkJywgJ0RvY3VtZW50IGNyZWF0ZWQsIFVSTCBmb2xsb3dzJworICAgIEFDQ0VQVEVEID0gKDIwMiwgJ0FjY2VwdGVkJywKKyAgICAgICAgJ1JlcXVlc3QgYWNjZXB0ZWQsIHByb2Nlc3NpbmcgY29udGludWVzIG9mZi1saW5lJykKKyAgICBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTiA9ICgyMDMsCisgICAgICAgICdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsICdSZXF1ZXN0IGZ1bGZpbGxlZCBmcm9tIGNhY2hlJykKKyAgICBOT19DT05URU5UID0gMjA0LCAnTm8gQ29udGVudCcsICdSZXF1ZXN0IGZ1bGZpbGxlZCwgbm90aGluZyBmb2xsb3dzJworICAgIFJFU0VUX0NPTlRFTlQgPSAyMDUsICdSZXNldCBDb250ZW50JywgJ0NsZWFyIGlucHV0IGZvcm0gZm9yIGZ1cnRoZXIgaW5wdXQnCisgICAgUEFSVElBTF9DT05URU5UID0gMjA2LCAnUGFydGlhbCBDb250ZW50JywgJ1BhcnRpYWwgY29udGVudCBmb2xsb3dzJworICAgIE1VTFRJX1NUQVRVUyA9IDIwNywgJ011bHRpLVN0YXR1cycKKyAgICBBTFJFQURZX1JFUE9SVEVEID0gMjA4LCAnQWxyZWFkeSBSZXBvcnRlZCcKKyAgICBJTV9VU0VEID0gMjI2LCAnSU0gVXNlZCcKKworICAgICMgcmVkaXJlY3Rpb24KKyAgICBNVUxUSVBMRV9DSE9JQ0VTID0gKDMwMCwgJ011bHRpcGxlIENob2ljZXMnLAorICAgICAgICAnT2JqZWN0IGhhcyBzZXZlcmFsIHJlc291cmNlcyAtLSBzZWUgVVJJIGxpc3QnKQorICAgIE1PVkVEX1BFUk1BTkVOVExZID0gKDMwMSwgJ01vdmVkIFBlcm1hbmVudGx5JywKKyAgICAgICAgJ09iamVjdCBtb3ZlZCBwZXJtYW5lbnRseSAtLSBzZWUgVVJJIGxpc3QnKQorICAgIEZPVU5EID0gMzAyLCAnRm91bmQnLCAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcKKyAgICBTRUVfT1RIRVIgPSAzMDMsICdTZWUgT3RoZXInLCAnT2JqZWN0IG1vdmVkIC0tIHNlZSBNZXRob2QgYW5kIFVSTCBsaXN0JworICAgIE5PVF9NT0RJRklFRCA9ICgzMDQsICdOb3QgTW9kaWZpZWQnLAorICAgICAgICAnRG9jdW1lbnQgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIGdpdmVuIHRpbWUnKQorICAgIFVTRV9QUk9YWSA9ICgzMDUsICdVc2UgUHJveHknLAorICAgICAgICAnWW91IG11c3QgdXNlIHByb3h5IHNwZWNpZmllZCBpbiBMb2NhdGlvbiB0byBhY2Nlc3MgdGhpcyByZXNvdXJjZScpCisgICAgVEVNUE9SQVJZX1JFRElSRUNUID0gKDMwNywgJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCisgICAgICAgICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JykKKyAgICBQRVJNQU5FTlRfUkVESVJFQ1QgPSAoMzA4LCAnUGVybWFuZW50IFJlZGlyZWN0JywKKyAgICAgICAgJ09iamVjdCBtb3ZlZCB0ZW1wb3JhcmlseSAtLSBzZWUgVVJJIGxpc3QnKQorCisgICAgIyBjbGllbnQgZXJyb3IKKyAgICBCQURfUkVRVUVTVCA9ICg0MDAsICdCYWQgUmVxdWVzdCcsCisgICAgICAgICdCYWQgcmVxdWVzdCBzeW50YXggb3IgdW5zdXBwb3J0ZWQgbWV0aG9kJykKKyAgICBVTkFVVEhPUklaRUQgPSAoNDAxLCAnVW5hdXRob3JpemVkJywKKyAgICAgICAgJ05vIHBlcm1pc3Npb24gLS0gc2VlIGF1dGhvcml6YXRpb24gc2NoZW1lcycpCisgICAgUEFZTUVOVF9SRVFVSVJFRCA9ICg0MDIsICdQYXltZW50IFJlcXVpcmVkJywKKyAgICAgICAgJ05vIHBheW1lbnQgLS0gc2VlIGNoYXJnaW5nIHNjaGVtZXMnKQorICAgIEZPUkJJRERFTiA9ICg0MDMsICdGb3JiaWRkZW4nLAorICAgICAgICAnUmVxdWVzdCBmb3JiaWRkZW4gLS0gYXV0aG9yaXphdGlvbiB3aWxsIG5vdCBoZWxwJykKKyAgICBOT1RfRk9VTkQgPSAoNDA0LCAnTm90IEZvdW5kJywKKyAgICAgICAgJ05vdGhpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gVVJJJykKKyAgICBNRVRIT0RfTk9UX0FMTE9XRUQgPSAoNDA1LCAnTWV0aG9kIE5vdCBBbGxvd2VkJywKKyAgICAgICAgJ1NwZWNpZmllZCBtZXRob2QgaXMgaW52YWxpZCBmb3IgdGhpcyByZXNvdXJjZScpCisgICAgTk9UX0FDQ0VQVEFCTEUgPSAoNDA2LCAnTm90IEFjY2VwdGFibGUnLAorICAgICAgICAnVVJJIG5vdCBhdmFpbGFibGUgaW4gcHJlZmVycmVkIGZvcm1hdCcpCisgICAgUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgPSAoNDA3LAorICAgICAgICAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAorICAgICAgICAnWW91IG11c3QgYXV0aGVudGljYXRlIHdpdGggdGhpcyBwcm94eSBiZWZvcmUgcHJvY2VlZGluZycpCisgICAgUkVRVUVTVF9USU1FT1VUID0gKDQwOCwgJ1JlcXVlc3QgVGltZW91dCcsCisgICAgICAgICdSZXF1ZXN0IHRpbWVkIG91dDsgdHJ5IGFnYWluIGxhdGVyJykKKyAgICBDT05GTElDVCA9IDQwOSwgJ0NvbmZsaWN0JywgJ1JlcXVlc3QgY29uZmxpY3QnCisgICAgR09ORSA9ICg0MTAsICdHb25lJywKKyAgICAgICAgJ1VSSSBubyBsb25nZXIgZXhpc3RzIGFuZCBoYXMgYmVlbiBwZXJtYW5lbnRseSByZW1vdmVkJykKKyAgICBMRU5HVEhfUkVRVUlSRUQgPSAoNDExLCAnTGVuZ3RoIFJlcXVpcmVkJywKKyAgICAgICAgJ0NsaWVudCBtdXN0IHNwZWNpZnkgQ29udGVudC1MZW5ndGgnKQorICAgIFBSRUNPTkRJVElPTl9GQUlMRUQgPSAoNDEyLCAnUHJlY29uZGl0aW9uIEZhaWxlZCcsCisgICAgICAgICdQcmVjb25kaXRpb24gaW4gaGVhZGVycyBpcyBmYWxzZScpCisgICAgUkVRVUVTVF9FTlRJVFlfVE9PX0xBUkdFID0gKDQxMywgJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsCisgICAgICAgICdFbnRpdHkgaXMgdG9vIGxhcmdlJykKKyAgICBSRVFVRVNUX1VSSV9UT09fTE9ORyA9ICg0MTQsICdSZXF1ZXN0LVVSSSBUb28gTG9uZycsCisgICAgICAgICdVUkkgaXMgdG9vIGxvbmcnKQorICAgIFVOU1VQUE9SVEVEX01FRElBX1RZUEUgPSAoNDE1LCAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCisgICAgICAgICdFbnRpdHkgYm9keSBpbiB1bnN1cHBvcnRlZCBmb3JtYXQnKQorICAgIFJFUVVFU1RFRF9SQU5HRV9OT1RfU0FUSVNGSUFCTEUgPSAoNDE2LAorICAgICAgICAnUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZScsCisgICAgICAgICdDYW5ub3Qgc2F0aXNmeSByZXF1ZXN0IHJhbmdlJykKKyAgICBFWFBFQ1RBVElPTl9GQUlMRUQgPSAoNDE3LCAnRXhwZWN0YXRpb24gRmFpbGVkJywKKyAgICAgICAgJ0V4cGVjdCBjb25kaXRpb24gY291bGQgbm90IGJlIHNhdGlzZmllZCcpCisgICAgVU5QUk9DRVNTQUJMRV9FTlRJVFkgPSA0MjIsICdVbnByb2Nlc3NhYmxlIEVudGl0eScKKyAgICBMT0NLRUQgPSA0MjMsICdMb2NrZWQnCisgICAgRkFJTEVEX0RFUEVOREVOQ1kgPSA0MjQsICdGYWlsZWQgRGVwZW5kZW5jeScKKyAgICBVUEdSQURFX1JFUVVJUkVEID0gNDI2LCAnVXBncmFkZSBSZXF1aXJlZCcKKyAgICBQUkVDT05ESVRJT05fUkVRVUlSRUQgPSAoNDI4LCAnUHJlY29uZGl0aW9uIFJlcXVpcmVkJywKKyAgICAgICAgJ1RoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsJykKKyAgICBUT09fTUFOWV9SRVFVRVNUUyA9ICg0MjksICdUb28gTWFueSBSZXF1ZXN0cycsCisgICAgICAgICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyBpbiAnCisgICAgICAgICdhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpJykKKyAgICBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFID0gKDQzMSwKKyAgICAgICAgJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLAorICAgICAgICAnVGhlIHNlcnZlciBpcyB1bndpbGxpbmcgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCBiZWNhdXNlIGl0cyBoZWFkZXIgJworICAgICAgICAnZmllbGRzIGFyZSB0b28gbGFyZ2UnKQorCisgICAgIyBzZXJ2ZXIgZXJyb3JzCisgICAgSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gKDUwMCwgJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCisgICAgICAgICdTZXJ2ZXIgZ290IGl0c2VsZiBpbiB0cm91YmxlJykKKyAgICBOT1RfSU1QTEVNRU5URUQgPSAoNTAxLCAnTm90IEltcGxlbWVudGVkJywKKyAgICAgICAgJ1NlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uJykKKyAgICBCQURfR0FURVdBWSA9ICg1MDIsICdCYWQgR2F0ZXdheScsCisgICAgICAgICdJbnZhbGlkIHJlc3BvbnNlcyBmcm9tIGFub3RoZXIgc2VydmVyL3Byb3h5JykKKyAgICBTRVJWSUNFX1VOQVZBSUxBQkxFID0gKDUwMywgJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAorICAgICAgICAnVGhlIHNlcnZlciBjYW5ub3QgcHJvY2VzcyB0aGUgcmVxdWVzdCBkdWUgdG8gYSBoaWdoIGxvYWQnKQorICAgIEdBVEVXQVlfVElNRU9VVCA9ICg1MDQsICdHYXRld2F5IFRpbWVvdXQnLAorICAgICAgICAnVGhlIGdhdGV3YXkgc2VydmVyIGRpZCBub3QgcmVjZWl2ZSBhIHRpbWVseSByZXNwb25zZScpCisgICAgSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQgPSAoNTA1LCAnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLAorICAgICAgICAnQ2Fubm90IGZ1bGZpbGwgcmVxdWVzdCcpCisgICAgVkFSSUFOVF9BTFNPX05FR09USUFURVMgPSA1MDYsICdWYXJpYW50IEFsc28gTmVnb3RpYXRlcycKKyAgICBJTlNVRkZJQ0lFTlRfU1RPUkFHRSA9IDUwNywgJ0luc3VmZmljaWVudCBTdG9yYWdlJworICAgIExPT1BfREVURUNURUQgPSA1MDgsICdMb29wIERldGVjdGVkJworICAgIE5PVF9FWFRFTkRFRCA9IDUxMCwgJ05vdCBFeHRlbmRlZCcKKyAgICBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEID0gKDUxMSwKKyAgICAgICAgJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAorICAgICAgICAnVGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2VzcycpCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jbGllbnQucHkgYi9MaWIvaHR0cC9jbGllbnQucHkKaW5kZXggMWM2OWRjYi4uODBjODBjZiAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY2xpZW50LnB5CisrKyBiL0xpYi9odHRwL2NsaWVudC5weQpAQCAtMjAsMTAgKzIwLDEyIEBACiAgICAgICB8ICggcHV0aGVhZGVyKCkgKSogIGVuZGhlYWRlcnMoKQogICAgICAgdgogICAgIFJlcXVlc3Qtc2VudAotICAgICAgfAotICAgICAgfCByZXNwb25zZSA9IGdldHJlc3BvbnNlKCkKLSAgICAgIHYKLSAgICBVbnJlYWQtcmVzcG9uc2UgICBbUmVzcG9uc2UtaGVhZGVycy1yZWFkXQorICAgICAgfFxfX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0cmVzcG9uc2UoKSByYWlzZXMKKyAgICAgIHwgcmVzcG9uc2UgPSBnZXRyZXNwb25zZSgpICAgICB8IENvbm5lY3Rpb25FcnJvcgorICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICBVbnJlYWQtcmVzcG9uc2UgICAgICAgICAgICAgICAgSWRsZQorICAgIFtSZXNwb25zZS1oZWFkZXJzLXJlYWRdCiAgICAgICB8XF9fX19fX19fX19fX19fX19fX19fCiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAogICAgICAgfCByZXNwb25zZS5yZWFkKCkgICAgIHwgcHV0cmVxdWVzdCgpCkBAIC02OCw2ICs3MCw3IEBACiAKIGltcG9ydCBlbWFpbC5wYXJzZXIKIGltcG9ydCBlbWFpbC5tZXNzYWdlCitpbXBvcnQgaHR0cAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtODIsNyArODUsOCBAQAogICAgICAgICAgICAiVW5rbm93blRyYW5zZmVyRW5jb2RpbmciLCAiVW5pbXBsZW1lbnRlZEZpbGVNb2RlIiwKICAgICAgICAgICAgIkluY29tcGxldGVSZWFkIiwgIkludmFsaWRVUkwiLCAiSW1wcm9wZXJDb25uZWN0aW9uU3RhdGUiLAogICAgICAgICAgICAiQ2Fubm90U2VuZFJlcXVlc3QiLCAiQ2Fubm90U2VuZEhlYWRlciIsICJSZXNwb25zZU5vdFJlYWR5IiwKLSAgICAgICAgICAgIkJhZFN0YXR1c0xpbmUiLCAiTGluZVRvb0xvbmciLCAiZXJyb3IiLCAicmVzcG9uc2VzIl0KKyAgICAgICAgICAgIkJhZFN0YXR1c0xpbmUiLCAiTGluZVRvb0xvbmciLCAiUmVtb3RlRGlzY29ubmVjdGVkIiwgImVycm9yIiwKKyAgICAgICAgICAgInJlc3BvbnNlcyJdCiAKIEhUVFBfUE9SVCA9IDgwCiBIVFRQU19QT1JUID0gNDQzCkBAIC05NCwxMjIgKzk4LDEzIEBACiBfQ1NfUkVRX1NUQVJURUQgPSAnUmVxdWVzdC1zdGFydGVkJwogX0NTX1JFUV9TRU5UID0gJ1JlcXVlc3Qtc2VudCcKIAotIyBzdGF0dXMgY29kZXMKLSMgaW5mb3JtYXRpb25hbAotQ09OVElOVUUgPSAxMDAKLVNXSVRDSElOR19QUk9UT0NPTFMgPSAxMDEKLVBST0NFU1NJTkcgPSAxMDIKIAotIyBzdWNjZXNzZnVsCi1PSyA9IDIwMAotQ1JFQVRFRCA9IDIwMQotQUNDRVBURUQgPSAyMDIKLU5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OID0gMjAzCi1OT19DT05URU5UID0gMjA0Ci1SRVNFVF9DT05URU5UID0gMjA1Ci1QQVJUSUFMX0NPTlRFTlQgPSAyMDYKLU1VTFRJX1NUQVRVUyA9IDIwNwotSU1fVVNFRCA9IDIyNgorIyBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CitnbG9iYWxzKCkudXBkYXRlKGh0dHAuSFRUUFN0YXR1cy5fX21lbWJlcnNfXykKIAotIyByZWRpcmVjdGlvbgotTVVMVElQTEVfQ0hPSUNFUyA9IDMwMAotTU9WRURfUEVSTUFORU5UTFkgPSAzMDEKLUZPVU5EID0gMzAyCi1TRUVfT1RIRVIgPSAzMDMKLU5PVF9NT0RJRklFRCA9IDMwNAotVVNFX1BST1hZID0gMzA1Ci1URU1QT1JBUllfUkVESVJFQ1QgPSAzMDcKLQotIyBjbGllbnQgZXJyb3IKLUJBRF9SRVFVRVNUID0gNDAwCi1VTkFVVEhPUklaRUQgPSA0MDEKLVBBWU1FTlRfUkVRVUlSRUQgPSA0MDIKLUZPUkJJRERFTiA9IDQwMwotTk9UX0ZPVU5EID0gNDA0Ci1NRVRIT0RfTk9UX0FMTE9XRUQgPSA0MDUKLU5PVF9BQ0NFUFRBQkxFID0gNDA2Ci1QUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9IDQwNwotUkVRVUVTVF9USU1FT1VUID0gNDA4Ci1DT05GTElDVCA9IDQwOQotR09ORSA9IDQxMAotTEVOR1RIX1JFUVVJUkVEID0gNDExCi1QUkVDT05ESVRJT05fRkFJTEVEID0gNDEyCi1SRVFVRVNUX0VOVElUWV9UT09fTEFSR0UgPSA0MTMKLVJFUVVFU1RfVVJJX1RPT19MT05HID0gNDE0Ci1VTlNVUFBPUlRFRF9NRURJQV9UWVBFID0gNDE1Ci1SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFID0gNDE2Ci1FWFBFQ1RBVElPTl9GQUlMRUQgPSA0MTcKLVVOUFJPQ0VTU0FCTEVfRU5USVRZID0gNDIyCi1MT0NLRUQgPSA0MjMKLUZBSUxFRF9ERVBFTkRFTkNZID0gNDI0Ci1VUEdSQURFX1JFUVVJUkVEID0gNDI2Ci1QUkVDT05ESVRJT05fUkVRVUlSRUQgPSA0MjgKLVRPT19NQU5ZX1JFUVVFU1RTID0gNDI5Ci1SRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFID0gNDMxCi0KLSMgc2VydmVyIGVycm9yCi1JTlRFUk5BTF9TRVJWRVJfRVJST1IgPSA1MDAKLU5PVF9JTVBMRU1FTlRFRCA9IDUwMQotQkFEX0dBVEVXQVkgPSA1MDIKLVNFUlZJQ0VfVU5BVkFJTEFCTEUgPSA1MDMKLUdBVEVXQVlfVElNRU9VVCA9IDUwNAotSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQgPSA1MDUKLUlOU1VGRklDSUVOVF9TVE9SQUdFID0gNTA3Ci1OT1RfRVhURU5ERUQgPSA1MTAKLU5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQgPSA1MTEKLQorIyBhbm90aGVyIGhhY2sgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKICMgTWFwcGluZyBzdGF0dXMgY29kZXMgdG8gb2ZmaWNpYWwgVzNDIG5hbWVzCi1yZXNwb25zZXMgPSB7Ci0gICAgMTAwOiAnQ29udGludWUnLAotICAgIDEwMTogJ1N3aXRjaGluZyBQcm90b2NvbHMnLAotCi0gICAgMjAwOiAnT0snLAotICAgIDIwMTogJ0NyZWF0ZWQnLAotICAgIDIwMjogJ0FjY2VwdGVkJywKLSAgICAyMDM6ICdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsCi0gICAgMjA0OiAnTm8gQ29udGVudCcsCi0gICAgMjA1OiAnUmVzZXQgQ29udGVudCcsCi0gICAgMjA2OiAnUGFydGlhbCBDb250ZW50JywKLQotICAgIDMwMDogJ011bHRpcGxlIENob2ljZXMnLAotICAgIDMwMTogJ01vdmVkIFBlcm1hbmVudGx5JywKLSAgICAzMDI6ICdGb3VuZCcsCi0gICAgMzAzOiAnU2VlIE90aGVyJywKLSAgICAzMDQ6ICdOb3QgTW9kaWZpZWQnLAotICAgIDMwNTogJ1VzZSBQcm94eScsCi0gICAgMzA2OiAnKFVudXNlZCknLAotICAgIDMwNzogJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCi0KLSAgICA0MDA6ICdCYWQgUmVxdWVzdCcsCi0gICAgNDAxOiAnVW5hdXRob3JpemVkJywKLSAgICA0MDI6ICdQYXltZW50IFJlcXVpcmVkJywKLSAgICA0MDM6ICdGb3JiaWRkZW4nLAotICAgIDQwNDogJ05vdCBGb3VuZCcsCi0gICAgNDA1OiAnTWV0aG9kIE5vdCBBbGxvd2VkJywKLSAgICA0MDY6ICdOb3QgQWNjZXB0YWJsZScsCi0gICAgNDA3OiAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAotICAgIDQwODogJ1JlcXVlc3QgVGltZW91dCcsCi0gICAgNDA5OiAnQ29uZmxpY3QnLAotICAgIDQxMDogJ0dvbmUnLAotICAgIDQxMTogJ0xlbmd0aCBSZXF1aXJlZCcsCi0gICAgNDEyOiAnUHJlY29uZGl0aW9uIEZhaWxlZCcsCi0gICAgNDEzOiAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJywKLSAgICA0MTQ6ICdSZXF1ZXN0LVVSSSBUb28gTG9uZycsCi0gICAgNDE1OiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCi0gICAgNDE2OiAnUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZScsCi0gICAgNDE3OiAnRXhwZWN0YXRpb24gRmFpbGVkJywKLSAgICA0Mjg6ICdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAotICAgIDQyOTogJ1RvbyBNYW55IFJlcXVlc3RzJywKLSAgICA0MzE6ICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKLQotICAgIDUwMDogJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCi0gICAgNTAxOiAnTm90IEltcGxlbWVudGVkJywKLSAgICA1MDI6ICdCYWQgR2F0ZXdheScsCi0gICAgNTAzOiAnU2VydmljZSBVbmF2YWlsYWJsZScsCi0gICAgNTA0OiAnR2F0ZXdheSBUaW1lb3V0JywKLSAgICA1MDU6ICdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsCi0gICAgNTExOiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCi19CityZXNwb25zZXMgPSB7djogdi5waHJhc2UgZm9yIHYgaW4gaHR0cC5IVFRQU3RhdHVzLl9fbWVtYmVyc19fLnZhbHVlcygpfQogCiAjIG1heGltYWwgYW1vdW50IG9mIGRhdGEgdG8gcmVhZCBhdCBvbmUgdGltZSBpbiBfc2FmZV9yZWFkCiBNQVhBTU9VTlQgPSAxMDQ4NTc2CkBAIC0zMDUsNyArMjAwLDcgQEAKICAgICByZXR1cm4gZW1haWwucGFyc2VyLlBhcnNlcihfY2xhc3M9X2NsYXNzKS5wYXJzZXN0cihoc3RyaW5nKQogCiAKLWNsYXNzIEhUVFBSZXNwb25zZShpby5SYXdJT0Jhc2UpOgorY2xhc3MgSFRUUFJlc3BvbnNlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKIAogICAgICMgU2VlIFJGQyAyNjE2IHNlYyAxOS42IGFuZCBSRkMgMTk0NSBzZWMgNiBmb3IgZGV0YWlscy4KIApAQCAtMzUzLDcgKzI0OCw4IEBACiAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgIyBQcmVzdW1hYmx5LCB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiBiZWZvcmUKICAgICAgICAgICAgICMgc2VuZGluZyBhIHZhbGlkIHJlc3BvbnNlLgotICAgICAgICAgICAgcmFpc2UgQmFkU3RhdHVzTGluZShsaW5lKQorICAgICAgICAgICAgcmFpc2UgUmVtb3RlRGlzY29ubmVjdGVkKCJSZW1vdGUgZW5kIGNsb3NlZCBjb25uZWN0aW9uIHdpdGhvdXQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiByZXNwb25zZSIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZlcnNpb24sIHN0YXR1cywgcmVhc29uID0gbGluZS5zcGxpdChOb25lLCAyKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTUzMiw5ICs0MjgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBiIiIKIAogICAgICAgICBpZiBhbXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIEFtb3VudCBpcyBnaXZlbiwgc28gY2FsbCBiYXNlIGNsYXNzIHZlcnNpb24KLSAgICAgICAgICAgICMgKHdoaWNoIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHNlbGYucmVhZGludG8pCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoSFRUUFJlc3BvbnNlLCBzZWxmKS5yZWFkKGFtdCkKKyAgICAgICAgICAgICMgQW1vdW50IGlzIGdpdmVuLCBpbXBsZW1lbnQgdXNpbmcgcmVhZGludG8KKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkoYW10KQorICAgICAgICAgICAgbiA9IHNlbGYucmVhZGludG8oYikKKyAgICAgICAgICAgIHJldHVybiBtZW1vcnl2aWV3KGIpWzpuXS50b2J5dGVzKCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQW1vdW50IGlzIG5vdCBnaXZlbiAodW5ib3VuZGVkIHJlYWQpIHNvIHdlIG11c3QgY2hlY2sgc2VsZi5sZW5ndGgKICAgICAgICAgICAgICMgYW5kIHNlbGYuY2h1bmtlZApAQCAtNjE0LDcxICs1MTEsNjcgQEAKICAgICAgICAgICAgIGlmIGxpbmUgaW4gKGInXHJcbicsIGInXG4nLCBiJycpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICBkZWYgX2dldF9jaHVua19sZWZ0KHNlbGYpOgorICAgICAgICAjIHJldHVybiBzZWxmLmNodW5rX2xlZnQsIHJlYWRpbmcgYSBuZXcgY2h1bmsgaWYgbmVjZXNzYXJ5LgorICAgICAgICAjIGNodW5rX2xlZnQgPT0gMDogYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBjaHVuaywgbmVlZCB0byBjbG9zZSBpdAorICAgICAgICAjIGNodW5rX2xlZnQgPT0gTm9uZTogTm8gY3VycmVudCBjaHVuaywgc2hvdWxkIHJlYWQgbmV4dC4KKyAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgbm9uLXplcm8gb3IgTm9uZSBpZiB0aGUgbGFzdCBjaHVuayBoYXMKKyAgICAgICAgIyBiZWVuIHJlYWQuCisgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKKyAgICAgICAgaWYgbm90IGNodW5rX2xlZnQ6ICMgQ2FuIGJlIDAgb3IgTm9uZQorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFdlIGFyZSBhdCB0aGUgZW5kIG9mIGNodW5rLiBkaWNhcmQgY2h1bmsgZW5kCisgICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fcmVhZF9uZXh0X2NodW5rX3NpemUoKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnKQorICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICMgbGFzdCBjaHVuazogMSooIjAiKSBbIGNodW5rLWV4dGVuc2lvbiBdIENSTEYKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorICAgICAgICAgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQKKyAgICAgICAgcmV0dXJuIGNodW5rX2xlZnQKKwogICAgIGRlZiBfcmVhZGFsbF9jaHVua2VkKHNlbGYpOgogICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKICAgICAgICAgdmFsdWUgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQotICAgICAgICAgICAgdmFsdWUuYXBwZW5kKHNlbGYuX3NhZmVfcmVhZChjaHVua19sZWZ0KSkKLQotICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKLSAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQotCi0gICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCi0gICAgICAgIHNlbGYuX2Nsb3NlX2Nvbm4oKQotCi0gICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQorICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IDAKKyAgICAgICAgICAgIHJldHVybiBiJycuam9pbih2YWx1ZSkKKyAgICAgICAgZXhjZXB0IEluY29tcGxldGVSZWFkOgorICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYicnLmpvaW4odmFsdWUpKQogCiAgICAgZGVmIF9yZWFkaW50b19jaHVua2VkKHNlbGYsIGIpOgogICAgICAgICBhc3NlcnQgc2VsZi5jaHVua2VkICE9IF9VTktOT1dOCi0gICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLmNodW5rX2xlZnQKLQogICAgICAgICB0b3RhbF9ieXRlcyA9IDAKICAgICAgICAgbXZiID0gbWVtb3J5dmlldyhiKQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX3JlYWRfbmV4dF9jaHVua19zaXplKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtfbGVmdCA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYnl0ZXMoYlswOnRvdGFsX2J5dGVzXSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuX2dldF9jaHVua19sZWZ0KCkKKyAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcwogCi0gICAgICAgICAgICBpZiBsZW4obXZiKSA8IGNodW5rX2xlZnQ6Ci0gICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8obXZiKQotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgotICAgICAgICAgICAgZWxpZiBsZW4obXZiKSA9PSBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKLSAgICAgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuawotICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IE5vbmUKLSAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMgKyBuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzA6Y2h1bmtfbGVmdF0KKyAgICAgICAgICAgICAgICBpZiBsZW4obXZiKSA8PSBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byhtdmIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY2h1bmtfbGVmdCA9IGNodW5rX2xlZnQgLSBuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcyArIG4KKworICAgICAgICAgICAgICAgIHRlbXBfbXZiID0gbXZiWzpjaHVua19sZWZ0XQogICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKHRlbXBfbXZiKQogICAgICAgICAgICAgICAgIG12YiA9IG12YltuOl0KICAgICAgICAgICAgICAgICB0b3RhbF9ieXRlcyArPSBuCisgICAgICAgICAgICAgICAgc2VsZi5jaHVua19sZWZ0ID0gMAogCi0gICAgICAgICAgICAjIHdlIHJlYWQgdGhlIHdob2xlIGNodW5rLCBnZXQgYW5vdGhlcgotICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAgICAgIyB0b3NzIHRoZSBDUkxGIGF0IHRoZSBlbmQgb2YgdGhlIGNodW5rCi0gICAgICAgICAgICBjaHVua19sZWZ0ID0gTm9uZQotCi0gICAgICAgIHNlbGYuX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcigpCi0KLSAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmc7IGNsb3NlIHRoZSAiZmlsZSIKLSAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCi0KLSAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzCisgICAgICAgIGV4Y2VwdCBJbmNvbXBsZXRlUmVhZDoKKyAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGJ5dGVzKGJbMDp0b3RhbF9ieXRlc10pKQogCiAgICAgZGVmIF9zYWZlX3JlYWQoc2VsZiwgYW10KToKICAgICAgICAgIiIiUmVhZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCwgY29tcGVuc2F0aW5nIGZvciBwYXJ0aWFsIHJlYWRzLgpAQCAtNzE5LDYgKzYxMiw3MyBAQAogICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgogICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMKIAorICAgIGRlZiByZWFkMShzZWxmLCBuPS0xKToKKyAgICAgICAgIiIiUmVhZCB3aXRoIGF0IG1vc3Qgb25lIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwuICBJZiBhdCBsZWFzdCBvbmUKKyAgICAgICAgYnl0ZSBpcyBidWZmZXJlZCwgcmV0dXJuIHRoYXQgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZSBvciBzZWxmLl9tZXRob2QgPT0gIkhFQUQiOgorICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZDFfY2h1bmtlZChuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZwLnJlYWQxKG4pCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgaWYgbiA+PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIHNvbWUgaW1wbGVtZW50YXRpb25zLCBsaWtlIEJ1ZmZlcmVkUmVhZGVyLCBkb24ndCBzdXBwb3J0IC0xCisgICAgICAgICAgICAjIFJlYWQgYW4gYXJiaXRyYXJpbHkgc2VsZWN0ZWQgbGFyZ2Vpc2ggY2h1bmsuCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZwLnJlYWQxKDE2KjEwMjQpCisgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIG46CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9jb25uKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHBlZWsoc2VsZiwgbj0tMSk6CisgICAgICAgICMgSGF2aW5nIHRoaXMgZW5hYmxlcyBJT0Jhc2UucmVhZGxpbmUoKSB0byByZWFkIG1vcmUgdGhhbiBvbmUKKyAgICAgICAgIyBieXRlIGF0IGEgdGltZQorICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmUgb3Igc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgaWYgc2VsZi5jaHVua2VkOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BlZWtfY2h1bmtlZChuKQorICAgICAgICByZXR1cm4gc2VsZi5mcC5wZWVrKG4pCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQ9LTEpOgorICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmUgb3Igc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgaWYgc2VsZi5jaHVua2VkOgorICAgICAgICAgICAgIyBGYWxsYmFjayB0byBJT0Jhc2UgcmVhZGxpbmUgd2hpY2ggdXNlcyBwZWVrKCkgYW5kIHJlYWQoKQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkucmVhZGxpbmUobGltaXQpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZnAucmVhZGxpbmUobGltaXQpCisgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIGxpbWl0OgorICAgICAgICAgICAgc2VsZi5fY2xvc2VfY29ubigpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcmVhZDFfY2h1bmtlZChzZWxmLCBuKToKKyAgICAgICAgIyBTdHJpY3RseSBzcGVha2luZywgX2dldF9jaHVua19sZWZ0KCkgbWF5IGNhdXNlIG1vcmUgdGhhbiBvbmUgcmVhZCwKKyAgICAgICAgIyBidXQgdGhhdCBpcyBvaywgc2luY2UgdGhhdCBpcyB0byBzYXRpc2Z5IHRoZSBjaHVua2VkIHByb3RvY29sLgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmUgb3IgbiA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIGInJworICAgICAgICBpZiBub3QgKDAgPD0gbiA8PSBjaHVua19sZWZ0KToKKyAgICAgICAgICAgIG4gPSBjaHVua19sZWZ0ICMgaWYgbiBpcyBuZWdhdGl2ZSBvciBsYXJnZXIgdGhhbiBjaHVua19sZWZ0CisgICAgICAgIHJlYWQgPSBzZWxmLmZwLnJlYWQxKG4pCisgICAgICAgIHNlbGYuY2h1bmtfbGVmdCAtPSBsZW4ocmVhZCkKKyAgICAgICAgaWYgbm90IHJlYWQ6CisgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChiIiIpCisgICAgICAgIHJldHVybiByZWFkCisKKyAgICBkZWYgX3BlZWtfY2h1bmtlZChzZWxmLCBuKToKKyAgICAgICAgIyBTdHJpY3RseSBzcGVha2luZywgX2dldF9jaHVua19sZWZ0KCkgbWF5IGNhdXNlIG1vcmUgdGhhbiBvbmUgcmVhZCwKKyAgICAgICAgIyBidXQgdGhhdCBpcyBvaywgc2luY2UgdGhhdCBpcyB0byBzYXRpc2Z5IHRoZSBjaHVua2VkIHByb3RvY29sLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fZ2V0X2NodW5rX2xlZnQoKQorICAgICAgICBleGNlcHQgSW5jb21wbGV0ZVJlYWQ6CisgICAgICAgICAgICByZXR1cm4gYicnICMgcGVlayBkb2Vzbid0IHdvcnJ5IGFib3V0IHByb3RvY29sCisgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBiJycgIyBlb2YKKyAgICAgICAgIyBwZWVrIGlzIGFsbG93ZWQgdG8gcmV0dXJuIG1vcmUgdGhhbiByZXF1ZXN0ZWQuICBKdXN0IHJlcXVlc3QgdGhlCisgICAgICAgICMgZW50aXJlIGNodW5rLCBhbmQgdHJ1bmNhdGUgd2hhdCB3ZSBnZXQuCisgICAgICAgIHJldHVybiBzZWxmLmZwLnBlZWsoY2h1bmtfbGVmdClbOmNodW5rX2xlZnRdCisKICAgICBkZWYgZmlsZW5vKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5mcC5maWxlbm8oKQogCkBAIC03NjIsMTQgKzcyMiw2IEBACiAgICAgZGVmYXVsdF9wb3J0ID0gSFRUUF9QT1JUCiAgICAgYXV0b19vcGVuID0gMQogICAgIGRlYnVnbGV2ZWwgPSAwCi0gICAgIyBUQ1AgTWF4aW11bSBTZWdtZW50IFNpemUgKE1TUykgaXMgZGV0ZXJtaW5lZCBieSB0aGUgVENQIHN0YWNrIG9uCi0gICAgIyBhIHBlci1jb25uZWN0aW9uIGJhc2lzLiAgVGhlcmUgaXMgbm8gc2ltcGxlIGFuZCBlZmZpY2llbnQKLSAgICAjIHBsYXRmb3JtIGluZGVwZW5kZW50IG1lY2hhbmlzbSBmb3IgZGV0ZXJtaW5pbmcgdGhlIE1TUywgc28KLSAgICAjIGluc3RlYWQgYSByZWFzb25hYmxlIGVzdGltYXRlIGlzIGNob3Nlbi4gIFRoZSBnZXRzb2Nrb3B0KCkKLSAgICAjIGludGVyZmFjZSB1c2luZyB0aGUgVENQX01BWFNFRyBwYXJhbWV0ZXIgbWF5IGJlIGEgc3VpdGFibGUKLSAgICAjIGFwcHJvYWNoIG9uIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMuIEEgdmFsdWUgb2YgMTZLaUIgaXMgY2hvc2VuCi0gICAgIyBhcyBhIHJlYXNvbmFibGUgZXN0aW1hdGUgb2YgdGhlIG1heGltdW0gTVNTLgotICAgIG1zcyA9IDE2Mzg0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CkBAIC04NTEsNyArODAzLDcgQEAKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlc3BvbnNlX2NsYXNzKHNlbGYuc29jaywgbWV0aG9kPXNlbGYuX21ldGhvZCkKICAgICAgICAgKHZlcnNpb24sIGNvZGUsIG1lc3NhZ2UpID0gcmVzcG9uc2UuX3JlYWRfc3RhdHVzKCkKIAotICAgICAgICBpZiBjb2RlICE9IDIwMDoKKyAgICAgICAgaWYgY29kZSAhPSBodHRwLkhUVFBTdGF0dXMuT0s6CiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoIlR1bm5lbCBjb25uZWN0aW9uIGZhaWxlZDogJWQgJXMiICUgKGNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnN0cmlwKCkpKQpAQCAtODY1LDEwICs4MTcsMTQgQEAKICAgICAgICAgICAgIGlmIGxpbmUgaW4gKGInXHJcbicsIGInXG4nLCBiJycpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgcHJpbnQoJ2hlYWRlcjonLCBsaW5lLmRlY29kZSgpKQorCiAgICAgZGVmIGNvbm5lY3Qoc2VsZik6CiAgICAgICAgICIiIkNvbm5lY3QgdG8gdGhlIGhvc3QgYW5kIHBvcnQgc3BlY2lmaWVkIGluIF9faW5pdF9fLiIiIgotICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbigoc2VsZi5ob3N0LHNlbGYucG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGltZW91dCwgc2VsZi5zb3VyY2VfYWRkcmVzcykKKyAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAoc2VsZi5ob3N0LHNlbGYucG9ydCksIHNlbGYudGltZW91dCwgc2VsZi5zb3VyY2VfYWRkcmVzcykKKyAgICAgICAgc2VsZi5zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLCBzb2NrZXQuVENQX05PREVMQVksIDEpCiAKICAgICAgICAgaWYgc2VsZi5fdHVubmVsX2hvc3Q6CiAgICAgICAgICAgICBzZWxmLl90dW5uZWwoKQpAQCAtOTUxLDE5ICs5MDcsOSBAQAogICAgICAgICBzZWxmLl9idWZmZXIuZXh0ZW5kKChiIiIsIGIiIikpCiAgICAgICAgIG1zZyA9IGIiXHJcbiIuam9pbihzZWxmLl9idWZmZXIpCiAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOl0KLSAgICAgICAgIyBJZiBtc2cgYW5kIG1lc3NhZ2VfYm9keSBhcmUgc2VudCBpbiBhIHNpbmdsZSBzZW5kKCkgY2FsbCwKLSAgICAgICAgIyBpdCB3aWxsIGF2b2lkIHBlcmZvcm1hbmNlIHByb2JsZW1zIGNhdXNlZCBieSB0aGUgaW50ZXJhY3Rpb24KLSAgICAgICAgIyBiZXR3ZWVuIGRlbGF5ZWQgYWNrIGFuZCB0aGUgTmFnbGUgYWxnb3JpdGhtLiBIb3dldmVyLAotICAgICAgICAjIHRoZXJlIGlzIG5vIHBlcmZvcm1hbmNlIGdhaW4gaWYgdGhlIG1lc3NhZ2UgaXMgbGFyZ2VyCi0gICAgICAgICMgdGhhbiBNU1MgKGFuZCB0aGVyZSBpcyBhIG1lbW9yeSBwZW5hbHR5IGZvciB0aGUgbWVzc2FnZQotICAgICAgICAjIGNvcHkpLgotICAgICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2VfYm9keSwgYnl0ZXMpIGFuZCBsZW4obWVzc2FnZV9ib2R5KSA8IHNlbGYubXNzOgotICAgICAgICAgICAgbXNnICs9IG1lc3NhZ2VfYm9keQotICAgICAgICAgICAgbWVzc2FnZV9ib2R5ID0gTm9uZQorCiAgICAgICAgIHNlbGYuc2VuZChtc2cpCiAgICAgICAgIGlmIG1lc3NhZ2VfYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgbWVzc2FnZV9ib2R5IHdhcyBub3QgYSBzdHJpbmcgKGkuZS4gaXQgaXMgYSBmaWxlKSwgYW5kCi0gICAgICAgICAgICAjIHdlIG11c3QgcnVuIHRoZSByaXNrIG9mIE5hZ2xlLgogICAgICAgICAgICAgc2VsZi5zZW5kKG1lc3NhZ2VfYm9keSkKIAogICAgIGRlZiBwdXRyZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBza2lwX2hvc3Q9MCwgc2tpcF9hY2NlcHRfZW5jb2Rpbmc9MCk6CkBAIC0xMjI0LDcgKzExNzAsMTEgQEAKICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXNwb25zZV9jbGFzcyhzZWxmLnNvY2ssIG1ldGhvZD1zZWxmLl9tZXRob2QpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UuYmVnaW4oKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJlZ2luKCkKKyAgICAgICAgICAgIGV4Y2VwdCBDb25uZWN0aW9uRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS53aWxsX2Nsb3NlICE9IF9VTktOT1dOCiAgICAgICAgICAgICBzZWxmLl9fc3RhdGUgPSBfQ1NfSURMRQogCkBAIC0xMzI3LDcgKzEyNzcsOCBAQAogICAgICAgICAgICAgZSA9ICcsICVpIG1vcmUgZXhwZWN0ZWQnICUgc2VsZi5leHBlY3RlZAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZSA9ICcnCi0gICAgICAgIHJldHVybiAnSW5jb21wbGV0ZVJlYWQoJWkgYnl0ZXMgcmVhZCVzKScgJSAobGVuKHNlbGYucGFydGlhbCksIGUpCisgICAgICAgIHJldHVybiAnJXMoJWkgYnl0ZXMgcmVhZCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYucGFydGlhbCksIGUpCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiByZXByKHNlbGYpCiAKQEAgLTEzNTUsNSArMTMwNiwxMCBAQAogICAgICAgICBIVFRQRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsICJnb3QgbW9yZSB0aGFuICVkIGJ5dGVzIHdoZW4gcmVhZGluZyAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChfTUFYTElORSwgbGluZV90eXBlKSkKIAorY2xhc3MgUmVtb3RlRGlzY29ubmVjdGVkKENvbm5lY3Rpb25SZXNldEVycm9yLCBCYWRTdGF0dXNMaW5lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIEJhZFN0YXR1c0xpbmUuX19pbml0X18oc2VsZiwgIiIpCisgICAgICAgIENvbm5lY3Rpb25SZXNldEVycm9yLl9faW5pdF9fKHNlbGYsICpwb3MsICoqa3cpCisKICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiBlcnJvciA9IEhUVFBFeGNlcHRpb24KZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZWphci5weSBiL0xpYi9odHRwL2Nvb2tpZWphci5weQppbmRleCA5MmVhZDUzLi5iMWJhNzJlIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVqYXIucHkKKysrIGIvTGliL2h0dHAvY29va2llamFyLnB5CkBAIC04MjEsNyArODIxLDcgQEAKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIlcz0lcyIgJSAobmFtZSwgcmVwcihhdHRyKSkpCiAgICAgICAgIGFyZ3MuYXBwZW5kKCJyZXN0PSVzIiAlIHJlcHIoc2VsZi5fcmVzdCkpCiAgICAgICAgIGFyZ3MuYXBwZW5kKCJyZmMyMTA5PSVzIiAlIHJlcHIoc2VsZi5yZmMyMTA5KSkKLSAgICAgICAgcmV0dXJuICJDb29raWUoJXMpIiAlICIsICIuam9pbihhcmdzKQorICAgICAgICByZXR1cm4gIiVzKCVzKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICIsICIuam9pbihhcmdzKSkKIAogCiBjbGFzcyBDb29raWVQb2xpY3k6CkBAIC0xOTk5LDcgKzE5OTksNiBAQAogCiAgICAgICAgIG1hZ2ljID0gZi5yZWFkbGluZSgpCiAgICAgICAgIGlmIG5vdCBzZWxmLm1hZ2ljX3JlLnNlYXJjaChtYWdpYyk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlIExvYWRFcnJvcigKICAgICAgICAgICAgICAgICAiJXIgZG9lcyBub3QgbG9vayBsaWtlIGEgTmV0c2NhcGUgZm9ybWF0IGNvb2tpZXMgZmlsZSIgJQogICAgICAgICAgICAgICAgIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggNDgyZTYwMS4uZmRhMDJiNyAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC0xMzgsNiArMTM4LDEyIEBACiBfc2VtaXNwYWNlam9pbiA9ICc7ICcuam9pbgogX3NwYWNlam9pbiA9ICcgJy5qb2luCiAKK2RlZiBfd2Fybl9kZXByZWNhdGVkX3NldHRlcihzZXR0ZXIpOgorICAgIGltcG9ydCB3YXJuaW5ncworICAgIG1zZyA9ICgnVGhlIC4lcyBzZXR0ZXIgaXMgZGVwcmVjYXRlZC4gVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIHJlYWQtb25seSBpbiAnCisgICAgICAgICAgICdmdXR1cmUgcmVsZWFzZXMuIFBsZWFzZSB1c2UgdGhlIHNldCgpIG1ldGhvZCBpbnN0ZWFkLicgJSBzZXR0ZXIpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0zKQorCiAjCiAjIERlZmluZSBhbiBleGNlcHRpb24gdmlzaWJsZSB0byBFeHRlcm5hbCBtb2R1bGVzCiAjCkBAIC0xNTEsODggKzE1NywzNiBAQAogIyBpbnRvIGEgNCBjaGFyYWN0ZXIgc2VxdWVuY2U6IGEgZm9yd2FyZC1zbGFzaCBmb2xsb3dlZCBieSB0aGUKICMgdGhyZWUtZGlnaXQgb2N0YWwgZXF1aXZhbGVudCBvZiB0aGUgY2hhcmFjdGVyLiAgQW55ICdcJyBvciAnIicgaXMKICMgcXVvdGVkIHdpdGggYSBwcmVjZWVkaW5nICdcJyBzbGFzaC4KKyMgQmVjYXVzZSBvZiB0aGUgd2F5IGJyb3dzZXJzIHJlYWxseSBoYW5kbGUgY29va2llcyAoYXMgb3Bwb3NlZCB0byB3aGF0CisjIHRoZSBSRkMgc2F5cykgd2UgYWxzbyBlbmNvZGUgIiwiIGFuZCAiOyIuCiAjCiAjIFRoZXNlIGFyZSB0YWtlbiBmcm9tIFJGQzIwNjggYW5kIFJGQzIxMDkuCiAjICAgICAgIF9MZWdhbENoYXJzICAgICAgIGlzIHRoZSBsaXN0IG9mIGNoYXJzIHdoaWNoIGRvbid0IHJlcXVpcmUgIidzCiAjICAgICAgIF9UcmFuc2xhdG9yICAgICAgIGhhc2gtdGFibGUgZm9yIGZhc3QgcXVvdGluZwogIwotX0xlZ2FsQ2hhcnMgICAgICAgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+OiIKLV9UcmFuc2xhdG9yICAgICAgID0gewotICAgICdcMDAwJyA6ICdcXDAwMCcsICAnXDAwMScgOiAnXFwwMDEnLCAgJ1wwMDInIDogJ1xcMDAyJywKLSAgICAnXDAwMycgOiAnXFwwMDMnLCAgJ1wwMDQnIDogJ1xcMDA0JywgICdcMDA1JyA6ICdcXDAwNScsCi0gICAgJ1wwMDYnIDogJ1xcMDA2JywgICdcMDA3JyA6ICdcXDAwNycsICAnXDAxMCcgOiAnXFwwMTAnLAotICAgICdcMDExJyA6ICdcXDAxMScsICAnXDAxMicgOiAnXFwwMTInLCAgJ1wwMTMnIDogJ1xcMDEzJywKLSAgICAnXDAxNCcgOiAnXFwwMTQnLCAgJ1wwMTUnIDogJ1xcMDE1JywgICdcMDE2JyA6ICdcXDAxNicsCi0gICAgJ1wwMTcnIDogJ1xcMDE3JywgICdcMDIwJyA6ICdcXDAyMCcsICAnXDAyMScgOiAnXFwwMjEnLAotICAgICdcMDIyJyA6ICdcXDAyMicsICAnXDAyMycgOiAnXFwwMjMnLCAgJ1wwMjQnIDogJ1xcMDI0JywKLSAgICAnXDAyNScgOiAnXFwwMjUnLCAgJ1wwMjYnIDogJ1xcMDI2JywgICdcMDI3JyA6ICdcXDAyNycsCi0gICAgJ1wwMzAnIDogJ1xcMDMwJywgICdcMDMxJyA6ICdcXDAzMScsICAnXDAzMicgOiAnXFwwMzInLAotICAgICdcMDMzJyA6ICdcXDAzMycsICAnXDAzNCcgOiAnXFwwMzQnLCAgJ1wwMzUnIDogJ1xcMDM1JywKLSAgICAnXDAzNicgOiAnXFwwMzYnLCAgJ1wwMzcnIDogJ1xcMDM3JywKK19MZWdhbENoYXJzID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIiEjJCUmJyorLS5eX2B8fjoiCitfVW5lc2NhcGVkQ2hhcnMgPSBfTGVnYWxDaGFycyArICcgKCkvPD0+P0BbXXt9JwogCi0gICAgIyBCZWNhdXNlIG9mIHRoZSB3YXkgYnJvd3NlcnMgcmVhbGx5IGhhbmRsZSBjb29raWVzIChhcyBvcHBvc2VkCi0gICAgIyB0byB3aGF0IHRoZSBSRkMgc2F5cykgd2UgYWxzbyBlbmNvZGUgLCBhbmQgOworX1RyYW5zbGF0b3IgPSB7bjogJ1xcJTAzbycgJSBuCisgICAgICAgICAgICAgICBmb3IgbiBpbiBzZXQocmFuZ2UoMjU2KSkgLSBzZXQobWFwKG9yZCwgX1VuZXNjYXBlZENoYXJzKSl9CitfVHJhbnNsYXRvci51cGRhdGUoeworICAgIG9yZCgnIicpOiAnXFwiJywKKyAgICBvcmQoJ1xcJyk6ICdcXFxcJywKK30pCiAKLSAgICAnLCcgOiAnXFwwNTQnLCAnOycgOiAnXFwwNzMnLAorX2lzX2xlZ2FsX2tleSA9IHJlLmNvbXBpbGUoJ1slc10rJyAlIF9MZWdhbENoYXJzKS5mdWxsbWF0Y2gKIAotICAgICciJyA6ICdcXCInLCAgICAgICAnXFwnIDogJ1xcXFwnLAotCi0gICAgJ1wxNzcnIDogJ1xcMTc3JywgICdcMjAwJyA6ICdcXDIwMCcsICAnXDIwMScgOiAnXFwyMDEnLAotICAgICdcMjAyJyA6ICdcXDIwMicsICAnXDIwMycgOiAnXFwyMDMnLCAgJ1wyMDQnIDogJ1xcMjA0JywKLSAgICAnXDIwNScgOiAnXFwyMDUnLCAgJ1wyMDYnIDogJ1xcMjA2JywgICdcMjA3JyA6ICdcXDIwNycsCi0gICAgJ1wyMTAnIDogJ1xcMjEwJywgICdcMjExJyA6ICdcXDIxMScsICAnXDIxMicgOiAnXFwyMTInLAotICAgICdcMjEzJyA6ICdcXDIxMycsICAnXDIxNCcgOiAnXFwyMTQnLCAgJ1wyMTUnIDogJ1xcMjE1JywKLSAgICAnXDIxNicgOiAnXFwyMTYnLCAgJ1wyMTcnIDogJ1xcMjE3JywgICdcMjIwJyA6ICdcXDIyMCcsCi0gICAgJ1wyMjEnIDogJ1xcMjIxJywgICdcMjIyJyA6ICdcXDIyMicsICAnXDIyMycgOiAnXFwyMjMnLAotICAgICdcMjI0JyA6ICdcXDIyNCcsICAnXDIyNScgOiAnXFwyMjUnLCAgJ1wyMjYnIDogJ1xcMjI2JywKLSAgICAnXDIyNycgOiAnXFwyMjcnLCAgJ1wyMzAnIDogJ1xcMjMwJywgICdcMjMxJyA6ICdcXDIzMScsCi0gICAgJ1wyMzInIDogJ1xcMjMyJywgICdcMjMzJyA6ICdcXDIzMycsICAnXDIzNCcgOiAnXFwyMzQnLAotICAgICdcMjM1JyA6ICdcXDIzNScsICAnXDIzNicgOiAnXFwyMzYnLCAgJ1wyMzcnIDogJ1xcMjM3JywKLSAgICAnXDI0MCcgOiAnXFwyNDAnLCAgJ1wyNDEnIDogJ1xcMjQxJywgICdcMjQyJyA6ICdcXDI0MicsCi0gICAgJ1wyNDMnIDogJ1xcMjQzJywgICdcMjQ0JyA6ICdcXDI0NCcsICAnXDI0NScgOiAnXFwyNDUnLAotICAgICdcMjQ2JyA6ICdcXDI0NicsICAnXDI0NycgOiAnXFwyNDcnLCAgJ1wyNTAnIDogJ1xcMjUwJywKLSAgICAnXDI1MScgOiAnXFwyNTEnLCAgJ1wyNTInIDogJ1xcMjUyJywgICdcMjUzJyA6ICdcXDI1MycsCi0gICAgJ1wyNTQnIDogJ1xcMjU0JywgICdcMjU1JyA6ICdcXDI1NScsICAnXDI1NicgOiAnXFwyNTYnLAotICAgICdcMjU3JyA6ICdcXDI1NycsICAnXDI2MCcgOiAnXFwyNjAnLCAgJ1wyNjEnIDogJ1xcMjYxJywKLSAgICAnXDI2MicgOiAnXFwyNjInLCAgJ1wyNjMnIDogJ1xcMjYzJywgICdcMjY0JyA6ICdcXDI2NCcsCi0gICAgJ1wyNjUnIDogJ1xcMjY1JywgICdcMjY2JyA6ICdcXDI2NicsICAnXDI2NycgOiAnXFwyNjcnLAotICAgICdcMjcwJyA6ICdcXDI3MCcsICAnXDI3MScgOiAnXFwyNzEnLCAgJ1wyNzInIDogJ1xcMjcyJywKLSAgICAnXDI3MycgOiAnXFwyNzMnLCAgJ1wyNzQnIDogJ1xcMjc0JywgICdcMjc1JyA6ICdcXDI3NScsCi0gICAgJ1wyNzYnIDogJ1xcMjc2JywgICdcMjc3JyA6ICdcXDI3NycsICAnXDMwMCcgOiAnXFwzMDAnLAotICAgICdcMzAxJyA6ICdcXDMwMScsICAnXDMwMicgOiAnXFwzMDInLCAgJ1wzMDMnIDogJ1xcMzAzJywKLSAgICAnXDMwNCcgOiAnXFwzMDQnLCAgJ1wzMDUnIDogJ1xcMzA1JywgICdcMzA2JyA6ICdcXDMwNicsCi0gICAgJ1wzMDcnIDogJ1xcMzA3JywgICdcMzEwJyA6ICdcXDMxMCcsICAnXDMxMScgOiAnXFwzMTEnLAotICAgICdcMzEyJyA6ICdcXDMxMicsICAnXDMxMycgOiAnXFwzMTMnLCAgJ1wzMTQnIDogJ1xcMzE0JywKLSAgICAnXDMxNScgOiAnXFwzMTUnLCAgJ1wzMTYnIDogJ1xcMzE2JywgICdcMzE3JyA6ICdcXDMxNycsCi0gICAgJ1wzMjAnIDogJ1xcMzIwJywgICdcMzIxJyA6ICdcXDMyMScsICAnXDMyMicgOiAnXFwzMjInLAotICAgICdcMzIzJyA6ICdcXDMyMycsICAnXDMyNCcgOiAnXFwzMjQnLCAgJ1wzMjUnIDogJ1xcMzI1JywKLSAgICAnXDMyNicgOiAnXFwzMjYnLCAgJ1wzMjcnIDogJ1xcMzI3JywgICdcMzMwJyA6ICdcXDMzMCcsCi0gICAgJ1wzMzEnIDogJ1xcMzMxJywgICdcMzMyJyA6ICdcXDMzMicsICAnXDMzMycgOiAnXFwzMzMnLAotICAgICdcMzM0JyA6ICdcXDMzNCcsICAnXDMzNScgOiAnXFwzMzUnLCAgJ1wzMzYnIDogJ1xcMzM2JywKLSAgICAnXDMzNycgOiAnXFwzMzcnLCAgJ1wzNDAnIDogJ1xcMzQwJywgICdcMzQxJyA6ICdcXDM0MScsCi0gICAgJ1wzNDInIDogJ1xcMzQyJywgICdcMzQzJyA6ICdcXDM0MycsICAnXDM0NCcgOiAnXFwzNDQnLAotICAgICdcMzQ1JyA6ICdcXDM0NScsICAnXDM0NicgOiAnXFwzNDYnLCAgJ1wzNDcnIDogJ1xcMzQ3JywKLSAgICAnXDM1MCcgOiAnXFwzNTAnLCAgJ1wzNTEnIDogJ1xcMzUxJywgICdcMzUyJyA6ICdcXDM1MicsCi0gICAgJ1wzNTMnIDogJ1xcMzUzJywgICdcMzU0JyA6ICdcXDM1NCcsICAnXDM1NScgOiAnXFwzNTUnLAotICAgICdcMzU2JyA6ICdcXDM1NicsICAnXDM1NycgOiAnXFwzNTcnLCAgJ1wzNjAnIDogJ1xcMzYwJywKLSAgICAnXDM2MScgOiAnXFwzNjEnLCAgJ1wzNjInIDogJ1xcMzYyJywgICdcMzYzJyA6ICdcXDM2MycsCi0gICAgJ1wzNjQnIDogJ1xcMzY0JywgICdcMzY1JyA6ICdcXDM2NScsICAnXDM2NicgOiAnXFwzNjYnLAotICAgICdcMzY3JyA6ICdcXDM2NycsICAnXDM3MCcgOiAnXFwzNzAnLCAgJ1wzNzEnIDogJ1xcMzcxJywKLSAgICAnXDM3MicgOiAnXFwzNzInLCAgJ1wzNzMnIDogJ1xcMzczJywgICdcMzc0JyA6ICdcXDM3NCcsCi0gICAgJ1wzNzUnIDogJ1xcMzc1JywgICdcMzc2JyA6ICdcXDM3NicsICAnXDM3NycgOiAnXFwzNzcnCi0gICAgfQotCi1kZWYgX3F1b3RlKHN0ciwgTGVnYWxDaGFycz1fTGVnYWxDaGFycyk6CitkZWYgX3F1b3RlKHN0cik6CiAgICAgciIiIlF1b3RlIGEgc3RyaW5nIGZvciB1c2UgaW4gYSBjb29raWUgaGVhZGVyLgogCiAgICAgSWYgdGhlIHN0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRvdWJsZS1xdW90ZWQsIHRoZW4ganVzdCByZXR1cm4gdGhlCiAgICAgc3RyaW5nLiAgT3RoZXJ3aXNlLCBzdXJyb3VuZCB0aGUgc3RyaW5nIGluIGRvdWJsZXF1b3RlcyBhbmQgcXVvdGUKICAgICAod2l0aCBhIFwpIHNwZWNpYWwgY2hhcmFjdGVycy4KICAgICAiIiIKLSAgICBpZiBhbGwoYyBpbiBMZWdhbENoYXJzIGZvciBjIGluIHN0cik6CisgICAgaWYgc3RyIGlzIE5vbmUgb3IgX2lzX2xlZ2FsX2tleShzdHIpOgogICAgICAgICByZXR1cm4gc3RyCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuICciJyArIF9udWxsam9pbihfVHJhbnNsYXRvci5nZXQocywgcykgZm9yIHMgaW4gc3RyKSArICciJworICAgICAgICByZXR1cm4gJyInICsgc3RyLnRyYW5zbGF0ZShfVHJhbnNsYXRvcikgKyAnIicKIAogCiBfT2N0YWxQYXR0ID0gcmUuY29tcGlsZShyIlxcWzAtM11bMC03XVswLTddIikKQEAgLTI0MSw3ICsxOTUsNyBAQAogZGVmIF91bnF1b3RlKHN0cik6CiAgICAgIyBJZiB0aGVyZSBhcmVuJ3QgYW55IGRvdWJsZXF1b3RlcywKICAgICAjIHRoZW4gdGhlcmUgY2FuJ3QgYmUgYW55IHNwZWNpYWwgY2hhcmFjdGVycy4gIFNlZSBSRkMgMjEwOS4KLSAgICBpZiBsZW4oc3RyKSA8IDI6CisgICAgaWYgc3RyIGlzIE5vbmUgb3IgbGVuKHN0cikgPCAyOgogICAgICAgICByZXR1cm4gc3RyCiAgICAgaWYgc3RyWzBdICE9ICciJyBvciBzdHJbLTFdICE9ICciJzoKICAgICAgICAgcmV0dXJuIHN0cgpAQCAtMzM5LDMzICsyOTMsMTA4IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgICMgU2V0IGRlZmF1bHRzCi0gICAgICAgIHNlbGYua2V5ID0gc2VsZi52YWx1ZSA9IHNlbGYuY29kZWRfdmFsdWUgPSBOb25lCisgICAgICAgIHNlbGYuX2tleSA9IHNlbGYuX3ZhbHVlID0gc2VsZi5fY29kZWRfdmFsdWUgPSBOb25lCiAKICAgICAgICAgIyBTZXQgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fcmVzZXJ2ZWQ6CiAgICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgIiIpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga2V5KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fa2V5CisKKyAgICBAa2V5LnNldHRlcgorICAgIGRlZiBrZXkoc2VsZiwga2V5KToKKyAgICAgICAgX3dhcm5fZGVwcmVjYXRlZF9zZXR0ZXIoJ2tleScpCisgICAgICAgIHNlbGYuX2tleSA9IGtleQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmFsdWUKKworICAgIEB2YWx1ZS5zZXR0ZXIKKyAgICBkZWYgdmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBfd2Fybl9kZXByZWNhdGVkX3NldHRlcigndmFsdWUnKQorICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29kZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jb2RlZF92YWx1ZQorCisgICAgQGNvZGVkX3ZhbHVlLnNldHRlcgorICAgIGRlZiBjb2RlZF92YWx1ZShzZWxmLCBjb2RlZF92YWx1ZSk6CisgICAgICAgIF93YXJuX2RlcHJlY2F0ZWRfc2V0dGVyKCdjb2RlZF92YWx1ZScpCisgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID0gY29kZWRfdmFsdWUKKwogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBLLCBWKToKICAgICAgICAgSyA9IEsubG93ZXIoKQogICAgICAgICBpZiBub3QgSyBpbiBzZWxmLl9yZXNlcnZlZDoKLSAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCJJbnZhbGlkIEF0dHJpYnV0ZSAlcyIgJSBLKQorICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkludmFsaWQgYXR0cmlidXRlICVyIiAlIChLLCkpCiAgICAgICAgIGRpY3QuX19zZXRpdGVtX18oc2VsZiwgSywgVikKIAorICAgIGRlZiBzZXRkZWZhdWx0KHNlbGYsIGtleSwgdmFsPU5vbmUpOgorICAgICAgICBrZXkgPSBrZXkubG93ZXIoKQorICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuX3Jlc2VydmVkOgorICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkludmFsaWQgYXR0cmlidXRlICVyIiAlIChrZXksKSkKKyAgICAgICAgcmV0dXJuIGRpY3Quc2V0ZGVmYXVsdChzZWxmLCBrZXksIHZhbCkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgbW9yc2VsKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobW9yc2VsLCBNb3JzZWwpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiAoZGljdC5fX2VxX18oc2VsZiwgbW9yc2VsKSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZSA9PSBtb3JzZWwuX3ZhbHVlIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2tleSA9PSBtb3JzZWwuX2tleSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9PSBtb3JzZWwuX2NvZGVkX3ZhbHVlKQorCisgICAgX19uZV9fID0gb2JqZWN0Ll9fbmVfXworCisgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgIG1vcnNlbCA9IE1vcnNlbCgpCisgICAgICAgIGRpY3QudXBkYXRlKG1vcnNlbCwgc2VsZikKKyAgICAgICAgbW9yc2VsLl9fZGljdF9fLnVwZGF0ZShzZWxmLl9fZGljdF9fKQorICAgICAgICByZXR1cm4gbW9yc2VsCisKKyAgICBkZWYgdXBkYXRlKHNlbGYsIHZhbHVlcyk6CisgICAgICAgIGRhdGEgPSB7fQorICAgICAgICBmb3Iga2V5LCB2YWwgaW4gZGljdCh2YWx1ZXMpLml0ZW1zKCk6CisgICAgICAgICAgICBrZXkgPSBrZXkubG93ZXIoKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBzZWxmLl9yZXNlcnZlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSW52YWxpZCBhdHRyaWJ1dGUgJXIiICUgKGtleSwpKQorICAgICAgICAgICAgZGF0YVtrZXldID0gdmFsCisgICAgICAgIGRpY3QudXBkYXRlKHNlbGYsIGRhdGEpCisKICAgICBkZWYgaXNSZXNlcnZlZEtleShzZWxmLCBLKToKICAgICAgICAgcmV0dXJuIEsubG93ZXIoKSBpbiBzZWxmLl9yZXNlcnZlZAogCiAgICAgZGVmIHNldChzZWxmLCBrZXksIHZhbCwgY29kZWRfdmFsLCBMZWdhbENoYXJzPV9MZWdhbENoYXJzKToKLSAgICAgICAgIyBGaXJzdCB3ZSB2ZXJpZnkgdGhhdCB0aGUga2V5IGlzbid0IGEgcmVzZXJ2ZWQgd29yZAotICAgICAgICAjIFNlY29uZCB3ZSBtYWtlIHN1cmUgaXQgb25seSBjb250YWlucyBsZWdhbCBjaGFyYWN0ZXJzCisgICAgICAgIGlmIExlZ2FsQ2hhcnMgIT0gX0xlZ2FsQ2hhcnM6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0xlZ2FsQ2hhcnMgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQsIGlnbm9yZWQgYW5kIHdpbGwgJworICAgICAgICAgICAgICAgICdiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4nLCBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQorCiAgICAgICAgIGlmIGtleS5sb3dlcigpIGluIHNlbGYuX3Jlc2VydmVkOgotICAgICAgICAgICAgcmFpc2UgQ29va2llRXJyb3IoIkF0dGVtcHQgdG8gc2V0IGEgcmVzZXJ2ZWQga2V5OiAlcyIgJSBrZXkpCi0gICAgICAgIGlmIGFueShjIG5vdCBpbiBMZWdhbENoYXJzIGZvciBjIGluIGtleSk6Ci0gICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcigiSWxsZWdhbCBrZXkgdmFsdWU6ICVzIiAlIGtleSkKKyAgICAgICAgICAgIHJhaXNlIENvb2tpZUVycm9yKCdBdHRlbXB0IHRvIHNldCBhIHJlc2VydmVkIGtleSAlcicgJSAoa2V5LCkpCisgICAgICAgIGlmIG5vdCBfaXNfbGVnYWxfa2V5KGtleSk6CisgICAgICAgICAgICByYWlzZSBDb29raWVFcnJvcignSWxsZWdhbCBrZXkgJXInICUgKGtleSwpKQogCiAgICAgICAgICMgSXQncyBhIGdvb2Qga2V5LCBzbyBzYXZlIGl0LgotICAgICAgICBzZWxmLmtleSA9IGtleQotICAgICAgICBzZWxmLnZhbHVlID0gdmFsCi0gICAgICAgIHNlbGYuY29kZWRfdmFsdWUgPSBjb2RlZF92YWwKKyAgICAgICAgc2VsZi5fa2V5ID0ga2V5CisgICAgICAgIHNlbGYuX3ZhbHVlID0gdmFsCisgICAgICAgIHNlbGYuX2NvZGVkX3ZhbHVlID0gY29kZWRfdmFsCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgJ2tleSc6IHNlbGYuX2tleSwKKyAgICAgICAgICAgICd2YWx1ZSc6IHNlbGYuX3ZhbHVlLAorICAgICAgICAgICAgJ2NvZGVkX3ZhbHVlJzogc2VsZi5fY29kZWRfdmFsdWUsCisgICAgICAgIH0KKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9rZXkgPSBzdGF0ZVsna2V5J10KKyAgICAgICAgc2VsZi5fdmFsdWUgPSBzdGF0ZVsndmFsdWUnXQorICAgICAgICBzZWxmLl9jb2RlZF92YWx1ZSA9IHN0YXRlWydjb2RlZF92YWx1ZSddCiAKICAgICBkZWYgb3V0cHV0KHNlbGYsIGF0dHJzPU5vbmUsIGhlYWRlcj0iU2V0LUNvb2tpZToiKToKICAgICAgICAgcmV0dXJuICIlcyAlcyIgJSAoaGVhZGVyLCBzZWxmLk91dHB1dFN0cmluZyhhdHRycykpCkBAIC0zNzMsOCArNDAyLDcgQEAKICAgICBfX3N0cl9fID0gb3V0cHV0CiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzOiAlcz0lcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmtleSwgcmVwcihzZWxmLnZhbHVlKSkKKyAgICAgICAgcmV0dXJuICc8JXM6ICVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuT3V0cHV0U3RyaW5nKCkpCiAKICAgICBkZWYganNfb3V0cHV0KHNlbGYsIGF0dHJzPU5vbmUpOgogICAgICAgICAjIFByaW50IGphdmFzY3JpcHQKQEAgLTQwOCwxMCArNDM2LDkgQEAKICAgICAgICAgICAgICAgICBhcHBlbmQoIiVzPSVzIiAlIChzZWxmLl9yZXNlcnZlZFtrZXldLCBfZ2V0ZGF0ZSh2YWx1ZSkpKQogICAgICAgICAgICAgZWxpZiBrZXkgPT0gIm1heC1hZ2UiIGFuZCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgogICAgICAgICAgICAgICAgIGFwcGVuZCgiJXM9JWQiICUgKHNlbGYuX3Jlc2VydmVkW2tleV0sIHZhbHVlKSkKLSAgICAgICAgICAgIGVsaWYga2V5ID09ICJzZWN1cmUiOgotICAgICAgICAgICAgICAgIGFwcGVuZChzdHIoc2VsZi5fcmVzZXJ2ZWRba2V5XSkpCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAiaHR0cG9ubHkiOgotICAgICAgICAgICAgICAgIGFwcGVuZChzdHIoc2VsZi5fcmVzZXJ2ZWRba2V5XSkpCisgICAgICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9mbGFnczoKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHN0cihzZWxmLl9yZXNlcnZlZFtrZXldKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXBwZW5kKCIlcz0lcyIgJSAoc2VsZi5fcmVzZXJ2ZWRba2V5XSwgdmFsdWUpKQogCkBAIC01MzQsMTAgKzU2MSwxNyBAQAogICAgICAgICByZXR1cm4KIAogICAgIGRlZiBfX3BhcnNlX3N0cmluZyhzZWxmLCBzdHIsIHBhdHQ9X0Nvb2tpZVBhdHRlcm4pOgotICAgICAgICBpID0gMCAgICAgICAgICAgICMgT3VyIHN0YXJ0aW5nIHBvaW50Ci0gICAgICAgIG4gPSBsZW4oc3RyKSAgICAgIyBMZW5ndGggb2Ygc3RyaW5nCi0gICAgICAgIE0gPSBOb25lICAgICAgICAgIyBjdXJyZW50IG1vcnNlbAorICAgICAgICBpID0gMCAgICAgICAgICAgICAgICAgIyBPdXIgc3RhcnRpbmcgcG9pbnQKKyAgICAgICAgbiA9IGxlbihzdHIpICAgICAgICAgICMgTGVuZ3RoIG9mIHN0cmluZworICAgICAgICBwYXJzZWRfaXRlbXMgPSBbXSAgICAgIyBQYXJzZWQgKHR5cGUsIGtleSwgdmFsdWUpIHRyaXBsZXMKKyAgICAgICAgbW9yc2VsX3NlZW4gPSBGYWxzZSAgICMgQSBrZXk9dmFsdWUgcGFpciB3YXMgcHJldmlvdXNseSBlbmNvdW50ZXJlZAogCisgICAgICAgIFRZUEVfQVRUUklCVVRFID0gMQorICAgICAgICBUWVBFX0tFWVZBTFVFID0gMgorCisgICAgICAgICMgV2UgZmlyc3QgcGFyc2UgdGhlIHdob2xlIGNvb2tpZSBzdHJpbmcgYW5kIHJlamVjdCBpdCBpZiBpdCdzCisgICAgICAgICMgc3ludGFjdGljYWxseSBpbnZhbGlkICh0aGlzIGhlbHBzIGF2b2lkIHNvbWUgY2xhc3NlcyBvZiBpbmplY3Rpb24KKyAgICAgICAgIyBhdHRhY2tzKS4KICAgICAgICAgd2hpbGUgMCA8PSBpIDwgbjoKICAgICAgICAgICAgICMgU3RhcnQgbG9va2luZyBmb3IgYSBjb29raWUKICAgICAgICAgICAgIG1hdGNoID0gcGF0dC5tYXRjaChzdHIsIGkpCkBAIC01NDgsMjIgKzU4Miw0MSBAQAogICAgICAgICAgICAga2V5LCB2YWx1ZSA9IG1hdGNoLmdyb3VwKCJrZXkiKSwgbWF0Y2guZ3JvdXAoInZhbCIpCiAgICAgICAgICAgICBpID0gbWF0Y2guZW5kKDApCiAKLSAgICAgICAgICAgICMgUGFyc2UgdGhlIGtleSwgdmFsdWUgaW4gY2FzZSBpdCdzIG1ldGFpbmZvCiAgICAgICAgICAgICBpZiBrZXlbMF0gPT0gIiQiOgotICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGF0dHJpYnV0ZXMgd2hpY2ggcGVydGFpbiB0byB0aGUgY29va2llCi0gICAgICAgICAgICAgICAgIyBtZWNoYW5pc20gYXMgYSB3aG9sZS4gIFNlZSBSRkMgMjEwOS4KLSAgICAgICAgICAgICAgICAjIChEb2VzIGFueW9uZSBjYXJlPykKLSAgICAgICAgICAgICAgICBpZiBNOgotICAgICAgICAgICAgICAgICAgICBNW2tleVsxOl1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBpZiBub3QgbW9yc2VsX3NlZW46CisgICAgICAgICAgICAgICAgICAgICMgV2UgaWdub3JlIGF0dHJpYnV0ZXMgd2hpY2ggcGVydGFpbiB0byB0aGUgY29va2llCisgICAgICAgICAgICAgICAgICAgICMgbWVjaGFuaXNtIGFzIGEgd2hvbGUsIHN1Y2ggYXMgIiRWZXJzaW9uIi4KKyAgICAgICAgICAgICAgICAgICAgIyBTZWUgUkZDIDI5NjUuIChEb2VzIGFueW9uZSBjYXJlPykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0FUVFJJQlVURSwga2V5WzE6XSwgdmFsdWUpKQogICAgICAgICAgICAgZWxpZiBrZXkubG93ZXIoKSBpbiBNb3JzZWwuX3Jlc2VydmVkOgotICAgICAgICAgICAgICAgIGlmIE06Ci0gICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXkubG93ZXIoKSBpbiBNb3JzZWwuX2ZsYWdzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ba2V5XSA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBub3QgbW9yc2VsX3NlZW46CisgICAgICAgICAgICAgICAgICAgICMgSW52YWxpZCBjb29raWUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGtleS5sb3dlcigpIGluIE1vcnNlbC5fZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0FUVFJJQlVURSwga2V5LCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIE1ba2V5XSA9IF91bnF1b3RlKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBJbnZhbGlkIGNvb2tpZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZF9pdGVtcy5hcHBlbmQoKFRZUEVfQVRUUklCVVRFLCBrZXksIF91bnF1b3RlKHZhbHVlKSkpCiAgICAgICAgICAgICBlbGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJ2YWwsIGN2YWwgPSBzZWxmLnZhbHVlX2RlY29kZSh2YWx1ZSkKKyAgICAgICAgICAgICAgICBwYXJzZWRfaXRlbXMuYXBwZW5kKChUWVBFX0tFWVZBTFVFLCBrZXksIHNlbGYudmFsdWVfZGVjb2RlKHZhbHVlKSkpCisgICAgICAgICAgICAgICAgbW9yc2VsX3NlZW4gPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSW52YWxpZCBjb29raWUgc3RyaW5nCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBUaGUgY29va2llIHN0cmluZyBpcyB2YWxpZCwgYXBwbHkgaXQuCisgICAgICAgIE0gPSBOb25lICAgICAgICAgIyBjdXJyZW50IG1vcnNlbAorICAgICAgICBmb3IgdHAsIGtleSwgdmFsdWUgaW4gcGFyc2VkX2l0ZW1zOgorICAgICAgICAgICAgaWYgdHAgPT0gVFlQRV9BVFRSSUJVVEU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IE0gaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBNW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgdHAgPT0gVFlQRV9LRVlWQUxVRQorICAgICAgICAgICAgICAgIHJ2YWwsIGN2YWwgPSB2YWx1ZQogICAgICAgICAgICAgICAgIHNlbGYuX19zZXQoa2V5LCBydmFsLCBjdmFsKQogICAgICAgICAgICAgICAgIE0gPSBzZWxmW2tleV0KIApkaWZmIC0tZ2l0IGEvTGliL2h0dHAvc2VydmVyLnB5IGIvTGliL2h0dHAvc2VydmVyLnB5CmluZGV4IGNlMGY2Y2YuLjZhMGU2ZmUgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL3NlcnZlci5weQorKysgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKQEAgLTEwMyw2ICsxMDMsOCBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBhcmdwYXJzZQogCitmcm9tIGh0dHAgaW1wb3J0IEhUVFBTdGF0dXMKKwogCiAjIERlZmF1bHQgZXJyb3IgbWVzc2FnZSB0ZW1wbGF0ZQogREVGQVVMVF9FUlJPUl9NRVNTQUdFID0gIiIiXApAQCAtMjgxLDcgKzI4Myw5IEBACiAgICAgICAgIGlmIGxlbih3b3JkcykgPT0gMzoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGgsIHZlcnNpb24gPSB3b3JkcwogICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLCAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgYmFzZV92ZXJzaW9uX251bWJlciA9IHZlcnNpb24uc3BsaXQoJy8nLCAxKVsxXQpAQCAtMjk2LDI1ICszMDAsMzEgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gaW50KHZlcnNpb25fbnVtYmVyWzBdKSwgaW50KHZlcnNpb25fbnVtYmVyWzFdKQogICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAwLCAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMSwgMSkgYW5kIHNlbGYucHJvdG9jb2xfdmVyc2lvbiA+PSAiSFRUUC8xLjEiOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IEZhbHNlCiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMiwgMCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDUwNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgSFRUUCBWZXJzaW9uICglcykiICUgYmFzZV92ZXJzaW9uX251bWJlcikKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQsCisgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgVmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAyOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCA9IHdvcmRzCiAgICAgICAgICAgICBzZWxmLmNsb3NlX2Nvbm5lY3Rpb24gPSBUcnVlCiAgICAgICAgICAgICBpZiBjb21tYW5kICE9ICdHRVQnOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCYWQgSFRUUC8wLjkgcmVxdWVzdCB0eXBlICglcikiICUgY29tbWFuZCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCisgICAgICAgICAgICAgICAgICAgICJCYWQgSFRUUC8wLjkgcmVxdWVzdCB0eXBlICglcikiICUgY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxpZiBub3Qgd29yZHM6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsICJCYWQgcmVxdWVzdCBzeW50YXggKCVyKSIgJSByZXF1ZXN0bGluZSkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICJCYWQgcmVxdWVzdCBzeW50YXggKCVyKSIgJSByZXF1ZXN0bGluZSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLmNvbW1hbmQsIHNlbGYucGF0aCwgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gPSBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uCiAKQEAgLTMyMyw3ICszMzMsOSBAQAogICAgICAgICAgICAgc2VsZi5oZWFkZXJzID0gaHR0cC5jbGllbnQucGFyc2VfaGVhZGVycyhzZWxmLnJmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xhc3M9c2VsZi5NZXNzYWdlQ2xhc3MpCiAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZzoKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDAsICJMaW5lIHRvbyBsb25nIikKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAorICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIGNvbm50eXBlID0gc2VsZi5oZWFkZXJzLmdldCgnQ29ubmVjdGlvbicsICIiKQpAQCAtMzU1LDcgKzM2Nyw3IEBACiAgICAgICAgIEZhbHNlLgogCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2Vfb25seSgxMDApCisgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZV9vbmx5KEhUVFBTdGF0dXMuQ09OVElOVUUpCiAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQogICAgICAgICByZXR1cm4gVHJ1ZQogCkBAIC0zNzMsNyArMzg1LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RsaW5lID0gJycKICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfdmVyc2lvbiA9ICcnCiAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gJycKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDE0KQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLlJFUVVFU1RfVVJJX1RPT19MT05HKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgaWYgbm90IHNlbGYucmF3X3JlcXVlc3RsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRydWUKQEAgLTM4Myw3ICszOTUsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgbW5hbWUgPSAnZG9fJyArIHNlbGYuY29tbWFuZAogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgbW5hbWUpOgotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig1MDEsICJVbnN1cHBvcnRlZCBtZXRob2QgKCVyKSIgJSBzZWxmLmNvbW1hbmQpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCwKKyAgICAgICAgICAgICAgICAgICAgIlVuc3VwcG9ydGVkIG1ldGhvZCAoJXIpIiAlIHNlbGYuY29tbWFuZCkKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIG1ldGhvZCA9IGdldGF0dHIoc2VsZiwgbW5hbWUpCiAgICAgICAgICAgICBtZXRob2QoKQpAQCAtNDM4LDcgKzQ1MiwxMSBAQAogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb25uZWN0aW9uJywgJ2Nsb3NlJykKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29udGVudC1MZW5ndGgnLCBpbnQobGVuKGJvZHkpKSkKICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCi0gICAgICAgIGlmIHNlbGYuY29tbWFuZCAhPSAnSEVBRCcgYW5kIGNvZGUgPj0gMjAwIGFuZCBjb2RlIG5vdCBpbiAoMjA0LCAzMDQpOgorCisgICAgICAgIGlmIChzZWxmLmNvbW1hbmQgIT0gJ0hFQUQnIGFuZAorICAgICAgICAgICAgICAgIGNvZGUgPj0gMjAwIGFuZAorICAgICAgICAgICAgICAgIGNvZGUgbm90IGluICgKKyAgICAgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5OT19DT05URU5ULCBIVFRQU3RhdHVzLk5PVF9NT0RJRklFRCkpOgogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShib2R5KQogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Uoc2VsZiwgY29kZSwgbWVzc2FnZT1Ob25lKToKQEAgLTQ5OSw3ICs1MTcsOCBAQAogICAgICAgICBUaGlzIGlzIGNhbGxlZCBieSBzZW5kX3Jlc3BvbnNlKCkuCiAKICAgICAgICAgIiIiCi0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBIVFRQU3RhdHVzKToKKyAgICAgICAgICAgIGNvZGUgPSBjb2RlLnZhbHVlCiAgICAgICAgIHNlbGYubG9nX21lc3NhZ2UoJyIlcyIgJXMgJXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUsIHN0cihjb2RlKSwgc3RyKHNpemUpKQogCkBAIC01ODIsODIgKzYwMSwxMSBAQAogICAgICMgTWVzc2FnZUNsYXNzIHVzZWQgdG8gcGFyc2UgaGVhZGVycwogICAgIE1lc3NhZ2VDbGFzcyA9IGh0dHAuY2xpZW50LkhUVFBNZXNzYWdlCiAKLSAgICAjIFRhYmxlIG1hcHBpbmcgcmVzcG9uc2UgY29kZXMgdG8gbWVzc2FnZXM7IGVudHJpZXMgaGF2ZSB0aGUKLSAgICAjIGZvcm0ge2NvZGU6IChzaG9ydG1lc3NhZ2UsIGxvbmdtZXNzYWdlKX0uCi0gICAgIyBTZWUgUkZDIDI2MTYgYW5kIDY1ODUuCisgICAgIyBoYWNrIHRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAgICAgcmVzcG9uc2VzID0gewotICAgICAgICAxMDA6ICgnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJyksCi0gICAgICAgIDEwMTogKCdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKLSAgICAgICAgICAgICAgJ1N3aXRjaGluZyB0byBuZXcgcHJvdG9jb2w7IG9iZXkgVXBncmFkZSBoZWFkZXInKSwKLQotICAgICAgICAyMDA6ICgnT0snLCAnUmVxdWVzdCBmdWxmaWxsZWQsIGRvY3VtZW50IGZvbGxvd3MnKSwKLSAgICAgICAgMjAxOiAoJ0NyZWF0ZWQnLCAnRG9jdW1lbnQgY3JlYXRlZCwgVVJMIGZvbGxvd3MnKSwKLSAgICAgICAgMjAyOiAoJ0FjY2VwdGVkJywKLSAgICAgICAgICAgICAgJ1JlcXVlc3QgYWNjZXB0ZWQsIHByb2Nlc3NpbmcgY29udGludWVzIG9mZi1saW5lJyksCi0gICAgICAgIDIwMzogKCdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsICdSZXF1ZXN0IGZ1bGZpbGxlZCBmcm9tIGNhY2hlJyksCi0gICAgICAgIDIwNDogKCdObyBDb250ZW50JywgJ1JlcXVlc3QgZnVsZmlsbGVkLCBub3RoaW5nIGZvbGxvd3MnKSwKLSAgICAgICAgMjA1OiAoJ1Jlc2V0IENvbnRlbnQnLCAnQ2xlYXIgaW5wdXQgZm9ybSBmb3IgZnVydGhlciBpbnB1dC4nKSwKLSAgICAgICAgMjA2OiAoJ1BhcnRpYWwgQ29udGVudCcsICdQYXJ0aWFsIGNvbnRlbnQgZm9sbG93cy4nKSwKLQotICAgICAgICAzMDA6ICgnTXVsdGlwbGUgQ2hvaWNlcycsCi0gICAgICAgICAgICAgICdPYmplY3QgaGFzIHNldmVyYWwgcmVzb3VyY2VzIC0tIHNlZSBVUkkgbGlzdCcpLAotICAgICAgICAzMDE6ICgnTW92ZWQgUGVybWFuZW50bHknLCAnT2JqZWN0IG1vdmVkIHBlcm1hbmVudGx5IC0tIHNlZSBVUkkgbGlzdCcpLAotICAgICAgICAzMDI6ICgnRm91bmQnLCAnT2JqZWN0IG1vdmVkIHRlbXBvcmFyaWx5IC0tIHNlZSBVUkkgbGlzdCcpLAotICAgICAgICAzMDM6ICgnU2VlIE90aGVyJywgJ09iamVjdCBtb3ZlZCAtLSBzZWUgTWV0aG9kIGFuZCBVUkwgbGlzdCcpLAotICAgICAgICAzMDQ6ICgnTm90IE1vZGlmaWVkJywKLSAgICAgICAgICAgICAgJ0RvY3VtZW50IGhhcyBub3QgY2hhbmdlZCBzaW5jZSBnaXZlbiB0aW1lJyksCi0gICAgICAgIDMwNTogKCdVc2UgUHJveHknLAotICAgICAgICAgICAgICAnWW91IG11c3QgdXNlIHByb3h5IHNwZWNpZmllZCBpbiBMb2NhdGlvbiB0byBhY2Nlc3MgdGhpcyAnCi0gICAgICAgICAgICAgICdyZXNvdXJjZS4nKSwKLSAgICAgICAgMzA3OiAoJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCi0gICAgICAgICAgICAgICdPYmplY3QgbW92ZWQgdGVtcG9yYXJpbHkgLS0gc2VlIFVSSSBsaXN0JyksCi0KLSAgICAgICAgNDAwOiAoJ0JhZCBSZXF1ZXN0JywKLSAgICAgICAgICAgICAgJ0JhZCByZXF1ZXN0IHN5bnRheCBvciB1bnN1cHBvcnRlZCBtZXRob2QnKSwKLSAgICAgICAgNDAxOiAoJ1VuYXV0aG9yaXplZCcsCi0gICAgICAgICAgICAgICdObyBwZXJtaXNzaW9uIC0tIHNlZSBhdXRob3JpemF0aW9uIHNjaGVtZXMnKSwKLSAgICAgICAgNDAyOiAoJ1BheW1lbnQgUmVxdWlyZWQnLAotICAgICAgICAgICAgICAnTm8gcGF5bWVudCAtLSBzZWUgY2hhcmdpbmcgc2NoZW1lcycpLAotICAgICAgICA0MDM6ICgnRm9yYmlkZGVuJywKLSAgICAgICAgICAgICAgJ1JlcXVlc3QgZm9yYmlkZGVuIC0tIGF1dGhvcml6YXRpb24gd2lsbCBub3QgaGVscCcpLAotICAgICAgICA0MDQ6ICgnTm90IEZvdW5kJywgJ05vdGhpbmcgbWF0Y2hlcyB0aGUgZ2l2ZW4gVVJJJyksCi0gICAgICAgIDQwNTogKCdNZXRob2QgTm90IEFsbG93ZWQnLAotICAgICAgICAgICAgICAnU3BlY2lmaWVkIG1ldGhvZCBpcyBpbnZhbGlkIGZvciB0aGlzIHJlc291cmNlLicpLAotICAgICAgICA0MDY6ICgnTm90IEFjY2VwdGFibGUnLCAnVVJJIG5vdCBhdmFpbGFibGUgaW4gcHJlZmVycmVkIGZvcm1hdC4nKSwKLSAgICAgICAgNDA3OiAoJ1Byb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJywgJ1lvdSBtdXN0IGF1dGhlbnRpY2F0ZSB3aXRoICcKLSAgICAgICAgICAgICAgJ3RoaXMgcHJveHkgYmVmb3JlIHByb2NlZWRpbmcuJyksCi0gICAgICAgIDQwODogKCdSZXF1ZXN0IFRpbWVvdXQnLCAnUmVxdWVzdCB0aW1lZCBvdXQ7IHRyeSBhZ2FpbiBsYXRlci4nKSwKLSAgICAgICAgNDA5OiAoJ0NvbmZsaWN0JywgJ1JlcXVlc3QgY29uZmxpY3QuJyksCi0gICAgICAgIDQxMDogKCdHb25lJywKLSAgICAgICAgICAgICAgJ1VSSSBubyBsb25nZXIgZXhpc3RzIGFuZCBoYXMgYmVlbiBwZXJtYW5lbnRseSByZW1vdmVkLicpLAotICAgICAgICA0MTE6ICgnTGVuZ3RoIFJlcXVpcmVkJywgJ0NsaWVudCBtdXN0IHNwZWNpZnkgQ29udGVudC1MZW5ndGguJyksCi0gICAgICAgIDQxMjogKCdQcmVjb25kaXRpb24gRmFpbGVkJywgJ1ByZWNvbmRpdGlvbiBpbiBoZWFkZXJzIGlzIGZhbHNlLicpLAotICAgICAgICA0MTM6ICgnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJywgJ0VudGl0eSBpcyB0b28gbGFyZ2UuJyksCi0gICAgICAgIDQxNDogKCdSZXF1ZXN0LVVSSSBUb28gTG9uZycsICdVUkkgaXMgdG9vIGxvbmcuJyksCi0gICAgICAgIDQxNTogKCdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJywgJ0VudGl0eSBib2R5IGluIHVuc3VwcG9ydGVkIGZvcm1hdC4nKSwKLSAgICAgICAgNDE2OiAoJ1JlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGUnLAotICAgICAgICAgICAgICAnQ2Fubm90IHNhdGlzZnkgcmVxdWVzdCByYW5nZS4nKSwKLSAgICAgICAgNDE3OiAoJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCi0gICAgICAgICAgICAgICdFeHBlY3QgY29uZGl0aW9uIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQuJyksCi0gICAgICAgIDQyODogKCdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAotICAgICAgICAgICAgICAnVGhlIG9yaWdpbiBzZXJ2ZXIgcmVxdWlyZXMgdGhlIHJlcXVlc3QgdG8gYmUgY29uZGl0aW9uYWwuJyksCi0gICAgICAgIDQyOTogKCdUb28gTWFueSBSZXF1ZXN0cycsICdUaGUgdXNlciBoYXMgc2VudCB0b28gbWFueSByZXF1ZXN0cyAnCi0gICAgICAgICAgICAgICdpbiBhIGdpdmVuIGFtb3VudCBvZiB0aW1lICgicmF0ZSBsaW1pdGluZyIpLicpLAotICAgICAgICA0MzE6ICgnUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZScsICdUaGUgc2VydmVyIGlzIHVud2lsbGluZyB0byAnCi0gICAgICAgICAgICAgICdwcm9jZXNzIHRoZSByZXF1ZXN0IGJlY2F1c2UgaXRzIGhlYWRlciBmaWVsZHMgYXJlIHRvbyBsYXJnZS4nKSwKLQotICAgICAgICA1MDA6ICgnSW50ZXJuYWwgU2VydmVyIEVycm9yJywgJ1NlcnZlciBnb3QgaXRzZWxmIGluIHRyb3VibGUnKSwKLSAgICAgICAgNTAxOiAoJ05vdCBJbXBsZW1lbnRlZCcsCi0gICAgICAgICAgICAgICdTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbicpLAotICAgICAgICA1MDI6ICgnQmFkIEdhdGV3YXknLCAnSW52YWxpZCByZXNwb25zZXMgZnJvbSBhbm90aGVyIHNlcnZlci9wcm94eS4nKSwKLSAgICAgICAgNTAzOiAoJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAotICAgICAgICAgICAgICAnVGhlIHNlcnZlciBjYW5ub3QgcHJvY2VzcyB0aGUgcmVxdWVzdCBkdWUgdG8gYSBoaWdoIGxvYWQnKSwKLSAgICAgICAgNTA0OiAoJ0dhdGV3YXkgVGltZW91dCcsCi0gICAgICAgICAgICAgICdUaGUgZ2F0ZXdheSBzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIGEgdGltZWx5IHJlc3BvbnNlJyksCi0gICAgICAgIDUwNTogKCdIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZCcsICdDYW5ub3QgZnVsZmlsbCByZXF1ZXN0LicpLAotICAgICAgICA1MTE6ICgnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCi0gICAgICAgICAgICAgICdUaGUgY2xpZW50IG5lZWRzIHRvIGF1dGhlbnRpY2F0ZSB0byBnYWluIG5ldHdvcmsgYWNjZXNzLicpLAotICAgICAgICB9CisgICAgICAgIHY6ICh2LnBocmFzZSwgdi5kZXNjcmlwdGlvbikKKyAgICAgICAgZm9yIHYgaW4gSFRUUFN0YXR1cy5fX21lbWJlcnNfXy52YWx1ZXMoKQorICAgIH0KIAogCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC03MDcsNyArNjU1LDcgQEAKICAgICAgICAgICAgIHBhcnRzID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHNlbGYucGF0aCkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0cy5wYXRoLmVuZHN3aXRoKCcvJyk6CiAgICAgICAgICAgICAgICAgIyByZWRpcmVjdCBicm93c2VyIC0gZG9pbmcgYmFzaWNhbGx5IHdoYXQgYXBhY2hlIGRvZXMKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMzAxKQorICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk1PVkVEX1BFUk1BTkVOVExZKQogICAgICAgICAgICAgICAgIG5ld19wYXJ0cyA9IChwYXJ0c1swXSwgcGFydHNbMV0sIHBhcnRzWzJdICsgJy8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0c1szXSwgcGFydHNbNF0pCiAgICAgICAgICAgICAgICAgbmV3X3VybCA9IHVybGxpYi5wYXJzZS51cmx1bnNwbGl0KG5ld19wYXJ0cykKQEAgLTcyNSwxMCArNjczLDEwIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICdyYicpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIkZpbGUgbm90IGZvdW5kIikKKyAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLk5PVF9GT1VORCwgIkZpbGUgbm90IGZvdW5kIikKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtdHlwZSIsIGN0eXBlKQogICAgICAgICAgICAgZnMgPSBvcy5mc3RhdChmLmZpbGVubygpKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1MZW5ndGgiLCBzdHIoZnNbNl0pKQpAQCAtNzUwLDcgKzY5OCw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxpc3QgPSBvcy5saXN0ZGlyKHBhdGgpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwNCwgIk5vIHBlcm1pc3Npb24gdG8gbGlzdCBkaXJlY3RvcnkiKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAgICJObyBwZXJtaXNzaW9uIHRvIGxpc3QgZGlyZWN0b3J5IikKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGxpc3Quc29ydChrZXk9bGFtYmRhIGE6IGEubG93ZXIoKSkKICAgICAgICAgciA9IFtdCkBAIC03ODksNyArNzM5LDcgQEAKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQogICAgICAgICBmLndyaXRlKGVuY29kZWQpCiAgICAgICAgIGYuc2VlaygwKQotICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSykKICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC10eXBlIiwgInRleHQvaHRtbDsgY2hhcnNldD0lcyIgJSBlbmMpCiAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgc3RyKGxlbihlbmNvZGVkKSkpCiAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQpAQCAtOTcxLDcgKzkyMSw5IEBACiAgICAgICAgIGlmIHNlbGYuaXNfY2dpKCk6CiAgICAgICAgICAgICBzZWxmLnJ1bl9jZ2koKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDUwMSwgIkNhbiBvbmx5IFBPU1QgdG8gQ0dJIHNjcmlwdHMiKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVELAorICAgICAgICAgICAgICAgICJDYW4gb25seSBQT1NUIHRvIENHSSBzY3JpcHRzIikKIAogICAgIGRlZiBzZW5kX2hlYWQoc2VsZik6CiAgICAgICAgICIiIlZlcnNpb24gb2Ygc2VuZF9oZWFkIHRoYXQgc3VwcG9ydCBDR0kgc2NyaXB0cyIiIgpAQCAtMTA0OSwxNyArMTAwMSwyMSBAQAogICAgICAgICBzY3JpcHRuYW1lID0gZGlyICsgJy8nICsgc2NyaXB0CiAgICAgICAgIHNjcmlwdGZpbGUgPSBzZWxmLnRyYW5zbGF0ZV9wYXRoKHNjcmlwdG5hbWUpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzY3JpcHRmaWxlKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDQsICJObyBzdWNoIENHSSBzY3JpcHQgKCVyKSIgJSBzY3JpcHRuYW1lKQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAgICJObyBzdWNoIENHSSBzY3JpcHQgKCVyKSIgJSBzY3JpcHRuYW1lKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDMsICJDR0kgc2NyaXB0IGlzIG5vdCBhIHBsYWluIGZpbGUgKCVyKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCisgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCisgICAgICAgICAgICAgICAgSFRUUFN0YXR1cy5GT1JCSURERU4sCisgICAgICAgICAgICAgICAgIkNHSSBzY3JpcHQgaXMgbm90IGEgcGxhaW4gZmlsZSAoJXIpIiAlIHNjcmlwdG5hbWUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaXNweSA9IHNlbGYuaXNfcHl0aG9uKHNjcmlwdG5hbWUpCiAgICAgICAgIGlmIHNlbGYuaGF2ZV9mb3JrIG9yIG5vdCBpc3B5OgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0YWJsZShzY3JpcHRmaWxlKToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDAzLCAiQ0dJIHNjcmlwdCBpcyBub3QgZXhlY3V0YWJsZSAoJXIpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkZPUkJJRERFTiwKKyAgICAgICAgICAgICAgICAgICAgIkNHSSBzY3JpcHQgaXMgbm90IGV4ZWN1dGFibGUgKCVyKSIgJSBzY3JpcHRuYW1lKQogICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgUmVmZXJlbmNlOiBodHRwOi8vaG9vaG9vLm5jc2EudWl1Yy5lZHUvY2dpL2Vudi5odG1sCkBAIC0xMTI3LDcgKzEwODMsNyBAQAogICAgICAgICAgICAgICAgICAgJ0hUVFBfVVNFUl9BR0VOVCcsICdIVFRQX0NPT0tJRScsICdIVFRQX1JFRkVSRVInKToKICAgICAgICAgICAgIGVudi5zZXRkZWZhdWx0KGssICIiKQogCi0gICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDAsICJTY3JpcHQgb3V0cHV0IGZvbGxvd3MiKQorICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoSFRUUFN0YXR1cy5PSywgIlNjcmlwdCBvdXRwdXQgZm9sbG93cyIpCiAgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCiAKICAgICAgICAgZGVjb2RlZF9xdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoJysnLCAnICcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DaGFuZ2VMb2cgYi9MaWIvaWRsZWxpYi9DaGFuZ2VMb2cKaW5kZXggOTg1ODcxYi4uOTBlMDJmNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2hhbmdlTG9nCisrKyBiL0xpYi9pZGxlbGliL0NoYW5nZUxvZwpAQCAtMjAsNyArMjAsNyBAQAogMjAwMS0wNy0xOSAxNDo0OSAgZWxndWF2YXMKIAogCSogQ2hhbmdlTG9nLCBFZGl0b3JXaW5kb3cucHksIElOU1RBTExBVElPTiwgTkVXUy50eHQsIFJFQURNRS50eHQsCi0JVE9ETy50eHQsIGlkbGV2ZXIucHk6IAorCVRPRE8udHh0LCBpZGxldmVyLnB5OgogCW1pbm9yIHRpZHktdXBzIHJlYWR5IGZvciAwLjguMSBhbHBoYSB0YXJiYWxsIHJlbGVhc2UKIAogMjAwMS0wNy0xNyAxNToxMiAga2JrCkBAIC0xNzIsNyArMTcyLDcgQEAKIAlhbGwgdGhpcyB3b3JrIHcvIGEgZnV0dXJlLXN0bXQganVzdCBsb29rcyBoYXJkZXIgYW5kIGhhcmRlci4iCiAJLS10aW1fb25lCiAJCi0JKEZyb20gUmVsIDEuODogIkhhY2sgdG8gbWFrZSB0aGlzIHN0aWxsIHdvcmsgd2l0aCBQeXRob24gMS41LjIuIAorCShGcm9tIFJlbCAxLjg6ICJIYWNrIHRvIG1ha2UgdGhpcyBzdGlsbCB3b3JrIHdpdGggUHl0aG9uIDEuNS4yLgogCTstKCAiIC0tZmRyYWtlKQogCiAyMDAxLTA3LTE0IDE0OjUxICBrYmsKQEAgLTE5Myw3ICsxOTMsNyBAQAogCXRlc3QoKSB0byBfdGVzdCgpLiIgIC0tR3ZSCiAJCiAJVGhpcyB3YXMgYW4gaW50ZXJlc3RpbmcgbWVyZ2UuIFRoZSBqb2luIGNvbXBsZXRlbHkgbWlzc2VkIHJlbW92aW5nCi0JZ29vZG5hbWUoKSwgd2hpY2ggd2FzIGFkamFjZW50LCBidXQgb3V0c2lkZSBvZiwgYSBzbWFsbCBjb25mbGljdC4gCisJZ29vZG5hbWUoKSwgd2hpY2ggd2FzIGFkamFjZW50LCBidXQgb3V0c2lkZSBvZiwgYSBzbWFsbCBjb25mbGljdC4KIAlJIG9ubHkgY2F1Z2h0IGl0IGJ5IGNvbXBhcmluZyB0aGUgMS4xLjMuMi8xLjEuMy4zIGRpZmYuICBDVlMgYWluJ3QKIAlpbmZhbGxpYmxlLgogCkBAIC01MTYsMTIgKzUxNiwxMiBAQAogCiAyMDAwLTA4LTE1IDIyOjUxICBub3dvbmRlcgogCi0JKiBJRExFRk9SSy5odG1sOiAKKwkqIElETEVGT1JLLmh0bWw6CiAJY29ycmVjdGVkIGVtYWlsIGFkZHJlc3MKIAogMjAwMC0wOC0xNSAyMjo0NyAgbm93b25kZXIKIAotCSogSURMRUZPUksuaHRtbDogCisJKiBJRExFRk9SSy5odG1sOgogCWFkZGVkIC5odG1sIGZpbGUgZm9yIGh0dHA6Ly9pZGxlZm9yay5zb3VyY2Vmb3JnZS5uZXQKIAogMjAwMC0wOC0xNSAxMToxMyAgZHNjaGVyZXIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5IGIvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKaW5kZXggNDQ3ODNiNi4uN2QyNWFkYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKKysrIGIvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKQEAgLTU3LDE4ICs1NywxOCBAQAogICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIGJvcmRlciB3aWR0aCBhbmQgaG9yaXpvbnRhbCBwYWRkaW5nIHJlcXVpcmVkIHRvCiAgICAgICAgICAgICAjIGFsaWduIHRoZSBjb250ZXh0IHdpdGggdGhlIHRleHQgaW4gdGhlIG1haW4gVGV4dCB3aWRnZXQuCiAgICAgICAgICAgICAjCi0gICAgICAgICAgICAjIEFsbCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGludChzdHIoPHZhbHVlPikpLCBzaW5jZSBzb21lCisgICAgICAgICAgICAjIEFsbCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGdldGludCgpLCBzaW5jZSBzb21lCiAgICAgICAgICAgICAjIHZhbHVlcyBtYXkgYmUgcGl4ZWwgb2JqZWN0cywgd2hpY2ggY2FuJ3Qgc2ltcGx5IGJlIGFkZGVkIHRvIGludHMuCiAgICAgICAgICAgICB3aWRnZXRzID0gc2VsZi5lZGl0d2luLnRleHQsIHNlbGYuZWRpdHdpbi50ZXh0X2ZyYW1lCiAgICAgICAgICAgICAjIENhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgdmVydGljYWwgcGFkZGluZwogICAgICAgICAgICAgcGFkeCA9IDAKICAgICAgICAgICAgIGZvciB3aWRnZXQgaW4gd2lkZ2V0czoKLSAgICAgICAgICAgICAgICBwYWR4ICs9IGludChzdHIoIHdpZGdldC5wYWNrX2luZm8oKVsncGFkeCddICkpCi0gICAgICAgICAgICAgICAgcGFkeCArPSBpbnQoc3RyKCB3aWRnZXQuY2dldCgncGFkeCcpICkpCisgICAgICAgICAgICAgICAgcGFkeCArPSB3aWRnZXQudGsuZ2V0aW50KHdpZGdldC5wYWNrX2luZm8oKVsncGFkeCddKQorICAgICAgICAgICAgICAgIHBhZHggKz0gd2lkZ2V0LnRrLmdldGludCh3aWRnZXQuY2dldCgncGFkeCcpKQogICAgICAgICAgICAgIyBDYWxjdWxhdGUgdGhlIHJlcXVpcmVkIGJvcmRlciB3aWR0aAogICAgICAgICAgICAgYm9yZGVyID0gMAogICAgICAgICAgICAgZm9yIHdpZGdldCBpbiB3aWRnZXRzOgotICAgICAgICAgICAgICAgIGJvcmRlciArPSBpbnQoc3RyKCB3aWRnZXQuY2dldCgnYm9yZGVyJykgKSkKKyAgICAgICAgICAgICAgICBib3JkZXIgKz0gd2lkZ2V0LnRrLmdldGludCh3aWRnZXQuY2dldCgnYm9yZGVyJykpCiAgICAgICAgICAgICBzZWxmLmxhYmVsID0gdGtpbnRlci5MYWJlbChzZWxmLmVkaXR3aW4udG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0iXG4iICogKHNlbGYuY29udGV4dF9kZXB0aCAtIDEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0hJU1RPUlkudHh0IGIvTGliL2lkbGVsaWIvSElTVE9SWS50eHQKaW5kZXggMDFkNzNlZC4uNzMxZmFiZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSElTVE9SWS50eHQKKysrIGIvTGliL2lkbGVsaWIvSElTVE9SWS50eHQKQEAgLTExLDcgKzExLDcgQEAKICpSZWxlYXNlIGRhdGU6IDIyLUp1bC0yMDAxKgogCiAtIE5ldyB0YXJiYWxsIHJlbGVhc2VkIGFzIGEgcmVzdWx0IG9mIHRoZSAncmV2aXRhbGlzYXRpb24nIG9mIHRoZSBJRExFZm9yawotICBwcm9qZWN0LiAKKyAgcHJvamVjdC4KIAogLSBUaGlzIHJlbGVhc2UgcmVxdWlyZXMgcHl0aG9uIDIuMSBvciBiZXR0ZXIuIENvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyCiAgIHZlcnNpb25zIG9mIHB5dGhvbiAoZXNwZWNpYWxseSBhbmNpZW50IG9uZXMgbGlrZSAxLjV4KSBpcyBubyBsb25nZXIgYQpAQCAtMjYsOCArMjYsOCBAQAogICBub3Qgd29ya2luZywgYnV0IEkgYmVsaWV2ZSB0aGlzIHdhcyB0aGUgY2FzZSB3aXRoIHRoZSBwcmV2aW91cyBJRExFIGZvcmsKICAgcmVsZWFzZSAoMC43LjEpIGFzIHdlbGwuCiAKLS0gVGhpcyByZWxlYXNlIGlzIGJlaW5nIG1hZGUgbm93IHRvIG1hcmsgdGhlIHBvaW50IGF0IHdoaWNoIElETEVmb3JrIGlzIAotICBsYXVuY2hpbmcgaW50byBhIG5ldyBzdGFnZSBvZiBkZXZlbG9wbWVudC4gCistIFRoaXMgcmVsZWFzZSBpcyBiZWluZyBtYWRlIG5vdyB0byBtYXJrIHRoZSBwb2ludCBhdCB3aGljaCBJRExFZm9yayBpcworICBsYXVuY2hpbmcgaW50byBhIG5ldyBzdGFnZSBvZiBkZXZlbG9wbWVudC4KIAogLSBJRExFZm9yayBDVlMgd2lsbCBub3cgYmUgYnJhbmNoZWQgdG8gZW5hYmxlIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgYW5kCiAgIGV4cGxvcmF0aW9uIG9mIHRoZSB0d28gImV4ZWN1dGlvbiBpbiBhIHJlbW90ZSBwcm9jZXNzIiBwYXRjaGVzIHN1Ym1pdHRlZCBieQpAQCAtOTYsNyArOTYsNyBAQAogICAgIGluc3RlYWQgb2YgdGhlIElETEUgaGVscDsgc2hpZnQtVEFCIGlzIG5vdyBhIHN5bm9ueW0gZm9yIHVuaW5kZW50LgogCiAtIE5ldyBtb2R1bGVzOgotICAKKwogICBFeGVjQmluZGluZy5weSAgICAgICAgIEV4ZWN1dGVzIHByb2dyYW0gdGhyb3VnaCBsb2FkZXIKICAgbG9hZGVyLnB5ICAgICAgICAgICAgICBCb290c3RyYXBzIHVzZXIgcHJvZ3JhbQogICBwcm90b2NvbC5weSAgICAgICAgICAgIFJQQyBwcm90b2NvbApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCAyNjJlZTA2Li5iZTA2M2M0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSw2ICsxLDYgQEAKLVdoYXQncyBOZXcgaW4gSWRsZSAzLjQuND8KK1doYXQncyBOZXcgaW4gSURMRSAzLjUuMD8KID09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtPz8tPz8qCisqUmVsZWFzZSBkYXRlOiAyMDE1LTA5LTEzKiA/PwogCiAtIElzc3VlICMyMzY3MjogQWxsb3cgSWRsZSB0byBlZGl0IGFuZCBydW4gZmlsZXMgd2l0aCBhc3RyYWwgY2hhcnMgaW4gbmFtZS4KICAgUGF0Y2ggYnkgTW9oZCBTYW5hZCBaYWtpIFJpenZpLgpAQCAtMTgsMTEgKzE4LDYgQEAKIC0gSXNzdWUgIzIzMTg0OiByZW1vdmUgdW51c2VkIG5hbWVzIGFuZCBpbXBvcnRzIGluIGlkbGVsaWIuCiAgIEluaXRpYWwgcGF0Y2ggYnkgQWwgU3dlaWdhcnQuCiAKLQotV2hhdCdzIE5ldyBpbiBJZGxlIDMuNC4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNS0wMi0yNSoKLQogLSBJc3N1ZSAjMjA1Nzc6IENvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaAogICBleHRlbnNpb24gaGFzIGJlZW4gbW92ZWQgZnJvbSB0aGUgR2VuZXJhbCB0YWIgb2YgdGhlIElkbGUgcHJlZmVyZW5jZXMgZGlhbG9nCiAgIHRvIHRoZSBGb3JtYXRQYXJhZ3JhcGggdGFiIG9mIHRoZSBDb25maWcgRXh0ZW5zaW9ucyBkaWFsb2cuCkBAIC00NywxNSArNDIsMTAgQEAKIAogLSBJc3N1ZSAjMjE5ODY6IENvZGUgb2JqZWN0cyBhcmUgbm90IG5vcm1hbGx5IHBpY2tsZWQgYnkgdGhlIHBpY2tsZSBtb2R1bGUuCiAgIFRvIG1hdGNoIHRoaXMsIHRoZXkgYXJlIG5vIGxvbmdlciBwaWNrbGVkIHdoZW4gcnVubmluZyB1bmRlciBJZGxlLgotCisgIAogLSBJc3N1ZSAjMjMxODA6IFJlbmFtZSBJRExFICJXaW5kb3dzIiBtZW51IGl0ZW0gdG8gIldpbmRvdyIuCiAgIFBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjQuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMTAtMDYqCi0KIC0gSXNzdWUgIzE3MzkwOiBBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLAogICBtb3ZlIHZlcnNpb24gdG8gZW5kLgogCkBAIC05MCwxNCArODAsOCBAQAogCiAtIElzc3VlICMxODQwOTogQWRkIHVuaXR0ZXN0IGZvciBBdXRvQ29tcGxldGUuIFBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KIAotLSBJc3N1ZSAjMTgxMDQ6IEFkZCBpZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSB3aXRoIGEgZmV3IHNhbXBsZSB0ZXN0cyB0byBiZWdpbgotICBjb25zb2xpZGF0aW5nIGFuZCBpbXByb3ZpbmcgaHVtYW4tdmFsaWRhdGVkIHRlc3RzIG9mIElkbGUuIENoYW5nZSBvdGhlciBmaWxlcwotICBhcyBuZWVkZWQgdG8gd29yayB3aXRoIGh0ZXN0LiAgUnVubmluZyB0aGUgbW9kdWxlIGFzIF9fbWFpbl9fIHJ1bnMgYWxsIHRlc3RzLgotCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjQuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMDUtMTgqCistIElzc3VlICMyMTQ3NzogaHRlc3QucHkgLSBJbXByb3ZlIGZyYW1ld29yaywgY29tcGxldGUgc2V0IG9mIHRlc3RzLgorICBQYXRjaGVzIGJ5IFNhaW1hZGhhdiBIZWJsaWthcgogCiAtIElzc3VlICMxODEwNDogQWRkIGlkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IHdpdGggYSBmZXcgc2FtcGxlIHRlc3RzIHRvIGJlZ2luCiAgIGNvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyIGZpbGVzCkBAIC0xNzQsNyArMTU4LDYgQEAKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMi4xPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiAxNS1NYXktMTEqCiAKIC0gSXNzdWUgIzYzNzg6IEZ1cnRoZXIgYWRqdXN0IGlkbGUuYmF0IHRvIHN0YXJ0IGFzc29jaWF0ZWQgUHl0aG9uCkBAIC0xOTIsNyArMTc1LDYgQEAKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMWIxPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiAwNi1NYXktMDkqCiAKIC0gVXNlIG9mICdmaWx0ZXInIGluIGtleWJpbmRpbmdEaWFsb2cucHkgd2FzIGNhdXNpbmcgY3VzdG9tIGtleSBhc3NpZ25tZW50IHRvCkBAIC0yMDEsNyArMTgzLDYgQEAKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMWExPwogPT09PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiAwNy1NYXItMDkqCiAKIC0gSXNzdWUgIzQ4MTU6IE9mZmVyIGNvbnZlcnNpb24gdG8gVVRGLTggaWYgc291cmNlIGZpbGVzIGhhdmUKQEAgLTIxOSw3ICsyMDAsNiBAQAogCiBXaGF0J3MgTmV3IGluIElETEUgMi43PyAoVU5SRUxFQVNFRCwgYnV0IG1lcmdlZCBpbnRvIDMuMSByZWxlYXNlcyBhYm92ZS4pCiA9PT09PT09PT09PT09PT09PT09PT09PQotCiAqUmVsZWFzZSBkYXRlOiBYWC1YWFgtMjAxMCoKIAogLSBpZGxlLnB5IG1vZGlmaWVkIGFuZCBzaW1wbGlmaWVkIHRvIGJldHRlciBzdXBwb3J0IGRldmVsb3BpbmcgZXhwZXJpbWVudGFsCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0IGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAppbmRleCBiMmJiNzNiLi43ZjRhNjZkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0CisrKyBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKQEAgLTE0LDcgKzE0LDcgQEAKIFRoZXJlIGlzIGEgUHl0aG9uIFNoZWxsIHdpbmRvdyB3aGljaCBmZWF0dXJlcyBjb2xvcml6aW5nIGFuZCBjb21tYW5kIHJlY2FsbC4KIAogSURMRSBleGVjdXRlcyBQeXRob24gY29kZSBpbiBhIHNlcGFyYXRlIHByb2Nlc3MsIHdoaWNoIGlzIHJlc3RhcnRlZCBmb3IgZWFjaAotUnVuIChGNSkgaW5pdGlhdGVkIGZyb20gYW4gZWRpdG9yIHdpbmRvdy4gIFRoZSBlbnZpcm9ubWVudCBjYW4gYWxzbyBiZSAKK1J1biAoRjUpIGluaXRpYXRlZCBmcm9tIGFuIGVkaXRvciB3aW5kb3cuICBUaGUgZW52aXJvbm1lbnQgY2FuIGFsc28gYmUKIHJlc3RhcnRlZCBmcm9tIHRoZSBTaGVsbCB3aW5kb3cgd2l0aG91dCByZXN0YXJ0aW5nIElETEUuCiAKIFRoaXMgZW5oYW5jZW1lbnQgaGFzIG9mdGVuIGJlZW4gcmVxdWVzdGVkLCBhbmQgaXMgbm93IGZpbmFsbHkgYXZhaWxhYmxlLiAgVGhlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5IGIvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQppbmRleCBiM2Q3YmZhLi42N2Q3ZjYxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKQEAgLTQ3LDggKzQ3LDkgQEAKICAgICAgICAgdGsuY3JlYXRlY29tbWFuZCh3LCBzZWxmLmRpc3BhdGNoKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIldpZGdldFJlZGlyZWN0b3IoJXM8JXM+KSIgJSAoc2VsZi53aWRnZXQuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53aWRnZXQuX3cpCisgICAgICAgIHJldHVybiAiJXMoJXM8JXM+KSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53aWRnZXQuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYud2lkZ2V0Ll93KQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiVW5yZWdpc3RlciBvcGVyYXRpb25zIGFuZCByZXZlcnQgcmVkaXJlY3Rpb24gY3JlYXRlZCBieSAuX19pbml0X18uIgpAQCAtMTQyLDcgKzE0Myw4IEBACiAgICAgICAgIHNlbGYub3JpZ19hbmRfb3BlcmF0aW9uID0gKHJlZGlyLm9yaWcsIG9wZXJhdGlvbikKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJPcmlnaW5hbENvbW1hbmQoJXIsICVyKSIgJSAoc2VsZi5yZWRpciwgc2VsZi5vcGVyYXRpb24pCisgICAgICAgIHJldHVybiAiJXMoJXIsICVyKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWRpciwgc2VsZi5vcGVyYXRpb24pCiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MpOgogICAgICAgICByZXR1cm4gc2VsZi50a19jYWxsKHNlbGYub3JpZ19hbmRfb3BlcmF0aW9uICsgYXJncykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQppbmRleCBjNzc5MmZiLi5lZGJkNTU4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICAgICAgZW5naW5lLnJldmFyLnNldCgxKQogICAgICAgICBFcXVhbChlbmdpbmUuZ2V0cHJvZygpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1ib3guc2hvd2Vycm9yLm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvcjogbm90aGluZyB0byByZXBlYXRcblBhdHRlcm46ICsnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdFcnJvcjogbm90aGluZyB0byByZXBlYXQgYXQgcG9zaXRpb24gMFxuUGF0dGVybjogKycpCiAKICAgICBkZWYgdGVzdF9yZXBvcnRfZXJyb3Ioc2VsZik6CiAgICAgICAgIHNob3dlcnJvciA9IE1ib3guc2hvd2Vycm9yCmRpZmYgLS1naXQgYS9MaWIvaW1hcGxpYi5weSBiL0xpYi9pbWFwbGliLnB5CmluZGV4IGViMDVkY2IuLjRlOGE0YmIgMTAwNjQ0Ci0tLSBhL0xpYi9pbWFwbGliLnB5CisrKyBiL0xpYi9pbWFwbGliLnB5CkBAIC02Niw2ICs2Niw3IEBACiAgICAgICAgICdDUkVBVEUnOiAgICAgICAoJ0FVVEgnLCAnU0VMRUNURUQnKSwKICAgICAgICAgJ0RFTEVURSc6ICAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICAnREVMRVRFQUNMJzogICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCisgICAgICAgICdFTkFCTEUnOiAgICAgICAoJ0FVVEgnLCApLAogICAgICAgICAnRVhBTUlORSc6ICAgICAgKCdBVVRIJywgJ1NFTEVDVEVEJyksCiAgICAgICAgICdFWFBVTkdFJzogICAgICAoJ1NFTEVDVEVEJywpLAogICAgICAgICAnRkVUQ0gnOiAgICAgICAgKCdTRUxFQ1RFRCcsKSwKQEAgLTEwNywxMiArMTA4LDE3IEBACiAgICAgICAgIGJyJyAoP1A8aG91cj5bMC05XVswLTldKTooP1A8bWluPlswLTldWzAtOV0pOig/UDxzZWM+WzAtOV1bMC05XSknCiAgICAgICAgIGJyJyAoP1A8em9uZW4+Wy0rXSkoP1A8em9uZWg+WzAtOV1bMC05XSkoP1A8em9uZW0+WzAtOV1bMC05XSknCiAgICAgICAgIGJyJyInKQorIyBMaXRlcmFsIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogTGl0ZXJhbCA9IHJlLmNvbXBpbGUoYnInLip7KD9QPHNpemU+XGQrKX0kJywgcmUuQVNDSUkpCiBNYXBDUkxGID0gcmUuY29tcGlsZShicidcclxufFxyfFxuJykKIFJlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPlteXF1dKikpP1xdJykKIFVudGFnZ2VkX3Jlc3BvbnNlID0gcmUuY29tcGlsZShicidcKiAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+LiopKT8nKQorIyBVbnRhZ2dlZF9zdGF0dXMgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIFVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoCiAgICAgYnInXCogKD9QPGRhdGE+XGQrKSAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGEyPi4qKSk/JywgcmUuQVNDSUkpCisjIFdlIGNvbXBpbGUgdGhlc2UgaW4gX21vZGVfeHh4LgorX0xpdGVyYWwgPSBicicuKnsoP1A8c2l6ZT5cZCspfSQnCitfVW50YWdnZWRfc3RhdHVzID0gYnInXCogKD9QPGRhdGE+XGQrKSAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGEyPi4qKSk/JwogCiAKIApAQCAtMTY2LDcgKzE3Miw3IEBACiAgICAgY2xhc3MgYWJvcnQoZXJyb3IpOiBwYXNzICAgICAgICAjIFNlcnZpY2UgZXJyb3JzIC0gY2xvc2UgYW5kIHJldHJ5CiAgICAgY2xhc3MgcmVhZG9ubHkoYWJvcnQpOiBwYXNzICAgICAjIE1haWxib3ggc3RhdHVzIGNoYW5nZWQgdG8gUkVBRC1PTkxZCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCA9ICcnLCBwb3J0ID0gSU1BUDRfUE9SVCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9SU1BUDRfUE9SVCk6CiAgICAgICAgIHNlbGYuZGVidWcgPSBEZWJ1ZwogICAgICAgICBzZWxmLnN0YXRlID0gJ0xPR09VVCcKICAgICAgICAgc2VsZi5saXRlcmFsID0gTm9uZSAgICAgICAgICAgICAjIEEgbGl0ZXJhbCBhcmd1bWVudCB0byBhIGNvbW1hbmQKQEAgLTE3Niw2ICsxODIsNyBAQAogICAgICAgICBzZWxmLmlzX3JlYWRvbmx5ID0gRmFsc2UgICAgICAgICMgUkVBRC1PTkxZIGRlc2lyZWQgc3RhdGUKICAgICAgICAgc2VsZi50YWdudW0gPSAwCiAgICAgICAgIHNlbGYuX3Rsc19lc3RhYmxpc2hlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGVfYXNjaWkoKQogCiAgICAgICAgICMgT3BlbiBzb2NrZXQgdG8gc2VydmVyLgogCkBAIC0xOTAsNiArMTk3LDE5IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBfbW9kZV9hc2NpaShzZWxmKToKKyAgICAgICAgc2VsZi51dGY4X2VuYWJsZWQgPSBGYWxzZQorICAgICAgICBzZWxmLl9lbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgc2VsZi5MaXRlcmFsID0gcmUuY29tcGlsZShfTGl0ZXJhbCwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZShfVW50YWdnZWRfc3RhdHVzLCByZS5BU0NJSSkKKworCisgICAgZGVmIF9tb2RlX3V0Zjgoc2VsZik6CisgICAgICAgIHNlbGYudXRmOF9lbmFibGVkID0gVHJ1ZQorICAgICAgICBzZWxmLl9lbmNvZGluZyA9ICd1dGYtOCcKKyAgICAgICAgc2VsZi5MaXRlcmFsID0gcmUuY29tcGlsZShfTGl0ZXJhbCkKKyAgICAgICAgc2VsZi5VbnRhZ2dlZF9zdGF0dXMgPSByZS5jb21waWxlKF9VbnRhZ2dlZF9zdGF0dXMpCisKIAogICAgIGRlZiBfY29ubmVjdChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgdW5pcXVlIHRhZyBmb3IgdGhpcyBzZXNzaW9uLApAQCAtMjM5LDYgKzI1OSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgYXR0ci5sb3dlcigpKQogICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiVW5rbm93biBJTUFQNCBjb21tYW5kOiAnJXMnIiAlIGF0dHIpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sb2dvdXQoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKIAogCiAgICAgIyAgICAgICBPdmVycmlkYWJsZSBtZXRob2RzCkBAIC0zNTIsNyArMzgwLDEwIEBACiAgICAgICAgICAgICBkYXRlX3RpbWUgPSBUaW1lMkludGVybmFsZGF0ZShkYXRlX3RpbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRlX3RpbWUgPSBOb25lCi0gICAgICAgIHNlbGYubGl0ZXJhbCA9IE1hcENSTEYuc3ViKENSTEYsIG1lc3NhZ2UpCisgICAgICAgIGxpdGVyYWwgPSBNYXBDUkxGLnN1YihDUkxGLCBtZXNzYWdlKQorICAgICAgICBpZiBzZWxmLnV0ZjhfZW5hYmxlZDoKKyAgICAgICAgICAgIGxpdGVyYWwgPSBiJ1VURjggKCcgKyBsaXRlcmFsICsgYicpJworICAgICAgICBzZWxmLmxpdGVyYWwgPSBsaXRlcmFsCiAgICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCBtYWlsYm94LCBmbGFncywgZGF0ZV90aW1lKQogCiAKQEAgLTQ0Nyw2ICs0NzgsMTggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zaW1wbGVfY29tbWFuZCgnREVMRVRFQUNMJywgbWFpbGJveCwgd2hvKQogCisgICAgZGVmIGVuYWJsZShzZWxmLCBjYXBhYmlsaXR5KToKKyAgICAgICAgIiIiU2VuZCBhbiBSRkM1MTYxIGVuYWJsZSBzdHJpbmcgdG8gdGhlIHNlcnZlci4KKworICAgICAgICAodHlwLCBbZGF0YV0pID0gPGludGFuY2U+LmVuYWJsZShjYXBhYmlsaXR5KQorICAgICAgICAiIiIKKyAgICAgICAgaWYgJ0VOQUJMRScgbm90IGluIHNlbGYuY2FwYWJpbGl0aWVzOgorICAgICAgICAgICAgcmFpc2UgSU1BUDQuZXJyb3IoIlNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IEVOQUJMRSIpCisgICAgICAgIHR5cCwgZGF0YSA9IHNlbGYuX3NpbXBsZV9jb21tYW5kKCdFTkFCTEUnLCBjYXBhYmlsaXR5KQorICAgICAgICBpZiB0eXAgPT0gJ09LJyBhbmQgJ1VURjg9QUNDRVBUJyBpbiBjYXBhYmlsaXR5LnVwcGVyKCk6CisgICAgICAgICAgICBzZWxmLl9tb2RlX3V0ZjgoKQorICAgICAgICByZXR1cm4gdHlwLCBkYXRhCisKICAgICBkZWYgZXhwdW5nZShzZWxmKToKICAgICAgICAgIiIiUGVybWFuZW50bHkgcmVtb3ZlIGRlbGV0ZWQgaXRlbXMgZnJvbSBzZWxlY3RlZCBtYWlsYm94LgogCkBAIC01NTMsNyArNTk2LDcgQEAKICAgICBkZWYgX0NSQU1fTUQ1X0FVVEgoc2VsZiwgY2hhbGxlbmdlKToKICAgICAgICAgIiIiIEF1dGhvYmplY3QgdG8gdXNlIHdpdGggQ1JBTS1NRDUgYXV0aGVudGljYXRpb24uICIiIgogICAgICAgICBpbXBvcnQgaG1hYwotICAgICAgICBwd2QgPSAoc2VsZi5wYXNzd29yZC5lbmNvZGUoJ0FTQ0lJJykgaWYgaXNpbnN0YW5jZShzZWxmLnBhc3N3b3JkLCBzdHIpCisgICAgICAgIHB3ZCA9IChzZWxmLnBhc3N3b3JkLmVuY29kZSgndXRmLTgnKSBpZiBpc2luc3RhbmNlKHNlbGYucGFzc3dvcmQsIHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugc2VsZi5wYXNzd29yZCkKICAgICAgICAgcmV0dXJuIHNlbGYudXNlciArICIgIiArIGhtYWMuSE1BQyhwd2QsIGNoYWxsZW5nZSwgJ21kNScpLmhleGRpZ2VzdCgpCiAKQEAgLTY1Myw5ICs2OTYsMTIgQEAKICAgICAgICAgKHR5cCwgW2RhdGFdKSA9IDxpbnN0YW5jZT4uc2VhcmNoKGNoYXJzZXQsIGNyaXRlcmlvbiwgLi4uKQogCiAgICAgICAgICdkYXRhJyBpcyBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBtYXRjaGluZyBtZXNzYWdlIG51bWJlcnMuCisgICAgICAgIElmIFVURjggaXMgZW5hYmxlZCwgY2hhcnNldCBNVVNUIGJlIE5vbmUuCiAgICAgICAgICIiIgogICAgICAgICBuYW1lID0gJ1NFQVJDSCcKICAgICAgICAgaWYgY2hhcnNldDoKKyAgICAgICAgICAgIGlmIHNlbGYudXRmOF9lbmFibGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIElNQVA0LmVycm9yKCJOb24tTm9uZSBjaGFyc2V0IG5vdCB2YWxpZCBpbiBVVEY4IG1vZGUiKQogICAgICAgICAgICAgdHlwLCBkYXQgPSBzZWxmLl9zaW1wbGVfY29tbWFuZChuYW1lLCAnQ0hBUlNFVCcsIGNoYXJzZXQsICpjcml0ZXJpYSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHR5cCwgZGF0ID0gc2VsZi5fc2ltcGxlX2NvbW1hbmQobmFtZSwgKmNyaXRlcmlhKQpAQCAtODY5LDcgKzkxNSw3IEBACiAgICAgZGVmIF9jaGVja19ieWUoc2VsZik6CiAgICAgICAgIGJ5ZSA9IHNlbGYudW50YWdnZWRfcmVzcG9uc2VzLmdldCgnQllFJykKICAgICAgICAgaWYgYnllOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydChieWVbLTFdLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpKQorICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydChieWVbLTFdLmRlY29kZShzZWxmLl9lbmNvZGluZywgJ3JlcGxhY2UnKSkKIAogCiAgICAgZGVmIF9jb21tYW5kKHNlbGYsIG5hbWUsICphcmdzKToKQEAgLTg5MCwxMiArOTM2LDEyIEBACiAgICAgICAgICAgICByYWlzZSBzZWxmLnJlYWRvbmx5KCdtYWlsYm94IHN0YXR1cyBjaGFuZ2VkIHRvIFJFQUQtT05MWScpCiAKICAgICAgICAgdGFnID0gc2VsZi5fbmV3X3RhZygpCi0gICAgICAgIG5hbWUgPSBieXRlcyhuYW1lLCAnQVNDSUknKQorICAgICAgICBuYW1lID0gYnl0ZXMobmFtZSwgc2VsZi5fZW5jb2RpbmcpCiAgICAgICAgIGRhdGEgPSB0YWcgKyBiJyAnICsgbmFtZQogICAgICAgICBmb3IgYXJnIGluIGFyZ3M6CiAgICAgICAgICAgICBpZiBhcmcgaXMgTm9uZTogY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBzdHIpOgotICAgICAgICAgICAgICAgIGFyZyA9IGJ5dGVzKGFyZywgIkFTQ0lJIikKKyAgICAgICAgICAgICAgICBhcmcgPSBieXRlcyhhcmcsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBiJyAnICsgYXJnCiAKICAgICAgICAgbGl0ZXJhbCA9IHNlbGYubGl0ZXJhbApAQCAtOTA1LDcgKzk1MSw3IEBACiAgICAgICAgICAgICAgICAgbGl0ZXJhdG9yID0gbGl0ZXJhbAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsaXRlcmF0b3IgPSBOb25lCi0gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBieXRlcygnIHslc30nICUgbGVuKGxpdGVyYWwpLCAnQVNDSUknKQorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgYnl0ZXMoJyB7JXN9JyAlIGxlbihsaXRlcmFsKSwgc2VsZi5fZW5jb2RpbmcpCiAKICAgICAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSA0OgpAQCAtOTcwLDcgKzEwMTYsNyBAQAogICAgICAgICB0eXAsIGRhdCA9IHNlbGYuY2FwYWJpbGl0eSgpCiAgICAgICAgIGlmIGRhdCA9PSBbTm9uZV06CiAgICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKCdubyBDQVBBQklMSVRZIHJlc3BvbnNlIGZyb20gc2VydmVyJykKLSAgICAgICAgZGF0ID0gc3RyKGRhdFstMV0sICJBU0NJSSIpCisgICAgICAgIGRhdCA9IHN0cihkYXRbLTFdLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgZGF0ID0gZGF0LnVwcGVyKCkKICAgICAgICAgc2VsZi5jYXBhYmlsaXRpZXMgPSB0dXBsZShkYXQuc3BsaXQoKSkKIApAQCAtOTg5LDEwICsxMDM1LDEwIEBACiAgICAgICAgIGlmIHNlbGYuX21hdGNoKHNlbGYudGFncmUsIHJlc3ApOgogICAgICAgICAgICAgdGFnID0gc2VsZi5tby5ncm91cCgndGFnJykKICAgICAgICAgICAgIGlmIG5vdCB0YWcgaW4gc2VsZi50YWdnZWRfY29tbWFuZHM6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgndW5leHBlY3RlZCB0YWdnZWQgcmVzcG9uc2U6ICVzJyAlIHJlc3ApCisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5hYm9ydCgndW5leHBlY3RlZCB0YWdnZWQgcmVzcG9uc2U6ICVyJyAlIHJlc3ApCiAKICAgICAgICAgICAgIHR5cCA9IHNlbGYubW8uZ3JvdXAoJ3R5cGUnKQotICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgJ0FTQ0lJJykKKyAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICAgZGF0ID0gc2VsZi5tby5ncm91cCgnZGF0YScpCiAgICAgICAgICAgICBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddID0gKHR5cCwgW2RhdF0pCiAgICAgICAgIGVsc2U6CkBAIC0xMDAxLDcgKzEwNDcsNyBAQAogICAgICAgICAgICAgIyAnKicgKHVudGFnZ2VkKSByZXNwb25zZXM/CiAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9tYXRjaChVbnRhZ2dlZF9yZXNwb25zZSwgcmVzcCk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fbWF0Y2goVW50YWdnZWRfc3RhdHVzLCByZXNwKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9tYXRjaChzZWxmLlVudGFnZ2VkX3N0YXR1cywgcmVzcCk6CiAgICAgICAgICAgICAgICAgICAgIGRhdDIgPSBzZWxmLm1vLmdyb3VwKCdkYXRhMicpCiAKICAgICAgICAgICAgIGlmIHNlbGYubW8gaXMgTm9uZToKQEAgLTEwMTEsMTcgKzEwNTcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250aW51YXRpb25fcmVzcG9uc2UgPSBzZWxmLm1vLmdyb3VwKCdkYXRhJykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUgICAgICMgTkI6IGluZGljYXRlcyBjb250aW51YXRpb24KIAotICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuYWJvcnQoInVuZXhwZWN0ZWQgcmVzcG9uc2U6ICclcyciICUgcmVzcCkKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmFib3J0KCJ1bmV4cGVjdGVkIHJlc3BvbnNlOiAlciIgJSByZXNwKQogCiAgICAgICAgICAgICB0eXAgPSBzZWxmLm1vLmdyb3VwKCd0eXBlJykKLSAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsICdhc2NpaScpCisgICAgICAgICAgICB0eXAgPSBzdHIodHlwLCBzZWxmLl9lbmNvZGluZykKICAgICAgICAgICAgIGRhdCA9IHNlbGYubW8uZ3JvdXAoJ2RhdGEnKQogICAgICAgICAgICAgaWYgZGF0IGlzIE5vbmU6IGRhdCA9IGInJyAgICAgICAgIyBOdWxsIHVudGFnZ2VkIHJlc3BvbnNlCiAgICAgICAgICAgICBpZiBkYXQyOiBkYXQgPSBkYXQgKyBiJyAnICsgZGF0MgogCiAgICAgICAgICAgICAjIElzIHRoZXJlIGEgbGl0ZXJhbCB0byBjb21lPwogCi0gICAgICAgICAgICB3aGlsZSBzZWxmLl9tYXRjaChMaXRlcmFsLCBkYXQpOgorICAgICAgICAgICAgd2hpbGUgc2VsZi5fbWF0Y2goc2VsZi5MaXRlcmFsLCBkYXQpOgogCiAgICAgICAgICAgICAgICAgIyBSZWFkIGxpdGVyYWwgZGlyZWN0IGZyb20gY29ubmVjdGlvbi4KIApAQCAtMTA0NSw3ICsxMDkxLDcgQEAKIAogICAgICAgICBpZiB0eXAgaW4gKCdPSycsICdOTycsICdCQUQnKSBhbmQgc2VsZi5fbWF0Y2goUmVzcG9uc2VfY29kZSwgZGF0KToKICAgICAgICAgICAgIHR5cCA9IHNlbGYubW8uZ3JvdXAoJ3R5cGUnKQotICAgICAgICAgICAgdHlwID0gc3RyKHR5cCwgIkFTQ0lJIikKKyAgICAgICAgICAgIHR5cCA9IHN0cih0eXAsIHNlbGYuX2VuY29kaW5nKQogICAgICAgICAgICAgc2VsZi5fYXBwZW5kX3VudGFnZ2VkKHR5cCwgc2VsZi5tby5ncm91cCgnZGF0YScpKQogCiAgICAgICAgIGlmIF9fZGVidWdfXzoKQEAgLTExMTUsNyArMTE2MSw3IEBACiAKICAgICBkZWYgX25ld190YWcoc2VsZik6CiAKLSAgICAgICAgdGFnID0gc2VsZi50YWdwcmUgKyBieXRlcyhzdHIoc2VsZi50YWdudW0pLCAnQVNDSUknKQorICAgICAgICB0YWcgPSBzZWxmLnRhZ3ByZSArIGJ5dGVzKHN0cihzZWxmLnRhZ251bSksIHNlbGYuX2VuY29kaW5nKQogICAgICAgICBzZWxmLnRhZ251bSA9IHNlbGYudGFnbnVtICsgMQogICAgICAgICBzZWxmLnRhZ2dlZF9jb21tYW5kc1t0YWddID0gTm9uZQogICAgICAgICByZXR1cm4gdGFnCkBAIC0xMjA1LDcgKzEyNTEsOCBAQAogICAgICAgICAiIiIKIAogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQga2V5ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQpAQCAtMTI0Myw3ICsxMjkwLDcgQEAKIAogICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X3N0cmVhbShjb21tYW5kKQogCi0gICAgICAgICAgICB3aGVyZSAiY29tbWFuZCIgaXMgYSBzdHJpbmcgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHN1YnByb2Nlc3MuUG9wZW4oKQorICAgICAgICAgICAgImNvbW1hbmQiIC0gYSBzdHJpbmcgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHN1YnByb2Nlc3MuUG9wZW4oKQogCiAgICAgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBzZWUgdGhlIGRvY3N0cmluZyBvZiB0aGUgcGFyZW50IGNsYXNzIElNQVA0LgogICAgICIiIgpAQCAtMTMyMCw3ICsxMzY3LDcgQEAKICAgICAgICAgIwogICAgICAgICBvdXAgPSBiJycKICAgICAgICAgaWYgaXNpbnN0YW5jZShpbnAsIHN0cik6Ci0gICAgICAgICAgICBpbnAgPSBpbnAuZW5jb2RlKCdBU0NJSScpCisgICAgICAgICAgICBpbnAgPSBpbnAuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHdoaWxlIGlucDoKICAgICAgICAgICAgIGlmIGxlbihpbnApID4gNDg6CiAgICAgICAgICAgICAgICAgdCA9IGlucFs6NDhdCmRpZmYgLS1naXQgYS9MaWIvaW1naGRyLnB5IGIvTGliL2ltZ2hkci5weQppbmRleCBhZGQyZWE4Li5iMjY3OTI1IDEwMDY0NAotLS0gYS9MaWIvaW1naGRyLnB5CisrKyBiL0xpYi9pbWdoZHIucHkKQEAgLTExMCw2ICsxMTAsMTggQEAKIAogdGVzdHMuYXBwZW5kKHRlc3RfYm1wKQogCitkZWYgdGVzdF93ZWJwKGgsIGYpOgorICAgIGlmIGguc3RhcnRzd2l0aChiJ1JJRkYnKSBhbmQgaFs4OjEyXSA9PSBiJ1dFQlAnOgorICAgICAgICByZXR1cm4gJ3dlYnAnCisKK3Rlc3RzLmFwcGVuZCh0ZXN0X3dlYnApCisKK2RlZiB0ZXN0X2V4cihoLCBmKToKKyAgICBpZiBoLnN0YXJ0c3dpdGgoYidceDc2XHgyZlx4MzFceDAxJyk6CisgICAgICAgIHJldHVybiAnZXhyJworCit0ZXN0cy5hcHBlbmQodGVzdF9leHIpCisKICMtLS0tLS0tLS0tLS0tLS0tLS0tLSMKICMgU21hbGwgdGVzdCBwcm9ncmFtICMKICMtLS0tLS0tLS0tLS0tLS0tLS0tLSMKZGlmZiAtLWdpdCBhL0xpYi9pbXAucHkgYi9MaWIvaW1wLnB5CmluZGV4IGM5MjJlOTIuLmY2ZmZmNDQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXAucHkKKysrIGIvTGliL2ltcC5weQpAQCAtOCwxNSArOCwxNiBAQAogIyAoUHJvYmFibHkpIG5lZWQgdG8gc3RheSBpbiBfaW1wCiBmcm9tIF9pbXAgaW1wb3J0IChsb2NrX2hlbGQsIGFjcXVpcmVfbG9jaywgcmVsZWFzZV9sb2NrLAogICAgICAgICAgICAgICAgICAgZ2V0X2Zyb3plbl9vYmplY3QsIGlzX2Zyb3plbl9wYWNrYWdlLAotICAgICAgICAgICAgICAgICAgaW5pdF9idWlsdGluLCBpbml0X2Zyb3plbiwgaXNfYnVpbHRpbiwgaXNfZnJvemVuLAorICAgICAgICAgICAgICAgICAgaW5pdF9mcm96ZW4sIGlzX2J1aWx0aW4sIGlzX2Zyb3plbiwKICAgICAgICAgICAgICAgICAgIF9maXhfY29fZmlsZW5hbWUpCiB0cnk6Ci0gICAgZnJvbSBfaW1wIGltcG9ydCBsb2FkX2R5bmFtaWMKKyAgICBmcm9tIF9pbXAgaW1wb3J0IGNyZWF0ZV9keW5hbWljCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgIyBQbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQgZHluYW1pYyBsb2FkaW5nLgotICAgIGxvYWRfZHluYW1pYyA9IE5vbmUKKyAgICBjcmVhdGVfZHluYW1pYyA9IE5vbmUKIAotZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIsIF9FUlJfTVNHLCBfU3BlY01ldGhvZHMKK2Zyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IF9FUlJfTVNHLCBfZXhlYywgX2xvYWQsIF9idWlsdGluX2Zyb21fbmFtZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgU291cmNlbGVzc0ZpbGVMb2FkZXIKIAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKQEAgLTI5LDcgKzMwLDcgQEAKIAogd2FybmluZ3Mud2FybigidGhlIGltcCBtb2R1bGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliOyAiCiAgICAgICAgICAgICAgICJzZWUgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIGFsdGVybmF0aXZlIHVzZXMiLAotICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAKICMgREVQUkVDQVRFRAogU0VBUkNIX0VSUk9SID0gMApAQCAtNTgsMjQgKzU5LDIzIEBACiBkZWYgZ2V0X21hZ2ljKCk6CiAgICAgIiIiKipERVBSRUNBVEVEKioKIAotICAgIFJldHVybiB0aGUgbWFnaWMgbnVtYmVyIGZvciAucHljIG9yIC5weW8gZmlsZXMuCisgICAgUmV0dXJuIHRoZSBtYWdpYyBudW1iZXIgZm9yIC5weWMgZmlsZXMuCiAgICAgIiIiCiAgICAgcmV0dXJuIHV0aWwuTUFHSUNfTlVNQkVSCiAKIAogZGVmIGdldF90YWcoKToKLSAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIHRhZyBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIiIgorICAgICIiIlJldHVybiB0aGUgbWFnaWMgdGFnIGZvciAucHljIGZpbGVzLiIiIgogICAgIHJldHVybiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCiAKIAogZGVmIGNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlPU5vbmUpOgogICAgICIiIioqREVQUkVDQVRFRCoqCiAKLSAgICBHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMvLnB5byBmaWxlLgorICAgIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5YyBmaWxlLgogCiAgICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCi0gICAgLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb24KLSAgICB3aWxsIGJlIC5weWMgdW5sZXNzIHN5cy5mbGFncy5vcHRpbWl6ZSBpcyBub24temVybywgdGhlbiBpdCB3aWxsIGJlIC5weW8uCisgICAgLnB5YyBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuCiAKICAgICBJZiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgdGhlbiBpdCBtdXN0IGJlIGEgYm9vbGVhbiBhbmQgaXMgdXNlZCBpbgogICAgIHBsYWNlIG9mIHN5cy5mbGFncy5vcHRpbWl6ZS4KQEAgLTgzLDE2ICs4MywxOCBAQAogICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGUpCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgIHJldHVybiB1dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIGRlYnVnX292ZXJyaWRlKQogCiAKIGRlZiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKToKICAgICAiIiIqKkRFUFJFQ0FURUQqKgogCi0gICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLi8ucHlvIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5IGZpbGUuCisgICAgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLiBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgogCi0gICAgVGhlIC5weWMvLnB5byBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KLSAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGggZG9lcworICAgIFRoZSAucHljIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0bworICAgIHRoZSAucHkgZmlsZSBjYWxjdWxhdGVkIHRvIGNvcnJlc3BvbmQgdG8gdGhlIC5weWMgZmlsZS4gIElmIHBhdGggZG9lcwogICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYKICAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KIApAQCAtMTY0LDExICsxNjYsMTAgQEAKIGRlZiBsb2FkX3NvdXJjZShuYW1lLCBwYXRobmFtZSwgZmlsZT1Ob25lKToKICAgICBsb2FkZXIgPSBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpCiAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgcGF0aG5hbWUsIGxvYWRlcj1sb2FkZXIpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIG1vZHVsZSA9IG1ldGhvZHMuZXhlYyhzeXMubW9kdWxlc1tuYW1lXSkKKyAgICAgICAgbW9kdWxlID0gX2V4ZWMoc3BlYywgc3lzLm1vZHVsZXNbbmFtZV0pCiAgICAgZWxzZToKLSAgICAgICAgbW9kdWxlID0gbWV0aG9kcy5sb2FkKCkKKyAgICAgICAgbW9kdWxlID0gX2xvYWQoc3BlYykKICAgICAjIFRvIGFsbG93IHJlbG9hZGluZyB0byBwb3RlbnRpYWxseSB3b3JrLCB1c2UgYSBub24taGFja2VkIGxvYWRlciB3aGljaAogICAgICMgd29uJ3QgcmVseSBvbiBhIG5vdy1jbG9zZWQgZmlsZSBvYmplY3QuCiAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKQEAgLTE4NSwxMSArMTg2LDEwIEBACiAgICAgIiIiKipERVBSRUNBVEVEKioiIiIKICAgICBsb2FkZXIgPSBfTG9hZENvbXBpbGVkQ29tcGF0aWJpbGl0eShuYW1lLCBwYXRobmFtZSwgZmlsZSkKICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRobmFtZSwgbG9hZGVyPWxvYWRlcikKLSAgICBtZXRob2RzID0gX1NwZWNNZXRob2RzKHNwZWMpCiAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgbW9kdWxlID0gbWV0aG9kcy5leGVjKHN5cy5tb2R1bGVzW25hbWVdKQorICAgICAgICBtb2R1bGUgPSBfZXhlYyhzcGVjLCBzeXMubW9kdWxlc1tuYW1lXSkKICAgICBlbHNlOgotICAgICAgICBtb2R1bGUgPSBtZXRob2RzLmxvYWQoKQorICAgICAgICBtb2R1bGUgPSBfbG9hZChzcGVjKQogICAgICMgVG8gYWxsb3cgcmVsb2FkaW5nIHRvIHBvdGVudGlhbGx5IHdvcmssIHVzZSBhIG5vbi1oYWNrZWQgbG9hZGVyIHdoaWNoCiAgICAgIyB3b24ndCByZWx5IG9uIGEgbm93LWNsb3NlZCBmaWxlIG9iamVjdC4KICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyKG5hbWUsIHBhdGhuYW1lKQpAQCAtMjEwLDExICsyMTAsMTAgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcGFja2FnZScuZm9ybWF0KHBhdGgpKQogICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9W10pCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIHJldHVybiBtZXRob2RzLmV4ZWMoc3lzLm1vZHVsZXNbbmFtZV0pCisgICAgICAgIHJldHVybiBfZXhlYyhzcGVjLCBzeXMubW9kdWxlc1tuYW1lXSkKICAgICBlbHNlOgotICAgICAgICByZXR1cm4gbWV0aG9kcy5sb2FkKCkKKyAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCiAKIAogZGVmIGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBkZXRhaWxzKToKQEAgLTMxMywzICszMTIsMzQgQEAKIAogICAgICIiIgogICAgIHJldHVybiBpbXBvcnRsaWIucmVsb2FkKG1vZHVsZSkKKworCitkZWYgaW5pdF9idWlsdGluKG5hbWUpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBMb2FkIGFuZCByZXR1cm4gYSBidWlsdC1pbiBtb2R1bGUgYnkgbmFtZSwgb3IgTm9uZSBpcyBzdWNoIG1vZHVsZSBkb2Vzbid0CisgICAgZXhpc3QKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBfYnVpbHRpbl9mcm9tX25hbWUobmFtZSkKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybiBOb25lCisKKworaWYgY3JlYXRlX2R5bmFtaWM6CisgICAgZGVmIGxvYWRfZHluYW1pYyhuYW1lLCBwYXRoLCBmaWxlPU5vbmUpOgorICAgICAgICAiIiIqKkRFUFJFQ0FURUQqKgorCisgICAgICAgIExvYWQgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihuYW1lLCBwYXRoKQorCisgICAgICAgICMgSXNzdWUgIzI0NzQ4OiBTa2lwIHRoZSBzeXMubW9kdWxlcyBjaGVjayBpbiBfbG9hZF9tb2R1bGVfc2hpbTsKKyAgICAgICAgIyBhbHdheXMgbG9hZCBuZXcgZXh0ZW5zaW9uCisgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIubWFjaGluZXJ5Lk1vZHVsZVNwZWMoCisgICAgICAgICAgICBuYW1lPW5hbWUsIGxvYWRlcj1sb2FkZXIsIG9yaWdpbj1wYXRoKQorICAgICAgICByZXR1cm4gX2xvYWQoc3BlYykKKworZWxzZToKKyAgICBsb2FkX2R5bmFtaWMgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQppbmRleCAxYmM5OTQ3Li5iNmE5ZjgyIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTMwLDkgKzMwLDI2IEBACiAgICAgICAgIHBhc3MKICAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXAnXSA9IF9ib290c3RyYXAKIAordHJ5OgorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCBhcyBfYm9vdHN0cmFwX2V4dGVybmFsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCisgICAgX2Jvb3RzdHJhcF9leHRlcm5hbC5fc2V0dXAoX2Jvb3RzdHJhcCkKKyAgICBfYm9vdHN0cmFwLl9ib290c3RyYXBfZXh0ZXJuYWwgPSBfYm9vdHN0cmFwX2V4dGVybmFsCitlbHNlOgorICAgIF9ib290c3RyYXBfZXh0ZXJuYWwuX19uYW1lX18gPSAnaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwnCisgICAgX2Jvb3RzdHJhcF9leHRlcm5hbC5fX3BhY2thZ2VfXyA9ICdpbXBvcnRsaWInCisgICAgdHJ5OgorICAgICAgICBfYm9vdHN0cmFwX2V4dGVybmFsLl9fZmlsZV9fID0gX19maWxlX18ucmVwbGFjZSgnX19pbml0X18ucHknLCAnX2Jvb3RzdHJhcF9leHRlcm5hbC5weScpCisgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAgICAgIyBfX2ZpbGVfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkLCBlLmcuIGlmIHRoaXMgY29kZSBnZXRzCisgICAgICAgICMgZnJvemVuIGJ5IGEgdG9vbCBsaWtlIGN4X0ZyZWV6ZS4KKyAgICAgICAgcGFzcworICAgIHN5cy5tb2R1bGVzWydpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCddID0gX2Jvb3RzdHJhcF9leHRlcm5hbAorCiAjIFRvIHNpbXBsaWZ5IGltcG9ydHMgaW4gdGVzdCBjb2RlCi1fd19sb25nID0gX2Jvb3RzdHJhcC5fd19sb25nCi1fcl9sb25nID0gX2Jvb3RzdHJhcC5fcl9sb25nCitfd19sb25nID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fd19sb25nCitfcl9sb25nID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fcl9sb25nCiAKICMgRnVsbHkgYm9vdHN0cmFwcGVkIGF0IHRoaXMgcG9pbnQsIGltcG9ydCB3aGF0ZXZlciB5b3UgbGlrZSwgY2lyY3VsYXIKICMgZGVwZW5kZW5jaWVzIGFuZCBzdGFydHVwIG92ZXJoZWFkIG1pbmltaXNhdGlvbiBwZXJtaXR0aW5nIDopCkBAIC03Myw3ICs5MCw3IEBACiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICBwYXNzCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fS5fX2xvYWRlcl9fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19sb2FkZXJfXyBpcyBub3Qgc2V0Jy5mb3JtYXQobmFtZSkpIGZyb20gTm9uZQogCiAgICAgc3BlYyA9IF9ib290c3RyYXAuX2ZpbmRfc3BlYyhuYW1lLCBwYXRoKQogICAgICMgV2Ugd29uJ3Qgd29ycnkgYWJvdXQgbWFsZm9ybWVkIHNwZWNzIChtaXNzaW5nIGF0dHJpYnV0ZXMpLgpAQCAtMTM4LDE1ICsxNTUsMTUgQEAKICAgICAgICAgICAgICAgICBwYXJlbnQgPSBzeXMubW9kdWxlc1twYXJlbnRfbmFtZV0KICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICBtc2cgPSAicGFyZW50IHshcn0gbm90IGluIHN5cy5tb2R1bGVzIgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50X25hbWUpLCBuYW1lPXBhcmVudF9uYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50X25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9cGFyZW50X25hbWUpIGZyb20gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwa2dwYXRoID0gcGFyZW50Ll9fcGF0aF9fCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwa2dwYXRoID0gTm9uZQogICAgICAgICB0YXJnZXQgPSBtb2R1bGUKICAgICAgICAgc3BlYyA9IG1vZHVsZS5fX3NwZWNfXyA9IF9ib290c3RyYXAuX2ZpbmRfc3BlYyhuYW1lLCBwa2dwYXRoLCB0YXJnZXQpCi0gICAgICAgIG1ldGhvZHMgPSBfYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKQotICAgICAgICBtZXRob2RzLmV4ZWMobW9kdWxlKQorICAgICAgICBfYm9vdHN0cmFwLl9leGVjKHNwZWMsIG1vZHVsZSkKICAgICAgICAgIyBUaGUgbW9kdWxlIG1heSBoYXZlIHJlcGxhY2VkIGl0c2VsZiBpbiBzeXMubW9kdWxlcyEKICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCiAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQppbmRleCA1YjkxYzA1Li42ZjYyYmIzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CkBAIC05LDcgKzksNyBAQAogIwogIyBJTVBPUlRBTlQ6IFdoZW5ldmVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgbW9kdWxlLCBiZSBzdXJlIHRvIHJ1bgogIyBhIHRvcC1sZXZlbCBtYWtlIGluIG9yZGVyIHRvIGdldCB0aGUgZnJvemVuIHZlcnNpb24gb2YgdGhlIG1vZHVsZQotIyB1cGRhdGUuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKKyMgdXBkYXRlZC4gTm90IGRvaW5nIHNvIHdpbGwgcmVzdWx0IGluIHRoZSBNYWtlZmlsZSB0byBmYWlsIGZvcgogIyBhbGwgb3RoZXJzIHdobyBkb24ndCBoYXZlIGEgLi9weXRob24gYXJvdW5kIHRvIGZyZWV6ZSB0aGUgbW9kdWxlCiAjIGluIHRoZSBlYXJseSBzdGFnZXMgb2YgY29tcGlsYXRpb24uCiAjCkBAIC0yMiwxMDEgKzIyLDcgQEAKIAogIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1fQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMgPSAnd2luJywgJ2N5Z3dpbicsICdkYXJ3aW4nCi0KLQotZGVmIF9tYWtlX3JlbGF4X2Nhc2UoKToKLSAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgotICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKLSAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCi0gICAgICAgICAgICByZXR1cm4gYidQWVRIT05DQVNFT0snIGluIF9vcy5lbnZpcm9uCi0gICAgZWxzZToKLSAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6Ci0gICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIF9yZWxheF9jYXNlCi0KLQotZGVmIF93X2xvbmcoeCk6Ci0gICAgIiIiQ29udmVydCBhIDMyLWJpdCBpbnRlZ2VyIHRvIGxpdHRsZS1lbmRpYW4uIiIiCi0gICAgcmV0dXJuIChpbnQoeCkgJiAweEZGRkZGRkZGKS50b19ieXRlcyg0LCAnbGl0dGxlJykKLQotCi1kZWYgX3JfbG9uZyhpbnRfYnl0ZXMpOgotICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuIiIiCi0gICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKGludF9ieXRlcywgJ2xpdHRsZScpCi0KLQotZGVmIF9wYXRoX2pvaW4oKnBhdGhfcGFydHMpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmpvaW4oKS4iIiIKLSAgICByZXR1cm4gcGF0aF9zZXAuam9pbihbcGFydC5yc3RyaXAocGF0aF9zZXBhcmF0b3JzKQotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFydCBpbiBwYXRoX3BhcnRzIGlmIHBhcnRdKQotCi0KLWRlZiBfcGF0aF9zcGxpdChwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdCgpLiIiIgotICAgIGlmIGxlbihwYXRoX3NlcGFyYXRvcnMpID09IDE6Ci0gICAgICAgIGZyb250LCBfLCB0YWlsID0gcGF0aC5ycGFydGl0aW9uKHBhdGhfc2VwKQotICAgICAgICByZXR1cm4gZnJvbnQsIHRhaWwKLSAgICBmb3IgeCBpbiByZXZlcnNlZChwYXRoKToKLSAgICAgICAgaWYgeCBpbiBwYXRoX3NlcGFyYXRvcnM6Ci0gICAgICAgICAgICBmcm9udCwgdGFpbCA9IHBhdGgucnNwbGl0KHgsIG1heHNwbGl0PTEpCi0gICAgICAgICAgICByZXR1cm4gZnJvbnQsIHRhaWwKLSAgICByZXR1cm4gJycsIHBhdGgKLQotCi1kZWYgX3BhdGhfc3RhdChwYXRoKToKLSAgICAiIiJTdGF0IHRoZSBwYXRoLgotCi0gICAgTWFkZSBhIHNlcGFyYXRlIGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIG92ZXJyaWRlIGluIGV4cGVyaW1lbnRzCi0gICAgKGUuZy4gY2FjaGUgc3RhdCByZXN1bHRzKS4KLQotICAgICIiIgotICAgIHJldHVybiBfb3Muc3RhdChwYXRoKQotCi0KLWRlZiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgbW9kZSk6Ci0gICAgIiIiVGVzdCB3aGV0aGVyIHRoZSBwYXRoIGlzIHRoZSBzcGVjaWZpZWQgbW9kZSB0eXBlLiIiIgotICAgIHRyeToKLSAgICAgICAgc3RhdF9pbmZvID0gX3BhdGhfc3RhdChwYXRoKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gKHN0YXRfaW5mby5zdF9tb2RlICYgMG8xNzAwMDApID09IG1vZGUKLQotCi1kZWYgX3BhdGhfaXNmaWxlKHBhdGgpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmlzZmlsZS4iIiIKLSAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMTAwMDAwKQotCi0KLWRlZiBfcGF0aF9pc2RpcihwYXRoKToKLSAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5pc2Rpci4iIiIKLSAgICBpZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCA9IF9vcy5nZXRjd2QoKQotICAgIHJldHVybiBfcGF0aF9pc19tb2RlX3R5cGUocGF0aCwgMG8wNDAwMDApCi0KLQotZGVmIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgbW9kZT0wbzY2Nik6Ci0gICAgIiIiQmVzdC1lZmZvcnQgZnVuY3Rpb24gdG8gd3JpdGUgZGF0YSB0byBhIHBhdGggYXRvbWljYWxseS4KLSAgICBCZSBwcmVwYXJlZCB0byBoYW5kbGUgYSBGaWxlRXhpc3RzRXJyb3IgaWYgY29uY3VycmVudCB3cml0aW5nIG9mIHRoZQotICAgIHRlbXBvcmFyeSBmaWxlIGlzIGF0dGVtcHRlZC4iIiIKLSAgICAjIGlkKCkgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHBzZXVkby1yYW5kb20gZmlsZW5hbWUuCi0gICAgcGF0aF90bXAgPSAne30ue30nLmZvcm1hdChwYXRoLCBpZChwYXRoKSkKLSAgICBmZCA9IF9vcy5vcGVuKHBhdGhfdG1wLAotICAgICAgICAgICAgICAgICAgX29zLk9fRVhDTCB8IF9vcy5PX0NSRUFUIHwgX29zLk9fV1JPTkxZLCBtb2RlICYgMG82NjYpCi0gICAgdHJ5OgotICAgICAgICAjIFdlIGZpcnN0IHdyaXRlIGRhdGEgdG8gYSB0ZW1wb3JhcnkgZmlsZSwgYW5kIHRoZW4gdXNlIG9zLnJlcGxhY2UoKSB0bwotICAgICAgICAjIHBlcmZvcm0gYW4gYXRvbWljIHJlbmFtZS4KLSAgICAgICAgd2l0aCBfaW8uRmlsZUlPKGZkLCAnd2InKSBhcyBmaWxlOgotICAgICAgICAgICAgZmlsZS53cml0ZShkYXRhKQotICAgICAgICBfb3MucmVwbGFjZShwYXRoX3RtcCwgcGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX29zLnVubGluayhwYXRoX3RtcCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHJhaXNlCi0KK19ib290c3RyYXBfZXh0ZXJuYWwgPSBOb25lCiAKIGRlZiBfd3JhcChuZXcsIG9sZCk6CiAgICAgIiIiU2ltcGxlIHN1YnN0aXR1dGUgZm9yIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlci4iIiIKQEAgLTEzMCwxMCArMzYsNiBAQAogICAgIHJldHVybiB0eXBlKHN5cykobmFtZSkKIAogCi1fY29kZV90eXBlID0gdHlwZShfd3JhcC5fX2NvZGVfXykKLQotCi0KIGNsYXNzIF9NYW5hZ2VSZWxvYWQ6CiAKICAgICAiIiJNYW5hZ2VzIHRoZSBwb3NzaWJsZSBjbGVhbi11cCBvZiBzeXMubW9kdWxlcyBmb3IgbG9hZF9tb2R1bGUoKS4iIiIKQEAgLTMwOSw3ICsyMTEsNiBAQAogICAgICAgICBsb2NrLnJlbGVhc2UoKQogCiAjIEZyYW1lIHN0cmlwcGluZyBtYWdpYyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCiBkZWYgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChmLCAqYXJncywgKiprd2RzKToKICAgICAiIiJyZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyBpbiBpbXBvcnQuYyB3aWxsIGFsd2F5cyByZW1vdmUgc2VxdWVuY2VzCiAgICAgb2YgaW1wb3J0bGliIGZyYW1lcyB0aGF0IGVuZCB3aXRoIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uCkBAIC0zMjEsMjAwICsyMjIsNiBAQAogICAgIHJldHVybiBmKCphcmdzLCAqKmt3ZHMpCiAKIAotIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIE1hZ2ljIHdvcmQgdG8gcmVqZWN0IC5weWMgZmlsZXMgZ2VuZXJhdGVkIGJ5IG90aGVyIFB5dGhvbiB2ZXJzaW9ucy4KLSMgSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KLSMKLSMgVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQotIyBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKLSMgQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KLSMKLSMgVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQotIyAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0jIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgotIwotIyBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgotIyBUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5Ci0jIDEwLgotIwotIyBTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCi0jIG51bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKLSMgdG8gcmVwcmVzZW50IHRoZSBtYWdpYyBudW1iZXIgaW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMuICBXaGVuIHlvdSBjaGFuZ2UKLSMgdGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCi0jIGNhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKLSMgaXQgY2FuIHJlYWxseSBiZSBhbnl0aGluZywgYXMgbG9uZyBhcyBpdCdzIGRpZmZlcmVudCB0aGFuIGFueXRoaW5nIGVsc2UKLSMgdGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCi0jIHdpdGggUHl0aG9uIDMuMmEwLgotIwotIyBLbm93biB2YWx1ZXM6Ci0jICBQeXRob24gMS41OiAgIDIwMTIxCi0jICBQeXRob24gMS41LjE6IDIwMTIxCi0jICAgICBQeXRob24gMS41LjI6IDIwMTIxCi0jICAgICBQeXRob24gMS42OiAgIDUwNDI4Ci0jICAgICBQeXRob24gMi4wOiAgIDUwODIzCi0jICAgICBQeXRob24gMi4wLjE6IDUwODIzCi0jICAgICBQeXRob24gMi4xOiAgIDYwMjAyCi0jICAgICBQeXRob24gMi4xLjE6IDYwMjAyCi0jICAgICBQeXRob24gMi4xLjI6IDYwMjAyCi0jICAgICBQeXRob24gMi4yOiAgIDYwNzE3Ci0jICAgICBQeXRob24gMi4zYTA6IDYyMDExCi0jICAgICBQeXRob24gMi4zYTA6IDYyMDIxCi0jICAgICBQeXRob24gMi4zYTA6IDYyMDExICghKQotIyAgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQotIyAgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQotIyAgICAgUHl0aG9uIDIuNGIxOiA2MjA2MQotIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQotIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKLSMgICAgIFB5dGhvbiAyLjVhMDogNjIwOTEgKHdpdGgpCi0jICAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCi0jICAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKLSMgICAgIFB5dGhvbiAyLjViMzogNjIxMTEgKGZpeCB3cm9uZyBjb2RlOiB4ICs9IHlpZWxkKQotIyAgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKLSMgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQotIyAgICAgUHl0aG9uIDIuNWMyOiA2MjEzMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4gaW4gbGlzdGNvbXAvZ2VuZXhwKQotIyAgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKLSMgICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCi0jICAgICBQeXRob24gMi43YTA6IDYyMTcxIChvcHRpbWl6ZSBsaXN0IGNvbXByZWhlbnNpb25zL2NoYW5nZSBMSVNUX0FQUEVORCkKLSMgICAgIFB5dGhvbiAyLjdhMDogNjIxODEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgotIyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQotIyAgICAgUHl0aG9uIDIuN2EwICA2MjE5MSAoaW50cm9kdWNlIFNFVFVQX1dJVEgpCi0jICAgICBQeXRob24gMi43YTAgIDYyMjAxIChpbnRyb2R1Y2UgQlVJTERfU0VUKQotIyAgICAgUHl0aG9uIDIuN2EwICA2MjIxMSAoaW50cm9kdWNlIE1BUF9BREQgYW5kIFNFVF9BREQpCi0jICAgICBQeXRob24gMzAwMDogICAzMDAwCi0jICAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCi0jICAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCi0jICAgICAgICAgICAgICAgICAgICAzMDMwIChhZGRlZCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycykKLSMgICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKLSMgICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKLSMgICAgICAgICAgICAgICAgICAgIDMwNjAgKFBFUCAzMTE1IG1ldGFjbGFzcyBzeW50YXgpCi0jICAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCi0jICAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQotIyAgICAgICAgICAgICAgICAgICAgMzA4MSAoUEVQIDMxMzcgbWFrZSBfX2ZpbGVfXyBhbmQgX19uYW1lX18gdW5pY29kZSkKLSMgICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCi0jICAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCi0jICAgICAgICAgICAgICAgICAgICAzMTAzIChfX2ZpbGVfXyBwb2ludHMgdG8gc291cmNlIGZpbGUpCi0jICAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgotIyAgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCi0jICAgICBQeXRob24gMy4xYTA6IDMxNDEgKG9wdGltaXplIGxpc3QsIHNldCBhbmQgZGljdCBjb21wcmVoZW5zaW9uczoKLSMgICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKLSMgICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6Ci0jICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKLSMgICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCi0jICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotIyAgICAgUHl0aG9uIDMuMmExOiAzMTcwIChhZGQgRFVQX1RPUF9UV08sIHJlbW92ZSBEVVBfVE9QWCBhbmQgUk9UX0ZPVVIpCi0jICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotIyAgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQotIyAgICAgUHl0aG9uIDMuM2EwICAzMTkwIF9fY2xhc3NfXyBzdXBlciBjbG9zdXJlIGNoYW5nZWQKLSMgICAgIFB5dGhvbiAzLjNhMCAgMzIwMCAoX19xdWFsbmFtZV9fIGFkZGVkKQotIyAgICAgICAgICAgICAgICAgICAgICAzMjEwIChhZGRlZCBzaXplIG1vZHVsbyAyKiozMiB0byB0aGUgcHljIGhlYWRlcikKLSMgICAgIFB5dGhvbiAzLjNhMSAgMzIyMCAoY2hhbmdlZCBQRVAgMzgwIGltcGxlbWVudGF0aW9uKQotIyAgICAgUHl0aG9uIDMuM2E0ICAzMjMwIChyZXZlcnQgY2hhbmdlcyB0byBpbXBsaWNpdCBfX2NsYXNzX18gY2xvc3VyZSkKLSMgICAgIFB5dGhvbiAzLjRhMSAgMzI1MCAoZXZhbHVhdGUgcG9zaXRpb25hbCBkZWZhdWx0IGFyZ3VtZW50cyBiZWZvcmUKLSMgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLW9ubHkgZGVmYXVsdHMpCi0jICAgICBQeXRob24gMy40YTEgIDMyNjAgKGFkZCBMT0FEX0NMQVNTREVSRUY7IGFsbG93IGxvY2FscyBvZiBjbGFzcyB0byBvdmVycmlkZQotIyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUgdmFycykKLSMgICAgIFB5dGhvbiAzLjRhMSAgMzI3MCAodmFyaW91cyB0d2Vha3MgdG8gdGhlIF9fY2xhc3NfXyBjbG9zdXJlKQotIyAgICAgUHl0aG9uIDMuNGExICAzMjgwIChyZW1vdmUgaW1wbGljaXQgY2xhc3MgYXJndW1lbnQpCi0jICAgICBQeXRob24gMy40YTQgIDMyOTAgKGNoYW5nZXMgdG8gX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQotIyAgICAgUHl0aG9uIDMuNGE0ICAzMzAwIChtb3JlIGNoYW5nZXMgdG8gX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQotIyAgICAgUHl0aG9uIDMuNHJjMiAzMzEwIChhbHRlciBfX3F1YWxuYW1lX18gY29tcHV0YXRpb24pCi0jCi0jIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KLSMgbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKLSMgZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBuZXcgb3Bjb2RlcykuCi0KLU1BR0lDX05VTUJFUiA9ICgzMzEwKS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCi1fUkFXX01BR0lDX05VTUJFUiA9IGludC5mcm9tX2J5dGVzKE1BR0lDX05VTUJFUiwgJ2xpdHRsZScpICAjIEZvciBpbXBvcnQuYwotCi1fUFlDQUNIRSA9ICdfX3B5Y2FjaGVfXycKLQotU09VUkNFX1NVRkZJWEVTID0gWycucHknXSAgIyBfc2V0dXAoKSBhZGRzIC5weXcgYXMgbmVlZGVkLgotCi1ERUJVR19CWVRFQ09ERV9TVUZGSVhFUyA9IFsnLnB5YyddCi1PUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMgPSBbJy5weW8nXQotCi1kZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSk6Ci0gICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHljLy5weW8gZmlsZS4KLQotICAgIFRoZSAucHkgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZQotICAgIC5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uCi0gICAgd2lsbCBiZSAucHljIHVubGVzcyBzeXMuZmxhZ3Mub3B0aW1pemUgaXMgbm9uLXplcm8sIHRoZW4gaXQgd2lsbCBiZSAucHlvLgotCi0gICAgSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIHRoZW4gaXQgbXVzdCBiZSBhIGJvb2xlYW4gYW5kIGlzIHVzZWQgaW4KLSAgICBwbGFjZSBvZiBzeXMuZmxhZ3Mub3B0aW1pemUuCi0KLSAgICBJZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KLQotICAgICIiIgotICAgIGRlYnVnID0gbm90IHN5cy5mbGFncy5vcHRpbWl6ZSBpZiBkZWJ1Z19vdmVycmlkZSBpcyBOb25lIGVsc2UgZGVidWdfb3ZlcnJpZGUKLSAgICBpZiBkZWJ1ZzoKLSAgICAgICAgc3VmZml4ZXMgPSBERUJVR19CWVRFQ09ERV9TVUZGSVhFUwotICAgIGVsc2U6Ci0gICAgICAgIHN1ZmZpeGVzID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTCi0gICAgaGVhZCwgdGFpbCA9IF9wYXRoX3NwbGl0KHBhdGgpCi0gICAgYmFzZSwgc2VwLCByZXN0ID0gdGFpbC5ycGFydGl0aW9uKCcuJykKLSAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCi0gICAgaWYgdGFnIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCi0gICAgZmlsZW5hbWUgPSAnJy5qb2luKFsoYmFzZSBpZiBiYXNlIGVsc2UgcmVzdCksIHNlcCwgdGFnLCBzdWZmaXhlc1swXV0pCi0gICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgX1BZQ0FDSEUsIGZpbGVuYW1lKQotCi0KLWRlZiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKToKLSAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weWMuLy5weW8gZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyAucHkgZmlsZS4KLQotICAgIFRoZSAucHljLy5weW8gZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCi0gICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoIGRvZXMKLSAgICBub3QgY29uZm9ybSB0byBQRVAgMzE0NyBmb3JtYXQsIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQuIElmCi0gICAgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lIHRoZW4gTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuCi0KLSAgICAiIiIKLSAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCi0gICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCi0gICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCi0gICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30gbm90IGJvdHRvbS1sZXZlbCBkaXJlY3RvcnkgaW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQoX1BZQ0FDSEUsIHBhdGgpKQotICAgIGlmIHB5Y2FjaGVfZmlsZW5hbWUuY291bnQoJy4nKSAhPSAyOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdleHBlY3RlZCBvbmx5IDIgZG90cyBpbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChweWNhY2hlX2ZpbGVuYW1lKSkKLSAgICBiYXNlX2ZpbGVuYW1lID0gcHljYWNoZV9maWxlbmFtZS5wYXJ0aXRpb24oJy4nKVswXQotICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIGJhc2VfZmlsZW5hbWUgKyBTT1VSQ0VfU1VGRklYRVNbMF0pCi0KLQotZGVmIF9nZXRfc291cmNlZmlsZShieXRlY29kZV9wYXRoKToKLSAgICAiIiJDb252ZXJ0IGEgYnl0ZWNvZGUgZmlsZSBwYXRoIHRvIGEgc291cmNlIHBhdGggKGlmIHBvc3NpYmxlKS4KLQotICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RzIHB1cmVseSBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZm9yCi0gICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoRmlsZW5hbWVzKCkgaW4gdGhlIEMgQVBJLgotCi0gICAgIiIiCi0gICAgaWYgbGVuKGJ5dGVjb2RlX3BhdGgpID09IDA6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmVzdCwgXywgZXh0ZW5zaW9uID0gYnl0ZWNvZGVfcGF0aC5ycGFydGl0aW9uKCcuJykKLSAgICBpZiBub3QgcmVzdCBvciBleHRlbnNpb24ubG93ZXIoKVstMzotMV0gIT0gJ3B5JzoKLSAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKLSAgICB0cnk6Ci0gICAgICAgIHNvdXJjZV9wYXRoID0gc291cmNlX2Zyb21fY2FjaGUoYnl0ZWNvZGVfcGF0aCkKLSAgICBleGNlcHQgKE5vdEltcGxlbWVudGVkRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICBzb3VyY2VfcGF0aCA9IGJ5dGVjb2RlX3BhdGhbOi0xXQotICAgIHJldHVybiBzb3VyY2VfcGF0aCBpZiBfcGF0aF9pc2ZpbGUoc291cmNlX3BhdGgpIGVsc2UgYnl0ZWNvZGVfcGF0aAotCi0KLWRlZiBfY2FsY19tb2RlKHBhdGgpOgotICAgICIiIkNhbGN1bGF0ZSB0aGUgbW9kZSBwZXJtaXNzaW9ucyBmb3IgYSBieXRlY29kZSBmaWxlLiIiIgotICAgIHRyeToKLSAgICAgICAgbW9kZSA9IF9wYXRoX3N0YXQocGF0aCkuc3RfbW9kZQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBtb2RlID0gMG82NjYKLSAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCi0gICAgIyBsYXRlciBldmVuIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MgKCM2MDc0KQotICAgIG1vZGUgfD0gMG8yMDAKLSAgICByZXR1cm4gbW9kZQotCi0KIGRlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6CiAgICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgogICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKQEAgLTUyMywyNCArMjMwLDYgQEAKICAgICAgICAgcHJpbnQobWVzc2FnZS5mb3JtYXQoKmFyZ3MpLCBmaWxlPXN5cy5zdGRlcnIpCiAKIAotZGVmIF9jaGVja19uYW1lKG1ldGhvZCk6Ci0gICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgYmVpbmcgcmVxdWVzdGVkIG1hdGNoZXMgdGhlIG9uZSB0aGUKLSAgICBsb2FkZXIgY2FuIGhhbmRsZS4KLQotICAgIFRoZSBmaXJzdCBhcmd1bWVudCAoc2VsZikgbXVzdCBkZWZpbmUgX25hbWUgd2hpY2ggdGhlIHNlY29uZCBhcmd1bWVudCBpcwotICAgIGNvbXBhcmVkIGFnYWluc3QuIElmIHRoZSBjb21wYXJpc29uIGZhaWxzIHRoZW4gSW1wb3J0RXJyb3IgaXMgcmFpc2VkLgotCi0gICAgIiIiCi0gICAgZGVmIF9jaGVja19uYW1lX3dyYXBwZXIoc2VsZiwgbmFtZT1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lCi0gICAgICAgIGVsaWYgc2VsZi5uYW1lICE9IG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMnICUgbmFtZSwgbmFtZT1uYW1lKQotICAgICAgICByZXR1cm4gbWV0aG9kKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3YXJncykKLSAgICBfd3JhcChfY2hlY2tfbmFtZV93cmFwcGVyLCBtZXRob2QpCi0gICAgcmV0dXJuIF9jaGVja19uYW1lX3dyYXBwZXIKLQotCiBkZWYgX3JlcXVpcmVzX2J1aWx0aW4oZnhuKToKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoZSBuYW1lZCBtb2R1bGUgaXMgYnVpbHQtaW4uIiIiCiAgICAgZGVmIF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUpOgpAQCAtNTYzLDIzICsyNTIsNyBAQAogICAgIHJldHVybiBfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIKIAogCi1kZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgotICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSBieSBkZWxlZ2F0aW5nIHRvCi0gICAgc2VsZi5maW5kX2xvYWRlcigpLgotCi0gICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBmaW5kZXIuZmluZF9zcGVjKCkuCi0KLSAgICAiIiIKLSAgICAjIENhbGwgZmluZF9sb2FkZXIoKS4gSWYgaXQgcmV0dXJucyBhIHN0cmluZyAoaW5kaWNhdGluZyB0aGlzCi0gICAgIyBpcyBhIG5hbWVzcGFjZSBwYWNrYWdlIHBvcnRpb24pLCBnZW5lcmF0ZSBhIHdhcm5pbmcgYW5kCi0gICAgIyByZXR1cm4gTm9uZS4KLSAgICBsb2FkZXIsIHBvcnRpb25zID0gc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSkKLSAgICBpZiBsb2FkZXIgaXMgTm9uZSBhbmQgbGVuKHBvcnRpb25zKToKLSAgICAgICAgbXNnID0gJ05vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fJwotICAgICAgICBfd2FybmluZ3Mud2Fybihtc2cuZm9ybWF0KHBvcnRpb25zWzBdKSwgSW1wb3J0V2FybmluZykKLSAgICByZXR1cm4gbG9hZGVyCi0KLQorIyBUeXBpY2FsbHkgdXNlZCBieSBsb2FkZXIgY2xhc3NlcyBhcyBhIG1ldGhvZCByZXBsYWNlbWVudC4KIGRlZiBfbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSk6CiAgICAgIiIiTG9hZCB0aGUgc3BlY2lmaWVkIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzIGFuZCByZXR1cm4gaXQuCiAKQEAgLTU4NywxMDMgKzI2MCwxMiBAQAogCiAgICAgIiIiCiAgICAgc3BlYyA9IHNwZWNfZnJvbV9sb2FkZXIoZnVsbG5hbWUsIHNlbGYpCi0gICAgbWV0aG9kcyA9IF9TcGVjTWV0aG9kcyhzcGVjKQogICAgIGlmIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tmdWxsbmFtZV0KLSAgICAgICAgbWV0aG9kcy5leGVjKG1vZHVsZSkKKyAgICAgICAgX2V4ZWMoc3BlYywgbW9kdWxlKQogICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbZnVsbG5hbWVdCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuIG1ldGhvZHMubG9hZCgpCi0KLQotZGVmIF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwgc291cmNlX3N0YXRzPU5vbmUsIG5hbWU9Tm9uZSwgcGF0aD1Ob25lKToKLSAgICAiIiJWYWxpZGF0ZSB0aGUgaGVhZGVyIG9mIHRoZSBwYXNzZWQtaW4gYnl0ZWNvZGUgYWdhaW5zdCBzb3VyY2Vfc3RhdHMgKGlmCi0gICAgZ2l2ZW4pIGFuZCByZXR1cm5pbmcgdGhlIGJ5dGVjb2RlIHRoYXQgY2FuIGJlIGNvbXBpbGVkIGJ5IGNvbXBpbGUoKS4KLQotICAgIEFsbCBvdGhlciBhcmd1bWVudHMgYXJlIHVzZWQgdG8gZW5oYW5jZSBlcnJvciByZXBvcnRpbmcuCi0KLSAgICBJbXBvcnRFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgbWFnaWMgbnVtYmVyIGlzIGluY29ycmVjdCBvciB0aGUgYnl0ZWNvZGUgaXMKLSAgICBmb3VuZCB0byBiZSBzdGFsZS4gRU9GRXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlIGRhdGEgaXMgZm91bmQgdG8gYmUKLSAgICB0cnVuY2F0ZWQuCi0KLSAgICAiIiIKLSAgICBleGNfZGV0YWlscyA9IHt9Ci0gICAgaWYgbmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgZXhjX2RldGFpbHNbJ25hbWUnXSA9IG5hbWUKLSAgICBlbHNlOgotICAgICAgICAjIFRvIHByZXZlbnQgaGF2aW5nIHRvIG1ha2UgYWxsIG1lc3NhZ2VzIGhhdmUgYSBjb25kaXRpb25hbCBuYW1lLgotICAgICAgICBuYW1lID0gJzxieXRlY29kZT4nCi0gICAgaWYgcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgZXhjX2RldGFpbHNbJ3BhdGgnXSA9IHBhdGgKLSAgICBtYWdpYyA9IGRhdGFbOjRdCi0gICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQotICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQotICAgIGlmIG1hZ2ljICE9IE1BR0lDX05VTUJFUjoKLSAgICAgICAgbWVzc2FnZSA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBtYWdpYykKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQotICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6Ci0gICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKLSAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKLSAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCi0gICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc291cmNlX3N0YXRzWydtdGltZSddKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfc2l6ZSkgIT0gc291cmNlX3NpemU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipleGNfZGV0YWlscykKLSAgICByZXR1cm4gZGF0YVsxMjpdCi0KLQotZGVmIF9jb21waWxlX2J5dGVjb2RlKGRhdGEsIG5hbWU9Tm9uZSwgYnl0ZWNvZGVfcGF0aD1Ob25lLCBzb3VyY2VfcGF0aD1Ob25lKToKLSAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKLSAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQotICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6Ci0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCi0gICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGNvZGUsIHNvdXJjZV9wYXRoKQotICAgICAgICByZXR1cm4gY29kZQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdOb24tY29kZSBvYmplY3QgaW4geyFyfScuZm9ybWF0KGJ5dGVjb2RlX3BhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPW5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKLQotZGVmIF9jb2RlX3RvX2J5dGVjb2RlKGNvZGUsIG10aW1lPTAsIHNvdXJjZV9zaXplPTApOgotICAgICIiIkNvbXBpbGUgYSBjb2RlIG9iamVjdCBpbnRvIGJ5dGVjb2RlIGZvciB3cml0aW5nIG91dCB0byBhIGJ5dGUtY29tcGlsZWQKLSAgICBmaWxlLiIiIgotICAgIGRhdGEgPSBieXRlYXJyYXkoTUFHSUNfTlVNQkVSKQotICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcobXRpbWUpKQotICAgIGRhdGEuZXh0ZW5kKF93X2xvbmcoc291cmNlX3NpemUpKQotICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZSkpCi0gICAgcmV0dXJuIGRhdGEKLQotCi1kZWYgZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpOgotICAgICIiIkRlY29kZSBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiB0aGUgc3RyaW5nLgotCi0gICAgVW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydCBpcyB1c2VkIGluIHRoZSBkZWNvZGluZy4KLSAgICAiIiIKLSAgICBpbXBvcnQgdG9rZW5pemUgICMgVG8gYXZvaWQgYm9vdHN0cmFwIGlzc3Vlcy4KLSAgICBzb3VyY2VfYnl0ZXNfcmVhZGxpbmUgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCi0gICAgZW5jb2RpbmcgPSB0b2tlbml6ZS5kZXRlY3RfZW5jb2Rpbmcoc291cmNlX2J5dGVzX3JlYWRsaW5lKQotICAgIG5ld2xpbmVfZGVjb2RlciA9IF9pby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpCi0gICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCi0KKyAgICAgICAgcmV0dXJuIF9sb2FkKHNwZWMpCiAKICMgTW9kdWxlIHNwZWNpZmljYXRpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApAQCAtNzA0LDcgKzI4Niw3IEBACiAgICAgICAgIHBhc3MKICAgICBlbHNlOgogICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIF9TcGVjTWV0aG9kcyhzcGVjKS5tb2R1bGVfcmVwcigpCisgICAgICAgICAgICByZXR1cm4gX21vZHVsZV9yZXByX2Zyb21fc3BlYyhzcGVjKQogCiAgICAgIyBXZSBjb3VsZCB1c2UgbW9kdWxlLl9fY2xhc3NfXy5fX25hbWVfXyBpbnN0ZWFkIG9mICdtb2R1bGUnIGluIHRoZQogICAgICMgdmFyaW91cyByZXByIHBlcm11dGF0aW9ucy4KQEAgLTgyNSwxNCArNDA3LDkgQEAKICAgICBkZWYgY2FjaGVkKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9jYWNoZWQgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHNlbGYub3JpZ2luIGlzIG5vdCBOb25lIGFuZCBzZWxmLl9zZXRfZmlsZWF0dHI6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLm9yaWdpbgotICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKHR1cGxlKFNPVVJDRV9TVUZGSVhFUykpOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWQgPSBjYWNoZV9mcm9tX3NvdXJjZShmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShCWVRFQ09ERV9TVUZGSVhFUykpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWQgPSBmaWxlbmFtZQorICAgICAgICAgICAgICAgIGlmIF9ib290c3RyYXBfZXh0ZXJuYWwgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlZCA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX2dldF9jYWNoZWQoc2VsZi5vcmlnaW4pCiAgICAgICAgIHJldHVybiBzZWxmLl9jYWNoZWQKIAogICAgIEBjYWNoZWQuc2V0dGVyCkBAIC04NTksNiArNDM2LDEwIEBACiBkZWYgc3BlY19mcm9tX2xvYWRlcihuYW1lLCBsb2FkZXIsICosIG9yaWdpbj1Ob25lLCBpc19wYWNrYWdlPU5vbmUpOgogICAgICIiIlJldHVybiBhIG1vZHVsZSBzcGVjIGJhc2VkIG9uIHZhcmlvdXMgbG9hZGVyIG1ldGhvZHMuIiIiCiAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfZmlsZW5hbWUnKToKKyAgICAgICAgaWYgX2Jvb3RzdHJhcF9leHRlcm5hbCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbiA9IF9ib290c3RyYXBfZXh0ZXJuYWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24KKwogICAgICAgICBpZiBpc19wYWNrYWdlIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obmFtZSwgbG9hZGVyPWxvYWRlcikKICAgICAgICAgc2VhcmNoID0gW10gaWYgaXNfcGFja2FnZSBlbHNlIE5vbmUKQEAgLTg4MSw3MCArNDYyLDYgQEAKIF9QT1BVTEFURSA9IG9iamVjdCgpCiAKIAotZGVmIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIGxvY2F0aW9uPU5vbmUsICosIGxvYWRlcj1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPV9QT1BVTEFURSk6Ci0gICAgIiIiUmV0dXJuIGEgbW9kdWxlIHNwZWMgYmFzZWQgb24gYSBmaWxlIGxvY2F0aW9uLgotCi0gICAgVG8gaW5kaWNhdGUgdGhhdCB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSwgc2V0Ci0gICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgdG8gYSBsaXN0IG9mIGRpcmVjdG9yeSBwYXRocy4gIEFuCi0gICAgZW1wdHkgbGlzdCBpcyBzdWZmaWNpZW50LCB0aG91Z2ggaXRzIG5vdCBvdGhlcndpc2UgdXNlZnVsIHRvIHRoZQotICAgIGltcG9ydCBzeXN0ZW0uCi0KLSAgICBUaGUgbG9hZGVyIG11c3QgdGFrZSBhIHNwZWMgYXMgaXRzIG9ubHkgX19pbml0X18oKSBhcmcuCi0KLSAgICAiIiIKLSAgICBpZiBsb2NhdGlvbiBpcyBOb25lOgotICAgICAgICAjIFRoZSBjYWxsZXIgbWF5IHNpbXBseSB3YW50IGEgcGFydGlhbGx5IHBvcHVsYXRlZCBsb2NhdGlvbi0KLSAgICAgICAgIyBvcmllbnRlZCBzcGVjLiAgU28gd2Ugc2V0IHRoZSBsb2NhdGlvbiB0byBhIGJvZ3VzIHZhbHVlIGFuZAotICAgICAgICAjIGZpbGwgaW4gYXMgbXVjaCBhcyB3ZSBjYW4uCi0gICAgICAgIGxvY2F0aW9uID0gJzx1bmtub3duPicKLSAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfZmlsZW5hbWUnKToKLSAgICAgICAgICAgICMgRXhlY3V0aW9uTG9hZGVyCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgIyBJZiB0aGUgbG9jYXRpb24gaXMgb24gdGhlIGZpbGVzeXN0ZW0sIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LAotICAgICMgd2UgY291bGQgcmV0dXJuIE5vbmUgaGVyZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBub3QKLSAgICAjIHZhbGlkLiAgSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IG9mIHRlc3Rpbmcgc2luY2UgYW4KLSAgICAjIGluZGlyZWN0IGxvY2F0aW9uIChlLmcuIGEgemlwIGZpbGUgb3IgVVJMKSB3aWxsIGxvb2sgbGlrZSBhCi0gICAgIyBub24tZXhpc3RlbnQgZmlsZSByZWxhdGl2ZSB0byB0aGUgZmlsZXN5c3RlbS4KLQotICAgIHNwZWMgPSBNb2R1bGVTcGVjKG5hbWUsIGxvYWRlciwgb3JpZ2luPWxvY2F0aW9uKQotICAgIHNwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKLQotICAgICMgUGljayBhIGxvYWRlciBpZiBvbmUgd2Fzbid0IHByb3ZpZGVkLgotICAgIGlmIGxvYWRlciBpcyBOb25lOgotICAgICAgICBmb3IgbG9hZGVyX2NsYXNzLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKLSAgICAgICAgICAgIGlmIGxvY2F0aW9uLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKG5hbWUsIGxvY2F0aW9uKQotICAgICAgICAgICAgICAgIHNwZWMubG9hZGVyID0gbG9hZGVyCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAjIFNldCBzdWJtb2R1bGVfc2VhcmNoX3BhdGhzIGFwcHJvcHJpYXRlbHkuCi0gICAgaWYgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgX1BPUFVMQVRFOgotICAgICAgICAjIENoZWNrIHRoZSBsb2FkZXIuCi0gICAgICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnaXNfcGFja2FnZScpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlzX3BhY2thZ2UgPSBsb2FkZXIuaXNfcGFja2FnZShuYW1lKQotICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgaXNfcGFja2FnZToKLSAgICAgICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtdCi0gICAgZWxzZToKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9PSBbXToKLSAgICAgICAgaWYgbG9jYXRpb246Ci0gICAgICAgICAgICBkaXJuYW1lID0gX3BhdGhfc3BsaXQobG9jYXRpb24pWzBdCi0gICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zLmFwcGVuZChkaXJuYW1lKQotCi0gICAgcmV0dXJuIHNwZWMKLQotCiBkZWYgX3NwZWNfZnJvbV9tb2R1bGUobW9kdWxlLCBsb2FkZXI9Tm9uZSwgb3JpZ2luPU5vbmUpOgogICAgICMgVGhpcyBmdW5jdGlvbiBpcyBtZWFudCBmb3IgdXNlIGluIF9zZXR1cCgpLgogICAgIHRyeToKQEAgLTk5MCwyNTcgKzUwNywxOTAgQEAKICAgICByZXR1cm4gc3BlYwogCiAKLWNsYXNzIF9TcGVjTWV0aG9kczoKK2RlZiBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlLCAqLCBvdmVycmlkZT1GYWxzZSk6CisgICAgIyBUaGUgcGFzc2VkLWluIG1vZHVsZSBtYXkgYmUgbm90IHN1cHBvcnQgYXR0cmlidXRlIGFzc2lnbm1lbnQsCisgICAgIyBpbiB3aGljaCBjYXNlIHdlIHNpbXBseSBkb24ndCBzZXQgdGhlIGF0dHJpYnV0ZXMuCisgICAgIyBfX25hbWVfXworICAgIGlmIChvdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fbmFtZV9fJywgTm9uZSkgaXMgTm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX25hbWVfXyA9IHNwZWMubmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBfX2xvYWRlcl9fCisgICAgaWYgb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKKyAgICAgICAgaWYgbG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICAjIEEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoYWNrLgorICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBfYm9vdHN0cmFwX2V4dGVybmFsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgICAgICAgICBfTmFtZXNwYWNlTG9hZGVyID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fTmFtZXNwYWNlTG9hZGVyCiAKLSAgICAiIiJDb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBzcGVjIG9iamVjdHMgdG8gcHJvdmlkZSBzcGVjLXNwZWNpZmljCi0gICAgbWV0aG9kcy4iIiIKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBfTmFtZXNwYWNlTG9hZGVyLl9fbmV3X18oX05hbWVzcGFjZUxvYWRlcikKKyAgICAgICAgICAgICAgICBsb2FkZXIuX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAjIF9fcGFja2FnZV9fCisgICAgaWYgb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNwZWMucGFyZW50CisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAjIF9fc3BlY19fCisgICAgdHJ5OgorICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzcGVjCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgIyBfX3BhdGhfXworICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19wYXRoX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgIyBfX2ZpbGVfXy9fX2NhY2hlZF9fCisgICAgaWYgc3BlYy5oYXNfbG9jYXRpb246CisgICAgICAgIGlmIG92ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19maWxlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IHNwZWMub3JpZ2luCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogCi0gICAgIyBUaGUgdmFyaW91cyBzcGVjX2Zyb21fKiBmdW5jdGlvbnMgY291bGQgYmUgbWFkZSBmYWN0b3J5IG1ldGhvZHMgaGVyZS4KKyAgICAgICAgaWYgb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNwZWMuY2FjaGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fY2FjaGVkX18gPSBzcGVjLmNhY2hlZAorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgIHJldHVybiBtb2R1bGUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjKToKLSAgICAgICAgc2VsZi5zcGVjID0gc3BlYwogCi0gICAgZGVmIG1vZHVsZV9yZXByKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHJlcHIgdG8gdXNlIGZvciB0aGUgbW9kdWxlLiIiIgotICAgICAgICAjIFdlIG1vc3RseSByZXBsaWNhdGUgX21vZHVsZV9yZXByKCkgdXNpbmcgdGhlIHNwZWMgYXR0cmlidXRlcy4KLSAgICAgICAgc3BlYyA9IHNlbGYuc3BlYwotICAgICAgICBuYW1lID0gJz8nIGlmIHNwZWMubmFtZSBpcyBOb25lIGVsc2Ugc3BlYy5uYW1lCi0gICAgICAgIGlmIHNwZWMub3JpZ2luIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBzcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9PicuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAnPG1vZHVsZSB7IXJ9ICh7IXJ9KT4nLmZvcm1hdChuYW1lLCBzcGVjLmxvYWRlcikKK2RlZiBtb2R1bGVfZnJvbV9zcGVjKHNwZWMpOgorICAgICIiIkNyZWF0ZSBhIG1vZHVsZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgc3BlYy4iIiIKKyAgICAjIFR5cGljYWxseSBsb2FkZXJzIHdpbGwgbm90IGltcGxlbWVudCBjcmVhdGVfbW9kdWxlKCkuCisgICAgbW9kdWxlID0gTm9uZQorICAgIGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdjcmVhdGVfbW9kdWxlJyk6CisgICAgICAgICMgSWYgY3JlYXRlX21vZHVsZSgpIHJldHVybnMgYE5vbmVgIHRoZW4gaXQgbWVhbnMgZGVmYXVsdAorICAgICAgICAjIG1vZHVsZSBjcmVhdGlvbiBzaG91bGQgYmUgdXNlZC4KKyAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgIGVsaWYgaGFzYXR0cihzcGVjLmxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6CisgICAgICAgIF93YXJuaW5ncy53YXJuKCdzdGFydGluZyBpbiBQeXRob24gMy42LCBsb2FkZXJzIGRlZmluaW5nIGV4ZWNfbW9kdWxlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknLAorICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgbW9kdWxlID0gX25ld19tb2R1bGUoc3BlYy5uYW1lKQorICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUpCisgICAgcmV0dXJuIG1vZHVsZQorCisKK2RlZiBfbW9kdWxlX3JlcHJfZnJvbV9zcGVjKHNwZWMpOgorICAgICIiIlJldHVybiB0aGUgcmVwciB0byB1c2UgZm9yIHRoZSBtb2R1bGUuIiIiCisgICAgIyBXZSBtb3N0bHkgcmVwbGljYXRlIF9tb2R1bGVfcmVwcigpIHVzaW5nIHRoZSBzcGVjIGF0dHJpYnV0ZXMuCisgICAgbmFtZSA9ICc/JyBpZiBzcGVjLm5hbWUgaXMgTm9uZSBlbHNlIHNwZWMubmFtZQorICAgIGlmIHNwZWMub3JpZ2luIGlzIE5vbmU6CisgICAgICAgIGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfT4nLmZvcm1hdChuYW1lKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc3BlYy5oYXNfbG9jYXRpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gZnJvbSB7IXJ9PicuZm9ybWF0KG5hbWUsIHNwZWMub3JpZ2luKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoe30pPicuZm9ybWF0KHNwZWMubmFtZSwgc3BlYy5vcmlnaW4pCisgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoeyFyfSk+Jy5mb3JtYXQobmFtZSwgc3BlYy5sb2FkZXIpCisgICAgZWxzZToKKyAgICAgICAgaWYgc3BlYy5oYXNfbG9jYXRpb246CisgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSBmcm9tIHshcn0+Jy5mb3JtYXQobmFtZSwgc3BlYy5vcmlnaW4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAoe30pPicuZm9ybWF0KHNwZWMubmFtZSwgc3BlYy5vcmlnaW4pCiAKLSAgICBkZWYgaW5pdF9tb2R1bGVfYXR0cnMoc2VsZiwgbW9kdWxlLCAqLCBfb3ZlcnJpZGU9RmFsc2UsIF9mb3JjZV9uYW1lPVRydWUpOgotICAgICAgICAiIiJTZXQgdGhlIG1vZHVsZSdzIGF0dHJpYnV0ZXMuCiAKLSAgICAgICAgQWxsIG1pc3NpbmcgaW1wb3J0LXJlbGF0ZWQgbW9kdWxlIGF0dHJpYnV0ZXMgd2lsbCBiZSBzZXQuICBIZXJlCi0gICAgICAgIGlzIGhvdyB0aGUgc3BlYyBhdHRyaWJ1dGVzIG1hcCBvbnRvIHRoZSBtb2R1bGU6CisjIFVzZWQgYnkgaW1wb3J0bGliLnJlbG9hZCgpIGFuZCBfbG9hZF9tb2R1bGVfc2hpbSgpLgorZGVmIF9leGVjKHNwZWMsIG1vZHVsZSk6CisgICAgIiIiRXhlY3V0ZSB0aGUgc3BlYyBpbiBhbiBleGlzdGluZyBtb2R1bGUncyBuYW1lc3BhY2UuIiIiCisgICAgbmFtZSA9IHNwZWMubmFtZQorICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKKyAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihuYW1lKToKKyAgICAgICAgaWYgc3lzLm1vZHVsZXMuZ2V0KG5hbWUpIGlzIG5vdCBtb2R1bGU6CisgICAgICAgICAgICBtc2cgPSAnbW9kdWxlIHshcn0gbm90IGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKQorICAgICAgICBpZiBzcGVjLmxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdtaXNzaW5nIGxvYWRlcicsIG5hbWU9c3BlYy5uYW1lKQorICAgICAgICAgICAgIyBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgICAgICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSwgb3ZlcnJpZGU9VHJ1ZSkKKyAgICAgICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSwgb3ZlcnJpZGU9VHJ1ZSkKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgorICAgICAgICAgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKKyAgICAgICAgICAgICMgaGF2ZSBleGVjX21vZHVsZSgpIGltcGxlbWVudGVkLCB3ZSBjYW4gYWRkIGEgZGVwcmVjYXRpb24KKyAgICAgICAgICAgICMgd2FybmluZyBoZXJlLgorICAgICAgICAgICAgc3BlYy5sb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0KIAotICAgICAgICBzcGVjLm5hbWUgLT4gbW9kdWxlLl9fbmFtZV9fCi0gICAgICAgIHNwZWMubG9hZGVyIC0+IG1vZHVsZS5fX2xvYWRlcl9fCi0gICAgICAgIHNwZWMucGFyZW50IC0+IG1vZHVsZS5fX3BhY2thZ2VfXwotICAgICAgICBzcGVjIC0+IG1vZHVsZS5fX3NwZWNfXwogCi0gICAgICAgIE9wdGlvbmFsOgotICAgICAgICBzcGVjLm9yaWdpbiAtPiBtb2R1bGUuX19maWxlX18gKGlmIHNwZWMuc2V0X2ZpbGVhdHRyIGlzIHRydWUpCi0gICAgICAgIHNwZWMuY2FjaGVkIC0+IG1vZHVsZS5fX2NhY2hlZF9fIChpZiBfX2ZpbGVfXyBhbHNvIHNldCkKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyAtPiBtb2R1bGUuX19wYXRoX18gKGlmIHNldCkKLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlYyA9IHNlbGYuc3BlYwotCi0gICAgICAgICMgVGhlIHBhc3NlZCBpbiBtb2R1bGUgbWF5IGJlIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZSBhc3NpZ25tZW50LAotICAgICAgICAjIGluIHdoaWNoIGNhc2Ugd2Ugc2ltcGx5IGRvbid0IHNldCB0aGUgYXR0cmlidXRlcy4KLQotICAgICAgICAjIF9fbmFtZV9fCi0gICAgICAgIGlmIChfb3ZlcnJpZGUgb3IgX2ZvcmNlX25hbWUgb3IKLSAgICAgICAgICAgIGdldGF0dHIobW9kdWxlLCAnX19uYW1lX18nLCBOb25lKSBpcyBOb25lKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18gPSBzcGVjLm5hbWUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgIyBfX2xvYWRlcl9fCi0gICAgICAgIGlmIF9vdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKLSAgICAgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgICMgQSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGhhY2suCi0gICAgICAgICAgICAgICAgaWYgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyID0gX05hbWVzcGFjZUxvYWRlci5fX25ld19fKF9OYW1lc3BhY2VMb2FkZXIpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRlci5fcGF0aCA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAjIF9fcGFja2FnZV9fCi0gICAgICAgIGlmIF9vdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBzcGVjLnBhcmVudAotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAjIF9fc3BlY19fCitkZWYgX2xvYWRfYmFja3dhcmRfY29tcGF0aWJsZShzcGVjKToKKyAgICAjIChpc3N1ZTE5NzEzKSBPbmNlIEJ1aWx0aW5JbXBvcnRlciBhbmQgRXh0ZW5zaW9uRmlsZUxvYWRlcgorICAgICMgaGF2ZSBleGVjX21vZHVsZSgpIGltcGxlbWVudGVkLCB3ZSBjYW4gYWRkIGEgZGVwcmVjYXRpb24KKyAgICAjIHdhcm5pbmcgaGVyZS4KKyAgICBzcGVjLmxvYWRlci5sb2FkX21vZHVsZShzcGVjLm5hbWUpCisgICAgIyBUaGUgbW9kdWxlIG11c3QgYmUgaW4gc3lzLm1vZHVsZXMgYXQgdGhpcyBwb2ludCEKKyAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1tzcGVjLm5hbWVdCisgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzcGVjLmxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycsIE5vbmUpIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgU2luY2UgbW9kdWxlLl9fcGF0aF9fIG1heSBub3QgbGluZSB1cCB3aXRoCisgICAgICAgICAgICAjIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9wYXRocywgd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcmVseQorICAgICAgICAgICAgIyBvbiBzcGVjLnBhcmVudCBoZXJlLgorICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fbmFtZV9fCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IHNwZWMubmFtZS5ycGFydGl0aW9uKCcuJylbMF0KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19zcGVjX18nLCBOb25lKSBpcyBOb25lOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzcGVjCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKKyAgICByZXR1cm4gbW9kdWxlCiAKLSAgICAgICAgIyBfX3BhdGhfXwotICAgICAgICBpZiBfb3ZlcnJpZGUgb3IgZ2V0YXR0cihtb2R1bGUsICdfX3BhdGhfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucwotICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcworZGVmIF9sb2FkX3VubG9ja2VkKHNwZWMpOgorICAgICMgQSBoZWxwZXIgZm9yIGRpcmVjdCB1c2UgYnkgdGhlIGltcG9ydCBzeXN0ZW0uCisgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICMgbm90IGEgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgorICAgICAgICAgICAgcmV0dXJuIF9sb2FkX2JhY2t3YXJkX2NvbXBhdGlibGUoc3BlYykKIAotICAgICAgICBpZiBzcGVjLmhhc19sb2NhdGlvbjoKLSAgICAgICAgICAgICMgX19maWxlX18KLSAgICAgICAgICAgIGlmIF9vdmVycmlkZSBvciBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IHNwZWMub3JpZ2luCi0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgICAgICMgX19jYWNoZWRfXwotICAgICAgICAgICAgaWYgX292ZXJyaWRlIG9yIGdldGF0dHIobW9kdWxlLCAnX19jYWNoZWRfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc3BlYy5jYWNoZWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gc3BlYy5jYWNoZWQKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGNyZWF0ZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbmV3IG1vZHVsZSB0byBiZSBsb2FkZWQuCi0KLSAgICAgICAgVGhlIGltcG9ydC1yZWxhdGVkIG1vZHVsZSBhdHRyaWJ1dGVzIGFyZSBhbHNvIHNldCB3aXRoIHRoZQotICAgICAgICBhcHByb3ByaWF0ZSB2YWx1ZXMgZnJvbSB0aGUgc3BlYy4KLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlYyA9IHNlbGYuc3BlYwotICAgICAgICAjIFR5cGljYWxseSBsb2FkZXJzIHdpbGwgbm90IGltcGxlbWVudCBjcmVhdGVfbW9kdWxlKCkuCi0gICAgICAgIGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdjcmVhdGVfbW9kdWxlJyk6Ci0gICAgICAgICAgICAjIElmIGNyZWF0ZV9tb2R1bGUoKSByZXR1cm5zIGBOb25lYCBpdCBtZWFucyB0aGUgZGVmYXVsdAotICAgICAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCi0gICAgICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCisgICAgbW9kdWxlID0gbW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgIHdpdGggX2luc3RhbGxlZF9zYWZlbHkobW9kdWxlKToKKyAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNwZWMubmFtZSkKKyAgICAgICAgICAgICMgQSBuYW1lc3BhY2UgcGFja2FnZSBzbyBkbyBub3RoaW5nLgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbW9kdWxlID0gTm9uZQotICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgICMgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIG9wZW4oKSBpcyBldmVyIGNhbGxlZCBhcyB0aGUgJ2lvJwotICAgICAgICAgICAgIyBtb2R1bGUgaW1wbGljaXRseSBpbXBvcnRzICdsb2NhbGUnIGFuZCB3b3VsZCBvdGhlcndpc2UKLSAgICAgICAgICAgICMgdHJpZ2dlciBhbiBpbmZpbml0ZSBsb29wLgotICAgICAgICAgICAgbW9kdWxlID0gX25ld19tb2R1bGUoc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQogCi0gICAgZGVmIF9leGVjKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICIiIkRvIGV2ZXJ5dGhpbmcgbmVjZXNzYXJ5IHRvIGV4ZWN1dGUgdGhlIG1vZHVsZS4KKyAgICAjIFdlIGRvbid0IGVuc3VyZSB0aGF0IHRoZSBpbXBvcnQtcmVsYXRlZCBtb2R1bGUgYXR0cmlidXRlcyBnZXQKKyAgICAjIHNldCBpbiB0aGUgc3lzLm1vZHVsZXMgcmVwbGFjZW1lbnQgY2FzZS4gIFN1Y2ggbW9kdWxlcyBhcmUgb24KKyAgICAjIHRoZWlyIG93bi4KKyAgICByZXR1cm4gc3lzLm1vZHVsZXNbc3BlYy5uYW1lXQogCi0gICAgICAgIFRoZSBuYW1lc3BhY2Ugb2YgYG1vZHVsZWAgaXMgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mIGV4ZWN1dGlvbi4KLSAgICAgICAgVGhpcyBtZXRob2QgdXNlcyB0aGUgbG9hZGVyJ3MgYGV4ZWNfbW9kdWxlKClgIG1ldGhvZC4KKyMgQSBtZXRob2QgdXNlZCBkdXJpbmcgdGVzdGluZyBvZiBfbG9hZF91bmxvY2tlZCgpIGFuZCBieQorIyBfbG9hZF9tb2R1bGVfc2hpbSgpLgorZGVmIF9sb2FkKHNwZWMpOgorICAgICIiIlJldHVybiBhIG5ldyBtb2R1bGUgb2JqZWN0LCBsb2FkZWQgYnkgdGhlIHNwZWMncyBsb2FkZXIuCiAKLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAgIFRoZSBtb2R1bGUgaXMgbm90IGFkZGVkIHRvIGl0cyBwYXJlbnQuCiAKLSAgICAjIFVzZWQgYnkgaW1wb3J0bGliLnJlbG9hZCgpIGFuZCBfbG9hZF9tb2R1bGVfc2hpbSgpLgotICAgIGRlZiBleGVjKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgotICAgICAgICBuYW1lID0gc2VsZi5zcGVjLm5hbWUKLSAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQotICAgICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihuYW1lKToKLSAgICAgICAgICAgIGlmIHN5cy5tb2R1bGVzLmdldChuYW1lKSBpcyBub3QgbW9kdWxlOgotICAgICAgICAgICAgICAgIG1zZyA9ICdtb2R1bGUgeyFyfSBub3QgaW4gc3lzLm1vZHVsZXMnLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKQotICAgICAgICAgICAgaWYgc2VsZi5zcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbWlzc2luZyBsb2FkZXInLCBuYW1lPXNlbGYuc3BlYy5uYW1lKQotICAgICAgICAgICAgICAgICMgbmFtZXNwYWNlIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBzZWxmLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSwgX292ZXJyaWRlPVRydWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICAgICAgc2VsZi5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUsIF9vdmVycmlkZT1UcnVlKQotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5zcGVjLmxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6Ci0gICAgICAgICAgICAgICAgIyAoaXNzdWUxOTcxMykgT25jZSBCdWlsdGluSW1wb3J0ZXIgYW5kIEV4dGVuc2lvbkZpbGVMb2FkZXIKLSAgICAgICAgICAgICAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCi0gICAgICAgICAgICAgICAgIyB3YXJuaW5nIGhlcmUuCi0gICAgICAgICAgICAgICAgc2VsZi5zcGVjLmxvYWRlci5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9leGVjKG1vZHVsZSkKLSAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdCisgICAgSWYgYSBtb2R1bGUgaXMgYWxyZWFkeSBpbiBzeXMubW9kdWxlcywgdGhhdCBleGlzdGluZyBtb2R1bGUgZ2V0cworICAgIGNsb2JiZXJlZC4KIAotICAgIGRlZiBfbG9hZF9iYWNrd2FyZF9jb21wYXRpYmxlKHNlbGYpOgotICAgICAgICAjIChpc3N1ZTE5NzEzKSBPbmNlIEJ1aWx0aW5JbXBvcnRlciBhbmQgRXh0ZW5zaW9uRmlsZUxvYWRlcgotICAgICAgICAjIGhhdmUgZXhlY19tb2R1bGUoKSBpbXBsZW1lbnRlZCwgd2UgY2FuIGFkZCBhIGRlcHJlY2F0aW9uCi0gICAgICAgICMgd2FybmluZyBoZXJlLgotICAgICAgICBzcGVjID0gc2VsZi5zcGVjCi0gICAgICAgIHNwZWMubG9hZGVyLmxvYWRfbW9kdWxlKHNwZWMubmFtZSkKLSAgICAgICAgIyBUaGUgbW9kdWxlIG11c3QgYmUgaW4gc3lzLm1vZHVsZXMgYXQgdGhpcyBwb2ludCEKLSAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbc3BlYy5uYW1lXQotICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgU2luY2UgbW9kdWxlLl9fcGF0aF9fIG1heSBub3QgbGluZSB1cCB3aXRoCi0gICAgICAgICAgICAgICAgIyBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfcGF0aHMsIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJlbHkKLSAgICAgICAgICAgICAgICAjIG9uIHNwZWMucGFyZW50IGhlcmUuCi0gICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fbmFtZV9fCi0gICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gc3BlYy5uYW1lLnJwYXJ0aXRpb24oJy4nKVswXQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgZ2V0YXR0cihtb2R1bGUsICdfX3NwZWNfXycsIE5vbmUpIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIG1vZHVsZQotCi0gICAgZGVmIF9sb2FkX3VubG9ja2VkKHNlbGYpOgotICAgICAgICAjIEEgaGVscGVyIGZvciBkaXJlY3QgdXNlIGJ5IHRoZSBpbXBvcnQgc3lzdGVtLgotICAgICAgICBpZiBzZWxmLnNwZWMubG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgIyBub3QgYSBuYW1lc3BhY2UgcGFja2FnZQotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5zcGVjLmxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvYWRfYmFja3dhcmRfY29tcGF0aWJsZSgpCi0KLSAgICAgICAgbW9kdWxlID0gc2VsZi5jcmVhdGUoKQotICAgICAgICB3aXRoIF9pbnN0YWxsZWRfc2FmZWx5KG1vZHVsZSk6Ci0gICAgICAgICAgICBpZiBzZWxmLnNwZWMubG9hZGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5zcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdtaXNzaW5nIGxvYWRlcicsIG5hbWU9c2VsZi5zcGVjLm5hbWUpCi0gICAgICAgICAgICAgICAgIyBBIG5hbWVzcGFjZSBwYWNrYWdlIHNvIGRvIG5vdGhpbmcuCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWMobW9kdWxlKQotCi0gICAgICAgICMgV2UgZG9uJ3QgZW5zdXJlIHRoYXQgdGhlIGltcG9ydC1yZWxhdGVkIG1vZHVsZSBhdHRyaWJ1dGVzIGdldAotICAgICAgICAjIHNldCBpbiB0aGUgc3lzLm1vZHVsZXMgcmVwbGFjZW1lbnQgY2FzZS4gIFN1Y2ggbW9kdWxlcyBhcmUgb24KLSAgICAgICAgIyB0aGVpciBvd24uCi0gICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tzZWxmLnNwZWMubmFtZV0KLQotICAgICMgQSBtZXRob2QgdXNlZCBkdXJpbmcgdGVzdGluZyBvZiBfbG9hZF91bmxvY2tlZCgpIGFuZCBieQotICAgICMgX2xvYWRfbW9kdWxlX3NoaW0oKS4KLSAgICBkZWYgbG9hZChzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbmV3IG1vZHVsZSBvYmplY3QsIGxvYWRlZCBieSB0aGUgc3BlYydzIGxvYWRlci4KLQotICAgICAgICBUaGUgbW9kdWxlIGlzIG5vdCBhZGRlZCB0byBpdHMgcGFyZW50LgotCi0gICAgICAgIElmIGEgbW9kdWxlIGlzIGFscmVhZHkgaW4gc3lzLm1vZHVsZXMsIHRoYXQgZXhpc3RpbmcgbW9kdWxlIGdldHMKLSAgICAgICAgY2xvYmJlcmVkLgotCi0gICAgICAgICIiIgotICAgICAgICBfaW1wLmFjcXVpcmVfbG9jaygpCi0gICAgICAgIHdpdGggX01vZHVsZUxvY2tNYW5hZ2VyKHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkX3VubG9ja2VkKCkKLQotCi1kZWYgX2ZpeF91cF9tb2R1bGUobnMsIG5hbWUsIHBhdGhuYW1lLCBjcGF0aG5hbWU9Tm9uZSk6Ci0gICAgIyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoKS4KLSAgICBsb2FkZXIgPSBucy5nZXQoJ19fbG9hZGVyX18nKQotICAgIHNwZWMgPSBucy5nZXQoJ19fc3BlY19fJykKLSAgICBpZiBub3QgbG9hZGVyOgotICAgICAgICBpZiBzcGVjOgotICAgICAgICAgICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKLSAgICAgICAgZWxpZiBwYXRobmFtZSA9PSBjcGF0aG5hbWU6Ci0gICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvYWRlciA9IFNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCi0gICAgaWYgbm90IHNwZWM6Ci0gICAgICAgIHNwZWMgPSBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRobmFtZSwgbG9hZGVyPWxvYWRlcikKLSAgICB0cnk6Ci0gICAgICAgIG5zWydfX3NwZWNfXyddID0gc3BlYwotICAgICAgICBuc1snX19sb2FkZXJfXyddID0gbG9hZGVyCi0gICAgICAgIG5zWydfX2ZpbGVfXyddID0gcGF0aG5hbWUKLSAgICAgICAgbnNbJ19fY2FjaGVkX18nXSA9IGNwYXRobmFtZQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICMgTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0LgotICAgICAgICBwYXNzCisgICAgIiIiCisgICAgX2ltcC5hY3F1aXJlX2xvY2soKQorICAgIHdpdGggX01vZHVsZUxvY2tNYW5hZ2VyKHNwZWMubmFtZSk6CisgICAgICAgIHJldHVybiBfbG9hZF91bmxvY2tlZChzcGVjKQogCiAKICMgTG9hZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTEyODUsMTYgKzczNSwxNyBAQAogICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIgaWYgc3BlYyBpcyBub3QgTm9uZSBlbHNlIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAotICAgIEBfcmVxdWlyZXNfYnVpbHRpbgotICAgIGRlZiBsb2FkX21vZHVsZShjbHMsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiTG9hZCBhIGJ1aWx0LWluIG1vZHVsZS4iIiIKLSAgICAgICAgIyBPbmNlIGFuIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50YXRpb24gaXMgYWRkZWQgd2UgY2FuIGFsc28KLSAgICAgICAgIyBhZGQgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGhlcmUuCi0gICAgICAgIHdpdGggX01hbmFnZVJlbG9hZChmdWxsbmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuaW5pdF9idWlsdGluLCBmdWxsbmFtZSkKLSAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBjbHMKLSAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gJycKLSAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAiIiJDcmVhdGUgYSBidWlsdC1pbiBtb2R1bGUiIiIKKyAgICAgICAgaWYgc3BlYy5uYW1lIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigneyFyfSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUnLmZvcm1hdChzcGVjLm5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1zcGVjLm5hbWUpCisgICAgICAgIHJldHVybiBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuY3JlYXRlX2J1aWx0aW4sIHNwZWMpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiRXhlYyBhIGJ1aWx0LWluIG1vZHVsZSIiIgorICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZXhlY19idWlsdGluLCBtb2R1bGUpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBAX3JlcXVpcmVzX2J1aWx0aW4KQEAgLTEzMTQsNiArNzY1LDggQEAKICAgICAgICAgIiIiUmV0dXJuIEZhbHNlIGFzIGJ1aWx0LWluIG1vZHVsZXMgYXJlIG5ldmVyIHBhY2thZ2VzLiIiIgogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGxvYWRfbW9kdWxlID0gY2xhc3NtZXRob2QoX2xvYWRfbW9kdWxlX3NoaW0pCisKIAogY2xhc3MgRnJvemVuSW1wb3J0ZXI6CiAKQEAgLTEzNDksNiArODAyLDEwIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gY2xzIGlmIF9pbXAuaXNfZnJvemVuKGZ1bGxuYW1lKSBlbHNlIE5vbmUKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjcmVhdGVfbW9kdWxlKGNscywgc3BlYyk6CisgICAgICAgICIiIlVzZSBkZWZhdWx0IHNlbWFudGljcyBmb3IgbW9kdWxlIGNyZWF0aW9uLiIiIgorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBleGVjX21vZHVsZShtb2R1bGUpOgogICAgICAgICBuYW1lID0gbW9kdWxlLl9fc3BlY19fLm5hbWUKQEAgLTEzODYsNzMxICs4NDMsNiBAQAogICAgICAgICByZXR1cm4gX2ltcC5pc19mcm96ZW5fcGFja2FnZShmdWxsbmFtZSkKIAogCi1jbGFzcyBXaW5kb3dzUmVnaXN0cnlGaW5kZXI6Ci0KLSAgICAiIiJNZXRhIHBhdGggZmluZGVyIGZvciBtb2R1bGVzIGRlY2xhcmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiIiIgotCi0gICAgUkVHSVNUUllfS0VZID0gKAotICAgICAgICAnU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufScKLSAgICAgICAgJ1xcTW9kdWxlc1xce2Z1bGxuYW1lfScpCi0gICAgUkVHSVNUUllfS0VZX0RFQlVHID0gKAotICAgICAgICAnU29mdHdhcmVcXFB5dGhvblxcUHl0aG9uQ29yZVxce3N5c192ZXJzaW9ufScKLSAgICAgICAgJ1xcTW9kdWxlc1xce2Z1bGxuYW1lfVxcRGVidWcnKQotICAgIERFQlVHX0JVSUxEID0gRmFsc2UgICMgQ2hhbmdlZCBpbiBfc2V0dXAoKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9vcGVuX3JlZ2lzdHJ5KGNscywga2V5KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwga2V5KQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9zZWFyY2hfcmVnaXN0cnkoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgIGlmIGNscy5ERUJVR19CVUlMRDoKLSAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVlfREVCVUcKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVkKLSAgICAgICAga2V5ID0gcmVnaXN0cnlfa2V5LmZvcm1hdChmdWxsbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKLSAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAnJykKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gZmlsZXBhdGgKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgIGZpbGVwYXRoID0gY2xzLl9zZWFyY2hfcmVnaXN0cnkoZnVsbG5hbWUpCi0gICAgICAgIGlmIGZpbGVwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBfcGF0aF9zdGF0KGZpbGVwYXRoKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgotICAgICAgICAgICAgaWYgZmlsZXBhdGguZW5kc3dpdGgodHVwbGUoc3VmZml4ZXMpKToKLSAgICAgICAgICAgICAgICBzcGVjID0gc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKGZ1bGxuYW1lLCBmaWxlcGF0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luPWZpbGVwYXRoKQotICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIiRmluZCBtb2R1bGUgbmFtZWQgaW4gdGhlIHJlZ2lzdHJ5LgotCi0gICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgotCi0gICAgICAgICIiIgotICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKLSAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzcGVjLmxvYWRlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotCi1jbGFzcyBfTG9hZGVyQmFzaWNzOgotCi0gICAgIiIiQmFzZSBjbGFzcyBvZiBjb21tb24gY29kZSBuZWVkZWQgYnkgYm90aCBTb3VyY2VMb2FkZXIgYW5kCi0gICAgU291cmNlbGVzc0ZpbGVMb2FkZXIuIiIiCi0KLSAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZSBieSBjaGVja2luZyBpZgotICAgICAgICB0aGUgcGF0aCByZXR1cm5lZCBieSBnZXRfZmlsZW5hbWUgaGFzIGEgZmlsZW5hbWUgb2YgJ19faW5pdF9fLnB5Jy4iIiIKLSAgICAgICAgZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkpWzFdCi0gICAgICAgIGZpbGVuYW1lX2Jhc2UgPSBmaWxlbmFtZS5yc3BsaXQoJy4nLCAxKVswXQotICAgICAgICB0YWlsX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgcmV0dXJuIGZpbGVuYW1lX2Jhc2UgPT0gJ19faW5pdF9fJyBhbmQgdGFpbF9uYW1lICE9ICdfX2luaXRfXycKLQotICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgotICAgICAgICAiIiJFeGVjdXRlIHRoZSBtb2R1bGUuIiIiCi0gICAgICAgIGNvZGUgPSBzZWxmLmdldF9jb2RlKG1vZHVsZS5fX25hbWVfXykKLSAgICAgICAgaWYgY29kZSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2Nhbm5vdCBsb2FkIG1vZHVsZSB7IXJ9IHdoZW4gZ2V0X2NvZGUoKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJucyBOb25lJy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKSkKLSAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCi0KLSAgICBsb2FkX21vZHVsZSA9IF9sb2FkX21vZHVsZV9zaGltCi0KLQotY2xhc3MgU291cmNlTG9hZGVyKF9Mb2FkZXJCYXNpY3MpOgotCi0gICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB0aGF0IHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIChhbiBpbnQpIGZvciB0aGUKLSAgICAgICAgc3BlY2lmaWVkIHBhdGgsIHdoZXJlIHBhdGggaXMgYSBzdHIuCi0KLSAgICAgICAgUmFpc2VzIElPRXJyb3Igd2hlbiB0aGUgcGF0aCBjYW5ub3QgYmUgaGFuZGxlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIElPRXJyb3IKLQotICAgIGRlZiBwYXRoX3N0YXRzKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgcmV0dXJuaW5nIGEgbWV0YWRhdGEgZGljdCBmb3IgdGhlIHNwZWNpZmllZCBwYXRoCi0gICAgICAgIHRvIGJ5IHRoZSBwYXRoIChzdHIpLgotICAgICAgICBQb3NzaWJsZSBrZXlzOgotICAgICAgICAtICdtdGltZScgKG1hbmRhdG9yeSkgaXMgdGhlIG51bWVyaWMgdGltZXN0YW1wIG9mIGxhc3Qgc291cmNlCi0gICAgICAgICAgY29kZSBtb2RpZmljYXRpb247Ci0gICAgICAgIC0gJ3NpemUnIChvcHRpb25hbCkgaXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgotCi0gICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgdGhlIGxvYWRlciB0byByZWFkIGJ5dGVjb2RlIGZpbGVzLgotICAgICAgICBSYWlzZXMgSU9FcnJvciB3aGVuIHRoZSBwYXRoIGNhbm5vdCBiZSBoYW5kbGVkLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnBhdGhfbXRpbWUocGF0aCl9Ci0KLSAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBjYWNoZV9wYXRoLCBkYXRhKToKLSAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHdoaWNoIHdyaXRlcyBkYXRhIChieXRlcykgdG8gYSBmaWxlIHBhdGggKGEgc3RyKS4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIGZvciB0aGUgd3JpdGluZyBvZiBieXRlY29kZSBmaWxlcy4KLQotICAgICAgICBUaGUgc291cmNlIHBhdGggaXMgbmVlZGVkIGluIG9yZGVyIHRvIGNvcnJlY3RseSB0cmFuc2ZlciBwZXJtaXNzaW9ucwotICAgICAgICAiIiIKLSAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHdlIGRlbGVnYXRlIHRvIHNldF9kYXRhKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoY2FjaGVfcGF0aCwgZGF0YSkKLQotICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKLSAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHdoaWNoIHdyaXRlcyBkYXRhIChieXRlcykgdG8gYSBmaWxlIHBhdGggKGEgc3RyKS4KLQotICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIGZvciB0aGUgd3JpdGluZyBvZiBieXRlY29kZSBmaWxlcy4KLSAgICAgICAgIiIiCi0KLQotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgSW5zcGVjdExvYWRlci5nZXRfc291cmNlLiIiIgotICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEocGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3NvdXJjZSBub3QgYXZhaWxhYmxlIHRocm91Z2ggZ2V0X2RhdGEoKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YwotICAgICAgICByZXR1cm4gZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpCi0KLSAgICBkZWYgc291cmNlX3RvX2NvZGUoc2VsZiwgZGF0YSwgcGF0aCwgKiwgX29wdGltaXplPS0xKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBjb21waWxlZCBmcm9tIHNvdXJjZS4KLQotICAgICAgICBUaGUgJ2RhdGEnIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2JqZWN0IHR5cGUgdGhhdCBjb21waWxlKCkgc3VwcG9ydHMuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChjb21waWxlLCBkYXRhLCBwYXRoLCAnZXhlYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUsIG9wdGltaXplPV9vcHRpbWl6ZSkKLQotICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X2NvZGUuCi0KLSAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX3N0YXRzIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQotICAgICAgICBieXRlY29kZSwgc2V0X2RhdGEgbXVzdCBhbHNvIGJlIGltcGxlbWVudGVkLgotCi0gICAgICAgICIiIgotICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQotICAgICAgICBzb3VyY2VfbXRpbWUgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBjYWNoZV9mcm9tX3NvdXJjZShzb3VyY2VfcGF0aCkKLSAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICBieXRlY29kZV9wYXRoID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN0ID0gc2VsZi5wYXRoX3N0YXRzKHNvdXJjZV9wYXRoKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc3RbJ210aW1lJ10pCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShieXRlY29kZV9wYXRoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZGF0YSA9IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3N0YXRzPXN0LCBuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPWJ5dGVjb2RlX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoPXNvdXJjZV9wYXRoKQotICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQotICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQotICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9fYnl0ZWNvZGUoY29kZV9vYmplY3QsIHNvdXJjZV9tdGltZSwKLSAgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV9ieXRlcykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBjb2RlX29iamVjdAotCi0KLWNsYXNzIEZpbGVMb2FkZXI6Ci0KLSAgICAiIiJCYXNlIGZpbGUgbG9hZGVyIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGxvYWRlciBwcm90b2NvbCBtZXRob2RzIHRoYXQKLSAgICByZXF1aXJlIGZpbGUgc3lzdGVtIHVzYWdlLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKLSAgICAgICAgIiIiQ2FjaGUgdGhlIG1vZHVsZSBuYW1lIGFuZCB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3VuZCBieSB0aGUKLSAgICAgICAgZmluZGVyLiIiIgotICAgICAgICBzZWxmLm5hbWUgPSBmdWxsbmFtZQotICAgICAgICBzZWxmLnBhdGggPSBwYXRoCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXyA9PSBvdGhlci5fX2NsYXNzX18gYW5kCi0gICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXykKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5uYW1lKSBeIGhhc2goc2VsZi5wYXRoKQotCi0gICAgQF9jaGVja19uYW1lCi0gICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiTG9hZCBhIG1vZHVsZSBmcm9tIGEgZmlsZS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgIyBUaGUgb25seSByZWFzb24gZm9yIHRoaXMgbWV0aG9kIGlzIGZvciB0aGUgbmFtZSBjaGVjay4KLSAgICAgICAgIyBJc3N1ZSAjMTQ4NTc6IEF2b2lkIHRoZSB6ZXJvLWFyZ3VtZW50IGZvcm0gb2Ygc3VwZXIgc28gdGhlIGltcGxlbWVudGF0aW9uCi0gICAgICAgICMgb2YgdGhhdCBmb3JtIGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgYnJlYWtpbmcgdGhlIGZyb3plbiBtb2R1bGUKLSAgICAgICAgcmV0dXJuIHN1cGVyKEZpbGVMb2FkZXIsIHNlbGYpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQotCi0gICAgQF9jaGVja19uYW1lCi0gICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aAotCi0gICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGRhdGEgZnJvbSBwYXRoIGFzIHJhdyBieXRlcy4iIiIKLSAgICAgICAgd2l0aCBfaW8uRmlsZUlPKHBhdGgsICdyJykgYXMgZmlsZToKLSAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQotCi0KLWNsYXNzIFNvdXJjZUZpbGVMb2FkZXIoRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKLQotICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIFNvdXJjZUxvYWRlciB1c2luZyB0aGUgZmlsZSBzeXN0ZW0uIiIiCi0KLSAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHBhdGguIiIiCi0gICAgICAgIHN0ID0gX3BhdGhfc3RhdChwYXRoKQotICAgICAgICByZXR1cm4geydtdGltZSc6IHN0LnN0X210aW1lLCAnc2l6ZSc6IHN0LnN0X3NpemV9Ci0KLSAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKToKLSAgICAgICAgIyBBZGFwdCBiZXR3ZWVuIHRoZSB0d28gQVBJcwotICAgICAgICBtb2RlID0gX2NhbGNfbW9kZShzb3VyY2VfcGF0aCkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCwgZGF0YSwgX21vZGU9bW9kZSkKLQotICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhLCAqLCBfbW9kZT0wbzY2Nik6Ci0gICAgICAgICIiIldyaXRlIGJ5dGVzIGRhdGEgdG8gYSBmaWxlLiIiIgotICAgICAgICBwYXJlbnQsIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKLSAgICAgICAgcGF0aF9wYXJ0cyA9IFtdCi0gICAgICAgICMgRmlndXJlIG91dCB3aGF0IGRpcmVjdG9yaWVzIGFyZSBtaXNzaW5nLgotICAgICAgICB3aGlsZSBwYXJlbnQgYW5kIG5vdCBfcGF0aF9pc2RpcihwYXJlbnQpOgotICAgICAgICAgICAgcGFyZW50LCBwYXJ0ID0gX3BhdGhfc3BsaXQocGFyZW50KQotICAgICAgICAgICAgcGF0aF9wYXJ0cy5hcHBlbmQocGFydCkKLSAgICAgICAgIyBDcmVhdGUgbmVlZGVkIGRpcmVjdG9yaWVzLgotICAgICAgICBmb3IgcGFydCBpbiByZXZlcnNlZChwYXRoX3BhcnRzKToKLSAgICAgICAgICAgIHBhcmVudCA9IF9wYXRoX2pvaW4ocGFyZW50LCBwYXJ0KQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF9vcy5ta2RpcihwYXJlbnQpCi0gICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgotICAgICAgICAgICAgICAgICMgUHJvYmFibHkgYW5vdGhlciBQeXRob24gcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQgdGhlIGRpci4KLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKLSAgICAgICAgICAgICAgICAjIGFib3V0IHdyaXRpbmcgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGFyZW50LCBleGMpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgX21vZGUpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAjIFNhbWUgYXMgYWJvdmU6IGp1c3QgZG9uJ3Qgd3JpdGUgdGhlIGJ5dGVjb2RlLgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwgZXhjKQotCi0KLWNsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgotCi0gICAgIiIiTG9hZGVyIHdoaWNoIGhhbmRsZXMgc291cmNlbGVzcyBmaWxlIGltcG9ydHMuIiIiCi0KLSAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCi0gICAgICAgIGRhdGEgPSBzZWxmLmdldF9kYXRhKHBhdGgpCi0gICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsIG5hbWU9ZnVsbG5hbWUsIHBhdGg9cGF0aCkKLSAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsIGJ5dGVjb2RlX3BhdGg9cGF0aCkKLQotICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUuIiIiCi0gICAgICAgIHJldHVybiBOb25lCi0KLQotIyBGaWxsZWQgaW4gYnkgX3NldHVwKCkuCi1FWFRFTlNJT05fU1VGRklYRVMgPSBbXQotCi0KLWNsYXNzIEV4dGVuc2lvbkZpbGVMb2FkZXI6Ci0KLSAgICAiIiJMb2FkZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLgotCi0gICAgVGhlIGNvbnN0cnVjdG9yIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBGaWxlRmluZGVyLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAotICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKLQotICAgIEBfY2hlY2tfbmFtZQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYW4gZXh0ZW5zaW9uIG1vZHVsZS4iIiIKLSAgICAgICAgIyBPbmNlIGFuIGV4ZWNfbW9kdWxlKCkgaW1wbGVtZW50YXRpb24gaXMgYWRkZWQgd2UgY2FuIGFsc28KLSAgICAgICAgIyBhZGQgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGhlcmUuCi0gICAgICAgIHdpdGggX01hbmFnZVJlbG9hZChmdWxsbmFtZSk6Ci0gICAgICAgICAgICBtb2R1bGUgPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAubG9hZF9keW5hbWljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSwgc2VsZi5wYXRoKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIGxvYWRlZCBmcm9tIHshcn0nLCBzZWxmLnBhdGgpCi0gICAgICAgIGlzX3BhY2thZ2UgPSBzZWxmLmlzX3BhY2thZ2UoZnVsbG5hbWUpCi0gICAgICAgIGlmIGlzX3BhY2thZ2UgYW5kIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbX3BhdGhfc3BsaXQoc2VsZi5wYXRoKVswXV0KLSAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICBpZiBub3QgaXNfcGFja2FnZToKLSAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgcmV0dXJuIG1vZHVsZQotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCi0gICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KLSAgICAgICAgcmV0dXJuIGFueShmaWxlX25hbWUgPT0gJ19faW5pdF9fJyArIHN1ZmZpeAotICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gRVhURU5TSU9OX1NVRkZJWEVTKQotCi0gICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW5ub3QgY3JlYXRlIGEgY29kZSBvYmplY3QuIiIiCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBAX2NoZWNrX25hbWUKLSAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZSBhcyBmb3VuZCBieSB0aGUgZmluZGVyLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5wYXRoCi0KLQotY2xhc3MgX05hbWVzcGFjZVBhdGg6Ci0gICAgIiIiUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgcGF0aC4gIEl0IHVzZXMgdGhlIG1vZHVsZSBuYW1lCi0gICAgdG8gZmluZCBpdHMgcGFyZW50IG1vZHVsZSwgYW5kIGZyb20gdGhlcmUgaXQgbG9va3MgdXAgdGhlIHBhcmVudCdzCi0gICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCi0gICAgdXNpbmcgcGF0aF9maW5kZXIuICBGb3IgdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBwYXJlbnQgbW9kdWxlJ3MgcGF0aAotICAgIGlzIHN5cy5wYXRoLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKLSAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKLSAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHR1cGxlKHNlbGYuX2dldF9wYXJlbnRfcGF0aCgpKQotICAgICAgICBzZWxmLl9wYXRoX2ZpbmRlciA9IHBhdGhfZmluZGVyCi0KLSAgICBkZWYgX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiAocGFyZW50LW1vZHVsZS1uYW1lLCBwYXJlbnQtcGF0aC1hdHRyLW5hbWUpIiIiCi0gICAgICAgIHBhcmVudCwgZG90LCBtZSA9IHNlbGYuX25hbWUucnBhcnRpdGlvbignLicpCi0gICAgICAgIGlmIGRvdCA9PSAnJzoKLSAgICAgICAgICAgICMgVGhpcyBpcyBhIHRvcC1sZXZlbCBtb2R1bGUuIHN5cy5wYXRoIGNvbnRhaW5zIHRoZSBwYXJlbnQgcGF0aC4KLSAgICAgICAgICAgIHJldHVybiAnc3lzJywgJ3BhdGgnCi0gICAgICAgICMgTm90IGEgdG9wLWxldmVsIG1vZHVsZS4gcGFyZW50LW1vZHVsZS5fX3BhdGhfXyBjb250YWlucyB0aGUKLSAgICAgICAgIyAgcGFyZW50IHBhdGguCi0gICAgICAgIHJldHVybiBwYXJlbnQsICdfX3BhdGhfXycKLQotICAgIGRlZiBfZ2V0X3BhcmVudF9wYXRoKHNlbGYpOgotICAgICAgICBwYXJlbnRfbW9kdWxlX25hbWUsIHBhdGhfYXR0cl9uYW1lID0gc2VsZi5fZmluZF9wYXJlbnRfcGF0aF9uYW1lcygpCi0gICAgICAgIHJldHVybiBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhcmVudF9tb2R1bGVfbmFtZV0sIHBhdGhfYXR0cl9uYW1lKQotCi0gICAgZGVmIF9yZWNhbGN1bGF0ZShzZWxmKToKLSAgICAgICAgIyBJZiB0aGUgcGFyZW50J3MgcGF0aCBoYXMgY2hhbmdlZCwgcmVjYWxjdWxhdGUgX3BhdGgKLSAgICAgICAgcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkgIyBNYWtlIGEgY29weQotICAgICAgICBpZiBwYXJlbnRfcGF0aCAhPSBzZWxmLl9sYXN0X3BhcmVudF9wYXRoOgotICAgICAgICAgICAgc3BlYyA9IHNlbGYuX3BhdGhfZmluZGVyKHNlbGYuX25hbWUsIHBhcmVudF9wYXRoKQotICAgICAgICAgICAgIyBOb3RlIHRoYXQgbm8gY2hhbmdlcyBhcmUgbWFkZSBpZiBhIGxvYWRlciBpcyByZXR1cm5lZCwgYnV0IHdlCi0gICAgICAgICAgICAjICBkbyByZW1lbWJlciB0aGUgbmV3IHBhcmVudCBwYXRoCi0gICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBzcGVjLmxvYWRlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gcGFyZW50X3BhdGggICAgICMgU2F2ZSB0aGUgY29weQotICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4oc2VsZi5fcmVjYWxjdWxhdGUoKSkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdfTmFtZXNwYWNlUGF0aCh7IXJ9KScuZm9ybWF0KHNlbGYuX3BhdGgpCi0KLSAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgotICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLl9yZWNhbGN1bGF0ZSgpCi0KLSAgICBkZWYgYXBwZW5kKHNlbGYsIGl0ZW0pOgotICAgICAgICBzZWxmLl9wYXRoLmFwcGVuZChpdGVtKQotCi0KLSMgV2UgdXNlIHRoaXMgZXhjbHVzaXZlbHkgaW4gaW5pdF9tb2R1bGVfYXR0cnMoKSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eS4KLWNsYXNzIF9OYW1lc3BhY2VMb2FkZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKLSAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKLSAgICAgICAgIiIiUmV0dXJuIHJlcHIgZm9yIHRoZSBtb2R1bGUuCi0KLSAgICAgICAgVGhlIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVGhlIGltcG9ydCBtYWNoaW5lcnkgZG9lcyB0aGUgam9iIGl0c2VsZi4KLQotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICc8bW9kdWxlIHshcn0gKG5hbWVzcGFjZSk+Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQotCi0gICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIGdldF9zb3VyY2Uoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICByZXR1cm4gJycKLQotICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIHJldHVybiBjb21waWxlKCcnLCAnPHN0cmluZz4nLCAnZXhlYycsIGRvbnRfaW5oZXJpdD1UcnVlKQotCi0gICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgotCi0gICAgICAgICIiIgotICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCi0gICAgICAgIHJldHVybiBfbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKLQotCi0jIEZpbmRlcnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWNsYXNzIFBhdGhGaW5kZXI6Ci0KLSAgICAiIiJNZXRhIHBhdGggZmluZGVyIGZvciBzeXMucGF0aCBhbmQgcGFja2FnZSBfX3BhdGhfXyBhdHRyaWJ1dGVzLiIiIgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKGNscyk6Ci0gICAgICAgICIiIkNhbGwgdGhlIGludmFsaWRhdGVfY2FjaGVzKCkgbWV0aG9kIG9uIGFsbCBwYXRoIGVudHJ5IGZpbmRlcnMKLSAgICAgICAgc3RvcmVkIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlcyAod2hlcmUgaW1wbGVtZW50ZWQpLiIiIgotICAgICAgICBmb3IgZmluZGVyIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnZhbHVlcygpOgotICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdpbnZhbGlkYXRlX2NhY2hlcycpOgotICAgICAgICAgICAgICAgIGZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoKToKLSAgICAgICAgIiIiU2VhcmNoIHNlcXVlbmNlIG9mIGhvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLgotCi0gICAgICAgIElmICdob29rcycgaXMgZmFsc2UgdGhlbiB1c2Ugc3lzLnBhdGhfaG9va3MuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBzeXMucGF0aF9ob29rczoKLSAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBob29rKHBhdGgpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaW1wb3J0ZXJfY2FjaGUoY2xzLCBwYXRoKToKLSAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGVudHJ5IGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCi0KLSAgICAgICAgSWYgdGhlIHBhdGggZW50cnkgaXMgbm90IGluIHRoZSBjYWNoZSwgZmluZCB0aGUgYXBwcm9wcmlhdGUgZmluZGVyCi0gICAgICAgIGFuZCBjYWNoZSBpdC4gSWYgbm8gZmluZGVyIGlzIGF2YWlsYWJsZSwgc3RvcmUgTm9uZS4KLQotICAgICAgICAiIiIKLSAgICAgICAgaWYgcGF0aCA9PSAnJzoKLSAgICAgICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmluZGVyID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2hvb2tzKHBhdGgpCi0gICAgICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSA9IGZpbmRlcgotICAgICAgICByZXR1cm4gZmluZGVyCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX2xlZ2FjeV9nZXRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBmaW5kZXIpOgotICAgICAgICAjIFRoaXMgd291bGQgYmUgYSBnb29kIHBsYWNlIGZvciBhIERlcHJlY2F0aW9uV2FybmluZyBpZgotICAgICAgICAjIHdlIGVuZGVkIHVwIGdvaW5nIHRoYXQgcm91dGUuCi0gICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKLSAgICAgICAgICAgIGxvYWRlciwgcG9ydGlvbnMgPSBmaW5kZXIuZmluZF9sb2FkZXIoZnVsbG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgICAgICBwb3J0aW9ucyA9IFtdCi0gICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBzcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBsb2FkZXIpCi0gICAgICAgIHNwZWMgPSBNb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQotICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gcG9ydGlvbnMKLSAgICAgICAgcmV0dXJuIHNwZWMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJGaW5kIHRoZSBsb2FkZXIgb3IgbmFtZXNwYWNlX3BhdGggZm9yIHRoaXMgbW9kdWxlL3BhY2thZ2UgbmFtZS4iIiIKLSAgICAgICAgIyBJZiB0aGlzIGVuZHMgdXAgYmVpbmcgYSBuYW1lc3BhY2UgcGFja2FnZSwgbmFtZXNwYWNlX3BhdGggaXMKLSAgICAgICAgIyAgdGhlIGxpc3Qgb2YgcGF0aHMgdGhhdCB3aWxsIGJlY29tZSBpdHMgX19wYXRoX18KLSAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBbXQotICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGVudHJ5LCAoc3RyLCBieXRlcykpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCi0gICAgICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX3NwZWMnKToKLSAgICAgICAgICAgICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMoZnVsbG5hbWUsIHRhcmdldCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzcGVjID0gY2xzLl9sZWdhY3lfZ2V0X3NwZWMoZnVsbG5hbWUsIGZpbmRlcikKLSAgICAgICAgICAgICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgc3BlYy5sb2FkZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCi0gICAgICAgICAgICAgICAgcG9ydGlvbnMgPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCi0gICAgICAgICAgICAgICAgaWYgcG9ydGlvbnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3NwZWMgbWlzc2luZyBsb2FkZXInKQotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBwb3NzaWJseSBwYXJ0IG9mIGEgbmFtZXNwYWNlIHBhY2thZ2UuCi0gICAgICAgICAgICAgICAgIyAgUmVtZW1iZXIgdGhlc2UgcGF0aCBlbnRyaWVzIChpZiBhbnkpIGZvciB3aGVuIHdlCi0gICAgICAgICAgICAgICAgIyAgY3JlYXRlIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFuZCBjb250aW51ZSBpdGVyYXRpbmcKLSAgICAgICAgICAgICAgICAjICBvbiBwYXRoLgotICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9wYXRoLmV4dGVuZChwb3J0aW9ucykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNwZWMgPSBNb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQotICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IG5hbWVzcGFjZV9wYXRoCi0gICAgICAgICAgICByZXR1cm4gc3BlYwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiZmluZCB0aGUgbW9kdWxlIG9uIHN5cy5wYXRoIG9yICdwYXRoJyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQKLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCi0gICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAotICAgICAgICBzcGVjID0gY2xzLl9nZXRfc3BlYyhmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0KQotICAgICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIHNwZWMubG9hZGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBuYW1lc3BhY2VfcGF0aCA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKLSAgICAgICAgICAgIGlmIG5hbWVzcGFjZV9wYXRoOgotICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYXQgbGVhc3Qgb25lIG5hbWVzcGFjZSBwYXRoLiAgUmV0dXJuIGEKLSAgICAgICAgICAgICAgICAjICBzcGVjIHdoaWNoIGNhbiBjcmVhdGUgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgIHNwZWMub3JpZ2luID0gJ25hbWVzcGFjZScKLSAgICAgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gX05hbWVzcGFjZVBhdGgoZnVsbG5hbWUsIG5hbWVzcGFjZV9wYXRoLCBjbHMuX2dldF9zcGVjKQotICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc3BlYwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgotCi0gICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZmluZF9zcGVjKCkgaW5zdGVhZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc3BlYyA9IGNscy5maW5kX3NwZWMoZnVsbG5hbWUsIHBhdGgpCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzcGVjLmxvYWRlcgotCi0KLWNsYXNzIEZpbGVGaW5kZXI6Ci0KLSAgICAiIiJGaWxlLWJhc2VkIGZpbmRlci4KLQotICAgIEludGVyYWN0aW9ucyB3aXRoIHRoZSBmaWxlIHN5c3RlbSBhcmUgY2FjaGVkIGZvciBwZXJmb3JtYW5jZSwgYmVpbmcKLSAgICByZWZyZXNoZWQgd2hlbiB0aGUgZGlyZWN0b3J5IHRoZSBmaW5kZXIgaXMgaGFuZGxpbmcgaGFzIGJlZW4gbW9kaWZpZWQuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCAqbG9hZGVyX2RldGFpbHMpOgotICAgICAgICAiIiJJbml0aWFsaXplIHdpdGggdGhlIHBhdGggdG8gc2VhcmNoIG9uIGFuZCBhIHZhcmlhYmxlIG51bWJlciBvZgotICAgICAgICAyLXR1cGxlcyBjb250YWluaW5nIHRoZSBsb2FkZXIgYW5kIHRoZSBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIKLSAgICAgICAgcmVjb2duaXplcy4iIiIKLSAgICAgICAgbG9hZGVycyA9IFtdCi0gICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIGxvYWRlcl9kZXRhaWxzOgotICAgICAgICAgICAgbG9hZGVycy5leHRlbmQoKHN1ZmZpeCwgbG9hZGVyKSBmb3Igc3VmZml4IGluIHN1ZmZpeGVzKQotICAgICAgICBzZWxmLl9sb2FkZXJzID0gbG9hZGVycwotICAgICAgICAjIEJhc2UgKGRpcmVjdG9yeSkgcGF0aAotICAgICAgICBzZWxmLnBhdGggPSBwYXRoIG9yICcuJwotICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gLTEKLSAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IHNldCgpCi0gICAgICAgIHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZSA9IHNldCgpCi0KLSAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6Ci0gICAgICAgICIiIkludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBtdGltZS4iIiIKLSAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCi0KLSAgICBmaW5kX21vZHVsZSA9IF9maW5kX21vZHVsZV9zaGltCi0KLSAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKLSAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4KLQotICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNwZWMgPSBzZWxmLmZpbmRfc3BlYyhmdWxsbmFtZSkKLSAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFtdCi0gICAgICAgIHJldHVybiBzcGVjLmxvYWRlciwgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBvciBbXQotCi0gICAgZGVmIF9nZXRfc3BlYyhzZWxmLCBsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBwYXRoLCBzbXNsLCB0YXJnZXQpOgotICAgICAgICBsb2FkZXIgPSBsb2FkZXJfY2xhc3MoZnVsbG5hbWUsIHBhdGgpCi0gICAgICAgIHJldHVybiBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihmdWxsbmFtZSwgcGF0aCwgbG9hZGVyPWxvYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPXNtc2wpCi0KLSAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSwgb3IgdGhlIG5hbWVzcGFjZQotICAgICAgICBwYWNrYWdlIHBvcnRpb25zLiBSZXR1cm5zIChsb2FkZXIsIGxpc3Qtb2YtcG9ydGlvbnMpLiIiIgotICAgICAgICBpc19uYW1lc3BhY2UgPSBGYWxzZQotICAgICAgICB0YWlsX21vZHVsZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtdGltZSA9IF9wYXRoX3N0YXQoc2VsZi5wYXRoIG9yIF9vcy5nZXRjd2QoKSkuc3RfbXRpbWUKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBtdGltZSA9IC0xCi0gICAgICAgIGlmIG10aW1lICE9IHNlbGYuX3BhdGhfbXRpbWU6Ci0gICAgICAgICAgICBzZWxmLl9maWxsX2NhY2hlKCkKLSAgICAgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSBtdGltZQotICAgICAgICAjIHRhaWxfbW9kdWxlIGtlZXBzIHRoZSBvcmlnaW5hbCBjYXNpbmcsIGZvciBfX2ZpbGVfXyBhbmQgZnJpZW5kcwotICAgICAgICBpZiBfcmVsYXhfY2FzZSgpOgotICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUKLSAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlLmxvd2VyKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcGF0aF9jYWNoZQotICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUKLSAgICAgICAgIyBDaGVjayBpZiB0aGUgbW9kdWxlIGlzIHRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5IChhbmQgdGh1cyBhIHBhY2thZ2UpLgotICAgICAgICBpZiBjYWNoZV9tb2R1bGUgaW4gY2FjaGU6Ci0gICAgICAgICAgICBiYXNlX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUpCi0gICAgICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXJfY2xhc3MgaW4gc2VsZi5fbG9hZGVyczoKLSAgICAgICAgICAgICAgICBpbml0X2ZpbGVuYW1lID0gJ19faW5pdF9fJyArIHN1ZmZpeAotICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQotICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLCBbYmFzZV9wYXRoXSwgdGFyZ2V0KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIElmIGEgbmFtZXNwYWNlIHBhY2thZ2UsIHJldHVybiB0aGUgcGF0aCBpZiB3ZSBkb24ndAotICAgICAgICAgICAgICAgICMgIGZpbmQgYSBtb2R1bGUgaW4gdGhlIG5leHQgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICBpc19uYW1lc3BhY2UgPSBfcGF0aF9pc2RpcihiYXNlX3BhdGgpCi0gICAgICAgICMgQ2hlY2sgZm9yIGEgZmlsZSB3LyBhIHByb3BlciBzdWZmaXggZXhpc3RzLgotICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXJfY2xhc3MgaW4gc2VsZi5fbG9hZGVyczoKLSAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSArIHN1ZmZpeCkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScuZm9ybWF0KGZ1bGxfcGF0aCksIHZlcmJvc2l0eT0yKQotICAgICAgICAgICAgaWYgY2FjaGVfbW9kdWxlICsgc3VmZml4IGluIGNhY2hlOgotICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLCBOb25lLCB0YXJnZXQpCi0gICAgICAgIGlmIGlzX25hbWVzcGFjZToKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLmZvcm1hdChiYXNlX3BhdGgpKQotICAgICAgICAgICAgc3BlYyA9IE1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCi0gICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gW2Jhc2VfcGF0aF0KLSAgICAgICAgICAgIHJldHVybiBzcGVjCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgX2ZpbGxfY2FjaGUoc2VsZik6Ci0gICAgICAgICIiIkZpbGwgdGhlIGNhY2hlIG9mIHBvdGVudGlhbCBtb2R1bGVzIGFuZCBwYWNrYWdlcyBmb3IgdGhpcyBkaXJlY3RvcnkuIiIiCi0gICAgICAgIHBhdGggPSBzZWxmLnBhdGgKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29udGVudHMgPSBfb3MubGlzdGRpcihwYXRoIG9yIF9vcy5nZXRjd2QoKSkKLSAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yLCBOb3RBRGlyZWN0b3J5RXJyb3IpOgotICAgICAgICAgICAgIyBEaXJlY3RvcnkgaGFzIGVpdGhlciBiZWVuIHJlbW92ZWQsIHR1cm5lZCBpbnRvIGEgZmlsZSwgb3IgbWFkZQotICAgICAgICAgICAgIyB1bnJlYWRhYmxlLgotICAgICAgICAgICAgY29udGVudHMgPSBbXQotICAgICAgICAjIFdlIHN0b3JlIHR3byBjYWNoZWQgdmVyc2lvbnMsIHRvIGhhbmRsZSBydW50aW1lIGNoYW5nZXMgb2YgdGhlCi0gICAgICAgICMgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IHNldChjb250ZW50cykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgV2luZG93cyB1c2VycyBjYW4gaW1wb3J0IG1vZHVsZXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGUKLSAgICAgICAgICAgICMgc3VmZml4ZXMgKGZvciBsZWdhY3kgcmVhc29ucykuIE1ha2UgdGhlIHN1ZmZpeCBsb3dlcmNhc2UgaGVyZQotICAgICAgICAgICAgIyBzbyBpdCdzIGRvbmUgb25jZSBpbnN0ZWFkIG9mIGZvciBldmVyeSBpbXBvcnQuIFRoaXMgaXMgc2FmZSBhcwotICAgICAgICAgICAgIyB0aGUgc3BlY2lmaWVkIHN1ZmZpeGVzIHRvIGNoZWNrIGFnYWluc3QgYXJlIGFsd2F5cyBzcGVjaWZpZWQgaW4gYQotICAgICAgICAgICAgIyBjYXNlLXNlbnNpdGl2ZSBtYW5uZXIuCi0gICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMgPSBzZXQoKQotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gY29udGVudHM6Ci0gICAgICAgICAgICAgICAgbmFtZSwgZG90LCBzdWZmaXggPSBpdGVtLnBhcnRpdGlvbignLicpCi0gICAgICAgICAgICAgICAgaWYgZG90OgotICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9ICd7fS57fScuZm9ybWF0KG5hbWUsIHN1ZmZpeC5sb3dlcigpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG5ld19uYW1lID0gbmFtZQotICAgICAgICAgICAgICAgIGxvd2VyX3N1ZmZpeF9jb250ZW50cy5hZGQobmV3X25hbWUpCi0gICAgICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gbG93ZXJfc3VmZml4X2NvbnRlbnRzCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6Ci0gICAgICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSB7Zm4ubG93ZXIoKSBmb3IgZm4gaW4gY29udGVudHN9Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKLSAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKLSAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAotICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCi0KLSAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKLSAgICAgICAgcmFpc2VkLgotCi0gICAgICAgICIiIgotICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgotICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCi0gICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ29ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCcsIHBhdGg9cGF0aCkKLSAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQotCi0gICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdGaWxlRmluZGVyKHshcn0pJy5mb3JtYXQoc2VsZi5wYXRoKQotCi0KICMgSW1wb3J0IGl0c2VsZiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgX0ltcG9ydExvY2tDb250ZXh0OgpAQCAtMjE0Niw3ICs4NzgsNyBAQAogCiBkZWYgX2ZpbmRfc3BlYyhuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6CiAgICAgIiIiRmluZCBhIG1vZHVsZSdzIGxvYWRlci4iIiIKLSAgICBpZiBub3Qgc3lzLm1ldGFfcGF0aDoKKyAgICBpZiBzeXMubWV0YV9wYXRoIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLm1ldGFfcGF0aDoKICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5tZXRhX3BhdGggaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQogICAgICMgV2UgY2hlY2sgc3lzLm1vZHVsZXMgaGVyZSBmb3IgdGhlIHJlbG9hZCBjYXNlLiAgV2hpbGUgYSBwYXNzZWQtaW4KICAgICAjIHRhcmdldCB3aWxsIHVzdWFsbHkgaW5kaWNhdGUgYSByZWxvYWQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlLCB3aGVyZWFzCkBAIC0yMjE4LDEyICs5NTAsMTIgQEAKICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIG1zZyA9IChfRVJSX01TRyArICc7IHshcn0gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKSBmcm9tIE5vbmUKICAgICBzcGVjID0gX2ZpbmRfc3BlYyhuYW1lLCBwYXRoKQogICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCiAgICAgZWxzZToKLSAgICAgICAgbW9kdWxlID0gX1NwZWNNZXRob2RzKHNwZWMpLl9sb2FkX3VubG9ja2VkKCkKKyAgICAgICAgbW9kdWxlID0gX2xvYWRfdW5sb2NrZWQoc3BlYykKICAgICBpZiBwYXJlbnQ6CiAgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCiAgICAgICAgIHBhcmVudF9tb2R1bGUgPSBzeXMubW9kdWxlc1twYXJlbnRdCkBAIC0yMzA4LDE3ICsxMDQwLDYgQEAKICAgICByZXR1cm4gcGFja2FnZQogCiAKLWRlZiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKLSAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBmaWxlLWJhc2VkIG1vZHVsZSBsb2FkZXJzLgotCi0gICAgRWFjaCBpdGVtIGlzIGEgdHVwbGUgKGxvYWRlciwgc3VmZml4ZXMpLgotICAgICIiIgotICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCi0gICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCi0gICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKLSAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCi0KLQogZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhIG1vZHVsZS4KIApAQCAtMjM1OCw4ICsxMDc5LDcgQEAKICAgICBzcGVjID0gQnVpbHRpbkltcG9ydGVyLmZpbmRfc3BlYyhuYW1lKQogICAgIGlmIHNwZWMgaXMgTm9uZToKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIGJ1aWx0LWluIG1vZHVsZSBuYW1lZCAnICsgbmFtZSkKLSAgICBtZXRob2RzID0gX1NwZWNNZXRob2RzKHNwZWMpCi0gICAgcmV0dXJuIG1ldGhvZHMuX2xvYWRfdW5sb2NrZWQoKQorICAgIHJldHVybiBfbG9hZF91bmxvY2tlZChzcGVjKQogCiAKIGRlZiBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpOgpAQCAtMjM3MCwxNSArMTA5MCwxMCBAQAogICAgIG1vZHVsZXMsIHRob3NlIHR3byBtb2R1bGVzIG11c3QgYmUgZXhwbGljaXRseSBwYXNzZWQgaW4uCiAKICAgICAiIiIKLSAgICBnbG9iYWwgX2ltcCwgc3lzLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIGdsb2JhbCBfaW1wLCBzeXMKICAgICBfaW1wID0gX2ltcF9tb2R1bGUKICAgICBzeXMgPSBzeXNfbW9kdWxlCiAKLSAgICBpZiBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgIEJZVEVDT0RFX1NVRkZJWEVTID0gT1BUSU1JWkVEX0JZVEVDT0RFX1NVRkZJWEVTCi0gICAgZWxzZToKLSAgICAgICAgQllURUNPREVfU1VGRklYRVMgPSBERUJVR19CWVRFQ09ERV9TVUZGSVhFUwotCiAgICAgIyBTZXQgdXAgdGhlIHNwZWMgZm9yIGV4aXN0aW5nIGJ1aWx0aW4vZnJvemVuIG1vZHVsZXMuCiAgICAgbW9kdWxlX3R5cGUgPSB0eXBlKHN5cykKICAgICBmb3IgbmFtZSwgbW9kdWxlIGluIHN5cy5tb2R1bGVzLml0ZW1zKCk6CkBAIC0yMzkwLDM5ICsxMTA1LDE3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBzcGVjID0gX3NwZWNfZnJvbV9tb2R1bGUobW9kdWxlLCBsb2FkZXIpCi0gICAgICAgICAgICBtZXRob2RzID0gX1NwZWNNZXRob2RzKHNwZWMpCi0gICAgICAgICAgICBtZXRob2RzLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKKyAgICAgICAgICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUpCiAKICAgICAjIERpcmVjdGx5IGxvYWQgYnVpbHQtaW4gbW9kdWxlcyBuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcC4KICAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQotICAgIGZvciBidWlsdGluX25hbWUgaW4gKCdfaW8nLCAnX3dhcm5pbmdzJywgJ2J1aWx0aW5zJywgJ21hcnNoYWwnKToKKyAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX3dhcm5pbmdzJywpOgogICAgICAgICBpZiBidWlsdGluX25hbWUgbm90IGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgYnVpbHRpbl9tb2R1bGUgPSBfYnVpbHRpbl9mcm9tX25hbWUoYnVpbHRpbl9uYW1lKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYnVpbHRpbl9tb2R1bGUgPSBzeXMubW9kdWxlc1tidWlsdGluX25hbWVdCiAgICAgICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsIGJ1aWx0aW5fbmFtZSwgYnVpbHRpbl9tb2R1bGUpCiAKLSAgICAjIERpcmVjdGx5IGxvYWQgdGhlIG9zIG1vZHVsZSAobmVlZGVkIGR1cmluZyBib290c3RyYXApLgotICAgIG9zX2RldGFpbHMgPSAoJ3Bvc2l4JywgWycvJ10pLCAoJ250JywgWydcXCcsICcvJ10pCi0gICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgotICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKLSAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQotICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1swXQotICAgICAgICBpZiBidWlsdGluX29zIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgb3NfbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9vc10KLSAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3NfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKGJ1aWx0aW5fb3MpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdpbXBvcnRsaWIgcmVxdWlyZXMgcG9zaXggb3IgbnQnKQotICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfb3MnLCBvc19tb2R1bGUpCi0gICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwJywgcGF0aF9zZXApCi0gICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ3BhdGhfc2VwYXJhdG9ycycsICcnLmpvaW4ocGF0aF9zZXBhcmF0b3JzKSkKLQogICAgICMgRGlyZWN0bHkgbG9hZCB0aGUgX3RocmVhZCBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KICAgICB0cnk6CiAgICAgICAgIHRocmVhZF9tb2R1bGUgPSBfYnVpbHRpbl9mcm9tX25hbWUoJ190aHJlYWQnKQpAQCAtMjQzNSwyNyArMTEyOCwxNSBAQAogICAgIHdlYWtyZWZfbW9kdWxlID0gX2J1aWx0aW5fZnJvbV9uYW1lKCdfd2Vha3JlZicpCiAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ193ZWFrcmVmJywgd2Vha3JlZl9tb2R1bGUpCiAKLSAgICAjIERpcmVjdGx5IGxvYWQgdGhlIHdpbnJlZyBtb2R1bGUgKG5lZWRlZCBkdXJpbmcgYm9vdHN0cmFwKS4KLSAgICBpZiBidWlsdGluX29zID09ICdudCc6Ci0gICAgICAgIHdpbnJlZ19tb2R1bGUgPSBfYnVpbHRpbl9mcm9tX25hbWUoJ3dpbnJlZycpCi0gICAgICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2lucmVnJywgd2lucmVnX21vZHVsZSkKLQotICAgICMgQ29uc3RhbnRzCi0gICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19yZWxheF9jYXNlJywgX21ha2VfcmVsYXhfY2FzZSgpKQotICAgIEVYVEVOU0lPTl9TVUZGSVhFUy5leHRlbmQoX2ltcC5leHRlbnNpb25fc3VmZml4ZXMoKSkKLSAgICBpZiBidWlsdGluX29zID09ICdudCc6Ci0gICAgICAgIFNPVVJDRV9TVUZGSVhFUy5hcHBlbmQoJy5weXcnKQotICAgICAgICBpZiAnX2QucHlkJyBpbiBFWFRFTlNJT05fU1VGRklYRVM6Ci0gICAgICAgICAgICBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuREVCVUdfQlVJTEQgPSBUcnVlCi0KIAogZGVmIF9pbnN0YWxsKHN5c19tb2R1bGUsIF9pbXBfbW9kdWxlKToKICAgICAiIiJJbnN0YWxsIGltcG9ydGxpYiBhcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgogICAgIF9zZXR1cChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSkKLSAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCi0gICAgc3lzLnBhdGhfaG9va3MuZXh0ZW5kKFtGaWxlRmluZGVyLnBhdGhfaG9vaygqc3VwcG9ydGVkX2xvYWRlcnMpXSkKKwogICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKEJ1aWx0aW5JbXBvcnRlcikKICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChGcm96ZW5JbXBvcnRlcikKLSAgICBpZiBfb3MuX19uYW1lX18gPT0gJ250JzoKLSAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoV2luZG93c1JlZ2lzdHJ5RmluZGVyKQotICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFBhdGhGaW5kZXIpCisKKyAgICBnbG9iYWwgX2Jvb3RzdHJhcF9leHRlcm5hbAorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAorICAgIF9ib290c3RyYXBfZXh0ZXJuYWwgPSBfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbAorICAgIF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsLl9pbnN0YWxsKHN5cy5tb2R1bGVzW19fbmFtZV9fXSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTA4Y2U5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CkBAIC0wLDAgKzEsMTQyNiBAQAorIiIiQ29yZSBpbXBsZW1lbnRhdGlvbiBvZiBwYXRoLWJhc2VkIGltcG9ydC4KKworVGhpcyBtb2R1bGUgaXMgTk9UIG1lYW50IHRvIGJlIGRpcmVjdGx5IGltcG9ydGVkISBJdCBoYXMgYmVlbiBkZXNpZ25lZCBzdWNoCit0aGF0IGl0IGNhbiBiZSBib290c3RyYXBwZWQgaW50byBQeXRob24gYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4gQXMKK3N1Y2ggaXQgcmVxdWlyZXMgdGhlIGluamVjdGlvbiBvZiBzcGVjaWZpYyBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGluIG9yZGVyIHRvCit3b3JrLiBPbmUgc2hvdWxkIHVzZSBpbXBvcnRsaWIgYXMgdGhlIHB1YmxpYy1mYWNpbmcgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZS4KKworIiIiCisjCisjIElNUE9SVEFOVDogV2hlbmV2ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhpcyBtb2R1bGUsIGJlIHN1cmUgdG8gcnVuCisjIGEgdG9wLWxldmVsIG1ha2UgaW4gb3JkZXIgdG8gZ2V0IHRoZSBmcm96ZW4gdmVyc2lvbiBvZiB0aGUgbW9kdWxlCisjIHVwZGF0ZWQuIE5vdCBkb2luZyBzbyB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKKyMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQorIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgorIworCisjIFNlZSBpbXBvcnRsaWIuX3NldHVwKCkgZm9yIHdoYXQgaXMgaW5qZWN0ZWQgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKworIyBXaGVuIGVkaXRpbmcgdGhpcyBjb2RlIGJlIGF3YXJlIHRoYXQgY29kZSBleGVjdXRlZCBhdCBpbXBvcnQgdGltZSBDQU5OT1QKKyMgcmVmZXJlbmNlIGFueSBpbmplY3RlZCBvYmplY3RzISBUaGlzIGluY2x1ZGVzIG5vdCBvbmx5IGdsb2JhbCBjb2RlIGJ1dCBhbHNvCisjIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCisKKyMgQm9vdHN0cmFwLXJlbGF0ZWQgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJworCisKK2RlZiBfbWFrZV9yZWxheF9jYXNlKCk6CisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TKToKKyAgICAgICAgZGVmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICAiIiJUcnVlIGlmIGZpbGVuYW1lcyBtdXN0IGJlIGNoZWNrZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiIiIgorICAgICAgICAgICAgcmV0dXJuIGInUFlUSE9OQ0FTRU9LJyBpbiBfb3MuZW52aXJvbgorICAgIGVsc2U6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBfcmVsYXhfY2FzZQorCisKK2RlZiBfd19sb25nKHgpOgorICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLiIiIgorICAgIHJldHVybiAoaW50KHgpICYgMHhGRkZGRkZGRikudG9fYnl0ZXMoNCwgJ2xpdHRsZScpCisKKworZGVmIF9yX2xvbmcoaW50X2J5dGVzKToKKyAgICAiIiJDb252ZXJ0IDQgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiB0byBhbiBpbnRlZ2VyLiIiIgorICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhpbnRfYnl0ZXMsICdsaXR0bGUnKQorCisKK2RlZiBfcGF0aF9qb2luKCpwYXRoX3BhcnRzKToKKyAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5qb2luKCkuIiIiCisgICAgcmV0dXJuIHBhdGhfc2VwLmpvaW4oW3BhcnQucnN0cmlwKHBhdGhfc2VwYXJhdG9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0cyBpZiBwYXJ0XSkKKworCitkZWYgX3BhdGhfc3BsaXQocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguc3BsaXQoKS4iIiIKKyAgICBpZiBsZW4ocGF0aF9zZXBhcmF0b3JzKSA9PSAxOgorICAgICAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihwYXRoX3NlcCkKKyAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCisgICAgZm9yIHggaW4gcmV2ZXJzZWQocGF0aCk6CisgICAgICAgIGlmIHggaW4gcGF0aF9zZXBhcmF0b3JzOgorICAgICAgICAgICAgZnJvbnQsIHRhaWwgPSBwYXRoLnJzcGxpdCh4LCBtYXhzcGxpdD0xKQorICAgICAgICAgICAgcmV0dXJuIGZyb250LCB0YWlsCisgICAgcmV0dXJuICcnLCBwYXRoCisKKworZGVmIF9wYXRoX3N0YXQocGF0aCk6CisgICAgIiIiU3RhdCB0aGUgcGF0aC4KKworICAgIE1hZGUgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBtYWtlIGl0IGVhc2llciB0byBvdmVycmlkZSBpbiBleHBlcmltZW50cworICAgIChlLmcuIGNhY2hlIHN0YXQgcmVzdWx0cykuCisKKyAgICAiIiIKKyAgICByZXR1cm4gX29zLnN0YXQocGF0aCkKKworCitkZWYgX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIG1vZGUpOgorICAgICIiIlRlc3Qgd2hldGhlciB0aGUgcGF0aCBpcyB0aGUgc3BlY2lmaWVkIG1vZGUgdHlwZS4iIiIKKyAgICB0cnk6CisgICAgICAgIHN0YXRfaW5mbyA9IF9wYXRoX3N0YXQocGF0aCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIChzdGF0X2luZm8uc3RfbW9kZSAmIDBvMTcwMDAwKSA9PSBtb2RlCisKKworZGVmIF9wYXRoX2lzZmlsZShwYXRoKToKKyAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5pc2ZpbGUuIiIiCisgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzEwMDAwMCkKKworCitkZWYgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguaXNkaXIuIiIiCisgICAgaWYgbm90IHBhdGg6CisgICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKKyAgICByZXR1cm4gX3BhdGhfaXNfbW9kZV90eXBlKHBhdGgsIDBvMDQwMDAwKQorCisKK2RlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgorICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCisgICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKKyAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCisgICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgorICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCisgICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKKyAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQorICAgIHRyeToKKyAgICAgICAgIyBXZSBmaXJzdCB3cml0ZSBkYXRhIHRvIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCB0aGVuIHVzZSBvcy5yZXBsYWNlKCkgdG8KKyAgICAgICAgIyBwZXJmb3JtIGFuIGF0b21pYyByZW5hbWUuCisgICAgICAgIHdpdGggX2lvLkZpbGVJTyhmZCwgJ3diJykgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoZGF0YSkKKyAgICAgICAgX29zLnJlcGxhY2UocGF0aF90bXAsIHBhdGgpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcy51bmxpbmsocGF0aF90bXApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICByYWlzZQorCisKK19jb2RlX3R5cGUgPSB0eXBlKF93cml0ZV9hdG9taWMuX19jb2RlX18pCisKKworIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIE1hZ2ljIHdvcmQgdG8gcmVqZWN0IC5weWMgZmlsZXMgZ2VuZXJhdGVkIGJ5IG90aGVyIFB5dGhvbiB2ZXJzaW9ucy4KKyMgSXQgc2hvdWxkIGNoYW5nZSBmb3IgZWFjaCBpbmNvbXBhdGlibGUgY2hhbmdlIHRvIHRoZSBieXRlY29kZS4KKyMKKyMgVGhlIHZhbHVlIG9mIENSIGFuZCBMRiBpcyBpbmNvcnBvcmF0ZWQgc28gaWYgeW91IGV2ZXIgcmVhZCBvciB3cml0ZQorIyBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKKyMgQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KKyMKKyMgVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQorIyAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCisjIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgorIworIyBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgorIyBUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5CisjIDEwLgorIworIyBTdGFydGluZyB3aXRoIHRoZSBhZG9wdGlvbiBvZiBQRVAgMzE0NyBpbiBQeXRob24gMy4yLCBldmVyeSBidW1wIGluIG1hZ2ljCisjIG51bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKKyMgdG8gcmVwcmVzZW50IHRoZSBtYWdpYyBudW1iZXIgaW4gX19weWNhY2hlX18gZGlyZWN0b3JpZXMuICBXaGVuIHlvdSBjaGFuZ2UKKyMgdGhlIG1hZ2ljIG51bWJlciwgeW91IG11c3QgYWxzbyBzZXQgYSBuZXcgdW5pcXVlIG1hZ2ljIHRhZy4gIEdlbmVyYWxseSB0aGlzCisjIGNhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKKyMgaXQgY2FuIHJlYWxseSBiZSBhbnl0aGluZywgYXMgbG9uZyBhcyBpdCdzIGRpZmZlcmVudCB0aGFuIGFueXRoaW5nIGVsc2UKKyMgdGhhdCdzIGNvbWUgYmVmb3JlLiAgVGhlIHRhZ3MgYXJlIGluY2x1ZGVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUsIHN0YXJ0aW5nCisjIHdpdGggUHl0aG9uIDMuMmEwLgorIworIyBLbm93biB2YWx1ZXM6CisjICBQeXRob24gMS41OiAgIDIwMTIxCisjICBQeXRob24gMS41LjE6IDIwMTIxCisjICAgICBQeXRob24gMS41LjI6IDIwMTIxCisjICAgICBQeXRob24gMS42OiAgIDUwNDI4CisjICAgICBQeXRob24gMi4wOiAgIDUwODIzCisjICAgICBQeXRob24gMi4wLjE6IDUwODIzCisjICAgICBQeXRob24gMi4xOiAgIDYwMjAyCisjICAgICBQeXRob24gMi4xLjE6IDYwMjAyCisjICAgICBQeXRob24gMi4xLjI6IDYwMjAyCisjICAgICBQeXRob24gMi4yOiAgIDYwNzE3CisjICAgICBQeXRob24gMi4zYTA6IDYyMDExCisjICAgICBQeXRob24gMi4zYTA6IDYyMDIxCisjICAgICBQeXRob24gMi4zYTA6IDYyMDExICghKQorIyAgICAgUHl0aG9uIDIuNGEwOiA2MjA0MQorIyAgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQorIyAgICAgUHl0aG9uIDIuNGIxOiA2MjA2MQorIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA3MQorIyAgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKKyMgICAgIFB5dGhvbiAyLjVhMDogNjIwOTEgKHdpdGgpCisjICAgICBQeXRob24gMi41YTA6IDYyMDkyIChjaGFuZ2VkIFdJVEhfQ0xFQU5VUCBvcGNvZGUpCisjICAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKKyMgICAgIFB5dGhvbiAyLjViMzogNjIxMTEgKGZpeCB3cm9uZyBjb2RlOiB4ICs9IHlpZWxkKQorIyAgICAgUHl0aG9uIDIuNWMxOiA2MjEyMSAoZml4IHdyb25nIGxub3RhYiB3aXRoIGZvciBsb29wcyBhbmQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQorIyAgICAgUHl0aG9uIDIuNWMyOiA2MjEzMSAoZml4IHdyb25nIGNvZGU6IGZvciB4LCBpbiAuLi4gaW4gbGlzdGNvbXAvZ2VuZXhwKQorIyAgICAgUHl0aG9uIDIuNmEwOiA2MjE1MSAocGVlcGhvbGUgb3B0aW1pemF0aW9ucyBhbmQgU1RPUkVfTUFQIG9wY29kZSkKKyMgICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCisjICAgICBQeXRob24gMi43YTA6IDYyMTcxIChvcHRpbWl6ZSBsaXN0IGNvbXByZWhlbnNpb25zL2NoYW5nZSBMSVNUX0FQUEVORCkKKyMgICAgIFB5dGhvbiAyLjdhMDogNjIxODEgKG9wdGltaXplIGNvbmRpdGlvbmFsIGJyYW5jaGVzOgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cm9kdWNlIFBPUF9KVU1QX0lGX0ZBTFNFIGFuZCBQT1BfSlVNUF9JRl9UUlVFKQorIyAgICAgUHl0aG9uIDIuN2EwICA2MjE5MSAoaW50cm9kdWNlIFNFVFVQX1dJVEgpCisjICAgICBQeXRob24gMi43YTAgIDYyMjAxIChpbnRyb2R1Y2UgQlVJTERfU0VUKQorIyAgICAgUHl0aG9uIDIuN2EwICA2MjIxMSAoaW50cm9kdWNlIE1BUF9BREQgYW5kIFNFVF9BREQpCisjICAgICBQeXRob24gMzAwMDogICAzMDAwCisjICAgICAgICAgICAgICAgICAgICAzMDEwIChyZW1vdmVkIFVOQVJZX0NPTlZFUlQpCisjICAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCisjICAgICAgICAgICAgICAgICAgICAzMDMwIChhZGRlZCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycykKKyMgICAgICAgICAgICAgICAgICAgIDMwNDAgKGFkZGVkIHNpZ25hdHVyZSBhbm5vdGF0aW9ucykKKyMgICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKKyMgICAgICAgICAgICAgICAgICAgIDMwNjAgKFBFUCAzMTE1IG1ldGFjbGFzcyBzeW50YXgpCisjICAgICAgICAgICAgICAgICAgICAzMDYxIChzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIHVuaWNvZGUpCisjICAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQorIyAgICAgICAgICAgICAgICAgICAgMzA4MSAoUEVQIDMxMzcgbWFrZSBfX2ZpbGVfXyBhbmQgX19uYW1lX18gdW5pY29kZSkKKyMgICAgICAgICAgICAgICAgICAgIDMwOTEgKGtpbGwgc3RyOCBpbnRlcm5pbmcpCisjICAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCisjICAgICAgICAgICAgICAgICAgICAzMTAzIChfX2ZpbGVfXyBwb2ludHMgdG8gc291cmNlIGZpbGUpCisjICAgICBQeXRob24gMy4wYTQ6IDMxMTEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pLgorIyAgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCisjICAgICBQeXRob24gMy4xYTA6IDMxNDEgKG9wdGltaXplIGxpc3QsIHNldCBhbmQgZGljdCBjb21wcmVoZW5zaW9uczoKKyMgICAgICAgICAgICAgY2hhbmdlIExJU1RfQVBQRU5EIGFuZCBTRVRfQURELCBhZGQgTUFQX0FERCkKKyMgICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6CisjICAgICAgICAgICAgIGludHJvZHVjZSBQT1BfSlVNUF9JRl9GQUxTRSBhbmQgUE9QX0pVTVBfSUZfVFJVRSkKKyMgICAgIFB5dGhvbiAzLjJhMDogMzE2MCAoYWRkIFNFVFVQX1dJVEgpCisjICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorIyAgICAgUHl0aG9uIDMuMmExOiAzMTcwIChhZGQgRFVQX1RPUF9UV08sIHJlbW92ZSBEVVBfVE9QWCBhbmQgUk9UX0ZPVVIpCisjICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorIyAgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQorIyAgICAgUHl0aG9uIDMuM2EwICAzMTkwIF9fY2xhc3NfXyBzdXBlciBjbG9zdXJlIGNoYW5nZWQKKyMgICAgIFB5dGhvbiAzLjNhMCAgMzIwMCAoX19xdWFsbmFtZV9fIGFkZGVkKQorIyAgICAgICAgICAgICAgICAgICAgICAzMjEwIChhZGRlZCBzaXplIG1vZHVsbyAyKiozMiB0byB0aGUgcHljIGhlYWRlcikKKyMgICAgIFB5dGhvbiAzLjNhMSAgMzIyMCAoY2hhbmdlZCBQRVAgMzgwIGltcGxlbWVudGF0aW9uKQorIyAgICAgUHl0aG9uIDMuM2E0ICAzMjMwIChyZXZlcnQgY2hhbmdlcyB0byBpbXBsaWNpdCBfX2NsYXNzX18gY2xvc3VyZSkKKyMgICAgIFB5dGhvbiAzLjRhMSAgMzI1MCAoZXZhbHVhdGUgcG9zaXRpb25hbCBkZWZhdWx0IGFyZ3VtZW50cyBiZWZvcmUKKyMgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLW9ubHkgZGVmYXVsdHMpCisjICAgICBQeXRob24gMy40YTEgIDMyNjAgKGFkZCBMT0FEX0NMQVNTREVSRUY7IGFsbG93IGxvY2FscyBvZiBjbGFzcyB0byBvdmVycmlkZQorIyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUgdmFycykKKyMgICAgIFB5dGhvbiAzLjRhMSAgMzI3MCAodmFyaW91cyB0d2Vha3MgdG8gdGhlIF9fY2xhc3NfXyBjbG9zdXJlKQorIyAgICAgUHl0aG9uIDMuNGExICAzMjgwIChyZW1vdmUgaW1wbGljaXQgY2xhc3MgYXJndW1lbnQpCisjICAgICBQeXRob24gMy40YTQgIDMyOTAgKGNoYW5nZXMgdG8gX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQorIyAgICAgUHl0aG9uIDMuNGE0ICAzMzAwIChtb3JlIGNoYW5nZXMgdG8gX19xdWFsbmFtZV9fIGNvbXB1dGF0aW9uKQorIyAgICAgUHl0aG9uIDMuNHJjMiAzMzEwIChhbHRlciBfX3F1YWxuYW1lX18gY29tcHV0YXRpb24pCisjICAgICBQeXRob24gMy41YTAgIDMzMjAgKG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRvcikKKyMgICAgIFB5dGhvbiAzLjViMSAgMzMzMCAoUEVQIDQ0ODogQWRkaXRpb25hbCBVbnBhY2tpbmcgR2VuZXJhbGl6YXRpb25zKQorIyAgICAgUHl0aG9uIDMuNWIyICAzMzQwIChmaXggZGljdGlvbmFyeSBkaXNwbGF5IGV2YWx1YXRpb24gb3JkZXIgIzExMjA1KQorIyAgICAgUHl0aG9uIDMuNWIyICAzMzUwIChhZGQgR0VUX1lJRUxEX0ZST01fSVRFUiBvcGNvZGUgIzI0NDAwKQorIworIyBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCisjIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5CisjIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpLgorCitNQUdJQ19OVU1CRVIgPSAoMzM1MCkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJworX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKKworX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCitfT1BUID0gJ29wdC0nCisKK1NPVVJDRV9TVUZGSVhFUyA9IFsnLnB5J10gICMgX3NldHVwKCkgYWRkcyAucHl3IGFzIG5lZWRlZC4KKworQllURUNPREVfU1VGRklYRVMgPSBbJy5weWMnXQorIyBEZXByZWNhdGVkLgorREVCVUdfQllURUNPREVfU1VGRklYRVMgPSBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMgPSBCWVRFQ09ERV9TVUZGSVhFUworCitkZWYgY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgZGVidWdfb3ZlcnJpZGU9Tm9uZSwgKiwgb3B0aW1pemF0aW9uPU5vbmUpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgLnB5YyBmaWxlLgorCisgICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCisgICAgLnB5YyBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuCisKKyAgICBUaGUgJ29wdGltaXphdGlvbicgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBwcmVzdW1lZCBvcHRpbWl6YXRpb24gbGV2ZWwgb2YKKyAgICB0aGUgYnl0ZWNvZGUgZmlsZS4gSWYgJ29wdGltaXphdGlvbicgaXMgbm90IE5vbmUsIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24KKyAgICBvZiB0aGUgYXJndW1lbnQgaXMgdGFrZW4gYW5kIHZlcmlmaWVkIHRvIGJlIGFscGhhbnVtZXJpYyAoZWxzZSBWYWx1ZUVycm9yCisgICAgaXMgcmFpc2VkKS4KKworICAgIFRoZSBkZWJ1Z19vdmVycmlkZSBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZC4gSWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsCisgICAgYSBUcnVlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgJ29wdGltaXphdGlvbicgdG8gdGhlIGVtcHR5IHN0cmluZworICAgIHdoaWxlIGEgRmFsc2UgdmFsdWUgaXMgZXF1aXZhbGVudCB0byBzZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvICcxJy4KKworICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgorCisgICAgIiIiCisgICAgaWYgZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmU6CisgICAgICAgIF93YXJuaW5ncy53YXJuKCd0aGUgZGVidWdfb3ZlcnJpZGUgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnCisgICAgICAgICAgICAgICAgICAgICAgICInb3B0aW1pemF0aW9uJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBpZiBvcHRpbWl6YXRpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtZXNzYWdlID0gJ2RlYnVnX292ZXJyaWRlIG9yIG9wdGltaXphdGlvbiBtdXN0IGJlIHNldCB0byBOb25lJworICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCisgICAgICAgIG9wdGltaXphdGlvbiA9ICcnIGlmIGRlYnVnX292ZXJyaWRlIGVsc2UgMQorICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQorICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCisgICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgIGlmIHRhZyBpcyBOb25lOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIGFsbW9zdF9maWxlbmFtZSA9ICcnLmpvaW4oWyhiYXNlIGlmIGJhc2UgZWxzZSByZXN0KSwgc2VwLCB0YWddKQorICAgIGlmIG9wdGltaXphdGlvbiBpcyBOb25lOgorICAgICAgICBpZiBzeXMuZmxhZ3Mub3B0aW1pemUgPT0gMDoKKyAgICAgICAgICAgIG9wdGltaXphdGlvbiA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcHRpbWl6YXRpb24gPSBzeXMuZmxhZ3Mub3B0aW1pemUKKyAgICBvcHRpbWl6YXRpb24gPSBzdHIob3B0aW1pemF0aW9uKQorICAgIGlmIG9wdGltaXphdGlvbiAhPSAnJzoKKyAgICAgICAgaWYgbm90IG9wdGltaXphdGlvbi5pc2FsbnVtKCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhbHBoYW51bWVyaWMnLmZvcm1hdChvcHRpbWl6YXRpb24pKQorICAgICAgICBhbG1vc3RfZmlsZW5hbWUgPSAne30ue317fScuZm9ybWF0KGFsbW9zdF9maWxlbmFtZSwgX09QVCwgb3B0aW1pemF0aW9uKQorICAgIHJldHVybiBfcGF0aF9qb2luKGhlYWQsIF9QWUNBQ0hFLCBhbG1vc3RfZmlsZW5hbWUgKyBCWVRFQ09ERV9TVUZGSVhFU1swXSkKKworCitkZWYgc291cmNlX2Zyb21fY2FjaGUocGF0aCk6CisgICAgIiIiR2l2ZW4gdGhlIHBhdGggdG8gYSAucHljLiBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgorCisgICAgVGhlIC5weWMgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0OyB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSBwYXRoIHRvCisgICAgdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5YyBmaWxlLiAgSWYgcGF0aCBkb2VzCisgICAgbm90IGNvbmZvcm0gdG8gUEVQIDMxNDcvNDg4IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYKKyAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBoZWFkLCBweWNhY2hlX2ZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBoZWFkLCBweWNhY2hlID0gX3BhdGhfc3BsaXQoaGVhZCkKKyAgICBpZiBweWNhY2hlICE9IF9QWUNBQ0hFOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBub3QgYm90dG9tLWxldmVsIGRpcmVjdG9yeSBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChfUFlDQUNIRSwgcGF0aCkpCisgICAgZG90X2NvdW50ID0gcHljYWNoZV9maWxlbmFtZS5jb3VudCgnLicpCisgICAgaWYgZG90X2NvdW50IG5vdCBpbiB7MiwgM306CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4cGVjdGVkIG9ubHkgMiBvciAzIGRvdHMgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICd7IXJ9Jy5mb3JtYXQocHljYWNoZV9maWxlbmFtZSkpCisgICAgZWxpZiBkb3RfY291bnQgPT0gMzoKKyAgICAgICAgb3B0aW1pemF0aW9uID0gcHljYWNoZV9maWxlbmFtZS5yc3BsaXQoJy4nLCAyKVstMl0KKyAgICAgICAgaWYgbm90IG9wdGltaXphdGlvbi5zdGFydHN3aXRoKF9PUFQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib3B0aW1pemF0aW9uIHBvcnRpb24gb2YgZmlsZW5hbWUgZG9lcyBub3Qgc3RhcnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aCB7IXJ9Ii5mb3JtYXQoX09QVCkpCisgICAgICAgIG9wdF9sZXZlbCA9IG9wdGltaXphdGlvbltsZW4oX09QVCk6XQorICAgICAgICBpZiBub3Qgb3B0X2xldmVsLmlzYWxudW0oKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm9wdGltaXphdGlvbiBsZXZlbCB7IXJ9IGlzIG5vdCBhbiBhbHBoYW51bWVyaWMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiLmZvcm1hdChvcHRpbWl6YXRpb24pKQorICAgIGJhc2VfZmlsZW5hbWUgPSBweWNhY2hlX2ZpbGVuYW1lLnBhcnRpdGlvbignLicpWzBdCisgICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgYmFzZV9maWxlbmFtZSArIFNPVVJDRV9TVUZGSVhFU1swXSkKKworCitkZWYgX2dldF9zb3VyY2VmaWxlKGJ5dGVjb2RlX3BhdGgpOgorICAgICIiIkNvbnZlcnQgYSBieXRlY29kZSBmaWxlIHBhdGggdG8gYSBzb3VyY2UgcGF0aCAoaWYgcG9zc2libGUpLgorCisgICAgVGhpcyBmdW5jdGlvbiBleGlzdHMgcHVyZWx5IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IKKyAgICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhGaWxlbmFtZXMoKSBpbiB0aGUgQyBBUEkuCisKKyAgICAiIiIKKyAgICBpZiBsZW4oYnl0ZWNvZGVfcGF0aCkgPT0gMDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXN0LCBfLCBleHRlbnNpb24gPSBieXRlY29kZV9wYXRoLnJwYXJ0aXRpb24oJy4nKQorICAgIGlmIG5vdCByZXN0IG9yIGV4dGVuc2lvbi5sb3dlcigpWy0zOi0xXSAhPSAncHknOgorICAgICAgICByZXR1cm4gYnl0ZWNvZGVfcGF0aAorICAgIHRyeToKKyAgICAgICAgc291cmNlX3BhdGggPSBzb3VyY2VfZnJvbV9jYWNoZShieXRlY29kZV9wYXRoKQorICAgIGV4Y2VwdCAoTm90SW1wbGVtZW50ZWRFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHNvdXJjZV9wYXRoID0gYnl0ZWNvZGVfcGF0aFs6LTFdCisgICAgcmV0dXJuIHNvdXJjZV9wYXRoIGlmIF9wYXRoX2lzZmlsZShzb3VyY2VfcGF0aCkgZWxzZSBieXRlY29kZV9wYXRoCisKKworZGVmIF9nZXRfY2FjaGVkKGZpbGVuYW1lKToKKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCh0dXBsZShTT1VSQ0VfU1VGRklYRVMpKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGNhY2hlX2Zyb21fc291cmNlKGZpbGVuYW1lKQorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICBlbGlmIGZpbGVuYW1lLmVuZHN3aXRoKHR1cGxlKEJZVEVDT0RFX1NVRkZJWEVTKSk6CisgICAgICAgIHJldHVybiBmaWxlbmFtZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBOb25lCisKKworZGVmIF9jYWxjX21vZGUocGF0aCk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBtb2RlIHBlcm1pc3Npb25zIGZvciBhIGJ5dGVjb2RlIGZpbGUuIiIiCisgICAgdHJ5OgorICAgICAgICBtb2RlID0gX3BhdGhfc3RhdChwYXRoKS5zdF9tb2RlCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIG1vZGUgPSAwbzY2NgorICAgICMgV2UgYWx3YXlzIGVuc3VyZSB3cml0ZSBhY2Nlc3Mgc28gd2UgY2FuIHVwZGF0ZSBjYWNoZWQgZmlsZXMKKyAgICAjIGxhdGVyIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGVzIGFyZSByZWFkLW9ubHkgb24gV2luZG93cyAoIzYwNzQpCisgICAgbW9kZSB8PSAwbzIwMAorICAgIHJldHVybiBtb2RlCisKKworZGVmIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSwgKmFyZ3MsIHZlcmJvc2l0eT0xKToKKyAgICAiIiJQcmludCB0aGUgbWVzc2FnZSB0byBzdGRlcnIgaWYgLXYvUFlUSE9OVkVSQk9TRSBpcyB0dXJuZWQgb24uIiIiCisgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2UgPj0gdmVyYm9zaXR5OgorICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgorICAgICAgICAgICAgbWVzc2FnZSA9ICcjICcgKyBtZXNzYWdlCisgICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQorCisKK2RlZiBfY2hlY2tfbmFtZShtZXRob2QpOgorICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCisgICAgbG9hZGVyIGNhbiBoYW5kbGUuCisKKyAgICBUaGUgZmlyc3QgYXJndW1lbnQgKHNlbGYpIG11c3QgZGVmaW5lIF9uYW1lIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKKyAgICBjb21wYXJlZCBhZ2FpbnN0LiBJZiB0aGUgY29tcGFyaXNvbiBmYWlscyB0aGVuIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGRlZiBfY2hlY2tfbmFtZV93cmFwcGVyKHNlbGYsIG5hbWU9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYubmFtZQorICAgICAgICBlbGlmIHNlbGYubmFtZSAhPSBuYW1lOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlciBmb3IgJXMgY2Fubm90IGhhbmRsZSAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uYW1lLCBuYW1lKSwgbmFtZT1uYW1lKQorICAgICAgICByZXR1cm4gbWV0aG9kKHNlbGYsIG5hbWUsICphcmdzLCAqKmt3YXJncykKKyAgICB0cnk6CisgICAgICAgIF93cmFwID0gX2Jvb3RzdHJhcC5fd3JhcAorICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICMgWFhYIHl1Y2sKKyAgICAgICAgZGVmIF93cmFwKG5ldywgb2xkKToKKyAgICAgICAgICAgIGZvciByZXBsYWNlIGluIFsnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXyddOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIob2xkLCByZXBsYWNlKToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKKyAgICAgICAgICAgIG5ldy5fX2RpY3RfXy51cGRhdGUob2xkLl9fZGljdF9fKQorICAgIF93cmFwKF9jaGVja19uYW1lX3dyYXBwZXIsIG1ldGhvZCkKKyAgICByZXR1cm4gX2NoZWNrX25hbWVfd3JhcHBlcgorCisKK2RlZiBfZmluZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSk6CisgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGJ5IGRlbGVnYXRpbmcgdG8KKyAgICBzZWxmLmZpbmRfbG9hZGVyKCkuCisKKyAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGZpbmRlci5maW5kX3NwZWMoKS4KKworICAgICIiIgorICAgICMgQ2FsbCBmaW5kX2xvYWRlcigpLiBJZiBpdCByZXR1cm5zIGEgc3RyaW5nIChpbmRpY2F0aW5nIHRoaXMKKyAgICAjIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UgcG9ydGlvbiksIGdlbmVyYXRlIGEgd2FybmluZyBhbmQKKyAgICAjIHJldHVybiBOb25lLgorICAgIGxvYWRlciwgcG9ydGlvbnMgPSBzZWxmLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQorICAgIGlmIGxvYWRlciBpcyBOb25lIGFuZCBsZW4ocG9ydGlvbnMpOgorICAgICAgICBtc2cgPSAnTm90IGltcG9ydGluZyBkaXJlY3Rvcnkge306IG1pc3NpbmcgX19pbml0X18nCisgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQocG9ydGlvbnNbMF0pLCBJbXBvcnRXYXJuaW5nKQorICAgIHJldHVybiBsb2FkZXIKKworCitkZWYgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihkYXRhLCBzb3VyY2Vfc3RhdHM9Tm9uZSwgbmFtZT1Ob25lLCBwYXRoPU5vbmUpOgorICAgICIiIlZhbGlkYXRlIHRoZSBoZWFkZXIgb2YgdGhlIHBhc3NlZC1pbiBieXRlY29kZSBhZ2FpbnN0IHNvdXJjZV9zdGF0cyAoaWYKKyAgICBnaXZlbikgYW5kIHJldHVybmluZyB0aGUgYnl0ZWNvZGUgdGhhdCBjYW4gYmUgY29tcGlsZWQgYnkgY29tcGlsZSgpLgorCisgICAgQWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgdXNlZCB0byBlbmhhbmNlIGVycm9yIHJlcG9ydGluZy4KKworICAgIEltcG9ydEVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZSBtYWdpYyBudW1iZXIgaXMgaW5jb3JyZWN0IG9yIHRoZSBieXRlY29kZSBpcworICAgIGZvdW5kIHRvIGJlIHN0YWxlLiBFT0ZFcnJvciBpcyByYWlzZWQgd2hlbiB0aGUgZGF0YSBpcyBmb3VuZCB0byBiZQorICAgIHRydW5jYXRlZC4KKworICAgICIiIgorICAgIGV4Y19kZXRhaWxzID0ge30KKyAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICBleGNfZGV0YWlsc1snbmFtZSddID0gbmFtZQorICAgIGVsc2U6CisgICAgICAgICMgVG8gcHJldmVudCBoYXZpbmcgdG8gbWFrZSBhbGwgbWVzc2FnZXMgaGF2ZSBhIGNvbmRpdGlvbmFsIG5hbWUuCisgICAgICAgIG5hbWUgPSAnPGJ5dGVjb2RlPicKKyAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICBleGNfZGV0YWlsc1sncGF0aCddID0gcGF0aAorICAgIG1hZ2ljID0gZGF0YVs6NF0KKyAgICByYXdfdGltZXN0YW1wID0gZGF0YVs0OjhdCisgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCisgICAgaWYgbWFnaWMgIT0gTUFHSUNfTlVNQkVSOgorICAgICAgICBtZXNzYWdlID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KG5hbWUsIG1hZ2ljKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCisgICAgZWxpZiBsZW4ocmF3X3RpbWVzdGFtcCkgIT0gNDoKKyAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHRpbWVzdGFtcCBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQorICAgIGVsaWYgbGVuKHJhd19zaXplKSAhPSA0OgorICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgc2l6ZSBvZiBzb3VyY2UgaW4geyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICBpZiBzb3VyY2Vfc3RhdHMgaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IGludChzb3VyY2Vfc3RhdHNbJ210aW1lJ10pCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHshcn0nLmZvcm1hdChuYW1lKQorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2Vfc2l6ZSA9IHNvdXJjZV9zdGF0c1snc2l6ZSddICYgMHhGRkZGRkZGRgorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBfcl9sb25nKHJhd19zaXplKSAhPSBzb3VyY2Vfc2l6ZToKKyAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHshcn0nLmZvcm1hdChuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmV4Y19kZXRhaWxzKQorICAgIHJldHVybiBkYXRhWzEyOl0KKworCitkZWYgX2NvbXBpbGVfYnl0ZWNvZGUoZGF0YSwgbmFtZT1Ob25lLCBieXRlY29kZV9wYXRoPU5vbmUsIHNvdXJjZV9wYXRoPU5vbmUpOgorICAgICIiIkNvbXBpbGUgYnl0ZWNvZGUgYXMgcmV0dXJuZWQgYnkgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcigpLiIiIgorICAgIGNvZGUgPSBtYXJzaGFsLmxvYWRzKGRhdGEpCisgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBfY29kZV90eXBlKToKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgaWYgc291cmNlX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoY29kZSwgc291cmNlX3BhdGgpCisgICAgICAgIHJldHVybiBjb2RlCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vbi1jb2RlIG9iamVjdCBpbiB7IXJ9Jy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9bmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQorCitkZWYgX2NvZGVfdG9fYnl0ZWNvZGUoY29kZSwgbXRpbWU9MCwgc291cmNlX3NpemU9MCk6CisgICAgIiIiQ29tcGlsZSBhIGNvZGUgb2JqZWN0IGludG8gYnl0ZWNvZGUgZm9yIHdyaXRpbmcgb3V0IHRvIGEgYnl0ZS1jb21waWxlZAorICAgIGZpbGUuIiIiCisgICAgZGF0YSA9IGJ5dGVhcnJheShNQUdJQ19OVU1CRVIpCisgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhtdGltZSkpCisgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhzb3VyY2Vfc2l6ZSkpCisgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlKSkKKyAgICByZXR1cm4gZGF0YQorCisKK2RlZiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcyk6CisgICAgIiIiRGVjb2RlIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIHRoZSBzdHJpbmcuCisKKyAgICBVbml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0IGlzIHVzZWQgaW4gdGhlIGRlY29kaW5nLgorICAgICIiIgorICAgIGltcG9ydCB0b2tlbml6ZSAgIyBUbyBhdm9pZCBib290c3RyYXAgaXNzdWVzLgorICAgIHNvdXJjZV9ieXRlc19yZWFkbGluZSA9IF9pby5CeXRlc0lPKHNvdXJjZV9ieXRlcykucmVhZGxpbmUKKyAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhzb3VyY2VfYnl0ZXNfcmVhZGxpbmUpCisgICAgbmV3bGluZV9kZWNvZGVyID0gX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoTm9uZSwgVHJ1ZSkKKyAgICByZXR1cm4gbmV3bGluZV9kZWNvZGVyLmRlY29kZShzb3VyY2VfYnl0ZXMuZGVjb2RlKGVuY29kaW5nWzBdKSkKKworCisjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK19QT1BVTEFURSA9IG9iamVjdCgpCisKKworZGVmIHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIGxvY2F0aW9uPU5vbmUsICosIGxvYWRlcj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPV9QT1BVTEFURSk6CisgICAgIiIiUmV0dXJuIGEgbW9kdWxlIHNwZWMgYmFzZWQgb24gYSBmaWxlIGxvY2F0aW9uLgorCisgICAgVG8gaW5kaWNhdGUgdGhhdCB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSwgc2V0CisgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgdG8gYSBsaXN0IG9mIGRpcmVjdG9yeSBwYXRocy4gIEFuCisgICAgZW1wdHkgbGlzdCBpcyBzdWZmaWNpZW50LCB0aG91Z2ggaXRzIG5vdCBvdGhlcndpc2UgdXNlZnVsIHRvIHRoZQorICAgIGltcG9ydCBzeXN0ZW0uCisKKyAgICBUaGUgbG9hZGVyIG11c3QgdGFrZSBhIHNwZWMgYXMgaXRzIG9ubHkgX19pbml0X18oKSBhcmcuCisKKyAgICAiIiIKKyAgICBpZiBsb2NhdGlvbiBpcyBOb25lOgorICAgICAgICAjIFRoZSBjYWxsZXIgbWF5IHNpbXBseSB3YW50IGEgcGFydGlhbGx5IHBvcHVsYXRlZCBsb2NhdGlvbi0KKyAgICAgICAgIyBvcmllbnRlZCBzcGVjLiAgU28gd2Ugc2V0IHRoZSBsb2NhdGlvbiB0byBhIGJvZ3VzIHZhbHVlIGFuZAorICAgICAgICAjIGZpbGwgaW4gYXMgbXVjaCBhcyB3ZSBjYW4uCisgICAgICAgIGxvY2F0aW9uID0gJzx1bmtub3duPicKKyAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfZmlsZW5hbWUnKToKKyAgICAgICAgICAgICMgRXhlY3V0aW9uTG9hZGVyCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgIyBJZiB0aGUgbG9jYXRpb24gaXMgb24gdGhlIGZpbGVzeXN0ZW0sIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LAorICAgICMgd2UgY291bGQgcmV0dXJuIE5vbmUgaGVyZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBub3QKKyAgICAjIHZhbGlkLiAgSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IG9mIHRlc3Rpbmcgc2luY2UgYW4KKyAgICAjIGluZGlyZWN0IGxvY2F0aW9uIChlLmcuIGEgemlwIGZpbGUgb3IgVVJMKSB3aWxsIGxvb2sgbGlrZSBhCisgICAgIyBub24tZXhpc3RlbnQgZmlsZSByZWxhdGl2ZSB0byB0aGUgZmlsZXN5c3RlbS4KKworICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMobmFtZSwgbG9hZGVyLCBvcmlnaW49bG9jYXRpb24pCisgICAgc3BlYy5fc2V0X2ZpbGVhdHRyID0gVHJ1ZQorCisgICAgIyBQaWNrIGEgbG9hZGVyIGlmIG9uZSB3YXNuJ3QgcHJvdmlkZWQuCisgICAgaWYgbG9hZGVyIGlzIE5vbmU6CisgICAgICAgIGZvciBsb2FkZXJfY2xhc3MsIHN1ZmZpeGVzIGluIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICAgICAgICAgaWYgbG9jYXRpb24uZW5kc3dpdGgodHVwbGUoc3VmZml4ZXMpKToKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBsb2FkZXJfY2xhc3MobmFtZSwgbG9jYXRpb24pCisgICAgICAgICAgICAgICAgc3BlYy5sb2FkZXIgPSBsb2FkZXIKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICMgU2V0IHN1Ym1vZHVsZV9zZWFyY2hfcGF0aHMgYXBwcm9wcmlhdGVseS4KKyAgICBpZiBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyBpcyBfUE9QVUxBVEU6CisgICAgICAgICMgQ2hlY2sgdGhlIGxvYWRlci4KKyAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdpc19wYWNrYWdlJyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfcGFja2FnZSA9IGxvYWRlci5pc19wYWNrYWdlKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBpc19wYWNrYWdlOgorICAgICAgICAgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gW10KKyAgICBlbHNlOgorICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICBpZiBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID09IFtdOgorICAgICAgICBpZiBsb2NhdGlvbjoKKyAgICAgICAgICAgIGRpcm5hbWUgPSBfcGF0aF9zcGxpdChsb2NhdGlvbilbMF0KKyAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMuYXBwZW5kKGRpcm5hbWUpCisKKyAgICByZXR1cm4gc3BlYworCisKKyMgTG9hZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgV2luZG93c1JlZ2lzdHJ5RmluZGVyOgorCisgICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4iIiIKKworICAgIFJFR0lTVFJZX0tFWSA9ICgKKyAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCisgICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX0nKQorICAgIFJFR0lTVFJZX0tFWV9ERUJVRyA9ICgKKyAgICAgICAgJ1NvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0nCisgICAgICAgICdcXE1vZHVsZXNcXHtmdWxsbmFtZX1cXERlYnVnJykKKyAgICBERUJVR19CVUlMRCA9IEZhbHNlICAjIENoYW5nZWQgaW4gX3NldHVwKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfb3Blbl9yZWdpc3RyeShjbHMsIGtleSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwga2V5KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc2VhcmNoX3JlZ2lzdHJ5KGNscywgZnVsbG5hbWUpOgorICAgICAgICBpZiBjbHMuREVCVUdfQlVJTEQ6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZX0RFQlVHCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCisgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6CisgICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgJycpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGZpbGVwYXRoCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICBmaWxlcGF0aCA9IGNscy5fc2VhcmNoX3JlZ2lzdHJ5KGZ1bGxuYW1lKQorICAgICAgICBpZiBmaWxlcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3BhdGhfc3RhdChmaWxlcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKToKKyAgICAgICAgICAgIGlmIGZpbGVwYXRoLmVuZHN3aXRoKHR1cGxlKHN1ZmZpeGVzKSk6CisgICAgICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcihmdWxsbmFtZSwgZmlsZXBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luPWZpbGVwYXRoKQorICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgIiIiRmluZCBtb2R1bGUgbmFtZWQgaW4gdGhlIHJlZ2lzdHJ5LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBVc2UgZXhlY19tb2R1bGUoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICBzcGVjID0gY2xzLmZpbmRfc3BlYyhmdWxsbmFtZSwgcGF0aCkKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzcGVjLmxvYWRlcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBfTG9hZGVyQmFzaWNzOgorCisgICAgIiIiQmFzZSBjbGFzcyBvZiBjb21tb24gY29kZSBuZWVkZWQgYnkgYm90aCBTb3VyY2VMb2FkZXIgYW5kCisgICAgU291cmNlbGVzc0ZpbGVMb2FkZXIuIiIiCisKKyAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZSBieSBjaGVja2luZyBpZgorICAgICAgICB0aGUgcGF0aCByZXR1cm5lZCBieSBnZXRfZmlsZW5hbWUgaGFzIGEgZmlsZW5hbWUgb2YgJ19faW5pdF9fLnB5Jy4iIiIKKyAgICAgICAgZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkpWzFdCisgICAgICAgIGZpbGVuYW1lX2Jhc2UgPSBmaWxlbmFtZS5yc3BsaXQoJy4nLCAxKVswXQorICAgICAgICB0YWlsX25hbWUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KKyAgICAgICAgcmV0dXJuIGZpbGVuYW1lX2Jhc2UgPT0gJ19faW5pdF9fJyBhbmQgdGFpbF9uYW1lICE9ICdfX2luaXRfXycKKworICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAiIiJVc2UgZGVmYXVsdCBzZW1hbnRpY3MgZm9yIG1vZHVsZSBjcmVhdGlvbi4iIiIKKworICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJFeGVjdXRlIHRoZSBtb2R1bGUuIiIiCisgICAgICAgIGNvZGUgPSBzZWxmLmdldF9jb2RlKG1vZHVsZS5fX25hbWVfXykKKyAgICAgICAgaWYgY29kZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2Nhbm5vdCBsb2FkIG1vZHVsZSB7IXJ9IHdoZW4gZ2V0X2NvZGUoKSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJucyBOb25lJy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGV4ZWMsIGNvZGUsIG1vZHVsZS5fX2RpY3RfXykKKworICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQorCisKK2NsYXNzIFNvdXJjZUxvYWRlcihfTG9hZGVyQmFzaWNzKToKKworICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCisgICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgorCisgICAgICAgIFJhaXNlcyBJT0Vycm9yIHdoZW4gdGhlIHBhdGggY2Fubm90IGJlIGhhbmRsZWQuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBJT0Vycm9yCisKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aAorICAgICAgICB0byBieSB0aGUgcGF0aCAoc3RyKS4KKyAgICAgICAgUG9zc2libGUga2V5czoKKyAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQorICAgICAgICAgIGNvZGUgbW9kaWZpY2F0aW9uOworICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KKyAgICAgICAgUmFpc2VzIElPRXJyb3Igd2hlbiB0aGUgcGF0aCBjYW5ub3QgYmUgaGFuZGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQorCisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCisKKyAgICAgICAgVGhlIHNvdXJjZSBwYXRoIGlzIG5lZWRlZCBpbiBvcmRlciB0byBjb3JyZWN0bHkgdHJhbnNmZXIgcGVybWlzc2lvbnMKKyAgICAgICAgIiIiCisgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBkZWxlZ2F0ZSB0byBzZXRfZGF0YSgpCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGNhY2hlX3BhdGgsIGRhdGEpCisKKyAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCisgICAgICAgICIiIgorCisKKyAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKKyAgICAgICAgcmV0dXJuIGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQorCisgICAgZGVmIHNvdXJjZV90b19jb2RlKHNlbGYsIGRhdGEsIHBhdGgsICosIF9vcHRpbWl6ZT0tMSk6CisgICAgICAgICIiIlJldHVybiB0aGUgY29kZSBvYmplY3QgY29tcGlsZWQgZnJvbSBzb3VyY2UuCisKKyAgICAgICAgVGhlICdkYXRhJyBhcmd1bWVudCBjYW4gYmUgYW55IG9iamVjdCB0eXBlIHRoYXQgY29tcGlsZSgpIHN1cHBvcnRzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChjb21waWxlLCBkYXRhLCBwYXRoLCAnZXhlYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUsIG9wdGltaXplPV9vcHRpbWl6ZSkKKworICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X2NvZGUuCisKKyAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX3N0YXRzIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQorICAgICAgICBieXRlY29kZSwgc2V0X2RhdGEgbXVzdCBhbHNvIGJlIGltcGxlbWVudGVkLgorCisgICAgICAgICIiIgorICAgICAgICBzb3VyY2VfcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorICAgICAgICBzb3VyY2VfbXRpbWUgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBjYWNoZV9mcm9tX3NvdXJjZShzb3VyY2VfcGF0aCkKKyAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN0ID0gc2VsZi5wYXRoX3N0YXRzKHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc3RbJ210aW1lJ10pCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZGF0YSA9IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3N0YXRzPXN0LCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPWJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoPXNvdXJjZV9wYXRoKQorICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQorICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQorICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9fYnl0ZWNvZGUoY29kZV9vYmplY3QsIHNvdXJjZV9tdGltZSwKKyAgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV9ieXRlcykpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCisgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHJldHVybiBjb2RlX29iamVjdAorCisKK2NsYXNzIEZpbGVMb2FkZXI6CisKKyAgICAiIiJCYXNlIGZpbGUgbG9hZGVyIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGxvYWRlciBwcm90b2NvbCBtZXRob2RzIHRoYXQKKyAgICByZXF1aXJlIGZpbGUgc3lzdGVtIHVzYWdlLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgIiIiQ2FjaGUgdGhlIG1vZHVsZSBuYW1lIGFuZCB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3VuZCBieSB0aGUKKyAgICAgICAgZmluZGVyLiIiIgorICAgICAgICBzZWxmLm5hbWUgPSBmdWxsbmFtZQorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXyA9PSBvdGhlci5fX2NsYXNzX18gYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXykKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5uYW1lKSBeIGhhc2goc2VsZi5wYXRoKQorCisgICAgQF9jaGVja19uYW1lCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiTG9hZCBhIG1vZHVsZSBmcm9tIGEgZmlsZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGV4ZWNfbW9kdWxlKCkgaW5zdGVhZC4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBUaGUgb25seSByZWFzb24gZm9yIHRoaXMgbWV0aG9kIGlzIGZvciB0aGUgbmFtZSBjaGVjay4KKyAgICAgICAgIyBJc3N1ZSAjMTQ4NTc6IEF2b2lkIHRoZSB6ZXJvLWFyZ3VtZW50IGZvcm0gb2Ygc3VwZXIgc28gdGhlIGltcGxlbWVudGF0aW9uCisgICAgICAgICMgb2YgdGhhdCBmb3JtIGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgYnJlYWtpbmcgdGhlIGZyb3plbiBtb2R1bGUKKyAgICAgICAgcmV0dXJuIHN1cGVyKEZpbGVMb2FkZXIsIHNlbGYpLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgQF9jaGVja19uYW1lCisgICAgZGVmIGdldF9maWxlbmFtZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgcGF0aCB0byB0aGUgc291cmNlIGZpbGUgYXMgZm91bmQgYnkgdGhlIGZpbmRlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIGdldF9kYXRhKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGRhdGEgZnJvbSBwYXRoIGFzIHJhdyBieXRlcy4iIiIKKyAgICAgICAgd2l0aCBfaW8uRmlsZUlPKHBhdGgsICdyJykgYXMgZmlsZToKKyAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQorCisKK2NsYXNzIFNvdXJjZUZpbGVMb2FkZXIoRmlsZUxvYWRlciwgU291cmNlTG9hZGVyKToKKworICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIFNvdXJjZUxvYWRlciB1c2luZyB0aGUgZmlsZSBzeXN0ZW0uIiIiCisKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHBhdGguIiIiCisgICAgICAgIHN0ID0gX3BhdGhfc3RhdChwYXRoKQorICAgICAgICByZXR1cm4geydtdGltZSc6IHN0LnN0X210aW1lLCAnc2l6ZSc6IHN0LnN0X3NpemV9CisKKyAgICBkZWYgX2NhY2hlX2J5dGVjb2RlKHNlbGYsIHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKToKKyAgICAgICAgIyBBZGFwdCBiZXR3ZWVuIHRoZSB0d28gQVBJcworICAgICAgICBtb2RlID0gX2NhbGNfbW9kZShzb3VyY2VfcGF0aCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2RhdGEoYnl0ZWNvZGVfcGF0aCwgZGF0YSwgX21vZGU9bW9kZSkKKworICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhLCAqLCBfbW9kZT0wbzY2Nik6CisgICAgICAgICIiIldyaXRlIGJ5dGVzIGRhdGEgdG8gYSBmaWxlLiIiIgorICAgICAgICBwYXJlbnQsIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICAgICAgcGF0aF9wYXJ0cyA9IFtdCisgICAgICAgICMgRmlndXJlIG91dCB3aGF0IGRpcmVjdG9yaWVzIGFyZSBtaXNzaW5nLgorICAgICAgICB3aGlsZSBwYXJlbnQgYW5kIG5vdCBfcGF0aF9pc2RpcihwYXJlbnQpOgorICAgICAgICAgICAgcGFyZW50LCBwYXJ0ID0gX3BhdGhfc3BsaXQocGFyZW50KQorICAgICAgICAgICAgcGF0aF9wYXJ0cy5hcHBlbmQocGFydCkKKyAgICAgICAgIyBDcmVhdGUgbmVlZGVkIGRpcmVjdG9yaWVzLgorICAgICAgICBmb3IgcGFydCBpbiByZXZlcnNlZChwYXRoX3BhcnRzKToKKyAgICAgICAgICAgIHBhcmVudCA9IF9wYXRoX2pvaW4ocGFyZW50LCBwYXJ0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIF9vcy5ta2RpcihwYXJlbnQpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgICMgUHJvYmFibHkgYW5vdGhlciBQeXRob24gcHJvY2VzcyBhbHJlYWR5IGNyZWF0ZWQgdGhlIGRpci4KKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKKyAgICAgICAgICAgICAgICAjIGFib3V0IHdyaXRpbmcgdGhlIGRhdGEuCisgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGFyZW50LCBleGMpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgX21vZGUpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAjIFNhbWUgYXMgYWJvdmU6IGp1c3QgZG9uJ3Qgd3JpdGUgdGhlIGJ5dGVjb2RlLgorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwgZXhjKQorCisKK2NsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorCisgICAgIiIiTG9hZGVyIHdoaWNoIGhhbmRsZXMgc291cmNlbGVzcyBmaWxlIGltcG9ydHMuIiIiCisKKyAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICBwYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCisgICAgICAgIGRhdGEgPSBzZWxmLmdldF9kYXRhKHBhdGgpCisgICAgICAgIGJ5dGVzX2RhdGEgPSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKGRhdGEsIG5hbWU9ZnVsbG5hbWUsIHBhdGg9cGF0aCkKKyAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsIGJ5dGVjb2RlX3BhdGg9cGF0aCkKKworICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKworIyBGaWxsZWQgaW4gYnkgX3NldHVwKCkuCitFWFRFTlNJT05fU1VGRklYRVMgPSBbXQorCisKK2NsYXNzIEV4dGVuc2lvbkZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CisKKyAgICAiIiJMb2FkZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLgorCisgICAgVGhlIGNvbnN0cnVjdG9yIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBGaWxlRmluZGVyLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18pCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYubmFtZSkgXiBoYXNoKHNlbGYucGF0aCkKKworICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAiIiJDcmVhdGUgYW4gdW5pdGlhbGl6ZWQgZXh0ZW5zaW9uIG1vZHVsZSIiIgorICAgICAgICBtb2R1bGUgPSBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoCisgICAgICAgICAgICBfaW1wLmNyZWF0ZV9keW5hbWljLCBzcGVjKQorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gbG9hZGVkIGZyb20geyFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5uYW1lLCBzZWxmLnBhdGgpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUiIiIKKyAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZXhlY19keW5hbWljLCBtb2R1bGUpCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5wYXRoKQorCisgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KKyAgICAgICAgcmV0dXJuIGFueShmaWxlX25hbWUgPT0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gRVhURU5TSU9OX1NVRkZJWEVTKQorCisgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW5ub3QgY3JlYXRlIGEgY29kZSBvYmplY3QuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAX2NoZWNrX25hbWUKKyAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZSBhcyBmb3VuZCBieSB0aGUgZmluZGVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKworY2xhc3MgX05hbWVzcGFjZVBhdGg6CisgICAgIiIiUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgcGF0aC4gIEl0IHVzZXMgdGhlIG1vZHVsZSBuYW1lCisgICAgdG8gZmluZCBpdHMgcGFyZW50IG1vZHVsZSwgYW5kIGZyb20gdGhlcmUgaXQgbG9va3MgdXAgdGhlIHBhcmVudCdzCisgICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCisgICAgdXNpbmcgcGF0aF9maW5kZXIuICBGb3IgdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBwYXJlbnQgbW9kdWxlJ3MgcGF0aAorICAgIGlzIHN5cy5wYXRoLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHR1cGxlKHNlbGYuX2dldF9wYXJlbnRfcGF0aCgpKQorICAgICAgICBzZWxmLl9wYXRoX2ZpbmRlciA9IHBhdGhfZmluZGVyCisKKyAgICBkZWYgX2ZpbmRfcGFyZW50X3BhdGhfbmFtZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSB0dXBsZSBvZiAocGFyZW50LW1vZHVsZS1uYW1lLCBwYXJlbnQtcGF0aC1hdHRyLW5hbWUpIiIiCisgICAgICAgIHBhcmVudCwgZG90LCBtZSA9IHNlbGYuX25hbWUucnBhcnRpdGlvbignLicpCisgICAgICAgIGlmIGRvdCA9PSAnJzoKKyAgICAgICAgICAgICMgVGhpcyBpcyBhIHRvcC1sZXZlbCBtb2R1bGUuIHN5cy5wYXRoIGNvbnRhaW5zIHRoZSBwYXJlbnQgcGF0aC4KKyAgICAgICAgICAgIHJldHVybiAnc3lzJywgJ3BhdGgnCisgICAgICAgICMgTm90IGEgdG9wLWxldmVsIG1vZHVsZS4gcGFyZW50LW1vZHVsZS5fX3BhdGhfXyBjb250YWlucyB0aGUKKyAgICAgICAgIyAgcGFyZW50IHBhdGguCisgICAgICAgIHJldHVybiBwYXJlbnQsICdfX3BhdGhfXycKKworICAgIGRlZiBfZ2V0X3BhcmVudF9wYXRoKHNlbGYpOgorICAgICAgICBwYXJlbnRfbW9kdWxlX25hbWUsIHBhdGhfYXR0cl9uYW1lID0gc2VsZi5fZmluZF9wYXJlbnRfcGF0aF9uYW1lcygpCisgICAgICAgIHJldHVybiBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhcmVudF9tb2R1bGVfbmFtZV0sIHBhdGhfYXR0cl9uYW1lKQorCisgICAgZGVmIF9yZWNhbGN1bGF0ZShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgcGFyZW50J3MgcGF0aCBoYXMgY2hhbmdlZCwgcmVjYWxjdWxhdGUgX3BhdGgKKyAgICAgICAgcGFyZW50X3BhdGggPSB0dXBsZShzZWxmLl9nZXRfcGFyZW50X3BhdGgoKSkgIyBNYWtlIGEgY29weQorICAgICAgICBpZiBwYXJlbnRfcGF0aCAhPSBzZWxmLl9sYXN0X3BhcmVudF9wYXRoOgorICAgICAgICAgICAgc3BlYyA9IHNlbGYuX3BhdGhfZmluZGVyKHNlbGYuX25hbWUsIHBhcmVudF9wYXRoKQorICAgICAgICAgICAgIyBOb3RlIHRoYXQgbm8gY2hhbmdlcyBhcmUgbWFkZSBpZiBhIGxvYWRlciBpcyByZXR1cm5lZCwgYnV0IHdlCisgICAgICAgICAgICAjICBkbyByZW1lbWJlciB0aGUgbmV3IHBhcmVudCBwYXRoCisgICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBzcGVjLmxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gcGFyZW50X3BhdGggICAgICMgU2F2ZSB0aGUgY29weQorICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdfTmFtZXNwYWNlUGF0aCh7IXJ9KScuZm9ybWF0KHNlbGYuX3BhdGgpCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICByZXR1cm4gaXRlbSBpbiBzZWxmLl9yZWNhbGN1bGF0ZSgpCisKKyAgICBkZWYgYXBwZW5kKHNlbGYsIGl0ZW0pOgorICAgICAgICBzZWxmLl9wYXRoLmFwcGVuZChpdGVtKQorCisKKyMgV2UgdXNlIHRoaXMgZXhjbHVzaXZlbHkgaW4gbW9kdWxlX2Zyb21fc3BlYygpIGZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LgorY2xhc3MgX05hbWVzcGFjZUxvYWRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpOgorICAgICAgICBzZWxmLl9wYXRoID0gX05hbWVzcGFjZVBhdGgobmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbW9kdWxlX3JlcHIoY2xzLCBtb2R1bGUpOgorICAgICAgICAiIiJSZXR1cm4gcmVwciBmb3IgdGhlIG1vZHVsZS4KKworICAgICAgICBUaGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuICBUaGUgaW1wb3J0IG1hY2hpbmVyeSBkb2VzIHRoZSBqb2IgaXRzZWxmLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gJzxtb2R1bGUgeyFyfSAobmFtZXNwYWNlKT4nLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKyAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgIHJldHVybiAnJworCisgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgcmV0dXJuIGNvbXBpbGUoJycsICc8c3RyaW5nPicsICdleGVjJywgZG9udF9pbmhlcml0PVRydWUpCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKKyAgICAgICAgIiIiVXNlIGRlZmF1bHQgc2VtYW50aWNzIGZvciBtb2R1bGUgY3JlYXRpb24uIiIiCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiTG9hZCBhIG5hbWVzcGFjZSBtb2R1bGUuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBleGVjX21vZHVsZSgpIGluc3RlYWQuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIGltcG9ydCBzeXN0ZW0gbmV2ZXIgY2FsbHMgdGhpcyBtZXRob2QuCisgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9Jywgc2VsZi5fcGF0aCkKKyAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCisKKworIyBGaW5kZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXRoRmluZGVyOgorCisgICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3Igc3lzLnBhdGggYW5kIHBhY2thZ2UgX19wYXRoX18gYXR0cmlidXRlcy4iIiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhjbHMpOgorICAgICAgICAiIiJDYWxsIHRoZSBpbnZhbGlkYXRlX2NhY2hlcygpIG1ldGhvZCBvbiBhbGwgcGF0aCBlbnRyeSBmaW5kZXJzCisgICAgICAgIHN0b3JlZCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZXMgKHdoZXJlIGltcGxlbWVudGVkKS4iIiIKKyAgICAgICAgZm9yIGZpbmRlciBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS52YWx1ZXMoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnaW52YWxpZGF0ZV9jYWNoZXMnKToKKyAgICAgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6CisgICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KKworICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzeXMucGF0aF9ob29rcyBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKyAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhvb2socGF0aCkKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgorICAgICAgICAiIiJHZXQgdGhlIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgZnJvbSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKworICAgICAgICBJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgaW4gdGhlIGNhY2hlLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBmaW5kZXIKKyAgICAgICAgYW5kIGNhY2hlIGl0LiBJZiBubyBmaW5kZXIgaXMgYXZhaWxhYmxlLCBzdG9yZSBOb25lLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICAgICAjIERvbid0IGNhY2hlIHRoZSBmYWlsdXJlIGFzIHRoZSBjd2QgY2FuIGVhc2lseSBjaGFuZ2UgdG8KKyAgICAgICAgICAgICAgICAjIGEgdmFsaWQgZGlyZWN0b3J5IGxhdGVyIG9uLgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbmRlciA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9ob29rcyhwYXRoKQorICAgICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0gPSBmaW5kZXIKKyAgICAgICAgcmV0dXJuIGZpbmRlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9sZWdhY3lfZ2V0X3NwZWMoY2xzLCBmdWxsbmFtZSwgZmluZGVyKToKKyAgICAgICAgIyBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSBmb3IgYSBEZXByZWNhdGlvbldhcm5pbmcgaWYKKyAgICAgICAgIyB3ZSBlbmRlZCB1cCBnb2luZyB0aGF0IHJvdXRlLgorICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfbG9hZGVyJyk6CisgICAgICAgICAgICBsb2FkZXIsIHBvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKGZ1bGxuYW1lKQorICAgICAgICAgICAgcG9ydGlvbnMgPSBbXQorICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5zcGVjX2Zyb21fbG9hZGVyKGZ1bGxuYW1lLCBsb2FkZXIpCisgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCisgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBwb3J0aW9ucworICAgICAgICByZXR1cm4gc3BlYworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9nZXRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgdGhlIGxvYWRlciBvciBuYW1lc3BhY2VfcGF0aCBmb3IgdGhpcyBtb2R1bGUvcGFja2FnZSBuYW1lLiIiIgorICAgICAgICAjIElmIHRoaXMgZW5kcyB1cCBiZWluZyBhIG5hbWVzcGFjZSBwYWNrYWdlLCBuYW1lc3BhY2VfcGF0aCBpcworICAgICAgICAjICB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdpbGwgYmVjb21lIGl0cyBfX3BhdGhfXworICAgICAgICBuYW1lc3BhY2VfcGF0aCA9IFtdCisgICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW50cnksIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZpbmRlciA9IGNscy5fcGF0aF9pbXBvcnRlcl9jYWNoZShlbnRyeSkKKyAgICAgICAgICAgIGlmIGZpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ZpbmRfc3BlYycpOgorICAgICAgICAgICAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhmdWxsbmFtZSwgdGFyZ2V0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNwZWMgPSBjbHMuX2xlZ2FjeV9nZXRfc3BlYyhmdWxsbmFtZSwgZmluZGVyKQorICAgICAgICAgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzcGVjLmxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKyAgICAgICAgICAgICAgICBwb3J0aW9ucyA9IHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICAgICAgICAgICAgICBpZiBwb3J0aW9ucyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignc3BlYyBtaXNzaW5nIGxvYWRlcicpCisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHBvc3NpYmx5IHBhcnQgb2YgYSBuYW1lc3BhY2UgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAjICBSZW1lbWJlciB0aGVzZSBwYXRoIGVudHJpZXMgKGlmIGFueSkgZm9yIHdoZW4gd2UKKyAgICAgICAgICAgICAgICAjICBjcmVhdGUgYSBuYW1lc3BhY2UgcGFja2FnZSwgYW5kIGNvbnRpbnVlIGl0ZXJhdGluZworICAgICAgICAgICAgICAgICMgIG9uIHBhdGguCisgICAgICAgICAgICAgICAgbmFtZXNwYWNlX3BhdGguZXh0ZW5kKHBvcnRpb25zKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBuYW1lc3BhY2VfcGF0aAorICAgICAgICAgICAgcmV0dXJuIHNwZWMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKKyAgICAgICAgc3BlYyA9IGNscy5fZ2V0X3NwZWMoZnVsbG5hbWUsIHBhdGgsIHRhcmdldCkKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBzcGVjLmxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgbmFtZXNwYWNlX3BhdGggPSBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKKyAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCisgICAgICAgICAgICAgICAgIyAgc3BlYyB3aGljaCBjYW4gY3JlYXRlIHRoZSBuYW1lc3BhY2UgcGFja2FnZS4KKyAgICAgICAgICAgICAgICBzcGVjLm9yaWdpbiA9ICduYW1lc3BhY2UnCisgICAgICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IF9OYW1lc3BhY2VQYXRoKGZ1bGxuYW1lLCBuYW1lc3BhY2VfcGF0aCwgY2xzLl9nZXRfc3BlYykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNwZWMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAorICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiAgVXNlIGZpbmRfc3BlYygpIGluc3RlYWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIHNwZWMgPSBjbHMuZmluZF9zcGVjKGZ1bGxuYW1lLCBwYXRoKQorICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIKKworCitjbGFzcyBGaWxlRmluZGVyOgorCisgICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCisKKyAgICBJbnRlcmFjdGlvbnMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gYXJlIGNhY2hlZCBmb3IgcGVyZm9ybWFuY2UsIGJlaW5nCisgICAgcmVmcmVzaGVkIHdoZW4gdGhlIGRpcmVjdG9yeSB0aGUgZmluZGVyIGlzIGhhbmRsaW5nIGhhcyBiZWVuIG1vZGlmaWVkLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKKyAgICAgICAgMi10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyIGFuZCB0aGUgZmlsZSBzdWZmaXhlcyB0aGUgbG9hZGVyCisgICAgICAgIHJlY29nbml6ZXMuIiIiCisgICAgICAgIGxvYWRlcnMgPSBbXQorICAgICAgICBmb3IgbG9hZGVyLCBzdWZmaXhlcyBpbiBsb2FkZXJfZGV0YWlsczoKKyAgICAgICAgICAgIGxvYWRlcnMuZXh0ZW5kKChzdWZmaXgsIGxvYWRlcikgZm9yIHN1ZmZpeCBpbiBzdWZmaXhlcykKKyAgICAgICAgc2VsZi5fbG9hZGVycyA9IGxvYWRlcnMKKyAgICAgICAgIyBCYXNlIChkaXJlY3RvcnkpIHBhdGgKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aCBvciAnLicKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoKQorICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSBzZXQoKQorCisgICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAiIiJJbnZhbGlkYXRlIHRoZSBkaXJlY3RvcnkgbXRpbWUuIiIiCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorCisgICAgZmluZF9tb2R1bGUgPSBfZmluZF9tb2R1bGVfc2hpbQorCisgICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBsb2FkZXIgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLCBvciB0aGUgbmFtZXNwYWNlCisgICAgICAgIHBhY2thZ2UgcG9ydGlvbnMuIFJldHVybnMgKGxvYWRlciwgbGlzdC1vZi1wb3J0aW9ucykuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gIFVzZSBmaW5kX3NwZWMoKSBpbnN0ZWFkLgorCisgICAgICAgICIiIgorICAgICAgICBzcGVjID0gc2VsZi5maW5kX3NwZWMoZnVsbG5hbWUpCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBbXQorICAgICAgICByZXR1cm4gc3BlYy5sb2FkZXIsIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgb3IgW10KKworICAgIGRlZiBfZ2V0X3NwZWMoc2VsZiwgbG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgcGF0aCwgc21zbCwgdGFyZ2V0KToKKyAgICAgICAgbG9hZGVyID0gbG9hZGVyX2NsYXNzKGZ1bGxuYW1lLCBwYXRoKQorICAgICAgICByZXR1cm4gc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZnVsbG5hbWUsIHBhdGgsIGxvYWRlcj1sb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQorCisgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKKyAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKKyAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKKyAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbXRpbWUgPSBfcGF0aF9zdGF0KHNlbGYucGF0aCBvciBfb3MuZ2V0Y3dkKCkpLnN0X210aW1lCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgbXRpbWUgPSAtMQorICAgICAgICBpZiBtdGltZSAhPSBzZWxmLl9wYXRoX210aW1lOgorICAgICAgICAgICAgc2VsZi5fZmlsbF9jYWNoZSgpCisgICAgICAgICAgICBzZWxmLl9wYXRoX210aW1lID0gbXRpbWUKKyAgICAgICAgIyB0YWlsX21vZHVsZSBrZWVwcyB0aGUgb3JpZ2luYWwgY2FzaW5nLCBmb3IgX19maWxlX18gYW5kIGZyaWVuZHMKKyAgICAgICAgaWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgIGNhY2hlID0gc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZS5sb3dlcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKKyAgICAgICAgICAgIGNhY2hlX21vZHVsZSA9IHRhaWxfbW9kdWxlCisgICAgICAgICMgQ2hlY2sgaWYgdGhlIG1vZHVsZSBpcyB0aGUgbmFtZSBvZiBhIGRpcmVjdG9yeSAoYW5kIHRodXMgYSBwYWNrYWdlKS4KKyAgICAgICAgaWYgY2FjaGVfbW9kdWxlIGluIGNhY2hlOgorICAgICAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQorICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICAgICAgaW5pdF9maWxlbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKGJhc2VfcGF0aCwgaW5pdF9maWxlbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgW2Jhc2VfcGF0aF0sIHRhcmdldCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZiBhIG5hbWVzcGFjZSBwYWNrYWdlLCByZXR1cm4gdGhlIHBhdGggaWYgd2UgZG9uJ3QKKyAgICAgICAgICAgICAgICAjICBmaW5kIGEgbW9kdWxlIGluIHRoZSBuZXh0IHNlY3Rpb24uCisgICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gX3BhdGhfaXNkaXIoYmFzZV9wYXRoKQorICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KKyAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLmZvcm1hdChmdWxsX3BhdGgpLCB2ZXJib3NpdHk9MikKKyAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKKyAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgTm9uZSwgdGFyZ2V0KQorICAgICAgICBpZiBpc19uYW1lc3BhY2U6CisgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9Jy5mb3JtYXQoYmFzZV9wYXRoKSkKKyAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCisgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gW2Jhc2VfcGF0aF0KKyAgICAgICAgICAgIHJldHVybiBzcGVjCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX2ZpbGxfY2FjaGUoc2VsZik6CisgICAgICAgICIiIkZpbGwgdGhlIGNhY2hlIG9mIHBvdGVudGlhbCBtb2R1bGVzIGFuZCBwYWNrYWdlcyBmb3IgdGhpcyBkaXJlY3RvcnkuIiIiCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGgKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29udGVudHMgPSBfb3MubGlzdGRpcihwYXRoIG9yIF9vcy5nZXRjd2QoKSkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yLCBOb3RBRGlyZWN0b3J5RXJyb3IpOgorICAgICAgICAgICAgIyBEaXJlY3RvcnkgaGFzIGVpdGhlciBiZWVuIHJlbW92ZWQsIHR1cm5lZCBpbnRvIGEgZmlsZSwgb3IgbWFkZQorICAgICAgICAgICAgIyB1bnJlYWRhYmxlLgorICAgICAgICAgICAgY29udGVudHMgPSBbXQorICAgICAgICAjIFdlIHN0b3JlIHR3byBjYWNoZWQgdmVyc2lvbnMsIHRvIGhhbmRsZSBydW50aW1lIGNoYW5nZXMgb2YgdGhlCisgICAgICAgICMgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IHNldChjb250ZW50cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgV2luZG93cyB1c2VycyBjYW4gaW1wb3J0IG1vZHVsZXMgd2l0aCBjYXNlLWluc2Vuc2l0aXZlIGZpbGUKKyAgICAgICAgICAgICMgc3VmZml4ZXMgKGZvciBsZWdhY3kgcmVhc29ucykuIE1ha2UgdGhlIHN1ZmZpeCBsb3dlcmNhc2UgaGVyZQorICAgICAgICAgICAgIyBzbyBpdCdzIGRvbmUgb25jZSBpbnN0ZWFkIG9mIGZvciBldmVyeSBpbXBvcnQuIFRoaXMgaXMgc2FmZSBhcworICAgICAgICAgICAgIyB0aGUgc3BlY2lmaWVkIHN1ZmZpeGVzIHRvIGNoZWNrIGFnYWluc3QgYXJlIGFsd2F5cyBzcGVjaWZpZWQgaW4gYQorICAgICAgICAgICAgIyBjYXNlLXNlbnNpdGl2ZSBtYW5uZXIuCisgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMgPSBzZXQoKQorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gY29udGVudHM6CisgICAgICAgICAgICAgICAgbmFtZSwgZG90LCBzdWZmaXggPSBpdGVtLnBhcnRpdGlvbignLicpCisgICAgICAgICAgICAgICAgaWYgZG90OgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9ICd7fS57fScuZm9ybWF0KG5hbWUsIHN1ZmZpeC5sb3dlcigpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5ld19uYW1lID0gbmFtZQorICAgICAgICAgICAgICAgIGxvd2VyX3N1ZmZpeF9jb250ZW50cy5hZGQobmV3X25hbWUpCisgICAgICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gbG93ZXJfc3VmZml4X2NvbnRlbnRzCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgICAgICBzZWxmLl9yZWxheGVkX3BhdGhfY2FjaGUgPSB7Zm4ubG93ZXIoKSBmb3IgZm4gaW4gY29udGVudHN9CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKKyAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAorICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCisKKyAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLgorCisgICAgICAgICIiIgorICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgorICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCisgICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ29ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCcsIHBhdGg9cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQorCisgICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdGaWxlRmluZGVyKHshcn0pJy5mb3JtYXQoc2VsZi5wYXRoKQorCisKKyMgSW1wb3J0IHNldHVwICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgX2ZpeF91cF9tb2R1bGUobnMsIG5hbWUsIHBhdGhuYW1lLCBjcGF0aG5hbWU9Tm9uZSk6CisgICAgIyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoKS4KKyAgICBsb2FkZXIgPSBucy5nZXQoJ19fbG9hZGVyX18nKQorICAgIHNwZWMgPSBucy5nZXQoJ19fc3BlY19fJykKKyAgICBpZiBub3QgbG9hZGVyOgorICAgICAgICBpZiBzcGVjOgorICAgICAgICAgICAgbG9hZGVyID0gc3BlYy5sb2FkZXIKKyAgICAgICAgZWxpZiBwYXRobmFtZSA9PSBjcGF0aG5hbWU6CisgICAgICAgICAgICBsb2FkZXIgPSBTb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvYWRlciA9IFNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aG5hbWUpCisgICAgaWYgbm90IHNwZWM6CisgICAgICAgIHNwZWMgPSBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihuYW1lLCBwYXRobmFtZSwgbG9hZGVyPWxvYWRlcikKKyAgICB0cnk6CisgICAgICAgIG5zWydfX3NwZWNfXyddID0gc3BlYworICAgICAgICBuc1snX19sb2FkZXJfXyddID0gbG9hZGVyCisgICAgICAgIG5zWydfX2ZpbGVfXyddID0gcGF0aG5hbWUKKyAgICAgICAgbnNbJ19fY2FjaGVkX18nXSA9IGNwYXRobmFtZQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICMgTm90IGltcG9ydGFudCBlbm91Z2ggdG8gcmVwb3J0LgorICAgICAgICBwYXNzCisKKworZGVmIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGZpbGUtYmFzZWQgbW9kdWxlIGxvYWRlcnMuCisKKyAgICBFYWNoIGl0ZW0gaXMgYSB0dXBsZSAobG9hZGVyLCBzdWZmaXhlcykuCisgICAgIiIiCisgICAgZXh0ZW5zaW9ucyA9IEV4dGVuc2lvbkZpbGVMb2FkZXIsIF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkKKyAgICBzb3VyY2UgPSBTb3VyY2VGaWxlTG9hZGVyLCBTT1VSQ0VfU1VGRklYRVMKKyAgICBieXRlY29kZSA9IFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIHJldHVybiBbZXh0ZW5zaW9ucywgc291cmNlLCBieXRlY29kZV0KKworCitkZWYgX3NldHVwKF9ib290c3RyYXBfbW9kdWxlKToKKyAgICAiIiJTZXR1cCB0aGUgcGF0aC1iYXNlZCBpbXBvcnRlcnMgZm9yIGltcG9ydGxpYiBieSBpbXBvcnRpbmcgbmVlZGVkCisgICAgYnVpbHQtaW4gbW9kdWxlcyBhbmQgaW5qZWN0aW5nIHRoZW0gaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKworICAgIE90aGVyIGNvbXBvbmVudHMgYXJlIGV4dHJhY3RlZCBmcm9tIHRoZSBjb3JlIGJvb3RzdHJhcCBtb2R1bGUuCisKKyAgICAiIiIKKyAgICBnbG9iYWwgc3lzLCBfaW1wLCBfYm9vdHN0cmFwCisgICAgX2Jvb3RzdHJhcCA9IF9ib290c3RyYXBfbW9kdWxlCisgICAgc3lzID0gX2Jvb3RzdHJhcC5zeXMKKyAgICBfaW1wID0gX2Jvb3RzdHJhcC5faW1wCisKKyAgICAjIERpcmVjdGx5IGxvYWQgYnVpbHQtaW4gbW9kdWxlcyBuZWVkZWQgZHVyaW5nIGJvb3RzdHJhcC4KKyAgICBzZWxmX21vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgIGZvciBidWlsdGluX25hbWUgaW4gKCdfaW8nLCAnX3dhcm5pbmdzJywgJ2J1aWx0aW5zJywgJ21hcnNoYWwnKToKKyAgICAgICAgaWYgYnVpbHRpbl9uYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIGJ1aWx0aW5fbW9kdWxlID0gX2Jvb3RzdHJhcC5fYnVpbHRpbl9mcm9tX25hbWUoYnVpbHRpbl9uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnVpbHRpbl9tb2R1bGUgPSBzeXMubW9kdWxlc1tidWlsdGluX25hbWVdCisgICAgICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsIGJ1aWx0aW5fbmFtZSwgYnVpbHRpbl9tb2R1bGUpCisKKyAgICAjIERpcmVjdGx5IGxvYWQgdGhlIG9zIG1vZHVsZSAobmVlZGVkIGR1cmluZyBib290c3RyYXApLgorICAgIG9zX2RldGFpbHMgPSAoJ3Bvc2l4JywgWycvJ10pLCAoJ250JywgWydcXCcsICcvJ10pCisgICAgZm9yIGJ1aWx0aW5fb3MsIHBhdGhfc2VwYXJhdG9ycyBpbiBvc19kZXRhaWxzOgorICAgICAgICAjIEFzc3VtcHRpb24gbWFkZSBpbiBfcGF0aF9qb2luKCkKKyAgICAgICAgYXNzZXJ0IGFsbChsZW4oc2VwKSA9PSAxIGZvciBzZXAgaW4gcGF0aF9zZXBhcmF0b3JzKQorICAgICAgICBwYXRoX3NlcCA9IHBhdGhfc2VwYXJhdG9yc1swXQorICAgICAgICBpZiBidWlsdGluX29zIGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgb3NfbW9kdWxlID0gc3lzLm1vZHVsZXNbYnVpbHRpbl9vc10KKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3NfbW9kdWxlID0gX2Jvb3RzdHJhcC5fYnVpbHRpbl9mcm9tX25hbWUoYnVpbHRpbl9vcykKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2ltcG9ydGxpYiByZXF1aXJlcyBwb3NpeCBvciBudCcpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ19vcycsIG9zX21vZHVsZSkKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAncGF0aF9zZXAnLCBwYXRoX3NlcCkKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAncGF0aF9zZXBhcmF0b3JzJywgJycuam9pbihwYXRoX3NlcGFyYXRvcnMpKQorCisgICAgIyBEaXJlY3RseSBsb2FkIHRoZSBfdGhyZWFkIG1vZHVsZSAobmVlZGVkIGR1cmluZyBib290c3RyYXApLgorICAgIHRyeToKKyAgICAgICAgdGhyZWFkX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKCdfdGhyZWFkJykKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICMgUHl0aG9uIHdhcyBidWlsdCB3aXRob3V0IHRocmVhZHMKKyAgICAgICAgdGhyZWFkX21vZHVsZSA9IE5vbmUKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3RocmVhZCcsIHRocmVhZF9tb2R1bGUpCisKKyAgICAjIERpcmVjdGx5IGxvYWQgdGhlIF93ZWFrcmVmIG1vZHVsZSAobmVlZGVkIGR1cmluZyBib290c3RyYXApLgorICAgIHdlYWtyZWZfbW9kdWxlID0gX2Jvb3RzdHJhcC5fYnVpbHRpbl9mcm9tX25hbWUoJ193ZWFrcmVmJykKKyAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3dlYWtyZWYnLCB3ZWFrcmVmX21vZHVsZSkKKworICAgICMgRGlyZWN0bHkgbG9hZCB0aGUgd2lucmVnIG1vZHVsZSAobmVlZGVkIGR1cmluZyBib290c3RyYXApLgorICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ250JzoKKyAgICAgICAgd2lucmVnX21vZHVsZSA9IF9ib290c3RyYXAuX2J1aWx0aW5fZnJvbV9uYW1lKCd3aW5yZWcnKQorICAgICAgICBzZXRhdHRyKHNlbGZfbW9kdWxlLCAnX3dpbnJlZycsIHdpbnJlZ19tb2R1bGUpCisKKyAgICAjIENvbnN0YW50cworICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfcmVsYXhfY2FzZScsIF9tYWtlX3JlbGF4X2Nhc2UoKSkKKyAgICBFWFRFTlNJT05fU1VGRklYRVMuZXh0ZW5kKF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkpCisgICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgorICAgICAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKKyAgICAgICAgaWYgJ19kLnB5ZCcgaW4gRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEID0gVHJ1ZQorCisKK2RlZiBfaW5zdGFsbChfYm9vdHN0cmFwX21vZHVsZSk6CisgICAgIiIiSW5zdGFsbCB0aGUgcGF0aC1iYXNlZCBpbXBvcnQgY29tcG9uZW50cy4iIiIKKyAgICBfc2V0dXAoX2Jvb3RzdHJhcF9tb2R1bGUpCisgICAgc3VwcG9ydGVkX2xvYWRlcnMgPSBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKQorICAgIHN5cy5wYXRoX2hvb2tzLmV4dGVuZChbRmlsZUZpbmRlci5wYXRoX2hvb2soKnN1cHBvcnRlZF9sb2FkZXJzKV0pCisgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKKyAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQorCisgICAgIyBYWFggV2UgZXhwb3NlIGEgY291cGxlIG9mIGNsYXNzZXMgaW4gX2Jvb3RzdHJhcCBmb3IgdGhlIHNha2Ugb2YKKyAgICAjIGEgc2V0dXB0b29scyBidWcgKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvaXNzdWUvMzc4KS4KKyAgICBfYm9vdHN0cmFwX21vZHVsZS5GaWxlRmluZGVyID0gRmlsZUZpbmRlcgorICAgIF9ib290c3RyYXBfbW9kdWxlLlNvdXJjZUZpbGVMb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL2FiYy5weSBiL0xpYi9pbXBvcnRsaWIvYWJjLnB5CmluZGV4IDU1OGFiZDMuLjExYWYyMmQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvYWJjLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvYWJjLnB5CkBAIC0xLDEyICsxLDE4IEBACiAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzZXMgcmVsYXRlZCB0byBpbXBvcnQuIiIiCiBmcm9tIC4gaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAogZnJvbSAuIGltcG9ydCBtYWNoaW5lcnkKIHRyeToKICAgICBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIKKyMgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsCiBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgIGlmIGV4Yy5uYW1lICE9ICdfZnJvemVuX2ltcG9ydGxpYic6CiAgICAgICAgIHJhaXNlCiAgICAgX2Zyb3plbl9pbXBvcnRsaWIgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsCitleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgIF9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsID0gX2Jvb3RzdHJhcF9leHRlcm5hbAogaW1wb3J0IGFiYwogCiAKQEAgLTE0LDcgKzIwLDEwIEBACiAgICAgZm9yIGNscyBpbiBjbGFzc2VzOgogICAgICAgICBhYnN0cmFjdF9jbHMucmVnaXN0ZXIoY2xzKQogICAgICAgICBpZiBfZnJvemVuX2ltcG9ydGxpYiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZyb3plbl9jbHMgPSBnZXRhdHRyKF9mcm96ZW5faW1wb3J0bGliLCBjbHMuX19uYW1lX18pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnJvemVuX2NscyA9IGdldGF0dHIoX2Zyb3plbl9pbXBvcnRsaWIsIGNscy5fX25hbWVfXykKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCwgY2xzLl9fbmFtZV9fKQogICAgICAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGZyb3plbl9jbHMpCiAKIApAQCAtMTAyLDcgKzExMSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgW10KIAotICAgIGZpbmRfbW9kdWxlID0gX2Jvb3RzdHJhcC5fZmluZF9tb2R1bGVfc2hpbQorICAgIGZpbmRfbW9kdWxlID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fZmluZF9tb2R1bGVfc2hpbQogCiAgICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgogICAgICAgICAiIiJBbiBvcHRpb25hbCBtZXRob2QgZm9yIGNsZWFyaW5nIHRoZSBmaW5kZXIncyBjYWNoZSwgaWYgYW55LgpAQCAtMTIyLDExICsxMzEsOCBAQAogICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgcmFpc2UgSW1wb3J0RXJyb3IgaWYgYW55dGhpbmcgcHJldmVudHMgaXQKICAgICAgICAgZnJvbSBjcmVhdGluZyBhIG5ldyBtb2R1bGUuICBJdCBtYXkgcmV0dXJuIE5vbmUgdG8gaW5kaWNhdGUKICAgICAgICAgdGhhdCB0aGUgc3BlYyBzaG91bGQgY3JlYXRlIHRoZSBuZXcgbW9kdWxlLgotCi0gICAgICAgIGNyZWF0ZV9tb2R1bGUoKSBpcyBvcHRpb25hbC4KLQogICAgICAgICAiIiIKLSAgICAgICAgIyBCeSBkZWZhdWx0LCBkZWZlciB0byBfU3BlY01ldGhvZHMuY3JlYXRlKCkgZm9yIHRoZSBuZXcgbW9kdWxlLgorICAgICAgICAjIEJ5IGRlZmF1bHQsIGRlZmVyIHRvIGRlZmF1bHQgc2VtYW50aWNzIGZvciB0aGUgbmV3IG1vZHVsZS4KICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICMgV2UgZG9uJ3QgZGVmaW5lIGV4ZWNfbW9kdWxlKCkgaGVyZSBzaW5jZSB0aGF0IHdvdWxkIGJyZWFrCkBAIC0yMTcsMTUgKzIyMywxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKIAotICAgIGRlZiBzb3VyY2VfdG9fY29kZShzZWxmLCBkYXRhLCBwYXRoPSc8c3RyaW5nPicpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgc291cmNlX3RvX2NvZGUoZGF0YSwgcGF0aD0nPHN0cmluZz4nKToKICAgICAgICAgIiIiQ29tcGlsZSAnZGF0YScgaW50byBhIGNvZGUgb2JqZWN0LgogCiAgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgY2FuIGJlIGFueXRoaW5nIHRoYXQgY29tcGlsZSgpIGNhbiBoYW5kbGUuIFRoZSdwYXRoJwogICAgICAgICBhcmd1bWVudCBzaG91bGQgYmUgd2hlcmUgdGhlIGRhdGEgd2FzIHJldHJpZXZlZCAod2hlbiBhcHBsaWNhYmxlKS4iIiIKICAgICAgICAgcmV0dXJuIGNvbXBpbGUoZGF0YSwgcGF0aCwgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKIAotICAgIGV4ZWNfbW9kdWxlID0gX2Jvb3RzdHJhcC5fTG9hZGVyQmFzaWNzLmV4ZWNfbW9kdWxlCi0gICAgbG9hZF9tb2R1bGUgPSBfYm9vdHN0cmFwLl9Mb2FkZXJCYXNpY3MubG9hZF9tb2R1bGUKKyAgICBleGVjX21vZHVsZSA9IF9ib290c3RyYXBfZXh0ZXJuYWwuX0xvYWRlckJhc2ljcy5leGVjX21vZHVsZQorICAgIGxvYWRfbW9kdWxlID0gX2Jvb3RzdHJhcF9leHRlcm5hbC5fTG9hZGVyQmFzaWNzLmxvYWRfbW9kdWxlCiAKIF9yZWdpc3RlcihJbnNwZWN0TG9hZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIpCiAKQEAgLTI2Nyw3ICsyNzQsNyBAQAogX3JlZ2lzdGVyKEV4ZWN1dGlvbkxvYWRlciwgbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIpCiAKIAotY2xhc3MgRmlsZUxvYWRlcihfYm9vdHN0cmFwLkZpbGVMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgorY2xhc3MgRmlsZUxvYWRlcihfYm9vdHN0cmFwX2V4dGVybmFsLkZpbGVMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBwYXJ0aWFsbHkgaW1wbGVtZW50aW5nIHRoZSBSZXNvdXJjZUxvYWRlciBhbmQKICAgICBFeGVjdXRpb25Mb2FkZXIgQUJDcy4iIiIKQEAgLTI3Niw3ICsyODMsNyBAQAogICAgICAgICAgICAgbWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAKLWNsYXNzIFNvdXJjZUxvYWRlcihfYm9vdHN0cmFwLlNvdXJjZUxvYWRlciwgUmVzb3VyY2VMb2FkZXIsIEV4ZWN1dGlvbkxvYWRlcik6CitjbGFzcyBTb3VyY2VMb2FkZXIoX2Jvb3RzdHJhcF9leHRlcm5hbC5Tb3VyY2VMb2FkZXIsIFJlc291cmNlTG9hZGVyLCBFeGVjdXRpb25Mb2FkZXIpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgbG9hZGluZyBzb3VyY2UgY29kZSAoYW5kIG9wdGlvbmFsbHkgYW55CiAgICAgY29ycmVzcG9uZGluZyBieXRlY29kZSkuCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL21hY2hpbmVyeS5weSBiL0xpYi9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5CmluZGV4IDJlMWIyZDcuLjFiMmI1YzkgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5CkBAIC0yLDE4ICsyLDE4IEBACiAKIGltcG9ydCBfaW1wCiAKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IChTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAotICAgICAgICAgICAgICAgICAgICAgICAgIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRVhURU5TSU9OX1NVRkZJWEVTKQogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgTW9kdWxlU3BlYwogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgQnVpbHRpbkltcG9ydGVyCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGcm96ZW5JbXBvcnRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgV2luZG93c1JlZ2lzdHJ5RmluZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBQYXRoRmluZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGaWxlRmluZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VsZXNzRmlsZUxvYWRlcgotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRXh0ZW5zaW9uRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgKFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMsIEJZVEVDT0RFX1NVRkZJWEVTLAorICAgICAgICAgICAgICAgICAgICAgRVhURU5TSU9OX1NVRkZJWEVTKQorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgV2luZG93c1JlZ2lzdHJ5RmluZGVyCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBQYXRoRmluZGVyCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBGaWxlRmluZGVyCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBTb3VyY2VsZXNzRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgRXh0ZW5zaW9uRmlsZUxvYWRlcgogCiAKIGRlZiBhbGxfc3VmZml4ZXMoKToKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQppbmRleCA2ZDczYjFkLi4xZGJmZjI2IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3V0aWwucHkKKysrIGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CkBAIC0xLDE3ICsxLDE5IEBACiAiIiJVdGlsaXR5IGNvZGUgZm9yIGNvbnN0cnVjdGluZyBpbXBvcnRlcnMsIGV0Yy4iIiIKLQotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgTUFHSUNfTlVNQkVSCi1mcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgZGVjb2RlX3NvdXJjZQotZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc291cmNlX2Zyb21fY2FjaGUKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNwZWNfZnJvbV9sb2FkZXIKLWZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCitmcm9tIC4gaW1wb3J0IGFiYworZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgbW9kdWxlX2Zyb21fc3BlYwogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgX3Jlc29sdmVfbmFtZQorZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgc3BlY19mcm9tX2xvYWRlcgogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgX2ZpbmRfc3BlYworZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgTUFHSUNfTlVNQkVSCitmcm9tIC5fYm9vdHN0cmFwX2V4dGVybmFsIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgZGVjb2RlX3NvdXJjZQorZnJvbSAuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgc291cmNlX2Zyb21fY2FjaGUKK2Zyb20gLl9ib290c3RyYXBfZXh0ZXJuYWwgaW1wb3J0IHNwZWNfZnJvbV9maWxlX2xvY2F0aW9uCiAKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHdhcm5pbmdzCiAKIApAQCAtNTQsNyArNTYsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzcGVjID0gbW9kdWxlLl9fc3BlY19fCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkgZnJvbSBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19zcGVjX18gaXMgTm9uZScuZm9ybWF0KG5hbWUpKQpAQCAtOTQsNyArOTYsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzcGVjID0gbW9kdWxlLl9fc3BlY19fCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fc3BlY19fIGlzIG5vdCBzZXQnLmZvcm1hdChuYW1lKSkgZnJvbSBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigne30uX19zcGVjX18gaXMgTm9uZScuZm9ybWF0KG5hbWUpKQpAQCAtMjAwLDMgKzIwMiw5NCBAQAogICAgICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBtb2R1bGUsICphcmdzLCAqKmt3YXJncykKIAogICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCisKKworY2xhc3MgX01vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKworICAgICIiIkEgc3ViY2xhc3Mgb2YgdGhlIG1vZHVsZSB0eXBlIHRvIGFsbG93IF9fY2xhc3NfXyBtYW5pcHVsYXRpb24uIiIiCisKKworY2xhc3MgX0xhenlNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisKKyAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB3aGljaCB0cmlnZ2VycyBsb2FkaW5nIHVwb24gYXR0cmlidXRlIGFjY2Vzcy4iIiIKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIGF0dHIpOgorICAgICAgICAiIiJUcmlnZ2VyIHRoZSBsb2FkIG9mIHRoZSBtb2R1bGUgYW5kIHJldHVybiB0aGUgYXR0cmlidXRlLiIiIgorICAgICAgICAjIEFsbCBtb2R1bGUgbWV0YWRhdGEgbXVzdCBiZSBnYXJuZXJlZCBmcm9tIF9fc3BlY19fIGluIG9yZGVyIHRvIGF2b2lkCisgICAgICAgICMgdXNpbmcgbXV0YXRlZCB2YWx1ZXMuCisgICAgICAgICMgU3RvcCB0cmlnZ2VyaW5nIHRoaXMgbWV0aG9kLgorICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IF9Nb2R1bGUKKyAgICAgICAgIyBHZXQgdGhlIG9yaWdpbmFsIG5hbWUgdG8gbWFrZSBzdXJlIG5vIG9iamVjdCBzdWJzdGl0dXRpb24gb2NjdXJyZWQKKyAgICAgICAgIyBpbiBzeXMubW9kdWxlcy4KKyAgICAgICAgb3JpZ2luYWxfbmFtZSA9IHNlbGYuX19zcGVjX18ubmFtZQorICAgICAgICAjIEZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IGF0dHJpYnV0ZXMgd2VyZSBtdXRhdGVkIGJldHdlZW4gdGhlIGNyZWF0aW9uCisgICAgICAgICMgb2YgdGhlIG1vZHVsZSBhbmQgbm93LgorICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGUKKyAgICAgICAgYXR0cnNfbm93ID0gc2VsZi5fX2RpY3RfXworICAgICAgICBhdHRyc191cGRhdGVkID0ge30KKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXR0cnNfbm93Lml0ZW1zKCk6CisgICAgICAgICAgICAjIENvZGUgdGhhdCBzZXQgdGhlIGF0dHJpYnV0ZSBtYXkgaGF2ZSBrZXB0IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICAgICAgIyBhc3NpZ25lZCBvYmplY3QsIG1ha2luZyBpZGVudGl0eSBtb3JlIGltcG9ydGFudCB0aGFuIGVxdWFsaXR5LgorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBhdHRyc190aGVuOgorICAgICAgICAgICAgICAgIGF0dHJzX3VwZGF0ZWRba2V5XSA9IHZhbHVlCisgICAgICAgICAgICBlbGlmIGlkKGF0dHJzX25vd1trZXldKSAhPSBpZChhdHRyc190aGVuW2tleV0pOgorICAgICAgICAgICAgICAgIGF0dHJzX3VwZGF0ZWRba2V5XSA9IHZhbHVlCisgICAgICAgIHNlbGYuX19zcGVjX18ubG9hZGVyLmV4ZWNfbW9kdWxlKHNlbGYpCisgICAgICAgICMgSWYgZXhlY19tb2R1bGUoKSB3YXMgdXNlZCBkaXJlY3RseSB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhlIG1vZHVsZQorICAgICAgICAjIG9iamVjdCB3YXMgcHV0IGludG8gc3lzLm1vZHVsZXMuCisgICAgICAgIGlmIG9yaWdpbmFsX25hbWUgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBpZiBpZChzZWxmKSAhPSBpZChzeXMubW9kdWxlc1tvcmlnaW5hbF9uYW1lXSk6CisgICAgICAgICAgICAgICAgbXNnID0gKCdtb2R1bGUgb2JqZWN0IGZvciB7IXJ9IHN1YnN0aXR1dGVkIGluIHN5cy5tb2R1bGVzICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2R1cmluZyBhIGxhenkgbG9hZCcpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZy5mb3JtYXQob3JpZ2luYWxfbmFtZSkpCisgICAgICAgICMgVXBkYXRlIGFmdGVyIGxvYWRpbmcgc2luY2UgdGhhdCdzIHdoYXQgd291bGQgaGFwcGVuIGluIGFuIGVhZ2VyCisgICAgICAgICMgbG9hZGluZyBzaXR1YXRpb24uCisgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGF0dHJzX3VwZGF0ZWQpCisgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIGF0dHIpCisKKyAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgYXR0cik6CisgICAgICAgICIiIlRyaWdnZXIgdGhlIGxvYWQgYW5kIHRoZW4gcGVyZm9ybSB0aGUgZGVsZXRpb24uIiIiCisgICAgICAgICMgVG8gdHJpZ2dlciB0aGUgbG9hZCBhbmQgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhdHRyaWJ1dGUKKyAgICAgICAgIyBkb2Vzbid0IGV4aXN0LgorICAgICAgICBzZWxmLl9fZ2V0YXR0cmlidXRlX18oYXR0cikKKyAgICAgICAgZGVsYXR0cihzZWxmLCBhdHRyKQorCisKK2NsYXNzIExhenlMb2FkZXIoYWJjLkxvYWRlcik6CisKKyAgICAiIiJBIGxvYWRlciB0aGF0IGNyZWF0ZXMgYSBtb2R1bGUgd2hpY2ggZGVmZXJzIGxvYWRpbmcgdW50aWwgYXR0cmlidXRlIGFjY2Vzcy4iIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX19jaGVja19lYWdlcl9sb2FkZXIobG9hZGVyKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIobG9hZGVyLCAnZXhlY19tb2R1bGUnKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbG9hZGVyIG11c3QgZGVmaW5lIGV4ZWNfbW9kdWxlKCknKQorICAgICAgICBlbGlmIGhhc2F0dHIobG9hZGVyLl9fY2xhc3NfXywgJ2NyZWF0ZV9tb2R1bGUnKToKKyAgICAgICAgICAgIGlmIGFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZSAhPSBsb2FkZXIuX19jbGFzc19fLmNyZWF0ZV9tb2R1bGU6CisgICAgICAgICAgICAgICAgIyBPbmx5IGNhcmUgaWYgY3JlYXRlX21vZHVsZSgpIGlzIG92ZXJyaWRkZW4gaW4gYSBzdWJjbGFzcyBvZgorICAgICAgICAgICAgICAgICMgaW1wb3J0bGliLmFiYy5Mb2FkZXIuCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdsb2FkZXIgY2Fubm90IGRlZmluZSBjcmVhdGVfbW9kdWxlKCknKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZhY3RvcnkoY2xzLCBsb2FkZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYSBjYWxsYWJsZSB3aGljaCByZXR1cm5zIHRoZSBlYWdlciBsb2FkZXIgbWFkZSBsYXp5LiIiIgorICAgICAgICBjbHMuX19jaGVja19lYWdlcl9sb2FkZXIobG9hZGVyKQorICAgICAgICByZXR1cm4gbGFtYmRhICphcmdzLCAqKmt3YXJnczogY2xzKGxvYWRlcigqYXJncywgKiprd2FyZ3MpKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvYWRlcik6CisgICAgICAgIHNlbGYuX19jaGVja19lYWdlcl9sb2FkZXIobG9hZGVyKQorICAgICAgICBzZWxmLmxvYWRlciA9IGxvYWRlcgorCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICIiIkNyZWF0ZSBhIG1vZHVsZSB3aGljaCBjYW4gaGF2ZSBpdHMgX19jbGFzc19fIG1hbmlwdWxhdGVkLiIiIgorICAgICAgICByZXR1cm4gX01vZHVsZShzcGVjLm5hbWUpCisKKyAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiTWFrZSB0aGUgbW9kdWxlIGxvYWQgbGF6aWx5LiIiIgorICAgICAgICBtb2R1bGUuX19zcGVjX18ubG9hZGVyID0gc2VsZi5sb2FkZXIKKyAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmLmxvYWRlcgorICAgICAgICAjIERvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgZGVlcC1jb3B5aW5nIGFzIHRyeWluZyB0byBzZXQgYW4gYXR0cmlidXRlCisgICAgICAgICMgb24gYW4gb2JqZWN0IHdvdWxkIGhhdmUgdHJpZ2dlcmVkIHRoZSBsb2FkLAorICAgICAgICAjIGUuZy4gYGBtb2R1bGUuX19zcGVjX18ubG9hZGVyID0gTm9uZWBgIHdvdWxkIHRyaWdnZXIgYSBsb2FkIGZyb20KKyAgICAgICAgIyB0cnlpbmcgdG8gYWNjZXNzIG1vZHVsZS5fX3NwZWNfXy4KKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlcl9zdGF0ZSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgbW9kdWxlLl9fY2xhc3NfXyA9IF9MYXp5TW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW5zcGVjdC5weSBiL0xpYi9pbnNwZWN0LnB5CmluZGV4IDQyOThkZTYuLmJmNGY4N2QgMTAwNjQ0Ci0tLSBhL0xpYi9pbnNwZWN0LnB5CisrKyBiL0xpYi9pbnNwZWN0LnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgZ2V0Y2xhc3N0cmVlKCkgLSBhcnJhbmdlIGNsYXNzZXMgc28gYXMgdG8gcmVwcmVzZW50IHRoZWlyIGhpZXJhcmNoeQogCiAgICAgZ2V0YXJnc3BlYygpLCBnZXRhcmd2YWx1ZXMoKSwgZ2V0Y2FsbGFyZ3MoKSAtIGdldCBpbmZvIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cwotICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbi0zMDAwIGZlYXR1cmVzCisgICAgZ2V0ZnVsbGFyZ3NwZWMoKSAtIHNhbWUsIHdpdGggc3VwcG9ydCBmb3IgUHl0aG9uIDMgZmVhdHVyZXMKICAgICBmb3JtYXRhcmdzcGVjKCksIGZvcm1hdGFyZ3ZhbHVlcygpIC0gZm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMKICAgICBnZXRvdXRlcmZyYW1lcygpLCBnZXRpbm5lcmZyYW1lcygpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzCiAgICAgY3VycmVudGZyYW1lKCkgLSBnZXQgdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUKQEAgLTMyLDYgKzMyLDkgQEAKICAgICAgICAgICAgICAgJ1l1cnkgU2VsaXZhbm92IDx5c2VsaXZhbm92QHNwcnltaXguY29tPicpCiAKIGltcG9ydCBhc3QKK2ltcG9ydCBkaXMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2ltcG9ydCBlbnVtCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxpbmVjYWNoZQpAQCAtNDgsMTggKzUxLDEwIEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLCBPcmRlcmVkRGljdAogCiAjIENyZWF0ZSBjb25zdGFudHMgZm9yIHRoZSBjb21waWxlciBmbGFncyBpbiBJbmNsdWRlL2NvZGUuaAotIyBXZSB0cnkgdG8gZ2V0IHRoZW0gZnJvbSBkaXMgdG8gYXZvaWQgZHVwbGljYXRpb24sIGJ1dCBmYWxsCi0jIGJhY2sgdG8gaGFyZC1jb2Rpbmcgc28gdGhlIGRlcGVuZGVuY3kgaXMgb3B0aW9uYWwKLXRyeToKLSAgICBmcm9tIGRpcyBpbXBvcnQgQ09NUElMRVJfRkxBR19OQU1FUyBhcyBfZmxhZ19uYW1lcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIENPX09QVElNSVpFRCwgQ09fTkVXTE9DQUxTID0gMHgxLCAweDIKLSAgICBDT19WQVJBUkdTLCBDT19WQVJLRVlXT1JEUyA9IDB4NCwgMHg4Ci0gICAgQ09fTkVTVEVELCBDT19HRU5FUkFUT1IsIENPX05PRlJFRSA9IDB4MTAsIDB4MjAsIDB4NDAKLWVsc2U6Ci0gICAgbW9kX2RpY3QgPSBnbG9iYWxzKCkKLSAgICBmb3IgaywgdiBpbiBfZmxhZ19uYW1lcy5pdGVtcygpOgotICAgICAgICBtb2RfZGljdFsiQ09fIiArIHZdID0gaworIyBXZSB0cnkgdG8gZ2V0IHRoZW0gZnJvbSBkaXMgdG8gYXZvaWQgZHVwbGljYXRpb24KK21vZF9kaWN0ID0gZ2xvYmFscygpCitmb3IgaywgdiBpbiBkaXMuQ09NUElMRVJfRkxBR19OQU1FUy5pdGVtcygpOgorICAgIG1vZF9kaWN0WyJDT18iICsgdl0gPSBrCiAKICMgU2VlIEluY2x1ZGUvb2JqZWN0LmgKIFRQRkxBR1NfSVNfQUJTVFJBQ1QgPSAxIDw8IDIwCkBAIC0xODIsNiArMTc3LDE1IEBACiAgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKICAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19HRU5FUkFUT1IpCiAKK2RlZiBpc2Nvcm91dGluZWZ1bmN0aW9uKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGNvcm91dGluZSBmdW5jdGlvbi4KKworICAgIENvcm91dGluZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXgsCisgICAgb3IgZ2VuZXJhdG9ycyBkZWNvcmF0ZWQgd2l0aCAidHlwZXMuY29yb3V0aW5lIi4KKyAgICAiIiIKKyAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAorICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0NPUk9VVElORSkKKwogZGVmIGlzZ2VuZXJhdG9yKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KIApAQCAtMTk5LDYgKzIwMywxNyBAQAogICAgICAgICB0aHJvdyAgICAgICAgICAgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24gaW5zaWRlIHRoZSBnZW5lcmF0b3IiIiIKICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLkdlbmVyYXRvclR5cGUpCiAKK2RlZiBpc2Nvcm91dGluZShvYmplY3QpOgorICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUuIiIiCisgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Db3JvdXRpbmVUeXBlKQorCitkZWYgaXNhd2FpdGFibGUob2JqZWN0KToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpcyBvYmplY3QgY2FuIGJlIHBhc3NlZCB0byBhbiBgYGF3YWl0YGAgZXhwcmVzc2lvbi4iIiIKKyAgICByZXR1cm4gKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Db3JvdXRpbmVUeXBlKSBvcgorICAgICAgICAgICAgaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLkdlbmVyYXRvclR5cGUpIGFuZAorICAgICAgICAgICAgICAgIG9iamVjdC5naV9jb2RlLmNvX2ZsYWdzICYgQ09fSVRFUkFCTEVfQ09ST1VUSU5FIG9yCisgICAgICAgICAgICBpc2luc3RhbmNlKG9iamVjdCwgY29sbGVjdGlvbnMuYWJjLkF3YWl0YWJsZSkpCisKIGRlZiBpc3RyYWNlYmFjayhvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB0cmFjZWJhY2suCiAKQEAgLTQ2Nyw2ICs0ODIsNzQgQEAKICAgICBleHBsaW5lID0gbGluZS5leHBhbmR0YWJzKCkKICAgICByZXR1cm4gbGVuKGV4cGxpbmUpIC0gbGVuKGV4cGxpbmUubHN0cmlwKCkpCiAKK2RlZiBfZmluZGNsYXNzKGZ1bmMpOgorICAgIGNscyA9IHN5cy5tb2R1bGVzLmdldChmdW5jLl9fbW9kdWxlX18pCisgICAgaWYgY2xzIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgZm9yIG5hbWUgaW4gZnVuYy5fX3F1YWxuYW1lX18uc3BsaXQoJy4nKVs6LTFdOgorICAgICAgICBjbHMgPSBnZXRhdHRyKGNscywgbmFtZSkKKyAgICBpZiBub3QgaXNjbGFzcyhjbHMpOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIHJldHVybiBjbHMKKworZGVmIF9maW5kZG9jKG9iaik6CisgICAgaWYgaXNjbGFzcyhvYmopOgorICAgICAgICBmb3IgYmFzZSBpbiBvYmouX19tcm9fXzoKKyAgICAgICAgICAgIGlmIGJhc2UgaXMgbm90IG9iamVjdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRvYyA9IGJhc2UuX19kb2NfXworICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBkb2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkb2MKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGlmIGlzbWV0aG9kKG9iaik6CisgICAgICAgIG5hbWUgPSBvYmouX19mdW5jX18uX19uYW1lX18KKyAgICAgICAgc2VsZiA9IG9iai5fX3NlbGZfXworICAgICAgICBpZiAoaXNjbGFzcyhzZWxmKSBhbmQKKyAgICAgICAgICAgIGdldGF0dHIoZ2V0YXR0cihzZWxmLCBuYW1lLCBOb25lKSwgJ19fZnVuY19fJykgaXMgb2JqLl9fZnVuY19fKToKKyAgICAgICAgICAgICMgY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGNscyA9IHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgZWxpZiBpc2Z1bmN0aW9uKG9iaik6CisgICAgICAgIG5hbWUgPSBvYmouX19uYW1lX18KKyAgICAgICAgY2xzID0gX2ZpbmRjbGFzcyhvYmopCisgICAgICAgIGlmIGNscyBpcyBOb25lIG9yIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbGlmIGlzYnVpbHRpbihvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCisgICAgICAgIHNlbGYgPSBvYmouX19zZWxmX18KKyAgICAgICAgaWYgKGlzY2xhc3Moc2VsZikgYW5kCisgICAgICAgICAgICBzZWxmLl9fcXVhbG5hbWVfXyArICcuJyArIG5hbWUgPT0gb2JqLl9fcXVhbG5hbWVfXyk6CisgICAgICAgICAgICAjIGNsYXNzbWV0aG9kCisgICAgICAgICAgICBjbHMgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbHMgPSBzZWxmLl9fY2xhc3NfXworICAgIGVsaWYgaXNtZXRob2RkZXNjcmlwdG9yKG9iaikgb3IgaXNkYXRhZGVzY3JpcHRvcihvYmopOgorICAgICAgICBuYW1lID0gb2JqLl9fbmFtZV9fCisgICAgICAgIGNscyA9IG9iai5fX29iamNsYXNzX18KKyAgICAgICAgaWYgZ2V0YXR0cihjbHMsIG5hbWUpIGlzIG5vdCBvYmo6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHByb3BlcnR5KToKKyAgICAgICAgZnVuYyA9IGYuZmdldAorICAgICAgICBuYW1lID0gZnVuYy5fX25hbWVfXworICAgICAgICBjbHMgPSBfZmluZGNsYXNzKGZ1bmMpCisgICAgICAgIGlmIGNscyBpcyBOb25lIG9yIGdldGF0dHIoY2xzLCBuYW1lKSBpcyBub3Qgb2JqOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZm9yIGJhc2UgaW4gY2xzLl9fbXJvX186CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRvYyA9IGdldGF0dHIoYmFzZSwgbmFtZSkuX19kb2NfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBkb2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gZG9jCisgICAgcmV0dXJuIE5vbmUKKwogZGVmIGdldGRvYyhvYmplY3QpOgogICAgICIiIkdldCB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgZm9yIGFuIG9iamVjdC4KIApAQCAtNDc3LDYgKzU2MCwxMSBAQAogICAgICAgICBkb2MgPSBvYmplY3QuX19kb2NfXwogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBpZiBkb2MgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZG9jID0gX2ZpbmRkb2Mob2JqZWN0KQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICBpZiBub3QgaXNpbnN0YW5jZShkb2MsIHN0cik6CiAgICAgICAgIHJldHVybiBOb25lCiAgICAgcmV0dXJuIGNsZWFuZG9jKGRvYykKQEAgLTcxMCw3ICs3OTgsNyBAQAogICAgICAgICBpZiBub3QgaGFzYXR0cihvYmplY3QsICdjb19maXJzdGxpbmVubycpOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignY291bGQgbm90IGZpbmQgZnVuY3Rpb24gZGVmaW5pdGlvbicpCiAgICAgICAgIGxudW0gPSBvYmplY3QuY29fZmlyc3RsaW5lbm8gLSAxCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocideKFxzKmRlZlxzKXwoLiooPzwhXHcpbGFtYmRhKDp8XHMpKXxeKFxzKkApJykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ14oXHMqZGVmXHMpfChccyphc3luY1xzK2RlZlxzKXwoLiooPzwhXHcpbGFtYmRhKDp8XHMpKXxeKFxzKkApJykKICAgICAgICAgd2hpbGUgbG51bSA+IDA6CiAgICAgICAgICAgICBpZiBwYXQubWF0Y2gobGluZXNbbG51bV0pOiBicmVhawogICAgICAgICAgICAgbG51bSA9IGxudW0gLSAxCkBAIC03NzEsMjEgKzg1OSwzNyBAQAogICAgICAgICBzZWxmLmlzbGFtYmRhID0gRmFsc2UKICAgICAgICAgc2VsZi5zdGFydGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5wYXNzbGluZSA9IEZhbHNlCisgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBGYWxzZQorICAgICAgICBzZWxmLmRlY29yYXRvcmhhc2FyZ3MgPSBGYWxzZQogICAgICAgICBzZWxmLmxhc3QgPSAxCiAKICAgICBkZWYgdG9rZW5lYXRlcihzZWxmLCB0eXBlLCB0b2tlbiwgc3Jvd2NvbCwgZXJvd2NvbCwgbGluZSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnN0YXJ0ZWQ6CisgICAgICAgIGlmIG5vdCBzZWxmLnN0YXJ0ZWQgYW5kIG5vdCBzZWxmLmluZGVjb3JhdG9yOgorICAgICAgICAgICAgIyBza2lwIGFueSBkZWNvcmF0b3JzCisgICAgICAgICAgICBpZiB0b2tlbiA9PSAiQCI6CisgICAgICAgICAgICAgICAgc2VsZi5pbmRlY29yYXRvciA9IFRydWUKICAgICAgICAgICAgICMgbG9vayBmb3IgdGhlIGZpcnN0ICJkZWYiLCAiY2xhc3MiIG9yICJsYW1iZGEiCi0gICAgICAgICAgICBpZiB0b2tlbiBpbiAoImRlZiIsICJjbGFzcyIsICJsYW1iZGEiKToKKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gKCJkZWYiLCAiY2xhc3MiLCAibGFtYmRhIik6CiAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gImxhbWJkYSI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXNsYW1iZGEgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5zdGFydGVkID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5wYXNzbGluZSA9IFRydWUgICAgIyBza2lwIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUKKyAgICAgICAgZWxpZiB0b2tlbiA9PSAiKCI6CisgICAgICAgICAgICBpZiBzZWxmLmluZGVjb3JhdG9yOgorICAgICAgICAgICAgICAgIHNlbGYuZGVjb3JhdG9yaGFzYXJncyA9IFRydWUKKyAgICAgICAgZWxpZiB0b2tlbiA9PSAiKSI6CisgICAgICAgICAgICBpZiBzZWxmLmluZGVjb3JhdG9yOgorICAgICAgICAgICAgICAgIHNlbGYuaW5kZWNvcmF0b3IgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuZGVjb3JhdG9yaGFzYXJncyA9IEZhbHNlCiAgICAgICAgIGVsaWYgdHlwZSA9PSB0b2tlbml6ZS5ORVdMSU5FOgogICAgICAgICAgICAgc2VsZi5wYXNzbGluZSA9IEZhbHNlICAgIyBzdG9wIHNraXBwaW5nIHdoZW4gYSBORVdMSU5FIGlzIHNlZW4KICAgICAgICAgICAgIHNlbGYubGFzdCA9IHNyb3djb2xbMF0KICAgICAgICAgICAgIGlmIHNlbGYuaXNsYW1iZGE6ICAgICAgICMgbGFtYmRhcyBhbHdheXMgZW5kIGF0IHRoZSBmaXJzdCBORVdMSU5FCiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kT2ZCbG9jaworICAgICAgICAgICAgIyBoaXR0aW5nIGEgTkVXTElORSB3aGVuIGluIGEgZGVjb3JhdG9yIHdpdGhvdXQgYXJncworICAgICAgICAgICAgIyBlbmRzIHRoZSBkZWNvcmF0b3IKKyAgICAgICAgICAgIGlmIHNlbGYuaW5kZWNvcmF0b3IgYW5kIG5vdCBzZWxmLmRlY29yYXRvcmhhc2FyZ3M6CisgICAgICAgICAgICAgICAgc2VsZi5pbmRlY29yYXRvciA9IEZhbHNlCiAgICAgICAgIGVsaWYgc2VsZi5wYXNzbGluZToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxpZiB0eXBlID09IHRva2VuaXplLklOREVOVDoKQEAgLTgyMiwxMCArOTI2LDEzIEBACiAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgb2JqZWN0IGFuZCB0aGUgbGluZSBudW1iZXIgaW5kaWNhdGVzIHdoZXJlIGluIHRoZQogICAgIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdCBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gT1NFcnJvciBpcwogICAgIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90IGJlIHJldHJpZXZlZC4iIiIKKyAgICBvYmplY3QgPSB1bndyYXAob2JqZWN0KQogICAgIGxpbmVzLCBsbnVtID0gZmluZHNvdXJjZShvYmplY3QpCiAKLSAgICBpZiBpc21vZHVsZShvYmplY3QpOiByZXR1cm4gbGluZXMsIDAKLSAgICBlbHNlOiByZXR1cm4gZ2V0YmxvY2sobGluZXNbbG51bTpdKSwgbG51bSArIDEKKyAgICBpZiBpc21vZHVsZShvYmplY3QpOgorICAgICAgICByZXR1cm4gbGluZXMsIDAKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZ2V0YmxvY2sobGluZXNbbG51bTpdKSwgbG51bSArIDEKIAogZGVmIGdldHNvdXJjZShvYmplY3QpOgogICAgICIiIlJldHVybiB0aGUgdGV4dCBvZiB0aGUgc291cmNlIGNvZGUgZm9yIGFuIG9iamVjdC4KQEAgLTkxOSwxNyArMTAyNiwxOCBAQAogZGVmIGdldGFyZ3NwZWMoZnVuYyk6CiAgICAgIiIiR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBmdW5jdGlvbidzIGFyZ3VtZW50cy4KIAotICAgIEEgdHVwbGUgb2YgZm91ciB0aGluZ3MgaXMgcmV0dXJuZWQ6IChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMpLgotICAgICdhcmdzJyBpcyBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50IG5hbWVzLgotICAgICdhcmdzJyB3aWxsIGluY2x1ZGUga2V5d29yZC1vbmx5IGFyZ3VtZW50IG5hbWVzLgotICAgICd2YXJhcmdzJyBhbmQgJ3Zhcmt3JyBhcmUgdGhlIG5hbWVzIG9mIHRoZSAqIGFuZCAqKiBhcmd1bWVudHMgb3IgTm9uZS4KKyAgICBBIHR1cGxlIG9mIGZvdXIgdGhpbmdzIGlzIHJldHVybmVkOiAoYXJncywgdmFyYXJncywga2V5d29yZHMsIGRlZmF1bHRzKS4KKyAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcywgaW5jbHVkaW5nIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4KKyAgICAndmFyYXJncycgYW5kICdrZXl3b3JkcycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCiAgICAgJ2RlZmF1bHRzJyBpcyBhbiBuLXR1cGxlIG9mIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4KIAotICAgIFVzZSB0aGUgZ2V0ZnVsbGFyZ3NwZWMoKSBBUEkgZm9yIFB5dGhvbi0zMDAwIGNvZGUsIGFzIGFubm90YXRpb25zCisgICAgVXNlIHRoZSBnZXRmdWxsYXJnc3BlYygpIEFQSSBmb3IgUHl0aG9uIDMgY29kZSwgYXMgYW5ub3RhdGlvbnMKICAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgYXJlIHN1cHBvcnRlZC4gZ2V0YXJnc3BlYygpIHdpbGwgcmFpc2UgVmFsdWVFcnJvcgogICAgIGlmIHRoZSBmdW5jIGhhcyBlaXRoZXIgYW5ub3RhdGlvbnMgb3Iga2V5d29yZCBhcmd1bWVudHMuCiAgICAgIiIiCi0KKyAgICB3YXJuaW5ncy53YXJuKCJpbnNwZWN0LmdldGFyZ3NwZWMoKSBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAgICAgICAidXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKICAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm4gPSBcCiAgICAgICAgIGdldGZ1bGxhcmdzcGVjKGZ1bmMpCiAgICAgaWYga3dvbmx5YXJncyBvciBhbm46CkBAIC05NTMsNiArMTA2MSw4IEBACiAgICAgJ2Fubm90YXRpb25zJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudCBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAogICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIGdldGFyZ3NwZWMoKS4KKworICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KICAgICAiIiIKIAogICAgIHRyeToKQEAgLTk3Miw5ICsxMDgyLDEwIEBACiAgICAgICAgICMgZ2V0ZnVsbGFyZ3NwZWMoKSBoaXN0b3JpY2FsbHkgaWdub3JlZCBfX3dyYXBwZWRfXyBhdHRyaWJ1dGVzLAogICAgICAgICAjIHNvIHdlIGVuc3VyZSB0aGF0IHJlbWFpbnMgdGhlIGNhc2UgaW4gMy4zKwogCi0gICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwoZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UpCisgICAgICAgIHNpZyA9IF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWdjbHM9U2lnbmF0dXJlKQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CiAgICAgICAgICMgTW9zdCBvZiB0aGUgdGltZXMgJ3NpZ25hdHVyZScgd2lsbCByYWlzZSBWYWx1ZUVycm9yLgogICAgICAgICAjIEJ1dCwgaXQgY2FuIGFsc28gcmFpc2UgQXR0cmlidXRlRXJyb3IsIGFuZCwgbWF5YmUgc29tZXRoaW5nCkBAIC0xMDQzLDggKzExNTQsOCBAQAogZGVmIGZvcm1hdGFubm90YXRpb24oYW5ub3RhdGlvbiwgYmFzZV9tb2R1bGU9Tm9uZSk6CiAgICAgaWYgaXNpbnN0YW5jZShhbm5vdGF0aW9uLCB0eXBlKToKICAgICAgICAgaWYgYW5ub3RhdGlvbi5fX21vZHVsZV9fIGluICgnYnVpbHRpbnMnLCBiYXNlX21vZHVsZSk6Ci0gICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX25hbWVfXwotICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX21vZHVsZV9fKycuJythbm5vdGF0aW9uLl9fbmFtZV9fCisgICAgICAgICAgICByZXR1cm4gYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KKyAgICAgICAgcmV0dXJuIGFubm90YXRpb24uX19tb2R1bGVfXysnLicrYW5ub3RhdGlvbi5fX3F1YWxuYW1lX18KICAgICByZXR1cm4gcmVwcihhbm5vdGF0aW9uKQogCiBkZWYgZm9ybWF0YW5ub3RhdGlvbnJlbGF0aXZldG8ob2JqZWN0KToKQEAgLTEzMTcsNiArMTQyOCw4IEBACiAgICAgIyBGcmFtZVR5cGUuZl9saW5lbm8gaXMgbm93IGEgZGVzY3JpcHRvciB0aGF0IGdyb3ZlbHMgY29fbG5vdGFiCiAgICAgcmV0dXJuIGZyYW1lLmZfbGluZW5vCiAKK0ZyYW1lSW5mbyA9IG5hbWVkdHVwbGUoJ0ZyYW1lSW5mbycsICgnZnJhbWUnLCkgKyBUcmFjZWJhY2suX2ZpZWxkcykKKwogZGVmIGdldG91dGVyZnJhbWVzKGZyYW1lLCBjb250ZXh0PTEpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgcmVjb3JkcyBmb3IgYSBmcmFtZSBhbmQgYWxsIGhpZ2hlciAoY2FsbGluZykgZnJhbWVzLgogCkBAIC0xMzI0LDcgKzE0MzcsOCBAQAogICAgIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0LCBhbmQgaW5kZXggd2l0aGluIHRoZSBjb250ZXh0LiIiIgogICAgIGZyYW1lbGlzdCA9IFtdCiAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoKGZyYW1lLCkgKyBnZXRmcmFtZWluZm8oZnJhbWUsIGNvbnRleHQpKQorICAgICAgICBmcmFtZWluZm8gPSAoZnJhbWUsKSArIGdldGZyYW1laW5mbyhmcmFtZSwgY29udGV4dCkKKyAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbykpCiAgICAgICAgIGZyYW1lID0gZnJhbWUuZl9iYWNrCiAgICAgcmV0dXJuIGZyYW1lbGlzdAogCkBAIC0xMzM1LDcgKzE0NDksOCBAQAogICAgIG5hbWUsIGEgbGlzdCBvZiBsaW5lcyBvZiBjb250ZXh0LCBhbmQgaW5kZXggd2l0aGluIHRoZSBjb250ZXh0LiIiIgogICAgIGZyYW1lbGlzdCA9IFtdCiAgICAgd2hpbGUgdGI6Ci0gICAgICAgIGZyYW1lbGlzdC5hcHBlbmQoKHRiLnRiX2ZyYW1lLCkgKyBnZXRmcmFtZWluZm8odGIsIGNvbnRleHQpKQorICAgICAgICBmcmFtZWluZm8gPSAodGIudGJfZnJhbWUsKSArIGdldGZyYW1laW5mbyh0YiwgY29udGV4dCkKKyAgICAgICAgZnJhbWVsaXN0LmFwcGVuZChGcmFtZUluZm8oKmZyYW1laW5mbykpCiAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgIHJldHVybiBmcmFtZWxpc3QKIApAQCAtMTQ4NSw2ICsxNjAwLDQ1IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHt9CiAKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29yb3V0aW5lIGludHJvc3BlY3Rpb24KKworQ09ST19DUkVBVEVEID0gJ0NPUk9fQ1JFQVRFRCcKK0NPUk9fUlVOTklORyA9ICdDT1JPX1JVTk5JTkcnCitDT1JPX1NVU1BFTkRFRCA9ICdDT1JPX1NVU1BFTkRFRCcKK0NPUk9fQ0xPU0VEID0gJ0NPUk9fQ0xPU0VEJworCitkZWYgZ2V0Y29yb3V0aW5lc3RhdGUoY29yb3V0aW5lKToKKyAgICAiIiJHZXQgY3VycmVudCBzdGF0ZSBvZiBhIGNvcm91dGluZSBvYmplY3QuCisKKyAgICBQb3NzaWJsZSBzdGF0ZXMgYXJlOgorICAgICAgQ09ST19DUkVBVEVEOiBXYWl0aW5nIHRvIHN0YXJ0IGV4ZWN1dGlvbi4KKyAgICAgIENPUk9fUlVOTklORzogQ3VycmVudGx5IGJlaW5nIGV4ZWN1dGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KKyAgICAgIENPUk9fU1VTUEVOREVEOiBDdXJyZW50bHkgc3VzcGVuZGVkIGF0IGFuIGF3YWl0IGV4cHJlc3Npb24uCisgICAgICBDT1JPX0NMT1NFRDogRXhlY3V0aW9uIGhhcyBjb21wbGV0ZWQuCisgICAgIiIiCisgICAgaWYgY29yb3V0aW5lLmNyX3J1bm5pbmc6CisgICAgICAgIHJldHVybiBDT1JPX1JVTk5JTkcKKyAgICBpZiBjb3JvdXRpbmUuY3JfZnJhbWUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIENPUk9fQ0xPU0VECisgICAgaWYgY29yb3V0aW5lLmNyX2ZyYW1lLmZfbGFzdGkgPT0gLTE6CisgICAgICAgIHJldHVybiBDT1JPX0NSRUFURUQKKyAgICByZXR1cm4gQ09ST19TVVNQRU5ERUQKKworCitkZWYgZ2V0Y29yb3V0aW5lbG9jYWxzKGNvcm91dGluZSk6CisgICAgIiIiCisgICAgR2V0IHRoZSBtYXBwaW5nIG9mIGNvcm91dGluZSBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCisKKyAgICBBIGRpY3QgaXMgcmV0dXJuZWQsIHdpdGggdGhlIGtleXMgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFuZCB2YWx1ZXMgdGhlCisgICAgYm91bmQgdmFsdWVzLiIiIgorICAgIGZyYW1lID0gZ2V0YXR0cihjb3JvdXRpbmUsICJjcl9mcmFtZSIsIE5vbmUpCisgICAgaWYgZnJhbWUgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBmcmFtZS5mX2xvY2FscworICAgIGVsc2U6CisgICAgICAgIHJldHVybiB7fQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIyBGdW5jdGlvbiBTaWduYXR1cmUgT2JqZWN0IChQRVAgMzYyKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTUwMSw2ICsxNjU1LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QoY2xzLCBtZXRob2RfbmFtZSk6CisgICAgIiIiUHJpdmF0ZSBoZWxwZXIuIENoZWNrcyBpZiBgYGNsc2BgIGhhcyBhbiBhdHRyaWJ1dGUKKyAgICBuYW1lZCBgYG1ldGhvZF9uYW1lYGAgYW5kIHJldHVybnMgaXQgb25seSBpZiBpdCBpcyBhCisgICAgcHVyZSBweXRob24gZnVuY3Rpb24uCisgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICBtZXRoID0gZ2V0YXR0cihjbHMsIG1ldGhvZF9uYW1lKQogICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKQEAgLTE1MTMsOSArMTY3MSwxMCBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF9wYXJ0aWFsKHdyYXBwZWRfc2lnLCBwYXJ0aWFsLCBleHRyYV9hcmdzPSgpKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBjYWxjdWxhdGUgaG93ICd3cmFwcGVkX3NpZycgc2lnbmF0dXJlIHdpbGwKLSAgICAjIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKLSAgICAjIG9uIGl0LgorICAgICIiIlByaXZhdGUgaGVscGVyIHRvIGNhbGN1bGF0ZSBob3cgJ3dyYXBwZWRfc2lnJyBzaWduYXR1cmUgd2lsbAorICAgIGxvb2sgbGlrZSBhZnRlciBhcHBseWluZyBhICdmdW5jdG9vbHMucGFydGlhbCcgb2JqZWN0IChvciBhbGlrZSkKKyAgICBvbiBpdC4KKyAgICAiIiIKIAogICAgIG9sZF9wYXJhbXMgPSB3cmFwcGVkX3NpZy5wYXJhbWV0ZXJzCiAgICAgbmV3X3BhcmFtcyA9IE9yZGVyZWREaWN0KG9sZF9wYXJhbXMuaXRlbXMoKSkKQEAgLTE1ODgsOCArMTc0Nyw5IEBACiAKIAogZGVmIF9zaWduYXR1cmVfYm91bmRfbWV0aG9kKHNpZyk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKLSAgICAjIGZ1bmN0aW9ucyB0byBib3VuZCBtZXRob2RzCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdHJhbnNmb3JtIHNpZ25hdHVyZXMgZm9yIHVuYm91bmQKKyAgICBmdW5jdGlvbnMgdG8gYm91bmQgbWV0aG9kcy4KKyAgICAiIiIKIAogICAgIHBhcmFtcyA9IHR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQogCkBAIC0xNjEzLDggKzE3NzMsOSBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2lzX2J1aWx0aW4ob2JqKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgY2FsbGFibGUgdGhhdCBtaWdodAotICAgICMgc3VwcG9ydCBBcmd1bWVudCBDbGluaWMncyBfX3RleHRfc2lnbmF0dXJlX18gcHJvdG9jb2wuCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gdGVzdCBpZiBgb2JqYCBpcyBhIGNhbGxhYmxlIHRoYXQgbWlnaHQKKyAgICBzdXBwb3J0IEFyZ3VtZW50IENsaW5pYydzIF9fdGV4dF9zaWduYXR1cmVfXyBwcm90b2NvbC4KKyAgICAiIiIKICAgICByZXR1cm4gKGlzYnVpbHRpbihvYmopIG9yCiAgICAgICAgICAgICBpc21ldGhvZGRlc2NyaXB0b3Iob2JqKSBvcgogICAgICAgICAgICAgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcykgb3IKQEAgLTE2MjQsMTAgKzE3ODUsMTEgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2Uob2JqKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgZHVjayB0eXBlIG9mIEZ1bmN0aW9uVHlwZS4KLSAgICAjIEEgZ29vZCBleGFtcGxlIG9mIHN1Y2ggb2JqZWN0cyBhcmUgZnVuY3Rpb25zIGNvbXBpbGVkIHdpdGgKLSAgICAjIEN5dGhvbiwgd2hpY2ggaGF2ZSBhbGwgYXR0cmlidXRlcyB0aGF0IGEgcHVyZSBQeXRob24gZnVuY3Rpb24KLSAgICAjIHdvdWxkIGhhdmUsIGJ1dCBoYXZlIHRoZWlyIGNvZGUgc3RhdGljYWxseSBjb21waWxlZC4KKyAgICAiIiJQcml2YXRlIGhlbHBlciB0byB0ZXN0IGlmIGBvYmpgIGlzIGEgZHVjayB0eXBlIG9mIEZ1bmN0aW9uVHlwZS4KKyAgICBBIGdvb2QgZXhhbXBsZSBvZiBzdWNoIG9iamVjdHMgYXJlIGZ1bmN0aW9ucyBjb21waWxlZCB3aXRoCisgICAgQ3l0aG9uLCB3aGljaCBoYXZlIGFsbCBhdHRyaWJ1dGVzIHRoYXQgYSBwdXJlIFB5dGhvbiBmdW5jdGlvbgorICAgIHdvdWxkIGhhdmUsIGJ1dCBoYXZlIHRoZWlyIGNvZGUgc3RhdGljYWxseSBjb21waWxlZC4KKyAgICAiIiIKIAogICAgIGlmIG5vdCBjYWxsYWJsZShvYmopIG9yIGlzY2xhc3Mob2JqKToKICAgICAgICAgIyBBbGwgZnVuY3Rpb24tbGlrZSBvYmplY3RzIGFyZSBvYnZpb3VzbHkgY2FsbGFibGVzLApAQCAtMTY0OCwxMSArMTgxMCwxMiBAQAogCiAKIGRlZiBfc2lnbmF0dXJlX2dldF9ib3VuZF9wYXJhbShzcGVjKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBnZXQgZmlyc3QgcGFyYW1ldGVyIG5hbWUgZnJvbSBhCi0gICAgIyBfX3RleHRfc2lnbmF0dXJlX18gb2YgYSBidWlsdGluIG1ldGhvZCwgd2hpY2ggc2hvdWxkCi0gICAgIyBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogJygkcGFyYW0xLCAuLi4pJy4KLSAgICAjIEFzc3VtcHRpb25zIGFyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCB3b24ndCBoYXZlCi0gICAgIyBhIGRlZmF1bHQgdmFsdWUgb3IgYW4gYW5ub3RhdGlvbi4KKyAgICAiIiIgUHJpdmF0ZSBoZWxwZXIgdG8gZ2V0IGZpcnN0IHBhcmFtZXRlciBuYW1lIGZyb20gYQorICAgIF9fdGV4dF9zaWduYXR1cmVfXyBvZiBhIGJ1aWx0aW4gbWV0aG9kLCB3aGljaCBzaG91bGQKKyAgICBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDogJygkcGFyYW0xLCAuLi4pJy4KKyAgICBBc3N1bXB0aW9ucyBhcmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgd29uJ3QgaGF2ZQorICAgIGEgZGVmYXVsdCB2YWx1ZSBvciBhbiBhbm5vdGF0aW9uLgorICAgICIiIgogCiAgICAgYXNzZXJ0IHNwZWMuc3RhcnRzd2l0aCgnKCQnKQogCkBAIC0xNjcxLDcgKzE4MzQsOSBAQAogCiBkZWYgX3NpZ25hdHVyZV9zdHJpcF9ub25fcHl0aG9uX3N5bnRheChzaWduYXR1cmUpOgogICAgICIiIgotICAgIFRha2VzIGEgc2lnbmF0dXJlIGluIEFyZ3VtZW50IENsaW5pYydzIGV4dGVuZGVkIHNpZ25hdHVyZSBmb3JtYXQuCisgICAgUHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24uIFRha2VzIGEgc2lnbmF0dXJlIGluIEFyZ3VtZW50IENsaW5pYydzCisgICAgZXh0ZW5kZWQgc2lnbmF0dXJlIGZvcm1hdC4KKwogICAgIFJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSB0aGluZ3M6CiAgICAgICAqIHRoYXQgc2lnbmF0dXJlIHJlLXJlbmRlcmVkIGluIHN0YW5kYXJkIFB5dGhvbiBzeW50YXgsCiAgICAgICAqIHRoZSBpbmRleCBvZiB0aGUgInNlbGYiIHBhcmFtZXRlciAoZ2VuZXJhbGx5IDApLCBvciBOb25lIGlmCkBAIC0xNzQwLDggKzE5MDUsMTAgQEAKIAogCiBkZWYgX3NpZ25hdHVyZV9mcm9tc3RyKGNscywgb2JqLCBzLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKLSAgICAjIEludGVybmFsIGhlbHBlciB0byBwYXJzZSBjb250ZW50IG9mICdfX3RleHRfc2lnbmF0dXJlX18nCi0gICAgIyBhbmQgcmV0dXJuIGEgU2lnbmF0dXJlIGJhc2VkIG9uIGl0CisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgdG8gcGFyc2UgY29udGVudCBvZiAnX190ZXh0X3NpZ25hdHVyZV9fJworICAgIGFuZCByZXR1cm4gYSBTaWduYXR1cmUgYmFzZWQgb24gaXQuCisgICAgIiIiCisKICAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKIAogICAgIGNsZWFuX3NpZ25hdHVyZSwgc2VsZl9wYXJhbWV0ZXIsIGxhc3RfcG9zaXRpb25hbF9vbmx5ID0gXApAQCAtMTg3OSw4ICsyMDQ2LDEwIEBACiAKIAogZGVmIF9zaWduYXR1cmVfZnJvbV9idWlsdGluKGNscywgZnVuYywgc2tpcF9ib3VuZF9hcmc9VHJ1ZSk6Ci0gICAgIyBJbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHNpZ25hdHVyZSBmb3IKLSAgICAjIGJ1aWx0aW4gY2FsbGFibGVzCisgICAgIiIiUHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHNpZ25hdHVyZSBmb3IKKyAgICBidWlsdGluIGNhbGxhYmxlcy4KKyAgICAiIiIKKwogICAgIGlmIG5vdCBfc2lnbmF0dXJlX2lzX2J1aWx0aW4oZnVuYyk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigieyFyfSBpcyBub3QgYSBQeXRob24gYnVpbHRpbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24iLmZvcm1hdChmdW5jKSkKQEAgLTE4OTIsNyArMjA2MSw5NSBAQAogICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoY2xzLCBmdW5jLCBzLCBza2lwX2JvdW5kX2FyZykKIAogCi1kZWYgX3NpZ25hdHVyZV9pbnRlcm5hbChvYmosIGZvbGxvd193cmFwcGVyX2NoYWlucz1UcnVlLCBza2lwX2JvdW5kX2FyZz1UcnVlKToKK2RlZiBfc2lnbmF0dXJlX2Zyb21fZnVuY3Rpb24oY2xzLCBmdW5jKToKKyAgICAiIiJQcml2YXRlIGhlbHBlcjogY29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBweXRob24gZnVuY3Rpb24uIiIiCisKKyAgICBpc19kdWNrX2Z1bmN0aW9uID0gRmFsc2UKKyAgICBpZiBub3QgaXNmdW5jdGlvbihmdW5jKToKKyAgICAgICAgaWYgX3NpZ25hdHVyZV9pc19mdW5jdGlvbmxpa2UoZnVuYyk6CisgICAgICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBpdCdzIG5vdCBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBhbmQgbm90IGEgZHVjayB0eXBlCisgICAgICAgICAgICAjIG9mIHB1cmUgZnVuY3Rpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJy5mb3JtYXQoZnVuYykpCisKKyAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKKworICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgorICAgIGZ1bmNfY29kZSA9IGZ1bmMuX19jb2RlX18KKyAgICBwb3NfY291bnQgPSBmdW5jX2NvZGUuY29fYXJnY291bnQKKyAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKKyAgICBwb3NpdGlvbmFsID0gdHVwbGUoYXJnX25hbWVzWzpwb3NfY291bnRdKQorICAgIGtleXdvcmRfb25seV9jb3VudCA9IGZ1bmNfY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCisgICAgYW5ub3RhdGlvbnMgPSBmdW5jLl9fYW5ub3RhdGlvbnNfXworICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisgICAgaWYgZGVmYXVsdHM6CisgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQorICAgIGVsc2U6CisgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gMAorCisgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCisgICAgbm9uX2RlZmF1bHRfY291bnQgPSBwb3NfY291bnQgLSBwb3NfZGVmYXVsdF9jb3VudAorICAgIGZvciBuYW1lIGluIHBvc2l0aW9uYWxbOm5vbl9kZWZhdWx0X2NvdW50XToKKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQpKQorCisgICAgIyAuLi4gdy8gZGVmYXVsdHMuCisgICAgZm9yIG9mZnNldCwgbmFtZSBpbiBlbnVtZXJhdGUocG9zaXRpb25hbFtub25fZGVmYXVsdF9jb3VudDpdKToKKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHRzW29mZnNldF0pKQorCisgICAgIyAqYXJncworICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6CisgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50XQorICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKKyAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9QT1NJVElPTkFMKSkKKworICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCisgICAgZm9yIG5hbWUgaW4ga2V5d29yZF9vbmx5OgorICAgICAgICBkZWZhdWx0ID0gX2VtcHR5CisgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0ID0ga3dkZWZhdWx0cy5nZXQobmFtZSwgX2VtcHR5KQorCisgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fS0VZV09SRF9PTkxZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KSkKKyAgICAjICoqa3dhcmdzCisgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFM6CisgICAgICAgIGluZGV4ID0gcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50CisgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6CisgICAgICAgICAgICBpbmRleCArPSAxCisKKyAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1tpbmRleF0KKyAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9WQVJfS0VZV09SRCkpCisKKyAgICAjIElzICdmdW5jJyBpcyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uIC0gZG9uJ3QgdmFsaWRhdGUgdGhlCisgICAgIyBwYXJhbWV0ZXJzIGxpc3QgKGZvciBjb3JyZWN0IG9yZGVyIGFuZCBkZWZhdWx0cyksIGl0IHNob3VsZCBiZSBPSy4KKyAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCisgICAgICAgICAgICAgICBfX3ZhbGlkYXRlX3BhcmFtZXRlcnNfXz1pc19kdWNrX2Z1bmN0aW9uKQorCisKK2RlZiBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUob2JqLCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnY2xzKToKKworICAgICIiIlByaXZhdGUgaGVscGVyIGZ1bmN0aW9uIHRvIGdldCBzaWduYXR1cmUgZm9yIGFyYml0cmFyeQorICAgIGNhbGxhYmxlIG9iamVjdHMuCisgICAgIiIiCiAKICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcuZm9ybWF0KG9iaikpCkBAIC0xOTAwLDkgKzIxNTcsMTIgQEAKICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTWV0aG9kVHlwZSk6CiAgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgdW5kZXJseWluZwogICAgICAgICAjIGZ1bmN0aW9uICh1c3VhbGx5IGBzZWxmYCBvciBgY2xzYCkuCi0gICAgICAgIHNpZyA9IF9zaWduYXR1cmVfaW50ZXJuYWwob2JqLl9fZnVuY19fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgb2JqLl9fZnVuY19fLAorICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKKwogICAgICAgICBpZiBza2lwX2JvdW5kX2FyZzoKICAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2JvdW5kX21ldGhvZChzaWcpCiAgICAgICAgIGVsc2U6CkBAIC0xOTE1LDEwICsyMTc1LDExIEBACiAgICAgICAgICAgICAjIElmIHRoZSB1bndyYXBwZWQgb2JqZWN0IGlzIGEgKm1ldGhvZCosIHdlIG1pZ2h0IHdhbnQgdG8KICAgICAgICAgICAgICMgc2tpcCBpdHMgZmlyc3QgcGFyYW1ldGVyIChzZWxmKS4KICAgICAgICAgICAgICMgU2VlIHRlc3Rfc2lnbmF0dXJlX3dyYXBwZWRfYm91bmRfbWV0aG9kIGZvciBkZXRhaWxzLgotICAgICAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfaW50ZXJuYWwoCisgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAogICAgICAgICAgICAgICAgIG9iaiwKICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnLAorICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAKICAgICB0cnk6CiAgICAgICAgIHNpZyA9IG9iai5fX3NpZ25hdHVyZV9fCkBAIC0xOTQ1LDkgKzIyMDYsMTIgQEAKICAgICAgICAgICAgICMgKHVzdWFsbHkgYHNlbGZgLCBvciBgY2xzYCkgd2lsbCBub3QgYmUgcGFzc2VkCiAgICAgICAgICAgICAjIGF1dG9tYXRpY2FsbHkgKGFzIGZvciBib3VuZG1ldGhvZHMpCiAKLSAgICAgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChwYXJ0aWFsbWV0aG9kLmZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgd3JhcHBlZF9zaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoCisgICAgICAgICAgICAgICAgcGFydGlhbG1ldGhvZC5mdW5jLAorICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKKwogICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgcGFydGlhbG1ldGhvZCwgKE5vbmUsKSkKIAogICAgICAgICAgICAgZmlyc3Rfd3JhcHBlZF9wYXJhbSA9IHR1cGxlKHdyYXBwZWRfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpWzBdCkBAIC0xOTU4LDE2ICsyMjIyLDE4IEBACiAgICAgaWYgaXNmdW5jdGlvbihvYmopIG9yIF9zaWduYXR1cmVfaXNfZnVuY3Rpb25saWtlKG9iaik6CiAgICAgICAgICMgSWYgaXQncyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uLCBvciBhbiBvYmplY3QgdGhhdCBpcyBkdWNrIHR5cGUKICAgICAgICAgIyBvZiBhIFB5dGhvbiBmdW5jdGlvbiAoQ3l0aG9uIGZ1bmN0aW9ucywgZm9yIGluc3RhbmNlKSwgdGhlbjoKLSAgICAgICAgcmV0dXJuIFNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKG9iaikKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9mdW5jdGlvbihzaWdjbHMsIG9iaikKIAogICAgIGlmIF9zaWduYXR1cmVfaXNfYnVpbHRpbihvYmopOgotICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oU2lnbmF0dXJlLCBvYmosCisgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21fYnVpbHRpbihzaWdjbHMsIG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnPXNraXBfYm91bmRfYXJnKQogCiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGZ1bmN0b29scy5wYXJ0aWFsKToKLSAgICAgICAgd3JhcHBlZF9zaWcgPSBfc2lnbmF0dXJlX2ludGVybmFsKG9iai5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgIHdyYXBwZWRfc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgb2JqLmZ1bmMsCisgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9nZXRfcGFydGlhbCh3cmFwcGVkX3NpZywgb2JqKQogCiAgICAgc2lnID0gTm9uZQpAQCAtMTk3OCwyMyArMjI0NCwyOSBAQAogICAgICAgICAjIGluIGl0cyBtZXRhY2xhc3MKICAgICAgICAgY2FsbCA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2QodHlwZShvYmopLCAnX19jYWxsX18nKQogICAgICAgICBpZiBjYWxsIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBfYm91bmRfYXJnKQorICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgIGNhbGwsCisgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICBzaWdjbHM9c2lnY2xzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBOb3cgd2UgY2hlY2sgaWYgdGhlICdvYmonIGNsYXNzIGhhcyBhICdfX25ld19fJyBtZXRob2QKICAgICAgICAgICAgIG5ldyA9IF9zaWduYXR1cmVfZ2V0X3VzZXJfZGVmaW5lZF9tZXRob2Qob2JqLCAnX19uZXdfXycpCiAgICAgICAgICAgICBpZiBuZXcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChuZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICBzaWcgPSBfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGUoCisgICAgICAgICAgICAgICAgICAgIG5ldywKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVyX2NoYWlucywKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmc9c2tpcF9ib3VuZF9hcmcsCisgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgRmluYWxseSwgd2Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgX19pbml0X18gaW1wbGVtZW50ZWQKICAgICAgICAgICAgICAgICBpbml0ID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX2luaXRfXycpCiAgICAgICAgICAgICAgICAgaWYgaW5pdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChpbml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZykKKyAgICAgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd193cmFwcGVyX2NoYWlucz1mb2xsb3dfd3JhcHBlcl9jaGFpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpZ2Nscz1zaWdjbHMpCiAKICAgICAgICAgaWYgc2lnIGlzIE5vbmU6CiAgICAgICAgICAgICAjIEF0IHRoaXMgcG9pbnQgd2Uga25vdywgdGhhdCBgb2JqYCBpcyBhIGNsYXNzLCB3aXRoIG5vIHVzZXItCkBAIC0yMDE2LDcgKzIyODgsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiB0ZXh0X3NpZzoKICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgJ29iaicgY2xhc3MgaGFzIGEgX190ZXh0X3NpZ25hdHVyZV9fIGF0dHJpYnV0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGEgc2lnbmF0dXJlIGJhc2VkIG9uIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tc3RyKFNpZ25hdHVyZSwgb2JqLCB0ZXh0X3NpZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc2lnbmF0dXJlX2Zyb21zdHIoc2lnY2xzLCBvYmosIHRleHRfc2lnKQogCiAgICAgICAgICAgICAjIE5vICdfX3RleHRfc2lnbmF0dXJlX18nIHdhcyBmb3VuZCBmb3IgdGhlICdvYmonIGNsYXNzLgogICAgICAgICAgICAgIyBMYXN0IG9wdGlvbiBpcyB0byBjaGVjayBpZiBpdHMgJ19faW5pdF9fJyBpcwpAQCAtMjAyNCw5ICsyMjk2LDEzIEBACiAgICAgICAgICAgICBpZiB0eXBlIG5vdCBpbiBvYmouX19tcm9fXzoKICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBjbGFzcyAobm90IG1ldGFjbGFzcyksIGJ1dCBubyB1c2VyLWRlZmluZWQKICAgICAgICAgICAgICAgICAjIF9faW5pdF9fIG9yIF9fbmV3X18gZm9yIGl0Ci0gICAgICAgICAgICAgICAgaWYgb2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXzoKKyAgICAgICAgICAgICAgICBpZiAob2JqLl9faW5pdF9fIGlzIG9iamVjdC5fX2luaXRfXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgb2JqLl9fbmV3X18gaXMgb2JqZWN0Ll9fbmV3X18pOgogICAgICAgICAgICAgICAgICAgICAjIFJldHVybiBhIHNpZ25hdHVyZSBvZiAnb2JqZWN0JyBidWlsdGluLgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlKG9iamVjdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbiB0eXBlIHshcn0nLmZvcm1hdChvYmopKQogCiAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CiAgICAgICAgICMgQW4gb2JqZWN0IHdpdGggX19jYWxsX18KQEAgLTIwMzYsOSArMjMxMiwxMSBAQAogICAgICAgICBjYWxsID0gX3NpZ25hdHVyZV9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZCh0eXBlKG9iaiksICdfX2NhbGxfXycpCiAgICAgICAgIGlmIGNhbGwgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9pbnRlcm5hbChjYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9ib3VuZF9hcmcpCisgICAgICAgICAgICAgICAgc2lnID0gX3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlKAorICAgICAgICAgICAgICAgICAgICBjYWxsLAorICAgICAgICAgICAgICAgICAgICBmb2xsb3dfd3JhcHBlcl9jaGFpbnM9Zm9sbG93X3dyYXBwZXJfY2hhaW5zLAorICAgICAgICAgICAgICAgICAgICBza2lwX2JvdW5kX2FyZz1za2lwX2JvdW5kX2FyZywKKyAgICAgICAgICAgICAgICAgICAgc2lnY2xzPXNpZ2NscykKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4OgogICAgICAgICAgICAgICAgIG1zZyA9ICdubyBzaWduYXR1cmUgZm91bmQgZm9yIHshcn0nLmZvcm1hdChvYmopCiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cpIGZyb20gZXgKQEAgLTIwNTgsNDEgKzIzMzYsMzUgQEAKIAogICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NhbGxhYmxlIHshcn0gaXMgbm90IHN1cHBvcnRlZCBieSBzaWduYXR1cmUnLmZvcm1hdChvYmopKQogCi1kZWYgc2lnbmF0dXJlKG9iaik6Ci0gICAgJycnR2V0IGEgc2lnbmF0dXJlIG9iamVjdCBmb3IgdGhlIHBhc3NlZCBjYWxsYWJsZS4nJycKLSAgICByZXR1cm4gX3NpZ25hdHVyZV9pbnRlcm5hbChvYmopCi0KIAogY2xhc3MgX3ZvaWQ6Ci0gICAgJycnQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlJycnCisgICAgIiIiQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlLiIiIgogCiAKIGNsYXNzIF9lbXB0eToKLSAgICBwYXNzCisgICAgIiIiTWFya2VyIG9iamVjdCBmb3IgU2lnbmF0dXJlLmVtcHR5IGFuZCBQYXJhbWV0ZXIuZW1wdHkuIiIiCiAKIAotY2xhc3MgX1BhcmFtZXRlcktpbmQoaW50KToKLSAgICBkZWYgX19uZXdfXyhzZWxmLCAqYXJncywgbmFtZSk6Ci0gICAgICAgIG9iaiA9IGludC5fX25ld19fKHNlbGYsICphcmdzKQotICAgICAgICBvYmouX25hbWUgPSBuYW1lCi0gICAgICAgIHJldHVybiBvYmoKK2NsYXNzIF9QYXJhbWV0ZXJLaW5kKGVudW0uSW50RW51bSk6CisgICAgUE9TSVRJT05BTF9PTkxZID0gMAorICAgIFBPU0lUSU9OQUxfT1JfS0VZV09SRCA9IDEKKyAgICBWQVJfUE9TSVRJT05BTCA9IDIKKyAgICBLRVlXT1JEX09OTFkgPSAzCisgICAgVkFSX0tFWVdPUkQgPSA0CiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICc8X1BhcmFtZXRlcktpbmQ6IHshcn0+Jy5mb3JtYXQoc2VsZi5fbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWVfCiAKIAotX1BPU0lUSU9OQUxfT05MWSAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgwLCBuYW1lPSdQT1NJVElPTkFMX09OTFknKQotX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgPSBfUGFyYW1ldGVyS2luZCgxLCBuYW1lPSdQT1NJVElPTkFMX09SX0tFWVdPUkQnKQotX1ZBUl9QT1NJVElPTkFMICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgyLCBuYW1lPSdWQVJfUE9TSVRJT05BTCcpCi1fS0VZV09SRF9PTkxZICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDMsIG5hbWU9J0tFWVdPUkRfT05MWScpCi1fVkFSX0tFWVdPUkQgICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDQsIG5hbWU9J1ZBUl9LRVlXT1JEJykKK19QT1NJVElPTkFMX09OTFkgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT05MWQorX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgID0gX1BhcmFtZXRlcktpbmQuUE9TSVRJT05BTF9PUl9LRVlXT1JECitfVkFSX1BPU0lUSU9OQUwgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfUE9TSVRJT05BTAorX0tFWVdPUkRfT05MWSAgICAgICAgICAgID0gX1BhcmFtZXRlcktpbmQuS0VZV09SRF9PTkxZCitfVkFSX0tFWVdPUkQgICAgICAgICAgICAgPSBfUGFyYW1ldGVyS2luZC5WQVJfS0VZV09SRAogCiAKIGNsYXNzIFBhcmFtZXRlcjoKLSAgICAnJydSZXByZXNlbnRzIGEgcGFyYW1ldGVyIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlLgorICAgICIiIlJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgaW4gYSBmdW5jdGlvbiBzaWduYXR1cmUuCiAKICAgICBIYXMgdGhlIGZvbGxvd2luZyBwdWJsaWMgYXR0cmlidXRlczoKIApAQCAtMjExMSw3ICsyMzgzLDcgQEAKICAgICAgICAgUG9zc2libGUgdmFsdWVzOiBgUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWWAsCiAgICAgICAgIGBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEYCwgYFBhcmFtZXRlci5WQVJfUE9TSVRJT05BTGAsCiAgICAgICAgIGBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZYCwgYFBhcmFtZXRlci5WQVJfS0VZV09SRGAuCi0gICAgJycnCisgICAgIiIiCiAKICAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19raW5kJywgJ19kZWZhdWx0JywgJ19hbm5vdGF0aW9uJykKIApAQCAtMjE0OCw2ICsyNDIwLDE2IEBACiAKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHR5cGUoc2VsZiksCisgICAgICAgICAgICAgICAgKHNlbGYuX25hbWUsIHNlbGYuX2tpbmQpLAorICAgICAgICAgICAgICAgIHsnX2RlZmF1bHQnOiBzZWxmLl9kZWZhdWx0LAorICAgICAgICAgICAgICAgICAnX2Fubm90YXRpb24nOiBzZWxmLl9hbm5vdGF0aW9ufSkKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9kZWZhdWx0ID0gc3RhdGVbJ19kZWZhdWx0J10KKyAgICAgICAgc2VsZi5fYW5ub3RhdGlvbiA9IHN0YXRlWydfYW5ub3RhdGlvbiddCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKQEAgLTIxNjYsNyArMjQ0OCw3IEBACiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCAqLCBuYW1lPV92b2lkLCBraW5kPV92b2lkLAogICAgICAgICAgICAgICAgIGFubm90YXRpb249X3ZvaWQsIGRlZmF1bHQ9X3ZvaWQpOgotICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBQYXJhbWV0ZXIuJycnCisgICAgICAgICIiIkNyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFBhcmFtZXRlci4iIiIKIAogICAgICAgICBpZiBuYW1lIGlzIF92b2lkOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYuX25hbWUKQEAgLTIyMDIsMTAgKzI0ODQsMTQgQEAKICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzx7fSBhdCB7OiN4fSB7IXJ9PicuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiAnPHt9ICJ7fSI+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKChzZWxmLm5hbWUsIHNlbGYua2luZCwgc2VsZi5hbm5vdGF0aW9uLCBzZWxmLmRlZmF1bHQpKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgUGFyYW1ldGVyKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICByZXR1cm4gKHNlbGYuX25hbWUgPT0gb3RoZXIuX25hbWUgYW5kCkBAIC0yMjE1LDcgKzI1MDEsNyBAQAogCiAKIGNsYXNzIEJvdW5kQXJndW1lbnRzOgotICAgICcnJ1Jlc3VsdCBvZiBgU2lnbmF0dXJlLmJpbmRgIGNhbGwuICBIb2xkcyB0aGUgbWFwcGluZyBvZiBhcmd1bWVudHMKKyAgICAiIiJSZXN1bHQgb2YgYFNpZ25hdHVyZS5iaW5kYCBjYWxsLiAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzCiAgICAgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KIAogICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgpAQCAtMjIyOSw3ICsyNTE1LDkgQEAKICAgICAgICAgVHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdmFsdWVzLgogICAgICoga3dhcmdzIDogZGljdAogICAgICAgICBEaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4KLSAgICAnJycKKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgnYXJndW1lbnRzJywgJ19zaWduYXR1cmUnLCAnX193ZWFrcmVmX18nKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNpZ25hdHVyZSwgYXJndW1lbnRzKToKICAgICAgICAgc2VsZi5hcmd1bWVudHMgPSBhcmd1bWVudHMKQEAgLTIyOTIsMTUgKzI1ODAsNjAgQEAKIAogICAgICAgICByZXR1cm4ga3dhcmdzCiAKKyAgICBkZWYgYXBwbHlfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICIiIlNldCBkZWZhdWx0IHZhbHVlcyBmb3IgbWlzc2luZyBhcmd1bWVudHMuCisKKyAgICAgICAgRm9yIHZhcmlhYmxlLXBvc2l0aW9uYWwgYXJndW1lbnRzICgqYXJncykgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgICAgZW1wdHkgdHVwbGUuCisKKyAgICAgICAgRm9yIHZhcmlhYmxlLWtleXdvcmQgYXJndW1lbnRzICgqKmt3YXJncykgdGhlIGRlZmF1bHQgaXMgYW4KKyAgICAgICAgZW1wdHkgZGljdC4KKyAgICAgICAgIiIiCisgICAgICAgIGFyZ3VtZW50cyA9IHNlbGYuYXJndW1lbnRzCisgICAgICAgIGlmIG5vdCBhcmd1bWVudHM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbmV3X2FyZ3VtZW50cyA9IFtdCisgICAgICAgIGZvciBuYW1lLCBwYXJhbSBpbiBzZWxmLl9zaWduYXR1cmUucGFyYW1ldGVycy5pdGVtcygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG5ld19hcmd1bWVudHMuYXBwZW5kKChuYW1lLCBhcmd1bWVudHNbbmFtZV0pKQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIGlmIHBhcmFtLmRlZmF1bHQgaXMgbm90IF9lbXB0eToKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gcGFyYW0uZGVmYXVsdAorICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ua2luZCBpcyBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgICAgIHZhbCA9ICgpCisgICAgICAgICAgICAgICAgZWxpZiBwYXJhbS5raW5kIGlzIF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAgICAgdmFsID0ge30KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgQm91bmRBcmd1bWVudHMgd2FzIGxpa2VseSBwcm9kdWNlZCBieQorICAgICAgICAgICAgICAgICAgICAjIFNpZ25hdHVyZS5iaW5kX3BhcnRpYWwoKS4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBuZXdfYXJndW1lbnRzLmFwcGVuZCgobmFtZSwgdmFsKSkKKyAgICAgICAgc2VsZi5hcmd1bWVudHMgPSBPcmRlcmVkRGljdChuZXdfYXJndW1lbnRzKQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYgaXMgb3RoZXI6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQm91bmRBcmd1bWVudHMpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIHJldHVybiAoc2VsZi5zaWduYXR1cmUgPT0gb3RoZXIuc2lnbmF0dXJlIGFuZAogICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID09IG90aGVyLmFyZ3VtZW50cykKIAorICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBzZWxmLl9zaWduYXR1cmUgPSBzdGF0ZVsnX3NpZ25hdHVyZSddCisgICAgICAgIHNlbGYuYXJndW1lbnRzID0gc3RhdGVbJ2FyZ3VtZW50cyddCisKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4geydfc2lnbmF0dXJlJzogc2VsZi5fc2lnbmF0dXJlLCAnYXJndW1lbnRzJzogc2VsZi5hcmd1bWVudHN9CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICBmb3IgYXJnLCB2YWx1ZSBpbiBzZWxmLmFyZ3VtZW50cy5pdGVtcygpOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3t9PXshcn0nLmZvcm1hdChhcmcsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJuICc8e30gKHt9KT4nLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKGFyZ3MpKQorCiAKIGNsYXNzIFNpZ25hdHVyZToKLSAgICAnJydBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KKyAgICAiIiJBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KICAgICBJdCBzdG9yZXMgYSBQYXJhbWV0ZXIgb2JqZWN0IGZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUKICAgICBmdW5jdGlvbiwgYXMgd2VsbCBhcyBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLgogCkBAIC0yMzIwLDcgKzI2NTMsNyBAQAogICAgICogYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKICAgICAgICAgQ3JlYXRlcyBhIHBhcnRpYWwgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgIHRvIHBhcmFtZXRlcnMgKHNpbXVsYXRpbmcgJ2Z1bmN0b29scy5wYXJ0aWFsJyBiZWhhdmlvci4pCi0gICAgJycnCisgICAgIiIiCiAKICAgICBfX3Nsb3RzX18gPSAoJ19yZXR1cm5fYW5ub3RhdGlvbicsICdfcGFyYW1ldGVycycpCiAKQEAgLTIzMzEsOSArMjY2NCw5IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyYW1ldGVycz1Ob25lLCAqLCByZXR1cm5fYW5ub3RhdGlvbj1fZW1wdHksCiAgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPVRydWUpOgotICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgorICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgogICAgICAgICBvYmplY3RzIGFuZCAncmV0dXJuX2Fubm90YXRpb24nLiAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuCi0gICAgICAgICcnJworICAgICAgICAiIiIKIAogICAgICAgICBpZiBwYXJhbWV0ZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXJhbXMgPSBPcmRlcmVkRGljdCgpCkBAIC0yMzgyLDg5ICsyNzE1LDI4IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbV9mdW5jdGlvbihjbHMsIGZ1bmMpOgotICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIHB5dGhvbiBmdW5jdGlvbicnJworICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIHB5dGhvbiBmdW5jdGlvbi4iIiIKIAotICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gRmFsc2UKLSAgICAgICAgaWYgbm90IGlzZnVuY3Rpb24oZnVuYyk6Ci0gICAgICAgICAgICBpZiBfc2lnbmF0dXJlX2lzX2Z1bmN0aW9ubGlrZShmdW5jKToKLSAgICAgICAgICAgICAgICBpc19kdWNrX2Z1bmN0aW9uID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIElmIGl0J3Mgbm90IGEgcHVyZSBQeXRob24gZnVuY3Rpb24sIGFuZCBub3QgYSBkdWNrIHR5cGUKLSAgICAgICAgICAgICAgICAjIG9mIHB1cmUgZnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicuZm9ybWF0KGZ1bmMpKQotCi0gICAgICAgIFBhcmFtZXRlciA9IGNscy5fcGFyYW1ldGVyX2NscwotCi0gICAgICAgICMgUGFyYW1ldGVyIGluZm9ybWF0aW9uLgotICAgICAgICBmdW5jX2NvZGUgPSBmdW5jLl9fY29kZV9fCi0gICAgICAgIHBvc19jb3VudCA9IGZ1bmNfY29kZS5jb19hcmdjb3VudAotICAgICAgICBhcmdfbmFtZXMgPSBmdW5jX2NvZGUuY29fdmFybmFtZXMKLSAgICAgICAgcG9zaXRpb25hbCA9IHR1cGxlKGFyZ19uYW1lc1s6cG9zX2NvdW50XSkKLSAgICAgICAga2V5d29yZF9vbmx5X2NvdW50ID0gZnVuY19jb2RlLmNvX2t3b25seWFyZ2NvdW50Ci0gICAgICAgIGtleXdvcmRfb25seSA9IGFyZ19uYW1lc1twb3NfY291bnQ6KHBvc19jb3VudCArIGtleXdvcmRfb25seV9jb3VudCldCi0gICAgICAgIGFubm90YXRpb25zID0gZnVuYy5fX2Fubm90YXRpb25zX18KLSAgICAgICAgZGVmYXVsdHMgPSBmdW5jLl9fZGVmYXVsdHNfXwotICAgICAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXwotCi0gICAgICAgIGlmIGRlZmF1bHRzOgotICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSBsZW4oZGVmYXVsdHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3NfZGVmYXVsdF9jb3VudCA9IDAKLQotICAgICAgICBwYXJhbWV0ZXJzID0gW10KLQotICAgICAgICAjIE5vbi1rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyB3L28gZGVmYXVsdHMuCi0gICAgICAgIG5vbl9kZWZhdWx0X2NvdW50ID0gcG9zX2NvdW50IC0gcG9zX2RlZmF1bHRfY291bnQKLSAgICAgICAgZm9yIG5hbWUgaW4gcG9zaXRpb25hbFs6bm9uX2RlZmF1bHRfY291bnRdOgotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCkpCi0KLSAgICAgICAgIyAuLi4gdy8gZGVmYXVsdHMuCi0gICAgICAgIGZvciBvZmZzZXQsIG5hbWUgaW4gZW51bWVyYXRlKHBvc2l0aW9uYWxbbm9uX2RlZmF1bHRfY291bnQ6XSk6Ci0gICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fUE9TSVRJT05BTF9PUl9LRVlXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdHNbb2Zmc2V0XSkpCi0KLSAgICAgICAgIyAqYXJncwotICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiBDT19WQVJBUkdTOgotICAgICAgICAgICAgbmFtZSA9IGFyZ19uYW1lc1twb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnRdCi0gICAgICAgICAgICBhbm5vdGF0aW9uID0gYW5ub3RhdGlvbnMuZ2V0KG5hbWUsIF9lbXB0eSkKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKFBhcmFtZXRlcihuYW1lLCBhbm5vdGF0aW9uPWFubm90YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1fVkFSX1BPU0lUSU9OQUwpKQotCi0gICAgICAgICMgS2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuCi0gICAgICAgIGZvciBuYW1lIGluIGtleXdvcmRfb25seToKLSAgICAgICAgICAgIGRlZmF1bHQgPSBfZW1wdHkKLSAgICAgICAgICAgIGlmIGt3ZGVmYXVsdHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVmYXVsdCA9IGt3ZGVmYXVsdHMuZ2V0KG5hbWUsIF9lbXB0eSkKLQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X0tFWVdPUkRfT05MWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHQpKQotICAgICAgICAjICoqa3dhcmdzCi0gICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTOgotICAgICAgICAgICAgaW5kZXggPSBwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQKLSAgICAgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIENPX1ZBUkFSR1M6Ci0gICAgICAgICAgICAgICAgaW5kZXggKz0gMQotCi0gICAgICAgICAgICBuYW1lID0gYXJnX25hbWVzW2luZGV4XQotICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCi0gICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9LRVlXT1JEKSkKLQotICAgICAgICAjIElzICdmdW5jJyBpcyBhIHB1cmUgUHl0aG9uIGZ1bmN0aW9uIC0gZG9uJ3QgdmFsaWRhdGUgdGhlCi0gICAgICAgICMgcGFyYW1ldGVycyBsaXN0IChmb3IgY29ycmVjdCBvcmRlciBhbmQgZGVmYXVsdHMpLCBpdCBzaG91bGQgYmUgT0suCi0gICAgICAgIHJldHVybiBjbHMocGFyYW1ldGVycywKLSAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1hbm5vdGF0aW9ucy5nZXQoJ3JldHVybicsIF9lbXB0eSksCi0gICAgICAgICAgICAgICAgICAgX192YWxpZGF0ZV9wYXJhbWV0ZXJzX189aXNfZHVja19mdW5jdGlvbikKKyAgICAgICAgd2FybmluZ3Mud2FybigiaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbigpIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAidXNlIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2Z1bmN0aW9uKGNscywgZnVuYykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tX2J1aWx0aW4oY2xzLCBmdW5jKToKKyAgICAgICAgIiIiQ29uc3RydWN0cyBTaWduYXR1cmUgZm9yIHRoZSBnaXZlbiBidWlsdGluIGZ1bmN0aW9uLiIiIgorCisgICAgICAgIHdhcm5pbmdzLndhcm4oImluc3BlY3QuU2lnbmF0dXJlLmZyb21fYnVpbHRpbigpIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAidXNlIFNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICByZXR1cm4gX3NpZ25hdHVyZV9mcm9tX2J1aWx0aW4oY2xzLCBmdW5jKQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fY2FsbGFibGUoY2xzLCBvYmosICosIGZvbGxvd193cmFwcGVkPVRydWUpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmb3IgdGhlIGdpdmVuIGNhbGxhYmxlIG9iamVjdC4iIiIKKyAgICAgICAgcmV0dXJuIF9zaWduYXR1cmVfZnJvbV9jYWxsYWJsZShvYmosIHNpZ2Nscz1jbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZXJfY2hhaW5zPWZvbGxvd193cmFwcGVkKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHBhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCkBAIC0yNDc0LDEwICsyNzQ2LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgcGFyYW1ldGVycz1fdm9pZCwgcmV0dXJuX2Fubm90YXRpb249X3ZvaWQpOgotICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBTaWduYXR1cmUuCisgICAgICAgICIiIkNyZWF0ZXMgYSBjdXN0b21pemVkIGNvcHkgb2YgdGhlIFNpZ25hdHVyZS4KICAgICAgICAgUGFzcyAncGFyYW1ldGVycycgYW5kL29yICdyZXR1cm5fYW5ub3RhdGlvbicgYXJndW1lbnRzCiAgICAgICAgIHRvIG92ZXJyaWRlIHRoZW0gaW4gdGhlIG5ldyBjb3B5LgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAKICAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBfdm9pZDoKICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKQEAgLTI0ODgsMzkgKzI3NjAsMjkgQEAKICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikocGFyYW1ldGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249cmV0dXJuX2Fubm90YXRpb24pCiAKKyAgICBkZWYgX2hhc2hfYmFzaXMoc2VsZik6CisgICAgICAgIHBhcmFtcyA9IHR1cGxlKHBhcmFtIGZvciBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCAhPSBfS0VZV09SRF9PTkxZKQorCisgICAgICAgIGt3b19wYXJhbXMgPSB7cGFyYW0ubmFtZTogcGFyYW0gZm9yIHBhcmFtIGluIHNlbGYucGFyYW1ldGVycy52YWx1ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX0tFWVdPUkRfT05MWX0KKworICAgICAgICByZXR1cm4gcGFyYW1zLCBrd29fcGFyYW1zLCBzZWxmLnJldHVybl9hbm5vdGF0aW9uCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHBhcmFtcywga3dvX3BhcmFtcywgcmV0dXJuX2Fubm90YXRpb24gPSBzZWxmLl9oYXNoX2Jhc2lzKCkKKyAgICAgICAga3dvX3BhcmFtcyA9IGZyb3plbnNldChrd29fcGFyYW1zLnZhbHVlcygpKQorICAgICAgICByZXR1cm4gaGFzaCgocGFyYW1zLCBrd29fcGFyYW1zLCByZXR1cm5fYW5ub3RhdGlvbikpCisKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgc2VsZiBpcyBvdGhlcjoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBTaWduYXR1cmUpOgogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgIGlmIChzZWxmLnJldHVybl9hbm5vdGF0aW9uICE9IG90aGVyLnJldHVybl9hbm5vdGF0aW9uIG9yCi0gICAgICAgICAgICBsZW4oc2VsZi5wYXJhbWV0ZXJzKSAhPSBsZW4ob3RoZXIucGFyYW1ldGVycykpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgb3RoZXJfcG9zaXRpb25zID0ge3BhcmFtOiBpZHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShvdGhlci5wYXJhbWV0ZXJzLmtleXMoKSl9Ci0KLSAgICAgICAgZm9yIGlkeCwgKHBhcmFtX25hbWUsIHBhcmFtKSBpbiBlbnVtZXJhdGUoc2VsZi5wYXJhbWV0ZXJzLml0ZW1zKCkpOgotICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfS0VZV09SRF9PTkxZOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3RoZXJfcGFyYW0gPSBvdGhlci5wYXJhbWV0ZXJzW3BhcmFtX25hbWVdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbSAhPSBvdGhlcl9wYXJhbToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG90aGVyX2lkeCA9IG90aGVyX3Bvc2l0aW9uc1twYXJhbV9uYW1lXQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSBvdGhlcl9pZHggb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtICE9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0pOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2hfYmFzaXMoKSA9PSBvdGhlci5faGFzaF9iYXNpcygpCiAKICAgICBkZWYgX2JpbmQoc2VsZiwgYXJncywga3dhcmdzLCAqLCBwYXJ0aWFsPUZhbHNlKToKLSAgICAgICAgJycnUHJpdmF0ZSBtZXRob2QuICBEb24ndCB1c2UgZGlyZWN0bHkuJycnCisgICAgICAgICIiIlByaXZhdGUgbWV0aG9kLiBEb24ndCB1c2UgZGlyZWN0bHkuIiIiCiAKICAgICAgICAgYXJndW1lbnRzID0gT3JkZXJlZERpY3QoKQogCkBAIC0yNTY4LDcgKzI4MzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNfZXggPSAocGFyYW0sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICd7YXJnIXJ9IHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ21pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDoge2FyZyFyfScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQogICAgICAgICAgICAgZWxzZToKQEAgLTI1ODEsNyArMjg0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgaW4gKF9WQVJfS0VZV09SRCwgX0tFWVdPUkRfT05MWSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIExvb2tzIGxpa2Ugd2UgaGF2ZSBubyBwYXJhbWV0ZXIgZm9yIHRoaXMgcG9zaXRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgIyBhcmd1bWVudAotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykgZnJvbSBOb25lCiAKICAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYW4gJyphcmdzJy1saWtlIGFyZ3VtZW50LCBsZXQncyBmaWxsIGl0IHdpdGgKQEAgLTI1OTMsOCArMjg1Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLm5hbWUgaW4ga3dhcmdzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2FyZyFyfScuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCB7YXJnIXJ9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZz1wYXJhbS5uYW1lKSkgZnJvbSBOb25lCiAKICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gYXJnX3ZhbAogCkBAIC0yNjIzLDcgKzI4ODcsNyBAQAogICAgICAgICAgICAgICAgICMgYXJndW1lbnRzLgogICAgICAgICAgICAgICAgIGlmIChub3QgcGFydGlhbCBhbmQgcGFyYW0ua2luZCAhPSBfVkFSX1BPU0lUSU9OQUwgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBfZW1wdHkpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScuIFwKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtaXNzaW5nIGEgcmVxdWlyZWQgYXJndW1lbnQ6IHthcmchcn0nLiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtX25hbWUpKSBmcm9tIE5vbmUKIAogICAgICAgICAgICAgZWxzZToKQEAgLTI2NDIsMjQgKzI5MDYsMzcgQEAKICAgICAgICAgICAgICAgICAjIFByb2Nlc3Mgb3VyICcqKmt3YXJncyctbGlrZSBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgICBhcmd1bWVudHNba3dhcmdzX3BhcmFtLm5hbWVdID0ga3dhcmdzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ2dvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQge2FyZyFyfScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnPW5leHQoaXRlcihrd2FyZ3MpKSkpCiAKICAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50c19jbHMoc2VsZiwgYXJndW1lbnRzKQogCiAgICAgZGVmIGJpbmQoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgJycnR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKKyAgICAgICAgIiIiR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKICAgICAgICAgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4gIFJhaXNlcyBgVHlwZUVycm9yYAogICAgICAgICBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBhcmdzWzBdLl9iaW5kKGFyZ3NbMTpdLCBrd2FyZ3MpCiAKICAgICBkZWYgYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICcnJ0dldCBhIEJvdW5kQXJndW1lbnRzIG9iamVjdCwgdGhhdCBwYXJ0aWFsbHkgbWFwcyB0aGUKKyAgICAgICAgIiIiR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IHBhcnRpYWxseSBtYXBzIHRoZQogICAgICAgICBwYXNzZWQgYGFyZ3NgIGFuZCBga3dhcmdzYCB0byB0aGUgZnVuY3Rpb24ncyBzaWduYXR1cmUuCiAgICAgICAgIFJhaXNlcyBgVHlwZUVycm9yYCBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgotICAgICAgICAnJycKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBhcmdzWzBdLl9iaW5kKGFyZ3NbMTpdLCBrd2FyZ3MsIHBhcnRpYWw9VHJ1ZSkKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKHR5cGUoc2VsZiksCisgICAgICAgICAgICAgICAgKHR1cGxlKHNlbGYuX3BhcmFtZXRlcnMudmFsdWVzKCkpLCksCisgICAgICAgICAgICAgICAgeydfcmV0dXJuX2Fubm90YXRpb24nOiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbn0pCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgc2VsZi5fcmV0dXJuX2Fubm90YXRpb24gPSBzdGF0ZVsnX3JldHVybl9hbm5vdGF0aW9uJ10KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8e30ge30+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgcmVuZGVyX3Bvc19vbmx5X3NlcGFyYXRvciA9IEZhbHNlCkBAIC0yNzA1LDYgKzI5ODIsMTIgQEAKIAogICAgICAgICByZXR1cm4gcmVuZGVyZWQKIAorCitkZWYgc2lnbmF0dXJlKG9iaiwgKiwgZm9sbG93X3dyYXBwZWQ9VHJ1ZSk6CisgICAgIiIiR2V0IGEgc2lnbmF0dXJlIG9iamVjdCBmb3IgdGhlIHBhc3NlZCBjYWxsYWJsZS4iIiIKKyAgICByZXR1cm4gU2lnbmF0dXJlLmZyb21fY2FsbGFibGUob2JqLCBmb2xsb3dfd3JhcHBlZD1mb2xsb3dfd3JhcHBlZCkKKworCiBkZWYgX21haW4oKToKICAgICAiIiIgTG9naWMgZm9yIGluc3BlY3RpbmcgYW4gb2JqZWN0IGdpdmVuIGF0IGNvbW1hbmQgbGluZSAiIiIKICAgICBpbXBvcnQgYXJncGFyc2UKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5CmluZGV4IGFjMDNjMzYuLjc0NjlhOWQgMTAwNjQ0Ci0tLSBhL0xpYi9pcGFkZHJlc3MucHkKKysrIGIvTGliL2lwYWRkcmVzcy5weQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gYWRkcmVzcy50b19ieXRlcyg0LCAnYmlnJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY0IikKIAogCkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDE2LCAnYmlnJykKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY2IikKIAogCkBAIC0xNjQsMjIgKzE2NCwyMyBAQAogCiAKIGRlZiBfZmluZF9hZGRyZXNzX3JhbmdlKGFkZHJlc3Nlcyk6Ci0gICAgIiIiRmluZCBhIHNlcXVlbmNlIG9mIElQdiNBZGRyZXNzLgorICAgICIiIkZpbmQgYSBzZXF1ZW5jZSBvZiBzb3J0ZWQgZGVkdXBsaWNhdGVkIElQdiNBZGRyZXNzLgogCiAgICAgQXJnczoKICAgICAgICAgYWRkcmVzc2VzOiBhIGxpc3Qgb2YgSVB2I0FkZHJlc3Mgb2JqZWN0cy4KIAotICAgIFJldHVybnM6CisgICAgWWllbGRzOgogICAgICAgICBBIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3NlcyBpbiB0aGUgc2VxdWVuY2UuCiAKICAgICAiIiIKLSAgICBmaXJzdCA9IGxhc3QgPSBhZGRyZXNzZXNbMF0KLSAgICBmb3IgaXAgaW4gYWRkcmVzc2VzWzE6XToKLSAgICAgICAgaWYgaXAuX2lwID09IGxhc3QuX2lwICsgMToKLSAgICAgICAgICAgIGxhc3QgPSBpcAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJlYWsKLSAgICByZXR1cm4gKGZpcnN0LCBsYXN0KQorICAgIGl0ID0gaXRlcihhZGRyZXNzZXMpCisgICAgZmlyc3QgPSBsYXN0ID0gbmV4dChpdCkKKyAgICBmb3IgaXAgaW4gaXQ6CisgICAgICAgIGlmIGlwLl9pcCAhPSBsYXN0Ll9pcCArIDE6CisgICAgICAgICAgICB5aWVsZCBmaXJzdCwgbGFzdAorICAgICAgICAgICAgZmlyc3QgPSBpcAorICAgICAgICBsYXN0ID0gaXAKKyAgICB5aWVsZCBmaXJzdCwgbGFzdAogCiAKIGRlZiBfY291bnRfcmlnaHRoYW5kX3plcm9fYml0cyhudW1iZXIsIGJpdHMpOgpAQCAtMTk1LDExICsxOTYsNyBAQAogICAgICIiIgogICAgIGlmIG51bWJlciA9PSAwOgogICAgICAgICByZXR1cm4gYml0cwotICAgIGZvciBpIGluIHJhbmdlKGJpdHMpOgotICAgICAgICBpZiAobnVtYmVyID4+IGkpICYgMToKLSAgICAgICAgICAgIHJldHVybiBpCi0gICAgIyBBbGwgYml0cyBvZiBpbnRlcmVzdCB3ZXJlIHplcm8sIGV2ZW4gaWYgdGhlcmUgYXJlIG1vcmUgaW4gdGhlIG51bWJlcgotICAgIHJldHVybiBiaXRzCisgICAgcmV0dXJuIG1pbihiaXRzLCAofm51bWJlciAmIChudW1iZXItMSkpLmJpdF9sZW5ndGgoKSkKIAogCiBkZWYgc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpOgpAQCAtMjUwLDE1ICsyNDcsMTQgQEAKICAgICB3aGlsZSBmaXJzdF9pbnQgPD0gbGFzdF9pbnQ6CiAgICAgICAgIG5iaXRzID0gbWluKF9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKGZpcnN0X2ludCwgaXBfYml0cyksCiAgICAgICAgICAgICAgICAgICAgIChsYXN0X2ludCAtIGZpcnN0X2ludCArIDEpLmJpdF9sZW5ndGgoKSAtIDEpCi0gICAgICAgIG5ldCA9IGlwKCclcy8lZCcgJSAoZmlyc3QsIGlwX2JpdHMgLSBuYml0cykpCisgICAgICAgIG5ldCA9IGlwKChmaXJzdF9pbnQsIGlwX2JpdHMgLSBuYml0cykpCiAgICAgICAgIHlpZWxkIG5ldAogICAgICAgICBmaXJzdF9pbnQgKz0gMSA8PCBuYml0cwogICAgICAgICBpZiBmaXJzdF9pbnQgLSAxID09IGlwLl9BTExfT05FUzoKICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGZpcnN0ID0gZmlyc3QuX19jbGFzc19fKGZpcnN0X2ludCkKIAogCi1kZWYgX2NvbGxhcHNlX2FkZHJlc3Nlc19yZWN1cnNpdmUoYWRkcmVzc2VzKToKK2RlZiBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKGFkZHJlc3Nlcyk6CiAgICAgIiIiTG9vcHMgdGhyb3VnaCB0aGUgYWRkcmVzc2VzLCBjb2xsYXBzaW5nIGNvbmN1cnJlbnQgbmV0YmxvY2tzLgogCiAgICAgRXhhbXBsZToKQEAgLTI2OCw3ICsyNjQsNyBAQAogICAgICAgICBpcDMgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjYnKQogICAgICAgICBpcDQgPSBJUHY0TmV0d29yaygnMTkyLjAuMi4xOTIvMjYnKQogCi0gICAgICAgIF9jb2xsYXBzZV9hZGRyZXNzZXNfcmVjdXJzaXZlKFtpcDEsIGlwMiwgaXAzLCBpcDRdKSAtPgorICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKFtpcDEsIGlwMiwgaXAzLCBpcDRdKSAtPgogICAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCiAKICAgICAgICAgVGhpcyBzaG91bGRuJ3QgYmUgY2FsbGVkIGRpcmVjdGx5OyBpdCBpcyBjYWxsZWQgdmlhCkBAIC0yODIsMjggKzI3OCwyOSBAQAogICAgICAgICBwYXNzZWQuCiAKICAgICAiIiIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBsYXN0X2FkZHIgPSBOb25lCi0gICAgICAgIHJldF9hcnJheSA9IFtdCi0gICAgICAgIG9wdGltaXplZCA9IEZhbHNlCi0KLSAgICAgICAgZm9yIGN1cl9hZGRyIGluIGFkZHJlc3NlczoKLSAgICAgICAgICAgIGlmIG5vdCByZXRfYXJyYXk6Ci0gICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gY3VyX2FkZHIKLSAgICAgICAgICAgICAgICByZXRfYXJyYXkuYXBwZW5kKGN1cl9hZGRyKQotICAgICAgICAgICAgZWxpZiAoY3VyX2FkZHIubmV0d29ya19hZGRyZXNzID49IGxhc3RfYWRkci5uZXR3b3JrX2FkZHJlc3MgYW5kCi0gICAgICAgICAgICAgICAgY3VyX2FkZHIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gbGFzdF9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzKToKLSAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIGN1cl9hZGRyID09IGxpc3QobGFzdF9hZGRyLnN1cGVybmV0KCkuc3VibmV0cygpKVsxXToKLSAgICAgICAgICAgICAgICByZXRfYXJyYXlbLTFdID0gbGFzdF9hZGRyID0gbGFzdF9hZGRyLnN1cGVybmV0KCkKLSAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCi0gICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKLQotICAgICAgICBhZGRyZXNzZXMgPSByZXRfYXJyYXkKLSAgICAgICAgaWYgbm90IG9wdGltaXplZDoKLSAgICAgICAgICAgIHJldHVybiBhZGRyZXNzZXMKKyAgICAjIEZpcnN0IG1lcmdlCisgICAgdG9fbWVyZ2UgPSBsaXN0KGFkZHJlc3NlcykKKyAgICBzdWJuZXRzID0ge30KKyAgICB3aGlsZSB0b19tZXJnZToKKyAgICAgICAgbmV0ID0gdG9fbWVyZ2UucG9wKCkKKyAgICAgICAgc3VwZXJuZXQgPSBuZXQuc3VwZXJuZXQoKQorICAgICAgICBleGlzdGluZyA9IHN1Ym5ldHMuZ2V0KHN1cGVybmV0KQorICAgICAgICBpZiBleGlzdGluZyBpcyBOb25lOgorICAgICAgICAgICAgc3VibmV0c1tzdXBlcm5ldF0gPSBuZXQKKyAgICAgICAgZWxpZiBleGlzdGluZyAhPSBuZXQ6CisgICAgICAgICAgICAjIE1lcmdlIGNvbnNlY3V0aXZlIHN1Ym5ldHMKKyAgICAgICAgICAgIGRlbCBzdWJuZXRzW3N1cGVybmV0XQorICAgICAgICAgICAgdG9fbWVyZ2UuYXBwZW5kKHN1cGVybmV0KQorICAgICMgVGhlbiBpdGVyYXRlIG92ZXIgcmVzdWx0aW5nIG5ldHdvcmtzLCBza2lwcGluZyBzdWJzdW1lZCBzdWJuZXRzCisgICAgbGFzdCA9IE5vbmUKKyAgICBmb3IgbmV0IGluIHNvcnRlZChzdWJuZXRzLnZhbHVlcygpKToKKyAgICAgICAgaWYgbGFzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgU2luY2UgdGhleSBhcmUgc29ydGVkLCBsYXN0Lm5ldHdvcmtfYWRkcmVzcyA8PSBuZXQubmV0d29ya19hZGRyZXNzCisgICAgICAgICAgICAjIGlzIGEgZ2l2ZW4uCisgICAgICAgICAgICBpZiBsYXN0LmJyb2FkY2FzdF9hZGRyZXNzID49IG5ldC5icm9hZGNhc3RfYWRkcmVzczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB5aWVsZCBuZXQKKyAgICAgICAgbGFzdCA9IG5ldAogCiAKIGRlZiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKToKQEAgLTMyNCw3ICszMjEsNiBAQAogICAgICAgICBUeXBlRXJyb3I6IElmIHBhc3NlZCBhIGxpc3Qgb2YgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgogCiAgICAgIiIiCi0gICAgaSA9IDAKICAgICBhZGRycyA9IFtdCiAgICAgaXBzID0gW10KICAgICBuZXRzID0gW10KQEAgLTM1MiwxNSArMzQ4LDEzIEBACiAKICAgICAjIHNvcnQgYW5kIGRlZHVwCiAgICAgaXBzID0gc29ydGVkKHNldChpcHMpKQotICAgIG5ldHMgPSBzb3J0ZWQoc2V0KG5ldHMpKQogCi0gICAgd2hpbGUgaSA8IGxlbihpcHMpOgotICAgICAgICAoZmlyc3QsIGxhc3QpID0gX2ZpbmRfYWRkcmVzc19yYW5nZShpcHNbaTpdKQotICAgICAgICBpID0gaXBzLmluZGV4KGxhc3QpICsgMQotICAgICAgICBhZGRycy5leHRlbmQoc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpKQorICAgICMgZmluZCBjb25zZWN1dGl2ZSBhZGRyZXNzIHJhbmdlcyBpbiB0aGUgc29ydGVkIHNlcXVlbmNlIGFuZCBzdW1tYXJpemUgdGhlbQorICAgIGlmIGlwczoKKyAgICAgICAgZm9yIGZpcnN0LCBsYXN0IGluIF9maW5kX2FkZHJlc3NfcmFuZ2UoaXBzKToKKyAgICAgICAgICAgIGFkZHJzLmV4dGVuZChzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkpCiAKLSAgICByZXR1cm4gaXRlcihfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShzb3J0ZWQoCi0gICAgICAgIGFkZHJzICsgbmV0cywga2V5PV9CYXNlTmV0d29yay5fZ2V0X25ldHdvcmtzX2tleSkpKQorICAgIHJldHVybiBfY29sbGFwc2VfYWRkcmVzc2VzX2ludGVybmFsKGFkZHJzICsgbmV0cykKIAogCiBkZWYgZ2V0X21peGVkX3R5cGVfa2V5KG9iaik6CkBAIC0zOTIsNiArMzg2LDggQEAKIAogICAgICIiIlRoZSBtb3RoZXIgY2xhc3MuIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGV4cGxvZGVkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxvbmdoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCkBAIC00MDMsNiArMzk5LDE3IEBACiAgICAgICAgIHJldHVybiBzdHIoc2VsZikKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZXZlcnNlX3BvaW50ZXIoc2VsZik6CisgICAgICAgICIiIlRoZSBuYW1lIG9mIHRoZSByZXZlcnNlIEROUyBwb2ludGVyIGZvciB0aGUgSVAgYWRkcmVzcywgZS5nLjoKKyAgICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMTI3LjAuMC4xIikucmV2ZXJzZV9wb2ludGVyCisgICAgICAgICAgICAnMS4wLjAuMTI3LmluLWFkZHIuYXJwYScKKyAgICAgICAgICAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygiMjAwMTpkYjg6OjEiKS5yZXZlcnNlX3BvaW50ZXIKKyAgICAgICAgICAgICcxLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC44LmIuZC4wLjEuMC4wLjIuaXA2LmFycGEnCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZXZlcnNlX3BvaW50ZXIoKQorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHZlcnNpb24oc2VsZik6CiAgICAgICAgIG1zZyA9ICclMjAwcyBoYXMgbm8gdmVyc2lvbiBzcGVjaWZpZWQnICUgKHR5cGUoc2VsZiksKQogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKG1zZykKQEAgLTQyMyw3ICs0MzAsOCBAQAogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIGFkZHJlc3NfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiwgc2VsZi5fdmVyc2lvbikpCiAKLSAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLCBwcmVmaXhsZW4pOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaXBfaW50X2Zyb21fcHJlZml4KGNscywgcHJlZml4bGVuKToKICAgICAgICAgIiIiVHVybiB0aGUgcHJlZml4IGxlbmd0aCBpbnRvIGEgYml0d2lzZSBuZXRtYXNrCiAKICAgICAgICAgQXJnczoKQEAgLTQzMyw5ICs0NDEsMTAgQEAKICAgICAgICAgICAgIEFuIGludGVnZXIuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9BTExfT05FUyBeIChzZWxmLl9BTExfT05FUyA+PiBwcmVmaXhsZW4pCisgICAgICAgIHJldHVybiBjbHMuX0FMTF9PTkVTIF4gKGNscy5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQogCi0gICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3ByZWZpeF9mcm9tX2lwX2ludChjbHMsIGlwX2ludCk6CiAgICAgICAgICIiIlJldHVybiBwcmVmaXggbGVuZ3RoIGZyb20gdGhlIGJpdHdpc2UgbmV0bWFzay4KIAogICAgICAgICBBcmdzOgpAQCAtNDQ4LDIyICs0NTcsMjQgQEAKICAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHRoZSBpbnB1dCBpbnRlcm1pbmdsZXMgemVyb2VzICYgb25lcwogICAgICAgICAiIiIKICAgICAgICAgdHJhaWxpbmdfemVyb2VzID0gX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoaXBfaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXhfcHJlZml4bGVuKQotICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuIC0gdHJhaWxpbmdfemVyb2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5fbWF4X3ByZWZpeGxlbikKKyAgICAgICAgcHJlZml4bGVuID0gY2xzLl9tYXhfcHJlZml4bGVuIC0gdHJhaWxpbmdfemVyb2VzCiAgICAgICAgIGxlYWRpbmdfb25lcyA9IGlwX2ludCA+PiB0cmFpbGluZ196ZXJvZXMKICAgICAgICAgYWxsX29uZXMgPSAoMSA8PCBwcmVmaXhsZW4pIC0gMQogICAgICAgICBpZiBsZWFkaW5nX29uZXMgIT0gYWxsX29uZXM6Ci0gICAgICAgICAgICBieXRlc2xlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4gLy8gOAorICAgICAgICAgICAgYnl0ZXNsZW4gPSBjbHMuX21heF9wcmVmaXhsZW4gLy8gOAogICAgICAgICAgICAgZGV0YWlscyA9IGlwX2ludC50b19ieXRlcyhieXRlc2xlbiwgJ2JpZycpCiAgICAgICAgICAgICBtc2cgPSAnTmV0bWFzayBwYXR0ZXJuICVyIG1peGVzIHplcm9lcyAmIG9uZXMnCiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIGRldGFpbHMpCiAgICAgICAgIHJldHVybiBwcmVmaXhsZW4KIAotICAgIGRlZiBfcmVwb3J0X2ludmFsaWRfbmV0bWFzayhzZWxmLCBuZXRtYXNrX3N0cik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGNscywgbmV0bWFza19zdHIpOgogICAgICAgICBtc2cgPSAnJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycgJSBuZXRtYXNrX3N0cgogICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcihtc2cpIGZyb20gTm9uZQogCi0gICAgZGVmIF9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKHNlbGYsIHByZWZpeGxlbl9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcHJlZml4X2Zyb21fcHJlZml4X3N0cmluZyhjbHMsIHByZWZpeGxlbl9zdHIpOgogICAgICAgICAiIiJSZXR1cm4gcHJlZml4IGxlbmd0aCBmcm9tIGEgbnVtZXJpYyBzdHJpbmcKIAogICAgICAgICBBcmdzOgpAQCAtNDc4LDE2ICs0ODksMTcgQEAKICAgICAgICAgIyBpbnQgYWxsb3dzIGEgbGVhZGluZyArLy0gYXMgd2VsbCBhcyBzdXJyb3VuZGluZyB3aGl0ZXNwYWNlLAogICAgICAgICAjIHNvIHdlIGVuc3VyZSB0aGF0IGlzbid0IHRoZSBjYXNlCiAgICAgICAgIGlmIG5vdCBfQmFzZVY0Ll9ERUNJTUFMX0RJR0lUUy5pc3N1cGVyc2V0KHByZWZpeGxlbl9zdHIpOgotICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQorICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKHByZWZpeGxlbl9zdHIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHByZWZpeGxlbiA9IGludChwcmVmaXhsZW5fc3RyKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKLSAgICAgICAgaWYgbm90ICgwIDw9IHByZWZpeGxlbiA8PSBzZWxmLl9tYXhfcHJlZml4bGVuKToKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhwcmVmaXhsZW5fc3RyKQorICAgICAgICBpZiBub3QgKDAgPD0gcHJlZml4bGVuIDw9IGNscy5fbWF4X3ByZWZpeGxlbik6CisgICAgICAgICAgICBjbHMuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2socHJlZml4bGVuX3N0cikKICAgICAgICAgcmV0dXJuIHByZWZpeGxlbgogCi0gICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoc2VsZiwgaXBfc3RyKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3ByZWZpeF9mcm9tX2lwX3N0cmluZyhjbHMsIGlwX3N0cik6CiAgICAgICAgICIiIlR1cm4gYSBuZXRtYXNrL2hvc3RtYXNrIHN0cmluZyBpbnRvIGEgcHJlZml4IGxlbmd0aAogCiAgICAgICAgIEFyZ3M6CkBAIC01MDEsMjQgKzUxMywyNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIyBQYXJzZSB0aGUgbmV0bWFzay9ob3N0bWFzayBsaWtlIGFuIElQIGFkZHJlc3MuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlwX2ludCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCisgICAgICAgICAgICBpcF9pbnQgPSBjbHMuX2lwX2ludF9mcm9tX3N0cmluZyhpcF9zdHIpCiAgICAgICAgIGV4Y2VwdCBBZGRyZXNzVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHNlbGYuX3JlcG9ydF9pbnZhbGlkX25ldG1hc2soaXBfc3RyKQorICAgICAgICAgICAgY2xzLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGlwX3N0cikKIAogICAgICAgICAjIFRyeSBtYXRjaGluZyBhIG5ldG1hc2sgKHRoaXMgd291bGQgYmUgLzEqMCovIGFzIGEgYml0d2lzZSByZWdleHApLgogICAgICAgICAjIE5vdGUgdGhhdCB0aGUgdHdvIGFtYmlndW91cyBjYXNlcyAoYWxsLW9uZXMgYW5kIGFsbC16ZXJvZXMpIGFyZQogICAgICAgICAjIHRyZWF0ZWQgYXMgbmV0bWFza3MuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXhfZnJvbV9pcF9pbnQoaXBfaW50KQorICAgICAgICAgICAgcmV0dXJuIGNscy5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgIyBJbnZlcnQgdGhlIGJpdHMsIGFuZCB0cnkgbWF0Y2hpbmcgYSAvMCsxKy8gaG9zdG1hc2sgaW5zdGVhZC4KLSAgICAgICAgaXBfaW50IF49IHNlbGYuX0FMTF9PTkVTCisgICAgICAgIGlwX2ludCBePSBjbHMuX0FMTF9PTkVTCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcmVmaXhfZnJvbV9pcF9pbnQoaXBfaW50KQorICAgICAgICAgICAgcmV0dXJuIGNscy5fcHJlZml4X2Zyb21faXBfaW50KGlwX2ludCkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfaW52YWxpZF9uZXRtYXNrKGlwX3N0cikKKyAgICAgICAgICAgIGNscy5fcmVwb3J0X2ludmFsaWRfbmV0bWFzayhpcF9zdHIpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc3RyKHNlbGYpLCkKIAogCiBAZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nCkBAIC01MzAsMTAgKzU0NSw3IEBACiAgICAgdXNlZCBieSBzaW5nbGUgSVAgYWRkcmVzc2VzLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgotICAgICAgICBpZiAobm90IGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpCi0gICAgICAgICAgICBhbmQgJy8nIGluIHN0cihhZGRyZXNzKSk6Ci0gICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiVW5leHBlY3RlZCAnLycgaW4gJXIiICUgYWRkcmVzcykKKyAgICBfX3Nsb3RzX18gPSAoKQogCiAgICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9pcApAQCAtNTc5LDYgKzU5MSw5IEBACiAgICAgZGVmIF9nZXRfYWRkcmVzc19rZXkoc2VsZik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZikKIAorICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18sIChzZWxmLl9pcCwpCisKIAogQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZwogY2xhc3MgX0Jhc2VOZXR3b3JrKF9JUEFkZHJlc3NCYXNlKToKQEAgLTc2NSw3ICs3ODAsNyBAQAogICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgbm90IGNvbnRhaW5lZCBpbiAlcycgJSAob3RoZXIsIHNlbGYpKQogICAgICAgICBpZiBvdGhlciA9PSBzZWxmOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBNYWtlIHN1cmUgd2UncmUgY29tcGFyaW5nIHRoZSBuZXR3b3JrIG9mIG90aGVyLgogICAgICAgICBvdGhlciA9IG90aGVyLl9fY2xhc3NfXygnJXMvJXMnICUgKG90aGVyLm5ldHdvcmtfYWRkcmVzcywKQEAgLTkwMCwyMCArOTE1LDExIEBACiAgICAgICAgICAgICAgICAgJ3ByZWZpeCBsZW5ndGggZGlmZiAlZCBpcyBpbnZhbGlkIGZvciBuZXRibG9jayAlcycgJSAoCiAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXhsZW4sIHNlbGYpKQogCi0gICAgICAgIGZpcnN0ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuICsgcHJlZml4bGVuX2RpZmYpKQotCi0gICAgICAgIHlpZWxkIGZpcnN0Ci0gICAgICAgIGN1cnJlbnQgPSBmaXJzdAotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYnJvYWRjYXN0ID0gY3VycmVudC5icm9hZGNhc3RfYWRkcmVzcwotICAgICAgICAgICAgaWYgYnJvYWRjYXN0ID09IHNlbGYuYnJvYWRjYXN0X2FkZHJlc3M6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBuZXdfYWRkciA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KGJyb2FkY2FzdCkgKyAxKQotICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuX19jbGFzc19fKCclcy8lcycgJSAobmV3X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4bGVuKSkKLQorICAgICAgICBzdGFydCA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgZW5kID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIHN0ZXAgPSAoaW50KHNlbGYuaG9zdG1hc2spICsgMSkgPj4gcHJlZml4bGVuX2RpZmYKKyAgICAgICAgZm9yIG5ld19hZGRyIGluIHJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXApOgorICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuX19jbGFzc19fKChuZXdfYWRkciwgbmV3X3ByZWZpeGxlbikpCiAgICAgICAgICAgICB5aWVsZCBjdXJyZW50CiAKICAgICBkZWYgc3VwZXJuZXQoc2VsZiwgcHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKToKQEAgLTk0NywxNSArOTUzLDE1IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCiAgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IHNlbGYuX3ByZWZpeGxlbiAtIG5ld19wcmVmaXgKIAotICAgICAgICBpZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMDoKKyAgICAgICAgbmV3X3ByZWZpeGxlbiA9IHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYKKyAgICAgICAgaWYgbmV3X3ByZWZpeGxlbiA8IDA6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICdjdXJyZW50IHByZWZpeGxlbiBpcyAlZCwgY2Fubm90IGhhdmUgYSBwcmVmaXhsZW5fZGlmZiBvZiAlZCcgJQogICAgICAgICAgICAgICAgIChzZWxmLnByZWZpeGxlbiwgcHJlZml4bGVuX2RpZmYpKQotICAgICAgICAjIFRPRE8gKHBtb29keSk6IG9wdGltaXplIHRoaXMuCi0gICAgICAgIHQgPSBzZWxmLl9fY2xhc3NfXygnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpCi0gICAgICAgIHJldHVybiB0Ll9fY2xhc3NfXygnJXMvJWQnICUgKHQubmV0d29ya19hZGRyZXNzLCB0LnByZWZpeGxlbikpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXygoCisgICAgICAgICAgICBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYgKGludChzZWxmLm5ldG1hc2spIDw8IHByZWZpeGxlbl9kaWZmKSwKKyAgICAgICAgICAgIG5ld19wcmVmaXhsZW4KKyAgICAgICAgICAgICkpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgpAQCAtMTA0OSwyMSArMTA1NSw0OSBAQAogCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF92ZXJzaW9uID0gNAogICAgICMgRXF1aXZhbGVudCB0byAyNTUuMjU1LjI1NS4yNTUgb3IgMzIgYml0cyBvZiAxJ3MuCiAgICAgX0FMTF9PTkVTID0gKDIqKklQVjRMRU5HVEgpIC0gMQogICAgIF9ERUNJTUFMX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OScpCiAKICAgICAjIHRoZSB2YWxpZCBvY3RldHMgZm9yIGhvc3QgYW5kIG5ldG1hc2tzLiBvbmx5IHVzZWZ1bCBmb3IgSVB2NC4KLSAgICBfdmFsaWRfbWFza19vY3RldHMgPSBmcm96ZW5zZXQoKDI1NSwgMjU0LCAyNTIsIDI0OCwgMjQwLCAyMjQsIDE5MiwgMTI4LCAwKSkKKyAgICBfdmFsaWRfbWFza19vY3RldHMgPSBmcm96ZW5zZXQoezI1NSwgMjU0LCAyNTIsIDI0OCwgMjQwLCAyMjQsIDE5MiwgMTI4LCAwfSkKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDQKLSAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjRMRU5HVEgKKyAgICBfbWF4X3ByZWZpeGxlbiA9IElQVjRMRU5HVEgKKyAgICAjIFRoZXJlIGFyZSBvbmx5IGEgaGFuZGZ1bCBvZiB2YWxpZCB2NCBuZXRtYXNrcywgc28gd2UgY2FjaGUgdGhlbSBhbGwKKyAgICAjIHdoZW4gY29uc3RydWN0ZWQgKHNlZSBfbWFrZV9uZXRtYXNrKCkpLgorICAgIF9uZXRtYXNrX2NhY2hlID0ge30KIAogICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgogICAgICAgICByZXR1cm4gc3RyKHNlbGYpCiAKLSAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWFrZV9uZXRtYXNrKGNscywgYXJnKToKKyAgICAgICAgIiIiTWFrZSBhIChuZXRtYXNrLCBwcmVmaXhfbGVuKSB0dXBsZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudC4KKworICAgICAgICBBcmd1bWVudCBjYW4gYmU6CisgICAgICAgIC0gYW4gaW50ZWdlciAodGhlIHByZWZpeCBsZW5ndGgpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoIChlLmcuICIyNCIpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbmV0bWFzayAoZS5nLiAiMjU1LjI1NS4yNTUuMCIpCisgICAgICAgICIiIgorICAgICAgICBpZiBhcmcgbm90IGluIGNscy5fbmV0bWFza19jYWNoZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBpbnQpOgorICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGFyZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm0KKyAgICAgICAgICAgICAgICAgICAgcHJlZml4bGVuID0gY2xzLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFyZykKKyAgICAgICAgICAgICAgICBleGNlcHQgTmV0bWFza1ZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBvciBob3N0bWFzayBpbiBkb3R0ZWQtcXVhZCBmb3JtLgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWF5IHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yLgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBjbHMuX3ByZWZpeF9mcm9tX2lwX3N0cmluZyhhcmcpCisgICAgICAgICAgICBuZXRtYXNrID0gSVB2NEFkZHJlc3MoY2xzLl9pcF9pbnRfZnJvbV9wcmVmaXgocHJlZml4bGVuKSkKKyAgICAgICAgICAgIGNscy5fbmV0bWFza19jYWNoZVthcmddID0gbmV0bWFzaywgcHJlZml4bGVuCisgICAgICAgIHJldHVybiBjbHMuX25ldG1hc2tfY2FjaGVbYXJnXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9pcF9pbnRfZnJvbV9zdHJpbmcoY2xzLCBpcF9zdHIpOgogICAgICAgICAiIiJUdXJuIHRoZSBnaXZlbiBJUCBzdHJpbmcgaW50byBhbiBpbnRlZ2VyIGZvciBjb21wYXJpc29uLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xMDg0LDExICsxMTE4LDEyIEBACiAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJXIiICUgaXBfc3RyKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhtYXAoc2VsZi5fcGFyc2Vfb2N0ZXQsIG9jdGV0cyksICdiaWcnKQorICAgICAgICAgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKG1hcChjbHMuX3BhcnNlX29jdGV0LCBvY3RldHMpLCAnYmlnJykKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIiVzIGluICVyIiAlIChleGMsIGlwX3N0cikpIGZyb20gTm9uZQogCi0gICAgZGVmIF9wYXJzZV9vY3RldChzZWxmLCBvY3RldF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2Vfb2N0ZXQoY2xzLCBvY3RldF9zdHIpOgogICAgICAgICAiIiJDb252ZXJ0IGEgZGVjaW1hbCBvY3RldCBpbnRvIGFuIGludGVnZXIuCiAKICAgICAgICAgQXJnczoKQEAgLTExMDQsNyArMTEzOSw3IEBACiAgICAgICAgIGlmIG5vdCBvY3RldF9zdHI6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIikKICAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgotICAgICAgICBpZiBub3Qgc2VsZi5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChvY3RldF9zdHIpOgorICAgICAgICBpZiBub3QgY2xzLl9ERUNJTUFMX0RJR0lUUy5pc3N1cGVyc2V0KG9jdGV0X3N0cik6CiAgICAgICAgICAgICBtc2cgPSAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJXIiCiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIG9jdGV0X3N0cikKICAgICAgICAgIyBXZSBkbyB0aGUgbGVuZ3RoIGNoZWNrIHNlY29uZCwgc2luY2UgdGhlIGludmFsaWQgY2hhcmFjdGVyIGVycm9yCkBAIC0xMTI0LDcgKzExNTksOCBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIiAlIG9jdGV0X2ludCkKICAgICAgICAgcmV0dXJuIG9jdGV0X2ludAogCi0gICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChjbHMsIGlwX2ludCk6CiAgICAgICAgICIiIlR1cm5zIGEgMzItYml0IGludGVnZXIgaW50byBkb3R0ZWQgZGVjaW1hbCBub3RhdGlvbi4KIAogICAgICAgICBBcmdzOgpAQCAtMTE4OCw2ICsxMjI0LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBfcmV2ZXJzZV9wb2ludGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIHJldmVyc2UgRE5TIHBvaW50ZXIgbmFtZSBmb3IgdGhlIElQdjQgYWRkcmVzcy4KKworICAgICAgICBUaGlzIGltcGxlbWVudHMgdGhlIG1ldGhvZCBkZXNjcmliZWQgaW4gUkZDMTAzNSAzLjUuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldmVyc2Vfb2N0ZXRzID0gc3RyKHNlbGYpLnNwbGl0KCcuJylbOjotMV0KKyAgICAgICAgcmV0dXJuICcuJy5qb2luKHJldmVyc2Vfb2N0ZXRzKSArICcuaW4tYWRkci5hcnBhJworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCkBAIC0xMjAxLDYgKzEyNDYsOCBAQAogCiAgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY0IEFkZHJlc3Nlcy4iIiIKIAorICAgIF9fc2xvdHNfXyA9ICgnX2lwJywgJ19fd2Vha3JlZl9fJykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKIAogICAgICAgICAiIiIKQEAgLTEyMTcsOSArMTI2NCw2IEBACiAgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgogCiAgICAgICAgICIiIgotICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLSAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQotCiAgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KICAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKQEAgLTEyMzUsNiArMTI3OSw4IEBACiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCiAgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCiAgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIGlmICcvJyBpbiBhZGRyX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIgJSBhZGRyZXNzKQogICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKIAogICAgIEBwcm9wZXJ0eQpAQCAtMTI1MSw4ICsxMjk3LDcgQEAKICAgICAgICAgICAgICByZXNlcnZlZCBJUHY0IE5ldHdvcmsgcmFuZ2UuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJlc2VydmVkX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiByZXNlcnZlZF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fcmVzZXJ2ZWRfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUoKQpAQCAtMTI2NCwyMSArMTMwOSw3IEBACiAgICAgICAgICAgICBpYW5hLWlwdjQtc3BlY2lhbC1yZWdpc3RyeS4KIAogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIChzZWxmIGluIElQdjROZXR3b3JrKCcwLjAuMC4wLzgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzEwLjAuMC4wLzgnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTcyLjE2LjAuMC8xMicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjAuMC4wLzI5Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxOTIuMC4wLjE3MC8zMScpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcxOTIuMTY4LjAuMC8xNicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTk4LjE4LjAuMC8xNScpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMTk4LjUxLjEwMC4wLzI0Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjROZXR3b3JrKCcyMDMuMC4xMTMuMC8yNCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKSBvcgotICAgICAgICAgICAgICAgIHNlbGYgaW4gSVB2NE5ldHdvcmsoJzI1NS4yNTUuMjU1LjI1NS8zMicpKQotCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiBuZXQgZm9yIG5ldCBpbiBzZWxmLl9jb25zdGFudHMuX3ByaXZhdGVfbmV0d29ya3MpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgpAQCAtMTI4OSw4ICsxMzIwLDcgQEAKICAgICAgICAgICAgIFNlZSBSRkMgMzE3MSBmb3IgZGV0YWlscy4KIAogICAgICAgICAiIiIKLSAgICAgICAgbXVsdGljYXN0X25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjI0LjAuMC4wLzQnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBtdWx0aWNhc3RfbmV0d29yaworICAgICAgICByZXR1cm4gc2VsZiBpbiBzZWxmLl9jb25zdGFudHMuX211bHRpY2FzdF9uZXR3b3JrCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CkBAIC0xMzAxLDggKzEzMzEsNyBAQAogICAgICAgICAgICAgUkZDIDU3MzUgMy4KIAogICAgICAgICAiIiIKLSAgICAgICAgdW5zcGVjaWZpZWRfYWRkcmVzcyA9IElQdjRBZGRyZXNzKCcwLjAuMC4wJykKLSAgICAgICAgcmV0dXJuIHNlbGYgPT0gdW5zcGVjaWZpZWRfYWRkcmVzcworICAgICAgICByZXR1cm4gc2VsZiA9PSBzZWxmLl9jb25zdGFudHMuX3Vuc3BlY2lmaWVkX2FkZHJlc3MKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKQEAgLTEzMTIsOCArMTM0MSw3IEBACiAgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBsb29wYmFjayBwZXIgUkZDIDMzMzAuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGxvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQotICAgICAgICByZXR1cm4gc2VsZiBpbiBsb29wYmFja19uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbG9vcGJhY2tfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CkBAIC0xMzIzLDggKzEzNTEsNyBAQAogICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGxpbmstbG9jYWwgcGVyIFJGQyAzOTI3LgogCiAgICAgICAgICIiIgotICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjROZXR3b3JrKCcxNjkuMjU0LjAuMC8xNicpCi0gICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbGlua2xvY2FsX25ldHdvcmsKIAogCiBjbGFzcyBJUHY0SW50ZXJmYWNlKElQdjRBZGRyZXNzKToKQEAgLTEzMzYsNiArMTM2MywxOCBAQAogICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCB0dXBsZSk6CisgICAgICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzWzBdKQorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkcmVzc1sxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCiAgICAgICAgIElQdjRBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCiAKQEAgLTEzNzUsNiArMTQxNCw4IEBACiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faXAgXiBzZWxmLl9wcmVmaXhsZW4gXiBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykKIAorICAgIF9fcmVkdWNlX18gPSBfSVBBZGRyZXNzQmFzZS5fX3JlZHVjZV9fCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXAoc2VsZik6CiAgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzZWxmLl9pcCkKQEAgLTE0NDcsMjQgKzE0ODgsMzAgQEAKICAgICAgICAgICAgICAgc3VwcGxpZWQuCiAKICAgICAgICAgIiIiCi0KLSAgICAgICAgX0Jhc2VWNC5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQogICAgICAgICBfQmFzZU5ldHdvcmsuX19pbml0X18oc2VsZiwgYWRkcmVzcykKIAotICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKLSAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcyBvciBpbnRlZ2VyCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGludCwgYnl0ZXMpKToKICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MoYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjRBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQotICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhzZWxmLl9tYXhfcHJlZml4bGVuKQorICAgICAgICAgICAgI2ZpeG1lOiBhZGRyZXNzL25ldHdvcmsgdGVzdCBoZXJlLgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgotICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6Ci0gICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCi0gICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9BTExfT05FUykKLSAgICAgICAgICAgICNmaXhtZTogYWRkcmVzcy9uZXR3b3JrIHRlc3QgaGVyZS4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCB0dXBsZSk6CisgICAgICAgICAgICBpZiBsZW4oYWRkcmVzcykgPiAxOgorICAgICAgICAgICAgICAgIGFyZyA9IGFkZHJlc3NbMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBXZSB3ZXJlbid0IGdpdmVuIGFuIGFkZHJlc3NbMV0KKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGFkZHJlc3NbMF0pCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhhcmcpCisgICAgICAgICAgICBwYWNrZWQgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgICAgICBpZiBwYWNrZWQgJiBpbnQoc2VsZi5uZXRtYXNrKSAhPSBwYWNrZWQ6CisgICAgICAgICAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3MocGFja2VkICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCkBAIC0xNDczLDE2ICsxNTIwLDEwIEBACiAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQogCiAgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGEgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm0KLSAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFkZHJbMV0pCi0gICAgICAgICAgICBleGNlcHQgTmV0bWFza1ZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgYSBuZXRtYXNrIG9yIGhvc3RtYXNrIGluIGRvdHRlZC1xdWFkIGZvcm0uCi0gICAgICAgICAgICAgICAgIyBUaGlzIG1heSByYWlzZSBOZXRtYXNrVmFsdWVFcnJvci4KLSAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9pcF9zdHJpbmcoYWRkclsxXSkKKyAgICAgICAgICAgIGFyZyA9IGFkZHJbMV0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KLSAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fcHJlZml4KHNlbGYuX3ByZWZpeGxlbikpCisgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgIHNlbGYubmV0bWFzaywgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWFrZV9uZXRtYXNrKGFyZykKIAogICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICBpZiAoSVB2NEFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIGludChzZWxmLm5ldG1hc2spKSAhPQpAQCAtMTUwOSw2ICsxNTUwLDM3IEBACiAgICAgICAgICAgICAgICAgbm90IHNlbGYuaXNfcHJpdmF0ZSkKIAogCitjbGFzcyBfSVB2NENvbnN0YW50czoKKyAgICBfbGlua2xvY2FsX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKQorCisgICAgX2xvb3BiYWNrX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTI3LjAuMC4wLzgnKQorCisgICAgX211bHRpY2FzdF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzIyNC4wLjAuMC80JykKKworICAgIF9wcml2YXRlX25ldHdvcmtzID0gWworICAgICAgICBJUHY0TmV0d29yaygnMC4wLjAuMC84JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxMC4wLjAuMC84JyksCisgICAgICAgIElQdjROZXR3b3JrKCcxMjcuMC4wLjAvOCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE3Mi4xNi4wLjAvMTInKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjAuMC8yOScpLAorICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMC4xNzAvMzEnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMTYnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5OC4xOC4wLjAvMTUnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzE5OC41MS4xMDAuMC8yNCcpLAorICAgICAgICBJUHY0TmV0d29yaygnMjAzLjAuMTEzLjAvMjQnKSwKKyAgICAgICAgSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JyksCisgICAgICAgIElQdjROZXR3b3JrKCcyNTUuMjU1LjI1NS4yNTUvMzInKSwKKyAgICAgICAgXQorCisgICAgX3Jlc2VydmVkX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMjQwLjAuMC4wLzQnKQorCisgICAgX3Vuc3BlY2lmaWVkX2FkZHJlc3MgPSBJUHY0QWRkcmVzcygnMC4wLjAuMCcpCisKKworSVB2NEFkZHJlc3MuX2NvbnN0YW50cyA9IF9JUHY0Q29uc3RhbnRzCisKIAogY2xhc3MgX0Jhc2VWNjoKIApAQCAtMTUxOSwxNSArMTU5MSwzNyBAQAogCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF92ZXJzaW9uID0gNgogICAgIF9BTExfT05FUyA9ICgyKipJUFY2TEVOR1RIKSAtIDEKICAgICBfSEVYVEVUX0NPVU5UID0gOAogICAgIF9IRVhfRElHSVRTID0gZnJvemVuc2V0KCcwMTIzNDU2Nzg5QUJDREVGYWJjZGVmJykKKyAgICBfbWF4X3ByZWZpeGxlbiA9IElQVjZMRU5HVEgKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDYKLSAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjZMRU5HVEgKKyAgICAjIFRoZXJlIGFyZSBvbmx5IGEgYnVuY2ggb2YgdmFsaWQgdjYgbmV0bWFza3MsIHNvIHdlIGNhY2hlIHRoZW0gYWxsCisgICAgIyB3aGVuIGNvbnN0cnVjdGVkIChzZWUgX21ha2VfbmV0bWFzaygpKS4KKyAgICBfbmV0bWFza19jYWNoZSA9IHt9CiAKLSAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWFrZV9uZXRtYXNrKGNscywgYXJnKToKKyAgICAgICAgIiIiTWFrZSBhIChuZXRtYXNrLCBwcmVmaXhfbGVuKSB0dXBsZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudC4KKworICAgICAgICBBcmd1bWVudCBjYW4gYmU6CisgICAgICAgIC0gYW4gaW50ZWdlciAodGhlIHByZWZpeCBsZW5ndGgpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbGVuZ3RoIChlLmcuICIyNCIpCisgICAgICAgIC0gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwcmVmaXggbmV0bWFzayAoZS5nLiAiMjU1LjI1NS4yNTUuMCIpCisgICAgICAgICIiIgorICAgICAgICBpZiBhcmcgbm90IGluIGNscy5fbmV0bWFza19jYWNoZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBpbnQpOgorICAgICAgICAgICAgICAgIHByZWZpeGxlbiA9IGFyZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmVmaXhsZW4gPSBjbHMuX3ByZWZpeF9mcm9tX3ByZWZpeF9zdHJpbmcoYXJnKQorICAgICAgICAgICAgbmV0bWFzayA9IElQdjZBZGRyZXNzKGNscy5faXBfaW50X2Zyb21fcHJlZml4KHByZWZpeGxlbikpCisgICAgICAgICAgICBjbHMuX25ldG1hc2tfY2FjaGVbYXJnXSA9IG5ldG1hc2ssIHByZWZpeGxlbgorICAgICAgICByZXR1cm4gY2xzLl9uZXRtYXNrX2NhY2hlW2FyZ10KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfaXBfaW50X2Zyb21fc3RyaW5nKGNscywgaXBfc3RyKToKICAgICAgICAgIiIiVHVybiBhbiBJUHY2IGlwX3N0ciBpbnRvIGFuIGludGVnZXIuCiAKICAgICAgICAgQXJnczoKQEAgLTE1NjMsNyArMTY1Nyw3IEBACiAgICAgICAgICMgQW4gSVB2NiBhZGRyZXNzIGNhbid0IGhhdmUgbW9yZSB0aGFuIDggY29sb25zICg5IHBhcnRzKS4KICAgICAgICAgIyBUaGUgZXh0cmEgY29sb24gY29tZXMgZnJvbSB1c2luZyB0aGUgIjo6IiBub3RhdGlvbiBmb3IgYSBzaW5nbGUKICAgICAgICAgIyBsZWFkaW5nIG9yIHRyYWlsaW5nIHplcm8gcGFydC4KLSAgICAgICAgX21heF9wYXJ0cyA9IHNlbGYuX0hFWFRFVF9DT1VOVCArIDEKKyAgICAgICAgX21heF9wYXJ0cyA9IGNscy5fSEVYVEVUX0NPVU5UICsgMQogICAgICAgICBpZiBsZW4ocGFydHMpID4gX21heF9wYXJ0czoKICAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0ICVkIGNvbG9ucyBwZXJtaXR0ZWQgaW4gJXIiICUgKF9tYXhfcGFydHMtMSwgaXBfc3RyKQogICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQpAQCAtMTU5NSwxNyArMTY4OSwxNyBAQAogICAgICAgICAgICAgICAgIGlmIHBhcnRzX2xvOgogICAgICAgICAgICAgICAgICAgICBtc2cgPSAiVHJhaWxpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKLSAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSBzZWxmLl9IRVhURVRfQ09VTlQgLSAocGFydHNfaGkgKyBwYXJ0c19sbykKKyAgICAgICAgICAgIHBhcnRzX3NraXBwZWQgPSBjbHMuX0hFWFRFVF9DT1VOVCAtIChwYXJ0c19oaSArIHBhcnRzX2xvKQogICAgICAgICAgICAgaWYgcGFydHNfc2tpcHBlZCA8IDE6CiAgICAgICAgICAgICAgICAgbXNnID0gIkV4cGVjdGVkIGF0IG1vc3QgJWQgb3RoZXIgcGFydHMgd2l0aCAnOjonIGluICVyIgotICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQtMSwgaXBfc3RyKSkKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoY2xzLl9IRVhURVRfQ09VTlQtMSwgaXBfc3RyKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBhbGxvY2F0ZSB0aGUgZW50aXJlIGFkZHJlc3MgdG8gcGFydHNfaGkuICBUaGUKICAgICAgICAgICAgICMgZW5kcG9pbnRzIGNvdWxkIHN0aWxsIGJlIGVtcHR5LCBidXQgX3BhcnNlX2hleHRldCgpIHdpbGwgY2hlY2sKICAgICAgICAgICAgICMgZm9yIHRoYXQuCi0gICAgICAgICAgICBpZiBsZW4ocGFydHMpICE9IHNlbGYuX0hFWFRFVF9DT1VOVDoKKyAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gY2xzLl9IRVhURVRfQ09VTlQ6CiAgICAgICAgICAgICAgICAgbXNnID0gIkV4YWN0bHkgJWQgcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgotICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChzZWxmLl9IRVhURVRfQ09VTlQsIGlwX3N0cikpCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGNscy5fSEVYVEVUX0NPVU5ULCBpcF9zdHIpKQogICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgogICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCiAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyBeOiByZXF1aXJlcyBeOjoKQEAgLTE2MjEsMTYgKzE3MTUsMTcgQEAKICAgICAgICAgICAgIGlwX2ludCA9IDAKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBhcnRzX2hpKToKICAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2Ci0gICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gY2xzLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCiAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2ICogcGFydHNfc2tpcHBlZAogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXBhcnRzX2xvLCAwKToKICAgICAgICAgICAgICAgICBpcF9pbnQgPDw9IDE2Ci0gICAgICAgICAgICAgICAgaXBfaW50IHw9IHNlbGYuX3BhcnNlX2hleHRldChwYXJ0c1tpXSkKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gY2xzLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCiAgICAgICAgICAgICByZXR1cm4gaXBfaW50CiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKIAotICAgIGRlZiBfcGFyc2VfaGV4dGV0KHNlbGYsIGhleHRldF9zdHIpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGFyc2VfaGV4dGV0KGNscywgaGV4dGV0X3N0cik6CiAgICAgICAgICIiIkNvbnZlcnQgYW4gSVB2NiBoZXh0ZXQgc3RyaW5nIGludG8gYW4gaW50ZWdlci4KIAogICAgICAgICBBcmdzOgpAQCAtMTY0NSw3ICsxNzQwLDcgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgotICAgICAgICBpZiBub3Qgc2VsZi5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgorICAgICAgICBpZiBub3QgY2xzLl9IRVhfRElHSVRTLmlzc3VwZXJzZXQoaGV4dGV0X3N0cik6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIiAlIGhleHRldF9zdHIpCiAgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgogICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgpAQCAtMTY1NSw3ICsxNzUwLDggQEAKICAgICAgICAgIyBMZW5ndGggY2hlY2sgbWVhbnMgd2UgY2FuIHNraXAgY2hlY2tpbmcgdGhlIGludGVnZXIgdmFsdWUKICAgICAgICAgcmV0dXJuIGludChoZXh0ZXRfc3RyLCAxNikKIAotICAgIGRlZiBfY29tcHJlc3NfaGV4dGV0cyhzZWxmLCBoZXh0ZXRzKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NvbXByZXNzX2hleHRldHMoY2xzLCBoZXh0ZXRzKToKICAgICAgICAgIiIiQ29tcHJlc3NlcyBhIGxpc3Qgb2YgaGV4dGV0cy4KIAogICAgICAgICBDb21wcmVzc2VzIGEgbGlzdCBvZiBzdHJpbmdzLCByZXBsYWNpbmcgdGhlIGxvbmdlc3QgY29udGludW91cwpAQCAtMTcwMiw3ICsxNzk4LDggQEAKIAogICAgICAgICByZXR1cm4gaGV4dGV0cwogCi0gICAgZGVmIF9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50PU5vbmUpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfc3RyaW5nX2Zyb21faXBfaW50KGNscywgaXBfaW50PU5vbmUpOgogICAgICAgICAiIiJUdXJucyBhIDEyOC1iaXQgaW50ZWdlciBpbnRvIGhleGFkZWNpbWFsIG5vdGF0aW9uLgogCiAgICAgICAgIEFyZ3M6CkBAIC0xNzE2LDE1ICsxODEzLDE1IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGlwX2ludCBpcyBOb25lOgotICAgICAgICAgICAgaXBfaW50ID0gaW50KHNlbGYuX2lwKQorICAgICAgICAgICAgaXBfaW50ID0gaW50KGNscy5faXApCiAKLSAgICAgICAgaWYgaXBfaW50ID4gc2VsZi5fQUxMX09ORVM6CisgICAgICAgIGlmIGlwX2ludCA+IGNscy5fQUxMX09ORVM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJUHY2IGFkZHJlc3MgaXMgdG9vIGxhcmdlJykKIAogICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAogICAgICAgICBoZXh0ZXRzID0gWycleCcgJSBpbnQoaGV4X3N0clt4OngrNF0sIDE2KSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCiAKLSAgICAgICAgaGV4dGV0cyA9IHNlbGYuX2NvbXByZXNzX2hleHRldHMoaGV4dGV0cykKKyAgICAgICAgaGV4dGV0cyA9IGNscy5fY29tcHJlc3NfaGV4dGV0cyhoZXh0ZXRzKQogICAgICAgICByZXR1cm4gJzonLmpvaW4oaGV4dGV0cykKIAogICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgpAQCAtMTc1MSw2ICsxODQ4LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gJyVzLyVkJyAlICgnOicuam9pbihwYXJ0cyksIHNlbGYuX3ByZWZpeGxlbikKICAgICAgICAgcmV0dXJuICc6Jy5qb2luKHBhcnRzKQogCisgICAgZGVmIF9yZXZlcnNlX3BvaW50ZXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgcmV2ZXJzZSBETlMgcG9pbnRlciBuYW1lIGZvciB0aGUgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgbWV0aG9kIGRlc2NyaWJlZCBpbiBSRkMzNTk2IDIuNS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV2ZXJzZV9jaGFycyA9IHNlbGYuZXhwbG9kZWRbOjotMV0ucmVwbGFjZSgnOicsICcnKQorICAgICAgICByZXR1cm4gJy4nLmpvaW4ocmV2ZXJzZV9jaGFycykgKyAnLmlwNi5hcnBhJworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG1heF9wcmVmaXhsZW4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9tYXhfcHJlZml4bGVuCkBAIC0xNzY0LDYgKzE4NzAsOCBAQAogCiAgICAgIiIiUmVwcmVzZW50IGFuZCBtYW5pcHVsYXRlIHNpbmdsZSBJUHY2IEFkZHJlc3Nlcy4iIiIKIAorICAgIF9fc2xvdHNfXyA9ICgnX2lwJywgJ19fd2Vha3JlZl9fJykKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKICAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBuZXcgSVB2NiBhZGRyZXNzIG9iamVjdC4KIApAQCAtMTc4MSw5ICsxODg5LDYgQEAKICAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgogCiAgICAgICAgICIiIgotICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKLSAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQotCiAgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KICAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKQEAgLTE3OTksNiArMTkwNCw4IEBACiAgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCiAgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCiAgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIGlmICcvJyBpbiBhZGRyX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJVbmV4cGVjdGVkICcvJyBpbiAlciIgJSBhZGRyZXNzKQogICAgICAgICBzZWxmLl9pcCA9IHNlbGYuX2lwX2ludF9mcm9tX3N0cmluZyhhZGRyX3N0cikKIAogICAgIEBwcm9wZXJ0eQpAQCAtMTgxNSw4ICsxOTIyLDcgQEAKICAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZmMDA6Oi84JykKLSAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2VsZi5fY29uc3RhbnRzLl9tdWx0aWNhc3RfbmV0d29yawogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgpAQCAtMTgyNywxNiArMTkzMyw3IEBACiAgICAgICAgICAgICByZXNlcnZlZCBJUHY2IE5ldHdvcmsgcmFuZ2VzLgogCiAgICAgICAgICIiIgotICAgICAgICByZXNlcnZlZF9uZXR3b3JrcyA9IFtJUHY2TmV0d29yaygnOjovOCcpLCBJUHY2TmV0d29yaygnMTAwOjovOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwOjovNycpLCBJUHY2TmV0d29yaygnNDAwOjovNicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzQwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCc2MDAwOjovMycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0EwMDA6Oi8zJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0YwMDA6Oi81JyksIElQdjZOZXR3b3JrKCdGODAwOjovNicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnRkUwMDo6LzknKV0KLQotICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4geCBmb3IgeCBpbiByZXNlcnZlZF9uZXR3b3JrcykKKyAgICAgICAgcmV0dXJuIGFueShzZWxmIGluIHggZm9yIHggaW4gc2VsZi5fY29uc3RhbnRzLl9yZXNlcnZlZF9uZXR3b3JrcykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgpAQCAtMTg0Niw4ICsxOTQzLDcgQEAKICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGxpbmtsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpCi0gICAgICAgIHJldHVybiBzZWxmIGluIGxpbmtsb2NhbF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fbGlua2xvY2FsX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19zaXRlX2xvY2FsKHNlbGYpOgpAQCAtMTg2MSw4ICsxOTU3LDcgQEAKICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDM1MTMgMi41LjYuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHNpdGVsb2NhbF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZlYzA6Oi8xMCcpCi0gICAgICAgIHJldHVybiBzZWxmIGluIHNpdGVsb2NhbF9uZXR3b3JrCisgICAgICAgIHJldHVybiBzZWxmIGluIHNlbGYuX2NvbnN0YW50cy5fc2l0ZWxvY2FsX25ldHdvcmsKIAogICAgIEBwcm9wZXJ0eQogICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKCkKQEAgLTE4NzQsMTYgKzE5NjksNyBAQAogICAgICAgICAgICAgaWFuYS1pcHY2LXNwZWNpYWwtcmVnaXN0cnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiAoc2VsZiBpbiBJUHY2TmV0d29yaygnOjoxLzEyOCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnOjovMTI4Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCc6OmZmZmY6MDowLzk2Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCcxMDA6Oi82NCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMTo6LzIzJykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCcyMDAxOjI6Oi80OCcpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi8zMicpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnMjAwMToxMDo6LzI4Jykgb3IKLSAgICAgICAgICAgICAgICBzZWxmIGluIElQdjZOZXR3b3JrKCdmYzAwOjovNycpIG9yCi0gICAgICAgICAgICAgICAgc2VsZiBpbiBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykpCisgICAgICAgIHJldHVybiBhbnkoc2VsZiBpbiBuZXQgZm9yIG5ldCBpbiBzZWxmLl9jb25zdGFudHMuX3ByaXZhdGVfbmV0d29ya3MpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfZ2xvYmFsKHNlbGYpOgpAQCAtMTk2OCw2ICsyMDU0LDE2IEBACiAgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhzZWxmLl9pcCkKICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIHR1cGxlKToKKyAgICAgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3NbMF0pCisgICAgICAgICAgICBpZiBsZW4oYWRkcmVzcykgPiAxOgorICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IGludChhZGRyZXNzWzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBzZWxmLm5ldHdvcmsubmV0bWFzaworICAgICAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCiAgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJbMF0pCkBAIC0yMDA2LDYgKzIxMDIsOCBAQAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCiAKKyAgICBfX3JlZHVjZV9fID0gX0lQQWRkcmVzc0Jhc2UuX19yZWR1Y2VfXworCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlwKHNlbGYpOgogICAgICAgICByZXR1cm4gSVB2NkFkZHJlc3Moc2VsZi5faXApCkBAIC0yMDgyLDIxICsyMTgwLDI4IEBACiAgICAgICAgICAgICAgIHN1cHBsaWVkLgogCiAgICAgICAgICIiIgotICAgICAgICBfQmFzZVY2Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCiAgICAgICAgIF9CYXNlTmV0d29yay5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQogCi0gICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KLSAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAjIEVmZmljaWVudCBjb25zdHJ1Y3RvciBmcm9tIGludGVnZXIgb3IgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCAoYnl0ZXMsIGludCkpOgogICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgotICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICBzZWxmLm5ldG1hc2ssIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21ha2VfbmV0bWFzayhzZWxmLl9tYXhfcHJlZml4bGVuKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgotICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhhZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgotICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NkFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgdHVwbGUpOgorICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3MpID4gMToKKyAgICAgICAgICAgICAgICBhcmcgPSBhZGRyZXNzWzFdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZyA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzaywgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWFrZV9uZXRtYXNrKGFyZykKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzc1swXSkKKyAgICAgICAgICAgIHBhY2tlZCA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgICAgIGlmIHBhY2tlZCAmIGludChzZWxmLm5ldG1hc2spICE9IHBhY2tlZDoKKyAgICAgICAgICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVzIGhhcyBob3N0IGJpdHMgc2V0JyAlIHNlbGYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhwYWNrZWQgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KQEAgLTIxMDYsMTIgKzIyMTEsMTEgQEAKICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclswXSkpCiAKICAgICAgICAgaWYgbGVuKGFkZHIpID09IDI6Ci0gICAgICAgICAgICAjIFRoaXMgbWF5IHJhaXNlIE5ldG1hc2tWYWx1ZUVycm9yCi0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhfZnJvbV9wcmVmaXhfc3RyaW5nKGFkZHJbMV0pCisgICAgICAgICAgICBhcmcgPSBhZGRyWzFdCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBhcmcgPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgIHNlbGYubmV0bWFzaywgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWFrZV9uZXRtYXNrKGFyZykKIAotICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZi5fcHJlZml4bGVuKSkKICAgICAgICAgaWYgc3RyaWN0OgogICAgICAgICAgICAgaWYgKElQdjZBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyk6CkBAIC0yMTQ4LDMgKzIyNTIsMzkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfc2l0ZV9sb2NhbCBhbmQKICAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3NpdGVfbG9jYWwpCisKKworY2xhc3MgX0lQdjZDb25zdGFudHM6CisKKyAgICBfbGlua2xvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmU4MDo6LzEwJykKKworICAgIF9tdWx0aWNhc3RfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZjAwOjovOCcpCisKKyAgICBfcHJpdmF0ZV9uZXR3b3JrcyA9IFsKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzo6LzEyOCcpLAorICAgICAgICBJUHY2TmV0d29yaygnOjpmZmZmOjA6MC85NicpLAorICAgICAgICBJUHY2TmV0d29yaygnMTAwOjovNjQnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6Oi8yMycpLAorICAgICAgICBJUHY2TmV0d29yaygnMjAwMToyOjovNDgnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMzInKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6MTA6Oi8yOCcpLAorICAgICAgICBJUHY2TmV0d29yaygnZmMwMDo6LzcnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ2ZlODA6Oi8xMCcpLAorICAgICAgICBdCisKKyAgICBfcmVzZXJ2ZWRfbmV0d29ya3MgPSBbCisgICAgICAgIElQdjZOZXR3b3JrKCc6Oi84JyksIElQdjZOZXR3b3JrKCcxMDA6Oi84JyksCisgICAgICAgIElQdjZOZXR3b3JrKCcyMDA6Oi83JyksIElQdjZOZXR3b3JrKCc0MDA6Oi82JyksCisgICAgICAgIElQdjZOZXR3b3JrKCc4MDA6Oi81JyksIElQdjZOZXR3b3JrKCcxMDAwOjovNCcpLAorICAgICAgICBJUHY2TmV0d29yaygnNDAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJzYwMDA6Oi8zJyksCisgICAgICAgIElQdjZOZXR3b3JrKCc4MDAwOjovMycpLCBJUHY2TmV0d29yaygnQTAwMDo6LzMnKSwKKyAgICAgICAgSVB2Nk5ldHdvcmsoJ0MwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCdFMDAwOjovNCcpLAorICAgICAgICBJUHY2TmV0d29yaygnRjAwMDo6LzUnKSwgSVB2Nk5ldHdvcmsoJ0Y4MDA6Oi82JyksCisgICAgICAgIElQdjZOZXR3b3JrKCdGRTAwOjovOScpLAorICAgIF0KKworICAgIF9zaXRlbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZWMwOjovMTAnKQorCisKK0lQdjZBZGRyZXNzLl9jb25zdGFudHMgPSBfSVB2NkNvbnN0YW50cwpkaWZmIC0tZ2l0IGEvTGliL2pzb24vX19pbml0X18ucHkgYi9MaWIvanNvbi9fX2luaXRfXy5weQppbmRleCA5Mzk4NjY3Li4yNjEyNjU3IDEwMDY0NAotLS0gYS9MaWIvanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvanNvbi9fX2luaXRfXy5weQpAQCAtOTgsMTIgKzk4LDEyIEBACiBfX3ZlcnNpb25fXyA9ICcyLjAuOScKIF9fYWxsX18gPSBbCiAgICAgJ2R1bXAnLCAnZHVtcHMnLCAnbG9hZCcsICdsb2FkcycsCi0gICAgJ0pTT05EZWNvZGVyJywgJ0pTT05FbmNvZGVyJywKKyAgICAnSlNPTkRlY29kZXInLCAnSlNPTkRlY29kZUVycm9yJywgJ0pTT05FbmNvZGVyJywKIF0KIAogX19hdXRob3JfXyA9ICdCb2IgSXBwb2xpdG8gPGJvYkByZWRpdmkuY29tPicKIAotZnJvbSAuZGVjb2RlciBpbXBvcnQgSlNPTkRlY29kZXIKK2Zyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyLCBKU09ORGVjb2RlRXJyb3IKIGZyb20gLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCiAKIF9kZWZhdWx0X2VuY29kZXIgPSBKU09ORW5jb2RlcigKQEAgLTMxMSw3ICszMTEsOCBAQAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgbm90IHshcn0nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLl9fY2xhc3NfXy5fX25hbWVfXykpCiAgICAgaWYgcy5zdGFydHN3aXRoKHUnXHVmZWZmJyk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIpCisgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIDApCiAgICAgaWYgKGNscyBpcyBOb25lIGFuZCBvYmplY3RfaG9vayBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfaW50IGlzIE5vbmUgYW5kIHBhcnNlX2Zsb2F0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggNTllNWY0MS4uMGYwM2YyMCAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC04LDcgKzgsNyBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGNfc2NhbnN0cmluZyA9IE5vbmUKIAotX19hbGxfXyA9IFsnSlNPTkRlY29kZXInXQorX19hbGxfXyA9IFsnSlNPTkRlY29kZXInLCAnSlNPTkRlY29kZUVycm9yJ10KIAogRkxBR1MgPSByZS5WRVJCT1NFIHwgcmUuTVVMVElMSU5FIHwgcmUuRE9UQUxMCiAKQEAgLTE3LDMyICsxNywzMCBAQAogTmVnSW5mID0gZmxvYXQoJy1pbmYnKQogCiAKLWRlZiBsaW5lY29sKGRvYywgcG9zKToKLSAgICBpZiBpc2luc3RhbmNlKGRvYywgYnl0ZXMpOgotICAgICAgICBuZXdsaW5lID0gYidcbicKLSAgICBlbHNlOgotICAgICAgICBuZXdsaW5lID0gJ1xuJwotICAgIGxpbmVubyA9IGRvYy5jb3VudChuZXdsaW5lLCAwLCBwb3MpICsgMQotICAgIGlmIGxpbmVubyA9PSAxOgotICAgICAgICBjb2xubyA9IHBvcyArIDEKLSAgICBlbHNlOgotICAgICAgICBjb2xubyA9IHBvcyAtIGRvYy5yaW5kZXgobmV3bGluZSwgMCwgcG9zKQotICAgIHJldHVybiBsaW5lbm8sIGNvbG5vCitjbGFzcyBKU09ORGVjb2RlRXJyb3IoVmFsdWVFcnJvcik6CisgICAgIiIiU3ViY2xhc3Mgb2YgVmFsdWVFcnJvciB3aXRoIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBwcm9wZXJ0aWVzOgogCisgICAgbXNnOiBUaGUgdW5mb3JtYXR0ZWQgZXJyb3IgbWVzc2FnZQorICAgIGRvYzogVGhlIEpTT04gZG9jdW1lbnQgYmVpbmcgcGFyc2VkCisgICAgcG9zOiBUaGUgc3RhcnQgaW5kZXggb2YgZG9jIHdoZXJlIHBhcnNpbmcgZmFpbGVkCisgICAgbGluZW5vOiBUaGUgbGluZSBjb3JyZXNwb25kaW5nIHRvIHBvcworICAgIGNvbG5vOiBUaGUgY29sdW1uIGNvcnJlc3BvbmRpbmcgdG8gcG9zCiAKLWRlZiBlcnJtc2cobXNnLCBkb2MsIHBvcywgZW5kPU5vbmUpOgotICAgICMgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gX2pzb24KLSAgICBsaW5lbm8sIGNvbG5vID0gbGluZWNvbChkb2MsIHBvcykKLSAgICBpZiBlbmQgaXMgTm9uZToKLSAgICAgICAgZm10ID0gJ3swfTogbGluZSB7MX0gY29sdW1uIHsyfSAoY2hhciB7M30pJwotICAgICAgICByZXR1cm4gZm10LmZvcm1hdChtc2csIGxpbmVubywgY29sbm8sIHBvcykKLSAgICAgICAgI2ZtdCA9ICclczogbGluZSAlZCBjb2x1bW4gJWQgKGNoYXIgJWQpJwotICAgICAgICAjcmV0dXJuIGZtdCAlIChtc2csIGxpbmVubywgY29sbm8sIHBvcykKLSAgICBlbmRsaW5lbm8sIGVuZGNvbG5vID0gbGluZWNvbChkb2MsIGVuZCkKLSAgICBmbXQgPSAnezB9OiBsaW5lIHsxfSBjb2x1bW4gezJ9IC0gbGluZSB7M30gY29sdW1uIHs0fSAoY2hhciB7NX0gLSB7Nn0pJwotICAgIHJldHVybiBmbXQuZm9ybWF0KG1zZywgbGluZW5vLCBjb2xubywgZW5kbGluZW5vLCBlbmRjb2xubywgcG9zLCBlbmQpCi0gICAgI2ZtdCA9ICclczogbGluZSAlZCBjb2x1bW4gJWQgLSBsaW5lICVkIGNvbHVtbiAlZCAoY2hhciAlZCAtICVkKScKLSAgICAjcmV0dXJuIGZtdCAlIChtc2csIGxpbmVubywgY29sbm8sIGVuZGxpbmVubywgZW5kY29sbm8sIHBvcywgZW5kKQorICAgICIiIgorICAgICMgTm90ZSB0aGF0IHRoaXMgZXhjZXB0aW9uIGlzIHVzZWQgZnJvbSBfanNvbgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIGRvYywgcG9zKToKKyAgICAgICAgbGluZW5vID0gZG9jLmNvdW50KCdcbicsIDAsIHBvcykgKyAxCisgICAgICAgIGNvbG5vID0gcG9zIC0gZG9jLnJmaW5kKCdcbicsIDAsIHBvcykKKyAgICAgICAgZXJybXNnID0gJyVzOiBsaW5lICVkIGNvbHVtbiAlZCAoY2hhciAlZCknICUgKG1zZywgbGluZW5vLCBjb2xubywgcG9zKQorICAgICAgICBWYWx1ZUVycm9yLl9faW5pdF9fKHNlbGYsIGVycm1zZykKKyAgICAgICAgc2VsZi5tc2cgPSBtc2cKKyAgICAgICAgc2VsZi5kb2MgPSBkb2MKKyAgICAgICAgc2VsZi5wb3MgPSBwb3MKKyAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KKyAgICAgICAgc2VsZi5jb2xubyA9IGNvbG5vCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCAoc2VsZi5tc2csIHNlbGYuZG9jLCBzZWxmLnBvcykKIAogCiBfQ09OU1RBTlRTID0gewpAQCAtNjYsNyArNjQsNyBAQAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYIGVzY2FwZSIKLSAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIHBvcykpCisgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKG1zZywgcywgcG9zKQogCiBkZWYgcHlfc2NhbnN0cmluZyhzLCBlbmQsIHN0cmljdD1UcnVlLAogICAgICAgICBfYj1CQUNLU0xBU0gsIF9tPVNUUklOR0NIVU5LLm1hdGNoKToKQEAgLTg0LDggKzgyLDcgQEAKICAgICB3aGlsZSAxOgogICAgICAgICBjaHVuayA9IF9tKHMsIGVuZCkKICAgICAgICAgaWYgY2h1bmsgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pCiAgICAgICAgIGVuZCA9IGNodW5rLmVuZCgpCiAgICAgICAgIGNvbnRlbnQsIHRlcm1pbmF0b3IgPSBjaHVuay5ncm91cHMoKQogICAgICAgICAjIENvbnRlbnQgaXMgY29udGFpbnMgemVybyBvciBtb3JlIHVuZXNjYXBlZCBzdHJpbmcgY2hhcmFjdGVycwpAQCAtOTksMjIgKzk2LDIxIEBACiAgICAgICAgICAgICBpZiBzdHJpY3Q6CiAgICAgICAgICAgICAgICAgI21zZyA9ICJJbnZhbGlkIGNvbnRyb2wgY2hhcmFjdGVyICVyIGF0IiAlICh0ZXJtaW5hdG9yLCkKICAgICAgICAgICAgICAgICBtc2cgPSAiSW52YWxpZCBjb250cm9sIGNoYXJhY3RlciB7MCFyfSBhdCIuZm9ybWF0KHRlcm1pbmF0b3IpCi0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBlbmQpKQorICAgICAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcihtc2csIHMsIGVuZCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgX2FwcGVuZCh0ZXJtaW5hdG9yKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGVzYyA9IHNbZW5kXQogICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcywgYmVnaW4pCiAgICAgICAgICMgSWYgbm90IGEgdW5pY29kZSBlc2NhcGUgc2VxdWVuY2UsIG11c3QgYmUgaW4gdGhlIGxvb2t1cCB0YWJsZQogICAgICAgICBpZiBlc2MgIT0gJ3UnOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGNoYXIgPSBfYltlc2NdCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgXFxlc2NhcGU6IHswIXJ9Ii5mb3JtYXQoZXNjKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKG1zZywgcywgZW5kKSkKKyAgICAgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IobXNnLCBzLCBlbmQpCiAgICAgICAgICAgICBlbmQgKz0gMQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdW5pID0gX2RlY29kZV91WFhYWChzLCBlbmQpCkBAIC0xNjMsOCArMTU5LDggQEAKICAgICAgICAgICAgICAgICBwYWlycyA9IG9iamVjdF9ob29rKHBhaXJzKQogICAgICAgICAgICAgcmV0dXJuIHBhaXJzLCBlbmQgKyAxCiAgICAgICAgIGVsaWYgbmV4dGNoYXIgIT0gJyInOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coCi0gICAgICAgICAgICAgICAgIkV4cGVjdGluZyBwcm9wZXJ0eSBuYW1lIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZXMiLCBzLCBlbmQpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKAorICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kKQogICAgIGVuZCArPSAxCiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAga2V5LCBlbmQgPSBzY2Fuc3RyaW5nKHMsIGVuZCwgc3RyaWN0KQpAQCAtMTc0LDcgKzE3MCw3IEBACiAgICAgICAgIGlmIHNbZW5kOmVuZCArIDFdICE9ICc6JzoKICAgICAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgICAgIGlmIHNbZW5kOmVuZCArIDFdICE9ICc6JzoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBzLCBlbmQpKQorICAgICAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBzLCBlbmQpCiAgICAgICAgIGVuZCArPSAxCiAKICAgICAgICAgdHJ5OgpAQCAtMTg4LDcgKzE4NCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZhbHVlLCBlbmQgPSBzY2FuX29uY2UocywgZW5kKQogICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSkgZnJvbSBOb25lCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkgZnJvbSBOb25lCiAgICAgICAgIHBhaXJzX2FwcGVuZCgoa2V5LCB2YWx1ZSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5leHRjaGFyID0gc1tlbmRdCkBAIC0yMDIsMTMgKzE5OCwxMyBAQAogICAgICAgICBpZiBuZXh0Y2hhciA9PSAnfSc6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBlbGlmIG5leHRjaGFyICE9ICcsJzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHMsIGVuZCAtIDEpCiAgICAgICAgIGVuZCA9IF93KHMsIGVuZCkuZW5kKCkKICAgICAgICAgbmV4dGNoYXIgPSBzW2VuZDplbmQgKyAxXQogICAgICAgICBlbmQgKz0gMQogICAgICAgICBpZiBuZXh0Y2hhciAhPSAnIic6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygKLSAgICAgICAgICAgICAgICAiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHMsIGVuZCAtIDEpKQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKAorICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzIiwgcywgZW5kIC0gMSkKICAgICBpZiBvYmplY3RfcGFpcnNfaG9vayBpcyBub3QgTm9uZToKICAgICAgICAgcmVzdWx0ID0gb2JqZWN0X3BhaXJzX2hvb2socGFpcnMpCiAgICAgICAgIHJldHVybiByZXN1bHQsIGVuZApAQCAtMjMyLDcgKzIyOCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHZhbHVlLCBlbmQgPSBzY2FuX29uY2UocywgZW5kKQogICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlcnI6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZygiRXhwZWN0aW5nIHZhbHVlIiwgcywgZXJyLnZhbHVlKSkgZnJvbSBOb25lCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkgZnJvbSBOb25lCiAgICAgICAgIF9hcHBlbmQodmFsdWUpCiAgICAgICAgIG5leHRjaGFyID0gc1tlbmQ6ZW5kICsgMV0KICAgICAgICAgaWYgbmV4dGNoYXIgaW4gX3dzOgpAQCAtMjQyLDcgKzIzOCw3IEBACiAgICAgICAgIGlmIG5leHRjaGFyID09ICddJzoKICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsaWYgbmV4dGNoYXIgIT0gJywnOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcywgZW5kIC0gMSkpCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4cGVjdGluZyAnLCcgZGVsaW1pdGVyIiwgcywgZW5kIC0gMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc1tlbmRdIGluIF93czoKICAgICAgICAgICAgICAgICBlbmQgKz0gMQpAQCAtMzQzLDcgKzMzOSw3IEBACiAgICAgICAgIG9iaiwgZW5kID0gc2VsZi5yYXdfZGVjb2RlKHMsIGlkeD1fdyhzLCAwKS5lbmQoKSkKICAgICAgICAgZW5kID0gX3cocywgZW5kKS5lbmQoKQogICAgICAgICBpZiBlbmQgIT0gbGVuKHMpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4dHJhIGRhdGEiLCBzLCBlbmQsIGxlbihzKSkpCisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIkV4dHJhIGRhdGEiLCBzLCBlbmQpCiAgICAgICAgIHJldHVybiBvYmoKIAogICAgIGRlZiByYXdfZGVjb2RlKHNlbGYsIHMsIGlkeD0wKToKQEAgLTM1OCw1ICszNTQsNSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvYmosIGVuZCA9IHNlbGYuc2Nhbl9vbmNlKHMsIGlkeCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXJyOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2coIkV4cGVjdGluZyB2YWx1ZSIsIHMsIGVyci52YWx1ZSkpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJFeHBlY3RpbmcgdmFsdWUiLCBzLCBlcnIudmFsdWUpIGZyb20gTm9uZQogICAgICAgICByZXR1cm4gb2JqLCBlbmQKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2VuY29kZXIucHkgYi9MaWIvanNvbi9lbmNvZGVyLnB5CmluZGV4IDA1MTM4MzguLjI2ZTllYjIgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2VuY29kZXIucHkKKysrIGIvTGliL2pzb24vZW5jb2Rlci5weQpAQCAtNyw2ICs3LDEwIEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgY19lbmNvZGVfYmFzZXN0cmluZ19hc2NpaSA9IE5vbmUKIHRyeToKKyAgICBmcm9tIF9qc29uIGltcG9ydCBlbmNvZGVfYmFzZXN0cmluZyBhcyBjX2VuY29kZV9iYXNlc3RyaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgY19lbmNvZGVfYmFzZXN0cmluZyA9IE5vbmUKK3RyeToKICAgICBmcm9tIF9qc29uIGltcG9ydCBtYWtlX2VuY29kZXIgYXMgY19tYWtlX2VuY29kZXIKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBjX21ha2VfZW5jb2RlciA9IE5vbmUKQEAgLTMwLDcgKzM0LDcgQEAKIElORklOSVRZID0gZmxvYXQoJ2luZicpCiBGTE9BVF9SRVBSID0gcmVwcgogCi1kZWYgZW5jb2RlX2Jhc2VzdHJpbmcocyk6CitkZWYgcHlfZW5jb2RlX2Jhc2VzdHJpbmcocyk6CiAgICAgIiIiUmV0dXJuIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmcKIAogICAgICIiIgpAQCAtMzksNiArNDMsOSBAQAogICAgIHJldHVybiAnIicgKyBFU0NBUEUuc3ViKHJlcGxhY2UsIHMpICsgJyInCiAKIAorZW5jb2RlX2Jhc2VzdHJpbmcgPSAoY19lbmNvZGVfYmFzZXN0cmluZyBvciBweV9lbmNvZGVfYmFzZXN0cmluZykKKworCiBkZWYgcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkocyk6CiAgICAgIiIiUmV0dXJuIGFuIEFTQ0lJLW9ubHkgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBzdHJpbmcKIApkaWZmIC0tZ2l0IGEvTGliL2pzb24vdG9vbC5weSBiL0xpYi9qc29uL3Rvb2wucHkKaW5kZXggN2RiNDUyOC4uNGYzMTgyYyAxMDA2NDQKLS0tIGEvTGliL2pzb24vdG9vbC5weQorKysgYi9MaWIvanNvbi90b29sLnB5CkBAIC0xMCwyOCArMTAsMzkgQEAKICAgICBFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzOiBsaW5lIDEgY29sdW1uIDMgKGNoYXIgMikKIAogIiIiCi1pbXBvcnQgc3lzCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGpzb24KK2ltcG9ydCBzeXMKKwogCiBkZWYgbWFpbigpOgotICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKLSAgICAgICAgaW5maWxlID0gc3lzLnN0ZGluCi0gICAgICAgIG91dGZpbGUgPSBzeXMuc3Rkb3V0Ci0gICAgZWxpZiBsZW4oc3lzLmFyZ3YpID09IDI6Ci0gICAgICAgIGluZmlsZSA9IG9wZW4oc3lzLmFyZ3ZbMV0sICdyJykKLSAgICAgICAgb3V0ZmlsZSA9IHN5cy5zdGRvdXQKLSAgICBlbGlmIGxlbihzeXMuYXJndikgPT0gMzoKLSAgICAgICAgaW5maWxlID0gb3BlbihzeXMuYXJndlsxXSwgJ3InKQotICAgICAgICBvdXRmaWxlID0gb3BlbihzeXMuYXJndlsyXSwgJ3cnKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoc3lzLmFyZ3ZbMF0gKyAiIFtpbmZpbGUgW291dGZpbGVdXSIpCisgICAgcHJvZyA9ICdweXRob24gLW0ganNvbi50b29sJworICAgIGRlc2NyaXB0aW9uID0gKCdBIHNpbXBsZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGZvciBqc29uIG1vZHVsZSAnCisgICAgICAgICAgICAgICAgICAgJ3RvIHZhbGlkYXRlIGFuZCBwcmV0dHktcHJpbnQgSlNPTiBvYmplY3RzLicpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz1wcm9nLCBkZXNjcmlwdGlvbj1kZXNjcmlwdGlvbikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdpbmZpbGUnLCBuYXJncz0nPycsIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2EgSlNPTiBmaWxlIHRvIGJlIHZhbGlkYXRlZCBvciBwcmV0dHktcHJpbnRlZCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnb3V0ZmlsZScsIG5hcmdzPSc/JywgdHlwZT1hcmdwYXJzZS5GaWxlVHlwZSgndycpLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd3JpdGUgdGhlIG91dHB1dCBvZiBpbmZpbGUgdG8gb3V0ZmlsZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zb3J0LWtleXMnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc29ydCB0aGUgb3V0cHV0IG9mIGRpY3Rpb25hcmllcyBhbHBoYWJldGljYWxseSBieSBrZXknKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpbmZpbGUgPSBvcHRpb25zLmluZmlsZSBvciBzeXMuc3RkaW4KKyAgICBvdXRmaWxlID0gb3B0aW9ucy5vdXRmaWxlIG9yIHN5cy5zdGRvdXQKKyAgICBzb3J0X2tleXMgPSBvcHRpb25zLnNvcnRfa2V5cwogICAgIHdpdGggaW5maWxlOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvYmogPSBqc29uLmxvYWQoaW5maWxlKQorICAgICAgICAgICAgaWYgc29ydF9rZXlzOgorICAgICAgICAgICAgICAgIG9iaiA9IGpzb24ubG9hZChpbmZpbGUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9iaiA9IGpzb24ubG9hZChpbmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdChlKQogICAgIHdpdGggb3V0ZmlsZToKLSAgICAgICAganNvbi5kdW1wKG9iaiwgb3V0ZmlsZSwgc29ydF9rZXlzPVRydWUsIGluZGVudD00KQorICAgICAgICBqc29uLmR1bXAob2JqLCBvdXRmaWxlLCBzb3J0X2tleXM9c29ydF9rZXlzLCBpbmRlbnQ9NCkKICAgICAgICAgb3V0ZmlsZS53cml0ZSgnXG4nKQogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0IGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKaW5kZXggZTY2N2JjZC4uYzk1NDY2OSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKKysrIGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKQEAgLTMzLDcgKzMzLDggQEAKIAogZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKIGRlY29yYXRvcnM6IGRlY29yYXRvcisKLWRlY29yYXRlZDogZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKQorZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYgfCBhc3luY19mdW5jZGVmKQorYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZgogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKIHR5cGVkYXJnc2xpc3Q6ICgodGZwZGVmIFsnPScgdGVzdF0gJywnKSoKQEAgLTgyLDcgKzgzLDggQEAKIGV4ZWNfc3RtdDogJ2V4ZWMnIGV4cHIgWydpbicgdGVzdCBbJywnIHRlc3RdXQogYXNzZXJ0X3N0bXQ6ICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQogCi1jb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQKK2NvbXBvdW5kX3N0bXQ6IGlmX3N0bXQgfCB3aGlsZV9zdG10IHwgZm9yX3N0bXQgfCB0cnlfc3RtdCB8IHdpdGhfc3RtdCB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZCB8IGFzeW5jX3N0bXQKK2FzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpCiBpZl9zdG10OiAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KIHdoaWxlX3N0bXQ6ICd3aGlsZScgdGVzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiBmb3Jfc3RtdDogJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCkBAIC0xMjEsNyArMTIzLDcgQEAKIGFyaXRoX2V4cHI6IHRlcm0gKCgnKyd8Jy0nKSB0ZXJtKSoKIHRlcm06IGZhY3RvciAoKCcqJ3wnQCd8Jy8nfCclJ3wnLy8nKSBmYWN0b3IpKgogZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi1wb3dlcjogYXRvbSB0cmFpbGVyKiBbJyoqJyBmYWN0b3JdCitwb3dlcjogW0FXQUlUXSBhdG9tIHRyYWlsZXIqIFsnKionIGZhY3Rvcl0KIGF0b206ICgnKCcgW3lpZWxkX2V4cHJ8dGVzdGxpc3RfZ2V4cF0gJyknIHwKICAgICAgICAnWycgW2xpc3RtYWtlcl0gJ10nIHwKICAgICAgICAneycgW2RpY3RzZXRtYWtlcl0gJ30nIHwKQEAgLTE0Miw3ICsxNDQsNyBAQAogY2xhc3NkZWY6ICdjbGFzcycgTkFNRSBbJygnIFthcmdsaXN0XSAnKSddICc6JyBzdWl0ZQogCiBhcmdsaXN0OiAoYXJndW1lbnQgJywnKSogKGFyZ3VtZW50IFsnLCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgfCcqJyB0ZXN0ICgnLCcgYXJndW1lbnQpKiBbJywnICcqKicgdGVzdF0gCisgICAgICAgICAgICAgICAgICAgICAgICAgfCcqJyB0ZXN0ICgnLCcgYXJndW1lbnQpKiBbJywnICcqKicgdGVzdF0KICAgICAgICAgICAgICAgICAgICAgICAgICB8JyoqJyB0ZXN0KQogYXJndW1lbnQ6IHRlc3QgW2NvbXBfZm9yXSB8IHRlc3QgJz0nIHRlc3QgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9wZ2VuMi90b2tlbi5weSBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuLnB5CmluZGV4IDc1OTkzOTYuLjFhNjc5NTUgMTAwNzU1Ci0tLSBhL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuLnB5CisrKyBiL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuLnB5CkBAIC02Miw4ICs2MiwxMCBAQAogQ09NTUVOVCA9IDUzCiBOTCA9IDU0CiBSQVJST1cgPSA1NQotRVJST1JUT0tFTiA9IDU2Ci1OX1RPS0VOUyA9IDU3CitBV0FJVCA9IDU2CitBU1lOQyA9IDU3CitFUlJPUlRPS0VOID0gNTgKK05fVE9LRU5TID0gNTkKIE5UX09GRlNFVCA9IDI1NgogIy0tZW5kIGNvbnN0YW50cy0tCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3BnZW4yL3Rva2VuaXplLnB5IGIvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW5pemUucHkKaW5kZXggM2RkMWVlOS4uMWZmMWM2MSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW5pemUucHkKKysrIGIvTGliL2xpYjJ0bzMvcGdlbjIvdG9rZW5pemUucHkKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICBmb3IgdG9rIGluIGl0ZXJhYmxlOgogICAgICAgICAgICAgdG9rbnVtLCB0b2t2YWwgPSB0b2tbOjJdCiAKLSAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSKToKKyAgICAgICAgICAgIGlmIHRva251bSBpbiAoTkFNRSwgTlVNQkVSLCBBU1lOQywgQVdBSVQpOgogICAgICAgICAgICAgICAgIHRva3ZhbCArPSAnICcKIAogICAgICAgICAgICAgaWYgdG9rbnVtID09IElOREVOVDoKQEAgLTM2Niw2ICszNjYsMTIgQEAKICAgICBjb250bGluZSA9IE5vbmUKICAgICBpbmRlbnRzID0gWzBdCiAKKyAgICAjICdzdGFzaGVkJyBhbmQgJ2FzeW5jXyonIGFyZSB1c2VkIGZvciBhc3luYy9hd2FpdCBwYXJzaW5nCisgICAgc3Rhc2hlZCA9IE5vbmUKKyAgICBhc3luY19kZWYgPSBGYWxzZQorICAgIGFzeW5jX2RlZl9pbmRlbnQgPSAwCisgICAgYXN5bmNfZGVmX25sID0gRmFsc2UKKwogICAgIHdoaWxlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciBsaW5lcyBpbiBzdHJlYW0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGluZSA9IHJlYWRsaW5lKCkKQEAgLTQwNiw2ICs0MTIsMTAgQEAKICAgICAgICAgICAgICAgICBwb3MgPSBwb3MgKyAxCiAgICAgICAgICAgICBpZiBwb3MgPT0gbWF4OiBicmVhawogCisgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQorCiAgICAgICAgICAgICBpZiBsaW5lW3Bvc10gaW4gJyNcclxuJzogICAgICAgICAgICMgc2tpcCBjb21tZW50cyBvciBibGFuayBsaW5lcwogICAgICAgICAgICAgICAgIGlmIGxpbmVbcG9zXSA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfdG9rZW4gPSBsaW5lW3BvczpdLnJzdHJpcCgnXHJcbicpCkBAIC00MjgsOCArNDM4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pbmRlbnQgZG9lcyBub3QgbWF0Y2ggYW55IG91dGVyIGluZGVudGF0aW9uIGxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICgiPHRva2VuaXplPiIsIGxudW0sIHBvcywgbGluZSkpCiAgICAgICAgICAgICAgICAgaW5kZW50cyA9IGluZGVudHNbOi0xXQorCisgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmIGFuZCBhc3luY19kZWZfaW5kZW50ID49IGluZGVudHNbLTFdOgorICAgICAgICAgICAgICAgICAgICBhc3luY19kZWYgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfbmwgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gMAorCiAgICAgICAgICAgICAgICAgeWllbGQgKERFREVOVCwgJycsIChsbnVtLCBwb3MpLCAobG51bSwgcG9zKSwgbGluZSkKIAorICAgICAgICAgICAgaWYgYXN5bmNfZGVmIGFuZCBhc3luY19kZWZfbmwgYW5kIGFzeW5jX2RlZl9pbmRlbnQgPj0gaW5kZW50c1stMV06CisgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gRmFsc2UKKyAgICAgICAgICAgICAgICBhc3luY19kZWZfbmwgPSBGYWxzZQorICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSAwCisKICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RhdGVtZW50CiAgICAgICAgICAgICBpZiBub3QgbGluZToKICAgICAgICAgICAgICAgICByYWlzZSBUb2tlbkVycm9yKCJFT0YgaW4gbXVsdGktbGluZSBzdGF0ZW1lbnQiLCAobG51bSwgMCkpCkBAIC00NDksOSArNDcwLDE4IEBACiAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgPSBORVdMSU5FCiAgICAgICAgICAgICAgICAgICAgIGlmIHBhcmVubGV2ID4gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUgPSBOTAorICAgICAgICAgICAgICAgICAgICBlbGlmIGFzeW5jX2RlZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9ubCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChuZXdsaW5lLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKwogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCA9PSAnIyc6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdG9rZW4uZW5kc3dpdGgoIlxuIikKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBlbmRwcm9nc1t0b2tlbl0KQEAgLTQ1OSw2ICs0ODksOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBlbmRtYXRjaDogICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBvbiBvbmUgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gZW5kbWF0Y2guZW5kKDApCiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGxpbmVbc3RhcnQ6cG9zXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChTVFJJTkcsIHRva2VuLCBzcG9zLCAobG51bSwgcG9zKSwgbGluZSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KSAgICAgICAgICAgIyBtdWx0aXBsZSBsaW5lcwpAQCAtNDc2LDIyICs1MDksNjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCAoU1RSSU5HLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gbmFtZWNoYXJzOiAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIChOQU1FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gKCdhc3luYycsICdhd2FpdCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChBU1lOQyBpZiB0b2tlbiA9PSAnYXN5bmMnIGVsc2UgQVdBSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gKE5BTUUsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiA9PSAnYXN5bmMnIGFuZCBub3Qgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSB0b2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2RlZic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3Rhc2hlZFswXSA9PSBOQU1FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGFzaGVkWzFdID09ICdhc3luYycpOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNfZGVmID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSBpbmRlbnRzWy0xXQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgKEFTWU5DLCBzdGFzaGVkWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkWzJdLCBzdGFzaGVkWzNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkWzRdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdG9rCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsID09ICdcXCc6ICAgICAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0bXQKICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHlpZWxkIGlzIG5ldzsgbmVlZGVkIGZvciBiZXR0ZXIgaWRlbXBvdGVuY3k6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCAoTkwsIHRva2VuLCBzcG9zLCAobG51bSwgcG9zKSwgbGluZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWVkID0gMQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIGluaXRpYWwgaW4gJyhbeyc6IHBhcmVubGV2ID0gcGFyZW5sZXYgKyAxCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnKV19JzogcGFyZW5sZXYgPSBwYXJlbmxldiAtIDEKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIChPUCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIChFUlJPUlRPS0VOLCBsaW5lW3Bvc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG51bSwgcG9zKSwgKGxudW0sIHBvcysxKSwgbGluZSkKICAgICAgICAgICAgICAgICBwb3MgPSBwb3MgKyAxCiAKKyAgICBpZiBzdGFzaGVkOgorICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgIHN0YXNoZWQgPSBOb25lCisKICAgICBmb3IgaW5kZW50IGluIGluZGVudHNbMTpdOiAgICAgICAgICAgICAgICAgIyBwb3AgcmVtYWluaW5nIGluZGVudCBsZXZlbHMKICAgICAgICAgeWllbGQgKERFREVOVCwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKICAgICB5aWVsZCAoRU5ETUFSS0VSLCAnJywgKGxudW0sIDApLCAobG51bSwgMCksICcnKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQppbmRleCA1YmI5ZDJiLi5iNTMzYzAxIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtNTUsMTIgKzU1LDY0IEBACiAKIAogY2xhc3MgVGVzdFlpZWxkRnJvbShHcmFtbWFyVGVzdCk6Ci0gICAgZGVmIHRlc3RfbWF0cml4X211bHRpcGxpY2F0aW9uX29wZXJhdG9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X3lpZWxkX2Zyb20oc2VsZik6CiAgICAgICAgIHNlbGYudmFsaWRhdGUoInlpZWxkIGZyb20geCIpCiAgICAgICAgIHNlbGYudmFsaWRhdGUoIih5aWVsZCBmcm9tIHgpICsgeSIpCiAgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoInlpZWxkIGZyb20iKQogCiAKK2NsYXNzIFRlc3RBc3luY0F3YWl0KEdyYW1tYXJUZXN0KToKKyAgICBkZWYgdGVzdF9hd2FpdF9leHByKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgeAorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKworICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisKKyAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworCisgICAgICAgICAgICBhd2FpdCB4CisgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKTogcmV0dXJuIGF3YWl0IGEiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogYXdhaXQgeAorICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi5pbnZhbGlkX3N5bnRheCgiYXdhaXQgeCIpCisgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB4IiIiKQorCisgICAgICAgIHNlbGYuaW52YWxpZF9zeW50YXgoIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGF3YWl0IHgKKyAgICAgICAgIiIiKQorCisgICAgZGVmIHRlc3RfYXN5bmNfdmFyKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jID0gMSIiIikKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhd2FpdCA9IDEiIiIpCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiZGVmIGFzeW5jKCk6IHBhc3MiIiIpCisKKyAgICBkZWYgdGVzdF9hc3luY193aXRoKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcyIiIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX2ZvcihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIHdpdGggYTogcGFzcyIiIikKKworICAgICAgICBzZWxmLmludmFsaWRfc3ludGF4KCIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgd2l0aCBhOiBwYXNzIiIiKQorCisKIGNsYXNzIFRlc3RSYWlzZUNoYW5nZXMoR3JhbW1hclRlc3QpOgogICAgIGRlZiB0ZXN0XzJ4X3N0eWxlXzEoc2VsZik6CiAgICAgICAgIHNlbGYudmFsaWRhdGUoInJhaXNlIikKZGlmZiAtLWdpdCBhL0xpYi9saW5lY2FjaGUucHkgYi9MaWIvbGluZWNhY2hlLnB5CmluZGV4IDg4NGNiZjQuLjNhZmNjZTEgMTAwNjQ0Ci0tLSBhL0xpYi9saW5lY2FjaGUucHkKKysrIGIvTGliL2xpbmVjYWNoZS5weQpAQCAtNSw2ICs1LDcgQEAKIHRoYXQgbmFtZS4KICIiIgogCitpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB0b2tlbml6ZQpAQCAtMjEsNyArMjIsOSBAQAogCiAjIFRoZSBjYWNoZQogCi1jYWNoZSA9IHt9ICMgVGhlIGNhY2hlCisjIFRoZSBjYWNoZS4gTWFwcyBmaWxlbmFtZXMgdG8gZWl0aGVyIGEgdGh1bmsgd2hpY2ggd2lsbCBwcm92aWRlIHNvdXJjZSBjb2RlLAorIyBvciBhIHR1cGxlIChzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lKSBvbmNlIGxvYWRlZC4KK2NhY2hlID0ge30KIAogCiBkZWYgY2xlYXJjYWNoZSgpOgpAQCAtMzYsNyArMzksOSBAQAogICAgIFVwZGF0ZSB0aGUgY2FjaGUgaWYgaXQgZG9lc24ndCBjb250YWluIGFuIGVudHJ5IGZvciB0aGlzIGZpbGUgYWxyZWFkeS4iIiIKIAogICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgotICAgICAgICByZXR1cm4gY2FjaGVbZmlsZW5hbWVdWzJdCisgICAgICAgIGVudHJ5ID0gY2FjaGVbZmlsZW5hbWVdCisgICAgICAgIGlmIGxlbihlbnRyeSkgIT0gMToKKyAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KIAogICAgIHRyeToKICAgICAgICAgcmV0dXJuIHVwZGF0ZWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKQEAgLTU4LDcgKzYzLDExIEBACiAgICAgICAgICAgICByZXR1cm4KIAogICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgIHNpemUsIG10aW1lLCBsaW5lcywgZnVsbG5hbWUgPSBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgZW50cnkgPSBjYWNoZVtmaWxlbmFtZV0KKyAgICAgICAgaWYgbGVuKGVudHJ5KSA9PSAxOgorICAgICAgICAgICAgIyBsYXp5IGNhY2hlIGVudHJ5LCBsZWF2ZSBpdCBsYXp5LgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgc2l6ZSwgbXRpbWUsIGxpbmVzLCBmdWxsbmFtZSA9IGVudHJ5CiAgICAgICAgIGlmIG10aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBjb250aW51ZSAgICMgbm8tb3AgZm9yIGZpbGVzIGxvYWRlZCB2aWEgYSBfX2xvYWRlcl9fCiAgICAgICAgIHRyeToKQEAgLTc2LDcgKzg1LDggQEAKICAgICBhbmQgcmV0dXJuIGFuIGVtcHR5IGxpc3QuIiIiCiAKICAgICBpZiBmaWxlbmFtZSBpbiBjYWNoZToKLSAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQorICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSAhPSAxOgorICAgICAgICAgICAgZGVsIGNhY2hlW2ZpbGVuYW1lXQogICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKICAgICAgICAgcmV0dXJuIFtdCiAKQEAgLTg2LDI3ICs5NiwyMyBAQAogICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBiYXNlbmFtZSA9IGZpbGVuYW1lCiAKLSAgICAgICAgIyBUcnkgZm9yIGEgX19sb2FkZXJfXywgaWYgYXZhaWxhYmxlCi0gICAgICAgIGlmIG1vZHVsZV9nbG9iYWxzIGFuZCAnX19sb2FkZXJfXycgaW4gbW9kdWxlX2dsb2JhbHM6Ci0gICAgICAgICAgICBuYW1lID0gbW9kdWxlX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycpCi0gICAgICAgICAgICBsb2FkZXIgPSBtb2R1bGVfZ2xvYmFsc1snX19sb2FkZXJfXyddCi0gICAgICAgICAgICBnZXRfc291cmNlID0gZ2V0YXR0cihsb2FkZXIsICdnZXRfc291cmNlJywgTm9uZSkKLQotICAgICAgICAgICAgaWYgbmFtZSBhbmQgZ2V0X3NvdXJjZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRfc291cmNlKG5hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgT1NFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIE5vIGx1Y2ssIHRoZSBQRVAzMDIgbG9hZGVyIGNhbm5vdCBmaW5kIHRoZSBzb3VyY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbW9kdWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAgICAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihkYXRhKSwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5lKydcbicgZm9yIGxpbmUgaW4gZGF0YS5zcGxpdGxpbmVzKCldLCBmdWxsbmFtZQotICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KKyAgICAgICAgIyBSZWFsaXNlIGEgbGF6eSBsb2FkZXIgYmFzZWQgbG9va3VwIGlmIHRoZXJlIGlzIG9uZQorICAgICAgICAjIG90aGVyd2lzZSB0cnkgdG8gbG9va3VwIHJpZ2h0IG5vdy4KKyAgICAgICAgaWYgbGF6eWNhY2hlKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YSA9IGNhY2hlW2ZpbGVuYW1lXVswXSgpCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgIyBObyBsdWNrLCB0aGUgUEVQMzAyIGxvYWRlciBjYW5ub3QgZmluZCB0aGUgc291cmNlCisgICAgICAgICAgICAgICAgICAgICMgZm9yIHRoaXMgbW9kdWxlLgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgICAgICAgICBjYWNoZVtmaWxlbmFtZV0gPSAoCisgICAgICAgICAgICAgICAgICAgIGxlbihkYXRhKSwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgW2xpbmUrJ1xuJyBmb3IgbGluZSBpbiBkYXRhLnNwbGl0bGluZXMoKV0sIGZ1bGxuYW1lCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVtmaWxlbmFtZV1bMl0KIAogICAgICAgICAjIFRyeSBsb29raW5nIHRocm91Z2ggdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCwgd2hpY2ggaXMgb25seSB1c2VmdWwKICAgICAgICAgIyB3aGVuIGhhbmRsaW5nIGEgcmVsYXRpdmUgZmlsZW5hbWUuCkBAIC0xMzYsMyArMTQyLDM2IEBACiAgICAgc2l6ZSwgbXRpbWUgPSBzdGF0LnN0X3NpemUsIHN0YXQuc3RfbXRpbWUKICAgICBjYWNoZVtmaWxlbmFtZV0gPSBzaXplLCBtdGltZSwgbGluZXMsIGZ1bGxuYW1lCiAgICAgcmV0dXJuIGxpbmVzCisKKworZGVmIGxhenljYWNoZShmaWxlbmFtZSwgbW9kdWxlX2dsb2JhbHMpOgorICAgICIiIlNlZWQgdGhlIGNhY2hlIGZvciBmaWxlbmFtZSB3aXRoIG1vZHVsZV9nbG9iYWxzLgorCisgICAgVGhlIG1vZHVsZSBsb2FkZXIgd2lsbCBiZSBhc2tlZCBmb3IgdGhlIHNvdXJjZSBvbmx5IHdoZW4gZ2V0bGluZXMgaXMKKyAgICBjYWxsZWQsIG5vdCBpbW1lZGlhdGVseS4KKworICAgIElmIHRoZXJlIGlzIGFuIGVudHJ5IGluIHRoZSBjYWNoZSBhbHJlYWR5LCBpdCBpcyBub3QgYWx0ZXJlZC4KKworICAgIDpyZXR1cm46IFRydWUgaWYgYSBsYXp5IGxvYWQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgY2FjaGUsCisgICAgICAgIG90aGVyd2lzZSBGYWxzZS4gVG8gcmVnaXN0ZXIgc3VjaCBhIGxvYWQgYSBtb2R1bGUgbG9hZGVyIHdpdGggYQorICAgICAgICBnZXRfc291cmNlIG1ldGhvZCBtdXN0IGJlIGZvdW5kLCB0aGUgZmlsZW5hbWUgbXVzdCBiZSBhIGNhY2hhYmxlCisgICAgICAgIGZpbGVuYW1lLCBhbmQgdGhlIGZpbGVuYW1lIG11c3Qgbm90IGJlIGFscmVhZHkgY2FjaGVkLgorICAgICIiIgorICAgIGlmIGZpbGVuYW1lIGluIGNhY2hlOgorICAgICAgICBpZiBsZW4oY2FjaGVbZmlsZW5hbWVdKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIG5vdCBmaWxlbmFtZSBvciAoZmlsZW5hbWUuc3RhcnRzd2l0aCgnPCcpIGFuZCBmaWxlbmFtZS5lbmRzd2l0aCgnPicpKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgIyBUcnkgZm9yIGEgX19sb2FkZXJfXywgaWYgYXZhaWxhYmxlCisgICAgaWYgbW9kdWxlX2dsb2JhbHMgYW5kICdfX2xvYWRlcl9fJyBpbiBtb2R1bGVfZ2xvYmFsczoKKyAgICAgICAgbmFtZSA9IG1vZHVsZV9nbG9iYWxzLmdldCgnX19uYW1lX18nKQorICAgICAgICBsb2FkZXIgPSBtb2R1bGVfZ2xvYmFsc1snX19sb2FkZXJfXyddCisgICAgICAgIGdldF9zb3VyY2UgPSBnZXRhdHRyKGxvYWRlciwgJ2dldF9zb3VyY2UnLCBOb25lKQorCisgICAgICAgIGlmIG5hbWUgYW5kIGdldF9zb3VyY2U6CisgICAgICAgICAgICBnZXRfbGluZXMgPSBmdW5jdG9vbHMucGFydGlhbChnZXRfc291cmNlLCBuYW1lKQorICAgICAgICAgICAgY2FjaGVbZmlsZW5hbWVdID0gKGdldF9saW5lcywpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL2xvY2FsZS5weSBiL0xpYi9sb2NhbGUucHkKaW5kZXggN2ZmNDM1Ni4uY2VhYTZkOCAxMDA2NDQKLS0tIGEvTGliL2xvY2FsZS5weQorKysgYi9MaWIvbG9jYWxlLnB5CkBAIC0zMDEsOCArMzAxLDggQEAKICAgICAiIiJDb252ZXJ0IGZsb2F0IHRvIGludGVnZXIsIHRha2luZyB0aGUgbG9jYWxlIGludG8gYWNjb3VudC4iIiIKICAgICByZXR1cm4gZm9ybWF0KCIlLjEyZyIsIHZhbCkKIAotZGVmIGF0b2Yoc3RyaW5nLCBmdW5jPWZsb2F0KToKLSAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgZmxvYXQgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgorZGVmIGRlbG9jYWxpemUoc3RyaW5nKToKKyAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgbm9ybWFsaXplZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgogICAgICNGaXJzdCwgZ2V0IHJpZCBvZiB0aGUgZ3JvdXBpbmcKICAgICB0cyA9IGxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCiAgICAgaWYgdHM6CkBAIC0zMTEsMTIgKzMxMSwxNSBAQAogICAgIGRkID0gbG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KICAgICBpZiBkZDoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKLSAgICAjZmluYWxseSwgcGFyc2UgdGhlIHN0cmluZwotICAgIHJldHVybiBmdW5jKHN0cmluZykKKyAgICByZXR1cm4gc3RyaW5nCiAKLWRlZiBhdG9pKHN0cik6CitkZWYgYXRvZihzdHJpbmcsIGZ1bmM9ZmxvYXQpOgorICAgICJQYXJzZXMgYSBzdHJpbmcgYXMgYSBmbG9hdCBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCisgICAgcmV0dXJuIGZ1bmMoZGVsb2NhbGl6ZShzdHJpbmcpKQorCitkZWYgYXRvaShzdHJpbmcpOgogICAgICJDb252ZXJ0cyBhIHN0cmluZyB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKLSAgICByZXR1cm4gYXRvZihzdHIsIGludCkKKyAgICByZXR1cm4gaW50KGRlbG9jYWxpemUoc3RyaW5nKSkKIAogZGVmIF90ZXN0KCk6CiAgICAgc2V0bG9jYWxlKExDX0FMTCwgIiIpCkBAIC02OTYsNyArNjk5LDkgQEAKICAgICAnZXVjX2tyJzogICAgICAgICAgICAgICAgICAgICAgICdldWNLUicsCiAgICAgJ3V0Zl84JzogICAgICAgICAgICAgICAgICAgICAgICAnVVRGLTgnLAogICAgICdrb2k4X3InOiAgICAgICAgICAgICAgICAgICAgICAgJ0tPSTgtUicsCisgICAgJ2tvaThfdCc6ICAgICAgICAgICAgICAgICAgICAgICAnS09JOC1UJywKICAgICAna29pOF91JzogICAgICAgICAgICAgICAgICAgICAgICdLT0k4LVUnLAorICAgICdrejEwNDgnOiAgICAgICAgICAgICAgICAgICAgICAgJ1JLMTA0OCcsCiAgICAgJ2NwMTI1MSc6ICAgICAgICAgICAgICAgICAgICAgICAnQ1AxMjUxJywKICAgICAnY3AxMjU1JzogICAgICAgICAgICAgICAgICAgICAgICdDUDEyNTUnLAogICAgICdjcDEyNTYnOiAgICAgICAgICAgICAgICAgICAgICAgJ0NQMTI1NicsCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDY3ZDlkMmUuLjEwNGIwYmUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgMjAwMS0yMDE0IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBDb3B5cmlnaHQgMjAwMS0yMDE1IGJ5IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIwogIyBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKICMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLApAQCAtMTgsNyArMTgsNyBAQAogTG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIEJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4KIGNvbXAubGFuZy5weXRob24uCiAKLUNvcHlyaWdodCAoQykgMjAwMS0yMDE0IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChDKSAyMDAxLTIwMTUgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRvIHVzZSwgc2ltcGx5ICdpbXBvcnQgbG9nZ2luZycgYW5kIGxvZyBhd2F5IQogIiIiCkBAIC0zMTYsNiArMzE2LDggQEAKICAgICAgICAgcmV0dXJuICc8TG9nUmVjb3JkOiAlcywgJXMsICVzLCAlcywgIiVzIj4nJShzZWxmLm5hbWUsIHNlbGYubGV2ZWxubywKICAgICAgICAgICAgIHNlbGYucGF0aG5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm1zZykKIAorICAgIF9fcmVwcl9fID0gX19zdHJfXworCiAgICAgZGVmIGdldE1lc3NhZ2Uoc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UgZm9yIHRoaXMgTG9nUmVjb3JkLgpAQCAtMTA5MSw3ICsxMDkzLDYgQEAKICMKICMgICBEZXRlcm1pbmUgd2hpY2ggY2xhc3MgdG8gdXNlIHdoZW4gaW5zdGFudGlhdGluZyBsb2dnZXJzLgogIwotX2xvZ2dlckNsYXNzID0gTm9uZQogCiBkZWYgc2V0TG9nZ2VyQ2xhc3Moa2xhc3MpOgogICAgICIiIgpAQCAtMTExMCw3ICsxMTExLDYgQEAKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGNsYXNzIHRvIGJlIHVzZWQgd2hlbiBpbnN0YW50aWF0aW5nIGEgbG9nZ2VyLgogICAgICIiIgotCiAgICAgcmV0dXJuIF9sb2dnZXJDbGFzcwogCiBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CkBAIC0xMzA3LDEyICsxMzA3LDExIEBACiAgICAgICAgIGlmIHNlbGYuaXNFbmFibGVkRm9yKEVSUk9SKToKICAgICAgICAgICAgIHNlbGYuX2xvZyhFUlJPUiwgbXNnLCBhcmdzLCAqKmt3YXJncykKIAotICAgIGRlZiBleGNlcHRpb24oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBleGNlcHRpb24oc2VsZiwgbXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgICAgICAiIiIKICAgICAgICAgQ29udmVuaWVuY2UgbWV0aG9kIGZvciBsb2dnaW5nIGFuIEVSUk9SIHdpdGggZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAga3dhcmdzWydleGNfaW5mbyddID0gVHJ1ZQotICAgICAgICBzZWxmLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmVycm9yKG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogICAgIGRlZiBjcml0aWNhbChzZWxmLCBtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIgpAQCAtMTQwNyw3ICsxNDA2LDkgQEAKICAgICAgICAgZWxzZTogIyBwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICBmbiwgbG5vLCBmdW5jID0gIih1bmtub3duIGZpbGUpIiwgMCwgIih1bmtub3duIGZ1bmN0aW9uKSIKICAgICAgICAgaWYgZXhjX2luZm86Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfaW5mbywgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGNfaW5mbyksIGV4Y19pbmZvLCBleGNfaW5mby5fX3RyYWNlYmFja19fKQorICAgICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShleGNfaW5mbywgdHVwbGUpOgogICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgcmVjb3JkID0gc2VsZi5tYWtlUmVjb3JkKHNlbGYubmFtZSwgbGV2ZWwsIGZuLCBsbm8sIG1zZywgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBmdW5jLCBleHRyYSwgc2luZm8pCkBAIC0xNjE3LDEyICsxNjE4LDExIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKLSAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZXhjZXB0aW9uKHNlbGYsIG1zZywgKmFyZ3MsIGV4Y19pbmZvPVRydWUsICoqa3dhcmdzKToKICAgICAgICAgIiIiCiAgICAgICAgIERlbGVnYXRlIGFuIGV4Y2VwdGlvbiBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIGxvZ2dlci4KICAgICAgICAgIiIiCi0gICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IFRydWUKLSAgICAgICAgc2VsZi5sb2coRVJST1IsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmxvZyhFUlJPUiwgbXNnLCAqYXJncywgZXhjX2luZm89ZXhjX2luZm8sICoqa3dhcmdzKQogCiAgICAgZGVmIGNyaXRpY2FsKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiCkBAIC0xODA0LDE0ICsxODA0LDEzIEBACiAgICAgICAgIGJhc2ljQ29uZmlnKCkKICAgICByb290LmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCi1kZWYgZXhjZXB0aW9uKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKK2RlZiBleGNlcHRpb24obXNnLCAqYXJncywgZXhjX2luZm89VHJ1ZSwgKiprd2FyZ3MpOgogICAgICIiIgogICAgIExvZyBhIG1lc3NhZ2Ugd2l0aCBzZXZlcml0eSAnRVJST1InIG9uIHRoZSByb290IGxvZ2dlciwgd2l0aCBleGNlcHRpb24KICAgICBpbmZvcm1hdGlvbi4gSWYgdGhlIGxvZ2dlciBoYXMgbm8gaGFuZGxlcnMsIGJhc2ljQ29uZmlnKCkgaXMgY2FsbGVkIHRvIGFkZAogICAgIGEgY29uc29sZSBoYW5kbGVyIHdpdGggYSBwcmUtZGVmaW5lZCBmb3JtYXQuCiAgICAgIiIiCi0gICAga3dhcmdzWydleGNfaW5mbyddID0gVHJ1ZQotICAgIGVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgIGVycm9yKG1zZywgKmFyZ3MsIGV4Y19pbmZvPWV4Y19pbmZvLCAqKmt3YXJncykKIAogZGVmIHdhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5IGIvTGliL2xvZ2dpbmcvY29uZmlnLnB5CmluZGV4IDg5NWZiMjYuLjhhOTk5MjMgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2NvbmZpZy5weQorKysgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKQEAgLTExNiwxMSArMTE2LDEyIEBACiAgICAgICAgIHNlY3RuYW1lID0gImZvcm1hdHRlcl8lcyIgJSBmb3JtCiAgICAgICAgIGZzID0gY3AuZ2V0KHNlY3RuYW1lLCAiZm9ybWF0IiwgcmF3PVRydWUsIGZhbGxiYWNrPU5vbmUpCiAgICAgICAgIGRmcyA9IGNwLmdldChzZWN0bmFtZSwgImRhdGVmbXQiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9Tm9uZSkKKyAgICAgICAgc3RsID0gY3AuZ2V0KHNlY3RuYW1lLCAic3R5bGUiLCByYXc9VHJ1ZSwgZmFsbGJhY2s9JyUnKQogICAgICAgICBjID0gbG9nZ2luZy5Gb3JtYXR0ZXIKICAgICAgICAgY2xhc3NfbmFtZSA9IGNwW3NlY3RuYW1lXS5nZXQoImNsYXNzIikKICAgICAgICAgaWYgY2xhc3NfbmFtZToKICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbGFzc19uYW1lKQotICAgICAgICBmID0gYyhmcywgZGZzKQorICAgICAgICBmID0gYyhmcywgZGZzLCBzdGwpCiAgICAgICAgIGZvcm1hdHRlcnNbZm9ybV0gPSBmCiAgICAgcmV0dXJuIGZvcm1hdHRlcnMKIApAQCAtNjYwLDcgKzY2MSwxMiBAQAogICAgICAgICAgICAgZm10ID0gY29uZmlnLmdldCgnZm9ybWF0JywgTm9uZSkKICAgICAgICAgICAgIGRmbXQgPSBjb25maWcuZ2V0KCdkYXRlZm10JywgTm9uZSkKICAgICAgICAgICAgIHN0eWxlID0gY29uZmlnLmdldCgnc3R5bGUnLCAnJScpCi0gICAgICAgICAgICByZXN1bHQgPSBsb2dnaW5nLkZvcm1hdHRlcihmbXQsIGRmbXQsIHN0eWxlKQorICAgICAgICAgICAgY25hbWUgPSBjb25maWcuZ2V0KCdjbGFzcycsIE5vbmUpCisgICAgICAgICAgICBpZiBub3QgY25hbWU6CisgICAgICAgICAgICAgICAgYyA9IGxvZ2dpbmcuRm9ybWF0dGVyCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGMgPSBfcmVzb2x2ZShjbmFtZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGMoZm10LCBkZm10LCBzdHlsZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGNvbmZpZ3VyZV9maWx0ZXIoc2VsZiwgY29uZmlnKToKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggZmRhODA5My4uMDJhNWZjMSAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAyMDAxLTIwMTMgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIENvcHlyaWdodCAyMDAxLTIwMTUgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAjCiAjIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwogIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCkBAIC0xOCw3ICsxOCw3IEBACiBBZGRpdGlvbmFsIGhhbmRsZXJzIGZvciB0aGUgbG9nZ2luZyBwYWNrYWdlIGZvciBQeXRob24uIFRoZSBjb3JlIHBhY2thZ2UgaXMKIGJhc2VkIG9uIFBFUCAyODIgYW5kIGNvbW1lbnRzIHRoZXJldG8gaW4gY29tcC5sYW5nLnB5dGhvbi4KIAotQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCitDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNSBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVG8gdXNlLCBzaW1wbHkgJ2ltcG9ydCBsb2dnaW5nLmhhbmRsZXJzJyBhbmQgbG9nIGF3YXkhCiAiIiIKQEAgLTEzNTUsNyArMTM1NSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBfc2VudGluZWwgPSBOb25lCiAKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVlLCAqaGFuZGxlcnMpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcXVldWUsICpoYW5kbGVycywgcmVzcGVjdF9oYW5kbGVyX2xldmVsPUZhbHNlKToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgSW5pdGlhbGlzZSBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVldWUgYW5kCiAgICAgICAgICAgICBoYW5kbGVycy4KQEAgLTEzNjQsNiArMTM2NCw3IEBACiAgICAgICAgICAgICBzZWxmLmhhbmRsZXJzID0gaGFuZGxlcnMKICAgICAgICAgICAgIHNlbGYuX3N0b3AgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yZXNwZWN0X2hhbmRsZXJfbGV2ZWwgPSByZXNwZWN0X2hhbmRsZXJfbGV2ZWwKIAogICAgICAgICBkZWYgZGVxdWV1ZShzZWxmLCBibG9jayk6CiAgICAgICAgICAgICAiIiIKQEAgLTE0MDQsNyArMTQwNSwxMiBAQAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICByZWNvcmQgPSBzZWxmLnByZXBhcmUocmVjb3JkKQogICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5oYW5kbGVyczoKLSAgICAgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZShyZWNvcmQpCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucmVzcGVjdF9oYW5kbGVyX2xldmVsOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgPSByZWNvcmQubGV2ZWxubyA+PSBoYW5kbGVyLmxldmVsCisgICAgICAgICAgICAgICAgaWYgcHJvY2VzczoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5oYW5kbGUocmVjb3JkKQogCiAgICAgICAgIGRlZiBfbW9uaXRvcihzZWxmKToKICAgICAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2x6bWEucHkgYi9MaWIvbHptYS5weQppbmRleCBmMWQzOTU4Li44OTUyOGI2IDEwMDY0NAotLS0gYS9MaWIvbHptYS5weQorKysgYi9MaWIvbHptYS5weQpAQCAtMjUsMTcgKzI1LDE2IEBACiBpbXBvcnQgaW8KIGZyb20gX2x6bWEgaW1wb3J0ICoKIGZyb20gX2x6bWEgaW1wb3J0IF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMKK2ltcG9ydCBfY29tcHJlc3Npb24KIAogCiBfTU9ERV9DTE9TRUQgICA9IDAKIF9NT0RFX1JFQUQgICAgID0gMQotX01PREVfUkVBRF9FT0YgPSAyCisjIFZhbHVlIDIgbm8gbG9uZ2VyIHVzZWQKIF9NT0RFX1dSSVRFICAgID0gMwogCi1fQlVGRkVSX1NJWkUgPSA4MTkyCiAKLQotY2xhc3MgTFpNQUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorY2xhc3MgTFpNQUZpbGUoX2NvbXByZXNzaW9uLkJhc2VTdHJlYW0pOgogCiAgICAgIiIiQSBmaWxlIG9iamVjdCBwcm92aWRpbmcgdHJhbnNwYXJlbnQgTFpNQSAoZGUpY29tcHJlc3Npb24uCiAKQEAgLTkyLDggKzkxLDYgQEAKICAgICAgICAgc2VsZi5fZnAgPSBOb25lCiAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQogICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfQ0xPU0VECi0gICAgICAgIHNlbGYuX3BvcyA9IDAKLSAgICAgICAgc2VsZi5fc2l6ZSA9IC0xCiAKICAgICAgICAgaWYgbW9kZSBpbiAoInIiLCAicmIiKToKICAgICAgICAgICAgIGlmIGNoZWNrICE9IC0xOgpAQCAtMTA1LDE5ICsxMDIsMTMgQEAKICAgICAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGZvcm1hdCA9IEZPUk1BVF9BVVRPCiAgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9SRUFECi0gICAgICAgICAgICAjIFNhdmUgdGhlIGFyZ3MgdG8gcGFzcyB0byB0aGUgTFpNQURlY29tcHJlc3NvciBpbml0aWFsaXplci4KLSAgICAgICAgICAgICMgSWYgdGhlIGZpbGUgY29udGFpbnMgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBlYWNoCi0gICAgICAgICAgICAjIHN0cmVhbSB3aWxsIG5lZWQgYSBzZXBhcmF0ZSBkZWNvbXByZXNzb3Igb2JqZWN0LgotICAgICAgICAgICAgc2VsZi5faW5pdF9hcmdzID0geyJmb3JtYXQiOmZvcm1hdCwgImZpbHRlcnMiOmZpbHRlcnN9Ci0gICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAogICAgICAgICBlbGlmIG1vZGUgaW4gKCJ3IiwgIndiIiwgImEiLCAiYWIiLCAieCIsICJ4YiIpOgogICAgICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gRk9STUFUX1haCiAgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQogICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IExaTUFDb21wcmVzc29yKGZvcm1hdD1mb3JtYXQsIGNoZWNrPWNoZWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IDAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCkBAIC0xMzMsNiArMTI0LDExIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQogCisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKKyAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLCBMWk1BRGVjb21wcmVzc29yLAorICAgICAgICAgICAgICAgIHRyYWlsaW5nX2Vycm9yPUxaTUFFcnJvciwgZm9ybWF0PWZvcm1hdCwgZmlsdGVycz1maWx0ZXJzKQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gaW8uQnVmZmVyZWRSZWFkZXIocmF3KQorCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiJGbHVzaCBhbmQgY2xvc2UgdGhlIGZpbGUuCiAKQEAgLTE0Miw5ICsxMzgsOSBAQAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRDoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQogICAgICAgICAgICAgZWxpZiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKSkKICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTm9uZQpAQCAtMTY5LDEyMyArMTY1LDE4IEBACiAKICAgICBkZWYgc2Vla2FibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHN1cHBvcnRzIHNlZWtpbmcuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnJlYWRhYmxlKCkgYW5kIHNlbGYuX2ZwLnNlZWthYmxlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fYnVmZmVyLnNlZWthYmxlKCkKIAogICAgIGRlZiByZWFkYWJsZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgd2FzIG9wZW5lZCBmb3IgcmVhZGluZy4iIiIKICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCi0gICAgICAgIHJldHVybiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRikKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRAogCiAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciB3cml0aW5nLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKICAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEUKIAotICAgICMgTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLgotCi0gICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQotICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQotCi0gICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgIT0gX01PREVfV1JJVEU6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKLQotICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKLSAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKLSAgICAgICAgaWYgbm90IHNlbGYuX2ZwLnNlZWthYmxlKCk6Ci0gICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCi0KLSAgICAjIEZpbGwgdGhlIHJlYWRhaGVhZCBidWZmZXIgaWYgaXQgaXMgZW1wdHkuIFJldHVybnMgRmFsc2Ugb24gRU9GLgotICAgIGRlZiBfZmlsbF9idWZmZXIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAotICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgotICAgICAgICB3aGlsZSBzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgcmF3YmxvY2sgPSAoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5yZWFkKF9CVUZGRVJfU0laRSkpCi0KLSAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgotICAgICAgICAgICAgICAgICMgQ29udGludWUgdG8gbmV4dCBzdHJlYW0uCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2RlY29tcHJlc3Nvci5kZWNvbXByZXNzKHJhd2Jsb2NrKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBMWk1BRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgVHJhaWxpbmcgZGF0YSBpc24ndCBhIHZhbGlkIGNvbXByZXNzZWQgc3RyZWFtOyBpZ25vcmUgaXQuCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFEX0VPRgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zaXplID0gc2VsZi5fcG9zCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCi0gICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KLSAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCi0gICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgICAgICBibG9ja3MgPSBbXQotICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgotICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6Ci0gICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KLSAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgotICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCi0gICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgotICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KLSAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KLSAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAotICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCi0KLSAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgotICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCi0gICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCi0KLSAgICAgICAgYmxvY2tzID0gW10KLSAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6Ci0gICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KLSAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCi0gICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCi0gICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgICAgICBuIC09IGxlbihkYXRhKQotICAgICAgICBpZiByZXR1cm5fZGF0YToKLSAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCi0KICAgICBkZWYgcGVlayhzZWxmLCBzaXplPS0xKToKICAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCiAKQEAgLTI5Myw5ICsxODQsOSBAQAogICAgICAgICBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKLSAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgIyBSZWxpZXMgb24gdGhlIHVuZG9jdW1lbnRlZCBmYWN0IHRoYXQgQnVmZmVyZWRSZWFkZXIucGVlaygpIGFsd2F5cworICAgICAgICAjIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgKGV4Y2VwdCBhdCBFT0YpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucGVlayhzaXplKQogCiAgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTMwNCwzOCArMTk1LDE5IEBACiAgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiBzaXplID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gYiIiCi0gICAgICAgIGVsaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9hbGwoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYmxvY2soc2l6ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkKHNpemUpCiAKICAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CiAgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHdoaWxlIHRyeWluZyB0byBhdm9pZAotICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCisgICAgICAgIG1ha2luZyBtdWx0aXBsZSByZWFkcyBmcm9tIHRoZSB1bmRlcmx5aW5nIHN0cmVhbS4gUmVhZHMgdXAgdG8gYQorICAgICAgICBidWZmZXIncyB3b3J0aCBvZiBkYXRhIGlmIHNpemUgaXMgbmVnYXRpdmUuCiAKICAgICAgICAgUmV0dXJucyBiIiIgaWYgdGhlIGZpbGUgaXMgYXQgRU9GLgogICAgICAgICAiIiIKLSAgICAgICAgIyBVc3VhbGx5LCByZWFkMSgpIGNhbGxzIF9mcC5yZWFkKCkgYXQgbW9zdCBvbmNlLiBIb3dldmVyLCBzb21ldGltZXMKLSAgICAgICAgIyB0aGlzIGRvZXMgbm90IGdpdmUgZW5vdWdoIGRhdGEgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gbWFrZSBwcm9ncmVzcy4KLSAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2UgbWFrZSBtdWx0aXBsZSByZWFkcywgdG8gYXZvaWQgcmV0dXJuaW5nIGIiIi4KICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICBpZiAoc2l6ZSA9PSAwIG9yCi0gICAgICAgICAgICAjIE9ubHkgY2FsbCBfZmlsbF9idWZmZXIoKSBpZiB0aGUgYnVmZmVyIGlzIGFjdHVhbGx5IGVtcHR5LgotICAgICAgICAgICAgIyBUaGlzIGdpdmVzIGEgc2lnbmlmaWNhbnQgc3BlZWR1cCBpZiAqc2l6ZSogaXMgc21hbGwuCi0gICAgICAgICAgICAoc2VsZi5fYnVmZmVyX29mZnNldCA9PSBsZW4oc2VsZi5fYnVmZmVyKSBhbmQgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCkpKToKLSAgICAgICAgICAgIHJldHVybiBiIiIKLSAgICAgICAgaWYgc2l6ZSA+IDA6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ICsgc2l6ZV0KLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKz0gbGVuKGRhdGEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyW3NlbGYuX2J1ZmZlcl9vZmZzZXQ6XQotICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gMAotICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCi0gICAgICAgIHJldHVybiBkYXRhCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5yZWFkMShzaXplKQogCiAgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgogICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KQEAgLTM0NSwxNSArMjE3LDcgQEAKICAgICAgICAgY2FzZSB0aGUgbGluZSBtYXkgYmUgaW5jb21wbGV0ZSkuIFJldHVybnMgYicnIGlmIGFscmVhZHkgYXQgRU9GLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQotICAgICAgICAjIFNob3J0Y3V0IGZvciB0aGUgY29tbW9uIGNhc2UgLSB0aGUgd2hvbGUgbGluZSBpcyBpbiB0aGUgYnVmZmVyLgotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIGVuZCA9IHNlbGYuX2J1ZmZlci5maW5kKGIiXG4iLCBzZWxmLl9idWZmZXJfb2Zmc2V0KSArIDEKLSAgICAgICAgICAgIGlmIGVuZCA+IDA6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQotICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSBlbmQKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGxpbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLSAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIHNpemUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWZmZXIucmVhZGxpbmUoc2l6ZSkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gdGhlIGZpbGUuCkBAIC0zNjgsMTYgKzIzMiw3IEBACiAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQogCi0gICAgIyBSZXdpbmQgdGhlIGZpbGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGF0YSBzdHJlYW0uCi0gICAgZGVmIF9yZXdpbmQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ZwLnNlZWsoMCwgMCkKLSAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQUQKLSAgICAgICAgc2VsZi5fcG9zID0gMAotICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBMWk1BRGVjb21wcmVzc29yKCoqc2VsZi5faW5pdF9hcmdzKQotICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKLSAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKLQotICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPTApOgorICAgIGRlZiBzZWVrKHNlbGYsIG9mZnNldCwgd2hlbmNlPWlvLlNFRUtfU0VUKToKICAgICAgICAgIiIiQ2hhbmdlIHRoZSBmaWxlIHBvc2l0aW9uLgogCiAgICAgICAgIFRoZSBuZXcgcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5IG9mZnNldCwgcmVsYXRpdmUgdG8gdGhlCkBAIC0zODksMzggKzI0NCwxNyBAQAogCiAgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgogCi0gICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzcCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzbyBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCiAgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKLQotICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgotICAgICAgICBpZiB3aGVuY2UgPT0gMDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAotICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgotICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCi0gICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKLSAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQotCi0gICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KLSAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgotICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKLQotICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KLSAgICAgICAgc2VsZi5fcmVhZF9ibG9jayhvZmZzZXQsIHJldHVybl9kYXRhPUZhbHNlKQotCi0gICAgICAgIHJldHVybiBzZWxmLl9wb3MKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5zZWVrKG9mZnNldCwgd2hlbmNlKQogCiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIiIgogICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci50ZWxsKCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwogCiAKZGlmZiAtLWdpdCBhL0xpYi9tYWNwYXRoLnB5IGIvTGliL21hY3BhdGgucHkKaW5kZXggNWNhMDA5Ny4uYTkwZDEwNSAxMDA2NDQKLS0tIGEvTGliL21hY3BhdGgucHkKKysrIGIvTGliL21hY3BhdGgucHkKQEAgLTUwLDIwICs1MCwyNiBAQAogCiAKIGRlZiBqb2luKHMsICpwKToKLSAgICBjb2xvbiA9IF9nZXRfY29sb24ocykKLSAgICBwYXRoID0gcwotICAgIGZvciB0IGluIHA6Ci0gICAgICAgIGlmIChub3QgcGF0aCkgb3IgaXNhYnModCk6Ci0gICAgICAgICAgICBwYXRoID0gdAotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgdFs6MV0gPT0gY29sb246Ci0gICAgICAgICAgICB0ID0gdFsxOl0KLSAgICAgICAgaWYgY29sb24gbm90IGluIHBhdGg6Ci0gICAgICAgICAgICBwYXRoID0gY29sb24gKyBwYXRoCi0gICAgICAgIGlmIHBhdGhbLTE6XSAhPSBjb2xvbjoKLSAgICAgICAgICAgIHBhdGggPSBwYXRoICsgY29sb24KLSAgICAgICAgcGF0aCA9IHBhdGggKyB0Ci0gICAgcmV0dXJuIHBhdGgKKyAgICB0cnk6CisgICAgICAgIGNvbG9uID0gX2dldF9jb2xvbihzKQorICAgICAgICBwYXRoID0gcworICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgIHBhdGhbOjBdICsgY29sb24gICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgorICAgICAgICBmb3IgdCBpbiBwOgorICAgICAgICAgICAgaWYgKG5vdCBwYXRoKSBvciBpc2Ficyh0KToKKyAgICAgICAgICAgICAgICBwYXRoID0gdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiB0WzoxXSA9PSBjb2xvbjoKKyAgICAgICAgICAgICAgICB0ID0gdFsxOl0KKyAgICAgICAgICAgIGlmIGNvbG9uIG5vdCBpbiBwYXRoOgorICAgICAgICAgICAgICAgIHBhdGggPSBjb2xvbiArIHBhdGgKKyAgICAgICAgICAgIGlmIHBhdGhbLTE6XSAhPSBjb2xvbjoKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aCArIGNvbG9uCisgICAgICAgICAgICBwYXRoID0gcGF0aCArIHQKKyAgICAgICAgcmV0dXJuIHBhdGgKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEJ5dGVzV2FybmluZyk6CisgICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2pvaW4nLCBzLCAqcCkKKyAgICAgICAgcmFpc2UKIAogCiBkZWYgc3BsaXQocyk6CmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDRlNDJhZDIuLjI0ZDRhZWMgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0xMjM0LDggKzEyMzQsOCBAQAogY2xhc3MgQmFieWwoX3NpbmdsZWZpbGVNYWlsYm94KToKICAgICAiIiJBbiBSbWFpbC1zdHlsZSBCYWJ5bCBtYWlsYm94LiIiIgogCi0gICAgX3NwZWNpYWxfbGFiZWxzID0gZnJvemVuc2V0KCgndW5zZWVuJywgJ2RlbGV0ZWQnLCAnZmlsZWQnLCAnYW5zd2VyZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcndhcmRlZCcsICdlZGl0ZWQnLCAncmVzZW50JykpCisgICAgX3NwZWNpYWxfbGFiZWxzID0gZnJvemVuc2V0KHsndW5zZWVuJywgJ2RlbGV0ZWQnLCAnZmlsZWQnLCAnYW5zd2VyZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvcndhcmRlZCcsICdlZGl0ZWQnLCAncmVzZW50J30pCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZmFjdG9yeT1Ob25lLCBjcmVhdGU9VHJ1ZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBCYWJ5bCBtYWlsYm94LiIiIgpAQCAtMTk1Myw3ICsxOTUzLDcgQEAKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnJlYWRsaW5lKCkKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIHlpZWxkIGxpbmUKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtMTk3MCw5ICsxOTcwLDExIEBACiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiJDbG9zZSB0aGUgZmlsZS4iIiIKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2ZpbGUnKToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fZmlsZSwgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBkZWwgc2VsZi5fZmlsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fZmlsZSwgJ2Nsb3NlJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fZmlsZQogCiAgICAgZGVmIF9yZWFkKHNlbGYsIHNpemUsIHJlYWRfbWV0aG9kKToKICAgICAgICAgIiIiUmVhZCBzaXplIGJ5dGVzIHVzaW5nIHJlYWRfbWV0aG9kLiIiIgpkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggYjc3OGU2MC4uNTBmMjQ2MiAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xLDcgKzEsNyBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKIGltcG9ydCBkaXMKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IG1hcnNoYWwKIGltcG9ydCBvcwpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICAgIGlmIG5vdCBtLl9fcGF0aF9fOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIG1vZHVsZXMgPSB7fQotICAgICAgICAjICdzdWZmaXhlcycgdXNlZCB0byBiZSBhIGxpc3QgaGFyZGNvZGVkIHRvIFsiLnB5IiwgIi5weWMiLCAiLnB5byJdLgorICAgICAgICAjICdzdWZmaXhlcycgdXNlZCB0byBiZSBhIGxpc3QgaGFyZGNvZGVkIHRvIFsiLnB5IiwgIi5weWMiXS4KICAgICAgICAgIyBCdXQgd2UgbXVzdCBhbHNvIGNvbGxlY3QgUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGVzIC0gYWx0aG91Z2gKICAgICAgICAgIyB3ZSBjYW5ub3Qgc2VwYXJhdGUgbm9ybWFsIGRsbHMgZnJvbSBQeXRob24gZXh0ZW5zaW9ucy4KICAgICAgICAgc3VmZml4ZXMgPSBbXQpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgICAgICAgICBjbyA9IGNvbXBpbGUoZnAucmVhZCgpKydcbicsIHBhdGhuYW1lLCAnZXhlYycpCiAgICAgICAgIGVsaWYgdHlwZSA9PSBpbXAuUFlfQ09NUElMRUQ6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbWFyc2hhbF9kYXRhID0gaW1wb3J0bGliLl9ib290c3RyYXAuX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihmcC5yZWFkKCkpCisgICAgICAgICAgICAgICAgbWFyc2hhbF9kYXRhID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcihmcC5yZWFkKCkpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgIHNlbGYubXNnb3V0KDIsICJyYWlzZSBJbXBvcnRFcnJvcjogIiArIHN0cihleGMpLCBwYXRobmFtZSkKICAgICAgICAgICAgICAgICByYWlzZQpkaWZmIC0tZ2l0IGEvTGliL21zaWxpYi9fX2luaXRfXy5weSBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKaW5kZXggZDI5YTU5My4uODczNTYwZCAxMDA2NDQKLS0tIGEvTGliL21zaWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CkBAIC0zNjEsNyArMzYxLDcgQEAKICAgICAgICAgIyAgICAgICAgICAgICBbKGxvZ2ljYWwsIDAsIGZpbGVoYXNoLkludGVnZXJEYXRhKDEpLAogICAgICAgICAjICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoMiksIGZpbGVoYXNoLkludGVnZXJEYXRhKDMpLAogICAgICAgICAjICAgICAgICAgICAgICAgZmlsZWhhc2guSW50ZWdlckRhdGEoNCkpXSkKLSAgICAgICAgIyBBdXRvbWF0aWNhbGx5IHJlbW92ZSAucHljLy5weW8gZmlsZXMgb24gdW5pbnN0YWxsICgyKQorICAgICAgICAjIEF1dG9tYXRpY2FsbHkgcmVtb3ZlIC5weWMgZmlsZXMgb24gdW5pbnN0YWxsICgyKQogICAgICAgICAjIFhYWDogYWRkaW5nIHNvIG1hbnkgUmVtb3ZlRmlsZSBlbnRyaWVzIG1ha2VzIGluc3RhbGxlciB1bmJlbGlldmFibHkKICAgICAgICAgIyBzbG93LiBTbyBpbnN0ZWFkLCB3ZSBoYXZlIHRvIHVzZSB3aWxkY2FyZCByZW1vdmUgZW50cmllcwogICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIucHkiKToKQEAgLTM4MiwxMCArMzgyLDkgQEAKICAgICAgICAgcmV0dXJuIGZpbGVzCiAKICAgICBkZWYgcmVtb3ZlX3B5YyhzZWxmKToKLSAgICAgICAgIlJlbW92ZSAucHljLy5weW8gZmlsZXMgb24gdW5pbnN0YWxsIgorICAgICAgICAiUmVtb3ZlIC5weWMgZmlsZXMgb24gdW5pbnN0YWxsIgogICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiUmVtb3ZlRmlsZSIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5jb21wb25lbnQrImMiLCBzZWxmLmNvbXBvbmVudCwgIioucHljIiwgc2VsZi5sb2dpY2FsLCAyKSwKLSAgICAgICAgICAgICAgICAgIChzZWxmLmNvbXBvbmVudCsibyIsIHNlbGYuY29tcG9uZW50LCAiKi5weW8iLCBzZWxmLmxvZ2ljYWwsIDIpXSkKKyAgICAgICAgICAgICAgICAgWyhzZWxmLmNvbXBvbmVudCsiYyIsIHNlbGYuY29tcG9uZW50LCAiKi5weWMiLCBzZWxmLmxvZ2ljYWwsIDIpXSkKIAogY2xhc3MgQmluYXJ5OgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbmFtZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKaW5kZXggMWViMWE4ZC4uNGMzMjIzNyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQpAQCAtMzY1LDEwICszNjUsNyBAQAogICAgIGRlZiBfc2VuZChzZWxmLCBidWYsIHdyaXRlPV93cml0ZSk6CiAgICAgICAgIHJlbWFpbmluZyA9IGxlbihidWYpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbiA9IHdyaXRlKHNlbGYuX2hhbmRsZSwgYnVmKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIG4gPSB3cml0ZShzZWxmLl9oYW5kbGUsIGJ1ZikKICAgICAgICAgICAgIHJlbWFpbmluZyAtPSBuCiAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gMDoKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMzc5LDEwICszNzYsNyBAQAogICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGUKICAgICAgICAgcmVtYWluaW5nID0gc2l6ZQogICAgICAgICB3aGlsZSByZW1haW5pbmcgPiAwOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNodW5rID0gcmVhZChoYW5kbGUsIHJlbWFpbmluZykKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjaHVuayA9IHJlYWQoaGFuZGxlLCByZW1haW5pbmcpCiAgICAgICAgICAgICBuID0gbGVuKGNodW5rKQogICAgICAgICAgICAgaWYgbiA9PSAwOgogICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSBzaXplOgpAQCAtNDAwLDE3ICszOTQsMTQgQEAKICAgICAgICAgaWYgbiA+IDE2Mzg0OgogICAgICAgICAgICAgIyBUaGUgcGF5bG9hZCBpcyBsYXJnZSBzbyBOYWdsZSdzIGFsZ29yaXRobSB3b24ndCBiZSB0cmlnZ2VyZWQKICAgICAgICAgICAgICMgYW5kIHdlJ2QgYmV0dGVyIGF2b2lkIHRoZSBjb3N0IG9mIGNvbmNhdGVuYXRpb24uCi0gICAgICAgICAgICBjaHVua3MgPSBbaGVhZGVyLCBidWZdCi0gICAgICAgIGVsaWYgbiA+IDA6CisgICAgICAgICAgICBzZWxmLl9zZW5kKGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuX3NlbmQoYnVmKQorICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBJc3N1ZSAj4oCvMjA1NDA6IGNvbmNhdGVuYXRlIGJlZm9yZSBzZW5kaW5nLCB0byBhdm9pZCBkZWxheXMgZHVlCiAgICAgICAgICAgICAjIHRvIE5hZ2xlJ3MgYWxnb3JpdGhtIG9uIGEgVENQIHNvY2tldC4KLSAgICAgICAgICAgIGNodW5rcyA9IFtoZWFkZXIgKyBidWZdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRoaXMgY29kZSBwYXRoIGlzIG5lY2Vzc2FyeSB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycwotICAgICAgICAgICAgIyB3aGVuIHNlbmRpbmcgYSAwLWxlbmd0aCBidWZmZXIgaWYgdGhlIG90aGVyIGVuZCBjbG9zZWQgdGhlIHBpcGUuCi0gICAgICAgICAgICBjaHVua3MgPSBbaGVhZGVyXQotICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgotICAgICAgICAgICAgc2VsZi5fc2VuZChjaHVuaykKKyAgICAgICAgICAgICMgQWxzbyBub3RlIHdlIHdhbnQgdG8gYXZvaWQgc2VuZGluZyBhIDAtbGVuZ3RoIGJ1ZmZlciBzZXBhcmF0ZWx5LAorICAgICAgICAgICAgIyB0byBhdm9pZCAiYnJva2VuIHBpcGUiIGVycm9ycyBpZiB0aGUgb3RoZXIgZW5kIGNsb3NlZCB0aGUgcGlwZS4KKyAgICAgICAgICAgIHNlbGYuX3NlbmQoaGVhZGVyICsgYnVmKQogCiAgICAgZGVmIF9yZWN2X2J5dGVzKHNlbGYsIG1heHNpemU9Tm9uZSk6CiAgICAgICAgIGJ1ZiA9IHNlbGYuX3JlY3YoNCkKQEAgLTU5OSwxMyArNTkwLDcgQEAKICAgICAgICAgICAgIHNlbGYuX3VubGluayA9IE5vbmUKIAogICAgIGRlZiBhY2NlcHQoc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcywgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IHNlbGYuX3NvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzLCBzZWxmLl9sYXN0X2FjY2VwdGVkID0gc2VsZi5fc29ja2V0LmFjY2VwdCgpCiAgICAgICAgIHMuc2V0YmxvY2tpbmcoVHJ1ZSkKICAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKaW5kZXggMTM1ZGI3Zi4uMWFiZWE2NCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CkBAIC04Niw3ICs4Niw3IEBACiAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfJyk6CiAgICAgICAgICAgICAgICAgdGVtcC5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHRlbXAuc29ydCgpCi0gICAgICAgIHJldHVybiAnTmFtZXNwYWNlKCVzKScgJSBzdHIuam9pbignLCAnLCB0ZW1wKQorICAgICAgICByZXR1cm4gJyVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcsICcuam9pbih0ZW1wKSkKIAogZGljdCA9IGRpY3QKIGxpc3QgPSBsaXN0CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKaW5kZXggNjk0ZWY5Ni4uMTk4NDM3NSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQpAQCAtNTksOSArNTksOCBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgaWYgdGltZW91dCA8PSAwLjA6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgc2VsZi5faW4ubm90X2VtcHR5LmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkud2FpdCh0aW1lb3V0KQotICAgICAgICBzZWxmLl9pbi5ub3RfZW1wdHkucmVsZWFzZSgpCisgICAgICAgIHdpdGggc2VsZi5faW4ubm90X2VtcHR5OgorICAgICAgICAgICAgc2VsZi5faW4ubm90X2VtcHR5LndhaXQodGltZW91dCkKICAgICAgICAgcmV0dXJuIHNlbGYuX2luLnFzaXplKCkgPiAwCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKaW5kZXggMzg3NTE3ZS4uYjI3Y2JhNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQpAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAgICAgICAgICAgYWRkcmVzcyA9IGNvbm5lY3Rpb24uYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1VOSVgnKQogICAgICAgICAgICAgICAgIGxpc3RlbmVyLmJpbmQoYWRkcmVzcykKICAgICAgICAgICAgICAgICBvcy5jaG1vZChhZGRyZXNzLCAwbzYwMCkKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW4oMTAwKQorICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbigpCiAKICAgICAgICAgICAgICAgICAjIGFsbCBjbGllbnQgcHJvY2Vzc2VzIG93biB0aGUgd3JpdGUgZW5kIG9mIHRoZSAiYWxpdmUiIHBpcGU7CiAgICAgICAgICAgICAgICAgIyB3aGVuIHRoZXkgYWxsIHRlcm1pbmF0ZSB0aGUgcmVhZCBlbmQgYmVjb21lcyByZWFkeS4KQEAgLTE4OCw4ICsxODgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdChjb2RlKQogCi0gICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNPTk5BQk9SVEVEOgogICAgICAgICAgICAgICAgICAgICByYWlzZQpAQCAtMjMwLDEzICsyMjgsNyBAQAogICAgIGRhdGEgPSBiJycKICAgICBsZW5ndGggPSBVTlNJR05FRF9TVFJVQ1Quc2l6ZQogICAgIHdoaWxlIGxlbihkYXRhKSA8IGxlbmd0aDoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzID0gb3MucmVhZChmZCwgbGVuZ3RoIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzID0gb3MucmVhZChmZCwgbGVuZ3RoIC0gbGVuKGRhdGEpKQogICAgICAgICBpZiBub3QgczoKICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCd1bmV4cGVjdGVkIEVPRicpCiAgICAgICAgIGRhdGEgKz0gcwpAQCAtMjQ1LDEzICsyMzcsNyBAQAogZGVmIHdyaXRlX3Vuc2lnbmVkKGZkLCBuKToKICAgICBtc2cgPSBVTlNJR05FRF9TVFJVQ1QucGFjayhuKQogICAgIHdoaWxlIG1zZzoKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBuYnl0ZXMgPSBvcy53cml0ZShmZCwgbXNnKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBuYnl0ZXMgPSBvcy53cml0ZShmZCwgbXNnKQogICAgICAgICBpZiBuYnl0ZXMgPT0gMDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignc2hvdWxkIG5vdCBnZXQgaGVyZScpCiAgICAgICAgIG1zZyA9IG1zZ1tuYnl0ZXM6XQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDM0NGE0NWYuLjQ0ZDk2MzggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTU0LDcgKzU0LDkgQEAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAgICAgICAgICBzZWxmLnNpemUsIHNlbGYubmFtZSA9IHNlbGYuX3N0YXRlID0gc3RhdGUKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gX3dpbmFwaS5FUlJPUl9BTFJFQURZX0VYSVNUUworICAgICAgICAgICAgIyBYWFggVGVtcG9yYXJpbHkgcHJldmVudGluZyBidWlsZGJvdCBmYWlsdXJlcyB3aGlsZSBkZXRlcm1pbmluZworICAgICAgICAgICAgIyBYWFggdGhlIGNvcnJlY3QgbG9uZy10ZXJtIGZpeC4gU2VlIGlzc3VlIDIzMDYwCisgICAgICAgICAgICAjYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gX3dpbmFwaS5FUlJPUl9BTFJFQURZX0VYSVNUUwogCiBlbHNlOgogCkBAIC02OSw3ICs3MSwxNCBAQAogICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lKQogICAgICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChzZWxmLmZkLCkpCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmQsICd3YicsIGNsb3NlZmQ9RmFsc2UpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoYidcMCcqc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgYnMgPSAxMDI0ICogMTAyNAorICAgICAgICAgICAgICAgICAgICBpZiBzaXplID49IGJzOgorICAgICAgICAgICAgICAgICAgICAgICAgemVyb3MgPSBiJ1wwJyAqIGJzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShzaXplIC8vIGJzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHplcm9zKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHplcm9zCisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoYidcMCcgKiAoc2l6ZSAlIGJzKSkKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGYudGVsbCgpID09IHNpemUKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKHNlbGYuZmQsIHNlbGYuc2l6ZSkKIAogICAgIGRlZiByZWR1Y2VfYXJlbmEoYSk6CkBAIC0yMTYsOSArMjI1LDggQEAKICAgICAgICAgYXNzZXJ0IDAgPD0gc2l6ZSA8IHN5cy5tYXhzaXplCiAgICAgICAgIGlmIG9zLmdldHBpZCgpICE9IHNlbGYuX2xhc3RwaWQ6CiAgICAgICAgICAgICBzZWxmLl9faW5pdF9fKCkgICAgICAgICAgICAgICAgICAgICAjIHJlaW5pdGlhbGl6ZSBhZnRlciBmb3JrCi0gICAgICAgIHNlbGYuX2xvY2suYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX2ZyZWVfcGVuZGluZ19ibG9ja3MoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2ZyZWVfcGVuZGluZ19ibG9ja3MoKQogICAgICAgICAgICAgc2l6ZSA9IHNlbGYuX3JvdW5kdXAobWF4KHNpemUsMSksIHNlbGYuX2FsaWdubWVudCkKICAgICAgICAgICAgIChhcmVuYSwgc3RhcnQsIHN0b3ApID0gc2VsZi5fbWFsbG9jKHNpemUpCiAgICAgICAgICAgICBuZXdfc3RvcCA9IHN0YXJ0ICsgc2l6ZQpAQCAtMjI3LDggKzIzNSw2IEBACiAgICAgICAgICAgICBibG9jayA9IChhcmVuYSwgc3RhcnQsIG5ld19zdG9wKQogICAgICAgICAgICAgc2VsZi5fYWxsb2NhdGVkX2Jsb2Nrcy5hZGQoYmxvY2spCiAgICAgICAgICAgICByZXR1cm4gYmxvY2sKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCiAKICMKICMgQ2xhc3MgcmVwcmVzZW50aW5nIGEgY2h1bmsgb2YgYW4gbW1hcCAtLSBjYW4gYmUgaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3MKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CmluZGV4IDY2ZDQ2ZmMuLjc3NjY1NmUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQpAQCAtNjUsOCArNjUsOCBAQAogICAgICAgICAoc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkgPSBzdGF0ZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1Rva2VuKHR5cGVpZD0lciwgYWRkcmVzcz0lciwgaWQ9JXIpJyAlIFwKLSAgICAgICAgICAgICAgIChzZWxmLnR5cGVpZCwgc2VsZi5hZGRyZXNzLCBzZWxmLmlkKQorICAgICAgICByZXR1cm4gJyVzKHR5cGVpZD0lciwgYWRkcmVzcz0lciwgaWQ9JXIpJyAlIFwKKyAgICAgICAgICAgICAgIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi50eXBlaWQsIHNlbGYuYWRkcmVzcywgc2VsZi5pZCkKIAogIwogIyBGdW5jdGlvbiBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIGEgbWFuYWdlcidzIHNlcnZlciBwcm9jZXNzCkBAIC0zMDYsOCArMzA2LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybiBzb21lIGluZm8gLS0tIHVzZWZ1bCB0byBzcG90IHByb2JsZW1zIHdpdGggcmVmY291bnRpbmcKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgICAgIGtleXMgPSBsaXN0KHNlbGYuaWRfdG9fb2JqLmtleXMoKSkKICAgICAgICAgICAgIGtleXMuc29ydCgpCkBAIC0zMTcsOCArMzE2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWRlbnQsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoc2VsZi5pZF90b19vYmpbaWRlbnRdWzBdKVs6NzVdKSkKICAgICAgICAgICAgIHJldHVybiAnXG4nLmpvaW4ocmVzdWx0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKIAogICAgIGRlZiBudW1iZXJfb2Zfb2JqZWN0cyhzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0zNDMsOCArMzQwLDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIENyZWF0ZSBhIG5ldyBzaGFyZWQgb2JqZWN0IGFuZCByZXR1cm4gaXRzIGlkCiAgICAgICAgICcnJwotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGNhbGxhYmxlLCBleHBvc2VkLCBtZXRob2RfdG9fdHlwZWlkLCBwcm94eXR5cGUgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWdpc3RyeVt0eXBlaWRdCiAKQEAgLTM3NCw4ICszNzAsNiBAQAogICAgICAgICAgICAgIyBoYXMgYmVlbiBjcmVhdGVkLgogICAgICAgICAgICAgc2VsZi5pbmNyZWYoYywgaWRlbnQpCiAgICAgICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQogCiAgICAgZGVmIGdldF9tZXRob2RzKHNlbGYsIGMsIHRva2VuKToKICAgICAgICAgJycnCkBAIC0zOTIsMjIgKzM4NiwxNiBAQAogICAgICAgICBzZWxmLnNlcnZlX2NsaWVudChjKQogCiAgICAgZGVmIGluY3JlZihzZWxmLCBjLCBpZGVudCk6Ci0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKIAogICAgIGRlZiBkZWNyZWYoc2VsZiwgYywgaWRlbnQpOgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGFzc2VydCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA+PSAxCiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0sIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCiAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLm11dGV4LnJlbGVhc2UoKQogCiAjCiAjIENsYXNzIHRvIHJlcHJlc2VudCBzdGF0ZSBvZiBhIG1hbmFnZXIKQEAgLTY3MSwxNCArNjU5LDExIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW4sIHNlcmlhbGl6ZXIsIG1hbmFnZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgYXV0aGtleT1Ob25lLCBleHBvc2VkPU5vbmUsIGluY3JlZj1UcnVlKToKLSAgICAgICAgQmFzZVByb3h5Ll9tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIEJhc2VQcm94eS5fbXV0ZXg6CiAgICAgICAgICAgICB0bHNfaWRzZXQgPSBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWwuZ2V0KHRva2VuLmFkZHJlc3MsIE5vbmUpCiAgICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0bHNfaWRzZXQgPSB1dGlsLkZvcmtBd2FyZUxvY2FsKCksIFByb2Nlc3NMb2NhbFNldCgpCiAgICAgICAgICAgICAgICAgQmFzZVByb3h5Ll9hZGRyZXNzX3RvX2xvY2FsW3Rva2VuLmFkZHJlc3NdID0gdGxzX2lkc2V0Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBCYXNlUHJveHkuX211dGV4LnJlbGVhc2UoKQogCiAgICAgICAgICMgc2VsZi5fdGxzIGlzIHVzZWQgdG8gcmVjb3JkIHRoZSBjb25uZWN0aW9uIHVzZWQgYnkgdGhpcwogICAgICAgICAjIHRocmVhZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBtYW5hZ2VyIGF0IHRva2VuLmFkZHJlc3MKQEAgLTgxOCw4ICs4MDMsOCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0dmFsdWUoKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJzwlcyBvYmplY3QsIHR5cGVpZCAlciBhdCAlcz4nICUgXAotICAgICAgICAgICAgICAgKHR5cGUoc2VsZikuX19uYW1lX18sIHNlbGYuX3Rva2VuLnR5cGVpZCwgJzB4JXgnICUgaWQoc2VsZikpCisgICAgICAgIHJldHVybiAnPCVzIG9iamVjdCwgdHlwZWlkICVyIGF0ICUjeD4nICUgXAorICAgICAgICAgICAgICAgKHR5cGUoc2VsZikuX19uYW1lX18sIHNlbGYuX3Rva2VuLnR5cGVpZCwgaWQoc2VsZikpCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgJycnCkBAIC05MTYsNyArOTAxLDcgQEAKICAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKICAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKICAgICAgICAgdGVtcC5zb3J0KCkKLSAgICAgICAgcmV0dXJuICdOYW1lc3BhY2UoJXMpJyAlIHN0ci5qb2luKCcsICcsIHRlbXApCisgICAgICAgIHJldHVybiAnJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJywgJy5qb2luKHRlbXApKQogCiBjbGFzcyBWYWx1ZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0eXBlY29kZSwgdmFsdWUsIGxvY2s9VHJ1ZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKaW5kZXggZGI2ZTNlMS4uNmQyNTQ2OSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQpAQCAtODcsNyArODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxNYXliZUVuY29kaW5nRXJyb3I6ICVzPiIgJSBzdHIoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXM6ICVzPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYpCiAKIAogZGVmIHdvcmtlcihpbnF1ZXVlLCBvdXRxdWV1ZSwgaW5pdGlhbGl6ZXI9Tm9uZSwgaW5pdGFyZ3M9KCksIG1heHRhc2tzPU5vbmUsCkBAIC02NzUsOCArNjc1LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBuZXh0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGl0ZW0gPSBzZWxmLl9pdGVtcy5wb3BsZWZ0KCkKICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgpAQCAtNjg5LDggKzY4OCw2IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEVycm9yCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgICAgIHN1Y2Nlc3MsIHZhbHVlID0gaXRlbQogICAgICAgICBpZiBzdWNjZXNzOgpAQCAtNzAwLDggKzY5Nyw3IEBACiAgICAgX19uZXh0X18gPSBuZXh0ICAgICAgICAgICAgICAgICAgICAjIFhYWAogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgb2JqKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBpOgogICAgICAgICAgICAgICAgIHNlbGYuX2l0ZW1zLmFwcGVuZChvYmopCiAgICAgICAgICAgICAgICAgc2VsZi5faW5kZXggKz0gMQpAQCAtNzE1LDE4ICs3MTEsMTMgQEAKIAogICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gc2VsZi5fbGVuZ3RoOgogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIF9zZXRfbGVuZ3RoKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5fbGVuZ3RoID0gbGVuZ3RoCiAgICAgICAgICAgICBpZiBzZWxmLl9pbmRleCA9PSBzZWxmLl9sZW5ndGg6CiAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcF91bm9yZGVyZWQoKWAKQEAgLTczNSwxNSArNzI2LDEyIEBACiBjbGFzcyBJTWFwVW5vcmRlcmVkSXRlcmF0b3IoSU1hcEl0ZXJhdG9yKToKIAogICAgIGRlZiBfc2V0KHNlbGYsIGksIG9iaik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5faXRlbXMuYXBwZW5kKG9iaikKICAgICAgICAgICAgIHNlbGYuX2luZGV4ICs9IDEKICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKICAgICAgICAgICAgIGlmIHNlbGYuX2luZGV4ID09IHNlbGYuX2xlbmd0aDoKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogIwogIwpAQCAtNzY5LDEwICs3NTcsNyBAQAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2hlbHBfc3R1ZmZfZmluaXNoKGlucXVldWUsIHRhc2tfaGFuZGxlciwgc2l6ZSk6CiAgICAgICAgICMgcHV0IHNlbnRpbmVscyBhdCBoZWFkIG9mIGlucXVldWUgdG8gbWFrZSB3b3JrZXJzIGZpbmlzaAotICAgICAgICBpbnF1ZXVlLm5vdF9lbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIGlucXVldWUubm90X2VtcHR5OgogICAgICAgICAgICAgaW5xdWV1ZS5xdWV1ZS5jbGVhcigpCiAgICAgICAgICAgICBpbnF1ZXVlLnF1ZXVlLmV4dGVuZChbTm9uZV0gKiBzaXplKQogICAgICAgICAgICAgaW5xdWV1ZS5ub3RfZW1wdHkubm90aWZ5X2FsbCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpbnF1ZXVlLm5vdF9lbXB0eS5yZWxlYXNlKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9yay5weQppbmRleCAzNjdlNzJlLi5kMmViZDdjIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmsucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3JrLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgZXJybm8KIAogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTI5LDggKzI4LDYgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgZmxhZykKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzIG5vdCB5ZXQgY3JlYXRlZC4gU2VlICMxNzMxNzE3CiAgICAgICAgICAgICAgICAgICAgICMgZS5lcnJubyA9PSBlcnJuby5FQ0hJTEQgPT0gMTAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggMjkzYWQ3Ni4uNzg2YTMwMyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTgyLDE0ICs4MiwxMSBAQAogICAgICAgICBpZiBub3Qgc2VsZi5fc2VtLmFjcXVpcmUoYmxvY2ssIHRpbWVvdXQpOgogICAgICAgICAgICAgcmFpc2UgRnVsbAogCi0gICAgICAgIHNlbGYuX25vdGVtcHR5LmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fbm90ZW1wdHk6CiAgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9zdGFydF90aHJlYWQoKQogICAgICAgICAgICAgc2VsZi5fYnVmZmVyLmFwcGVuZChvYmopCiAgICAgICAgICAgICBzZWxmLl9ub3RlbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIGlmIGJsb2NrIGFuZCB0aW1lb3V0IGlzIE5vbmU6CkBAIC0yMDYsMTIgKzIwMyw5IEBACiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZmluYWxpemVfY2xvc2UoYnVmZmVyLCBub3RlbXB0eSk6CiAgICAgICAgIGRlYnVnKCd0ZWxsaW5nIHF1ZXVlIHRocmVhZCB0byBxdWl0JykKLSAgICAgICAgbm90ZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBub3RlbXB0eToKICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoX3NlbnRpbmVsKQogICAgICAgICAgICAgbm90ZW1wdHkubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG5vdGVtcHR5LnJlbGVhc2UoKQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZmVlZChidWZmZXIsIG5vdGVtcHR5LCBzZW5kX2J5dGVzLCB3cml0ZWxvY2ssIGNsb3NlLCBpZ25vcmVfZXBpcGUpOgpAQCAtMzAwLDM1ICsyOTQsMjQgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX3NlbS5hY3F1aXJlKGJsb2NrLCB0aW1lb3V0KToKICAgICAgICAgICAgIHJhaXNlIEZ1bGwKIAotICAgICAgICBzZWxmLl9ub3RlbXB0eS5hY3F1aXJlKCkKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX25vdGVtcHR5LCBzZWxmLl9jb25kOgogICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhcnRfdGhyZWFkKCkKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQob2JqKQogICAgICAgICAgICAgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuX25vdGVtcHR5Lm5vdGlmeSgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQotICAgICAgICAgICAgc2VsZi5fbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBkZWYgdGFza19kb25lKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Rhc2tfZG9uZSgpIGNhbGxlZCB0b28gbWFueSB0aW1lcycpCiAgICAgICAgICAgICBpZiBzZWxmLl91bmZpbmlzaGVkX3Rhc2tzLl9zZW1sb2NrLl9pc196ZXJvKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnlfYWxsKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgam9pbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fdW5maW5pc2hlZF90YXNrcy5fc2VtbG9jay5faXNfemVybygpOgogICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQud2FpdCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAjCiAjIFNpbXBsaWZpZWQgUXVldWUgdHlwZSAtLSByZWFsbHkganVzdCBhIGxvY2tlZCBwaXBlCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CmluZGV4IDBjMTc4MjUuLjQyNThmNTkgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CkBAIC0xODgsNiArMTg4LDEyIEBACiAgICAgICAgIHNlbGYuYWNxdWlyZSA9IHNlbGYuX2xvY2suYWNxdWlyZQogICAgICAgICBzZWxmLnJlbGVhc2UgPSBzZWxmLl9sb2NrLnJlbGVhc2UKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZW50ZXJfXygpCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fbG9jay5fX2V4aXRfXygqYXJncykKKwogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICAgcmV0dXJuIHN5bmNocm9uaXplZCwgKHNlbGYuX29iaiwgc2VsZi5fbG9jaykKQEAgLTIxMiwzMiArMjE4LDIwIEBACiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5fb2JqKQogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgotICAgICAgICBzZWxmLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9vYmpbaV0KLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYucmVsZWFzZSgpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaSwgdmFsdWUpOgotICAgICAgICBzZWxmLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZjoKICAgICAgICAgICAgIHNlbGYuX29ialtpXSA9IHZhbHVlCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAgICAgZGVmIF9fZ2V0c2xpY2VfXyhzZWxmLCBzdGFydCwgc3RvcCk6Ci0gICAgICAgIHNlbGYuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29ialtzdGFydDpzdG9wXQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKIAogICAgIGRlZiBfX3NldHNsaWNlX18oc2VsZiwgc3RhcnQsIHN0b3AsIHZhbHVlcyk6Ci0gICAgICAgIHNlbGYuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgc2VsZi5fb2JqW3N0YXJ0OnN0b3BdID0gdmFsdWVzCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAKIGNsYXNzIFN5bmNocm9uaXplZFN0cmluZyhTeW5jaHJvbml6ZWRBcnJheSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQppbmRleCBkZWExY2JkLi5kNGJkZjBlIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9zZW1sb2NrLl9nZXRfdmFsdWUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgdmFsdWUgPSAndW5rbm93bicKLSAgICAgICAgcmV0dXJuICc8U2VtYXBob3JlKHZhbHVlPSVzKT4nICUgdmFsdWUKKyAgICAgICAgcmV0dXJuICc8JXModmFsdWU9JXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHZhbHVlKQogCiAjCiAjIEJvdW5kZWQgc2VtYXBob3JlCkBAIC0xNTAsOCArMTUwLDggQEAKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fc2VtbG9jay5fZ2V0X3ZhbHVlKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHZhbHVlID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9JXMsIG1heHZhbHVlPSVzKT4nICUgXAotICAgICAgICAgICAgICAgKHZhbHVlLCBzZWxmLl9zZW1sb2NrLm1heHZhbHVlKQorICAgICAgICByZXR1cm4gJzwlcyh2YWx1ZT0lcywgbWF4dmFsdWU9JXMpPicgJSBcCisgICAgICAgICAgICAgICAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHZhbHVlLCBzZWxmLl9zZW1sb2NrLm1heHZhbHVlKQogCiAjCiAjIE5vbi1yZWN1cnNpdmUgbG9jawpAQCAtMTc2LDcgKzE3Niw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9ICdTb21lT3RoZXJQcm9jZXNzJwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgbmFtZSA9ICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxMb2NrKG93bmVyPSVzKT4nICUgbmFtZQorICAgICAgICByZXR1cm4gJzwlcyhvd25lcj0lcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSkKIAogIwogIyBSZWN1cnNpdmUgbG9jawpAQCAtMjAyLDcgKzIwMiw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSwgY291bnQgPSAnU29tZU90aGVyUHJvY2VzcycsICdub256ZXJvJwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgbmFtZSwgY291bnQgPSAndW5rbm93bicsICd1bmtub3duJwotICAgICAgICByZXR1cm4gJzxSTG9jayglcywgJXMpPicgJSAobmFtZSwgY291bnQpCisgICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgY291bnQpCiAKICMKICMgQ29uZGl0aW9uIHZhcmlhYmxlCkBAIC0yNDMsNyArMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dva2VuX2NvdW50Ll9zZW1sb2NrLl9nZXRfdmFsdWUoKSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIG51bV93YWl0ZXJzID0gJ3Vua25vd24nCi0gICAgICAgIHJldHVybiAnPENvbmRpdGlvbiglcywgJXMpPicgJSAoc2VsZi5fbG9jaywgbnVtX3dhaXRlcnMpCisgICAgICAgIHJldHVybiAnPCVzKCVzLCAlcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fbG9jaywgbnVtX3dhaXRlcnMpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgogICAgICAgICBhc3NlcnQgc2VsZi5fbG9jay5fc2VtbG9jay5faXNfbWluZSgpLCBcCkBAIC0zMzcsMzQgKzMzNywyNCBAQAogICAgICAgICBzZWxmLl9mbGFnID0gY3R4LlNlbWFwaG9yZSgwKQogCiAgICAgZGVmIGlzX3NldChzZWxmKToKLSAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuX2NvbmQ6CiAgICAgICAgICAgICBpZiBzZWxmLl9mbGFnLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZsYWcucmVsZWFzZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKIAogICAgIGRlZiBzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLl9jb25kOgogICAgICAgICAgICAgc2VsZi5fZmxhZy5hY3F1aXJlKEZhbHNlKQogICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5X2FsbCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCiAgICAgZGVmIGNsZWFyKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5fY29uZDoKICAgICAgICAgICAgIGlmIHNlbGYuX2ZsYWcuYWNxdWlyZShGYWxzZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fZmxhZy5yZWxlYXNlKCkKICAgICAgICAgICAgIGVsc2U6CkBAIC0zNzQsOCArMzY0LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9mbGFnLnJlbGVhc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCiAKICMKICMgQmFycmllcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CmluZGV4IDBiNjk1ZTQuLmVhNTQ0M2QgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKQEAgLTIxMiwxMCArMjEyLDExIEBACiAgICAgICAgICAgICBvYmogPSBOb25lCiAKICAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gJzxGaW5hbGl6ZSBvYmplY3QsIGRlYWQ+JworICAgICAgICAgICAgcmV0dXJuICc8JXMgb2JqZWN0LCBkZWFkPicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogCi0gICAgICAgIHggPSAnPEZpbmFsaXplIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgXAotICAgICAgICAgICAgZ2V0YXR0cihzZWxmLl9jYWxsYmFjaywgJ19fbmFtZV9fJywgc2VsZi5fY2FsbGJhY2spCisgICAgICAgIHggPSAnPCVzIG9iamVjdCwgY2FsbGJhY2s9JXMnICUgKAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIGdldGF0dHIoc2VsZi5fY2FsbGJhY2ssICdfX25hbWVfXycsIHNlbGYuX2NhbGxiYWNrKSkKICAgICAgICAgaWYgc2VsZi5fYXJnczoKICAgICAgICAgICAgIHggKz0gJywgYXJncz0nICsgc3RyKHNlbGYuX2FyZ3MpCiAgICAgICAgIGlmIHNlbGYuX2t3YXJnczoKQEAgLTMyNyw2ICszMjgsMTMgQEAKICAgICAgICAgc2VsZi5hY3F1aXJlID0gc2VsZi5fbG9jay5hY3F1aXJlCiAgICAgICAgIHNlbGYucmVsZWFzZSA9IHNlbGYuX2xvY2sucmVsZWFzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2suX19lbnRlcl9fKCkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrLl9fZXhpdF9fKCphcmdzKQorCisKIGNsYXNzIEZvcmtBd2FyZUxvY2FsKHRocmVhZGluZy5sb2NhbCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICByZWdpc3Rlcl9hZnRlcl9mb3JrKHNlbGYsIGxhbWJkYSBvYmogOiBvYmouX19kaWN0X18uY2xlYXIoKSkKZGlmZiAtLWdpdCBhL0xpYi9udHBhdGgucHkgYi9MaWIvbnRwYXRoLnB5CmluZGV4IDk5Mjk3MGEuLjljYzVjYTcgMTAwNjQ0Ci0tLSBhL0xpYi9udHBhdGgucHkKKysrIGIvTGliL250cGF0aC5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICAgICAgICAiaXNtb3VudCIsICJleHBhbmR1c2VyIiwiZXhwYW5kdmFycyIsIm5vcm1wYXRoIiwiYWJzcGF0aCIsCiAgICAgICAgICAgICJzcGxpdHVuYyIsImN1cmRpciIsInBhcmRpciIsInNlcCIsInBhdGhzZXAiLCJkZWZwYXRoIiwiYWx0c2VwIiwKICAgICAgICAgICAgImV4dHNlcCIsImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIiwicmVscGF0aCIsCi0gICAgICAgICAgICJzYW1lZmlsZSIsICJzYW1lb3BlbmZpbGUiLCAic2FtZXN0YXQiLF0KKyAgICAgICAgICAgInNhbWVmaWxlIiwgInNhbWVvcGVuZmlsZSIsICJzYW1lc3RhdCIsICJjb21tb25wYXRoIl0KIAogIyBzdHJpbmdzIHJlcHJlc2VudGluZyB2YXJpb3VzIHBhdGgtcmVsYXRlZCBiaXRzIGFuZCBwaWVjZXMKICMgVGhlc2UgYXJlIHByaW1hcmlseSBmb3IgZXhwb3J0OyBpbnRlcm5hbGx5LCB0aGV5IGFyZSBoYXJkY29kZWQuCkBAIC0zMiw0OCArMzIsMTIgQEAKICAgICBkZWZwYXRoID0gJ1xcV2luZG93cycKIGRldm51bGwgPSAnbnVsJwogCi1kZWYgX2dldF9lbXB0eShwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnJwotCi1kZWYgX2dldF9zZXAocGF0aCk6Ci0gICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHJldHVybiBiJ1xcJwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnXFwnCi0KLWRlZiBfZ2V0X2FsdHNlcChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInLycKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJy8nCi0KIGRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICByZXR1cm4gYidcXC8nCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICdcXC8nCiAKLWRlZiBfZ2V0X2RvdChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIGInLicKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJy4nCi0KLWRlZiBfZ2V0X2NvbG9uKHBhdGgpOgotICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICByZXR1cm4gYic6JwotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAnOicKLQotZGVmIF9nZXRfc3BlY2lhbChwYXRoKToKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIChiJ1xcXFwuXFwnLCBiJ1xcXFw/XFwnKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAoJ1xcXFwuXFwnLCAnXFxcXD9cXCcpCi0KICMgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUgYW5kIG1hcCBzbGFzaGVzIHRvIGJhY2tzbGFzaGVzLgogIyBPdGhlciBub3JtYWxpemF0aW9ucyAoc3VjaCBhcyBvcHRpbWl6aW5nICcuLi8nIGF3YXkpIGFyZSBub3QgZG9uZQogIyAodGhpcyBpcyBkb25lIGJ5IG5vcm1wYXRoKS4KQEAgLTgyLDEwICs0NiwxNiBAQAogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgogCiAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLiIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQotICAgIHJldHVybiBzLnJlcGxhY2UoX2dldF9hbHRzZXAocyksIF9nZXRfc2VwKHMpKS5sb3dlcigpCisgICAgdHJ5OgorICAgICAgICBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKToKKyAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoYicvJywgYidcXCcpLmxvd2VyKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoJy8nLCAnXFwnKS5sb3dlcigpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBzdHIpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJXIiICUgcy5fX2NsYXNzX18uX19uYW1lX18pIGZyb20gTm9uZQorICAgICAgICByYWlzZQogCiAKICMgUmV0dXJuIHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlLgpAQCAtOTcsNDAgKzY3LDUxIEBACiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgogICAgIHMgPSBzcGxpdGRyaXZlKHMpWzFdCi0gICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbOjFdIGluIF9nZXRfYm90aHNlcHMocykKKyAgICByZXR1cm4gbGVuKHMpID4gMCBhbmQgc1swXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCiAKIAogIyBKb2luIHR3byAob3IgbW9yZSkgcGF0aHMuCiBkZWYgam9pbihwYXRoLCAqcGF0aHMpOgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCi0gICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKLSAgICBjb2xvbiA9IF9nZXRfY29sb24ocGF0aCkKLSAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgIGZvciBwIGluIHBhdGhzOgotICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCi0gICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6Ci0gICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIGFic29sdXRlCi0gICAgICAgICAgICBpZiBwX2RyaXZlIG9yIG5vdCByZXN1bHRfZHJpdmU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQotICAgICAgICAgICAgcmVzdWx0X3BhdGggPSBwX3BhdGgKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgcF9kcml2ZSBhbmQgcF9kcml2ZSAhPSByZXN1bHRfZHJpdmU6Ci0gICAgICAgICAgICBpZiBwX2RyaXZlLmxvd2VyKCkgIT0gcmVzdWx0X2RyaXZlLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgIyBEaWZmZXJlbnQgZHJpdmVzID0+IGlnbm9yZSB0aGUgZmlyc3QgcGF0aCBlbnRpcmVseQotICAgICAgICAgICAgICAgIHJlc3VsdF9kcml2ZSA9IHBfZHJpdmUKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgc2VwcyA9IGInXFwvJworICAgICAgICBjb2xvbiA9IGInOicKKyAgICBlbHNlOgorICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgIHNlcHMgPSAnXFwvJworICAgICAgICBjb2xvbiA9ICc6JworICAgIHRyeToKKyAgICAgICAgaWYgbm90IHBhdGhzOgorICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgorICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQorICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgICAgIHBfZHJpdmUsIHBfcGF0aCA9IHNwbGl0ZHJpdmUocCkKKyAgICAgICAgICAgIGlmIHBfcGF0aCBhbmQgcF9wYXRoWzBdIGluIHNlcHM6CisgICAgICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyBhYnNvbHV0ZQorICAgICAgICAgICAgICAgIGlmIHBfZHJpdmUgb3Igbm90IHJlc3VsdF9kcml2ZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQogICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICMgU2FtZSBkcml2ZSBpbiBkaWZmZXJlbnQgY2FzZQotICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQotICAgICAgICAjIFNlY29uZCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdAotICAgICAgICBpZiByZXN1bHRfcGF0aCBhbmQgcmVzdWx0X3BhdGhbLTFdIG5vdCBpbiBzZXBzOgotICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHNlcAotICAgICAgICByZXN1bHRfcGF0aCA9IHJlc3VsdF9wYXRoICsgcF9wYXRoCi0gICAgIyMgYWRkIHNlcGFyYXRvciBiZXR3ZWVuIFVOQyBhbmQgbm9uLWFic29sdXRlIHBhdGgKLSAgICBpZiAocmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWzBdIG5vdCBpbiBzZXBzIGFuZAotICAgICAgICByZXN1bHRfZHJpdmUgYW5kIHJlc3VsdF9kcml2ZVstMTpdICE9IGNvbG9uKToKLSAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHNlcCArIHJlc3VsdF9wYXRoCi0gICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHJlc3VsdF9wYXRoCisgICAgICAgICAgICBlbGlmIHBfZHJpdmUgYW5kIHBfZHJpdmUgIT0gcmVzdWx0X2RyaXZlOgorICAgICAgICAgICAgICAgIGlmIHBfZHJpdmUubG93ZXIoKSAhPSByZXN1bHRfZHJpdmUubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgIyBEaWZmZXJlbnQgZHJpdmVzID0+IGlnbm9yZSB0aGUgZmlyc3QgcGF0aCBlbnRpcmVseQorICAgICAgICAgICAgICAgICAgICByZXN1bHRfZHJpdmUgPSBwX2RyaXZlCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9wYXRoID0gcF9wYXRoCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIyBTYW1lIGRyaXZlIGluIGRpZmZlcmVudCBjYXNlCisgICAgICAgICAgICAgICAgcmVzdWx0X2RyaXZlID0gcF9kcml2ZQorICAgICAgICAgICAgIyBTZWNvbmQgcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgZmlyc3QKKyAgICAgICAgICAgIGlmIHJlc3VsdF9wYXRoIGFuZCByZXN1bHRfcGF0aFstMV0gbm90IGluIHNlcHM6CisgICAgICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHNlcAorICAgICAgICAgICAgcmVzdWx0X3BhdGggPSByZXN1bHRfcGF0aCArIHBfcGF0aAorICAgICAgICAjIyBhZGQgc2VwYXJhdG9yIGJldHdlZW4gVU5DIGFuZCBub24tYWJzb2x1dGUgcGF0aAorICAgICAgICBpZiAocmVzdWx0X3BhdGggYW5kIHJlc3VsdF9wYXRoWzBdIG5vdCBpbiBzZXBzIGFuZAorICAgICAgICAgICAgcmVzdWx0X2RyaXZlIGFuZCByZXN1bHRfZHJpdmVbLTE6XSAhPSBjb2xvbik6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0X2RyaXZlICsgc2VwICsgcmVzdWx0X3BhdGgKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9kcml2ZSArIHJlc3VsdF9wYXRoCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBCeXRlc1dhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdqb2luJywgcGF0aCwgKnBhdGhzKQorICAgICAgICByYWlzZQogCiAKICMgU3BsaXQgYSBwYXRoIGluIGEgZHJpdmUgc3BlY2lmaWNhdGlvbiAoYSBkcml2ZSBsZXR0ZXIgZm9sbG93ZWQgYnkgYQpAQCAtMTU1LDEwICsxMzYsMTYgQEAKICAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgogCiAgICAgIiIiCi0gICAgZW1wdHkgPSBfZ2V0X2VtcHR5KHApCi0gICAgaWYgbGVuKHApID4gMToKLSAgICAgICAgc2VwID0gX2dldF9zZXAocCkKLSAgICAgICAgbm9ybXAgPSBwLnJlcGxhY2UoX2dldF9hbHRzZXAocCksIHNlcCkKKyAgICBpZiBsZW4ocCkgPj0gMjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CisgICAgICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICAgICAgYWx0c2VwID0gYicvJworICAgICAgICAgICAgY29sb24gPSBiJzonCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZXAgPSAnXFwnCisgICAgICAgICAgICBhbHRzZXAgPSAnLycKKyAgICAgICAgICAgIGNvbG9uID0gJzonCisgICAgICAgIG5vcm1wID0gcC5yZXBsYWNlKGFsdHNlcCwgc2VwKQogICAgICAgICBpZiAobm9ybXBbMDoyXSA9PSBzZXAqMikgYW5kIChub3JtcFsyOjNdICE9IHNlcCk6CiAgICAgICAgICAgICAjIGlzIGEgVU5DIHBhdGg6CiAgICAgICAgICAgICAjIHZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2IGRyaXZlIGxldHRlciBvciBVTkMgcGF0aApAQCAtMTY2LDE4ICsxNTMsMTggQEAKICAgICAgICAgICAgICMgICAgICAgICAgIGRpcmVjdG9yeSBeXl5eXl5eXl5eXl5eXl4KICAgICAgICAgICAgIGluZGV4ID0gbm9ybXAuZmluZChzZXAsIDIpCiAgICAgICAgICAgICBpZiBpbmRleCA9PSAtMToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHksIHAKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6MF0sIHAKICAgICAgICAgICAgIGluZGV4MiA9IG5vcm1wLmZpbmQoc2VwLCBpbmRleCArIDEpCiAgICAgICAgICAgICAjIGEgVU5DIHBhdGggY2FuJ3QgaGF2ZSB0d28gc2xhc2hlcyBpbiBhIHJvdwogICAgICAgICAgICAgIyAoYWZ0ZXIgdGhlIGluaXRpYWwgdHdvKQogICAgICAgICAgICAgaWYgaW5kZXgyID09IGluZGV4ICsgMToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHksIHAKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6MF0sIHAKICAgICAgICAgICAgIGlmIGluZGV4MiA9PSAtMToKICAgICAgICAgICAgICAgICBpbmRleDIgPSBsZW4ocCkKICAgICAgICAgICAgIHJldHVybiBwWzppbmRleDJdLCBwW2luZGV4MjpdCi0gICAgICAgIGlmIG5vcm1wWzE6Ml0gPT0gX2dldF9jb2xvbihwKToKKyAgICAgICAgaWYgbm9ybXBbMToyXSA9PSBjb2xvbjoKICAgICAgICAgICAgIHJldHVybiBwWzoyXSwgcFsyOl0KLSAgICByZXR1cm4gZW1wdHksIHAKKyAgICByZXR1cm4gcFs6MF0sIHAKIAogCiAjIFBhcnNlIFVOQyBwYXRocwpAQCAtMjIxLDEwICsyMDgsNyBAQAogICAgICAgICBpIC09IDEKICAgICBoZWFkLCB0YWlsID0gcFs6aV0sIHBbaTpdICAjIG5vdyB0YWlsIGhhcyBubyBzbGFzaGVzCiAgICAgIyByZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIGhlYWQsIHVubGVzcyBpdCdzIGFsbCBzbGFzaGVzCi0gICAgaGVhZDIgPSBoZWFkCi0gICAgd2hpbGUgaGVhZDIgYW5kIGhlYWQyWy0xOl0gaW4gc2VwczoKLSAgICAgICAgaGVhZDIgPSBoZWFkMls6LTFdCi0gICAgaGVhZCA9IGhlYWQyIG9yIGhlYWQKKyAgICBoZWFkID0gaGVhZC5yc3RyaXAoc2Vwcykgb3IgaGVhZAogICAgIHJldHVybiBkICsgaGVhZCwgdGFpbAogCiAKQEAgLTIzNCw4ICsyMTgsMTAgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKLSAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIF9nZXRfc2VwKHApLCBfZ2V0X2FsdHNlcChwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfZG90KHApKQorICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgorICAgICAgICByZXR1cm4gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0KHAsIGInXFwnLCBiJy8nLCBiJy4nKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBnZW5lcmljcGF0aC5fc3BsaXRleHQocCwgJ1xcJywgJy8nLCAnLicpCiBzcGxpdGV4dC5fX2RvY19fID0gZ2VuZXJpY3BhdGguX3NwbGl0ZXh0Ll9fZG9jX18KIAogCkBAIC0zNDMsNyArMzI5LDcgQEAKICAgICAgICAgdXNlcmhvbWUgPSBqb2luKGRyaXZlLCBvcy5lbnZpcm9uWydIT01FUEFUSCddKQogCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgIHVzZXJob21lID0gdXNlcmhvbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKKyAgICAgICAgdXNlcmhvbWUgPSBvcy5mc2VuY29kZSh1c2VyaG9tZSkKIAogICAgIGlmIGkgIT0gMTogI351c2VyCiAgICAgICAgIHVzZXJob21lID0gam9pbihkaXJuYW1lKHVzZXJob21lKSwgcGF0aFsxOmldKQpAQCAtMzY5LDEzICszNTUsMTQgQEAKIAogICAgIFVua25vd24gdmFyaWFibGVzIGFyZSBsZWZ0IHVuY2hhbmdlZC4iIiIKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgaWYgb3JkKCckJykgbm90IGluIHBhdGggYW5kIG9yZCgnJScpIG5vdCBpbiBwYXRoOgorICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoIGFuZCBiJyUnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgaW1wb3J0IHN0cmluZwogICAgICAgICB2YXJjaGFycyA9IGJ5dGVzKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfLScsICdhc2NpaScpCiAgICAgICAgIHF1b3RlID0gYidcJycKICAgICAgICAgcGVyY2VudCA9IGInJScKICAgICAgICAgYnJhY2UgPSBiJ3snCisgICAgICAgIHJicmFjZSA9IGInfScKICAgICAgICAgZG9sbGFyID0gYickJwogICAgICAgICBlbnZpcm9uID0gZ2V0YXR0cihvcywgJ2Vudmlyb25iJywgTm9uZSkKICAgICBlbHNlOgpAQCAtMzg2LDYgKzM3Myw3IEBACiAgICAgICAgIHF1b3RlID0gJ1wnJwogICAgICAgICBwZXJjZW50ID0gJyUnCiAgICAgICAgIGJyYWNlID0gJ3snCisgICAgICAgIHJicmFjZSA9ICd9JwogICAgICAgICBkb2xsYXIgPSAnJCcKICAgICAgICAgZW52aXJvbiA9IG9zLmVudmlyb24KICAgICByZXMgPSBwYXRoWzowXQpAQCAtNDMyLDE1ICs0MjAsOSBAQAogICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoW2luZGV4KzI6XQogICAgICAgICAgICAgICAgIHBhdGhsZW4gPSBsZW4ocGF0aCkKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXRoLmluZGV4KGInfScpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgoJ30nKQorICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHBhdGguaW5kZXgocmJyYWNlKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBiJyR7JyArIHBhdGgKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAnJHsnICsgcGF0aAorICAgICAgICAgICAgICAgICAgICByZXMgKz0gZG9sbGFyICsgYnJhY2UgKyBwYXRoCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcGF0aGxlbiAtIDEKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzppbmRleF0KQEAgLTQ1MCwxMCArNDMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBlbnZpcm9uW3Zhcl0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBiJyR7JyArIHZhciArIGInfScKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnJHsnICsgdmFyICsgJ30nCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGRvbGxhciArIGJyYWNlICsgdmFyICsgcmJyYWNlCiAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB2YWx1ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB2YXIgPSBwYXRoWzowXQpAQCAtNDg1LDE2ICs0NjQsMjUgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgotICAgIHNlcCA9IF9nZXRfc2VwKHBhdGgpCi0gICAgZG90ZG90ID0gX2dldF9kb3QocGF0aCkgKiAyCi0gICAgc3BlY2lhbF9wcmVmaXhlcyA9IF9nZXRfc3BlY2lhbChwYXRoKQorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICBhbHRzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKKyAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICAgICAgc3BlY2lhbF9wcmVmaXhlcyA9IChiJ1xcXFwuXFwnLCBiJ1xcXFw/XFwnKQorICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworICAgICAgICBwYXJkaXIgPSAnLi4nCisgICAgICAgIHNwZWNpYWxfcHJlZml4ZXMgPSAoJ1xcXFwuXFwnLCAnXFxcXD9cXCcpCiAgICAgaWYgcGF0aC5zdGFydHN3aXRoKHNwZWNpYWxfcHJlZml4ZXMpOgogICAgICAgICAjIGluIHRoZSBjYXNlIG9mIHBhdGhzIHdpdGggdGhlc2UgcHJlZml4ZXM6CiAgICAgICAgICMgXFwuXCAtPiBkZXZpY2UgbmFtZXMKICAgICAgICAgIyBcXD9cIC0+IGxpdGVyYWwgcGF0aHMKICAgICAgICAgIyBkbyBub3QgZG8gYW55IG5vcm1hbGl6YXRpb24sIGJ1dCByZXR1cm4gdGhlIHBhdGggdW5jaGFuZ2VkCiAgICAgICAgIHJldHVybiBwYXRoCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZShfZ2V0X2FsdHNlcChwYXRoKSwgc2VwKQorICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoYWx0c2VwLCBzZXApCiAgICAgcHJlZml4LCBwYXRoID0gc3BsaXRkcml2ZShwYXRoKQogCiAgICAgIyBjb2xsYXBzZSBpbml0aWFsIGJhY2tzbGFzaGVzCkBAIC01MDUsMTMgKzQ5MywxMyBAQAogICAgIGNvbXBzID0gcGF0aC5zcGxpdChzZXApCiAgICAgaSA9IDAKICAgICB3aGlsZSBpIDwgbGVuKGNvbXBzKToKLSAgICAgICAgaWYgbm90IGNvbXBzW2ldIG9yIGNvbXBzW2ldID09IF9nZXRfZG90KHBhdGgpOgorICAgICAgICBpZiBub3QgY29tcHNbaV0gb3IgY29tcHNbaV0gPT0gY3VyZGlyOgogICAgICAgICAgICAgZGVsIGNvbXBzW2ldCi0gICAgICAgIGVsaWYgY29tcHNbaV0gPT0gZG90ZG90OgotICAgICAgICAgICAgaWYgaSA+IDAgYW5kIGNvbXBzW2ktMV0gIT0gZG90ZG90OgorICAgICAgICBlbGlmIGNvbXBzW2ldID09IHBhcmRpcjoKKyAgICAgICAgICAgIGlmIGkgPiAwIGFuZCBjb21wc1tpLTFdICE9IHBhcmRpcjoKICAgICAgICAgICAgICAgICBkZWwgY29tcHNbaS0xOmkrMV0KICAgICAgICAgICAgICAgICBpIC09IDEKLSAgICAgICAgICAgIGVsaWYgaSA9PSAwIGFuZCBwcmVmaXguZW5kc3dpdGgoX2dldF9zZXAocGF0aCkpOgorICAgICAgICAgICAgZWxpZiBpID09IDAgYW5kIHByZWZpeC5lbmRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgIGRlbCBjb21wc1tpXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpICs9IDEKQEAgLTUxOSw3ICs1MDcsNyBAQAogICAgICAgICAgICAgaSArPSAxCiAgICAgIyBJZiB0aGUgcGF0aCBpcyBub3cgZW1wdHksIHN1YnN0aXR1dGUgJy4nCiAgICAgaWYgbm90IHByZWZpeCBhbmQgbm90IGNvbXBzOgotICAgICAgICBjb21wcy5hcHBlbmQoX2dldF9kb3QocGF0aCkpCisgICAgICAgIGNvbXBzLmFwcGVuZChjdXJkaXIpCiAgICAgcmV0dXJuIHByZWZpeCArIHNlcC5qb2luKGNvbXBzKQogCiAKQEAgLTU1OSw0MiArNTQ3LDEwOSBAQAogc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgPSAoaGFzYXR0cihzeXMsICJnZXR3aW5kb3dzdmVyc2lvbiIpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbM10gPj0gMikKIAotZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Y3VyZGlyKToKK2RlZiByZWxwYXRoKHBhdGgsIHN0YXJ0PU5vbmUpOgogICAgICIiIlJldHVybiBhIHJlbGF0aXZlIHZlcnNpb24gb2YgYSBwYXRoIiIiCi0gICAgc2VwID0gX2dldF9zZXAocGF0aCkKKyAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKKyAgICAgICAgc2VwID0gYidcXCcKKyAgICAgICAgY3VyZGlyID0gYicuJworICAgICAgICBwYXJkaXIgPSBiJy4uJworICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgY3VyZGlyID0gJy4nCisgICAgICAgIHBhcmRpciA9ICcuLicKIAotICAgIGlmIHN0YXJ0IGlzIGN1cmRpcjoKLSAgICAgICAgc3RhcnQgPSBfZ2V0X2RvdChwYXRoKQorICAgIGlmIHN0YXJ0IGlzIE5vbmU6CisgICAgICAgIHN0YXJ0ID0gY3VyZGlyCiAKICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQogCi0gICAgc3RhcnRfYWJzID0gYWJzcGF0aChub3JtcGF0aChzdGFydCkpCi0gICAgcGF0aF9hYnMgPSBhYnNwYXRoKG5vcm1wYXRoKHBhdGgpKQotICAgIHN0YXJ0X2RyaXZlLCBzdGFydF9yZXN0ID0gc3BsaXRkcml2ZShzdGFydF9hYnMpCi0gICAgcGF0aF9kcml2ZSwgcGF0aF9yZXN0ID0gc3BsaXRkcml2ZShwYXRoX2FicykKLSAgICBpZiBub3JtY2FzZShzdGFydF9kcml2ZSkgIT0gbm9ybWNhc2UocGF0aF9kcml2ZSk6Ci0gICAgICAgIGVycm9yID0gInBhdGggaXMgb24gbW91bnQgJ3swfScsIHN0YXJ0IG9uIG1vdW50ICd7MX0nIi5mb3JtYXQoCi0gICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJvcikKKyAgICB0cnk6CisgICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQorICAgICAgICBwYXRoX2FicyA9IGFic3BhdGgobm9ybXBhdGgocGF0aCkpCisgICAgICAgIHN0YXJ0X2RyaXZlLCBzdGFydF9yZXN0ID0gc3BsaXRkcml2ZShzdGFydF9hYnMpCisgICAgICAgIHBhdGhfZHJpdmUsIHBhdGhfcmVzdCA9IHNwbGl0ZHJpdmUocGF0aF9hYnMpCisgICAgICAgIGlmIG5vcm1jYXNlKHN0YXJ0X2RyaXZlKSAhPSBub3JtY2FzZShwYXRoX2RyaXZlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggaXMgb24gbW91bnQgJXIsIHN0YXJ0IG9uIG1vdW50ICVyIiAlICgKKyAgICAgICAgICAgICAgICBwYXRoX2RyaXZlLCBzdGFydF9kcml2ZSkpCiAKLSAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gc3RhcnRfcmVzdC5zcGxpdChzZXApIGlmIHhdCi0gICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gcGF0aF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KLSAgICAjIFdvcmsgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaWxlcGF0aCBpcyBzaGFyZWQgYnkgc3RhcnQgYW5kIHBhdGguCi0gICAgaSA9IDAKLSAgICBmb3IgZTEsIGUyIGluIHppcChzdGFydF9saXN0LCBwYXRoX2xpc3QpOgotICAgICAgICBpZiBub3JtY2FzZShlMSkgIT0gbm9ybWNhc2UoZTIpOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaSArPSAxCisgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBzdGFydF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gcGF0aF9yZXN0LnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgIyBXb3JrIG91dCBob3cgbXVjaCBvZiB0aGUgZmlsZXBhdGggaXMgc2hhcmVkIGJ5IHN0YXJ0IGFuZCBwYXRoLgorICAgICAgICBpID0gMAorICAgICAgICBmb3IgZTEsIGUyIGluIHppcChzdGFydF9saXN0LCBwYXRoX2xpc3QpOgorICAgICAgICAgICAgaWYgbm9ybWNhc2UoZTEpICE9IG5vcm1jYXNlKGUyKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaSArPSAxCiAKLSAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKLSAgICAgICAgcGFyZGlyID0gYicuLicKKyAgICAgICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCisgICAgICAgIGlmIG5vdCByZWxfbGlzdDoKKyAgICAgICAgICAgIHJldHVybiBjdXJkaXIKKyAgICAgICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nLCBEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdyZWxwYXRoJywgcGF0aCwgc3RhcnQpCisgICAgICAgIHJhaXNlCisKKworIyBSZXR1cm4gdGhlIGxvbmdlc3QgY29tbW9uIHN1Yi1wYXRoIG9mIHRoZSBzZXF1ZW5jZSBvZiBwYXRocyBnaXZlbiBhcyBpbnB1dC4KKyMgVGhlIGZ1bmN0aW9uIGlzIGNhc2UtaW5zZW5zaXRpdmUgYW5kICdzZXBhcmF0b3ItaW5zZW5zaXRpdmUnLCBpLmUuIGlmIHRoZQorIyBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gcGF0aHMgaXMgdGhlIHVzZSBvZiAnXCcgdmVyc3VzICcvJyBhcyBzZXBhcmF0b3IsCisjIHRoZXkgYXJlIGRlZW1lZCB0byBiZSBlcXVhbC4KKyMKKyMgSG93ZXZlciwgdGhlIHJldHVybmVkIHBhdGggd2lsbCBoYXZlIHRoZSBzdGFuZGFyZCAnXCcgc2VwYXJhdG9yIChldmVuIGlmIHRoZQorIyBnaXZlbiBwYXRocyBoYWQgdGhlIGFsdGVybmF0aXZlICcvJyBzZXBhcmF0b3IpIGFuZCB3aWxsIGhhdmUgdGhlIGNhc2Ugb2YgdGhlCisjIGZpcnN0IHBhdGggZ2l2ZW4gaW4gdGhlIHNlcXVlbmNlLiBBZGRpdGlvbmFsbHksIGFueSB0cmFpbGluZyBzZXBhcmF0b3IgaXMKKyMgc3RyaXBwZWQgZnJvbSB0aGUgcmV0dXJuZWQgcGF0aC4KKworZGVmIGNvbW1vbnBhdGgocGF0aHMpOgorICAgICIiIkdpdmVuIGEgc2VxdWVuY2Ugb2YgcGF0aCBuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gc3ViLXBhdGguIiIiCisKKyAgICBpZiBub3QgcGF0aHM6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQorCisgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgorICAgICAgICBzZXAgPSBiJ1xcJworICAgICAgICBhbHRzZXAgPSBiJy8nCisgICAgICAgIGN1cmRpciA9IGInLicKICAgICBlbHNlOgotICAgICAgICBwYXJkaXIgPSAnLi4nCi0gICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCi0gICAgaWYgbm90IHJlbF9saXN0OgotICAgICAgICByZXR1cm4gX2dldF9kb3QocGF0aCkKLSAgICByZXR1cm4gam9pbigqcmVsX2xpc3QpCisgICAgICAgIHNlcCA9ICdcXCcKKyAgICAgICAgYWx0c2VwID0gJy8nCisgICAgICAgIGN1cmRpciA9ICcuJworCisgICAgdHJ5OgorICAgICAgICBkcml2ZXNwbGl0cyA9IFtzcGxpdGRyaXZlKHAucmVwbGFjZShhbHRzZXAsIHNlcCkubG93ZXIoKSkgZm9yIHAgaW4gcGF0aHNdCisgICAgICAgIHNwbGl0X3BhdGhzID0gW3Auc3BsaXQoc2VwKSBmb3IgZCwgcCBpbiBkcml2ZXNwbGl0c10KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpc2FicywgPSBzZXQocFs6MV0gPT0gc2VwIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IG1peCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgcGF0aHMiKSBmcm9tIE5vbmUKKworICAgICAgICAjIENoZWNrIHRoYXQgYWxsIGRyaXZlIGxldHRlcnMgb3IgVU5DIHBhdGhzIG1hdGNoLiBUaGUgY2hlY2sgaXMgbWFkZSBvbmx5CisgICAgICAgICMgbm93IG90aGVyd2lzZSB0eXBlIGVycm9ycyBmb3IgbWl4aW5nIHN0cmluZ3MgYW5kIGJ5dGVzIHdvdWxkIG5vdCBiZQorICAgICAgICAjIGNhdWdodC4KKyAgICAgICAgaWYgbGVuKHNldChkIGZvciBkLCBwIGluIGRyaXZlc3BsaXRzKSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBhdGhzIGRvbid0IGhhdmUgdGhlIHNhbWUgZHJpdmUiKQorCisgICAgICAgIGRyaXZlLCBwYXRoID0gc3BsaXRkcml2ZShwYXRoc1swXS5yZXBsYWNlKGFsdHNlcCwgc2VwKSkKKyAgICAgICAgY29tbW9uID0gcGF0aC5zcGxpdChzZXApCisgICAgICAgIGNvbW1vbiA9IFtjIGZvciBjIGluIGNvbW1vbiBpZiBjIGFuZCBjICE9IGN1cmRpcl0KKworICAgICAgICBzcGxpdF9wYXRocyA9IFtbYyBmb3IgYyBpbiBzIGlmIGMgYW5kIGMgIT0gY3VyZGlyXSBmb3IgcyBpbiBzcGxpdF9wYXRoc10KKyAgICAgICAgczEgPSBtaW4oc3BsaXRfcGF0aHMpCisgICAgICAgIHMyID0gbWF4KHNwbGl0X3BhdGhzKQorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoczEpOgorICAgICAgICAgICAgaWYgYyAhPSBzMltpXToKKyAgICAgICAgICAgICAgICBjb21tb24gPSBjb21tb25bOmldCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1vbiA9IGNvbW1vbls6bGVuKHMxKV0KKworICAgICAgICBwcmVmaXggPSBkcml2ZSArIHNlcCBpZiBpc2FicyBlbHNlIGRyaXZlCisgICAgICAgIHJldHVybiBwcmVmaXggKyBzZXAuam9pbihjb21tb24pCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgZ2VuZXJpY3BhdGguX2NoZWNrX2FyZ190eXBlcygnY29tbW9ucGF0aCcsICpwYXRocykKKyAgICAgICAgcmFpc2UKIAogCiAjIGRldGVybWluZSBpZiB0d28gZmlsZXMgYXJlIGluIGZhY3QgdGhlIHNhbWUgZmlsZQpkaWZmIC0tZ2l0IGEvTGliL29wY29kZS5weSBiL0xpYi9vcGNvZGUucHkKaW5kZXggMGJkMWVlNi4uNGM4MjZhNyAxMDA2NDQKLS0tIGEvTGliL29wY29kZS5weQorKysgYi9MaWIvb3Bjb2RlLnB5CkBAIC03MCw2ICs3MCw5IEBACiAKIGRlZl9vcCgnVU5BUllfSU5WRVJUJywgMTUpCiAKK2RlZl9vcCgnQklOQVJZX01BVFJJWF9NVUxUSVBMWScsIDE2KQorZGVmX29wKCdJTlBMQUNFX01BVFJJWF9NVUxUSVBMWScsIDE3KQorCiBkZWZfb3AoJ0JJTkFSWV9QT1dFUicsIDE5KQogZGVmX29wKCdCSU5BUllfTVVMVElQTFknLCAyMCkKIApAQCAtODIsNyArODUsMTAgQEAKIGRlZl9vcCgnSU5QTEFDRV9GTE9PUl9ESVZJREUnLCAyOCkKIGRlZl9vcCgnSU5QTEFDRV9UUlVFX0RJVklERScsIDI5KQogCi1kZWZfb3AoJ1NUT1JFX01BUCcsIDU0KQorZGVmX29wKCdHRVRfQUlURVInLCA1MCkKK2RlZl9vcCgnR0VUX0FORVhUJywgNTEpCitkZWZfb3AoJ0JFRk9SRV9BU1lOQ19XSVRIJywgNTIpCisKIGRlZl9vcCgnSU5QTEFDRV9BREQnLCA1NSkKIGRlZl9vcCgnSU5QTEFDRV9TVUJUUkFDVCcsIDU2KQogZGVmX29wKCdJTlBMQUNFX01VTFRJUExZJywgNTcpCkBAIC05NywxMCArMTAzLDEyIEBACiBkZWZfb3AoJ0JJTkFSWV9PUicsIDY2KQogZGVmX29wKCdJTlBMQUNFX1BPV0VSJywgNjcpCiBkZWZfb3AoJ0dFVF9JVEVSJywgNjgpCitkZWZfb3AoJ0dFVF9ZSUVMRF9GUk9NX0lURVInLCA2OSkKIAogZGVmX29wKCdQUklOVF9FWFBSJywgNzApCiBkZWZfb3AoJ0xPQURfQlVJTERfQ0xBU1MnLCA3MSkKIGRlZl9vcCgnWUlFTERfRlJPTScsIDcyKQorZGVmX29wKCdHRVRfQVdBSVRBQkxFJywgNzMpCiAKIGRlZl9vcCgnSU5QTEFDRV9MU0hJRlQnLCA3NSkKIGRlZl9vcCgnSU5QTEFDRV9SU0hJRlQnLCA3NikKQEAgLTEwOCw3ICsxMTYsOCBAQAogZGVmX29wKCdJTlBMQUNFX1hPUicsIDc4KQogZGVmX29wKCdJTlBMQUNFX09SJywgNzkpCiBkZWZfb3AoJ0JSRUFLX0xPT1AnLCA4MCkKLWRlZl9vcCgnV0lUSF9DTEVBTlVQJywgODEpCitkZWZfb3AoJ1dJVEhfQ0xFQU5VUF9TVEFSVCcsIDgxKQorZGVmX29wKCdXSVRIX0NMRUFOVVBfRklOSVNIJywgODIpCiAKIGRlZl9vcCgnUkVUVVJOX1ZBTFVFJywgODMpCiBkZWZfb3AoJ0lNUE9SVF9TVEFSJywgODQpCkBAIC0xOTQsNyArMjAzLDE1IEBACiBkZWZfb3AoJ0xPQURfQ0xBU1NERVJFRicsIDE0OCkKIGhhc2ZyZWUuYXBwZW5kKDE0OCkKIAoranJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKKwogZGVmX29wKCdFWFRFTkRFRF9BUkcnLCAxNDQpCiBFWFRFTkRFRF9BUkcgPSAxNDQKIAorZGVmX29wKCdCVUlMRF9MSVNUX1VOUEFDSycsIDE0OSkKK2RlZl9vcCgnQlVJTERfTUFQX1VOUEFDSycsIDE1MCkKK2RlZl9vcCgnQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwnLCAxNTEpCitkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDSycsIDE1MikKK2RlZl9vcCgnQlVJTERfU0VUX1VOUEFDSycsIDE1MykKKwogZGVsIGRlZl9vcCwgbmFtZV9vcCwganJlbF9vcCwgamFic19vcApkaWZmIC0tZ2l0IGEvTGliL29wZXJhdG9yLnB5IGIvTGliL29wZXJhdG9yLnB5CmluZGV4IGI2MDM0OWYuLjBlMmU1M2UgMTAwNjQ0Ci0tLSBhL0xpYi9vcGVyYXRvci5weQorKysgYi9MaWIvb3BlcmF0b3IucHkKQEAgLTEyLDEyICsxMiwxMiBAQAogCiBfX2FsbF9fID0gWydhYnMnLCAnYWRkJywgJ2FuZF8nLCAnYXR0cmdldHRlcicsICdjb25jYXQnLCAnY29udGFpbnMnLCAnY291bnRPZicsCiAgICAgICAgICAgICdkZWxpdGVtJywgJ2VxJywgJ2Zsb29yZGl2JywgJ2dlJywgJ2dldGl0ZW0nLCAnZ3QnLCAnaWFkZCcsICdpYW5kJywKLSAgICAgICAgICAgJ2ljb25jYXQnLCAnaWZsb29yZGl2JywgJ2lsc2hpZnQnLCAnaW1vZCcsICdpbXVsJywgJ2luZGV4JywKLSAgICAgICAgICAgJ2luZGV4T2YnLCAnaW52JywgJ2ludmVydCcsICdpb3InLCAnaXBvdycsICdpcnNoaWZ0JywgJ2lzXycsCi0gICAgICAgICAgICdpc19ub3QnLCAnaXN1YicsICdpdGVtZ2V0dGVyJywgJ2l0cnVlZGl2JywgJ2l4b3InLCAnbGUnLAotICAgICAgICAgICAnbGVuZ3RoX2hpbnQnLCAnbHNoaWZ0JywgJ2x0JywgJ21ldGhvZGNhbGxlcicsICdtb2QnLCAnbXVsJywgJ25lJywKLSAgICAgICAgICAgJ25lZycsICdub3RfJywgJ29yXycsICdwb3MnLCAncG93JywgJ3JzaGlmdCcsICdzZXRpdGVtJywgJ3N1YicsCi0gICAgICAgICAgICd0cnVlZGl2JywgJ3RydXRoJywgJ3hvciddCisgICAgICAgICAgICdpY29uY2F0JywgJ2lmbG9vcmRpdicsICdpbHNoaWZ0JywgJ2ltYXRtdWwnLCAnaW1vZCcsICdpbXVsJywKKyAgICAgICAgICAgJ2luZGV4JywgJ2luZGV4T2YnLCAnaW52JywgJ2ludmVydCcsICdpb3InLCAnaXBvdycsICdpcnNoaWZ0JywKKyAgICAgICAgICAgJ2lzXycsICdpc19ub3QnLCAnaXN1YicsICdpdGVtZ2V0dGVyJywgJ2l0cnVlZGl2JywgJ2l4b3InLCAnbGUnLAorICAgICAgICAgICAnbGVuZ3RoX2hpbnQnLCAnbHNoaWZ0JywgJ2x0JywgJ21hdG11bCcsICdtZXRob2RjYWxsZXInLCAnbW9kJywKKyAgICAgICAgICAgJ211bCcsICduZScsICduZWcnLCAnbm90XycsICdvcl8nLCAncG9zJywgJ3BvdycsICdyc2hpZnQnLAorICAgICAgICAgICAnc2V0aXRlbScsICdzdWInLCAndHJ1ZWRpdicsICd0cnV0aCcsICd4b3InXQogCiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBhYnMgYXMgX2FicwogCkBAIC0xMDUsNiArMTA1LDEwIEBACiAgICAgIlNhbWUgYXMgYSAqIGIuIgogICAgIHJldHVybiBhICogYgogCitkZWYgbWF0bXVsKGEsIGIpOgorICAgICJTYW1lIGFzIGEgQCBiLiIKKyAgICByZXR1cm4gYSBAIGIKKwogZGVmIG5lZyhhKToKICAgICAiU2FtZSBhcyAtYS4iCiAgICAgcmV0dXJuIC1hCkBAIC0yMjcsMTAgKzIzMSwxMyBAQAogICAgIEFmdGVyIGggPSBhdHRyZ2V0dGVyKCduYW1lLmZpcnN0JywgJ25hbWUubGFzdCcpLCB0aGUgY2FsbCBoKHIpIHJldHVybnMKICAgICAoci5uYW1lLmZpcnN0LCByLm5hbWUubGFzdCkuCiAgICAgIiIiCisgICAgX19zbG90c19fID0gKCdfYXR0cnMnLCAnX2NhbGwnKQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGF0dHIsICphdHRycyk6CiAgICAgICAgIGlmIG5vdCBhdHRyczoKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHIsIHN0cik6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdhdHRyaWJ1dGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJykKKyAgICAgICAgICAgIHNlbGYuX2F0dHJzID0gKGF0dHIsKQogICAgICAgICAgICAgbmFtZXMgPSBhdHRyLnNwbGl0KCcuJykKICAgICAgICAgICAgIGRlZiBmdW5jKG9iaik6CiAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CkBAIC0yMzgsNyArMjQ1LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gb2JqCiAgICAgICAgICAgICBzZWxmLl9jYWxsID0gZnVuYwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2V0dGVycyA9IHR1cGxlKG1hcChhdHRyZ2V0dGVyLCAoYXR0ciwpICsgYXR0cnMpKQorICAgICAgICAgICAgc2VsZi5fYXR0cnMgPSAoYXR0ciwpICsgYXR0cnMKKyAgICAgICAgICAgIGdldHRlcnMgPSB0dXBsZShtYXAoYXR0cmdldHRlciwgc2VsZi5fYXR0cnMpKQogICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHVwbGUoZ2V0dGVyKG9iaikgZm9yIGdldHRlciBpbiBnZXR0ZXJzKQogICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKQEAgLTI0NiwxOSArMjU0LDMwIEBACiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG9iaik6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsKG9iaikKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy4lcyglcyknICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4obWFwKHJlcHIsIHNlbGYuX2F0dHJzKSkpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLCBzZWxmLl9hdHRycworCiBjbGFzcyBpdGVtZ2V0dGVyOgogICAgICIiIgogICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGZldGNoZXMgdGhlIGdpdmVuIGl0ZW0ocykgZnJvbSBpdHMgb3BlcmFuZC4KICAgICBBZnRlciBmID0gaXRlbWdldHRlcigyKSwgdGhlIGNhbGwgZihyKSByZXR1cm5zIHJbMl0uCiAgICAgQWZ0ZXIgZyA9IGl0ZW1nZXR0ZXIoMiwgNSwgMyksIHRoZSBjYWxsIGcocikgcmV0dXJucyAoclsyXSwgcls1XSwgclszXSkKICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoJ19pdGVtcycsICdfY2FsbCcpCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbSwgKml0ZW1zKToKICAgICAgICAgaWYgbm90IGl0ZW1zOgorICAgICAgICAgICAgc2VsZi5faXRlbXMgPSAoaXRlbSwpCiAgICAgICAgICAgICBkZWYgZnVuYyhvYmopOgogICAgICAgICAgICAgICAgIHJldHVybiBvYmpbaXRlbV0KICAgICAgICAgICAgIHNlbGYuX2NhbGwgPSBmdW5jCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpdGVtcyA9IChpdGVtLCkgKyBpdGVtcworICAgICAgICAgICAgc2VsZi5faXRlbXMgPSBpdGVtcyA9IChpdGVtLCkgKyBpdGVtcwogICAgICAgICAgICAgZGVmIGZ1bmMob2JqKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHVwbGUob2JqW2ldIGZvciBpIGluIGl0ZW1zKQogICAgICAgICAgICAgc2VsZi5fY2FsbCA9IGZ1bmMKQEAgLTI2Niw2ICsyODUsMTQgQEAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgb2JqKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwob2JqKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLiVzKCVzKScgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKG1hcChyZXByLCBzZWxmLl9pdGVtcykpKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgc2VsZi5faXRlbXMKKwogY2xhc3MgbWV0aG9kY2FsbGVyOgogICAgICIiIgogICAgIFJldHVybiBhIGNhbGxhYmxlIG9iamVjdCB0aGF0IGNhbGxzIHRoZSBnaXZlbiBtZXRob2Qgb24gaXRzIG9wZXJhbmQuCkBAIC0yNzMsNiArMzAwLDcgQEAKICAgICBBZnRlciBnID0gbWV0aG9kY2FsbGVyKCduYW1lJywgJ2RhdGUnLCBmb289MSksIHRoZSBjYWxsIGcocikgcmV0dXJucwogICAgIHIubmFtZSgnZGF0ZScsIGZvbz0xKS4KICAgICAiIiIKKyAgICBfX3Nsb3RzX18gPSAoJ19uYW1lJywgJ19hcmdzJywgJ19rd2FyZ3MnKQogCiAgICAgZGVmIF9faW5pdF9fKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIGxlbihhcmdzKSA8IDI6CkBAIC0yODAsMTIgKzMwOCwzMCBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKICAgICAgICAgc2VsZiA9IGFyZ3NbMF0KICAgICAgICAgc2VsZi5fbmFtZSA9IGFyZ3NbMV0KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5fbmFtZSwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWV0aG9kIG5hbWUgbXVzdCBiZSBhIHN0cmluZycpCiAgICAgICAgIHNlbGYuX2FyZ3MgPSBhcmdzWzI6XQogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3MKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBvYmopOgogICAgICAgICByZXR1cm4gZ2V0YXR0cihvYmosIHNlbGYuX25hbWUpKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFtyZXByKHNlbGYuX25hbWUpXQorICAgICAgICBhcmdzLmV4dGVuZChtYXAocmVwciwgc2VsZi5fYXJncykpCisgICAgICAgIGFyZ3MuZXh0ZW5kKCclcz0lcicgJSAoaywgdikgZm9yIGssIHYgaW4gc2VsZi5fa3dhcmdzLml0ZW1zKCkpCisgICAgICAgIHJldHVybiAnJXMuJXMoJXMpJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oYXJncykpCisKKyAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2t3YXJnczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXywgKHNlbGYuX25hbWUsKSArIHNlbGYuX2FyZ3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCisgICAgICAgICAgICByZXR1cm4gcGFydGlhbChzZWxmLl9fY2xhc3NfXywgc2VsZi5fbmFtZSwgKipzZWxmLl9rd2FyZ3MpLCBzZWxmLl9hcmdzCisKKwogIyBJbi1wbGFjZSBPcGVyYXRpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiMKIAogZGVmIGlhZGQoYSwgYik6CkBAIC0zMjYsNiArMzcyLDExIEBACiAgICAgYSAqPSBiCiAgICAgcmV0dXJuIGEKIAorZGVmIGltYXRtdWwoYSwgYik6CisgICAgIlNhbWUgYXMgYSBAPSBiLiIKKyAgICBhIEA9IGIKKyAgICByZXR1cm4gYQorCiBkZWYgaW9yKGEsIGIpOgogICAgICJTYW1lIGFzIGEgfD0gYi4iCiAgICAgYSB8PSBiCkBAIC0zODMsNiArNDM0LDcgQEAKIF9fbHNoaWZ0X18gPSBsc2hpZnQKIF9fbW9kX18gPSBtb2QKIF9fbXVsX18gPSBtdWwKK19fbWF0bXVsX18gPSBtYXRtdWwKIF9fbmVnX18gPSBuZWcKIF9fb3JfXyA9IG9yXwogX19wb3NfXyA9IHBvcwpAQCAtNDAzLDYgKzQ1NSw3IEBACiBfX2lsc2hpZnRfXyA9IGlsc2hpZnQKIF9faW1vZF9fID0gaW1vZAogX19pbXVsX18gPSBpbXVsCitfX2ltYXRtdWxfXyA9IGltYXRtdWwKIF9faW9yX18gPSBpb3IKIF9faXBvd19fID0gaXBvdwogX19pcnNoaWZ0X18gPSBpcnNoaWZ0CmRpZmYgLS1naXQgYS9MaWIvb3MucHkgYi9MaWIvb3MucHkKaW5kZXggYThmNmEwYi4uM2QyYzZkMyAxMDA2NDQKLS0tIGEvTGliL29zLnB5CisrKyBiL0xpYi9vcy5weQpAQCAtNjEsNiArNjEsMTAgQEAKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MKIAorICAgIGltcG9ydCBwb3NpeAorICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KHBvc2l4KSkKKyAgICBkZWwgcG9zaXgKKwogZWxpZiAnbnQnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ250JwogICAgIGxpbmVzZXAgPSAnXHJcbicKQEAgLTMxOSw3ICszMjMsNyBAQAogICAgIHRoZSB2YWx1ZSBvZiB0b3Bkb3duLCB0aGUgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyBpcyByZXRyaWV2ZWQgYmVmb3JlIHRoZQogICAgIHR1cGxlcyBmb3IgdGhlIGRpcmVjdG9yeSBhbmQgaXRzIHN1YmRpcmVjdG9yaWVzIGFyZSBnZW5lcmF0ZWQuCiAKLSAgICBCeSBkZWZhdWx0IGVycm9ycyBmcm9tIHRoZSBvcy5saXN0ZGlyKCkgY2FsbCBhcmUgaWdub3JlZC4gIElmCisgICAgQnkgZGVmYXVsdCBlcnJvcnMgZnJvbSB0aGUgb3Muc2NhbmRpcigpIGNhbGwgYXJlIGlnbm9yZWQuICBJZgogICAgIG9wdGlvbmFsIGFyZyAnb25lcnJvcicgaXMgc3BlY2lmaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbjsgaXQKICAgICB3aWxsIGJlIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgYW4gT1NFcnJvciBpbnN0YW5jZS4gIEl0IGNhbgogICAgIHJlcG9ydCB0aGUgZXJyb3IgdG8gY29udGludWUgd2l0aCB0aGUgd2Fsaywgb3IgcmFpc2UgdGhlIGV4Y2VwdGlvbgpAQCAtMzQ4LDcgKzM1Miw4IEBACiAKICAgICAiIiIKIAotICAgIGlzbGluaywgam9pbiwgaXNkaXIgPSBwYXRoLmlzbGluaywgcGF0aC5qb2luLCBwYXRoLmlzZGlyCisgICAgZGlycyA9IFtdCisgICAgbm9uZGlycyA9IFtdCiAKICAgICAjIFdlIG1heSBub3QgaGF2ZSByZWFkIHBlcm1pc3Npb24gZm9yIHRvcCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW4ndAogICAgICMgZ2V0IGEgbGlzdCBvZiB0aGUgZmlsZXMgdGhlIGRpcmVjdG9yeSBjb250YWlucy4gIG9zLndhbGsKQEAgLTM1NiwyOCArMzYxLDcxIEBACiAgICAgIyBtaW5vciByZWFzb24gd2hlbiAoc2F5KSBhIHRob3VzYW5kIHJlYWRhYmxlIGRpcmVjdG9yaWVzIGFyZSBzdGlsbAogICAgICMgbGVmdCB0byB2aXNpdC4gIFRoYXQgbG9naWMgaXMgY29waWVkIGhlcmUuCiAgICAgdHJ5OgotICAgICAgICAjIE5vdGUgdGhhdCBsaXN0ZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKKyAgICAgICAgIyBOb3RlIHRoYXQgc2NhbmRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCiAgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KLSAgICAgICAgbmFtZXMgPSBsaXN0ZGlyKHRvcCkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIHNjYW5kaXJfaXQgPSBzY2FuZGlyKHRvcCkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG9uZXJyb3IoZXJyKQorICAgICAgICAgICAgb25lcnJvcihlcnJvcikKICAgICAgICAgcmV0dXJuCiAKLSAgICBkaXJzLCBub25kaXJzID0gW10sIFtdCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIGlmIGlzZGlyKGpvaW4odG9wLCBuYW1lKSk6Ci0gICAgICAgICAgICBkaXJzLmFwcGVuZChuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZW50cnkgPSBuZXh0KHNjYW5kaXJfaXQpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgb25lcnJvcihlcnJvcikKKyAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlzX2RpciA9IGVudHJ5LmlzX2RpcigpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90CisgICAgICAgICAgICAjIGEgZGlyZWN0b3J5LCBzYW1lIGJlaGF2aW91ciB0aGFuIG9zLnBhdGguaXNkaXIoKS4KKyAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCisKKyAgICAgICAgaWYgaXNfZGlyOgorICAgICAgICAgICAgZGlycy5hcHBlbmQoZW50cnkubmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisKKyAgICAgICAgaWYgbm90IHRvcGRvd24gYW5kIGlzX2RpcjoKKyAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KKyAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKKyAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzOgorICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgorICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKKyAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworCisgICAgICAgICAgICBpZiB3YWxrX2ludG86CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKGVudHJ5LnBhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQorCisgICAgIyBZaWVsZCBiZWZvcmUgcmVjdXJzaW9uIGlmIGdvaW5nIHRvcCBkb3duCiAgICAgaWYgdG9wZG93bjoKICAgICAgICAgeWllbGQgdG9wLCBkaXJzLCBub25kaXJzCi0gICAgZm9yIG5hbWUgaW4gZGlyczoKLSAgICAgICAgbmV3X3BhdGggPSBqb2luKHRvcCwgbmFtZSkKLSAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6Ci0gICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQotICAgIGlmIG5vdCB0b3Bkb3duOgorCisgICAgICAgICMgUmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcmllcworICAgICAgICBpc2xpbmssIGpvaW4gPSBwYXRoLmlzbGluaywgcGF0aC5qb2luCisgICAgICAgIGZvciBuYW1lIGluIGRpcnM6CisgICAgICAgICAgICBuZXdfcGF0aCA9IGpvaW4odG9wLCBuYW1lKQorICAgICAgICAgICAgIyBJc3N1ZSAjMjM2MDU6IG9zLnBhdGguaXNsaW5rKCkgaXMgdXNlZCBpbnN0ZWFkIG9mIGNhY2hpbmcKKyAgICAgICAgICAgICMgZW50cnkuaXNfc3ltbGluaygpIHJlc3VsdCBkdXJpbmcgdGhlIGxvb3Agb24gb3Muc2NhbmRpcigpIGJlY2F1c2UKKyAgICAgICAgICAgICMgdGhlIGNhbGxlciBjYW4gcmVwbGFjZSB0aGUgZGlyZWN0b3J5IGVudHJ5IGR1cmluZyB0aGUgInlpZWxkIgorICAgICAgICAgICAgIyBhYm92ZS4KKyAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCisgICAgZWxzZToKKyAgICAgICAgIyBZaWVsZCBhZnRlciByZWN1cnNpb24gaWYgZ29pbmcgYm90dG9tIHVwCiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCmRpZmYgLS1naXQgYS9MaWIvcGF0aGxpYi5weSBiL0xpYi9wYXRobGliLnB5CmluZGV4IDkxOGFjOGQuLjAxZTY2YTAgMTAwNjQ0Ci0tLSBhL0xpYi9wYXRobGliLnB5CisrKyBiL0xpYi9wYXRobGliLnB5CkBAIC0yMjUsNiArMjI1LDM2IEBACiAgICAgICAgICAgICAjIEl0J3MgYSBwYXRoIG9uIGEgbmV0d29yayBkcml2ZSA9PiAnZmlsZTovL2hvc3Qvc2hhcmUvYS9iJwogICAgICAgICAgICAgcmV0dXJuICdmaWxlOicgKyB1cmxxdW90ZV9mcm9tX2J5dGVzKHBhdGguYXNfcG9zaXgoKS5lbmNvZGUoJ3V0Zi04JykpCiAKKyAgICBkZWYgZ2V0aG9tZWRpcihzZWxmLCB1c2VybmFtZSk6CisgICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgdXNlcmhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KKyAgICAgICAgZWxpZiAnVVNFUlBST0ZJTEUnIGluIG9zLmVudmlyb246CisgICAgICAgICAgICB1c2VyaG9tZSA9IG9zLmVudmlyb25bJ1VTRVJQUk9GSUxFJ10KKyAgICAgICAgZWxpZiAnSE9NRVBBVEgnIGluIG9zLmVudmlyb246CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZHJ2ID0gb3MuZW52aXJvblsnSE9NRURSSVZFJ10KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBkcnYgPSAnJworICAgICAgICAgICAgdXNlcmhvbWUgPSBkcnYgKyBvcy5lbnZpcm9uWydIT01FUEFUSCddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbid0IGRldGVybWluZSBob21lIGRpcmVjdG9yeSIpCisKKyAgICAgICAgaWYgdXNlcm5hbWU6CisgICAgICAgICAgICAjIFRyeSB0byBndWVzcyB1c2VyIGhvbWUgZGlyZWN0b3J5LiAgQnkgZGVmYXVsdCBhbGwgdXNlcnMKKyAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIHNhbWUgcGxhY2UgYW5kIGFyZSBuYW1lZCBieQorICAgICAgICAgICAgIyBjb3JyZXNwb25kaW5nIHVzZXJuYW1lcy4gIElmIGN1cnJlbnQgdXNlciBob21lIGRpcmVjdG9yeSBwb2ludHMKKyAgICAgICAgICAgICMgdG8gbm9uc3RhbmRhcmQgcGxhY2UsIHRoaXMgZ3Vlc3MgaXMgbGlrZWx5IHdyb25nLgorICAgICAgICAgICAgaWYgb3MuZW52aXJvblsnVVNFUk5BTUUnXSAhPSB1c2VybmFtZToKKyAgICAgICAgICAgICAgICBkcnYsIHJvb3QsIHBhcnRzID0gc2VsZi5wYXJzZV9wYXJ0cygodXNlcmhvbWUsKSkKKyAgICAgICAgICAgICAgICBpZiBwYXJ0c1stMV0gIT0gb3MuZW52aXJvblsnVVNFUk5BTUUnXToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBkZXRlcm1pbmUgaG9tZSBkaXJlY3RvcnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciAlciIgJSB1c2VybmFtZSkKKyAgICAgICAgICAgICAgICBwYXJ0c1stMV0gPSB1c2VybmFtZQorICAgICAgICAgICAgICAgIGlmIGRydiBvciByb290OgorICAgICAgICAgICAgICAgICAgICB1c2VyaG9tZSA9IGRydiArIHJvb3QgKyBzZWxmLmpvaW4ocGFydHNbMTpdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVzZXJob21lID0gc2VsZi5qb2luKHBhcnRzKQorICAgICAgICByZXR1cm4gdXNlcmhvbWUKIAogY2xhc3MgX1Bvc2l4Rmxhdm91cihfRmxhdm91cik6CiAgICAgc2VwID0gJy8nCkBAIC0zMDgsNiArMzM4LDIxIEBACiAgICAgICAgIGJwYXRoID0gYnl0ZXMocGF0aCkKICAgICAgICAgcmV0dXJuICdmaWxlOi8vJyArIHVybHF1b3RlX2Zyb21fYnl0ZXMoYnBhdGgpCiAKKyAgICBkZWYgZ2V0aG9tZWRpcihzZWxmLCB1c2VybmFtZSk6CisgICAgICAgIGlmIG5vdCB1c2VybmFtZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgaW1wb3J0IHB3ZAorICAgICAgICAgICAgICAgIHJldHVybiBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpLnB3X2RpcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1wb3J0IHB3ZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBwd2QuZ2V0cHduYW0odXNlcm5hbWUpLnB3X2RpcgorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2FuJ3QgZGV0ZXJtaW5lIGhvbWUgZGlyZWN0b3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciAlciIgJSB1c2VybmFtZSkKKwogCiBfd2luZG93c19mbGF2b3VyID0gX1dpbmRvd3NGbGF2b3VyKCkKIF9wb3NpeF9mbGF2b3VyID0gX1Bvc2l4Rmxhdm91cigpCkBAIC05NjQsNiArMTAwOSwyNCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGNscyhvcy5nZXRjd2QoKSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBob21lKGNscyk6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBwYXRoIHBvaW50aW5nIHRvIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgKGFzCisgICAgICAgIHJldHVybmVkIGJ5IG9zLnBhdGguZXhwYW5kdXNlcignficpKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBjbHMoY2xzKCkuX2ZsYXZvdXIuZ2V0aG9tZWRpcihOb25lKSkKKworICAgIGRlZiBzYW1lZmlsZShzZWxmLCBvdGhlcl9wYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgYG90aGVyX2ZpbGVgIGlzIHRoZSBzYW1lIG9yIG5vdCBhcyB0aGlzIGZpbGUuCisgICAgICAgIChhcyByZXR1cm5lZCBieSBvcy5wYXRoLnNhbWVmaWxlKGZpbGUsIG90aGVyX2ZpbGUpKS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0ID0gc2VsZi5zdGF0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3RoZXJfc3QgPSBvdGhlcl9wYXRoLnN0YXQoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBvdGhlcl9zdCA9IG9zLnN0YXQob3RoZXJfcGF0aCkKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguc2FtZXN0YXQoc3QsIG90aGVyX3N0KQorCiAgICAgZGVmIGl0ZXJkaXIoc2VsZik6CiAgICAgICAgICIiIkl0ZXJhdGUgb3ZlciB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuICBEb2VzIG5vdCB5aWVsZCBhbnkKICAgICAgICAgcmVzdWx0IGZvciB0aGUgc3BlY2lhbCBwYXRocyAnLicgYW5kICcuLicuCkBAIC0xMDcyLDYgKzExMzUsMzkgQEAKICAgICAgICAgcmV0dXJuIGlvLm9wZW4oc3RyKHNlbGYpLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5lcj1zZWxmLl9vcGVuZXIpCiAKKyAgICBkZWYgcmVhZF9ieXRlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gYnl0ZXMgbW9kZSwgcmVhZCBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0ncmInKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKyAgICBkZWYgcmVhZF90ZXh0KHNlbGYsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLCByZWFkIGl0LCBhbmQgY2xvc2UgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYub3Blbihtb2RlPSdyJywgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZi5yZWFkKCkKKworICAgIGRlZiB3cml0ZV9ieXRlcyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gYnl0ZXMgbW9kZSwgd3JpdGUgdG8gaXQsIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgICMgdHlwZS1jaGVjayBmb3IgdGhlIGJ1ZmZlciBpbnRlcmZhY2UgYmVmb3JlIHRydW5jYXRpbmcgdGhlIGZpbGUKKyAgICAgICAgdmlldyA9IG1lbW9yeXZpZXcoZGF0YSkKKyAgICAgICAgd2l0aCBzZWxmLm9wZW4obW9kZT0nd2InKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGYud3JpdGUodmlldykKKworICAgIGRlZiB3cml0ZV90ZXh0KHNlbGYsIGRhdGEsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLCB3cml0ZSB0byBpdCwgYW5kIGNsb3NlIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZGF0YSBtdXN0IGJlIHN0ciwgbm90ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIHdpdGggc2VsZi5vcGVuKG1vZGU9J3cnLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBmLndyaXRlKGRhdGEpCisKICAgICBkZWYgdG91Y2goc2VsZiwgbW9kZT0wbzY2NiwgZXhpc3Rfb2s9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBDcmVhdGUgdGhpcyBmaWxlIHdpdGggdGhlIGdpdmVuIGFjY2VzcyBtb2RlLCBpZiBpdCBkb2Vzbid0IGV4aXN0LgpAQCAtMTA5NSwxNCArMTE5MSwyMSBAQAogICAgICAgICBmZCA9IHNlbGYuX3Jhd19vcGVuKGZsYWdzLCBtb2RlKQogICAgICAgICBvcy5jbG9zZShmZCkKIAotICAgIGRlZiBta2RpcihzZWxmLCBtb2RlPTBvNzc3LCBwYXJlbnRzPUZhbHNlKToKKyAgICBkZWYgbWtkaXIoc2VsZiwgbW9kZT0wbzc3NywgcGFyZW50cz1GYWxzZSwgZXhpc3Rfb2s9RmFsc2UpOgogICAgICAgICBpZiBzZWxmLl9jbG9zZWQ6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZV9jbG9zZWQoKQogICAgICAgICBpZiBub3QgcGFyZW50czoKLSAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yLm1rZGlyKHNlbGYsIG1vZGUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fYWNjZXNzb3IubWtkaXIoc2VsZiwgbW9kZSkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgbm90IGV4aXN0X29rIG9yIG5vdCBzZWxmLmlzX2RpcigpOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2FjY2Vzc29yLm1rZGlyKHNlbGYsIG1vZGUpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCBleGlzdF9vayBvciBub3Qgc2VsZi5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFTk9FTlQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0xMjgzLDYgKzEzODYsMTcgQEAKICAgICAgICAgICAgICMgKHNlZSBodHRwczovL2JpdGJ1Y2tldC5vcmcvcGl0cm91L3BhdGhsaWIvaXNzdWUvMTIvKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgIiIiIFJldHVybiBhIG5ldyBwYXRoIHdpdGggZXhwYW5kZWQgfiBhbmQgfnVzZXIgY29uc3RydWN0cworICAgICAgICAoYXMgcmV0dXJuZWQgYnkgb3MucGF0aC5leHBhbmR1c2VyKQorICAgICAgICAiIiIKKyAgICAgICAgaWYgKG5vdCAoc2VsZi5fZHJ2IG9yIHNlbGYuX3Jvb3QpIGFuZAorICAgICAgICAgICAgc2VsZi5fcGFydHMgYW5kIHNlbGYuX3BhcnRzWzBdWzoxXSA9PSAnficpOgorICAgICAgICAgICAgaG9tZWRpciA9IHNlbGYuX2ZsYXZvdXIuZ2V0aG9tZWRpcihzZWxmLl9wYXJ0c1swXVsxOl0pCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZnJvbV9wYXJ0cyhbaG9tZWRpcl0gKyBzZWxmLl9wYXJ0c1sxOl0pCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKwogCiBjbGFzcyBQb3NpeFBhdGgoUGF0aCwgUHVyZVBvc2l4UGF0aCk6CiAgICAgX19zbG90c19fID0gKCkKZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDdkNThjMmEuLjRjYmE4YTAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAjIElzIGl0IGEgY2xhc3M/CiAgICAgICAgIGlmIHZhbHVlLl9fY2xhc3NfXyBpcyB0eXBlOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdDbGFzcyAlcy4lcycgJSAodmFsdWUuX19tb2R1bGVfXywgdmFsdWUuX19uYW1lX18pKQorICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdDbGFzcyAlcy4lcycgJSAodmFsdWUuX19tb2R1bGVfXywgdmFsdWUuX19xdWFsbmFtZV9fKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICAjIE5vbmUgb2YgdGhlIGFib3ZlLi4uCiAgICAgICAgIHNlbGYubWVzc2FnZSh0eXBlKHZhbHVlKSkKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGUucHkgYi9MaWIvcGlja2xlLnB5CmluZGV4IDY3MzgyYWUuLjZjMjZjNWUgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGUucHkKKysrIGIvTGliL3BpY2tsZS5weQpAQCAtMjU4LDI0ICsyNTgsMjAgQEAKIAogIyBUb29scyB1c2VkIGZvciBwaWNrbGluZy4KIAotZGVmIF9nZXRhdHRyaWJ1dGUob2JqLCBuYW1lLCBhbGxvd19xdWFsbmFtZT1GYWxzZSk6Ci0gICAgZG90dGVkX3BhdGggPSBuYW1lLnNwbGl0KCIuIikKLSAgICBpZiBub3QgYWxsb3dfcXVhbG5hbWUgYW5kIGxlbihkb3R0ZWRfcGF0aCkgPiAxOgotICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiQ2FuJ3QgZ2V0IHF1YWxpZmllZCBhdHRyaWJ1dGUgeyFyfSBvbiB7IXJ9OyAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBwcm90b2NvbHMgPj0gNCB0byBlbmFibGUgc3VwcG9ydCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuYW1lLCBvYmopKQotICAgIGZvciBzdWJwYXRoIGluIGRvdHRlZF9wYXRoOgorZGVmIF9nZXRhdHRyaWJ1dGUob2JqLCBuYW1lKToKKyAgICBmb3Igc3VicGF0aCBpbiBuYW1lLnNwbGl0KCcuJyk6CiAgICAgICAgIGlmIHN1YnBhdGggPT0gJzxsb2NhbHM+JzoKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJDYW4ndCBnZXQgbG9jYWwgYXR0cmlidXRlIHshcn0gb24geyFyfSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmFtZSwgb2JqKSkKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGFyZW50ID0gb2JqCiAgICAgICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgc3VicGF0aCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkNhbid0IGdldCBhdHRyaWJ1dGUgeyFyfSBvbiB7IXJ9IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChuYW1lLCBvYmopKQotICAgIHJldHVybiBvYmoKKyAgICByZXR1cm4gb2JqLCBwYXJlbnQKIAotZGVmIHdoaWNobW9kdWxlKG9iaiwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9RmFsc2UpOgorZGVmIHdoaWNobW9kdWxlKG9iaiwgbmFtZSk6CiAgICAgIiIiRmluZCB0aGUgbW9kdWxlIGFuIG9iamVjdCBiZWxvbmcgdG8uIiIiCiAgICAgbW9kdWxlX25hbWUgPSBnZXRhdHRyKG9iaiwgJ19fbW9kdWxlX18nLCBOb25lKQogICAgIGlmIG1vZHVsZV9uYW1lIGlzIG5vdCBOb25lOgpAQCAtMjg2LDcgKzI4Miw3IEBACiAgICAgICAgIGlmIG1vZHVsZV9uYW1lID09ICdfX21haW5fXycgb3IgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSwgYWxsb3dfcXVhbG5hbWUpIGlzIG9iajoKKyAgICAgICAgICAgIGlmIF9nZXRhdHRyaWJ1dGUobW9kdWxlLCBuYW1lKVswXSBpcyBvYmo6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZV9uYW1lCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKQEAgLTg5OSwxNiArODk1LDE2IEBACiAgICAgICAgIHdyaXRlID0gc2VsZi53cml0ZQogICAgICAgICBtZW1vID0gc2VsZi5tZW1vCiAKLSAgICAgICAgaWYgbmFtZSBpcyBOb25lIGFuZCBzZWxmLnByb3RvID49IDQ6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIG5hbWUgPSBnZXRhdHRyKG9iaiwgJ19fcXVhbG5hbWVfXycsIE5vbmUpCiAgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICAgICAgICAgICAgIG5hbWUgPSBvYmouX19uYW1lX18KIAotICAgICAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgbmFtZSwgYWxsb3dfcXVhbG5hbWU9c2VsZi5wcm90byA+PSA0KQorICAgICAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2R1bGVfbmFtZSwgbGV2ZWw9MCkKICAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXQotICAgICAgICAgICAgb2JqMiA9IF9nZXRhdHRyaWJ1dGUobW9kdWxlLCBuYW1lLCBhbGxvd19xdWFsbmFtZT1zZWxmLnByb3RvID49IDQpCisgICAgICAgICAgICBvYmoyLCBwYXJlbnQgPSBfZ2V0YXR0cmlidXRlKG1vZHVsZSwgbmFtZSkKICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoCiAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSAlcjogaXQncyBub3QgZm91bmQgYXMgJXMuJXMiICUKQEAgLTkzMCwxMSArOTI2LDE2IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgd3JpdGUoRVhUNCArIHBhY2soIjxpIiwgY29kZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGxhc3RuYW1lID0gbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KKyAgICAgICAgaWYgcGFyZW50IGlzIG1vZHVsZToKKyAgICAgICAgICAgIG5hbWUgPSBsYXN0bmFtZQogICAgICAgICAjIE5vbi1BU0NJSSBpZGVudGlmaWVycyBhcmUgc3VwcG9ydGVkIG9ubHkgd2l0aCBwcm90b2NvbHMgPj0gMy4KICAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0OgogICAgICAgICAgICAgc2VsZi5zYXZlKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5zYXZlKG5hbWUpCiAgICAgICAgICAgICB3cml0ZShTVEFDS19HTE9CQUwpCisgICAgICAgIGVsaWYgcGFyZW50IGlzIG5vdCBtb2R1bGU6CisgICAgICAgICAgICBzZWxmLnNhdmVfcmVkdWNlKGdldGF0dHIsIChwYXJlbnQsIGxhc3RuYW1lKSkKICAgICAgICAgZWxpZiBzZWxmLnByb3RvID49IDM6CiAgICAgICAgICAgICB3cml0ZShHTE9CQUwgKyBieXRlcyhtb2R1bGVfbmFtZSwgInV0Zi04IikgKyBiJ1xuJyArCiAgICAgICAgICAgICAgICAgICBieXRlcyhuYW1lLCAidXRmLTgiKSArIGInXG4nKQpAQCAtMTM3Myw4ICsxMzc0LDEwIEBACiAgICAgICAgICAgICBlbGlmIG1vZHVsZSBpbiBfY29tcGF0X3BpY2tsZS5JTVBPUlRfTUFQUElORzoKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfY29tcGF0X3BpY2tsZS5JTVBPUlRfTUFQUElOR1ttb2R1bGVdCiAgICAgICAgIF9faW1wb3J0X18obW9kdWxlLCBsZXZlbD0wKQotICAgICAgICByZXR1cm4gX2dldGF0dHJpYnV0ZShzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19xdWFsbmFtZT1zZWxmLnByb3RvID49IDQpCisgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKKyAgICAgICAgICAgIHJldHVybiBfZ2V0YXR0cmlidXRlKHN5cy5tb2R1bGVzW21vZHVsZV0sIG5hbWUpWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzeXMubW9kdWxlc1ttb2R1bGVdLCBuYW1lKQogCiAgICAgZGVmIGxvYWRfcmVkdWNlKHNlbGYpOgogICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKZGlmZiAtLWdpdCBhL0xpYi9wa2d1dGlsLnB5IGIvTGliL3BrZ3V0aWwucHkKaW5kZXggYTU0ZTk0Ny4uZmM0YTA3NCAxMDA2NDQKLS0tIGEvTGliL3BrZ3V0aWwucHkKKysrIGIvTGliL3BrZ3V0aWwucHkKQEAgLTYxNiw3ICs2MTYsNyBAQAogICAgICAgICByZXR1cm4gTm9uZQogICAgICMgWFhYIG5lZWRzIHRlc3QKICAgICBtb2QgPSAoc3lzLm1vZHVsZXMuZ2V0KHBhY2thZ2UpIG9yCi0gICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5sb2FkKCkpCisgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpKQogICAgIGlmIG1vZCBpcyBOb25lIG9yIG5vdCBoYXNhdHRyKG1vZCwgJ19fZmlsZV9fJyk6CiAgICAgICAgIHJldHVybiBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi9wbGF0Zm9ybS5weSBiL0xpYi9wbGF0Zm9ybS5weQppbmRleCBjNGZmZTk1Li45MDk2Njk2IDEwMDc1NQotLS0gYS9MaWIvcGxhdGZvcm0ucHkKKysrIGIvTGliL3BsYXRmb3JtLnB5CkBAIC0xMTQsNiArMTE0LDggQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHN5cywgb3MsIHJlLCBzdWJwcm9jZXNzCiAKK2ltcG9ydCB3YXJuaW5ncworCiAjIyMgR2xvYmFscyAmIENvbnN0YW50cwogCiAjIERldGVybWluZSB0aGUgcGxhdGZvcm0ncyAvZGV2L251bGwgZGV2aWNlCkBAIC0xNjMsNDAgKzE2NSwzOSBAQAogICAgICAgICAjIGhlcmUgdG8gd29yayBhcm91bmQgcHJvYmxlbXMgd2l0aCBDeWd3aW4gbm90IGJlaW5nCiAgICAgICAgICMgYWJsZSB0byBvcGVuIHN5bWxpbmtzIGZvciByZWFkaW5nCiAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLnJlYWxwYXRoKGV4ZWN1dGFibGUpCi0gICAgZiA9IG9wZW4oZXhlY3V0YWJsZSwgJ3JiJykKLSAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKQotICAgIHBvcyA9IDAKLSAgICB3aGlsZSAxOgotICAgICAgICBpZiBiJ2xpYmMnIGluIGJpbmFyeSBvciBiJ0dMSUJDJyBpbiBiaW5hcnk6Ci0gICAgICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnksIHBvcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG0gPSBOb25lCi0gICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKLSAgICAgICAgICAgIGlmIG5vdCBiaW5hcnk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHBvcyA9IDAKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGxpYmNpbml0LCBnbGliYywgZ2xpYmN2ZXJzaW9uLCBzbywgdGhyZWFkcywgc292ZXJzaW9uID0gWwotICAgICAgICAgICAgcy5kZWNvZGUoJ2xhdGluMScpIGlmIHMgaXMgbm90IE5vbmUgZWxzZSBzCi0gICAgICAgICAgICBmb3IgcyBpbiBtLmdyb3VwcygpXQotICAgICAgICBpZiBsaWJjaW5pdCBhbmQgbm90IGxpYjoKLSAgICAgICAgICAgIGxpYiA9ICdsaWJjJwotICAgICAgICBlbGlmIGdsaWJjOgotICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6Ci0gICAgICAgICAgICAgICAgbGliID0gJ2dsaWJjJwotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBnbGliY3ZlcnNpb24KLSAgICAgICAgICAgIGVsaWYgZ2xpYmN2ZXJzaW9uID4gdmVyc2lvbjoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZ2xpYmN2ZXJzaW9uCi0gICAgICAgIGVsaWYgc286Ci0gICAgICAgICAgICBpZiBsaWIgIT0gJ2dsaWJjJzoKKyAgICB3aXRoIG9wZW4oZXhlY3V0YWJsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKKyAgICAgICAgcG9zID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgorICAgICAgICAgICAgICAgIG0gPSBfbGliY19zZWFyY2guc2VhcmNoKGJpbmFyeSwgcG9zKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtID0gTm9uZQorICAgICAgICAgICAgaWYgbm90IG06CisgICAgICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHBvcyA9IDAKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbGliY2luaXQsIGdsaWJjLCBnbGliY3ZlcnNpb24sIHNvLCB0aHJlYWRzLCBzb3ZlcnNpb24gPSBbCisgICAgICAgICAgICAgICAgcy5kZWNvZGUoJ2xhdGluMScpIGlmIHMgaXMgbm90IE5vbmUgZWxzZSBzCisgICAgICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KKyAgICAgICAgICAgIGlmIGxpYmNpbml0IGFuZCBub3QgbGliOgogICAgICAgICAgICAgICAgIGxpYiA9ICdsaWJjJwotICAgICAgICAgICAgICAgIGlmIHNvdmVyc2lvbiBhbmQgc292ZXJzaW9uID4gdmVyc2lvbjoKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNvdmVyc2lvbgotICAgICAgICAgICAgICAgIGlmIHRocmVhZHMgYW5kIHZlcnNpb25bLWxlbih0aHJlYWRzKTpdICE9IHRocmVhZHM6Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uICsgdGhyZWFkcwotICAgICAgICBwb3MgPSBtLmVuZCgpCi0gICAgZi5jbG9zZSgpCisgICAgICAgICAgICBlbGlmIGdsaWJjOgorICAgICAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgorICAgICAgICAgICAgICAgICAgICBsaWIgPSAnZ2xpYmMnCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBnbGliY3ZlcnNpb24KKyAgICAgICAgICAgICAgICBlbGlmIGdsaWJjdmVyc2lvbiA+IHZlcnNpb246CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBnbGliY3ZlcnNpb24KKyAgICAgICAgICAgIGVsaWYgc286CisgICAgICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6CisgICAgICAgICAgICAgICAgICAgIGxpYiA9ICdsaWJjJworICAgICAgICAgICAgICAgICAgICBpZiBzb3ZlcnNpb24gYW5kIHNvdmVyc2lvbiA+IHZlcnNpb246CisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc292ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIGlmIHRocmVhZHMgYW5kIHZlcnNpb25bLWxlbih0aHJlYWRzKTpdICE9IHRocmVhZHM6CisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gdmVyc2lvbiArIHRocmVhZHMKKyAgICAgICAgICAgIHBvcyA9IG0uZW5kKCkKICAgICByZXR1cm4gbGliLCB2ZXJzaW9uCiAKIGRlZiBfZGlzdF90cnlfaGFyZGVyKGRpc3RuYW1lLCB2ZXJzaW9uLCBpZCk6CkBAIC0yOTgsNiArMjk5LDE1IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2Rpc3RzPV9zdXBwb3J0ZWRfZGlzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWU9MSk6CisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigiZGlzdCgpIGFuZCBsaW51eF9kaXN0cmlidXRpb24oKSBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICAgImluIFB5dGhvbiAzLjUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43IiwKKyAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICByZXR1cm4gX2xpbnV4X2Rpc3RyaWJ1dGlvbihkaXN0bmFtZSwgdmVyc2lvbiwgaWQsIHN1cHBvcnRlZF9kaXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lKQorCitkZWYgX2xpbnV4X2Rpc3RyaWJ1dGlvbihkaXN0bmFtZSwgdmVyc2lvbiwgaWQsIHN1cHBvcnRlZF9kaXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZGlzdHJpYnV0aW9uX25hbWUpOgogCiAgICAgIiIiIFRyaWVzIHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgTGludXggT1MgZGlzdHJpYnV0aW9uIG5hbWUuCiAKQEAgLTM2NCw5ICszNzQsMTMgQEAKICAgICAgICAgYXJncyBnaXZlbiBhcyBwYXJhbWV0ZXJzLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpbnV4X2Rpc3RyaWJ1dGlvbihkaXN0bmFtZSwgdmVyc2lvbiwgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRfZGlzdHM9c3VwcG9ydGVkX2Rpc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9kaXN0cmlidXRpb25fbmFtZT0wKQorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oImRpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAgICJpbiBQeXRob24gMy41IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNyIsCisgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIF9saW51eF9kaXN0cmlidXRpb24oZGlzdG5hbWUsIHZlcnNpb24sIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1zdXBwb3J0ZWRfZGlzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9kaXN0cmlidXRpb25fbmFtZT0wKQogCiBkZWYgcG9wZW4oY21kLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAKQEAgLTQyNiw3ICs0NDAsNyBAQAogICAgICMgVHJ5IHNvbWUgY29tbW9uIGNtZCBzdHJpbmdzCiAgICAgZm9yIGNtZCBpbiAoJ3ZlcicsICdjb21tYW5kIC9jIHZlcicsICdjbWQgL2MgdmVyJyk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHBpcGUgPSBwb3BlbihjbWQpCisgICAgICAgICAgICBwaXBlID0gb3MucG9wZW4oY21kKQogICAgICAgICAgICAgaW5mbyA9IHBpcGUucmVhZCgpCiAgICAgICAgICAgICBpZiBwaXBlLmNsb3NlKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignY29tbWFuZCBmYWlsZWQnKQpAQCAtMTQyNiw3ICsxNDQwLDE1IEBACiAKICAgICBlbGlmIHN5c3RlbSBpbiAoJ0xpbnV4JywpOgogICAgICAgICAjIExpbnV4IGJhc2VkIHN5c3RlbXMKLSAgICAgICAgZGlzdG5hbWUsIGRpc3R2ZXJzaW9uLCBkaXN0aWQgPSBkaXN0KCcnKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCisgICAgICAgICAgICAgICAgJ2lnbm9yZScsCisgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKKyAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgZGlzdG5hbWUsIGRpc3R2ZXJzaW9uLCBkaXN0aWQgPSBkaXN0KCcnKQogICAgICAgICBpZiBkaXN0bmFtZSBhbmQgbm90IHRlcnNlOgogICAgICAgICAgICAgcGxhdGZvcm0gPSBfcGxhdGZvcm0oc3lzdGVtLCByZWxlYXNlLCBtYWNoaW5lLCBwcm9jZXNzb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCcsCmRpZmYgLS1naXQgYS9MaWIvcG9wbGliLnB5IGIvTGliL3BvcGxpYi5weQppbmRleCA0OTE1NjI4Li5mNjcyMzkwIDEwMDY0NAotLS0gYS9MaWIvcG9wbGliLnB5CisrKyBiL0xpYi9wb3BsaWIucHkKQEAgLTcxLDYgKzcxLDcgQEAKICAgICAgICAgICAgIFVJREwgW21zZ10gICAgICAgICAgICAgIHVpZGwobXNnID0gTm9uZSkKICAgICAgICAgICAgIENBUEEgICAgICAgICAgICAgICAgICAgIGNhcGEoKQogICAgICAgICAgICAgU1RMUyAgICAgICAgICAgICAgICAgICAgc3RscygpCisgICAgICAgICAgICBVVEY4ICAgICAgICAgICAgICAgICAgICB1dGY4KCkKIAogICAgIFJhaXNlcyBvbmUgZXhjZXB0aW9uOiAnZXJyb3JfcHJvdG8nLgogCkBAIC0zNDgsNiArMzQ5LDEyIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb25nY21kKCdVSURMJykKIAogCisgICAgZGVmIHV0Zjgoc2VsZik6CisgICAgICAgICIiIlRyeSB0byBlbnRlciBVVEYtOCBtb2RlIChzZWUgUkZDIDY4NTYpLiBSZXR1cm5zIHNlcnZlciByZXNwb25zZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zaG9ydGNtZCgnVVRGOCcpCisKKwogICAgIGRlZiBjYXBhKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gc2VydmVyIGNhcGFiaWxpdGllcyAoUkZDIDI0NDkpIGFzIGEgZGljdGlvbmFyeQogICAgICAgICA+Pj4gYz1wb3BsaWIuUE9QMygnbG9jYWxob3N0JykKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IDBhYTUzZmUuLjA5Yjg4OTcgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtMjIsNyArMjIsOCBAQAogICAgICAgICAgICAiaXNtb3VudCIsICJleHBhbmR1c2VyIiwiZXhwYW5kdmFycyIsIm5vcm1wYXRoIiwiYWJzcGF0aCIsCiAgICAgICAgICAgICJzYW1lZmlsZSIsInNhbWVvcGVuZmlsZSIsInNhbWVzdGF0IiwKICAgICAgICAgICAgImN1cmRpciIsInBhcmRpciIsInNlcCIsInBhdGhzZXAiLCJkZWZwYXRoIiwiYWx0c2VwIiwiZXh0c2VwIiwKLSAgICAgICAgICAgImRldm51bGwiLCJyZWFscGF0aCIsInN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIiwicmVscGF0aCJdCisgICAgICAgICAgICJkZXZudWxsIiwicmVhbHBhdGgiLCJzdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyIsInJlbHBhdGgiLAorICAgICAgICAgICAiY29tbW9ucGF0aCJdCiAKICMgU3RyaW5ncyByZXByZXNlbnRpbmcgdmFyaW91cyBwYXRoLXJlbGF0ZWQgYml0cyBhbmQgcGllY2VzLgogIyBUaGVzZSBhcmUgcHJpbWFyaWx5IGZvciBleHBvcnQ7IGludGVybmFsbHksIHRoZXkgYXJlIGhhcmRjb2RlZC4KQEAgLTc1LDYgKzc2LDggQEAKICAgICBzZXAgPSBfZ2V0X3NlcChhKQogICAgIHBhdGggPSBhCiAgICAgdHJ5OgorICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgIHBhdGhbOjBdICsgc2VwICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KICAgICAgICAgZm9yIGIgaW4gcDoKICAgICAgICAgICAgIGlmIGIuc3RhcnRzd2l0aChzZXApOgogICAgICAgICAgICAgICAgIHBhdGggPSBiCkBAIC04MiwxMSArODUsOCBAQAogICAgICAgICAgICAgICAgIHBhdGggKz0gYgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwYXRoICs9IHNlcCArIGIKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICBpZiBhbGwoaXNpbnN0YW5jZShzLCAoc3RyLCBieXRlcykpIGZvciBzIGluIChhLCkgKyBwKToKLSAgICAgICAgICAgICMgTXVzdCBoYXZlIGEgbWl4dHVyZSBvZiB0ZXh0IGFuZCBiaW5hcnkgZGF0YQotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggc3RyaW5ncyBhbmQgYnl0ZXMgaW4gcGF0aCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBvbmVudHMiKSBmcm9tIE5vbmUKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEJ5dGVzV2FybmluZyk6CisgICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2pvaW4nLCBhLCAqcCkKICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gcGF0aAogCkBAIC00NDUsMTMgKzQ0NSw1OCBAQAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCiAKLSAgICBzdGFydF9saXN0ID0gW3ggZm9yIHggaW4gYWJzcGF0aChzdGFydCkuc3BsaXQoc2VwKSBpZiB4XQotICAgIHBhdGhfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgocGF0aCkuc3BsaXQoc2VwKSBpZiB4XQorICAgIHRyeToKKyAgICAgICAgc3RhcnRfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgoc3RhcnQpLnNwbGl0KHNlcCkgaWYgeF0KKyAgICAgICAgcGF0aF9saXN0ID0gW3ggZm9yIHggaW4gYWJzcGF0aChwYXRoKS5zcGxpdChzZXApIGlmIHhdCisgICAgICAgICMgV29yayBvdXQgaG93IG11Y2ggb2YgdGhlIGZpbGVwYXRoIGlzIHNoYXJlZCBieSBzdGFydCBhbmQgcGF0aC4KKyAgICAgICAgaSA9IGxlbihjb21tb25wcmVmaXgoW3N0YXJ0X2xpc3QsIHBhdGhfbGlzdF0pKQogCi0gICAgIyBXb3JrIG91dCBob3cgbXVjaCBvZiB0aGUgZmlsZXBhdGggaXMgc2hhcmVkIGJ5IHN0YXJ0IGFuZCBwYXRoLgotICAgIGkgPSBsZW4oY29tbW9ucHJlZml4KFtzdGFydF9saXN0LCBwYXRoX2xpc3RdKSkKKyAgICAgICAgcmVsX2xpc3QgPSBbcGFyZGlyXSAqIChsZW4oc3RhcnRfbGlzdCktaSkgKyBwYXRoX2xpc3RbaTpdCisgICAgICAgIGlmIG5vdCByZWxfbGlzdDoKKyAgICAgICAgICAgIHJldHVybiBjdXJkaXIKKyAgICAgICAgcmV0dXJuIGpvaW4oKnJlbF9saXN0KQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgQnl0ZXNXYXJuaW5nLCBEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICBnZW5lcmljcGF0aC5fY2hlY2tfYXJnX3R5cGVzKCdyZWxwYXRoJywgcGF0aCwgc3RhcnQpCisgICAgICAgIHJhaXNlCiAKLSAgICByZWxfbGlzdCA9IFtwYXJkaXJdICogKGxlbihzdGFydF9saXN0KS1pKSArIHBhdGhfbGlzdFtpOl0KLSAgICBpZiBub3QgcmVsX2xpc3Q6Ci0gICAgICAgIHJldHVybiBjdXJkaXIKLSAgICByZXR1cm4gam9pbigqcmVsX2xpc3QpCisKKyMgUmV0dXJuIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aCBvZiB0aGUgc2VxdWVuY2Ugb2YgcGF0aHMgZ2l2ZW4gYXMgaW5wdXQuCisjIFRoZSBwYXRocyBhcmUgbm90IG5vcm1hbGl6ZWQgYmVmb3JlIGNvbXBhcmluZyB0aGVtICh0aGlzIGlzIHRoZQorIyByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyKS4gQW55IHRyYWlsaW5nIHNlcGFyYXRvciBpcyBzdHJpcHBlZCBmcm9tIHRoZQorIyByZXR1cm5lZCBwYXRoLgorCitkZWYgY29tbW9ucGF0aChwYXRocyk6CisgICAgIiIiR2l2ZW4gYSBzZXF1ZW5jZSBvZiBwYXRoIG5hbWVzLCByZXR1cm5zIHRoZSBsb25nZXN0IGNvbW1vbiBzdWItcGF0aC4iIiIKKworICAgIGlmIG5vdCBwYXRoczoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY29tbW9ucGF0aCgpIGFyZyBpcyBhbiBlbXB0eSBzZXF1ZW5jZScpCisKKyAgICBpZiBpc2luc3RhbmNlKHBhdGhzWzBdLCBieXRlcyk6CisgICAgICAgIHNlcCA9IGInLycKKyAgICAgICAgY3VyZGlyID0gYicuJworICAgIGVsc2U6CisgICAgICAgIHNlcCA9ICcvJworICAgICAgICBjdXJkaXIgPSAnLicKKworICAgIHRyeToKKyAgICAgICAgc3BsaXRfcGF0aHMgPSBbcGF0aC5zcGxpdChzZXApIGZvciBwYXRoIGluIHBhdGhzXQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlzYWJzLCA9IHNldChwWzoxXSA9PSBzZXAgZm9yIHAgaW4gcGF0aHMpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgbWl4IGFic29sdXRlIGFuZCByZWxhdGl2ZSBwYXRocyIpIGZyb20gTm9uZQorCisgICAgICAgIHNwbGl0X3BhdGhzID0gW1tjIGZvciBjIGluIHMgaWYgYyBhbmQgYyAhPSBjdXJkaXJdIGZvciBzIGluIHNwbGl0X3BhdGhzXQorICAgICAgICBzMSA9IG1pbihzcGxpdF9wYXRocykKKyAgICAgICAgczIgPSBtYXgoc3BsaXRfcGF0aHMpCisgICAgICAgIGNvbW1vbiA9IHMxCisgICAgICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShzMSk6CisgICAgICAgICAgICBpZiBjICE9IHMyW2ldOgorICAgICAgICAgICAgICAgIGNvbW1vbiA9IHMxWzppXQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcHJlZml4ID0gc2VwIGlmIGlzYWJzIGVsc2Ugc2VwWzowXQorICAgICAgICByZXR1cm4gcHJlZml4ICsgc2VwLmpvaW4oY29tbW9uKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgIGdlbmVyaWNwYXRoLl9jaGVja19hcmdfdHlwZXMoJ2NvbW1vbnBhdGgnLCAqcGF0aHMpCisgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS9MaWIvcHByaW50LnB5IGIvTGliL3BwcmludC5weQppbmRleCAyY2JmZmVkLi44NzY0OWI0IDEwMDY0NAotLS0gYS9MaWIvcHByaW50LnB5CisrKyBiL0xpYi9wcHJpbnQucHkKQEAgLTM0LDkgKzM0LDEwIEBACiAKICIiIgogCitpbXBvcnQgY29sbGVjdGlvbnMgYXMgX2NvbGxlY3Rpb25zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMgYXMgX3N5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QgYXMgX09yZGVyZWREaWN0CitpbXBvcnQgdHlwZXMgYXMgX3R5cGVzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTyBhcyBfU3RyaW5nSU8KIAogX19hbGxfXyA9IFsicHByaW50IiwicGZvcm1hdCIsImlzcmVhZGFibGUiLCJpc3JlY3Vyc2l2ZSIsInNhZmVyZXByIiwKQEAgLTg1LDE0ICs4NiwxMCBAQAogCiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJ2ID0gc2VsZi5vYmouX19sdF9fKG90aGVyLm9iaikKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm9iaiA8IG90aGVyLm9iagogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgcnYgPSBOb3RJbXBsZW1lbnRlZAotCi0gICAgICAgIGlmIHJ2IGlzIE5vdEltcGxlbWVudGVkOgotICAgICAgICAgICAgcnYgPSAoc3RyKHR5cGUoc2VsZi5vYmopKSwgaWQoc2VsZi5vYmopKSA8IFwKLSAgICAgICAgICAgICAgICAgKHN0cih0eXBlKG90aGVyLm9iaikpLCBpZChvdGhlci5vYmopKQotICAgICAgICByZXR1cm4gcnYKKyAgICAgICAgICAgIHJldHVybiAoKHN0cih0eXBlKHNlbGYub2JqKSksIGlkKHNlbGYub2JqKSkgPCBcCisgICAgICAgICAgICAgICAgICAgIChzdHIodHlwZShvdGhlci5vYmopKSwgaWQob3RoZXIub2JqKSkpCiAKIGRlZiBfc2FmZV90dXBsZSh0KToKICAgICAiSGVscGVyIGZ1bmN0aW9uIGZvciBjb21wYXJpbmcgMi10dXBsZXMiCkBAIC0xMjMsOSArMTIwLDEyIEBACiAgICAgICAgICIiIgogICAgICAgICBpbmRlbnQgPSBpbnQoaW5kZW50KQogICAgICAgICB3aWR0aCA9IGludCh3aWR0aCkKLSAgICAgICAgYXNzZXJ0IGluZGVudCA+PSAwLCAiaW5kZW50IG11c3QgYmUgPj0gMCIKLSAgICAgICAgYXNzZXJ0IGRlcHRoIGlzIE5vbmUgb3IgZGVwdGggPiAwLCAiZGVwdGggbXVzdCBiZSA+IDAiCi0gICAgICAgIGFzc2VydCB3aWR0aCwgIndpZHRoIG11c3QgYmUgIT0gMCIKKyAgICAgICAgaWYgaW5kZW50IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2luZGVudCBtdXN0IGJlID49IDAnKQorICAgICAgICBpZiBkZXB0aCBpcyBub3QgTm9uZSBhbmQgZGVwdGggPD0gMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RlcHRoIG11c3QgYmUgPiAwJykKKyAgICAgICAgaWYgbm90IHdpZHRoOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignd2lkdGggbXVzdCBiZSAhPSAwJykKICAgICAgICAgc2VsZi5fZGVwdGggPSBkZXB0aAogICAgICAgICBzZWxmLl9pbmRlbnRfcGVyX2xldmVsID0gaW5kZW50CiAgICAgICAgIHNlbGYuX3dpZHRoID0gd2lkdGgKQEAgLTE1MiwxMzMgKzE1MiwyMjMgQEAKICAgICAgICAgcmV0dXJuIHJlYWRhYmxlIGFuZCBub3QgcmVjdXJzaXZlCiAKICAgICBkZWYgX2Zvcm1hdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKLSAgICAgICAgbGV2ZWwgPSBsZXZlbCArIDEKICAgICAgICAgb2JqaWQgPSBpZChvYmplY3QpCiAgICAgICAgIGlmIG9iamlkIGluIGNvbnRleHQ6CiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUoX3JlY3Vyc2lvbihvYmplY3QpKQogICAgICAgICAgICAgc2VsZi5fcmVjdXJzaXZlID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHJlcCA9IHNlbGYuX3JlcHIob2JqZWN0LCBjb250ZXh0LCBsZXZlbCAtIDEpCi0gICAgICAgIHR5cCA9IHR5cGUob2JqZWN0KQotICAgICAgICBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIDEgLSBpbmRlbnQgLSBhbGxvd2FuY2UKLSAgICAgICAgc2VwTGluZXMgPSBsZW4ocmVwKSA+IG1heF93aWR0aAorICAgICAgICByZXAgPSBzZWxmLl9yZXByKG9iamVjdCwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIG1heF93aWR0aCA9IHNlbGYuX3dpZHRoIC0gaW5kZW50IC0gYWxsb3dhbmNlCisgICAgICAgIGlmIGxlbihyZXApID4gbWF4X3dpZHRoOgorICAgICAgICAgICAgcCA9IHNlbGYuX2Rpc3BhdGNoLmdldCh0eXBlKG9iamVjdCkuX19yZXByX18sIE5vbmUpCisgICAgICAgICAgICBpZiBwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQorICAgICAgICAgICAgICAgIHAoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCArIDEpCisgICAgICAgICAgICAgICAgZGVsIGNvbnRleHRbb2JqaWRdCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob2JqZWN0LCBkaWN0KToKKyAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLl9wcHJpbnRfZGljdChvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwgKyAxKQorICAgICAgICAgICAgICAgIGRlbCBjb250ZXh0W29iamlkXQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBzdHJlYW0ud3JpdGUocmVwKQorCisgICAgX2Rpc3BhdGNoID0ge30KKworICAgIGRlZiBfcHByaW50X2RpY3Qoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIHdyaXRlKCd7JykKKyAgICAgICAgaWYgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA+IDE6CisgICAgICAgICAgICB3cml0ZSgoc2VsZi5faW5kZW50X3Blcl9sZXZlbCAtIDEpICogJyAnKQorICAgICAgICBsZW5ndGggPSBsZW4ob2JqZWN0KQorICAgICAgICBpZiBsZW5ndGg6CisgICAgICAgICAgICBpdGVtcyA9IHNvcnRlZChvYmplY3QuaXRlbXMoKSwga2V5PV9zYWZlX3R1cGxlKQorICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2RpY3RfaXRlbXMoaXRlbXMsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIHdyaXRlKCd9JykKIAotICAgICAgICBpZiBzZXBMaW5lczoKLSAgICAgICAgICAgIHIgPSBnZXRhdHRyKHR5cCwgIl9fcmVwcl9fIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBkaWN0KToKLSAgICAgICAgICAgICAgICB3cml0ZSgneycpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCi0gICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuKG9iamVjdCkKLSAgICAgICAgICAgICAgICBpZiBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHRbb2JqaWRdID0gMQotICAgICAgICAgICAgICAgICAgICBpbmRlbnQgPSBpbmRlbnQgKyBzZWxmLl9pbmRlbnRfcGVyX2xldmVsCi0gICAgICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3ModHlwLCBfT3JkZXJlZERpY3QpOgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBsaXN0KG9iamVjdC5pdGVtcygpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQob2JqZWN0Lml0ZW1zKCksIGtleT1fc2FmZV90dXBsZSkKLSAgICAgICAgICAgICAgICAgICAga2V5LCBlbnQgPSBpdGVtc1swXQotICAgICAgICAgICAgICAgICAgICByZXAgPSBzZWxmLl9yZXByKGtleSwgY29udGV4dCwgbGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlKHJlcCkKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJzogJykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQgKyBsZW4ocmVwKSArIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5LCBlbnQgaW4gaXRlbXNbMTpdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcCA9IHNlbGYuX3JlcHIoa2V5LCBjb250ZXh0LCBsZXZlbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSgnLFxuJXMlczogJyAlICgnICcqaW5kZW50LCByZXApKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50ICsgbGVuKHJlcCkgKyAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dhbmNlICsgMSwgY29udGV4dCwgbGV2ZWwpCi0gICAgICAgICAgICAgICAgICAgIGluZGVudCA9IGluZGVudCAtIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwKLSAgICAgICAgICAgICAgICAgICAgZGVsIGNvbnRleHRbb2JqaWRdCi0gICAgICAgICAgICAgICAgd3JpdGUoJ30nKQotICAgICAgICAgICAgICAgIHJldHVybgorICAgIF9kaXNwYXRjaFtkaWN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfZGljdAogCi0gICAgICAgICAgICBpZiAoKGlzc3ViY2xhc3ModHlwLCBsaXN0KSBhbmQgciBpcyBsaXN0Ll9fcmVwcl9fKSBvcgotICAgICAgICAgICAgICAgIChpc3N1YmNsYXNzKHR5cCwgdHVwbGUpIGFuZCByIGlzIHR1cGxlLl9fcmVwcl9fKSBvcgotICAgICAgICAgICAgICAgIChpc3N1YmNsYXNzKHR5cCwgc2V0KSBhbmQgciBpcyBzZXQuX19yZXByX18pIG9yCi0gICAgICAgICAgICAgICAgKGlzc3ViY2xhc3ModHlwLCBmcm96ZW5zZXQpIGFuZCByIGlzIGZyb3plbnNldC5fX3JlcHJfXykKLSAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuKG9iamVjdCkKLSAgICAgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgbGlzdCk6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCdbJykKLSAgICAgICAgICAgICAgICAgICAgZW5kY2hhciA9ICddJwotICAgICAgICAgICAgICAgIGVsaWYgaXNzdWJjbGFzcyh0eXAsIHR1cGxlKToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJygnKQotICAgICAgICAgICAgICAgICAgICBlbmRjaGFyID0gJyknCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxlbmd0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlKHJlcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICBpZiB0eXAgaXMgc2V0OgotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoJ3snKQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kY2hhciA9ICd9JwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUodHlwLl9fbmFtZV9fKQotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUoJyh7JykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZGNoYXIgPSAnfSknCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gbGVuKHR5cC5fX25hbWVfXykgKyAxCi0gICAgICAgICAgICAgICAgICAgIG9iamVjdCA9IHNvcnRlZChvYmplY3QsIGtleT1fc2FmZV9rZXkpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKChzZWxmLl9pbmRlbnRfcGVyX2xldmVsIC0gMSkgKiAnICcpCi0gICAgICAgICAgICAgICAgaWYgbGVuZ3RoOgotICAgICAgICAgICAgICAgICAgICBjb250ZXh0W29iamlkXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50ICsgc2VsZi5faW5kZW50X3Blcl9sZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQotICAgICAgICAgICAgICAgICAgICBkZWwgY29udGV4dFtvYmppZF0KLSAgICAgICAgICAgICAgICBpZiBpc3N1YmNsYXNzKHR5cCwgdHVwbGUpIGFuZCBsZW5ndGggPT0gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUoJywnKQotICAgICAgICAgICAgICAgIHdyaXRlKGVuZGNoYXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgZGVmIF9wcHJpbnRfb3JkZXJlZF9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoJykKKyAgICAgICAgc2VsZi5fZm9ybWF0KGxpc3Qob2JqZWN0Lml0ZW1zKCkpLCBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKyBsZW4oY2xzLl9fbmFtZV9fKSArIDEsIGFsbG93YW5jZSArIDEsCisgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCcpJykKIAotICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyh0eXAsIHN0cikgYW5kIGxlbihvYmplY3QpID4gMCBhbmQgciBpcyBzdHIuX19yZXByX186Ci0gICAgICAgICAgICAgICAgY2h1bmtzID0gW10KLSAgICAgICAgICAgICAgICBsaW5lcyA9IG9iamVjdC5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgICAgICAgICAgaWYgbGV2ZWwgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgbWF4X3dpZHRoIC09IDIKLSAgICAgICAgICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAgICAgICAgICAgICAgICAgICByZXAgPSByZXByKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihyZXApIDw9IG1heF93aWR0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQocmVwKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBBIGxpc3Qgb2YgYWx0ZXJuYXRpbmcgKG5vbi1zcGFjZSwgc3BhY2UpIHN0cmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gcmUuc3BsaXQocicoXHMrKScsIGxpbmUpICsgWycnXQotICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9ICcnCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4ocGFydHMpLCAyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gcGFydHNbaV0gKyBwYXJ0c1tpKzFdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gY3VycmVudCArIHBhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZW4ocmVwcihjYW5kaWRhdGUpKSA+IG1heF93aWR0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQocmVwcihjdXJyZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHBhcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5PcmRlcmVkRGljdC5fX3JlcHJfX10gPSBfcHByaW50X29yZGVyZWRfZGljdAorCisgICAgZGVmIF9wcHJpbnRfbGlzdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc3RyZWFtLndyaXRlKCdbJykKKyAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCddJykKKworICAgIF9kaXNwYXRjaFtsaXN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfbGlzdAorCisgICAgZGVmIF9wcHJpbnRfdHVwbGUoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHN0cmVhbS53cml0ZSgnKCcpCisgICAgICAgIGVuZGNoYXIgPSAnLCknIGlmIGxlbihvYmplY3QpID09IDEgZWxzZSAnKScKKyAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIGxlbihlbmRjaGFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoZW5kY2hhcikKKworICAgIF9kaXNwYXRjaFt0dXBsZS5fX3JlcHJfX10gPSBfcHByaW50X3R1cGxlCisKKyAgICBkZWYgX3BwcmludF9zZXQoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHlwID0gb2JqZWN0Ll9fY2xhc3NfXworICAgICAgICBpZiB0eXAgaXMgc2V0OgorICAgICAgICAgICAgc3RyZWFtLndyaXRlKCd7JykKKyAgICAgICAgICAgIGVuZGNoYXIgPSAnfScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSh0eXAuX19uYW1lX18gKyAnKHsnKQorICAgICAgICAgICAgZW5kY2hhciA9ICd9KScKKyAgICAgICAgICAgIGluZGVudCArPSBsZW4odHlwLl9fbmFtZV9fKSArIDEKKyAgICAgICAgb2JqZWN0ID0gc29ydGVkKG9iamVjdCwga2V5PV9zYWZlX2tleSkKKyAgICAgICAgc2VsZi5fZm9ybWF0X2l0ZW1zKG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIGxlbihlbmRjaGFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoZW5kY2hhcikKKworICAgIF9kaXNwYXRjaFtzZXQuX19yZXByX19dID0gX3BwcmludF9zZXQKKyAgICBfZGlzcGF0Y2hbZnJvemVuc2V0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfc2V0CisKKyAgICBkZWYgX3BwcmludF9zdHIoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKKyAgICAgICAgICAgIHdyaXRlKHJlcHIob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBjaHVua3MgPSBbXQorICAgICAgICBsaW5lcyA9IG9iamVjdC5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgIGlmIGxldmVsID09IDE6CisgICAgICAgICAgICBpbmRlbnQgKz0gMQorICAgICAgICAgICAgYWxsb3dhbmNlICs9IDEKKyAgICAgICAgbWF4X3dpZHRoMSA9IG1heF93aWR0aCA9IHNlbGYuX3dpZHRoIC0gaW5kZW50CisgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CisgICAgICAgICAgICByZXAgPSByZXByKGxpbmUpCisgICAgICAgICAgICBpZiBpID09IGxlbihsaW5lcykgLSAxOgorICAgICAgICAgICAgICAgIG1heF93aWR0aDEgLT0gYWxsb3dhbmNlCisgICAgICAgICAgICBpZiBsZW4ocmVwKSA8PSBtYXhfd2lkdGgxOgorICAgICAgICAgICAgICAgIGNodW5rcy5hcHBlbmQocmVwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEEgbGlzdCBvZiBhbHRlcm5hdGluZyAobm9uLXNwYWNlLCBzcGFjZSkgc3RyaW5ncworICAgICAgICAgICAgICAgIHBhcnRzID0gcmUuZmluZGFsbChyJ1xTKlxzKicsIGxpbmUpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBhcnRzCisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBwYXJ0c1stMV0KKyAgICAgICAgICAgICAgICBwYXJ0cy5wb3AoKSAgIyBkcm9wIGVtcHR5IGxhc3QgcGFydAorICAgICAgICAgICAgICAgIG1heF93aWR0aDIgPSBtYXhfd2lkdGgKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gJycKKyAgICAgICAgICAgICAgICBmb3IgaiwgcGFydCBpbiBlbnVtZXJhdGUocGFydHMpOgorICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjdXJyZW50ICsgcGFydAorICAgICAgICAgICAgICAgICAgICBpZiBqID09IGxlbihwYXJ0cykgLSAxIGFuZCBpID09IGxlbihsaW5lcykgLSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3dpZHRoMiAtPSBhbGxvd2FuY2UKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHJlcHIoY2FuZGlkYXRlKSkgPiBtYXhfd2lkdGgyOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcHIoY3VycmVudCkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGNodW5rcykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUocmVwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBsZXZlbCA9PSAxOgotICAgICAgICAgICAgICAgICAgICB3cml0ZSgnKCcpCi0gICAgICAgICAgICAgICAgZm9yIGksIHJlcCBpbiBlbnVtZXJhdGUoY2h1bmtzKToKLSAgICAgICAgICAgICAgICAgICAgaWYgaSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSgnXG4nICsgJyAnKmluZGVudCkKLSAgICAgICAgICAgICAgICAgICAgd3JpdGUocmVwKQotICAgICAgICAgICAgICAgIGlmIGxldmVsID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlKCcpJykKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgd3JpdGUocmVwKQorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHBhcnQKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjYW5kaWRhdGUKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50OgorICAgICAgICAgICAgICAgICAgICBjaHVua3MuYXBwZW5kKHJlcHIoY3VycmVudCkpCisgICAgICAgIGlmIGxlbihjaHVua3MpID09IDE6CisgICAgICAgICAgICB3cml0ZShyZXApCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbGV2ZWwgPT0gMToKKyAgICAgICAgICAgIHdyaXRlKCcoJykKKyAgICAgICAgZm9yIGksIHJlcCBpbiBlbnVtZXJhdGUoY2h1bmtzKToKKyAgICAgICAgICAgIGlmIGkgPiAwOgorICAgICAgICAgICAgICAgIHdyaXRlKCdcbicgKyAnICcqaW5kZW50KQorICAgICAgICAgICAgd3JpdGUocmVwKQorICAgICAgICBpZiBsZXZlbCA9PSAxOgorICAgICAgICAgICAgd3JpdGUoJyknKQorCisgICAgX2Rpc3BhdGNoW3N0ci5fX3JlcHJfX10gPSBfcHByaW50X3N0cgorCisgICAgZGVmIF9wcHJpbnRfYnl0ZXMoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIGlmIGxlbihvYmplY3QpIDw9IDQ6CisgICAgICAgICAgICB3cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgcGFyZW5zID0gbGV2ZWwgPT0gMQorICAgICAgICBpZiBwYXJlbnM6CisgICAgICAgICAgICBpbmRlbnQgKz0gMQorICAgICAgICAgICAgYWxsb3dhbmNlICs9IDEKKyAgICAgICAgICAgIHdyaXRlKCcoJykKKyAgICAgICAgZGVsaW0gPSAnJworICAgICAgICBmb3IgcmVwIGluIF93cmFwX2J5dGVzX3JlcHIob2JqZWN0LCBzZWxmLl93aWR0aCAtIGluZGVudCwgYWxsb3dhbmNlKToKKyAgICAgICAgICAgIHdyaXRlKGRlbGltKQorICAgICAgICAgICAgd3JpdGUocmVwKQorICAgICAgICAgICAgaWYgbm90IGRlbGltOgorICAgICAgICAgICAgICAgIGRlbGltID0gJ1xuJyArICcgJyppbmRlbnQKKyAgICAgICAgaWYgcGFyZW5zOgorICAgICAgICAgICAgd3JpdGUoJyknKQorCisgICAgX2Rpc3BhdGNoW2J5dGVzLl9fcmVwcl9fXSA9IF9wcHJpbnRfYnl0ZXMKKworICAgIGRlZiBfcHByaW50X2J5dGVhcnJheShzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgd3JpdGUgPSBzdHJlYW0ud3JpdGUKKyAgICAgICAgd3JpdGUoJ2J5dGVhcnJheSgnKQorICAgICAgICBzZWxmLl9wcHJpbnRfYnl0ZXMoYnl0ZXMob2JqZWN0KSwgc3RyZWFtLCBpbmRlbnQgKyAxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsICsgMSkKKyAgICAgICAgd3JpdGUoJyknKQorCisgICAgX2Rpc3BhdGNoW2J5dGVhcnJheS5fX3JlcHJfX10gPSBfcHByaW50X2J5dGVhcnJheQorCisgICAgZGVmIF9wcHJpbnRfbWFwcGluZ3Byb3h5KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzdHJlYW0ud3JpdGUoJ21hcHBpbmdwcm94eSgnKQorICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LmNvcHkoKSwgc3RyZWFtLCBpbmRlbnQgKyAxMywgYWxsb3dhbmNlICsgMSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoJyknKQorCisgICAgX2Rpc3BhdGNoW190eXBlcy5NYXBwaW5nUHJveHlUeXBlLl9fcmVwcl9fXSA9IF9wcHJpbnRfbWFwcGluZ3Byb3h5CisKKyAgICBkZWYgX2Zvcm1hdF9kaWN0X2l0ZW1zKHNlbGYsIGl0ZW1zLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOgorICAgICAgICB3cml0ZSA9IHN0cmVhbS53cml0ZQorICAgICAgICBpbmRlbnQgKz0gc2VsZi5faW5kZW50X3Blcl9sZXZlbAorICAgICAgICBkZWxpbW5sID0gJyxcbicgKyAnICcgKiBpbmRlbnQKKyAgICAgICAgbGFzdF9pbmRleCA9IGxlbihpdGVtcykgLSAxCisgICAgICAgIGZvciBpLCAoa2V5LCBlbnQpIGluIGVudW1lcmF0ZShpdGVtcyk6CisgICAgICAgICAgICBsYXN0ID0gaSA9PSBsYXN0X2luZGV4CisgICAgICAgICAgICByZXAgPSBzZWxmLl9yZXByKGtleSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICB3cml0ZShyZXApCisgICAgICAgICAgICB3cml0ZSgnOiAnKQorICAgICAgICAgICAgc2VsZi5fZm9ybWF0KGVudCwgc3RyZWFtLCBpbmRlbnQgKyBsZW4ocmVwKSArIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dhbmNlIGlmIGxhc3QgZWxzZSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgaWYgbm90IGxhc3Q6CisgICAgICAgICAgICAgICAgd3JpdGUoZGVsaW1ubCkKIAogICAgIGRlZiBfZm9ybWF0X2l0ZW1zKHNlbGYsIGl0ZW1zLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CiAgICAgICAgIHdyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIGluZGVudCArPSBzZWxmLl9pbmRlbnRfcGVyX2xldmVsCisgICAgICAgIGlmIHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgPiAxOgorICAgICAgICAgICAgd3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKICAgICAgICAgZGVsaW1ubCA9ICcsXG4nICsgJyAnICogaW5kZW50CiAgICAgICAgIGRlbGltID0gJycKLSAgICAgICAgd2lkdGggPSBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudCAtIGFsbG93YW5jZSArIDIKLSAgICAgICAgZm9yIGVudCBpbiBpdGVtczoKKyAgICAgICAgd2lkdGggPSBtYXhfd2lkdGggPSBzZWxmLl93aWR0aCAtIGluZGVudCArIDEKKyAgICAgICAgaXQgPSBpdGVyKGl0ZW1zKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0X2VudCA9IG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGxhc3QgPSBGYWxzZQorICAgICAgICB3aGlsZSBub3QgbGFzdDoKKyAgICAgICAgICAgIGVudCA9IG5leHRfZW50CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV4dF9lbnQgPSBuZXh0KGl0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgbGFzdCA9IFRydWUKKyAgICAgICAgICAgICAgICBtYXhfd2lkdGggLT0gYWxsb3dhbmNlCisgICAgICAgICAgICAgICAgd2lkdGggLT0gYWxsb3dhbmNlCiAgICAgICAgICAgICBpZiBzZWxmLl9jb21wYWN0OgogICAgICAgICAgICAgICAgIHJlcCA9IHNlbGYuX3JlcHIoZW50LCBjb250ZXh0LCBsZXZlbCkKICAgICAgICAgICAgICAgICB3ID0gbGVuKHJlcCkgKyAyCkBAIC0yOTQsNyArMzg0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHdyaXRlKGRlbGltKQogICAgICAgICAgICAgZGVsaW0gPSBkZWxpbW5sCi0gICAgICAgICAgICBzZWxmLl9mb3JtYXQoZW50LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChlbnQsIHN0cmVhbSwgaW5kZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93YW5jZSBpZiBsYXN0IGVsc2UgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKIAogICAgIGRlZiBfcmVwcihzZWxmLCBvYmplY3QsIGNvbnRleHQsIGxldmVsKToKICAgICAgICAgcmVwciwgcmVhZGFibGUsIHJlY3Vyc2l2ZSA9IHNlbGYuZm9ybWF0KG9iamVjdCwgY29udGV4dC5jb3B5KCksCkBAIC0zMTIsMjkgKzQwNCw5MyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIF9zYWZlX3JlcHIob2JqZWN0LCBjb250ZXh0LCBtYXhsZXZlbHMsIGxldmVsKQogCisgICAgZGVmIF9wcHJpbnRfZGVmYXVsdF9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgbGVuKG9iamVjdCk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHJkZiA9IHNlbGYuX3JlcHIob2JqZWN0LmRlZmF1bHRfZmFjdG9yeSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgaW5kZW50ICs9IGxlbihjbHMuX19uYW1lX18pICsgMQorICAgICAgICBzdHJlYW0ud3JpdGUoJyVzKCVzLFxuJXMnICUgKGNscy5fX25hbWVfXywgcmRmLCAnICcgKiBpbmRlbnQpKQorICAgICAgICBzZWxmLl9wcHJpbnRfZGljdChvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAxLCBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgc3RyZWFtLndyaXRlKCcpJykKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuX19yZXByX19dID0gX3BwcmludF9kZWZhdWx0X2RpY3QKKworICAgIGRlZiBfcHByaW50X2NvdW50ZXIoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgICAgICBzdHJlYW0ud3JpdGUoY2xzLl9fbmFtZV9fICsgJyh7JykKKyAgICAgICAgaWYgc2VsZi5faW5kZW50X3Blcl9sZXZlbCA+IDE6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUoKHNlbGYuX2luZGVudF9wZXJfbGV2ZWwgLSAxKSAqICcgJykKKyAgICAgICAgaXRlbXMgPSBvYmplY3QubW9zdF9jb21tb24oKQorICAgICAgICBzZWxmLl9mb3JtYXRfZGljdF9pdGVtcyhpdGVtcywgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKyBsZW4oY2xzLl9fbmFtZV9fKSArIDEsIGFsbG93YW5jZSArIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICBzdHJlYW0ud3JpdGUoJ30pJykKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuQ291bnRlci5fX3JlcHJfX10gPSBfcHByaW50X2NvdW50ZXIKKworICAgIGRlZiBfcHByaW50X2NoYWluX21hcChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgaWYgbm90IGxlbihvYmplY3QubWFwcyk6CisgICAgICAgICAgICBzdHJlYW0ud3JpdGUocmVwcihvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGNscyA9IG9iamVjdC5fX2NsYXNzX18KKyAgICAgICAgc3RyZWFtLndyaXRlKGNscy5fX25hbWVfXyArICcoJykKKyAgICAgICAgaW5kZW50ICs9IGxlbihjbHMuX19uYW1lX18pICsgMQorICAgICAgICBmb3IgaSwgbSBpbiBlbnVtZXJhdGUob2JqZWN0Lm1hcHMpOgorICAgICAgICAgICAgaWYgaSA9PSBsZW4ob2JqZWN0Lm1hcHMpIC0gMToKKyAgICAgICAgICAgICAgICBzZWxmLl9mb3JtYXQobSwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSArIDEsIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgnKScpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2Zvcm1hdChtLCBzdHJlYW0sIGluZGVudCwgMSwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlKCcsXG4nICsgJyAnICogaW5kZW50KQorCisgICAgX2Rpc3BhdGNoW19jb2xsZWN0aW9ucy5DaGFpbk1hcC5fX3JlcHJfX10gPSBfcHByaW50X2NoYWluX21hcAorCisgICAgZGVmIF9wcHJpbnRfZGVxdWUoc2VsZiwgb2JqZWN0LCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCk6CisgICAgICAgIGlmIG5vdCBsZW4ob2JqZWN0KToKKyAgICAgICAgICAgIHN0cmVhbS53cml0ZShyZXByKG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgY2xzID0gb2JqZWN0Ll9fY2xhc3NfXworICAgICAgICBzdHJlYW0ud3JpdGUoY2xzLl9fbmFtZV9fICsgJygnKQorICAgICAgICBpbmRlbnQgKz0gbGVuKGNscy5fX25hbWVfXykgKyAxCisgICAgICAgIHN0cmVhbS53cml0ZSgnWycpCisgICAgICAgIGlmIG9iamVjdC5tYXhsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2Zvcm1hdF9pdGVtcyhvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UgKyAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGxldmVsKQorICAgICAgICAgICAgc3RyZWFtLndyaXRlKCddKScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb3JtYXRfaXRlbXMob2JqZWN0LCBzdHJlYW0sIGluZGVudCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBsZXZlbCkKKyAgICAgICAgICAgIHJtbCA9IHNlbGYuX3JlcHIob2JqZWN0Lm1heGxlbiwgY29udGV4dCwgbGV2ZWwpCisgICAgICAgICAgICBzdHJlYW0ud3JpdGUoJ10sXG4lc21heGxlbj0lcyknICUgKCcgJyAqIGluZGVudCwgcm1sKSkKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuZGVxdWUuX19yZXByX19dID0gX3BwcmludF9kZXF1ZQorCisgICAgZGVmIF9wcHJpbnRfdXNlcl9kaWN0KHNlbGYsIG9iamVjdCwgc3RyZWFtLCBpbmRlbnQsIGFsbG93YW5jZSwgY29udGV4dCwgbGV2ZWwpOgorICAgICAgICBzZWxmLl9mb3JtYXQob2JqZWN0LmRhdGEsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsIC0gMSkKKworICAgIF9kaXNwYXRjaFtfY29sbGVjdGlvbnMuVXNlckRpY3QuX19yZXByX19dID0gX3BwcmludF91c2VyX2RpY3QKKworICAgIGRlZiBfcHByaW50X3VzZXJfbGlzdChzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdC5kYXRhLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCAtIDEpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLlVzZXJMaXN0Ll9fcmVwcl9fXSA9IF9wcHJpbnRfdXNlcl9saXN0CisKKyAgICBkZWYgX3BwcmludF91c2VyX3N0cmluZyhzZWxmLCBvYmplY3QsIHN0cmVhbSwgaW5kZW50LCBhbGxvd2FuY2UsIGNvbnRleHQsIGxldmVsKToKKyAgICAgICAgc2VsZi5fZm9ybWF0KG9iamVjdC5kYXRhLCBzdHJlYW0sIGluZGVudCwgYWxsb3dhbmNlLCBjb250ZXh0LCBsZXZlbCAtIDEpCisKKyAgICBfZGlzcGF0Y2hbX2NvbGxlY3Rpb25zLlVzZXJTdHJpbmcuX19yZXByX19dID0gX3BwcmludF91c2VyX3N0cmluZwogCiAjIFJldHVybiB0cmlwbGUgKHJlcHJfc3RyaW5nLCBpc3JlYWRhYmxlLCBpc3JlY3Vyc2l2ZSkuCiAKIGRlZiBfc2FmZV9yZXByKG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCk6CiAgICAgdHlwID0gdHlwZShvYmplY3QpCi0gICAgaWYgdHlwIGlzIHN0cjoKLSAgICAgICAgaWYgJ2xvY2FsZScgbm90IGluIF9zeXMubW9kdWxlczoKLSAgICAgICAgICAgIHJldHVybiByZXByKG9iamVjdCksIFRydWUsIEZhbHNlCi0gICAgICAgIGlmICInIiBpbiBvYmplY3QgYW5kICciJyBub3QgaW4gb2JqZWN0OgotICAgICAgICAgICAgY2xvc3VyZSA9ICciJwotICAgICAgICAgICAgcXVvdGVzID0geyciJzogJ1xcIid9Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjbG9zdXJlID0gIiciCi0gICAgICAgICAgICBxdW90ZXMgPSB7IiciOiAiXFwnIn0KLSAgICAgICAgcWdldCA9IHF1b3Rlcy5nZXQKLSAgICAgICAgc2lvID0gX1N0cmluZ0lPKCkKLSAgICAgICAgd3JpdGUgPSBzaW8ud3JpdGUKLSAgICAgICAgZm9yIGNoYXIgaW4gb2JqZWN0OgotICAgICAgICAgICAgaWYgY2hhci5pc2FscGhhKCk6Ci0gICAgICAgICAgICAgICAgd3JpdGUoY2hhcikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgd3JpdGUocWdldChjaGFyLCByZXByKGNoYXIpWzE6LTFdKSkKLSAgICAgICAgcmV0dXJuICgiJXMlcyVzIiAlIChjbG9zdXJlLCBzaW8uZ2V0dmFsdWUoKSwgY2xvc3VyZSkpLCBUcnVlLCBGYWxzZQorICAgIGlmIHR5cCBpbiBfYnVpbHRpbl9zY2FsYXJzOgorICAgICAgICByZXR1cm4gcmVwcihvYmplY3QpLCBUcnVlLCBGYWxzZQogCiAgICAgciA9IGdldGF0dHIodHlwLCAiX19yZXByX18iLCBOb25lKQogICAgIGlmIGlzc3ViY2xhc3ModHlwLCBkaWN0KSBhbmQgciBpcyBkaWN0Ll9fcmVwcl9fOgpAQCAtMzk5LDYgKzU1NSw4IEBACiAgICAgcmVwID0gcmVwcihvYmplY3QpCiAgICAgcmV0dXJuIHJlcCwgKHJlcCBhbmQgbm90IHJlcC5zdGFydHN3aXRoKCc8JykpLCBGYWxzZQogCitfYnVpbHRpbl9zY2FsYXJzID0gZnJvemVuc2V0KHtzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGludCwgZmxvYXQsIGNvbXBsZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLCB0eXBlKE5vbmUpfSkKIAogZGVmIF9yZWN1cnNpb24ob2JqZWN0KToKICAgICByZXR1cm4gKCI8UmVjdXJzaW9uIG9uICVzIHdpdGggaWQ9JXM+IgpAQCAtNDE4LDUgKzU3NiwyMiBAQAogICAgIHByaW50KCJfc2FmZV9yZXByOiIsIHQyIC0gdDEpCiAgICAgcHJpbnQoInBmb3JtYXQ6IiwgdDMgLSB0MikKIAorZGVmIF93cmFwX2J5dGVzX3JlcHIob2JqZWN0LCB3aWR0aCwgYWxsb3dhbmNlKToKKyAgICBjdXJyZW50ID0gYicnCisgICAgbGFzdCA9IGxlbihvYmplY3QpIC8vIDQgKiA0CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKG9iamVjdCksIDQpOgorICAgICAgICBwYXJ0ID0gb2JqZWN0W2k6IGkrNF0KKyAgICAgICAgY2FuZGlkYXRlID0gY3VycmVudCArIHBhcnQKKyAgICAgICAgaWYgaSA9PSBsYXN0OgorICAgICAgICAgICAgd2lkdGggLT0gYWxsb3dhbmNlCisgICAgICAgIGlmIGxlbihyZXByKGNhbmRpZGF0ZSkpID4gd2lkdGg6CisgICAgICAgICAgICBpZiBjdXJyZW50OgorICAgICAgICAgICAgICAgIHlpZWxkIHJlcHIoY3VycmVudCkKKyAgICAgICAgICAgIGN1cnJlbnQgPSBwYXJ0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjdXJyZW50ID0gY2FuZGlkYXRlCisgICAgaWYgY3VycmVudDoKKyAgICAgICAgeWllbGQgcmVwcihjdXJyZW50KQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIF9wZXJmY2hlY2soKQpkaWZmIC0tZ2l0IGEvTGliL3B5X2NvbXBpbGUucHkgYi9MaWIvcHlfY29tcGlsZS5weQppbmRleCBmNjVlZWFmLi4xMWM1YjUwIDEwMDY0NAotLS0gYS9MaWIvcHlfY29tcGlsZS5weQorKysgYi9MaWIvcHlfY29tcGlsZS5weQpAQCAtMSw5ICsxLDkgQEAKLSIiIlJvdXRpbmUgdG8gImNvbXBpbGUiIGEgLnB5IGZpbGUgdG8gYSAucHljIChvciAucHlvKSBmaWxlLgorIiIiUm91dGluZSB0byAiY29tcGlsZSIgYSAucHkgZmlsZSB0byBhIC5weWMgZmlsZS4KIAogVGhpcyBtb2R1bGUgaGFzIGludGltYXRlIGtub3dsZWRnZSBvZiB0aGUgZm9ybWF0IG9mIC5weWMgZmlsZXMuCiAiIiIKIAotaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAgOnBhcmFtIGZpbGU6IFRoZSBzb3VyY2UgZmlsZSBuYW1lLgogICAgIDpwYXJhbSBjZmlsZTogVGhlIHRhcmdldCBieXRlIGNvbXBpbGVkIGZpbGUgbmFtZS4gIFdoZW4gbm90IGdpdmVuLCB0aGlzCi0gICAgICAgIGRlZmF1bHRzIHRvIHRoZSBQRVAgMzE0NyBsb2NhdGlvbi4KKyAgICAgICAgZGVmYXVsdHMgdG8gdGhlIFBFUCAzMTQ3L1BFUCA0ODggbG9jYXRpb24uCiAgICAgOnBhcmFtIGRmaWxlOiBQdXJwb3J0ZWQgZmlsZSBuYW1lLCBpLmUuIHRoZSBmaWxlIG5hbWUgdGhhdCBzaG93cyB1cCBpbgogICAgICAgICBlcnJvciBtZXNzYWdlcy4gIERlZmF1bHRzIHRvIHRoZSBzb3VyY2UgZmlsZSBuYW1lLgogICAgIDpwYXJhbSBkb3JhaXNlOiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgYW4gZXhjZXB0aW9uIHNob3VsZCBiZQpAQCAtODUsMTIgKzg1LDEyIEBACiAgICAgTm90ZSB0aGF0IGl0IGlzbid0IG5lY2Vzc2FyeSB0byBieXRlLWNvbXBpbGUgUHl0aG9uIG1vZHVsZXMgZm9yCiAgICAgZXhlY3V0aW9uIGVmZmljaWVuY3kgLS0gUHl0aG9uIGl0c2VsZiBieXRlLWNvbXBpbGVzIGEgbW9kdWxlIHdoZW4KICAgICBpdCBpcyBsb2FkZWQsIGFuZCBpZiBpdCBjYW4sIHdyaXRlcyBvdXQgdGhlIGJ5dGVjb2RlIHRvIHRoZQotICAgIGNvcnJlc3BvbmRpbmcgLnB5YyAob3IgLnB5bykgZmlsZS4KKyAgICBjb3JyZXNwb25kaW5nIC5weWMgZmlsZS4KIAogICAgIEhvd2V2ZXIsIGlmIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyBzaGFyZWQgYmV0d2VlbiB1c2VycywgaXQgaXMgYQogICAgIGdvb2QgaWRlYSB0byBieXRlLWNvbXBpbGUgYWxsIG1vZHVsZXMgdXBvbiBpbnN0YWxsYXRpb24sIHNpbmNlCiAgICAgb3RoZXIgdXNlcnMgbWF5IG5vdCBiZSBhYmxlIHRvIHdyaXRlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3JpZXMsCi0gICAgYW5kIHRodXMgdGhleSB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRoZSAucHljLy5weW8gZmlsZSwgYW5kIHRoZW4KKyAgICBhbmQgdGh1cyB0aGV5IHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdGhlIC5weWMgZmlsZSwgYW5kIHRoZW4KICAgICB0aGV5IHdvdWxkIGJlIGJ5dGUtY29tcGlsaW5nIGV2ZXJ5IG1vZHVsZSBlYWNoIHRpbWUgaXQgaXMgbG9hZGVkLgogICAgIFRoaXMgY2FuIHNsb3cgZG93biBwcm9ncmFtIHN0YXJ0LXVwIGNvbnNpZGVyYWJseS4KIApAQCAtMTA1LDggKzEwNSw5IEBACiAgICAgIiIiCiAgICAgaWYgY2ZpbGUgaXMgTm9uZToKICAgICAgICAgaWYgb3B0aW1pemUgPj0gMDoKKyAgICAgICAgICAgIG9wdGltaXphdGlvbiA9IG9wdGltaXplIGlmIG9wdGltaXplID49IDEgZWxzZSAnJwogICAgICAgICAgICAgY2ZpbGUgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHRpbWl6YXRpb24pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjZmlsZSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGUpCiAgICAgaWYgb3MucGF0aC5pc2xpbmsoY2ZpbGUpOgpAQCAtMTM2LDEwICsxMzcsMTAgQEAKICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICBwYXNzCiAgICAgc291cmNlX3N0YXRzID0gbG9hZGVyLnBhdGhfc3RhdHMoZmlsZSkKLSAgICBieXRlY29kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9jb2RlX3RvX2J5dGVjb2RlKAorICAgIGJ5dGVjb2RlID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX2NvZGVfdG9fYnl0ZWNvZGUoCiAgICAgICAgICAgICBjb2RlLCBzb3VyY2Vfc3RhdHNbJ210aW1lJ10sIHNvdXJjZV9zdGF0c1snc2l6ZSddKQotICAgIG1vZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fY2FsY19tb2RlKGZpbGUpCi0gICAgaW1wb3J0bGliLl9ib290c3RyYXAuX3dyaXRlX2F0b21pYyhjZmlsZSwgYnl0ZWNvZGUsIG1vZGUpCisgICAgbW9kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9jYWxjX21vZGUoZmlsZSkKKyAgICBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fd3JpdGVfYXRvbWljKGNmaWxlLCBieXRlY29kZSwgbW9kZSkKICAgICByZXR1cm4gY2ZpbGUKIAogCmRpZmYgLS1naXQgYS9MaWIvcHlkb2MucHkgYi9MaWIvcHlkb2MucHkKaW5kZXggMGM3YjYwZC4uZWU1NThiZiAxMDA3NTUKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtNTMsNiArNTMsNyBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgaW5zcGVjdApAQCAtMjEzLDcgKzIxNCw3IEBACiBkZWYgaXNwYWNrYWdlKHBhdGgpOgogICAgICIiIkd1ZXNzIHdoZXRoZXIgYSBwYXRoIHJlZmVycyB0byBhIHBhY2thZ2UgZGlyZWN0b3J5LiIiIgogICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgIGZvciBleHQgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CisgICAgICAgIGZvciBleHQgaW4gKCcucHknLCAnLnB5YycpOgogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHBhdGgsICdfX2luaXRfXycgKyBleHQpKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQpAQCAtMjY0LDkgKzI2NSw4IEBACiAgICAgICAgICAgICAjIFhYWCBXZSBwcm9iYWJseSBkb24ndCBuZWVkIHRvIHBhc3MgaW4gdGhlIGxvYWRlciBoZXJlLgogICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKCdfX3RlbXBfXycsIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcj1sb2FkZXIpCi0gICAgICAgICAgICBfc3BlYyA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IF9zcGVjLmxvYWQoKQorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1snX190ZW1wX18nXQpAQCAtMjkzLDE0ICsyOTMsMTMgQEAKICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKICAgICBuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQogICAgIGlmIGlzX2J5dGVjb2RlOgotICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5Tb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRoKQorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5Tb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRoKQogICAgIGVsc2U6Ci0gICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkKKyAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKQogICAgICMgWFhYIFdlIHByb2JhYmx5IGRvbid0IG5lZWQgdG8gcGFzcyBpbiB0aGUgbG9hZGVyIGhlcmUuCiAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG5hbWUsIHBhdGgsIGxvYWRlcj1sb2FkZXIpCi0gICAgX3NwZWMgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfc3BlYy5sb2FkKCkKKyAgICAgICAgcmV0dXJuIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgZXhjZXB0OgogICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydChwYXRoLCBzeXMuZXhjX2luZm8oKSkKIApAQCAtMTU5MSw3ICsxNTkwLDEwIEBACiAgICAgaWYgaXNpbnN0YW5jZSh0aGluZywgc3RyKToKICAgICAgICAgb2JqZWN0ID0gbG9jYXRlKHRoaW5nLCBmb3JjZWxvYWQpCiAgICAgICAgIGlmIG9iamVjdCBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlcicgJSB0aGluZykKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCcnJ1wKK05vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlci4KK1VzZSBoZWxwKCkgdG8gZ2V0IHRoZSBpbnRlcmFjdGl2ZSBoZWxwIHV0aWxpdHkuCitVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnICUgdGhpbmcpCiAgICAgICAgIHJldHVybiBvYmplY3QsIHRoaW5nCiAgICAgZWxzZToKICAgICAgICAgbmFtZSA9IGdldGF0dHIodGhpbmcsICdfX25hbWVfXycsIE5vbmUpCkBAIC0xNjM4LDkgKzE2NDAsOCBAQAogICAgIHRyeToKICAgICAgICAgb2JqZWN0LCBuYW1lID0gcmVzb2x2ZSh0aGluZywgZm9yY2Vsb2FkKQogICAgICAgICBwYWdlID0gaHRtbC5wYWdlKGRlc2NyaWJlKG9iamVjdCksIGh0bWwuZG9jdW1lbnQob2JqZWN0LCBuYW1lKSkKLSAgICAgICAgZmlsZSA9IG9wZW4obmFtZSArICcuaHRtbCcsICd3JywgZW5jb2Rpbmc9J3V0Zi04JykKLSAgICAgICAgZmlsZS53cml0ZShwYWdlKQotICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgd2l0aCBvcGVuKG5hbWUgKyAnLmh0bWwnLCAndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKHBhZ2UpCiAgICAgICAgIHByaW50KCd3cm90ZScsIG5hbWUgKyAnLmh0bWwnKQogICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVycm9yRHVyaW5nSW1wb3J0KSBhcyB2YWx1ZToKICAgICAgICAgcHJpbnQodmFsdWUpCkBAIC0xODM1LDcgKzE4MzYsOCBAQAogICAgICAgICBpZiBpbnNwZWN0LnN0YWNrKClbMV1bM10gPT0gJz8nOgogICAgICAgICAgICAgc2VsZigpCiAgICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgcmV0dXJuICc8cHlkb2MuSGVscGVyIGluc3RhbmNlPicKKyAgICAgICAgcmV0dXJuICc8JXMuJXMgaW5zdGFuY2U+JyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fcXVhbG5hbWVfXykKIAogICAgIF9Hb0ludGVyYWN0aXZlID0gb2JqZWN0KCkKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVxdWVzdD1fR29JbnRlcmFjdGl2ZSk6CkBAIC0xODYxLDcgKzE4NjMsMTAgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgcmVxdWVzdCA9IHJlcGxhY2UocmVxdWVzdCwgJyInLCAnJywgIiciLCAnJykuc3RyaXAoKQogICAgICAgICAgICAgaWYgcmVxdWVzdC5sb3dlcigpIGluICgncScsICdxdWl0Jyk6IGJyZWFrCi0gICAgICAgICAgICBzZWxmLmhlbHAocmVxdWVzdCkKKyAgICAgICAgICAgIGlmIHJlcXVlc3QgPT0gJ2hlbHAnOgorICAgICAgICAgICAgICAgIHNlbGYuaW50cm8oKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmhlbHAocmVxdWVzdCkKIAogICAgIGRlZiBnZXRsaW5lKHNlbGYsIHByb21wdCk6CiAgICAgICAgICIiIlJlYWQgb25lIGxpbmUsIHVzaW5nIGlucHV0KCkgd2hlbiBhcHByb3ByaWF0ZS4iIiIKQEAgLTE4NzUsOCArMTg4MCw3IEBACiAgICAgZGVmIGhlbHAoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGlmIHR5cGUocmVxdWVzdCkgaXMgdHlwZSgnJyk6CiAgICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5zdHJpcCgpCi0gICAgICAgICAgICBpZiByZXF1ZXN0ID09ICdoZWxwJzogc2VsZi5pbnRybygpCi0gICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ2tleXdvcmRzJzogc2VsZi5saXN0a2V5d29yZHMoKQorICAgICAgICAgICAgaWYgcmVxdWVzdCA9PSAna2V5d29yZHMnOiBzZWxmLmxpc3RrZXl3b3JkcygpCiAgICAgICAgICAgICBlbGlmIHJlcXVlc3QgPT0gJ3N5bWJvbHMnOiBzZWxmLmxpc3RzeW1ib2xzKCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdCA9PSAndG9waWNzJzogc2VsZi5saXN0dG9waWNzKCkKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdCA9PSAnbW9kdWxlcyc6IHNlbGYubGlzdG1vZHVsZXMoKQpAQCAtMTg4OSw2ICsxODkzLDcgQEAKICAgICAgICAgICAgIGVsaWYgcmVxdWVzdCBpbiBzZWxmLmtleXdvcmRzOiBzZWxmLnNob3d0b3BpYyhyZXF1ZXN0KQogICAgICAgICAgICAgZWxpZiByZXF1ZXN0IGluIHNlbGYudG9waWNzOiBzZWxmLnNob3d0b3BpYyhyZXF1ZXN0KQogICAgICAgICAgICAgZWxpZiByZXF1ZXN0OiBkb2MocmVxdWVzdCwgJ0hlbHAgb24gJXM6Jywgb3V0cHV0PXNlbGYuX291dHB1dCkKKyAgICAgICAgICAgIGVsc2U6IGRvYyhzdHIsICdIZWxwIG9uICVzOicsIG91dHB1dD1zZWxmLl9vdXRwdXQpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXF1ZXN0LCBIZWxwZXIpOiBzZWxmKCkKICAgICAgICAgZWxzZTogZG9jKHJlcXVlc3QsICdIZWxwIG9uICVzOicsIG91dHB1dD1zZWxmLl9vdXRwdXQpCiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCdcbicpCkBAIC0yMDg0LDkgKzIwODksOCBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBfc3BlYyA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKQogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfc3BlYy5sb2FkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9uZXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lcnJvcihtb2RuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IGU1NGI2ZGQuLmY2NmRkNjIgMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI4ODEgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFN1biBGZWIgMjIgMjM6NTI6MDUgMjAxNQotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICBpZiBub3QgZXhwcmVzc2lvbjogcmFpc2UgQXNzZXJ0aW9uRXJyb3JcblxuVGhlIGV4dGVuZGVkIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuXG5UaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgcmVmZXJcbnRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxubm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIChjb21tYW5kXG5saW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgTm90ZVxudGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGV4cHJlc3Npb25cbnRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZVxuc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgYnVpbHQtaW5cbnZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKLSAnYXNzaWdubWVudCc6IHUnXG5Bc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCB0b1xubW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuXG4gICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbiAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbiAgICAgICAgICAgICAgfCAiWyIgdGFyZ2V0X2xpc3QgIl0iXG4gICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4gICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4gICAgICAgICAgICAgIHwgc2xpY2luZ1xuICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvclxuKmF0dHJpYnV0ZXJlZiosICpzdWJzY3JpcHRpb24qLCBhbmQgKnNsaWNpbmcqLilcblxuQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgKHJlbWVtYmVyIHRoYXRcbnRoaXMgY2FuIGJlIGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgdGhlIGxhdHRlclxueWllbGRpbmcgYSB0dXBsZSkgYW5kIGFzc2lnbnMgdGhlIHNpbmdsZSByZXN1bHRpbmcgb2JqZWN0IHRvIGVhY2ggb2ZcbnRoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cblxuQXNzaWdubWVudCBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGRlcGVuZGluZyBvbiB0aGUgZm9ybSBvZiB0aGUgdGFyZ2V0XG4obGlzdCkuIFdoZW4gYSB0YXJnZXQgaXMgcGFydCBvZiBhIG11dGFibGUgb2JqZWN0IChhbiBhdHRyaWJ1dGVcbnJlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxudWx0aW1hdGVseSBwZXJmb3JtIHRoZSBhc3NpZ25tZW50IGFuZCBkZWNpZGUgYWJvdXQgaXRzIHZhbGlkaXR5LCBhbmRcbm1heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlIHJ1bGVzXG5vYnNlcnZlZCBieSB2YXJpb3VzIHR5cGVzIGFuZCB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGdpdmVuIHdpdGggdGhlXG5kZWZpbml0aW9uIG9mIHRoZSBvYmplY3QgdHlwZXMgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZVxuaGllcmFyY2h5KikuXG5cbkFzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgdGFyZ2V0IGxpc3QsIG9wdGlvbmFsbHkgZW5jbG9zZWQgaW5cbnBhcmVudGhlc2VzIG9yIHNxdWFyZSBicmFja2V0cywgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhcyBmb2xsb3dzLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQ6IFRoZSBvYmplY3QgaXMgYXNzaWduZWQgdG9cbiAgdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0czogVGhlXG4gIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlXG4gIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb21cbiAgbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2VcbiAgICB3aXRoIGF0IGxlYXN0IGFzIG1hbnkgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldFxuICAgIGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgc2VxdWVuY2UgYXJlIGFzc2lnbmVkLFxuICAgIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIHRhcmdldHMgYmVmb3JlIHRoZSBzdGFycmVkIHRhcmdldC4gIFRoZVxuICAgIGZpbmFsIGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQgdG8gdGhlIHRhcmdldHMgYWZ0ZXIgdGhlXG4gICAgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiB0aGUgc2VxdWVuY2UgaXNcbiAgICB0aGVuIGFzc2lnbmVkIHRvIHRoZSBzdGFycmVkIHRhcmdldCAodGhlIGxpc3QgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhIHNlcXVlbmNlIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mXG4gICAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbkFzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgc2luZ2xlIHRhcmdldCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzXG5mb2xsb3dzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gaWRlbnRpZmllciAobmFtZSk6XG5cbiAgKiBJZiB0aGUgbmFtZSBkb2VzIG5vdCBvY2N1ciBpbiBhICJnbG9iYWwiIG9yICJub25sb2NhbCIgc3RhdGVtZW50XG4gICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGVcbiAgICBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsXG4gICAgbmFtZXNwYWNlIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSAibm9ubG9jYWwiLFxuICAgIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW5cbiAgc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXJcbiAgb2YgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiBpc1xuICByYWlzZWQuICBUaGF0IG9iamVjdCBpcyB0aGVuIGFza2VkIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvXG4gIHRoZSBnaXZlbiBhdHRyaWJ1dGU7IGlmIGl0IGNhbm5vdCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LCBpdCByYWlzZXNcbiAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgIkF0dHJpYnV0ZUVycm9yIikuXG5cbiAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZVxuICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyBleHByZXNzaW9uLFxuICAiYS54IiBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgaXMgYWx3YXlzXG4gIHNldCBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeS4gIFRodXMsIHRoZVxuICB0d28gb2NjdXJyZW5jZXMgb2YgImEueCIgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZSBzYW1lXG4gIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSwgdGhlXG4gIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHN1YnNjcmlwdGlvbjogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBlaXRoZXIgYSBtdXRhYmxlIHNlcXVlbmNlXG4gIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KS5cbiAgTmV4dCwgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGEgbGlzdCksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZVxuICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoLCBhbmQgdGhlIHNlcXVlbmNlIGlzIGFza2VkXG4gIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGl0cyBpdGVtIHdpdGggdGhhdCBpbmRleC4gIElmIHRoZVxuICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gYVxuICBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyB0byBhIGxpc3QpLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZ1wncyBrZXkgdHlwZSxcbiAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgd2hpY2ggbWFwc1xuICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgcmVwbGFjZSBhblxuICBleGlzdGluZyBrZXkvdmFsdWUgcGFpciB3aXRoIHRoZSBzYW1lIGtleSB2YWx1ZSwgb3IgaW5zZXJ0IGEgbmV3XG4gIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cblxuICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzIGNhbGxlZCB3aXRoXG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0XG4gIChzdWNoIGFzIGEgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdFxuICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmVcbiAgZXZhbHVhdGVkLCBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGVcbiAgc2VxdWVuY2VcJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmXG4gIGVpdGhlciBib3VuZCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZVxuICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwnc1xuICBsZW5ndGgsIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZVxuICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZlxuICB0aGUgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIHRhcmdldFxuICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHMgYmV0d2VlblxudGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NpbXVsdGFuZW5vdXNcJyAoZm9yXG5leGFtcGxlICJhLCBiID0gYiwgYSIgc3dhcHMgdHdvIHZhcmlhYmxlcyksIG92ZXJsYXBzICp3aXRoaW4qIHRoZVxuY29sbGVjdGlvbiBvZiBhc3NpZ25lZC10byB2YXJpYWJsZXMgb2NjdXIgbGVmdC10by1yaWdodCwgc29tZXRpbWVzXG5yZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzXG4iWzAsIDJdIjpcblxuICAgeCA9IFswLCAxXVxuICAgaSA9IDBcbiAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyB1cGRhdGVkXG4gICBwcmludCh4KVxuXG5TZWUgYWxzbzogKipQRVAgMzEzMioqIC0gRXh0ZW5kZWQgSXRlcmFibGUgVW5wYWNraW5nXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAiKnRhcmdldCIgZmVhdHVyZS5cblxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdhdG9tLWlkZW50aWZpZXJzJzogdSdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbi5cblxuKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgdGV4dHVhbGx5IG9jY3VycyBpblxuYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBhbmRcbmRvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgY29uc2lkZXJlZCBhICpwcml2YXRlXG5uYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byBhIGxvbmdlciBmb3JtXG5iZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gaW5zZXJ0cyB0aGVcbmNsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhIHNpbmdsZSB1bmRlcnNjb3JlXG5pbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlIGlkZW50aWZpZXIgIl9fc3BhbSJcbm9jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gIl9IYW1fX3NwYW0iLlxuVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3ludGFjdGljYWwgY29udGV4dCBpbiB3aGljaFxudGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZSB0cmFuc2Zvcm1lZCBuYW1lIGlzIGV4dHJlbWVseSBsb25nXG4obG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHRydW5jYXRpb24gbWF5XG5oYXBwZW4uIElmIHRoZSBjbGFzcyBuYW1lIGNvbnNpc3RzIG9ubHkgb2YgdW5kZXJzY29yZXMsIG5vXG50cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKLSAnYXRvbS1saXRlcmFscyc6IHUiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiB1J1xuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAotICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6IHUnXG5BdHRyaWJ1dGUgcmVmZXJlbmNlc1xuKioqKioqKioqKioqKioqKioqKipcblxuQW4gYXR0cmlidXRlIHJlZmVyZW5jZSBpcyBhIHByaW1hcnkgZm9sbG93ZWQgYnkgYSBwZXJpb2QgYW5kIGEgbmFtZTpcblxuICAgYXR0cmlidXRlcmVmIDo6PSBwcmltYXJ5ICIuIiBpZGVudGlmaWVyXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSB0aGF0IHN1cHBvcnRzXG5hdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyBvYmplY3QgaXMgdGhlblxuYXNrZWQgdG8gcHJvZHVjZSB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXMgdGhlIGlkZW50aWZpZXIuICBUaGlzXG5wcm9kdWN0aW9uIGNhbiBiZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlICJfX2dldGF0dHJfXygpIiBtZXRob2QuXG5JZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICJBdHRyaWJ1dGVFcnJvciIgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCi0gJ2F1Z2Fzc2lnbic6IHUnXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlICIqIiAobXVsdGlwbGljYXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcHJvZHVjdCBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudCBtdXN0IGJlIGFuXG5pbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZVxubnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCB0b2dldGhlci5cbkluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGEgbmVnYXRpdmVcbnJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbmFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cblxuVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgImNvZGUiIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6IHUnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbiJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgcHJvZHVjZXMgdGhlXG4iRWxsaXBzaXMiIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiB1J1xuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbnNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKLSAnYm9vbGVhbnMnOiB1J1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG5kaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlIGJ5XG5wcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICJGYWxzZSJcbm90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyB2YWx1ZVxuaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpc1xucmV0dXJuZWQuXG5cbihOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBjcmVhdGUgYVxubmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGl0c1xuYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyIHRoYW4gIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqKiIgZXhwcmVzc2lvblxuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG5rZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbiJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgIlR5cGVFcnJvciJcbmV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkIGFzXG50aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gcGFyc2VcbnRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAiZXhwcmVzc2lvbiJcbm11c3QgZXZhbHVhdGUgdG8gYW4gaXRlcmFibGUuICBFbGVtZW50cyBmcm9tIHRoaXMgaXRlcmFibGUgYXJlIHRyZWF0ZWRcbmFzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBpZiB0aGVyZSBhcmVcbnBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgYW5kICJleHByZXNzaW9uIiBldmFsdWF0ZXMgdG8gYVxuc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTStOXG5wb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosICp5MSosIC4uLiwgKnlNKi5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4IG1heVxuYXBwZWFyICphZnRlciogc29tZSBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICpiZWZvcmUqIHRoZVxua2V5d29yZCBhcmd1bWVudHMgKGFuZCB0aGUgIioqZXhwcmVzc2lvbiIgYXJndW1lbnQsIGlmIGFueSAtLSBzZWVcbmJlbG93KS4gIFNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSW4gdGhlIGNhc2Ugb2YgYSBrZXl3b3JkXG5hcHBlYXJpbmcgaW4gYm90aCAiZXhwcmVzc2lvbiIgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyBhblxuZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAiInNlbGYubmFtZSIiLFxuYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWVcbndoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzIGRlZmF1bHRzXG5mb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkIHRvXG51bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxudmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuICBDbGFzcyBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzc1xuICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbiAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZlxuICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4gICAgImJyZWFrIiBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4gICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKLSAnY29tcGFyaXNvbnMnOiB1J1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG5lcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzIGV2YWx1YXRlZCBvbmx5XG5vbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG5mb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsIGV4Y2VwdFxudGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW5cbiphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxucGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgdmFsdWVzXG5vZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS4gSWYgYm90aCBhcmVcbm51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLCB0aGUgIj09IiBhbmRcbiIhPSIgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRvIGJlXG51bmVxdWFsLCB3aGlsZSB0aGUgIjwiLCAiPiIsICI+PSIgYW5kICI8PSIgb3BlcmF0b3JzIHJhaXNlIGFcbiJUeXBlRXJyb3IiIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRoYXQgZG8gbm90XG5pbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZiB0eXBlcy4gIFlvdSBjYW5cbmNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pbiB0eXBlcyBieVxuZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSAiX19ndF9fKCkiLCBkZXNjcmliZWQgaW4gc2VjdGlvblxuKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgImZsb2F0KFwnTmFOXCcpIiBhbmQgIkRlY2ltYWwoXCdOYU5cJykiIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCAieCBpcyB4IiBidXQgYXJlIG5vdCBlcXVhbCB0b1xuICB0aGVtc2VsdmVzLCAieCAhPSB4Ii4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSB0byBhXG4gIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLiAgRm9yIGV4YW1wbGUsIGJvdGggIjMgPFxuICBmbG9hdChcJ05hTlwnKSIgYW5kICJmbG9hdChcJ05hTlwnKSA8IDMiIHdpbGwgcmV0dXJuICJGYWxzZSIuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIGVxdWl2YWxlbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAib3JkKCkiKSBvZiB0aGVpclxuICBjaGFyYWN0ZXJzLiBbM10gU3RyaW5nIGFuZCBieXRlcyBvYmplY3QgY2FuXCd0IGJlIGNvbXBhcmVkIVxuXG4qIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb25cbiAgb2YgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBlYWNoXG4gIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gWzEsMix5XSIgaGFzIHRoZSBzYW1lXG4gIHZhbHVlIGFzICJ4IDw9IHkiLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdCBleGlzdCwgdGhlXG4gIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsICJbMSwyXSA8IFsxLDIsM10iKS5cblxuKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGVcbiAgc2FtZSAiKGtleSwgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgIihcJzxcJywgXCc8PVwnLCBcJz49XCcsXG4gIFwnPlwnKSIgcmFpc2UgIlR5cGVFcnJvciIuXG5cbiogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kXG4gIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICh0aGVcbiAgdHdvIHNldHMgInsxLDJ9IiBhbmQgezIsM30gYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4gIGFub3RoZXIsIG5vciBzdXBlcnNldHMgb2Ygb25lIGFub3RoZXIpLiAgQWNjb3JkaW5nbHksIHNldHMgYXJlIG5vdFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgb3JkZXJpbmcuXG4gIEZvciBleGFtcGxlLCAibWluKCkiLCAibWF4KCkiLCBhbmQgInNvcnRlZCgpIiBwcm9kdWNlIHVuZGVmaW5lZFxuICByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cblxuKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5XG4gIGFyZSB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWRcbiAgc21hbGxlciBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dFxuICBjb25zaXN0ZW50bHkgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXIgb2ZcbnRoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdCBudW1lcmljXG50eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlci4gIFdoZW4gY3Jvc3MtdHlwZSBjb21wYXJpc29uIGlzXG5ub3Qgc3VwcG9ydGVkLCB0aGUgY29tcGFyaXNvbiBtZXRob2QgcmV0dXJucyAiTm90SW1wbGVtZW50ZWQiLlxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZVxuZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayBvZlxuY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5IGNvbXBvdW5kXG5zdGF0ZW1lbnRzLlxuXG5BIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbiJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IGFcbiJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzIGJlZ2luXG53aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgImlmIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PVxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgImZvciIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlICJ0cnkiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuJywKLSAnY29udGludWUnOiB1J1xuVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuXG4iY29udGludWUiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxubG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uIG9yICJmaW5hbGx5IlxuY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiB0aGVcbm5lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG5cbldoZW4gImNvbnRpbnVlIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhXG4iZmluYWxseSIgY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCi0gJ2NvbnZlcnNpb25zJzogdSdcbkFyaXRobWV0aWMgY29udmVyc2lvbnNcbioqKioqKioqKioqKioqKioqKioqKipcblxuV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgcGhyYXNlXG4idGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwiIHRoaXMgbWVhbnNcbnRoYXQgdGhlIG9wZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBidWlsdC1pbiB0eXBlcyB3b3JrcyBhcyBmb2xsb3dzOlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZVxuICBvdGhlciBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBhcyBhXG5sZWZ0IGFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lIHRoZWlyIG93blxuY29udmVyc2lvbiBiZWhhdmlvci5cbicsCi0gJ2N1c3RvbWl6YXRpb24nOiB1J1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycy5cbiAgIFRoZSB0cnV0aCBvZiAieD09eSIgZG9lcyBub3QgaW1wbHkgdGhhdCAieCE9eSIgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyAiX19lcV9fKCkiLCBvbmUgc2hvdWxkIGFsc28gZGVmaW5lXG4gICAiX19uZV9fKCkiIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZSB0aGVcbiAgIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uIGNyZWF0aW5nXG4gICAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvbiBvcGVyYXRpb25zIGFuZFxuICAgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUiKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG4nLAotICdkZWJ1Z2dlcic6IHUnXG4icGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG1vZHVsZSAicGRiIiBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG4iUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSByZWFkaW5nXG50aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgImNtZCIuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtIHVuZGVyXG5jb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiBtb2R1bGUgaXNcbmF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbFxuYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgInAiIGNvbW1hbmQuXG5cbiJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy4gIEZvclxuZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgZXhlY3V0ZXNcbmNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgIi5wZGJyYyIgZmlsZSwgc2VlICpEZWJ1Z2dlciBDb21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgKFNlZSB0aGVcbiAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgInJ1bigpIi5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiAicnVuY2FsbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG5UaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgaW5zdGFudGlhdGluZ1xudGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSB3YW50XG50byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBDdHJsLUMgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgYVxuICAgImNvbnRpbnVlIiBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG4iaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyIHRoZSBoZWxwXG5jb21tYW5kIChidXQgbm90ICJoZSIgb3IgImhlbCIsIG5vciAiSCIgb3IgIkhlbHAiIG9yICJIRUxQIikuXG5Bcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzIG9yXG50YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzICgiW10iKSBpblxudGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyXG4oInwiKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSAibGlzdCIgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlIGxpc3RlZC5cblxuQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc25cJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvblxuc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gZXhjbGFtYXRpb25cbnBvaW50ICgiISIpLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgZnVuY3Rpb24uXG5XaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lIGlzXG5wcmludGVkIGJ1dCB0aGUgZGVidWdnZXJcJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG5cblRoZSBkZWJ1Z2dlciBzdXBwb3J0cyAqYWxpYXNlcyouICBBbGlhc2VzIGNhbiBoYXZlIHBhcmFtZXRlcnMgd2hpY2hcbmFsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuZXhhbWluYXRpb24uXG5cbk11bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAiOzsiLlxuKEEgc2luZ2xlICI7IiBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvciBtdWx0aXBsZSBjb21tYW5kc1xuaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vIGludGVsbGlnZW5jZSBpc1xuYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSBmaXJzdFxuIjs7IiBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWQgc3RyaW5nLlxuXG5JZiBhIGZpbGUgIi5wZGJyYyIgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluIHRoZVxuY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkXG5hdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWZcbmJvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kXG5hbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICIucGRicmMiIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyB0aGF0XG5jb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCB0aGVzZVxuY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cblxuaChlbHApIFtjb21tYW5kXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoIGFcbiAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICAiaGVscCBwZGIiXG4gICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSAicGRiIlxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLCAiaGVscFxuICAgZXhlYyIgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSAiISIgY29tbWFuZC5cblxudyhoZXJlKVxuXG4gICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLiAgQW5cbiAgIGFycm93IGluZGljYXRlcyB0aGUgY3VycmVudCBmcmFtZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29udGV4dCBvZlxuICAgbW9zdCBjb21tYW5kcy5cblxuZChvd24pIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIGRvd24gaW4gdGhlXG4gICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG5cbnUocCkgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgdXAgaW4gdGhlIHN0YWNrXG4gICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuXG5iKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgV2l0aCBhICpsaW5lbm8qIGFyZ3VtZW50LCBzZXQgYSBicmVhayB0aGVyZSBpbiB0aGUgY3VycmVudCBmaWxlLlxuICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCBleGVjdXRhYmxlXG4gICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlIHByZWZpeGVkXG4gICB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sIHRvIHNwZWNpZnkgYSBicmVha3BvaW50IGluIGFub3RoZXJcbiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc25cJ3QgYmVlbiBsb2FkZWQgeWV0KS4gIFRoZSBmaWxlIGlzXG4gICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG5cbmNsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgYXRcbiAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXJcbiAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgZmlyc3RcbiAgIGFzayBjb25maXJtYXRpb24pLlxuXG5kaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgY2F1c2VcbiAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgYnJlYWtwb2ludCwgaXRcbiAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG5cbmVuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuXG5pZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuXG4gICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgY291bnQgaXNcbiAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyBhY3RpdmVcbiAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4gICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlxuXG5jb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cblxuICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgKmNvbmRpdGlvbipcbiAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuXG5jb21tYW5kcyBbYnBudW1iZXJdXG5cbiAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgVGhlXG4gICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhIGxpbmVcbiAgIGNvbnRhaW5pbmcganVzdCAiZW5kIiB0byB0ZXJtaW5hdGUgdGhlIGNvbW1hbmRzLiBBbiBleGFtcGxlOlxuXG4gICAgICAoUGRiKSBjb21tYW5kcyAxXG4gICAgICAoY29tKSBwIHNvbWVfdmFyaWFibGVcbiAgICAgIChjb20pIGVuZFxuICAgICAgKFBkYilcblxuICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgZm9sbG93XG4gICBpdCBpbW1lZGlhdGVseSB3aXRoICJlbmQiOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuXG4gICBXaXRoIG5vICpicG51bWJlciogYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdCBicmVha3BvaW50XG4gICBzZXQuXG5cbiAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwIGFnYWluLlxuICAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyIGNvbW1hbmQgdGhhdFxuICAgcmVzdW1lcyBleGVjdXRpb24uXG5cbiAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgY29udGludWUsXG4gICBzdGVwLCBuZXh0LCByZXR1cm4sIGp1bXAsIHF1aXQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMpIHRlcm1pbmF0ZXNcbiAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnlcbiAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiB3aXRoIGFcbiAgIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5IGVuY291bnRlciBhbm90aGVyIGJyZWFrcG9pbnQtLXdoaWNoXG4gICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0IHdoaWNoXG4gICBsaXN0IHRvIGV4ZWN1dGUuXG5cbiAgIElmIHlvdSB1c2UgdGhlIFwnc2lsZW50XCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgdXN1YWxcbiAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgVGhpcyBtYXkgYmVcbiAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyBtZXNzYWdlIGFuZFxuICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCB5b3VcbiAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG5cbnModGVwKVxuXG4gICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlIG9jY2FzaW9uXG4gICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiB0aGVcbiAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuXG5uKGV4dClcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaXNcbiAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICJuZXh0IiBhbmQgInN0ZXAiXG4gICBpcyB0aGF0ICJzdGVwIiBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlICJuZXh0IlxuICAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5IHN0b3BwaW5nIGF0XG4gICB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSAiZm9yIiBsb29wIG9yIG91dFxuICAgb2YgYSAiZmluYWxseSIgY2xhdXNlLlxuXG5sKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG5cbiAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgbGlzdCAxMVxuICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzIGxpc3RpbmcuXG4gICBXaXRoICIuIiBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS4gIFdpdGhcbiAgIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbiAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbGVzc1xuICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG5cbiAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5ICItPiIuICBJZiBhblxuICAgZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uIHdhc1xuICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgIj4+IiwgaWYgaXQgZGlmZmVyc1xuICAgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAiPj4iIG1hcmtlci5cblxubGwgfCBsb25nbGlzdFxuXG4gICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4gICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciAibGlzdCIuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYShyZ3MpXG5cbiAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuXG5wIGV4cHJlc3Npb25cblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCBpdHNcbiAgIHZhbHVlLlxuXG4gICBOb3RlOiAicHJpbnQoKSIgY2FuIGFsc28gYmUgdXNlZCwgYnV0IGlzIG5vdCBhIGRlYnVnZ2VyIGNvbW1hbmRcbiAgICAgLS0tIHRoaXMgZXhlY3V0ZXMgdGhlIFB5dGhvbiAicHJpbnQoKSIgZnVuY3Rpb24uXG5cbnBwIGV4cHJlc3Npb25cblxuICAgTGlrZSB0aGUgInAiIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgcHJldHR5LVxuICAgcHJpbnRlZCB1c2luZyB0aGUgInBwcmludCIgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSAiY29kZSIgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkIGJ5IGFsbFxuICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG5cbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbiAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4gICAgICBhbGlhcyBwcyBwaSBzZWxmXG5cbnVuYWxpYXMgbmFtZVxuXG4gICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cblxuISBzdGF0ZW1lbnRcblxuICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudFxuICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCBhXG4gICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCBhXG4gICAiZ2xvYmFsIiBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggInNobGV4IiBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciBvcHRpb25zIGFyZVxuICAgcHJlc2VydmVkLiAicmVzdGFydCIgaXMgYW4gYWxpYXMgZm9yICJydW4iLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGVcbiAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKLSAnZGVsJzogdSdcblRoZSAiZGVsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsIG9yXG5nbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSAiZ2xvYmFsIlxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG4iTmFtZUVycm9yIiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKLSAnZGljdCc6IHUnXG5EaWN0aW9uYXJ5IGRpc3BsYXlzXG4qKioqKioqKioqKioqKioqKioqXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGtleS9kYXR1bSBwYWlyc1xuZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuXG4gICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCBkaWN0X2NvbXByZWhlbnNpb25dICJ9IlxuICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uXG4gICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuXG5JZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgZGljdGlvbmFyeTpcbmVhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG5jb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBrZXlcbm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5XCdzIHZhbHVlXG5mb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbnNob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbmJldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxucmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKLSAnZHluYW1pYy1mZWF0dXJlcyc6IHUnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5JZiB0aGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiaW1wb3J0ICoiIC0tLSBpcyB1c2VkIGluIGFcbmZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYSBuZXN0ZWQgYmxvY2sgd2l0aCBmcmVlXG52YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGEgIlN5bnRheEVycm9yIi5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ2Vsc2UnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnZXhjZXB0aW9ucyc6IHUnXG5FeGNlcHRpb25zXG4qKioqKioqKioqXG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleGVjbW9kZWwnOiB1J1xuRXhlY3V0aW9uIG1vZGVsXG4qKioqKioqKioqKioqKipcblxuXG5OYW1pbmcgYW5kIGJpbmRpbmdcbj09PT09PT09PT09PT09PT09PVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuIEVhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG9cbnRoZSAqYmluZGluZyogb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGluIHRoZSBpbm5lcm1vc3QgZnVuY3Rpb24gYmxvY2tcbmNvbnRhaW5pbmcgdGhlIHVzZS5cblxuQSAqYmxvY2sqIGlzIGEgcGllY2Ugb2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzIGFcbnVuaXQuIFRoZSBmb2xsb3dpbmcgYXJlIGJsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kIGEgY2xhc3NcbmRlZmluaXRpb24uIEVhY2ggY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBIHNjcmlwdFxuZmlsZSAoYSBmaWxlIGdpdmVuIGFzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciBzcGVjaWZpZWRcbmFzIGEgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHRvIHRoZSBpbnRlcnByZXRlcikgaXMgYSBjb2RlIGJsb2NrLiAgQVxuc2NyaXB0IGNvbW1hbmQgKGEgY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZVxud2l0aCB0aGUgXCcqKi1jKipcJyBvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkXG50byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG5cbkEgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgY29udGFpbnNcbnNvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kIGRldGVybWluZXNcbndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9ja1wncyBleGVjdXRpb24gaGFzXG5jb21wbGV0ZWQuXG5cbkEgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgbG9jYWxcbnZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICBJZiB0aGVcbmRlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSBibG9ja3NcbmNvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrIGludHJvZHVjZXNcbmEgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLiAgVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYVxuY2xhc3MgYmxvY2sgaXMgbGltaXRlZCB0byB0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGVcbmNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgLS0gdGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yXG5leHByZXNzaW9ucyBzaW5jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpc1xubWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIHdpbGwgZmFpbDpcblxuICAgY2xhc3MgQTpcbiAgICAgICBhID0gNDJcbiAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG5cbldoZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgbmVhcmVzdFxuZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgYmxvY2tcbmlzIGNhbGxlZCB0aGUgYmxvY2tcJ3MgKmVudmlyb25tZW50Ki5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZSBtb2R1bGVcbmxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGUgY29kZVxuYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZSBibG9ja1xuYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuSWYgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBoYXMgbm90IGJlZW4gYm91bmQsIGFuXG4iVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuICAiVW5ib3VuZExvY2FsRXJyb3IiIGlzIGFcbnN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLFxuImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kIHRoZVxuY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0IGFyZVxuaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciBhZnRlclxuImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgc3RhdGVtZW50XG5vZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybVxubWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuXG5BIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kIGZvclxudGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgbmFtZSkuXG5cbkVhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkIGJ5IGFcbmNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlIHRvcC1sZXZlbFxuY29kZSBibG9jaykuXG5cbklmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgYWxsXG51c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byB0aGVcbmN1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiBhXG5ibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG5kZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxud2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cbklmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgbmFtZVxuc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluIHRoZVxudG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsIG5hbWVzcGFjZSBieVxuc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSBuYW1lc3BhY2Vcbm9mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkIGZpcnN0LiAgSWZcbnRoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gIFRoZVxuImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cblxuVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgYmxvY2tcbmlzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzIGdsb2JhbFxubmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgY2FzZVxudGhlIG1vZHVsZVwncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIl9fbWFpbl9fIlxubW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gYW55XG5vdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiB0aGVcbiJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSB1c2VyLWNyZWF0ZWRcbmRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbiJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xud2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgImltcG9ydCJcbnRoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG5cblRoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhXG5tb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyBjYWxsZWRcbiJfX21haW5fXyIuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmVcbm5hbWVzLiBUaGVzZSByZWZlcmVuY2VzIGZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24uXG5UaGUgbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5XG5vZiB0aGUgY2xhc3MuICBOYW1lcyBkZWZpbmVkIGF0IHRoZSBjbGFzcyBzY29wZSBhcmUgbm90IHZpc2libGUgaW5cbm1ldGhvZHMuXG5cblxuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhXG5mdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZVxudmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG5cblxuRXhjZXB0aW9uc1xuPT09PT09PT09PVxuXG5FeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgY29udHJvbFxub2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbmNvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBlcnJvciBpc1xuZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgYnkgYW55XG5jb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrIHdoZXJlXG50aGUgZXJyb3Igb2NjdXJyZWQuXG5cblRoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSBydW4tdGltZVxuZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG5leHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gRXhjZXB0aW9uXG5oYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICBUaGVcbiJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGNsZWFudXBcbmNvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCB3aGV0aGVyIGFuXG5leGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cblxuUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuIG91dGVyXG5sZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgdGhlXG5mYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgY29kZVxuZnJvbSB0aGUgdG9wKS5cblxuV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgdGVybWluYXRlc1xuZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluIGxvb3AuICBJblxuZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlIGV4Y2VwdGlvbiBpc1xuIlN5c3RlbUV4aXQiLlxuXG5FeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiBjbGF1c2UgaXNcbnNlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0IHJlZmVyZW5jZSB0aGVcbmNsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSBjYW4gYmVcbnJlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbmV4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cblxuTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gIFRoZWlyXG4gIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgd2l0aG91dFxuICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuIHVuZGVyXG4gIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cblxuU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHRyeVxuc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgYnlcbiAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSBpc1xuICAgIGNvbXBpbGVkLlxuJywKLSAnZXhwcmxpc3RzJzogdSdcbkV4cHJlc3Npb24gbGlzdHNcbioqKioqKioqKioqKioqKipcblxuICAgZXhwcmVzc2lvbl9saXN0IDo6PSBleHByZXNzaW9uICggIiwiIGV4cHJlc3Npb24gKSogWyIsIl1cblxuQW4gZXhwcmVzc2lvbiBsaXN0IGNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlXG5sZW5ndGggb2YgdGhlIHR1cGxlIGlzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGVcbmV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5UaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgKGEuay5hLiBhXG4qc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlIGV4cHJlc3Npb25cbndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2VzblwndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciB5aWVsZHMgdGhlXG52YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiBlbXB0eSBwYWlyXG5vZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAotICdmbG9hdGluZyc6IHUnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlclxuYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ2Zvcic6IHUnXG5UaGUgImZvciIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogdSdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICJGb3JtYXR0ZXIiLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbiJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbiJ7eyIgYW5kICJ9fSIuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0IGZvciB0aGVcbnJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgIlwnMTBcJyIgb3JcbiJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5IGFueVxubnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCB3aGlsZSBhblxuZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwIHVzaW5nXG4iX19nZXRpdGVtX18oKSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAiX19mb3JtYXRfXygpIlxubWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzIGRlc2lyYWJsZSB0b1xuZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgb3duXG5kZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbmNhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgd2hpY2ggY2FsbHNcbiJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgIlwnIWFcJyIgd2hpY2hcbmNhbGxzICJhc2NpaSgpIi5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBjYW4gY29udGFpbiBvbmx5IGEgZmllbGRcbm5hbWU7IGNvbnZlcnNpb24gZmxhZ3MgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9ucyBhcmUgbm90IGFsbG93ZWQuICBUaGVcbnJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZSBzdWJzdGl0dXRlZCBiZWZvcmUgdGhlXG4qZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpcyBhbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYVxudmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluICJmb3JtYXQoKSIgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlIHZhbHVlLiBBIG5vbi1lbXB0eVxuZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkIGJ5IGEgKmZpbGwqXG5jaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSBpZlxub21pdHRlZC4gTm90ZSB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgInsiIGFuZCAifSIgYXMgKmZpbGwqXG5jaGFyIHdoaWxlIHVzaW5nIHRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2Q7IHRoaXMgbGltaXRhdGlvbiBob3dldmVyXG5kb2VzblwndCBhZmZlY3QgdGhlICJmb3JtYXQoKSIgZnVuY3Rpb24uXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlICJcJyNcJyIgb3B0aW9uIGNhdXNlcyB0aGUgImFsdGVybmF0ZSBmb3JtIiB0byBiZSB1c2VkIGZvciB0aGVcbmNvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgZGlmZmVyZW50XG50eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCBjb21wbGV4IGFuZFxuRGVjaW1hbCB0eXBlcy4gRm9yIGludGVnZXJzLCB3aGVuIGJpbmFyeSwgb2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dFxuaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICJcJzBvXCciLCBvclxuIlwnMHhcJyIgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgRGVjaW1hbCB0aGVcbmFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIHRvIGFsd2F5cyBjb250YWluIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuIE5vcm1hbGx5LCBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgY29udmVyc2lvbnNcbm9ubHkgaWYgYSBkaWdpdCBmb2xsb3dzIGl0LiBJbiBhZGRpdGlvbiwgZm9yICJcJ2dcJyIgYW5kICJcJ0dcJyJcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgdGhvdXNhbmRzIHNlcGFyYXRvci5cbkZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlXG5pbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICoqUEVQIDM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cblByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhIHplcm8gKCJcJzBcJyIpIGNoYXJhY3RlciBlbmFibGVzIHNpZ24tXG5hd2FyZSB6ZXJvLXBhZGRpbmcgZm9yIG51bWVyaWMgdHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCpcbmNoYXJhY3RlciBvZiAiXCcwXCciIHdpdGggYW4gKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludFxuZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAiXCdHXCciLiAgRm9yIG5vbi1cbm51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpbiBvdGhlclxud29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuIFRoZVxuKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0ICJcJ25cJyJcbmFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgaW50ZWdlciB0b1xuYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLCBidXQgY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gIklORiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gInAgPj0gMSIsIHRoaXMgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIgfFxuICAgfCAgICAgICAgICAgfCB3b3VsZCBoYXZlIGV4cG9uZW50ICJleHAiLiAgVGhlbiBpZiAiLTQgPD0gZXhwIDwgcCIsIHRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2ZcJyIgYW5kICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4gICB8ICAgICAgICAgICB8IHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4gICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gcmVtb3ZlZCBpZiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nIGl0LiAgUG9zaXRpdmUgYW5kICB8XG4gICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVybywgYW5kIG5hbnMsICAgfFxuICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiBhbmQgIm5hbiIgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4gICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSBwcmVjaXNpb24gb2YgIjEiLiBUaGUgICAgfFxuICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgc3dpdGNoZXMgdG8gIlwnRVwnIiBpZiAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbiAgIHwgICAgICAgICAgIHwgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJyVcJyIgICAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlIGRlY2ltYWwgcG9pbnQuIFRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHBhcnRpY3VsYXIgdmFsdWUuIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB0byBtYXRjaCB0aGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciBmb3JtYXQgICAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCAiJSItZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcsXG53aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgInt9IiBhbmQgd2l0aCAiOiIgdXNlZCBpbnN0ZWFkIG9mICIlIi4gRm9yXG5leGFtcGxlLCAiXCclMDMuMmZcJyIgY2FuIGJlIHRyYW5zbGF0ZWQgdG8gIlwnezowMy4yZn1cJyIuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+Pj4gXCd7MH0sIHsxfSwgezJ9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwne30sIHt9LCB7fVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKSAgIyAzLjErIG9ubHlcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdCgqXCdhYmNcJykgICAgICAjIHVucGFja2luZyBhcmd1bWVudCBzZXF1ZW5jZVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3swfXsxfXswfVwnLmZvcm1hdChcJ2FicmFcJywgXCdjYWRcJykgICAjIGFyZ3VtZW50c1wnIGluZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4gICBcJ2FicmFjYWRhYnJhXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuXG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQobGF0aXR1ZGU9XCczNy4yNE5cJywgbG9uZ2l0dWRlPVwnLTExNS44MVdcJylcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuICAgPj4+IGNvb3JkID0ge1wnbGF0aXR1ZGVcJzogXCczNy4yNE5cJywgXCdsb25naXR1ZGVcJzogXCctMTE1LjgxV1wnfVxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KCoqY29vcmQpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGF0dHJpYnV0ZXM6XG5cbiAgID4+PiBjID0gMy01alxuICAgPj4+IChcJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCB7MC5yZWFsfSBcJ1xuICAgLi4uICBcJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uXCcpLmZvcm1hdChjKVxuICAgXCdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC5cJ1xuICAgPj4+IGNsYXNzIFBvaW50OlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyAiJXMiIGFuZCAiJXIiOlxuXG4gICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiB7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4gICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG5cbkFsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG5cbiAgID4+PiBcJ3s6PDMwfVwnLmZvcm1hdChcJ2xlZnQgYWxpZ25lZFwnKVxuICAgXCdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICBcJ1xuICAgPj4+IFwnezo+MzB9XCcuZm9ybWF0KFwncmlnaHQgYWxpZ25lZFwnKVxuICAgXCcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWRcJ1xuICAgPj4+IFwnezpeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJylcbiAgIFwnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6Kl4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKSAgIyB1c2UgXCcqXCcgYXMgYSBmaWxsIGNoYXJcbiAgIFwnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqXCdcblxuUmVwbGFjaW5nICIlK2YiLCAiJS1mIiwgYW5kICIlIGYiIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcblxuICAgPj4+IFwnezorZn07IHs6K2Z9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0IGFsd2F5c1xuICAgXCcrMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7OiBmfTsgezogZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuICAgXCcgMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7Oi1mfTsgezotZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgbWludXMgLS0gc2FtZSBhcyBcJ3s6Zn07IHs6Zn1cJ1xuICAgXCczLjE0MDAwMDsgLTMuMTQwMDAwXCdcblxuUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudCBiYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOVxuICAgPj4+IHRvdGFsID0gMjJcbiAgID4+PiBcJ0NvcnJlY3QgYW5zd2VyczogezouMiV9XCcuZm9ybWF0KHBvaW50cy90b3RhbClcbiAgIFwnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiVcJ1xuXG5Vc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG5cbiAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbiAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbiAgID4+PiBcJ3s6JVktJW0tJWQgJUg6JU06JVN9XCcuZm9ybWF0KGQpXG4gICBcJzIwMTAtMDctMDQgMTI6MTU6NThcJ1xuXG5OZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuXG4gICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcChcJzxePlwnLCBbXCdsZWZ0XCcsIFwnY2VudGVyXCcsIFwncmlnaHRcJ10pOlxuICAgLi4uICAgICBcJ3swOntmaWxsfXthbGlnbn0xNn1cJy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgYWxpZ249YWxpZ24pXG4gICAuLi5cbiAgIFwnbGVmdDw8PDw8PDw8PDw8PFwnXG4gICBcJ15eXl5eY2VudGVyXl5eXl5cJ1xuICAgXCc+Pj4+Pj4+Pj4+PnJpZ2h0XCdcbiAgID4+PlxuICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbiAgID4+PiBcJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfVwnLmZvcm1hdCgqb2N0ZXRzKVxuICAgXCdDMEE4MDAwMVwnXG4gICA+Pj4gaW50KF8sIDE2KVxuICAgMzIzMjIzNTUyMVxuICAgPj4+XG4gICA+Pj4gd2lkdGggPSA1XG4gICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTogI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRVxuICAgLi4uICAgICBmb3IgYmFzZSBpbiBcJ2RYb2JcJzpcbiAgIC4uLiAgICAgICAgIHByaW50KFwnezA6e3dpZHRofXtiYXNlfX1cJy5mb3JtYXQobnVtLCBiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSwgZW5kPVwnIFwnKVxuICAgLi4uICAgICBwcmludCgpXG4gICAuLi5cbiAgICAgICA1ICAgICA1ICAgICA1ICAgMTAxXG4gICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuICAgICAgIDcgICAgIDcgICAgIDcgICAxMTFcbiAgICAgICA4ICAgICA4ICAgIDEwICAxMDAwXG4gICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuICAgICAgMTAgICAgIEEgICAgMTIgIDEwMTBcbiAgICAgIDExICAgICBCICAgIDEzICAxMDExXG4nLAotICdmdW5jdGlvbic6IHUnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCi0gJ2dsb2JhbCc6IHUnXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvZGVcbmJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yICJpbXBvcnQiIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpc1xuZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZVxudGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLiAgSXRcbmFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiB0aGVcbmNvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICJldmFsKCkiXG5hbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKLSAnaWQtY2xhc3Nlcyc6IHUnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yIHRoZSBmaXJzdFxuY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbiJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWYnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnaW1hZ2luYXJ5JzogdSdcbkltYWdpbmFyeSBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqXG5cbkltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgaW50cGFydCkgKCJqIiB8ICJKIilcblxuQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuXG5Db21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzXG5hbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSBjb21wbGV4XG5udW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsXG5lLmcuLCAiKDMrNGopIi4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiB1J1xuVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5UaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gImZyb20iIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG5zdGVwczpcblxuMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuXG4yLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZVxuICAgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG5kZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlICppbXBvcnQgc3lzdGVtKixcbndoaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXRcbmNhbiBiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbmN1c3RvbWl6ZSB0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXlcbmluZGljYXRlIGVpdGhlciB0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhblxuZXJyb3Igb2NjdXJyZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvblxub2YgdGhlIG1vZHVsZVwncyBjb2RlLlxuXG5JZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlIG1hZGVcbmF2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuXG4qIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgImZyb20iIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOlxuXG4xLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSAiZnJvbSIgY2xhdXNlLCBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgImltcG9ydCIgY2xhdXNlczpcblxuICAgMS4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZVxuXG4gICAyLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuXG4gICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZVxuXG4gICAzLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgIkltcG9ydEVycm9yIiBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSAiYXMiIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LFxuICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZVxuXG5FeGFtcGxlczpcblxuICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmJcbiAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhelxuICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHJcblxuSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyICgiXCcqXCciKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgIl9fYWxsX18iOyBpZiBkZWZpbmVkLCBpdCBtdXN0XG5iZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdFxubW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluICJfX2FsbF9fIiBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZFxuYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgIl9fYWxsX18iIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpY1xubmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdFxuYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkIGNvbnRhaW5cbnRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZ1xuaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZVxuaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyBvbmx5XG5hbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiB5b3VcbmNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbiJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSB3aWxsXG5lbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCBtb2QiXG5mcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG5zcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbiJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlIGZlYXR1cmVcbmJlY29tZXMgc3RhbmRhcmQuXG5cblRoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9uc1xub2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0XG5hbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbnJlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4ibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2VcbnRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0IHdpbGxcbmJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSBzdGF0ZW1lbnRcbndpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoIHRoZVxuZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4iY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzogKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG5cbiAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAotICdpbic6IHUnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgImEgPCBiIDwgYyIgaGF2ZSB0aGVcbmludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuXG4gICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4gICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4gICAgICAgICAgICAgICAgICAgICB8ICJpcyIgWyJub3QiXSB8IFsibm90Il0gImluIlxuXG5Db21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG5cbkNvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCAieCA8IHkgPD0geiIgaXNcbmVxdWl2YWxlbnQgdG8gInggPCB5IGFuZCB5IDw9IHoiLCBleGNlcHQgdGhhdCAieSIgaXMgZXZhbHVhdGVkIG9ubHlcbm9uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgeSIgaXNcbmZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgYyAuLi4geVxub3BOIHoiIGlzIGVxdWl2YWxlbnQgdG8gImEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6IiwgZXhjZXB0XG50aGF0IGVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgYXQgbW9zdCBvbmNlLlxuXG5Ob3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb24gYmV0d2VlblxuKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sICJ4IDwgeSA+IHoiIGlzIHBlcmZlY3RseSBsZWdhbCAodGhvdWdoXG5wZXJoYXBzIG5vdCBwcmV0dHkpLlxuXG5UaGUgb3BlcmF0b3JzICI8IiwgIj4iLCAiPT0iLCAiPj0iLCAiPD0iLCBhbmQgIiE9IiBjb21wYXJlIHRoZSB2YWx1ZXNcbm9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLiBJZiBib3RoIGFyZVxubnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsIHRoZSAiPT0iIGFuZFxuIiE9IiBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMgdG8gYmVcbnVuZXF1YWwsIHdoaWxlIHRoZSAiPCIsICI+IiwgIj49IiBhbmQgIjw9IiBvcGVyYXRvcnMgcmFpc2UgYVxuIlR5cGVFcnJvciIgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMgdGhhdCBkbyBub3RcbmltcGxlbWVudCB0aGVzZSBvcGVyYXRvcnMgZm9yIHRoZSBnaXZlbiBwYWlyIG9mIHR5cGVzLiAgWW91IGNhblxuY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Ygbm9uLWJ1aWx0LWluIHR5cGVzIGJ5XG5kZWZpbmluZyByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBsaWtlICJfX2d0X18oKSIsIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4qQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlIHNwZWNpYWwuIFRoZVxuICBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMsICJ4IGlzIHgiIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsICJ4ICE9IHgiLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbiAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICJGYWxzZSIuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8XG4gIGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbCByZXR1cm4gIkZhbHNlIi5cblxuKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICB2YWx1ZXMgb2YgdGhlaXIgZWxlbWVudHMuXG5cbiogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgZXF1aXZhbGVudHMgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJvcmQoKSIpIG9mIHRoZWlyXG4gIGNoYXJhY3RlcnMuIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvblxuICBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCAiWzEsMix4XSA8PSBbMSwyLHldIiBoYXMgdGhlIHNhbWVcbiAgdmFsdWUgYXMgInggPD0geSIuICBJZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90IGV4aXN0LCB0aGVcbiAgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgIlsxLDJdIDwgWzEsMiwzXSIpLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lICIoa2V5LCB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAiKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpIiByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyAiezEsMn0iIGFuZCB7MiwzfSBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZy5cbiAgRm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuXG4qIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXlcbiAgYXJlIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgY29uc2lkZXJlZFxuICBzbWFsbGVyIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0XG4gIGNvbnNpc3RlbnRseSB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlciBvZlxudGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0IG51bWVyaWNcbnR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gaXNcbm5vdCBzdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zICJOb3RJbXBsZW1lbnRlZCIuXG5cblRoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgInhcbm5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgdGVzdHNcbndoZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbmxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSkiLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGlzXG5hIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZyxcbnNvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgInhcbmluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG5pcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG5kdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuImluIi5cblxuVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4IGlzIHkiIGlzXG50cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICAieCBpcyBub3QgeSJcbnlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAotICdpbnRlZ2Vycyc6IHUnXG5JbnRlZ2VyIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cbkludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGludGVnZXIgICAgICAgIDo6PSBkZWNpbWFsaW50ZWdlciB8IG9jdGludGVnZXIgfCBoZXhpbnRlZ2VyIHwgYmluaW50ZWdlclxuICAgZGVjaW1hbGludGVnZXIgOjo9IG5vbnplcm9kaWdpdCBkaWdpdCogfCAiMCIrXG4gICBub256ZXJvZGlnaXQgICA6Oj0gIjEiLi4uIjkiXG4gICBkaWdpdCAgICAgICAgICA6Oj0gIjAiLi4uIjkiXG4gICBvY3RpbnRlZ2VyICAgICA6Oj0gIjAiICgibyIgfCAiTyIpIG9jdGRpZ2l0K1xuICAgaGV4aW50ZWdlciAgICAgOjo9ICIwIiAoIngiIHwgIlgiKSBoZXhkaWdpdCtcbiAgIGJpbmludGVnZXIgICAgIDo6PSAiMCIgKCJiIiB8ICJCIikgYmluZGlnaXQrXG4gICBvY3RkaWdpdCAgICAgICA6Oj0gIjAiLi4uIjciXG4gICBoZXhkaWdpdCAgICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbiAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcblxuVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXRcbmNhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cblxuTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90IGFsbG93ZWQuXG5UaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoIFB5dGhvblxudXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG5cblNvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcblxuICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4gICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHgxMDAwMDAwMDBcbiAgICAgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAgICAgICAgICAweGRlYWRiZWVmXG4nLAotICdsYW1iZGEnOiB1J1xuTGFtYmRhc1xuKioqKioqKlxuXG4gICBsYW1iZGFfZXhwciAgICAgICAgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25cbiAgIGxhbWJkYV9leHByX25vY29uZCA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvbl9ub2NvbmRcblxuTGFtYmRhIGV4cHJlc3Npb25zIChzb21ldGltZXMgY2FsbGVkIGxhbWJkYSBmb3JtcykgYXJlIHVzZWQgdG8gY3JlYXRlXG5hbm9ueW1vdXMgZnVuY3Rpb25zLiBUaGUgZXhwcmVzc2lvbiAibGFtYmRhIGFyZ3VtZW50czogZXhwcmVzc2lvbiJcbnlpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC4gIFRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBmdW5jdGlvblxub2JqZWN0IGRlZmluZWQgd2l0aFxuXG4gICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbiAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuXG5TZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIHBhcmFtZXRlciBsaXN0cy5cbk5vdGUgdGhhdCBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIGxhbWJkYSBleHByZXNzaW9ucyBjYW5ub3QgY29udGFpblxuc3RhdGVtZW50cyBvciBhbm5vdGF0aW9ucy5cbicsCi0gJ2xpc3RzJzogdSdcbkxpc3QgZGlzcGxheXNcbioqKioqKioqKioqKipcblxuQSBsaXN0IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2YgZXhwcmVzc2lvbnMgZW5jbG9zZWQgaW5cbnNxdWFyZSBicmFja2V0czpcblxuICAgbGlzdF9kaXNwbGF5IDo6PSAiWyIgW2V4cHJlc3Npb25fbGlzdCB8IGNvbXByZWhlbnNpb25dICJdIlxuXG5BIGxpc3QgZGlzcGxheSB5aWVsZHMgYSBuZXcgbGlzdCBvYmplY3QsIHRoZSBjb250ZW50cyBiZWluZyBzcGVjaWZpZWRcbmJ5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhIGNvbW1hLVxuc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaXMgc3VwcGxpZWQsIGl0cyBlbGVtZW50cyBhcmUgZXZhbHVhdGVkXG5mcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuV2hlbiBhIGNvbXByZWhlbnNpb24gaXMgc3VwcGxpZWQsIHRoZSBsaXN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlXG5lbGVtZW50cyByZXN1bHRpbmcgZnJvbSB0aGUgY29tcHJlaGVuc2lvbi5cbicsCi0gJ25hbWluZyc6IHUnXG5OYW1pbmcgYW5kIGJpbmRpbmdcbioqKioqKioqKioqKioqKioqKlxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuIEVhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG9cbnRoZSAqYmluZGluZyogb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGluIHRoZSBpbm5lcm1vc3QgZnVuY3Rpb24gYmxvY2tcbmNvbnRhaW5pbmcgdGhlIHVzZS5cblxuQSAqYmxvY2sqIGlzIGEgcGllY2Ugb2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzIGFcbnVuaXQuIFRoZSBmb2xsb3dpbmcgYXJlIGJsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kIGEgY2xhc3NcbmRlZmluaXRpb24uIEVhY2ggY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBIHNjcmlwdFxuZmlsZSAoYSBmaWxlIGdpdmVuIGFzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciBzcGVjaWZpZWRcbmFzIGEgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHRvIHRoZSBpbnRlcnByZXRlcikgaXMgYSBjb2RlIGJsb2NrLiAgQVxuc2NyaXB0IGNvbW1hbmQgKGEgY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZVxud2l0aCB0aGUgXCcqKi1jKipcJyBvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkXG50byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG5cbkEgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgY29udGFpbnNcbnNvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kIGRldGVybWluZXNcbndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9ja1wncyBleGVjdXRpb24gaGFzXG5jb21wbGV0ZWQuXG5cbkEgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgbG9jYWxcbnZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICBJZiB0aGVcbmRlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSBibG9ja3NcbmNvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrIGludHJvZHVjZXNcbmEgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLiAgVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYVxuY2xhc3MgYmxvY2sgaXMgbGltaXRlZCB0byB0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGVcbmNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgLS0gdGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yXG5leHByZXNzaW9ucyBzaW5jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpc1xubWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIHdpbGwgZmFpbDpcblxuICAgY2xhc3MgQTpcbiAgICAgICBhID0gNDJcbiAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG5cbldoZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgbmVhcmVzdFxuZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgYmxvY2tcbmlzIGNhbGxlZCB0aGUgYmxvY2tcJ3MgKmVudmlyb25tZW50Ki5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZSBtb2R1bGVcbmxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGUgY29kZVxuYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZSBibG9ja1xuYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuSWYgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBoYXMgbm90IGJlZW4gYm91bmQsIGFuXG4iVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuICAiVW5ib3VuZExvY2FsRXJyb3IiIGlzIGFcbnN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLFxuImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kIHRoZVxuY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0IGFyZVxuaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciBhZnRlclxuImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgc3RhdGVtZW50XG5vZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybVxubWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuXG5BIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kIGZvclxudGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgbmFtZSkuXG5cbkVhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkIGJ5IGFcbmNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlIHRvcC1sZXZlbFxuY29kZSBibG9jaykuXG5cbklmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgYWxsXG51c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byB0aGVcbmN1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiBhXG5ibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG5kZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxud2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cbklmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgbmFtZVxuc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluIHRoZVxudG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsIG5hbWVzcGFjZSBieVxuc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSBuYW1lc3BhY2Vcbm9mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkIGZpcnN0LiAgSWZcbnRoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gIFRoZVxuImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cblxuVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgYmxvY2tcbmlzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzIGdsb2JhbFxubmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgY2FzZVxudGhlIG1vZHVsZVwncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIl9fbWFpbl9fIlxubW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gYW55XG5vdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiB0aGVcbiJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSB1c2VyLWNyZWF0ZWRcbmRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbiJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xud2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgImltcG9ydCJcbnRoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG5cblRoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhXG5tb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyBjYWxsZWRcbiJfX21haW5fXyIuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmVcbm5hbWVzLiBUaGVzZSByZWZlcmVuY2VzIGZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24uXG5UaGUgbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5XG5vZiB0aGUgY2xhc3MuICBOYW1lcyBkZWZpbmVkIGF0IHRoZSBjbGFzcyBzY29wZSBhcmUgbm90IHZpc2libGUgaW5cbm1ldGhvZHMuXG5cblxuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhXG5mdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZVxudmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cblRoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbFxuZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWxcbmFuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZFxuaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgWzFdXG5UaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAotICdub25sb2NhbCc6IHUnXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyIHRvXG5wcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZXhjbHVkaW5nXG5nbG9iYWxzLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzXG50byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG5lbmNhcHN1bGF0ZWQgY29kZSB0byByZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlXG5iZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50LCB1bmxpa2UgdGhvc2UgbGlzdGVkIGluIGFcbiJnbG9iYWwiIHN0YXRlbWVudCwgbXVzdCByZWZlciB0byBwcmUtZXhpc3RpbmcgYmluZGluZ3MgaW4gYW5cbmVuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlIGNyZWF0ZWRcbmNhbm5vdCBiZSBkZXRlcm1pbmVkIHVuYW1iaWd1b3VzbHkpLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQuXG4nLAotICdudW1iZXJzJzogdSdcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgIi0xIlxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgXCciLSJcJyBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ251bWVyaWMtdHlwZXMnOiB1J1xuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLFxuICAgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZVxuICAgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluICJwb3coKSIgZnVuY3Rpb24gaXNcbiAgIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgInBvdygpIixcbiAgICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdFxuICAgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2ZcbiAgIGRpZmZlcmVudCB0eXBlcy4gWzJdICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGFuXG4gICAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID0geC5fX2lhZGRfXyh5KSJcbiAgIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhc1xuICAgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluIHNpdHVhdGlvbnMsIGF1Z21lbnRlZFxuICAgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzIChzZWUgKldoeSBkb2VzXG4gICBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGFkZGl0aW9uXG4gICB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhIG1vZGVsLlxuXG5vYmplY3QuX19uZWdfXyhzZWxmKVxub2JqZWN0Ll9fcG9zX18oc2VsZilcbm9iamVjdC5fX2Fic19fKHNlbGYpXG5vYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgIisiLFxuICAgImFicygpIiBhbmQgIn4iKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgImludCgpIixcbiAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSBhcHByb3ByaWF0ZVxuICAgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyIFB5dGhvbiBuZWVkc1xuICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaFxuICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICJvY3QoKSJcbiAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSBudW1lcmljXG4gICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cblxuICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgd2hlblxuICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgZGVmaW5lZCwgYW5kXG4gICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCi0gJ29iamVjdHMnOiB1J1xuT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4qT2JqZWN0cyogYXJlIFB5dGhvblwncyBhYnN0cmFjdGlvbiBmb3IgZGF0YS4gIEFsbCBkYXRhIGluIGEgUHl0aG9uXG5wcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gb2JqZWN0cy4gKEluXG5hIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG5wcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuXG5FdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3RcJ3NcbippZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXRcbmFzIHRoZSBvYmplY3RcJ3MgYWRkcmVzcyBpbiBtZW1vcnkuICBUaGUgXCciaXMiXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlICJpZCgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sICJpZCh4KSIgaXMgdGhlIG1lbW9yeVxuYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgInR5cGUoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBvYmplY3RcJ3NcbnR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuIG9iamVjdFwnc1xuKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cblxuVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyB1bmNoYW5nZWFibGVcbm9uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG5pbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZVxub2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyXCdzIHZhbHVlIGlzIGNoYW5nZWQ7IGhvd2V2ZXIgdGhlXG5jb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gb2Zcbm9iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSBzdWJ0bGUuKVxuQW4gb2JqZWN0XCdzIG11dGFiaWxpdHkgaXMgZGV0ZXJtaW5lZCBieSBpdHMgdHlwZTsgZm9yIGluc3RhbmNlLFxubnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyBhbmRcbmxpc3RzIGFyZSBtdXRhYmxlLlxuXG5PYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSBpdCBpc1xuYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5pbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbnJlYWNoYWJsZS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgcmVmZXJlbmNlLVxuY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5IGxpbmtlZFxuZ2FyYmFnZSwgd2hpY2ggY29sbGVjdHMgbW9zdCBvYmplY3RzIGFzIHNvb24gYXMgdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbmNpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICJnYyIgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChzb1xueW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnInRyeSIuLi4iZXhjZXB0IlwnXG5zdGF0ZW1lbnQgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZS5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzIG9wZW5cbmZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSBmcmVlZFxud2hlbiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UtY29sbGVjdGVkLCBidXQgc2luY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG5ub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgd2F5IHRvXG5yZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiA9IDEiLFxuImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlIHZhbHVlXG5vbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciAiYyA9IFtdOyBkID0gW10iLCAiYyJcbmFuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCBuZXdseVxuY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSBvYmplY3RcbnRvIGJvdGggImMiIGFuZCAiZCIuKVxuJywKLSAnb3BlcmF0b3Itc3VtbWFyeSc6IHUnXG5PcGVyYXRvciBwcmVjZWRlbmNlXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSBpbiBQeXRob24sIGZyb21cbmxvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgKG1vc3RcbmJpbmRpbmcpLiAgT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGV4cG9uZW50aWF0aW9uLCB3aGljaFxuZ3JvdXBzIGZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbk5vdGUgdGhhdCBjb21wYXJpc29ucywgbWVtYmVyc2hpcCB0ZXN0cywgYW5kIGlkZW50aXR5IHRlc3RzLCBhbGwgaGF2ZVxudGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgZmVhdHVyZSBhc1xuZGVzY3JpYmVkIGluIHRoZSAqQ29tcGFyaXNvbnMqIHNlY3Rpb24uXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgIj49IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgdmFsdWUuLi59IiwgIntleHByZXNzaW9ucy4uLn0iICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksIGZvciBmbG9hdHNcbiAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yIGV4YW1wbGUsIGFuZFxuICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gSUVFRSA3NTQgZG91YmxlLVxuICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgaGF2ZSB0aGUgc2FtZVxuICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArIDFlMTAwIiwgd2hpY2hcbiAgICBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvICIxZTEwMCIuICBUaGUgZnVuY3Rpb25cbiAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mIHRoZVxuICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiB0aGlzIGNhc2UuXG4gICAgV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZSBhcHBsaWNhdGlvbi5cblxuWzJdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mIHksIGl0XCdzXG4gICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gIih4LXgleSkvL3kiIGR1ZSB0b1xuICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluXG4gICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiIGJlIHZlcnkgY2xvc2VcbiAgICB0byAieCIuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZVxuICAgIGxldmVsLCB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGVcbiAgICBzdHJpbmdzICIiXFx1MDBDNyIiIGFuZCAiIlxcdTAzMjdcXHUwMDQzIiIgY29tcGFyZSBkaWZmZXJlbnRseSwgZXZlblxuICAgIHRob3VnaCB0aGV5IGJvdGggcmVwcmVzZW50IHRoZSBzYW1lIHVuaWNvZGUgY2hhcmFjdGVyIChMQVRJTlxuICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBKS4gIFRvIGNvbXBhcmUgc3RyaW5ncyBpbiBhIGh1bWFuXG4gICAgcmVjb2duaXphYmxlIHdheSwgY29tcGFyZSB1c2luZyAidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGVcbiAgICBkeW5hbWljIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWxcbiAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCBsaWtlIHRob3NlXG4gICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgY29uc3RhbnRzLlxuICAgIENoZWNrIHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgdGhlIHNhbWVcbiAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG5cbls2XSBUaGUgcG93ZXIgb3BlcmF0b3IgIioqIiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiBhcml0aG1ldGljXG4gICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICIyKiotMSIgaXMgIjAuNSIuXG4nLAotICdwYXNzJzogdSdcblRoZSAicGFzcyIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG4gICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuXG4icGFzcyIgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCi0gJ3Bvd2VyJzogdSdcblRoZSBwb3dlciBvcGVyYXRvclxuKioqKioqKioqKioqKioqKioqXG5cblRoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG5sZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgVGhlXG5zeW50YXggaXM6XG5cbiAgIHBvd2VyIDo6PSBwcmltYXJ5IFsiKioiIHVfZXhwcl1cblxuVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsIHRoZVxub3BlcmF0b3JzIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90IGNvbnN0cmFpblxudGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0IGFyZ3VtZW50XG5yYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmVcbmZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCBhbmQgdGhlIHJlc3VsdCBpcyBvZiB0aGF0IHR5cGUuXG5cbkZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzIHVubGVzc1xudGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuIjEwKioyIiByZXR1cm5zICIxMDAiLCBidXQgIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuXG5cblJhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgIlplcm9EaXZpc2lvbkVycm9yIi5cblJhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAiY29tcGxleCJcbm51bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGEgIlZhbHVlRXJyb3IiLilcbicsCi0gJ3JhaXNlJzogdSdcblRoZSAicmFpc2UiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cblxuSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG50aGF0IHRoaXMgaXMgYW4gZXJyb3IuXG5cbk90aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxub2JqZWN0LiAgSXQgbXVzdCBiZSBlaXRoZXIgYSBzdWJjbGFzcyBvciBhbiBpbnN0YW5jZSBvZlxuIkJhc2VFeGNlcHRpb24iLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlICJfX3RyYWNlYmFja19fIiBhdHRyaWJ1dGUsIHdoaWNoXG5pcyB3cml0YWJsZS4gWW91IGNhbiBjcmVhdGUgYW4gZXhjZXB0aW9uIGFuZCBzZXQgeW91ciBvd24gdHJhY2ViYWNrIGluXG5vbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoIHJldHVybnNcbnRoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHMgYXJndW1lbnQpLFxubGlrZSBzbzpcblxuICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG5cblRoZSAiZnJvbSIgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZSBzZWNvbmRcbipleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaCB3aWxsXG50aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiBhdHRyaWJ1dGVcbih3aGljaCBpcyB3cml0YWJsZSkuICBJZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCwgYm90aFxuZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKSBmcm9tIGV4Y1xuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbnNpZGVcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIG9yIGEgImZpbmFsbHkiIGNsYXVzZTogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiBpc1xudGhlbiBhdHRhY2hlZCBhcyB0aGUgbmV3IGV4Y2VwdGlvblwncyAiX19jb250ZXh0X18iIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKLSAncmV0dXJuJzogdSdcblRoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbiJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbixcbm5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbnN1YnN0aXR1dGVkLlxuXG4icmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgKG9yXG4iTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICJmaW5hbGx5IlxuY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nIHRoZVxuZnVuY3Rpb24uXG5cbkluIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZVxuZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKLSAnc2VxdWVuY2UtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cbicsCi0gJ3NoaWZ0aW5nJzogdSdcblNoaWZ0aW5nIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG5vcGVyYXRpb25zOlxuXG4gICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcblxuVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSBmaXJzdFxuYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZVxuc2Vjb25kIGFyZ3VtZW50LlxuXG5BIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgInBvdygyLG4pIi5cbkEgbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggInBvdygyLG4pIi5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpc1xuICBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFuICJPdmVyZmxvd0Vycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKLSAnc2xpY2luZ3MnOiB1J1xuU2xpY2luZ3NcbioqKioqKioqXG5cbkEgc2xpY2luZyBzZWxlY3RzIGEgcmFuZ2Ugb2YgaXRlbXMgaW4gYSBzZXF1ZW5jZSBvYmplY3QgKGUuZy4sIGFcbnN0cmluZywgdHVwbGUgb3IgbGlzdCkuICBTbGljaW5ncyBtYXkgYmUgdXNlZCBhcyBleHByZXNzaW9ucyBvciBhc1xudGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhIHNsaWNpbmc6XG5cbiAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbiAgIHNsaWNlX2xpc3QgICA6Oj0gc2xpY2VfaXRlbSAoIiwiIHNsaWNlX2l0ZW0pKiBbIiwiXVxuICAgc2xpY2VfaXRlbSAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlXG4gICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgW3N0cmlkZV0gXVxuICAgbG93ZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHN0cmlkZSAgICAgICA6Oj0gZXhwcmVzc2lvblxuXG5UaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlXG5hbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55IHN1YnNjcmlwdGlvblxuY2FuIGJlIGludGVycHJldGVkIGFzIGEgc2xpY2luZy4gIFJhdGhlciB0aGFuIGZ1cnRoZXIgY29tcGxpY2F0aW5nIHRoZVxuc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHN1YnNjcmlwdGlvbiB0YWtlcyBwcmlvcml0eSBvdmVyIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzbGljaW5nICh0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuXG5UaGUgc2VtYW50aWNzIGZvciBhIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgcHJpbWFyeSBpcyBpbmRleGVkXG4odXNpbmcgdGhlIHNhbWUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZCBhcyBub3JtYWwgc3Vic2NyaXB0aW9uKSB3aXRoIGFcbmtleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgc2xpY2Vcbmxpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGVcbmNvbnZlcnNpb24gb2YgdGhlIHNsaWNlIGl0ZW1zOyBvdGhlcndpc2UsIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBsb25lXG5zbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyBhblxuZXhwcmVzc2lvbiBpcyB0aGF0IGV4cHJlc3Npb24uICBUaGUgY29udmVyc2lvbiBvZiBhIHByb3BlciBzbGljZSBpcyBhXG5zbGljZSBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSB3aG9zZVxuInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGVcbmV4cHJlc3Npb25zIGdpdmVuIGFzIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCBhbmQgc3RyaWRlLFxucmVzcGVjdGl2ZWx5LCBzdWJzdGl0dXRpbmcgIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKLSAnc3BlY2lhbGF0dHJzJzogdSdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlICJkaXIoKSIgYnVpbHQtaW4gZnVuY3Rpb24uXG5cbm9iamVjdC5fX2RpY3RfX1xuXG4gICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBvYmplY3RcJ3NcbiAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cblxuaW5zdGFuY2UuX19jbGFzc19fXG5cbiAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG5cbmNsYXNzLl9fYmFzZXNfX1xuXG4gICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuXG5jbGFzcy5fX25hbWVfX1xuXG4gICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuY2xhc3MuX19xdWFsbmFtZV9fXG5cbiAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiAiX19tcm9fXyIuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kXG4gICAgaW4gdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCB0b1xuICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgIGJlaW5nIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSxcbiAgICBvciAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYVxuICAgIHNpbmdsZXRvbiB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCi0gJ3NwZWNpYWxuYW1lcyc6IHUnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsXG50aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgaSkiLlxuRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2UgYW5cbmV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbiJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbiJOb2RlTGlzdCIgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mICJ4PT15IiBkb2VzIG5vdCBpbXBseSB0aGF0ICJ4IT15IiBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nICJfX2VxX18oKSIsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgICJfX25lX18oKSIgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlIHRoZVxuICAgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb24gY3JlYXRpbmdcbiAgICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uIG9wZXJhdGlvbnMgYW5kXG4gICBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyByZWZsZWN0aW9uLFxuICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiJcblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgIl9fZXFfXygpIlxuICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlIGFzIGl0ZW1zIGluXG4gICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlIG9iamVjdHMgYW5kXG4gICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90IGltcGxlbWVudFxuICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgY29sbGVjdGlvbnNcbiAgIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSBvYmplY3RcJ3MgaGFzaFxuICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiBtZXRob2RzIGJ5XG4gICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2hcbiAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09IGhhc2goeSkiLlxuXG4gICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAiX19oYXNoX18oKSJcbiAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gIFdoZW4gdGhlXG4gICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzXG4gICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvXG4gICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSIpLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSBpbnRlcnByZXRlclxuICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSBjbGFzc1xuICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiIHRoYXRcbiAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiIGNhbGwuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kXG4gICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdFxuICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlIG9iamVjdCBpc1xuICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyBhcmVcbiAgIGNvbnNpZGVyZWQgdHJ1ZS5cblxuXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbi0tLS0tLS0tLVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSBjbGFzcyBib2R5IGlzXG5leGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlXG5yZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuXG5UaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXNlZCBieSBwYXNzaW5nIHRoZVxuIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCBvciBieVxuaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiBhcmd1bWVudC4gSW5cbnRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgaW5zdGFuY2VzXG5vZiAiTWV0YSI6XG5cbiAgIGNsYXNzIE1ldGEodHlwZSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4gICAgICAgcGFzc1xuXG5Bbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uXG5hcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCBiZWxvdy5cblxuV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6XG5cbiogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG5cbiogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuXG4qIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG5cbiogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG5cblxuRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhc1xuZm9sbG93czpcblxuKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAidHlwZSgpIiBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcblxuKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvclxuICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkXG5cblRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkXG5tZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuXG5cblByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSxcbml0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLFxuKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbVxudGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3Ncbm5hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSAiZGljdCgpIiBpbnN0YW5jZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG5cbiAgICAgSW50cm9kdWNlZCB0aGUgIl9fcHJlcGFyZV9fIiBuYW1lc3BhY2UgaG9va1xuXG5cbkV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyAiZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpIi4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byAiZXhlYygpIiBpcyB0aGF0XG5sZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG5uYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgdGhlIHNhbWVcbmFzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cblxuVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgemVyby1cbmFyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCBjbG9zdXJlXG5yZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyBib2R5IHJlZmVyXG50byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnQgZm9ybVxub2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBiYXNlZCBvblxubGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCB0byBtYWtlIHRoZVxuY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGVcbm1ldGhvZC5cblxuQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIGNsYXNzXG5kZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy5cblxuU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuXG4gICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4iY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIHZhcmlhYmxlc1xuYXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgICBAY2xhc3NtZXRob2RcbiAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHMgYW5kXG5hdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG4iaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzIGluXG5vcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG5cbiAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICJpc2luc3RhbmNlKCkiIGFuZFxuICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiBhbmRcbiAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBpblxuICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICJhYmMiXG4gICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsICJwb3coKSIsXG4gICAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlXG4gICBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuXG4gICAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzIGNhbGxlZC4gIFRoZSAiX19kaXZtb2RfXygpIlxuICAgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZyAiX19mbG9vcmRpdl9fKCkiIGFuZFxuICAgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byAiX190cnVlZGl2X18oKSIuICBOb3RlXG4gICB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gInBvdygpIiBmdW5jdGlvbiBpc1xuICAgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLFxuICAgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLlxuICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90XG4gICBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggLVxuICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX3JzdWJfXygpIlxuICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgIl9fcnBvd19fKCkiICh0aGVcbiAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kXG4gICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnRcbiAgICAgb3BlcmFuZFwncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXNcbiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IiwgIjw8PSIsXG4gICAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0IHRvIGRvIHRoZVxuICAgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgKHdoaWNoXG4gICBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhIHNwZWNpZmljIG1ldGhvZFxuICAgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvIHRoZSBub3JtYWxcbiAgIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHdpdGggYW5cbiAgICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPSB4Ll9faWFkZF9fKHkpIlxuICAgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAieS5fX3JhZGRfXyh4KSIgYXJlIGNvbnNpZGVyZWQsIGFzXG4gICB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluIGNlcnRhaW4gc2l0dWF0aW9ucywgYXVnbWVudGVkXG4gICBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBlcnJvcnMgKHNlZSAqV2h5IGRvZXNcbiAgIGFfdHVwbGVbaV0gKz0gW1wnaXRlbVwnXSByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgYWRkaXRpb25cbiAgIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgdGhlIGRhdGEgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cblxuXG5TcGVjaWFsIG1ldGhvZCBsb29rdXBcbj09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmUgb25seVxuZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3QgaW5cbnRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbiAgID4+PiBsZW4oYylcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgXCdDXCcgaGFzIG5vIGxlbigpXG5cblRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgYmVoYXZpb3VyIGxpZXMgd2l0aCBhIG51bWJlciBvZiBzcGVjaWFsXG5tZXRob2RzIHN1Y2ggYXMgIl9faGFzaF9fKCkiIGFuZCAiX19yZXByX18oKSIgdGhhdCBhcmUgaW1wbGVtZW50ZWQgYnlcbmFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mIHRoZXNlXG5tZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsIHdoZW5cbmludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBldmVuIG9mIHRoZSBvYmplY3RcJ3MgbWV0YWNsYXNzOlxuXG4gICA+Pj4gY2xhc3MgTWV0YSh0eXBlKTpcbiAgIC4uLiAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgcHJpbnQoIk1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4gICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSBpbnN0YW5jZVxuICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSB0eXBlXG4gICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4gICAxMFxuXG5CeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb24gcHJvdmlkZXNcbnNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgaW50ZXJwcmV0ZXIsIGF0XG50aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsIG1ldGhvZHMgKHRoZVxuc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiBvcmRlciB0byBiZVxuY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLFxuICAgIHVuZGVyIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZFxuICAgIGlkZWEgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWZcbiAgICBpdCBpcyBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgIl9fYWRkX18oKSIpIGZhaWxzIHRoZSBvcGVyYXRpb24gaXMgbm90XG4gICAgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogdSdcblN0cmluZyBNZXRob2RzXG4qKioqKioqKioqKioqKlxuXG5TdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMsIGFsb25nIHdpdGhcbnRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuXG5TdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGFcbmxhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICJzdHIuZm9ybWF0KCkiLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyIHJhbmdlIG9mIHR5cGVzIGFuZFxuaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiBmYXN0ZXIgZm9yIHRoZSBjYXNlc1xuaXQgY2FuIGhhbmRsZSAoKnByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZyopLlxuXG5UaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnNcbmEgbnVtYmVyIG9mIG90aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllc1xuKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiBtb2R1bGUpLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2FzZWZvbGQoKVxuXG4gICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZVxuICAgdXNlZCBmb3IgY2FzZWxlc3MgbWF0Y2hpbmcuXG5cbiAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgYWdncmVzc2l2ZSBiZWNhdXNlXG4gICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgc3RyaW5nLiBGb3JcbiAgIGV4YW1wbGUsIHRoZSBHZXJtYW4gbG93ZXJjYXNlIGxldHRlciAiXCdceGRmXCciIGlzIGVxdWl2YWxlbnQgdG8gIiJzcyIiLlxuICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyBub3RoaW5nIHRvICJcJ1x4ZGZcJyI7XG4gICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgc3BhY2UpLiBUaGVcbiAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0b1xuICAgImxlbihzKSIuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgIlwnc3RyaWN0XCciLFxuICAgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICJVbmljb2RlRXJyb3IiLiBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLFxuICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB2aWFcbiAgICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uICpFcnJvciBIYW5kbGVycyouIEZvciBhIGxpc3RcbiAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiAiRmFsc2UiLiAgKnN1ZmZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBzdWZmaXhlc1xuICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogY2hhcmFjdGVyc1xuICAgKGRlZmF1bHQgaXMgOCwgZ2l2aW5nIHRhYiBwb3NpdGlvbnMgYXQgY29sdW1ucyAwLCA4LCAxNiBhbmQgc28gb24pLlxuICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyBhbmQgdGhlXG4gICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSBjaGFyYWN0ZXIgaXMgYVxuICAgdGFiICgiXFx0IiksIG9uZSBvciBtb3JlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkIGluIHRoZSByZXN1bHRcbiAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgcG9zaXRpb24uIChUaGVcbiAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciBpcyBhIG5ld2xpbmVcbiAgICgiXFxuIikgb3IgcmV0dXJuICgiXFxyIiksIGl0IGlzIGNvcGllZCBhbmQgdGhlIGN1cnJlbnQgY29sdW1uIGlzXG4gICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkIGFuZCB0aGVcbiAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyB0aGVcbiAgIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCB3aGVuIHByaW50ZWQuXG5cbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicygpXG4gICBcJzAxICAgICAgMDEyICAgICAwMTIzICAgIDAxMjM0XCdcbiAgID4+PiBcJzAxXFx0MDEyXFx0MDEyM1xcdDAxMjM0XCcuZXhwYW5kdGFicyg0KVxuICAgXCcwMSAgMDEyIDAxMjMgICAgMDEyMzRcJ1xuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93XG4gICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCxcbiAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvICJzdHIuZm9ybWF0KCoqbWFwcGluZykiLCBleGNlcHQgdGhhdCAibWFwcGluZyIgaXMgdXNlZFxuICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3IgZXhhbXBsZVxuICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXIgImMiXG4gICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAiVHJ1ZSI6XG4gICAiYy5pc2FscGhhKCkiLCAiYy5pc2RlY2ltYWwoKSIsICJjLmlzZGlnaXQoKSIsIG9yICJjLmlzbnVtZXJpYygpIi5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCBpZGVudGlmaWVycyBzdWNoIGFzXG4gICAiZGVmIiBhbmQgImNsYXNzIi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gInJlcHIoKSIgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzICAgXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgICJzdHIudHJhbnNsYXRlKCkiLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gInNbc3RhcnQ6ZW5kXSIuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAicmZpbmQoKSIgYnV0IHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yIHNwbGl0dGluZ1xuICAgZnJvbSB0aGUgcmlnaHQsICJyc3BsaXQoKSIgYmVoYXZlcyBsaWtlICJzcGxpdCgpIiB3aGljaCBpc1xuICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgICAgIFwnICAgc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgICAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAibWF4c3BsaXQrMSJcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbiAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbiAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICJbXCdcJ10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJywgbWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyLDNcJ11cbiAgICAgID4+PiBcJzEsMiwsMyxcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnXCcsIFwnM1wnLCBcJ1wnXVxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciByZXR1cm5zICJbXSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCcxIDIgM1wnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdChtYXhzcGxpdD0xKVxuICAgICAgW1wnMVwnLCBcJzIgM1wnXVxuICAgICAgPj4+IFwnICAgMSAgIDIgICAzICAgXCcuc3BsaXQoKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuIFRoaXMgbWV0aG9kIHVzZXMgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqIGFwcHJvYWNoIHRvXG4gICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpXG4gICAgICBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXVxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4gICAgICBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJywgXCdrbFxcclxcblwnXVxuXG4gICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcblxuICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuICAgICAgW11cbiAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuICAgICAgW1wnT25lIGxpbmVcJ11cblxuICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG5cbiAgICAgID4+PiBcJ1wnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdcJ11cbiAgICAgID4+PiBcJ1R3byBsaW5lc1xcblwnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdUd28gbGluZXNcJywgXCdcJ11cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2UgcmV0dXJuXG4gICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2sgZm9yLlxuICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzXG4gICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgdGhhdFxuICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ0hlbGxvIHdvcmxkXCcudGl0bGUoKVxuICAgICAgXCdIZWxsbyBXb3JsZFwnXG5cbiAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uIG9mIGFcbiAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiB3b3JrcyBpblxuICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiBjb250cmFjdGlvbnMgYW5kXG4gICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgZGVzaXJlZFxuICAgcmVzdWx0OlxuXG4gICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcblxuICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgcmVndWxhclxuICAgZXhwcmVzc2lvbnM6XG5cbiAgICAgID4+PiBpbXBvcnQgcmVcbiAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuICAgICAgLi4uXG4gICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbiAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuXG5zdHIudHJhbnNsYXRlKG1hcClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgKnMqIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWRcbiAgIHRocm91Z2ggdGhlICptYXAqIHdoaWNoIG11c3QgYmUgYSBkaWN0aW9uYXJ5IG9mIFVuaWNvZGUgb3JkaW5hbHNcbiAgIChpbnRlZ2VycykgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciAiTm9uZSIuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvICJOb25lIiBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlICJzdHIubWFrZXRyYW5zKCkiIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIG1hcCBmcm9tXG4gICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuXG4gICBOb3RlOiBBbiBldmVuIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tXG4gICAgIGNoYXJhY3RlciBtYXBwaW5nIGNvZGVjIHVzaW5nIHRoZSAiY29kZWNzIiBtb2R1bGUgKHNlZVxuICAgICAiZW5jb2RpbmdzLmNwMTI1MSIgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4gICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAiXCcwXCciIGRpZ2l0cyB0b1xuICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4ICgiXCcrXCciLyJcJy1cJyJcbiAgIGlzIGhhbmRsZWQgYnkgaW5zZXJ0aW5nIHRoZSBwYWRkaW5nICphZnRlciogdGhlIHNpZ24gY2hhcmFjdGVyXG4gICByYXRoZXIgdGhhbiBiZWZvcmUuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpc1xuICAgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICJsZW4ocykiLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+ICI0MiIuemZpbGwoNSlcbiAgICAgIFwnMDAwNDJcJ1xuICAgICAgPj4+ICItNDIiLnpmaWxsKDUpXG4gICAgICBcJy0wMDQyXCdcbicsCi0gJ3N0cmluZ3MnOiB1J1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgInN0cmluZ3ByZWZpeCIgb3IgImJ5dGVzcHJlZml4IlxuYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXQgaXMgZGVmaW5lZCBieVxudGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZyBkZWNsYXJhdGlvbiBpc1xuZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmcgZGVjbGFyYXRpb25zKi5cblxuSW4gcGxhaW4gRW5nbGlzaDogQm90aCB0eXBlcyBvZiBsaXRlcmFscyBjYW4gYmUgZW5jbG9zZWQgaW4gbWF0Y2hpbmdcbnNpbmdsZSBxdW90ZXMgKCJcJyIpIG9yIGRvdWJsZSBxdW90ZXMgKCIiIikuICBUaGV5IGNhbiBhbHNvIGJlIGVuY2xvc2VkXG5pbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlIGFyZVxuZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbigiXFwiKSBjaGFyYWN0ZXIgaXMgdXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyB0aGF0IG90aGVyd2lzZSBoYXZlIGFcbnNwZWNpYWwgbWVhbmluZywgc3VjaCBhcyBuZXdsaW5lLCBiYWNrc2xhc2ggaXRzZWxmLCBvciB0aGUgcXVvdGVcbmNoYXJhY3Rlci5cblxuQnl0ZXMgbGl0ZXJhbHMgYXJlIGFsd2F5cyBwcmVmaXhlZCB3aXRoICJcJ2JcJyIgb3IgIlwnQlwnIjsgdGhleSBwcm9kdWNlXG5hbiBpbnN0YW5jZSBvZiB0aGUgImJ5dGVzIiB0eXBlIGluc3RlYWQgb2YgdGhlICJzdHIiIHR5cGUuICBUaGV5IG1heVxub25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCBvclxuZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHN0cmluZyBsaXRlcmFscyB3aXRoIGFcbiJ1IiBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCBjb2RlYmFzZXMuXG5cbkJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbmxldHRlciAiXCdyXCciIG9yICJcJ1JcJyI7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kIHRyZWF0XG5iYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nIGxpdGVyYWxzLFxuIlwnXFxVXCciIGFuZCAiXCdcXHVcJyIgZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LlxuR2l2ZW4gdGhhdCBQeXRob24gMi54XCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSB0aGFuXG5QeXRob24gMy54XCdzIHRoZSAiXCd1clwnIiBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgIlwncmJcJyIgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgYmVlblxuYWRkZWQgYXMgYSBzeW5vbnltIG9mICJcJ2JyXCciLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsXG4oInVcJ3ZhbHVlXCciKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG5QeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgbGl0ZXJhbHMsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkXG4oYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbnRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlXG5saXRlcmFsLCBpLmUuIGVpdGhlciAiXCciIG9yICIiIi4pXG5cblVubGVzcyBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgaW4gc3RyaW5nXG5hbmQgYnl0ZXMgbGl0ZXJhbHMgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvIHRob3NlXG51c2VkIGJ5IFN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCAiXFxuZXdsaW5lIiAgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcXFwiICAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoIlxcIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcXCciICAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoIlwnIikgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcIiIgICAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlICgiIiIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGEiICAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxiIiAgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcZiIgICAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXG4iICAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHYiICAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxvb28iICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAoMSwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxceGhoIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgKDIsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbkVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcTntuYW1lfSIgICAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoNikgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlXG4gICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzXG4gICBkZW5vdGUgYSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cblxuNC4gQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsxXSBoYXMgYmVlblxuICAgYWRkZWQuXG5cbjUuIEluZGl2aWR1YWwgY29kZSB1bml0cyB3aGljaCBmb3JtIHBhcnRzIG9mIGEgc3Vycm9nYXRlIHBhaXIgY2FuXG4gICBiZSBlbmNvZGVkIHVzaW5nIHRoaXMgZXNjYXBlIHNlcXVlbmNlLiAgRXhhY3RseSBmb3VyIGhleCBkaWdpdHMgYXJlXG4gICByZXF1aXJlZC5cblxuNi4gQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodFxuICAgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cblVubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gdGhlXG5zdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSByZXN1bHQqLiAgKFRoaXNcbmJlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIG1pc3R5cGVkLFxudGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgYWxzb1xuaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nXG5saXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlc1xubGl0ZXJhbHMuXG5cbkV2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsIGJ1dCB0aGVcbmJhY2tzbGFzaCByZW1haW5zIGluIHRoZSByZXN1bHQ7IGZvciBleGFtcGxlLCAiciJcXCIiIiBpcyBhIHZhbGlkXG5zdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSBkb3VibGVcbnF1b3RlOyAiciJcXCIiIGlzIG5vdCBhIHZhbGlkIHN0cmluZyBsaXRlcmFsIChldmVuIGEgcmF3IHN0cmluZyBjYW5ub3RcbmVuZCBpbiBhbiBvZGQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzKS4gIFNwZWNpZmljYWxseSwgKmEgcmF3IGxpdGVyYWxcbmNhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCBlc2NhcGVcbnRoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlIGJhY2tzbGFzaFxuZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzIGFzIHBhcnRcbm9mIHRoZSBsaXRlcmFsLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKLSAnc3Vic2NyaXB0aW9ucyc6IHUnXG5TdWJzY3JpcHRpb25zXG4qKioqKioqKioqKioqXG5cbkEgc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlIG9yIGxpc3QpXG5vciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG5cbiAgIHN1YnNjcmlwdGlvbiA6Oj0gcHJpbWFyeSAiWyIgZXhwcmVzc2lvbl9saXN0ICJdIlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHN1YnNjcmlwdGlvblxuKGxpc3RzIG9yIGRpY3Rpb25hcmllcyBmb3IgZXhhbXBsZSkuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gc3VwcG9ydFxuc3Vic2NyaXB0aW9uIGJ5IGRlZmluaW5nIGEgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxuRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0IHN1cHBvcnRcbnN1YnNjcmlwdGlvbjpcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgZXZhbHVhdGUgdG8gYW5cbm9iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCB0aGVcbnN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoYXRcbmtleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyBleGFjdGx5IG9uZVxuaXRlbS4pXG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0IGV2YWx1YXRlIHRvXG5hbiBpbnRlZ2VyIG9yIGEgc2xpY2UgKGFzIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLlxuXG5UaGUgZm9ybWFsIHN5bnRheCBtYWtlcyBubyBzcGVjaWFsIHByb3Zpc2lvbiBmb3IgbmVnYXRpdmUgaW5kaWNlcyBpblxuc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSAiX19nZXRpdGVtX18oKSJcbm1ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCAieFstMV0iIHNlbGVjdHMgdGhlIGxhc3QgaXRlbSBvZiAieCIpLlxuVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gdGhlIG51bWJlclxub2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSBpdGVtIHdob3NlXG5pbmRleCBpcyB0aGF0IHZhbHVlIChjb3VudGluZyBmcm9tIHplcm8pLiBTaW5jZSB0aGUgc3VwcG9ydCBmb3Jcbm5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3RcJ3MgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QsIHN1YmNsYXNzZXMgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB3aWxsIG5lZWQgdG8gZXhwbGljaXRseSBhZGRcbnRoYXQgc3VwcG9ydC5cblxuQSBzdHJpbmdcJ3MgaXRlbXMgYXJlIGNoYXJhY3RlcnMuICBBIGNoYXJhY3RlciBpcyBub3QgYSBzZXBhcmF0ZSBkYXRhXG50eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAotICd0cnV0aCc6IHUnXG5UcnV0aCBWYWx1ZSBUZXN0aW5nXG4qKioqKioqKioqKioqKioqKioqXG5cbkFueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gImlmIiBvclxuIndoaWxlIiBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiBUaGVcbmZvbGxvd2luZyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZmFsc2U6XG5cbiogIk5vbmUiXG5cbiogIkZhbHNlIlxuXG4qIHplcm8gb2YgYW55IG51bWVyaWMgdHlwZSwgZm9yIGV4YW1wbGUsICIwIiwgIjAuMCIsICIwaiIuXG5cbiogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgIlwnXCciLCAiKCkiLCAiW10iLlxuXG4qIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgInt9Ii5cblxuKiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMsIGlmIHRoZSBjbGFzcyBkZWZpbmVzIGFcbiAgIl9fYm9vbF9fKCkiIG9yICJfX2xlbl9fKCkiIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuICBpbnRlZ2VyIHplcm8gb3IgImJvb2wiIHZhbHVlICJGYWxzZSIuIFsxXVxuXG5BbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyBhcmVcbmFsd2F5cyB0cnVlLlxuXG5PcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgYWx3YXlzXG5yZXR1cm4gIjAiIG9yICJGYWxzZSIgZm9yIGZhbHNlIGFuZCAiMSIgb3IgIlRydWUiIGZvciB0cnVlLCB1bmxlc3Ncbm90aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zICJvciJcbmFuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAotICd0cnknOiB1J1xuVGhlICJ0cnkiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKLSAndHlwZXMnOiB1J1xuVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gIEV4dGVuc2lvblxubW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbmltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcblB5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgbnVtYmVycyxcbmVmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoIGFkZGl0aW9uc1xud2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cblxuU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG5cJ3NwZWNpYWwgYXR0cmlidXRlcy5cJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byB0aGVcbmltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyIGRlZmluaXRpb25cbm1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxuTm9uZVxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gSXRcbiAgIGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucywgZS5nLixcbiAgIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4gICBzaG91bGQgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yXG4gICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4gICByZWZsZWN0ZWQgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlXG4gICBvcGVyYXRvci4pICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuICAgU2VlICpJbXBsZW1lbnRpbmcgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9ucyogZm9yIG1vcmUgZGV0YWlscy5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCAiLi4uIiBvciB0aGVcbiAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG4ibnVtYmVycy5OdW1iZXIiXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgIm51bWJlcnMuSW50ZWdyYWwiXG4gICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiBpbnRlZ2Vyc1xuICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG5cbiAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG5cbiAgICAgIEludGVnZXJzICgiaW50IilcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSB0aGVcbiAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGVcbiAgICAgICAgIGludGVnZXIgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCBhbmRcbiAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiBiZWluZ1xuICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgIiJGYWxzZSIiIG9yXG4gICAgICAgICAiIlRydWUiIiBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGFyZVxuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgICJudW1iZXJzLkNvbXBsZXgiICgiY29tcGxleCIpXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciAieiIgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgInoucmVhbCIgYW5kICJ6LmltYWciLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXNcbiAgIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlIGluZGV4IHNldFxuICAgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mIHNlcXVlbmNlICphKiBpc1xuICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuXG4gICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6ICJhW2k6al0iIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbiAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyBpbXBsaWVzXG4gICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuXG4gICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAic3RlcCJcbiAgIHBhcmFtZXRlcjogImFbaTpqOmtdIiBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCogd2hlcmVcbiAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlIGNvZGVcbiAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtIFUrMTBGRkZGIlxuICAgICAgICAgY2FuIGJlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgUHl0aG9uIGRvZXNuXCd0IGhhdmUgYSAiY2hhciJcbiAgICAgICAgIHR5cGU7IGluc3RlYWQsIGV2ZXJ5IGNvZGUgcG9pbnQgaW4gdGhlIHN0cmluZyBpcyByZXByZXNlbnRlZFxuICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIjsgImNocigpIiBjb252ZXJ0cyBhblxuICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlbmd0aFxuICAgICAgICAgIjEiIHN0cmluZyBvYmplY3QuICJzdHIuZW5jb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYVxuICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4gICAgICAgICAiYnl0ZXMuZGVjb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICAiYnl0ZXMoKSIgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgImRlY29kZSgpIlxuICAgICAgICAgbWV0aG9kLlxuXG4gICBNdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgTXV0YWJsZSBzZXF1ZW5jZXMgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgdGhleSBhcmUgY3JlYXRlZC4gIFRoZVxuICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mXG4gICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgImFycmF5IiBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGV4YW1wbGUgb2YgYVxuICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kXG4gICAiMS4wIiksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzICJhZGQoKSIuXG5cbiAgIEZyb3plbiBzZXRzXG4gICAgICBUaGVzZSByZXByZXNlbnQgYW4gaW1tdXRhYmxlIHNldC4gIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlXG4gICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgaW1tdXRhYmxlXG4gICAgICBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZiBhbm90aGVyXG4gICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICJrIlxuICAgZnJvbSB0aGUgbWFwcGluZyAiYSI7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kIGFzIHRoZVxuICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuXG4gICBUaGVyZSBpcyBjdXJyZW50bHkgYSBzaW5nbGUgaW50cmluc2ljIG1hcHBpbmcgdHlwZTpcblxuICAgRGljdGlvbmFyaWVzXG4gICAgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IG5lYXJseVxuICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSBhc1xuICAgICAga2V5cyBhcmUgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMgb3IgZGljdGlvbmFyaWVzIG9yIG90aGVyXG4gICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuICAgICAgaWRlbnRpdHksIHRoZSByZWFzb24gYmVpbmcgdGhhdCB0aGUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mXG4gICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXlcJ3MgaGFzaCB2YWx1ZSB0byByZW1haW4gY29uc3RhbnQuXG4gICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljXG4gICAgICBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kICIxLjAiKVxuICAgICAgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSAiey4uLn0iXG4gICAgICBub3RhdGlvbiAoc2VlIHNlY3Rpb24gKkRpY3Rpb25hcnkgZGlzcGxheXMqKS5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyJcbiAgICAgIG1vZHVsZS5cblxuQ2FsbGFibGUgdHlwZXNcbiAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbiAgIHNlY3Rpb24gKkNhbGxzKikgY2FuIGJlIGFwcGxpZWQ6XG5cbiAgIFVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbiAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbiAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyopLiAgSXQgc2hvdWxkIGJlXG4gICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zXG4gICAgICBhcyB0aGUgZnVuY3Rpb25cJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG5cbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbiAgICAgIHwgIl9fZG9jX18iICAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdWJjbGFzc2VzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkIG5hbWUqIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJOb25lIiBpZiB1bmF2YWlsYWJsZS4gICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlIHJldHVybiAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiX19zZWxmX18iIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzICJfX2Z1bmNfXy5fX2RvY19fIik7ICJfX25hbWVfXyJcbiAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgIl9fbW9kdWxlX18iXG4gICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICJOb25lIlxuICAgICAgaWYgdW5hdmFpbGFibGUuXG5cbiAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgYXJiaXRyYXJ5XG4gICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgVXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3RzIG1heSBiZSBjcmVhdGVkIHdoZW4gZ2V0dGluZyBhblxuICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCBpZlxuICAgICAgdGhhdCBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IG9yIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSB1c2VyLVxuICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzIGluc3RhbmNlcyxcbiAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kIG9iamVjdFxuICAgICAgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAiX19mdW5jX18iXG4gICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCBvYmplY3RcbiAgICAgIGJ1dCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZVxuICAgICAgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbiAoIl9fZnVuY19fIikgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoIl9fc2VsZl9fIikgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsIHdoZW5cbiAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAiZigpIixcbiAgICAgIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgIkMiLCBjYWxsaW5nICJ4LmYoMSkiIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgIGNhbGxpbmcgIkMuZih4LCAxKSIuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluICJfX3NlbGZfXyIgd2lsbCBhY3R1YWxseVxuICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAiQy5mKDEpIlxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgdGhlXG4gICAgICBmdW5jdGlvbiB0byBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlICJ5aWVsZCJcbiAgICAgIHN0YXRlbWVudC4gIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50IG9yXG4gICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4gICAgICAoIm1hdGgiIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiAiX19kb2NfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSBmdW5jdGlvblwnc1xuICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkXG4gICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSAiX19zZWxmX18iIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlICJfX25ld19fKCkiLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byAiX19uZXdfXygpIiBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4gICAgICAiX19pbml0X18oKSIgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbiAgIGNyZWF0ZWQgYnkgdGhlICppbXBvcnQgc3lzdGVtKiBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgImltcG9ydCJcbiAgIHN0YXRlbWVudCAoc2VlICJpbXBvcnQiKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuICAgImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGFuZCBidWlsdC1pbiAiX19pbXBvcnRfXygpIi4gIEEgbW9kdWxlXG4gICBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXNcbiAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4gICBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIm0ueCIgaXMgZXF1aXZhbGVudFxuICAgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlXG4gICBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzblwndCBuZWVkZWQgb25jZVxuICAgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksXG4gICBlLmcuLCAibS54ID0gMSIgaXMgZXF1aXZhbGVudCB0byAibS5fX2RpY3RfX1sieCJdID0gMSIuXG5cbiAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZVxuICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBCZWNhdXNlIG9mIHRoZSB3YXkgQ1B5dGhvblxuICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlIGNsZWFyZWRcbiAgIHdoZW4gdGhlIG1vZHVsZSBmYWxscyBvdXQgb2Ygc2NvcGUgZXZlbiBpZiB0aGUgZGljdGlvbmFyeSBzdGlsbCBoYXNcbiAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCB0aGVcbiAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZTtcbiAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbiAgIHVuYXZhaWxhYmxlOyAiX19maWxlX18iIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZVxuICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSAiX19maWxlX18iXG4gICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDXG4gICBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3JcbiAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzXG4gICB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAiQy54IiBpcyB0cmFuc2xhdGVkIHRvXG4gICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoIGFsbG93XG4gICBmb3Igb3RoZXIgbWVhbnMgb2YgbG9jYXRpbmcgYXR0cmlidXRlcykuIFdoZW4gdGhlIGF0dHJpYnV0ZSBuYW1lIGlzXG4gICBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuICAgY2xhc3Nlcy4gVGhpcyBzZWFyY2ggb2YgdGhlIGJhc2UgY2xhc3NlcyB1c2VzIHRoZSBDMyBtZXRob2RcbiAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2ZcbiAgIFwnZGlhbW9uZFwnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4gICBpbmhlcml0YW5jZSBwYXRocyBsZWFkaW5nIGJhY2sgdG8gYSBjb21tb24gYW5jZXN0b3IuIEFkZGl0aW9uYWxcbiAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4gICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbiAgIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgIkMiLCBzYXkpIHdvdWxkIHlpZWxkIGFcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGVzIGlzICJDIi4gIFdoZW4gaXQgd291bGQgeWllbGQgYVxuICAgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkIGJ5XG4gICB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyAiX19kaWN0X18iLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiBpc1xuICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyB0aGVcbiAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyAiX19iYXNlc19fIiBpcyBhIHR1cGxlXG4gICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gdGhlXG4gICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyB0aGVcbiAgIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZC5cblxuQ2xhc3MgaW5zdGFuY2VzXG4gICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlIGFib3ZlKS5cbiAgIEEgY2xhc3MgaW5zdGFuY2UgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGFzIGEgZGljdGlvbmFyeSB3aGljaFxuICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbiAgIFdoZW4gYW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZCB0aGVyZSwgYW5kIHRoZSBpbnN0YW5jZVwncyBjbGFzcyBoYXNcbiAgIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUsIHRoZSBzZWFyY2ggY29udGludWVzIHdpdGggdGhlIGNsYXNzXG4gICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhIHVzZXItZGVmaW5lZFxuICAgZnVuY3Rpb24gb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3RcbiAgIHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzICJfX2RpY3RfXyIuXG4gICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzIGNsYXNzIGhhcyBhXG4gICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkIGluc3RlYWRcbiAgIG9mIHVwZGF0aW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciBtYXBwaW5nc1xuICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuICAgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKi5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19kaWN0X18iIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cblxuSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4gICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlICJvcGVuKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLFxuICAgYW5kIGFsc28gIm9zLnBvcGVuKCkiLCAib3MuZmRvcGVuKCkiLCBhbmQgdGhlICJtYWtlZmlsZSgpIiBtZXRob2RcbiAgIG9mIHNvY2tldCBvYmplY3RzIChhbmQgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kc1xuICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuXG4gICBUaGUgb2JqZWN0cyAic3lzLnN0ZGluIiwgInN5cy5zdGRvdXQiIGFuZCAic3lzLnN0ZGVyciIgYXJlXG4gICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXJcJ3NcbiAgIHN0YW5kYXJkIGlucHV0LCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXM7IHRoZXkgYXJlIGFsbCBvcGVuIGluIHRleHRcbiAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuICAgImlvLlRleHRJT0Jhc2UiIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImNvX25hbWUiIGdpdmVzIHRoZSBmdW5jdGlvbiBuYW1lO1xuICAgICAgImNvX2FyZ2NvdW50IiBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIChpbmNsdWRpbmdcbiAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgb2ZcbiAgICAgIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nIGFyZ3VtZW50cyk7XG4gICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4gICAgICB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTsgImNvX2NlbGx2YXJzIiBpcyBhXG4gICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbiAgICAgIHJlZmVyZW5jZWQgYnkgbmVzdGVkIGZ1bmN0aW9uczsgImNvX2ZyZWV2YXJzIiBpcyBhIHR1cGxlXG4gICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgc3RyaW5nXG4gICAgICByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgImNvX2NvbnN0cyJcbiAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4gICAgICAiY29fbmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4gICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbiAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbiAgICAgIG9mZnNldHMgdG8gbGluZSBudW1iZXJzIChmb3IgZGV0YWlscyBzZWUgdGhlIHNvdXJjZSBjb2RlIG9mIHRoZVxuICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyAiY29fZmxhZ3MiIGlzIGFuIGludGVnZXIgZW5jb2RpbmcgYVxuICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgIjB4MDQiXG4gICAgICBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqYXJndW1lbnRzIiBzeW50YXggdG8gYWNjZXB0IGFuXG4gICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCBpZlxuICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0IGFyYml0cmFyeVxuICAgICAga2V5d29yZCBhcmd1bWVudHM7IGJpdCAiMHgyMCIgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiBpcyBhXG4gICAgICBnZW5lcmF0b3IuXG5cbiAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoImZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24iKVxuICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlIG9iamVjdFxuICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICIweDIwMDAiIGlzXG4gICAgICBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZSBkaXZpc2lvbiBlbmFibGVkO1xuICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4gICAgICBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cblxuICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4gICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuICAgICAgIk5vbmUiIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImZfYmFjayIgaXMgdG8gdGhlIHByZXZpb3VzIHN0YWNrXG4gICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlIGJvdHRvbVxuICAgICAgc3RhY2sgZnJhbWU7ICJmX2NvZGUiIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZCBpbiB0aGlzXG4gICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbiAgICAgIHZhcmlhYmxlczsgImZfZ2xvYmFscyIgaXMgdXNlZCBmb3IgZ2xvYmFsIHZhcmlhYmxlcztcbiAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgImZfbGFzdGkiXG4gICAgICBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvIHRoZVxuICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG5cbiAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogImZfdHJhY2UiLCBpZiBub3QgIk5vbmUiLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyAiZl9saW5lbm8iIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyIG9mXG4gICAgICB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uIGp1bXBzXG4gICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgZGVidWdnZXJcbiAgICAgIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpIGJ5IHdyaXRpbmdcbiAgICAgIHRvIGZfbGluZW5vLlxuXG4gICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgZnJhbWUuY2xlYXIoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGhlbGQgYnlcbiAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgdGhlXG4gICAgICAgICBnZW5lcmF0b3IgaXMgZmluYWxpemVkLiAgVGhpcyBoZWxwcyBicmVhayByZWZlcmVuY2UgY3ljbGVzXG4gICAgICAgICBpbnZvbHZpbmcgZnJhbWUgb2JqZWN0cyAoZm9yIGV4YW1wbGUgd2hlbiBjYXRjaGluZyBhblxuICAgICAgICAgZXhjZXB0aW9uIGFuZCBzdG9yaW5nIGl0cyB0cmFjZWJhY2sgZm9yIGxhdGVyIHVzZSkuXG5cbiAgICAgICAgICJSdW50aW1lRXJyb3IiIGlzIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgY3VycmVudGx5IGV4ZWN1dGluZy5cblxuICAgICAgICAgTmV3IGluIHZlcnNpb24gMy40LlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICAqVGhlIHRyeSBzdGF0ZW1lbnQqLikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiB0aGVcbiAgICAgIHR1cGxlIHJldHVybmVkIGJ5ICJzeXMuZXhjX2luZm8oKSIuIFdoZW4gdGhlIHByb2dyYW0gY29udGFpbnMgbm9cbiAgICAgIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHkgZm9ybWF0dGVkKVxuICAgICAgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzIGludGVyYWN0aXZlLFxuICAgICAgaXQgaXMgYWxzbyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgdXNlciBhcyAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInRiX25leHQiIGlzIHRoZSBuZXh0IGxldmVsIGluIHRoZVxuICAgICAgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQpLCBvclxuICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuICAgICAgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsOyAidGJfbGluZW5vIiBnaXZlcyB0aGUgbGluZVxuICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzIHRoZVxuICAgICAgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZSBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpblxuICAgICAgdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZVxuICAgICAgb2JqZWN0IGlmIHRoZSBleGNlcHRpb24gb2NjdXJyZWQgaW4gYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBub1xuICAgICAgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG5cbiAgIFNsaWNlIG9iamVjdHNcbiAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgIl9fZ2V0aXRlbV9fKCkiXG4gICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiAic2xpY2UoKSJcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgInN0b3AiXG4gICAgICBpcyB0aGUgdXBwZXIgYm91bmQ7ICJzdGVwIiBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpcyAiTm9uZSIgaWZcbiAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuXG4gICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4gICAgICAgICBjb21wdXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2xpY2UgdGhhdCB0aGUgc2xpY2Ugb2JqZWN0XG4gICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogaXRlbXMuXG4gICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSBhcmVcbiAgICAgICAgIHRoZSAqc3RhcnQqIGFuZCAqc3RvcCogaW5kaWNlcyBhbmQgdGhlICpzdGVwKiBvciBzdHJpZGVcbiAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG5cbiAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyBkZXNjcmliZWRcbiAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4gICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsIHRoZVxuICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4gICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlXG4gICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwIHVzdWFsbHlcbiAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInN0YXRpY21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiAiY2xhc3NtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nLAotICd0eXBlc2Z1bmN0aW9ucyc6IHUnXG5GdW5jdGlvbnNcbioqKioqKioqKlxuXG5GdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlIG9ubHlcbm9wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAiZnVuYyhhcmd1bWVudC1saXN0KSIuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtYXBwaW5nJzogdSdcbk1hcHBpbmcgVHlwZXMgLS0tICJkaWN0IlxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQtXG5pbiAibGlzdCIsICJzZXQiLCBhbmQgInR1cGxlIiBjbGFzc2VzLCBhbmQgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLilcblxuQSBkaWN0aW9uYXJ5XCdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgdGhhdCBhcmVcbm5vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgZGljdGlvbmFyaWVzIG9yXG5vdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbmlkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5XG50aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWxcbihzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbnRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVycyBzdG9yZVxuZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0byB1c2VcbnRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAia2V5OlxudmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCBcJ3Nqb2VyZFwnOlxuNDEyN30iIG9yICJ7NDA5ODogXCdqYWNrXCcsIDQxMjc6IFwnc2pvZXJkXCd9Iiwgb3IgYnkgdGhlICJkaWN0IlxuY29uc3RydWN0b3IuXG5cbmNsYXNzIGNsYXNzIGRpY3QoKiprd2FyZylcbmNsYXNzIGNsYXNzIGRpY3QobWFwcGluZywgKiprd2FyZylcbmNsYXNzIGNsYXNzIGRpY3QoaXRlcmFibGUsICoqa3dhcmcpXG5cbiAgIFJldHVybiBhIG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIGZyb20gYW4gb3B0aW9uYWwgcG9zaXRpb25hbFxuICAgYXJndW1lbnQgYW5kIGEgcG9zc2libHkgZW1wdHkgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLlxuXG4gICBJZiBubyBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuLCBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQuXG4gICBJZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4gYW5kIGl0IGlzIGEgbWFwcGluZyBvYmplY3QsIGFcbiAgIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCB3aXRoIHRoZSBzYW1lIGtleS12YWx1ZSBwYWlycyBhcyB0aGUgbWFwcGluZ1xuICAgb2JqZWN0LiAgT3RoZXJ3aXNlLCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGFuICppdGVyYWJsZSpcbiAgIG9iamVjdC4gIEVhY2ggaXRlbSBpbiB0aGUgaXRlcmFibGUgbXVzdCBpdHNlbGYgYmUgYW4gaXRlcmFibGUgd2l0aFxuICAgZXhhY3RseSB0d28gb2JqZWN0cy4gIFRoZSBmaXJzdCBvYmplY3Qgb2YgZWFjaCBpdGVtIGJlY29tZXMgYSBrZXlcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgb2JqZWN0IHRoZSBjb3JyZXNwb25kaW5nXG4gICB2YWx1ZS4gIElmIGEga2V5IG9jY3VycyBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgZm9yIHRoYXQga2V5XG4gICBiZWNvbWVzIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZWlyXG4gICB2YWx1ZXMgYXJlIGFkZGVkIHRvIHRoZSBkaWN0aW9uYXJ5IGNyZWF0ZWQgZnJvbSB0aGUgcG9zaXRpb25hbFxuICAgYXJndW1lbnQuICBJZiBhIGtleSBiZWluZyBhZGRlZCBpcyBhbHJlYWR5IHByZXNlbnQsIHRoZSB2YWx1ZSBmcm9tXG4gICB0aGUga2V5d29yZCBhcmd1bWVudCByZXBsYWNlcyB0aGUgdmFsdWUgZnJvbSB0aGUgcG9zaXRpb25hbFxuICAgYXJndW1lbnQuXG5cbiAgIFRvIGlsbHVzdHJhdGUsIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWxcbiAgIHRvICJ7Im9uZSI6IDEsICJ0d28iOiAyLCAidGhyZWUiOiAzfSI6XG5cbiAgICAgID4+PiBhID0gZGljdChvbmU9MSwgdHdvPTIsIHRocmVlPTMpXG4gICAgICA+Pj4gYiA9IHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyLCBcJ3RocmVlXCc6IDN9XG4gICAgICA+Pj4gYyA9IGRpY3QoemlwKFtcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCddLCBbMSwgMiwgM10pKVxuICAgICAgPj4+IGQgPSBkaWN0KFsoXCd0d29cJywgMiksIChcJ29uZVwnLCAxKSwgKFwndGhyZWVcJywgMyldKVxuICAgICAgPj4+IGUgPSBkaWN0KHtcJ3RocmVlXCc6IDMsIFwnb25lXCc6IDEsIFwndHdvXCc6IDJ9KVxuICAgICAgPj4+IGEgPT0gYiA9PSBjID09IGQgPT0gZVxuICAgICAgVHJ1ZVxuXG4gICBQcm92aWRpbmcga2V5d29yZCBhcmd1bWVudHMgYXMgaW4gdGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3JcbiAgIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzLiAgT3RoZXJ3aXNlLCBhbnkgdmFsaWQga2V5c1xuICAgY2FuIGJlIHVzZWQuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmXG4gICAgICAqa2V5KiBpcyBub3QgaW4gdGhlIG1hcC5cblxuICAgICAgSWYgYSBzdWJjbGFzcyBvZiBkaWN0IGRlZmluZXMgYSBtZXRob2QgIl9fbWlzc2luZ19fKCkiIGFuZCAqa2V5KlxuICAgICAgaXMgbm90IHByZXNlbnQsIHRoZSAiZFtrZXldIiBvcGVyYXRpb24gY2FsbHMgdGhhdCBtZXRob2Qgd2l0aFxuICAgICAgdGhlIGtleSAqa2V5KiBhcyBhcmd1bWVudC4gIFRoZSAiZFtrZXldIiBvcGVyYXRpb24gdGhlbiByZXR1cm5zXG4gICAgICBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgIl9fbWlzc2luZ19fKGtleSkiIGNhbGwuIE5vIG90aGVyIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2VcbiAgICAgICJfX21pc3NpbmdfXygpIi4gSWYgIl9fbWlzc2luZ19fKCkiIGlzIG5vdCBkZWZpbmVkLCAiS2V5RXJyb3IiXG4gICAgICBpcyByYWlzZWQuICJfX21pc3NpbmdfXygpIiBtdXN0IGJlIGEgbWV0aG9kOyBpdCBjYW5ub3QgYmUgYW5cbiAgICAgIGluc3RhbmNlIHZhcmlhYmxlOlxuXG4gICAgICAgICA+Pj4gY2xhc3MgQ291bnRlcihkaWN0KTpcbiAgICAgICAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4gICAgICAgICAuLi4gICAgICAgICByZXR1cm4gMFxuICAgICAgICAgPj4+IGMgPSBDb3VudGVyKClcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAwXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXSArPSAxXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMVxuXG4gICAgICBUaGUgZXhhbXBsZSBhYm92ZSBzaG93cyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgImNvbGxlY3Rpb25zLkNvdW50ZXIiLiAgQSBkaWZmZXJlbnQgIl9fbWlzc2luZ19fIiBtZXRob2QgaXMgdXNlZFxuICAgICAgYnkgImNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0Ii5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0ICJkW2tleV0iIHRvICp2YWx1ZSouXG5cbiAgIGRlbCBkW2tleV1cblxuICAgICAgUmVtb3ZlICJkW2tleV0iIGZyb20gKmQqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZiAqa2V5KiBpcyBub3RcbiAgICAgIGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiAiVHJ1ZSIgaWYgKmQqIGhhcyBhIGtleSAqa2V5KiwgZWxzZSAiRmFsc2UiLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byAibm90IGtleSBpbiBkIi5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yICJpdGVyKGQua2V5cygpKSIuXG5cbiAgIGNsZWFyKClcblxuICAgICAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjb3B5KClcblxuICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBjbGFzc21ldGhvZCBmcm9ta2V5cyhzZXFbLCB2YWx1ZV0pXG5cbiAgICAgIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tICpzZXEqIGFuZCB2YWx1ZXMgc2V0IHRvXG4gICAgICAqdmFsdWUqLlxuXG4gICAgICAiZnJvbWtleXMoKSIgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvICJOb25lIi5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byAiTm9uZSIsIHNvXG4gICAgICB0aGF0IHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhICJLZXlFcnJvciIuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKCIoa2V5LCB2YWx1ZSkiXG4gICAgICBwYWlycykuIFNlZSB0aGUgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAga2V5cygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGtleXMuICBTZWUgdGhlXG4gICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuXG4gICBwb3BpdGVtKClcblxuICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5ICIoa2V5LCB2YWx1ZSkiIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgICJwb3BpdGVtKCkiIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nICJwb3BpdGVtKCkiIHJhaXNlcyBhICJLZXlFcnJvciIuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvICJOb25lIi5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiAiTm9uZSIuXG5cbiAgICAgICJ1cGRhdGUoKSIgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6ICJkLnVwZGF0ZShyZWQ9MSxcbiAgICAgIGJsdWU9MikiLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgdGhlXG4gICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG5TZWUgYWxzbzogInR5cGVzLk1hcHBpbmdQcm94eVR5cGUiIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlYWQtb25seVxuICB2aWV3IG9mIGEgImRpY3QiLlxuXG5cbkRpY3Rpb25hcnkgdmlldyBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb2JqZWN0cyByZXR1cm5lZCBieSAiZGljdC5rZXlzKCkiLCAiZGljdC52YWx1ZXMoKSIgYW5kXG4iZGljdC5pdGVtcygpIiBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljIHZpZXcgb24gdGhlXG5kaWN0aW9uYXJ5XCdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeSBjaGFuZ2VzLFxudGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cblxuRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciByZXNwZWN0aXZlIGRhdGEsXG5hbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuXG5sZW4oZGljdHZpZXcpXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbml0ZXIoZGljdHZpZXcpXG5cbiAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgKHJlcHJlc2VudGVkIGFzXG4gICB0dXBsZXMgb2YgIihrZXksIHZhbHVlKSIpIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgIih2YWx1ZSwga2V5KSIgcGFpcnMgdXNpbmdcbiAgICJ6aXAoKSI6ICJwYWlycyA9IHppcChkLnZhbHVlcygpLCBkLmtleXMoKSkiLiAgQW5vdGhlciB3YXkgdG9cbiAgIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzICJwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpbiBkLml0ZW1zKCldIi5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSAiUnVudGltZUVycm9yIiBvciBmYWlsIHRvIGl0ZXJhdGUgb3ZlciBhbGwgZW50cmllcy5cblxueCBpbiBkaWN0dmlld1xuXG4gICBSZXR1cm4gIlRydWUiIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzIGtleXMsIHZhbHVlc1xuICAgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhICIoa2V5LCB2YWx1ZSkiXG4gICB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCAiKGtleSwgdmFsdWUpIiBwYWlycyBhcmUgdW5pcXVlXG5hbmQgaGFzaGFibGUsIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlXG5ub3QgdHJlYXRlZCBhcyBzZXQtbGlrZSBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKVxuRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlIGFic3RyYWN0XG5iYXNlIGNsYXNzICJjb2xsZWN0aW9ucy5hYmMuU2V0IiBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgIj09IixcbiI8Iiwgb3IgIl4iKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCi0gJ3R5cGVzbWV0aG9kcyc6IHUnXG5NZXRob2RzXG4qKioqKioqXG5cbk1ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBub3RhdGlvbi5cblRoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyAiYXBwZW5kKCkiIG9uIGxpc3RzKVxuYW5kIGNsYXNzIGluc3RhbmNlIG1ldGhvZHMuICBCdWlsdC1pbiBtZXRob2RzIGFyZSBkZXNjcmliZWQgd2l0aCB0aGVcbnR5cGVzIHRoYXQgc3VwcG9ydCB0aGVtLlxuXG5JZiB5b3UgYWNjZXNzIGEgbWV0aG9kIChhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSBjbGFzcyBuYW1lc3BhY2UpXG50aHJvdWdoIGFuIGluc3RhbmNlLCB5b3UgZ2V0IGEgc3BlY2lhbCBvYmplY3Q6IGEgKmJvdW5kIG1ldGhvZCogKGFsc29cbmNhbGxlZCAqaW5zdGFuY2UgbWV0aG9kKikgb2JqZWN0LiBXaGVuIGNhbGxlZCwgaXQgd2lsbCBhZGQgdGhlICJzZWxmIlxuYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50IGxpc3QuICBCb3VuZCBtZXRob2RzIGhhdmUgdHdvIHNwZWNpYWwgcmVhZC1cbm9ubHkgYXR0cmlidXRlczogIm0uX19zZWxmX18iIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIG1ldGhvZFxub3BlcmF0ZXMsIGFuZCAibS5fX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZyB0aGUgbWV0aG9kLlxuQ2FsbGluZyAibShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIiBpcyBjb21wbGV0ZWx5IGVxdWl2YWxlbnQgdG9cbmNhbGxpbmcgIm0uX19mdW5jX18obS5fX3NlbGZfXywgYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIuXG5cbkxpa2UgZnVuY3Rpb24gb2JqZWN0cywgYm91bmQgbWV0aG9kIG9iamVjdHMgc3VwcG9ydCBnZXR0aW5nIGFyYml0cmFyeVxuYXR0cmlidXRlcy4gIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBzdG9yZWQgb25cbnRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoIm1ldGguX19mdW5jX18iKSwgc2V0dGluZyBtZXRob2RcbmF0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byBzZXQgYW5cbmF0dHJpYnV0ZSBvbiBhIG1ldGhvZCByZXN1bHRzIGluIGFuICJBdHRyaWJ1dGVFcnJvciIgYmVpbmcgcmFpc2VkLiAgSW5cbm9yZGVyIHRvIHNldCBhIG1ldGhvZCBhdHRyaWJ1dGUsIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0IGl0IG9uIHRoZVxudW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3Q6XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuICAgLi4uICAgICAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMubWV0aG9kLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJyAgIyBjYW5cJ3Qgc2V0IG9uIHRoZSBtZXRob2RcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIEF0dHJpYnV0ZUVycm9yOiBcJ21ldGhvZFwnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlIFwnd2hvYW1pXCdcbiAgID4+PiBjLm1ldGhvZC5fX2Z1bmNfXy53aG9hbWkgPSBcJ215IG5hbWUgaXMgbWV0aG9kXCdcbiAgID4+PiBjLm1ldGhvZC53aG9hbWlcbiAgIFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21vZHVsZXMnOiB1J1xuTW9kdWxlc1xuKioqKioqKlxuXG5UaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAibS5uYW1lIixcbndoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICptKlwnc1xuc3ltYm9sIHRhYmxlLiBNb2R1bGUgYXR0cmlidXRlcyBjYW4gYmUgYXNzaWduZWQgdG8uICAoTm90ZSB0aGF0IHRoZVxuImltcG9ydCIgc3RhdGVtZW50IGlzIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGFuIG9wZXJhdGlvbiBvbiBhIG1vZHVsZVxub2JqZWN0OyAiaW1wb3J0IGZvbyIgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3QgbmFtZWQgKmZvbyogdG9cbmV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbiogZm9yIGEgbW9kdWxlXG5uYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyAiX19kaWN0X18iLiBUaGlzIGlzIHRoZVxuZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgdGhpc1xuZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlXCdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgY2FuIHdyaXRlXG4ibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCB5b3UgY2FuXCd0XG53cml0ZSAibS5fX2RpY3RfXyA9IHt9IikuICBNb2RpZnlpbmcgIl9fZGljdF9fIiBkaXJlY3RseSBpcyBub3RcbnJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxtb2R1bGVcblwnc3lzXCcgKGJ1aWx0LWluKT4iLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG4iPG1vZHVsZSBcJ29zXCcgZnJvbSBcJy91c3IvbG9jYWwvbGliL3B5dGhvblguWS9vcy5weWNcJz4iLlxuJywKLSAndHlwZXNzZXEnOiB1J1xuU2VxdWVuY2UgVHlwZXMgLS0tICJsaXN0IiwgInR1cGxlIiwgInJhbmdlIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxub2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAqYmluYXJ5XG5kYXRhKiBhbmQgKnRleHQgc3RyaW5ncyogYXJlIGRlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuXG5cblxuQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlXG50eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSAiY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkNcbmlzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9uc1xub24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHkuXG5JbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosXG4qaiogYW5kICprKiBhcmUgaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55XG50eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG5cblRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGVcbmNvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlICIrIiAoY29uY2F0ZW5hdGlvbikgYW5kICIqIiAocmVwZXRpdGlvbilcbm9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljXG5vcGVyYXRpb25zLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG58ICJ4IGluIHMiICAgICAgICAgICAgICAgICAgIHwgIlRydWUiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIkZhbHNlIiAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJ4IG5vdCBpbiBzIiAgICAgICAgICAgICAgIHwgIkZhbHNlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIlRydWUiICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICsgdCIgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikoNykgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicyAqIG4iIG9yICJuICogcyIgICAgICAgICB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAqcyogICAgICAgIHwgKDIpKDcpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpXSIgICAgICAgICAgICAgICAgICAgICB8ICppKnRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgICAgIHwgKDMpICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg0KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJsZW4ocykiICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibWluKHMpIiAgICAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgIm1heChzKSIgICAgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmluZGV4KHhbLCBpWywgal1dKSIgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgfCAoOCkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciBpbmRleCAgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICppKiBhbmQgYmVmb3JlIGluZGV4ICpqKikgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMuY291bnQoeCkiICAgICAgICAgICAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgICB8ICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhcixcbnR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZ1xuY29ycmVzcG9uZGluZyBlbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5XG5lbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxudHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgKkNvbXBhcmlzb25zKiBpblxudGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG5cbk5vdGVzOlxuXG4xLiBXaGlsZSB0aGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGVcbiAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXNcbiAgIChzdWNoIGFzICJzdHIiLCAiYnl0ZXMiIGFuZCAiYnl0ZWFycmF5IikgYWxzbyB1c2UgdGhlbSBmb3JcbiAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG5cbiAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuICAgICAgVHJ1ZVxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiAiMCIgYXJlIHRyZWF0ZWQgYXMgIjAiICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1tdLCBbXSwgW11dXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mICJbW11dICogMyIgYXJlIChwb2ludGVyc1xuICAgdG8pIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuICAgImxpc3RzIiBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2ZcbiAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICJOb25lIixcbiAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpc1xuICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuIDxcbiAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAiaSsyKmsiLFxuICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4gICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAiZW5kIlxuICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqIGNhbm5vdCBiZVxuICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4gICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4gICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsXG4gICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0b1xuICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYSAiaW8uU3RyaW5nSU8iIGluc3RhbmNlXG4gICAgIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgImJ5dGVzIiBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgImJ5dGVzLmpvaW4oKSIgb3IgImlvLkJ5dGVzSU8iLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlXG4gICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhICJieXRlYXJyYXkiIG9iamVjdC4gICJieXRlYXJyYXkiIG9iamVjdHMgYXJlXG4gICAgIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgInR1cGxlIiBvYmplY3RzLCBleHRlbmQgYSAibGlzdCIgaW5zdGVhZFxuXG4gICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb25cblxuNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyAicmFuZ2UiKSBvbmx5IHN1cHBvcnQgaXRlbVxuICAgc2VxdWVuY2VzIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uXCd0IHN1cHBvcnRcbiAgIHNlcXVlbmNlIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cblxuOC4gImluZGV4IiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW5cbiAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3dcbiAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZVxuICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyAic1tpOmpdLmluZGV4KHgpIixcbiAgIG9ubHkgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhIGFuZCB3aXRoIHRoZSByZXR1cm5lZCBpbmRleCBiZWluZ1xuICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgb2YgdGhlXG4gICBzbGljZS5cblxuXG5JbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5IGltcGxlbWVudFxudGhhdCBpcyBub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzIHN1cHBvcnQgZm9yXG50aGUgImhhc2goKSIgYnVpbHQtaW4uXG5cblRoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyAidHVwbGUiIGluc3RhbmNlcywgdG9cbmJlIHVzZWQgYXMgImRpY3QiIGtleXMgYW5kIHN0b3JlZCBpbiAic2V0IiBhbmQgImZyb3plbnNldCIgaW5zdGFuY2VzLlxuXG5BdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZVxudmFsdWVzIHdpbGwgcmVzdWx0IGluICJUeXBlRXJyb3IiLlxuXG5cbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgdG8gbWFrZVxuaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2VcbnR5cGVzLlxuXG5JbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55XG5pdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kXG52YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAiYnl0ZWFycmF5IiBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAyNTUiKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9IFtdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSBbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiIChzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCBzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmV4dGVuZCh0KSIgICAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzICJzW2xlbihzKTpsZW4ocyldID0gfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSBbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09IHgiICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5IGRlZmF1bHRcbiAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjMuICJyZW1vdmUiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4gICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnNcbiAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgcmV2ZXJzZWRcbiAgIHNlcXVlbmNlLlxuXG41LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGVcbiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uXCd0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cblxuXG5MaXN0c1xuPT09PT1cblxuTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgdmFyeSBieVxuYXBwbGljYXRpb24pLlxuXG5jbGFzcyBjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG5cbiAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6ICJbXSJcblxuICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICJbYV0iLFxuICAgICAiW2EsIGIsIGNdIlxuXG4gICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiAiW3ggZm9yIHggaW4gaXRlcmFibGVdIlxuXG4gICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiAibGlzdCgpIiBvciAibGlzdChpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4gICByZXR1cm5lZCwgc2ltaWxhciB0byAiaXRlcmFibGVbOl0iLiBGb3IgZXhhbXBsZSwgImxpc3QoXCdhYmNcJykiXG4gICByZXR1cm5zICJbXCdhXCcsIFwnYlwnLCBcJ2NcJ10iIGFuZCAibGlzdCggKDEsIDIsIDMpICkiIHJldHVybnMgIlsxLCAyLFxuICAgM10iLiBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHlcbiAgIGxpc3QsICJbXSIuXG5cbiAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGUgInNvcnRlZCgpIlxuICAgYnVpbHQtaW4uXG5cbiAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbiAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuXG4gICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG5cbiAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5ICI8IiBjb21wYXJpc29uc1xuICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgY29tcGFyaXNvblxuICAgICAgb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kIHRoZVxuICAgICAgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0IGluIGEgcGFydGlhbGx5IG1vZGlmaWVkIHN0YXRlKS5cblxuICAgICAgInNvcnQoKSIgYWNjZXB0cyB0d28gYXJndW1lbnRzIHRoYXQgY2FuIG9ubHkgYmUgcGFzc2VkIGJ5XG4gICAgICBrZXl3b3JkICgqa2V5d29yZC1vbmx5IGFyZ3VtZW50cyopOlxuXG4gICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvXG4gICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yIGV4YW1wbGUsXG4gICAgICAia2V5PXN0ci5sb3dlciIpLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZSBsaXN0XG4gICAgICBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nIHByb2Nlc3MuXG4gICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAiTm9uZSIgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSBzb3J0ZWRcbiAgICAgIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZSBrZXkgdmFsdWUuXG5cbiAgICAgIFRoZSAiZnVuY3Rvb2xzLmNtcF90b19rZXkoKSIgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhXG4gICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gdGhlIGxpc3RcbiAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZVxuICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlc1xuICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2VcbiAgICAgICJzb3J0ZWQoKSIgdG8gZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0IGluc3RhbmNlKS5cblxuICAgICAgVGhlICJzb3J0KCkiIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpc1xuICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2ZcbiAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluXG4gICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5XG4gICAgICBncmFkZSkuXG5cbiAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgIlZhbHVlRXJyb3IiIGlmIGl0IGNhbiBkZXRlY3RcbiAgICAgIHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG5cblR1cGxlc1xuPT09PT09XG5cblR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlICJlbnVtZXJhdGUoKSJcbmJ1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSBzZXF1ZW5jZVxub2YgaG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhICJzZXQiIG9yXG4iZGljdCIgaW5zdGFuY2UpLlxuXG5jbGFzcyBjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuXG4gICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6ICIoKSJcblxuICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogImEsIiBvciAiKGEsKSJcblxuICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiYSwgYiwgYyIgb3IgIihhLCBiLCBjKSJcblxuICAgKiBVc2luZyB0aGUgInR1cGxlKCkiIGJ1aWx0LWluOiAidHVwbGUoKSIgb3IgInR1cGxlKGl0ZXJhYmxlKSJcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4gICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCAidHVwbGUoXCdhYmNcJykiIHJldHVybnMgIihcJ2FcJywgXCdiXCcsIFwnY1wnKSJcbiAgIGFuZCAidHVwbGUoIFsxLCAyLCAzXSApIiByZXR1cm5zICIoMSwgMiwgMykiLiBJZiBubyBhcmd1bWVudCBpc1xuICAgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCAiKCkiLlxuXG4gICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGVcbiAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5XG4gICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LlxuICAgRm9yIGV4YW1wbGUsICJmKGEsIGIsIGMpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZSBhcmd1bWVudHMsXG4gICB3aGlsZSAiZigoYSwgYiwgYykpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlIHNvbGVcbiAgIGFyZ3VtZW50LlxuXG4gICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucy5cblxuRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyBjbGVhcmVyXG50aGFuIGFjY2VzcyBieSBpbmRleCwgImNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSIgbWF5IGJlIGEgbW9yZVxuYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuXG5cblJhbmdlc1xuPT09PT09XG5cblRoZSAicmFuZ2UiIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgaXNcbmNvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gImZvciIgbG9vcHMuXG5cbmNsYXNzIGNsYXNzIHJhbmdlKHN0b3ApXG5jbGFzcyBjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuXG4gICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzIChlaXRoZXJcbiAgIGJ1aWx0LWluICJpbnQiIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSAiX19pbmRleF9fIlxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgIjEiLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAiMCIuIElmXG4gICAqc3RlcCogaXMgemVybywgIlZhbHVlRXJyb3IiIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSAiciIgYXJlIGRldGVybWluZWRcbiAgIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiIHdoZXJlICJpID49IDAiIGFuZCAicltpXSA8XG4gICBzdG9wIi5cblxuICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbFxuICAgZGV0ZXJtaW5lZCBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiwgYnV0IHRoZVxuICAgY29uc3RyYWludHMgYXJlICJpID49IDAiIGFuZCAicltpXSA+IHN0b3AiLlxuXG4gICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmICJyWzBdIiBkb2VzIG5vdCBtZWV0IHRoZSB2YWx1ZVxuICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlIGFyZVxuICAgaW50ZXJwcmV0ZWQgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBkZXRlcm1pbmVkIGJ5XG4gICB0aGUgcG9zaXRpdmUgaW5kaWNlcy5cblxuICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgYXJlXG4gICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5IHJhaXNlXG4gICAiT3ZlcmZsb3dFcnJvciIuXG5cbiAgIFJhbmdlIGV4YW1wbGVzOlxuXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpXG4gICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSlcbiAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSlcbiAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSlcbiAgICAgIFswLCAzLCA2LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpXG4gICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDApKVxuICAgICAgW11cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKVxuICAgICAgW11cblxuICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMgZXhjZXB0XG4gICBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSBvYmplY3RzXG4gICBjYW4gb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gYW5kXG4gICByZXBldGl0aW9uIGFuZCBjb25jYXRlbmF0aW9uIHdpbGwgdXN1YWxseSB2aW9sYXRlIHRoYXQgcGF0dGVybikuXG5cblRoZSBhZHZhbnRhZ2Ugb2YgdGhlICJyYW5nZSIgdHlwZSBvdmVyIGEgcmVndWxhciAibGlzdCIgb3IgInR1cGxlIiBpc1xudGhhdCBhICJyYW5nZSIgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKSBhbW91bnQgb2Zcbm1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdCBvbmx5XG5zdG9yZXMgdGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIHZhbHVlcywgY2FsY3VsYXRpbmcgaW5kaXZpZHVhbFxuaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuXG5SYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDLCBhbmRcbnByb3ZpZGUgZmVhdHVyZXMgc3VjaCBhcyBjb250YWlubWVudCB0ZXN0cywgZWxlbWVudCBpbmRleCBsb29rdXAsXG5zbGljaW5nIGFuZCBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgKlNlcXVlbmNlIFR5cGVzIC0tLVxubGlzdCwgdHVwbGUsIHJhbmdlKik6XG5cbj4+PiByID0gcmFuZ2UoMCwgMjAsIDIpXG4+Pj4gclxucmFuZ2UoMCwgMjAsIDIpXG4+Pj4gMTEgaW4gclxuRmFsc2Vcbj4+PiAxMCBpbiByXG5UcnVlXG4+Pj4gci5pbmRleCgxMClcbjVcbj4+PiByWzVdXG4xMFxuPj4+IHJbOjVdXG5yYW5nZSgwLCAxMCwgMilcbj4+PiByWy0xXVxuMThcblxuVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoICI9PSIgYW5kICIhPSIgY29tcGFyZXMgdGhlbSBhc1xuc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWYgdGhleVxucmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlIG9iamVjdHNcbnRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIlxuYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgInJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpIiBvciAicmFuZ2UoMCwgMyxcbjIpID09IHJhbmdlKDAsIDQsIDIpIi4pXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0IHNsaWNpbmdcbmFuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0ICJpbnQiIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzLlxuJywKLSAndHlwZXNzZXEtbXV0YWJsZSc6IHUnXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiICAgICAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoc2FtZSBhcyAic1tsZW4ocyk6bGVuKHMpXSA9IHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG4nLAotICd1bmFyeSc6IHUnXG5VbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHk6XG5cbiAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcblxuVGhlIHVuYXJ5ICItIiAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbmFyZ3VtZW50LlxuXG5UaGUgdW5hcnkgIisiIChwbHVzKSBvcGVyYXRvciB5aWVsZHMgaXRzIG51bWVyaWMgYXJndW1lbnQgdW5jaGFuZ2VkLlxuXG5UaGUgdW5hcnkgIn4iIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgaXRzXG5pbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICJ4IiBpcyBkZWZpbmVkIGFzXG4iLSh4KzEpIi4gIEl0IG9ubHkgYXBwbGllcyB0byBpbnRlZ3JhbCBudW1iZXJzLlxuXG5JbiBhbGwgdGhyZWUgY2FzZXMsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXIgdHlwZSwgYVxuIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3doaWxlJzogdSdcblRoZSAid2hpbGUiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nLAotICd3aXRoJzogdSdcblRoZSAid2l0aCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogdSdcblRoZSAieWllbGQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXNcbnRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb25cbnN0YXRlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG5cbiAgIHlpZWxkIDxleHByPlxuICAgeWllbGQgZnJvbSA8ZXhwcj5cblxuYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuXG4gICAoeWllbGQgPGV4cHI+KVxuICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IFNlcCAxMiAxNzoyMjoyNCAyMDE1Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzICcKKyAgICAgICAgICAgJ2VxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgaWYgbm90IGV4cHJlc3Npb24xOiByYWlzZSBBc3NlcnRpb25FcnJvcihleHByZXNzaW9uMilcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlc2UgZXF1aXZhbGVuY2VzIGFzc3VtZSB0aGF0ICJfX2RlYnVnX18iIGFuZCAiQXNzZXJ0aW9uRXJyb3IiICcKKyAgICAgICAgICAgJ3JlZmVyXG4nCisgICAgICAgICAgICd0byB0aGUgYnVpbHQtaW4gdmFyaWFibGVzIHdpdGggdGhvc2UgbmFtZXMuICBJbiB0aGUgY3VycmVudFxuJworICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZSBidWlsdC1pbiB2YXJpYWJsZSAiX19kZWJ1Z19fIiBpcyAiVHJ1ZSIgJworICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgJ25vcm1hbCBjaXJjdW1zdGFuY2VzLCAiRmFsc2UiIHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICcoY29tbWFuZFxuJworICAgICAgICAgICAnbGluZSBvcHRpb24gLU8pLiAgVGhlIGN1cnJlbnQgY29kZSBnZW5lcmF0b3IgZW1pdHMgbm8gY29kZSBmb3IgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2Fzc2VydCBzdGF0ZW1lbnQgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIGF0IGNvbXBpbGUgJworICAgICAgICAgICAndGltZS4gIE5vdGVcbicKKyAgICAgICAgICAgJ3RoYXQgaXQgaXMgdW5uZWNlc3NhcnkgdG8gaW5jbHVkZSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSAnCisgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICd0aGF0IGZhaWxlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZTsgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgcGFydCAnCisgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgJ3N0YWNrIHRyYWNlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBc3NpZ25tZW50cyB0byAiX19kZWJ1Z19fIiBhcmUgaWxsZWdhbC4gIFRoZSB2YWx1ZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGludGVycHJldGVyIHN0YXJ0cy5cbicsCisgJ2Fzc2lnbm1lbnQnOiAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyAnCisgICAgICAgICAgICAgICAnYW5kIHRvXG4nCisgICAgICAgICAgICAgICAnbW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChleHByZXNzaW9uX2xpc3QgfCAnCisgICAgICAgICAgICAgICAneWllbGRfZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4nCisgICAgICAgICAgICAgICAnICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKiwgKnN1YnNjcmlwdGlvbiosIGFuZCAqc2xpY2luZyouKVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0ICcKKyAgICAgICAgICAgICAgICcocmVtZW1iZXIgdGhhdFxuJworICAgICAgICAgICAgICAgJ3RoaXMgY2FuIGJlIGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgJworICAgICAgICAgICAgICAgJ3RoZSBsYXR0ZXJcbicKKyAgICAgICAgICAgICAgICd5aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gJworICAgICAgICAgICAgICAgJ2VhY2ggb2ZcbicKKyAgICAgICAgICAgICAgICd0aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGRlcGVuZGluZyBvbiB0aGUgZm9ybSBvZiAnCisgICAgICAgICAgICAgICAndGhlIHRhcmdldFxuJworICAgICAgICAgICAgICAgJyhsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgICAndWx0aW1hdGVseSBwZXJmb3JtIHRoZSBhc3NpZ25tZW50IGFuZCBkZWNpZGUgYWJvdXQgaXRzICcKKyAgICAgICAgICAgICAgICd2YWxpZGl0eSwgYW5kXG4nCisgICAgICAgICAgICAgICAnbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICAnCisgICAgICAgICAgICAgICAnVGhlIHJ1bGVzXG4nCisgICAgICAgICAgICAgICAnb2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSAnCisgICAgICAgICAgICAgICAnZ2l2ZW4gd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIHRoZSBvYmplY3QgdHlwZXMgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgICAgICdoaWVyYXJjaHkqKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5ICcKKyAgICAgICAgICAgICAgICdlbmNsb3NlZCBpblxuJworICAgICAgICAgICAgICAgJ3BhcmVudGhlc2VzIG9yIHNxdWFyZSBicmFja2V0cywgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICAgICAnZm9sbG93cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQ6IFRoZSBvYmplY3QgaXMgJworICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGF0IHRhcmdldC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHM6ICcKKyAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zICcKKyAgICAgICAgICAgICAgICdhcyB0aGVyZVxuJworICAgICAgICAgICAgICAgJyAgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSAnCisgICAgICAgICAgICAgICAnYXNzaWduZWQsIGZyb21cbicKKyAgICAgICAgICAgICAgICcgIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgJyAgICB3aXRoIGF0IGxlYXN0IGFzIG1hbnkgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICd0YXJnZXRcbicKKyAgICAgICAgICAgICAgICcgICAgbGlzdCwgbWludXMgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgJworICAgICAgICAgICAgICAgJ2Fzc2lnbmVkLFxuJworICAgICAgICAgICAgICAgJyAgICBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZCAnCisgICAgICAgICAgICAgICAndGFyZ2V0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGZpbmFsIGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQgdG8gdGhlIHRhcmdldHMgJworICAgICAgICAgICAgICAgJ2FmdGVyIHRoZVxuJworICAgICAgICAgICAgICAgJyAgICBzdGFycmVkIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2UgaXNcbicKKyAgICAgICAgICAgICAgICcgICAgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0IGNhbiBiZSAnCisgICAgICAgICAgICAgICAnZW1wdHkpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIHRoZSBzYW1lIG51bWJlciAnCisgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICcgICAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICdpdGVtcyBhcmVcbicKKyAgICAgICAgICAgICAgICcgICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgJ3RhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5ICcKKyAgICAgICAgICAgICAgICdkZWZpbmVkIGFzXG4nCisgICAgICAgICAgICAgICAnZm9sbG93cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gaWRlbnRpZmllciAobmFtZSk6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgImdsb2JhbCIgb3IgIm5vbmxvY2FsIiAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAnICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0IGluIHRoZVxuJworICAgICAgICAgICAgICAgJyAgICBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSAnCisgICAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgICAnICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgJworICAgICAgICAgICAgICAgJyJub25sb2NhbCIsXG4nCisgICAgICAgICAgICAgICAnICAgIHJlc3BlY3RpdmVseS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSAnCisgICAgICAgICAgICAgICAnY2F1c2UgdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICAgJ25hbWUgdG8gcmVhY2hcbicKKyAgICAgICAgICAgICAgICcgIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzICcKKyAgICAgICAgICAgICAgICdkZXN0cnVjdG9yIChpZiBpdFxuJworICAgICAgICAgICAgICAgJyAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHRhcmdldCBsaXN0IGVuY2xvc2VkIGluIHBhcmVudGhlc2VzIG9yICcKKyAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgJyAgc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWUgbnVtYmVyXG4nCisgICAgICAgICAgICAgICAnICBvZiBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCBpdHMgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgJ3RhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2U6IFRoZSBwcmltYXJ5ICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uIGluXG4nCisgICAgICAgICAgICAgICAnICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3QgJworICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICcgIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICcKKyAgICAgICAgICAgICAgICciVHlwZUVycm9yIiBpc1xuJworICAgICAgICAgICAgICAgJyAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAgICdvYmplY3QgdG9cbicKKyAgICAgICAgICAgICAgICcgIHRoZSBnaXZlbiBhdHRyaWJ1dGU7IGlmIGl0IGNhbm5vdCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LCAnCisgICAgICAgICAgICAgICAnaXQgcmFpc2VzXG4nCisgICAgICAgICAgICAgICAnICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAnCisgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIikuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgJyAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24sXG4nCisgICAgICAgICAgICAgICAnICAiYS54IiBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vICcKKyAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiAnCisgICAgICAgICAgICAgICAnaXMgYWx3YXlzXG4nCisgICAgICAgICAgICAgICAnICBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuICAnCisgICAgICAgICAgICAgICAnVGh1cywgdGhlXG4nCisgICAgICAgICAgICAgICAnICB0d28gb2NjdXJyZW5jZXMgb2YgImEueCIgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZSAnCisgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBMSFMgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBhdHRyaWJ1dGUgYXMgdGhlIHRhcmdldCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIGFzc2lnbm1lbnQ6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgICBjbGFzcyBDbHM6XG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdCA9IENscygpXG4nCisgICAgICAgICAgICAgICAnICAgICBpbnN0LnggPSBpbnN0LnggKyAxICAgIyB3cml0ZXMgaW5zdC54IGFzIDQgbGVhdmluZyAnCisgICAgICAgICAgICAgICAnQ2xzLnggYXMgM1xuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBuZWNlc3NhcmlseSBhcHBseSB0byBkZXNjcmlwdG9yXG4nCisgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBlaXRoZXIgYSBtdXRhYmxlICcKKyAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgJyAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5KS5cbicKKyAgICAgICAgICAgICAgICcgIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGEgJworICAgICAgICAgICAgICAgJ2xpc3QpLCB0aGVcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlICcKKyAgICAgICAgICAgICAgICJzZXF1ZW5jZSdzXG4iCisgICAgICAgICAgICAgICAnICBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSAnCisgICAgICAgICAgICAgICAnbm9ubmVnYXRpdmVcbicKKyAgICAgICAgICAgICAgICIgIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZSdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSAiCisgICAgICAgICAgICAgICAnaXMgYXNrZWRcbicKKyAgICAgICAgICAgICAgICcgIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGl0cyBpdGVtIHdpdGggdGhhdCAnCisgICAgICAgICAgICAgICAnaW5kZXguICBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCAnCisgICAgICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAgICAgJyAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgIiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nJ3MgIgorICAgICAgICAgICAgICAgJ2tleSB0eXBlLFxuJworICAgICAgICAgICAgICAgJyAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgJworICAgICAgICAgICAgICAgJ3doaWNoIG1hcHNcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciAnCisgICAgICAgICAgICAgICAncmVwbGFjZSBhblxuJworICAgICAgICAgICAgICAgJyAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCAnCisgICAgICAgICAgICAgICAnYSBuZXdcbicKKyAgICAgICAgICAgICAgICcgIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgJworICAgICAgICAgICAgICAgJ2NhbGxlZCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlICcKKyAgICAgICAgICAgICAgICdzZXF1ZW5jZSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIChzdWNoIGFzIGEgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhICcKKyAgICAgICAgICAgICAgICdzZXF1ZW5jZSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAgICcgIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgIiAgc2VxdWVuY2UncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byAiCisgICAgICAgICAgICAgICAnaW50ZWdlcnMuIElmXG4nCisgICAgICAgICAgICAgICAiICBlaXRoZXIgYm91bmQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZSdzIGxlbmd0aCBpcyBhZGRlZCAiCisgICAgICAgICAgICAgICAndG8gaXQuICBUaGVcbicKKyAgICAgICAgICAgICAgICcgIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICJzZXF1ZW5jZSdzXG4iCisgICAgICAgICAgICAgICAnICBsZW5ndGgsIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgJworICAgICAgICAgICAgICAgJ3RvIHJlcGxhY2VcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgJworICAgICAgICAgICAgICAgJ2xlbmd0aCBvZlxuJworICAgICAgICAgICAgICAgJyAgdGhlIHNsaWNlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbGVuZ3RoIG9mIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2UsXG4nCisgICAgICAgICAgICAgICAnICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlICcKKyAgICAgICAgICAgICAgICd0YXJnZXRcbicKKyAgICAgICAgICAgICAgICcgIHNlcXVlbmNlIGFsbG93cyBpdC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlXG4nCisgICAgICAgICAgICAgICAnc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGFuZFxuJworICAgICAgICAgICAgICAgJ2ludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCAnCisgICAgICAgICAgICAgICAnY2F1c2luZ1xuJworICAgICAgICAgICAgICAgJ2xlc3MgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHMgJworICAgICAgICAgICAgICAgJ2JldHdlZW5cbicKKyAgICAgICAgICAgICAgICd0aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlICcKKyAgICAgICAgICAgICAgICInc2ltdWx0YW5lbm91cycgKGZvclxuIgorICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgJworICAgICAgICAgICAgICAgJyp3aXRoaW4qIHRoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAiKnRhcmdldCIgZmVhdHVyZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCwgb2YgYVxuJworICAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAnCisgICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICAnICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8ICcKKyAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgICciLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSAnCisgICAgICAgICAgICAgICAnbGFzdCB0aHJlZVxuJworICAgICAgICAgICAgICAgJ3N5bWJvbHMuKVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlICcKKyAgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgICdsaXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAgJ29uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAgICd0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgJworICAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAgJyJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgJworICAgICAgICAgICAgICAgJ2VmZmVjdC4gSW4gdGhlXG4nCisgICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgICdwb3NzaWJsZSxcbicKKyAgICAgICAgICAgICAgICd0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAgJ2NyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlICcKKyAgICAgICAgICAgICAgICdvbGQgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdVbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgJworICAgICAgICAgICAgICAgJ3RoZSBsZWZ0LVxuJworICAgICAgICAgICAgICAgJ2hhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgJworICAgICAgICAgICAgICAgJ2V4YW1wbGUsICJhW2ldXG4nCisgICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAnCisgICAgICAgICAgICAgICAnImFbaV0iLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1dpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhXG4nCisgICAgICAgICAgICAgICAnc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAgJ1NpbWlsYXJseSxcbicKKyAgICAgICAgICAgICAgICd3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSAnCisgICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICAnb3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAndGhlIG5vcm1hbFxuJworICAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCAnCisgICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICAnYXNzaWdubWVudHMuXG4nLAorICdhdG9tLWlkZW50aWZpZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChOYW1lcylcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgJworICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiAqTmFtaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGJpbmRpbmcqIGZvciBkb2N1bWVudGF0aW9uIG9mIG5hbWluZyBhbmQgYmluZGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdXaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0b20geWllbGRzXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdyYWlzZXMgYSAiTmFtZUVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ3RleHR1YWxseSBvY2N1cnMgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdhIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBlbmQgaW4gdHdvIG9yIG1vcmUgdW5kZXJzY29yZXMsIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdjb25zaWRlcmVkIGEgKnByaXZhdGVcbicKKyAgICAgICAgICAgICAgICAgICAgICduYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnYSBsb25nZXIgZm9ybVxuJworICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBuYW1lLCB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgcmVtb3ZlZCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAgICAnc2luZ2xlIHVuZGVyc2NvcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfX3NwYW0iXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCAnCisgICAgICAgICAgICAgICAgICAgICAndG8gIl9IYW1fX3NwYW0iLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdHJhbnNmb3JtYXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5bnRhY3RpY2FsICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IGluIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZSB0cmFuc2Zvcm1lZCBuYW1lIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdleHRyZW1lbHkgbG9uZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyhsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3RydW5jYXRpb24gbWF5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaGFwcGVuLiBJZiB0aGUgY2xhc3MgbmFtZSBjb25zaXN0cyBvbmx5IG9mICcKKyAgICAgICAgICAgICAgICAgICAgICd1bmRlcnNjb3Jlcywgbm9cbicKKyAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKKyAnYXRvbS1saXRlcmFscyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdMaXRlcmFsc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICdsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBsaXRlcmFsIDo6PSBzdHJpbmdsaXRlcmFsIHwgYnl0ZXNsaXRlcmFsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXZhbHVhdGlvbiBvZiBhIGxpdGVyYWwgeWllbGRzIGFuIG9iamVjdCBvZiB0aGUgZ2l2ZW4gJworICAgICAgICAgICAgICAgICAgJ3R5cGUgKHN0cmluZyxcbicKKyAgICAgICAgICAgICAgICAgICdieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGdpdmVuXG4nCisgICAgICAgICAgICAgICAgICAndmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiAnCisgICAgICAgICAgICAgICAgICAnZmxvYXRpbmcgcG9pbnRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW1hZ2luYXJ5IChjb21wbGV4KSBsaXRlcmFscy4gIFNlZSBzZWN0aW9uICpMaXRlcmFscyogJworICAgICAgICAgICAgICAgICAgJ2ZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FsbCBsaXRlcmFscyBjb3JyZXNwb25kIHRvIGltbXV0YWJsZSBkYXRhIHR5cGVzLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ2hlbmNlIHRoZVxuJworICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgIgorICAgICAgICAgICAgICAgICAgJ011bHRpcGxlXG4nCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAgJ29jY3VycmVuY2UgaW4gdGhlIHByb2dyYW0gdGV4dCBvciBhIGRpZmZlcmVudCBvY2N1cnJlbmNlKSAnCisgICAgICAgICAgICAgICAgICAnbWF5IG9idGFpblxuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWUuXG4nLAorICdhdHRyaWJ1dGUtYWNjZXNzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiAieC5uYW1lIikgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm9yIGlzIGl0IGZvdW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgICAnb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm9ybWFsIG1lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnRlbnRpb25hbCBhc3ltbWV0cnlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaXMgZG9uZSBib3RoIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gICcKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgYXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2wgYnkgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSAoYnV0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbGx5IGdldCB0b3RhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiAnCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciAnCisgICAgICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgJworICAgICAgICAgICAgICAgICAgICAgJ2luZmluaXRlIHJlY3Vyc2lvbiBpblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYmFzZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzICcKKyAgICAgICAgICAgICAgICAgICAgICdpdCBuZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiAnCisgICAgICAgICAgICAgICAgICAgICAnbG9va2luZyB1cCBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgJworICAgICAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgICAgICdsb29rdXAqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICAnCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAndmFsdWUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgICAgICcqdmFsdWUqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZSwgZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0ZWFkIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgJworICAgICAgICAgICAgICAgICAgICAgJyJkZWwgb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgJworICAgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIG11c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2EgbGlzdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgJworICAgICAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcqb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgIm93bmVyJ3MgY2xhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRzKS4gIEluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3MnICIKKyAgICAgICAgICAgICAgICAgICAgICciX19kaWN0X18iLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICAgICcoY2xhc3MgYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsICcKKyAgICAgICAgICAgICAgICAgICAgICdvciAiTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIG1ldGhvZCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG93bmVyIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICciaW5zcGVjdCIgbW9kdWxlIGFzXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAgICAgJyhzZXR0aW5nIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICdkeW5hbWljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdnaXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAndW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICciYmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRkZW4gYnkgbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgYW4gb2JqZWN0LCBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2lzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgJworICAgICAgICAgICAgICAgICAgICAgJ3NldCwgb3IgZGVsZXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciAiCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UsICJhLngiIGhhcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnbG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuJworICAgICAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdvbmUgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0IGJlaGF2aW9yIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgJworICAgICAgICAgICAgICAgICAgICAgJ29jY3VycyBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgICAgICd3ZXJlIGRlZmluZWQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSAnCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZywgImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyICcKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIGRpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsICcKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGNhbGw6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fc2V0X18oKSIgYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYm90aFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCAiX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgY2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICdhIHByb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdmZXcgaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnd2hlbiBjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIG9mIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB0byBob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXyogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZXZlbnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZWFjaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSAqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCAnCisgICAgICAgICAgICAgICAgICAgICAnc28gYSAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzICcKKyAgICAgICAgICAgICAgICAgICAgICd0byBpdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGUgbmFtZS4gIEFzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQgdmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7ICcKKyAgICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UsIHRoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkICcKKyAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGEgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGJhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gICcKKyAgICAgICAgICAgICAgICAgICAgICdJbiB0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyAnCisgICAgICAgICAgICAgICAgICAgICAnZGVyaXZlZCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVzIiBhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyAnCisgICAgICAgICAgICAgICAgICAgICAnaGF2ZSB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlIHJlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJpb2QgYW5kIGEgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyB0aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QgcHJvZHVjZWQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCisgJ2F1Z2Fzc2lnbic6ICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICcgICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgJworICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgJyIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuJworICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlICcKKyAgICAgICAgICAgICAgJ2xhc3QgdGhyZWVcbicKKyAgICAgICAgICAgICAgJ3N5bWJvbHMuKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICdsaXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdvbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgICd0YXJnZXQuXG4nCisgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgJworICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICcieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsICcKKyAgICAgICAgICAgICAgJ2VmZmVjdC4gSW4gdGhlXG4nCisgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAncG9zc2libGUsXG4nCisgICAgICAgICAgICAgICd0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICdjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSAnCisgICAgICAgICAgICAgICdvbGQgb2JqZWN0XG4nCisgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdVbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgJ2xlZnQtXG4nCisgICAgICAgICAgICAgICdoYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yICcKKyAgICAgICAgICAgICAgJ2V4YW1wbGUsICJhW2ldXG4nCisgICAgICAgICAgICAgICcrPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgJworICAgICAgICAgICAgICAncGVyZm9ybXNcbicKKyAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAnCisgICAgICAgICAgICAgICciYVtpXSIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1dpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSAnCisgICAgICAgICAgICAgICd0YXJnZXRzIGluIGFcbicKKyAgICAgICAgICAgICAgJ3NpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiAnCisgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICd3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSAnCisgICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAndGhlIG5vcm1hbFxuJworICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCAnCisgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgJworICAgICAgICAgICAgICAnYXNzaWdubWVudHMuXG4nLAorICdiaW5hcnknOiAnXG4nCisgICAgICAgICAgICdCaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxuJworICAgICAgICAgICAnbGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvICcKKyAgICAgICAgICAgJ2NlcnRhaW4gbm9uLVxuJworICAgICAgICAgICAnbnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSAnCisgICAgICAgICAgICd0d29cbicKKyAgICAgICAgICAgJ2xldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbicKKyAgICAgICAgICAgJ29wZXJhdG9yczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiQCIgbV9leHByIHxcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgbV9leHByICIvLyIgdV9leHByfCBtX2V4cHIgIi8iIHVfZXhwciB8XG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgIG1fZXhwciAiJSIgdV9leHByXG4nCisgICAgICAgICAgICcgICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIqIiAobXVsdGlwbGljYXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcHJvZHVjdCBvZiBpdHMgJworICAgICAgICAgICAnYXJndW1lbnRzLlxuJworICAgICAgICAgICAnVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudCBtdXN0ICcKKyAgICAgICAgICAgJ2JlIGFuXG4nCisgICAgICAgICAgICdpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyIGNhc2UsICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCAnCisgICAgICAgICAgICd0b2dldGhlci5cbicKKyAgICAgICAgICAgJ0luIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGEgJworICAgICAgICAgICAnbmVnYXRpdmVcbicKKyAgICAgICAgICAgJ3JlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJAIiAoYXQpIG9wZXJhdG9yIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIG1hdHJpeFxuJworICAgICAgICAgICAnbXVsdGlwbGljYXRpb24uICBObyBidWlsdGluIFB5dGhvbiB0eXBlcyBpbXBsZW1lbnQgdGhpcyAnCisgICAgICAgICAgICdvcGVyYXRvci5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIi8iIChkaXZpc2lvbikgYW5kICIvLyIgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdxdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG4nCisgICAgICAgICAgICdjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gRGl2aXNpb24gb2YgaW50ZWdlcnMgeWllbGRzIGEgZmxvYXQsICcKKyAgICAgICAgICAgJ3doaWxlXG4nCisgICAgICAgICAgICdmbG9vciBkaXZpc2lvbiBvZiBpbnRlZ2VycyByZXN1bHRzIGluIGFuIGludGVnZXI7IHRoZSByZXN1bHQgaXMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAib2YgbWF0aGVtYXRpY2FsIGRpdmlzaW9uIHdpdGggdGhlICdmbG9vcicgZnVuY3Rpb24gYXBwbGllZCB0byAiCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3Jlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiICcKKyAgICAgICAgICAgJ2V4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAndGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICdjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4nCisgICAgICAgICAgICciWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nICcKKyAgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgICdudW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgJworICAgICAgICAgICAnIjQqMC43ICtcbicKKyAgICAgICAgICAgJzAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSAnCisgICAgICAgICAgICdzYW1lIHNpZ25cbicKKyAgICAgICAgICAgJ2FzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAncmVzdWx0IGlzXG4nCisgICAgICAgICAgICdzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCAnCisgICAgICAgICAgICdbMV0uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSAnCisgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgJ2lkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gJworICAgICAgICAgICAnYXJlIGFsc29cbicKKyAgICAgICAgICAgJ2Nvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpICcKKyAgICAgICAgICAgJz09XG4nCisgICAgICAgICAgICcoeC8veSwgeCV5KSIuIFsyXS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgJworICAgICAgICAgICAnIiUiXG4nCisgICAgICAgICAgICdvcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSAnCisgICAgICAgICAgICdvbGQtc3R5bGVcbicKKyAgICAgICAgICAgJ3N0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCAnCisgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgJ3N0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuJworICAgICAgICAgICAnc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICcKKyAgICAgICAgICAgJyJkaXZtb2QoKSJcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCAnCisgICAgICAgICAgICd0byBhXG4nCisgICAgICAgICAgICdmbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgJworICAgICAgICAgICAnYXBwcm9wcmlhdGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mICcKKyAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICd0eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uICcKKyAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgJ2FuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG4nCisgICAgICAgICAgICdjb25jYXRlbmF0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdiaXR3aXNlJzogJ1xuJworICAgICAgICAgICAgJ0JpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSAnCisgICAgICAgICAgICAnbGV2ZWw6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuJworICAgICAgICAgICAgJyAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuJworICAgICAgICAgICAgJyAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoICcKKyAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAnYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuJworICAgICAgICAgICAgJ2FyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgJworICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICd3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKKyAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgInBzZXVkby1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdib2R5LiBUaGV5IGRpZmZlclxuJworICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndCBjb250YWluIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRvIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBieSB0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdpbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICciY29kZSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdBIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgJworICAgICAgICAgICAgICAgICAgICAgICAncGFzc2luZyBpdCAoaW5zdGVhZCBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uLlxuJywKKyAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIEVsbGlwc2lzIE9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICcqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICciRWxsaXBzaXMiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoRWxsaXBzaXMpKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y2VzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnIkVsbGlwc2lzIiBzaW5nbGV0b24uXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0l0IGlzIHdyaXR0ZW4gYXMgIkVsbGlwc2lzIiBvciAiLi4uIi5cbicsCisgJ2JsdGluLW51bGwtb2JqZWN0JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICdUaGUgTnVsbCBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb24ndCAiCisgICAgICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICAndmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lIG51bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAnCisgICAgICAgICAgICAgICAgICAgICAgJyJ0eXBlKE5vbmUpKCkiIHByb2R1Y2VzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICdzYW1lIHNpbmdsZXRvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ0l0IGlzIHdyaXR0ZW4gYXMgIk5vbmUiLlxuJywKKyAnYmx0aW4tdHlwZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZSBvYmplY3RzIHJlcHJlc2VudCB0aGUgdmFyaW91cyBvYmplY3QgdHlwZXMuICBBbiAnCisgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QncyB0eXBlIGlzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdhcmUgbm8gc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzIG5hbWVzIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgICAnYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKKyAnYm9vbGVhbnMnOiAnXG4nCisgICAgICAgICAgICAgJ0Jvb2xlYW4gb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuJworICAgICAgICAgICAgICcgICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuJworICAgICAgICAgICAgICcgICBub3RfdGVzdCA6Oj0gY29tcGFyaXNvbiB8ICJub3QiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gJworICAgICAgICAgICAgICdleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAndXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAnaW50ZXJwcmV0ZWRcbicKKyAgICAgICAgICAgICAnYXMgZmFsc2U6ICJGYWxzZSIsICJOb25lIiwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgJworICAgICAgICAgICAgICciRmFsc2UiXG4nCisgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ3Jlc3VsdGluZyB2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCAnCisgICAgICAgICAgICAgJ2l0cyB2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nICcKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAncmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcoTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICdhcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyJzIG9yIFwnZm9vXCciIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgIm5vdCIgaGFzIHRvICcKKyAgICAgICAgICAgICAnY3JlYXRlIGFcbicKKyAgICAgICAgICAgICAnbmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAnb2YgaXRzXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciAnCisgICAgICAgICAgICAgJ3RoYW4gIlwnXCciLilcbicsCisgJ2JyZWFrJzogJ1xuJworICAgICAgICAgICdUaGUgImJyZWFrIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBicmVha19zdG10IDo6PSAiYnJlYWsiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICciYnJlYWsiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgJworICAgICAgICAgICcid2hpbGUiXG4nCisgICAgICAgICAgJ2xvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gJworICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWwgJworICAgICAgICAgICciZWxzZSJcbicKKyAgICAgICAgICAnY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhICJmb3IiIGxvb3AgaXMgdGVybWluYXRlZCBieSAiYnJlYWsiLCB0aGUgbG9vcCBjb250cm9sICcKKyAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgJ2tlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2xvb3AuXG4nLAorICdjYWxsYWJsZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgJworICAgICAgICAgICAgICAgICAgICdpZiB0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAorICdjYWxscyc6ICdcbicKKyAgICAgICAgICAnQ2FsbHNcbicKKyAgICAgICAgICAnKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgJworICAgICAgICAgICdwb3NzaWJseVxuJworICAgICAgICAgICdlbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCAnCisgICAgICAgICAgJ2NvbXByZWhlbnNpb25dICIpIlxuJworICAgICAgICAgICcgICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiAnCisgICAgICAgICAgJ2tleXdvcmRfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIgJworICAgICAgICAgICdrZXl3b3JkX2FyZ3VtZW50c11cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiAnCisgICAgICAgICAgJ2V4cHJlc3Npb25dXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gJworICAgICAgICAgICdbIiwiICIqKiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCAiKioiIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAnICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbicKKyAgICAgICAgICAnICAga2V5d29yZF9hcmd1bWVudHMgICAgOjo9IGtleXdvcmRfaXRlbSAoIiwiIGtleXdvcmRfaXRlbSkqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbiBvcHRpb25hbCB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbicKKyAgICAgICAgICAnZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICdvYmplY3RzLCBtZXRob2RzIG9mIGNsYXNzIGluc3RhbmNlcywgYW5kIGFsbCBvYmplY3RzIGhhdmluZyBhXG4nCisgICAgICAgICAgJyJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAnZXZhbHVhdGVkIGJlZm9yZSB0aGUgY2FsbCBpcyBhdHRlbXB0ZWQuICBQbGVhc2UgcmVmZXIgdG8gc2VjdGlvblxuJworICAgICAgICAgICcqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiAnCisgICAgICAgICAgJ2xpc3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xuJworICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgJworICAgICAgICAgICdzbG90cyBpc1xuJworICAgICAgICAgICdjcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG4nCisgICAgICAgICAgJ2FyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICdhbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ3ZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyAiTm9uZSIsIGl0IGZpbGxzIHRoZSBzbG90KS4gIFdoZW4gYWxsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAnYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgJyhEZWZhdWx0XG4nCisgICAgICAgICAgJ3ZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJ211dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICJiZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgIgorICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgJworICAgICAgICAgICdhcmUgYW55XG4nCisgICAgICAgICAgJ3VuZmlsbGVkIHNsb3RzIGZvciB3aGljaCBubyBkZWZhdWx0IHZhbHVlIGlzIHNwZWNpZmllZCwgYSAnCisgICAgICAgICAgJyJUeXBlRXJyb3IiXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkICcKKyAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAndGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuJworICAgICAgICAgICdidWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCAnCisgICAgICAgICAgJ2V2ZW5cbicKKyAgICAgICAgICAiaWYgdGhleSBhcmUgJ25hbWVkJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG4iCisgICAgICAgICAgJ3RoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlICcKKyAgICAgICAgICAnY2FzZVxuJworICAgICAgICAgICdmb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gJworICAgICAgICAgICdwYXJzZVxuJworICAgICAgICAgICd0aGVpciBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGVyZSBhcmUgbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGFuIHRoZXJlIGFyZSBmb3JtYWwgJworICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAnc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3VzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgJworICAgICAgICAgICdhcmd1bWVudHNcbicKKyAgICAgICAgICAnKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgJworICAgICAgICAgICdhcmd1bWVudHMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICduYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG4nCisgICAgICAgICAgJ2FyZ3VtZW50cyAodXNpbmcgdGhlIGtleXdvcmRzIGFzIGtleXMgYW5kIHRoZSBhcmd1bWVudCB2YWx1ZXMgYXNcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJ2V4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAnCisgICAgICAgICAgJyJleHByZXNzaW9uIlxuJworICAgICAgICAgICdtdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzIGl0ZXJhYmxlIGFyZSAnCisgICAgICAgICAgJ3RyZWF0ZWRcbicKKyAgICAgICAgICAnYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHM7IGlmIHRoZXJlIGFyZVxuJworICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCAiZXhwcmVzc2lvbiIgZXZhbHVhdGVzICcKKyAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICdzZXF1ZW5jZSAqeTEqLCAuLi4sICp5TSosIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhIGNhbGwgd2l0aCBNK05cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCAqeTEqLCAuLi4sICp5TSouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCBhbHRob3VnaCB0aGUgIipleHByZXNzaW9uIiBzeW50YXggJworICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAnYXBwZWFyICphZnRlciogc29tZSBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICpiZWZvcmUqICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnRzIChhbmQgdGhlICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50LCBpZiBhbnkgLS0gJworICAgICAgICAgICdzZWVcbicKKyAgICAgICAgICAnYmVsb3cpLiAgU286XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gZGVmIGYoYSwgYik6XG4nCisgICAgICAgICAgJyAgIC4uLiAgcHJpbnQoYSwgYilcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgID4+PiBmKGI9MSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDIgMVxuJworICAgICAgICAgICcgICA+Pj4gZihhPTEsICooMiwpKVxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuJworICAgICAgICAgICIgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICdhJ1xuIgorICAgICAgICAgICcgICA+Pj4gZigxLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgMSAyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgIipleHByZXNzaW9uIiAnCisgICAgICAgICAgJ3N5bnRheFxuJworICAgICAgICAgICd0byBiZSB1c2VkIGluIHRoZSBzYW1lIGNhbGwsIHNvIGluIHByYWN0aWNlIHRoaXMgY29uZnVzaW9uIGRvZXMgJworICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAnYXJpc2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG4nCisgICAgICAgICAgJyJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEgJworICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgJ2FwcGVhcmluZyBpbiBib3RoICJleHByZXNzaW9uIiBhbmQgYXMgYW4gZXhwbGljaXQga2V5d29yZCAnCisgICAgICAgICAgJ2FyZ3VtZW50LCBhXG4nCisgICAgICAgICAgJyJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3JtYWwgcGFyYW1ldGVycyB1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgb3IgJworICAgICAgICAgICciKippZGVudGlmaWVyIlxuJworICAgICAgICAgICdjYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICduYW1lcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCAnCisgICAgICAgICAgJ3JhaXNlcyBhblxuJworICAgICAgICAgICdleGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NhbGxhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGl0IGlzLS0tXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbicKKyAgICAgICAgICAnICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbicKKyAgICAgICAgICAnICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICpGdW5jdGlvbiBkZWZpbml0aW9ucyouICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgJworICAgICAgICAgICcicmV0dXJuIlxuJworICAgICAgICAgICcgICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuJworICAgICAgICAgICcgICBUaGUgcmVzdWx0IGlzIHVwIHRvIHRoZSBpbnRlcnByZXRlcjsgc2VlICpCdWlsdC1pbiBGdW5jdGlvbnMqICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBvYmplY3Q6XG4nCisgICAgICAgICAgJyAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJyAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6ICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGluc3RhbmNlIGJlY29tZXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBpbnN0YW5jZTpcbicKKyAgICAgICAgICAnICAgVGhlIGNsYXNzIG11c3QgZGVmaW5lIGEgIl9fY2FsbF9fKCkiIG1ldGhvZDsgdGhlIGVmZmVjdCBpcyAnCisgICAgICAgICAgJ3RoZW4gdGhlXG4nCisgICAgICAgICAgJyAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCisgJ2NsYXNzJzogJ1xuJworICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgJworICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSopOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICcKKyAgICAgICAgICAnIjoiIHN1aXRlXG4nCisgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbicKKyAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzICcKKyAgICAgICAgICAnY3JlYXRpb24qXG4nCisgICAgICAgICAgJ2ZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlICcKKyAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICdjbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuICcKKyAgICAgICAgICAnaW5oZXJpdGFuY2VcbicKKyAgICAgICAgICAnbGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuIgorICAgICAgICAgICcqTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ29yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG4nCisgICAgICAgICAgImZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzJ3Mgc3VpdGUgZmluaXNoZXMgIgorICAgICAgICAgICdleGVjdXRpb24sIGl0c1xuJworICAgICAgICAgICdleGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiAnCisgICAgICAgICAgJ1s0XSBBXG4nCisgICAgICAgICAgJ2NsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSAnCisgICAgICAgICAgJ2Jhc2VcbicKKyAgICAgICAgICAnY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2RpY3Rpb25hcnkuXG4nCisgICAgICAgICAgJ1RoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nICcKKyAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSAnCisgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyAnCisgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAnYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uICIKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzIGFuZFxuJworICAgICAgICAgICdpbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICcKKyAgICAgICAgICAnIiJzZWxmLm5hbWUiIixcbicKKyAgICAgICAgICAnYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICd3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyAnCisgICAgICAgICAgJ2RlZmF1bHRzXG4nCisgICAgICAgICAgJ2ZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICd1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJ3ZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4nCisgICAgICAgICAgJyAgQ2xhc3MgRGVjb3JhdG9yc1xuJywKKyAnY29tcGFyaXNvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdVbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3ByaW9yaXR5LFxuJworICAgICAgICAgICAgICAgICd3aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yICcKKyAgICAgICAgICAgICAgICAnYml0d2lzZVxuJworICAgICAgICAgICAgICAgICdvcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiICcKKyAgICAgICAgICAgICAgICAnaGF2ZSB0aGVcbicKKyAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4nCisgICAgICAgICAgICAgICAgJyAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbicKKyAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCAieCA8IHkgPD0geiIgJworICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzICcKKyAgICAgICAgICAgICAgICAnZXZhbHVhdGVkIG9ubHlcbicKKyAgICAgICAgICAgICAgICAnb25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggJworICAgICAgICAgICAgICAgICc8IHkiIGlzXG4nCisgICAgICAgICAgICAgICAgJ2ZvdW5kIHRvIGJlIGZhbHNlKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0Zvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgICAgJ2FuZCAqb3AxKixcbicKKyAgICAgICAgICAgICAgICAnKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiICcKKyAgICAgICAgICAgICAgICAnb3AyIGMgLi4uIHlcbicKKyAgICAgICAgICAgICAgICAnb3BOIHoiIGlzIGVxdWl2YWxlbnQgdG8gImEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiAnCisgICAgICAgICAgICAgICAgJ3oiLCBleGNlcHRcbicKKyAgICAgICAgICAgICAgICAndGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGJldHdlZW5cbicKKyAgICAgICAgICAgICAgICAnKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sICJ4IDwgeSA+IHoiIGlzIHBlcmZlY3RseSBsZWdhbCAnCisgICAgICAgICAgICAgICAgJyh0aG91Z2hcbicKKyAgICAgICAgICAgICAgICAncGVyaGFwcyBub3QgcHJldHR5KS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgJ29mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLiAnCisgICAgICAgICAgICAgICAgJ0lmIGJvdGggYXJlXG4nCisgICAgICAgICAgICAgICAgJ251bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgICAgJ3RoZSAiPT0iIGFuZFxuJworICAgICAgICAgICAgICAgICciIT0iIG9wZXJhdG9ycyAqYWx3YXlzKiBjb25zaWRlciBvYmplY3RzIG9mIGRpZmZlcmVudCB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgICAgJ3VuZXF1YWwsIHdoaWxlIHRoZSAiPCIsICI+IiwgIj49IiBhbmQgIjw9IiBvcGVyYXRvcnMgcmFpc2UgJworICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgJyJUeXBlRXJyb3IiIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRoYXQgJworICAgICAgICAgICAgICAgICdkbyBub3RcbicKKyAgICAgICAgICAgICAgICAnaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2YgdHlwZXMuICBZb3UgJworICAgICAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICAgICAnY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Ygbm9uLWJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAndHlwZXMgYnlcbicKKyAgICAgICAgICAgICAgICAnZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSAiX19ndF9fKCkiLCBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICdpbiBzZWN0aW9uXG4nCisgICAgICAgICAgICAgICAgJypCYXNpYyBjdXN0b21pemF0aW9uKi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlICcKKyAgICAgICAgICAgICAgICAndHlwZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFRoZSB2YWx1ZXMgImZsb2F0KFwnTmFOXCcpIiBhbmQgIkRlY2ltYWwoXCdOYU5cJykiIGFyZSAnCisgICAgICAgICAgICAgICAgJ3NwZWNpYWwuIFRoZXlcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgaWRlbnRpY2FsIHRvIHRoZW1zZWx2ZXMsICJ4IGlzIHgiIGJ1dCBhcmUgbm90IGVxdWFsICcKKyAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAnICB0aGVtc2VsdmVzLCAieCAhPSB4Ii4gIEFkZGl0aW9uYWxseSwgY29tcGFyaW5nIGFueSB2YWx1ZSAnCisgICAgICAgICAgICAgICAgJ3RvIGFcbicKKyAgICAgICAgICAgICAgICAnICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi4gIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgJ2JvdGggIjMgPFxuJworICAgICAgICAgICAgICAgICcgIGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbCByZXR1cm4gJworICAgICAgICAgICAgICAgICciRmFsc2UiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBCeXRlcyBvYmplY3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgJworICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgJyAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICcgIGVxdWl2YWxlbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAib3JkKCkiKSAnCisgICAgICAgICAgICAgICAgJ29mIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgIiAgY2hhcmFjdGVycy4gWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhbid0IGJlICIKKyAgICAgICAgICAgICAgICAnY29tcGFyZWQhXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICcgIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSAnCisgICAgICAgICAgICAgICAgJ2VxdWFsLCBlYWNoXG4nCisgICAgICAgICAgICAgICAgJyAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgJworICAgICAgICAgICAgICAgICdvZiB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICcgIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgJworICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICcgIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCAiWzEsMix4XSA8PSBbMSwyLHldIiAnCisgICAgICAgICAgICAgICAgJ2hhcyB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICcgIHZhbHVlIGFzICJ4IDw9IHkiLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdCAnCisgICAgICAgICAgICAgICAgJ2V4aXN0LCB0aGVcbicKKyAgICAgICAgICAgICAgICAnICBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPCAnCisgICAgICAgICAgICAgICAgJ1sxLDIsM10iKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5ICcKKyAgICAgICAgICAgICAgICAnaGF2ZSB0aGVcbicKKyAgICAgICAgICAgICAgICAnICBzYW1lICIoa2V5LCB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAiKFwnPFwnLCAnCisgICAgICAgICAgICAgICAgIic8PScsICc+PScsXG4iCisgICAgICAgICAgICAgICAgJyAgXCc+XCcpIiByYWlzZSAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiAnCisgICAgICAgICAgICAgICAgJ3N1YnNldCBhbmRcbicKKyAgICAgICAgICAgICAgICAnICBzdXBlcnNldCB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsICcKKyAgICAgICAgICAgICAgICAnb3JkZXJpbmdzICh0aGVcbicKKyAgICAgICAgICAgICAgICAnICB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzICcKKyAgICAgICAgICAgICAgICAnb2Ygb25lXG4nCisgICAgICAgICAgICAgICAgJyAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgJworICAgICAgICAgICAgICAgICdzZXRzIGFyZSBub3RcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgJworICAgICAgICAgICAgICAgICdvcmRlcmluZy5cbicKKyAgICAgICAgICAgICAgICAnICBGb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSAnCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZFxuJworICAgICAgICAgICAgICAgICcgIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsICcKKyAgICAgICAgICAgICAgICAndW5sZXNzIHRoZXlcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWRcbicKKyAgICAgICAgICAgICAgICAnICBzbWFsbGVyIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgJworICAgICAgICAgICAgICAgICdidXRcbicKKyAgICAgICAgICAgICAgICAnICBjb25zaXN0ZW50bHkgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIGRpZmZlcmluZyB0eXBlcyBkZXBlbmRzIG9uIHdoZXRoZXIgJworICAgICAgICAgICAgICAgICdlaXRoZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAndGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICAnCisgICAgICAgICAgICAgICAgJ01vc3QgbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICd0eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlci4gIFdoZW4gY3Jvc3MtdHlwZSAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaXNcbicKKyAgICAgICAgICAgICAgICAnbm90IHN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgJworICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gJworICAgICAgICAgICAgICAgICdzIlxuJworICAgICAgICAgICAgICAgICdldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2UgJworICAgICAgICAgICAgICAgICdvdGhlcndpc2UuICAieFxuJworICAgICAgICAgICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAgICAnYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggJworICAgICAgICAgICAgICAgICciaW4iIHRlc3RzXG4nCisgICAgICAgICAgICAgICAgJ3doZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzICcKKyAgICAgICAgICAgICAgICAnc3VjaCBhc1xuJworICAgICAgICAgICAgICAgICdsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlICcKKyAgICAgICAgICAgICAgICAnZm9yIGUgaW5cbicKKyAgICAgICAgICAgICAgICAneSkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCAnCisgICAgICAgICAgICAgICAgJ29ubHkgaWYgKngqIGlzXG4nCisgICAgICAgICAgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9ICcKKyAgICAgICAgICAgICAgICAnLTEiLiAgRW1wdHlcbicKKyAgICAgICAgICAgICAgICAnc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55ICcKKyAgICAgICAgICAgICAgICAnb3RoZXIgc3RyaW5nLFxuJworICAgICAgICAgICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgJworICAgICAgICAgICAgICAgICdtZXRob2QsICJ4XG4nCisgICAgICAgICAgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIGJ1dCBkb1xuJworICAgICAgICAgICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiICcKKyAgICAgICAgICAgICAgICAnd2l0aCAieCA9PSB6IlxuJworICAgICAgICAgICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhICcKKyAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSAnCisgICAgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAnbG93ZXJcbicKKyAgICAgICAgICAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmICcKKyAgICAgICAgICAgICAgICAnYW55IG90aGVyXG4nCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24pLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlICcKKyAgICAgICAgICAgICAgICAndmFsdWUgb2ZcbicKKyAgICAgICAgICAgICAgICAnImluIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAnCisgICAgICAgICAgICAgICAgJyJ4IGlzIHkiIGlzXG4nCisgICAgICAgICAgICAgICAgJ3RydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gICJ4IGlzICcKKyAgICAgICAgICAgICAgICAnbm90IHkiXG4nCisgICAgICAgICAgICAgICAgJ3lpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAorICdjb21wb3VuZCc6ICdcbicKKyAgICAgICAgICAgICAnQ29tcG91bmQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSAnCisgICAgICAgICAgICAgJ2FmZmVjdFxuJworICAgICAgICAgICAgICdvciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lICcKKyAgICAgICAgICAgICAnd2F5LiAgSW5cbicKKyAgICAgICAgICAgICAnZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICdpbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiAnCisgICAgICAgICAgICAgJ29uZSBsaW5lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsICcKKyAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICdmbG93IGNvbnN0cnVjdHMuICAidHJ5IiBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciAnCisgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAnY29kZSBmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzLCB3aGlsZSB0aGUgIndpdGgiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ2FsbG93cyB0aGVcbicKKyAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSAnCisgICAgICAgICAgICAgJ2Jsb2NrIG9mXG4nCisgICAgICAgICAgICAgJ2NvZGUuICBGdW5jdGlvbiBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgYXJlIGFsc28gc3ludGFjdGljYWxseSAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJBIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSAnY2xhdXNlcy4nICBBICIKKyAgICAgICAgICAgICAnY2xhdXNlXG4nCisgICAgICAgICAgICAgImNvbnNpc3RzIG9mIGEgaGVhZGVyIGFuZCBhICdzdWl0ZS4nICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxuIgorICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGNvbXBvdW5kIHN0YXRlbWVudCBhcmUgYWxsIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uICcKKyAgICAgICAgICAgICAnbGV2ZWwuXG4nCisgICAgICAgICAgICAgJ0VhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgJworICAgICAgICAgICAgICdhbmQgZW5kc1xuJworICAgICAgICAgICAgICd3aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5ICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICdjbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlICcKKyAgICAgICAgICAgICAiaGVhZGVyJ3NcbiIKKyAgICAgICAgICAgICAnY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uICcKKyAgICAgICAgICAgICAnc3Vic2VxdWVudFxuJworICAgICAgICAgICAgICdsaW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkICcKKyAgICAgICAgICAgICAnY29tcG91bmRcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCAnCisgICAgICAgICAgICAgIndvdWxkbid0IGJlXG4iCisgICAgICAgICAgICAgJ2NsZWFyIHRvIHdoaWNoICJpZiIgY2xhdXNlIGEgZm9sbG93aW5nICJlbHNlIiBjbGF1c2Ugd291bGQgJworICAgICAgICAgICAgICdiZWxvbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgJworICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAnInByaW50KCkiIGNhbGxzIGFyZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU3VtbWFyaXppbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY193aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX2Z1bmNkZWZcbicKKyAgICAgICAgICAgICAnICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudCsgREVERU5UXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuJworICAgICAgICAgICAgICcgICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSAiTkVXTElORSIgcG9zc2libHkgJworICAgICAgICAgICAgICdmb2xsb3dlZCBieSBhXG4nCisgICAgICAgICAgICAgJyJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzICcKKyAgICAgICAgICAgICAnYmVnaW5cbicKKyAgICAgICAgICAgICAnd2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlICcKKyAgICAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAgICAnYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nICJlbHNlIlwnIHByb2JsZW0gaXMgc29sdmVkIGluICcKKyAgICAgICAgICAgICAnUHl0aG9uIGJ5XG4nCisgICAgICAgICAgICAgJ3JlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgJworICAgICAgICAgICAgICdwbGFjZXNcbicKKyAgICAgICAgICAgICAnZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgb25lXG4nCisgICAgICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gJworICAgICAgICAgICAgICdvcGVyYXRpb25zKlxuJworICAgICAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyAnCisgICAgICAgICAgICAgJ2FzIGFuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVzIHRoZVxuJworICAgICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgJworICAgICAgICAgICAgICdmaXJzdCB0aW1lXG4nCisgICAgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgICAgICAnZ29lcyBiYWNrXG4nCisgICAgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgJworICAgICAgICAgICAgICdzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gJworICAgICAgICAgICAgICdpdGVyYWJsZVxuJworICAgICAgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggJworICAgICAgICAgICAgICdpdGVtXG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yLiAgRWFjaFxuJworICAgICAgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAnc3VpdGUgaXNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSAnCisgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgJ3NlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiksXG4nCisgICAgICAgICAgICAgJ3RoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCAnCisgICAgICAgICAgICAgJ3RoZSBsb29wXG4nCisgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgICAgICAnd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vICcKKyAgICAgICAgICAgICAnbmV4dFxuJworICAgICAgICAgICAgICdpdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlICcKKyAgICAgICAgICAgICAndGFyZ2V0IGxpc3QuXG4nCisgICAgICAgICAgICAgJ1RoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAnaW5jbHVkaW5nXG4nCisgICAgICAgICAgICAgJ3Rob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvciBpIGluIHJhbmdlKDEwKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgJyAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoICcKKyAgICAgICAgICAgICAndGhlIG5leHRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgJworICAgICAgICAgICAgICdmaW5pc2hlZCxcbicKKyAgICAgICAgICAgICAnYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgJworICAgICAgICAgICAgICd0byBhdFxuJworICAgICAgICAgICAgICdhbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiICcKKyAgICAgICAgICAgICAncmV0dXJucyBhblxuJworICAgICAgICAgICAgICdpdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgJworICAgICAgICAgICAgICdQYXNjYWxcJ3MgImZvciBpXG4nCisgICAgICAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsICcKKyAgICAgICAgICAgICAnMl0iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCAnCisgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuICcKKyAgICAgICAgICAgICAnbGlzdHMpLiAgQW5cbicKKyAgICAgICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgJworICAgICAgICAgICAgICduZXh0LFxuJworICAgICAgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzICcKKyAgICAgICAgICAgICAnY291bnRlciBoYXNcbicKKyAgICAgICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICAnCisgICAgICAgICAgICAgJ1RoaXMgbWVhbnNcbicKKyAgICAgICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtICcKKyAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlICcKKyAgICAgICAgICAgICAnaW5kZXggb2ZcbicKKyAgICAgICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2l0ZW0sIHRoZVxuJworICAgICAgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yICcKKyAgICAgICAgICAgICAnY2xlYW51cCBjb2RlXG4nCisgICAgICAgICAgICAgJ2ZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAgICAgICcgICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuICcKKyAgICAgICAgICAgICAnV2hlbiBub1xuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhICcKKyAgICAgICAgICAgICAnc2VhcmNoIGZvciBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgICAgICAnaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAgICAgICdleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgJ2NvbXBhdGlibGVcbicKKyAgICAgICAgICAgICAnd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSAnCisgICAgICAgICAgICAgJ2ludm9jYXRpb24gc3RhY2suXG4nCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgJworICAgICAgICAgICAgICdjYW5jZWxlZCBhbmRcbicKKyAgICAgICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSAnCisgICAgICAgICAgICAgJ2FuZCBvblxuJworICAgICAgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG9cbicKKyAgICAgICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZSwgaWZcbicKKyAgICAgICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgIgorICAgICAgICAgICAgICdleGNlcHRcbicKKyAgICAgICAgICAgICAnY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzICcKKyAgICAgICAgICAgICAnYmxvY2sgaXNcbicKKyAgICAgICAgICAgICAncmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbixcbicKKyAgICAgICAgICAgICAnYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciAnCisgICAgICAgICAgICAgJ2hhbmRsZXIsIHRoZVxuJworICAgICAgICAgICAgICdvdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyAnCisgICAgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICAgICAgJyAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3dhcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIGZvb1xuJworICAgICAgICAgICAgICcgICAgICAgZmluYWxseTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBkZWwgTlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSAnCisgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgJ2FibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSAnCisgICAgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAgICAnYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgJworICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAnY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lICcKKyAgICAgICAgICAgICAnYWxpdmVcbicKKyAgICAgICAgICAgICAndW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgIgorICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkICcKKyAgICAgICAgICAgICAndmlhXG4nCisgICAgICAgICAgICAgJyJzeXMuZXhjX2luZm8oKSIuICJzeXMuZXhjX2luZm8oKSIgcmV0dXJucyBhIDMtdHVwbGUgJworICAgICAgICAgICAgICdjb25zaXN0aW5nIG9mIHRoZVxuJworICAgICAgICAgICAgICdleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAnCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50ICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuICcKKyAgICAgICAgICAgICAncmV0dXJuaW5nXG4nCisgICAgICAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCAnCisgICAgICAgICAgICAgJ2Zsb3dzIG9mZlxuJworICAgICAgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgJworICAgICAgICAgICAgICdjbGF1c2UgYXJlXG4nCisgICAgICAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgJworICAgICAgICAgICAgICdUaGUgInRyeSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgJworICAgICAgICAgICAgICdjbGF1c2VzLiAgSWYgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuICBJZlxuJworICAgICAgICAgICAgICd0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgJworICAgICAgICAgICAgICdzYXZlZFxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICdpcyBkaXNjYXJkZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIDEvMFxuJworICAgICAgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAnICAgPj4+IGYoKVxuJworICAgICAgICAgICAgICcgICA0MlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtICcKKyAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICcidHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiAnCisgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICdhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyAnCisgICAgICAgICAgICAgJ2lsbGVnYWwgaW5cbicKKyAgICAgICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgJworICAgICAgICAgICAgICdmdXR1cmUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgJworICAgICAgICAgICAgICcicmV0dXJuIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgJworICAgICAgICAgICAgICdleGVjdXRlcywgYVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCAnCisgICAgICAgICAgICAgJ2Fsd2F5cyBiZSB0aGVcbicKKyAgICAgICAgICAgICAnbGFzdCBvbmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICd0cnknXG4iCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdmaW5hbGx5J1xuIgorICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAnICAgPj4+IGZvbygpXG4nCisgICAgICAgICAgICAgIiAgICdmaW5hbGx5J1xuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgICAgJypFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJ2dlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudCouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgJworICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggJworICAgICAgICAgICAgICdTdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gJworICAgICAgICAgICAgICcidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICcKKyAgICAgICAgICAgICAnIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyICcKKyAgICAgICAgICAgICAndXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgJworICAgICAgICAgICAgICdyZXR1cm5cbicKKyAgICAgICAgICAgICAnICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAnCisgICAgICAgICAgICAgJyJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsICcKKyAgICAgICAgICAgICAnYWx3YXlzIGJlXG4nCisgICAgICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciAnCisgICAgICAgICAgICAgJ29jY3VycmluZ1xuJworICAgICAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc1LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuICcKKyAgICAgICAgICAgICAnT3RoZXJ3aXNlLCB0aHJlZVxuJworICAgICAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuICcKKyAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAnICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICdyZXJhaXNlZC5cbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICcKKyAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gJworICAgICAgICAgICAgICdleGNlcHRpb24sIHRoZVxuJworICAgICAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgJworICAgICAgICAgICAgICd0YWtlbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1dpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzICcKKyAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAnbXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhOlxuJworICAgICAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ1B5dGhvbiAid2l0aCJcbicKKyAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAnCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0ICcKKyAgICAgICAgICAgICAnWyIsIl1dICIpIl0gTkVXTElORVxuJworICAgICAgICAgICAgICcgICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgIioqIiBwYXJhbWV0ZXJdXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgJworICAgICAgICAgICAgICdleGVjdXRpb24gYmluZHNcbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gICcKKyAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICdmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsICcKKyAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgJworICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyAnCisgICAgICAgICAgICAgJ3RoaXMgZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgJworICAgICAgICAgICAgICcqZGVjb3JhdG9yKlxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICdkZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJ3Jlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBuYW1lXG4nCisgICAgICAgICAgICAgJ2luc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlICcKKyAgICAgICAgICAgICAnYXBwbGllZCBpblxuJworICAgICAgICAgICAgICduZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuJworICAgICAgICAgICAgICcqZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAndmFsdWVzLiJcbicKKyAgICAgICAgICAgICAnRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJyphcmd1bWVudCogbWF5XG4nCisgICAgICAgICAgICAgImJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlcidzIGRlZmF1bHQgIgorICAgICAgICAgICAgICd2YWx1ZSBpc1xuJworICAgICAgICAgICAgICdzdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgJworICAgICAgICAgICAgICctLS0gdGhpc1xuJworICAgICAgICAgICAgICdpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnZ3JhbW1hci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyoqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0ICcKKyAgICAgICAgICAgICAnd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpc1xuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnc2FtZSAicHJlLVxuJworICAgICAgICAgICAgICdjb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5ICcKKyAgICAgICAgICAgICAnaW1wb3J0YW50XG4nCisgICAgICAgICAgICAgJ3RvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsICcKKyAgICAgICAgICAgICAnc3VjaCBhcyBhXG4nCisgICAgICAgICAgICAgJ2xpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgJyhlLmcuIGJ5XG4nCisgICAgICAgICAgICAgJ2FwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCAnCisgICAgICAgICAgICAgJ21vZGlmaWVkLlxuJworICAgICAgICAgICAgICdUaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyAnCisgICAgICAgICAgICAgJ3RvIHVzZVxuJworICAgICAgICAgICAgICciTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5ICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuJworICAgICAgICAgICAgICcgICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHBlbmd1aW4gPSBbXVxuJworICAgICAgICAgICAgICcgICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuJworICAgICAgICAgICAgICcgICAgICAgcmV0dXJuIHBlbmd1aW5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gJworICAgICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgICAgJypDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyc1xuJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiAnCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgZnJvbVxuJworICAgICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4nCisgICAgICAgICAgICAgJyIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlICcKKyAgICAgICAgICAgICAncmVjZWl2aW5nIGFueVxuJworICAgICAgICAgICAgICdleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gICcKKyAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgJ2Zvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuJworICAgICAgICAgICAgICdkaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nICcKKyAgICAgICAgICAgICAndG8gYSBuZXdcbicKKyAgICAgICAgICAgICAnZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAna2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgJworICAgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdQYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgJworICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gJworICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSAnCisgICAgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAgICAnInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAgICAnbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gJworICAgICAgICAgICAgICdhbmQgYXJlXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgJworICAgICAgICAgICAgICdBbm5vdGF0aW9ucyBtYXlcbicKKyAgICAgICAgICAgICAnYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlICcKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUuXG4nCisgICAgICAgICAgICAgJ1RoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgJ25vdCBib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbjtcbicKKyAgICAgICAgICAgICAnYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICdhc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgJworICAgICAgICAgICAgICdpdFxuJworICAgICAgICAgICAgICdhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiCisgICAgICAgICAgICAgJyIiZGVmIiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgJworICAgICAgICAgICAgICd2YXJpYWJsZXMgdXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgJworICAgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgJworICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSopOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSAnCisgICAgICAgICAgICAgJ1tpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSAnCisgICAgICAgICAgICAgJ2luaGVyaXRhbmNlIGxpc3RcbicKKyAgICAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzICcKKyAgICAgICAgICAgICAnY3JlYXRpb24qXG4nCisgICAgICAgICAgICAgJ2ZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkICcKKyAgICAgICAgICAgICAnZXZhbHVhdGUgdG8gYVxuJworICAgICAgICAgICAgICdjbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuICcKKyAgICAgICAgICAgICAnaW5oZXJpdGFuY2VcbicKKyAgICAgICAgICAgICAnbGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyAnCisgICAgICAgICAgICAgJ2hlbmNlLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vKG9iamVjdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJUaGUgY2xhc3MncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAiCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlICcKKyAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICdvcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zICcKKyAgICAgICAgICAgICAnbW9zdGx5XG4nCisgICAgICAgICAgICAgImZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzJ3Mgc3VpdGUgZmluaXNoZXMgIgorICAgICAgICAgICAgICdleGVjdXRpb24sIGl0c1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiAnCisgICAgICAgICAgICAgJ1s0XSBBXG4nCisgICAgICAgICAgICAgJ2NsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yICcKKyAgICAgICAgICAgICAndGhlIGJhc2VcbicKKyAgICAgICAgICAgICAnY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgJ1RoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nICcKKyAgICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgJworICAgICAgICAgICAgICdzYW1lIGFzIGZvclxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCAnCisgICAgICAgICAgICAgJ2lzIHRoZW5cbicKKyAgICAgICAgICAgICAnYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyAiCisgICAgICAgICAgICAgJ2RlZmluaXRpb24gYXJlXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlICcKKyAgICAgICAgICAgICAnc2FtZSBuYW1lXG4nCisgICAgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gJworICAgICAgICAgICAgICdsZWFkIHRvXG4nCisgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAndmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqICcKKyAgICAgICAgICAgICAnLVxuJworICAgICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCAnCisgICAgICAgICAgICAgJ21hbnlcbicKKyAgICAgICAgICAgICAncG9pbnRzIChzZWUgKmNvcm91dGluZSopLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSAnCisgICAgICAgICAgICAgJyJhd2FpdCIgYW5kXG4nCisgICAgICAgICAgICAgJyJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsXG4nCisgICAgICAgICAgICAgJyJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgJworICAgICAgICAgICAgICdib2RpZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzICcKKyAgICAgICAgICAgICAnY29yb3V0aW5lXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucywgZXZlbiBpZiB0aGV5IGRvIG5vdCBjb250YWluICJhd2FpdCIgb3IgImFzeW5jIiAnCisgICAgICAgICAgICAgJ2tleXdvcmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAieWllbGQiIGV4cHJlc3Npb25zIGluICJhc3luYyAnCisgICAgICAgICAgICAgJ2RlZiJcbicKKyAgICAgICAgICAgICAnY29yb3V0aW5lcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuIGV4YW1wbGUgb2YgYSBjb3JvdXRpbmUgZnVuY3Rpb246XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyBkZWYgZnVuYyhwYXJhbTEsIHBhcmFtMik6XG4nCisgICAgICAgICAgICAgJyAgICAgICBkb19zdHVmZigpXG4nCisgICAgICAgICAgICAgJyAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gKmFzeW5jaHJvbm91cyBpdGVyYWJsZSogaXMgYWJsZSB0byBjYWxsIGFzeW5jaHJvbm91cyBjb2RlICcKKyAgICAgICAgICAgICAnaW4gaXRzXG4nCisgICAgICAgICAgICAgJyppdGVyKiBpbXBsZW1lbnRhdGlvbiwgYW5kICphc3luY2hyb25vdXMgaXRlcmF0b3IqIGNhbiBjYWxsXG4nCisgICAgICAgICAgICAgJ2FzeW5jaHJvbm91cyBjb2RlIGluIGl0cyAqbmV4dCogbWV0aG9kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudCBhbGxvd3MgY29udmVuaWVudCBpdGVyYXRpb24gb3ZlclxuJworICAgICAgICAgICAgICdhc3luY2hyb25vdXMgaXRlcmF0b3JzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb2RlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLMlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpdGVyID0gKElURVIpXG4nCisgICAgICAgICAgICAgJyAgIGl0ZXIgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYWl0ZXJfXyhpdGVyKVxuJworICAgICAgICAgICAgICcgICBydW5uaW5nID0gVHJ1ZVxuJworICAgICAgICAgICAgICcgICB3aGlsZSBydW5uaW5nOlxuJworICAgICAgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4nCisgICAgICAgICAgICAgJyAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHJ1bm5pbmcgPSBGYWxzZVxuJworICAgICAgICAgICAgICcgICAgICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0syXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbyAiX19haXRlcl9fKCkiIGFuZCAiX19hbmV4dF9fKCkiIGZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiAqYXN5bmNocm9ub3VzIGNvbnRleHQgbWFuYWdlciogaXMgYSAqY29udGV4dCBtYW5hZ2VyKiB0aGF0ICcKKyAgICAgICAgICAgICAnaXMgYWJsZVxuJworICAgICAgICAgICAgICd0byBzdXNwZW5kIGV4ZWN1dGlvbiBpbiBpdHMgKmVudGVyKiBhbmQgKmV4aXQqIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyB3aXRoIEVYUFIgYXMgVkFSOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgbWdyID0gKEVYUFIpXG4nCisgICAgICAgICAgICAgJyAgIGFleGl0ID0gdHlwZShtZ3IpLl9fYWV4aXRfX1xuJworICAgICAgICAgICAgICcgICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4nCisgICAgICAgICAgICAgJyAgIGV4YyA9IFRydWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFZBUiA9IGF3YWl0IGFlbnRlclxuJworICAgICAgICAgICAgICcgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBleGNlcHQ6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBub3QgYXdhaXQgYWV4aXQobWdyLCAqc3lzLmV4Y19pbmZvKCkpOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIHJhaXNlXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBhd2FpdCBhZXhpdChtZ3IsIE5vbmUsIE5vbmUsIE5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIHdpdGgiIHN0YXRlbWVudCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnImFzeW5jIGRlZiIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0ICcKKyAgICAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgJworICAgICAgICAgICAgICd1bmxlc3NcbicKKyAgICAgICAgICAgICAnICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlICcKKyAgICAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICAgICcgICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlICcKKyAgICAgICAgICAgICAnbG9zdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1syXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2UgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgYW4gZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSAicmV0dXJuIiwgImNvbnRpbnVlIiwgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICcgICAgImJyZWFrIiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbicKKyAgICAgICAgICAgICAiICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb24ncyAiCisgICAgICAgICAgICAgJyJfX2RvY19fIlxuJworICAgICAgICAgICAgICIgICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uJ3MgKmRvY3N0cmluZyouXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgJworICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICcgICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAiICAgIHRoZXJlZm9yZSB0aGUgY2xhc3MncyAqZG9jc3RyaW5nKi5cbiIsCisgJ2NvbnRleHQtbWFuYWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdBICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBtYW5hZ2VyXG4nCisgICAgICAgICAgICAgICAgICAgICAnaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgJworICAgICAgICAgICAgICAgICAgICAgJ21hbmFnZXJzIGFyZSBub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiAqVGhlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgJworICAgICAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VudGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuICcKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZCdzIHJldHVybiB2YWx1ZSB0byAiCisgICAgICAgICAgICAgICAgICAgICAndGhlIHRhcmdldChzKVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgJworICAgICAgICAgICAgICAgICAgICAgJ2FueS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiAnCisgICAgICAgICAgICAgICAgICAgICAnVGhlIHBhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdiZSBleGl0ZWQuIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgd2lsbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJlICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyAnCisgICAgICAgICAgICAgICAgICAgICAndG8gc3VwcHJlc3MgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksICcKKyAgICAgICAgICAgICAgICAgICAgICdpdCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgcHJvY2Vzc2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHBhc3NlZC1pblxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuXG4iCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIFB5dGhvbiAid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicsCisgJ2NvbnRpbnVlJzogJ1xuJworICAgICAgICAgICAgICdUaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICciY29udGludWUiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgJworICAgICAgICAgICAgICcid2hpbGUiXG4nCisgICAgICAgICAgICAgJ2xvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvciAnCisgICAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAgICdjbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ25lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuICJjb250aW51ZSIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgJworICAgICAgICAgICAgICdyZWFsbHlcbicKKyAgICAgICAgICAgICAnc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCisgJ2NvbnZlcnNpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdBcml0aG1ldGljIGNvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1doZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlICcKKyAgICAgICAgICAgICAgICAncGhyYXNlXG4nCisgICAgICAgICAgICAgICAgJyJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgJworICAgICAgICAgICAgICAgICd0aGlzIG1lYW5zXG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgdGhlIG9wZXJhdG9yIGltcGxlbWVudGF0aW9uIGZvciBidWlsdC1pbiB0eXBlcyB3b3JrcyAnCisgICAgICAgICAgICAgICAgJ2FzIGZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgJworICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAnICBjb21wbGV4O1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnICBvdGhlciBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIG90aGVyd2lzZSwgYm90aCBtdXN0IGJlIGludGVnZXJzIGFuZCBubyBjb252ZXJzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAnbmVjZXNzYXJ5LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnU29tZSBhZGRpdGlvbmFsIHJ1bGVzIGFwcGx5IGZvciBjZXJ0YWluIG9wZXJhdG9ycyAoZS5nLiwgYSAnCisgICAgICAgICAgICAgICAgJ3N0cmluZyBhcyBhXG4nCisgICAgICAgICAgICAgICAgImxlZnQgYXJndW1lbnQgdG8gdGhlICclJyBvcGVyYXRvcikuICBFeHRlbnNpb25zIG11c3QgZGVmaW5lICIKKyAgICAgICAgICAgICAgICAndGhlaXIgb3duXG4nCisgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAorICdjdXN0b21pemF0aW9uJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlICcKKyAgICAgICAgICAgICAgICAgICdpdCBhcyBzdWNoKVxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyAnCisgICAgICAgICAgICAgICAgICAncmVxdWVzdGVkIGFzIGl0c1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlICcKKyAgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MpLiAgVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAnKHVzdWFsbHkgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBvZiAqY2xzKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosICcKKyAgICAgICAgICAgICAgICAgICd0aGVuIHRoZSBuZXdcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgJworICAgICAgICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdjcmVhdGlvbi4gIEl0XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICdhcmUgdGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzIGhhcyBhblxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciAnCisgICAgICAgICAgICAgICAgICAnaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICAnY29uc3RydWN0aW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvICcKKyAgICAgICAgICAgICAgICAgICdjdXN0b21pc2VcbicKKyAgICAgICAgICAgICAgICAgICcgICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICciX19pbml0X18oKSI7IGRvaW5nIHNvXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gICcKKyAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGFsc29cbicKKyAgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICcKKyAgICAgICAgICAgICAgICAgICciX19kZWxfXygpIiBtZXRob2QsIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAgJyAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgJworICAgICAgICAgICAgICAgICAgJ2F0IGEgbGF0ZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZWQgdGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsICcKKyAgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICAndGhlIGZvcm1lclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZSBsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLiAgU29tZSBjb21tb25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mICcKKyAgICAgICAgICAgICAgICAgICdhbiBvYmplY3QgZnJvbVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAncGFyZW50IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnc3RhY2sgZnJhbWUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrICcKKyAgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgJworICAgICAgICAgICAgICAgICAgJ2EgcmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICAndW5oYW5kbGVkXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgJworICAgICAgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgJworICAgICAgICAgICAgICAgICAgJ1RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAgJ2JyZWFraW5nIHRoZSBjeWNsZXM7XG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgJworICAgICAgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlIHRoaXJkIGNhblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gJworICAgICAgICAgICAgICAgICAgJyJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kICcKKyAgICAgICAgICAgICAgICAgICdjbGVhbmVkIHVwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXQncyBvbiBieSAiCisgICAgICAgICAgICAgICAgICAnZGVmYXVsdCkuIFJlZmVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyB0b3BpYy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciAnCisgICAgICAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnb2NjdXIgZHVyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgJworICAgICAgICAgICAgICAgICAgJ3ByaW50ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdpbnZva2VkIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAncHJvY2VzcyBvZiBiZWluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nICcKKyAgICAgICAgICAgICAgICAgICdkb3duKS4gIEZvciB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSAnCisgICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICd2ZXJzaW9uIDEuNSxcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyAnCisgICAgICAgICAgICAgICAgICAnd2l0aCBhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ290aGVyIGdsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyAnCisgICAgICAgICAgICAgICAgICAnZXhpc3QsIHRoaXMgbWF5XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2F2YWlsYWJsZSBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXByX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgJworICAgICAgICAgICAgICAgICAgJ3RoZSAib2ZmaWNpYWwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCAnCisgICAgICAgICAgICAgICAgICAncG9zc2libGUsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCAnCisgICAgICAgICAgICAgICAgICAnYmUgdXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtXG4nCisgICAgICAgICAgICAgICAgICAnICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19yZXByX18oKSIgYnV0XG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiAnCisgICAgICAgICAgICAgICAgICAnYW4gImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICAncmVxdWlyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAnaW1wb3J0YW50IHRoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3RyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnImZvcm1hdCgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgJworICAgICAgICAgICAgICAgICAgJ3ByaW50YWJsZSBzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgJworICAgICAgICAgICAgICAgICAgJ2EgKnN0cmluZypcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAndHlwZSAib2JqZWN0IlxuJworICAgICAgICAgICAgICAgICAgJyAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRhdGlvbiBvZiBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgJworICAgICAgICAgICAgICAgICAgJ2V4dGVuc2lvbiwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgJworICAgICAgICAgICAgICAgICAgJyJmb3JtYXR0ZWQiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpcyB1cCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICdjbGFzc2VzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICcgICBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICd0eXBlcywgb3IgdXNlIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAnCisgICAgICAgICAgICAgICAgICAnIm9iamVjdCIgaXRzZWxmXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuICcKKyAgICAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAnbmFtZXMgaXMgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAgJyJ4Ll9fbGVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAnCisgICAgICAgICAgICAgICAgICAnInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgICcgICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAnCisgICAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIlxuJworICAgICAgICAgICAgICAgICAgJyAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuICcKKyAgICAgICAgICAgICAgICAgICdwYWlyIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBmb3IgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gJworICAgICAgICAgICAgICAgICAgJ3JldHVybiBhbnkgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICAnICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgJ2NvbnRleHQgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsICcKKyAgICAgICAgICAgICAgICAgICdjYWxsICJib29sKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgJworICAgICAgICAgICAgICAgICAgJ2ZhbHNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICdpbnZlcnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyAnCisgICAgICAgICAgICAgICAgICAnb3RoZXIgaW1wbGllZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvICcKKyAgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNhbGx5XG4nCisgICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3QgJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiwgc2VlXG4nCisgICAgICAgICAgICAgICAgICAnICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgICdub3RlcyBvblxuJworICAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSAnCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2RzICh0byBiZSB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ2J1dCB0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSAnCisgICAgICAgICAgICAgICAgICAiZWFjaCBvdGhlcidzXG4iCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCAnCisgICAgICAgICAgICAgICAgICAib3RoZXIncyByZWZsZWN0aW9uLFxuIgorICAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gJworICAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24uIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAgIiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kJ3MgIgorICAgICAgICAgICAgICAgICAgJ3R5cGUgaXMgYVxuJworICAgICAgICAgICAgICAgICAgIiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3MgIgorICAgICAgICAgICAgICAgICAgJ3R5cGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCAnCisgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAgIiAgIGxlZnQgb3BlcmFuZCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsICIKKyAgICAgICAgICAgICAgICAgICdzdWJjbGFzc2luZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2hhc2hfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIG9uIG1lbWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgJworICAgICAgICAgICAgICAgICAgJ2FuZCAiZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICdyZXF1aXJlZCBwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICAndmFsdWU7IGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgJworICAgICAgICAgICAgICAgICAgJ29yKSB0aGUgaGFzaFxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSAnCisgICAgICAgICAgICAgICAgICAnYSBwYXJ0IGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiAnCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICcgICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgJworICAgICAgICAgICAgICAgICAgJyJQeV9zc2l6ZV90Ii4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gJworICAgICAgICAgICAgICAgICAgJzMyLWJpdFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggJworICAgICAgICAgICAgICAgICAgJ29uIGFsbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnInB5dGhvbiAtY1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCAnCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAnCisgICAgICAgICAgICAgICAgICAnKGV4Y2VwdCB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSAnCisgICAgICAgICAgICAgICAgICAnPT0gaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSIpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICAndGhlIGludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCAnCisgICAgICAgICAgICAgICAgICAnYnl0ZXMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICdhZ2FpbnN0IGEgZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgU2VlICcKKyAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgJworICAgICAgICAgICAgICAgICAgJ21hZGUgZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYnVpbHQtaW4gb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlIG9iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG4nCisgICAgICAgICAgICAgJyJwZGIiIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKlNvdXJjZSBjb2RlOioqIExpYi9wZGIucHlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgJworICAgICAgICAgICAgICdicmVha3BvaW50cyBhbmRcbicKKyAgICAgICAgICAgICAnc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayAnCisgICAgICAgICAgICAgJ2ZyYW1lcyxcbicKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2luZ1xuJworICAgICAgICAgICAgICdhbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5ICcKKyAgICAgICAgICAgICAncmVhZGluZ1xuJworICAgICAgICAgICAgICd0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiAnCisgICAgICAgICAgICAgJ2FuZCAiY21kIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gdW5kZXJcbicKKyAgICAgICAgICAgICAnY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgIiAgID4+PiBwZGIucnVuKCdteW1vZHVsZS50ZXN0KCknKVxuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDApPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAiICAgTmFtZUVycm9yOiAnc3BhbSdcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSAicmVhZGxpbmUiICcKKyAgICAgICAgICAgICAnbW9kdWxlIGlzXG4nCisgICAgICAgICAgICAgJ2F2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgJ2FuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciAnCisgICAgICAgICAgICAgJ3NjcmlwdHMuICBGb3JcbicKKyAgICAgICAgICAgICAnZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgJworICAgICAgICAgICAgICdwb3N0LW1vcnRlbVxuJworICAgICAgICAgICAgICdkZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gICcKKyAgICAgICAgICAgICAnQWZ0ZXIgcG9zdC1cbicKKyAgICAgICAgICAgICAnbW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgJworICAgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICAgInJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiJ3MgIgorICAgICAgICAgICAgICdzdGF0ZSAoc3VjaFxuJworICAgICAgICAgICAgICdhcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICJkZWJ1Z2dlciB1cG9uIHByb2dyYW0ncyBleGl0LlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgJworICAgICAgICAgICAgICdleGVjdXRlc1xuJworICAgICAgICAgICAgICdjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSAqRGVidWdnZXIgJworICAgICAgICAgICAgICdDb21tYW5kcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gaXNcbicKKyAgICAgICAgICAgICAndG8gaW5zZXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gJworICAgICAgICAgICAgICd0aGVuXG4nCisgICAgICAgICAgICAgJ3N0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSAnCisgICAgICAgICAgICAgJ3J1bm5pbmdcbicKKyAgICAgICAgICAgICAnd2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0eXBpY2FsIHVzYWdlIHRvIGluc3BlY3QgYSBjcmFzaGVkIHByb2dyYW0gaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgJyAgID4+PiBteW1vZHVsZS50ZXN0KClcbicKKyAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4nCisgICAgICAgICAgICAgJyAgICAgICB0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbicKKyAgICAgICAgICAgICAnICAgICAgIHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIE5hbWVFcnJvcjogc3BhbVxuJworICAgICAgICAgICAgICcgICA+Pj4gcGRiLnBtKClcbicKKyAgICAgICAgICAgICAnICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuJworICAgICAgICAgICAgICcgICAtPiBwcmludChzcGFtKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgJworICAgICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICAgICdpbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgJworICAgICAgICAgICAgICdvYmplY3QpIHVuZGVyXG4nCisgICAgICAgICAgICAgJyAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSAnCisgICAgICAgICAgICAgJ2NvZGUgaXNcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0ZWQ7IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzIGFuZCB0eXBlICJjb250aW51ZSIsIG9yICcKKyAgICAgICAgICAgICAneW91IGNhblxuJworICAgICAgICAgICAgICcgICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyAic3RlcCIgb3IgIm5leHQiIChhbGwgJworICAgICAgICAgICAgICd0aGVzZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICcKKyAgICAgICAgICAgICAnKmxvY2FscypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQ7IGJ5XG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAnCisgICAgICAgICAgICAgJyhTZWUgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucy4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlICcKKyAgICAgICAgICAgICAnb2JqZWN0KVxuJworICAgICAgICAgICAgICcgICB1bmRlciBkZWJ1Z2dlciBjb250cm9sLiAgV2hlbiAicnVuZXZhbCgpIiByZXR1cm5zLCBpdCAnCisgICAgICAgICAgICAgJ3JldHVybnMgdGhlXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgJworICAgICAgICAgICAgICdzaW1pbGFyIHRvXG4nCisgICAgICAgICAgICAgJyAgICJydW4oKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgJworICAgICAgICAgICAgICdzdHJpbmcpXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgJworICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgJyAgIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybmVkLiAgVGhlIGRlYnVnZ2VyIHByb21wdCAnCisgICAgICAgICAgICAgJ2FwcGVhcnNcbicKKyAgICAgICAgICAgICAnICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5zZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIGRlYnVnZ2VyIGF0IHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lLiAgVGhpcyBpcyAnCisgICAgICAgICAgICAgJ3VzZWZ1bCB0b1xuJworICAgICAgICAgICAgICcgICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuICcKKyAgICAgICAgICAgICAnaWYgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuICcKKyAgICAgICAgICAgICAnYXNzZXJ0aW9uXG4nCisgICAgICAgICAgICAgJyAgIGZhaWxzKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogJworICAgICAgICAgICAgICdvYmplY3QuICBJZiBub1xuJworICAgICAgICAgICAgICcgICAqdHJhY2ViYWNrKiBpcyBnaXZlbiwgaXQgdXNlcyB0aGUgb25lIG9mIHRoZSBleGNlcHRpb24gdGhhdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkICcKKyAgICAgICAgICAgICAnaWYgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucG0oKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbicKKyAgICAgICAgICAgICAnICAgInN5cy5sYXN0X3RyYWNlYmFjayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgJworICAgICAgICAgICAgICdpbnN0YW50aWF0aW5nXG4nCisgICAgICAgICAgICAgJ3RoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiAnCisgICAgICAgICAgICAgJ3lvdSB3YW50XG4nCisgICAgICAgICAgICAgJ3RvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzIHlvdXJzZWxmOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT0ndGFiJywgc3RkaW49Tm9uZSwgIgorICAgICAgICAgICAgICdzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICcgICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICcKKyAgICAgICAgICAgICAnZ2xvYi1zdHlsZVxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gJworICAgICAgICAgICAgICdmcmFtZXMgdGhhdFxuJworICAgICAgICAgICAgICcgICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoICcKKyAgICAgICAgICAgICAnaXMgc2VudFxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAiY29udGludWUiIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKClcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkICcKKyAgICAgICAgICAgICAnYWJvdmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRGVidWdnZXIgQ29tbWFuZHNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBjb21tYW5kcyByZWNvZ25pemVkIGJ5IHRoZSBkZWJ1Z2dlciBhcmUgbGlzdGVkIGJlbG93LiAgJworICAgICAgICAgICAgICdNb3N0XG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgJworICAgICAgICAgICAgICdpbmRpY2F0ZWQ7IGUuZy5cbicKKyAgICAgICAgICAgICAnImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciAnCisgICAgICAgICAgICAgJ3RoZSBoZWxwXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmQgKGJ1dCBub3QgImhlIiBvciAiaGVsIiwgbm9yICJIIiBvciAiSGVscCIgb3IgIkhFTFAiKS5cbicKKyAgICAgICAgICAgICAnQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ3RhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHMgJworICAgICAgICAgICAgICcoIltdIikgaW5cbicKKyAgICAgICAgICAgICAndGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuJworICAgICAgICAgICAgICdBbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCAnCisgICAgICAgICAgICAgJ2JhclxuJworICAgICAgICAgICAgICcoInwiKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0VudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gICcKKyAgICAgICAgICAgICAnRXhjZXB0aW9uOiBpZlxuJworICAgICAgICAgICAgICd0aGUgbGFzdCBjb21tYW5kIHdhcyBhICJsaXN0IiBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgJworICAgICAgICAgICAgICdsaXN0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJDb21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2Vzbid0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSAiCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gJworICAgICAgICAgICAgICdleGNsYW1hdGlvblxuJworICAgICAgICAgICAgICdwb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgJ25hbWUgaXNcbicKKyAgICAgICAgICAgICAicHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzICcKKyAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAnYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0ICcKKyAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAnZXhhbWluYXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdNdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgJworICAgICAgICAgICAgICdieSAiOzsiLlxuJworICAgICAgICAgICAgICcoQSBzaW5nbGUgIjsiIGlzIG5vdCB1c2VkIGFzIGl0IGlzIHRoZSBzZXBhcmF0b3IgZm9yIG11bHRpcGxlICcKKyAgICAgICAgICAgICAnY29tbWFuZHNcbicKKyAgICAgICAgICAgICAnaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vICcKKyAgICAgICAgICAgICAnaW50ZWxsaWdlbmNlIGlzXG4nCisgICAgICAgICAgICAgJ2FwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICciOzsiIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZCBzdHJpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBhIGZpbGUgIi5wZGJyYyIgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2N1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgJworICAgICAgICAgICAgICdiZWVuIHR5cGVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yICcKKyAgICAgICAgICAgICAnYWxpYXNlcy4gIElmXG4nCisgICAgICAgICAgICAgJ2JvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIi5wZGJyYyIgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdjb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCAnCisgICAgICAgICAgICAgJ3RoZXNlXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdoKGVscCkgW2NvbW1hbmRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICAnCisgICAgICAgICAgICAgJ1dpdGggYVxuJworICAgICAgICAgICAgICcgICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgJworICAgICAgICAgICAgICciaGVscCBwZGIiXG4nCisgICAgICAgICAgICAgJyAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICcKKyAgICAgICAgICAgICAnInBkYiJcbicKKyAgICAgICAgICAgICAnICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgJ2lkZW50aWZpZXIsICJoZWxwXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3KGhlcmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgJworICAgICAgICAgICAgICdib3R0b20uICBBblxuJworICAgICAgICAgICAgICcgICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlICcKKyAgICAgICAgICAgICAnY29udGV4dCBvZlxuJworICAgICAgICAgICAgICcgICBtb3N0IGNvbW1hbmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZChvd24pIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3UocCkgW2NvdW50XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluICcKKyAgICAgICAgICAgICAndGhlIHN0YWNrXG4nCisgICAgICAgICAgICAgJyAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdiKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdmaWxlLlxuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAnZXhlY3V0YWJsZVxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlICcKKyAgICAgICAgICAgICAncHJlZml4ZWRcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiAnCisgICAgICAgICAgICAgJ2Fub3RoZXJcbicKKyAgICAgICAgICAgICAiICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzbid0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSAiCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIHNlYXJjaGVkIG9uICJzeXMucGF0aCIuICBOb3RlIHRoYXQgZWFjaCBicmVha3BvaW50IGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgYVxuJworICAgICAgICAgICAgICcgICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCxcbicKKyAgICAgICAgICAgICAnICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGlnbm9yZSBjb3VudCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBpZiBhbnkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd0YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuICcKKyAgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICAnICAgZmlyc3QgaGl0LiBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgImJyZWFrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludHMgYXRcbicKKyAgICAgICAgICAgICAnICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCAnCisgICAgICAgICAgICAgJ251bWJlcnMsIGNsZWFyXG4nCisgICAgICAgICAgICAgJyAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICcgICBhc2sgY29uZmlybWF0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Rpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuJworICAgICAgICAgICAgICcgICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCAnCisgICAgICAgICAgICAgJ2NhdXNlXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgJworICAgICAgICAgICAgICdicmVha3BvaW50LCBpdFxuJworICAgICAgICAgICAgICcgICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgJworICAgICAgICAgICAgICcocmUtKWVuYWJsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdlbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmICcKKyAgICAgICAgICAgICAnY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCAnCisgICAgICAgICAgICAgJ2JlY29tZXMgYWN0aXZlXG4nCisgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvICcKKyAgICAgICAgICAgICAndHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgJ3doaWNoIG11c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICcKKyAgICAgICAgICAgICAnKmNvbmRpdGlvbipcbicKKyAgICAgICAgICAgICAnICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgW2JwbnVtYmVyXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICcKKyAgICAgICAgICAgICAnKmJwbnVtYmVyKi4gIFRoZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gJworICAgICAgICAgICAgICdleGFtcGxlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKFBkYikgY29tbWFuZHMgMVxuJworICAgICAgICAgICAgICcgICAgICAoY29tKSBwIHNvbWVfdmFyaWFibGVcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgZW5kXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCAnCisgICAgICAgICAgICAgJ2ZvbGxvd1xuJworICAgICAgICAgICAgICcgICBpdCBpbW1lZGlhdGVseSB3aXRoICJlbmQiOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgJworICAgICAgICAgICAgICdicmVha3BvaW50XG4nCisgICAgICAgICAgICAgJyAgIHNldC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwICcKKyAgICAgICAgICAgICAnYWdhaW4uXG4nCisgICAgICAgICAgICAgJyAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciAnCisgICAgICAgICAgICAgJ2NvbW1hbmQgdGhhdFxuJworICAgICAgICAgICAgICcgICByZXN1bWVzIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgJworICAgICAgICAgICAgICdjb250aW51ZSxcbicKKyAgICAgICAgICAgICAnICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSAnCisgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAnICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSAnCisgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgJyAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiAnCisgICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgICcgICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQtLXdoaWNoXG4nCisgICAgICAgICAgICAgJyAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgJworICAgICAgICAgICAgICdhYm91dCB3aGljaFxuJworICAgICAgICAgICAgICcgICBsaXN0IHRvIGV4ZWN1dGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICBJZiB5b3UgdXNlIHRoZSAnc2lsZW50JyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSAiCisgICAgICAgICAgICAgJ3VzdWFsXG4nCisgICAgICAgICAgICAgJyAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgJworICAgICAgICAgICAgICdUaGlzIG1heSBiZVxuJworICAgICAgICAgICAgICcgICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgJworICAgICAgICAgICAgICdtZXNzYWdlIGFuZFxuJworICAgICAgICAgICAgICcgICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgJworICAgICAgICAgICAgICdhbnl0aGluZywgeW91XG4nCisgICAgICAgICAgICAgJyAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzKHRlcClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgJworICAgICAgICAgICAgICdvY2Nhc2lvblxuJworICAgICAgICAgICAgICcgICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjdXJyZW50IGZ1bmN0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ24oZXh0KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICcgICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICcKKyAgICAgICAgICAgICAnInN0ZXAiXG4nCisgICAgICAgICAgICAgJyAgIGlzIHRoYXQgInN0ZXAiIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGUgJworICAgICAgICAgICAgICcibmV4dCJcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5ICcKKyAgICAgICAgICAgICAnc3RvcHBpbmcgYXRcbicKKyAgICAgICAgICAgICAnICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bnQoaWwpIFtsaW5lbm9dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvICcKKyAgICAgICAgICAgICAnc3RvcCB3aGVuXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSAnCisgICAgICAgICAgICAgJ251bWJlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3IoZXR1cm4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Mob250KGludWUpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgJworICAgICAgICAgICAgICdlbmNvdW50ZXJlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2oodW1wKSBsaW5lbm9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgJworICAgICAgICAgICAgICdjb2RlIGFnYWluLFxuJworICAgICAgICAgICAgICIgICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gcnVuLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgJworICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICcgICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSAiZm9yIiBsb29wICcKKyAgICAgICAgICAgICAnb3Igb3V0XG4nCisgICAgICAgICAgICAgJyAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2woaXN0KSBbZmlyc3RbLCBsYXN0XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgJworICAgICAgICAgICAgICdsaXN0IDExXG4nCisgICAgICAgICAgICAgJyAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgICAgJ2xpc3RpbmcuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggIi4iIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2xpbmUuICBXaXRoXG4nCisgICAgICAgICAgICAgJyAgIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ2xlc3NcbicKKyAgICAgICAgICAgICAnICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAnCisgICAgICAgICAgICAgJyItPiIuICBJZiBhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgIj4+IiwgaWYgaXQgJworICAgICAgICAgICAgICdkaWZmZXJzXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICI+PiIgbWFya2VyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbGwgfCBsb25nbGlzdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciAibGlzdCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhKHJncylcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncCBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50ICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgICAtLS0gdGhpcyBleGVjdXRlcyB0aGUgUHl0aG9uICJwcmludCgpIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzICcKKyAgICAgICAgICAgICAncHJldHR5LVxuJworICAgICAgICAgICAgICcgICBwcmludGVkIHVzaW5nIHRoZSAicHByaW50IiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3aGF0aXMgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5ICcKKyAgICAgICAgICAgICAnaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNwbGF5IFtleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCAnCisgICAgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndW5kaXNwbGF5IFtleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdmcmFtZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2ludGVyYWN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgJworICAgICAgICAgICAgICd3aG9zZVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzICcKKyAgICAgICAgICAgICAnZm91bmQgaW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhbGlhcyBbbmFtZSBbY29tbWFuZF1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzICcKKyAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgJyAgIGluZGljYXRlZCBieSAiJTEiLCAiJTIiLCBhbmQgc28gb24sIHdoaWxlICIlKiIgaXMgcmVwbGFjZWQgJworICAgICAgICAgICAgICdieSBhbGxcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzICcKKyAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgJyAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlICcKKyAgICAgICAgICAgICAnbGlzdGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSAnCisgICAgICAgICAgICAgJ2xlZ2FsbHlcbicKKyAgICAgICAgICAgICAnICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICcKKyAgICAgICAgICAgICAnKmNhbiogYmVcbicKKyAgICAgICAgICAgICAnICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlICcKKyAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICcgICBhbG9uZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuICcKKyAgICAgICAgICAgICAncGxhY2VkXG4nCisgICAgICAgICAgICAgJyAgIGluIHRoZSAiLnBkYnJjIiBmaWxlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbicKKyAgICAgICAgICAgICAnICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiAnCisgICAgICAgICAgICAgJ3ByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBzIHBpIHNlbGZcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuYWxpYXMgbmFtZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICchIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzICcKKyAgICAgICAgICAgICAndGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0ICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbJy1sJ11cbiIKKyAgICAgICAgICAgICAnICAgICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3J1biBbYXJncyAuLi5dXG4nCisgICAgICAgICAgICAgJ3Jlc3RhcnQgW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ3N1cHBsaWVkLFxuJworICAgICAgICAgICAgICcgICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4nCisgICAgICAgICAgICAgJyAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ29wdGlvbnMgYXJlXG4nCisgICAgICAgICAgICAgJyAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3EodWl0KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzICcKKyAgICAgICAgICAgICAnYWJvcnRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gJworICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgIGlzIGRldGVybWluZWQgYnkgdGhlICJfX25hbWVfXyIgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG4nCisgICAgICAgICdUaGUgImRlbCIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2RlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlICcKKyAgICAgICAgJ3NvbWVcbicKKyAgICAgICAgJ2hpbnRzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gJworICAgICAgICAnbGVmdFxuJworICAgICAgICAndG8gcmlnaHQuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCAnCisgICAgICAgICdvclxuJworICAgICAgICAnZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgJworICAgICAgICAnImdsb2JhbCJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuJworICAgICAgICAnIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgJworICAgICAgICAncGFzc2VkXG4nCisgICAgICAgICd0byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiAnCisgICAgICAgICdnZW5lcmFsXG4nCisgICAgICAgICdlcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCAnCisgICAgICAgICdldmVuXG4nCisgICAgICAgICd0aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbicKKyAgICAgICAgJ2Zyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgJworICAgICAgICAnbmVzdGVkXG4nCisgICAgICAgICdibG9jay5cbicsCisgJ2RpY3QnOiAnXG4nCisgICAgICAgICAnRGljdGlvbmFyeSBkaXNwbGF5c1xuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gJworICAgICAgICAgJ3BhaXJzXG4nCisgICAgICAgICAnZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8ICcKKyAgICAgICAgICdkaWN0X2NvbXByZWhlbnNpb25dICJ9IlxuJworICAgICAgICAgJyAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbicKKyAgICAgICAgICcgICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb25cbicKKyAgICAgICAgICcgICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5ICcKKyAgICAgICAgICdhcmVcbicKKyAgICAgICAgICdldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgJworICAgICAgICAgJ2RpY3Rpb25hcnk6XG4nCisgICAgICAgICAnZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbicKKyAgICAgICAgICdjb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSAnCisgICAgICAgICAna2V5XG4nCisgICAgICAgICAibXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnkncyAiCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICdmb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbicKKyAgICAgICAgICduZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgJworICAgICAgICAgJ3VzdWFsXG4nCisgICAgICAgICAnImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSAnCisgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAna2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSAnCisgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICd0aGV5IGFyZSBwcm9kdWNlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdSZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuJworICAgICAgICAgJ3NlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5ICcKKyAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAnc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgJworICAgICAgICAgJ0NsYXNoZXNcbicKKyAgICAgICAgICdiZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICcKKyAgICAgICAgICcodGV4dHVhbGx5XG4nCisgICAgICAgICAncmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKKyAnZHluYW1pYy1mZWF0dXJlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsICcKKyAgICAgICAgICAgICAgICAgICAgICdub3QgYXQgY29tcGlsZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCAnCisgICAgICAgICAgICAgICAgICAgICAnNDI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlICcKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgJworICAgICAgICAgICAgICAgICAgICAgJ2lzIGlsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkIGluIHRoZSBsb2NhbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgJworICAgICAgICAgICAgICAgICAgICAgJ2FyZSBub3QgcmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCisgJ2Vsc2UnOiAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICAgJ29uZVxuJworICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gJworICAgICAgICAgJ29wZXJhdGlvbnMqXG4nCisgICAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzICcKKyAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgJworICAgICAgICAgJ2V2YWx1YXRlZCkuXG4nCisgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnZXhjZXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiAnCisgICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbFxuJworICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgICdkZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICAnb3IgYnkgYW55XG4nCisgICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSAnCisgICAgICAgICAgICAgICAnYmxvY2sgd2hlcmVcbicKKyAgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhICcKKyAgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gJworICAgICAgICAgICAgICAgJ2Fsc29cbicKKyAgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuICBUaGVcbicKKyAgICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnd2hldGhlciBhblxuJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1B5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0ICcKKyAgICAgICAgICAgICAgICdhbiBvdXRlclxuJworICAgICAgICAgICAgICAgJ2xldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlICcKKyAgICAgICAgICAgICAgICdvZiBjb2RlXG4nCisgICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciAnCisgICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiAnCisgICAgICAgICAgICAgICAnbG9vcC4gIEluXG4nCisgICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAgICAgICciU3lzdGVtRXhpdCIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgJworICAgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2UgdGhlXG4nCisgICAgICAgICAgICAgICAnY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICdyZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAgJ2Fib3V0IHRoZVxuJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdOb3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgJworICAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAgJyAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgJypUaGUgdHJ5XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50KiBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQqLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgICcgICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgJworICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhlY21vZGVsJzogJ1xuJworICAgICAgICAgICAgICAnRXhlY3V0aW9uIG1vZGVsXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdTdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtbVxuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSBQeXRob24gcHJvZ3JhbSBpcyBjb25zdHJ1Y3RlZCBmcm9tIGNvZGUgYmxvY2tzLiBBICpibG9jayogJworICAgICAgICAgICAgICAnaXMgYSBwaWVjZVxuJworICAgICAgICAgICAgICAnb2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzIGEgdW5pdC4gVGhlICcKKyAgICAgICAgICAgICAgJ2ZvbGxvd2luZyBhcmVcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kIGEgY2xhc3MgZGVmaW5pdGlvbi4gJworICAgICAgICAgICAgICAnRWFjaFxuJworICAgICAgICAgICAgICAnY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBIHNjcmlwdCBmaWxlIChhICcKKyAgICAgICAgICAgICAgJ2ZpbGUgZ2l2ZW5cbicKKyAgICAgICAgICAgICAgJ2FzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciBzcGVjaWZpZWQgYXMgYSAnCisgICAgICAgICAgICAgICdjb21tYW5kIGxpbmVcbicKKyAgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBpbnRlcnByZXRlcikgaXMgYSBjb2RlIGJsb2NrLiAgQSBzY3JpcHQgJworICAgICAgICAgICAgICAnY29tbWFuZCAoYVxuJworICAgICAgICAgICAgICAnY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZSB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICInKiotYyoqJ1xuIgorICAgICAgICAgICAgICAnb3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lICcKKyAgICAgICAgICAgICAgJ2NvbnRhaW5zXG4nCisgICAgICAgICAgICAgICdzb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCAnCisgICAgICAgICAgICAgICdkZXRlcm1pbmVzXG4nCisgICAgICAgICAgICAgICJ3aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2sncyAiCisgICAgICAgICAgICAgICdleGVjdXRpb24gaGFzXG4nCisgICAgICAgICAgICAgICdjb21wbGV0ZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdCaW5kaW5nIG9mIG5hbWVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJypOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgJworICAgICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvICcKKyAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgJworICAgICAgICAgICAgICAnYmluZCB0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgJworICAgICAgICAgICAgICAndGhhdCBhcmVcbicKKyAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgJworICAgICAgICAgICAgICAnb3IgYWZ0ZXJcbicKKyAgICAgICAgICAgICAgJyJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICAnb2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2ltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICAnCisgICAgICAgICAgICAgICdUaGlzIGZvcm1cbicKKyAgICAgICAgICAgICAgJ21heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCAnCisgICAgICAgICAgICAgICdib3VuZCBmb3JcbicKKyAgICAgICAgICAgICAgJ3RoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlICcKKyAgICAgICAgICAgICAgJ25hbWUpLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgJworICAgICAgICAgICAgICAnZGVmaW5lZCBieSBhXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSAnCisgICAgICAgICAgICAgICd0b3AtbGV2ZWxcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2spLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0ICcKKyAgICAgICAgICAgICAgJ2Jsb2NrLFxuJworICAgICAgICAgICAgICAndW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgJworICAgICAgICAgICAgICAnYm91bmQgYXQgdGhlXG4nCisgICAgICAgICAgICAgICdtb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAnY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSAnCisgICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgICdibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAnCisgICAgICAgICAgICAgICcqYmluZGluZypcbicKKyAgICAgICAgICAgICAgJ29mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiAnCisgICAgICAgICAgICAgICdydWxlcy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdSZXNvbHV0aW9uIG9mIG5hbWVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gICcKKyAgICAgICAgICAgICAgJ0lmIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgJworICAgICAgICAgICAgICAnYmxvY2suICBJZiB0aGVcbicKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvICcKKyAgICAgICAgICAgICAgJ2FueSBibG9ja3NcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2ludHJvZHVjZXNcbicKKyAgICAgICAgICAgICAgJ2EgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlICcKKyAgICAgICAgICAgICAgJ25lYXJlc3RcbicKKyAgICAgICAgICAgICAgJ2VuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSAnCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrXG4nCisgICAgICAgICAgICAgICJpcyBjYWxsZWQgdGhlIGJsb2NrJ3MgKmVudmlyb25tZW50Ki5cbiIKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAncmFpc2VkLiBJZlxuJworICAgICAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byAnCisgICAgICAgICAgICAgICdhIGxvY2FsXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgJworICAgICAgICAgICAgICAnd2hlcmUgdGhlXG4nCisgICAgICAgICAgICAgICduYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgJyJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrLCBhbGxcbicKKyAgICAgICAgICAgICAgJ3VzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzICcKKyAgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICAnY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgJworICAgICAgICAgICAgICAnd2l0aGluIGFcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gJworICAgICAgICAgICAgICAnbGFja3NcbicKKyAgICAgICAgICAgICAgJ2RlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyICcKKyAgICAgICAgICAgICAgJ2FueXdoZXJlXG4nCisgICAgICAgICAgICAgICd3aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuICcKKyAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgJworICAgICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mICcKKyAgICAgICAgICAgICAgJ3RoZSBuYW1lXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgJworICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICd0b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIGJ5XG4nCisgICAgICAgICAgICAgICdzZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgJworICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICAnb2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgJworICAgICAgICAgICAgICAnZmlyc3QuICBJZlxuJworICAgICAgICAgICAgICAndGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzICcKKyAgICAgICAgICAgICAgJ3NlYXJjaGVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyAnCisgICAgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgICAgJ2luIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgJworICAgICAgICAgICAgICAndmFyaWFibGVcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyAnCisgICAgICAgICAgICAgICdhIGdsb2JhbC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyICcKKyAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICdwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gJworICAgICAgICAgICAgICAnc2NvcGUuXG4nCisgICAgICAgICAgICAgICciU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgJworICAgICAgICAgICAgICAnZG9lcyBub3RcbicKKyAgICAgICAgICAgICAgJ2V4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgJworICAgICAgICAgICAgICAndGltZSBhXG4nCisgICAgICAgICAgICAgICdtb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyAnCisgICAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICAgJyJfX21haW5fXyIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0NsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICcKKyAgICAgICAgICAgICAgJyJldmFsKCkiIGFyZVxuJworICAgICAgICAgICAgICAnc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiAnCisgICAgICAgICAgICAgICdpcyBhblxuJworICAgICAgICAgICAgICAnZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgJ2ZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gJworICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAndW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gVGhlXG4nCisgICAgICAgICAgICAgICduYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb2ZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyAnCisgICAgICAgICAgICAgICdsaW1pdGVkIHRvXG4nCisgICAgICAgICAgICAgICd0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgJworICAgICAgICAgICAgICAnbWV0aG9kcyAtLVxuJworICAgICAgICAgICAgICAndGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlICcKKyAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAgJ3dpbGwgZmFpbDpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgY2xhc3MgQTpcbicKKyAgICAgICAgICAgICAgJyAgICAgICBhID0gNDJcbicKKyAgICAgICAgICAgICAgJyAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhICcKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2tcbicKKyAgICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gJworICAgICAgICAgICAgICAnaXRzIGdsb2JhbFxuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSAnCisgICAgICAgICAgICAgICdsYXR0ZXIgY2FzZVxuJworICAgICAgICAgICAgICAidGhlIG1vZHVsZSdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiCisgICAgICAgICAgICAgICciX19tYWluX18iXG4nCisgICAgICAgICAgICAgICdtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgJworICAgICAgICAgICAgICAnd2hlbiBpbiBhbnlcbicKKyAgICAgICAgICAgICAgJ290aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAnImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhICcKKyAgICAgICAgICAgICAgJ3VzZXItY3JlYXRlZFxuJworICAgICAgICAgICAgICAnZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuJworICAgICAgICAgICAgICAnIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gICcKKyAgICAgICAgICAgICAgJ1VzZXJzXG4nCisgICAgICAgICAgICAgICd3YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAnCisgICAgICAgICAgICAgICciaW1wb3J0IlxuJworICAgICAgICAgICAgICAndGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgJworICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCAnCisgICAgICAgICAgICAgICdjb21waWxlXG4nCisgICAgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgJworICAgICAgICAgICAgICAnd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICdpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgJworICAgICAgICAgICAgICAndmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyAnCisgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSAnCisgICAgICAgICAgICAgICdmdWxsXG4nCisgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluICcKKyAgICAgICAgICAgICAgJ3RoZSBsb2NhbFxuJworICAgICAgICAgICAgICAnYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90ICcKKyAgICAgICAgICAgICAgJ3Jlc29sdmVkXG4nCisgICAgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UuICBbMV1cbicKKyAgICAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICdvdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UgaXNcbicKKyAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiAnCisgICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgICdvZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciAnCisgICAgICAgICAgICAgICdleGNlcHRpb25hbFxuJworICAgICAgICAgICAgICAnY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlICcKKyAgICAgICAgICAgICAgJ2Vycm9yIGlzXG4nCisgICAgICAgICAgICAgICdkZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICdvciBieSBhbnlcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgJworICAgICAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAgICAgJ3RoZSBlcnJvciBvY2N1cnJlZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhICcKKyAgICAgICAgICAgICAgJ3J1bi10aW1lXG4nCisgICAgICAgICAgICAgICdlcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbicKKyAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiAnCisgICAgICAgICAgICAgICdFeGNlcHRpb25cbicKKyAgICAgICAgICAgICAgJ2hhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudC4gIFRoZVxuJworICAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgJworICAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICAnY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgJ3doZXRoZXIgYW5cbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdQeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gJworICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgJworICAgICAgICAgICAgICAnYW4gb3V0ZXJcbicKKyAgICAgICAgICAgICAgJ2xldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2ZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSAnCisgICAgICAgICAgICAgICdvZiBjb2RlXG4nCisgICAgICAgICAgICAgICdmcm9tIHRoZSB0b3ApLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciAnCisgICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gJworICAgICAgICAgICAgICAnbG9vcC4gIEluXG4nCisgICAgICAgICAgICAgICdlaXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgJworICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgICAgICciU3lzdGVtRXhpdCIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiICcKKyAgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICAnc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgJworICAgICAgICAgICAgICAncmVmZXJlbmNlIHRoZVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAncmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgJ2Fib3V0IHRoZVxuJworICAgICAgICAgICAgICAnZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOb3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgJworICAgICAgICAgICAgICAnVGhlaXJcbicKKyAgICAgICAgICAgICAgJyAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICcgIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gJworICAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAgJyAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgJypUaGUgdHJ5XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2UgJworICAgICAgICAgICAgICAnc3RhdGVtZW50Ki5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICcgICAgY29tcGlsZWQuXG4nLAorICdleHBybGlzdHMnOiAnXG4nCisgICAgICAgICAgICAgICdFeHByZXNzaW9uIGxpc3RzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSAnCisgICAgICAgICAgICAgICd0dXBsZS4gIFRoZVxuJworICAgICAgICAgICAgICAnbGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSAnCisgICAgICAgICAgICAgICdsaXN0LiAgVGhlXG4nCisgICAgICAgICAgICAgICdleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlICcKKyAgICAgICAgICAgICAgJyhhLmsuYS4gYVxuJworICAgICAgICAgICAgICAnKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSAnCisgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICJ3aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc24ndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciAiCisgICAgICAgICAgICAgICd5aWVsZHMgdGhlXG4nCisgICAgICAgICAgICAgICd2YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiAnCisgICAgICAgICAgICAgICdlbXB0eSBwYWlyXG4nCisgICAgICAgICAgICAgICdvZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAorICdmbG9hdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgJ2xleGljYWxcbicKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuJworICAgICAgICAgICAgICcgICBwb2ludGZsb2F0ICAgIDo6PSBbaW50cGFydF0gZnJhY3Rpb24gfCBpbnRwYXJ0ICIuIlxuJworICAgICAgICAgICAgICcgICBleHBvbmVudGZsb2F0IDo6PSAoaW50cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4nCisgICAgICAgICAgICAgJyAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXQrXG4nCisgICAgICAgICAgICAgJyAgIGV4cG9uZW50ICAgICAgOjo9ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGRpZ2l0K1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzICcKKyAgICAgICAgICAgICAnaW50ZXJwcmV0ZWQgdXNpbmdcbicKKyAgICAgICAgICAgICAncmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSAnCisgICAgICAgICAgICAgJ3NhbWUgbnVtYmVyXG4nCisgICAgICAgICAgICAgJ2FzICI3N2UxMCIuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG4nCisgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgJ2xpdGVyYWxzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgJworICAgICAgICAgICAgICdsaWtlICItMSJcbicKKyAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iICcKKyAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicsCisgJ2Zvcic6ICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbicKKyAgICAgICAgJ29iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxuJworICAgICAgICAncHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgJworICAgICAgICAnRWFjaFxuJworICAgICAgICAnaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgJworICAgICAgICAncnVsZXNcbicKKyAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdleGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gJworICAgICAgICAndGhlXG4nCisgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAnZXhjZXB0aW9uKSxcbicKKyAgICAgICAgJ3RoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgJworICAgICAgICAnbG9vcFxuJworICAgICAgICAndGVybWluYXRlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAnbG9vcFxuJworICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCAnCisgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG4nCisgICAgICAgICdpdGVtLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0ICcKKyAgICAgICAgJ2xpc3QuXG4nCisgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICdpbmNsdWRpbmdcbicKKyAgICAgICAgJ3Rob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuJworICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlICcKKyAgICAgICAgJ25leHRcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdOYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgJworICAgICAgICAnZmluaXNoZWQsXG4nCisgICAgICAgICdidXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byAnCisgICAgICAgICdhdFxuJworICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG4nCisgICAgICAgICJpdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsJ3MgIgorICAgICAgICAnImZvciBpXG4nCisgICAgICAgICc6PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAnCisgICAgICAgICcyXSIuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ05vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gICcKKyAgICAgICAgJ0FuXG4nCisgICAgICAgICcgIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCAnCisgICAgICAgICduZXh0LFxuJworICAgICAgICAnICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyICcKKyAgICAgICAgJ2hhc1xuJworICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgJ21lYW5zXG4nCisgICAgICAgICcgIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCAnCisgICAgICAgICdvZlxuJworICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgJworICAgICAgICAnbG9vcC5cbicKKyAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgJyAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgJyAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKKyAnZm9ybWF0c3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3RyaW5nIFN5bnRheFxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBhbmQgdGhlICJGb3JtYXR0ZXIiIGNsYXNzIHNoYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICcKKyAgICAgICAgICAgICAgICAgICciRm9ybWF0dGVyIixcbicKKyAgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlc1xuJworICAgICAgICAgICAgICAgICAgJyJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgJworICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJ3RleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSAnCisgICAgICAgICAgICAgICAgICAnbmVlZCB0byBpbmNsdWRlXG4nCisgICAgICAgICAgICAgICAgICAnYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGRvdWJsaW5nOlxuJworICAgICAgICAgICAgICAgICAgJyJ7eyIgYW5kICJ9fSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSAnCisgICAgICAgICAgICAgICAgICAnfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICciXSI+ICtcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24+XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2VpdGhlciBhXG4nCisgICAgICAgICAgICAgICAgICAibnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0J3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhICIKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAiYXJndW1lbnQsIGFuZCBpZiBpdCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQgIgorICAgICAgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnYXJlIDAsIDEsIDIsXG4nCisgICAgICAgICAgICAgICAgICAnLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgJworICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgJ3RoYXQgb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAnQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAncG9zc2libGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICcKKyAgICAgICAgICAgICAgICAgICciXCcxMFwnIiBvclxuJworICAgICAgICAgICAgICAgICAgJyJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieSBhbnlcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uICcKKyAgICAgICAgICAgICAgICAgICdvZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAnCisgICAgICAgICAgICAgICAgICAnImdldGF0dHIoKSIsIHdoaWxlIGFuXG4nCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVycyBjYW4gYmVcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAjIFJlZmVyZW5jZXMgZmlyc3QgJworICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9ICcKKyAgICAgICAgICAgICAgICAgICd0byB7MX0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgJworICAgICAgICAgICAgICAgICAgImFyZ3VtZW50ICduYW1lJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICMgXCd3ZWlnaHRcJyAnCisgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mICcKKyAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICdwbGF5ZXJzJy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ05vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZm9ybWF0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2Rlc2lyYWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2ZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzICcKKyAgICAgICAgICAgICAgICAgICdvd25cbicKKyAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmcgYmVmb3JlXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzICcKKyAgICAgICAgICAgICAgICAgICdieXBhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiAiXCchc1wnIiAnCisgICAgICAgICAgICAgICAgICAnd2hpY2ggY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgICcic3RyKCkiIG9uIHRoZSB2YWx1ZSwgIlwnIXJcJyIgd2hpY2ggY2FsbHMgInJlcHIoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICciXCchYVwnIiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2NhbGxzICJhc2NpaSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uICcKKyAgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93ICcKKyAgICAgICAgICAgICAgICAgICd0aGUgdmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aCwgYWxpZ25tZW50LFxuJworICAgICAgICAgICAgICAgICAgJ3BhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSAnCisgICAgICAgICAgICAgICAgICAnY2FuIGRlZmluZSBpdHNcbicKKyAgICAgICAgICAgICAgICAgICdvd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ01vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nICcKKyAgICAgICAgICAgICAgICAgICdtaW5pLWxhbmd1YWdlLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2lzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0EgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCAnCisgICAgICAgICAgICAgICAgICAnZmllbGRzXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIGNhbiBjb250YWluICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGEgZmllbGRcbicKKyAgICAgICAgICAgICAgICAgICduYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAnYWxsb3dlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZSBzdWJzdGl0dXRlZCAnCisgICAgICAgICAgICAgICAgICAnYmVmb3JlIHRoZVxuJworICAgICAgICAgICAgICAgICAgJypmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzIGFsbG93cyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRpbmcgb2YgYVxuJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuJworICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICciRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkcyBjb250YWluZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgJworICAgICAgICAgICAgICAgICAgJ2FyZSBwcmVzZW50ZWRcbicKKyAgICAgICAgICAgICAgICAgICcoc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgJworICAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2J1aWx0LWluICJmb3JtYXQoKSIgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5ICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmUgaG93XG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ01vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgJworICAgICAgICAgICAgICAgICAgJ2FyZSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAnc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0EgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnKCIiIiIpIHByb2R1Y2VzXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS4gQSBub24tZW1wdHlcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0X3NwZWMgOjo9ICcKKyAgICAgICAgICAgICAgICAgICdbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuJworICAgICAgICAgICAgICAgICAgJyAgIGZpbGwgICAgICAgIDo6PSA8YW55IGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICAgICAgICcgICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgJworICAgICAgICAgICAgICAgICAgJyJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgYSAqZmlsbCpcbicKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UgaWZcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiBOb3RlIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSAieyIgYW5kICJ9IiAnCisgICAgICAgICAgICAgICAgICAnYXMgKmZpbGwqXG4nCisgICAgICAgICAgICAgICAgICAnY2hhciB3aGlsZSB1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kOyB0aGlzICcKKyAgICAgICAgICAgICAgICAgICdsaW1pdGF0aW9uIGhvd2V2ZXJcbicKKyAgICAgICAgICAgICAgICAgICdkb2VzblwndCBhZmZlY3QgdGhlICJmb3JtYXQoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cykuICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciAnCisgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gKGlmIGFueSkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcgZmllbGRzICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gJyswMDAwMDAxMjAnLiBUaGlzIGFsaWdubWVudCAiCisgICAgICAgICAgICAgICAgICAnb3B0aW9uIGlzIG9ubHkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGF2YWlsYWJsZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgd2lkdGhcbicKKyAgICAgICAgICAgICAgICAgICd3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgb25lIG9mXG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCBvbiBwb3NpdGl2ZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSAnCisgICAgICAgICAgICAgICAgICAnZm9yIGRpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4IGFuZFxuJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciAnCisgICAgICAgICAgICAgICAgICAnaGV4YWRlY2ltYWwgb3V0cHV0XG4nCisgICAgICAgICAgICAgICAgICAnaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICcKKyAgICAgICAgICAgICAgICAgICciXCcwb1wnIiwgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCAnCisgICAgICAgICAgICAgICAgICAnRGVjaW1hbCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byAnCisgICAgICAgICAgICAgICAgICAnYWx3YXlzIGNvbnRhaW4gYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuICcKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAgICdvbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIlxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Jlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgJworICAgICAgICAgICAgICAgICAgJ3Rob3VzYW5kcyBzZXBhcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlXG4nCisgICAgICAgICAgICAgICAgICAnaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSAnCisgICAgICAgICAgICAgICAgICAnYWxzbyAqKlBFUCAzNzgqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICBJZiBub3RcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUHJlY2VkaW5nIHRoZSAqd2lkdGgqIGZpZWxkIGJ5IGEgemVybyAoIlwnMFwnIikgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICdlbmFibGVzIHNpZ24tXG4nCisgICAgICAgICAgICAgICAgICAnYXdhcmUgemVyby1wYWRkaW5nIGZvciBudW1lcmljIHR5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50ICcKKyAgICAgICAgICAgICAgICAgICd0byBhICpmaWxsKlxuJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciBvZiAiXCcwXCciIHdpdGggYW4gKmFsaWdubWVudCogdHlwZSBvZiAnCisgICAgICAgICAgICAgICAgICAnIlwnPVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAnYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlZCB3aXRoICJcJ2ZcJyIgYW5kICJcJ0ZcJyIsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgJworICAgICAgICAgICAgICAgICAgJ3RoZSBkZWNpbWFsIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIi4gIEZvciBub24tXG4nCisgICAgICAgICAgICAgICAgICAnbnVtYmVyIHR5cGVzIHRoZSBmaWVsZCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gZmllbGQgc2l6ZSAtICcKKyAgICAgICAgICAgICAgICAgICdpbiBvdGhlclxuJworICAgICAgICAgICAgICAgICAgJ3dvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0ZpbmFsbHksIHRoZSAqdHlwZSogZGV0ZXJtaW5lcyBob3cgdGhlIGRhdGEgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBzdHJpbmcgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdzXCciICAgICB8IFN0cmluZyBmb3JtYXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ3R5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG1heSBiZSAnCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICciXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgVHlwZSAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2JcJyIgICAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluICcKKyAgICAgICAgICAgICAgICAgICdiYXNlIDIuICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnY1wnIiAgICAgfCBDaGFyYWN0ZXIuIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZyAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ3ByaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdkXCciICAgICB8IERlY2ltYWwgSW50ZWdlci4gT3V0cHV0cyB0aGUgbnVtYmVyIGluICcKKyAgICAgICAgICAgICAgICAgICdiYXNlIDEwLiAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgOC4gICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwneFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIGxvd2VyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdYXCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICcxNiwgdXNpbmcgdXBwZXItICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSAnCisgICAgICAgICAgICAgICAgICAnOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2RcJyIsICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIG51bWJlciAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnZFwnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJlc2VudGF0aW9uIHR5cGVzLCBpbnRlZ2VycyBjYW4gJworICAgICAgICAgICAgICAgICAgJ2JlIGZvcm1hdHRlZFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgJworICAgICAgICAgICAgICAgICAgJyhleGNlcHQgIlwnblwnIlxuJworICAgICAgICAgICAgICAgICAgJ2FuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgICAgICAgICAndGhlIGludGVnZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgICdhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICAgJ2FyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciAnCisgICAgICAgICAgICAgICAgICAnaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgJ2UnIHRvICIKKyAgICAgICAgICAgICAgICAgICdpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBjYXNlICdFJyBhcyB0aGUgc2VwYXJhdG9yICIKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG51bWJlci4gIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgIlwnZlwnIiwgYnV0ICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJ0cyAibmFuIiB0byAiTkFOIiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gJworICAgICAgICAgICAgICAgICAgJyJJTkYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICcKKyAgICAgICAgICAgICAgICAgICcicCA+PSAxIiwgdGhpcyAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBvciBpbiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgJworICAgICAgICAgICAgICAgICAgJ21hZ25pdHVkZS4gIFRoZSAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgJworICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlIHJlc3VsdCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2FuZCBwcmVjaXNpb24gInAtMSIgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00ICcKKyAgICAgICAgICAgICAgICAgICc8PSBleHAgPCBwIiwgdGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiAnCisgICAgICAgICAgICAgICAgICAndHlwZSAiXCdmXCciIGFuZCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24gInAtMS1leHAiLiAgT3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gInAtMSIuIEluIGJvdGggIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICcKKyAgICAgICAgICAgICAgICAgICdyZW1vdmVkIGZyb20gdGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgJworICAgICAgICAgICAgICAgICAgJ2Fsc28gcmVtb3ZlZCBpZiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnaXQuICBQb3NpdGl2ZSBhbmQgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ3plcm8sIGFuZCBuYW5zLCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFyZSBmb3JtYXR0ZWQgYXMgImluZiIsICItaW5mIiwgIjAiLCAnCisgICAgICAgICAgICAgICAgICAnIi0wIiBhbmQgIm5hbiIgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICciNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJ3N3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsICcKKyAgICAgICAgICAgICAgICAgICd0b28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2dcJyIsICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIG51bWJlciAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAnCisgICAgICAgICAgICAgICAgICAnMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgJ3BlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byAiXCdnXCciLCBleGNlcHQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZml4ZWQtcG9pbnQgbm90YXRpb24sIHdoZW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHBvaW50LiBUaGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyBhcyBoaWdoIGFzIG5lZWRlZCAnCisgICAgICAgICAgICAgICAgICAndG8gcmVwcmVzZW50IHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwYXJ0aWN1bGFyIHZhbHVlLiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgJworICAgICAgICAgICAgICAgICAgJ3RvIG1hdGNoIHRoZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnb3RoZXIgZm9ybWF0ICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBleGFtcGxlc1xuJworICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggJworICAgICAgICAgICAgICAgICAgJ2FuZCBjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgICciJSItZm9ybWF0dGluZyxcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgInt9IiBhbmQgd2l0aCAiOiIgdXNlZCBpbnN0ZWFkICcKKyAgICAgICAgICAgICAgICAgICdvZiAiJSIuIEZvclxuJworICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsICJcJyUwMy4yZlwnIiBjYW4gYmUgdHJhbnNsYXRlZCB0byAnCisgICAgICAgICAgICAgICAgICAnIlwnezowMy4yZn1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgJ29wdGlvbnMsIHNob3duXG4nCisgICAgICAgICAgICAgICAgICAnaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9LCB7MX0sIHsyfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2EsIGIsIGMnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7fSwge30sIHt9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJykgICMgMy4xKyBvbmx5XG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2EsIGIsIGMnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYywgYiwgYSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3syfSwgezF9LCB7MH0nLmZvcm1hdCgqJ2FiYycpICAgICAgIyB1bnBhY2tpbmcgIgorICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7MH17MX17MH0nLmZvcm1hdCgnYWJyYScsICdjYWQnKSAgICMgYXJndW1lbnRzJyAiCisgICAgICAgICAgICAgICAgICAnaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbicKKyAgICAgICAgICAgICAgICAgICIgICAnYWJyYWNhZGFicmEnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sICIKKyAgICAgICAgICAgICAgICAgICJ7bG9uZ2l0dWRlfScuZm9ybWF0KGxhdGl0dWRlPSczNy4yNE4nLCAiCisgICAgICAgICAgICAgICAgICAibG9uZ2l0dWRlPSctMTE1LjgxVycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiBjb29yZCA9IHsnbGF0aXR1ZGUnOiAnMzcuMjROJywgJ2xvbmdpdHVkZSc6ICIKKyAgICAgICAgICAgICAgICAgICInLTExNS44MVcnfVxuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sICIKKyAgICAgICAgICAgICAgICAgICJ7bG9uZ2l0dWRlfScuZm9ybWF0KCoqY29vcmQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkFjY2Vzc2luZyBhcmd1bWVudHMnIGF0dHJpYnV0ZXM6XG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSAzLTVqXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICgnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCAiCisgICAgICAgICAgICAgICAgICAicGFydCB7MC5yZWFsfSAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS4nKS5mb3JtYXQoYylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCAiCisgICAgICAgICAgICAgICAgICAicGFydCAzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLidcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgUG9pbnQ6XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ1BvaW50KHtzZWxmLnh9LCAiCisgICAgICAgICAgICAgICAgICAie3NlbGYueX0pJy5mb3JtYXQoc2VsZj1zZWxmKVxuIgorICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ1BvaW50KDQsIDIpJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkFjY2Vzc2luZyBhcmd1bWVudHMnIGl0ZW1zOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjb29yZCA9ICgzLCA1KVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnWDogezBbMF19OyAgWTogezBbMV19Jy5mb3JtYXQoY29vcmQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1g6IDM7ICBZOiA1J1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJXMiIGFuZCAiJXIiOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6ICcKKyAgICAgICAgICAgICAgICAgICd7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4nCisgICAgICAgICAgICAgICAgICAnICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6ICcKKyAgICAgICAgICAgICAgICAgICd0ZXN0MiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo8MzB9Jy5mb3JtYXQoJ2xlZnQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PjMwfScuZm9ybWF0KCdyaWdodCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezpeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezoqXjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpICAjIHVzZSAnKicgYXMgYSBmaWxsICIKKyAgICAgICAgICAgICAgICAgICdjaGFyXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKidcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezorZn07IHs6K2Z9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgIgorICAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAgIiAgICcrMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6IGZ9OyB7OiBmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgIgorICAgICAgICAgICAgICAgICAgJ2ZvciBwb3NpdGl2ZSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyAzLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezotZn07IHs6LWZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSAiCisgICAgICAgICAgICAgICAgICAidGhlIG1pbnVzIC0tIHNhbWUgYXMgJ3s6Zn07IHs6Zn0nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgYmFzZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOmJ9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOiNifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezosfScuZm9ybWF0KDEyMzQ1Njc4OTApXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzEsMjM0LDU2Nyw4OTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHBvaW50cyA9IDE5XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHRvdGFsID0gMjJcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0NvcnJlY3QgYW5zd2VyczogezouMiV9Jy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBkYXRldGltZVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6JVktJW0tJWQgJUg6JU06JVN9Jy5mb3JtYXQoZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMjAxMC0wNy0wNCAxMjoxNTo1OCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKCc8Xj4nLCBbJ2xlZnQnLCAnY2VudGVyJywgIgorICAgICAgICAgICAgICAgICAgIidyaWdodCddKTpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICd7MDp7ZmlsbH17YWxpZ259MTZ9Jy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgIgorICAgICAgICAgICAgICAgICAgJ2FsaWduPWFsaWduKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0PDw8PDw8PDw8PDw8J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICdeXl5eXmNlbnRlcl5eXl5eJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgICc+Pj4+Pj4+Pj4+PnJpZ2h0J1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjAyWH17OjAyWH17OjAyWH17OjAyWH0nLmZvcm1hdCgqb2N0ZXRzKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDMEE4MDAwMSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50KF8sIDE2KVxuJworICAgICAgICAgICAgICAgICAgJyAgIDMyMzIyMzU1MjFcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gd2lkdGggPSA1XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiAnCisgICAgICAgICAgICAgICAgICAnK05PUk1BTElaRV9XSElURVNQQUNFXG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICBmb3IgYmFzZSBpbiAnZFhvYic6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcHJpbnQoJ3swOnt3aWR0aH17YmFzZX19Jy5mb3JtYXQobnVtLCAiCisgICAgICAgICAgICAgICAgICAiYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD0nICcpXG4iCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwcmludCgpXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgJworICAgICAgICAgICAgICdbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqICcKKyAgICAgICAgICAgICAnWyIsIiAiKioiIHBhcmFtZXRlcl1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBiaW5kc1xuJworICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICcoYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgJworICAgICAgICAgICAgICdUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyAnCisgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7ICcKKyAgICAgICAgICAgICAndGhpcyBnZXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAnCisgICAgICAgICAgICAgJypkZWNvcmF0b3IqXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzXG4nCisgICAgICAgICAgICAgJ2RlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAncmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICdhcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG5hbWVcbicKKyAgICAgICAgICAgICAnaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgJworICAgICAgICAgICAgICdhcHBsaWVkIGluXG4nCisgICAgICAgICAgICAgJ25lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICcgICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4nCisgICAgICAgICAgICAgJypleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgJworICAgICAgICAgICAgICd2YWx1ZXMuIlxuJworICAgICAgICAgICAgICdGb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAnKmFyZ3VtZW50KiBtYXlcbicKKyAgICAgICAgICAgICAiYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyJ3MgZGVmYXVsdCAiCisgICAgICAgICAgICAgJ3ZhbHVlIGlzXG4nCisgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsICcKKyAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgICAgJy0tLSB0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgJworICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgJworICAgICAgICAgICAgICdzYW1lICJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgJworICAgICAgICAgICAgICdzdWNoIGFzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAnKGUuZy4gYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgJworICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiAnCisgICAgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAgICAnKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgJ21lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uICcKKyAgICAgICAgICAgICAnYXJndW1lbnRzLCBmcm9tXG4nCisgICAgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgJworICAgICAgICAgICAgICdyZWNlaXZpbmcgYW55XG4nCisgICAgICAgICAgICAgJ2V4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgJworICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAnZm9ybSAiIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgJworICAgICAgICAgICAgICd0byBhIG5ld1xuJworICAgICAgICAgICAgICdlbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICIiKiIiIG9yICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCAnCisgICAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgJ2FuZCBhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICAnCisgICAgICAgICAgICAgJ0Fubm90YXRpb25zIG1heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgJworICAgICAgICAgICAgICdzb3VyY2UgY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICdmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG4nCisgICAgICAgICAgICAgImRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnMnIG5hbWVzIGluIHRoZSAiCisgICAgICAgICAgICAgJyJfX2Fubm90YXRpb25zX18iXG4nCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAnbm90IGJvdW5kXG4nCisgICAgICAgICAgICAgJ3RvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgJworICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICdmdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSAnCisgICAgICAgICAgICAgJ3ZhcmlhYmxlcyB1c2VkXG4nCisgICAgICAgICAgICAgJ2luIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciAnCisgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKKyAnZ2xvYmFsJzogJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSAnCisgICAgICAgICAgICdlbnRpcmVcbicKKyAgICAgICAgICAgJ2N1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2ludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhICcKKyAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAndmFyaWFibGUgd2l0aG91dCAiZ2xvYmFsIiwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG4nCisgICAgICAgICAgICdnbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgJworICAgICAgICAgICAnc2FtZSBjb2RlXG4nCisgICAgICAgICAgICdibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgImdsb2JhbCIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAgJ3BhcmFtZXRlcnMgb3IgaW4gYSAiZm9yIiBsb29wIGNvbnRyb2wgdGFyZ2V0LCAiY2xhc3MiICcKKyAgICAgICAgICAgJ2RlZmluaXRpb24sXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uLCBvciAiaW1wb3J0IiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICAnZG9lcyBub3RcbicKKyAgICAgICAgICAgJ2VuZm9yY2UgdGhlIHR3byByZXN0cmljdGlvbnMsIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlICcKKyAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgJ2ZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSAnCisgICAgICAgICAgICdjaGFuZ2VcbicKKyAgICAgICAgICAgJ3RoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlICcKKyAgICAgICAgICAgJ3BhcnNlci4gIEl0XG4nCisgICAgICAgICAgICdhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgJworICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICdvciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2FmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG4nCisgICAgICAgICAgICdjb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgJworICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICdjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAnCisgICAgICAgICAgICciZXZhbCgpIlxuJworICAgICAgICAgICAnYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCisgJ2lkLWNsYXNzZXMnOiAnXG4nCisgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgJworICAgICAgICAgICAgICAgJ3Jlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgJworICAgICAgICAgICAgICAgJ25vdCBkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgJyAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgJ2NvbnZlbnRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgJyAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICdDdXJyZW50XG4nCisgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogJworICAgICAgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAgICAgICcgICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSAnCisgICAgICAgICAgICAgICAndmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAgICAgICcgICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgJworICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfXyoiXG4nCisgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSAnCisgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAnb2YgYmFzZSBhbmRcbicKKyAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCisgJ2lkZW50aWZpZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyBhbmQga2V5d29yZHNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyAoYWxzbyByZWZlcnJlZCB0byBhcyAqbmFtZXMqKSBhcmUgZGVzY3JpYmVkIGJ5ICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIHN5bnRheCBvZiBpZGVudGlmaWVycyBpbiBQeXRob24gaXMgYmFzZWQgb24gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICAgICdhbm5leCBVQVgtMzEsIHdpdGggZWxhYm9yYXRpb24gYW5kIGNoYW5nZXMgYXMgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgJ2JlbG93OyBzZWUgYWxzb1xuJworICAgICAgICAgICAgICAgICcqKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1dpdGhpbiB0aGUgQVNDSUkgcmFuZ2UgKFUrMDAwMS4uVSswMDdGKSwgdGhlIHZhbGlkICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBmb3JcbicKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgYXJlIHRoZSBzYW1lIGFzIGluIFB5dGhvbiAyLng6IHRoZSB1cHBlcmNhc2UgJworICAgICAgICAgICAgICAgICdhbmQgbG93ZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgJ2xldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAndGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciwgdGhlIGRpZ2l0cyAiMCIgdGhyb3VnaCAiOSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gMy4wIGludHJvZHVjZXMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZyb20gb3V0c2lkZSAnCisgICAgICAgICAgICAgICAgJ3RoZSBBU0NJSVxuJworICAgICAgICAgICAgICAgICdyYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlICcKKyAgICAgICAgICAgICAgICAnY2xhc3NpZmljYXRpb25cbicKKyAgICAgICAgICAgICAgICAndXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgJworICAgICAgICAgICAgICAgICdpbmNsdWRlZCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhIiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBpZGVudGlmaWVyICAgOjo9IHhpZF9zdGFydCB4aWRfY29udGludWUqXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyAnCisgICAgICAgICAgICAgICAgJ0x1LCBMbCwgTHQsIExtLCBMbywgTmwsIHRoZSB1bmRlcnNjb3JlLCBhbmQgY2hhcmFjdGVycyB3aXRoICcKKyAgICAgICAgICAgICAgICAndGhlIE90aGVyX0lEX1N0YXJ0IHByb3BlcnR5PlxuJworICAgICAgICAgICAgICAgICcgICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyAnCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgaW4gdGhlIGNhdGVnb3JpZXMgTW4sIE1jLCBOZCwgUGMgYW5kIG90aGVycyB3aXRoICcKKyAgICAgICAgICAgICAgICAndGhlIE90aGVyX0lEX0NvbnRpbnVlIHByb3BlcnR5PlxuJworICAgICAgICAgICAgICAgICcgICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDICcKKyAgICAgICAgICAgICAgICAnbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfc3RhcnQgeGlkX2NvbnRpbnVlKiI+XG4nCisgICAgICAgICAgICAgICAgJyAgIHhpZF9jb250aW51ZSA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX2NvbnRpbnVlIHdob3NlICcKKyAgICAgICAgICAgICAgICAnTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIFVuaWNvZGUgY2F0ZWdvcnkgY29kZXMgbWVudGlvbmVkIGFib3ZlIHN0YW5kIGZvcjpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkx1KiAtIHVwcGVyY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTHQqIC0gdGl0bGVjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxtKiAtIG1vZGlmaWVyIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxvKiAtIG90aGVyIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk5sKiAtIGxldHRlciBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpNbiogLSBub25zcGFjaW5nIG1hcmtzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTmQqIC0gZGVjaW1hbCBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gJworICAgICAgICAgICAgICAgICdQcm9wTGlzdC50eHQgdG9cbicKKyAgICAgICAgICAgICAgICAnICBzdXBwb3J0IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyAnCisgICAgICAgICAgICAgICAgJ3doaWxlIHBhcnNpbmc7XG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb2YgaWRlbnRpZmllcnMgaXMgYmFzZWQgb24gTkZLQy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0Egbm9uLW5vcm1hdGl2ZSBIVE1MIGZpbGUgbGlzdGluZyBhbGwgdmFsaWQgaWRlbnRpZmllciAnCisgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgZm9yXG4nCisgICAgICAgICAgICAgICAgJ1VuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmRjbC5ocGkudW5pLVxuJworICAgICAgICAgICAgICAgICdwb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdLZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgJworICAgICAgICAgICAgICAgICcqa2V5d29yZHMqIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgJworICAgICAgICAgICAgICAgICdUaGV5IG11c3RcbicKKyAgICAgICAgICAgICAgICAnYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4nCisgICAgICAgICAgICAgICAgJyAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbicKKyAgICAgICAgICAgICAgICAnICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICcgICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlICcKKyAgICAgICAgICAgICAgICAncmVzdWx0IG9mIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyAnCisgICAgICAgICAgICAgICAgJ25vdCBkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgICdjb252ZW50aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgICcgICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgICAgJ2xpYnJhcnkpLiAgQ3VycmVudFxuJworICAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiAnCisgICAgICAgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAgICAgICAnICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgJworICAgICAgICAgICAgICAgICd2ZXJzaW9ucyBvZlxuJworICAgICAgICAgICAgICAgICcgICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsICcKKyAgICAgICAgICAgICAgICAndGhhdCBkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgICcgICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSAnCisgICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXyoiXG4nCisgICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgICd3aXRoaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSAnCisgICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgICcgICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzICcKKyAgICAgICAgICAgICAgICAnb2YgYmFzZSBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAorICdpZic6ICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAnXG4nCisgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgJ1xuJworICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICdvbmVcbicKKyAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiAnCisgICAgICAgJ29wZXJhdGlvbnMqXG4nCisgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuJworICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG4nCisgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbicKKyAgICAgICAncHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAorICdpbWFnaW5hcnknOiAnXG4nCisgICAgICAgICAgICAgICdJbWFnaW5hcnkgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgJworICAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgJworICAgICAgICAgICAgICAnb2YgMC4wLlxuJworICAgICAgICAgICAgICAnQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICAnbnVtYmVyc1xuJworICAgICAgICAgICAgICAnYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgJworICAgICAgICAgICAgICAnY29tcGxleFxuJworICAgICAgICAgICAgICAnbnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyICcKKyAgICAgICAgICAgICAgJ3RvIGl0LFxuJworICAgICAgICAgICAgICAnZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKKyAnaW1wb3J0JzogJ1xuJworICAgICAgICAgICAnVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgJworICAgICAgICAgICAnWyJhcyIgbmFtZV0gKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiICcKKyAgICAgICAgICAgJ2lkZW50aWZpZXIgWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbicKKyAgICAgICAgICAgJyAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuJworICAgICAgICAgICAnICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gImZyb20iIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICAndHdvXG4nCisgICAgICAgICAgICdzdGVwczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZVxuJworICAgICAgICAgICAnICAgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgJworICAgICAgICAgICAnY29tbWFzKSB0aGVcbicKKyAgICAgICAgICAgJ3R3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgJworICAgICAgICAgICAndGhvdWdoXG4nCisgICAgICAgICAgICd0aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG4nCisgICAgICAgICAgICdkZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlICppbXBvcnQgJworICAgICAgICAgICAnc3lzdGVtKixcbicKKyAgICAgICAgICAgJ3doaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ2NhbiBiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbicKKyAgICAgICAgICAgJ2N1c3RvbWl6ZSB0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCAnCisgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgJ2luZGljYXRlIGVpdGhlciB0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCAnCisgICAgICAgICAgICdhblxuJworICAgICAgICAgICAnZXJyb3Igb2NjdXJyZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzICcKKyAgICAgICAgICAgJ2V4ZWN1dGlvblxuJworICAgICAgICAgICAib2YgdGhlIG1vZHVsZSdzIGNvZGUuXG4iCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnbWFkZVxuJworICAgICAgICAgICAnYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsIHRoZW4gdGhlIG5hbWUgJworICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICcgICJhcyIgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgJworICAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICAiICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlJ3MgbmFtZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgIgorICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICcgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJyAgbmFtZSBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzICcKKyAgICAgICAgICAgJ2JvdW5kIGluXG4nCisgICAgICAgICAgICcgIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyAgaW1wb3J0ZWQgbW9kdWxlIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJyAgcmF0aGVyIHRoYW4gZGlyZWN0bHlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJmcm9tIiBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgImZyb20iIGNsYXVzZSwgbG9hZGluZyBhbmRcbicKKyAgICAgICAgICAgJyAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzIuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlICJpbXBvcnQiICcKKyAgICAgICAgICAgJ2NsYXVzZXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0ICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgJworICAgICAgICAgICAndGhlblxuJworICAgICAgICAgICAnICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAnICAgICAgbmFtZXNwYWNlLCB1c2luZyB0aGUgbmFtZSBpbiB0aGUgImFzIiBjbGF1c2UgaWYgaXQgaXMgJworICAgICAgICAgICAncHJlc2VudCxcbicKKyAgICAgICAgICAgJyAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRXhhbXBsZXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgJworICAgICAgICAgICAnbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgJworICAgICAgICAgICAnYXMgZmJiXG4nCisgICAgICAgICAgICcgICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCAnCisgICAgICAgICAgICdhcyBiYXpcbicKKyAgICAgICAgICAgJyAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCAnCisgICAgICAgICAgICdhcyBhdHRyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoIlwnKlwnIiksIGFsbCAnCisgICAgICAgICAgICdwdWJsaWNcbicKKyAgICAgICAgICAgJ25hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdzY29wZSB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgJworICAgICAgICAgICAnY2hlY2tpbmcgdGhlXG4nCisgICAgICAgICAgICdtb2R1bGVcJ3MgbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkICJfX2FsbF9fIjsgaWYgZGVmaW5lZCwgJworICAgICAgICAgICAnaXQgbXVzdFxuJworICAgICAgICAgICAnYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5ICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ21vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiAiX19hbGxfXyIgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyAnCisgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgJ2FyZSByZXF1aXJlZCB0byBleGlzdC4gIElmICJfX2FsbF9fIiBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiAnCisgICAgICAgICAgICdwdWJsaWNcbicKKyAgICAgICAgICAgIm5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoICIKKyAgICAgICAgICAgJ2RvIG5vdFxuJworICAgICAgICAgICAnYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3RoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5ICcKKyAgICAgICAgICAgJ2V4cG9ydGluZ1xuJworICAgICAgICAgICAnaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgJworICAgICAgICAgICAnd2hpY2ggd2VyZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdhbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyAnCisgICAgICAgICAgICdjb250YWluZWRcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCAnCisgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgJ3RoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gJworICAgICAgICAgICAnQnlcbicKKyAgICAgICAgICAgJ3VzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICcKKyAgICAgICAgICAgJyJmcm9tIiB5b3VcbicKKyAgICAgICAgICAgJ2NhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgJworICAgICAgICAgICAnaGllcmFyY2h5XG4nCisgICAgICAgICAgICd3aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgJworICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAncGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgJworICAgICAgICAgICAnbWVhbnMgdXBcbicKKyAgICAgICAgICAgJ29uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91ICcKKyAgICAgICAgICAgJ2V4ZWN1dGVcbicKKyAgICAgICAgICAgJyJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdlbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyICcKKyAgICAgICAgICAgJ2ltcG9ydCBtb2QiXG4nCisgICAgICAgICAgICdmcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdzcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgJworICAgICAgICAgICAnMzI4KiouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdkZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Z1dHVyZSBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhICcKKyAgICAgICAgICAgJ3BhcnRpY3VsYXJcbicKKyAgICAgICAgICAgJ21vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlICcKKyAgICAgICAgICAgJ2ZlYXR1cmVcbicKKyAgICAgICAgICAgJ2JlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSAnCisgICAgICAgICAgICd2ZXJzaW9uc1xuJworICAgICAgICAgICAnb2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gICcKKyAgICAgICAgICAgJ0l0XG4nCisgICAgICAgICAgICdhbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbicKKyAgICAgICAgICAgJ3JlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdmZWF0dXJlIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlICcKKyAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgJ2xpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBjb21tZW50cyxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBibGFuayBsaW5lcywgYW5kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuJworICAgICAgICAgICAnImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4nCisgICAgICAgICAgICcibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50ICcKKyAgICAgICAgICAgJ2JlY2F1c2VcbicKKyAgICAgICAgICAgJ3RoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgJworICAgICAgICAgICAnY29tcGF0aWJpbGl0eS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0ICcKKyAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG4nCisgICAgICAgICAgICdpbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlICcKKyAgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAgJ3RoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgJworICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICdyZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdtb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxuJworICAgICAgICAgICAncnVudGltZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyAnCisgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICdiZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdjb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCAnCisgICAgICAgICAgICdzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICd0aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0ICcKKyAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgJ2JlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyAnCisgICAgICAgICAgICdmZWF0dXJlXG4nCisgICAgICAgICAgICdlbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICJUaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0J3MgYW4gb3JkaW5hcnkgaW1wb3J0ICIKKyAgICAgICAgICAgJ3N0YXRlbWVudCB3aXRoXG4nCisgICAgICAgICAgICdubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdDb2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV4ZWMoKSIgYW5kXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIiBjb250YWluaW5nIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnd2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkICcKKyAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICdmdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJyJjb21waWxlKCkiIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgJworICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICd0YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuJworICAgICAgICAgICAnaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAqLWkqIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0ICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3RvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCAnCisgICAgICAgICAgICdiZSBpblxuJworICAgICAgICAgICAnZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuJworICAgICAgICAgICAnZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2luJzogJ1xuJworICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG4nCisgICAgICAgJ29wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgImEgPCBiIDwgYyIgaGF2ZSB0aGVcbicKKyAgICAgICAnaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG4nCisgICAgICAgJ1xuJworICAgICAgICcgICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4nCisgICAgICAgJyAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbicKKyAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcbicKKyAgICAgICAnXG4nCisgICAgICAgJ0NvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0NvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCAieCA8IHkgPD0geiIgaXNcbicKKyAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxuJworICAgICAgICdvbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG4nCisgICAgICAgJ2ZvdW5kIHRvIGJlIGZhbHNlKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0Zvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgJworICAgICAgICcqb3AxKixcbicKKyAgICAgICAnKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiAnCisgICAgICAgJ3lcbicKKyAgICAgICAnb3BOIHoiIGlzIGVxdWl2YWxlbnQgdG8gImEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6IiwgJworICAgICAgICdleGNlcHRcbicKKyAgICAgICAndGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ05vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiAnCisgICAgICAgJ2JldHdlZW5cbicKKyAgICAgICAnKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sICJ4IDwgeSA+IHoiIGlzIHBlcmZlY3RseSBsZWdhbCAodGhvdWdoXG4nCisgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgb3BlcmF0b3JzICI8IiwgIj4iLCAiPT0iLCAiPj0iLCAiPD0iLCBhbmQgIiE9IiBjb21wYXJlIHRoZSAnCisgICAgICAgJ3ZhbHVlc1xuJworICAgICAgICdvZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS4gSWYgYm90aCAnCisgICAgICAgJ2FyZVxuJworICAgICAgICdudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgdGhlICI9PSIgJworICAgICAgICdhbmRcbicKKyAgICAgICAnIiE9IiBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMgdG8gYmVcbicKKyAgICAgICAndW5lcXVhbCwgd2hpbGUgdGhlICI8IiwgIj4iLCAiPj0iIGFuZCAiPD0iIG9wZXJhdG9ycyByYWlzZSBhXG4nCisgICAgICAgJyJUeXBlRXJyb3IiIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50IHR5cGVzIHRoYXQgZG8gbm90XG4nCisgICAgICAgJ2ltcGxlbWVudCB0aGVzZSBvcGVyYXRvcnMgZm9yIHRoZSBnaXZlbiBwYWlyIG9mIHR5cGVzLiAgWW91IGNhblxuJworICAgICAgICdjb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW4gdHlwZXMgYnlcbicKKyAgICAgICAnZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSAiX19ndF9fKCkiLCBkZXNjcmliZWQgaW4gJworICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgJypCYXNpYyBjdXN0b21pemF0aW9uKi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0NvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG4nCisgICAgICAgJ1xuJworICAgICAgICcqIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuJworICAgICAgICdcbicKKyAgICAgICAnKiBUaGUgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmUgc3BlY2lhbC4gJworICAgICAgICdUaGV5XG4nCisgICAgICAgJyAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCAieCBpcyB4IiBidXQgYXJlIG5vdCBlcXVhbCB0b1xuJworICAgICAgICcgIHRoZW1zZWx2ZXMsICJ4ICE9IHgiLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbicKKyAgICAgICAnICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gIkZhbHNlIi4gIEZvciBleGFtcGxlLCBib3RoICIzIDxcbicKKyAgICAgICAnICBmbG9hdChcJ05hTlwnKSIgYW5kICJmbG9hdChcJ05hTlwnKSA8IDMiIHdpbGwgcmV0dXJuICJGYWxzZSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICcqIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4nCisgICAgICAgJyAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuJworICAgICAgICdcbicKKyAgICAgICAnKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuJworICAgICAgICcgIGVxdWl2YWxlbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAib3JkKCkiKSBvZiAnCisgICAgICAgJ3RoZWlyXG4nCisgICAgICAgIiAgY2hhcmFjdGVycy4gWzNdIFN0cmluZyBhbmQgYnl0ZXMgb2JqZWN0IGNhbid0IGJlIGNvbXBhcmVkIVxuIgorICAgICAgICdcbicKKyAgICAgICAnKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uXG4nCisgICAgICAgJyAgb2YgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCAnCisgICAgICAgJ2VhY2hcbicKKyAgICAgICAnICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgJworICAgICAgICdzYW1lXG4nCisgICAgICAgJyAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG4nCisgICAgICAgJ1xuJworICAgICAgICcgIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuJworICAgICAgICcgIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCAiWzEsMix4XSA8PSBbMSwyLHldIiBoYXMgdGhlICcKKyAgICAgICAnc2FtZVxuJworICAgICAgICcgIHZhbHVlIGFzICJ4IDw9IHkiLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdCBleGlzdCwgJworICAgICAgICd0aGVcbicKKyAgICAgICAnICBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPCAnCisgICAgICAgJ1sxLDIsM10iKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJyogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgJworICAgICAgICd0aGVcbicKKyAgICAgICAnICBzYW1lICIoa2V5LCB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAiKFwnPFwnLCBcJzw9XCcsICcKKyAgICAgICAiJz49JyxcbiIKKyAgICAgICAnICBcJz5cJykiIHJhaXNlICJUeXBlRXJyb3IiLlxuJworICAgICAgICdcbicKKyAgICAgICAnKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCAnCisgICAgICAgJ2FuZFxuJworICAgICAgICcgIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICcKKyAgICAgICAnKHRoZVxuJworICAgICAgICcgIHR3byBzZXRzICJ7MSwyfSIgYW5kICJ7MiwzfSIgYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgb2Ygb25lXG4nCisgICAgICAgJyAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgJworICAgICAgICdub3RcbicKKyAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgJworICAgICAgICdvcmRlcmluZy5cbicKKyAgICAgICAnICBGb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbicKKyAgICAgICAnICByZXN1bHRzIGdpdmVuIGEgbGlzdCBvZiBzZXRzIGFzIGlucHV0cy5cbicKKyAgICAgICAnXG4nCisgICAgICAgJyogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleVxuJworICAgICAgICcgIGFyZSB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWRcbicKKyAgICAgICAnICBzbWFsbGVyIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0XG4nCisgICAgICAgJyAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0NvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlciAnCisgICAgICAgJ29mXG4nCisgICAgICAgJ3RoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdCAnCisgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAndHlwZXMgY2FuIGJlIGNvbXBhcmVkIHdpdGggb25lIGFub3RoZXIuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiAnCisgICAgICAgJ2lzXG4nCisgICAgICAgJ25vdCBzdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuJworICAgICAgICdldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICcieFxuJworICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG4nCisgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgJworICAgICAgICd0ZXN0c1xuJworICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG4nCisgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG4nCisgICAgICAgJ3kpIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogJworICAgICAgICdpc1xuJworICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICAnCisgICAgICAgJ0VtcHR5XG4nCisgICAgICAgJ3N0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciAnCisgICAgICAgJ3N0cmluZyxcbicKKyAgICAgICAnc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgJworICAgICAgICcieFxuJworICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0ICcKKyAgICAgICAnZG9cbicKKyAgICAgICAnZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09ICcKKyAgICAgICAneiJcbicKKyAgICAgICAnaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuJworICAgICAgICdkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG4nCisgICAgICAgJ1xuJworICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzICcKKyAgICAgICAnZGVmaW5lc1xuJworICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG4nCisgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuJworICAgICAgICdpbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG4nCisgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuJworICAgICAgICciaW4iLlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4IGlzIHkiICcKKyAgICAgICAnaXNcbicKKyAgICAgICAndHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG4nCisgICAgICAgJ3lpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAorICdpbnRlZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFsc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciAnCisgICAgICAgICAgICAgJ3wgYmluaW50ZWdlclxuJworICAgICAgICAgICAgICcgICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbicKKyAgICAgICAgICAgICAnICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuJworICAgICAgICAgICAgICcgICBkaWdpdCAgICAgICAgICA6Oj0gIjAiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4nCisgICAgICAgICAgICAgJyAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4nCisgICAgICAgICAgICAgJyAgIGJpbmludGVnZXIgICAgIDo6PSAiMCIgKCJiIiB8ICJCIikgYmluZGlnaXQrXG4nCisgICAgICAgICAgICAgJyAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbicKKyAgICAgICAgICAgICAnICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4nCisgICAgICAgICAgICAgJyAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgJworICAgICAgICAgICAgICdmcm9tIHdoYXRcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90ICcKKyAgICAgICAgICAgICAnYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCAnCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICd1c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAnCisgICAgICAgICAgICAgJzBiMTAwMTEwMTExXG4nCisgICAgICAgICAgICAgJyAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAnCisgICAgICAgICAgICAgJzB4ZGVhZGJlZWZcbicsCisgJ2xhbWJkYSc6ICdcbicKKyAgICAgICAgICAgJ0xhbWJkYXNcbicKKyAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICcgICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25fbm9jb25kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0xhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvICcKKyAgICAgICAgICAgJ2NyZWF0ZVxuJworICAgICAgICAgICAnYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb24iXG4nCisgICAgICAgICAgICd5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgJworICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgJ29iamVjdCBkZWZpbmVkIHdpdGhcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4nCisgICAgICAgICAgICcgICAgICAgcmV0dXJuIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnU2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgJworICAgICAgICAgICAnbGlzdHMuXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90ICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3N0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAorICdsaXN0cyc6ICdcbicKKyAgICAgICAgICAnTGlzdCBkaXNwbGF5c1xuJworICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3NxdWFyZSBicmFja2V0czpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtleHByZXNzaW9uX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nICcKKyAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgJ2J5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhICcKKyAgICAgICAgICAnY29tbWEtXG4nCisgICAgICAgICAgJ3NlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgZWxlbWVudHMgYXJlICcKKyAgICAgICAgICAnZXZhbHVhdGVkXG4nCisgICAgICAgICAgJ2Zyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgJworICAgICAgICAgICdvcmRlci5cbicKKyAgICAgICAgICAnV2hlbiBhIGNvbXByZWhlbnNpb24gaXMgc3VwcGxpZWQsIHRoZSBsaXN0IGlzIGNvbnN0cnVjdGVkIGZyb20gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAorICduYW1pbmcnOiAnXG4nCisgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciAnCisgICAgICAgICAgICdhZnRlclxuJworICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gICcKKyAgICAgICAgICAgJ1RoaXMgZm9ybVxuJworICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayAnCisgICAgICAgICAgICdkZWZpbmVkIGJ5IGFcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICdhdCB0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uICcKKyAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gICcKKyAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCAnCisgICAgICAgICAgICd3aGVyZSB0aGVcbicKKyAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssICcKKyAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCAnCisgICAgICAgICAgICd3aXRoaW4gYVxuJworICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgJworICAgICAgICAgICAnYW55d2hlcmVcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSAnCisgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgJworICAgICAgICAgICAnc2VhcmNoZWQuICBUaGVcbicKKyAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbicKKyAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCAnCisgICAgICAgICAgICd0aW1lIGFcbicKKyAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAnZGljdGlvbmFyeSBvZlxuJworICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzICcKKyAgICAgICAgICAgJ2xpbWl0ZWQgdG9cbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiAnCisgICAgICAgICAgICdtZXRob2RzIC0tXG4nCisgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgJworICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlICcKKyAgICAgICAgICAgJ2xhdHRlciBjYXNlXG4nCisgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuICcKKyAgICAgICAgICAgJ2luIGFueVxuJworICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbicKKyAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuICcKKyAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbm9ubG9jYWwnOiAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvICcKKyAgICAgICAgICAgICAncmVmZXIgdG9cbicKKyAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlICcKKyAgICAgICAgICAgICAnZXhjbHVkaW5nXG4nCisgICAgICAgICAgICAgJ2dsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yICcKKyAgICAgICAgICAgICAnYmluZGluZyBpc1xuJworICAgICAgICAgICAgICd0byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG4nCisgICAgICAgICAgICAgJ2VuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgJworICAgICAgICAgICAgICdzY29wZVxuJworICAgICAgICAgICAgICdiZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuJworICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAgICAnY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggJworICAgICAgICAgICAgICdwcmUtXG4nCisgICAgICAgICAgICAgJ2V4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQuXG4nLAorICdudW1iZXJzJzogJ1xuJworICAgICAgICAgICAgJ051bWVyaWMgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyAnCisgICAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAgICdudW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyhjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbicKKyAgICAgICAgICAgICdpbWFnaW5hcnkgbnVtYmVyKS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgJworICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICdpcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAnCisgICAgICAgICAgICAnXCciLSJcJyBhbmQgdGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCAiMSIuXG4nLAorICdudW1lcmljLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgJ01ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAnc3VwcG9ydGVkIGJ5IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2UgJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UsIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiAnCisgICAgICAgICAgICAgICAgICAnaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCB0byBhY2NlcHRcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdyZWZsZWN0ZWQgKHN3YXBwZWQpXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kIGRvZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZHMgYXJlIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gInggLVxuJworICAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlICIKKyAgICAgICAgICAgICAgICAgICdyZWZsZWN0ZWQgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciAiCisgICAgICAgICAgICAgICAgICAnYWxsb3dzIHN1YmNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAnCisgICAgICAgICAgICAgICAgICAnIiU9IiwgIioqPSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICdhdHRlbXB0IHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm4gdGhlIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAgJyAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiAnCisgICAgICAgICAgICAgICAgICAnYSBzcGVjaWZpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzICcKKyAgICAgICAgICAgICAgICAgICdiYWNrIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ29mIGEgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAgJyJ4ID1cbicKKyAgICAgICAgICAgICAgICAgICcgICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICcieS5fX3JhZGRfXyh4KSIgYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiAnCisgICAgICAgICAgICAgICAgICAnY2VydGFpblxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gJworICAgICAgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICAiICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbJ2l0ZW0nXSByYWlzZSBhbiAiCisgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCAnCisgICAgICAgICAgICAgICAgICAnb2YgdGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnKCItIiwgIisiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgICciY29tcGxleCgpIiwgImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCisgJ29iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICIqT2JqZWN0cyogYXJlIFB5dGhvbidzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSAiCisgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuICcKKyAgICAgICAgICAgICdvYmplY3RzLiAoSW5cbicKKyAgICAgICAgICAgICJhIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm4ncyBtb2RlbCBvZiBhICIKKyAgICAgICAgICAgICcic3RvcmVkXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyppZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgJworICAgICAgICAgICAgJ3RoaW5rIG9mIGl0XG4nCisgICAgICAgICAgICAnYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciAnCisgICAgICAgICAgICAnY29tcGFyZXMgdGhlXG4nCisgICAgICAgICAgICAnaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiAnCisgICAgICAgICAgICAnaW50ZWdlclxuJworICAgICAgICAgICAgJ3JlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgJworICAgICAgICAgICAgJ21lbW9yeVxuJworICAgICAgICAgICAgJ2FkZHJlc3Mgd2hlcmUgIngiIGlzIHN0b3JlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJBbiBvYmplY3QncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0ICIKKyAgICAgICAgICAgICdzdXBwb3J0c1xuJworICAgICAgICAgICAgJyhlLmcuLCAiZG9lcyBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlICcKKyAgICAgICAgICAgICd2YWx1ZXNcbicKKyAgICAgICAgICAgICdmb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgInR5cGUoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiAnCisgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICd0eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiAnCisgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICcqdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSAnCisgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAnY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyAnCisgICAgICAgICAgICAndW5jaGFuZ2VhYmxlXG4nCisgICAgICAgICAgICAnb25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbicKKyAgICAgICAgICAgICdpbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgJworICAgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAgICJvYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXIncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyICIKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdjb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gJworICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAnb2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgJworICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgJ3N0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgJworICAgICAgICAgICAgJ3N1YnRsZS4pXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgIgorICAgICAgICAgICAgJ2luc3RhbmNlLFxuJworICAgICAgICAgICAgJ251bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgJworICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgJ2xpc3RzIGFyZSBtdXRhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ09iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgJworICAgICAgICAgICAgJ2JlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAnYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyICcKKyAgICAgICAgICAgICctLS0gaXQgaXNcbicKKyAgICAgICAgICAgICdhIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbicKKyAgICAgICAgICAgICdpbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgJworICAgICAgICAgICAgJ3N0aWxsXG4nCisgICAgICAgICAgICAncmVhY2hhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhICcKKyAgICAgICAgICAgICdyZWZlcmVuY2UtXG4nCisgICAgICAgICAgICAnY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5ICcKKyAgICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAgICdnYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb250YWluaW5nXG4nCisgICAgICAgICAgICAnY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgJworICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgJ2luZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiAnCisgICAgICAgICAgICAnT3RoZXJcbicKKyAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCAnCisgICAgICAgICAgICAnZGVwZW5kXG4nCisgICAgICAgICAgICAnb24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlIChzb1xuJworICAgICAgICAgICAgJ3lvdSBzaG91bGQgYWx3YXlzIGNsb3NlIGZpbGVzIGV4cGxpY2l0bHkpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvbidzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG4iCisgICAgICAgICAgICAnZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgJworICAgICAgICAgICAgJ2NvbGxlY3RhYmxlLlxuJworICAgICAgICAgICAgJ0Fsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZXhjZXB0IlwnXG4nCisgICAgICAgICAgICAnc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzICcKKyAgICAgICAgICAgICdvcGVuXG4nCisgICAgICAgICAgICAnZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlICcKKyAgICAgICAgICAgICdmcmVlZFxuJworICAgICAgICAgICAgJ3doZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgJworICAgICAgICAgICAgJ2NvbGxlY3Rpb24gaXNcbicKKyAgICAgICAgICAgICdub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgJworICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgJ3JlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gJworICAgICAgICAgICAgJ1Byb2dyYW1zXG4nCisgICAgICAgICAgICAnYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgJworICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCAnCisgICAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICAgJ2NvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICcqY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG4nCisgICAgICAgICAgICAiZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXIncyB2YWx1ZS4gICIKKyAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgJ21vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlICcKKyAgICAgICAgICAgICdpbXBseSB0aGVcbicKKyAgICAgICAgICAgICd2YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsICcKKyAgICAgICAgICAgICd3aGVuIHdlXG4nCisgICAgICAgICAgICAndGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyAnCisgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAnaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gJworICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgJ2NvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgJworICAgICAgICAgICAgJ29iamVjdCwgaXRzXG4nCisgICAgICAgICAgICAndmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuJworICAgICAgICAgICAgJ2ltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciAnCisgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAndHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiAnCisgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgJ3JlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsICcKKyAgICAgICAgICAgICd3aGlsZVxuJworICAgICAgICAgICAgJ2ZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiAnCisgICAgICAgICAgICAnPSAxIixcbicKKyAgICAgICAgICAgICciYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgJworICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAnb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgImMgPSBbXTsgZCA9ICcKKyAgICAgICAgICAgICdbXSIsICJjIlxuJworICAgICAgICAgICAgJ2FuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCAnCisgICAgICAgICAgICAnbmV3bHlcbicKKyAgICAgICAgICAgICdjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lICcKKyAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICd0byBib3RoICJjIiBhbmQgImQiLilcbicsCisgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3IgcHJlY2VkZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2luIFB5dGhvbiwgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlIChtb3N0XG4nCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UuICBVbmxlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9ycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudGlhdGlvbiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICdncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMsIGFsbCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmUgYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICI+PSIsICIhPSIsICI9PSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJeIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICImIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICI8PCIsICI+PiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1NoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIrIiwgIi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ011bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb24sIHJlbWFpbmRlciBbNV0gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImF3YWl0IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQXdhaXQgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IHZhbHVlLi4ufSIsICJ7ZXhwcmVzc2lvbnMuLi59IiAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1sxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZmxvYXRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICAnCisgICAgICAgICAgICAgICAgICAgICAnRm9yIGV4YW1wbGUsIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdJRUVFIDc1NCBkb3VibGUtXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgJworICAgICAgICAgICAgICAgICAgICAgJzFlMTAwIiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2lnbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGlzIGNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1syXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAieSwgaXQnc1xuIgorICAgICAgICAgICAgICAgICAgICAgJyAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIih4LXgleSkvL3kiIGR1ZSB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGF0dGVyIHJlc3VsdCwgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlICcKKyAgICAgICAgICAgICAgICAgICAgICd5IiBiZSB2ZXJ5IGNsb3NlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHRvICJ4Ii5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbM10gV2hpbGUgY29tcGFyaXNvbnMgYmV0d2VlbiBzdHJpbmdzIG1ha2Ugc2Vuc2UgYXQgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBieXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGxldmVsLCB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gICcKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgZXhhbXBsZSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHN0cmluZ3MgIiJcXHUwMEM3IiIgYW5kICIiXFx1MDA0M1xcdTAzMjciIiBjb21wYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnRseSwgZXZlblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgKExBVElOXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBKS4gIFRvIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgaW4gYSBodW1hblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICByZWNvZ25pemFibGUgd2F5LCBjb21wYXJlIHVzaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlICcKKyAgICAgICAgICAgICAgICAgICAgICdzZWVtaW5nbHkgdW51c3VhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCAnCisgICAgICAgICAgICAgICAgICAgICAnbGlrZSB0aG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc3RhbnRzLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRpbmc7IHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHByZWNlZGVuY2UgYXBwbGllcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNl0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICcKKyAgICAgICAgICAgICAgICAgICAgICciMioqLTEiIGlzICIwLjUiLlxuJywKKyAncGFzcyc6ICdcbicKKyAgICAgICAgICdUaGUgInBhc3MiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgcGFzc19zdG10IDo6PSAicGFzcyJcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcicGFzcyIgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyAnCisgICAgICAgICAnaGFwcGVucy5cbicKKyAgICAgICAgICdJdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG4nCisgICAgICAgICAnc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgY2xhc3MgQzogcGFzcyAgICAgICAjIGEgY2xhc3Mgd2l0aCBubyBtZXRob2RzICh5ZXQpXG4nLAorICdwb3dlcic6ICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiAnCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdsZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnc3ludGF4IGlzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcG93ZXIgOjo9IGF3YWl0IFsiKioiIHVfZXhwcl1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgJworICAgICAgICAgICdvcGVyYXRvcnMsIHRoZVxuJworICAgICAgICAgICdvcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgJworICAgICAgICAgICdjb25zdHJhaW5cbicKKyAgICAgICAgICAndGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnInBvdygpIlxuJworICAgICAgICAgICdmdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICdyYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCAnCisgICAgICAgICAgJ3R5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyAnCisgICAgICAgICAgJ3VubGVzc1xuJworICAgICAgICAgICd0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG4nCisgICAgICAgICAgJ2NvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAnIjEwKioyIiByZXR1cm5zICIxMDAiLCBidXQgIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdSYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICcKKyAgICAgICAgICAnIlplcm9EaXZpc2lvbkVycm9yIi5cbicKKyAgICAgICAgICAnUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXIgcmVzdWx0cyBpbiBhICcKKyAgICAgICAgICAnImNvbXBsZXgiXG4nCisgICAgICAgICAgJ251bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGEgIlZhbHVlRXJyb3IiLilcbicsCisgJ3JhaXNlJzogJ1xuJworICAgICAgICAgICdUaGUgInJhaXNlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBubyBleHByZXNzaW9ucyBhcmUgcHJlc2VudCwgInJhaXNlIiByZS1yYWlzZXMgdGhlIGxhc3QgJworICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAndGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgJworICAgICAgICAgICdpbmRpY2F0aW5nXG4nCisgICAgICAgICAgJ3RoYXQgdGhpcyBpcyBhbiBlcnJvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ090aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ29iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAnIkJhc2VFeGNlcHRpb24iLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICdvYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vICcKKyAgICAgICAgICAnYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2UncyBjbGFzcywgIgorICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSB0cmFjZWJhY2sgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGFuICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ2lzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlICJfX3RyYWNlYmFja19fIiBhdHRyaWJ1dGUsICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duICcKKyAgICAgICAgICAndHJhY2ViYWNrIGluXG4nCisgICAgICAgICAgJ29uZSBzdGVwIHVzaW5nIHRoZSAid2l0aF90cmFjZWJhY2soKSIgZXhjZXB0aW9uIG1ldGhvZCAod2hpY2ggJworICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgJ3RoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHMgJworICAgICAgICAgICdhcmd1bWVudCksXG4nCisgICAgICAgICAgJ2xpa2Ugc286XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICByYWlzZSBFeGNlcHRpb24oImZvbyBvY2N1cnJlZCIpLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFja29iailcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSAiZnJvbSIgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZSAnCisgICAgICAgICAgJ3NlY29uZFxuJworICAgICAgICAgICcqZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggJworICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgJ3RoZW4gYmUgYXR0YWNoZWQgdG8gdGhlIHJhaXNlZCBleGNlcHRpb24gYXMgdGhlICJfX2NhdXNlX18iICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyh3aGljaCBpcyB3cml0YWJsZSkuICBJZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCwgJworICAgICAgICAgICdib3RoXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IHRyeTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCgxIC8gMClcbicKKyAgICAgICAgICAnICAgLi4uIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOlxuJworICAgICAgICAgICcgICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nICcKKyAgICAgICAgICAnZXhjZXB0aW9uOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgJworICAgICAgICAgICdpbnNpZGVcbicKKyAgICAgICAgICAnYW4gZXhjZXB0aW9uIGhhbmRsZXIgb3IgYSAiZmluYWxseSIgY2xhdXNlOiB0aGUgcHJldmlvdXMgJworICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAndGhlbiBhdHRhY2hlZCBhcyB0aGUgbmV3IGV4Y2VwdGlvblwncyAiX19jb250ZXh0X18iIGF0dHJpYnV0ZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiB0cnk6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4nCisgICAgICAgICAgJyAgIC4uLiBleGNlcHQ6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gJworICAgICAgICAgICdvY2N1cnJlZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAgICcqRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICcqVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKKyAncmV0dXJuJzogJ1xuJworICAgICAgICAgICAnVGhlICJyZXR1cm4iIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICByZXR1cm5fc3RtdCA6Oj0gInJldHVybiIgW2V4cHJlc3Npb25fbGlzdF1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnInJldHVybiIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvbiAnCisgICAgICAgICAgICdkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlICJOb25lIiAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3Vic3RpdHV0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGV4cHJlc3Npb24gJworICAgICAgICAgICAnbGlzdCAob3JcbicKKyAgICAgICAgICAgJyJOb25lIikgYXMgcmV0dXJuIHZhbHVlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuICJyZXR1cm4iIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICdjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSAicmV0dXJuIiBzdGF0ZW1lbnQgaW5kaWNhdGVzIHRoYXQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSAiU3RvcEl0ZXJhdGlvbiIgdG8gYmUgcmFpc2VkLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ3JldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG4nCisgICAgICAgICAgICciU3RvcEl0ZXJhdGlvbiIgYW5kIGJlY29tZXMgdGhlICJTdG9wSXRlcmF0aW9uLnZhbHVlIiAnCisgICAgICAgICAgICdhdHRyaWJ1dGUuXG4nLAorICdzZXF1ZW5jZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yICcKKyAgICAgICAgICAgICAgICAgICAndHVwbGVzKSBvciBtYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcobGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzICcKKyAgICAgICAgICAgICAgICAgICAnYXMgd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBvciB0b1xuJworICAgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwICcKKyAgICAgICAgICAgICAgICAgICAnPD0gayA8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICAgJypOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgJworICAgICAgICAgICAgICAgICAgICd3aGljaCBkZWZpbmUgYVxuJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgJworICAgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJyJ1cGRhdGUoKSJcbicKKyAgICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgIgorICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgJworICAgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAnInNvcnQoKSIsIGxpa2UgUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICdhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gJworICAgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICciX19yYWRkX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgICAgICAgICAgJ2JlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9ycy4gIEl0IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJpbiIgb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICAgJ2ZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7ICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHNlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyICcKKyAgICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgICAndG8gYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgICAnZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCAnCisgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgICciPj0iIDAuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyICcKKyAgICAgICAgICAgICAgICAgICAncmVxdWlyZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlY3RuZXNzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAgJ3RocmVlIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgQSBjYWxsIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgYVsxOjJdID0gYlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkICcKKyAgICAgICAgICAgICAgICAgICAnaW4gd2l0aCAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuICBOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgJworICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3Mgd2lzaGVzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLiBJZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnKGFmdGVyIGFueVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICcKKyAgICAgICAgICAgICAgICAgICAnIkluZGV4RXJyb3IiIHNob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnZW5kIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJyJzZWxmW2tleV0iIGZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lICcKKyAgICAgICAgICAgICAgICAgICAnbm90ZSBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgJworICAgICAgICAgICAgICAgICAgICdvciBpZiBuZXcga2V5c1xuJworICAgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgJworICAgICAgICAgICAgICAgICAgICdpZiBlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9ucyBzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIGEgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnY2FuIGl0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAgICdpdCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7ICcKKyAgICAgICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ29uIGl0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvICcKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gJworICAgICAgICAgICAgICAgICAgICdyZXZlcnNlIG9yZGVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3RvY29sICgiX19sZW5fXygpIlxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHByb3RvY29sXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlZCBieVxuJworICAgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoImluIiBhbmQgIm5vdCBpbiIpIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICAnCisgICAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGNvbnRhaW5lclxuJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgJworICAgICAgICAgICAgICAgICAgICdtb3JlIGVmZmljaWVudFxuJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAgICdiZSBhIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgJworICAgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuIHRydWVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSB2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ21lbWJlcnNoaXAgdGVzdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhICJfX2l0ZXJfXygpIiwgdGhlbiB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyAnCisgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAorICdzaGlmdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnU2hpZnRpbmcgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlICcKKyAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICdvcGVyYXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVzZSBvcGVyYXRvcnMgYWNjZXB0IGludGVnZXJzIGFzIGFyZ3VtZW50cy4gIFRoZXkgc2hpZnQgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3NlY29uZCBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgcmlnaHQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBmbG9vciBkaXZpc2lvbiBieSAnCisgICAgICAgICAgICAgJyJwb3coMixuKSIuXG4nCisgICAgICAgICAgICAgJ0EgbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kICcKKyAgICAgICAgICAgICAnb3BlcmFuZCBpc1xuJworICAgICAgICAgICAgICcgIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgYW4gIk92ZXJmbG93RXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ3JhaXNlZC5cbicsCisgJ3NsaWNpbmdzJzogJ1xuJworICAgICAgICAgICAgICdTbGljaW5nc1xuJworICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJ3N0cmluZywgdHVwbGUgb3IgbGlzdCkuICBTbGljaW5ncyBtYXkgYmUgdXNlZCBhcyBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgJ29yIGFzXG4nCisgICAgICAgICAgICAgJ3RhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSAnCisgICAgICAgICAgICAgJ3NsaWNpbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlX2xpc3QgICA6Oj0gc2xpY2VfaXRlbSAoIiwiIHNsaWNlX2l0ZW0pKiBbIiwiXVxuJworICAgICAgICAgICAgICcgICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbicKKyAgICAgICAgICAgICAnICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiICcKKyAgICAgICAgICAgICAnW3N0cmlkZV0gXVxuJworICAgICAgICAgICAgICcgICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyAgIHN0cmlkZSAgICAgICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgJworICAgICAgICAgICAgICdsb29rcyBsaWtlXG4nCisgICAgICAgICAgICAgJ2FuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgJworICAgICAgICAgICAgICdzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAnY2FuIGJlIGludGVycHJldGVkIGFzIGEgc2xpY2luZy4gIFJhdGhlciB0aGFuIGZ1cnRoZXIgJworICAgICAgICAgICAgICdjb21wbGljYXRpbmcgdGhlXG4nCisgICAgICAgICAgICAgJ3N5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2VtYW50aWNzIGZvciBhIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgcHJpbWFyeSBpcyAnCisgICAgICAgICAgICAgJ2luZGV4ZWRcbicKKyAgICAgICAgICAgICAnKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAna2V5IHRoYXQgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmICcKKyAgICAgICAgICAgICAndGhlIHNsaWNlXG4nCisgICAgICAgICAgICAgJ2xpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZVxuJworICAgICAgICAgICAgICdjb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiAnCisgICAgICAgICAgICAgJ3RoZSBsb25lXG4nCisgICAgICAgICAgICAgJ3NsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0aGF0IGV4cHJlc3Npb24uICBUaGUgY29udmVyc2lvbiBvZiBhIHByb3BlciAnCisgICAgICAgICAgICAgJ3NsaWNlIGlzIGFcbicKKyAgICAgICAgICAgICAnc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgJworICAgICAgICAgICAgICd3aG9zZVxuJworICAgICAgICAgICAgICcic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbicKKyAgICAgICAgICAgICAncmVzcGVjdGl2ZWx5LCBzdWJzdGl0dXRpbmcgIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBBdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgICd0byBzZXZlcmFsXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgJworICAgICAgICAgICAgICAgICAnbm90IHJlcG9ydGVkXG4nCisgICAgICAgICAgICAgICAgICdieSB0aGUgImRpcigpIiBidWlsdC1pbiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGljdF9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLl9fY2xhc3NfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2Jhc2VzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19uYW1lX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fcXVhbG5hbWVfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX21yb19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdjb25zaWRlcmVkIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLm1ybygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgJworICAgICAgICAgICAgICAgICAnY2FsbGVkIGF0IGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgJworICAgICAgICAgICAgICAgICAnaW1tZWRpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFs8Y2xhc3MgJ2Jvb2wnPl1cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1sxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAnZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKCpCYXNpYyAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pemF0aW9uKikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1syXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCAiWzEsIDJdIiBpcyBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ2VxdWFsIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAgIlsxLjAsIDIuMF0iLCBhbmQgc2ltaWxhcmx5IGZvciB0dXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIlszXSBUaGV5IG11c3QgaGF2ZSBzaW5jZSB0aGUgcGFyc2VyIGNhbid0IHRlbGwgdGhlIHR5cGUgb2YgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgb3BlcmFuZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1s0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsICcKKyAgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZSksXG4nCisgICAgICAgICAgICAgICAgICcgICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSAnCisgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBuYW1lc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkICcKKyAgICAgICAgICAgICAgICAgJ2J5IHNwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ3N5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICdzbGljaW5nKSBieVxuJworICAgICAgICAgICAgICAgICAiZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uJ3MgIgorICAgICAgICAgICAgICAgICAnYXBwcm9hY2ggdG9cbicKKyAgICAgICAgICAgICAgICAgJypvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ293biBiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICAnd2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICdhIG1ldGhvZCBuYW1lZCAiX19nZXRpdGVtX18oKSIsIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgJworICAgICAgICAgICAgICAgICAndGhpcyBjbGFzcyxcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW4gInhbaV0iIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICcidHlwZSh4KS5fX2dldGl0ZW1fXyh4LCBpKSIuXG4nCisgICAgICAgICAgICAgICAgICdFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdyYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnKHR5cGljYWxseVxuJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBvciAiVHlwZUVycm9yIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgJworICAgICAgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnZGVncmVlIHRoYXQgaXRcbicKKyAgICAgICAgICAgICAgICAgJ21ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJ3NvbWVcbicKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHMsIGJ1dFxuJworICAgICAgICAgICAgICAgICAnZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGlzIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgJworICAgICAgICAgICAgICAgICAnTW9kZWwuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3ICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGFuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosICcKKyAgICAgICAgICAgICAgICAgJ3RoZW4gdGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgJworICAgICAgICAgICAgICAgICAnIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICdhdCBhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgJworICAgICAgICAgICAgICAgICAnemVyby4gIFNvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICdzdGFjayBmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciAnCisgICAgICAgICAgICAgICAgICdhIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkICcKKyAgICAgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICAnCisgICAgICAgICAgICAgICAgICdUaGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgJworICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlICcKKyAgICAgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICd0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gJworICAgICAgICAgICAgICAgICAnInN5cy5sYXN0X3RyYWNlYmFjayIuIENpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkICcKKyAgICAgICAgICAgICAgICAgJ3VwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdvY2N1ciBkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBpblxuJworICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Byb2Nlc3Mgb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggJworICAgICAgICAgICAgICAgICAndmVyc2lvbiAxLjUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzICcKKyAgICAgICAgICAgICAgICAgJ2V4aXN0LCB0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgJworICAgICAgICAgICAgICAgICAncG9zc2libGUsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2JlIHVzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiAnCisgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gJworICAgICAgICAgICAgICAgICAnImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAgJ2EgKnN0cmluZypcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICd0aGVyZSBpcyBub1xuJworICAgICAgICAgICAgICAgICAnICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAnICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAnIm9iamVjdCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2J5dGVzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb24gb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSAnCisgICAgICAgICAgICAgICAgICdleHRlbnNpb24sIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgJworICAgICAgICAgICAgICAgICAnImZvcm1hdHRlZCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgJworICAgICAgICAgICAgICAgICAnb3B0aW9uc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGlzIHVwIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAndHlwZXMsIG9yIHVzZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgJworICAgICAgICAgICAgICAgICAnIm9iamVjdCIgaXRzZWxmXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICduYW1lcyBpcyBhc1xuJworICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgJyJ4Ll9fbGVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICcKKyAgICAgICAgICAgICAgICAgJyJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICcgICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIlxuJworICAgICAgICAgICAgICAgICAnICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGZvciBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiBhbnkgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsICcKKyAgICAgICAgICAgICAgICAgJ2NhbGwgImJvb2woKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ2ZhbHNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICdpbnZlcnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vICcKKyAgICAgICAgICAgICAgICAgJ290aGVyIGltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNhbGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAnICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICdub3RlcyBvblxuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgJyh0byBiZSB1c2VkXG4nCisgICAgICAgICAgICAgICAgICcgICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdidXQgdGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSAnCisgICAgICAgICAgICAgICAgICJlYWNoIG90aGVyJ3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgJworICAgICAgICAgICAgICAgICAncmVmbGVjdGlvbixcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gJworICAgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZCdzICIKKyAgICAgICAgICAgICAgICAgJ3R5cGUgaXMgYVxuJworICAgICAgICAgICAgICAgICAiICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmQncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCAnCisgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICBsZWZ0IG9wZXJhbmQncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCAiCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2luZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2hhc2hfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgJ29uIG1lbWJlcnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAnImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggJworICAgICAgICAgICAgICAgICAndmFsdWU7IGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSAnCisgICAgICAgICAgICAgICAgICdvcikgdGhlIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSAnCisgICAgICAgICAgICAgICAgICdhIHBhcnQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgJworICAgICAgICAgICAgICAgICAnIlB5X3NzaXplX3QiLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdFxuJworICAgICAgICAgICAgICAgICAnICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyb3BlcmF0ZSBvbiBidWlsZHNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gJworICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggJworICAgICAgICAgICAgICAgICAnInB5dGhvbiAtY1xuJworICAgICAgICAgICAgICAgICAnICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAnYXMgaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cyBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaGFzaFxuIgorICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpICcKKyAgICAgICAgICAgICAgICAgJz09IGhhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAnCisgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICcgICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSAnCisgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCAnCisgICAgICAgICAgICAgICAgICdhIGRlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdleHBsb2l0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAnICAgICBTZWUgJworICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyICcKKyAgICAgICAgICAgICAgICAgJ21hZGUgZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgJworICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluIG9wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgJworICAgICAgICAgICAgICAgICAndGhlIG9iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgJworICAgICAgICAgICAgICAgICAnaXMgaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsICcKKyAgICAgICAgICAgICAgICAgJ21lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgJworICAgICAgICAgICAgICAgICAnYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgJworICAgICAgICAgICAgICAgICAnY29udHJvbCBieSBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSAoYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnZ2V0IHRvdGFsXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSAnCisgICAgICAgICAgICAgICAgICdyZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgJworICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAnICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCAnCisgICAgICAgICAgICAgICAgICdvYmoubmFtZSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnbXVzdCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAnbGlzdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvcnRzIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgJworICAgICAgICAgICAgICAgICAnYXBwZWFycyBpbiBhblxuJworICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgIm93bmVyJ3MgY2xhc3NcbiIKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgJworICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2hvc2UgbmFtZSBpc1xuJworICAgICAgICAgICAgICAgICAndGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICcKKyAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG93bmVyIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciaW5zcGVjdCIgbW9kdWxlIGFzXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICcoc2V0dGluZyB0aGlzXG4nCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJ2R5bmFtaWMgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2dpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBmb3JcbicKKyAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICciYmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuICcKKyAgICAgICAgICAgICAgICAgJ2J5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJ2luIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBpdFxuJworICAgICAgICAgICAgICAgICAnaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCAnCisgICAgICAgICAgICAgICAgICdvciBkZWxldGVcbicKKyAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgJyJhLngiIGhhcyBhXG4nCisgICAgICAgICAgICAgICAgICdsb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4nCisgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIGFuZFxuJworICAgICAgICAgICAgICAgICAnaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICcKKyAgICAgICAgICAgICAgICAgJyJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgJworICAgICAgICAgICAgICAgICAnZGlyZWN0bHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luc3RhbmNlIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCAnCisgICAgICAgICAgICAgICAgICdpbnRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDbGFzcyBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NhbGw6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgICAgJyJzdXBlcihCLFxuJworICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyAiQSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uIGRlcGVuZHNcbicKKyAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnY2FuIGRlZmluZVxuJworICAgICAgICAgICAgICAgICAnYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dpbGwgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgInRoZSBvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fc2V0X18oKSIgYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnbmVpdGhlciwgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSAnCisgICAgICAgICAgICAgICAgICdib3RoXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgJ2hhdmUganVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuICBJblxuJworICAgICAgICAgICAgICAgICAnY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIGNhblxuJworICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB0b1xuJworICAgICAgICAgICAgICAgICAnYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICdBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSAnCisgICAgICAgICAgICAgICAgICdwcm9wZXJ0eS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdfX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICdzdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3ICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nIGxhcmdlXG4nCisgICAgICAgICAgICAgICAgICdudW1iZXJzIG9mIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnb2YgaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICd0byBob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsICcKKyAgICAgICAgICAgICAgICAgJ29yIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yICcKKyAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICd+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdhc3NpZ25lZCBuZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAnICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIi4gSWZcbicKKyAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICdhZGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICdhZGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgJworICAgICAgICAgICAgICAgICAnY3JlYXRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCAnCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZSBuYW1lLiAgQXNcbicKKyAgICAgICAgICAgICAgICAgJyAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlICcKKyAgICAgICAgICAgICAgICAgJ2EgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiAnCisgICAgICAgICAgICAgICAgICd0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICdhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouICcKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAnbWVhbmluZyBtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgICAgICAgICdleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kICcKKyAgICAgICAgICAgICAgICAgJ2xvY2FsbHkgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICdyZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXNlZCBieSBwYXNzaW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCAnCisgICAgICAgICAgICAgICAgICdvciBieVxuJworICAgICAgICAgICAgICAgICAnaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gSW5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzXG4nCisgICAgICAgICAgICAgICAgICdvZiAiTWV0YSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE1ldGEodHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICdhcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICdiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgJworICAgICAgICAgICAgICAgICAnb2NjdXI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgJworICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBhc1xuJworICAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICcidHlwZSgpIiBpc1xuJworICAgICAgICAgICAgICAgICAnICB1c2VkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzLCBvclxuJworICAgICAgICAgICAgICAgICAnICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgJworICAgICAgICAgICAgICAgICAnb2YgYWxsXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXMgYVxuJworICAgICAgICAgICAgICAgICAnc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAgICAgICAgJ3dpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1ByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAnCisgICAgICAgICAgICAgICAgICciX19wcmVwYXJlX18iIGF0dHJpYnV0ZSxcbicKKyAgICAgICAgICAgICAgICAgJ2l0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2VzLFxuJworICAgICAgICAgICAgICAgICAnKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksICcKKyAgICAgICAgICAgICAgICAgJ2NvbWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzIGRlZmluaXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSAiZGljdCgpIiBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgSW50cm9kdWNlZCB0aGUgIl9fcHJlcGFyZV9fIiBuYW1lc3BhY2UgaG9va1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0V4ZWN1dGluZyB0aGUgY2xhc3MgYm9keVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkIChhcHByb3hpbWF0ZWx5KSBhcyAiZXhlYyhib2R5LCAnCisgICAgICAgICAgICAgICAgICdnbG9iYWxzKCksXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UpIi4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwgY2FsbCB0byAnCisgICAgICAgICAgICAgICAgICciZXhlYygpIiBpcyB0aGF0XG4nCisgICAgICAgICAgICAgICAgICdsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMpIHRvXG4nCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdhY2Nlc3NlZCBhdCBhbGxcbicKKyAgICAgICAgICAgICAgICAgJ2Zyb20gc3RhdGljIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2JvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSAnCisgICAgICAgICAgICAgICAgICdhcmUgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgJ2FzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSAnCisgICAgICAgICAgICAgICAgICd0aGUgemVyby1cbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCAnCisgICAgICAgICAgICAgICAgICdjbG9zdXJlXG4nCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBib2R5IHJlZmVyXG4nCisgICAgICAgICAgICAgICAgICd0byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybVxuJworICAgICAgICAgICAgICAgICAnb2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICdiYXNlZCBvblxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCAnCisgICAgICAgICAgICAgICAgICd0byBtYWtlIHRoZVxuJworICAgICAgICAgICAgICAgICAnY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQWZ0ZXIgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWNvcmF0b3JzIGluY2x1ZGVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIChpZiBhbnkpIGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0aW5nXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICdjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRhY2xhc3MgZXhhbXBsZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lICcKKyAgICAgICAgICAgICAgICAgJ2lkZWFzIHRoYXQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAnYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljXG4nCisgICAgICAgICAgICAgICAgICdkZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsICcKKyAgICAgICAgICAgICAgICAgJ2ZyYW1ld29ya3MsIGFuZFxuJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4nCisgICAgICAgICAgICAgICAgICciY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlc1xuJworICAgICAgICAgICAgICAgICAnYXJlIGRlZmluZWQ6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgICBAY2xhc3NtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3QobmFtZXNwYWNlKSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJldHVybiByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBBLm1lbWJlcnNcbicKKyAgICAgICAgICAgICAgICAgIiAgICgnX19tb2R1bGVfXycsICdvbmUnLCAndHdvJywgJ3RocmVlJywgJ2ZvdXInKVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Byb2Nlc3MgYmVnaW5zXG4nCisgICAgICAgICAgICAgICAgICd3aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyAiX19wcmVwYXJlX18oKSIgbWV0aG9kIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybnMgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2VtcHR5ICJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyZWQgZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICdnZXRzXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyZWRcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkICJtZW1iZXJzIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpc2luc3RhbmNlKCkiIGFuZCAiaXNzdWJjbGFzcygpIiBidWlsdC1pbiBmdW5jdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgImFiYy5BQkNNZXRhIiBpbXBsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAgJ3RoZXNlIG1ldGhvZHMgaW5cbicKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgJworICAgICAgICAgICAgICAgICAnKEFCQ3MpIGFzXG4nCisgICAgICAgICAgICAgICAgICcidmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgJworICAgICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgICAgJ3R5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgJworICAgICAgICAgICAgICAgICAnKGRpcmVjdCBvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhICcKKyAgICAgICAgICAgICAgICAgJyhkaXJlY3Qgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgJworICAgICAgICAgICAgICAgICAnKG1ldGFjbGFzcykgb2YgYVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2FjdHVhbCBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgJworICAgICAgICAgICAgICAgICAnYXJlIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAnb24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlICcKKyAgICAgICAgICAgICAgICAgJ0NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpc3N1YmNsYXNzKCkiIGJlaGF2aW9yIHRocm91Z2ggIl9faW5zdGFuY2VjaGVja19fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19zdWJjbGFzc2NoZWNrX18oKSIsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvbmFsaXR5IGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgJworICAgICAgICAgICAgICAgICAnImFiYyJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcobGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICdvciB0b1xuJworICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9ICcKKyAgICAgICAgICAgICAgICAgJ2sgPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAnKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdkZWZpbmUgYVxuJworICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAncHJvdmlkZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgJworICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAnInNldGRlZmF1bHQoKSIsICJwb3AoKSIsICJwb3BpdGVtKCkiLCAiY29weSgpIiwgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJ1cGRhdGUoKSJcbicKKyAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1RoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgJworICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICciaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsICcKKyAgICAgICAgICAgICAgICAgJ2xpa2UgUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICdhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gJworICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgJ3JlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICciX19yYWRkX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAgICAgICAgJ2JlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICAnCisgICAgICAgICAgICAgICAgICdJdCBpc1xuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRvcjtcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoXG4nCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICd0byBhbGxvd1xuJworICAgICAgICAgICAgICAgICAnZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICAnCisgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICcKKyAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyICcKKyAgICAgICAgICAgICAgICAgJ29yIGxlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iICcKKyAgICAgICAgICAgICAgICAgJzAuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlY3RuZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJyAgQSBjYWxsIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBhWzE6Ml0gPSBiXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gJworICAgICAgICAgICAgICAgICAnd2l0aCAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHR5cGVzLFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3Mgd2lzaGVzXG4nCisgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4nCisgICAgICAgICAgICAgICAgICcgICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnKGFmdGVyIGFueVxuJworICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAnCisgICAgICAgICAgICAgICAgICciSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICcic2VsZltrZXldIiBmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lICcKKyAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2lmIG5ldyBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogJworICAgICAgICAgICAgICAgICAndmFsdWVzIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgJworICAgICAgICAgICAgICAgICAnaWYgZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciAnCisgICAgICAgICAgICAgICAgICdhIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAnY2FuIGl0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgJ2l0IHNob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgJworICAgICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiAnCisgICAgICAgICAgICAgICAgICdyZXZlcnNlIG9yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgJworICAgICAgICAgICAgICAgICAnbW9yZSBlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSAnCisgICAgICAgICAgICAgICAgICdhIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgJworICAgICAgICAgICAgICAgICAnc2VjdGlvbiBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgJworICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgJworICAgICAgICAgICAgICAgICAnY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCB0byBhY2NlcHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgJworICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCAnCisgICAgICAgICAgICAgICAgICdyZWZsZWN0ZWQgKHN3YXBwZWQpXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICcgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYW5kcyBhcmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCB0eXBlcy4gWzJdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gInggLVxuJworICAgICAgICAgICAgICAgICAnICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICcKKyAgICAgICAgICAgICAgICAgJyJfX3JzdWJfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICpOb3RJbXBsZW1lbnRlZCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAnIl9fcnBvd19fKCkiICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgIgorICAgICAgICAgICAgICAgICAncmVmbGVjdGVkIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBsZWZ0XG4nCisgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzICIKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCAnCisgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICcKKyAgICAgICAgICAgICAgICAgJyIqKj0iLFxuJworICAgICAgICAgICAgICAgICAnICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmICcKKyAgICAgICAgICAgICAgICAgJ2Egc3BlY2lmaWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzICcKKyAgICAgICAgICAgICAgICAgJ2JhY2sgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ2EgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICcieCA9XG4nCisgICAgICAgICAgICAgICAgICcgICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJ5Ll9fcmFkZF9fKHgpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gJworICAgICAgICAgICAgICAgICAnY2VydGFpblxuJworICAgICAgICAgICAgICAgICAnICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiAnCisgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGVycm9yc1xuJworICAgICAgICAgICAgICAgICAiICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbJ2l0ZW0nXSByYWlzZSBhbiAiCisgICAgICAgICAgICAgICAgICdleGNlcHRpb24gd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyopLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAnKCItIiwgIisiLFxuJworICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyAnCisgICAgICAgICAgICAgICAgICdhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgJypUaGUgd2l0aFxuJworICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1R5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAna2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCAnCisgICAgICAgICAgICAgICAgICdjbG9zaW5nIG9wZW5lZFxuJworICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAiICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZCdzIHJldHVybiB2YWx1ZSB0byB0aGUgIgorICAgICAgICAgICAgICAgICAndGFyZ2V0KHMpXG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlICcKKyAgICAgICAgICAgICAgICAgJ2V4aXRlZC4gSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgd2lsbFxuJworICAgICAgICAgICAgICAgICAnICAgYmUgIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICdzdXBwcmVzcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCAnCisgICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAnICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZC1pblxuJworICAgICAgICAgICAgICAgICAiICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiAid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NwZWNpYWwgbWV0aG9kIGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFyZSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICJndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0J3MgIgorICAgICAgICAgICAgICAgICAndHlwZSwgbm90IGluXG4nCisgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSAiCisgICAgICAgICAgICAgICAgICdyZWFzb24gd2h5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsZW4oYylcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgJ0MnIGhhcyBubyBsZW4oKVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2YgJworICAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICdhbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ2xvb2t1cCBvZiB0aGVzZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgJworICAgICAgICAgICAgICAgICAnZmFpbCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciAnX19oYXNoX18nIG9mICdpbnQnIG9iamVjdCBuZWVkcyAiCisgICAgICAgICAgICAgICAgICdhbiBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGluIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgIndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgJ21ldGFjbGFzcyBjb25mdXNpb24nLCBhbmQgIgorICAgICAgICAgICAgICAgICAnaXMgYXZvaWRlZFxuJworICAgICAgICAgICAgICAgICAnYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJlc3Qgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2NvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gJworICAgICAgICAgICAgICAgICAnYnlwYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSAnCisgICAgICAgICAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAgICAgICAgICcgICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2Zhc2hpb24gcHJvdmlkZXNcbicKKyAgICAgICAgICAgICAgICAgJ3NpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXIsIGF0XG4nCisgICAgICAgICAgICAgICAgICd0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgKHRoZVxuJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBiZVxuJworICAgICAgICAgICAgICAgICAnY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cbicsCisgJ3N0cmluZy1tZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmcgTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMsIGFsb25nIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uYWwgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCAnCisgICAgICAgICAgICAgICAgICAgJ29uZSBwcm92aWRpbmcgYVxuJworICAgICAgICAgICAgICAgICAgICdsYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAnCisgICAgICAgICAgICAgICAgICAgJyJzdHIuZm9ybWF0KCkiLFxuJworICAgICAgICAgICAgICAgICAgICcqRm9ybWF0IFN0cmluZyBTeW50YXgqIGFuZCAqU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXIgYmFzZWQgb25cbicKKyAgICAgICAgICAgICAgICAgICAnQyAicHJpbnRmIiBzdHlsZSBmb3JtYXR0aW5nIHRoYXQgaGFuZGxlcyBhIG5hcnJvd2VyICcKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgdHlwZXMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJ2lzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gZmFzdGVyICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHRoZSBjYXNlc1xuJworICAgICAgICAgICAgICAgICAgICdpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgKlRleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcyogc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICAgICAgICdsaWJyYXJ5IGNvdmVyc1xuJworICAgICAgICAgICAgICAgICAgICdhIG51bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgJworICAgICAgICAgICAgICAgICAgICdyZWxhdGVkIHV0aWxpdGllc1xuJworICAgICAgICAgICAgICAgICAgICcoaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiICcKKyAgICAgICAgICAgICAgICAgICAnbW9kdWxlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXBpdGFsaXplKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdjYXBpdGFsaXplZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXNlZm9sZCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgJ2FnZ3Jlc3NpdmUgYmVjYXVzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmcuIEZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgIlwnw59cJyIgaXMgJworICAgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvICIic3MiIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyAnCisgICAgICAgICAgICAgICAgICAgJ25vdGhpbmcgdG8gIlwnw59cJyI7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnMy4xMyBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouICcKKyAgICAgICAgICAgICAgICAgICAnUGFkZGluZyBpcyBkb25lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJ3NwYWNlKS4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgJ29yIGVxdWFsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKnN1YipcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICcqc3RhcnQqIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0LiBEZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0ICcKKyAgICAgICAgICAgICAgICAgICAnYSBkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgJworICAgICAgICAgICAgICAgICAgICciXCdzdHJpY3RcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSAiVW5pY29kZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICdPdGhlciBwb3NzaWJsZVxuJworICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgJworICAgICAgICAgICAgICAgICAgICciXCd4bWxjaGFycmVmcmVwbGFjZVwnIixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ3ZpYVxuJworICAgICAgICAgICAgICAgICAgICcgICAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiAqRXJyb3IgJworICAgICAgICAgICAgICAgICAgICdIYW5kbGVycyouIEZvciBhIGxpc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmQgJworICAgICAgICAgICAgICAgICAgICdFbmNvZGluZ3MqLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICdhZGRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICcKKyAgICAgICAgICAgICAgICAgICAnKnN1ZmZpeCosXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgJworICAgICAgICAgICAgICAgICAgICd0dXBsZSBvZiBzdWZmaXhlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgJworICAgICAgICAgICAgICAgICAgICdhdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgJworICAgICAgICAgICAgICAgICAgICd0aGF0IHBvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSByZXBsYWNlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbHVtbiBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgJworICAgICAgICAgICAgICAgICAgICcxNiBhbmQgc28gb24pLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byAnCisgICAgICAgICAgICAgICAgICAgJ3plcm8gYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2luc2VydGVkIGluIHRoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLiAoVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIGlzIGEgbmV3bGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgY29sdW1uIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCAnCisgICAgICAgICAgICAgICAgICAgJ3VuY2hhbmdlZCBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnaG93IHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNCcuZXhwYW5kdGFicygpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNCcuZXhwYW5kdGFicyg0KVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgIDAxMiAwMTIzICAgIDAxMjM0J1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlICcKKyAgICAgICAgICAgICAgICAgICAnInNbc3RhcnQ6ZW5kXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgJworICAgICAgICAgICAgICAgICAgICdhcyBpbiBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICcgICBub3RhdGlvbi4gIFJldHVybiAiLTEiIGlmICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgJworICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGtub3dcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIG9yIG5vdCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiAnCisgICAgICAgICAgICAgICAgICAgJ3doaWNoIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ25hbWUgb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAndmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICcibWFwcGluZyIgaXMgdXNlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhICJkaWN0Ii4gIFRoaXMgaXMgdXNlZnVsICcKKyAgICAgICAgICAgICAgICAgICAnaWYgZm9yIGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3tuYW1lfSB3YXMgYm9ybiBpbiAiCisgICAgICAgICAgICAgICAgICAgIntjb3VudHJ5fScuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9J0d1aWRvJykpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5J1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2FsbnVtKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnYWxwaGFudW1lcmljIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyICJjIlxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICAgJyJUcnVlIjpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAnCisgICAgICAgICAgICAgICAgICAgJyJjLmlzbnVtZXJpYygpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2FscGhhKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnYWxwaGFiZXRpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdBbHBoYWJldGljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlIGNoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsICcKKyAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnkgcHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlICcKKyAgICAgICAgICAgICAgICAgICAndGhhdCB0aGlzIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzZGVjaW1hbCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwgY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAnCisgICAgICAgICAgICAgICAgICAgJ0RlY2ltYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgJworICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeVxuJworICAgICAgICAgICAgICAgICAgICcgICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ2NhbiBiZSB1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDICcKKyAgICAgICAgICAgICAgICAgICAnRElHSVQgWkVSTy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RpZ2l0KClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnZGlnaXRzIGFuZCB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdpbmNsdWRlIGRlY2ltYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCAnCisgICAgICAgICAgICAgICAgICAgJ3N1Y2ggYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgJworICAgICAgICAgICAgICAgICAgICdpcyBhIGNoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzaWRlbnRpZmllcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciAnCisgICAgICAgICAgICAgICAgICAgJ2FjY29yZGluZyB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kICcKKyAgICAgICAgICAgICAgICAgICAna2V5d29yZHMqLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCAnCisgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIHN1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImRlZiIgYW5kICJjbGFzcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNsb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ251bWVyaWMgY2hhcmFjdGVycyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsICcKKyAgICAgICAgICAgICAgICAgICAnVlVMR0FSIEZSQUNUSU9OXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlICcKKyAgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCAnCisgICAgICAgICAgICAgICAgICAgJ051bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzcHJpbnRhYmxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAncHJpbnRhYmxlIG9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnKDB4MjApIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGluIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gJworICAgICAgICAgICAgICAgICAgICcicmVwcigpIiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnaGFuZGxpbmcgb2Ygc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhlIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2UgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ2JpZGlyZWN0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnbWF5IG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdvbmx5IGNhc2VkIG9uZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN1cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSB1cHBlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmpvaW4oaXRlcmFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2lmIHRoZXJlIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnImJ5dGVzIiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGluZyB0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoICp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogJworICAgICAgICAgICAgICAgICAgICcoZGVmYXVsdCBpcyBhbiBBU0NJSVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhbiBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIDMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubHN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5sc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMgICAnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInN0ci50cmFuc2xhdGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoIDEpIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciAnCisgICAgICAgICAgICAgICAgICAgJ05vbmUuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCBsZW5ndGgsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggJworICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGEgdGhpcmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCAnCisgICAgICAgICAgICAgICAgICAgJ2JlIG1hcHBlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb25lIGluIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHJldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHdvIGVtcHR5IHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqb2xkKlxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqICcKKyAgICAgICAgICAgICAgICAgICAnaXMgZ2l2ZW4sIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgICcic1tzdGFydDplbmRdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCAnCisgICAgICAgICAgICAgICAgICAgJ2FzIGluIHNsaWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCAqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqICcKKyAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQgaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHN0cmluZyBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqIHNwbGl0c1xuJworICAgICAgICAgICAgICAgICAgICcgICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgJworICAgICAgICAgICAgICAgICAgICdmb3Igc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgJworICAgICAgICAgICAgICAgICAgICd3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdzdWZmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnJzdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICcgICBzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdtaXNzaXNzaXBwaScucnN0cmlwKCdpcHonKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnbWlzc2lzcydcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyptYXhzcGxpdCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyJtYXhzcGxpdCsxIlxuJworICAgICAgICAgICAgICAgICAgICcgICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgJworICAgICAgICAgICAgICAgICAgICd0aGVuIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIG1hZGUpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2dyb3VwZWQgdG9nZXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgJworICAgICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsICcKKyAgICAgICAgICAgICAgICAgICAnXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciW1wnXCddIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxLDIsMycuc3BsaXQoJywnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxLDIsMycuc3BsaXQoJywnLCBtYXhzcGxpdD0xKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMiwzJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxLDIsLDMsJy5zcGxpdCgnLCcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJycsICczJywgJyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgICdzcGxpdHRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSByZWdhcmRlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyAnCisgICAgICAgICAgICAgICAgICAgJ2VtcHR5IHN0cmluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yICcKKyAgICAgICAgICAgICAgICAgICAndHJhaWxpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ29yIGEgc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSAiTm9uZSIgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJucyAiW10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEgMiAzJy5zcGxpdCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEgMiAzJy5zcGxpdChtYXhzcGxpdD0xKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMiAzJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICAxICAgMiAgIDMgICAnLnNwbGl0KClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgJworICAgICAgICAgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdGluZyBsaXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBib3VuZGFyaWVzLiAgJworICAgICAgICAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgICAgICAgICcgICBwYXJ0aWN1bGFyLCB0aGUgYm91bmRhcmllcyBhcmUgYSBzdXBlcnNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJyp1bml2ZXJzYWwgbmV3bGluZXMqLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8IFJlcHJlc2VudGF0aW9uICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxuIiAgICAgICAgICAgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlICcKKyAgICAgICAgICAgICAgICAgICAnUmV0dXJuICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcclxcbiIgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiArIExpbmUgJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdiIgb3IgIlxceDBiIiAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdUYWJ1bGF0aW9uICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcZiIgb3IgIlxceDBjIiAgICAgICAgICB8IEZvcm0gJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFjIiAgICAgICAgICAgICAgICAgIHwgRmlsZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWQiICAgICAgICAgICAgICAgICAgfCBHcm91cCAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDg1IiAgICAgICAgICAgICAgICAgIHwgTmV4dCBMaW5lIChDMSBDb250cm9sICcKKyAgICAgICAgICAgICAgICAgICAnQ29kZSkgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOCIgICAgICAgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiXFx2IiBhbmQgIlxcZiIgYWRkZWQgdG8gbGlzdCAnCisgICAgICAgICAgICAgICAgICAgJ29mIGxpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYm91bmRhcmllcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcbicuc3BsaXRsaW5lcygpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnYWIgYycsICcnLCAnZGUgZmcnLCAna2wnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSAiCisgICAgICAgICAgICAgICAgICAgImZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjXFxuJywgJ1xcbicsICdkZSBmZ1xccicsICdrbFxcclxcbiddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgJworICAgICAgICAgICAgICAgICAgICdhbmQgYSB0ZXJtaW5hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydPbmUgbGluZSddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnJy5zcGxpdCgnXFxuJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ1R3byBsaW5lc1xcbicuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnVHdvIGxpbmVzJywgJyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byAnCisgICAgICAgICAgICAgICAgICAgJ2xvb2sgZm9yLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RyYWlsaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZ5aW5nIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICcKKyAgICAgICAgICAgICAgICAgICAnIk5vbmUiLCB0aGUgKmNoYXJzKlxuJworICAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2l0cyB2YWx1ZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmlwcGVkOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICBzcGFjaW91cyAgICcuc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5zdHJpcCgnY21vd3ouJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ2V4YW1wbGUnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgb3V0ZXJtb3N0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmlwcGVkIGZyb20gdGhlIHN0cmluZy4gQ2hhcmFjdGVycyBhcmUgcmVtb3ZlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAndGhlIGxlYWRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZW5kIHVudGlsIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lZCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgaW4gKmNoYXJzKi4gQSBzaW1pbGFyIGFjdGlvbiB0YWtlcyAnCisgICAgICAgICAgICAgICAgICAgJ3BsYWNlIG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0cmFpbGluZyBlbmQuIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nID0gJyMuLi4uLi4uIFNlY3Rpb24gMy4yLjEgSXNzdWUgIgorICAgICAgICAgICAgICAgICAgICIjMzIgLi4uLi4uLidcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nLnN0cmlwKCcuIyEgJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ1NlY3Rpb24gMy4yLjEgSXNzdWUgIzMyJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN3YXBjYXNlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnY29udmVydGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ25lY2Vzc2FyaWx5IHRydWUgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICAicy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgJworICAgICAgICAgICAgICAgICAgICdzdGFydCB3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgJworICAgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnSGVsbG8gd29ybGQnLnRpdGxlKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ0hlbGxvIFdvcmxkJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgJworICAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIHdvcmtzIGluXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gJworICAgICAgICAgICAgICAgICAgICdjb250cmFjdGlvbnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAndGhlIGRlc2lyZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVzdWx0OlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICdVSyIudGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgJworICAgICAgICAgICAgICAgICAgICdyZWd1bGFyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25zOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGltcG9ydCByZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50cmFuc2xhdGUodGFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgaW4gd2hpY2ggZWFjaCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCAnCisgICAgICAgICAgICAgICAgICAgJ2JlIGFuIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgJworICAgICAgICAgICAgICAgICAgICd0eXBpY2FsbHkgYSAqbWFwcGluZypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgKnNlcXVlbmNlKi4gIFdoZW4gaW5kZXhlZCBieSBhIFVuaWNvZGUgb3JkaW5hbCAoYW4gJworICAgICAgICAgICAgICAgICAgICdpbnRlZ2VyKSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZSBvcmRpbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyIGNoYXJhY3RlcnM7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiAiTm9uZSIsIHRvIGRlbGV0ZSB0aGUgY2hhcmFjdGVyIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIHN0cmluZzsgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICd0byBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ21hcCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZm9ybWF0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvIGN1c3RvbVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgbWFwcGluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgWzRdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgJworICAgICAgICAgICAgICAgICAgICcic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAnCisgICAgICAgICAgICAgICAgICAgJyhMZXR0ZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIDMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuemZpbGwod2lkdGgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJyJcJzBcJyIgZGlnaXRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICgiXCcrXCciLyJcJy1cJyIpIGlzIGhhbmRsZWQgYnkgaW5zZXJ0aW5nIHRoZSBwYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKmFmdGVyKiB0aGUgc2lnblxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgICcwMDA0MidcbiIKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICItNDIiLnpmaWxsKDUpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgICctMDA0MidcbiIsCisgJ3N0cmluZ3MnOiAnXG4nCisgICAgICAgICAgICAnU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgJworICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCAnCisgICAgICAgICAgICAnbG9uZ3N0cmluZylcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIlxuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyAnCisgICAgICAgICAgICAnc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciIHwgJworICAgICAgICAgICAgJ1wnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdpdGVtICA6Oj0gbG9uZ3N0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciAnCisgICAgICAgICAgICAnbmV3bGluZSBvciB0aGUgcXVvdGU+XG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZ2NoYXIgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4nCisgICAgICAgICAgICAnICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBieXRlc2xpdGVyYWwgICA6Oj0gYnl0ZXNwcmVmaXgoc2hvcnRieXRlcyB8IGxvbmdieXRlcylcbicKKyAgICAgICAgICAgICcgICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICcKKyAgICAgICAgICAgICcicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyAnCisgICAgICAgICAgICAnc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4nCisgICAgICAgICAgICAnICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgJworICAgICAgICAgICAgJ1wnIiIiXCcgbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciAnCisgICAgICAgICAgICAnbmV3bGluZSBvciB0aGUgcXVvdGU+XG4nCisgICAgICAgICAgICAnICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ09uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyAnCisgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgJ3doaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgInN0cmluZ3ByZWZpeCIgb3IgJworICAgICAgICAgICAgJyJieXRlc3ByZWZpeCJcbicKKyAgICAgICAgICAgICdhbmQgdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwuIFRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldCBpcyAnCisgICAgICAgICAgICAnZGVmaW5lZCBieVxuJworICAgICAgICAgICAgJ3RoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgJworICAgICAgICAgICAgJ2RlY2xhcmF0aW9uIGlzXG4nCisgICAgICAgICAgICAnZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmcgZGVjbGFyYXRpb25zKi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiAnCisgICAgICAgICAgICAnbWF0Y2hpbmdcbicKKyAgICAgICAgICAgICdzaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSAnCisgICAgICAgICAgICAnZW5jbG9zZWRcbicKKyAgICAgICAgICAgICdpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlIGFyZVxuJworICAgICAgICAgICAgJ2dlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJygiXFwiKSBjaGFyYWN0ZXIgaXMgdXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyB0aGF0IG90aGVyd2lzZSAnCisgICAgICAgICAgICAnaGF2ZSBhXG4nCisgICAgICAgICAgICAnc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSAnCisgICAgICAgICAgICAncXVvdGVcbicKKyAgICAgICAgICAgICdjaGFyYWN0ZXIuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQnl0ZXMgbGl0ZXJhbHMgYXJlIGFsd2F5cyBwcmVmaXhlZCB3aXRoICJcJ2JcJyIgb3IgIlwnQlwnIjsgJworICAgICAgICAgICAgJ3RoZXkgcHJvZHVjZVxuJworICAgICAgICAgICAgJ2FuIGluc3RhbmNlIG9mIHRoZSAiYnl0ZXMiIHR5cGUgaW5zdGVhZCBvZiB0aGUgInN0ciIgdHlwZS4gICcKKyAgICAgICAgICAgICdUaGV5IG1heVxuJworICAgICAgICAgICAgJ29ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAnCisgICAgICAgICAgICAnMTI4IG9yXG4nCisgICAgICAgICAgICAnZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggc3RyaW5nIGxpdGVyYWxzICcKKyAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICcidSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggJworICAgICAgICAgICAgJ2NvZGViYXNlcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdCb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCAnCisgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgJ2xldHRlciAiXCdyXCciIG9yICJcJ1JcJyI7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgJworICAgICAgICAgICAgJ3N0cmluZ3MqIGFuZCB0cmVhdFxuJworICAgICAgICAgICAgJ2JhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgJworICAgICAgICAgICAgJ2xpdGVyYWxzLFxuJworICAgICAgICAgICAgJyJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkICcKKyAgICAgICAgICAgICdzcGVjaWFsbHkuXG4nCisgICAgICAgICAgICAiR2l2ZW4gdGhhdCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5ICIKKyAgICAgICAgICAgICd0aGFuXG4nCisgICAgICAgICAgICAnUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgIlwncmJcJyIgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyAnCisgICAgICAgICAgICAnaGFzIGJlZW5cbicKKyAgICAgICAgICAgICdhZGRlZCBhcyBhIHN5bm9ueW0gb2YgIlwnYnJcJyIuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuJworICAgICAgICAgICAgJygidVwndmFsdWVcJyIpIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mICcKKyAgICAgICAgICAgICdkdWFsXG4nCisgICAgICAgICAgICAnUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlICcKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgJworICAgICAgICAgICAgJ2FsbG93ZWRcbicKKyAgICAgICAgICAgICcoYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSAnCisgICAgICAgICAgICAncm93XG4nCisgICAgICAgICAgICAndGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gJworICAgICAgICAgICAgJ29wZW4gdGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGVzcyBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSAnCisgICAgICAgICAgICAnc2VxdWVuY2VzIGluIHN0cmluZ1xuJworICAgICAgICAgICAgJ2FuZCBieXRlcyBsaXRlcmFscyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgJworICAgICAgICAgICAgJ3RvIHRob3NlXG4nCisgICAgICAgICAgICAndXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAnTm90ZXMgICB8XG4nCisgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xuJworICAgICAgICAgICAgJ3wgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgJworICAgICAgICAgICAgJygxLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICcKKyAgICAgICAgICAgICcoMiwzKSAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICdOb3RlcyAgIHxcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAnCisgICAgICAgICAgICAnKDQpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDUpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDYpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcyLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJyAgIGJ5dGUgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlICcKKyAgICAgICAgICAgICdlc2NhcGVzXG4nCisgICAgICAgICAgICAnICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNC4gQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsxXSBoYXMgJworICAgICAgICAgICAgJ2JlZW5cbicKKyAgICAgICAgICAgICcgICBhZGRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc1LiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyICcKKyAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICcgICBiZSBlbmNvZGVkIHVzaW5nIHRoaXMgZXNjYXBlIHNlcXVlbmNlLiAgRXhhY3RseSBmb3VyIGhleCAnCisgICAgICAgICAgICAnZGlnaXRzIGFyZVxuJworICAgICAgICAgICAgJyAgIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgJworICAgICAgICAgICAgJ2VpZ2h0XG4nCisgICAgICAgICAgICAnICAgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCAnCisgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAnc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gICcKKyAgICAgICAgICAgICcoVGhpc1xuJworICAgICAgICAgICAgJ2JlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzICcKKyAgICAgICAgICAgICdtaXN0eXBlZCxcbicKKyAgICAgICAgICAgICd0aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCAnCisgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgJ2ltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluICcKKyAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICdsaXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciAnCisgICAgICAgICAgICAnYnl0ZXNcbicKKyAgICAgICAgICAgICdsaXRlcmFscy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdFdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCAnCisgICAgICAgICAgICAnYnV0IHRoZVxuJworICAgICAgICAgICAgJ2JhY2tzbGFzaCByZW1haW5zIGluIHRoZSByZXN1bHQ7IGZvciBleGFtcGxlLCAiciJcXCIiIiBpcyBhICcKKyAgICAgICAgICAgICd2YWxpZFxuJworICAgICAgICAgICAgJ3N0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhICcKKyAgICAgICAgICAgICdkb3VibGVcbicKKyAgICAgICAgICAgICdxdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgJworICAgICAgICAgICAgJ2Nhbm5vdFxuJworICAgICAgICAgICAgJ2VuZCBpbiBhbiBvZGQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzKS4gIFNwZWNpZmljYWxseSwgKmEgcmF3ICcKKyAgICAgICAgICAgICdsaXRlcmFsXG4nCisgICAgICAgICAgICAnY2Fubm90IGVuZCBpbiBhIHNpbmdsZSBiYWNrc2xhc2gqIChzaW5jZSB0aGUgYmFja3NsYXNoIHdvdWxkICcKKyAgICAgICAgICAgICdlc2NhcGVcbicKKyAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSAnCisgICAgICAgICAgICAnYmFja3NsYXNoXG4nCisgICAgICAgICAgICAnZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzIGFzICcKKyAgICAgICAgICAgICdwYXJ0XG4nCisgICAgICAgICAgICAnb2YgdGhlIGxpdGVyYWwsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAorICdzdWJzY3JpcHRpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgJworICAgICAgICAgICAgICAgICAgJ3R1cGxlIG9yIGxpc3QpXG4nCisgICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIHN1YnNjcmlwdGlvbiA6Oj0gcHJpbWFyeSAiWyIgZXhwcmVzc2lvbl9saXN0ICJdIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICAgICAgJyhsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwb3J0XG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIGJ5IGRlZmluaW5nIGEgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3IgYnVpbHQtaW4gb2JqZWN0cywgdGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvYmplY3RzIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb246XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvIGFuXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0IHdob3NlIHZhbHVlIGlzIG9uZSBvZiB0aGUga2V5cyBvZiB0aGUgbWFwcGluZywgYW5kICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZHMgdG8gdGhhdFxuJworICAgICAgICAgICAgICAgICAgJ2tleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyAnCisgICAgICAgICAgICAgICAgICAnZXhhY3RseSBvbmVcbicKKyAgICAgICAgICAgICAgICAgICdpdGVtLilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdhbiBpbnRlZ2VyIG9yIGEgc2xpY2UgKGFzIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nICcKKyAgICAgICAgICAgICAgICAgICdzZWN0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZm9ybWFsIHN5bnRheCBtYWtlcyBubyBzcGVjaWFsIHByb3Zpc2lvbiBmb3IgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ2luZGljZXMgaW5cbicKKyAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXM7IGhvd2V2ZXIsIGJ1aWx0LWluIHNlcXVlbmNlcyBhbGwgcHJvdmlkZSBhICcKKyAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbGVuZ3RoIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCAieFstMV0iIHNlbGVjdHMgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgICAgJ2l0ZW0gb2YgIngiKS5cbicKKyAgICAgICAgICAgICAgICAgICdUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgJworICAgICAgICAgICAgICAgICAgJ3RoYW4gdGhlIG51bWJlclxuJworICAgICAgICAgICAgICAgICAgJ29mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyAnCisgICAgICAgICAgICAgICAgICAndGhlIGl0ZW0gd2hvc2VcbicKKyAgICAgICAgICAgICAgICAgICdpbmRleCBpcyB0aGF0IHZhbHVlIChjb3VudGluZyBmcm9tIHplcm8pLiBTaW5jZSB0aGUgJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdCdzICIKKyAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIHN1YmNsYXNzZXMgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB3aWxsIG5lZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgYWRkXG4nCisgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkEgc3RyaW5nJ3MgaXRlbXMgYXJlIGNoYXJhY3RlcnMuICBBIGNoYXJhY3RlciBpcyBub3QgYSAiCisgICAgICAgICAgICAgICAgICAnc2VwYXJhdGUgZGF0YVxuJworICAgICAgICAgICAgICAgICAgJ3R5cGUgYnV0IGEgc3RyaW5nIG9mIGV4YWN0bHkgb25lIGNoYXJhY3Rlci5cbicsCisgJ3RydXRoJzogJ1xuJworICAgICAgICAgICdUcnV0aCBWYWx1ZSBUZXN0aW5nXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gImlmIiBvclxuJworICAgICAgICAgICcid2hpbGUiIGNvbmRpdGlvbiBvciBhcyBvcGVyYW5kIG9mIHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgYmVsb3cuICcKKyAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgJ2ZvbGxvd2luZyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZmFsc2U6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqICJOb25lIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiAiRmFsc2UiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIHplcm8gb2YgYW55IG51bWVyaWMgdHlwZSwgZm9yIGV4YW1wbGUsICIwIiwgIjAuMCIsICIwaiIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogYW55IGVtcHR5IG1hcHBpbmcsIGZvciBleGFtcGxlLCAie30iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMsIGlmIHRoZSBjbGFzcyBkZWZpbmVzIGFcbicKKyAgICAgICAgICAnICAiX19ib29sX18oKSIgb3IgIl9fbGVuX18oKSIgbWV0aG9kLCB3aGVuIHRoYXQgbWV0aG9kIHJldHVybnMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICBpbnRlZ2VyIHplcm8gb3IgImJvb2wiIHZhbHVlICJGYWxzZSIuIFsxXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdPcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgJworICAgICAgICAgICdhbHdheXNcbicKKyAgICAgICAgICAncmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgJworICAgICAgICAgICd1bmxlc3NcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgJworICAgICAgICAgICcib3IiXG4nCisgICAgICAgICAgJ2FuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAorICd0cnknOiAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCAnCisgICAgICAgICdjb2RlXG4nCisgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgJworICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAnICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gJworICAgICAgICAnbm9cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0ICcKKyAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSAnCisgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzICcKKyAgICAgICAgJ2NvbXBhdGlibGVcbicKKyAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICdoYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gJworICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICdbMV1cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgJ3JhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCAnCisgICAgICAgICdhbmRcbicKKyAgICAgICAgJ2Egc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kICcKKyAgICAgICAgJ29uXG4nCisgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgJ3RoZSBleGNlcHRpb24pLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCAnCisgICAgICAgICd0b1xuJworICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsICcKKyAgICAgICAgJ2lmXG4nCisgICAgICAgICJwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbiIKKyAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayAnCisgICAgICAgICdpc1xuJworICAgICAgICAncmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSAnCisgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICcoVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lICcKKyAgICAgICAgJ2V4Y2VwdGlvbixcbicKKyAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdvdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzICcKKyAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ3dhcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgJyAgICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgICAgICAgICBkZWwgTlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvICcKKyAgICAgICAgJ2JlXG4nCisgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgJworICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAnYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG4nCisgICAgICAgICdjeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbicKKyAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG4iCisgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4nCisgICAgICAgICcic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAnCisgICAgICAgICcoc2VlXG4nCisgICAgICAgICdzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gJworICAgICAgICAndGhlXG4nCisgICAgICAgICdwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbicKKyAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuJworICAgICAgICAnZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3MgJworICAgICAgICAnb2ZmXG4nCisgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlICcKKyAgICAgICAgJ2FyZVxuJworICAgICAgICAnbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAnCisgICAgICAgICcidHJ5IlxuJworICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gICcKKyAgICAgICAgJ0lmXG4nCisgICAgICAgICd0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgJworICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICdjbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSAnCisgICAgICAgICdzYXZlZFxuJworICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAnY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ2lzIGRpc2NhcmRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIDEvMFxuJworICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4nCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgJyAgIDQyXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbicKKyAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsICcKKyAgICAgICAgJ2luXG4nCisgICAgICAgICd0aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbicKKyAgICAgICAgJ2ltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG4nCisgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbicKKyAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJ2xhc3Qgb25lIGV4ZWN1dGVkOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICA+Pj4gZGVmIGZvbygpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnZmluYWxseSdcbiIKKyAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAnICAgPj4+IGZvbygpXG4nCisgICAgICAgICIgICAnZmluYWxseSdcbiIKKyAgICAgICAgJ1xuJworICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICcqRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbicKKyAgICAgICAgJ2dlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKKyAndHlwZXMnOiAnXG4nCisgICAgICAgICAgJ1RoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0JlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICAnCisgICAgICAgICAgJ0V4dGVuc2lvblxuJworICAgICAgICAgICdtb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCAnCisgICAgICAgICAgJ251bWJlcnMsXG4nCisgICAgICAgICAgJ2VmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoICcKKyAgICAgICAgICAnYWRkaXRpb25zXG4nCisgICAgICAgICAgJ3dpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3RpbmdcbicKKyAgICAgICAgICAiJ3NwZWNpYWwgYXR0cmlidXRlcy4nICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzICIKKyAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyICcKKyAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICdtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdOb25lXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgJworICAgICAgICAgICciTm9uZSIuIEl0XG4nCisgICAgICAgICAgJyAgIGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucywgJworICAgICAgICAgICdlLmcuLFxuJworICAgICAgICAgICIgICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuXG4iCisgICAgICAgICAgJyAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdOb3RJbXBsZW1lbnRlZFxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4nCisgICAgICAgICAgJyAgICJOb3RJbXBsZW1lbnRlZCIuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgJworICAgICAgICAgICdvcGVyYXRpb24gZm9yXG4nCisgICAgICAgICAgJyAgIHRoZSBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGVcbicKKyAgICAgICAgICAnICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuJworICAgICAgICAgICcgICBvcGVyYXRvci4pICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlICcKKyAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0VsbGlwc2lzXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgYnVpbHQtaW4gbmFtZSAiRWxsaXBzaXMiLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcibnVtYmVycy5OdW1iZXIiXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICAnCisgICAgICAgICAgJ051bWVyaWNcbicKKyAgICAgICAgICAnICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgJworICAgICAgICAgICdjaGFuZ2VzLlxuJworICAgICAgICAgICcgICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgJworICAgICAgICAgICdyZXByZXNlbnRhdGlvblxuJworICAgICAgICAgICcgICBpbiBjb21wdXRlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICBjb21wbGV4IG51bWJlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5JbnRlZ3JhbCJcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgJworICAgICAgICAgICdpbnRlZ2Vyc1xuJworICAgICAgICAgICcgICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBJbnRlZ2VycyAoImludCIpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mICcKKyAgICAgICAgICAnc2hpZnRcbicKKyAgICAgICAgICAnICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAiICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDInc1xuIgorICAgICAgICAgICcgICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSAnCisgICAgICAgICAgJ3N0cmluZyBvZlxuJworICAgICAgICAgICcgICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQm9vbGVhbnMgKCJib29sIilcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgJworICAgICAgICAgICd0d29cbicKKyAgICAgICAgICAnICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzICcKKyAgICAgICAgICAnMCBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgMSwgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAnICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgIiJGYWxzZSIiICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrICcKKyAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICcgICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5SZWFsIiAoImZsb2F0IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyAnCisgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgJyAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbicKKyAgICAgICAgICAnICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlICcKKyAgICAgICAgICAnYWNjZXB0ZWRcbicKKyAgICAgICAgICAnICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCAnCisgICAgICAgICAgJ3NpbmdsZS1cbicKKyAgICAgICAgICAnICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gJworICAgICAgICAgICd0aGVyZSBpc1xuJworICAgICAgICAgICcgICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgJworICAgICAgICAgICdmbG9hdGluZ1xuJworICAgICAgICAgICcgICAgICBwb2ludCBudW1iZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuQ29tcGxleCIgKCJjb21wbGV4IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuJworICAgICAgICAgICcgICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzICcKKyAgICAgICAgICAnYXBwbHlcbicKKyAgICAgICAgICAnICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBsZXggbnVtYmVyICJ6IiBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlcXVlbmNlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuJworICAgICAgICAgICcgICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICcgICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCAnCisgICAgICAgICAgJ3NldFxuJworICAgICAgICAgICcgICBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2Ygc2VxdWVuY2UgJworICAgICAgICAgICcqYSogaXNcbicKKyAgICAgICAgICAnICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyAnCisgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAnICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogIjw9IiAqayogIjwiICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuJworICAgICAgICAgICcgICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgJworICAgICAgICAgICdpbXBsaWVzXG4nCisgICAgICAgICAgJyAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAnCisgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICcgICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqICcKKyAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAnICAgInggPSBpICsgbiprIiwgKm4qICI+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSAnCisgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgJyAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyICcKKyAgICAgICAgICAnb2JqZWN0cyxcbicKKyAgICAgICAgICAnICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7ICcKKyAgICAgICAgICAnaG93ZXZlcixcbicKKyAgICAgICAgICAnICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTdHJpbmdzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgJworICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgJyAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtICcKKyAgICAgICAgICAnVSsxMEZGRkYiXG4nCisgICAgICAgICAgIiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSAiCisgICAgICAgICAgJyJjaGFyIlxuJworICAgICAgICAgICcgICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgJworICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICcgICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gJworICAgICAgICAgICdhblxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiIHRvIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAnbGVuZ3RoXG4nCisgICAgICAgICAgJyAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0ICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICcgICAgICAgICAic3RyIiB0byAiYnl0ZXMiIHVzaW5nIHRoZSBnaXZlbiB0ZXh0IGVuY29kaW5nLCBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFR1cGxlc1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAnCisgICAgICAgICAgJ1R1cGxlcyBvZlxuJworICAgICAgICAgICcgICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgIiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSAnc2luZ2xldG9uJykgY2FuICIKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gJworICAgICAgICAgICdleHByZXNzaW9uIGJ5XG4nCisgICAgICAgICAgJyAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuICcKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlc1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlICcKKyAgICAgICAgICAnOC1iaXRcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAnCisgICAgICAgICAgJzI1Ni5cbicKKyAgICAgICAgICAnICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcygpIiBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gICcKKyAgICAgICAgICAnQWxzbyxcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgJworICAgICAgICAgICciZGVjb2RlKCkiXG4nCisgICAgICAgICAgJyAgICAgICAgIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIE11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICcgICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSAnCisgICAgICAgICAgJ3RhcmdldCBvZlxuJworICAgICAgICAgICcgICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBMaXN0c1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzICcKKyAgICAgICAgICAnbmVlZGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlIEFycmF5c1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tICcKKyAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAnICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgJworICAgICAgICAgICdwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlICcKKyAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2V0IHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCB1bm9yZGVyZWQsIGZpbml0ZSBzZXRzIG9mIHVuaXF1ZSwgaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gJworICAgICAgICAgICdIb3dldmVyLFxuJworICAgICAgICAgICcgICB0aGV5IGNhbiBiZSBpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSJcbicKKyAgICAgICAgICAnICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgJworICAgICAgICAgICdmYXN0XG4nCisgICAgICAgICAgJyAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuJworICAgICAgICAgICcgICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sICcKKyAgICAgICAgICAndW5pb24sXG4nCisgICAgICAgICAgJyAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgJworICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSAnCisgICAgICAgICAgJ3NldmVyYWxcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJvemVuIHNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgJworICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgJyAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5ICcKKyAgICAgICAgICAnaW5kZXhcbicKKyAgICAgICAgICAnICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkICcKKyAgICAgICAgICAnYnkgImsiXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEaWN0aW9uYXJpZXNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbicKKyAgICAgICAgICAnICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJyAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCAnCisgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIG9mXG4nCisgICAgICAgICAgIiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleSdzIGhhc2ggdmFsdWUgdG8gcmVtYWluICIKKyAgICAgICAgICAnY29uc3RhbnQuXG4nCisgICAgICAgICAgJyAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yICcKKyAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICcgICAgICBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kICcKKyAgICAgICAgICAnIjEuMCIpXG4nCisgICAgICAgICAgJyAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbicKKyAgICAgICAgICAnICAgICAgZGljdGlvbmFyeSBlbnRyeS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgJworICAgICAgICAgICciey4uLn0iXG4nCisgICAgICAgICAgJyAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgJworICAgICAgICAgICciY29sbGVjdGlvbnMiXG4nCisgICAgICAgICAgJyAgICAgIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NhbGxhYmxlIHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuJworICAgICAgICAgICcgICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICIgICAgICBhcyB0aGUgZnVuY3Rpb24ncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICdkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiAnCisgICAgICAgICAgJ2lmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkICcKKyAgICAgICAgICAnYnkgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICdzdWJjbGFzc2VzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ25hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgJworICAgICAgICAgICduYW1lKiB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gJworICAgICAgICAgICczLjMuICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgJworICAgICAgICAgICd0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sICcKKyAgICAgICAgICAnb3IgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgJworICAgICAgICAgICd1bmF2YWlsYWJsZS4gICAgICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nICcKKyAgICAgICAgICAnZGVmYXVsdCAgICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yICcKKyAgICAgICAgICAndGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgJworICAgICAgICAgICdkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyAnCisgICAgICAgICAgJ2hhdmUgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgJworICAgICAgICAgICd2YWx1ZSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0ICcKKyAgICAgICAgICAncmVwcmVzZW50aW5nICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gJworICAgICAgICAgICdib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlICcKKyAgICAgICAgICAnZGljdGlvbmFyeSAgIHwgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSAnCisgICAgICAgICAgImZ1bmN0aW9uJ3MgICAgICAgfCAgICAgICAgICAgICB8XG4iCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSAnCisgICAgICAgICAgJ2dsb2JhbCB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgJworICAgICAgICAgICdpbiAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzICcKKyAgICAgICAgICAnZGVmaW5lZC4gfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSAnCisgICAgICAgICAgJ3N1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gJworICAgICAgICAgICdhdHRyaWJ1dGVzLiAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgJworICAgICAgICAgICd0aGF0IHwgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciAnCisgICAgICAgICAgJ3RoZSAgICAgICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgIiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uJ3MgZnJlZSAiCisgICAgICAgICAgJ3ZhcmlhYmxlcy4gICAgICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyAnCisgICAgICAgICAgJ2Fubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiAnCisgICAgICAgICAgJ3RoZSB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciAnCisgICAgICAgICAgJ25hbWVzLCAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgJworICAgICAgICAgICdyZXR1cm4gICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgJworICAgICAgICAgICdwcm92aWRlZC4gICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzICcKKyAgICAgICAgICAnZm9yICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5ICcKKyAgICAgICAgICAncGFyYW1ldGVycy4gICAgICAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgJworICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAnICAgICAgYXNzaWduZWQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoICcKKyAgICAgICAgICAnbWV0YWRhdGFcbicKKyAgICAgICAgICAnICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gJworICAgICAgICAgICdnZXQgYW5kXG4nCisgICAgICAgICAgJyAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgJyAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gJworICAgICAgICAgICdGdW5jdGlvblxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuJworICAgICAgICAgICcgICAgICBmdXR1cmUuKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uJ3MgZGVmaW5pdGlvbiBjYW4gIgorICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgJworICAgICAgICAgICdpbnRlcm5hbFxuJworICAgICAgICAgICcgICAgICB0eXBlcyBiZWxvdy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEluc3RhbmNlIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2UgYW5kXG4nCisgICAgICAgICAgJyAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJfX3NlbGZfXyIgaXMgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAnCisgICAgICAgICAgJyJfX25hbWVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAnCisgICAgICAgICAgJyJfX21vZHVsZV9fIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICcKKyAgICAgICAgICAnIk5vbmUiXG4nCisgICAgICAgICAgJyAgICAgIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgJworICAgICAgICAgICdjbGFzcyksIGlmXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ3VzZXItXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyAnCisgICAgICAgICAgJ2luc3RhbmNlcyxcbicKKyAgICAgICAgICAnICAgICAgaXRzICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzICJfX2Z1bmNfXyIgJworICAgICAgICAgICdhdHRyaWJ1dGUgaXNcbicKKyAgICAgICAgICAnICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbicKKyAgICAgICAgICAnICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlICcKKyAgICAgICAgICAnYmVoYXZpb3VyIGlzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlICcKKyAgICAgICAgICAnIl9fZnVuY19fIlxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiX19zZWxmX18iICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiAoIl9fZnVuY19fIikgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCAnCisgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAnICAgICAgIkMiIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAnImYoKSIsXG4nCisgICAgICAgICAgJyAgICAgIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgIkMiLCBjYWxsaW5nICJ4LmYoMSkiIGlzICcKKyAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICcgICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzICcKKyAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluICJfX3NlbGZfXyIgd2lsbCAnCisgICAgICAgICAgJ2FjdHVhbGx5XG4nCisgICAgICAgICAgJyAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgJworICAgICAgICAgICciQy5mKDEpIlxuJworICAgICAgICAgICcgICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgImYoQywxKSIgd2hlcmUgImYiIGlzIHRoZSAnCisgICAgICAgICAgJ3VuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBoYXBwZW5zIGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZCAnCisgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAnICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgJworICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsICcKKyAgICAgICAgICAnbm9uLVxuJworICAgICAgICAgICcgICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHdoaWNoICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuJworICAgICAgICAgICcgICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyAgICAgIG9mIHRoZSBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuJworICAgICAgICAgICcgICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciAnCisgICAgICAgICAgJ2Z1bmN0aW9uKi5cbicKKyAgICAgICAgICAnICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3IgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICAnCisgICAgICAgICAgJ2NhbGxpbmdcbicKKyAgICAgICAgICAnICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiB0byBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlICcKKyAgICAgICAgICAnInlpZWxkIlxuJworICAgICAgICAgICcgICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgIGZhbGxzIG9mZiB0aGUgZW5kLCBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24gaXMgcmFpc2VkICcKKyAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICcgICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvICcKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgICAgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDb3JvdXRpbmUgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbicKKyAgICAgICAgICAnICAgICAgY2FsbGVkIGEgKmNvcm91dGluZSBmdW5jdGlvbiouICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gJworICAgICAgICAgICdjYWxsZWQsXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4nCisgICAgICAgICAgJyAgICAgIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzICJhc3luYyB3aXRoIiBhbmQgImFzeW5jIGZvciIgJworICAgICAgICAgICdzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICcgICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDICcKKyAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgJyAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgJworICAgICAgICAgICcibWF0aC5zaW4oKSJcbicKKyAgICAgICAgICAnICAgICAgKCJtYXRoIiBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsICcKKyAgICAgICAgICAncmVhZC1cbicKKyAgICAgICAgICAnICAgICAgb25seSBhdHRyaWJ1dGVzOiAiX19kb2NfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzICcKKyAgICAgICAgICAnZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICcgICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgJworICAgICAgICAgICJmdW5jdGlvbidzXG4iCisgICAgICAgICAgJyAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbicKKyAgICAgICAgICAnICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyAnCisgICAgICAgICAgJ2RlZmluZWRcbicKKyAgICAgICAgICAnICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbicKKyAgICAgICAgICAnICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSAiX19zZWxmX18iIGlzIHNldCB0byAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3Nlc1xuJworICAgICAgICAgICcgICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzICcKKyAgICAgICAgICAnZmFjdG9yaWVzXG4nCisgICAgICAgICAgJyAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSAnCisgICAgICAgICAgJ3Bvc3NpYmxlIGZvclxuJworICAgICAgICAgICcgICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlICJfX25ld19fKCkiLiAgVGhlIGFyZ3VtZW50cyBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJyAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBJbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5ICcKKyAgICAgICAgICAnZGVmaW5pbmdcbicKKyAgICAgICAgICAnICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICcgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICBjcmVhdGVkIGJ5IHRoZSAqaW1wb3J0IHN5c3RlbSogYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICcKKyAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4nCisgICAgICAgICAgJyAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBICcKKyAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAnCisgICAgICAgICAgJyh0aGlzIGlzXG4nCisgICAgICAgICAgJyAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4nCisgICAgICAgICAgJyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzICcKKyAgICAgICAgICAnZXF1aXZhbGVudFxuJworICAgICAgICAgICcgICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlICcKKyAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICIgICBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzbid0IG5lZWRlZCAiCisgICAgICAgICAgJ29uY2VcbicKKyAgICAgICAgICAnICAgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlICIKKyAgICAgICAgICAnZGljdGlvbmFyeSxcbicKKyAgICAgICAgICAnICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgJworICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAnICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbicKKyAgICAgICAgICAnICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlICcKKyAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICcgICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgJworICAgICAgICAgICdzdGlsbCBoYXNcbicKKyAgICAgICAgICAnICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuJworICAgICAgICAgICcgICB1bmF2YWlsYWJsZTsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICcKKyAgICAgICAgICAnIl9fZmlsZV9fIlxuJworICAgICAgICAgICcgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyAnCisgICAgICAgICAgJ0NcbicKKyAgICAgICAgICAnICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4nCisgICAgICAgICAgJyAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ3VzdG9tIGNsYXNzZXNcbicKKyAgICAgICAgICAnICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAnCisgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlICcKKyAgICAgICAgICAnaW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAnICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlICcKKyAgICAgICAgICAndHJhbnNsYXRlZFxuJworICAgICAgICAgICcgICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICcgICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoICcKKyAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAnICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICduYW1lIGlzXG4nCisgICAgICAgICAgJyAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4nCisgICAgICAgICAgJyAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2UgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAnZGlhbW9uZCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiIKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiAnCisgICAgICAgICAgJ0FkZGl0aW9uYWxcbicKKyAgICAgICAgICAnICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4nCisgICAgICAgICAgJyAgIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzICJDIiwgc2F5KSB3b3VsZCAnCisgICAgICAgICAgJ3lpZWxkIGFcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICBvYmplY3Qgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGVzIGlzICJDIi4gIFdoZW4gaXQgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3QgJworICAgICAgICAgICd3cmFwcGVkIGJ5XG4nCisgICAgICAgICAgJyAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyAnCisgICAgICAgICAgJ0Rlc2NyaXB0b3JzKlxuJworICAgICAgICAgICcgICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzICcKKyAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgJyAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzJ3MgZGljdGlvbmFyeSwgIgorICAgICAgICAgICduZXZlclxuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSAnCisgICAgICAgICAgJ3R1cGxlXG4nCisgICAgICAgICAgJyAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCAnCisgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICcgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICIgICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZC5cbiIKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGluc3RhbmNlc1xuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlICcKKyAgICAgICAgICAnYWJvdmUpLlxuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICcgICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlICcKKyAgICAgICAgICAnc2VhcmNoZWQuXG4nCisgICAgICAgICAgIiAgIFdoZW4gYW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZCB0aGVyZSwgYW5kIHRoZSBpbnN0YW5jZSdzIGNsYXNzICIKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJyAgIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUsIHRoZSBzZWFyY2ggY29udGludWVzIHdpdGggdGhlICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSAnCisgICAgICAgICAgJ3VzZXItZGVmaW5lZFxuJworICAgICAgICAgICcgICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgIHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuJworICAgICAgICAgICcgICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciAnCisgICAgICAgICAgJ3dheVxuJworICAgICAgICAgICcgICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzICcKKyAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgIiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3MncyAiCisgICAgICAgICAgJyJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgIiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgYVxuIgorICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlJ3NcbiIKKyAgICAgICAgICAiICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzcydzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkICcKKyAgICAgICAgICAnaW5zdGVhZFxuJworICAgICAgICAgICcgICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yICcKKyAgICAgICAgICAnbWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuJworICAgICAgICAgICcgICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19kaWN0X18iIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbicKKyAgICAgICAgICAnICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuJworICAgICAgICAgICcgICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlICJvcGVuKCkiIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgJyAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbicKKyAgICAgICAgICAnICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlICcKKyAgICAgICAgICAiaW50ZXJwcmV0ZXInc1xuIgorICAgICAgICAgICcgICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiAnCisgICAgICAgICAgJ3RleHRcbicKKyAgICAgICAgICAnICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ludGVybmFsIHR5cGVzXG4nCisgICAgICAgICAgJyAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDb2RlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gJworICAgICAgICAgICdjb2RlLFxuJworICAgICAgICAgICcgICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiAnCisgICAgICAgICAgJ2V4cGxpY2l0XG4nCisgICAgICAgICAgIiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb24ncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0ICIKKyAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICcgICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzICcKKyAgICAgICAgICAnY2FsY3VsYXRlZCBhdFxuJworICAgICAgICAgICcgICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byAnCisgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICduYW1lO1xuJworICAgICAgICAgICcgICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICcoaW5jbHVkaW5nXG4nCisgICAgICAgICAgJyAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyAnCisgICAgICAgICAgJ2FyZ3VtZW50cyk7XG4nCisgICAgICAgICAgJyAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgJworICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuJworICAgICAgICAgICcgICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuJworICAgICAgICAgICcgICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgJworICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAnICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICcKKyAgICAgICAgICAnImNvX2NvbnN0cyJcbicKKyAgICAgICAgICAnICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzICcKKyAgICAgICAgICAnY29tcGlsZWQ7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbicKKyAgICAgICAgICAnICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuJworICAgICAgICAgICcgICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4nCisgICAgICAgICAgJyAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAnZW5jb2RpbmcgYVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgJworICAgICAgICAgICciMHgwNCJcbicKKyAgICAgICAgICAnICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvICcKKyAgICAgICAgICAnYWNjZXB0IGFuXG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0ICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0ICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuJworICAgICAgICAgICcgICAgICBnZW5lcmF0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0ICcKKyAgICAgICAgICAnZGl2aXNpb24iKVxuJworICAgICAgICAgICcgICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICcKKyAgICAgICAgICAnIjB4MjAwMCIgaXNcbicKKyAgICAgICAgICAnICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gJworICAgICAgICAgICdlbmFibGVkO1xuJworICAgICAgICAgICcgICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnICAgICAgUHl0aG9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4nCisgICAgICAgICAgJyAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZyYW1lIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgJworICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICcgICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlICcKKyAgICAgICAgICAnYm90dG9tXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4nCisgICAgICAgICAgJyAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgJworICAgICAgICAgICciZl9sYXN0aSJcbicKKyAgICAgICAgICAnICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyAiZl9saW5lbm8iIGlzIHRoZSBjdXJyZW50IGxpbmUgJworICAgICAgICAgICdudW1iZXIgb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ2p1bXBzXG4nCisgICAgICAgICAgJyAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSAnCisgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgJyAgICAgIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpIGJ5ICcKKyAgICAgICAgICAnd3JpdGluZ1xuJworICAgICAgICAgICcgICAgICB0byBmX2xpbmVuby5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgZnJhbWUuY2xlYXIoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgY2xlYXJzIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyAnCisgICAgICAgICAgJ2hlbGQgYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBnZW5lcmF0b3IgaXMgZmluYWxpemVkLiAgVGhpcyBoZWxwcyBicmVhayByZWZlcmVuY2UgJworICAgICAgICAgICdjeWNsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgaW52b2x2aW5nIGZyYW1lIG9iamVjdHMgKGZvciBleGFtcGxlIHdoZW4gY2F0Y2hpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgICAgZXhjZXB0aW9uIGFuZCBzdG9yaW5nIGl0cyB0cmFjZWJhY2sgZm9yIGxhdGVyIHVzZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICAiUnVudGltZUVycm9yIiBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSAnCisgICAgICAgICAgJ2V4ZWN1dGluZy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gICcKKyAgICAgICAgICAnQVxuJworICAgICAgICAgICcgICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiAnCisgICAgICAgICAgJ3N0YWNrLCBhdFxuJworICAgICAgICAgICcgICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250ICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyAnCisgICAgICAgICAgJ2VudGVyZWQsXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSAnCisgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgJ2NvbnRhaW5zIG5vXG4nCisgICAgICAgICAgJyAgICAgIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHkgJworICAgICAgICAgICdmb3JtYXR0ZWQpXG4nCisgICAgICAgICAgJyAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyAnCisgICAgICAgICAgJ2ludGVyYWN0aXZlLFxuJworICAgICAgICAgICcgICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICcKKyAgICAgICAgICAnInN5cy5sYXN0X3RyYWNlYmFjayIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgJworICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAnICAgICAgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICdvY2N1cnJlZCksIG9yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbicKKyAgICAgICAgICAnICAgICAgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsOyAidGJfbGluZW5vIiBnaXZlcyB0aGUgJworICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgJyAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTbGljZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgJworICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICcKKyAgICAgICAgICAnInN0b3AiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICcKKyAgICAgICAgICAnIk5vbmUiIGlmXG4nCisgICAgICAgICAgJyAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiAnCisgICAgICAgICAgJ2l0ZW1zLlxuJworICAgICAgICAgICcgICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbicKKyAgICAgICAgICAnICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyAnCisgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICcgICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSAnCisgICAgICAgICAgJ290aGVyXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgJworICAgICAgICAgICdzdGF0aWNcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZSwgdGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJyAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2QgJworICAgICAgICAgICdvYmplY3RzIGFyZVxuJworICAgICAgICAgICcgICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwICcKKyAgICAgICAgICAndXN1YWxseVxuJworICAgICAgICAgICcgICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInN0YXRpY21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhICcKKyAgICAgICAgICAnd3JhcHBlclxuJworICAgICAgICAgICcgICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlICcKKyAgICAgICAgICAnYmVoYXZpb3VyIG9mXG4nCisgICAgICAgICAgJyAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkICcKKyAgICAgICAgICAnYWJvdmUsXG4nCisgICAgICAgICAgJyAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAnICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCisgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgJworICAgICAgICAgICAgICAgICAgICdUaGUgb25seVxuJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogJworICAgICAgICAgICAgICAgICAgICciZnVuYyhhcmd1bWVudC1saXN0KSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6ICcKKyAgICAgICAgICAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJ2FuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uICh0byBjYWxsXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCAnCisgICAgICAgICAgICAgICAgICAgJ2hlbmNlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21hcHBpbmcnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgJworICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAnaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICciY29sbGVjdGlvbnMiIG1vZHVsZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIkEgZGljdGlvbmFyeSdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgIgorICAgICAgICAgICAgICAgICAndGhhdCBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyaWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICdvdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgJworICAgICAgICAgICAgICAgICAndGhhbiBieSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJ2lkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAna2V5cyBvYmV5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmUgZXF1YWxcbicKKyAgICAgICAgICAgICAgICAgJyhzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICdpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NvbXB1dGVycyBzdG9yZVxuJworICAgICAgICAgICAgICAgICAnZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3Vud2lzZSB0byB1c2VcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgJworICAgICAgICAgICAgICAgICAnbGlzdCBvZiAia2V5OlxuJworICAgICAgICAgICAgICAgICAndmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCAnCisgICAgICAgICAgICAgICAgICInc2pvZXJkJzpcbiIKKyAgICAgICAgICAgICAgICAgJzQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBjbGFzcyBkaWN0KCoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICdpcyBjcmVhdGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBhXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgJworICAgICAgICAgICAgICAgICAndGhlIG1hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAgICcqaXRlcmFibGUqXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSAnCisgICAgICAgICAgICAgICAgICdiZWNvbWVzIGEga2V5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGF0IGtleVxuJworICAgICAgICAgICAgICAgICAnICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB0aGVpclxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcgICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGIgPSB7J29uZSc6IDEsICd0d28nOiAyLCAndGhyZWUnOiAzfVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGMgPSBkaWN0KHppcChbJ29uZScsICd0d28nLCAndGhyZWUnXSwgWzEsIDIsICIKKyAgICAgICAgICAgICAgICAgJzNdKSlcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBkID0gZGljdChbKCd0d28nLCAyKSwgKCdvbmUnLCAxKSwgKCd0aHJlZScsICIKKyAgICAgICAgICAgICAgICAgJzMpXSlcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBlID0gZGljdCh7J3RocmVlJzogMywgJ29uZSc6IDEsICd0d28nOiAyfSlcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlICcKKyAgICAgICAgICAgICAgICAgJ29ubHkgd29ya3MgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55ICcKKyAgICAgICAgICAgICAgICAgJ3ZhbGlkIGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZXJlZm9yZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlbihkKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIiBpZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgJyJfX21pc3NpbmdfXygpIiBhbmQgKmtleSpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3RoZW4gcmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgaW52b2tlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgJworICAgICAgICAgICAgICAgICAnY2Fubm90IGJlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDBcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXSArPSAxXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDFcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XSA9IHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWwgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgJworICAgICAgICAgICAgICAgICAnKmtleSogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IG5vdCBpbiBkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXIoZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICAnCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGVhcigpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY29weSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIHNldCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdldChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnksIGVsc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gJworICAgICAgICAgICAgICAgICAnIk5vbmUiLCBzb1xuJworICAgICAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVtcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgcGFpcnMpLiBTZWUgdGhlICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3Aoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdpdHMgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuICcKKyAgICAgICAgICAgICAgICAgJ2FuZCAqa2V5KiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3BpdGVtKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5ICIoa2V5LCB2YWx1ZSkiIHBhaXIgJworICAgICAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJwb3BpdGVtKCkiIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciAnCisgICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIGVtcHR5LCBjYWxsaW5nICJwb3BpdGVtKCkiIHJhaXNlcyBhICJLZXlFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgJworICAgICAgICAgICAgICAgICAnbm90LCBpbnNlcnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICcqZGVmYXVsdCouICAqZGVmYXVsdCpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRlZmF1bHRzIHRvICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdXBkYXRlKFtvdGhlcl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAnCisgICAgICAgICAgICAgICAgICcqb3RoZXIqLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJ1cGRhdGUoKSIgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCAnCisgICAgICAgICAgICAgICAgICdvciBhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgICAnaXRlcmFibGVzIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6ICcKKyAgICAgICAgICAgICAgICAgJyJkLnVwZGF0ZShyZWQ9MSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJsdWU9MikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSAiKGtleSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCAnCisgICAgICAgICAgICAgICAgICInPj0nLCAnPicpIHJhaXNlXG4iCisgICAgICAgICAgICAgICAgICcgICAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJyAgdmlldyBvZiBhICJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICd2aWV3IG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdjaGFuZ2VzLFxuJworICAgICAgICAgICAgICAgICAndGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciAnCisgICAgICAgICAgICAgICAgICdyZXNwZWN0aXZlIGRhdGEsXG4nCisgICAgICAgICAgICAgICAgICdhbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdsZW4oZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2l0ZXIoZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgJworICAgICAgICAgICAgICAgICAnKHJlcHJlc2VudGVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB0dXBsZXMgb2YgIihrZXksIHZhbHVlKSIpIGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCAnCisgICAgICAgICAgICAgICAgICdkZXBlbmRzIG9uXG4nCisgICAgICAgICAgICAgICAgICIgICB0aGUgZGljdGlvbmFyeSdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiAiCisgICAgICAgICAgICAgICAgICdJZiBrZXlzLFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vICcKKyAgICAgICAgICAgICAgICAgJ2ludGVydmVuaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgJworICAgICAgICAgICAgICAgICAnd2lsbCBkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiAnCisgICAgICAgICAgICAgICAgICdwYWlycyB1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyICcKKyAgICAgICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluICcKKyAgICAgICAgICAgICAgICAgJ2QuaXRlbXMoKV0iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCAnCisgICAgICAgICAgICAgICAgICdlbnRyaWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICd4IGluIGRpY3R2aWV3XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3MgJworICAgICAgICAgICAgICAgICAna2V5cywgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgICcgICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCAnCisgICAgICAgICAgICAgICAgICdoYXNoYWJsZS5cbicKKyAgICAgICAgICAgICAgICAgJ0lmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzICcKKyAgICAgICAgICAgICAgICAgJ2FyZSB1bmlxdWVcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgJworICAgICAgICAgICAgICAgICAnKFZhbHVlcyB2aWV3cyBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgJworICAgICAgICAgICAgICAgICAnbm90IHVuaXF1ZS4pXG4nCisgICAgICAgICAgICAgICAgICdGb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnYWJzdHJhY3RcbicKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLCAiPT0iLFxuJworICAgICAgICAgICAgICAgICAnIjwiLCBvciAiXiIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRpc2hlcyA9IHsnZWdncyc6IDIsICdzYXVzYWdlJzogMSwgJ2JhY29uJzogMSwgIgorICAgICAgICAgICAgICAgICAiJ3NwYW0nOiA1MDB9XG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgaXRlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbiA9IDBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgbiArPSB2YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBwcmludChuKVxuJworICAgICAgICAgICAgICAgICAnICAgNTA0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnZWdncycsICdiYWNvbicsICdzYXVzYWdlJywgJ3NwYW0nXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3QodmFsdWVzKVxuJworICAgICAgICAgICAgICAgICAnICAgWzIsIDEsIDEsIDUwMF1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgJworICAgICAgICAgICAgICAgICAnY2hhbmdlc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ2VnZ3MnXVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ3NhdXNhZ2UnXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnc3BhbScsICdiYWNvbiddXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4ga2V5cyAmIHsnZWdncycsICdiYWNvbicsICdzYWxhZCd9XG4iCisgICAgICAgICAgICAgICAgICIgICB7J2JhY29uJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzIF4geydzYXVzYWdlJywgJ2p1aWNlJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnanVpY2UnLCAnc2F1c2FnZScsICdiYWNvbicsICdzcGFtJ31cbiIsCisgJ3R5cGVzbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ25vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICcKKyAgICAgICAgICAgICAgICAgJyJhcHBlbmQoKSIgb24gbGlzdHMpXG4nCisgICAgICAgICAgICAgICAgICdhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZCB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAndHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0lmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kKiAoYWxzb1xuJworICAgICAgICAgICAgICAgICAnY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCAnCisgICAgICAgICAgICAgICAgICd0aGUgInNlbGYiXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCByZWFkLVxuJworICAgICAgICAgICAgICAgICAnb25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdDYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgJworICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICAgICAnY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgJworICAgICAgICAgICAgICAgICAnYXJnLW4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0ICcKKyAgICAgICAgICAgICAgICAgJ2dldHRpbmcgYXJiaXRyYXJ5XG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3N0b3JlZCBvblxuJworICAgICAgICAgICAgICAgICAndGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvICcKKyAgICAgICAgICAgICAgICAgJ3NldCBhblxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQuICBJblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSAnCisgICAgICAgICAgICAgICAgICdzZXQgaXQgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICd1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJyAgIyBjYW4ndCBzZXQgIgorICAgICAgICAgICAgICAgICAnb24gdGhlIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICAgICAgICAiICAgQXR0cmlidXRlRXJyb3I6ICdtZXRob2QnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICIKKyAgICAgICAgICAgICAgICAgIid3aG9hbWknXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGMubWV0aG9kLndob2FtaVxuJworICAgICAgICAgICAgICAgICAiICAgJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21vZHVsZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNb2R1bGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICdhY2Nlc3M6ICJtLm5hbWUiLFxuJworICAgICAgICAgICAgICAgICAnd2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAiaW4gKm0qJ3NcbiIKKyAgICAgICAgICAgICAgICAgJ3N5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgJworICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnb24gYSBtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgJ25hbWVkICpmb28qIHRvXG4nCisgICAgICAgICAgICAgICAgICdleGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgICAnbmFtZWQgKmZvbyogc29tZXdoZXJlLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgIgorICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLCAiCisgICAgICAgICAgICAgICAgICdidXQgZGlyZWN0XG4nCisgICAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgJworICAgICAgICAgICAgICAgICAnKHlvdSBjYW4gd3JpdGVcbicKKyAgICAgICAgICAgICAgICAgJyJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgJworICAgICAgICAgICAgICAgICAiYnV0IHlvdSBjYW4ndFxuIgorICAgICAgICAgICAgICAgICAnd3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICcKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdcJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAnd3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAgICAnIjxtb2R1bGUgXCdvc1wnIGZyb20gJworICAgICAgICAgICAgICAgICAnXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCisgJ3R5cGVzc2VxJzogJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kICcKKyAgICAgICAgICAgICAncmFuZ2VcbicKKyAgICAgICAgICAgICAnb2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAnCisgICAgICAgICAgICAgJypiaW5hcnlcbicKKyAgICAgICAgICAgICAnZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICcKKyAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG4nCisgICAgICAgICAgICAgJ2lzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2UgJworICAgICAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJ29uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyAnCisgICAgICAgICAgICAgJ3ByaW9yaXR5LlxuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAnCisgICAgICAgICAgICAgJyppKixcbicKKyAgICAgICAgICAgICAnKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAnbWVldHMgYW55XG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgJworICAgICAgICAgICAgICcocmVwZXRpdGlvbilcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJ4IGluIHMiICAgICAgICAgICAgICAgICAgIHwgIlRydWUiIGlmIGFuIGl0ZW0gb2YgKnMqICcKKyAgICAgICAgICAgICAnaXMgICAgICB8ICgxKSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICcKKyAgICAgICAgICAgICAnIkZhbHNlIiAgICAgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAieCBub3QgaW4gcyIgICAgICAgICAgICAgICB8ICJGYWxzZSIgaWYgYW4gaXRlbSBvZiAqcyogJworICAgICAgICAgICAgICdpcyAgICAgfCAoMSkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAnCisgICAgICAgICAgICAgJyJUcnVlIiAgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMgKyB0IiAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICcKKyAgICAgICAgICAgICAnKnQqIHwgKDYpKDcpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICogbiIgb3IgIm4gKiBzIiAgICAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICB8ICgyKSg3KSAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpXSIgICAgICAgICAgICAgICAgICAgICB8ICppKnRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gJworICAgICAgICAgICAgICcwICAgICAgfCAoMykgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gJworICAgICAgICAgICAgICcqaiogICAgIHwgKDMpKDQpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICcKKyAgICAgICAgICAgICAnKmoqICAgICB8ICgzKSg1KSAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICcKKyAgICAgICAgICAgICAnKmsqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibGVuKHMpIiAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgJypzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1pbihzKSIgICAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJtYXgocykiICAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlICcKKyAgICAgICAgICAgICAnb2YgfCAoOCkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyICcKKyAgICAgICAgICAgICAnaW5kZXggICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICppKiBhbmQgYmVmb3JlIGluZGV4ICcKKyAgICAgICAgICAgICAnKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY291bnQoeCkiICAgICAgICAgICAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgJworICAgICAgICAgICAgICdvZiAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gJworICAgICAgICAgICAgICcqcyogICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gJworICAgICAgICAgICAgICdwYXJ0aWN1bGFyLFxuJworICAgICAgICAgICAgICd0dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbicKKyAgICAgICAgICAgICAnY29ycmVzcG9uZGluZyBlbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsICcKKyAgICAgICAgICAgICAnZXZlcnlcbicKKyAgICAgICAgICAgICAnZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgJworICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAnCisgICAgICAgICAgICAgJypDb21wYXJpc29ucyogaW5cbicKKyAgICAgICAgICAgICAndGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICcgICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4nCisgICAgICAgICAgICAgJyAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbicKKyAgICAgICAgICAgICAnICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggJworICAgICAgICAgICAgICd5aWVsZHMgYW5cbicKKyAgICAgICAgICAgICAnICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgJworICAgICAgICAgICAgICd0aGUgY29waWVzXG4nCisgICAgICAgICAgICAgJyAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gJworICAgICAgICAgICAgICdoYXVudHNcbicKKyAgICAgICAgICAgICAnICAgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW11dICogM1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1tdLCBbXSwgW11dXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFszXSwgWzNdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0ICcKKyAgICAgICAgICAgICAnY29udGFpbmluZ1xuJworICAgICAgICAgICAgICcgICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgIltbXV0gKiAzIiBhcmUgJworICAgICAgICAgICAgICcocG9pbnRlcnNcbicKKyAgICAgICAgICAgICAnICAgdG8pIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0ICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1szXSwgWzVdLCBbN11dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICAnCisgICAgICAgICAgICAgJ0J1dCBub3RlXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAnCisgICAgICAgICAgICAgJyJOb25lIixcbicKKyAgICAgICAgICAgICAnICAgdXNlICIwIi4gIElmICpqKiBpcyBvbWl0dGVkIG9yICJOb25lIiwgdXNlICJsZW4ocykiLiAgSWYgJworICAgICAgICAgICAgICcqaSogaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggICJ4ID0gaSArIG4qayIgc3VjaCB0aGF0ICIwIDw9ICcKKyAgICAgICAgICAgICAnbiA8XG4nCisgICAgICAgICAgICAgJyAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAnCisgICAgICAgICAgICAgJyJpKzIqayIsXG4nCisgICAgICAgICAgICAgJyAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbicKKyAgICAgICAgICAgICAnICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgJworICAgICAgICAgICAgICd1c2VcbicKKyAgICAgICAgICAgICAnICAgImxlbihzKSIuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yICJOb25lIiwgdGhleSBiZWNvbWUgJworICAgICAgICAgICAgICciZW5kIlxuJworICAgICAgICAgICAgICcgICB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqayogJworICAgICAgICAgICAgICdjYW5ub3QgYmVcbicKKyAgICAgICAgICAgICAnICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ld1xuJworICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgJyAgIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgJworICAgICAgICAgICAgICd0b3RhbFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0ICcKKyAgICAgICAgICAgICAnc3dpdGNoIHRvXG4nCisgICAgICAgICAgICAgJyAgIG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGJlbG93OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBpZiBjb25jYXRlbmF0aW5nICJzdHIiIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCAnCisgICAgICAgICAgICAgJ3VzZVxuJworICAgICAgICAgICAgICcgICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYSAiaW8uU3RyaW5nSU8iICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAnICAgICBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAiYnl0ZXMiIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuJworICAgICAgICAgICAgICcgICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuJworICAgICAgICAgICAgICcgICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhICJieXRlYXJyYXkiIG9iamVjdC4gICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb2JqZWN0cyBhcmVcbicKKyAgICAgICAgICAgICAnICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAidHVwbGUiIG9iamVjdHMsIGV4dGVuZCBhICJsaXN0IiAnCisgICAgICAgICAgICAgJ2luc3RlYWRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgJworICAgICAgICAgICAgICdkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc3LiBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzICJyYW5nZSIpIG9ubHkgc3VwcG9ydCBpdGVtXG4nCisgICAgICAgICAgICAgIiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvbid0ICIKKyAgICAgICAgICAgICAnc3VwcG9ydFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc4LiAiaW5kZXgiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gJworICAgICAgICAgICAgICdXaGVuXG4nCisgICAgICAgICAgICAgJyAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgJworICAgICAgICAgICAgICdhbGxvd1xuJworICAgICAgICAgICAgICcgICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBleHRyYSBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nICcKKyAgICAgICAgICAgICAnInNbaTpqXS5pbmRleCh4KSIsXG4nCisgICAgICAgICAgICAgJyAgIG9ubHkgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhIGFuZCB3aXRoIHRoZSByZXR1cm5lZCBpbmRleCAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJyAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0ICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgJworICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAndGhhdCBpcyBub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzICcKKyAgICAgICAgICAgICAnc3VwcG9ydCBmb3JcbicKKyAgICAgICAgICAgICAndGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyBzdXBwb3J0IGFsbG93cyBpbW11dGFibGUgc2VxdWVuY2VzLCBzdWNoIGFzICJ0dXBsZSIgJworICAgICAgICAgICAgICdpbnN0YW5jZXMsIHRvXG4nCisgICAgICAgICAgICAgJ2JlIHVzZWQgYXMgImRpY3QiIGtleXMgYW5kIHN0b3JlZCBpbiAic2V0IiBhbmQgImZyb3plbnNldCIgJworICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgJworICAgICAgICAgICAgICd1bmhhc2hhYmxlXG4nCisgICAgICAgICAgICAgJ3ZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdNdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCAnCisgICAgICAgICAgICAgJ3RvIG1ha2VcbicKKyAgICAgICAgICAgICAnaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICcKKyAgICAgICAgICAgICAnKnQqIGlzIGFueVxuJworICAgICAgICAgICAgICdpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55ICcKKyAgICAgICAgICAgICAndHlwZSBhbmRcbicKKyAgICAgICAgICAgICAndmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgJworICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgJ2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9ICcKKyAgICAgICAgICAgICAnMjU1IikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkICcKKyAgICAgICAgICAgICAnYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAnCisgICAgICAgICAgICAgJypqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiAnCisgICAgICAgICAgICAgJ3RoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSAnCisgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgJworICAgICAgICAgICAgICdhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgJworICAgICAgICAgICAgICcqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAnb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICdsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mICcKKyAgICAgICAgICAgICAndGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSAnCisgICAgICAgICAgICAgJ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9ICcKKyAgICAgICAgICAgICAnW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgJworICAgICAgICAgICAgICcoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCAnCisgICAgICAgICAgICAgJ3NbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgJworICAgICAgICAgICAgICcicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICcKKyAgICAgICAgICAgICAnInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5leHRlbmQodCkiICAgICAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKHNhbWUgYXMgJworICAgICAgICAgICAgICcic1tsZW4ocyk6bGVuKHMpXSA9IHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ3QiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgJworICAgICAgICAgICAgICd0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogJworICAgICAgICAgICAgICdhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAnCisgICAgICAgICAgICAgJypzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiAnCisgICAgICAgICAgICAgJ2luICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgJworICAgICAgICAgICAgICdyZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgJworICAgICAgICAgICAgICdkZWZhdWx0XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbicKKyAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gJworICAgICAgICAgICAgICdyZW1pbmQgdXNlcnNcbicKKyAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSAnCisgICAgICAgICAgICAgJ3JldmVyc2VkXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAiICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0ICIKKyAgICAgICAgICAgICAnc2xpY2luZ1xuJworICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdMaXN0c1xuJworICAgICAgICAgICAgICc9PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSAnCisgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIG9mXG4nCisgICAgICAgICAgICAgJ2hvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsICcKKyAgICAgICAgICAgICAndmFyeSBieVxuJworICAgICAgICAgICAgICdhcHBsaWNhdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyBjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHBhaXIgb2Ygc3F1YXJlIGJyYWNrZXRzIHRvIGRlbm90ZSB0aGUgZW1wdHkgbGlzdDogJworICAgICAgICAgICAgICciW10iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogJworICAgICAgICAgICAgICciW2FdIixcbicKKyAgICAgICAgICAgICAnICAgICAiW2EsIGIsIGNdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6ICJsaXN0KCkiIG9yICJsaXN0KGl0ZXJhYmxlKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgJworICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAiICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgIgorICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gJworICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICcgICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMgbWFkZSAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICByZXR1cm5lZCwgc2ltaWxhciB0byAiaXRlcmFibGVbOl0iLiBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICcibGlzdChcJ2FiY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiAnCisgICAgICAgICAgICAgJ3JldHVybnMgIlsxLCAyLFxuJworICAgICAgICAgICAgICcgICAzXSIuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJyAgIGxpc3QsICJbXSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICcKKyAgICAgICAgICAgICAnInNvcnRlZCgpIlxuJworICAgICAgICAgICAgICcgICBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCAnCisgICAgICAgICAgICAgJ21ldGhvZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5ICI8IiAnCisgICAgICAgICAgICAgJ2NvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgJyAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55ICcKKyAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICcgICAgICBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbCBmYWlsICcKKyAgICAgICAgICAgICAnKGFuZCB0aGVcbicKKyAgICAgICAgICAgICAnICAgICAgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0IGluIGEgcGFydGlhbGx5IG1vZGlmaWVkICcKKyAgICAgICAgICAgICAnc3RhdGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnQoKSIgYWNjZXB0cyB0d28gYXJndW1lbnRzIHRoYXQgY2FuIG9ubHkgYmUgcGFzc2VkICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yICcKKyAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAnICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiAnCisgICAgICAgICAgICAgJ3RoZSBsaXN0XG4nCisgICAgICAgICAgICAgJyAgICAgIGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmcgJworICAgICAgICAgICAgICdwcm9jZXNzLlxuJworICAgICAgICAgICAgICcgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAiTm9uZSIgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSAnCisgICAgICAgICAgICAgJ3NvcnRlZFxuJworICAgICAgICAgICAgICcgICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlICJmdW5jdG9vbHMuY21wX3RvX2tleSgpIiB1dGlsaXR5IGlzIGF2YWlsYWJsZSB0byAnCisgICAgICAgICAgICAgJ2NvbnZlcnQgYVxuJworICAgICAgICAgICAgICcgICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuICcKKyAgICAgICAgICAgICAndGhlIGxpc3RcbicKKyAgICAgICAgICAgICAnICAgICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSAnCisgICAgICAgICAgICAgJ3JldmVyc2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215ICcKKyAgICAgICAgICAgICAnb2Ygc3BhY2VcbicKKyAgICAgICAgICAgICAnICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCAnCisgICAgICAgICAgICAgJ29wZXJhdGVzXG4nCisgICAgICAgICAgICAgJyAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJyh1c2VcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnRlZCgpIiB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgJworICAgICAgICAgICAgICdpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgInNvcnQoKSIgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3IgJworICAgICAgICAgICAgICdzb3J0aW5nIGluXG4nCisgICAgICAgICAgICAgJyAgICAgIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiAnCisgICAgICAgICAgICAgJ2J5IHNhbGFyeVxuJworICAgICAgICAgICAgICcgICAgICBncmFkZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyAnCisgICAgICAgICAgICAgJ3NvcnRlZCxcbicKKyAgICAgICAgICAgICAnICAgICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgJworICAgICAgICAgICAgICdsaXN0IGlzXG4nCisgICAgICAgICAgICAgJyAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgJworICAgICAgICAgICAgICdsaXN0IGFwcGVhclxuJworICAgICAgICAgICAgICcgICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCAnCisgICAgICAgICAgICAgJ2NhbiBkZXRlY3RcbicKKyAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzXG4nCisgICAgICAgICAgICAgJz09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSAnCisgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIG9mXG4nCisgICAgICAgICAgICAgJ2hldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnImVudW1lcmF0ZSgpIlxuJworICAgICAgICAgICAgICdidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICdvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgJworICAgICAgICAgICAgICcic2V0IiBvclxuJworICAgICAgICAgICAgICciZGljdCIgaW5zdGFuY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6ICcKKyAgICAgICAgICAgICAnIigpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogImEsIiBvciAnCisgICAgICAgICAgICAgJyIoYSwpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiYSwgYiwgYyIgb3IgIihhLCBiLCBjKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlKGl0ZXJhYmxlKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4nCisgICAgICAgICAgICAgJyAgIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsICJ0dXBsZShcJ2FiY1wnKSIgcmV0dXJucyAiKFwnYVwnLCAnCisgICAgICAgICAgICAgJ1wnYlwnLCBcJ2NcJykiXG4nCisgICAgICAgICAgICAgJyAgIGFuZCAidHVwbGUoIFsxLCAyLCAzXSApIiByZXR1cm5zICIoMSwgMiwgMykiLiBJZiBubyAnCisgICAgICAgICAgICAgJ2FyZ3VtZW50IGlzXG4nCisgICAgICAgICAgICAgJyAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljICcKKyAgICAgICAgICAgICAnYW1iaWd1aXR5LlxuJworICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZSwgImYoYSwgYiwgYykiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlICcKKyAgICAgICAgICAgICAnYXJndW1lbnRzLFxuJworICAgICAgICAgICAgICcgICB3aGlsZSAiZigoYSwgYiwgYykpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgJworICAgICAgICAgICAgICd0aGUgc29sZVxuJworICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyAnCisgICAgICAgICAgICAgJ2NsZWFyZXJcbicKKyAgICAgICAgICAgICAndGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhICcKKyAgICAgICAgICAgICAnbW9yZVxuJworICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUmFuZ2VzXG4nCisgICAgICAgICAgICAgJz09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJyYW5nZSIgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzICcKKyAgICAgICAgICAgICAnYW5kIGlzXG4nCisgICAgICAgICAgICAgJ2NvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gImZvciIgJworICAgICAgICAgICAgICdsb29wcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGNsYXNzIHJhbmdlKHN0b3ApXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGNsYXNzIHJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzICcKKyAgICAgICAgICAgICAnKGVpdGhlclxuJworICAgICAgICAgICAgICcgICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgJworICAgICAgICAgICAgICciX19pbmRleF9fIlxuJworICAgICAgICAgICAgICcgICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0ICcKKyAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAnICAgIjEiLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAnCisgICAgICAgICAgICAgJyIwIi4gSWZcbicKKyAgICAgICAgICAgICAnICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlICJyIiBhcmUgJworICAgICAgICAgICAgICdkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgJyAgIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiIHdoZXJlICJpID49IDAiIGFuZCAnCisgICAgICAgICAgICAgJyJyW2ldIDxcbicKKyAgICAgICAgICAgICAnICAgc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAgJyAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbicKKyAgICAgICAgICAgICAnICAgY29uc3RyYWludHMgYXJlICJpID49IDAiIGFuZCAicltpXSA+IHN0b3AiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnICAgaW50ZXJwcmV0ZWQgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5IHJhaXNlXG4nCisgICAgICAgICAgICAgJyAgICJPdmVyZmxvd0Vycm9yIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAzLCA2LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAnZXhjZXB0XG4nCisgICAgICAgICAgICAgJyAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICcgICBjYW4gb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0ICcKKyAgICAgICAgICAgICAncGF0dGVybikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlIiBpc1xuJworICAgICAgICAgICAgICd0aGF0IGEgInJhbmdlIiBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSAoc21hbGwpIGFtb3VudCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJ21lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdCAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nICcKKyAgICAgICAgICAgICAnaW5kaXZpZHVhbFxuJworICAgICAgICAgICAgICdpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdwcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggJworICAgICAgICAgICAgICdsb29rdXAsXG4nCisgICAgICAgICAgICAgJ3NsaWNpbmcgYW5kIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgJworICAgICAgICAgICAgICctLS1cbicKKyAgICAgICAgICAgICAnbGlzdCwgdHVwbGUsIHJhbmdlKik6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gclxuJworICAgICAgICAgICAgICdyYW5nZSgwLCAyMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IDExIGluIHJcbicKKyAgICAgICAgICAgICAnRmFsc2VcbicKKyAgICAgICAgICAgICAnPj4+IDEwIGluIHJcbicKKyAgICAgICAgICAgICAnVHJ1ZVxuJworICAgICAgICAgICAgICc+Pj4gci5pbmRleCgxMClcbicKKyAgICAgICAgICAgICAnNVxuJworICAgICAgICAgICAgICc+Pj4gcls1XVxuJworICAgICAgICAgICAgICcxMFxuJworICAgICAgICAgICAgICc+Pj4gcls6NV1cbicKKyAgICAgICAgICAgICAncmFuZ2UoMCwgMTAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiByWy0xXVxuJworICAgICAgICAgICAgICcxOFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoICI9PSIgYW5kICIhPSIgY29tcGFyZXMgJworICAgICAgICAgICAgICd0aGVtIGFzXG4nCisgICAgICAgICAgICAgJ3NlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2UgJworICAgICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgICAgJ3RoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCAic3RhcnQiLCAic3RvcCIgYW5kICcKKyAgICAgICAgICAgICAnInN0ZXAiXG4nCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgJworICAgICAgICAgICAgICcicmFuZ2UoMCwgMyxcbicKKyAgICAgICAgICAgICAnMikgPT0gcmFuZ2UoMCwgNCwgMikiLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0ICcKKyAgICAgICAgICAgICAnc2xpY2luZ1xuJworICAgICAgICAgICAgICdhbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluICcKKyAgICAgICAgICAgICAnY29uc3RhbnRcbicKKyAgICAgICAgICAgICAndGltZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2UgIgorICAgICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgICAgJ2Jhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgJworICAgICAgICAgICAgICdjb21wYXJpbmdcbicKKyAgICAgICAgICAgICAnYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiICcKKyAgICAgICAgICAgICAnYXR0cmlidXRlcy5cbicsCisgJ3R5cGVzc2VxLW11dGFibGUnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uICcKKyAgICAgICAgICAgICAgICAgICAgICdtdXRhYmxlIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm92aWRlZCB0byBtYWtlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnY3VzdG9tIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGUsICp0KiBpcyBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ21lZXRzIGFueSB0eXBlIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgICAgICciYnl0ZWFycmF5IiBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9ICcKKyAgICAgICAgICAgICAgICAgICAgICd4IDw9IDI1NSIpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAnKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgJworICAgICAgICAgICAgICAgICAgICAgJ2NvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5leHRlbmQodCkiICAgICAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICcic1tsZW4ocyk6bGVuKHMpXSA9IHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICd0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAnCisgICAgICAgICAgICAgICAgICAgICAnKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gJworICAgICAgICAgICAgICAgICAgICAgJ1t4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0gJworICAgICAgICAgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAncGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcxLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2luZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzMuICJyZW1vdmUiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiAqcyouXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gJworICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gICcKKyAgICAgICAgICAgICAgICAgICAgICdUbyByZW1pbmQgdXNlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSByZXZlcnNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSAnCisgICAgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgIgorICAgICAgICAgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiICcKKyAgICAgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJywKKyAndW5hcnknOiAnXG4nCisgICAgICAgICAgJ1VuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9uc1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FsbCB1bmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgJ3ByaW9yaXR5OlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgdV9leHByIDo6PSBwb3dlciB8ICItIiB1X2V4cHIgfCAiKyIgdV9leHByIHwgIn4iIHVfZXhwclxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICItIiAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzICcKKyAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCAnCisgICAgICAgICAgJ3VuY2hhbmdlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAnCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdpbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICJ4IiBpcyBkZWZpbmVkIGFzXG4nCisgICAgICAgICAgJyItKHgrMSkiLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbiBhbGwgdGhyZWUgY2FzZXMsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXIgJworICAgICAgICAgICd0eXBlLCBhXG4nCisgICAgICAgICAgJyJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAorICd3aGlsZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzICcKKyAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCisgJ3dpdGgnOiAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgJworICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuJworICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uICcKKyAgICAgICAgICcidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbicKKyAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAnCisgICAgICAgICAnIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAnICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICczLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4nCisgICAgICAgICAnICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgJworICAgICAgICAgJyJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgJworICAgICAgICAgJ2Fsd2F5cyBiZVxuJworICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvICcKKyAgICAgICAgICd0aGVcbicKKyAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3IgJworICAgICAgICAgJ29jY3VycmluZ1xuJworICAgICAgICAgJyAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc1LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuJworICAgICAgICAgJyAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbicKKyAgICAgICAgICcgICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsICcKKyAgICAgICAgICd0aHJlZVxuJworICAgICAgICAgJyAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuICcKKyAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgJyAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICdyZXJhaXNlZC5cbicKKyAgICAgICAgICcgICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuJworICAgICAgICAgJyAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4nCisgICAgICAgICAnICAgc3RhdGVtZW50LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCAnCisgICAgICAgICAndGhlXG4nCisgICAgICAgICAnICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gJworICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAnICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxuJworICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuJworICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhOlxuJworICAgICAgICAgJyAgICAgICB3aXRoIEIoKSBhcyBiOlxuJworICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICd5aWVsZCc6ICdcbicKKyAgICAgICAgICAnVGhlICJ5aWVsZCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuJworICAgICAgICAgICdleHByZXNzaW9uKi4gVGhlIHlpZWxkIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBvbWl0IHRoZSAnCisgICAgICAgICAgJ3BhcmVudGhlc2VzXG4nCisgICAgICAgICAgJ3RoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkICcKKyAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICdzdGF0ZW1lbnQuIEZvciBleGFtcGxlLCB0aGUgeWllbGQgc3RhdGVtZW50c1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGQgPGV4cHI+XG4nCisgICAgICAgICAgJyAgIHlpZWxkIGZyb20gPGV4cHI+XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhcmUgZXF1aXZhbGVudCB0byB0aGUgeWllbGQgZXhwcmVzc2lvbiBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAoeWllbGQgPGV4cHI+KVxuJworICAgICAgICAgICcgICAoeWllbGQgZnJvbSA8ZXhwcj4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuJworICAgICAgICAgICcqZ2VuZXJhdG9yKiBmdW5jdGlvbiwgYW5kIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAnZ2VuZXJhdG9yXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gJworICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICd0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSAnCisgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbicKKyAgICAgICAgICAnZXhwcmVzc2lvbnMqIHNlY3Rpb24uXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3F1ZXVlLnB5IGIvTGliL3F1ZXVlLnB5CmluZGV4IDNjZWUzNmIuLjU3MjQyNWUgMTAwNjQ0Ci0tLSBhL0xpYi9xdWV1ZS5weQorKysgYi9MaWIvcXVldWUucHkKQEAgLTYsMTAgKzYsNyBAQAogICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBoZWFwcSBpbXBvcnQgaGVhcHB1c2gsIGhlYXBwb3AKLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCiAKIF9fYWxsX18gPSBbJ0VtcHR5JywgJ0Z1bGwnLCAnUXVldWUnLCAnUHJpb3JpdHlRdWV1ZScsICdMaWZvUXVldWUnXQogCmRpZmYgLS1naXQgYS9MaWIvcmFuZG9tLnB5IGIvTGliL3JhbmRvbS5weQppbmRleCA0NjQyOTI4Li4xZjViZTQ1IDEwMDY0NAotLS0gYS9MaWIvcmFuZG9tLnB5CisrKyBiL0xpYi9yYW5kb20ucHkKQEAgLTY4Nyw3ICs2ODcsNyBAQAogICAgIHByaW50KHJvdW5kKHQxLXQwLCAzKSwgJ3NlYywnLCBlbmQ9JyAnKQogICAgIGF2ZyA9IHRvdGFsL24KICAgICBzdGRkZXYgPSBfc3FydChzcXN1bS9uIC0gYXZnKmF2ZykKLSAgICBwcmludCgnYXZnICVnLCBzdGRkZXYgJWcsIG1pbiAlZywgbWF4ICVnJyAlIFwKKyAgICBwcmludCgnYXZnICVnLCBzdGRkZXYgJWcsIG1pbiAlZywgbWF4ICVnXG4nICUgXAogICAgICAgICAgICAgICAoYXZnLCBzdGRkZXYsIHNtYWxsZXN0LCBsYXJnZXN0KSkKIAogCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggMTk5YWZlZS4uZGRlODkwMSAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMTI4LDEwICsxMjgsMTMgQEAKICAgICBfbG9jYWxlID0gTm9uZQogCiAjIHB1YmxpYyBzeW1ib2xzCi1fX2FsbF9fID0gWyAibWF0Y2giLCAiZnVsbG1hdGNoIiwgInNlYXJjaCIsICJzdWIiLCAic3VibiIsICJzcGxpdCIsICJmaW5kYWxsIiwKLSAgICAiY29tcGlsZSIsICJwdXJnZSIsICJ0ZW1wbGF0ZSIsICJlc2NhcGUiLCAiQSIsICJJIiwgIkwiLCAiTSIsICJTIiwgIlgiLAotICAgICJVIiwgIkFTQ0lJIiwgIklHTk9SRUNBU0UiLCAiTE9DQUxFIiwgIk1VTFRJTElORSIsICJET1RBTEwiLCAiVkVSQk9TRSIsCi0gICAgIlVOSUNPREUiLCAiZXJyb3IiIF0KK19fYWxsX18gPSBbCisgICAgIm1hdGNoIiwgImZ1bGxtYXRjaCIsICJzZWFyY2giLCAic3ViIiwgInN1Ym4iLCAic3BsaXQiLAorICAgICJmaW5kYWxsIiwgImZpbmRpdGVyIiwgImNvbXBpbGUiLCAicHVyZ2UiLCAidGVtcGxhdGUiLCAiZXNjYXBlIiwKKyAgICAiZXJyb3IiLCAiQSIsICJJIiwgIkwiLCAiTSIsICJTIiwgIlgiLCAiVSIsCisgICAgIkFTQ0lJIiwgIklHTk9SRUNBU0UiLCAiTE9DQUxFIiwgIk1VTFRJTElORSIsICJET1RBTEwiLCAiVkVSQk9TRSIsCisgICAgIlVOSUNPREUiLAorXQogCiBfX3ZlcnNpb25fXyA9ICIyLjIuMSIKIApAQCAtMjA5LDE0ICsyMTIsMTIgQEAKICAgICBFbXB0eSBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LiIiIgogICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuZmluZGFsbChzdHJpbmcpCiAKLWlmIHN5cy5oZXh2ZXJzaW9uID49IDB4MDIwMjAwMDA6Ci0gICAgX19hbGxfXy5hcHBlbmQoImZpbmRpdGVyIikKLSAgICBkZWYgZmluZGl0ZXIocGF0dGVybiwgc3RyaW5nLCBmbGFncz0wKToKLSAgICAgICAgIiIiUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIGluIHRoZQotICAgICAgICBzdHJpbmcuICBGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuCitkZWYgZmluZGl0ZXIocGF0dGVybiwgc3RyaW5nLCBmbGFncz0wKToKKyAgICAiIiJSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgaW4gdGhlCisgICAgc3RyaW5nLiAgRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGEgbWF0Y2ggb2JqZWN0LgogCi0gICAgICAgIEVtcHR5IG1hdGNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuIiIiCi0gICAgICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncykuZmluZGl0ZXIoc3RyaW5nKQorICAgIEVtcHR5IG1hdGNoZXMgYXJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuIiIiCisgICAgcmV0dXJuIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKS5maW5kaXRlcihzdHJpbmcpCiAKIGRlZiBjb21waWxlKHBhdHRlcm4sIGZsYWdzPTApOgogICAgICJDb21waWxlIGEgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4sIHJldHVybmluZyBhIHBhdHRlcm4gb2JqZWN0LiIKQEAgLTI3NiwyMyArMjc3LDIxIEBACiBfTUFYQ0FDSEUgPSA1MTIKIGRlZiBfY29tcGlsZShwYXR0ZXJuLCBmbGFncyk6CiAgICAgIyBpbnRlcm5hbDogY29tcGlsZSBwYXR0ZXJuCi0gICAgYnlwYXNzX2NhY2hlID0gZmxhZ3MgJiBERUJVRwotICAgIGlmIG5vdCBieXBhc3NfY2FjaGU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHAsIGxvYyA9IF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10KLSAgICAgICAgICAgIGlmIGxvYyBpcyBOb25lIG9yIGxvYyA9PSBfbG9jYWxlLnNldGxvY2FsZShfbG9jYWxlLkxDX0NUWVBFKToKLSAgICAgICAgICAgICAgICByZXR1cm4gcAotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICBwLCBsb2MgPSBfY2FjaGVbdHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3NdCisgICAgICAgIGlmIGxvYyBpcyBOb25lIG9yIGxvYyA9PSBfbG9jYWxlLnNldGxvY2FsZShfbG9jYWxlLkxDX0NUWVBFKToKKyAgICAgICAgICAgIHJldHVybiBwCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBfcGF0dGVybl90eXBlKToKICAgICAgICAgaWYgZmxhZ3M6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICJDYW5ub3QgcHJvY2VzcyBmbGFncyBhcmd1bWVudCB3aXRoIGEgY29tcGlsZWQgcGF0dGVybiIpCisgICAgICAgICAgICAgICAgImNhbm5vdCBwcm9jZXNzIGZsYWdzIGFyZ3VtZW50IHdpdGggYSBjb21waWxlZCBwYXR0ZXJuIikKICAgICAgICAgcmV0dXJuIHBhdHRlcm4KICAgICBpZiBub3Qgc3JlX2NvbXBpbGUuaXNzdHJpbmcocGF0dGVybik6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBzdHJpbmcgb3IgY29tcGlsZWQgcGF0dGVybiIpCiAgICAgcCA9IHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybiwgZmxhZ3MpCi0gICAgaWYgbm90IGJ5cGFzc19jYWNoZToKKyAgICBpZiBub3QgKGZsYWdzICYgREVCVUcpOgogICAgICAgICBpZiBsZW4oX2NhY2hlKSA+PSBfTUFYQ0FDSEU6CiAgICAgICAgICAgICBfY2FjaGUuY2xlYXIoKQogICAgICAgICBpZiBwLmZsYWdzICYgTE9DQUxFOgpAQCAtMzUyLDEwICszNTEsMTEgQEAKICAgICAgICAgcyA9IHNyZV9wYXJzZS5QYXR0ZXJuKCkKICAgICAgICAgcy5mbGFncyA9IGZsYWdzCiAgICAgICAgIGZvciBwaHJhc2UsIGFjdGlvbiBpbiBsZXhpY29uOgorICAgICAgICAgICAgZ2lkID0gcy5vcGVuZ3JvdXAoKQogICAgICAgICAgICAgcC5hcHBlbmQoc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWwotICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAobGVuKHApKzEsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAorICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKICAgICAgICAgICAgICAgICBdKSkKLSAgICAgICAgcy5ncm91cHMgPSBsZW4ocCkrMQorICAgICAgICAgICAgcy5jbG9zZWdyb3VwKGdpZCwgcFstMV0pCiAgICAgICAgIHAgPSBzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbKEJSQU5DSCwgKE5vbmUsIHApKV0pCiAgICAgICAgIHNlbGYuc2Nhbm5lciA9IHNyZV9jb21waWxlLmNvbXBpbGUocCkKICAgICBkZWYgc2NhbihzZWxmLCBzdHJpbmcpOgpAQCAtMzYzLDcgKzM2Myw3IEBACiAgICAgICAgIGFwcGVuZCA9IHJlc3VsdC5hcHBlbmQKICAgICAgICAgbWF0Y2ggPSBzZWxmLnNjYW5uZXIuc2Nhbm5lcihzdHJpbmcpLm1hdGNoCiAgICAgICAgIGkgPSAwCi0gICAgICAgIHdoaWxlIDE6CisgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICBtID0gbWF0Y2goKQogICAgICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICAgICAgYnJlYWsKZGlmZiAtLWdpdCBhL0xpYi9yZXBybGliLnB5IGIvTGliL3JlcHJsaWIucHkKaW5kZXggZjgwMzM2MC4uZWNiZDJjYyAxMDA2NDQKLS0tIGEvTGliL3JlcHJsaWIucHkKKysrIGIvTGliL3JlcHJsaWIucHkKQEAgLTgzLDE2ICs4MywyMiBAQAogICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgJ1snLCAnXScsIHNlbGYubWF4bGlzdCkKIAogICAgIGRlZiByZXByX2FycmF5KHNlbGYsIHgsIGxldmVsKToKKyAgICAgICAgaWYgbm90IHg6CisgICAgICAgICAgICByZXR1cm4gImFycmF5KCclcycpIiAlIHgudHlwZWNvZGUKICAgICAgICAgaGVhZGVyID0gImFycmF5KCclcycsIFsiICUgeC50eXBlY29kZQogICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgaGVhZGVyLCAnXSknLCBzZWxmLm1heGFycmF5KQogCiAgICAgZGVmIHJlcHJfc2V0KHNlbGYsIHgsIGxldmVsKToKKyAgICAgICAgaWYgbm90IHg6CisgICAgICAgICAgICByZXR1cm4gJ3NldCgpJwogICAgICAgICB4ID0gX3Bvc3NpYmx5X3NvcnRlZCh4KQotICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgJ3NldChbJywgJ10pJywgc2VsZi5tYXhzZXQpCisgICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAneycsICd9Jywgc2VsZi5tYXhzZXQpCiAKICAgICBkZWYgcmVwcl9mcm96ZW5zZXQoc2VsZiwgeCwgbGV2ZWwpOgorICAgICAgICBpZiBub3QgeDoKKyAgICAgICAgICAgIHJldHVybiAnZnJvemVuc2V0KCknCiAgICAgICAgIHggPSBfcG9zc2libHlfc29ydGVkKHgpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXByX2l0ZXJhYmxlKHgsIGxldmVsLCAnZnJvemVuc2V0KFsnLCAnXSknLAorICAgICAgICByZXR1cm4gc2VsZi5fcmVwcl9pdGVyYWJsZSh4LCBsZXZlbCwgJ2Zyb3plbnNldCh7JywgJ30pJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhmcm96ZW5zZXQpCiAKICAgICBkZWYgcmVwcl9kZXF1ZShzZWxmLCB4LCBsZXZlbCk6CkBAIC0xMzYsNyArMTQyLDcgQEAKICAgICAgICAgICAgICMgQnVncyBpbiB4Ll9fcmVwcl9fKCkgY2FuIGNhdXNlIGFyYml0cmFyeQogICAgICAgICAgICAgIyBleGNlcHRpb25zIC0tIHRoZW4gbWFrZSB1cCBzb21ldGhpbmcKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiAnPCVzIGluc3RhbmNlIGF0ICV4PicgJSAoeC5fX2NsYXNzX18uX19uYW1lX18sIGlkKHgpKQorICAgICAgICAgICAgcmV0dXJuICc8JXMgaW5zdGFuY2UgYXQgJSN4PicgJSAoeC5fX2NsYXNzX18uX19uYW1lX18sIGlkKHgpKQogICAgICAgICBpZiBsZW4ocykgPiBzZWxmLm1heG90aGVyOgogICAgICAgICAgICAgaSA9IG1heCgwLCAoc2VsZi5tYXhvdGhlci0zKS8vMikKICAgICAgICAgICAgIGogPSBtYXgoMCwgc2VsZi5tYXhvdGhlci0zLWkpCmRpZmYgLS1naXQgYS9MaWIvcnVucHkucHkgYi9MaWIvcnVucHkucHkKaW5kZXggMGJiNTdkNy4uMWM1NzI5ZCAxMDA2NDQKLS0tIGEvTGliL3J1bnB5LnB5CisrKyBiL0xpYi9ydW5weS5weQpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICBzZWxmLnZhbHVlID0gc2VsZi5fc2VudGluZWwKICAgICAgICAgc3lzLmFyZ3ZbMF0gPSBzZWxmLl9zYXZlZF92YWx1ZQogCi0jIFRPRE86IFJlcGxhY2UgdGhlc2UgaGVscGVycyB3aXRoIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcworIyBUT0RPOiBSZXBsYWNlIHRoZXNlIGhlbHBlcnMgd2l0aCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBmdW5jdGlvbnMuCiBkZWYgX3J1bl9jb2RlKGNvZGUsIHJ1bl9nbG9iYWxzLCBpbml0X2dsb2JhbHM9Tm9uZSwKICAgICAgICAgICAgICAgbW9kX25hbWU9Tm9uZSwgbW9kX3NwZWM9Tm9uZSwKICAgICAgICAgICAgICAgcGtnX25hbWU9Tm9uZSwgc2NyaXB0X25hbWU9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvc2NoZWQucHkgYi9MaWIvc2NoZWQucHkKaW5kZXggMmU2YjAwYS4uYjQ3NjQ4ZCAxMDA2NDQKLS0tIGEvTGliL3NjaGVkLnB5CisrKyBiL0xpYi9zY2hlZC5weQpAQCAtMzUsMTYgKzM1LDEyIEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCi10cnk6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKK2Zyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCiAKIF9fYWxsX18gPSBbInNjaGVkdWxlciJdCiAKIGNsYXNzIEV2ZW50KG5hbWVkdHVwbGUoJ0V2ZW50JywgJ3RpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MnKSk6CiAgICAgZGVmIF9fZXFfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID09IChvLnRpbWUsIG8ucHJpb3JpdHkpCi0gICAgZGVmIF9fbmVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpICE9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbHRfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDwgIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbGVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDw9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ3RfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID4gIChvLnRpbWUsIG8ucHJpb3JpdHkpCmRpZmYgLS1naXQgYS9MaWIvc2VsZWN0b3JzLnB5IGIvTGliL3NlbGVjdG9ycy5weQppbmRleCA3YjZkYTI5Li42ZDU2OWMzIDEwMDY0NAotLS0gYS9MaWIvc2VsZWN0b3JzLnB5CisrKyBiL0xpYi9zZWxlY3RvcnMucHkKQEAgLTE3NCw5ICsxNzQsOSBAQAogICAgICAgICBTZWxlY3RvcktleSBmb3IgdGhpcyBmaWxlIG9iamVjdAogICAgICAgICAiIiIKICAgICAgICAgbWFwcGluZyA9IHNlbGYuZ2V0X21hcCgpCisgICAgICAgIGlmIG1hcHBpbmcgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2VsZWN0b3IgaXMgY2xvc2VkJykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbWFwcGluZyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yCiAgICAgICAgICAgICByZXR1cm4gbWFwcGluZ1tmaWxlb2JqXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigieyFyfSBpcyBub3QgcmVnaXN0ZXJlZCIuZm9ybWF0KGZpbGVvYmopKSBmcm9tIE5vbmUKQEAgLTQ0NSwxMCArNDQ1LDY2IEBACiAgICAgICAgICAgICByZXR1cm4gcmVhZHkKIAogICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICBzZWxmLl9lcG9sbC5jbG9zZSgpCisgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKKworCitpZiBoYXNhdHRyKHNlbGVjdCwgJ2RldnBvbGwnKToKKworICAgIGNsYXNzIERldnBvbGxTZWxlY3RvcihfQmFzZVNlbGVjdG9ySW1wbCk6CisgICAgICAgICIiIlNvbGFyaXMgL2Rldi9wb2xsIHNlbGVjdG9yLiIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICAgICAgc2VsZi5fZGV2cG9sbCA9IHNlbGVjdC5kZXZwb2xsKCkKKworICAgICAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RldnBvbGwuZmlsZW5vKCkKKworICAgICAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgZmlsZW9iaiwgZXZlbnRzLCBkYXRhPU5vbmUpOgorICAgICAgICAgICAga2V5ID0gc3VwZXIoKS5yZWdpc3RlcihmaWxlb2JqLCBldmVudHMsIGRhdGEpCisgICAgICAgICAgICBwb2xsX2V2ZW50cyA9IDAKKyAgICAgICAgICAgIGlmIGV2ZW50cyAmIEVWRU5UX1JFQUQ6CisgICAgICAgICAgICAgICAgcG9sbF9ldmVudHMgfD0gc2VsZWN0LlBPTExJTgorICAgICAgICAgICAgaWYgZXZlbnRzICYgRVZFTlRfV1JJVEU6CisgICAgICAgICAgICAgICAgcG9sbF9ldmVudHMgfD0gc2VsZWN0LlBPTExPVVQKKyAgICAgICAgICAgIHNlbGYuX2RldnBvbGwucmVnaXN0ZXIoa2V5LmZkLCBwb2xsX2V2ZW50cykKKyAgICAgICAgICAgIHJldHVybiBrZXkKKworICAgICAgICBkZWYgdW5yZWdpc3RlcihzZWxmLCBmaWxlb2JqKToKKyAgICAgICAgICAgIGtleSA9IHN1cGVyKCkudW5yZWdpc3RlcihmaWxlb2JqKQorICAgICAgICAgICAgc2VsZi5fZGV2cG9sbC51bnJlZ2lzdGVyKGtleS5mZCkKKyAgICAgICAgICAgIHJldHVybiBrZXkKKworICAgICAgICBkZWYgc2VsZWN0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgdGltZW91dCA8PSAwOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgZGV2cG9sbCgpIGhhcyBhIHJlc29sdXRpb24gb2YgMSBtaWxsaXNlY29uZCwgcm91bmQgYXdheSBmcm9tCisgICAgICAgICAgICAgICAgIyB6ZXJvIHRvIHdhaXQgKmF0IGxlYXN0KiB0aW1lb3V0IHNlY29uZHMuCisgICAgICAgICAgICAgICAgdGltZW91dCA9IG1hdGguY2VpbCh0aW1lb3V0ICogMWUzKQorICAgICAgICAgICAgcmVhZHkgPSBbXQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2Vwb2xsLmNsb3NlKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgZmRfZXZlbnRfbGlzdCA9IHNlbGYuX2RldnBvbGwucG9sbCh0aW1lb3V0KQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWR5CisgICAgICAgICAgICBmb3IgZmQsIGV2ZW50IGluIGZkX2V2ZW50X2xpc3Q6CisgICAgICAgICAgICAgICAgZXZlbnRzID0gMAorICAgICAgICAgICAgICAgIGlmIGV2ZW50ICYgfnNlbGVjdC5QT0xMSU46CisgICAgICAgICAgICAgICAgICAgIGV2ZW50cyB8PSBFVkVOVF9XUklURQorICAgICAgICAgICAgICAgIGlmIGV2ZW50ICYgfnNlbGVjdC5QT0xMT1VUOgorICAgICAgICAgICAgICAgICAgICBldmVudHMgfD0gRVZFTlRfUkVBRAorCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZi5fa2V5X2Zyb21fZmQoZmQpCisgICAgICAgICAgICAgICAgaWYga2V5OgorICAgICAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoKGtleSwgZXZlbnRzICYga2V5LmV2ZW50cykpCisgICAgICAgICAgICByZXR1cm4gcmVhZHkKKworICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICBzZWxmLl9kZXZwb2xsLmNsb3NlKCkKKyAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKIGlmIGhhc2F0dHIoc2VsZWN0LCAna3F1ZXVlJyk6CkBAIC01MTksMTggKzU3NSwxOSBAQAogICAgICAgICAgICAgcmV0dXJuIHJlYWR5CiAKICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuX2txdWV1ZS5jbG9zZSgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5fa3F1ZXVlLmNsb3NlKCkKKyAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKLSMgQ2hvb3NlIHRoZSBiZXN0IGltcGxlbWVudGF0aW9uOiByb3VnaGx5LCBlcG9sbHxrcXVldWUgPiBwb2xsID4gc2VsZWN0LgorIyBDaG9vc2UgdGhlIGJlc3QgaW1wbGVtZW50YXRpb24sIHJvdWdobHk6CisjICAgIGVwb2xsfGtxdWV1ZXxkZXZwb2xsID4gcG9sbCA+IHNlbGVjdC4KICMgc2VsZWN0KCkgYWxzbyBjYW4ndCBhY2NlcHQgYSBGRCA+IEZEX1NFVFNJWkUgKHVzdWFsbHkgYXJvdW5kIDEwMjQpCiBpZiAnS3F1ZXVlU2VsZWN0b3InIGluIGdsb2JhbHMoKToKICAgICBEZWZhdWx0U2VsZWN0b3IgPSBLcXVldWVTZWxlY3RvcgogZWxpZiAnRXBvbGxTZWxlY3RvcicgaW4gZ2xvYmFscygpOgogICAgIERlZmF1bHRTZWxlY3RvciA9IEVwb2xsU2VsZWN0b3IKK2VsaWYgJ0RldnBvbGxTZWxlY3RvcicgaW4gZ2xvYmFscygpOgorICAgIERlZmF1bHRTZWxlY3RvciA9IERldnBvbGxTZWxlY3RvcgogZWxpZiAnUG9sbFNlbGVjdG9yJyBpbiBnbG9iYWxzKCk6CiAgICAgRGVmYXVsdFNlbGVjdG9yID0gUG9sbFNlbGVjdG9yCiBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IDQ2NzI1NTMuLmYwODM5MTggMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTQ5LDkgKzQ5LDYgQEAKICAgICAgICAgc2VsZi50b2tlbiA9ICcnCiAgICAgICAgIHNlbGYuZmlsZXN0YWNrID0gZGVxdWUoKQogICAgICAgICBzZWxmLnNvdXJjZSA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgIHByaW50KCdzaGxleDogcmVhZGluZyBmcm9tICVzLCBsaW5lICVkJyBcCi0gICAgICAgICAgICAgICAgICAlIChzZWxmLmluc3RyZWFtLCBzZWxmLmxpbmVubykpCiAKICAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2spOgogICAgICAgICAiUHVzaCBhIHRva2VuIG9udG8gdGhlIHN0YWNrIHBvcHBlZCBieSB0aGUgZ2V0X3Rva2VuIG1ldGhvZCIKZGlmZiAtLWdpdCBhL0xpYi9zaHV0aWwucHkgYi9MaWIvc2h1dGlsLnB5CmluZGV4IGQ3NjdhMGMuLjNmNGI2YmYgMTAwNjQ0Ci0tLSBhL0xpYi9zaHV0aWwucHkKKysrIGIvTGliL3NodXRpbC5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHN0YXQKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aAogaW1wb3J0IGZubWF0Y2gKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGVycm5vCkBAIC0yMSw2ICsyMCwxMyBAQAogICAgIF9CWjJfU1VQUE9SVEVEID0gRmFsc2UKIAogdHJ5OgorICAgIGltcG9ydCBsem1hCisgICAgZGVsIGx6bWEKKyAgICBfTFpNQV9TVVBQT1JURUQgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX0xaTUFfU1VQUE9SVEVEID0gRmFsc2UKKwordHJ5OgogICAgIGZyb20gcHdkIGltcG9ydCBnZXRwd25hbQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGdldHB3bmFtID0gTm9uZQpAQCAtNDkxLDcgKzQ5Nyw3IEBACiAgICAgc2VwID0gb3MucGF0aC5zZXAgKyAob3MucGF0aC5hbHRzZXAgb3IgJycpCiAgICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUocGF0aC5yc3RyaXAoc2VwKSkKIAotZGVmIG1vdmUoc3JjLCBkc3QpOgorZGVmIG1vdmUoc3JjLCBkc3QsIGNvcHlfZnVuY3Rpb249Y29weTIpOgogICAgICIiIlJlY3Vyc2l2ZWx5IG1vdmUgYSBmaWxlIG9yIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uLiBUaGlzIGlzCiAgICAgc2ltaWxhciB0byB0aGUgVW5peCAibXYiIGNvbW1hbmQuIFJldHVybiB0aGUgZmlsZSBvciBkaXJlY3RvcnkncwogICAgIGRlc3RpbmF0aW9uLgpAQCAtNTA4LDYgKzUxNCwxMSBAQAogICAgIHJlY3JlYXRlZCB1bmRlciB0aGUgbmV3IG5hbWUgaWYgb3MucmVuYW1lKCkgZmFpbHMgYmVjYXVzZSBvZiBjcm9zcwogICAgIGZpbGVzeXN0ZW0gcmVuYW1lcy4KIAorICAgIFRoZSBvcHRpb25hbCBgY29weV9mdW5jdGlvbmAgYXJndW1lbnQgaXMgYSBjYWxsYWJsZSB0aGF0IHdpbGwgYmUgdXNlZAorICAgIHRvIGNvcHkgdGhlIHNvdXJjZSBvciBpdCB3aWxsIGJlIGRlbGVnYXRlZCB0byBgY29weXRyZWVgLgorICAgIEJ5IGRlZmF1bHQsIGNvcHkyKCkgaXMgdXNlZCwgYnV0IGFueSBmdW5jdGlvbiB0aGF0IHN1cHBvcnRzIHRoZSBzYW1lCisgICAgc2lnbmF0dXJlIChsaWtlIGNvcHkoKSkgY2FuIGJlIHVzZWQuCisKICAgICBBIGxvdCBtb3JlIGNvdWxkIGJlIGRvbmUgaGVyZS4uLiAgQSBsb29rIGF0IGEgbXYuYyBzaG93cyBhIGxvdCBvZgogICAgIHRoZSBpc3N1ZXMgdGhpcyBpbXBsZW1lbnRhdGlvbiBnbG9zc2VzIG92ZXIuCiAKQEAgLTUzMiwxNyArNTQzLDE5IEBACiAgICAgICAgICAgICBvcy51bmxpbmsoc3JjKQogICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoc3JjKToKICAgICAgICAgICAgIGlmIF9kZXN0aW5zcmMoc3JjLCBkc3QpOgotICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDYW5ub3QgbW92ZSBhIGRpcmVjdG9yeSAnJXMnIGludG8gaXRzZWxmICclcycuIiAlIChzcmMsIGRzdCkpCi0gICAgICAgICAgICBjb3B5dHJlZShzcmMsIHJlYWxfZHN0LCBzeW1saW5rcz1UcnVlKQorICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJDYW5ub3QgbW92ZSBhIGRpcmVjdG9yeSAnJXMnIGludG8gaXRzZWxmIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJyVzJy4iICUgKHNyYywgZHN0KSkKKyAgICAgICAgICAgIGNvcHl0cmVlKHNyYywgcmVhbF9kc3QsIGNvcHlfZnVuY3Rpb249Y29weV9mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPVRydWUpCiAgICAgICAgICAgICBybXRyZWUoc3JjKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29weTIoc3JjLCByZWFsX2RzdCkKKyAgICAgICAgICAgIGNvcHlfZnVuY3Rpb24oc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCiAgICAgcmV0dXJuIHJlYWxfZHN0CiAKIGRlZiBfZGVzdGluc3JjKHNyYywgZHN0KToKLSAgICBzcmMgPSBhYnNwYXRoKHNyYykKLSAgICBkc3QgPSBhYnNwYXRoKGRzdCkKKyAgICBzcmMgPSBvcy5wYXRoLmFic3BhdGgoc3JjKQorICAgIGRzdCA9IG9zLnBhdGguYWJzcGF0aChkc3QpCiAgICAgaWYgbm90IHNyYy5lbmRzd2l0aChvcy5wYXRoLnNlcCk6CiAgICAgICAgIHNyYyArPSBvcy5wYXRoLnNlcAogICAgIGlmIG5vdCBkc3QuZW5kc3dpdGgob3MucGF0aC5zZXApOgpAQCAtNTc4LDE0ICs1OTEsMTQgQEAKICAgICAiIiJDcmVhdGUgYSAocG9zc2libHkgY29tcHJlc3NlZCkgdGFyIGZpbGUgZnJvbSBhbGwgdGhlIGZpbGVzIHVuZGVyCiAgICAgJ2Jhc2VfZGlyJy4KIAotICAgICdjb21wcmVzcycgbXVzdCBiZSAiZ3ppcCIgKHRoZSBkZWZhdWx0KSwgImJ6aXAyIiwgb3IgTm9uZS4KKyAgICAnY29tcHJlc3MnIG11c3QgYmUgImd6aXAiICh0aGUgZGVmYXVsdCksICJiemlwMiIsICJ4eiIsIG9yIE5vbmUuCiAKICAgICAnb3duZXInIGFuZCAnZ3JvdXAnIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbiBvd25lciBhbmQgYSBncm91cCBmb3IgdGhlCiAgICAgYXJjaGl2ZSB0aGF0IGlzIGJlaW5nIGJ1aWx0LiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IG93bmVyIGFuZCBncm91cAogICAgIHdpbGwgYmUgdXNlZC4KIAogICAgIFRoZSBvdXRwdXQgdGFyIGZpbGUgd2lsbCBiZSBuYW1lZCAnYmFzZV9uYW1lJyArICAiLnRhciIsIHBvc3NpYmx5IHBsdXMKLSAgICB0aGUgYXBwcm9wcmlhdGUgY29tcHJlc3Npb24gZXh0ZW5zaW9uICgiLmd6Iiwgb3IgIi5iejIiKS4KKyAgICB0aGUgYXBwcm9wcmlhdGUgY29tcHJlc3Npb24gZXh0ZW5zaW9uICgiLmd6IiwgIi5iejIiLCBvciAiLnh6IikuCiAKICAgICBSZXR1cm5zIHRoZSBvdXRwdXQgZmlsZW5hbWUuCiAgICAgIiIiCkBAIC01OTYsNiArNjA5LDEwIEBACiAgICAgICAgIHRhcl9jb21wcmVzc2lvblsnYnppcDInXSA9ICdiejInCiAgICAgICAgIGNvbXByZXNzX2V4dFsnYnppcDInXSA9ICcuYnoyJwogCisgICAgaWYgX0xaTUFfU1VQUE9SVEVEOgorICAgICAgICB0YXJfY29tcHJlc3Npb25bJ3h6J10gPSAneHonCisgICAgICAgIGNvbXByZXNzX2V4dFsneHonXSA9ICcueHonCisKICAgICAjIGZsYWdzIGZvciBjb21wcmVzc2lvbiBwcm9ncmFtLCBlYWNoIGVsZW1lbnQgb2YgbGlzdCB3aWxsIGJlIGFuIGFyZ3VtZW50CiAgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQ6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJywgb3IgY29tcHJlc3Npb24gZm9ybWF0IG5vdCAiCkBAIC02MzUsMjMgKzY1Miw2IEBACiAKICAgICByZXR1cm4gYXJjaGl2ZV9uYW1lCiAKLWRlZiBfY2FsbF9leHRlcm5hbF96aXAoYmFzZV9kaXIsIHppcF9maWxlbmFtZSwgdmVyYm9zZT1GYWxzZSwgZHJ5X3J1bj1GYWxzZSk6Ci0gICAgIyBYWFggc2VlIGlmIHdlIHdhbnQgdG8ga2VlcCBhbiBleHRlcm5hbCBjYWxsIGhlcmUKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICB6aXBvcHRpb25zID0gIi1yIgotICAgIGVsc2U6Ci0gICAgICAgIHppcG9wdGlvbnMgPSAiLXJxIgotICAgIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCi0gICAgZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCi0gICAgdHJ5OgotICAgICAgICBzcGF3bihbInppcCIsIHppcG9wdGlvbnMsIHppcF9maWxlbmFtZSwgYmFzZV9kaXJdLCBkcnlfcnVuPWRyeV9ydW4pCi0gICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvcjoKLSAgICAgICAgIyBYWFggcmVhbGx5IHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuICJjb3VsZG4ndCBmaW5kCi0gICAgICAgICMgZXh0ZXJuYWwgJ3ppcCcgY29tbWFuZCIgYW5kICJ6aXAgZmFpbGVkIi4KLSAgICAgICAgcmFpc2UgRXhlY0Vycm9yKCJ1bmFibGUgdG8gY3JlYXRlIHppcCBmaWxlICclcyc6ICIKLSAgICAgICAgICAgICJjb3VsZCBuZWl0aGVyIGltcG9ydCB0aGUgJ3ppcGZpbGUnIG1vZHVsZSBub3IgIgotICAgICAgICAgICAgImZpbmQgYSBzdGFuZGFsb25lIHppcCB1dGlsaXR5IikgJSB6aXBfZmlsZW5hbWUKLQogZGVmIF9tYWtlX3ppcGZpbGUoYmFzZV9uYW1lLCBiYXNlX2RpciwgdmVyYm9zZT0wLCBkcnlfcnVuPTAsIGxvZ2dlcj1Ob25lKToKICAgICAiIiJDcmVhdGUgYSB6aXAgZmlsZSBmcm9tIGFsbCB0aGUgZmlsZXMgdW5kZXIgJ2Jhc2VfZGlyJy4KIApAQCAtNjYxLDYgKzY2MSw4IEBACiAgICAgYXZhaWxhYmxlLCByYWlzZXMgRXhlY0Vycm9yLiAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgb3V0cHV0IHppcAogICAgIGZpbGUuCiAgICAgIiIiCisgICAgaW1wb3J0IHppcGZpbGUKKwogICAgIHppcF9maWxlbmFtZSA9IGJhc2VfbmFtZSArICIuemlwIgogICAgIGFyY2hpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGJhc2VfbmFtZSkKIApAQCAtNjcwLDM5ICs2NzIsMjkgQEAKICAgICAgICAgaWYgbm90IGRyeV9ydW46CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhhcmNoaXZlX2RpcikKIAotICAgICMgSWYgemlwZmlsZSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSwgdHJ5IHNwYXduaW5nIGFuIGV4dGVybmFsICd6aXAnCi0gICAgIyBjb21tYW5kLgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGZpbGUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHppcGZpbGUgPSBOb25lCisgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgJyVzJyBhbmQgYWRkaW5nICclcycgdG8gaXQiLAorICAgICAgICAgICAgICAgICAgICB6aXBfZmlsZW5hbWUsIGJhc2VfZGlyKQogCi0gICAgaWYgemlwZmlsZSBpcyBOb25lOgotICAgICAgICBfY2FsbF9leHRlcm5hbF96aXAoYmFzZV9kaXIsIHppcF9maWxlbmFtZSwgdmVyYm9zZSwgZHJ5X3J1bikKLSAgICBlbHNlOgotICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgJyVzJyBhbmQgYWRkaW5nICclcycgdG8gaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgemlwX2ZpbGVuYW1lLCBiYXNlX2RpcikKLQotICAgICAgICBpZiBub3QgZHJ5X3J1bjoKLSAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHppcF9maWxlbmFtZSwgInciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHpmOgotICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGJhc2VfZGlyKQotICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHBhdGgpCi0gICAgICAgICAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQotICAgICAgICAgICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsoYmFzZV9kaXIpOgotICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZGlybmFtZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQorICAgIGlmIG5vdCBkcnlfcnVuOgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh6aXBfZmlsZW5hbWUsICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Npb249emlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHpmOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoYmFzZV9kaXIpCisgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCBwYXRoKQorICAgICAgICAgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCisgICAgICAgICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKGJhc2VfZGlyKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZGlybmFtZXMpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHpmLndyaXRlKHBhdGgsIHBhdGgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgemYud3JpdGUocGF0aCwgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQotICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB6Zi53cml0ZShwYXRoLCBwYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvZ2dlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKIAogICAgIHJldHVybiB6aXBfZmlsZW5hbWUKIApAQCAtNzE2LDYgKzcwOCwxMCBAQAogICAgIF9BUkNISVZFX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnYnppcDInKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiemlwMidlZCB0YXItZmlsZSIpCiAKK2lmIF9MWk1BX1NVUFBPUlRFRDoKKyAgICBfQVJDSElWRV9GT1JNQVRTWyd4enRhciddID0gKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ3h6JyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieHonZWQgdGFyLWZpbGUiKQorCiBkZWYgZ2V0X2FyY2hpdmVfZm9ybWF0cygpOgogICAgICIiIlJldHVybnMgYSBsaXN0IG9mIHN1cHBvcnRlZCBmb3JtYXRzIGZvciBhcmNoaXZpbmcgYW5kIHVuYXJjaGl2aW5nLgogCkBAIC05MDQsNyArOTAwLDcgQEAKICAgICAgICAgemlwLmNsb3NlKCkKIAogZGVmIF91bnBhY2tfdGFyZmlsZShmaWxlbmFtZSwgZXh0cmFjdF9kaXIpOgotICAgICIiIlVucGFjayB0YXIvdGFyLmd6L3Rhci5iejIgYGZpbGVuYW1lYCB0byBgZXh0cmFjdF9kaXJgCisgICAgIiIiVW5wYWNrIHRhci90YXIuZ3ovdGFyLmJ6Mi90YXIueHogYGZpbGVuYW1lYCB0byBgZXh0cmFjdF9kaXJgCiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICB0YXJvYmogPSB0YXJmaWxlLm9wZW4oZmlsZW5hbWUpCkBAIC05MjMsOSArOTE5LDEzIEBACiAgICAgfQogCiBpZiBfQloyX1NVUFBPUlRFRDoKLSAgICBfVU5QQUNLX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoWycuYnoyJ10sIF91bnBhY2tfdGFyZmlsZSwgW10sCisgICAgX1VOUEFDS19GT1JNQVRTWydienRhciddID0gKFsnLnRhci5iejInLCAnLnRiejInXSwgX3VucGFja190YXJmaWxlLCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ6aXAyJ2VkIHRhci1maWxlIikKIAoraWYgX0xaTUFfU1VQUE9SVEVEOgorICAgIF9VTlBBQ0tfRk9STUFUU1sneHp0YXInXSA9IChbJy50YXIueHonLCAnLnR4eiddLCBfdW5wYWNrX3RhcmZpbGUsIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieHonZWQgdGFyLWZpbGUiKQorCiBkZWYgX2ZpbmRfdW5wYWNrX2Zvcm1hdChmaWxlbmFtZSk6CiAgICAgZm9yIG5hbWUsIGluZm8gaW4gX1VOUEFDS19GT1JNQVRTLml0ZW1zKCk6CiAgICAgICAgIGZvciBleHRlbnNpb24gaW4gaW5mb1swXToKZGlmZiAtLWdpdCBhL0xpYi9zaWduYWwucHkgYi9MaWIvc2lnbmFsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MWQ3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2lnbmFsLnB5CkBAIC0wLDAgKzEsNzkgQEAKK2ltcG9ydCBfc2lnbmFsCitmcm9tIF9zaWduYWwgaW1wb3J0ICoKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcyBhcyBfd3JhcHMKK2Zyb20gZW51bSBpbXBvcnQgSW50RW51bSBhcyBfSW50RW51bQorCitfZ2xvYmFscyA9IGdsb2JhbHMoKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAgICAgJ1NpZ25hbHMnLCBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIG5hbWU6CisgICAgICAgICAgICBuYW1lLmlzdXBwZXIoKQorICAgICAgICAgICAgYW5kIChuYW1lLnN0YXJ0c3dpdGgoJ1NJRycpIGFuZCBub3QgbmFtZS5zdGFydHN3aXRoKCdTSUdfJykpCisgICAgICAgICAgICBvciBuYW1lLnN0YXJ0c3dpdGgoJ0NUUkxfJykpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAnSGFuZGxlcnMnLCBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUgaW4gKCdTSUdfREZMJywgJ1NJR19JR04nKSkKKworaWYgJ3B0aHJlYWRfc2lnbWFzaycgaW4gX2dsb2JhbHM6CisgICAgX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAnU2lnbWFza3MnLCBfX25hbWVfXywKKyAgICAgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lIGluICgnU0lHX0JMT0NLJywgJ1NJR19VTkJMT0NLJywgJ1NJR19TRVRNQVNLJykpCisKKworZGVmIF9pbnRfdG9fZW51bSh2YWx1ZSwgZW51bV9rbGFzcyk6CisgICAgIiIiQ29udmVydCBhIG51bWVyaWMgdmFsdWUgdG8gYW4gSW50RW51bSBtZW1iZXIuCisgICAgSWYgaXQncyBub3QgYSBrbm93biBtZW1iZXIsIHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZSBpdHNlbGYuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gZW51bV9rbGFzcyh2YWx1ZSkKKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgcmV0dXJuIHZhbHVlCisKKworZGVmIF9lbnVtX3RvX2ludCh2YWx1ZSk6CisgICAgIiIiQ29udmVydCBhbiBJbnRFbnVtIG1lbWJlciB0byBhIG51bWVyaWMgdmFsdWUuCisgICAgSWYgaXQncyBub3QgYSBJbnRFbnVtIG1lbWJlciByZXR1cm4gdGhlIHZhbHVlIGl0c2VsZi4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBpbnQodmFsdWUpCisgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgorICAgICAgICByZXR1cm4gdmFsdWUKKworCitAX3dyYXBzKF9zaWduYWwuc2lnbmFsKQorZGVmIHNpZ25hbChzaWduYWxudW0sIGhhbmRsZXIpOgorICAgIGhhbmRsZXIgPSBfc2lnbmFsLnNpZ25hbChfZW51bV90b19pbnQoc2lnbmFsbnVtKSwgX2VudW1fdG9faW50KGhhbmRsZXIpKQorICAgIHJldHVybiBfaW50X3RvX2VudW0oaGFuZGxlciwgSGFuZGxlcnMpCisKKworQF93cmFwcyhfc2lnbmFsLmdldHNpZ25hbCkKK2RlZiBnZXRzaWduYWwoc2lnbmFsbnVtKToKKyAgICBoYW5kbGVyID0gX3NpZ25hbC5nZXRzaWduYWwoc2lnbmFsbnVtKQorICAgIHJldHVybiBfaW50X3RvX2VudW0oaGFuZGxlciwgSGFuZGxlcnMpCisKKworaWYgJ3B0aHJlYWRfc2lnbWFzaycgaW4gX2dsb2JhbHM6CisgICAgQF93cmFwcyhfc2lnbmFsLnB0aHJlYWRfc2lnbWFzaykKKyAgICBkZWYgcHRocmVhZF9zaWdtYXNrKGhvdywgbWFzayk6CisgICAgICAgIHNpZ3Nfc2V0ID0gX3NpZ25hbC5wdGhyZWFkX3NpZ21hc2soaG93LCBtYXNrKQorICAgICAgICByZXR1cm4gc2V0KF9pbnRfdG9fZW51bSh4LCBTaWduYWxzKSBmb3IgeCBpbiBzaWdzX3NldCkKKyAgICBwdGhyZWFkX3NpZ21hc2suX19kb2NfXyA9IF9zaWduYWwucHRocmVhZF9zaWdtYXNrLl9fZG9jX18KKworCitpZiAnc2lncGVuZGluZycgaW4gX2dsb2JhbHM6CisgICAgQF93cmFwcyhfc2lnbmFsLnNpZ3BlbmRpbmcpCisgICAgZGVmIHNpZ3BlbmRpbmcoKToKKyAgICAgICAgc2lncyA9IF9zaWduYWwuc2lncGVuZGluZygpCisgICAgICAgIHJldHVybiBzZXQoX2ludF90b19lbnVtKHgsIFNpZ25hbHMpIGZvciB4IGluIHNpZ3MpCisKKworaWYgJ3NpZ3dhaXQnIGluIF9nbG9iYWxzOgorICAgIEBfd3JhcHMoX3NpZ25hbC5zaWd3YWl0KQorICAgIGRlZiBzaWd3YWl0KHNpZ3NldCk6CisgICAgICAgIHJldHNpZyA9IF9zaWduYWwuc2lnd2FpdChzaWdzZXQpCisgICAgICAgIHJldHVybiBfaW50X3RvX2VudW0ocmV0c2lnLCBTaWduYWxzKQorICAgIHNpZ3dhaXQuX19kb2NfXyA9IF9zaWduYWwuc2lnd2FpdAorCitkZWwgX2dsb2JhbHMsIF93cmFwcwpkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQppbmRleCBhZDVkMTM2Li42ZjY2YzA3IDEwMDY0NAotLS0gYS9MaWIvc2l0ZS5weQorKysgYi9MaWIvc2l0ZS5weQpAQCAtNyw3ICs3LDcgQEAKIFRoaXMgd2lsbCBhcHBlbmQgc2l0ZS1zcGVjaWZpYyBwYXRocyB0byB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLiAgT24KIFVuaXggKGluY2x1ZGluZyBNYWMgT1NYKSwgaXQgc3RhcnRzIHdpdGggc3lzLnByZWZpeCBhbmQKIHN5cy5leGVjX3ByZWZpeCAoaWYgZGlmZmVyZW50KSBhbmQgYXBwZW5kcwotbGliL3B5dGhvbjx2ZXJzaW9uPi9zaXRlLXBhY2thZ2VzIGFzIHdlbGwgYXMgbGliL3NpdGUtcHl0aG9uLgorbGliL3B5dGhvbjx2ZXJzaW9uPi9zaXRlLXBhY2thZ2VzLgogT24gb3RoZXIgcGxhdGZvcm1zIChzdWNoIGFzIFdpbmRvd3MpLCBpdCB0cmllcyBlYWNoIG9mIHRoZQogcHJlZml4ZXMgZGlyZWN0bHksIGFzIHdlbGwgYXMgd2l0aCBsaWIvc2l0ZS1wYWNrYWdlcyBhcHBlbmRlZC4gIFRoZQogcmVzdWx0aW5nIGRpcmVjdG9yaWVzLCBpZiB0aGV5IGV4aXN0LCBhcmUgYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZApAQCAtMTUsNyArMTUsNyBAQAogCiBJZiBhIGZpbGUgbmFtZWQgInB5dmVudi5jZmciIGV4aXN0cyBvbmUgZGlyZWN0b3J5IGFib3ZlIHN5cy5leGVjdXRhYmxlLAogc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IGFyZSBzZXQgdG8gdGhhdCBkaXJlY3RvcnkgYW5kCi1pdCBpcyBhbHNvIGNoZWNrZWQgZm9yIHNpdGUtcGFja2FnZXMgYW5kIHNpdGUtcHl0aG9uIChzeXMuYmFzZV9wcmVmaXggYW5kCitpdCBpcyBhbHNvIGNoZWNrZWQgZm9yIHNpdGUtcGFja2FnZXMgKHN5cy5iYXNlX3ByZWZpeCBhbmQKIHN5cy5iYXNlX2V4ZWNfcHJlZml4IHdpbGwgYWx3YXlzIGJlIHRoZSAicmVhbCIgcHJlZml4ZXMgb2YgdGhlIFB5dGhvbgogaW5zdGFsbGF0aW9uKS4gSWYgInB5dmVudi5jZmciIChhIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZpbGUpIGNvbnRhaW5zCiB0aGUga2V5ICJpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzIiBzZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiAiZmFsc2UiCkBAIC05OCw4ICs5OCw4IEBACiBkZWYgYWJzX3BhdGhzKCk6CiAgICAgIiIiU2V0IGFsbCBtb2R1bGUgX19maWxlX18gYW5kIF9fY2FjaGVkX18gYXR0cmlidXRlcyB0byBhbiBhYnNvbHV0ZSBwYXRoIiIiCiAgICAgZm9yIG0gaW4gc2V0KHN5cy5tb2R1bGVzLnZhbHVlcygpKToKLSAgICAgICAgaWYgKGdldGF0dHIoZ2V0YXR0cihtLCAnX19sb2FkZXJfXycsIE5vbmUpLCAnX19tb2R1bGVfXycsIE5vbmUpICE9Ci0gICAgICAgICAgICAgICAgJ19mcm96ZW5faW1wb3J0bGliJyk6CisgICAgICAgIGlmIChnZXRhdHRyKGdldGF0dHIobSwgJ19fbG9hZGVyX18nLCBOb25lKSwgJ19fbW9kdWxlX18nLCBOb25lKSBub3QgaW4KKyAgICAgICAgICAgICAgICAoJ19mcm96ZW5faW1wb3J0bGliJywgJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJykpOgogICAgICAgICAgICAgY29udGludWUgICAjIGRvbid0IG1lc3Mgd2l0aCBhIFBFUCAzMDItc3VwcGxpZWQgX19maWxlX18KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtLl9fZmlsZV9fKQpAQCAtMjg1LDggKzI4NSw3IEBACiAgICAgcmV0dXJuIGtub3duX3BhdGhzCiAKIGRlZiBnZXRzaXRlcGFja2FnZXMocHJlZml4ZXM9Tm9uZSk6Ci0gICAgIiIiUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyZWN0b3JpZXMKLSAgICAoYW5kIHBvc3NpYmx5IHNpdGUtcHl0aG9uKS4KKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGFsbCBnbG9iYWwgc2l0ZS1wYWNrYWdlcyBkaXJlY3Rvcmllcy4KIAogICAgIEZvciBlYWNoIGRpcmVjdG9yeSBwcmVzZW50IGluIGBgcHJlZml4ZXNgYCAob3IgdGhlIGdsb2JhbCBgYFBSRUZJWEVTYGApLAogICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBmaW5kIGl0cyBgc2l0ZS1wYWNrYWdlc2Agc3ViZGlyZWN0b3J5IGRlcGVuZGluZyBvbiB0aGUKQEAgLTMwNyw3ICszMDYsNiBAQAogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQotICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcHl0aG9uIikpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKHByZWZpeCkKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXBhY2thZ2VzIikpCkBAIC0zMjMsMTQgKzMyMSw5IEBACiAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogCiBkZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzLCBwcmVmaXhlcz1Ob25lKToKLSAgICAiIiJBZGQgc2l0ZS1wYWNrYWdlcyAoYW5kIHBvc3NpYmx5IHNpdGUtcHl0aG9uKSB0byBzeXMucGF0aCIiIgorICAgICIiIkFkZCBzaXRlLXBhY2thZ2VzIHRvIHN5cy5wYXRoIiIiCiAgICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzKToKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzaXRlZGlyKToKLSAgICAgICAgICAgIGlmICJzaXRlLXB5dGhvbiIgaW4gc2l0ZWRpcjoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCcic2l0ZS1weXRob24iIGRpcmVjdG9yaWVzIHdpbGwgbm90IGJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQgaW4gMy41IGFueW1vcmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocykKIAogICAgIHJldHVybiBrbm93bl9wYXRocwpAQCAtNDgzLDYgKzQ3NiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSB2YWx1ZS5sb3dlcigpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdob21lJzoKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5faG9tZSA9IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdhcHBsb2NhbCcgYW5kIHZhbHVlLmxvd2VyKCkgPT0gJ3RydWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBBcHAtbG9jYWwgaW5zdGFsbHMgdXNlIHRoZSBleGVfZGlyIGFzIHByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IG9uZSBsZXZlbCBoaWdoZXIsIGFuZCBkbyBub3QgdXNlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgIyBzaXRlIHBhY2thZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9wcmVmaXggPSBleGVfZGlyCisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9ICdmYWxzZScKIAogICAgICAgICBzeXMucHJlZml4ID0gc3lzLmV4ZWNfcHJlZml4ID0gc2l0ZV9wcmVmaXgKIApkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IGRiN2M4NjcuLmZmODZlN2QgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTEsNSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIiIiQW4gUkZDIDUzMjEgc210cCBwcm94eS4KKyIiIkFuIFJGQyA1MzIxIHNtdHAgcHJveHkgd2l0aCBvcHRpb25hbCBSRkMgMTg3MCBhbmQgUkZDIDY1MzEgZXh0ZW5zaW9ucy4KIAogVXNhZ2U6ICUocHJvZ3JhbSlzIFtvcHRpb25zXSBbbG9jYWxob3N0OmxvY2FscG9ydCBbcmVtb3RlaG9zdDpyZW1vdGVwb3J0XV0KIApAQCAtMjUsNiArMjUsMTAgQEAKICAgICAgICAgUmVzdHJpY3QgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gImxpbWl0IiBudW1iZXIgb2YKICAgICAgICAgYnl0ZXMgdmlhIHRoZSBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4gIERlZmF1bHRzIHRvIDMzNTU0NDMyIGJ5dGVzLgogCisgICAgLS1zbXRwdXRmOAorICAgIC11CisgICAgICAgIEVuYWJsZSB0aGUgU01UUFVURjggZXh0ZW5zaW9uIGFuZCBiZWhhdmUgYXMgYW4gUkZDIDY1MzEgc210cCBwcm94eS4KKwogICAgIC0tZGVidWcKICAgICAtZAogICAgICAgICBUdXJuIG9uIGRlYnVnZ2luZyBwcmludHMuCkBAIC05OCw3ICsxMDIsNiBAQAogCiBERUJVR1NUUkVBTSA9IERldm51bGwoKQogTkVXTElORSA9ICdcbicKLUVNUFRZU1RSSU5HID0gJycKIENPTU1BU1BBQ0UgPSAnLCAnCiBEQVRBX1NJWkVfREVGQVVMVCA9IDMzNTU0NDMyCiAKQEAgLTExNiwyNiArMTE5LDQ4IEBACiAKICAgICBjb21tYW5kX3NpemVfbGltaXQgPSA1MTIKICAgICBjb21tYW5kX3NpemVfbGltaXRzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhIHg9Y29tbWFuZF9zaXplX2xpbWl0OiB4KQotICAgIGNvbW1hbmRfc2l6ZV9saW1pdHMudXBkYXRlKHsKLSAgICAgICAgJ01BSUwnOiBjb21tYW5kX3NpemVfbGltaXQgKyAyNiwKLSAgICAgICAgfSkKLSAgICBtYXhfY29tbWFuZF9zaXplX2xpbWl0ID0gbWF4KGNvbW1hbmRfc2l6ZV9saW1pdHMudmFsdWVzKCkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWF4X2NvbW1hbmRfc2l6ZV9saW1pdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG1heChzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdHMudmFsdWVzKCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgIG1hcD1Ob25lKToKKyAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgbWFwPW1hcCkKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHNlcnZlcgogICAgICAgICBzZWxmLmNvbm4gPSBjb25uCiAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKLSAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAorICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAorICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgICAgICBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCBiZSBzZXQgdG8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCisgICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCisgICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6CisgICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCisgICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKKyAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCisgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKKyAgICAgICAgaWYgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICBzZWxmLl9lbXB0eXN0cmluZyA9ICcnCisgICAgICAgICAgICBzZWxmLl9saW5lc2VwID0gJ1xyXG4nCisgICAgICAgICAgICBzZWxmLl9kb3RzZXAgPSAnLicKKyAgICAgICAgICAgIHNlbGYuX25ld2xpbmUgPSBORVdMSU5FCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9lbXB0eXN0cmluZyA9IGInJworICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9IGInXHJcbicKKyAgICAgICAgICAgIHNlbGYuX2RvdHNlcCA9IG9yZChiJy4nKQorICAgICAgICAgICAgc2VsZi5fbmV3bGluZSA9IGInXG4nCisgICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gJycKLSAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKLSAgICAgICAgc2VsZi5yY3B0dG9zID0gW10KLSAgICAgICAgc2VsZi5yZWNlaXZlZF9kYXRhID0gJycKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKyAgICAgICAgc2VsZi5jb21tYW5kX3NpemVfbGltaXRzLmNsZWFyKCkKICAgICAgICAgc2VsZi5mcWRuID0gc29ja2V0LmdldGZxZG4oKQotICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5wZWVyID0gY29ubi5nZXRwZWVybmFtZSgpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKQEAgLTE0Nyw4ICsxNzIsMjIgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBwcmludCgnUGVlcjonLCByZXByKHNlbGYucGVlciksIGZpbGU9REVCVUdTVFJFQU0pCiAgICAgICAgIHNlbGYucHVzaCgnMjIwICVzICVzJyAlIChzZWxmLmZxZG4sIF9fdmVyc2lvbl9fKSkKKworICAgIGRlZiBfc2V0X3Bvc3RfZGF0YV9zdGF0ZShzZWxmKToKKyAgICAgICAgIiIiUmVzZXQgc3RhdGUgdmFyaWFibGVzIHRvIHRoZWlyIHBvc3QtREFUQSBzdGF0ZS4iIiIKKyAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECisgICAgICAgIHNlbGYubWFpbGZyb20gPSBOb25lCisgICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCisgICAgICAgIHNlbGYucmVxdWlyZV9TTVRQVVRGOCA9IEZhbHNlCisgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCi0gICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCisKKyAgICBkZWYgX3NldF9yc2V0X3N0YXRlKHNlbGYpOgorICAgICAgICAiIiJSZXNldCBhbGwgc3RhdGUgdmFyaWFibGVzIGV4Y2VwdCB0aGUgZ3JlZXRpbmcuIiIiCisgICAgICAgIHNlbGYuX3NldF9wb3N0X2RhdGFfc3RhdGUoKQorICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJworICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KKwogCiAgICAgIyBwcm9wZXJ0aWVzIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eQogICAgIEBwcm9wZXJ0eQpAQCAtMjcyLDkgKzMxMSwxMCBAQAogICAgICAgICAgICAgInNldCAnYWRkcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5hZGRyID0gdmFsdWUKIAotICAgICMgT3ZlcnJpZGVzIGJhc2UgY2xhc3MgZm9yIGNvbnZlbmllbmNlCisgICAgIyBPdmVycmlkZXMgYmFzZSBjbGFzcyBmb3IgY29udmVuaWVuY2UuCiAgICAgZGVmIHB1c2goc2VsZiwgbXNnKToKLSAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5wdXNoKHNlbGYsIGJ5dGVzKG1zZyArICdcclxuJywgJ2FzY2lpJykpCisgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQucHVzaChzZWxmLCBieXRlcygKKyAgICAgICAgICAgIG1zZyArICdcclxuJywgJ3V0Zi04JyBpZiBzZWxmLnJlcXVpcmVfU01UUFVURjggZWxzZSAnYXNjaWknKSkKIAogICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgICBkZWYgY29sbGVjdF9pbmNvbWluZ19kYXRhKHNlbGYsIGRhdGEpOgpAQCAtMjg3LDExICszMjcsMTQgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBlbGlmIGxpbWl0OgogICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgKz0gbGVuKGRhdGEpCi0gICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKHN0cihkYXRhLCAidXRmLTgiKSkKKyAgICAgICAgaWYgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChzdHIoZGF0YSwgJ3V0Zi04JykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzLmFwcGVuZChkYXRhKQogCiAgICAgIyBJbXBsZW1lbnRhdGlvbiBvZiBiYXNlIGNsYXNzIGFic3RyYWN0IG1ldGhvZAogICAgIGRlZiBmb3VuZF90ZXJtaW5hdG9yKHNlbGYpOgotICAgICAgICBsaW5lID0gRU1QVFlTVFJJTkcuam9pbihzZWxmLnJlY2VpdmVkX2xpbmVzKQorICAgICAgICBsaW5lID0gc2VsZi5fZW1wdHlzdHJpbmcuam9pbihzZWxmLnJlY2VpdmVkX2xpbmVzKQogICAgICAgICBwcmludCgnRGF0YTonLCByZXByKGxpbmUpLCBmaWxlPURFQlVHU1RSRUFNKQogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICAgaWYgc2VsZi5zbXRwX3N0YXRlID09IHNlbGYuQ09NTUFORDoKQEAgLTI5OSw3ICszNDIsOCBAQAogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGJhZCBzeW50YXgnKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgbWV0aG9kID0gTm9uZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzdHIobGluZSwgJ3V0Zi04JykKICAgICAgICAgICAgIGkgPSBsaW5lLmZpbmQoJyAnKQogICAgICAgICAgICAgaWYgaSA8IDA6CiAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGxpbmUudXBwZXIoKQpAQCAtMzMwLDIxICszNzQsMjEgQEAKICAgICAgICAgICAgICMgUmVtb3ZlIGV4dHJhbmVvdXMgY2FycmlhZ2UgcmV0dXJucyBhbmQgZGUtdHJhbnNwYXJlbmN5IGFjY29yZGluZwogICAgICAgICAgICAgIyB0byBSRkMgNTMyMSwgU2VjdGlvbiA0LjUuMi4KICAgICAgICAgICAgIGRhdGEgPSBbXQotICAgICAgICAgICAgZm9yIHRleHQgaW4gbGluZS5zcGxpdCgnXHJcbicpOgotICAgICAgICAgICAgICAgIGlmIHRleHQgYW5kIHRleHRbMF0gPT0gJy4nOgorICAgICAgICAgICAgZm9yIHRleHQgaW4gbGluZS5zcGxpdChzZWxmLl9saW5lc2VwKToKKyAgICAgICAgICAgICAgICBpZiB0ZXh0IGFuZCB0ZXh0WzBdID09IHNlbGYuX2RvdHNlcDoKICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQodGV4dFsxOl0pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQodGV4dCkKLSAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9IE5FV0xJTkUuam9pbihkYXRhKQotICAgICAgICAgICAgc3RhdHVzID0gc2VsZi5zbXRwX3NlcnZlci5wcm9jZXNzX21lc3NhZ2Uoc2VsZi5wZWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWlsZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmNwdHRvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSkKLSAgICAgICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCi0gICAgICAgICAgICBzZWxmLm1haWxmcm9tID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECi0gICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKLSAgICAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYidcclxuJykKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9IHNlbGYuX25ld2xpbmUuam9pbihkYXRhKQorICAgICAgICAgICAgYXJncyA9IChzZWxmLnBlZXIsIHNlbGYubWFpbGZyb20sIHNlbGYucmNwdHRvcywgc2VsZi5yZWNlaXZlZF9kYXRhKQorICAgICAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9kZWNvZGVfZGF0YToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSB7CisgICAgICAgICAgICAgICAgICAgICdtYWlsX29wdGlvbnMnOiBzZWxmLm1haWxfb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgJ3JjcHRfb3B0aW9ucyc6IHNlbGYucmNwdF9vcHRpb25zLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXR1cyA9IHNlbGYuc210cF9zZXJ2ZXIucHJvY2Vzc19tZXNzYWdlKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuX3NldF9wb3N0X2RhdGFfc3RhdGUoKQogICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzU1LDI2ICszOTksMzUgQEAKICAgICAgICAgaWYgbm90IGFyZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogSEVMTyBob3N0bmFtZScpCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBTZWUgaXNzdWUgIzIxNzgzIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBiZWhhdmlvci4KICAgICAgICAgaWYgc2VsZi5zZWVuX2dyZWV0aW5nOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKLSAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLnB1c2goJzI1MCAlcycgJSBzZWxmLmZxZG4pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5fc2V0X3JzZXRfc3RhdGUoKQorICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgJXMnICUgc2VsZi5mcWRuKQogCiAgICAgZGVmIHNtdHBfRUhMTyhzZWxmLCBhcmcpOgogICAgICAgICBpZiBub3QgYXJnOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBFSExPIGhvc3RuYW1lJykKICAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjE3ODMgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGlzIGJlaGF2aW9yLgogICAgICAgICBpZiBzZWxmLnNlZW5fZ3JlZXRpbmc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9IGFyZwotICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtJXMnICUgc2VsZi5mcWRuKQotICAgICAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtU0laRSAlcycgJSBzZWxmLmRhdGFfc2l6ZV9saW1pdCkKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIEhFTFAnKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3NldF9yc2V0X3N0YXRlKCkKKyAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCisgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IFRydWUKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAtJXMnICUgc2VsZi5mcWRuKQorICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwLVNJWkUgJXMnICUgc2VsZi5kYXRhX3NpemVfbGltaXQpCisgICAgICAgICAgICBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdHNbJ01BSUwnXSArPSAyNgorICAgICAgICBpZiBub3Qgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC04QklUTUlNRScpCisgICAgICAgIGlmIHNlbGYuZW5hYmxlX1NNVFBVVEY4OgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAtU01UUFVURjgnKQorICAgICAgICAgICAgc2VsZi5jb21tYW5kX3NpemVfbGltaXRzWydNQUlMJ10gKz0gMTAKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgSEVMUCcpCiAKICAgICBkZWYgc210cF9OT09QKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKQEAgLTQwNSwxMSArNDU4LDE1IEBACiAgICAgICAgIHJldHVybiBhZGRyZXNzLmFkZHJfc3BlYywgcmVzdAogCiAgICAgZGVmIF9nZXRwYXJhbXMoc2VsZiwgcGFyYW1zKToKLSAgICAgICAgIyBSZXR1cm4gYW55IHBhcmFtZXRlcnMgdGhhdCBhcHBlYXIgdG8gYmUgc3ludGFjdGljYWxseSB2YWxpZCBhY2NvcmRpbmcKLSAgICAgICAgIyB0byBSRkMgMTg2OSwgaWdub3JlIGFsbCBvdGhlcnMuICAoUG9zdGVsIHJ1bGU6IGFjY2VwdCB3aGF0IHdlIGNhbi4pCi0gICAgICAgIHBhcmFtcyA9IFtwYXJhbS5zcGxpdCgnPScsIDEpIGZvciBwYXJhbSBpbiBwYXJhbXMuc3BsaXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnPScgaW4gcGFyYW1dCi0gICAgICAgIHJldHVybiB7azogdiBmb3IgaywgdiBpbiBwYXJhbXMgaWYgay5pc2FsbnVtKCl9CisgICAgICAgICMgUmV0dXJuIHBhcmFtcyBhcyBkaWN0aW9uYXJ5LiBSZXR1cm4gTm9uZSBpZiBub3QgYWxsIHBhcmFtZXRlcnMKKyAgICAgICAgIyBhcHBlYXIgdG8gYmUgc3ludGFjdGljYWxseSB2YWxpZCBhY2NvcmRpbmcgdG8gUkZDIDE4NjkuCisgICAgICAgIHJlc3VsdCA9IHt9CisgICAgICAgIGZvciBwYXJhbSBpbiBwYXJhbXM6CisgICAgICAgICAgICBwYXJhbSwgZXEsIHZhbHVlID0gcGFyYW0ucGFydGl0aW9uKCc9JykKKyAgICAgICAgICAgIGlmIG5vdCBwYXJhbS5pc2FsbnVtKCkgb3IgZXEgYW5kIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmVzdWx0W3BhcmFtXSA9IHZhbHVlIGlmIGVxIGVsc2UgVHJ1ZQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgc210cF9IRUxQKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKQEAgLTQ1OSw3ICs1MTYsNyBAQAogCiAgICAgZGVmIHNtdHBfTUFJTChzZWxmLCBhcmcpOgogICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgotICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJz09PT4gTUFJTCcsIGFyZywgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JwpAQCAtNDc5LDEwICs1MzYsMjMgQEAKICAgICAgICAgaWYgc2VsZi5tYWlsZnJvbToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZXN0ZWQgTUFJTCBjb21tYW5kJykKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCisgICAgICAgIHNlbGYubWFpbF9vcHRpb25zID0gcGFyYW1zLnVwcGVyKCkuc3BsaXQoKQorICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMoc2VsZi5tYWlsX29wdGlvbnMpCiAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3Qgc2VsZi5fZGVjb2RlX2RhdGE6CisgICAgICAgICAgICBib2R5ID0gcGFyYW1zLnBvcCgnQk9EWScsICc3QklUJykKKyAgICAgICAgICAgIGlmIGJvZHkgbm90IGluIFsnN0JJVCcsICc4QklUTUlNRSddOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIEVycm9yOiBCT0RZIGNhbiBvbmx5IGJlIG9uZSBvZiA3QklULCA4QklUTUlNRScpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuZW5hYmxlX1NNVFBVVEY4OgorICAgICAgICAgICAgc210cHV0ZjggPSBwYXJhbXMucG9wKCdTTVRQVVRGOCcsIEZhbHNlKQorICAgICAgICAgICAgaWYgc210cHV0ZjggaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICBzZWxmLnJlcXVpcmVfU01UUFVURjggPSBUcnVlCisgICAgICAgICAgICBlbGlmIHNtdHB1dGY4IGlzIG5vdCBGYWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBFcnJvcjogU01UUFVURjggdGFrZXMgbm8gYXJndW1lbnRzJykKKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2l6ZSA9IHBhcmFtcy5wb3AoJ1NJWkUnLCBOb25lKQogICAgICAgICBpZiBzaXplOgogICAgICAgICAgICAgaWYgbm90IHNpemUuaXNkaWdpdCgpOgpAQCAtNTE3LDE2ICs1ODcsMTYgQEAKICAgICAgICAgaWYgbm90IGFkZHJlc3M6CiAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHBhcmFtczoKLSAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKLSAgICAgICAgICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCi0gICAgICAgICAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBwYXJhbXMgYW5kIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CisgICAgICAgIGlmIG5vdCBzZWxmLmV4dGVuZGVkX3NtdHAgYW5kIHBhcmFtczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5yY3B0X29wdGlvbnMgPSBwYXJhbXMudXBwZXIoKS5zcGxpdCgpCisgICAgICAgIHBhcmFtcyA9IHNlbGYuX2dldHBhcmFtcyhzZWxmLnJjcHRfb3B0aW9ucykKKyAgICAgICAgaWYgcGFyYW1zIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgWFhYIGN1cnJlbnRseSB0aGVyZSBhcmUgbm8gb3B0aW9ucyB3ZSByZWNvZ25pemUuCisgICAgICAgIGlmIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1NSBSQ1BUIFRPIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90IGltcGxlbWVudGVkJykKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLnJjcHR0b3MuYXBwZW5kKGFkZHJlc3MpCkBAIC01MzcsMTEgKzYwNyw3IEBACiAgICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogUlNFVCcpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIyBSZXNldHMgdGhlIHNlbmRlciwgcmVjaXBpZW50cywgYW5kIGRhdGEsIGJ1dCBub3QgdGhlIGdyZWV0aW5nCi0gICAgICAgIHNlbGYubWFpbGZyb20gPSBOb25lCi0gICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCi0gICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCi0gICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAorICAgICAgICBzZWxmLl9zZXRfcnNldF9zdGF0ZSgpCiAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX0RBVEEoc2VsZiwgYXJnKToKQEAgLTU2OCwxMyArNjM0LDI5IEBACiAgICAgY2hhbm5lbF9jbGFzcyA9IFNNVFBDaGFubmVsCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyLAotICAgICAgICAgICAgICAgICBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsIG1hcD1Ob25lKToKKyAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULCBtYXA9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gbG9jYWxhZGRyCiAgICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CisgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4CisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKKyAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwYXJhbWV0ZXJzIGNhbm5vdCBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNhbWUgdGltZS4iKQorICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQorICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgorICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCisgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQorICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgbWFwPW1hcCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBnYWlfcmVzdWx0cyA9IHNvY2tldC5nZXRhZGRyaW5mbygqbG9jYWxhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoZ2FpX3Jlc3VsdHNbMF1bMF0sIGdhaV9yZXN1bHRzWzBdWzFdKQogICAgICAgICAgICAgIyB0cnkgdG8gcmUtdXNlIGEgc2VydmVyIHBvcnQgaWYgcG9zc2libGUKICAgICAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQogICAgICAgICAgICAgc2VsZi5iaW5kKGxvY2FsYWRkcikKQEAgLTU4OSwxMSArNjcxLDE2IEBACiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgogICAgICAgICBwcmludCgnSW5jb21pbmcgY29ubmVjdGlvbiBmcm9tICVzJyAlIHJlcHIoYWRkciksIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3Moc2VsZiwgY29ubiwgYWRkciwgc2VsZi5kYXRhX3NpemVfbGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFwKQorICAgICAgICBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSkKIAogICAgICMgQVBJIGZvciAiZG9pbmcgc29tZXRoaW5nIHVzZWZ1bCB3aXRoIHRoZSBtZXNzYWdlIgotICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgorICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3dhcmdzKToKICAgICAgICAgIiIiT3ZlcnJpZGUgdGhpcyBhYnN0cmFjdCBtZXRob2QgdG8gaGFuZGxlIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudC4KIAogICAgICAgICBwZWVyIGlzIGEgdHVwbGUgY29udGFpbmluZyAoaXBhZGRyLCBwb3J0KSBvZiB0aGUgY2xpZW50IHRoYXQgbWFkZSB0aGUKQEAgLTYxMSwyOSArNjk4LDU4IEBACiAgICAgICAgIGNvbnRhaW5pbmcgYSBgLicgZm9sbG93ZWQgYnkgb3RoZXIgdGV4dCBoYXMgaGFkIHRoZSBsZWFkaW5nIGRvdAogICAgICAgICByZW1vdmVkLgogCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBOb25lLCBmb3IgYSBub3JtYWwgYDI1MCBPaycgcmVzcG9uc2U7Ci0gICAgICAgIG90aGVyd2lzZSBpdCByZXR1cm5zIHRoZSBkZXNpcmVkIHJlc3BvbnNlIHN0cmluZyBpbiBSRkMgODIxIGZvcm1hdC4KKyAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5CisgICAgICAgIHVubGVzcyBkZWNvZGVfZGF0YT1GYWxzZSBvciBlbmFibGVfU01UUFVURjg9VHJ1ZSB3YXMgZ2l2ZW4gYXMgaW5pdAorICAgICAgICBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgdXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKKyAgICAgICAgICAgICdtYWlsX29wdGlvbnMnOiBsaXN0IG9mIHBhcmFtZXRlcnMgdG8gdGhlIG1haWwgY29tbWFuZC4gIEFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzIGFyZSB1cHBlcmNhc2Ugc3RyaW5ncy4gIEV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10uCisgICAgICAgICAgICAncmNwdF9vcHRpb25zJzogc2FtZSwgZm9yIHRoZSByY3B0IGNvbW1hbmQuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIE5vbmUgZm9yIGEgbm9ybWFsIGAyNTAgT2snIHJlc3BvbnNlOworICAgICAgICBvdGhlcndpc2UsIGl0IHNob3VsZCByZXR1cm4gdGhlIGRlc2lyZWQgcmVzcG9uc2Ugc3RyaW5nIGluIFJGQyA4MjEKKyAgICAgICAgZm9ybWF0LgogCiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIAogY2xhc3MgRGVidWdnaW5nU2VydmVyKFNNVFBTZXJ2ZXIpOgotICAgICMgRG8gc29tZXRoaW5nIHdpdGggdGhlIGdhdGhlcmVkIG1lc3NhZ2UKLSAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKworICAgIGRlZiBfcHJpbnRfbWVzc2FnZV9jb250ZW50KHNlbGYsIHBlZXIsIGRhdGEpOgogICAgICAgICBpbmhlYWRlcnMgPSAxCi0gICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdCgnXG4nKQotICAgICAgICBwcmludCgnLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLScpCisgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdGxpbmVzKCkKICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CiAgICAgICAgICAgICAjIGhlYWRlcnMgZmlyc3QKICAgICAgICAgICAgIGlmIGluaGVhZGVycyBhbmQgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ1gtUGVlcjonLCBwZWVyWzBdKQorICAgICAgICAgICAgICAgIHBlZXJoZWFkZXIgPSAnWC1QZWVyOiAnICsgcGVlclswXQorICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGEsIHN0cik6CisgICAgICAgICAgICAgICAgICAgICMgZGVjb2RlZF9kYXRhPWZhbHNlOyBtYWtlIGhlYWRlciBtYXRjaCBvdGhlciBiaW5hcnkgb3V0cHV0CisgICAgICAgICAgICAgICAgICAgIHBlZXJoZWFkZXIgPSByZXByKHBlZXJoZWFkZXIuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIHByaW50KHBlZXJoZWFkZXIpCiAgICAgICAgICAgICAgICAgaW5oZWFkZXJzID0gMAorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgICAgICAgICAjIEF2b2lkIHNwdXJpb3VzICdzdHIgb24gYnl0ZXMgaW5zdGFuY2UnIHdhcm5pbmcuCisgICAgICAgICAgICAgICAgbGluZSA9IHJlcHIobGluZSkKICAgICAgICAgICAgIHByaW50KGxpbmUpCisKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncyk6CisgICAgICAgIHByaW50KCctLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tJykKKyAgICAgICAgaWYga3dhcmdzOgorICAgICAgICAgICAgaWYga3dhcmdzLmdldCgnbWFpbF9vcHRpb25zJyk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ21haWwgb3B0aW9uczogJXMnICUga3dhcmdzWydtYWlsX29wdGlvbnMnXSkKKyAgICAgICAgICAgIGlmIGt3YXJncy5nZXQoJ3JjcHRfb3B0aW9ucycpOgorICAgICAgICAgICAgICAgIHByaW50KCdyY3B0IG9wdGlvbnM6ICVzXG4nICUga3dhcmdzWydyY3B0X29wdGlvbnMnXSkKKyAgICAgICAgc2VsZi5fcHJpbnRfbWVzc2FnZV9jb250ZW50KHBlZXIsIGRhdGEpCiAgICAgICAgIHByaW50KCctLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tJykKIAogCiBjbGFzcyBQdXJlUHJveHkoU01UUFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmICdlbmFibGVfU01UUFVURjgnIGluIGt3YXJncyBhbmQga3dhcmdzWydlbmFibGVfU01UUFVURjgnXToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlB1cmVQcm94eSBkb2VzIG5vdCBzdXBwb3J0IFNNVFBVVEY4LiIpCisgICAgICAgIHN1cGVyKFB1cmVQcm94eSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdCgnXG4nKQogICAgICAgICAjIExvb2sgZm9yIHRoZSBsYXN0IGhlYWRlcgpAQCAtNjc0LDYgKzc5MCwxMSBAQAogCiAKIGNsYXNzIE1haWxtYW5Qcm94eShQdXJlUHJveHkpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiAnZW5hYmxlX1NNVFBVVEY4JyBpbiBrd2FyZ3MgYW5kIGt3YXJnc1snZW5hYmxlX1NNVFBVVEY4J106CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNYWlsbWFuUHJveHkgZG9lcyBub3Qgc3VwcG9ydCBTTVRQVVRGOC4iKQorICAgICAgICBzdXBlcihQdXJlUHJveHksIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKwogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgogICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogICAgICAgICBmcm9tIE1haWxtYW4gaW1wb3J0IFV0aWxzCkBAIC03NTIsMTcgKzg3MywxOSBAQAogCiAKIGNsYXNzIE9wdGlvbnM6Ci0gICAgc2V0dWlkID0gMQorICAgIHNldHVpZCA9IFRydWUKICAgICBjbGFzc25hbWUgPSAnUHVyZVByb3h5JwogICAgIHNpemVfbGltaXQgPSBOb25lCisgICAgZW5hYmxlX1NNVFBVVEY4ID0gRmFsc2UKIAogCiBkZWYgcGFyc2VhcmdzKCk6CiAgICAgZ2xvYmFsIERFQlVHU1RSRUFNCiAgICAgdHJ5OgogICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdCgKLSAgICAgICAgICAgIHN5cy5hcmd2WzE6XSwgJ25WaGM6czpkJywKLSAgICAgICAgICAgIFsnY2xhc3M9JywgJ25vc2V0dWlkJywgJ3ZlcnNpb24nLCAnaGVscCcsICdzaXplPScsICdkZWJ1ZyddKQorICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAnblZoYzpzOmR1JywKKyAgICAgICAgICAgIFsnY2xhc3M9JywgJ25vc2V0dWlkJywgJ3ZlcnNpb24nLCAnaGVscCcsICdzaXplPScsICdkZWJ1ZycsCisgICAgICAgICAgICAgJ3NtdHB1dGY4J10pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBlOgogICAgICAgICB1c2FnZSgxLCBlKQogCkBAIC03NzQsMTEgKzg5NywxMyBAQAogICAgICAgICAgICAgcHJpbnQoX192ZXJzaW9uX18pCiAgICAgICAgICAgICBzeXMuZXhpdCgwKQogICAgICAgICBlbGlmIG9wdCBpbiAoJy1uJywgJy0tbm9zZXR1aWQnKToKLSAgICAgICAgICAgIG9wdGlvbnMuc2V0dWlkID0gMAorICAgICAgICAgICAgb3B0aW9ucy5zZXR1aWQgPSBGYWxzZQogICAgICAgICBlbGlmIG9wdCBpbiAoJy1jJywgJy0tY2xhc3MnKToKICAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NuYW1lID0gYXJnCiAgICAgICAgIGVsaWYgb3B0IGluICgnLWQnLCAnLS1kZWJ1ZycpOgogICAgICAgICAgICAgREVCVUdTVFJFQU0gPSBzeXMuc3RkZXJyCisgICAgICAgIGVsaWYgb3B0IGluICgnLXUnLCAnLS1zbXRwdXRmOCcpOgorICAgICAgICAgICAgb3B0aW9ucy5lbmFibGVfU01UUFVURjggPSBUcnVlCiAgICAgICAgIGVsaWYgb3B0IGluICgnLXMnLCAnLS1zaXplJyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaW50X3NpemUgPSBpbnQoYXJnKQpAQCAtODMzLDcgKzk1OCw3IEBACiAgICAgY2xhc3NfID0gZ2V0YXR0cihtb2QsIGNsYXNzbmFtZSkKICAgICBwcm94eSA9IGNsYXNzXygob3B0aW9ucy5sb2NhbGhvc3QsIG9wdGlvbnMubG9jYWxwb3J0KSwKICAgICAgICAgICAgICAgICAgICAob3B0aW9ucy5yZW1vdGVob3N0LCBvcHRpb25zLnJlbW90ZXBvcnQpLAotICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCkKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVfbGltaXQsIGVuYWJsZV9TTVRQVVRGOD1vcHRpb25zLmVuYWJsZV9TTVRQVVRGOCkKICAgICBpZiBvcHRpb25zLnNldHVpZDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IHB3ZApkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCBkYjIzZmYwLi40ZmU2YWFmIDEwMDc1NQotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtNTAsOCArNTAsOSBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGhtYWMKIGltcG9ydCBjb3B5CitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBzeXMKIGZyb20gZW1haWwuYmFzZTY0bWltZSBpbXBvcnQgYm9keV9lbmNvZGUgYXMgZW5jb2RlX2Jhc2U2NAotZnJvbSBzeXMgaW1wb3J0IHN0ZGVycgogCiBfX2FsbF9fID0gWyJTTVRQRXhjZXB0aW9uIiwgIlNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQiLCAiU01UUFJlc3BvbnNlRXhjZXB0aW9uIiwKICAgICAgICAgICAgIlNNVFBTZW5kZXJSZWZ1c2VkIiwgIlNNVFBSZWNpcGllbnRzUmVmdXNlZCIsICJTTVRQRGF0YUVycm9yIiwKQEAgLTcwLDYgKzcxLDEzIEBACiBjbGFzcyBTTVRQRXhjZXB0aW9uKE9TRXJyb3IpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIGFsbCBleGNlcHRpb25zIHJhaXNlZCBieSB0aGlzIG1vZHVsZS4iIiIKIAorY2xhc3MgU01UUE5vdFN1cHBvcnRlZEVycm9yKFNNVFBFeGNlcHRpb24pOgorICAgICIiIlRoZSBjb21tYW5kIG9yIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBTTVRQIHNlcnZlci4KKworICAgIFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBydW4gYSBjb21tYW5kIG9yIGEKKyAgICBjb21tYW5kIHdpdGggYW4gb3B0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNlcnZlci4KKyAgICAiIiIKKwogY2xhc3MgU01UUFNlcnZlckRpc2Nvbm5lY3RlZChTTVRQRXhjZXB0aW9uKToKICAgICAiIiJOb3QgY29ubmVjdGVkIHRvIGFueSBTTVRQIHNlcnZlci4KIApAQCAtMjM2LDYgKzI0NCw3IEBACiAgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lc210cF9mZWF0dXJlcyA9IHt9CisgICAgICAgIHNlbGYuY29tbWFuZF9lbmNvZGluZyA9ICdhc2NpaScKICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcyA9IHNvdXJjZV9hZGRyZXNzCiAKICAgICAgICAgaWYgaG9zdDoKQEAgLTI4MiwxMiArMjkxLDE3IEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmRlYnVnbGV2ZWwgPSBkZWJ1Z2xldmVsCiAKKyAgICBkZWYgX3ByaW50X2RlYnVnKHNlbGYsICphcmdzKToKKyAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMToKKyAgICAgICAgICAgIHByaW50KGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnRpbWUoKSwgKmFyZ3MsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCphcmdzLCBmaWxlPXN5cy5zdGRlcnIpCisKICAgICBkZWYgX2dldF9zb2NrZXQoc2VsZiwgaG9zdCwgcG9ydCwgdGltZW91dCk6CiAgICAgICAgICMgVGhpcyBtYWtlcyBpdCBzaW1wbGVyIGZvciBTTVRQX1NTTCB0byB1c2UgdGhlIFNNVFAgY29ubmVjdCBjb2RlCiAgICAgICAgICMgYW5kIGp1c3QgYWx0ZXIgdGhlIHNvY2tldCBjb25uZWN0aW9uIGJpdC4KICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OiB0bycsIChob3N0LCBwb3J0KSwgc2VsZi5zb3VyY2VfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3Q6IHRvJywgKGhvc3QsIHBvcnQpLCBzZWxmLnNvdXJjZV9hZGRyZXNzKQogICAgICAgICByZXR1cm4gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzKQogCkBAIC0zMTcsMjEgKzMzMSwyNCBAQAogICAgICAgICBpZiBub3QgcG9ydDoKICAgICAgICAgICAgIHBvcnQgPSBzZWxmLmRlZmF1bHRfcG9ydAogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0OicsIChob3N0LCBwb3J0KSkKICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5fZ2V0X3NvY2tldChob3N0LCBwb3J0LCBzZWxmLnRpbWVvdXQpCiAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCJjb25uZWN0OiIsIG1zZywgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCByZXByKG1zZykpCiAgICAgICAgIHJldHVybiAoY29kZSwgbXNnKQogCiAgICAgZGVmIHNlbmQoc2VsZiwgcyk6CiAgICAgICAgICIiIlNlbmQgYHMnIHRvIHRoZSBzZXJ2ZXIuIiIiCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICBwcmludCgnc2VuZDonLCByZXByKHMpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdzZW5kOicsIHJlcHIocykpCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3NvY2snKSBhbmQgc2VsZi5zb2NrOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgotICAgICAgICAgICAgICAgIHMgPSBzLmVuY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgICAgICMgc2VuZCBpcyB1c2VkIGJ5IHRoZSAnZGF0YScgY29tbWFuZCwgd2hlcmUgY29tbWFuZF9lbmNvZGluZworICAgICAgICAgICAgICAgICMgc2hvdWxkIG5vdCBiZSB1c2VkLCBidXQgJ2RhdGEnIG5lZWRzIHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0bworICAgICAgICAgICAgICAgICMgYmluYXJ5IGl0c2VsZiBhbnl3YXksIHNvIHRoYXQncyBub3QgYSBwcm9ibGVtLgorICAgICAgICAgICAgICAgIHMgPSBzLmVuY29kZShzZWxmLmNvbW1hbmRfZW5jb2RpbmcpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLnNlbmRhbGwocykKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgpAQCAtMzc1LDcgKzM5Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UgU01UUFNlcnZlckRpc2Nvbm5lY3RlZCgiQ29ubmVjdGlvbiB1bmV4cGVjdGVkbHkgY2xvc2VkIikKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ3JlcGx5OicsIHJlcHIobGluZSksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdyZXBseTonLCByZXByKGxpbmUpKQogICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UgU01UUFJlc3BvbnNlRXhjZXB0aW9uKDUwMCwgIkxpbmUgdG9vIGxvbmcuIikKQEAgLTM5NCw4ICs0MTEsNyBAQAogCiAgICAgICAgIGVycm1zZyA9IGIiXG4iLmpvaW4ocmVzcCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdyZXBseTogcmV0Y29kZSAoJXMpOyBNc2c6ICVzJyAlIChlcnJjb2RlLCBlcnJtc2cpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ3JlcGx5OiByZXRjb2RlICglcyk7IE1zZzogJWEnICUgKGVycmNvZGUsIGVycm1zZykpCiAgICAgICAgIHJldHVybiBlcnJjb2RlLCBlcnJtc2cKIAogICAgIGRlZiBkb2NtZChzZWxmLCBjbWQsIGFyZ3M9IiIpOgpAQCAtNDc3LDYgKzQ5Myw3IEBACiAKICAgICBkZWYgcnNldChzZWxmKToKICAgICAgICAgIiIiU01UUCAncnNldCcgY29tbWFuZCAtLSByZXNldHMgc2Vzc2lvbi4iIiIKKyAgICAgICAgc2VsZi5jb21tYW5kX2VuY29kaW5nID0gJ2FzY2lpJwogICAgICAgICByZXR1cm4gc2VsZi5kb2NtZCgicnNldCIpCiAKICAgICBkZWYgX3JzZXQoc2VsZik6CkBAIC00OTYsOSArNTEzLDIyIEBACiAgICAgICAgIHJldHVybiBzZWxmLmRvY21kKCJub29wIikKIAogICAgIGRlZiBtYWlsKHNlbGYsIHNlbmRlciwgb3B0aW9ucz1bXSk6Ci0gICAgICAgICIiIlNNVFAgJ21haWwnIGNvbW1hbmQgLS0gYmVnaW5zIG1haWwgeGZlciBzZXNzaW9uLiIiIgorICAgICAgICAiIiJTTVRQICdtYWlsJyBjb21tYW5kIC0tIGJlZ2lucyBtYWlsIHhmZXIgc2Vzc2lvbi4KKworICAgICAgICBUaGlzIG1ldGhvZCBtYXkgcmFpc2UgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisgICAgICAgICBTTVRQTm90U3VwcG9ydGVkRXJyb3IgIFRoZSBvcHRpb25zIHBhcmFtZXRlciBpbmNsdWRlcyAnU01UUFVURjgnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCB0aGUgU01UUFVURjggZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlcnZlci4KKyAgICAgICAgIiIiCiAgICAgICAgIG9wdGlvbmxpc3QgPSAnJwogICAgICAgICBpZiBvcHRpb25zIGFuZCBzZWxmLmRvZXNfZXNtdHA6CisgICAgICAgICAgICBpZiBhbnkoeC5sb3dlcigpPT0nc210cHV0ZjgnIGZvciB4IGluIG9wdGlvbnMpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2V4dG4oJ3NtdHB1dGY4Jyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZF9lbmNvZGluZyA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTTVRQTm90U3VwcG9ydGVkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAnU01UUFVURjggbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXInKQogICAgICAgICAgICAgb3B0aW9ubGlzdCA9ICcgJyArICcgJy5qb2luKG9wdGlvbnMpCiAgICAgICAgIHNlbGYucHV0Y21kKCJtYWlsIiwgIkZST006JXMlcyIgJSAocXVvdGVhZGRyKHNlbmRlciksIG9wdGlvbmxpc3QpKQogICAgICAgICByZXR1cm4gc2VsZi5nZXRyZXBseSgpCkBAIC01MjQsNyArNTU0LDcgQEAKICAgICAgICAgc2VsZi5wdXRjbWQoImRhdGEiKQogICAgICAgICAoY29kZSwgcmVwbCkgPSBzZWxmLmdldHJlcGx5KCkKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCJkYXRhOiIsIChjb2RlLCByZXBsKSwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnZGF0YTonLCAoY29kZSwgcmVwbCkpCiAgICAgICAgIGlmIGNvZGUgIT0gMzU0OgogICAgICAgICAgICAgcmFpc2UgU01UUERhdGFFcnJvcihjb2RlLCByZXBsKQogICAgICAgICBlbHNlOgpAQCAtNTM3LDcgKzU2Nyw3IEBACiAgICAgICAgICAgICBzZWxmLnNlbmQocSkKICAgICAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCJkYXRhOiIsIChjb2RlLCBtc2cpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnZGF0YTonLCAoY29kZSwgbXNnKSkKICAgICAgICAgICAgIHJldHVybiAoY29kZSwgbXNnKQogCiAgICAgZGVmIHZlcmlmeShzZWxmLCBhZGRyZXNzKToKQEAgLTU3MSwxMiArNjAxLDc4IEBACiAgICAgICAgICAgICAgICAgaWYgbm90ICgyMDAgPD0gY29kZSA8PSAyOTkpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBTTVRQSGVsb0Vycm9yKGNvZGUsIHJlc3ApCiAKLSAgICBkZWYgbG9naW4oc2VsZiwgdXNlciwgcGFzc3dvcmQpOgorICAgIGRlZiBhdXRoKHNlbGYsIG1lY2hhbmlzbSwgYXV0aG9iamVjdCwgKiwgaW5pdGlhbF9yZXNwb25zZV9vaz1UcnVlKToKKyAgICAgICAgIiIiQXV0aGVudGljYXRpb24gY29tbWFuZCAtIHJlcXVpcmVzIHJlc3BvbnNlIHByb2Nlc3NpbmcuCisKKyAgICAgICAgJ21lY2hhbmlzbScgc3BlY2lmaWVzIHdoaWNoIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbSBpcyB0bworICAgICAgICBiZSB1c2VkIC0gdGhlIHZhbGlkIHZhbHVlcyBhcmUgdGhvc2UgbGlzdGVkIGluIHRoZSAnYXV0aCcKKyAgICAgICAgZWxlbWVudCBvZiAnZXNtdHBfZmVhdHVyZXMnLgorCisgICAgICAgICdhdXRob2JqZWN0JyBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0IHRha2luZyBhIHNpbmdsZSBhcmd1bWVudDoKKworICAgICAgICAgICAgICAgIGRhdGEgPSBhdXRob2JqZWN0KGNoYWxsZW5nZSkKKworICAgICAgICBJdCB3aWxsIGJlIGNhbGxlZCB0byBwcm9jZXNzIHRoZSBzZXJ2ZXIncyBjaGFsbGVuZ2UgcmVzcG9uc2U7IHRoZQorICAgICAgICBjaGFsbGVuZ2UgYXJndW1lbnQgaXQgaXMgcGFzc2VkIHdpbGwgYmUgYSBieXRlcy4gIEl0IHNob3VsZCByZXR1cm4KKyAgICAgICAgYnl0ZXMgZGF0YSB0aGF0IHdpbGwgYmUgYmFzZTY0IGVuY29kZWQgYW5kIHNlbnQgdG8gdGhlIHNlcnZlci4KKworICAgICAgICBLZXl3b3JkIGFyZ3VtZW50czoKKyAgICAgICAgICAgIC0gaW5pdGlhbF9yZXNwb25zZV9vazogQWxsb3cgc2VuZGluZyB0aGUgUkZDIDQ5NTQgaW5pdGlhbC1yZXNwb25zZQorICAgICAgICAgICAgICB0byB0aGUgQVVUSCBjb21tYW5kLCBpZiB0aGUgYXV0aGVudGljYXRpb24gbWV0aG9kcyBzdXBwb3J0cyBpdC4KKyAgICAgICAgIiIiCisgICAgICAgICMgUkZDIDQ5NTQgYWxsb3dzIGF1dGggbWV0aG9kcyB0byBwcm92aWRlIGFuIGluaXRpYWwgcmVzcG9uc2UuICBOb3QgYWxsCisgICAgICAgICMgbWV0aG9kcyBzdXBwb3J0IGl0LiAgQnkgZGVmaW5pdGlvbiwgaWYgdGhleSByZXR1cm4gc29tZXRoaW5nIG90aGVyCisgICAgICAgICMgdGhhbiBOb25lIHdoZW4gY2hhbGxlbmdlIGlzIE5vbmUsIHRoZW4gdGhleSBkby4gIFNlZSBpc3N1ZSAjMTUwMTQuCisgICAgICAgIG1lY2hhbmlzbSA9IG1lY2hhbmlzbS51cHBlcigpCisgICAgICAgIGluaXRpYWxfcmVzcG9uc2UgPSAoYXV0aG9iamVjdCgpIGlmIGluaXRpYWxfcmVzcG9uc2Vfb2sgZWxzZSBOb25lKQorICAgICAgICBpZiBpbml0aWFsX3Jlc3BvbnNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBlbmNvZGVfYmFzZTY0KGluaXRpYWxfcmVzcG9uc2UuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpCisgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKCJBVVRIIiwgbWVjaGFuaXNtICsgIiAiICsgcmVzcG9uc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKCJBVVRIIiwgbWVjaGFuaXNtKQorICAgICAgICAgICAgIyBTZXJ2ZXIgcmVwbGllcyB3aXRoIDMzNCAoY2hhbGxlbmdlKSBvciA1MzUgKG5vdCBzdXBwb3J0ZWQpCisgICAgICAgICAgICBpZiBjb2RlID09IDMzNDoKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UgPSBiYXNlNjQuZGVjb2RlYnl0ZXMocmVzcCkKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IGVuY29kZV9iYXNlNjQoCisgICAgICAgICAgICAgICAgICAgIGF1dGhvYmplY3QoY2hhbGxlbmdlKS5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykKKyAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKHJlc3BvbnNlKQorICAgICAgICBpZiBjb2RlIGluICgyMzUsIDUwMyk6CisgICAgICAgICAgICByZXR1cm4gKGNvZGUsIHJlc3ApCisgICAgICAgIHJhaXNlIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yKGNvZGUsIHJlc3ApCisKKyAgICBkZWYgYXV0aF9jcmFtX21kNShzZWxmLCBjaGFsbGVuZ2U9Tm9uZSk6CisgICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIENSQU0tTUQ1IGF1dGhlbnRpY2F0aW9uLiBSZXF1aXJlcyBzZWxmLnVzZXIKKyAgICAgICAgYW5kIHNlbGYucGFzc3dvcmQgdG8gYmUgc2V0LiIiIgorICAgICAgICAjIENSQU0tTUQ1IGRvZXMgbm90IHN1cHBvcnQgaW5pdGlhbC1yZXNwb25zZS4KKyAgICAgICAgaWYgY2hhbGxlbmdlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi51c2VyICsgIiAiICsgaG1hYy5ITUFDKAorICAgICAgICAgICAgc2VsZi5wYXNzd29yZC5lbmNvZGUoJ2FzY2lpJyksIGNoYWxsZW5nZSwgJ21kNScpLmhleGRpZ2VzdCgpCisKKyAgICBkZWYgYXV0aF9wbGFpbihzZWxmLCBjaGFsbGVuZ2U9Tm9uZSk6CisgICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIFBMQUlOIGF1dGhlbnRpY2F0aW9uLiBSZXF1aXJlcyBzZWxmLnVzZXIgYW5kCisgICAgICAgIHNlbGYucGFzc3dvcmQgdG8gYmUgc2V0LiIiIgorICAgICAgICByZXR1cm4gIlwwJXNcMCVzIiAlIChzZWxmLnVzZXIsIHNlbGYucGFzc3dvcmQpCisKKyAgICBkZWYgYXV0aF9sb2dpbihzZWxmLCBjaGFsbGVuZ2U9Tm9uZSk6CisgICAgICAgICIiIiBBdXRob2JqZWN0IHRvIHVzZSB3aXRoIExPR0lOIGF1dGhlbnRpY2F0aW9uLiBSZXF1aXJlcyBzZWxmLnVzZXIgYW5kCisgICAgICAgIHNlbGYucGFzc3dvcmQgdG8gYmUgc2V0LiIiIgorICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKAorICAgICAgICAgICAgZW5jb2RlX2Jhc2U2NChzZWxmLnVzZXIuZW5jb2RlKCdhc2NpaScpLCBlb2w9JycpKQorICAgICAgICBpZiBjb2RlID09IDMzNDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhc3N3b3JkCisgICAgICAgIHJhaXNlIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yKGNvZGUsIHJlc3ApCisKKyAgICBkZWYgbG9naW4oc2VsZiwgdXNlciwgcGFzc3dvcmQsICosIGluaXRpYWxfcmVzcG9uc2Vfb2s9VHJ1ZSk6CiAgICAgICAgICIiIkxvZyBpbiBvbiBhbiBTTVRQIHNlcnZlciB0aGF0IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uLgogCiAgICAgICAgIFRoZSBhcmd1bWVudHMgYXJlOgotICAgICAgICAgICAgLSB1c2VyOiAgICAgVGhlIHVzZXIgbmFtZSB0byBhdXRoZW50aWNhdGUgd2l0aC4KLSAgICAgICAgICAgIC0gcGFzc3dvcmQ6IFRoZSBwYXNzd29yZCBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAgICAgLSB1c2VyOiAgICAgICAgIFRoZSB1c2VyIG5hbWUgdG8gYXV0aGVudGljYXRlIHdpdGguCisgICAgICAgICAgICAtIHBhc3N3b3JkOiAgICAgVGhlIHBhc3N3b3JkIGZvciB0aGUgYXV0aGVudGljYXRpb24uCisKKyAgICAgICAgS2V5d29yZCBhcmd1bWVudHM6CisgICAgICAgICAgICAtIGluaXRpYWxfcmVzcG9uc2Vfb2s6IEFsbG93IHNlbmRpbmcgdGhlIFJGQyA0OTU0IGluaXRpYWwtcmVzcG9uc2UKKyAgICAgICAgICAgICAgdG8gdGhlIEFVVEggY29tbWFuZCwgaWYgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgc3VwcG9ydHMgaXQuCiAKICAgICAgICAgSWYgdGhlcmUgaGFzIGJlZW4gbm8gcHJldmlvdXMgRUhMTyBvciBIRUxPIGNvbW1hbmQgdGhpcyBzZXNzaW9uLCB0aGlzCiAgICAgICAgIG1ldGhvZCB0cmllcyBFU01UUCBFSExPIGZpcnN0LgpAQCAtNTg5LDY3ICs2ODUsNDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaGVsbyBncmVldGluZy4KICAgICAgICAgIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yICBUaGUgc2VydmVyIGRpZG4ndCBhY2NlcHQgdGhlIHVzZXJuYW1lLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkIGNvbWJpbmF0aW9uLgorICAgICAgICAgU01UUE5vdFN1cHBvcnRlZEVycm9yICAgIFRoZSBBVVRIIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIuCiAgICAgICAgICBTTVRQRXhjZXB0aW9uICAgICAgICAgICAgTm8gc3VpdGFibGUgYXV0aGVudGljYXRpb24gbWV0aG9kIHdhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kLgogICAgICAgICAiIiIKIAotICAgICAgICBkZWYgZW5jb2RlX2NyYW1fbWQ1KGNoYWxsZW5nZSwgdXNlciwgcGFzc3dvcmQpOgotICAgICAgICAgICAgY2hhbGxlbmdlID0gYmFzZTY0LmRlY29kZWJ5dGVzKGNoYWxsZW5nZSkKLSAgICAgICAgICAgIHJlc3BvbnNlID0gdXNlciArICIgIiArIGhtYWMuSE1BQyhwYXNzd29yZC5lbmNvZGUoJ2FzY2lpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlLCAnbWQ1JykuaGV4ZGlnZXN0KCkKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVfYmFzZTY0KHJlc3BvbnNlLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKQotCi0gICAgICAgIGRlZiBlbmNvZGVfcGxhaW4odXNlciwgcGFzc3dvcmQpOgotICAgICAgICAgICAgcyA9ICJcMCVzXDAlcyIgJSAodXNlciwgcGFzc3dvcmQpCi0gICAgICAgICAgICByZXR1cm4gZW5jb2RlX2Jhc2U2NChzLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKQotCi0gICAgICAgIEFVVEhfUExBSU4gPSAiUExBSU4iCi0gICAgICAgIEFVVEhfQ1JBTV9NRDUgPSAiQ1JBTS1NRDUiCi0gICAgICAgIEFVVEhfTE9HSU4gPSAiTE9HSU4iCi0KICAgICAgICAgc2VsZi5laGxvX29yX2hlbG9faWZfbmVlZGVkKCkKLQogICAgICAgICBpZiBub3Qgc2VsZi5oYXNfZXh0bigiYXV0aCIpOgotICAgICAgICAgICAgcmFpc2UgU01UUEV4Y2VwdGlvbigiU01UUCBBVVRIIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4iKQorICAgICAgICAgICAgcmFpc2UgU01UUE5vdFN1cHBvcnRlZEVycm9yKAorICAgICAgICAgICAgICAgICJTTVRQIEFVVEggZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyLiIpCiAKICAgICAgICAgIyBBdXRoZW50aWNhdGlvbiBtZXRob2RzIHRoZSBzZXJ2ZXIgY2xhaW1zIHRvIHN1cHBvcnQKICAgICAgICAgYWR2ZXJ0aXNlZF9hdXRobGlzdCA9IHNlbGYuZXNtdHBfZmVhdHVyZXNbImF1dGgiXS5zcGxpdCgpCiAKLSAgICAgICAgIyBMaXN0IG9mIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgd2Ugc3VwcG9ydDogZnJvbSBwcmVmZXJyZWQgdG8KLSAgICAgICAgIyBsZXNzIHByZWZlcnJlZCBtZXRob2RzLiBFeGNlcHQgZm9yIHRoZSBwdXJwb3NlIG9mIHRlc3RpbmcgdGhlIHdlYWtlcgotICAgICAgICAjIG9uZXMsIHdlIHByZWZlciBzdHJvbmdlciBtZXRob2RzIGxpa2UgQ1JBTS1NRDU6Ci0gICAgICAgIHByZWZlcnJlZF9hdXRocyA9IFtBVVRIX0NSQU1fTUQ1LCBBVVRIX1BMQUlOLCBBVVRIX0xPR0lOXQorICAgICAgICAjIEF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgd2UgY2FuIGhhbmRsZSBpbiBvdXIgcHJlZmVycmVkIG9yZGVyOgorICAgICAgICBwcmVmZXJyZWRfYXV0aHMgPSBbJ0NSQU0tTUQ1JywgJ1BMQUlOJywgJ0xPR0lOJ10KIAotICAgICAgICAjIFdlIHRyeSB0aGUgYXV0aGVudGljYXRpb24gbWV0aG9kcyB0aGUgc2VydmVyIGFkdmVydGlzZXMsIGJ1dCBvbmx5IHRoZQotICAgICAgICAjIG9uZXMgKndlKiBzdXBwb3J0LiBBbmQgaW4gb3VyIHByZWZlcnJlZCBvcmRlci4KLSAgICAgICAgYXV0aGxpc3QgPSBbYXV0aCBmb3IgYXV0aCBpbiBwcmVmZXJyZWRfYXV0aHMgaWYgYXV0aCBpbiBhZHZlcnRpc2VkX2F1dGhsaXN0XQorICAgICAgICAjIFdlIHRyeSB0aGUgc3VwcG9ydGVkIGF1dGhlbnRpY2F0aW9ucyBpbiBvdXIgcHJlZmVycmVkIG9yZGVyLCBpZgorICAgICAgICAjIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgdGhlbS4KKyAgICAgICAgYXV0aGxpc3QgPSBbYXV0aCBmb3IgYXV0aCBpbiBwcmVmZXJyZWRfYXV0aHMKKyAgICAgICAgICAgICAgICAgICAgaWYgYXV0aCBpbiBhZHZlcnRpc2VkX2F1dGhsaXN0XQogICAgICAgICBpZiBub3QgYXV0aGxpc3Q6CiAgICAgICAgICAgICByYWlzZSBTTVRQRXhjZXB0aW9uKCJObyBzdWl0YWJsZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgZm91bmQuIikKIAogICAgICAgICAjIFNvbWUgc2VydmVycyBhZHZlcnRpc2UgYXV0aGVudGljYXRpb24gbWV0aG9kcyB0aGV5IGRvbid0IHJlYWxseQogICAgICAgICAjIHN1cHBvcnQsIHNvIGlmIGF1dGhlbnRpY2F0aW9uIGZhaWxzLCB3ZSBjb250aW51ZSB1bnRpbCB3ZSd2ZSB0cmllZAogICAgICAgICAjIGFsbCBtZXRob2RzLgorICAgICAgICBzZWxmLnVzZXIsIHNlbGYucGFzc3dvcmQgPSB1c2VyLCBwYXNzd29yZAogICAgICAgICBmb3IgYXV0aG1ldGhvZCBpbiBhdXRobGlzdDoKLSAgICAgICAgICAgIGlmIGF1dGhtZXRob2QgPT0gQVVUSF9DUkFNX01ENToKLSAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmRvY21kKCJBVVRIIiwgQVVUSF9DUkFNX01ENSkKLSAgICAgICAgICAgICAgICBpZiBjb2RlID09IDMzNDoKLSAgICAgICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZChlbmNvZGVfY3JhbV9tZDUocmVzcCwgdXNlciwgcGFzc3dvcmQpKQotICAgICAgICAgICAgZWxpZiBhdXRobWV0aG9kID09IEFVVEhfUExBSU46Ci0gICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsCi0gICAgICAgICAgICAgICAgICAgIEFVVEhfUExBSU4gKyAiICIgKyBlbmNvZGVfcGxhaW4odXNlciwgcGFzc3dvcmQpKQotICAgICAgICAgICAgZWxpZiBhdXRobWV0aG9kID09IEFVVEhfTE9HSU46Ci0gICAgICAgICAgICAgICAgKGNvZGUsIHJlc3ApID0gc2VsZi5kb2NtZCgiQVVUSCIsCi0gICAgICAgICAgICAgICAgICAgICIlcyAlcyIgJSAoQVVUSF9MT0dJTiwgZW5jb2RlX2Jhc2U2NCh1c2VyLmVuY29kZSgnYXNjaWknKSwgZW9sPScnKSkpCi0gICAgICAgICAgICAgICAgaWYgY29kZSA9PSAzMzQ6Ci0gICAgICAgICAgICAgICAgICAgIChjb2RlLCByZXNwKSA9IHNlbGYuZG9jbWQoZW5jb2RlX2Jhc2U2NChwYXNzd29yZC5lbmNvZGUoJ2FzY2lpJyksIGVvbD0nJykpCisgICAgICAgICAgICBtZXRob2RfbmFtZSA9ICdhdXRoXycgKyBhdXRobWV0aG9kLmxvd2VyKCkucmVwbGFjZSgnLScsICdfJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAoY29kZSwgcmVzcCkgPSBzZWxmLmF1dGgoCisgICAgICAgICAgICAgICAgICAgIGF1dGhtZXRob2QsIGdldGF0dHIoc2VsZiwgbWV0aG9kX25hbWUpLAorICAgICAgICAgICAgICAgICAgICBpbml0aWFsX3Jlc3BvbnNlX29rPWluaXRpYWxfcmVzcG9uc2Vfb2spCisgICAgICAgICAgICAgICAgIyAyMzUgPT0gJ0F1dGhlbnRpY2F0aW9uIHN1Y2Nlc3NmdWwnCisgICAgICAgICAgICAgICAgIyA1MDMgPT0gJ0Vycm9yOiBhbHJlYWR5IGF1dGhlbnRpY2F0ZWQnCisgICAgICAgICAgICAgICAgaWYgY29kZSBpbiAoMjM1LCA1MDMpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGNvZGUsIHJlc3ApCisgICAgICAgICAgICBleGNlcHQgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBsYXN0X2V4Y2VwdGlvbiA9IGUKIAotICAgICAgICAgICAgIyAyMzUgPT0gJ0F1dGhlbnRpY2F0aW9uIHN1Y2Nlc3NmdWwnCi0gICAgICAgICAgICAjIDUwMyA9PSAnRXJyb3I6IGFscmVhZHkgYXV0aGVudGljYXRlZCcKLSAgICAgICAgICAgIGlmIGNvZGUgaW4gKDIzNSwgNTAzKToKLSAgICAgICAgICAgICAgICByZXR1cm4gKGNvZGUsIHJlc3ApCi0KLSAgICAgICAgIyBXZSBjb3VsZCBub3QgbG9naW4gc3VjZXNzZnVsbHkuIFJldHVybiByZXN1bHQgb2YgbGFzdCBhdHRlbXB0LgotICAgICAgICByYWlzZSBTTVRQQXV0aGVudGljYXRpb25FcnJvcihjb2RlLCByZXNwKQorICAgICAgICAjIFdlIGNvdWxkIG5vdCBsb2dpbiBzdWNjZXNzZnVsbHkuICBSZXR1cm4gcmVzdWx0IG9mIGxhc3QgYXR0ZW1wdC4KKyAgICAgICAgcmFpc2UgbGFzdF9leGNlcHRpb24KIAogICAgIGRlZiBzdGFydHRscyhzZWxmLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICIiIlB1dHMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFNNVFAgc2VydmVyIGludG8gVExTIG1vZGUuCkBAIC02NzAsNyArNzQ4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19leHRuKCJzdGFydHRscyIpOgotICAgICAgICAgICAgcmFpc2UgU01UUEV4Y2VwdGlvbigiU1RBUlRUTFMgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgc2VydmVyLiIpCisgICAgICAgICAgICByYWlzZSBTTVRQTm90U3VwcG9ydGVkRXJyb3IoCisgICAgICAgICAgICAgICAgIlNUQVJUVExTIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlci4iKQogICAgICAgICAocmVzcCwgcmVwbHkpID0gc2VsZi5kb2NtZCgiU1RBUlRUTFMiKQogICAgICAgICBpZiByZXNwID09IDIyMDoKICAgICAgICAgICAgIGlmIG5vdCBfaGF2ZV9zc2w6CkBAIC03MzUsNiArODE0LDkgQEAKICAgICAgICAgIFNNVFBEYXRhRXJyb3IgICAgICAgICAgVGhlIHNlcnZlciByZXBsaWVkIHdpdGggYW4gdW5leHBlY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBjb2RlIChvdGhlciB0aGFuIGEgcmVmdXNhbCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJlY2lwaWVudCkuCisgICAgICAgICBTTVRQTm90U3VwcG9ydGVkRXJyb3IgIFRoZSBtYWlsX29wdGlvbnMgcGFyYW1ldGVyIGluY2x1ZGVzICdTTVRQVVRGOCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHRoZSBTTVRQVVRGOCBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2VydmVyLgogCiAgICAgICAgIE5vdGU6IHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCiAKQEAgLTc2Myw4ICs4NDUsNiBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKG1zZywgc3RyKToKICAgICAgICAgICAgIG1zZyA9IF9maXhfZW9scyhtc2cpLmVuY29kZSgnYXNjaWknKQogICAgICAgICBpZiBzZWxmLmRvZXNfZXNtdHA6Ci0gICAgICAgICAgICAjIEhtbW0/IHdoYXQncyB0aGlzPyAtZGRtCi0gICAgICAgICAgICAjIHNlbGYuZXNtdHBfZmVhdHVyZXNbJzdiaXQnXT0iIgogICAgICAgICAgICAgaWYgc2VsZi5oYXNfZXh0bignc2l6ZScpOgogICAgICAgICAgICAgICAgIGVzbXRwX29wdHMuYXBwZW5kKCJzaXplPSVkIiAlIGxlbihtc2cpKQogICAgICAgICAgICAgZm9yIG9wdGlvbiBpbiBtYWlsX29wdGlvbnM6CkBAIC04MTIsNyArODkyLDEzIEBACiAgICAgICAgIHRvX2FkZHIsIGFueSBCY2MgZmllbGQgKG9yIFJlc2VudC1CY2MgZmllbGQsIHdoZW4gdGhlIE1lc3NhZ2UgaXMgYQogICAgICAgICByZXNlbnQpIG9mIHRoZSBNZXNzYWdlIG9iamVjdCB3b24ndCBiZSB0cmFuc21pdHRlZC4gIFRoZSBNZXNzYWdlCiAgICAgICAgIG9iamVjdCBpcyB0aGVuIHNlcmlhbGl6ZWQgdXNpbmcgZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yIGFuZAotICAgICAgICBzZW5kbWFpbCBpcyBjYWxsZWQgdG8gdHJhbnNtaXQgdGhlIG1lc3NhZ2UuCisgICAgICAgIHNlbmRtYWlsIGlzIGNhbGxlZCB0byB0cmFuc21pdCB0aGUgbWVzc2FnZS4gIElmIHRoZSBzZW5kZXIgb3IgYW55IG9mCisgICAgICAgIHRoZSByZWNpcGllbnQgYWRkcmVzc2VzIGNvbnRhaW4gbm9uLUFTQ0lJIGFuZCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlCisgICAgICAgIFNNVFBVVEY4IGNhcGFiaWxpdHksIHRoZSBwb2xpY3kgaXMgY2xvbmVkIHdpdGggdXRmOCBzZXQgdG8gVHJ1ZSBmb3IgdGhlCisgICAgICAgIHNlcmlhbGl6YXRpb24sIGFuZCBTTVRQVVRGOCBhbmQgQk9EWT04QklUTUlNRSBhcmUgYXNzZXJ0ZWQgb24gdGhlIHNlbmQuCisgICAgICAgIElmIHRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBTTVRQVVRGOCwgYW4gU01QVE5vdFN1cHBvcnRlZCBlcnJvciBpcworICAgICAgICByYWlzZWQuICBPdGhlcndpc2UgdGhlIGdlbmVyYXRvciBpcyBjYWxsZWQgd2l0aG91dCBtb2RpZnlpbmcgdGhlCisgICAgICAgIHBvbGljeS4KIAogICAgICAgICAiIiIKICAgICAgICAgIyAnUmVzZW50LURhdGUnIGlzIGEgbWFuZGF0b3J5IGZpZWxkIGlmIHRoZSBNZXNzYWdlIGlzIHJlc2VudCAoUkZDIDI4MjIKQEAgLTgyNSw2ICs5MTEsNyBAQAogICAgICAgICAjIG9wdGlvbiBhbGxvd2luZyB0aGUgdXNlciB0byBlbmFibGUgdGhlIGhldXJpc3RpY3MuICAoSXQgc2hvdWxkIGJlCiAgICAgICAgICMgcG9zc2libGUgdG8gZ3Vlc3MgY29ycmVjdGx5IGFsbW9zdCBhbGwgb2YgdGhlIHRpbWUuKQogCisgICAgICAgIHNlbGYuZWhsb19vcl9oZWxvX2lmX25lZWRlZCgpCiAgICAgICAgIHJlc2VudCA9IG1zZy5nZXRfYWxsKCdSZXNlbnQtRGF0ZScpCiAgICAgICAgIGlmIHJlc2VudCBpcyBOb25lOgogICAgICAgICAgICAgaGVhZGVyX3ByZWZpeCA9ICcnCkBAIC04NDAsMTQgKzkyNywzMCBAQAogICAgICAgICBpZiB0b19hZGRycyBpcyBOb25lOgogICAgICAgICAgICAgYWRkcl9maWVsZHMgPSBbZiBmb3IgZiBpbiAobXNnW2hlYWRlcl9wcmVmaXggKyAnVG8nXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0JjYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQ2MnXSkgaWYgZiBpcyBub3QgTm9uZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0NjJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmIGlzIG5vdCBOb25lXQogICAgICAgICAgICAgdG9fYWRkcnMgPSBbYVsxXSBmb3IgYSBpbiBlbWFpbC51dGlscy5nZXRhZGRyZXNzZXMoYWRkcl9maWVsZHMpXQogICAgICAgICAjIE1ha2UgYSBsb2NhbCBjb3B5IHNvIHdlIGNhbiBkZWxldGUgdGhlIGJjYyBoZWFkZXJzLgogICAgICAgICBtc2dfY29weSA9IGNvcHkuY29weShtc2cpCiAgICAgICAgIGRlbCBtc2dfY29weVsnQmNjJ10KICAgICAgICAgZGVsIG1zZ19jb3B5WydSZXNlbnQtQmNjJ10KKyAgICAgICAgaW50ZXJuYXRpb25hbCA9IEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICcnLmpvaW4oW2Zyb21fYWRkciwgKnRvX2FkZHJzXSkuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5oYXNfZXh0bignc210cHV0ZjgnKToKKyAgICAgICAgICAgICAgICByYWlzZSBTTVRQTm90U3VwcG9ydGVkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJPbmUgb3IgbW9yZSBzb3VyY2Ugb3IgZGVsaXZlcnkgYWRkcmVzc2VzIHJlcXVpcmUiCisgICAgICAgICAgICAgICAgICAgICIgaW50ZXJuYXRpb25hbGl6ZWQgZW1haWwgc3VwcG9ydCwgYnV0IHRoZSBzZXJ2ZXIiCisgICAgICAgICAgICAgICAgICAgICIgZG9lcyBub3QgYWR2ZXJ0aXNlIHRoZSByZXF1aXJlZCBTTVRQVVRGOCBjYXBhYmlsaXR5IikKKyAgICAgICAgICAgIGludGVybmF0aW9uYWwgPSBUcnVlCiAgICAgICAgIHdpdGggaW8uQnl0ZXNJTygpIGFzIGJ5dGVzbXNnOgotICAgICAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcihieXRlc21zZykKKyAgICAgICAgICAgIGlmIGludGVybmF0aW9uYWw6CisgICAgICAgICAgICAgICAgZyA9IGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNtc2csIHBvbGljeT1tc2cucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSkpCisgICAgICAgICAgICAgICAgbWFpbF9vcHRpb25zICs9IFsnU01UUFVURjgnLCAnQk9EWT04QklUTUlNRSddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IoYnl0ZXNtc2cpCiAgICAgICAgICAgICBnLmZsYXR0ZW4obXNnX2NvcHksIGxpbmVzZXA9J1xyXG4nKQogICAgICAgICAgICAgZmxhdG1zZyA9IGJ5dGVzbXNnLmdldHZhbHVlKCkKICAgICAgICAgcmV0dXJuIHNlbGYuc2VuZG1haWwoZnJvbV9hZGRyLCB0b19hZGRycywgZmxhdG1zZywgbWFpbF9vcHRpb25zLApAQCAtOTE1LDcgKzEwMTgsNyBAQAogCiAgICAgICAgIGRlZiBfZ2V0X3NvY2tldChzZWxmLCBob3N0LCBwb3J0LCB0aW1lb3V0KToKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgKGhvc3QsIHBvcnQpLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludF9kZWJ1ZygnY29ubmVjdDonLCAoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzZWxmLmNvbnRleHQud3JhcF9zb2NrZXQobmV3X3NvY2tldCwKQEAgLTk2MywxNCArMTA2NiwxNCBAQAogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3QoaG9zdCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgICAgIHByaW50KCdjb25uZWN0IGZhaWw6JywgaG9zdCwgZmlsZT1zdGRlcnIpCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRfZGVidWcoJ2Nvbm5lY3QgZmFpbDonLCBob3N0KQogICAgICAgICAgICAgaWYgc2VsZi5zb2NrOgogICAgICAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCiAgICAgICAgICAgICBzZWxmLnNvY2sgPSBOb25lCiAgICAgICAgICAgICByYWlzZQogICAgICAgICAoY29kZSwgbXNnKSA9IHNlbGYuZ2V0cmVwbHkoKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6JywgbXNnLCBmaWxlPXN0ZGVycikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X2RlYnVnKCdjb25uZWN0OicsIG1zZykKICAgICAgICAgcmV0dXJuIChjb2RlLCBtc2cpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3NuZGhkci5weSBiL0xpYi9zbmRoZHIucHkKaW5kZXggMjQwZTUwNy4uZTU5MDFlYyAxMDA2NDQKLS0tIGEvTGliL3NuZGhkci5weQorKysgYi9MaWIvc25kaGRyLnB5CkBAIC0zMiw2ICszMiwxMSBAQAogCiBfX2FsbF9fID0gWyd3aGF0JywgJ3doYXRoZHInXQogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCisKK1NuZEhlYWRlcnMgPSBuYW1lZHR1cGxlKCdTbmRIZWFkZXJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdmaWxldHlwZSBmcmFtZXJhdGUgbmNoYW5uZWxzIG5mcmFtZXMgc2FtcHdpZHRoJykKKwogZGVmIHdoYXQoZmlsZW5hbWUpOgogICAgICIiIkd1ZXNzIHRoZSB0eXBlIG9mIGEgc291bmQgZmlsZS4iIiIKICAgICByZXMgPSB3aGF0aGRyKGZpbGVuYW1lKQpAQCAtNDUsNyArNTAsNyBAQAogICAgICAgICBmb3IgdGYgaW4gdGVzdHM6CiAgICAgICAgICAgICByZXMgPSB0ZihoLCBmKQogICAgICAgICAgICAgaWYgcmVzOgotICAgICAgICAgICAgICAgIHJldHVybiByZXMKKyAgICAgICAgICAgICAgICByZXR1cm4gU25kSGVhZGVycygqcmVzKQogICAgICAgICByZXR1cm4gTm9uZQogCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IDAwNDU4ODYuLmRiMzRhYjMgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtNDksNyArNDksNyBAQAogaW1wb3J0IF9zb2NrZXQKIGZyb20gX3NvY2tldCBpbXBvcnQgKgogCi1pbXBvcnQgb3MsIHN5cywgaW8KK2ltcG9ydCBvcywgc3lzLCBpbywgc2VsZWN0b3JzCiBmcm9tIGVudW0gaW1wb3J0IEludEVudW0KIAogdHJ5OgpAQCAtNjksNiArNjksNyBAQAogIyBOb3RlIHRoYXQgX3NvY2tldCBvbmx5IGtub3dzIGFib3V0IHRoZSBpbnRlZ2VyIHZhbHVlcy4gVGhlIHB1YmxpYyBpbnRlcmZhY2UKICMgaW4gdGhpcyBtb2R1bGUgdW5kZXJzdGFuZHMgdGhlIGVudW1zIGFuZCB0cmFuc2xhdGVzIHRoZW0gYmFjayBmcm9tIGludGVnZXJzCiAjIHdoZXJlIG5lZWRlZCAoZS5nLiAuZmFtaWx5IHByb3BlcnR5IG9mIGEgc29ja2V0IG9iamVjdCkuCisKIEludEVudW0uX2NvbnZlcnQoCiAgICAgICAgICdBZGRyZXNzRmFtaWx5JywKICAgICAgICAgX19uYW1lX18sCkBAIC03OSw2ICs4MCwxMCBAQAogICAgICAgICBfX25hbWVfXywKICAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ1NPQ0tfJykpCiAKK19MT0NBTEhPU1QgICAgPSAnMTI3LjAuMC4xJworX0xPQ0FMSE9TVF9WNiA9ICc6OjEnCisKKwogZGVmIF9pbnRlbnVtX2NvbnZlcnRlcih2YWx1ZSwgZW51bV9rbGFzcyk6CiAgICAgIiIiQ29udmVydCBhIG51bWVyaWMgZmFtaWx5IHZhbHVlIHRvIGFuIEludEVudW0gbWVtYmVyLgogCkBAIC0xMTIsNiArMTE3LDkgQEAKICAgICBfX2FsbF9fLmFwcGVuZCgiZXJyb3JUYWIiKQogCiAKK2NsYXNzIF9HaXZldXBPblNlbmRmaWxlKEV4Y2VwdGlvbik6IHBhc3MKKworCiBjbGFzcyBzb2NrZXQoX3NvY2tldC5zb2NrZXQpOgogCiAgICAgIiIiQSBzdWJjbGFzcyBvZiBfc29ja2V0LnNvY2tldCBhZGRpbmcgdGhlIG1ha2VmaWxlKCkgbWV0aG9kLiIiIgpAQCAtMTQxLDcgKzE0OSw3IEBACiAgICAgICAgIGNsb3NlZCA9IGdldGF0dHIoc2VsZiwgJ19jbG9zZWQnLCBGYWxzZSkKICAgICAgICAgcyA9ICI8JXMuJXMlcyBmZD0laSwgZmFtaWx5PSVzLCB0eXBlPSVzLCBwcm90bz0laSIgXAogICAgICAgICAgICAgJSAoc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywKLSAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLAogICAgICAgICAgICAgICAgIiBbY2xvc2VkXSIgaWYgY2xvc2VkIGVsc2UgIiIsCiAgICAgICAgICAgICAgICBzZWxmLmZpbGVubygpLAogICAgICAgICAgICAgICAgc2VsZi5mYW1pbHksCkBAIC0yMzUsNiArMjQzLDE0OSBAQAogICAgICAgICB0ZXh0Lm1vZGUgPSBtb2RlCiAgICAgICAgIHJldHVybiB0ZXh0CiAKKyAgICBpZiBoYXNhdHRyKG9zLCAnc2VuZGZpbGUnKToKKworICAgICAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShzZWxmLCBmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19zZW5kZmlsZV9wYXJhbXMoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKyAgICAgICAgICAgIHNvY2tubyA9IHNlbGYuZmlsZW5vKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlbm8gPSBmaWxlLmZpbGVubygpCisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbikgYXMgZXJyOgorICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikgICMgbm90IGEgcmVndWxhciBmaWxlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnNpemUgPSBvcy5mc3RhdChmaWxlbm8pLnN0X3NpemUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikgICMgbm90IGEgcmVndWxhciBmaWxlCisgICAgICAgICAgICBpZiBub3QgZnNpemU6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAgICMgZW1wdHkgZmlsZQorICAgICAgICAgICAgYmxvY2tzaXplID0gZnNpemUgaWYgbm90IGNvdW50IGVsc2UgY291bnQKKworICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuZ2V0dGltZW91dCgpCisgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm9uLWJsb2NraW5nIHNvY2tldHMgYXJlIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICAgICAgIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKKyAgICAgICAgICAgICMgZXh0cmEgZmlsZSBkZXNjcmlwdG9yLCBjb250cmFyaWx5IHRvIGVwb2xsL2txdWV1ZQorICAgICAgICAgICAgIyAoYWxzbywgdGhleSByZXF1aXJlIGEgc2luZ2xlIHN5c2NhbGwpLgorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxlY3RvcnMsICdQb2xsU2VsZWN0b3InKToKKyAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5Qb2xsU2VsZWN0b3IoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycy5TZWxlY3RTZWxlY3RvcigpCisgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3Rlcihzb2Nrbm8sIHNlbGVjdG9ycy5FVkVOVF9XUklURSkKKworICAgICAgICAgICAgdG90YWxfc2VudCA9IDAKKyAgICAgICAgICAgICMgbG9jYWxpemUgdmFyaWFibGUgYWNjZXNzIHRvIG1pbmltaXplIG92ZXJoZWFkCisgICAgICAgICAgICBzZWxlY3Rvcl9zZWxlY3QgPSBzZWxlY3Rvci5zZWxlY3QKKyAgICAgICAgICAgIG9zX3NlbmRmaWxlID0gb3Muc2VuZGZpbGUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGFuZCBub3Qgc2VsZWN0b3Jfc2VsZWN0KHRpbWVvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgX3NvY2tldC50aW1lb3V0KCd0aW1lZCBvdXQnKQorICAgICAgICAgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZSA9IGNvdW50IC0gdG90YWxfc2VudAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2tzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VudCA9IG9zX3NlbmRmaWxlKHNvY2tubywgZmlsZW5vLCBvZmZzZXQsIGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0aW1lb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQmxvY2sgdW50aWwgdGhlIHNvY2tldCBpcyByZWFkeSB0byBzZW5kIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRhdGE7IGF2b2lkcyBob2dnaW5nIENQVSByZXNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3Jfc2VsZWN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRvdGFsX3NlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbiBnZXQgaGVyZSBmb3IgZGlmZmVyZW50IHJlYXNvbnMsIHRoZSBtYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbmUgYmVpbmcgJ2ZpbGUnIGlzIG5vdCBhIHJlZ3VsYXIgbW1hcCgyKS1saWtlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaWxlLCBpbiB3aGljaCBjYXNlIHdlJ2xsIGZhbGwgYmFjayBvbiB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGxhaW4gc2VuZCgpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVyciBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayAgIyBFT0YKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiB0b3RhbF9zZW50ID4gMCBhbmQgaGFzYXR0cihmaWxlLCAnc2VlaycpOgorICAgICAgICAgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0KQorICAgIGVsc2U6CisgICAgICAgIGRlZiBfc2VuZGZpbGVfdXNlX3NlbmRmaWxlKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgICAgIHJhaXNlIF9HaXZldXBPblNlbmRmaWxlKAorICAgICAgICAgICAgICAgICJvcy5zZW5kZmlsZSgpIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpCisKKyAgICBkZWYgX3NlbmRmaWxlX3VzZV9zZW5kKHNlbGYsIGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKToKKyAgICAgICAgc2VsZi5fY2hlY2tfc2VuZGZpbGVfcGFyYW1zKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgIGlmIHNlbGYuZ2V0dGltZW91dCgpID09IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub24tYmxvY2tpbmcgc29ja2V0cyBhcmUgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIGlmIG9mZnNldDoKKyAgICAgICAgICAgIGZpbGUuc2VlayhvZmZzZXQpCisgICAgICAgIGJsb2Nrc2l6ZSA9IG1pbihjb3VudCwgODE5MikgaWYgY291bnQgZWxzZSA4MTkyCisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgICMgbG9jYWxpemUgdmFyaWFibGUgYWNjZXNzIHRvIG1pbmltaXplIG92ZXJoZWFkCisgICAgICAgIGZpbGVfcmVhZCA9IGZpbGUucmVhZAorICAgICAgICBzb2NrX3NlbmQgPSBzZWxmLnNlbmQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICAgICAgYmxvY2tzaXplID0gbWluKGNvdW50IC0gdG90YWxfc2VudCwgYmxvY2tzaXplKQorICAgICAgICAgICAgICAgICAgICBpZiBibG9ja3NpemUgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZGF0YSA9IG1lbW9yeXZpZXcoZmlsZV9yZWFkKGJsb2Nrc2l6ZSkpCisgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrICAjIEVPRgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbnQgPSBzb2NrX3NlbmQoZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbnQgPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFbc2VudDpdCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXR1cm4gdG90YWxfc2VudAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgdG90YWxfc2VudCA+IDAgYW5kIGhhc2F0dHIoZmlsZSwgJ3NlZWsnKToKKyAgICAgICAgICAgICAgICBmaWxlLnNlZWsob2Zmc2V0ICsgdG90YWxfc2VudCkKKworICAgIGRlZiBfY2hlY2tfc2VuZGZpbGVfcGFyYW1zKHNlbGYsIGZpbGUsIG9mZnNldCwgY291bnQpOgorICAgICAgICBpZiAnYicgbm90IGluIGdldGF0dHIoZmlsZSwgJ21vZGUnLCAnYicpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZmlsZSBzaG91bGQgYmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbm90IHNlbGYudHlwZSAmIFNPQ0tfU1RSRUFNOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib25seSBTT0NLX1NUUkVBTSB0eXBlIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCisgICAgICAgIGlmIGNvdW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY291bnQsIGludCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAiY291bnQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgKGdvdCB7IXJ9KSIuZm9ybWF0KGNvdW50KSkKKyAgICAgICAgICAgIGlmIGNvdW50IDw9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgImNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIChnb3QgeyFyfSkiLmZvcm1hdChjb3VudCkpCisKKyAgICBkZWYgc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAiIiJzZW5kZmlsZShmaWxlWywgb2Zmc2V0WywgY291bnRdXSkgLT4gc2VudAorCisgICAgICAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKKyAgICAgICAgb3Muc2VuZGZpbGUoKSBhbmQgcmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd2hpY2gKKyAgICAgICAgd2VyZSBzZW50LgorICAgICAgICAqZmlsZSogbXVzdCBiZSBhIHJlZ3VsYXIgZmlsZSBvYmplY3Qgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgorICAgICAgICBJZiBvcy5zZW5kZmlsZSgpIGlzIG5vdCBhdmFpbGFibGUgKGUuZy4gV2luZG93cykgb3IgZmlsZSBpcworICAgICAgICBub3QgYSByZWd1bGFyIGZpbGUgc29ja2V0LnNlbmQoKSB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICAgKm9mZnNldCogdGVsbHMgZnJvbSB3aGVyZSB0byBzdGFydCByZWFkaW5nIHRoZSBmaWxlLgorICAgICAgICBJZiBzcGVjaWZpZWQsICpjb3VudCogaXMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB0byB0cmFuc21pdAorICAgICAgICBhcyBvcHBvc2VkIHRvIHNlbmRpbmcgdGhlIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQuCisgICAgICAgIEZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCBvbiByZXR1cm4gb3IgYWxzbyBpbiBjYXNlIG9mIGVycm9yIGluCisgICAgICAgIHdoaWNoIGNhc2UgZmlsZS50ZWxsKCkgY2FuIGJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgbnVtYmVyIG9mCisgICAgICAgIGJ5dGVzIHdoaWNoIHdlcmUgc2VudC4KKyAgICAgICAgVGhlIHNvY2tldCBtdXN0IGJlIG9mIFNPQ0tfU1RSRUFNIHR5cGUuCisgICAgICAgIE5vbi1ibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NlbmRmaWxlX3VzZV9zZW5kZmlsZShmaWxlLCBvZmZzZXQsIGNvdW50KQorICAgICAgICBleGNlcHQgX0dpdmV1cE9uU2VuZGZpbGU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VuZGZpbGVfdXNlX3NlbmQoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKwogICAgIGRlZiBfZGVjcmVmX3NvY2tldGlvcyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5faW9fcmVmcyA+IDA6CiAgICAgICAgICAgICBzZWxmLl9pb19yZWZzIC09IDEKQEAgLTMyNSw2ICs0NzYsNTIgQEAKICAgICAgICAgYiA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBiLmRldGFjaCgpKQogICAgICAgICByZXR1cm4gYSwgYgogCitlbHNlOgorCisgICAgIyBPcmlnaW46IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzQzMjU3ODMsIGJ5IEdlZXJ0IEphbnNlbi4gIFB1YmxpYyBkb21haW4uCisgICAgZGVmIHNvY2tldHBhaXIoZmFtaWx5PUFGX0lORVQsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTApOgorICAgICAgICBpZiBmYW1pbHkgPT0gQUZfSU5FVDoKKyAgICAgICAgICAgIGhvc3QgPSBfTE9DQUxIT1NUCisgICAgICAgIGVsaWYgZmFtaWx5ID09IEFGX0lORVQ2OgorICAgICAgICAgICAgaG9zdCA9IF9MT0NBTEhPU1RfVjYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9ubHkgQUZfSU5FVCBhbmQgQUZfSU5FVDYgc29ja2V0IGFkZHJlc3MgZmFtaWxpZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCIpCisgICAgICAgIGlmIHR5cGUgIT0gU09DS19TVFJFQU06CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IFNPQ0tfU1RSRUFNIHNvY2tldCB0eXBlIGlzIHN1cHBvcnRlZCIpCisgICAgICAgIGlmIHByb3RvICE9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPbmx5IHByb3RvY29sIHplcm8gaXMgc3VwcG9ydGVkIikKKworICAgICAgICAjIFdlIGNyZWF0ZSBhIGNvbm5lY3RlZCBUQ1Agc29ja2V0LiBOb3RlIHRoZSB0cmljayB3aXRoCisgICAgICAgICMgc2V0YmxvY2tpbmcoRmFsc2UpIHRoYXQgcHJldmVudHMgdXMgZnJvbSBoYXZpbmcgdG8gY3JlYXRlIGEgdGhyZWFkLgorICAgICAgICBsc29jayA9IHNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsc29jay5iaW5kKChob3N0LCAwKSkKKyAgICAgICAgICAgIGxzb2NrLmxpc3RlbigpCisgICAgICAgICAgICAjIE9uIElQdjYsIGlnbm9yZSBmbG93X2luZm8gYW5kIHNjb3BlX2lkCisgICAgICAgICAgICBhZGRyLCBwb3J0ID0gbHNvY2suZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgICAgIGNzb2NrID0gc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY3NvY2suc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjc29jay5jb25uZWN0KChhZGRyLCBwb3J0KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgKEJsb2NraW5nSU9FcnJvciwgSW50ZXJydXB0ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBjc29jay5zZXRibG9ja2luZyhUcnVlKQorICAgICAgICAgICAgICAgIHNzb2NrLCBfID0gbHNvY2suYWNjZXB0KCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBjc29jay5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxzb2NrLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIChzc29jaywgY3NvY2spCisKK3NvY2tldHBhaXIuX19kb2NfXyA9ICIiInNvY2tldHBhaXIoW2ZhbWlseVssIHR5cGVbLCBwcm90b11dXSkgLT4gKHNvY2tldCBvYmplY3QsIHNvY2tldCBvYmplY3QpCitDcmVhdGUgYSBwYWlyIG9mIHNvY2tldCBvYmplY3RzIGZyb20gdGhlIHNvY2tldHMgcmV0dXJuZWQgYnkgdGhlIHBsYXRmb3JtCitzb2NrZXRwYWlyKCkgZnVuY3Rpb24uCitUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3Igc29ja2V0KCkgZXhjZXB0IHRoZSBkZWZhdWx0IGZhbWlseSBpcyBBRl9VTklYCitpZiBkZWZpbmVkIG9uIHRoZSBwbGF0Zm9ybTsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBpcyBBRl9JTkVULgorIiIiCiAKIF9ibG9ja2luZ19lcnJub3MgPSB7IEVBR0FJTiwgRVdPVUxEQkxPQ0sgfQogCkBAIC0zNzUsOCArNTcyLDYgQEAKICAgICAgICAgICAgIGV4Y2VwdCB0aW1lb3V0OgogICAgICAgICAgICAgICAgIHNlbGYuX3RpbWVvdXRfb2NjdXJyZWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gaW4gX2Jsb2NraW5nX2Vycm5vczoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IDVjYjg5YmUuLjBjZThlODEgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtOTQsNyArOTQsNyBAQAogQW5vdGhlciBhcHByb2FjaCB0byBoYW5kbGluZyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcmVxdWVzdHMgaW4gYW4KIGVudmlyb25tZW50IHRoYXQgc3VwcG9ydHMgbmVpdGhlciB0aHJlYWRzIG5vciBmb3JrIChvciB3aGVyZSB0aGVzZSBhcmUKIHRvbyBleHBlbnNpdmUgb3IgaW5hcHByb3ByaWF0ZSBmb3IgdGhlIHNlcnZpY2UpIGlzIHRvIG1haW50YWluIGFuCi1leHBsaWNpdCB0YWJsZSBvZiBwYXJ0aWFsbHkgZmluaXNoZWQgcmVxdWVzdHMgYW5kIHRvIHVzZSBzZWxlY3QoKSB0bworZXhwbGljaXQgdGFibGUgb2YgcGFydGlhbGx5IGZpbmlzaGVkIHJlcXVlc3RzIGFuZCB0byB1c2UgYSBzZWxlY3RvciB0bwogZGVjaWRlIHdoaWNoIHJlcXVlc3QgdG8gd29yayBvbiBuZXh0IChvciB3aGV0aGVyIHRvIGhhbmRsZSBhIG5ldwogaW5jb21pbmcgcmVxdWVzdCkuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIHN0cmVhbSBzZXJ2aWNlcwogd2hlcmUgZWFjaCBjbGllbnQgY2FuIHBvdGVudGlhbGx5IGJlIGNvbm5lY3RlZCBmb3IgYSBsb25nIHRpbWUgKGlmCkBAIC0xMDQsNyArMTA0LDYgQEAKIC0gU3RhbmRhcmQgY2xhc3NlcyBmb3IgU3VuIFJQQyAod2hpY2ggdXNlcyBlaXRoZXIgVURQIG9yIFRDUCkKIC0gU3RhbmRhcmQgbWl4LWluIGNsYXNzZXMgdG8gaW1wbGVtZW50IHZhcmlvdXMgYXV0aGVudGljYXRpb24KICAgYW5kIGVuY3J5cHRpb24gc2NoZW1lcwotLSBTdGFuZGFyZCBmcmFtZXdvcmsgZm9yIHNlbGVjdC1iYXNlZCBtdWx0aXBsZXhpbmcKIAogWFhYIE9wZW4gcHJvYmxlbXM6CiAtIFdoYXQgdG8gZG8gd2l0aCBvdXQtb2YtYmFuZCBkYXRhPwpAQCAtMTMwLDEzICsxMjksMTQgQEAKIAogCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc2VsZWN0CitpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZworZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogCiBfX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLCAiRm9ya2luZ1VEUFNlcnZlciIsCiAgICAgICAgICAgICJGb3JraW5nVENQU2VydmVyIiwgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLApAQCAtMTQ3LDE0ICsxNDcsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhTdHJlYW1TZXJ2ZXIiLAogICAgICAgICAgICAgICAgICAgICAiVGhyZWFkaW5nVW5peERhdGFncmFtU2VydmVyIl0pCiAKLWRlZiBfZWludHJfcmV0cnkoZnVuYywgKmFyZ3MpOgotICAgICIiInJlc3RhcnQgYSBzeXN0ZW0gY2FsbCBpbnRlcnJ1cHRlZCBieSBFSU5UUiIiIgotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICByYWlzZQorIyBwb2xsL3NlbGVjdCBoYXZlIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkgZXh0cmEgZmlsZSBkZXNjcmlwdG9yLAorIyBjb250cmFyaWx5IHRvIGVwb2xsL2txdWV1ZSAoYWxzbywgdGhleSByZXF1aXJlIGEgc2luZ2xlIHN5c2NhbGwpLgoraWYgaGFzYXR0cihzZWxlY3RvcnMsICdQb2xsU2VsZWN0b3InKToKKyAgICBfU2VydmVyU2VsZWN0b3IgPSBzZWxlY3RvcnMuUG9sbFNlbGVjdG9yCitlbHNlOgorICAgIF9TZXJ2ZXJTZWxlY3RvciA9IHNlbGVjdG9ycy5TZWxlY3RTZWxlY3RvcgorCiAKIGNsYXNzIEJhc2VTZXJ2ZXI6CiAKQEAgLTE2Niw3ICsxNjUsNyBAQAogICAgIC0gc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKICAgICAtIHNodXRkb3duKCkKICAgICAtIGhhbmRsZV9yZXF1ZXN0KCkgICMgaWYgeW91IGRvIG5vdCB1c2Ugc2VydmVfZm9yZXZlcigpCi0gICAgLSBmaWxlbm8oKSAtPiBpbnQgICAjIGZvciBzZWxlY3QoKQorICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0b3IKIAogICAgIE1ldGhvZHMgdGhhdCBtYXkgYmUgb3ZlcnJpZGRlbjoKIApAQCAtMjI3LDE3ICsyMjYsMTkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uY2xlYXIoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fX3NodXRkb3duX3JlcXVlc3Q6Ci0gICAgICAgICAgICAgICAgIyBYWFg6IENvbnNpZGVyIHVzaW5nIGFub3RoZXIgZmlsZSBkZXNjcmlwdG9yIG9yCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW5nIHRvIHRoZSBzb2NrZXQgdG8gd2FrZSB0aGlzIHVwIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAjIHBvbGxpbmcuIFBvbGxpbmcgcmVkdWNlcyBvdXIgcmVzcG9uc2l2ZW5lc3MgdG8gYQotICAgICAgICAgICAgICAgICMgc2h1dGRvd24gcmVxdWVzdCBhbmQgd2FzdGVzIGNwdSBhdCBhbGwgb3RoZXIgdGltZXMuCi0gICAgICAgICAgICAgICAgciwgdywgZSA9IF9laW50cl9yZXRyeShzZWxlY3Quc2VsZWN0LCBbc2VsZl0sIFtdLCBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50ZXJ2YWwpCi0gICAgICAgICAgICAgICAgaWYgc2VsZiBpbiByOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKyAgICAgICAgICAgICMgWFhYOiBDb25zaWRlciB1c2luZyBhbm90aGVyIGZpbGUgZGVzY3JpcHRvciBvciBjb25uZWN0aW5nIHRvIHRoZQorICAgICAgICAgICAgIyBzb2NrZXQgdG8gd2FrZSB0aGlzIHVwIGluc3RlYWQgb2YgcG9sbGluZy4gUG9sbGluZyByZWR1Y2VzIG91cgorICAgICAgICAgICAgIyByZXNwb25zaXZlbmVzcyB0byBhIHNodXRkb3duIHJlcXVlc3QgYW5kIHdhc3RlcyBjcHUgYXQgYWxsIG90aGVyCisgICAgICAgICAgICAjIHRpbWVzLgorICAgICAgICAgICAgd2l0aCBfU2VydmVyU2VsZWN0b3IoKSBhcyBzZWxlY3RvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Rvci5yZWdpc3RlcihzZWxmLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKIAotICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKKyAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fX3NodXRkb3duX3JlcXVlc3Q6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0b3Iuc2VsZWN0KHBvbGxfaW50ZXJ2YWwpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlYWR5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9jaygpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2aWNlX2FjdGlvbnMoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fX2lzX3NodXRfZG93bi5zZXQoKQpAQCAtMjYwLDE2ICsyNjEsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKIAotICAgICMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gaGFuZGxpbmcsIGdldHRpbmcsIHByb2Nlc3NpbmcgYW5kCi0gICAgIyBmaW5pc2hpbmcgYSByZXF1ZXN0IGlzIGZhaXJseSBhcmJpdHJhcnkuICBSZW1lbWJlcjoKKyAgICAjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGhhbmRsaW5nLCBnZXR0aW5nLCBwcm9jZXNzaW5nIGFuZCBmaW5pc2hpbmcgYQorICAgICMgcmVxdWVzdCBpcyBmYWlybHkgYXJiaXRyYXJ5LiAgUmVtZW1iZXI6CiAgICAgIwotICAgICMgLSBoYW5kbGVfcmVxdWVzdCgpIGlzIHRoZSB0b3AtbGV2ZWwgY2FsbC4gIEl0IGNhbGxzCi0gICAgIyAgIHNlbGVjdCwgZ2V0X3JlcXVlc3QoKSwgdmVyaWZ5X3JlcXVlc3QoKSBhbmQgcHJvY2Vzc19yZXF1ZXN0KCkKKyAgICAjIC0gaGFuZGxlX3JlcXVlc3QoKSBpcyB0aGUgdG9wLWxldmVsIGNhbGwuICBJdCBjYWxscyBzZWxlY3Rvci5zZWxlY3QoKSwKKyAgICAjICAgZ2V0X3JlcXVlc3QoKSwgdmVyaWZ5X3JlcXVlc3QoKSBhbmQgcHJvY2Vzc19yZXF1ZXN0KCkKICAgICAjIC0gZ2V0X3JlcXVlc3QoKSBpcyBkaWZmZXJlbnQgZm9yIHN0cmVhbSBvciBkYXRhZ3JhbSBzb2NrZXRzCi0gICAgIyAtIHByb2Nlc3NfcmVxdWVzdCgpIGlzIHRoZSBwbGFjZSB0aGF0IG1heSBmb3JrIGEgbmV3IHByb2Nlc3MKLSAgICAjICAgb3IgY3JlYXRlIGEgbmV3IHRocmVhZCB0byBmaW5pc2ggdGhlIHJlcXVlc3QKLSAgICAjIC0gZmluaXNoX3JlcXVlc3QoKSBpbnN0YW50aWF0ZXMgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzczsKLSAgICAjICAgdGhpcyBjb25zdHJ1Y3RvciB3aWxsIGhhbmRsZSB0aGUgcmVxdWVzdCBhbGwgYnkgaXRzZWxmCisgICAgIyAtIHByb2Nlc3NfcmVxdWVzdCgpIGlzIHRoZSBwbGFjZSB0aGF0IG1heSBmb3JrIGEgbmV3IHByb2Nlc3Mgb3IgY3JlYXRlIGEKKyAgICAjICAgbmV3IHRocmVhZCB0byBmaW5pc2ggdGhlIHJlcXVlc3QKKyAgICAjIC0gZmluaXNoX3JlcXVlc3QoKSBpbnN0YW50aWF0ZXMgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzczsgdGhpcworICAgICMgICBjb25zdHJ1Y3RvciB3aWxsIGhhbmRsZSB0aGUgcmVxdWVzdCBhbGwgYnkgaXRzZWxmCiAKICAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZik6CiAgICAgICAgICIiIkhhbmRsZSBvbmUgcmVxdWVzdCwgcG9zc2libHkgYmxvY2tpbmcuCkBAIC0yODMsMTggKzI4NCwzMCBAQAogICAgICAgICAgICAgdGltZW91dCA9IHNlbGYudGltZW91dAogICAgICAgICBlbGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRpbWVvdXQgPSBtaW4odGltZW91dCwgc2VsZi50aW1lb3V0KQotICAgICAgICBmZF9zZXRzID0gX2VpbnRyX3JldHJ5KHNlbGVjdC5zZWxlY3QsIFtzZWxmXSwgW10sIFtdLCB0aW1lb3V0KQotICAgICAgICBpZiBub3QgZmRfc2V0c1swXToKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX3RpbWVvdXQoKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soKQorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lKCkgKyB0aW1lb3V0CisKKyAgICAgICAgIyBXYWl0IHVudGlsIGEgcmVxdWVzdCBhcnJpdmVzIG9yIHRoZSB0aW1lb3V0IGV4cGlyZXMgLSB0aGUgbG9vcCBpcworICAgICAgICAjIG5lY2Vzc2FyeSB0byBhY2NvbW1vZGF0ZSBlYXJseSB3YWtldXBzIGR1ZSB0byBFSU5UUi4KKyAgICAgICAgd2l0aCBfU2VydmVyU2VsZWN0b3IoKSBhcyBzZWxlY3RvcjoKKyAgICAgICAgICAgIHNlbGVjdG9yLnJlZ2lzdGVyKHNlbGYsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQorCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlYWR5ID0gc2VsZWN0b3Iuc2VsZWN0KHRpbWVvdXQpCisgICAgICAgICAgICAgICAgaWYgcmVhZHk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDwgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfdGltZW91dCgpCiAKICAgICBkZWYgX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2soc2VsZik6CiAgICAgICAgICIiIkhhbmRsZSBvbmUgcmVxdWVzdCwgd2l0aG91dCBibG9ja2luZy4KIAotICAgICAgICBJIGFzc3VtZSB0aGF0IHNlbGVjdC5zZWxlY3QgaGFzIHJldHVybmVkIHRoYXQgdGhlIHNvY2tldCBpcwotICAgICAgICByZWFkYWJsZSBiZWZvcmUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLCBzbyB0aGVyZSBzaG91bGQgYmUKLSAgICAgICAgbm8gcmlzayBvZiBibG9ja2luZyBpbiBnZXRfcmVxdWVzdCgpLgorICAgICAgICBJIGFzc3VtZSB0aGF0IHNlbGVjdG9yLnNlbGVjdCgpIGhhcyByZXR1cm5lZCB0aGF0IHRoZSBzb2NrZXQgaXMKKyAgICAgICAgcmVhZGFibGUgYmVmb3JlIHRoaXMgZnVuY3Rpb24gd2FzIGNhbGxlZCwgc28gdGhlcmUgc2hvdWxkIGJlIG5vIHJpc2sgb2YKKyAgICAgICAgYmxvY2tpbmcgaW4gZ2V0X3JlcXVlc3QoKS4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzID0gc2VsZi5nZXRfcmVxdWVzdCgpCkBAIC0zNzcsNyArMzkwLDcgQEAKICAgICAtIHNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbD0wLjUpCiAgICAgLSBzaHV0ZG93bigpCiAgICAgLSBoYW5kbGVfcmVxdWVzdCgpICAjIGlmIHlvdSBkb24ndCB1c2Ugc2VydmVfZm9yZXZlcigpCi0gICAgLSBmaWxlbm8oKSAtPiBpbnQgICAjIGZvciBzZWxlY3QoKQorICAgIC0gZmlsZW5vKCkgLT4gaW50ICAgIyBmb3Igc2VsZWN0b3IKIAogICAgIE1ldGhvZHMgdGhhdCBtYXkgYmUgb3ZlcnJpZGRlbjoKIApAQCAtNDYzLDcgKzQ3Niw3IEBACiAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHNvY2tldCBmaWxlIG51bWJlci4KIAotICAgICAgICBJbnRlcmZhY2UgcmVxdWlyZWQgYnkgc2VsZWN0KCkuCisgICAgICAgIEludGVyZmFjZSByZXF1aXJlZCBieSBzZWxlY3Rvci4KIAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuc29ja2V0LmZpbGVubygpCkBAIC01NDAsOCArNTUzLDYgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKC0xLCAwKQogICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIHdlJ3JlIGRvbmUKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKaW5kZXggYTgzNDhiNC4uZjU4NzU5NiAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQpAQCAtMTExLDYgKzExMSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgogICAgICAgICAgICAgcm93WzIqKjEwMDBdCiAKKyAgICBkZWYgQ2hlY2tTcWxpdGVSb3dTbGljZShzZWxmKToKKyAgICAgICAgIyBBIHNxbGl0ZS5Sb3cgY2FuIGJlIHNsaWNlZCBsaWtlIGEgbGlzdC4KKyAgICAgICAgc2VsZi5jb24ucm93X2ZhY3RvcnkgPSBzcWxpdGUuUm93CisgICAgICAgIHJvdyA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAxLCAyLCAzLCA0IikuZmV0Y2hvbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1swOjBdLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMDoxXSwgKDEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMTozXSwgKDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1szOjFdLCAoKSkKKyAgICAgICAgIyBFeHBsaWNpdCBib3VuZHMgYXJlIG9wdGlvbmFsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1sxOl0sICgyLCAzLCA0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbOjNdLCAoMSwgMiwgMykpCisgICAgICAgICMgU2xpY2VzIGNhbiB1c2UgbmVnYXRpdmUgaW5kaWNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbLTI6LTFdLCAoMywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJvd1stMjpdLCAoMywgNCkpCisgICAgICAgICMgU2xpY2luZyBzdXBwb3J0cyBzdGVwcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb3dbMDo0OjJdLCAoMSwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocm93WzM6MDotMl0sICg0LCAyKSkKKwogICAgIGRlZiBDaGVja1NxbGl0ZVJvd0l0ZXIoc2VsZik6CiAgICAgICAgICIiIkNoZWNrcyBpZiB0aGUgcm93IG9iamVjdCBpcyBpdGVyYWJsZSIiIgogICAgICAgICBzZWxmLmNvbi5yb3dfZmFjdG9yeSA9IHNxbGl0ZS5Sb3cKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCA1NTBlYTE1Li41MDJiMDYxIDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC0xMywxOSArMTMsMTMgQEAKIGltcG9ydCBfc3JlCiBpbXBvcnQgc3JlX3BhcnNlCiBmcm9tIHNyZV9jb25zdGFudHMgaW1wb3J0ICoKLWZyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFUCiAKIGFzc2VydCBfc3JlLk1BR0lDID09IE1BR0lDLCAiU1JFIG1vZHVsZSBtaXNtYXRjaCIKIAotaWYgX3NyZS5DT0RFU0laRSA9PSAyOgotICAgIE1BWENPREUgPSA2NTUzNQotZWxzZToKLSAgICBNQVhDT0RFID0gMHhGRkZGRkZGRgotCi1fTElURVJBTF9DT0RFUyA9IHNldChbTElURVJBTCwgTk9UX0xJVEVSQUxdKQotX1JFUEVBVElOR19DT0RFUyA9IHNldChbUkVQRUFULCBNSU5fUkVQRUFULCBNQVhfUkVQRUFUXSkKLV9TVUNDRVNTX0NPREVTID0gc2V0KFtTVUNDRVNTLCBGQUlMVVJFXSkKLV9BU1NFUlRfQ09ERVMgPSBzZXQoW0FTU0VSVCwgQVNTRVJUX05PVF0pCitfTElURVJBTF9DT0RFUyA9IHtMSVRFUkFMLCBOT1RfTElURVJBTH0KK19SRVBFQVRJTkdfQ09ERVMgPSB7UkVQRUFULCBNSU5fUkVQRUFULCBNQVhfUkVQRUFUfQorX1NVQ0NFU1NfQ09ERVMgPSB7U1VDQ0VTUywgRkFJTFVSRX0KK19BU1NFUlRfQ09ERVMgPSB7QVNTRVJULCBBU1NFUlRfTk9UfQogCiAjIFNldHMgb2YgbG93ZXJjYXNlIGNoYXJhY3RlcnMgd2hpY2ggaGF2ZSB0aGUgc2FtZSB1cHBlcmNhc2UuCiBfZXF1aXZhbGVuY2VzID0gKApAQCAtODYsNzUgKzgwLDc1IEBACiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6CiAgICAgICAgICAgICAgICAgbG8gPSBfc3JlLmdldGxvd2VyKGF2LCBmbGFncykKICAgICAgICAgICAgICAgICBpZiBmaXhlcyBhbmQgbG8gaW4gZml4ZXM6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tJTl9JR05PUkVdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KElOX0lHTk9SRSkKICAgICAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTk9UX0xJVEVSQUw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTkVHQVRFXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoTkVHQVRFKQogICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiAobG8sKSArIGZpeGVzW2xvXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tMSVRFUkFMXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoTElURVJBTCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQoaykKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW0ZBSUxVUkVdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KEZBSUxVUkUpCiAgICAgICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tPUF9JR05PUkVbb3BdXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChPUF9JR05PUkVbb3BdKQogICAgICAgICAgICAgICAgICAgICBlbWl0KGxvKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBJTjoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbT1BfSUdOT1JFW29wXV0pCisgICAgICAgICAgICAgICAgZW1pdChPUF9JR05PUkVbb3BdKQogICAgICAgICAgICAgICAgIGRlZiBmaXh1cChsaXRlcmFsLCBmbGFncz1mbGFncyk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfc3JlLmdldGxvd2VyKGxpdGVyYWwsIGZsYWdzKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICAgICAgZml4dXAgPSBOb25lCiAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgX2NvbXBpbGVfY2hhcnNldChhdiwgZmxhZ3MsIGNvZGUsIGZpeHVwLCBmaXhlcykKICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICBlbGlmIG9wIGlzIEFOWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfRE9UQUxMOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tBTllfQUxMXSkKKyAgICAgICAgICAgICAgICBlbWl0KEFOWV9BTEwpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tBTlldKQorICAgICAgICAgICAgICAgIGVtaXQoQU5ZKQogICAgICAgICBlbGlmIG9wIGluIFJFUEVBVElOR19DT0RFUzoKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVEVNUExBVEU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCB0ZW1wbGF0ZSBvcGVyYXRvciIpCisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImludGVybmFsOiB1bnN1cHBvcnRlZCB0ZW1wbGF0ZSBvcGVyYXRvciAlciIgJSAob3AsKSkKICAgICAgICAgICAgIGVsaWYgX3NpbXBsZShhdikgYW5kIG9wIGlzIG5vdCBSRVBFQVQ6CiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTUFYX1JFUEVBVDoKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1JFUEVBVF9PTkVdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KFJFUEVBVF9PTkUpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW1pdChPUENPREVTW01JTl9SRVBFQVRfT05FXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fUkVQRUFUX09ORSkKICAgICAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgIGVtaXQoYXZbMF0pCiAgICAgICAgICAgICAgICAgZW1pdChhdlsxXSkKICAgICAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsyXSwgZmxhZ3MpCi0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1NVQ0NFU1NdKQorICAgICAgICAgICAgICAgIGVtaXQoU1VDQ0VTUykKICAgICAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZW1pdChPUENPREVTW1JFUEVBVF0pCisgICAgICAgICAgICAgICAgZW1pdChSRVBFQVQpCiAgICAgICAgICAgICAgICAgc2tpcCA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBlbWl0KGF2WzBdKQogICAgICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQogICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICAgICAgICAgIGlmIG9wIGlzIE1BWF9SRVBFQVQ6Ci0gICAgICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tNQVhfVU5USUxdKQorICAgICAgICAgICAgICAgICAgICBlbWl0KE1BWF9VTlRJTCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUlOX1VOVElMXSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fVU5USUwpCiAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKICAgICAgICAgICAgIGlmIGF2WzBdOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tNQVJLXSkKKyAgICAgICAgICAgICAgICBlbWl0KE1BUkspCiAgICAgICAgICAgICAgICAgZW1pdCgoYXZbMF0tMSkqMikKICAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBhdlsxXSwgZmxhZ3MpCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCiAgICAgICAgICAgICBpZiBhdlswXToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbTUFSS10pCisgICAgICAgICAgICAgICAgZW1pdChNQVJLKQogICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIrMSkKICAgICAgICAgZWxpZiBvcCBpbiBTVUNDRVNTX0NPREVTOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgIGVsaWYgb3AgaW4gQVNTRVJUX0NPREVTOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgaWYgYXZbMF0gPj0gMDoKICAgICAgICAgICAgICAgICBlbWl0KDApICMgbG9vayBhaGVhZApAQCAtMTY0LDU3ICsxNTgsNTcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImxvb2stYmVoaW5kIHJlcXVpcmVzIGZpeGVkLXdpZHRoIHBhdHRlcm4iKQogICAgICAgICAgICAgICAgIGVtaXQobG8pICMgbG9vayBiZWhpbmQKICAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tTVUNDRVNTXSkKKyAgICAgICAgICAgIGVtaXQoU1VDQ0VTUykKICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAogICAgICAgICBlbGlmIG9wIGlzIENBTEw6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIHNraXAgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdiwgZmxhZ3MpCi0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbU1VDQ0VTU10pCisgICAgICAgICAgICBlbWl0KFNVQ0NFU1MpCiAgICAgICAgICAgICBjb2RlW3NraXBdID0gX2xlbihjb2RlKSAtIHNraXAKICAgICAgICAgZWxpZiBvcCBpcyBBVDoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19NVUxUSUxJTkU6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9NVUxUSUxJTkUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTE9DQUxFLmdldChhdiwgYXYpCiAgICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgICAgICBhdiA9IEFUX1VOSUNPREUuZ2V0KGF2LCBhdikKLSAgICAgICAgICAgIGVtaXQoQVRDT0RFU1thdl0pCisgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKLSAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgdGFpbCA9IFtdCiAgICAgICAgICAgICB0YWlsYXBwZW5kID0gdGFpbC5hcHBlbmQKICAgICAgICAgICAgIGZvciBhdiBpbiBhdlsxXToKICAgICAgICAgICAgICAgICBza2lwID0gX2xlbihjb2RlKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBhdiwgZmxhZ3MpCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXYsIGZsYWdzKQotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tKVU1QXSkKKyAgICAgICAgICAgICAgICBlbWl0KEpVTVApCiAgICAgICAgICAgICAgICAgdGFpbGFwcGVuZChfbGVuKGNvZGUpKTsgZW1pdCgwKQogICAgICAgICAgICAgICAgIGNvZGVbc2tpcF0gPSBfbGVuKGNvZGUpIC0gc2tpcAotICAgICAgICAgICAgZW1pdCgwKSAjIGVuZCBvZiBicmFuY2gKKyAgICAgICAgICAgIGVtaXQoRkFJTFVSRSkgIyBlbmQgb2YgYnJhbmNoCiAgICAgICAgICAgICBmb3IgdGFpbCBpbiB0YWlsOgogICAgICAgICAgICAgICAgIGNvZGVbdGFpbF0gPSBfbGVuKGNvZGUpIC0gdGFpbAogICAgICAgICBlbGlmIG9wIGlzIENBVEVHT1JZOgotICAgICAgICAgICAgZW1pdChPUENPREVTW29wXSkKKyAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IENIX0xPQ0FMRVthdl0KICAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfVU5JQ09ERVthdl0KLSAgICAgICAgICAgIGVtaXQoQ0hDT0RFU1thdl0pCisgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tPUF9JR05PUkVbb3BdXSkKKyAgICAgICAgICAgICAgICBlbWl0KE9QX0lHTk9SRVtvcF0pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGVtaXQoYXYtMSkKICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRl9FWElTVFM6Ci0gICAgICAgICAgICBlbWl0KE9QQ09ERVNbb3BdKQorICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGVtaXQoYXZbMF0tMSkKICAgICAgICAgICAgIHNraXB5ZXMgPSBfbGVuKGNvZGUpOyBlbWl0KDApCiAgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCiAgICAgICAgICAgICBpZiBhdlsyXToKLSAgICAgICAgICAgICAgICBlbWl0KE9QQ09ERVNbSlVNUF0pCisgICAgICAgICAgICAgICAgZW1pdChKVU1QKQogICAgICAgICAgICAgICAgIHNraXBubyA9IF9sZW4oY29kZSk7IGVtaXQoMCkKICAgICAgICAgICAgICAgICBjb2RlW3NraXB5ZXNdID0gX2xlbihjb2RlKSAtIHNraXB5ZXMgKyAxCiAgICAgICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMl0sIGZsYWdzKQpAQCAtMjIyLDE5ICsyMTYsMTggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29kZVtza2lweWVzXSA9IF9sZW4oY29kZSkgLSBza2lweWVzICsgMQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlIiwgb3ApCisgICAgICAgICAgICByYWlzZSBlcnJvcigiaW50ZXJuYWw6IHVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZSAlciIgJSAob3AsKSkKIAogZGVmIF9jb21waWxlX2NoYXJzZXQoY2hhcnNldCwgZmxhZ3MsIGNvZGUsIGZpeHVwPU5vbmUsIGZpeGVzPU5vbmUpOgogICAgICMgY29tcGlsZSBjaGFyc2V0IHN1YnByb2dyYW0KICAgICBlbWl0ID0gY29kZS5hcHBlbmQKLSAgICBmb3Igb3AsIGF2IGluIF9vcHRpbWl6ZV9jaGFyc2V0KGNoYXJzZXQsIGZpeHVwLCBmaXhlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSk6Ci0gICAgICAgIGVtaXQoT1BDT0RFU1tvcF0pCisgICAgZm9yIG9wLCBhdiBpbiBfb3B0aW1pemVfY2hhcnNldChjaGFyc2V0LCBmaXh1cCwgZml4ZXMpOgorICAgICAgICBlbWl0KG9wKQogICAgICAgICBpZiBvcCBpcyBORUdBVEU6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgIGVtaXQoYXYpCi0gICAgICAgIGVsaWYgb3AgaXMgUkFOR0U6CisgICAgICAgIGVsaWYgb3AgaXMgUkFOR0Ugb3Igb3AgaXMgUkFOR0VfSUdOT1JFOgogICAgICAgICAgICAgZW1pdChhdlswXSkKICAgICAgICAgICAgIGVtaXQoYXZbMV0pCiAgICAgICAgIGVsaWYgb3AgaXMgQ0hBUlNFVDoKQEAgLTI0MywxNiArMjM2LDE2IEBACiAgICAgICAgICAgICBjb2RlLmV4dGVuZChhdikKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgotICAgICAgICAgICAgICAgIGVtaXQoQ0hDT0RFU1tDSF9MT0NBTEVbYXZdXSkKKyAgICAgICAgICAgICAgICBlbWl0KENIX0xPQ0FMRVthdl0pCiAgICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKLSAgICAgICAgICAgICAgICBlbWl0KENIQ09ERVNbQ0hfVU5JQ09ERVthdl1dKQorICAgICAgICAgICAgICAgIGVtaXQoQ0hfVU5JQ09ERVthdl0pCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVtaXQoQ0hDT0RFU1thdl0pCisgICAgICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJpbnRlcm5hbDogdW5zdXBwb3J0ZWQgc2V0IG9wZXJhdG9yIikKLSAgICBlbWl0KE9QQ09ERVNbRkFJTFVSRV0pCisgICAgICAgICAgICByYWlzZSBlcnJvcigiaW50ZXJuYWw6IHVuc3VwcG9ydGVkIHNldCBvcGVyYXRvciAlciIgJSAob3AsKSkKKyAgICBlbWl0KEZBSUxVUkUpCiAKLWRlZiBfb3B0aW1pemVfY2hhcnNldChjaGFyc2V0LCBmaXh1cCwgZml4ZXMsIGlzdW5pY29kZSk6CitkZWYgX29wdGltaXplX2NoYXJzZXQoY2hhcnNldCwgZml4dXAsIGZpeGVzKToKICAgICAjIGludGVybmFsOiBvcHRpbWl6ZSBjaGFyYWN0ZXIgc2V0CiAgICAgb3V0ID0gW10KICAgICB0YWlsID0gW10KQEAgLTI2MiwxMCArMjU1LDEwIEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgICAgICAgICAgaWYgZml4dXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpID0gZml4dXAoYXYpCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwW2ldID0gMQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZml4ZXMgYW5kIGkgaW4gZml4ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gZml4ZXNbaV06CisgICAgICAgICAgICAgICAgICAgICAgICBsbyA9IGZpeHVwKGF2KQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFtsb10gPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaXhlcyBhbmQgbG8gaW4gZml4ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gZml4ZXNbbG9dOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFybWFwW2tdID0gMQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcm1hcFthdl0gPSAxCkBAIC0yOTEsMjEgKzI4NCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBzZXQgY29udGFpbnMgbm9uLVVDUzEgY2hhcmFjdGVyIGNvZGVzCiAgICAgICAgICAgICAgICAgICAgIGNoYXJtYXAgKz0gYidcMCcgKiAweGZmMDAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBzZXQgY29udGFpbnMgbm9uLUJNUCBjaGFyYWN0ZXIgY29kZXMKLSAgICAgICAgICAgICAgICBpZiBmaXh1cCBhbmQgaXN1bmljb2RlIGFuZCBvcCBpcyBSQU5HRToKLSAgICAgICAgICAgICAgICAgICAgbG8sIGhpID0gYXYKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VzID0gW2F2XQotICAgICAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSBvbmx5IHR3byByYW5nZXMgb2YgY2FzZWQgYXN0cmFsIGNoYXJhY3RlcnM6Ci0gICAgICAgICAgICAgICAgICAgICMgMTA0MDAtMTA0NEYgKERlc2VyZXQpIGFuZCAxMThBMC0xMThERiAoV2FyYW5nIENpdGkpLgotICAgICAgICAgICAgICAgICAgICBfZml4dXBfcmFuZ2UobWF4KDB4MTAwMDAsIGxvKSwgbWluKDB4MTFmZmYsIGhpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlcywgZml4dXApCi0gICAgICAgICAgICAgICAgICAgIGZvciBsbywgaGkgaW4gcmFuZ2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG8gPT0gaGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKExJVEVSQUwsIGhpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKFJBTkdFLCAobG8sIGhpKSkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKG9wLCBhdikpCisgICAgICAgICAgICAgICAgIyBDaGFyYWN0ZXIgc2V0IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyIGNvZGVzLgorICAgICAgICAgICAgICAgICMgVGhlcmUgYXJlIG9ubHkgdHdvIHJhbmdlcyBvZiBjYXNlZCBub24tQk1QIGNoYXJhY3RlcnM6CisgICAgICAgICAgICAgICAgIyAxMDQwMC0xMDQ0RiAoRGVzZXJldCkgYW5kIDExOEEwLTExOERGIChXYXJhbmcgQ2l0aSksCisgICAgICAgICAgICAgICAgIyBhbmQgZm9yIGJvdGggcmFuZ2VzIFJBTkdFX0lHTk9SRSB3b3Jrcy4KKyAgICAgICAgICAgICAgICBpZiBmaXh1cCBhbmQgb3AgaXMgUkFOR0U6CisgICAgICAgICAgICAgICAgICAgIG9wID0gUkFOR0VfSUdOT1JFCisgICAgICAgICAgICAgICAgdGFpbC5hcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICBicmVhawogCiAgICAgIyBjb21wcmVzcyBjaGFyYWN0ZXIgbWFwCkBAIC0zODMsMjUgKzM2OCw4IEBACiAgICAgb3V0ICs9IHRhaWwKICAgICByZXR1cm4gb3V0CiAKLWRlZiBfZml4dXBfcmFuZ2UobG8sIGhpLCByYW5nZXMsIGZpeHVwKToKLSAgICBmb3IgaSBpbiBtYXAoZml4dXAsIHJhbmdlKGxvLCBoaSsxKSk6Ci0gICAgICAgIGZvciBrLCAobG8sIGhpKSBpbiBlbnVtZXJhdGUocmFuZ2VzKToKLSAgICAgICAgICAgIGlmIGkgPCBsbzoKLSAgICAgICAgICAgICAgICBpZiBsID09IGxvIC0gMToKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VzW2tdID0gKGksIGhpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhbmdlcy5pbnNlcnQoaywgKGksIGkpKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmIGkgPiBoaToKLSAgICAgICAgICAgICAgICBpZiBpID09IGhpICsgMToKLSAgICAgICAgICAgICAgICAgICAgcmFuZ2VzW2tdID0gKGxvLCBpKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFuZ2VzLmFwcGVuZCgoaSwgaSkpCi0KIF9DT0RFQklUUyA9IF9zcmUuQ09ERVNJWkUgKiA4CitNQVhDT0RFID0gKDEgPDwgX0NPREVCSVRTKSAtIDEKIF9CSVRTX1RSQU5TID0gYicwJyArIGInMScgKiAyNTUKIGRlZiBfbWtfYml0bWFwKGJpdHMsIF9DT0RFQklUUz1fQ09ERUJJVFMsIF9pbnQ9aW50KToKICAgICBzID0gYml0cy50cmFuc2xhdGUoX0JJVFNfVFJBTlMpWzo6LTFdCkBAIC00NDYsOCArNDE0LDExIEBACiAgICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKICAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKICAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKKyAgICBpZiBoaSA+IE1BWENPREU6CisgICAgICAgIGhpID0gTUFYQ09ERQogICAgIGlmIGxvID09IDA6Ci0gICAgICAgIHJldHVybiAjIG5vdCB3b3J0aCBpdAorICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKKyAgICAgICAgcmV0dXJuCiAgICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CiAgICAgcHJlZml4ID0gW10KICAgICBwcmVmaXhhcHBlbmQgPSBwcmVmaXguYXBwZW5kCkBAIC01MDUsMjEgKzQ3NiwyMSBAQAogICAgICAgICAgICAgZWxpZiBvcCBpcyBJTjoKICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYXYKICMjICAgICBpZiBwcmVmaXg6Ci0jIyAgICAgICAgIHByaW50ICIqKiogUFJFRklYIiwgcHJlZml4LCBwcmVmaXhfc2tpcAorIyMgICAgICAgICBwcmludCgiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXApCiAjIyAgICAgaWYgY2hhcnNldDoKLSMjICAgICAgICAgcHJpbnQgIioqKiBDSEFSU0VUIiwgY2hhcnNldAorIyMgICAgICAgICBwcmludCgiKioqIENIQVJTRVQiLCBjaGFyc2V0KQogICAgICMgYWRkIGFuIGluZm8gYmxvY2sKICAgICBlbWl0ID0gY29kZS5hcHBlbmQKLSAgICBlbWl0KE9QQ09ERVNbSU5GT10pCisgICAgZW1pdChJTkZPKQogICAgIHNraXAgPSBsZW4oY29kZSk7IGVtaXQoMCkKICAgICAjIGxpdGVyYWwgZmxhZwogICAgIG1hc2sgPSAwCiAgICAgaWYgcHJlZml4OgogICAgICAgICBtYXNrID0gU1JFX0lORk9fUFJFRklYCiAgICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwID09IGxlbihwYXR0ZXJuLmRhdGEpOgotICAgICAgICAgICAgbWFzayA9IG1hc2sgKyBTUkVfSU5GT19MSVRFUkFMCisgICAgICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0xJVEVSQUwKICAgICBlbGlmIGNoYXJzZXQ6Ci0gICAgICAgIG1hc2sgPSBtYXNrICsgU1JFX0lORk9fQ0hBUlNFVAorICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0NIQVJTRVQKICAgICBlbWl0KG1hc2spCiAgICAgIyBwYXR0ZXJuIGxlbmd0aAogICAgIGlmIGxvIDwgTUFYQ09ERToKQEAgLTUyNywxMCArNDk4LDcgQEAKICAgICBlbHNlOgogICAgICAgICBlbWl0KE1BWENPREUpCiAgICAgICAgIHByZWZpeCA9IHByZWZpeFs6TUFYQ09ERV0KLSAgICBpZiBoaSA8IE1BWENPREU6Ci0gICAgICAgIGVtaXQoaGkpCi0gICAgZWxzZToKLSAgICAgICAgZW1pdCgwKQorICAgIGVtaXQobWluKGhpLCBNQVhDT0RFKSkKICAgICAjIGFkZCBsaXRlcmFsIHByZWZpeAogICAgIGlmIHByZWZpeDoKICAgICAgICAgZW1pdChsZW4ocHJlZml4KSkgIyBsZW5ndGgKQEAgLTU1Niw3ICs1MjQsNyBAQAogICAgICMgY29tcGlsZSB0aGUgcGF0dGVybgogICAgIF9jb21waWxlKGNvZGUsIHAuZGF0YSwgZmxhZ3MpCiAKLSAgICBjb2RlLmFwcGVuZChPUENPREVTW1NVQ0NFU1NdKQorICAgIGNvZGUuYXBwZW5kKFNVQ0NFU1MpCiAKICAgICByZXR1cm4gY29kZQogCkBAIC01NzEsMTMgKzUzOSw3IEBACiAKICAgICBjb2RlID0gX2NvZGUocCwgZmxhZ3MpCiAKLSAgICAjIHByaW50IGNvZGUKLQotICAgICMgWFhYOiA8Zmw+IGdldCByaWQgb2YgdGhpcyBsaW1pdGF0aW9uIQotICAgIGlmIHAucGF0dGVybi5ncm91cHMgPiAxMDA6Ci0gICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAotICAgICAgICAgICAgInNvcnJ5LCBidXQgdGhpcyB2ZXJzaW9uIG9ubHkgc3VwcG9ydHMgMTAwIG5hbWVkIGdyb3VwcyIKLSAgICAgICAgICAgICkKKyAgICAjIHByaW50KGNvZGUpCiAKICAgICAjIG1hcCBpbiBlaXRoZXIgZGlyZWN0aW9uCiAgICAgZ3JvdXBpbmRleCA9IHAucGF0dGVybi5ncm91cGRpY3QKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29uc3RhbnRzLnB5IGIvTGliL3NyZV9jb25zdGFudHMucHkKaW5kZXggMjNlMzUxNi4uZmM2ODRhZSAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb25zdGFudHMucHkKKysrIGIvTGliL3NyZV9jb25zdGFudHMucHkKQEAgLTEzLDE1MyArMTMsMTE1IEBACiAKICMgdXBkYXRlIHdoZW4gY29uc3RhbnRzIGFyZSBhZGRlZCBvciByZW1vdmVkCiAKLU1BR0lDID0gMjAwMzEwMTcKK01BR0lDID0gMjAxNDA5MTcKIAotZnJvbSBfc3JlIGltcG9ydCBNQVhSRVBFQVQKK2Zyb20gX3NyZSBpbXBvcnQgTUFYUkVQRUFULCBNQVhHUk9VUFMKIAogIyBTUkUgc3RhbmRhcmQgZXhjZXB0aW9uIChhY2Nlc3MgYXMgc3JlLmVycm9yKQogIyBzaG91bGQgdGhpcyByZWFsbHkgYmUgaGVyZT8KIAogY2xhc3MgZXJyb3IoRXhjZXB0aW9uKToKLSAgICBwYXNzCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywgcGF0dGVybj1Ob25lLCBwb3M9Tm9uZSk6CisgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIHNlbGYucGF0dGVybiA9IHBhdHRlcm4KKyAgICAgICAgc2VsZi5wb3MgPSBwb3MKKyAgICAgICAgaWYgcGF0dGVybiBpcyBub3QgTm9uZSBhbmQgcG9zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbXNnID0gJyVzIGF0IHBvc2l0aW9uICVkJyAlIChtc2csIHBvcykKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgc3RyKToKKyAgICAgICAgICAgICAgICBuZXdsaW5lID0gJ1xuJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXdsaW5lID0gYidcbicKKyAgICAgICAgICAgIHNlbGYubGluZW5vID0gcGF0dGVybi5jb3VudChuZXdsaW5lLCAwLCBwb3MpICsgMQorICAgICAgICAgICAgc2VsZi5jb2xubyA9IHBvcyAtIHBhdHRlcm4ucmZpbmQobmV3bGluZSwgMCwgcG9zKQorICAgICAgICAgICAgaWYgbmV3bGluZSBpbiBwYXR0ZXJuOgorICAgICAgICAgICAgICAgIG1zZyA9ICclcyAobGluZSAlZCwgY29sdW1uICVkKScgJSAobXNnLCBzZWxmLmxpbmVubywgc2VsZi5jb2xubykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5jb2xubyA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhtc2cpCisKKworY2xhc3MgX05hbWVkSW50Q29uc3RhbnQoaW50KToKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlLCBuYW1lKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKF9OYW1lZEludENvbnN0YW50LCBjbHMpLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm5hbWUKKworICAgIF9fcmVwcl9fID0gX19zdHJfXworCitNQVhSRVBFQVQgPSBfTmFtZWRJbnRDb25zdGFudChNQVhSRVBFQVQsICdNQVhSRVBFQVQnKQorCitkZWYgX21ha2Vjb2RlcyhuYW1lcyk6CisgICAgbmFtZXMgPSBuYW1lcy5zdHJpcCgpLnNwbGl0KCkKKyAgICBpdGVtcyA9IFtfTmFtZWRJbnRDb25zdGFudChpLCBuYW1lKSBmb3IgaSwgbmFtZSBpbiBlbnVtZXJhdGUobmFtZXMpXQorICAgIGdsb2JhbHMoKS51cGRhdGUoe2l0ZW0ubmFtZTogaXRlbSBmb3IgaXRlbSBpbiBpdGVtc30pCisgICAgcmV0dXJuIGl0ZW1zCiAKICMgb3BlcmF0b3JzCisjIGZhaWx1cmU9MCBzdWNjZXNzPTEgKGp1c3QgYmVjYXVzZSBpdCBsb29rcyBiZXR0ZXIgdGhhdCB3YXkgOi0pCitPUENPREVTID0gX21ha2Vjb2RlcygiIiIKKyAgICBGQUlMVVJFIFNVQ0NFU1MKIAotRkFJTFVSRSA9ICJmYWlsdXJlIgotU1VDQ0VTUyA9ICJzdWNjZXNzIgorICAgIEFOWSBBTllfQUxMCisgICAgQVNTRVJUIEFTU0VSVF9OT1QKKyAgICBBVAorICAgIEJSQU5DSAorICAgIENBTEwKKyAgICBDQVRFR09SWQorICAgIENIQVJTRVQgQklHQ0hBUlNFVAorICAgIEdST1VQUkVGIEdST1VQUkVGX0VYSVNUUyBHUk9VUFJFRl9JR05PUkUKKyAgICBJTiBJTl9JR05PUkUKKyAgICBJTkZPCisgICAgSlVNUAorICAgIExJVEVSQUwgTElURVJBTF9JR05PUkUKKyAgICBNQVJLCisgICAgTUFYX1VOVElMCisgICAgTUlOX1VOVElMCisgICAgTk9UX0xJVEVSQUwgTk9UX0xJVEVSQUxfSUdOT1JFCisgICAgTkVHQVRFCisgICAgUkFOR0UKKyAgICBSRVBFQVQKKyAgICBSRVBFQVRfT05FCisgICAgU1VCUEFUVEVSTgorICAgIE1JTl9SRVBFQVRfT05FCisgICAgUkFOR0VfSUdOT1JFCiAKLUFOWSA9ICJhbnkiCi1BTllfQUxMID0gImFueV9hbGwiCi1BU1NFUlQgPSAiYXNzZXJ0IgotQVNTRVJUX05PVCA9ICJhc3NlcnRfbm90IgotQVQgPSAiYXQiCi1CSUdDSEFSU0VUID0gImJpZ2NoYXJzZXQiCi1CUkFOQ0ggPSAiYnJhbmNoIgotQ0FMTCA9ICJjYWxsIgotQ0FURUdPUlkgPSAiY2F0ZWdvcnkiCi1DSEFSU0VUID0gImNoYXJzZXQiCi1HUk9VUFJFRiA9ICJncm91cHJlZiIKLUdST1VQUkVGX0lHTk9SRSA9ICJncm91cHJlZl9pZ25vcmUiCi1HUk9VUFJFRl9FWElTVFMgPSAiZ3JvdXByZWZfZXhpc3RzIgotSU4gPSAiaW4iCi1JTl9JR05PUkUgPSAiaW5faWdub3JlIgotSU5GTyA9ICJpbmZvIgotSlVNUCA9ICJqdW1wIgotTElURVJBTCA9ICJsaXRlcmFsIgotTElURVJBTF9JR05PUkUgPSAibGl0ZXJhbF9pZ25vcmUiCi1NQVJLID0gIm1hcmsiCi1NQVhfUkVQRUFUID0gIm1heF9yZXBlYXQiCi1NQVhfVU5USUwgPSAibWF4X3VudGlsIgotTUlOX1JFUEVBVCA9ICJtaW5fcmVwZWF0IgotTUlOX1VOVElMID0gIm1pbl91bnRpbCIKLU5FR0FURSA9ICJuZWdhdGUiCi1OT1RfTElURVJBTCA9ICJub3RfbGl0ZXJhbCIKLU5PVF9MSVRFUkFMX0lHTk9SRSA9ICJub3RfbGl0ZXJhbF9pZ25vcmUiCi1SQU5HRSA9ICJyYW5nZSIKLVJFUEVBVCA9ICJyZXBlYXQiCi1SRVBFQVRfT05FID0gInJlcGVhdF9vbmUiCi1TVUJQQVRURVJOID0gInN1YnBhdHRlcm4iCi1NSU5fUkVQRUFUX09ORSA9ICJtaW5fcmVwZWF0X29uZSIKKyAgICBNSU5fUkVQRUFUIE1BWF9SRVBFQVQKKyIiIikKK2RlbCBPUENPREVTWy0yOl0gIyByZW1vdmUgTUlOX1JFUEVBVCBhbmQgTUFYX1JFUEVBVAogCiAjIHBvc2l0aW9ucwotQVRfQkVHSU5OSU5HID0gImF0X2JlZ2lubmluZyIKLUFUX0JFR0lOTklOR19MSU5FID0gImF0X2JlZ2lubmluZ19saW5lIgotQVRfQkVHSU5OSU5HX1NUUklORyA9ICJhdF9iZWdpbm5pbmdfc3RyaW5nIgotQVRfQk9VTkRBUlkgPSAiYXRfYm91bmRhcnkiCi1BVF9OT05fQk9VTkRBUlkgPSAiYXRfbm9uX2JvdW5kYXJ5IgotQVRfRU5EID0gImF0X2VuZCIKLUFUX0VORF9MSU5FID0gImF0X2VuZF9saW5lIgotQVRfRU5EX1NUUklORyA9ICJhdF9lbmRfc3RyaW5nIgotQVRfTE9DX0JPVU5EQVJZID0gImF0X2xvY19ib3VuZGFyeSIKLUFUX0xPQ19OT05fQk9VTkRBUlkgPSAiYXRfbG9jX25vbl9ib3VuZGFyeSIKLUFUX1VOSV9CT1VOREFSWSA9ICJhdF91bmlfYm91bmRhcnkiCi1BVF9VTklfTk9OX0JPVU5EQVJZID0gImF0X3VuaV9ub25fYm91bmRhcnkiCitBVENPREVTID0gX21ha2Vjb2RlcygiIiIKKyAgICBBVF9CRUdJTk5JTkcgQVRfQkVHSU5OSU5HX0xJTkUgQVRfQkVHSU5OSU5HX1NUUklORworICAgIEFUX0JPVU5EQVJZIEFUX05PTl9CT1VOREFSWQorICAgIEFUX0VORCBBVF9FTkRfTElORSBBVF9FTkRfU1RSSU5HCisgICAgQVRfTE9DX0JPVU5EQVJZIEFUX0xPQ19OT05fQk9VTkRBUlkKKyAgICBBVF9VTklfQk9VTkRBUlkgQVRfVU5JX05PTl9CT1VOREFSWQorIiIiKQogCiAjIGNhdGVnb3JpZXMKLUNBVEVHT1JZX0RJR0lUID0gImNhdGVnb3J5X2RpZ2l0IgotQ0FURUdPUllfTk9UX0RJR0lUID0gImNhdGVnb3J5X25vdF9kaWdpdCIKLUNBVEVHT1JZX1NQQUNFID0gImNhdGVnb3J5X3NwYWNlIgotQ0FURUdPUllfTk9UX1NQQUNFID0gImNhdGVnb3J5X25vdF9zcGFjZSIKLUNBVEVHT1JZX1dPUkQgPSAiY2F0ZWdvcnlfd29yZCIKLUNBVEVHT1JZX05PVF9XT1JEID0gImNhdGVnb3J5X25vdF93b3JkIgotQ0FURUdPUllfTElORUJSRUFLID0gImNhdGVnb3J5X2xpbmVicmVhayIKLUNBVEVHT1JZX05PVF9MSU5FQlJFQUsgPSAiY2F0ZWdvcnlfbm90X2xpbmVicmVhayIKLUNBVEVHT1JZX0xPQ19XT1JEID0gImNhdGVnb3J5X2xvY193b3JkIgotQ0FURUdPUllfTE9DX05PVF9XT1JEID0gImNhdGVnb3J5X2xvY19ub3Rfd29yZCIKLUNBVEVHT1JZX1VOSV9ESUdJVCA9ICJjYXRlZ29yeV91bmlfZGlnaXQiCi1DQVRFR09SWV9VTklfTk9UX0RJR0lUID0gImNhdGVnb3J5X3VuaV9ub3RfZGlnaXQiCi1DQVRFR09SWV9VTklfU1BBQ0UgPSAiY2F0ZWdvcnlfdW5pX3NwYWNlIgotQ0FURUdPUllfVU5JX05PVF9TUEFDRSA9ICJjYXRlZ29yeV91bmlfbm90X3NwYWNlIgotQ0FURUdPUllfVU5JX1dPUkQgPSAiY2F0ZWdvcnlfdW5pX3dvcmQiCi1DQVRFR09SWV9VTklfTk9UX1dPUkQgPSAiY2F0ZWdvcnlfdW5pX25vdF93b3JkIgotQ0FURUdPUllfVU5JX0xJTkVCUkVBSyA9ICJjYXRlZ29yeV91bmlfbGluZWJyZWFrIgotQ0FURUdPUllfVU5JX05PVF9MSU5FQlJFQUsgPSAiY2F0ZWdvcnlfdW5pX25vdF9saW5lYnJlYWsiCitDSENPREVTID0gX21ha2Vjb2RlcygiIiIKKyAgICBDQVRFR09SWV9ESUdJVCBDQVRFR09SWV9OT1RfRElHSVQKKyAgICBDQVRFR09SWV9TUEFDRSBDQVRFR09SWV9OT1RfU1BBQ0UKKyAgICBDQVRFR09SWV9XT1JEIENBVEVHT1JZX05PVF9XT1JECisgICAgQ0FURUdPUllfTElORUJSRUFLIENBVEVHT1JZX05PVF9MSU5FQlJFQUsKKyAgICBDQVRFR09SWV9MT0NfV09SRCBDQVRFR09SWV9MT0NfTk9UX1dPUkQKKyAgICBDQVRFR09SWV9VTklfRElHSVQgQ0FURUdPUllfVU5JX05PVF9ESUdJVAorICAgIENBVEVHT1JZX1VOSV9TUEFDRSBDQVRFR09SWV9VTklfTk9UX1NQQUNFCisgICAgQ0FURUdPUllfVU5JX1dPUkQgQ0FURUdPUllfVU5JX05PVF9XT1JECisgICAgQ0FURUdPUllfVU5JX0xJTkVCUkVBSyBDQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSworIiIiKQogCi1PUENPREVTID0gWwotCi0gICAgIyBmYWlsdXJlPTAgc3VjY2Vzcz0xIChqdXN0IGJlY2F1c2UgaXQgbG9va3MgYmV0dGVyIHRoYXQgd2F5IDotKQotICAgIEZBSUxVUkUsIFNVQ0NFU1MsCi0KLSAgICBBTlksIEFOWV9BTEwsCi0gICAgQVNTRVJULCBBU1NFUlRfTk9ULAotICAgIEFULAotICAgIEJSQU5DSCwKLSAgICBDQUxMLAotICAgIENBVEVHT1JZLAotICAgIENIQVJTRVQsIEJJR0NIQVJTRVQsCi0gICAgR1JPVVBSRUYsIEdST1VQUkVGX0VYSVNUUywgR1JPVVBSRUZfSUdOT1JFLAotICAgIElOLCBJTl9JR05PUkUsCi0gICAgSU5GTywKLSAgICBKVU1QLAotICAgIExJVEVSQUwsIExJVEVSQUxfSUdOT1JFLAotICAgIE1BUkssCi0gICAgTUFYX1VOVElMLAotICAgIE1JTl9VTlRJTCwKLSAgICBOT1RfTElURVJBTCwgTk9UX0xJVEVSQUxfSUdOT1JFLAotICAgIE5FR0FURSwKLSAgICBSQU5HRSwKLSAgICBSRVBFQVQsCi0gICAgUkVQRUFUX09ORSwKLSAgICBTVUJQQVRURVJOLAotICAgIE1JTl9SRVBFQVRfT05FCi0KLV0KLQotQVRDT0RFUyA9IFsKLSAgICBBVF9CRUdJTk5JTkcsIEFUX0JFR0lOTklOR19MSU5FLCBBVF9CRUdJTk5JTkdfU1RSSU5HLCBBVF9CT1VOREFSWSwKLSAgICBBVF9OT05fQk9VTkRBUlksIEFUX0VORCwgQVRfRU5EX0xJTkUsIEFUX0VORF9TVFJJTkcsCi0gICAgQVRfTE9DX0JPVU5EQVJZLCBBVF9MT0NfTk9OX0JPVU5EQVJZLCBBVF9VTklfQk9VTkRBUlksCi0gICAgQVRfVU5JX05PTl9CT1VOREFSWQotXQotCi1DSENPREVTID0gWwotICAgIENBVEVHT1JZX0RJR0lULCBDQVRFR09SWV9OT1RfRElHSVQsIENBVEVHT1JZX1NQQUNFLAotICAgIENBVEVHT1JZX05PVF9TUEFDRSwgQ0FURUdPUllfV09SRCwgQ0FURUdPUllfTk9UX1dPUkQsCi0gICAgQ0FURUdPUllfTElORUJSRUFLLCBDQVRFR09SWV9OT1RfTElORUJSRUFLLCBDQVRFR09SWV9MT0NfV09SRCwKLSAgICBDQVRFR09SWV9MT0NfTk9UX1dPUkQsIENBVEVHT1JZX1VOSV9ESUdJVCwgQ0FURUdPUllfVU5JX05PVF9ESUdJVCwKLSAgICBDQVRFR09SWV9VTklfU1BBQ0UsIENBVEVHT1JZX1VOSV9OT1RfU1BBQ0UsIENBVEVHT1JZX1VOSV9XT1JELAotICAgIENBVEVHT1JZX1VOSV9OT1RfV09SRCwgQ0FURUdPUllfVU5JX0xJTkVCUkVBSywKLSAgICBDQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSwotXQotCi1kZWYgbWFrZWRpY3QobGlzdCk6Ci0gICAgZCA9IHt9Ci0gICAgaSA9IDAKLSAgICBmb3IgaXRlbSBpbiBsaXN0OgotICAgICAgICBkW2l0ZW1dID0gaQotICAgICAgICBpID0gaSArIDEKLSAgICByZXR1cm4gZAotCi1PUENPREVTID0gbWFrZWRpY3QoT1BDT0RFUykKLUFUQ09ERVMgPSBtYWtlZGljdChBVENPREVTKQotQ0hDT0RFUyA9IG1ha2VkaWN0KENIQ09ERVMpCiAKICMgcmVwbGFjZW1lbnQgb3BlcmF0aW9ucyBmb3IgImlnbm9yZSBjYXNlIiBtb2RlCiBPUF9JR05PUkUgPSB7CiAgICAgR1JPVVBSRUY6IEdST1VQUkVGX0lHTk9SRSwKICAgICBJTjogSU5fSUdOT1JFLAogICAgIExJVEVSQUw6IExJVEVSQUxfSUdOT1JFLAotICAgIE5PVF9MSVRFUkFMOiBOT1RfTElURVJBTF9JR05PUkUKKyAgICBOT1RfTElURVJBTDogTk9UX0xJVEVSQUxfSUdOT1JFLAorICAgIFJBTkdFOiBSQU5HRV9JR05PUkUsCiB9CiAKIEFUX01VTFRJTElORSA9IHsKQEAgLTIxNywxMSArMTc5LDExIEBACiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZGVmIGR1bXAoZiwgZCwgcHJlZml4KToKLSAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpLCBrZXk9bGFtYmRhIGE6IGFbMV0pCi0gICAgICAgIGZvciBrLCB2IGluIGl0ZW1zOgotICAgICAgICAgICAgZi53cml0ZSgiI2RlZmluZSAlc18lcyAlc1xuIiAlIChwcmVmaXgsIGsudXBwZXIoKSwgdikpCi0gICAgZiA9IG9wZW4oInNyZV9jb25zdGFudHMuaCIsICJ3IikKLSAgICBmLndyaXRlKCIiIlwKKyAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZCkKKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgICAgICAgICBmLndyaXRlKCIjZGVmaW5lICVzXyVzICVkXG4iICUgKHByZWZpeCwgaXRlbSwgaXRlbSkpCisgICAgd2l0aCBvcGVuKCJzcmVfY29uc3RhbnRzLmgiLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUoIiIiXAogLyoKICAqIFNlY3JldCBMYWJzJyBSZWd1bGFyIEV4cHJlc3Npb24gRW5naW5lCiAgKgpAQCAtMjM3LDI1ICsxOTksMjQgQEAKIAogIiIiKQogCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfTUFHSUMgJWRcbiIgJSBNQUdJQykKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfTUFHSUMgJWRcbiIgJSBNQUdJQykKIAotICAgIGR1bXAoZiwgT1BDT0RFUywgIlNSRV9PUCIpCi0gICAgZHVtcChmLCBBVENPREVTLCAiU1JFIikKLSAgICBkdW1wKGYsIENIQ09ERVMsICJTUkUiKQorICAgICAgICBkdW1wKGYsIE9QQ09ERVMsICJTUkVfT1AiKQorICAgICAgICBkdW1wKGYsIEFUQ09ERVMsICJTUkUiKQorICAgICAgICBkdW1wKGYsIENIQ09ERVMsICJTUkUiKQogCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19URU1QTEFURSAlZFxuIiAlIFNSRV9GTEFHX1RFTVBMQVRFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfSUdOT1JFQ0FTRSAlZFxuIiAlIFNSRV9GTEFHX0lHTk9SRUNBU0UpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19MT0NBTEUgJWRcbiIgJSBTUkVfRkxBR19MT0NBTEUpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19NVUxUSUxJTkUgJWRcbiIgJSBTUkVfRkxBR19NVUxUSUxJTkUpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19ET1RBTEwgJWRcbiIgJSBTUkVfRkxBR19ET1RBTEwpCi0gICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19VTklDT0RFICVkXG4iICUgU1JFX0ZMQUdfVU5JQ09ERSkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX1ZFUkJPU0UgJWRcbiIgJSBTUkVfRkxBR19WRVJCT1NFKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfREVCVUcgJWRcbiIgJSBTUkVfRkxBR19ERUJVRykKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0FTQ0lJICVkXG4iICUgU1JFX0ZMQUdfQVNDSUkpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfVEVNUExBVEUgJWRcbiIgJSBTUkVfRkxBR19URU1QTEFURSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19JR05PUkVDQVNFICVkXG4iICUgU1JFX0ZMQUdfSUdOT1JFQ0FTRSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19MT0NBTEUgJWRcbiIgJSBTUkVfRkxBR19MT0NBTEUpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0ZMQUdfTVVMVElMSU5FICVkXG4iICUgU1JFX0ZMQUdfTVVMVElMSU5FKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0RPVEFMTCAlZFxuIiAlIFNSRV9GTEFHX0RPVEFMTCkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19VTklDT0RFICVkXG4iICUgU1JFX0ZMQUdfVU5JQ09ERSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19WRVJCT1NFICVkXG4iICUgU1JFX0ZMQUdfVkVSQk9TRSkKKyAgICAgICAgZi53cml0ZSgiI2RlZmluZSBTUkVfRkxBR19ERUJVRyAlZFxuIiAlIFNSRV9GTEFHX0RFQlVHKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9GTEFHX0FTQ0lJICVkXG4iICUgU1JFX0ZMQUdfQVNDSUkpCiAKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX1BSRUZJWCAlZFxuIiAlIFNSRV9JTkZPX1BSRUZJWCkKLSAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0xJVEVSQUwgJWRcbiIgJSBTUkVfSU5GT19MSVRFUkFMKQotICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0lORk9fQ0hBUlNFVCAlZFxuIiAlIFNSRV9JTkZPX0NIQVJTRVQpCisgICAgICAgIGYud3JpdGUoIiNkZWZpbmUgU1JFX0lORk9fUFJFRklYICVkXG4iICUgU1JFX0lORk9fUFJFRklYKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0xJVEVSQUwgJWRcbiIgJSBTUkVfSU5GT19MSVRFUkFMKQorICAgICAgICBmLndyaXRlKCIjZGVmaW5lIFNSRV9JTkZPX0NIQVJTRVQgJWRcbiIgJSBTUkVfSU5GT19DSEFSU0VUKQogCi0gICAgZi5jbG9zZSgpCiAgICAgcHJpbnQoImRvbmUiKQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggZGYxZTY0My4uNjdmODRlOSAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC0xMywxNyArMTMsMjAgQEAKICMgWFhYOiBzaG93IHN0cmluZyBvZmZzZXQgYW5kIG9mZmVuZGluZyBjaGFyYWN0ZXIgZm9yIGFsbCBlcnJvcnMKIAogZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqCi1mcm9tIF9zcmUgaW1wb3J0IE1BWFJFUEVBVAogCiBTUEVDSUFMX0NIQVJTID0gIi5cXFt7KCkqKz9eJHwiCiBSRVBFQVRfQ0hBUlMgPSAiKis/eyIKIAotRElHSVRTID0gc2V0KCIwMTIzNDU2Nzg5IikKK0RJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1Njc4OSIpCiAKLU9DVERJR0lUUyA9IHNldCgiMDEyMzQ1NjciKQotSEVYRElHSVRTID0gc2V0KCIwMTIzNDU2Nzg5YWJjZGVmQUJDREVGIikKK09DVERJR0lUUyA9IGZyb3plbnNldCgiMDEyMzQ1NjciKQorSEVYRElHSVRTID0gZnJvemVuc2V0KCIwMTIzNDU2Nzg5YWJjZGVmQUJDREVGIikKK0FTQ0lJTEVUVEVSUyA9IGZyb3plbnNldCgiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIpCiAKLVdISVRFU1BBQ0UgPSBzZXQoIiBcdFxuXHJcdlxmIikKK1dISVRFU1BBQ0UgPSBmcm96ZW5zZXQoIiBcdFxuXHJcdlxmIikKKworX1JFUEVBVENPREVTID0gZnJvemVuc2V0KHtNSU5fUkVQRUFULCBNQVhfUkVQRUFUfSkKK19VTklUQ09ERVMgPSBmcm96ZW5zZXQoe0FOWSwgUkFOR0UsIElOLCBMSVRFUkFMLCBOT1RfTElURVJBTCwgQ0FURUdPUll9KQogCiBFU0NBUEVTID0gewogICAgIHIiXGEiOiAoTElURVJBTCwgb3JkKCJcYSIpKSwKQEAgLTY2LDI2ICs2OSwzNiBAQAogICAgICMgbWFzdGVyIHBhdHRlcm4gb2JqZWN0LiAga2VlcHMgdHJhY2sgb2YgZ2xvYmFsIGF0dHJpYnV0ZXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuZmxhZ3MgPSAwCi0gICAgICAgIHNlbGYub3BlbiA9IFtdCi0gICAgICAgIHNlbGYuZ3JvdXBzID0gMQogICAgICAgICBzZWxmLmdyb3VwZGljdCA9IHt9Ci0gICAgICAgIHNlbGYubG9va2JlaGluZCA9IDAKLQorICAgICAgICBzZWxmLnN1YnBhdHRlcm5zID0gW05vbmVdICAjIGdyb3VwIDAKKyAgICAgICAgc2VsZi5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBncm91cHMoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5zdWJwYXR0ZXJucykKICAgICBkZWYgb3Blbmdyb3VwKHNlbGYsIG5hbWU9Tm9uZSk6CiAgICAgICAgIGdpZCA9IHNlbGYuZ3JvdXBzCi0gICAgICAgIHNlbGYuZ3JvdXBzID0gZ2lkICsgMQorICAgICAgICBzZWxmLnN1YnBhdHRlcm5zLmFwcGVuZChOb25lKQorICAgICAgICBpZiBzZWxmLmdyb3VwcyA+IE1BWEdST1VQUzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ0b28gbWFueSBncm91cHMiKQogICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb2dpZCA9IHNlbGYuZ3JvdXBkaWN0LmdldChuYW1lLCBOb25lKQogICAgICAgICAgICAgaWYgb2dpZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJXMgYXMgZ3JvdXAgJWQ7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwICVkIiAlIChyZXByKG5hbWUpLCBnaWQsICBvZ2lkKSkKKyAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJXIgYXMgZ3JvdXAgJWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwICVkIiAlIChuYW1lLCBnaWQsICBvZ2lkKSkKICAgICAgICAgICAgIHNlbGYuZ3JvdXBkaWN0W25hbWVdID0gZ2lkCi0gICAgICAgIHNlbGYub3Blbi5hcHBlbmQoZ2lkKQogICAgICAgICByZXR1cm4gZ2lkCi0gICAgZGVmIGNsb3NlZ3JvdXAoc2VsZiwgZ2lkKToKLSAgICAgICAgc2VsZi5vcGVuLnJlbW92ZShnaWQpCisgICAgZGVmIGNsb3NlZ3JvdXAoc2VsZiwgZ2lkLCBwKToKKyAgICAgICAgc2VsZi5zdWJwYXR0ZXJuc1tnaWRdID0gcAogICAgIGRlZiBjaGVja2dyb3VwKHNlbGYsIGdpZCk6Ci0gICAgICAgIHJldHVybiBnaWQgPCBzZWxmLmdyb3VwcyBhbmQgZ2lkIG5vdCBpbiBzZWxmLm9wZW4KKyAgICAgICAgcmV0dXJuIGdpZCA8IHNlbGYuZ3JvdXBzIGFuZCBzZWxmLnN1YnBhdHRlcm5zW2dpZF0gaXMgbm90IE5vbmUKKworICAgIGRlZiBjaGVja2xvb2tiZWhpbmRncm91cChzZWxmLCBnaWQsIHNvdXJjZSk6CisgICAgICAgIGlmIHNlbGYubG9va2JlaGluZGdyb3VwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrZ3JvdXAoZ2lkKToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ2Nhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwJykKKyAgICAgICAgICAgIGlmIGdpZCA+PSBzZWxmLmxvb2tiZWhpbmRncm91cHM6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdjYW5ub3QgcmVmZXIgdG8gZ3JvdXAgZGVmaW5lZCBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb29rYmVoaW5kIHN1YnBhdHRlcm4nKQogCiBjbGFzcyBTdWJQYXR0ZXJuOgogICAgICMgYSBzdWJwYXR0ZXJuLCBpbiBpbnRlcm1lZGlhdGUgZm9ybQpAQCAtOTksMjQgKzExMiwyNCBAQAogICAgICAgICBubCA9IFRydWUKICAgICAgICAgc2VxdHlwZXMgPSAodHVwbGUsIGxpc3QpCiAgICAgICAgIGZvciBvcCwgYXYgaW4gc2VsZi5kYXRhOgotICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArIG9wLCBlbmQ9JycpCi0gICAgICAgICAgICBpZiBvcCA9PSBJTjoKKyAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyBzdHIob3ApLCBlbmQ9JycpCisgICAgICAgICAgICBpZiBvcCBpcyBJTjoKICAgICAgICAgICAgICAgICAjIG1lbWJlciBzdWJsYW5ndWFnZQogICAgICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgICAgICBmb3Igb3AsIGEgaW4gYXY6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KChsZXZlbCsxKSoiICAiICsgb3AsIGEpCi0gICAgICAgICAgICBlbGlmIG9wID09IEJSQU5DSDoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoKGxldmVsKzEpKiIgICIgKyBzdHIob3ApLCBhKQorICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CiAgICAgICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICAgICAgIGZvciBpLCBhIGluIGVudW1lcmF0ZShhdlsxXSk6CiAgICAgICAgICAgICAgICAgICAgIGlmIGk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludChsZXZlbCoiICAiICsgIm9yIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGxldmVsKiIgICIgKyAiT1IiKQogICAgICAgICAgICAgICAgICAgICBhLmR1bXAobGV2ZWwrMSkKLSAgICAgICAgICAgIGVsaWYgb3AgPT0gR1JPVVBSRUZfRVhJU1RTOgorICAgICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRl9FWElTVFM6CiAgICAgICAgICAgICAgICAgY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubyA9IGF2CiAgICAgICAgICAgICAgICAgcHJpbnQoJycsIGNvbmRncm91cCkKICAgICAgICAgICAgICAgICBpdGVtX3llcy5kdW1wKGxldmVsKzEpCiAgICAgICAgICAgICAgICAgaWYgaXRlbV9ubzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArICJlbHNlIikKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQobGV2ZWwqIiAgIiArICJFTFNFIikKICAgICAgICAgICAgICAgICAgICAgaXRlbV9uby5kdW1wKGxldmVsKzEpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXYsIHNlcXR5cGVzKToKICAgICAgICAgICAgICAgICBubCA9IEZhbHNlCkBAIC0xNTMsMTEgKzE2Niw5IEBACiAgICAgICAgIHNlbGYuZGF0YS5hcHBlbmQoY29kZSkKICAgICBkZWYgZ2V0d2lkdGgoc2VsZik6CiAgICAgICAgICMgZGV0ZXJtaW5lIHRoZSB3aWR0aCAobWluLCBtYXgpIGZvciB0aGlzIHN1YnBhdHRlcm4KLSAgICAgICAgaWYgc2VsZi53aWR0aDoKKyAgICAgICAgaWYgc2VsZi53aWR0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLndpZHRoCiAgICAgICAgIGxvID0gaGkgPSAwCi0gICAgICAgIFVOSVRDT0RFUyA9IChBTlksIFJBTkdFLCBJTiwgTElURVJBTCwgTk9UX0xJVEVSQUwsIENBVEVHT1JZKQotICAgICAgICBSRVBFQVRDT0RFUyA9IChNSU5fUkVQRUFULCBNQVhfUkVQRUFUKQogICAgICAgICBmb3Igb3AsIGF2IGluIHNlbGYuZGF0YToKICAgICAgICAgICAgIGlmIG9wIGlzIEJSQU5DSDoKICAgICAgICAgICAgICAgICBpID0gTUFYUkVQRUFUIC0gMQpAQCAtMTc2LDE0ICsxODcsMjggQEAKICAgICAgICAgICAgICAgICBpLCBqID0gYXZbMV0uZ2V0d2lkdGgoKQogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKLSAgICAgICAgICAgIGVsaWYgb3AgaW4gUkVQRUFUQ09ERVM6CisgICAgICAgICAgICBlbGlmIG9wIGluIF9SRVBFQVRDT0RFUzoKICAgICAgICAgICAgICAgICBpLCBqID0gYXZbMl0uZ2V0d2lkdGgoKQogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpICogYXZbMF0KICAgICAgICAgICAgICAgICBoaSA9IGhpICsgaiAqIGF2WzFdCi0gICAgICAgICAgICBlbGlmIG9wIGluIFVOSVRDT0RFUzoKKyAgICAgICAgICAgIGVsaWYgb3AgaW4gX1VOSVRDT0RFUzoKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgMQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyAxCi0gICAgICAgICAgICBlbGlmIG9wID09IFNVQ0NFU1M6CisgICAgICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgorICAgICAgICAgICAgICAgIGksIGogPSBzZWxmLnBhdHRlcm4uc3VicGF0dGVybnNbYXZdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQorICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCisgICAgICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGX0VYSVNUUzoKKyAgICAgICAgICAgICAgICBpLCBqID0gYXZbMV0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgIGlmIGF2WzJdIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBsLCBoID0gYXZbMl0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgICAgICBpID0gbWluKGksIGwpCisgICAgICAgICAgICAgICAgICAgIGogPSBtYXgoaiwgaCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCisgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKKyAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VDQ0VTUzoKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBzZWxmLndpZHRoID0gbWluKGxvLCBNQVhSRVBFQVQgLSAxKSwgbWluKGhpLCBNQVhSRVBFQVQpCiAgICAgICAgIHJldHVybiBzZWxmLndpZHRoCkBAIC0xOTIsMzMgKzIxNywzMyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpbmcpOgogICAgICAgICBzZWxmLmlzdGV4dCA9IGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpCiAgICAgICAgIHNlbGYuc3RyaW5nID0gc3RyaW5nCisgICAgICAgIGlmIG5vdCBzZWxmLmlzdGV4dDoKKyAgICAgICAgICAgIHN0cmluZyA9IHN0cihzdHJpbmcsICdsYXRpbjEnKQorICAgICAgICBzZWxmLmRlY29kZWRfc3RyaW5nID0gc3RyaW5nCiAgICAgICAgIHNlbGYuaW5kZXggPSAwCisgICAgICAgIHNlbGYubmV4dCA9IE5vbmUKICAgICAgICAgc2VsZi5fX25leHQoKQogICAgIGRlZiBfX25leHQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuaW5kZXggPj0gbGVuKHNlbGYuc3RyaW5nKToKKyAgICAgICAgaW5kZXggPSBzZWxmLmluZGV4CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNoYXIgPSBzZWxmLmRlY29kZWRfc3RyaW5nW2luZGV4XQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgIHNlbGYubmV4dCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBjaGFyID0gc2VsZi5zdHJpbmdbc2VsZi5pbmRleDpzZWxmLmluZGV4KzFdCi0gICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB0aGUgc3RyOCwgc2luY2UgaW5kZXhpbmcgcmV0dXJucyBhIGludGVnZXIKLSAgICAgICAgIyBYWFggVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGVzdF9idWdfOTI2MDc1IGluIHRlc3RfcmUucHkKLSAgICAgICAgaWYgY2hhciBhbmQgbm90IHNlbGYuaXN0ZXh0OgotICAgICAgICAgICAgY2hhciA9IGNocihjaGFyWzBdKQogICAgICAgICBpZiBjaGFyID09ICJcXCI6CisgICAgICAgICAgICBpbmRleCArPSAxCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYyA9IHNlbGYuc3RyaW5nW3NlbGYuaW5kZXggKyAxXQorICAgICAgICAgICAgICAgIGNoYXIgKz0gc2VsZi5kZWNvZGVkX3N0cmluZ1tpbmRleF0KICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGUgKGVuZCBvZiBsaW5lKSIpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5pc3RleHQ6Ci0gICAgICAgICAgICAgICAgYyA9IGNocihjKQotICAgICAgICAgICAgY2hhciA9IGNoYXIgKyBjCi0gICAgICAgIHNlbGYuaW5kZXggPSBzZWxmLmluZGV4ICsgbGVuKGNoYXIpCisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBlc2NhcGUgKGVuZCBvZiBwYXR0ZXJuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJpbmcsIGxlbihzZWxmLnN0cmluZykgLSAxKSBmcm9tIE5vbmUKKyAgICAgICAgc2VsZi5pbmRleCA9IGluZGV4ICsgMQogICAgICAgICBzZWxmLm5leHQgPSBjaGFyCi0gICAgZGVmIG1hdGNoKHNlbGYsIGNoYXIsIHNraXA9MSk6CisgICAgZGVmIG1hdGNoKHNlbGYsIGNoYXIpOgogICAgICAgICBpZiBjaGFyID09IHNlbGYubmV4dDoKLSAgICAgICAgICAgIGlmIHNraXA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX25leHQoKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIHNlbGYuX19uZXh0KCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgIHRoaXMgPSBzZWxmLm5leHQKICAgICAgICAgc2VsZi5fX25leHQoKQpAQCAtMjMyLDEwICsyNTcsMzAgQEAKICAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCiAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBkZWYgZ2V0dW50aWwoc2VsZiwgdGVybWluYXRvcik6CisgICAgICAgIHJlc3VsdCA9ICcnCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBjID0gc2VsZi5uZXh0CisgICAgICAgICAgICBzZWxmLl9fbmV4dCgpCisgICAgICAgICAgICBpZiBjIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyBncm91cCBuYW1lIikKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmVycm9yKCJtaXNzaW5nICVzLCB1bnRlcm1pbmF0ZWQgbmFtZSIgJSB0ZXJtaW5hdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHJlc3VsdCkpCisgICAgICAgICAgICBpZiBjID09IHRlcm1pbmF0b3I6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5lcnJvcigibWlzc2luZyBncm91cCBuYW1lIiwgMSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmVzdWx0ICs9IGMKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5pbmRleCwgc2VsZi5uZXh0CisgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6Ci0gICAgICAgIHNlbGYuaW5kZXgsIHNlbGYubmV4dCA9IGluZGV4CisgICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAorICAgICAgICBzZWxmLl9fbmV4dCgpCisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnLCBvZmZzZXQ9MCk6CisgICAgICAgIHJldHVybiBlcnJvcihtc2csIHNlbGYuc3RyaW5nLCBzZWxmLnRlbGwoKSAtIG9mZnNldCkKIAogIyBUaGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9ucyBhcmUgbm90IHVzZWQgaW4gdGhpcyBtb2R1bGUgYW55bW9yZSwgYnV0IHdlIGtlZXAKICMgdGhlbSBoZXJlICh3aXRoIERlcHJlY2F0aW9uV2FybmluZ3MpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KQEAgLTI3MCw3ICszMTUsNyBAQAogICAgIGlmIGNvZGU6CiAgICAgICAgIHJldHVybiBjb2RlCiAgICAgY29kZSA9IENBVEVHT1JJRVMuZ2V0KGVzY2FwZSkKLSAgICBpZiBjb2RlIGFuZCBjb2RlWzBdID09IElOOgorICAgIGlmIGNvZGUgYW5kIGNvZGVbMF0gaXMgSU46CiAgICAgICAgIHJldHVybiBjb2RlCiAgICAgdHJ5OgogICAgICAgICBjID0gZXNjYXBlWzE6Ml0KQEAgLTI3OCwzMyArMzIzLDQxIEBACiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZSAoZXhhY3RseSB0d28gZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKLSAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgIGVsaWYgYyA9PSAidSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGZvdXIgZGlnaXRzKQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg0LCBIRVhESUdJVFMpCiAgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA2OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgogICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImluY29tcGxldGUgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQogICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgaW4gT0NURElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKHVwIHRvIHRocmVlIGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgT0NURElHSVRTKQotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KSAmIDB4ZmYKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzE6XSwgOCkKKyAgICAgICAgICAgIGlmIGMgPiAwbzM3NzoKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlIDAtMG8zNzcnICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CisgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKLSAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlOiAlcyIgJSByZXByKGVzY2FwZSkpCisgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAKIGRlZiBfZXNjYXBlKHNvdXJjZSwgZXNjYXBlLCBzdGF0ZSk6CiAgICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW4gZXhwcmVzc2lvbgpAQCAtMzIwLDY5ICszNzMsNzAgQEAKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgotICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikgJiAweGZmCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbmNvbXBsZXRlIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKICAgICAgICAgZWxpZiBjID09ICJ1IiBhbmQgc291cmNlLmlzdGV4dDoKICAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCiAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDQsIEhFWERJR0lUUykKICAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDY6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgIGVsaWYgYyA9PSAiVSIgYW5kIHNvdXJjZS5pc3RleHQ6CiAgICAgICAgICAgICAjIHVuaWNvZGUgZXNjYXBlIChleGFjdGx5IGVpZ2h0IGRpZ2l0cykKICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoOCwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gMTA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW5jb21wbGV0ZSBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCiAgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZQogICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBPQ1RESUdJVFMpCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMTpdLCA4KQogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKm9yKiBkZWNpbWFsIGdyb3VwIHJlZmVyZW5jZSAoc2lnaCkKICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldCgpCiAgICAgICAgICAgICAgICAgaWYgKGVzY2FwZVsxXSBpbiBPQ1RESUdJVFMgYW5kIGVzY2FwZVsyXSBpbiBPQ1RESUdJVFMgYW5kCiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5uZXh0IGluIE9DVERJR0lUUyk6CiAgICAgICAgICAgICAgICAgICAgICMgZ290IHRocmVlIG9jdGFsIGRpZ2l0czsgdGhpcyBpcyBhbiBvY3RhbCBlc2NhcGUKLSAgICAgICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgICAgICAgICAgYyA9IGludChlc2NhcGVbMTpdLCA4KQorICAgICAgICAgICAgICAgICAgICBpZiBjID4gMG8zNzc6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UgMC0wbzM3NycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgICAgICAjIG5vdCBhbiBvY3RhbCBlc2NhcGUsIHNvIHRoaXMgaXMgYSBncm91cCByZWZlcmVuY2UKICAgICAgICAgICAgIGdyb3VwID0gaW50KGVzY2FwZVsxOl0pCiAgICAgICAgICAgICBpZiBncm91cCA8IHN0YXRlLmdyb3VwczoKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdGUuY2hlY2tncm91cChncm91cCk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJjYW5ub3QgcmVmZXIgdG8gb3BlbiBncm91cCIpCi0gICAgICAgICAgICAgICAgaWYgc3RhdGUubG9va2JlaGluZDoKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2dyb3VwIHJlZmVyZW5jZXMgaW4gbG9va2JlaGluZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fzc2VydGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdyb3VwLCBzb3VyY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdST1VQUkVGLCBncm91cAotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsIGxlbihlc2NhcGUpKQogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgorICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCi0gICAgcmFpc2UgZXJyb3IoImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcihlc2NhcGUpKQorICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogCi1kZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQ9MSk6CitkZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQ9VHJ1ZSk6CiAgICAgIyBwYXJzZSBhbiBhbHRlcm5hdGlvbjogYXxifGMKIAogICAgIGl0ZW1zID0gW10KICAgICBpdGVtc2FwcGVuZCA9IGl0ZW1zLmFwcGVuZAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCi0gICAgd2hpbGUgMToKKyAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkKKyAgICB3aGlsZSBUcnVlOgogICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSkpCi0gICAgICAgIGlmIHNvdXJjZW1hdGNoKCJ8Iik6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub3QgbmVzdGVkOgorICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goInwiKToKICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGlmIG5vdCBzb3VyY2UubmV4dCBvciBzb3VyY2VtYXRjaCgiKSIsIDApOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJwYXR0ZXJuIG5vdCBwcm9wZXJseSBjbG9zZWQiKQogCiAgICAgaWYgbGVuKGl0ZW1zKSA9PSAxOgogICAgICAgICByZXR1cm4gaXRlbXNbMF0KQEAgLTM5MSw3ICs0NDUsNyBAQAogICAgIHN1YnBhdHRlcm5hcHBlbmQgPSBzdWJwYXR0ZXJuLmFwcGVuZAogCiAgICAgIyBjaGVjayBpZiBhbGwgaXRlbXMgc2hhcmUgYSBjb21tb24gcHJlZml4Ci0gICAgd2hpbGUgMToKKyAgICB3aGlsZSBUcnVlOgogICAgICAgICBwcmVmaXggPSBOb25lCiAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgaWYgbm90IGl0ZW06CkBAIC00MTEsMTYgKzQ2NSwxMiBAQAogCiAgICAgIyBjaGVjayBpZiB0aGUgYnJhbmNoIGNhbiBiZSByZXBsYWNlZCBieSBhIGNoYXJhY3RlciBzZXQKICAgICBmb3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgaWYgbGVuKGl0ZW0pICE9IDEgb3IgaXRlbVswXVswXSAhPSBMSVRFUkFMOgorICAgICAgICBpZiBsZW4oaXRlbSkgIT0gMSBvciBpdGVtWzBdWzBdIGlzIG5vdCBMSVRFUkFMOgogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNlOgogICAgICAgICAjIHdlIGNhbiBzdG9yZSB0aGlzIGFzIGEgY2hhcmFjdGVyIHNldCBpbnN0ZWFkIG9mIGEKICAgICAgICAgIyBicmFuY2ggKHRoZSBjb21waWxlciBtYXkgb3B0aW1pemUgdGhpcyBldmVuIG1vcmUpCi0gICAgICAgIHNldCA9IFtdCi0gICAgICAgIHNldGFwcGVuZCA9IHNldC5hcHBlbmQKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICBzZXRhcHBlbmQoaXRlbVswXSkKLSAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoSU4sIHNldCkpCisgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKElOLCBbaXRlbVswXSBmb3IgaXRlbSBpbiBpdGVtc10pKQogICAgICAgICByZXR1cm4gc3VicGF0dGVybgogCiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCkBAIC00MzAsMjEgKzQ4MCwxNCBAQAogICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCiAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6CiAgICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKLSAgICAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQorICAgICAgICBpZiBzb3VyY2UubmV4dCA9PSAifCI6CisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gdHdvIGJyYW5jaGVzIikKICAgICBlbHNlOgogICAgICAgICBpdGVtX25vID0gTm9uZQotICAgIGlmIHNvdXJjZS5uZXh0IGFuZCBub3Qgc291cmNlLm1hdGNoKCIpIiwgMCk6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJwYXR0ZXJuIG5vdCBwcm9wZXJseSBjbG9zZWQiKQogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChHUk9VUFJFRl9FWElTVFMsIChjb25kZ3JvdXAsIGl0ZW1feWVzLCBpdGVtX25vKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotX1BBVFRFUk5FTkRFUlMgPSBzZXQoInwpIikKLV9BU1NFUlRDSEFSUyA9IHNldCgiPSE8IikKLV9MT09LQkVISU5EQVNTRVJUQ0hBUlMgPSBzZXQoIj0hIikKLV9SRVBFQVRDT0RFUyA9IHNldChbTUlOX1JFUEVBVCwgTUFYX1JFUEVBVF0pCi0KIGRlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSk6CiAgICAgIyBwYXJzZSBhIHNpbXBsZSBwYXR0ZXJuCiAgICAgc3VicGF0dGVybiA9IFN1YlBhdHRlcm4oc3RhdGUpCkBAIC00NTQsMzQgKzQ5NywzOCBAQAogICAgIHNvdXJjZWdldCA9IHNvdXJjZS5nZXQKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIF9sZW4gPSBsZW4KLSAgICBQQVRURVJORU5ERVJTID0gX1BBVFRFUk5FTkRFUlMKLSAgICBBU1NFUlRDSEFSUyA9IF9BU1NFUlRDSEFSUwotICAgIExPT0tCRUhJTkRBU1NFUlRDSEFSUyA9IF9MT09LQkVISU5EQVNTRVJUQ0hBUlMKLSAgICBSRVBFQVRDT0RFUyA9IF9SRVBFQVRDT0RFUworICAgIF9vcmQgPSBvcmQKKyAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCiAKLSAgICB3aGlsZSAxOgorICAgIHdoaWxlIFRydWU6CiAKLSAgICAgICAgaWYgc291cmNlLm5leHQgaW4gUEFUVEVSTkVOREVSUzoKLSAgICAgICAgICAgIGJyZWFrICMgZW5kIG9mIHN1YnBhdHRlcm4KLSAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCisgICAgICAgIHRoaXMgPSBzb3VyY2UubmV4dAogICAgICAgICBpZiB0aGlzIGlzIE5vbmU6CiAgICAgICAgICAgICBicmVhayAjIGVuZCBvZiBwYXR0ZXJuCisgICAgICAgIGlmIHRoaXMgaW4gInwpIjoKKyAgICAgICAgICAgIGJyZWFrICMgZW5kIG9mIHN1YnBhdHRlcm4KKyAgICAgICAgc291cmNlZ2V0KCkKIAotICAgICAgICBpZiBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0U6CisgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAjIHNraXAgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKICAgICAgICAgICAgIGlmIHRoaXMgaW4gV0hJVEVTUEFDRToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgdGhpcyA9PSAiIyI6Ci0gICAgICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICB0aGlzID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdGhpcyBpbiAoTm9uZSwgIlxuIik6CisgICAgICAgICAgICAgICAgICAgIGlmIHRoaXMgaXMgTm9uZSBvciB0aGlzID09ICJcbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgaWYgdGhpcyBhbmQgdGhpc1swXSBub3QgaW4gU1BFQ0lBTF9DSEFSUzoKLSAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIG9yZCh0aGlzKSkpCisgICAgICAgIGlmIHRoaXNbMF0gPT0gIlxcIjoKKyAgICAgICAgICAgIGNvZGUgPSBfZXNjYXBlKHNvdXJjZSwgdGhpcywgc3RhdGUpCisgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKGNvZGUpCisKKyAgICAgICAgZWxpZiB0aGlzIG5vdCBpbiBTUEVDSUFMX0NIQVJTOgorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTElURVJBTCwgX29yZCh0aGlzKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJbIjoKKyAgICAgICAgICAgIGhlcmUgPSBzb3VyY2UudGVsbCgpIC0gMQogICAgICAgICAgICAgIyBjaGFyYWN0ZXIgc2V0CiAgICAgICAgICAgICBzZXQgPSBbXQogICAgICAgICAgICAgc2V0YXBwZW5kID0gc2V0LmFwcGVuZApAQCAtNDkxLDM5ICs1MzgsNDIgQEAKICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKE5FR0FURSwgTm9uZSkpCiAgICAgICAgICAgICAjIGNoZWNrIHJlbWFpbmluZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICBzdGFydCA9IHNldFs6XQotICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgdGhpcyA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgaWYgdGhpcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlKQogICAgICAgICAgICAgICAgIGlmIHRoaXMgPT0gIl0iIGFuZCBzZXQgIT0gc3RhcnQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxpZiB0aGlzIGFuZCB0aGlzWzBdID09ICJcXCI6CisgICAgICAgICAgICAgICAgZWxpZiB0aGlzWzBdID09ICJcXCI6CiAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gX2NsYXNzX2VzY2FwZShzb3VyY2UsIHRoaXMpCi0gICAgICAgICAgICAgICAgZWxpZiB0aGlzOgotICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IExJVEVSQUwsIG9yZCh0aGlzKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IExJVEVSQUwsIF9vcmQodGhpcykKICAgICAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiLSIpOgogICAgICAgICAgICAgICAgICAgICAjIHBvdGVudGlhbCByYW5nZQotICAgICAgICAgICAgICAgICAgICB0aGlzID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdGhpcyA9PSAiXSI6CisgICAgICAgICAgICAgICAgICAgIHRoYXQgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgICAgICBpZiB0aGF0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGhhdCA9PSAiXSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb2RlMVswXSBpcyBJTjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMSA9IGNvZGUxWzFdWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoY29kZTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXRhcHBlbmQoKExJVEVSQUwsIG9yZCgiLSIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldGFwcGVuZCgoTElURVJBTCwgX29yZCgiLSIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgdGhpczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGlzKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IExJVEVSQUwsIG9yZCh0aGlzKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gIT0gTElURVJBTCBvciBjb2RlMlswXSAhPSBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIHJhbmdlIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvID0gY29kZTFbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gY29kZTJbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhpIDwgbG86Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgcmFuZ2UiKQotICAgICAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChSQU5HRSwgKGxvLCBoaSkpKQorICAgICAgICAgICAgICAgICAgICBpZiB0aGF0WzBdID09ICJcXCI6CisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IF9jbGFzc19lc2NhcGUoc291cmNlLCB0aGF0KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlMiA9IExJVEVSQUwsIF9vcmQodGhhdCkKKyAgICAgICAgICAgICAgICAgICAgaWYgY29kZTFbMF0gIT0gTElURVJBTCBvciBjb2RlMlswXSAhPSBMSVRFUkFMOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgcmFuZ2UgJXMtJXMiICUgKHRoaXMsIHRoYXQpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4odGhpcykgKyAxICsgbGVuKHRoYXQpKQorICAgICAgICAgICAgICAgICAgICBsbyA9IGNvZGUxWzFdCisgICAgICAgICAgICAgICAgICAgIGhpID0gY29kZTJbMV0KKyAgICAgICAgICAgICAgICAgICAgaWYgaGkgPCBsbzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJiYWQgY2hhcmFjdGVyIHJhbmdlICVzLSVzIiAlICh0aGlzLCB0aGF0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKHRoaXMpICsgMSArIGxlbih0aGF0KSkKKyAgICAgICAgICAgICAgICAgICAgc2V0YXBwZW5kKChSQU5HRSwgKGxvLCBoaSkpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdIGlzIElOOgogICAgICAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBjb2RlMVsxXVswXQpAQCAtNTM4LDggKzU4OCw5IEBACiAgICAgICAgICAgICAgICAgIyBYWFg6IDxmbD4gc2hvdWxkIGFkZCBjaGFybWFwIG9wdGltaXphdGlvbiBoZXJlCiAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoSU4sIHNldCkpCiAKLSAgICAgICAgZWxpZiB0aGlzIGFuZCB0aGlzWzBdIGluIFJFUEVBVF9DSEFSUzoKKyAgICAgICAgZWxpZiB0aGlzIGluIFJFUEVBVF9DSEFSUzoKICAgICAgICAgICAgICMgcmVwZWF0IHByZXZpb3VzIGl0ZW0KKyAgICAgICAgICAgIGhlcmUgPSBzb3VyY2UudGVsbCgpCiAgICAgICAgICAgICBpZiB0aGlzID09ICI/IjoKICAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDAsIDEKICAgICAgICAgICAgIGVsaWYgdGhpcyA9PSAiKiI6CkBAIC01NDksMjAgKzYwMCwxOSBAQAogICAgICAgICAgICAgICAgIG1pbiwgbWF4ID0gMSwgTUFYUkVQRUFUCiAgICAgICAgICAgICBlbGlmIHRoaXMgPT0gInsiOgogICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ9IjoKLSAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTElURVJBTCwgb3JkKHRoaXMpKSkKKyAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoTElURVJBTCwgX29yZCh0aGlzKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaGVyZSA9IHNvdXJjZS50ZWxsKCkKICAgICAgICAgICAgICAgICBtaW4sIG1heCA9IDAsIE1BWFJFUEVBVAogICAgICAgICAgICAgICAgIGxvID0gaGkgPSAiIgogICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKLSAgICAgICAgICAgICAgICAgICAgbG8gPSBsbyArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgICAgICAgICBsbyArPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCIsIik6CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIERJR0lUUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGhpID0gaGkgKyBzb3VyY2VnZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgaGkgKz0gc291cmNlZ2V0KCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBoaSA9IGxvCiAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ9Iik6Ci0gICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIG9yZCh0aGlzKSkpCisgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKExJVEVSQUwsIF9vcmQodGhpcykpKQogICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc2VlayhoZXJlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGxvOgpAQCAtNTc0LDE4ICs2MjQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgbWF4ID49IE1BWFJFUEVBVDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoInRoZSByZXBldGl0aW9uIG51bWJlciBpcyB0b28gbGFyZ2UiKQogICAgICAgICAgICAgICAgICAgICBpZiBtYXggPCBtaW46Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIHJlcGVhdCBpbnRlcnZhbCIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBoZXJlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibm90IHN1cHBvcnRlZCIpCisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuc3VwcG9ydGVkIHF1YW50aWZpZXIgJXIiICUgKGNoYXIsKSkKICAgICAgICAgICAgICMgZmlndXJlIG91dCB3aGljaCBpdGVtIHRvIHJlcGVhdAogICAgICAgICAgICAgaWYgc3VicGF0dGVybjoKICAgICAgICAgICAgICAgICBpdGVtID0gc3VicGF0dGVyblstMTpdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGl0ZW0gPSBOb25lCi0gICAgICAgICAgICBpZiBub3QgaXRlbSBvciAoX2xlbihpdGVtKSA9PSAxIGFuZCBpdGVtWzBdWzBdID09IEFUKToKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibm90aGluZyB0byByZXBlYXQiKQotICAgICAgICAgICAgaWYgaXRlbVswXVswXSBpbiBSRVBFQVRDT0RFUzoKLSAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigibXVsdGlwbGUgcmVwZWF0IikKKyAgICAgICAgICAgIGlmIG5vdCBpdGVtIG9yIChfbGVuKGl0ZW0pID09IDEgYW5kIGl0ZW1bMF1bMF0gaXMgQVQpOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibm90aGluZyB0byByZXBlYXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gaGVyZSArIGxlbih0aGlzKSkKKyAgICAgICAgICAgIGlmIGl0ZW1bMF1bMF0gaW4gX1JFUEVBVENPREVTOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibXVsdGlwbGUgcmVwZWF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIGhlcmUgKyBsZW4odGhpcykpCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgogICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5bLTFdID0gKE1JTl9SRVBFQVQsIChtaW4sIG1heCwgaXRlbSkpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNTk1LDE1MCArNjQ4LDE0MCBAQAogICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQU5ZLCBOb25lKSkKIAogICAgICAgICBlbGlmIHRoaXMgPT0gIigiOgotICAgICAgICAgICAgZ3JvdXAgPSAxCisgICAgICAgICAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkgLSAxCisgICAgICAgICAgICBncm91cCA9IFRydWUKICAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgICAgICBjb25kZ3JvdXAgPSBOb25lCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgotICAgICAgICAgICAgICAgIGdyb3VwID0gMAogICAgICAgICAgICAgICAgICMgb3B0aW9ucwotICAgICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCJQIik6CisgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIlAiOgogICAgICAgICAgICAgICAgICAgICAjIHB5dGhvbiBleHRlbnNpb25zCiAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCI8Iik6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIG5hbWVkIGdyb3VwOiBza2lwIGZvcndhcmQgdG8gZW5kIG9mIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiPiI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUgKyBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICBncm91cCA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiPiIpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVyIiAlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiPSIpOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lZCBiYWNrcmVmZXJlbmNlCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW50ZXJtaW5hdGVkIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIikiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lICsgY2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm1pc3NpbmcgZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gc291cmNlLmdldHVudGlsKCIpIikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGJhY2tyZWYgZ3JvdXAgbmFtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVyIiAlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdpZCA9IHN0YXRlLmdyb3VwZGljdC5nZXQobmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdpZCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGdyb3VwIG5hbWU6IHswIXJ9Ii5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcihtc2cpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZS5sb29rYmVoaW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2dyb3VwIHJlZmVyZW5jZXMgaW4gbG9va2JlaGluZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lICVyIiAlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4obmFtZSkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXRlLmNoZWNrZ3JvdXAoZ2lkKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdpZCwgc291cmNlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoR1JPVVBSRUYsIGdpZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVua25vd24gc3BlY2lmaWVyOiA/UCVzIiAlIGNoYXIpCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiOiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybiIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID9QIiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMikKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIjoiOgogICAgICAgICAgICAgICAgICAgICAjIG5vbi1jYXB0dXJpbmcgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAyCi0gICAgICAgICAgICAgICAgZWxpZiBzb3VyY2VtYXRjaCgiIyIpOgorICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgPT0gIiMiOgogICAgICAgICAgICAgICAgICAgICAjIGNvbW1lbnQKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNvdXJjZS5uZXh0IGlzIE5vbmUgb3Igc291cmNlLm5leHQgPT0gIikiOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLm5leHQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzb3VyY2VnZXQoKSA9PSAiKSI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsaWYgc291cmNlLm5leHQgaW4gQVNTRVJUQ0hBUlM6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluICI9ITwiOgogICAgICAgICAgICAgICAgICAgICAjIGxvb2thaGVhZCBhc3NlcnRpb25zCi0gICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQogICAgICAgICAgICAgICAgICAgICBkaXIgPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIjwiOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlLm5leHQgbm90IGluIExPT0tCRUhJTkRBU1NFUlRDSEFSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigic3ludGF4IGVycm9yIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpciA9IC0xICMgbG9va2JlaGluZAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gIj0hIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID88IiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDIpCisgICAgICAgICAgICAgICAgICAgICAgICBkaXIgPSAtMSAjIGxvb2tiZWhpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmdyb3VwcwogICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQogICAgICAgICAgICAgICAgICAgICBpZiBkaXIgPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZCAtPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCIpIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBzdGFydCkKICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiPSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBU1NFUlQsIChkaXIsIHApKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFTU0VSVF9OT1QsIChkaXIsIHApKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbGlmIHNvdXJjZW1hdGNoKCIoIik6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyID09ICIoIjoKICAgICAgICAgICAgICAgICAgICAgIyBjb25kaXRpb25hbCBiYWNrcmVmZXJlbmNlIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgIGNvbmRuYW1lID0gIiIKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgY29uZG5hbWUgPSBjb25kbmFtZSArIGNoYXIKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSAyCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25kbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQorICAgICAgICAgICAgICAgICAgICBjb25kbmFtZSA9IHNvdXJjZS5nZXR1bnRpbCgiKSIpCisgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQogICAgICAgICAgICAgICAgICAgICBpZiBjb25kbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRncm91cCA9IHN0YXRlLmdyb3VwZGljdC5nZXQoY29uZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KGNvbmRuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lICVyIiAlIGNvbmRuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGdyb3VwID0gaW50KGNvbmRuYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZS5sb29rYmVoaW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQotICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBjb25kbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjb25kbmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjb25kZ3JvdXA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZ3JvdXAgbnVtYmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgPj0gTUFYR1JPVVBTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoY29uZGdyb3VwLCBzb3VyY2UpCisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTOgogICAgICAgICAgICAgICAgICAgICAjIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubmV4dCBpbiBGTEFHUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmV4cGVjdGVkIGVuZCBvZiBwYXR0ZXJuIikKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyA9IHN0YXRlLmZsYWdzIHwgRkxBR1Nbc291cmNlZ2V0KCldCi0gICAgICAgICAgICBpZiBncm91cDoKLSAgICAgICAgICAgICAgICAjIHBhcnNlIGdyb3VwIGNvbnRlbnRzCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXAgPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgIyBhbm9ueW1vdXMgZ3JvdXAKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyB8PSBGTEFHU1tjaGFyXQorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICkiKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiKSI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBmbGFnIiwgbGVuKGNoYXIpKQorICAgICAgICAgICAgICAgICAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/IiArIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY2hhcikgKyAxKQorCisgICAgICAgICAgICAjIHBhcnNlIGdyb3VwIGNvbnRlbnRzCisgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gc3RhdGUub3Blbmdyb3VwKG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCi0gICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLmNsb3NlZ3JvdXAoZ3JvdXApCi0gICAgICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCisgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKGVyci5tc2csIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQorICAgICAgICAgICAgaWYgY29uZGdyb3VwOgorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoInVuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4iKQotICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiIpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCisgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwLCBwKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJeIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFULCBBVF9CRUdJTk5JTkcpKQpAQCAtNzQ2LDI1ICs3ODksMzEgQEAKICAgICAgICAgZWxpZiB0aGlzID09ICIkIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm4uYXBwZW5kKChBVCwgQVRfRU5EKSkKIAotICAgICAgICBlbGlmIHRoaXMgYW5kIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgIGNvZGUgPSBfZXNjYXBlKHNvdXJjZSwgdGhpcywgc3RhdGUpCi0gICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKGNvZGUpCi0KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIGVycm9yKCJwYXJzZXIgZXJyb3IiKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuc3VwcG9ydGVkIHNwZWNpYWwgY2hhcmFjdGVyICVyIiAlIChjaGFyLCkpCiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCiBkZWYgZml4X2ZsYWdzKHNyYywgZmxhZ3MpOgogICAgICMgQ2hlY2sgYW5kIGZpeCBmbGFncyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgcGF0dGVybiAoc3RyIG9yIGJ5dGVzKQogICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigiTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCiAgICAgICAgIGlmIG5vdCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgogICAgICAgICAgICAgZmxhZ3MgfD0gU1JFX0ZMQUdfVU5JQ09ERQogICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBVTklDT0RFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIGVsc2U6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQorICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSBhbmQgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQVNDSUkgYW5kIExPQ0FMRSBmbGFncyBhcmUgaW5jb21wYXRpYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtNzgwLDExICs4MjksOSBAQAogICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgMCkKICAgICBwLnBhdHRlcm4uZmxhZ3MgPSBmaXhfZmxhZ3Moc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCiAKLSAgICB0YWlsID0gc291cmNlLmdldCgpCi0gICAgaWYgdGFpbCA9PSAiKSI6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKLSAgICBlbGlmIHRhaWw6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBjaGFyYWN0ZXJzIGF0IGVuZCBvZiByZWd1bGFyIGV4cHJlc3Npb24iKQorICAgIGlmIHNvdXJjZS5uZXh0IGlzIG5vdCBOb25lOgorICAgICAgICBhc3NlcnQgc291cmNlLm5leHQgPT0gIikiCisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCiAKICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQpAQCAtODExLDYgKzg1OCw3IEBACiAgICAgICAgICAgICBkZWwgbGl0ZXJhbFs6XQogICAgICAgICBncm91cHMuYXBwZW5kKChsZW4obGl0ZXJhbHMpLCBpbmRleCkpCiAgICAgICAgIGxpdGVyYWxzLmFwcGVuZChOb25lKQorICAgIGdyb3VwaW5kZXggPSBwYXR0ZXJuLmdyb3VwaW5kZXgKICAgICB3aGlsZSBUcnVlOgogICAgICAgICB0aGlzID0gc2dldCgpCiAgICAgICAgIGlmIHRoaXMgaXMgTm9uZToKQEAgLTgyMCwyOCArODY4LDI1IEBACiAgICAgICAgICAgICBjID0gdGhpc1sxXQogICAgICAgICAgICAgaWYgYyA9PSAiZyI6CiAgICAgICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgICAgICAgICAgaWYgcy5tYXRjaCgiPCIpOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bnRlcm1pbmF0ZWQgZ3JvdXAgbmFtZSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICI+IjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSBjaGFyCi0gICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJtaXNzaW5nIGdyb3VwIG5hbWUiKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpbnQobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoIm5lZ2F0aXZlIGdyb3VwIG51bWJlciIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSIpCisgICAgICAgICAgICAgICAgaWYgbm90IHMubWF0Y2goIjwiKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigibWlzc2luZyA8IikKKyAgICAgICAgICAgICAgICBuYW1lID0gcy5nZXR1bnRpbCgiPiIpCisgICAgICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwYXR0ZXJuLmdyb3VwaW5kZXhbbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gZ3JvdXBpbmRleFtuYW1lXQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBncm91cCBuYW1lOiB7MCFyfSIuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoInVua25vd24gZ3JvdXAgbmFtZSAlciIgJSBuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA8IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gTUFYR1JPVVBTOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4KQogICAgICAgICAgICAgZWxpZiBjID09ICIwIjoKICAgICAgICAgICAgICAgICBpZiBzLm5leHQgaW4gT0NURElHSVRTOgpAQCAtODU3LDE0ICs5MDIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMubmV4dCBpbiBPQ1RESUdJVFMpOgogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyArPSBzZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlzb2N0YWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihpbnQodGhpc1sxOl0sIDgpICYgMHhmZikpCisgICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHRoaXNbMTpdLCA4KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYyA+IDBvMzc3OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoJ29jdGFsIGVzY2FwZSB2YWx1ZSAlcyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIHRoaXMsIGxlbih0aGlzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQoY2hyKGMpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBpc29jdGFsOgogICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgPSBjaHIoRVNDQVBFU1t0aGlzXVsxXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCiAgICAgICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQpAQCAtODc4LDE0ICs5MzAsMTIgQEAKIAogZGVmIGV4cGFuZF90ZW1wbGF0ZSh0ZW1wbGF0ZSwgbWF0Y2gpOgogICAgIGcgPSBtYXRjaC5ncm91cAotICAgIHNlcCA9IG1hdGNoLnN0cmluZ1s6MF0KKyAgICBlbXB0eSA9IG1hdGNoLnN0cmluZ1s6MF0KICAgICBncm91cHMsIGxpdGVyYWxzID0gdGVtcGxhdGUKICAgICBsaXRlcmFscyA9IGxpdGVyYWxzWzpdCiAgICAgdHJ5OgogICAgICAgICBmb3IgaW5kZXgsIGdyb3VwIGluIGdyb3VwczoKLSAgICAgICAgICAgIGxpdGVyYWxzW2luZGV4XSA9IHMgPSBnKGdyb3VwKQotICAgICAgICAgICAgaWYgcyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJ1bm1hdGNoZWQgZ3JvdXAiKQorICAgICAgICAgICAgbGl0ZXJhbHNbaW5kZXhdID0gZyhncm91cCkgb3IgZW1wdHkKICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgcmFpc2UgZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIikKLSAgICByZXR1cm4gc2VwLmpvaW4obGl0ZXJhbHMpCisgICAgcmV0dXJuIGVtcHR5LmpvaW4obGl0ZXJhbHMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlYzQyZTM4Li5hYjdhNDliIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTg3LDE3ICs4NywxOCBAQAogQUxFUlRfREVTQ1JJUFRJT05fVU5LTk9XTl9QU0tfSURFTlRJVFkKICIiIgogCitpbXBvcnQgaXBhZGRyZXNzCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bQogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0Citmcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAogICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCkBAIC0xMTksMzAgKzEyMCwyMyBAQAogX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQogX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQogX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnUFJPVE9DT0xfJykKIF9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKLWZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4KK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCiAKIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorX0ludEVudW0uX2NvbnZlcnQoCisgICAgICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpLAorICAgICAgICBzb3VyY2U9X3NzbCkKIAotX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBnbG9iYWxzKCkuaXRlbXMoKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpfQorX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CisKIHRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1NTTHYyCiAgICAgX1NTTHYyX0lGX0VYSVNUUyA9IFBST1RPQ09MX1NTTHYyCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgTmFtZUVycm9yOgogICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBOb25lCi1lbHNlOgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9TU0x2Ml0gPSAiU1NMdjIiCi0KLXRyeToKLSAgICBmcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1RMU3YxXzEsIFBST1RPQ09MX1RMU3YxXzIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8xXSA9ICJUTFN2MS4xIgotICAgIF9QUk9UT0NPTF9OQU1FU1tQUk9UT0NPTF9UTFN2MV8yXSA9ICJUTFN2MS4yIgogCiBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydGlmaWNhdGVzLCBlbnVtX2NybHMKQEAgLTI0Niw2ICsyNDAsMTcgQEAKICAgICByZXR1cm4gcGF0Lm1hdGNoKGhvc3RuYW1lKQogCiAKK2RlZiBfaXBhZGRyZXNzX21hdGNoKGlwbmFtZSwgaG9zdF9pcCk6CisgICAgIiIiRXhhY3QgbWF0Y2hpbmcgb2YgSVAgYWRkcmVzc2VzLgorCisgICAgUkZDIDYxMjUgZXhwbGljaXRseSBkb2Vzbid0IGRlZmluZSBhbiBhbGdvcml0aG0gZm9yIHRoaXMKKyAgICAoc2VjdGlvbiAxLjcuMiAtICJPdXQgb2YgU2NvcGUiKS4KKyAgICAiIiIKKyAgICAjIE9wZW5TU0wgbWF5IGFkZCBhIHRyYWlsaW5nIG5ld2xpbmUgdG8gYSBzdWJqZWN0QWx0TmFtZSdzIElQIGFkZHJlc3MKKyAgICBpcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGlwbmFtZS5yc3RyaXAoKSkKKyAgICByZXR1cm4gaXAgPT0gaG9zdF9pcAorCisKIGRlZiBtYXRjaF9ob3N0bmFtZShjZXJ0LCBob3N0bmFtZSk6CiAgICAgIiIiVmVyaWZ5IHRoYXQgKmNlcnQqIChpbiBkZWNvZGVkIGZvcm1hdCBhcyByZXR1cm5lZCBieQogICAgIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpKSBtYXRjaGVzIHRoZSAqaG9zdG5hbWUqLiAgUkZDIDI4MTggYW5kIFJGQyA2MTI1CkBAIC0yNTgsMTEgKzI2MywyMCBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJlbXB0eSBvciBubyBjZXJ0aWZpY2F0ZSwgbWF0Y2hfaG9zdG5hbWUgbmVlZHMgYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlNTTCBzb2NrZXQgb3IgU1NMIGNvbnRleHQgd2l0aCBlaXRoZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJDRVJUX09QVElPTkFMIG9yIENFUlRfUkVRVUlSRUQiKQorICAgIHRyeToKKyAgICAgICAgaG9zdF9pcCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKGhvc3RuYW1lKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAjIE5vdCBhbiBJUCBhZGRyZXNzIChjb21tb24gY2FzZSkKKyAgICAgICAgaG9zdF9pcCA9IE5vbmUKICAgICBkbnNuYW1lcyA9IFtdCiAgICAgc2FuID0gY2VydC5nZXQoJ3N1YmplY3RBbHROYW1lJywgKCkpCiAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2FuOgogICAgICAgICBpZiBrZXkgPT0gJ0ROUyc6Ci0gICAgICAgICAgICBpZiBfZG5zbmFtZV9tYXRjaCh2YWx1ZSwgaG9zdG5hbWUpOgorICAgICAgICAgICAgaWYgaG9zdF9pcCBpcyBOb25lIGFuZCBfZG5zbmFtZV9tYXRjaCh2YWx1ZSwgaG9zdG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZG5zbmFtZXMuYXBwZW5kKHZhbHVlKQorICAgICAgICBlbGlmIGtleSA9PSAnSVAgQWRkcmVzcyc6CisgICAgICAgICAgICBpZiBob3N0X2lwIGlzIG5vdCBOb25lIGFuZCBfaXBhZGRyZXNzX21hdGNoKHZhbHVlLCBob3N0X2lwKToKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIGRuc25hbWVzLmFwcGVuZCh2YWx1ZSkKICAgICBpZiBub3QgZG5zbmFtZXM6CkBAIC0zNjEsNiArMzc1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQogCisgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgc3Nsb2JqID0gc2VsZi5fd3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSkKKyAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmopCisKICAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CiAgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGZvciBwcm90b2NvbCBpbiBucG5fcHJvdG9jb2xzOgpAQCAtMzcyLDYgKzM5MiwxNyBAQAogCiAgICAgICAgIHNlbGYuX3NldF9ucG5fcHJvdG9jb2xzKHByb3RvcykKIAorICAgIGRlZiBzZXRfYWxwbl9wcm90b2NvbHMoc2VsZiwgYWxwbl9wcm90b2NvbHMpOgorICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQorICAgICAgICBmb3IgcHJvdG9jb2wgaW4gYWxwbl9wcm90b2NvbHM6CisgICAgICAgICAgICBiID0gYnl0ZXMocHJvdG9jb2wsICdhc2NpaScpCisgICAgICAgICAgICBpZiBsZW4oYikgPT0gMCBvciBsZW4oYikgPiAyNTU6CisgICAgICAgICAgICAgICAgcmFpc2UgU1NMRXJyb3IoJ0FMUE4gcHJvdG9jb2xzIG11c3QgYmUgMSB0byAyNTUgaW4gbGVuZ3RoJykKKyAgICAgICAgICAgIHByb3Rvcy5hcHBlbmQobGVuKGIpKQorICAgICAgICAgICAgcHJvdG9zLmV4dGVuZChiKQorCisgICAgICAgIHNlbGYuX3NldF9hbHBuX3Byb3RvY29scyhwcm90b3MpCisKICAgICBkZWYgX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzZWxmLCBzdG9yZW5hbWUsIHB1cnBvc2UpOgogICAgICAgICBjZXJ0cyA9IGJ5dGVhcnJheSgpCiAgICAgICAgIGZvciBjZXJ0LCBlbmNvZGluZywgdHJ1c3QgaW4gZW51bV9jZXJ0aWZpY2F0ZXMoc3RvcmVuYW1lKToKQEAgLTQ4OCw2ICs1MTksMTQxIEBACiBfY3JlYXRlX3N0ZGxpYl9jb250ZXh0ID0gX2NyZWF0ZV91bnZlcmlmaWVkX2NvbnRleHQKIAogCitjbGFzcyBTU0xPYmplY3Q6CisgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSBvbiB0b3Agb2YgYSBsb3ctbGV2ZWwgU1NMIG9iamVjdCBhcworICAgIGltcGxlbWVudGVkIGJ5IE9wZW5TU0wuIFRoaXMgb2JqZWN0IGNhcHR1cmVzIHRoZSBzdGF0ZSBvZiBhbiBTU0wgY29ubmVjdGlvbgorICAgIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueSBuZXR3b3JrIElPIGl0c2VsZi4gSU8gbmVlZHMgdG8gYmUgcGVyZm9ybWVkCisgICAgdGhyb3VnaCBzZXBhcmF0ZSAiQklPIiBvYmplY3RzIHdoaWNoIGFyZSBPcGVuU1NMJ3MgSU8gYWJzdHJhY3Rpb24gbGF5ZXIuCisKKyAgICBUaGlzIGNsYXNzIGRvZXMgbm90IGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3IuIEluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkKKyAgICBgYFNTTENvbnRleHQud3JhcF9iaW9gYC4gVGhpcyBjbGFzcyBpcyB0eXBpY2FsbHkgdXNlZCBieSBmcmFtZXdvcmsgYXV0aG9ycworICAgIHRoYXQgd2FudCB0byBpbXBsZW1lbnQgYXN5bmNocm9ub3VzIElPIGZvciBTU0wgdGhyb3VnaCBtZW1vcnkgYnVmZmVycy4KKworICAgIFdoZW4gY29tcGFyZWQgdG8gYGBTU0xTb2NrZXRgYCwgdGhpcyBvYmplY3QgbGFja3MgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKKworICAgICAqIEFueSBmb3JtIG9mIG5ldHdvcmsgSU8gaW5jbHVnaW5nIG1ldGhvZHMgc3VjaCBhcyBgYHJlY3ZgYCBhbmQgYGBzZW5kYGAuCisgICAgICogVGhlIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBhbmQgYGBzdXBwcmVzc19yYWdnZWRfZW9mc2BgIG1hY2hpbmVyeS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUpOgorICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKKyAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKKyAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRleHQoc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xDb250ZXh0IHRoYXQgaXMgY3VycmVudGx5IGluIHVzZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jb250ZXh0CisKKyAgICBAY29udGV4dC5zZXR0ZXIKKyAgICBkZWYgY29udGV4dChzZWxmLCBjdHgpOgorICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgorICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXJ2ZXJfaG9zdG5hbWUoc2VsZik6CisgICAgICAgICIiIlRoZSBjdXJyZW50bHkgc2V0IHNlcnZlciBob3N0bmFtZSAoZm9yIFNOSSksIG9yIGBgTm9uZWBgIGlmIG5vCisgICAgICAgIHNlcnZlciBob3N0YW1lIGlzIHNldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXJ2ZXJfaG9zdG5hbWUKKworICAgIGRlZiByZWFkKHNlbGYsIGxlbj0wLCBidWZmZXI9Tm9uZSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gJ2xlbicgYnl0ZXMgZnJvbSB0aGUgU1NMIG9iamVjdCBhbmQgcmV0dXJuIHRoZW0uCisKKyAgICAgICAgSWYgJ2J1ZmZlcicgaXMgcHJvdmlkZWQsIHJlYWQgaW50byB0aGlzIGJ1ZmZlciBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgICAgYnl0ZXMgcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4sIGJ1ZmZlcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4gb3IgMTAyNCkKKyAgICAgICAgcmV0dXJuIHYKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiV3JpdGUgJ2RhdGEnIHRvIHRoZSBTU0wgb2JqZWN0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcworICAgICAgICB3cml0dGVuLgorCisgICAgICAgIFRoZSAnZGF0YScgYXJndW1lbnQgbXVzdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQorCisgICAgZGVmIGdldHBlZXJjZXJ0KHNlbGYsIGJpbmFyeV9mb3JtPUZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJucyBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhIGluIHRoZSBjZXJ0aWZpY2F0ZSBwcm92aWRlZAorICAgICAgICBieSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBTU0wgY2hhbm5lbC4KKworICAgICAgICBSZXR1cm4gTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHt9IGlmIGEgY2VydGlmaWNhdGUgd2FzCisgICAgICAgIHByb3ZpZGVkLCBidXQgbm90IHZhbGlkYXRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoucGVlcl9jZXJ0aWZpY2F0ZShiaW5hcnlfZm9ybSkKKworICAgIGRlZiBzZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIE5QTiBwcm90b2NvbCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgICAgICAgaWYgYSBuZXh0IHByb3RvY29sIHdhcyBub3QgbmVnb3RpYXRlZCBvciBpZiBOUE4gaXMgbm90IHN1cHBvcnRlZCBieSBvbmUKKyAgICAgICAgb2YgdGhlIHBlZXJzLiIiIgorICAgICAgICBpZiBfc3NsLkhBU19OUE46CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCisKKyAgICBkZWYgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgQUxQTiBwcm90b2NvbCBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAKKyAgICAgICAgaWYgYSBuZXh0IHByb3RvY29sIHdhcyBub3QgbmVnb3RpYXRlZCBvciBpZiBBTFBOIGlzIG5vdCBzdXBwb3J0ZWQgYnkgb25lCisgICAgICAgIG9mIHRoZSBwZWVycy4iIiIKKyAgICAgICAgaWYgX3NzbC5IQVNfQUxQTjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKKyAgICBkZWYgY2lwaGVyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIgYXMgYSAzLXR1cGxlIGBgKG5hbWUsCisgICAgICAgIHNzbF92ZXJzaW9uLCBzZWNyZXRfYml0cylgYC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jaXBoZXIoKQorCisgICAgZGVmIHNoYXJlZF9jaXBoZXJzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNpcGhlcnMgc2hhcmVkIGJ5IHRoZSBjbGllbnQgZHVyaW5nIHRoZSBoYW5kc2hha2Ugb3IKKyAgICAgICAgTm9uZSBpZiB0aGlzIGlzIG5vdCBhIHZhbGlkIHNlcnZlciBjb25uZWN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zaGFyZWRfY2lwaGVycygpCisKKyAgICBkZWYgY29tcHJlc3Npb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBjb21wcmVzc2lvbiBhbGdvcml0aG0gaW4gdXNlLCBvciBgYE5vbmVgYCBpZgorICAgICAgICBjb21wcmVzc2lvbiB3YXMgbm90IG5lZ290aWF0ZWQgb3Igbm90IHN1cHBvcnRlZCBieSBvbmUgb2YgdGhlIHBlZXJzLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNvbXByZXNzaW9uKCkKKworICAgIGRlZiBwZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSByZWFkIGltbWVkaWF0ZWx5LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlbmRpbmcoKQorCisgICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiU3RhcnQgdGhlIFNTTC9UTFMgaGFuZHNoYWtlLiIiIgorICAgICAgICBzZWxmLl9zc2xvYmouZG9faGFuZHNoYWtlKCkKKyAgICAgICAgaWYgc2VsZi5jb250ZXh0LmNoZWNrX2hvc3RuYW1lOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNoZWNrX2hvc3RuYW1lIG5lZWRzIHNlcnZlcl9ob3N0bmFtZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQiKQorICAgICAgICAgICAgbWF0Y2hfaG9zdG5hbWUoc2VsZi5nZXRwZWVyY2VydCgpLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKKworICAgIGRlZiB1bndyYXAoc2VsZik6CisgICAgICAgICIiIlN0YXJ0IHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNodXRkb3duKCkKKworICAgIGRlZiBnZXRfY2hhbm5lbF9iaW5kaW5nKHNlbGYsIGNiX3R5cGU9InRscy11bmlxdWUiKToKKyAgICAgICAgIiIiR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24uICBSYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIHRoZSByZXF1ZXN0ZWQgYGNiX3R5cGVgIGlzIG5vdCBzdXBwb3J0ZWQuICBSZXR1cm4gYnl0ZXMgb2YgdGhlIGRhdGEKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgZGF0YSBpcyBub3QgYXZhaWxhYmxlIChlLmcuIGJlZm9yZSB0aGUgaGFuZHNoYWtlKS4iIiIKKyAgICAgICAgaWYgY2JfdHlwZSBub3QgaW4gQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5zdXBwb3J0ZWQgY2hhbm5lbCBiaW5kaW5nIHR5cGUiKQorICAgICAgICBpZiBjYl90eXBlICE9ICJ0bHMtdW5pcXVlIjoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswfSBjaGFubmVsIGJpbmRpbmcgdHlwZSBub3QgaW1wbGVtZW50ZWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChjYl90eXBlKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai50bHNfdW5pcXVlX2NiKCkKKworICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHByb3RvY29sIHZlcnNpb24gdXNlZCBieSB0aGUKKyAgICAgICAgY3VycmVudCBTU0wgY2hhbm5lbC4gIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudmVyc2lvbigpCisKKwogY2xhc3MgU1NMU29ja2V0KHNvY2tldCk6CiAgICAgIiIiVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc3VidHlwZSBvZiBzb2NrZXQuc29ja2V0IHRoYXQgd3JhcHMKICAgICB0aGUgdW5kZXJseWluZyBPUyBzb2NrZXQgaW4gYW4gU1NMIGNvbnRleHQgd2hlbiBuZWNlc3NhcnksIGFuZApAQCAtNTcwLDggKzczNiw5IEBACiAgICAgICAgIGlmIGNvbm5lY3RlZDoKICAgICAgICAgICAgICMgY3JlYXRlIHRoZSBTU0wgb2JqZWN0CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQogICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDAuMDoKQEAgLTYxNiwxMSArNzgzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlJlYWQgb24gY2xvc2VkIG9yIHVud3JhcHBlZCBTU0wgc29ja2V0LiIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGJ1ZmZlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHYgPSBzZWxmLl9zc2xvYmoucmVhZChsZW4gb3IgMTAyNCkKLSAgICAgICAgICAgIHJldHVybiB2CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnJlYWQobGVuLCBidWZmZXIpCiAgICAgICAgIGV4Y2VwdCBTU0xFcnJvciBhcyB4OgogICAgICAgICAgICAgaWYgeC5hcmdzWzBdID09IFNTTF9FUlJPUl9FT0YgYW5kIHNlbGYuc3VwcHJlc3NfcmFnZ2VkX2VvZnM6CiAgICAgICAgICAgICAgICAgaWYgYnVmZmVyIGlzIG5vdCBOb25lOgpAQCAtNjQ3LDcgKzgxMCw3IEBACiAKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja19jb25uZWN0ZWQoKQotICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnBlZXJfY2VydGlmaWNhdGUoYmluYXJ5X2Zvcm0pCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouZ2V0cGVlcmNlcnQoYmluYXJ5X2Zvcm0pCiAKICAgICBkZWYgc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCkBAIC02NTYsNiArODE5LDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpCiAKKyAgICBkZWYgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqIG9yIG5vdCBfc3NsLkhBU19BTFBOOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpCisKICAgICBkZWYgY2lwaGVyKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC02NjMsNiArODMzLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLmNpcGhlcigpCiAKKyAgICBkZWYgc2hhcmVkX2NpcGhlcnMoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKKyAgICAgICAgaWYgbm90IHNlbGYuX3NzbG9iajoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2hhcmVkX2NpcGhlcnMoKQorCiAgICAgZGVmIGNvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CkBAIC02NzcsMTcgKzg1Myw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAgICAgIm5vbi16ZXJvIGZsYWdzIG5vdCBhbGxvd2VkIGluIGNhbGxzIHRvIHNlbmQoKSBvbiAlcyIgJQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB2ID0gc2VsZi5fc3Nsb2JqLndyaXRlKGRhdGEpCi0gICAgICAgICAgICBleGNlcHQgU1NMRXJyb3IgYXMgeDoKLSAgICAgICAgICAgICAgICBpZiB4LmFyZ3NbMF0gPT0gU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgICAgICBlbGlmIHguYXJnc1swXSA9PSBTU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gdgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai53cml0ZShkYXRhKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5zZW5kKHNlbGYsIGRhdGEsIGZsYWdzKQogCkBAIC03MjMsNiArODg5LDE2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKKyAgICBkZWYgc2VuZGZpbGUoc2VsZiwgZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpOgorICAgICAgICAiIiJTZW5kIGEgZmlsZSwgcG9zc2libHkgYnkgdXNpbmcgb3Muc2VuZGZpbGUoKSBpZiB0aGlzIGlzIGEKKyAgICAgICAgY2xlYXItdGV4dCBzb2NrZXQuICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBzZW50LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CisgICAgICAgICAgICAjIG9zLnNlbmRmaWxlKCkgd29ya3Mgd2l0aCBwbGFpbiBzb2NrZXRzIG9ubHkKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLnNlbmRmaWxlKGZpbGUsIG9mZnNldCwgY291bnQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2VuZGZpbGVfdXNlX3NlbmQoZmlsZSwgb2Zmc2V0LCBjb3VudCkKKwogICAgIGRlZiByZWN2KHNlbGYsIGJ1Zmxlbj0xMDI0LCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC03ODcsNyArOTYzLDcgQEAKIAogICAgIGRlZiB1bndyYXAoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKLSAgICAgICAgICAgIHMgPSBzZWxmLl9zc2xvYmouc2h1dGRvd24oKQorICAgICAgICAgICAgcyA9IHNlbGYuX3NzbG9iai51bndyYXAoKQogICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgZWxzZToKQEAgLTgwOCwxMiArOTg0LDYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2V0dGltZW91dCh0aW1lb3V0KQogCi0gICAgICAgIGlmIHNlbGYuY29udGV4dC5jaGVja19ob3N0bmFtZToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9ob3N0bmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSBuZWVkcyBzZXJ2ZXJfaG9zdG5hbWUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IikKLSAgICAgICAgICAgIG1hdGNoX2hvc3RuYW1lKHNlbGYuZ2V0cGVlcmNlcnQoKSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0KICAgICBkZWYgX3JlYWxfY29ubmVjdChzZWxmLCBhZGRyLCBjb25uZWN0X2V4KToKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfc2lkZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIpCkBAIC04MjEsNyArOTkxLDggQEAKICAgICAgICAgIyBjb25uZWN0ZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGNhbGwuICBXZSBjb25uZWN0IGl0LCB0aGVuIHdyYXAgaXQuCiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKLSAgICAgICAgc2VsZi5fc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCisgICAgICAgIHNzbG9iaiA9IHNlbGYuY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgRmFsc2UsIHNlbGYuc2VydmVyX2hvc3RuYW1lKQorICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBjb25uZWN0X2V4OgogICAgICAgICAgICAgICAgIHJjID0gc29ja2V0LmNvbm5lY3RfZXgoc2VsZiwgYWRkcikKQEAgLTg2NCwxNSArMTAzNSwxOCBAQAogICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCiAgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuCiAgICAgICAgICIiIgotICAgICAgICBpZiBjYl90eXBlIG5vdCBpbiBDSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSIpCi0gICAgICAgIGlmIGNiX3R5cGUgIT0gInRscy11bmlxdWUiOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9IGNoYW5uZWwgYmluZGluZyB0eXBlIG5vdCBpbXBsZW1lbnRlZCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX3R5cGUpKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZyhjYl90eXBlKQorCisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHByb3RvY29sIHZlcnNpb24gdXNlZCBieSB0aGUKKyAgICAgICAgY3VycmVudCBTU0wgY2hhbm5lbCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBlc3RhYmxpc2hlZCBjaGFubmVsLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnZlcnNpb24oKQogCiAKIGRlZiB3cmFwX3NvY2tldChzb2NrLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsCkBAIC04OTIsMTIgKzEwNjYsMzQgQEAKICMgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucwogCiBkZWYgY2VydF90aW1lX3RvX3NlY29uZHMoY2VydF90aW1lKToKLSAgICAiIiJUYWtlcyBhIGRhdGUtdGltZSBzdHJpbmcgaW4gc3RhbmRhcmQgQVNOMV9wcmludCBmb3JtCi0gICAgKCJNT04gREFZIDI0SE9VUjpNSU5VVEU6U0VDIFlFQVIgVElNRVpPTkUiKSBhbmQgcmV0dXJuCi0gICAgYSBQeXRob24gdGltZSB2YWx1ZSBpbiBzZWNvbmRzIHBhc3QgdGhlIGVwb2NoLiIiIgorICAgICIiIlJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCwgZ2l2ZW4gdGhlIHRpbWVzdHJpbmcKKyAgICByZXByZXNlbnRpbmcgdGhlICJub3RCZWZvcmUiIG9yICJub3RBZnRlciIgZGF0ZSBmcm9tIGEgY2VydGlmaWNhdGUKKyAgICBpbiBgYCIlYiAlZCAlSDolTTolUyAlWSAlWiJgYCBzdHJwdGltZSBmb3JtYXQgKEMgbG9jYWxlKS4KIAotICAgIGltcG9ydCB0aW1lCi0gICAgcmV0dXJuIHRpbWUubWt0aW1lKHRpbWUuc3RycHRpbWUoY2VydF90aW1lLCAiJWIgJWQgJUg6JU06JVMgJVkgR01UIikpCisgICAgIm5vdEJlZm9yZSIgb3IgIm5vdEFmdGVyIiBkYXRlcyBtdXN0IHVzZSBVVEMgKFJGQyA1MjgwKS4KKworICAgIE1vbnRoIGlzIG9uZSBvZjogSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMKKyAgICBVVEMgc2hvdWxkIGJlIHNwZWNpZmllZCBhcyBHTVQgKHNlZSBBU04xX1RJTUVfcHJpbnQoKSkKKyAgICAiIiIKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHN0cnB0aW1lCisgICAgZnJvbSBjYWxlbmRhciBpbXBvcnQgdGltZWdtCisKKyAgICBtb250aHMgPSAoCisgICAgICAgICJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLAorICAgICAgICAiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIgorICAgICkKKyAgICB0aW1lX2Zvcm1hdCA9ICcgJWQgJUg6JU06JVMgJVkgR01UJyAjIE5PVEU6IG5vIG1vbnRoLCBmaXhlZCBHTVQKKyAgICB0cnk6CisgICAgICAgIG1vbnRoX251bWJlciA9IG1vbnRocy5pbmRleChjZXJ0X3RpbWVbOjNdLnRpdGxlKCkpICsgMQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd0aW1lIGRhdGEgJXIgZG9lcyBub3QgbWF0Y2ggJworICAgICAgICAgICAgICAgICAgICAgICAgICdmb3JtYXQgIiUlYiVzIicgJSAoY2VydF90aW1lLCB0aW1lX2Zvcm1hdCkpCisgICAgZWxzZToKKyAgICAgICAgIyBmb3VuZCB2YWxpZCBtb250aAorICAgICAgICB0dCA9IHN0cnB0aW1lKGNlcnRfdGltZVszOl0sIHRpbWVfZm9ybWF0KQorICAgICAgICAjIHJldHVybiBhbiBpbnRlZ2VyLCB0aGUgcHJldmlvdXMgbWt0aW1lKCktYmFzZWQgaW1wbGVtZW50YXRpb24KKyAgICAgICAgIyByZXR1cm5lZCBhIGZsb2F0IChmcmFjdGlvbmFsIHNlY29uZHMgYXJlIGFsd2F5cyB6ZXJvIGhlcmUpLgorICAgICAgICByZXR1cm4gdGltZWdtKCh0dFswXSwgbW9udGhfbnVtYmVyKSArIHR0WzI6Nl0pCiAKIFBFTV9IRUFERVIgPSAiLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tIgogUEVNX0ZPT1RFUiA9ICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIgpkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCAzZWVjYzNlLi40NjgzN2MwIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTQ4LDYgKzE0OCwyOSBAQAogICAgICAgICAgICAgcGVybS5hcHBlbmQoIi0iKQogICAgIHJldHVybiAiIi5qb2luKHBlcm0pCiAKKworIyBXaW5kb3dzIEZJTEVfQVRUUklCVVRFIGNvbnN0YW50cyBmb3IgaW50ZXJwcmV0aW5nIG9zLnN0YXQoKSdzCisjICJzdF9maWxlX2F0dHJpYnV0ZXMiIG1lbWJlcgorCitGSUxFX0FUVFJJQlVURV9BUkNISVZFID0gMzIKK0ZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQgPSAyMDQ4CitGSUxFX0FUVFJJQlVURV9ERVZJQ0UgPSA2NAorRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZID0gMTYKK0ZJTEVfQVRUUklCVVRFX0VOQ1JZUFRFRCA9IDE2Mzg0CitGSUxFX0FUVFJJQlVURV9ISURERU4gPSAyCitGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNID0gMzI3NjgKK0ZJTEVfQVRUUklCVVRFX05PUk1BTCA9IDEyOAorRklMRV9BVFRSSUJVVEVfTk9UX0NPTlRFTlRfSU5ERVhFRCA9IDgxOTIKK0ZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEgPSAxMzEwNzIKK0ZJTEVfQVRUUklCVVRFX09GRkxJTkUgPSA0MDk2CitGSUxFX0FUVFJJQlVURV9SRUFET05MWSA9IDEKK0ZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQgPSAxMDI0CitGSUxFX0FUVFJJQlVURV9TUEFSU0VfRklMRSA9IDUxMgorRklMRV9BVFRSSUJVVEVfU1lTVEVNID0gNAorRklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZID0gMjU2CitGSUxFX0FUVFJJQlVURV9WSVJUVUFMID0gNjU1MzYKKworCiAjIElmIGF2YWlsYWJsZSwgdXNlIEMgaW1wbGVtZW50YXRpb24KIHRyeToKICAgICBmcm9tIF9zdGF0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9MaWIvc3RhdGlzdGljcy5weSBiL0xpYi9zdGF0aXN0aWNzLnB5CmluZGV4IDI1YTI2ZDQuLjM5NzJlZDIgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0aXN0aWNzLnB5CisrKyBiL0xpYi9zdGF0aXN0aWNzLnB5CkBAIC0xNTAsNyArMTUwLDcgQEAKICAgICAjIFdlIGZhaWwgYXMgc29vbiBhcyB3ZSByZWFjaCBhIHZhbHVlIHRoYXQgaXMgbm90IGFuIGludCBvciB0aGUgdHlwZSBvZgogICAgICMgdGhlIGZpcnN0IHZhbHVlIHdoaWNoIGlzIG5vdCBhbiBpbnQuIEUuZy4gX3N1bShbaW50LCBpbnQsIGZsb2F0LCBpbnRdKQogICAgICMgaXMgb2theSwgYnV0IHN1bShbaW50LCBpbnQsIGZsb2F0LCBGcmFjdGlvbl0pIGlzIG5vdC4KLSAgICBhbGxvd2VkX3R5cGVzID0gc2V0KFtpbnQsIHR5cGUoc3RhcnQpXSkKKyAgICBhbGxvd2VkX3R5cGVzID0ge2ludCwgdHlwZShzdGFydCl9CiAgICAgbiwgZCA9IF9leGFjdF9yYXRpbyhzdGFydCkKICAgICBwYXJ0aWFscyA9IHtkOiBufSAgIyBtYXAge2Rlbm9taW5hdG9yOiBzdW0gb2YgbnVtZXJhdG9yc30KICAgICAjIE1pY3JvLW9wdGltaXphdGlvbnMuCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgYXNzZXJ0IGFsbG93ZWRfdHlwZXMucG9wKCkgaXMgaW50CiAgICAgICAgIFQgPSBpbnQKICAgICBlbHNlOgotICAgICAgICBUID0gKGFsbG93ZWRfdHlwZXMgLSBzZXQoW2ludF0pKS5wb3AoKQorICAgICAgICBUID0gKGFsbG93ZWRfdHlwZXMgLSB7aW50fSkucG9wKCkKICAgICBpZiBOb25lIGluIHBhcnRpYWxzOgogICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhULCAoZmxvYXQsIERlY2ltYWwpKQogICAgICAgICBhc3NlcnQgbm90IG1hdGguaXNmaW5pdGUocGFydGlhbHNbTm9uZV0pCmRpZmYgLS1naXQgYS9MaWIvc3RyaW5nLnB5IGIvTGliL3N0cmluZy5weQppbmRleCBhNGM0OGIyLi5mMzM2NWM2IDEwMDY0NAotLS0gYS9MaWIvc3RyaW5nLnB5CisrKyBiL0xpYi9zdHJpbmcucHkKQEAgLTE3OCw2ICsxNzgsOSBAQAogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIGlmICdmb3JtYXRfc3RyaW5nJyBpbiBrd2FyZ3M6CiAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IGt3YXJncy5wb3AoJ2Zvcm1hdF9zdHJpbmcnKQorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgJ2Zvcm1hdF9zdHJpbmcnIGFzIGtleXdvcmQgYXJndW1lbnQgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHJlY2F0ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmb3JtYXQoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudDogJ2Zvcm1hdF9zdHJpbmcnIikgZnJvbSBOb25lCmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IGYxMWU1MzguLmI2YzQzNzQgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0xMDQsMTcgKzEwNCwyMSBAQAogSWYgZW52IGlzIG5vdCBOb25lLCBpdCBkZWZpbmVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBuZXcKIHByb2Nlc3MuCiAKLUlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBmYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKK0lmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKIGFyZSBvcGVuZWQgYXMgYmluYXJ5IGZpbGVzLCBhbmQgbm8gbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBkb25lLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgdHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKLW9wZW5lZCBhcyBhIHRleHQgZmlsZXMsIGJ1dCBsaW5lcyBtYXkgYmUgdGVybWluYXRlZCBieSBhbnkgb2YgJ1xuJywKK0lmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBUcnVlLCB0aGUgZmlsZSBvYmplY3RzIHN0ZG91dCBhbmQgc3RkZXJyIGFyZQorb3BlbmVkIGFzIGEgdGV4dCBmaWxlLCBidXQgbGluZXMgbWF5IGJlIHRlcm1pbmF0ZWQgYnkgYW55IG9mICdcbicsCiB0aGUgVW5peCBlbmQtb2YtbGluZSBjb252ZW50aW9uLCAnXHInLCB0aGUgb2xkIE1hY2ludG9zaCBjb252ZW50aW9uIG9yCiAnXHJcbicsIHRoZSBXaW5kb3dzIGNvbnZlbnRpb24uICBBbGwgb2YgdGhlc2UgZXh0ZXJuYWwgcmVwcmVzZW50YXRpb25zCiBhcmUgc2VlbiBhcyAnXG4nIGJ5IHRoZSBQeXRob24gcHJvZ3JhbS4gIEFsc28sIHRoZSBuZXdsaW5lcyBhdHRyaWJ1dGUKIG9mIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0LCBzdGRpbiBhbmQgc3RkZXJyIGFyZSBub3QgdXBkYXRlZCBieSB0aGUKIGNvbW11bmljYXRlKCkgbWV0aG9kLgogCitJbiBlaXRoZXIgY2FzZSwgdGhlIHByb2Nlc3MgYmVpbmcgY29tbXVuaWNhdGVkIHdpdGggc2hvdWxkIHN0YXJ0IHVwCitleHBlY3RpbmcgdG8gcmVjZWl2ZSBieXRlcyBvbiBpdHMgc3RhbmRhcmQgaW5wdXQgYW5kIGRlY29kZSB0aGVtIHdpdGgKK3RoZSBzYW1lIGVuY29kaW5nIHRoZXkgYXJlIHNlbnQgaW4uCisKIFRoZSBzdGFydHVwaW5mbyBhbmQgY3JlYXRpb25mbGFncywgaWYgZ2l2ZW4sIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogdW5kZXJseWluZyBDcmVhdGVQcm9jZXNzKCkgZnVuY3Rpb24uICBUaGV5IGNhbiBzcGVjaWZ5IHRoaW5ncyBzdWNoIGFzCiBhcHBlYXJhbmNlIG9mIHRoZSBtYWluIHdpbmRvdyBhbmQgcHJpb3JpdHkgZm9yIHRoZSBuZXcgcHJvY2Vzcy4KQEAgLTE4NCw2ICsxODgsOSBAQAogICAgIHBhc3MgYSBzdHJpbmcgdG8gdGhlIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHlvdSB1c2UgdGhpcyBhcmd1bWVudAogICAgIHlvdSBtYXkgbm90IGFsc28gdXNlIHRoZSBQb3BlbiBjb25zdHJ1Y3RvcidzICJzdGRpbiIgYXJndW1lbnQuCiAKKyAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgc2V0IHRvIFRydWUsIHRoZSAiaW5wdXQiIGFyZ3VtZW50IG11c3QKKyAgICBiZSBhIHN0cmluZyByYXRoZXIgdGhhbiBieXRlcywgYW5kIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhIHN0cmluZy4KKwogRXhjZXB0aW9ucwogLS0tLS0tLS0tLQogRXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGJlZm9yZSB0aGUgbmV3IHByb2dyYW0gaGFzCkBAIC0yMjUsOSArMjMyLDEzIEBACiBjb21tdW5pY2F0ZShpbnB1dD1Ob25lKQogICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0CiAgICAgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8KLSAgICB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlCisgICAgdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlCiAgICAgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0bwotICAgIHRoZSBjaGlsZC4KKyAgICB0aGUgY2hpbGQuIElmIHRoZSBQb3BlbiBpbnN0YW5jZSB3YXMgY29uc3RydWN0ZWQgd2l0aCB1bml2ZXJzYWxfbmV3bGluZXMKKyAgICBzZXQgdG8gVHJ1ZSwgdGhlIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZyBhbmQgd2lsbCBiZSBlbmNvZGVkCisgICAgdXNpbmcgdGhlIHByZWZlcnJlZCBzeXN0ZW0gZW5jb2RpbmcgKHNlZSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcpOworICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhCisgICAgYnl0ZSBzdHJpbmcuCiAKICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLgogCkBAIC0zNDUsNyArMzU2LDcgQEAKICIiIgogCiBpbXBvcnQgc3lzCi1tc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCitfbXN3aW5kb3dzID0gKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiKQogCiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMzU0LDEwICszNjUsNyBAQAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlcnJubwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiAjIEV4Y2VwdGlvbiBjbGFzc2VzIHVzZWQgYnkgdGhpcyBtb2R1bGUuCiBjbGFzcyBTdWJwcm9jZXNzRXJyb3IoRXhjZXB0aW9uKTogcGFzcwpAQCAtMzY5LDI5ICszNzcsNTMgQEAKICAgICBUaGUgZXhpdCBzdGF0dXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlOwogICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXR1cm5jb2RlLCBjbWQsIG91dHB1dD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmV0dXJuY29kZSwgY21kLCBvdXRwdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSByZXR1cm5jb2RlCiAgICAgICAgIHNlbGYuY21kID0gY21kCiAgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rkb3V0KHNlbGYpOgorICAgICAgICAiIiJBbGlhcyBmb3Igb3V0cHV0IGF0dHJpYnV0ZSwgdG8gbWF0Y2ggc3RkZXJyIiIiCisgICAgICAgIHJldHVybiBzZWxmLm91dHB1dAorCisgICAgQHN0ZG91dC5zZXR0ZXIKKyAgICBkZWYgc3Rkb3V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgIyBUaGVyZSdzIG5vIG9idmlvdXMgcmVhc29uIHRvIHNldCB0aGlzLCBidXQgYWxsb3cgaXQgYW55d2F5IHNvCisgICAgICAgICMgLnN0ZG91dCBpcyBhIHRyYW5zcGFyZW50IGFsaWFzIGZvciAub3V0cHV0CisgICAgICAgIHNlbGYub3V0cHV0ID0gdmFsdWUKKwogCiBjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgogICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMgd2hpbGUgd2FpdGluZyBmb3IgYQogICAgIGNoaWxkIHByb2Nlc3MuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgdGltZW91dCwgb3V0cHV0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsIHRpbWVvdXQsIG91dHB1dD1Ob25lLCBzdGRlcnI9Tm9uZSk6CiAgICAgICAgIHNlbGYuY21kID0gY21kCiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKCJDb21tYW5kICclcycgdGltZWQgb3V0IGFmdGVyICVzIHNlY29uZHMiICUKICAgICAgICAgICAgICAgICAoc2VsZi5jbWQsIHNlbGYudGltZW91dCkpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXQKIAotaWYgbXN3aW5kb3dzOgorICAgIEBzdGRvdXQuc2V0dGVyCisgICAgZGVmIHN0ZG91dChzZWxmLCB2YWx1ZSk6CisgICAgICAgICMgVGhlcmUncyBubyBvYnZpb3VzIHJlYXNvbiB0byBzZXQgdGhpcywgYnV0IGFsbG93IGl0IGFueXdheSBzbworICAgICAgICAjIC5zdGRvdXQgaXMgYSB0cmFuc3BhcmVudCBhbGlhcyBmb3IgLm91dHB1dAorICAgICAgICBzZWxmLm91dHB1dCA9IHZhbHVlCisKKworaWYgX21zd2luZG93czoKICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgaW1wb3J0IG1zdmNydAogICAgIGltcG9ydCBfd2luYXBpCkBAIC00MjUsOSArNDU3LDEyIEBACiAKIAogX19hbGxfXyA9IFsiUG9wZW4iLCAiUElQRSIsICJTVERPVVQiLCAiY2FsbCIsICJjaGVja19jYWxsIiwgImdldHN0YXR1c291dHB1dCIsCi0gICAgICAgICAgICJnZXRvdXRwdXQiLCAiY2hlY2tfb3V0cHV0IiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIl0KKyAgICAgICAgICAgImdldG91dHB1dCIsICJjaGVja19vdXRwdXQiLCAicnVuIiwgIkNhbGxlZFByb2Nlc3NFcnJvciIsICJERVZOVUxMIiwKKyAgICAgICAgICAgIlN1YnByb2Nlc3NFcnJvciIsICJUaW1lb3V0RXhwaXJlZCIsICJDb21wbGV0ZWRQcm9jZXNzIl0KKyAgICAgICAgICAgIyBOT1RFOiBXZSBpbnRlbnRpb25hbGx5IGV4Y2x1ZGUgbGlzdDJjbWRsaW5lIGFzIGl0IGlzCisgICAgICAgICAgICMgY29uc2lkZXJlZCBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBpc3N1ZTEwODM4LgogCi1pZiBtc3dpbmRvd3M6CitpZiBfbXN3aW5kb3dzOgogICAgIGZyb20gX3dpbmFwaSBpbXBvcnQgKENSRUFURV9ORVdfQ09OU09MRSwgQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9FUlJPUl9IQU5ETEUsIFNXX0hJREUsCkBAIC00NTMsMTUgKzQ4OCwxMSBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiAiSGFuZGxlKCVkKSIgJSBpbnQoc2VsZikKKyAgICAgICAgICAgIHJldHVybiAiJXMoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaW50KHNlbGYpKQogCiAgICAgICAgIF9fZGVsX18gPSBDbG9zZQogICAgICAgICBfX3N0cl9fID0gX19yZXByX18KIAotdHJ5OgotICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQotZXhjZXB0OgotICAgIE1BWEZEID0gMjU2CiAKICMgVGhpcyBsaXN0cyBob2xkcyBQb3BlbiBpbnN0YW5jZXMgZm9yIHdoaWNoIHRoZSB1bmRlcmx5aW5nIHByb2Nlc3MgaGFkIG5vdAogIyBleGl0ZWQgYXQgdGhlIHRpbWUgaXRzIF9fZGVsX18gbWV0aG9kIGdvdCBjYWxsZWQ6IHRob3NlIHByb2Nlc3NlcyBhcmUgd2FpdCgpZWQKQEAgLTQ4NSwxNCArNTE2LDYgQEAKIERFVk5VTEwgPSAtMwogCiAKLWRlZiBfZWludHJfcmV0cnlfY2FsbChmdW5jLCAqYXJncyk6Ci0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgY29udGludWUKLQotCiAjIFhYWCBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgYW5kIHRoZSB0ZXN0IHN1aXRlLAogIyBidXQgaXQncyBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQKICMgdGhyZWFkcy4KQEAgLTU5MSwzNCArNjE0LDEwMiBAQAogICAgIC4uLiAgICAgICAgICAgICAgaW5wdXQ9YiJ3aGVuIGluIHRoZSBjb3Vyc2Ugb2YgZm9vbWFuIGV2ZW50c1xuIikKICAgICBiJ3doZW4gaW4gdGhlIGNvdXJzZSBvZiBiYXJtYW4gZXZlbnRzXG4nCiAKLSAgICBJZiB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSBpcyBwYXNzZWQsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBiZSBhCi0gICAgc3RyaW5nIHJhdGhlciB0aGFuIGJ5dGVzLgorICAgIElmIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlIGlzIHBhc3NlZCwgdGhlICJpbnB1dCIgYXJndW1lbnQgbXVzdCBiZSBhCisgICAgc3RyaW5nIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYSBzdHJpbmcgcmF0aGVyIHRoYW4gYnl0ZXMuCiAgICAgIiIiCiAgICAgaWYgJ3N0ZG91dCcgaW4ga3dhcmdzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdGRvdXQgYXJndW1lbnQgbm90IGFsbG93ZWQsIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbi4nKQotICAgIGlmICdpbnB1dCcgaW4ga3dhcmdzOgorCisgICAgaWYgJ2lucHV0JyBpbiBrd2FyZ3MgYW5kIGt3YXJnc1snaW5wdXQnXSBpcyBOb25lOgorICAgICAgICAjIEV4cGxpY2l0bHkgcGFzc2luZyBpbnB1dD1Ob25lIHdhcyBwcmV2aW91c2x5IGVxdWl2YWxlbnQgdG8gcGFzc2luZyBhbgorICAgICAgICAjIGVtcHR5IHN0cmluZy4gVGhhdCBpcyBtYWludGFpbmVkIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgICAgICBrd2FyZ3NbJ2lucHV0J10gPSAnJyBpZiBrd2FyZ3MuZ2V0KCd1bml2ZXJzYWxfbmV3bGluZXMnLCBGYWxzZSkgZWxzZSBiJycKKworICAgIHJldHVybiBydW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsIHRpbWVvdXQ9dGltZW91dCwgY2hlY2s9VHJ1ZSwKKyAgICAgICAgICAgICAgICoqa3dhcmdzKS5zdGRvdXQKKworCitjbGFzcyBDb21wbGV0ZWRQcm9jZXNzKG9iamVjdCk6CisgICAgIiIiQSBwcm9jZXNzIHRoYXQgaGFzIGZpbmlzaGVkIHJ1bm5pbmcuCisKKyAgICBUaGlzIGlzIHJldHVybmVkIGJ5IHJ1bigpLgorCisgICAgQXR0cmlidXRlczoKKyAgICAgIGFyZ3M6IFRoZSBsaXN0IG9yIHN0ciBhcmdzIHBhc3NlZCB0byBydW4oKS4KKyAgICAgIHJldHVybmNvZGU6IFRoZSBleGl0IGNvZGUgb2YgdGhlIHByb2Nlc3MsIG5lZ2F0aXZlIGZvciBzaWduYWxzLgorICAgICAgc3Rkb3V0OiBUaGUgc3RhbmRhcmQgb3V0cHV0IChOb25lIGlmIG5vdCBjYXB0dXJlZCkuCisgICAgICBzdGRlcnI6IFRoZSBzdGFuZGFyZCBlcnJvciAoTm9uZSBpZiBub3QgY2FwdHVyZWQpLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzLCByZXR1cm5jb2RlLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUpOgorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJldHVybmNvZGUKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBzdGRvdXQKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXJncyA9IFsnYXJncz17IXJ9Jy5mb3JtYXQoc2VsZi5hcmdzKSwKKyAgICAgICAgICAgICAgICAncmV0dXJuY29kZT17IXJ9Jy5mb3JtYXQoc2VsZi5yZXR1cm5jb2RlKV0KKyAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgnc3Rkb3V0PXshcn0nLmZvcm1hdChzZWxmLnN0ZG91dCkpCisgICAgICAgIGlmIHNlbGYuc3RkZXJyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJ3N0ZGVycj17IXJ9Jy5mb3JtYXQoc2VsZi5zdGRlcnIpKQorICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHR5cGUoc2VsZikuX19uYW1lX18sICcsICcuam9pbihhcmdzKSkKKworICAgIGRlZiBjaGVja19yZXR1cm5jb2RlKHNlbGYpOgorICAgICAgICAiIiJSYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IgaWYgdGhlIGV4aXQgY29kZSBpcyBub24temVyby4iIiIKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlOgorICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHNlbGYucmV0dXJuY29kZSwgc2VsZi5hcmdzLCBzZWxmLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycikKKworCitkZWYgcnVuKCpwb3BlbmFyZ3MsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UsICoqa3dhcmdzKToKKyAgICAiIiJSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGEgQ29tcGxldGVkUHJvY2VzcyBpbnN0YW5jZS4KKworICAgIFRoZSByZXR1cm5lZCBpbnN0YW5jZSB3aWxsIGhhdmUgYXR0cmlidXRlcyBhcmdzLCByZXR1cm5jb2RlLCBzdGRvdXQgYW5kCisgICAgc3RkZXJyLiBCeSBkZWZhdWx0LCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgbm90IGNhcHR1cmVkLCBhbmQgdGhvc2UgYXR0cmlidXRlcworICAgIHdpbGwgYmUgTm9uZS4gUGFzcyBzdGRvdXQ9UElQRSBhbmQvb3Igc3RkZXJyPVBJUEUgaW4gb3JkZXIgdG8gY2FwdHVyZSB0aGVtLgorCisgICAgSWYgY2hlY2sgaXMgVHJ1ZSBhbmQgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8sIGl0IHJhaXNlcyBhCisgICAgQ2FsbGVkUHJvY2Vzc0Vycm9yLiBUaGUgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlCisgICAgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLCBhbmQgb3V0cHV0ICYgc3RkZXJyIGF0dHJpYnV0ZXMgaWYgdGhvc2Ugc3RyZWFtcworICAgIHdlcmUgY2FwdHVyZWQuCisKKyAgICBJZiB0aW1lb3V0IGlzIGdpdmVuLCBhbmQgdGhlIHByb2Nlc3MgdGFrZXMgdG9vIGxvbmcsIGEgVGltZW91dEV4cGlyZWQKKyAgICBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuCisKKyAgICBUaGVyZSBpcyBhbiBvcHRpb25hbCBhcmd1bWVudCAiaW5wdXQiLCBhbGxvd2luZyB5b3UgdG8KKyAgICBwYXNzIGEgc3RyaW5nIHRvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB5b3UgdXNlIHRoaXMgYXJndW1lbnQKKyAgICB5b3UgbWF5IG5vdCBhbHNvIHVzZSB0aGUgUG9wZW4gY29uc3RydWN0b3IncyAic3RkaW4iIGFyZ3VtZW50LCBhcworICAgIGl0IHdpbGwgYmUgdXNlZCBpbnRlcm5hbGx5LgorCisgICAgVGhlIG90aGVyIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4KKworICAgIElmIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlIGlzIHBhc3NlZCwgdGhlICJpbnB1dCIgYXJndW1lbnQgbXVzdCBiZSBhCisgICAgc3RyaW5nIGFuZCBzdGRvdXQvc3RkZXJyIGluIHRoZSByZXR1cm5lZCBvYmplY3Qgd2lsbCBiZSBzdHJpbmdzIHJhdGhlciB0aGFuCisgICAgYnl0ZXMuCisgICAgIiIiCisgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmICdzdGRpbicgaW4ga3dhcmdzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3RkaW4gYW5kIGlucHV0IGFyZ3VtZW50cyBtYXkgbm90IGJvdGggYmUgdXNlZC4nKQotICAgICAgICBpbnB1dGRhdGEgPSBrd2FyZ3NbJ2lucHV0J10KLSAgICAgICAgZGVsIGt3YXJnc1snaW5wdXQnXQogICAgICAgICBrd2FyZ3NbJ3N0ZGluJ10gPSBQSVBFCi0gICAgZWxzZToKLSAgICAgICAgaW5wdXRkYXRhID0gTm9uZQotICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgorCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykgYXMgcHJvY2VzczoKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dGRhdGEsIHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZShpbnB1dCwgdGltZW91dD10aW1lb3V0KQogICAgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CiAgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQotICAgICAgICAgICAgb3V0cHV0LCB1bnVzZWRfZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChwcm9jZXNzLmFyZ3MsIHRpbWVvdXQsIG91dHB1dD1vdXRwdXQpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9c3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN0ZGVycikKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKICAgICAgICAgICAgIHByb2Nlc3Mud2FpdCgpCiAgICAgICAgICAgICByYWlzZQogICAgICAgICByZXRjb2RlID0gcHJvY2Vzcy5wb2xsKCkKLSAgICAgICAgaWYgcmV0Y29kZToKLSAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBwcm9jZXNzLmFyZ3MsIG91dHB1dD1vdXRwdXQpCi0gICAgcmV0dXJuIG91dHB1dAorICAgICAgICBpZiBjaGVjayBhbmQgcmV0Y29kZToKKyAgICAgICAgICAgIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvcihyZXRjb2RlLCBwcm9jZXNzLmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0PXN0ZG91dCwgc3RkZXJyPXN0ZGVycikKKyAgICByZXR1cm4gQ29tcGxldGVkUHJvY2Vzcyhwcm9jZXNzLmFyZ3MsIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyKQogCiAKIGRlZiBsaXN0MmNtZGxpbmUoc2VxKToKQEAgLTc2Niw3ICs4NTcsNyBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShidWZzaXplLCBpbnQpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJidWZzaXplIG11c3QgYmUgYW4gaW50ZWdlciIpCiAKLSAgICAgICAgaWYgbXN3aW5kb3dzOgorICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICAgaWYgcHJlZXhlY19mbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcmVleGVjX2ZuIGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm1zIikKQEAgLTgyNiw3ICs5MTcsNyBAQAogICAgICAgICAjIHF1aWNrbHkgdGVybWluYXRpbmcgY2hpbGQgY291bGQgbWFrZSBvdXIgZmRzIHVud3JhcHBhYmxlCiAgICAgICAgICMgKHNlZSAjODQ1OCkuCiAKLSAgICAgICAgaWYgbXN3aW5kb3dzOgorICAgICAgICBpZiBfbXN3aW5kb3dzOgogICAgICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CiAgICAgICAgICAgICAgICAgcDJjd3JpdGUgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUocDJjd3JpdGUuRGV0YWNoKCksIDApCiAgICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgpAQCAtOTE4LDE0ICsxMDA5LDM1IEBACiAgICAgICAgICAgICBzZWxmLl9kZXZudWxsID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCiAgICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCiAKKyAgICBkZWYgX3N0ZGluX3dyaXRlKHNlbGYsIGlucHV0KToKKyAgICAgICAgaWYgaW5wdXQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKKyAgICAgICAgICAgIGV4Y2VwdCBCcm9rZW5QaXBlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIG11c3QgaWdub3JlIGJyb2tlbiBwaXBlIGVycm9yCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVJTlZBTCBhbmQgc2VsZi5wb2xsKCkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgSXNzdWUgIzE5NjEyOiBPbiBXaW5kb3dzLCBzdGRpbi53cml0ZSgpIGZhaWxzIHdpdGggRUlOVkFMCisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIHByb2Nlc3MgYWxyZWFkeSBleGl0ZWQgYmVmb3JlIHRoZSB3cml0ZQorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisKICAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbQogICAgICAgICBzdGRvdXQgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yCi0gICAgICAgIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZQotICAgICAgICBieXRlcyB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhCi0gICAgICAgIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgICAgICAgcHJvY2VzcyB0byB0ZXJtaW5hdGUuCiAKLSAgICAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4iIiIKKyAgICAgICAgVGhlIG9wdGlvbmFsICJpbnB1dCIgYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKKyAgICAgICAgY2hpbGQgcHJvY2VzcyAoaWYgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgaXMgVHJ1ZSwgdGhpcyBzaG91bGQKKyAgICAgICAgYmUgYSBzdHJpbmc7IGlmIGl0IGlzIEZhbHNlLCAiaW5wdXQiIHNob3VsZCBiZSBieXRlcyksIG9yCisgICAgICAgIE5vbmUsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLgorCisgICAgICAgIGNvbW11bmljYXRlKCkgcmV0dXJucyBhIHR1cGxlIChzdGRvdXQsIHN0ZGVycikuICBUaGVzZSB3aWxsIGJlCisgICAgICAgIGJ5dGVzIG9yLCBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyB3YXMgVHJ1ZSwgYSBzdHJpbmcuCisgICAgICAgICIiIgogCiAgICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBpbnB1dCBhZnRlciBzdGFydGluZyBjb21tdW5pY2F0aW9uIikKQEAgLTkzOCwxOCArMTA1MCwxMiBAQAogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKLSAgICAgICAgICAgICAgICBpZiBpbnB1dDoKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVBJUEUgYW5kIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fd3JpdGUoaW5wdXQpCiAgICAgICAgICAgICBlbGlmIHNlbGYuc3Rkb3V0OgotICAgICAgICAgICAgICAgIHN0ZG91dCA9IF9laW50cl9yZXRyeV9jYWxsKHNlbGYuc3Rkb3V0LnJlYWQpCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5zdGRvdXQucmVhZCgpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZGVyci5yZWFkKQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuc3RkZXJyLnJlYWQoKQogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgIGVsc2U6CkBAIC05ODgsNyArMTA5NCw3IEBACiAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKIAogCi0gICAgaWYgbXN3aW5kb3dzOgorICAgIGlmIF9tc3dpbmRvd3M6CiAgICAgICAgICMKICAgICAgICAgIyBXaW5kb3dzIG1ldGhvZHMKICAgICAgICAgIwpAQCAtMTE5MywyMSArMTI5OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLnN0YXJ0KCkKIAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbjoKLSAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBJUEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHNob3VsZCBpZ25vcmUgcGlwZSBmdWxsIGVycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAoZS5lcnJubyA9PSBlcnJuby5FSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLnBvbGwoKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTk2MTI6IHN0ZGluLndyaXRlKCkgZmFpbHMgd2l0aCBFSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBwcm9jZXNzIGFscmVhZHkgZXhpdGVkIGJlZm9yZSB0aGUgd3JpdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fc3RkaW5fd3JpdGUoaW5wdXQpCiAKICAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIHJlYWRlciB0aHJlYWRzLCBvciB0aW1lIG91dC4gIElmIHdlIHRpbWUgb3V0LCB0aGUKICAgICAgICAgICAgICMgdGhyZWFkcyByZW1haW4gcmVhZGluZyBhbmQgdGhlIGZkcyBsZWZ0IG9wZW4gaW4gY2FzZSB0aGUgdXNlcgpAQCAtMTMyMiwxNiArMTQxNCw2IEBACiAgICAgICAgICAgICAgICAgICAgIGVycnJlYWQsIGVycndyaXRlKQogCiAKLSAgICAgICAgZGVmIF9jbG9zZV9mZHMoc2VsZiwgZmRzX3RvX2tlZXApOgotICAgICAgICAgICAgc3RhcnRfZmQgPSAzCi0gICAgICAgICAgICBmb3IgZmQgaW4gc29ydGVkKGZkc190b19rZWVwKToKLSAgICAgICAgICAgICAgICBpZiBmZCA+PSBzdGFydF9mZDoKLSAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZShzdGFydF9mZCwgZmQpCi0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2ZkID0gZmQgKyAxCi0gICAgICAgICAgICBpZiBzdGFydF9mZCA8PSBNQVhGRDoKLSAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKHN0YXJ0X2ZkLCBNQVhGRCkKLQotCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC0xNDE3LDcgKzE0OTksNyBAQAogICAgICAgICAgICAgICAgICMgZXhjZXB0aW9uIChsaW1pdGVkIGluIHNpemUpCiAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhID0gYnl0ZWFycmF5KCkKICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gX2VpbnRyX3JldHJ5X2NhbGwob3MucmVhZCwgZXJycGlwZV9yZWFkLCA1MDAwMCkKKyAgICAgICAgICAgICAgICAgICAgcGFydCA9IG9zLnJlYWQoZXJycGlwZV9yZWFkLCA1MDAwMCkKICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9kYXRhICs9IHBhcnQKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHBhcnQgb3IgbGVuKGVycnBpcGVfZGF0YSkgPiA1MDAwMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xNDI3LDEwICsxNTA5LDkgQEAKIAogICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIDApCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEuc3BsaXQoYic6JywgMikpCkBAIC0xNTEzLDEwICsxNTk0LDggQEAKICAgICAgICAgZGVmIF90cnlfd2FpdChzZWxmLCB3YWl0X2ZsYWdzKToKICAgICAgICAgICAgICIiIkFsbCBjYWxsZXJzIHRvIHRoaXMgZnVuY3Rpb24gTVVTVCBob2xkIHNlbGYuX3dhaXRwaWRfbG9jay4iIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIHdhaXRfZmxhZ3MpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNISUxEOgotICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBvcy53YWl0cGlkKHNlbGYucGlkLCB3YWl0X2ZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgICMgVGhpcyBoYXBwZW5zIGlmIFNJR0NMRCBpcyBzZXQgdG8gYmUgaWdub3JlZCBvciB3YWl0aW5nCiAgICAgICAgICAgICAgICAgIyBmb3IgY2hpbGQgcHJvY2Vzc2VzIGhhcyBvdGhlcndpc2UgYmVlbiBkaXNhYmxlZCBmb3Igb3VyCiAgICAgICAgICAgICAgICAgIyBwcm9jZXNzLiAgVGhpcyBjaGlsZCBpcyBkZWFkLCB3ZSBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KQEAgLTE2MjgsMTIgKzE3MDcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoa2V5LmZkLCBjaHVuaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5maWxlb2JqLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEJyb2tlblBpcGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2lucHV0X29mZnNldCA+PSBsZW4oc2VsZi5faW5wdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IudW5yZWdpc3RlcihrZXkuZmlsZW9iaikKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDVjZjRhNjUuLjc1NDE0OTcgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtMTYsODIgKzE2LDg1IEBACiBkZWNvcmF0b3IgPSAyNTkKIGRlY29yYXRvcnMgPSAyNjAKIGRlY29yYXRlZCA9IDI2MQotZnVuY2RlZiA9IDI2MgotcGFyYW1ldGVycyA9IDI2MwotdHlwZWRhcmdzbGlzdCA9IDI2NAotdGZwZGVmID0gMjY1Ci12YXJhcmdzbGlzdCA9IDI2NgotdmZwZGVmID0gMjY3Ci1zdG10ID0gMjY4Ci1zaW1wbGVfc3RtdCA9IDI2OQotc21hbGxfc3RtdCA9IDI3MAotZXhwcl9zdG10ID0gMjcxCi10ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzIKLWF1Z2Fzc2lnbiA9IDI3MwotZGVsX3N0bXQgPSAyNzQKLXBhc3Nfc3RtdCA9IDI3NQotZmxvd19zdG10ID0gMjc2Ci1icmVha19zdG10ID0gMjc3Ci1jb250aW51ZV9zdG10ID0gMjc4Ci1yZXR1cm5fc3RtdCA9IDI3OQoteWllbGRfc3RtdCA9IDI4MAotcmFpc2Vfc3RtdCA9IDI4MQotaW1wb3J0X3N0bXQgPSAyODIKLWltcG9ydF9uYW1lID0gMjgzCi1pbXBvcnRfZnJvbSA9IDI4NAotaW1wb3J0X2FzX25hbWUgPSAyODUKLWRvdHRlZF9hc19uYW1lID0gMjg2Ci1pbXBvcnRfYXNfbmFtZXMgPSAyODcKLWRvdHRlZF9hc19uYW1lcyA9IDI4OAotZG90dGVkX25hbWUgPSAyODkKLWdsb2JhbF9zdG10ID0gMjkwCi1ub25sb2NhbF9zdG10ID0gMjkxCi1hc3NlcnRfc3RtdCA9IDI5MgotY29tcG91bmRfc3RtdCA9IDI5MwotaWZfc3RtdCA9IDI5NAotd2hpbGVfc3RtdCA9IDI5NQotZm9yX3N0bXQgPSAyOTYKLXRyeV9zdG10ID0gMjk3Ci13aXRoX3N0bXQgPSAyOTgKLXdpdGhfaXRlbSA9IDI5OQotZXhjZXB0X2NsYXVzZSA9IDMwMAotc3VpdGUgPSAzMDEKLXRlc3QgPSAzMDIKLXRlc3Rfbm9jb25kID0gMzAzCi1sYW1iZGVmID0gMzA0Ci1sYW1iZGVmX25vY29uZCA9IDMwNQotb3JfdGVzdCA9IDMwNgotYW5kX3Rlc3QgPSAzMDcKLW5vdF90ZXN0ID0gMzA4Ci1jb21wYXJpc29uID0gMzA5Ci1jb21wX29wID0gMzEwCi1zdGFyX2V4cHIgPSAzMTEKLWV4cHIgPSAzMTIKLXhvcl9leHByID0gMzEzCi1hbmRfZXhwciA9IDMxNAotc2hpZnRfZXhwciA9IDMxNQotYXJpdGhfZXhwciA9IDMxNgotdGVybSA9IDMxNwotZmFjdG9yID0gMzE4Ci1wb3dlciA9IDMxOQotYXRvbSA9IDMyMAotdGVzdGxpc3RfY29tcCA9IDMyMQotdHJhaWxlciA9IDMyMgotc3Vic2NyaXB0bGlzdCA9IDMyMwotc3Vic2NyaXB0ID0gMzI0Ci1zbGljZW9wID0gMzI1Ci1leHBybGlzdCA9IDMyNgotdGVzdGxpc3QgPSAzMjcKLWRpY3RvcnNldG1ha2VyID0gMzI4Ci1jbGFzc2RlZiA9IDMyOQotYXJnbGlzdCA9IDMzMAotYXJndW1lbnQgPSAzMzEKLWNvbXBfaXRlciA9IDMzMgotY29tcF9mb3IgPSAzMzMKLWNvbXBfaWYgPSAzMzQKLWVuY29kaW5nX2RlY2wgPSAzMzUKLXlpZWxkX2V4cHIgPSAzMzYKLXlpZWxkX2FyZyA9IDMzNworYXN5bmNfZnVuY2RlZiA9IDI2MgorZnVuY2RlZiA9IDI2MworcGFyYW1ldGVycyA9IDI2NAordHlwZWRhcmdzbGlzdCA9IDI2NQordGZwZGVmID0gMjY2Cit2YXJhcmdzbGlzdCA9IDI2NwordmZwZGVmID0gMjY4CitzdG10ID0gMjY5CitzaW1wbGVfc3RtdCA9IDI3MAorc21hbGxfc3RtdCA9IDI3MQorZXhwcl9zdG10ID0gMjcyCit0ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzMKK2F1Z2Fzc2lnbiA9IDI3NAorZGVsX3N0bXQgPSAyNzUKK3Bhc3Nfc3RtdCA9IDI3NgorZmxvd19zdG10ID0gMjc3CiticmVha19zdG10ID0gMjc4Citjb250aW51ZV9zdG10ID0gMjc5CityZXR1cm5fc3RtdCA9IDI4MAoreWllbGRfc3RtdCA9IDI4MQorcmFpc2Vfc3RtdCA9IDI4MgoraW1wb3J0X3N0bXQgPSAyODMKK2ltcG9ydF9uYW1lID0gMjg0CitpbXBvcnRfZnJvbSA9IDI4NQoraW1wb3J0X2FzX25hbWUgPSAyODYKK2RvdHRlZF9hc19uYW1lID0gMjg3CitpbXBvcnRfYXNfbmFtZXMgPSAyODgKK2RvdHRlZF9hc19uYW1lcyA9IDI4OQorZG90dGVkX25hbWUgPSAyOTAKK2dsb2JhbF9zdG10ID0gMjkxCitub25sb2NhbF9zdG10ID0gMjkyCithc3NlcnRfc3RtdCA9IDI5MworY29tcG91bmRfc3RtdCA9IDI5NAorYXN5bmNfc3RtdCA9IDI5NQoraWZfc3RtdCA9IDI5Ngord2hpbGVfc3RtdCA9IDI5NworZm9yX3N0bXQgPSAyOTgKK3RyeV9zdG10ID0gMjk5Cit3aXRoX3N0bXQgPSAzMDAKK3dpdGhfaXRlbSA9IDMwMQorZXhjZXB0X2NsYXVzZSA9IDMwMgorc3VpdGUgPSAzMDMKK3Rlc3QgPSAzMDQKK3Rlc3Rfbm9jb25kID0gMzA1CitsYW1iZGVmID0gMzA2CitsYW1iZGVmX25vY29uZCA9IDMwNworb3JfdGVzdCA9IDMwOAorYW5kX3Rlc3QgPSAzMDkKK25vdF90ZXN0ID0gMzEwCitjb21wYXJpc29uID0gMzExCitjb21wX29wID0gMzEyCitzdGFyX2V4cHIgPSAzMTMKK2V4cHIgPSAzMTQKK3hvcl9leHByID0gMzE1CithbmRfZXhwciA9IDMxNgorc2hpZnRfZXhwciA9IDMxNworYXJpdGhfZXhwciA9IDMxOAordGVybSA9IDMxOQorZmFjdG9yID0gMzIwCitwb3dlciA9IDMyMQorYXRvbV9leHByID0gMzIyCithdG9tID0gMzIzCit0ZXN0bGlzdF9jb21wID0gMzI0Cit0cmFpbGVyID0gMzI1CitzdWJzY3JpcHRsaXN0ID0gMzI2CitzdWJzY3JpcHQgPSAzMjcKK3NsaWNlb3AgPSAzMjgKK2V4cHJsaXN0ID0gMzI5Cit0ZXN0bGlzdCA9IDMzMAorZGljdG9yc2V0bWFrZXIgPSAzMzEKK2NsYXNzZGVmID0gMzMyCithcmdsaXN0ID0gMzMzCithcmd1bWVudCA9IDMzNAorY29tcF9pdGVyID0gMzM1Citjb21wX2ZvciA9IDMzNgorY29tcF9pZiA9IDMzNworZW5jb2RpbmdfZGVjbCA9IDMzOAoreWllbGRfZXhwciA9IDMzOQoreWllbGRfYXJnID0gMzQwCiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL3N5bXRhYmxlLnB5IGIvTGliL3N5bXRhYmxlLnB5CmluZGV4IGUyMzMxM2IuLjg0ZmVjNGEgMTAwNjQ0Ci0tLSBhL0xpYi9zeW10YWJsZS5weQorKysgYi9MaWIvc3ltdGFibGUucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBfc3ltdGFibGUKIGZyb20gX3N5bXRhYmxlIGltcG9ydCAoVVNFLCBERUZfR0xPQkFMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKLSAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBPUFRfSU1QT1JUX1NUQVIsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKKyAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCiAgICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKIAogaW1wb3J0IHdlYWtyZWYKQEAgLTc0LDggKzc0LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX3RhYmxlLmxpbmVubwogCiAgICAgZGVmIGlzX29wdGltaXplZChzZWxmKToKLSAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9GVU5DVElPTgotICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3RhYmxlLm9wdGltaXplZCkKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdGFibGUudHlwZSA9PSBfc3ltdGFibGUuVFlQRV9GVU5DVElPTikKIAogICAgIGRlZiBpc19uZXN0ZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX3RhYmxlLm5lc3RlZCkKQEAgLTg3LDEwICs4Niw2IEBACiAgICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBzY29wZSB1c2VzIGV4ZWMuICBEZXByZWNhdGVkIG1ldGhvZC4iIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgaGFzX2ltcG9ydF9zdGFyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgc2NvcGUgdXNlcyBpbXBvcnQgKiIiIgotICAgICAgICByZXR1cm4gYm9vbChzZWxmLl90YWJsZS5vcHRpbWl6ZWQgJiBPUFRfSU1QT1JUX1NUQVIpCi0KICAgICBkZWYgZ2V0X2lkZW50aWZpZXJzKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdGFibGUuc3ltYm9scy5rZXlzKCkKIApkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggZGJmNzc2Ny4uMTM3OTMyZSAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgICdwdXJlbGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L1B5dGhvbntweV92ZXJzaW9uX25vZG90fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vSW5jbHVkZScsCi0gICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vU2NyaXB0cycsCisgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L1NjcmlwdHMnLAogICAgICAgICAnZGF0YSc6ICd7dXNlcmJhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfdXNlcic6IHsKQEAgLTEwOSwxMyArMTA5LDggQEAKICAgICAjIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtIG5hbWUKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MuZ2V0Y3dkKCkpCiAKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgInBjYnVpbGQiIGluIF9QUk9KRUNUX0JBU0VbLTg6XS5sb3dlcigpOgotICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyKSkKLSMgUEMvVlM3LjEKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNcXHYiIGluIF9QUk9KRUNUX0JBU0VbLTEwOl0ubG93ZXIoKToKLSAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKLSMgUEMvQU1ENjQKLWlmIG9zLm5hbWUgPT0gIm50IiBhbmQgIlxccGNidWlsZFxcYW1kNjQiIGluIF9QUk9KRUNUX0JBU0VbLTE0Ol0ubG93ZXIoKToKK2lmIChvcy5uYW1lID09ICdudCcgYW5kCisgICAgX1BST0pFQ1RfQkFTRS5sb3dlcigpLmVuZHN3aXRoKCgnXFxwY2J1aWxkXFx3aW4zMicsICdcXHBjYnVpbGRcXGFtZDY0JykpKToKICAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MucGF0aC5qb2luKF9QUk9KRUNUX0JBU0UsIHBhcmRpciwgcGFyZGlyKSkKIAogIyBzZXQgZm9yIGNyb3NzIGJ1aWxkcwpAQCAtMTI5LDExICsxMjQsOSBAQAogICAgIHJldHVybiBGYWxzZQogCiBfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKLWlmIF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZCBcCi0gICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdwY2J1aWxkJywgJ3BjYnVpbGRcXGFtZDY0JykpOgotICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCi0gICAgaWYgX3N5c19ob21lLmVuZHN3aXRoKCdwY2J1aWxkJyk6ICAgIyBtdXN0IGJlIGFtZDY0Ci0gICAgICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCitpZiAoX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kCisgICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdcXHBjYnVpbGRcXHdpbjMyJywgJ1xccGNidWlsZFxcYW1kNjQnKSkpOgorICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX3N5c19ob21lKSkKIGRlZiBpc19weXRob25fYnVpbGQoY2hlY2tfaG9tZT1GYWxzZSk6CiAgICAgaWYgY2hlY2tfaG9tZSBhbmQgX3N5c19ob21lOgogICAgICAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9zeXNfaG9tZSkKZGlmZiAtLWdpdCBhL0xpYi90YXJmaWxlLnB5IGIvTGliL3RhcmZpbGUucHkKaW5kZXggNWYxYTk3OS4uY2E0NTEyNiAxMDA3NTUKLS0tIGEvTGliL3RhcmZpbGUucHkKKysrIGIvTGliL3RhcmZpbGUucHkKQEAgLTE0MTQsOSArMTQxNCw5IEBACiAgICAgICAgICAgIGNhbiBiZSBkZXRlcm1pbmVkLCBgbW9kZScgaXMgb3ZlcnJpZGRlbiBieSBgZmlsZW9iaidzIG1vZGUuCiAgICAgICAgICAgIGBmaWxlb2JqJyBpcyBub3QgY2xvc2VkLCB3aGVuIFRhckZpbGUgaXMgY2xvc2VkLgogICAgICAgICAiIiIKLSAgICAgICAgbW9kZXMgPSB7InIiOiAicmIiLCAiYSI6ICJyK2IiLCAidyI6ICJ3YiJ9CisgICAgICAgIG1vZGVzID0geyJyIjogInJiIiwgImEiOiAicitiIiwgInciOiAid2IiLCAieCI6ICJ4YiJ9CiAgICAgICAgIGlmIG1vZGUgbm90IGluIG1vZGVzOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnIG9yICd3JyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAnYScsICd3JyBvciAneCciKQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuX21vZGUgPSBtb2Rlc1ttb2RlXQogCkBAIC0xNDg4LDcgKzE0ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgSGVhZGVyRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJlYWRFcnJvcihzdHIoZSkpCiAKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAiYXciOgorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSBUcnVlCiAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnBheF9oZWFkZXJzOgpAQCAtMTUyOSw2ICsxNTI5LDE1IEBACiAgICAgICAgICAgICd3OmJ6MicgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KICAgICAgICAgICAgJ3c6eHonICAgICAgIG9wZW4gZm9yIHdyaXRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAKKyAgICAgICAgICAgJ3gnIG9yICd4OicgIGNyZWF0ZSBhIHRhcmZpbGUgZXhjbHVzaXZlbHkgd2l0aG91dCBjb21wcmVzc2lvbiwgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgJ3g6Z3onICAgICAgIGNyZWF0ZSBhbiBnemlwIGNvbXByZXNzZWQgdGFyZmlsZSwgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNyZWF0ZWQKKyAgICAgICAgICAgJ3g6YnoyJyAgICAgIGNyZWF0ZSBhbiBiemlwMiBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICd4Onh6JyAgICAgICBjcmVhdGUgYW4gbHptYSBjb21wcmVzc2VkIHRhcmZpbGUsIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjcmVhdGVkCisKICAgICAgICAgICAgJ3J8KicgICAgICAgIG9wZW4gYSBzdHJlYW0gb2YgdGFyIGJsb2NrcyB3aXRoIHRyYW5zcGFyZW50IGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyfCcgICAgICAgICBvcGVuIGFuIHVuY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcyBmb3IgcmVhZGluZwogICAgICAgICAgICAncnxneicgICAgICAgb3BlbiBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwpAQCAtMTU4Nyw3ICsxNTk2LDcgQEAKICAgICAgICAgICAgIHQuX2V4dGZpbGVvYmogPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHQKIAotICAgICAgICBlbGlmIG1vZGUgaW4gKCJhIiwgInciKToKKyAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgIHJldHVybiBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKIAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmRpc2Nlcm5pYmxlIG1vZGUiKQpAQCAtMTU5Niw4ICsxNjA1LDggQEAKICAgICBkZWYgdGFyb3BlbihjbHMsIG5hbWUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgIiIiT3BlbiB1bmNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgImEiLCAidyIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnIG9yICd3JyIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJhIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ2EnLCAndycgb3IgJ3gnIikKICAgICAgICAgcmV0dXJuIGNscyhuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMTYwNSw4ICsxNjE0LDggQEAKICAgICAgICAgIiIiT3BlbiBnemlwIGNvbXByZXNzZWQgdGFyIGFyY2hpdmUgbmFtZSBmb3IgcmVhZGluZyBvciB3cml0aW5nLgogICAgICAgICAgICBBcHBlbmRpbmcgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgICIiIgotICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJyBvciAndyciKQorICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJ4Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InLCAndycgb3IgJ3gnIikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgZ3ppcApAQCAtMTYzOSw4ICsxNjQ4LDggQEAKICAgICAgICAgIiIiT3BlbiBiemlwMiBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnLiIpCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgIngiKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicsICd3JyBvciAneCciKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBiejIKQEAgLTE2NjgsOCArMTY3Nyw4IEBACiAgICAgICAgICIiIk9wZW4gbHptYSBjb21wcmVzc2VkIHRhciBhcmNoaXZlIG5hbWUgZm9yIHJlYWRpbmcgb3Igd3JpdGluZy4KICAgICAgICAgICAgQXBwZW5kaW5nIGlzIG5vdCBhbGxvd2VkLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgbXVzdCBiZSAncicgb3IgJ3cnIikKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgInciLCAieCIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBtdXN0IGJlICdyJywgJ3cnIG9yICd4JyIpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGx6bWEKQEAgLTE3MTEsNyArMTcyMCw3IEBACiAKICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAiYXciOgorICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgiYSIsICJ3IiwgIngiKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUoTlVMICogKEJMT0NLU0laRSAqIDIpKQogICAgICAgICAgICAgICAgIHNlbGYub2Zmc2V0ICs9IChCTE9DS1NJWkUgKiAyKQogICAgICAgICAgICAgICAgICMgZmlsbCB1cCB0aGUgZW5kIHdpdGggemVyby1ibG9ja3MKQEAgLTE3NTcsNyArMTc2Niw3IEBACiAgICAgICAgICAgIGFkZGZpbGUoKS4gSWYgZ2l2ZW4sIGBhcmNuYW1lJyBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgbmFtZSBmb3IgdGhlCiAgICAgICAgICAgIGZpbGUgaW4gdGhlIGFyY2hpdmUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICAjIFdoZW4gZmlsZW9iaiBpcyBnaXZlbiwgcmVwbGFjZSBuYW1lIGJ5CiAgICAgICAgICMgZmlsZW9iaidzIHJlYWwgbmFtZS4KQEAgLTE4NDgsMTQgKzE4NTcsMTcgQEAKICAgICAgICAgICAgICAgICB0YXJpbmZvLmRldm1pbm9yID0gb3MubWlub3Ioc3RhdHJlcy5zdF9yZGV2KQogICAgICAgICByZXR1cm4gdGFyaW5mbwogCi0gICAgZGVmIGxpc3Qoc2VsZiwgdmVyYm9zZT1UcnVlKToKKyAgICBkZWYgbGlzdChzZWxmLCB2ZXJib3NlPVRydWUsICosIG1lbWJlcnM9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IGEgdGFibGUgb2YgY29udGVudHMgdG8gc3lzLnN0ZG91dC4gSWYgYHZlcmJvc2UnIGlzIEZhbHNlLCBvbmx5CiAgICAgICAgICAgIHRoZSBuYW1lcyBvZiB0aGUgbWVtYmVycyBhcmUgcHJpbnRlZC4gSWYgaXQgaXMgVHJ1ZSwgYW4gYGxzIC1sJy1saWtlCi0gICAgICAgICAgIG91dHB1dCBpcyBwcm9kdWNlZC4KKyAgICAgICAgICAgb3V0cHV0IGlzIHByb2R1Y2VkLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCisgICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soKQogCi0gICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGY6CisgICAgICAgIGlmIG1lbWJlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIG1lbWJlcnMgPSBzZWxmCisgICAgICAgIGZvciB0YXJpbmZvIGluIG1lbWJlcnM6CiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIF9zYWZlX3ByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSkKICAgICAgICAgICAgICAgICBfc2FmZV9wcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCkBAIC0xODg4LDcgKzE5MDAsNyBAQAogICAgICAgICAgICBUYXJJbmZvIG9iamVjdCwgaWYgaXQgcmV0dXJucyBOb25lIHRoZSBUYXJJbmZvIG9iamVjdCB3aWxsIGJlCiAgICAgICAgICAgIGV4Y2x1ZGVkIGZyb20gdGhlIGFyY2hpdmUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICBhcmNuYW1lID0gbmFtZQpAQCAtMTk0NSw3ICsxOTU3LDcgQEAKICAgICAgICAgICAgT24gV2luZG93cyBwbGF0Zm9ybXMsIGBmaWxlb2JqJyBzaG91bGQgYWx3YXlzIGJlIG9wZW5lZCB3aXRoIG1vZGUKICAgICAgICAgICAgJ3JiJyB0byBhdm9pZCBpcnJpdGF0aW9uIGFib3V0IHRoZSBmaWxlIHNpemUuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jaGVjaygiYXciKQorICAgICAgICBzZWxmLl9jaGVjaygiYXd4IikKIAogICAgICAgICB0YXJpbmZvID0gY29weS5jb3B5KHRhcmluZm8pCiAKQEAgLTE5NjQsMTIgKzE5NzYsMTMgQEAKIAogICAgICAgICBzZWxmLm1lbWJlcnMuYXBwZW5kKHRhcmluZm8pCiAKLSAgICBkZWYgZXh0cmFjdGFsbChzZWxmLCBwYXRoPSIuIiwgbWVtYmVycz1Ob25lKToKKyAgICBkZWYgZXh0cmFjdGFsbChzZWxmLCBwYXRoPSIuIiwgbWVtYmVycz1Ob25lLCAqLCBudW1lcmljX293bmVyPUZhbHNlKToKICAgICAgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcKICAgICAgICAgICAgZGlyZWN0b3J5IGFuZCBzZXQgb3duZXIsIG1vZGlmaWNhdGlvbiB0aW1lIGFuZCBwZXJtaXNzaW9ucyBvbgogICAgICAgICAgICBkaXJlY3RvcmllcyBhZnRlcndhcmRzLiBgcGF0aCcgc3BlY2lmaWVzIGEgZGlmZmVyZW50IGRpcmVjdG9yeQogICAgICAgICAgICB0byBleHRyYWN0IHRvLiBgbWVtYmVycycgaXMgb3B0aW9uYWwgYW5kIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlCi0gICAgICAgICAgIGxpc3QgcmV0dXJuZWQgYnkgZ2V0bWVtYmVycygpLgorICAgICAgICAgICBsaXN0IHJldHVybmVkIGJ5IGdldG1lbWJlcnMoKS4gSWYgYG51bWVyaWNfb3duZXJgIGlzIFRydWUsIG9ubHkKKyAgICAgICAgICAgdGhlIG51bWJlcnMgZm9yIHVzZXIvZ3JvdXAgbmFtZXMgYXJlIHVzZWQgYW5kIG5vdCB0aGUgbmFtZXMuCiAgICAgICAgICIiIgogICAgICAgICBkaXJlY3RvcmllcyA9IFtdCiAKQEAgLTE5ODMsNyArMTk5Niw4IEBACiAgICAgICAgICAgICAgICAgdGFyaW5mbyA9IGNvcHkuY29weSh0YXJpbmZvKQogICAgICAgICAgICAgICAgIHRhcmluZm8ubW9kZSA9IDBvNzAwCiAgICAgICAgICAgICAjIERvIG5vdCBzZXRfYXR0cnMgZGlyZWN0b3JpZXMsIGFzIHdlIHdpbGwgZG8gdGhhdCBmdXJ0aGVyIGRvd24KLSAgICAgICAgICAgIHNlbGYuZXh0cmFjdCh0YXJpbmZvLCBwYXRoLCBzZXRfYXR0cnM9bm90IHRhcmluZm8uaXNkaXIoKSkKKyAgICAgICAgICAgIHNlbGYuZXh0cmFjdCh0YXJpbmZvLCBwYXRoLCBzZXRfYXR0cnM9bm90IHRhcmluZm8uaXNkaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAKICAgICAgICAgIyBSZXZlcnNlIHNvcnQgZGlyZWN0b3JpZXMuCiAgICAgICAgIGRpcmVjdG9yaWVzLnNvcnQoa2V5PWxhbWJkYSBhOiBhLm5hbWUpCkBAIC0xOTkzLDcgKzIwMDcsNyBAQAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBkaXJlY3RvcmllczoKICAgICAgICAgICAgIGRpcnBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aCwgdGFyaW5mby5uYW1lKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgZGlycGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmNob3duKHRhcmluZm8sIGRpcnBhdGgsIG51bWVyaWNfb3duZXI9bnVtZXJpY19vd25lcikKICAgICAgICAgICAgICAgICBzZWxmLnV0aW1lKHRhcmluZm8sIGRpcnBhdGgpCiAgICAgICAgICAgICAgICAgc2VsZi5jaG1vZCh0YXJpbmZvLCBkaXJwYXRoKQogICAgICAgICAgICAgZXhjZXB0IEV4dHJhY3RFcnJvciBhcyBlOgpAQCAtMjAwMiwxMiArMjAxNiwxNCBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RiZygxLCAidGFyZmlsZTogJXMiICUgZSkKIAotICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUpOgorICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD0iIiwgc2V0X2F0dHJzPVRydWUsICosIG51bWVyaWNfb3duZXI9RmFsc2UpOgogICAgICAgICAiIiJFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCiAgICAgICAgICAgIHVzaW5nIGl0cyBmdWxsIG5hbWUuIEl0cyBmaWxlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhcyBhY2N1cmF0ZWx5CiAgICAgICAgICAgIGFzIHBvc3NpYmxlLiBgbWVtYmVyJyBtYXkgYmUgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBZb3UgY2FuCiAgICAgICAgICAgIHNwZWNpZnkgYSBkaWZmZXJlbnQgZGlyZWN0b3J5IHVzaW5nIGBwYXRoJy4gRmlsZSBhdHRyaWJ1dGVzIChvd25lciwKLSAgICAgICAgICAgbXRpbWUsIG1vZGUpIGFyZSBzZXQgdW5sZXNzIGBzZXRfYXR0cnMnIGlzIEZhbHNlLgorICAgICAgICAgICBtdGltZSwgbW9kZSkgYXJlIHNldCB1bmxlc3MgYHNldF9hdHRycycgaXMgRmFsc2UuIElmIGBudW1lcmljX293bmVyYAorICAgICAgICAgICBpcyBUcnVlLCBvbmx5IHRoZSBudW1iZXJzIGZvciB1c2VyL2dyb3VwIG5hbWVzIGFyZSB1c2VkIGFuZCBub3QKKyAgICAgICAgICAgdGhlIG5hbWVzLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMDIyLDcgKzIwMzgsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2V4dHJhY3RfbWVtYmVyKHRhcmluZm8sIG9zLnBhdGguam9pbihwYXRoLCB0YXJpbmZvLm5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2F0dHJzPXNldF9hdHRycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9hdHRycz1zZXRfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX293bmVyPW51bWVyaWNfb3duZXIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBpZiBzZWxmLmVycm9ybGV2ZWwgPiAwOgogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0yMDY4LDcgKzIwODUsOCBAQAogICAgICAgICAgICAgIyBibGtkZXYsIGV0Yy4pLCByZXR1cm4gTm9uZSBpbnN0ZWFkIG9mIGEgZmlsZSBvYmplY3QuCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSk6CisgICAgZGVmIF9leHRyYWN0X21lbWJlcihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoLCBzZXRfYXR0cnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfb3duZXI9RmFsc2UpOgogICAgICAgICAiIiJFeHRyYWN0IHRoZSBUYXJJbmZvIG9iamVjdCB0YXJpbmZvIHRvIGEgcGh5c2ljYWwKICAgICAgICAgICAgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KICAgICAgICAgIiIiCkBAIC0yMTA2LDcgKzIxMjQsNyBAQAogICAgICAgICAgICAgc2VsZi5tYWtlZmlsZSh0YXJpbmZvLCB0YXJnZXRwYXRoKQogCiAgICAgICAgIGlmIHNldF9hdHRyczoKLSAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCkKKyAgICAgICAgICAgIHNlbGYuY2hvd24odGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcikKICAgICAgICAgICAgIGlmIG5vdCB0YXJpbmZvLmlzc3ltKCk6CiAgICAgICAgICAgICAgICAgc2VsZi5jaG1vZCh0YXJpbmZvLCB0YXJnZXRwYXRoKQogICAgICAgICAgICAgICAgIHNlbGYudXRpbWUodGFyaW5mbywgdGFyZ2V0cGF0aCkKQEAgLTIxOTUsMTkgKzIyMTMsMjQgQEAKICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoInVuYWJsZSB0byByZXNvbHZlIGxpbmsgaW5zaWRlIGFyY2hpdmUiKQogCi0gICAgZGVmIGNob3duKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgotICAgICAgICAiIiJTZXQgb3duZXIgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4KKyAgICBkZWYgY2hvd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCwgbnVtZXJpY19vd25lcik6CisgICAgICAgICIiIlNldCBvd25lciBvZiB0YXJnZXRwYXRoIGFjY29yZGluZyB0byB0YXJpbmZvLiBJZiBudW1lcmljX293bmVyCisgICAgICAgICAgIGlzIFRydWUsIHVzZSAuZ2lkLy51aWQgaW5zdGVhZCBvZiAuZ25hbWUvLnVuYW1lLgogICAgICAgICAiIiIKICAgICAgICAgaWYgcHdkIGFuZCBoYXNhdHRyKG9zLCAiZ2V0ZXVpZCIpIGFuZCBvcy5nZXRldWlkKCkgPT0gMDoKICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBiZSByb290IHRvIGRvIHNvLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIGlmIG51bWVyaWNfb3duZXI6CiAgICAgICAgICAgICAgICAgZyA9IHRhcmluZm8uZ2lkCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdSA9IHB3ZC5nZXRwd25hbSh0YXJpbmZvLnVuYW1lKVsyXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgdSA9IHRhcmluZm8udWlkCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc3N5bSgpIGFuZCBoYXNhdHRyKG9zLCAibGNob3duIik6CiAgICAgICAgICAgICAgICAgICAgIG9zLmxjaG93bih0YXJnZXRwYXRoLCB1LCBnKQpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNTE3MzhmMC4uNzJkYWJjNyAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC0zNiwxMCArMzYsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdG9ycwotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiBfX2FsbF9fID0gWyJUZWxuZXQiXQogCkBAIC0yNjUsOCArMjYyLDggQEAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uLiIiIgogICAgICAgICBzb2NrID0gc2VsZi5zb2NrCi0gICAgICAgIHNlbGYuc29jayA9IDAKLSAgICAgICAgc2VsZi5lb2YgPSAxCisgICAgICAgIHNlbGYuc29jayA9IE5vbmUKKyAgICAgICAgc2VsZi5lb2YgPSBUcnVlCiAgICAgICAgIHNlbGYuaWFjc2VxID0gYicnCiAgICAgICAgIHNlbGYuc2IgPSAwCiAgICAgICAgIGlmIHNvY2s6CmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggMDUzNzIyOC4uMmYxZjlmZCAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNiw2ICs2LDE0IEBACiBleGNlcHQgZm9yICdta3RlbXAnLiAgJ21rdGVtcCcgaXMgc3ViamVjdCB0byByYWNlIGNvbmRpdGlvbnMgYW5kCiBzaG91bGQgbm90IGJlIHVzZWQ7IGl0IGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHkuCiAKK1RoZSBkZWZhdWx0IHBhdGggbmFtZXMgYXJlIHJldHVybmVkIGFzIHN0ci4gIElmIHlvdSBzdXBwbHkgYnl0ZXMgYXMKK2lucHV0LCBhbGwgcmV0dXJuIHZhbHVlcyB3aWxsIGJlIGluIGJ5dGVzLiAgRXg6CisKKyAgICA+Pj4gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgKDQsICcvdG1wL3RtcHRwdTluaW44JykKKyAgICA+Pj4gdGVtcGZpbGUubWtkdGVtcChzdWZmaXg9YicnKQorICAgIGInL3RtcC90bXBwYmk4ZjBoeScKKwogVGhpcyBtb2R1bGUgYWxzbyBwcm92aWRlcyBzb21lIGRhdGEgaXRlbXMgdG8gdGhlIHVzZXI6CiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCkBAIC0yMSw3ICsyOSw4IEBACiAgICAgIm1rc3RlbXAiLCAibWtkdGVtcCIsICAgICAgICAgICAgICAgICAgIyBsb3cgbGV2ZWwgc2FmZSBpbnRlcmZhY2VzCiAgICAgIm1rdGVtcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkIHVuc2FmZSBpbnRlcmZhY2UKICAgICAiVE1QX01BWCIsICJnZXR0ZW1wcHJlZml4IiwgICAgICAgICAgICAjIGNvbnN0YW50cwotICAgICJ0ZW1wZGlyIiwgImdldHRlbXBkaXIiCisgICAgInRlbXBkaXIiLCAiZ2V0dGVtcGRpciIsCisgICAgImdldHRlbXBwcmVmaXhiIiwgImdldHRlbXBkaXJiIiwKICAgIF0KIAogCkBAIC01NSw4ICs2NCwxMCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAotIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcwotIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCisjIFRoaXMgdmFyaWFibGUgX3dhc18gdW51c2VkIGZvciBsZWdhY3kgcmVhc29ucywgc2VlIGlzc3VlIDEwMzU0LgorIyBCdXQgYXMgb2YgMy41IHdlIGFjdHVhbGx5IHVzZSBpdCBhdCBydW50aW1lIHNvIGNoYW5naW5nIGl0IHdvdWxkCisjIGhhdmUgYSBwb3NzaWJseSBkZXNpcmFibGUgc2lkZSBlZmZlY3QuLi4gIEJ1dCB3ZSBkbyBub3Qgd2FudCB0byBzdXBwb3J0CisjIHRoYXQgYXMgYW4gQVBJLiAgSXQgaXMgdW5kb2N1bWVudGVkIG9uIHB1cnBvc2UuICBEbyBub3QgZGVwZW5kIG9uIHRoaXMuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04Miw2ICs5Myw0NiBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBUcnVlCiAKKworZGVmIF9pbmZlcl9yZXR1cm5fdHlwZSgqYXJncyk6CisgICAgIiIiTG9vayBhdCB0aGUgdHlwZSBvZiBhbGwgYXJncyBhbmQgZGl2aW5lIHRoZWlyIGltcGxpZWQgcmV0dXJuIHR5cGUuIiIiCisgICAgcmV0dXJuX3R5cGUgPSBOb25lCisgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJnLCBieXRlcyk6CisgICAgICAgICAgICBpZiByZXR1cm5fdHlwZSBpcyBzdHI6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4ndCBtaXggYnl0ZXMgYW5kIG5vbi1ieXRlcyBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJldHVybl90eXBlID0gYnl0ZXMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJldHVybl90eXBlIGlzIGJ5dGVzOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IGJ5dGVzIGFuZCBub24tYnl0ZXMgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0aCBjb21wb25lbnRzLiIpCisgICAgICAgICAgICByZXR1cm5fdHlwZSA9IHN0cgorICAgIGlmIHJldHVybl90eXBlIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBzdHIgICMgdGVtcGZpbGUgQVBJcyByZXR1cm4gYSBzdHIgYnkgZGVmYXVsdC4KKyAgICByZXR1cm4gcmV0dXJuX3R5cGUKKworCitkZWYgX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKToKKyAgICAiIiJDb21tb24gcGFyYW1ldGVyIHByb2Nlc3NpbmcgZm9yIG1vc3QgQVBJcyBpbiB0aGlzIG1vZHVsZS4iIiIKKyAgICBvdXRwdXRfdHlwZSA9IF9pbmZlcl9yZXR1cm5fdHlwZShwcmVmaXgsIHN1ZmZpeCwgZGlyKQorICAgIGlmIHN1ZmZpeCBpcyBOb25lOgorICAgICAgICBzdWZmaXggPSBvdXRwdXRfdHlwZSgpCisgICAgaWYgcHJlZml4IGlzIE5vbmU6CisgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgIHByZWZpeCA9IHRlbXBsYXRlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmVmaXggPSBfb3MuZnNlbmNvZGUodGVtcGxhdGUpCisgICAgaWYgZGlyIGlzIE5vbmU6CisgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlyID0gZ2V0dGVtcGRpcmIoKQorICAgIHJldHVybiBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZQorCisKIGNsYXNzIF9SYW5kb21OYW1lU2VxdWVuY2U6CiAgICAgIiIiQW4gaW5zdGFuY2Ugb2YgX1JhbmRvbU5hbWVTZXF1ZW5jZSBnZW5lcmF0ZXMgYW4gZW5kbGVzcwogICAgIHNlcXVlbmNlIG9mIHVucHJlZGljdGFibGUgc3RyaW5ncyB3aGljaCBjYW4gc2FmZWx5IGJlIGluY29ycG9yYXRlZApAQCAtMTk1LDE3ICsyNDYsMTggQEAKICAgICByZXR1cm4gX25hbWVfc2VxdWVuY2UKIAogCi1kZWYgX21rc3RlbXBfaW5uZXIoZGlyLCBwcmUsIHN1ZiwgZmxhZ3MpOgorZGVmIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzLCBvdXRwdXRfdHlwZSk6CiAgICAgIiIiQ29kZSBjb21tb24gdG8gbWtzdGVtcCwgVGVtcG9yYXJ5RmlsZSwgYW5kIE5hbWVkVGVtcG9yYXJ5RmlsZS4iIiIKIAogICAgIG5hbWVzID0gX2dldF9jYW5kaWRhdGVfbmFtZXMoKQorICAgIGlmIG91dHB1dF90eXBlIGlzIGJ5dGVzOgorICAgICAgICBuYW1lcyA9IG1hcChfb3MuZnNlbmNvZGUsIG5hbWVzKQogCiAgICAgZm9yIHNlcSBpbiByYW5nZShUTVBfTUFYKToKICAgICAgICAgbmFtZSA9IG5leHQobmFtZXMpCiAgICAgICAgIGZpbGUgPSBfb3MucGF0aC5qb2luKGRpciwgcHJlICsgbmFtZSArIHN1ZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmQgPSBfb3Mub3BlbihmaWxlLCBmbGFncywgMG82MDApCi0gICAgICAgICAgICByZXR1cm4gKGZkLCBfb3MucGF0aC5hYnNwYXRoKGZpbGUpKQogICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKQEAgLTIxNiw2ICsyNjgsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCiAKICAgICByYWlzZSBGaWxlRXhpc3RzRXJyb3IoX2Vycm5vLkVFWElTVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZmlsZSBuYW1lIGZvdW5kIikKQEAgLTIyNCw5ICsyNzcsMTMgQEAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCiAKIGRlZiBnZXR0ZW1wcHJlZml4KCk6Ci0gICAgIiIiQWNjZXNzb3IgZm9yIHRlbXBkaXIudGVtcGxhdGUuIiIiCisgICAgIiIiVGhlIGRlZmF1bHQgcHJlZml4IGZvciB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuIiIiCiAgICAgcmV0dXJuIHRlbXBsYXRlCiAKK2RlZiBnZXR0ZW1wcHJlZml4YigpOgorICAgICIiIlRoZSBkZWZhdWx0IHByZWZpeCBmb3IgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGFzIGJ5dGVzLiIiIgorICAgIHJldHVybiBfb3MuZnNlbmNvZGUoZ2V0dGVtcHByZWZpeCgpKQorCiB0ZW1wZGlyID0gTm9uZQogCiBkZWYgZ2V0dGVtcGRpcigpOgpAQCAtMjQxLDcgKzI5OCwxMSBAQAogICAgICAgICAgICAgX29uY2VfbG9jay5yZWxlYXNlKCkKICAgICByZXR1cm4gdGVtcGRpcgogCi1kZWYgbWtzdGVtcChzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwgZGlyPU5vbmUsIHRleHQ9RmFsc2UpOgorZGVmIGdldHRlbXBkaXJiKCk6CisgICAgIiIiQSBieXRlcyB2ZXJzaW9uIG9mIHRlbXBmaWxlLmdldHRlbXBkaXIoKS4iIiIKKyAgICByZXR1cm4gX29zLmZzZW5jb2RlKGdldHRlbXBkaXIoKSkKKworZGVmIG1rc3RlbXAoc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSwgdGV4dD1GYWxzZSk6CiAgICAgIiIiVXNlci1jYWxsYWJsZSBmdW5jdGlvbiB0byBjcmVhdGUgYW5kIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkKICAgICBmaWxlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHBhaXIgKGZkLCBuYW1lKSB3aGVyZSBmZCBpcyB0aGUKICAgICBmaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgb3Mub3BlbiwgYW5kIG5hbWUgaXMgdGhlIGZpbGVuYW1lLgpAQCAtMjU5LDYgKzMyMCwxMCBAQAogICAgIG1vZGUuICBFbHNlICh0aGUgZGVmYXVsdCkgdGhlIGZpbGUgaXMgb3BlbmVkIGluIGJpbmFyeSBtb2RlLiAgT24KICAgICBzb21lIG9wZXJhdGluZyBzeXN0ZW1zLCB0aGlzIG1ha2VzIG5vIGRpZmZlcmVuY2UuCiAKKyAgICBzdWZmaXgsIHByZWZpeCBhbmQgZGlyIG11c3QgYWxsIGNvbnRhaW4gdGhlIHNhbWUgdHlwZSBpZiBzcGVjaWZpZWQuCisgICAgSWYgdGhleSBhcmUgYnl0ZXMsIHRoZSByZXR1cm5lZCBuYW1lIHdpbGwgYmUgYnl0ZXM7IHN0ciBvdGhlcndpc2UuCisgICAgQSB2YWx1ZSBvZiBOb25lIHdpbGwgY2F1c2UgYW4gYXBwcm9wcmlhdGUgZGVmYXVsdCB0byBiZSB1c2VkLgorCiAgICAgVGhlIGZpbGUgaXMgcmVhZGFibGUgYW5kIHdyaXRhYmxlIG9ubHkgYnkgdGhlIGNyZWF0aW5nIHVzZXIgSUQuCiAgICAgSWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdXNlcyBwZXJtaXNzaW9uIGJpdHMgdG8gaW5kaWNhdGUgd2hldGhlciBhCiAgICAgZmlsZSBpcyBleGVjdXRhYmxlLCB0aGUgZmlsZSBpcyBleGVjdXRhYmxlIGJ5IG5vIG9uZS4gVGhlIGZpbGUKQEAgLTI2NywxOCArMzMyLDE3IEBACiAgICAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZyB0aGUgZmlsZSB3aGVuIGRvbmUgd2l0aCBpdC4KICAgICAiIiIKIAotICAgIGlmIGRpciBpcyBOb25lOgotICAgICAgICBkaXIgPSBnZXR0ZW1wZGlyKCkKKyAgICBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZSA9IF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcikKIAogICAgIGlmIHRleHQ6CiAgICAgICAgIGZsYWdzID0gX3RleHRfb3BlbmZsYWdzCiAgICAgZWxzZToKICAgICAgICAgZmxhZ3MgPSBfYmluX29wZW5mbGFncwogCi0gICAgcmV0dXJuIF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzKQorICAgIHJldHVybiBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCiAKIAotZGVmIG1rZHRlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKK2RlZiBta2R0ZW1wKHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpOgogICAgICIiIlVzZXItY2FsbGFibGUgZnVuY3Rpb24gdG8gY3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWUgdGVtcG9yYXJ5CiAgICAgZGlyZWN0b3J5LiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4KIApAQCAtMjkxLDE3ICszNTUsMTcgQEAKICAgICBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSBkaXJlY3Rvcnkgd2hlbiBkb25lIHdpdGggaXQuCiAgICAgIiIiCiAKLSAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgZGlyID0gZ2V0dGVtcGRpcigpCisgICAgcHJlZml4LCBzdWZmaXgsIGRpciwgb3V0cHV0X3R5cGUgPSBfc2FuaXRpemVfcGFyYW1zKHByZWZpeCwgc3VmZml4LCBkaXIpCiAKICAgICBuYW1lcyA9IF9nZXRfY2FuZGlkYXRlX25hbWVzKCkKKyAgICBpZiBvdXRwdXRfdHlwZSBpcyBieXRlczoKKyAgICAgICAgbmFtZXMgPSBtYXAoX29zLmZzZW5jb2RlLCBuYW1lcykKIAogICAgIGZvciBzZXEgaW4gcmFuZ2UoVE1QX01BWCk6CiAgICAgICAgIG5hbWUgPSBuZXh0KG5hbWVzKQogICAgICAgICBmaWxlID0gX29zLnBhdGguam9pbihkaXIsIHByZWZpeCArIG5hbWUgKyBzdWZmaXgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9vcy5ta2RpcihmaWxlLCAwbzcwMCkKLSAgICAgICAgICAgIHJldHVybiBmaWxlCiAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgpAQCAtMzEyLDYgKzM3Niw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIGZpbGUKIAogICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcihfZXJybm8uRUVYSVNULAogICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCkBAIC0zMjMsOCArMzg4LDggQEAKICAgICBBcmd1bWVudHMgYXJlIGFzIGZvciBta3N0ZW1wLCBleGNlcHQgdGhhdCB0aGUgJ3RleHQnIGFyZ3VtZW50IGlzCiAgICAgbm90IGFjY2VwdGVkLgogCi0gICAgVGhpcyBmdW5jdGlvbiBpcyB1bnNhZmUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gIFRoZSBmaWxlIG5hbWUKLSAgICByZWZlcnMgdG8gYSBmaWxlIHRoYXQgZGlkIG5vdCBleGlzdCBhdCBzb21lIHBvaW50LCBidXQgYnkgdGhlIHRpbWUKKyAgICBUSElTIEZVTkNUSU9OIElTIFVOU0FGRSBBTkQgU0hPVUxEIE5PVCBCRSBVU0VELiAgVGhlIGZpbGUgbmFtZSBtYXkKKyAgICByZWZlciB0byBhIGZpbGUgdGhhdCBkaWQgbm90IGV4aXN0IGF0IHNvbWUgcG9pbnQsIGJ1dCBieSB0aGUgdGltZQogICAgIHlvdSBnZXQgYXJvdW5kIHRvIGNyZWF0aW5nIGl0LCBzb21lb25lIGVsc2UgbWF5IGhhdmUgYmVhdGVuIHlvdSB0bwogICAgIHRoZSBwdW5jaC4KICAgICAiIiIKQEAgLTQ1NCw3ICs1MTksNyBAQAogCiAKIGRlZiBOYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlyPU5vbmUsIGRlbGV0ZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBhIHRlbXBvcmFyeSBmaWxlLgogICAgIEFyZ3VtZW50czoKQEAgLTQ3MSw4ICs1MzYsNyBAQAogICAgIHdoZW4gaXQgaXMgY2xvc2VkIHVubGVzcyB0aGUgJ2RlbGV0ZScgYXJndW1lbnQgaXMgc2V0IHRvIEZhbHNlLgogICAgICIiIgogCi0gICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgIHByZWZpeCwgc3VmZml4LCBkaXIsIG91dHB1dF90eXBlID0gX3Nhbml0aXplX3BhcmFtcyhwcmVmaXgsIHN1ZmZpeCwgZGlyKQogCiAgICAgZmxhZ3MgPSBfYmluX29wZW5mbGFncwogCkBAIC00ODEsNyArNTQ1LDcgQEAKICAgICBpZiBfb3MubmFtZSA9PSAnbnQnIGFuZCBkZWxldGU6CiAgICAgICAgIGZsYWdzIHw9IF9vcy5PX1RFTVBPUkFSWQogCi0gICAgKGZkLCBuYW1lKSA9IF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzKQorICAgIChmZCwgbmFtZSkgPSBfbWtzdGVtcF9pbm5lcihkaXIsIHByZWZpeCwgc3VmZml4LCBmbGFncywgb3V0cHV0X3R5cGUpCiAgICAgdHJ5OgogICAgICAgICBmaWxlID0gX2lvLm9wZW4oZmQsIG1vZGUsIGJ1ZmZlcmluZz1idWZmZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPW5ld2xpbmUsIGVuY29kaW5nPWVuY29kaW5nKQpAQCAtNDk3LDggKzU2MSwxMyBAQAogICAgIFRlbXBvcmFyeUZpbGUgPSBOYW1lZFRlbXBvcmFyeUZpbGUKIAogZWxzZToKKyAgICAjIElzIHRoZSBPX1RNUEZJTEUgZmxhZyBhdmFpbGFibGUgYW5kIGRvZXMgaXQgd29yaz8KKyAgICAjIFRoZSBmbGFnIGlzIHNldCB0byBGYWxzZSBpZiBvcy5vcGVuKGRpciwgb3MuT19UTVBGSUxFKSByYWlzZXMgYW4KKyAgICAjIElzQURpcmVjdG9yeUVycm9yIGV4Y2VwdGlvbgorICAgIF9PX1RNUEZJTEVfV09SS1MgPSBoYXNhdHRyKF9vcywgJ09fVE1QRklMRScpCisKICAgICBkZWYgVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT1Ob25lLCBzdWZmaXg9IiIsIHByZWZpeD10ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPU5vbmUsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICBkaXI9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIGEgdGVtcG9yYXJ5IGZpbGUuCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTUxMiwxMyArNTgxLDMzIEBACiAgICAgICAgIFJldHVybnMgYW4gb2JqZWN0IHdpdGggYSBmaWxlLWxpa2UgaW50ZXJmYWNlLiAgVGhlIGZpbGUgaGFzIG5vCiAgICAgICAgIG5hbWUsIGFuZCB3aWxsIGNlYXNlIHRvIGV4aXN0IHdoZW4gaXQgaXMgY2xvc2VkLgogICAgICAgICAiIiIKKyAgICAgICAgZ2xvYmFsIF9PX1RNUEZJTEVfV09SS1MKIAotICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IGdldHRlbXBkaXIoKQorICAgICAgICBwcmVmaXgsIHN1ZmZpeCwgZGlyLCBvdXRwdXRfdHlwZSA9IF9zYW5pdGl6ZV9wYXJhbXMocHJlZml4LCBzdWZmaXgsIGRpcikKIAogICAgICAgICBmbGFncyA9IF9iaW5fb3BlbmZsYWdzCisgICAgICAgIGlmIF9PX1RNUEZJTEVfV09SS1M6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmxhZ3MyID0gKGZsYWdzIHwgX29zLk9fVE1QRklMRSkgJiB+X29zLk9fQ1JFQVQKKyAgICAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGRpciwgZmxhZ3MyLCAwbzYwMCkKKyAgICAgICAgICAgIGV4Y2VwdCBJc0FEaXJlY3RvcnlFcnJvcjoKKyAgICAgICAgICAgICAgICAjIExpbnV4IGtlcm5lbCBvbGRlciB0aGFuIDMuMTEgaWdub3JlcyBPX1RNUEZJTEUgZmxhZy4KKyAgICAgICAgICAgICAgICAjIFNldCBmbGFnIHRvIEZhbHNlIHRvIG5vdCB0cnkgYWdhaW4uCisgICAgICAgICAgICAgICAgX09fVE1QRklMRV9XT1JLUyA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoZSBmaWxlc3lzdGVtIG9mIHRoZSBkaXJlY3RvcnkgZG9lcyBub3Qgc3VwcG9ydCBPX1RNUEZJTEUuCisgICAgICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgT1NFcnJvcig5NSwgJ09wZXJhdGlvbiBub3Qgc3VwcG9ydGVkJykuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBfaW8ub3BlbihmZCwgbW9kZSwgYnVmZmVyaW5nPWJ1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmU9bmV3bGluZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICBfb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAjIEZhbGxiYWNrIHRvIF9ta3N0ZW1wX2lubmVyKCkuCiAKLSAgICAgICAgKGZkLCBuYW1lKSA9IF9ta3N0ZW1wX2lubmVyKGRpciwgcHJlZml4LCBzdWZmaXgsIGZsYWdzKQorICAgICAgICAoZmQsIG5hbWUpID0gX21rc3RlbXBfaW5uZXIoZGlyLCBwcmVmaXgsIHN1ZmZpeCwgZmxhZ3MsIG91dHB1dF90eXBlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MudW5saW5rKG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gX2lvLm9wZW4oZmQsIG1vZGUsIGJ1ZmZlcmluZz1idWZmZXJpbmcsCkBAIC01MzYsNyArNjI1LDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfc2l6ZT0wLCBtb2RlPSd3K2InLCBidWZmZXJpbmc9LTEsCiAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIG5ld2xpbmU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKKyAgICAgICAgICAgICAgICAgc3VmZml4PU5vbmUsIHByZWZpeD1Ob25lLCBkaXI9Tm9uZSk6CiAgICAgICAgIGlmICdiJyBpbiBtb2RlOgogICAgICAgICAgICAgc2VsZi5fZmlsZSA9IF9pby5CeXRlc0lPKCkKICAgICAgICAgZWxzZToKQEAgLTY4Nyw3ICs3NzYsNyBAQAogICAgIGluIGl0IGFyZSByZW1vdmVkLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1ZmZpeD0iIiwgcHJlZml4PXRlbXBsYXRlLCBkaXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1ZmZpeD1Ob25lLCBwcmVmaXg9Tm9uZSwgZGlyPU5vbmUpOgogICAgICAgICBzZWxmLm5hbWUgPSBta2R0ZW1wKHN1ZmZpeCwgcHJlZml4LCBkaXIpCiAgICAgICAgIHNlbGYuX2ZpbmFsaXplciA9IF93ZWFrcmVmLmZpbmFsaXplKAogICAgICAgICAgICAgc2VsZiwgc2VsZi5fY2xlYW51cCwgc2VsZi5uYW1lLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IDIwNGQ4OTQuLmU5MTIwYWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTE5LDcgKzE5LDcgQEAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHRlc3Quc3VwcG9ydAotaW1wb3J0IHRlc3Quc2NyaXB0X2hlbHBlcgoraW1wb3J0IHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyCiAKIAogIyBTa2lwIHRlc3RzIGlmIF9tdWx0aXByb2Nlc3Npbmcgd2Fzbid0IGJ1aWx0LgpAQCAtMjYyNCw3ICsyNjI0LDcgQEAKIAogICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIGwuYmluZCgodGVzdC5zdXBwb3J0LkhPU1QsIDApKQotICAgICAgICBsLmxpc3RlbigxKQorICAgICAgICBsLmxpc3RlbigpCiAgICAgICAgIGNvbm4uc2VuZChsLmdldHNvY2tuYW1lKCkpCiAgICAgICAgIG5ld19jb25uLCBhZGRyID0gbC5hY2NlcHQoKQogICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCkBAIC0zMjcxLDcgKzMyNzEsNyBAQAogICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CiAgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgbC5iaW5kKCh0ZXN0LnN1cHBvcnQuSE9TVCwgMCkpCi0gICAgICAgIGwubGlzdGVuKDQpCisgICAgICAgIGwubGlzdGVuKCkKICAgICAgICAgYWRkciA9IGwuZ2V0c29ja25hbWUoKQogICAgICAgICByZWFkZXJzID0gW10KICAgICAgICAgcHJvY3MgPSBbXQpAQCAtMzQ4MywxMSArMzQ4MywxMSBAQAogICAgICAgICBzbSA9IG11bHRpcHJvY2Vzc2luZy5nZXRfc3RhcnRfbWV0aG9kKCkKICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnbXBfZm9ya19ib21iLnB5JykKICAgICAgICAgaWYgc20gIT0gJ2ZvcmsnOgotICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gdGVzdC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZShuYW1lLCBzbSkKKyAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZShuYW1lLCBzbSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInUnVudGltZUVycm9yJywgZXJyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gdGVzdC5zY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2sobmFtZSwgc20pCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKG5hbWUsIHNtKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQucnN0cmlwKCksIGInMTIzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiODVlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CkBAIC0wLDAgKzEsMiBAQAorYXN5bmMgZGVmIGZvbyhhPWF3YWl0IHNvbWV0aGluZygpKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjg1ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRlMWJjNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAzM2IyOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgYXdhaXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMTlhZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIGZvbygpOgorICAgIGF3YWl0IHNvbWV0aGluZygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjBhMjNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpAQCAtMCwwICsxLDIgQEAKK2FzeW5jIGRlZiBmb28oKToKKyAgICB5aWVsZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFlNGJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgeWllbGQgZnJvbSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2MzZmOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKQEAgLTAsMCArMSwyIEBACithc3luYyBkZWYgZm9vKCk6CisgICAgYXdhaXQgYXdhaXQgZnV0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weSBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CmluZGV4IGE5NDJkNGQuLjM1N2ZlMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CkBAIC0zLDYgKzMsNyBAQAogU2VlIGh0dHA6Ly93d3cuem9wZS5vcmcvTWVtYmVycy9mZHJha2UvRGF0ZVRpbWVXaWtpL1Rlc3RDYXNlcwogIiIiCiAKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCkBAIC01MCw2ICs1MSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lLk1JTllFQVIsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0ZXRpbWUuTUFYWUVBUiwgOTk5OSkKIAorICAgIGRlZiB0ZXN0X25hbWVfY2xlYW51cChzZWxmKToKKyAgICAgICAgaWYgJ19GYXN0JyBub3QgaW4gc3RyKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRhdGV0aW1lID0gZGF0ZXRpbWVfbW9kdWxlCisgICAgICAgIG5hbWVzID0gc2V0KG5hbWUgZm9yIG5hbWUgaW4gZGlyKGRhdGV0aW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCdfXycpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgnX18nKSkKKyAgICAgICAgYWxsb3dlZCA9IHNldChbJ01BWFlFQVInLCAnTUlOWUVBUicsICdkYXRlJywgJ2RhdGV0aW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGV0aW1lX0NBUEknLCAndGltZScsICd0aW1lZGVsdGEnLCAndGltZXpvbmUnLAorICAgICAgICAgICAgICAgICAgICAgICAndHppbmZvJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZXMgLSBhbGxvd2VkLCBzZXQoW10pKQorCiAgICAgZGVmIHRlc3RfZGl2aWRlX2FuZF9yb3VuZChzZWxmKToKICAgICAgICAgaWYgJ19GYXN0JyBpbiBzdHIoc2VsZik6CiAgICAgICAgICAgICByZXR1cm4KQEAgLTExNzMsMTEgKzExODUsMTMgQEAKICAgICAgICAgI2NoZWNrIHRoYXQgdGhpcyBzdGFuZGFyZCBleHRlbnNpb24gd29ya3MKICAgICAgICAgdC5zdHJmdGltZSgiJWYiKQogCi0KICAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6CiAgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDA3LCA5LCAxMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5fX2Zvcm1hdF9fKCcnKSwgc3RyKGR0KSkKIAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXm11c3QgYmUgc3RyLCBub3QgaW50JCcpOgorICAgICAgICAgICAgZHQuX19mb3JtYXRfXygxMjMpCisKICAgICAgICAgIyBjaGVjayB0aGF0IGEgZGVyaXZlZCBjbGFzcydzIF9fc3RyX18oKSBnZXRzIGNhbGxlZAogICAgICAgICBjbGFzcyBBKHNlbGYudGhlY2xhc3MpOgogICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xMzI5LDggKzEzNDMsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBMYXJnZXJUaGFuQW55dGhpbmcpCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShvdGhlciwgTGFyZ2VyVGhhbkFueXRoaW5nKQotICAgICAgICAgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKG90aGVyLCBMYXJnZXJUaGFuQW55dGhpbmcpCiAgICAgICAgICAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gbm90IGlzaW5zdGFuY2Uob3RoZXIsIExhcmdlclRoYW5Bbnl0aGluZykKICAgICAgICAgICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgpAQCAtMTQzMyw5ICsxNDQ1LDEwIEBACiAgICAgICAgIGZvciBtb250aF9ieXRlIGluIGInOScsIGInXDAnLCBiJ1xyJywgYidceGZmJzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVs6Ml0gKyBtb250aF9ieXRlICsgYmFzZVszOl0pCi0gICAgICAgICMgR29vZCBieXRlcywgYnV0IGJhZCB0emluZm86Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMoWzFdICogbGVuKGJhc2UpKSwgJ0VTVCcpCisgICAgICAgIGlmIGlzc3ViY2xhc3Moc2VsZi50aGVjbGFzcywgZGF0ZXRpbWUpOgorICAgICAgICAgICAgIyBHb29kIGJ5dGVzLCBidXQgYmFkIHR6aW5mbzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYmFkIHR6aW5mbyBzdGF0ZSBhcmckJyk6CisgICAgICAgICAgICAgICAgc2VsZi50aGVjbGFzcyhieXRlcyhbMV0gKiBsZW4oYmFzZSkpLCAnRVNUJykKIAogICAgICAgICBmb3Igb3JkX2J5dGUgaW4gcmFuZ2UoMSwgMTMpOgogICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCBibG93IHVwIGJlY2F1c2Ugb2YgdGhlIG1vbnRoIGJ5dGUgYWxvbmUuICBJZgpAQCAtMTUxMSw2ICsxNTI0LDkgQEAKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwLCA0LCA1LCAxLCAxMjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuX19mb3JtYXRfXygnJyksIHN0cihkdCkpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15tdXN0IGJlIHN0ciwgbm90IGludCQnKToKKyAgICAgICAgICAgIGR0Ll9fZm9ybWF0X18oMTIzKQorCiAgICAgICAgICMgY2hlY2sgdGhhdCBhIGRlcml2ZWQgY2xhc3MncyBfX3N0cl9fKCkgZ2V0cyBjYWxsZWQKICAgICAgICAgY2xhc3MgQShzZWxmLnRoZWNsYXNzKToKICAgICAgICAgICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtMTg5MCw2ICsxOTA2LDcgQEAKICAgICAgICAgZm9yIGluc2FuZSBpbiAtMWUyMDAsIDFlMjAwOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zYW5lKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbmRvd3MgZG9lc24ndCBhY2NlcHQgbmVnYXRpdmUgdGltZXN0YW1wcyIpCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfZmxvYXRfZnJvbXRpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBUaGUgcmVzdWx0IGlzIHR6LWRlcGVuZGVudDsgYXQgbGVhc3QgdGVzdCB0aGF0IHRoaXMgZG9lc24ndApAQCAtMjI2OSw2ICsyMjg2LDkgQEAKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Ll9fZm9ybWF0X18oJycpLCBzdHIodCkpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15tdXN0IGJlIHN0ciwgbm90IGludCQnKToKKyAgICAgICAgICAgIHQuX19mb3JtYXRfXygxMjMpCisKICAgICAgICAgIyBjaGVjayB0aGF0IGEgZGVyaXZlZCBjbGFzcydzIF9fc3RyX18oKSBnZXRzIGNhbGxlZAogICAgICAgICBjbGFzcyBBKHNlbGYudGhlY2xhc3MpOgogICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0yMzMyLDEzICsyMzUyLDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCiAKICAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIHRpbWUgaXMgYWx3YXlzIFRydWUuCiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAwLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNscygwLCAwLCAwLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbHMoMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2xzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbHMoKSkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTIzOTcsNiArMjQxOCw5IEBACiAgICAgICAgIGZvciBob3VyX2J5dGUgaW4gJyAnLCAnOScsIGNocigyNCksICdceGZmJzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91cl9ieXRlICsgYmFzZVsxOl0pCisgICAgICAgICMgR29vZCBieXRlcywgYnV0IGJhZCB0emluZm86CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYmFkIHR6aW5mbyBzdGF0ZSBhcmckJyk6CisgICAgICAgICAgICBzZWxmLnRoZWNsYXNzKGJ5dGVzKFsxXSAqIGxlbihiYXNlKSksICdFU1QnKQogCiAjIEEgbWl4aW4gZm9yIGNsYXNzZXMgd2l0aCBhIHR6aW5mbz0gYXJndW1lbnQuICBTdWJjbGFzc2VzIG11c3QgZGVmaW5lCiAjIHRoZWNsYXNzIGFzIGEgY2xhc3MgYXRyaWJ1dGUsIGFuZCB0aGVjbGFzcygxLCAxLCAxLCB0emluZm89d2hhdGV2ZXIpCkBAIC0yNjU2LDcgKzI2ODAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHQuc3RyZnRpbWUsICIlWiIpCiAKICAgICAgICAgIyBJc3N1ZSAjNjY5NzoKLSAgICAgICAgaWYgJ19GYXN0JyBpbiBzdHIodHlwZShzZWxmKSk6CisgICAgICAgIGlmICdfRmFzdCcgaW4gc3RyKHNlbGYpOgogICAgICAgICAgICAgQmFkdHpuYW1lLnR6ID0gJ1x1ZDgwMCcKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuc3RyZnRpbWUsICIlWiIpCiAKQEAgLTI2OTEsNyArMjcxNSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlcml2ZWQudHpuYW1lKCksICdjb29raWUnKQogCiAgICAgZGVmIHRlc3RfbW9yZV9ib29sKHNlbGYpOgotICAgICAgICAjIFRlc3QgY2FzZXMgd2l0aCBub24tTm9uZSB0emluZm8uCisgICAgICAgICMgdGltZSBpcyBhbHdheXMgVHJ1ZS4KICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogCiAgICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KC0zMDAsICIiKSkKQEAgLTI3MDEsMjIgKzI3MjUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQpCiAKICAgICAgICAgdCA9IGNscyg1LCB0emluZm89Rml4ZWRPZmZzZXQoMzAwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodCkKLQotICAgICAgICB0ID0gY2xzKDIzLCA1OSwgdHppbmZvPUZpeGVkT2Zmc2V0KDIzKjYwICsgNTksICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0KQotCi0gICAgICAgICMgTW9zdGx5IGVuc3VyaW5nIHRoaXMgZG9lc24ndCBvdmVyZmxvdyBpbnRlcm5hbGx5LgotICAgICAgICB0ID0gY2xzKDAsIHR6aW5mbz1GaXhlZE9mZnNldCgyMyo2MCArIDU5LCAiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0KQogCi0gICAgICAgICMgQnV0IHRoaXMgc2hvdWxkIHlpZWxkIGEgdmFsdWUgZXJyb3IgLS0gdGhlIHV0Y29mZnNldCBpcyBib2d1cy4KLSAgICAgICAgdCA9IGNscygwLCB0emluZm89Rml4ZWRPZmZzZXQoMjQqNjAsICIiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBib29sKHQpKQotCi0gICAgICAgICMgTGlrZXdpc2UuCi0gICAgICAgIHQgPSBjbHMoMCwgdHppbmZvPUZpeGVkT2Zmc2V0KC0yNCo2MCwgIiIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IGJvb2wodCkpCisgICAgICAgIHQgPSBjbHMoMjMsIDU5LCB0emluZm89Rml4ZWRPZmZzZXQoMjMqNjAgKyA1OSwgIiIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodCkKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGNscyA9IHNlbGYudGhlY2xhc3MKQEAgLTM4MzAsOCArMzg0Miw1OSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzX2RhdGV0aW1lLCBkYXRldGltZV9zYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRldGltZV9zYywgYXNfZGF0ZXRpbWUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICBkZWYgdGVzdF9leHRyYV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBbZGF0ZS50b2RheSgpLAorICAgICAgICAgICAgICAgICAgdGltZSgpLAorICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUudXRjbm93KCksCisgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoKSwKKyAgICAgICAgICAgICAgICAgIHR6aW5mbygpLAorICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKCkpXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIHguYWJjID0gMQorCisgICAgZGVmIHRlc3RfY2hlY2tfYXJnX3R5cGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBOdW1iZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworICAgICAgICBmb3IgeHggaW4gW2RlY2ltYWwuRGVjaW1hbCgxMCksCisgICAgICAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCcxMC45JyksCisgICAgICAgICAgICAgICAgICAgTnVtYmVyKDEwKV06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAnMTAnKQorCisgICAgICAgIGYxMCA9IE51bWJlcigxMC45KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXl9faW50X18gcmV0dXJuZWQgbm9uLWludCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKHR5cGUgZmxvYXRcKSQnKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQorCisgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgczEwID0gRmxvYXQoMTAuOSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15pbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3QgZmxvYXQkJyk6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIHMxMCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMC4sIDEwLCAxMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLiwgMTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMC4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMC4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMC4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNDA3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC0wLDAgKzEsNDY5IEBACisiIiIKK1RoaXMgdGVzdCBzdWl0ZSBleGVyY2lzZXMgc29tZSBzeXN0ZW0gY2FsbHMgc3ViamVjdCB0byBpbnRlcnJ1cHRpb24gd2l0aCBFSU5UUiwKK3RvIGNoZWNrIHRoYXQgaXQgaXMgYWN0dWFsbHkgaGFuZGxlZCB0cmFuc3BhcmVudGx5LgorSXQgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGJ5IHRoZSBtYWluIHRlc3Qgc3VpdGUgd2l0aGluIGEgY2hpbGQgcHJvY2VzcywgdG8KK2Vuc3VyZSB0aGVyZSBpcyBubyBiYWNrZ3JvdW5kIHRocmVhZCBydW5uaW5nIChzbyB0aGF0IHNpZ25hbHMgYXJlIGRlbGl2ZXJlZCB0bwordGhlIGNvcnJlY3QgdGhyZWFkKS4KK1NpZ25hbHMgYXJlIGdlbmVyYXRlZCBpbi1wcm9jZXNzIHVzaW5nIHNldGl0aW1lcihJVElNRVJfUkVBTCksIHdoaWNoIGFsbG93cworc3ViLXNlY29uZCBwZXJpb2RpY2l0eSAoY29udHJhcmlseSB0byBzaWduYWwoKSkuCisiIiIKKworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICIiIkNvbnRleHQgbWFuYWdlciBraWxsaW5nIHRoZSBzdWJwcm9jZXNzIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuIiIiCisgICAgd2l0aCBwcm9jOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB5aWVsZCBwcm9jCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHByb2Mua2lsbCgpCisgICAgICAgICAgICByYWlzZQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksICJyZXF1aXJlcyBzZXRpdGltZXIoKSIpCitjbGFzcyBFSU5UUkJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIgQmFzZSBjbGFzcyBmb3IgRUlOVFIgdGVzdHMuICIiIgorCisgICAgIyBkZWxheSBmb3IgaW5pdGlhbCBzaWduYWwgZGVsaXZlcnkKKyAgICBzaWduYWxfZGVsYXkgPSAwLjEKKyAgICAjIHNpZ25hbCBkZWxpdmVyeSBwZXJpb2RpY2l0eQorICAgIHNpZ25hbF9wZXJpb2QgPSAwLjEKKyAgICAjIGRlZmF1bHQgc2xlZXAgdGltZSBmb3IgdGVzdHMgLSBzaG91bGQgb2J2aW91c2x5IGhhdmU6CisgICAgIyBzbGVlcF90aW1lID4gc2lnbmFsX3BlcmlvZAorICAgIHNsZWVwX3RpbWUgPSAwLjIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5vcmlnX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBsYW1iZGEgKmFyZ3M6IE5vbmUpCisgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCBjbHMuc2lnbmFsX2RlbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zaWduYWxfcGVyaW9kKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0b3BfYWxhcm0oY2xzKToKKyAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIDAsIDApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMuc3RvcF9hbGFybSgpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3NsZWVwKGNscyk6CisgICAgICAgICMgZGVmYXVsdCBzbGVlcCB0aW1lCisgICAgICAgIHRpbWUuc2xlZXAoY2xzLnNsZWVwX3RpbWUpCisKKyAgICBkZWYgc3VicHJvY2VzcyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIGNtZF9hcmdzID0gKHN5cy5leGVjdXRhYmxlLCAnLWMnKSArIGFyZ3MKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oY21kX2FyZ3MsICoqa3cpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwgInJlcXVpcmVzIHNldGl0aW1lcigpIikKK2NsYXNzIE9TRUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIG9zIG1vZHVsZS4gIiIiCisKKyAgICBkZWYgbmV3X3NsZWVwX3Byb2Nlc3Moc2VsZik6CisgICAgICAgIGNvZGUgPSAnaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoJXIpJyAlIHNlbGYuc2xlZXBfdGltZQorICAgICAgICByZXR1cm4gc2VsZi5zdWJwcm9jZXNzKGNvZGUpCisKKyAgICBkZWYgX3Rlc3Rfd2FpdF9tdWx0aXBsZShzZWxmLCB3YWl0X2Z1bmMpOgorICAgICAgICBudW0gPSAzCisgICAgICAgIHByb2Nlc3NlcyA9IFtzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkgZm9yIF8gaW4gcmFuZ2UobnVtKV0KKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtKToKKyAgICAgICAgICAgIHdhaXRfZnVuYygpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dhaXRfbXVsdGlwbGUob3Mud2FpdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICd3YWl0MycpLCAncmVxdWlyZXMgd2FpdDMoKScpCisgICAgZGVmIHRlc3Rfd2FpdDMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2FpdF9tdWx0aXBsZShsYW1iZGE6IG9zLndhaXQzKDApKQorCisgICAgZGVmIF90ZXN0X3dhaXRfc2luZ2xlKHNlbGYsIHdhaXRfZnVuYyk6CisgICAgICAgIHByb2MgPSBzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkKKyAgICAgICAgd2FpdF9mdW5jKHByb2MucGlkKQorCisgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0cGlkKHBpZCwgMCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnd2FpdDQnKSwgJ3JlcXVpcmVzIHdhaXQ0KCknKQorICAgIGRlZiB0ZXN0X3dhaXQ0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dhaXRfc2luZ2xlKGxhbWJkYSBwaWQ6IG9zLndhaXQ0KHBpZCwgMCkpCisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICByZCwgd3IgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByZCkKKyAgICAgICAgIyB3ciBjbG9zZWQgZXhwbGljaXRseSBieSBwYXJlbnQKKworICAgICAgICAjIHRoZSBwYXlsb2FkIGJlbG93IGFyZSBzbWFsbGVyIHRoYW4gUElQRV9CVUYsIGhlbmNlIHRoZSB3cml0ZXMgd2lsbCBiZQorICAgICAgICAjIGF0b21pYworICAgICAgICBkYXRhcyA9IFtiImhlbGxvIiwgYiJ3b3JsZCIsIGIic3BhbSJdCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd3IgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdkYXRhcyA9ICVyJyAlIGRhdGFzLAorICAgICAgICAgICAgJ3NsZWVwX3RpbWUgPSAlcicgJSBzZWxmLnNsZWVwX3RpbWUsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb3IgZGF0YSBpbiBkYXRhczonLAorICAgICAgICAgICAgJyAgICAjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHJlYWQoKScsCisgICAgICAgICAgICAnICAgIHRpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJyAgICBvcy53cml0ZSh3ciwgZGF0YSknLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSwgc3RyKHdyKSwgcGFzc19mZHM9W3dyXSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgb3MuY2xvc2Uod3IpCisgICAgICAgICAgICBmb3IgZGF0YSBpbiBkYXRhczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIG9zLnJlYWQocmQsIGxlbihkYXRhKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgIHJkLCB3ciA9IG9zLnBpcGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIHdyKQorICAgICAgICAjIHJkIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgd2UgbXVzdCB3cml0ZSBlbm91Z2ggZGF0YSBmb3IgdGhlIHdyaXRlKCkgdG8gYmxvY2sKKyAgICAgICAgZGF0YSA9IGIieCIgKiBzdXBwb3J0LlBJUEVfTUFYX1NJWkUKKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKCgKKyAgICAgICAgICAgICdpbXBvcnQgaW8sIG9zLCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAncmQgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ2RhdGEgPSBiIngiICogJXMnICUgc3VwcG9ydC5QSVBFX01BWF9TSVpFLAorICAgICAgICAgICAgJ2RhdGFfbGVuID0gbGVuKGRhdGEpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJyMgbGV0IHRoZSBwYXJlbnQgYmxvY2sgb24gd3JpdGUoKScsCisgICAgICAgICAgICAndGltZS5zbGVlcChzbGVlcF90aW1lKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdyZWFkX2RhdGEgPSBpby5CeXRlc0lPKCknLAorICAgICAgICAgICAgJ3doaWxlIGxlbihyZWFkX2RhdGEuZ2V0dmFsdWUoKSkgPCBkYXRhX2xlbjonLAorICAgICAgICAgICAgJyAgICBjaHVuayA9IG9zLnJlYWQocmQsIDIgKiBkYXRhX2xlbiknLAorICAgICAgICAgICAgJyAgICByZWFkX2RhdGEud3JpdGUoY2h1bmspJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3ZhbHVlID0gcmVhZF9kYXRhLmdldHZhbHVlKCknLAorICAgICAgICAgICAgJ2lmIHZhbHVlICE9IGRhdGE6JywKKyAgICAgICAgICAgICcgICAgcmFpc2UgRXhjZXB0aW9uKCJyZWFkIGVycm9yOiAlcyB2cyAlcyBieXRlcyInLAorICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgJSAobGVuKHZhbHVlKSwgZGF0YV9sZW4pKScsCisgICAgICAgICkpCisKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlLCBzdHIocmQpLCBwYXNzX2Zkcz1bcmRdKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICBvcy5jbG9zZShyZCkKKyAgICAgICAgICAgIHdyaXR0ZW4gPSAwCisgICAgICAgICAgICB3aGlsZSB3cml0dGVuIDwgbGVuKGRhdGEpOgorICAgICAgICAgICAgICAgIHdyaXR0ZW4gKz0gb3Mud3JpdGUod3IsIG1lbW9yeXZpZXcoZGF0YSlbd3JpdHRlbjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLndhaXQoKSwgMCkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU29ja2V0RUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNvY2tldCBtb2R1bGUuICIiIgorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdzb2NrZXRwYWlyJyksICduZWVkcyBzb2NrZXRwYWlyKCknKQorICAgIGRlZiBfdGVzdF9yZWN2KHNlbGYsIHJlY3ZfZnVuYyk6CisgICAgICAgIHJkLCB3ciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJkLmNsb3NlKQorICAgICAgICAjIHdyIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgc2luZ2xlLWJ5dGUgcGF5bG9hZCBndWFyZCB1cyBhZ2FpbnN0IHBhcnRpYWwgcmVjdgorICAgICAgICBkYXRhcyA9IFtiIngiLCBiInkiLCBiInoiXQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBvcywgc29ja2V0LCBzeXMsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZmQgPSBpbnQoc3lzLmFyZ3ZbMV0pJywKKyAgICAgICAgICAgICdmYW1pbHkgPSAlcycgJSBpbnQod3IuZmFtaWx5KSwKKyAgICAgICAgICAgICdzb2NrX3R5cGUgPSAlcycgJSBpbnQod3IudHlwZSksCisgICAgICAgICAgICAnZGF0YXMgPSAlcicgJSBkYXRhcywKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd3IgPSBzb2NrZXQuZnJvbWZkKGZkLCBmYW1pbHksIHNvY2tfdHlwZSknLAorICAgICAgICAgICAgJ29zLmNsb3NlKGZkKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICd3aXRoIHdyOicsCisgICAgICAgICAgICAnICAgIGZvciBkYXRhIGluIGRhdGFzOicsCisgICAgICAgICAgICAnICAgICAgICAjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHJlY3YoKScsCisgICAgICAgICAgICAnICAgICAgICB0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICcgICAgICAgIHdyLnNlbmRhbGwoZGF0YSknLAorICAgICAgICApKQorCisgICAgICAgIGZkID0gd3IuZmlsZW5vKCkKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlLCBzdHIoZmQpLCBwYXNzX2Zkcz1bZmRdKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICB3ci5jbG9zZSgpCisgICAgICAgICAgICBmb3IgZGF0YSBpbiBkYXRhczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHJlY3ZfZnVuYyhyZCwgbGVuKGRhdGEpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICBkZWYgdGVzdF9yZWN2KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3JlY3Yoc29ja2V0LnNvY2tldC5yZWN2KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQuc29ja2V0LCAncmVjdm1zZycpLCAnbmVlZHMgcmVjdm1zZygpJykKKyAgICBkZWYgdGVzdF9yZWN2bXNnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3JlY3YobGFtYmRhIHNvY2ssIGRhdGE6IHNvY2sucmVjdm1zZyhkYXRhKVswXSkKKworICAgIGRlZiBfdGVzdF9zZW5kKHNlbGYsIHNlbmRfZnVuYyk6CisgICAgICAgIHJkLCB3ciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHdyLmNsb3NlKQorICAgICAgICAjIHJkIGNsb3NlZCBleHBsaWNpdGx5IGJ5IHBhcmVudAorCisgICAgICAgICMgd2UgbXVzdCBzZW5kIGVub3VnaCBkYXRhIGZvciB0aGUgc2VuZCgpIHRvIGJsb2NrCisgICAgICAgIGRhdGEgPSBiInh5eiIgKiAoc3VwcG9ydC5TT0NLX01BWF9TSVpFIC8vIDMpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCBzb2NrZXQsIHN5cywgdGltZScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmZCA9IGludChzeXMuYXJndlsxXSknLAorICAgICAgICAgICAgJ2ZhbWlseSA9ICVzJyAlIGludChyZC5mYW1pbHkpLAorICAgICAgICAgICAgJ3NvY2tfdHlwZSA9ICVzJyAlIGludChyZC50eXBlKSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ2RhdGEgPSBiInh5eiIgKiAlcycgJSAoc3VwcG9ydC5TT0NLX01BWF9TSVpFIC8vIDMpLAorICAgICAgICAgICAgJ2RhdGFfbGVuID0gbGVuKGRhdGEpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3JkID0gc29ja2V0LmZyb21mZChmZCwgZmFtaWx5LCBzb2NrX3R5cGUpJywKKyAgICAgICAgICAgICdvcy5jbG9zZShmZCknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnd2l0aCByZDonLAorICAgICAgICAgICAgJyAgICAjIGxldCB0aGUgcGFyZW50IGJsb2NrIG9uIHNlbmQoKScsCisgICAgICAgICAgICAnICAgIHRpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnICAgIHJlY2VpdmVkX2RhdGEgPSBieXRlYXJyYXkoZGF0YV9sZW4pJywKKyAgICAgICAgICAgICcgICAgbiA9IDAnLAorICAgICAgICAgICAgJyAgICB3aGlsZSBuIDwgZGF0YV9sZW46JywKKyAgICAgICAgICAgICcgICAgICAgIG4gKz0gcmQucmVjdl9pbnRvKG1lbW9yeXZpZXcocmVjZWl2ZWRfZGF0YSlbbjpdKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdpZiByZWNlaXZlZF9kYXRhICE9IGRhdGE6JywKKyAgICAgICAgICAgICcgICAgcmFpc2UgRXhjZXB0aW9uKCJyZWN2IGVycm9yOiAlcyB2cyAlcyBieXRlcyInLAorICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgJSAobGVuKHJlY2VpdmVkX2RhdGEpLCBkYXRhX2xlbikpJywKKyAgICAgICAgKSkKKworICAgICAgICBmZCA9IHJkLmZpbGVubygpCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSwgc3RyKGZkKSwgcGFzc19mZHM9W2ZkXSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgcmQuY2xvc2UoKQorICAgICAgICAgICAgd3JpdHRlbiA9IDAKKyAgICAgICAgICAgIHdoaWxlIHdyaXR0ZW4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgc2VudCA9IHNlbmRfZnVuYyh3ciwgbWVtb3J5dmlldyhkYXRhKVt3cml0dGVuOl0pCisgICAgICAgICAgICAgICAgIyBzZW5kYWxsKCkgcmV0dXJucyBOb25lCisgICAgICAgICAgICAgICAgd3JpdHRlbiArPSBsZW4oZGF0YSkgaWYgc2VudCBpcyBOb25lIGVsc2Ugc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLndhaXQoKSwgMCkKKworICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfc2VuZChzb2NrZXQuc29ja2V0LnNlbmQpCisKKyAgICBkZWYgdGVzdF9zZW5kYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NlbmQoc29ja2V0LnNvY2tldC5zZW5kYWxsKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQuc29ja2V0LCAnc2VuZG1zZycpLCAnbmVlZHMgc2VuZG1zZygpJykKKyAgICBkZWYgdGVzdF9zZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3NlbmQobGFtYmRhIHNvY2ssIGRhdGE6IHNvY2suc2VuZG1zZyhbZGF0YV0pKQorCisgICAgZGVmIHRlc3RfYWNjZXB0KHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKKworICAgICAgICBzb2NrLmJpbmQoKHN1cHBvcnQuSE9TVCwgMCkpCisgICAgICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KKyAgICAgICAgc29jay5saXN0ZW4oKQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBzb2NrZXQsIHRpbWUnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnaG9zdCA9ICVyJyAlIHN1cHBvcnQuSE9TVCwKKyAgICAgICAgICAgICdwb3J0ID0gJXMnICUgcG9ydCwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnIyBsZXQgcGFyZW50IGJsb2NrIG9uIGFjY2VwdCgpJywKKyAgICAgICAgICAgICd0aW1lLnNsZWVwKHNsZWVwX3RpbWUpJywKKyAgICAgICAgICAgICd3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCkpOicsCisgICAgICAgICAgICAnICAgIHRpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgY2xpZW50X3NvY2ssIF8gPSBzb2NrLmFjY2VwdCgpCisgICAgICAgICAgICBjbGllbnRfc29jay5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgIyBJc3N1ZSAjMjUxMjI6IFRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIEZyZWVCU0Qga2VybmVsIG9uCisgICAgIyBoYW5kbGluZyBzaWduYWxzIGluIHRoZSBGSUZPIGRldmljZS4gU2tpcCB0aGUgdGVzdCB1bnRpbCB0aGUgYnVnIGlzCisgICAgIyBmaXhlZCBpbiB0aGUga2VybmVsLiBCZXQgdGhhdCB0aGUgYnVnIHdpbGwgYmUgZml4ZWQgaW4gRnJlZUJTRCAxMS4KKyAgICAjIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTYyCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDExKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ25lZWRzIG1rZmlmbygpJykKKyAgICBkZWYgX3Rlc3Rfb3BlbihzZWxmLCBkb19vcGVuX2Nsb3NlX3JlYWRlciwgZG9fb3Blbl9jbG9zZV93cml0ZXIpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisKKyAgICAgICAgIyBVc2UgYSBmaWZvOiB1bnRpbCB0aGUgY2hpbGQgb3BlbnMgaXQgZm9yIHJlYWRpbmcsIHRoZSBwYXJlbnQgd2lsbAorICAgICAgICAjIGJsb2NrIHdoZW4gdHJ5aW5nIHRvIG9wZW4gaXQgZm9yIHdyaXRpbmcuCisgICAgICAgIHN1cHBvcnQudW5saW5rKGZpbGVuYW1lKQorICAgICAgICBvcy5ta2ZpZm8oZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCB0aW1lJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ3BhdGggPSAlYScgJSBmaWxlbmFtZSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnIyBsZXQgdGhlIHBhcmVudCBibG9jaycsCisgICAgICAgICAgICAndGltZS5zbGVlcChzbGVlcF90aW1lKScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIGRvX29wZW5fY2xvc2VfcmVhZGVyLAorICAgICAgICApKQorCisgICAgICAgIHByb2MgPSBzZWxmLnN1YnByb2Nlc3MoY29kZSkKKyAgICAgICAgd2l0aCBraWxsX29uX2Vycm9yKHByb2MpOgorICAgICAgICAgICAgZG9fb3Blbl9jbG9zZV93cml0ZXIoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2Mud2FpdCgpLCAwKQorCisgICAgZGVmIHB5dGhvbl9vcGVuKHNlbGYsIHBhdGgpOgorICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICAgICBmcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X29wZW4oImZwID0gb3BlbihwYXRoLCAncicpXG5mcC5jbG9zZSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHl0aG9uX29wZW4pCisKKyAgICBkZWYgb3Nfb3BlbihzZWxmLCBwYXRoKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fV1JPTkxZKQorICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIGRlZiB0ZXN0X29zX29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfb3BlbigiZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fUkRPTkxZKVxub3MuY2xvc2UoZmQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3Nfb3BlbikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgVGltZUVJTlRSVGVzdChFSU5UUkJhc2VUZXN0KToKKyAgICAiIiIgRUlOVFIgdGVzdHMgZm9yIHRoZSB0aW1lIG1vZHVsZS4gIiIiCisKKyAgICBkZWYgdGVzdF9zbGVlcChzZWxmKToKKyAgICAgICAgdDAgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5zbGVlcF90aW1lKQorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksICJyZXF1aXJlcyBzZXRpdGltZXIoKSIpCitjbGFzcyBTaWduYWxFSU5UUlRlc3QoRUlOVFJCYXNlVGVzdCk6CisgICAgIiIiIEVJTlRSIHRlc3RzIGZvciB0aGUgc2lnbmFsIG1vZHVsZS4gIiIiCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0KHNlbGYpOgorICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2lnbmFsLnNpZ3RpbWVkd2FpdChbc2lnbmFsLlNJR1VTUjFdLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXRpbmZvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3dhaXRpbmZvKCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXRpbmZvKHNlbGYpOgorICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWdudW0sIGxhbWJkYSAqYXJnczogTm9uZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ251bSwgb2xkX2hhbmRsZXIpCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbigoCisgICAgICAgICAgICAnaW1wb3J0IG9zLCB0aW1lJywKKyAgICAgICAgICAgICdwaWQgPSAlcycgJSBvcy5nZXRwaWQoKSwKKyAgICAgICAgICAgICdzaWdudW0gPSAlcycgJSBpbnQoc2lnbnVtKSwKKyAgICAgICAgICAgICdzbGVlcF90aW1lID0gJXInICUgc2VsZi5zbGVlcF90aW1lLAorICAgICAgICAgICAgJ3RpbWUuc2xlZXAoc2xlZXBfdGltZSknLAorICAgICAgICAgICAgJ29zLmtpbGwocGlkLCBzaWdudW0pJywKKyAgICAgICAgKSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcHJvYyA9IHNlbGYuc3VicHJvY2Vzcyhjb2RlKQorICAgICAgICB3aXRoIGtpbGxfb25fZXJyb3IocHJvYyk6CisgICAgICAgICAgICAjIHBhcmVudAorICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWdudW1dKQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy53YWl0KCksIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoZHQsIHNlbGYuc2xlZXBfdGltZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorY2xhc3MgU2VsZWN0RUlOVFJUZXN0KEVJTlRSQmFzZVRlc3QpOgorICAgICIiIiBFSU5UUiB0ZXN0cyBmb3IgdGhlIHNlbGVjdCBtb2R1bGUuICIiIgorCisgICAgZGVmIHRlc3Rfc2VsZWN0KHNlbGYpOgorICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW10sIFtdLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKSwgJ25lZWQgc2VsZWN0LnBvbGwnKQorICAgIGRlZiB0ZXN0X3BvbGwoc2VsZik6CisgICAgICAgIHBvbGxlciA9IHNlbGVjdC5wb2xsKCkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lICogMWUzKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdlcG9sbCcpLCAnbmVlZCBzZWxlY3QuZXBvbGwnKQorICAgIGRlZiB0ZXN0X2Vwb2xsKHNlbGYpOgorICAgICAgICBwb2xsZXIgPSBzZWxlY3QuZXBvbGwoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocG9sbGVyLmNsb3NlKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBwb2xsZXIucG9sbChzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ2txdWV1ZScpLCAnbmVlZCBzZWxlY3Qua3F1ZXVlJykKKyAgICBkZWYgdGVzdF9rcXVldWUoc2VsZik6CisgICAgICAgIGtxdWV1ZSA9IHNlbGVjdC5rcXVldWUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoa3F1ZXVlLmNsb3NlKQorCisgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBrcXVldWUuY29udHJvbChOb25lLCAxLCBzZWxmLnNsZWVwX3RpbWUpCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHQwCisgICAgICAgIHNlbGYuc3RvcF9hbGFybSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGR0LCBzZWxmLnNsZWVwX3RpbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNlbGVjdCwgJ2RldnBvbGwnKSwgJ25lZWQgc2VsZWN0LmRldnBvbGwnKQorICAgIGRlZiB0ZXN0X2RldnBvbGwoc2VsZik6CisgICAgICAgIHBvbGxlciA9IHNlbGVjdC5kZXZwb2xsKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBvbGxlci5jbG9zZSkKKworICAgICAgICB0MCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgcG9sbGVyLnBvbGwoc2VsZi5zbGVlcF90aW1lICogMWUzKQorICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB0MAorICAgICAgICBzZWxmLnN0b3BfYWxhcm0oKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkdCwgc2VsZi5zbGVlcF90aW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgT1NFSU5UUlRlc3QsCisgICAgICAgIFNvY2tldEVJTlRSVGVzdCwKKyAgICAgICAgVGltZUVJTlRSVGVzdCwKKyAgICAgICAgU2lnbmFsRUlOVFJUZXN0LAorICAgICAgICBTZWxlY3RFSU5UUlRlc3QpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAppbmRleCAxYzFmNjlmLi4wNTEzNzY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAorKysgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dApAQCAtNCw2ICs0LDcgQEAKICArLS0gR2VuZXJhdG9yRXhpdAogICstLSBFeGNlcHRpb24KICAgICAgICstLSBTdG9wSXRlcmF0aW9uCisgICAgICArLS0gU3RvcEFzeW5jSXRlcmF0aW9uCiAgICAgICArLS0gQXJpdGhtZXRpY0Vycm9yCiAgICAgICB8ICAgICstLSBGbG9hdGluZ1BvaW50RXJyb3IKICAgICAgIHwgICAgKy0tIE92ZXJmbG93RXJyb3IKQEAgLTM4LDYgKzM5LDcgQEAKICAgICAgICstLSBSZWZlcmVuY2VFcnJvcgogICAgICAgKy0tIFJ1bnRpbWVFcnJvcgogICAgICAgfCAgICArLS0gTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgfCAgICArLS0gUmVjdXJzaW9uRXJyb3IKICAgICAgICstLSBTeW50YXhFcnJvcgogICAgICAgfCAgICArLS0gSW5kZW50YXRpb25FcnJvcgogICAgICAgfCAgICAgICAgICstLSBUYWJFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZm9ya193YWl0LnB5IGIvTGliL3Rlc3QvZm9ya193YWl0LnB5CmluZGV4IDE5YjU0ZWMuLjcxMzAzOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQorKysgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKQEAgLTQ4LDcgKzQ4LDEyIEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKICAgICAgICAgICAgIF90aHJlYWQuc3RhcnRfbmV3KHNlbGYuZiwgKGksKSkKIAotICAgICAgICB0aW1lLnNsZWVwKExPTkdTTEVFUCkKKyAgICAgICAgIyBidXN5LWxvb3AgdG8gd2FpdCBmb3IgdGhyZWFkcworICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIGxlbihzZWxmLmFsaXZlKSA8IE5VTV9USFJFQURTOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCisgICAgICAgICAgICBpZiBkZWFkbGluZSA8IHRpbWUubW9ub3RvbmljKCk6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBhID0gc29ydGVkKHNlbGYuYWxpdmUua2V5cygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGxpc3QocmFuZ2UoTlVNX1RIUkVBRFMpKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLmV4ciBiL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLmV4cgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzNjODFlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvaW1naGRyZGF0YS9weXRob24uZXhyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltZ2hkcmRhdGEvcHl0aG9uLndlYnAgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi53ZWJwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MjRlYzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9pbWdoZHJkYXRhL3B5dGhvbi53ZWJwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2ltcF9kdW1teS5weSBiL0xpYi90ZXN0L2ltcF9kdW1teS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTRkZWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvaW1wX2R1bW15LnB5CkBAIC0wLDAgKzEsMyBAQAorIyBGb2RkZXIgZm9yIHRlc3Qgb2YgaXNzdWUyNDc0OCBpbiB0ZXN0X2ltcAorCitkdW1teV9uYW1lID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQppbmRleCAwYzFkODEwLi4wNjhkODI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQorKysgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQpAQCAtNDUsOSArNDUsMTYgQEAKICAgICAgICAgICAgIHNlbGYuZXggPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgc2VsZi50ciA9IGluc3BlY3QudHJhY2UoKQogCisgICAgZGVmIGNvbnRyYWRpY3Rpb24oc2VsZik6CisgICAgICAgICdUaGUgYXV0b21hdGljIGdhaW5zYXlpbmcuJworICAgICAgICBwYXNzCisKICMgbGluZSA0OAogY2xhc3MgTWFsb2Rvcm91c1BlcnZlcnQoU3R1cGlkR2l0KToKLSAgICBwYXNzCisgICAgZGVmIGFidXNlKHNlbGYsIGEsIGIsIGMpOgorICAgICAgICBwYXNzCisgICAgZGVmIGNvbnRyYWRpY3Rpb24oc2VsZik6CisgICAgICAgIHBhc3MKIAogVGl0ID0gTWFsb2Rvcm91c1BlcnZlcnQKIApAQCAtNTUsNCArNjIsMTAgQEAKICAgICBwYXNzCiAKIGNsYXNzIEZlc3RlcmluZ0dvYihNYWxvZG9yb3VzUGVydmVydCwgUGFycm90RHJvcHBpbmdzKToKKyAgICBkZWYgYWJ1c2Uoc2VsZiwgYSwgYiwgYyk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgY29udHJhZGljdGlvbihzZWxmKToKKyAgICAgICAgcGFzcworCithc3luYyBkZWYgbG9iYmVzdChncmVuYWRlKToKICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlcjIucHkKaW5kZXggYmQ3MTA2Zi4uYzY5ODdlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIyLnB5CisrKyBiL0xpYi90ZXN0L2luc3BlY3RfZm9kZGVyMi5weQpAQCAtMTA5LDMgKzEwOSwzMSBAQAogI2xpbmUgMTA5CiBkZWYga2V5d29yZF9vbmx5X2FyZygqLCBhcmcpOgogICAgIHBhc3MKKworQHdyYXAobGFtYmRhOiBOb25lKQorZGVmIGZ1bmMxMTQoKToKKyAgICByZXR1cm4gMTE1CisKK2NsYXNzIENsYXNzV2l0aE1ldGhvZDoKKyAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgICAgICBwYXNzCisKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCitkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgIEB3cmFwcyhmdW5jKQorICAgIGRlZiBmYWtlKCk6CisgICAgICAgIHJldHVybiA0MgorICAgIHJldHVybiBmYWtlCisKKyNsaW5lIDEyOQorQGRlY29yYXRvcgorZGVmIHJlYWwoKToKKyAgICByZXR1cm4gMjAKKworI2xpbmUgMTM0CitjbGFzcyBjbHMxMzU6CisgICAgZGVmIGZ1bmMxMzYoKToKKyAgICAgICAgZGVmIGZ1bmMxMzcoKToKKyAgICAgICAgICAgIG5ldmVyX3JlYWNoZWQxCisgICAgICAgICAgICBuZXZlcl9yZWFjaGVkMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggNDJlMTE4Yi4uMWFkZmM3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0zMCw2ICszMCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGEpLCBpZChiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9lcnJvcihzZWxmKToKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGEgPSBbXQorICAgICAgICAgICAgYVsnYSddID0gInB5dGhvbiIKKwogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGwwID0gW10KICAgICAgICAgbDIgPSBbMCwgMSwgMl0KQEAgLTUwLDcgKzU2LDcgQEAKICAgICAgICAgbDAgPSBbXQogICAgICAgICBmb3IgaSBpbiByYW5nZShzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSArIDEwMCk6CiAgICAgICAgICAgICBsMCA9IFtsMF0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZXByLCBsMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIHJlcHIsIGwwKQogCiAgICAgZGVmIHRlc3RfcHJpbnQoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLnR5cGUydGVzdChyYW5nZSgyMDApKQpAQCAtMTIwLDYgKzEyNiwxMCBAQAogICAgICAgICBhWy0xXSA9IDkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBzZWxmLnR5cGUydGVzdChbNSw2LDcsOCw5XSkpCiAKKyAgICAgICAgbXNnID0gImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGFbJ2EnXSA9ICJweXRob24iCisKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzAsIDFdKQogICAgICAgICBkZWwgYVsxXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggNDJhN2Q4Mi4uYjMyNWJjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC04Niw3ICs4NiwxMyBAQAogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQotICAgICAgICByZXByKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihsb2NrKSwgIjx1bmxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQorICAgICAgICBkZWwgbG9jaworCisgICAgZGVmIHRlc3RfbG9ja2VkX3JlcHIoc2VsZik6CisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGxvY2spLCAiPGxvY2tlZCAuKiBvYmplY3QgKC4qKT9hdCAuKj4iKQogICAgICAgICBkZWwgbG9jawogCiAgICAgZGVmIHRlc3RfYWNxdWlyZV9kZXN0cm95KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQppbmRleCBlMzY3MjRmLi5iMjhjNDczIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQorKysgYi9MaWIvdGVzdC9tb2NrX3NvY2tldC5weQpAQCAtMzUsOCArMzUsOSBAQAogY2xhc3MgTW9ja1NvY2tldDoKICAgICAiIiJNb2NrIHNvY2tldCBvYmplY3QgdXNlZCBieSBzbXRwZCBhbmQgc210cGxpYiB0ZXN0cy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseT1Ob25lKToKICAgICAgICAgZ2xvYmFsIF9yZXBseV9kYXRhCisgICAgICAgIHNlbGYuZmFtaWx5ID0gZmFtaWx5CiAgICAgICAgIHNlbGYub3V0cHV0ID0gW10KICAgICAgICAgc2VsZi5saW5lcyA9IFtdCiAgICAgICAgIGlmIF9yZXBseV9kYXRhOgpAQCAtMTAxLDE1ICsxMDIsMTQgQEAKICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQogCiAgICAgZGVmIGdldHBlZXJuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJ3BlZXInCisgICAgICAgIHJldHVybiAoJ3BlZXItYWRkcmVzcycsICdwZWVyLXBvcnQnKQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBwYXNzCiAKIAogZGVmIHNvY2tldChmYW1pbHk9Tm9uZSwgdHlwZT1Ob25lLCBwcm90bz1Ob25lKToKLSAgICByZXR1cm4gTW9ja1NvY2tldCgpCi0KKyAgICByZXR1cm4gTW9ja1NvY2tldChmYW1pbHkpCiAKIGRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CkBAIC0xNDQsMTMgKzE0NCwxNiBAQAogZGVmIGdldGhvc3RieW5hbWUobmFtZSk6CiAgICAgcmV0dXJuICIiCiAKK2RlZiBnZXRhZGRyaW5mbygqYXJncywgKiprdyk6CisgICAgcmV0dXJuIHNvY2tldF9tb2R1bGUuZ2V0YWRkcmluZm8oKmFyZ3MsICoqa3cpCiAKIGdhaWVycm9yID0gc29ja2V0X21vZHVsZS5nYWllcnJvcgogZXJyb3IgPSBzb2NrZXRfbW9kdWxlLmVycm9yCiAKIAogIyBDb25zdGFudHMKLUFGX0lORVQgPSBOb25lCi1TT0NLX1NUUkVBTSA9IE5vbmUKK0FGX0lORVQgPSBzb2NrZXRfbW9kdWxlLkFGX0lORVQKK0FGX0lORVQ2ID0gc29ja2V0X21vZHVsZS5BRl9JTkVUNgorU09DS19TVFJFQU0gPSBzb2NrZXRfbW9kdWxlLlNPQ0tfU1RSRUFNCiBTT0xfU09DS0VUID0gTm9uZQogU09fUkVVU0VBRERSID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IGFmMzRkMjMuLjc4YjU0ODMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTExNjgsMTYgKzExNjgsNjIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW1fYWRkaXRlbXMsIDIpCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfbmV3b2JqKHNlbGYpOgotICAgICAgICB4ID0gb2JqZWN0Ll9fbmV3X18oU2ltcGxlTmV3T2JqKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4ID0gU2ltcGxlTmV3T2JqLl9fbmV3X18oU2ltcGxlTmV3T2JqLCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCiAgICAgICAgIHguYWJjID0gNjY2CiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6Ci0gICAgICAgICAgICBzID0gc2VsZi5kdW1wcyh4LCBwcm90bykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKLCBzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90byA8IDQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvID49IDQpCi0gICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9pc19jb3B5KHgsIHkpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCisgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ01ceGNlXHhmYScsIHMpICAjIEJJTklOVDIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIDw9IHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSkKKyAgICAgICAgICAgICAgICB5ID0gc2VsZi5sb2FkcyhzKSAgICMgd2lsbCByYWlzZSBUeXBlRXJyb3IgaWYgX19pbml0X18gY2FsbGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRfaXNfY29weSh4LCB5KQorCisgICAgZGVmIHRlc3RfY29tcGxleF9uZXdvYmooc2VsZik6CisgICAgICAgIHggPSBDb21wbGV4TmV3T2JqLl9fbmV3X18oQ29tcGxleE5ld09iaiwgMHhmYWNlKSAgIyBhdm9pZCBfX2luaXRfXworICAgICAgICB4LmFiYyA9IDY2NgorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCA0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInWFx4MDRceDAwXHgwMFx4MDBGQUNFJywgcykgICMgQklOVU5JQ09ERQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA8PSBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcykpCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmV3b2JqX2V4KHNlbGYpOgorICAgICAgICB4ID0gQ29tcGxleE5ld09iakV4Ll9fbmV3X18oQ29tcGxleE5ld09iakV4LCAweGZhY2UpICAjIGF2b2lkIF9faW5pdF9fCisgICAgICAgIHguYWJjID0gNjY2CisgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORworICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm90byA+PSA0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgPD0gcHJvdG8pCisgICAgICAgICAgICAgICAgeSA9IHNlbGYubG9hZHMocykgICAjIHdpbGwgcmFpc2UgVHlwZUVycm9yIGlmIF9faW5pdF9fIGNhbGxlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2lzX2NvcHkoeCwgeSkKIAogICAgIGRlZiB0ZXN0X25ld29ial9saXN0X3Nsb3RzKHNlbGYpOgogICAgICAgICB4ID0gU2xvdExpc3QoWzEsIDIsIDNdKQpAQCAtMTU2OCwxMyArMTYxNCwyNCBAQAogICAgICAgICAgICAgICAgIGNsYXNzIEI6CiAgICAgICAgICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDQsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZm9yIG9iaiBpbiBbTmVzdGVkLkEsIE5lc3RlZC5BLkIsIE5lc3RlZC5BLkIuQ106CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG9iaj1vYmopOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMob2JqLCBwcm90bykpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqLCB1bnBpY2tsZWQpCiAKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfbmVzdGVkX25hbWVzKHNlbGYpOgorICAgICAgICBnbG9iYWwgUmVjdXJzaXZlCisgICAgICAgIGNsYXNzIFJlY3Vyc2l2ZToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgUmVjdXJzaXZlLm1vZCA9IHN5cy5tb2R1bGVzW1JlY3Vyc2l2ZS5fX21vZHVsZV9fXQorICAgICAgICBSZWN1cnNpdmUuX19xdWFsbmFtZV9fID0gJ1JlY3Vyc2l2ZS5tb2QuUmVjdXJzaXZlJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMoUmVjdXJzaXZlLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh1bnBpY2tsZWQsIFJlY3Vyc2l2ZSkKKyAgICAgICAgZGVsIFJlY3Vyc2l2ZS5tb2QgIyBicmVhayByZWZlcmVuY2UgbG9vcAorCiAgICAgZGVmIHRlc3RfcHlfbWV0aG9kcyhzZWxmKToKICAgICAgICAgZ2xvYmFsIFB5TWV0aG9kc1Rlc3QKICAgICAgICAgY2xhc3MgUHlNZXRob2RzVGVzdDoKQEAgLTE2MTMsNyArMTY3MCw3IEBACiAgICAgICAgICAgICAoUHlNZXRob2RzVGVzdC5iaXNjdWl0cywgUHlNZXRob2RzVGVzdCksCiAgICAgICAgICAgICAoUHlNZXRob2RzVGVzdC5OZXN0ZWQucGllLCBQeU1ldGhvZHNUZXN0Lk5lc3RlZCkKICAgICAgICAgKQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoNCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3IgbWV0aG9kIGluIHB5X21ldGhvZHM6CiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8sIG1ldGhvZD1tZXRob2QpOgogICAgICAgICAgICAgICAgICAgICB1bnBpY2tsZWQgPSBzZWxmLmxvYWRzKHNlbGYuZHVtcHMobWV0aG9kLCBwcm90bykpCkBAIC0xNjUzLDcgKzE3MTAsNyBAQAogICAgICAgICAgICAgKFN1YmNsYXNzLk5lc3RlZCgic3dlZXQiKS5jb3VudCwgKCJlIiwpKSwKICAgICAgICAgICAgIChTdWJjbGFzcy5OZXN0ZWQuY291bnQsIChTdWJjbGFzcy5OZXN0ZWQoInN3ZWV0IiksICJlIikpLAogICAgICAgICApCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSg0LCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGZvciBtZXRob2QsIGFyZ3MgaW4gY19tZXRob2RzOgogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvLCBtZXRob2Q9bWV0aG9kKToKICAgICAgICAgICAgICAgICAgICAgdW5waWNrbGVkID0gc2VsZi5sb2FkcyhzZWxmLmR1bXBzKG1ldGhvZCwgcHJvdG8pKQpAQCAtMTcwNCw2ICsxNzYxLDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUodW5waWNrbGVkKSwgY29sbGVjdGlvbnMuVXNlckRpY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVucGlja2xlZCwgY29sbGVjdGlvbnMuVXNlckRpY3QoezE6IDJ9KSkKIAorICAgIGRlZiB0ZXN0X2xvY2FsX2xvb2t1cF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2hpY2htb2R1bGUoKSBlcnJvcnMgb3V0IGNsZWFubHkgd2hlbiBsb29raW5nIHVwCisgICAgICAgICMgYW4gYXNzdW1lZCBnbG9iYWxseS1yZWFjaGFibGUgb2JqZWN0IGZhaWxzLgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICAjIFNpbmNlIHRoZSBmdW5jdGlvbiBpcyBsb2NhbCwgbG9va3VwIHdpbGwgZmFpbAorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UoMCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBwaWNrbGUuUGlja2xpbmdFcnJvcikpOgorICAgICAgICAgICAgICAgIHBpY2tsZXRvb2xzLmRpcyhzZWxmLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgIyBTYW1lIHdpdGhvdXQgYSBfX21vZHVsZV9fIGF0dHJpYnV0ZSAoZXhlcmNpc2VzIGEgZGlmZmVyZW50IHBhdGgKKyAgICAgICAgIyBpbiBfcGlja2xlLmMpLgorICAgICAgICBkZWwgZi5fX21vZHVsZV9fCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgwLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoQXR0cmlidXRlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSk6CisgICAgICAgICAgICAgICAgcGlja2xldG9vbHMuZGlzKHNlbGYuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAjIFlldCBhIGRpZmZlcmVudCBwYXRoLgorICAgICAgICBmLl9fbmFtZV9fID0gZi5fX3F1YWxuYW1lX18KKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDAsIHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpKToKKyAgICAgICAgICAgICAgICBwaWNrbGV0b29scy5kaXMoc2VsZi5kdW1wcyhmLCBwcm90bykpCisKIAogY2xhc3MgQmlnbWVtUGlja2xlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xOTM4LDEyICsyMDE2LDIwIEBACiBjbGFzcyBTbG90TGlzdChNeUxpc3QpOgogICAgIF9fc2xvdHNfXyA9IFsiZm9vIl0KIAotY2xhc3MgU2ltcGxlTmV3T2JqKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGIsIGMpOgorY2xhc3MgU2ltcGxlTmV3T2JqKGludCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICMgcmFpc2UgYW4gZXJyb3IsIHRvIG1ha2Ugc3VyZSB0aGlzIGlzbid0IGNhbGxlZAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlNpbXBsZU5ld09iai5fX2luaXRfXygpIGRpZG4ndCBleHBlY3QgdG8gZ2V0IGNhbGxlZCIpCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fCisgICAgICAgIHJldHVybiBpbnQoc2VsZikgPT0gaW50KG90aGVyKSBhbmQgc2VsZi5fX2RpY3RfXyA9PSBvdGhlci5fX2RpY3RfXworCitjbGFzcyBDb21wbGV4TmV3T2JqKFNpbXBsZU5ld09iaik6CisgICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclWCcgJSBzZWxmLCAxNikKKworY2xhc3MgQ29tcGxleE5ld09iakV4KFNpbXBsZU5ld09iaik6CisgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gKCclWCcgJSBzZWxmLCksIHsnYmFzZSc6IDE2fQogCiBjbGFzcyBCYWRHZXRhdHRyOgogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBrZXkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHlzdG9uZS5weSBiL0xpYi90ZXN0L3B5c3RvbmUucHkKaW5kZXggYTQxZjFlNS4uMWY2N2U2NiAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcHlzdG9uZS5weQorKysgYi9MaWIvdGVzdC9weXN0b25lLnB5CkBAIC00MSw3ICs0MSw3IEBACiAKIExPT1BTID0gNTAwMDAKIAotZnJvbSB0aW1lIGltcG9ydCBjbG9jaworZnJvbSB0aW1lIGltcG9ydCB0aW1lCiAKIF9fdmVyc2lvbl9fID0gIjEuMiIKIApAQCAtOTMsMTAgKzkzLDEwIEBACiAgICAgZ2xvYmFsIFB0ckdsYgogICAgIGdsb2JhbCBQdHJHbGJOZXh0CiAKLSAgICBzdGFydHRpbWUgPSBjbG9jaygpCisgICAgc3RhcnR0aW1lID0gdGltZSgpCiAgICAgZm9yIGkgaW4gcmFuZ2UobG9vcHMpOgogICAgICAgICBwYXNzCi0gICAgbnVsbHRpbWUgPSBjbG9jaygpIC0gc3RhcnR0aW1lCisgICAgbnVsbHRpbWUgPSB0aW1lKCkgLSBzdGFydHRpbWUKIAogICAgIFB0ckdsYk5leHQgPSBSZWNvcmQoKQogICAgIFB0ckdsYiA9IFJlY29yZCgpCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICBTdHJpbmcxTG9jID0gIkRIUllTVE9ORSBQUk9HUkFNLCAxJ1NUIFNUUklORyIKICAgICBBcnJheTJHbG9iWzhdWzddID0gMTAKIAotICAgIHN0YXJ0dGltZSA9IGNsb2NrKCkKKyAgICBzdGFydHRpbWUgPSB0aW1lKCkKIAogICAgIGZvciBpIGluIHJhbmdlKGxvb3BzKToKICAgICAgICAgUHJvYzUoKQpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgICAgIEludExvYzIgPSA3ICogKEludExvYzMgLSBJbnRMb2MyKSAtIEludExvYzEKICAgICAgICAgSW50TG9jMSA9IFByb2MyKEludExvYzEpCiAKLSAgICBiZW5jaHRpbWUgPSBjbG9jaygpIC0gc3RhcnR0aW1lIC0gbnVsbHRpbWUKKyAgICBiZW5jaHRpbWUgPSB0aW1lKCkgLSBzdGFydHRpbWUgLSBudWxsdGltZQogICAgIGlmIGJlbmNodGltZSA9PSAwLjA6CiAgICAgICAgIGxvb3BzUGVyQmVuY2h0aW1lID0gMC4wCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggN2Y4MDc1ZS4uOGMxNThmOCAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAocidbXGFdW1xiXVtcZl1bXG5dW1xyXVtcdF1bXHZdJywgJ1xhXGJcZlxuXHJcdFx2JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1xhXGJcZlxuXHJcdFx2JyksCiAgICAgIyBOT1RFOiBub3QgYW4gZXJyb3IgdW5kZXIgUENSRS9QUkU6CiAgICAgKHInXHUnLCAnJywgU1lOVEFYX0VSUk9SKSwgICAgIyBBIFBlcmwgZXNjYXBlCi0gICAgKHInXGNcZVxnXGhcaVxqXGtcbVxvXHBccVx5XHonLCAnY2VnaGlqa21vcHF5eicsIFNVQ0NFRUQsICdmb3VuZCcsICdjZWdoaWprbW9wcXl6JyksCisgICAgIyAocidcY1xlXGdcaFxpXGpca1xtXG9ccFxxXHlceicsICdjZWdoaWprbW9wcXl6JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2NlZ2hpamttb3BxeXonKSwKICAgICAocidceGZmJywgJ1wzNzcnLCBTVUNDRUVELCAnZm91bmQnLCBjaHIoMjU1KSksCiAgICAgIyBuZXcgXHggc2VtYW50aWNzCiAgICAgKHInXHgwMGZmZmZmZmZmZmZmZmZmJywgJ1wzNzcnLCBGQUlMLCAnZm91bmQnLCBjaHIoMjU1KSksCkBAIC02MDcsOCArNjA3LDggQEAKICAgICAjIG5ldyBceCBzZW1hbnRpY3MKICAgICAocidceDAwZmYnLCAnXDM3NycsIEZBSUwpLAogICAgICMgKHInXHgwMGZmJywgJ1wzNzcnLCBTVUNDRUVELCAnZm91bmQnLCBjaHIoMjU1KSksCi0gICAgKHInXHRcblx2XHJcZlxhXGcnLCAnXHRcblx2XHJcZlxhZycsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGFnJyksCi0gICAgKCdcdFxuXHZcclxmXGFcZycsICdcdFxuXHZcclxmXGFnJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYWcnKSwKKyAgICAocidcdFxuXHZcclxmXGEnLCAnXHRcblx2XHJcZlxhJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYScpLAorICAgICgnXHRcblx2XHJcZlxhJywgJ1x0XG5cdlxyXGZcYScsIFNVQ0NFRUQsICdmb3VuZCcsICdcdFxuXHZcclxmXGEnKSwKICAgICAocidcdFxuXHZcclxmXGEnLCAnXHRcblx2XHJcZlxhJywgU1VDQ0VFRCwgJ2ZvdW5kJywgY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpKSwKICAgICAocidbXHRdW1xuXVtcdl1bXHJdW1xmXVtcYl0nLCAnXHRcblx2XHJcZlxiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1x0XG5cdlxyXGZcYicpLAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IDY3MDg4NzYuLmI0OWU2NmIgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC03NjUsOCArNzY1LDYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgpAQCAtMTI3NSw2ICsxMjczLDEwIEBACiAgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CiAgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKICAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKICAgICAgICAgICAgIGlmIGh1bnRybGVha3M6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zc2xfc2VydmVycy5weSBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CmluZGV4IDc1OWIzZjQuLmY5ZDMwY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CkBAIC0xNTAsNyArMTUwLDcgQEAKIGRlZiBtYWtlX2h0dHBzX3NlcnZlcihjYXNlLCAqLCBjb250ZXh0PU5vbmUsIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9SE9TVCwgaGFuZGxlcl9jbGFzcz1Ob25lKToKICAgICBpZiBjb250ZXh0IGlzIE5vbmU6Ci0gICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgIyBXZSBhc3N1bWUgdGhlIGNlcnRmaWxlIGNvbnRhaW5zIGJvdGggcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlCiAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUpCiAgICAgc2VydmVyID0gSFRUUFNTZXJ2ZXJUaHJlYWQoY29udGV4dCwgaG9zdCwgaGFuZGxlcl9jbGFzcykKQEAgLTE4Miw2ICsxODIsOCBAQAogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY3VydmUtbmFtZScsIGRlc3Q9J2N1cnZlX25hbWUnLCB0eXBlPXN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY3VydmUgbmFtZSBmb3IgRUMtYmFzZWQgRGlmZmllLUhlbGxtYW4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2lwaGVycycsIGRlc3Q9J2NpcGhlcnMnLCB0eXBlPXN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FsbG93ZWQgY2lwaGVyIGxpc3QnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZGgnLCBkZXN0PSdkaF9maWxlJywgdHlwZT1zdHIsIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUEVNIGZpbGUgY29udGFpbmluZyBESCBwYXJhbWV0ZXJzJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQpAQCAtMTkyLDEyICsxOTQsMTQgQEAKICAgICBlbHNlOgogICAgICAgICBoYW5kbGVyX2NsYXNzID0gUm9vdGVkSFRUUFJlcXVlc3RIYW5kbGVyCiAgICAgICAgIGhhbmRsZXJfY2xhc3Mucm9vdCA9IG9zLmdldGN3ZCgpCi0gICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCiAgICAgaWYgYXJncy5jdXJ2ZV9uYW1lOgogICAgICAgICBjb250ZXh0LnNldF9lY2RoX2N1cnZlKGFyZ3MuY3VydmVfbmFtZSkKICAgICBpZiBhcmdzLmRoX2ZpbGU6CiAgICAgICAgIGNvbnRleHQubG9hZF9kaF9wYXJhbXMoYXJncy5kaF9maWxlKQorICAgIGlmIGFyZ3MuY2lwaGVyczoKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhhcmdzLmNpcGhlcnMpCiAKICAgICBzZXJ2ZXIgPSBIVFRQU1NlcnZlcigoIiIsIGFyZ3MucG9ydCksIGhhbmRsZXJfY2xhc3MsIGNvbnRleHQpCiAgICAgaWYgYXJncy52ZXJib3NlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CmluZGV4IDI0MmE5MzEuLmUwODY5OTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKQEAgLTk3Niw2ICs5NzYsOSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJ2hlbGxvd29ybGQnLCAnc3RhcnRzd2l0aCcsICdsb3dvJywgMykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsb3dvcmxkJywgJ3N0YXJ0c3dpdGgnLCAnbG93bycsIDMsIDcpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJ2hlbGxvd29ybGQnLCAnc3RhcnRzd2l0aCcsICdsb3dvJywgMywgNikKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnc3RhcnRzd2l0aCcsICcnLCAwLCAxKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoVHJ1ZSwgJycsICdzdGFydHN3aXRoJywgJycsIDAsIDApCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJycsICdzdGFydHN3aXRoJywgJycsIDEsIDApCiAKICAgICAgICAgIyB0ZXN0IG5lZ2F0aXZlIGluZGljZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsbycsICdzdGFydHN3aXRoJywgJ2hlJywgMCwgLTEpCkBAIC0xMDIyLDYgKzEwMjUsOSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICdoZWxsb3dvcmxkJywgJ2VuZHN3aXRoJywgJ2xvd28nLCAzLCA4KQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoRmFsc2UsICdhYicsICdlbmRzd2l0aCcsICdhYicsIDAsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChGYWxzZSwgJ2FiJywgJ2VuZHN3aXRoJywgJ2FiJywgMCwgMCkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnZW5kc3dpdGgnLCAnJywgMCwgMSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICcnLCAnZW5kc3dpdGgnLCAnJywgMCwgMCkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKEZhbHNlLCAnJywgJ2VuZHN3aXRoJywgJycsIDEsIDApCiAKICAgICAgICAgIyB0ZXN0IG5lZ2F0aXZlIGluZGljZXMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFRydWUsICdoZWxsbycsICdlbmRzd2l0aCcsICdsbycsIC0yKQpAQCAtMTE3Niw4ICsxMTgyLDcgQEAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdhYmMnLCAnX19tb2RfXycpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJShmb28pcycsICdfX21vZF9fJywgNDIpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJXMlcycsICdfX21vZF9fJywgKDQyLCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclYycsICdfX21vZF9fJywgKE5vbmUsKSkKKyAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclYycsICdfX21vZF9fJywgKE5vbmUsKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnJShmb28nLCAnX19tb2RfXycsIHt9KQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJyUoZm9vKXMgJShiYXIpcycsICdfX21vZF9fJywgKCdmb28nLCA0MikpCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnJWQnLCAnX19tb2RfXycsICI0MiIpICMgbm90IG51bWVyaWMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CmluZGV4IDAxY2EyZjguLjhiMTgwYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQpAQCAtODgsNyArODgsNyBAQAogICAgICJza2lwX3VubGVzc19zeW1saW5rIiwgInJlcXVpcmVzX2d6aXAiLCAicmVxdWlyZXNfYnoyIiwgInJlcXVpcmVzX2x6bWEiLAogICAgICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLCAiY3B5dGhvbl9vbmx5IiwgImdldF9hdHRyaWJ1dGUiLAogICAgICJyZXF1aXJlc19JRUVFXzc1NCIsICJza2lwX3VubGVzc194YXR0ciIsICJyZXF1aXJlc196bGliIiwKLSAgICAiYW50aWNpcGF0ZV9mYWlsdXJlIiwgImxvYWRfcGFja2FnZV90ZXN0cyIsCisgICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLCAiZGV0ZWN0X2FwaV9taXNtYXRjaCIsCiAgICAgIyBzeXMKICAgICAiaXNfanl0aG9uIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKICAgICAjIG5ldHdvcmsKQEAgLTM3NiwzNiArMzc2LDMyIEBACiAgICAgICAgIHBhc3MKIAogZGVmIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpOgotICAgICIiIk1vdmUgYSBQRVAgMzE0NyBweWMvcHlvIGZpbGUgdG8gaXRzIGxlZ2FjeSBweWMvcHlvIGxvY2F0aW9uLgotCi0gICAgVGhlIGNob2ljZSBvZiAucHljIG9yIC5weW8gZXh0ZW5zaW9uIGlzIGRvbmUgYmFzZWQgb24gdGhlIF9fZGVidWdfXyBmbGFnCi0gICAgdmFsdWUuCisgICAgIiIiTW92ZSBhIFBFUCAzMTQ3LzQ4OCBweWMgZmlsZSB0byBpdHMgbGVnYWN5IHB5YyBsb2NhdGlvbi4KIAogICAgIDpwYXJhbSBzb3VyY2U6IFRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIHRoZSBzb3VyY2UgZmlsZS4gIFRoZSBzb3VyY2UgZmlsZQotICAgICAgICBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0LCBob3dldmVyIHRoZSBQRVAgMzE0NyBweWMgZmlsZSBtdXN0IGV4aXN0LgorICAgICAgICBkb2VzIG5vdCBuZWVkIHRvIGV4aXN0LCBob3dldmVyIHRoZSBQRVAgMzE0Ny80ODggcHljIGZpbGUgbXVzdCBleGlzdC4KICAgICA6cmV0dXJuOiBUaGUgZmlsZSBzeXN0ZW0gcGF0aCB0byB0aGUgbGVnYWN5IHB5YyBmaWxlLgogICAgICIiIgogICAgIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlKQogICAgIHVwX29uZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoc291cmNlKSkKLSAgICBsZWdhY3lfcHljID0gb3MucGF0aC5qb2luKHVwX29uZSwgc291cmNlICsgKCdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpKQorICAgIGxlZ2FjeV9weWMgPSBvcy5wYXRoLmpvaW4odXBfb25lLCBzb3VyY2UgKyAnYycpCiAgICAgb3MucmVuYW1lKHB5Y19maWxlLCBsZWdhY3lfcHljKQogICAgIHJldHVybiBsZWdhY3lfcHljCiAKIGRlZiBmb3JnZXQobW9kbmFtZSk6CiAgICAgIiIiJ0ZvcmdldCcgYSBtb2R1bGUgd2FzIGV2ZXIgaW1wb3J0ZWQuCiAKLSAgICBUaGlzIHJlbW92ZXMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIGFuZCBkZWxldGVzIGFueSBQRVAgMzE0NyBvcgotICAgIGxlZ2FjeSAucHljIGFuZCAucHlvIGZpbGVzLgorICAgIFRoaXMgcmVtb3ZlcyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgYW5kIGRlbGV0ZXMgYW55IFBFUCAzMTQ3LzQ4OCBvcgorICAgIGxlZ2FjeSAucHljIGZpbGVzLgogICAgICIiIgogICAgIHVubG9hZChtb2RuYW1lKQogICAgIGZvciBkaXJuYW1lIGluIHN5cy5wYXRoOgogICAgICAgICBzb3VyY2UgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgbW9kbmFtZSArICcucHknKQogICAgICAgICAjIEl0IGRvZXNuJ3QgbWF0dGVyIGlmIHRoZXkgZXhpc3Qgb3Igbm90LCB1bmxpbmsgYWxsIHBvc3NpYmxlCi0gICAgICAgICMgY29tYmluYXRpb25zIG9mIFBFUCAzMTQ3IGFuZCBsZWdhY3kgcHljIGFuZCBweW8gZmlsZXMuCisgICAgICAgICMgY29tYmluYXRpb25zIG9mIFBFUCAzMTQ3LzQ4OCBhbmQgbGVnYWN5IHB5YyBmaWxlcy4KICAgICAgICAgdW5saW5rKHNvdXJjZSArICdjJykKLSAgICAgICAgdW5saW5rKHNvdXJjZSArICdvJykKLSAgICAgICAgdW5saW5rKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSwgZGVidWdfb3ZlcnJpZGU9VHJ1ZSkpCi0gICAgICAgIHVubGluayhpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzb3VyY2UsIGRlYnVnX292ZXJyaWRlPUZhbHNlKSkKKyAgICAgICAgZm9yIG9wdCBpbiAoJycsIDEsIDIpOgorICAgICAgICAgICAgdW5saW5rKGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSwgb3B0aW1pemF0aW9uPW9wdCkpCiAKICMgQ2hlY2sgd2hldGhlciBhIGd1aSBpcyBhY3R1YWxseSBhdmFpbGFibGUKIGRlZiBfaXNfZ3VpX2F2YWlsYWJsZSgpOgpAQCAtMTA0Miw3ICsxMDM4LDggQEAKICAgICAjIFZlcmlmeSB0aGUgcmVxdWlyZW1lbnQgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBmaWxlCiAgICAgcmVxdWlyZXMoJ3VybGZldGNoJykKIAotICAgIHByaW50KCdcdGZldGNoaW5nICVzIC4uLicgJSB1cmwsIGZpbGU9Z2V0X29yaWdpbmFsX3N0ZG91dCgpKQorICAgIGlmIHZlcmJvc2U6CisgICAgICAgIHByaW50KCdcdGZldGNoaW5nICVzIC4uLicgJSB1cmwsIGZpbGU9Z2V0X29yaWdpbmFsX3N0ZG91dCgpKQogICAgIG9wZW5lciA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcigpCiAgICAgaWYgZ3ppcDoKICAgICAgICAgb3BlbmVyLmFkZGhlYWRlcnMuYXBwZW5kKCgnQWNjZXB0LUVuY29kaW5nJywgJ2d6aXAnKSkKQEAgLTIxODcsNiArMjE4NCwyMSBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIAorZGVmIGRldGVjdF9hcGlfbWlzbWF0Y2gocmVmX2FwaSwgb3RoZXJfYXBpLCAqLCBpZ25vcmU9KCkpOgorICAgICIiIlJldHVybnMgdGhlIHNldCBvZiBpdGVtcyBpbiByZWZfYXBpIG5vdCBpbiBvdGhlcl9hcGksIGV4Y2VwdCBmb3IgYQorICAgIGRlZmluZWQgbGlzdCBvZiBpdGVtcyB0byBiZSBpZ25vcmVkIGluIHRoaXMgY2hlY2suCisKKyAgICBCeSBkZWZhdWx0IHRoaXMgc2tpcHMgcHJpdmF0ZSBhdHRyaWJ1dGVzIGJlZ2lubmluZyB3aXRoICdfJyBidXQKKyAgICBpbmNsdWRlcyBhbGwgbWFnaWMgbWV0aG9kcywgaS5lLiB0aG9zZSBzdGFydGluZyBhbmQgZW5kaW5nIGluICdfXycuCisgICAgIiIiCisgICAgbWlzc2luZ19pdGVtcyA9IHNldChkaXIocmVmX2FwaSkpIC0gc2V0KGRpcihvdGhlcl9hcGkpKQorICAgIGlmIGlnbm9yZToKKyAgICAgICAgbWlzc2luZ19pdGVtcyAtPSBzZXQoaWdub3JlKQorICAgIG1pc3NpbmdfaXRlbXMgPSBzZXQobSBmb3IgbSBpbiBtaXNzaW5nX2l0ZW1zCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbS5zdGFydHN3aXRoKCdfJykgb3IgbS5lbmRzd2l0aCgnX18nKSkKKyAgICByZXR1cm4gbWlzc2luZ19pdGVtcworCisKIGNsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CiAgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgogCkBAIC0yMTk0LDYgKzIyMDYsNyBAQAogICAgIGRpc2FibGUgdGhlIGNyZWF0aW9uIG9mIGNvcmVkdW1wIGZpbGUuCiAgICAgIiIiCiAgICAgb2xkX3ZhbHVlID0gTm9uZQorICAgIG9sZF9tb2RlcyA9IE5vbmUKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIk9uIFdpbmRvd3MsIGRpc2FibGUgV2luZG93cyBFcnJvciBSZXBvcnRpbmcgZGlhbG9ncyB1c2luZwpAQCAtMjIxMSw2ICsyMjI0LDI2IEBACiAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1ggPSAweDAyCiAgICAgICAgICAgICBzZWxmLm9sZF92YWx1ZSA9IHNlbGYuX2szMi5TZXRFcnJvck1vZGUoU0VNX05PR1BGQVVMVEVSUk9SQk9YKQogICAgICAgICAgICAgc2VsZi5fazMyLlNldEVycm9yTW9kZShzZWxmLm9sZF92YWx1ZSB8IFNFTV9OT0dQRkFVTFRFUlJPUkJPWCkKKworICAgICAgICAgICAgIyBTdXBwcmVzcyBhc3NlcnQgZGlhbG9ncyBpbiBkZWJ1ZyBidWlsZHMKKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMzMTQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBtc3ZjcnQgb3IgYSByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9tb2RlcyA9IHt9CisgICAgICAgICAgICAgICAgZm9yIHJlcG9ydF90eXBlIGluIFttc3ZjcnQuQ1JUX1dBUk4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNSVF9BU1NFUlRdOgorICAgICAgICAgICAgICAgICAgICBvbGRfbW9kZSA9IG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKHJlcG9ydF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBvbGRfZmlsZSA9IG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKHJlcG9ydF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DUlREQkdfRklMRV9TVERFUlIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYub2xkX21vZGVzW3JlcG9ydF90eXBlXSA9IG9sZF9tb2RlLCBvbGRfZmlsZQorCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiByZXNvdXJjZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yMjQyLDYgKzIyNzUsMTIgQEAKIAogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgICAgICBzZWxmLl9rMzIuU2V0RXJyb3JNb2RlKHNlbGYub2xkX3ZhbHVlKQorCisgICAgICAgICAgICBpZiBzZWxmLm9sZF9tb2RlczoKKyAgICAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CisgICAgICAgICAgICAgICAgZm9yIHJlcG9ydF90eXBlLCAob2xkX21vZGUsIG9sZF9maWxlKSBpbiBzZWxmLm9sZF9tb2Rlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShyZXBvcnRfdHlwZSwgb2xkX21vZGUpCisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKHJlcG9ydF90eXBlLCBvbGRfZmlsZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHJlc291cmNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkgYi9MaWIvdGVzdC9zdXBwb3J0L3NjcmlwdF9oZWxwZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQpyZW5hbWUgdG8gTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CmluZGV4IGIyOTM5MmYuLjU4NGIwZTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CkBAIC0xNCwxMyArMTQsMTMgQEAKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gaW1wb3J0bGliLnV0aWwgaW1wb3J0IHNvdXJjZV9mcm9tX2NhY2hlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgbWFrZV9sZWdhY3lfcHljLCBzdHJpcF9weXRob25fc3RkZXJyLCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5Yywgc3RyaXBfcHl0aG9uX3N0ZGVycgogCiAKICMgQ2FjaGVkIHJlc3VsdCBvZiB0aGUgZXhwZW5zaXZlIHRlc3QgcGVyZm9ybWVkIGluIHRoZSBmdW5jdGlvbiBiZWxvdy4KIF9fY2FjaGVkX2ludGVycF9yZXF1aXJlc19lbnZpcm9ubWVudCA9IE5vbmUKIAotZGVmIF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpOgorZGVmIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIG91ciBzeXMuZXhlY3V0YWJsZSBpbnRlcnByZXRlciByZXF1aXJlcyBlbnZpcm9ubWVudAogICAgIHZhcmlhYmxlcyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJ1biBhdCBhbGwuCkBAIC01Nyw3ICs1Nyw3IEBACiAKICMgRXhlY3V0aW5nIHRoZSBpbnRlcnByZXRlciBpbiBhIHN1YnByb2Nlc3MKIGRlZiBydW5fcHl0aG9uX3VudGlsX2VuZCgqYXJncywgKiplbnZfdmFycyk6Ci0gICAgZW52X3JlcXVpcmVkID0gX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkKKyAgICBlbnZfcmVxdWlyZWQgPSBpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCiAgICAgaWYgJ19faXNvbGF0ZWQnIGluIGVudl92YXJzOgogICAgICAgICBpc29sYXRlZCA9IGVudl92YXJzLnBvcCgnX19pc29sYXRlZCcpCiAgICAgZWxzZToKQEAgLTk1LDEwICs5NSwzMCBAQAogZGVmIF9hc3NlcnRfcHl0aG9uKGV4cGVjdGVkX3N1Y2Nlc3MsICphcmdzLCAqKmVudl92YXJzKToKICAgICByZXMsIGNtZF9saW5lID0gcnVuX3B5dGhvbl91bnRpbF9lbmQoKmFyZ3MsICoqZW52X3ZhcnMpCiAgICAgaWYgKHJlcy5yYyBhbmQgZXhwZWN0ZWRfc3VjY2Vzcykgb3IgKG5vdCByZXMucmMgYW5kIG5vdCBleHBlY3RlZF9zdWNjZXNzKToKLSAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCi0gICAgICAgICAgICAiUHJvY2VzcyByZXR1cm4gY29kZSBpcyAlZCwgY29tbWFuZCBsaW5lIHdhczogJXIsICIKLSAgICAgICAgICAgICJzdGRlcnIgZm9sbG93czpcbiVzIiAlIChyZXMucmMsIGNtZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5lcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSkpCisgICAgICAgICMgTGltaXQgdG8gODAgbGluZXMgdG8gQVNDSUkgY2hhcmFjdGVycworICAgICAgICBtYXhsZW4gPSA4MCAqIDEwMAorICAgICAgICBvdXQsIGVyciA9IHJlcy5vdXQsIHJlcy5lcnIKKyAgICAgICAgaWYgbGVuKG91dCkgPiBtYXhsZW46CisgICAgICAgICAgICBvdXQgPSBiJyguLi4gdHJ1bmNhdGVkIHN0ZG91dCAuLi4pJyArIG91dFstbWF4bGVuOl0KKyAgICAgICAgaWYgbGVuKGVycikgPiBtYXhsZW46CisgICAgICAgICAgICBlcnIgPSBiJyguLi4gdHJ1bmNhdGVkIHN0ZGVyciAuLi4pJyArIGVyclstbWF4bGVuOl0KKyAgICAgICAgb3V0ID0gb3V0LmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpLnJzdHJpcCgpCisgICAgICAgIGVyciA9IGVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKS5yc3RyaXAoKQorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiUHJvY2VzcyByZXR1cm4gY29kZSBpcyAlZFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCBsaW5lOiAlclxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGRvdXQ6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkZXJyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0tIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyZXMucmMsIGNtZF9saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycikpCiAgICAgcmV0dXJuIHJlcwogCiBkZWYgYXNzZXJ0X3B5dGhvbl9vaygqYXJncywgKiplbnZfdmFycyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkgYi9MaWIvdGVzdC90ZXN0X19fZnV0dXJlX18ucHkKaW5kZXggNmY3M2M3Zi4uNTU5YTE4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fX2Z1dHVyZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX19mdXR1cmVfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgX19mdXR1cmVfXwogCiBHT09EX1NFUklBTFMgPSAoImFscGhhIiwgImJldGEiLCAiY2FuZGlkYXRlIiwgImZpbmFsIikKQEAgLTU4LDggKzU3LDUgQEAKICAgICAgICAgICAgICAgICAgICAiLmNvbXBpbGVyX2ZsYWcgaXNuJ3QgaW50IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnV0dXJlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9fb3Bjb2RlLnB5CmluZGV4IDAxNTJlOWQuLjEwNzVkZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29wY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vcGNvZGUucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgZGlzCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogaW1wb3J0IHVuaXR0ZXN0CiAKIF9vcGNvZGUgPSBpbXBvcnRfbW9kdWxlKCJfb3Bjb2RlIikKQEAgLTE2LDggKzE2LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX29wY29kZS5zdGFja19lZmZlY3QsIGRpcy5vcG1hcFsnQlVJTERfU0xJQ0UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX29wY29kZS5zdGFja19lZmZlY3QsIGRpcy5vcG1hcFsnUE9QX1RPUCddLCAwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE9wY29kZVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CmluZGV4IDVkY2FkZjcuLmFjNjMyNWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CkBAIC0yNzMsOSArMjczLDUgQEAKICAgICAgICAgcmVzdWx0ID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goY29uZmlnX3ZhcnMsICcgJywgJyAnLCAnICcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdtYWNvc3gnLCAnMTAuNicsICdmYXQnKSwgcmVzdWx0KQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RfT1NYU3VwcG9ydCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKaW5kZXggZWNjNTUwNy4uMjdiZmFkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CkBAIC0yMCwxNSArMjAsNiBAQAogCiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgYXNzZXJ0RXF1YWwoc2VsZiwgb2JqMSwgb2JqMik6Ci0gICAgICAgIGlmIG9iajEgIT0gb2JqMjoKLSAgICAgICAgICAgIHByaW50KCcnKQotICAgICAgICAgICAgcHJpbnQocmVwcihvYmoxKSkKLSAgICAgICAgICAgIHByaW50KHJlcHIob2JqMikpCi0gICAgICAgICAgICBwcmludChvYmoxKQotICAgICAgICAgICAgcHJpbnQob2JqMikKLSAgICAgICAgc3VwZXIoVGVzdENhc2UsIHNlbGYpLmFzc2VydEVxdWFsKG9iajEsIG9iajIpCi0KICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgVGhlIHRlc3RzIGFzc3VtZSB0aGF0IGxpbmUgd3JhcHBpbmcgb2NjdXJzIGF0IDgwIGNvbHVtbnMsIGJ1dCB0aGlzCiAgICAgICAgICMgYmVoYXZpb3VyIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHNldHRpbmcgdGhlIENPTFVNTlMgZW52aXJvbm1lbnQKQEAgLTc4LDkgKzY5LDYgQEAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIHZhcnMoc2VsZikgPT0gdmFycyhvdGhlcikKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IChzZWxmID09IG90aGVyKQotCiAKIGNsYXNzIEFyZ3VtZW50UGFyc2VyRXJyb3IoRXhjZXB0aW9uKToKIApAQCAtNzY1LDYgKzc1MywzOSBAQAogICAgIF0KIAogCitjbGFzcyBUZXN0T3B0aW9uYWxzQWxsb3dMb25nQWJicmV2aWF0aW9uKFBhcnNlclRlc3RDYXNlKToKKyAgICAiIiJBbGxvdyBsb25nIG9wdGlvbnMgdG8gYmUgYWJicmV2aWF0ZWQgdW5hbWJpZ3VvdXNseSIiIgorCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctLWZvbycpLAorICAgICAgICBTaWcoJy0tZm9vYmF6JyksCisgICAgICAgIFNpZygnLS1mb29ibGUnLCBhY3Rpb249J3N0b3JlX3RydWUnKSwKKyAgICBdCisgICAgZmFpbHVyZXMgPSBbJy0tZm9vYiA1JywgJy0tZm9vYiddCisgICAgc3VjY2Vzc2VzID0gWworICAgICAgICAoJycsIE5TKGZvbz1Ob25lLCBmb29iYXo9Tm9uZSwgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb28gNycsIE5TKGZvbz0nNycsIGZvb2Jhej1Ob25lLCBmb29ibGU9RmFsc2UpKSwKKyAgICAgICAgKCctLWZvb2JhIGEnLCBOUyhmb289Tm9uZSwgZm9vYmF6PSdhJywgZm9vYmxlPUZhbHNlKSksCisgICAgICAgICgnLS1mb29ibCAtLWZvbyBnJywgTlMoZm9vPSdnJywgZm9vYmF6PU5vbmUsIGZvb2JsZT1UcnVlKSksCisgICAgXQorCisKK2NsYXNzIFRlc3RPcHRpb25hbHNEaXNhbGxvd0xvbmdBYmJyZXZpYXRpb24oUGFyc2VyVGVzdENhc2UpOgorICAgICIiIkRvIG5vdCBhbGxvdyBhYmJyZXZpYXRpb25zIG9mIGxvbmcgb3B0aW9ucyBhdCBhbGwiIiIKKworICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYWxsb3dfYWJicmV2PUZhbHNlKQorICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLS1mb28nKSwKKyAgICAgICAgU2lnKCctLWZvb2RsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpLAorICAgICAgICBTaWcoJy0tZm9vbmx5JyksCisgICAgXQorICAgIGZhaWx1cmVzID0gWyctZm9vbiAzJywgJy0tZm9vbiAzJywgJy0tZm9vZCcsICctLWZvb2QgLS1mb28gMiddCisgICAgc3VjY2Vzc2VzID0gWworICAgICAgICAoJycsIE5TKGZvbz1Ob25lLCBmb29kbGU9RmFsc2UsIGZvb25seT1Ob25lKSksCisgICAgICAgICgnLS1mb28gMycsIE5TKGZvbz0nMycsIGZvb2RsZT1GYWxzZSwgZm9vbmx5PU5vbmUpKSwKKyAgICAgICAgKCctLWZvb25seSA3IC0tZm9vZGxlIC0tZm9vIDInLCBOUyhmb289JzInLCBmb29kbGU9VHJ1ZSwgZm9vbmx5PSc3JykpLAorICAgIF0KKwogIyA9PT09PT09PT09PT09PT09CiAjIFBvc2l0aW9uYWwgdGVzdHMKICMgPT09PT09PT09PT09PT09PQpAQCAtMTk5MywxNCArMjAxNCw5IEBACiAgICAgICAgICAgICAnJycpKQogCiAgICAgZGVmIF90ZXN0X3N1YnBhcnNlcl9oZWxwKHNlbGYsIGFyZ3Nfc3RyLCBleHBlY3RlZF9oZWxwKToKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5wYXJzZXIucGFyc2VfYXJncyhhcmdzX3N0ci5zcGxpdCgpKQotICAgICAgICBleGNlcHQgQXJndW1lbnRQYXJzZXJFcnJvcjoKLSAgICAgICAgICAgIGVyciA9IHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgICAgICBpZiBlcnIuc3Rkb3V0ICE9IGV4cGVjdGVkX2hlbHA6Ci0gICAgICAgICAgICAgICAgcHJpbnQocmVwcihleHBlY3RlZF9oZWxwKSkKLSAgICAgICAgICAgICAgICBwcmludChyZXByKGVyci5zdGRvdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuc3Rkb3V0LCBleHBlY3RlZF9oZWxwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2hlbHAsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9zdWJwYXJzZXIxX2hlbHAoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc3VicGFyc2VyX2hlbHAoJzUuMCAxIC1oJywgdGV4dHdyYXAuZGVkZW50KCcnJ1wKQEAgLTI4NDYsMTUgKzI4NjIsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9kZWZhdWx0KHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcGFyc2VyLmdldF9kZWZhdWx0KCJmb28iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHBhcnNlci5nZXRfZGVmYXVsdCgiYmFyIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5nZXRfZGVmYXVsdCgiZm9vIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5nZXRfZGVmYXVsdCgiYmFyIikpCiAKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1iYXIiLCB0eXBlPWludCwgZGVmYXVsdD00MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuZ2V0X2RlZmF1bHQoImZvbyIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyLCBwYXJzZXIuZ2V0X2RlZmF1bHQoImJhciIpKQogCiAgICAgICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZm9vPSJiYWRnZXIiKQpAQCAtMjg2OSwxOCArMjg4NSwxNiBAQAogCiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CiAgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBpbiBucywgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgbm90IGluIG5zLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4JyBpbiBucywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJycsIG5zKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd4JywgbnMpCiAKICAgICBkZWYgdGVzdF9ub25fZW1wdHkoc2VsZik6CiAgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKHg9MSwgeT0yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4JyBpbiBucywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneCcgbm90IGluIG5zLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneScgaW4gbnMsIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4eCcgaW4gbnMsIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd6JyBpbiBucywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJycsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEluKCd4JywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3knLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneHgnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigneicsIG5zKQogCiAjID09PT09PT09PT09PT09PT09PT09PQogIyBIZWxwIGZvcm1hdHRpbmcgdGVzdHMKQEAgLTI5MzYsMTMgKzI5NTAsNiBAQAogICAgICAgICAgICAgZGVmIF90ZXN0KHNlbGYsIHRlc3RlciwgcGFyc2VyX3RleHQpOgogICAgICAgICAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBnZXRhdHRyKHRlc3Rlciwgc2VsZi5mdW5jX3N1ZmZpeCkKICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gdGV4dHdyYXAuZGVkZW50KGV4cGVjdGVkX3RleHQpCi0gICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdGV4dCAhPSBwYXJzZXJfdGV4dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVwcihleHBlY3RlZF90ZXh0KSkKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQocmVwcihwYXJzZXJfdGV4dCkpCi0gICAgICAgICAgICAgICAgICAgIGZvciBjaGFyMSwgY2hhcjIgaW4gemlwKGV4cGVjdGVkX3RleHQsIHBhcnNlcl90ZXh0KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIxICE9IGNoYXIyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaXJzdCBkaWZmOiAlciAlcicgJSAoY2hhcjEsIGNoYXIyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHRlc3Rlci5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCBwYXJzZXJfdGV4dCkKIAogICAgICAgICAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYsIHRlc3Rlcik6CkBAIC00MjIxLDI0ICs0MjI4LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VmFsdWVFcnJvcignZm9vJywgYWN0aW9uPSdiYXonKQogICAgICAgICBzZWxmLmFzc2VydFZhbHVlRXJyb3IoJy0tZm9vJywgYWN0aW9uPSgnc3RvcmUnLCAnYXBwZW5kJykpCiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1mb28iLCBhY3Rpb249InN0b3JlLXRydWUiKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAndW5rbm93biBhY3Rpb24nCi0gICAgICAgICAgICBtc2cgPSAnZXhwZWN0ZWQgJXIsIGZvdW5kICVyJyAlIChleHBlY3RlZCwgZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZCBpbiBzdHIoZSksIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndW5rbm93biBhY3Rpb24nLCBzdHIoY20uZXhjZXB0aW9uKSkKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX2Rlc3Qoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudChkZXN0PSdmb28nKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdiYXInLCBkZXN0PSdiYXonKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgZXhwZWN0ZWQgPSAnZGVzdCBzdXBwbGllZCB0d2ljZSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudCcKLSAgICAgICAgICAgIG1zZyA9ICdleHBlY3RlZCAlciwgZm91bmQgJXInICUgKGV4cGVjdGVkLCBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkIGluIHN0cihlKSwgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdkZXN0IHN1cHBsaWVkIHR3aWNlIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKIAogICAgIGRlZiB0ZXN0X25vX2FyZ3VtZW50X2FjdGlvbnMoc2VsZik6CiAgICAgICAgIGZvciBhY3Rpb24gaW4gWydzdG9yZV9jb25zdCcsICdzdG9yZV90cnVlJywgJ3N0b3JlX2ZhbHNlJywKQEAgLTQzOTUsMTggKzQzOTUsMTAgQEAKIGNsYXNzIFRlc3RPcHRpb25hbHNIZWxwVmVyc2lvbkFjdGlvbnMoVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGhlbHAgYW5kIHZlcnNpb24gYWN0aW9ucyIiIgogCi0gICAgZGVmIF9nZXRfZXJyb3Ioc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBBcmd1bWVudFBhcnNlckVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpCi0KICAgICBkZWYgYXNzZXJ0UHJpbnRIZWxwRXhpdChzZWxmLCBwYXJzZXIsIGFyZ3Nfc3RyKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHBhcnNlci5mb3JtYXRfaGVscCgpLAotICAgICAgICAgICAgc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzX3N0ci5zcGxpdCgpKS5zdGRvdXQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhhcmdzX3N0ci5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5mb3JtYXRfaGVscCgpLCBjbS5leGNlcHRpb24uc3Rkb3V0KQogCiAgICAgZGVmIGFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3Ioc2VsZiwgcGFyc2VyLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IsIHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzKQpAQCAtNDQyMSw4ICs0NDEzLDkgQEAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2Zvcm1hdChzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKLSAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy12J10pLnN0ZG91dAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBtc2cpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbJy12J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1BQUCAzLjVcbicsIGNtLmV4Y2VwdGlvbi5zdGRvdXQpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vX2hlbHAoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQpAQCAtNDQzNCw4ICs0NDI3LDkgQEAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2FjdGlvbihzZWxmKToKICAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nWFhYJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLVYnLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSclKHByb2cpcyAzLjcnKQotICAgICAgICBtc2cgPSBzZWxmLl9nZXRfZXJyb3IocGFyc2VyLnBhcnNlX2FyZ3MsIFsnLVYnXSkuc3Rkb3V0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hYWCAzLjdcbicsIG1zZykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnLVYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFhYIDMuN1xuJywgY20uZXhjZXB0aW9uLnN0ZG91dCkKIAogICAgIGRlZiB0ZXN0X25vX2hlbHAoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlKQpAQCAtNDYwNSwxNCArNDU5OSwxMCBAQAogCiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCBhZGRfaGVscD1GYWxzZSkKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgneCcsIHR5cGU9c3BhbSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydYWFgnXSkKLSAgICAgICAgZXhjZXB0IEFyZ3VtZW50UGFyc2VyRXJyb3I6Ci0gICAgICAgICAgICBleHBlY3RlZCA9ICd1c2FnZTogUFJPRyB4XG5QUk9HOiBlcnJvcjogYXJndW1lbnQgeDogc3BhbSFcbicKLSAgICAgICAgICAgIG1zZyA9IHN5cy5leGNfaW5mbygpWzFdLnN0ZGVycgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgbXNnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndXNhZ2U6IFBST0cgeFxuUFJPRzogZXJyb3I6IGFyZ3VtZW50IHg6IHNwYW0hXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNtLmV4Y2VwdGlvbi5zdGRlcnIpCiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PQogIyBNZXNzYWdlQ29udGVudEVycm9yIHRlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCAwN2M5YmY5Li4xMGQ5OTQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTM5NCw3ICszOTQsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCiAKICAgICBkZWYgdGVzdF90b2Zyb21zdHJpbmcoc2VsZik6Ci0gICAgICAgIG5iX3dhcm5pbmdzID0gNAorICAgICAgICAjIFdhcm5pbmdzIG5vdCByYWlzZWQgd2hlbiBhcmd1bWVudHMgYXJlIGluY29ycmVjdCBhcyBBcmd1bWVudCBDbGluaWMKKyAgICAgICAgIyBoYW5kbGVzIHRoYXQgYmVmb3JlIHRoZSB3YXJuaW5nIGNhbiBiZSByYWlzZWQuCisgICAgICAgIG5iX3dhcm5pbmdzID0gMgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyByOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXIiKHRvfGZyb20pc3RyaW5nXChcKSBpcyBkZXByZWNhdGVkIiwKQEAgLTEwMzksNiArMTA0MSwxMSBAQAogICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsICJmb28iKQogICAgICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGFycmF5LmFycmF5KCd1JywgJ2ZvbycpKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfb2Jzb2xldGVfd3JpdGVfbG9jayhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGJ1ZmZlcl93aXRoX251bGxfdmlldworICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0InLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGEpCiAKIGNsYXNzIFN0cmluZ1Rlc3QoQmFzZVRlc3QpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzZGxfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTY0MjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc2RsX3BhcnNlci5weQpAQCAtMCwwICsxLDEyMiBAQAorIiIiVGVzdHMgZm9yIHRoZSBhc2RsIHBhcnNlciBpbiBQYXJzZXIvYXNkbC5weSIiIgorCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IG9zCitmcm9tIG9zLnBhdGggaW1wb3J0IGRpcm5hbWUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB1bml0dGVzdAorCisKKyMgVGhpcyB0ZXN0IGlzIG9ubHkgcmVsZXZhbnQgZm9yIGZyb20tc291cmNlIGJ1aWxkcyBvZiBQeXRob24uCitpZiBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCd0ZXN0IGlycmVsZXZhbnQgZm9yIGFuIGluc3RhbGxlZCBQeXRob24nKQorCitzcmNfYmFzZSA9IGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fZmlsZV9fKSkpCitwYXJzZXJfZGlyID0gb3MucGF0aC5qb2luKHNyY19iYXNlLCAnUGFyc2VyJykKKworCitjbGFzcyBUZXN0QXNkbFBhcnNlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIyBMb2FkcyB0aGUgYXNkbCBtb2R1bGUgZHluYW1pY2FsbHksIHNpbmNlIGl0J3Mgbm90IGluIGEgcmVhbCBpbXBvcnRhYmxlCisgICAgICAgICMgcGFja2FnZS4KKyAgICAgICAgIyBQYXJzZXMgUHl0aG9uLmFzZGwgaW50byBhIGFzdC5Nb2R1bGUgYW5kIHJ1biB0aGUgY2hlY2sgb24gaXQuCisgICAgICAgICMgVGhlcmUncyBubyBuZWVkIHRvIGRvIHRoaXMgZm9yIGVhY2ggdGVzdCBtZXRob2QsIGhlbmNlIHNldFVwQ2xhc3MuCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBwYXJzZXJfZGlyKQorICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoCisgICAgICAgICAgICAgICAgJ2FzZGwnLCBvcy5wYXRoLmpvaW4ocGFyc2VyX2RpciwgJ2FzZGwucHknKSkKKyAgICAgICAgY2xzLmFzZGwgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBjbHMubW9kID0gY2xzLmFzZGwucGFyc2Uob3MucGF0aC5qb2luKHBhcnNlcl9kaXIsICdQeXRob24uYXNkbCcpKQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjbHMuYXNkbC5jaGVjayhjbHMubW9kKSwgJ01vZHVsZSB2YWxpZGF0aW9uIGZhaWxlZCcpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBhbGlhcyBzdHVmZiBmcm9tIHRoZSBjbGFzcywgZm9yIGNvbnZlbmllbmNlCisgICAgICAgIHNlbGYuYXNkbCA9IFRlc3RBc2RsUGFyc2VyLmFzZGwKKyAgICAgICAgc2VsZi5tb2QgPSBUZXN0QXNkbFBhcnNlci5tb2QKKyAgICAgICAgc2VsZi50eXBlcyA9IHNlbGYubW9kLnR5cGVzCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tb2QubmFtZSwgJ1B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N0bXQnLCBzZWxmLnR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdleHByJywgc2VsZi50eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbW9kJywgc2VsZi50eXBlcykKKworICAgIGRlZiB0ZXN0X2RlZmluaXRpb25zKHNlbGYpOgorICAgICAgICBkZWZzID0gc2VsZi5tb2QuZGZucworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVmc1swXSwgc2VsZi5hc2RsLlR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkZWZzWzBdLnZhbHVlLCBzZWxmLmFzZGwuU3VtKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnR5cGVzWyd3aXRoaXRlbSddLCBzZWxmLmFzZGwuUHJvZHVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYudHlwZXNbJ2FsaWFzJ10sIHNlbGYuYXNkbC5Qcm9kdWN0KQorCisgICAgZGVmIHRlc3RfcHJvZHVjdChzZWxmKToKKyAgICAgICAgYWxpYXMgPSBzZWxmLnR5cGVzWydhbGlhcyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoYWxpYXMpLAorICAgICAgICAgICAgJ1Byb2R1Y3QoW0ZpZWxkKGlkZW50aWZpZXIsIG5hbWUpLCBGaWVsZChpZGVudGlmaWVyLCBhc25hbWUsIG9wdD1UcnVlKV0pJykKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHN0bXQgPSBzZWxmLnR5cGVzWydzdG10J10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RtdC5hdHRyaWJ1dGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3RtdC5hdHRyaWJ1dGVzWzBdKSwgJ0ZpZWxkKGludCwgbGluZW5vKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHN0bXQuYXR0cmlidXRlc1sxXSksICdGaWVsZChpbnQsIGNvbF9vZmZzZXQpJykKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgZWhhbmRsZXIgPSBzZWxmLnR5cGVzWydleGNlcHRoYW5kbGVyJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWhhbmRsZXIudHlwZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlaGFuZGxlci5hdHRyaWJ1dGVzKSwgMikKKworICAgICAgICBjb25zID0gZWhhbmRsZXIudHlwZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvbnMsIHNlbGYuYXNkbC5Db25zdHJ1Y3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29ucy5maWVsZHMpLCAzKQorCisgICAgICAgIGYwID0gY29ucy5maWVsZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMC50eXBlLCAnZXhwcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjAubmFtZSwgJ3R5cGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZjAub3B0KQorCisgICAgICAgIGYxID0gY29ucy5maWVsZHNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMS50eXBlLCAnaWRlbnRpZmllcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjEubmFtZSwgJ25hbWUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZjEub3B0KQorCisgICAgICAgIGYyID0gY29ucy5maWVsZHNbMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMi50eXBlLCAnc3RtdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIubmFtZSwgJ2JvZHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYyLm9wdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYyLnNlcSkKKworICAgIGRlZiB0ZXN0X3Zpc2l0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIEN1c3RvbVZpc2l0b3Ioc2VsZi5hc2RsLlZpc2l0b3JCYXNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWVzX3dpdGhfc2VxID0gW10KKworICAgICAgICAgICAgZGVmIHZpc2l0TW9kdWxlKHNlbGYsIG1vZCk6CisgICAgICAgICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52aXNpdChkZm4pCisKKyAgICAgICAgICAgIGRlZiB2aXNpdFR5cGUoc2VsZiwgdHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi52aXNpdCh0eXBlLnZhbHVlKQorCisgICAgICAgICAgICBkZWYgdmlzaXRTdW0oc2VsZiwgc3VtKToKKyAgICAgICAgICAgICAgICBmb3IgdCBpbiBzdW0udHlwZXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudmlzaXQodCkKKworICAgICAgICAgICAgZGVmIHZpc2l0Q29uc3RydWN0b3Ioc2VsZiwgY29ucyk6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gY29ucy5maWVsZHM6CisgICAgICAgICAgICAgICAgICAgIGlmIGYuc2VxOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lc193aXRoX3NlcS5hcHBlbmQoY29ucy5uYW1lKQorCisgICAgICAgIHYgPSBDdXN0b21WaXNpdG9yKCkKKyAgICAgICAgdi52aXNpdChzZWxmLnR5cGVzWydtb2QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lm5hbWVzX3dpdGhfc2VxLCBbJ01vZHVsZScsICdJbnRlcmFjdGl2ZScsICdTdWl0ZSddKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CmluZGV4IGE1MzNmODYuLmYxYzY1NWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CkBAIC03OCw5ICs3OCw5IEBACiAgICAgIyBQYXNzLAogICAgICJwYXNzIiwKICAgICAjIEJyZWFrCi0gICAgImJyZWFrIiwKKyAgICAiZm9yIHYgaW4gdjpicmVhayIsCiAgICAgIyBDb250aW51ZQotICAgICJjb250aW51ZSIsCisgICAgImZvciB2IGluIHY6Y29udGludWUiLAogICAgICMgZm9yIHN0YXRlbWVudHMgd2l0aCBuYWtlZCB0dXBsZXMgKHNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNjcwNCkKICAgICAiZm9yIGEsYiBpbiBjOiBwYXNzIiwKICAgICAiWyhhLGIpIGZvciBhLGIgaW4gY10iLApAQCAtMTA2LDYgKzEwNiwxNSBAQAogICAgICJ7ciBmb3IgbCBpbiB4IGlmIGd9IiwKICAgICAjIHNldGNvbXAgd2l0aCBuYWtlZCB0dXBsZQogICAgICJ7ciBmb3IgbCxtIGluIHh9IiwKKyAgICAjIEFzeW5jRnVuY3Rpb25EZWYKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBhd2FpdCBzb21ldGhpbmcoKSIsCisgICAgIyBBc3luY0ZvcgorICAgICJhc3luYyBkZWYgZigpOlxuIGFzeW5jIGZvciBlIGluIGk6IDFcbiBlbHNlOiAyIiwKKyAgICAjIEFzeW5jV2l0aAorICAgICJhc3luYyBkZWYgZigpOlxuIGFzeW5jIHdpdGggYSBhcyBiOiAxIiwKKyAgICAjIFBFUCA0NDg6IEFkZGl0aW9uYWwgVW5wYWNraW5nIEdlbmVyYWxpemF0aW9ucworICAgICJ7Kip7MToyfSwgMjozfSIsCisgICAgInsqezEsIDJ9LCAzfSIsCiBdCiAKICMgVGhlc2UgYXJlIGNvbXBpbGVkIHRocm91Z2ggInNpbmdsZSIKQEAgLTIyNSw5ICsyMzQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaW5nbGVfdGVzdHMsIHNpbmdsZV9yZXN1bHRzLCAic2luZ2xlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbF90ZXN0cywgZXZhbF9yZXN1bHRzLCAiZXZhbCIpKToKICAgICAgICAgICAgIGZvciBpLCBvIGluIHppcChpbnB1dCwgb3V0cHV0KToKLSAgICAgICAgICAgICAgICBhc3RfdHJlZSA9IGNvbXBpbGUoaSwgIj8iLCBraW5kLCBhc3QuUHlDRl9PTkxZX0FTVCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvX3R1cGxlKGFzdF90cmVlKSwgbykKLSAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIoYXN0X3RyZWUsICgwLCAwKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249InBhcnNpbmciLCBpbnB1dD1pKToKKyAgICAgICAgICAgICAgICAgICAgYXN0X3RyZWUgPSBjb21waWxlKGksICI/Iiwga2luZCwgYXN0LlB5Q0ZfT05MWV9BU1QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9fdHVwbGUoYXN0X3RyZWUpLCBvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIoYXN0X3RyZWUsICgwLCAwKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249ImNvbXBpbGluZyIsIGlucHV0PWkpOgorICAgICAgICAgICAgICAgICAgICBjb21waWxlKGFzdF90cmVlLCAiPyIsIGtpbmQpCiAKICAgICBkZWYgdGVzdF9zbGljZShzZWxmKToKICAgICAgICAgc2xjID0gYXN0LnBhcnNlKCJ4Wzo6XSIpLmJvZHlbMF0udmFsdWUuc2xpY2UKQEAgLTQyNywxNyArNDM5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAobm9kZSksCiAgICAgICAgICAgICAiTW9kdWxlKGJvZHk9W0V4cHIodmFsdWU9Q2FsbChmdW5jPU5hbWUoaWQ9J3NwYW0nLCBjdHg9TG9hZCgpKSwgIgogICAgICAgICAgICAgImFyZ3M9W05hbWUoaWQ9J2VnZ3MnLCBjdHg9TG9hZCgpKSwgU3RyKHM9J2FuZCBjaGVlc2UnKV0sICIKLSAgICAgICAgICAgICJrZXl3b3Jkcz1bXSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUpKV0pIgorICAgICAgICAgICAgImtleXdvcmRzPVtdKSldKSIKICAgICAgICAgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5kdW1wKG5vZGUsIGFubm90YXRlX2ZpZWxkcz1GYWxzZSksCiAgICAgICAgICAgICAiTW9kdWxlKFtFeHByKENhbGwoTmFtZSgnc3BhbScsIExvYWQoKSksIFtOYW1lKCdlZ2dzJywgTG9hZCgpKSwgIgotICAgICAgICAgICAgIlN0cignYW5kIGNoZWVzZScpXSwgW10sIE5vbmUsIE5vbmUpKV0pIgorICAgICAgICAgICAgIlN0cignYW5kIGNoZWVzZScpXSwgW10pKV0pIgogICAgICAgICApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAobm9kZSwgaW5jbHVkZV9hdHRyaWJ1dGVzPVRydWUpLAogICAgICAgICAgICAgIk1vZHVsZShib2R5PVtFeHByKHZhbHVlPUNhbGwoZnVuYz1OYW1lKGlkPSdzcGFtJywgY3R4PUxvYWQoKSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCBhcmdzPVtOYW1lKGlkPSdlZ2dzJywgY3R4PUxvYWQoKSwgIgogICAgICAgICAgICAgImxpbmVubz0xLCBjb2xfb2Zmc2V0PTUpLCBTdHIocz0nYW5kIGNoZWVzZScsIGxpbmVubz0xLCAiCi0gICAgICAgICAgICAiY29sX29mZnNldD0xMSldLCBrZXl3b3Jkcz1bXSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsICIKKyAgICAgICAgICAgICJjb2xfb2Zmc2V0PTExKV0sIGtleXdvcmRzPVtdLCAiCiAgICAgICAgICAgICAibGluZW5vPTEsIGNvbF9vZmZzZXQ9MCksIGxpbmVubz0xLCBjb2xfb2Zmc2V0PTApXSkiCiAgICAgICAgICkKIApAQCAtNDUzLDE2ICs0NjUsMTYgQEAKICAgICBkZWYgdGVzdF9maXhfbWlzc2luZ19sb2NhdGlvbnMoc2VsZik6CiAgICAgICAgIHNyYyA9IGFzdC5wYXJzZSgnd3JpdGUoInNwYW0iKScpCiAgICAgICAgIHNyYy5ib2R5LmFwcGVuZChhc3QuRXhwcihhc3QuQ2FsbChhc3QuTmFtZSgnc3BhbScsIGFzdC5Mb2FkKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FzdC5TdHIoJ2VnZ3MnKV0sIFtdLCBOb25lLCBOb25lKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXN0LlN0cignZWdncycpXSwgW10pKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmMsIGFzdC5maXhfbWlzc2luZ19sb2NhdGlvbnMoc3JjKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZHVtcChzcmMsIGluY2x1ZGVfYXR0cmlidXRlcz1UcnVlKSwKICAgICAgICAgICAgICJNb2R1bGUoYm9keT1bRXhwcih2YWx1ZT1DYWxsKGZ1bmM9TmFtZShpZD0nd3JpdGUnLCBjdHg9TG9hZCgpLCAiCiAgICAgICAgICAgICAibGluZW5vPTEsIGNvbF9vZmZzZXQ9MCksIGFyZ3M9W1N0cihzPSdzcGFtJywgbGluZW5vPTEsICIKLSAgICAgICAgICAgICJjb2xfb2Zmc2V0PTYpXSwga2V5d29yZHM9W10sIHN0YXJhcmdzPU5vbmUsIGt3YXJncz1Ob25lLCAiCisgICAgICAgICAgICAiY29sX29mZnNldD02KV0sIGtleXdvcmRzPVtdLCAiCiAgICAgICAgICAgICAibGluZW5vPTEsIGNvbF9vZmZzZXQ9MCksIGxpbmVubz0xLCBjb2xfb2Zmc2V0PTApLCAiCiAgICAgICAgICAgICAiRXhwcih2YWx1ZT1DYWxsKGZ1bmM9TmFtZShpZD0nc3BhbScsIGN0eD1Mb2FkKCksIGxpbmVubz0xLCAiCiAgICAgICAgICAgICAiY29sX29mZnNldD0wKSwgYXJncz1bU3RyKHM9J2VnZ3MnLCBsaW5lbm89MSwgY29sX29mZnNldD0wKV0sICIKLSAgICAgICAgICAgICJrZXl3b3Jkcz1bXSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsIGxpbmVubz0xLCAiCisgICAgICAgICAgICAia2V5d29yZHM9W10sIGxpbmVubz0xLCAiCiAgICAgICAgICAgICAiY29sX29mZnNldD0wKSwgbGluZW5vPTEsIGNvbF9vZmZzZXQ9MCldKSIKICAgICAgICAgKQogCkBAIC00ODcsOCArNDk5LDcgQEAKICAgICAgICAgbm9kZSA9IGFzdC5wYXJzZSgnZm9vKCknLCBtb2RlPSdldmFsJykKICAgICAgICAgZCA9IGRpY3QoYXN0Lml0ZXJfZmllbGRzKG5vZGUuYm9keSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5wb3AoJ2Z1bmMnKS5pZCwgJ2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgeydrZXl3b3Jkcyc6IFtdLCAna3dhcmdzJzogTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnOiBbXSwgJ3N0YXJhcmdzJzogTm9uZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgeydrZXl3b3Jkcyc6IFtdLCAnYXJncyc6IFtdfSkKIAogICAgIGRlZiB0ZXN0X2l0ZXJfY2hpbGRfbm9kZXMoc2VsZik6CiAgICAgICAgIG5vZGUgPSBhc3QucGFyc2UoInNwYW0oMjMsIDQyLCBlZ2dzPSdsZWVrJykiLCBtb2RlPSdldmFsJykKQEAgLTUwNiw2ICs1MTcsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKG5vZGUuYm9keVswXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmUgb25lXG5saW5lIHR3bycpCiAKKyAgICAgICAgbm9kZSA9IGFzdC5wYXJzZSgnYXN5bmMgZGVmIGZvbygpOlxuICAiIiJzcGFtXG4gIGhhbSIiIicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmdldF9kb2NzdHJpbmcobm9kZS5ib2R5WzBdKSwgJ3NwYW1cbmhhbScpCisKICAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgnWzEsIDIsIDNdJyksIFsxLCAyLCAzXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKCd7ImZvbyI6IDQyfScpLCB7ImZvbyI6IDQyfSkKQEAgLTYwNCw4ICs2MTgsNyBAQAogICAgICAgICBzZWxmLl9jaGVja19hcmd1bWVudHMoZmFjLCBzZWxmLnN0bXQpCiAKICAgICBkZWYgdGVzdF9jbGFzc2RlZihzZWxmKToKLSAgICAgICAgZGVmIGNscyhiYXNlcz1Ob25lLCBrZXl3b3Jkcz1Ob25lLCBzdGFyYXJncz1Ob25lLCBrd2FyZ3M9Tm9uZSwKLSAgICAgICAgICAgICAgICBib2R5PU5vbmUsIGRlY29yYXRvcl9saXN0PU5vbmUpOgorICAgICAgICBkZWYgY2xzKGJhc2VzPU5vbmUsIGtleXdvcmRzPU5vbmUsIGJvZHk9Tm9uZSwgZGVjb3JhdG9yX2xpc3Q9Tm9uZSk6CiAgICAgICAgICAgICBpZiBiYXNlcyBpcyBOb25lOgogICAgICAgICAgICAgICAgIGJhc2VzID0gW10KICAgICAgICAgICAgIGlmIGtleXdvcmRzIGlzIE5vbmU6CkBAIC02MTQsMTYgKzYyNywxMiBAQAogICAgICAgICAgICAgICAgIGJvZHkgPSBbYXN0LlBhc3MoKV0KICAgICAgICAgICAgIGlmIGRlY29yYXRvcl9saXN0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QgPSBbXQotICAgICAgICAgICAgcmV0dXJuIGFzdC5DbGFzc0RlZigibXljbGFzcyIsIGJhc2VzLCBrZXl3b3Jkcywgc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncywgYm9keSwgZGVjb3JhdG9yX2xpc3QpCisgICAgICAgICAgICByZXR1cm4gYXN0LkNsYXNzRGVmKCJteWNsYXNzIiwgYmFzZXMsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBkZWNvcmF0b3JfbGlzdCkKICAgICAgICAgc2VsZi5zdG10KGNscyhiYXNlcz1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgc2VsZi5zdG10KGNscyhrZXl3b3Jkcz1bYXN0LmtleXdvcmQoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKSwKICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKLSAgICAgICAgc2VsZi5zdG10KGNscyhzdGFyYXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCi0gICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIHNlbGYuc3RtdChjbHMoa3dhcmdzPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKLSAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtdKSwgImVtcHR5IGJvZHkgb24gQ2xhc3NEZWYiKQogICAgICAgICBzZWxmLnN0bXQoY2xzKGJvZHk9W05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCiAgICAgICAgIHNlbGYuc3RtdChjbHMoZGVjb3JhdG9yX2xpc3Q9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCkBAIC03NzcsOCArNzg2LDYgQEAKICAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgogICAgICAgICBkID0gYXN0LkRpY3QoW10sIFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSkKICAgICAgICAgc2VsZi5leHByKGQsICJzYW1lIG51bWJlciBvZiBrZXlzIGFzIHZhbHVlcyIpCi0gICAgICAgIGQgPSBhc3QuRGljdChbTm9uZV0sIFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSkKLSAgICAgICAgc2VsZi5leHByKGQsICJOb25lIGRpc2FsbG93ZWQiKQogICAgICAgICBkID0gYXN0LkRpY3QoW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldLCBbTm9uZV0pCiAgICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKIApAQCAtODU0LDIwICs4NjEsMTIgQEAKICAgICAgICAgZnVuYyA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKICAgICAgICAgYXJncyA9IFthc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpXQogICAgICAgICBrZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LkxvYWQoKSkpXQotICAgICAgICBzdGFyYXJnID0gYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKQotICAgICAgICBrd2FyZyA9IGFzdC5OYW1lKCJxIiwgYXN0LkxvYWQoKSkKLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFyZ3MsIGtleXdvcmRzKQogICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgW05vbmVdLCBrZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBbTm9uZV0sIGtleXdvcmRzKQogICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIk5vbmUgZGlzYWxsb3dlZCIpCiAgICAgICAgIGJhZF9rZXl3b3JkcyA9IFthc3Qua2V5d29yZCgidyIsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpKV0KLSAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGJhZF9rZXl3b3Jkcywgc3RhcmFyZywga3dhcmcpCi0gICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCi0gICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3JkcywgYXN0Lk5hbWUoInoiLCBhc3QuU3RvcmUoKSksIGt3YXJnKQotICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQotICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHN0YXJhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgidyIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGJhZF9rZXl3b3JkcykKICAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKIAogICAgIGRlZiB0ZXN0X251bShzZWxmKToKQEAgLTk1Nyw4ICs5NTYsOCBAQAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCAoJ2FyZycsICgxLCA3KSwgJ2FyZ3MnLCBOb25lKSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ1Bhc3MnLCAoMSwgMTQpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdGdW5jdGlvbkRlZicsICgxLCAwKSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sICgnYXJnJywgKDEsIDgpLCAna3dhcmdzJywgTm9uZSksIFtdKSwgWygnUGFzcycsICgxLCAxNykpXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgWygnYXJnJywgKDEsIDYpLCAnYScsIE5vbmUpLCAoJ2FyZycsICgxLCA5KSwgJ2InLCBOb25lKSwgKCdhcmcnLCAoMSwgMTQpLCAnYycsIE5vbmUpLCAoJ2FyZycsICgxLCAyMiksICdkJywgTm9uZSksICgnYXJnJywgKDEsIDI4KSwgJ2UnLCBOb25lKV0sICgnYXJnJywgKDEsIDM1KSwgJ2FyZ3MnLCBOb25lKSwgWygnYXJnJywgKDEsIDQxKSwgJ2YnLCBOb25lKV0sIFsoJ051bScsICgxLCA0MyksIDQyKV0sICgnYXJnJywgKDEsIDQ5KSwgJ2t3YXJncycsIE5vbmUpLCBbKCdOdW0nLCAoMSwgMTEpLCAxKSwgKCdOYW1lQ29uc3RhbnQnLCAoMSwgMTYpLCBOb25lKSwgKCdMaXN0JywgKDEsIDI0KSwgW10sICgnTG9hZCcsKSksICgnRGljdCcsICgxLCAzMCksIFtdLCBbXSldKSwgWygnUGFzcycsICgxLCA1OCkpXSwgW10sIE5vbmUpXSksCi0oJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFtdLCBbXSwgTm9uZSwgTm9uZSwgWygnUGFzcycsICgxLCA4KSldLCBbXSldKSwKLSgnTW9kdWxlJywgWygnQ2xhc3NEZWYnLCAoMSwgMCksICdDJywgWygnTmFtZScsICgxLCA4KSwgJ29iamVjdCcsICgnTG9hZCcsKSldLCBbXSwgTm9uZSwgTm9uZSwgWygnUGFzcycsICgxLCAxNykpXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ0NsYXNzRGVmJywgKDEsIDApLCAnQycsIFtdLCBbXSwgWygnUGFzcycsICgxLCA4KSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnQ2xhc3NEZWYnLCAoMSwgMCksICdDJywgWygnTmFtZScsICgxLCA4KSwgJ29iamVjdCcsICgnTG9hZCcsKSldLCBbXSwgWygnUGFzcycsICgxLCAxNykpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0Z1bmN0aW9uRGVmJywgKDEsIDApLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdSZXR1cm4nLCAoMSwgOCksICgnTnVtJywgKDEsIDE1KSwgMSkpXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0RlbGV0ZScsICgxLCAwKSwgWygnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ0RlbCcsKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NpZ24nLCAoMSwgMCksIFsoJ05hbWUnLCAoMSwgMCksICd2JywgKCdTdG9yZScsKSldLCAoJ051bScsICgxLCA0KSwgMSkpXSksCkBAIC05NjgsNyArOTY3LDcgQEAKICgnTW9kdWxlJywgWygnSWYnLCAoMSwgMCksICgnTmFtZScsICgxLCAzKSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDUpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdXaXRoJywgKDEsIDApLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgxLCA1KSwgJ3gnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTApLCAneScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMTMpKV0pXSksCiAoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpLCAoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDEzKSwgJ3onLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAncScsICgnU3RvcmUnLCkpKV0sIFsoJ1Bhc3MnLCAoMSwgMjEpKV0pXSksCi0oJ01vZHVsZScsIFsoJ1JhaXNlJywgKDEsIDApLCAoJ0NhbGwnLCAoMSwgNiksICgnTmFtZScsICgxLCA2KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIFsoJ1N0cicsICgxLCAxNiksICdzdHJpbmcnKV0sIFtdLCBOb25lLCBOb25lKSwgTm9uZSldKSwKKygnTW9kdWxlJywgWygnUmFpc2UnLCAoMSwgMCksICgnQ2FsbCcsICgxLCA2KSwgKCdOYW1lJywgKDEsIDYpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgWygnU3RyJywgKDEsIDE2KSwgJ3N0cmluZycpXSwgW10pLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdUcnknLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdLCBbXSldKSwKICgnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFtdLCBbXSwgWygnUGFzcycsICg0LCAyKSldKV0pLAogKCdNb2R1bGUnLCBbKCdBc3NlcnQnLCAoMSwgMCksICgnTmFtZScsICgxLCA3KSwgJ3YnLCAoJ0xvYWQnLCkpLCBOb25lKV0pLApAQCAtOTc3LDggKzk3Niw4IEBACiAoJ01vZHVsZScsIFsoJ0dsb2JhbCcsICgxLCAwKSwgWyd2J10pXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSldKSwKICgnTW9kdWxlJywgWygnUGFzcycsICgxLCAwKSldKSwKLSgnTW9kdWxlJywgWygnQnJlYWsnLCAoMSwgMCkpXSksCi0oJ01vZHVsZScsIFsoJ0NvbnRpbnVlJywgKDEsIDApKV0pLAorKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0JyZWFrJywgKDEsIDExKSldLCBbXSldKSwKKygnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdDb250aW51ZScsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdUdXBsZScsICgxLCA0KSwgWygnTmFtZScsICgxLCA0KSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDYpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMSksICdjJywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLApAQCAtOTg4LDYgKzk4NywxMSBAQAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICd3JywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ3gnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgNyksIFsoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ20nLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0F3YWl0JywgKDIsIDEpLCAoJ0NhbGwnLCAoMiwgNyksICgnTmFtZScsICgyLCA3KSwgJ3NvbWV0aGluZycsICgnTG9hZCcsKSksIFtdLCBbXSkpKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY0ZvcicsICgyLCA3KSwgKCdOYW1lJywgKDIsIDExKSwgJ2UnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE2KSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdFeHByJywgKDIsIDE5KSwgKCdOdW0nLCAoMiwgMTkpLCAxKSldLCBbKCdFeHByJywgKDMsIDcpLCAoJ051bScsICgzLCA3KSwgMikpXSldLCBbXSwgTm9uZSldKSwKKygnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNXaXRoJywgKDIsIDcpLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgyLCAxMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDIsIDE3KSwgJ2InLCAoJ1N0b3JlJywpKSldLCBbKCdFeHByJywgKDIsIDIwKSwgKCdOdW0nLCAoMiwgMjApLCAxKSldKV0sIFtdLCBOb25lKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3QnLCAoMSwgMSksIFtOb25lLCAoJ051bScsICgxLCAxMCksIDIpXSwgWygnRGljdCcsICgxLCA0KSwgWygnTnVtJywgKDEsIDQpLCAxKV0sIFsoJ051bScsICgxLCA2KSwgMildKSwgKCdOdW0nLCAoMSwgMTIpLCAzKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldCcsICgxLCAxKSwgWygnU3RhcnJlZCcsICgxLCAxKSwgKCdTZXQnLCAoMSwgMyksIFsoJ051bScsICgxLCAzKSwgMSksICgnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ0xvYWQnLCkpLCAoJ051bScsICgxLCAxMCksIDMpXSkpXSksCiBdCiBzaW5nbGVfcmVzdWx0cyA9IFsKICgnSW50ZXJhY3RpdmUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0Jpbk9wJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksICgnQWRkJywpLCAoJ051bScsICgxLCAyKSwgMikpKV0pLApAQCAtOTk4LDE0ICsxMDAyLDE0IEBACiAoJ0V4cHJlc3Npb24nLCAoJ0Jpbk9wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdhJywgKCdMb2FkJywpKSwgKCdBZGQnLCksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1VuYXJ5T3AnLCAoMSwgMCksICgnTm90JywpLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdMb2FkJywpKSkpLAogKCdFeHByZXNzaW9uJywgKCdMYW1iZGEnLCAoMSwgMCksICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCAoJ05hbWVDb25zdGFudCcsICgxLCA3KSwgTm9uZSkpKSwKLSgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgWygnTnVtJywgKDEsIDIpLCAxKV0sIFsoJ051bScsICgxLCA0KSwgMildKSksCisoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMiksIFsoJ051bScsICgxLCAyKSwgMSldLCBbKCdOdW0nLCAoMSwgNCksIDIpXSkpLAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbXSwgW10pKSwKLSgnRXhwcmVzc2lvbicsICgnU2V0JywgKDEsIDApLCBbKCdOYW1lQ29uc3RhbnQnLCAoMSwgMSksIE5vbmUpXSkpLAotKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbKCdOdW0nLCAoMiwgNiksIDEpXSwgWygnTnVtJywgKDQsIDEwKSwgMildKSksCisoJ0V4cHJlc3Npb24nLCAoJ1NldCcsICgxLCAxKSwgWygnTmFtZUNvbnN0YW50JywgKDEsIDEpLCBOb25lKV0pKSwKKygnRXhwcmVzc2lvbicsICgnRGljdCcsICgyLCA2KSwgWygnTnVtJywgKDIsIDYpLCAxKV0sIFsoJ051bScsICg0LCAxMCksIDIpXSkpLAogKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAogKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSldLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSkpLAorKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpLCAoJ1N0YXJyZWQnLCAoMSwgMTApLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTG9hZCcsKSldLCBbKCdrZXl3b3JkJywgJ2MnLCAoJ051bScsICgxLCA4KSwgMykpLCAoJ2tleXdvcmQnLCBOb25lLCAoJ05hbWUnLCAoMSwgMTUpLCAnZScsICgnTG9hZCcsKSkpXSkpLAogKCdFeHByZXNzaW9uJywgKCdOdW0nLCAoMSwgMCksIDEwKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1N0cicsICgxLCAwKSwgJ3N0cmluZycpKSwKICgnRXhwcmVzc2lvbicsICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpKSwKQEAgLTEwMTYsNiArMTAyMCw2IEBACiAoJ0V4cHJlc3Npb24nLCAoJ1R1cGxlJywgKDEsIDApLCBbKCdOdW0nLCAoMSwgMCksIDEpLCAoJ051bScsICgxLCAyKSwgMiksICgnTnVtJywgKDEsIDQpLCAzKV0sICgnTG9hZCcsKSkpLAogKCdFeHByZXNzaW9uJywgKCdUdXBsZScsICgxLCAxKSwgWygnTnVtJywgKDEsIDEpLCAxKSwgKCdOdW0nLCAoMSwgMyksIDIpLCAoJ051bScsICgxLCA1KSwgMyldLCAoJ0xvYWQnLCkpKSwKICgnRXhwcmVzc2lvbicsICgnVHVwbGUnLCAoMSwgMCksIFtdLCAoJ0xvYWQnLCkpKSwKLSgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnYScsICgnTG9hZCcsKSksICdiJywgKCdMb2FkJywpKSwgJ2MnLCAoJ0xvYWQnLCkpLCAnZCcsICgnTG9hZCcsKSksIFsoJ1N1YnNjcmlwdCcsICgxLCA4KSwgKCdBdHRyaWJ1dGUnLCAoMSwgOCksICgnTmFtZScsICgxLCA4KSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICgnU2xpY2UnLCAoJ051bScsICgxLCAxMiksIDEpLCAoJ051bScsICgxLCAxNCksIDIpLCBOb25lKSwgKCdMb2FkJywpKV0sIFtdLCBOb25lLCBOb25lKSksCisoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnQXR0cmlidXRlJywgKDEsIDApLCAoJ0F0dHJpYnV0ZScsICgxLCAwKSwgKCdBdHRyaWJ1dGUnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2EnLCAoJ0xvYWQnLCkpLCAnYicsICgnTG9hZCcsKSksICdjJywgKCdMb2FkJywpKSwgJ2QnLCAoJ0xvYWQnLCkpLCBbKCdTdWJzY3JpcHQnLCAoMSwgOCksICgnQXR0cmlidXRlJywgKDEsIDgpLCAoJ05hbWUnLCAoMSwgOCksICdhJywgKCdMb2FkJywpKSwgJ2InLCAoJ0xvYWQnLCkpLCAoJ1NsaWNlJywgKCdOdW0nLCAoMSwgMTIpLCAxKSwgKCdOdW0nLCAoMSwgMTQpLCAyKSwgTm9uZSksICgnTG9hZCcsKSldLCBbXSkpLAogXQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQppbmRleCAyZGM5ZDBjLi4zYTMzZmM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0zOCw3ICszOSw3IEBACiAgICAgICAgICAgICBzZWxmLnN0YXJ0X3Jlc2VuZF9ldmVudCA9IE5vbmUKIAogICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigxKQorICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLmV2ZW50LnNldCgpCiAgICAgICAgICAgICBjb25uLCBjbGllbnQgPSBzZWxmLnNvY2suYWNjZXB0KCkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCkBAIC0yOTgsNyArMjk5LDEwIEBACiAKIGNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQogICAgICAgICBmLnB1c2goNykKICAgICAgICAgZi5wdXNoKGInYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAyKQpAQCAtMzEzLDcgKzMxNywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X2dpdmVuX2xpc3Qoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgorICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oW2IneCcsIDE3LCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYid4JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDE3KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3BlcDQ5Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3BlcDQ5Mi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWUxYjhhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfcGVwNDkyLnB5CkBAIC0wLDAgKzEsMjA4IEBACisiIiJUZXN0cyBzdXBwb3J0IGZvciBuZXcgc3ludGF4IGludHJvZHVjZWQgYnkgUEVQIDQ5Mi4iIiIKKworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCisKK2ltcG9ydCBhc3luY2lvCitmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKKworCitjbGFzcyBCYXNlVGVzdCh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5CYXNlRXZlbnRMb29wKCkKKyAgICAgICAgc2VsZi5sb29wLl9wcm9jZXNzX2V2ZW50cyA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYubG9vcC5fc2VsZWN0b3IgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLmxvb3AuX3NlbGVjdG9yLnNlbGVjdC5yZXR1cm5fdmFsdWUgPSAoKQorICAgICAgICBzZWxmLnNldF9ldmVudF9sb29wKHNlbGYubG9vcCkKKworCitjbGFzcyBMb2NrVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2FzeW5jX3dpdGgoc2VsZik6CisgICAgICAgIHByaW1pdGl2ZXMgPSBbCisgICAgICAgICAgICBhc3luY2lvLkxvY2sobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Db25kaXRpb24obG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5TZW1hcGhvcmUobG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgYXN5bmNpby5Cb3VuZGVkU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgXQorCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0KGxvY2spOgorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbG9jayBhcyBfbG9jazoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKF9sb2NrLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisKKyAgICAgICAgZm9yIHByaW1pdGl2ZSBpbiBwcmltaXRpdmVzOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0ZXN0KHByaW1pdGl2ZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByaW1pdGl2ZS5sb2NrZWQoKSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl93aXRoX2F3YWl0KHNlbGYpOgorICAgICAgICBwcmltaXRpdmVzID0gWworICAgICAgICAgICAgYXN5bmNpby5Mb2NrKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uQ29uZGl0aW9uKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uU2VtYXBob3JlKGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgIGFzeW5jaW8uQm91bmRlZFNlbWFwaG9yZShsb29wPXNlbGYubG9vcCksCisgICAgICAgIF0KKworICAgICAgICBhc3luYyBkZWYgdGVzdChsb2NrKToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvY2subG9ja2VkKCkpCisgICAgICAgICAgICB3aXRoIGF3YWl0IGxvY2sgYXMgX2xvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhfbG9jaywgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9jay5sb2NrZWQoKSkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2NrLmxvY2tlZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2NrLmxvY2tlZCgpKQorCisgICAgICAgIGZvciBwcmltaXRpdmUgaW4gcHJpbWl0aXZlczoKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGVzdChwcmltaXRpdmUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcmltaXRpdmUubG9ja2VkKCkpCisKKworY2xhc3MgU3RyZWFtUmVhZGVyVGVzdHMoQmFzZVRlc3QpOgorCisgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CisgICAgICAgIERBVEEgPSBiJ2xpbmUxXG5saW5lMlxubGluZTMnCisKKyAgICAgICAgc3RyZWFtID0gYXN5bmNpby5TdHJlYW1SZWFkZXIobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHN0cmVhbS5mZWVkX2RhdGEoREFUQSkKKyAgICAgICAgc3RyZWFtLmZlZWRfZW9mKCkKKworICAgICAgICBhc3luYyBkZWYgcmVhZGVyKCk6CisgICAgICAgICAgICBkYXRhID0gW10KKyAgICAgICAgICAgIGFzeW5jIGZvciBsaW5lIGluIHN0cmVhbToKKyAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShyZWFkZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBbYidsaW5lMVxuJywgYidsaW5lMlxuJywgYidsaW5lMyddKQorCisKK2NsYXNzIENvcm91dGluZVRlc3RzKEJhc2VUZXN0KToKKworICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICBmID0gZm9vKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uaXNjb3JvdXRpbmUoZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkgIyBzaWxlbmNlIHdhcm5pbmcKKworICAgICAgICAjIFRlc3QgdGhhdCBhc3luY2lvLmlzY29yb3V0aW5lKCkgdXNlcyBjb2xsZWN0aW9ucy5hYmMuQ29yb3V0aW5lCisgICAgICAgIGNsYXNzIEZha2VDb3JvOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKTogeWllbGQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Nvcm91dGluZShGYWtlQ29ybygpKSkKKworICAgIGRlZiB0ZXN0X2lzY29yb3V0aW5lZnVuY3Rpb24oc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uKGZvbykpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9yZXR1cm5pbmdfYXdhaXRhYmxlKHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoJ3NwYW0nLCkKKworICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIHJldHVybiBBd2FpdGFibGUoKQorCisgICAgICAgIGNvcm8gPSBmdW5jKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3JvLnNlbmQoTm9uZSksICdzcGFtJykKKyAgICAgICAgY29yby5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9hc3luY19kZWZfY29yb3V0aW5lcyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgYmFyKCkKKworICAgICAgICAjIHByb2R1Y3Rpb24gbW9kZQorICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAnc3BhbScpCisKKyAgICAgICAgIyBkZWJ1ZyBtb2RlCisgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoVHJ1ZSkKKyAgICAgICAgZGF0YSA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoZm9vKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgJ3NwYW0nKQorCisgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uY29yb3V0aW5lcy5sb2dnZXInKQorICAgIGRlZiB0ZXN0X2FzeW5jX2RlZl93cmFwcGVkKHNlbGYsIG1fbG9nKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBhc3luYyBkZWYgc3RhcnQoKToKKyAgICAgICAgICAgIGZvb19jb3JvID0gZm9vKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCisgICAgICAgICAgICAgICAgcmVwcihmb29fY29ybyksCisgICAgICAgICAgICAgICAgcic8Q29yb1dyYXBwZXIgLipcLmZvb1woXCkgcnVubmluZyBhdCAuKnBlcDQ5Mi4qPicpCisKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygocicuKmZvby4qd2FzIG5ldmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBmb29fY29ybyA9IE5vbmUKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtX2xvZy5lcnJvci5jYWxsZWQpCisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IG1fbG9nLmVycm9yLmNhbGxfYXJnc1swXVswXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInQ29yb1dyYXBwZXIuKmZvby4qd2FzIG5ldmVyJykKKworICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc3RhcnQoKSkKKworICAgICAgICBhc3luYyBkZWYgc3RhcnQoKToKKyAgICAgICAgICAgIGZvb19jb3JvID0gZm9vKCkKKyAgICAgICAgICAgIHRhc2sgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoZm9vX2Nvcm8sIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKHRhc2spLCByJ1Rhc2suKmZvby4qcnVubmluZycpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzdGFydCgpKQorCisKKyAgICBkZWYgdGVzdF90eXBlc19jb3JvdXRpbmUoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gKCkKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICByZXR1cm4gZ2VuKCkKKworICAgICAgICBhc3luYyBkZWYgY29ybygpOgorICAgICAgICAgICAgd3JhcHBlciA9IGZ1bmMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIHR5cGVzLl9HZW5lcmF0b3JXcmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHdyYXBwZXIKKworICAgICAgICBkYXRhID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgJ3NwYW0nKQorCisgICAgZGVmIHRlc3RfdGFza19wcmludF9zdGFjayhzZWxmKToKKyAgICAgICAgVCA9IE5vbmUKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBmID0gVC5nZXRfc3RhY2sobGltaXQ9MSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZbMF0uZl9jb2RlLmNvX25hbWUsICdmb28nKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmID0gTm9uZQorCisgICAgICAgIGFzeW5jIGRlZiBydW5uZXIoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIFQKKyAgICAgICAgICAgIFQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoZm9vKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgYXdhaXQgVAorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVubmVyKCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IGQ0NDcyNmQuLjM4NTc5MTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgZXJybm8KIGltcG9ydCBzdHJ1Y3QKLWltcG9ydCB3YXJuaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KQEAgLTY1LDcgKzY0LDcgQEAKICMgdXNlZCB3aGVuIHRlc3Rpbmcgc2VuZGVyczsganVzdCBjb2xsZWN0cyB3aGF0IGl0IGdldHMgdW50aWwgbmV3bGluZSBpcyBzZW50CiBkZWYgY2FwdHVyZV9zZXJ2ZXIoZXZ0LCBidWYsIHNlcnYpOgogICAgIHRyeToKLSAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQogICAgIGV4Y2VwdCBzb2NrZXQudGltZW91dDoKICAgICAgICAgcGFzcwpAQCAtMjk4LDIzICsyOTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAnd2FybmluZzogdW5oYW5kbGVkIGNvbm5lY3QgZXZlbnQnXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBleHBlY3RlZCkKIAotICAgIGRlZiB0ZXN0X2lzc3VlXzg1OTQoc2VsZik6Ci0gICAgICAgICMgWFhYIC0gdGhpcyB0ZXN0IGlzIHN1cHBvc2VkIHRvIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciBQeXRob24KLSAgICAgICAgIyB2ZXJzaW9uCi0gICAgICAgIGQgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoKSkKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGVycm9yIG1lc3NhZ2Ugbm8gbG9uZ2VyIHJlZmVycyB0byB0aGUgc29ja2V0Ci0gICAgICAgICMgb2JqZWN0IGJ1dCB0aGUgZGlzcGF0Y2hlciBpbnN0YW5jZSBpbnN0ZWFkCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdkaXNwYXRjaGVyIGluc3RhbmNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyLCBkLCAnZm9vJykKLSAgICAgICAgIyBjaGVhcCBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpcyBzdXBwb3NlZAotICAgICAgICAjIHRvIHN0aWxsIHdvcmsgYnV0IGEgRGVwcmVjYXRpb25XYXJuaW5nIGlzIGV4cGVjdGVkCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCi0gICAgICAgICAgICBmYW1pbHkgPSBkLmZhbWlseQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYW1pbHksIHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotCiAgICAgZGVmIHRlc3Rfc3RyZXJyb3Ioc2VsZik6CiAgICAgICAgICMgcmVmZXJzIHRvIGJ1ZyAjODU3MwogICAgICAgICBlcnIgPSBhc3luY29yZS5fc3RyZXJyb3IoZXJybm8uRVBFUk0pCkBAIC0zMzEsOSArMzEzLDggQEAKICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CiAgICAgICAgIHBhc3MKIAotY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHVzZXBvbGwgPSBGYWxzZQogCitjbGFzcyBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTM4MywxMCArMzY0LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImpvaW4oKSB0aW1lZCBvdXQiKQogCiAKLQotY2xhc3MgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbChEaXNwYXRjaGVyV2l0aFNlbmRUZXN0cyk6Ci0gICAgdXNlcG9sbCA9IFRydWUKLQogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihhc3luY29yZSwgJ2ZpbGVfd3JhcHBlcicpLAogICAgICAgICAgICAgICAgICAgICAgJ2FzeW5jb3JlLmZpbGVfd3JhcHBlciByZXF1aXJlZCcpCiBjbGFzcyBGaWxlV3JhcHBlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdGV4aXQucHkgYi9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQppbmRleCA3MGQyZjFjLi4xNzJiZDI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weQpAQCAtMTc3LDkgKzE3Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRleGl0Ll9uY2FsbGJhY2tzKCksIG4pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5IGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKaW5kZXggMGU3NWM2Yi4uNTA5M2U5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKQEAgLTEsNiArMSw1IEBACiAjIEF1Z21lbnRlZCBhc3NpZ25tZW50IHRlc3QuCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTEzNiw2ICsxMzUsMTQgQEAKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCJfX2ltdWxfXyBjYWxsZWQiKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKKyAgICAgICAgICAgIGRlZiBfX21hdG11bF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19tYXRtdWxfXyBjYWxsZWQiKQorICAgICAgICAgICAgZGVmIF9fcm1hdG11bF9fKHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgiX19ybWF0bXVsX18gY2FsbGVkIikKKyAgICAgICAgICAgIGRlZiBfX2ltYXRtdWxfXyhzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9faW1hdG11bF9fIGNhbGxlZCIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKwogICAgICAgICAgICAgZGVmIF9fZmxvb3JkaXZfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIl9fZmxvb3JkaXZfXyBjYWxsZWQiKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCkBAIC0yMjUsNiArMjMyLDEwIEBACiAgICAgICAgIDEgKiB4CiAgICAgICAgIHggKj0gMQogCisgICAgICAgIHggQCAxCisgICAgICAgIDEgQCB4CisgICAgICAgIHggQD0gMQorCiAgICAgICAgIHggLyAxCiAgICAgICAgIDEgLyB4CiAgICAgICAgIHggLz0gMQpAQCAtMjcxLDYgKzI4Miw5IEBACiBfX211bF9fIGNhbGxlZAogX19ybXVsX18gY2FsbGVkCiBfX2ltdWxfXyBjYWxsZWQKK19fbWF0bXVsX18gY2FsbGVkCitfX3JtYXRtdWxfXyBjYWxsZWQKK19faW1hdG11bF9fIGNhbGxlZAogX190cnVlZGl2X18gY2FsbGVkCiBfX3J0cnVlZGl2X18gY2FsbGVkCiBfX2l0cnVlZGl2X18gY2FsbGVkCkBAIC0zMDAsOCArMzE0LDUgQEAKIF9faWxzaGlmdF9fIGNhbGxlZAogJycnLnNwbGl0bGluZXMoKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChBdWdBc3NpZ25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weSBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CmluZGV4IGI5NzM4ZGQuLmEwZjU0OGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmFzZTY0LnB5CkBAIC0zLDEwICszLDggQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBiaW5hc2NpaQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN0cnVjdAogZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIAogY2xhc3MgTGVnYWN5QmFzZTY0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjIyLDE1ICs2MjAsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYmluYXNjaWkuRXJyb3IsIFZhbHVlRXJyb3IpKQogCiAKLQogY2xhc3MgVGVzdE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3VwcG9ydC5URVNURk4pOgogICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCi0gICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgKmFyZ3MsICoqb3B0aW9ucyk6Ci0gICAgICAgIGFyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctbScsICdiYXNlNjQnKSArIGFyZ3MKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MsICoqb3B0aW9ucykKKyAgICBkZWYgZ2V0X291dHB1dChzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soJy1tJywgJ2Jhc2U2NCcsICphcmdzKS5vdXQKIAogICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNvZGUoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLXQnKQpAQCAtNjQzLDEzICs2MzksMTQgQEAKICAgICBkZWYgdGVzdF9lbmNvZGVfZmlsZShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmcDoKICAgICAgICAgICAgIGZwLndyaXRlKGInYVx4ZmZiXG4nKQotCiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLWUnLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCksIGInWWY5aUNnPT0nKQogCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmdldF9vdXRwdXQoJy1lJywgc3RkaW49ZnApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLCBiJ1lmOWlDZz09JykKKyAgICBkZWYgdGVzdF9lbmNvZGVfZnJvbV9zdGRpbihzZWxmKToKKyAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLW0nLCAnYmFzZTY0JywgJy1lJykgYXMgcHJvYzoKKyAgICAgICAgICAgIG91dCwgZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiJ2FceGZmYlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQucnN0cmlwKCksIGInWWY5aUNnPT0nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlcnIpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZnA6CkBAIC02NTcsMTAgKzY1NCw1IEBACiAgICAgICAgIG91dHB1dCA9IHNlbGYuZ2V0X291dHB1dCgnLWQnLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCksIGInYVx4ZmZiJykKIAotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMzg5ZGFhMC4uODM2N2FmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGUgYmluYXNjaWkgQyBtb2R1bGUuIiIiCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBhcnJheQpAQCAtMjc3LDExICsyNzYsNSBAQAogICAgIHR5cGUydGVzdCA9IG1lbW9yeXZpZXcKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5QmluQVNDSUlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVhcnJheUJpbkFTQ0lJVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBNZW1vcnl2aWV3QmluQVNDSUlUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCA5NjNhYTAxLi44MjM3NDBjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTM4OSw5ICszODksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBWKSwgWydCLl9fbGVfXycsICdWLl9fZ2VfXyddKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChSYXRUZXN0Q2FzZSwgT3BlcmF0aW9uT3JkZXJUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CmluZGV4IGFhMTUzNzcuLmE2NTMzOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0xMSw2ICsxMSw3IEBACiAjIG1lbW9yeXZpZXcgdGVzdHMgaXMgbm93IGluIHRoaXMgbW9kdWxlLgogIwogCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKQEAgLTIxNiw3ICsyMTcsNyBAQAogICAgIGZvciB0IGluIGl0ZXJfbW9kZShuaXRlbXMsIHRlc3RvYmopOgogICAgICAgICB5aWVsZCB0CiAgICAgaWYgdGVzdG9iaiAhPSAnbmRhcnJheSc6Ci0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgcmV0dXJuCiAgICAgeWllbGQgc3RydWN0X2l0ZW1zKG5pdGVtcywgdGVzdG9iaikKIAogCkBAIC0xMDA3LDYgKzEwMDgsNyBAQAogICAgICAgICAjIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQKICAgICAgICAgc3RydWN0dXJlID0gKAogICAgICAgICAgICAgKFtdLCBbXSwgMCksCisgICAgICAgICAgICAoWzEsMywxXSwgW10sIDApLAogICAgICAgICAgICAgKFsxMl0sIFtdLCAwKSwKICAgICAgICAgICAgIChbMTJdLCBbLTFdLCAxMSksCiAgICAgICAgICAgICAoWzZdLCBbMl0sIDApLApAQCAtMTA3OCw2ICsxMDgwLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0FOWV9DT05USUdVT1VTKQogICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjI0NDU6IE5ldyBwcmVjaXNlIGNvbnRpZ3VpdHkgZGVmaW5pdGlvbi4KKyAgICAgICAgZm9yIHNoYXBlIGluIFsxLDEyLDFdLCBbNywwLDddOgorICAgICAgICAgICAgZm9yIG9yZGVyIGluIDAsIE5EX0ZPUlRSQU46CisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZmxhZ3M9b3JkZXJ8TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NvbnRpZ3VvdXMoZXgsICdGJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NvbnRpZ3VvdXMoZXgsICdDJykpCisKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfY29udGlndW91cyhuZCwgJ0YnKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2NvbnRpZ3VvdXMobmQsICdDJykpCisKICAgICBkZWYgdGVzdF9uZGFycmF5X2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgIG5kID0gbmRhcnJheShbOV0sIFsxXSkKICAgICAgICAgbmRtID0gbmRhcnJheShbOV0sIFsxXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQpAQCAtMjQ1NCw3ICsyNDY4LDcgQEAKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NpemVvZihzZWxmKToKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogICAgICAgICB2c2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplCi0gICAgICAgIGJhc2Vfc3RydWN0ID0gJ1BuaW4gMlAybjJpNVAgM2NQJworICAgICAgICBiYXNlX3N0cnVjdCA9ICdQbmluIDJQMm4yaTVQIFAnCiAgICAgICAgIHBlcl9kaW0gPSAnM24nCiAKICAgICAgICAgaXRlbXMgPSBsaXN0KHJhbmdlKDgpKQpAQCAtMjU0NSw4ICsyNTU5LDcgQEAKICAgICAgICAgICAgIGV4ID0gbmRhcnJheShzaXRlbXMsIHNoYXBlPVsxXSwgZm9ybWF0PXNmbXQpCiAgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKICAgICAgICAgICAgIGZvciBkZm10LCBfLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgotICAgICAgICAgICAgICAgIGlmIChub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoc2ZtdCkgb3IKLSAgICAgICAgICAgICAgICAgICAgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGRmbXQpKToKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZGZtdCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1zcmMuY2FzdCwgZGZtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMyLy9kc2l6ZV0pCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTI3NTksNiArMjc3MiwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKIAorICAgICAgICBpZiBjdHlwZXM6CisgICAgICAgICAgICAjIGZvcm1hdDogIlR7Pmw6eDo+ZDp5On0iCisgICAgICAgICAgICBjbGFzcyBCRVBvaW50KGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgICAgICAgIF9maWVsZHNfID0gWygieCIsIGN0eXBlcy5jX2xvbmcpLCAoInkiLCBjdHlwZXMuY19kb3VibGUpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwLjEpCisgICAgICAgICAgICBtMSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBtMiA9IG0xLmNhc3QoJ0InKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5vYmosIHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5pdGVtc2l6ZSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIucmVhZG9ubHksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLm5kaW0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnNoYXBlLCAobTIubmJ5dGVzLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN0cmlkZXMsICgxLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN1Ym9mZnNldHMsICgpKQorCisgICAgICAgICAgICB4ID0gY3R5cGVzLmNfZG91YmxlKDEuMikKKyAgICAgICAgICAgIG0xID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgbTIgPSBtMS5jYXN0KCdjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIub2JqLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi5pdGVtc2l6ZSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIucmVhZG9ubHksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLm5kaW0sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnNoYXBlLCAobTIubmJ5dGVzLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN0cmlkZXMsICgxLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLnN1Ym9mZnNldHMsICgpKQorCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld190b2xpc3Qoc2VsZik6CiAKICAgICAgICAgIyBNb3N0IHRvbGlzdCgpIHRlc3RzIGFyZSBpbiBzZWxmLnZlcmlmeSgpIGV0Yy4KQEAgLTI4MTIsNiArMjg1MSwxMyBAQAogICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiOS4wIGluIG0iLCBsb2NhbHMoKSkKIAorICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKHNlbGYsIGRpbSk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcikgYXMgY206CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBvdXQgb2YgYm91bmRzIG9uIGRpbWVuc2lvbiAlZCIgJSAoZGltLCkpCisKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2luZGV4KHNlbGYpOgogCiAgICAgICAgICMgbmRpbSA9IDAKQEAgLTI4MzgsMTIgKzI4ODQsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgLTgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDgpCiAKLSAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwKICAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQogICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMCwgMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyLCAwXSwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzIsIDNdLCAxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy0xLCAtMV0sIDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTMsIC00XSwgMCkKKworICAgICAgICAjIG91dCBvZiBib3VuZHMKKyAgICAgICAgZm9yIGluZGV4IGluICgzLCAtNCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0X291dF9vZl9ib3VuZHNfZXJyb3IoZGltPTEpOgorICAgICAgICAgICAgICAgIG1baW5kZXgsIDBdCisgICAgICAgIGZvciBpbmRleCBpbiAoNCwgLTUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKGRpbT0yKToKKyAgICAgICAgICAgICAgICBtWzAsIGluZGV4XQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoMioqNjQsIDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoMCwgMioqNjQpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgKDAsIDAsIDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sICgwLjAsIDAuMCkpCisKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19nZXRpdGVtX18sICgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQogCiAgICAgZGVmIHRlc3RfbWVtb3J5dmlld19hc3NpZ24oc2VsZik6CkBAIC0yOTMyLDEwICsyOTk3LDI3IEBACiAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQogCi0gICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsCiAgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9XUklUQUJMRSkKICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bMCwxXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhbMF1bMV0sIDQyKQorICAgICAgICBtWy0xLC0xXSA9IDQzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhbMl1bM10sIDQzKQorICAgICAgICAjIGVycm9ycworICAgICAgICBmb3IgaW5kZXggaW4gKDMsIC00KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRfb3V0X29mX2JvdW5kc19lcnJvcihkaW09MSk6CisgICAgICAgICAgICAgICAgbVtpbmRleCwgMF0gPSAwCisgICAgICAgIGZvciBpbmRleCBpbiAoNCwgLTUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydF9vdXRfb2ZfYm91bmRzX2Vycm9yKGRpbT0yKToKKyAgICAgICAgICAgICAgICBtWzAsIGluZGV4XSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgKDIqKjY0LCAwKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgKDAsIDIqKjY0KSwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sICgwLCAwLCAwKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAoMC4wLCAwLjApLCAwKQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCBbMiwgM10pCiAKICAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NsaWNlKHNlbGYpOgpAQCAtMjk0OCw4ICszMDMwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQogCi0gICAgICAgICMgaW52YWxpZCBzbGljZSBrZXkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKKyAgICAgICAgIyAwLWRpbSBzbGljaW5nIChpZGVudGl0eSBmdW5jdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgKCkpCiAKICAgICAgICAgIyBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcwogICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBmbGFncz1ORF9XUklUQUJMRSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCAxNDM2NmM2Li5jZGJiMmNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC0xNiw3ICsxNiw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gb3BlcmF0b3IgaW1wb3J0IG5lZwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCAgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncwotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIHRyeToKICAgICBpbXBvcnQgcHR5LCBzaWduYWwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTMxMiwxMSArMzEyLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGlsZSwgJ3ByaW50KDQyKVxuJywgJzxzdHJpbmc+JywgJ2JhZG1vZGUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCAncHJpbnQoNDIpXG4nLCAnPHN0cmluZz4nLCAnc2luZ2xlJywgMHhmZikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUsICdwYXNzJywgJz8nLCAnZXhlYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9J2V2YWwnLCBzb3VyY2U9JzAnLCBmaWxlbmFtZT0ndG1wJykKICAgICAgICAgY29tcGlsZSgncHJpbnQoIlx4ZTUiKVxuJywgJycsICdleGVjJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCBjaHIoMCksICdmJywgJ2V4ZWMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21waWxlLCBzdHIoJ2EgPSAxJyksICdmJywgJ2JhZCcpCiAKICAgICAgICAgIyB0ZXN0IHRoZSBvcHRpbWl6ZSBhcmd1bWVudApAQCAtMTA5NCw3ICsxMDk0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChwb3coLTEsIDAuNSksIDFqKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHBvdygtMSwgMS8zKSwgMC41ICsgMC44NjYwMjU0MDM3ODQ0Mzg2aikKIAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvdywgLTEsIC0yLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwb3csIC0xLCAtMiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG93LCAxLCAyLCAwKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG93KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggYjAwNTczZi4uNTNhODBmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0zMDEsNiArMzAxLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICdceDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJzEyICAgXHgwMCAgIDM0JykKIAorICAgIGRlZiB0ZXN0X2hleChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGIiIikuaGV4KCksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVhcnJheShbMHgxYSwgMHgyYiwgMHgzMF0pLmhleCgpLCAnMWEyYjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIlx4MWFceDJiXHgzMCIpLmhleCgpLCAnMWEyYjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KGIiXHgxYVx4MmJceDMwIikuaGV4KCksICcxYTJiMzAnKQorCiAgICAgZGVmIHRlc3Rfam9pbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiIiIpLmpvaW4oW10pLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoYiIiKS5qb2luKFtiIiJdKSwgYiIiKQpAQCAtNDYxLDYgKzQ2OSwyOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGksIDMsIDkpLCA3KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgdywgMSwgMykKIAorICAgIGRlZiB0ZXN0X21vZChzZWxmKToKKyAgICAgICAgYiA9IGInaGVsbG8sICViIScKKyAgICAgICAgb3JpZyA9IGIKKyAgICAgICAgYiA9IGIgJSBiJ3dvcmxkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8sIHdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgYidoZWxsbywgJWIhJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBiJyVzIC8gMTAwID0gJWQlJScKKyAgICAgICAgYSA9IGIgJSAoYidzZXZlbnR5LW5pbmUnLCA3OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpCisKKyAgICBkZWYgdGVzdF9pbW9kKHNlbGYpOgorICAgICAgICBiID0gYidoZWxsbywgJWIhJworICAgICAgICBvcmlnID0gYgorICAgICAgICBiICU9IGInd29ybGQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbywgd29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBiJ2hlbGxvLCAlYiEnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIgaXMgb3JpZykKKyAgICAgICAgYiA9IGInJXMgLyAxMDAgPSAlZCUlJworICAgICAgICBiICU9IChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInc2V2ZW50eS1uaW5lIC8gMTAwID0gNzklJykKKwogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJlcGxhY2UoYidpJywgYidhJyksIGInbWFzc2Fzc2FwcGEnKQpAQCAtNzIyLDYgKzc1MiwxMSBAQAogY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwogCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9lcnJvcihzZWxmKToKKyAgICAgICAgbXNnID0gImJ5dGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGIncHl0aG9uJ1snYSddCisKICAgICBkZWYgdGVzdF9idWZmZXJfaXNfcmVhZG9ubHkoc2VsZik6CiAgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCiAgICAgICAgIHdpdGggb3BlbihmZCwgInJiIiwgYnVmZmVyaW5nPTApIGFzIGY6CkBAIC03NzYsNiArODExLDE3IEBACiBjbGFzcyBCeXRlQXJyYXlUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKIAorICAgIGRlZiB0ZXN0X2dldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGJ5dGVhcnJheShiJ3B5dGhvbicpWydhJ10KKworICAgIGRlZiB0ZXN0X3NldGl0ZW1fZXJyb3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkoYidweXRob24nKQorICAgICAgICAgICAgYlsnYSddID0gInB5dGhvbiIKKwogICAgIGRlZiB0ZXN0X25vaGFzaChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoYXNoLCBieXRlYXJyYXkoKSkKIApAQCAtOTkwLDYgKzEwMzYsMjggQEAKICAgICAgICAgYls4Ol0gPSBiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYnl0ZWFycmF5KGxpc3QocmFuZ2UoOCkpICsgbGlzdChyYW5nZSgyNTYpKSkpCiAKKyAgICBkZWYgdGVzdF9tb2Qoc2VsZik6CisgICAgICAgIGIgPSBieXRlYXJyYXkoYidoZWxsbywgJWIhJykKKyAgICAgICAgb3JpZyA9IGIKKyAgICAgICAgYiA9IGIgJSBiJ3dvcmxkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8sIHdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZywgYnl0ZWFycmF5KGInaGVsbG8sICViIScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIgaXMgb3JpZykKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJyVzIC8gMTAwID0gJWQlJScpCisgICAgICAgIGEgPSBiICUgKGInc2V2ZW50eS1uaW5lJywgNzkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYnl0ZWFycmF5KGInc2V2ZW50eS1uaW5lIC8gMTAwID0gNzklJykpCisKKyAgICBkZWYgdGVzdF9pbW9kKHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGInaGVsbG8sICViIScpCisgICAgICAgIG9yaWcgPSBiCisgICAgICAgIGIgJT0gYid3b3JsZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvLCB3b3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGJ5dGVhcnJheShiJ2hlbGxvLCAlYiEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiIGlzIG9yaWcpCisgICAgICAgIGIgPSBieXRlYXJyYXkoYiclcyAvIDEwMCA9ICVkJSUnKQorICAgICAgICBiICU9IChiJ3NldmVudHktbmluZScsIDc5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGJ5dGVhcnJheShiJ3NldmVudHktbmluZSAvIDEwMCA9IDc5JScpKQorCiAgICAgZGVmIHRlc3RfaWNvbmNhdChzZWxmKToKICAgICAgICAgYiA9IGJ5dGVhcnJheShiImFiYyIpCiAgICAgICAgIGIxID0gYgpAQCAtMTE5Nyw2ICsxMjY1LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBkZWxzbGljZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBvcmlnKQogCisgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9vYnNvbGV0ZV93cml0ZV9sb2NrKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGJ5dGVhcnJheSgpKQogCiBjbGFzcyBBc3NvcnRlZEJ5dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIwpAQCAtMTMwNywyMCArMTM3OSwzNSBAQAogICAgICAgICBiID0gYnl0ZWFycmF5KCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiLnJlcGxhY2UoYicnLCBiJycpIGlzIGIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZmxhZ3MuYnl0ZXNfd2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQnl0ZXNXYXJuaW5nIGlzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0OiB1c2UgLWJiIG9wdGlvbiIpCiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKLSAgICAgICAgaWYgc3lzLmZsYWdzLmJ5dGVzX3dhcm5pbmc6Ci0gICAgICAgICAgICBkZWYgYnl0ZXNfd2FybmluZygpOgotICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBCeXRlc1dhcm5pbmcpKQotICAgICAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6Ci0gICAgICAgICAgICAgICAgYicnID09ICcnCi0gICAgICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICBiJycgIT0gJycKLSAgICAgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgotICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJycpID09ICcnCi0gICAgICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKLSAgICAgICAgICAgICAgICBieXRlYXJyYXkoYicnKSAhPSAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiQnl0ZXNXYXJuaW5nIGlzIG5lZWRlZCBmb3IgdGhpcyB0ZXN0OiB1c2UgLWJiIG9wdGlvbiIpCisgICAgICAgIGRlZiBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICByZXR1cm4gdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgQnl0ZXNXYXJuaW5nKSkKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBiJycgPT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyA9PSBiJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBiJycgIT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyAhPSBiJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICBieXRlYXJyYXkoYicnKSA9PSAnJworICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgICcnID09IGJ5dGVhcnJheShiJycpCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYnl0ZWFycmF5KGInJykgIT0gJycKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAnJyAhPSBieXRlYXJyYXkoYicnKQorICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGInXDAnID09IDAKKyAgICAgICAgd2l0aCBieXRlc193YXJuaW5nKCk6CisgICAgICAgICAgICAwID09IGInXDAnCisgICAgICAgIHdpdGggYnl0ZXNfd2FybmluZygpOgorICAgICAgICAgICAgYidcMCcgIT0gMAorICAgICAgICB3aXRoIGJ5dGVzX3dhcm5pbmcoKToKKyAgICAgICAgICAgIDAgIT0gYidcMCcKIAogICAgICMgT3B0aW1pemF0aW9uczoKICAgICAjIF9faXRlcl9fPyAob3B0aW1pemF0aW9uKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCBiZWVmMjc1Li5hMWU0YjhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtMiwxMyArMiwxNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF80RwogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIERFRkFVTFRfQlVGRkVSX1NJWkUKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQoraW1wb3J0IGdsb2IKIGltcG9ydCByYW5kb20KIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5saW5rCitpbXBvcnQgX2NvbXByZXNzaW9uCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC01MSw2ICs1MywxOSBAQAogICAgIEVNUFRZX0RBVEEgPSBiJ0JaaDlceDE3ckU4UFx4OTBceDAwXHgwMFx4MDBceDAwJwogICAgIEJBRF9EQVRBID0gYid0aGlzIGlzIG5vdCBhIHZhbGlkIGJ6aXAyIGZpbGUnCiAKKyAgICAjIFNvbWUgdGVzdHMgbmVlZCBtb3JlIHRoYW4gb25lIGJsb2NrIG9mIHVuY29tcHJlc3NlZCBkYXRhLiBTaW5jZSBvbmUgYmxvY2sKKyAgICAjIGlzIGF0IGxlYXN0IDEwMCBrQiwgd2UgZ2F0aGVyIHNvbWUgZGF0YSBkeW5hbWljYWxseSBhbmQgY29tcHJlc3MgaXQuCisgICAgIyBOb3RlIHRoYXQgdGhpcyBhc3N1bWVzIHRoYXQgY29tcHJlc3Npb24gd29ya3MgY29ycmVjdGx5LCBzbyB3ZSBjYW5ub3QKKyAgICAjIHNpbXBseSB1c2UgdGhlIGJpZ2dlciB0ZXN0IGRhdGEgZm9yIGFsbCB0ZXN0cy4KKyAgICB0ZXN0X3NpemUgPSAwCisgICAgQklHX1RFWFQgPSBieXRlYXJyYXkoMTI4KjEwMjQpCisgICAgZm9yIGZuYW1lIGluIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJyoucHknKSk6CisgICAgICAgIHdpdGggb3BlbihmbmFtZSwgJ3JiJykgYXMgZmg6CisgICAgICAgICAgICB0ZXN0X3NpemUgKz0gZmgucmVhZGludG8obWVtb3J5dmlldyhCSUdfVEVYVClbdGVzdF9zaXplOl0pCisgICAgICAgIGlmIHRlc3Rfc2l6ZSA+IDEyOCoxMDI0OgorICAgICAgICAgICAgYnJlYWsKKyAgICBCSUdfREFUQSA9IGJ6Mi5jb21wcmVzcyhCSUdfVEVYVCwgY29tcHJlc3NsZXZlbD0xKQorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIApAQCAtOTYsNyArMTExLDcgQEAKICAgICBkZWYgdGVzdFJlYWQoc2VsZik6CiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdFJlYWRCYWRGaWxlKHNlbGYpOgpAQCAtMTA3LDIxICsxMjIsMjEgQEAKICAgICBkZWYgdGVzdFJlYWRNdWx0aVN0cmVhbShzZWxmKToKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgZmxvYXQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCiAKICAgICBkZWYgdGVzdFJlYWRNb25rZXlNdWx0aVN0cmVhbShzZWxmKToKICAgICAgICAgIyBUZXN0IEJaMkZpbGUucmVhZCgpIG9uIGEgbXVsdGktc3RyZWFtIGFyY2hpdmUgd2hlcmUgYSBzdHJlYW0KICAgICAgICAgIyBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kIG9mIHRoZSByYXcgcmVhZCBidWZmZXIuCi0gICAgICAgIGJ1ZmZlcl9zaXplID0gYnoyLl9CVUZGRVJfU0laRQotICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKKyAgICAgICAgYnVmZmVyX3NpemUgPSBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUKKyAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gbGVuKHNlbGYuREFUQSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCiAgICAgICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgZmxvYXQoKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFQgKiA1KQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYnoyLl9CVUZGRVJfU0laRSA9IGJ1ZmZlcl9zaXplCisgICAgICAgICAgICBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUgPSBidWZmZXJfc2l6ZQogCiAgICAgZGVmIHRlc3RSZWFkVHJhaWxpbmdKdW5rKHNlbGYpOgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN1ZmZpeD1zZWxmLkJBRF9EQVRBKQpAQCAtMTM2LDcgKzE1MSw3IEBACiAgICAgZGVmIHRlc3RSZWFkMChzZWxmKToKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgZmxvYXQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKDApLCBiIiIpCiAKICAgICBkZWYgdGVzdFJlYWRDaHVuazEwKHNlbGYpOgpAQCAtNTQ1LDEzICs1NjAsMjQgQEAKICAgICAgICAgd2l0aCBCWjJGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKIAorICAgIGRlZiB0ZXN0RGVjb21wcmVzc0xpbWl0ZWQoc2VsZik6CisgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgorICAgICAgICBib21iID0gYnoyLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCisKKyAgICAgICAgZGVjb21wID0gQloyRmlsZShCeXRlc0lPKGJvbWIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCisgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQorCiAKICAgICAjIFRlc3RzIGZvciBhIEJaMkZpbGUgd3JhcHBpbmcgYW5vdGhlciBmaWxlIG9iamVjdDoKIAogICAgIGRlZiB0ZXN0UmVhZEJ5dGVzSU8oc2VsZik6CiAgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKICAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWQsIGZsb2F0KCkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiaW8uY2xvc2VkKQogCkBAIC03MDUsNiArNzMxLDk1IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKEJaMkRlY29tcHJlc3NvcigpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0RGVjb21wcmVzc29yQ2h1bmtzTWF4c2l6ZShzZWxmKToKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgbWF4X2xlbmd0aCA9IDEwMAorICAgICAgICBvdXQgPSBbXQorCisgICAgICAgICMgRmVlZCBzb21lIGlucHV0CisgICAgICAgIGxlbl8gPSBsZW4oc2VsZi5CSUdfREFUQSkgLSA2NAorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuQklHX0RBVEFbOmxlbl9dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYnpkLm5lZWRzX2lucHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIG1vcmUgZGF0YSB3aXRob3V0IHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3MoYicnLCBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2hpbGUgcHJvdmlkaW5nIG1vcmUgaW5wdXQKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkJJR19EQVRBW2xlbl86XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEKKyAgICAgICAgd2hpbGUgbm90IGJ6ZC5lb2Y6CisgICAgICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICBvdXQgPSBiIiIuam9pbihvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBzZWxmLkJJR19URVhUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6ZC51bnVzZWRfZGF0YSwgYiIiKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2lucHV0YnVmXzEoc2VsZik6CisgICAgICAgICMgVGVzdCByZXVzaW5nIGlucHV0IGJ1ZmZlciBhZnRlciBtb3ZpbmcgZXhpc3RpbmcKKyAgICAgICAgIyBjb250ZW50cyB0byBiZWdpbm5pbmcKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbOjEwMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2xlbmd0aD0wKSwgYicnKQorCisgICAgICAgICMgUmV0cmlldmUgc29tZSByZXN1bHRzLCBmcmVlaW5nIGNhcGFjaXR5IGF0IGJlZ2lubmluZworICAgICAgICAjIG9mIGlucHV0IGJ1ZmZlcgorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKGInJywgMikpCisKKyAgICAgICAgIyBBZGQgbW9yZSBkYXRhIHRoYXQgZml0cyBpbnRvIGlucHV0IGJ1ZmZlciBhZnRlcgorICAgICAgICAjIG1vdmluZyBleGlzdGluZyBkYXRhIHRvIGJlZ2lubmluZworICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVsxMDA6MTA1XSwgMTUpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMTA1Ol0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8yKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYnkgYXBwZW5kaW5nIGRhdGEgYXQgdGhlCisgICAgICAgICMgZW5kIHJpZ2h0IGF3YXkKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGVtcHR5IGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzoyMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhiJycpKQorCisgICAgICAgICMgRmlsbCBidWZmZXIgd2l0aCBuZXcgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGJ6ZC5kZWNvbXByZXNzKHNlbGYuREFUQVsyMDA6MjgwXSwgMikpCisKKyAgICAgICAgIyBBcHBlbmQgc29tZSBtb3JlIGRhdGEsIG5vdCBlbm91Z2ggdG8gcmVxdWlyZSByZXNpemUKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMjgwOjMwMF0sIDIpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbMzAwOl0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgZXh0ZW5kaW5nIGl0CisKKyAgICAgICAgYnpkID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBhbG1vc3QgZnVsbCBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChiemQuZGVjb21wcmVzcyhzZWxmLkRBVEFbOjIwMF0sIDUpKQorCisgICAgICAgICMgQWRkIGV2ZW4gbW9yZSBkYXRhIHRvIGl0LCByZXF1aXJpbmcgcmVzaXplCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzIwMDozMDBdLCA1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQoYnpkLmRlY29tcHJlc3Moc2VsZi5EQVRBWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBzZWxmLlRFWFQpCiAKIGNsYXNzIENvbXByZXNzRGVjb21wcmVzc1Rlc3QoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0Q29tcHJlc3Moc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5IGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQppbmRleCA5MTkzODU3Li44MGVkNjMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCB0aW1lCiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGwucHkKaW5kZXggYzAwY2NiYS4uZTJiOGUwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FsbC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKICMgVGhlIHRlc3QgY2FzZXMgaGVyZSBjb3ZlciBzZXZlcmFsIHBhdGhzIHRocm91Z2ggdGhlIGZ1bmN0aW9uIGNhbGxpbmcKICMgY29kZS4gIFRoZXkgZGVwZW5kIG9uIHRoZSBNRVRIX1hYWCBmbGFnIHRoYXQgaXMgdXNlZCB0byBkZWZpbmUgYSBDCkBAIC0xMjMsOSArMTIyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBbXS5jb3VudCwgeD0yLCB5PTIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENGdW5jdGlvbkNhbGxzKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQppbmRleCAzNmM2MjM3Ni4uZWFlM2FkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNiwxMCArNiwxMiBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgTUlTU0lOR19DX0RPQ1NUUklOR1MKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogdHJ5OgogICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMSw2ICsyMyw5IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGVzdGNhcGkgbW9kdWxlIGlzbid0IGF2YWlsYWJsZS4KIF90ZXN0Y2FwaSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKIAorIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKKwogCiBkZWYgdGVzdGZ1bmN0aW9uKHNlbGYpOgogICAgICIiInNvbWUgZG9jIiIiCkBAIC0xMTgsNyArMTIzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkubm9fZG9jc3RyaW5nLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLm5vX2RvY3N0cmluZy5fX3RleHRfc2lnbmF0dXJlX18sIE5vbmUpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fZG9jX18sICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfZW1wdHkuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX2VtcHR5Ll9fdGV4dF9zaWduYXR1cmVfXywgTm9uZSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfbm9fc2lnbmF0dXJlLl9fZG9jX18sCkBAIC0xNDUsMTEgKzE1MCw5MiBAQAogICAgICAgICAgICAgIlRoaXMgZG9jc3RyaW5nIGhhcyBhIHZhbGlkIHNpZ25hdHVyZS4iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmUuX190ZXh0X3NpZ25hdHVyZV9fLCAiKCRtb2R1bGUsIC8sIHNpZykiKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLl9fZG9jX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jLl9fdGV4dF9zaWduYXR1cmVfXywKKyAgICAgICAgICAgICIoJG1vZHVsZSwgLywgc2lnKSIpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcy5fX2RvY19fLAogICAgICAgICAgICAgIlxuVGhpcyBkb2NzdHJpbmcgaGFzIGEgdmFsaWQgc2lnbmF0dXJlIGFuZCBzb21lIGV4dHJhIG5ld2xpbmVzLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9hbmRfZXh0cmFfbmV3bGluZXMuX190ZXh0X3NpZ25hdHVyZV9fLAogICAgICAgICAgICAgIigkbW9kdWxlLCAvLCBwYXJhbWV0ZXIpIikKIAorICAgIGRlZiB0ZXN0X2NfdHlwZV93aXRoX21hdHJpeF9tdWx0aXBsaWNhdGlvbihzZWxmKToKKyAgICAgICAgTSA9IF90ZXN0Y2FwaS5tYXRtdWxUeXBlCisgICAgICAgIG0xID0gTSgpCisgICAgICAgIG0yID0gTSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEgQCBtMiwgKCJtYXRtdWwiLCBtMSwgbTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xIEAgNDIsICgibWF0bXVsIiwgbTEsIDQyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0MiBAIG0xLCAoIm1hdG11bCIsIDQyLCBtMSkpCisgICAgICAgIG8gPSBtMQorICAgICAgICBvIEA9IG0yCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobywgKCJpbWF0bXVsIiwgbTEsIG0yKSkKKyAgICAgICAgbyA9IG0xCisgICAgICAgIG8gQD0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLCAoImltYXRtdWwiLCBtMSwgNDIpKQorICAgICAgICBvID0gNDIKKyAgICAgICAgbyBAPSBtMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG8sICgibWF0bXVsIiwgNDIsIG0xKSkKKworICAgIGRlZiB0ZXN0X3JldHVybl9udWxsX3dpdGhvdXRfZXJyb3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzNTcxOiBBIGZ1bmN0aW9uIG11c3Qgbm90IHJldHVybiBOVUxMIHdpdGhvdXQgc2V0dGluZyBhbgorICAgICAgICAjIGVycm9yCisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX251bGxfd2l0aG91dF9lcnJvcigpCisgICAgICAgICAgICAiIiIpCisgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLnJlcGxhY2UoYidccicsIGInJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0ZhdGFsIFB5dGhvbiBlcnJvcjogYSBmdW5jdGlvbiByZXR1cm5lZCBOVUxMICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1N5c3RlbUVycm9yOiA8YnVpbHQtaW4gZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnIncmV0dXJuX251bGxfd2l0aG91dF9lcnJvcj4gcmV0dXJuZWQgTlVMTCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicid3aXRob3V0IHNldHRpbmcgYW4gZXJyb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0N1cnJlbnQgdGhyZWFkLio6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyAgRmlsZSAuKiIsIGxpbmUgNiBpbiA8bW9kdWxlPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX251bGxfd2l0aG91dF9lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuX251bGxfd2l0aG91dF9lcnJvci4qICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yJykKKworICAgIGRlZiB0ZXN0X3JldHVybl9yZXN1bHRfd2l0aF9lcnJvcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjM1NzE6IEEgZnVuY3Rpb24gbXVzdCBub3QgcmV0dXJuIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0CisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKCkKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIucmVwbGFjZShiJ1xyJywgYicnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRmF0YWwgUHl0aG9uIGVycm9yOiBhIGZ1bmN0aW9uIHJldHVybmVkIGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidyZXN1bHQgd2l0aCBhbiBlcnJvciBzZXRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVmFsdWVFcnJvclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidTeXN0ZW1FcnJvcjogPGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInZnVuY3Rpb24gcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yPiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3JldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidDdXJyZW50IHRocmVhZC4qOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicicgIEZpbGUgLiosIGxpbmUgNiBpbiA8bW9kdWxlPicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3IuKiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCcpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFRlc3RQZW5kaW5nQ2FsbHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjY0LDcgKzM1MCw3IEBACiAgICAgICAgICAgICBleGVuYW1lICs9IGV4dAogICAgICAgICAgICAgZXhlcGF0aCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICJNb2R1bGVzIikKKyAgICAgICAgICAgIGV4ZXBhdGggPSBvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICJQcm9ncmFtcyIpCiAgICAgICAgIHNlbGYudGVzdF9leGUgPSBleGUgPSBvcy5wYXRoLmpvaW4oZXhlcGF0aCwgZXhlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGV4ZSk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlciBkb2Vzbid0IGV4aXN0IiAlIGV4ZSkKQEAgLTI4MywxMiArMzY5LDEzIEBACiAgICAgICAgIGNtZC5leHRlbmQoYXJncykKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKICAgICAgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJldHVybmNvZGUgJWQsIHN0ZGVyciBpcyAlciIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChwLnJldHVybmNvZGUsIGVycikpCi0gICAgICAgIHJldHVybiBvdXQuZGVjb2RlKCJsYXRpbjEiKSwgZXJyLmRlY29kZSgibGF0aW4xIikKKyAgICAgICAgcmV0dXJuIG91dCwgZXJyCiAKICAgICBkZWYgdGVzdF9zdWJpbnRlcnBzKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMganVzdCBhICJkb24ndCBjcmFzaCIgdGVzdApAQCAtMzE1LDM0ICs0MDIsMzggQEAKICAgICAgICAgICAgIHByaW50KCkKICAgICAgICAgICAgIHByaW50KG91dCkKICAgICAgICAgICAgIHByaW50KGVycikKKyAgICAgICAgZXhwZWN0ZWRfZXJyb3JzID0gc3lzLl9fc3Rkb3V0X18uZXJyb3JzCiAgICAgICAgIGV4cGVjdGVkX3N0ZGluX2VuY29kaW5nID0gc3lzLl9fc3RkaW5fXy5lbmNvZGluZwogICAgICAgICBleHBlY3RlZF9waXBlX2VuY29kaW5nID0gc2VsZi5fZ2V0X2RlZmF1bHRfcGlwZV9lbmNvZGluZygpCi0gICAgICAgIGV4cGVjdGVkX291dHB1dCA9IG9zLmxpbmVzZXAuam9pbihbCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9ICdcbicuam9pbihbCiAgICAgICAgICItLS0gVXNlIGRlZmF1bHRzIC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogZGVmYXVsdCIsCiAgICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IGRlZmF1bHQiLAotICAgICAgICAic3RkaW46IHswfTpzdHJpY3QiLAotICAgICAgICAic3Rkb3V0OiB7MX06c3RyaWN0IiwKLSAgICAgICAgInN0ZGVycjogezF9OmJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAic3RkaW46IHtpbl9lbmNvZGluZ306e2Vycm9yc30iLAorICAgICAgICAic3Rkb3V0OiB7b3V0X2VuY29kaW5nfTp7ZXJyb3JzfSIsCisgICAgICAgICJzdGRlcnI6IHtvdXRfZW5jb2Rpbmd9OmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlcnJvcnMgb25seSAtLS0iLAogICAgICAgICAiRXhwZWN0ZWQgZW5jb2Rpbmc6IGRlZmF1bHQiLAotICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3RkaW46IHswfTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3Rkb3V0OiB7MX06c3Vycm9nYXRlZXNjYXBlIiwKLSAgICAgICAgInN0ZGVycjogezF9OmJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAiRXhwZWN0ZWQgZXJyb3JzOiBpZ25vcmUiLAorICAgICAgICAic3RkaW46IHtpbl9lbmNvZGluZ306aWdub3JlIiwKKyAgICAgICAgInN0ZG91dDoge291dF9lbmNvZGluZ306aWdub3JlIiwKKyAgICAgICAgInN0ZGVycjoge291dF9lbmNvZGluZ306YmFja3NsYXNocmVwbGFjZSIsCiAgICAgICAgICItLS0gU2V0IGVuY29kaW5nIG9ubHkgLS0tIiwKICAgICAgICAgIkV4cGVjdGVkIGVuY29kaW5nOiBsYXRpbi0xIiwKICAgICAgICAgIkV4cGVjdGVkIGVycm9yczogZGVmYXVsdCIsCi0gICAgICAgICJzdGRpbjogbGF0aW4tMTpzdHJpY3QiLAotICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOnN0cmljdCIsCisgICAgICAgICJzdGRpbjogbGF0aW4tMTp7ZXJyb3JzfSIsCisgICAgICAgICJzdGRvdXQ6IGxhdGluLTE6e2Vycm9yc30iLAogICAgICAgICAic3RkZXJyOiBsYXRpbi0xOmJhY2tzbGFzaHJlcGxhY2UiLAogICAgICAgICAiLS0tIFNldCBlbmNvZGluZyBhbmQgZXJyb3JzIC0tLSIsCiAgICAgICAgICJFeHBlY3RlZCBlbmNvZGluZzogbGF0aW4tMSIsCi0gICAgICAgICJFeHBlY3RlZCBlcnJvcnM6IHN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRpbjogbGF0aW4tMTpzdXJyb2dhdGVlc2NhcGUiLAotICAgICAgICAic3Rkb3V0OiBsYXRpbi0xOnN1cnJvZ2F0ZWVzY2FwZSIsCi0gICAgICAgICJzdGRlcnI6IGxhdGluLTE6YmFja3NsYXNocmVwbGFjZSJdKS5mb3JtYXQoZXhwZWN0ZWRfc3RkaW5fZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGlwZV9lbmNvZGluZykKKyAgICAgICAgIkV4cGVjdGVkIGVycm9yczogcmVwbGFjZSIsCisgICAgICAgICJzdGRpbjogbGF0aW4tMTpyZXBsYWNlIiwKKyAgICAgICAgInN0ZG91dDogbGF0aW4tMTpyZXBsYWNlIiwKKyAgICAgICAgInN0ZGVycjogbGF0aW4tMTpiYWNrc2xhc2hyZXBsYWNlIl0pCisgICAgICAgIGV4cGVjdGVkX291dHB1dCA9IGV4cGVjdGVkX291dHB1dC5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2VuY29kaW5nPWV4cGVjdGVkX3N0ZGluX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfZW5jb2Rpbmc9ZXhwZWN0ZWRfcGlwZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPWV4cGVjdGVkX2Vycm9ycykKICAgICAgICAgIyBUaGlzIGlzIHVzZWZ1bCBpZiB3ZSBldmVyIHRyaXAgb3ZlciBvZGQgcGxhdGZvcm0gYmVoYXZpb3VyCiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWRfb3V0cHV0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCA2YjI4MTA2Li5hYjlmNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKIGltcG9ydCBjZ2kKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtMzQ0LDYgKzM0NCwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZzLmxpc3RbMF0ubmFtZSwgJ3N1Ym1pdC1uYW1lJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcy5saXN0WzBdLnZhbHVlLCAnTGFycnknKQogCisgICAgZGVmIHRlc3RfZmllbGRzdG9yYWdlX2FzX2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgZnAgPSBCeXRlc0lPKGIneCcgKiAxMCkKKyAgICAgICAgZW52ID0geydSRVFVRVNUX01FVEhPRCc6ICdQVVQnfQorICAgICAgICB3aXRoIGNnaS5GaWVsZFN0b3JhZ2UoZnA9ZnAsIGVudmlyb249ZW52KSBhcyBmczoKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmcy5maWxlLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmcy5maWxlLmNsb3NlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZzLmZpbGUuY2xvc2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnQsICd4JyAqIDEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0kvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUnKToKKyAgICAgICAgICAgIGZzLmZpbGUucmVhZCgpCiAKICAgICBfcXNfcmVzdWx0ID0gewogICAgICAgICAna2V5MSc6ICd2YWx1ZTEnLApAQCAtNTE5LDkgKzUyOSw1IEBACiAtLUFhQjAzeC0tCiAiIiIKIAotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KENnaVRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2l0Yi5weQppbmRleCAyZTA3MmE5Li5hODdhNDIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHRlbXBfZGlyCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IGNnaXRiCkBAIC02Myw4ICs2Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJzwvcD4nLCBvdXQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0Q2dpdGIpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKaW5kZXggNjIyNjU4Ny4uNDA2NGFlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKQEAgLTQ5LDggKzQ5LDUgQEAKICAgICBkZWYgdGVzdF9tYXB0b3VuZGVmaW5lZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCBzdHIsIGInYWJjXDAwMScsIGNvZGVjbmFtZSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ2hhcm1hcENvZGVjVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weSBiL0xpYi90ZXN0L3Rlc3RfY2xhc3MucHkKaW5kZXggZTM4ODNkNi4uNGQ1NTRhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NsYXNzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIHRlc3RtZXRocyA9IFsKIApAQCAtMTMsNiArMTIsOCBAQAogICAgICJyc3ViIiwKICAgICAibXVsIiwKICAgICAicm11bCIsCisgICAgIm1hdG11bCIsCisgICAgInJtYXRtdWwiLAogICAgICJ0cnVlZGl2IiwKICAgICAicnRydWVkaXYiLAogICAgICJmbG9vcmRpdiIsCkBAIC0xNzcsNiArMTc4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q2FsbFN0YWNrKFsoIl9fcm11bF9fIiwgKHRlc3RtZSwgMSkpXSkKIAogICAgICAgICBjYWxsTHN0WzpdID0gW10KKyAgICAgICAgdGVzdG1lIEAgMQorICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX21hdG11bF9fIiwgKHRlc3RtZSwgMSkpXSkKKworICAgICAgICBjYWxsTHN0WzpdID0gW10KKyAgICAgICAgMSBAIHRlc3RtZQorICAgICAgICBzZWxmLmFzc2VydENhbGxTdGFjayhbKCJfX3JtYXRtdWxfXyIsICh0ZXN0bWUsIDEpKV0pCisKKyAgICAgICAgY2FsbExzdFs6XSA9IFtdCiAgICAgICAgIHRlc3RtZSAvIDEKICAgICAgICAgc2VsZi5hc3NlcnRDYWxsU3RhY2soWygiX190cnVlZGl2X18iLCAodGVzdG1lLCAxKSldKQogCkBAIC00OTEsMTAgKzUwMCwxMCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGEoKSAjIFRoaXMgc2hvdWxkIG5vdCBzZWdmYXVsdAotICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBSdW50aW1lRXJyb3IiKQorICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgUmVjdXJzaW9uRXJyb3IiKQogCiAgICAgZGVmIHRlc3RGb3JFeGNlcHRpb25zUmFpc2VkSW5JbnN0YW5jZUdldGF0dHIyKHNlbGYpOgogICAgICAgICAjIFRlc3RzIGZvciBleGNlcHRpb25zIHJhaXNlZCBpbiBpbnN0YW5jZV9nZXRhdHRyMigpLgpAQCAtNTU5LDggKzU2OCw1IEBACiAgICAgICAgIGEgPSBBKGhhc2goQS5mKV4oLTEpKQogICAgICAgICBoYXNoKGEuZikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENsYXNzVGVzdHMpCi0KLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKaW5kZXggNjhiZjE2ZS4uMWY4ODRlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CkBAIC0xLDUgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfSUVFRV83NTQsIGNweXRob25fb25seQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzX0lFRUVfNzU0LCBjcHl0aG9uX29ubHkKIGZyb20gdGVzdC50ZXN0X21hdGggaW1wb3J0IHBhcnNlX3Rlc3RmaWxlLCB0ZXN0X2ZpbGUKK2ltcG9ydCB0ZXN0LnRlc3RfbWF0aCBhcyB0ZXN0X21hdGgKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNtYXRoLCBtYXRoCiBmcm9tIGNtYXRoIGltcG9ydCBwaGFzZSwgcG9sYXIsIHJlY3QsIHBpCkBAIC01NjAsOCArNTYxLDQ2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydENvbXBsZXhJZGVudGljYWwoY21hdGguYXRhbmgoeiksIHopCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChDTWF0aFRlc3RzKQorY2xhc3MgSXNDbG9zZVRlc3RzKHRlc3RfbWF0aC5Jc0Nsb3NlVGVzdHMpOgorICAgIGlzY2xvc2UgPSBjbWF0aC5pc2Nsb3NlCisKKyAgICBkZWYgdGVzdF9yZWplY3RfY29tcGxleF90b2xlcmFuY2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmlzY2xvc2UoMWosIDFqLCByZWxfdG9sPTFqKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuaXNjbG9zZSgxaiwgMWosIGFic190b2w9MWopCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5pc2Nsb3NlKDFqLCAxaiwgcmVsX3RvbD0xaiwgYWJzX3RvbD0xaikKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfdmFsdWVzKHNlbGYpOgorICAgICAgICAjIHRlc3QgY29tcGxleCB2YWx1ZXMgdGhhdCBhcmUgY2xvc2UgdG8gd2l0aGluIDEyIGRlY2ltYWwgcGxhY2VzCisgICAgICAgIGNvbXBsZXhfZXhhbXBsZXMgPSBbKDEuMCsxLjBqLCAxLjAwMDAwMDAwMDAwMSsxLjBqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wKzEuMGosIDEuMCsxLjAwMDAwMDAwMDAwMWopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMS4wKzEuMGosIC0xLjAwMDAwMDAwMDAwMSsxLjBqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMS4wLTEuMGosIDEuMC0wLjk5OTk5OTk5OTk5OWopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGNvbXBsZXhfZXhhbXBsZXMsIHJlbF90b2w9MWUtMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoY29tcGxleF9leGFtcGxlcywgcmVsX3RvbD0xZS0xMykKKworICAgIGRlZiB0ZXN0X2NvbXBsZXhfbmVhcl96ZXJvKHNlbGYpOgorICAgICAgICAjIHRlc3QgdmFsdWVzIG5lYXIgemVybyB0aGF0IGFyZSBuZWFyIHRvIHdpdGhpbiB0aHJlZSBkZWNpbWFsIHBsYWNlcworICAgICAgICBuZWFyX3plcm9fZXhhbXBsZXMgPSBbKDAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAuMDAxKzAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTAuMDAxKzAuMDAxaiwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wMDEtMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMC4wMDEtMC4wMDFqLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKworICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKG5lYXJfemVyb19leGFtcGxlcywgYWJzX3RvbD0xLjVlLTAzKQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKG5lYXJfemVyb19leGFtcGxlcywgYWJzX3RvbD0wLjVlLTAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZSgwLjAwMS0wLjAwMWosIDAuMDAxKzAuMDAxaiwgYWJzX3RvbD0yZS0wMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdENsb3NlKDAuMDAxLTAuMDAxaiwgMC4wMDErMC4wMDFqLCBhYnNfdG9sPTFlLTAzKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CmluZGV4IGNiOWJiZGQuLjBmZWI2M2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQpAQCAtOCw4ICs4LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgIGFzc2VydF9weXRob25fZmFpbHVyZSkKIAogCkBAIC01OSw3ICs1OSw3IEBACiAKICAgICBkZWYgdGVzdF94b3B0aW9ucyhzZWxmKToKICAgICAgICAgZGVmIGdldF94b3B0aW9ucygqYXJncyk6Ci0gICAgICAgICAgICAjIHVzZSBzdWJwcm9jZXNzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIHRlc3Quc2NyaXB0X2hlbHBlciBhZGRzCisgICAgICAgICAgICAjIHVzZSBzdWJwcm9jZXNzIG1vZHVsZSBkaXJlY3RseSBiZWNhdXNlIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGFkZHMKICAgICAgICAgICAgICMgIi1YIGZhdWx0aGFuZGxlciIgdG8gdGhlIGNvbW1hbmQgbGluZQogICAgICAgICAgICAgYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1FJykgKyBhcmdzCiAgICAgICAgICAgICBhcmdzICs9ICgnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLl94b3B0aW9ucyknKQpAQCAtMzQ0LDcgKzM0NCw4IEBACiAgICAgICAgICMgSXNzdWUgIzUzMTk6IGlmIHN0ZG91dC5mbHVzaCgpIGZhaWxzIGF0IHNodXRkb3duLCBhbiBlcnJvciBzaG91bGQKICAgICAgICAgIyBiZSBwcmludGVkIG91dC4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgb3MsIHN5cworICAgICAgICAgICAgaW1wb3J0IG9zLCBzeXMsIHRlc3Quc3VwcG9ydAorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKS5fX2VudGVyX18oKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgneCcpCiAgICAgICAgICAgICBvcy5jbG9zZShzeXMuc3Rkb3V0LmZpbGVubygpKSIiIgogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCkBAIC00NDQsNyArNDQ1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuc3BsaXRsaW5lcygpLmNvdW50KGInVW5rbm93biBvcHRpb246IC1hJyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBvdXQpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCisgICAgQHVuaXR0ZXN0LnNraXBJZihzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHJ1biAtSSB0ZXN0cyB3aGVuIFBZVEhPTiBlbnYgdmFycyBhcmUgcmVxdWlyZWQuJykKICAgICBkZWYgdGVzdF9pc29sYXRlZG1vZGUoc2VsZik6CiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1JJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKaW5kZXggNzM1MDE2NC4uZmRhM2U2MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKQEAgLTEzLDEwICsxMyw5IEBACiAKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCB0ZW1wX2RpciwKLSAgICBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogdmVyYm9zZSA9IHN1cHBvcnQudmVyYm9zZQogCkBAIC0yMjMsMTQgKzIyMiwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrX3JlcGxfc3RkZXJyX2ZsdXNoKFRydWUpCiAKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3Rfc2NyaXB0X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcpCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKQEAgLTI0MCwxNCArMjM5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgb3MucmVtb3ZlKHNjcmlwdF9uYW1lKQpAQCAtMjU3LDE5ICsyNTYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0b3J5X2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBmaW5kICdfX21haW5fXycgbW9kdWxlIGluICVyIiAlIHNjcmlwdF9kaXIKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ltcG9ydF9lcnJvcihzY3JpcHRfZGlyLCBtc2cpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9jb21waWxlZChzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycpCiAgICAgICAgICAgICBjb21waWxlZF9uYW1lID0gcHlfY29tcGlsZS5jb21waWxlKHNjcmlwdF9uYW1lLCBkb3JhaXNlPVRydWUpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgY29tcGlsZWRfbmFtZSkKQEAgLTI3NywxNCArMjc2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfemlwZmlsZV9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdub3RfbWFpbicpCiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBtYWtlX3ppcF9zY3JpcHQoc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBtc2cgPSAiY2FuJ3QgZmluZCAnX19tYWluX18nIG1vZHVsZSBpbiAlciIgJSB6aXBfbmFtZQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHppcF9uYW1lLCBtc2cpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnc2NyaXB0JykKQEAgLTI5NCwxNCArMjkzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcF9uYW1lLCAndGVzdF9wa2cnLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fc3VicGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JywgZGVwdGg9MikKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnRlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCkBAIC0zMDksNyArMzA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycpCkBAIC0zMTksNyArMzE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycpCkBAIC0zMzIsNyArMzMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9lcnJvcihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgbXNnID0gKCIndGVzdF9wa2cnIGlzIGEgcGFja2FnZSBhbmQgY2Fubm90ICIKQEAgLTM0MSw3ICszNDAsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKGxhdW5jaF9uYW1lLCBtc2cpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX3JlY3Vyc2lvbihzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgbWFpbl9kaXIgPSBvcy5wYXRoLmpvaW4ocGtnX2RpciwgJ19fbWFpbl9fJykKQEAgLTM1NSw3ICszNTQsNyBAQAogICAgIGRlZiB0ZXN0X2lzc3VlODIwMihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgcGFja2FnZSBfX2luaXRfXyBtb2R1bGVzIHNlZSAiLW0iIGluIHN5cy5hcmd2MCB3aGlsZQogICAgICAgICAjIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZSB0byBleGVjdXRlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpciwgImltcG9ydCBzeXM7IHByaW50KCdpbml0X2FyZ3YwPT0lcicgJSBzeXMuYXJndlswXSkiKQpAQCAtMzcyLDcgKzM3MSw3IEBACiAgICAgZGVmIHRlc3RfaXNzdWU4MjAyX2Rhc2hfY19maWxlX2lnbm9yZWQoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgIi1jIiBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQogICAgICAgICAjIGRvZXMgbm90IGFsdGVyIHRoZSB2YWx1ZSBvZiBzeXMucGF0aFswXQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCItYyIsICJ3IikgYXMgZjoKICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiZGF0YSIpCkBAIC0zODcsNyArMzg2LDcgQEAKICAgICBkZWYgdGVzdF9pc3N1ZTgyMDJfZGFzaF9tX2ZpbGVfaWdub3JlZChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSAiLW0iIGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgZG9lcyBub3QgYWx0ZXIgdGhlIHZhbHVlIG9mIHN5cy5wYXRoWzBdCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnb3RoZXInKQogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1zY3JpcHRfZGlyKToKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oIi1tIiwgInciKSBhcyBmOgpAQCAtNDAyLDcgKzQwMSw3IEBACiAgICAgICAgICMgSWYgYSBtb2R1bGUgaXMgaW52b2tlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgZmxhZwogICAgICAgICAjIGFuZCByZXN1bHRzIGluIGFuIGVycm9yIHRoYXQgdGhlIHJldHVybiBjb2RlIHRvIHRoZQogICAgICAgICAjIHNoZWxsIGlzICcxJwotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHBhdGg9c2NyaXB0X2Rpcik6CiAgICAgICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCkBAIC00MjIsNyArNDIxLDcgQEAKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IgZnJvbSBOb25lCiAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQogICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykuc3BsaXQoJ1xuJykKQEAgLTQ2Niw3ICs0NjUsNyBAQAogICAgICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoZXJyb3IpCiAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0Jywgc2NyaXB0KQogICAgICAgICAgICAgZXhpdGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKHNjcmlwdF9uYW1lKQogICAgICAgICAgICAgdGV4dCA9IHN0ZGVyci5kZWNvZGUoJ2FzY2lpJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CmluZGV4IDdhODBhODAuLjMzOTRiMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtMSw2ICsxLDcgQEAKICJUZXN0IEludGVyYWN0aXZlQ29uc29sZSBhbmQgSW50ZXJhY3RpdmVJbnRlcnByZXRlciBmcm9tIGNvZGUgbW9kdWxlIgogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIGZyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTc4LDkgKzc5LDQwIEBACiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDEpCiAKKyAgICBkZWYgdGVzdF9jYXVzZV90YihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIGZyb20gQXR0cmlidXRlRXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIG91dHB1dCA9ICcnLmpvaW4oJycuam9pbihjYWxsWzFdKSBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpCisgICAgICAgIGV4cGVjdGVkID0gZGVkZW50KCIiIgorICAgICAgICBBdHRyaWJ1dGVFcnJvcgogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEludGVyYWN0aXZlQ29uc29sZSkKKyAgICAgICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKworICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgRmlsZSAiPGNvbnNvbGU+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICBWYWx1ZUVycm9yCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfY29udGV4dF90YihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInRyeTogaGFtXG5leGNlcHQ6IGVnZ3NcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgb3V0cHV0ID0gJycuam9pbignJy5qb2luKGNhbGxbMV0pIGZvciBjYWxsIGluIHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscykKKyAgICAgICAgZXhwZWN0ZWQgPSBkZWRlbnQoIiIiCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICBGaWxlICI8Y29uc29sZT4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgIE5hbWVFcnJvcjogbmFtZSAnaGFtJyBpcyBub3QgZGVmaW5lZAorCisgICAgICAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKKworICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgRmlsZSAiPGNvbnNvbGU+IiwgbGluZSAyLCBpbiA8bW9kdWxlPgorICAgICAgICBOYW1lRXJyb3I6IG5hbWUgJ2VnZ3MnIGlzIG5vdCBkZWZpbmVkCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0cHV0KQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCAxMzI3ZjExLi5lZTFlMjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTE1MCw2ICsxNTAsMjIgQEAKICAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKKyAgICBkZWYgdGVzdF9uYW1lZXNjYXBlKHNlbGYpOgorICAgICAgICAjIERvZXMgdGhlIHNhbWUgYXMgYmFja3NsYXNoZXNjYXBlLCBidXQgcHJlZmVycyBgYFxOey4uLn1gYCBlc2NhcGUKKyAgICAgICAgIyBzZXF1ZW5jZXMuCisgICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMFxVMDAxMGZmZmYiCisgICAgICAgIHNvdXQgPSAoYidhXFxOe05PVCBTSUdOfVxcTntFVEhJT1BJQyBTWUxMQUJMRSBTRUV9XFxOe0VVUk8gU0lHTn0nCisgICAgICAgICAgICAgICAgYidcXE57Q0pLIFVOSUZJRUQgSURFT0dSQVBILTgwMDB9XFxVMDAxMGZmZmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpbi5lbmNvZGUoImFzY2lpIiwgIm5hbWVyZXBsYWNlIiksIHNvdXQpCisKKyAgICAgICAgc291dCA9IChiJ2FceGFjXFxOe0VUSElPUElDIFNZTExBQkxFIFNFRX1cXE57RVVSTyBTSUdOfScKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJuYW1lcmVwbGFjZSIpLCBzb3V0KQorCisgICAgICAgIHNvdXQgPSAoYidhXHhhY1xcTntFVEhJT1BJQyBTWUxMQUJMRSBTRUV9XHhhNCcKKyAgICAgICAgICAgICAgICBiJ1xcTntDSksgVU5JRklFRCBJREVPR1JBUEgtODAwMH1cXFUwMDEwZmZmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiaXNvLTg4NTktMTUiLCAibmFtZXJlcGxhY2UiKSwgc291dCkKKwogICAgIGRlZiB0ZXN0X2RlY29kaW5nX2NhbGxiYWNrcyhzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIGEgdGVzdCBmb3IgYSBkZWNvZGluZyBjYWxsYmFjayBoYW5kbGVyCiAgICAgICAgICMgdGhhdCBhbGxvd3MgdGhlIGRlY29kaW5nIG9mIHRoZSBpbnZhbGlkIHNlcXVlbmNlCkBAIC0yMjAsNiArMjM2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCiAgICAgICAgICAgICAgICAgKQogCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFxceDAwIgorICAgICAgICAgICAgICAgICkKKwogICAgICAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKIAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0yODcsNyArMzA4LDcgQEAKICAgICBkZWYgdGVzdF9sb25nc3RyaW5ncyhzZWxmKToKICAgICAgICAgIyB0ZXN0IGxvbmcgc3RyaW5ncyB0byBjaGVjayBmb3IgbWVtb3J5IG92ZXJmbG93IHByb2JsZW1zCiAgICAgICAgIGVycm9ycyA9IFsgInN0cmljdCIsICJpZ25vcmUiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsCi0gICAgICAgICAgICAgICAgICAgImJhY2tzbGFzaHJlcGxhY2UiXQorICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIiwgIm5hbWVyZXBsYWNlIl0KICAgICAgICAgIyByZWdpc3RlciB0aGUgaGFuZGxlcnMgdW5kZXIgZGlmZmVyZW50IG5hbWVzLAogICAgICAgICAjIHRvIHByZXZlbnQgdGhlIGNvZGVjIGZyb20gcmVjb2duaXppbmcgdGhlIG5hbWUKICAgICAgICAgZm9yIGVyciBpbiBlcnJvcnM6CkBAIC01NTAsMTcgKzU3MSw2IEBACiAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgVW5pY29kZUVycm9yKCJvdWNoIikKICAgICAgICAgKQotICAgICAgICAjICJiYWNrc2xhc2hyZXBsYWNlIiBjYW4gb25seSBiZSB1c2VkIGZvciBlbmNvZGluZwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKLSAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJceGZmIiksIDAsIDEsICJvdWNoIikKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycywKLSAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiXHUzMDQyIiwgMCwgMSwgIm91Y2giKQotICAgICAgICApCiAgICAgICAgICMgVXNlIHRoZSBjb3JyZWN0IGV4Y2VwdGlvbgogICAgICAgICB0ZXN0cyA9IFsKICAgICAgICAgICAgICgiXHUzMDQyIiwgIlxcdTMwNDIiKSwKQEAgLTU4NSw2ICs1OTUsNzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxICsgbGVuKHMpLCAib3VjaCIpKSwKICAgICAgICAgICAgICAgICAgICAgKHIsIDEgKyBsZW4ocykpCiAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvcigiYSIgKyBzICsgImIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGIiYSIsICJcXHg2MSIpLAorICAgICAgICAgICAgKGIiXG4iLCAiXFx4MGEiKSwKKyAgICAgICAgICAgIChiIlx4MDAiLCAiXFx4MDAiKSwKKyAgICAgICAgICAgIChiIlx4ZmYiLCAiXFx4ZmYiKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgYiwgciBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ5dGVzPWIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJhIiArIGIgKyBiImIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAyLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAgICAgKHIsIDIpCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmFkYW5kZ29vZG5hbWVyZXBsYWNlZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNvbXBsYWlucyBhYm91dCBhIG5vbi1leGNlcHRpb24gcGFzc2VkIGluCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgIDQyCisgICAgICAgICkKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNvbXBsYWlucyBhYm91dCB0aGUgd3JvbmcgZXhjZXB0aW9uIHR5cGVzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgIFVuaWNvZGVFcnJvcigib3VjaCIpCisgICAgICAgICkKKyAgICAgICAgIyAibmFtZXJlcGxhY2UiIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGVuY29kaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcigiYXNjaWkiLCBieXRlYXJyYXkoYiJceGZmIiksIDAsIDEsICJvdWNoIikKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIGNvZGVjcy5uYW1lcmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICBVbmljb2RlVHJhbnNsYXRlRXJyb3IoIlx1MzA0MiIsIDAsIDEsICJvdWNoIikKKyAgICAgICAgKQorICAgICAgICAjIFVzZSB0aGUgY29ycmVjdCBleGNlcHRpb24KKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAoIlx1MzA0MiIsICJcXE57SElSQUdBTkEgTEVUVEVSIEF9IiksCisgICAgICAgICAgICAoIlx4MDAiLCAiXFx4MDAiKSwKKyAgICAgICAgICAgICgiXHVmYmY5IiwgIlxcTntBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggIgorICAgICAgICAgICAgICAgICAgICAgICAiSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STX0iKSwKKyAgICAgICAgICAgICgiXFUwMDBlMDA3ZiIsICJcXE57Q0FOQ0VMIFRBR30iKSwKKyAgICAgICAgICAgICgiXFUwMDEwZmZmZiIsICJcXFUwMDEwZmZmZiIpLAorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMKKyAgICAgICAgICAgICgiXHVkODAwIiwgIlxcdWQ4MDAiKSwKKyAgICAgICAgICAgICgiXHVkZmZmIiwgIlxcdWRmZmYiKSwKKyAgICAgICAgICAgICgiXHVkODAwXHVkZmZmIiwgIlxcdWQ4MDBcXHVkZmZmIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIHMsIHIgaW4gdGVzdHM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiYSIgKyBzICsgImIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDEgKyBsZW4ocyksICJvdWNoIikpLAorICAgICAgICAgICAgICAgICAgICAociwgMSArIGxlbihzKSkKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9iYWRhbmRnb29kc3Vycm9nYXRlZXNjYXBlZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgc3Vycm9nYXRlZXNjYXBlX2Vycm9ycyA9IGNvZGVjcy5sb29rdXBfZXJyb3IoJ3N1cnJvZ2F0ZWVzY2FwZScpCkBAIC02NjMsMjAgKzczOSwyNCBAQAogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycywKICAgICAgICAgICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yKGVuYywgImEiLmVuY29kZShlbmMpLCAwLCAxLCAib3VjaCIpCiAgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgcyBpbiAoIlx1ZDgwMCIsICJcdWRmZmYiLCAiXHVkODAwXHVkZmZmIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9cyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc3Vycm9nYXRlcGFzc19lcnJvcnMsCisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCBzLCAwLCBsZW4ocyksICJvdWNoIikKKyAgICAgICAgICAgICAgICApCiAgICAgICAgIHRlc3RzID0gWwotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWQ4MDAiLCBiJ1x4ZWRceGEwXHg4MCcsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWQ4MDAiLCBiJ1x4ZWRceGEwXHg4MCcsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWQ4MDAiLCBiJ1x4MDBceGQ4JywgMiksCiAgICAgICAgICAgICAoInV0Zi0xNmJlIiwgIlx1ZDgwMCIsIGInXHhkOFx4MDAnLCAyKSwKICAgICAgICAgICAgICgidXRmLTMybGUiLCAiXHVkODAwIiwgYidceDAwXHhkOFx4MDBceDAwJywgNCksCiAgICAgICAgICAgICAoInV0Zi0zMmJlIiwgIlx1ZDgwMCIsIGInXHgwMFx4MDBceGQ4XHgwMCcsIDQpLAotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWRmZmYiLCBiJ1x4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWRmZmYiLCBiJ1x4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWRmZmYiLCBiJ1x4ZmZceGRmJywgMiksCiAgICAgICAgICAgICAoInV0Zi0xNmJlIiwgIlx1ZGZmZiIsIGInXHhkZlx4ZmYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTMybGUiLCAiXHVkZmZmIiwgYidceGZmXHhkZlx4MDBceDAwJywgNCksCiAgICAgICAgICAgICAoInV0Zi0zMmJlIiwgIlx1ZGZmZiIsIGInXHgwMFx4MDBceGRmXHhmZicsIDQpLAotICAgICAgICAgICAgKCJhc2NpaSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZWRceGEwXHg4MFx4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtOCIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4ZWRceGEwXHg4MFx4ZWRceGJmXHhiZicsIDMpLAogICAgICAgICAgICAgKCJ1dGYtMTZsZSIsICJcdWQ4MDBcdWRmZmYiLCBiJ1x4MDBceGQ4XHhmZlx4ZGYnLCAyKSwKICAgICAgICAgICAgICgidXRmLTE2YmUiLCAiXHVkODAwXHVkZmZmIiwgYidceGQ4XHgwMFx4ZGZceGZmJywgMiksCkBAIC02OTQsNyArNzc0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGVwYXNzX2Vycm9ycygKICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvcihlbmMsIGJ5dGVhcnJheShiImEiICsgYls6bl0gKyBiImIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBuLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAxICsgbiwgIm91Y2giKSksCiAgICAgICAgICAgICAgICAgICAgIChzWzoxXSwgMSArIG4pCiAgICAgICAgICAgICAgICAgKQogCkBAIC03MzgsNiArODE4LDEwIEBACiAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwX2Vycm9yKCJiYWNrc2xhc2hyZXBsYWNlIikKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLm5hbWVyZXBsYWNlX2Vycm9ycywKKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoIm5hbWVyZXBsYWNlIikKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfdW5lbmNvZGFibGVyZXBsYWNlbWVudChzZWxmKToKICAgICAgICAgZGVmIHVuZW5jcmVwbChleGMpOgpAQCAtODkwLDcgKzk3NCw4IEBACiAgICAgICAgIGNsYXNzIEQoZGljdCk6CiAgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgIGZvciBlcnIgaW4gKCJzdHJpY3QiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsICJiYWNrc2xhc2hyZXBsYWNlIiwgInRlc3QucG9zcmV0dXJuIik6CisgICAgICAgIGZvciBlcnIgaW4gKCJzdHJpY3QiLCAicmVwbGFjZSIsICJ4bWxjaGFycmVmcmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICJiYWNrc2xhc2hyZXBsYWNlIiwgIm5hbWVyZXBsYWNlIiwgInRlc3QucG9zcmV0dXJuIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgIlx4ZmYiLCBlcnIsIHsweGZmOiBOb25lfSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgIlx4ZmYiLCBlcnIsIEQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZW5jb2RlLCAiXHhmZiIsIGVyciwgezB4ZmY6IDMwMH0pCkBAIC05MDUsNyArOTkwLDcgQEAKICAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgI3NlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIEQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiXHhmZiIudHJhbnNsYXRlLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsICJceGZmIi50cmFuc2xhdGUsIHsweGZmOiBzeXMubWF4dW5pY29kZSsxfSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiXHhmZiIudHJhbnNsYXRlLCB7MHhmZjogKCl9KQogCiAgICAgZGVmIHRlc3RfYnVnODI4NzM3KHNlbGYpOgpAQCAtOTY3LDYgKzEwNTIsNyBAQAogICAgICAgICAgICAgY29kZWNzLmlnbm9yZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MucmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICBjb2RlY3MuYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCisgICAgICAgICAgICBjb2RlY3MubmFtZXJlcGxhY2VfZXJyb3JzLAogICAgICAgICAgICAgY29kZWNzLnhtbGNoYXJyZWZyZXBsYWNlX2Vycm9ycywKICAgICAgICAgICAgIGNvZGVjcy5sb29rdXBfZXJyb3IoJ3N1cnJvZ2F0ZWVzY2FwZScpLAogICAgICAgICAgICAgY29kZWNzLmxvb2t1cF9lcnJvcignc3Vycm9nYXRlcGFzcycpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggNjBlNjllYi4uZDBlM2ExNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC04Myw4ICs4Myw1IEBACiAgICAgICAgIChiImFifntceDc5XHg3OVx4NDFceDQ0fn1jZCIsICJyZXBsYWNlIiwgImFiXHVmZmZkXHVmZmZkXHU4MDRhY2QiKSwKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggMjVjMDViNi4uYmI5YmUxMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC0xOSw4ICsxOSw1IEBACiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CmluZGV4IDg3NzY4NjQuLjhhM2NhNzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKQEAgLTM4LDggKzM4LDUgQEAKICAgICBkZWYgdGVzdF9jaHVua2NvZGluZyhzZWxmKToKICAgICAgICAgcGFzcwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IDQwOTE5NDguLjQ0YjYzYTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtMTIzLDggKzEyMyw1IEBACiAgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCiAgICAgKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGNkNzY5NmEuLmI2YTc0ZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtNjYsOCArNjYsNSBAQAogICAgICAgICAoYiJceDhDQnh5IiwgInJlcGxhY2UiLCAgIlx1RkZGREJ4eSIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQppbmRleCBlYTZlMWMxLi45MTc0Mjk2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKQEAgLTE5LDggKzE5LDUgQEAKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1OGIxMCIpLAogICAgICkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IDhiNzhjMjQuLmE0YTZmOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC0zNDksNiArMzQ5LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsIHNlbGYuZW5jb2RpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiW1xcdWRjODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgIm5hbWVyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltcXHVkYzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbJiM1NjQ0ODtdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImlnbm9yZSIpLApAQCAtMzc2LDYgKzM3OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBhZnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgc2VsZi5pbGxfZm9ybWVkX3NlcXVlbmNlX3JlcGxhY2UgKyBhZnRlcikKKyAgICAgICAgICAgIGJhY2tzbGFzaHJlcGxhY2UgPSAnJy5qb2luKCdcXHglMDJ4JyAlIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIHNlbGYuaWxsX2Zvcm1lZF9zZXF1ZW5jZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgYmFja3NsYXNocmVwbGFjZSArIGFmdGVyKQogCiBjbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiCkBAIC04MDgsNiArODE0LDcgQEAKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAogICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKICAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKICAgICAgICAgICAgICkpCiAgICAgICAgIGVsc2U6CkBAIC04NjksNiArODc2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAiYmFja3NsYXNocmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJuYW1lcmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW1xcdWRjODBdJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInWyYjNTY0NDg7XScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlZXNjYXBlIiksCkBAIC04OTAsMTAgKzg5OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogCi0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2tpcFRlc3QoImlzc3VlICMyMDU3MTogY29kZSBwYWdlIDY1MDAxIGNvZGVjIGRvZXMgbm90ICIKLSAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCBwYXJ0aWFsIGRlY29kZXIgeWV0IikKLQogCiBjbGFzcyBVVEY3VGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi03IgpAQCAtMTA4MSw2ICsxMDg2LDcgQEAKIGNsYXNzIEVzY2FwZURlY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VtcHR5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGIiIiksIChiIiIsIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lc2NhcGVfZGVjb2RlKGJ5dGVhcnJheSgpKSwgKGIiIiwgMCkpCiAKICAgICBkZWYgdGVzdF9yYXcoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy5lc2NhcGVfZGVjb2RlCkBAIC0xMjk5LDE0ICsxMzA1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiKQogICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgogICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MDBceDExXHgwMCIKKyAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSA9IHIiXHgwMFx4MDBceDExXHgwMCIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGludmFsaWQgPSBiIlx4MDBceDExXHgwMFx4MDAiCisgICAgICAgICAgICBpbnZhbGlkX2JhY2tzbGFzaHJlcGxhY2UgPSByIlx4MDBceDExXHgwMFx4MDAiCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZC5kZWNvZGUsICJ1bmljb2RlX2ludGVybmFsIikKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludmFsaWQuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIiwgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1ZmZmZCcpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnZhbGlkLmRlY29kZSgidW5pY29kZV9pbnRlcm5hbCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRfYmFja3NsYXNocmVwbGFjZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yX2F0dHJpYnV0ZXMoc2VsZik6CkBAIC0xNjEyLDYgKzE2MjMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZGVjb2RlKGInYWJjJyksICdhYmMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5kZWNvZGUsIGInXHhmZicsICdhc2NpaScpCiAKKyAgICAgICAgIyB0ZXN0IGtleXdvcmRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmRlY29kZShvYmo9YidceGU0XHhmNlx4ZmMnLCBlbmNvZGluZz0nbGF0aW4tMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdceGU0XHhmNlx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5kZWNvZGUoYidbXHhmZl0nLCAnYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdbXScpCisKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVuY29kZSgnXHhlNFx4ZjZceGZjJywgJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZTRceGY2XHhmYycpCkBAIC0xNjIwLDYgKzE2MzcsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdhYmMnKSwgYidhYmMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIGNvZGVjcy5lbmNvZGUsICdceGZmZmYnLCAnYXNjaWknKQogCisgICAgICAgICMgdGVzdCBrZXl3b3JkcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5lbmNvZGUob2JqPSdceGU0XHhmNlx4ZmMnLCBlbmNvZGluZz0nbGF0aW4tMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlNFx4ZjZceGZjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZW5jb2RlKCdbXHhmZl0nLCAnYXNjaWknLCBlcnJvcnM9J2lnbm9yZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInW10nKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLnJlZ2lzdGVyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5yZWdpc3RlciwgNDIpCkBAIC0xNjY4LDYgKzE2OTEsNyBAQAogICAgICAgICAgICAgInJlZ2lzdGVyX2Vycm9yIiwgImxvb2t1cF9lcnJvciIsCiAgICAgICAgICAgICAic3RyaWN0X2Vycm9ycyIsICJyZXBsYWNlX2Vycm9ycyIsICJpZ25vcmVfZXJyb3JzIiwKICAgICAgICAgICAgICJ4bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMiLCAiYmFja3NsYXNocmVwbGFjZV9lcnJvcnMiLAorICAgICAgICAgICAgIm5hbWVyZXBsYWNlX2Vycm9ycyIsCiAgICAgICAgICAgICAib3BlbiIsICJFbmNvZGVkRmlsZSIsCiAgICAgICAgICAgICAiaXRlcmVuY29kZSIsICJpdGVyZGVjb2RlIiwKICAgICAgICAgICAgICJCT00iLCAiQk9NX0JFIiwgIkJPTV9MRSIsCkBAIC0xNzk4LDcgKzE4MjIsOSBAQAogICAgICJpc284ODU5XzkiLAogICAgICJqb2hhYiIsCiAgICAgImtvaThfciIsCisgICAgImtvaThfdCIsCiAgICAgImtvaThfdSIsCisgICAgImt6MTA0OCIsCiAgICAgImxhdGluXzEiLAogICAgICJtYWNfY3lyaWxsaWMiLAogICAgICJtYWNfZ3JlZWsiLApAQCAtMjAyOSw2ICsyMDU1LDE2IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAiYWIiKSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLCAiYWJcdWZmZmUiKSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImlnbm9yZSIsICJhYiIpLAogICAgICAgICAgICAgKCJhYiIsIDMpCiAgICAgICAgICkKQEAgLTIxMDUsNiArMjE0MSwyNSBAQAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYid9KSwKKyAgICAgICAgICAgICgiYWJcXHgwMiIsIDMpCisgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiAnYScsIDE6ICdiJywgMjogTm9uZX0pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgICMgSXNzdWUgIzE0ODUwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgezA6ICdhJywgMTogJ2InLCAyOiAnXHVmZmZlJ30pLAorICAgICAgICAgICAgKCJhYlxceDAyIiwgMykKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAiaWdub3JlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogJ2EnLCAxOiAnYid9KSwKICAgICAgICAgICAgICgiYWIiLCAzKQpAQCAtMjE4MSw2ICsyMjM2LDE4IEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlKGIiXHgwMFx4MDFceDAyIiwgImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBifSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogYSwgMTogYiwgMjogMHhGRkZFfSksCisgICAgICAgICAgICAoImFiXFx4MDIiLCAzKQorICAgICAgICApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJpZ25vcmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBhLCAxOiBifSksCiAgICAgICAgICAgICAoImFiIiwgMykKQEAgLTIyMzksOSArMjMwNiwxMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZSwgYnIiXFUwMDExMDAwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKHIiXFUwMDExMDAwMCIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKHIiXHg1Y1x4NTVceDMwXHgzMFx4MzFceDMxXHgzMFx4MzBceDMwXHgzMCIsIDEwKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAiYmFja3NsYXNocmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIChyIlx4NWNceDU1XHgzMFx4MzBceDMxXHgzMVx4MzBceDMwXHgzMFx4MzAiLCAxMCkpCiAKIAogY2xhc3MgVW5pY29kZUVzY2FwZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjgyNiwxNSArMjg5NywxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVFbmNvZGVFcnJvciwgJ2NwOTMyJywKICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCA5MzIsICdceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdjcDkzMicsCi0gICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgOTMyLCBiJ1x4ODFceDAwJykKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA5MzIsIGInXHg4MVx4MDAnLCAnc3RyaWN0JywgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChVbmljb2RlRGVjb2RlRXJyb3IsICdDUF9VVEY4JywKLSAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCBzZWxmLkNQX1VURjgsIGInXHhmZicpCisgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgc2VsZi5DUF9VVEY4LCBiJ1x4ZmYnLCAnc3RyaWN0JywgVHJ1ZSkKIAogICAgIGRlZiBjaGVja19kZWNvZGUoc2VsZiwgY3AsIHRlc3RzKToKICAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycywgVHJ1ZSkKICAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZGVjb2RlICVhIGZyb20gImNwJXMiIHdpdGggJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHJhdywgY3AsIGVycm9ycywgZXJyKSkKQEAgLTI4NDYsNyArMjkxNyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb2RlZFsxXSwgbGVuKHJhdykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIGNwLCByYXcsIGVycm9ycywgVHJ1ZSkKIAogICAgIGRlZiBjaGVja19lbmNvZGUoc2VsZiwgY3AsIHRlc3RzKToKICAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CkBAIC0yODc0LDcgKzI5NDUsMTIgQEAKICAgICAgICAgICAgICgnW1x4ZmZdJywgJ3JlcGxhY2UnLCBiJ1t5XScpLAogICAgICAgICAgICAgKCdbXHUyMGFjXScsICdyZXBsYWNlJywgYidbP10nKSwKICAgICAgICAgICAgICgnW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1tcXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x4ZmZdJywgJ25hbWVyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXE57TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVN9XScpLAogICAgICAgICAgICAgKCdbXHhmZl0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzI1NTtdJyksCisgICAgICAgICAgICAoJ1x1ZGNmZicsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnW1x1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHhmZl0nKSwKKyAgICAgICAgICAgICgnW1x1ZGNmZl0nLCAnc3Vycm9nYXRlcGFzcycsIE5vbmUpLAogICAgICAgICApKQogICAgICAgICBzZWxmLmNoZWNrX2RlY29kZSg5MzIsICgKICAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCkBAIC0yODgzLDEwICsyOTU5LDEzIEBACiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3RyaWN0JywgTm9uZSksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceGZmXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZXBhc3MnLCBOb25lKSwKICAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3N0cmljdCcsIE5vbmUpLAogICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnaWdub3JlJywgJ1x4MDBhYmMnKSwKICAgICAgICAgICAgIChiJ1x4ODFceDAwYWJjJywgJ3JlcGxhY2UnLCAnXHVmZmZkXHgwMGFiYycpLAorICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MVx4MDBhYmMnKSwKICAgICAgICAgKSkKIAogICAgIGRlZiB0ZXN0X2NwMTI1MihzZWxmKToKQEAgLTI4OTQsOSArMjk3MywxMiBAQAogICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKICAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGU5XHg4MCcpLAogICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIGInXHhmZicpLAorICAgICAgICAgICAgIyB0ZXN0IGVycm9yIGhhbmRsZXJzCiAgICAgICAgICAgICAoJ1x1MDE0MScsICdzdHJpY3QnLCBOb25lKSwKICAgICAgICAgICAgICgnXHUwMTQxJywgJ2lnbm9yZScsIGInJyksCiAgICAgICAgICAgICAoJ1x1MDE0MScsICdyZXBsYWNlJywgYidMJyksCisgICAgICAgICAgICAoJ1x1ZGM5OCcsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1x4OTgnKSwKKyAgICAgICAgICAgICgnXHVkYzk4JywgJ3N1cnJvZ2F0ZXBhc3MnLCBOb25lKSwKICAgICAgICAgKSkKICAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoMTI1MiwgKAogICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKaW5kZXggYjY1NDIzYi4uNTA5YmY1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKQEAgLTMsNyArMyw3IEBACiAgICBOaWNrIE1hdGhld3NvbgogIiIiCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGlzX2p5dGhvbgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX2p5dGhvbgogCiBmcm9tIGNvZGVvcCBpbXBvcnQgY29tcGlsZV9jb21tYW5kLCBQeUNGX0RPTlRfSU1QTFlfREVERU5UCiBpbXBvcnQgaW8KQEAgLTI5Niw5ICsyOTYsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUoImEgPSAxXG4iLCAiZGVmIiwgJ3NpbmdsZScpLmNvX2ZpbGVuYW1lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoQ29kZW9wVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKaW5kZXggNjZkYjkwZi4uNDEyNGY5MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CkBAIC0xLDcgKzEsOCBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgY29sbGVjdGlvbnMucHkuIiIiCiAKIGltcG9ydCB1bml0dGVzdCwgZG9jdGVzdCwgb3BlcmF0b3IKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGZvcmdldCwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBmb3JnZXQsIHVubGluaywgaW1wb3J0X2ZyZXNoX21vZHVsZQoraW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBpbnNwZWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIENvdW50ZXIsIE9yZGVyZWREaWN0LCBfY291bnRfZWxlbWVudHMKQEAgLTExLDkgKzEyLDEyIEBACiBpbXBvcnQga2V5d29yZAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyRGljdAoraW1wb3J0IHR5cGVzCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyRGljdCwgVXNlclN0cmluZywgVXNlckxpc3QKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvcgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBd2FpdGFibGUsIENvcm91dGluZSwgQXN5bmNJdGVyYXRvciwgQXN5bmNJdGVyYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvcgogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0CiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKQEAgLTIxLDYgKzI1LDI2IEBACiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCiAKK2NsYXNzIFRlc3RVc2VyT2JqZWN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9zdXBlcnNldF90ZXN0KHNlbGYsIGEsIGIpOgorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbCgKKyAgICAgICAgICAgIHNldChkaXIoYSkpLAorICAgICAgICAgICAgc2V0KGRpcihiKSksCisgICAgICAgICAgICAne2F9IHNob3VsZCBoYXZlIGFsbCB0aGUgbWV0aG9kcyBvZiB7Yn0nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBhPWEuX19uYW1lX18sCisgICAgICAgICAgICAgICAgYj1iLl9fbmFtZV9fLAorICAgICAgICAgICAgKSwKKyAgICAgICAgKQorICAgIGRlZiB0ZXN0X3N0cl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fc3VwZXJzZXRfdGVzdChVc2VyU3RyaW5nLCBzdHIpCisKKyAgICBkZWYgdGVzdF9saXN0X3Byb3RvY29sKHNlbGYpOgorICAgICAgICBzZWxmLl9zdXBlcnNldF90ZXN0KFVzZXJMaXN0LCBsaXN0KQorCisgICAgZGVmIHRlc3RfZGljdF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fc3VwZXJzZXRfdGVzdChVc2VyRGljdCwgZGljdCkKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIENoYWluTWFwIChoZWxwZXIgY2xhc3MgZm9yIGNvbmZpZ3BhcnNlciBhbmQgdGhlIHN0cmluZyBtb2R1bGUpCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTk2LDYgKzIyMCwxNCBAQAogICAgICAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQuX19kb2NfXywgJ1BvaW50KHgsIHkpJykKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X2RvY193cml0YWJsZShzZWxmKToKKyAgICAgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50LnguX19kb2NfXywgJ0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMCcpCisgICAgICAgIFBvaW50LnguX19kb2NfXyA9ICdkb2NzdHJpbmcgZm9yIFBvaW50LngnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9pbnQueC5fX2RvY19fLCAnZG9jc3RyaW5nIGZvciBQb2ludC54JykKKwogICAgIGRlZiB0ZXN0X25hbWVfZml4ZXIoc2VsZik6CiAgICAgICAgIGZvciBzcGVjLCByZW5hbWVkIGluIFsKICAgICAgICAgICAgIFsoJ2VmZycsICdnJWhpJyksICAoJ2VmZycsICdfMScpXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZpZWxkIHdpdGggbm9uLWFscGhhIGNoYXIKQEAgLTQ1NSw2ICs0ODcsMTIxIEBACiAKIGNsYXNzIFRlc3RPbmVUcmlja1BvbnlBQkNzKEFCQ1Rlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X0F3YWl0YWJsZShzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBjb3JvKCk6CisgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIGFzeW5jIGRlZiBuZXdfY29ybygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJhcjoKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgICAgICBjbGFzcyBNaW5pbWFsQ29ybyhDb3JvdXRpbmUpOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkudGhyb3codHlwLCB2YWwsIHRiKQorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB5aWVsZAorCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIGludCgpLCBnZW4oKSwgb2JqZWN0KCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIEF3YWl0YWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBBd2FpdGFibGUpLCByZXByKHR5cGUoeCkpKQorCisgICAgICAgIHNhbXBsZXMgPSBbQmFyKCksIE1pbmltYWxDb3JvKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQXdhaXRhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXdhaXRhYmxlKSkKKworICAgICAgICBjID0gY29ybygpCisgICAgICAgICMgSXRlcmFibGUgY29yb3V0aW5lcyAoZ2VuZXJhdG9ycyB3aXRoIENPX0lURVJBQkxFX0NPUk9VVElORQorICAgICAgICAjIGZsYWcgZG9uJ3QgaGF2ZSAnX19hd2FpdF9fJyBtZXRob2QsIGhlbmNlIGNhbid0IGJlIGluc3RhbmNlcworICAgICAgICAjIG9mIEF3YWl0YWJsZS4gVXNlIGluc3BlY3QuaXNhd2FpdGFibGUgdG8gZGV0ZWN0IHRoZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjLCBBd2FpdGFibGUpCisKKyAgICAgICAgYyA9IG5ld19jb3JvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEF3YWl0YWJsZSkKKyAgICAgICAgYy5jbG9zZSgpICMgYXdvaWQgUnVudGltZVdhcm5pbmcgdGhhdCBjb3JvKCkgd2FzIG5vdCBhd2FpdGVkCisKKyAgICAgICAgY2xhc3MgQ29yb0xpa2U6IHBhc3MKKyAgICAgICAgQ29yb3V0aW5lLnJlZ2lzdGVyKENvcm9MaWtlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShDb3JvTGlrZSgpLCBBd2FpdGFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDb3JvTGlrZSwgQXdhaXRhYmxlKSkKKyAgICAgICAgQ29yb0xpa2UgPSBOb25lCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpICMgS2lsbCBDb3JvTGlrZSB0byBjbGVhbi11cCBBQkNNZXRhIGNhY2hlCisKKyAgICBkZWYgdGVzdF9Db3JvdXRpbmUoc2VsZik6CisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgY29ybygpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBhc3luYyBkZWYgbmV3X2Nvcm8oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBCYXI6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgY2xhc3MgTWluaW1hbENvcm8oQ29yb3V0aW5lKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLnRocm93KHR5cCwgdmFsLCB0YikKKyAgICAgICAgICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQKKworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCBpbnQoKSwgZ2VuKCksIG9iamVjdCgpLCBCYXIoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29yb3V0aW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvcm91dGluZSksIHJlcHIodHlwZSh4KSkpCisKKyAgICAgICAgc2FtcGxlcyA9IFtNaW5pbWFsQ29ybygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEF3YWl0YWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIEF3YWl0YWJsZSkpCisKKyAgICAgICAgYyA9IGNvcm8oKQorICAgICAgICAjIEl0ZXJhYmxlIGNvcm91dGluZXMgKGdlbmVyYXRvcnMgd2l0aCBDT19JVEVSQUJMRV9DT1JPVVRJTkUKKyAgICAgICAgIyBmbGFnIGRvbid0IGhhdmUgJ19fYXdhaXRfXycgbWV0aG9kLCBoZW5jZSBjYW4ndCBiZSBpbnN0YW5jZXMKKyAgICAgICAgIyBvZiBDb3JvdXRpbmUuIFVzZSBpbnNwZWN0LmlzYXdhaXRhYmxlIHRvIGRldGVjdCB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoYywgQ29yb3V0aW5lKQorCisgICAgICAgIGMgPSBuZXdfY29ybygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBDb3JvdXRpbmUpCisgICAgICAgIGMuY2xvc2UoKSAjIGF3b2lkIFJ1bnRpbWVXYXJuaW5nIHRoYXQgY29ybygpIHdhcyBub3QgYXdhaXRlZAorCisgICAgICAgIGNsYXNzIENvcm9MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKENvcm9MaWtlKCksIENvcm91dGluZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENvcm9MaWtlLCBDb3JvdXRpbmUpKQorCisgICAgICAgIGNsYXNzIENvcm9MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvcm9MaWtlKCksIENvcm91dGluZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb3JvTGlrZSwgQ29yb3V0aW5lKSkKKwogICAgIGRlZiB0ZXN0X0hhc2hhYmxlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWhhc2hhYmxlcwogICAgICAgICBub25fc2FtcGxlcyA9IFtieXRlYXJyYXkoKSwgbGlzdCgpLCBzZXQoKSwgZGljdCgpXQpAQCAtNDgxLDYgKzYyOCw0MCBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoSGFzaGFibGUsICdfX2hhc2hfXycpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShIYXNoYWJsZSwgJ19faGFzaF9fJykKIAorICAgIGRlZiB0ZXN0X0FzeW5jSXRlcmFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIEFJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShBSSgpLCBBc3luY0l0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQUksIEFzeW5jSXRlcmFibGUpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWl0ZXJhYmxlcworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCBvYmplY3QsIFtdXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBBc3luY0l0ZXJhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIEFzeW5jSXRlcmFibGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQXN5bmNJdGVyYWJsZSwgJ19fYWl0ZXJfXycpCisgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShBc3luY0l0ZXJhYmxlLCAnX19haXRlcl9fJykKKworICAgIGRlZiB0ZXN0X0FzeW5jSXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIEFJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoQUkoKSwgQXN5bmNJdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEFJLCBBc3luY0l0ZXJhdG9yKSkKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgb2JqZWN0LCBbXV0KKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1pdGVyYWJsZXMKKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQXN5bmNJdGVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBBc3luY0l0ZXJhdG9yKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBTaW1pbGFybHkgdG8gcmVndWxhciBpdGVyYXRvcnMgKHNlZSBpc3N1ZSAxMDU2NSkKKyAgICAgICAgY2xhc3MgQW5leHRPbmx5OgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKEFuZXh0T25seSgpLCBBc3luY0l0ZXJhdG9yKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQXN5bmNJdGVyYXRvciwgJ19fYW5leHRfXycsICdfX2FpdGVyX18nKQorCiAgICAgZGVmIHRlc3RfSXRlcmFibGUoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgc29tZSBub24taXRlcmFibGVzCiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxal0KQEAgLTUyOCw5ICs3MDksODAgQEAKICAgICAgICAgY2xhc3MgTmV4dE9ubHk6CiAgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgeWllbGQgMQotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKE5leHRPbmx5KCksIEl0ZXJhdG9yKQogCisgICAgZGVmIHRlc3RfR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBOb25HZW4xOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKworICAgICAgICBjbGFzcyBOb25HZW4yOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorCisgICAgICAgIGNsYXNzIE5vbkdlbjM6CisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6IHBhc3MKKworICAgICAgICBub25fc2FtcGxlcyA9IFsKKyAgICAgICAgICAgIE5vbmUsIDQyLCAzLjE0LCAxaiwgYiIiLCAiIiwgKCksIFtdLCB7fSwgc2V0KCksCisgICAgICAgICAgICBpdGVyKCgpKSwgaXRlcihbXSksIE5vbkdlbjEoKSwgTm9uR2VuMigpLCBOb25HZW4zKCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIEdlbmVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBHZW5lcmF0b3IpLCByZXByKHR5cGUoeCkpKQorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKTogcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworCisgICAgICAgIGNsYXNzIE1pbmltYWxHZW4oR2VuZXJhdG9yKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLnRocm93KHR5cCwgdmFsLCB0YikKKworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxCisKKyAgICAgICAgc2FtcGxlcyA9IFtnZW4oKSwgKGxhbWJkYTogKHlpZWxkKSkoKSwgR2VuKCksIE1pbmltYWxHZW4oKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBJdGVyYXRvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBHZW5lcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBHZW5lcmF0b3IpLCByZXByKHR5cGUoeCkpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoR2VuZXJhdG9yLCAnc2VuZCcsICd0aHJvdycpCisKKyAgICAgICAgIyBtaXhpbiB0ZXN0cworICAgICAgICBtZ2VuID0gTWluaW1hbEdlbigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWdlbiwgaXRlcihtZ2VuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtZ2VuLnNlbmQoTm9uZSksIG5leHQobWdlbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbWdlbi5zZW5kKDIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtZ2VuLmNsb3NlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1nZW4udGhyb3csIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIl5odWh1JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWdlbi50aHJvdywgVmFsdWVFcnJvciwgVmFsdWVFcnJvcigiaHVodSIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtZ2VuLnRocm93LCBTdG9wSXRlcmF0aW9uKCkpCisKKyAgICAgICAgY2xhc3MgRmFpbE9uQ2xvc2UoR2VuZXJhdG9yKToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZiwgKmFyZ3MpOiByYWlzZSBWYWx1ZUVycm9yCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRmFpbE9uQ2xvc2UoKS5jbG9zZSkKKworICAgICAgICBjbGFzcyBJZ25vcmVHZW5lcmF0b3JFeGl0KEdlbmVyYXRvcik6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIHRocm93KHNlbGYsICphcmdzKTogcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgSWdub3JlR2VuZXJhdG9yRXhpdCgpLmNsb3NlKQorCiAgICAgZGVmIHRlc3RfU2l6ZWQoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKQEAgLTY1Nyw2ICs5MDksNTkgQEAKICAgICAgICAgYSwgYiA9IE9uZVR3b1RocmVlU2V0KCksIE9uZVR3b1RocmVlU2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2goYSkgPT0gaGFzaChiKSkKIAorICAgIGRlZiB0ZXN0X2lzZGlzam9pbnRfU2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNeVNldChTZXQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0cik6CisgICAgICAgICAgICAgICAgc2VsZi5jb250ZW50cyA9IGl0cgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCBpbiBzZWxmLmNvbnRlbnRzCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBsZW4oW3ggZm9yIHggaW4gc2VsZi5jb250ZW50c10pCisgICAgICAgIHMxID0gTXlTZXQoKDEsIDIsIDMpKQorICAgICAgICBzMiA9IE15U2V0KCg0LCA1LCA2KSkKKyAgICAgICAgczMgPSBNeVNldCgoMSwgNSwgNikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzMS5pc2Rpc2pvaW50KHMyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMS5pc2Rpc2pvaW50KHMzKSkKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5X1NldChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlTZXQoU2V0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdHIpOgorICAgICAgICAgICAgICAgIHNlbGYuY29udGVudHMgPSBpdHIKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggaW4gc2VsZi5jb250ZW50cworICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuY29udGVudHMpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKFt4IGZvciB4IGluIHNlbGYuY29udGVudHNdKQorICAgICAgICBzMSA9IE15U2V0KCgxLCkpCisgICAgICAgIHMyID0gTXlTZXQoKDEsIDIpKQorICAgICAgICBzMyA9IE15U2V0KCgzLCA0KSkKKyAgICAgICAgczQgPSBNeVNldCgoMywgNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzMiA+IHMxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoczEgPCBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMiA8PSBzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMiA8PSBzMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzMSA+PSBzMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMywgczQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoczIsIHMzKQorCisgICAgZGVmIHRlc3RfYXJpdGhtZXRpY19TZXQoc2VsZik6CisgICAgICAgIGNsYXNzIE15U2V0KFNldCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRyKToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRlbnRzID0gaXRyCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4IGluIHNlbGYuY29udGVudHMKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLmNvbnRlbnRzKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbihbeCBmb3IgeCBpbiBzZWxmLmNvbnRlbnRzXSkKKyAgICAgICAgczEgPSBNeVNldCgoMSwgMiwgMykpCisgICAgICAgIHMyID0gTXlTZXQoKDMsIDQsIDUpKQorICAgICAgICBzMyA9IHMxICYgczIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMywgTXlTZXQoKDMsKSkpCisKICAgICBkZWYgdGVzdF9NdXRhYmxlU2V0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2V0KCksIE11dGFibGVTZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNldCwgTXV0YWJsZVNldCkpCkBAIC05NTcsNiArMTI2Miw0MSBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoU2VxdWVuY2UsICdfX2NvbnRhaW5zX18nLCAnX19pdGVyX18nLCAnX19sZW5fXycsCiAgICAgICAgICAgICAnX19nZXRpdGVtX18nKQogCisgICAgZGVmIHRlc3RfU2VxdWVuY2VfbWl4aW5zKHNlbGYpOgorICAgICAgICBjbGFzcyBTZXF1ZW5jZVN1YmNsYXNzKFNlcXVlbmNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXE9KCkpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VxID0gc2VxCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc2VxW2luZGV4XQorCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuc2VxKQorCisgICAgICAgICMgQ29tcGFyZSBTZXF1ZW5jZS5pbmRleCgpIGJlaGF2aW9yIHRvIChsaXN0fHN0cikuaW5kZXgoKSBiZWhhdmlvcgorICAgICAgICBkZWYgYXNzZXJ0X2luZGV4X3NhbWUoc2VxMSwgc2VxMiwgaW5kZXhfYXJncyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZXExLmluZGV4KCppbmRleF9hcmdzKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VxMi5pbmRleCgqaW5kZXhfYXJncykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYWN0dWFsID0gc2VxMi5pbmRleCgqaW5kZXhfYXJncykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBhY3R1YWwsIGV4cGVjdGVkLCAnJXIuaW5kZXglcycgJSAoc2VxMSwgaW5kZXhfYXJncykpCisKKyAgICAgICAgZm9yIHR5IGluIGxpc3QsIHN0cjoKKyAgICAgICAgICAgIG5hdGl2ZXNlcSA9IHR5KCdhYnJhY2FkYWJyYScpCisgICAgICAgICAgICBpbmRleGVzID0gWy0xMDAwMCwgLTk5OTldICsgbGlzdChyYW5nZSgtMywgbGVuKG5hdGl2ZXNlcSkgKyAzKSkKKyAgICAgICAgICAgIHNlcXNlcSA9IFNlcXVlbmNlU3ViY2xhc3MobmF0aXZlc2VxKQorICAgICAgICAgICAgZm9yIGxldHRlciBpbiBzZXQobmF0aXZlc2VxKSB8IHsneid9OgorICAgICAgICAgICAgICAgIGFzc2VydF9pbmRleF9zYW1lKG5hdGl2ZXNlcSwgc2Vxc2VxLCAobGV0dGVyLCkpCisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0IGluIHJhbmdlKC0zLCBsZW4obmF0aXZlc2VxKSArIDMpOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnRfaW5kZXhfc2FtZShuYXRpdmVzZXEsIHNlcXNlcSwgKGxldHRlciwgc3RhcnQpKQorICAgICAgICAgICAgICAgICAgICBmb3Igc3RvcCBpbiByYW5nZSgtMywgbGVuKG5hdGl2ZXNlcSkgKyAzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF9pbmRleF9zYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZXNlcSwgc2Vxc2VxLCAobGV0dGVyLCBzdGFydCwgc3RvcCkpCisKICAgICBkZWYgdGVzdF9CeXRlU3RyaW5nKHNlbGYpOgogICAgICAgICBmb3Igc2FtcGxlIGluIFtieXRlcywgYnl0ZWFycmF5XToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzYW1wbGUoKSwgQnl0ZVN0cmluZykKQEAgLTk3MSw3ICsxMzExLDcgQEAKICAgICAgICAgZm9yIHNhbXBsZSBpbiBbdHVwbGUsIHN0ciwgYnl0ZXNdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNhbXBsZSgpLCBNdXRhYmxlU2VxdWVuY2UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2FtcGxlLCBNdXRhYmxlU2VxdWVuY2UpKQotICAgICAgICBmb3Igc2FtcGxlIGluIFtsaXN0LCBieXRlYXJyYXldOgorICAgICAgICBmb3Igc2FtcGxlIGluIFtsaXN0LCBieXRlYXJyYXksIGRlcXVlXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzYW1wbGUoKSwgTXV0YWJsZVNlcXVlbmNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc2FtcGxlLCBNdXRhYmxlU2VxdWVuY2UpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc3RyLCBNdXRhYmxlU2VxdWVuY2UpKQpAQCAtMTI4NCw5ICsxNjI0LDI0IEBACiAjIyMgT3JkZXJlZERpY3QKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWNsYXNzIFRlc3RPcmRlcmVkRGljdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitweV9jb2xsID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnY29sbGVjdGlvbnMnLCBibG9ja2VkPVsnX2NvbGxlY3Rpb25zJ10pCitjX2NvbGwgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdjb2xsZWN0aW9ucycsIGZyZXNoPVsnX2NvbGxlY3Rpb25zJ10pCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiByZXBsYWNlZF9tb2R1bGUobmFtZSwgcmVwbGFjZW1lbnQpOgorICAgIG9yaWdpbmFsX21vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSByZXBsYWNlbWVudAorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9yaWdpbmFsX21vZHVsZQorCisKK2NsYXNzIE9yZGVyZWREaWN0VGVzdHM6CiAKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2EnLCAxKSwgKCdiJywgMildLCBOb25lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIG1hbnkgYXJncwogICAgICAgICBwYWlycyA9IFsoJ2EnLCAxKSwgKCdiJywgMiksICgnYycsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSldCkBAIC0xMzEwLDYgKzE2NjUsNyBAQAogICAgICAgICAgICAgWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNiksICgnZycsIDcpXSkKIAogICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLnVwZGF0ZShbKCdhJywgMSksICgnYicsIDIpXSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgcGFpcnMgPSBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCksICgnZScsIDUpXQpAQCAtMTM1MCwxMSArMTcwNiwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsIDQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQorCisgICAgZGVmIHRlc3RfZnJvbWtleXMoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGMsIE5vbmUpIGZvciBjIGluICdhYmMnXSkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJywgdmFsdWU9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGMsIE5vbmUpIGZvciBjIGluICdhYmMnXSkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJywgdmFsdWU9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKGMsIDApIGZvciBjIGluICdhYmMnXSkKKwogICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoT3JkZXJlZERpY3QoKSwgTXV0YWJsZU1hcHBpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE9yZGVyZWREaWN0LCBNdXRhYmxlTWFwcGluZykpCiAKICAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTM2Myw2ICsxNzM0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob2QpLCAwKQogCiAgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQogICAgICAgICBkZWwgb2RbJ2EnXQpAQCAtMTM3Miw2ICsxNzQ0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBwYWlyc1s6Ml0gKyBwYWlyc1szOl0pCiAKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoWygnZCcsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnYScsIDQpLCAoJ2UnLCA1KV0pCiAgICAgICAgIG9kWydjJ10gPSAxMCAgICAgICAgICAgIyBleGlzdGluZyBlbGVtZW50CiAgICAgICAgIG9kWydmJ10gPSAyMCAgICAgICAgICAgIyBuZXcgZWxlbWVudApAQCAtMTM3OSw2ICsxNzUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkJywgMSksICgnYicsIDIpLCAoJ2MnLCAxMCksICgnYScsIDQpLCAoJ2UnLCA1KSwgKCdmJywgMjApXSkKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTM4OCw4ICsxNzYyLDUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgcGFpcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFt0WzBdIGZvciB0IGluIHJldmVyc2VkKHBhaXJzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZC5rZXlzKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbdFswXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QudmFsdWVzKCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbdFsxXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QuaXRlbXMoKSkpLCBsaXN0KHJldmVyc2VkKHBhaXJzKSkpCisKKyAgICBkZWYgdGVzdF9kZXRlY3RfZGVsZXRpb25fZHVyaW5nX2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmMnKQorICAgICAgICBpdCA9IGl0ZXIob2QpCisgICAgICAgIGtleSA9IG5leHQoaXQpCisgICAgICAgIGRlbCBvZFtrZXldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICMgTm90ZSwgdGhlIGV4YWN0IGV4Y2VwdGlvbiByYWlzZWQgaXMgbm90IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICMgVGhlIG9ubHkgZ3VhcmFudGVlIHRoYXQgdGhlIG5leHQoKSB3aWxsIG5vdCBzdWNjZWVkCisgICAgICAgICAgICBuZXh0KGl0KQorCisgICAgZGVmIHRlc3Rfc29ydGVkX2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdhJywgMSksICgnYicsIDIpXSwgTm9uZSkKKyAgICAgICAgcGFpcnMgPSBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCksICgnZScsIDUpXQorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvZCksIFt0WzBdIGZvciB0IGluIHBhaXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob2Qua2V5cygpKSwgW3RbMF0gZm9yIHQgaW4gcGFpcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvZC52YWx1ZXMoKSksIFt0WzFdIGZvciB0IGluIHBhaXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQob2QuaXRlbXMoKSksIHBhaXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyZXZlcnNlZChvZCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZChbdFswXSBmb3IgdCBpbiByZXZlcnNlZChwYWlycyldKSkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yc19lbXB0eShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZW1wdHkgPSBbXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLmtleXMoKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QudmFsdWVzKCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBlbXB0eSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKG9kKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2Qua2V5cygpKSksIGVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQob2QudmFsdWVzKCkpKSwgZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChvZC5pdGVtcygpKSksIGVtcHR5KQogCiAgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTM5OSw3ICsxODE2LDE5IEBACiAgICAgICAgICAgICBvZC5wb3BpdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob2QpLCAwKQogCisgICAgZGVmIHRlc3RfcG9waXRlbV9sYXN0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CisgICAgICAgIHBhaXJzID0gWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzMCldCisKKyAgICAgICAgb2JqID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgb2JqLnBvcGl0ZW0oVHJ1ZSkKKyAgICAgICAgb2JqLnBvcGl0ZW0oVHJ1ZSkKKyAgICAgICAgb2JqLnBvcGl0ZW0obGFzdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvYmopLCAyMCkKKwogICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTQyMCwxMCArMTg0OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdiJywgNSksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5wb3AoJ2EnLCA2KSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnBvcCgnYScsIDYpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucG9wKCdhJywgZGVmYXVsdD02KSwgNikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CiAgICAgICAgICAgICBtLnBvcCgnYScpCiAKICAgICBkZWYgdGVzdF9lcXVhbGl0eShzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBzaHVmZmxlKHBhaXJzKQogICAgICAgICBvZDEgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTE0MzksNiArMTg3MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob2QxLCBPcmRlcmVkRGljdChwYWlyc1s6LTFdKSkKIAogICAgIGRlZiB0ZXN0X2NvcHlpbmcoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBDaGVjayB0aGF0IG9yZGVyZWQgZGljdHMgYXJlIGNvcHlhYmxlLCBkZWVwY29weWFibGUsIHBpY2tsYWJsZSwKICAgICAgICAgIyBhbmQgaGF2ZSBhIHJlcHIvZXZhbCByb3VuZC10cmlwCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCkBAIC0xNDQ3LDEyICsxODc5LDE3IEBACiAgICAgICAgICAgICBtc2cgPSAiXG5jb3B5OiAlc1xub2Q6ICVzIiAlIChkdXAsIG9kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkdXAsIG9kLCBtc2cpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR1cCwgb2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHVwLml0ZW1zKCkpLCBsaXN0KG9kLml0ZW1zKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZHVwKSwgbGVuKG9kKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkdXApLCB0eXBlKG9kKSkKICAgICAgICAgY2hlY2sob2QuY29weSgpKQogICAgICAgICBjaGVjayhjb3B5LmNvcHkob2QpKQogICAgICAgICBjaGVjayhjb3B5LmRlZXBjb3B5KG9kKSkKLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6Ci0gICAgICAgICAgICAgICAgY2hlY2socGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgcHJvdG8pKSkKKyAgICAgICAgIyBwaWNrbGUgZGlyZWN0bHkgcHVsbHMgdGhlIG1vZHVsZSwgc28gd2UgaGF2ZSB0byBmYWtlIGl0CisgICAgICAgIHdpdGggcmVwbGFjZWRfbW9kdWxlKCdjb2xsZWN0aW9ucycsIHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2socGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhvZCwgcHJvdG8pKSkKICAgICAgICAgY2hlY2soZXZhbChyZXByKG9kKSkpCiAgICAgICAgIHVwZGF0ZV90ZXN0ID0gT3JkZXJlZERpY3QoKQogICAgICAgICB1cGRhdGVfdGVzdC51cGRhdGUob2QpCkBAIC0xNDYwLDYgKzE4OTcsNyBAQAogICAgICAgICBjaGVjayhPcmRlcmVkRGljdChvZCkpCiAKICAgICBkZWYgdGVzdF95YW1sX2xpbmthZ2Uoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBWZXJpZnkgdGhhdCBfX3JlZHVjZV9fIGlzIHNldHVwIGluIGEgd2F5IHRoYXQgc3VwcG9ydHMgUHlZQU1MJ3MgZHVtcCgpIGZlYXR1cmUuCiAgICAgICAgICMgSW4geWFtbCwgbGlzdHMgYXJlIG5hdGl2ZSBidXQgdHVwbGVzIGFyZSBub3QuCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCkBAIC0xNDY5LDYgKzE5MDcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHR5cGUocGFpcik9PWxpc3QgZm9yIHBhaXIgaW4gb2QuX19yZWR1Y2VfXygpWzFdKSkKIAogICAgIGRlZiB0ZXN0X3JlZHVjZV9ub3RfdG9vX2ZhdChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAogICAgICAgICAjIGRvIG5vdCBzYXZlIGluc3RhbmNlIGRpY3Rpb25hcnkgaWYgbm90IG5lZWRlZAogICAgICAgICBwYWlycyA9IFsoJ2MnLCAxKSwgKCdiJywgMiksICgnYScsIDMpLCAoJ2QnLCA0KSwgKCdlJywgNSksICgnZicsIDYpXQogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KHBhaXJzKQpAQCAtMTQ3NywxNSArMTkxNiwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCiAKICAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQogICAgICAgICBvZFsxXSA9IG9kCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZSgtMSwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZHVwLCBvZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkdXAua2V5cygpKSwgWzFdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKKworICAgICAgICAjIHBpY2tsZSBkaXJlY3RseSBwdWxscyB0aGUgbW9kdWxlLCBzbyB3ZSBoYXZlIHRvIGZha2UgaXQKKyAgICAgICAgd2l0aCByZXBsYWNlZF9tb2R1bGUoJ2NvbGxlY3Rpb25zJywgc2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKC0xLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGR1cCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMob2QsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGR1cCwgb2QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGR1cC5rZXlzKCkpLCBbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhkdXBbMV0sIGR1cCkKIAogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihvZCksCiAgICAgICAgICAgICAiT3JkZXJlZERpY3QoWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildKSIpCkBAIC0xNDkzLDYgKzE5MzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3JkZXJlZERpY3QoKSksICJPcmRlcmVkRGljdCgpIikKIAogICAgIGRlZiB0ZXN0X3JlcHJfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgU2VlIGlzc3VlICM5ODI2CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCiAgICAgICAgIG9kWyd4J10gPSBvZApAQCAtMTUwMCw2ICsxOTQ1LDcgQEAKICAgICAgICAgICAgICJPcmRlcmVkRGljdChbKCdhJywgTm9uZSksICgnYicsIE5vbmUpLCAoJ2MnLCBOb25lKSwgKCd4JywgLi4uKV0pIikKIAogICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKQEAgLTE1MTAsNiArMTk1Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Quc2V0ZGVmYXVsdCgneCcsIDEwKSwgMTApCiAgICAgICAgICMgbWFrZSBzdXJlICd4JyBpcyBhZGRlZCB0byB0aGUgZW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKVstMV0sICgneCcsIDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZC5zZXRkZWZhdWx0KCdnJywgZGVmYXVsdD05KSwgOSkKIAogICAgICAgICAjIG1ha2Ugc3VyZSBzZXRkZWZhdWx0IHN0aWxsIHdvcmtzIHdoZW4gX19taXNzaW5nX18gaXMgZGVmaW5lZAogICAgICAgICBjbGFzcyBNaXNzaW5nKE9yZGVyZWREaWN0KToKQEAgLTE1MTgsMTYgKzE5NjUsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNaXNzaW5nKCkuc2V0ZGVmYXVsdCg1LCA5KSwgOSkKIAogICAgIGRlZiB0ZXN0X3JlaW5zZXJ0KHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CiAgICAgICAgICMgR2l2ZW4gaW5zZXJ0IGEsIGluc2VydCBiLCBkZWxldGUgYSwgcmUtaW5zZXJ0IGEsCiAgICAgICAgICMgdmVyaWZ5IHRoYXQgYSBpcyBub3cgbGF0ZXIgdGhhbiBiLgogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKICAgICAgICAgb2RbJ2EnXSA9IDEKICAgICAgICAgb2RbJ2InXSA9IDIKICAgICAgICAgZGVsIG9kWydhJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kLml0ZW1zKCkpLCBbKCdiJywgMildKQogICAgICAgICBvZFsnYSddID0gMQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QuaXRlbXMoKSksIFsoJ2InLCAyKSwgKCdhJywgMSldKQogCiAgICAgZGVmIHRlc3RfbW92ZV90b19lbmQoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjZGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdhYmNkZScpKQogICAgICAgICBvZC5tb3ZlX3RvX2VuZCgnYycpCkBAIC0xNTM4LDE2ICsxOTg4LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZCksIGxpc3QoJ2NhYmRlJykpCiAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCdlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnY2FiZGUnKSkKKyAgICAgICAgb2QubW92ZV90b19lbmQoJ2InLCBsYXN0PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdiY2FkZScpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgIG9kLm1vdmVfdG9fZW5kKCd4JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBvZC5tb3ZlX3RvX2VuZCgneCcsIDApCiAKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBXaW1weSB0ZXN0OiBKdXN0IHZlcmlmeSB0aGUgcmVwb3J0ZWQgc2l6ZSBpcyBsYXJnZXIgdGhhbiBhIHJlZ3VsYXIgZGljdAogICAgICAgICBkID0gZGljdChhPTEpCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKICAgICAgICAgIyBWZXJpZnkgdGhhdCBzdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB1cGRhdGUoKSB3aXRob3V0IGJyZWFraW5nIF9faW5pdF9fKCkKICAgICAgICAgY2xhc3MgTXlPRChPcmRlcmVkRGljdCk6CiAgICAgICAgICAgICBkZWYgdXBkYXRlKHNlbGYsICphcmdzLCAqKmt3ZHMpOgpAQCAtMTU1NSwxOCArMjAxMSwxNzEgQEAKICAgICAgICAgaXRlbXMgPSBbKCdhJywgMSksICgnYycsIDMpLCAoJ2InLCAyKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KE15T0QoaXRlbXMpLml0ZW1zKCkpLCBpdGVtcykKIAotY2xhc3MgR2VuZXJhbE1hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6Ci0gICAgdHlwZTJ0ZXN0ID0gT3JkZXJlZERpY3QKKworY2xhc3MgUHVyZVB5dGhvbk9yZGVyZWREaWN0VGVzdHMoT3JkZXJlZERpY3RUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgbW9kdWxlID0gcHlfY29sbAorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCitjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cyhPcmRlcmVkRGljdFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBtb2R1bGUgPSBjX2NvbGwKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW1faGFzaF9jb2xsaXNpb24oc2VsZik6CisgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5tb2R1bGUuT3JkZXJlZERpY3QKKworICAgICAgICBjbGFzcyBLZXk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFzaCk6CisgICAgICAgICAgICAgICAgc2VsZi5faGFzaCA9IGhhc2gKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gc3RyKGlkKHNlbGYpKQorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCisgICAgICAgIGRlZiBibG9ja2luZ19oYXNoKGhhc2gpOgorICAgICAgICAgICAgIyBTZWUgdGhlIGNvbGxpc2lvbi1oYW5kbGluZyBpbiBsb29rZGljdCAoaW4gT2JqZWN0cy9kaWN0b2JqZWN0LmMpLgorICAgICAgICAgICAgTUlOU0laRSA9IDgKKyAgICAgICAgICAgIGkgPSAoaGFzaCAmIE1JTlNJWkUtMSkKKyAgICAgICAgICAgIHJldHVybiAoaSA8PCAyKSArIGkgKyBoYXNoICsgMQorCisgICAgICAgIENPTExJRElORyA9IDEKKworICAgICAgICBrZXkgPSBLZXkoQ09MTElESU5HKQorICAgICAgICBjb2xsaWRpbmcgPSBLZXkoQ09MTElESU5HKQorICAgICAgICBibG9ja2luZyA9IEtleShibG9ja2luZ19oYXNoKENPTExJRElORykpCisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIG9kW2tleV0gPSAuLi4KKyAgICAgICAgb2RbYmxvY2tpbmddID0gLi4uCisgICAgICAgIG9kW2NvbGxpZGluZ10gPSAuLi4KKyAgICAgICAgb2RbJ2FmdGVyJ10gPSAuLi4KKworICAgICAgICBkZWwgb2RbYmxvY2tpbmddCisgICAgICAgIGRlbCBvZFtjb2xsaWRpbmddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvZC5pdGVtcygpKSwgWyhrZXksIC4uLiksICgnYWZ0ZXInLCAuLi4pXSkKKworICAgIGRlZiB0ZXN0X2tleV9jaGFuZ2VfZHVyaW5nX2l0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiY2RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9kKSwgbGlzdCgnYWJjZGUnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgZm9yIGksIGsgaW4gZW51bWVyYXRlKG9kKToKKyAgICAgICAgICAgICAgICBvZC5tb3ZlX3RvX2VuZChrKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhpLCA1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBmb3IgayBpbiBvZDoKKyAgICAgICAgICAgICAgICBvZFsnZiddID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBmb3IgayBpbiBvZDoKKyAgICAgICAgICAgICAgICBkZWwgb2RbJ2MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob2QpLCBsaXN0KCdiZGVhZicpKQorCisgICAgZGVmIHRlc3RfaXNzdWUyNDM0NyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorCisgICAgICAgIGNsYXNzIEtleToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmFuZHJhbmdlKDEwMDAwMCkKKworICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgICAgIGtleSA9IEtleSgpCisgICAgICAgICAgICBvZFtrZXldID0gaQorCisgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICByZXByKG9kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIG9kLmNvcHkoKQorCisgICAgZGVmIHRlc3RfaXNzdWUyNDM0OChzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLm1vZHVsZS5PcmRlcmVkRGljdAorCisgICAgICAgIGNsYXNzIEtleToKKyAgICAgICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQorICAgICAgICBvZFtLZXkoKV0gPSAwCisgICAgICAgICMgVGhpcyBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICBvZC5wb3BpdGVtKCkKKworICAgIGRlZiB0ZXN0X2lzc3VlMjQ2Njcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBkaWN0IHJlc2l6ZXMgYWZ0ZXIgYSBjZXJ0YWluIG51bWJlciBvZiBpbnNlcnRpb24gb3BlcmF0aW9ucywKKyAgICAgICAgd2hldGhlciBvciBub3QgdGhlcmUgd2VyZSBkZWxldGlvbnMgdGhhdCBmcmVlZCB1cCBzbG90cyBpbiB0aGUKKyAgICAgICAgaGFzaCB0YWJsZS4gIER1cmluZyBmYXN0IG5vZGUgbG9va3VwLCBPcmRlcmVkRGljdCBtdXN0IGNvcnJlY3RseQorICAgICAgICByZXNwb25kIHRvIGFsbCByZXNpemVzLCBldmVuIGlmIHRoZSBjdXJyZW50ICJzaXplIiBpcyB0aGUgc2FtZQorICAgICAgICBhcyB0aGUgb2xkIG9uZS4gIFdlIHZlcmlmeSB0aGF0IGhlcmUgYnkgZm9yY2luZyBhIGRpY3QgcmVzaXplCisgICAgICAgIG9uIGEgc3BhcnNlIG9kaWN0IGFuZCB0aGVuIHBlcmZvcm0gYW4gb3BlcmF0aW9uIHRoYXQgc2hvdWxkCisgICAgICAgIHRyaWdnZXIgYW4gb2RpY3QgcmVzaXplIChlLmcuIHBvcGl0ZW0pLiAgT25lIGtleSBhc3BlY3QgaGVyZSBpcworICAgICAgICB0aGF0IHdlIHdpbGwga2VlcCB0aGUgc2l6ZSBvZiB0aGUgb2RpY3QgdGhlIHNhbWUgYXQgZWFjaCBwb3BpdGVtCisgICAgICAgIGNhbGwuICBUaGlzIHZlcmlmaWVzIHRoYXQgd2UgaGFuZGxlZCB0aGUgZGljdCByZXNpemUgcHJvcGVybHkuCisgICAgICAgICIiIgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYubW9kdWxlLk9yZGVyZWREaWN0CisKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIGZvciBjMCBpbiAnMDEyMzQ1Njc4OUFCQ0RFRic6CisgICAgICAgICAgICBmb3IgYzEgaW4gJzAxMjM0NTY3ODlBQkNERUYnOgorICAgICAgICAgICAgICAgIGlmIGxlbihvZCkgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBub3QgcmFpc2UgYSBLZXlFcnJvci4KKyAgICAgICAgICAgICAgICAgICAgb2QucG9waXRlbShsYXN0PUZhbHNlKQorICAgICAgICAgICAgICAgIGtleSA9IGMwICsgYzEKKyAgICAgICAgICAgICAgICBvZFtrZXldID0ga2V5CisKKworY2xhc3MgUHVyZVB5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IHB5X2NvbGwuT3JkZXJlZERpY3QKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKIAotY2xhc3MgTXlPcmRlcmVkRGljdChPcmRlcmVkRGljdCk6Ci0gICAgcGFzcwogCi1jbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6Ci0gICAgdHlwZTJ0ZXN0ID0gTXlPcmRlcmVkRGljdAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19jb2xsLCAncmVxdWlyZXMgdGhlIEMgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlJykKK2NsYXNzIENQeXRob25HZW5lcmFsTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy50eXBlMnRlc3QgPSBjX2NvbGwuT3JkZXJlZERpY3QKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKKworCitjbGFzcyBQdXJlUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xhc3MgTXlPcmRlcmVkRGljdChweV9jb2xsLk9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IE15T3JkZXJlZERpY3QKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGQucG9waXRlbSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2NvbGwsICdyZXF1aXJlcyB0aGUgQyB2ZXJzaW9uIG9mIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUnKQorY2xhc3MgQ1B5dGhvblN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNsYXNzIE15T3JkZXJlZERpY3QoY19jb2xsLk9yZGVyZWREaWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY2xzLnR5cGUydGVzdCA9IE15T3JkZXJlZERpY3QKIAogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKQEAgLTE1ODMsNyArMjE5MiwxMSBAQAogICAgIE5hbWVkVHVwbGVEb2NzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUobW9kdWxlPWNvbGxlY3Rpb25zKQogICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0TmFtZWRUdXBsZSwgTmFtZWRUdXBsZURvY3MsIFRlc3RPbmVUcmlja1BvbnlBQkNzLAogICAgICAgICAgICAgICAgICAgICBUZXN0Q29sbGVjdGlvbkFCQ3MsIFRlc3RDb3VudGVyLCBUZXN0Q2hhaW5NYXAsCi0gICAgICAgICAgICAgICAgICAgIFRlc3RPcmRlcmVkRGljdCwgR2VuZXJhbE1hcHBpbmdUZXN0cywgU3ViY2xhc3NNYXBwaW5nVGVzdHNdCisgICAgICAgICAgICAgICAgICAgIFB1cmVQeXRob25PcmRlcmVkRGljdFRlc3RzLCBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgUHVyZVB5dGhvbkdlbmVyYWxNYXBwaW5nVGVzdHMsIENQeXRob25HZW5lcmFsTWFwcGluZ1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICBQdXJlUHl0aG9uU3ViY2xhc3NNYXBwaW5nVGVzdHMsIENQeXRob25TdWJjbGFzc01hcHBpbmdUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgVGVzdFVzZXJPYmplY3RzLAorICAgICAgICAgICAgICAgICAgICBdCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGNvbGxlY3Rpb25zLCB2ZXJib3NlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBhcmUucHkKaW5kZXggYTY2MzgzMi4uNDcxYzhkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wYXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGFyZS5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIEVtcHR5OgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTEyMSw4ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFueXRoaW5nKCksIHkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvbXBhcmlzb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggY2ZmM2M5ZS4uZGI4MjFiZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNSw3ICs1LDggQEAKIGltcG9ydCBfYXN0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0eXBlcwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIFRlc3RTcGVjaWZpY3ModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MjcsNyArNDI4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbXBpbGVfYXN0KHNlbGYpOgogICAgICAgICBmbmFtZSA9IF9fZmlsZV9fCi0gICAgICAgIGlmIGZuYW1lLmxvd2VyKCkuZW5kc3dpdGgoKCdweWMnLCAncHlvJykpOgorICAgICAgICBpZiBmbmFtZS5sb3dlcigpLmVuZHN3aXRoKCdweWMnKToKICAgICAgICAgICAgIGZuYW1lID0gZm5hbWVbOi0xXQogICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICdyJykgYXMgZjoKICAgICAgICAgICAgIGZjb250ZW50cyA9IGYucmVhZCgpCkBAIC00NjAsNiArNDYxLDE3IEBACiAgICAgICAgIGFzdC5ib2R5ID0gW19hc3QuQm9vbE9wKCldCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgYXN0LCAnPGFzdD4nLCAnZXhlYycpCiAKKyAgICBkZWYgdGVzdF9kaWN0X2V2YWx1YXRpb25fb3JkZXIoc2VsZik6CisgICAgICAgIGkgPSAwCisKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGkKKyAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBkID0ge2YoKTogZigpLCBmKCk6IGYoKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCisKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CiAgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCkBAIC01MjIsNyArNTM0LDcgQEAKICAgICAgICAgICAgIGJyb2tlbiA9IHByZWZpeCArIHJlcGVhdGVkICogZmFpbF9kZXB0aAogICAgICAgICAgICAgZGV0YWlscyA9ICJDb21waWxpbmcgKHshcn0gKyB7IXJ9ICoge30pIi5mb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCByZXBlYXRlZCwgZmFpbF9kZXB0aCkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBtc2c9ZGV0YWlscyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBtc2c9ZGV0YWlscyk6CiAgICAgICAgICAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZShicm9rZW4pCiAKICAgICAgICAgY2hlY2tfbGltaXQoImEiLCAiKCkiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CmluZGV4IDJhNDIyMzguLjk0Nzk3NzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKQEAgLTEwLDcgKzEwLDE1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2ssIHNraXBVbmxlc3MKK3RyeToKKyAgICBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcyBpbXBvcnQgUHJvY2Vzc1Bvb2xFeGVjdXRvcgorICAgIF9oYXZlX211bHRpcHJvY2Vzc2luZyA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfaGF2ZV9tdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQorCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKIGNsYXNzIENvbXBpbGVhbGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTk0LDE4ICsxMDIsNDUgQEAKICAgICBkZWYgdGVzdF9vcHRpbWl6ZShzZWxmKToKICAgICAgICAgIyBtYWtlIHN1cmUgY29tcGlsaW5nIHdpdGggZGlmZmVyZW50IG9wdGltaXphdGlvbiBzZXR0aW5ncyB0aGFuIHRoZQogICAgICAgICAjIGludGVycHJldGVyJ3MgY3JlYXRlcyB0aGUgY29ycmVjdCBmaWxlIG5hbWVzCi0gICAgICAgIG9wdGltaXplID0gMSBpZiBfX2RlYnVnX18gZWxzZSAwCisgICAgICAgIG9wdGltaXplLCBvcHQgPSAoMSwgMSkgaWYgX19kZWJ1Z19fIGVsc2UgKDAsICcnKQogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCBvcHRpbWl6ZT1vcHRpbWl6ZSkKICAgICAgICAgY2FjaGVkID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkKSkKICAgICAgICAgY2FjaGVkMiA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNlbGYuc291cmNlX3BhdGgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfb3ZlcnJpZGU9bm90IG9wdGltaXplKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPW9wdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNhY2hlZDIpKQogICAgICAgICBjYWNoZWQzID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2VfcGF0aDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19vdmVycmlkZT1ub3Qgb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMykpCiAKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJykKKyAgICBkZWYgdGVzdF9jb21waWxlX3Bvb2xfY2FsbGVkKHNlbGYsIHBvb2xfbW9jayk6CisgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUsIHdvcmtlcnM9NSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvb2xfbW9jay5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3dvcmtlcnNfbm9uX3Bvc2l0aXZlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byAwIik6CisgICAgICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCB3b3JrZXJzPS0xKQorCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCisgICAgZGVmIHRlc3RfY29tcGlsZV93b3JrZXJzX2NwdV9jb3VudChzZWxmLCBwb29sX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9vbF9tb2NrLmNhbGxfYXJnc1sxXVsnbWF4X3dvcmtlcnMnXSwgTm9uZSkKKworICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQorICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLmNvbXBpbGVfZmlsZScpCisgICAgZGVmIHRlc3RfY29tcGlsZV9vbmVfd29ya2VyKHNlbGYsIGNvbXBpbGVfZmlsZV9tb2NrLCBwb29sX21vY2spOgorICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvb2xfbW9jay5jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2ZpbGVfbW9jay5jYWxsZWQpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJywgbmV3PU5vbmUpCisgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuY29tcGlsZV9maWxlJykKKyAgICBkZWYgdGVzdF9jb21waWxlX21pc3NpbmdfbXVsdGlwcm9jZXNzaW5nKHNlbGYsIGNvbXBpbGVfZmlsZV9tb2NrKToKKyAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZV9maWxlX21vY2suY2FsbGVkKQogCiBjbGFzcyBFbmNvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIklzc3VlIDY3MTY6IGNvbXBpbGVhbGwgc2hvdWxkIGVzY2FwZSBzb3VyY2UgY29kZSB3aGVuIHByaW50aW5nIGVycm9ycwpAQCAtMjAzLDExICsyMzgsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ0xpc3RpbmcgJywgcXVpZXQpCiAKICAgICAjIEVuc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNvbXBpbGVhbGwncyBDTEkgaXMgdG8gY3JlYXRlCi0gICAgIyBQRVAgMzE0NyBweWMvcHlvIGZpbGVzLgorICAgICMgUEVQIDMxNDcvUEVQIDQ4OCBweWMgZmlsZXMuCiAgICAgZm9yIG5hbWUsIGV4dCwgc3dpdGNoIGluIFsKICAgICAgICAgKCdub3JtYWwnLCAncHljJywgW10pLAotICAgICAgICAoJ29wdGltaXplJywgJ3B5bycsIFsnLU8nXSksCi0gICAgICAgICgnZG91Ymxlb3B0aW1pemUnLCAncHlvJywgWyctT08nXSksCisgICAgICAgICgnb3B0aW1pemUnLCAnb3B0LTEucHljJywgWyctTyddKSwKKyAgICAgICAgKCdkb3VibGVvcHRpbWl6ZScsICdvcHQtMi5weWMnLCBbJy1PTyddKSwKICAgICBdOgogICAgICAgICBkZWYgZihzZWxmLCBleHQ9ZXh0LCBzd2l0Y2g9c3dpdGNoKToKICAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygqKHN3aXRjaCArCkBAIC0yMjQsMTMgKzI1OSwxMiBAQAogCiAgICAgZGVmIHRlc3RfbGVnYWN5X3BhdGhzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IHdpdGggdGhlIHByb3BlciBzd2l0Y2gsIGNvbXBpbGVhbGwgbGVhdmVzIGxlZ2FjeQotICAgICAgICAjIHB5Yy9weW8gZmlsZXMsIGFuZCBubyBfX3B5Y2FjaGVfXyBkaXJlY3RvcnkuCisgICAgICAgICMgcHljIGZpbGVzLCBhbmQgbm8gX19weWNhY2hlX18gZGlyZWN0b3J5LgogICAgICAgICBzZWxmLmFzc2VydFJ1bk9LKCctYicsICctcScsIHNlbGYucGtnZGlyKQogICAgICAgICAjIFZlcmlmeSB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGNvbnRlbnRzLgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYucGtnZGlyX2NhY2hlZGlyKSkKLSAgICAgICAgb3B0ID0gJ2MnIGlmIF9fZGVidWdfXyBlbHNlICdvJwotICAgICAgICBleHBlY3RlZCA9IHNvcnRlZChbJ19faW5pdF9fLnB5JywgJ19faW5pdF9fLnB5JyArIG9wdCwgJ2Jhci5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyLnB5JyArIG9wdF0pCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKFsnX19pbml0X18ucHknLCAnX19pbml0X18ucHljJywgJ2Jhci5weScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyLnB5YyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChvcy5saXN0ZGlyKHNlbGYucGtnZGlyKSksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfcnVucyhzZWxmKToKQEAgLTI3MywxMiArMzA3LDUzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3ViaW5pdGZuKQogICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGhhbWZuKQogCisgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgorICAgICAgICBzdWJwYWNrYWdlID0gb3MucGF0aC5qb2luKHNlbGYucGtnZGlyLCAnc3BhbScpCisgICAgICAgIHN1YnBhY2thZ2UyID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UsICdoYW0nKQorICAgICAgICBzdWJwYWNrYWdlMyA9IG9zLnBhdGguam9pbihzdWJwYWNrYWdlMiwgJ2VnZ3MnKQorICAgICAgICBmb3IgcGtnIGluIChzdWJwYWNrYWdlLCBzdWJwYWNrYWdlMiwgc3VicGFja2FnZTMpOgorICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5tYWtlX3BrZyhwa2cpCisKKyAgICAgICAgc3ViaW5pdGZuID0gb3MucGF0aC5qb2luKHN1YnBhY2thZ2UsICdfX2luaXRfXy5weScpCisgICAgICAgIGhhbWZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlLCAnaGFtJywgJycpCisgICAgICAgIHNwYW1mbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQoc3VicGFja2FnZTIsICdzcGFtJywgJycpCisgICAgICAgIGVnZ2ZuID0gc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzdWJwYWNrYWdlMywgJ2VnZycsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDAnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc3VicGFja2FnZSwgJ19fcHljYWNoZV9fJykpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDEnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoc3BhbWZuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDInLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3BhbWZuKQorICAgICAgICBzZWxmLmFzc2VydE5vdENvbXBpbGVkKGVnZ2ZuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy1yIDUnLCBzZWxmLnBrZ2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRDb21waWxlZChzdWJpbml0Zm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoaGFtZm4pCisgICAgICAgIHNlbGYuYXNzZXJ0Q29tcGlsZWQoc3BhbWZuKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGVnZ2ZuKQorCiAgICAgZGVmIHRlc3RfcXVpZXQoc2VsZik6CiAgICAgICAgIG5vaXN5ID0gc2VsZi5hc3NlcnRSdW5PSyhzZWxmLnBrZ2RpcikKICAgICAgICAgcXVpZXQgPSBzZWxmLmFzc2VydFJ1bk9LKCctcScsIHNlbGYucGtnZGlyKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGInJywgbm9pc3kpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBxdWlldCkKIAorICAgIGRlZiB0ZXN0X3NpbGVudChzZWxmKToKKyAgICAgICAgc2NyaXB0X2hlbHBlci5tYWtlX3NjcmlwdChzZWxmLnBrZ2RpciwgJ2NydW5jaHlmcm9nJywgJ2JhZChzeW50YXgnKQorICAgICAgICBfLCBxdWlldCwgXyA9IHNlbGYuYXNzZXJ0UnVuTm90T0soJy1xJywgc2VsZi5wa2dkaXIpCisgICAgICAgIF8sIHNpbGVudCwgXyA9IHNlbGYuYXNzZXJ0UnVuTm90T0soJy1xcScsIHNlbGYucGtnZGlyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGInJywgcXVpZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzaWxlbnQpCisKICAgICBkZWYgdGVzdF9yZWdleHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UnVuT0soJy1xJywgJy14JywgcidiYVteXFwvXSokJywgc2VsZi5wa2dkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29tcGlsZWQoc2VsZi5iYXJmbikKQEAgLTM3OSw2ICs0NTQsMjkgQEAKICAgICAgICAgb3V0ID0gc2VsZi5hc3NlcnRSdW5PSygnYmFkZmlsZW5hbWUnKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgYiJDYW4ndCBsaXN0ICdiYWRmaWxlbmFtZSciKQogCisgICAgQHNraXBVbmxlc3MoX2hhdmVfbXVsdGlwcm9jZXNzaW5nLCAicmVxdWlyZXMgbXVsdGlwcm9jZXNzaW5nIikKKyAgICBkZWYgdGVzdF93b3JrZXJzKHNlbGYpOgorICAgICAgICBiYXIyZm4gPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHNlbGYuZGlyZWN0b3J5LCAnYmFyMicsICcnKQorICAgICAgICBmaWxlcyA9IFtdCisgICAgICAgIGZvciBzdWZmaXggaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdmb297fScuZm9ybWF0KHN1ZmZpeCkpCisgICAgICAgICAgICBvcy5ta2Rpcihwa2dkaXIpCisgICAgICAgICAgICBmbiA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQocGtnZGlyLCAnX19pbml0X18nLCAnJykKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHBrZ2RpciwgJ2JhcjInLCAnJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSdW5PSyhzZWxmLmRpcmVjdG9yeSwgJy1qJywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGJhcjJmbikKKyAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydENvbXBpbGVkKGZpbGUpCisKKyAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5jb21waWxlX2RpcicpCisgICAgZGVmIHRlc3Rfd29ya2Vyc19hdmFpbGFibGVfY29yZXMoc2VsZiwgY29tcGlsZV9kaXIpOgorICAgICAgICB3aXRoIG1vY2sucGF0Y2goInN5cy5hcmd2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldz1bc3lzLmV4ZWN1dGFibGUsIHNlbGYuZGlyZWN0b3J5LCAiLWowIl0pOgorICAgICAgICAgICAgY29tcGlsZWFsbC5tYWluKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlX2Rpci5jYWxsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVfZGlyLmNhbGxfYXJnc1stMV1bJ3dvcmtlcnMnXSwgTm9uZSkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCBjNzRiMmNhLi5iOTk3NDBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtOSw4ICs5LDkgQEAKICMgd2l0aG91dCB0aHJlYWQgc3VwcG9ydC4KIHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB0aW1lCkBAIC00MjUsNiArNDI2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhbGUgcmVmZXJlbmNlIG5vdCBjb2xsZWN0ZWQgd2l0aGluIHRpbWVvdXQuIikKIAorICAgIGRlZiB0ZXN0X21heF93b3JrZXJzX25lZ2F0aXZlKHNlbGYpOgorICAgICAgICBmb3IgbnVtYmVyIGluICgwLCAtMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4X3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbiAwIik6CisgICAgICAgICAgICAgICAgc2VsZi5leGVjdXRvcl90eXBlKG1heF93b3JrZXJzPW51bWJlcikKKwogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3JUZXN0KFRocmVhZFBvb2xNaXhpbiwgRXhlY3V0b3JUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbWFwX3N1Ym1pdHNfd2l0aG91dF9pdGVyYXRpb24oc2VsZik6CkBAIC00MzcsNiArNDQ1LDExIEBACiAgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24od2FpdD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmluaXNoZWQsIHJhbmdlKDEwKSkKIAorICAgIGRlZiB0ZXN0X2RlZmF1bHRfd29ya2VycyhzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBzZWxmLmV4ZWN1dG9yX3R5cGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4ZWN1dG9yLl9tYXhfd29ya2VycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAob3MuY3B1X2NvdW50KCkgb3IgMSkgKiA1KQorCiAKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3JUZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2tpbGxlZF9jaGlsZChzZWxmKToKQEAgLTQ1MSw2ICs0NjQsNDggQEAKICAgICAgICAgIyBTdWJtaXR0aW5nIG90aGVyIGpvYnMgZmFpbHMgYXMgd2VsbC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnJva2VuUHJvY2Vzc1Bvb2wsIHNlbGYuZXhlY3V0b3Iuc3VibWl0LCBwb3csIDIsIDgpCiAKKyAgICBkZWYgdGVzdF9tYXBfY2h1bmtzaXplKHNlbGYpOgorICAgICAgICBkZWYgYmFkX21hcCgpOgorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9LTEpKQorCisgICAgICAgIHJlZiA9IGxpc3QobWFwKHBvdywgcmFuZ2UoNDApLCByYW5nZSg0MCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NikpLAorICAgICAgICAgICAgcmVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChzZWxmLmV4ZWN1dG9yLm1hcChwb3csIHJhbmdlKDQwKSwgcmFuZ2UoNDApLCBjaHVua3NpemU9NTApKSwKKyAgICAgICAgICAgIHJlZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3Qoc2VsZi5leGVjdXRvci5tYXAocG93LCByYW5nZSg0MCksIHJhbmdlKDQwKSwgY2h1bmtzaXplPTQwKSksCisgICAgICAgICAgICByZWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJhZF9tYXApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfdHJhY2ViYWNrKGNscyk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigxMjMpICMgc29tZSBjb21tZW50CisKKyAgICBkZWYgdGVzdF90cmFjZWJhY2soc2VsZik6CisgICAgICAgICMgV2Ugd2FudCBlbnN1cmUgdGhhdCB0aGUgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MgaXMKKyAgICAgICAgIyBjb250YWluZWQgaW4gdGhlIHRyYWNlYmFjayByYWlzZWQgaW4gdGhlIG1haW4gcHJvY2Vzcy4KKyAgICAgICAgZnV0dXJlID0gc2VsZi5leGVjdXRvci5zdWJtaXQoc2VsZi5fdGVzdF90cmFjZWJhY2spCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjbToKKyAgICAgICAgICAgIGZ1dHVyZS5yZXN1bHQoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZXhjKSwgUnVudGltZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5hcmdzLCAoMTIzLCkpCisgICAgICAgIGNhdXNlID0gZXhjLl9fY2F1c2VfXworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoY2F1c2UpLCBmdXR1cmVzLnByb2Nlc3MuX1JlbW90ZVRyYWNlYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRJbigncmFpc2UgUnVudGltZUVycm9yKDEyMykgIyBzb21lIGNvbW1lbnQnLCBjYXVzZS50YikKKworICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBmMToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBleGMKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdyYWlzZSBSdW50aW1lRXJyb3IoMTIzKSAjIHNvbWUgY29tbWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgZjEuZ2V0dmFsdWUoKSkKKwogCiBjbGFzcyBGdXR1cmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9uZV9jYWxsYmFja193aXRoX3Jlc3VsdChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggM2IwMzUwMC4uNzFhOGYzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgcmV0dXJuIGUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgZXhjZXB0aW9uIHR5cGUgJXMuJXMiCi0gICAgICAgICAgICAgICAgICAgICAgJSAoZXhjLl9fbW9kdWxlX18sIGV4Yy5fX25hbWVfXykpCisgICAgICAgICAgICAgICAgICAgICAgJSAoZXhjLl9fbW9kdWxlX18sIGV4Yy5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3RfYm9vbGVhbihzZWxmKToKICAgICAgICAgY2YgPSBzZWxmLmZyb21zdHJpbmcoCkBAIC0xNTg1LDYgKzE1ODUsMzQgQEAKICAgICAgICAgIiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIocGFyc2VyWydzZWN0aW9uJ10pLCAnPFNlY3Rpb246IHNlY3Rpb24+JykKIAorICAgIGRlZiB0ZXN0X2luY29uc2lzdGVudF9jb252ZXJ0ZXJzX3N0YXRlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgaW1wb3J0IGRlY2ltYWwKKyAgICAgICAgcGFyc2VyLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXSA9IGRlY2ltYWwuRGVjaW1hbAorICAgICAgICBwYXJzZXIucmVhZF9zdHJpbmcoIiIiCisgICAgICAgICAgICBbczFdCisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgICAgICBbczJdCisgICAgICAgICAgICB0d28gPSAyCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5nZXRkZWNpbWFsKCdzMScsICdvbmUnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuZ2V0ZGVjaW1hbCgnczInLCAndHdvJyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyWydzMSddLmdldGRlY2ltYWwoJ29uZScpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlclsnczInXS5nZXRkZWNpbWFsKCd0d28nKSwgMikKKyAgICAgICAgZGVsIHBhcnNlci5nZXRkZWNpbWFsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldGRlY2ltYWwoJ3MxJywgJ29uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RlY2ltYWwnLCBwYXJzZXIuY29udmVydGVycykKKyAgICAgICAgZGVsIHBhcnNlci5jb252ZXJ0ZXJzWydkZWNpbWFsJ10KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZGVjaW1hbCcsIHBhcnNlci5jb252ZXJ0ZXJzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRkZWNpbWFsKCdzMScsICdvbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlclsnczEnXS5nZXRkZWNpbWFsKCdvbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlclsnczInXS5nZXRkZWNpbWFsKCd0d28nKQorCiAKIGNsYXNzIEV4Y2VwdGlvblBpY2tsaW5nVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciBpc3N1ZSAjMTM3NjA6IENvbmZpZ1BhcnNlciBleGNlcHRpb25zIGFyZSBub3QgcGlja2xhYmxlLiIiIgpAQCAtMTc3Nyw1ICsxODA1LDI1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2szJ10sICd2MzsjLy9zdGlsbCB2MyMgYW5kIHN0aWxsIHYzJykKIAogCitjbGFzcyBFeGNlcHRpb25Db250ZXh0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIiBUZXN0IHRoYXQgaW1wbGVtZW50YXRpb24gZGV0YWlscyBkb2Vzbid0IGxlYWsKKyAgICB0aHJvdWdoIHJhaXNpbmcgZXhjZXB0aW9ucy4gIiIiCisKKyAgICBkZWYgdGVzdF9nZXRfYmFzaWNfaW50ZXJwb2xhdGlvbihzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgIG15X2RpcjogJShob21lX2RpcjEpcy9sdW1iZXJqYWNrCisgICAgICAgIG15X3BpY3R1cmVzOiAlKG15X2RpcilzL1BpY3R1cmVzCisgICAgICAgICIiIikKKyAgICAgICAgY20gPSBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvcikKKyAgICAgICAgd2l0aCBjbToKKyAgICAgICAgICAgIHBhcnNlci5nZXQoJ1BhdGhzJywgJ215X2RpcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfZ2V0X2V4dGVuZGVkX2ludGVycG9sYXRpb24oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoCisgICAgICAgICAgaW50ZXJwb2xhdGlvbj1jb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uKCkpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgIG15X2RpcjogJHtob21lX2RpcjF9L2x1bWJlcmphY2sKKyAgICAgICAgbXlfcGljdHVyZXM6ICR7bXlfZGlyfS9QaWN0dXJlcworICAgICAgICAiIiIpCisgICAgICAgIGNtID0gc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IpCisgICAgICAgIHdpdGggY206CisgICAgICAgICAgICBwYXJzZXIuZ2V0KCdQYXRocycsICdteV9kaXInKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfb3B0aW9ucyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHBhcnNlci5yZWFkX3N0cmluZygiIiIKKyAgICAgICAgW1BhdGhzXQorICAgICAgICBob21lX2RpcjogL1VzZXJzCisgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb25maWdwYXJzZXIuTm9TZWN0aW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLm9wdGlvbnMoJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfc2VjdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vU2VjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbmZpZy5zZXQoJ1NlY3Rpb24xJywgJ2FuX2ludCcsICcxNScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fLCBUcnVlKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX29wdGlvbihzZWxmKToKKyAgICAgICAgY29uZmlnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29uZmlncGFyc2VyLk5vU2VjdGlvbkVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbmZpZy5yZW1vdmVfb3B0aW9uKCdTZWN0aW9uMScsICdhbl9pbnQnKQorICAgICAgICBzZWxmLmFzc2VydElzKGNtLmV4Y2VwdGlvbi5fX3N1cHByZXNzX2NvbnRleHRfXywgVHJ1ZSkKKworCitjbGFzcyBDb252ZXJ0ZXJzVGVzdENhc2UoQmFzaWNUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkludHJvZHVjZWQgaW4gMy41LCBpc3N1ZSAjMTgxNTkuIiIiCisKKyAgICBjb25maWdfY2xhc3MgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyCisKKyAgICBkZWYgbmV3Y29uZmlnKHNlbGYsIGRlZmF1bHRzPU5vbmUpOgorICAgICAgICBpbnN0YW5jZSA9IHN1cGVyKCkubmV3Y29uZmlnKGRlZmF1bHRzPWRlZmF1bHRzKQorICAgICAgICBpbnN0YW5jZS5jb252ZXJ0ZXJzWydsaXN0J10gPSBsYW1iZGEgdjogW2Uuc3RyaXAoKSBmb3IgZSBpbiB2LnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLnN0cmlwKCldCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisgICAgZGVmIHRlc3RfY29udmVydGVycyhzZWxmKToKKyAgICAgICAgY2ZnID0gc2VsZi5uZXdjb25maWcoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdib29sZWFuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpc3QnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2ludCddKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjZmcuY29udmVydGVyc1snZmxvYXQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2xpc3QnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmNvbnZlcnRlcnNbJyddID0gbGFtYmRhIHY6IHYKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNmZy5jb252ZXJ0ZXJzW05vbmVdID0gbGFtYmRhIHY6IHYKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbc10KKyAgICAgICAgc3RyID0gc3RyaW5nCisgICAgICAgIGludCA9IDEKKyAgICAgICAgZmxvYXQgPSAwLjUKKyAgICAgICAgbGlzdCA9IGEgYiBjIGQgZSBmIGcKKyAgICAgICAgYm9vbCA9IHllcworICAgICAgICAiIiIpCisgICAgICAgIHMgPSBjZmdbJ3MnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ3N0ciddLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydpbnQnXSwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2Zsb2F0J10sICcwLjUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2xpc3QnXSwgJ2EgYiBjIGQgZSBmIGcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2Jvb2wnXSwgJ3llcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdzdHInKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdpbnQnKSwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXQoJ3MnLCAnZmxvYXQnKSwgJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdsaXN0JyksICdhIGIgYyBkIGUgZiBnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0KCdzJywgJ2Jvb2wnKSwgJ3llcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldCgncycsICdzdHInKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGludCgncycsICdpbnQnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0ZmxvYXQoJ3MnLCAnZmxvYXQnKSwgMC41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsaXN0KCdzJywgJ2xpc3QnKSwgWydhJywgJ2InLCAnYycsICdkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZScsICdmJywgJ2cnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0Ym9vbGVhbigncycsICdib29sJyksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXQoJ3N0cicpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldGludCgnaW50JyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRmbG9hdCgnZmxvYXQnKSwgMC41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0bGlzdCgnbGlzdCcpLCBbJ2EnLCAnYicsICdjJywgJ2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2UnLCAnZicsICdnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXRib29sZWFuKCdib29sJyksIFRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgY2ZnLmdldGRlY2ltYWwoJ3MnLCAnZmxvYXQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHMuZ2V0ZGVjaW1hbCgnZmxvYXQnKQorICAgICAgICBpbXBvcnQgZGVjaW1hbAorICAgICAgICBjZmcuY29udmVydGVyc1snZGVjaW1hbCddID0gZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2RlY2ltYWwnLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA1KQorICAgICAgICBkZWMwXzUgPSBkZWNpbWFsLkRlY2ltYWwoJzAuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGRlY2ltYWwoJ3MnLCAnZmxvYXQnKSwgZGVjMF81KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0ZGVjaW1hbCgnZmxvYXQnKSwgZGVjMF81KQorICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJ2RlY2ltYWwnXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdkZWNpbWFsJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNmZy5jb252ZXJ0ZXJzKSwgNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBjZmcuZ2V0ZGVjaW1hbCgncycsICdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcy5nZXRkZWNpbWFsKCdmbG9hdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGNmZy5jb252ZXJ0ZXJzWydkZWNpbWFsJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgY2ZnLmNvbnZlcnRlcnNbJyddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGNmZy5jb252ZXJ0ZXJzW05vbmVdCisKKworY2xhc3MgQmxhdGFudE92ZXJyaWRlQ29udmVydGVyc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGF0IGlmIHNvbWVib2R5IG92ZXJyb2RlIGEgZ2V0Ym9vbGVhbigpPyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGluCisgICAgdGhpcyBjYXNlIHRoZSBhdXRvbWF0aWMgY29udmVydGVycyBkbyBub3Qga2ljayBpbi4iIiIKKworICAgIGNvbmZpZyA9ICIiIgorICAgICAgICBbb25lXQorICAgICAgICBvbmUgPSBmYWxzZQorICAgICAgICB0d28gPSBmYWxzZQorICAgICAgICB0aHJlZSA9IGxvbmcgc3Rvcnkgc2hvcnQKKworICAgICAgICBbdHdvXQorICAgICAgICBvbmUgPSBmYWxzZQorICAgICAgICB0d28gPSBmYWxzZQorICAgICAgICB0aHJlZSA9IGZvdXIKKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRlcnNfYXRfaW5pdChzZWxmKToKKyAgICAgICAgY2ZnID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcihjb252ZXJ0ZXJzPXsnbGVuJzogbGVufSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLl90ZXN0X2xlbihjZmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGNmZy5jb252ZXJ0ZXJzWydsZW4nXSkKKworICAgIGRlZiB0ZXN0X2luaGVyaXRhbmNlKHNlbGYpOgorICAgICAgICBjbGFzcyBTdHJhbmdlQ29uZmlnUGFyc2VyKGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIpOgorICAgICAgICAgICAgZ2V0dHlzYnVyZyA9ICdhIGhpc3RvcmljIGJvcm91Z2ggaW4gc291dGggY2VudHJhbCBQZW5uc3lsdmFuaWEnCisKKyAgICAgICAgICAgIGRlZiBnZXRib29sZWFuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1jb25maWdwYXJzZXIuX1VOU0VUKToKKyAgICAgICAgICAgICAgICBpZiBzZWN0aW9uID09IG9wdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRib29sZWFuKHNlY3Rpb24sIG9wdGlvbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s9ZmFsbGJhY2spCisgICAgICAgICAgICBkZWYgZ2V0bGVuKHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgKiwgcmF3PUZhbHNlLCB2YXJzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrPWNvbmZpZ3BhcnNlci5fVU5TRVQpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfY29udihzZWN0aW9uLCBvcHRpb24sIGxlbiwgcmF3PXJhdywgdmFycz12YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz1mYWxsYmFjaykKKworICAgICAgICBjZmcgPSBTdHJhbmdlQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLl90ZXN0X2xlbihjZmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydsZW4nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAnb25lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICdvbmUnKSkKKyAgICAgICAgY2ZnLmNvbnZlcnRlcnNbJ2Jvb2xlYW4nXSA9IGNmZy5fY29udmVydF90b19ib29sZWFuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICdvbmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ3R3bycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICdvbmUnKSkKKworICAgIGRlZiBfdGVzdF9sZW4oc2VsZiwgY2ZnKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2ZnLmNvbnZlcnRlcnMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdib29sZWFuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xlbicsIGNmZy5jb252ZXJ0ZXJzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCd0eXNidXJnJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydpbnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Zsb2F0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndGhyZWUnKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ29uZScpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICd0d28nKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndGhyZWUnKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAnZm91cicsIGZhbGxiYWNrPTApLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNvbmZpZ3BhcnNlci5Ob09wdGlvbkVycm9yKToKKyAgICAgICAgICAgIGNmZy5nZXRsZW4oJ3R3bycsICdmb3VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWydvbmUnXS5nZXRsZW4oJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1snb25lJ10uZ2V0bGVuKCd0aHJlZScpLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ3R3bycpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCd0aHJlZScpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdmb3VyJywgMCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ2ZvdXInKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIGNmZyA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQorICAgICAgICBjZmcuZ2V0Ym9vbGVhbiA9IGxhbWJkYSBzZWN0aW9uLCBvcHRpb246IFRydWUKKyAgICAgICAgY2ZnLmdldGxlbiA9IGxhbWJkYSBzZWN0aW9uLCBvcHRpb246IGxlbihjZmdbc2VjdGlvbl1bb3B0aW9uXSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKHNlbGYuY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjZmcuY29udmVydGVycyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Jvb2xlYW4nLCBjZmcuY29udmVydGVycykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGVuJywgY2ZnLmNvbnZlcnRlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydpbnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY2ZnLmNvbnZlcnRlcnNbJ2Zsb2F0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNmZy5jb252ZXJ0ZXJzWydib29sZWFuJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2ZnLmdldGJvb2xlYW4oJ3R3bycsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNmZy5nZXRib29sZWFuKCdvbmUnLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBjZmcuY29udmVydGVyc1snYm9vbGVhbiddID0gY2ZnLl9jb252ZXJ0X3RvX2Jvb2xlYW4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbignb25lJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNmZy5nZXRib29sZWFuKCd0d28nLCAndHdvJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2ZnLmdldGJvb2xlYW4oJ29uZScsICd0d28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjZmcuZ2V0Ym9vbGVhbigndHdvJywgJ29uZScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ29uZScsICdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCdvbmUnLCAndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbignb25lJywgJ3RocmVlJyksIDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZy5nZXRsZW4oJ3R3bycsICdvbmUnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmcuZ2V0bGVuKCd0d28nLCAndHdvJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnLmdldGxlbigndHdvJywgJ3RocmVlJyksIDQpCisgICAgICAgICMgSWYgYSBnZXR0ZXIgaW1wbCBpcyBhc3NpZ25lZCBzdHJhaWdodCB0byB0aGUgaW5zdGFuY2UsIGl0IHdvbid0CisgICAgICAgICMgYmUgYXZhaWxhYmxlIG9uIHRoZSBzZWN0aW9uIHByb3hpZXMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ29uZSddLmdldGxlbignb25lJyksIDUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CmluZGV4IGE2NjdhMTYuLjNjNmJkZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogCkBAIC04Niw4ICs4NSw1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGFpbmVyID09IGNvbnRhaW5lcikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RDb250YWlucykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDhmODQ5YWUuLjc4NzQxZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTgzLDYgKzgzLDQyIEBACiAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcig5OTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGUsIFsxLCA0MiwgOTk5XSkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX2V4Y2VwdF9zdG9waXRlcihzZWxmKToKKyAgICAgICAgc3RvcF9leGMgPSBTdG9wSXRlcmF0aW9uKCdzcGFtJykKKyAgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgIGRlZiB3b29ob28oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgICAgIHdpdGggd29vaG9vKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN0b3BfZXhjCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4LCBzdG9wX2V4YykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgc3VwcHJlc3NlZCcpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0bWFuYWdlcl9leGNlcHRfcGVwNDc5KHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiXAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3Jfc3RvcAorZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRtYW5hZ2VyCitkZWYgd29vaG9vKCk6CisgICAgeWllbGQKKyIiIgorICAgICAgICBsb2NhbHMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIGxvY2FscywgbG9jYWxzKQorICAgICAgICB3b29ob28gPSBsb2NhbHNbJ3dvb2hvbyddCisKKyAgICAgICAgc3RvcF9leGMgPSBTdG9wSXRlcmF0aW9uKCdzcGFtJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCB3b29ob28oKToKKyAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleCwgc3RvcF9leGMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIHN1cHByZXNzZWQnKQorCiAgICAgZGVmIF9jcmVhdGVfY29udGV4dG1hbmFnZXJfYXR0cmlicyhzZWxmKToKICAgICAgICAgZGVmIGF0dHJpYnMoKiprdyk6CiAgICAgICAgICAgICBkZWYgZGVjb3JhdGUoZnVuYyk6CkBAIC03MjYsNjAgKzc2Miw3NiBAQAogICAgICAgICBzdGFjay5wdXNoKGNtKQogICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIGNtKQogCi1jbGFzcyBUZXN0UmVkaXJlY3RTdGRvdXQodW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBUZXN0UmVkaXJlY3RTdHJlYW06CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSBOb25lCisgICAgb3JpZ19zdHJlYW0gPSBOb25lCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19kb2NzdHJpbmdzCiAgICAgZGVmIHRlc3RfaW5zdGFuY2VfZG9jcyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxOTMzMDogZW5zdXJlIGNvbnRleHQgbWFuYWdlciBpbnN0YW5jZXMgaGF2ZSBnb29kIGRvY3N0cmluZ3MKLSAgICAgICAgY21fZG9jc3RyaW5nID0gcmVkaXJlY3Rfc3Rkb3V0Ll9fZG9jX18KLSAgICAgICAgb2JqID0gcmVkaXJlY3Rfc3Rkb3V0KE5vbmUpCisgICAgICAgIGNtX2RvY3N0cmluZyA9IHNlbGYucmVkaXJlY3Rfc3RyZWFtLl9fZG9jX18KKyAgICAgICAgb2JqID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0oTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19kb2NfXywgY21fZG9jc3RyaW5nKQogCiAgICAgZGVmIHRlc3Rfbm9fcmVkaXJlY3RfaW5faW5pdChzZWxmKToKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0Ci0gICAgICAgIHJlZGlyZWN0X3N0ZG91dChOb25lKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQorICAgICAgICBzZWxmLnJlZGlyZWN0X3N0cmVhbShOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAKICAgICBkZWYgdGVzdF9yZWRpcmVjdF90b19zdHJpbmdfaW8oc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCiAgICAgICAgIG1zZyA9ICJDb25zaWRlciBhbiBBUEkgbGlrZSBoZWxwKCksIHdoaWNoIHByaW50cyBkaXJlY3RseSB0byBzdGRvdXQiCi0gICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICB3aXRoIHJlZGlyZWN0X3N0ZG91dChmKToKLSAgICAgICAgICAgIHByaW50KG1zZykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMuc3Rkb3V0LCBvcmlnX3N0ZG91dCkKKyAgICAgICAgb3JpZ19zdGRvdXQgPSBnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkKKyAgICAgICAgd2l0aCBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKToKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pLCBvcmlnX3N0ZG91dCkKICAgICAgICAgcyA9IGYuZ2V0dmFsdWUoKS5zdHJpcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgbXNnKQogCiAgICAgZGVmIHRlc3RfZW50ZXJfcmVzdWx0X2lzX3RhcmdldChzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgd2l0aCByZWRpcmVjdF9zdGRvdXQoZikgYXMgZW50ZXJfcmVzdWx0OgorICAgICAgICB3aXRoIHNlbGYucmVkaXJlY3Rfc3RyZWFtKGYpIGFzIGVudGVyX3Jlc3VsdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZW50ZXJfcmVzdWx0LCBmKQogCiAgICAgZGVmIHRlc3RfY21faXNfcmV1c2FibGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHdyaXRlX3RvX2YgPSByZWRpcmVjdF9zdGRvdXQoZikKLSAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgIHdyaXRlX3RvX2YgPSBzZWxmLnJlZGlyZWN0X3N0cmVhbShmKQorICAgICAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKQogICAgICAgICB3aXRoIHdyaXRlX3RvX2Y6Ci0gICAgICAgICAgICBwcmludCgiSGVsbG8iLCBlbmQ9IiAiKQorICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIiwgZmlsZT1nZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkpCiAgICAgICAgIHdpdGggd3JpdGVfdG9fZjoKLSAgICAgICAgICAgIHByaW50KCJXb3JsZCEiKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICAgICAgcHJpbnQoIldvcmxkISIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQorICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSwgb3JpZ19zdGRvdXQpCiAgICAgICAgIHMgPSBmLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCAiSGVsbG8gV29ybGQhXG4iKQogCiAgICAgZGVmIHRlc3RfY21faXNfcmVlbnRyYW50KHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3cml0ZV90b19mID0gcmVkaXJlY3Rfc3Rkb3V0KGYpCi0gICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICB3cml0ZV90b19mID0gc2VsZi5yZWRpcmVjdF9zdHJlYW0oZikKKyAgICAgICAgb3JpZ19zdGRvdXQgPSBnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSkKICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgcHJpbnQoIkhlbGxvIiwgZW5kPSIgIikKKyAgICAgICAgICAgIHByaW50KCJIZWxsbyIsIGVuZD0iICIsIGZpbGU9Z2V0YXR0cihzeXMsIHNlbGYub3JpZ19zdHJlYW0pKQogICAgICAgICAgICAgd2l0aCB3cml0ZV90b19mOgotICAgICAgICAgICAgICAgIHByaW50KCJXb3JsZCEiKQotICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5zdGRvdXQsIG9yaWdfc3Rkb3V0KQorICAgICAgICAgICAgICAgIHByaW50KCJXb3JsZCEiLCBmaWxlPWdldGF0dHIoc3lzLCBzZWxmLm9yaWdfc3RyZWFtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKHN5cywgc2VsZi5vcmlnX3N0cmVhbSksIG9yaWdfc3Rkb3V0KQogICAgICAgICBzID0gZi5nZXR2YWx1ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIkhlbGxvIFdvcmxkIVxuIikKIAogCitjbGFzcyBUZXN0UmVkaXJlY3RTdGRvdXQoVGVzdFJlZGlyZWN0U3RyZWFtLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICByZWRpcmVjdF9zdHJlYW0gPSByZWRpcmVjdF9zdGRvdXQKKyAgICBvcmlnX3N0cmVhbSA9ICJzdGRvdXQiCisKKworY2xhc3MgVGVzdFJlZGlyZWN0U3RkZXJyKFRlc3RSZWRpcmVjdFN0cmVhbSwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcmVkaXJlY3Rfc3RyZWFtID0gcmVkaXJlY3Rfc3RkZXJyCisgICAgb3JpZ19zdHJlYW0gPSAic3RkZXJyIgorCisKIGNsYXNzIFRlc3RTdXBwcmVzcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19kb2NzdHJpbmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKaW5kZXggZWI4ZDE4Yy4uYjllYWRkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQpAQCAtNyw3ICs3LDYgQEAKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGxlLCBsdCwgZ2UsIGd0LCBlcSwgbmUKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogb3JkZXJfY29tcGFyaXNvbnMgPSBsZSwgbHQsIGdlLCBndAogZXF1YWxpdHlfY29tcGFyaXNvbnMgPSBlcSwgbmUKQEAgLTE0Niw2ICsxNDUsNDAgQEAKICAgICAgICAgeCA9IEMoNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weS5jb3B5KHgpLCB4KQogCisgICAgZGVmIHRlc3RfY29weV9pbnN0X2dldG5ld2FyZ3Moc2VsZik6CisgICAgICAgIGNsYXNzIEMoaW50KToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmID0gaW50Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgICAgIHNlbGYuZm9vID0gZm9vCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mb28sCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mb28gPT0gb3RoZXIuZm9vCisgICAgICAgIHggPSBDKDQyKQorICAgICAgICB5ID0gY29weS5jb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisKKyAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPTQyKQorICAgICAgICB5ID0gY29weS5jb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisKICAgICBkZWYgdGVzdF9jb3B5X2luc3RfZ2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vKToKQEAgLTI5NCw3ICszMjcsNyBAQAogICAgICAgICB4LmFwcGVuZCh4KQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBmb3Igb3AgaW4gY29tcGFyaXNvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXSwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oeSksIDEpCkBAIC0zMjEsNyArMzU0LDcgQEAKICAgICAgICAgeFswXS5hcHBlbmQoeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgZm9yIG9wIGluIGNvbXBhcmlzb25zOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcCwgeSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcCwgeSwgeCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHlbMF0sIHhbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXVswXSwgeSkKQEAgLTM0MCw3ICszNzMsNyBAQAogICAgICAgICBmb3Igb3AgaW4gb3JkZXJfY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBmb3Igb3AgaW4gZXF1YWxpdHlfY29tcGFyaXNvbnM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wLCB5LCB4KQogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVsnZm9vJ10sIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHkpLCAxKQpAQCAtNDA1LDYgKzQzOCw0MiBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQogCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRuZXdhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBDKGludCk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IGludC5fX25ld19fKGNscykKKyAgICAgICAgICAgICAgICBzZWxmLmZvbyA9IGZvbworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vLAorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZm9vID09IG90aGVyLmZvbworICAgICAgICB4ID0gQyhbNDJdKQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeSwgQykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5mb28sIHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKKworICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2luc3RfZ2V0bmV3YXJnc19leChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhpbnQpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCAqLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYgPSBpbnQuX19uZXdfXyhjbHMpCisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKSwgeydmb28nOiBzZWxmLmZvb30KKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZvbyA9PSBvdGhlci5mb28KKyAgICAgICAgeCA9IEMoZm9vPVs0Ml0pCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh5LCBDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LmZvbywgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeS5mb28sIHguZm9vKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF9nZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28pOgpAQCAtNzUyLDggKzgyMSw1IEBACiAKIGRlZiBnbG9iYWxfZm9vKHgsIHkpOiByZXR1cm4geCt5CiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q29weSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5cmVnLnB5CmluZGV4IGFiZTA3NDguLjUyZTg4N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weXJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHlyZWcucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgY29weXJlZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgRXh0ZW5zaW9uU2F2ZXIKIAogY2xhc3MgQzoKQEAgLTExMyw5ICsxMTIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvcHlSZWdUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBkZTg1NgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtMCwwICsxLDE0NzEgQEAKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworY2xhc3MgQXN5bmNZaWVsZEZyb206CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYub2JqID0gb2JqCisKKyAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICB5aWVsZCBmcm9tIHNlbGYub2JqCisKKworY2xhc3MgQXN5bmNZaWVsZDoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKworICAgIGRlZiBfX2F3YWl0X18oc2VsZik6CisgICAgICAgIHlpZWxkIHNlbGYudmFsdWUKKworCitkZWYgcnVuX2FzeW5jKGNvcm8pOgorICAgIGFzc2VydCBjb3JvLl9fY2xhc3NfXyBpbiB7dHlwZXMuR2VuZXJhdG9yVHlwZSwgdHlwZXMuQ29yb3V0aW5lVHlwZX0KKworICAgIGJ1ZmZlciA9IFtdCisgICAgcmVzdWx0ID0gTm9uZQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY29yby5zZW5kKE5vbmUpKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJlc3VsdCA9IGV4LmFyZ3NbMF0gaWYgZXguYXJncyBlbHNlIE5vbmUKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGJ1ZmZlciwgcmVzdWx0CisKKworZGVmIHJ1bl9hc3luY19fYXdhaXRfXyhjb3JvKToKKyAgICBhc3NlcnQgY29yby5fX2NsYXNzX18gaXMgdHlwZXMuQ29yb3V0aW5lVHlwZQorICAgIGF3ID0gY29yby5fX2F3YWl0X18oKQorICAgIGJ1ZmZlciA9IFtdCisgICAgcmVzdWx0ID0gTm9uZQorICAgIGkgPSAwCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgaSAlIDI6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChuZXh0KGF3KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChhdy5zZW5kKE5vbmUpKQorICAgICAgICAgICAgaSArPSAxCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmVzdWx0ID0gZXguYXJnc1swXSBpZiBleC5hcmdzIGVsc2UgTm9uZQorICAgICAgICAgICAgYnJlYWsKKyAgICByZXR1cm4gYnVmZmVyLCByZXN1bHQKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHNpbGVuY2VfY29yb19nYygpOgorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICB5aWVsZAorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisKK2NsYXNzIEFzeW5jQmFkU3ludGF4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAiJ2F3YWl0JyBvdXRzaWRlIik6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMxCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAiJ2F3YWl0JyBvdXRzaWRlIik6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMyCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzMKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF80KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNAorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM1CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgorCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM2CisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfNyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQgZnJvbScgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6CisKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzcKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF84KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgorICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jOAorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4Xzkoc2VsZik6CisgICAgICAgIG5zID0ge30KKyAgICAgICAgZm9yIGNvbXAgaW4geycoYXdhaXQgYSBmb3IgYSBpbiBiKScsCisgICAgICAgICAgICAgICAgICAgICAnW2F3YWl0IGEgZm9yIGEgaW4gYl0nLAorICAgICAgICAgICAgICAgICAgICAgJ3thd2FpdCBhIGZvciBhIGluIGJ9JywKKyAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYTogYyBmb3IgYSBpbiBifSd9OgorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdhd2FpdC4qaW4gY29tcHJlaGVuJyk6CisgICAgICAgICAgICAgICAgZXhlYygnYXN5bmMgZGVmIGYoKTpcblx0e30nLmZvcm1hdChjb21wKSwgbnMsIG5zKQorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEwKHNlbGYpOgorICAgICAgICAjIFRlc3RzIGZvciBpc3N1ZSAyNDYxOQorCisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKworICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgaWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBpZiAxOgorICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICAjIDQ1NgorICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworICAgICAgICAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJheigpOiBwYXNzCisgICAgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMgorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKworICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworCisgICAgICAgICAgICAgICAgICAgYXdhaXQgYQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisKKyAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6IHBhc3MKKworICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcGFzcworCisgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAyCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYXN5bmMoKTogcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGF3YWl0KCk6IHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIHJldHVybiBsYW1iZGEgYXN5bmM6IGF3YWl0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFtYmRhIGE6IGF3YWl0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImF3YWl0IGEoKSIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhPWF3YWl0IGIpOgorICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhOmF3YWl0IGIpOgorICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJheigpOgorICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oYT1hd2FpdCBiKToKKyAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGFzeW5jKToKKyAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWYgYmF6KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MgorCisgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZiBiYXooKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXG5hd2FpdCBmb28oKQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJheigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NcbmF3YWl0IGZvbygpCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorCisgICAgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisKKyAgICAgICAgICAgICAgICAgICBhd2FpdCBhCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzXG5hd2FpdCBhCisgICAgICAgICAgICAiIiJdCisKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCisKKyAgICBkZWYgdGVzdF9nb29kc3ludGF4XzEoc2VsZik6CisgICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5CisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDEwKSwgMTEpCisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorCisgICAgICAgIGRlZiBmb28oYXdhaXQpOgorCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKworICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKworICAgICAgICBkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICIiInNwYW0iIiIKKyAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogXAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICMgNDU2CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisKKyAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCisgICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDQyKSwgNDIpCisKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBnKCk6IHBhc3MKKyAgICAgICAgICAgIGF3YWl0IHoKKyAgICAgICAgYXdhaXQgPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZikpCisKKworY2xhc3MgVG9rZW5pemVyUmVnclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb25lbGluZV9kZWZzKHNlbGYpOgorICAgICAgICBidWYgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1MDApOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgnZGVmIGl7aX0oKTogcmV0dXJuIHtpfScuZm9ybWF0KGk9aSkpCisgICAgICAgIGJ1ZiA9ICdcbicuam9pbihidWYpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgNTAwIGNvbnNlcXVlbnQsIG9uZS1saW5lIGRlZnMgaXMgT0sKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGJ1ZiwgbnMsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydpNDk5J10oKSwgNDk5KQorCisgICAgICAgICMgVGVzdCB0aGF0IDUwMCBjb25zZXF1ZW50LCBvbmUtbGluZSBkZWZzICphbmQqCisgICAgICAgICMgb25lICdhc3luYyBkZWYnIGZvbGxvd2luZyB0aGVtIGlzIE9LCisgICAgICAgIGJ1ZiArPSAnXG5hc3luYyBkZWYgZm9vKCk6XG4gICAgcmV0dXJuJworICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoYnVmLCBucywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ2k0OTknXSgpLCA0OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24obnNbJ2ZvbyddKSkKKworCitjbGFzcyBDb3JvdXRpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2dlbl8xKHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6IHlpZWxkCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihnZW4sICdfX2F3YWl0X18nKSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIDEwCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLCB0eXBlcy5Db3JvdXRpbmVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbChmb28uX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChmb28uX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0dFTkVSQVRPUikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKGYuY3JfY29kZS5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShib29sKGYuY3JfY29kZS5jb19mbGFncyAmIGluc3BlY3QuQ09fR0VORVJBVE9SKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZiksIChbXSwgMTApKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jX19hd2FpdF9fKGZvbygpKSwgKFtdLCAxMCkpCisKKyAgICAgICAgZGVmIGJhcigpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChiYXIuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLCAiY29yb3V0aW5lIHJhaXNlZCBTdG9wSXRlcmF0aW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2Z1bmNfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZm9vKCkpLCAnXjxjb3JvdXRpbmUgb2JqZWN0LiogYXQgMHguKj4kJykKKworICAgIGRlZiB0ZXN0X2Z1bmNfNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIGNoZWNrID0gbGFtYmRhOiBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiJ2Nvcm91dGluZScgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIpCisKKyAgICAgICAgd2l0aCBjaGVjaygpOgorICAgICAgICAgICAgbGlzdChmb28oKSkKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICB0dXBsZShmb28oKSkKKworICAgICAgICB3aXRoIGNoZWNrKCk6CisgICAgICAgICAgICBzdW0oZm9vKCkpCisKKyAgICAgICAgd2l0aCBjaGVjaygpOgorICAgICAgICAgICAgaXRlcihmb28oKSkKKworICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBjaGVjaygpOgorICAgICAgICAgICAgZm9yIGkgaW4gZm9vKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCksIGNoZWNrKCk6CisgICAgICAgICAgICBbaSBmb3IgaSBpbiBmb28oKV0KKworICAgIGRlZiB0ZXN0X2Z1bmNfNShzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICB5aWVsZCAxCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgYmFyKCkKKworICAgICAgICBjaGVjayA9IGxhbWJkYTogc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIidjb3JvdXRpbmUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiKQorCisgICAgICAgIHdpdGggY2hlY2soKToKKyAgICAgICAgICAgIGZvciBlbCBpbiBmb28oKTogcGFzcworCisgICAgICAgICMgdGhlIGZvbGxvd2luZyBzaG91bGQgcGFzcyB3aXRob3V0IGFuIGVycm9yCisgICAgICAgIGZvciBlbCBpbiBiYXIoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWwsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2VsIGZvciBlbCBpbiBiYXIoKV0sIFsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShiYXIoKSksICgxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdGVyKGJhcigpKSksIDEpCisKKyAgICBkZWYgdGVzdF9mdW5jXzYoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGF3YWl0IGJhcigpCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZW5kKE5vbmUpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VuZChOb25lKSwgMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIGYuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfZnVuY183KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gMTAKKworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGJhcigpCisKKyAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgJ3lpZWxkIGZyb20nIGEgY29yb3V0aW5lIG9iamVjdCBpbiBhIG5vbi1jb3JvdXRpbmUgZ2VuZXJhdG9yIik6CisKKyAgICAgICAgICAgIGxpc3QoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9mdW5jXzgoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuICh5aWVsZCBmcm9tIGZvbygpKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhiYXIoKSksIChbXSwgJ3NwYW0nKSApCisKKyAgICBkZWYgdGVzdF9mdW5jXzkoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KAorICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsICJjb3JvdXRpbmUgJy4qdGVzdF9mdW5jXzkuKmZvbycgd2FzIG5ldmVyIGF3YWl0ZWQiKToKKworICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisKKyAgICBkZWYgdGVzdF9mdW5jXzEwKHNlbGYpOgorICAgICAgICBOID0gMAorCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgTgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGEgPSB5aWVsZAorICAgICAgICAgICAgICAgIHlpZWxkIChhICoqIDIpCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgTiArPSAxMDAKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBOICs9IDEKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBnZW4oKQorCisgICAgICAgIGNvcm8gPSBmb28oKQorICAgICAgICBhdyA9IGNvcm8uX19hd2FpdF9fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhhdywgaXRlcihhdykpCisgICAgICAgIG5leHQoYXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXcuc2VuZCgxMCksIDEwMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIDApCisgICAgICAgIGF3LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCAxKQorCisgICAgICAgIGNvcm8gPSBmb28oKQorICAgICAgICBhdyA9IGNvcm8uX19hd2FpdF9fKCkKKyAgICAgICAgbmV4dChhdykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBhdy50aHJvdyhaZXJvRGl2aXNpb25FcnJvciwgTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCAxMDIpCisKKyAgICBkZWYgdGVzdF9mdW5jXzExKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZnVuYygpOiBwYXNzCisgICAgICAgIGNvcm8gPSBmdW5jKCkKKyAgICAgICAgIyBUZXN0IHRoYXQgUHlDb3JvX1R5cGUgYW5kIF9QeUNvcm9XcmFwcGVyX1R5cGUgdHlwZXMgd2VyZSBwcm9wZXJseQorICAgICAgICAjIGluaXRpYWxpemVkCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19fYXdhaXRfXycsIGRpcihjb3JvKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pdGVyX18nLCBkaXIoY29yby5fX2F3YWl0X18oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Nvcm91dGluZV93cmFwcGVyJywgcmVwcihjb3JvLl9fYXdhaXRfXygpKSkKKyAgICAgICAgY29yby5jbG9zZSgpICMgYXZvaWQgUnVudGltZVdhcm5pbmcKKworICAgIGRlZiB0ZXN0X2Z1bmNfMTIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnKCk6CisgICAgICAgICAgICBpID0gbWUuc2VuZChOb25lKQorICAgICAgICAgICAgYXdhaXQgZm9vCisgICAgICAgIG1lID0gZygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcm91dGluZSBhbHJlYWR5IGV4ZWN1dGluZyIpOgorICAgICAgICAgICAgbWUuc2VuZChOb25lKQorCisgICAgZGVmIHRlc3RfZnVuY18xMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGcoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSBqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIik6CisKKyAgICAgICAgICAgIGcoKS5zZW5kKCdzcGFtJykKKworICAgIGRlZiB0ZXN0X2Z1bmNfMTQoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgYXN5bmMgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBnZW4oKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgYXdhaXQgZ2VuKCkKKyAgICAgICAgYyA9IGNvcm8oKQorICAgICAgICBjLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik6CisgICAgICAgICAgICBjLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NyX2F3YWl0KHNlbGYpOgorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBhKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lc3RhdGUoY29yb19iKSwgaW5zcGVjdC5DT1JPX1JVTk5JTkcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb3JvX2IuY3JfYXdhaXQpCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNvcm91dGluZXN0YXRlKGNvcm9fYiksIGluc3BlY3QuQ09ST19SVU5OSU5HKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorCisgICAgICAgIGFzeW5jIGRlZiBjKCk6CisgICAgICAgICAgICBhd2FpdCBhKCkKKworICAgICAgICBhc3luYyBkZWYgYigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorICAgICAgICAgICAgYXdhaXQgYygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb3JvX2IuY3JfYXdhaXQpCisKKyAgICAgICAgY29yb19iID0gYigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fQ1JFQVRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29yb19iLmNyX2F3YWl0KQorCisgICAgICAgIGNvcm9fYi5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fU1VTUEVOREVEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcm9fYi5jcl9hd2FpdC5jcl9hd2FpdC5naV9jb2RlLmNvX25hbWUsICdhJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgY29yb19iLnNlbmQoTm9uZSkgICMgY29tcGxldGUgY29yb3V0aW5lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjb3JvdXRpbmVzdGF0ZShjb3JvX2IpLCBpbnNwZWN0LkNPUk9fQ0xPU0VEKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb3JvX2IuY3JfYXdhaXQpCisKKyAgICBkZWYgdGVzdF9jb3JvdHlwZV8xKHNlbGYpOgorICAgICAgICBjdCA9IHR5cGVzLkNvcm91dGluZVR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW50byBjb3JvdXRpbmUnLCBjdC5zZW5kLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2luc2lkZSBjb3JvdXRpbmUnLCBjdC5jbG9zZS5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEluKCdpbiBjb3JvdXRpbmUnLCBjdC50aHJvdy5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEluKCdvZiB0aGUgY29yb3V0aW5lJywgY3QuX19kaWN0X19bJ19fbmFtZV9fJ10uX19kb2NfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignb2YgdGhlIGNvcm91dGluZScsIGN0Ll9fZGljdF9fWydfX3F1YWxuYW1lX18nXS5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0Ll9fbmFtZV9fLCAnY29yb3V0aW5lJykKKworICAgICAgICBhc3luYyBkZWYgZigpOiBwYXNzCisgICAgICAgIGMgPSBmKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29yb3V0aW5lIG9iamVjdCcsIHJlcHIoYykpCisgICAgICAgIGMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMShzZWxmKToKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCAxCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJvYmplY3QgaW50IGNhbi50Liphd2FpdCIpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgW10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIm9iamVjdCBsaXN0IGNhbi50Liphd2FpdCIpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWzEsIDIsIDNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKGZvbygpKSwgKFsxLCAyLCAzXSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jX19hd2FpdF9fKGZvbygpKSwgKFsxLCAyLCAzXSwgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF80KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgYmFyKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbXSwgNDIpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfNShzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IEF3YWl0YWJsZSgpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfXy4qcmV0dXJuZWQgbm9uLWl0ZXJhdG9yIG9mIHR5cGUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfNihzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihbNTJdKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgQXdhaXRhYmxlKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoWzUyXSwgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF83KHNlbGYpOgorICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgICAgICAgICAgcmV0dXJuIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgQXdhaXRhYmxlKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vKCkpLCAoWzQyXSwgMTAwKSkKKworICAgIGRlZiB0ZXN0X2F3YWl0Xzgoc2VsZik6CisgICAgICAgIGNsYXNzIEF3YWl0YWJsZToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIm9iamVjdCBBd2FpdGFibGUgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24iKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfOShzZWxmKToKKyAgICAgICAgZGVmIHdyYXAoKToKKyAgICAgICAgICAgIHJldHVybiBiYXIKKworICAgICAgICBhc3luYyBkZWYgYmFyKCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBiID0gYmFyKCkKKworICAgICAgICAgICAgZGIgPSB7J2InOiAgbGFtYmRhOiB3cmFwfQorCisgICAgICAgICAgICBjbGFzcyBEQjoKKyAgICAgICAgICAgICAgICBiID0gd3JhcAorCisgICAgICAgICAgICByZXR1cm4gKGF3YWl0IGJhcigpICsgYXdhaXQgd3JhcCgpKCkgKyBhd2FpdCBkYlsnYiddKCkoKSgpICsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgYmFyKCkgKiAxMDAwICsgYXdhaXQgREIuYigpKCkpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbzIoKToKKyAgICAgICAgICAgIHJldHVybiAtYXdhaXQgYmFyKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbXSwgNDIxNjgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28yKCkpLCAoW10sIC00MikpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGJheigpOgorICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgYXN5bmMgZGVmIGJhcigpOgorICAgICAgICAgICAgcmV0dXJuIGJheigpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IChhd2FpdCBiYXIoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmb28oKSksIChbXSwgNDIpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTEoc2VsZik6CisgICAgICAgIGRlZiBpZGVudCh2YWwpOgorICAgICAgICAgICAgcmV0dXJuIHZhbAorCisgICAgICAgIGFzeW5jIGRlZiBiYXIoKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gaWRlbnQodmFsPWF3YWl0IGJhcigpKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28yKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgYmFyKCksICdoYW0nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMoZm9vMigpKSwgKFtdLCAoJ3NwYW0nLCAnaGFtJykpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBjb3JvKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gY29ybygpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IEF3YWl0YWJsZSgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fXChcKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF9hd2FpdF8xMyhzZWxmKToKKyAgICAgICAgY2xhc3MgQXdhaXRhYmxlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfXy4qcmV0dXJuZWQgbm9uLWl0ZXJhdG9yIG9mIHR5cGUiKToKKworICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3RfYXdhaXRfMTQoc2VsZik6CisgICAgICAgIGNsYXNzIFdyYXBwZXI6CisgICAgICAgICAgICAjIEZvcmNlcyB0aGUgaW50ZXJwcmV0ZXIgdG8gdXNlIENvcm91dGluZVR5cGUuX19hd2FpdF9fCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ybyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNvcm8uX19jbGFzc19fIGlzIHR5cGVzLkNvcm91dGluZVR5cGUKKyAgICAgICAgICAgICAgICBzZWxmLmNvcm8gPSBjb3JvCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvcm8uX19hd2FpdF9fKCkKKworICAgICAgICBjbGFzcyBGdXR1cmVMaWtlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKHlpZWxkKQorCisgICAgICAgIGNsYXNzIE1hcmtlcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBjb3JvMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBGdXR1cmVMaWtlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICByYWlzZSBNYXJrZXIKKyAgICAgICAgYXN5bmMgZGVmIGNvcm8yKCk6CisgICAgICAgICAgICByZXR1cm4gYXdhaXQgV3JhcHBlcihjb3JvMSgpKQorCisgICAgICAgIGMgPSBjb3JvMigpCisgICAgICAgIGMuc2VuZChOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3RvcEl0ZXJhdGlvbiwgJ3NwYW0nKToKKyAgICAgICAgICAgIGMuc2VuZCgnc3BhbScpCisKKyAgICAgICAgYyA9IGNvcm8yKCkKKyAgICAgICAgYy5zZW5kKE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTWFya2VyKToKKyAgICAgICAgICAgIGMudGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoXzEoc2VsZik6CisgICAgICAgIGNsYXNzIE1hbmFnZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbJ2VudGVyLTEtJyArIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VudGVyLTItJyArIHNlbGYubmFtZV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWydleGl0LTEtJyArIHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXQtMi0nICsgc2VsZi5uYW1lXSkKKworICAgICAgICAgICAgICAgIGlmIHNlbGYubmFtZSA9PSAnQic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoIkEiKSBhcyBhLCBNYW5hZ2VyKCJCIikgYXMgYjoKKyAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkRnJvbShbKCdtYW5hZ2VycycsIGEubmFtZSwgYi5uYW1lKV0pCisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgZiA9IGZvbygpCisgICAgICAgIHJlc3VsdCwgXyA9IHJ1bl9hc3luYyhmKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXN1bHQsIFsnZW50ZXItMS1BJywgJ2VudGVyLTItQScsICdlbnRlci0xLUInLCAnZW50ZXItMi1CJywKKyAgICAgICAgICAgICAgICAgICAgICgnbWFuYWdlcnMnLCAnQScsICdCJyksCisgICAgICAgICAgICAgICAgICAgICAnZXhpdC0xLUInLCAnZXhpdC0yLUInLCAnZXhpdC0xLUEnLCAnZXhpdC0yLUEnXQorICAgICAgICApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgd2l0aCBNYW5hZ2VyKCJBIikgYXMgYSwgTWFuYWdlcigiQyIpIGFzIGM6CisgICAgICAgICAgICAgICAgYXdhaXQgQXN5bmNZaWVsZEZyb20oWygnbWFuYWdlcnMnLCBhLm5hbWUsIGMubmFtZSldKQorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8yKHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgJ19fYWV4aXRfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF8zKHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19hZW50ZXJfXycpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF80KHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19hZXhpdF9fJyk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzUoc2VsZik6CisgICAgICAgICMgV2hpbGUgdGhpcyB0ZXN0IGRvZXNuJ3QgbWFrZSBhIGxvdCBvZiBzZW5zZSwKKyAgICAgICAgIyBpdCdzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhbiBlYXJseSBidWcgd2l0aCBvcGNvZGVzCisgICAgICAgICMgZ2VuZXJhdGlvbgorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgKDEsICkgPT0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZ1bmMoKSkKKworICAgIGRlZiB0ZXN0X3dpdGhfNihzZWxmKToKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMTIzCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NTYKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgIm9iamVjdCBpbnQgY2FuJ3QgYmUgdXNlZCBpbiAnYXdhaXQnIGV4cHJlc3Npb24iKToKKyAgICAgICAgICAgICMgaXQncyBpbXBvcnRhbnQgdGhhdCBfX2FleGl0X18gd2Fzbid0IGNhbGxlZAorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgZGVmIHRlc3Rfd2l0aF83KHNlbGYpOgorICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FleGl0X18oc2VsZiwgKmUpOgorICAgICAgICAgICAgICAgIHJldHVybiA0NDQKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoCisgICAgICAgICAgICAgICAgZXhjLmFyZ3NbMF0sICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19jb250ZXh0X18gaXMgbm90IE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShleGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnaW52YWxpZCBhc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyIGRpZCBub3QgZmFpbCcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfOChzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQ1NgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgIENOVCArPSAxCisKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJvYmplY3QgaW50IGNhbid0IGJlIHVzZWQgaW4gJ2F3YWl0JyBleHByZXNzaW9uIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworCisgICAgZGVmIHRlc3Rfd2l0aF85KHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ05ULCAxKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMChzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgQ05UCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhjLl9fY29udGV4dF9fIGlzIG5vdCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdleGNlcHRpb24gZnJvbSBfX2FleGl0X18gZGlkIG5vdCBwcm9wYWdhdGUnKQorCisgICAgZGVmIHRlc3Rfd2l0aF8xMShzZWxmKToKKyAgICAgICAgQ05UID0gMAorCisgICAgICAgIGNsYXNzIENNOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuX19jb250ZXh0X18gaXMgTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnZXhjZXB0aW9uIGZyb20gX19hZW50ZXJfXyBkaWQgbm90IHByb3BhZ2F0ZScpCisKKyAgICBkZWYgdGVzdF93aXRoXzEyKHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICplKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgd2l0aCBDTSgpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY20uX19jbGFzc19fLCBDTSkKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICBkZWYgdGVzdF93aXRoXzEzKHNlbGYpOgorICAgICAgICBDTlQgPSAwCisKKyAgICAgICAgY2xhc3MgQ006CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBDTlQKKyAgICAgICAgICAgIENOVCArPSAxCisgICAgICAgICAgICBhc3luYyB3aXRoIENNKCk6CisgICAgICAgICAgICAgICAgQ05UICs9IDEwMDAKKyAgICAgICAgICAgIENOVCArPSAxMDAwMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMSkKKworICAgIGRlZiB0ZXN0X2Zvcl8xKHNlbGYpOgorICAgICAgICBhaXRlcl9jYWxscyA9IDAKKworICAgICAgICBjbGFzcyBBc3luY0l0ZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIGFpdGVyX2NhbGxzCisgICAgICAgICAgICAgICAgYWl0ZXJfY2FsbHMgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKworICAgICAgICAgICAgICAgIGlmIG5vdCAoc2VsZi5pICUgMTApOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBBc3luY1lpZWxkKHNlbGYuaSAqIDEwKQorCisgICAgICAgICAgICAgICAgaWYgc2VsZi5pID4gMTAwOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmksIHNlbGYuaQorCisKKyAgICAgICAgYnVmZmVyID0gW10KKyAgICAgICAgYXN5bmMgZGVmIHRlc3QxKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaTEsIGkyIGluIEFzeW5jSXRlcigpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaTEgKyBpMikKKworICAgICAgICB5aWVsZGVkLCBfID0gcnVuX2FzeW5jKHRlc3QxKCkpCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgX19haXRlcl9fIHdhcyBjYWxsZWQgb25seSBvbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWl0ZXJfY2FsbHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeWllbGRlZCwgW2kgKiAxMDAgZm9yIGkgaW4gcmFuZ2UoMSwgMTEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZmZXIsIFtpKjIgZm9yIGkgaW4gcmFuZ2UoMSwgMTAxKV0pCisKKworICAgICAgICBidWZmZXIgPSBbXQorICAgICAgICBhc3luYyBkZWYgdGVzdDIoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJ1ZmZlcgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQXN5bmNJdGVyKCk6CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgICAgIGlmIGlbMF0gPT0gMjA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ3doYXQ/JykKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ2VuZCcpCisKKyAgICAgICAgeWllbGRlZCwgXyA9IHJ1bl9hc3luYyh0ZXN0MigpKQorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IF9fYWl0ZXJfXyB3YXMgY2FsbGVkIG9ubHkgb25jZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpdGVyX2NhbGxzLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHlpZWxkZWQsIFsxMDAsIDIwMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbaSBmb3IgaSBpbiByYW5nZSgxLCAyMSldICsgWydlbmQnXSkKKworCisgICAgICAgIGJ1ZmZlciA9IFtdCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0MygpOgorICAgICAgICAgICAgbm9ubG9jYWwgYnVmZmVyCisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBc3luY0l0ZXIoKToKKyAgICAgICAgICAgICAgICBpZiBpWzBdID4gMjA6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCd3aGF0PycpCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdlbmQnKQorCisgICAgICAgIHlpZWxkZWQsIF8gPSBydW5fYXN5bmModGVzdDMoKSkKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBfX2FpdGVyX18gd2FzIGNhbGxlZCBvbmx5IG9uY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaXRlcl9jYWxscywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5aWVsZGVkLCBbaSAqIDEwMCBmb3IgaSBpbiByYW5nZSgxLCAxMSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmZlciwgW2kgZm9yIGkgaW4gcmFuZ2UoMSwgMjEpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3doYXQ/JywgJ2VuZCddKQorCisgICAgZGVmIHRlc3RfZm9yXzIoc2VsZik6CisgICAgICAgIHR1cCA9ICgxLCAyLCAzKQorICAgICAgICByZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudCh0dXApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gdHVwOgorICAgICAgICAgICAgICAgIHByaW50KCduZXZlciBnb2luZyB0byBoYXBwZW4nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICJhc3luYyBmb3InIHJlcXVpcmVzIGFuIG9iamVjdC4qX19haXRlcl9fLip0dXBsZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQodHVwKSwgcmVmc19iZWZvcmUpCisKKyAgICBkZWYgdGVzdF9mb3JfMyhzZWxmKToKKyAgICAgICAgY2xhc3MgSToKKyAgICAgICAgICAgIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBhaXRlciA9IEkoKQorICAgICAgICByZWZzX2JlZm9yZSA9IHN5cy5nZXRyZWZjb3VudChhaXRlcikKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBhaXRlcjoKKyAgICAgICAgICAgICAgICBwcmludCgnbmV2ZXIgZ29pbmcgdG8gaGFwcGVuJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChhaXRlciksIHJlZnNfYmVmb3JlKQorCisgICAgZGVmIHRlc3RfZm9yXzQoc2VsZik6CisgICAgICAgIGNsYXNzIEk6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGRlZiBfX2FuZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgpCisKKyAgICAgICAgYWl0ZXIgPSBJKCkKKyAgICAgICAgcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQoYWl0ZXIpCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gYWl0ZXI6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19hbmV4dF9fLip0dXBsZSIpOgorCisgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoYWl0ZXIpLCByZWZzX2JlZm9yZSkKKworICAgIGRlZiB0ZXN0X2Zvcl81KHNlbGYpOgorICAgICAgICBjbGFzcyBJOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgICAgICBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMjMKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBJKCk6CisgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19hbmV4dC4qaW50Iik6CisKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKKworICAgIGRlZiB0ZXN0X2Zvcl82KHNlbGYpOgorICAgICAgICBJID0gMAorCisgICAgICAgIGNsYXNzIE1hbmFnZXI6CisgICAgICAgICAgICBhc3luYyBkZWYgX19hZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBJCisgICAgICAgICAgICAgICAgSSArPSAxMDAwMAorCisgICAgICAgICAgICBhc3luYyBkZWYgX19hZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBJCisgICAgICAgICAgICAgICAgSSArPSAxMDAwMDAKKworICAgICAgICBjbGFzcyBJdGVyYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgPSAwCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICAgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmkgPiAxMDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBtYW5hZ2VyID0gTWFuYWdlcigpCisgICAgICAgIGl0ZXJhYmxlID0gSXRlcmFibGUoKQorICAgICAgICBtcmVmc19iZWZvcmUgPSBzeXMuZ2V0cmVmY291bnQobWFuYWdlcikKKyAgICAgICAgaXJlZnNfYmVmb3JlID0gc3lzLmdldHJlZmNvdW50KGl0ZXJhYmxlKQorCisgICAgICAgIGFzeW5jIGRlZiBtYWluKCk6CisgICAgICAgICAgICBub25sb2NhbCBJCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcjoKKyAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgICAgSSArPSAxCisgICAgICAgICAgICBJICs9IDEwMDAKKworICAgICAgICBydW5fYXN5bmMobWFpbigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEksIDExMTAxMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChtYW5hZ2VyKSwgbXJlZnNfYmVmb3JlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRyZWZjb3VudChpdGVyYWJsZSksIGlyZWZzX2JlZm9yZSkKKworICAgICAgICAjIyMjIyMjIyMjIyMjIworCisgICAgICAgIGFzeW5jIGRlZiBtYWluKCk6CisgICAgICAgICAgICBub25sb2NhbCBJCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigpOgorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgICAgIGFzeW5jIHdpdGggTWFuYWdlcigpOgorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgSSArPSAxMDAwCisKKyAgICAgICAgcnVuX2FzeW5jKG1haW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChJLCAzMzMwMzMpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIyMKKworICAgICAgICBhc3luYyBkZWYgbWFpbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgSQorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBJICs9IDEwMAorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwMDAKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgICAgICBhc3luYyB3aXRoIE1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBJICs9IDEwMAorICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEl0ZXJhYmxlKCk6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEkgKz0gMTAwMDAwMDAKKyAgICAgICAgICAgIEkgKz0gMTAwMAorCisgICAgICAgIHJ1bl9hc3luYyhtYWluKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSSwgMjA1NTUyNTUpCisKKyAgICBkZWYgdGVzdF9mb3JfNyhzZWxmKToKKyAgICAgICAgQ05UID0gMAorICAgICAgICBjbGFzcyBBSToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIENOVAorICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUkoKToKKyAgICAgICAgICAgICAgICBDTlQgKz0gMQorICAgICAgICAgICAgQ05UICs9IDEwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMCkKKworCitjbGFzcyBDb3JvQXN5bmNJT0NvbXBhdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXN5bmNpb18xKHNlbGYpOgorICAgICAgICBpbXBvcnQgYXN5bmNpbworCisgICAgICAgIGNsYXNzIE15RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYnVmZmVyID0gW10KKworICAgICAgICBjbGFzcyBDTToKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FlbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoMSkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEpCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgyKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FleGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxKQorICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZXhjX3R5cGUuX19uYW1lX18pCisKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGFzeW5jIHdpdGggQ00oKSBhcyBjOgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSkKKyAgICAgICAgICAgICAgICByYWlzZSBNeUV4Y2VwdGlvbgorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgndW5yZWFjaGFibGUnKQorCisgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKKyAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChsb29wKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmKCkpCisgICAgICAgIGV4Y2VwdCBNeUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvb3AuY2xvc2UoKQorICAgICAgICAgICAgYXN5bmNpby5zZXRfZXZlbnRfbG9vcChOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmZmVyLCBbMSwgMiwgJ015RXhjZXB0aW9uJ10pCisKKworY2xhc3MgU3lzU2V0Q29yb1dyYXBwZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NldF93cmFwcGVyXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiAnc3BhbScKKworICAgICAgICB3cmFwcGVkID0gTm9uZQorICAgICAgICBkZWYgd3JhcChnZW4pOgorICAgICAgICAgICAgbm9ubG9jYWwgd3JhcHBlZAorICAgICAgICAgICAgd3JhcHBlZCA9IGdlbgorICAgICAgICAgICAgcmV0dXJuIGdlbgorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpLCB3cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gZm9vKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3cmFwcGVkKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhmKSwgKFtdLCAnc3BhbScpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5nZXRfY29yb3V0aW5lX3dyYXBwZXIoKSkKKworICAgICAgICB3cmFwcGVkID0gTm9uZQorICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpOgorICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh3cmFwcGVkKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiY2FsbGFibGUgZXhwZWN0ZWQsIGdvdCBpbnQiKToKKyAgICAgICAgICAgIHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLmdldF9jb3JvdXRpbmVfd3JhcHBlcigpKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfMyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuICdzcGFtJworCisgICAgICAgIGRlZiB3cmFwcGVyKGNvcm8pOgorICAgICAgICAgICAgYXN5bmMgZGVmIHdyYXAoY29ybyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNvcm8KKyAgICAgICAgICAgIHJldHVybiB3cmFwKGNvcm8pCisKKyAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNpbGVuY2VfY29yb19nYygpLCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICAicmVjdXJzaXZlbHkgd3JhcCAuKiB3cmFwIC4qIik6CisKKyAgICAgICAgICAgICAgICBmb28oKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlcihOb25lKQorCisgICAgZGVmIHRlc3Rfc2V0X3dyYXBwZXJfNChzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisKKyAgICAgICAgd3JhcHBlZCA9IE5vbmUKKyAgICAgICAgZGVmIHdyYXAoZ2VuKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHdyYXBwZWQKKyAgICAgICAgICAgIHdyYXBwZWQgPSBnZW4KKyAgICAgICAgICAgIHJldHVybiBnZW4KKworICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvbygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKAorICAgICAgICAgICAgICAgIHdyYXBwZWQsIE5vbmUsCisgICAgICAgICAgICAgICAgImdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmUgd2FzIHdyYXBwZWQgdmlhICIKKyAgICAgICAgICAgICAgICAic3lzLnNldF9jb3JvdXRpbmVfd3JhcHBlciIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyKE5vbmUpCisKKworY2xhc3MgQ0FQSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfdHBfYXdhaXRfMShzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGF3YWl0VHlwZSBhcyBhdAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGZ1dHVyZSA9IGF0KGl0ZXIoWzFdKSkKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgZnV0dXJlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKCkuc2VuZChOb25lKSwgMSkKKworICAgIGRlZiB0ZXN0X3RwX2F3YWl0XzIoc2VsZik6CisgICAgICAgICMgVGVzdCB0cF9hd2FpdCB0byBfX2F3YWl0X18gbWFwcGluZworICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgYXdhaXRUeXBlIGFzIGF0CisgICAgICAgIGZ1dHVyZSA9IGF0KGl0ZXIoWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGZ1dHVyZS5fX2F3YWl0X18oKSksIDEpCisKKyAgICBkZWYgdGVzdF90cF9hd2FpdF8zKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgYXdhaXRUeXBlIGFzIGF0CisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgZnV0dXJlID0gYXQoMSkKKyAgICAgICAgICAgIHJldHVybiAoYXdhaXQgZnV0dXJlKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X18uKnJldHVybmVkIG5vbi1pdGVyYXRvciBvZiB0eXBlICdpbnQnIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLnNlbmQoTm9uZSksIDEpCisKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBjZTVkMjdlLi5mMTg5ODNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTExLDcgKzExLDcgQEAKIGNsYXNzIENQcm9maWxlVGVzdChQcm9maWxlVGVzdCk6CiAgICAgcHJvZmlsZXJjbGFzcyA9IGNQcm9maWxlLlByb2ZpbGUKICAgICBwcm9maWxlcm1vZHVsZSA9IGNQcm9maWxlCi0gICAgZXhwZWN0ZWRfbWF4X291dHB1dCA9ICJ7YnVpbHQtaW4gbWV0aG9kIG1heH0iCisgICAgZXhwZWN0ZWRfbWF4X291dHB1dCA9ICJ7YnVpbHQtaW4gbWV0aG9kIGJ1aWx0aW5zLm1heH0iCiAKICAgICBkZWYgZ2V0X2V4cGVjdGVkX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIF9Qcm9maWxlT3V0cHV0CkBAIC03Miw5ICs3Miw5IEBACiBwcm9maWxlZS5weTo4OChoZWxwZXIyKSAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtICAgICAgIDYgICAgMC4yMzQgICAgMC4zMDAgIHByb2ZpbGVlLnB5OjU1KGhlbHBlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAwLjA3OCAgICAwLjEwMCAgcHJvZmlsZWUucHk6ODQoaGVscGVyMl9pbmRpcmVjdCkKIHByb2ZpbGVlLnB5Ojk4KHN1YmhlbHBlcikgICAgICAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgOCAgICAwLjA2NCAgICAwLjA4MCAgcHJvZmlsZWUucHk6ODgoaGVscGVyMikKLXtidWlsdC1pbiBtZXRob2QgZXhjX2luZm99ICAgICAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwMCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKLXtidWlsdC1pbiBtZXRob2QgaGFzYXR0cn0gICAgICAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwNCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKK3tidWlsdC1pbiBtZXRob2QgYnVpbHRpbnMuaGFzYXR0cn0gICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwNCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCAgICAwLjAwMCAgICAwLjAwOCAgcHJvZmlsZWUucHk6ODgoaGVscGVyMikKK3tidWlsdC1pbiBtZXRob2Qgc3lzLmV4Y19pbmZvfSAgICAgICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwMCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkKIHttZXRob2QgJ2FwcGVuZCcgb2YgJ2xpc3QnIG9iamVjdHN9ICAgICAgICAgICAgICAgPC0gICAgICAgNCAgICAwLjAwMCAgICAwLjAwMCAgcHJvZmlsZWUucHk6NzMoaGVscGVyMSkiIiIKIF9Qcm9maWxlT3V0cHV0WydwcmludF9jYWxsZWVzJ10gPSAiIiJcCiA8c3RyaW5nPjoxKDxtb2R1bGU+KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDEgICAgMC4yNzAgICAgMS4wMDAgIHByb2ZpbGVlLnB5OjI1KHRlc3RmdW5jKQpAQCAtODcsMTIgKzg3LDEyIEBACiBwcm9maWxlZS5weTo1NShoZWxwZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDQgICAgMC4xMTYgICAgMC4xMjAgIHByb2ZpbGVlLnB5OjczKGhlbHBlcjEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgICAgMC4wMDAgICAgMC4xNDAgIHByb2ZpbGVlLnB5Ojg0KGhlbHBlcjJfaW5kaXJlY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgICAgMC4yMzQgICAgMC4zMDAgIHByb2ZpbGVlLnB5Ojg4KGhlbHBlcjIpCi1wcm9maWxlZS5weTo3MyhoZWxwZXIxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDAgIHtidWlsdC1pbiBtZXRob2QgZXhjX2luZm99Citwcm9maWxlZS5weTo3MyhoZWxwZXIxKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgIDQgICAgMC4wMDAgICAgMC4wMDQgIHtidWlsdC1pbiBtZXRob2QgYnVpbHRpbnMuaGFzYXR0cn0KIHByb2ZpbGVlLnB5Ojg0KGhlbHBlcjJfaW5kaXJlY3QpICAgICAgICAgICAgICAgICAgLT4gICAgICAgMiAgICAwLjAwNiAgICAwLjA0MCAgcHJvZmlsZWUucHk6MzUoZmFjdG9yaWFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICAgIDAuMDc4ICAgIDAuMTAwICBwcm9maWxlZS5weTo4OChoZWxwZXIyKQogcHJvZmlsZWUucHk6ODgoaGVscGVyMikgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgICAgICA4ICAgIDAuMDY0ICAgIDAuMDgwICBwcm9maWxlZS5weTo5OChzdWJoZWxwZXIpCiBwcm9maWxlZS5weTo5OChzdWJoZWxwZXIpICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICAgICAgMTYgICAgMC4wMTYgICAgMC4wMTYgIHByb2ZpbGVlLnB5OjExMChfX2dldGF0dHJfXykKLXtidWlsdC1pbiBtZXRob2QgaGFzYXR0cn0gICAgICAgICAgICAgICAgICAgICAgICAgLT4gICAgICAxMiAgICAwLjAxMiAgICAwLjAxMiAgcHJvZmlsZWUucHk6MTEwKF9fZ2V0YXR0cl9fKSIiIgore2J1aWx0LWluIG1ldGhvZCBidWlsdGlucy5oYXNhdHRyfSAgICAgICAgICAgICAgICAtPiAgICAgIDEyICAgIDAuMDEyICAgIDAuMDEyICBwcm9maWxlZS5weToxMTAoX19nZXRhdHRyX18pIiIiCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQppbmRleCAzMzZjY2JlLi41OGRmZDAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Jhc2hlcnMucHkKQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB0ZXN0LnN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQogCiBDUkFTSEVSX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiY3Jhc2hlcnMiKQogQ1JBU0hFUl9GSUxFUyA9IG9zLnBhdGguam9pbihDUkFTSEVSX0RJUiwgIioucHkiKQpAQCAtMzAsOSArMzAsOCBAQAogICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKGZuYW1lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KENyYXNoZXJUZXN0KQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nzdi5weSBiL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CmluZGV4IDY1NDQ5YWUuLjhlOWMyYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3N2LnB5CkBAIC0xODYsNiArMTg2LDE0IEBACiAgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoWydhJywxLCdwLHEnXSwgJ2EsMSxwXFwscScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlY2hhcj0nXFwnLCBxdW90aW5nID0gY3N2LlFVT1RFX05PTkUpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFsnYScsIDEsICdwLHEnXSksICdhLDEsInAscSInKQorICAgICAgICBzZWxmLl93cml0ZV90ZXN0KGl0ZXIoWydhJywgMSwgTm9uZV0pLCAnYSwxLCcpCisgICAgICAgIHNlbGYuX3dyaXRlX3Rlc3QoaXRlcihbXSksICcnKQorICAgICAgICBzZWxmLl93cml0ZV90ZXN0KGl0ZXIoW05vbmVdKSwgJyIiJykKKyAgICAgICAgc2VsZi5fd3JpdGVfZXJyb3JfdGVzdChjc3YuRXJyb3IsIGl0ZXIoW05vbmVdKSwgcXVvdGluZz1jc3YuUVVPVEVfTk9ORSkKKyAgICAgICAgc2VsZi5fd3JpdGVfdGVzdChpdGVyKFtOb25lLCBOb25lXSksICcsJykKKwogICAgIGRlZiB0ZXN0X3dyaXRlcm93cyhzZWxmKToKICAgICAgICAgY2xhc3MgQnJva2VuRmlsZToKICAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBidWYpOgpAQCAtNTc4LDYgKzU4NiwxNiBAQAogICAgICAgICAgICAgZmlsZW9iai5yZWFkbGluZSgpICMgaGVhZGVyCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmoucmVhZCgpLCAiMTAsLGFiY1xyXG4iKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfbXVsdGlwbGVfZGljdF9yb3dzKHNlbGYpOgorICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBjc3YuRGljdFdyaXRlcihmaWxlb2JqLCBmaWVsZG5hbWVzPVsiZjEiLCAiZjIiLCAiZjMiXSkKKyAgICAgICAgd3JpdGVyLndyaXRlaGVhZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLmdldHZhbHVlKCksICJmMSxmMixmM1xyXG4iKQorICAgICAgICB3cml0ZXIud3JpdGVyb3dzKFt7ImYxIjogMSwgImYyIjogImFiYyIsICJmMyI6ICJmIn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHsiZjEiOiAyLCAiZjIiOiA1LCAiZjMiOiAieHl6In1dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmouZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZjEsZjIsZjNcclxuMSxhYmMsZlxyXG4yLDUseHl6XHJcbiIpCisKICAgICBkZWYgdGVzdF93cml0ZV9ub19maWVsZHMoc2VsZik6CiAgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LkRpY3RXcml0ZXIsIGZpbGVvYmopCkBAIC03NzYsNyArNzk0LDcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjc3YuRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbXlkaWFsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnInF1b3RlY2hhciIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICcicXVvdGVjaGFyIiBtdXN0IGJlIGEgMS1jaGFyYWN0ZXIgc3RyaW5nJykKIAogICAgICAgICBteWRpYWxlY3QucXVvdGVjaGFyID0gNAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CkBAIC03OTksMTMgKzgxNywxMyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CiAgICAgICAgICAgICBteWRpYWxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJkZWxpbWl0ZXIiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmcnKQogCiAgICAgICAgIG15ZGlhbGVjdC5kZWxpbWl0ZXIgPSAiIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNzdi5FcnJvcikgYXMgY206CiAgICAgICAgICAgICBteWRpYWxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICciZGVsaW1pdGVyIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJkZWxpbWl0ZXIiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmcnKQogCiAgICAgICAgIG15ZGlhbGVjdC5kZWxpbWl0ZXIgPSBiIiwiCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY3N2LkVycm9yKSBhcyBjbToKQEAgLTEwNjYsMTEgKzEwODQsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgZXhwZWN0ZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIG1vZCA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICAqW2dldGF0dHIobW9kLCBuYW1lKSBmb3IgbmFtZSBpbiBkaXIobW9kKSBpZiBuYW1lLnN0YXJ0c3dpdGgoJ1Rlc3QnKV0KLSAgICApCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKaW5kZXggYmQ3ZDRmYy4uMjc0NzA0MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkKQEAgLTM3MCw2ICszNzAsMTMgQEAKICAgICAgICAgb2Zmc2V0ID0gaHVtYW5fcmVhZGFibGVfc2lnbmF0dXJlLmZpbmQoIlt5LCB4LF0iKQogICAgICAgICBhc3NlcnQgb2Zmc2V0ID49IDAsICIiCiAKKyAgICBkZWYgdGVzdF91cGRhdGVfbGluZXNfY29scyhzZWxmKToKKyAgICAgICAgIyB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgdGVzdCB0aGF0IExJTkVTIGFuZCBDT0xTIGFyZSB1cGRhdGVkLAorICAgICAgICAjIGJlY2F1c2Ugd2UgY2FuJ3QgYXV0b21hdGUgY2hhbmdpbmcgdGhlbS4gU2VlIElzc3VlICM0MjU0IGZvcgorICAgICAgICAjIGEgbWFudWFsIHRlc3Qgc2NyaXB0LiBXZSBjYW4gb25seSB0ZXN0IHRoYXQgdGhlIGZ1bmN0aW9uCisgICAgICAgICMgY2FuIGJlIGNhbGxlZC4KKyAgICAgICAgY3Vyc2VzLnVwZGF0ZV9saW5lc19jb2xzKCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKaW5kZXggZDlkZGIzMi4uMmQ0ZWI1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CkBAIC0xLDIwICsxLDIwIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKKwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUsIHJ1bl91bml0dGVzdAogCiBURVNUUyA9ICd0ZXN0LmRhdGV0aW1ldGVzdGVyJwogCi0jIFhYWDogaW1wb3J0X2ZyZXNoX21vZHVsZSgpIGlzIHN1cHBvc2VkIHRvIGxlYXZlIHN5cy5tb2R1bGUgY2FjaGUgdW50b3VjaGVkLAotIyBYWFg6IGJ1dCBpdCBkb2VzIG5vdCwgc28gd2UgaGF2ZSB0byBzYXZlIGFuZCByZXN0b3JlIGl0IG91cnNlbHZlcy4KLXNhdmVfc3lzX21vZHVsZXMgPSBzeXMubW9kdWxlcy5jb3B5KCkKIHRyeToKICAgICBwdXJlX3Rlc3RzID0gaW1wb3J0X2ZyZXNoX21vZHVsZShURVNUUywgZnJlc2g9WydkYXRldGltZScsICdfc3RycHRpbWUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsnX2RhdGV0aW1lJ10pCiAgICAgZmFzdF90ZXN0cyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoVEVTVFMsIGZyZXNoPVsnZGF0ZXRpbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYXRldGltZScsICdfc3RycHRpbWUnXSkKIGZpbmFsbHk6Ci0gICAgc3lzLm1vZHVsZXMuY2xlYXIoKQotICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShzYXZlX3N5c19tb2R1bGVzKQorICAgICMgWFhYOiBpbXBvcnRfZnJlc2hfbW9kdWxlKCkgaXMgc3VwcG9zZWQgdG8gbGVhdmUgc3lzLm1vZHVsZSBjYWNoZSB1bnRvdWNoZWQsCisgICAgIyBYWFg6IGJ1dCBpdCBkb2VzIG5vdCwgc28gd2UgaGF2ZSB0byBjbGVhbnVwIG91cnNlbHZlcy4KKyAgICBmb3IgbW9kbmFtZSBpbiBbJ2RhdGV0aW1lJywgJ19kYXRldGltZScsICdfc3RycHRpbWUnXToKKyAgICAgICAgc3lzLm1vZHVsZXMucG9wKG1vZG5hbWUsIE5vbmUpCiB0ZXN0X21vZHVsZXMgPSBbcHVyZV90ZXN0cywgZmFzdF90ZXN0c10KIHRlc3Rfc3VmZml4ZXMgPSBbIl9QdXJlIiwgIl9GYXN0Il0KICMgWFhYKGdiKSBGaXJzdCBydW4gYWxsIHRoZSBfUHVyZSB0ZXN0cywgdGhlbiBhbGwgdGhlIF9GYXN0IHRlc3RzLiAgWW91IG1pZ2h0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQppbmRleCBkYzg4Y2E2Li5mZjYzYzg4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKQEAgLTIxNyw2ICsyMTcsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEQk0gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkIikKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9uZXcoc2VsZik6CisgICAgICAgIHdpdGggZHVtYmRibS5vcGVuKF9mbmFtZSwgJ24nKSBhcyBmOgorICAgICAgICAgICAgZm9yIGsgaW4gc2VsZi5fZGljdDoKKyAgICAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQorCisgICAgICAgIHdpdGggZHVtYmRibS5vcGVuKF9mbmFtZSwgJ24nKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmtleXMoKSwgW10pCisKICAgICBkZWYgdGVzdF9ldmFsKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oX2ZuYW1lICsgJy5kaXInLCAndycpIGFzIHN0cmVhbToKICAgICAgICAgICAgIHN0cmVhbS53cml0ZSgic3RyKHByaW50KCdIYWNrZWQhJykpLCAwXG4iKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IGExNzhmNmYuLjEzN2FhYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTMzLDEyICszMywxMyBAQAogaW1wb3J0IG51bWJlcnMKIGltcG9ydCBsb2NhbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBydW5fZG9jdGVzdCwgaXNfcmVzb3VyY2VfZW5hYmxlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfSUVFRV83NTQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX0lFRUVfNzU0LCByZXF1aXJlc19kb2NzdHJpbmdzKQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjaGVja193YXJuaW5ncywgaW1wb3J0X2ZyZXNoX21vZHVsZSwgVGVzdEZhaWxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVuX3dpdGhfbG9jYWxlLCBjcHl0aG9uX29ubHkpCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdGltZQogaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgaW5zcGVjdAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQxNzQsOSArNDE3NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX3ZlcnNpb25fXywgUC5fX3ZlcnNpb25fXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbGlibXBkZWNfdmVyc2lvbl9fLCBQLl9fbGlibXBkZWNfdmVyc2lvbl9fKQogCi0gICAgICAgIHggPSBkaXIoQykKLSAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihQKSBpZiAnX18nIGluIHMgb3Igbm90IHMuc3RhcnRzd2l0aCgnXycpXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh4KSAtIHNldCh5KSwgc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyKEMpLCBkaXIoUCkpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X2F0dHJpYnV0ZXMoc2VsZik6CiAKQEAgLTQ0NTUsMTggKzQ0NTQsNiBAQAogY2xhc3MgUHlGdW5jdGlvbmFsaXR5KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJFeHRyYSBmdW5jdGlvbmFsaXR5IGluIGRlY2ltYWwucHkiIiIKIAotICAgIGRlZiB0ZXN0X3B5X3F1YW50aXplX3dhdGNoZXhwKHNlbGYpOgotICAgICAgICAjIHdhdGNoZXhwIGZ1bmN0aW9uYWxpdHkKLSAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAotICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAotCi0gICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKLSAgICAgICAgICAgIGMucHJlYyA9IDEKLSAgICAgICAgICAgIGMuRW1heCA9IDEKLSAgICAgICAgICAgIGMuRW1pbiA9IC0xCi0gICAgICAgICAgICB4ID0gRGVjaW1hbCg5OTk5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUzIiksIHdhdGNoZXhwPUZhbHNlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxLjAwRSs1JykpCi0KICAgICBkZWYgdGVzdF9weV9hbHRlcm5hdGVfZm9ybWF0dGluZyhzZWxmKToKICAgICAgICAgIyB0cmlwbGVzIGdpdmluZyBhIGZvcm1hdCwgYSBEZWNpbWFsLCBhbmQgdGhlIGV4cGVjdGVkIHJlc3VsdAogICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCkBAIC01NDA5LDYgKzUzOTYsMTQzIEBACiAgICAgICAgICAgICB5ID0gRGVjaW1hbCgxMCoqKDkqMjUpKS5fX3NpemVvZl9fKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCs0KQogCitAcmVxdWlyZXNfZG9jc3RyaW5ncworQHVuaXR0ZXN0LnNraXBVbmxlc3MoQywgInRlc3QgcmVxdWlyZXMgQyB2ZXJzaW9uIikKK2NsYXNzIFNpZ25hdHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkZ1bmN0aW9uIHNpZ25hdHVyZXMiIiIKKworICAgIGRlZiB0ZXN0X2luc3BlY3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBmb3IgYXR0ciBpbiBkaXIoUCk6CisgICAgICAgICAgICBpZiBhdHRyLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcF9mdW5jID0gZ2V0YXR0cihQLCBhdHRyKQorICAgICAgICAgICAgY19mdW5jID0gZ2V0YXR0cihDLCBhdHRyKQorICAgICAgICAgICAgaWYgKGF0dHIgPT0gJ0RlY2ltYWwnIG9yIGF0dHIgPT0gJ0NvbnRleHQnIG9yCisgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Z1bmN0aW9uKHBfZnVuYykpOgorICAgICAgICAgICAgICAgIHBfc2lnID0gaW5zcGVjdC5zaWduYXR1cmUocF9mdW5jKQorICAgICAgICAgICAgICAgIGNfc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoY19mdW5jKQorCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIgbmFtZXM6CisgICAgICAgICAgICAgICAgY19uYW1lcyA9IGxpc3QoY19zaWcucGFyYW1ldGVycy5rZXlzKCkpCisgICAgICAgICAgICAgICAgcF9uYW1lcyA9IFt4IGZvciB4IGluIHBfc2lnLnBhcmFtZXRlcnMua2V5cygpIGlmIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5zdGFydHN3aXRoKCdfJyldCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNfbmFtZXMsIHBfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9InBhcmFtZXRlciBuYW1lIG1pc21hdGNoIGluICVzIiAlIHBfZnVuYykKKworICAgICAgICAgICAgICAgIGNfa2luZCA9IFt4LmtpbmQgZm9yIHggaW4gY19zaWcucGFyYW1ldGVycy52YWx1ZXMoKV0KKyAgICAgICAgICAgICAgICBwX2tpbmQgPSBbeFsxXS5raW5kIGZvciB4IGluIHBfc2lnLnBhcmFtZXRlcnMuaXRlbXMoKSBpZiBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeFswXS5zdGFydHN3aXRoKCdfJyldCisKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgaWYgYXR0ciAhPSAnc2V0Y29udGV4dCc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY19raW5kLCBwX2tpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIga2luZCBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisKKyAgICBkZWYgdGVzdF9pbnNwZWN0X3R5cGVzKHNlbGYpOgorCisgICAgICAgIFBPUyA9IGluc3BlY3QuX1BhcmFtZXRlcktpbmQuUE9TSVRJT05BTF9PTkxZCisgICAgICAgIFBPU19LV0QgPSBpbnNwZWN0Ll9QYXJhbWV0ZXJLaW5kLlBPU0lUSU9OQUxfT1JfS0VZV09SRAorCisgICAgICAgICMgVHlwZSBoZXVyaXN0aWMgKHR5cGUgYW5ub3RhdGlvbnMgd291bGQgaGVscCEpOgorICAgICAgICBwZGljdCA9IHtDOiB7J290aGVyJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ3gnOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAneSc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd6JzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2EnOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYic6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdjJzogQy5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2V4cCc6IEMuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdtb2R1bG8nOiBDLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnbnVtJzogIjEiLAorICAgICAgICAgICAgICAgICAgICAgJ2YnOiAxLjAsCisgICAgICAgICAgICAgICAgICAgICAncm91bmRpbmcnOiBDLlJPVU5EX0hBTEZfVVAsCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCc6IEMuZ2V0Y29udGV4dCgpfSwKKyAgICAgICAgICAgICAgICAgUDogeydvdGhlcic6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICd0aGlyZCc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdhJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ2InOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnYyc6IFAuRGVjaW1hbCgxKSwKKyAgICAgICAgICAgICAgICAgICAgICdleHAnOiBQLkRlY2ltYWwoMSksCisgICAgICAgICAgICAgICAgICAgICAnbW9kdWxvJzogUC5EZWNpbWFsKDEpLAorICAgICAgICAgICAgICAgICAgICAgJ251bSc6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgICdmJzogMS4wLAorICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kaW5nJzogUC5ST1VORF9IQUxGX1VQLAorICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQnOiBQLmdldGNvbnRleHQoKX19CisKKyAgICAgICAgZGVmIG1rYXJncyhtb2R1bGUsIHNpZyk6CisgICAgICAgICAgICBhcmdzID0gW10KKyAgICAgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgICAgICBmb3IgbmFtZSwgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdzZWxmJzogY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IFBPUzoKKyAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQocGRpY3RbbW9kdWxlXVtuYW1lXSkKKyAgICAgICAgICAgICAgICBlbGlmIHBhcmFtLmtpbmQgPT0gUE9TX0tXRDoKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzW25hbWVdID0gcGRpY3RbbW9kdWxlXVtuYW1lXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoInVuZXhwZWN0ZWQgcGFyYW1ldGVyIGtpbmQiKQorICAgICAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncworCisgICAgICAgIGRlZiB0cihzKToKKyAgICAgICAgICAgICIiIlRoZSBDIENvbnRleHQgZG9jc3RyaW5ncyB1c2UgJ3gnIGluIG9yZGVyIHRvIHByZXZlbnQgY29uZnVzaW9uCisgICAgICAgICAgICAgICB3aXRoIHRoZSBhcnRpY2xlICdhJyBpbiB0aGUgZGVzY3JpcHRpb25zLiIiIgorICAgICAgICAgICAgaWYgcyA9PSAneCc6IHJldHVybiAnYScKKyAgICAgICAgICAgIGlmIHMgPT0gJ3knOiByZXR1cm4gJ2InCisgICAgICAgICAgICBpZiBzID09ICd6JzogcmV0dXJuICdjJworICAgICAgICAgICAgcmV0dXJuIHMKKworICAgICAgICBkZWYgZG9pdCh0eSk6CisgICAgICAgICAgICBwX3R5cGUgPSBnZXRhdHRyKFAsIHR5KQorICAgICAgICAgICAgY190eXBlID0gZ2V0YXR0cihDLCB0eSkKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihwX3R5cGUpOgorICAgICAgICAgICAgICAgIGlmIGF0dHIuc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHBfZnVuYyA9IGdldGF0dHIocF90eXBlLCBhdHRyKQorICAgICAgICAgICAgICAgIGNfZnVuYyA9IGdldGF0dHIoY190eXBlLCBhdHRyKQorICAgICAgICAgICAgICAgIGlmIGluc3BlY3QuaXNmdW5jdGlvbihwX2Z1bmMpOgorICAgICAgICAgICAgICAgICAgICBwX3NpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHBfZnVuYykKKyAgICAgICAgICAgICAgICAgICAgY19zaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShjX2Z1bmMpCisKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIgbmFtZXM6CisgICAgICAgICAgICAgICAgICAgIHBfbmFtZXMgPSBsaXN0KHBfc2lnLnBhcmFtZXRlcnMua2V5cygpKQorICAgICAgICAgICAgICAgICAgICBjX25hbWVzID0gW3RyKHgpIGZvciB4IGluIGNfc2lnLnBhcmFtZXRlcnMua2V5cygpXQorCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY19uYW1lcywgcF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9InBhcmFtZXRlciBuYW1lIG1pc21hdGNoIGluICVzIiAlIHBfZnVuYykKKworICAgICAgICAgICAgICAgICAgICBwX2tpbmQgPSBbeC5raW5kIGZvciB4IGluIHBfc2lnLnBhcmFtZXRlcnMudmFsdWVzKCldCisgICAgICAgICAgICAgICAgICAgIGNfa2luZCA9IFt4LmtpbmQgZm9yIHggaW4gY19zaWcucGFyYW1ldGVycy52YWx1ZXMoKV0KKworICAgICAgICAgICAgICAgICAgICAjICdzZWxmJyBwYXJhbWV0ZXI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocF9raW5kWzBdLCBQT1NfS1dEKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNfa2luZFswXSwgUE9TKQorCisgICAgICAgICAgICAgICAgICAgICMgcmVtYWluaW5nIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHR5ID09ICdEZWNpbWFsJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY19raW5kWzE6XSwgcF9raW5kWzE6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJwYXJhbWV0ZXIga2luZCBtaXNtYXRjaCBpbiAlcyIgJSBwX2Z1bmMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICMgQ29udGV4dCBtZXRob2RzIGFyZSBwb3NpdGlvbmFsIG9ubHkgaW4gdGhlIEMgdmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNfa2luZCksIGxlbihwX2tpbmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9InBhcmFtZXRlciBraW5kIG1pc21hdGNoIGluICVzIiAlIHBfZnVuYykKKworICAgICAgICAgICAgICAgICAgICAjIFJ1biB0aGUgZnVuY3Rpb246CisgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3ZHMgPSBta2FyZ3MoQywgY19zaWcpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoY190eXBlKDkpLCBhdHRyKSgqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoImludmFsaWQgc2lnbmF0dXJlIGZvciAlczogJXMgJXMiICUgKGNfZnVuYywgYXJncywga3dkcykpCisKKyAgICAgICAgICAgICAgICAgICAgYXJncywga3dkcyA9IG1rYXJncyhQLCBwX3NpZykKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihwX3R5cGUoOSksIGF0dHIpKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiaW52YWxpZCBzaWduYXR1cmUgZm9yICVzOiAlcyAlcyIgJSAocF9mdW5jLCBhcmdzLCBrd2RzKSkKKworICAgICAgICBkb2l0KCdEZWNpbWFsJykKKyAgICAgICAgZG9pdCgnQ29udGV4dCcpCisKKwogYWxsX3Rlc3RzID0gWwogICBDRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0LCBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwKICAgQ0ltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsCkBAIC01NDM0LDYgKzU1NTgsNyBAQAogICAgIGFsbF90ZXN0cyA9IGFsbF90ZXN0c1sxOjoyXQogZWxzZToKICAgICBhbGxfdGVzdHMuaW5zZXJ0KDAsIENoZWNrQXR0cmlidXRlcykKKyAgICBhbGxfdGVzdHMuaW5zZXJ0KDEsIFNpZ25hdHVyZVRlc3QpCiAKIAogZGVmIHRlc3RfbWFpbihhcml0aD1Ob25lLCB2ZXJib3NlPU5vbmUsIHRvZG9fdGVzdHM9Tm9uZSwgZGVidWc9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY29yYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2RlY29yYXRvcnMucHkKaW5kZXggNTNjOTQ2OS4uZDBhMmVjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNvcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjb3JhdG9ycy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGRlZiBmdW5jYXR0cnMoKiprd2RzKToKICAgICBkZWYgZGVjb3JhdGUoZnVuYyk6CkBAIC0zMDEsOSArMzAwLDUgQEAKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5leHRyYSwgJ3NlY29uZCcpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0RGVjb3JhdG9ycykKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0Q2xhc3NEZWNvcmF0b3JzKQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVmYXVsdGRpY3QucHkgYi9MaWIvdGVzdC90ZXN0X2RlZmF1bHRkaWN0LnB5CmluZGV4IDUzMmQ1MzUuLmE5MGJjMmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVmYXVsdGRpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZWZhdWx0ZGljdC5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIApAQCAtMTU3LDggKzE1Niw5IEBACiAgICAgICAgICAgICBkZWYgX2ZhY3Rvcnkoc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFtdCiAgICAgICAgIGQgPSBzdWIoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihkKS5zdGFydHN3aXRoKAotICAgICAgICAgICAgImRlZmF1bHRkaWN0KDxib3VuZCBtZXRob2Qgc3ViLl9mYWN0b3J5IG9mIGRlZmF1bHRkaWN0KC4uLiIpKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZCksCisgICAgICAgICAgICByImRlZmF1bHRkaWN0XCg8Ym91bmQgbWV0aG9kIC4qc3ViXC5fZmFjdG9yeSAiCisgICAgICAgICAgICByIm9mIGRlZmF1bHRkaWN0XChcLlwuXC4sIFx7XH1cKT4sIFx7XH1cKSIpCiAKICAgICAgICAgIyBOT1RFOiBwcmludGluZyBhIHN1YmNsYXNzIG9mIGEgYnVpbHRpbiB0eXBlIGRvZXMgbm90IGNhbGwgaXRzCiAgICAgICAgICMgdHBfcHJpbnQgc2xvdC4gU28gdGhpcyBwYXJ0IGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIHRlc3QgYXMgYWJvdmUuCkBAIC0xODMsOCArMTgzLDUgQEAKICAgICAgICAgICAgIG8gPSBwaWNrbGUubG9hZHMocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgbykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3REZWZhdWx0RGljdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggNWVjYmM3My4uODcxODcxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0xNjQsNiArMTY0LDI2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4ID4gIHksIGxpc3QoeCkgPiAgbGlzdCh5KSwgKHgseSkpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4ID49IHksIGxpc3QoeCkgPj0gbGlzdCh5KSwgKHgseSkpCiAKKyAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKKyAgICAgICAgbiA9IDIwMAorCisgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaSBpbiBkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoKG4rMSkgbm90IGluIGQpCisKKyAgICAgICAgIyBUZXN0IGRldGVjdGlvbiBvZiBtdXRhdGlvbiBkdXJpbmcgaXRlcmF0aW9uCisgICAgICAgIGQgPSBkZXF1ZShyYW5nZShuKSkKKyAgICAgICAgZFtuLy8yXSA9IE11dGF0ZUNtcChkLCBGYWxzZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgbiBpbiBkCisKKyAgICAgICAgIyBUZXN0IGRldGVjdGlvbiBvZiBjb21wYXJpc29uIGV4Y2VwdGlvbnMKKyAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICBkW24vLzJdID0gQmFkQ21wKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgbiBpbiBkCisKICAgICBkZWYgdGVzdF9leHRlbmQoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZC5leHRlbmQsIDEpCkBAIC0xNzIsNiArMTkyLDI2IEBACiAgICAgICAgIGQuZXh0ZW5kKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdCgnYWJjZGFiY2QnKSkKIAorICAgIGRlZiB0ZXN0X2FkZChzZWxmKToKKyAgICAgICAgZCA9IGRlcXVlKCkKKyAgICAgICAgZSA9IGRlcXVlKCdhYmMnKQorICAgICAgICBmID0gZGVxdWUoJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCArIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSArIGYsIGRlcXVlKCdhYmNkZWYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlICsgZSwgZGVxdWUoJ2FiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUgKyBkLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCArIGUsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChkICsgZCwgZGVxdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChlICsgZCwgZGVxdWUoJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGQgKyBlLCBkZXF1ZSgnYWJjJykpCisKKyAgICAgICAgZyA9IGRlcXVlKCdhYmNkZWYnLCBtYXhsZW49NCkKKyAgICAgICAgaCA9IGRlcXVlKCdnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZyArIGgsIGRlcXVlKCdlZmdoJykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZGVxdWUoJ2FiYycpICsgJ2RlZicKKwogICAgIGRlZiB0ZXN0X2lhZGQoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnYScpCiAgICAgICAgIGQgKz0gJ2JjZCcKQEAgLTIxMSw2ICsyNTEsMTE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGQuX19nZXRpdGVtX18sIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIGQuX19nZXRpdGVtX18sIC0xKQogCisgICAgZGVmIHRlc3RfaW5kZXgoc2VsZik6CisgICAgICAgIGZvciBuIGluIDEsIDIsIDMwLCA0MCwgMjAwOgorCisgICAgICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaW5kZXgoaSksIGkpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgZC5pbmRleChuKzEpCisKKyAgICAgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgbXV0YXRpb24gZHVyaW5nIGl0ZXJhdGlvbgorICAgICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQorICAgICAgICAgICAgZFtuLy8yXSA9IE11dGF0ZUNtcChkLCBGYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICBkLmluZGV4KG4pCisKKyAgICAgICAgICAgICMgVGVzdCBkZXRlY3Rpb24gb2YgY29tcGFyaXNvbiBleGNlcHRpb25zCisgICAgICAgICAgICBkID0gZGVxdWUocmFuZ2UobikpCisgICAgICAgICAgICBkW24vLzJdID0gQmFkQ21wKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgICAgICBkLmluZGV4KG4pCisKKyAgICAgICAgIyBUZXN0IHN0YXJ0IGFuZCBzdG9wIGFyZ3VtZW50cyBiZWhhdmlvciBtYXRjaGVzIGxpc3QuaW5kZXgoKQorICAgICAgICBlbGVtZW50cyA9ICdBQkNERUZHSEknCisgICAgICAgIG5vbmVsZW1lbnQgPSAnWicKKyAgICAgICAgZCA9IGRlcXVlKGVsZW1lbnRzICogMikKKyAgICAgICAgcyA9IGxpc3QoZWxlbWVudHMgKiAyKQorICAgICAgICBmb3Igc3RhcnQgaW4gcmFuZ2UoLTUgLSBsZW4ocykqMiwgNSArIGxlbihzKSAqIDIpOgorICAgICAgICAgICAgZm9yIHN0b3AgaW4gcmFuZ2UoLTUgLSBsZW4ocykqMiwgNSArIGxlbihzKSAqIDIpOgorICAgICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1lbnRzICsgJ1onOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBzLmluZGV4KGVsZW1lbnQsIHN0YXJ0LCBzdG9wKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKKworICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgICAgIGQgPSBkZXF1ZSgnQScgKiAzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaSA9IGQuaW5kZXgoIkhlbGxvIHdvcmxkIiwgMCwgNCkKKworICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRvIG1ha2Ugc3VyZSBpbnNlcnQgYmVoYXZlcyBsaWtlIGxpc3RzCisgICAgICAgIGVsZW1lbnRzID0gJ0FCQ0RFRkdISScKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUgLSBsZW4oZWxlbWVudHMpKjIsIDUgKyBsZW4oZWxlbWVudHMpICogMik6CisgICAgICAgICAgICBkID0gZGVxdWUoJ0FCQ0RFRkdISScpCisgICAgICAgICAgICBzID0gbGlzdCgnQUJDREVGR0hJJykKKyAgICAgICAgICAgIGQuaW5zZXJ0KGksICdaJykKKyAgICAgICAgICAgIHMuaW5zZXJ0KGksICdaJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgcykKKworICAgIGRlZiB0ZXN0X2ltdWwoc2VsZik6CisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoKQorICAgICAgICAgICAgZCAqPSBuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRlcXVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShkLm1heGxlbikKKworICAgICAgICBmb3IgbiBpbiAoLTEwLCAtMSwgMCwgMSwgMiwgMTAsIDEwMDApOgorICAgICAgICAgICAgZCA9IGRlcXVlKCdhJykKKyAgICAgICAgICAgIGQgKj0gbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkZXF1ZSgnYScgKiBuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQubWF4bGVuKQorCisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgNDk5LCA1MDAsIDUwMSwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoJ2EnLCA1MDApCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoJ2EnICogbWluKG4sIDUwMCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLm1heGxlbiwgNTAwKQorCisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoJ2FiY2RlZicpCisgICAgICAgICAgICBkICo9IG4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGVxdWUoJ2FiY2RlZicgKiBuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGQubWF4bGVuKQorCisgICAgICAgIGZvciBuIGluICgtMTAsIC0xLCAwLCAxLCAyLCAxMCwgNDk5LCA1MDAsIDUwMSwgMTAwMCk6CisgICAgICAgICAgICBkID0gZGVxdWUoJ2FiY2RlZicsIDUwMCkKKyAgICAgICAgICAgIGQgKj0gbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkZXF1ZSgoJ2FiY2RlZicgKiBuKVstNTAwOl0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLm1heGxlbiwgNTAwKQorCisgICAgZGVmIHRlc3RfbXVsKHNlbGYpOgorICAgICAgICBkID0gZGVxdWUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIC01LCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAwLCBkZXF1ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQgKiAxLCBkZXF1ZSgnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDIsIGRlcXVlKCdhYmNhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMywgZGVxdWUoJ2FiY2FiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KGQgKiAxLCBkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVxdWUoKSAqIDAsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVxdWUoKSAqIDEsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVxdWUoKSAqIDUsIGRlcXVlKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtNSAqIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCAqIGQsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSAqIGQsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICogZCwgZGVxdWUoJ2FiY2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMgKiBkLCBkZXF1ZSgnYWJjYWJjYWJjJykpCisKKyAgICAgICAgZCA9IGRlcXVlKCdhYmMnLCBtYXhsZW49NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogLTUsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDAsIGRlcXVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDEsIGRlcXVlKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkICogMiwgZGVxdWUoJ2JjYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCAqIDMwLCBkZXF1ZSgnYmNhYmMnKSkKKwogICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CiAgICAgICAgIG4gPSAyMDAKICAgICAgICAgZCA9IGRlcXVlKHJhbmdlKG4pKQpAQCAtNTA0LDEwICs2NTQsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAorICAgIGRlZiB0ZXN0X2NvcHlfbWV0aG9kKHNlbGYpOgorICAgICAgICBtdXQgPSBbMTBdCisgICAgICAgIGQgPSBkZXF1ZShbbXV0XSkKKyAgICAgICAgZSA9IGQuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKKyAgICAgICAgbXV0WzBdID0gMTEKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKKwogICAgIGRlZiB0ZXN0X3JldmVyc2VkKHNlbGYpOgogICAgICAgICBmb3IgcyBpbiAoJ2FiY2QnLCByYW5nZSgyMDAwKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQoZGVxdWUocykpKSwgbGlzdChyZXZlcnNlZChzKSkpCiAKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9uZXcoc2VsZik6CisgICAgICAgIGtsYXNzID0gdHlwZShyZXZlcnNlZChkZXF1ZSgpKSkKKyAgICAgICAgZm9yIHMgaW4gKCdhYmNkJywgcmFuZ2UoMjAwMCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtsYXNzKGRlcXVlKHMpKSksIGxpc3QocmV2ZXJzZWQocykpKQorCiAgICAgZGVmIHRlc3RfZ2NfZG9lc250X2Jsb3d1cChzZWxmKToKICAgICAgICAgaW1wb3J0IGdjCiAgICAgICAgICMgVGhpcyB1c2VkIHRvIGFzc2VydC1mYWlsIGluIGRlcXVlX3RyYXZlcnNlKCkgdW5kZXIgYSBkZWJ1ZwpAQCAtNTM3LDcgKzcwMSw3IEBACiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6Ci0gICAgICAgIEJMT0NLTEVOID0gNjIKKyAgICAgICAgQkxPQ0tMRU4gPSA2NAogICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJQNG5sUCcpCiAgICAgICAgIGJsb2Nrc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnMlAlZFAnICUgQkxPQ0tMRU4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqZWN0Ll9fc2l6ZW9mX18oZGVxdWUoKSksIGJhc2VzaXplKQpAQCAtNjg0LDYgKzg0OCwyMSBAQAogICAgICAgICAjIFNGIGJ1ZyAjMTQ4NjY2MyAtLSB0aGlzIHVzZWQgdG8gZXJyb25lb3VzbHkgcmFpc2UgYSBUeXBlRXJyb3IKICAgICAgICAgU3ViY2xhc3NXaXRoS3dhcmdzKG5ld2FyZz0xKQogCitjbGFzcyBUZXN0U2VxdWVuY2Uoc2VxX3Rlc3RzLkNvbW1vblRlc3QpOgorICAgIHR5cGUydGVzdCA9IGRlcXVlCisKKyAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgorICAgICAgICAjIEZvciBub3csIGJ5cGFzcyB0ZXN0cyB0aGF0IHJlcXVpcmUgc2xpY2luZworICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZShzZWxmKToKKyAgICAgICAgIyBGb3Igbm93LCBieXBhc3MgdGVzdHMgdGhhdCByZXF1aXJlIHNsaWNpbmcKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfc3Vic2NyaXB0KHNlbGYpOgorICAgICAgICAjIEZvciBub3csIGJ5cGFzcyB0ZXN0cyB0aGF0IHJlcXVpcmUgc2xpY2luZworICAgICAgICBwYXNzCisKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogbGlicmVmdGVzdCA9ICIiIgpAQCAtNzk4LDYgKzk3Nyw3IEBACiAgICAgICAgIFRlc3RWYXJpb3VzSXRlcmF0b3JBcmdzLAogICAgICAgICBUZXN0U3ViY2xhc3MsCiAgICAgICAgIFRlc3RTdWJjbGFzc1dpdGhLd2FyZ3MsCisgICAgICAgIFRlc3RTZXF1ZW5jZSwKICAgICApCiAKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggOWE2MGExMi4uYzc0ZWJhZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC0yMSw2ICsyMSw3IEBACiAgICAgICAgICAgICAnYWRkJzogJysnLAogICAgICAgICAgICAgJ3N1Yic6ICctJywKICAgICAgICAgICAgICdtdWwnOiAnKicsCisgICAgICAgICAgICAnbWF0bXVsJzogJ0AnLAogICAgICAgICAgICAgJ3RydWVkaXYnOiAnLycsCiAgICAgICAgICAgICAnZmxvb3JkaXYnOiAnLy8nLAogICAgICAgICAgICAgJ2Rpdm1vZCc6ICdkaXZtb2QnLApAQCAtMTAxOSw2ICsxMDIwLDY3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeydmb28nOiAxfSkKIAorICAgIGRlZiB0ZXN0X29iamVjdF9jbGFzc19hc3NpZ25tZW50X2JldHdlZW5faGVhcHR5cGVzX2FuZF9ub25oZWFwdHlwZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YlR5cGUodHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBhID0gMQorCisgICAgICAgIG0gPSB0eXBlcy5Nb2R1bGVUeXBlKCJtIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uX19jbGFzc19fIGlzIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtLCAiYSIpKQorCisgICAgICAgIG0uX19jbGFzc19fID0gU3ViVHlwZQorICAgICAgICBzZWxmLmFzc2VydFRydWUobS5fX2NsYXNzX18gaXMgU3ViVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobSwgImEiKSkKKworICAgICAgICBtLl9fY2xhc3NfXyA9IHR5cGVzLk1vZHVsZVR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uX19jbGFzc19fIGlzIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtLCAiYSIpKQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgYnVpbHRpbiBpbW11dGFibGUgb2JqZWN0cyBkb24ndCBzdXBwb3J0IF9fY2xhc3NfXworICAgICAgICAjIGFzc2lnbm1lbnQsIGJlY2F1c2UgdGhlIG9iamVjdCBpbnN0YW5jZXMgbWF5IGJlIGludGVybmVkLgorICAgICAgICAjIFdlIHNldCBfX3Nsb3RzX18gPSAoKSB0byBlbnN1cmUgdGhhdCB0aGUgc3ViY2xhc3NlcyBhcmUKKyAgICAgICAgIyBtZW1vcnktbGF5b3V0IGNvbXBhdGlibGUsIGFuZCB0aHVzIG90aGVyd2lzZSByZWFzb25hYmxlIGNhbmRpZGF0ZXMKKyAgICAgICAgIyBmb3IgX19jbGFzc19fIGFzc2lnbm1lbnQuCisKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIHR5cGVzIGhhdmUgaW1tdXRhYmxlIGluc3RhbmNlcywgYnV0IGFyZSBub3QKKyAgICAgICAgIyBzdWJjbGFzc2FibGUgYW5kIHRodXMgZG9uJ3QgbmVlZCB0byBiZSBjaGVja2VkOgorICAgICAgICAjICAgTm9uZVR5cGUsIGJvb2wKKworICAgICAgICBjbGFzcyBNeUludChpbnQpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgKDEpLl9fY2xhc3NfXyA9IE15SW50CisKKyAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAoMS4wKS5fX2NsYXNzX18gPSBNeUZsb2F0CisKKyAgICAgICAgY2xhc3MgTXlDb21wbGV4KGNvbXBsZXgpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgKDEgKyAyaikuX19jbGFzc19fID0gTXlDb21wbGV4CisKKyAgICAgICAgY2xhc3MgTXlTdHIoc3RyKToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICJhIi5fX2NsYXNzX18gPSBNeVN0cgorCisgICAgICAgIGNsYXNzIE15Qnl0ZXMoYnl0ZXMpOgorICAgICAgICAgICAgX19zbG90c19fID0gKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYiJhIi5fX2NsYXNzX18gPSBNeUJ5dGVzCisKKyAgICAgICAgY2xhc3MgTXlUdXBsZSh0dXBsZSk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAoKS5fX2NsYXNzX18gPSBNeVR1cGxlCisKKyAgICAgICAgY2xhc3MgTXlGcm96ZW5TZXQoZnJvemVuc2V0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGZyb3plbnNldCgpLl9fY2xhc3NfXyA9IE15RnJvemVuU2V0CisKICAgICBkZWYgdGVzdF9zbG90cyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIF9fc2xvdHNfXy4uLgogICAgICAgICBjbGFzcyBDMChvYmplY3QpOgpAQCAtMjAwNSw3ICsyMDY3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhyYXcuZnNldCwgQy5fX2RpY3RfX1snc2V0eCddKQogICAgICAgICBzZWxmLmFzc2VydElzKHJhdy5mZGVsLCBDLl9fZGljdF9fWydkZWx4J10pCiAKLSAgICAgICAgZm9yIGF0dHIgaW4gIl9fZG9jX18iLCAiZmdldCIsICJmc2V0IiwgImZkZWwiOgorICAgICAgICBmb3IgYXR0ciBpbiAiZmdldCIsICJmc2V0IiwgImZkZWwiOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNldGF0dHIocmF3LCBhdHRyLCA0MikKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBtc2c6CkBAIC0yMDE2LDYgKzIwNzgsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgQXR0cmlidXRlRXJyb3IgZnJvbSB0cnlpbmcgdG8gc2V0IHJlYWRvbmx5ICVyICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHIgb24gYSBwcm9wZXJ0eSIgJSBhdHRyKQogCisgICAgICAgIHJhdy5fX2RvY19fID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXcuX19kb2NfXywgNDIpCisKICAgICAgICAgY2xhc3MgRChvYmplY3QpOgogICAgICAgICAgICAgX19nZXRpdGVtX18gPSBwcm9wZXJ0eShsYW1iZGEgczogMS8wKQogCkBAIC0zMDAzLDggKzMwNjgsNiBAQAogICAgICAgICBjYW50KG9iamVjdCgpLCBsaXN0KQogICAgICAgICBjYW50KGxpc3QoKSwgb2JqZWN0KQogICAgICAgICBjbGFzcyBJbnQoaW50KTogX19zbG90c19fID0gW10KLSAgICAgICAgY2FudCgyLCBJbnQpCi0gICAgICAgIGNhbnQoSW50KCksIGludCkKICAgICAgICAgY2FudChUcnVlLCBpbnQpCiAgICAgICAgIGNhbnQoMiwgYm9vbCkKICAgICAgICAgbyA9IG9iamVjdCgpCkBAIC0zMzI0LDcgKzMzODcsNyBAQAogICAgICAgICBBLl9fY2FsbF9fID0gQSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIEEoKSgpCi0gICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVjdXJzaW9uIGxpbWl0IHNob3VsZCBoYXZlIGJlZW4gcmVhY2hlZCBmb3IgX19jYWxsX18oKSIpCkBAIC00MTUzLDYgKzQyMTYsNyBAQAogICAgICAgICAgICAgICAgICgnX19hZGRfXycsICAgICAgJ3ggKyB5JywgICAgICAgICAgICAgICAgICAgJ3ggKz0geScpLAogICAgICAgICAgICAgICAgICgnX19zdWJfXycsICAgICAgJ3ggLSB5JywgICAgICAgICAgICAgICAgICAgJ3ggLT0geScpLAogICAgICAgICAgICAgICAgICgnX19tdWxfXycsICAgICAgJ3ggKiB5JywgICAgICAgICAgICAgICAgICAgJ3ggKj0geScpLAorICAgICAgICAgICAgICAgICgnX19tYXRtdWxfXycsICAgJ3ggQCB5JywgICAgICAgICAgICAgICAgICAgJ3ggQD0geScpLAogICAgICAgICAgICAgICAgICgnX190cnVlZGl2X18nLCAgJ3ggLyB5JywgICAgICAgICAgICAgICAgICAgJ3ggLz0geScpLAogICAgICAgICAgICAgICAgICgnX19mbG9vcmRpdl9fJywgJ3ggLy8geScsICAgICAgICAgICAgICAgICAgJ3ggLy89IHknKSwKICAgICAgICAgICAgICAgICAoJ19fbW9kX18nLCAgICAgICd4ICUgeScsICAgICAgICAgICAgICAgICAgICd4ICU9IHknKSwKQEAgLTQyOTgsOCArNDM2Miw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIEZvby5fX3JlcHJfXyA9IEZvby5fX3N0cl9fCiAgICAgICAgIGZvbyA9IEZvbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc3RyLCBmb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVwciwgZm9vKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgc3RyLCBmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCByZXByLCBmb28pCiAKICAgICBkZWYgdGVzdF9taXhpbmdfc2xvdF93cmFwcGVycyhzZWxmKToKICAgICAgICAgY2xhc3MgWChkaWN0KToKQEAgLTQ0MTQsNiArNDQ3OCw2MSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCJfX2RpY3RfXyIsIEJhc2UuX19kaWN0X18pCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIl9fZGljdF9fIiwgU3ViLl9fZGljdF9fKQogCisgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kX3JlcHIoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoRm9vKCkubWV0aG9kKSwKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkZvb1wubWV0aG9kIG9mIDwuKkZvbyBvYmplY3QgYXQgLio+PiIpCisKKworICAgICAgICBjbGFzcyBCYXNlOgorICAgICAgICAgICAgZGVmIG1ldGhvZChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIERlcml2ZWQxKEJhc2UpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBEZXJpdmVkMihCYXNlKToKKyAgICAgICAgICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBiYXNlID0gQmFzZSgpCisgICAgICAgIGRlcml2ZWQxID0gRGVyaXZlZDEoKQorICAgICAgICBkZXJpdmVkMiA9IERlcml2ZWQyKCkKKyAgICAgICAgc3VwZXJfZDIgPSBzdXBlcihEZXJpdmVkMiwgZGVyaXZlZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihiYXNlLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipCYXNlXC5tZXRob2Qgb2YgPC4qQmFzZSBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihkZXJpdmVkMS5tZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIC4qQmFzZVwubWV0aG9kIG9mIDwuKkRlcml2ZWQxIG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGRlcml2ZWQyLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipEZXJpdmVkMlwubWV0aG9kIG9mIDwuKkRlcml2ZWQyIG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKHN1cGVyX2QyLm1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgLipCYXNlXC5tZXRob2Qgb2YgPC4qRGVyaXZlZDIgb2JqZWN0IGF0IC4qPj4iKQorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIG1ldGhvZChjbHMpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGZvby5tZXRob2QpLCAjIGFjY2VzcyB2aWEgaW5zdGFuY2UKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkZvb1wubWV0aG9kIG9mIDxjbGFzcyAnLipGb28nPj4iKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoRm9vLm1ldGhvZCksICMgYWNjZXNzIHZpYSB0aGUgY2xhc3MKKyAgICAgICAgICAgIHIiPGJvdW5kIG1ldGhvZCAuKkZvb1wubWV0aG9kIG9mIDxjbGFzcyAnLipGb28nPj4iKQorCisKKyAgICAgICAgY2xhc3MgTXlDYWxsYWJsZToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZnVuYyA9IE15Q2FsbGFibGUoKSAjIGZ1bmMgaGFzIG5vIF9fbmFtZV9fIG9yIF9fcXVhbG5hbWVfXyBhdHRyaWJ1dGVzCisgICAgICAgIGluc3RhbmNlID0gb2JqZWN0KCkKKyAgICAgICAgbWV0aG9kID0gdHlwZXMuTWV0aG9kVHlwZShmdW5jLCBpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKG1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgXD8gb2YgPG9iamVjdCBvYmplY3QgYXQgLio+PiIpCisgICAgICAgIGZ1bmMuX19uYW1lX18gPSAibmFtZSIKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKG1ldGhvZCksCisgICAgICAgICAgICByIjxib3VuZCBtZXRob2QgbmFtZSBvZiA8b2JqZWN0IG9iamVjdCBhdCAuKj4+IikKKyAgICAgICAgZnVuYy5fX3F1YWxuYW1lX18gPSAicXVhbG5hbWUiCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihtZXRob2QpLAorICAgICAgICAgICAgciI8Ym91bmQgbWV0aG9kIHF1YWxuYW1lIG9mIDxvYmplY3Qgb2JqZWN0IGF0IC4qPj4iKQorCiAKIGNsYXNzIERpY3RQcm94eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00NTI4LDI2ICs0NjQ3LDE1IEBACiAKICAgICBkZWYgX2NoZWNrX3JlZHVjZShzZWxmLCBwcm90bywgb2JqLCBhcmdzPSgpLCBrd2FyZ3M9e30sIHN0YXRlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdGl0ZW1zPU5vbmUsIGRpY3RpdGVtcz1Ob25lKToKLSAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgaWYgcHJvdG8gPj0gMjoKICAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IG9iai5fX3JlZHVjZV9leF9fKHByb3RvKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29weXJlZy5fX25ld29ial9leF9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUob2JqKSwgYXJncywga3dhcmdzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlKSkKLSAgICAgICAgICAgIGlmIGxpc3RpdGVtcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaXN0KHJlZHVjZV92YWx1ZVszXSksIGxpc3RpdGVtcykKKyAgICAgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVswXSwgY29weXJlZy5fX25ld29ial9leF9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzFdLCAodHlwZShvYmopLCBhcmdzLCBrd2FyZ3MpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWR1Y2VfdmFsdWVbM10pCi0gICAgICAgICAgICBpZiBkaWN0aXRlbXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoZGljdChyZWR1Y2VfdmFsdWVbNF0pLCBkaWN0aXRlbXMpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZHVjZV92YWx1ZVs0XSkKLSAgICAgICAgZWxpZiBwcm90byA+PSAyOgotICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gb2JqLl9fcmVkdWNlX2V4X18ocHJvdG8pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVs6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5cmVnLl9fbmV3b2JqX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShvYmopLCkgKyBhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVkdWNlX3ZhbHVlWzBdLCBjb3B5cmVnLl9fbmV3b2JqX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWR1Y2VfdmFsdWVbMV0sICh0eXBlKG9iaiksKSArIGFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZHVjZV92YWx1ZVsyXSwgc3RhdGUpCiAgICAgICAgICAgICBpZiBsaXN0aXRlbXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChyZWR1Y2VfdmFsdWVbM10pLCBsaXN0aXRlbXMpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IGJkNzk3MjguLjI0ODhiNjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTk2MywxMiArOTYzLDUgQEAKIGNsYXNzIFN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKICAgICB0eXBlMnRlc3QgPSBEaWN0CiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgRGljdFRlc3QsCi0gICAgICAgIEdlbmVyYWxNYXBwaW5nVGVzdHMsCi0gICAgICAgIFN1YmNsYXNzTWFwcGluZ1Rlc3RzLAotICAgICkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCA3YjAyZWE5Li44ZDMzODAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIERpY3RTZXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTk2LDExICsxOTUsOCBAQAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgogICAgICAgICBkID0ge30KICAgICAgICAgZFs0Ml0gPSBkLnZhbHVlcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVwciwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIHJlcHIsIGQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KERpY3RTZXRUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKaW5kZXggMGJhOGYwZS4uYWI5ZGViZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQpAQCAtMTA3LDYgKzEwNywyMCBAQAogICAgNS4gRmxhdCBpcyBiZXR0ZXIgdGhhbiBuZXN0ZWQuCiAiIiIKIAorcGF0Y2g5MTQ1NzVfbm9uYXNjaWlfZnJvbTEgPSAiIiIKKyAgIDEuIEJlYXV0aWZ1bCBpcyBiZVRUZXIgdGhhbiB1Z2x5LgorICAgMi4gRXhwbGljaXQgaXMgYmV0dGVyIHRoYW4gxLFtcGzEsWPEsXQuCisgICAzLiBTaW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KKyAgIDQuIENvbXBsZXggaXMgYmV0dGVyIHRoYW4gY29tcGxpY2F0ZWQuCisiIiIKKworcGF0Y2g5MTQ1NzVfbm9uYXNjaWlfdG8xID0gIiIiCisgICAxLiBCZWF1dGlmdWwgaXMgYmV0dGVyIHRoYW4gw7xnbHkuCisgICAzLiAgIFPEsW1wbGUgaXMgYmV0dGVyIHRoYW4gY29tcGxleC4KKyAgIDQuIENvbXBsaWNhdGVkIGlzIGJldHRlciB0aGFuIGPDtm1wbGV4LgorICAgNS4gRmxhdCBpcyBiZXR0ZXIgdGhhbiBuZXN0ZWQuCisiIiIKKwogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKIFx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCiAgIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCkBAIC0yMjMsNiArMjM3LDI3IEBACiAgICAgICAgIG5ldyA9IFsoaSUyIGFuZCAiSzolZCIgb3IgIlY6QjolZCIpICUgaSBmb3IgaSBpbiByYW5nZShsaW1pdCoyKV0KICAgICAgICAgZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIoTm9uZSwgb2xkLCBuZXcpLmdldF9vcGNvZGVzKCkKIAorICAgIGRlZiB0ZXN0X21ha2VfZmlsZV9kZWZhdWx0X2NoYXJzZXQoc2VsZik6CisgICAgICAgIGh0bWxfZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKQorICAgICAgICBvdXRwdXQgPSBodG1sX2RpZmYubWFrZV9maWxlKHBhdGNoOTE0NTc1X2Zyb20xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaDkxNDU3NV90bzEuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiJywgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfbWFrZV9maWxlX2lzbzg4NTkxX2NoYXJzZXQoc2VsZik6CisgICAgICAgIGh0bWxfZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKQorICAgICAgICBvdXRwdXQgPSBodG1sX2RpZmYubWFrZV9maWxlKHBhdGNoOTE0NTc1X2Zyb20xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaDkxNDU3NV90bzEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9J2lzby04ODU5LTEnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSInLCBvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9tYWtlX2ZpbGVfdXNhc2NpaV9jaGFyc2V0X3dpdGhfbm9uYXNjaWlfaW5wdXQoc2VsZik6CisgICAgICAgIGh0bWxfZGlmZiA9IGRpZmZsaWIuSHRtbERpZmYoKQorICAgICAgICBvdXRwdXQgPSBodG1sX2RpZmYubWFrZV9maWxlKHBhdGNoOTE0NTc1X25vbmFzY2lpX2Zyb20xLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaDkxNDU3NV9ub25hc2NpaV90bzEuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9J3VzLWFzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXVzLWFzY2lpIicsIG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignJiMzMDU7bXBsJiMzMDU7YyYjMzA1O3QnLCBvdXRwdXQpCisKIAogY2xhc3MgVGVzdE91dHB1dEZvcm1hdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfdGFiX2RlbGltaXRlcihzZWxmKToKQEAgLTI4NywxMiArMzIyLDE1NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdCgwLDApLCAnMCcpCiAKIAorY2xhc3MgVGVzdEJ5dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IHRoZSBjb250ZW50IG9mIHRoZSBvdXRwdXQsIGp1c3QgdGhlIGZhY3QKKyAgICAjIHRoYXQgaXQncyBieXRlcyBhbmQgd2UgZG9uJ3QgY3Jhc2gKKyAgICBkZWYgY2hlY2soc2VsZiwgZGlmZik6CisgICAgICAgIGRpZmYgPSBsaXN0KGRpZmYpICAgIyB0cmlnZ2VyIGV4Y2VwdGlvbnMgZmlyc3QKKyAgICAgICAgZm9yIGxpbmUgaW4gZGlmZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSgKKyAgICAgICAgICAgICAgICBsaW5lLCBieXRlcywKKyAgICAgICAgICAgICAgICAiYWxsIGxpbmVzIG9mIGRpZmYgc2hvdWxkIGJlIGJ5dGVzLCBidXQgZ290OiAlciIgJSBsaW5lKQorCisgICAgZGVmIHRlc3RfYnl0ZV9jb250ZW50KHNlbGYpOgorICAgICAgICAjIGlmIHdlIHJlY2VpdmUgYnl0ZSBzdHJpbmdzLCB3ZSByZXR1cm4gYnl0ZSBzdHJpbmdzCisgICAgICAgIGEgPSBbYidoZWxsbycsIGInYW5kclx4ZTknXSAgICAgIyBpc28tODg1OS0xIGJ5dGVzCisgICAgICAgIGIgPSBbYidoZWxsbycsIGInYW5kclx4YzNceGE5J10gIyB1dGYtOCBieXRlcworCisgICAgICAgIHVuaWZpZWQgPSBkaWZmbGliLnVuaWZpZWRfZGlmZgorICAgICAgICBjb250ZXh0ID0gZGlmZmxpYi5jb250ZXh0X2RpZmYKKworICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2sKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGEpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYikpCisKKyAgICAgICAgIyBub3cgd2l0aCBmaWxlbmFtZXMgKGNvbnRlbnQgYW5kIGZpbGVuYW1lcyBhcmUgYWxsIGJ5dGVzISkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGEsIGInYScsIGInYScpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgYidhJywgYidiJykpCisKKyAgICAgICAgIyBhbmQgd2l0aCBmaWxlbmFtZXMgYW5kIGRhdGVzCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBhLCBiJ2EnLCBiJ2EnLCBiJzIwMDUnLCBiJzIwMTMnKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGInYScsIGInYicsIGInMjAwNScsIGInMjAxMycpKQorCisgICAgICAgICMgc2FtZSBhbGwgb3ZlciBhZ2Fpbiwgd2l0aCBjb250ZXh0IGRpZmYKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGEpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYikpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBhLCBiJ2EnLCBiJ2EnKSkKKyAgICAgICAgY2hlY2soZGlmZmxpYi5kaWZmX2J5dGVzKGNvbnRleHQsIGEsIGIsIGInYScsIGInYicpKQorICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXMoY29udGV4dCwgYSwgYSwgYidhJywgYidhJywgYicyMDA1JywgYicyMDEzJykpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBiJ2EnLCBiJ2InLCBiJzIwMDUnLCBiJzIwMTMnKSkKKworICAgIGRlZiB0ZXN0X2J5dGVfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICAjIHNvbWVib2R5IHJlbmFtZWQgYSBmaWxlIGZyb20gSVNPLTg4NTktMiB0byBVVEYtOAorICAgICAgICBmbmEgPSBiJ1x4YjNvZHoudHh0JyAgICAjICLFgm9kei50eHQiCisgICAgICAgIGZuYiA9IGInXHhjNVx4ODJvZHoudHh0JworCisgICAgICAgICMgdGhleSB0cmFuc2NvZGVkIHRoZSBjb250ZW50IGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgYSA9IFtiJ1x4YTNvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nXQorICAgICAgICBiID0gW2InXHhjNVx4ODFvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nXQorCisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVjaworICAgICAgICB1bmlmaWVkID0gZGlmZmxpYi51bmlmaWVkX2RpZmYKKyAgICAgICAgY29udGV4dCA9IGRpZmZsaWIuY29udGV4dF9kaWZmCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBmbmEsIGZuYikpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBmbmEsIGZuYikpCisKKyAgICAgICAgZGVmIGFzc2VydERpZmYoZXhwZWN0LCBhY3R1YWwpOgorICAgICAgICAgICAgIyBkbyBub3QgY29tcGFyZSBleHBlY3QgYW5kIGVxdWFsIGFzIGxpc3RzLCBiZWNhdXNlIHVuaXR0ZXN0CisgICAgICAgICAgICAjIHVzZXMgZGlmZmxpYiB0byByZXBvcnQgZGlmZmVyZW5jZSBiZXR3ZWVuIGxpc3RzCisgICAgICAgICAgICBhY3R1YWwgPSBsaXN0KGFjdHVhbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdCksIGxlbihhY3R1YWwpKQorICAgICAgICAgICAgZm9yIGUsIGEgaW4gemlwKGV4cGVjdCwgYWN0dWFsKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGEpCisKKyAgICAgICAgZXhwZWN0ID0gWworICAgICAgICAgICAgYictLS0gXHhiM29kei50eHQnLAorICAgICAgICAgICAgYicrKysgXHhjNVx4ODJvZHoudHh0JywKKyAgICAgICAgICAgIGInQEAgLTEgKzEgQEAnLAorICAgICAgICAgICAgYictXHhhM29keiBpcyBhIGNpdHkgaW4gUG9sYW5kLicsCisgICAgICAgICAgICBiJytceGM1XHg4MW9keiBpcyBhIGNpdHkgaW4gUG9sYW5kLicsCisgICAgICAgIF0KKyAgICAgICAgYWN0dWFsID0gZGlmZmxpYi5kaWZmX2J5dGVzKHVuaWZpZWQsIGEsIGIsIGZuYSwgZm5iLCBsaW5ldGVybT1iJycpCisgICAgICAgIGFzc2VydERpZmYoZXhwZWN0LCBhY3R1YWwpCisKKyAgICAgICAgIyB3aXRoIGRhdGVzIChwbGFpbiBBU0NJSSkKKyAgICAgICAgZGF0ZWEgPSBiJzIwMDUtMDMtMTgnCisgICAgICAgIGRhdGViID0gYicyMDA1LTAzLTE5JworICAgICAgICBjaGVjayhkaWZmbGliLmRpZmZfYnl0ZXModW5pZmllZCwgYSwgYiwgZm5hLCBmbmIsIGRhdGVhLCBkYXRlYikpCisgICAgICAgIGNoZWNrKGRpZmZsaWIuZGlmZl9ieXRlcyhjb250ZXh0LCBhLCBiLCBmbmEsIGZuYiwgZGF0ZWEsIGRhdGViKSkKKworICAgICAgICBleHBlY3QgPSBbCisgICAgICAgICAgICAjIG5vdGUgdGhlIG1peGVkIGVuY29kaW5ncyBoZXJlOiB0aGlzIGlzIGRlZXBseSB3cm9uZyBieSBldmVyeQorICAgICAgICAgICAgIyB0ZW5ldCBvZiBVbmljb2RlLCBidXQgaXQgZG9lc24ndCBjcmFzaCwgaXQncyBwYXJzZWFibGUgYnkKKyAgICAgICAgICAgICMgcGF0Y2gsIGFuZCBpdCdzIGhvdyBVTklYKHRtKSBkaWZmIGJlaGF2ZXMKKyAgICAgICAgICAgIGInLS0tIFx4YjNvZHoudHh0XHQyMDA1LTAzLTE4JywKKyAgICAgICAgICAgIGInKysrIFx4YzVceDgyb2R6LnR4dFx0MjAwNS0wMy0xOScsCisgICAgICAgICAgICBiJ0BAIC0xICsxIEBAJywKKyAgICAgICAgICAgIGInLVx4YTNvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nLAorICAgICAgICAgICAgYicrXHhjNVx4ODFvZHogaXMgYSBjaXR5IGluIFBvbGFuZC4nLAorICAgICAgICBdCisgICAgICAgIGFjdHVhbCA9IGRpZmZsaWIuZGlmZl9ieXRlcyh1bmlmaWVkLCBhLCBiLCBmbmEsIGZuYiwgZGF0ZWEsIGRhdGViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXRlcm09YicnKQorICAgICAgICBhc3NlcnREaWZmKGV4cGVjdCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZXNfY29udGVudChzZWxmKToKKyAgICAgICAgIyB0eXBlIG9mIGlucHV0IGNvbnRlbnQgbXVzdCBiZSBjb25zaXN0ZW50OiBhbGwgc3RyIG9yIGFsbCBieXRlcworICAgICAgICBhID0gW2InaGVsbG8nXQorICAgICAgICBiID0gWydoZWxsbyddCisKKyAgICAgICAgdW5pZmllZCA9IGRpZmZsaWIudW5pZmllZF9kaWZmCisgICAgICAgIGNvbnRleHQgPSBkaWZmbGliLmNvbnRleHRfZGlmZgorCisgICAgICAgIGV4cGVjdCA9ICJsaW5lcyB0byBjb21wYXJlIG11c3QgYmUgc3RyLCBub3QgYnl0ZXMgKGInaGVsbG8nKSIKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCB1bmlmaWVkLCBhLCBiKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIHVuaWZpZWQsIGIsIGEpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgY29udGV4dCwgYSwgYikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBjb250ZXh0LCBiLCBhKQorCisgICAgICAgIGV4cGVjdCA9ICJhbGwgYXJndW1lbnRzIG11c3QgYmUgYnl0ZXMsIG5vdCBzdHIgKCdoZWxsbycpIgorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGRpZmZsaWIuZGlmZl9ieXRlcywgdW5pZmllZCwgYSwgYikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3R5cGVfZXJyb3IoZXhwZWN0LCBkaWZmbGliLmRpZmZfYnl0ZXMsIHVuaWZpZWQsIGIsIGEpCisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKGV4cGVjdCwgZGlmZmxpYi5kaWZmX2J5dGVzLCBjb250ZXh0LCBhLCBiKQorICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcihleHBlY3QsIGRpZmZsaWIuZGlmZl9ieXRlcywgY29udGV4dCwgYiwgYSkKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVzX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgIyBjYW5ub3QgcGFzcyBmaWxlbmFtZXMgYXMgYnl0ZXMgaWYgY29udGVudCBpcyBzdHIgKHRoaXMgbWF5IG5vdCBiZQorICAgICAgICAjIHRoZSByaWdodCBiZWhhdmlvdXIsIGJ1dCBhdCBsZWFzdCB0aGUgdGVzdCBkZW1vbnN0cmF0ZXMgaG93CisgICAgICAgICMgdGhpbmdzIHdvcmspCisgICAgICAgIGEgPSBbJ2hlbGxvXG4nXQorICAgICAgICBiID0gWydvaGVsbFxuJ10KKyAgICAgICAgZm5hID0gYidvbFx4ZTkudHh0JyAgICAgIyBmaWxlbmFtZSB0cmFuc2NvZGVkIGZyb20gSVNPLTg4NTktMQorICAgICAgICBmbmIgPSBiJ29sXHhjM2E5LnR4dCcgICAjIHRvIFVURi04CisgICAgICAgIHNlbGYuX2Fzc2VydF90eXBlX2Vycm9yKAorICAgICAgICAgICAgImFsbCBhcmd1bWVudHMgbXVzdCBiZSBzdHIsIG5vdDogYidvbFxceGU5LnR4dCciLAorICAgICAgICAgICAgZGlmZmxpYi51bmlmaWVkX2RpZmYsIGEsIGIsIGZuYSwgZm5iKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfdHlwZXNfZGF0ZXMoc2VsZik6CisgICAgICAgICMgdHlwZSBvZiBkYXRlcyBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCB0eXBlIG9mIGNvbnRlbnRzCisgICAgICAgIGEgPSBbYidmb29cbiddCisgICAgICAgIGIgPSBbYidiYXJcbiddCisgICAgICAgIGRhdGVhID0gJzEgZsOpdicKKyAgICAgICAgZGF0ZWIgPSAnMyBmw6l2JworICAgICAgICBzZWxmLl9hc3NlcnRfdHlwZV9lcnJvcigKKyAgICAgICAgICAgICJhbGwgYXJndW1lbnRzIG11c3QgYmUgYnl0ZXMsIG5vdCBzdHIgKCcxIGbDqXYnKSIsCisgICAgICAgICAgICBkaWZmbGliLmRpZmZfYnl0ZXMsIGRpZmZsaWIudW5pZmllZF9kaWZmLAorICAgICAgICAgICAgYSwgYiwgYidhJywgYidiJywgZGF0ZWEsIGRhdGViKQorCisgICAgICAgICMgaWYgaW5wdXQgaXMgc3RyLCBub24tQVNDSUkgZGF0ZXMgYXJlIGZpbmUKKyAgICAgICAgYSA9IFsnZm9vXG4nXQorICAgICAgICBiID0gWydiYXJcbiddCisgICAgICAgIGxpc3QoZGlmZmxpYi51bmlmaWVkX2RpZmYoYSwgYiwgJ2EnLCAnYicsIGRhdGVhLCBkYXRlYikpCisKKyAgICBkZWYgX2Fzc2VydF90eXBlX2Vycm9yKHNlbGYsIG1zZywgZ2VuZXJhdG9yLCAqYXJncyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjdHg6CisgICAgICAgICAgICBsaXN0KGdlbmVyYXRvcigqYXJncykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBzdHIoY3R4LmV4Y2VwdGlvbikpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGRpZmZsaWIuSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4ID0gMAogICAgIERvY3Rlc3RzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoZGlmZmxpYikKICAgICBydW5fdW5pdHRlc3QoCiAgICAgICAgIFRlc3RXaXRoQXNjaWksIFRlc3RBdXRvanVuaywgVGVzdFNGcGF0Y2hlcywgVGVzdFNGYnVncywKLSAgICAgICAgVGVzdE91dHB1dEZvcm1hdCwgRG9jdGVzdHMpCisgICAgICAgIFRlc3RPdXRwdXRGb3JtYXQsIFRlc3RCeXRlcywgRG9jdGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbCBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAppbmRleCA3MWI2ZDdhLi5lYTdhMjRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCkBAIC02LDcgKzYsNyBAQAogCiA8aGVhZD4KICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiCi0gICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiIC8+CisgICAgICAgICAgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgogICAgIDx0aXRsZT48L3RpdGxlPgogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgIHRhYmxlLmRpZmYge2ZvbnQtZmFtaWx5OkNvdXJpZXI7IGJvcmRlcjptZWRpdW07fQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCBiOGRhZmY3Li40MjFiYmFkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtMSw2ICsxLDYgQEAKICMgTWluaW1hbCB0ZXN0cyBmb3IgZGlzIG1vZHVsZQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gdGVzdC5ieXRlY29kZV9oZWxwZXIgaW1wb3J0IEJ5dGVjb2RlVGVzdENhc2UKIGltcG9ydCBkaWZmbGliCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTIzMCw2ICsyMzAsOSBAQAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNCwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDUpCiAKK2RlZiBfZyh4KToKKyAgICB5aWVsZCB4CisKIGNsYXNzIERpc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBnZXRfZGlzYXNzZW1ibHkoc2VsZiwgZnVuYywgbGFzdGk9LTEsIHdyYXBwZXI9VHJ1ZSk6CkBAIC0zMTUsNiArMzE4LDExIEBACiAgICAgICAgIG1ldGhvZF9ieXRlY29kZSA9IF9DKDEpLl9faW5pdF9fLl9fY29kZV9fLmNvX2NvZGUKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KG1ldGhvZF9ieXRlY29kZSwgZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBnZW5fZnVuY19kaXNhcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KF9nKSAgIyBEaXNhc3NlbWJsZSBnZW5lcmF0b3IgZnVuY3Rpb24KKyAgICAgICAgZ2VuX2Rpc2FzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoX2coMSkpICAjIERpc2Fzc2VtYmxlIGdlbmVyYXRvciBpdHNlbGYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5fZGlzYXMsIGdlbl9mdW5jX2Rpc2FzKQorCiAgICAgZGVmIHRlc3RfZGlzX25vbmUoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRlbCBzeXMubGFzdF90cmFjZWJhY2sKQEAgLTQ3Miw2ICs0ODAsMjQgQEAKIE5hbWVzOgogICAgMDogeCIiIgogCisKK2FzeW5jIGRlZiBhc3luY19kZWYoKToKKyAgICBhd2FpdCAxCisgICAgYXN5bmMgZm9yIGEgaW4gYjogcGFzcworICAgIGFzeW5jIHdpdGggYyBhcyBkOiBwYXNzCisKK2NvZGVfaW5mb19hc3luY19kZWYgPSAiIiJcCitOYW1lOiAgICAgICAgICAgICAgYXN5bmNfZGVmCitGaWxlbmFtZTogICAgICAgICAgKC4qKQorQXJndW1lbnQgY291bnQ6ICAgIDAKK0t3LW9ubHkgYXJndW1lbnRzOiAwCitOdW1iZXIgb2YgbG9jYWxzOiAgMgorU3RhY2sgc2l6ZTogICAgICAgIDE3CitGbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIEdFTkVSQVRPUiwgTk9GUkVFLCBDT1JPVVRJTkUKK0NvbnN0YW50czoKKyAgIDA6IE5vbmUKKyAgIDE6IDEiIiIKKwogY2xhc3MgQ29kZUluZm9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGVzdF9wYWlycyA9IFsKICAgICAgIChkaXMuY29kZV9pbmZvLCBjb2RlX2luZm9fY29kZV9pbmZvKSwKQEAgLTQ4MCw2ICs1MDYsNyBAQAogICAgICAgKGV4cHJfc3RyLCBjb2RlX2luZm9fZXhwcl9zdHIpLAogICAgICAgKHNpbXBsZV9zdG10X3N0ciwgY29kZV9pbmZvX3NpbXBsZV9zdG10X3N0ciksCiAgICAgICAoY29tcG91bmRfc3RtdF9zdHIsIGNvZGVfaW5mb19jb21wb3VuZF9zdG10X3N0ciksCisgICAgICAoYXN5bmNfZGVmLCBjb2RlX2luZm9fYXN5bmNfZGVmKQogICAgIF0KIAogICAgIGRlZiB0ZXN0X2NvZGVfaW5mbyhzZWxmKToKQEAgLTU2MSwxMCArNTg4LDEwIEBACiAjX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyLCBmaXJzdF9saW5lPWV4cGVjdGVkX291dGVyX2xpbmUpCiAjcHJpbnQoJ2V4cGVjdGVkX29waW5mb19vdXRlciA9IFtcbiAgJywKICAgICAgICMnLFxuICAnLmpvaW4obWFwKHN0ciwgX2luc3RydWN0aW9ucykpLCAnLFxuXScsIHNlcD0nJykKLSNfaW5zdHJ1Y3Rpb25zID0gZGlzLmdldF9pbnN0cnVjdGlvbnMob3V0ZXIoKSwgZmlyc3RfbGluZT1leHBlY3RlZF9vdXRlcl9saW5lKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpLCBmaXJzdF9saW5lPWV4cGVjdGVkX2ZfbGluZSkKICNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX2YgPSBbXG4gICcsCiAgICAgICAjJyxcbiAgJy5qb2luKG1hcChzdHIsIF9pbnN0cnVjdGlvbnMpKSwgJyxcbl0nLCBzZXA9JycpCi0jX2luc3RydWN0aW9ucyA9IGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKG91dGVyKCkoKSwgZmlyc3RfbGluZT1leHBlY3RlZF9vdXRlcl9saW5lKQorI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhvdXRlcigpKCksIGZpcnN0X2xpbmU9ZXhwZWN0ZWRfaW5uZXJfbGluZSkKICNwcmludCgnZXhwZWN0ZWRfb3BpbmZvX2lubmVyID0gW1xuICAnLAogICAgICAgIycsXG4gICcuam9pbihtYXAoc3RyLCBfaW5zdHJ1Y3Rpb25zKSksICcsXG5dJywgc2VwPScnKQogI19pbnN0cnVjdGlvbnMgPSBkaXMuZ2V0X2luc3RydWN0aW9ucyhqdW1weSwgZmlyc3RfbGluZT1leHBlY3RlZF9qdW1weV9saW5lKQpAQCAtNjM1LDEyICs2NjIsMTIgQEAKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2p1bXB5ID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NzQsIGFyZ3ZhbD03NywgYXJncmVwcj0ndG8gNzcnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD03MSwgYXJncmVwcj0ndG8gNzEnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTUwLCBhcmd2YWw9NjYsIGFyZ3JlcHI9J3RvIDY2Jywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTQ0LCBhcmd2YWw9NjAsIGFyZ3JlcHI9J3RvIDYwJywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTksIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLApAQCAtNjQ5LDkyICs2NzYsODkgQEAKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yOSwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NywgYXJndmFsPTQ3LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NCwgYXJndmFsPTQ0LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD00MSwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0wLCBhcmd2YWw9NDcsIGFyZ3JlcHI9J3RvIDQ3Jywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NDcsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9NTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01OSwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NjMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjcsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTczLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NzQsIGFyZ3ZhbD0xNTQsIGFyZ3JlcHI9J3RvIDE1NCcsIG9mZnNldD03Nywgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xNDMsIGFyZ3ZhbD0xNDMsIGFyZ3JlcHI9JycsIG9mZnNldD04Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9OTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD05OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0xMDksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTI0LCBhcmd2YWw9MTI0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz04MCwgYXJndmFsPTgwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0wLCBhcmd2YWw9MTI0LCBhcmdyZXByPSd0byAxMjQnLCBvZmZzZXQ9MTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0xMjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9ODAsIGFyZ3ZhbD04MCwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNiwgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTgwLCBhcmd2YWw9ODAsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE0NCwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xNDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE1MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MiwgYXJndmFsPTIyOSwgYXJncmVwcj0ndG8gMjI5Jywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTE3MiwgYXJncmVwcj0ndG8gMTcyJywgb2Zmc2V0PTE1Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTYzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MjAwLCBhcmdyZXByPSd0byAyMDAnLCBvZmZzZXQ9MTY5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTczLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTk5LCBhcmd2YWw9MTk5LCBhcmdyZXByPScnLCBvZmZzZXQ9MTc5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYxLCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD02Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9MTQyLCBhcmdyZXByPSd0byAxNDInLCBvZmZzZXQ9NzEsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMxLCBhcmd2YWw9MTMxLCBhcmdyZXByPScnLCBvZmZzZXQ9NzcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD04OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTkwLCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9OTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEwMCwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTEwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMTUsIGFyZ3ZhbD0xMTUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTE1LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNywgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzMiwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MywgYXJndmFsPTIxOCwgYXJncmVwcj0ndG8gMjE4Jywgb2Zmc2V0PTE0Miwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTE2MCwgYXJncmVwcj0ndG8gMTYwJywgb2Zmc2V0PTE0NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTQ4LCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTg4LCBhcmdyZXByPSd0byAxODgnLCBvZmZzZXQ9MTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTYxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTg3LCBhcmd2YWw9MTg3LCBhcmdyZXByPScnLCBvZmZzZXQ9MTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE3Mywgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE3OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xODUsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNiwgYXJndmFsPTIyNSwgYXJncmVwcj0ndG8gMjI1Jywgb2Zmc2V0PTE5Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMjMsIGFyZ3JlcHI9J3RvIDIyMycsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjA5LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTI0MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjQzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI3LCBhcmd2YWw9MjE0LCBhcmdyZXByPSd0byAyMTQnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNywgYXJndmFsPTIxMSwgYXJncmVwcj0ndG8gMjExJywgb2Zmc2V0PTE5MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOTcsIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MjAwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfU1RBUlQnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX0ZJTklTSCcsIG9wY29kZT04MiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIxNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0yMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogIyBPbmUgbGFzdCBwaWVjZSBvZiBpbnNwZWN0IGZvZGRlciB0byBjaGVjayB0aGUgZGVmYXVsdCBsaW5lIG51bWJlciBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CmluZGV4IDkyOTJkOTIuLjczYjQ0NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKQEAgLTQsNiArNCw3IEBACiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGRvY3Rlc3QKK2ltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCkBAIC00MzQsNyArNDM1LDcgQEAKICAgICA+Pj4gdGVzdHMgPSBmaW5kZXIuZmluZChzYW1wbGVfZnVuYykKIAogICAgID4+PiBwcmludCh0ZXN0cykgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgWzxEb2NUZXN0IHNhbXBsZV9mdW5jIGZyb20gLi4uOjE4ICgxIGV4YW1wbGUpPl0KKyAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTkgKDEgZXhhbXBsZSk+XQogCiBUaGUgZXhhY3QgbmFtZSBkZXBlbmRzIG9uIGhvdyB0ZXN0X2RvY3Rlc3Qgd2FzIGludm9rZWQsIHNvIGFsbG93IGZvcgogbGVhZGluZyBwYXRoIGNvbXBvbmVudHMuCkBAIC02NTgsNyArNjU5LDcgQEAKIAogICAgID4+PiBpbXBvcnQgYnVpbHRpbnMKICAgICA+Pj4gdGVzdHMgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoKS5maW5kKGJ1aWx0aW5zKQotICAgID4+PiA3OTAgPCBsZW4odGVzdHMpIDwgODAwICMgYXBwcm94aW1hdGUgbnVtYmVyIG9mIG9iamVjdHMgd2l0aCBkb2NzdHJpbmdzCisgICAgPj4+IDc5MCA8IGxlbih0ZXN0cykgPCA4MTAgIyBhcHByb3hpbWF0ZSBudW1iZXIgb2Ygb2JqZWN0cyB3aXRoIGRvY3N0cmluZ3MKICAgICBUcnVlCiAgICAgPj4+IHJlYWxfdGVzdHMgPSBbdCBmb3IgdCBpbiB0ZXN0cyBpZiBsZW4odC5leGFtcGxlcykgPiAwXQogICAgID4+PiBsZW4ocmVhbF90ZXN0cykgIyBvYmplY3RzIHRoYXQgYWN0dWFsbHkgaGF2ZSBkb2N0ZXN0cwpAQCAtMjA5NiwyMiArMjA5Nyw5IEBACiAgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKICAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49MCBlcnJvcnM9MCBmYWlsdXJlcz0wPgogCi0gICAgICAgSG93ZXZlciwgaWYgRG9jVGVzdFN1aXRlIGZpbmRzIG5vIGRvY3N0cmluZ3MsIGl0IHJhaXNlcyBhbiBlcnJvcjoKKyAgICAgICBUaGUgbW9kdWxlIG5lZWQgbm90IGNvbnRhaW4gYW55IGRvY3N0cmluZ3MgZWl0aGVyOgogCi0gICAgICAgICA+Pj4gdHJ5OgotICAgICAgICAgLi4uICAgICBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdF9ub19kb2NzdHJpbmdzJykKLSAgICAgICAgIC4uLiBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgotICAgICAgICAgLi4uICAgICBlcnJvciA9IGUKLQotICAgICAgICAgPj4+IHByaW50KGVycm9yLmFyZ3NbMV0pCi0gICAgICAgICBoYXMgbm8gZG9jc3RyaW5ncwotCi0gICAgICAgWW91IGNhbiBwcmV2ZW50IHRoaXMgZXJyb3IgYnkgcGFzc2luZyBhIERvY1Rlc3RGaW5kZXIgaW5zdGFuY2Ugd2l0aAotICAgICAgIHRoZSBgZXhjbHVkZV9lbXB0eWAga2V5d29yZCBhcmd1bWVudCBzZXQgdG8gRmFsc2U6Ci0KLSAgICAgICAgID4+PiBmaW5kZXIgPSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoZXhjbHVkZV9lbXB0eT1GYWxzZSkKLSAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0X25vX2RvY3N0cmluZ3MnLAotICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9maW5kZXI9ZmluZGVyKQorICAgICAgICAgPj4+IHN1aXRlID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoJ3Rlc3Quc2FtcGxlX2RvY3Rlc3Rfbm9fZG9jc3RyaW5ncycpCiAgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKICAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49MCBlcnJvcnM9MCBmYWlsdXJlcz0wPgogCkBAIC0yMTIxLDYgKzIxMDksMjIgQEAKICAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQogICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj05IGVycm9ycz0wIGZhaWx1cmVzPTQ+CiAKKyAgICAgICBXZSBjYW4gYWxzbyBwcm92aWRlIGEgRG9jVGVzdEZpbmRlcjoKKworICAgICAgICAgPj4+IGZpbmRlciA9IGRvY3Rlc3QuRG9jVGVzdEZpbmRlcigpCisgICAgICAgICA+Pj4gc3VpdGUgPSBkb2N0ZXN0LkRvY1Rlc3RTdWl0ZSgndGVzdC5zYW1wbGVfZG9jdGVzdCcsCisgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZmluZGVyPWZpbmRlcikKKyAgICAgICAgID4+PiBzdWl0ZS5ydW4odW5pdHRlc3QuVGVzdFJlc3VsdCgpKQorICAgICAgICAgPHVuaXR0ZXN0LnJlc3VsdC5UZXN0UmVzdWx0IHJ1bj05IGVycm9ycz0wIGZhaWx1cmVzPTQ+CisKKyAgICAgICBUaGUgRG9jVGVzdEZpbmRlciBuZWVkIG5vdCByZXR1cm4gYW55IHRlc3RzOgorCisgICAgICAgICA+Pj4gZmluZGVyID0gZG9jdGVzdC5Eb2NUZXN0RmluZGVyKCkKKyAgICAgICAgID4+PiBzdWl0ZSA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKCd0ZXN0LnNhbXBsZV9kb2N0ZXN0X25vX2RvY3N0cmluZ3MnLAorICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2ZpbmRlcj1maW5kZXIpCisgICAgICAgICA+Pj4gc3VpdGUucnVuKHVuaXR0ZXN0LlRlc3RSZXN1bHQoKSkKKyAgICAgICAgIDx1bml0dGVzdC5yZXN1bHQuVGVzdFJlc3VsdCBydW49MCBlcnJvcnM9MCBmYWlsdXJlcz0wPgorCiAgICAgICAgV2UgY2FuIHN1cHBseSBnbG9iYWwgdmFyaWFibGVzLiAgSWYgd2UgcGFzcyBnbG9icywgdGhleSB3aWxsIGJlCiAgICAgICAgdXNlZCBpbnN0ZWFkIG9mIHRoZSBtb2R1bGUgZ2xvYmFscy4gIEhlcmUgd2UnbGwgcGFzcyBhbiBlbXB0eQogICAgICAgIGdsb2JhbHMsIHRyaWdnZXJpbmcgYW4gZXh0cmEgZXJyb3I6CkBAIC0yMTY4LDcgKzIxNzIsNyBAQAogICAgICAgICAgPj4+IHRlc3QudGVzdF9kb2N0ZXN0LnNpbGx5U2V0dXAKICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgIC4uLgotICAgICAgICAgQXR0cmlidXRlRXJyb3I6ICdtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzaWxseVNldHVwJworICAgICAgICAgQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAndGVzdC50ZXN0X2RvY3Rlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ3NpbGx5U2V0dXAnCiAKICAgICAgICBUaGUgc2V0VXAgYW5kIHRlYXJEb3duIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRlc3Qgb2JqZWN0cy4gSGVyZQogICAgICAgIHdlJ2xsIHVzZSB0aGUgc2V0VXAgZnVuY3Rpb24gdG8gc3VwcGx5IHRoZSBtaXNzaW5nIHZhcmlhYmxlIHk6CkBAIC0yMzE0LDcgKzIzMTgsNyBAQAogICAgICAgICAgPj4+IHRlc3QudGVzdF9kb2N0ZXN0LnNpbGx5U2V0dXAKICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgIC4uLgotICAgICAgICAgQXR0cmlidXRlRXJyb3I6ICdtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzaWxseVNldHVwJworICAgICAgICAgQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAndGVzdC50ZXN0X2RvY3Rlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ3NpbGx5U2V0dXAnCiAKICAgICAgICBUaGUgc2V0VXAgYW5kIHRlYXJEb3duIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIHRlc3Qgb2JqZWN0cy4KICAgICAgICBIZXJlLCB3ZSdsbCB1c2UgYSBzZXRVcCBmdW5jdGlvbiB0byBzZXQgdGhlIGZhdm9yaXRlIGNvbG9yIGluCkBAIC0yMzYxLDYgKzIzNjUsMjIgQEAKICAgICAgIGZvbyBcbgogICAgICIiIgogCitjbGFzcyBXcmFwcGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYworICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIoc2VsZiwgZnVuYykKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorCitAV3JhcHBlcgorZGVmIHRlc3RfbG9va19pbl91bndyYXBwZWQoKToKKyAgICAiIiIKKyAgICBEb2NzdHJpbmdzIGluIHdyYXBwZWQgZnVuY3Rpb25zIG11c3QgYmUgZGV0ZWN0ZWQgYXMgd2VsbC4KKworICAgID4+PiAnb25lIG90aGVyIHRlc3QnCisgICAgJ29uZSBvdGhlciB0ZXN0JworICAgICIiIgogCiBkZWYgdGVzdF91bml0dGVzdF9yZXBvcnRmbGFncygpOgogICAgICIiIkRlZmF1bHQgdW5pdHRlc3QgcmVwb3J0aW5nIGZsYWdzIGNhbiBiZSBzZXQgdG8gY29udHJvbCByZXBvcnRpbmcKQEAgLTI3MDksOCArMjcyOSw4IEBACiBzaW1wbGUgdGVzdHMgYW5kIG5vIGVycm9ycy4gIFdlJ2xsIHJ1biBib3RoIHRoZSB1bmFkb3JuZWQgZG9jdGVzdCBjb21tYW5kLCBhbmQKIHRoZSB2ZXJib3NlIHZlcnNpb24sIGFuZCB0aGVuIGNoZWNrIHRoZSBvdXRwdXQ6CiAKLSAgICA+Pj4gZnJvbSB0ZXN0IGltcG9ydCBzY3JpcHRfaGVscGVyCi0gICAgPj4+IHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRtcGRpcjoKKyAgICA+Pj4gZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIsIHRlbXBfZGlyCisgICAgPj4+IHdpdGggdGVtcF9kaXIoKSBhcyB0bXBkaXI6CiAgICAgLi4uICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdteWZpbGUuZG9jJykKICAgICAuLi4gICAgIHdpdGggb3BlbihmbiwgJ3cnKSBhcyBmOgogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCdUaGlzIGlzIGEgdmVyeSBzaW1wbGUgdGVzdCBmaWxlLlxuJykKQEAgLTI3NjAsOCArMjc4MCw4IEBACiBmaWxlIGVuZHMgaW4gJy5weScsIGl0cyBoYW5kbGluZyBvZiBweXRob24gbW9kdWxlIGZpbGVzIChhcyBvcHBvc2VkIHRvIHN0cmFpZ2h0CiB0ZXh0IGZpbGVzKS4KIAotICAgID4+PiBmcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKLSAgICA+Pj4gd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdG1wZGlyOgorICAgID4+PiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlciwgdGVtcF9kaXIKKyAgICA+Pj4gd2l0aCB0ZW1wX2RpcigpIGFzIHRtcGRpcjoKICAgICAuLi4gICAgIGZuID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ215ZmlsZS5kb2MnKQogICAgIC4uLiAgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJ1RoaXMgaXMgYW5vdGhlciBzaW1wbGUgdGVzdCBmaWxlLlxuJykKQEAgLTI5MjcsNyArMjk0Nyw3IEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGluIGRvY3Rlc3QgaXRzZWxmOgotICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QoZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCisgICAgcmV0ID0gc3VwcG9ydC5ydW5fZG9jdGVzdChkb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGRlZmluZWQgaGVyZToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZG9jdGVzdAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9kb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKaW5kZXggMDYxNjFmMi4uZTZjYTk2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N4bWxycGMucHkKQEAgLTg3LDEwICs4NywxMSBAQAogICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIsIGFyZ3M9KHNlbGYuZXZ0LCAxKSkuc3RhcnQoKQogCiAgICAgICAgICMgd2FpdCBmb3IgcG9ydCB0byBiZSBhc3NpZ25lZAotICAgICAgICBuID0gMTAwMAotICAgICAgICB3aGlsZSBuID4gMCBhbmQgUE9SVCBpcyBOb25lOgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKLSAgICAgICAgICAgIG4gLT0gMQorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIFBPUlQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMTApCisgICAgICAgICAgICBpZiB0aW1lLm1vbm90b25pYygpID4gZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBzZWxmLmNsaWVudCA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKCJsb2NhbGhvc3Q6JWQiICUgUE9SVCkKIApAQCAtMjEyLDggKzIxMyw1IEBACiAgICAgICAgICAgICByZXNwb25zZS5yZWFkKCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KERvY1hNTFJQQ0hUVFBHRVRTZXJ2ZXIpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHVtbXlfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKaW5kZXggNmVjNWRhMy4uYTBjMjk3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWRpbmcucHkKQEAgLTU2LDkgKzU2LDUgQEAKICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ2FsbCB0YXNrcyBkb25lJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KER1bW15VGhyZWFkaW5nVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5IGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CmluZGV4IGJlYjdiMWMuLjUwODBlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHN3YXBfaXRlbSwgc3dhcF9hdHRyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc3dhcF9pdGVtLCBzd2FwX2F0dHIKIAogCiBjbGFzcyBSZWJpbmRCdWlsdGluc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEzNSw5ICsxMzUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygpLCA3KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUmViaW5kQnVpbHRpbnNUZXN0cykKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWNjbGFzc2F0dHJpYnV0ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CmluZGV4IGJjNmEzOWIuLjlmNjk0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pY2NsYXNzYXR0cmlidXRlLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IGFiYwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBmcm9tIHR5cGVzIGltcG9ydCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKIAogY2xhc3MgUHJvcGVydHlCYXNlKEV4Y2VwdGlvbik6CkBAIC0yOTcsOCArMjk2LDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHJvcGVydHlUZXN0cywgUHJvcGVydHlTdWJjbGFzc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWJhZDgzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIm9ubHkgc3VwcG9ydGVkIG9uIFVuaXgiKQorY2xhc3MgRUlOVFJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgInNldGl0aW1lciIpLCAicmVxdWlyZXMgc2V0aXRpbWVyKCkiKQorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgorICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCisKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQorICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6CisgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCA2MWUyM2ZjLi5kN2UzZGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC01OTAsNiArNTkwLDE3IEBACiAgICAgICAgIGVxKG1zZy52YWx1ZXMoKSwgWydPbmUgSHVuZHJlZCcsICdUd2VudHknLCAnVGhyZWUnLCAnRWxldmVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtc2cucmVwbGFjZV9oZWFkZXIsICdGb3VydGgnLCAnTWlzc2luZycpCiAKKyAgICBkZWYgdGVzdF9nZXRfY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgbXNnID0gTWVzc2FnZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpKQorICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9J3JhbmRvbS5hdmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnYXR0YWNobWVudCcpCisgICAgICAgIG1zZy5yZXBsYWNlX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdpbmxpbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9kaXNwb3NpdGlvbigpLCAnaW5saW5lJykKKyAgICAgICAgbXNnLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0lubGluRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCksICdpbmxpbmUnKQorCiAgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZzp0ZXN0X2ludmFsaWRfY2hhcnNfaW5fYmFzZTY0X3BheWxvYWQKICAgICBkZWYgdGVzdF9icm9rZW5fYmFzZTY0X3BheWxvYWQoc2VsZik6CiAgICAgICAgIHggPSAnQXdEcDBQNy8veTZMd0tFQWNQYS82UT05JwpAQCAtMTY0MCw2ICsxNjUxLDEwIEBACiAgICAgICAgIG1zZyA9IE1JTUVUZXh0KCdoZWxsbyB0aGVyZScsIF9jaGFyc2V0PSd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZy5nZXRfY2hhcnNldCgpLmlucHV0X2NoYXJzZXQsICd1cy1hc2NpaScpCiAgICAgICAgIGVxKG1zZ1snY29udGVudC10eXBlJ10sICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKQorICAgICAgICAjIEFsc28gYWNjZXB0IGEgQ2hhcnNldCBpbnN0YW5jZQorICAgICAgICBtc2cgPSBNSU1FVGV4dCgnaGVsbG8gdGhlcmUnLCBfY2hhcnNldD1DaGFyc2V0KCd1dGYtOCcpKQorICAgICAgICBlcShtc2cuZ2V0X2NoYXJzZXQoKS5pbnB1dF9jaGFyc2V0LCAndXRmLTgnKQorICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHlwZSddLCAndGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiJykKIAogICAgIGRlZiB0ZXN0XzdiaXRfaW5wdXQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKaW5kZXggODkxNzQwOC4uYjFjYmNlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9ieXRlcworZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIEJ5dGVzR2VuZXJhdG9yCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKQEAgLTEzOSw2ICsxNDAsMjggQEAKICAgICAgICAgZy5mbGF0dGVuKG1zZywgbGluZXNlcD0nXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQogCisgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKKyAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisKKyAgICAgICAgICAgIEZyb20gdGltZSB0byB0aW1lIEkgd3JpdGUgYSByaHltZS4KKyAgICAgICAgICAgICIiIikKKyAgICAgICAgdmFyaWFudHMgPSAoCisgICAgICAgICAgICAoTm9uZSwgVHJ1ZSksCisgICAgICAgICAgICAocG9saWN5LmNvbXBhdDMyLCBUcnVlKSwKKyAgICAgICAgICAgIChwb2xpY3kuZGVmYXVsdCwgRmFsc2UpLAorICAgICAgICAgICAgKHBvbGljeS5kZWZhdWx0LmNsb25lKG1hbmdsZV9mcm9tXz1UcnVlKSwgVHJ1ZSksCisgICAgICAgICAgICApCisgICAgICAgIGZvciBwLCBtYW5nbGUgaW4gdmFyaWFudHM6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNvdXJjZS5yZXBsYWNlKCdGcm9tICcsICc+RnJvbSAnKSBpZiBtYW5nbGUgZWxzZSBzb3VyY2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wLCBtYW5nbGVfZnJvbV89bWFuZ2xlKToKKyAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNvdXJjZSkpCisgICAgICAgICAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgICAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXApCisgICAgICAgICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQorCiAKIGNsYXNzIFRlc3RHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgogCkBAIC0xOTQsNiArMjE3LDI3IEBACiAgICAgICAgIGcuZmxhdHRlbihtc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3NtdHB1dGY4X3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbXNnWydGcm9tJ10gPSAiUMOhb2xvIDxmxZFvQGJhci5jb20+IgorICAgICAgICBtc2dbJ1RvJ10gPSAnRGluc2RhbGUnCisgICAgICAgIG1zZ1snU3ViamVjdCddID0gJ051ZGdlIG51ZGdlLCB3aW5rLCB3aW5rIFx1MUY2MDknCisgICAgICAgIG1zZy5zZXRfY29udGVudCgib2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8iKQorICAgICAgICBleHBlY3RlZCA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBQw6FvbG8gPGbFkW9AYmFyLmNvbT4KKyAgICAgICAgICAgIFRvOiBEaW5zZGFsZQorICAgICAgICAgICAgU3ViamVjdDogTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsgXHUxRjYwOQorICAgICAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisKKyAgICAgICAgICAgIG9oIGzDoCBsw6AsIGtub3cgd2hhdCBJIG1lYW4sIGtub3cgd2hhdCBJIG1lYW4/CisgICAgICAgICAgICAiIiIpLmVuY29kZSgndXRmLTgnKS5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKQorICAgICAgICBzID0gaW8uQnl0ZXNJTygpCisgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihzLCBwb2xpY3k9cG9saWN5LlNNVFBVVEY4KQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKaW5kZXggNTBlMWE2My4uZDc4MDQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKQEAgLTcyMywyNCArNzIzLDE0IEBACiAgICAgZGVmIHRlc3RfaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgbSA9IHNlbGYuX21ha2VfbWVzc2FnZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG1bJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9ICdpbmxpbmUnCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtLmlzX2F0dGFjaG1lbnQpCiAgICAgICAgIG0ucmVwbGFjZV9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogICAgICAgICBtLnJlcGxhY2VfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ0F0VGFjaE1lbnQnKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KCkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uaXNfYXR0YWNobWVudCkKICAgICAgICAgbS5zZXRfcGFyYW0oJ2ZpbGVuYW1lJywgJ2FiYy5wbmcnLCAnQ29udGVudC1EaXNwb3NpdGlvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLmlzX2F0dGFjaG1lbnQoKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobS5pc19hdHRhY2htZW50KQogCiAKIGNsYXNzIFRlc3RFbWFpbE1lc3NhZ2UoVGVzdEVtYWlsTWVzc2FnZUJhc2UsIFRlc3RFbWFpbEJhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKaW5kZXggZTc5N2YzNi4uOWJiMzJmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CkBAIC0yMiwxNSArMjIsMTggQEAKICAgICAgICAgJ2xpbmVzZXAnOiAgICAgICAgICAgICAgICAgICdcbicsCiAgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCiAgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIFRydWUsCiAgICAgICAgIH0KICAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCiAgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCiAgICAgcG9saWN5X2RlZmF1bHRzID0gY29tcGF0MzJfZGVmYXVsdHMuY29weSgpCiAgICAgcG9saWN5X2RlZmF1bHRzLnVwZGF0ZSh7CisgICAgICAgICd1dGY4JzogICAgICAgICAgICAgICAgICAgICBGYWxzZSwKICAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAogICAgICAgICAnaGVhZGVyX2ZhY3RvcnknOiAgICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5LAogICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAogICAgICAgICAnY29udGVudF9tYW5hZ2VyJzogICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmNvbnRlbnRfbWFuYWdlciwKKyAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIEZhbHNlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNDIsNiArNDUsOSBAQAogICAgICAgICBlbWFpbC5wb2xpY3kuZGVmYXVsdDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsIHt9KSwKICAgICAgICAgZW1haWwucG9saWN5LlNNVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbid9KSwKKyAgICAgICAgZW1haWwucG9saWN5LlNNVFBVVEY4OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXRmOCc6IFRydWV9KSwKICAgICAgICAgZW1haWwucG9saWN5LkhUVFA6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xpbmVzZXAnOiAnXHJcbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF4X2xpbmVfbGVuZ3RoJzogTm9uZX0pLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQppbmRleCA2ZGM3NjRiLi5hNzhjYTE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQpAQCAtMzU3LDQgKzM1Nyw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CmluZGV4IDVkYjQwNDAuLjRiNWQwZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKQEAgLTY2LDE4ICs2NiwxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbjoKICAgICBwYXNzCiAKLWRlZiB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoYXNzZXJ0aW9uLCBzb3VyY2UsIHRhcmdldD1Ob25lLAotICAgICAgICAqLCBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpOgotICAgIHN0YXJ0LCBzdG9wID0gcHJvdG9jb2wKK2RlZiB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoYXNzZXJ0aW9uLCBzb3VyY2UsIHRhcmdldD1Ob25lKToKICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgdGFyZ2V0ID0gc291cmNlCi0gICAgZm9yIHByb3RvY29sIGluIHJhbmdlKHN0YXJ0LCBzdG9wKzEpOgorICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgIGFzc2VydGlvbihsb2FkcyhkdW1wcyhzb3VyY2UsIHByb3RvY29sPXByb3RvY29sKSksIHRhcmdldCkKIAotZGVmIHRlc3RfcGlja2xlX2V4Y2VwdGlvbihhc3NlcnRpb24sIGV4Y2VwdGlvbiwgb2JqLAotICAgICAgICAqLCBwcm90b2NvbD0oMCwgSElHSEVTVF9QUk9UT0NPTCkpOgotICAgIHN0YXJ0LCBzdG9wID0gcHJvdG9jb2wKLSAgICBmb3IgcHJvdG9jb2wgaW4gcmFuZ2Uoc3RhcnQsIHN0b3ArMSk6CitkZWYgdGVzdF9waWNrbGVfZXhjZXB0aW9uKGFzc2VydGlvbiwgZXhjZXB0aW9uLCBvYmopOgorICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgIHdpdGggYXNzZXJ0aW9uKGV4Y2VwdGlvbik6CiAgICAgICAgICAgICBkdW1wcyhvYmosIHByb3RvY29sPXByb3RvY29sKQogCkBAIC01NzUsMTEgKzU3MSw3IEBACiAKICAgICAgICAgc2VsZi5fX2NsYXNzX18uTmVzdGVkRW51bSA9IE5lc3RlZEVudW0KICAgICAgICAgc2VsZi5OZXN0ZWRFbnVtLl9fcXVhbG5hbWVfXyA9ICclcy5OZXN0ZWRFbnVtJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCi0gICAgICAgIHRlc3RfcGlja2xlX2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcywgUGlja2xpbmdFcnJvciwgc2VsZi5OZXN0ZWRFbnVtLnR3aWdzLAotICAgICAgICAgICAgICAgIHByb3RvY29sPSgwLCAzKSkKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIHNlbGYuTmVzdGVkRW51bS50d2lncywKLSAgICAgICAgICAgICAgICBwcm90b2NvbD0oNCwgSElHSEVTVF9QUk9UT0NPTCkpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBzZWxmLk5lc3RlZEVudW0udHdpZ3MpCiAKICAgICBkZWYgdGVzdF9waWNrbGVfYnlfbmFtZShzZWxmKToKICAgICAgICAgY2xhc3MgUmVwbGFjZUdsb2JhbEludChJbnRFbnVtKToKQEAgLTY1NCw2ICs2NDYsMjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQogCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHN0YXJ0PTEwKQorICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oU3VtbWVyTW9udGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihTdW1tZXJNb250aCksIDMsIFN1bW1lck1vbnRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFtTdW1tZXJNb250aC5qdW5lLCBTdW1tZXJNb250aC5qdWx5LCBTdW1tZXJNb250aC5hdWd1c3RdLAorICAgICAgICAgICAgICAgIGxzdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGZvciBpLCBtb250aCBpbiBlbnVtZXJhdGUoJ2p1bmUganVseSBhdWd1c3QnLnNwbGl0KCksIDEwKToKKyAgICAgICAgICAgIGUgPSBTdW1tZXJNb250aChpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoZS52YWx1ZSksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKwogICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgogICAgICAgICBTdW1tZXJNb250aCA9IEVudW0oJ1N1bW1lck1vbnRoJywgWydqdW5lJywgJ2p1bHknLCAnYXVndXN0J10pCiAgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCkBAIC02NzEsNiArNjgwLDIzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKIAorICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0X3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCBbJ2p1bmUnLCAnanVseScsICdhdWd1c3QnXSwgc3RhcnQ9MjApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgMjApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChlLnZhbHVlKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CiAgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgKICAgICAgICAgICAgICAgICAnU3VtbWVyTW9udGgnLApAQCAtNzI3LDYgKzc1MywyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFN1bW1lck1vbnRoID0gRW51bSgnU3VtbWVyTW9udGgnLCAnanVuZSBqdWx5IGF1Z3VzdCcsIHR5cGU9aW50LCBzdGFydD0zMCkKKyAgICAgICAgbHN0ID0gbGlzdChTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFN1bW1lck1vbnRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oU3VtbWVyTW9udGgpLCAzLCBTdW1tZXJNb250aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBbU3VtbWVyTW9udGguanVuZSwgU3VtbWVyTW9udGguanVseSwgU3VtbWVyTW9udGguYXVndXN0XSwKKyAgICAgICAgICAgICAgICBsc3QsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBmb3IgaSwgbW9udGggaW4gZW51bWVyYXRlKCdqdW5lIGp1bHkgYXVndXN0Jy5zcGxpdCgpLCAzMCk6CisgICAgICAgICAgICBlID0gU3VtbWVyTW9udGgoaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBtb250aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgU3VtbWVyTW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFN1bW1lck1vbnRoKQorCiAgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fdHlwZV9mcm9tX3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBTdW1tZXJNb250aCA9IEludEVudW0oJ1N1bW1lck1vbnRoJywgJ2p1bmUganVseSBhdWd1c3QnKQogICAgICAgICBsc3QgPSBsaXN0KFN1bW1lck1vbnRoKQpAQCAtNzQzLDYgKzc4NSwyMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBTdW1tZXJNb250aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3VtbWVyTW9udGgpCiAKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl90eXBlX2Zyb21fc3ViY2xhc3Nfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgU3VtbWVyTW9udGggPSBJbnRFbnVtKCdTdW1tZXJNb250aCcsICdqdW5lIGp1bHkgYXVndXN0Jywgc3RhcnQ9NDApCisgICAgICAgIGxzdCA9IGxpc3QoU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihTdW1tZXJNb250aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFN1bW1lck1vbnRoKSwgMywgU3VtbWVyTW9udGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgW1N1bW1lck1vbnRoLmp1bmUsIFN1bW1lck1vbnRoLmp1bHksIFN1bW1lck1vbnRoLmF1Z3VzdF0sCisgICAgICAgICAgICAgICAgbHN0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGksIG1vbnRoIGluIGVudW1lcmF0ZSgnanVuZSBqdWx5IGF1Z3VzdCcuc3BsaXQoKSwgNDApOgorICAgICAgICAgICAgZSA9IFN1bW1lck1vbnRoKGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbW9udGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFN1bW1lck1vbnRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBTdW1tZXJNb250aCkKKwogICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgogICAgICAgICBpZiBpc2luc3RhbmNlKE5hbWUsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICByYWlzZSBOYW1lCkBAIC0xMDMwLDkgKzEwODgsOSBAQAogICAgICAgICBnbG9iYWxzKClbJ05FSSddID0gTkVJCiAgICAgICAgIE5JNSA9IE5hbWVkSW50KCd0ZXN0JywgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOSTUsIDUpCi0gICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydEVxdWFsLCBOSTUsIDUsIHByb3RvY29sPSg0LCA0KSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0RXF1YWwsIE5JNSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChORUkueS52YWx1ZSwgMikKLSAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSS55LCBwcm90b2NvbD0oNCwgNCkpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBORUkueSkKICAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIE5FSSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXNfd2l0aF9yZWR1Y2Uoc2VsZik6CkBAIC0xNDk4LDEwICsxNTU2LDEyIEBACiAgICAgICAgICAgICAgICAgdHVya2V5ID0gMwogCiAKLWV4cGVjdGVkX2hlbHBfb3V0cHV0ID0gIiIiCitleHBlY3RlZF9oZWxwX291dHB1dF93aXRoX2RvY3MgPSAiIiJcCiBIZWxwIG9uIGNsYXNzIENvbG9yIGluIG1vZHVsZSAlczoKIAogY2xhc3MgQ29sb3IoZW51bS5FbnVtKQorIHwgIEFuIGVudW1lcmF0aW9uLgorIHxceDIwXHgyMAogIHwgIE1ldGhvZCByZXNvbHV0aW9uIG9yZGVyOgogIHwgICAgICBDb2xvcgogIHwgICAgICBlbnVtLkVudW0KQEAgLTE1MzEsMTEgKzE1OTEsNDEgQEAKICB8ICAgICAgUmV0dXJucyBhIG1hcHBpbmcgb2YgbWVtYmVyIG5hbWUtPnZhbHVlLgogIHxceDIwXHgyMFx4MjBceDIwXHgyMFx4MjAKICB8ICAgICAgVGhpcyBtYXBwaW5nIGxpc3RzIGFsbCBlbnVtIG1lbWJlcnMsIGluY2x1ZGluZyBhbGlhc2VzLiBOb3RlIHRoYXQgdGhpcwotIHwgICAgICBpcyBhIHJlYWQtb25seSB2aWV3IG9mIHRoZSBpbnRlcm5hbCBtYXBwaW5nLgotIiIiLnN0cmlwKCkKKyB8ICAgICAgaXMgYSByZWFkLW9ubHkgdmlldyBvZiB0aGUgaW50ZXJuYWwgbWFwcGluZy4iIiIKKworZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aG91dF9kb2NzID0gIiIiXAorSGVscCBvbiBjbGFzcyBDb2xvciBpbiBtb2R1bGUgJXM6CisKK2NsYXNzIENvbG9yKGVudW0uRW51bSkKKyB8ICBNZXRob2QgcmVzb2x1dGlvbiBvcmRlcjoKKyB8ICAgICAgQ29sb3IKKyB8ICAgICAgZW51bS5FbnVtCisgfCAgICAgIGJ1aWx0aW5zLm9iamVjdAorIHxceDIwXHgyMAorIHwgIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOgorIHxceDIwXHgyMAorIHwgIGJsdWUgPSA8Q29sb3IuYmx1ZTogMz4KKyB8XHgyMFx4MjAKKyB8ICBncmVlbiA9IDxDb2xvci5ncmVlbjogMj4KKyB8XHgyMFx4MjAKKyB8ICByZWQgPSA8Q29sb3IucmVkOiAxPgorIHxceDIwXHgyMAorIHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB8ICBEYXRhIGRlc2NyaXB0b3JzIGluaGVyaXRlZCBmcm9tIGVudW0uRW51bToKKyB8XHgyMFx4MjAKKyB8ICBuYW1lCisgfFx4MjBceDIwCisgfCAgdmFsdWUKKyB8XHgyMFx4MjAKKyB8ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgfCAgRGF0YSBkZXNjcmlwdG9ycyBpbmhlcml0ZWQgZnJvbSBlbnVtLkVudW1NZXRhOgorIHxceDIwXHgyMAorIHwgIF9fbWVtYmVyc19fIiIiCiAKIGNsYXNzIFRlc3RTdGRMaWIodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgbWF4RGlmZiA9IE5vbmUKKwogICAgIGNsYXNzIENvbG9yKEVudW0pOgogICAgICAgICByZWQgPSAxCiAgICAgICAgIGdyZWVuID0gMgpAQCAtMTU0Myw3ICsxNjMzLDEwIEBACiAKICAgICBkZWYgdGVzdF9weWRvYyhzZWxmKToKICAgICAgICAgIyBpbmRpcmVjdGx5IHRlc3QgX19vYmpjbGFzc19fCi0gICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF9oZWxwX291dHB1dCAlIF9fbmFtZV9fCisgICAgICAgIGlmIFN0ckVudW0uX19kb2NfXyBpcyBOb25lOgorICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX2hlbHBfb3V0cHV0X3dpdGhvdXRfZG9jcyAlIF9fbmFtZV9fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfaGVscF9vdXRwdXRfd2l0aF9kb2NzICUgX19uYW1lX18KICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQogICAgICAgICBoZWxwZXIgPSBweWRvYy5IZWxwZXIob3V0cHV0PW91dHB1dCkKICAgICAgICAgaGVscGVyKHNlbGYuQ29sb3IpCkBAIC0xNTUzLDcgKzE2NDYsNyBAQAogICAgIGRlZiB0ZXN0X2luc3BlY3RfZ2V0bWVtYmVycyhzZWxmKToKICAgICAgICAgdmFsdWVzID0gZGljdCgoCiAgICAgICAgICAgICAgICAgKCdfX2NsYXNzX18nLCBFbnVtTWV0YSksCi0gICAgICAgICAgICAgICAgKCdfX2RvY19fJywgTm9uZSksCisgICAgICAgICAgICAgICAgKCdfX2RvY19fJywgJ0FuIGVudW1lcmF0aW9uLicpLAogICAgICAgICAgICAgICAgICgnX19tZW1iZXJzX18nLCBzZWxmLkNvbG9yLl9fbWVtYmVyc19fKSwKICAgICAgICAgICAgICAgICAoJ19fbW9kdWxlX18nLCBfX25hbWVfXyksCiAgICAgICAgICAgICAgICAgKCdibHVlJywgc2VsZi5Db2xvci5ibHVlKSwKQEAgLTE1ODEsNyArMTY3NCw3IEBACiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fY2xhc3NfXycsIGtpbmQ9J2RhdGEnLAogICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1vYmplY3QsIG9iamVjdD1FbnVtTWV0YSksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fZG9jX18nLCBraW5kPSdkYXRhJywKLSAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmdfY2xhc3M9c2VsZi5Db2xvciwgb2JqZWN0PU5vbmUpLAorICAgICAgICAgICAgICAgICAgICBkZWZpbmluZ19jbGFzcz1zZWxmLkNvbG9yLCBvYmplY3Q9J0FuIGVudW1lcmF0aW9uLicpLAogICAgICAgICAgICAgICAgIEF0dHJpYnV0ZShuYW1lPSdfX21lbWJlcnNfXycsIGtpbmQ9J3Byb3BlcnR5JywKICAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmdfY2xhc3M9RW51bU1ldGEsIG9iamVjdD1FbnVtTWV0YS5fX21lbWJlcnNfXyksCiAgICAgICAgICAgICAgICAgQXR0cmlidXRlKG5hbWU9J19fbW9kdWxlX18nLCBraW5kPSdkYXRhJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggZTg1MjU0Yy4uMjYzMGNmMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTI1OCwxNiArMjU4LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgKHN5cy5tYXhzaXplKzMsJ2MnKV0KIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbih2ZXJib3NlPVRydWUpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VvZi5weSBiL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CmluZGV4IDUyZTc5MzIuLjdiYWE3YWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW9mLnB5CkBAIC0yNCw4ICsyNCw1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEVPRlRlc3RDYXNlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCBiMzdmMDMzLi5hNzM1OWU5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyU29ja2V0ID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuc2VydmVyU29ja2V0LmJpbmQoKCcxMjcuMC4wLjEnLCAwKSkKLSAgICAgICAgc2VsZi5zZXJ2ZXJTb2NrZXQubGlzdGVuKDEpCisgICAgICAgIHNlbGYuc2VydmVyU29ja2V0Lmxpc3RlbigpCiAgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSBbc2VsZi5zZXJ2ZXJTb2NrZXRdCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC0yNTIsOCArMjUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoZXBvbGwuZmlsZW5vKCkpLCBGYWxzZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdEVQb2xsKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5IGIvTGliL3Rlc3QvdGVzdF9lcnJuby5weQppbmRleCAwNThkY2I5Li41YzQzN2U5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vycm5vLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXJybm8ucHkKQEAgLTMsNyArMyw2IEBACiAiIiIKIAogaW1wb3J0IGVycm5vCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBzdGRfY19lcnJvcnMgPSBmcm96ZW5zZXQoWydFRE9NJywgJ0VSQU5HRSddKQpAQCAtMzIsOSArMzEsNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vICVzIGF0dHIgaW4gZXJybm8uZXJyb3Jjb2RlJyAlIGF0dHJpYnV0ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRXJybm9BdHRyaWJ1dGVUZXN0cywgRXJyb3Jjb2RlVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX3ZhcmlhdGlvbnMucHkKaW5kZXggMTFmNWU1Yy4uZDg3NGIwZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25fdmFyaWF0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl92YXJpYXRpb25zLnB5CkBAIC0xLDUgKzEsNCBAQAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgRXhjZXB0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTczLDggKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoaXRfZmluYWxseSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhpdF9leGNlcHQpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdENhc2UpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQppbmRleCA4MGQ0ZjFhLi4zMmE2NmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CkBAIC04NCw2ICs4NCw3IEBACiAgICAgICAgICAgICB4ICs9IHggICMgdGhpcyBzaW1wbHkgc2hvdWxkbid0IGJsb3cgdXAKIAogICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKFJ1bnRpbWVFcnJvciwgIlJ1bnRpbWVFcnJvciIpCisgICAgICAgIHNlbGYucmFpc2VfY2F0Y2goUmVjdXJzaW9uRXJyb3IsICJSZWN1cnNpb25FcnJvciIpCiAKICAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChTeW50YXhFcnJvciwgIlN5bnRheEVycm9yIikKICAgICAgICAgdHJ5OiBleGVjKCcvXG4nKQpAQCAtMTE3LDYgKzExOCw4IEBACiAgICAgICAgIHRyeTogeCA9IDEvMAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6IHBhc3MKIAorICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKFN0b3BBc3luY0l0ZXJhdGlvbiwgIlN0b3BBc3luY0l0ZXJhdGlvbiIpCisKICAgICBkZWYgdGVzdFN5bnRheEVycm9yTWVzc2FnZShzZWxmKToKICAgICAgICAgIyBtYWtlIHN1cmUgdGhlIHJpZ2h0IGV4Y2VwdGlvbiBtZXNzYWdlIGlzIHJhaXNlZCBmb3IgZWFjaCBvZgogICAgICAgICAjIHRoZXNlIGNvZGUgZnJhZ21lbnRzCkBAIC00NzQsMTQgKzQ3NywxNCBAQAogICAgIGRlZiB0ZXN0SW5maW5pdGVSZWN1cnNpb24oc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICByZXR1cm4gZigpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGYpCiAKICAgICAgICAgZGVmIGcoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1cm4gZygpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgZykKIAogICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYm90aCBpbnN0YW5jZXMgYW5kIGNsYXNzZXMgaGF2ZSBhIHN0ciByZXByZXNlbnRhdGlvbi4KQEAgLTg4NywxMCArODkwLDEwIEBACiAgICAgICAgIGRlZiBnKCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGcoKQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgZSwgdiwgdGIgPSBnKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodiwgUnVudGltZUVycm9yKSwgdHlwZSh2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodiwgUmVjdXJzaW9uRXJyb3IpLCB0eXBlKHYpKQogICAgICAgICBzZWxmLmFzc2VydEluKCJtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCIsIHN0cih2KSkKIAogCkBAIC05ODksMTAgKzk5MiwxMCBAQAogICAgICAgICAjIFdlIGNhbm5vdCB1c2UgYXNzZXJ0UmFpc2VzIHNpbmNlIGl0IG1hbnVhbGx5IGRlbGV0ZXMgdGhlIHRyYWNlYmFjawogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbm5lcigpCi0gICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyKCksIE5vbmUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlJ1bnRpbWVFcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVjdXJzaW9uRXJyb3Igbm90IHJhaXNlZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2Vycm5vX0VOT1RESVIoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKaW5kZXggNmI2YzEyZC4uNjU0MjU4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQpAQCAtMzQsMTcgKzM0LDM3IEBACiAgICAgKDEsIDIsIDMsIDQsIDUpIHt9CiAgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSkKICAgICAoMSwgMiwgMywgNCwgNSkge30KKyAgICA+Pj4gZigqWzEsIDIsIDNdLCA0LCA1KQorICAgICgxLCAyLCAzLCA0LCA1KSB7fQogICAgID4+PiBmKDEsIDIsIDMsICpVc2VyTGlzdChbNCwgNV0pKQogICAgICgxLCAyLCAzLCA0LCA1KSB7fQorICAgID4+PiBmKDEsIDIsIDMsICpbNCwgNV0sICpbNiwgN10pCisgICAgKDEsIDIsIDMsIDQsIDUsIDYsIDcpIHt9CisgICAgPj4+IGYoMSwgKlsyLCAzXSwgNCwgKls1LCA2XSwgNykKKyAgICAoMSwgMiwgMywgNCwgNSwgNiwgNykge30KKyAgICA+Pj4gZigqVXNlckxpc3QoWzEsIDJdKSwgKlVzZXJMaXN0KFszLCA0XSksIDUsICpVc2VyTGlzdChbNiwgN10pKQorICAgICgxLCAyLCAzLCA0LCA1LCA2LCA3KSB7fQogCiBIZXJlIHdlIGFkZCBrZXl3b3JkIGFyZ3VtZW50cwogCiAgICAgPj4+IGYoMSwgMiwgMywgKip7J2EnOjQsICdiJzo1fSkKICAgICAoMSwgMiwgMykgeydhJzogNCwgJ2InOiA1fQorICAgID4+PiBmKDEsIDIsICoqeydhJzogLTEsICdiJzogNX0sICoqeydhJzogNCwgJ2MnOiA2fSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ2EnCisgICAgPj4+IGYoMSwgMiwgKip7J2EnOiAtMSwgJ2InOiA1fSwgYT00LCBjPTYpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICdhJwogICAgID4+PiBmKDEsIDIsIDMsICpbNCwgNV0sICoqeydhJzo2LCAnYic6N30pCiAgICAgKDEsIDIsIDMsIDQsIDUpIHsnYSc6IDYsICdiJzogN30KICAgICA+Pj4gZigxLCAyLCAzLCB4PTQsIHk9NSwgKig2LCA3KSwgKip7J2EnOjgsICdiJzogOX0pCiAgICAgKDEsIDIsIDMsIDYsIDcpIHsnYSc6IDgsICdiJzogOSwgJ3gnOiA0LCAneSc6IDV9CisgICAgPj4+IGYoMSwgMiwgMywgKls0LCA1XSwgKip7J2MnOiA4fSwgKip7J2EnOjYsICdiJzo3fSkKKyAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogNiwgJ2InOiA3LCAnYyc6IDh9CisgICAgPj4+IGYoMSwgMiwgMywgKig0LCA1KSwgeD02LCB5PTcsICoqeydhJzo4LCAnYic6IDl9KQorICAgICgxLCAyLCAzLCA0LCA1KSB7J2EnOiA4LCAnYic6IDksICd4JzogNiwgJ3knOiA3fQogCiAgICAgPj4+IGYoMSwgMiwgMywgKipVc2VyRGljdChhPTQsIGI9NSkpCiAgICAgKDEsIDIsIDMpIHsnYSc6IDQsICdiJzogNX0KQEAgLTUyLDYgKzcyLDggQEAKICAgICAoMSwgMiwgMywgNCwgNSkgeydhJzogNiwgJ2InOiA3fQogICAgID4+PiBmKDEsIDIsIDMsIHg9NCwgeT01LCAqKDYsIDcpLCAqKlVzZXJEaWN0KGE9OCwgYj05KSkKICAgICAoMSwgMiwgMywgNiwgNykgeydhJzogOCwgJ2InOiA5LCAneCc6IDQsICd5JzogNX0KKyAgICA+Pj4gZigxLCAyLCAzLCAqKDQsIDUpLCB4PTYsIHk9NywgKipVc2VyRGljdChhPTgsIGI9OSkpCisgICAgKDEsIDIsIDMsIDQsIDUpIHsnYSc6IDgsICdiJzogOSwgJ3gnOiA2LCAneSc6IDd9CiAKIEV4YW1wbGVzIHdpdGggaW52YWxpZCBhcmd1bWVudHMgKFR5cGVFcnJvcnMpLiBXZSdyZSBhbHNvIHRlc3RpbmcgdGhlIGZ1bmN0aW9uCiBuYW1lcyBpbiB0aGUgZXhjZXB0aW9uIG1lc3NhZ2VzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQppbmRleCBlNjhhMDllLi4wZDg2Y2I1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtNiw4ICs2LDggQEAKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CkBAIC0xNyw2ICsxNywxMCBAQAogICAgIEhBVkVfVEhSRUFEUyA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBIQVZFX1RIUkVBRFMgPSBGYWxzZQordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCiAKIFRJTUVPVVQgPSAwLjUKIApAQCAtMzgsNyArNDIsNyBAQAogICAgICAgICBzdXBwb3J0LnVubGluayhmaWxlbmFtZSkKIAogY2xhc3MgRmF1bHRIYW5kbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUpOgorICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYsIGNvZGUsIGZpbGVuYW1lPU5vbmUsIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgUnVuIHRoZSBzcGVjaWZpZWQgY29kZSBpbiBQeXRob24gKGluIGEgbmV3IGNoaWxkIHByb2Nlc3MpIGFuZCByZWFkIHRoZQogICAgICAgICBvdXRwdXQgZnJvbSB0aGUgc3RhbmRhcmQgZXJyb3Igb3IgZnJvbSBhIGZpbGUgKGlmIGZpbGVuYW1lIGlzIHNldCkuCkBAIC00OSw4ICs1MywxMSBAQAogICAgICAgICB0aHJlYWQgWFhYIi4KICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBkZWRlbnQoY29kZSkuc3RyaXAoKQorICAgICAgICBwYXNzX2ZkcyA9IFtdCisgICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGFzc19mZHMuYXBwZW5kKGZkKQogICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgotICAgICAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUpCisgICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgcGFzc19mZHM9cGFzc19mZHMpCiAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCiAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5zdHJpcF9weXRob25fc3RkZXJyKHN0ZG91dCkKQEAgLTYwLDEzICs2NywyMCBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICBlbGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIG9zLlNFRUtfU0VULCAwKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBjbG9zZWZkPUZhbHNlKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKICAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKIAogICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQogICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCkBAIC04OSw3ICsxMDMsNyBAQAogICAgICAgICAgICAgaGVhZGVyPXJlLmVzY2FwZShoZWFkZXIpKSkuc3RyaXAoKQogICAgICAgICBpZiBvdGhlcl9yZWdleDoKICAgICAgICAgICAgIHJlZ2V4ICs9ICd8JyArIG90aGVyX3JlZ2V4Ci0gICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWU9ZmlsZW5hbWUsIGZkPWZkKQogICAgICAgICBvdXRwdXQgPSAnXG4nLmpvaW4ob3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCkBAIC0xMzUsMjYgKzE0OSwzMiBAQAogICAgICAgICAgICAgMywKICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBleGNlcHRpb24nKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnYnVzJyksCi0gICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2J1cygpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHQlVTJyksICduZWVkIHNpZ25hbC5TSUdCVVMnKQogICAgIGRlZiB0ZXN0X3NpZ2J1cyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKwogICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3NpZ2J1cygpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdCVVMpCiAgICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAorICAgICAgICAgICAgNiwKICAgICAgICAgICAgICdCdXMgZXJyb3InKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdfc2lnaWxsJyksCi0gICAgICAgICAgICAgICAgICAgICAibmVlZCBmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHSUxMJyksICduZWVkIHNpZ25hbC5TSUdJTEwnKQogICAgIGRlZiB0ZXN0X3NpZ2lsbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKwogICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3NpZ2lsbCgpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdJTEwpCiAgICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAorICAgICAgICAgICAgNiwKICAgICAgICAgICAgICdJbGxlZ2FsIGluc3RydWN0aW9uJykKIAogICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yKHNlbGYpOgpAQCAtMjAxLDYgKzIyMSwyMSBAQAogICAgICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnLAogICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICJzdWJwcm9jZXNzIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzX2ZkcyBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9lbmFibGVfZmQoc2VsZik6CisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgnd2IrJykgYXMgZnA6CisgICAgICAgICAgICBmZCA9IGZwLmZpbGVubygpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSglcykKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3NpZ3NlZ3YoKQorICAgICAgICAgICAgICAgICIiIiAlIGZkLAorICAgICAgICAgICAgICAgIDQsCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcsCisgICAgICAgICAgICAgICAgZmQ9ZmQpCisKICAgICBkZWYgdGVzdF9lbmFibGVfc2luZ2xlX3RocmVhZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTI4Nyw3ICszMjIsNyBAQAogICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChhcmdzLCBlbnY9ZW52KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5yc3RyaXAoKSwgYiJUcnVlIikKIAotICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFjayhzZWxmLCBmaWxlbmFtZSk6CisgICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrKHNlbGYsICosIGZpbGVuYW1lPU5vbmUsIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgRXhwbGljaXRseSBjYWxsIGR1bXBfdHJhY2ViYWNrKCkgZnVuY3Rpb24gYW5kIGNoZWNrIGl0cyBvdXRwdXQuCiAgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgpAQCAtMjk1LDEwICszMzAsMTYgQEAKICAgICAgICAgY29kZSA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgogCisgICAgICAgICAgICBmaWxlbmFtZSA9IHtmaWxlbmFtZSFyfQorICAgICAgICAgICAgZmQgPSB7ZmR9CisKICAgICAgICAgICAgIGRlZiBmdW5jQigpOgotICAgICAgICAgICAgICAgIGlmIHtoYXNfZmlsZW5hbWV9OgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oe2ZpbGVuYW1lfSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6CiAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soZnAsIGFsbF90aHJlYWRzPUZhbHNlKQorICAgICAgICAgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbF90aHJlYWRzPUZhbHNlKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1GYWxzZSkKIApAQCAtMzA4LDI5ICszNDksMzcgQEAKICAgICAgICAgICAgIGZ1bmNBKCkKICAgICAgICAgICAgICIiIgogICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCi0gICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKLSAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAorICAgICAgICAgICAgZmQ9ZmQsCiAgICAgICAgICkKICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBsaW5lbm8gPSA2CisgICAgICAgICAgICBsaW5lbm8gPSA5CisgICAgICAgIGVsaWYgZmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsaW5lbm8gPSAxMgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGluZW5vID0gOAorICAgICAgICAgICAgbGluZW5vID0gMTQKICAgICAgICAgZXhwZWN0ZWQgPSBbCiAgICAgICAgICAgICAnU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOicsCiAgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgJXMgaW4gZnVuY0InICUgbGluZW5vLAotICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDExIGluIGZ1bmNBJywKLSAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxMyBpbiA8bW9kdWxlPicKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAxNyBpbiBmdW5jQScsCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTkgaW4gPG1vZHVsZT4nCiAgICAgICAgIF0KLSAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUsIGZkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBleHBlY3RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKIAogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKE5vbmUpCisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soKQogCiAgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrKGZpbGVuYW1lPWZpbGVuYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICJzdWJwcm9jZXNzIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzX2ZkcyBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19mZChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmQ9ZnAuZmlsZW5vKCkpCiAKICAgICBkZWYgdGVzdF90cnVuY2F0ZShzZWxmKToKICAgICAgICAgbWF4bGVuID0gNTAwCkBAIC00MjMsNyArNDcyLDEwIEBACiAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoZmlsZW5hbWUpCiAKLSAgICBkZWYgX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdCwgY2FuY2VsLCBmaWxlbmFtZSwgbG9vcHMpOgorICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigpJykKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZiwgcmVwZWF0PUZhbHNlLCBjYW5jZWw9RmFsc2UsIGxvb3BzPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICosIGZpbGVuYW1lPU5vbmUsIGZkPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgaG93IG1hbnkgdGltZXMgdGhlIHRyYWNlYmFjayBpcyB3cml0dGVuIGluIHRpbWVvdXQgeCAyLjUgc2Vjb25kcywKICAgICAgICAgb3IgdGltZW91dCB4IDMuNSBzZWNvbmRzIGlmIGNhbmNlbCBpcyBUcnVlOiAxLCAyIG9yIDMgdGltZXMgZGVwZW5kaW5nCkBAIC00MzUsNiArNDg3LDE0IEBACiAgICAgICAgIGNvZGUgPSAiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKICAgICAgICAgICAgIGltcG9ydCB0aW1lCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIHRpbWVvdXQgPSB7dGltZW91dH0KKyAgICAgICAgICAgIHJlcGVhdCA9IHtyZXBlYXR9CisgICAgICAgICAgICBjYW5jZWwgPSB7Y2FuY2VsfQorICAgICAgICAgICAgbG9vcHMgPSB7bG9vcHN9CisgICAgICAgICAgICBmaWxlbmFtZSA9IHtmaWxlbmFtZSFyfQorICAgICAgICAgICAgZmQgPSB7ZmR9CiAKICAgICAgICAgICAgIGRlZiBmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcyk6CiAgICAgICAgICAgICAgICAgZm9yIGxvb3AgaW4gcmFuZ2UobG9vcHMpOgpAQCAtNDQ0LDE2ICs1MDQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0ICogNSkKICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCiAKLSAgICAgICAgICAgIHRpbWVvdXQgPSB7dGltZW91dH0KLSAgICAgICAgICAgIHJlcGVhdCA9IHtyZXBlYXR9Ci0gICAgICAgICAgICBjYW5jZWwgPSB7Y2FuY2VsfQotICAgICAgICAgICAgbG9vcHMgPSB7bG9vcHN9Ci0gICAgICAgICAgICBpZiB7aGFzX2ZpbGVuYW1lfToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorICAgICAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJ3YiIpCisgICAgICAgICAgICBlbGlmIGZkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyLmZpbGVubygpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZpbGUgPSBOb25lCiAgICAgICAgICAgICBmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcykKLSAgICAgICAgICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICAgICAgICIiIgogICAgICAgICBjb2RlID0gY29kZS5mb3JtYXQoCkBAIC00NjEsOCArNTE5LDggQEAKICAgICAgICAgICAgIHJlcGVhdD1yZXBlYXQsCiAgICAgICAgICAgICBjYW5jZWw9Y2FuY2VsLAogICAgICAgICAgICAgbG9vcHM9bG9vcHMsCi0gICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCi0gICAgICAgICAgICBmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLAorICAgICAgICAgICAgZmQ9ZmQsCiAgICAgICAgICkKICAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQogICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKQEAgLTQ3MiwyNyArNTMwLDEyIEBACiAgICAgICAgICAgICBpZiByZXBlYXQ6CiAgICAgICAgICAgICAgICAgY291bnQgKj0gMgogICAgICAgICAgICAgaGVhZGVyID0gcidUaW1lb3V0IFwoJXNcKSFcblRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicgJSB0aW1lb3V0X3N0cgotICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soOSwgMjAsIGhlYWRlciwgbWluX2NvdW50PWNvdW50KQorICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTcsIDI2LCBoZWFkZXIsIG1pbl9jb3VudD1jb3VudCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyksCi0gICAgICAgICAgICAgICAgICAgICAnbmVlZCBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKScpCi0gICAgZGVmIGNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdD1GYWxzZSwgY2FuY2VsPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1GYWxzZSwgdHdpY2U9RmFsc2UpOgotICAgICAgICBpZiB0d2ljZToKLSAgICAgICAgICAgIGxvb3BzID0gMgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9vcHMgPSAxCi0gICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdCwgY2FuY2VsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbG9vcHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQsIGNhbmNlbCwgTm9uZSwgbG9vcHMpCi0KICAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcigpCiAKQEAgLTUwMywxNSArNTQ2LDIyIEBACiAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoY2FuY2VsPVRydWUpCiAKICAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl9maWxlKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGZpbGU9VHJ1ZSkKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX2ZkKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoJ3diKycpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihmZD1mcC5maWxlbm8oKSkKIAogICAgIGRlZiB0ZXN0X2R1bXBfdHJhY2ViYWNrX2xhdGVyX3R3aWNlKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHR3aWNlPVRydWUpCisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIobG9vcHM9MikKIAogICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAicmVnaXN0ZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5yZWdpc3RlciIpCiAgICAgZGVmIGNoZWNrX3JlZ2lzdGVyKHNlbGYsIGZpbGVuYW1lPUZhbHNlLCBhbGxfdGhyZWFkcz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcj1GYWxzZSwgY2hhaW49RmFsc2UpOgorICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyPUZhbHNlLCBjaGFpbj1GYWxzZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBSZWdpc3RlciBhIGhhbmRsZXIgZGlzcGxheWluZyB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwuIFJhaXNlIHRoZQogICAgICAgICBzaWduYWwgYW5kIGNoZWNrIHRoZSB3cml0dGVuIHRyYWNlYmFjay4KQEAgLTUyNyw2ICs1NzcsMTMgQEAKICAgICAgICAgICAgIGltcG9ydCBzaWduYWwKICAgICAgICAgICAgIGltcG9ydCBzeXMKIAorICAgICAgICAgICAgYWxsX3RocmVhZHMgPSB7YWxsX3RocmVhZHN9CisgICAgICAgICAgICBzaWdudW0gPSB7c2lnbnVtfQorICAgICAgICAgICAgdW5yZWdpc3RlciA9IHt1bnJlZ2lzdGVyfQorICAgICAgICAgICAgY2hhaW4gPSB7Y2hhaW59CisgICAgICAgICAgICBmaWxlbmFtZSA9IHtmaWxlbmFtZSFyfQorICAgICAgICAgICAgZmQgPSB7ZmR9CisKICAgICAgICAgICAgIGRlZiBmdW5jKHNpZ251bSk6CiAgICAgICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQogCkBAIC01MzQsMTkgKzU5MSwxNiBAQAogICAgICAgICAgICAgICAgIGhhbmRsZXIuY2FsbGVkID0gVHJ1ZQogICAgICAgICAgICAgaGFuZGxlci5jYWxsZWQgPSBGYWxzZQogCi0gICAgICAgICAgICBleGl0Y29kZSA9IDAKLSAgICAgICAgICAgIHNpZ251bSA9IHtzaWdudW19Ci0gICAgICAgICAgICB1bnJlZ2lzdGVyID0ge3VucmVnaXN0ZXJ9Ci0gICAgICAgICAgICBjaGFpbiA9IHtjaGFpbn0KLQotICAgICAgICAgICAgaWYge2hhc19maWxlbmFtZX06Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oe2ZpbGVuYW1lfSwgIndiIikKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAid2IiKQorICAgICAgICAgICAgZWxpZiBmZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlID0gc3lzLnN0ZGVyci5maWxlbm8oKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmaWxlID0gTm9uZQogICAgICAgICAgICAgaWYgY2hhaW46CiAgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCiAgICAgICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBmaWxlPWZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3RocmVhZHM9e2FsbF90aHJlYWRzfSwgY2hhaW49e2NoYWlufSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfdGhyZWFkcz1hbGxfdGhyZWFkcywgY2hhaW49e2NoYWlufSkKICAgICAgICAgICAgIGlmIHVucmVnaXN0ZXI6CiAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLnVucmVnaXN0ZXIoc2lnbnVtKQogICAgICAgICAgICAgZnVuYyhzaWdudW0pCkBAIC01NTcsMTcgKzYxMSwxOSBAQAogICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzeXMuc3RkZXJyCiAgICAgICAgICAgICAgICAgcHJpbnQoIkVycm9yOiBzaWduYWwgaGFuZGxlciBub3QgY2FsbGVkISIsIGZpbGU9b3V0cHV0KQogICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gMQotICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSAwCisgICAgICAgICAgICBpZiBmaWxlbmFtZToKICAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKICAgICAgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKLSAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAotICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAogICAgICAgICAgICAgYWxsX3RocmVhZHM9YWxsX3RocmVhZHMsCiAgICAgICAgICAgICBzaWdudW09c2lnbnVtLAogICAgICAgICAgICAgdW5yZWdpc3Rlcj11bnJlZ2lzdGVyLAogICAgICAgICAgICAgY2hhaW49Y2hhaW4sCisgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSwKKyAgICAgICAgICAgIGZkPWZkLAogICAgICAgICApCiAgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKICAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCkBAIC01NzYsNyArNjMyLDcgQEAKICAgICAgICAgICAgICAgICByZWdleCA9ICdDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwotICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soNywgMjgsIHJlZ2V4KQorICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTQsIDMyLCByZWdleCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCkBAIC01OTUsNiArNjUxLDEyIEBACiAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGZpbGVuYW1lPWZpbGVuYW1lKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAgICAgICAgICJzdWJwcm9jZXNzIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzX2ZkcyBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9mZChzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoZmQ9ZnAuZmlsZW5vKCkpCisKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl90aHJlYWRzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGFsbF90aHJlYWRzPVRydWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZV9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZV9laW50ci5weQppbmRleCBiNGUxOGNlLi5mMWVmZDI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVfZWludHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlX2VpbnRyLnB5CkBAIC0xMywxNiArMTMsMTYgQEAKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKICMgVGVzdCBpbXBvcnQgYWxsIG9mIHRoZSB0aGluZ3Mgd2UncmUgYWJvdXQgdG8gdHJ5IHRlc3RpbmcgdXAgZnJvbnQuCi1mcm9tIF9pbyBpbXBvcnQgRmlsZUlPCitpbXBvcnQgX2lvCitpbXBvcnQgX3B5aW8KIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICd0ZXN0cyByZXF1aXJlcyBhIHBvc2l4IHN5c3RlbS4nKQotY2xhc3MgVGVzdEZpbGVJT1NpZ25hbEludGVycnVwdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0OgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5fcHJvY2VzcyA9IE5vbmUKIApAQCAtMzgsOCArMzgsOSBAQAogCiAgICAgICAgIHN1YmNsYXNzZXNlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyB0byB0ZXN0IGRpZmZlcmVudCBJTyBvYmplY3RzLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICgnaW1wb3J0IF9pbyA7JwotICAgICAgICAgICAgICAgICdpbmZpbGUgPSBfaW8uRmlsZUlPKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIiknKQorICAgICAgICByZXR1cm4gKCdpbXBvcnQgJXMgYXMgaW8gOycKKyAgICAgICAgICAgICAgICAnaW5maWxlID0gaW8uRmlsZUlPKHN5cy5zdGRpbi5maWxlbm8oKSwgInJiIiknICUKKyAgICAgICAgICAgICAgICBzZWxmLm1vZG5hbWUpCiAKICAgICBkZWYgZmFpbF93aXRoX3Byb2Nlc3NfaW5mbyhzZWxmLCB3aHksIHN0ZG91dD1iJycsIHN0ZGVycj1iJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGU9VHJ1ZSk6CkBAIC0xNzksMTEgKzE4MCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9YidoZWxsb1xud29ybGQhXG4nKSkKIAogCitjbGFzcyBDVGVzdEZpbGVJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfaW8nCisKK2NsYXNzIFB5VGVzdEZpbGVJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kbmFtZSA9ICdfcHlpbycKKworCiBjbGFzcyBUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KToKICAgICBkZWYgX2dlbmVyYXRlX2luZmlsZV9zZXR1cF9jb2RlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBpbmZpbGUgPSAuLi4gbGluZSBvZiBjb2RlIHRvIG1ha2UgYSBCdWZmZXJlZFJlYWRlci4iIiIKLSAgICAgICAgcmV0dXJuICgnaW5maWxlID0gb3BlbihzeXMuc3RkaW4uZmlsZW5vKCksICJyYiIpIDsnCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBfaW8gO2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgX2lvLkJ1ZmZlcmVkUmVhZGVyKScpCisgICAgICAgIHJldHVybiAoJ2ltcG9ydCAlcyBhcyBpbyA7aW5maWxlID0gaW8ub3BlbihzeXMuc3RkaW4uZmlsZW5vKCksICJyYiIpIDsnCisgICAgICAgICAgICAgICAgJ2Fzc2VydCBpc2luc3RhbmNlKGluZmlsZSwgaW8uQnVmZmVyZWRSZWFkZXIpJyAlCisgICAgICAgICAgICAgICAgc2VsZi5tb2RuYW1lKQogCiAgICAgZGVmIHRlc3RfcmVhZGFsbChzZWxmKToKICAgICAgICAgIiIiQnVmZmVyZWRSZWFkZXIucmVhZCgpIG11c3QgaGFuZGxlIHNpZ25hbHMgYW5kIG5vdCBsb3NlIGRhdGEuIiIiCkBAIC0xOTMsMTIgKzIwMiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9tZXRob2RfbmFtZT0ncmVhZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1iJ2hlbGxvXG53b3JsZCFcbicpKQogCitjbGFzcyBDVGVzdEJ1ZmZlcmVkSU9TaWduYWxJbnRlcnJ1cHQoVGVzdEJ1ZmZlcmVkSU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19pbycKKworY2xhc3MgUHlUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdChUZXN0QnVmZmVyZWRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX3B5aW8nCisKIAogY2xhc3MgVGVzdFRleHRJT1NpZ25hbEludGVycnVwdChUZXN0RmlsZUlPU2lnbmFsSW50ZXJydXB0KToKICAgICBkZWYgX2dlbmVyYXRlX2luZmlsZV9zZXR1cF9jb2RlKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBpbmZpbGUgPSAuLi4gbGluZSBvZiBjb2RlIHRvIG1ha2UgYSBUZXh0SU9XcmFwcGVyLiIiIgotICAgICAgICByZXR1cm4gKCdpbmZpbGUgPSBvcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJ0IiwgbmV3bGluZT1Ob25lKSA7JwotICAgICAgICAgICAgICAgICdpbXBvcnQgX2lvIDthc3NlcnQgaXNpbnN0YW5jZShpbmZpbGUsIF9pby5UZXh0SU9XcmFwcGVyKScpCisgICAgICAgIHJldHVybiAoJ2ltcG9ydCAlcyBhcyBpbyA7JworICAgICAgICAgICAgICAgICdpbmZpbGUgPSBpby5vcGVuKHN5cy5zdGRpbi5maWxlbm8oKSwgInJ0IiwgbmV3bGluZT1Ob25lKSA7JworICAgICAgICAgICAgICAgICdhc3NlcnQgaXNpbnN0YW5jZShpbmZpbGUsIGlvLlRleHRJT1dyYXBwZXIpJyAlCisgICAgICAgICAgICAgICAgc2VsZi5tb2RuYW1lKQogCiAgICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6CiAgICAgICAgICIiInJlYWRsaW5lKCkgbXVzdCBoYW5kbGUgc2lnbmFscyBhbmQgbm90IGxvc2UgZGF0YS4iIiIKQEAgLTIyNCwxMyArMjQxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX21ldGhvZF9uYW1lPSdyZWFkJywKICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPSJoZWxsb1xud29ybGQhXG4iKSkKIAorY2xhc3MgQ1Rlc3RUZXh0SU9TaWduYWxJbnRlcnJ1cHQoVGVzdFRleHRJT1NpZ25hbEludGVycnVwdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZG5hbWUgPSAnX2lvJwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdF9jYXNlcyA9IFsKLSAgICAgICAgICAgIHRjIGZvciB0YyBpbiBnbG9iYWxzKCkudmFsdWVzKCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodGMsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKHRjLCB1bml0dGVzdC5UZXN0Q2FzZSldCi0gICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2Nhc2VzKQorY2xhc3MgUHlUZXN0VGV4dElPU2lnbmFsSW50ZXJydXB0KFRlc3RUZXh0SU9TaWduYWxJbnRlcnJ1cHQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2RuYW1lID0gJ19weWlvJwogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKaW5kZXggYTRmZDIwZC4uNTljYzM4ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW8ucHkKQEAgLTEyLDEzICsxMiwxNSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIHJ1bl91bml0dGVzdCwgbWFrZV9iYWRfZmQsIGNweXRob25fb25seQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKIAotZnJvbSBfaW8gaW1wb3J0IEZpbGVJTyBhcyBfRmlsZUlPCitpbXBvcnQgX2lvICAjIEMgaW1wbGVtZW50YXRpb24gb2YgaW8KK2ltcG9ydCBfcHlpbyAjIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBpbwogCi1jbGFzcyBBdXRvRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworY2xhc3MgQXV0b0ZpbGVUZXN0czoKICAgICAjIGZpbGUgdGVzdHMgZm9yIHdoaWNoIGEgdGVzdCBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHVwCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZiA9IF9GaWxlSU8oVEVTVEZOLCAndycpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3cnKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmY6CkBAIC02MCwyMCArNjIsNjkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldGF0dHIsIGYsIGF0dHIsICdvb3BzJykKIAotICAgIGRlZiB0ZXN0UmVhZGludG8oc2VsZik6Ci0gICAgICAgICMgdmVyaWZ5IHJlYWRpbnRvCi0gICAgICAgIHNlbGYuZi53cml0ZShieXRlcyhbMSwgMl0pKQorICAgIGRlZiB0ZXN0Qmxrc2l6ZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IHByaXZhdGUgX2Jsa3NpemUgYXR0cmlidXRlCisgICAgICAgIGJsa3NpemUgPSBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgICMgdHJ5IHRvIGdldCBwcmVmZXJyZWQgYmxrc2l6ZSBmcm9tIHN0YXQuc3RfYmxrc2l6ZSwgaWYgYXZhaWxhYmxlCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdmc3RhdCcpOgorICAgICAgICAgICAgZnN0ID0gb3MuZnN0YXQoc2VsZi5mLmZpbGVubygpKQorICAgICAgICAgICAgYmxrc2l6ZSA9IGdldGF0dHIoZnN0LCAnc3RfYmxrc2l6ZScsIGJsa3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mLl9ibGtzaXplLCBibGtzaXplKQorCisgICAgIyB2ZXJpZnkgcmVhZGludG8KKyAgICBkZWYgdGVzdFJlYWRpbnRvQnl0ZUFycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmYud3JpdGUoYnl0ZXMoWzEsIDIsIDAsIDI1NV0pKQogICAgICAgICBzZWxmLmYuY2xvc2UoKQotICAgICAgICBhID0gYXJyYXkoJ2InLCBiJ3gnKjEwKQotICAgICAgICBzZWxmLmYgPSBfRmlsZUlPKFRFU1RGTiwgJ3InKQotICAgICAgICBuID0gc2VsZi5mLnJlYWRpbnRvKGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJyYXkoJ2InLCBbMSwgMl0pLCBhWzpuXSkKKworICAgICAgICBiYSA9IGJ5dGVhcnJheShiJ2FiY2RlZmdoJykKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKGJhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiJ1x4MDFceDAyXHgwMFx4ZmZlZmdoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCA0KQorCisgICAgZGVmIF90ZXN0UmVhZGludG9NZW1vcnl2aWV3KHNlbGYpOgorICAgICAgICBzZWxmLmYud3JpdGUoYnl0ZXMoWzEsIDIsIDAsIDI1NV0pKQorICAgICAgICBzZWxmLmYuY2xvc2UoKQorCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVhcnJheShiJ2FiY2RlZmdoJykpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZWFycmF5KGInYWJjZGVmZ2gnKSkuY2FzdCgnSCcsIHNoYXBlPVsyLCAyXSkKKyAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhURVNURk4sICdyJykgYXMgZjoKKyAgICAgICAgICAgIG4gPSBmLnJlYWRpbnRvKG0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMobSksIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICBkZWYgX3Rlc3RSZWFkaW50b0FycmF5KHNlbGYpOgorICAgICAgICBzZWxmLmYud3JpdGUoYnl0ZXMoWzEsIDIsIDAsIDI1NV0pKQorICAgICAgICBzZWxmLmYuY2xvc2UoKQorCisgICAgICAgIGEgPSBhcnJheSgnQicsIGInYWJjZGVmZ2gnKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8oYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBhcnJheSgnQicsIFsxLCAyLCAwLCAyNTUsIDEwMSwgMTAyLCAxMDMsIDEwNF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDQpCisKKyAgICAgICAgYSA9IGFycmF5KCdiJywgYidhYmNkZWZnaCcpCisgICAgICAgIHdpdGggc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpIGFzIGY6CisgICAgICAgICAgICBuID0gZi5yZWFkaW50byhhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGFycmF5KCdiJywgWzEsIDIsIDAsIC0xLCAxMDEsIDEwMiwgMTAzLCAxMDRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCA0KQorCisgICAgICAgIGEgPSBhcnJheSgnSScsIGInYWJjZGVmZ2gnKQorICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbiA9IGYucmVhZGludG8oYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBhcnJheSgnSScsIGInXHgwMVx4MDJceDAwXHhmZmVmZ2gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCA0KQogCiAgICAgZGVmIHRlc3RXcml0ZWxpbmVzTGlzdChzZWxmKToKICAgICAgICAgbCA9IFtiJzEyMycsIGInNDU2J10KICAgICAgICAgc2VsZi5mLndyaXRlbGluZXMobCkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3JiJykKICAgICAgICAgYnVmID0gc2VsZi5mLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYicxMjM0NTYnKQogCkBAIC04MSw3ICsxMzIsNyBAQAogICAgICAgICBsID0gVXNlckxpc3QoW2InMTIzJywgYic0NTYnXSkKICAgICAgICAgc2VsZi5mLndyaXRlbGluZXMobCkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyYicpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3JiJykKICAgICAgICAgYnVmID0gc2VsZi5mLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYicxMjM0NTYnKQogCkBAIC05Myw3ICsxNDQsNyBAQAogICAgIGRlZiB0ZXN0X25vbmVfYXJncyhzZWxmKToKICAgICAgICAgc2VsZi5mLndyaXRlKGIiaGlcbmJ5ZVxuYWJjIikKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5mID0gX0ZpbGVJTyhURVNURk4sICdyJykKKyAgICAgICAgc2VsZi5mID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAncicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mLnJlYWQoTm9uZSksIGIiaGlcbmJ5ZVxuYWJjIikKICAgICAgICAgc2VsZi5mLnNlZWsoMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmYucmVhZGxpbmUoTm9uZSksIGIiaGlcbiIpCkBAIC0xMDMsMTMgKzE1NCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi53cml0ZSwgIkhlbGxvISIpCiAKICAgICBkZWYgdGVzdFJlcHIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihzZWxmLmYpLCAiPF9pby5GaWxlSU8gbmFtZT0lciBtb2RlPSVyPiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmYubmFtZSwgc2VsZi5mLm1vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPCVzLkZpbGVJTyBuYW1lPSVyIG1vZGU9JXIgY2xvc2VmZD1UcnVlPiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm1vZHVsZW5hbWUsIHNlbGYuZi5uYW1lLCBzZWxmLmYubW9kZSkpCiAgICAgICAgIGRlbCBzZWxmLmYubmFtZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwgIjxfaW8uRmlsZUlPIGZkPSVyIG1vZGU9JXI+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYuZi5maWxlbm8oKSwgc2VsZi5mLm1vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPCVzLkZpbGVJTyBmZD0lciBtb2RlPSVyIGNsb3NlZmQ9VHJ1ZT4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5tb2R1bGVuYW1lLCBzZWxmLmYuZmlsZW5vKCksIHNlbGYuZi5tb2RlKSkKICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHNlbGYuZiksICI8X2lvLkZpbGVJTyBbY2xvc2VkXT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc2VsZi5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiPCVzLkZpbGVJTyBbY2xvc2VkXT4iICUgKHNlbGYubW9kdWxlbmFtZSwpKQorCisgICAgZGVmIHRlc3RSZXByTm9DbG9zZUZEKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLkZpbGVJTyhmZCwgJ3InLCBjbG9zZWZkPUZhbHNlKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8JXMuRmlsZUlPIG5hbWU9JXIgbW9kZT0lciBjbG9zZWZkPUZhbHNlPiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubW9kdWxlbmFtZSwgZi5uYW1lLCBmLm1vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCiAKICAgICBkZWYgdGVzdEVycm9ycyhzZWxmKToKICAgICAgICAgZiA9IHNlbGYuZgpAQCAtMTE5LDcgKzE4Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCwgMTApICMgT3BlbiBmb3IgcmVhZGluZwogICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2xvc2VkKQotICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICdyJykKKyAgICAgICAgZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZGludG8sICIiKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQogICAgICAgICBmLmNsb3NlKCkKQEAgLTEzOCwxMSArMjAyLDExIEBACiAgICAgICAgICAgICAjIHNob3VsZCByYWlzZSBvbiBjbG9zZWQgZmlsZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWV0aG9kKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi5yZWFkaW50bykgIyBYWFggc2hvdWxkIGJlIFR5cGVFcnJvcj8KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmYucmVhZGludG8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi5yZWFkaW50bywgYnl0ZWFycmF5KDEpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmYuc2VlaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmYuc2VlaykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5mLnNlZWssIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi53cml0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmYud3JpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZi53cml0ZSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZi53cml0ZWxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmYud3JpdGVsaW5lcywgYicnKQpAQCAtMTUwLDkgKzIxNCw5IEBACiAgICAgZGVmIHRlc3RPcGVuZGlyKHNlbGYpOgogICAgICAgICAjIElzc3VlIDM3MDM6IG9wZW5pbmcgYSBkaXJlY3Rvcnkgc2hvdWxkIGZpbGwgdGhlIGVycm5vCiAgICAgICAgICMgV2luZG93cyBhbHdheXMgcmV0dXJucyAiW0Vycm5vIDEzXTogUGVybWlzc2lvbiBkZW5pZWQKLSAgICAgICAgIyBVbml4IGNhbGxzIGRpcmNoZWNrKCkgYW5kIHJldHVybnMgIltFcnJubyAyMV06IElzIGEgZGlyZWN0b3J5IgorICAgICAgICAjIFVuaXggdXNlcyBmc3RhdCBhbmQgcmV0dXJucyAiW0Vycm5vIDIxXTogSXMgYSBkaXJlY3RvcnkiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIF9GaWxlSU8oJy4nLCAncicpCisgICAgICAgICAgICBzZWxmLkZpbGVJTygnLicsICdyJykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZS5lcnJubywgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maWxlbmFtZSwgIi4iKQpAQCAtMTYzLDcgKzIyNyw3IEBACiAgICAgZGVmIHRlc3RPcGVuRGlyRkQoc2VsZik6CiAgICAgICAgIGZkID0gb3Mub3BlbignLicsIG9zLk9fUkRPTkxZKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgX0ZpbGVJTyhmZCwgJ3InKQorICAgICAgICAgICAgc2VsZi5GaWxlSU8oZmQsICdyJykKICAgICAgICAgb3MuY2xvc2UoZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSVNESVIpCiAKQEAgLTI0OCw3ICszMTIsNyBAQAogICAgICAgICAgICAgc2VsZi5mLmNsb3NlKCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHNlbGYuZiA9IF9GaWxlSU8oVEVTVEZOLCAncicpCisgICAgICAgIHNlbGYuZiA9IHNlbGYuRmlsZUlPKFRFU1RGTiwgJ3InKQogICAgICAgICBvcy5jbG9zZShzZWxmLmYuZmlsZW5vKCkpCiAgICAgICAgIHJldHVybiBzZWxmLmYKIApAQCAtMjY4LDIzICszMzIsMzIgQEAKICAgICAgICAgYSA9IGFycmF5KCdiJywgYid4JyoxMCkKICAgICAgICAgZi5yZWFkaW50byhhKQogCi1jbGFzcyBPdGhlckZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBDQXV0b0ZpbGVUZXN0cyhBdXRvRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX2lvLkZpbGVJTworICAgIG1vZHVsZW5hbWUgPSAnX2lvJworCitjbGFzcyBQeUF1dG9GaWxlVGVzdHMoQXV0b0ZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEZpbGVJTyA9IF9weWlvLkZpbGVJTworICAgIG1vZHVsZW5hbWUgPSAnX3B5aW8nCisKKworY2xhc3MgT3RoZXJGaWxlVGVzdHM6CiAKICAgICBkZWYgdGVzdEFibGVzKHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICJ3IikKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICJ3IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkYWJsZSgpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0YWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWthYmxlKCksIFRydWUpCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAotICAgICAgICAgICAgZiA9IF9GaWxlSU8oVEVTVEZOLCAiciIpCisgICAgICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAiciIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGFibGUoKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0YWJsZSgpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrYWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgImErIikKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICJhKyIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGFibGUoKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0YWJsZSgpLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWthYmxlKCksIFRydWUpCkBAIC0yOTMsNyArMzY2LDcgQEAKIAogICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJ3aW4zMiI6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmID0gX0ZpbGVJTygiL2Rldi90dHkiLCAiYSIpCisgICAgICAgICAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTygiL2Rldi90dHkiLCAiYSIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBydW4gaW4gYSBjcm9uIGpvYiB0aGVyZSBqdXN0IGFyZW4ndCBhbnkKICAgICAgICAgICAgICAgICAgICAgIyB0dHlzLCBzbyBza2lwIHRoZSB0ZXN0LiAgVGhpcyBhbHNvIGhhbmRsZXMgb3RoZXIKQEAgLTMxNiw3ICszODksNyBAQAogICAgICAgICAjIGNoZWNrIGludmFsaWQgbW9kZSBzdHJpbmdzCiAgICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIsICJydyIsICJydCIpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgbW9kZSkKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCBtb2RlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKQEAgLTMzMiw3ICs0MDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FiKycsICdhYisnKSwgKCdhK2InLCAnYWIrJyksICgncicsICdyYicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3JiJywgJ3JiJyksICgncmIrJywgJ3JiKycpLCAoJ3IrYicsICdyYisnKV06CiAgICAgICAgICAgICAgICAgIyByZWFkIG1vZGVzIGFyZSBsYXN0IHNvIHRoYXQgVEVTVEZOIHdpbGwgZXhpc3QgZmlyc3QKLSAgICAgICAgICAgICAgICB3aXRoIF9GaWxlSU8oVEVTVEZOLCBtb2Rlc1swXSkgYXMgZjoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuRmlsZUlPKFRFU1RGTiwgbW9kZXNbMF0pIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5tb2RlLCBtb2Rlc1sxXSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFRFU1RGTik6CkBAIC0zNDAsNyArNDEzLDcgQEAKIAogICAgIGRlZiB0ZXN0VW5pY29kZU9wZW4oc2VsZik6CiAgICAgICAgICMgdmVyaWZ5IHJlcHIgd29ya3MgZm9yIHVuaWNvZGUgdG9vCi0gICAgICAgIGYgPSBfRmlsZUlPKHN0cihURVNURk4pLCAidyIpCisgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhzdHIoVEVTVEZOKSwgInciKQogICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKIApAQCAtMzUwLDcgKzQyMyw3IEBACiAgICAgICAgICAgICBmbiA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvdWxkIG5vdCBlbmNvZGUgJXIgdG8gYXNjaWknICUgVEVTVEZOKQotICAgICAgICBmID0gX0ZpbGVJTyhmbiwgInciKQorICAgICAgICBmID0gc2VsZi5GaWxlSU8oZm4sICJ3IikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZi53cml0ZShiImFiYyIpCiAgICAgICAgICAgICBmLmNsb3NlKCkKQEAgLTM2MSwyOCArNDM0LDIxIEBACiAKICAgICBkZWYgdGVzdENvbnN0cnVjdG9ySGFuZGxlc05VTENoYXJzKHNlbGYpOgogICAgICAgICBmbl93aXRoX05VTCA9ICdmb29cMGJhcicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBmbl93aXRoX05VTCwgJ3cnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLkZpbGVJTywgZm5fd2l0aF9OVUwsICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5GaWxlSU8sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQogCiAgICAgZGVmIHRlc3RJbnZhbGlkRmQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF9GaWxlSU8sIC0xMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgX0ZpbGVJTywgbWFrZV9iYWRfZmQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5GaWxlSU8sIC0xMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2VsZi5GaWxlSU8sIG1ha2VfYmFkX2ZkKCkpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgaW1wb3J0IG1zdmNydAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgbXN2Y3J0LmdldF9vc2ZoYW5kbGUsIG1ha2VfYmFkX2ZkKCkpCiAKLSAgICBAY3B5dGhvbl9vbmx5Ci0gICAgZGVmIHRlc3RJbnZhbGlkRmRfb3ZlcmZsb3coc2VsZik6Ci0gICAgICAgICMgSXNzdWUgMTU5ODkKLSAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfRmlsZUlPLCBfdGVzdGNhcGkuSU5UX01JTiAtIDEpCi0KICAgICBkZWYgdGVzdEJhZE1vZGVBcmd1bWVudChzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgdGhhdCB3ZSBnZXQgYSBzZW5zaWJsZSBlcnJvciBtZXNzYWdlIGZvciBiYWQgbW9kZSBhcmd1bWVudAogICAgICAgICBiYWRfbW9kZSA9ICJxd2VydHkiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgYmFkX21vZGUpCisgICAgICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCBiYWRfbW9kZSkKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgaWYgbXNnLmFyZ3NbMF0gIT0gMDoKICAgICAgICAgICAgICAgICBzID0gc3RyKG1zZykKQEAgLTM5NSw3ICs0NjEsNyBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBlcnJvciBmb3IgaW52YWxpZCBtb2RlOiAlcyIgJSBiYWRfbW9kZSkKIAogICAgIGRlZiB0ZXN0VHJ1bmNhdGUoc2VsZik6Ci0gICAgICAgIGYgPSBfRmlsZUlPKFRFU1RGTiwgJ3cnKQorICAgICAgICBmID0gc2VsZi5GaWxlSU8oVEVTVEZOLCAndycpCiAgICAgICAgIGYud3JpdGUoYnl0ZXMoYnl0ZWFycmF5KHJhbmdlKDEwKSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAxMCkKICAgICAgICAgZi50cnVuY2F0ZSg1KQpAQCAtNDEwLDExICs0NzYsMTEgQEAKICAgICAgICAgZGVmIGJ1ZzgwMTYzMSgpOgogICAgICAgICAgICAgIyBTRiBidWcgPGh0dHA6Ly93d3cucHl0aG9uLm9yZy9zZi84MDE2MzE+CiAgICAgICAgICAgICAjICJmaWxlLnRydW5jYXRlIGZhdWx0IG9uIHdpbmRvd3MiCi0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sICd3JykKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sICd3JykKICAgICAgICAgICAgIGYud3JpdGUoYnl0ZXMocmFuZ2UoMTEpKSkKICAgICAgICAgICAgIGYuY2xvc2UoKQogCi0gICAgICAgICAgICBmID0gX0ZpbGVJTyhURVNURk4sJ3IrJykKKyAgICAgICAgICAgIGYgPSBzZWxmLkZpbGVJTyhURVNURk4sJ3IrJykKICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoNSkKICAgICAgICAgICAgIGlmIGRhdGEgIT0gYnl0ZXMocmFuZ2UoNSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmVhZCBvbiBmaWxlIG9wZW5lZCBmb3IgdXBkYXRlIGZhaWxlZCAlciIgJSBkYXRhKQpAQCAtNDU0LDE5ICs1MjAsMTkgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdEludmFsaWRJbml0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9GaWxlSU8sICIxIiwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkZpbGVJTywgIjEiLCAwLCAwKQogCiAgICAgZGVmIHRlc3RXYXJuaW5ncyhzZWxmKToKICAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncyhxdWlldD1UcnVlKSBhcyB3OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0ZpbGVJTywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuRmlsZUlPLCBbXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53YXJuaW5ncywgW10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfRmlsZUlPLCAiL3NvbWUvaW52YWxpZC9uYW1lIiwgInJ0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuRmlsZUlPLCAiL3NvbWUvaW52YWxpZC9uYW1lIiwgInJ0IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53YXJuaW5ncywgW10pCiAKICAgICBkZWYgdGVzdFVuY2xvc2VkRkRPbkV4Y2VwdGlvbihzZWxmKToKICAgICAgICAgY2xhc3MgTXlFeGNlcHRpb24oRXhjZXB0aW9uKTogcGFzcwotICAgICAgICBjbGFzcyBNeUZpbGVJTyhfRmlsZUlPKToKKyAgICAgICAgY2xhc3MgTXlGaWxlSU8oc2VsZi5GaWxlSU8pOgogICAgICAgICAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKICAgICAgICAgICAgICAgICBpZiBuYW1lID09ICJuYW1lIjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgTXlFeGNlcHRpb24oImJsb2NrZWQgc2V0dGluZyBuYW1lIikKQEAgLTQ3NSwxMiArNTQxLDI4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXhjZXB0aW9uLCBNeUZpbGVJTywgZmQpCiAgICAgICAgIG9zLmNsb3NlKGZkKSAgIyBzaG91bGQgbm90IHJhaXNlIE9TRXJyb3IoRUJBREYpCiAKK2NsYXNzIENPdGhlckZpbGVUZXN0cyhPdGhlckZpbGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEZpbGVJTyA9IF9pby5GaWxlSU8KKyAgICBtb2R1bGVuYW1lID0gJ19pbycKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdEludmFsaWRGZF9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNTk4OQorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5GaWxlSU8sIF90ZXN0Y2FwaS5JTlRfTUFYICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLkZpbGVJTywgX3Rlc3RjYXBpLklOVF9NSU4gLSAxKQorCitjbGFzcyBQeU90aGVyRmlsZVRlc3RzKE90aGVyRmlsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgRmlsZUlPID0gX3B5aW8uRmlsZUlPCisgICAgbW9kdWxlbmFtZSA9ICdfcHlpbycKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBIaXN0b3JpY2FsbHksIHRoZXNlIHRlc3RzIGhhdmUgYmVlbiBzbG9wcHkgYWJvdXQgcmVtb3ZpbmcgVEVTVEZOLgogICAgICMgU28gZ2V0IHJpZCBvZiBpdCBubyBtYXR0ZXIgd2hhdC4KICAgICB0cnk6Ci0gICAgICAgIHJ1bl91bml0dGVzdChBdXRvRmlsZVRlc3RzLCBPdGhlckZpbGVUZXN0cykKKyAgICAgICAgcnVuX3VuaXR0ZXN0KENBdXRvRmlsZVRlc3RzLCBQeUF1dG9GaWxlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICBDT3RoZXJGaWxlVGVzdHMsIFB5T3RoZXJGaWxlVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKICAgICAgICAgICAgIG9zLnVubGluayhURVNURk4pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbmFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5CmluZGV4IDAzYWMxYWEuLjM1ZDc5MTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmluYWxpemF0aW9uLnB5CkBAIC01MTUsOCArNTE1LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBOb25lKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggZTg3YWFiMC4uNDI1MTA5MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC03NzMsNiArNzczLDE0IEBACiAgICAgICAgICAgICB0ZXN0KHNmbXQsIE5BTiwgJyBuYW4nKQogICAgICAgICAgICAgdGVzdChzZm10LCAtTkFOLCAnIG5hbicpCiAKKyAgICBkZWYgdGVzdF9Ob25lX25kaWdpdHMoc2VsZik6CisgICAgICAgIGZvciB4IGluIHJvdW5kKDEuMjMpLCByb3VuZCgxLjIzLCBOb25lKSwgcm91bmQoMS4yMywgbmRpZ2l0cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBpbnQpCisgICAgICAgIGZvciB4IGluIHJvdW5kKDEuNzgpLCByb3VuZCgxLjc4LCBOb25lKSwgcm91bmQoMS43OCwgbmRpZ2l0cz1Ob25lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBpbnQpCisKIAogIyBCZWdpbm5pbmcgd2l0aCBQeXRob24gMi42IGZsb2F0IGhhcyBjcm9zcyBwbGF0Zm9ybSBjb21wYXRpYmxlCiAjIHdheXMgdG8gY3JlYXRlIGFuZCByZXByZXNlbnQgaW5mIGFuZCBuYW4KQEAgLTEyOTksMTggKzEzMDcsNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuaWRlbnRpY2FsKHgsIGZyb21IZXgodG9IZXgoeCkpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgR2VuZXJhbEZsb2F0Q2FzZXMsCi0gICAgICAgIEZvcm1hdEZ1bmN0aW9uc1Rlc3RDYXNlLAotICAgICAgICBVbmtub3duRm9ybWF0VGVzdENhc2UsCi0gICAgICAgIElFRUVGb3JtYXRUZXN0Q2FzZSwKLSAgICAgICAgRm9ybWF0VGVzdENhc2UsCi0gICAgICAgIFJlcHJUZXN0Q2FzZSwKLSAgICAgICAgUm91bmRUZXN0Q2FzZSwKLSAgICAgICAgSW5mTmFuVGVzdCwKLSAgICAgICAgSGV4RmxvYXRUZXN0Q2FzZSwKLSAgICAgICAgKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZsdWZsLnB5IGIvTGliL3Rlc3QvdGVzdF9mbHVmbC5weQppbmRleCA1YTcwOWJjLi45OGI1YmQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZsdWZsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmx1ZmwucHkKQEAgLTE4LDEwICsxOCw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGTFVGTCB0ZXN0PicsICdleGVjJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChGTFVGTFRlc3RzKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weSBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQppbmRleCA0ODI4MzVkLi5mYTM3ZjkwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBjYXNlcyBmb3IgdGhlIGZubWF0Y2ggbW9kdWxlLiIiIgogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gsIGZubWF0Y2hjYXNlLCB0cmFuc2xhdGUsIGZpbHRlcgpAQCAtNzksMTEgKzc4LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWydhJywgJ2InXSwgJ2EnKSwgWydhJ10pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZubWF0Y2hUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5IGIvTGliL3Rlc3QvdGVzdF9mb3JrMS5weQppbmRleCBlMDYyNmRmLi5lZWJhMzA2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZvcmsxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9yazEucHkKQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgdGltZQogCiBmcm9tIHRlc3QuZm9ya193YWl0IGltcG9ydCBGb3JrV2FpdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUsCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydF9tb2R1bGUsIHZlcmJvc2UpCiAKIHRocmVhZGluZyA9IGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCkBAIC0xOCwxMyArMTgsMTQgQEAKIAogY2xhc3MgRm9ya1Rlc3QoRm9ya1dhaXQpOgogICAgIGRlZiB3YWl0X2ltcGwoc2VsZiwgY3BpZCk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgMTAuMAorICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDw9IGRlYWRsaW5lOgogICAgICAgICAgICAgIyB3YWl0cGlkKCkgc2hvdWxkbid0IGhhbmcsIGJ1dCBzb21lIG9mIHRoZSBidWlsZGJvdHMgc2VlbSB0byBoYW5nCiAgICAgICAgICAgICAjIGluIHRoZSBmb3JraW5nIHRlc3RzLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbS4KICAgICAgICAgICAgIHNwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoY3BpZCwgb3MuV05PSEFORykKICAgICAgICAgICAgIGlmIHNwaWQgPT0gY3BpZDoKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKQEAgLTEwMyw5ICsxMDQsOCBAQAogICAgICAgICAgICAgZm9ya193aXRoX2ltcG9ydF9sb2NrKGxldmVsKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoRm9ya1Rlc3QpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKICAgICByZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQppbmRleCBmYzcxZTQ4Li45YjEzNjMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQpAQCAtOSw3ICs5LDcgQEAKICMgdGVzdCBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRvciAoSSBhbSBub3Qgc3VyZSBpZiB0aGlzIGlzIGJlaW5nIHRlc3RlZAogIyBlbHNld2hlcmUgYnV0LCBzdXJlbHksIHNvbWUgb2YgdGhlIGdpdmVuIGNhc2VzIGFyZSAqbm90KiB0ZXN0ZWQgYmVjYXVzZQogIyB0aGV5IGNyYXNoIHB5dGhvbikKLSMgdGVzdCBvbiB1bmljb2RlIHN0cmluZ3MgYXMgd2VsbAorIyB0ZXN0IG9uIGJ5dGVzIG9iamVjdCBhcyB3ZWxsCiAKIGRlZiB0ZXN0Zm9ybWF0KGZvcm1hdHN0ciwgYXJncywgb3V0cHV0PU5vbmUsIGxpbWl0PU5vbmUsIG92ZXJmbG93b2s9RmFsc2UpOgogICAgIGlmIHZlcmJvc2U6CkBAIC00NiwxOTEgKzQ2LDIwOSBAQAogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgneWVzJykKIAorZGVmIHRlc3Rjb21tb24oZm9ybWF0c3RyLCBhcmdzLCBvdXRwdXQ9Tm9uZSwgbGltaXQ9Tm9uZSwgb3ZlcmZsb3dvaz1GYWxzZSk6CisgICAgIyBpZiBmb3JtYXRzdHIgaXMgYSBzdHIsIHRlc3Qgc3RyLCBieXRlcywgYW5kIGJ5dGVhcnJheTsKKyAgICAjIG90aGVyd2lzZSwgdGVzdCBieXRlcyBhbmQgYnl0ZWFycnkKKyAgICBpZiBpc2luc3RhbmNlKGZvcm1hdHN0ciwgc3RyKToKKyAgICAgICAgdGVzdGZvcm1hdChmb3JtYXRzdHIsIGFyZ3MsIG91dHB1dCwgbGltaXQsIG92ZXJmbG93b2spCisgICAgICAgIGJfZm9ybWF0ID0gZm9ybWF0c3RyLmVuY29kZSgnYXNjaWknKQorICAgIGVsc2U6CisgICAgICAgIGJfZm9ybWF0ID0gZm9ybWF0c3RyCisgICAgYmFfZm9ybWF0ID0gYnl0ZWFycmF5KGJfZm9ybWF0KQorICAgIGJfYXJncyA9IFtdCisgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpOgorICAgICAgICBhcmdzID0gKGFyZ3MsICkKKyAgICBiX2FyZ3MgPSB0dXBsZShhcmdzKQorICAgIGlmIG91dHB1dCBpcyBOb25lOgorICAgICAgICBiX291dHB1dCA9IGJhX291dHB1dCA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICBpZiBpc2luc3RhbmNlKG91dHB1dCwgc3RyKToKKyAgICAgICAgICAgIGJfb3V0cHV0ID0gb3V0cHV0LmVuY29kZSgnYXNjaWknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYl9vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgYmFfb3V0cHV0ID0gYnl0ZWFycmF5KGJfb3V0cHV0KQorICAgIHRlc3Rmb3JtYXQoYl9mb3JtYXQsIGJfYXJncywgYl9vdXRwdXQsIGxpbWl0LCBvdmVyZmxvd29rKQorICAgIHRlc3Rmb3JtYXQoYmFfZm9ybWF0LCBiX2FyZ3MsIGJhX291dHB1dCwgbGltaXQsIG92ZXJmbG93b2spCisKIAogY2xhc3MgRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjFkIiwgKDEsKSwgIjEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLipkIiwgKHN5cy5tYXhzaXplLDEpLCBvdmVyZmxvd29rPVRydWUpICAjIGV4cGVjdCBvdmVyZmxvdwotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjEwMGQiLCAoMSwpLCAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCisKKyAgICBkZWYgdGVzdF9jb21tb25fZm9ybWF0KHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCBpZGVudGlmaWVycyB0aGF0IHdvcmsgdGhlIHNhbWUgYWNyb3NzCisgICAgICAgICMgc3RyLCBieXRlcywgYW5kIGJ5dGVhcnJheXMgKGludGVnZXIsIGZsb2F0LCBvY3QsIGhleCkKKyAgICAgICAgdGVzdGNvbW1vbigiJS4xZCIsICgxLCksICIxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4qZCIsIChzeXMubWF4c2l6ZSwxKSwgb3ZlcmZsb3dvaz1UcnVlKSAgIyBleHBlY3Qgb3ZlcmZsb3cKKyAgICAgICAgdGVzdGNvbW1vbigiJS4xMDBkIiwgKDEsKSwgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDEnLCBvdmVyZmxvd29rPVRydWUpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLjExN3giLCAoMSwpLCAnMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMTE3eCIsICgxLCksICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJwogICAgICAgICAgICAgICAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCiAgICAgICAgICAgICAgICAgIG92ZXJmbG93b2s9VHJ1ZSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMTE4eCIsICgxLCksICcweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJworICAgICAgICB0ZXN0Y29tbW9uKCIlIy4xMTh4IiwgKDEsKSwgJzB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnCiAgICAgICAgICAgICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCiAgICAgICAgICAgICAgICAgIG92ZXJmbG93b2s9VHJ1ZSkKIAotICAgICAgICB0ZXN0Zm9ybWF0KCIlZiIsICgxLjAsKSwgIjEuMDAwMDAwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWYiLCAoMS4wLCksICIxLjAwMDAwMCIpCiAgICAgICAgICMgdGhlc2UgYXJlIHRyeWluZyB0byB0ZXN0IHRoZSBsaW1pdHMgb2YgdGhlIGludGVybmFsIG1hZ2ljLW51bWJlci1sZW5ndGgKICAgICAgICAgIyBmb3JtYXR0aW5nIGJ1ZmZlciwgaWYgdGhhdCBudW1iZXIgY2hhbmdlcyB0aGVuIHRoZXNlIHRlc3RzIGFyZSBsZXNzCiAgICAgICAgICMgZWZmZWN0aXZlCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipnIiwgKDEwOSwgLTEuZSs0OS8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipnIiwgKDExMCwgLTEuZSs0OS8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipnIiwgKDExMCwgLTEuZSsxMDAvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZyIsICgxMDksIC0xLmUrNDkvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZyIsICgxMTAsIC0xLmUrNDkvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qZyIsICgxMTAsIC0xLmUrMTAwLzMuKSkKICAgICAgICAgIyB0ZXN0IHNvbWUgcmlkaWN1bG91c2x5IGxhcmdlIHByZWNpc2lvbiwgZXhwZWN0IG92ZXJmbG93Ci0gICAgICAgIHRlc3Rmb3JtYXQoJyUxMi4qZicsICgxMjM0NTYsIDEuMCkpCisgICAgICAgIHRlc3Rjb21tb24oJyUxMi4qZicsICgxMjM0NTYsIDEuMCkpCiAKICAgICAgICAgIyBjaGVjayBmb3IgaW50ZXJuYWwgb3ZlcmZsb3cgdmFsaWRhdGlvbiBvbiBsZW5ndGggb2YgcHJlY2lzaW9uCiAgICAgICAgICMgdGhlc2UgdGVzdHMgc2hvdWxkIG5vIGxvbmdlciBjYXVzZSBvdmVyZmxvdyBpbiBQeXRob24KICAgICAgICAgIyAyLjcvMy4xIGFuZCBsYXRlci4KLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKmciLCAoMTEwLCAtMS5lKzEwMC8zLikpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLipHIiwgKDExMCwgLTEuZSsxMDAvMy4pKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4qZiIsICgxMTAsIC0xLmUrMTAwLzMuKSkKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuKkYiLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipnIiwgKDExMCwgLTEuZSsxMDAvMy4pKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4qRyIsICgxMTAsIC0xLmUrMTAwLzMuKSkKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuKmYiLCAoMTEwLCAtMS5lKzEwMC8zLikpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLipGIiwgKDExMCwgLTEuZSsxMDAvMy4pKQogICAgICAgICAjIEZvcm1hdHRpbmcgb2YgaW50ZWdlcnMuIE92ZXJmbG93IGlzIG5vdCBvawotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIDEwLCAiYSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMTAwMDAwMDAwMDAwLCAiMTc0ODc2ZTgwMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgMTAsICIxMiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgMTAwMDAwMDAwMDAwLCAiMTM1MTAzNTU2NDAwMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMTAsICIxMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMTAwMDAwMDAwMDAwLCAiMTAwMDAwMDAwMDAwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAxMCwgImEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIDEwMDAwMDAwMDAwMCwgIjE3NDg3NmU4MDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDEwLCAiMTIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDEwMDAwMDAwMDAwMCwgIjEzNTEwMzU1NjQwMDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDEwLCAiMTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDEwMDAwMDAwMDAwMCwgIjEwMDAwMDAwMDAwMCIpCiAgICAgICAgIGJpZyA9IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MAotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlNWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzMWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzMmQiLCAtYmlnLCAiIC0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTMyZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzJkIiwgLWJpZywgIi0wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0wMzJkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAzNGQiLCAtYmlnLCAiLTAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzRkIiwgYmlnLCAiMDAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwKzM0ZCIsIGJpZywgIiswMDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlKzM0ZCIsIGJpZywgIiAgICsxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMzRkIiwgYmlnLCAiICAgIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMmQiLCBiaWcsICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjMwZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzFkIiwgYmlnLCAiMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzMi4zMWQiLCBiaWcsICIgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgZmxvYXQoYmlnKSwgIjEyMzQ1Nl9fX19fX19fX19fX19fX19fX19fX19fXyIsIDYpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiU1ZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMxZCIsIC1iaWcsICItMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMyZCIsIC1iaWcsICIgLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMzJkIiwgLWJpZywgIi0xMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzMmQiLCAtYmlnLCAiLTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTAzMmQiLCAtYmlnLCAiLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMDM0ZCIsIC1iaWcsICItMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNGQiLCBiaWcsICIwMDAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTArMzRkIiwgYmlnLCAiKzAwMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUrMzRkIiwgYmlnLCAiICAgKzEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNGQiLCBiaWcsICIgICAgMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4yZCIsIGJpZywgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMzBkIiwgYmlnLCAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zMWQiLCBiaWcsICIwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMyLjMxZCIsIGJpZywgIiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCBmbG9hdChiaWcpLCAiMTIzNDU2X19fX19fX19fX19fX19fX19fX19fX19fIiwgNikKICAgICAgICAgYmlnID0gMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUgICMgMjEgaGV4IGRpZ2l0cwotICAgICAgICB0ZXN0Zm9ybWF0KCIleCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlNXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyMngiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyM3giLCAtYmlnLCAiIC0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLTIzeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMjN4IiwgLWJpZywgIi0wMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0wMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTAyNXgiLCAtYmlnLCAiLTAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMjV4IiwgYmlnLCAiMDAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwKzI1eCIsIGJpZywgIiswMDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlKzI1eCIsIGJpZywgIiAgICsxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMjV4IiwgYmlnLCAiICAgIDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMngiLCBiaWcsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjIxeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUyMy4yMngiLCBiaWcsICIgMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMjMuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlWCIsIGJpZywgIjEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjWCIsIGJpZywgIjBYMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgYmlnLCAiMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCAtYmlnLCAiLTB4MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMjN4IiwgLWJpZywgIi0weDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrLjIzeCIsIGJpZywgIisweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMgLjIzeCIsIGJpZywgIiAweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMtKy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSsyNi4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSsyNy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysyNy4yM1giLCBiaWcsICIgKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiV4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlNXgiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyMngiLCAtYmlnLCAiLTEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyM3giLCAtYmlnLCAiIC0xMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTIzeCIsIC1iaWcsICItMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1ICIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMjN4IiwgLWJpZywgIi0wMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJS0wMjN4IiwgLWJpZywgIi0xMjM0NTY3ODkwYWJjZGVmMTIzNDUgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAyNXgiLCAtYmlnLCAiLTAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMjV4IiwgYmlnLCAiMDAwMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwKzI1eCIsIGJpZywgIiswMDAxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlKzI1eCIsIGJpZywgIiAgICsxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMjV4IiwgYmlnLCAiICAgIDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMngiLCBiaWcsICIxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjIxeCIsIGJpZywgIjEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUyMy4yMngiLCBiaWcsICIgMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMjMuMjJ4IiwgYmlnLCAiMDEyMzQ1Njc4OTBhYmNkZWYxMjM0NSAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlWCIsIGJpZywgIjEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIGJpZywgIjBYMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSN4IiwgYmlnLCAiMHgxMjM0NTY3ODkwYWJjZGVmMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAtYmlnLCAiLTB4MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMjN4IiwgLWJpZywgIi0weDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrLjIzeCIsIGJpZywgIisweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMgLjIzeCIsIGJpZywgIiAweDAwMTIzNDU2Nzg5MGFiY2RlZjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrLjIzWCIsIGJpZywgIiswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMtKy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSsyNi4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjLSsyNy4yM1giLCBiaWcsICIrMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysyNy4yM1giLCBiaWcsICIgKzBYMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQogICAgICAgICAjIG5leHQgb25lIGdldHMgdHdvIGxlYWRpbmcgemVyb2VzIGZyb20gcHJlY2lzaW9uLCBhbmQgYW5vdGhlciBmcm9tIHRoZQogICAgICAgICAjIDAgZmxhZyBhbmQgdGhlIHdpZHRoCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKzAyNy4yM1giLCBiaWcsICIrMFgwMDAxMjM0NTY3ODkwQUJDREVGMTIzNDUiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIyswMjcuMjNYIiwgYmlnLCAiKzBYMDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKICAgICAgICAgIyBzYW1lLCBleGNlcHQgbm8gMCBmbGFnCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKzI3LjIzWCIsIGJpZywgIiArMFgwMDEyMzQ1Njc4OTBBQkNERUYxMjM0NSIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCBmbG9hdChiaWcpLCAiMTIzNDU2X19fX19fX19fX19fX19fIiwgNikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrMjcuMjNYIiwgYmlnLCAiICswWDAwMTIzNDU2Nzg5MEFCQ0RFRjEyMzQ1IikKICAgICAgICAgYmlnID0gMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAgIyAzMiBvY3RhbCBkaWdpdHMKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiU1byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMzNvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzNG8iLCAtYmlnLCAiIC0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUtMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM0byIsIC1iaWcsICItMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0wMzRvIiwgLWJpZywgIi0xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM2byIsIC1iaWcsICItMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlMDM2byIsIGJpZywgIjAwMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwKzM2byIsIGJpZywgIiswMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUrMzZvIiwgYmlnLCAiICAgKzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJTM2byIsIGJpZywgIiAgICAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMm8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUuMzJvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUzNC4zM28iLCBiaWcsICIgMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJS0zNC4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCBiaWcsICIxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIGJpZywgIjBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI28iLCAtYmlnLCAiLTBvMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4zNG8iLCAtYmlnLCAiLTBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjKy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMgLjM0byIsIGJpZywgIiAwbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlIysuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSsuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjLSszNy4zNG8iLCBiaWcsICIrMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMrMzcuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlNW8iLCAtYmlnLCAiLTEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTMzbyIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzRvIiwgLWJpZywgIiAtMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLTM0byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNG8iLCAtYmlnLCAiLTAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMDM0byIsIC1iaWcsICItMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAgIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNm8iLCAtYmlnLCAiLTAwMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJTAzNm8iLCBiaWcsICIwMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMCszNm8iLCBiaWcsICIrMDAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlKzM2byIsIGJpZywgIiAgICsxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUzNm8iLCBiaWcsICIgICAgMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjJvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlLjMybyIsIGJpZywgIjEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJS4zM28iLCBiaWcsICIwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlMzQuMzNvIiwgYmlnLCAiIDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUtMzQuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwICIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgYmlnLCAiMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCBiaWcsICIwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgLWJpZywgIi0wbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMzRvIiwgLWJpZywgIi0wbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIysuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjIC4zNG8iLCBiaWcsICIgMG8wMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMrLjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy0rLjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy0rMzcuMzRvIiwgYmlnLCAiKzBvMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjKzM3LjM0byIsIGJpZywgIiswbzAwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQogICAgICAgICAjIG5leHQgb25lIGdldHMgb25lIGxlYWRpbmcgemVybyBmcm9tIHByZWNpc2lvbgotICAgICAgICB0ZXN0Zm9ybWF0KCIlLjMzbyIsIGJpZywgIjAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUuMzNvIiwgYmlnLCAiMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBiYXNlIG1hcmtlciBzaG91bGRuJ3QgY2hhbmdlIHRoYXQsIHNpbmNlICIwIiBpcyByZWR1bmRhbnQKLSAgICAgICAgdGVzdGZvcm1hdCgiJSMuMzNvIiwgYmlnLCAiMG8wMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlIy4zM28iLCBiaWcsICIwbzAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgYnV0IHJlZHVjZSBwcmVjaXNpb24sIGFuZCBiYXNlIG1hcmtlciBzaG91bGQgYWRkIGEgemVybwotICAgICAgICB0ZXN0Zm9ybWF0KCIlIy4zMm8iLCBiaWcsICIwbzEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSMuMzJvIiwgYmlnLCAiMG8xMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgb25lIGxlYWRpbmcgemVybyBmcm9tIHByZWNpc2lvbiwgYW5kIGFub3RoZXIgZnJvbSAiMCIgZmxhZyAmIHdpZHRoCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUwMzQuMzNvIiwgYmlnLCAiMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUwMzQuMzNvIiwgYmlnLCAiMDAxMjM0NTY3MDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MCIpCiAgICAgICAgICMgYmFzZSBtYXJrZXIgc2hvdWxkbid0IGNoYW5nZSB0aGF0Ci0gICAgICAgIHRlc3Rmb3JtYXQoIiUwIzM0LjMzbyIsIGJpZywgIjBvMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGZsb2F0KGJpZyksICIxMjM0NTZfX19fX19fX19fX19fX19fX19fX19fX19fXyIsIDYpCisgICAgICAgIHRlc3Rjb21tb24oIiUwIzM0LjMzbyIsIGJpZywgIjBvMDEyMzQ1NjcwMTIzNDU2NzAxMjM0NTY3MDEyMzQ1NjcwIikKICAgICAgICAgIyBTb21lIHNtYWxsIGludHMsIGluIGJvdGggUHl0aG9uIGludCBhbmQgZmxhdm9ycykuCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgNDIsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgLTQyLCAiLTQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCA0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJWQiLCAtNDIsICItNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIDQyLjAsICI0MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDEsICIweDEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI3giLCAxLCAiMHgxIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgMSwgIjBYMSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjWCIsIDEsICIwWDEiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDEuMCwgIjB4MSIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIDEsICIwbzEiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI28iLCAxLCAiMG8xIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNvIiwgMCwgIjBvMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjbyIsIDAsICIwbzAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIDAsICIwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAwLCAiMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiVkIiwgMCwgIjAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlZCIsIDAsICIwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSN4IiwgMCwgIjB4MCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiUjeCIsIDAsICIweDAiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlI1giLCAwLCAiMFgwIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJSNYIiwgMCwgIjBYMCIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMHg0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAtMHg0MiwgIi00MiIpCi0gICAgICAgIHRlc3Rmb3JtYXQoIiV4IiwgMHg0MiwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCAtMHg0MiwgIi00MiIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdGVzdGZvcm1hdCgiJXgiLCBmbG9hdCgweDQyKSwgIjQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAwbzQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIC0wbzQyLCAiLTQyIikKLSAgICAgICAgdGVzdGZvcm1hdCgiJW8iLCAwbzQyLCAiNDIiKQotICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIC0wbzQyLCAiLTQyIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0ZXN0Zm9ybWF0KCIlbyIsIGZsb2F0KDBvNDIpLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIDQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlZCIsIC00MiwgIi00MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgNDIsICI0MiIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgLTQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCA0Mi4wLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAxLCAiMHgxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSN4IiwgMSwgIjB4MSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDEsICIwWDEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI1giLCAxLCAiMFgxIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgMSwgIjBvMSIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjbyIsIDEsICIwbzEiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI28iLCAwLCAiMG8wIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSNvIiwgMCwgIjBvMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVvIiwgMCwgIjAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIDAsICIwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJWQiLCAwLCAiMCIpCisgICAgICAgIHRlc3Rjb21tb24oIiVkIiwgMCwgIjAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI3giLCAwLCAiMHgwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJSN4IiwgMCwgIjB4MCIpCisgICAgICAgIHRlc3Rjb21tb24oIiUjWCIsIDAsICIwWDAiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlI1giLCAwLCAiMFgwIikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAweDQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIC0weDQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJXgiLCAweDQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIleCIsIC0weDQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCAwbzQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIC0wbzQyLCAiLTQyIikKKyAgICAgICAgdGVzdGNvbW1vbigiJW8iLCAwbzQyLCAiNDIiKQorICAgICAgICB0ZXN0Y29tbW9uKCIlbyIsIC0wbzQyLCAiLTQyIikKKyAgICAgICAgIyBhbHRlcm5hdGUgZmxvYXQgZm9ybWF0dGluZworICAgICAgICB0ZXN0Y29tbW9uKCclZycsIDEuMSwgJzEuMScpCisgICAgICAgIHRlc3Rjb21tb24oJyUjZycsIDEuMSwgJzEuMTAwMDAnKQorCisgICAgZGVmIHRlc3Rfc3RyX2Zvcm1hdChzZWxmKToKICAgICAgICAgdGVzdGZvcm1hdCgiJXIiLCAiXHUwMzc4IiwgIidcXHUwMzc4JyIpICAjIG5vbiBwcmludGFibGUKICAgICAgICAgdGVzdGZvcm1hdCgiJWEiLCAiXHUwMzc4IiwgIidcXHUwMzc4JyIpICAjIG5vbiBwcmludGFibGUKICAgICAgICAgdGVzdGZvcm1hdCgiJXIiLCAiXHUwMzc0IiwgIidcdTAzNzQnIikgICAjIHByaW50YWJsZQogICAgICAgICB0ZXN0Zm9ybWF0KCIlYSIsICJcdTAzNzQiLCAiJ1xcdTAzNzQnIikgICMgcHJpbnRhYmxlCiAKLSAgICAgICAgIyBhbHRlcm5hdGUgZmxvYXQgZm9ybWF0dGluZwotICAgICAgICB0ZXN0Zm9ybWF0KCclZycsIDEuMSwgJzEuMScpCi0gICAgICAgIHRlc3Rmb3JtYXQoJyUjZycsIDEuMSwgJzEuMTAwMDAnKQotCi0gICAgICAgICMgVGVzdCBleGNlcHRpb24gZm9yIHVua25vd24gZm9ybWF0IGNoYXJhY3RlcnMKKyAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbiBmb3IgdW5rbm93biBmb3JtYXQgY2hhcmFjdGVycywgZXRjLgogICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgZXhjZXB0aW9ucycpCiAgICAgICAgIGRlZiB0ZXN0X2V4Yyhmb3JtYXRzdHIsIGFyZ3MsIGV4Y2VwdGlvbiwgZXhjbXNnKToKQEAgLTI1NCwxMSArMjcyLDEwOCBAQAogICAgICAgICAjdGVzdF9leGModW5pY29kZSgnYWJjICVcdTMwMDAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMSwgVmFsdWVFcnJvciwKICAgICAgICAgIyAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICc/JyAoMHgzMDAwKSBhdCBpbmRleCA1IikKICAgICAgICAgdGVzdF9leGMoJyVkJywgJzEnLCBUeXBlRXJyb3IsICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKKyAgICAgICAgdGVzdF9leGMoJyV4JywgJzEnLCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YygnJXgnLCAzLjE0LCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCiAgICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpCiAgICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQotICAgICAgICB0ZXN0X2V4Yygnbm8gZm9ybWF0JywgJzEnLCBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgLTEsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCisgICAgICAgIHRlc3RfZXhjKCclYycsIHN5cy5tYXh1bmljb2RlKzEsIE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCisgICAgICAgICN0ZXN0X2V4YygnJWMnLCAyKioxMjgsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCisgICAgICAgIHRlc3RfZXhjKCclYycsIDMuMTQsIFR5cGVFcnJvciwgIiVjIHJlcXVpcmVzIGludCBvciBjaGFyIikKKyAgICAgICAgdGVzdF9leGMoJyVjJywgJ2FiJywgVHlwZUVycm9yLCAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKQorICAgICAgICB0ZXN0X2V4YygnJWMnLCBiJ3gnLCBUeXBlRXJyb3IsICIlYyByZXF1aXJlcyBpbnQgb3IgY2hhciIpCisKKyAgICAgICAgaWYgbWF4c2l6ZSA9PSAyKiozMS0xOgorICAgICAgICAgICAgIyBjcmFzaGVzIDIuMi4xIGFuZCBlYXJsaWVyOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICIlKmQiJShtYXhzaXplLCAtMTI3KQorICAgICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgnIiUqZCIlKG1heHNpemUsIC0xMjcpIHNob3VsZCBmYWlsJykKKworICAgIGRlZiB0ZXN0X2J5dGVzX2FuZF9ieXRlYXJyYXlfZm9ybWF0KHNlbGYpOgorICAgICAgICAjICVjIHdpbGwgaW5zZXJ0IGEgc2luZ2xlIGJ5dGUsIGVpdGhlciBmcm9tIGFuIGludCBpbiByYW5nZSgyNTYpLCBvcgorICAgICAgICAjIGZyb20gYSBieXRlcyBhcmd1bWVudCBvZiBsZW5ndGggMSwgbm90IGZyb20gYSBzdHIuCisgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIDcsIGIiXHgwNyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGIiWiIsIGIiWiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGJ5dGVhcnJheShiIloiKSwgYiJaIikKKyAgICAgICAgIyAlYiB3aWxsIGluc2VydCBhIHNlcmllcyBvZiBieXRlcywgZWl0aGVyIGZyb20gYSB0eXBlIHRoYXQgc3VwcG9ydHMKKyAgICAgICAgIyB0aGUgUHlfYnVmZmVyIHByb3RvY29sLCBvciBzb21ldGhpbmcgdGhhdCBoYXMgYSBfX2J5dGVzX18gbWV0aG9kCisgICAgICAgIGNsYXNzIEZha2VCeXRlcyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYicxMjMnCisgICAgICAgIGZiID0gRmFrZUJ5dGVzKCkKKyAgICAgICAgdGVzdGNvbW1vbihiIiViIiwgYiJhYmMiLCBiImFiYyIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYiIsIGJ5dGVhcnJheShiImRlZiIpLCBiImRlZiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlYiIsIGZiLCBiIjEyMyIpCisgICAgICAgICMgIyAlcyBpcyBhbiBhbGlhcyBmb3IgJWIgLS0gc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgUHkyLzMgY29kZQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXMiLCBiImFiYyIsIGIiYWJjIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVzIiwgYnl0ZWFycmF5KGIiZGVmIiksIGIiZGVmIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVzIiwgZmIsIGIiMTIzIikKKyAgICAgICAgIyAlYSB3aWxsIGdpdmUgdGhlIGVxdWl2YWxlbnQgb2YKKyAgICAgICAgIyByZXByKHNvbWVfb2JqKS5lbmNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCAzLjE0LCBiIjMuMTQiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCBiImdoaSIsIGIiYidnaGknIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVhIiwgImprbCIsIGIiJ2prbCciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJWEiLCAiXHUwNTQ0IiwgYiInXFx1MDU0NCciKQorICAgICAgICAjICVyIGlzIGFuIGFsaWFzIGZvciAlYQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCAzLjE0LCBiIjMuMTQiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCBiImdoaSIsIGIiYidnaGknIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiVyIiwgImprbCIsIGIiJ2prbCciKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJXIiLCAiXHUwNTQ0IiwgYiInXFx1MDU0NCciKQorCisgICAgICAgICMgVGVzdCBleGNlcHRpb24gZm9yIHVua25vd24gZm9ybWF0IGNoYXJhY3RlcnMsIGV0Yy4KKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCdUZXN0aW5nIGV4Y2VwdGlvbnMnKQorICAgICAgICBkZWYgdGVzdF9leGMoZm9ybWF0c3RyLCBhcmdzLCBleGNlcHRpb24sIGV4Y21zZyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGVzdGZvcm1hdChmb3JtYXRzdHIsIGFyZ3MpCisgICAgICAgICAgICBleGNlcHQgZXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBpZiBzdHIoZXhjKSA9PSBleGNtc2c6CisgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgieWVzIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgnbm8nKQorICAgICAgICAgICAgICAgICAgICBwcmludCgnVW5leHBlY3RlZCAnLCBleGNlcHRpb24sICc6JywgcmVwcihzdHIoZXhjKSkpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoJ25vJykKKyAgICAgICAgICAgICAgICBwcmludCgnVW5leHBlY3RlZCBleGNlcHRpb24nKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoJ2RpZCBub3QgZ2V0IGV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZXhjbXNnKQorICAgICAgICB0ZXN0X2V4YyhiJyVkJywgJzEnLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQorICAgICAgICB0ZXN0X2V4YyhiJyVkJywgYicxJywgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3QgYnl0ZXMiKQorICAgICAgICB0ZXN0X2V4YyhiJyV4JywgMy4xNCwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCisgICAgICAgIHRlc3RfZXhjKGInJWcnLCAnMScsIFR5cGVFcnJvciwgImZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCBub3Qgc3RyIikKKyAgICAgICAgdGVzdF9leGMoYiclZycsIGInMScsIFR5cGVFcnJvciwgImZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCBub3QgYnl0ZXMiKQorICAgICAgICB0ZXN0X2V4YyhiJ25vIGZvcm1hdCcsIDcsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpCisgICAgICAgIHRlc3RfZXhjKGInbm8gZm9ybWF0JywgYicxJywgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIikKKyAgICAgICAgdGVzdF9leGMoYidubyBmb3JtYXQnLCBieXRlYXJyYXkoYicxJyksIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpCisgICAgICAgIHRlc3RfZXhjKGIiJWMiLCAtMSwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIDI1NiwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIDIqKjEyOCwgT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsIGIiWmEiLCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIikKKyAgICAgICAgdGVzdF9leGMoYiIlYyIsICJZIiwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlYyByZXF1aXJlcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDI1Nikgb3IgYSBzaW5nbGUgYnl0ZSIpCisgICAgICAgIHRlc3RfZXhjKGIiJWMiLCAzLjE0LCBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIikKKyAgICAgICAgdGVzdF9leGMoYiIlYiIsICJYYyIsIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJWIgcmVxdWlyZXMgYnl0ZXMsIG9yIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgX19ieXRlc19fLCBub3QgJ3N0ciciKQorICAgICAgICB0ZXN0X2V4YyhiIiVzIiwgIldkIiwgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnc3RyJyIpCiAKICAgICAgICAgaWYgbWF4c2l6ZSA9PSAyKiozMS0xOgogICAgICAgICAgICAgIyBjcmFzaGVzIDIuMi4xIGFuZCBlYXJsaWVyOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCAzMzM2NTMyLi4xNjk5ODUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtMSwxMyArMSwxNCBAQAogIiIiVGVzdHMgZm9yIExpYi9mcmFjdGlvbnMucHkuIiIiCiAKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVxdWlyZXNfSUVFRV83NTQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlc19JRUVFXzc1NAogaW1wb3J0IG1hdGgKIGltcG9ydCBudW1iZXJzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBmcmFjdGlvbnMKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIGNvcHkgaW1wb3J0IGNvcHksIGRlZXBjb3B5CiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCiBGID0gZnJhY3Rpb25zLkZyYWN0aW9uCkBAIC00OSw3ICs1MCw3IEBACiAgICAgIiIiVGVzdCBjb21wYXJpc29uIG9mIEZyYWN0aW9uIHdpdGggYSBuYWl2ZSByYXRpb25hbCBpbXBsZW1lbnRhdGlvbi4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBudW0sIGRlbik6Ci0gICAgICAgIGcgPSBnY2QobnVtLCBkZW4pCisgICAgICAgIGcgPSBtYXRoLmdjZChudW0sIGRlbikKICAgICAgICAgc2VsZi5udW0gPSBudW0gLy8gZwogICAgICAgICBzZWxmLmRlbiA9IGRlbiAvLyBnCiAKQEAgLTgzLDE2ICs4NCwyNiBAQAogY2xhc3MgR2NkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdE1pc2Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2NkKDAsIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdjZCgxLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKC0xLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnY2QoMCwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIGdjZCgwLCAtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDcsIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xLCBnY2QoNywgLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdjZCgtMjMsIDE1KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiwgZ2NkKDEyMCwgODQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiwgZ2NkKDg0LCAtMTIwKSkKKyAgICAgICAgIyBmcmFjdGlvbnMuZ2NkKCkgaXMgZGVwcmVjYXRlZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsIHInZnJhY3Rpb25zXC5nY2QnKToKKyAgICAgICAgICAgIGdjZCgxLCAxKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgcidmcmFjdGlvbnNcLmdjZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdjZCgwLCAwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDEsIDApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKC0xLCAwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDAsIDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKDAsIC0xKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKDcsIDEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgZ2NkKDcsIC0xKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2NkKC0yMywgMTUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiwgZ2NkKDEyMCwgODQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIsIGdjZCg4NCwgLTEyMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjAuMCwgODQpLCAxMi4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMTIwLCA4NC4wKSwgMTIuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKEYoMTIwKSwgRig4NCkpLCBGKDEyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKEYoMTIwLCA3NyksIEYoODQsIDU1KSksIEYoMTIsIDM4NSkpCiAKIAogZGVmIF9jb21wb25lbnRzKHIpOgpAQCAtMzMwLDcgKzM0MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoRigtMiwgMTApLCByb3VuZChGKC0xNSwgMTAwKSwgMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoRigtMiwgMTApLCByb3VuZChGKC0yNSwgMTAwKSwgMSkpCiAKLQogICAgIGRlZiB0ZXN0QXJpdGhtZXRpYyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKDEsIDIpLCBGKDEsIDEwKSArIEYoMiwgNSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRigtMywgMTApLCBGKDEsIDEwKSAtIEYoMiwgNSkpCkBAIC00MDIsNiArNDEyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFscygyLjAgLCA0ICoqIEYoMSwgMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbHMoMC4yNSwgMi4wICoqIEYoLTIsIDEpKQogICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWxzKDEuMCArIDBqLCAoMS4wICsgMGopICoqIEYoMSwgMTApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgb3BlcmF0b3IucG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICBGKDAsIDEpLCAtMikKIAogICAgIGRlZiB0ZXN0TWl4aW5nV2l0aERlY2ltYWwoc2VsZik6CiAgICAgICAgICMgRGVjaW1hbCByZWZ1c2VzIG1peGVkIGFyaXRobWV0aWMgKGJ1dCBub3QgbWl4ZWQgY29tcGFyaXNvbnMpCkBAIC02MDUsOCArNjE3LDUgQEAKICAgICAgICAgciA9IEYoMTMsIDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCByLCAnYScsIDEwKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEZyYWN0aW9uVGVzdCwgR2NkVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFtZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhbWUucHkKaW5kZXggYzQwMmVjMy4uMTg5ZmNhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcmFtZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYW1lLnB5CkBAIC0xNjEsOCArMTYxLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbm5lci5mX2xvY2Fscywge30pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IGQzYmU3ZDYuLmFlZjY2ZGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC03Myw3ICs3Myw3IEBACiAgICAgICAgIHN1cGVyKER1bW15RFRQSGFuZGxlciwgc2VsZikucHVzaCh3aGF0LmVuY29kZSgnYXNjaWknKSkKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgogCiAKIGNsYXNzIER1bW15RlRQSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTAgY29tbWFuZCAiJXMiIG5vdCB1bmRlcnN0b29kLicgJWNtZCkKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHJhaXNlCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgogCiAgICAgZGVmIHB1c2goc2VsZiwgZGF0YSk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQucHVzaChzZWxmLCBkYXRhLmVuY29kZSgnYXNjaWknKSArIGInXHJcbicpCkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICBkZWYgY21kX3Bhc3Yoc2VsZiwgYXJnKToKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgIHNvY2suYmluZCgoc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVswXSwgMCkpCi0gICAgICAgICAgICBzb2NrLmxpc3Rlbig1KQorICAgICAgICAgICAgc29jay5saXN0ZW4oKQogICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KFRJTUVPVVQpCiAgICAgICAgICAgICBpcCwgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVs6Ml0KICAgICAgICAgICAgIGlwID0gaXAucmVwbGFjZSgnLicsICcsJyk7IHAxID0gcG9ydCAvIDI1NjsgcDIgPSBwb3J0ICUgMjU2CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICBkZWYgY21kX2Vwc3Yoc2VsZiwgYXJnKToKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNikgYXMgc29jazoKICAgICAgICAgICAgIHNvY2suYmluZCgoc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVswXSwgMCkpCi0gICAgICAgICAgICBzb2NrLmxpc3Rlbig1KQorICAgICAgICAgICAgc29jay5saXN0ZW4oKQogICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KFRJTUVPVVQpCiAgICAgICAgICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgICAgICBzZWxmLnB1c2goJzIyOSBlbnRlcmluZyBleHRlbmRlZCBwYXNzaXZlIG1vZGUgKHx8fCVkfCknICVwb3J0KQpAQCAtMjk2LDcgKzI5Niw3IEBACiAgICAgICAgIHJldHVybiAwCiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYpOgotICAgICAgICByYWlzZQorICAgICAgICByYWlzZSBFeGNlcHRpb24KIAogCiBpZiBzc2wgaXMgbm90IE5vbmU6CkBAIC0zOTQsNyArMzk0LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6Ci0gICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCiAKICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2Uoc2VsZi5zb2NrZXQsIHNzbC5TU0xTb2NrZXQpIGFuZApAQCAtNjcwLDcgKzY3MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHNlbGYuY2xpZW50Lm1sc2QoKSkKICAgICAgICAgc2V0X2RhdGEoJycpCiAgICAgICAgIGZvciB4IGluIHNlbGYuY2xpZW50Lm1sc2QoKToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgidW5leHBlY3RlZCBkYXRhICVzIiAlIGRhdGEpCisgICAgICAgICAgICBzZWxmLmZhaWwoInVuZXhwZWN0ZWQgZGF0YSAlcyIgJSB4KQogCiAgICAgZGVmIHRlc3RfbWFrZXBvcnQoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5jbGllbnQubWFrZXBvcnQoKToKQEAgLTk3OSw3ICs5NzksNyBAQAogICAgICAgICAjICAxKSB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHJlYWR5IHRvIGJlIGFjY2VwdGVkLgogICAgICAgICAjICAyKSB3aGVuIGl0IGlzIHNhZmUgZm9yIHRoZSBjYWxsZXIgdG8gY2xvc2UgdGhlIGNvbm5lY3Rpb24KICAgICAgICAgIyAgMykgd2hlbiB3ZSBoYXZlIGNsb3NlZCB0aGUgc29ja2V0Ci0gICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgICMgKDEpIFNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgd2UgYXJlIHJlYWR5IHRvIGFjY2VwdCB0aGUgY29ubmVjdGlvbi4KICAgICAgICAgc2VsZi5ldnQuc2V0KCkKICAgICAgICAgdHJ5OgpAQCAtMTA0OSwxOSArMTA0OSw4IEBACiAgICAgICAgIGZ0cC5jbG9zZSgpCiAKIAotY2xhc3MgVGVzdE5ldHJjRGVwcmVjYXRpb24oVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpLCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6Ci0gICAgICAgICAgICBlbnZbJ0hPTUUnXSA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBvcGVuKCcubmV0cmMnLCAndycpLmNsb3NlKCkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgIGZ0cGxpYi5OZXRyYygpCi0KLQotCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsIFRlc3ROZXRyY0RlcHJlY2F0aW9uLAorICAgIHRlc3RzID0gW1Rlc3RGVFBDbGFzcywgVGVzdFRpbWVvdXRzLAogICAgICAgICAgICAgIFRlc3RJUHY2RW52aXJvbm1lbnQsCiAgICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzXQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CmluZGV4IDUwOTRmN2IuLjhmNDgxYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY2F0dHJzLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCkBAIC0zNzQsMTIgKzM3Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydmb28nOiAnYmFyJ30ucG9wLl9fcXVhbG5hbWVfXywgJ2RpY3QucG9wJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCwgSW5zdGFuY2VtZXRob2RBdHRyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyYml0cmFyeUZ1bmN0aW9uQXR0clRlc3QsIEZ1bmN0aW9uRGljdHNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Eb2NzdHJpbmdUZXN0LCBDZWxsVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01ldGhvZEF0dHJzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0aW5GdW5jdGlvblByb3BlcnRpZXNUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IGMwZDI0ZDhjLi5hZTkyOWVjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQpAQCAtNyw2ICs3LDEwIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCiAKIGltcG9ydCBmdW5jdG9vbHMKIApAQCAtMTMzLDYgKzEzNywxNiBAQAogICAgICAgICBqb2luID0gc2VsZi5wYXJ0aWFsKCcnLmpvaW4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoam9pbihkYXRhKSwgJzAxMjM0NTY3ODknKQogCisgICAgZGVmIHRlc3RfbmVzdGVkX29wdGltaXphdGlvbihzZWxmKToKKyAgICAgICAgcGFydGlhbCA9IHNlbGYucGFydGlhbAorICAgICAgICAjIE9ubHkgInRydWUiIHBhcnRpYWwgaXMgb3B0aW1pemVkCisgICAgICAgIGlmIHBhcnRpYWwuX19uYW1lX18gIT0gJ3BhcnRpYWwnOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlubmVyID0gcGFydGlhbChzaWduYXR1cmUsICdhc2RmJykKKyAgICAgICAgbmVzdGVkID0gcGFydGlhbChpbm5lciwgYmFyPVRydWUpCisgICAgICAgIGZsYXQgPSBwYXJ0aWFsKHNpZ25hdHVyZSwgJ2FzZGYnLCBiYXI9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUobmVzdGVkKSwgc2lnbmF0dXJlKGZsYXQpKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQogY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04ODQsMTIgKzg5OCwzMCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgICAgIGEgPD0gYgogCi1jbGFzcyBUZXN0TFJVKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSg0LCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gJ19fbHRfXycsICdfX2d0X18nLCAnX19sZV9fJywgJ19fZ2VfXyc6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobWV0aG9kPW5hbWUsIHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihPcmRlcmFibGVfTFQsIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhtZXRob2QsIHByb3RvKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtZXRob2RfY29weSwgbWV0aG9kKQorCitAZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nCitjbGFzcyBPcmRlcmFibGVfTFQ6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBzZWxmLnZhbHVlIDwgb3RoZXIudmFsdWUKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPT0gb3RoZXIudmFsdWUKKworCitjbGFzcyBUZXN0TFJVOgogCiAgICAgZGVmIHRlc3RfbHJ1KHNlbGYpOgogICAgICAgICBkZWYgb3JpZyh4LCB5KToKICAgICAgICAgICAgIHJldHVybiAzICogeCArIHkKLSAgICAgICAgZiA9IGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0yMCkob3JpZykKKyAgICAgICAgZiA9IHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPTIwKShvcmlnKQogICAgICAgICBoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplID0gZi5jYWNoZV9pbmZvKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXhzaXplLCAyMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMCkKQEAgLTkyNyw3ICs5NTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJzaXplLCAxKQogCiAgICAgICAgICMgdGVzdCBzaXplIHplcm8gKHdoaWNoIG1lYW5zICJuZXZlci1jYWNoZSIpCi0gICAgICAgIEBmdW5jdG9vbHMubHJ1X2NhY2hlKDApCisgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMCkKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIG5vbmxvY2FsIGZfY250CiAgICAgICAgICAgICBmX2NudCArPSAxCkBAIC05NDMsNyArOTc1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMCkKIAogICAgICAgICAjIHRlc3Qgc2l6ZSBvbmUKLSAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUoMSkKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZSgxKQogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgbm9ubG9jYWwgZl9jbnQKICAgICAgICAgICAgIGZfY250ICs9IDEKQEAgLTk1OSw3ICs5OTEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJzaXplLCAxKQogCiAgICAgICAgICMgdGVzdCBzaXplIHR3bwotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZSgyKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKDIpCiAgICAgICAgIGRlZiBmKHgpOgogICAgICAgICAgICAgbm9ubG9jYWwgZl9jbnQKICAgICAgICAgICAgIGZfY250ICs9IDEKQEAgLTk3Niw3ICsxMDA4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXJyc2l6ZSwgMikKIAogICAgIGRlZiB0ZXN0X2xydV93aXRoX21heHNpemVfbm9uZShzZWxmKToKLSAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT1Ob25lKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9Tm9uZSkKICAgICAgICAgZGVmIGZpYihuKToKICAgICAgICAgICAgIGlmIG4gPCAyOgogICAgICAgICAgICAgICAgIHJldHVybiBuCkBAIC05ODQsMTcgKzEwMTYsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZmliKG4pIGZvciBuIGluIHJhbmdlKDE2KV0sCiAgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCwgNTUsIDg5LCAxNDQsIDIzMywgMzc3LCA2MTBdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MTYpKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MTYpKQogICAgICAgICBmaWIuY2FjaGVfY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpYi5jYWNoZV9pbmZvKCksCi0gICAgICAgICAgICBmdW5jdG9vbHMuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTApKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0wLCBtYXhzaXplPU5vbmUsIGN1cnJzaXplPTApKQorCisgICAgZGVmIHRlc3RfbHJ1X3dpdGhfbWF4c2l6ZV9uZWdhdGl2ZShzZWxmKToKKyAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPS0xMCkKKyAgICAgICAgZGVmIGVxKG4pOgorICAgICAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgZm9yIGkgaW4gKDAsIDEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZXEobikgZm9yIG4gaW4gcmFuZ2UoMTUwKV0sIGxpc3QocmFuZ2UoMTUwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXEuY2FjaGVfaW5mbygpLAorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTAsIG1pc3Nlcz0zMDAsIG1heHNpemU9LTEwLCBjdXJyc2l6ZT0xKSkKIAogICAgIGRlZiB0ZXN0X2xydV93aXRoX2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgdXNlcl9mdW5jdGlvbiBleGNlcHRpb25zIGdldCBwYXNzZWQgdGhyb3VnaCB3aXRob3V0CiAgICAgICAgICMgY3JlYXRpbmcgYSBoYXJkLXRvLXJlYWQgY2hhaW5lZCBleGNlcHRpb24uCiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzMTc3CiAgICAgICAgIGZvciBtYXhzaXplIGluIChOb25lLCAxMjgpOgotICAgICAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZSkKKyAgICAgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZSkKICAgICAgICAgICAgIGRlZiBmdW5jKGkpOgogICAgICAgICAgICAgICAgIHJldHVybiAnYWJjJ1tpXQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDApLCAnYScpCkBAIC0xMDA3LDcgKzEwNDgsNyBAQAogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfdHlwZXMoc2VsZik6CiAgICAgICAgIGZvciBtYXhzaXplIGluIChOb25lLCAxMjgpOgotICAgICAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT1tYXhzaXplLCB0eXBlZD1UcnVlKQorICAgICAgICAgICAgQHNlbGYubW9kdWxlLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCiAgICAgICAgICAgICBkZWYgc3F1YXJlKHgpOgogICAgICAgICAgICAgICAgIHJldHVybiB4ICogeAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMyksIDkpCkBAIC0xMDIyLDcgKzEwNjMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLm1pc3NlcywgNCkKIAogICAgIGRlZiB0ZXN0X2xydV93aXRoX2tleXdvcmRfYXJncyhzZWxmKToKLSAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUoKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKCkKICAgICAgICAgZGVmIGZpYihuKToKICAgICAgICAgICAgIGlmIG4gPCAyOgogICAgICAgICAgICAgICAgIHJldHVybiBuCkBAIC0xMDMyLDEzICsxMDczLDEzIEBACiAgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNSwgOCwgMTMsIDIxLCAzNCwgNTUsIDg5LCAxNDQsIDIzMywgMzc3LCA2MTBdCiAgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWIuY2FjaGVfaW5mbygpLAotICAgICAgICAgICAgZnVuY3Rvb2xzLl9DYWNoZUluZm8oaGl0cz0yOCwgbWlzc2VzPTE2LCBtYXhzaXplPTEyOCwgY3VycnNpemU9MTYpKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuX0NhY2hlSW5mbyhoaXRzPTI4LCBtaXNzZXM9MTYsIG1heHNpemU9MTI4LCBjdXJyc2l6ZT0xNikpCiAgICAgICAgIGZpYi5jYWNoZV9jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9MTI4LCBjdXJyc2l6ZT0wKSkKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLl9DYWNoZUluZm8oaGl0cz0wLCBtaXNzZXM9MCwgbWF4c2l6ZT0xMjgsIGN1cnJzaXplPTApKQogCiAgICAgZGVmIHRlc3RfbHJ1X3dpdGhfa2V5d29yZF9hcmdzX21heHNpemVfbm9uZShzZWxmKToKLSAgICAgICAgQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT1Ob25lKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9Tm9uZSkKICAgICAgICAgZGVmIGZpYihuKToKICAgICAgICAgICAgIGlmIG4gPCAyOgogICAgICAgICAgICAgICAgIHJldHVybiBuCkBAIC0xMDQ2LDE1ICsxMDg3LDEwMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtmaWIobj1udW1iZXIpIGZvciBudW1iZXIgaW4gcmFuZ2UoMTYpXSwKICAgICAgICAgICAgIFswLCAxLCAxLCAyLCAzLCA1LCA4LCAxMywgMjEsIDM0LCA1NSwgODksIDE0NCwgMjMzLCAzNzcsIDYxMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0xNikpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MjgsIG1pc3Nlcz0xNiwgbWF4c2l6ZT1Ob25lLCBjdXJyc2l6ZT0xNikpCiAgICAgICAgIGZpYi5jYWNoZV9jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmliLmNhY2hlX2luZm8oKSwKLSAgICAgICAgICAgIGZ1bmN0b29scy5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCisgICAgICAgICAgICBzZWxmLm1vZHVsZS5fQ2FjaGVJbmZvKGhpdHM9MCwgbWlzc2VzPTAsIG1heHNpemU9Tm9uZSwgY3VycnNpemU9MCkpCisKKyAgICBkZWYgdGVzdF9scnVfY2FjaGVfZGVjb3JhdGlvbihzZWxmKToKKyAgICAgICAgZGVmIGYoem9tZzogJ3pvbWdfYW5ub3RhdGlvbicpOgorICAgICAgICAgICAgIiIiZiBkb2Mgc3RyaW5nIiIiCisgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgZyA9IHNlbGYubW9kdWxlLmxydV9jYWNoZSgpKGYpCisgICAgICAgIGZvciBhdHRyIGluIHNlbGYubW9kdWxlLldSQVBQRVJfQVNTSUdOTUVOVFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoZywgYXR0ciksIGdldGF0dHIoZiwgYXR0cikpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaGlzIHRlc3QgcmVxdWlyZXMgdGhyZWFkaW5nLicpCisgICAgZGVmIHRlc3RfbHJ1X2NhY2hlX3RocmVhZGVkKHNlbGYpOgorICAgICAgICBuLCBtID0gNSwgMTEKKyAgICAgICAgZGVmIG9yaWcoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gMyAqIHggKyB5CisgICAgICAgIGYgPSBzZWxmLm1vZHVsZS5scnVfY2FjaGUobWF4c2l6ZT1uKm0pKG9yaWcpCisgICAgICAgIGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUgPSBmLmNhY2hlX2luZm8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJzaXplLCAwKQorCisgICAgICAgIHN0YXJ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgZGVmIGZ1bGwoayk6CisgICAgICAgICAgICBzdGFydC53YWl0KDEwKQorICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKGssIDApLCBvcmlnKGssIDApKQorCisgICAgICAgIGRlZiBjbGVhcigpOgorICAgICAgICAgICAgc3RhcnQud2FpdCgxMCkKKyAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKDIqbSk6CisgICAgICAgICAgICAgICAgZi5jYWNoZV9jbGVhcigpCisKKyAgICAgICAgb3JpZ19zaSA9IHN5cy5nZXRzd2l0Y2hpbnRlcnZhbCgpCisgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgxZS02KQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGNyZWF0ZSBuIHRocmVhZHMgaW4gb3JkZXIgdG8gZmlsbCBjYWNoZQorICAgICAgICAgICAgdGhyZWFkcyA9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1mdWxsLCBhcmdzPVtrXSkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobildCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuc3RhcnRfdGhyZWFkcyh0aHJlYWRzKToKKyAgICAgICAgICAgICAgICBzdGFydC5zZXQoKQorCisgICAgICAgICAgICBoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplID0gZi5jYWNoZV9pbmZvKCkKKyAgICAgICAgICAgIGlmIHNlbGYubW9kdWxlIGlzIHB5X2Z1bmN0b29sczoKKyAgICAgICAgICAgICAgICAjIFhYWDogV2h5IGNhbiBiZSBub3QgZXF1YWw/CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobWlzc2VzLCBuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGhpdHMsIG0qbiAtIG1pc3NlcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaXNzZXMsIG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoaXRzLCBtKm4gLSBtaXNzZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJzaXplLCBuKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBuIHRocmVhZHMgaW4gb3JkZXIgdG8gZmlsbCBjYWNoZSBhbmQgMSB0byBjbGVhciBpdAorICAgICAgICAgICAgdGhyZWFkcyA9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1jbGVhcildCisgICAgICAgICAgICB0aHJlYWRzICs9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1mdWxsLCBhcmdzPVtrXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKG4pXQorICAgICAgICAgICAgc3RhcnQuY2xlYXIoKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnN0YXJ0X3RocmVhZHModGhyZWFkcyk6CisgICAgICAgICAgICAgICAgc3RhcnQuc2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbChvcmlnX3NpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhpcyB0ZXN0IHJlcXVpcmVzIHRocmVhZGluZy4nKQorICAgIGRlZiB0ZXN0X2xydV9jYWNoZV90aHJlYWRlZDIoc2VsZik6CisgICAgICAgICMgU2ltdWx0YW5lb3VzIGNhbGwgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMKKyAgICAgICAgbiwgbSA9IDUsIDcKKyAgICAgICAgc3RhcnQgPSB0aHJlYWRpbmcuQmFycmllcihuKzEpCisgICAgICAgIHBhdXNlID0gdGhyZWFkaW5nLkJhcnJpZXIobisxKQorICAgICAgICBzdG9wID0gdGhyZWFkaW5nLkJhcnJpZXIobisxKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9bSpuKQorICAgICAgICBkZWYgZih4KToKKyAgICAgICAgICAgIHBhdXNlLndhaXQoMTApCisgICAgICAgICAgICByZXR1cm4gMyAqIHgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNhY2hlX2luZm8oKSwgKDAsIDAsIG0qbiwgMCkpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShtKToKKyAgICAgICAgICAgICAgICBzdGFydC53YWl0KDEwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZihpKSwgMyAqIGkpCisgICAgICAgICAgICAgICAgc3RvcC53YWl0KDEwKQorICAgICAgICB0aHJlYWRzID0gW3RocmVhZGluZy5UaHJlYWQodGFyZ2V0PXRlc3QpIGZvciBrIGluIHJhbmdlKG4pXQorICAgICAgICB3aXRoIHN1cHBvcnQuc3RhcnRfdGhyZWFkcyh0aHJlYWRzKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG0pOgorICAgICAgICAgICAgICAgIHN0YXJ0LndhaXQoMTApCisgICAgICAgICAgICAgICAgc3RvcC5yZXNldCgpCisgICAgICAgICAgICAgICAgcGF1c2Uud2FpdCgxMCkKKyAgICAgICAgICAgICAgICBzdGFydC5yZXNldCgpCisgICAgICAgICAgICAgICAgc3RvcC53YWl0KDEwKQorICAgICAgICAgICAgICAgIHBhdXNlLnJlc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuY2FjaGVfaW5mbygpLCAoMCwgKGkrMSkqbiwgbSpuLCBpKzEpKQogCiAgICAgZGVmIHRlc3RfbmVlZF9mb3JfcmxvY2soc2VsZik6CiAgICAgICAgICMgVGhpcyB3aWxsIGRlYWRsb2NrIG9uIGFuIExSVSBjYWNoZSB0aGF0IHVzZXMgYSByZWd1bGFyIGxvY2sKIAotICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTEwKQorICAgICAgICBAc2VsZi5tb2R1bGUubHJ1X2NhY2hlKG1heHNpemU9MTApCiAgICAgICAgIGRlZiB0ZXN0X2Z1bmMoeCk6CiAgICAgICAgICAgICAnVXNlZCB0byBkZW1vbnN0cmF0ZSBhIHJlZW50cmFudCBscnVfY2FjaGUgY2FsbCB3aXRoaW4gYSBzaW5nbGUgdGhyZWFkJwogICAgICAgICAgICAgcmV0dXJuIHgKQEAgLTEwODIsNiArMTIwOCw0MyBAQAogICAgICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgdGVzdF9scnVfbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBYKGludCk6CisgICAgICAgICAgICBmX2NudCA9IDAKKyAgICAgICAgICAgIEBzZWxmLm1vZHVsZS5scnVfY2FjaGUoMikKKyAgICAgICAgICAgIGRlZiBmKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHNlbGYuZl9jbnQgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiB4KjEwK3NlbGYKKyAgICAgICAgYSA9IFgoNSkKKyAgICAgICAgYiA9IFgoNSkKKyAgICAgICAgYyA9IFgoNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoMCwgMCwgMiwgMCkpCisKKyAgICAgICAgZm9yIHggaW4gMSwgMiwgMiwgMywgMSwgMSwgMSwgMiwgMywgMzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5mKHgpLCB4KjEwICsgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYS5mX2NudCwgYi5mX2NudCwgYy5mX2NudCksICg2LCAwLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoNCwgNiwgMiwgMikpCisKKyAgICAgICAgZm9yIHggaW4gMSwgMiwgMSwgMSwgMSwgMSwgMywgMiwgMiwgMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mKHgpLCB4KjEwICsgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYS5mX2NudCwgYi5mX2NudCwgYy5mX2NudCksICg2LCA0LCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLmYuY2FjaGVfaW5mbygpLCAoMTAsIDEwLCAyLCAyKSkKKworICAgICAgICBmb3IgeCBpbiAyLCAxLCAxLCAxLCAxLCAyLCAxLCAzLCAyLCAxOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmYoeCksIHgqMTAgKyA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLmZfY250LCBiLmZfY250LCBjLmZfY250KSwgKDYsIDQsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFguZi5jYWNoZV9pbmZvKCksICgxNSwgMTUsIDIsIDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5mLmNhY2hlX2luZm8oKSwgWC5mLmNhY2hlX2luZm8oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmYuY2FjaGVfaW5mbygpLCBYLmYuY2FjaGVfaW5mbygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZi5jYWNoZV9pbmZvKCksIFguZi5jYWNoZV9pbmZvKCkpCisKK2NsYXNzIFRlc3RMUlVDKFRlc3RMUlUsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtb2R1bGUgPSBjX2Z1bmN0b29scworCitjbGFzcyBUZXN0TFJVUHkoVGVzdExSVSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IHB5X2Z1bmN0b29scworCiAKIGNsYXNzIFRlc3RTaW5nbGVEaXNwYXRjaCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2ltcGxlX292ZXJsb2FkcyhzZWxmKToKQEAgLTE1NzYsMzIgKzE3MzksNSBAQAogICAgICAgICBmdW5jdG9vbHMuV2Vha0tleURpY3Rpb25hcnkgPSBfb3JpZ193a2QKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgdGVzdF9jbGFzc2VzID0gKAotICAgICAgICBUZXN0UGFydGlhbEMsCi0gICAgICAgIFRlc3RQYXJ0aWFsUHksCi0gICAgICAgIFRlc3RQYXJ0aWFsQ1N1YmNsYXNzLAotICAgICAgICBUZXN0UGFydGlhbE1ldGhvZCwKLSAgICAgICAgVGVzdFVwZGF0ZVdyYXBwZXIsCi0gICAgICAgIFRlc3RUb3RhbE9yZGVyaW5nLAotICAgICAgICBUZXN0Q21wVG9LZXlDLAotICAgICAgICBUZXN0Q21wVG9LZXlQeSwKLSAgICAgICAgVGVzdFdyYXBzLAotICAgICAgICBUZXN0UmVkdWNlLAotICAgICAgICBUZXN0TFJVLAotICAgICAgICBUZXN0U2luZ2xlRGlzcGF0Y2gsCi0gICAgKQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IDJhYzFkNGIuLjFmMDg2N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtMSw3ICsxLDggQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICh2ZXJib3NlLCByZWZjb3VudF90ZXN0LCBydW5fdW5pdHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBfcHl0aG9uX3N0ZGVyciwgY3B5dGhvbl9vbmx5LCBzdGFydF90aHJlYWRzKQotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIG1ha2Vfc2NyaXB0LCB0ZW1wX2RpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwX3B5dGhvbl9zdGRlcnIsIGNweXRob25fb25seSwgc3RhcnRfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2RpcikKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIG1ha2Vfc2NyaXB0CiAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCkBAIC01NDYsMTEgKzU0NywzMSBAQAogCiAgICAgICAgIGNsYXNzIFVzZXJDbGFzczoKICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBVc2VySW50KGludCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBCYXNlIGNsYXNzIGlzIG9iamVjdDsgbm8gZXh0cmEgZmllbGRzLgorICAgICAgICBjbGFzcyBVc2VyQ2xhc3NTbG90czoKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICAgICAgIyBCYXNlIGNsYXNzIGlzIGZpeGVkIHNpemUgbGFyZ2VyIHRoYW4gb2JqZWN0OyBubyBleHRyYSBmaWVsZHMuCisgICAgICAgIGNsYXNzIFVzZXJGbG9hdFNsb3RzKGZsb2F0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICAgICAgIyBCYXNlIGNsYXNzIGlzIHZhcmlhYmxlIHNpemU7IG5vIGV4dHJhIGZpZWxkcy4KKyAgICAgICAgY2xhc3MgVXNlckludFNsb3RzKGludCk6CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKGdjKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoVXNlckNsYXNzKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdjLmlzX3RyYWNrZWQoVXNlckNsYXNzKCkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChVc2VySW50KCkpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2MuaXNfdHJhY2tlZChbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnYy5pc190cmFja2VkKHNldCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnYy5pc190cmFja2VkKFVzZXJDbGFzc1Nsb3RzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdjLmlzX3RyYWNrZWQoVXNlckZsb2F0U2xvdHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2MuaXNfdHJhY2tlZChVc2VySW50U2xvdHMoKSkpCiAKICAgICBkZWYgdGVzdF9idWcxMDU1ODIwYihzZWxmKToKICAgICAgICAgIyBDb3JyZXNwb25kcyB0byB0ZW1wMmIucHkgaW4gdGhlIGJ1ZyByZXBvcnQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IGI1MDE3YjkuLjZjNGEzNDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC04MjAsMjUgKzgyMCwyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X3B5Y2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBkaXNwbGF5cyBpbnZvY2F0aW9ucyBvZiBQeUNGdW5jdGlvbiBpbnN0YW5jZXMnCi0gICAgICAgIGNtZCA9ICgnZnJvbSB0aW1lIGltcG9ydCBzbGVlcFxuJworICAgICAgICAjIFRlc3RlZCBmdW5jdGlvbiBtdXN0IG5vdCBiZSBkZWZpbmVkIHdpdGggTUVUSF9OT0FSR1Mgb3IgTUVUSF9PLAorICAgICAgICAjIG90aGVyd2lzZSBjYWxsX2Z1bmN0aW9uKCkgZG9lc24ndCBjYWxsIFB5Q0Z1bmN0aW9uX0NhbGwoKQorICAgICAgICBjbWQgPSAoJ2Zyb20gdGltZSBpbXBvcnQgZ210aW1lXG4nCiAgICAgICAgICAgICAgICAnZGVmIGZvbygpOlxuJwotICAgICAgICAgICAgICAgJyAgICBzbGVlcCgxKVxuJworICAgICAgICAgICAgICAgJyAgICBnbXRpbWUoMSlcbicKICAgICAgICAgICAgICAgICdkZWYgYmFyKCk6XG4nCiAgICAgICAgICAgICAgICAnICAgIGZvbygpXG4nCiAgICAgICAgICAgICAgICAnYmFyKClcbicpCiAgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKICAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9nbXRpbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnQnLCAncHktYnQnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignPGJ1aWx0LWluIG1ldGhvZCBzbGVlcCcsIGdkYl9vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJzxidWlsdC1pbiBtZXRob2QgZ210aW1lJywgZ2RiX291dHB1dCkKIAogICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idC1mdWxsIjoKICAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9nbXRpbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gbWV0aG9kIHNsZWVwJywgZ2RiX291dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIzAgPGJ1aWx0LWluIG1ldGhvZCBnbXRpbWUnLCBnZGJfb3V0cHV0KQogCiAKIGNsYXNzIFB5UHJpbnRUZXN0cyhEZWJ1Z2dlclRlc3RzKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQppbmRleCA1YzQ1NWNkLi4yNWNjNjI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CkBAIC0xLDcgKzEsMTAgQEAKIGltcG9ydCBnYwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB3ZWFrcmVmCitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHR5cGVzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC03MCw2ICs3Myw0NSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24udmFsdWUsIDIpCiAKIAorY2xhc3MgR2VuZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9uYW1lKHNlbGYpOgorICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgeWllbGQgMQorCisgICAgICAgICMgY2hlY2sgZ2VuZXJhdG9yIG5hbWVzCisgICAgICAgIGdlbiA9IGZ1bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX25hbWVfXywgImZ1bmMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIkdlbmVyYXRvclRlc3QudGVzdF9uYW1lLjxsb2NhbHM+LmZ1bmMiKQorCisgICAgICAgICMgbW9kaWZ5IGdlbmVyYXRvciBuYW1lcworICAgICAgICBnZW4uX19uYW1lX18gPSAibmFtZSIKKyAgICAgICAgZ2VuLl9fcXVhbG5hbWVfXyA9ICJxdWFsbmFtZSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19uYW1lX18sICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19xdWFsbmFtZV9fLCAicXVhbG5hbWUiKQorCisgICAgICAgICMgZ2VuZXJhdG9yIG5hbWVzIG11c3QgYmUgYSBzdHJpbmcgYW5kIGNhbm5vdCBiZSBkZWxldGVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgZ2VuLCAnX19uYW1lX18nLCAxMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgZ2VuLCAnX19xdWFsbmFtZV9fJywgMTIzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRlbGF0dHIsIGdlbiwgJ19fbmFtZV9fJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkZWxhdHRyLCBnZW4sICdfX3F1YWxuYW1lX18nKQorCisgICAgICAgICMgbW9kaWZ5IG5hbWVzIG9mIHRoZSBmdW5jdGlvbiBjcmVhdGluZyB0aGUgZ2VuZXJhdG9yCisgICAgICAgIGZ1bmMuX19xdWFsbmFtZV9fID0gImZ1bmNfcXVhbG5hbWUiCisgICAgICAgIGZ1bmMuX19uYW1lX18gPSAiZnVuY19uYW1lIgorICAgICAgICBnZW4gPSBmdW5jKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19uYW1lX18sICJmdW5jX25hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbi5fX3F1YWxuYW1lX18sICJmdW5jX3F1YWxuYW1lIikKKworICAgICAgICAjIHVubmFtZWQgZ2VuZXJhdG9yCisgICAgICAgIGdlbiA9ICh4IGZvciB4IGluIHJhbmdlKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIjxnZW5leHByPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiR2VuZXJhdG9yVGVzdC50ZXN0X25hbWUuPGxvY2Fscz4uPGdlbmV4cHI+IikKKworCiBjbGFzcyBFeGNlcHRpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRlc3RzIGZvciB0aGUgaXNzdWUgIzIzMzUzOiBjaGVjayB0aGF0IHRoZSBjdXJyZW50bHkgaGFuZGxlZCBleGNlcHRpb24KICAgICAjIGlzIGNvcnJlY3RseSBzYXZlZC9yZXN0b3JlZCBpbiBQeUV2YWxfRXZhbEZyYW1lRXgoKS4KQEAgLTE3OCw2ICsyMjAsNzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCAiZG9uZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmV4Y19pbmZvKCksIChOb25lLCBOb25lLCBOb25lKSkKIAorICAgIGRlZiB0ZXN0X3N0b3BpdGVyYXRpb25fd2FybmluZyhzZWxmKToKKyAgICAgICAgIyBTZWUgYWxzbyBQRVAgNDc5LgorCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIHlpZWxkCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorCisgICAgICAgICAgICBuZXh0KGdlbigpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAuKiByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpLCBcCisgICAgICAgICAgICAgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKworICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicpCisgICAgICAgICAgICBuZXh0KGdlbigpKQorCisKKyAgICBkZWYgdGVzdF90dXRvcmlhbF9zdG9waXRlcmF0aW9uKHNlbGYpOgorICAgICAgICAjIFJhaXNlIFN0b3BJdGVyYXRpb24iIHN0b3BzIHRoZSBnZW5lcmF0b3IgdG9vOgorCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICB5aWVsZCAyICMgbmV2ZXIgcmVhY2hlZAorCisgICAgICAgIGcgPSBmKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCAxKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIG5leHQoZykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgIyBUaGlzIHRpbWUgU3RvcEl0ZXJhdGlvbiBpc24ndCByYWlzZWQgZnJvbSB0aGUgZ2VuZXJhdG9yJ3MgYm9keSwKKyAgICAgICAgICAgICMgaGVuY2Ugbm8gd2FybmluZy4KKyAgICAgICAgICAgIG5leHQoZykKKworCitjbGFzcyBZaWVsZEZyb21UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX2dpX3lpZWxkZnJvbShzZWxmKToKKyAgICAgICAgZGVmIGEoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3JzdGF0ZShnZW5fYiksIGluc3BlY3QuR0VOX1JVTk5JTkcpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fUlVOTklORykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKworICAgICAgICBkZWYgYigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorICAgICAgICAgICAgeWllbGQgZnJvbSBhKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGdlbl9iLmdpX3lpZWxkZnJvbSkKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisKKyAgICAgICAgZ2VuX2IgPSBiKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fQ1JFQVRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorCisgICAgICAgIGdlbl9iLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fU1VTUEVOREVEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbl9iLmdpX3lpZWxkZnJvbS5naV9jb2RlLmNvX25hbWUsICdhJykKKworICAgICAgICBnZW5fYi5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3JzdGF0ZShnZW5fYiksIGluc3BlY3QuR0VOX1NVU1BFTkRFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2VuX2IuZ2lfeWllbGRmcm9tKQorCisgICAgICAgIFtdID0gZ2VuX2IgICMgRXhoYXVzdCBnZW5lcmF0b3IKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcnN0YXRlKGdlbl9iKSwgaW5zcGVjdC5HRU5fQ0xPU0VEKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnZW5fYi5naV95aWVsZGZyb20pCisKIAogdHV0b3JpYWxfdGVzdHMgPSAiIiIKIExldCdzIHRyeSBhIHNpbXBsZSBnZW5lcmF0b3I6CkBAIC0yMjQsMjYgKzMzOSw3IEBACiAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CiAgICAgU3RvcEl0ZXJhdGlvbgogCi0icmFpc2UgU3RvcEl0ZXJhdGlvbiIgc3RvcHMgdGhlIGdlbmVyYXRvciB0b286Ci0KLSAgICA+Pj4gZGVmIGYoKToKLSAgICAuLi4gICAgIHlpZWxkIDEKLSAgICAuLi4gICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAuLi4gICAgIHlpZWxkIDIgIyBuZXZlciByZWFjaGVkCi0gICAgLi4uCi0gICAgPj4+IGcgPSBmKCkKLSAgICA+Pj4gbmV4dChnKQotICAgIDEKLSAgICA+Pj4gbmV4dChnKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgICBTdG9wSXRlcmF0aW9uCi0gICAgPj4+IG5leHQoZykKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/Ci0gICAgU3RvcEl0ZXJhdGlvbgotCi1Ib3dldmVyLCB0aGV5IGFyZSBub3QgZXhhY3RseSBlcXVpdmFsZW50OgorSG93ZXZlciwgInJldHVybiIgYW5kIFN0b3BJdGVyYXRpb24gYXJlIG5vdCBleGFjdGx5IGVxdWl2YWxlbnQ6CiAKICAgICA+Pj4gZGVmIGcxKCk6CiAgICAgLi4uICAgICB0cnk6CkBAIC01NjMsNyArNjU5LDcgQEAKID4+PiB0eXBlKGkpCiA8Y2xhc3MgJ2dlbmVyYXRvcic+CiA+Pj4gW3MgZm9yIHMgaW4gZGlyKGkpIGlmIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KLVsnY2xvc2UnLCAnZ2lfY29kZScsICdnaV9mcmFtZScsICdnaV9ydW5uaW5nJywgJ3NlbmQnLCAndGhyb3cnXQorWydjbG9zZScsICdnaV9jb2RlJywgJ2dpX2ZyYW1lJywgJ2dpX3J1bm5pbmcnLCAnZ2lfeWllbGRmcm9tJywgJ3NlbmQnLCAndGhyb3cnXQogPj4+IGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBIQVZFX0RPQ1NUUklOR1MKID4+PiBwcmludChpLl9fbmV4dF9fLl9fZG9jX18gaWYgSEFWRV9ET0NTVFJJTkdTIGVsc2UgJ0ltcGxlbWVudCBuZXh0KHNlbGYpLicpCiBJbXBsZW1lbnQgbmV4dChzZWxmKS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IGU1OWVkNGQuLjZiYTU1ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtNDM0LDYgKzQzNCw0NCBAQAogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKG5hbWUpOgogICAgICAgICAgICAgICAgIHNlbGYudGVzdF9hYnNwYXRoKCkKIAorICAgIGRlZiB0ZXN0X2pvaW5fZXJyb3JzKHNlbGYpOgorICAgICAgICAjIENoZWNrIGpvaW4oKSByYWlzZXMgZnJpZW5kbHkgVHlwZUVycm9ycy4KKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgQnl0ZXNXYXJuaW5nKSwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBlcnJtc2cgPSAiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oYidieXRlcycsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgYidieXRlcycpCisgICAgICAgICAgICAjIHJlZ3Jlc3Npb24sIHNlZSAjMTUzNzcKKyAgICAgICAgICAgIGVycm1zZyA9IHInam9pblwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MiwgJ3N0cicpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIDQyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2xpc3QnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihbXSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCisKKyAgICBkZWYgdGVzdF9yZWxwYXRoX2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBDaGVjayByZWxwYXRoKCkgcmFpc2VzIGZyaWVuZGx5IFR5cGVFcnJvcnMuCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIChCeXRlc1dhcm5pbmcsIERlcHJlY2F0aW9uV2FybmluZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBlcnJtc2cgPSAiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYidieXRlcycsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgYidieXRlcycpCisgICAgICAgICAgICBlcnJtc2cgPSByJ3JlbHBhdGhcKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoNDIsICdzdHInKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCA0MikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCisKIAogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCAxODUzYTJkLi43MTQ3MmNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTM0LDggKzM0LDggQEAKICMgPiAqKiBDaGFuZ2VkIGZyb20gcHJldmlvdXMgInJhbmdlLWFuZC1hLWhhbGYiIHRvICJub25lIjsgdGhlCiAjID4gcmFuZ2UtYW5kLWEtaGFsZiBjaGVja2luZyB3YXNuJ3QgcGFydGljdWxhcmx5IHVzZWZ1bC4KICMKLSMgUGx1cyBhIEMgQVBJIG9yIHR3bywgZS5nLiBQeUludF9Bc0xvbmdNYXNrKCkgLT4KLSMgdW5zaWduZWQgbG9uZyBhbmQgUHlJbnRfQXNMb25nTG9uZ01hc2soKSAtPiB1bnNpZ25lZAorIyBQbHVzIGEgQyBBUEkgb3IgdHdvLCBlLmcuIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSAtPgorIyB1bnNpZ25lZCBsb25nIGFuZCBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaygpIC0+IHVuc2lnbmVkCiAjIGxvbmcgbG9uZyAoaWYgdGhhdCBleGlzdHMpLgogCiBMQVJHRSA9IDB4N0ZGRkZGRkYKQEAgLTQ4Miw3ICs0ODIsNyBAQAogICAgIGRlZiB0ZXN0X3Moc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3MoJ2FiY1x4ZTknKSwgYidhYmNceGMzXHhhOScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19zLCAnbnVsOlwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19zLCAnbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3MsIGInYnl0ZXMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfcywgYnl0ZWFycmF5KGInYnl0ZWFycmF5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19zLCBtZW1vcnl2aWV3KGInbWVtb3J5dmlldycpKQpAQCAtNTA5LDcgKzUwOSw3IEBACiAgICAgZGVmIHRlc3RfeihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfegogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfeignYWJjXHhlOScpLCBiJ2FiY1x4YzNceGE5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3osICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3osICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeiwgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc196LCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3osIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCkBAIC01MzcsNyArNTM3LDcgQEAKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfeQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgJ2FiY1x4ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfeShiJ2J5dGVzJyksIGInYnl0ZXMnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgYidudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3ksIGInbnVsOlwwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksIGJ5dGVhcnJheShiJ2J5dGVhcnJheScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfeSwgbWVtb3J5dmlldyhiJ21lbW9yeXZpZXcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3ksIE5vbmUpCkBAIC01NzcsNyArNTc3LDcgQEAKICAgICBkZWYgdGVzdF91KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc191CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc191KCdhYmNceGU5JyksICdhYmNceGU5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3UsICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX3UsICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfdSwgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc191LCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX3UsIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCkBAIC01OTUsNyArNTk1LDcgQEAKICAgICBkZWYgdGVzdF9aKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19aCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19aKCdhYmNceGU5JyksICdhYmNceGU5JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX1osICdudWw6XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX1osICdudWw6XDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfWiwgYidieXRlcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19aLCBieXRlYXJyYXkoYidieXRlYXJyYXknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX1osIG1lbW9yeXZpZXcoYidtZW1vcnl2aWV3JykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldG9wdC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5CmluZGV4IGZhNTcwMWYuLjkyNzVkYzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0b3B0LnB5CkBAIC0xLDcgKzEsNyBAQAogIyB0ZXN0X2dldG9wdC5weQogIyBEYXZpZCBHb29kZ2VyIDxkZ29vZGdlckBiaWdmb290LmNvbT4gMjAwMC0wOC0xOQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX2RvY3Rlc3QsIHJ1bl91bml0dGVzdCwgRW52aXJvbm1lbnRWYXJHdWFyZAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl9kb2N0ZXN0LCBFbnZpcm9ubWVudFZhckd1YXJkCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGdldG9wdApAQCAtMTgwLDggKzE4MCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9uZ29wdHMsIFsoJy0taGVscCcsICd4JyldKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhnZXRvcHQuR2V0b3B0RXJyb3IsIGdldG9wdC5nZXRvcHQsIFsnLS1oZWxwPSddLCAnJywgWydoZWxwJ10pCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoR2V0b3B0VGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQppbmRleCAyNzM3ZTgxLi5kZTYxMGM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CkBAIC0zMyw2ICszMyw1NSBAQAogY2lCVVFVZ0tkSEpuWjNKclp5QjZjbVptYm5SeUlIQnVaMjU1WW5RZ2VYWnZaVzVsYkM0QVltRmpiMjRBZDJsdWF5QjNhVzVyQUE9PQogJycnCiAKKyMgVGhpcyBkYXRhIGNvbnRhaW5zIGFuIGludmFsaWQgbWFqb3IgdmVyc2lvbiBudW1iZXIgKDUpCisjIEFuIHVuZXhwZWN0ZWQgbWFqb3IgdmVyc2lvbiBudW1iZXIgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3Igd2hlbgorIyBwYXJzaW5nIGEgLm1vIGZpbGUKKworR05VX01PX0RBVEFfQkFEX01BSk9SX1ZFUlNJT04gPSBiJycnXAorM2hJRWxRQUFCUUFHQUFBQUhBQUFBRXdBQUFBTEFBQUFmQUFBQUFBQUFBQ29BQUFBRlFBQUFLa0FBQUFqQUFBQXZ3QUFBS0VBQUFEagorQUFBQUJ3QUFBSVVCQUFBTEFBQUFqUUVBQUVVQkFBQ1pBUUFBRmdBQUFOOENBQUFlQUFBQTlnSUFBS0VBQUFBVkF3QUFCUUFBQUxjRAorQUFBSkFBQUF2UU1BQUFFQUFBQURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFCUUFBQUFZQUFBQUNBQUFBQUZKaAorZVcxdmJtUWdUSFY0ZFhKNUlGbGhZMmd0ZEFCVWFHVnlaU0JwY3lBbGN5Qm1hV3hsQUZSb1pYSmxJR0Z5WlNBbGN5Qm1hV3hsY3dCVQorYUdseklHMXZaSFZzWlNCd2NtOTJhV1JsY3lCcGJuUmxjbTVoZEdsdmJtRnNhWHBoZEdsdmJpQmhibVFnYkc5allXeHBlbUYwYVc5dQorQ25OMWNIQnZjblFnWm05eUlIbHZkWElnVUhsMGFHOXVJSEJ5YjJkeVlXMXpJR0o1SUhCeWIzWnBaR2x1WnlCaGJpQnBiblJsY21aaAorWTJVZ2RHOGdkR2hsSUVkT1ZRcG5aWFIwWlhoMElHMWxjM05oWjJVZ1kyRjBZV3h2WnlCc2FXSnlZWEo1TGdCdGRXeHNkWE5yQUc1MQorWkdkbElHNTFaR2RsQUZCeWIycGxZM1F0U1dRdFZtVnljMmx2YmpvZ01pNHdDbEJQTFZKbGRtbHphVzl1TFVSaGRHVTZJREl3TURBdAorTURndE1qa2dNVEk2TVRrdE1EUTZNREFLVEdGemRDMVVjbUZ1YzJ4aGRHOXlPaUJLTGlCRVlYWnBaQ0JKWXNPaHc3RmxlaUE4YWkxaworWVhacFpFQnViMjl6TG1aeVBncE1ZVzVuZFdGblpTMVVaV0Z0T2lCWVdDQThjSGwwYUc5dUxXUmxka0J3ZVhSb2IyNHViM0puUGdwTgorU1UxRkxWWmxjbk5wYjI0NklERXVNQXBEYjI1MFpXNTBMVlI1Y0dVNklIUmxlSFF2Y0d4aGFXNDdJR05vWVhKelpYUTlhWE52TFRnNAorTlRrdE1RcERiMjUwWlc1MExWUnlZVzV6Wm1WeUxVVnVZMjlrYVc1bk9pQnViMjVsQ2tkbGJtVnlZWFJsWkMxQ2VUb2djSGxuWlhSMAorWlhoMExuQjVJREV1TVFwUWJIVnlZV3d0Um05eWJYTTZJRzV3YkhWeVlXeHpQVEk3SUhCc2RYSmhiRDF1SVQweE93b0FWR2h5YjJGMAorZDI5aVlteGxjaUJOWVc1bmNtOTJaUUJJWVhrZ0pYTWdabWxqYUdWeWJ3QklZWGtnSlhNZ1ptbGphR1Z5YjNNQVIzVjJaaUI2WW5GbworZVhJZ1kyVmlhWFp4Y21ZZ2RtRm5jbVZoYm1kMlltRnVlWFp0Ym1kMlltRWdibUZ4SUhsaWNHNTVkbTF1WjNaaVlRcG1hR05qWW1WbgorSUhOaVpTQnNZbWhsSUVOc1ozVmlZU0JqWldKMFpXNTZaaUJ2YkNCalpXSnBkbkYyWVhRZ2JtRWdkbUZuY21WemJuQnlJR2RpSUdkMQorY2lCVVFVZ0tkSEpuWjNKclp5QjZjbVptYm5SeUlIQnVaMjU1WW5RZ2VYWnZaVzVsYkM0QVltRmpiMjRBZDJsdWF5QjNhVzVyQUE9PQorJycnCisKKyMgVGhpcyBkYXRhIGNvbnRhaW5zIGFuIGludmFsaWQgbWlub3IgdmVyc2lvbiBudW1iZXIgKDcpCisjIEFuIHVuZXhwZWN0ZWQgbWlub3IgdmVyc2lvbiBudW1iZXIgb25seSBpbmRpY2F0ZXMgdGhhdCBzb21lIG9mIHRoZSBmaWxlJ3MKKyMgY29udGVudHMgbWF5IG5vdCBiZSBhYmxlIHRvIGJlIHJlYWQuIEl0IGRvZXMgbm90IGluZGljYXRlIGFuIGVycm9yLgorCitHTlVfTU9fREFUQV9CQURfTUlOT1JfVkVSU0lPTiA9IGInJydcCiszaElFbFFjQUFBQUdBQUFBSEFBQUFFd0FBQUFMQUFBQWZBQUFBQUFBQUFDb0FBQUFGUUFBQUtrQUFBQWpBQUFBdndBQUFLRUFBQURqCitBQUFBQndBQUFJVUJBQUFMQUFBQWpRRUFBRVVCQUFDWkFRQUFGZ0FBQU44Q0FBQWVBQUFBOWdJQUFLRUFBQUFWQXdBQUJRQUFBTGNECitBQUFKQUFBQXZRTUFBQUVBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUJRQUFBQVlBQUFBQ0FBQUFBRkpoCitlVzF2Ym1RZ1RIVjRkWEo1SUZsaFkyZ3RkQUJVYUdWeVpTQnBjeUFsY3lCbWFXeGxBRlJvWlhKbElHRnlaU0FsY3lCbWFXeGxjd0JVCithR2x6SUcxdlpIVnNaU0J3Y205MmFXUmxjeUJwYm5SbGNtNWhkR2x2Ym1Gc2FYcGhkR2x2YmlCaGJtUWdiRzlqWVd4cGVtRjBhVzl1CitDbk4xY0hCdmNuUWdabTl5SUhsdmRYSWdVSGwwYUc5dUlIQnliMmR5WVcxeklHSjVJSEJ5YjNacFpHbHVaeUJoYmlCcGJuUmxjbVpoCitZMlVnZEc4Z2RHaGxJRWRPVlFwblpYUjBaWGgwSUcxbGMzTmhaMlVnWTJGMFlXeHZaeUJzYVdKeVlYSjVMZ0J0ZFd4c2RYTnJBRzUxCitaR2RsSUc1MVpHZGxBRkJ5YjJwbFkzUXRTV1F0Vm1WeWMybHZiam9nTWk0d0NsQlBMVkpsZG1semFXOXVMVVJoZEdVNklESXdNREF0CitNRGd0TWprZ01USTZNVGt0TURRNk1EQUtUR0Z6ZEMxVWNtRnVjMnhoZEc5eU9pQktMaUJFWVhacFpDQkpZc09odzdGbGVpQThhaTFrCitZWFpwWkVCdWIyOXpMbVp5UGdwTVlXNW5kV0ZuWlMxVVpXRnRPaUJZV0NBOGNIbDBhRzl1TFdSbGRrQndlWFJvYjI0dWIzSm5QZ3BOCitTVTFGTFZabGNuTnBiMjQ2SURFdU1BcERiMjUwWlc1MExWUjVjR1U2SUhSbGVIUXZjR3hoYVc0N0lHTm9ZWEp6WlhROWFYTnZMVGc0CitOVGt0TVFwRGIyNTBaVzUwTFZSeVlXNXpabVZ5TFVWdVkyOWthVzVuT2lCdWIyNWxDa2RsYm1WeVlYUmxaQzFDZVRvZ2NIbG5aWFIwCitaWGgwTG5CNUlERXVNUXBRYkhWeVlXd3RSbTl5YlhNNklHNXdiSFZ5WVd4elBUSTdJSEJzZFhKaGJEMXVJVDB4T3dvQVZHaHliMkYwCitkMjlpWW14bGNpQk5ZVzVuY205MlpRQklZWGtnSlhNZ1ptbGphR1Z5YndCSVlYa2dKWE1nWm1samFHVnliM01BUjNWMlppQjZZbkZvCitlWElnWTJWaWFYWnhjbVlnZG1GbmNtVmhibWQyWW1GdWVYWnRibWQyWW1FZ2JtRnhJSGxpY0c1NWRtMXVaM1ppWVFwbWFHTmpZbVZuCitJSE5pWlNCc1ltaGxJRU5zWjNWaVlTQmpaV0owWlc1NlppQnZiQ0JqWldKcGRuRjJZWFFnYm1FZ2RtRm5jbVZ6Ym5CeUlHZGlJR2QxCitjaUJVUVVnS2RISm5aM0pyWnlCNmNtWm1iblJ5SUhCdVoyNTVZblFnZVhadlpXNWxiQzRBWW1GamIyNEFkMmx1YXlCM2FXNXJBQT09CisnJycKKworCiBVTU9fREFUQSA9IGInJydcCiAzaElFbFFBQUFBQUNBQUFBSEFBQUFDd0FBQUFGQUFBQVBBQUFBQUFBQUFCUUFBQUFCQUFBQUZFQUFBQVBBUUFBVmdBQUFBUUFBQUJtCiBBUUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlXTERuZ0JRY205cVpXTjBMVWxrTFZabGNuTnBiMjQ2SURJdU1BcFFUeTFTCkBAIC01Niw2ICsxMDUsOCBAQAogCiBMT0NBTEVESVIgPSBvcy5wYXRoLmpvaW4oJ3h4JywgJ0xDX01FU1NBR0VTJykKIE1PRklMRSA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdnZXR0ZXh0Lm1vJykKK01PRklMRV9CQURfTUFKT1JfVkVSU0lPTiA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdnZXR0ZXh0X2JhZF9tYWpvcl92ZXJzaW9uLm1vJykKK01PRklMRV9CQURfTUlOT1JfVkVSU0lPTiA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdnZXR0ZXh0X2JhZF9taW5vcl92ZXJzaW9uLm1vJykKIFVNT0ZJTEUgPSBvcy5wYXRoLmpvaW4oTE9DQUxFRElSLCAndWdldHRleHQubW8nKQogTU1PRklMRSA9IG9zLnBhdGguam9pbihMT0NBTEVESVIsICdtZXRhZGF0YS5tbycpCiAKQEAgLTY2LDYgKzExNywxMCBAQAogICAgICAgICAgICAgb3MubWFrZWRpcnMoTE9DQUxFRElSKQogICAgICAgICB3aXRoIG9wZW4oTU9GSUxFLCAnd2InKSBhcyBmcDoKICAgICAgICAgICAgIGZwLndyaXRlKGJhc2U2NC5kZWNvZGVieXRlcyhHTlVfTU9fREFUQSkpCisgICAgICAgIHdpdGggb3BlbihNT0ZJTEVfQkFEX01BSk9SX1ZFUlNJT04sICd3YicpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYmFzZTY0LmRlY29kZWJ5dGVzKEdOVV9NT19EQVRBX0JBRF9NQUpPUl9WRVJTSU9OKSkKKyAgICAgICAgd2l0aCBvcGVuKE1PRklMRV9CQURfTUlOT1JfVkVSU0lPTiwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShiYXNlNjQuZGVjb2RlYnl0ZXMoR05VX01PX0RBVEFfQkFEX01JTk9SX1ZFUlNJT04pKQogICAgICAgICB3aXRoIG9wZW4oVU1PRklMRSwgJ3diJykgYXMgZnA6CiAgICAgICAgICAgICBmcC53cml0ZShiYXNlNjQuZGVjb2RlYnl0ZXMoVU1PX0RBVEEpKQogICAgICAgICB3aXRoIG9wZW4oTU1PRklMRSwgJ3diJykgYXMgZnA6CkBAIC0xNzIsNiArMjI3LDIxIEBACiAgICAgZGVmIHRlc3RfdGV4dGRvbWFpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR0ZXh0LnRleHRkb21haW4oKSwgJ2dldHRleHQnKQogCisgICAgZGVmIHRlc3RfYmFkX21ham9yX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihNT0ZJTEVfQkFEX01BSk9SX1ZFUlNJT04sICdyYicpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBnZXR0ZXh0LkdOVVRyYW5zbGF0aW9ucyhmcCkKKworICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y2VwdGlvbi5lcnJubywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjZXB0aW9uLnN0cmVycm9yLCAiQmFkIHZlcnNpb24gbnVtYmVyIDUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNlcHRpb24uZmlsZW5hbWUsIE1PRklMRV9CQURfTUFKT1JfVkVSU0lPTikKKworICAgIGRlZiB0ZXN0X2JhZF9taW5vcl92ZXJzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oTU9GSUxFX0JBRF9NSU5PUl9WRVJTSU9OLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBubyBlcnJvciBpcyB0aHJvd24gd2l0aCBhIGJhZCBtaW5vciB2ZXJzaW9uIG51bWJlcgorICAgICAgICAgICAgZ2V0dGV4dC5HTlVUcmFuc2xhdGlvbnMoZnApCisKICAgICBkZWYgdGVzdF9zb21lX3RyYW5zbGF0aW9ucyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgICMgdGVzdCBzb21lIHRyYW5zbGF0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5IGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CmluZGV4IGE1YWI4ZDYuLjkyNjU4OGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKQEAgLTQsOCArNCw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmssIGNyZWF0ZV9lbXB0eV9maWxlKQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChURVNURk4sIHNraXBfdW5sZXNzX3N5bWxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBjcmVhdGVfZW1wdHlfZmlsZSwgY2hhbmdlX2N3ZCkKIAogCiBjbGFzcyBHbG9iVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTMsNiArMTMsOSBAQAogICAgIGRlZiBub3JtKHNlbGYsICpwYXJ0cyk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICpwYXJ0cykpCiAKKyAgICBkZWYgam9pbnMoc2VsZiwgKnR1cGxlcyk6CisgICAgICAgIHJldHVybiBbb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgKnBhcnRzKSBmb3IgcGFydHMgaW4gdHVwbGVzXQorCiAgICAgZGVmIG1rdGVtcChzZWxmLCAqcGFydHMpOgogICAgICAgICBmaWxlbmFtZSA9IHNlbGYubm9ybSgqcGFydHMpCiAgICAgICAgIGJhc2UsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQpAQCAtMzgsMTcgKzQxLDE3IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYudGVtcGRpcikKIAotICAgIGRlZiBnbG9iKHNlbGYsICpwYXJ0cyk6CisgICAgZGVmIGdsb2Ioc2VsZiwgKnBhcnRzLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMToKICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXJ0c1swXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbigqcGFydHMpCiAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCBwYXR0ZXJuKQotICAgICAgICByZXMgPSBnbG9iLmdsb2IocCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGdsb2IuaWdsb2IocCkpLCByZXMpCisgICAgICAgIHJlcyA9IGdsb2IuZ2xvYihwLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGdsb2IuaWdsb2IocCwgKiprd2FyZ3MpKSwgcmVzKQogICAgICAgICBicmVzID0gW29zLmZzZW5jb2RlKHgpIGZvciB4IGluIHJlc10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iLmdsb2Iob3MuZnNlbmNvZGUocCkpLCBicmVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZ2xvYi5pZ2xvYihvcy5mc2VuY29kZShwKSkpLCBicmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2IuZ2xvYihvcy5mc2VuY29kZShwKSwgKiprd2FyZ3MpLCBicmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZ2xvYi5pZ2xvYihvcy5mc2VuY29kZShwKSwgKiprd2FyZ3MpKSwgYnJlcykKICAgICAgICAgcmV0dXJuIHJlcwogCiAgICAgZGVmIGFzc2VydFNlcXVlbmNlc0VxdWFsX25vb3JkZXIoc2VsZiwgbDEsIGwyKToKQEAgLTE5Miw5ICsxOTUsMTE0IEBACiAgICAgICAgIGNoZWNrKCcvLz8vYzovPycsICcvLz8vYzovWz9dJykKICAgICAgICAgY2hlY2soJy8vKi8qLyonLCAnLy8qLyovWypdJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChHbG9iVGVzdHMpCisgICAgZGVmIHJnbG9iKHNlbGYsICpwYXJ0cywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5nbG9iKCpwYXJ0cywgcmVjdXJzaXZlPVRydWUsICoqa3dhcmdzKQorCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX2dsb2Ioc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRTZXF1ZW5jZXNFcXVhbF9ub29yZGVyCisgICAgICAgIGZ1bGwgPSBbKCdaWlonLCksCisgICAgICAgICAgICAgICAgKCdhJywpLCAoJ2EnLCAnRCcpLAorICAgICAgICAgICAgICAgICgnYScsICdiY2QnKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ0VGJyksCisgICAgICAgICAgICAgICAgKCdhJywgJ2JjZCcsICdlZmcnKSwKKyAgICAgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ2VmZycsICdoYScpLAorICAgICAgICAgICAgICAgICgnYWFhJywpLCAoJ2FhYScsICd6enpGJyksCisgICAgICAgICAgICAgICAgKCdhYWInLCksICgnYWFiJywgJ0YnKSwKKyAgICAgICAgICAgICAgIF0KKyAgICAgICAgaWYgY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIGZ1bGwgKz0gWygnc3ltMScsKSwgKCdzeW0yJywpLAorICAgICAgICAgICAgICAgICAgICAgKCdzeW0zJywpLAorICAgICAgICAgICAgICAgICAgICAgKCdzeW0zJywgJ0VGJyksCisgICAgICAgICAgICAgICAgICAgICAoJ3N5bTMnLCAnZWZnJyksCisgICAgICAgICAgICAgICAgICAgICAoJ3N5bTMnLCAnZWZnJywgJ2hhJyksCisgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionKSwgc2VsZi5qb2lucygoJycsKSwgKmZ1bGwpKQorICAgICAgICBlcShzZWxmLnJnbG9iKCcuJywgJyoqJyksIHNlbGYuam9pbnMoKCcuJywnJyksCisgICAgICAgICAgICAqKCgnLicsKSArIGkgZm9yIGkgaW4gZnVsbCkpKQorICAgICAgICBkaXJzID0gWygnYScsICcnKSwgKCdhJywgJ2JjZCcsICcnKSwgKCdhJywgJ2JjZCcsICdlZmcnLCAnJyksCisgICAgICAgICAgICAgICAgKCdhYWEnLCAnJyksICgnYWFiJywgJycpXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZGlycyArPSBbKCdzeW0zJywgJycpLCAoJ3N5bTMnLCAnZWZnJywgJycpXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICcnKSwgc2VsZi5qb2lucygoJycsKSwgKmRpcnMpKQorCisgICAgICAgIGVxKHNlbGYucmdsb2IoJ2EnLCAnKionKSwgc2VsZi5qb2lucygKKyAgICAgICAgICAgICgnYScsICcnKSwgKCdhJywgJ0QnKSwgKCdhJywgJ2JjZCcpLCAoJ2EnLCAnYmNkJywgJ0VGJyksCisgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ2VmZycpLCAoJ2EnLCAnYmNkJywgJ2VmZycsICdoYScpKSkKKyAgICAgICAgZXEoc2VsZi5yZ2xvYignYSoqJyksIHNlbGYuam9pbnMoKCdhJywpLCAoJ2FhYScsKSwgKCdhYWInLCkpKQorICAgICAgICBleHBlY3QgPSBbKCdhJywgJ2JjZCcsICdFRicpXQorICAgICAgICBpZiBjYW5fc3ltbGluaygpOgorICAgICAgICAgICAgZXhwZWN0ICs9IFsoJ3N5bTMnLCAnRUYnKV0KKyAgICAgICAgZXEoc2VsZi5yZ2xvYignKionLCAnRUYnKSwgc2VsZi5qb2lucygqZXhwZWN0KSkKKyAgICAgICAgZXhwZWN0ID0gWygnYScsICdiY2QnLCAnRUYnKSwgKCdhYWEnLCAnenp6RicpLCAoJ2FhYicsICdGJyldCisgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICBleHBlY3QgKz0gWygnc3ltMycsICdFRicpXQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICcqRicpLCBzZWxmLmpvaW5zKCpleHBlY3QpKQorICAgICAgICBlcShzZWxmLnJnbG9iKCcqKicsICcqRicsICcnKSwgW10pCisgICAgICAgIGVxKHNlbGYucmdsb2IoJyoqJywgJ2JjZCcsICcqJyksIHNlbGYuam9pbnMoCisgICAgICAgICAgICAoJ2EnLCAnYmNkJywgJ0VGJyksICgnYScsICdiY2QnLCAnZWZnJykpKQorICAgICAgICBlcShzZWxmLnJnbG9iKCdhJywgJyoqJywgJ2JjZCcpLCBzZWxmLmpvaW5zKCgnYScsICdiY2QnKSkpCisKKyAgICAgICAgd2l0aCBjaGFuZ2VfY3dkKHNlbGYudGVtcGRpcik6CisgICAgICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCisgICAgICAgICAgICBlcShnbG9iLmdsb2IoJyoqJywgcmVjdXJzaXZlPVRydWUpLCBbam9pbigqaSkgZm9yIGkgaW4gZnVsbF0pCisgICAgICAgICAgICBlcShnbG9iLmdsb2Ioam9pbignKionLCAnJyksIHJlY3Vyc2l2ZT1UcnVlKSwKKyAgICAgICAgICAgICAgICBbam9pbigqaSkgZm9yIGkgaW4gZGlyc10pCisgICAgICAgICAgICBlcShnbG9iLmdsb2Ioam9pbignKionLCd6eipGJyksIHJlY3Vyc2l2ZT1UcnVlKSwKKyAgICAgICAgICAgICAgICBbam9pbignYWFhJywgJ3p6ekYnKV0pCisgICAgICAgICAgICBlcShnbG9iLmdsb2IoJyoqenoqRicsIHJlY3Vyc2l2ZT1UcnVlKSwgW10pCisgICAgICAgICAgICBleHBlY3QgPSBbam9pbignYScsICdiY2QnLCAnRUYnKV0KKyAgICAgICAgICAgIGlmIGNhbl9zeW1saW5rKCk6CisgICAgICAgICAgICAgICAgZXhwZWN0ICs9IFtqb2luKCdzeW0zJywgJ0VGJyldCisgICAgICAgICAgICBlcShnbG9iLmdsb2Ioam9pbignKionLCAnRUYnKSwgcmVjdXJzaXZlPVRydWUpLCBleHBlY3QpCisKKworQHNraXBfdW5sZXNzX3N5bWxpbmsKK2NsYXNzIFN5bWxpbmtMb29wR2xvYlRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NlbGZsaW5rKHNlbGYpOgorICAgICAgICB0ZW1wZGlyID0gVEVTVEZOICsgIl9kaXIiCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXBkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCB0ZW1wZGlyKQorICAgICAgICB3aXRoIGNoYW5nZV9jd2QodGVtcGRpcik6CisgICAgICAgICAgICBvcy5tYWtlZGlycygnZGlyJykKKyAgICAgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbignZGlyJywgJ2ZpbGUnKSkKKyAgICAgICAgICAgIG9zLnN5bWxpbmsob3MuY3VyZGlyLCBvcy5wYXRoLmpvaW4oJ2RpcicsICdsaW5rJykpCisKKyAgICAgICAgICAgIHJlc3VsdHMgPSBnbG9iLmdsb2IoJyoqJywgcmVjdXJzaXZlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgbGVuKHNldChyZXN1bHRzKSkpCisgICAgICAgICAgICByZXN1bHRzID0gc2V0KHJlc3VsdHMpCisgICAgICAgICAgICBkZXB0aCA9IDAKKyAgICAgICAgICAgIHdoaWxlIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqKFsnZGlyJ10gKyBbJ2xpbmsnXSAqIGRlcHRoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHJlc3VsdHMpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUocGF0aCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0czoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsICdmaWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHJlc3VsdHMpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUocGF0aCkKKyAgICAgICAgICAgICAgICBkZXB0aCArPSAxCisKKyAgICAgICAgICAgIHJlc3VsdHMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKCcqKicsICdmaWxlJyksIHJlY3Vyc2l2ZT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIGxlbihzZXQocmVzdWx0cykpKQorICAgICAgICAgICAgcmVzdWx0cyA9IHNldChyZXN1bHRzKQorICAgICAgICAgICAgZGVwdGggPSAwCisgICAgICAgICAgICB3aGlsZSByZXN1bHRzOgorICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oKihbJ2RpciddICsgWydsaW5rJ10gKiBkZXB0aCArIFsnZmlsZSddKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHJlc3VsdHMpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUocGF0aCkKKyAgICAgICAgICAgICAgICBkZXB0aCArPSAxCisKKyAgICAgICAgICAgIHJlc3VsdHMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKCcqKicsICcnKSwgcmVjdXJzaXZlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgbGVuKHNldChyZXN1bHRzKSkpCisgICAgICAgICAgICByZXN1bHRzID0gc2V0KHJlc3VsdHMpCisgICAgICAgICAgICBkZXB0aCA9IDAKKyAgICAgICAgICAgIHdoaWxlIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqKFsnZGlyJ10gKyBbJ2xpbmsnXSAqIGRlcHRoICsgWycnXSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCByZXN1bHRzKQorICAgICAgICAgICAgICAgIHJlc3VsdHMucmVtb3ZlKHBhdGgpCisgICAgICAgICAgICAgICAgZGVwdGggKz0gMQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQppbmRleCAyNTA0NTIzLi5lYzNkNzgzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CkBAIC0xLDcgKzEsOCBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gcGFydCAxLCBncmFtbWFyLgogIyBUaGlzIGp1c3QgdGVzdHMgd2hldGhlciB0aGUgcGFyc2VyIGFjY2VwdHMgdGhlbSBhbGwuCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNoZWNrX3N5bnRheF9lcnJvcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvcgoraW1wb3J0IGluc3BlY3QKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogIyB0ZXN0aW5nIGltcG9ydCAqCkBAIC0yMDUsNiArMjA2LDcgQEAKICAgICAgICAgZDAxKDEpCiAgICAgICAgIGQwMSgqKDEsKSkKICAgICAgICAgZDAxKCpbXSBvciBbMl0pCisgICAgICAgIGQwMSgqKCkgb3IgKCksICp7fSBhbmQgKCksICoqKCkgb3Ige30pCiAgICAgICAgIGQwMSgqKnsnYSc6Mn0pCiAgICAgICAgIGQwMSgqKnsnYSc6Mn0gb3Ige30pCiAgICAgICAgIGRlZiBkMTEoYSwgYj0xKTogcGFzcwpAQCAtMjk4LDggKzMwMCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMSwgeD0yLCAqWzMsIDRdLCB5PTUpLCAoKDEsIDMsIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsneCc6MiwgJ3knOjV9KSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJmKDEsICooMiwzKSwgNCkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMSwgKigyLDMpLCA0KSwgKCgxLCAyLCAzLCA0KSwge30pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImYoMSwgeD0yLCAqKDMsNCksIHg9NSkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoKip7J2VnZ3MnOidzY3JhbWJsZWQnLCAnc3BhbSc6J2ZyaWVkJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKSwgeydlZ2dzJzonc2NyYW1ibGVkJywgJ3NwYW0nOidmcmllZCd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKHNwYW09J2ZyaWVkJywgKip7J2VnZ3MnOidzY3JhbWJsZWQnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgpLCB7J2VnZ3MnOidzY3JhbWJsZWQnLCAnc3BhbSc6J2ZyaWVkJ30pKQogCiAgICAgICAgICMgYXJndW1lbnQgYW5ub3RhdGlvbiB0ZXN0cwogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCkBAIC01MzAsNyArNTM2LDggQEAKICAgICAgICAgIyBOb3QgYWxsb3dlZCBhdCBjbGFzcyBzY29wZQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzp5aWVsZCAxIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286eWllbGQgZnJvbSAoKSIpCi0KKyAgICAgICAgIyBDaGVjayBhbm5vdGF0aW9uIHJlZmxlYWsgb24gU3ludGF4RXJyb3IKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZyhhOih5aWVsZCkpOiBwYXNzIikKIAogICAgIGRlZiB0ZXN0X3JhaXNlKHNlbGYpOgogICAgICAgICAjICdyYWlzZScgdGVzdCBbJywnIHRlc3RdCkBAIC0xMDE4LDkgKzEwMjUsMTAzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKEZhbHNlIGlzIDIpIGlzIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRmFsc2UgaXMgMiBpcyAzKQogCisgICAgZGVmIHRlc3RfbWF0cml4X211bChzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0byBiZSBhIGNvbXByZWhlbnNpdmUgdGVzdCwgcmF0aGVyIGp1c3QgdG8gYmUgZmV3CisgICAgICAgICMgc2FtcGxlcyBvZiB0aGUgQCBvcGVyYXRvciBpbiB0ZXN0X2dyYW1tYXIucHkuCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19tYXRtdWxfXyhzZWxmLCBvKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNAorICAgICAgICAgICAgZGVmIF9faW1hdG11bF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHNlbGYub3RoZXIgPSBvCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgbSA9IE0oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0gQCBtLCA0KQorICAgICAgICBtIEA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVG9rZW5UZXN0cywgR3JhbW1hclRlc3RzKQorICAgIGRlZiB0ZXN0X2FzeW5jX2F3YWl0KHNlbGYpOgorICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgYXdhaXQgPSAyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmMsIDEpCisKKyAgICAgICAgZGVmIGFzeW5jKCk6CisgICAgICAgICAgICBub25sb2NhbCBhd2FpdAorICAgICAgICAgICAgYXdhaXQgPSAxMAorICAgICAgICBhc3luYygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQsIDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChhc3luYy5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKKworICAgICAgICBhc3luYyBkZWYgdGVzdCgpOgorICAgICAgICAgICAgZGVmIHN1bSgpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIDE6CisgICAgICAgICAgICAgICAgYXdhaXQgc29tZW9iaigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0Ll9fbmFtZV9fLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKHRlc3QuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCisKKyAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgICAgIHNldGF0dHIoZnVuYywgJ19tYXJrZWQnLCBUcnVlKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgICAgICBAZGVjb3JhdG9yCisgICAgICAgIGFzeW5jIGRlZiB0ZXN0MigpOgorICAgICAgICAgICAgcmV0dXJuIDIyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXN0Mi5fbWFya2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QyLl9fbmFtZV9fLCAndGVzdDInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYm9vbCh0ZXN0Mi5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2ZvcihzZWxmKToKKyAgICAgICAgY2xhc3MgRG9uZShFeGNlcHRpb24pOiBwYXNzCisKKyAgICAgICAgY2xhc3MgQUl0ZXI6CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFJdGVyKCk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgYXN5bmMgZm9yIGksIGogaW4gQUl0ZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBSXRlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2UgRG9uZQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRG9uZSk6CisgICAgICAgICAgICBmb28oKS5zZW5kKE5vbmUpCisKKyAgICBkZWYgdGVzdF9hc3luY193aXRoKHNlbGYpOgorICAgICAgICBjbGFzcyBEb25lKEV4Y2VwdGlvbik6IHBhc3MKKworICAgICAgICBjbGFzcyBtYW5hZ2VyOgorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWVudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICgxLCAyKQorICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWV4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSBhcyB4OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcigpIGFzICh4LCB5KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBhc3luYyB3aXRoIG1hbmFnZXIoKSwgbWFuYWdlcigpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcigpIGFzIHgsIG1hbmFnZXIoKSBhcyB5OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGFzeW5jIHdpdGggbWFuYWdlcigpIGFzIHgsIG1hbmFnZXIoKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByYWlzZSBEb25lCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEb25lKToKKyAgICAgICAgICAgIGZvbygpLnNlbmQoTm9uZSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dycC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CmluZGV4IDc0OTA0MWMuLjI3MmIwODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CkBAIC05Miw4ICs5Miw1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGdycC5nZXRncmdpZCwgZmFrZWdpZCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEdyb3VwRGF0YWJhc2VUZXN0Q2FzZSkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5IGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CmluZGV4IGI0MTcwNDQuLmQ4NDA4ZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBpbwogaW1wb3J0IHN0cnVjdAoraW1wb3J0IGFycmF5CiBnemlwID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdnemlwJykKIAogZGF0YTEgPSBiIiIiICBpbnQgbGVuZ3RoPURFRkFVTFRBTExPQywgZXJyID0gWl9PSzsKQEAgLTc3LDE1ICs3OCwxOCBAQAogICAgIGRlZiB0ZXN0X3dyaXRlX2J5dGVhcnJheShzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9hbmRfcmVhZF9iYWNrKGJ5dGVhcnJheShkYXRhMSAqIDUwKSkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX2FycmF5KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2FuZF9yZWFkX2JhY2soYXJyYXkuYXJyYXkoJ0knLCBkYXRhMSAqIDQwKSkKKwogICAgIGRlZiB0ZXN0X3dyaXRlX2luY29tcGF0aWJsZV90eXBlKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBub24tYnl0ZXMtbGlrZSB0eXBlcyByYWlzZSBUeXBlRXJyb3IuCiAgICAgICAgICMgSXNzdWUgIzIxNTYwOiBhdHRlbXB0cyB0byB3cml0ZSBpbmNvbXBhdGlibGUgdHlwZXMKICAgICAgICAgIyBzaG91bGQgbm90IGFmZmVjdCB0aGUgc3RhdGUgb2YgdGhlIGZpbGVvYmplY3QKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgnYScpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnJykKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBmLndyaXRlKFsxXSkKKyAgICAgICAgICAgICAgICBmLndyaXRlKFtdKQogICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhMSkKQEAgLTExOSw3ICsxMjMsMTAgQEAKICAgICAgICAgIyBXcml0ZSB0byBhIGZpbGUsIG9wZW4gaXQgZm9yIHJlYWRpbmcsIHRoZW4gY2xvc2UgaXQuCiAgICAgICAgIHNlbGYudGVzdF93cml0ZSgpCiAgICAgICAgIGYgPSBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICdyJykKKyAgICAgICAgZmlsZW9iaiA9IGYuZmlsZW9iagorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbGVvYmouY2xvc2VkKQogICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVvYmouY2xvc2VkKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgZi5yZWFkKDEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CkBAIC0xMjgsNyArMTM1LDEwIEBACiAgICAgICAgICAgICBmLnRlbGwoKQogICAgICAgICAjIE9wZW4gdGhlIGZpbGUgZm9yIHdyaXRpbmcsIHRoZW4gY2xvc2UgaXQuCiAgICAgICAgIGYgPSBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICd3JykKKyAgICAgICAgZmlsZW9iaiA9IGYuZmlsZW9iagorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbGVvYmouY2xvc2VkKQogICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVvYmouY2xvc2VkKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgZi53cml0ZShiJycpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CkBAIC0yNjcsOSArMjc3LDEwIEBACiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAndycsIG10aW1lID0gbXRpbWUpIGFzIGZXcml0ZToKICAgICAgICAgICAgIGZXcml0ZS53cml0ZShkYXRhMSkKICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGZSZWFkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZlJlYWQsICdtdGltZScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZlJlYWQubXRpbWUpCiAgICAgICAgICAgICBkYXRhUmVhZCA9IGZSZWFkLnJlYWQoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhUmVhZCwgZGF0YTEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihmUmVhZCwgJ210aW1lJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZSZWFkLm10aW1lLCBtdGltZSkKIAogICAgIGRlZiB0ZXN0X21ldGFkYXRhKHNlbGYpOgpAQCAtNDEyLDYgKzQyMywxOCBAQAogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc3RyX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZGF0YTEgKiA1MCkKIAorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKKyAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCisgICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBpby5ERUZBVUxUX0JVRkZFUl9TSVpFKQorCisgICAgICAgIGJvbWIgPSBpby5CeXRlc0lPKGJvbWIpCisgICAgICAgIGRlY29tcCA9IGd6aXAuR3ppcEZpbGUoZmlsZW9iaj1ib21iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCisgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQorCiAgICAgIyBUZXN0aW5nIGNvbXByZXNzL2RlY29tcHJlc3Mgc2hvcnRjdXQgZnVuY3Rpb25zCiAKICAgICBkZWYgdGVzdF9jb21wcmVzcyhzZWxmKToKQEAgLTQ1OSw3ICs0ODIsNyBAQAogICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKICAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGYuZmlsZW9iai5wcmVwZW5kKCkKKyAgICAgICAgICAgIGYuX2J1ZmZlci5yYXcuX2ZwLnByZXBlbmQoKQogCiBjbGFzcyBUZXN0T3BlbihCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CmluZGV4IGY2NDdjNmYuLmFhNGVmYmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEhhc2hhYmxlCiAKIElTXzY0QklUID0gc3lzLm1heHNpemUgPiAyKiozMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weSBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKaW5kZXggYjVhMmZkOC4uYjdlODI1OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CkBAIC02LDE0ICs2LDE1IEBACiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBVbmxlc3MKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKIAogcHlfaGVhcHEgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2hlYXBxJywgYmxvY2tlZD1bJ19oZWFwcSddKQogY19oZWFwcSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnaGVhcHEnLCBmcmVzaD1bJ19oZWFwcSddKQogCiAjIF9oZWFwcS5ubGFyZ2VzdC9uc21hbGxlc3QgYXJlIHNhdmVkIGluIGhlYXBxLl9ubGFyZ2VzdC9fc21hbGxlc3Qgd2hlbgogIyBfaGVhcHEgaXMgaW1wb3J0ZWQsIHNvIGNoZWNrIHRoZW0gdGhlcmUKLWZ1bmNfbmFtZXMgPSBbJ2hlYXBpZnknLCAnaGVhcHBvcCcsICdoZWFwcHVzaCcsICdoZWFwcHVzaHBvcCcsCi0gICAgICAgICAgICAgICdoZWFwcmVwbGFjZScsICdfbmxhcmdlc3QnLCAnX25zbWFsbGVzdCddCitmdW5jX25hbWVzID0gWydoZWFwaWZ5JywgJ2hlYXBwb3AnLCAnaGVhcHB1c2gnLCAnaGVhcHB1c2hwb3AnLCAnaGVhcHJlcGxhY2UnLAorICAgICAgICAgICAgICAnX2hlYXBwb3BfbWF4JywgJ19oZWFwcmVwbGFjZV9tYXgnLCAnX2hlYXBpZnlfbWF4J10KIAogY2xhc3MgVGVzdE1vZHVsZXMoVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3B5X2Z1bmN0aW9ucyhzZWxmKToKQEAgLTY0LDcgKzY1LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGVhcFtwYXJlbnRwb3NdIDw9IGl0ZW0pCiAKICAgICBkZWYgdGVzdF9oZWFwaWZ5KHNlbGYpOgotICAgICAgICBmb3Igc2l6ZSBpbiByYW5nZSgzMCk6CisgICAgICAgIGZvciBzaXplIGluIGxpc3QocmFuZ2UoMzApKSArIFsyMDAwMF06CiAgICAgICAgICAgICBoZWFwID0gW3JhbmRvbS5yYW5kb20oKSBmb3IgZHVtbXkgaW4gcmFuZ2Uoc2l6ZSldCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5oZWFwaWZ5KGhlYXApCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2ludmFyaWFudChoZWFwKQpAQCAtMTUyLDExICsxNTMsMjEgQEAKIAogICAgIGRlZiB0ZXN0X21lcmdlKHNlbGYpOgogICAgICAgICBpbnB1dHMgPSBbXQotICAgICAgICBmb3IgaSBpbiByYW5nZShyYW5kb20ucmFuZHJhbmdlKDUpKToKLSAgICAgICAgICAgIHJvdyA9IHNvcnRlZChyYW5kb20ucmFuZHJhbmdlKDEwMDApIGZvciBqIGluIHJhbmdlKHJhbmRvbS5yYW5kcmFuZ2UoMTApKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocmFuZG9tLnJhbmRyYW5nZSgyNSkpOgorICAgICAgICAgICAgcm93ID0gW10KKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSk6CisgICAgICAgICAgICAgICAgdHVwID0gcmFuZG9tLmNob2ljZSgnQUJDJyksIHJhbmRvbS5yYW5kcmFuZ2UoLTUwMCwgNTAwKQorICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQodHVwKQogICAgICAgICAgICAgaW5wdXRzLmFwcGVuZChyb3cpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGNoYWluKCppbnB1dHMpKSwgbGlzdChzZWxmLm1vZHVsZS5tZXJnZSgqaW5wdXRzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLm1vZHVsZS5tZXJnZSgpKSwgW10pCisKKyAgICAgICAgZm9yIGtleSBpbiBbTm9uZSwgaXRlbWdldHRlcigwKSwgaXRlbWdldHRlcigxKSwgaXRlbWdldHRlcigxLCAwKV06CisgICAgICAgICAgICBmb3IgcmV2ZXJzZSBpbiBbRmFsc2UsIFRydWVdOgorICAgICAgICAgICAgICAgIHNlcXMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBzZXEgaW4gaW5wdXRzOgorICAgICAgICAgICAgICAgICAgICBzZXFzLmFwcGVuZChzb3J0ZWQoc2VxLCBrZXk9a2V5LCByZXZlcnNlPXJldmVyc2UpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGNoYWluKCppbnB1dHMpLCBrZXk9a2V5LCByZXZlcnNlPXJldmVyc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChzZWxmLm1vZHVsZS5tZXJnZSgqc2Vxcywga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYubW9kdWxlLm1lcmdlKCkpLCBbXSkKIAogICAgIGRlZiB0ZXN0X21lcmdlX2RvZXNfbm90X3N1cHByZXNzX2luZGV4X2Vycm9yKHNlbGYpOgogICAgICAgICAjIElzc3VlIDE5MDE4OiBIZWFwcS5tZXJnZSBzdXBwcmVzc2VzIEluZGV4RXJyb3IgZnJvbSB1c2VyIGdlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5IGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CmluZGV4IGNkZTU2ZmQuLjk4ODI2YjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKQEAgLTQ5MywxNCArNDkzLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVGVzdFZlY3RvcnNUZXN0Q2FzZSwKLSAgICAgICAgQ29uc3RydWN0b3JUZXN0Q2FzZSwKLSAgICAgICAgU2FuaXR5VGVzdENhc2UsCi0gICAgICAgIENvcHlUZXN0Q2FzZSwKLSAgICAgICAgQ29tcGFyZURpZ2VzdFRlc3RDYXNlCi0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWwucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWwucHkKaW5kZXggZDZmMGFlOC4uODM5ZTBhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbC5weQpAQCAtNCw3ICs0LDYgQEAKIAogaW1wb3J0IGh0bWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiAKIGNsYXNzIEh0bWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggMTQ0ZjgyMC4uMTE0MjBiMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtODIsNyArODIsNyBAQAogY2xhc3MgVGVzdENhc2VCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIHJldHVybiBFdmVudENvbGxlY3Rvcihjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQogCiAgICAgZGVmIF9ydW5fY2hlY2soc2VsZiwgc291cmNlLCBleHBlY3RlZF9ldmVudHMsIGNvbGxlY3Rvcj1Ob25lKToKICAgICAgICAgaWYgY29sbGVjdG9yIGlzIE5vbmU6CkBAIC0xMDIsMjEgKzEwMiw4IEBACiAgICAgICAgIHNlbGYuX3J1bl9jaGVjayhzb3VyY2UsIGV2ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50Q29sbGVjdG9yRXh0cmEoY29udmVydF9jaGFycmVmcz1GYWxzZSkpCiAKLSAgICBkZWYgX3BhcnNlX2Vycm9yKHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgIGRlZiBwYXJzZShzb3VyY2U9c291cmNlKToKLSAgICAgICAgICAgIHBhcnNlciA9IHNlbGYuZ2V0X2NvbGxlY3RvcigpCi0gICAgICAgICAgICBwYXJzZXIuZmVlZChzb3VyY2UpCi0gICAgICAgICAgICBwYXJzZXIuY2xvc2UoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgIHBhcnNlKCkKIAotCi1jbGFzcyBIVE1MUGFyc2VyU3RyaWN0VGVzdENhc2UoVGVzdENhc2VCYXNlKToKLQotICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWl0ZT1GYWxzZSk6Ci0gICAgICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3Ioc3RyaWN0PVRydWUsIGNvbnZlcnRfY2hhcnJlZnM9RmFsc2UpCitjbGFzcyBIVE1MUGFyc2VyVGVzdENhc2UoVGVzdENhc2VCYXNlKToKIAogICAgIGRlZiB0ZXN0X3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fb25seShzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCI8P3Byb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24+IiwgWwpAQCAtMTk4LDkgKzE4NSw2IEBACiAgICAgICAgICAgICAoImRhdGEiLCAidGhpcyA8IHRleHQgPiBjb250YWlucyA8IGJhcmU+cG9pbnR5PCBicmFja2V0cyIpLAogICAgICAgICAgICAgXSkKIAotICAgIGRlZiB0ZXN0X2lsbGVnYWxfZGVjbGFyYXRpb25zKHNlbGYpOgotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcignPCFzcGFjZXIgdHlwZT0iYmxvY2siIGhlaWdodD0iMjUiPicpCi0KICAgICBkZWYgdGVzdF9zdGFydHRhZ19lbmRfYm91bmRhcnkoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiIiI8YSBiPSc8Jz4iIiIsIFsoInN0YXJ0dGFnIiwgImEiLCBbKCJiIiwgIjwiKV0pXSkKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCIiIjxhIGI9Jz4nPiIiIiwgWygic3RhcnR0YWciLCAiYSIsIFsoImIiLCAiPiIpXSldKQpAQCAtMjM1LDI1ICsyMTksNiBAQAogICAgICAgICBzZWxmLl9ydW5fY2hlY2soWyI8IS0tYWJjLS0iLCAiPiJdLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuX3J1bl9jaGVjayhbIjwhLS1hYmMtLT4iLCAiIl0sIG91dHB1dCkKIAotICAgIGRlZiB0ZXN0X3N0YXJ0dGFnX2p1bmtfY2hhcnMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8Lz4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC8kPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8LyIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8L2EiKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPGE8YT4iKQotICAgICAgICBzZWxmLl9wYXJzZV9lcnJvcigiPC9hPGE+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjwhIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhIGZvbz0nYmFyJyIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSBmb289J2JhciIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSBmb289Jz4nIikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhIGZvbz0nPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSQ+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhJGI+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhJGIvPiIpCi0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8YSRiICA+IikKLSAgICAgICAgc2VsZi5fcGFyc2VfZXJyb3IoIjxhJGIgIC8+IikKLQogICAgIGRlZiB0ZXN0X3ZhbGlkX2RvY3R5cGVzKHNlbGYpOgogICAgICAgICAjIGZyb20gaHR0cDovL3d3dy53My5vcmcvUUEvMjAwMi8wNC92YWxpZC1kdGQtbGlzdC5odG1sCiAgICAgICAgIGR0ZHMgPSBbJ0hUTUwnLCAgIyBIVE1MNSBkb2N0eXBlCkBAIC0yNzgsOSArMjQzLDYgQEAKICAgICAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygiPCFET0NUWVBFICVzPiIgJSBkdGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGVjbCcsICdET0NUWVBFICcgKyBkdGQpXSkKIAotICAgIGRlZiB0ZXN0X2RlY2xhcmF0aW9uX2p1bmtfY2hhcnMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3BhcnNlX2Vycm9yKCI8IURPQ1RZUEUgZm9vICQgPiIpCi0KICAgICBkZWYgdGVzdF9zdGFydGVuZHRhZyhzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCI8cC8+IiwgWwogICAgICAgICAgICAgKCJzdGFydGVuZHRhZyIsICJwIiwgW10pLApAQCAtMzgxLDcgKzM0Myw4IEBACiAgICAgICAgIHNlbGYuX3J1bl9jaGVjayhodG1sLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0X2NvbnZlcnRfY2hhcnJlZnMoc2VsZik6Ci0gICAgICAgIGNvbGxlY3RvciA9IGxhbWJkYTogRXZlbnRDb2xsZWN0b3JDaGFycmVmcyhjb252ZXJ0X2NoYXJyZWZzPVRydWUpCisgICAgICAgICMgZGVmYXVsdCB2YWx1ZSBmb3IgY29udmVydF9jaGFycmVmcyBpcyBub3cgVHJ1ZQorICAgICAgICBjb2xsZWN0b3IgPSBsYW1iZGE6IEV2ZW50Q29sbGVjdG9yQ2hhcnJlZnMoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sbGVjdG9yKCkuY29udmVydF9jaGFycmVmcykKICAgICAgICAgY2hhcnJlZnMgPSBbJyZxdW90OycsICcmIzM0OycsICcmI3gyMjsnLCAnJnF1b3QnLCAnJiMzNCcsICcmI3gyMiddCiAgICAgICAgICMgY2hlY2sgY2hhcnJlZnMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdGV4dC9hdHRyaWJ1dGVzCkBAIC00MTgsMjMgKzM4MSw4IEBACiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygnbm8gY2hhcnJlZnMgaGVyZScsIFsoJ2RhdGEnLCAnbm8gY2hhcnJlZnMgaGVyZScpXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rvcj1jb2xsZWN0b3IoKSkKIAotCi1jbGFzcyBIVE1MUGFyc2VyVG9sZXJhbnRUZXN0Q2FzZShIVE1MUGFyc2VyU3RyaWN0VGVzdENhc2UpOgotCi0gICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBFdmVudENvbGxlY3Rvcihjb252ZXJ0X2NoYXJyZWZzPUZhbHNlKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRpb25fd2FybmluZ3Moc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgRXZlbnRDb2xsZWN0b3IoKSAgIyBjb252ZXJ0X2NoYXJyZWZzIG5vdCBwYXNzZWQgZXhwbGljaXRseQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1GYWxzZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhodG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcik6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICBFdmVudENvbGxlY3RvcigpLmVycm9yKCd0ZXN0JykKLQorICAgICMgdGhlIHJlbWFpbmluZyB0ZXN0cyB3ZXJlIGZvciB0aGUgInRvbGVyYW50IiBwYXJzZXIgKHdoaWNoIGlzIG5vdworICAgICMgdGhlIGRlZmF1bHQpLCBhbmQgY2hlY2sgdmFyaW91cyBraW5kIG9mIGJyb2tlbiBtYXJrdXAKICAgICBkZWYgdGVzdF90b2xlcmFudF9wYXJzaW5nKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soJzxodG1sIDxodG1sPnRlPj54dCZhPDxiYzwvYT48L2h0bWw+XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBzcmM9IlVSTD48Ly9pbWc+PC9odG1sPC9odG1sPicsIFsKQEAgLTY5NSwxMSArNjQzLDcgQEAKICAgICAgICAgKQogCiAKLWNsYXNzIEF0dHJpYnV0ZXNTdHJpY3RUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgotCi0gICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aXRlPUZhbHNlKToKLSAgICAgICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSwgY29udmVydF9jaGFycmVmcz1GYWxzZSkKK2NsYXNzIEF0dHJpYnV0ZXNUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgogCiAgICAgZGVmIHRlc3RfYXR0cl9zeW50YXgoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IFsKQEAgLTc1NiwxMiArNzAwLDYgQEAKICAgICAgICAgICAgIFsoInN0YXJ0dGFnIiwgImh0bWwiLCBbKCJmb28iLCAiXHUyMEFDJmFhJnVuc3VwcG9ydGVkOyIpXSldKQogCiAKLQotY2xhc3MgQXR0cmlidXRlc1RvbGVyYW50VGVzdENhc2UoQXR0cmlidXRlc1N0cmljdFRlc3RDYXNlKToKLQotICAgIGRlZiBnZXRfY29sbGVjdG9yKHNlbGYpOgotICAgICAgICByZXR1cm4gRXZlbnRDb2xsZWN0b3IoY29udmVydF9jaGFycmVmcz1GYWxzZSkKLQogICAgIGRlZiB0ZXN0X2F0dHJfZnVua3lfbmFtZXMyKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soCiAgICAgICAgICAgICAiPGEgJD48YiAkPSU+PGMgXD0vPiIsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CmluZGV4IGM3YjY4MGIuLmQzZTA2YTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVzLnB5CkBAIC0xLDUgKzEsNiBAQAogIyBTaW1wbGUgdGVzdCBzdWl0ZSBmb3IgaHR0cC9jb29raWVzLnB5CiAKK2ltcG9ydCBjb3B5CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBydW5fZG9jdGVzdCwgY2hlY2tfd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSBodHRwIGltcG9ydCBjb29raWVzCkBAIC0xNTQsMTMgKzE1NSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ1snZWdncyddWydodHRwb25seSddLCAnZm9vJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDWydlZ2dzJ11bJ3NlY3VyZSddLCAnYmFyJykKIAotICAgIGRlZiB0ZXN0X2JhZF9hdHRycyhzZWxmKToKLSAgICAgICAgIyBpc3N1ZSAxNjYxMTogbWFrZSBzdXJlIHdlIGRvbid0IGJyZWFrIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0gICAgICAgIEMgPSBjb29raWVzLlNpbXBsZUNvb2tpZSgpCi0gICAgICAgIEMubG9hZCgnY29va2llPXdpdGg7IGludmFsaWQ7IHZlcnNpb247IHNlY29uZD1jb29raWU7JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLm91dHB1dCgpLAotICAgICAgICAgICAgJ1NldC1Db29raWU6IGNvb2tpZT13aXRoXHJcblNldC1Db29raWU6IHNlY29uZD1jb29raWUnKQotCiAgICAgZGVmIHRlc3RfZXh0cmFfc3BhY2VzKHNlbGYpOgogICAgICAgICBDID0gY29va2llcy5TaW1wbGVDb29raWUoKQogICAgICAgICBDLmxvYWQoJ2VnZ3MgID0gIHNjcmFtYmxlZCAgOyAgc2VjdXJlICA7ICBwYXRoICA9ICBiYXIgICA7IGZvbz1mb28gICAnKQpAQCAtMTk1LDcgKzE4OSwxMCBAQAogICAgIGRlZiB0ZXN0X2ludmFsaWRfY29va2llcyhzZWxmKToKICAgICAgICAgIyBBY2NlcHRpbmcgdGhlc2UgY291bGQgYmUgYSBzZWN1cml0eSBpc3N1ZQogICAgICAgICBDID0gY29va2llcy5TaW1wbGVDb29raWUoKQotICAgICAgICBmb3IgcyBpbiAoJ11mb289eCcsICdbZm9vPXgnLCAnYmxhaF1mb289eCcsICdibGFoW2Zvbz14Jyk6CisgICAgICAgIGZvciBzIGluICgnXWZvbz14JywgJ1tmb289eCcsICdibGFoXWZvbz14JywgJ2JsYWhbZm9vPXgnLAorICAgICAgICAgICAgICAgICAgJ1NldC1Db29raWU6IGZvbz1iYXInLCAnU2V0LUNvb2tpZTogZm9vJywKKyAgICAgICAgICAgICAgICAgICdmb289YmFyOyBiYXonLCAnYmF6OyBmb289YmFyJywKKyAgICAgICAgICAgICAgICAgICdzZWN1cmU7Zm9vPWJhcicsICdWZXJzaW9uPTE7Zm9vPWJhcicpOgogICAgICAgICAgICAgQy5sb2FkKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoQyksIHt9KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLm91dHB1dCgpLCAnJykKQEAgLTIxNyw2ICsyMTQsMTUgQEAKIGNsYXNzIE1vcnNlbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0cyBmb3IgdGhlIE1vcnNlbCBvYmplY3QuIiIiCiAKKyAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb3JzZWwua2V5KQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtb3JzZWwudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vcnNlbC5jb2RlZF92YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWwua2V5cygpLCBjb29raWVzLk1vcnNlbC5fcmVzZXJ2ZWQua2V5cygpKQorICAgICAgICBmb3Iga2V5LCB2YWwgaW4gbW9yc2VsLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbCwgJycsIGtleSkKKwogICAgIGRlZiB0ZXN0X3Jlc2VydmVkX2tleXMoc2VsZik6CiAgICAgICAgIE0gPSBjb29raWVzLk1vcnNlbCgpCiAgICAgICAgICMgdGVzdHMgdmFsaWQgYW5kIGludmFsaWQgcmVzZXJ2ZWQga2V5cyBmb3IgTW9yc2VscwpAQCAtMjYwLDYgKzI2NiwxOTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGNvb2tpZXMuQ29va2llRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNLnNldCwgaSwgJyVzX3ZhbHVlJyAlIGksICclc192YWx1ZScgJSBpKQogCisgICAgZGVmIHRlc3RfZGVwcmVjYXRpb24oc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCByJ1xia2V5XGInKToKKyAgICAgICAgICAgIG1vcnNlbC5rZXkgPSAnJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsIHInXGJ2YWx1ZVxiJyk6CisgICAgICAgICAgICBtb3JzZWwudmFsdWUgPSAnJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsIHInXGJjb2RlZF92YWx1ZVxiJyk6CisgICAgICAgICAgICBtb3JzZWwuY29kZWRfdmFsdWUgPSAnJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsIHInXGJMZWdhbENoYXJzXGInKToKKyAgICAgICAgICAgIG1vcnNlbC5zZXQoJ2tleScsICd2YWx1ZScsICdjb2RlZF92YWx1ZScsIExlZ2FsQ2hhcnM9Jy4qJykKKworICAgIGRlZiB0ZXN0X2VxKHNlbGYpOgorICAgICAgICBiYXNlX2Nhc2UgPSAoJ2tleScsICd2YWx1ZScsICcidmFsdWUiJykKKyAgICAgICAgYXR0cmlicyA9IHsKKyAgICAgICAgICAgICdwYXRoJzogJy8nLAorICAgICAgICAgICAgJ2NvbW1lbnQnOiAnZm9vJywKKyAgICAgICAgICAgICdkb21haW4nOiAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ3ZlcnNpb24nOiAyLAorICAgICAgICB9CisgICAgICAgIG1vcnNlbF9hID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYS51cGRhdGUoYXR0cmlicykKKyAgICAgICAgbW9yc2VsX2Euc2V0KCpiYXNlX2Nhc2UpCisgICAgICAgIG1vcnNlbF9iID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWxfYi51cGRhdGUoYXR0cmlicykKKyAgICAgICAgbW9yc2VsX2Iuc2V0KCpiYXNlX2Nhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb3JzZWxfYSA9PSBtb3JzZWxfYikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb3JzZWxfYSAhPSBtb3JzZWxfYikKKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAoJ2tleScsICd2YWx1ZScsICdtaXNtYXRjaCcpLAorICAgICAgICAgICAgKCdrZXknLCAnbWlzbWF0Y2gnLCAnInZhbHVlIicpLAorICAgICAgICAgICAgKCdtaXNtYXRjaCcsICd2YWx1ZScsICcidmFsdWUiJyksCisgICAgICAgICkKKyAgICAgICAgZm9yIGNhc2VfYiBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNhc2VfYik6CisgICAgICAgICAgICAgICAgbW9yc2VsX2IgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgICAgICAgICAgbW9yc2VsX2IudXBkYXRlKGF0dHJpYnMpCisgICAgICAgICAgICAgICAgbW9yc2VsX2Iuc2V0KCpjYXNlX2IpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb3JzZWxfYSA9PSBtb3JzZWxfYikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9yc2VsX2EgIT0gbW9yc2VsX2IpCisKKyAgICAgICAgbW9yc2VsX2IgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbF9iLnVwZGF0ZShhdHRyaWJzKQorICAgICAgICBtb3JzZWxfYi5zZXQoKmJhc2VfY2FzZSkKKyAgICAgICAgbW9yc2VsX2JbJ2NvbW1lbnQnXSA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9yc2VsX2EgPT0gbW9yc2VsX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb3JzZWxfYSAhPSBtb3JzZWxfYikKKworICAgICAgICAjIHRlc3QgbWlzbWF0Y2hlZCB0eXBlcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvb2tpZXMuTW9yc2VsKCkgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvb2tpZXMuTW9yc2VsKCkgIT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb29raWVzLk1vcnNlbCgpID09ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29va2llcy5Nb3JzZWwoKSAhPSAnJykKKyAgICAgICAgaXRlbXMgPSBsaXN0KGNvb2tpZXMuTW9yc2VsKCkuaXRlbXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb29raWVzLk1vcnNlbCgpID09IGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29va2llcy5Nb3JzZWwoKSAhPSBpdGVtcykKKworICAgICAgICAjIG1vcnNlbC9kaWN0CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnNldCgqYmFzZV9jYXNlKQorICAgICAgICBtb3JzZWwudXBkYXRlKGF0dHJpYnMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb3JzZWwgPT0gZGljdChtb3JzZWwpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vcnNlbCAhPSBkaWN0KG1vcnNlbCkpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBtb3JzZWxfYSA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsX2Euc2V0KCdmb28nLCAnYmFyJywgJ2JheicpCisgICAgICAgIG1vcnNlbF9hLnVwZGF0ZSh7CisgICAgICAgICAgICAndmVyc2lvbic6IDIsCisgICAgICAgICAgICAnY29tbWVudCc6ICdmb28nLAorICAgICAgICB9KQorICAgICAgICBtb3JzZWxfYiA9IG1vcnNlbF9hLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9yc2VsX2IsIGNvb2tpZXMuTW9yc2VsKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vcnNlbF9hLCBtb3JzZWxfYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxfYSwgbW9yc2VsX2IpCisKKyAgICAgICAgbW9yc2VsX2IgPSBjb3B5LmNvcHkobW9yc2VsX2EpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb3JzZWxfYiwgY29va2llcy5Nb3JzZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobW9yc2VsX2EsIG1vcnNlbF9iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbF9hLCBtb3JzZWxfYikKKworICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsWydleHBpcmVzJ10gPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sIDApCisgICAgICAgIG1vcnNlbFsnVmVyc2lvbiddID0gMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsndmVyc2lvbiddLCAyKQorICAgICAgICBtb3JzZWxbJ0RPTUFJTiddID0gJ2V4YW1wbGUuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZG9tYWluJ10sICdleGFtcGxlLmNvbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb29raWVzLkNvb2tpZUVycm9yKToKKyAgICAgICAgICAgIG1vcnNlbFsnaW52YWxpZCddID0gJ3ZhbHVlJworICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdpbnZhbGlkJywgbW9yc2VsKQorCisgICAgZGVmIHRlc3Rfc2V0ZGVmYXVsdChzZWxmKToKKyAgICAgICAgbW9yc2VsID0gY29va2llcy5Nb3JzZWwoKQorICAgICAgICBtb3JzZWwudXBkYXRlKHsKKyAgICAgICAgICAgICdkb21haW4nOiAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ3ZlcnNpb24nOiAyLAorICAgICAgICB9KQorICAgICAgICAjIHRoaXMgc2hvdWxkbid0IG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsLnNldGRlZmF1bHQoJ2V4cGlyZXMnLCAndmFsdWUnKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbC5zZXRkZWZhdWx0KCdWZXJzaW9uJywgMSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsLnNldGRlZmF1bHQoJ0RPTUFJTicsICd2YWx1ZScpLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbFsnZG9tYWluJ10sICdleGFtcGxlLmNvbScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhjb29raWVzLkNvb2tpZUVycm9yKToKKyAgICAgICAgICAgIG1vcnNlbC5zZXRkZWZhdWx0KCdpbnZhbGlkJywgJ3ZhbHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaW52YWxpZCcsIG1vcnNlbCkKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgYXR0cmlicyA9IHsnZXhwaXJlcyc6IDEsICdWZXJzaW9uJzogMiwgJ0RPTUFJTic6ICdleGFtcGxlLmNvbSd9CisgICAgICAgICMgdGVzdCBkaWN0IHVwZGF0ZQorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC51cGRhdGUoYXR0cmlicykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2V4cGlyZXMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ3ZlcnNpb24nXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorICAgICAgICAjIHRlc3QgaXRlcmFibGUgdXBkYXRlCisgICAgICAgIG1vcnNlbCA9IGNvb2tpZXMuTW9yc2VsKCkKKyAgICAgICAgbW9yc2VsLnVwZGF0ZShsaXN0KGF0dHJpYnMuaXRlbXMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydleHBpcmVzJ10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWyd2ZXJzaW9uJ10sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yc2VsWydkb21haW4nXSwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgIyB0ZXN0IGl0ZXJhdG9yIHVwZGF0ZQorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC51cGRhdGUoKGssIHYpIGZvciBrLCB2IGluIGF0dHJpYnMuaXRlbXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2V4cGlyZXMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ3ZlcnNpb24nXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb3JzZWxbJ2RvbWFpbiddLCAnZXhhbXBsZS5jb20nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoY29va2llcy5Db29raWVFcnJvcik6CisgICAgICAgICAgICBtb3JzZWwudXBkYXRlKHsnaW52YWxpZCc6ICd2YWx1ZSd9KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdpbnZhbGlkJywgbW9yc2VsKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vcnNlbC51cGRhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9yc2VsLnVwZGF0ZSwgMCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgbW9yc2VsX2EgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbF9hLnNldCgnZm9vJywgJ2JhcicsICdiYXonKQorICAgICAgICBtb3JzZWxfYS51cGRhdGUoeworICAgICAgICAgICAgJ3ZlcnNpb24nOiAyLAorICAgICAgICAgICAgJ2NvbW1lbnQnOiAnZm9vJywKKyAgICAgICAgfSkKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgbW9yc2VsX2IgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG1vcnNlbF9hLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vcnNlbF9iLCBjb29raWVzLk1vcnNlbCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vcnNlbF9iLCBtb3JzZWxfYSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb3JzZWxfYiksIHN0cihtb3JzZWxfYSkpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb3JzZWwpLCAnPE1vcnNlbDogTm9uZT1Ob25lPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG1vcnNlbCksICdTZXQtQ29va2llOiBOb25lPU5vbmUnKQorICAgICAgICBtb3JzZWwuc2V0KCdrZXknLCAndmFsJywgJ2NvZGVkX3ZhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb3JzZWwpLCAnPE1vcnNlbDoga2V5PWNvZGVkX3ZhbD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb3JzZWwpLCAnU2V0LUNvb2tpZToga2V5PWNvZGVkX3ZhbCcpCisgICAgICAgIG1vcnNlbC51cGRhdGUoeworICAgICAgICAgICAgJ3BhdGgnOiAnLycsCisgICAgICAgICAgICAnY29tbWVudCc6ICdmb28nLAorICAgICAgICAgICAgJ2RvbWFpbic6ICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnbWF4LWFnZSc6IDAsCisgICAgICAgICAgICAnc2VjdXJlJzogMCwKKyAgICAgICAgICAgICd2ZXJzaW9uJzogMSwKKyAgICAgICAgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG1vcnNlbCksCisgICAgICAgICAgICAgICAgJzxNb3JzZWw6IGtleT1jb2RlZF92YWw7IENvbW1lbnQ9Zm9vOyBEb21haW49ZXhhbXBsZS5jb207ICcKKyAgICAgICAgICAgICAgICAnTWF4LUFnZT0wOyBQYXRoPS87IFZlcnNpb249MT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb3JzZWwpLAorICAgICAgICAgICAgICAgICdTZXQtQ29va2llOiBrZXk9Y29kZWRfdmFsOyBDb21tZW50PWZvbzsgRG9tYWluPWV4YW1wbGUuY29tOyAnCisgICAgICAgICAgICAgICAgJ01heC1BZ2U9MDsgUGF0aD0vOyBWZXJzaW9uPTEnKQorICAgICAgICBtb3JzZWxbJ3NlY3VyZSddID0gVHJ1ZQorICAgICAgICBtb3JzZWxbJ2h0dHBvbmx5J10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb3JzZWwpLAorICAgICAgICAgICAgICAgICc8TW9yc2VsOiBrZXk9Y29kZWRfdmFsOyBDb21tZW50PWZvbzsgRG9tYWluPWV4YW1wbGUuY29tOyAnCisgICAgICAgICAgICAgICAgJ0h0dHBPbmx5OyBNYXgtQWdlPTA7IFBhdGg9LzsgU2VjdXJlOyBWZXJzaW9uPTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9yc2VsKSwKKyAgICAgICAgICAgICAgICAnU2V0LUNvb2tpZToga2V5PWNvZGVkX3ZhbDsgQ29tbWVudD1mb287IERvbWFpbj1leGFtcGxlLmNvbTsgJworICAgICAgICAgICAgICAgICdIdHRwT25seTsgTWF4LUFnZT0wOyBQYXRoPS87IFNlY3VyZTsgVmVyc2lvbj0xJykKKworICAgICAgICBtb3JzZWwgPSBjb29raWVzLk1vcnNlbCgpCisgICAgICAgIG1vcnNlbC5zZXQoJ2tleScsICd2YWwnLCAnY29kZWRfdmFsJykKKyAgICAgICAgbW9yc2VsWydleHBpcmVzJ10gPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihtb3JzZWwpLAorICAgICAgICAgICAgICAgIHInPE1vcnNlbDoga2V5PWNvZGVkX3ZhbDsgJworICAgICAgICAgICAgICAgIHInZXhwaXJlcz1cdyssIFxkKyBcdysgXGQrIFxkKzpcZCs6XGQrIFx3Kz4nKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihtb3JzZWwpLAorICAgICAgICAgICAgICAgIHInU2V0LUNvb2tpZToga2V5PWNvZGVkX3ZhbDsgJworICAgICAgICAgICAgICAgIHInZXhwaXJlcz1cdyssIFxkKyBcdysgXGQrIFxkKzpcZCs6XGQrIFx3KycpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoQ29va2llVGVzdHMsIE1vcnNlbFRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IGRmOWE5ZTMuLmQ4MDk0MTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTE5LDYgKzE5LDI2IEBACiAjIFNlbGYtc2lnbmVkIGNlcnQgZmlsZSBmb3Igc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQKIENFUlRfc2VsZnNpZ25lZF9weXRob250ZXN0ZG90bmV0ID0gb3MucGF0aC5qb2luKGhlcmUsICdzZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQucGVtJykKIAorIyBjb25zdGFudHMgZm9yIHRlc3RpbmcgY2h1bmtlZCBlbmNvZGluZworY2h1bmtlZF9zdGFydCA9ICgKKyAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKKyAgICAnYVxyXG4nCisgICAgJ2hlbGxvIHdvcmxcclxuJworICAgICczXHJcbicKKyAgICAnZCEgXHJcbicKKyAgICAnOFxyXG4nCisgICAgJ2FuZCBub3cgXHJcbicKKyAgICAnMjJcclxuJworICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKKykKK2NodW5rZWRfZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCitjaHVua19leHRlbnNpb24gPSAiO2Zvbz1iYXIiCitsYXN0X2NodW5rID0gIjBcclxuIgorbGFzdF9jaHVua19leHRlbmRlZCA9ICIwIiArIGNodW5rX2V4dGVuc2lvbiArICJcclxuIgordHJhaWxlcnMgPSAiWC1EdW1teTogZm9vXHJcblgtRHVtbTI6IGJhclxyXG4iCitjaHVua2VkX2VuZCA9ICJcclxuIgorCiBIT1NUID0gc3VwcG9ydC5IT1NUCiAKIGNsYXNzIEZha2VTb2NrZXQ6CkBAIC01MSw2ICs3MSw5IEBACiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBwYXNzCiAKKyAgICBkZWYgc2V0c29ja29wdChzZWxmLCBsZXZlbCwgb3B0bmFtZSwgdmFsdWUpOgorICAgICAgICBwYXNzCisKIGNsYXNzIEVQaXBlU29ja2V0KEZha2VTb2NrZXQpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIHBpcGVfdHJpZ2dlcik6CkBAIC04NCw2ICsxMDcsMjMgQEAKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdjYWxsZXIgdHJpZWQgdG8gcmVhZCBwYXN0IEVPRicpCiAgICAgICAgIHJldHVybiBkYXRhCiAKK2NsYXNzIEZha2VTb2NrZXRIVFRQQ29ubmVjdGlvbihjbGllbnQuSFRUUENvbm5lY3Rpb24pOgorICAgICIiIkhUVFBDb25uZWN0aW9uIHN1YmNsYXNzIHVzaW5nIEZha2VTb2NrZXQ7IGNvdW50cyBjb25uZWN0KCkgY2FsbHMiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgPSAwCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5mYWtlX3NvY2tldF9hcmdzID0gYXJncworICAgICAgICBzZWxmLl9jcmVhdGVfY29ubmVjdGlvbiA9IHNlbGYuY3JlYXRlX2Nvbm5lY3Rpb24KKworICAgIGRlZiBjb25uZWN0KHNlbGYpOgorICAgICAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGNvbm5lY3QoKSBpcyBpbnZva2VkIiIiCisgICAgICAgIHNlbGYuY29ubmVjdGlvbnMgKz0gMQorICAgICAgICByZXR1cm4gc3VwZXIoKS5jb25uZWN0KCkKKworICAgIGRlZiBjcmVhdGVfY29ubmVjdGlvbihzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgcmV0dXJuIEZha2VTb2NrZXQoKnNlbGYuZmFrZV9zb2NrZXRfYXJncykKKwogY2xhc3MgSGVhZGVyVGVzdHMoVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2F1dG9faGVhZGVycyhzZWxmKToKICAgICAgICAgIyBTb21lIGhlYWRlcnMgYXJlIGFkZGVkIGF1dG9tYXRpY2FsbHksIGJ1dCBzaG91bGQgbm90IGJlIGFkZGVkIGJ5CkBAIC01NDgsMjAgKzU4OCw4IEBACiAgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAndGVzdCcsIGNvbm4pCiAKICAgICBkZWYgdGVzdF9jaHVua2VkKHNlbGYpOgotICAgICAgICBjaHVua2VkX3N0YXJ0ID0gKAotICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCi0gICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKLSAgICAgICAgICAgICdhXHJcbicKLSAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKLSAgICAgICAgICAgICczXHJcbicKLSAgICAgICAgICAgICdkISBcclxuJwotICAgICAgICAgICAgJzhcclxuJwotICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKLSAgICAgICAgICAgICcyMlxyXG4nCi0gICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCi0gICAgICAgICkKLSAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQogICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCkBAIC01NjksNyArNTk3LDcgQEAKIAogICAgICAgICAjIFZhcmlvdXMgcmVhZCBzaXplcwogICAgICAgICBmb3IgbiBpbiByYW5nZSgxLCAxMik6Ci0gICAgICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKG4pICsgcmVzcC5yZWFkKCksIGV4cGVjdGVkKQpAQCAtNTkyLDIzICs2MjAsMTIgQEAKICAgICAgICAgICAgICAgICByZXNwLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2NodW5rZWQoc2VsZik6Ci0gICAgICAgIGNodW5rZWRfc3RhcnQgPSAoCi0gICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKLSAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJwotICAgICAgICAgICAgJ2FcclxuJwotICAgICAgICAgICAgJ2hlbGxvIHdvcmxcclxuJwotICAgICAgICAgICAgJzNcclxuJwotICAgICAgICAgICAgJ2QhIFxyXG4nCi0gICAgICAgICAgICAnOFxyXG4nCi0gICAgICAgICAgICAnYW5kIG5vdyBcclxuJwotICAgICAgICAgICAgJzIyXHJcbicKLSAgICAgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XHJcbicKLSAgICAgICAgKQotICAgICAgICBleHBlY3RlZCA9IGInaGVsbG8gd29ybGQhIGFuZCBub3cgZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCcKKworICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQKICAgICAgICAgbmV4cGVjdGVkID0gbGVuKGV4cGVjdGVkKQogICAgICAgICBiID0gYnl0ZWFycmF5KDEyOCkKIAotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQogICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKQEAgLTYxOCw3ICs2MzUsNyBAQAogCiAgICAgICAgICMgVmFyaW91cyByZWFkIHNpemVzCiAgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDEyKToKLSAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyBjaHVua2VkX2VuZCkKICAgICAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKICAgICAgICAgICAgIHJlc3AuYmVnaW4oKQogICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoYikKQEAgLTY1NCw3ICs2NzEsNyBAQAogICAgICAgICAgICAgJzFcclxuJwogICAgICAgICAgICAgJ2RcclxuJwogICAgICAgICApCi0gICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIGNodW5rZWRfZW5kKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkhFQUQiKQogICAgICAgICByZXNwLmJlZ2luKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYicnKQpAQCAtNjc0LDcgKzY5MSw3IEBACiAgICAgICAgICAgICAnMVxyXG4nCiAgICAgICAgICAgICAnZFxyXG4nCiAgICAgICAgICkKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyBsYXN0X2NodW5rICsgY2h1bmtlZF9lbmQpCiAgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iSEVBRCIpCiAgICAgICAgIHJlc3AuYmVnaW4oKQogICAgICAgICBiID0gYnl0ZWFycmF5KDUpCkBAIC03NDksNiArNzY2LDcgQEAKICAgICAgICAgICAgICsgJzAnICogNjU1MzYgKyAnYVxyXG4nCiAgICAgICAgICAgICAnaGVsbG8gd29ybGRcclxuJwogICAgICAgICAgICAgJzBcclxuJworICAgICAgICAgICAgJ1xyXG4nCiAgICAgICAgICkKICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2UoRmFrZVNvY2tldChib2R5KSkKICAgICAgICAgcmVzcC5iZWdpbigpCkBAIC03NjYsMjggKzc4NCw2IEBACiAgICAgICAgIHJlc3AuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5jbG9zZWQpCiAKLSAgICBkZWYgdGVzdF9kZWxheWVkX2Fja19vcHQoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IE5hZ2xlL2RlbGF5ZWRfYWNrIG9wdGltaXN0YWlvbiB3b3JrcyBjb3JyZWN0bHkuCi0KLSAgICAgICAgIyBGb3Igc21hbGwgcGF5bG9hZHMsIGl0IHNob3VsZCBjb2FsZXNjZSB0aGUgYm9keSB3aXRoCi0gICAgICAgICMgaGVhZGVycywgcmVzdWx0aW5nIGluIGEgc2luZ2xlIHNlbmRhbGwoKSBjYWxsCi0gICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKLSAgICAgICAgc29jayA9IEZha2VTb2NrZXQoTm9uZSkKLSAgICAgICAgY29ubi5zb2NrID0gc29jawotICAgICAgICBib2R5ID0gYid4JyAqIChjb25uLm1zcyAtIDEpCi0gICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywgYm9keSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLnNlbmRhbGxfY2FsbHMsIDEpCi0KLSAgICAgICAgIyBGb3IgbGFyZ2UgcGF5bG9hZHMsIGl0IHNob3VsZCBzZW5kIHRoZSBoZWFkZXJzIGFuZAotICAgICAgICAjIHRoZW4gdGhlIGJvZHksIHJlc3VsdGluZyBpbiBtb3JlIHRoYW4gb25lIHNlbmRhbGwoKQotICAgICAgICAjIGNhbGwKLSAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQotICAgICAgICBzb2NrID0gRmFrZVNvY2tldChOb25lKQotICAgICAgICBjb25uLnNvY2sgPSBzb2NrCi0gICAgICAgIGJvZHkgPSBiJ3gnICogY29ubi5tc3MKLSAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy8nLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc29jay5zZW5kYWxsX2NhbGxzLCAxKQotCiAgICAgZGVmIHRlc3RfZXJyb3JfbGVhayhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHNvY2tldCBpcyBub3QgbGVha2VkIGlmIGdldHJlc3BvbnNlKCkgZmFpbHMKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQpAQCAtNzk4LDEyICs3OTQsMjQ1IEBACiAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmICAjIEF2b2lkIGdhcmJhZ2UgY29sbGVjdG9yIGNsb3NpbmcgdGhlIHNvY2tldAogICAgICAgICAgICAgICAgIGNsaWVudC5IVFRQUmVzcG9uc2UuX19pbml0X18oc2VsZiwgKnBvcywgKiprdykKICAgICAgICAgY29ubi5yZXNwb25zZV9jbGFzcyA9IFJlc3BvbnNlCi0gICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoJycpICAjIEVtdWxhdGUgc2VydmVyIGRyb3BwaW5nIGNvbm5lY3Rpb24KKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldCgnSW52YWxpZCBzdGF0dXMgbGluZScpCiAgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhjbGllbnQuQmFkU3RhdHVzTGluZSwgY29ubi5nZXRyZXNwb25zZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbm4uc29jay5maWxlX2Nsb3NlZCkKIAorICAgIGRlZiB0ZXN0X2NodW5rZWRfZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICBleHRyYSA9ICczO2Zvbz1iYXJcclxuJyArICdhYmNcclxuJworICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQgKyBiJ2FiYycKKworICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgZXh0cmEgKyBsYXN0X2NodW5rX2V4dGVuZGVkICsgY2h1bmtlZF9lbmQpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICByZXNwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NodW5rZWRfbWlzc2luZ19lbmQoc2VsZik6CisgICAgICAgICIiInNvbWUgc2VydmVycyBtYXkgc2VydmUgdXAgYSBzaG9ydCBjaHVua2VkIGVuY29kaW5nIHN0cmVhbSIiIgorICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmspICAjbm8gdGVybWluYXRpbmcgY3JsZgorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jaHVua2VkX3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAiIiJTZWUgdGhhdCB0cmFpbGVycyBhcmUgcmVhZCBhbmQgaWdub3JlZCIiIgorICAgICAgICBleHBlY3RlZCA9IGNodW5rZWRfZXhwZWN0ZWQKKyAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArIGxhc3RfY2h1bmsgKyB0cmFpbGVycyArIGNodW5rZWRfZW5kKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgIyB3ZSBzaG91bGQgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZpbGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmZpbGUucmVhZCgxMDApLCBiIiIpICN3ZSByZWFkIHRvIHRoZSBlbmQKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jaHVua2VkX3N5bmMoc2VsZik6CisgICAgICAgICIiIkNoZWNrIHRoYXQgd2UgZG9uJ3QgcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGNodW5rZWQtZW5jb2Rpbmcgc3RyZWFtIiIiCisgICAgICAgIGV4cGVjdGVkID0gY2h1bmtlZF9leHBlY3RlZAorICAgICAgICBleHRyYWRhdGEgPSAiZXh0cmFkYXRhIgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgbGFzdF9jaHVuayArIHRyYWlsZXJzICsgY2h1bmtlZF9lbmQgKyBleHRyYWRhdGEpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICAjIHRoZSBmaWxlIHNob3VsZCBub3cgaGF2ZSBvdXIgZXh0cmFkYXRhIHJlYWR5IHRvIGJlIHJlYWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLmZpbGUucmVhZCgxMDApLCBleHRyYWRhdGEuZW5jb2RlKCJhc2NpaSIpKSAjd2UgcmVhZCB0byB0aGUgZW5kCisgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY29udGVudF9sZW5ndGhfc3luYyhzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCB3ZSBkb24ndCByZWFkIHBhc3QgdGhlIGVuZCBvZiB0aGUgQ29udGVudC1MZW5ndGggc3RyZWFtIiIiCisgICAgICAgIGV4dHJhZGF0YSA9ICJleHRyYWRhdGEiCisgICAgICAgIGV4cGVjdGVkID0gYiJIZWxsbzEyM1xyXG4iCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KCdIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6IDEwXHJcblxyXG5IZWxsbzEyM1xyXG4nICsgZXh0cmFkYXRhKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgIyB0aGUgZmlsZSBzaG91bGQgbm93IGhhdmUgb3VyIGV4dHJhZGF0YSByZWFkeSB0byBiZSByZWFkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5maWxlLnJlYWQoMTAwKSwgZXh0cmFkYXRhLmVuY29kZSgiYXNjaWkiKSkgI3dlIHJlYWQgdG8gdGhlIGVuZAorICAgICAgICByZXNwLmNsb3NlKCkKKworY2xhc3MgRXh0ZW5kZWRSZWFkVGVzdChUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBwZWVrKCksIHJlYWQxKCksIHJlYWRsaW5lKCkKKyAgICAiIiIKKyAgICBsaW5lcyA9ICgKKyAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICdcclxuJworICAgICAgICAnaGVsbG8gd29ybGQhXG4nCisgICAgICAgICdhbmQgbm93IFxuJworICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxuJworICAgICAgICAnZm9vJworICAgICAgICApCisgICAgbGluZXNfZXhwZWN0ZWQgPSBsaW5lc1tsaW5lcy5maW5kKCdoZWxsbycpOl0uZW5jb2RlKCJhc2NpaSIpCisgICAgbGluZXNfY2h1bmtlZCA9ICgKKyAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICAgICAnYVxyXG4nCisgICAgICAgICdoZWxsbyB3b3JsXHJcbicKKyAgICAgICAgJzNcclxuJworICAgICAgICAnZCFcblxyXG4nCisgICAgICAgICc5XHJcbicKKyAgICAgICAgJ2FuZCBub3cgXG5cclxuJworICAgICAgICAnMjNcclxuJworICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxuXHJcbicKKyAgICAgICAgJzNcclxuJworICAgICAgICAnZm9vXHJcbicKKyAgICAgICAgJzBcclxuJyAjIHRlcm1pbmF0aW5nIGNodW5rCisgICAgICAgICdcclxuJyAgIyBlbmQgb2YgdHJhaWxlcnMKKyAgICApCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KHNlbGYubGluZXMpCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iR0VUIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIHJlc3AuZnAgPSBpby5CdWZmZXJlZFJlYWRlcihyZXNwLmZwKQorICAgICAgICBzZWxmLnJlc3AgPSByZXNwCisKKworCisgICAgZGVmIHRlc3RfcGVlayhzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYucmVzcAorICAgICAgICAjIHBhdGNoIHVwIHRoZSBidWZmZXJlZCBwZWVrIHNvIHRoYXQgaXQgcmV0dXJucyBub3QgdG9vIG11Y2ggc3R1ZmYKKyAgICAgICAgb2xkcGVlayA9IHJlc3AuZnAucGVlaworICAgICAgICBkZWYgbXlwZWVrKG49LTEpOgorICAgICAgICAgICAgcCA9IG9sZHBlZWsobikKKyAgICAgICAgICAgIGlmIG4gPj0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcFs6bl0KKyAgICAgICAgICAgIHJldHVybiBwWzoxMF0KKyAgICAgICAgcmVzcC5mcC5wZWVrID0gbXlwZWVrCisKKyAgICAgICAgYWxsID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICMgdHJ5IGEgc2hvcnQgcGVlaworICAgICAgICAgICAgcCA9IHJlc3AucGVlaygzKQorICAgICAgICAgICAgaWYgcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHApLCAwKQorICAgICAgICAgICAgICAgICMgdGhlbiB1bmJvdW5kZWQgcGVlaworICAgICAgICAgICAgICAgIHAyID0gcmVzcC5wZWVrKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4ocDIpLCBsZW4ocCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAyLnN0YXJ0c3dpdGgocCkpCisgICAgICAgICAgICAgICAgbmV4dCA9IHJlc3AucmVhZChsZW4ocDIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dCwgcDIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5leHQgPSByZXNwLnJlYWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV4dCkKKyAgICAgICAgICAgIGFsbC5hcHBlbmQobmV4dCkKKyAgICAgICAgICAgIGlmIG5vdCBuZXh0OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYWxsKSwgc2VsZi5saW5lc19leHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgIHNlbGYuX3ZlcmlmeV9yZWFkbGluZShzZWxmLnJlc3AucmVhZGxpbmUsIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgX3ZlcmlmeV9yZWFkbGluZShzZWxmLCByZWFkbGluZSwgZXhwZWN0ZWQpOgorICAgICAgICBhbGwgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBzaG9ydCByZWFkbGluZXMKKyAgICAgICAgICAgIGxpbmUgPSByZWFkbGluZSg1KQorICAgICAgICAgICAgaWYgbGluZSBhbmQgbGluZSAhPSBiImZvbyI6CisgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUpIDwgNToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUuZW5kc3dpdGgoYiJcbiIpKQorICAgICAgICAgICAgYWxsLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihhbGwpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlYWQxKHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXNwCisgICAgICAgIGRlZiByKCk6CisgICAgICAgICAgICByZXMgPSByZXNwLnJlYWQxKDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ocmVzKSwgNCkKKyAgICAgICAgICAgIHJldHVybiByZXMKKyAgICAgICAgcmVhZGxpbmVyID0gUmVhZGxpbmVyKHIpCisgICAgICAgIHNlbGYuX3ZlcmlmeV9yZWFkbGluZShyZWFkbGluZXIucmVhZGxpbmUsIHNlbGYubGluZXNfZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWFkMV91bmJvdW5kZWQoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLnJlc3AKKyAgICAgICAgYWxsID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgPSByZXNwLnJlYWQxKCkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBhbGwuYXBwZW5kKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYWxsKSwgc2VsZi5saW5lc19leHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlYWQxX2JvdW5kZWQoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLnJlc3AKKyAgICAgICAgYWxsID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRhdGEgPSByZXNwLnJlYWQxKDEwKQorICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihkYXRhKSwgMTApCisgICAgICAgICAgICBhbGwuYXBwZW5kKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYWxsKSwgc2VsZi5saW5lc19leHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlYWQxXzAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZXNwLnJlYWQxKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9wZWVrXzAoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLnJlc3AucGVlaygwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCgwLCBsZW4ocCkpCisKK2NsYXNzIEV4dGVuZGVkUmVhZFRlc3RDaHVua2VkKEV4dGVuZGVkUmVhZFRlc3QpOgorICAgICIiIgorICAgIFRlc3QgcGVlaygpLCByZWFkMSgpLCByZWFkbGluZSgpIGluIGNodW5rZWQgbW9kZQorICAgICIiIgorICAgIGxpbmVzID0gKAorICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICdhXHJcbicKKyAgICAgICAgJ2hlbGxvIHdvcmxcclxuJworICAgICAgICAnM1xyXG4nCisgICAgICAgICdkIVxuXHJcbicKKyAgICAgICAgJzlcclxuJworICAgICAgICAnYW5kIG5vdyBcblxyXG4nCisgICAgICAgICcyM1xyXG4nCisgICAgICAgICdmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50XG5cclxuJworICAgICAgICAnM1xyXG4nCisgICAgICAgICdmb29cclxuJworICAgICAgICAnMFxyXG4nICMgdGVybWluYXRpbmcgY2h1bmsKKyAgICAgICAgJ1xyXG4nICAjIGVuZCBvZiB0cmFpbGVycworICAgICkKKworCitjbGFzcyBSZWFkbGluZXI6CisgICAgIiIiCisgICAgYSBzaW1wbGUgcmVhZGxpbmUgY2xhc3MgdGhhdCB1c2VzIGFuIGFyYml0cmFyeSByZWFkIGZ1bmN0aW9uIGFuZCBidWZmZXJpbmcKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGZ1bmMpOgorICAgICAgICBzZWxmLnJlYWRmdW5jID0gcmVhZGZ1bmMKKyAgICAgICAgc2VsZi5yZW1haW5kZXIgPSBiIiIKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBsaW1pdCk6CisgICAgICAgIGRhdGEgPSBbXQorICAgICAgICBkYXRhbGVuID0gMAorICAgICAgICByZWFkID0gc2VsZi5yZW1haW5kZXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBpZHggPSByZWFkLmZpbmQoYidcbicpCisgICAgICAgICAgICAgICAgaWYgaWR4ICE9IC0xOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIGRhdGFsZW4gKyBsZW4ocmVhZCkgPj0gbGltaXQ6CisgICAgICAgICAgICAgICAgICAgIGlkeCA9IGxpbWl0IC0gZGF0YWxlbiAtIDEKKyAgICAgICAgICAgICAgICAjIHJlYWQgbW9yZSBkYXRhCisgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQocmVhZCkKKyAgICAgICAgICAgICAgICByZWFkID0gc2VsZi5yZWFkZnVuYygpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6CisgICAgICAgICAgICAgICAgICAgIGlkeCA9IDAgI2VvZiBjb25kaXRpb24KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlkeCArPSAxCisgICAgICAgICAgICBkYXRhLmFwcGVuZChyZWFkWzppZHhdKQorICAgICAgICAgICAgc2VsZi5yZW1haW5kZXIgPSByZWFkW2lkeDpdCisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oZGF0YSkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc2VsZi5yZW1haW5kZXIgPSBiIiIuam9pbihkYXRhKQorICAgICAgICAgICAgcmFpc2UKKwogCiBjbGFzcyBPZmZsaW5lVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgpAQCAtODIzLDEzICsxMDUyLDc0IEBACiAgICAgZGVmIHRlc3RfcmVzcG9uc2VzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNsaWVudC5yZXNwb25zZXNbY2xpZW50Lk5PVF9GT1VORF0sICJOb3QgRm91bmQiKQogCisgICAgZGVmIHRlc3RfY2xpZW50X2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgYnJlYWsgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIDMuNAorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICdDT05USU5VRScsCisgICAgICAgICAgICAnU1dJVENISU5HX1BST1RPQ09MUycsCisgICAgICAgICAgICAnUFJPQ0VTU0lORycsCisgICAgICAgICAgICAnT0snLAorICAgICAgICAgICAgJ0NSRUFURUQnLAorICAgICAgICAgICAgJ0FDQ0VQVEVEJywKKyAgICAgICAgICAgICdOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTicsCisgICAgICAgICAgICAnTk9fQ09OVEVOVCcsCisgICAgICAgICAgICAnUkVTRVRfQ09OVEVOVCcsCisgICAgICAgICAgICAnUEFSVElBTF9DT05URU5UJywKKyAgICAgICAgICAgICdNVUxUSV9TVEFUVVMnLAorICAgICAgICAgICAgJ0lNX1VTRUQnLAorICAgICAgICAgICAgJ01VTFRJUExFX0NIT0lDRVMnLAorICAgICAgICAgICAgJ01PVkVEX1BFUk1BTkVOVExZJywKKyAgICAgICAgICAgICdGT1VORCcsCisgICAgICAgICAgICAnU0VFX09USEVSJywKKyAgICAgICAgICAgICdOT1RfTU9ESUZJRUQnLAorICAgICAgICAgICAgJ1VTRV9QUk9YWScsCisgICAgICAgICAgICAnVEVNUE9SQVJZX1JFRElSRUNUJywKKyAgICAgICAgICAgICdCQURfUkVRVUVTVCcsCisgICAgICAgICAgICAnVU5BVVRIT1JJWkVEJywKKyAgICAgICAgICAgICdQQVlNRU5UX1JFUVVJUkVEJywKKyAgICAgICAgICAgICdGT1JCSURERU4nLAorICAgICAgICAgICAgJ05PVF9GT1VORCcsCisgICAgICAgICAgICAnTUVUSE9EX05PVF9BTExPV0VEJywKKyAgICAgICAgICAgICdOT1RfQUNDRVBUQUJMRScsCisgICAgICAgICAgICAnUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQnLAorICAgICAgICAgICAgJ1JFUVVFU1RfVElNRU9VVCcsCisgICAgICAgICAgICAnQ09ORkxJQ1QnLAorICAgICAgICAgICAgJ0dPTkUnLAorICAgICAgICAgICAgJ0xFTkdUSF9SRVFVSVJFRCcsCisgICAgICAgICAgICAnUFJFQ09ORElUSU9OX0ZBSUxFRCcsCisgICAgICAgICAgICAnUkVRVUVTVF9FTlRJVFlfVE9PX0xBUkdFJywKKyAgICAgICAgICAgICdSRVFVRVNUX1VSSV9UT09fTE9ORycsCisgICAgICAgICAgICAnVU5TVVBQT1JURURfTUVESUFfVFlQRScsCisgICAgICAgICAgICAnUkVRVUVTVEVEX1JBTkdFX05PVF9TQVRJU0ZJQUJMRScsCisgICAgICAgICAgICAnRVhQRUNUQVRJT05fRkFJTEVEJywKKyAgICAgICAgICAgICdVTlBST0NFU1NBQkxFX0VOVElUWScsCisgICAgICAgICAgICAnTE9DS0VEJywKKyAgICAgICAgICAgICdGQUlMRURfREVQRU5ERU5DWScsCisgICAgICAgICAgICAnVVBHUkFERV9SRVFVSVJFRCcsCisgICAgICAgICAgICAnUFJFQ09ORElUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgICAgICdUT09fTUFOWV9SRVFVRVNUUycsCisgICAgICAgICAgICAnUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRScsCisgICAgICAgICAgICAnSU5URVJOQUxfU0VSVkVSX0VSUk9SJywKKyAgICAgICAgICAgICdOT1RfSU1QTEVNRU5URUQnLAorICAgICAgICAgICAgJ0JBRF9HQVRFV0FZJywKKyAgICAgICAgICAgICdTRVJWSUNFX1VOQVZBSUxBQkxFJywKKyAgICAgICAgICAgICdHQVRFV0FZX1RJTUVPVVQnLAorICAgICAgICAgICAgJ0hUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEJywKKyAgICAgICAgICAgICdJTlNVRkZJQ0lFTlRfU1RPUkFHRScsCisgICAgICAgICAgICAnTk9UX0VYVEVOREVEJywKKyAgICAgICAgICAgICdORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEJywKKyAgICAgICAgXQorICAgICAgICBmb3IgY29uc3QgaW4gZXhwZWN0ZWQ6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb25zdGFudD1jb25zdCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoY2xpZW50LCBjb25zdCkpCisKIAogY2xhc3MgU291cmNlQWRkcmVzc1Rlc3QoVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCiAgICAgICAgIHNlbGYuc291cmNlX3BvcnQgPSBzdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKQotICAgICAgICBzZWxmLnNlcnYubGlzdGVuKDUpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oKQogICAgICAgICBzZWxmLmNvbm4gPSBOb25lCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC04NjEsNyArMTE1MSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIFRpbWVvdXRUZXN0LlBPUlQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCi0gICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCkBAIC05MDEsNiArMTE5MSw3OCBAQAogICAgICAgICBodHRwQ29ubi5jbG9zZSgpCiAKIAorY2xhc3MgUGVyc2lzdGVuY2VUZXN0KFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3JldXNlX3JlY29ubmVjdChzZWxmKToKKyAgICAgICAgIyBTaG91bGQgcmV1c2Ugb3IgcmVjb25uZWN0IGRlcGVuZGluZyBvbiBoZWFkZXIgZnJvbSBzZXJ2ZXIKKyAgICAgICAgdGVzdHMgPSAoCisgICAgICAgICAgICAoJzEuMCcsICcnLCBGYWxzZSksCisgICAgICAgICAgICAoJzEuMCcsICdDb25uZWN0aW9uOiBrZWVwLWFsaXZlXHJcbicsIFRydWUpLAorICAgICAgICAgICAgKCcxLjEnLCAnJywgVHJ1ZSksCisgICAgICAgICAgICAoJzEuMScsICdDb25uZWN0aW9uOiBjbG9zZVxyXG4nLCBGYWxzZSksCisgICAgICAgICAgICAoJzEuMCcsICdDb25uZWN0aW9uOiBrZWVwLUFMSVZFXHJcbicsIFRydWUpLAorICAgICAgICAgICAgKCcxLjEnLCAnQ29ubmVjdGlvbjogY2xvU0VcclxuJywgRmFsc2UpLAorICAgICAgICApCisgICAgICAgIGZvciB2ZXJzaW9uLCBoZWFkZXIsIHJldXNlIGluIHRlc3RzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmVyc2lvbj12ZXJzaW9uLCBoZWFkZXI9aGVhZGVyKToKKyAgICAgICAgICAgICAgICBtc2cgPSAoCisgICAgICAgICAgICAgICAgICAgICdIVFRQL3t9IDIwMCBPS1xyXG4nCisgICAgICAgICAgICAgICAgICAgICd7fScKKyAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoOiAxMlxyXG4nCisgICAgICAgICAgICAgICAgICAgICdcclxuJworICAgICAgICAgICAgICAgICAgICAnRHVtbXkgYm9keVxyXG4nCisgICAgICAgICAgICAgICAgKS5mb3JtYXQodmVyc2lvbiwgaGVhZGVyKQorICAgICAgICAgICAgICAgIGNvbm4gPSBGYWtlU29ja2V0SFRUUENvbm5lY3Rpb24obXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbm4uc29jaykKKyAgICAgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvb3Blbi1jb25uZWN0aW9uJykKKyAgICAgICAgICAgICAgICB3aXRoIGNvbm4uZ2V0cmVzcG9uc2UoKSBhcyByZXNwb25zZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnNvY2sgaXMgTm9uZSwgbm90IHJldXNlKQorICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWFkKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uc29jayBpcyBOb25lLCBub3QgcmV1c2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLmNvbm5lY3Rpb25zLCAxKQorICAgICAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgnR0VUJywgJy9zdWJzZXF1ZW50LXJlcXVlc3QnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5jb25uZWN0aW9ucywgMSBpZiByZXVzZSBlbHNlIDIpCisKKyAgICBkZWYgdGVzdF9kaXNjb25uZWN0ZWQoc2VsZik6CisKKyAgICAgICAgZGVmIG1ha2VfcmVzZXRfcmVhZGVyKHRleHQpOgorICAgICAgICAgICAgIiIiUmV0dXJuIEJ1ZmZlcmVkUmVhZGVyIHRoYXQgcmFpc2VzIEVDT05OUkVTRVQgYXQgRU9GIiIiCisgICAgICAgICAgICBzdHJlYW0gPSBpby5CeXRlc0lPKHRleHQpCisgICAgICAgICAgICBkZWYgcmVhZGludG8oYnVmZmVyKToKKyAgICAgICAgICAgICAgICBzaXplID0gaW8uQnl0ZXNJTy5yZWFkaW50byhzdHJlYW0sIGJ1ZmZlcikKKyAgICAgICAgICAgICAgICBpZiBzaXplID09IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25SZXNldEVycm9yKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZQorICAgICAgICAgICAgc3RyZWFtLnJlYWRpbnRvID0gcmVhZGludG8KKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZFJlYWRlcihzdHJlYW0pCisKKyAgICAgICAgdGVzdHMgPSAoCisgICAgICAgICAgICAoaW8uQnl0ZXNJTywgY2xpZW50LlJlbW90ZURpc2Nvbm5lY3RlZCksCisgICAgICAgICAgICAobWFrZV9yZXNldF9yZWFkZXIsIENvbm5lY3Rpb25SZXNldEVycm9yKSwKKyAgICAgICAgKQorICAgICAgICBmb3Igc3RyZWFtX2ZhY3RvcnksIGV4Y2VwdGlvbiBpbiB0ZXN0czoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGV4Y2VwdGlvbj1leGNlcHRpb24pOgorICAgICAgICAgICAgICAgIGNvbm4gPSBGYWtlU29ja2V0SFRUUENvbm5lY3Rpb24oYicnLCBzdHJlYW1fZmFjdG9yeSkKKyAgICAgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvZW9mLXJlc3BvbnNlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGNlcHRpb24sIGNvbm4uZ2V0cmVzcG9uc2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29ubi5zb2NrKQorICAgICAgICAgICAgICAgICMgSFRUUENvbm5lY3Rpb24uY29ubmVjdCgpIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGludm9rZWQKKyAgICAgICAgICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvcmVjb25uZWN0JykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4uY29ubmVjdGlvbnMsIDIpCisKKyAgICBkZWYgdGVzdF8xMDBfY2xvc2Uoc2VsZik6CisgICAgICAgIGNvbm4gPSBGYWtlU29ja2V0SFRUUENvbm5lY3Rpb24oCisgICAgICAgICAgICBiJ0hUVFAvMS4xIDEwMCBDb250aW51ZVxyXG4nCisgICAgICAgICAgICBiJ1xyXG4nCisgICAgICAgICAgICAjIE1pc3NpbmcgZmluYWwgcmVzcG9uc2UKKyAgICAgICAgKQorICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvJywgaGVhZGVycz17J0V4cGVjdCc6ICcxMDAtY29udGludWUnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoY2xpZW50LlJlbW90ZURpc2Nvbm5lY3RlZCwgY29ubi5nZXRyZXNwb25zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29ubi5zb2NrKQorICAgICAgICBjb25uLnJlcXVlc3QoJ0dFVCcsICcvcmVjb25uZWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLmNvbm5lY3Rpb25zLCAyKQorCisKIGNsYXNzIEhUVFBTVGVzdChUZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xMTcxLDE3ICsxNTMzLDE4IEBACiAgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicgIyBSZXBseSB0byBIRUFECiAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDQyXHJcblxyXG4nCiAgICAgICAgICkKLQotICAgICAgICBkZWYgY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKToKLSAgICAgICAgICAgIHJldHVybiBGYWtlU29ja2V0KHJlc3BvbnNlX3RleHQsIGhvc3Q9YWRkcmVzc1swXSwgcG9ydD1hZGRyZXNzWzFdKQotCiAgICAgICAgIHNlbGYuaG9zdCA9ICdwcm94eS5jb20nCiAgICAgICAgIHNlbGYuY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbihzZWxmLmhvc3QpCi0gICAgICAgIHNlbGYuY29ubi5fY3JlYXRlX2Nvbm5lY3Rpb24gPSBjcmVhdGVfY29ubmVjdGlvbgorICAgICAgICBzZWxmLmNvbm4uX2NyZWF0ZV9jb25uZWN0aW9uID0gc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24ocmVzcG9uc2VfdGV4dCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5jb25uLmNsb3NlKCkKIAorICAgIGRlZiBfY3JlYXRlX2Nvbm5lY3Rpb24oc2VsZiwgcmVzcG9uc2VfdGV4dCk6CisgICAgICAgIGRlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgorICAgICAgICAgICAgcmV0dXJuIEZha2VTb2NrZXQocmVzcG9uc2VfdGV4dCwgaG9zdD1hZGRyZXNzWzBdLCBwb3J0PWFkZHJlc3NbMV0pCisgICAgICAgIHJldHVybiBjcmVhdGVfY29ubmVjdGlvbgorCiAgICAgZGVmIHRlc3Rfc2V0X3R1bm5lbF9ob3N0X3BvcnRfaGVhZGVycyhzZWxmKToKICAgICAgICAgdHVubmVsX2hvc3QgPSAnZGVzdGluYXRpb24uY29tJwogICAgICAgICB0dW5uZWxfcG9ydCA9IDg4ODgKQEAgLTEyMjIsMTMgKzE1ODUsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ0NPTk5FQ1QgZGVzdGluYXRpb24uY29tJywgc2VsZi5jb25uLnNvY2suZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ0hvc3Q6IGRlc3RpbmF0aW9uLmNvbScsIHNlbGYuY29ubi5zb2NrLmRhdGEpCiAKKyAgICBkZWYgdGVzdF90dW5uZWxfZGVidWdsb2coc2VsZik6CisgICAgICAgIGV4cGVjdGVkX2hlYWRlciA9ICdYLUR1bW15OiAxJworICAgICAgICByZXNwb25zZV90ZXh0ID0gJ0hUVFAvMS4wIDIwMCBPS1xyXG57fVxyXG5cclxuJy5mb3JtYXQoZXhwZWN0ZWRfaGVhZGVyKQorCisgICAgICAgIHNlbGYuY29ubi5zZXRfZGVidWdsZXZlbCgxKQorICAgICAgICBzZWxmLmNvbm4uX2NyZWF0ZV9jb25uZWN0aW9uID0gc2VsZi5fY3JlYXRlX2Nvbm5lY3Rpb24ocmVzcG9uc2VfdGV4dCkKKyAgICAgICAgc2VsZi5jb25uLnNldF90dW5uZWwoJ2Rlc3RpbmF0aW9uLmNvbScpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCdQVVQnLCAnLycsICcnKQorICAgICAgICBsaW5lcyA9IG91dHB1dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdoZWFkZXI6IHt9Jy5mb3JtYXQoZXhwZWN0ZWRfaGVhZGVyKSwgbGluZXMpCiAKIAogQHN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVhZGVyVGVzdHMsIE9mZmxpbmVUZXN0LCBCYXNpY1Rlc3QsIFRpbWVvdXRUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNpc3RlbmNlVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQU1Rlc3QsIFJlcXVlc3RCb2R5VGVzdCwgU291cmNlQWRkcmVzc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFJlc3BvbnNlVGVzdCwgVHVubmVsVGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFJlc3BvbnNlVGVzdCwgRXh0ZW5kZWRSZWFkVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbmRlZFJlYWRUZXN0Q2h1bmtlZCwgVHVubmVsVGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDc0ZTA3MTQuLjUxOGUzOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtNiw3ICs2LDcgQEAKIAogZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgSFRUUFNlcnZlciwgXAogICAgICBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIsIENHSUhUVFBSZXF1ZXN0SGFuZGxlcgotZnJvbSBodHRwIGltcG9ydCBzZXJ2ZXIKK2Zyb20gaHR0cCBpbXBvcnQgc2VydmVyLCBIVFRQU3RhdHVzCiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtNzksMTMgKzc5LDEzIEBACiAgICAgICAgIGRlZmF1bHRfcmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJwogCiAgICAgICAgIGRlZiBkb19URVNUKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwNCkKKyAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk5PX0NPTlRFTlQpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJykKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0Nvbm5lY3Rpb24nLCAnY2xvc2UnKQogICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAKICAgICAgICAgZGVmIGRvX0tFRVAoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjA0KQorICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKEhUVFBTdGF0dXMuTk9fQ09OVEVOVCkKICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcignQ29ubmVjdGlvbicsICdrZWVwLWFsaXZlJykKICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDk5OSkKIAogICAgICAgICBkZWYgZG9fTk9URk9VTkQoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDA0KQorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogCiAgICAgICAgIGRlZiBkb19FWFBMQUlORVJST1Ioc2VsZik6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoOTk5LCAiU2hvcnQgTWVzc2FnZSIsCkBAIC0xMjIsMzUgKzEyMiwzNSBAQAogICAgIGRlZiB0ZXN0X2NvbW1hbmQoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogICAgIGRlZiB0ZXN0X3JlcXVlc3RfbGluZV90cmltbWluZyhzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdIVFRQLzEuMVxuJwogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdYWVpCT0dVUycsICcvJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2JvZ3VzKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJ0ZVQkFSJwogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2RpZ2l0cyhzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdIVFRQLzkuOS45JwogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vbmVfZ2V0KHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJycKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5lbmRoZWFkZXJzKCkKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDUwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb25fbm9uZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgYSB2YWxpZCBtZXRob2QgaXMgcmVqZWN0ZWQgd2hlbiBub3QgSFRUUC8xLngKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdDVVNUT00nLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2ludmFsaWQoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3ZzbiA9IDk5CkBAIC0xNjYsMjEgKzE2NiwyMSBAQAogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQpCiAKICAgICBkZWYgdGVzdF9zZW5kX2JsYW5rKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJycKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnJywgJycpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QpCiAKICAgICBkZWYgdGVzdF9oZWFkZXJfY2xvc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2Nsb3NlJykKICAgICAgICAgc2VsZi5jb24uZW5kaGVhZGVycygpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA1MDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKICAgICBkZWYgdGVzdF9oZWFkX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjEnCkBAIC0xODgsMTIgKzE4OCwxMiBAQAogICAgICAgICBzZWxmLmNvbi5wdXRoZWFkZXIoJ0Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScpCiAgICAgICAgIHNlbGYuY29uLmVuZGhlYWRlcnMoKQogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNTAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCiAgICAgZGVmIHRlc3RfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5jb24ucmVxdWVzdCgnVEVTVCcsICcvJykKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDIwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PX0NPTlRFTlQpCiAKICAgICBkZWYgdGVzdF9yZXR1cm5faGVhZGVyX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ0tFRVAnLCAnLycpCkBAIC0yMzAsMTEgKzIzMCw0OCBAQAogICAgICAgICAjIElzc3VlICMxNjA4ODogc3RhbmRhcmQgZXJyb3IgcmVzcG9uc2VzIHNob3VsZCBoYXZlIGEgY29udGVudC1sZW5ndGgKICAgICAgICAgc2VsZi5jb24ucmVxdWVzdCgnTk9URk9VTkQnLCAnLycpCiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCA0MDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCisKICAgICAgICAgZGF0YSA9IHJlcy5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQocmVzLmdldGhlYWRlcignQ29udGVudC1MZW5ndGgnKSksIGxlbihkYXRhKSkKIAogCitjbGFzcyBSZXF1ZXN0SGFuZGxlckxvZ2dpbmdUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgIGNsYXNzIHJlcXVlc3RfaGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgcHJvdG9jb2xfdmVyc2lvbiA9ICdIVFRQLzEuMScKKyAgICAgICAgZGVmYXVsdF9yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisKKyAgICAgICAgZGVmIGRvX0dFVChzZWxmKToKKyAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk9LKQorICAgICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCisKKyAgICAgICAgZGVmIGRvX0VSUk9SKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKEhUVFBTdGF0dXMuTk9UX0ZPVU5ELCAnRmlsZSBub3QgZm91bmQnKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICBzZWxmLmNvbiA9IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uKHNlbGYuSE9TVCwgc2VsZi5QT1JUKQorICAgICAgICBzZWxmLmNvbi5jb25uZWN0KCkKKworICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5jb24ucmVxdWVzdCgnR0VUJywgJy8nKQorICAgICAgICAgICAgc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgIGVyci5nZXR2YWx1ZSgpLmVuZHN3aXRoKCciR0VUIC8gSFRUUC8xLjEiIDIwMCAtXG4nKSkKKworICAgIGRlZiB0ZXN0X2VycihzZWxmKToKKyAgICAgICAgc2VsZi5jb24gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihzZWxmLkhPU1QsIHNlbGYuUE9SVCkKKyAgICAgICAgc2VsZi5jb24uY29ubmVjdCgpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuY29uLnJlcXVlc3QoJ0VSUk9SJywgJy8nKQorICAgICAgICAgICAgc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQorCisgICAgICAgIGxpbmVzID0gZXJyLmdldHZhbHVlKCkuc3BsaXQoJ1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzBdLmVuZHN3aXRoKCdjb2RlIDQwNCwgbWVzc2FnZSBGaWxlIG5vdCBmb3VuZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMV0uZW5kc3dpdGgoJyJFUlJPUiAvIEhUVFAvMS4xIiA0MDQgLScpKQorCisKIGNsYXNzIFNpbXBsZUhUVFBTZXJ2ZXJUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgogICAgIGNsYXNzIHJlcXVlc3RfaGFuZGxlcihOb0xvZ1JlcXVlc3RIYW5kbGVyLCBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICBwYXNzCkBAIC0yNjEsMTIgKzI5OCwyOCBAQAogICAgICAgICAgICAgQmFzZVRlc3RDYXNlLnRlYXJEb3duKHNlbGYpCiAKICAgICBkZWYgY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24oc2VsZiwgcmVzcG9uc2UsIHN0YXR1cywgZGF0YT1Ob25lKToKKyAgICAgICAgZGVmIGNsb3NlX2Nvbm4oKToKKyAgICAgICAgICAgICIiIkRvbid0IGNsb3NlIHJlYWRlciB5ZXQgc28gd2UgY2FuIGNoZWNrIGlmIHRoZXJlIHdhcyBsZWZ0b3ZlcgorICAgICAgICAgICAgYnVmZmVyZWQgaW5wdXQiIiIKKyAgICAgICAgICAgIG5vbmxvY2FsIHJlYWRlcgorICAgICAgICAgICAgcmVhZGVyID0gcmVzcG9uc2UuZnAKKyAgICAgICAgICAgIHJlc3BvbnNlLmZwID0gTm9uZQorICAgICAgICByZWFkZXIgPSBOb25lCisgICAgICAgIHJlc3BvbnNlLl9jbG9zZV9jb25uID0gY2xvc2VfY29ubgorCiAgICAgICAgIGJvZHkgPSByZXNwb25zZS5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1cywgc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZXNwb25zZS5yZWFzb24pCiAgICAgICAgIGlmIGRhdGE6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGJvZHkpCisgICAgICAgICMgRW5zdXJlIHRoZSBzZXJ2ZXIgaGFzIG5vdCBzZXQgdXAgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24sIGFuZCBoYXMKKyAgICAgICAgIyBub3Qgc2VudCBhbnkgZXh0cmEgZGF0YQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnZlcnNpb24sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLm1zZy5nZXQoIkNvbm5lY3Rpb24iLCAiY2xvc2UiKSwgImNsb3NlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkZXIucmVhZCgzMCksIGInJywgJ0Nvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCcpCisKKyAgICAgICAgcmVhZGVyLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIGJvZHkKIAogICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDUpCkBAIC0yODUsNTIgKzMzOCw1OCBAQAogICAgICAgICAgICAgICAgIGlmIG5hbWUgIT0gJ3Rlc3QnOiAjIElnbm9yZSBhIGZpbGVuYW1lIGNyZWF0ZWQgaW4gc2V0VXAoKS4KICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBuYW1lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDApCisgICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQogICAgICAgICBxdW90ZWRuYW1lID0gdXJsbGliLnBhcnNlLnF1b3RlKGZpbGVuYW1lLCBlcnJvcnM9J3N1cnJvZ2F0ZXBhc3MnKQogICAgICAgICBzZWxmLmFzc2VydEluKCgnaHJlZj0iJXMiJyAlIHF1b3RlZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJz4lczwnICUgaHRtbC5lc2NhcGUoZmlsZW5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJyksIGJvZHkpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJy8nICsgcXVvdGVkbmFtZSkKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgMjAwLAorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9c3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUpCiAKICAgICBkZWYgdGVzdF9nZXQoc2VsZik6CiAgICAgICAgICNjb25zdHJ1Y3RzIHRoZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgSFRUUFNlcnZlcgogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLnRlbXBkaXJfbmFtZSArICcvdGVzdCcpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCwgZGF0YT1zZWxmLmRhdGEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssIGRhdGE9c2VsZi5kYXRhKQogICAgICAgICAjIGNoZWNrIGZvciB0cmFpbGluZyAiLyIgd2hpY2ggc2hvdWxkIHJldHVybiA0MDQuIFNlZSBJc3N1ZTE3MzI0CiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJy90ZXN0LycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDQwNCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJy8nKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDApCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAzMDEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTU9WRURfUEVSTUFORU5UTFkpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJy8/aGk9MicpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi50ZW1wZGlyX25hbWUgKyAnP2hpPTEnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAzMDEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTU9WRURfUEVSTUFORU5UTFkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCJMb2NhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgIi8/aGk9MSIpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvVGhpc0RvZXNOb3RFeGlzdCcpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDQwNCkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfRk9VTkQpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJyArICdUaGlzRG9lc05vdEV4aXN0JyArICcvJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNDA0KQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYudGVtcGRpcl9uYW1lLCAnaW5kZXguaHRtbCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycgKyBzZWxmLnRlbXBkaXJfbmFtZSArICcvJykKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDIwMCkKLSAgICAgICAgICAgICMgY2htb2QoKSBkb2Vzbid0IHdvcmsgYXMgZXhwZWN0ZWQgb24gV2luZG93cywgYW5kIGZpbGVzeXN0ZW0KLSAgICAgICAgICAgICMgcGVybWlzc2lvbnMgYXJlIGlnbm9yZWQgYnkgcm9vdCBvbiBVbml4LgotICAgICAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnIGFuZCBvcy5nZXRldWlkKCkgIT0gMDoKLSAgICAgICAgICAgICAgICBvcy5jaG1vZChzZWxmLnRlbXBkaXIsIDApCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQorCisgICAgICAgIGRhdGEgPSBiIkR1bW15IGluZGV4IGZpbGVcclxuIgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYudGVtcGRpcl9uYW1lLCAnaW5kZXguaHRtbCcpLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhKQorICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycgKyBzZWxmLnRlbXBkaXJfbmFtZSArICcvJykKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSywgZGF0YSkKKworICAgICAgICAjIGNobW9kKCkgZG9lc24ndCB3b3JrIGFzIGV4cGVjdGVkIG9uIFdpbmRvd3MsIGFuZCBmaWxlc3lzdGVtCisgICAgICAgICMgcGVybWlzc2lvbnMgYXJlIGlnbm9yZWQgYnkgcm9vdCBvbiBVbml4LgorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCcgYW5kIG9zLmdldGV1aWQoKSAhPSAwOgorICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wZGlyLCAwKQorICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYudGVtcGRpcl9uYW1lICsgJy8nKQotICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDQwNCkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKKyAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wZGlyLCAwbzc1NSkKIAogICAgIGRlZiB0ZXN0X2hlYWQoc2VsZik6CiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KAogICAgICAgICAgICAgc2VsZi50ZW1wZGlyX25hbWUgKyAnL3Rlc3QnLCBtZXRob2Q9J0hFQUQnKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCAyMDApCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCdjb250ZW50LWxlbmd0aCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihsZW4oc2VsZi5kYXRhKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCdjb250ZW50LXR5cGUnKSwKQEAgLTMzOCwxMiArMzk3LDEyIEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX3JlcXVlc3RzKHNlbGYpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycsIG1ldGhvZD0nRk9PJykKLSAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgNTAxKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKICAgICAgICAgIyByZXF1ZXN0cyBtdXN0IGJlIGNhc2Ugc2Vuc2l0aXZlLHNvIHRoaXMgc2hvdWxkIGZhaWwgdG9vCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KCcvJywgbWV0aG9kPSdjdXN0b20nKQotICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCA1MDEpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdCgnLycsIG1ldGhvZD0nR0VUcycpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIDUwMSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKIAogY2dpX2ZpbGUxID0gIiIiXApAQCAtNDkwLDEyICs1NDksMTMgQEAKIAogICAgIGRlZiB0ZXN0X2hlYWRlcnNfYW5kX2NvbnRlbnQoc2VsZik6CiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vZmlsZTEucHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSwKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spKQogCiAgICAgZGVmIHRlc3RfaXNzdWUxOTQzNShzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvLy8vLy8vLy8vL25vY2dpLnB5Ly4uL2NnaS1iaW4vbm90aGVyZS5zaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgNDA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0ZPVU5EKQogCiAgICAgZGVmIHRlc3RfcG9zdChzZWxmKToKICAgICAgICAgcGFyYW1zID0gdXJsbGliLnBhcnNlLnVybGVuY29kZSgKQEAgLTUwOCwzOCArNTY4LDQzIEBACiAgICAgZGVmIHRlc3RfaW52YWxpZHVyaShzZWxmKToKICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9pbnZhbGlkJykKICAgICAgICAgcmVzLnJlYWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDQwNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9GT1VORCkKIAogICAgIGRlZiB0ZXN0X2F1dGhvcml6YXRpb24oc2VsZik6CiAgICAgICAgIGhlYWRlcnMgPSB7YidBdXRob3JpemF0aW9uJyA6IGInQmFzaWMgJyArCiAgICAgICAgICAgICAgICAgICAgYmFzZTY0LmI2NGVuY29kZShiJ3VzZXJuYW1lOnBhc3MnKX0KICAgICAgICAgcmVzID0gc2VsZi5yZXF1ZXN0KCcvY2dpLWJpbi9maWxlMS5weScsICdHRVQnLCBoZWFkZXJzPWhlYWRlcnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKLSAgICAgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSyksCisgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQogCiAgICAgZGVmIHRlc3Rfbm9fbGVhZGluZ19zbGFzaChzZWxmKToKICAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjI1NAogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJ2NnaS1iaW4vZmlsZTEucHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogICAgIGRlZiB0ZXN0X29zX2Vudmlyb25faXNfbm90X2FsdGVyZWQoc2VsZik6CiAgICAgICAgIHNpZ25hdHVyZSA9ICJUZXN0IENHSSBTZXJ2ZXIiCiAgICAgICAgIG9zLmVudmlyb25bJ1NFUlZFUl9TT0ZUV0FSRSddID0gc2lnbmF0dXJlCiAgICAgICAgIHJlcyA9IHNlbGYucmVxdWVzdCgnL2NnaS1iaW4vZmlsZTEucHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5lbnZpcm9uWydTRVJWRVJfU09GVFdBUkUnXSwgc2lnbmF0dXJlKQogCiAgICAgZGVmIHRlc3RfdXJscXVvdGVfZGVjb2RpbmdfaW5fY2dpX2NoZWNrKHNlbGYpOgogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluJTJmZmlsZTEucHknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIDIwMCksCi0gICAgICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIChiJ0hlbGxvIFdvcmxkJyArIHNlbGYubGluZXNlcCwgJ3RleHQvaHRtbCcsIEhUVFBTdGF0dXMuT0spLAorICAgICAgICAgICAgKHJlcy5yZWFkKCksIHJlcy5nZXRoZWFkZXIoJ0NvbnRlbnQtdHlwZScpLCByZXMuc3RhdHVzKSkKIAogICAgIGRlZiB0ZXN0X25lc3RlZF9jZ2lfcGF0aF9pc3N1ZTIxMzIzKHNlbGYpOgogICAgICAgICByZXMgPSBzZWxmLnJlcXVlc3QoJy9jZ2ktYmluL2NoaWxkLWRpci9maWxlMy5weScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgMjAwKSwKLSAgICAgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgKGInSGVsbG8gV29ybGQnICsgc2VsZi5saW5lc2VwLCAndGV4dC9odG1sJywgSFRUUFN0YXR1cy5PSyksCisgICAgICAgICAgICAocmVzLnJlYWQoKSwgcmVzLmdldGhlYWRlcignQ29udGVudC10eXBlJyksIHJlcy5zdGF0dXMpKQogCiAKIGNsYXNzIFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcihTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIpOgpAQCAtNTQ5LDcgKzYxNCw3IEBACiAKICAgICBkZWYgZG9fR0VUKHNlbGYpOgogICAgICAgICBzZWxmLmdldF9jYWxsZWQgPSBUcnVlCi0gICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZSgyMDApCisgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShIVFRQU3RhdHVzLk9LKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sJykKICAgICAgICAgc2VsZi5lbmRfaGVhZGVycygpCiAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoYic8aHRtbD48Ym9keT5EYXRhPC9ib2R5PjwvaHRtbD5cclxuJykKQEAgLTU1OSw3ICs2MjQsNyBAQAogCiBjbGFzcyBSZWplY3RpbmdTb2NrZXRsZXNzUmVxdWVzdEhhbmRsZXIoU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKToKICAgICBkZWYgaGFuZGxlX2V4cGVjdF8xMDAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MTcpCisgICAgICAgIHNlbGYuc2VuZF9lcnJvcihIVFRQU3RhdHVzLkVYUEVDVEFUSU9OX0ZBSUxFRCkKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKIApAQCAtODE2LDYgKzg4MSw3IEBACiAgICAgY3dkID0gb3MuZ2V0Y3dkKCkKICAgICB0cnk6CiAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAorICAgICAgICAgICAgUmVxdWVzdEhhbmRsZXJMb2dnaW5nVGVzdENhc2UsCiAgICAgICAgICAgICBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyVGVzdENhc2UsCiAgICAgICAgICAgICBCYXNlSFRUUFNlcnZlclRlc3RDYXNlLAogICAgICAgICAgICAgU2ltcGxlSFRUUFNlcnZlclRlc3RDYXNlLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CmluZGV4IDk2YjRmMzIuLjgyNDg2NTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKQEAgLTExLDcgKzExLDggQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgY2FsZW5kYXIKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlYXBfdGhyZWFkcywgdmVyYm9zZSwgdHJhbnNpZW50X2ludGVybmV0LCBydW5fd2l0aF90eiwgcnVuX3dpdGhfbG9jYWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJlYXBfdGhyZWFkcywgdmVyYm9zZSwgdHJhbnNpZW50X2ludGVybmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBydW5fd2l0aF90eiwgcnVuX3dpdGhfbG9jYWxlKQogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgpAQCAtMTksOCArMjAsOCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHNzbCA9IE5vbmUKIAotQ0VSVEZJTEUgPSBOb25lCi1DQUZJTEUgPSBOb25lCitDRVJURklMRSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpciwgImtleWNlcnQzLnBlbSIpCitDQUZJTEUgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIsICJweWNhY2VydC5wZW0iKQogCiAKIGNsYXNzIFRlc3RJbWFwbGliKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQxLDE3ICs0MiwxNSBAQAogICAgIGRlZiB0ZXN0X0ludGVybmFsZGF0ZTJ0dXBsZV9pc3N1ZTEwOTQxKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlKAogICAgICAgICAgICAgYicyNSAoSU5URVJOQUxEQVRFICIwMi1BcHItMjAwMCAwMjozMDowMCArMDAwMCIpJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hcGxpYi5JbnRlcm5hbGRhdGUydHVwbGUoCi0gICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKLQotCisgICAgICAgICAgICBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSgKKyAgICAgICAgICAgICAgICBiJzI1IChJTlRFUk5BTERBVEUgIjAyLUFwci0yMDAwIDAzOjMwOjAwICswMDAwIiknKSkKIAogICAgIGRlZiB0aW1ldmFsdWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCiAgICAgICAgICAgICAgICAgKDIwMzMsIDUsIDE4LCA1LCAzMywgMjAsIC0xLCAtMSwgLTEpLAogICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIDEpLAogICAgICAgICAgICAgICAgIGRhdGV0aW1lLmZyb210aW1lc3RhbXAoMjAwMDAwMDAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV6b25lKHRpbWVkZWx0YSgwLCAyKjYwKjYwKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUodGltZWRlbHRhKDAsIDIgKiA2MCAqIDYwKSkpLAogICAgICAgICAgICAgICAgICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJ10KIAogICAgIEBydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICdkZV9ERScsICdmcl9GUicpCkBAIC03Miw3ICs3MSw2IEBACiAKIAogaWYgc3NsOgotCiAgICAgY2xhc3MgU2VjdXJlVENQU2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKQEAgLTkzLDEzICs5MSwxNyBAQAogCiAKIGNsYXNzIFNpbXBsZUlNQVBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6Ci0KICAgICB0aW1lb3V0ID0gMQogICAgIGNvbnRpbnVhdGlvbiA9IE5vbmUKICAgICBjYXBhYmlsaXRpZXMgPSAnJwogCisgICAgZGVmIHNldHVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldHVwKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIubG9nZ2VkID0gTm9uZQorCiAgICAgZGVmIF9zZW5kKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgiU0VOVDogJXIiICUgbWVzc2FnZS5zdHJpcCgpKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIlNFTlQ6ICVyIiAlIG1lc3NhZ2Uuc3RyaXAoKSkKICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShtZXNzYWdlKQogCiAgICAgZGVmIF9zZW5kX2xpbmUoc2VsZiwgbWVzc2FnZSk6CkBAIC0xMzIsNyArMTM0LDggQEAKICAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKGInXHJcbicpOgogICAgICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiB2ZXJib3NlOiBwcmludCgnR09UOiAlcicgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCdHT1Q6ICVyJyAlIGxpbmUuc3RyaXAoKSkKICAgICAgICAgICAgIGlmIHNlbGYuY29udGludWF0aW9uOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250aW51YXRpb24uc2VuZChsaW5lKQpAQCAtMTQ0LDggKzE0Nyw4IEBACiAgICAgICAgICAgICBjbWQgPSBzcGxpdGxpbmVbMV0KICAgICAgICAgICAgIGFyZ3MgPSBzcGxpdGxpbmVbMjpdCiAKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2NtZF8nK2NtZCk6Ci0gICAgICAgICAgICAgICAgY29udGludWF0aW9uID0gZ2V0YXR0cihzZWxmLCAnY21kXycrY21kKSh0YWcsIGFyZ3MpCisgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdjbWRfJyArIGNtZCk6CisgICAgICAgICAgICAgICAgY29udGludWF0aW9uID0gZ2V0YXR0cihzZWxmLCAnY21kXycgKyBjbWQpKHRhZywgYXJncykKICAgICAgICAgICAgICAgICBpZiBjb250aW51YXRpb246CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGludWF0aW9uID0gY29udGludWF0aW9uCiAgICAgICAgICAgICAgICAgICAgIG5leHQoY29udGludWF0aW9uKQpAQCAtMTUzLDE2ICsxNTYsMjUgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdCQUQnLCBjbWQgKyAnIHVua25vd24nKQogCiAgICAgZGVmIGNtZF9DQVBBQklMSVRZKHNlbGYsIHRhZywgYXJncyk6Ci0gICAgICAgIGNhcHMgPSAnSU1BUDRyZXYxICcgKyBzZWxmLmNhcGFiaWxpdGllcyBpZiBzZWxmLmNhcGFiaWxpdGllcyBlbHNlICdJTUFQNHJldjEnCisgICAgICAgIGNhcHMgPSAoJ0lNQVA0cmV2MSAnICsgc2VsZi5jYXBhYmlsaXRpZXMKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNhcGFiaWxpdGllcworICAgICAgICAgICAgICAgIGVsc2UgJ0lNQVA0cmV2MScpCiAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJyogQ0FQQUJJTElUWSAnICsgY2FwcykKICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnQ0FQQUJJTElUWSBjb21wbGV0ZWQnKQogCiAgICAgZGVmIGNtZF9MT0dPVVQoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIubG9nZ2VkID0gTm9uZQogICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcqIEJZRSBJTUFQNHJlZjEgU2VydmVyIGxvZ2dpbmcgb3V0JykKICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnTE9HT1VUIGNvbXBsZXRlZCcpCiAKKyAgICBkZWYgY21kX0xPR0lOKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgIHNlbGYuc2VydmVyLmxvZ2dlZCA9IGFyZ3NbMF0KKyAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnTE9HSU4gY29tcGxldGVkJykKIAotY2xhc3MgQmFzZVRocmVhZGVkTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCitjbGFzcyBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBzZXJ2ZXJfY2xhc3MgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyCisgICAgaW1hcF9jbGFzcyA9IGltYXBsaWIuSU1BUDQKIAogICAgIGRlZiBtYWtlX3NlcnZlcihzZWxmLCBhZGRyLCBoZGxyKToKIApAQCAtMTcyLDcgKzE4NCw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoImNyZWF0aW5nIHNlcnZlciIpCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiY3JlYXRpbmcgc2VydmVyIikKICAgICAgICAgc2VydmVyID0gTXlTZXJ2ZXIoYWRkciwgaGRscikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MsIHNlcnZlci5zb2NrZXQuZ2V0c29ja25hbWUoKSkKIApAQCAtMTg4LDE4ICsyMDEsMjEgQEAKICAgICAgICAgICAgICMgU2hvcnQgcG9sbCBpbnRlcnZhbCB0byBtYWtlIHRoZSB0ZXN0IGZpbmlzaCBxdWlja2x5LgogICAgICAgICAgICAgIyBUaW1lIGJldHdlZW4gcmVxdWVzdHMgaXMgc2hvcnQgZW5vdWdoIHRoYXQgd2Ugd29uJ3Qgd2FrZQogICAgICAgICAgICAgIyB1cCBzcHVyaW91c2x5IHRvbyBtYW55IHRpbWVzLgotICAgICAgICAgICAga3dhcmdzPXsncG9sbF9pbnRlcnZhbCc6MC4wMX0pCisgICAgICAgICAgICBrd2FyZ3M9eydwb2xsX2ludGVydmFsJzogMC4wMX0pCiAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZSAgIyBJbiBjYXNlIHRoaXMgZnVuY3Rpb24gcmFpc2VzLgogICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgaWYgdmVyYm9zZTogcHJpbnQoInNlcnZlciBydW5uaW5nIikKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJzZXJ2ZXIgcnVubmluZyIpCiAgICAgICAgIHJldHVybiBzZXJ2ZXIsIHQKIAogICAgIGRlZiByZWFwX3NlcnZlcihzZWxmLCBzZXJ2ZXIsIHRocmVhZCk6Ci0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJ3YWl0aW5nIGZvciBzZXJ2ZXIiKQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIndhaXRpbmcgZm9yIHNlcnZlciIpCiAgICAgICAgIHNlcnZlci5zaHV0ZG93bigpCiAgICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQogICAgICAgICB0aHJlYWQuam9pbigpCi0gICAgICAgIGlmIHZlcmJvc2U6IHByaW50KCJkb25lIikKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCJkb25lIikKIAogICAgIEBjb250ZXh0bWFuYWdlcgogICAgIGRlZiByZWFwZWRfc2VydmVyKHNlbGYsIGhkbHIpOgpAQCAtMjQ5LDYgKzI2NSw4NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5hYm9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW1hcF9jbGFzcywgKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcykKIAorICAgIGNsYXNzIFVURjhTZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpOgorICAgICAgICBjYXBhYmlsaXRpZXMgPSAnQVVUSCBFTkFCTEUgVVRGOD1BQ0NFUFQnCisKKyAgICAgICAgZGVmIGNtZF9FTkFCTEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0VOQUJMRSBzdWNjZXNzZnVsJykKKworICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKycpCisgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdGQUtFQVVUSCBzdWNjZXNzZnVsJykKKworICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9lbmFibGVfcmFpc2VzX2Vycm9yX2lmX25vdF9BVVRIKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoc2VsZi5VVEY4U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjbGllbnQudXRmOF9lbmFibGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvciwgY2xpZW50LmVuYWJsZSwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNsaWVudC51dGY4X2VuYWJsZWQpCisKKyAgICAjIFhYWCBBbHNvIG5lZWQgYSB0ZXN0IHRoYXQgZW5hYmxlIGFmdGVyIFNFTEVDVCByYWlzZXMgYW4gZXJyb3IuCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RfZW5hYmxlX3JhaXNlc19lcnJvcl9pZl9ub19jYXBhYmlsaXR5KHNlbGYpOgorICAgICAgICBjbGFzcyBOb0VuYWJsZVNlcnZlcihzZWxmLlVURjhTZXJ2ZXIpOgorICAgICAgICAgICAgY2FwYWJpbGl0aWVzID0gJ0FVVEgnCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihOb0VuYWJsZVNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IsIGNsaWVudC5lbmFibGUsICdmb28nKQorCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2VuYWJsZV9VVEY4X3JhaXNlc19lcnJvcl9pZl9ub3Rfc3VwcG9ydGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBOb25VVEY4U2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihOb25VVEY4U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgICAgIHR5cCwgZGF0YSA9IGNsaWVudC5sb2dpbigndXNlcicsICdwYXNzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgICAgICBjbGllbnQuZW5hYmxlKCdVVEY4PUFDQ0VQVCcpCisgICAgICAgICAgICAgICAgcGFzcworCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2VuYWJsZV9VVEY4X1RydWVfYXBwZW5kKHNlbGYpOgorCisgICAgICAgIGNsYXNzIFVURjhBcHBlbmRTZXJ2ZXIoc2VsZi5VVEY4U2VydmVyKToKKyAgICAgICAgICAgIGRlZiBjbWRfQVBQRU5EKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKycpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVzcG9uc2UgPSB5aWVsZAorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ29rYXknKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihVVEY4QXBwZW5kU2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2VuY29kaW5nLCAnYXNjaWknKQorICAgICAgICAgICAgY29kZSwgXyA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBiJ2Zha2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgICMgYjY0IGVuY29kZWQgJ2Zha2UnCisgICAgICAgICAgICBjb2RlLCBfID0gY2xpZW50LmVuYWJsZSgnVVRGOD1BQ0NFUFQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnQuX2VuY29kaW5nLCAndXRmLTgnKQorICAgICAgICAgICAgbXNnX3N0cmluZyA9ICdTdWJqZWN0OiDDvMOxw63CqcO2w7DDqScKKyAgICAgICAgICAgIHR5cCwgZGF0YSA9IGNsaWVudC5hcHBlbmQoCisgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgbXNnX3N0cmluZy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VydmVyLnJlc3BvbnNlLAorICAgICAgICAgICAgICAgICgnVVRGOCAoJXMpXHJcbicgJSBtc2dfc3RyaW5nKS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICkKKworICAgICMgWFhYIGFsc28gbmVlZCBhIHRlc3QgdGhhdCBtYWtlcyBzdXJlIHRoYXQgdGhlIExpdGVyYWwgYW5kIFVudGFnZ2VkX3N0YXR1cworICAgICMgcmVnZXhlcyB1c2VzIHVuaWNvZGUgaW4gVVRGOCBtb2RlIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgQVNDSUkuCisKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3Rfc2VhcmNoX2Rpc2FsbG93c19jaGFyc2V0X2luX3V0ZjhfbW9kZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKHNlbGYuVVRGOFNlcnZlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIHR5cCwgXyA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBiJ2Zha2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXAsICdPSycpCisgICAgICAgICAgICB0eXAsIF8gPSBjbGllbnQuZW5hYmxlKCdVVEY4PUFDQ0VQVCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cCwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbGllbnQudXRmOF9lbmFibGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaW1hcGxpYi5JTUFQNC5lcnJvciwgY2xpZW50LnNlYXJjaCwgJ2ZvbycsICdiYXInKQorCiAgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2JhZF9hdXRoX25hbWUoc2VsZik6CiAKQEAgLTI1Niw3ICszNTAsNyBAQAogCiAgICAgICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgogICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ05PJywgJ3VucmVjb2duaXplZCBhdXRoZW50aWNhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZSB7fScuZm9ybWF0KGFyZ3NbMF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlIHt9Jy5mb3JtYXQoYXJnc1swXSkpCiAKICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKE15U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yKToKQEAgLTI5MCwxMyArMzg0LDEzIEBACiAgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAjYjY0IGVuY29kZWQgJ2Zha2UnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgICMgYjY0IGVuY29kZWQgJ2Zha2UnCiAKICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKE15U2VydmVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgogICAgICAgICAgICAgY29kZSwgZGF0YSA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiAnZmFrZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidabUZyWlE9PVxyXG4nKSAjYjY0IGVuY29kZWQgJ2Zha2UnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInWm1GclpRPT1cclxuJykgICMgYjY0IGVuY29kZWQgJ2Zha2UnCiAKICAgICBAcmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfbG9naW5fY3JhbV9tZDUoc2VsZik6CkBAIC0zMDcsOSArNDAxLDEwIEBACiAKICAgICAgICAgICAgIGRlZiBjbWRfQVVUSEVOVElDQVRFKHNlbGYsIHRhZywgYXJncyk6CiAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKyBQREU0T1RZdU5qazNNVGN3T1RVeVFIQnZjM1J2Wm1acFkyVXVjbScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWemRHOXVMbTFqYVM1dVpYUT0nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Z6ZEc5dUxtMWphUzV1WlhRPScpCiAgICAgICAgICAgICAgICAgciA9IHlpZWxkCi0gICAgICAgICAgICAgICAgaWYgciA9PSAgYidkR2x0SUdZeFkyRTJZbVUwTmpSaU9XVm1ZVEZqWTJFMlptWmtObU5tTW1RNVpqTXlcclxuJzoKKyAgICAgICAgICAgICAgICBpZiAociA9PSBiJ2RHbHRJR1l4WTJFMlltVTBOalJpT1dWbVlUJworICAgICAgICAgICAgICAgICAgICAgICAgIGInRmpZMkUyWm1aa05tTm1NbVE1WmpNeVxyXG4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnQ1JBTS1NRDUgc3VjY2Vzc2Z1bCcpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnTk8nLCAnTm8gYWNjZXNzJykKQEAgLTMyNSw3ICs0MjAsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsICJPSyIpCiAKIAotCiAgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2Fib3J0ZWRfYXV0aGVudGljYXRpb24oc2VsZik6CiAKQEAgLTM0NCwyNiArNDM4LDQ2IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGltYXBsaWIuSU1BUDQuZXJyb3IpOgogICAgICAgICAgICAgICAgIGNvZGUsIGRhdGEgPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogTm9uZSkKIAorCiAgICAgZGVmIHRlc3RfbGluZXRvb2xvbmcoc2VsZik6CiAgICAgICAgIGNsYXNzIFRvb0xvbmdIYW5kbGVyKFNpbXBsZUlNQVBIYW5kbGVyKToKICAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CiAgICAgICAgICAgICAgICAgIyBTZW5kIGEgdmVyeSBsb25nIHJlc3BvbnNlIGxpbmUKLSAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGInKiBPSyAnICsgaW1hcGxpYi5fTUFYTElORSpiJ3gnICsgYidcclxuJykKKyAgICAgICAgICAgICAgICBzZWxmLndmaWxlLndyaXRlKGInKiBPSyAnICsgaW1hcGxpYi5fTUFYTElORSAqIGIneCcgKyBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFRvb0xvbmdIYW5kbGVyKSBhcyBzZXJ2ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhpbWFwbGliLklNQVA0LmVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbWFwX2NsYXNzLCAqc2VydmVyLnNlcnZlcl9hZGRyZXNzKQogCisgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X3NpbXBsZV93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgIyBzaW1wbGVzdCBjYWxsCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICB3aXRoIHNlbGYuaW1hcF9jbGFzcygqc2VydmVyLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKLWNsYXNzIFRocmVhZGVkTmV0d29ya2VkVGVzdHMoQmFzZVRocmVhZGVkTmV0d29ya2VkVGVzdHMpOgorICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHdpdGggc2VsZi5pbWFwX2NsYXNzKCpzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpIGFzIGltYXA6CisgICAgICAgICAgICAgICAgaW1hcC5sb2dpbigndXNlcicsICdwYXNzJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5sb2dnZWQsICd1c2VyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5sb2dnZWQpCiAKLSAgICBzZXJ2ZXJfY2xhc3MgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyCi0gICAgaW1hcF9jbGFzcyA9IGltYXBsaWIuSU1BUDQKKyAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfbG9nb3V0KHNlbGYpOgorICAgICAgICAjIHdoYXQgaGFwcGVucyBpZiBhbHJlYWR5IGxvZ291dCBpbiB0aGUgYmxvY2s/CisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfc2VydmVyKFNpbXBsZUlNQVBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICB3aXRoIHNlbGYuaW1hcF9jbGFzcygqc2VydmVyLnNlcnZlcl9hZGRyZXNzKSBhcyBpbWFwOgorICAgICAgICAgICAgICAgIGltYXAubG9naW4oJ3VzZXInLCAncGFzcycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIubG9nZ2VkLCAndXNlcicpCisgICAgICAgICAgICAgICAgaW1hcC5sb2dvdXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlcnZlci5sb2dnZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZXJ2ZXIubG9nZ2VkKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgIlNTTCBub3QgYXZhaWxhYmxlIikKLWNsYXNzIFRocmVhZGVkTmV0d29ya2VkVGVzdHNTU0woQmFzZVRocmVhZGVkTmV0d29ya2VkVGVzdHMpOgotCitjbGFzcyBUaHJlYWRlZE5ldHdvcmtlZFRlc3RzU1NMKFRocmVhZGVkTmV0d29ya2VkVGVzdHMpOgogICAgIHNlcnZlcl9jbGFzcyA9IFNlY3VyZVRDUFNlcnZlcgogICAgIGltYXBfY2xhc3MgPSBJTUFQNF9TU0wKIApAQCAtMzc0LDggKzQ4OCw5IEBACiAgICAgICAgIHNzbF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBzc2xfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0FGSUxFKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuQ2VydGlmaWNhdGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAnMTI3LjAuMC4xJyBkb2Vzbid0IG1hdGNoICdsb2NhbGhvc3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBzc2wuQ2VydGlmaWNhdGVFcnJvciwKKyAgICAgICAgICAgICAgICAiaG9zdG5hbWUgJzEyNy4wLjAuMScgZG9lc24ndCBtYXRjaCAnbG9jYWxob3N0JyIpOgogICAgICAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9zZXJ2ZXIoU2ltcGxlSU1BUEhhbmRsZXIpIGFzIHNlcnZlcjoKICAgICAgICAgICAgICAgICBjbGllbnQgPSBzZWxmLmltYXBfY2xhc3MoKnNlcnZlci5zZXJ2ZXJfYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX2NvbnRleHQ9c3NsX2NvbnRleHQpCkBAIC0zODcsNiArNTAyLDggQEAKICAgICAgICAgICAgIGNsaWVudC5zaHV0ZG93bigpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyksICduZXR3b3JrIHJlc291cmNlIGRpc2FibGVkJykKIGNsYXNzIFJlbW90ZUlNQVBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBob3N0ID0gJ2N5cnVzLmFuZHJldy5jbXUuZWR1JwogICAgIHBvcnQgPSAxNDMKQEAgLTQyMCw2ICs1MzcsOCBAQAogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgIlNTTCBub3QgYXZhaWxhYmxlIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKAorICAgIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpLCAnbmV0d29yayByZXNvdXJjZSBkaXNhYmxlZCcpCiBjbGFzcyBSZW1vdGVJTUFQX1NUQVJUVExTVGVzdChSZW1vdGVJTUFQVGVzdCk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00NzMsNyArNTkyLDggQEAKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKLSAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKAorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ291dChzZWxmKToKQEAgLTQ4NCwzNSArNjA0LDE1IEBACiAKICAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9jZXJ0ZmlsZV9leGNsdXNpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogCiAgICAgZGVmIHRlc3Rfc3NsX2NvbnRleHRfa2V5ZmlsZV9leGNsdXNpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKLQotCi1kZWYgbG9hZF90ZXN0cygqYXJncyk6Ci0gICAgdGVzdHMgPSBbVGVzdEltYXBsaWJdCi0KLSAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKLSAgICAgICAgaWYgc3NsOgotICAgICAgICAgICAgZ2xvYmFsIENFUlRGSUxFLCBDQUZJTEUKLSAgICAgICAgICAgIENFUlRGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleWNlcnQzLnBlbSIpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoQ0VSVEZJTEUpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlcyEiKQotICAgICAgICAgICAgQ0FGSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5Y2FjZXJ0LnBlbSIpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoQ0FGSUxFKToKLSAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgQ0EgZmlsZSEiKQotICAgICAgICB0ZXN0cy5leHRlbmQoWwotICAgICAgICAgICAgVGhyZWFkZWROZXR3b3JrZWRUZXN0cywgVGhyZWFkZWROZXR3b3JrZWRUZXN0c1NTTCwKLSAgICAgICAgICAgIFJlbW90ZUlNQVBUZXN0LCBSZW1vdGVJTUFQX1NTTFRlc3QsIFJlbW90ZUlNQVBfU1RBUlRUTFNUZXN0LAotICAgICAgICBdKQotCi0gICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZShbdW5pdHRlc3QubWFrZVN1aXRlKHRlc3QpIGZvciB0ZXN0IGluIHRlc3RzXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAga2V5ZmlsZT1DRVJURklMRSwgc3NsX2NvbnRleHQ9c2VsZi5jcmVhdGVfc3NsX2NvbnRleHQoKSkKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQppbmRleCAwYWQ0MzQzLi5iNTRkYWY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQpAQCAtMTYsNyArMTYsOSBAQAogICAgICgncHl0aG9uLnJhcycsICdyYXN0JyksCiAgICAgKCdweXRob24uc2dpJywgJ3JnYicpLAogICAgICgncHl0aG9uLnRpZmYnLCAndGlmZicpLAotICAgICgncHl0aG9uLnhibScsICd4Ym0nKQorICAgICgncHl0aG9uLnhibScsICd4Ym0nKSwKKyAgICAoJ3B5dGhvbi53ZWJwJywgJ3dlYnAnKSwKKyAgICAoJ3B5dGhvbi5leHInLCAnZXhyJyksCiApCiAKIGNsYXNzIFVuc2Vla2FibGVJTyhpby5GaWxlSU8pOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCA4MGI5ZWMzLi5lZTllZTFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtMyw2ICszLDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBfdGhyZWFkID0gTm9uZQogaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc2h1dGlsCkBAIC0xMTEsNyArMTEyLDYgQEAKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArICcucHknKQogICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArICcucHljJykKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHRlbXBfbW9kX25hbWUgKyAnLnB5bycpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTU2MDQoc2VsZik6CiAgICAgICAgICMgVGVzdCBjYW5ub3QgY292ZXIgaW1wLmxvYWRfY29tcGlsZWQgZnVuY3Rpb24uCkBAIC0xOTQsNyArMTk0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2FnZS5iLCAyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICBmb3IgZXh0IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgorICAgICAgICAgICAgZm9yIGV4dCBpbiAoJy5weScsICcucHljJyk6CiAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsodGVtcF9tb2RfbmFtZSArIGV4dCkKICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhpbml0X2ZpbGVfbmFtZSArIGV4dCkKICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKHRlc3RfcGFja2FnZV9uYW1lKQpAQCAtMjc2LDYgKzI3NiwyOSBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiZm91bmQgbW9kdWxlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgQyBleHRlbnNpb24iKQogICAgICAgICBpbXAubG9hZF9tb2R1bGUobmFtZSwgTm9uZSwgKmZvdW5kWzE6XSkKIAorICAgIEByZXF1aXJlc19sb2FkX2R5bmFtaWMKKyAgICBkZWYgdGVzdF9pc3N1ZTI0NzQ4X2xvYWRfbW9kdWxlX3NraXBzX3N5c19tb2R1bGVzX2NoZWNrKHNlbGYpOgorICAgICAgICBuYW1lID0gJ3Rlc3QuaW1wX2R1bW15JworICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYygnX3Rlc3RtdWx0aXBoYXNlJykKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5sb2FkX2R5bmFtaWMobmFtZSwgc3BlYy5vcmlnaW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fc3BlY19fLm5hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3NwZWNfXy5vcmlnaW4sIHNwZWMub3JpZ2luKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vZHVsZSwgJ2R1bW15X25hbWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuaW50X2NvbnN0LCAxOTY5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMubW9kdWxlc1tuYW1lXSwgbW9kdWxlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUsCiAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVuIHdyaXRpbmcgYnl0ZWNvZGUiKQogICAgIGRlZiB0ZXN0X2J1Zzc3MzIoc2VsZik6CkBAIC0zNDYsNTYgKzM2OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAotICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKLSAgICAgICAgIyBOb24gY2FjaGUgdGFnIG1lYW5zIE5vdEltcGxlbWVudGVkRXJyb3IuCi0gICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnY2FjaGVfdGFnJywgTm9uZSk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpOgotICAgICAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnd2hhdGV2ZXIucHknKQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fZG90KHNlbGYpOgotICAgICAgICAjIERpcmVjdG9yeSB3aXRoIGEgZG90LCBmaWxlbmFtZSB3aXRob3V0IGRvdC4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vLmJhcicsICdmaWxlJykKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxle30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemVkKHNlbGYpOgotICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKLSAgICAgICAgIyBkZWZpbmVkIC5weW8gZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCi0gICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weW8nLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIEZhbHNlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfY3dkKHNlbGYpOgotICAgICAgICBwYXRoID0gJ2Zvby5weScKLSAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQotCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6Ci0gICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKLSAgICAgICAgIyB2YWx1ZS4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQotICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwgcGFydGlhbF9leHBlY3QgKyAnbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfZXhwZWN0ICsgJ2MnKQotICAgICAgICAjIEhvd2V2ZXIgaWYgdGhlIGJvb2wtaXNobmVzcyBjYW4ndCBiZSBkZXRlcm1pbmVkLCB0aGUgZXhjZXB0aW9uCi0gICAgICAgICMgcHJvcGFnYXRlcy4KLSAgICAgICAgY2xhc3MgQmVhcmlzaDoKLSAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmFpc2UgUnVudGltZUVycm9yCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQotCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKLSAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKQEAgLTQwNyw2OCArMzgwLDYgQEAKICAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQogCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgotICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQotICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKLSAgICAgICAgICAgICAgICBpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX2JhZF9wYXRoKHNlbGYpOgotICAgICAgICAjIFdoZW4gdGhlIHBhdGggdG8gYSBweWMgZmlsZSBpcyBub3QgaW4gUEVQIDMxNDcgZm9ybWF0LCBhIFZhbHVlRXJyb3IKLSAgICAgICAgIyBpcyByYWlzZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLCAnL2Zvby9iYXIvYmF6cXV4LnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9ub19zbGFzaChzZWxmKToKLSAgICAgICAgIyBObyBzbGFzaGVzIGF0IGFsbCBpbiBwYXRoIC0+IFZhbHVlRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCBpbXAuc291cmNlX2Zyb21fY2FjaGUsICdmb28uY3B5dGhvbi0zMi5weWMnKQotCi0gICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX2Zld19kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBmZXcgZG90cyBpbiBmaW5hbCBwYXRoIGNvbXBvbmVudCAtPiBWYWx1ZUVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgaW1wLnNvdXJjZV9mcm9tX2NhY2hlLCAnX19weWNhY2hlX18vZm9vLnB5YycpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV90b29fbWFueV9kb3RzKHNlbGYpOgotICAgICAgICAjIFRvbyBtYW55IGRvdHMgaW4gZmluYWwgcGF0aCBjb21wb25lbnQgLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwKLSAgICAgICAgICAgICdfX3B5Y2FjaGVfXy9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX25vX19weWNhY2hlX18oc2VsZik6Ci0gICAgICAgICMgQW5vdGhlciBwcm9ibGVtIHdpdGggdGhlIHBhdGggLT4gVmFsdWVFcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsIGltcC5zb3VyY2VfZnJvbV9jYWNoZSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2VfX19maWxlX18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJwZXAzMTQ3IG1vZHVsZSBhbHJlYWR5IGV4aXN0czogJXIiICUgKG0sKSkKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBwYWNrYWdlJ3MgX19maWxlX18gcG9pbnRzIHRvIHRoZSByaWdodCBzb3VyY2UgZGlyZWN0b3J5LgotICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCi0gICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgICAgICBpZiBzeXMucGF0aFswXSA9PSBvcy5jdXJkaXI6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgICMgVG91Y2ggdGhlIF9faW5pdF9fLnB5IGZpbGUuCi0gICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoJ3BlcDMxNDcvX19pbml0X18ucHknKQotICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQotICAgICAgICBleHBlY3RlZF9fX2ZpbGVfXyA9IG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpCi0gICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLCBleHBlY3RlZF9fX2ZpbGVfXywgKG0uX19maWxlX18sIG0uX19wYXRoX18sIHN5cy5wYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkpCi0gICAgICAgICMgRW5zdXJlIHdlIGxvYWQgdGhlIHB5YyBmaWxlLgotICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCi0gICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3BlcDMxNDcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sIGV4cGVjdGVkX19fZmlsZV9fLCAobS5fX2ZpbGVfXywgbS5fX3BhdGhfXywgc3lzLnBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKSkKLQogCiBjbGFzcyBOdWxsSW1wb3J0ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlRFU1RGTl9VTkVOQ09EQUJMRSBpcyBOb25lLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2ltcG9ydC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggYjQ4NDJjNS4uMTRhNjg4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTEsNyArMSw3IEBACiAjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKLWZyb20gaW1wb3J0bGliLl9ib290c3RyYXAgaW1wb3J0IF9nZXRfc291cmNlZmlsZQorZnJvbSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCBpbXBvcnQgX2dldF9zb3VyY2VmaWxlCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBtYXJzaGFsCiBpbXBvcnQgb3MKQEAgLTIxLDggKzIxLDkgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCiAgICAgRW52aXJvbm1lbnRWYXJHdWFyZCwgVEVTVEZOLCBjaGVja193YXJuaW5ncywgZm9yZ2V0LCBpc19qeXRob24sCiAgICAgbWFrZV9sZWdhY3lfcHljLCBybXRyZWUsIHJ1bl91bml0dGVzdCwgc3dhcF9hdHRyLCBzd2FwX2l0ZW0sIHRlbXBfdW1hc2ssCi0gICAgdW5saW5rLCB1bmxvYWQsIGNyZWF0ZV9lbXB0eV9maWxlLCBjcHl0aG9uX29ubHksIFRFU1RGTl9VTkVOQ09EQUJMRSkKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorICAgIHVubGluaywgdW5sb2FkLCBjcmVhdGVfZW1wdHlfZmlsZSwgY3B5dGhvbl9vbmx5LCBURVNURk5fVU5FTkNPREFCTEUsCisgICAgdGVtcF9kaXIpCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKIHNraXBfaWZfZG9udF93cml0ZV9ieXRlY29kZSA9IHVuaXR0ZXN0LnNraXBJZigKQEAgLTMyLDcgKzMzLDYgQEAKIGRlZiByZW1vdmVfZmlsZXMobmFtZSk6CiAgICAgZm9yIGYgaW4gKG5hbWUgKyAiLnB5IiwKICAgICAgICAgICAgICAgbmFtZSArICIucHljIiwKLSAgICAgICAgICAgICAgbmFtZSArICIucHlvIiwKICAgICAgICAgICAgICAgbmFtZSArICIucHl3IiwKICAgICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKToKICAgICAgICAgdW5saW5rKGYpCkBAIC00Niw3ICs0Niw3IEBACiAgICAgIyB0ZW1wb3JhcmlseSBjbGVhcnMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzIChpZiBhbnkpCiAgICAgIyByZXZlcnRzIG9yIHJlbW92ZXMgdGhlIG1vZHVsZSB3aGVuIGNsZWFuaW5nIHVwCiAgICAgbmFtZSA9IG5hbWUgb3IgInNwYW0iCi0gICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKKyAgICB3aXRoIHRlbXBfZGlyKCkgYXMgdGVtcGRpcjoKICAgICAgICAgcGF0aCA9IHNjcmlwdF9oZWxwZXIubWFrZV9zY3JpcHQodGVtcGRpciwgbmFtZSwgc291cmNlKQogICAgICAgICBvbGRfbW9kdWxlID0gc3lzLm1vZHVsZXMucG9wKG5hbWUsIE5vbmUpCiAgICAgICAgIHRyeToKQEAgLTg0LDcgKzg0LDYgQEAKICAgICAgICAgZGVmIHRlc3Rfd2l0aF9leHRlbnNpb24oZXh0KToKICAgICAgICAgICAgICMgVGhlIGV4dGVuc2lvbiBpcyBub3JtYWxseSAiLnB5IiwgcGVyaGFwcyAiLnB5dyIuCiAgICAgICAgICAgICBzb3VyY2UgPSBURVNURk4gKyBleHQKLSAgICAgICAgICAgIHB5byA9IFRFU1RGTiArICIucHlvIgogICAgICAgICAgICAgaWYgaXNfanl0aG9uOgogICAgICAgICAgICAgICAgIHB5YyA9IFRFU1RGTiArICIkcHkuY2xhc3MiCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE1LDcgKzExNCw2IEBACiAgICAgICAgICAgICAgICAgZm9yZ2V0KFRFU1RGTikKICAgICAgICAgICAgICAgICB1bmxpbmsoc291cmNlKQogICAgICAgICAgICAgICAgIHVubGluayhweWMpCi0gICAgICAgICAgICAgICAgdW5saW5rKHB5bykKIAogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQogICAgICAgICB0cnk6CkBAIC0xMzgsNyArMTM2LDcgQEAKICAgICAgICAgICAgIGYud3JpdGUoJ10nKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgQ29tcGlsZSAmIHJlbW92ZSAucHkgZmlsZTsgd2Ugb25seSBuZWVkIC5weWMgKG9yIC5weW8pLgorICAgICAgICAgICAgIyBDb21waWxlICYgcmVtb3ZlIC5weSBmaWxlOyB3ZSBvbmx5IG5lZWQgLnB5Yy4KICAgICAgICAgICAgICMgQnl0ZWNvZGUgbXVzdCBiZSByZWxvY2F0ZWQgZnJvbSB0aGUgUEVQIDMxNDcgYnl0ZWNvZGUtb25seSBsb2NhdGlvbi4KICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShmaWxlbmFtZSkKICAgICAgICAgZmluYWxseToKQEAgLTI1Miw3ICsyNTAsNyBAQAogICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChtb2QuX19maWxlX18pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4dCwgKCcucHljJywgJy5weW8nKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0LCAnLnB5YycpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KICAgICAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCkBAIC0yOTQsNyArMjkyLDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciIpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChnZXRhdHRyKGVycm5vLCAnRU9WRVJGTE9XJywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZXJybm8sICdFSU5WQUwnLCBOb25lKSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHNldCBtb2RpZmljYXRpb24gdGltZSB0byBsYXJnZSBpbnRlZ2VyICh7fSkiLmZvcm1hdChlKSkKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQpAQCAtMzI1LDEwICszMjQsMjMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCAiXmNhbm5vdCBpbXBvcnQgbmFtZSAnYm9ndXMnIik6CiAgICAgICAgICAgICBmcm9tIHJlIGltcG9ydCBib2d1cwogCisgICAgZGVmIHRlc3RfZnJvbV9pbXBvcnRfQXR0cmlidXRlRXJyb3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI0NDkyOiB0cnlpbmcgdG8gaW1wb3J0IGFuIGF0dHJpYnV0ZSB0aGF0IHJhaXNlcyBhbgorICAgICAgICAjIEF0dHJpYnV0ZUVycm9yIHNob3VsZCBsZWFkIHRvIGFuIEltcG9ydEVycm9yLgorICAgICAgICBjbGFzcyBBbHdheXNBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBfKToKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcgorCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ3Rlc3RfZnJvbV9pbXBvcnRfQXR0cmlidXRlRXJyb3InCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIG1vZHVsZV9uYW1lKQorICAgICAgICBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0gPSBBbHdheXNBdHRyaWJ1dGVFcnJvcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgZnJvbSB0ZXN0X2Zyb21faW1wb3J0X0F0dHJpYnV0ZUVycm9yIGltcG9ydCBkb2VzX25vdF9leGlzdAorCiAKIEBza2lwX2lmX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIGNsYXNzIEZpbGVQZXJtaXNzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgdGVzdHMgZm9yIGZpbGUgbW9kZSBvbiBjYWNoZWQgLnB5Yy8ucHlvIGZpbGVzCisgICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljIGZpbGVzCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQpAQCAtMzM5LDcgKzM1MSw3IEBACiAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC5weWMgZmlsZSIpCiAgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQogCiAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cwpAQCAtMzU4LDcgKzM3MCw3IEBACiAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhIC5weWMgZmlsZSIpCiAgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLCBvY3QobW9kZSkpCkBAIC0zNzMsNyArMzg1LDcgQEAKICAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZWRfcGF0aCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBhIC5weWMgb3IgLnB5byBmaWxlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImEgLnB5YyBmaWxlIikKICAgICAgICAgICAgIHN0YXRfaW5mbyA9IG9zLnN0YXQoY2FjaGVkX3BhdGgpCiAKICAgICAgICAgZXhwZWN0ZWQgPSBtb2RlIHwgMG8yMDAgIyBBY2NvdW50IGZvciBmaXggZm9yIGlzc3VlICM2MDc0CkBAIC00MDQsMTAgKzQxNiw3IEBACiAgICAgICAgICAgICB1bmxpbmsocGF0aCkKICAgICAgICAgICAgIHVubG9hZChuYW1lKQogICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJjIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBieXRlY29kZV9vbmx5ID0gcGF0aCArICJvIgorICAgICAgICAgICAgYnl0ZWNvZGVfb25seSA9IHBhdGggKyAiYyIKICAgICAgICAgICAgIG9zLnJlbmFtZShpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoKSwgYnl0ZWNvZGVfb25seSkKICAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ3Jld3JpdHRlbicpCkBAIC01NjgsNyArNTc3LDcgQEAKIAogICAgIGRlZiB0ZXN0X3JlbGltcG9ydF9zdGFyKHNlbGYpOgogICAgICAgICAjIFRoaXMgd2lsbCBpbXBvcnQgKiBmcm9tIC50ZXN0X2ltcG9ydC4KLSAgICAgICAgZnJvbSAuIGltcG9ydCByZWxpbXBvcnQKKyAgICAgICAgZnJvbSAuLiBpbXBvcnQgcmVsaW1wb3J0CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHJlbGltcG9ydCwgIlJlbGF0aXZlSW1wb3J0VGVzdHMiKSkKIAogICAgIGRlZiB0ZXN0X2lzc3VlMzIyMShzZWxmKToKQEAgLTYzMSw5ICs2NDAsNyBAQAogCiAKIGNsYXNzIFB5Y2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUZXN0IHRoZSB2YXJpb3VzIFBFUCAzMTQ3IHJlbGF0ZWQgYmVoYXZpb3JzLgotCi0gICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgICMgVGVzdCB0aGUgdmFyaW91cyBQRVAgMzE0Ny80ODgtcmVsYXRlZCBiZWhhdmlvcnMuCiAKICAgICBkZWYgX2NsZWFuKHNlbGYpOgogICAgICAgICBmb3JnZXQoVEVTVEZOKQpAQCAtNjU4LDkgKzY2NSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKCdfX3B5Y2FjaGVfXycpKQogICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKCdfX3B5Y2FjaGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKAotICAgICAgICAgICAgJ19fcHljYWNoZV9fJywgJ3t9Lnt9LnB5e30nLmZvcm1hdCgKLSAgICAgICAgICAgIFRFU1RGTiwgc2VsZi50YWcsICdjJyBpZiBfX2RlYnVnX18gZWxzZSAnbycpKSkpCisgICAgICAgIHB5Y19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhweWNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAnYnl0ZWNvZGUgZmlsZSB7IXJ9IGZvciB7IXJ9IGRvZXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdCcuZm9ybWF0KHB5Y19wYXRoLCBURVNURk4pKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKQEAgLTY3Myw4ICs2ODEsMTAgQEAKICAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMjIyKToKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoJ19fcHljYWNoZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKAotICAgICAgICAgICAgJ19fcHljYWNoZV9fJywgJ3t9Lnt9LnB5YycuZm9ybWF0KFRFU1RGTiwgc2VsZi50YWcpKSkpCisgICAgICAgIHB5Y19wYXRoID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZi5zb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocHljX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2J5dGVjb2RlIGZpbGUgeyFyfSBmb3IgeyFyfSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RzJy5mb3JtYXQocHljX3BhdGgsIFRFU1RGTikpCiAKICAgICBAc2tpcF9pZl9kb250X3dyaXRlX2J5dGVjb2RlCiAgICAgZGVmIHRlc3RfbWlzc2luZ19zb3VyY2Uoc2VsZik6CkBAIC04NDksMTkgKzg1OSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX3BhY2thZ2VfXywgJ2ltcG9ydGxpYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uZW5kc3dpdGgoJ19ib290c3RyYXAucHknKSwgbW9kLl9fZmlsZV9fKQogCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbF9pc19ib290c3RyYXBfZXh0ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCisgICAgICAgIG1vZCA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYl9leHRlcm5hbCddCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kLCBfYm9vdHN0cmFwX2V4dGVybmFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX25hbWVfXywgJ2ltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19wYWNrYWdlX18sICdpbXBvcnRsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kLl9fZmlsZV9fLmVuZHN3aXRoKCdfYm9vdHN0cmFwX2V4dGVybmFsLnB5JyksIG1vZC5fX2ZpbGVfXykKKwogICAgIGRlZiB0ZXN0X3RoZXJlX2Nhbl9iZV9vbmx5X29uZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTUzODYgcmV2ZWFsZWQgYSB0cmlja3kgbG9vcGhvbGUgaW4gdGhlIGJvb3RzdHJhcHBpbmcKICAgICAgICAgIyBUaGlzIHRlc3QgaXMgdGVjaG5pY2FsbHkgcmVkdW5kYW50LCBzaW5jZSB0aGUgYnVnIGNhdXNlZCBpbXBvcnRpbmcKICAgICAgICAgIyB0aGlzIHRlc3QgbW9kdWxlIHRvIGNyYXNoIGNvbXBsZXRlbHksIGJ1dCBpdCBoZWxwcyBwcm92ZSB0aGUgcG9pbnQKICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQotICAgICAgICBzZWxmLmFzc2VydElzKG1hY2hpbmVyeS5GaWxlRmluZGVyLCBtb2QuRmlsZUZpbmRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuTW9kdWxlU3BlYywgbW9kLk1vZHVsZVNwZWMpCiAKIAogQGNweXRob25fb25seQogY2xhc3MgR2V0U291cmNlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgICIiIlRlc3QgaW1wb3J0bGliLl9ib290c3RyYXAuX2dldF9zb3VyY2VmaWxlKCkgYXMgdXNlZCBieSB0aGUgQyBBUEkuCisgICAgIiIiVGVzdCBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fZ2V0X3NvdXJjZWZpbGUoKSBhcyB1c2VkIGJ5IHRoZSBDIEFQSS4KIAogICAgIEJlY2F1c2Ugb2YgdGhlIHBlY3VsaWFyaXRpZXMgb2YgdGhlIG5lZWQgb2YgdGhpcyBmdW5jdGlvbiwgdGhlIHRlc3RzIGFyZQogICAgIGtub3dpbmdseSB3aGl0ZWJveCB0ZXN0cy4KQEAgLTg3MSw3ICs4ODksNyBAQAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2VmaWxlKHNlbGYpOgogICAgICAgICAjIEdpdmVuIGEgdmFsaWQgYnl0ZWNvZGUgcGF0aCwgcmV0dXJuIHRoZSBwYXRoIHRvIHRoZSBjb3JyZXNwb25kaW5nCiAgICAgICAgICMgc291cmNlIGZpbGUgaWYgaXQgZXhpc3RzLgotICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ2ltcG9ydGxpYi5fYm9vdHN0cmFwLl9wYXRoX2lzZmlsZScpIGFzIF9wYXRoX2lzZmlsZToKKyAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CiAgICAgICAgICAgICBfcGF0aF9pc2ZpbGUucmV0dXJuX3ZhbHVlID0gVHJ1ZTsKICAgICAgICAgICAgIHBhdGggPSBURVNURk4gKyAnLnB5YycKICAgICAgICAgICAgIGV4cGVjdCA9IFRFU1RGTiArICcucHknCkBAIC04ODAsNyArODk4LDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlZmlsZV9ub19zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gYSB2YWxpZCBieXRlY29kZSBwYXRoIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHNvdXJjZSBwYXRoLAogICAgICAgICAjIHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgcGF0aC4KLSAgICAgICAgd2l0aCBtb2NrLnBhdGNoKCdpbXBvcnRsaWIuX2Jvb3RzdHJhcC5fcGF0aF9pc2ZpbGUnKSBhcyBfcGF0aF9pc2ZpbGU6CisgICAgICAgIHdpdGggbW9jay5wYXRjaCgnaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX3BhdGhfaXNmaWxlJykgYXMgX3BhdGhfaXNmaWxlOgogICAgICAgICAgICAgX3BhdGhfaXNmaWxlLnJldHVybl92YWx1ZSA9IEZhbHNlOwogICAgICAgICAgICAgcGF0aCA9IFRFU1RGTiArICcucHljJwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZ2V0X3NvdXJjZWZpbGUocGF0aCksIHBhdGgpCkBAIC0xMDM1LDcgKzEwNTMsNyBAQAogICAgICAgICAjIFdlIHNpbXVsYXRlIGEgYnVnIGluIGltcG9ydGxpYiBhbmQgY2hlY2sgdGhhdCBpdCdzIG5vdCBzdHJpcHBlZAogICAgICAgICAjIGF3YXkgZnJvbSB0aGUgdHJhY2ViYWNrLgogICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIiKQotICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBpbXBvcnRsaWIgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWJfZXh0ZXJuYWwnXQogICAgICAgICBpZiAnbG9hZF9tb2R1bGUnIGluIHZhcnMoaW1wb3J0bGliLlNvdXJjZUxvYWRlcik6CiAgICAgICAgICAgICBvbGRfZXhlY19tb2R1bGUgPSBpbXBvcnRsaWIuU291cmNlTG9hZGVyLmV4ZWNfbW9kdWxlCiAgICAgICAgIGVsc2U6CkBAIC0xMDY4LDYgKzEwODYsNDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXNvbGF0ZWQ9RmFsc2UpCiAKIAorY2xhc3MgQ2lyY3VsYXJJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJTZWUgdGhlIGRvY3N0cmluZ3Mgb2YgdGhlIG1vZHVsZXMgYmVpbmcgaW1wb3J0ZWQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZQorICAgIHRlc3QuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIk1ha2Ugc3VyZSBubyBtb2R1bGVzIHByZS1leGlzdCBpbiBzeXMubW9kdWxlcyB3aGljaCBhcmUgYmVpbmcgdXNlZCB0bworICAgICAgICB0ZXN0LiIiIgorICAgICAgICBmb3Iga2V5IGluIGxpc3Qoc3lzLm1vZHVsZXMua2V5cygpKToKKyAgICAgICAgICAgIGlmIGtleS5zdGFydHN3aXRoKCd0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cycpOgorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1trZXldCisKKyAgICBkZWYgdGVzdF9kaXJlY3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0LmRhdGEuY2lyY3VsYXJfaW1wb3J0cy5iYXNpYworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCB0aHJvdWdoIHJlbGF0aXZlIGltcG9ydHMgZmFpbGVkJykKKworICAgIGRlZiB0ZXN0X2luZGlyZWN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuaW5kaXJlY3QKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWxhdGl2ZSBpbXBvcnQgaW4gbW9kdWxlIGNvbnRyaWJ1dGluZyB0byBjaXJjdWxhciAnCisgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBmYWlsZWQnKQorCisgICAgZGVmIHRlc3Rfc3VicGFja2FnZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRlc3QudGVzdF9pbXBvcnQuZGF0YS5jaXJjdWxhcl9pbXBvcnRzLnN1YnBhY2thZ2UKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdjaXJjdWxhciBpbXBvcnQgaW52b2x2aW5nIGEgc3VicGFja2FnZSBmYWlsZWQnKQorCisgICAgZGVmIHRlc3RfcmViaW5kaW5nKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMucmViaW5kaW5nIGFzIHJlYmluZGluZworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ2NpcmN1bGFyIGltcG9ydCB3aXRoIHJlYmluZGluZyBvZiBtb2R1bGUgYXR0cmlidXRlIGZhaWxlZCcpCisgICAgICAgIGZyb20gdGVzdC50ZXN0X2ltcG9ydC5kYXRhLmNpcmN1bGFyX2ltcG9ydHMuc3VicGtnIGltcG9ydCB1dGlsCisgICAgICAgIHNlbGYuYXNzZXJ0SXModXRpbC51dGlsLCByZWJpbmRpbmcudXRpbCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICMgVGVzdCBuZWVkcyB0byBiZSBhIHBhY2thZ2UsIHNvIHdlIGNhbiBkbyByZWxhdGl2ZSBpbXBvcnRzLgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19tYWluX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGYwMmExCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19tYWluX18ucHkKQEAgLTAsMCArMSwzIEBACitpbXBvcnQgdW5pdHRlc3QKKwordW5pdHRlc3QubWFpbigndGVzdC50ZXN0X2ltcG9ydCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvYmFzaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0MWUzOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYy5weQpAQCAtMCwwICsxLDIgQEAKKyIiIkNpcmN1bGFyIGltcG9ydHMgdGhyb3VnaCBkaXJlY3QsIHJlbGF0aXZlIGltcG9ydHMuIiIiCitmcm9tIC4gaW1wb3J0IGJhc2ljMgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2Jhc2ljMi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBiZDJmMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9iYXNpYzIucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGltcG9ydCBiYXNpYwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2luZGlyZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL2luZGlyZWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MjU3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvaW5kaXJlY3QucHkKQEAgLTAsMCArMSBAQAorZnJvbSAuIGltcG9ydCBiYXNpYywgYmFzaWMyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjc3Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZy5weQpAQCAtMCwwICsxLDMgQEAKKyIiIlRlc3QgdGhlIGJpbmRpbmcgb2YgbmFtZXMgd2hlbiBhIGNpcmN1bGFyIGltcG9ydCBzaGFyZXMgdGhlIHNhbWUgbmFtZSBhcyBhbgorYXR0cmlidXRlLiIiIgorZnJvbSAucmViaW5kaW5nMiBpbXBvcnQgdXRpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZzIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvcmViaW5kaW5nMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2E5ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3JlYmluZGluZzIucHkKQEAgLTAsMCArMSwzIEBACitmcm9tIC5zdWJwa2cgaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgcmViaW5kaW5nCit1dGlsID0gdXRpbC51dGlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGFja2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwYWNrYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNDEyZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGFja2FnZS5weQpAQCAtMCwwICsxLDIgQEAKKyIiIkNpcmN1bGFyIGltcG9ydCBpbnZvbHZpbmcgYSBzdWItcGFja2FnZS4iIiIKK2Zyb20gLnN1YnBrZyBpbXBvcnQgc3VicGFja2FnZTIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvc3VicGFja2FnZTIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3N1YnBhY2thZ2UyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3Yjg5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvc3VicGtnL3N1YnBhY2thZ2UyLnB5CkBAIC0wLDAgKzEsMiBAQAorI2Zyb20gLnV0aWwgaW1wb3J0IHV0aWwKK2Zyb20gLi4gaW1wb3J0IHN1YnBhY2thZ2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy9zdWJwa2cvdXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDNiZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZy91dGlsLnB5CkBAIC0wLDAgKzEsMiBAQAorZGVmIHV0aWwoKToKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cy91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0M2JkODQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9kYXRhL2NpcmN1bGFyX2ltcG9ydHMvdXRpbC5weQpAQCAtMCwwICsxLDIgQEAKK2RlZiB1dGlsKCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKaW5kZXggOTM0NTYyZi4uYTJlNmUxZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDIxICsxLDIxIEBACiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBidWlsdGluX3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIEZpbmRTcGVjVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIAogICAgICIiIlRlc3QgZmluZF9zcGVjKCkgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIiIiCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgQ29tbW9uIGNhc2UuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIGZvdW5kID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfc3BlYyhidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZC5vcmlnaW4sICdidWlsdC1pbicpCiAKQEAgLTM5LDIzICszOSwyNiBAQAogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX3NwZWMoYnVpbHRpbl91dGlsLk5BTUUsCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9zcGVjKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNwZWMpCiAKLUZyb3plbl9GaW5kU3BlY1Rlc3RzLCBTb3VyY2VfRmluZFNwZWNUZXN0cyA9IHV0aWwudGVzdF9ib3RoKEZpbmRTcGVjVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKK0B1bml0dGVzdC5za2lwSWYodXRpbC5CVUlMVElOUy5nb29kX25hbWUgaXMgTm9uZSwgJ25vIHJlYXNvbmFibGUgYnVpbHRpbiBtb2R1bGUnKQogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIAogICAgICIiIlRlc3QgZmluZF9tb2R1bGUoKSBmb3IgYnVpbHQtaW4gbW9kdWxlcy4iIiIKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgIyBDb21tb24gY2FzZS4KLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgotICAgICAgICAgICAgZm91bmQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZm91bmQsICdsb2FkX21vZHVsZScpKQogCkBAIC03MiwxMyArNzUsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2lnbm9yZV9wYXRoKHNlbGYpOgogICAgICAgICAjIFRoZSB2YWx1ZSBmb3IgJ3BhdGgnIHNob3VsZCBhbHdheXMgdHJpZ2dlciBhIGZhaWxlZCBpbXBvcnQuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmZpbmRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydwa2cnXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywKLSAgICAgICAgbWFjaGluZXJ5PVtmcm96ZW5fbWFjaGluZXJ5LCBzb3VyY2VfbWFjaGluZXJ5XSkKKworKEZyb3plbl9GaW5kZXJUZXN0cywKKyBTb3VyY2VfRmluZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDFmODM1NzQuLmIxMzQ5ZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMSwxNCArMSwxMyBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgYnVpbHRpbl91dGlsCiAKLWZyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAotCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6CiAKICAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIiIiCkBAIC0yOSw4ICsyOCw4IEBACiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgQ29tbW9uIGNhc2UuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLnZlcmlmeShtb2R1bGUpCiAKICAgICAjIEJ1aWx0LWluIG1vZHVsZXMgY2Fubm90IGJlIGEgcGFja2FnZS4KQEAgLTQxLDkgKzQwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgdGhlIHNhbWUgbW9kdWxlIGlzIHVzZWQgaW4gYSByZWxvYWQuCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGJ1aWx0aW5fdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lKQorICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZTEsIG1vZHVsZTIpCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgpAQCAtNjYsNDAgKzY1LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG1vZHVsZV9uYW1lKQogCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuQlVJTFRJTlMuZ29vZF9uYW1lIGlzIE5vbmUsICdubyByZWFzb25hYmxlIGJ1aWx0aW4gbW9kdWxlJykKIGNsYXNzIEluc3BlY3RMb2FkZXJUZXN0czoKIAogICAgICIiIlRlc3RzIGZvciBJbnNwZWN0TG9hZGVyIG1ldGhvZHMgZm9yIEJ1aWx0aW5JbXBvcnRlci4iIiIKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgotICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X2NvZGUoYnVpbHRpbl91dGlsLk5BTUUpCisgICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfY29kZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NvdXJjZShzZWxmKToKICAgICAgICAgIyBUaGVyZSBpcyBubyBzb3VyY2UuCi0gICAgICAgIHJlc3VsdCA9IHNlbGYubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5nZXRfc291cmNlKGJ1aWx0aW5fdXRpbC5OQU1FKQorICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZ2V0X3NvdXJjZSh1dGlsLkJVSUxUSU5TLmdvb2RfbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgotICAgICAgICByZXN1bHQgPSBzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuaXNfcGFja2FnZShidWlsdGluX3V0aWwuTkFNRSkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmlzX3BhY2thZ2UodXRpbC5CVUlMVElOUy5nb29kX25hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0KQogCisgICAgQHVuaXR0ZXN0LnNraXBJZih1dGlsLkJVSUxUSU5TLmJhZF9uYW1lIGlzIE5vbmUsICdhbGwgbW9kdWxlcyBhcmUgYnVpbHQgaW4nKQogICAgIGRlZiB0ZXN0X25vdF9idWlsdGluKHNlbGYpOgogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsIG1ldGhfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBtZXRob2QoYnVpbHRpbl91dGlsLkJBRF9OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgICAgICBtZXRob2QodXRpbC5CVUlMVElOUy5iYWRfbmFtZSkKIAotRnJvemVuX0luc3BlY3RMb2FkZXJUZXN0cywgU291cmNlX0luc3BlY3RMb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBJbnNwZWN0TG9hZGVyVGVzdHMsCi0gICAgICAgIG1hY2hpbmVyeT1bZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeV0pCisKKyhGcm96ZW5fSW5zcGVjdExvYWRlclRlc3RzLAorIFNvdXJjZV9JbnNwZWN0TG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MDQ2OTkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1pbXBvcnQgc3lzCi0KLWFzc2VydCAnZXJybm8nIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcwotTkFNRSA9ICdlcnJubycKLQotYXNzZXJ0ICdpbXBvcnRsaWInIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKLUJBRF9OQU1FID0gJ2ltcG9ydGxpYicKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IGJiMjUyOGUuLjcwNmMzZTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwyNSArMSwyNCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKIAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCittYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKICMgWFhYIGZpbmRfc3BlYyB0ZXN0cwogCi1AdW5pdHRlc3Quc2tpcElmKGV4dF91dGlsLkZJTEVOQU1FIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCitAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdDoKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmKToKLSAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQorICAgICAgICBnb29kX25hbWUgPSB1dGlsLkVYVEVOU0lPTlMubmFtZQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAorICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKHV0aWwuRVhURU5TSU9OUy5wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKSkKICAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShiYWRfbmFtZSkKQEAgLTI3LDcgKzI2LDcgQEAKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYudW5zZXQoJ1BZVEhPTkNBU0VPSycpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwX2V4dGVybmFsLl9vcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmRfbW9kdWxlKCkKQEAgLTM2LDE1ICszNSwxNiBAQAogICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToKICAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIF9ib290c3RyYXBfZXh0ZXJuYWwuX29zLmVudmlyb246CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAotRnJvemVuX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSwgU291cmNlX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0LAotICAgICAgICBtYWNoaW5lcnk9W2Zyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnldKQorCisoRnJvemVuX0V4dGVuc2lvbkNhc2VTZW5zaXRpdml0eSwKKyBTb3VyY2VfRXh0ZW5zaW9uQ2FzZVNlbnNpdGl2aXR5CisgKSA9IHV0aWwudGVzdF9ib3RoKEV4dGVuc2lvbk1vZHVsZUNhc2VTZW5zaXRpdml0eVRlc3QsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA5OTBmMjljLi43MWJmNjdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC0xLDggKzEsNyBAQAogZnJvbSAuLiBpbXBvcnQgYWJjCi1mcm9tIC4uIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4uIGltcG9ydCB1dGlsCiAKLW1hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCkBAIC0xNCw3ICsxMyw3IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLlBBVEgsCisgICAgICAgIGltcG9ydGVyID0gc2VsZi5tYWNoaW5lcnkuRmlsZUZpbmRlcih1dGlsLkVYVEVOU0lPTlMucGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC0yMiw3ICsyMSw3IEBACiAgICAgICAgICAgICByZXR1cm4gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuTkFNRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKSkKIAogICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgdGVzdF9wYWNrYWdlID0gdGVzdF9wYWNrYWdlX2luX3BhY2thZ2UgPSBOb25lCkBAIC0zNiw4ICszNSwxMCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZF9tb2R1bGUoJ2FzZGZqa2w7JykpCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKaW5kZXggZmQ5YWJmMi4uMTU0YTc5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAogZnJvbSAuLiBpbXBvcnQgYWJjCiBmcm9tIC4uIGltcG9ydCB1dGlsCiAKQEAgLTgsNiArNyw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgaW1wb3J0bGliCiAKIAogY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKQEAgLTE1LDggKzE2LDggQEAKICAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dF91dGlsLkZJTEVQQVRIKQorICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIodXRpbC5FWFRFTlNJT05TLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKQogCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKGZ1bGxuYW1lKQpAQCAtMjksMjMgKzMwLDIzIEBACiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKCdYWFgnKQogCiAgICAgZGVmIHRlc3RfZXF1YWxpdHkoc2VsZik6Ci0gICAgICAgIG90aGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisgICAgICAgIG90aGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcih1dGlsLkVYVEVOU0lPTlMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuRVhURU5TSU9OUy5maWxlX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIsIG90aGVyKQogCiAgICAgZGVmIHRlc3RfaW5lcXVhbGl0eShzZWxmKToKLSAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfJyArIGV4dF91dGlsLk5BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRfdXRpbC5GSUxFUEFUSCkKKyAgICAgICAgb3RoZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfJyArIHV0aWwuRVhURU5TSU9OUy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5FWFRFTlNJT05TLmZpbGVfcGF0aCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmxvYWRlciwgb3RoZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgZXh0X3V0aWwuTkFNRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBleHRfdXRpbC5GSUxFUEFUSCksCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHV0aWwuRVhURU5TSU9OUy5uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGUodXRpbC5FWFRFTlNJT05TLm5hbWUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCB1dGlsLkVYVEVOU0lPTlMubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCB1dGlsLkVYVEVOU0lPTlMuZmlsZV9wYXRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odXRpbC5FWFRFTlNJT05TLm5hbWUsIHN5cy5tb2R1bGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZS5fX2xvYWRlcl9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIpCiAKQEAgLTU2LDkgKzU3LDkgQEAKICAgICB0ZXN0X2xhY2tpbmdfcGFyZW50ID0gTm9uZQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKLSAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCi0gICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSh1dGlsLkVYVEVOU0lPTlMubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZSh1dGlsLkVYVEVOU0lPTlMubmFtZSkKKyAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKHV0aWwuRVhURU5TSU9OUy5uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogCiAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgpAQCAtNzEsMTUgKzcyLDE5NiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKGV4dF91dGlsLk5BTUUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2UodXRpbC5FWFRFTlNJT05TLm5hbWUpKQogICAgICAgICBmb3Igc3VmZml4IGluIHNlbGYubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ3NvbWUnLCAncGF0aCcsICdwa2cnLCAnX19pbml0X18nICsgc3VmZml4KQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCiAKLUZyb3plbl9Mb2FkZXJUZXN0cywgU291cmNlX0xvYWRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExvYWRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorKEZyb3plbl9Mb2FkZXJUZXN0cywKKyBTb3VyY2VfTG9hZGVyVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoTG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKK2NsYXNzIE11bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgorICAgICIiIlRlc3QgbG9hZGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIChQRVAgNDg5KQorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm5hbWUgPSAnX3Rlc3RtdWx0aXBoYXNlJworICAgICAgICBmaW5kZXIgPSBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyKE5vbmUpCisgICAgICAgIHNlbGYuc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhzZWxmLm5hbWUpCisgICAgICAgIGFzc2VydCBzZWxmLnNwZWMKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKAorICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLnNwZWMub3JpZ2luKQorCisgICAgIyBObyBleHRlbnNpb24gbW9kdWxlIGFzIF9faW5pdF9fIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICB0ZXN0X3BhY2thZ2UgPSBOb25lCisKKyAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICB0ZXN0X2xhY2tpbmdfcGFyZW50ID0gTm9uZQorCisgICAgIyBIYW5kbGluZyBmYWlsdXJlIG9uIHJlbG9hZCBpcyB0aGUgdXAgdG8gdGhlIG1vZHVsZS4KKyAgICB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUgPSBOb25lCisKKyAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgbG9hZGluZyBhbiBleHRlbnNpb24gbW9kdWxlJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBbKCdfX25hbWVfXycsIHNlbGYubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBzZWxmLnNwZWMub3JpZ2luKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZSwgc3lzLm1vZHVsZXNbc2VsZi5uYW1lXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25hbGl0eShzZWxmKToKKyAgICAgICAgJycnVGVzdCBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHN0dWZmIGRlZmluZWQgaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZScnJworICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICAgICAgZXggPSBtb2R1bGUuRXhhbXBsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmRlbW8oJ2FiY2QnKSwgJ2FiY2QnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5kZW1vKCksIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBleC5hYmMKKyAgICAgICAgICAgIGV4LmFiYyA9IDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYWJjLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuZm9vKDksIDkpLCAxOCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuU3RyKCksIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLlN0cigxKSArICcyMycsICcxMjMnKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhtb2R1bGUuZXJyb3IpOgorICAgICAgICAgICAgICAgIHJhaXNlIG1vZHVsZS5lcnJvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5pbnRfY29uc3QsIDE5NjkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5zdHJfY29uc3QsICdzb21ldGhpbmcgZGlmZmVyZW50JykKKworICAgIGRlZiB0ZXN0X3JlbG9hZChzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IHJlbG9hZCBkaWRuJ3QgcmUtc2V0IHRoZSBtb2R1bGUncyBhdHRyaWJ1dGVzJycnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKCkKKyAgICAgICAgICAgIGV4X2NsYXNzID0gbW9kdWxlLkV4YW1wbGUKKyAgICAgICAgICAgIGltcG9ydGxpYi5yZWxvYWQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhleF9jbGFzcywgbW9kdWxlLkV4YW1wbGUpCisKKyAgICBkZWYgdGVzdF90cnlfcmVnaXN0cmF0aW9uKHNlbGYpOgorICAgICAgICAnJydBc3NlcnQgdGhhdCB0aGUgUHlTdGF0ZV97RmluZCxBZGQsUmVtb3ZlfU1vZHVsZSBDIEFQSSBkb2Vzbid0IHdvcmsnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZSgpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdQeVN0YXRlX0ZpbmRNb2R1bGUnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoMCksIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdQeVN0YXRlX0FkZE1vZHVsZScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcik6CisgICAgICAgICAgICAgICAgbW9kdWxlLmNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMoMSkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ1B5U3RhdGVfUmVtb3ZlTW9kdWxlJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYygyKQorCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYpOgorICAgICAgICAnJydMb2FkIHRoZSBtb2R1bGUgZnJvbSB0aGUgdGVzdCBleHRlbnNpb24nJycKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKKworICAgIGRlZiBsb2FkX21vZHVsZV9ieV9uYW1lKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgJycnTG9hZCBhIG1vZHVsZSBmcm9tIHRoZSB0ZXN0IGV4dGVuc2lvbiBieSBuYW1lJycnCisgICAgICAgIG9yaWdpbiA9IHNlbGYuc3BlYy5vcmlnaW4KKyAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgb3JpZ2luKQorICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2xvYWRlcihmdWxsbmFtZSwgbG9hZGVyKQorICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiB0ZXN0X2xvYWRfc3VibW9kdWxlKHNlbGYpOgorICAgICAgICAnJydUZXN0IGxvYWRpbmcgYSBzaW11bGF0ZWQgc3VibW9kdWxlJycnCisgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZSgncGtnLicgKyBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnLicgKyBzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLnN0cl9jb25zdCwgJ3NvbWV0aGluZyBkaWZmZXJlbnQnKQorCisgICAgZGVmIHRlc3RfbG9hZF9zaG9ydF9uYW1lKHNlbGYpOgorICAgICAgICAnJydUZXN0IGxvYWRpbmcgbW9kdWxlIHdpdGggYSBvbmUtY2hhcmFjdGVyIG5hbWUnJycKKyAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKCd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuc3RyX2NvbnN0LCAnc29tZXRoaW5nIGRpZmZlcmVudCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3gnLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X2xvYWRfdHdpY2Uoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgdGhhdCAyIGxvYWRzIHJlc3VsdCBpbiAyIG1vZHVsZSBvYmplY3RzJycnCisgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUoc2VsZi5uYW1lKQorICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKHNlbGYubmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3RfdW5sb2FkYWJsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCBub25leGlzdGVudCBtb2R1bGUnJycKKyAgICAgICAgbmFtZSA9ICdhc2RmamtsOycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X3VubG9hZGFibGVfbm9uYXNjaWkoc2VsZik6CisgICAgICAgICcnJ1Rlc3QgYmVoYXZpb3Igd2l0aCBub25leGlzdGVudCBtb2R1bGUgd2l0aCBub24tQVNDSUkgbmFtZScnJworICAgICAgICBuYW1lID0gJ2ZvXHhmMycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X25vbm1vZHVsZShzZWxmKToKKyAgICAgICAgJycnVGVzdCByZXR1cm5pbmcgYSBub24tbW9kdWxlIG9iamVjdCBmcm9tIGNyZWF0ZSB3b3JrcycnJworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJ19ub25tb2R1bGUnCisgICAgICAgIG1vZCA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHR5cGUobW9kKSwgdHlwZSh1bml0dGVzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRocmVlLCAzKQorCisgICAgZGVmIHRlc3RfbnVsbF9zbG90cyhzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IE5VTEwgc2xvdHMgYXJlbid0IGEgcHJvYmxlbScnJworICAgICAgICBuYW1lID0gc2VsZi5uYW1lICsgJ19udWxsX3Nsb3RzJworICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlX2J5X25hbWUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9iYWRfbW9kdWxlcyhzZWxmKToKKyAgICAgICAgJycnVGVzdCBTeXN0ZW1FcnJvciBpcyByYWlzZWQgZm9yIG1pc2JlaGF2aW5nIGV4dGVuc2lvbnMnJycKKyAgICAgICAgZm9yIG5hbWVfYmFzZSBpbiBbCisgICAgICAgICAgICAgICAgJ2JhZF9zbG90X2xhcmdlJywKKyAgICAgICAgICAgICAgICAnYmFkX3Nsb3RfbmVnYXRpdmUnLAorICAgICAgICAgICAgICAgICdjcmVhdGVfaW50X3dpdGhfc3RhdGUnLAorICAgICAgICAgICAgICAgICduZWdhdGl2ZV9zaXplJywKKyAgICAgICAgICAgICAgICAnZXhwb3J0X251bGwnLAorICAgICAgICAgICAgICAgICdleHBvcnRfdW5pbml0aWFsaXplZCcsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF9yYWlzZScsCisgICAgICAgICAgICAgICAgJ2V4cG9ydF91bnJlcG9ydGVkX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgJ2NyZWF0ZV9udWxsJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX3JhaXNlJywKKyAgICAgICAgICAgICAgICAnY3JlYXRlX3VucmVwb3J0ZWRfZXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAnbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cycsCisgICAgICAgICAgICAgICAgJ2V4ZWNfZXJyJywKKyAgICAgICAgICAgICAgICAnZXhlY19yYWlzZScsCisgICAgICAgICAgICAgICAgJ2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24nLAorICAgICAgICAgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lX2Jhc2UpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgKyAnXycgKyBuYW1lX2Jhc2UKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZV9ieV9uYW1lKG5hbWUpCisKKyAgICBkZWYgdGVzdF9ub25hc2NpaShzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IG1vZHVsZXMgd2l0aCBub24tQVNDSUkgbmFtZXMgY2FuIGJlIGxvYWRlZCcnJworICAgICAgICAjIHB1bnljb2RlIGJlaGF2ZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgaW4gc29tZS1BU0NJSSBhbmQgbm8tQVNDSUkKKyAgICAgICAgIyBjYXNlcywgc28gdGVzdCBib3RoCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgKHNlbGYubmFtZSArICdfemtvdVx1MDE2MWthX25hXHUwMTBkdGVuXHhlZCcsICdDemVjaCcpLAorICAgICAgICAgICAgKCdcdWZmM2ZcdTMwYTRcdTMwZjNcdTMwZGRcdTMwZmNcdTMwYzhcdTMwYzZcdTMwYjlcdTMwYzgnLAorICAgICAgICAgICAgICdKYXBhbmVzZScpLAorICAgICAgICAgICAgXQorICAgICAgICBmb3IgbmFtZSwgbGFuZyBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWUpOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZF9tb2R1bGVfYnlfbmFtZShuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZG9jX18sICJNb2R1bGUgbmFtZWQgaW4gJXMiICUgbGFuZykKKworCisoRnJvemVuX011bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cywKKyBTb3VyY2VfTXVsdGlQaGFzZUV4dGVuc2lvbk1vZHVsZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKE11bHRpUGhhc2VFeHRlbnNpb25Nb2R1bGVUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDQ5ZDY3MzQuLjhmNGI4YmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNyArMSw2IEBACi1mcm9tIC4uIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4uIGltcG9ydCB1dGlsCiAKLW1hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IHN5cwpAQCAtMjIsMTAgKzIxLDEyIEBACiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBQYXRoIGhvb2sgc2hvdWxkIGhhbmRsZSBhIGRpcmVjdG9yeSB3aGVyZSBhIGtub3duIGV4dGVuc2lvbiBtb2R1bGUKICAgICAgICAgIyBleGlzdHMuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYuaG9vayh1dGlsLlBBVEgpLCAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5ob29rKHV0aWwuRVhURU5TSU9OUy5wYXRoKSwgJ2ZpbmRfbW9kdWxlJykpCiAKLUZyb3plbl9QYXRoSG9va3NUZXN0cywgU291cmNlX1BhdGhIb29rc1Rlc3RzID0gdGVzdF91dGlsLnRlc3RfYm90aCgKLSAgICAgICAgUGF0aEhvb2tUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9QYXRoSG9va3NUZXN0cywKKyBTb3VyY2VfUGF0aEhvb2tzVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQwODlmMC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1QQVRIID0gTm9uZQotRVhUID0gTm9uZQotRklMRU5BTUUgPSBOb25lCi1OQU1FID0gJ190ZXN0Y2FwaScKLXRyeToKLSAgICBmb3IgUEFUSCBpbiBzeXMucGF0aDoKLSAgICAgICAgZm9yIEVYVCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgotICAgICAgICAgICAgRklMRU5BTUUgPSBOQU1FICsgRVhUCi0gICAgICAgICAgICBGSUxFUEFUSCA9IG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihQQVRILCBGSUxFTkFNRSkpOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICBlbHNlOgotICAgICAgICBQQVRIID0gRVhUID0gRklMRU5BTUUgPSBGSUxFUEFUSCA9IE5vbmUKLWV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQppbmRleCBmOWY5N2YzLi41MTlhYTAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfZmluZGVyLnB5CkBAIC0zNyw4ICszNywxMCBAQAogICAgICAgICBzcGVjID0gc2VsZi5maW5kKCc8bm90IHJlYWw+JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3BlYykKIAotRnJvemVuX0ZpbmRTcGVjVGVzdHMsIFNvdXJjZV9GaW5kU3BlY1Rlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CkBAIC03Miw4ICs3NCwxMCBAQAogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKLUZyb3plbl9GaW5kZXJUZXN0cywgU291cmNlX0ZpbmRlclRlc3RzID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fRmluZGVyVGVzdHMsCisgU291cmNlX0ZpbmRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKaW5kZXggN2MwMTQ2NC4uNjAzYzdkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtODUsOCArODUsMTAgQEAKICAgICAgICAgICAgIHNlbGYuZXhlY19tb2R1bGUoJ19ub3RfcmVhbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCi1Gcm96ZW5fRXhlY01vZHVsZVRlc3RzLCBTb3VyY2VfRXhlY01vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoRXhlY01vZHVsZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0V4ZWNNb2R1bGVUZXN0cywKKyBTb3VyY2VfRXhlY01vZHVsZVRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEV4ZWNNb2R1bGVUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBMb2FkZXJUZXN0cyhhYmMuTG9hZGVyVGVzdHMpOgpAQCAtMTc1LDggKzE3NywxMCBAQAogICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19ub3RfcmVhbCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsICdfbm90X3JlYWwnKQogCi1Gcm96ZW5fTG9hZGVyVGVzdHMsIFNvdXJjZV9Mb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0xvYWRlclRlc3RzLAorIFNvdXJjZV9Mb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyVGVzdHM6CkBAIC0yMTQsOCArMjE4LDkgQEAKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAotRnJvemVuX0lMVGVzdHMsIFNvdXJjZV9JTFRlc3RzID0gdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyhGcm96ZW5fSUxUZXN0cywKKyBTb3VyY2VfSUxUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX2xvYWRlcl9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKaW5kZXggNmRmODAxMC4uNGIxODA5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fbG9hZGVyX18ucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIAogY2xhc3MgU3BlY0xvYWRlck1vY2s6CkBAIC0xMiw2ICsxMSw5IEBACiAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBtYWNoaW5lcnkuTW9kdWxlU3BlYyhmdWxsbmFtZSwgc2VsZikKIAorICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgIHBhc3MKIApAQCAtMjQsOCArMjYsMTAgQEAKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnYmxhaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKIAotRnJvemVuX1NwZWNUZXN0cywgU291cmNlX1NwZWNUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTcGVjTG9hZGVyQXR0cmlidXRlVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9TcGVjVGVzdHMsCisgU291cmNlX1NwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTcGVjTG9hZGVyQXR0cmlidXRlVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIExvYWRlck1vY2s6CkBAIC02Miw4ICs2Niw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBtb2R1bGUuX19sb2FkZXJfXykKIAogCi1Gcm96ZW5fVGVzdHMsIFNvdXJjZV9UZXN0cyA9IHV0aWwudGVzdF9ib3RoKExvYWRlckF0dHJpYnV0ZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisoRnJvemVuX1Rlc3RzLAorIFNvdXJjZV9UZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChMb2FkZXJBdHRyaWJ1dGVUZXN0cywgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCAyZTE5NzI1Li5jN2QzYTJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC02LDcgKzYsNiBAQAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogCiAKIGNsYXNzIFVzaW5nX19wYWNrYWdlX186CkBAIC03MCwxNyArNjksMjMgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAorCiBjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzCiAKLUZyb3plbl9Vc2luZ1BhY2thZ2VQRVAzMDIsIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQogCi1jbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgorKEZyb3plbl9Vc2luZ1BhY2thZ2VQRVAzMDIsCisgU291cmNlX1VzaW5nUGFja2FnZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChVc2luZ19fcGFja2FnZV9fUEVQMzAyLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKKworCitjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQNDUxKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19zcGVjCiAKLUZyb3plbl9Vc2luZ1BhY2thZ2VQRVA0NTEsIFNvdXJjZV9Vc2luZ1BhY2thZ2VQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMiwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1VzaW5nUGFja2FnZVBFUDQ1MSwKKyBTb3VyY2VfVXNpbmdQYWNrYWdlUEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKFVzaW5nX19wYWNrYWdlX19QRVA0NTEsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIFNldHRpbmdfX3BhY2thZ2VfXzoKQEAgLTk1LDcgKzEwMCw3IEBACiAKICAgICAiIiIKIAotICAgIF9faW1wb3J0X18gPSBpbXBvcnRfdXRpbC5fX2ltcG9ydF9fWzFdCisgICAgX19pbXBvcnRfXyA9IHV0aWwuX19pbXBvcnRfX1snU291cmNlJ10KIAogICAgICMgW3RvcC1sZXZlbF0KICAgICBkZWYgdGVzdF90b3BfbGV2ZWwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQppbmRleCA0MzljMTA1Li43MDY5ZDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogaW1wb3J0IHN5cwpAQCAtMTgsNiArMTcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBzcGVjCiAKICAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc3BlYyk6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGV4ZWNfbW9kdWxlKG1vZHVsZSk6CiAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyA9PSBTVUJNT0RfTkFNRToKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdJIGNhbm5vdCBiZSBsb2FkZWQhJykKQEAgLTc5LDE1ICs4MiwxOSBAQAogY2xhc3MgT2xkQVBJVGVzdHMoQVBJVGVzdCk6CiAgICAgYmFkX2ZpbmRlcl9sb2FkZXIgPSBCYWRMb2FkZXJGaW5kZXIKIAotRnJvemVuX09sZEFQSVRlc3RzLCBTb3VyY2VfT2xkQVBJVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgT2xkQVBJVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9PbGRBUElUZXN0cywKKyBTb3VyY2VfT2xkQVBJVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoT2xkQVBJVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIFNwZWNBUElUZXN0cyhBUElUZXN0KToKICAgICBiYWRfZmluZGVyX2xvYWRlciA9IEJhZFNwZWNGaW5kZXJMb2FkZXIKIAotRnJvemVuX1NwZWNBUElUZXN0cywgU291cmNlX1NwZWNBUElUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTcGVjQVBJVGVzdHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9TcGVjQVBJVGVzdHMsCisgU291cmNlX1NwZWNBUElUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTcGVjQVBJVGVzdHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CmluZGV4IGMyOTJlZTQuLjgwNzlhZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCB0aGF0IHN5cy5tb2R1bGVzIGlzIHVzZWQgcHJvcGVybHkgYnkgaW1wb3J0LiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM5LDE1ICszOCwxNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXyhuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAotRnJvemVuX1VzZUNhY2hlLCBTb3VyY2VfVXNlQ2FjaGUgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgVXNlQ2FjaGUsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9Vc2VDYWNoZSwKKyBTb3VyY2VfVXNlQ2FjaGUKKyApID0gdXRpbC50ZXN0X2JvdGgoVXNlQ2FjaGUsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIEltcG9ydGxpYlVzZUNhY2hlKFVzZUNhY2hlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFBlcnRpbmVudCBvbmx5IHRvIFBFUCAzMDI7IGV4ZWNfbW9kdWxlKCkgZG9lc24ndCByZXR1cm4gYSBtb2R1bGUuCiAKLSAgICBfX2ltcG9ydF9fID0gaW1wb3J0X3V0aWwuX19pbXBvcnRfX1sxXQorICAgIF9faW1wb3J0X18gPSB1dGlsLl9faW1wb3J0X19bJ1NvdXJjZSddCiAKICAgICBkZWYgY3JlYXRlX21vY2soc2VsZiwgKm5hbWVzLCByZXR1cm5fPU5vbmUpOgogICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoKm5hbWVzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGE3NTViNzUuLjgwNDU0NjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHRoYXQgdGhlIHNlbWFudGljcyByZWxhdGluZyB0byB0aGUgJ2Zyb21saXN0JyBhcmd1bWVudCBhcmUgY29ycmVjdC4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IHVuaXR0ZXN0CiAKIApAQCAtMjksOCArMjgsMTAgQEAKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9faW1wb3J0X18oJ3BrZy5tb2R1bGUnLCBmcm9tbGlzdD1bJ2F0dHInXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi1Gcm96ZW5fUmV0dXJuVmFsdWUsIFNvdXJjZV9SZXR1cm5WYWx1ZSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBSZXR1cm5WYWx1ZSwgX19pbXBvcnRfXz1pbXBvcnRfdXRpbC5fX2ltcG9ydF9fKQorCisoRnJvemVuX1JldHVyblZhbHVlLAorIFNvdXJjZV9SZXR1cm5WYWx1ZQorICkgPSB1dGlsLnRlc3RfYm90aChSZXR1cm5WYWx1ZSwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogY2xhc3MgSGFuZGxpbmdGcm9tbGlzdDoKQEAgLTEyMSw4ICsxMjIsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUxLl9fbmFtZV9fLCAncGtnLm1vZHVsZTEnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZTIuX19uYW1lX18sICdwa2cubW9kdWxlMicpCiAKLUZyb3plbl9Gcm9tTGlzdCwgU291cmNlX0Zyb21MaXN0ID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEhhbmRsaW5nRnJvbWxpc3QsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9Gcm9tTGlzdCwKKyBTb3VyY2VfRnJvbUxpc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoSGFuZGxpbmdGcm9tbGlzdCwgX19pbXBvcnRfXz11dGlsLl9faW1wb3J0X18pCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CmluZGV4IDVlZWIxNDUuLmM0NTJjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X21ldGFfcGF0aC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAogaW1wb3J0IGltcG9ydGxpYi5fYm9vdHN0cmFwCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCkBAIC00Niw4ICs0NSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKIAotRnJvemVuX0NhbGxpbmdPcmRlciwgU291cmNlX0NhbGxpbmdPcmRlciA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBDYWxsaW5nT3JkZXIsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsaW5nT3JkZXIsCisgU291cmNlX0NhbGxpbmdPcmRlcgorICkgPSB1dGlsLnRlc3RfYm90aChDYWxsaW5nT3JkZXIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGNsYXNzIENhbGxTaWduYXR1cmU6CkBAIC0xMDAsMTkgKzEwMSwyNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgbW9kX25hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBwYXRoKQogCisKIGNsYXNzIENhbGxTaWduYXR1cmVQRVAzMDIoQ2FsbFNpZ25hdHVyZSk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKICAgICBmaW5kZXJfbmFtZSA9ICdmaW5kX21vZHVsZScKIAotRnJvemVuX0NhbGxTaWduYXR1cmVQRVAzMDIsIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQMzAyID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIENhbGxTaWduYXR1cmVQRVAzMDIsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9DYWxsU2lnbmF0dXJlUEVQMzAyLAorIFNvdXJjZV9DYWxsU2lnbmF0dXJlUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKENhbGxTaWduYXR1cmVQRVAzMDIsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQorCiAKIGNsYXNzIENhbGxTaWduYXR1cmVQRVA0NTEoQ2FsbFNpZ25hdHVyZSk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX3NwZWMKICAgICBmaW5kZXJfbmFtZSA9ICdmaW5kX3NwZWMnCiAKLUZyb3plbl9DYWxsU2lnbmF0dXJlUEVQNDUxLCBTb3VyY2VfQ2FsbFNpZ25hdHVyZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBDYWxsU2lnbmF0dXJlUEVQNDUxLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fQ2FsbFNpZ25hdHVyZVBFUDQ1MSwKKyBTb3VyY2VfQ2FsbFNpZ25hdHVyZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChDYWxsU2lnbmF0dXJlUEVQNDUxLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CmluZGV4IDU1YTVkMTQuLjM3NTViODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgpAQCAtMTAyLDggKzEwMSwxMCBAQAogICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKHN1Ym5hbWUpCiAKLUZyb3plbl9QYXJlbnRUZXN0cywgU291cmNlX1BhcmVudFRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFBhcmVudE1vZHVsZVRlc3RzLCBfX2ltcG9ydF9fPWltcG9ydF91dGlsLl9faW1wb3J0X18pCisKKyhGcm96ZW5fUGFyZW50VGVzdHMsCisgU291cmNlX1BhcmVudFRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFBhcmVudE1vZHVsZVRlc3RzLCBfX2ltcG9ydF9fPXV0aWwuX19pbXBvcnRfXykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQppbmRleCAxMjc0ZjhjLi40MzU5ZGQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpAQCAtMSwxMSArMSwxMiBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKK2ltcG9ydCBlcnJubwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKIGZyb20gdHlwZXMgaW1wb3J0IE1vZHVsZVR5cGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCkBAIC01OCw3ICs1OSw3IEBACiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKLSAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQpAQCAtODMsNyArODQsNyBAQAogICAgICAgICBwYXRoID0gJycKICAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQotICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2sob3MuZ2V0Y3dkKCksIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5nZXRjd2QoKSwgaW1wb3J0ZXI9aW1wb3J0ZXIpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bcGF0aF0sIHBhdGhfaG9va3M9W2hvb2tdKToKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQpAQCAtOTgsNyArOTksNyBAQAogICAgICAgICBuZXdfcGF0aF9pbXBvcnRlcl9jYWNoZS5wb3AoTm9uZSwgTm9uZSkKICAgICAgICAgbmV3X3BhdGhfaG9va3MgPSBbemlwaW1wb3J0LnppcGltcG9ydGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLmltcG9ydGxpYi5fYm9vdHN0cmFwLl9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLmltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpKV0KICAgICAgICAgbWlzc2luZyA9IG9iamVjdCgpCiAgICAgICAgIGVtYWlsID0gc3lzLm1vZHVsZXMucG9wKCdlbWFpbCcsIG1pc3NpbmcpCiAgICAgICAgIHRyeToKQEAgLTExMiw4ICsxMTMsNzQgQEAKICAgICAgICAgICAgIGlmIGVtYWlsIGlzIG5vdCBtaXNzaW5nOgogICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydlbWFpbCddID0gZW1haWwKIAotRnJvemVuX0ZpbmRlclRlc3RzLCBTb3VyY2VfRmluZGVyVGVzdHMgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmluZF9tb2R1bGUoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RGaW5kZXI6CisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRvX3JldHVybgorICAgICAgICBmYWlsaW5nX2ZpbmRlciA9IFRlc3RGaW5kZXIoKQorICAgICAgICBmYWlsaW5nX2ZpbmRlci50b19yZXR1cm4gPSBOb25lCisgICAgICAgIHBhdGggPSAndGVzdGluZyBwYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGZhaWxpbmdfZmluZGVyfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKSkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIgPSBUZXN0RmluZGVyKCkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIudG9fcmV0dXJuID0gX19sb2FkZXJfXworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IHN1Y2Nlc3NfZmluZGVyfSk6CisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLCBfX2xvYWRlcl9fKQorCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmluZF9sb2FkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RGaW5kZXI6CisgICAgICAgICAgICBsb2FkZXIgPSBOb25lCisgICAgICAgICAgICBwb3J0aW9ucyA9IFtdCisgICAgICAgICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvYWRlciwgc2VsZi5wb3J0aW9ucworICAgICAgICBwYXRoID0gJ3Rlc3RpbmcgcGF0aCcKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBUZXN0RmluZGVyKCl9KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pKQorICAgICAgICBzdWNjZXNzX2ZpbmRlciA9IFRlc3RGaW5kZXIoKQorICAgICAgICBzdWNjZXNzX2ZpbmRlci5sb2FkZXIgPSBfX2xvYWRlcl9fCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogc3VjY2Vzc19maW5kZXJ9KToKKyAgICAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInLCBbcGF0aF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5sb2FkZXIsIF9fbG9hZGVyX18pCisKKyAgICBkZWYgdGVzdF9maW5kZXJfd2l0aF9maW5kX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RGaW5kZXI6CisgICAgICAgICAgICBzcGVjID0gTm9uZQorICAgICAgICAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNwZWMKKyAgICAgICAgcGF0aCA9ICd0ZXN0aW5nIHBhdGgnCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogVGVzdEZpbmRlcigpfSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKSkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIgPSBUZXN0RmluZGVyKCkKKyAgICAgICAgc3VjY2Vzc19maW5kZXIuc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3doYXRldmVyJywgX19sb2FkZXJfXykKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBzdWNjZXNzX2ZpbmRlcn0pOgorICAgICAgICAgICAgZ290ID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJywgW3BhdGhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdCwgc3VjY2Vzc19maW5kZXIuc3BlYykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICJjd2QgY2FuJ3Qgbm90IGV4aXN0IG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X2RlbGV0ZWRfY3dkKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMjgzNAorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2hkaXIsIG9zLmdldGN3ZCgpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHBhdGg6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIocGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVJTlZBTDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwbGF0Zm9ybSBkb2VzIG5vdCBhbGxvdyB0aGUgZGVsZXRpb24gb2YgdGhlIGN3ZCIpCisgICAgICAgICAgICByYWlzZQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9WycnXSk6CisgICAgICAgICAgICAjIERvIG5vdCB3YW50IEZpbGVOb3RGb3VuZEVycm9yIHJhaXNlZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicpKQorCisKKworCisoRnJvemVuX0ZpbmRlclRlc3RzLAorIFNvdXJjZV9GaW5kZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXJUZXN0czoKQEAgLTEzNiw4ICsyMDMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPVtGaW5kZXJdKToKICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCdpbXBvcnRsaWInKQogCi1Gcm96ZW5fUEVGVGVzdHMsIFNvdXJjZV9QRUZUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBQYXRoRW50cnlGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9QRUZUZXN0cywKKyBTb3VyY2VfUEVGVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUGF0aEVudHJ5RmluZGVyVGVzdHMsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggYjIxNmU5Yy4uMjhiYjZmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHJlbGF0aXZlIGltcG9ydHMgKFBFUCAzMjgpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtMjA4LDggKzIwNywxMCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSkKIAotRnJvemVuX1JlbGF0aXZlSW1wb3J0cywgU291cmNlX1JlbGF0aXZlSW1wb3J0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBSZWxhdGl2ZUltcG9ydHMsIF9faW1wb3J0X189aW1wb3J0X3V0aWwuX19pbXBvcnRfXykKKworKEZyb3plbl9SZWxhdGl2ZUltcG9ydHMsCisgU291cmNlX1JlbGF0aXZlSW1wb3J0cworICkgPSB1dGlsLnRlc3RfYm90aChSZWxhdGl2ZUltcG9ydHMsIF9faW1wb3J0X189dXRpbC5fX2ltcG9ydF9fKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYjQ5MGYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotCi1mcm96ZW5faW1wb3J0bGliLCBzb3VyY2VfaW1wb3J0bGliID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotCi1pbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBmdW5jdG9vbHMKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCB1bml0dGVzdAotCi0KLV9faW1wb3J0X18gPSBzdGF0aWNtZXRob2QoYnVpbHRpbnMuX19pbXBvcnRfXyksIHN0YXRpY21ldGhvZChzb3VyY2VfaW1wb3J0bGliLl9faW1wb3J0X18pCi0KLQotZGVmIG1vY2tfcGF0aF9ob29rKCplbnRyaWVzLCBpbXBvcnRlcik6Ci0gICAgIiIiQSBtb2NrIHN5cy5wYXRoX2hvb2tzIGVudHJ5LiIiIgotICAgIGRlZiBob29rKGVudHJ5KToKLSAgICAgICAgaWYgZW50cnkgbm90IGluIGVudHJpZXM6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICByZXR1cm4gaW1wb3J0ZXIKLSAgICByZXR1cm4gaG9vawpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggZWZkMzE0Ni4uYzI3NGIzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBjYXNlLXNlbnNpdGl2aXR5IChQRVAgMjM1KS4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBpbXBvcnRsaWIgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQpAQCAtMzIsNyArMzEsNyBAQAogICAgICAgICAiIiJMb29rIGZvciBhIG1vZHVsZSB3aXRoIG1hdGNoaW5nIGFuZCBub24tbWF0Y2hpbmcgc2Vuc2l0aXZpdHkuIiIiCiAgICAgICAgIHNlbnNpdGl2ZV9wa2cgPSAnc2Vuc2l0aXZlLnswfScuZm9ybWF0KHNlbGYubmFtZSkKICAgICAgICAgaW5zZW5zaXRpdmVfcGtnID0gJ2luc2Vuc2l0aXZlLnswfScuZm9ybWF0KHNlbGYubmFtZS5sb3dlcigpKQotICAgICAgICBjb250ZXh0ID0gc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoaW5zZW5zaXRpdmVfcGtnLCBzZW5zaXRpdmVfcGtnKQorICAgICAgICBjb250ZXh0ID0gdXRpbC5jcmVhdGVfbW9kdWxlcyhpbnNlbnNpdGl2ZV9wa2csIHNlbnNpdGl2ZV9wa2cpCiAgICAgICAgIHdpdGggY29udGV4dCBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2Vuc2l0aXZlX3BhdGggPSBvcy5wYXRoLmpvaW4obWFwcGluZ1snLnJvb3QnXSwgJ3NlbnNpdGl2ZScpCiAgICAgICAgICAgICBpbnNlbnNpdGl2ZV9wYXRoID0gb3MucGF0aC5qb2luKG1hcHBpbmdbJy5yb290J10sICdpbnNlbnNpdGl2ZScpCkBAIC00Myw3ICs0Miw3IEBACiAgICAgZGVmIHRlc3Rfc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQotICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIHNlbGYuaW1wb3J0bGliLl9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgaW4gc2VsZi5pbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgc2Vuc2l0aXZlLCBpbnNlbnNpdGl2ZSA9IHNlbGYuc2Vuc2l0aXZpdHlfdGVzdCgpCkBAIC01NCw3ICs1Myw3IEBACiAgICAgZGVmIHRlc3RfaW5zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CiAgICAgICAgICAgICBlbnYuc2V0KCdQWVRIT05DQVNFT0snLCAnMScpCi0gICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIHNlbGYuaW1wb3J0bGliLl9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICBpZiBiJ1BZVEhPTkNBU0VPSycgbm90IGluIHNlbGYuaW1wb3J0bGliLl9ib290c3RyYXBfZXh0ZXJuYWwuX29zLmVudmlyb246CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIHNlbnNpdGl2ZSwgaW5zZW5zaXRpdmUgPSBzZWxmLnNlbnNpdGl2aXR5X3Rlc3QoKQpAQCAtNjMsMjAgKzYyLDI4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShpbnNlbnNpdGl2ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBpbnNlbnNpdGl2ZS5nZXRfZmlsZW5hbWUoc2VsZi5uYW1lKSkKIAorCiBjbGFzcyBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyKENhc2VTZW5zaXRpdml0eVRlc3QpOgogICAgIGRlZiBmaW5kKHNlbGYsIGZpbmRlcik6CiAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUoc2VsZi5uYW1lKQogCi1Gcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiwgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIsCisgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDMwMiwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKwogCiBjbGFzcyBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxKENhc2VTZW5zaXRpdml0eVRlc3QpOgogICAgIGRlZiBmaW5kKHNlbGYsIGZpbmRlcik6CiAgICAgICAgIGZvdW5kID0gZmluZGVyLmZpbmRfc3BlYyhzZWxmLm5hbWUpCiAgICAgICAgIHJldHVybiBmb3VuZC5sb2FkZXIgaWYgZm91bmQgaXMgbm90IE5vbmUgZWxzZSBmb3VuZAogCi1Gcm96ZW5fQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSwgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICBDYXNlU2Vuc2l0aXZpdHlUZXN0UEVQNDUxLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEsCisgU291cmNlX0Nhc2VTZW5zaXRpdml0eVRlc3RQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoQ2FzZVNlbnNpdGl2aXR5VGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCAyZDQxNWY5Li43M2Y0YzYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCiAKIGltcG9ydGxpYiA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIGltcG9ydGxpYl9hYmMgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5hYmMnKQpAQCAtNzEsNyArNzAsNyBAQAogCiAgICAgIyBbYmFzaWNdCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQpAQCAtODMsNyArODIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1snX3BrZy5fX2luaXRfXyddKQogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgpAQCAtOTgsNyArOTcsNyBAQAogCiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycsICdfcGtnLm1vZCcpYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfcGtnLl9faW5pdF9fJywgJ19wa2cubW9kJylhcyBtYXBwaW5nOgogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cubW9kJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CkBAIC0xMTUsNyArMTE0LDcgQEAKICAgICAgICAgcmV0dXJuIGxhbWJkYSBuYW1lOiBmeG4obmFtZSkgKyAxCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCkBAIC0xMzksNyArMTM4LDcgQEAKICAgICAgICAgYXR0cmlidXRlcyA9ICgnX19maWxlX18nLCAnX19wYXRoX18nLCAnX19wYWNrYWdlX18nKQogICAgICAgICB2YWx1ZSA9ICc8dGVzdD4nCiAgICAgICAgIG5hbWUgPSAnX3RlbXAnCi0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBvcmlnX21vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIGZvciBhdHRyIGluIGF0dHJpYnV0ZXM6CiAgICAgICAgICAgICAgICAgc2V0YXR0cihvcmlnX21vZHVsZSwgYXR0ciwgdmFsdWUpCkBAIC0xNTksNyArMTU4LDcgQEAKIAogICAgICMgW3N5bnRheCBlcnJvcl0KICAgICBkZWYgdGVzdF9iYWRfc3ludGF4KHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbJ190ZW1wJ10sICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCc9JykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKQEAgLTE5MCwxMSArMTg5LDExIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhweWNhY2hlKToKICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHB5Y2FjaGUpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfdGltZXN0YW1wX292ZXJmbG93KHNlbGYpOgogICAgICAgICAjIFdoZW4gYSBtb2RpZmljYXRpb24gdGltZXN0YW1wIGlzIGxhcmdlciB0aGFuIDIqKjMyLCBpdCBzaG91bGQgYmUKICAgICAgICAgIyB0cnVuY2F0ZWQgcmF0aGVyIHRoYW4gcmFpc2UgYW4gT3ZlcmZsb3dFcnJvci4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNvdXJjZSA9IG1hcHBpbmdbJ190ZW1wJ10KICAgICAgICAgICAgIGNvbXBpbGVkID0gc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHNvdXJjZSkKICAgICAgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICd3JykgYXMgZjoKQEAgLTIzNiw5ICsyMzUsMTEgQEAKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoJ2JhZCBuYW1lJykKIAotRnJvemVuX1NpbXBsZVRlc3QsIFNvdXJjZV9TaW1wbGVUZXN0ID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNpbXBsZVRlc3QsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAotICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NpbXBsZVRlc3QsCisgU291cmNlX1NpbXBsZVRlc3QKKyApID0gdXRpbC50ZXN0X2JvdGgoU2ltcGxlVGVzdCwgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSwKKyAgICAgICAgICAgICAgICAgICAgYWJjPWltcG9ydGxpYl9hYmMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0OgpAQCAtMjc1LDQ1ICsyNzYsNDUgQEAKICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlX3BhdGgKIAogICAgIGRlZiBfdGVzdF9lbXB0eV9maWxlKHNlbGYsIHRlc3QsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIF90ZXN0X3BhcnRpYWxfbWFnaWMoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgICMgV2hlbiB0aGVpciBhcmUgbGVzcyB0aGFuIDQgYnl0ZXMgdG8gYSAucHljLCByZWdlbmVyYXRlIGl0IGlmCiAgICAgICAgICMgcG9zc2libGUsIGVsc2UgcmFpc2UgSW1wb3J0RXJyb3IuCi0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9tYWdpY19vbmx5KHNlbGYsIHRlc3QsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6NF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfcGFydGlhbF90aW1lc3RhbXAoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAogICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3NpemUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzoxMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICB0ZXN0KCdfdGVtcCcsIG1hcHBpbmcsIGJjX3BhdGgpCiAKICAgICBkZWYgX3Rlc3Rfbm9fbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKQEAgLTMyMiw3ICszMjMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhmaWxlX3BhdGgsICdfdGVtcCcpCiAKICAgICBkZWYgX3Rlc3Rfbm9uX2NvZGVfbWFyc2hhbChzZWxmLCAqLCBkZWxfc291cmNlPUZhbHNlKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIG1hcnNoYWwuZHVtcHMoYidhYmNkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCkBAIC0zMzMsNyArMzM0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBieXRlY29kZV9wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzoxMl0gKyBiJzx0ZXN0PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCkBAIC0zNDIsMTEgKzM0MywxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhmaWxlX3BhdGgsICdfdGVtcCcpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hZ2ljKHNlbGYsIHRlc3QsICosIGRlbF9zb3VyY2U9RmFsc2UpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgYmNfcGF0aCA9IHNlbGYubWFuaXB1bGF0ZV9ieXRlY29kZSgnX3RlbXAnLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiJ1x4MDBceDAwXHgwMFx4MDAnICsgYmNbNDpdKQogICAgICAgICAgICAgdGVzdCgnX3RlbXAnLCBtYXBwaW5nLCBiY19wYXRoKQogCisKIGNsYXNzIEJhZEJ5dGVjb2RlVGVzdFBFUDQ1MShCYWRCeXRlY29kZVRlc3QpOgogCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgpAQCAtMzU1LDYgKzM1Nyw3IEBACiAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fbG9hZGVyKG1vZHVsZV9uYW1lLCBsb2FkZXIpCiAgICAgICAgIGxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCiAKKwogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0UEVQMzAyKEJhZEJ5dGVjb2RlVGVzdCk6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6CkBAIC0zNzEsNyArMzc0LDcgQEAKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMubG9hZGVyID0gY2xzLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgIyBXaGVuIGEgLnB5YyBpcyBlbXB0eSwgcmVnZW5lcmF0ZSBpdCBpZiBwb3NzaWJsZSwgZWxzZSByYWlzZQogICAgICAgICAjIEltcG9ydEVycm9yLgpAQCAtMzkwLDcgKzM5Myw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX21hZ2ljKHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfbWFnaWNfb25seShzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIG9ubHkgdGhlIG1hZ2ljIG51bWJlciwgcmVnZW5lcmF0ZSB0aGUgLnB5YyBpZiBwb3NzaWJsZSwKICAgICAgICAgIyBlbHNlIHJhaXNlIEVPRkVycm9yLgpAQCAtNDAxLDcgKzQwNCw3IEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9tYWdpY19vbmx5KHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfYmFkX21hZ2ljKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIG1hZ2ljIG51bWJlciBpcyBkaWZmZXJlbnQsIHRoZSBieXRlY29kZSBzaG91bGQgYmUKICAgICAgICAgIyByZWdlbmVyYXRlZC4KQEAgLTQxMyw3ICs0MTYsNyBAQAogCiAgICAgICAgIHNlbGYuX3Rlc3RfYmFkX21hZ2ljKHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfcGFydGlhbF90aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgdGltZXN0YW1wIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKICAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KQEAgLTQyNCw3ICs0MjcsNyBAQAogCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF90aW1lc3RhbXAodGVzdCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9wYXJ0aWFsX3NpemUoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGUgc2l6ZSBpcyBwYXJ0aWFsLCByZWdlbmVyYXRlIHRoZSAucHljLCBlbHNlCiAgICAgICAgICMgcmFpc2UgRU9GRXJyb3IuCkBAIC00MzUsMjkgKzQzOCwyOSBAQAogCiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9zaXplKHRlc3QpCiAKLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIG9ubHkgdGhlIG1hZ2ljIG51bWJlciBhbmQgdGltZXN0YW1wLCByYWlzZSBFT0ZFcnJvci4KICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKCkKIAotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9ub25fY29kZV9tYXJzaGFsKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbl9jb2RlX21hcnNoYWwoKQogICAgICAgICAjIFhYWCBJbXBvcnRFcnJvciB3aGVuIHNvdXJjZWxlc3MKIAogICAgICMgW2JhZCBtYXJzaGFsXQotICAgIEBzb3VyY2VfdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKKyAgICBAdXRpbC53cml0ZXNfYnl0ZWNvZGVfZmlsZXMKICAgICBkZWYgdGVzdF9iYWRfbWFyc2hhbChzZWxmKToKICAgICAgICAgIyBCYWQgbWFyc2hhbCBkYXRhIHNob3VsZCByYWlzZSBhIFZhbHVlRXJyb3IuCiAgICAgICAgIHNlbGYuX3Rlc3RfYmFkX21hcnNoYWwoKQogCiAgICAgIyBbYmFkIHRpbWVzdGFtcF0KLSAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCisgICAgQHV0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3Rfb2xkX3RpbWVzdGFtcChzZWxmKToKICAgICAgICAgIyBXaGVuIHRoZSB0aW1lc3RhbXAgaXMgb2xkZXIgdGhhbiB0aGUgc291cmNlLCBieXRlY29kZSBzaG91bGQgYmUKICAgICAgICAgIyByZWdlbmVyYXRlZC4KICAgICAgICAgemVyb3MgPSBiJ1x4MDBceDAwXHgwMFx4MDAnCi0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncitiJykgYXMgYnl0ZWNvZGVfZmlsZToKQEAgLTQ3MSwxMCArNDc0LDEwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlY29kZV9maWxlLnJlYWQoNCksIHNvdXJjZV90aW1lc3RhbXApCiAKICAgICAjIFtieXRlY29kZSByZWFkLW9ubHldCi0gICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIEB1dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X3JlYWRfb25seV9ieXRlY29kZShzZWxmKToKICAgICAgICAgIyBXaGVuIGJ5dGVjb2RlIGlzIHJlYWQtb25seSBidXQgc2hvdWxkIGJlIHJld3JpdHRlbiwgZmFpbCBzaWxlbnRseS4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgICMgQ3JlYXRlIGJ5dGVjb2RlIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHJlLWNyZWF0ZWQuCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUobWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1snX3RlbXAnXSkKQEAgLTQ5MSwyMSArNDk0LDI5IEBACiAgICAgICAgICAgICAgICAgIyBNYWtlIHdyaXRhYmxlIGZvciBldmVudHVhbCBjbGVhbi11cC4KICAgICAgICAgICAgICAgICBvcy5jaG1vZChieXRlY29kZV9wYXRoLCBzdGF0LlNfSVdVU1IpCiAKKwogY2xhc3MgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKAogICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3QsIEJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSk6CiAgICAgcGFzcwogCi1Gcm96ZW5fU291cmNlQmFkQnl0ZWNvZGVQRVA0NTEsIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnksCi0gICAgICAgIGFiYz1pbXBvcnRsaWJfYWJjLCB1dGlsPWltcG9ydGxpYl91dGlsKQorCisoRnJvemVuX1NvdXJjZUJhZEJ5dGVjb2RlUEVQNDUxLAorIFNvdXJjZV9Tb3VyY2VCYWRCeXRlY29kZVBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEsIGltcG9ydGxpYj1pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksIGFiYz1pbXBvcnRsaWJfYWJjLAorICAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQorCiAKIGNsYXNzIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDMwMigKICAgICAgICAgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0LCBCYWRCeXRlY29kZVRlc3RQRVAzMDIpOgogICAgIHBhc3MKIAotRnJvemVuX1NvdXJjZUJhZEJ5dGVjb2RlUEVQMzAyLCBTb3VyY2VfU291cmNlQmFkQnl0ZWNvZGVQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5LAotICAgICAgICBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworKEZyb3plbl9Tb3VyY2VCYWRCeXRlY29kZVBFUDMwMiwKKyBTb3VyY2VfU291cmNlQmFkQnl0ZWNvZGVQRVAzMDIKKyApID0gdXRpbC50ZXN0X2JvdGgoU291cmNlTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywKKyAgICAgICAgICAgICAgICAgICAgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0OgpAQCAtNTY3LDIxICs1NzgsMjkgQEAKICAgICBkZWYgdGVzdF9ub25fY29kZV9tYXJzaGFsKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbl9jb2RlX21hcnNoYWwoZGVsX3NvdXJjZT1UcnVlKQogCisKIGNsYXNzIFNvdXJjZWxlc3NMb2FkZXJCYWRCeXRlY29kZVRlc3RQRVA0NTEoU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdCwKICAgICAgICAgQmFkQnl0ZWNvZGVUZXN0UEVQNDUxKToKICAgICBwYXNzCiAKLUZyb3plbl9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEsIFNvdXJjZV9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKLSAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKKyhGcm96ZW5fU291cmNlbGVzc0JhZEJ5dGVjb2RlUEVQNDUxLAorIFNvdXJjZV9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDQ1MSwgaW1wb3J0bGliPWltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSwgYWJjPWltcG9ydGxpYl9hYmMsCisgICAgICAgICAgICAgICAgICAgIHV0aWw9aW1wb3J0bGliX3V0aWwpCisKIAogY2xhc3MgU291cmNlbGVzc0xvYWRlckJhZEJ5dGVjb2RlVGVzdFBFUDMwMihTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0LAogICAgICAgICBCYWRCeXRlY29kZVRlc3RQRVAzMDIpOgogICAgIHBhc3MKIAotRnJvemVuX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMiwgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMiA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAotICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworKEZyb3plbl9Tb3VyY2VsZXNzQmFkQnl0ZWNvZGVQRVAzMDIsCisgU291cmNlX1NvdXJjZWxlc3NCYWRCeXRlY29kZVBFUDMwMgorICkgPSB1dGlsLnRlc3RfYm90aChTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0UEVQMzAyLCBpbXBvcnRsaWI9aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5LCBhYmM9aW1wb3J0bGliX2FiYywKKyAgICAgICAgICAgICAgICAgICAgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmluZGVyLnB5CmluZGV4IDQ3MzI5N2IuLmYzNzJiODUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCkBAIC02MCw3ICs1OSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBjcmVhdGUgaXMgTm9uZToKICAgICAgICAgICAgIGNyZWF0ZSA9IHt0ZXN0fQotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCpjcmVhdGUpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygqY3JlYXRlKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgaWYgY29tcGlsZV86CiAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gY29tcGlsZV86CiAgICAgICAgICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nW25hbWVdKQpAQCAtMTAwLDE0ICs5OSwxNCBAQAogCiAgICAgIyBbc3ViIG1vZHVsZV0KICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWInKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuc3ViJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmRpcm5hbWUobWFwcGluZ1sncGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLmltcG9ydF8ocGtnX2RpciwgJ3BrZy5zdWInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobG9hZGVyLCAnbG9hZF9tb2R1bGUnKSkKIAogICAgICMgW3N1YiBwYWNrYWdlXQogICAgIGRlZiB0ZXN0X3BhY2thZ2VfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgY29udGV4dCA9IHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCisgICAgICAgIGNvbnRleHQgPSB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCiAgICAgICAgIHdpdGggY29udGV4dCBhcyBtYXBwaW5nOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguZGlybmFtZShtYXBwaW5nWydwa2cuX19pbml0X18nXSkKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCkBAIC0xMjAsNyArMTE5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignX19pbml0X18nLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnYmxhaCcpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnYmxhaCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBub3RoaW5nID0gc2VsZi5pbXBvcnRfKG1hcHBpbmdbJy5yb290J10sICdzZGZzYWRzYWRmJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5vdGhpbmcpCiAKQEAgLTE0Nyw3ICsxNDYsNyBAQAogICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTQ4NDYKICAgICBkZWYgdGVzdF9kaXJfcmVtb3ZhbF9oYW5kbGluZyhzZWxmKToKICAgICAgICAgbW9kID0gJ21vZCcKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2QpIGFzIG1hcHBpbmc6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2QpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBmaW5kZXIgPSBzZWxmLmdldF9maW5kZXIobWFwcGluZ1snLnJvb3QnXSkKICAgICAgICAgICAgIGZvdW5kID0gc2VsZi5fZmluZChmaW5kZXIsICdtb2QnLCBsb2FkZXJfb25seT1UcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZm91bmQpCkBAIC0xOTYsOCArMTk1LDEwIEBACiAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKG5hbWUpCiAgICAgICAgIHJldHVybiBzcGVjLmxvYWRlciBpZiBzcGVjIGlzIG5vdCBOb25lIGVsc2Ugc3BlYwogCi1Gcm96ZW5fRmluZGVyVGVzdHNQRVA0NTEsIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDQ1MSA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBGaW5kZXJUZXN0c1BFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworKEZyb3plbl9GaW5kZXJUZXN0c1BFUDQ1MSwKKyBTb3VyY2VfRmluZGVyVGVzdHNQRVA0NTEKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHNQRVA0NTEsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgRmluZGVyVGVzdHNQRVA0MjAoRmluZGVyVGVzdHMpOgpAQCAtMjEwLDggKzIxMSwxMCBAQAogICAgICAgICAgICAgbG9hZGVyX3BvcnRpb25zID0gZmluZGVyLmZpbmRfbG9hZGVyKG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyX3BvcnRpb25zWzBdIGlmIGxvYWRlcl9vbmx5IGVsc2UgbG9hZGVyX3BvcnRpb25zCiAKLUZyb3plbl9GaW5kZXJUZXN0c1BFUDQyMCwgU291cmNlX0ZpbmRlclRlc3RzUEVQNDIwID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIEZpbmRlclRlc3RzUEVQNDIwLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0ZpbmRlclRlc3RzUEVQNDIwLAorIFNvdXJjZV9GaW5kZXJUZXN0c1BFUDQyMAorICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0c1BFUDQyMCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBGaW5kZXJUZXN0c1BFUDMwMihGaW5kZXJUZXN0cyk6CkBAIC0yMjMsOSArMjI2LDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBmaW5kZXIuZmluZF9tb2R1bGUobmFtZSkKIAotRnJvemVuX0ZpbmRlclRlc3RzUEVQMzAyLCBTb3VyY2VfRmluZGVyVGVzdHNQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRmluZGVyVGVzdHNQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKKyhGcm96ZW5fRmluZGVyVGVzdHNQRVAzMDIsCisgU291cmNlX0ZpbmRlclRlc3RzUEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzUEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggOTJkYTc3Mi4uZTZhMjQxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCkBAIC0xNSw3ICsxNCw3IEBACiAgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQogCiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKIApAQCAtMjMsNyArMjIsMTAgQEAKICAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQogCi1Gcm96ZW5fUGF0aEhvb2tUZXN0LCBTb3VyY2VfUGF0aEhvb2t0ZXN0ID0gdXRpbC50ZXN0X2JvdGgoUGF0aEhvb2tUZXN0LCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX1BhdGhIb29rVGVzdCwKKyBTb3VyY2VfUGF0aEhvb2t0ZXN0CisgKSA9IHV0aWwudGVzdF9ib3RoKFBhdGhIb29rVGVzdCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CmluZGV4IGM2MmRmYTEuLmI2MDRhZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIApAQCAtMzcsNyArMzYsNyBAQAogICAgIG1vZHVsZV9uYW1lID0gJ190ZW1wJwogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoc2VsZi5tb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKHNlbGYubW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKQEAgLTg5LDYgKzg4LDcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnJ1bl90ZXN0KHNvdXJjZSkKIAorCiBjbGFzcyBFbmNvZGluZ1Rlc3RQRVA0NTEoRW5jb2RpbmdUZXN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlcik6CkBAIC05Nyw4ICs5NywxMSBAQAogICAgICAgICBsb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKLUZyb3plbl9FbmNvZGluZ1Rlc3RQRVA0NTEsIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVA0NTEgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRW5jb2RpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0VuY29kaW5nVGVzdFBFUDQ1MSwKKyBTb3VyY2VfRW5jb2RpbmdUZXN0UEVQNDUxCisgKSA9IHV0aWwudGVzdF9ib3RoKEVuY29kaW5nVGVzdFBFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKwogCiBjbGFzcyBFbmNvZGluZ1Rlc3RQRVAzMDIoRW5jb2RpbmdUZXN0KToKIApAQCAtMTA3LDggKzExMCwxMCBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCiAKLUZyb3plbl9FbmNvZGluZ1Rlc3RQRVAzMDIsIFNvdXJjZV9FbmNvZGluZ1Rlc3RQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgRW5jb2RpbmdUZXN0UEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0VuY29kaW5nVGVzdFBFUDMwMiwKKyBTb3VyY2VfRW5jb2RpbmdUZXN0UEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKEVuY29kaW5nVGVzdFBFUDMwMiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBMaW5lRW5kaW5nVGVzdDoKQEAgLTEyMCw3ICsxMjUsNyBAQAogICAgICAgICBtb2R1bGVfbmFtZSA9ICdfdGVtcCcKICAgICAgICAgc291cmNlX2xpbmVzID0gW2IiYSA9IDQyIiwgYiJiID0gLTEzIiwgYicnXQogICAgICAgICBzb3VyY2UgPSBsaW5lX2VuZGluZy5qb2luKHNvdXJjZV9saW5lcykKLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKG1vZHVsZV9uYW1lKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbbW9kdWxlX25hbWVdLCAnd2InKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoc291cmNlKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihtb2R1bGVfbmFtZSwKQEAgLTEzOSw2ICsxNDQsNyBAQAogICAgIGRlZiB0ZXN0X2xmKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bl90ZXN0KGInXG4nKQogCisKIGNsYXNzIExpbmVFbmRpbmdUZXN0UEVQNDUxKExpbmVFbmRpbmdUZXN0KToKIAogICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlciwgbW9kdWxlX25hbWUpOgpAQCAtMTQ3LDggKzE1MywxMSBAQAogICAgICAgICBsb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKLUZyb3plbl9MaW5lRW5kaW5nVGVzdFBFUDQ1MSwgU291cmNlX0xpbmVFbmRpbmdUZXN0UEVQNDUxID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExpbmVFbmRpbmdUZXN0UEVQNDUxLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisoRnJvemVuX0xpbmVFbmRpbmdUZXN0UEVQNDUxLAorIFNvdXJjZV9MaW5lRW5kaW5nVGVzdFBFUDQ1MQorICkgPSB1dGlsLnRlc3RfYm90aChMaW5lRW5kaW5nVGVzdFBFUDQ1MSwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKwogCiBjbGFzcyBMaW5lRW5kaW5nVGVzdFBFUDMwMihMaW5lRW5kaW5nVGVzdCk6CiAKQEAgLTE1Nyw4ICsxNjYsMTAgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuIGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKIAotRnJvemVuX0xpbmVFbmRpbmdUZXN0UEVQMzAyLCBTb3VyY2VfTGluZUVuZGluZ1Rlc3RQRVAzMDIgPSB1dGlsLnRlc3RfYm90aCgKLSAgICAgICAgTGluZUVuZGluZ1Rlc3RQRVAzMDIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKyhGcm96ZW5fTGluZUVuZGluZ1Rlc3RQRVAzMDIsCisgU291cmNlX0xpbmVFbmRpbmdUZXN0UEVQMzAyCisgKSA9IHV0aWwudGVzdF9ib3RoKExpbmVFbmRpbmdUZXN0UEVQMzAyLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2NkMjVhLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotZnJvbSAuLiBpbXBvcnQgdXRpbAotaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBlcnJubwotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQotCi1kZWYgd3JpdGVzX2J5dGVjb2RlX2ZpbGVzKGZ4bik6Ci0gICAgIiIiRGVjb3JhdG9yIHRvIHByb3RlY3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgZnJvbSBtdXRhdGlvbiBhbmQgdG8gc2tpcAotICAgIHRlc3RzIHRoYXQgcmVxdWlyZSBpdCB0byBiZSBzZXQgdG8gRmFsc2UuIiIiCi0gICAgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6Ci0gICAgICAgIHJldHVybiBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBOb25lCi0gICAgQGZ1bmN0b29scy53cmFwcyhmeG4pCi0gICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgb3JpZ2luYWwgPSBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRvX3JldHVybiA9IGZ4bigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9yaWdpbmFsCi0gICAgICAgIHJldHVybiB0b19yZXR1cm4KLSAgICByZXR1cm4gd3JhcHBlcgotCi0KLWRlZiBlbnN1cmVfYnl0ZWNvZGVfcGF0aChieXRlY29kZV9wYXRoKToKLSAgICAiIiJFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGZvciBQRVAgMzE0NyBweWMgZmlsZSBleGlzdHMuCi0KLSAgICA6cGFyYW0gYnl0ZWNvZGVfcGF0aDogRmlsZSBzeXN0ZW0gcGF0aCB0byBQRVAgMzE0NyBweWMgZmlsZS4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguZGlybmFtZShieXRlY29kZV9wYXRoKSkKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgcmFpc2UKLQotCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIGNyZWF0ZV9tb2R1bGVzKCpuYW1lcyk6Ci0gICAgIiIiVGVtcG9yYXJpbHkgY3JlYXRlIGVhY2ggbmFtZWQgbW9kdWxlIHdpdGggYW4gYXR0cmlidXRlIChuYW1lZCAnYXR0cicpCi0gICAgdGhhdCBjb250YWlucyB0aGUgbmFtZSBwYXNzZWQgaW50byB0aGUgY29udGV4dCBtYW5hZ2VyIHRoYXQgY2F1c2VkIHRoZQotICAgIGNyZWF0aW9uIG9mIHRoZSBtb2R1bGUuCi0KLSAgICBBbGwgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHJldHVybmVkIGJ5Ci0gICAgdGVtcGZpbGUubWtkdGVtcCgpLiBUaGlzIGRpcmVjdG9yeSBpcyBpbnNlcnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mCi0gICAgc3lzLnBhdGguIFdoZW4gdGhlIGNvbnRleHQgbWFuYWdlciBleGl0cyBhbGwgY3JlYXRlZCBmaWxlcyAoc291cmNlIGFuZAotICAgIGJ5dGVjb2RlKSBhcmUgZXhwbGljaXRseSBkZWxldGVkLgotCi0gICAgTm8gbWFnaWMgaXMgcGVyZm9ybWVkIHdoZW4gY3JlYXRpbmcgcGFja2FnZXMhIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgY3JlYXRlCi0gICAgYSBtb2R1bGUgd2l0aGluIGEgcGFja2FnZSB5b3UgbXVzdCBhbHNvIGNyZWF0ZSB0aGUgcGFja2FnZSdzIF9faW5pdF9fIGFzCi0gICAgd2VsbC4KLQotICAgICIiIgotICAgIHNvdXJjZSA9ICdhdHRyID0gezAhcn0nCi0gICAgY3JlYXRlZF9wYXRocyA9IFtdCi0gICAgbWFwcGluZyA9IHt9Ci0gICAgc3RhdGVfbWFuYWdlciA9IE5vbmUKLSAgICB1bmNhY2hlX21hbmFnZXIgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICB0ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBtYXBwaW5nWycucm9vdCddID0gdGVtcF9kaXIKLSAgICAgICAgaW1wb3J0X25hbWVzID0gc2V0KCkKLSAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnX19pbml0X18nKToKLSAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaW1wb3J0X25hbWUgPSBuYW1lWzotbGVuKCcuX19pbml0X18nKV0KLSAgICAgICAgICAgIGltcG9ydF9uYW1lcy5hZGQoaW1wb3J0X25hbWUpCi0gICAgICAgICAgICBpZiBpbXBvcnRfbmFtZSBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbaW1wb3J0X25hbWVdCi0gICAgICAgICAgICBuYW1lX3BhcnRzID0gbmFtZS5zcGxpdCgnLicpCi0gICAgICAgICAgICBmaWxlX3BhdGggPSB0ZW1wX2RpcgotICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBuYW1lX3BhcnRzWzotMV06Ci0gICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgZGlyZWN0b3J5KQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICBvcy5ta2RpcihmaWxlX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfcGF0aHMuYXBwZW5kKGZpbGVfcGF0aCkKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihmaWxlX3BhdGgsIG5hbWVfcGFydHNbLTFdICsgJy5weScpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAndycpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UuZm9ybWF0KG5hbWUpKQotICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQotICAgICAgICAgICAgbWFwcGluZ1tuYW1lXSA9IGZpbGVfcGF0aAotICAgICAgICB1bmNhY2hlX21hbmFnZXIgPSB1dGlsLnVuY2FjaGUoKmltcG9ydF9uYW1lcykKLSAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZW50ZXJfXygpCi0gICAgICAgIHN0YXRlX21hbmFnZXIgPSB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVt0ZW1wX2Rpcl0pCi0gICAgICAgIHN0YXRlX21hbmFnZXIuX19lbnRlcl9fKCkKLSAgICAgICAgeWllbGQgbWFwcGluZwotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlmIHN0YXRlX21hbmFnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzdGF0ZV9tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAgICAgIGlmIHVuY2FjaGVfbWFuYWdlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHVuY2FjaGVfbWFuYWdlci5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQotICAgICAgICBzdXBwb3J0LnJtdHJlZSh0ZW1wX2RpcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggYTFmOGU3Ni4uZDRiZjkxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTEwLDEyICsxMCwxMyBAQAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogaW1wb3J0IHdhcm5pbmdzCiAKLWZyb20gLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAogCi1mcm96ZW5faW5pdCwgc291cmNlX2luaXQgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi1mcm96ZW5fYWJjLCBzb3VyY2VfYWJjID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIuYWJjJykKLW1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCi1mcm96ZW5fdXRpbCwgc291cmNlX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK2luaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKK2FiYyA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIuYWJjJykKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK3V0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQorCiAKICMjIyMjIEluaGVyaXRhbmNlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBjbGFzcyBJbmhlcml0YW5jZVRlc3RzOgpAQCAtMjYsOCArMjcsNyBAQAogICAgIHN1YmNsYXNzZXMgPSBbXQogICAgIHN1cGVyY2xhc3NlcyA9IFtdCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnN1cGVyY2xhc3NlcyA9IFtnZXRhdHRyKHNlbGYuYWJjLCBjbGFzc19uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2xhc3NfbmFtZSBpbiBzZWxmLnN1cGVyY2xhc3NfbmFtZXNdCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3N1YmNsYXNzX25hbWVzJyk6CkBAIC0zNiwxMSArMzYsMTEgQEAKICAgICAgICAgICAgICMgY2hlY2tpbmcgYWNyb3NzIG1vZHVsZSBib3VuZGFyaWVzIChpLmUuIHRoZSBfYm9vdHN0cmFwIGluIGFiYyBpcwogICAgICAgICAgICAgIyBub3QgdGhlIHNhbWUgYXMgdGhlIG9uZSBpbiBtYWNoaW5lcnkpLiBUaGF0IG1lYW5zIHN0ZWFsaW5nIG9uZSBvZgogICAgICAgICAgICAgIyB0aGUgbW9kdWxlcyBmcm9tIHRoZSBvdGhlciB0byBtYWtlIHN1cmUgdGhlIHNhbWUgaW5zdGFuY2UgaXMgdXNlZC4KLSAgICAgICAgICAgIHNlbGYuc3ViY2xhc3NlcyA9IFtnZXRhdHRyKHNlbGYuYWJjLm1hY2hpbmVyeSwgY2xhc3NfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNsYXNzX25hbWUgaW4gc2VsZi5zdWJjbGFzc19uYW1lc10KKyAgICAgICAgICAgIG1hY2hpbmVyeSA9IHNlbGYuYWJjLm1hY2hpbmVyeQorICAgICAgICAgICAgc2VsZi5zdWJjbGFzc2VzID0gW2dldGF0dHIobWFjaGluZXJ5LCBjbGFzc19uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc19uYW1lIGluIHNlbGYuc3ViY2xhc3NfbmFtZXNdCiAgICAgICAgIGFzc2VydCBzZWxmLnN1YmNsYXNzZXMgb3Igc2VsZi5zdXBlcmNsYXNzZXMsIHNlbGYuX19jbGFzc19fCi0gICAgICAgIHRlc3RpbmcgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5wYXJ0aXRpb24oJ18nKVsyXQotICAgICAgICBzZWxmLl9fdGVzdCA9IGdldGF0dHIoc2VsZi5hYmMsIHRlc3RpbmcpCisgICAgICAgIHNlbGYuX190ZXN0ID0gZ2V0YXR0cihzZWxmLmFiYywgc2VsZi5fTkFNRSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHRoZSBleHBlY3RlZCBzdWJjbGFzc2VzIGluaGVyaXQuCkBAIC01NCw5NCArNTQsOTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHNlbGYuX190ZXN0LCBzdXBlcmNsYXNzKSwKICAgICAgICAgICAgICAgICJ7MH0gaXMgbm90IGEgc3VwZXJjbGFzcyBvZiB7MX0iLmZvcm1hdChzdXBlcmNsYXNzLCBzZWxmLl9fdGVzdCkpCiAKLWRlZiBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoYmFzZV9jbGFzcyk6Ci0gICAgZGVmIHNldF9mcm96ZW4obnMpOgotICAgICAgICBuc1snYWJjJ10gPSBmcm96ZW5fYWJjCi0gICAgZGVmIHNldF9zb3VyY2UobnMpOgotICAgICAgICBuc1snYWJjJ10gPSBzb3VyY2VfYWJjCi0KLSAgICBjbGFzc2VzID0gW10KLSAgICBmb3IgcHJlZml4LCBuc19zZXQgaW4gWygnRnJvemVuJywgc2V0X2Zyb3plbiksICgnU291cmNlJywgc2V0X3NvdXJjZSldOgotICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlcy5uZXdfY2xhc3MoJ18nLmpvaW4oW3ByZWZpeCwgYmFzZV9jbGFzcy5fX25hbWVfX10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2VfY2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfYm9keT1uc19zZXQpKQotICAgIHJldHVybiBjbGFzc2VzCi0KIAogY2xhc3MgTWV0YVBhdGhGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnRmluZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnQnVpbHRpbkltcG9ydGVyJywgJ0Zyb3plbkltcG9ydGVyJywgJ1BhdGhGaW5kZXInLAogICAgICAgICAgICAgICAgICAgICAgICdXaW5kb3dzUmVnaXN0cnlGaW5kZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhNZXRhUGF0aEZpbmRlcikKLUZyb3plbl9NZXRhUGF0aEZpbmRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9NZXRhUGF0aEZpbmRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX01ldGFQYXRoRmluZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfTWV0YVBhdGhGaW5kZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTWV0YVBhdGhGaW5kZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgUGF0aEVudHJ5RmluZGVyKEluaGVyaXRhbmNlVGVzdHMpOgogICAgIHN1cGVyY2xhc3NfbmFtZXMgPSBbJ0ZpbmRlciddCiAgICAgc3ViY2xhc3NfbmFtZXMgPSBbJ0ZpbGVGaW5kZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhQYXRoRW50cnlGaW5kZXIpCi1Gcm96ZW5fUGF0aEVudHJ5RmluZGVySW5oZXJpdGFuY2VUZXN0cywgU291cmNlX1BhdGhFbnRyeUZpbmRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX1BhdGhFbnRyeUZpbmRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX1BhdGhFbnRyeUZpbmRlckluaGVyaXRhbmNlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgUmVzb3VyY2VMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoUmVzb3VyY2VMb2FkZXIpCi1Gcm96ZW5fUmVzb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfUmVzb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9SZXNvdXJjZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX1Jlc291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFJlc291cmNlTG9hZGVyLCBhYmM9YWJjKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnTG9hZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnQnVpbHRpbkltcG9ydGVyJywgJ0Zyb3plbkltcG9ydGVyJywgJ0V4dGVuc2lvbkZpbGVMb2FkZXInXQogCi10ZXN0cyA9IGNyZWF0ZV9pbmhlcml0YW5jZV90ZXN0cyhJbnNwZWN0TG9hZGVyKQotRnJvemVuX0luc3BlY3RMb2FkZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfSW5zcGVjdExvYWRlckluaGVyaXRhbmNlVGVzdHMgPSB0ZXN0cworCisoRnJvemVuX0luc3BlY3RMb2FkZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9JbnNwZWN0TG9hZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXIsIGFiYz1hYmMpCiAKIAogY2xhc3MgRXhlY3V0aW9uTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMpOgogICAgIHN1cGVyY2xhc3NfbmFtZXMgPSBbJ0luc3BlY3RMb2FkZXInXQogICAgIHN1YmNsYXNzX25hbWVzID0gWydFeHRlbnNpb25GaWxlTG9hZGVyJ10KIAotdGVzdHMgPSBjcmVhdGVfaW5oZXJpdGFuY2VfdGVzdHMoRXhlY3V0aW9uTG9hZGVyKQotRnJvemVuX0V4ZWN1dGlvbkxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9FeGVjdXRpb25Mb2FkZXJJbmhlcml0YW5jZVRlc3RzID0gdGVzdHMKKworKEZyb3plbl9FeGVjdXRpb25Mb2FkZXJJbmhlcml0YW5jZVRlc3RzLAorIFNvdXJjZV9FeGVjdXRpb25Mb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRXhlY3V0aW9uTG9hZGVyLCBhYmM9YWJjKQogCiAKIGNsYXNzIEZpbGVMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnUmVzb3VyY2VMb2FkZXInLCAnRXhlY3V0aW9uTG9hZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnU291cmNlRmlsZUxvYWRlcicsICdTb3VyY2VsZXNzRmlsZUxvYWRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKEZpbGVMb2FkZXIpCi1Gcm96ZW5fRmlsZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsIFNvdXJjZV9GaWxlTG9hZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fRmlsZUxvYWRlckluaGVyaXRhbmNlVGVzdHMsCisgU291cmNlX0ZpbGVMb2FkZXJJbmhlcml0YW5jZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmlsZUxvYWRlciwgYWJjPWFiYykKIAogCiBjbGFzcyBTb3VyY2VMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cyk6CiAgICAgc3VwZXJjbGFzc19uYW1lcyA9IFsnUmVzb3VyY2VMb2FkZXInLCAnRXhlY3V0aW9uTG9hZGVyJ10KICAgICBzdWJjbGFzc19uYW1lcyA9IFsnU291cmNlRmlsZUxvYWRlciddCiAKLXRlc3RzID0gY3JlYXRlX2luaGVyaXRhbmNlX3Rlc3RzKFNvdXJjZUxvYWRlcikKLUZyb3plbl9Tb3VyY2VMb2FkZXJJbmhlcml0YW5jZVRlc3RzLCBTb3VyY2VfU291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cyA9IHRlc3RzCisKKyhGcm96ZW5fU291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cywKKyBTb3VyY2VfU291cmNlTG9hZGVySW5oZXJpdGFuY2VUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFNvdXJjZUxvYWRlciwgYWJjPWFiYykKKwogCiAjIyMjIyBEZWZhdWx0IHJldHVybiB2YWx1ZXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotZGVmIG1ha2VfYWJjX3N1YmNsYXNzZXMoYmFzZV9jbGFzcyk6Ci0gICAgY2xhc3NlcyA9IFtdCi0gICAgZm9yIGtpbmQsIGFiYyBpbiBbKCdGcm96ZW4nLCBmcm96ZW5fYWJjKSwgKCdTb3VyY2UnLCBzb3VyY2VfYWJjKV06Ci0gICAgICAgIG5hbWUgPSAnXycuam9pbihba2luZCwgYmFzZV9jbGFzcy5fX25hbWVfX10pCi0gICAgICAgIGJhc2VfY2xhc3NlcyA9IGJhc2VfY2xhc3MsIGdldGF0dHIoYWJjLCBiYXNlX2NsYXNzLl9fbmFtZV9fKQotICAgICAgICBjbGFzc2VzLmFwcGVuZCh0eXBlcy5uZXdfY2xhc3MobmFtZSwgYmFzZV9jbGFzc2VzKSkKLSAgICByZXR1cm4gY2xhc3NlcwogCi1kZWYgbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoYmFzZV9jbGFzcywgdGVzdF9jbGFzcyk6Ci0gICAgZnJvemVuX2NsYXNzLCBzb3VyY2VfY2xhc3MgPSBtYWtlX2FiY19zdWJjbGFzc2VzKGJhc2VfY2xhc3MpCi0gICAgdGVzdHMgPSBbXQotICAgIGZvciBwcmVmaXgsIGNsYXNzX2luX3Rlc3QgaW4gWygnRnJvemVuJywgZnJvemVuX2NsYXNzKSwgKCdTb3VyY2UnLCBzb3VyY2VfY2xhc3MpXToKLSAgICAgICAgZGVmIHNldF9ucyhucyk6Ci0gICAgICAgICAgICBuc1snaW5zJ10gPSBjbGFzc19pbl90ZXN0KCkKLSAgICAgICAgdGVzdHMuYXBwZW5kKHR5cGVzLm5ld19jbGFzcygnXycuam9pbihbcHJlZml4LCB0ZXN0X2NsYXNzLl9fbmFtZV9fXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfY2xhc3MsIHVuaXR0ZXN0LlRlc3RDYXNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2JvZHk9c2V0X25zKSkKLSAgICByZXR1cm4gdGVzdHMKK2RlZiBtYWtlX2FiY19zdWJjbGFzc2VzKGJhc2VfY2xhc3MsIG5hbWU9Tm9uZSwgaW5zdD1GYWxzZSwgKiprd2FyZ3MpOgorICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgbmFtZSA9IGJhc2VfY2xhc3MuX19uYW1lX18KKyAgICBiYXNlID0ge2tpbmQ6IGdldGF0dHIoc3BsaXRhYmMsIG5hbWUpCisgICAgICAgICAgICBmb3Iga2luZCwgc3BsaXRhYmMgaW4gYWJjLml0ZW1zKCl9CisgICAgcmV0dXJuIHtjbHMuX0tJTkQ6IGNscygpIGlmIGluc3QgZWxzZSBjbHMKKyAgICAgICAgICAgIGZvciBjbHMgaW4gdGVzdF91dGlsLnNwbGl0X2Zyb3plbihiYXNlX2NsYXNzLCBiYXNlLCAqKmt3YXJncyl9CisKKworY2xhc3MgQUJDVGVzdEhhcm5lc3M6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaW5zKHNlbGYpOgorICAgICAgICAjIExhemlseSBzZXQgaW5zIG9uIHRoZSBjbGFzcy4KKyAgICAgICAgY2xzID0gc2VsZi5TUExJVFtzZWxmLl9LSU5EXQorICAgICAgICBpbnMgPSBjbHMoKQorICAgICAgICBzZWxmLl9fY2xhc3NfXy5pbnMgPSBpbnMKKyAgICAgICAgcmV0dXJuIGlucwogCiAKIGNsYXNzIE1ldGFQYXRoRmluZGVyOgpAQCAtMTQ5LDEwICsxNTIsMTAgQEAKICAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgogICAgICAgICByZXR1cm4gc3VwZXIoKS5maW5kX21vZHVsZShmdWxsbmFtZSwgcGF0aCkKIAotRnJvemVuX01QRiwgU291cmNlX01QRiA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoTWV0YVBhdGhGaW5kZXIpCiAKK2NsYXNzIE1ldGFQYXRoRmluZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CiAKLWNsYXNzIE1ldGFQYXRoRmluZGVyRGVmYXVsdHNUZXN0czoKKyAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoTWV0YVBhdGhGaW5kZXIpCiAKICAgICBkZWYgdGVzdF9maW5kX21vZHVsZShzZWxmKToKICAgICAgICAgIyBEZWZhdWx0IHNob3VsZCByZXR1cm4gTm9uZS4KQEAgLTE2Myw4ICsxNjYsOSBAQAogICAgICAgICBzZWxmLmlucy5pbnZhbGlkYXRlX2NhY2hlcygpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhNZXRhUGF0aEZpbmRlciwgTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKQotRnJvemVuX01QRkRlZmF1bHRUZXN0cywgU291cmNlX01QRkRlZmF1bHRUZXN0cyA9IHRlc3RzCisoRnJvemVuX01QRkRlZmF1bHRUZXN0cywKKyBTb3VyY2VfTVBGRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTWV0YVBhdGhGaW5kZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlcjoKQEAgLTE3MiwxMCArMTc2LDEwIEBACiAgICAgZGVmIGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZmluZF9sb2FkZXIoZnVsbG5hbWUpCiAKLUZyb3plbl9QRUYsIFNvdXJjZV9QRUYgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFBhdGhFbnRyeUZpbmRlcikKIAorY2xhc3MgUGF0aEVudHJ5RmluZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CiAKLWNsYXNzIFBhdGhFbnRyeUZpbmRlckRlZmF1bHRzVGVzdHM6CisgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFBhdGhFbnRyeUZpbmRlcikKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbG9hZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChOb25lLCBbXSksIHNlbGYuaW5zLmZpbmRfbG9hZGVyKCdzb21ldGhpbmcnKSkKQEAgLTE4OCw4ICsxOTIsOSBAQAogICAgICAgICBzZWxmLmlucy5pbnZhbGlkYXRlX2NhY2hlcygpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhQYXRoRW50cnlGaW5kZXIsIFBhdGhFbnRyeUZpbmRlckRlZmF1bHRzVGVzdHMpCi1Gcm96ZW5fUEVGRGVmYXVsdFRlc3RzLCBTb3VyY2VfUEVGRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fUEVGRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9QRUZEZWZhdWx0VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChQYXRoRW50cnlGaW5kZXJEZWZhdWx0c1Rlc3RzKQogCiAKIGNsYXNzIExvYWRlcjoKQEAgLTE5OCwxMCArMjAzLDkgQEAKICAgICAgICAgcmV0dXJuIHN1cGVyKCkubG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKIAotRnJvemVuX0wsIFNvdXJjZV9MID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCitjbGFzcyBMb2FkZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKIAotCi1jbGFzcyBMb2FkZXJEZWZhdWx0c1Rlc3RzOgorICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9sb2FkX21vZHVsZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CkBAIC0yMTcsOCArMjIxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIobW9kKSkKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKExvYWRlciwgTG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9MRGVmYXVsdFRlc3RzLCBTb3VyY2VMRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fTERlZmF1bHRUZXN0cywKKyBTb3VyY2VMRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTG9hZGVyRGVmYXVsdHNUZXN0cykKIAogCiBjbGFzcyBSZXNvdXJjZUxvYWRlcihMb2FkZXIpOgpAQCAtMjI3LDE4ICsyMzIsMTggQEAKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2RhdGEocGF0aCkKIAogCi1Gcm96ZW5fUkwsIFNvdXJjZV9STCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUmVzb3VyY2VMb2FkZXIpCitjbGFzcyBSZXNvdXJjZUxvYWRlckRlZmF1bHRzVGVzdHMoQUJDVGVzdEhhcm5lc3MpOgogCi0KLWNsYXNzIFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0czoKKyAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoUmVzb3VyY2VMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9nZXRfZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmdldF9kYXRhKCcvc29tZS9wYXRoJykKIAogCi10ZXN0cyA9IG1ha2VfcmV0dXJuX3ZhbHVlX3Rlc3RzKFJlc291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlckRlZmF1bHRzVGVzdHMpCi1Gcm96ZW5fUkxEZWZhdWx0VGVzdHMsIFNvdXJjZV9STERlZmF1bHRUZXN0cyA9IHRlc3RzCisoRnJvemVuX1JMRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9STERlZmF1bHRUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFJlc291cmNlTG9hZGVyRGVmYXVsdHNUZXN0cykKIAogCiBjbGFzcyBJbnNwZWN0TG9hZGVyKExvYWRlcik6CkBAIC0yNTAsMTAgKzI1NSwxMiBAQAogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfc291cmNlKGZ1bGxuYW1lKQogCiAKLUZyb3plbl9JTCwgU291cmNlX0lMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhJbnNwZWN0TG9hZGVyKQorU1BMSVRfSUwgPSBtYWtlX2FiY19zdWJjbGFzc2VzKEluc3BlY3RMb2FkZXIpCiAKIAotY2xhc3MgSW5zcGVjdExvYWRlckRlZmF1bHRzVGVzdHM6CitjbGFzcyBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cyhBQkNUZXN0SGFybmVzcyk6CisKKyAgICBTUExJVCA9IFNQTElUX0lMCiAKICAgICBkZWYgdGVzdF9pc19wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKQEAgLTI2NCw4ICsyNzEsOSBAQAogICAgICAgICAgICAgc2VsZi5pbnMuZ2V0X3NvdXJjZSgnYmxhaCcpCiAKIAotdGVzdHMgPSBtYWtlX3JldHVybl92YWx1ZV90ZXN0cyhJbnNwZWN0TG9hZGVyLCBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9JTERlZmF1bHRUZXN0cywgU291cmNlX0lMRGVmYXVsdFRlc3RzID0gdGVzdHMKKyhGcm96ZW5fSUxEZWZhdWx0VGVzdHMsCisgU291cmNlX0lMRGVmYXVsdFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckRlZmF1bHRzVGVzdHMpCiAKIAogY2xhc3MgRXhlY3V0aW9uTG9hZGVyKEluc3BlY3RMb2FkZXIpOgpAQCAtMjczLDIxICsyODEsMjUgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogCi1Gcm96ZW5fRUwsIFNvdXJjZV9FTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoRXhlY3V0aW9uTG9hZGVyKQorCitTUExJVF9FTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoRXhlY3V0aW9uTG9hZGVyKQogCiAKLWNsYXNzIEV4ZWN1dGlvbkxvYWRlckRlZmF1bHRzVGVzdHM6CitjbGFzcyBFeGVjdXRpb25Mb2FkZXJEZWZhdWx0c1Rlc3RzKEFCQ1Rlc3RIYXJuZXNzKToKKworICAgIFNQTElUID0gU1BMSVRfRUwKIAogICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBzZWxmLmlucy5nZXRfZmlsZW5hbWUoJ2JsYWgnKQogCiAKLXRlc3RzID0gbWFrZV9yZXR1cm5fdmFsdWVfdGVzdHMoRXhlY3V0aW9uTG9hZGVyLCBJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKLUZyb3plbl9FTERlZmF1bHRUZXN0cywgU291cmNlX0VMRGVmYXVsdHNUZXN0cyA9IHRlc3RzCisoRnJvemVuX0VMRGVmYXVsdFRlc3RzLAorIFNvdXJjZV9FTERlZmF1bHRzVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyRGVmYXVsdHNUZXN0cykKKwogCiAjIyMjIyBNZXRhUGF0aEZpbmRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCiBjbGFzcyBNZXRhUGF0aEZpbmRlckZpbmRNb2R1bGVUZXN0czoKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMzE3LDEzICszMjksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZCwgc3BlYy5sb2FkZXIpCiAKIAotRnJvemVuX01QRkZpbmRNb2R1bGVUZXN0cywgU291cmNlX01QRkZpbmRNb2R1bGVUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBNZXRhUGF0aEZpbmRlckZpbmRNb2R1bGVUZXN0cywKLSAgICAgICAgYWJjPShmcm96ZW5fYWJjLCBzb3VyY2VfYWJjKSwKLSAgICAgICAgdXRpbD0oZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsKSkKKyhGcm96ZW5fTVBGRmluZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9NUEZGaW5kTW9kdWxlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNZXRhUGF0aEZpbmRlckZpbmRNb2R1bGVUZXN0cywgYWJjPWFiYywgdXRpbD11dGlsKQorCiAKICMjIyMjIFBhdGhFbnRyeUZpbmRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KIGNsYXNzIFBhdGhFbnRyeUZpbmRlckZpbmRMb2FkZXJUZXN0czoKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMzYxLDExICszNzIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRocywgZm91bmRbMV0pCiAKIAotRnJvemVuX1BFRkZpbmRMb2FkZXJUZXN0cywgU291cmNlX1BFRkZpbmRMb2FkZXJUZXN0cyA9IHV0aWwudGVzdF9ib3RoKAotICAgICAgICBQYXRoRW50cnlGaW5kZXJGaW5kTG9hZGVyVGVzdHMsCi0gICAgICAgIGFiYz0oZnJvemVuX2FiYywgc291cmNlX2FiYyksCi0gICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnksCi0gICAgICAgIHV0aWw9KGZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCkpCisoRnJvemVuX1BFRkZpbmRMb2FkZXJUZXN0cywKKyBTb3VyY2VfUEVGRmluZExvYWRlclRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoUGF0aEVudHJ5RmluZGVyRmluZExvYWRlclRlc3RzLCBhYmM9YWJjLCB1dGlsPXV0aWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiAjIyMjIyBMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzg2LDcgKzM5Niw3IEBACiAgICAgZGVmIHRlc3RfZnJlc2goc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHNlbGYubG9hZGVyKCkKICAgICAgICAgbmFtZSA9ICdibGFoJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmZvdW5kCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCkBAIC00MDQsNyArNDE0LDcgQEAKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzZWxmLnV0aWwuc3BlY19mcm9tX2xvYWRlcihuYW1lLCBsb2FkZXIpCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQogICAgICAgICAgICAgZm91bmQgPSBsb2FkZXIuZm91bmQKQEAgLTQxMiwxMCArNDIyLDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKIAogCi1Gcm96ZW5fTG9hZGVyTG9hZE1vZHVsZVRlc3RzLCBTb3VyY2VfTG9hZGVyTG9hZE1vZHVsZVRlc3RzID0gdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIExvYWRlckxvYWRNb2R1bGVUZXN0cywKLSAgICAgICAgYWJjPShmcm96ZW5fYWJjLCBzb3VyY2VfYWJjKSwKLSAgICAgICAgdXRpbD0oZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsKSkKKyhGcm96ZW5fTG9hZGVyTG9hZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9Mb2FkZXJMb2FkTW9kdWxlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChMb2FkZXJMb2FkTW9kdWxlVGVzdHMsIGFiYz1hYmMsIHV0aWw9dXRpbCkKIAogCiAjIyMjIyBJbnNwZWN0TG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDYxLDExICs0NzAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN0cmluZz4nKQogCiAKLWNsYXNzIEZyb3plbl9JTFNvdXJjZVRvQ29kZVRlc3RzKEluc3BlY3RMb2FkZXJTb3VyY2VUb0NvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcyA9IEZyb3plbl9JTAotCi1jbGFzcyBTb3VyY2VfSUxTb3VyY2VUb0NvZGVUZXN0cyhJbnNwZWN0TG9hZGVyU291cmNlVG9Db2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3MgPSBTb3VyY2VfSUwKKyhGcm96ZW5fSUxTb3VyY2VUb0NvZGVUZXN0cywKKyBTb3VyY2VfSUxTb3VyY2VUb0NvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJTb3VyY2VUb0NvZGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlckdldENvZGVUZXN0czoKQEAgLTQ5NSwxMSArNTAzLDEwIEBACiAgICAgICAgICAgICBsb2FkZXIuZ2V0X2NvZGUoJ2JsYWgnKQogCiAKLWNsYXNzIEZyb3plbl9JTEdldENvZGVUZXN0cyhJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gRnJvemVuX0lMCi0KLWNsYXNzIFNvdXJjZV9JTEdldENvZGVUZXN0cyhJbnNwZWN0TG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gU291cmNlX0lMCisoRnJvemVuX0lMR2V0Q29kZVRlc3RzLAorIFNvdXJjZV9JTEdldENvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJHZXRDb2RlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQogCiAKIGNsYXNzIEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHM6CkBAIC01NDMsMTEgKzU1MCwxMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzW3NlbGYubW9kdWxlX25hbWVdKQogCiAKLWNsYXNzIEZyb3plbl9JTExvYWRNb2R1bGVUZXN0cyhJbnNwZWN0TG9hZGVyTG9hZE1vZHVsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gRnJvemVuX0lMCi0KLWNsYXNzIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cyhJbnNwZWN0TG9hZGVyTG9hZE1vZHVsZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgSW5zcGVjdExvYWRlclN1YmNsYXNzID0gU291cmNlX0lMCisoRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQogCiAKICMjIyMjIEV4ZWN1dGlvbkxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC02MDgsMTUgKzYxNCwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5hdHRyLCA0MikKIAogCi1jbGFzcyBGcm96ZW5fRUxHZXRDb2RlVGVzdHMoRXhlY3V0aW9uTG9hZGVyR2V0Q29kZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgRXhlY3V0aW9uTG9hZGVyU3ViY2xhc3MgPSBGcm96ZW5fRUwKLQotY2xhc3MgU291cmNlX0VMR2V0Q29kZVRlc3RzKEV4ZWN1dGlvbkxvYWRlckdldENvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEV4ZWN1dGlvbkxvYWRlclN1YmNsYXNzID0gU291cmNlX0VMCisoRnJvemVuX0VMR2V0Q29kZVRlc3RzLAorIFNvdXJjZV9FTEdldENvZGVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEV4ZWN1dGlvbkxvYWRlckdldENvZGVUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRpb25Mb2FkZXJTdWJjbGFzcz1TUExJVF9FTCkKIAogCiAjIyMjIyBTb3VyY2VMb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotY2xhc3MgU291cmNlTG9hZGVyOgorY2xhc3MgU291cmNlT25seUxvYWRlcjoKIAogICAgICMgR2xvYmFscyB0aGF0IHNob3VsZCBiZSBkZWZpbmVkIGZvciBhbGwgbW9kdWxlcy4KICAgICBzb3VyY2UgPSAoYiJfID0gJzo6Jy5qb2luKFtfX25hbWVfXywgX19maWxlX18sIF9fY2FjaGVkX18sIF9fcGFja2FnZV9fLCAiCkBAIC02MzcsMTAgKzY0MiwxMCBAQAogICAgICAgICByZXR1cm4gJzxtb2R1bGU+JwogCiAKLUZyb3plbl9Tb3VyY2VPbmx5TCwgU291cmNlX1NvdXJjZU9ubHlMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhTb3VyY2VMb2FkZXIpCitTUExJVF9TT0wgPSBtYWtlX2FiY19zdWJjbGFzc2VzKFNvdXJjZU9ubHlMb2FkZXIsICdTb3VyY2VMb2FkZXInKQogCiAKLWNsYXNzIFNvdXJjZUxvYWRlcihTb3VyY2VMb2FkZXIpOgorY2xhc3MgU291cmNlTG9hZGVyKFNvdXJjZU9ubHlMb2FkZXIpOgogCiAgICAgc291cmNlX210aW1lID0gMQogCkBAIC02NzcsMTEgKzY4Miw3IEBACiAgICAgICAgIHJldHVybiBwYXRoID09IHNlbGYuYnl0ZWNvZGVfcGF0aAogCiAKLUZyb3plbl9TTCwgU291cmNlX1NMID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhTb3VyY2VMb2FkZXIpCi1Gcm96ZW5fU0wudXRpbCA9IGZyb3plbl91dGlsCi1Tb3VyY2VfU0wudXRpbCA9IHNvdXJjZV91dGlsCi1Gcm96ZW5fU0wuaW5pdCA9IGZyb3plbl9pbml0Ci1Tb3VyY2VfU0wuaW5pdCA9IHNvdXJjZV9pbml0CitTUExJVF9TTCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoU291cmNlTG9hZGVyLCB1dGlsPXV0aWwsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBTb3VyY2VMb2FkZXJUZXN0SGFybmVzczoKQEAgLTc2NSw3ICs3NjYsNyBAQAogICAgICAgICAjIExvYWRpbmcgYSBtb2R1bGUgc2hvdWxkIHNldCBfX25hbWVfXywgX19sb2FkZXJfXywgX19wYWNrYWdlX18sCiAgICAgICAgICMgX19wYXRoX18gKGZvciBwYWNrYWdlcyksIF9fZmlsZV9fLCBhbmQgX19jYWNoZWRfXy4KICAgICAgICAgIyBUaGUgbW9kdWxlIHNob3VsZCBhbHNvIGJlIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShzZWxmLm5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKHNlbGYubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQpAQCAtNzc4LDcgKzc3OSw3IEBACiAgICAgICAgICMgaXMgYSBwYWNrYWdlLgogICAgICAgICAjIFRlc3RpbmcgdGhlIHZhbHVlcyBmb3IgYSBwYWNrYWdlIGFyZSBjb3ZlcmVkIGJ5IHRlc3RfbG9hZF9tb2R1bGUuCiAgICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1GYWxzZSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoc2VsZi5uYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShzZWxmLm5hbWUpOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubmFtZSkKQEAgLTc5OCwxMyArNzk5LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dXJuZWRfc291cmNlLCBzb3VyY2UpCiAKIAotY2xhc3MgRnJvemVuX1NvdXJjZU9ubHlMVGVzdHMoU291cmNlT25seUxvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbG9hZGVyX21vY2sgPSBGcm96ZW5fU291cmNlT25seUwKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotY2xhc3MgU291cmNlX1NvdXJjZU9ubHlMVGVzdHMoU291cmNlT25seUxvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbG9hZGVyX21vY2sgPSBTb3VyY2VfU291cmNlT25seUwKLSAgICB1dGlsID0gc291cmNlX3V0aWwKKyhGcm96ZW5fU291cmNlT25seUxvYWRlclRlc3RzLAorIFNvdXJjZV9Tb3VyY2VPbmx5TG9hZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChTb3VyY2VPbmx5TG9hZGVyVGVzdHMsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXJfbW9jaz1TUExJVF9TT0wpCiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMuZG9udF93cml0ZV9ieXRlY29kZSwgInN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIHRydWUiKQpAQCAtODk2LDE1ICs4OTQsMTAgQEAKICAgICAgICAgc2VsZi52ZXJpZnlfY29kZShjb2RlX29iamVjdCkKIAogCi1jbGFzcyBGcm96ZW5fU0xCeXRlY29kZVRlc3RzKFNvdXJjZUxvYWRlckJ5dGVjb2RlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBsb2FkZXJfbW9jayA9IEZyb3plbl9TTAotICAgIGluaXQgPSBmcm96ZW5faW5pdAotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotCi1jbGFzcyBTb3VyY2VTTEJ5dGVjb2RlVGVzdHMoU291cmNlTG9hZGVyQnl0ZWNvZGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGxvYWRlcl9tb2NrID0gU291cmNlX1NMCi0gICAgaW5pdCA9IHNvdXJjZV9pbml0Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX1NMQnl0ZWNvZGVUZXN0cywKKyBTb3VyY2VTTEJ5dGVjb2RlVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChTb3VyY2VMb2FkZXJCeXRlY29kZVRlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZXJfbW9jaz1TUExJVF9TTCkKIAogCiBjbGFzcyBTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0czoKQEAgLTk0MCwxMSArOTMzLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCiAKIAotY2xhc3MgRnJvemVuX1NvdXJjZU9ubHlMR2V0U291cmNlVGVzdHMoU291cmNlTG9hZGVyR2V0U291cmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBTb3VyY2VPbmx5TG9hZGVyTW9jayA9IEZyb3plbl9Tb3VyY2VPbmx5TAotCi1jbGFzcyBTb3VyY2VfU291cmNlT25seUxHZXRTb3VyY2VUZXN0cyhTb3VyY2VMb2FkZXJHZXRTb3VyY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIFNvdXJjZU9ubHlMb2FkZXJNb2NrID0gU291cmNlX1NvdXJjZU9ubHlMCisoRnJvemVuX1NvdXJjZU9ubHlMb2FkZXJHZXRTb3VyY2VUZXN0cywKKyBTb3VyY2VfU291cmNlT25seUxvYWRlckdldFNvdXJjZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoU291cmNlTG9hZGVyR2V0U291cmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlT25seUxvYWRlck1vY2s9U1BMSVRfU09MKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IDJhMmQ0MmIuLjZiYzNjNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC0xLDggKzEsOCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCiAKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCitpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCit1dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKK21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKQEAgLTE4LDggKzE4LDggQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbXBvcnQoc2VsZik6CiAgICAgICAgICMgVGVzdCBpbXBvcnRpbmcgYSB0b3AtbGV2ZWwgbW9kdWxlLgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKIApAQCAtMjgsOCArMjgsOCBAQAogICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCiAgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCiAgICAgICAgIG5hbWUgPSAnezB9Lm1vZCcuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShuYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQogCkBAIC00MCwxNiArNDAsMTYgQEAKICAgICAgICAgbW9kdWxlX25hbWUgPSAnbW9kJwogICAgICAgICBhYnNvbHV0ZV9uYW1lID0gJ3swfS57MX0nLmZvcm1hdChwa2dfbmFtZSwgbW9kdWxlX25hbWUpCiAgICAgICAgIHJlbGF0aXZlX25hbWUgPSAnLnswfScuZm9ybWF0KG1vZHVsZV9uYW1lKQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIGFic29sdXRlX25hbWUpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgYWJzb2x1dGVfbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKIAogICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CiAgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ2EnKQogICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCdhLmInKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW5pdC5pbXBvcnRfbW9kdWxlKCcuLmMnLCAnYS5iJykKQEAgLTYxLDggKzYxLDggQEAKICAgICAgICAgcGtnX25hbWUgPSAncGtnJwogICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQogICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwubW9ja19tb2R1bGVzKHBrZ19sb25nX25hbWUsIG5hbWUpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUocGtnX25hbWUpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCkBAIC04NiwxNiArODYsMTUgQEAKICAgICAgICAgICAgIGJfbG9hZF9jb3VudCArPSAxCiAgICAgICAgIGNvZGUgPSB7J2EnOiBsb2FkX2EsICdhLmInOiBsb2FkX2J9CiAgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iJ10KLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcywgbW9kdWxlX2NvZGU9Y29kZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLm1vY2tfbW9kdWxlcygqbW9kdWxlcywgbW9kdWxlX2NvZGU9Y29kZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW1wb3J0X21vZHVsZSgnYS5iJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCiAKLWNsYXNzIEZyb3plbl9JbXBvcnRNb2R1bGVUZXN0cyhJbXBvcnRNb2R1bGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBmcm96ZW5faW5pdAogCi1jbGFzcyBTb3VyY2VfSW1wb3J0TW9kdWxlVGVzdHMoSW1wb3J0TW9kdWxlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKKyhGcm96ZW5fSW1wb3J0TW9kdWxlVGVzdHMsCisgU291cmNlX0ltcG9ydE1vZHVsZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW1wb3J0TW9kdWxlVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBGaW5kTG9hZGVyVGVzdHM6CkBAIC0xMDcsNyArMTA2LDcgQEAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIGxvYWRlciA9ICdhIGxvYWRlciEnCiAgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgpAQCAtMTIwLDcgKzExOSw3IEBACiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfbG9hZGVyX2lzX05vbmUoc2VsZik6CiAgICAgICAgICMgSWYgc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXyBpcyBOb25lLCByYWlzZSBWYWx1ZUVycm9yLgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gTm9uZQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKQEAgLTEzMyw3ICsxMzIsNyBAQAogICAgICAgICAjIFNob3VsZCByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICMgSXNzdWUgIzE3MDk5CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGRlbCBtb2R1bGUuX19sb2FkZXJfXwpAQCAtMTQ4LDggKzE0Nyw4IEBACiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgIyBSZXR1cm4gdGhlIGxvYWRlciBmb3VuZCBvbiBzeXMubWV0YV9wYXRoLgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgTm9uZSksIHNlbGYuaW5pdC5maW5kX2xvYWRlcihuYW1lKSkKQEAgLTE1OCw4ICsxNTcsOCBAQAogICAgICAgICAjIFNlYXJjaGluZyBvbiBhIHBhdGggc2hvdWxkIHdvcmsuCiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCiAgICAgICAgIHBhdGggPSAncGF0aCB0byBzb21lIHBsYWNlJwotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtzZWxmLkZha2VNZXRhRmluZGVyXSk6CiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgcGF0aCksCkBAIC0xNzEsMTEgKzE3MCwxMCBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmluaXQuZmluZF9sb2FkZXIoJ25ldmVyZ29pbmd0b2ZpbmR0aGlzbW9kdWxlJykpCiAKLWNsYXNzIEZyb3plbl9GaW5kTG9hZGVyVGVzdHMoRmluZExvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0CiAKLWNsYXNzIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMoRmluZExvYWRlclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IHNvdXJjZV9pbml0CisoRnJvemVuX0ZpbmRMb2FkZXJUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclRlc3RzLCBpbml0PWluaXQpCiAKIAogY2xhc3MgUmVsb2FkVGVzdHM6CkBAIC0xOTUsMTAgKzE5MywxMCBAQAogICAgICAgICAgICAgbW9kdWxlID0gdHlwZShzeXMpKCd0b3BfbGV2ZWwnKQogICAgICAgICAgICAgbW9kdWxlLnNwYW0gPSAzCiAgICAgICAgICAgICBzeXMubW9kdWxlc1sndG9wX2xldmVsJ10gPSBtb2R1bGUKLSAgICAgICAgbW9jayA9IHV0aWwubW9ja19tb2R1bGVzKCd0b3BfbGV2ZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eyd0b3BfbGV2ZWwnOiBjb2RlfSkKKyAgICAgICAgbW9jayA9IHRlc3RfdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsndG9wX2xldmVsJzogY29kZX0pCiAgICAgICAgIHdpdGggbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbml0LmltcG9ydF9tb2R1bGUoJ3RvcF9sZXZlbCcpCiAgICAgICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmluaXQucmVsb2FkKG1vZHVsZSkKICAgICAgICAgICAgICAgICBhY3R1YWwgPSBzeXMubW9kdWxlc1sndG9wX2xldmVsJ10KQEAgLTIzMCw3ICsyMjgsNyBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZF9sb2NhdGlvbl9jaGFuZ2VkKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChOb25lKSBhcyBjd2Q6Ci0gICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnc3BhbScpOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZSgnc3BhbScpOgogICAgICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5EaXJzT25TeXNQYXRoKGN3ZCk6CiAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgYXMgYSBwbGFpbiBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5pdC5pbnZhbGlkYXRlX2NhY2hlcygpCkBAIC0yODEsNyArMjc5LDcgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfbmFtZXNwYWNlX2NoYW5nZWQoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKLSAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdzcGFtJyk6CisgICAgICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKCdzcGFtJyk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LkRpcnNPblN5c1BhdGgoY3dkKToKICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBhcyBhIG5hbWVzcGFjZSBwYWNrYWdlLgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluaXQuaW52YWxpZGF0ZV9jYWNoZXMoKQpAQCAtMzM4LDIwICszMzYsMTYgQEAKICAgICAgICAgIyBTZWUgIzE5ODUxLgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6Ci0gICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICBoYW0gPSBzZWxmLmluaXQuaW1wb3J0X21vZHVsZShmdWxsbmFtZSkKICAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5pbml0LnJlbG9hZChoYW0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJlbG9hZGVkLCBoYW0pCiAKIAotY2xhc3MgRnJvemVuX1JlbG9hZFRlc3RzKFJlbG9hZFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaW5pdCA9IGZyb3plbl9pbml0Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLWNsYXNzIFNvdXJjZV9SZWxvYWRUZXN0cyhSZWxvYWRUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBzb3VyY2VfaW5pdAotICAgIHV0aWwgPSBzb3VyY2VfdXRpbAorKEZyb3plbl9SZWxvYWRUZXN0cywKKyBTb3VyY2VfUmVsb2FkVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChSZWxvYWRUZXN0cywgaW5pdD1pbml0LCB1dGlsPXV0aWwpCiAKIAogY2xhc3MgSW52YWxpZGF0ZUNhY2hlVGVzdHM6CkBAIC0zODQsMTEgKzM3OCwxMCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5fX2RlbGl0ZW1fXyhrZXkpKQogICAgICAgICBzZWxmLmluaXQuaW52YWxpZGF0ZV9jYWNoZXMoKSAgIyBTaG91bGRuJ3QgdHJpZ2dlciBhbiBleGNlcHRpb24uCiAKLWNsYXNzIEZyb3plbl9JbnZhbGlkYXRlQ2FjaGVUZXN0cyhJbnZhbGlkYXRlQ2FjaGVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGluaXQgPSBmcm96ZW5faW5pdAogCi1jbGFzcyBTb3VyY2VfSW52YWxpZGF0ZUNhY2hlVGVzdHMoSW52YWxpZGF0ZUNhY2hlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKKyhGcm96ZW5fSW52YWxpZGF0ZUNhY2hlVGVzdHMsCisgU291cmNlX0ludmFsaWRhdGVDYWNoZVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW52YWxpZGF0ZUNhY2hlVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBGcm96ZW5JbXBvcnRsaWJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOTgsNiArMzkxLDcgQEAKICAgICAgICAgIyBDYW4ndCBkbyBhbiBpc2luc3RhbmNlKCkgY2hlY2sgc2luY2Ugc2VwYXJhdGUgY29waWVzIG9mIGltcG9ydGxpYgogICAgICAgICAjIG1heSBoYXZlIGJlZW4gdXNlZCBmb3IgaW1wb3J0LCBzbyBqdXN0IGNoZWNrIHRoZSBuYW1lIGlzIG5vdCBmb3IgdGhlCiAgICAgICAgICMgZnJvemVuIGxvYWRlci4KKyAgICAgICAgc291cmNlX2luaXQgPSBpbml0WydTb3VyY2UnXQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNvdXJjZV9pbml0Ll9fbG9hZGVyX18uX19jbGFzc19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGcm96ZW5JbXBvcnRlcicpCiAKQEAgLTQyNiwxMSArNDIwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5tYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIuZmluZF9tb2R1bGUobmFtZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG1vZHVsZS5fX3NwZWNfXywgTm9uZSkKIAotY2xhc3MgRnJvemVuX1N0YXJ0dXBUZXN0cyhTdGFydHVwVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5CiAKLWNsYXNzIFNvdXJjZV9TdGFydHVwVGVzdHMoU3RhcnR1cFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbWFjaGluZXJ5ID0gc291cmNlX21hY2hpbmVyeQorKEZyb3plbl9TdGFydHVwVGVzdHMsCisgU291cmNlX1N0YXJ0dXBUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKFN0YXJ0dXBUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMTkxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKQEAgLTAsMCArMSwxMzIgQEAKK2ltcG9ydCBpbXBvcnRsaWIKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBhYmMKK2Zyb20gaW1wb3J0bGliIGltcG9ydCB1dGlsCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAorCisKK2NsYXNzIENvbGxlY3RJbml0OgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rd2FyZ3MgPSBrd2FyZ3MKKworICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICByZXR1cm4gc2VsZgorCisKK2NsYXNzIExhenlMb2FkZXJGYWN0b3J5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IHV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KENvbGxlY3RJbml0KQorICAgICAgICAjIEUuZy4gd2hhdCBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgaW5zdGFudGlhdGVzIGxvYWRlcnMgd2l0aAorICAgICAgICAjIHBsdXMga2V5d29yZCBhcmd1bWVudHMuCisgICAgICAgIGxhenlfbG9hZGVyID0gZmFjdG9yeSgnbW9kdWxlIG5hbWUnLCAnbW9kdWxlIHBhdGgnLCBrdz0na3cnKQorICAgICAgICBsb2FkZXIgPSBsYXp5X2xvYWRlci5sb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ21vZHVsZSBuYW1lJywgJ21vZHVsZSBwYXRoJyksIGxvYWRlci5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsna3cnOiAna3cnfSwgbG9hZGVyLmt3YXJncykKKworICAgIGRlZiB0ZXN0X3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgICMgTm8gZXhlY19tb2R1bGUoKSwgbm8gbGF6eSBsb2FkaW5nLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIuZmFjdG9yeShvYmplY3QpCisKKworY2xhc3MgVGVzdGluZ0ltcG9ydGVyKGFiYy5NZXRhUGF0aEZpbmRlciwgYWJjLkxvYWRlcik6CisKKyAgICBtb2R1bGVfbmFtZSA9ICdsYXp5X2xvYWRlcl90ZXN0JworICAgIG11dGF0ZWRfbmFtZSA9ICdjaGFuZ2VkJworICAgIGxvYWRlZCA9IE5vbmUKKyAgICBzb3VyY2VfY29kZSA9ICdhdHRyID0gNDI7IF9fbmFtZV9fID0geyFyfScuZm9ybWF0KG11dGF0ZWRfbmFtZSkKKworICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgbmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgorICAgICAgICBpZiBuYW1lICE9IHNlbGYubW9kdWxlX25hbWU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gdXRpbC5zcGVjX2Zyb21fbG9hZGVyKG5hbWUsIHV0aWwuTGF6eUxvYWRlcihzZWxmKSkKKworICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICBleGVjKHNlbGYuc291cmNlX2NvZGUsIG1vZHVsZS5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5sb2FkZWQgPSBtb2R1bGUKKworCitjbGFzcyBMYXp5TG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKG9iamVjdCkKKworICAgIGRlZiBuZXdfbW9kdWxlKHNlbGYsIHNvdXJjZV9jb2RlPU5vbmUpOgorICAgICAgICBsb2FkZXIgPSBUZXN0aW5nSW1wb3J0ZXIoKQorICAgICAgICBpZiBzb3VyY2VfY29kZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvYWRlci5zb3VyY2VfY29kZSA9IHNvdXJjZV9jb2RlCisgICAgICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9sb2FkZXIoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuTGF6eUxvYWRlcihsb2FkZXIpKQorICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKKyAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzcGVjLmxvYWRlcgorICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAgICMgTW9kdWxlIGlzIG5vdyBsYXp5LgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIubG9hZGVkKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgdGVzdF9lMmUoc2VsZik6CisgICAgICAgICMgRW5kLXRvLWVuZCB0ZXN0IHRvIHZlcmlmeSB0aGUgbG9hZCBpcyBpbiBmYWN0IGxhenkuCisgICAgICAgIGltcG9ydGVyID0gVGVzdGluZ0ltcG9ydGVyKCkKKyAgICAgICAgYXNzZXJ0IGltcG9ydGVyLmxvYWRlZCBpcyBOb25lCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUoaW1wb3J0ZXIubW9kdWxlX25hbWUpOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3V0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShpbXBvcnRlci5tb2R1bGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0ZXIubG9hZGVkKQorICAgICAgICAjIFRyaWdnZXIgbG9hZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19sb2FkZXJfXywgaW1wb3J0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGltcG9ydGVyLmxvYWRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIGltcG9ydGVyLmxvYWRlZCkKKworICAgIGRlZiB0ZXN0X2F0dHJfdW5jaGFuZ2VkKHNlbGYpOgorICAgICAgICAjIEFuIGF0dHJpYnV0ZSBvbmx5IG11dGF0ZWQgYXMgYSBzaWRlLWVmZmVjdCBvZiBpbXBvcnQgc2hvdWxkIG5vdCBiZQorICAgICAgICAjIGNoYW5nZWQgbmVlZGxlc3NseS4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0aW5nSW1wb3J0ZXIubXV0YXRlZF9uYW1lLCBtb2R1bGUuX19uYW1lX18pCisKKyAgICBkZWYgdGVzdF9uZXdfYXR0cihzZWxmKToKKyAgICAgICAgIyBBIG5ldyBhdHRyaWJ1dGUgc2hvdWxkIHBlcnNpc3QuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIG1vZHVsZS5uZXdfYXR0ciA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDIsIG1vZHVsZS5uZXdfYXR0cikKKworICAgIGRlZiB0ZXN0X211dGF0ZWRfcHJlZXhpc3RpbmdfYXR0cihzZWxmKToKKyAgICAgICAgIyBDaGFuZ2luZyBhbiBhdHRyaWJ1dGUgdGhhdCBhbHJlYWR5IGV4aXN0ZWQgb24gdGhlIG1vZHVsZSAtLQorICAgICAgICAjIGUuZy4gX19uYW1lX18gLS0gc2hvdWxkIHBlcnNpc3QuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIG1vZHVsZS5fX25hbWVfXyA9ICdib2d1cycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYm9ndXMnLCBtb2R1bGUuX19uYW1lX18pCisKKyAgICBkZWYgdGVzdF9tdXRhdGVkX2F0dHIoc2VsZik6CisgICAgICAgICMgQ2hhbmdpbmcgYW4gYXR0cmlidXRlIHRoYXQgY29tZXMgaW50byBleGlzdGVuY2UgYWZ0ZXIgYW4gaW1wb3J0CisgICAgICAgICMgc2hvdWxkIHBlcnNpc3QuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIG1vZHVsZS5hdHRyID0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIG1vZHVsZS5hdHRyKQorCisgICAgZGVmIHRlc3RfZGVsZXRlX2V2ZW50dWFsX2F0dHIoc2VsZik6CisgICAgICAgICMgRGVsZXRpbmcgYW4gYXR0cmlidXRlIHNob3VsZCBzdGF5IGRlbGV0ZWQuCisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIGRlbCBtb2R1bGUuYXR0cgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnYXR0cicpKQorCisgICAgZGVmIHRlc3RfZGVsZXRlX3ByZWV4aXN0aW5nX2F0dHIoc2VsZik6CisgICAgICAgIG1vZHVsZSA9IHNlbGYubmV3X21vZHVsZSgpCisgICAgICAgIGRlbCBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fbmFtZV9fJykpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfc3Vic3RpdHV0aW9uX2Vycm9yKHNlbGYpOgorICAgICAgICBzb3VyY2VfY29kZSA9ICdpbXBvcnQgc3lzOyBzeXMubW9kdWxlc1tfX25hbWVfX10gPSA0MicKKyAgICAgICAgbW9kdWxlID0gc2VsZi5uZXdfbW9kdWxlKHNvdXJjZV9jb2RlKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX25hbWVfXworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQppbmRleCBkYzk3YmExLi5kZjBhZjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKQEAgLTEsNyArMSw2IEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKLWZyb3plbl9ib290c3RyYXAgPSBmcm96ZW5faW5pdC5fYm9vdHN0cmFwCi1zb3VyY2VfYm9vdHN0cmFwID0gc291cmNlX2luaXQuX2Jvb3RzdHJhcAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAorCitpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCiAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCkBAIC0zMiwxNCArMzEsMjAgQEAKICAgICAgICAgdGVzdF90aW1lb3V0ID0gTm9uZQogICAgICAgICAjIF9yZWxlYXNlX3NhdmUoKSB1bnN1cHBvcnRlZAogICAgICAgICB0ZXN0X3JlbGVhc2Vfc2F2ZV91bmFjcXVpcmVkID0gTm9uZQorICAgICAgICAjIGxvY2sgc3RhdHVzIGluIHJlcHIgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9yZXByID0gTm9uZQorICAgICAgICB0ZXN0X2xvY2tlZF9yZXByID0gTm9uZQogCi0gICAgY2xhc3MgRnJvemVuX01vZHVsZUxvY2tBc1JMb2NrVGVzdHMoTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywgbG9ja190ZXN0cy5STG9ja1Rlc3RzKToKLSAgICAgICAgTG9ja1R5cGUgPSBmcm96ZW5fYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCisgICAgTE9DS19UWVBFUyA9IHtraW5kOiBzcGxpdGluaXQuX2Jvb3RzdHJhcC5fTW9kdWxlTG9jaworICAgICAgICAgICAgICAgICAgZm9yIGtpbmQsIHNwbGl0aW5pdCBpbiBpbml0Lml0ZW1zKCl9CiAKLSAgICBjbGFzcyBTb3VyY2VfTW9kdWxlTG9ja0FzUkxvY2tUZXN0cyhNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLCBsb2NrX3Rlc3RzLlJMb2NrVGVzdHMpOgotICAgICAgICBMb2NrVHlwZSA9IHNvdXJjZV9ib290c3RyYXAuX01vZHVsZUxvY2sKLQorICAgIChGcm96ZW5fTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywKKyAgICAgU291cmNlX01vZHVsZUxvY2tBc1JMb2NrVGVzdHMKKyAgICAgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTW9kdWxlTG9ja0FzUkxvY2tUZXN0cywgbG9ja190ZXN0cy5STG9ja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrVHlwZT1MT0NLX1RZUEVTKQogZWxzZToKKyAgICBMT0NLX1RZUEVTID0ge30KKwogICAgIGNsYXNzIEZyb3plbl9Nb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcGFzcwogCkBAIC00Nyw3OCArNTIsOTQgQEAKICAgICAgICAgcGFzcwogCiAKLWNsYXNzIERlYWRsb2NrQXZvaWRhbmNlVGVzdHM6CitpZiB0aHJlYWRpbmcgaXMgbm90IE5vbmU6CisgICAgY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0czoKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQotICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDAuMDAwMDAxKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IE5vbmUKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwpCi0KLSAgICBkZWYgcnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KHNlbGYsIGNyZWF0ZV9kZWFkbG9jayk6Ci0gICAgICAgIE5MT0NLUyA9IDEwCi0gICAgICAgIGxvY2tzID0gW3NlbGYuTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQotICAgICAgICBwYWlycyA9IFsobG9ja3NbaV0sIGxvY2tzWyhpKzEpJU5MT0NLU10pIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCi0gICAgICAgIGlmIGNyZWF0ZV9kZWFkbG9jazoKLSAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKLSAgICAgICAgYmFycmllciA9IHRocmVhZGluZy5CYXJyaWVyKE5USFJFQURTKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZGVmIF9hY3F1aXJlKGxvY2spOgotICAgICAgICAgICAgIiIiVHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2suIFJldHVybiBUcnVlIG9uIHN1Y2Nlc3MsIEZhbHNlIG9uIGRlYWRsb2NrLiIiIgorICAgICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKLSAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkRlYWRsb2NrRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQorICAgICAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCA9IE5vbmUKKworICAgICAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICAgICBpZiBzZWxmLm9sZF9zd2l0Y2hpbnRlcnZhbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwpCisKKyAgICAgICAgZGVmIHJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChzZWxmLCBjcmVhdGVfZGVhZGxvY2spOgorICAgICAgICAgICAgTkxPQ0tTID0gMTAKKyAgICAgICAgICAgIGxvY2tzID0gW3NlbGYuTG9ja1R5cGUoc3RyKGkpKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICAgICAgcGFpcnMgPSBbKGxvY2tzW2ldLCBsb2Nrc1soaSsxKSVOTE9DS1NdKSBmb3IgaSBpbiByYW5nZShOTE9DS1MpXQorICAgICAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgorICAgICAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGRlZiBmKCk6Ci0gICAgICAgICAgICBhLCBiID0gcGFpcnMucG9wKCkKLSAgICAgICAgICAgIHJhID0gX2FjcXVpcmUoYSkKLSAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCi0gICAgICAgICAgICByYiA9IF9hY3F1aXJlKGIpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgocmEsIHJiKSkKLSAgICAgICAgICAgIGlmIHJiOgotICAgICAgICAgICAgICAgIGIucmVsZWFzZSgpCi0gICAgICAgICAgICBpZiByYToKLSAgICAgICAgICAgICAgICBhLnJlbGVhc2UoKQotICAgICAgICBsb2NrX3Rlc3RzLkJ1bmNoKGYsIE5USFJFQURTKS53YWl0X2Zvcl9maW5pc2hlZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMpLCBOVEhSRUFEUykKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKKyAgICAgICAgICAgICAgICBOVEhSRUFEUyA9IE5MT0NLUyAtIDEKKyAgICAgICAgICAgIGJhcnJpZXIgPSB0aHJlYWRpbmcuQmFycmllcihOVEhSRUFEUykKKyAgICAgICAgICAgIHJlc3VsdHMgPSBbXQogCi0gICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChUcnVlKQotICAgICAgICAjIEF0IGxlYXN0IG9uZSBvZiB0aGUgdGhyZWFkcyBkZXRlY3RlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBvbiBpdHMKLSAgICAgICAgIyBzZWNvbmQgYWNxdWlyZSgpIGNhbGwuICBJdCBtYXkgYmUgc2V2ZXJhbCBvZiB0aGVtLCBiZWNhdXNlIHRoZQotICAgICAgICAjIGRlYWRsb2NrIGF2b2lkYW5jZSBtZWNoYW5pc20gaXMgY29uc2VydmF0aXZlLgotICAgICAgICBuYl9kZWFkbG9ja3MgPSByZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG5iX2RlYWRsb2NrcywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSAtIG5iX2RlYWRsb2NrcykKKyAgICAgICAgICAgIGRlZiBfYWNxdWlyZShsb2NrKToKKyAgICAgICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywKKyAgICAgICAgICAgICAgICBGYWxzZSBvbiBkZWFkbG9jay4iIiIKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGxvY2suYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGYuRGVhZGxvY2tFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAotICAgIGRlZiB0ZXN0X25vX2RlYWRsb2NrKHNlbGYpOgotICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgRmFsc2UpKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSkKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgYSwgYiA9IHBhaXJzLnBvcCgpCisgICAgICAgICAgICAgICAgcmEgPSBfYWNxdWlyZShhKQorICAgICAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICAgICAgcmIgPSBfYWNxdWlyZShiKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChyYSwgcmIpKQorICAgICAgICAgICAgICAgIGlmIHJiOgorICAgICAgICAgICAgICAgICAgICBiLnJlbGVhc2UoKQorICAgICAgICAgICAgICAgIGlmIHJhOgorICAgICAgICAgICAgICAgICAgICBhLnJlbGVhc2UoKQorICAgICAgICAgICAgbG9ja190ZXN0cy5CdW5jaChmLCBOVEhSRUFEUykud2FpdF9mb3JfZmluaXNoZWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIE5USFJFQURTKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAidGhyZWFkcyBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi1jbGFzcyBGcm96ZW5fRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyhEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgTG9ja1R5cGUgPSBmcm96ZW5fYm9vdHN0cmFwLl9Nb2R1bGVMb2NrCi0gICAgRGVhZGxvY2tFcnJvciA9IGZyb3plbl9ib290c3RyYXAuX0RlYWRsb2NrRXJyb3IKKyAgICAgICAgZGVmIHRlc3RfZGVhZGxvY2soc2VsZik6CisgICAgICAgICAgICByZXN1bHRzID0gc2VsZi5ydW5fZGVhZGxvY2tfYXZvaWRhbmNlX3Rlc3QoVHJ1ZSkKKyAgICAgICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cworICAgICAgICAgICAgIyBzZWNvbmQgYWNxdWlyZSgpIGNhbGwuICBJdCBtYXkgYmUgc2V2ZXJhbCBvZiB0aGVtLCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgIyBkZWFkbG9jayBhdm9pZGFuY2UgbWVjaGFuaXNtIGlzIGNvbnNlcnZhdGl2ZS4KKyAgICAgICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG5iX2RlYWRsb2NrcywgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cy5jb3VudCgoVHJ1ZSwgVHJ1ZSkpLCBsZW4ocmVzdWx0cykgLSBuYl9kZWFkbG9ja3MpCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgInRocmVhZHMgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQotY2xhc3MgU291cmNlX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHMoRGVhZGxvY2tBdm9pZGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIExvY2tUeXBlID0gc291cmNlX2Jvb3RzdHJhcC5fTW9kdWxlTG9jawotICAgIERlYWRsb2NrRXJyb3IgPSBzb3VyY2VfYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisgICAgICAgIGRlZiB0ZXN0X25vX2RlYWRsb2NrKHNlbGYpOgorICAgICAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBUcnVlKSksIGxlbihyZXN1bHRzKSkKKworCisgICAgREVBRExPQ0tfRVJST1JTID0ge2tpbmQ6IHNwbGl0aW5pdC5fYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBraW5kLCBzcGxpdGluaXQgaW4gaW5pdC5pdGVtcygpfQorCisgICAgKEZyb3plbl9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzLAorICAgICBTb3VyY2VfRGVhZGxvY2tBdm9pZGFuY2VUZXN0cworICAgICApID0gdGVzdF91dGlsLnRlc3RfYm90aChEZWFkbG9ja0F2b2lkYW5jZVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrVHlwZT1MT0NLX1RZUEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWFkbG9ja0Vycm9yPURFQURMT0NLX0VSUk9SUykKK2Vsc2U6CisgICAgREVBRExPQ0tfRVJST1JTID0ge30KKworICAgIGNsYXNzIEZyb3plbl9EZWFkbG9ja0F2b2lkYW5jZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgcGFzcworCisgICAgY2xhc3MgU291cmNlX0RlYWRsb2NrQXZvaWRhbmNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBwYXNzCiAKIAogY2xhc3MgTGlmZXRpbWVUZXN0czoKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBib290c3RyYXAoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcAorCiAgICAgZGVmIHRlc3RfbG9ja19saWZldGltZShzZWxmKToKICAgICAgICAgbmFtZSA9ICJ4eXp6eSIKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzZWxmLmJvb3RzdHJhcC5fbW9kdWxlX2xvY2tzKQpAQCAtMTM1LDExICsxNTYsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4oc2VsZi5ib290c3RyYXAuX21vZHVsZV9sb2NrcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib290c3RyYXAuX21vZHVsZV9sb2NrcykKIAotY2xhc3MgRnJvemVuX0xpZmV0aW1lVGVzdHMoTGlmZXRpbWVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IGZyb3plbl9ib290c3RyYXAKIAotY2xhc3MgU291cmNlX0xpZmV0aW1lVGVzdHMoTGlmZXRpbWVUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IHNvdXJjZV9ib290c3RyYXAKKyhGcm96ZW5fTGlmZXRpbWVUZXN0cywKKyBTb3VyY2VfTGlmZXRpbWVUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKExpZmV0aW1lVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBAc3VwcG9ydC5yZWFwX3RocmVhZHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQppbmRleCA3MTU0MWY2Li44YjMzM2U4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CkBAIC0xLDEwICsxLDggQEAKLWZyb20gLiBpbXBvcnQgdXRpbAorZnJvbSAuIGltcG9ydCB1dGlsIGFzIHRlc3RfdXRpbAogCi1mcm96ZW5faW5pdCwgc291cmNlX2luaXQgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCi1mcm96ZW5fYm9vdHN0cmFwID0gZnJvemVuX2luaXQuX2Jvb3RzdHJhcAotc291cmNlX2Jvb3RzdHJhcCA9IHNvdXJjZV9pbml0Ll9ib290c3RyYXAKLWZyb3plbl9tYWNoaW5lcnksIHNvdXJjZV9tYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQotZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCitpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCittYWNoaW5lcnkgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCit1dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zLnBhdGgKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydApAQCAtMzYsNiArMzQsOSBAQAogICAgIGRlZiBfaXNfcGFja2FnZShzZWxmLCBuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYucGFja2FnZQogCisgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgIHJldHVybiBOb25lCisKIAogY2xhc3MgTmV3TG9hZGVyKFRlc3RMb2FkZXIpOgogCkBAIC01Miw2ICs1Myw4IEBACiAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAorICAgICAgICBmcm96ZW5fdXRpbCA9IHV0aWxbJ0Zyb3plbiddCisKICAgICAgICAgQGZyb3plbl91dGlsLm1vZHVsZV9mb3JfbG9hZGVyCiAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAgICAgbW9kdWxlLmhhbSA9IHNlbGYuSEFNCkBAIC0yMjEsMTggKzIyNCwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9jX3NwZWMuY2FjaGVkLCAnc3BhbS5weWMnKQogCiAKLWNsYXNzIEZyb3plbl9Nb2R1bGVTcGVjVGVzdHMoTW9kdWxlU3BlY1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0gICAgbWFjaGluZXJ5ID0gZnJvemVuX21hY2hpbmVyeQotCi0KLWNsYXNzIFNvdXJjZV9Nb2R1bGVTcGVjVGVzdHMoTW9kdWxlU3BlY1Rlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCi0gICAgbWFjaGluZXJ5ID0gc291cmNlX21hY2hpbmVyeQorKEZyb3plbl9Nb2R1bGVTcGVjVGVzdHMsCisgU291cmNlX01vZHVsZVNwZWNUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKE1vZHVsZVNwZWNUZXN0cywgdXRpbD11dGlsLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIE1vZHVsZVNwZWNNZXRob2RzVGVzdHM6CiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYm9vdHN0cmFwKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbml0Ll9ib290c3RyYXAKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5uYW1lID0gJ3NwYW0nCiAgICAgICAgIHNlbGYucGF0aCA9ICdzcGFtLnB5JwpAQCAtMjQzLDE1MiArMjQ1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1zZWxmLnBhdGgpCiAgICAgICAgIHNlbGYubG9jX3NwZWMuX3NldF9maWxlYXR0ciA9IFRydWUKIAotICAgICMgaW5pdF9tb2R1bGVfYXR0cnMKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoc2VsZi5uYW1lKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIHNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fc3BlY19fLCBzcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJykpCi0KLSAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRyc19wYWNrYWdlKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoc2VsZi5uYW1lKQotICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYyhzZWxmLm5hbWUsIHNlbGYubG9hZGVyKQotICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gWydzcGFtJywgJ2hhbSddCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBzcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19zcGVjX18sIHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fcGF0aF9fLCBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2xvY2F0aW9uKHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoc2VsZi5uYW1lKQotICAgICAgICBzcGVjID0gc2VsZi5sb2Nfc3BlYwotICAgICAgICBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc3BlYykuaW5pdF9tb2R1bGVfYXR0cnMobW9kdWxlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIHNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fc3BlY19fLCBzcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19maWxlX18sIHNwZWMub3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShzcGVjLm9yaWdpbikpCi0KLSAgICBkZWYgdGVzdF9pbml0X21vZHVsZV9hdHRyc19kaWZmZXJlbnRfbmFtZShzZWxmKToKLSAgICAgICAgbW9kdWxlID0gdHlwZShzeXMpKCdlZ2dzJykKLSAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoc2VsZi5uYW1lLCBzZWxmLmxvYWRlcikKLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQotCi0gICAgZGVmIHRlc3RfaW5pdF9tb2R1bGVfYXR0cnNfZGlmZmVyZW50X3NwZWMoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzKShzZWxmLm5hbWUpCi0gICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ2VnZ3MnLCBvYmplY3QoKSkKLSAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoc2VsZi5uYW1lLCBzZWxmLmxvYWRlcikKLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBzcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIHNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX3NwZWNfXywgc3BlYykKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2FscmVhZHlfc2V0KHNlbGYpOgotICAgICAgICBtb2R1bGUgPSB0eXBlKHN5cykoJ2hhbS5lZ2dzJykKLSAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBvYmplY3QoKQotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnaGFtJwotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbJ2VnZ3MnXQotICAgICAgICBtb2R1bGUuX19maWxlX18gPSAnaGFtL2VnZ3MvX19pbml0X18ucHknCi0gICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKLSAgICAgICAgb3JpZ2luYWwgPSB2YXJzKG1vZHVsZSkuY29weSgpCi0gICAgICAgIHNwZWMgPSBzZWxmLmxvY19zcGVjCi0gICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbJyddCi0gICAgICAgIHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5pbml0X21vZHVsZV9hdHRycyhtb2R1bGUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgb3JpZ2luYWxbJ19fbG9hZGVyX18nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19wYWNrYWdlX18sIG9yaWdpbmFsWydfX3BhY2thZ2VfXyddKQotICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX3BhdGhfXywgb3JpZ2luYWxbJ19fcGF0aF9fJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fZmlsZV9fLCBvcmlnaW5hbFsnX19maWxlX18nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19jYWNoZWRfXywgb3JpZ2luYWxbJ19fY2FjaGVkX18nXSkKLQotICAgIGRlZiB0ZXN0X2luaXRfbW9kdWxlX2F0dHJzX2ltbXV0YWJsZShzZWxmKToKLSAgICAgICAgbW9kdWxlID0gb2JqZWN0KCkKLSAgICAgICAgc3BlYyA9IHNlbGYubG9jX3NwZWMKLSAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFsnJ10KLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNwZWMpLmluaXRfbW9kdWxlX2F0dHJzKG1vZHVsZSkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19uYW1lX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX3NwZWNfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2R1bGUsICdfX2NhY2hlZF9fJykpCi0KLSAgICAjIGNyZWF0ZSgpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGUoc2VsZik6Ci0gICAgICAgIGNyZWF0ZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX25hbWVfXywgc2VsZi5zcGVjLm5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX2xvYWRlcl9fLCBzZWxmLnNwZWMubG9hZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19wYWNrYWdlX18sIHNlbGYuc3BlYy5wYXJlbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoY3JlYXRlZC5fX3NwZWNfXywgc2VsZi5zcGVjKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fcGF0aF9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19maWxlX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2NhY2hlZF9fJykpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV9sb2FkZXIoc2VsZik6Ci0gICAgICAgIG1vZHVsZSA9IHR5cGUoc3lzLmltcGxlbWVudGF0aW9uKSgpCi0gICAgICAgIGNsYXNzIENyZWF0aW5nTG9hZGVyKFRlc3RMb2FkZXIpOgotICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gQ3JlYXRpbmdMb2FkZXIoKQotICAgICAgICBjcmVhdGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuY3JlYXRlKCkKLQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQsIG1vZHVsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fbmFtZV9fLCBzZWxmLnNwZWMubmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlZC5fX3BhY2thZ2VfXywgc2VsZi5zcGVjLnBhcmVudCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhjcmVhdGVkLl9fc3BlY19fLCBzZWxmLnNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19wYXRoX18nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX2ZpbGVfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fY2FjaGVkX18nKSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2xvYWRlcl9ub3RfaGFuZGxlZChzZWxmKToKLSAgICAgICAgY2xhc3MgQ3JlYXRpbmdMb2FkZXIoVGVzdExvYWRlcik6Ci0gICAgICAgICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gQ3JlYXRpbmdMb2FkZXIoKQotICAgICAgICBjcmVhdGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuY3JlYXRlKCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZWQuX19uYW1lX18sIHNlbGYuc3BlYy5uYW1lKQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19sb2FkZXJfXywgc2VsZi5zcGVjLmxvYWRlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGVkLl9fcGFja2FnZV9fLCBzZWxmLnNwZWMucGFyZW50KQotICAgICAgICBzZWxmLmFzc2VydElzKGNyZWF0ZWQuX19zcGVjX18sIHNlbGYuc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNyZWF0ZWQsICdfX3BhdGhfXycpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIoY3JlYXRlZCwgJ19fZmlsZV9fJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihjcmVhdGVkLCAnX19jYWNoZWRfXycpKQotCiAgICAgIyBleGVjKCkKIAogICAgIGRlZiB0ZXN0X2V4ZWMoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQotICAgICAgICBtb2R1bGUgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5jcmVhdGUoKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzZWxmLnNwZWMpCiAgICAgICAgIHN5cy5tb2R1bGVzW3NlbGYubmFtZV0gPSBtb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ2VnZ3MnKSkKLSAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhtb2R1bGUpCisgICAgICAgIHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbW9kdWxlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLmVnZ3MsIDEpCiAKQEAgLTM5Nyw3ICsyNjEsNyBAQAogICAgIGRlZiB0ZXN0X2xvYWQoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuZWdncywgMSkKQEAgLTQxMCw3ICsyNzQsNyBAQAogICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzW21vZHVsZS5fX25hbWVfX10gPSByZXBsYWNlbWVudAogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gUmVwbGFjaW5nTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKICAgICAgICAgICAgIGluc3RhbGxlZCA9IHN5cy5tb2R1bGVzW3NlbGYuc3BlYy5uYW1lXQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVkLCByZXBsYWNlbWVudCkKQEAgLTQyMyw3ICsyODcsNyBAQAogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gRmFpbGVkTG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihzZWxmLnNwZWMubmFtZSwgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9sb2FkX2ZhaWxlZF9yZW1vdmVkKHNlbGYpOgpAQCAtNDM0LDIwICsyOTgsMjAgQEAKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IEZhaWxlZExvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oc2VsZi5zcGVjLm5hbWUsIHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIHRlc3RfbG9hZF9sZWdhY3koc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBMZWdhY3lMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLmhhbSwgLTEpCiAKICAgICBkZWYgdGVzdF9sb2FkX2xlZ2FjeV9hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTGVnYWN5TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9sb2FkKHNlbGYuc3BlYykKIAogICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlZC5fX2xvYWRlcl9fLCBzZWxmLnNwZWMubG9hZGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5fX3BhY2thZ2VfXywgc2VsZi5zcGVjLnBhcmVudCkKQEAgLTQ2MSw3ICszMjUsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBtb2R1bGUKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IEltbXV0YWJsZUxvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdLCBtb2R1bGUpCiAKQEAgLTQ3MCw4ICszMzQsOCBAQAogICAgIGRlZiB0ZXN0X3JlbG9hZChzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCi0gICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmV4ZWMobG9hZGVkKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQorICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fZXhlYyhzZWxmLnNwZWMsIGxvYWRlZCkKICAgICAgICAgICAgIGluc3RhbGxlZCA9IHN5cy5tb2R1bGVzW3NlbGYuc3BlYy5uYW1lXQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVkLmVnZ3MsIDEpCkBAIC00ODEsOSArMzQ1LDkgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfbW9kaWZpZWQoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgbG9hZGVkLmVnZ3MgPSAyCi0gICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmV4ZWMobG9hZGVkKQorICAgICAgICAgICAgcmVsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fZXhlYyhzZWxmLnNwZWMsIGxvYWRlZCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5lZ2dzLCAxKQogICAgICAgICBzZWxmLmFzc2VydElzKHJlbG9hZGVkLCBsb2FkZWQpCkBAIC00OTEsOSArMzU1LDkgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfZXh0cmFfYXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5zcGVjLmxvYWRlciA9IE5ld0xvYWRlcigpCiAgICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoc2VsZi5zcGVjLm5hbWUpOgotICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykubG9hZCgpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCiAgICAgICAgICAgICBsb2FkZWQuYXZhaWxhYmxlID0gRmFsc2UKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9hZGVkLmF2YWlsYWJsZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZWxvYWRlZCwgbG9hZGVkKQpAQCAtNTAxLDEyICszNjUsMTIgQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfaW5pdF9tb2R1bGVfYXR0cnMoc2VsZik6CiAgICAgICAgIHNlbGYuc3BlYy5sb2FkZXIgPSBOZXdMb2FkZXIoKQogICAgICAgICB3aXRoIENsZWFuSW1wb3J0KHNlbGYuc3BlYy5uYW1lKToKLSAgICAgICAgICAgIGxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzZWxmLnNwZWMpLmxvYWQoKQorICAgICAgICAgICAgbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX2xvYWQoc2VsZi5zcGVjKQogICAgICAgICAgICAgbG9hZGVkLl9fbmFtZV9fID0gJ2hhbScKICAgICAgICAgICAgIGRlbCBsb2FkZWQuX19sb2FkZXJfXwogICAgICAgICAgICAgZGVsIGxvYWRlZC5fX3BhY2thZ2VfXwogICAgICAgICAgICAgZGVsIGxvYWRlZC5fX3NwZWNfXwotICAgICAgICAgICAgc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICBzZWxmLmJvb3RzdHJhcC5fZXhlYyhzZWxmLnNwZWMsIGxvYWRlZCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlZC5fX25hbWVfXywgc2VsZi5zcGVjLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVkLl9fbG9hZGVyX18sIHNlbGYuc3BlYy5sb2FkZXIpCkBAIC01MTksOCArMzgzLDggQEAKICAgICBkZWYgdGVzdF9yZWxvYWRfbGVnYWN5KHNlbGYpOgogICAgICAgICBzZWxmLnNwZWMubG9hZGVyID0gTGVnYWN5TG9hZGVyKCkKICAgICAgICAgd2l0aCBDbGVhbkltcG9ydChzZWxmLnNwZWMubmFtZSk6Ci0gICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fU3BlY01ldGhvZHMoc2VsZi5zcGVjKS5sb2FkKCkKLSAgICAgICAgICAgIHJlbG9hZGVkID0gc2VsZi5ib290c3RyYXAuX1NwZWNNZXRob2RzKHNlbGYuc3BlYykuZXhlYyhsb2FkZWQpCisgICAgICAgICAgICBsb2FkZWQgPSBzZWxmLmJvb3RzdHJhcC5fbG9hZChzZWxmLnNwZWMpCisgICAgICAgICAgICByZWxvYWRlZCA9IHNlbGYuYm9vdHN0cmFwLl9leGVjKHNlbGYuc3BlYywgbG9hZGVkKQogICAgICAgICAgICAgaW5zdGFsbGVkID0gc3lzLm1vZHVsZXNbc2VsZi5zcGVjLm5hbWVdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkZWQuaGFtLCAtMSkKQEAgLTUyOCwyMCArMzkyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW5zdGFsbGVkLCBsb2FkZWQpCiAKIAotY2xhc3MgRnJvemVuX01vZHVsZVNwZWNNZXRob2RzVGVzdHMoTW9kdWxlU3BlY01ldGhvZHNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IGZyb3plbl9ib290c3RyYXAKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLQotY2xhc3MgU291cmNlX01vZHVsZVNwZWNNZXRob2RzVGVzdHMoTW9kdWxlU3BlY01ldGhvZHNUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IHNvdXJjZV9ib290c3RyYXAKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX01vZHVsZVNwZWNNZXRob2RzVGVzdHMsCisgU291cmNlX01vZHVsZVNwZWNNZXRob2RzVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChNb2R1bGVTcGVjTWV0aG9kc1Rlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIE1vZHVsZVJlcHJUZXN0czoKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBib290c3RyYXAoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcAorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLm1vZHVsZSA9IHR5cGUob3MpKCdzcGFtJykKICAgICAgICAgc2VsZi5zcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygnc3BhbScsIFRlc3RMb2FkZXIoKSkKQEAgLTYyNSwxNiArNDg3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kcmVwciwgJzxtb2R1bGUgeyFyfT4nLmZvcm1hdCgnc3BhbScpKQogCiAKLWNsYXNzIEZyb3plbl9Nb2R1bGVSZXByVGVzdHMoTW9kdWxlUmVwclRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYm9vdHN0cmFwID0gZnJvemVuX2Jvb3RzdHJhcAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKLSAgICB1dGlsID0gZnJvemVuX3V0aWwKLQotCi1jbGFzcyBTb3VyY2VfTW9kdWxlUmVwclRlc3RzKE1vZHVsZVJlcHJUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGJvb3RzdHJhcCA9IHNvdXJjZV9ib290c3RyYXAKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX01vZHVsZVJlcHJUZXN0cywKKyBTb3VyY2VfTW9kdWxlUmVwclRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoTW9kdWxlUmVwclRlc3RzLCBpbml0PWluaXQsIHV0aWw9dXRpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIEZhY3RvcnlUZXN0czoKQEAgLTc4NywxMyArNjQzLDE0IEBACiAgICAgIyBzcGVjX2Zyb21fZmlsZV9sb2NhdGlvbigpCiAKICAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9kZWZhdWx0KHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1hY2hpbmVyeSBpcyBzb3VyY2VfbWFjaGluZXJ5OgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ25vdCBzdXJlIHdoeSB0aGlzIGlzIGJyZWFraW5nLi4uJykKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUsIHNlbGYucGF0aCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubmFtZSwgc2VsZi5uYW1lKQorICAgICAgICAjIE5lZWQgdG8gdXNlIGEgY2lyY3VpdG91cyByb3V0ZSB0byBnZXQgYXQgaW1wb3J0bGliLm1hY2hpbmVyeSB0byBtYWtlCisgICAgICAgICMgc3VyZSB0aGUgc2FtZSBjbGFzcyBvYmplY3QgaXMgdXNlZCBpbiB0aGUgaXNpbnN0YW5jZSgpIGNoZWNrIGFzCisgICAgICAgICMgd291bGQgaGF2ZSBiZWVuIHVzZWQgdG8gY3JlYXRlIHRoZSBsb2FkZXIuCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzcGVjLmxvYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuYWJjLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMubG9hZGVyLm5hbWUsIHNlbGYubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLmxvYWRlci5wYXRoLCBzZWxmLnBhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKQEAgLTk0NywxMSArODA0LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzcGVjLmhhc19sb2NhdGlvbikKIAogCi1jbGFzcyBGcm96ZW5fRmFjdG9yeVRlc3RzKEZhY3RvcnlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHV0aWwgPSBmcm96ZW5fdXRpbAotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKKyhGcm96ZW5fRmFjdG9yeVRlc3RzLAorIFNvdXJjZV9GYWN0b3J5VGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGYWN0b3J5VGVzdHMsIHV0aWw9dXRpbCwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCi1jbGFzcyBTb3VyY2VfRmFjdG9yeVRlc3RzKEZhY3RvcnlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHV0aWwgPSBzb3VyY2VfdXRpbAotICAgIG1hY2hpbmVyeSA9IHNvdXJjZV9tYWNoaW5lcnkKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKaW5kZXggYjI4MjNjNi4uNjk0NjZiMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtMSwxMCArMSwxMSBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKLWZyb3plbl9pbml0LCBzb3VyY2VfaW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKLWZyb3plbl91dGlsLCBzb3VyY2VfdXRpbCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCitmcm9tIC4gaW1wb3J0IHV0aWwKK2FiYyA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLmFiYycpCitpbml0ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQorbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKK2ltcG9ydGxpYl91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCiAKIGltcG9ydCBvcworaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdHlwZXMKQEAgLTMyLDggKzMzLDk0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLmpvaW4oW3NlbGYuc291cmNlLCBzZWxmLnNvdXJjZV0pKQogCi1Gcm96ZW5fRGVjb2RlU291cmNlQnl0ZXNUZXN0cywgU291cmNlX0RlY29kZVNvdXJjZUJ5dGVzVGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBEZWNvZGVTb3VyY2VCeXRlc1Rlc3RzLCB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX0RlY29kZVNvdXJjZUJ5dGVzVGVzdHMsCisgU291cmNlX0RlY29kZVNvdXJjZUJ5dGVzVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRGVjb2RlU291cmNlQnl0ZXNUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKKworCitjbGFzcyBNb2R1bGVGcm9tU3BlY1Rlc3RzOgorCisgICAgZGVmIHRlc3Rfbm9fY3JlYXRlX21vZHVsZShzZWxmKToKKyAgICAgICAgY2xhc3MgTG9hZGVyOgorICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4odykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NyZWF0ZV9tb2R1bGUnLCBzdHIod1swXS5tZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGVfcmV0dXJuc19Ob25lKHNlbGYpOgorICAgICAgICBjbGFzcyBMb2FkZXIoc2VsZi5hYmMuTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2FscmVhZHkgc2V0JworICAgICAgICBjbGFzcyBDdXN0b21Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIExvYWRlcihzZWxmLmFiYy5Mb2FkZXIpOgorICAgICAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gQ3VzdG9tTW9kdWxlKHNwZWMubmFtZSkKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18gPSBuYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCBDdXN0b21Nb2R1bGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3RfX19uYW1lX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0Jywgb2JqZWN0KCkpCisgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCisKKyAgICBkZWYgdGVzdF9fX3NwZWNfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBvYmplY3QoKSkKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19zcGVjX18sIHNwZWMpCisKKyAgICBkZWYgdGVzdF9fX2xvYWRlcl9fKHNlbGYpOgorICAgICAgICBsb2FkZXIgPSBvYmplY3QoKQorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIGxvYWRlcikKKyAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUuX19sb2FkZXJfXywgbG9hZGVyKQorCisgICAgZGVmIHRlc3RfX19wYWNrYWdlX18oc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0LnBrZycsIG9iamVjdCgpKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgc3BlYy5wYXJlbnQpCisKKyAgICBkZWYgdGVzdF9fX3BhdGhfXyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBvYmplY3QoKSwgaXNfcGFja2FnZT1UcnVlKQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhdGhfXywgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucykKKworICAgIGRlZiB0ZXN0X19fZmlsZV9fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpLCBvcmlnaW49J3NvbWUvcGF0aCcpCisgICAgICAgIHNwZWMuaGFzX2xvY2F0aW9uID0gVHJ1ZQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2ZpbGVfXywgc3BlYy5vcmlnaW4pCisKKyAgICBkZWYgdGVzdF9fX2NhY2hlZF9fKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIG9iamVjdCgpKQorICAgICAgICBzcGVjLmNhY2hlZCA9ICdzb21lL3BhdGgnCisgICAgICAgIHNwZWMuaGFzX2xvY2F0aW9uID0gVHJ1ZQorICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX2NhY2hlZF9fLCBzcGVjLmNhY2hlZCkKKworKEZyb3plbl9Nb2R1bGVGcm9tU3BlY1Rlc3RzLAorIFNvdXJjZV9Nb2R1bGVGcm9tU3BlY1Rlc3RzCispID0gdXRpbC50ZXN0X2JvdGgoTW9kdWxlRnJvbVNwZWNUZXN0cywgYWJjPWFiYywgbWFjaGluZXJ5PW1hY2hpbmVyeSwKKyAgICAgICAgICAgICAgICAgICB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIE1vZHVsZUZvckxvYWRlclRlc3RzOgpAQCAtNzAsNyArMTU3LDcgQEAKICAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcwogICAgICAgICAjIGNyZWF0ZWQuCiAgICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobW9kdWxlX25hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5yZXR1cm5fbW9kdWxlKG1vZHVsZV9uYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCkBAIC04OCw3ICsxNzUsNyBAQAogICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKCdhLmIuYycpCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gNDIKICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gNDIKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcigpCiAgICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKQEAgLTEwMCw3ICsxODcsNyBAQAogICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCiAgICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KICAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKIApAQCAtMTA4LDcgKzE5NSw3IEBACiAgICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCiAgICAgICAgIG5hbWUgPSAnYS5iLmMnCiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKQEAgLTEyNyw3ICsyMTQsNyBAQAogCiAgICAgICAgIG5hbWUgPSAnbW9kJwogICAgICAgICBtb2R1bGUgPSBGYWxzZU1vZHVsZShuYW1lKQotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlKQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGdpdmVuID0gc2VsZi5yZXR1cm5fbW9kdWxlKG5hbWUpCkBAIC0xNDYsNyArMjMzLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAKICAgICAgICAgbmFtZSA9ICdwa2cubW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIGxvYWRlciA9IEZha2VMb2FkZXIoRmFsc2UpCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQpAQCAtMTU0LDE1ICsyNDEsMTcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCAncGtnJykKIAogICAgICAgICBuYW1lID0gJ3BrZy5zdWInCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihUcnVlKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBuYW1lKQogCi1Gcm96ZW5fTW9kdWxlRm9yTG9hZGVyVGVzdHMsIFNvdXJjZV9Nb2R1bGVGb3JMb2FkZXJUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIE1vZHVsZUZvckxvYWRlclRlc3RzLCB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX01vZHVsZUZvckxvYWRlclRlc3RzLAorIFNvdXJjZV9Nb2R1bGVGb3JMb2FkZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChNb2R1bGVGb3JMb2FkZXJUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBTZXRQYWNrYWdlVGVzdHM6CkBAIC0yMjIsMTggKzMxMSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19uYW1lX18sIGZ4bi5fX25hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fcXVhbG5hbWVfXywgZnhuLl9fcXVhbG5hbWVfXykKIAotRnJvemVuX1NldFBhY2thZ2VUZXN0cywgU291cmNlX1NldFBhY2thZ2VUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIFNldFBhY2thZ2VUZXN0cywgdXRpbD1bZnJvemVuX3V0aWwsIHNvdXJjZV91dGlsXSkKKworKEZyb3plbl9TZXRQYWNrYWdlVGVzdHMsCisgU291cmNlX1NldFBhY2thZ2VUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChTZXRQYWNrYWdlVGVzdHMsIHV0aWw9aW1wb3J0bGliX3V0aWwpCiAKIAogY2xhc3MgU2V0TG9hZGVyVGVzdHM6CiAKICAgICAiIiJUZXN0cyBpbXBvcnRsaWIudXRpbC5zZXRfbG9hZGVyKCkuIiIiCiAKLSAgICBjbGFzcyBEdW1teUxvYWRlcjoKLSAgICAgICAgQHV0aWwuc2V0X2xvYWRlcgotICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBEdW1teUxvYWRlcihzZWxmKToKKyAgICAgICAgIyBTZXQgRHVtbXlMb2FkZXIgb24gdGhlIGNsYXNzIGxhemlseS4KKyAgICAgICAgY2xhc3MgRHVtbXlMb2FkZXI6CisgICAgICAgICAgICBAc2VsZi51dGlsLnNldF9sb2FkZXIKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQorICAgICAgICBzZWxmLl9fY2xhc3NfXy5EdW1teUxvYWRlciA9IER1bW15TG9hZGVyCisgICAgICAgIHJldHVybiBEdW1teUxvYWRlcgogCiAgICAgZGVmIHRlc3Rfbm9fYXR0cmlidXRlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLkR1bW15TG9hZGVyKCkKQEAgLTI2MiwxNyArMzU4LDEwIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDIsIGxvYWRlci5sb2FkX21vZHVsZSgnYmxhaCcpLl9fbG9hZGVyX18pCiAKLWNsYXNzIEZyb3plbl9TZXRMb2FkZXJUZXN0cyhTZXRMb2FkZXJUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNsYXNzIER1bW15TG9hZGVyOgotICAgICAgICBAZnJvemVuX3V0aWwuc2V0X2xvYWRlcgotICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZQogCi1jbGFzcyBTb3VyY2VfU2V0TG9hZGVyVGVzdHMoU2V0TG9hZGVyVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjbGFzcyBEdW1teUxvYWRlcjoKLSAgICAgICAgQHNvdXJjZV91dGlsLnNldF9sb2FkZXIKLSAgICAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5tb2R1bGUKKyhGcm96ZW5fU2V0TG9hZGVyVGVzdHMsCisgU291cmNlX1NldExvYWRlclRlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFNldExvYWRlclRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFJlc29sdmVOYW1lVGVzdHM6CkBAIC0zMDcsOSArMzk2LDEwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwucmVzb2x2ZV9uYW1lKCcuLmJhY29uJywgJ3NwYW0nKQogCi1Gcm96ZW5fUmVzb2x2ZU5hbWVUZXN0cywgU291cmNlX1Jlc29sdmVOYW1lVGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBSZXNvbHZlTmFtZVRlc3RzLAotICAgICAgICB1dGlsPVtmcm96ZW5fdXRpbCwgc291cmNlX3V0aWxdKQorCisoRnJvemVuX1Jlc29sdmVOYW1lVGVzdHMsCisgU291cmNlX1Jlc29sdmVOYW1lVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoUmVzb2x2ZU5hbWVUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBjbGFzcyBGaW5kU3BlY1Rlc3RzOgpAQCAtMzIwLDcgKzQxMCw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKG5hbWUpCiAgICAgICAgICAgICBsb2FkZXIgPSAnYSBsb2FkZXIhJwogICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMobmFtZSwgbG9hZGVyKQpAQCAtMzMyLDcgKzQyMiw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc193aXRob3V0X19fbG9hZGVyX18oc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgZGVsIG1vZHVsZS5fX2xvYWRlcl9fCiAgICAgICAgICAgICBsb2FkZXIgPSAnYSBsb2FkZXIhJwpAQCAtMzQ0LDcgKzQzNCw3IEBACiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlc19zcGVjX2lzX05vbmUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gTm9uZQogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKQEAgLTM1Myw3ICs0NDMsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfbG9hZGVyX2lzX05vbmUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc29tZV9tb2QnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMobmFtZSwgTm9uZSkKICAgICAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKQEAgLTM2Myw3ICs0NTMsNyBAQAogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXNfc3BlY19pc19ub3Rfc2V0KHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBkZWwgbW9kdWxlLl9fc3BlY19fCkBAIC0zNzUsMjAgKzQ2NSwxMSBAQAogCiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG5hbWUsIE5vbmUsIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmZpbmRfc3BlYyhuYW1lKSkKIAotIyAgICBkZWYgdGVzdF9zdWNjZXNzX3BhdGgoc2VsZik6Ci0jICAgICAgICAjIFNlYXJjaGluZyBvbiBhIHBhdGggc2hvdWxkIHdvcmsuCi0jICAgICAgICBuYW1lID0gJ3NvbWVfbW9kJwotIyAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCi0jICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgotIyAgICAgICAgICAgIHdpdGggdGVzdF91dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKLSMgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobmFtZSwgcGF0aCwgTm9uZSksCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmZpbmRfc3BlYyhuYW1lLCBwYXRoKSkKLQogICAgIGRlZiB0ZXN0X25vdGhpbmcoc2VsZik6CiAgICAgICAgICMgTm9uZSBpcyByZXR1cm5lZCB1cG9uIGZhaWx1cmUgdG8gZmluZCBhIGxvYWRlci4KICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi51dGlsLmZpbmRfc3BlYygnbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKQEAgLTM5Niw4ICs0NzcsOCBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfc3VibW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdGVzdF91dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQorICAgICAgICB3aXRoIHV0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6CisgICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHV0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCiAgICAgICAgICAgICBzcGVjID0gc2VsZi51dGlsLmZpbmRfc3BlYyhmdWxsbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3BlYywgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc29ydGVkKHN5cy5tb2R1bGVzKSkKQEAgLTQwOSw5ICs0OTAsOSBAQAogICAgIGRlZiB0ZXN0X2ZpbmRfc3VibW9kdWxlX3BhcmVudF9hbHJlYWR5X2ltcG9ydGVkKHNlbGYpOgogICAgICAgICBuYW1lID0gJ3NwYW0nCiAgICAgICAgIHN1Ym5hbWUgPSAnaGFtJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKKyAgICAgICAgd2l0aCB1dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgogICAgICAgICAgICAgc2VsZi5pbml0LmltcG9ydF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdGVzdF91dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB1dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQogICAgICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5maW5kX3NwZWMoZnVsbG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHNwZWMsIE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIHNvcnRlZChzeXMubW9kdWxlcykpCkBAIC00MjMsOCArNTA0LDggQEAKICAgICBkZWYgdGVzdF9maW5kX3JlbGF0aXZlX21vZHVsZShzZWxmKToKICAgICAgICAgbmFtZSA9ICdzcGFtJwogICAgICAgICBzdWJuYW1lID0gJ2hhbScKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudGVtcF9tb2R1bGUobmFtZSwgcGtnPVRydWUpIGFzIHBrZ19kaXI6Ci0gICAgICAgICAgICBmdWxsbmFtZSwgXyA9IHRlc3RfdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKKyAgICAgICAgd2l0aCB1dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgorICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB1dGlsLnN1Ym1vZHVsZShuYW1lLCBzdWJuYW1lLCBwa2dfZGlyKQogICAgICAgICAgICAgcmVsbmFtZSA9ICcuJyArIHN1Ym5hbWUKICAgICAgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuZmluZF9zcGVjKHJlbG5hbWUsIG5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KHNwZWMsIE5vbmUpCkBAIC00MzcsOCArNTE4LDggQEAKICAgICBkZWYgdGVzdF9maW5kX3JlbGF0aXZlX21vZHVsZV9taXNzaW5nX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnc3BhbScKICAgICAgICAgc3VibmFtZSA9ICdoYW0nCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnRlbXBfbW9kdWxlKG5hbWUsIHBrZz1UcnVlKSBhcyBwa2dfZGlyOgotICAgICAgICAgICAgZnVsbG5hbWUsIF8gPSB0ZXN0X3V0aWwuc3VibW9kdWxlKG5hbWUsIHN1Ym5hbWUsIHBrZ19kaXIpCisgICAgICAgIHdpdGggdXRpbC50ZW1wX21vZHVsZShuYW1lLCBwa2c9VHJ1ZSkgYXMgcGtnX2RpcjoKKyAgICAgICAgICAgIGZ1bGxuYW1lLCBfID0gdXRpbC5zdWJtb2R1bGUobmFtZSwgc3VibmFtZSwgcGtnX2RpcikKICAgICAgICAgICAgIHJlbG5hbWUgPSAnLicgKyBzdWJuYW1lCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHNlbGYudXRpbC5maW5kX3NwZWMocmVsbmFtZSkKQEAgLTQ0NiwxNSArNTI3LDEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGZ1bGxuYW1lLCBzb3J0ZWQoc3lzLm1vZHVsZXMpKQogCiAKLWNsYXNzIEZyb3plbl9GaW5kU3BlY1Rlc3RzKEZpbmRTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gZnJvemVuX2luaXQKLSAgICBtYWNoaW5lcnkgPSBmcm96ZW5fbWFjaGluZXJ5Ci0gICAgdXRpbCA9IGZyb3plbl91dGlsCi0KLWNsYXNzIFNvdXJjZV9GaW5kU3BlY1Rlc3RzKEZpbmRTcGVjVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpbml0ID0gc291cmNlX2luaXQKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5Ci0gICAgdXRpbCA9IHNvdXJjZV91dGlsCisoRnJvemVuX0ZpbmRTcGVjVGVzdHMsCisgU291cmNlX0ZpbmRTcGVjVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywgaW5pdD1pbml0LCB1dGlsPWltcG9ydGxpYl91dGlsLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgTWFnaWNOdW1iZXJUZXN0czoKQEAgLTQ2Nyw4ICs1NDMsMTAgQEAKICAgICAgICAgIyBUaGUgbWFnaWMgbnVtYmVyIHVzZXMgXHJcbiB0byBjb21lIG91dCB3cm9uZyB3aGVuIHNwbGl0dGluZyBvbiBsaW5lcy4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudXRpbC5NQUdJQ19OVU1CRVIuZW5kc3dpdGgoYidcclxuJykpCiAKLUZyb3plbl9NYWdpY051bWJlclRlc3RzLCBTb3VyY2VfTWFnaWNOdW1iZXJUZXN0cyA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoCi0gICAgICAgIE1hZ2ljTnVtYmVyVGVzdHMsIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisKKyhGcm96ZW5fTWFnaWNOdW1iZXJUZXN0cywKKyBTb3VyY2VfTWFnaWNOdW1iZXJUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChNYWdpY051bWJlclRlc3RzLCB1dGlsPWltcG9ydGxpYl91dGlsKQogCiAKIGNsYXNzIFBFUDMxNDdUZXN0czoKQEAgLTQ4NSw3ICs1NjMsOCBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX25vX2NhY2hlX3RhZyhzZWxmKToKICAgICAgICAgIyBObyBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KQEAgLTQ5OCw0MyArNTc3LDEwMyBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ2ZpbGUnKQogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnX19weWNhY2hlX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV7fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQogCi0gICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3B0aW1pemVkKHNlbGYpOgotICAgICAgICAjIEdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5IGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byBpdHMgUEVQIDMxNDcKLSAgICAgICAgIyBkZWZpbmVkIC5weW8gZmlsZSAoaS5lLiB1bmRlciBfX3B5Y2FjaGVfXykuCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfZGVidWdfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0Ny9QRVAgNDg4CisgICAgICAgICMgZGVmaW5lZCAucHljIGZpbGUgKGkuZS4gdW5kZXIgX19weWNhY2hlX18pLgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQotICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBGYWxzZSksIGV4cGVjdCkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6CiAgICAgICAgIHBhdGggPSAnZm9vLnB5JwogICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQogCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfb3ZlcnJpZGUoc2VsZik6CiAgICAgICAgICMgV2hlbiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgaXQgY2FuIGJlIGFueSB0cnVlLWlzaCBvciBmYWxzZS1pc2gKICAgICAgICAgIyB2YWx1ZS4KICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXoucHknKQotICAgICAgICBwYXJ0aWFsX2V4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdfX3B5Y2FjaGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXoue30ucHknLmZvcm1hdChzZWxmLnRhZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFtdKSwgcGFydGlhbF9leHBlY3QgKyAnbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFsxN10pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfZXhwZWN0ICsgJ2MnKQogICAgICAgICAjIEhvd2V2ZXIgaWYgdGhlIGJvb2wtaXNobmVzcyBjYW4ndCBiZSBkZXRlcm1pbmVkLCB0aGUgZXhjZXB0aW9uCiAgICAgICAgICMgcHJvcGFnYXRlcy4KICAgICAgICAgY2xhc3MgQmVhcmlzaDoKICAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmFpc2UgUnVudGltZUVycm9yCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249MSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbMTddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJykpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXphdGlvbl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgU2V0dGluZyAnb3B0aW1pemF0aW9uJyB0byAnJyBsZWFkcyB0byBubyBvcHRpbWl6YXRpb24gdGFnIChQRVAgNDg4KS4KKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6YXRpb25fTm9uZShzZWxmKToKKyAgICAgICAgIyBTZXR0aW5nICdvcHRpbWl6YXRpb24nIHRvIE5vbmUgdXNlcyB0aGUgaW50ZXJwcmV0ZXIncyBvcHRpbWl6YXRpb24uCisgICAgICAgICMgKFBFUCA0ODgpCisgICAgICAgIHBhdGggPSAnZm9vLnB5JworICAgICAgICBvcHRpbWl6YXRpb25fbGV2ZWwgPSBzeXMuZmxhZ3Mub3B0aW1pemUKKyAgICAgICAgYWxtb3N0X2V4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9Jy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBpZiBvcHRpbWl6YXRpb25fbGV2ZWwgPT0gMDoKKyAgICAgICAgICAgIGV4cGVjdCA9IGFsbW9zdF9leHBlY3QgKyAnLnB5YycKKyAgICAgICAgZWxpZiBvcHRpbWl6YXRpb25fbGV2ZWwgPD0gMjoKKyAgICAgICAgICAgIGV4cGVjdCA9IGFsbW9zdF9leHBlY3QgKyAnLm9wdC17fS5weWMnLmZvcm1hdChvcHRpbWl6YXRpb25fbGV2ZWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAneyFyfSBpcyBhIG5vbi1zdGFuZGFyZCBvcHRpbWl6YXRpb24gbGV2ZWwnLmZvcm1hdChvcHRpbWl6YXRpb25fbGV2ZWwpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPU5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX29wdGltaXphdGlvbl9zZXQoc2VsZik6CisgICAgICAgICMgVGhlICdvcHRpbWl6YXRpb24nIHBhcmFtZXRlciBhY2NlcHRzIGFueXRoaW5nIHRoYXQgaGFzIGEgc3RyaW5nIHJlcHIKKyAgICAgICAgIyB0aGF0IHBhc3NlcyBzdHIuYWxudW0oKS4KKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIHZhbGlkX2NoYXJhY3RlcnMgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgICAgICAgYWxtb3N0X2V4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9Jy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBnb3QgPSBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPXZhbGlkX2NoYXJhY3RlcnMpCisgICAgICAgICMgVGVzdCBhbGwgdmFsaWQgY2hhcmFjdGVycyBhcmUgYWNjZXB0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbW9zdF9leHBlY3QgKyAnLm9wdC17fS5weWMnLmZvcm1hdCh2YWxpZF9jaGFyYWN0ZXJzKSkKKyAgICAgICAgIyBzdHIoKSBzaG91bGQgYmUgY2FsbGVkIG9uIGFyZ3VtZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249NDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFsbW9zdF9leHBlY3QgKyAnLm9wdC00Mi5weWMnKQorICAgICAgICAjIEludmFsaWQgY2hhcmFjdGVycyByYWlzZSBWYWx1ZUVycm9yLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0ncGF0aC9pcy9iYWQnKQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2VfZGVidWdfb3ZlcnJpZGVfb3B0aW1pemF0aW9uX2JvdGhfc2V0KHNlbGYpOgorICAgICAgICAjIENhbiBvbmx5IHNldCBvbmUgb2YgdGhlIG9wdGltaXphdGlvbi1yZWxhdGVkIHBhcmFtZXRlcnMuCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoJ2Zvby5weScsIEZhbHNlLCBvcHRpbWl6YXRpb249JycpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5zZXAgPT0gJ1xcJyBhbmQgb3MuYWx0c2VwID09ICcvJywKICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCiAgICAgZGVmIHRlc3Rfc2VwX2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgogICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgc2VwIGlzIHJpZ2h0IG9mIGFsdHNlcC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhclxcYmF6L3F1eC5weScsIFRydWUpLAorICAgICAgICAgICAgc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKCdcXGZvb1xcYmFyXFxiYXovcXV4LnB5Jywgb3B0aW1pemF0aW9uPScnKSwKICAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKQEAgLTU3Miw3ICs3MTEsMTIgQEAKICAgICAgICAgICAgIFZhbHVlRXJyb3IsIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSwgJ19fcHljYWNoZV9fL2Zvby5weWMnKQogCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfdG9vX21hbnlfZG90cyhzZWxmKToKLSAgICAgICAgIyBUb28gbWFueSBkb3RzIGluIGZpbmFsIHBhdGggY29tcG9uZW50IC0+IFZhbHVlRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZSgKKyAgICAgICAgICAgICAgICAgICAgJ19fcHljYWNoZV9fL2Zvby5jcHl0aG9uLTMyLm9wdC0xLmZvby5weWMnKQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm90X29wdChzZWxmKToKKyAgICAgICAgIyBOb24tYG9wdC1gIHBhdGggY29tcG9uZW50IC0+IFZhbHVlRXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUsCiAgICAgICAgICAgICAnX19weWNhY2hlX18vZm9vLmNweXRob24tMzIuZm9vLnB5YycpCkBAIC01ODMsOSArNzI3LDIxIEBACiAgICAgICAgICAgICBWYWx1ZUVycm9yLCBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUsCiAgICAgICAgICAgICAnL2Zvby9iYXIvZm9vLmNweXRob24tMzIuZm9vLnB5YycpCiAKLUZyb3plbl9QRVAzMTQ3VGVzdHMsIFNvdXJjZV9QRVAzMTQ3VGVzdHMgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKAotICAgICAgICBQRVAzMTQ3VGVzdHMsCi0gICAgICAgIHV0aWw9W2Zyb3plbl91dGlsLCBzb3VyY2VfdXRpbF0pCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfb3B0aW1pemVkX2J5dGVjb2RlKHNlbGYpOgorICAgICAgICAjIE9wdGltaXplZCBieXRlY29kZSBpcyBub3QgYW4gaXNzdWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ19fcHljYWNoZV9fJywgJ2Zvby57fS5vcHQtMS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCAnZm9vLnB5JykKKworICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX21pc3Npbmdfb3B0aW1pemF0aW9uKHNlbGYpOgorICAgICAgICAjIEFuIGVtcHR5IG9wdGltaXphdGlvbiBsZXZlbCBpcyBhIG5vLW5vLgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdfX3B5Y2FjaGVfXycsICdmb28ue30ub3B0LS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKKworCisoRnJvemVuX1BFUDMxNDdUZXN0cywKKyBTb3VyY2VfUEVQMzE0N1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKFBFUDMxNDdUZXN0cywgdXRpbD1pbXBvcnRsaWJfdXRpbCkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CmluZGV4IDk2YjRhZGMuLmM4OTNiY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKQEAgLTEsMTQgKzEsNjQgQEAKLWZyb20gLiBpbXBvcnQgdXRpbAotZnJvemVuX21hY2hpbmVyeSwgc291cmNlX21hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgdGVzdF91dGlsCittYWNoaW5lcnkgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKK2ltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCitmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCitmcm9tIC51dGlsIGltcG9ydCB0ZW1wX21vZHVsZQorCitzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3dpbnJlZycsIHJlcXVpcmVkX29uPVsnd2luJ10pCitmcm9tIHdpbnJlZyBpbXBvcnQgKAorICAgIENyZWF0ZUtleSwgSEtFWV9DVVJSRU5UX1VTRVIsCisgICAgU2V0VmFsdWUsIFJFR19TWiwgS0VZX0FMTF9BQ0NFU1MsCisgICAgRW51bUtleSwgQ2xvc2VLZXksIERlbGV0ZUtleSwgT3BlbktleQorKQorCitkZWYgZGVsZXRlX3JlZ2lzdHJ5X3RyZWUocm9vdCwgc3Via2V5KToKKyAgICB0cnk6CisgICAgICAgIGhrZXkgPSBPcGVuS2V5KHJvb3QsIHN1YmtleSwgYWNjZXNzPUtFWV9BTExfQUNDRVNTKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIHN1YmtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICByZXR1cm4KKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWJzdWJrZXkgPSBFbnVtS2V5KGhrZXksIDApCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBubyBtb3JlIHN1YmtleXMKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGRlbGV0ZV9yZWdpc3RyeV90cmVlKGhrZXksIHN1YnN1YmtleSkKKyAgICBDbG9zZUtleShoa2V5KQorICAgIERlbGV0ZUtleShyb290LCBzdWJrZXkpCisKK0Bjb250ZXh0bWFuYWdlcgorZGVmIHNldHVwX21vZHVsZShtYWNoaW5lcnksIG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgaWYgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRDoKKyAgICAgICAgcm9vdCA9IG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuUkVHSVNUUllfS0VZX0RFQlVHCisgICAgZWxzZToKKyAgICAgICAgcm9vdCA9IG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuUkVHSVNUUllfS0VZCisgICAga2V5ID0gcm9vdC5mb3JtYXQoZnVsbG5hbWU9bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgdHJ5OgorICAgICAgICB3aXRoIHRlbXBfbW9kdWxlKG5hbWUsICJhID0gMSIpIGFzIGxvY2F0aW9uOgorICAgICAgICAgICAgc3Via2V5ID0gQ3JlYXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCisgICAgICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcGF0aCA9IGxvY2F0aW9uICsgIi5weSIKKyAgICAgICAgICAgIFNldFZhbHVlKHN1YmtleSwgIiIsIFJFR19TWiwgcGF0aCkKKyAgICAgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgaWYgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5ERUJVR19CVUlMRDoKKyAgICAgICAgICAgIGtleSA9IG9zLnBhdGguZGlybmFtZShrZXkpCisgICAgICAgIGRlbGV0ZV9yZWdpc3RyeV90cmVlKEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLCAncmVxdWlyZXMgV2luZG93cycpCiBjbGFzcyBXaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0czoKLQotICAgICMgWFhYIE5lZWQgYSB0ZXN0IHRoYXQgZmluZHMgdGhlIHNwZWMgdmlhIHRoZSByZWdpc3RyeS4KKyAgICAjIFRoZSBtb2R1bGUgbmFtZSBpcyBwcm9jZXNzLXNwZWNpZmljLCBhbGxvd2luZyBmb3IKKyAgICAjIHNpbXVsdGFuZW91cyBydW5zIG9mIHRoZSBzYW1lIHRlc3Qgb24gYSBzaW5nbGUgbWFjaGluZS4KKyAgICB0ZXN0X21vZHVsZSA9ICJzcGFtaGFte30iLmZvcm1hdChvcy5nZXRwaWQoKSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfc3BlY19taXNzaW5nKHNlbGYpOgogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfc3BlYygnc3BhbScpCkBAIC0xOCwxMiArNjgsNDIgQEAKICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfbW9kdWxlKCdzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfZm91bmQoc2VsZik6CisgICAgICAgIHdpdGggc2V0dXBfbW9kdWxlKHNlbGYubWFjaGluZXJ5LCBzZWxmLnRlc3RfbW9kdWxlKToKKyAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5maW5kX21vZHVsZShzZWxmLnRlc3RfbW9kdWxlKQorICAgICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5maW5kX3NwZWMoc2VsZi50ZXN0X21vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobG9hZGVyLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzcGVjLCBOb25lKQogCi1jbGFzcyBGcm96ZW5fV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMoV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIG1hY2hpbmVyeSA9IGZyb3plbl9tYWNoaW5lcnkKKyAgICBkZWYgdGVzdF9tb2R1bGVfbm90X2ZvdW5kKHNlbGYpOgorICAgICAgICB3aXRoIHNldHVwX21vZHVsZShzZWxmLm1hY2hpbmVyeSwgc2VsZi50ZXN0X21vZHVsZSwgcGF0aD0iLiIpOgorICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfbW9kdWxlKHNlbGYudGVzdF9tb2R1bGUpCisgICAgICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLmZpbmRfc3BlYyhzZWxmLnRlc3RfbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3BlYykKIAorKEZyb3plbl9XaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cywKKyBTb3VyY2VfV2luZG93c1JlZ2lzdHJ5RmluZGVyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChXaW5kb3dzUmVnaXN0cnlGaW5kZXJUZXN0cywgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAotY2xhc3MgU291cmNlX1dpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzKFdpbmRvd3NSZWdpc3RyeUZpbmRlclRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBtYWNoaW5lcnkgPSBzb3VyY2VfbWFjaGluZXJ5CitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyksICdyZXF1aXJlcyBXaW5kb3dzJykKK2NsYXNzIFdpbmRvd3NFeHRlbnNpb25TdWZmaXhUZXN0czoKKyAgICBkZWYgdGVzdF90YWdnZWRfc3VmZml4KHNlbGYpOgorICAgICAgICBzdWZmaXhlcyA9IHNlbGYubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUworICAgICAgICBleHBlY3RlZF90YWcgPSAiLmNwezAubWFqb3J9ezAubWlub3J9LXsxfS5weWQiLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvLAorICAgICAgICAgICAgcmUuc3ViKCdbXmEtekEtWjAtOV0nLCAnXycsIGdldF9wbGF0Zm9ybSgpKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdW50YWdnZWRfaSA9IHN1ZmZpeGVzLmluZGV4KCIucHlkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICB1bnRhZ2dlZF9pID0gc3VmZml4ZXMuaW5kZXgoIl9kLnB5ZCIpCisgICAgICAgICAgICBleHBlY3RlZF90YWcgPSAiX2QiICsgZXhwZWN0ZWRfdGFnCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZF90YWcsIHN1ZmZpeGVzKQorCisgICAgICAgICMgRW5zdXJlIHRoZSB0YWdzIGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlcgorICAgICAgICB0YWdnZWRfaSA9IHN1ZmZpeGVzLmluZGV4KGV4cGVjdGVkX3RhZykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHRhZ2dlZF9pLCB1bnRhZ2dlZF9pKQorCisoRnJvemVuX1dpbmRvd3NFeHRlbnNpb25TdWZmaXhUZXN0cywKKyBTb3VyY2VfV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoV2luZG93c0V4dGVuc2lvblN1ZmZpeFRlc3RzLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKaW5kZXggODg1Y2VjMy4uY2UyMDM3NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CkBAIC0xLDMxICsxLDg1IEBACi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgdXRpbCwgaW52YWxpZGF0ZV9jYWNoZXMKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBlcnJubworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeSwgdXRpbCwgaW52YWxpZGF0ZV9jYWNoZXMKK2ltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0eXBlcwogCiAKK0JVSUxUSU5TID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKK0JVSUxUSU5TLmdvb2RfbmFtZSA9IE5vbmUKK0JVSUxUSU5TLmJhZF9uYW1lID0gTm9uZQoraWYgJ2Vycm5vJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6CisgICAgQlVJTFRJTlMuZ29vZF9uYW1lID0gJ2Vycm5vJworaWYgJ2ltcG9ydGxpYicgbm90IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKKyAgICBCVUlMVElOUy5iYWRfbmFtZSA9ICdpbXBvcnRsaWInCisKK0VYVEVOU0lPTlMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorRVhURU5TSU9OUy5wYXRoID0gTm9uZQorRVhURU5TSU9OUy5leHQgPSBOb25lCitFWFRFTlNJT05TLmZpbGVuYW1lID0gTm9uZQorRVhURU5TSU9OUy5maWxlX3BhdGggPSBOb25lCitFWFRFTlNJT05TLm5hbWUgPSAnX3Rlc3RjYXBpJworCitkZWYgX2V4dGVuc2lvbl9kZXRhaWxzKCk6CisgICAgZ2xvYmFsIEVYVEVOU0lPTlMKKyAgICBmb3IgcGF0aCBpbiBzeXMucGF0aDoKKyAgICAgICAgZm9yIGV4dCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBFWFRFTlNJT05TLm5hbWUgKyBleHQKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5wYXRoID0gcGF0aAorICAgICAgICAgICAgICAgIEVYVEVOU0lPTlMuZXh0ID0gZXh0CisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5maWxlbmFtZSA9IGZpbGVuYW1lCisgICAgICAgICAgICAgICAgRVhURU5TSU9OUy5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgICAgICAgICByZXR1cm4KKworX2V4dGVuc2lvbl9kZXRhaWxzKCkKKworCiBkZWYgaW1wb3J0X2ltcG9ydGxpYihtb2R1bGVfbmFtZSk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlIGZyb20gaW1wb3J0bGliIGJvdGggdy8gYW5kIHcvbyBfZnJvemVuX2ltcG9ydGxpYi4iIiIKICAgICBmcmVzaCA9ICgnaW1wb3J0bGliJywpIGlmICcuJyBpbiBtb2R1bGVfbmFtZSBlbHNlICgpCiAgICAgZnJvemVuID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKG1vZHVsZV9uYW1lKQogICAgIHNvdXJjZSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZShtb2R1bGVfbmFtZSwgZnJlc2g9ZnJlc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZWQ9KCdfZnJvemVuX2ltcG9ydGxpYicsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD0oJ19mcm96ZW5faW1wb3J0bGliJywgJ19mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsJykpCisgICAgcmV0dXJuIHsnRnJvemVuJzogZnJvemVuLCAnU291cmNlJzogc291cmNlfQorCisKK2RlZiBzcGVjaWFsaXplX2NsYXNzKGNscywga2luZCwgYmFzZT1Ob25lLCAqKmt3YXJncyk6CisgICAgIyBYWFggU3VwcG9ydCBwYXNzaW5nIGluIHN1Ym1vZHVsZSBuYW1lcy0tbG9hZCAoYW5kIGNhY2hlKSB0aGVtPworICAgICMgVGhhdCB3b3VsZCBjbGVhbiB1cCB0aGUgdGVzdCBtb2R1bGVzIGEgYml0IG1vcmUuCisgICAgaWYgYmFzZSBpcyBOb25lOgorICAgICAgICBiYXNlID0gdW5pdHRlc3QuVGVzdENhc2UKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGJhc2UsIHR5cGUpOgorICAgICAgICBiYXNlID0gYmFzZVtraW5kXQorICAgIG5hbWUgPSAne31fe30nLmZvcm1hdChraW5kLCBjbHMuX19uYW1lX18pCisgICAgYmFzZXMgPSAoY2xzLCBiYXNlKQorICAgIHNwZWNpYWxpemVkID0gdHlwZXMubmV3X2NsYXNzKG5hbWUsIGJhc2VzKQorICAgIHNwZWNpYWxpemVkLl9fbW9kdWxlX18gPSBjbHMuX19tb2R1bGVfXworICAgIHNwZWNpYWxpemVkLl9OQU1FID0gY2xzLl9fbmFtZV9fCisgICAgc3BlY2lhbGl6ZWQuX0tJTkQgPSBraW5kCisgICAgZm9yIGF0dHIsIHZhbHVlcyBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgdmFsdWUgPSB2YWx1ZXNba2luZF0KKyAgICAgICAgc2V0YXR0cihzcGVjaWFsaXplZCwgYXR0ciwgdmFsdWUpCisgICAgcmV0dXJuIHNwZWNpYWxpemVkCisKKworZGVmIHNwbGl0X2Zyb3plbihjbHMsIGJhc2U9Tm9uZSwgKiprd2FyZ3MpOgorICAgIGZyb3plbiA9IHNwZWNpYWxpemVfY2xhc3MoY2xzLCAnRnJvemVuJywgYmFzZSwgKiprd2FyZ3MpCisgICAgc291cmNlID0gc3BlY2lhbGl6ZV9jbGFzcyhjbHMsICdTb3VyY2UnLCBiYXNlLCAqKmt3YXJncykKICAgICByZXR1cm4gZnJvemVuLCBzb3VyY2UKIAogCi1kZWYgdGVzdF9ib3RoKHRlc3RfY2xhc3MsICoqa3dhcmdzKToKLSAgICBmcm96ZW5fdGVzdHMgPSB0eXBlcy5uZXdfY2xhc3MoJ0Zyb3plbl8nK3Rlc3RfY2xhc3MuX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X2NsYXNzLCB1bml0dGVzdC5UZXN0Q2FzZSkpCi0gICAgc291cmNlX3Rlc3RzID0gdHlwZXMubmV3X2NsYXNzKCdTb3VyY2VfJyt0ZXN0X2NsYXNzLl9fbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9jbGFzcywgdW5pdHRlc3QuVGVzdENhc2UpKQotICAgIGZyb3plbl90ZXN0cy5fX21vZHVsZV9fID0gc291cmNlX3Rlc3RzLl9fbW9kdWxlX18gPSB0ZXN0X2NsYXNzLl9fbW9kdWxlX18KLSAgICBmb3IgYXR0ciwgKGZyb3plbl92YWx1ZSwgc291cmNlX3ZhbHVlKSBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgc2V0YXR0cihmcm96ZW5fdGVzdHMsIGF0dHIsIGZyb3plbl92YWx1ZSkKLSAgICAgICAgc2V0YXR0cihzb3VyY2VfdGVzdHMsIGF0dHIsIHNvdXJjZV92YWx1ZSkKLSAgICByZXR1cm4gZnJvemVuX3Rlc3RzLCBzb3VyY2VfdGVzdHMKK2RlZiB0ZXN0X2JvdGgodGVzdF9jbGFzcywgYmFzZT1Ob25lLCAqKmt3YXJncyk6CisgICAgcmV0dXJuIHNwbGl0X2Zyb3plbih0ZXN0X2NsYXNzLCBiYXNlLCAqKmt3YXJncykKIAogCiBDQVNFX0lOU0VOU0lUSVZFX0ZTID0gVHJ1ZQpAQCAtMzgsNiArOTIsMTAgQEAKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2hhbmdlZF9uYW1lKToKICAgICAgICAgQ0FTRV9JTlNFTlNJVElWRV9GUyA9IEZhbHNlCiAKK3NvdXJjZV9pbXBvcnRsaWIgPSBpbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKVsnU291cmNlJ10KK19faW1wb3J0X18gPSB7J0Zyb3plbic6IHN0YXRpY21ldGhvZChidWlsdGlucy5fX2ltcG9ydF9fKSwKKyAgICAgICAgICAgICAgJ1NvdXJjZSc6IHN0YXRpY21ldGhvZChzb3VyY2VfaW1wb3J0bGliLl9faW1wb3J0X18pfQorCiAKIGRlZiBjYXNlX2luc2Vuc2l0aXZlX3Rlc3RzKHRlc3QpOgogICAgICIiIkNsYXNzIGRlY29yYXRvciB0aGF0IG51bGxpZmllcyB0ZXN0cyByZXF1aXJpbmcgYSBjYXNlLWluc2Vuc2l0aXZlCkBAIC01Myw3ICsxMTEsNyBAQAogICAgIHJldHVybiAne30ue30nLmZvcm1hdChwYXJlbnQsIG5hbWUpLCBwYXRoCiAKIAotQGNvbnRleHRtYW5hZ2VyCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHVuY2FjaGUoKm5hbWVzKToKICAgICAiIiJVbmNhY2hlIGEgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMuCiAKQEAgLTc5LDcgKzEzNyw3IEBACiAgICAgICAgICAgICAgICAgcGFzcwogCiAKLUBjb250ZXh0bWFuYWdlcgorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiB0ZW1wX21vZHVsZShuYW1lLCBjb250ZW50PScnLCAqLCBwa2c9RmFsc2UpOgogICAgIGNvbmZsaWN0cyA9IFtuIGZvciBuIGluIHN5cy5tb2R1bGVzIGlmIG4ucGFydGl0aW9uKCcuJylbMF0gPT0gbmFtZV0KICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoTm9uZSkgYXMgY3dkOgpAQCAtMTAzLDcgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgeWllbGQgbG9jYXRpb24KIAogCi1AY29udGV4dG1hbmFnZXIKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgaW1wb3J0X3N0YXRlKCoqa3dhcmdzKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gbWFuYWdlIHRoZSB2YXJpb3VzIGltcG9ydGVycyBhbmQgc3RvcmVkIHN0YXRlIGluIHRoZQogICAgIHN5cyBtb2R1bGUuCkBAIC0xOTgsNiArMjU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAKKwogY2xhc3MgbW9ja19zcGVjKF9JbXBvcnRlck1vY2spOgogCiAgICAgIiIiSW1wb3J0ZXIgbW9jayB1c2luZyBQRVAgNDUxIEFQSXMuIiIiCkBAIC0yMjMsMyArMjgyLDk5IEBACiAgICAgICAgICAgICBzZWxmLm1vZHVsZV9jb2RlW21vZHVsZS5fX3NwZWNfXy5uYW1lXSgpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHBhc3MKKworCitkZWYgd3JpdGVzX2J5dGVjb2RlX2ZpbGVzKGZ4bik6CisgICAgIiIiRGVjb3JhdG9yIHRvIHByb3RlY3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgZnJvbSBtdXRhdGlvbiBhbmQgdG8gc2tpcAorICAgIHRlc3RzIHRoYXQgcmVxdWlyZSBpdCB0byBiZSBzZXQgdG8gRmFsc2UuIiIiCisgICAgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6CisgICAgICAgIHJldHVybiBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBOb25lCisgICAgQGZ1bmN0b29scy53cmFwcyhmeG4pCisgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgb3JpZ2luYWwgPSBzeXMuZG9udF93cml0ZV9ieXRlY29kZQorICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRvX3JldHVybiA9IGZ4bigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9yaWdpbmFsCisgICAgICAgIHJldHVybiB0b19yZXR1cm4KKyAgICByZXR1cm4gd3JhcHBlcgorCisKK2RlZiBlbnN1cmVfYnl0ZWNvZGVfcGF0aChieXRlY29kZV9wYXRoKToKKyAgICAiIiJFbnN1cmUgdGhhdCB0aGUgX19weWNhY2hlX18gZGlyZWN0b3J5IGZvciBQRVAgMzE0NyBweWMgZmlsZSBleGlzdHMuCisKKyAgICA6cGFyYW0gYnl0ZWNvZGVfcGF0aDogRmlsZSBzeXN0ZW0gcGF0aCB0byBQRVAgMzE0NyBweWMgZmlsZS4KKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguZGlybmFtZShieXRlY29kZV9wYXRoKSkKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgICAgcmFpc2UKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGNyZWF0ZV9tb2R1bGVzKCpuYW1lcyk6CisgICAgIiIiVGVtcG9yYXJpbHkgY3JlYXRlIGVhY2ggbmFtZWQgbW9kdWxlIHdpdGggYW4gYXR0cmlidXRlIChuYW1lZCAnYXR0cicpCisgICAgdGhhdCBjb250YWlucyB0aGUgbmFtZSBwYXNzZWQgaW50byB0aGUgY29udGV4dCBtYW5hZ2VyIHRoYXQgY2F1c2VkIHRoZQorICAgIGNyZWF0aW9uIG9mIHRoZSBtb2R1bGUuCisKKyAgICBBbGwgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHJldHVybmVkIGJ5CisgICAgdGVtcGZpbGUubWtkdGVtcCgpLiBUaGlzIGRpcmVjdG9yeSBpcyBpbnNlcnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgc3lzLnBhdGguIFdoZW4gdGhlIGNvbnRleHQgbWFuYWdlciBleGl0cyBhbGwgY3JlYXRlZCBmaWxlcyAoc291cmNlIGFuZAorICAgIGJ5dGVjb2RlKSBhcmUgZXhwbGljaXRseSBkZWxldGVkLgorCisgICAgTm8gbWFnaWMgaXMgcGVyZm9ybWVkIHdoZW4gY3JlYXRpbmcgcGFja2FnZXMhIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgY3JlYXRlCisgICAgYSBtb2R1bGUgd2l0aGluIGEgcGFja2FnZSB5b3UgbXVzdCBhbHNvIGNyZWF0ZSB0aGUgcGFja2FnZSdzIF9faW5pdF9fIGFzCisgICAgd2VsbC4KKworICAgICIiIgorICAgIHNvdXJjZSA9ICdhdHRyID0gezAhcn0nCisgICAgY3JlYXRlZF9wYXRocyA9IFtdCisgICAgbWFwcGluZyA9IHt9CisgICAgc3RhdGVfbWFuYWdlciA9IE5vbmUKKyAgICB1bmNhY2hlX21hbmFnZXIgPSBOb25lCisgICAgdHJ5OgorICAgICAgICB0ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBtYXBwaW5nWycucm9vdCddID0gdGVtcF9kaXIKKyAgICAgICAgaW1wb3J0X25hbWVzID0gc2V0KCkKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICBpZiBub3QgbmFtZS5lbmRzd2l0aCgnX19pbml0X18nKToKKyAgICAgICAgICAgICAgICBpbXBvcnRfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW1wb3J0X25hbWUgPSBuYW1lWzotbGVuKCcuX19pbml0X18nKV0KKyAgICAgICAgICAgIGltcG9ydF9uYW1lcy5hZGQoaW1wb3J0X25hbWUpCisgICAgICAgICAgICBpZiBpbXBvcnRfbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbaW1wb3J0X25hbWVdCisgICAgICAgICAgICBuYW1lX3BhcnRzID0gbmFtZS5zcGxpdCgnLicpCisgICAgICAgICAgICBmaWxlX3BhdGggPSB0ZW1wX2RpcgorICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBuYW1lX3BhcnRzWzotMV06CisgICAgICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKGZpbGVfcGF0aCwgZGlyZWN0b3J5KQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBvcy5ta2RpcihmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRfcGF0aHMuYXBwZW5kKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihmaWxlX3BhdGgsIG5hbWVfcGFydHNbLTFdICsgJy5weScpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZmlsZS53cml0ZShzb3VyY2UuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgY3JlYXRlZF9wYXRocy5hcHBlbmQoZmlsZV9wYXRoKQorICAgICAgICAgICAgbWFwcGluZ1tuYW1lXSA9IGZpbGVfcGF0aAorICAgICAgICB1bmNhY2hlX21hbmFnZXIgPSB1bmNhY2hlKCppbXBvcnRfbmFtZXMpCisgICAgICAgIHVuY2FjaGVfbWFuYWdlci5fX2VudGVyX18oKQorICAgICAgICBzdGF0ZV9tYW5hZ2VyID0gaW1wb3J0X3N0YXRlKHBhdGg9W3RlbXBfZGlyXSkKKyAgICAgICAgc3RhdGVfbWFuYWdlci5fX2VudGVyX18oKQorICAgICAgICB5aWVsZCBtYXBwaW5nCisgICAgZmluYWxseToKKyAgICAgICAgaWYgc3RhdGVfbWFuYWdlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN0YXRlX21hbmFnZXIuX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgaWYgdW5jYWNoZV9tYW5hZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdW5jYWNoZV9tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgIHN1cHBvcnQucm10cmVlKHRlbXBfZGlyKQorCisKK2RlZiBtb2NrX3BhdGhfaG9vaygqZW50cmllcywgaW1wb3J0ZXIpOgorICAgICIiIkEgbW9jayBzeXMucGF0aF9ob29rcyBlbnRyeS4iIiIKKyAgICBkZWYgaG9vayhlbnRyeSk6CisgICAgICAgIGlmIGVudHJ5IG5vdCBpbiBlbnRyaWVzOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKyAgICAgICAgcmV0dXJuIGltcG9ydGVyCisgICAgcmV0dXJuIGhvb2sKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCAxYTEyNGI1Li45NTViMmFkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IGZ1bmN0b29scwpAQCAtOCw2ICs5LDcgQEAKIGltcG9ydCBvcwogZnJvbSBvcy5wYXRoIGltcG9ydCBub3JtY2FzZQogaW1wb3J0IF9waWNrbGUKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwpAQCAtMTYsNiArMTgsNyBAQAogaW1wb3J0IHVuaWNvZGVkYXRhCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1bml0dGVzdC5tb2NrCitpbXBvcnQgd2FybmluZ3MKIAogdHJ5OgogICAgIGZyb20gY29uY3VycmVudC5mdXR1cmVzIGltcG9ydCBUaHJlYWRQb29sRXhlY3V0b3IKQEAgLTIzLDggKzI2LDggQEAKICAgICBUaHJlYWRQb29sRXhlY3V0b3IgPSBOb25lCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgRGlyc09uU3lzUGF0aCwgY3B5dGhvbl9vbmx5Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgTUlTU0lOR19DX0RPQ1NUUklOR1MKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBNSVNTSU5HX0NfRE9DU1RSSU5HUywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCiAKQEAgLTYwLDE0ICs2MywxNiBAQAogICAgIHByZWRpY2F0ZXMgPSBzZXQoW2luc3BlY3QuaXNidWlsdGluLCBpbnNwZWN0LmlzY2xhc3MsIGluc3BlY3QuaXNjb2RlLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uXSkKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZ2VuZXJhdG9yLCBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uXSkKIAogICAgIGRlZiBpc3Rlc3Qoc2VsZiwgcHJlZGljYXRlLCBleHApOgogICAgICAgICBvYmogPSBldmFsKGV4cCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByZWRpY2F0ZShvYmopLCAnJXMoJXMpJyAlIChwcmVkaWNhdGUuX19uYW1lX18sIGV4cCkpCiAKICAgICAgICAgZm9yIG90aGVyIGluIHNlbGYucHJlZGljYXRlcyAtIHNldChbcHJlZGljYXRlXSk6Ci0gICAgICAgICAgICBpZiBwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uIGFuZFwKKyAgICAgICAgICAgIGlmIChwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uIG9yIFwKKyAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3RoZXIob2JqKSwgJ25vdCAlcyglcyknICUgKG90aGVyLl9fbmFtZV9fLCBleHApKQpAQCAtNzYsMTkgKzgxLDE5IEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIHJldHVybiAnc3BhbScKKworQHR5cGVzLmNvcm91dGluZQorZGVmIGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKKyAgICB5aWVsZAorICAgIHJldHVybiAnc3BhbScKKwogY2xhc3MgRXF1YWxzVG9BbGw6CiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKIGNsYXNzIFRlc3RQcmVkaWNhdGVzKElzVGVzdEJhc2UpOgotICAgIGRlZiB0ZXN0X3NpeHRlZW4oc2VsZik6Ci0gICAgICAgIGNvdW50ID0gbGVuKFt4IGZvciB4IGluIGRpcihpbnNwZWN0KSBpZiB4LnN0YXJ0c3dpdGgoJ2lzJyldKQotICAgICAgICAjIFRoaXMgdGVzdCBpcyBoZXJlIGZvciByZW1lbWJlciB5b3UgdG8gdXBkYXRlIERvYy9saWJyYXJ5L2luc3BlY3QucnN0Ci0gICAgICAgICMgd2hpY2ggY2xhaW1zIHRoZXJlIGFyZSAxNiBzdWNoIGZ1bmN0aW9ucwotICAgICAgICBleHBlY3RlZCA9IDE2Ci0gICAgICAgIGVycl9tc2cgPSAiVGhlcmUgYXJlICVkIChub3QgJWQpIGlzKiBmdW5jdGlvbnMiICUgKGNvdW50LCBleHBlY3RlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgZXhwZWN0ZWQsIGVycl9tc2cpCi0KIAogICAgIGRlZiB0ZXN0X2V4Y2x1ZGluZ19wcmVkaWNhdGVzKHNlbGYpOgogICAgICAgICBnbG9iYWwgdGIKQEAgLTExNiwxMSArMTIxLDYyIEBACiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvciwgJ2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3IsICcoeCBmb3IgeCBpbiByYW5nZSgyKSknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sICdnZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCisKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2Nvcm91dGluZSwgJ2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpJykKKyAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbiwgJ2Nvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlJykKKwogICAgICAgICBpZiBoYXNhdHRyKHR5cGVzLCAnTWVtYmVyRGVzY3JpcHRvclR5cGUnKToKICAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNtZW1iZXJkZXNjcmlwdG9yLCAnZGF0ZXRpbWUudGltZWRlbHRhLmRheXMnKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzbWVtYmVyZGVzY3JpcHRvcihkYXRldGltZS50aW1lZGVsdGEuZGF5cykpCiAKKyAgICBkZWYgdGVzdF9pc2Nvcm91dGluZShzZWxmKToKKyAgICAgICAgZ2VuX2Nvcm8gPSBnZW5fY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoMSkKKyAgICAgICAgY29ybyA9IGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihnZW5fY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNjb3JvdXRpbmUoZ2VuX2Nvcm8pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbihnZW5fY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2dlbmVyYXRvcihnZW5fY29ybykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNjb3JvdXRpbmUoY29ybykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgKKyAgICAgICAgICAgIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbihjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2dlbmVyYXRvcihjb3JvKSkKKworICAgICAgICBjb3JvLmNsb3NlKCk7IGdlbl9jb3JvLmNsb3NlKCkgIyBzaWxlbmNlIHdhcm5pbmdzCisKKyAgICBkZWYgdGVzdF9pc2F3YWl0YWJsZShzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOiB5aWVsZAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNhd2FpdGFibGUoZ2VuKCkpKQorCisgICAgICAgIGNvcm8gPSBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSgxKQorICAgICAgICBnZW5fY29ybyA9IGdlbl9jb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZSgxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzYXdhaXRhYmxlKGNvcm8pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShnZW5fY29ybykpCisKKyAgICAgICAgY2xhc3MgRnV0dXJlOgorICAgICAgICAgICAgZGVmIF9fYXdhaXRfXygpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNhd2FpdGFibGUoRnV0dXJlKCkpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3QuaXNhd2FpdGFibGUoRnV0dXJlKSkKKworICAgICAgICBjbGFzcyBOb3RGdXR1cmU6IHBhc3MKKyAgICAgICAgbm90X2Z1dCA9IE5vdEZ1dHVyZSgpCisgICAgICAgIG5vdF9mdXQuX19hd2FpdF9fID0gbGFtYmRhOiBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2F3YWl0YWJsZShub3RfZnV0KSkKKworICAgICAgICBjb3JvLmNsb3NlKCk7IGdlbl9jb3JvLmNsb3NlKCkgIyBzaWxlbmNlIHdhcm5pbmdzCisKICAgICBkZWYgdGVzdF9pc3JvdXRpbmUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0Lmlzcm91dGluZShtb2Quc3BhbSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0Lmlzcm91dGluZShbXS5jb3VudCkpCkBAIC0xODYsNiArMjQyLDE0IEBACiAgICAgICAgICAgICAgKG1vZGZpbGUsIDQzLCAnYXJndWUnLCBbJyAgICAgICAgICAgIHNwYW0oYSwgYiwgYylcbiddLCAwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZpc2UoKm1vZC5zdFszXVsxOl0pLAogICAgICAgICAgICAgIChtb2RmaWxlLCAzOSwgJ2FidXNlJywgWycgICAgICAgIHNlbGYuYXJndWUoYSwgYiwgYylcbiddLCAwKSkKKyAgICAgICAgIyBUZXN0IG5hbWVkIHR1cGxlIGZpZWxkcworICAgICAgICByZWNvcmQgPSBtb2Quc3RbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZWNvcmQuZnJhbWUsIG1vZC5mcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGluZW5vLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZmlsZW5hbWUsIG1vZC5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZnVuY3Rpb24sICdlZ2dzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW5zcGVjdC5zdGFjaygpJywgcmVjb3JkLmNvZGVfY29udGV4dFswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuaW5kZXgsIDApCiAKICAgICBkZWYgdGVzdF90cmFjZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ2l0LnRyKSwgMykKQEAgLTIxNyw5ICsyODEsNyBAQAogICAgICMgU3ViY2xhc3NlcyBtdXN0IG92ZXJyaWRlLgogICAgIGZvZGRlck1vZHVsZSA9IE5vbmUKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0KKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihpbnNwZWN0LmdldHNvdXJjZWZpbGUoc2VsZi5mb2RkZXJNb2R1bGUpKSBhcyBmcDoKICAgICAgICAgICAgIHNlbGYuc291cmNlID0gZnAucmVhZCgpCiAKQEAgLTI3NCw2ICszMzYsNyBAQAogICAgIGRlZiB0ZXN0X2dldGZ1bmN0aW9ucyhzZWxmKToKICAgICAgICAgZnVuY3Rpb25zID0gaW5zcGVjdC5nZXRtZW1iZXJzKG1vZCwgaW5zcGVjdC5pc2Z1bmN0aW9uKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmN0aW9ucywgWygnZWdncycsIG1vZC5lZ2dzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2xvYmJlc3QnLCBtb2QubG9iYmVzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdzcGFtJywgbW9kLnNwYW0pXSkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCkBAIC0yODUsNiArMzQ4LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRkb2MoZ2l0LmFidXNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnQW5vdGhlclxuXG5kb2NzdHJpbmdcblxuY29udGFpbmluZ1xuXG50YWJzJykKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X2dldGRvY19pbmhlcml0ZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRkb2MobW9kLkZlc3RlcmluZ0dvYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0EgbG9uZ2VyLFxuXG5pbmRlbnRlZFxuXG5kb2NzdHJpbmcuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhtb2QuRmVzdGVyaW5nR29iLmFidXNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQW5vdGhlclxuXG5kb2NzdHJpbmdcblxuY29udGFpbmluZ1xuXG50YWJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGRvYyhtb2QuRmVzdGVyaW5nR29iKCkuYWJ1c2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBbm90aGVyXG5cbmRvY3N0cmluZ1xuXG5jb250YWluaW5nXG5cbnRhYnMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0ZG9jKG1vZC5GZXN0ZXJpbmdHb2IuY29udHJhZGljdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBhdXRvbWF0aWMgZ2FpbnNheWluZy4nKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihNSVNTSU5HX0NfRE9DU1RSSU5HUywgInRlc3QgcmVxdWlyZXMgZG9jc3RyaW5ncyIpCisgICAgZGVmIHRlc3RfZmluZGRvYyhzZWxmKToKKyAgICAgICAgZmluZGRvYyA9IGluc3BlY3QuX2ZpbmRkb2MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kZG9jKGludCksIGludC5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRkb2MoaW50LnRvX2J5dGVzKSwgaW50LnRvX2J5dGVzLl9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZGRvYyhpbnQoKS50b19ieXRlcyksIGludC50b19ieXRlcy5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRkb2MoaW50LmZyb21fYnl0ZXMpLCBpbnQuZnJvbV9ieXRlcy5fX2RvY19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRkb2MoaW50LnJlYWwpLCBpbnQucmVhbC5fX2RvY19fKQorCiAgICAgZGVmIHRlc3RfY2xlYW5kb2Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5jbGVhbmRvYygnQW5cbiAgICBpbmRlbnRlZFxuICAgIGRvY3N0cmluZy4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnQW5cbmluZGVudGVkXG5kb2NzdHJpbmcuJykKQEAgLTMwOSw3ICszOTMsOCBAQAogCiAgICAgZGVmIHRlc3RfZ2V0c291cmNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKGdpdC5hYnVzZSwgMjksIDM5KQotICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZC5TdHVwaWRHaXQsIDIxLCA0NikKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QuU3R1cGlkR2l0LCAyMSwgNTApCisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLmxvYmJlc3QsIDcwLCA3MSkKIAogICAgIGRlZiB0ZXN0X2dldHNvdXJjZWZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKG1vZC5zcGFtKSksIG1vZGZpbGUpCkBAIC0zNjQsNiArNDQ5LDkgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IGdldGxpbmVzCiAKKyAgICBkZWYgdGVzdF9nZXRzb3VyY2Vfb25fY29kZV9vYmplY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLmVnZ3MuX19jb2RlX18sIDEyLCAxOCkKKwogY2xhc3MgVGVzdERlY29yYXRvcnMoR2V0U291cmNlQmFzZSk6CiAgICAgZm9kZGVyTW9kdWxlID0gbW9kMgogCkBAIC0zNzMsNiArNDYxLDEyIEBACiAgICAgZGVmIHRlc3RfcmVwbGFjaW5nX2RlY29yYXRvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QyLmdvbmUsIDksIDEwKQogCisgICAgZGVmIHRlc3RfZ2V0c291cmNlX3Vud3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRTb3VyY2VFcXVhbChtb2QyLnJlYWwsIDEzMCwgMTMyKQorCisgICAgZGVmIHRlc3RfZGVjb3JhdG9yX3dpdGhfbGFtYmRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIuZnVuYzExNCwgMTEzLCAxMTUpCisKIGNsYXNzIFRlc3RPbmVsaW5lcnMoR2V0U291cmNlQmFzZSk6CiAgICAgZm9kZGVyTW9kdWxlID0gbW9kMgogICAgIGRlZiB0ZXN0X29uZWxpbmVfbGFtYmRhKHNlbGYpOgpAQCAtNDY2LDggKzU2MCwxNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5maW5kc291cmNlLCBjbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGluc3BlY3QuZ2V0c291cmNlLCBjbykKIAorICAgIGRlZiB0ZXN0X2dldHNvdXJjZV9vbl9tZXRob2Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kMi5DbGFzc1dpdGhNZXRob2QubWV0aG9kLCAxMTgsIDExOSkKKworICAgIGRlZiB0ZXN0X25lc3RlZF9mdW5jKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZDIuY2xzMTM1LmZ1bmMxMzYsIDEzNiwgMTM5KQorCisKIGNsYXNzIFRlc3ROb0VPTChHZXRTb3VyY2VCYXNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudGVtcGRpciA9IFRFU1RGTiArICdfZGlyJwogICAgICAgICBvcy5ta2RpcihzZWxmLnRlbXBkaXIpCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLApAQCAtNDc2LDcgKzU3Nyw3IEBACiAgICAgICAgIHdpdGggRGlyc09uU3lzUGF0aChzZWxmLnRlbXBkaXIpOgogICAgICAgICAgICAgaW1wb3J0IGluc3BlY3RfZm9kZGVyMyBhcyBtb2QzCiAgICAgICAgIHNlbGYuZm9kZGVyTW9kdWxlID0gbW9kMwotICAgICAgICBHZXRTb3VyY2VCYXNlLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50ZW1wZGlyKQpAQCAtNTI5LDcgKzYzMCw4IEBACiAKICAgICBkZWYgYXNzZXJ0QXJnU3BlY0VxdWFscyhzZWxmLCByb3V0aW5lLCBhcmdzX2UsIHZhcmFyZ3NfZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmt3X2U9Tm9uZSwgZGVmYXVsdHNfZT1Ob25lLCBmb3JtYXR0ZWQ9Tm9uZSk6Ci0gICAgICAgIGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cyA9IGluc3BlY3QuZ2V0YXJnc3BlYyhyb3V0aW5lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cyA9IGluc3BlY3QuZ2V0YXJnc3BlYyhyb3V0aW5lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIGFyZ3NfZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJhcmdzLCB2YXJhcmdzX2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFya3csIHZhcmt3X2UpCkBAIC0xNjM0LDEwICsxNzM2LDg2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsICgyLDMpKQogCiAKK2NsYXNzIFRlc3RHZXRDb3JvdXRpbmVTdGF0ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIG51bWJlcl9jb3JvdXRpbmUoKToKKyAgICAgICAgICAgIGZvciBudW1iZXIgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgeWllbGQgbnVtYmVyCisgICAgICAgIGFzeW5jIGRlZiBjb3JvdXRpbmUoKToKKyAgICAgICAgICAgIGF3YWl0IG51bWJlcl9jb3JvdXRpbmUoKQorICAgICAgICBzZWxmLmNvcm91dGluZSA9IGNvcm91dGluZSgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY29yb3V0aW5lLmNsb3NlKCkKKworICAgIGRlZiBfY29yb3V0aW5lc3RhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBpbnNwZWN0LmdldGNvcm91dGluZXN0YXRlKHNlbGYuY29yb3V0aW5lKQorCisgICAgZGVmIHRlc3RfY3JlYXRlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9jb3JvdXRpbmVzdGF0ZSgpLCBpbnNwZWN0LkNPUk9fQ1JFQVRFRCkKKworICAgIGRlZiB0ZXN0X3N1c3BlbmRlZChzZWxmKToKKyAgICAgICAgc2VsZi5jb3JvdXRpbmUuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2Nvcm91dGluZXN0YXRlKCksIGluc3BlY3QuQ09ST19TVVNQRU5ERUQpCisKKyAgICBkZWYgdGVzdF9jbG9zZWRfYWZ0ZXJfZXhoYXVzdGlvbihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmNvcm91dGluZS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fY29yb3V0aW5lc3RhdGUoKSwgaW5zcGVjdC5DT1JPX0NMT1NFRCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZF9hZnRlcl9pbW1lZGlhdGVfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmNvcm91dGluZS50aHJvdyhSdW50aW1lRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fY29yb3V0aW5lc3RhdGUoKSwgaW5zcGVjdC5DT1JPX0NMT1NFRCkKKworICAgIGRlZiB0ZXN0X2Vhc3lfZGVidWdnaW5nKHNlbGYpOgorICAgICAgICAjIHJlcHIoKSBhbmQgc3RyKCkgb2YgYSBjb3JvdXRpbmUgc3RhdGUgc2hvdWxkIGNvbnRhaW4gdGhlIHN0YXRlIG5hbWUKKyAgICAgICAgbmFtZXMgPSAnQ09ST19DUkVBVEVEIENPUk9fUlVOTklORyBDT1JPX1NVU1BFTkRFRCBDT1JPX0NMT1NFRCcuc3BsaXQoKQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHN0YXRlID0gZ2V0YXR0cihpbnNwZWN0LCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCByZXByKHN0YXRlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc3RyKHN0YXRlKSkKKworICAgIGRlZiB0ZXN0X2dldGNvcm91dGluZWxvY2FscyhzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZ2VuY29ybygpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBnZW5jb3JvID0gZ2VuY29ybygpCisgICAgICAgIGFzeW5jIGRlZiBmdW5jKGE9Tm9uZSk6CisgICAgICAgICAgICBiID0gJ3NwYW0nCisgICAgICAgICAgICBhd2FpdCBnZW5jb3JvCisKKyAgICAgICAgY29ybyA9IGZ1bmMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lbG9jYWxzKGNvcm8pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdnZW5jb3JvJzogZ2VuY29yb30pCisgICAgICAgIGNvcm8uc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y29yb3V0aW5lbG9jYWxzKGNvcm8pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdnZW5jb3JvJzogZ2VuY29ybywgJ2InOiAnc3BhbSd9KQorCisKK2NsYXNzIE15U2lnbmF0dXJlKGluc3BlY3QuU2lnbmF0dXJlKToKKyAgICAjIFRvcC1sZXZlbCB0byBtYWtlIGl0IHBpY2tsYWJsZTsKKyAgICAjIHVzZWQgaW4gdGVzdF9zaWduYXR1cmVfb2JqZWN0X3BpY2tsZQorICAgIHBhc3MKKworY2xhc3MgTXlQYXJhbWV0ZXIoaW5zcGVjdC5QYXJhbWV0ZXIpOgorICAgICMgVG9wLWxldmVsIHRvIG1ha2UgaXQgcGlja2xhYmxlOworICAgICMgdXNlZCBpbiB0ZXN0X3NpZ25hdHVyZV9vYmplY3RfcGlja2xlCisgICAgcGFzcworCisKKwogY2xhc3MgVGVzdFNpZ25hdHVyZU9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBzaWduYXR1cmUoZnVuYyk6Ci0gICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgZGVmIHNpZ25hdHVyZShmdW5jLCAqKmt3KToKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYywgKiprdykKICAgICAgICAgcmV0dXJuICh0dXBsZSgocGFyYW0ubmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgKC4uLiBpZiBwYXJhbS5kZWZhdWx0IGlzIHBhcmFtLmVtcHR5IGVsc2UgcGFyYW0uZGVmYXVsdCksCiAgICAgICAgICAgICAgICAgICAgICAgICguLi4gaWYgcGFyYW0uYW5ub3RhdGlvbiBpcyBwYXJhbS5lbXB0eQpAQCAtMTY5MSw2ICsxODY5LDM3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnZm9sbG93cyBkZWZhdWx0IGFyZ3VtZW50Jyk6CiAgICAgICAgICAgICBTKChwa2QsIHBrKSkKIAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihzaWcpLnN0YXJ0c3dpdGgoJzxTaWduYXR1cmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCcocG8sIHBrJyBpbiByZXByKHNpZykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb2JqZWN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCBiLCAqLCBjOjE9e30sICoqa3cpIC0+IHs0MjonaGFtJ306IHBhc3MKKyAgICAgICAgZm9vX3BhcnRpYWwgPSBmdW5jdG9vbHMucGFydGlhbChmb28sIGE9MSkKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb29fcGFydGlhbCkKKworICAgICAgICBmb3IgdmVyIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwaWNrbGVfdmVyPXZlciwgc3ViY2xhc3M9RmFsc2UpOgorICAgICAgICAgICAgICAgIHNpZ19waWNrbGVkID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhzaWcsIHZlcikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWcsIHNpZ19waWNrbGVkKQorCisgICAgICAgICMgVGVzdCB0aGF0IGJhc2ljIHN1Yi1jbGFzc2luZyB3b3JrcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIG15cGFyYW0gPSBNeVBhcmFtZXRlcihuYW1lPSd6Jywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIG15cGFyYW1zID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qoc2lnLnBhcmFtZXRlcnMsIGE9bXlwYXJhbSkKKyAgICAgICAgbXlzaWcgPSBNeVNpZ25hdHVyZSgpLnJlcGxhY2UocGFyYW1ldGVycz1teXBhcmFtcy52YWx1ZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249c2lnLnJldHVybl9hbm5vdGF0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShteXNpZywgTXlTaWduYXR1cmUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShteXNpZy5wYXJhbWV0ZXJzWyd6J10sIE15UGFyYW1ldGVyKSkKKworICAgICAgICBmb3IgdmVyIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwaWNrbGVfdmVyPXZlciwgc3ViY2xhc3M9VHJ1ZSk6CisgICAgICAgICAgICAgICAgc2lnX3BpY2tsZWQgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG15c2lnLCB2ZXIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlzaWcsIHNpZ19waWNrbGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNpZ19waWNrbGVkLCBNeVNpZ25hdHVyZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2lnX3BpY2tsZWQucGFyYW1ldGVyc1sneiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE15UGFyYW1ldGVyKSkKKwogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9pbW11dGFiaWxpdHkoc2VsZik6CiAgICAgICAgIGRlZiB0ZXN0KGEpOgogICAgICAgICAgICAgcGFzcwpAQCAtMTgwNSw2ICsyMDE0LDggQEAKICAgICAgICAgdGVzdF91bmJvdW5kX21ldGhvZChkaWN0Ll9fZGVsaXRlbV9fKQogICAgICAgICB0ZXN0X3VuYm91bmRfbWV0aG9kKHByb3BlcnR5Ll9fZGVsZXRlX18pCiAKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlICMyMDU4NgorICAgICAgICB0ZXN0X2NhbGxhYmxlKF90ZXN0Y2FwaS5kb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvYykKIAogICAgIEBjcHl0aG9uX29ubHkKICAgICBAdW5pdHRlc3Quc2tpcElmKE1JU1NJTkdfQ19ET0NTVFJJTkdTLApAQCAtMTgyNCwyMyArMjAzNSwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKGRlY29yYXRlZF9mdW5jKSkKIAorICAgICAgICBkZWYgd3JhcHBlcl9saWtlKCphcmdzLCAqKmt3YXJncykgLT4gaW50OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZGVjb3JhdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3dyYXBwZWQ9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHdyYXBwZXJfbGlrZSkpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2J1aWx0aW5zX25vX3NpZ25hdHVyZShzZWxmKToKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbicpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4nKToKICAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKF90ZXN0Y2FwaS5kb2NzdHJpbmdfbm9fc2lnbmF0dXJlKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNpZ25hdHVyZSBmb3VuZCBmb3IgYnVpbHRpbicpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoc3RyKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX25vbl9mdW5jdGlvbihzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcpOgogICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoNDIpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicpOgotICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbig0MikKLQotICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9mcm9tX2J1aWx0aW5fZXJyb3JzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgUHl0aG9uIGJ1aWx0aW4nKToKLSAgICAgICAgICAgIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fYnVpbHRpbig0MikKLQogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9mcm9tX2Z1bmN0aW9ubGlrZV9vYmplY3Qoc2VsZik6CiAgICAgICAgIGRlZiBmdW5jKGEsYiwgKmFyZ3MsIGt3b25seT1UcnVlLCBrd29ubHlyZXEsICoqa3dhcmdzKToKICAgICAgICAgICAgIHBhc3MKQEAgLTE4NjEsOSArMjA3NSw5IEBACiAgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5mdW5jKCphcmdzLCAqKmt3YXJncykKIAotICAgICAgICBzaWdfZnVuYyA9IGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oZnVuYykKKyAgICAgICAgc2lnX2Z1bmMgPSBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKGZ1bmMpCiAKLSAgICAgICAgc2lnX2Z1bmNsaWtlID0gaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbihmdW5jbGlrZShmdW5jKSkKKyAgICAgICAgc2lnX2Z1bmNsaWtlID0gaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9jYWxsYWJsZShmdW5jbGlrZShmdW5jKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWdfZnVuY2xpa2UsIHNpZ19mdW5jKQogCiAgICAgICAgIHNpZ19mdW5jbGlrZSA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmNsaWtlKGZ1bmMpKQpAQCAtMTkxMSw5ICsyMTI1LDYgQEAKICAgICAgICAgICAgIF9fZGVmYXVsdHNfXyA9IGZ1bmMuX19kZWZhdWx0c19fCiAgICAgICAgICAgICBfX2t3ZGVmYXVsdHNfXyA9IGZ1bmMuX19rd2RlZmF1bHRzX18KIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uJyk6Ci0gICAgICAgICAgICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2Z1bmN0aW9uKGZ1bmNsaWtlKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZ1bmNsaWtlKSksICcobWFya2VyKScpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbWV0aG9kKHNlbGYpOgpAQCAtMjI2NSw2ICsyNDc2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEZvby5iYXIsIGZvbGxvd193cmFwcGVkPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkgIyBmdW5jdG9vbHMud3JhcHMgd2lsbCBjb3B5IF9fYW5ub3RhdGlvbnNfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZyb20gImZ1bmMiIHRvICJ3cmFwcGVyIiwgaGVuY2Ugbm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXR1cm5fYW5ub3RhdGlvbgorCiAgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbmRsZSBtZXRob2Qgd3JhcHBlcnMgY29ycmVjdGx5CiAgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CiAgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCkBAIC0yNDcxLDYwICsyNjg5LDEwMiBAQAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KSAtPiBmbG9hdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCkgLT4gaW50OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgYmFyKGEsICosIGI6aW50KTogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgIT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgKKyAgICAgICAgICAgIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksIGhhc2goaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkpCiAKICAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludD00MikgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBiYXIoYSwgKiwgYykgLT4gZmxvYXQ6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBiYXIoYSwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSA9PSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKICAgICAgICAgZGVmIHNwYW0oYjppbnQsIGEpIC0+IGZsb2F0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoc3BhbSkgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKHNwYW0pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKHNwYW0pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgZm9vKCosIGEsIGIsIGMpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28oKiwgYT0xLCBiLCBjKTogcGFzcwogICAgICAgICBkZWYgYmFyKCosIGMsIGIsIGE9MSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhPTEsIGIsIGMpOiBwYXNzCiAgICAgICAgIGRlZiBiYXIocG9zLCAqLCBjLCBiLCBhPTEpOiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSAhPSBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKIAogICAgICAgICBkZWYgZm9vKHBvcywgKiwgYSwgYiwgYyk6IHBhc3MKICAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pID09IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCiAgICAgICAgIGRlZiBmb28ocG9zLCAqYXJncywgYT00MiwgYiwgYywgKiprd2FyZ3M6aW50KTogcGFzcwogICAgICAgICBkZWYgYmFyKHBvcywgKmFyZ3MsIGMsIGIsIGE9NDIsICoqa3dhcmdzOmludCk6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3Quc2lnbmF0dXJlKGZvbykgPT0gaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LnNpZ25hdHVyZShmb28pICE9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCBoYXNoKGluc3BlY3Quc2lnbmF0dXJlKGJhcikpKQogCi0gICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3VuaGFzaGFibGUoc2VsZik6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2hhc2hhYmxlKHNlbGYpOgorICAgICAgICBTID0gaW5zcGVjdC5TaWduYXR1cmUKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisKICAgICAgICAgZGVmIGZvbyhhKTogcGFzcwotICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGZvb19zaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisKKyAgICAgICAgbWFudWFsX3NpZyA9IFMocGFyYW1ldGVycz1bUCgnYScsIFAuUE9TSVRJT05BTF9PUl9LRVlXT1JEKV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGZvb19zaWcpLCBoYXNoKG1hbnVhbF9zaWcpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGhhc2goZm9vX3NpZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChtYW51YWxfc2lnLnJlcGxhY2UocmV0dXJuX2Fubm90YXRpb249J3NwYW0nKSkpCisKKyAgICAgICAgZGVmIGJhcihhKSAtPiAxOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb29fc2lnKSwgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShiYXIpKSkKKworICAgICAgICBkZWYgZm9vKGE9e30pOiBwYXNzCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKLSAgICAgICAgICAgIGhhc2goc2lnKQorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKQorCisgICAgICAgIGRlZiBmb28oYSkgLT4ge306IHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChpbnNwZWN0LnNpZ25hdHVyZShmb28pKQogCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cihzZWxmKToKICAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MjoKQEAgLTI1OTgsNiArMjg1OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKFNwYW0uZm9vKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZ25hdHVyZShIYW0uZm9vKSkKIAorICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9mcm9tX2NhbGxhYmxlX3B5dGhvbl9vYmooc2VsZik6CisgICAgICAgIGNsYXNzIE15U2lnbmF0dXJlKGluc3BlY3QuU2lnbmF0dXJlKTogcGFzcworICAgICAgICBkZWYgZm9vKGEsICosIGI6MSk6IHBhc3MKKyAgICAgICAgZm9vX3NpZyA9IE15U2lnbmF0dXJlLmZyb21fY2FsbGFibGUoZm9vKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmb29fc2lnLCBNeVNpZ25hdHVyZSkpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKE1JU1NJTkdfQ19ET0NTVFJJTkdTLAorICAgICAgICAgICAgICAgICAgICAgIlNpZ25hdHVyZSBpbmZvcm1hdGlvbiBmb3IgYnVpbHRpbnMgcmVxdWlyZXMgZG9jc3RyaW5ncyIpCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2Zyb21fY2FsbGFibGVfYnVpbHRpbl9vYmooc2VsZik6CisgICAgICAgIGNsYXNzIE15U2lnbmF0dXJlKGluc3BlY3QuU2lnbmF0dXJlKTogcGFzcworICAgICAgICBzaWcgPSBNeVNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKF9waWNrbGUuUGlja2xlcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2lnLCBNeVNpZ25hdHVyZSkpCisKIAogY2xhc3MgVGVzdFBhcmFtZXRlck9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9raW5kcyhzZWxmKToKQEAgLTI2NDMsNiArMjkxNiwxNiBAQAogICAgICAgICAgICAgcC5yZXBsYWNlKGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUwpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocCkuc3RhcnRzd2l0aCgnPFBhcmFtZXRlcicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJyJhPTQyIicgaW4gcmVwcihwKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfaGFzaGFibGUoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorICAgICAgICBmb28gPSBQKCdmb28nLCBraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZm9vKSwgaGFzaChQKCdmb28nLCBraW5kPVAuUE9TSVRJT05BTF9PTkxZKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaGFzaChmb28pLCBoYXNoKFAoJ2ZvbycsIGtpbmQ9UC5QT1NJVElPTkFMX09OTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD00MikpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGhhc2goZm9vKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGZvby5yZXBsYWNlKGtpbmQ9UC5WQVJfUE9TSVRJT05BTCkpKQogCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9lcXVhbGl0eShzZWxmKToKICAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCkBAIC0yNjYwLDEzICsyOTQzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwICE9IFAoJ2ZvbycsIGRlZmF1bHQ9NDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKSkKIAotICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfdW5oYXNoYWJsZShzZWxmKToKLSAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCi0KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgotICAgICAgICAgICAgaGFzaChwKQotCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9yZXBsYWNlKHNlbGYpOgogICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9NDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKQEAgLTI3MzUsNyArMzAxMSw5IEBACiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgc3BhbT0xMCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgImdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3NwYW0nIik6CisKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPTEpCiAKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF92YXIoc2VsZik6CkBAIC0yNzYwLDEwICszMDM4LDEyIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidiJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnYiciKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICInYScgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDogJ2EnIik6CiAgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCkKIAogICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTEwKToKQEAgLTI4MzYsNyArMzExNiw3IEBACiAgICAgICAgIGRlZiB0ZXN0KGEsICosIGZvbz0xLCBiYXIpOgogICAgICAgICAgICAgcmV0dXJuIGZvbwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInYmFyJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDogJ2JhciciKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQogCiAgICAgICAgIGRlZiB0ZXN0KGZvbywgKiwgYmFyKToKQEAgLTI4NDQsOCArMzEyNCw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yKSwgKDEsIDIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEpLCAoMSwgMikpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgVHlwZUVycm9yLCAiZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnc3BhbSciKToKKwogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIGJhcj0yLCBmb289MSwgc3BhbT0xMCkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLApAQCAtMjg1NiwxMiArMzEzNywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGJhcj0yKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IGtleXdvcmQgYXJndW1lbnRzJyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIFR5cGVFcnJvciwgImdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3NwYW0nIik6CisKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInYmFyJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pc3NpbmcgYSByZXF1aXJlZCBhcmd1bWVudDogJ2JhciciKToKICAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxKQogCiAgICAgICAgIGRlZiB0ZXN0KGZvbywgKiwgYmFyLCAqKmJpbik6CkBAIC0yODczLDcgKzMxNTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBmb289MSwgYmFyPTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J3NwYW0nOiAnaGFtJ30pKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInZm9vJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50OiAnZm9vJyIpOgogICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGJhcj0yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9MiwgYmluPTEsIHNwYW09MTApLAogICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAyLCB7J2Jpbic6IDEsICdzcGFtJzogMTB9KSkKQEAgLTI5MzgsNyArMzIyMCw5IEBACiAgICAgICAgICAgICByZXR1cm4gYSwgYXJncwogICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJ0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBUeXBlRXJyb3IsICJnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICdhcmdzJyIpOgorCiAgICAgICAgICAgICBzaWcuYmluZChhPTAsIGFyZ3M9MSkKIAogICAgICAgICBkZWYgdGVzdCgqYXJncywgKiprd2FyZ3MpOgpAQCAtMjk4Miw2ICszMjY2LDY0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmEgPT0gYmE0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYmEgIT0gYmE0KQogCisgICAgICAgIGRlZiBmb28oKiwgYSwgYik6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYTEgPSBzaWcuYmluZChhPTEsIGI9MikKKyAgICAgICAgYmEyID0gc2lnLmJpbmQoYj0yLCBhPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYTEgPT0gYmEyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJhMSAhPSBiYTIpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCBiLCAqLCBjOjE9e30sICoqa3cpIC0+IHs0MjonaGFtJ306IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYSA9IHNpZy5iaW5kKDIwLCAzMCwgej17fSkKKworICAgICAgICBmb3IgdmVyIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwaWNrbGVfdmVyPXZlcik6CisgICAgICAgICAgICAgICAgYmFfcGlja2xlZCA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYmEsIHZlcikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmFfcGlja2xlZCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfcmVwcihzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhLCBiLCAqLCBjOjE9e30sICoqa3cpIC0+IHs0MjonaGFtJ306IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYSA9IHNpZy5iaW5kKDIwLCAzMCwgej17fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGJhKSwgcic8Qm91bmRBcmd1bWVudHMgXChhPTIwLC4qXH1cfVwpPicpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX2FwcGx5X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEsIGI9MSwgKmFyZ3MsIGM6MT17fSwgKiprdyk6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorCisgICAgICAgIGJhID0gc2lnLmJpbmQoMjApCisgICAgICAgIGJhLmFwcGx5X2RlZmF1bHRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3QoYmEuYXJndW1lbnRzLml0ZW1zKCkpLAorICAgICAgICAgICAgWygnYScsIDIwKSwgKCdiJywgMSksICgnYXJncycsICgpKSwgKCdjJywge30pLCAoJ2t3Jywge30pXSkKKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdlIHByZXNlcnZlIHRoZSBvcmRlcjoKKyAgICAgICAgIyBpLmUuICdjJyBzaG91bGQgYmUgKmJlZm9yZSogJ2t3Jy4KKyAgICAgICAgYmEgPSBzaWcuYmluZCgxMCwgMjAsIDMwLCBkPTEpCisgICAgICAgIGJhLmFwcGx5X2RlZmF1bHRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGxpc3QoYmEuYXJndW1lbnRzLml0ZW1zKCkpLAorICAgICAgICAgICAgWygnYScsIDEwKSwgKCdiJywgMjApLCAoJ2FyZ3MnLCAoMzAsKSksICgnYycsIHt9KSwgKCdrdycsIHsnZCc6MX0pXSkKKworICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IEJvdW5kQXJndW1lbnRzIHByb2R1Y2VkIGJ5IGJpbmRfcGFydGlhbCgpCisgICAgICAgICMgYXJlIHN1cHBvcnRlZC4KKyAgICAgICAgZGVmIGZvbyhhLCBiKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIGJhID0gc2lnLmJpbmRfcGFydGlhbCgyMCkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgbGlzdChiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMjApXSkKKworICAgICAgICAjIFRlc3Qgbm8gYXJncworICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKQorICAgICAgICBiYSA9IHNpZy5iaW5kKCkKKyAgICAgICAgYmEuYXBwbHlfZGVmYXVsdHMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYmEuYXJndW1lbnRzLml0ZW1zKCkpLCBbXSkKKwogCiBjbGFzcyBUZXN0U2lnbmF0dXJlUHJpdmF0ZUhlbHBlcnModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9nZXRfYm91bmRfcGFyYW0oc2VsZik6CkBAIC0zMDQ2LDYgKzMzODgsNjEgQEAKICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICBOb25lKQogCitjbGFzcyBUZXN0U2lnbmF0dXJlRGVmaW5pdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhpcyB0ZXN0IGNhc2UgcHJvdmlkZXMgYSBob21lIGZvciBjaGVja2luZyB0aGF0IHBhcnRpY3VsYXIgQVBJcworICAgICMgaGF2ZSBzaWduYXR1cmVzIGF2YWlsYWJsZSBmb3IgaW50cm9zcGVjdGlvbgorCisgICAgQGNweXRob25fb25seQorICAgIEB1bml0dGVzdC5za2lwSWYoTUlTU0lOR19DX0RPQ1NUUklOR1MsCisgICAgICAgICAgICAgICAgICAgICAiU2lnbmF0dXJlIGluZm9ybWF0aW9uIGZvciBidWlsdGlucyByZXF1aXJlcyBkb2NzdHJpbmdzIikKKyAgICBkZWYgdGVzdF9idWlsdGluc19oYXZlX3NpZ25hdHVyZXMoc2VsZik6CisgICAgICAgICMgVGhpcyBjaGVja3MgYWxsIGJ1aWx0aW4gY2FsbGFibGVzIGluIENQeXRob24gaGF2ZSBzaWduYXR1cmVzCisgICAgICAgICMgQSBmZXcgaGF2ZSBzaWduYXR1cmVzIFNpZ25hdHVyZSBjYW4ndCB5ZXQgaGFuZGxlLCBzbyB3ZSBza2lwIHRob3NlCisgICAgICAgICMgc2luY2UgdGhleSB3aWxsIGhhdmUgdG8gd2FpdCB1bnRpbCBQRVAgNDU3IGFkZHMgdGhlIHJlcXVpcmVkCisgICAgICAgICMgaW50cm9zcGVjdGlvbiBzdXBwb3J0IHRvIHRoZSBpbnNwZWN0IG1vZHVsZQorICAgICAgICAjIFNvbWUgb3RoZXJzIGFsc28gaGF2ZW4ndCBiZWVuIGNvbnZlcnRlZCB5ZXQgZm9yIHZhcmlvdXMgb3RoZXIKKyAgICAgICAgIyByZWFzb25zLCBzbyB3ZSBhbHNvIHNraXAgdGhvc2UgZm9yIHRoZSB0aW1lIGJlaW5nLCBidXQgZGVzaWduCisgICAgICAgICMgdGhlIHRlc3QgdG8gZmFpbCBpbiBvcmRlciB0byBpbmRpY2F0ZSB3aGVuIGl0IG5lZWRzIHRvIGJlCisgICAgICAgICMgdXBkYXRlZC4KKyAgICAgICAgbm9fc2lnbmF0dXJlID0gc2V0KCkKKyAgICAgICAgIyBUaGVzZSBuZWVkIFBFUCA0NTcgZ3JvdXBzCisgICAgICAgIG5lZWRzX2dyb3VwcyA9IHsicmFuZ2UiLCAic2xpY2UiLCAiZGlyIiwgImdldGF0dHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5leHQiLCAiaXRlciIsICJ2YXJzIn0KKyAgICAgICAgbm9fc2lnbmF0dXJlIHw9IG5lZWRzX2dyb3VwcworICAgICAgICAjIFRoZXNlIG5lZWQgUEVQIDQ1NyBncm91cHMgb3IgYSBzaWduYXR1cmUgY2hhbmdlIHRvIGFjY2VwdCBOb25lCisgICAgICAgIG5lZWRzX3NlbWFudGljX3VwZGF0ZSA9IHsicm91bmQifQorICAgICAgICBub19zaWduYXR1cmUgfD0gbmVlZHNfc2VtYW50aWNfdXBkYXRlCisgICAgICAgICMgVGhlc2UgbmVlZCAqYXJncyBzdXBwb3J0IGluIEFyZ3VtZW50IENsaW5pYworICAgICAgICBuZWVkc192YXJhcmdzID0geyJtaW4iLCAibWF4IiwgInByaW50IiwgIl9fYnVpbGRfY2xhc3NfXyJ9CisgICAgICAgIG5vX3NpZ25hdHVyZSB8PSBuZWVkc192YXJhcmdzCisgICAgICAgICMgVGhlc2Ugc2ltcGx5IHdlcmVuJ3QgY292ZXJlZCBpbiB0aGUgaW5pdGlhbCBBQyBjb252ZXJzaW9uCisgICAgICAgICMgZm9yIGJ1aWx0aW4gY2FsbGFibGVzCisgICAgICAgIG5vdF9jb252ZXJ0ZWRfeWV0ID0geyJvcGVuIiwgIl9faW1wb3J0X18ifQorICAgICAgICBub19zaWduYXR1cmUgfD0gbm90X2NvbnZlcnRlZF95ZXQKKyAgICAgICAgIyBUaGVzZSBidWlsdGluIHR5cGVzIGFyZSBleHBlY3RlZCB0byBwcm92aWRlIGludHJvc3BlY3Rpb24gaW5mbworICAgICAgICB0eXBlc193aXRoX3NpZ25hdHVyZXMgPSBzZXQoKQorICAgICAgICAjIENoZWNrIHRoZSBzaWduYXR1cmVzIHdlIGV4cGVjdCB0byBiZSB0aGVyZQorICAgICAgICBucyA9IHZhcnMoYnVpbHRpbnMpCisgICAgICAgIGZvciBuYW1lLCBvYmogaW4gc29ydGVkKG5zLml0ZW1zKCkpOgorICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKG9iaik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgVGhlIGJ1aWx0aW4gdHlwZXMgaGF2ZW4ndCBiZWVuIGNvbnZlcnRlZCB0byBBQyB5ZXQKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKSBhbmQgKG5hbWUgbm90IGluIHR5cGVzX3dpdGhfc2lnbmF0dXJlcyk6CisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhpcyBhbHNvIHNraXBzIGFsbCB0aGUgZXhjZXB0aW9uIHR5cGVzCisgICAgICAgICAgICAgICAgbm9fc2lnbmF0dXJlLmFkZChuYW1lKQorICAgICAgICAgICAgaWYgKG5hbWUgaW4gbm9fc2lnbmF0dXJlKToKKyAgICAgICAgICAgICAgICAjIE5vdCB5ZXQgY29udmVydGVkCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ1aWx0aW49bmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaW5zcGVjdC5zaWduYXR1cmUob2JqKSkKKyAgICAgICAgIyBDaGVjayBjYWxsYWJsZXMgdGhhdCBoYXZlbid0IGJlZW4gY29udmVydGVkIGRvbid0IGNsYWltIGEgc2lnbmF0dXJlCisgICAgICAgICMgVGhpcyBlbnN1cmVzIHRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgYXMgbW9yZSBzaWduYXR1cmVzIGFyZQorICAgICAgICAjIGFkZGVkLCBzbyB0aGUgYWZmZWN0ZWQgaXRlbXMgY2FuIGJlIG1vdmVkIGludG8gdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICAjIHJlZ3Jlc3Npb24gdGVzdCBhYm92ZQorICAgICAgICBmb3IgbmFtZSBpbiBub19zaWduYXR1cmU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChidWlsdGluPW5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9iai5fX3RleHRfc2lnbmF0dXJlX18pCisKIAogY2xhc3MgVGVzdFVud3JhcCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTMxODcsOCArMzU4NCwxMCBAQAogICAgICAgICBUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnMsIFRlc3RHZXRjYWxsYXJnc01ldGhvZHMsCiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc1VuYm91bmRNZXRob2RzLCBUZXN0R2V0YXR0clN0YXRpYywgVGVzdEdldEdlbmVyYXRvclN0YXRlLAogICAgICAgICBUZXN0Tm9FT0wsIFRlc3RTaWduYXR1cmVPYmplY3QsIFRlc3RTaWduYXR1cmVCaW5kLCBUZXN0UGFyYW1ldGVyT2JqZWN0LAotICAgICAgICBUZXN0Qm91bmRBcmd1bWVudHMsIFRlc3RTaWduYXR1cmVQcml2YXRlSGVscGVycywgVGVzdEdldENsb3N1cmVWYXJzLAotICAgICAgICBUZXN0VW53cmFwLCBUZXN0TWFpbiwgVGVzdFJlbG9hZAorICAgICAgICBUZXN0Qm91bmRBcmd1bWVudHMsIFRlc3RTaWduYXR1cmVQcml2YXRlSGVscGVycywKKyAgICAgICAgVGVzdFNpZ25hdHVyZURlZmluaXRpb25zLAorICAgICAgICBUZXN0R2V0Q2xvc3VyZVZhcnMsIFRlc3RVbndyYXAsIFRlc3RNYWluLCBUZXN0UmVsb2FkLAorICAgICAgICBUZXN0R2V0Q29yb3V0aW5lU3RhdGUKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGU5NDYwMmUuLmNiNTdmMTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC00NTEsOCArNDUxLDUgQEAKICAgICAgICAgY2hlY2soJzEyM1x1ZDgwMCcpCiAgICAgICAgIGNoZWNrKCcxMjNcdWQ4MDAnLCAxMCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEludFRlc3RDYXNlcykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnRfbGl0ZXJhbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50X2xpdGVyYWwucHkKaW5kZXggMWQ1NzhhNy4uYmY3MjU3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnRfbGl0ZXJhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ludF9saXRlcmFsLnB5CkBAIC00LDcgKzQsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFRlc3RIZXhPY3RCaW4odW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNDAsOCArMTM5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMGIxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLCAtOTIyMzM3MjAzNjg1NDc3NTgwOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMGIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExLCAtMTg0NDY3NDQwNzM3MDk1NTE2MTUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SGV4T2N0QmluKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lvLnB5IGIvTGliL3Rlc3QvdGVzdF9pby5weQppbmRleCBmNjU0NDA2Li40NjVkNDVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKQEAgLTM1LDcgKzM1LDcgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlLCBVc2VyTGlzdAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGN5Y2xlLCBjb3VudAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgcnVuX3B5dGhvbl91bnRpbF9lbmQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHJ1bl9weXRob25fdW50aWxfZW5kCiAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpbyAgIyBDIGltcGxlbWVudGF0aW9uIG9mIGlvCkBAIC00NCwxMCArNDQsNiBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCi10cnk6Ci0gICAgaW1wb3J0IGZjbnRsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZmNudGwgPSBOb25lCiAKIGRlZiBfZGVmYXVsdF9jaHVua19zaXplKCk6CiAgICAgIiIiR2V0IHRoZSBkZWZhdWx0IFRleHRJT1dyYXBwZXIgY2h1bmsgc2l6ZSIiIgpAQCAtMzY3LDggKzM2Myw4IEBACiAKICAgICBkZWYgdGVzdF9vcGVuX2hhbmRsZXNfTlVMX2NoYXJzKHNlbGYpOgogICAgICAgICBmbl93aXRoX05VTCA9ICdmb29cMGJhcicKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5vcGVuLCBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJyksICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBmbl93aXRoX05VTCwgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQogCiAgICAgZGVmIHRlc3RfcmF3X2ZpbGVfaW8oc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiLCBidWZmZXJpbmc9MCkgYXMgZjoKQEAgLTcyMyw2ICs3MTksMjEgQEAKICAgICBwYXNzCiAKIAorQHN1cHBvcnQuY3B5dGhvbl9vbmx5CitjbGFzcyBBUElNaXNtYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfUmF3SU9CYXNlX2lvX2luX3B5aW9fbWF0Y2goc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBweWlvIFJhd0lPQmFzZSBjbGFzcyBoYXMgYWxsIGMgUmF3SU9CYXNlIG1ldGhvZHMiIiIKKyAgICAgICAgbWlzbWF0Y2ggPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2gocHlpby5SYXdJT0Jhc2UsIGlvLlJhd0lPQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPSgnX193ZWFrcmVmX18nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWlzbWF0Y2gsIHNldCgpLCBtc2c9J1B5dGhvbiBSYXdJT0Jhc2UgZG9lcyBub3QgaGF2ZSBhbGwgQyBSYXdJT0Jhc2UgbWV0aG9kcycpCisKKyAgICBkZWYgdGVzdF9SYXdJT0Jhc2VfcHlpb19pbl9pb19tYXRjaChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGMgUmF3SU9CYXNlIGNsYXNzIGhhcyBhbGwgcHlpbyBSYXdJT0Jhc2UgbWV0aG9kcyIiIgorICAgICAgICBtaXNtYXRjaCA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaChpby5SYXdJT0Jhc2UsIHB5aW8uUmF3SU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pc21hdGNoLCBzZXQoKSwgbXNnPSdDIFJhd0lPQmFzZSBkb2VzIG5vdCBoYXZlIGFsbCBQeXRob24gUmF3SU9CYXNlIG1ldGhvZHMnKQorCisKIGNsYXNzIENvbW1vbkJ1ZmZlcmVkVGVzdHM6CiAgICAgIyBUZXN0cyBjb21tb24gdG8gQnVmZmVyZWRSZWFkZXIsIEJ1ZmZlcmVkV3JpdGVyIGFuZCBCdWZmZXJlZFJhbmRvbQogCkBAIC04MTEsNyArODIyLDcgQEAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICByYXcgPSBzZWxmLk1vY2tSYXdJTygpCiAgICAgICAgIGIgPSBzZWxmLnRwKHJhdykKLSAgICAgICAgY2xzbmFtZSA9ICIlcy4lcyIgJSAoc2VsZi50cC5fX21vZHVsZV9fLCBzZWxmLnRwLl9fbmFtZV9fKQorICAgICAgICBjbHNuYW1lID0gIiVzLiVzIiAlIChzZWxmLnRwLl9fbW9kdWxlX18sIHNlbGYudHAuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoYiksICI8JXM+IiAlIGNsc25hbWUpCiAgICAgICAgIHJhdy5uYW1lID0gImR1bW15IgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoYiksICI8JXMgbmFtZT0nZHVtbXknPiIgJSBjbHNuYW1lKQpAQCAtOTg1LDYgKzk5Niw3MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvKGIpLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiY2IiKQogCisgICAgZGVmIHRlc3RfcmVhZGludG8xKHNlbGYpOgorICAgICAgICBidWZmZXJfc2l6ZSA9IDEwCisgICAgICAgIHJhd2lvID0gc2VsZi5Nb2NrUmF3SU8oKGIiYWJjIiwgYiJkZSIsIGIiZmdoIiwgYiJqa2wiKSkKKyAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvLCBidWZmZXJfc2l6ZT1idWZmZXJfc2l6ZSkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnBlZWsoMyksIGInYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8xKGIpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIiYWIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50bzEoYiksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6MV0sIGIiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvMShiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImRlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXdpby5fcmVhZHMsIDIpCisgICAgICAgIGIgPSBieXRlYXJyYXkoMipidWZmZXJfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5wZWVrKDMpLCBiJ2ZnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3aW8uX3JlYWRzLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZmlvLnJlYWRpbnRvMShiKSwgNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiWzo2XSwgYiJmZ2hqa2wiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhd2lvLl9yZWFkcywgNCkKKworICAgIGRlZiB0ZXN0X3JlYWRpbnRvX2FycmF5KHNlbGYpOgorICAgICAgICBidWZmZXJfc2l6ZSA9IDYwCisgICAgICAgIGRhdGEgPSBiImEiICogMjYKKyAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoZGF0YSwpKQorICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3aW8sIGJ1ZmZlcl9zaXplPWJ1ZmZlcl9zaXplKQorCisgICAgICAgICMgQ3JlYXRlIGFuIGFycmF5IHdpdGggZWxlbWVudCBzaXplID4gMSBieXRlCisgICAgICAgIGIgPSBhcnJheS5hcnJheSgnaScsIGIneCcgKiAzMikKKyAgICAgICAgYXNzZXJ0IGxlbihiKSAhPSAxNgorCisgICAgICAgICMgUmVhZCBpbnRvIGl0LiBXZSBzaG91bGQgZ2V0IGFzIG1hbnkgKmJ5dGVzKiBhcyB3ZSBjYW4gZml0IGludG8gYgorICAgICAgICAjICh3aGljaCBpcyBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cykKKyAgICAgICAgbiA9IGJ1ZmlvLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihuLCBsZW4oYikpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IG9sZCBjb250ZW50cyBvZiBiIGFyZSBwcmVzZXJ2ZWQKKyAgICAgICAgYm0gPSBtZW1vcnl2aWV3KGIpLmNhc3QoJ0InKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobiwgbGVuKGJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChibVs6bl0sIGRhdGFbOm5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtW246XSwgYid4JyAqIChsZW4oYm1bbjpdKSkpCisKKyAgICBkZWYgdGVzdF9yZWFkaW50bzFfYXJyYXkoc2VsZik6CisgICAgICAgIGJ1ZmZlcl9zaXplID0gNjAKKyAgICAgICAgZGF0YSA9IGIiYSIgKiAyNgorICAgICAgICByYXdpbyA9IHNlbGYuTW9ja1Jhd0lPKChkYXRhLCkpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbywgYnVmZmVyX3NpemU9YnVmZmVyX3NpemUpCisKKyAgICAgICAgIyBDcmVhdGUgYW4gYXJyYXkgd2l0aCBlbGVtZW50IHNpemUgPiAxIGJ5dGUKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdpJywgYid4JyAqIDMyKQorICAgICAgICBhc3NlcnQgbGVuKGIpICE9IDE2CisKKyAgICAgICAgIyBSZWFkIGludG8gaXQuIFdlIHNob3VsZCBnZXQgYXMgbWFueSAqYnl0ZXMqIGFzIHdlIGNhbiBmaXQgaW50byBiCisgICAgICAgICMgKHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzKQorICAgICAgICBuID0gYnVmaW8ucmVhZGludG8xKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihuLCBsZW4oYikpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IG9sZCBjb250ZW50cyBvZiBiIGFyZSBwcmVzZXJ2ZWQKKyAgICAgICAgYm0gPSBtZW1vcnl2aWV3KGIpLmNhc3QoJ0InKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobiwgbGVuKGJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChibVs6bl0sIGRhdGFbOm5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJtW246XSwgYid4JyAqIChsZW4oYm1bbjpdKSkpCisKICAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6CiAgICAgICAgIGRlZiBidWZpbygpOgogICAgICAgICAgICAgcmF3aW8gPSBzZWxmLk1vY2tSYXdJTygoYiJhYmNcbiIsIGIiZFxuIiwgYiJlZiIpKQpAQCAtMjkxMyw2ICsyOTg5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJvayIsIG91dC5kZWNvZGUoKS5zdHJpcCgpKQogCisgICAgZGVmIHRlc3RfcmVhZF9ieXRlc2xpa2Uoc2VsZik6CisgICAgICAgIHIgPSBNZW12aWV3Qnl0ZXNJTyhiJ0p1c3Qgc29tZSByYW5kb20gc3RyaW5nXG4nKQorICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKHIsICd1dGYtOCcpCisKKyAgICAgICAgIyBUZXh0SU93cmFwcGVyIHdpbGwgbm90IHJlYWQgdGhlIGZ1bGwgc3RyaW5nLCBiZWNhdXNlCisgICAgICAgICMgd2UgdHJ1bmNhdGUgaXQgdG8gYSBtdWx0aXBsZSBvZiB0aGUgbmF0aXZlIGludCBzaXplCisgICAgICAgICMgc28gdGhhdCB3ZSBjYW4gY29uc3RydWN0IGEgbW9yZSBjb21wbGV4IG1lbW9yeXZpZXcuCisgICAgICAgIGJ5dGVzX3ZhbCA9ICBfdG9fbWVtb3J5dmlldyhyLmdldHZhbHVlKCkpLnRvYnl0ZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZWFkKDIwMCksIGJ5dGVzX3ZhbC5kZWNvZGUoJ3V0Zi04JykpCisKICAgICBkZWYgdGVzdF9pc3N1ZTIyODQ5KHNlbGYpOgogICAgICAgICBjbGFzcyBGKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgcmVhZGFibGUoc2VsZik6IHJldHVybiBUcnVlCkBAIC0yOTI5LDYgKzMwMTYsMjUgQEAKICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihGKCksIGVuY29kaW5nPSd1dGYtOCcpCiAKIAorY2xhc3MgTWVtdmlld0J5dGVzSU8oaW8uQnl0ZXNJTyk6CisgICAgJycnQSBCeXRlc0lPIG9iamVjdCB3aG9zZSByZWFkIG1ldGhvZCByZXR1cm5zIG1lbW9yeXZpZXdzCisgICAgICAgcmF0aGVyIHRoYW4gYnl0ZXMnJycKKworICAgIGRlZiByZWFkMShzZWxmLCBsZW5fKToKKyAgICAgICAgcmV0dXJuIF90b19tZW1vcnl2aWV3KHN1cGVyKCkucmVhZDEobGVuXykpCisKKyAgICBkZWYgcmVhZChzZWxmLCBsZW5fKToKKyAgICAgICAgcmV0dXJuIF90b19tZW1vcnl2aWV3KHN1cGVyKCkucmVhZChsZW5fKSkKKworZGVmIF90b19tZW1vcnl2aWV3KGJ1Zik6CisgICAgJycnQ29udmVydCBieXRlcy1vYmplY3QgKmJ1ZiogdG8gYSBub24tdHJpdmlhbCBtZW1vcnl2aWV3JycnCisKKyAgICBhcnIgPSBhcnJheS5hcnJheSgnaScpCisgICAgaWR4ID0gbGVuKGJ1ZikgLSBsZW4oYnVmKSAlIGFyci5pdGVtc2l6ZQorICAgIGFyci5mcm9tYnl0ZXMoYnVmWzppZHhdKQorICAgIHJldHVybiBtZW1vcnl2aWV3KGFycikKKworCiBjbGFzcyBDVGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gaW8KICAgICBzaHV0ZG93bl9lcnJvciA9ICJSdW50aW1lRXJyb3I6IGNvdWxkIG5vdCBmaW5kIGlvIG1vZHVsZSBzdGF0ZSIKQEAgLTI5MzcsOCArMzA0Myw2IEBACiAgICAgICAgIHIgPSBzZWxmLkJ5dGVzSU8oYiJceGMzXHhhOVxuXG4iKQogICAgICAgICBiID0gc2VsZi5CdWZmZXJlZFJlYWRlcihyLCAxMDAwKQogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdC5fX2luaXRfXywgYiwgbmV3bGluZT00MikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5yZWFkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0Ll9faW5pdF9fLCBiLCBuZXdsaW5lPSd4eXp6eScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQucmVhZCkKIApAQCAtMzE3NSw2ICszMjc5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRhbGwpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKGYsICJyZWFkaW50byIpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGludG8sIGJ5dGVhcnJheSgxMDI0KSkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZiwgInJlYWRpbnRvMSIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGludG8xLCBieXRlYXJyYXkoMTAyNCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkbGluZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDApCkBAIC0zMjg4LDI2ICszMzk0LDIwIEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICoqa3dhcmdzKSBhcyBmOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZiwgcHJvdG9jb2wpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmY250bCwgJ2ZjbnRsIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgIGRlZiB0ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGVfYmlnYnVmKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X25vbmJsb2NrX3BpcGVfd3JpdGUoMTYqMTAyNCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZjbnRsLCAnZmNudGwgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCiAgICAgZGVmIHRlc3Rfbm9uYmxvY2tfcGlwZV93cml0ZV9zbWFsbGJ1ZihzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9ub25ibG9ja19waXBlX3dyaXRlKDEwMjQpCiAKLSAgICBkZWYgX3NldF9ub25fYmxvY2tpbmcoc2VsZiwgZmQpOgotICAgICAgICBmbGFncyA9IGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZMKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGZsYWdzLCAtMSkKLSAgICAgICAgcmVzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzIHwgb3MuT19OT05CTE9DSykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDApCi0KKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnc2V0X2Jsb2NraW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29zLnNldF9ibG9ja2luZygpIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgIGRlZiBfdGVzdF9ub25ibG9ja19waXBlX3dyaXRlKHNlbGYsIGJ1ZnNpemUpOgogICAgICAgICBzZW50ID0gW10KICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICByLCB3ID0gb3MucGlwZSgpCi0gICAgICAgIHNlbGYuX3NldF9ub25fYmxvY2tpbmcocikKLSAgICAgICAgc2VsZi5fc2V0X25vbl9ibG9ja2luZyh3KQorICAgICAgICBvcy5zZXRfYmxvY2tpbmcociwgRmFsc2UpCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3LCBGYWxzZSkKIAogICAgICAgICAjIFRvIGV4ZXJjaXNlIGFsbCBjb2RlIHBhdGhzIGluIHRoZSBDIGltcGxlbWVudGF0aW9uIHdlIG5lZWQKICAgICAgICAgIyB0byBwbGF5IHdpdGggYnVmZmVyIHNpemVzLiAgRm9yIGluc3RhbmNlLCBpZiB3ZSBjaG9vc2UgYQpAQCAtMzQ1Niw2ICszNTU2LDcgQEAKICAgICAgICAgdC5kYWVtb24gPSBUcnVlCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKICAgICAgICAgZmRvcGVuX2t3YXJnc1siY2xvc2VmZCJdID0gRmFsc2UKKyAgICAgICAgbGFyZ2VfZGF0YSA9IGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSArIDEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpbyA9IHNlbGYuaW8ub3Blbih3LCAqKmZkb3Blbl9rd2FyZ3MpCiAgICAgICAgICAgICB0LnN0YXJ0KCkKQEAgLTM0NjcsOCArMzU2OCw3IEBACiAgICAgICAgICAgICAjIGhhbmRsZXJzLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBpbnZva2UgYWxhcm1faW50ZXJydXB0KCkuCiAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgd2lvLndyaXRlKGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSArIDEpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCB3aW8ud3JpdGUsIGxhcmdlX2RhdGEpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgwKQogICAgICAgICAgICAgICAgIHQuam9pbigpCkBAIC0zNTY5LDExICszNjY5LDEzIEBACiAgICAgICAgIHJldHVybmluZyBhIHBhcnRpYWwgcmVzdWx0IG9yIEVJTlRSKSwgcHJvcGVybHkgaW52b2tlcyB0aGUgc2lnbmFsCiAgICAgICAgIGhhbmRsZXIgYW5kIHJldHJpZXMgaWYgdGhlIGxhdHRlciByZXR1cm5lZCBzdWNjZXNzZnVsbHkuIiIiCiAgICAgICAgIHNlbGVjdCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgic2VsZWN0IikKKwogICAgICAgICAjIEEgcXVhbnRpdHkgdGhhdCBleGNlZWRzIHRoZSBidWZmZXIgc2l6ZSBvZiBhbiBhbm9ueW1vdXMgcGlwZSdzCiAgICAgICAgICMgd3JpdGUgZW5kLgogICAgICAgICBOID0gc3VwcG9ydC5QSVBFX01BWF9TSVpFCiAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKICAgICAgICAgZmRvcGVuX2t3YXJnc1siY2xvc2VmZCJdID0gRmFsc2UKKwogICAgICAgICAjIFdlIG5lZWQgYSBzZXBhcmF0ZSB0aHJlYWQgdG8gcmVhZCBmcm9tIHRoZSBwaXBlIGFuZCBhbGxvdyB0aGUKICAgICAgICAgIyB3cml0ZSgpIHRvIGZpbmlzaC4gIFRoaXMgdGhyZWFkIGlzIHN0YXJ0ZWQgYWZ0ZXIgdGhlIFNJR0FMUk0gaXMKICAgICAgICAgIyByZWNlaXZlZCAoZm9yY2luZyBhIGZpcnN0IEVJTlRSIGluIHdyaXRlKCkpLgpAQCAtMzU5Niw2ICszNjk4LDggQEAKICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICBkZWYgYWxhcm0yKHNpZywgZnJhbWUpOgogICAgICAgICAgICAgdC5zdGFydCgpCisKKyAgICAgICAgbGFyZ2VfZGF0YSA9IGl0ZW0gKiBOCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGFsYXJtMSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2lvID0gc2VsZi5pby5vcGVuKHcsICoqZmRvcGVuX2t3YXJncykKQEAgLTM2MDUsNyArMzcwOSw5IEBACiAgICAgICAgICAgICAjICAgYW5kIHRoZSBmaXJzdCBhbGFybSkKICAgICAgICAgICAgICMgLSBzZWNvbmQgcmF3IHdyaXRlKCkgcmV0dXJucyBFSU5UUiAoYmVjYXVzZSBvZiB0aGUgc2Vjb25kIGFsYXJtKQogICAgICAgICAgICAgIyAtIHN1YnNlcXVlbnQgd3JpdGUoKXMgYXJlIHN1Y2Nlc3NmdWwgKGVpdGhlciBwYXJ0aWFsIG9yIGNvbXBsZXRlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCB3aW8ud3JpdGUoaXRlbSAqIE4pKQorICAgICAgICAgICAgd3JpdHRlbiA9IHdpby53cml0ZShsYXJnZV9kYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOLCB3cml0dGVuKQorCiAgICAgICAgICAgICB3aW8uZmx1c2goKQogICAgICAgICAgICAgd3JpdGVfZmluaXNoZWQgPSBUcnVlCiAgICAgICAgICAgICB0LmpvaW4oKQpAQCAtMzY0NSw3ICszNzUxLDcgQEAKIAogCiBkZWYgbG9hZF90ZXN0cygqYXJncyk6Ci0gICAgdGVzdHMgPSAoQ0lPVGVzdCwgUHlJT1Rlc3QsCisgICAgdGVzdHMgPSAoQ0lPVGVzdCwgUHlJT1Rlc3QsIEFQSU1pc21hdGNoVGVzdCwKICAgICAgICAgICAgICBDQnVmZmVyZWRSZWFkZXJUZXN0LCBQeUJ1ZmZlcmVkUmVhZGVyVGVzdCwKICAgICAgICAgICAgICBDQnVmZmVyZWRXcml0ZXJUZXN0LCBQeUJ1ZmZlcmVkV3JpdGVyVGVzdCwKICAgICAgICAgICAgICBDQnVmZmVyZWRSV1BhaXJUZXN0LCBQeUJ1ZmZlcmVkUldQYWlyVGVzdCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkgYi9MaWIvdGVzdC90ZXN0X2lvY3RsLnB5CmluZGV4IGVmZTlmNTEuLmI4MmI2NTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW9jdGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pb2N0bC5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCBhcnJheQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlLCBnZXRfYXR0cmlidXRlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZSwgZ2V0X2F0dHJpYnV0ZQogaW1wb3J0IG9zLCBzdHJ1Y3QKIGZjbnRsID0gaW1wb3J0X21vZHVsZSgnZmNudGwnKQogdGVybWlvcyA9IGltcG9ydF9tb2R1bGUoJ3Rlcm1pb3MnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQppbmRleCBiZmI1Njk5Li5jMjE3ZDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpAQCAtOSw3ICs5LDkgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCBpcGFkZHJlc3MKK2ltcG9ydCB3ZWFrcmVmCiAKIAogY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTgzLDYgKzg1LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaGV4LCBzZWxmLmZhY3RvcnkoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIHNlbGYuZmFjdG9yeSgxKSkKIAorICAgIGRlZiBwaWNrbGVfdGVzdChzZWxmLCBhZGRyKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgeCA9IHNlbGYuZmFjdG9yeShhZGRyKQorICAgICAgICAgICAgICAgIHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHgsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisKIAogY2xhc3MgQ29tbW9uVGVzdE1peGluX3Y0KENvbW1vblRlc3RNaXhpbik6CiAKQEAgLTI0OCw2ICsyNTcsMTIgQEAKICAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjI1Ny4wLjAuMCIsIDI1NykKICAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjE5Mi4xNjguMC45OTkiLCA5OTkpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzE5Mi4wLjIuMScpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICB3ZWFrcmVmLnJlZihzZWxmLmZhY3RvcnkoJzE5Mi4wLjIuMScpKQorCiAKIGNsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92Nik6CiAgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcwpAQCAtMzgwLDYgKzM5NSwxMiBAQAogICAgICAgICBhc3NlcnRCYWRQYXJ0KCIwMjAwMTpkYjg6OiIsICIwMjAwMSIpCiAgICAgICAgIGFzc2VydEJhZFBhcnQoJzIwMDE6ODg4ODg4OjoxJywgIjg4ODg4OCIpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjonKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgd2Vha3JlZi5yZWYoc2VsZi5mYWN0b3J5KCcyMDAxOmRiODo6JykpCisKIAogY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW5fdjQpOgogICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCkBAIC00NDMsNiArNDY0LDExIEBACiAgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAicHVkZGluZyIpCiAgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAiOjoiKQogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzZWxmLnBpY2tsZV90ZXN0KCcxOTIuMC4yLjAvMjcnKQorICAgICAgICBzZWxmLnBpY2tsZV90ZXN0KCcxOTIuMC4yLjAvMzEnKSAgIyBJUFY0TEVOR1RIIC0gMQorICAgICAgICBzZWxmLnBpY2tsZV90ZXN0KCcxOTIuMC4yLjAnKSAgICAgIyBJUFY0TEVOR1RICisKIAogY2xhc3MgSW50ZXJmYWNlVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y0KToKICAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UKQEAgLTUwMSw2ICs1MjcsMTEgQEAKICAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgInB1ZGRpbmciKQogICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OiIsICI6OiIpCiAKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjoxMDAwLzEyNycpICAjIElQVjZMRU5HVEggLSAxCisgICAgICAgIHNlbGYucGlja2xlX3Rlc3QoJzIwMDE6ZGI4OjoxMDAwJykgICAgICAjIElQVjZMRU5HVEgKKwogCiBjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgogICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZQpAQCAtNjcwLDYgKzcwMSwxMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NkludGVyZmFjZSgnOjoxLzEyOCcpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEnKSkpCiAKKyAgICAjIGlzc3VlICMxNjUzMTogY29uc3RydWN0aW5nIElQdjROZXR3b3JrIGZyb20gYSAoYWRkcmVzcywgbWFzaykgdHVwbGUKKyAgICBkZWYgdGVzdElQdjRUdXBsZShzZWxmKToKKyAgICAgICAgIyAvMzIKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4xLzMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjEnLCAzMikpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwgMzIpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgMzIpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMjU1JykpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4yNTUnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMjU1JykpLCBuZXQpCisgICAgICAgICMgc3RyaWN0PVRydWUgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsIDI0KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsIDI0KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoMzIyMTIyNTk4NSwgMjQpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCgnMTkyLjAuMi4xJywgJzI1NS4yNTUuMjU1LjAnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygoaXAsICcyNTUuMjU1LjI1NS4wJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsICcyNTUuMjU1LjI1NS4wJykpCisgICAgICAgICMgc3RyaWN0PUZhbHNlIGFuZCBob3N0IGJpdHMgc2V0CisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjEnLCAyNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLCAyNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsIDI0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKChpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNTUuMjU1LjI1NS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3Q9RmFsc2UpLCBuZXQpCisKKyAgICAgICAgIyAvMjQKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKCcxOTIuMC4yLjAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjAnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1NS4yNTUuMjU1LjAnKSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKDMyMjEyMjU5ODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMjU1LjI1NS4yNTUuMCcpKSwgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaygoJzE5Mi4wLjIuMCcsIDI0KSksIG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NE5ldHdvcmsoKGlwLCAyNCkpLCBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjROZXR3b3JrKCgzMjIxMjI1OTg0LCAyNCkpLCBuZXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgoJzE5Mi4wLjIuMScsIDI0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCgzMjIxMjI1OTg1LCAyNCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKSkKKworICAgICMgaXNzdWUgIzE2NTMxOiBjb25zdHJ1Y3RpbmcgSVB2Nk5ldHdvcmsgZnJvbSBhIChhZGRyZXNzLCBtYXNrKSB0dXBsZQorICAgIGRlZiB0ZXN0SVB2NlR1cGxlKHNlbGYpOgorICAgICAgICAjIC8xMjgKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorICAgICAgICBuZXQgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovMTI4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6JywgJzEyOCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKAorICAgICAgICAgICAgICAgICg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCwgMTI4KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygoaXAsICcxMjgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0KQorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKCgnMjAwMTpkYjg6OicsICc5NicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKAorICAgICAgICAgICAgICAgICg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCwgOTYpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgJzk2JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKworICAgICAgICAjIHN0cmljdD1UcnVlIGFuZCBob3N0IGJpdHMgc2V0CisgICAgICAgIGlwID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6MScsIDk2KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygoCisgICAgICAgICAgICAgICAgNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEsIDk2KSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygoaXAsIDk2KSkKKyAgICAgICAgIyBzdHJpY3Q9RmFsc2UgYW5kIGhvc3QgYml0cyBzZXQKKyAgICAgICAgbmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoKCcyMDAxOmRiODo6MScsIDk2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEsIDk2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0PUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZOZXR3b3JrKChpcCwgOTYpLCBzdHJpY3Q9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldCkKKworICAgICAgICAjIC85NgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCgnMjAwMTpkYjg6OjEnLCAnOTYnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYxLCAnOTYnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykpCisKICAgICAjIGlzc3VlNTcKICAgICBkZWYgdGVzdEFkZHJlc3NJbnRNYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpICsgMjU1LApAQCAtNjkwLDIwICs4MzQsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqKiBpcGFkZHJlc3MuSVBWNkxFTkdUSCkKIAogICAgIGRlZiB0ZXN0SW50ZXJuYWxzKHNlbGYpOgotICAgICAgICBmaXJzdCwgbGFzdCA9IGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFsKLSAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTAnKSwKLSAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTInKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlyc3QsIGxhc3QpCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTAuMTAuMTAuMTAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjExJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxMC4xMC4xMC4xMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbaXAxXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoaXAxLCBpcDEpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5fZmluZF9hZGRyZXNzX3JhbmdlKFtpcDEsIGlwM10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKGlwMSwgaXAxKSwgKGlwMywgaXAzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbaXAxLCBpcDIsIGlwM10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKGlwMSwgaXAzKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTI4LCBpcGFkZHJlc3MuX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoMCwgMTI4KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiSVB2NE5ldHdvcmsoJzEuMi4zLjAvMjQnKSIsIHJlcHIoc2VsZi5pcHY0X25ldHdvcmspKQogCi0gICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc1ZlcnNpb24oc2VsZik6Ci0gICAgICAgIGNsYXNzIEJyb2tlbihpcGFkZHJlc3MuX0Jhc2VBZGRyZXNzKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgYnJva2VuID0gQnJva2VuKCcxMjcuMC4wLjEnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTm90SW1wbGVtZW50ZWRFcnJvciwgIkJyb2tlbi4qdmVyc2lvbiIpOgotICAgICAgICAgICAgYnJva2VuLnZlcnNpb24KLQogICAgIGRlZiB0ZXN0TWlzc2luZ05ldHdvcmtWZXJzaW9uKHNlbGYpOgogICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjM1LDYgKzE3NzcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMy5leHBsb2RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTkyLjE2OC4xNzguMScsIGFkZHI0LmV4cGxvZGVkKQogCisgICAgZGVmIHRlc3RSZXZlcnNlUG9pbnRlcihzZWxmKToKKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEyNy4wLjAuMScpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4wLjEyNy5pbi1hZGRyLmFycGEnLCBhZGRyMS5yZXZlcnNlX3BvaW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjguJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2IuZC4wLjEuMC4wLjIuaXA2LmFycGEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyLnJldmVyc2VfcG9pbnRlcikKKwogICAgIGRlZiB0ZXN0SW50UmVwcmVzZW50YXRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTY5MDkwNjAsIGludChzZWxmLmlwdjRfYWRkcmVzcykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNDI1NDA2MTY4MjkxODI0Njk0MzM1NDc3NjI0ODIwOTc5NDY2MjUsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkgYi9MaWIvdGVzdC90ZXN0X2lzaW5zdGFuY2UucHkKaW5kZXggN2E2NzMwZS4uZTYzZDU5YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pc2luc3RhbmNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXNpbnN0YW5jZS5weQpAQCAtMyw3ICszLDYgQEAKICMgdGVzdGluZyBvZiBlcnJvciBjb25kaXRpb25zIHVuY292ZXJlZCB3aGVuIHVzaW5nIGV4dGVuc2lvbiB0eXBlcy4KIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBzeXMKIAogCkBAIC0yNTksMzEgKzI1OCwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlzc3ViY2xhc3Moc3RyLCAoc3RyLCAoQ2hpbGQsIE5ld0NoaWxkLCBzdHIpKSkpCiAKICAgICBkZWYgdGVzdF9zdWJjbGFzc19yZWN1cnNpb25fbGltaXQoc2VsZik6Ci0gICAgICAgICMgbWFrZSBzdXJlIHRoYXQgaXNzdWJjbGFzcyByYWlzZXMgUnVudGltZUVycm9yIGJlZm9yZSB0aGUgQyBzdGFjayBpcworICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IGlzc3ViY2xhc3MgcmFpc2VzIFJlY3Vyc2lvbkVycm9yIGJlZm9yZSB0aGUgQyBzdGFjayBpcwogICAgICAgICAjIGJsb3duCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgYmxvd3N0YWNrLCBpc3N1YmNsYXNzLCBzdHIsIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIGJsb3dzdGFjaywgaXNzdWJjbGFzcywgc3RyLCBzdHIpCiAKICAgICBkZWYgdGVzdF9pc2luc3RhbmNlX3JlY3Vyc2lvbl9saW1pdChzZWxmKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCBpc3N1YmNsYXNzIHJhaXNlcyBSdW50aW1lRXJyb3IgYmVmb3JlIHRoZSBDIHN0YWNrIGlzCisgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgaXNzdWJjbGFzcyByYWlzZXMgUmVjdXJzaW9uRXJyb3IgYmVmb3JlIHRoZSBDIHN0YWNrIGlzCiAgICAgICAgICMgYmxvd24KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBibG93c3RhY2ssIGlzaW5zdGFuY2UsICcnLCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBibG93c3RhY2ssIGlzaW5zdGFuY2UsICcnLCBzdHIpCiAKIGRlZiBibG93c3RhY2soZnhuLCBhcmcsIGNvbXBhcmVfdG8pOgogICAgICMgTWFrZSBzdXJlIHRoYXQgY2FsbGluZyBpc2luc3RhbmNlIHdpdGggYSBkZWVwbHkgbmVzdGVkIHR1cGxlIGZvciBpdHMKLSAgICAjIGFyZ3VtZW50IHdpbGwgcmFpc2UgUnVudGltZUVycm9yIGV2ZW50dWFsbHkuCisgICAgIyBhcmd1bWVudCB3aWxsIHJhaXNlIFJlY3Vyc2lvbkVycm9yIGV2ZW50dWFsbHkuCiAgICAgdHVwbGVfYXJnID0gKGNvbXBhcmVfdG8sKQogICAgIGZvciBjbnQgaW4gcmFuZ2Uoc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkrNSk6CiAgICAgICAgIHR1cGxlX2FyZyA9ICh0dXBsZV9hcmcsKQogICAgICAgICBmeG4oYXJnLCB0dXBsZV9hcmcpCiAKIAwKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVGVzdElzSW5zdGFuY2VFeGNlcHRpb25zLAotICAgICAgICBUZXN0SXNTdWJjbGFzc0V4Y2VwdGlvbnMsCi0gICAgICAgIFRlc3RJc0luc3RhbmNlSXNTdWJjbGFzcwotICAgICkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CmluZGV4IDk5MzQzOGMuLjViM2JhN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CkBAIC0xODcwLDggKzE4NzAsNiBAQAogICAgICAgICAgICAgaGlzdC5hcHBlbmQoMykKICAgICAgICAgICAgIHlpZWxkIDIKICAgICAgICAgICAgIGhpc3QuYXBwZW5kKDQpCi0gICAgICAgICAgICBpZiB4OgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KIAogICAgICAgICBoaXN0ID0gW10KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGxpc3QsIGNoYWluKGdlbjEoKSwgZ2VuMihGYWxzZSkpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CmluZGV4IDJjZjEwMzIuLjA4MDdlNmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKQEAgLTksMTIgKzksMTUgQEAKICMgaW1wb3J0IGpzb24gd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zCiBjanNvbiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnanNvbicsIGZyZXNoPVsnX2pzb24nXSkKIHB5anNvbiA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnanNvbicsIGJsb2NrZWQ9WydfanNvbiddKQorIyBKU09ORGVjb2RlRXJyb3IgaXMgY2FjaGVkIGluc2lkZSB0aGUgX2pzb24gbW9kdWxlCitjanNvbi5KU09ORGVjb2RlRXJyb3IgPSBjanNvbi5kZWNvZGVyLkpTT05EZWNvZGVFcnJvciA9IGpzb24uSlNPTkRlY29kZUVycm9yCiAKICMgY3JlYXRlIHR3byBiYXNlIGNsYXNzZXMgdGhhdCB3aWxsIGJlIHVzZWQgYnkgdGhlIG90aGVyIHRlc3RzCiBjbGFzcyBQeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGpzb24gPSBweWpzb24KICAgICBsb2FkcyA9IHN0YXRpY21ldGhvZChweWpzb24ubG9hZHMpCiAgICAgZHVtcHMgPSBzdGF0aWNtZXRob2QocHlqc29uLmR1bXBzKQorICAgIEpTT05EZWNvZGVFcnJvciA9IHN0YXRpY21ldGhvZChweWpzb24uSlNPTkRlY29kZUVycm9yKQogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjanNvbiwgJ3JlcXVpcmVzIF9qc29uJykKIGNsYXNzIENUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIyLDYgKzI1LDcgQEAKICAgICAgICAganNvbiA9IGNqc29uCiAgICAgICAgIGxvYWRzID0gc3RhdGljbWV0aG9kKGNqc29uLmxvYWRzKQogICAgICAgICBkdW1wcyA9IHN0YXRpY21ldGhvZChjanNvbi5kdW1wcykKKyAgICAgICAgSlNPTkRlY29kZUVycm9yID0gc3RhdGljbWV0aG9kKGNqc29uLkpTT05EZWNvZGVFcnJvcikKIAogIyB0ZXN0IFB5VGVzdCBhbmQgQ1Rlc3QgY2hlY2tpbmcgaWYgdGhlIGZ1bmN0aW9ucyBjb21lIGZyb20gdGhlIHJpZ2h0IG1vZHVsZQogY2xhc3MgVGVzdFB5VGVzdChQeVRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CmluZGV4IDU5MWIyZTIuLmNjODNiNDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKQEAgLTYzLDEyICs2MywxMiBAQAogICAgIGRlZiB0ZXN0X2V4dHJhX2RhdGEoc2VsZik6CiAgICAgICAgIHMgPSAnWzEsIDIsIDNdNScKICAgICAgICAgbXNnID0gJ0V4dHJhIGRhdGEnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuSlNPTkRlY29kZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHMpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2VzY2FwZShzZWxmKToKICAgICAgICAgcyA9ICdbImFiY1xceSJdJwogICAgICAgICBtc2cgPSAnZXNjYXBlJwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsIG1zZywgc2VsZi5sb2FkcywgcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzZWxmLkpTT05EZWNvZGVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCBzKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9pbnB1dF90eXBlKHNlbGYpOgogICAgICAgICBtc2cgPSAndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyJwpAQCAtODAsMTAgKzgwLDEwIEBACiAgICAgZGVmIHRlc3Rfc3RyaW5nX3dpdGhfdXRmOF9ib20oc2VsZik6CiAgICAgICAgICMgc2VlICMxODk1OAogICAgICAgICBib21fanNvbiA9ICJbMSwyLDNdIi5lbmNvZGUoJ3V0Zi04LXNpZycpLmRlY29kZSgndXRmLTgnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZHMoYm9tX2pzb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JPTScsIHN0cihjbS5leGNlcHRpb24pKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYuanNvbi5sb2FkKFN0cmluZ0lPKGJvbV9qc29uKSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignQk9NJywgc3RyKGNtLmV4Y2VwdGlvbikpCiAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIEJPTSBpcyBub3QgZGV0ZWN0ZWQgaW4gdGhlIG1pZGRsZSBvZiBhIHN0cmluZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weQppbmRleCAyMTIyZGExLi40YmJjNmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9lbmNvZGVfYmFzZXN0cmluZ19hc2NpaS5weQpAQCAtMTIsOSArMTIsNiBAQAogICAgICgnIHMgcCBhIGMgZSBkICcsICciIHMgcCBhIGMgZSBkICInKSwKICAgICAoJ1xVMDAwMWQxMjAnLCAnIlxcdWQ4MzRcXHVkZDIwIicpLAogICAgICgnXHUwM2IxXHUwM2E5JywgJyJcXHUwM2IxXFx1MDNhOSInKSwKLSAgICAoJ1x1MDNiMVx1MDNhOScsICciXFx1MDNiMVxcdTAzYTkiJyksCi0gICAgKCdcdTAzYjFcdTAzYTknLCAnIlxcdTAzYjFcXHUwM2E5IicpLAotICAgICgnXHUwM2IxXHUwM2E5JywgJyJcXHUwM2IxXFx1MDNhOSInKSwKICAgICAoImAxfiFAIyQlXiYqKClfKy09eyc6WyxdfXw7LjwvPj8iLCAnImAxfiFAIyQlXiYqKClfKy09e1wnOlssXX18Oy48Lz4/IicpLAogICAgICgnXHgwOFx4MGNcblxyXHQnLCAnIlxcYlxcZlxcblxcclxcdCInKSwKICAgICAoJ1x1MDEyM1x1NDU2N1x1ODlhYlx1Y2RlZlx1YWJjZFx1ZWY0YScsICciXFx1MDEyM1xcdTQ1NjdcXHU4OWFiXFx1Y2RlZlxcdWFiY2RcXHVlZjRhIicpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKaW5kZXggN2NhYWZkYi4uOTVmZjViOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRvYykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgZXhjZXB0IHNlbGYuSlNPTkRlY29kZUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFeHBlY3RlZCBmYWlsdXJlIGZvciBmYWlsezB9Lmpzb246IHsxIXJ9Ii5mb3JtYXQoaWR4LCBkb2MpKQpAQCAtMTI0LDEwICsxMjQsMTYgQEAKICAgICAgICAgICAgICgnInNwYW0nLCAnVW50ZXJtaW5hdGVkIHN0cmluZyBzdGFydGluZyBhdCcsIDApLAogICAgICAgICBdCiAgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gXChjaGFyIHsyfVwpJy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHJlLmVzY2FwZShtc2cpLCBpZHggKyAxLCBpZHgpLAotICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRhdGEpCisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgaWR4ICsgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclczogbGluZSAxIGNvbHVtbiAlZCAoY2hhciAlZCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zZywgaWR4ICsgMSwgaWR4KSkKIAogICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZGF0YShzZWxmKToKICAgICAgICAgdGVzdF9jYXNlcyA9IFsKQEAgLTE1NCwxMCArMTYwLDE2IEBACiAgICAgICAgICAgICAoJ3sic3BhbSI6NDIsfScsICdFeHBlY3RpbmcgcHJvcGVydHkgbmFtZSBlbmNsb3NlZCBpbiBkb3VibGUgcXVvdGVzJywgMTEpLAogICAgICAgICBdCiAgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gXChjaGFyIHsyfVwpJy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHJlLmVzY2FwZShtc2cpLCBpZHggKyAxLCBpZHgpLAotICAgICAgICAgICAgICAgIHNlbGYubG9hZHMsIGRhdGEpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuSlNPTkRlY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWRzKGRhdGEpCisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBpZHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5jb2xubywgaWR4ICsgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclczogbGluZSAxIGNvbHVtbiAlZCAoY2hhciAlZCknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1zZywgaWR4ICsgMSwgaWR4KSkKIAogICAgIGRlZiB0ZXN0X2V4dHJhX2RhdGEoc2VsZik6CiAgICAgICAgIHRlc3RfY2FzZXMgPSBbCkBAIC0xNzEsMTEgKzE4MywxNiBAQAogICAgICAgICAgICAgKCcic3BhbSIsNDInLCAnRXh0cmEgZGF0YScsIDYpLAogICAgICAgICBdCiAgICAgICAgIGZvciBkYXRhLCBtc2csIGlkeCBpbiB0ZXN0X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgIHInXnswfTogbGluZSAxIGNvbHVtbiB7MX0gLSBsaW5lIDEgY29sdW1uIHsyfScKLSAgICAgICAgICAgICAgICByJyBcKGNoYXIgezN9IC0gezR9XCknLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgcmUuZXNjYXBlKG1zZyksIGlkeCArIDEsIGxlbihkYXRhKSArIDEsIGlkeCwgbGVuKGRhdGEpKSwKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRzLCBkYXRhKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLkpTT05EZWNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi5sb2FkcyhkYXRhKQorICAgICAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5tc2csIG1zZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgaWR4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubGluZW5vLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuY29sbm8sIGlkeCArIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlcnIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXM6IGxpbmUgMSBjb2x1bW4gJWQgKGNoYXIgJWQpJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtc2csIGlkeCArIDEsIGlkeCkpCiAKICAgICBkZWYgdGVzdF9saW5lY29sKHNlbGYpOgogICAgICAgICB0ZXN0X2Nhc2VzID0gWwpAQCAtMTg1LDEwICsyMDIsMTYgQEAKICAgICAgICAgICAgICgnXG4gIFxuXG4gICAgICEnLCA0LCA2LCAxMCksCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRhdGEsIGxpbmUsIGNvbCwgaWR4IGluIHRlc3RfY2FzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgcideRXhwZWN0aW5nIHZhbHVlOiBsaW5lIHswfSBjb2x1bW4gezF9JwotICAgICAgICAgICAgICAgIHInIFwoY2hhciB7Mn1cKSQnLmZvcm1hdChsaW5lLCBjb2wsIGlkeCksCi0gICAgICAgICAgICAgICAgc2VsZi5sb2FkcywgZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubG9hZHMoZGF0YSkKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCAnRXhwZWN0aW5nIHZhbHVlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgaWR4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubGluZW5vLCBsaW5lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuY29sbm8sIGNvbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVyciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHBlY3RpbmcgdmFsdWU6IGxpbmUgJXMgY29sdW1uICVkIChjaGFyICVkKScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluZSwgY29sLCBpZHgpKQogCiBjbGFzcyBUZXN0UHlGYWlsKFRlc3RGYWlsLCBQeVRlc3QpOiBwYXNzCiBjbGFzcyBUZXN0Q0ZhaWwoVGVzdEZhaWwsIENUZXN0KTogcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfcmVjdXJzaW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfcmVjdXJzaW9uLnB5CmluZGV4IDFhNzYyNTQuLjg3N2RjNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3JlY3Vyc2lvbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9yZWN1cnNpb24ucHkKQEAgLTY4LDExICs2OCwxMSBAQAogICAgIGRlZiB0ZXN0X2hpZ2hseV9uZXN0ZWRfb2JqZWN0c19kZWNvZGluZyhzZWxmKToKICAgICAgICAgIyB0ZXN0IHRoYXQgbG9hZGluZyBoaWdobHktbmVzdGVkIG9iamVjdHMgZG9lc24ndCBzZWdmYXVsdCB3aGVuIEMKICAgICAgICAgIyBhY2NlbGVyYXRpb25zIGFyZSB1c2VkLiBTZWUgIzEyMDE3Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmxvYWRzKCd7ImEiOicgKiAxMDAwMDAgKyAnMScgKyAnfScgKiAxMDAwMDApCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmxvYWRzKCd7ImEiOicgKiAxMDAwMDAgKyAnWzFdJyArICd9JyAqIDEwMDAwMCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIHNlbGYubG9hZHMoJ1snICogMTAwMDAwICsgJzEnICsgJ10nICogMTAwMDAwKQogCiAgICAgZGVmIHRlc3RfaGlnaGx5X25lc3RlZF9vYmplY3RzX2VuY29kaW5nKHNlbGYpOgpAQCAtODAsOSArODAsOSBAQAogICAgICAgICBsLCBkID0gW10sIHt9CiAgICAgICAgIGZvciB4IGluIHJhbmdlKDEwMDAwMCk6CiAgICAgICAgICAgICBsLCBkID0gW2xdLCB7J2snOmR9Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmR1bXBzKGwpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CiAgICAgICAgICAgICBzZWxmLmR1bXBzKGQpCiAKICAgICBkZWYgdGVzdF9lbmRsZXNzX3JlY3Vyc2lvbihzZWxmKToKQEAgLTkyLDcgKzkyLDcgQEAKICAgICAgICAgICAgICAgICAiIiJJZiBjaGVja19jaXJjdWxhciBpcyBGYWxzZSwgdGhpcyB3aWxsIGtlZXAgYWRkaW5nIGFub3RoZXIgbGlzdC4iIiIKICAgICAgICAgICAgICAgICByZXR1cm4gW29dCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgIEVuZGxlc3NKU09ORW5jb2RlcihjaGVja19jaXJjdWxhcj1GYWxzZSkuZW5jb2RlKDVqKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3NjYW5zdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9zY2Fuc3RyaW5nLnB5CmluZGV4IDA3ZjQzNTguLjJkM2VlOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3NjYW5zdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3Rfc2NhbnN0cmluZy5weQpAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgICAgICAgICAnIlxcdWQ4MzRcXHUwWDIwIicsCiAgICAgICAgIF0KICAgICAgICAgZm9yIHMgaW4gYmFkX2VzY2FwZXM6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1zZz1zKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5KU09ORGVjb2RlRXJyb3IsIG1zZz1zKToKICAgICAgICAgICAgICAgICBzY2Fuc3RyaW5nKHMsIDEsIFRydWUpCiAKICAgICBkZWYgdGVzdF9vdmVyZmxvdyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3Rvb2wucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF90b29sLnB5CmluZGV4IDBjMzllNTYuLjE1ZjM3MzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3Rvb2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdG9vbC5weQpAQCAtNCw3ICs0LDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKKwogCiBjbGFzcyBUZXN0VG9vbCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGF0YSA9ICIiIgpAQCAtMTUsNyArMTYsNyBAQAogICAgICAgICAgICAgOiJ5ZXMifSAgXQogICAgICAgICAgICAiIiIKIAotICAgIGV4cGVjdCA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgZXhwZWN0X3dpdGhvdXRfc29ydF9rZXlzID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICBbCiAgICAgICAgIFsKICAgICAgICAgICAgICJibG9ycGllIgpAQCAtMzcsNiArMzgsMjggQEAKICAgICBdCiAgICAgIiIiKQogCisgICAgZXhwZWN0ID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICBbCisgICAgICAgIFsKKyAgICAgICAgICAgICJibG9ycGllIgorICAgICAgICBdLAorICAgICAgICBbCisgICAgICAgICAgICAid2hvb3BzIgorICAgICAgICBdLAorICAgICAgICBbXSwKKyAgICAgICAgImQtc2h0YWVvdSIsCisgICAgICAgICJkLW50aGlvdWgiLAorICAgICAgICAiaS12aGJqa2hudGgiLAorICAgICAgICB7CisgICAgICAgICAgICAibmlmdHkiOiA4NworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibW9yZWZpZWxkIjogZmFsc2UsCisgICAgICAgICAgICAiZmllbGQiOiAieWVzIgorICAgICAgICB9CisgICAgXQorICAgICIiIikKKwogICAgIGRlZiB0ZXN0X3N0ZGluX3N0ZG91dChzZWxmKToKICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKAogICAgICAgICAgICAgICAgIChzeXMuZXhlY3V0YWJsZSwgJy1tJywgJ2pzb24udG9vbCcpLApAQCAtNTUsNiArNzgsNyBAQAogICAgIGRlZiB0ZXN0X2luZmlsZV9zdGRvdXQoc2VsZik6CiAgICAgICAgIGluZmlsZSA9IHNlbGYuX2NyZWF0ZV9pbmZpbGUoKQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdqc29uLnRvb2wnLCBpbmZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnNwbGl0bGluZXMoKSwgc2VsZi5leHBlY3QuZW5jb2RlKCkuc3BsaXRsaW5lcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQogCkBAIC02NSw1ICs4OSwyMCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBvdXRmaWxlKQogICAgICAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgInIiKSBhcyBmcDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAucmVhZCgpLCBzZWxmLmV4cGVjdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKKworICAgIGRlZiB0ZXN0X2hlbHBfZmxhZyhzZWxmKToKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnanNvbi50b29sJywgJy1oJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5zdGFydHN3aXRoKGIndXNhZ2U6ICcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQorCisgICAgZGVmIHRlc3Rfc29ydF9rZXlzX2ZsYWcoc2VsZik6CisgICAgICAgIGluZmlsZSA9IHNlbGYuX2NyZWF0ZV9pbmZpbGUoKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdqc29uLnRvb2wnLCAnLS1zb3J0LWtleXMnLCBpbmZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdF93aXRob3V0X3NvcnRfa2V5cy5lbmNvZGUoKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5IGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQppbmRleCA3ZjMxNWQ0Li5kODJlMzNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKQEAgLTQsNyArNCw2IEBACiBfX2VtYWlsX18gPSAic2Vvaml3b24gYXQgZ21haWwgZG90IGNvbSIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGRlZiBwb3Nvbmx5X3N1bShwb3NfYXJnMSwgKmFyZywgKiprd2FyZyk6CiAgICAgcmV0dXJuIHBvc19hcmcxICsgc3VtKGFyZykgKyBzdW0oa3dhcmcudmFsdWVzKCkpCkBAIC0xODYsOCArMTg1LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyLmV4Y2VwdGlvbiksICJuYW1lICdiJyBpcyBub3QgZGVmaW5lZCIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChLZXl3b3JkT25seUFyZ1Rlc3RDYXNlKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IGY3OWJkODkuLmY4MjIwMjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC05LDcgKzksNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGlmIG5vdCBoYXNhdHRyKHNlbGVjdCwgImtxdWV1ZSIpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IHdvcmtzIG9ubHkgb24gQlNEIikKIApAQCAtMTE0LDcgKzExMyw3IEBACiAgICAgZGVmIHRlc3RfcXVldWVfZXZlbnQoc2VsZik6CiAgICAgICAgIHNlcnZlclNvY2tldCA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzZXJ2ZXJTb2NrZXQuYmluZCgoJzEyNy4wLjAuMScsIDApKQotICAgICAgICBzZXJ2ZXJTb2NrZXQubGlzdGVuKDEpCisgICAgICAgIHNlcnZlclNvY2tldC5saXN0ZW4oKQogICAgICAgICBjbGllbnQgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgY2xpZW50LnNldGJsb2NraW5nKEZhbHNlKQogICAgICAgICB0cnk6CkBAIC0yMzcsOCArMjM2LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoa3F1ZXVlLmZpbGVubygpKSwgRmFsc2UpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RLUXVldWUpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5IGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKaW5kZXggNzkxNTdkZS4uMjFlZjczOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKQEAgLTcsNiArNyw3IEBACiAKIAogRklMRU5BTUUgPSBsaW5lY2FjaGUuX19maWxlX18KK05PTkVYSVNURU5UX0ZJTEVOQU1FID0gRklMRU5BTUUgKyAnLm1pc3NpbmcnCiBJTlZBTElEX05BTUUgPSAnIUAkKSghQCNfMScKIEVNUFRZID0gJycKIFRFU1RTID0gJ2luc3BlY3RfZm9kZGVyIGluc3BlY3RfZm9kZGVyMiBtYXBwaW5nX3Rlc3RzJwpAQCAtMTI2LDYgKzEyNyw0OCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgZ2V0bGluZShzb3VyY2VfbmFtZSwgaW5kZXggKyAxKSkKICAgICAgICAgICAgICAgICBzb3VyY2VfbGlzdC5hcHBlbmQobGluZSkKIAorICAgIGRlZiB0ZXN0X2xhenljYWNoZV9ub19nbG9iYWxzKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhGSUxFTkFNRSkKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBsaW5lY2FjaGUubGF6eWNhY2hlKEZJTEVOQU1FLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgbGluZWNhY2hlLmdldGxpbmVzKEZJTEVOQU1FKSkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9zbW9rZShzZWxmKToKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoTk9ORVhJU1RFTlRfRklMRU5BTUUsIGdsb2JhbHMoKSkKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgVHJ1ZSwgbGluZWNhY2hlLmxhenljYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obGluZWNhY2hlLmNhY2hlW05PTkVYSVNURU5UX0ZJTEVOQU1FXSkpCisgICAgICAgICMgTm90ZSBoZXJlIHRoYXQgd2UncmUgbG9va2luZyB1cCBhIG5vbiBleGlzdGFudCBmaWxlbmFtZSB3aXRoIG5vCisgICAgICAgICMgZ2xvYmFsczogdGhpcyB3b3VsZCBlcnJvciBpZiB0aGUgbGF6eSB2YWx1ZSB3YXNuJ3QgcmVzb2x2ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSkpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfcHJvdmlkZV9hZnRlcl9mYWlsZWRfbG9va3VwKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzKE5PTkVYSVNURU5UX0ZJTEVOQU1FKQorICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGxpbmVjYWNoZS51cGRhdGVjYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSkpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfY2hlY2soc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLmxhenljYWNoZShOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZSgpCisKKyAgICBkZWYgdGVzdF9sYXp5Y2FjaGVfYmFkX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGxpbmVjYWNoZS5sYXp5Y2FjaGUoJycsIGdsb2JhbHMoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGxpbmVjYWNoZS5sYXp5Y2FjaGUoJzxmb28+JywgZ2xvYmFscygpKSkKKworICAgIGRlZiB0ZXN0X2xhenljYWNoZV9hbHJlYWR5X2NhY2hlZChzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhOT05FWElTVEVOVF9GSUxFTkFNRSwgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKE5PTkVYSVNURU5UX0ZJTEVOQU1FLCBnbG9iYWxzKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihsaW5lY2FjaGUuY2FjaGVbTk9ORVhJU1RFTlRfRklMRU5BTUVdKSkKKwogICAgIGRlZiB0ZXN0X21lbW9yeWVycm9yKHNlbGYpOgogICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhGSUxFTkFNRSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDNiOTQ3MDAuLmFlMWJlNmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEwOCwyMCArMTA4LDUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgKDMsKSArIEwoWzEsMl0pCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChMaXN0VGVzdCkKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGltcG9ydCBzeXMKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTGlzdFRlc3QpCi0gICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgIGNvdW50c1tpXSA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKLSAgICAgICAgcHJpbnQoY291bnRzKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKaW5kZXggOTM2OWEyNS4uZmFlMmMzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkKQEAgLTUyNCw1ICs1MjQsNTkgQEAKICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgKGInbm90JywgYid2YWxpZCcpKQogCiAKK2NsYXNzIEJhc2VEZWxvY2FsaXplVGVzdChCYXNlTG9jYWxpemVkVGVzdCk6CisKKyAgICBkZWYgX3Rlc3RfZGVsb2NhbGl6ZShzZWxmLCB2YWx1ZSwgb3V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbGUuZGVsb2NhbGl6ZSh2YWx1ZSksIG91dCkKKworICAgIGRlZiBfdGVzdF9hdG9mKHNlbGYsIHZhbHVlLCBvdXQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsZS5hdG9mKHZhbHVlKSwgb3V0KQorCisgICAgZGVmIF90ZXN0X2F0b2koc2VsZiwgdmFsdWUsIG91dCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxlLmF0b2kodmFsdWUpLCBvdXQpCisKKworY2xhc3MgVGVzdEVuVVNEZWxvY2FsaXplKEVuVVNDb29rZWRUZXN0LCBCYXNlRGVsb2NhbGl6ZVRlc3QpOgorCisgICAgZGVmIHRlc3RfZGVsb2NhbGl6ZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9kZWxvY2FsaXplKCc1MDAwMC4wMCcsICc1MDAwMC4wMCcpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAsMDAwLjAwJywgJzUwMDAwLjAwJykKKworICAgIGRlZiB0ZXN0X2F0b2Yoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAwMDAuMDAnLCA1MDAwMC4pCisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAsMDAwLjAwJywgNTAwMDAuKQorCisgICAgZGVmIHRlc3RfYXRvaShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MDAwMCcsIDUwMDAwKQorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwLDAwMCcsIDUwMDAwKQorCisKK2NsYXNzIFRlc3RDRGVsb2NhbGl6ZVRlc3QoQ0Nvb2tlZFRlc3QsIEJhc2VEZWxvY2FsaXplVGVzdCk6CisKKyAgICBkZWYgdGVzdF9kZWxvY2FsaXplKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwMDAwLjAwJywgJzUwMDAwLjAwJykKKworICAgIGRlZiB0ZXN0X2F0b2Yoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvZignNTAwMDAuMDAnLCA1MDAwMC4pCisKKyAgICBkZWYgdGVzdF9hdG9pKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2koJzUwMDAwJywgNTAwMDApCisKKworY2xhc3MgVGVzdGZyRlJEZWxvY2FsaXplVGVzdChGckZSQ29va2VkVGVzdCwgQmFzZURlbG9jYWxpemVUZXN0KToKKworICAgIGRlZiB0ZXN0X2RlbG9jYWxpemUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZGVsb2NhbGl6ZSgnNTAwMDAsMDAnLCAnNTAwMDAuMDAnKQorICAgICAgICBzZWxmLl90ZXN0X2RlbG9jYWxpemUoJzUwIDAwMCwwMCcsICc1MDAwMC4wMCcpCisKKyAgICBkZWYgdGVzdF9hdG9mKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwMDAwLDAwJywgNTAwMDAuKQorICAgICAgICBzZWxmLl90ZXN0X2F0b2YoJzUwIDAwMCwwMCcsIDUwMDAwLikKKworICAgIGRlZiB0ZXN0X2F0b2koc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXRvaSgnNTAwMDAnLCA1MDAwMCkKKyAgICAgICAgc2VsZi5fdGVzdF9hdG9pKCc1MCAwMDAnLCA1MDAwMCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IGRkYWIyZTAuLmI2ZTY0Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAyMDAxLTIwMTMgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisjIENvcHlyaWdodCAyMDAxLTIwMTQgYnkgVmluYXkgU2FqaXAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAjCiAjIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cwogIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsCkBAIC0xNiw3ICsxNiw3IEBACiAKICIiIlRlc3QgaGFybmVzcyBmb3IgdGhlIGxvZ2dpbmcgbW9kdWxlLiBSdW4gYWxsIHRlc3RzLgogCi1Db3B5cmlnaHQgKEMpIDIwMDEtMjAxMyBWaW5heSBTYWppcC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoQykgMjAwMS0yMDE0IFZpbmF5IFNhamlwLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogIiIiCiAKIGltcG9ydCBsb2dnaW5nCkBAIC0zNCwxNSArMzQsMTIgQEAKIGltcG9ydCBxdWV1ZQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCi1pbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgcnVuX3dpdGhfbG9jYWxlLCBydW5fdW5pdHRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoLCByZXF1aXJlc196bGliLCBUZXN0SGFuZGxlciwgTWF0Y2hlciwgSE9TVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3dhcF9hdHRyKQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTUyLDE2ICs0OSwxMiBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKICAgICAjIFRoZSBmb2xsb3dpbmcgaW1wb3J0cyBhcmUgbmVlZGVkIG9ubHkgZm9yIHRlc3RzIHdoaWNoCiAgICAgIyByZXF1aXJlIHRocmVhZGluZwotICAgIGltcG9ydCBhc3luY2hhdAogICAgIGltcG9ydCBhc3luY29yZQotICAgIGltcG9ydCBlcnJubwogICAgIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2ZXIsIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIKICAgICBpbXBvcnQgc210cGQKICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHBhcnNlX3FzCiAgICAgZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IChUaHJlYWRpbmdVRFBTZXJ2ZXIsIERhdGFncmFtUmVxdWVzdEhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRpbmdUQ1BTZXJ2ZXIsIFN0cmVhbVJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkaW5nVW5peFN0cmVhbVNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1VuaXhEYXRhZ3JhbVNlcnZlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQogdHJ5OgpAQCAtNjQ2LDIyICs2MzksMjMgQEAKICAgICAgICAgaCA9IFRlc3RTdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQogICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQogICAgICAgICBvbGRfcmFpc2UgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucwotICAgICAgICBvbGRfc3RkZXJyID0gc3lzLnN0ZGVycgorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGguaGFuZGxlKHIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGguZXJyb3JfcmVjb3JkLCByKQorCiAgICAgICAgICAgICBoID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKEJhZFN0cmVhbSgpKQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIGguaGFuZGxlKHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdcblJ1bnRpbWVFcnJvcjogZGVsaWJlcmF0ZSBtaXN0YWtlXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICBtc2cgPSAnXG5SdW50aW1lRXJyb3I6IGRlbGliZXJhdGUgbWlzdGFrZVxuJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBzdGRlcnIuZ2V0dmFsdWUoKSkKKwogICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIGguaGFuZGxlKHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzaW8uZ2V0dmFsdWUoKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzdGRlcnIuZ2V0dmFsdWUoKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gb2xkX3JhaXNlCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gb2xkX3N0ZGVycgogCiAjIC0tIFRoZSBmb2xsb3dpbmcgc2VjdGlvbiBjb3VsZCBiZSBtb3ZlZCBpbnRvIGEgc2VydmVyX2hlbHBlci5weSBtb2R1bGUKICMgLS0gaWYgaXQgcHJvdmVzIHRvIGJlIG9mIHdpZGVyIHV0aWxpdHkgdGhhbiBqdXN0IHRlc3RfbG9nZ2luZwpAQCAtNjg5LDcgKzY4Myw4IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsLCBzb2NrbWFwKToKLSAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgTm9uZSwgbWFwPXNvY2ttYXApCisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIE5vbmUsIG1hcD1zb2NrbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICAgICAgc2VsZi5faGFuZGxlciA9IGhhbmRsZXIKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKQEAgLTkzMSwxMCArOTI2LDEwIEBACiAgICAgVElNRU9VVCA9IDguMAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICBzb2NrbWFwID0ge30KLSAgICAgICAgc2VydmVyID0gVGVzdFNNVFBTZXJ2ZXIoKEhPU1QsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCisgICAgICAgIHNlcnZlciA9IFRlc3RTTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCBzZWxmLnByb2Nlc3NfbWVzc2FnZSwgMC4wMDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2ttYXApCiAgICAgICAgIHNlcnZlci5zdGFydCgpCi0gICAgICAgIGFkZHIgPSAoSE9TVCwgc2VydmVyLnBvcnQpCisgICAgICAgIGFkZHIgPSAoc3VwcG9ydC5IT1NULCBzZXJ2ZXIucG9ydCkKICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU01UUEhhbmRsZXIoYWRkciwgJ21lJywgJ3lvdScsICdMb2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYuVElNRU9VVCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnRvYWRkcnMsIFsneW91J10pCkBAIC0xMjUwLDcgKzEyNDUsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMF9vayhzZWxmKToKICAgICAgICAgIyBBIHNpbXBsZSBjb25maWcgZmlsZSB3aGljaCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgc2V0dGluZ3MuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcwKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgIyBXb24ndCBvdXRwdXQgYW55dGhpbmcKQEAgLTEyNjUsNyArMTI2MCw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWcwX3VzaW5nX2NwX29rKHNlbGYpOgogICAgICAgICAjIEEgc2ltcGxlIGNvbmZpZyBmaWxlIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBmaWxlID0gaW8uU3RyaW5nSU8odGV4dHdyYXAuZGVkZW50KHNlbGYuY29uZmlnMCkpCiAgICAgICAgICAgICBjcCA9IGNvbmZpZ3BhcnNlci5Db25maWdQYXJzZXIoKQogICAgICAgICAgICAgY3AucmVhZF9maWxlKGZpbGUpCkBAIC0xMjgzLDcgKzEyNzgsNyBAQAogCiAgICAgZGVmIHRlc3RfY29uZmlnMV9vayhzZWxmLCBjb25maWc9Y29uZmlnMSk6CiAgICAgICAgICMgQSBjb25maWcgZmlsZSBkZWZpbmluZyBhIHN1Yi1wYXJzZXIgYXMgd2VsbC4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhjb25maWcpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTEzMDYsNyArMTMwMSw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWc0X29rKHNlbGYpOgogICAgICAgICAjIEEgY29uZmlnIGZpbGUgc3BlY2lmeWluZyBhIGN1c3RvbSBmb3JtYXR0ZXIgY2xhc3MuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWc0KQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQogICAgICAgICAgICAgdHJ5OgpAQCAtMTMyNiw3ICsxMzIxLDcgQEAKICAgICAgICAgc2VsZi50ZXN0X2NvbmZpZzFfb2soY29uZmlnPXNlbGYuY29uZmlnNikKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzdfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxYSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzExNDI0LiBjb21waWxlci1oeXBoZW5hdGVkIHNvcnRzCkBAIC0xMzQ2LDcgKzEzNDEsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzcpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobG9nZ2VyLmRpc2FibGVkKQpAQCAtMjQ5Myw3ICsyNDg4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzBfb2soc2VsZik6CiAgICAgICAgICMgQSBzaW1wbGUgY29uZmlnIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzApCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAgICAgICAgICAgICAjIFdvbid0IG91dHB1dCBhbnl0aGluZwpAQCAtMjUwOCw3ICsyNTAzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzFfb2soc2VsZiwgY29uZmlnPWNvbmZpZzEpOgogICAgICAgICAjIEEgY29uZmlnIGRlZmluaW5nIGEgc3ViLXBhcnNlciBhcyB3ZWxsLgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZmlnKGNvbmZpZykKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBCb3RoIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMjUzOSw3ICsyNTM0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzRfb2soc2VsZik6CiAgICAgICAgICMgQSBjb25maWcgc3BlY2lmeWluZyBhIGN1c3RvbSBmb3JtYXR0ZXIgY2xhc3MuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWc0KQogICAgICAgICAgICAgI2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICAgICAgICAgIHRyeToKQEAgLTI1NTQsNyArMjU0OSw3IEBACiAKICAgICBkZWYgdGVzdF9jb25maWc0YV9vayhzZWxmKToKICAgICAgICAgIyBBIGNvbmZpZyBzcGVjaWZ5aW5nIGEgY3VzdG9tIGZvcm1hdHRlciBjbGFzcy4KLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzRhKQogICAgICAgICAgICAgI2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKICAgICAgICAgICAgIHRyeToKQEAgLTI1NzQsNyArMjU2OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgc2VsZi5hcHBseV9jb25maWcsIHNlbGYuY29uZmlnNikKIAogICAgIGRlZiB0ZXN0X2NvbmZpZzdfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yNTg2LDcgKzI1ODEsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzcpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2dnZXIuZGlzYWJsZWQpCkBAIC0yNjAzLDcgKzI1OTgsNyBAQAogCiAgICAgI1NhbWUgYXMgdGVzdF9jb25maWdfN19vayBidXQgZG9uJ3QgZGlzYWJsZSBvbGQgbG9nZ2Vycy4KICAgICBkZWYgdGVzdF9jb25maWdfOF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzEpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQWxsIHdpbGwgb3V0cHV0IGEgbWVzc2FnZQpAQCAtMjYxNSw3ICsyNjEwLDcgQEAKICAgICAgICAgICAgIF0sIHN0cmVhbT1vdXRwdXQpCiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWc4KQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvZ2dlci5kaXNhYmxlZCkKQEAgLTI2MzYsNyArMjYzMSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKICAgICBkZWYgdGVzdF9jb25maWdfOGFfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxYSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzExNDI0LiBjb21waWxlci1oeXBoZW5hdGVkIHNvcnRzCkBAIC0yNjU2LDcgKzI2NTEsNyBAQAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKICAgICAgICAgICAgICMgT3JpZ2luYWwgbG9nZ2VyIG91dHB1dCBpcyBlbXB0eS4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzhhKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxvZ2dlci5kaXNhYmxlZCkKQEAgLTI2NzksNyArMjY3NCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKICAgICBkZWYgdGVzdF9jb25maWdfOV9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzkpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICNOb3RoaW5nIHdpbGwgYmUgb3V0cHV0IHNpbmNlIGJvdGggaGFuZGxlciBhbmQgbG9nZ2VyIGFyZSBzZXQgdG8gV0FSTklORwpAQCAtMjY5Nyw3ICsyNjkyLDcgQEAKICAgICAgICAgICAgIF0sIHN0cmVhbT1vdXRwdXQpCiAKICAgICBkZWYgdGVzdF9jb25maWdfMTBfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5hcHBseV9jb25maWcoc2VsZi5jb25maWcxMCkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKQEAgLTI3MjUsNyArMjcyMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgc2VsZi5hcHBseV9jb25maWcsIHNlbGYuY29uZmlnMTMpCiAKICAgICBkZWYgdGVzdF9jb25maWcxNF9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLmFwcGx5X2NvbmZpZyhzZWxmLmNvbmZpZzE0KQogICAgICAgICAgICAgaCA9IGxvZ2dpbmcuX2hhbmRsZXJzWydoYW5kMSddCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9vLCAnYmFyJykKQEAgLTI3NjQsNyArMjc1OSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMTBfb2soc2VsZik6Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIoanNvbi5kdW1wcyhzZWxmLmNvbmZpZzEwKSkKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJjb21waWxlci5wYXJzZXIiKQogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKQEAgLTI3ODQsNyArMjc3OSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X2xpc3Rlbl9jb25maWdfMV9vayhzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBzZWxmLnNldHVwX3ZpYV9saXN0ZW5lcih0ZXh0d3JhcC5kZWRlbnQoQ29uZmlnRmlsZVRlc3QuY29uZmlnMSkpCiAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiY29tcGlsZXIucGFyc2VyIikKICAgICAgICAgICAgICMgQm90aCB3aWxsIG91dHB1dCBhIG1lc3NhZ2UKQEAgLTI4MTEsNyArMjgwNiw3IEBACiAgICAgICAgICMgRmlyc3QsIHNwZWNpZnkgYSB2ZXJpZmljYXRpb24gZnVuY3Rpb24gdGhhdCB3aWxsIGZhaWwuCiAgICAgICAgICMgV2UgZXhwZWN0IHRvIHNlZSBubyBvdXRwdXQsIHNpbmNlIG91ciBjb25maWd1cmF0aW9uCiAgICAgICAgICMgbmV2ZXIgdG9vayBlZmZlY3QuCi0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0cHV0OgogICAgICAgICAgICAgc2VsZi5zZXR1cF92aWFfbGlzdGVuZXIodG9fc2VuZCwgdmVyaWZ5X2ZhaWwpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCiAgICAgICAgICAgICBsb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQpAQCAtMjgyNiw3ICsyODIxLDcgQEAKICAgICAgICAgIyBOb3csIHBlcmZvcm0gbm8gdmVyaWZpY2F0aW9uLiBPdXIgY29uZmlndXJhdGlvbgogICAgICAgICAjIHNob3VsZCB0YWtlIGVmZmVjdC4KIAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRvX3NlbmQpICAgICMgbm8gdmVyaWZ5IGNhbGxhYmxlIHNwZWNpZmllZAogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yODQ0LDcgKzI4MzksNyBAQAogCiAgICAgICAgICMgTm93LCBwZXJmb3JtIHZlcmlmaWNhdGlvbiB3aGljaCB0cmFuc2Zvcm1zIHRoZSBieXRlcy4KIAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRvX3NlbmRbOjotMV0sIHZlcmlmeV9yZXZlcnNlKQogICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoImNvbXBpbGVyLnBhcnNlciIpCiAgICAgICAgICAgICAjIEJvdGggd2lsbCBvdXRwdXQgYSBtZXNzYWdlCkBAIC0yOTk5LDcgKzI5OTQsNyBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIobG9nZ2luZy5oYW5kbGVycywgJ1F1ZXVlTGlzdGVuZXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQogICAgIGRlZiB0ZXN0X3F1ZXVlX2xpc3RlbmVyKHNlbGYpOgotICAgICAgICBoYW5kbGVyID0gVGVzdEhhbmRsZXIoTWF0Y2hlcigpKQorICAgICAgICBoYW5kbGVyID0gc3VwcG9ydC5UZXN0SGFuZGxlcihzdXBwb3J0Lk1hdGNoZXIoKSkKICAgICAgICAgbGlzdGVuZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIoc2VsZi5xdWV1ZSwgaGFuZGxlcikKICAgICAgICAgbGlzdGVuZXIuc3RhcnQoKQogICAgICAgICB0cnk6CkBAIC0zMDExLDYgKzMwMDYsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhbmRsZXIubWF0Y2hlcyhsZXZlbG5vPWxvZ2dpbmcuV0FSTklORywgbWVzc2FnZT0nMScpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5FUlJPUiwgbWVzc2FnZT0nMicpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5DUklUSUNBTCwgbWVzc2FnZT0nMycpKQorICAgICAgICBoYW5kbGVyLmNsb3NlKCkKKworICAgICAgICAjIE5vdyB0ZXN0IHdpdGggcmVzcGVjdF9oYW5kbGVyX2xldmVsIHNldAorCisgICAgICAgIGhhbmRsZXIgPSBzdXBwb3J0LlRlc3RIYW5kbGVyKHN1cHBvcnQuTWF0Y2hlcigpKQorICAgICAgICBoYW5kbGVyLnNldExldmVsKGxvZ2dpbmcuQ1JJVElDQUwpCisgICAgICAgIGxpc3RlbmVyID0gbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyKHNlbGYucXVldWUsIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BlY3RfaGFuZGxlcl9sZXZlbD1UcnVlKQorICAgICAgICBsaXN0ZW5lci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYucXVlX2xvZ2dlci53YXJuaW5nKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgICAgICBzZWxmLnF1ZV9sb2dnZXIuZXJyb3Ioc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgICAgIHNlbGYucXVlX2xvZ2dlci5jcml0aWNhbChzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbGlzdGVuZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5XQVJOSU5HLCBtZXNzYWdlPSc0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5FUlJPUiwgbWVzc2FnZT0nNScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5DUklUSUNBTCwgbWVzc2FnZT0nNicpKQorCiAKIFpFUk8gPSBkYXRldGltZS50aW1lZGVsdGEoMCkKIApAQCAtMzE2NywzMiArMzE4MSwzNSBAQAogICAgICAgICAjIFRlc3QgdGhlIGxhc3QgcmVzb3J0IGhhbmRsZXIKICAgICAgICAgcm9vdCA9IHNlbGYucm9vdF9sb2dnZXIKICAgICAgICAgcm9vdC5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9oZGxyKQotICAgICAgICBvbGRfc3RkZXJyID0gc3lzLnN0ZGVycgogICAgICAgICBvbGRfbGFzdHJlc29ydCA9IGxvZ2dpbmcubGFzdFJlc29ydAogICAgICAgICBvbGRfcmFpc2VfZXhjZXB0aW9ucyA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIHJvb3QuZGVidWcoJ1RoaXMgc2hvdWxkIG5vdCBhcHBlYXInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJycpCi0gICAgICAgICAgICByb290Lndhcm5pbmcoJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIVxuJykKLSAgICAgICAgICAgICNObyBoYW5kbGVycyBhbmQgbm8gbGFzdCByZXNvcnQsIHNvICdObyBoYW5kbGVycycgbWVzc2FnZQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICByb290LmRlYnVnKCdUaGlzIHNob3VsZCBub3QgYXBwZWFyJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgICAgICAgICByb290Lndhcm5pbmcoJ0ZpbmFsIGNoYW5jZSEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICdGaW5hbCBjaGFuY2UhXG4nKQorCisgICAgICAgICAgICAjIE5vIGhhbmRsZXJzIGFuZCBubyBsYXN0IHJlc29ydCwgc28gJ05vIGhhbmRsZXJzJyBtZXNzYWdlCiAgICAgICAgICAgICBsb2dnaW5nLmxhc3RSZXNvcnQgPSBOb25lCi0gICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgcm9vdC53YXJuaW5nKCdUaGlzIGlzIHlvdXIgZmluYWwgY2hhbmNlIScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnTm8gaGFuZGxlcnMgY291bGQgYmUgZm91bmQgZm9yIGxvZ2dlciAicm9vdCJcbicpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgbXNnID0gJ05vIGhhbmRsZXJzIGNvdWxkIGJlIGZvdW5kIGZvciBsb2dnZXIgInJvb3QiXG4nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgbXNnKQorCiAgICAgICAgICAgICAjICdObyBoYW5kbGVycycgbWVzc2FnZSBvbmx5IHByaW50ZWQgb25jZQotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJycpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgIHJvb3Qud2FybmluZygnRmluYWwgY2hhbmNlIScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJycpCisKKyAgICAgICAgICAgICMgSWYgcmFpc2VFeGNlcHRpb25zIGlzIEZhbHNlLCBubyBtZXNzYWdlIGlzIHByaW50ZWQKICAgICAgICAgICAgIHJvb3QubWFuYWdlci5lbWl0dGVkTm9IYW5kbGVyV2FybmluZyA9IEZhbHNlCi0gICAgICAgICAgICAjSWYgcmFpc2VFeGNlcHRpb25zIGlzIEZhbHNlLCBubyBtZXNzYWdlIGlzIHByaW50ZWQKICAgICAgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICByb290Lndhcm5pbmcoJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lvLmdldHZhbHVlKCksICcnKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICByb290Lndhcm5pbmcoJ0ZpbmFsIGNoYW5jZSEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9sZF9zdGRlcnIKICAgICAgICAgICAgIHJvb3QuYWRkSGFuZGxlcihzZWxmLnJvb3RfaGRscikKICAgICAgICAgICAgIGxvZ2dpbmcubGFzdFJlc29ydCA9IG9sZF9sYXN0cmVzb3J0CiAgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZV9leGNlcHRpb25zCkBAIC0zMzIzLDggKzMzNDAsOCBAQAogCiAgICAgZGVmIF90ZXN0X2xvZyhzZWxmLCBtZXRob2QsIGxldmVsPU5vbmUpOgogICAgICAgICBjYWxsZWQgPSBbXQotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLCAnYmFzaWNDb25maWcnLAotICAgICAgICAgICAgICBsYW1iZGEgKmEsICoqa3c6IGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkpCisgICAgICAgIHN1cHBvcnQucGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywKKyAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgKmEsICoqa3c6IGNhbGxlZC5hcHBlbmQoKGEsIGt3KSkpCiAKICAgICAgICAgcmVjb3JkaW5nID0gUmVjb3JkaW5nSGFuZGxlcigpCiAgICAgICAgIGxvZ2dpbmcucm9vdC5hZGRIYW5kbGVyKHJlY29yZGluZykKQEAgLTM0OTUsNyArMzUxMiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5yb290LmxldmVsLCBzZWxmLm9yaWdpbmFsX2xvZ2dpbmdfbGV2ZWwpCiAKICAgICBkZWYgdGVzdF9zdHJmb3JtYXRzdHlsZShzZWxmKToKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXRwdXQ6CiAgICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKHN0cmVhbT1zeXMuc3Rkb3V0LCBzdHlsZT0ieyIpCiAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKCJMb2cgYW4gZXJyb3IiKQogICAgICAgICAgICAgc3lzLnN0ZG91dC5zZWVrKDApCkBAIC0zNTAzLDcgKzM1MjAsNyBAQAogICAgICAgICAgICAgICAgICJFUlJPUjpyb290OkxvZyBhbiBlcnJvciIpCiAKICAgICBkZWYgdGVzdF9zdHJpbmd0ZW1wbGF0ZXN0eWxlKHNlbGYpOgotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN5cy5zdGRvdXQsIHN0eWxlPSIkIikKICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3IoIkxvZyBhbiBlcnJvciIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LnNlZWsoMCkKQEAgLTM2MjQsNyArMzY0MSw3IEBACiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5yb290LnNldExldmVsLCBvbGRfbGV2ZWwpCiAgICAgICAgICAgICBjYWxsZWQuYXBwZW5kKChhLCBrdykpCiAKLSAgICAgICAgcGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywgbXlfYmFzaWNfY29uZmlnKQorICAgICAgICBzdXBwb3J0LnBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsIG15X2Jhc2ljX2NvbmZpZykKIAogICAgICAgICBsb2dfbWV0aG9kID0gZ2V0YXR0cihsb2dnaW5nLCBtZXRob2QpCiAgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgpAQCAtMzY5MCw2ICszNzA3LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKIAorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9leGNpbmZvKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4YyA9IGUKKworICAgICAgICBzZWxmLmFkYXB0ZXIuZXhjZXB0aW9uKCdleGNfaW5mbyB0ZXN0JywgZXhjX2luZm89ZXhjKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKwogICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgogICAgICAgICBtc2cgPSAnY3JpdGljYWwgdGVzdCEgJXInCiAgICAgICAgIHNlbGYuYWRhcHRlci5jcml0aWNhbChtc2csIHNlbGYucmVjb3JkaW5nKQpAQCAtMzc0OSwxNyArMzc3OSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKIAogICAgIGRlZiB0ZXN0X2xvZ19pbnZhbGlkX2xldmVsX3dpdGhfcmFpc2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3dhcF9hdHRyKGxvZ2dpbmcsICdyYWlzZUV4Y2VwdGlvbnMnLCBUcnVlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihsb2dnaW5nLCAncmFpc2VFeGNlcHRpb25zJywgVHJ1ZSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9nZ2VyLmxvZywgJzEwJywgJ3Rlc3QgbWVzc2FnZScpCiAKICAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF9ub19yYWlzZShzZWxmKToKLSAgICAgICAgd2l0aCBzd2FwX2F0dHIobG9nZ2luZywgJ3JhaXNlRXhjZXB0aW9ucycsIEZhbHNlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihsb2dnaW5nLCAncmFpc2VFeGNlcHRpb25zJywgRmFsc2UpOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIubG9nKCcxMCcsICd0ZXN0IG1lc3NhZ2UnKSAgIyBubyBleGNlcHRpb24gaGFwcGVucwogCiAgICAgZGVmIHRlc3RfZmluZF9jYWxsZXJfd2l0aF9zdGFja19pbmZvKHNlbGYpOgogICAgICAgICBjYWxsZWQgPSBbXQotICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKLSAgICAgICAgICAgICAgbGFtYmRhIGYsIGZpbGU6IGNhbGxlZC5hcHBlbmQoZmlsZS5nZXR2YWx1ZSgpKSkKKyAgICAgICAgc3VwcG9ydC5wYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKKyAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgZiwgZmlsZTogY2FsbGVkLmFwcGVuZChmaWxlLmdldHZhbHVlKCkpKQogCiAgICAgICAgIHNlbGYubG9nZ2VyLmZpbmRDYWxsZXIoc3RhY2tfaW5mbz1UcnVlKQogCkBAIC0zODk2LDcgKzM5MjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCiAgICAgICAgIHJoLmNsb3NlKCkKIAotICAgIEByZXF1aXJlc196bGliCisgICAgQHN1cHBvcnQucmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JvdGF0b3Ioc2VsZik6CiAgICAgICAgIGRlZiBuYW1lcihuYW1lKToKICAgICAgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKQEAgLTQxMjksMjIgKzQxNTksMjAgQEAKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCiAjIGZpcnN0IGFuZCByZXN0b3JlIGl0IGF0IHRoZSBlbmQuCi1AcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnJykKK0BzdXBwb3J0LnJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwgRGF0YWdyYW1IYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsIENvbmZpZ0RpY3RUZXN0LAotICAgICAgICAgICAgICAgICBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCi0gICAgICAgICAgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwKLSAgICAgICAgICAgICAgICAgQmFzaWNDb25maWdUZXN0LCBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBMYXN0UmVzb3J0VGVzdCwgTG9nUmVjb3JkVGVzdCwgRXhjZXB0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwgTlRFdmVudExvZ0hhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCBVbml4U29ja2V0SGFuZGxlclRlc3QsCi0gICAgICAgICAgICAgICAgIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QKLSAgICAgICAgICAgICAgICApCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LAorICAgICAgICBIYW5kbGVyVGVzdCwgTWVtb3J5SGFuZGxlclRlc3QsIENvbmZpZ0ZpbGVUZXN0LCBTb2NrZXRIYW5kbGVyVGVzdCwKKyAgICAgICAgRGF0YWdyYW1IYW5kbGVyVGVzdCwgTWVtb3J5VGVzdCwgRW5jb2RpbmdUZXN0LCBXYXJuaW5nc1Rlc3QsCisgICAgICAgIENvbmZpZ0RpY3RUZXN0LCBNYW5hZ2VyVGVzdCwgRm9ybWF0dGVyVGVzdCwgQnVmZmVyaW5nRm9ybWF0dGVyVGVzdCwKKyAgICAgICAgU3RyZWFtSGFuZGxlclRlc3QsIExvZ1JlY29yZEZhY3RvcnlUZXN0LCBDaGlsZExvZ2dlclRlc3QsCisgICAgICAgIFF1ZXVlSGFuZGxlclRlc3QsIFNodXRkb3duVGVzdCwgTW9kdWxlTGV2ZWxNaXNjVGVzdCwgQmFzaWNDb25maWdUZXN0LAorICAgICAgICBMb2dnZXJBZGFwdGVyVGVzdCwgTG9nZ2VyVGVzdCwgU01UUEhhbmRsZXJUZXN0LCBGaWxlSGFuZGxlclRlc3QsCisgICAgICAgIFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsCisgICAgICAgIEV4Y2VwdGlvblRlc3QsIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsCisgICAgICAgIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgVW5peFNvY2tldEhhbmRsZXJUZXN0LCBVbml4RGF0YWdyYW1IYW5kbGVyVGVzdCwgVW5peFN5c0xvZ0hhbmRsZXJUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggNWYxNDc5NS4uZTAyNTcxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtNTk5LDggKzU5OSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCiAgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wX18ob3RoZXIpID09IDAKLSAgICAgICAgICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXBfXyhvdGhlcikgIT0gMAogICAgICAgICAgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcF9fKG90aGVyKSA+PSAwCiAgICAgICAgICAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKQEAgLTEyNDMsOCArMTI0MSw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHZhbHVlID4+IHNoaWZ0KSwgaW50KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChMb25nVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nZXhwLnB5CmluZGV4IDFiNDBkMDIuLmY0YzQ2M2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZ2V4cC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmdleHAucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBMb25nRXhwVGV4dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfbG9uZ2V4cChzZWxmKToKQEAgLTcsOCArNiw1IEBACiAgICAgICAgIGwgPSBldmFsKCJbIiArICIyLCIgKiBSRVBTICsgIl0iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgUkVQUykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KExvbmdFeHBUZXh0KQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCAwN2ZhZGJkLi4yZDM5MDk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0xLDQgKzEsNSBAQAotZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24KK2ltcG9ydCBfY29tcHJlc3Npb24KK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KQEAgLTEzNSw2ICsxMzYsOTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCiAKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzX21heHNpemUoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBtYXhfbGVuZ3RoID0gMTAwCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBGZWVkIGZpcnN0IGhhbGYgdGhlIGlucHV0CisgICAgICAgIGxlbl8gPSBsZW4oQ09NUFJFU1NFRF9YWikgLy8gMgorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbOmxlbl9dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9bWF4X2xlbmd0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHpkLm5lZWRzX2lucHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICAjIFJldHJpZXZlIG1vcmUgZGF0YSB3aXRob3V0IHByb3ZpZGluZyBtb3JlIGlucHV0CisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnLCBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5uZWVkc19pbnB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSBtb3JlIGRhdGEgd2hpbGUgcHJvdmlkaW5nIG1vcmUgaW5wdXQKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haW2xlbl86XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPW1heF9sZW5ndGgpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ob3V0Wy0xXSksIG1heF9sZW5ndGgpCisKKyAgICAgICAgIyBSZXRyaWV2ZSByZW1haW5pbmcgdW5jb21wcmVzc2VkIGRhdGEKKyAgICAgICAgd2hpbGUgbm90IGx6ZC5lb2Y6CisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKGInJywgbWF4X2xlbmd0aD1tYXhfbGVuZ3RoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihvdXRbLTFdKSwgbWF4X2xlbmd0aCkKKworICAgICAgICBvdXQgPSBiIiIuam9pbihvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBJTlBVVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuY2hlY2ssIGx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfaW5wdXRidWZfMShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJldXNpbmcgaW5wdXQgYnVmZmVyIGFmdGVyIG1vdmluZyBleGlzdGluZworICAgICAgICAjIGNvbnRlbnRzIHRvIGJlZ2lubmluZworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgaXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzoxMDBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZW5ndGg9MCksIGInJykKKworICAgICAgICAjIFJldHJpZXZlIHNvbWUgcmVzdWx0cywgZnJlZWluZyBjYXBhY2l0eSBhdCBiZWdpbm5pbmcKKyAgICAgICAgIyBvZiBpbnB1dCBidWZmZXIKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhiJycsIDIpKQorCisgICAgICAgICMgQWRkIG1vcmUgZGF0YSB0aGF0IGZpdHMgaW50byBpbnB1dCBidWZmZXIgYWZ0ZXIKKyAgICAgICAgIyBtb3ZpbmcgZXhpc3RpbmcgZGF0YSB0byBiZWdpbm5pbmcKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzEwMDoxMDVdLCAxNSkpCisKKyAgICAgICAgIyBEZWNvbXByZXNzIHJlc3Qgb2YgZGF0YQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMTA1Ol0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJy5qb2luKG91dCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2lucHV0YnVmXzIoc2VsZik6CisgICAgICAgICMgVGVzdCByZXVzaW5nIGlucHV0IGJ1ZmZlciBieSBhcHBlbmRpbmcgZGF0YSBhdCB0aGUKKyAgICAgICAgIyBlbmQgcmlnaHQgYXdheQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKworICAgICAgICAjIENyZWF0ZSBpbnB1dCBidWZmZXIgYW5kIGVtcHR5IGl0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6MjAwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGVuZ3RoPTApLCBiJycpCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoYicnKSkKKworICAgICAgICAjIEZpbGwgYnVmZmVyIHdpdGggbmV3IGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzIwMDoyODBdLCAyKSkKKworICAgICAgICAjIEFwcGVuZCBzb21lIG1vcmUgZGF0YSwgbm90IGVub3VnaCB0byByZXF1aXJlIHJlc2l6ZQorICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbMjgwOjMwMF0sIDIpKQorCisgICAgICAgICMgRGVjb21wcmVzcyByZXN0IG9mIGRhdGEKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzMwMDpdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbihvdXQpLCBJTlBVVCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9pbnB1dGJ1Zl8zKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmV1c2luZyBpbnB1dCBidWZmZXIgYWZ0ZXIgZXh0ZW5kaW5nIGl0CisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIG91dCA9IFtdCisKKyAgICAgICAgIyBDcmVhdGUgYWxtb3N0IGZ1bGwgaW5wdXQgYnVmZmVyCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWls6MjAwXSwgNSkpCisKKyAgICAgICAgIyBBZGQgZXZlbiBtb3JlIGRhdGEgdG8gaXQsIHJlcXVpcmluZyByZXNpemUKKyAgICAgICAgb3V0LmFwcGVuZChsemQuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haWzIwMDozMDBdLCA1KSkKKworICAgICAgICAjIERlY29tcHJlc3MgcmVzdCBvZiBkYXRhCisgICAgICAgIG91dC5hcHBlbmQobHpkLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWlszMDA6XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4ob3V0KSwgSU5QVVQpCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CiAgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQogICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgpAQCAtNjgxLDEzICs3NzMsMTMgQEAKICAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCiAgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KLSAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQotICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICBzYXZlZF9idWZmZXJfc2l6ZSA9IF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRQorICAgICAgICBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUgPSBsZW4oQ09NUFJFU1NFRF9YWikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiAgNSkpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiA1KQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgbHptYS5fQlVGRkVSX1NJWkUgPSBzYXZlZF9idWZmZXJfc2l6ZQorICAgICAgICAgICAgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFID0gc2F2ZWRfYnVmZmVyX3NpemUKIAogICAgIGRlZiB0ZXN0X3JlYWRfdHJhaWxpbmdfanVuayhzZWxmKToKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0JPR1VTKSkgYXMgZjoKQEAgLTczOCw3ICs4MzAsNyBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5yZWFkLCBmbG9hdCgpKQogCiAgICAgZGVmIHRlc3RfcmVhZF9iYWRfZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQk9HVVMpKSBhcyBmOgpAQCAtODM0LDYgKzkyNiwxNyBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lcykKIAorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKKyAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCisgICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgcHJlc2V0PTYpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKKworICAgICAgICBkZWNvbXAgPSBMWk1BRmlsZShCeXRlc0lPKGJvbWIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCisgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQorCiAgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CiAgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKICAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIpIGFzIGY6CkBAIC05OTksNyArMTEwMiw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWssIDApCiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCwgMykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgOSwgKCkpCisgICAgICAgICAgICAjIGlvLkJ1ZmZlcmVkUmVhZGVyIHJhaXNlcyBUeXBlRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBWYWx1ZUVycm9yKSwgZi5zZWVrLCA5LCAoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5zZWVrLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIGIiZGVycCIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQppbmRleCAyMmY4NDkxLi44MGJlYzdhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CkBAIC0xNDIsNiArMTQyLDggQEAKIGNsYXNzIE1hY0NvbW1vblRlc3QodGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgcGF0aG1vZHVsZSA9IG1hY3BhdGgKIAorICAgIHRlc3RfcmVscGF0aF9lcnJvcnMgPSBOb25lCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQppbmRleCBhNGNkMDljLi4yMmIyZmNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0yMTMsOSArMjEzLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGNhcC5maW5kbWF0Y2goKmNbMF0sICoqY1sxXSksIGNbMl0pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVscGVyRnVuY3Rpb25UZXN0LCBHZXRjYXBzVGVzdCwgRmluZG1hdGNoVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggOTAzZTEyYy4uYzdkZWY5YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMTkzLDcgKzE5Myw3IEBACiAgICAgICAgIGhlYWQgPSBsYXN0ID0gW10KICAgICAgICAgIyBUaGUgbWF4IHN0YWNrIGRlcHRoIHNob3VsZCBtYXRjaCB0aGUgdmFsdWUgaW4gUHl0aG9uL21hcnNoYWwuYy4KICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnIGFuZCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgICAgIE1BWF9NQVJTSEFMX1NUQUNLX0RFUFRIID0gMTUwMAorICAgICAgICAgICAgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggPSAxMDAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCA9IDIwMDAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggLSAyKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCA0OGY4NGJhLi42YzdiOTlkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC0xNzUsNiArMTc1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgZmxhZ3MKICAgICAgICAgICAgICAgICAgICkKIAorIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KK2NsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6CkBAIC00MjIsOSArNDMwLDE3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZmFjdG9yaWFsKGkpLCBweV9mYWN0b3JpYWwoaSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguZmFjdG9yaWFsLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xLjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguZmFjdG9yaWFsLCAtMTAqKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIC0xZTEwMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5mYWN0b3JpYWwsIG1hdGgucGkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1hdGguZmFjdG9yaWFsLCBzeXMubWF4c2l6ZSsxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMTBlMTAwKQorCisgICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IHBsYWNlIGRpZmZlcmVudCB1cHBlciBib3VuZHMuCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RGYWN0b3JpYWxIdWdlSW5wdXRzKHNlbGYpOgorICAgICAgICAjIEN1cnJlbnRseSByYWlzZXMgVmFsdWVFcnJvciBmb3IgaW5wdXRzIHRoYXQgYXJlIHRvbyBsYXJnZQorICAgICAgICAjIHRvIGZpdCBpbnRvIGEgQyBsb25nLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmZhY3RvcmlhbCwgMTAqKjEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5mYWN0b3JpYWwsIDFlMTAwKQogCiAgICAgZGVmIHRlc3RGbG9vcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZsb29yKQpAQCAtNTg3LDYgKzYwMyw0OSBAQAogICAgICAgICAgICAgcyA9IG1zdW0odmFscykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXN1bSh2YWxzKSwgbWF0aC5mc3VtKHZhbHMpKQogCisgICAgZGVmIHRlc3RHY2Qoc2VsZik6CisgICAgICAgIGdjZCA9IG1hdGguZ2NkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKDAsIDApLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxLCAwKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLTEsIDApLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgwLCAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMCwgLTEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg3LCAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoNywgLTEpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtMjMsIDE1KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoMTIwLCA4NCksIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCg4NCwgLTEyMCksIDEyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgxMjE2MzQyNjgzNTU3NjAxNTM1NTA2MzExNzEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MzY1MjI2ODE4NDkxMTAxMjQ2MTY0NTg3ODQpLCAzMikKKyAgICAgICAgYyA9IDY1MjU2MAorICAgICAgICB4ID0gNDM0NjEwNDU2NTcwMzk5OTAyMzc4ODgwNjc5MjMzMDk4ODE5MDE5ODUzMjI5NDcwMjg2OTk0MzY3ODM2NjAwNTY2CisgICAgICAgIHkgPSAxMDY0NTAyMjQ1ODI1MTE1MzI3NzU0ODQ3MjQ0OTE0OTIxNTUzOTc3CisgICAgICAgIGEgPSB4ICogYworICAgICAgICBiID0geSAqIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYSwgYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGIsIGEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYSwgYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKGIsIC1hKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYSwgLWIpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZCgtYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCAtYSksIGMpCisgICAgICAgIGMgPSA1NzY1NTkyMzA4NzE2NTQ5NTk4MTYxMzA1NTE4ODQ4NTY5MTIwMDMxNDE0NDY3ODE2NDY2MDI3OTAyMTY0MDY4NzQKKyAgICAgICAgYSA9IHggKiBjCisgICAgICAgIGIgPSB5ICogYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgYSksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1hLCBiKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoYiwgLWEpLCBjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChhLCAtYiksIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2NkKC1iLCBhKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWEsIC1iKSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnY2QoLWIsIC1hKSwgYykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdjZCwgMTIwLjAsIDg0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdjZCwgMTIwLCA4NC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdjZChNeUluZGV4YWJsZSgxMjApLCBNeUluZGV4YWJsZSg4NCkpLCAxMikKKwogICAgIGRlZiB0ZXN0SHlwb3Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5oeXBvdCkKICAgICAgICAgc2VsZi5mdGVzdCgnaHlwb3QoMCwwKScsIG1hdGguaHlwb3QoMCwwKSwgMCkKQEAgLTk3NSw2ICsxMDM0LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc2luZigwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc2luZigxLikpCiAKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICBkZWYgdGVzdF9uYW5fY29uc3RhbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgubmFuKSkKKworICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2luZl9jb25zdGFudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNpbmYobWF0aC5pbmYpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobWF0aC5pbmYsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmluZiwgZmxvYXQoImluZiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC1tYXRoLmluZiwgZmxvYXQoIi1pbmYiKSkKKwogICAgICMgUkVEX0ZMQUcgMTYtT2N0LTIwMDAgVGltCiAgICAgIyBXaGlsZSAyLjAgaXMgbW9yZSBjb25zaXN0ZW50IGFib3V0IGV4Y2VwdGlvbnMgdGhhbiBwcmV2aW91cyByZWxlYXNlcywgaXQKICAgICAjIHN0aWxsIGZhaWxzIHRoaXMgcGFydCBvZiB0aGUgdGVzdCBvbiBzb21lIHBsYXRmb3Jtcy4gIEZvciBub3csIHdlIG9ubHkKQEAgLTEwOTYsMTAgKzExNjYsMTMxIEBACiAgICAgICAgICAgICAgICAgICAgICAgJ1xuICAnLmpvaW4oZmFpbHVyZXMpKQogCiAKK2NsYXNzIElzQ2xvc2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaXNjbG9zZSA9IG1hdGguaXNjbG9zZSAjIHN1YmxjYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMKKworICAgIGRlZiBhc3NlcnRJc0Nsb3NlKHNlbGYsIGEsIGIsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlzY2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iJXMgYW5kICVzIHNob3VsZCBiZSBjbG9zZSEiICUgKGEsIGIpKQorCisgICAgZGVmIGFzc2VydElzTm90Q2xvc2Uoc2VsZiwgYSwgYiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlzY2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9IiVzIGFuZCAlcyBzaG91bGQgbm90IGJlIGNsb3NlISIgJSAoYSwgYikpCisKKyAgICBkZWYgYXNzZXJ0QWxsQ2xvc2Uoc2VsZiwgZXhhbXBsZXMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGZvciBhLCBiIGluIGV4YW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKGEsIGIsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhc3NlcnRBbGxOb3RDbG9zZShzZWxmLCBleGFtcGxlcywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgZm9yIGEsIGIgaW4gZXhhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Q2xvc2UoYSwgYiwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfdG9sZXJhbmNlcyhzZWxmKToKKyAgICAgICAgIyBWYWx1ZUVycm9yIHNob3VsZCBiZSByYWlzZWQgaWYgZWl0aGVyIHRvbGVyYW5jZSBpcyBsZXNzIHRoYW4gemVybworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKDEsIDEsIHJlbF90b2w9LTFlLTEwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNDbG9zZSgxLCAxLCByZWxfdG9sPTFlLTEwMCwgYWJzX3RvbD0tMWUxMCkKKworICAgIGRlZiB0ZXN0X2lkZW50aWNhbChzZWxmKToKKyAgICAgICAgIyBpZGVudGljYWwgdmFsdWVzIG11c3QgdGVzdCBhcyBjbG9zZQorICAgICAgICBpZGVudGljYWxfZXhhbXBsZXMgPSBbKDIuMCwgMi4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjFlMjAwLCAwLjFlMjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLjEyM2UtMzAwLCAxLjEyM2UtMzAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjM0NSwgMTIzNDUuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMC4wLCAtMC4wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzNDU2NzgsIDM0NTY3OCldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoaWRlbnRpY2FsX2V4YW1wbGVzLCByZWxfdG9sPTAuMCwgYWJzX3RvbD0wLjApCisKKyAgICBkZWYgdGVzdF9laWdodF9kZWNpbWFsX3BsYWNlcyhzZWxmKToKKyAgICAgICAgIyBleGFtcGxlcyB0aGF0IGFyZSBjbG9zZSB0byAxZS04LCBidXQgbm90IDFlLTkKKyAgICAgICAgZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMgPSBbKDFlOCwgMWU4ICsgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtOCwgLTEuMDAwMDAwMDA5ZS04KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMTIzNDU2NzgsIDEuMTIzNDU2NzkpXQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGVpZ2h0X2RlY2ltYWxfcGxhY2VzX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoZWlnaHRfZGVjaW1hbF9wbGFjZXNfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworICAgIGRlZiB0ZXN0X25lYXJfemVybyhzZWxmKToKKyAgICAgICAgIyB2YWx1ZXMgY2xvc2UgdG8gemVybworICAgICAgICBuZWFyX3plcm9fZXhhbXBsZXMgPSBbKDFlLTksIDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTFlLTksIDAuMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTFlLTE1MCwgMC4wKV0KKyAgICAgICAgIyB0aGVzZSBzaG91bGQgbm90IGJlIGNsb3NlIHRvIGFueSByZWxfdG9sCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCByZWxfdG9sPTAuOSkKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYmUgY2xvc2UgdG8gYWJzX3RvbD0xZS04CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UobmVhcl96ZXJvX2V4YW1wbGVzLCBhYnNfdG9sPTFlLTgpCisKKyAgICBkZWYgdGVzdF9pZGVudGljYWxfaW5maW5pdGUoc2VsZik6CisgICAgICAgICMgdGhlc2UgYXJlIGNsb3NlIHJlZ2FyZGxlc3Mgb2YgdG9sZXJhbmNlIC0tIGkuZS4gdGhleSBhcmUgZXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKElORiwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoSU5GLCBJTkYsIGFic190b2w9MC4wKQorICAgICAgICBzZWxmLmFzc2VydElzQ2xvc2UoTklORiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0Nsb3NlKE5JTkYsIE5JTkYsIGFic190b2w9MC4wKQorCisgICAgZGVmIHRlc3RfaW5mX25pbmZfbmFuKHNlbGYpOgorICAgICAgICAjIHRoZXNlIHNob3VsZCBuZXZlciBiZSBjbG9zZSAoZm9sbG93aW5nIElFRUUgNzU0IHJ1bGVzIGZvciBlcXVhbGl0eSkKKyAgICAgICAgbm90X2Nsb3NlX2V4YW1wbGVzID0gWyhOQU4sIE5BTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkFOLCAxZS0xMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDFlLTEwMCwgTkFOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIE5BTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkFOLCBJTkYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElORiwgTklORiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5GLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMCwgSU5GKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTkYsIDFlMzA4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxZTMwOCwgSU5GKV0KKyAgICAgICAgIyB1c2UgbGFyZ2VzdCByZWFzb25hYmxlIHRvbGVyYW5jZQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKG5vdF9jbG9zZV9leGFtcGxlcywgYWJzX3RvbD0wLjk5OTk5OTk5OTk5OTk5OSkKKworICAgIGRlZiB0ZXN0X3plcm9fdG9sZXJhbmNlKHNlbGYpOgorICAgICAgICAjIHRlc3Qgd2l0aCB6ZXJvIHRvbGVyYW5jZQorICAgICAgICB6ZXJvX3RvbGVyYW5jZV9jbG9zZV9leGFtcGxlcyA9IFsoMS4wLCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuNCwgLTMuNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMWUtMzAwLCAtMWUtMzAwKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZSh6ZXJvX3RvbGVyYW5jZV9jbG9zZV9leGFtcGxlcywgcmVsX3RvbD0wLjApCisKKyAgICAgICAgemVyb190b2xlcmFuY2Vfbm90X2Nsb3NlX2V4YW1wbGVzID0gWygxLjAsIDEuMDAwMDAwMDAwMDAwMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjk5OTk5OTk5OTk5OTk5LCAxLjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEuMGUyMDAsIC45OTk5OTk5OTk5OTk5OTllMjAwKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZSh6ZXJvX3RvbGVyYW5jZV9ub3RfY2xvc2VfZXhhbXBsZXMsIHJlbF90b2w9MC4wKQorCisgICAgZGVmIHRlc3RfYXNzeW1ldHJ5KHNlbGYpOgorICAgICAgICAjIHRlc3QgdGhlIGFzc3ltZXRyeSBleGFtcGxlIGZyb20gUEVQIDQ4NQorICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKFsoOSwgMTApLCAoMTAsIDkpXSwgcmVsX3RvbD0wLjEpCisKKyAgICBkZWYgdGVzdF9pbnRlZ2VycyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgaW50ZWdlcl9leGFtcGxlcyA9IFsoMTAwMDAwMDAxLCAxMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMjM0NTY3ODksIDEyMzQ1Njc4OCldCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShpbnRlZ2VyX2V4YW1wbGVzLCByZWxfdG9sPTFlLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsTm90Q2xvc2UoaW50ZWdlcl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQorCisgICAgZGVmIHRlc3RfZGVjaW1hbHMoc2VsZik6CisgICAgICAgICMgdGVzdCB3aXRoIERlY2ltYWwgdmFsdWVzCisgICAgICAgIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAorCisgICAgICAgIGRlY2ltYWxfZXhhbXBsZXMgPSBbKERlY2ltYWwoJzEuMDAwMDAwMDEnKSwgRGVjaW1hbCgnMS4wJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0yMCcpLCBEZWNpbWFsKCcxLjBlLTIwJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSldCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS04KQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKKworICAgIGRlZiB0ZXN0X2ZyYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IHdpdGggRnJhY3Rpb24gdmFsdWVzCisgICAgICAgIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgorCisgICAgICAgICMgY291bGQgdXNlIHNvbWUgbW9yZSBleGFtcGxlcyBoZXJlIQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsoRnJhY3Rpb24oMSwgMTAwMDAwMDAwKSArIDEsIEZyYWN0aW9uKDEpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS04KQorICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gZG9jdGVzdCBpbXBvcnQgRG9jRmlsZVN1aXRlCiAgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QubWFrZVN1aXRlKE1hdGhUZXN0cykpCisgICAgc3VpdGUuYWRkVGVzdCh1bml0dGVzdC5tYWtlU3VpdGUoSXNDbG9zZVRlc3RzKSkKICAgICBzdWl0ZS5hZGRUZXN0KERvY0ZpbGVTdWl0ZSgiaWVlZTc1NC50eHQiKSkKICAgICBydW5fdW5pdHRlc3Qoc3VpdGUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CmluZGV4IDdjZTk1YjkuLjQ0ZDY2YzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IF9weWlvIGFzIHB5aW8KIGltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKIAogY2xhc3MgTWVtb3J5U2Vla1Rlc3RNaXhpbjoKIApAQCAtMTY1LDYgKzE2NiwxMCBAQAogICAgICAgICBtZW1pby5zZWVrKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZChOb25lKSwgYnVmKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbWlvLnJlYWQsICcnKQorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkKDEpLCBzZWxmLkVPRikKKyAgICAgICAgbWVtaW8uc2VlayhsZW4oYnVmKSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZCgpLCBzZWxmLkVPRikKICAgICAgICAgbWVtaW8uY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZW1pby5yZWFkKQogCkBAIC0xODQsNiArMTg5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkbGluZSgtMSksIGJ1ZikKICAgICAgICAgbWVtaW8uc2VlaygwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbWlvLnJlYWRsaW5lKDApLCBzZWxmLkVPRikKKyAgICAgICAgIyBJc3N1ZSAjMjQ5ODk6IEJ1ZmZlciBvdmVycmVhZAorICAgICAgICBtZW1pby5zZWVrKGxlbihidWYpICogMiArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZGxpbmUoKSwgc2VsZi5FT0YpCiAKICAgICAgICAgYnVmID0gc2VsZi5idWZ0eXBlKCIxMjM0NTY3ODkwXG4iKQogICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcygoYnVmICogMylbOi0xXSkKQEAgLTIxNiw2ICsyMjQsOSBAQAogICAgICAgICBtZW1pby5zZWVrKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtaW8ucmVhZGxpbmVzKE5vbmUpLCBbYnVmXSAqIDEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1lbWlvLnJlYWRsaW5lcywgJycpCisgICAgICAgICMgSXNzdWUgIzI0OTg5OiBCdWZmZXIgb3ZlcnJlYWQKKyAgICAgICAgbWVtaW8uc2VlayhsZW4oYnVmKSAqIDEwICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1pby5yZWFkbGluZXMoKSwgW10pCiAgICAgICAgIG1lbWlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtaW8ucmVhZGxpbmVzKQogCkBAIC0yMzcsNiArMjQ4LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgYnVmKQogICAgICAgICAgICAgaSArPSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgMTApCisgICAgICAgICMgSXNzdWUgIzI0OTg5OiBCdWZmZXIgb3ZlcnJlYWQKKyAgICAgICAgbWVtaW8uc2VlayhsZW4oYnVmKSAqIDEwICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1lbWlvKSwgW10pCiAgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGJ1ZiAqIDIpCiAgICAgICAgIG1lbWlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtaW8uX19uZXh0X18pCkBAIC03MTgsMTIgKzczMiw1NiBAQAogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJ1Aybk4yUG4nKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJ1AybjJQbicpCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmplY3QuX19zaXplb2ZfXyhpby5CeXRlc0lPKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2soaW8uQnl0ZXNJTygpLCBiYXNlc2l6ZSApCi0gICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oYidhJyksIGJhc2VzaXplICsgMSArIDEgKQotICAgICAgICBjaGVjayhpby5CeXRlc0lPKGInYScgKiAxMDAwKSwgYmFzZXNpemUgKyAxMDAwICsgMSApCisgICAgICAgIGNoZWNrKGlvLkJ5dGVzSU8oYidhJyAqIDEwMDApLCBiYXNlc2l6ZSArIHN5cy5nZXRzaXplb2YoYidhJyAqIDEwMDApKQorCisgICAgIyBWYXJpb3VzIHRlc3RzIG9mIGNvcHktb24td3JpdGUgYmVoYXZpb3VyIGZvciBCeXRlc0lPLgorCisgICAgZGVmIF90ZXN0X2Nvd19tdXRhdGlvbihzZWxmLCBtdXRhdGlvbik6CisgICAgICAgICMgQ29tbW9uIGNvZGUgZm9yIGFsbCBCeXRlc0lPIGNvcHktb24td3JpdGUgbXV0YXRpb24gdGVzdHMuCisgICAgICAgIGltbSA9IGInICcgKiAxMDI0CisgICAgICAgIG9sZF9yYyA9IHN5cy5nZXRyZWZjb3VudChpbW0pCisgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGltbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoaW1tKSwgb2xkX3JjICsgMSkKKyAgICAgICAgbXV0YXRpb24obWVtaW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KGltbSksIG9sZF9yYykKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2Nvd190cnVuY2F0ZShzZWxmKToKKyAgICAgICAgIyBFbnN1cmUgdHJ1bmNhdGUgY2F1c2VzIGEgY29weS4KKyAgICAgICAgZGVmIG11dGF0aW9uKG1lbWlvKToKKyAgICAgICAgICAgIG1lbWlvLnRydW5jYXRlKDEpCisgICAgICAgIHNlbGYuX3Rlc3RfY293X211dGF0aW9uKG11dGF0aW9uKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY293X3dyaXRlKHNlbGYpOgorICAgICAgICAjIEVuc3VyZSB3cml0ZSB0aGF0IHdvdWxkIG5vdCBjYXVzZSBhIHJlc2l6ZSBzdGlsbCByZXN1bHRzIGluIGEgY29weS4KKyAgICAgICAgZGVmIG11dGF0aW9uKG1lbWlvKToKKyAgICAgICAgICAgIG1lbWlvLnNlZWsoMCkKKyAgICAgICAgICAgIG1lbWlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5fdGVzdF9jb3dfbXV0YXRpb24obXV0YXRpb24pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb3dfc2V0c3RhdGUoc2VsZik6CisgICAgICAgICMgX19zZXRzdGF0ZV9fIHNob3VsZCBjYXVzZSBidWZmZXIgdG8gYmUgcmVsZWFzZWQuCisgICAgICAgIG1lbWlvID0gc2VsZi5pb2NsYXNzKGInZm9vb29vbycpCisgICAgICAgIHN0YXRlID0gbWVtaW8uX19nZXRzdGF0ZV9fKCkKKyAgICAgICAgZGVmIG11dGF0aW9uKG1lbWlvKToKKyAgICAgICAgICAgIG1lbWlvLl9fc2V0c3RhdGVfXyhzdGF0ZSkKKyAgICAgICAgc2VsZi5fdGVzdF9jb3dfbXV0YXRpb24obXV0YXRpb24pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jb3dfbXV0YWJsZShzZWxmKToKKyAgICAgICAgIyBCeXRlc0lPIHNob3VsZCBhY2NlcHQgb25seSBCeXRlcyBmb3IgY29weS1vbi13cml0ZSBzaGFyaW5nLCBzaW5jZQorICAgICAgICAjIGFyYml0cmFyeSBidWZmZXItZXhwb3J0aW5nIG9iamVjdHMgbGlrZSBieXRlYXJyYXkoKSBhcmVuJ3QgZ3VhcmFudGVlZAorICAgICAgICAjIHRvIGJlIGltbXV0YWJsZS4KKyAgICAgICAgYmEgPSBieXRlYXJyYXkoMTAyNCkKKyAgICAgICAgb2xkX3JjID0gc3lzLmdldHJlZmNvdW50KGJhKQorICAgICAgICBtZW1pbyA9IHNlbGYuaW9jbGFzcyhiYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoYmEpLCBvbGRfcmMpCiAKIGNsYXNzIENTdHJpbmdJT1Rlc3QoUHlTdHJpbmdJT1Rlc3QpOgogICAgIGlvY2xhc3MgPSBpby5TdHJpbmdJTwpAQCAtNzgzLDEwICs4NDEsNSBAQAogICAgICAgICAgICAgcGFzcwogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtQeUJ5dGVzSU9UZXN0LCBQeVN0cmluZ0lPVGVzdCwgQ0J5dGVzSU9UZXN0LCBDU3RyaW5nSU9UZXN0LAotICAgICAgICAgICAgIFB5U3RyaW5nSU9QaWNrbGVUZXN0LCBDU3RyaW5nSU9QaWNrbGVUZXN0XQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5IGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CmluZGV4IDRiYzMxMzMuLmRhMDFhODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKQEAgLTM2OSwxMiArMzY5LDEyIEBACiAgICAgICAgIGQgPSBtZW1vcnl2aWV3KGIpCiAKICAgICAgICAgZGVsIGIKLSAKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNbMF0sIDI1NikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWzBdLCAyNTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mb3JtYXQsICJIIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmZvcm1hdCwgIkgiKQotIAorCiAgICAgICAgIF8gPSBtLmNhc3QoJ0knKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNbMF0sIDI1NikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWzBdLCAyNTYpCkBAIC00OTIsOCArNDkyLDI2IEBACiAgICAgcGFzcwogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQorY2xhc3MgT3RoZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jdHlwZXNfY2FzdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNTk0NDogQWxsb3cgYWxsIHNvdXJjZSBmb3JtYXRzIHdoZW4gY2FzdGluZyB0byBieXRlcy4KKyAgICAgICAgY3R5cGVzID0gdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoImN0eXBlcyIpCisgICAgICAgIHA2ID0gYnl0ZXMoY3R5cGVzLmNfZG91YmxlKDAuNikpCisKKyAgICAgICAgZCA9IGN0eXBlcy5jX2RvdWJsZSgpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGQpLmNhc3QoIkIiKQorICAgICAgICBtWzoyXSA9IHA2WzoyXQorICAgICAgICBtWzI6XSA9IHA2WzI6XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQudmFsdWUsIDAuNikKKworICAgICAgICBmb3IgZm9ybWF0IGluICJCYmMiOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZm9ybWF0KToKKyAgICAgICAgICAgICAgICBkID0gY3R5cGVzLmNfZG91YmxlKCkKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhkKS5jYXN0KGZvcm1hdCkKKyAgICAgICAgICAgICAgICBtWzoyXSA9IG1lbW9yeXZpZXcocDYpLmNhc3QoZm9ybWF0KVs6Ml0KKyAgICAgICAgICAgICAgICBtWzI6XSA9IG1lbW9yeXZpZXcocDYpLmNhc3QoZm9ybWF0KVsyOl0KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQudmFsdWUsIDAuNikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CmluZGV4IDBiNTMwMzIuLjY4NTY1OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CkBAIC0xMDEsMTEgKzEwMSw1IEBACiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UuanBnIiksICgiaW1hZ2UvanBlZyIsIE5vbmUpKQogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLnBuZyIpLCAoImltYWdlL3BuZyIsIE5vbmUpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWltZVR5cGVzVGVzdENhc2UsCi0gICAgICAgIFdpbjMyTWltZVR5cGVzVGVzdENhc2UKLSAgICAgICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQppbmRleCAwNWRmNmU5Li5lOGNhNDk3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CkBAIC0xLDcgKzEsNyBAQAogIyB0ZXN0IGZvciB4bWwuZG9tLm1pbmlkb20KIAogaW1wb3J0IHBpY2tsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB4bWwuZG9tLm1pbmlkb20KQEAgLTQ5LDYgKzQ5LDIxIEBACiAgICAgICAgIHQgPSBub2RlLndob2xlVGV4dAogICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXIsIGZvdW5kICVyIiAlIChzLCB0KSkKIAorICAgIGRlZiB0ZXN0RG9jdW1lbnRBc3luY0F0dHIoc2VsZik6CisgICAgICAgIGRvYyA9IERvY3VtZW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkb2MuYXN5bmNfKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihkb2MsICdhc3luYycsIFRydWUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNldGF0dHIoZG9jLCAnYXN5bmMnLCBUcnVlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnZXRhdHRyKGRvYywgJ2FzeW5jJywgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9jLmFzeW5jXykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKERvY3VtZW50LmFzeW5jXykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoRG9jdW1lbnQsICdhc3luYycsIFRydWUpKQorCiAgICAgZGVmIHRlc3RQYXJzZUZyb21CaW5hcnlGaWxlKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4odHN0ZmlsZSwgJ3JiJykgYXMgZmlsZToKICAgICAgICAgICAgIGRvbSA9IHBhcnNlKGZpbGUpCkBAIC0xNTQ1LDggKzE1NjAsNSBAQAogICAgICAgICBwaSA9IGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInkiLCAieiIpCiAgICAgICAgIHBpLm5vZGVWYWx1ZSA9ICJjcmFzaCIKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChNaW5pZG9tVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IGFkOTNhNTkuLjBmMjU3NDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTI4Miw2ICsyODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChiJ29uZScsIDEpLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChiJ29uZScsIDEsIC0xKSwgOCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZpbmQoYidvbmUnLCAxLCAtMiksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZmluZChieXRlYXJyYXkoYidvbmUnKSksIDApCiAKIAogICAgIGRlZiB0ZXN0X3JmaW5kKHNlbGYpOgpAQCAtMzAwLDYgKzMwMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZmluZChiJ29uZScsIDAsIC0yKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJmaW5kKGInb25lJywgMSwgLTEpLCA4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmZpbmQoYidvbmUnLCAxLCAtMiksIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmZpbmQoYnl0ZWFycmF5KGInb25lJykpLCA4KQogCiAKICAgICBkZWYgdGVzdF9kb3VibGVfY2xvc2Uoc2VsZik6CkBAIC02MDEsOCArNjAzLDEwIEBACiAgICAgICAgIG0ud3JpdGUoYiJiYXIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udGVsbCgpLCA2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bOl0sIGIiMDEyYmFyNjc4OSIpCi0gICAgICAgIG0uc2Vlayg4KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLndyaXRlLCBiImJhciIpCisgICAgICAgIG0ud3JpdGUoYnl0ZWFycmF5KGIiYmF6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50ZWxsKCksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs6XSwgYiIwMTJiYXJiYXo5IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS53cml0ZSwgYiJiYSIpCiAKICAgICBkZWYgdGVzdF9ub25fYXNjaWlfYnl0ZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKDEyOSwgMjAwLCAyNTUpOiAjID4gMTI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CmluZGV4IDEyMzAyOTMuLjQ4YWIwYjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5CkBAIC0xLDggKzEsOCBAQAogIyBUZXN0IHRoZSBtb2R1bGUgdHlwZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZ2NfY29sbGVjdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBnY19jb2xsZWN0Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAKIGltcG9ydCBzeXMKIE1vZHVsZVR5cGUgPSB0eXBlKHN5cykKQEAgLTMwLDYgKzMwLDIyIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLl9fZG9jX18sIE1vZHVsZVR5cGUuX19kb2NfXykKIAorICAgIGRlZiB0ZXN0X3VuaW50aWFsaXplZF9taXNzaW5nX2dldGF0dHIoc2VsZik6CisgICAgICAgICMgSXNzdWUgODI5NworICAgICAgICAjIHRlc3QgdGhlIHRleHQgaW4gdGhlIEF0dHJpYnV0ZUVycm9yIG9mIGFuIHVuaW5pdGlhbGl6ZWQgbW9kdWxlCisgICAgICAgIGZvbyA9IE1vZHVsZVR5cGUuX19uZXdfXyhNb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCAibW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgJ25vdF9oZXJlJyIsCisgICAgICAgICAgICAgICAgZ2V0YXR0ciwgZm9vLCAibm90X2hlcmUiKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19nZXRhdHRyKHNlbGYpOgorICAgICAgICAjIElzc3VlIDgyOTcKKyAgICAgICAgIyB0ZXN0IHRoZSB0ZXh0IGluIHRoZSBBdHRyaWJ1dGVFcnJvcgorICAgICAgICBmb28gPSBNb2R1bGVUeXBlKCJmb28iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCAibW9kdWxlICdmb28nIGhhcyBubyBhdHRyaWJ1dGUgJ25vdF9oZXJlJyIsCisgICAgICAgICAgICAgICAgZ2V0YXR0ciwgZm9vLCAibm90X2hlcmUiKQorCiAgICAgZGVmIHRlc3Rfbm9fZG9jc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJlZ3VsYXJseSBpbml0aWFsaXplZCBtb2R1bGUsIG5vIGRvY3N0cmluZwogICAgICAgICBmb28gPSBNb2R1bGVUeXBlKCJmb28iKQpAQCAtMjExLDEyICsyMjcsMTYgQEAKICAgICAgICAgICAgIGIibGVuID0gbGVuIiwKICAgICAgICAgICAgIGIic2h1dGlsLnJtdHJlZSA9IHJtdHJlZSJ9KQogCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcl9lcnJvcnNfcHJvcG9nYXRlKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcjoKKyAgICAgICAgICAgIGRlZiBfX2dldF9fKHNlbGYsIG8sIHQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBjbGFzcyBNKE1vZHVsZVR5cGUpOgorICAgICAgICAgICAgbWVsb24gPSBEZXNjcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZ2V0YXR0ciwgTSgibXltb2QiKSwgIm1lbG9uIikKKwogICAgICMgZnJvemVuIGFuZCBuYW1lc3BhY2UgbW9kdWxlIHJlcHJzIGFyZSB0ZXN0ZWQgaW4gaW1wb3J0bGliLgogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoTW9kdWxlVGVzdHMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQppbmRleCBjY2RhZWM3Li44ZWYzMzRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQpAQCAtMSw3ICsxLDcgQEAKICIiIiBUZXN0IHN1aXRlIGZvciB0aGUgY29kZSBpbiBtc2lsaWIgIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgaW1wb3J0X21vZHVsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIG1zaWxpYiA9IGltcG9ydF9tb2R1bGUoJ21zaWxpYicpCiAKIGNsYXNzIFRlc3RfbWFrZV9pZCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOSw4ICszOSw1IEBACiAgICAgICAgICAgICBtc2lsaWIubWFrZV9pZCgiLnNceDgybz8qK3J0IiksICJfLnNfb19fX3J0IikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQppbmRleCBkZTVmNzgyLi41MjI3M2VhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKQEAgLTEzLDEwICsxMyw5IEBACiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHB5X2NvbXBpbGUKIAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIsCi0gICAgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKKyAgICBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHNwYXduX3B5dGhvbiwga2lsbF9weXRob24pCiAKICMgTG9vayB1cCB3aGljaCBzdGFydCBtZXRob2RzIGFyZSBhdmFpbGFibGUgdG8gdGVzdAogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwpAQCAtMTU3LDEyICsxNTYsMTIgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0LCBlcnIpCiAKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSkKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX3NjcmlwdF9ub19zdWZmaXgoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdF9zdWZmaXg9VHJ1ZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSkKQEAgLTE3Myw3ICsxNzIsNyBAQAogICAgICAgICAjIGEgd29ya2Fyb3VuZCBmb3IgdGhhdCBjYXNlCiAgICAgICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pcHl0aG9uL2lweXRob24vaXNzdWVzLzQ2OTgKICAgICAgICAgc291cmNlID0gdGVzdF9zb3VyY2VfbWFpbl9za2lwcGVkX2luX2NoaWxkcmVuCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnaXB5dGhvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X25hbWUpCkBAIC0xODMsNyArMTgyLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbm9fc3VmZml4KQogCiAgICAgZGVmIHRlc3Rfc2NyaXB0X2NvbXBpbGVkKHNlbGYpOgotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcpCiAgICAgICAgICAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKQEAgLTE5MiwxNCArMTkxLDE0IEBACiAKICAgICBkZWYgdGVzdF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFpbl9pbl9jaGlsZHJlbl9zb3VyY2UKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsICdfX21haW5fXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zb3VyY2UpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2RpcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9jb21waWxlZChzZWxmKToKICAgICAgICAgc291cmNlID0gc2VsZi5tYWluX2luX2NoaWxkcmVuX3NvdXJjZQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNvdXJjZSkKICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQpAQCAtMjA5LDcgKzIwOCw3IEBACiAKICAgICBkZWYgdGVzdF96aXBmaWxlKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c291cmNlKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIHNjcmlwdF9uYW1lKQpAQCAtMjE3LDcgKzIxNiw3IEBACiAKICAgICBkZWYgdGVzdF96aXBmaWxlX2NvbXBpbGVkKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c291cmNlKQogICAgICAgICAgICAgY29tcGlsZWRfbmFtZSA9IHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQpAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fcGFja2FnZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnY2hlY2tfc2libGluZycpCkBAIC0yMzQsMjAgKzIzMywyMCBAQAogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9zdWJwYWNrYWdlX2luX3ppcGZpbGUoc2VsZik6Ci0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gX21ha2VfdGVzdF96aXBfcGtnKHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsICd0ZXN0X3BrZycsICdzY3JpcHQnLCBkZXB0aD0yKQogICAgICAgICAgICAgbGF1bmNoX25hbWUgPSBfbWFrZV9sYXVuY2hfc2NyaXB0KHNjcmlwdF9kaXIsICdsYXVuY2gnLCAndGVzdF9wa2cudGVzdF9wa2cuc2NyaXB0JywgemlwX25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICBzb3VyY2UgPSBzZWxmLm1haW5faW5fY2hpbGRyZW5fc291cmNlCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQogICAgICAgICAgICAgbWFrZV9wa2cocGtnX2RpcikKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJywKQEAgLTI1Nyw3ICsyNTYsNyBAQAogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9jb21waWxlZChzZWxmKToKICAgICAgICAgc291cmNlID0gc2VsZi5tYWluX2luX2NoaWxkcmVuX3NvdXJjZQotICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHBrZ19kaXIgPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIG1ha2VfcGtnKHBrZ19kaXIpCiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IF9tYWtlX3Rlc3Rfc2NyaXB0KHBrZ19kaXIsICdfX21haW5fXycsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25pcy5weSBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CmluZGV4IGEzYTNjMjYuLjM4N2E0ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CkBAIC0zNiw4ICszNiw1IEBACiAgICAgICAgICAgICBpZiBkb25lOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChOaXNUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CmluZGV4IDVkYWM1ZGIuLjMwZmE2MTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBvcGVuX3VybHJlc291cmNlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgb3Blbl91cmxyZXNvdXJjZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gaHR0cC5jbGllbnQgaW1wb3J0IEhUVFBFeGNlcHRpb24KQEAgLTk3LDggKzk3LDUgQEAKICAgICAgICAgbm9ybWFsaXplKCdORkMnLCAnXHVkNTVjXHVhZTAwJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KE5vcm1hbGl6YXRpb25UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IGRhY2RkZGUuLjU4MGYyMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC0zMzAsNiArMzMwLDc1IEBACiAgICAgICAgIHRlc3RlcignbnRwYXRoLnJlbHBhdGgoIi9hL2IiLCAiL2EvYiIpJywgJy4nKQogICAgICAgICB0ZXN0ZXIoJ250cGF0aC5yZWxwYXRoKCJjOi9mb28iLCAiQzovRk9PIiknLCAnLicpCiAKKyAgICBkZWYgdGVzdF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBkZWYgY2hlY2socGF0aHMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHRlc3RlcigoJ250cGF0aC5jb21tb25wYXRoKCVyKScgJSBwYXRocykucmVwbGFjZSgnXFxcXCcsICdcXCcpLAorICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorICAgICAgICBkZWYgY2hlY2tfZXJyb3IoZXhjLCBwYXRocyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIG50cGF0aC5jb21tb25wYXRoLCBwYXRocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3MuZnNlbmNvZGUocCkgZm9yIHAgaW4gcGF0aHNdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLCBbXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydDOlxcUHJvZ3JhbSBGaWxlcycsICdQcm9ncmFtIEZpbGVzJ10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnQzpcXFByb2dyYW0gRmlsZXMnLCAnQzpQcm9ncmFtIEZpbGVzJ10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsnXFxQcm9ncmFtIEZpbGVzJywgJ1Byb2dyYW0gRmlsZXMnXSkKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWydQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzJ10pCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXMnXSwgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlcyddLCAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFxQcm9ncmFtIEZpbGVzXFwnLCAnQzpcXFByb2dyYW0gRmlsZXMnXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFwnXSwKKyAgICAgICAgICAgICAgJ0M6XFxQcm9ncmFtIEZpbGVzJykKKyAgICAgICAgY2hlY2soWydDOlxcXFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxcXCddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ0M6XFwuXFxQcm9ncmFtIEZpbGVzJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFwuJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXCcsICdDOlxcYmluJ10sICdDOlxcJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcYmluJ10sICdDOlxcJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcQmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXNcXEZvbycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcQmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2plY3RzJ10sICdDOlxcJykKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcJywgJ0M6XFxQcm9qZWN0cyddLCAnQzpcXCcpCisKKyAgICAgICAgY2hlY2soWydDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJywgJ0M6L1Byb2dyYW0gRmlsZXMvQmFyJ10sCisgICAgICAgICAgICAgICdDOlxcUHJvZ3JhbSBGaWxlcycpCisgICAgICAgIGNoZWNrKFsnQzpcXFByb2dyYW0gRmlsZXNcXEZvbycsICdjOi9wcm9ncmFtIGZpbGVzL2JhciddLAorICAgICAgICAgICAgICAnQzpcXFByb2dyYW0gRmlsZXMnKQorICAgICAgICBjaGVjayhbJ2M6L3Byb2dyYW0gZmlsZXMvYmFyJywgJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nXSwKKyAgICAgICAgICAgICAgJ2M6XFxwcm9ncmFtIGZpbGVzJykKKworICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJ0M6XFxQcm9ncmFtIEZpbGVzJywgJ0Q6XFxQcm9ncmFtIEZpbGVzJ10pCisKKyAgICAgICAgY2hlY2soWydzcGFtJ10sICdzcGFtJykKKyAgICAgICAgY2hlY2soWydzcGFtJywgJ3NwYW0nXSwgJ3NwYW0nKQorICAgICAgICBjaGVjayhbJ3NwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmRcXGphbScsICdhbmRcXHNwYW0nXSwgJ2FuZCcpCisgICAgICAgIGNoZWNrKFsnYW5kXFxcXGphbScsICdhbmRcXHNwYW1cXFxcJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZFxcLlxcamFtJywgJy5cXGFuZFxcc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmRcXGphbScsICdhbmRcXHNwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmRcXGphbScsICdhbmRcXHNwYW0nLCAnYW5kJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ0M6YW5kXFxqYW0nLCAnQzphbmRcXHNwYW0nXSwgJ0M6YW5kJykKKworICAgICAgICBjaGVjayhbJyddLCAnJykKKyAgICAgICAgY2hlY2soWycnLCAnc3BhbVxcYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2tfZXJyb3IoVmFsdWVFcnJvciwgWycnLCAnXFxzcGFtXFxhbG90J10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InQzpcXFByb2dyYW0gRmlsZXMnLCAnQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG50cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYidDOlxcUHJvZ3JhbSBGaWxlcycsICdQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InUHJvZ3JhbSBGaWxlcycsICdDOlxcUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQzpcXFByb2dyYW0gRmlsZXMnLCBiJ0M6XFxQcm9ncmFtIEZpbGVzXFxGb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBudHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydDOlxcUHJvZ3JhbSBGaWxlcycsIGInUHJvZ3JhbSBGaWxlc1xcRm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbnRwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnUHJvZ3JhbSBGaWxlcycsIGInQzpcXFByb2dyYW0gRmlsZXNcXEZvbyddKQorCiAgICAgZGVmIHRlc3Rfc2FtZW9wZW5maWxlKHNlbGYpOgogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoKSBhcyB0ZjEsIFRlbXBvcmFyeUZpbGUoKSBhcyB0ZjI6CiAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2FtZSBmaWxlIGlzIHJlYWxseSB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CmluZGV4IDM0MjNkNGUuLmM1NGRlZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IHN5cwogaW1wb3J0IG9wZXJhdG9yCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbCBhcyBECiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24gYXMgRgpAQCAtMTk5LDggKzE5OCw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgdiwgeikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEhhc2hUZXN0LCBDb21wYXJpc29uVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CmluZGV4IGY1MTBiYWMuLjZlZjkzZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKQEAgLTEsNiArMSw1IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDIsIG9wY29kZXMKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIE9wY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTA1LDggKzEwNCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlTdHJpbmcoKSAlIDMsIDQyKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoT3Bjb2RlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9vcGVucHR5LnB5CmluZGV4IDQ3ODUxMDcuLjNmNDZhNjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlbnB0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wZW5wdHkucHkKQEAgLTEsNyArMSw2IEBACiAjIFRlc3QgdG8gc2VlIGlmIG9wZW5wdHkgd29ya3MuIChCdXQgZG9uJ3Qgd29ycnkgaWYgaXQgaXNuJ3QgYXZhaWxhYmxlLikKIAogaW1wb3J0IG9zLCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBpZiBub3QgaGFzYXR0cihvcywgIm9wZW5wdHkiKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib3Mub3BlbnB0eSgpIG5vdCBhdmFpbGFibGUuIikKQEAgLTE4LDggKzE3LDUgQEAKICAgICAgICAgb3Mud3JpdGUoc2xhdmUsIGInUGluZyEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQobWFzdGVyLCAxMDI0KSwgYidQaW5nIScpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoT3BlbnB0eVRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGFiNThhOTguLmRhOWM4ZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMSw0ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMjAzLDYgKzIwNSwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm11bCwgTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm11bCg1LCAyKSA9PSAxMCkKIAorICAgIGRlZiB0ZXN0X21hdG11bChzZWxmKToKKyAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1hdG11bCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tYXRtdWwsIDQyLCA0MikKKyAgICAgICAgY2xhc3MgTToKKyAgICAgICAgICAgIGRlZiBfX21hdG11bF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgLSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTSgpIEAgNDIsIDQxKQorCiAgICAgZGVmIHRlc3RfbmVnKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubmVnKQpAQCAtMzg3LDYgKzM5OCw3IEBACiAgICAgZGVmIHRlc3RfbWV0aG9kY2FsbGVyKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubWV0aG9kY2FsbGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1ldGhvZGNhbGxlciwgMTIpCiAgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBkZWYgZm9vKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWzBdICsgYXJnc1sxXQpAQCAtNDE2LDYgKzQyOCw3IEBACiAgICAgICAgICAgICBkZWYgX19pbHNoaWZ0X18gIChzZWxmLCBvdGhlcik6IHJldHVybiAiaWxzaGlmdCIKICAgICAgICAgICAgIGRlZiBfX2ltb2RfXyAgICAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpbW9kIgogICAgICAgICAgICAgZGVmIF9faW11bF9fICAgICAoc2VsZiwgb3RoZXIpOiByZXR1cm4gImltdWwiCisgICAgICAgICAgICBkZWYgX19pbWF0bXVsX18gIChzZWxmLCBvdGhlcik6IHJldHVybiAiaW1hdG11bCIKICAgICAgICAgICAgIGRlZiBfX2lvcl9fICAgICAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpb3IiCiAgICAgICAgICAgICBkZWYgX19pcG93X18gICAgIChzZWxmLCBvdGhlcik6IHJldHVybiAiaXBvdyIKICAgICAgICAgICAgIGRlZiBfX2lyc2hpZnRfXyAgKHNlbGYsIG90aGVyKTogcmV0dXJuICJpcnNoaWZ0IgpAQCAtNDMwLDYgKzQ0Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaWxzaGlmdCAgKGMsIDUpLCAiaWxzaGlmdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW1vZCAgICAgKGMsIDUpLCAiaW1vZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW11bCAgICAgKGMsIDUpLCAiaW11bCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW1hdG11bCAgKGMsIDUpLCAiaW1hdG11bCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW9yICAgICAgKGMsIDUpLCAiaW9yIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pcG93ICAgICAoYywgNSksICJpcG93IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pcnNoaWZ0ICAoYywgNSksICJpcnNoaWZ0IikKQEAgLTQ4MCw1ICs0OTQsMTA3IEBACiBjbGFzcyBDT3BlcmF0b3JUZXN0Q2FzZShPcGVyYXRvclRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY19vcGVyYXRvcgogCisKK2NsYXNzIE9wZXJhdG9yUGlja2xlVGVzdENhc2U6CisgICAgZGVmIGNvcHkoc2VsZiwgb2JqLCBwcm90byk6CisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2l0ZW0oc3lzLm1vZHVsZXMsICdvcGVyYXRvcicsIHNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIHBpY2tsZWQgPSBwaWNrbGUuZHVtcHMob2JqLCBwcm90bykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShzeXMubW9kdWxlcywgJ29wZXJhdG9yJywgc2VsZi5tb2R1bGUyKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMocGlja2xlZCkKKworICAgIGRlZiB0ZXN0X2F0dHJnZXR0ZXIoc2VsZik6CisgICAgICAgIGF0dHJnZXR0ZXIgPSBzZWxmLm1vZHVsZS5hdHRyZ2V0dGVyCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGEgPSBBKCkKKyAgICAgICAgYS54ID0gJ1gnCisgICAgICAgIGEueSA9ICdZJworICAgICAgICBhLnogPSAnWicKKyAgICAgICAgYS50ID0gQSgpCisgICAgICAgIGEudC51ID0gQSgpCisgICAgICAgIGEudC51LnYgPSAnVicKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6CisgICAgICAgICAgICAgICAgZiA9IGF0dHJnZXR0ZXIoJ3gnKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIG11bHRpcGxlIGdldHMKKyAgICAgICAgICAgICAgICBmID0gYXR0cmdldHRlcigneCcsICd5JywgJ3onKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIHJlY3Vyc2l2ZSBnZXRzCisgICAgICAgICAgICAgICAgZiA9IGF0dHJnZXR0ZXIoJ3QudS52JykKKyAgICAgICAgICAgICAgICBmMiA9IHNlbGYuY29weShmLCBwcm90bykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZjIpLCByZXByKGYpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIoYSksIGYoYSkpCisKKyAgICBkZWYgdGVzdF9pdGVtZ2V0dGVyKHNlbGYpOgorICAgICAgICBpdGVtZ2V0dGVyID0gc2VsZi5tb2R1bGUuaXRlbWdldHRlcgorICAgICAgICBhID0gJ0FCQ0RFJworICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBmID0gaXRlbWdldHRlcigyKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIG11bHRpcGxlIGdldHMKKyAgICAgICAgICAgICAgICBmID0gaXRlbWdldHRlcigyLCAwLCA0KQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKworICAgIGRlZiB0ZXN0X21ldGhvZGNhbGxlcihzZWxmKToKKyAgICAgICAgbWV0aG9kY2FsbGVyID0gc2VsZi5tb2R1bGUubWV0aG9kY2FsbGVyCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWzBdICsgYXJnc1sxXQorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBmPTQyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICAgICAgZGVmIGJheigqYXJncywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4ga3dkc1snbmFtZSddLCBrd2RzWydzZWxmJ10KKyAgICAgICAgYSA9IEEoKQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKKyAgICAgICAgICAgICAgICBmID0gbWV0aG9kY2FsbGVyKCdiYXInKQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICAjIHBvc2l0aW9uYWwgYXJncworICAgICAgICAgICAgICAgIGYgPSBtZXRob2RjYWxsZXIoJ2ZvbycsIDEsIDIpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYyKSwgcmVwcihmKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYyKGEpLCBmKGEpKQorICAgICAgICAgICAgICAgICMga2V5d29yZCBhcmdzCisgICAgICAgICAgICAgICAgZiA9IG1ldGhvZGNhbGxlcignYmFyJywgZj01KQorICAgICAgICAgICAgICAgIGYyID0gc2VsZi5jb3B5KGYsIHByb3RvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmMiksIHJlcHIoZikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKyAgICAgICAgICAgICAgICBmID0gbWV0aG9kY2FsbGVyKCdiYXonLCBzZWxmPSdlZ2dzJywgbmFtZT0nc3BhbScpCisgICAgICAgICAgICAgICAgZjIgPSBzZWxmLmNvcHkoZiwgcHJvdG8pCisgICAgICAgICAgICAgICAgIyBDYW4ndCB0ZXN0IHJlcHIgY29uc2lzdGVudGx5IHdpdGggbXVsdGlwbGUga2V5d29yZCBhcmdzCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMihhKSwgZihhKSkKKworY2xhc3MgUHlQeU9wZXJhdG9yUGlja2xlVGVzdENhc2UoT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IHB5X29wZXJhdG9yCisgICAgbW9kdWxlMiA9IHB5X29wZXJhdG9yCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfb3BlcmF0b3IsICdyZXF1aXJlcyBfb3BlcmF0b3InKQorY2xhc3MgUHlDT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZShPcGVyYXRvclBpY2tsZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbW9kdWxlID0gcHlfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gY19vcGVyYXRvcgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX29wZXJhdG9yLCAncmVxdWlyZXMgX29wZXJhdG9yJykKK2NsYXNzIENQeU9wZXJhdG9yUGlja2xlVGVzdENhc2UoT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IGNfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gcHlfb3BlcmF0b3IKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19vcGVyYXRvciwgJ3JlcXVpcmVzIF9vcGVyYXRvcicpCitjbGFzcyBDQ09wZXJhdG9yUGlja2xlVGVzdENhc2UoT3BlcmF0b3JQaWNrbGVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1vZHVsZSA9IGNfb3BlcmF0b3IKKyAgICBtb2R1bGUyID0gY19vcGVyYXRvcgorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zLnB5IGIvTGliL3Rlc3QvdGVzdF9vcy5weQppbmRleCA1NGRkOWRhMi4uYmI3MTdjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBlcnJubwogaW1wb3J0IGZyYWN0aW9ucworaW1wb3J0IGdldHBhc3MKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBtbWFwCkBAIC00MCw4ICs0MSwzNCBAQAogICAgIGltcG9ydCBmY250bAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfd2luYXBpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3dpbmFwaSA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgZ3JwCisgICAgZ3JvdXBzID0gW2cuZ3JfZ2lkIGZvciBnIGluIGdycC5nZXRncmFsbCgpIGlmIGdldHBhc3MuZ2V0dXNlcigpIGluIGcuZ3JfbWVtXQorICAgIGlmIGhhc2F0dHIob3MsICdnZXRnaWQnKToKKyAgICAgICAgcHJvY2Vzc19naWQgPSBvcy5nZXRnaWQoKQorICAgICAgICBpZiBwcm9jZXNzX2dpZCBub3QgaW4gZ3JvdXBzOgorICAgICAgICAgICAgZ3JvdXBzLmFwcGVuZChwcm9jZXNzX2dpZCkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBncm91cHMgPSBbXQordHJ5OgorICAgIGltcG9ydCBwd2QKKyAgICBhbGxfdXNlcnMgPSBbdS5wd191aWQgZm9yIHUgaW4gcHdkLmdldHB3YWxsKCldCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYWxsX3VzZXJzID0gW10KK3RyeToKKyAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgSU5UX01BWCwgUFlfU1NJWkVfVF9NQVgKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBJTlRfTUFYID0gUFlfU1NJWkVfVF9NQVggPSBzeXMubWF4c2l6ZQogCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworCityb290X2luX3Bvc2l4ID0gRmFsc2UKK2lmIGhhc2F0dHIob3MsICdnZXRldWlkJyk6CisgICAgcm9vdF9pbl9wb3NpeCA9IChvcy5nZXRldWlkKCkgPT0gMCkKIAogIyBEZXRlY3Qgd2hldGhlciB3ZSdyZSBvbiBhIExpbnV4IHN5c3RlbSB0aGF0IHVzZXMgdGhlIChub3cgb3V0ZGF0ZWQKICMgYW5kIHVubWFpbnRhaW5lZCkgbGludXh0aHJlYWRzIHRocmVhZGluZyBsaWJyYXJ5LiAgVGhlcmUncyBhbiBpc3N1ZQpAQCAtMTA2LDYgKzEzMywyNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHMpLCBieXRlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgYiJzcGFtIikKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgICMgU2tpcCB0aGUgdGVzdCBvbiAzMi1iaXQgcGxhdGZvcm1zOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIG11c3QgZml0IGluIGEKKyAgICAjIFB5X3NzaXplX3QgdHlwZQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKElOVF9NQVggPCBQWV9TU0laRV9UX01BWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMgSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYIikKKyAgICBAc3VwcG9ydC5iaWdtZW10ZXN0KHNpemU9SU5UX01BWCArIDEwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBkZWYgdGVzdF9sYXJnZV9yZWFkKHNlbGYsIHNpemUpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoYid0ZXN0JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICAjIElzc3VlICMyMTkzMjogTWFrZSBzdXJlIHRoYXQgb3MucmVhZCgpIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciBmb3Igc2l6ZSBsYXJnZXIgdGhhbiBJTlRfTUFYCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikgYXMgZnA6CisgICAgICAgICAgICBkYXRhID0gb3MucmVhZChmcC5maWxlbm8oKSwgc2l6ZSkKKworICAgICAgICAjIFRoZSB0ZXN0IGRvZXMgbm90IHRyeSB0byByZWFkIG1vcmUgdGhhbiAyIEdCIGF0IG9uY2UgYmVjYXVzZSB0aGUKKyAgICAgICAgIyBvcGVyYXRpbmcgc3lzdGVtIGlzIGZyZWUgdG8gcmV0dXJuIGxlc3MgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYid0ZXN0JykKKwogICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgogICAgICAgICAjIG9zLndyaXRlKCkgYWNjZXB0cyBieXRlcy0gYW5kIGJ1ZmZlci1saWtlIG9iamVjdHMgYnV0IG5vdCBzdHJpbmdzCiAgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19DUkVBVCB8IG9zLk9fV1JPTkxZKQpAQCAtMzYzLDYgKzQxMCwyOCBAQAogICAgICAgICAgICAgb3Muc3RhdChyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQogCisgICAgZGVmIGNoZWNrX2ZpbGVfYXR0cmlidXRlcyhzZWxmLCByZXN1bHQpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihyZXN1bHQsICdzdF9maWxlX2F0dHJpYnV0ZXMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UocmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcywgaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gcmVzdWx0LnN0X2ZpbGVfYXR0cmlidXRlcyA8PSAweEZGRkZGRkZGKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgInN0X2ZpbGVfYXR0cmlidXRlcyBpcyBXaW4zMiBzcGVjaWZpYyIpCisgICAgZGVmIHRlc3RfZmlsZV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICAjIHRlc3QgZmlsZSBzdF9maWxlX2F0dHJpYnV0ZXMgKEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSBub3Qgc2V0KQorICAgICAgICByZXN1bHQgPSBvcy5zdGF0KHNlbGYuZm5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZmlsZV9hdHRyaWJ1dGVzKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlc3VsdC5zdF9maWxlX2F0dHJpYnV0ZXMgJiBzdGF0LkZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSwKKyAgICAgICAgICAgIDApCisKKyAgICAgICAgIyB0ZXN0IGRpcmVjdG9yeSBzdF9maWxlX2F0dHJpYnV0ZXMgKEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSBzZXQpCisgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuY2hlY2tfZmlsZV9hdHRyaWJ1dGVzKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlc3VsdC5zdF9maWxlX2F0dHJpYnV0ZXMgJiBzdGF0LkZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSwKKyAgICAgICAgICAgIHN0YXQuRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCiAKIGNsYXNzIFV0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTk3MSwxNyArMTA0MCw2IEBACiAgICAgICAgIG9zLm1ha2VkaXJzKHBhdGgsIG1vZGU9bW9kZSwgZXhpc3Rfb2s9VHJ1ZSkKICAgICAgICAgb3MudW1hc2sob2xkX21hc2spCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hvd24nKSwgJ3Rlc3QgbmVlZHMgb3MuY2hvd24nKQotICAgIGRlZiB0ZXN0X2Nob3duX3VpZF9naWRfYXJndW1lbnRzX211c3RfYmVfaW5kZXgoc2VsZik6Ci0gICAgICAgIHN0YXQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB1aWQgPSBzdGF0LnN0X3VpZAotICAgICAgICBnaWQgPSBzdGF0LnN0X2dpZAotICAgICAgICBmb3IgdmFsdWUgaW4gKC0xLjAsIC0xaiwgZGVjaW1hbC5EZWNpbWFsKC0xKSwgZnJhY3Rpb25zLkZyYWN0aW9uKC0yLCAyKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLmNob3duLCBzdXBwb3J0LlRFU1RGTiwgdmFsdWUsIGdpZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MuY2hvd24sIHN1cHBvcnQuVEVTVEZOLCB1aWQsIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkLCBnaWQpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgLTEsIC0xKSkKLQogICAgIGRlZiB0ZXN0X2V4aXN0X29rX3NfaXNnaWRfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCAnZGlyMScpCiAgICAgICAgIFNfSVNHSUQgPSBzdGF0LlNfSVNHSUQKQEAgLTEwMzIsNiArMTA5MCw2MCBAQAogICAgICAgICBvcy5yZW1vdmVkaXJzKHBhdGgpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2Nob3duJyksICJUZXN0IG5lZWRzIGNob3duIikKK2NsYXNzIENob3duRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIHRlc3RfY2hvd25fdWlkX2dpZF9hcmd1bWVudHNfbXVzdF9iZV9pbmRleChzZWxmKToKKyAgICAgICAgc3RhdCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHVpZCA9IHN0YXQuc3RfdWlkCisgICAgICAgIGdpZCA9IHN0YXQuc3RfZ2lkCisgICAgICAgIGZvciB2YWx1ZSBpbiAoLTEuMCwgLTFqLCBkZWNpbWFsLkRlY2ltYWwoLTEpLCBmcmFjdGlvbnMuRnJhY3Rpb24oLTIsIDIpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3MuY2hvd24sIHN1cHBvcnQuVEVTVEZOLCB2YWx1ZSwgZ2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5jaG93biwgc3VwcG9ydC5URVNURk4sIHVpZCwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWQsIGdpZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCAtMSwgLTEpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MobGVuKGdyb3VwcykgPiAxLCAidGVzdCBuZWVkcyBtb3JlIHRoYW4gb25lIGdyb3VwIikKKyAgICBkZWYgdGVzdF9jaG93bihzZWxmKToKKyAgICAgICAgZ2lkXzEsIGdpZF8yID0gZ3JvdXBzWzoyXQorICAgICAgICB1aWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF91aWQKKyAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZCwgZ2lkXzEpCisgICAgICAgIGdpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X2dpZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdpZCwgZ2lkXzEpCisgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWQsIGdpZF8yKQorICAgICAgICBnaWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9naWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnaWQsIGdpZF8yKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mocm9vdF9pbl9wb3NpeCBhbmQgbGVuKGFsbF91c2VycykgPiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIHJvb3QgcHJpdmlsZWdlIGFuZCBtb3JlIHRoYW4gb25lIHVzZXIiKQorICAgIGRlZiB0ZXN0X2Nob3duX3dpdGhfcm9vdChzZWxmKToKKyAgICAgICAgdWlkXzEsIHVpZF8yID0gYWxsX3VzZXJzWzoyXQorICAgICAgICBnaWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9naWQKKyAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZF8xLCBnaWQpCisgICAgICAgIHVpZCA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X3VpZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVpZCwgdWlkXzEpCisgICAgICAgIG9zLmNob3duKHN1cHBvcnQuVEVTVEZOLCB1aWRfMiwgZ2lkKQorICAgICAgICB1aWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF91aWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1aWQsIHVpZF8yKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mobm90IHJvb3RfaW5fcG9zaXggYW5kIGxlbihhbGxfdXNlcnMpID4gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBuZWVkcyBub24tcm9vdCBhY2NvdW50IGFuZCBtb3JlIHRoYW4gb25lIHVzZXIiKQorICAgIGRlZiB0ZXN0X2Nob3duX3dpdGhvdXRfcGVybWlzc2lvbihzZWxmKToKKyAgICAgICAgdWlkXzEsIHVpZF8yID0gYWxsX3VzZXJzWzoyXQorICAgICAgICBnaWQgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9naWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQZXJtaXNzaW9uRXJyb3IpOgorICAgICAgICAgICAgb3MuY2hvd24oc3VwcG9ydC5URVNURk4sIHVpZF8xLCBnaWQpCisgICAgICAgICAgICBvcy5jaG93bihzdXBwb3J0LlRFU1RGTiwgdWlkXzIsIGdpZCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQorCisKIGNsYXNzIFJlbW92ZURpcnNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBvcy5tYWtlZGlycyhzdXBwb3J0LlRFU1RGTikKQEAgLTExMTUsOSArMTIyNywxMiBAQAogCiAKIEhBVkVfR0VURU5UUk9QWSA9IChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0VURU5UUk9QWScpID09IDEpCitIQVZFX0dFVFJBTkRPTSA9IChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0VUUkFORE9NX1NZU0NBTEwnKSA9PSAxKQogCiBAdW5pdHRlc3Quc2tpcElmKEhBVkVfR0VURU5UUk9QWSwKICAgICAgICAgICAgICAgICAgImdldGVudHJvcHkoKSBkb2VzIG5vdCB1c2UgYSBmaWxlIGRlc2NyaXB0b3IiKQorQHVuaXR0ZXN0LnNraXBJZihIQVZFX0dFVFJBTkRPTSwKKyAgICAgICAgICAgICAgICAgImdldHJhbmRvbSgpIGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvciIpCiBjbGFzcyBVUmFuZG9tRkRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MocmVzb3VyY2UsICJ0ZXN0IHJlcXVpcmVzIHRoZSByZXNvdXJjZSBtb2R1bGUiKQogICAgIGRlZiB0ZXN0X3VyYW5kb21fZmFpbHVyZShzZWxmKToKQEAgLTExNDgsOCArMTI2MywxMCBAQAogICAgICAgICBjb2RlID0gIiIiaWYgMToKICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgaW1wb3J0IHRlc3Quc3VwcG9ydAogICAgICAgICAgICAgb3MudXJhbmRvbSg0KQotICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShvcy51cmFuZG9tKDQpKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1TYycsIGNvZGUpCkBAIC0xMTYzLDE2ICsxMjgwLDE4IEBACiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0CiAgICAgICAgICAgICBvcy51cmFuZG9tKDQpCi0gICAgICAgICAgICBmb3IgZmQgaW4gcmFuZ2UoMywgMjU2KToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCB0aGUgdXJhbmRvbSBmZCAoWFhYIGhvcGVmdWxseSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIG9zLmNsb3NlcmFuZ2UoMywgMjU2KQorICAgICAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgICAgIGZvciBmZCBpbiByYW5nZSgzLCAyNTYpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIEZvdW5kIHRoZSB1cmFuZG9tIGZkIChYWFggaG9wZWZ1bGx5KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKICAgICAgICAgICAgIHdpdGggb3Blbih7VEVTVEZOIXJ9LCAncmInKSBhcyBmOgogICAgICAgICAgICAgICAgIG9zLmR1cDIoZi5maWxlbm8oKSwgZmQpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUob3MudXJhbmRvbSg0KSkKQEAgLTEzOTgsNiArMTUxNywxNiBAQAogICAgIGRlZiB0ZXN0X3dyaXRldihzZWxmKToKICAgICAgICAgc2VsZi5jaGVjayhvcy53cml0ZXYsIFtiJ2FiYyddKQogCisgICAgZGVmIHRlc3RfaW5oZXJpdGFibGUoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2sob3MuZ2V0X2luaGVyaXRhYmxlKQorICAgICAgICBzZWxmLmNoZWNrKG9zLnNldF9pbmhlcml0YWJsZSwgVHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfYmxvY2tpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZHMgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpJykKKyAgICBkZWYgdGVzdF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjayhvcy5nZXRfYmxvY2tpbmcpCisgICAgICAgIHNlbGYuY2hlY2sob3Muc2V0X2Jsb2NraW5nLCBUcnVlKQorCiAKIGNsYXNzIExpbmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTg0NSw2ICsxOTc0LDM3IEBACiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGxldmVsMSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKK2NsYXNzIFdpbjMySnVuY3Rpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAganVuY3Rpb24gPSAnanVuY3Rpb250ZXN0JworICAgIGp1bmN0aW9uX3RhcmdldCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoc2VsZi5qdW5jdGlvbl90YXJnZXQpCisgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5qdW5jdGlvbikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5qdW5jdGlvbik6CisgICAgICAgICAgICAjIG9zLnJtZGlyIGRlbGVnYXRlcyB0byBXaW5kb3dzJyBSZW1vdmVEaXJlY3RvcnlXLAorICAgICAgICAgICAgIyB3aGljaCByZW1vdmVzIGp1bmN0aW9uIHBvaW50cyBzYWZlbHkuCisgICAgICAgICAgICBvcy5ybWRpcihzZWxmLmp1bmN0aW9uKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2p1bmN0aW9uKHNlbGYpOgorICAgICAgICBfd2luYXBpLkNyZWF0ZUp1bmN0aW9uKHNlbGYuanVuY3Rpb25fdGFyZ2V0LCBzZWxmLmp1bmN0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc2VsZi5qdW5jdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHNlbGYuanVuY3Rpb24pKQorCisgICAgICAgICMgSnVuY3Rpb25zIGFyZSBub3QgcmVjb2duaXplZCBhcyBsaW5rcy4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzbGluayhzZWxmLmp1bmN0aW9uKSkKKworICAgIGRlZiB0ZXN0X3VubGlua19yZW1vdmVzX2p1bmN0aW9uKHNlbGYpOgorICAgICAgICBfd2luYXBpLkNyZWF0ZUp1bmN0aW9uKHNlbGYuanVuY3Rpb25fdGFyZ2V0LCBzZWxmLmp1bmN0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc2VsZi5qdW5jdGlvbikpCisKKyAgICAgICAgb3MudW5saW5rKHNlbGYuanVuY3Rpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5qdW5jdGlvbikpCisKKwogQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogY2xhc3MgTm9uTG9jYWxTeW1saW5rVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xOTE4LDYgKzIwNzgsMTIgQEAKICAgICAgICAgIyBXZSBhcmUgdGhlIHBhcmVudCBvZiBvdXIgc3VicHJvY2VzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzdGRvdXQpLCBvcy5nZXRwaWQoKSkKIAorICAgIGRlZiB0ZXN0X3dhaXRwaWQoc2VsZik6CisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10KKyAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIChwaWQsIDApKQorCiAKICMgVGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIFRlc3RDYXNlIGNhdXNlZCBhdCBsZWFzdCB0d28gZGlmZmVyZW50IGVycm9ycyBvbgogIyAqbml4IGJ1aWxkYm90cy4gVGVtcG9yYXJpbHkgc2tpcCB0aGlzIHRvIGxldCB0aGUgYnVpbGRib3RzIG1vdmUgYWxvbmcuCkBAIC0yMDUxLDExICsyMjE3LDEzIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMua2V5ID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC50aHJlYWRpbmdfY2xlYW51cCgqY2xzLmtleSkKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0yNTkwLDQzICsyNzU4LDI1MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShzbGF2ZV9mZCksIEZhbHNlKQogCiAKLUBzdXBwb3J0LnJlYXBfdGhyZWFkcwotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBGaWxlVGVzdHMsCi0gICAgICAgIFN0YXRBdHRyaWJ1dGVUZXN0cywKLSAgICAgICAgVXRpbWVUZXN0cywKLSAgICAgICAgRW52aXJvblRlc3RzLAotICAgICAgICBXYWxrVGVzdHMsCi0gICAgICAgIEZ3YWxrVGVzdHMsCi0gICAgICAgIE1ha2VkaXJUZXN0cywKLSAgICAgICAgRGV2TnVsbFRlc3RzLAotICAgICAgICBVUmFuZG9tVGVzdHMsCi0gICAgICAgIFVSYW5kb21GRFRlc3RzLAotICAgICAgICBFeGVjVGVzdHMsCi0gICAgICAgIFdpbjMyRXJyb3JUZXN0cywKLSAgICAgICAgVGVzdEludmFsaWRGRCwKLSAgICAgICAgUG9zaXhVaWRHaWRUZXN0cywKLSAgICAgICAgUGVwMzgzVGVzdHMsCi0gICAgICAgIFdpbjMyS2lsbFRlc3RzLAotICAgICAgICBXaW4zMkxpc3RkaXJUZXN0cywKLSAgICAgICAgV2luMzJTeW1saW5rVGVzdHMsCi0gICAgICAgIE5vbkxvY2FsU3ltbGlua1Rlc3RzLAotICAgICAgICBGU0VuY29kaW5nVGVzdHMsCi0gICAgICAgIERldmljZUVuY29kaW5nVGVzdHMsCi0gICAgICAgIFBpZFRlc3RzLAotICAgICAgICBMb2dpblRlc3RzLAotICAgICAgICBMaW5rVGVzdHMsCi0gICAgICAgIFRlc3RTZW5kZmlsZSwKLSAgICAgICAgUHJvZ3JhbVByaW9yaXR5VGVzdHMsCi0gICAgICAgIEV4dGVuZGVkQXR0cmlidXRlVGVzdHMsCi0gICAgICAgIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJLAotICAgICAgICBUZXJtc2l6ZVRlc3RzLAotICAgICAgICBPU0Vycm9yVGVzdHMsCi0gICAgICAgIFJlbW92ZURpcnNUZXN0cywKLSAgICAgICAgQ1BVQ291bnRUZXN0cywKLSAgICAgICAgRkRJbmhlcml0YW5jZVRlc3RzLAotICAgICkKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfYmxvY2tpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQorY2xhc3MgQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2Jsb2NraW5nKGZkKSwgVHJ1ZSkKKworICAgICAgICBvcy5zZXRfYmxvY2tpbmcoZmQsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9ibG9ja2luZyhmZCksIEZhbHNlKQorCisgICAgICAgIG9zLnNldF9ibG9ja2luZyhmZCwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfYmxvY2tpbmcoZmQpLCBUcnVlKQorCisKKworY2xhc3MgRXhwb3J0c1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9vc19hbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ29wZW4nLCBvcy5fX2FsbF9fKQorICAgICAgICBzZWxmLmFzc2VydEluKCd3YWxrJywgb3MuX19hbGxfXykKKworCitjbGFzcyBUZXN0U2NhbmRpcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYucGF0aCkKKyAgICAgICAgb3MubWtkaXIoc2VsZi5wYXRoKQorCisgICAgZGVmIGNyZWF0ZV9maWxlKHNlbGYsIG5hbWU9ImZpbGUudHh0Iik6CisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGIncHl0aG9uJykKKyAgICAgICAgcmV0dXJuIGZpbGVuYW1lCisKKyAgICBkZWYgZ2V0X2VudHJpZXMoc2VsZiwgbmFtZXMpOgorICAgICAgICBlbnRyaWVzID0gZGljdCgoZW50cnkubmFtZSwgZW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGVudHJpZXMua2V5cygpKSwgbmFtZXMpCisgICAgICAgIHJldHVybiBlbnRyaWVzCisKKyAgICBkZWYgYXNzZXJ0X3N0YXRfZXF1YWwoc2VsZiwgc3RhdDEsIHN0YXQyLCBza2lwX2ZpZWxkcyk6CisgICAgICAgIGlmIHNraXBfZmllbGRzOgorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHN0YXQxKToKKyAgICAgICAgICAgICAgICBpZiBub3QgYXR0ci5zdGFydHN3aXRoKCJzdF8iKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBhdHRyIGluICgic3RfZGV2IiwgInN0X2lubyIsICJzdF9ubGluayIpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzdGF0MSwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHN0YXQyLCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0MSwgc3RhdDIsIGF0dHIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0MSwgc3RhdDIpCisKKyAgICBkZWYgY2hlY2tfZW50cnkoc2VsZiwgZW50cnksIG5hbWUsIGlzX2RpciwgaXNfZmlsZSwgaXNfc3ltbGluayk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5wYXRoLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pbm9kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQoZW50cnkucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm8pCisKKyAgICAgICAgZW50cnlfc3RhdCA9IG9zLnN0YXQoZW50cnkucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19kaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVNESVIoZW50cnlfc3RhdC5zdF9tb2RlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pc19maWxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lTUkVHKGVudHJ5X3N0YXQuc3RfbW9kZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaXNfc3ltbGluaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguaXNsaW5rKGVudHJ5LnBhdGgpKQorCisgICAgICAgIGVudHJ5X2xzdGF0ID0gb3Muc3RhdChlbnRyeS5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaXNfZGlyKGZvbGxvd19zeW1saW5rcz1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lTRElSKGVudHJ5X2xzdGF0LnN0X21vZGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmlzX2ZpbGUoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0LlNfSVNSRUcoZW50cnlfbHN0YXQuc3RfbW9kZSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfc3RhdF9lcXVhbChlbnRyeS5zdGF0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlfc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5uYW1lID09ICdudCcgYW5kIG5vdCBpc19zeW1saW5rKQorICAgICAgICBzZWxmLmFzc2VydF9zdGF0X2VxdWFsKGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeV9sc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5uYW1lID09ICdudCcpCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBsaW5rID0gaGFzYXR0cihvcywgJ2xpbmsnKQorICAgICAgICBzeW1saW5rID0gc3VwcG9ydC5jYW5fc3ltbGluaygpCisKKyAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsICJkaXIiKQorICAgICAgICBvcy5ta2RpcihkaXJuYW1lKQorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgaWYgbGluazoKKyAgICAgICAgICAgIG9zLmxpbmsoZmlsZW5hbWUsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICJsaW5rX2ZpbGUudHh0IikpCisgICAgICAgIGlmIHN5bWxpbms6CisgICAgICAgICAgICBvcy5zeW1saW5rKGRpcm5hbWUsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICJzeW1saW5rX2RpciIpLAorICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5PVRydWUpCisgICAgICAgICAgICBvcy5zeW1saW5rKGZpbGVuYW1lLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAic3ltbGlua19maWxlLnR4dCIpKQorCisgICAgICAgIG5hbWVzID0gWydkaXInLCAnZmlsZS50eHQnXQorICAgICAgICBpZiBsaW5rOgorICAgICAgICAgICAgbmFtZXMuYXBwZW5kKCdsaW5rX2ZpbGUudHh0JykKKyAgICAgICAgaWYgc3ltbGluazoKKyAgICAgICAgICAgIG5hbWVzLmV4dGVuZCgoJ3N5bWxpbmtfZGlyJywgJ3N5bWxpbmtfZmlsZS50eHQnKSkKKyAgICAgICAgZW50cmllcyA9IHNlbGYuZ2V0X2VudHJpZXMobmFtZXMpCisKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWydkaXInXQorICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGVudHJ5LCAnZGlyJywgVHJ1ZSwgRmFsc2UsIEZhbHNlKQorCisgICAgICAgIGVudHJ5ID0gZW50cmllc1snZmlsZS50eHQnXQorICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGVudHJ5LCAnZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgRmFsc2UpCisKKyAgICAgICAgaWYgbGluazoKKyAgICAgICAgICAgIGVudHJ5ID0gZW50cmllc1snbGlua19maWxlLnR4dCddCisgICAgICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGVudHJ5LCAnbGlua19maWxlLnR4dCcsIEZhbHNlLCBUcnVlLCBGYWxzZSkKKworICAgICAgICBpZiBzeW1saW5rOgorICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzWydzeW1saW5rX2RpciddCisgICAgICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGVudHJ5LCAnc3ltbGlua19kaXInLCBUcnVlLCBGYWxzZSwgVHJ1ZSkKKworICAgICAgICAgICAgZW50cnkgPSBlbnRyaWVzWydzeW1saW5rX2ZpbGUudHh0J10KKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdzeW1saW5rX2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIFRydWUpCisKKyAgICBkZWYgZ2V0X2VudHJ5KHNlbGYsIG5hbWUpOgorICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMpLCAxKQorCisgICAgICAgIGVudHJ5ID0gZW50cmllc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIG5hbWUpCisgICAgICAgIHJldHVybiBlbnRyeQorCisgICAgZGVmIGNyZWF0ZV9maWxlX2VudHJ5KHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUoKQorICAgICAgICByZXR1cm4gc2VsZi5nZXRfZW50cnkob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCisKKyAgICBkZWYgdGVzdF9jdXJyZW50X2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCkKKyAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKHNlbGYucGF0aCkKKworICAgICAgICAgICAgIyBjYWxsIHNjYW5kaXIoKSB3aXRob3V0IHBhcmFtZXRlcjogaXQgbXVzdCBsaXN0IHRoZSBjb250ZW50CisgICAgICAgICAgICAjIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorICAgICAgICAgICAgZW50cmllcyA9IGRpY3QoKGVudHJ5Lm5hbWUsIGVudHJ5KSBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZW50cmllcy5rZXlzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSldKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIob2xkX2RpcikKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlbnRyeSksICI8RGlyRW50cnkgJ2ZpbGUudHh0Jz4iKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlZF9kaXIoc2VsZik6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZGlyJykKKworICAgICAgICBvcy5ta2RpcihwYXRoKQorICAgICAgICBlbnRyeSA9IHNlbGYuZ2V0X2VudHJ5KCdkaXInKQorICAgICAgICBvcy5ybWRpcihwYXRoKQorCisgICAgICAgICMgT24gUE9TSVgsIGlzX2RpcigpIHJlc3VsdCBkZXBlbmRzIGlmIHNjYW5kaXIoKSBmaWxsZWQgZF90eXBlIG9yIG5vdAorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW50cnkuaXNfZGlyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfZmlsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX3N5bWxpbmsoKSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5Lmlub2RlKQorICAgICAgICAgICAgIyBkb24ndCBmYWlsCisgICAgICAgICAgICBlbnRyeS5zdGF0KCkKKyAgICAgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGVudHJ5Lmlub2RlKCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuc3RhdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVkX2ZpbGUoc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCisgICAgICAgIG9zLnVubGluayhlbnRyeS5wYXRoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfZGlyKCkpCisgICAgICAgICMgT24gUE9TSVgsIGlzX2RpcigpIHJlc3VsdCBkZXBlbmRzIGlmIHNjYW5kaXIoKSBmaWxsZWQgZF90eXBlIG9yIG5vdAorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW50cnkuaXNfZmlsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudHJ5LmlzX3N5bWxpbmsoKSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIGVudHJ5Lmlub2RlKQorICAgICAgICAgICAgIyBkb24ndCBmYWlsCisgICAgICAgICAgICBlbnRyeS5zdGF0KCkKKyAgICAgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGVudHJ5Lmlub2RlKCksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuc3RhdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBlbnRyeS5zdGF0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9icm9rZW5fc3ltbGluayhzZWxmKToKKyAgICAgICAgaWYgbm90IHN1cHBvcnQuY2FuX3N5bWxpbmsoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNraXBUZXN0KCdjYW5ub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsnKQorCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBvcy5zeW1saW5rKGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICJzeW1saW5rLnR4dCIpKQorICAgICAgICBlbnRyaWVzID0gc2VsZi5nZXRfZW50cmllcyhbJ2ZpbGUudHh0JywgJ3N5bWxpbmsudHh0J10pCisgICAgICAgIGVudHJ5ID0gZW50cmllc1snc3ltbGluay50eHQnXQorICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGVudHJ5Lmlub2RlKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfZGlyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfZmlsZSgpKSAgIyBicm9rZW4gc3ltbGluayByZXR1cm5zIEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfZGlyKGZvbGxvd19zeW1saW5rcz1GYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW50cnkuaXNfZmlsZShmb2xsb3dfc3ltbGlua3M9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZW50cnkuaXNfc3ltbGluaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgZW50cnkuc3RhdCkKKyAgICAgICAgIyBkb24ndCBmYWlsCisgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorCisgICAgZGVmIHRlc3RfYnl0ZXMoc2VsZik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgICMgT24gV2luZG93cywgb3Muc2NhbmRpcihieXRlcykgbXVzdCByYWlzZSBhbiBleGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgYicuJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKworICAgICAgICBwYXRoX2J5dGVzID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQorICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHBhdGhfYnl0ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSwgZW50cmllcykKKyAgICAgICAgZW50cnkgPSBlbnRyaWVzWzBdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBiJ2ZpbGUudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmZzZW5jb2RlKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdmaWxlLnR4dCcpKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBvcy5zY2FuZGlyLCAnJykKKworICAgIGRlZiB0ZXN0X2NvbnN1bWVfaXRlcmF0b3JfdHdpY2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKworICAgICAgICBlbnRyaWVzID0gbGlzdChpdGVyYXRvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEsIGVudHJpZXMpCisKKyAgICAgICAgIyBjaGVjayB0aGFuIGNvbnN1bWluZyB0aGUgaXRlcmF0b3IgdHdpY2UgZG9lc24ndCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZW50cmllczIgPSBsaXN0KGl0ZXJhdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzMiksIDAsIGVudHJpZXMyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhdGhfdHlwZShzZWxmKToKKyAgICAgICAgZm9yIG9iaiBpbiBbMTIzNCwgMS4yMzQsIHt9LCBbXV06CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIG9iaikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkgYi9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKaW5kZXggZDhlYjk4MS4uOGEzYmM1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQpAQCAtMiw3ICsyLDcgQEAKIFRlc3Qgc3VpdGUgZm9yIE9TIFggaW50ZXJwcmV0ZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogIiIiCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBFbnZpcm9ubWVudFZhckd1YXJkLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBFbnZpcm9ubWVudFZhckd1YXJkCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQppbmRleCBlNzk2OGNjLi4zZDMwMWI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQpAQCAtNCw3ICs0LDcgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAogIwogIyAgRmlyc3QsIHdlIHRlc3QgdGhhdCB3ZSBjYW4gZ2VuZXJhdGUgdHJlZXMgZnJvbSB2YWxpZCBzb3VyY2UgZnJhZ21lbnRzLApAQCAtNjMsNiArNjMsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmICh5aWVsZCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgeWllbGQgeFxuIikKIAorICAgIGRlZiB0ZXN0X2F3YWl0X3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhd2FpdCBzbXRoKCkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGZvbyA9IGF3YWl0IHNtdGgoKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gZm9vLCBiYXIgPSBhd2FpdCBzbXRoKCkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIChhd2FpdCBzbXRoKCkpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBmb28oKGF3YWl0IHNtdGgoKSkpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhd2FpdCBmb28oKTsgcmV0dXJuIDQyIikKKworICAgIGRlZiB0ZXN0X2FzeW5jX3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGFzeW5jIHdpdGggMTogcGFzcyIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImFzeW5jIGRlZiBmKCk6XG4gYXN5bmMgd2l0aCBhIGFzIGIsIGMgYXMgZDogcGFzcyIpCisKKyAgICBkZWYgdGVzdF9hc3luY19mb3Jfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhc3luYyBkZWYgZigpOlxuIGFzeW5jIGZvciBpIGluICgpOiBwYXNzIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYXN5bmMgZGVmIGYoKTpcbiBhc3luYyBmb3IgaSwgYiBpbiAoKTogcGFzcyIpCisKICAgICBkZWYgdGVzdF9ub25sb2NhbF9zdGF0ZW1lbnQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gMFxuIgpAQCAtMzEzLDcgKzMyOSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHQgRXhjZXB0aW9uIGFzIGU6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByYWlzZSBWYWx1ZUVycm9yIGZyb20gZVxuIikKIAorICAgIGRlZiB0ZXN0X2xpc3RfZGlzcGxheXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZXhwcignW10nKQorICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ1sqezJ9LCAzLCAqWzRdXScpCisKICAgICBkZWYgdGVzdF9zZXRfZGlzcGxheXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZXhwcigneyp7Mn0sIDMsICpbNF19JykKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7Mn0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3syLH0nKQogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3syLCAzfScpCkBAIC0zMjUsNiArMzQ2LDE1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfZXhwcigne2E6Yix9JykKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7YTpiLCBjOmR9JykKICAgICAgICAgc2VsZi5jaGVja19leHByKCd7YTpiLCBjOmQsfScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcigneyoqe319JykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCd7Kip7fSwgMzo0LCAqKns1OjYsIDc6OH19JykKKworICAgIGRlZiB0ZXN0X2FyZ3VtZW50X3VucGFja2luZyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19leHByKCJmKCphLCAqKmIpIikKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdmKGEsICpiLCAqYywgKmQpJykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCdmKCoqYSwgKipiKScpCisgICAgICAgIHNlbGYuY2hlY2tfZXhwcignZigyLCAqYSwgKmIsICoqYiwgKipjLCAqKmQpJykKKyAgICAgICAgc2VsZi5jaGVja19leHByKCJmKCpiLCAqKCkgb3IgKCkgYW5kICgpLCAqKnt9IGFuZCB7fSwgKiooKSBvciB7fSkiKQogCiAgICAgZGVmIHRlc3Rfc2V0X2NvbXByZWhlbnNpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2V4cHIoJ3t4IGZvciB4IGluIHNlcX0nKQpAQCAtNzMwLDE2ICs3NjAsNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBwYXJzZXIuZXhwcigiYSIsICJiIikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBSb3VuZHRyaXBMZWdhbFN5bnRheFRlc3RDYXNlLAotICAgICAgICBJbGxlZ2FsU3ludGF4VGVzdENhc2UsCi0gICAgICAgIENvbXBpbGVUZXN0Q2FzZSwKLSAgICAgICAgUGFyc2VyU3RhY2tMaW1pdFRlc3RDYXNlLAotICAgICAgICBTVE9iamVjdFRlc3RDYXNlLAotICAgICAgICBPdGhlclBhcnNlckNhc2UsCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQppbmRleCAxMTQyMGUyLi4xYzUzYWI3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CkBAIC00LDEzICs0LDEwIEBACiBpbXBvcnQgZXJybm8KIGltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3RhdAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBURVNURk4gPSBzdXBwb3J0LlRFU1RGTgpAQCAtNzQ3LDcgKzc0NCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUCgnLy9Tb21lL1NIQVJFL2EvQicpLCBQKCcvL3NvbUUvc2hhcmUvQS9iJykpCiAKICAgICBkZWYgdGVzdF9hc191cmkoc2VsZik6Ci0gICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZV9mcm9tX2J5dGVzCiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgUCgnL2EvYicpLmFzX3VyaSgpCkBAIC0xMjY5LDExICsxMjY1LDU1IEBACiAgICAgICAgIHAgPSBzZWxmLmNscy5jd2QoKQogICAgICAgICBzZWxmLl90ZXN0X2N3ZChwKQogCisgICAgZGVmIF90ZXN0X2hvbWUoc2VsZiwgcCk6CisgICAgICAgIHEgPSBzZWxmLmNscyhvcy5wYXRoLmV4cGFuZHVzZXIoJ34nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgc3RyKHEpKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocCksIHR5cGUocSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmlzX2Fic29sdXRlKCkpCisKKyAgICBkZWYgdGVzdF9ob21lKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMuaG9tZSgpCisgICAgICAgIHNlbGYuX3Rlc3RfaG9tZShwKQorCisgICAgZGVmIHRlc3Rfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIGZpbGVBX3BhdGggPSBvcy5wYXRoLmpvaW4oQkFTRSwgJ2ZpbGVBJykKKyAgICAgICAgZmlsZUJfcGF0aCA9IG9zLnBhdGguam9pbihCQVNFLCAnZGlyQicsICdmaWxlQicpCisgICAgICAgIHAgPSBzZWxmLmNscyhmaWxlQV9wYXRoKQorICAgICAgICBwcCA9IHNlbGYuY2xzKGZpbGVBX3BhdGgpCisgICAgICAgIHEgPSBzZWxmLmNscyhmaWxlQl9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5zYW1lZmlsZShmaWxlQV9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuc2FtZWZpbGUocHApKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHAuc2FtZWZpbGUoZmlsZUJfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5zYW1lZmlsZShxKSkKKyAgICAgICAgIyBUZXN0IHRoZSBub24tZXhpc3RlbnQgZmlsZSBjYXNlCisgICAgICAgIG5vbl9leGlzdGVudCA9IG9zLnBhdGguam9pbihCQVNFLCAnZm9vJykKKyAgICAgICAgciA9IHNlbGYuY2xzKG5vbl9leGlzdGVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHAuc2FtZWZpbGUsIHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBwLnNhbWVmaWxlLCBub25fZXhpc3RlbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCByLnNhbWVmaWxlLCBwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgci5zYW1lZmlsZSwgbm9uX2V4aXN0ZW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgci5zYW1lZmlsZSwgcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIuc2FtZWZpbGUsIG5vbl9leGlzdGVudCkKKwogICAgIGRlZiB0ZXN0X2VtcHR5X3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIGVtcHR5IHBhdGggcG9pbnRzIHRvICcuJwogICAgICAgICBwID0gc2VsZi5jbHMoJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCksIG9zLnN0YXQoJy4nKSkKIAorICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXJfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ34nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhwYW5kdXNlcigpLCBQKG9zLnBhdGguZXhwYW5kdXNlcignficpKSkKKyAgICAgICAgcCA9IFAoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKCcvficpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisgICAgICAgIHAgPSBQKCcuLi9+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmV4cGFuZHVzZXIoKSwgcCkKKyAgICAgICAgcCA9IFAoUCgnJykuYWJzb2x1dGUoKS5hbmNob3IpIC8gJ34nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leHBhbmR1c2VyKCksIHApCisKICAgICBkZWYgdGVzdF9leGlzdHMoc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUChCQVNFKQpAQCAtMTMwMSw2ICsxMzQxLDIzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZiwgaW8uUmF3SU9CYXNlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKS5zdHJpcCgpLCBiInRoaXMgaXMgZmlsZSBBIikKIAorICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfYnl0ZXMoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFKQorICAgICAgICAocCAvICdmaWxlQScpLndyaXRlX2J5dGVzKGInYWJjZGVmZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEnKS5yZWFkX2J5dGVzKCksIGInYWJjZGVmZycpCisgICAgICAgICMgY2hlY2sgdGhhdCB0cnlpbmcgdG8gd3JpdGUgc3RyIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgKHAgLyAnZmlsZUEnKS53cml0ZV9ieXRlcywgJ3NvbWVzdHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChwIC8gJ2ZpbGVBJykucmVhZF9ieXRlcygpLCBiJ2FiY2RlZmcnKQorCisgICAgZGVmIHRlc3RfcmVhZF93cml0ZV90ZXh0KHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSkKKyAgICAgICAgKHAgLyAnZmlsZUEnKS53cml0ZV90ZXh0KCfDpGJjZGVmZycsIGVuY29kaW5nPSdsYXRpbi0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgocCAvICdmaWxlQScpLnJlYWRfdGV4dCgKKyAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0naWdub3JlJyksICdiY2RlZmcnKQorICAgICAgICAjIGNoZWNrIHRoYXQgdHJ5aW5nIHRvIHdyaXRlIGJ5dGVzIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgKHAgLyAnZmlsZUEnKS53cml0ZV90ZXh0LCBiJ3NvbWVieXRlcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHAgLyAnZmlsZUEnKS5yZWFkX3RleHQoZW5jb2Rpbmc9J2xhdGluLTEnKSwgJ8OkYmNkZWZnJykKKwogICAgIGRlZiB0ZXN0X2l0ZXJkaXIoc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUChCQVNFKQpAQCAtMTYwNCw2ICsxNjYxLDU5IEBACiAgICAgICAgICMgdGhlIHBhcmVudCdzIHBlcm1pc3Npb25zIGZvbGxvdyB0aGUgZGVmYXVsdCBwcm9jZXNzIHNldHRpbmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdC5TX0lNT0RFKHAucGFyZW50LnN0YXQoKS5zdF9tb2RlKSwgbW9kZSkKIAorICAgIGRlZiB0ZXN0X21rZGlyX2V4aXN0X29rKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckInKQorICAgICAgICBzdF9jdGltZV9maXJzdCA9IHAuc3RhdCgpLnN0X2N0aW1lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5pc19kaXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHAubWtkaXIoZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCkuc3RfY3RpbWUsIHN0X2N0aW1lX2ZpcnN0KQorCisgICAgZGVmIHRlc3RfbWtkaXJfZXhpc3Rfb2tfd2l0aF9wYXJlbnQoc2VsZik6CisgICAgICAgIHAgPSBzZWxmLmNscyhCQVNFLCAnZGlyQycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwLmV4aXN0cygpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKyAgICAgICAgcCA9IHAgLyAnbmV3ZGlyQycKKyAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgIHN0X2N0aW1lX2ZpcnN0ID0gcC5zdGF0KCkuc3RfY3RpbWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICBwLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0KCkuc3RfY3RpbWUsIHN0X2N0aW1lX2ZpcnN0KQorCisgICAgZGVmIHRlc3RfbWtkaXJfd2l0aF9jaGlsZF9maWxlKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2RpckInLCAnZmlsZUInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocC5leGlzdHMoKSkKKyAgICAgICAgIyBBbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgaXMgYW4gZXhpc3RpbmcKKyAgICAgICAgIyByZWd1bGFyIGZpbGUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBleGlzdF9vayBpcyB0cnVlIG9yIG5vdC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcC5ta2RpcihwYXJlbnRzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCisgICAgZGVmIHRlc3RfbWtkaXJfbm9fcGFyZW50c19maWxlKHNlbGYpOgorICAgICAgICBwID0gc2VsZi5jbHMoQkFTRSwgJ2ZpbGVBJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHAuZXhpc3RzKCkpCisgICAgICAgICMgQW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSBsYXN0IHBhdGggY29tcG9uZW50IGlzIGFuIGV4aXN0aW5nCisgICAgICAgICMgcmVndWxhciBmaWxlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZXhpc3Rfb2sgaXMgdHJ1ZSBvciBub3QuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHAubWtkaXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcikgYXMgY206CisgICAgICAgICAgICBwLm1rZGlyKGV4aXN0X29rPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3N5bWxpbmtfdG8oc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFKQpAQCAtMTg0Niw3ICsxOTU2LDYgQEAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfbG9vcChzZWxmKToKICAgICAgICAgIyBMb29wIGRldGVjdGlvbiBmb3IgYnJva2VuIHN5bWxpbmtzIHVuZGVyIFBPU0lYCi0gICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICAjIExvb3BzIHdpdGggcmVsYXRpdmUgc3ltbGlua3MKICAgICAgICAgb3Muc3ltbGluaygnbGlua1gvaW5zaWRlJywgam9pbignbGlua1gnKSkKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWCcpCkBAIC0xODc4LDYgKzE5ODcsNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnaXZlbiwgZXhwZWN0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLnJnbG9iKCJGSUxFZCoiKSksIHNldCgpKQogCisgICAgZGVmIHRlc3RfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgncHdkJykKKyAgICAgICAgaW1wb3J0IHB3ZAorICAgICAgICBwd2RlbnQgPSBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpCisgICAgICAgIHVzZXJuYW1lID0gcHdkZW50LnB3X25hbWUKKyAgICAgICAgdXNlcmhvbWUgPSBwd2RlbnQucHdfZGlyLnJzdHJpcCgnLycpCisgICAgICAgICMgZmluZCBhcmJpdHJhcnkgZGlmZmVyZW50IHVzZXIgKGlmIGV4aXN0cykKKyAgICAgICAgZm9yIHB3ZGVudCBpbiBwd2QuZ2V0cHdhbGwoKToKKyAgICAgICAgICAgIG90aGVybmFtZSA9IHB3ZGVudC5wd19uYW1lCisgICAgICAgICAgICBvdGhlcmhvbWUgPSBwd2RlbnQucHdfZGlyLnJzdHJpcCgnLycpCisgICAgICAgICAgICBpZiBvdGhlcm5hbWUgIT0gdXNlcm5hbWUgYW5kIG90aGVyaG9tZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHAxID0gUCgnfi9Eb2N1bWVudHMnKQorICAgICAgICBwMiA9IFAoJ34nICsgdXNlcm5hbWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHAzID0gUCgnficgKyBvdGhlcm5hbWUgKyAnL0RvY3VtZW50cycpCisgICAgICAgIHA0ID0gUCgnLi4vficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDUgPSBQKCcvficgKyB1c2VybmFtZSArICcvRG9jdW1lbnRzJykKKyAgICAgICAgcDYgPSBQKCcnKQorICAgICAgICBwNyA9IFAoJ35mYWtldXNlci9Eb2N1bWVudHMnKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52LnBvcCgnSE9NRScsIE5vbmUpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhwYW5kdXNlcigpLCBQKHVzZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5leHBhbmR1c2VyKCksIFAodXNlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAzLmV4cGFuZHVzZXIoKSwgUChvdGhlcmhvbWUpIC8gJ0RvY3VtZW50cycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA0LmV4cGFuZHVzZXIoKSwgcDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA1LmV4cGFuZHVzZXIoKSwgcDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIoKSwgcDYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHA3LmV4cGFuZHVzZXIpCisKKyAgICAgICAgICAgIGVudlsnSE9NRSddID0gJy90bXAnCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAxLmV4cGFuZHVzZXIoKSwgUCgnL3RtcC9Eb2N1bWVudHMnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5kdXNlcigpLCBQKHVzZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5leHBhbmR1c2VyKCksIFAob3RoZXJob21lKSAvICdEb2N1bWVudHMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNS5leHBhbmR1c2VyKCksIHA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNi5leHBhbmR1c2VyKCksIHA2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwNy5leHBhbmR1c2VyKQorCiAKIEBvbmx5X250CiBjbGFzcyBXaW5kb3dzUGF0aFRlc3QoX0Jhc2VQYXRoVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTg5Myw2ICsyMDQ0LDYxIEBACiAgICAgICAgIHAgPSBQKEJBU0UsICJkaXJDIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5yZ2xvYigiRklMRWQiKSksIHsgUChCQVNFLCAiZGlyQy9kaXJEL2ZpbGVEIikgfSkKIAorICAgIGRlZiB0ZXN0X2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgIGVudi5wb3AoJ0hPTUUnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnVVNFUlBST0ZJTEUnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnSE9NRVBBVEgnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnSE9NRURSSVZFJywgTm9uZSkKKyAgICAgICAgICAgIGVudlsnVVNFUk5BTUUnXSA9ICdhbGljZScKKworICAgICAgICAgICAgIyB0ZXN0IHRoYXQgdGhlIHBhdGggcmV0dXJucyB1bmNoYW5nZWQKKyAgICAgICAgICAgIHAxID0gUCgnfi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDIgPSBQKCd+YWxpY2UvTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHAzID0gUCgnfmJvYi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDQgPSBQKCcvfi9NeSBEb2N1bWVudHMnKQorICAgICAgICAgICAgcDUgPSBQKCdkOn4vTXkgRG9jdW1lbnRzJykKKyAgICAgICAgICAgIHA2ID0gUCgnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDEuZXhwYW5kdXNlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDIuZXhwYW5kdXNlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcDMuZXhwYW5kdXNlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDQuZXhwYW5kdXNlcigpLCBwNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDYuZXhwYW5kdXNlcigpLCBwNikKKworICAgICAgICAgICAgZGVmIGNoZWNrKCk6CisgICAgICAgICAgICAgICAgZW52LnBvcCgnVVNFUk5BTUUnLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDEuZXhwYW5kdXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYWxpY2UvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHAyLmV4cGFuZHVzZXIpCisgICAgICAgICAgICAgICAgZW52WydVU0VSTkFNRSddID0gJ2FsaWNlJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuZXhwYW5kdXNlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCgnQzovVXNlcnMvYWxpY2UvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMy5leHBhbmR1c2VyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQKCdDOi9Vc2Vycy9ib2IvTXkgRG9jdW1lbnRzJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwNC5leHBhbmR1c2VyKCksIHA0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDUuZXhwYW5kdXNlcigpLCBwNSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHA2LmV4cGFuZHVzZXIoKSwgcDYpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZmlyc3QgbG9va3VwIGtleSBpbiB0aGUgZW52IHZhcnMKKyAgICAgICAgICAgIGVudlsnSE9NRSddID0gJ0M6XFxVc2Vyc1xcYWxpY2UnCisgICAgICAgICAgICBjaGVjaygpCisKKyAgICAgICAgICAgICMgdGVzdCB0aGF0IEhPTUVQQVRIIGlzIGF2YWlsYWJsZSBpbnN0ZWFkCisgICAgICAgICAgICBlbnYucG9wKCdIT01FJywgTm9uZSkKKyAgICAgICAgICAgIGVudlsnSE9NRVBBVEgnXSA9ICdDOlxcVXNlcnNcXGFsaWNlJworICAgICAgICAgICAgY2hlY2soKQorCisgICAgICAgICAgICBlbnZbJ0hPTUVEUklWRSddID0gJ0M6XFwnCisgICAgICAgICAgICBlbnZbJ0hPTUVQQVRIJ10gPSAnVXNlcnNcXGFsaWNlJworICAgICAgICAgICAgY2hlY2soKQorCisgICAgICAgICAgICBlbnYucG9wKCdIT01FRFJJVkUnLCBOb25lKQorICAgICAgICAgICAgZW52LnBvcCgnSE9NRVBBVEgnLCBOb25lKQorICAgICAgICAgICAgZW52WydVU0VSUFJPRklMRSddID0gJ0M6XFxVc2Vyc1xcYWxpY2UnCisgICAgICAgICAgICBjaGVjaygpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKaW5kZXggNTAyNTc5Mi4uNDFlNTA5MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKQEAgLTMxOSwyMSArMzE5LDUgQEAKICAgICAgICAgICAgIGYoKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBpbXBvcnQgc3lzCi0gICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0gICAgdGVzdF9jbGFzc2VzID0gKFRlc3RUcmFuZm9ybXMsIFRlc3RCdWdsZXRzKQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLSAgICAjIHZlcmlmeSByZWZlcmVuY2UgY291bnRpbmcKLSAgICBpZiB2ZXJib3NlIGFuZCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGNvdW50cyA9IFtOb25lXSAqIDUKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGNvdW50cykpOgotICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgY291bnRzW2ldID0gc3lzLmdldHRvdGFscmVmY291bnQoKQotICAgICAgICBwcmludChjb3VudHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKHZlcmJvc2U9VHJ1ZSkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKaW5kZXggYjg1YTI2YS4uYWI1ZjQxODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IGhtYWMKIGltcG9ydCB1bml0dGVzdAogZnJvbSBoYXNobGliIGltcG9ydCBtZDUsIHNoYTEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMgotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFBlcDI0N1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02Myw4ICs2Miw1IEBACiAgICAgZGVmIHRlc3RfaG1hYyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19tb2R1bGUoaG1hYywga2V5PWInYWJjJykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBlcDI0N1Rlc3QpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKaW5kZXggZmQ1MjU2Yy4uMWU1ZTIyNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAyOTIucHkKQEAgLTI0NCwxMSArMjQ0LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAndGltIGxpa2VzIHRvIGVhdCBhIGJhZyBvZiBoYW0gd29ydGggJDEwMCcpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0VGVtcGxhdGUsXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CmluZGV4IDViNjM5OTguLjk3ZGNlZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkKQEAgLTEsNyArMSw2IEBACiAjIFRoaXMgZmlsZSBpcyBtYXJrZWQgYXMgYmluYXJ5IGluIHRoZSBDVlMsIHRvIHByZXZlbnQgTWFjQ1ZTIGZyb20gcmVjb2RpbmcgaXQuCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFBFUDMxMjBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDAsOCArMzksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDhycsIG5zWyd1J10pCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBFUDMxMjBUZXN0LCBCdWlsdGluQ29tcGlsZVRlc3RzKQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQppbmRleCAyZTZiOTBhLi4wNjc5ODQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgUEVQMzEzMVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yOCw4ICsyNyw1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIGV4Y2VwdGlvbiBkaWRuJ3Qgb2NjdXIiKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUEVQMzEzMVRlc3QpCi0KLWlmIF9fbmFtZV9fPT0iX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CmluZGV4IDdkNGE1ZDguLjhkNTYwY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgZXJybm8KIGZyb20gZXJybm8gaW1wb3J0IEVFWElTVAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgU3ViT1NFcnJvcihPU0Vycm9yKToKICAgICBwYXNzCkBAIC0yMDIsOCArMjAxLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICcnKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CmluZGV4IDY5MTk0ZGYuLjIzZmZiZWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CkBAIC0xMDEzLDExICsxMDEzLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAoMSwgMiwgMywgNCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHRlc3RfY2xhc3NlcyA9IFtUZXN0UEVQMzgwT3BlcmF0aW9uXQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCi0KLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzIzNWNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkKQEAgLTAsMCArMSwzNCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3Jfc3RvcAorCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0UEVQNDc5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zdG9waXRlcmF0aW9uX3dyYXBwaW5nKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICBuZXh0KGcoKSkKKworICAgIGRlZiB0ZXN0X3N0b3BpdGVyYXRpb25fd3JhcHBpbmdfY29udGV4dChzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGYoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoZygpKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShleGMuX19jYXVzZV9fKSwgU3RvcEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShleGMuX19jb250ZXh0X18pLCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnX19jYXVzZV9fLCBfX2NvbnRleHRfXywgb3IgX19zdXBwcmVzc19jb250ZXh0X18gJworICAgICAgICAgICAgICAgICAgICAgICd3ZXJlIG5vdCBwcm9wZXJseSBzZXQnKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IGY1YWRkMjcuLmJhOTJkZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0zNTEsNyArMzUxLDEwIEBACiAKICAgICAgICAgZm9yIG5hbWUsIGV4YyBpbiBnZXRfZXhjZXB0aW9ucyhidWlsdGlucyk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lKToKLSAgICAgICAgICAgICAgICBpZiBleGMgaW4gKEJsb2NraW5nSU9FcnJvciwgUmVzb3VyY2VXYXJuaW5nKToKKyAgICAgICAgICAgICAgICBpZiBleGMgaW4gKEJsb2NraW5nSU9FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3BBc3luY0l0ZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY3Vyc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBleGMgaXMgbm90IE9TRXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZy5weSBiL0xpYi90ZXN0L3Rlc3RfcGtnLnB5CmluZGV4IDk4ODMwMDAuLjUzMmU4ZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtnLnB5CkBAIC0yOTEsOSArMjkxLDUgQEAKICAgICAgICAgaW1wb3J0IHQ4CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDguX19kb2NfXywgImRvYyBmb3IgdDgiKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2dpbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQppbmRleCAzNzBiMmFhLi41ZDlhNDUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjcmVhdGVfZW1wdHlfZmlsZQogCiBjbGFzcyBUZXN0SW1wb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNzYsOSArNzYsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCB2YXIpLCAxKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVGVzdEltcG9ydCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKaW5kZXggZTBjODYzNWRlLi41N2ViZjFmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC0xMDQsNiArMTA0LDkgQEAKIGNsYXNzIFBrZ3V0aWxQRVAzMDJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBjbGFzcyBNeVRlc3RMb2FkZXIob2JqZWN0KToKKyAgICAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2QpOgogICAgICAgICAgICAgIyBDb3VudCBob3cgbWFueSB0aW1lcyB0aGUgbW9kdWxlIGlzIHJlbG9hZGVkCiAgICAgICAgICAgICBtb2QuX19kaWN0X19bJ2xvYWRzJ10gPSBtb2QuX19kaWN0X18uZ2V0KCdsb2FkcycsIDApICsgMQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weSBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKaW5kZXggYjNkZTQzYi4uM2VhNzFmMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CkBAIC0yMzYsNyArMjM2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cywgMCkKIAogICAgIGRlZiB0ZXN0X2Rpc3Qoc2VsZik6Ci0gICAgICAgIHJlcyA9IHBsYXRmb3JtLmRpc3QoKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKKyAgICAgICAgICAgICAgICAnaWdub3JlJywKKyAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAorICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICApCisgICAgICAgICAgICByZXMgPSBwbGF0Zm9ybS5kaXN0KCkKIAogICAgIGRlZiB0ZXN0X2xpYmNfdmVyKHNlbGYpOgogICAgICAgICBpbXBvcnQgb3MKQEAgLTMwNSwxNiArMzEyLDM3IEBACiAgICAgICAgICAgICAgICAgZi53cml0ZSgnRmVkb3JhIHJlbGVhc2UgMTkgKFNjaHJceGY2ZGluZ2VyXHUyMDE5cyBDYXQpXG4nKQogCiAgICAgICAgICAgICB3aXRoIG1vY2sucGF0Y2goJ3BsYXRmb3JtLl9VTklYQ09ORkRJUicsIHRlbXBkaXIpOgotICAgICAgICAgICAgICAgIGRpc3RuYW1lLCB2ZXJzaW9uLCBkaXN0aWQgPSBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgZGlzdG5hbWUsIHZlcnNpb24sIGRpc3RpZCA9IHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdG5hbWUsICdGZWRvcmEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdG5hbWUsICdGZWRvcmEnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uLCAnMTknKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXN0aWQsICdTY2hyXHhmNmRpbmdlclx1MjAxOXMgQ2F0JykKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBQbGF0Zm9ybVRlc3QKLSAgICApCisKK2NsYXNzIERlcHJlY2F0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kaXN0X2RlcHJlY2F0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykgYXMgY206CisgICAgICAgICAgICBwbGF0Zm9ybS5kaXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20ud2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3QoKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNSBhbmQgd2lsbCBiZSByZW1vdmVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIDMuNycpCisKKyAgICBkZWYgdGVzdF9saW51eF9kaXN0cmlidXRpb25fZGVwcmVjYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0KCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGluIFB5dGhvbiAzLjUgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjcnKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGVuLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3Blbi5weQppbmRleCAxMTZiM2RkLi5kYTAxYTg3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wZW4ucHkKQEAgLTYxLDggKzYxLDUgQEAKICAgICAgICAgd2l0aCBvcy5wb3BlbihjbWQ9ImV4aXQgMCIsIG1vZGU9InciLCBidWZmZXJpbmc9LTEpOgogICAgICAgICAgICAgcGFzcwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9wZW5UZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IDhhM2M5ZjQuLmJjZWViOTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC00NCw2ICs0NCw3IEBACiBjbGFzcyBEdW1teVBPUDNIYW5kbGVyKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgogCiAgICAgQ0FQQVMgPSB7J1VJREwnOiBbXSwgJ0lNUExFTUVOVEFUSU9OJzogWydweXRob24tdGVzdGxpYi1wb3Atc2VydmVyJ119CisgICAgZW5hYmxlX1VURjggPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCkBAIC0xNDIsNiArMTQzLDExIEBACiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcgJy5qb2luKF9sbikpCiAgICAgICAgIHNlbGYucHVzaCgnLicpCiAKKyAgICBkZWYgY21kX3V0Zjgoc2VsZiwgYXJnKToKKyAgICAgICAgc2VsZi5wdXNoKCcrT0sgSSBrbm93IFJGQzY4NTYnCisgICAgICAgICAgICAgICAgICBpZiBzZWxmLmVuYWJsZV9VVEY4CisgICAgICAgICAgICAgICAgICBlbHNlICctRVJSIFdoYXQgaXMgVVRGOD8hJykKKwogICAgIGlmIFNVUFBPUlRTX1NTTDoKIAogICAgICAgICBkZWYgY21kX3N0bHMoc2VsZiwgYXJnKToKQEAgLTMwOSw2ICszMTUsMTYgQEAKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgpCiAgICAgICAgIHNlbGYuY2xpZW50LnVpZGwoJ2ZvbycpCiAKKyAgICBkZWYgdGVzdF91dGY4X3JhaXNlc19pZl91bnN1cHBvcnRlZChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlci5lbmFibGVfVVRGOCA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBvcGxpYi5lcnJvcl9wcm90bywgc2VsZi5jbGllbnQudXRmOCkKKworICAgIGRlZiB0ZXN0X3V0Zjgoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZXIuZW5hYmxlX1VURjggPSBUcnVlCisgICAgICAgIGV4cGVjdGVkID0gYicrT0sgSSBrbm93IFJGQzY4NTYnCisgICAgICAgIHJlc3VsdCA9IHNlbGYuY2xpZW50LnV0ZjgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9jYXBhKHNlbGYpOgogICAgICAgICBjYXBhID0gc2VsZi5jbGllbnQuY2FwYSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnSU1QTEVNRU5UQVRJT04nIGluIGNhcGEua2V5cygpKQpAQCAtMzQ1LDIzICszNjEsMTggQEAKIAogCiBpZiBTVVBQT1JUU19TU0w6CisgICAgZnJvbSB0ZXN0LnRlc3RfZnRwbGliIGltcG9ydCBTU0xDb25uZWN0aW9uCiAKLSAgICBjbGFzcyBEdW1teVBPUDNfU1NMSGFuZGxlcihEdW1teVBPUDNIYW5kbGVyKToKKyAgICBjbGFzcyBEdW1teVBPUDNfU1NMSGFuZGxlcihTU0xDb25uZWN0aW9uLCBEdW1teVBPUDNIYW5kbGVyKToKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubik6CiAgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCi0gICAgICAgICAgICBzc2xfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBjZXJ0ZmlsZT1DRVJURklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQotICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNzbF9zb2NrZXQpCi0gICAgICAgICAgICAjIE11c3QgdHJ5IGhhbmRzaGFrZSBiZWZvcmUgY2FsbGluZyBwdXNoKCkKLSAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYudGxzX3N0YXJ0aW5nID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5fZG9fdGxzX2hhbmRzaGFrZSgpCisgICAgICAgICAgICBzZWxmLnNlY3VyZV9jb25uZWN0aW9uKCkKICAgICAgICAgICAgIHNlbGYuc2V0X3Rlcm1pbmF0b3IoYiJcclxuIikKICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gW10KICAgICAgICAgICAgIHNlbGYucHVzaCgnK09LIGR1bW15IHBvcDMgc2VydmVyIHJlYWR5LiA8dGltZXN0YW1wPicpCisgICAgICAgICAgICBzZWxmLnRsc19hY3RpdmUgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnRsc19zdGFydGluZyA9IEZhbHNlCiAKIAogQHJlcXVpcmVzX3NzbApAQCAtNDUyLDcgKzQ2Myw3IEBACiAgICAgICAgIGRlbCBzZWxmLnRocmVhZCAgIyBDbGVhciBvdXQgYW55IGRhbmdsaW5nIFRocmVhZCBvYmplY3RzLgogCiAgICAgZGVmIHNlcnZlcihzZWxmLCBldnQsIHNlcnYpOgotICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICBzZXJ2Lmxpc3RlbigpCiAgICAgICAgIGV2dC5zZXQoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggZDc2Nzk4OS4uMmE1OWMzOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC05LDcgKzksNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcwotaW1wb3J0IGZjbnRsCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKIGltcG9ydCBzaHV0aWwKQEAgLTM1NSw3ICszNTQsNyBAQAogICAgIGRlZiB0ZXN0X29zY2xvZXhlYyhzZWxmKToKICAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWXxvcy5PX0NMT0VYRUMpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9pbmhlcml0YWJsZShmZCkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnT19FWExPQ0snKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBuZWVkcyBwb3NpeC5PX0VYTE9DSycpCkBAIC02NDMsOCArNjQyLDggQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9pbmhlcml0YWJsZShyKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5nZXRfaW5oZXJpdGFibGUodykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bChyLCBmY250bC5GX0dFVEZMKSAmIG9zLk9fTk9OQkxPQ0spCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmY250bC5mY250bCh3LCBmY250bC5GX0dFVEZMKSAmIG9zLk9fTk9OQkxPQ0spCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MuZ2V0X2Jsb2NraW5nKHIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmdldF9ibG9ja2luZyh3KSkKICAgICAgICAgIyB0cnkgcmVhZGluZyBmcm9tIGFuIGVtcHR5IHBpcGU6IHRoaXMgc2hvdWxkIGZhaWwsIG5vdCBibG9jawogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5yZWFkLCByLCAxKQogICAgICAgICAjIHRyeSBhIHdyaXRlIGJpZyBlbm91Z2ggdG8gZmlsbC11cCB0aGUgcGlwZTogdGhpcyBzaG91bGQgZWl0aGVyCkBAIC0xMTg0LDE2ICsxMTgzLDE2IEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQogICAgICAgICBmZCA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oZm5fd2l0aF9OVUwsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCkgIyByYWlzZXMKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGlmIGZkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZuKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5ta2RpciwgZm5fd2l0aF9OVUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLm1rZGlyLCBmbl93aXRoX05VTCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmbikpCiAgICAgICAgIG9wZW4oZm4sICd3YicpLmNsb3NlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zdGF0LCBmbl93aXRoX05VTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3RhdCwgZm5fd2l0aF9OVUwpCiAKICAgICBkZWYgdGVzdF9wYXRoX3dpdGhfbnVsbF9ieXRlKHNlbGYpOgogICAgICAgICBmbiA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQppbmRleCAxZDQ1OTZlLi45ZDIwNDcxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQpAQCAtNTcsMTggKzU3LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguam9pbihiIi9mb28vIiwgYiJiYXIvIiwgYiJiYXovIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYiIvZm9vL2Jhci9iYXovIikKIAotICAgIGRlZiB0ZXN0X2pvaW5fZXJyb3JzKHNlbGYpOgotICAgICAgICAjIENoZWNrIHBvc2l4cGF0aC5qb2luIHJhaXNlcyBmcmllbmRseSBUeXBlRXJyb3JzLgotICAgICAgICBlcnJtc2cgPSAiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggY29tcG9uZW50cyIKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKLSAgICAgICAgICAgIHBvc2l4cGF0aC5qb2luKGInYnl0ZXMnLCAnc3RyJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKLSAgICAgICAgICAgIHBvc2l4cGF0aC5qb2luKCdzdHInLCBiJ2J5dGVzJykKLSAgICAgICAgIyByZWdyZXNzaW9uLCBzZWUgIzE1Mzc3Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHBvc2l4cGF0aC5qb2luKE5vbmUsICdzdHInKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzWzBdLCBlcnJtc2cpCi0KICAgICBkZWYgdGVzdF9zcGxpdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguc3BsaXQoIi9mb28vYmFyIiksICgiL2ZvbyIsICJiYXIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguc3BsaXQoIi8iKSwgKCIvIiwgIiIpKQpAQCAtNTIzLDYgKzUxMSw2MCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MuZ2V0Y3dkYiA9IHJlYWxfZ2V0Y3dkYgogCisgICAgZGVmIHRlc3RfY29tbW9ucGF0aChzZWxmKToKKyAgICAgICAgZGVmIGNoZWNrKHBhdGhzLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5jb21tb25wYXRoKHBhdGhzKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5jb21tb25wYXRoKFtvcy5mc2VuY29kZShwKSBmb3IgcCBpbiBwYXRoc10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5mc2VuY29kZShleHBlY3RlZCkpCisgICAgICAgIGRlZiBjaGVja19lcnJvcihleGMsIHBhdGhzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YywgcG9zaXhwYXRoLmNvbW1vbnBhdGgsIHBhdGhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcy5mc2VuY29kZShwKSBmb3IgcCBpbiBwYXRoc10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsIFtdKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJy91c3InLCAndXNyJ10pCisgICAgICAgIGNoZWNrX2Vycm9yKFZhbHVlRXJyb3IsIFsndXNyJywgJy91c3InXSkKKworICAgICAgICBjaGVjayhbJy91c3IvbG9jYWwnXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvbG9jYWwnLCAnL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci9sb2NhbC8nLCAnL3Vzci9sb2NhbCddLCAnL3Vzci9sb2NhbCcpCisgICAgICAgIGNoZWNrKFsnL3Vzci9sb2NhbC8nLCAnL3Vzci9sb2NhbC8nXSwgJy91c3IvbG9jYWwnKQorICAgICAgICBjaGVjayhbJy91c3IvL2xvY2FsJywgJy8vdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvdXNyLy4vbG9jYWwnLCAnLy4vdXNyL2xvY2FsJ10sICcvdXNyL2xvY2FsJykKKyAgICAgICAgY2hlY2soWycvJywgJy9kZXYnXSwgJy8nKQorICAgICAgICBjaGVjayhbJy91c3InLCAnL2RldiddLCAnLycpCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWIvJywgJy91c3IvbGliL3B5dGhvbjMnXSwgJy91c3IvbGliJykKKyAgICAgICAgY2hlY2soWycvdXNyL2xpYi8nLCAnL3Vzci9saWI2NC8nXSwgJy91c3InKQorCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWInLCAnL3Vzci9saWI2NCddLCAnL3VzcicpCisgICAgICAgIGNoZWNrKFsnL3Vzci9saWIvJywgJy91c3IvbGliNjQnXSwgJy91c3InKQorCisgICAgICAgIGNoZWNrKFsnc3BhbSddLCAnc3BhbScpCisgICAgICAgIGNoZWNrKFsnc3BhbScsICdzcGFtJ10sICdzcGFtJykKKyAgICAgICAgY2hlY2soWydzcGFtJywgJ2Fsb3QnXSwgJycpCisgICAgICAgIGNoZWNrKFsnYW5kL2phbScsICdhbmQvc3BhbSddLCAnYW5kJykKKyAgICAgICAgY2hlY2soWydhbmQvL2phbScsICdhbmQvc3BhbS8vJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZC8uL2phbScsICcuL2FuZC9zcGFtJ10sICdhbmQnKQorICAgICAgICBjaGVjayhbJ2FuZC9qYW0nLCAnYW5kL3NwYW0nLCAnYWxvdCddLCAnJykKKyAgICAgICAgY2hlY2soWydhbmQvamFtJywgJ2FuZC9zcGFtJywgJ2FuZCddLCAnYW5kJykKKworICAgICAgICBjaGVjayhbJyddLCAnJykKKyAgICAgICAgY2hlY2soWycnLCAnc3BhbS9hbG90J10sICcnKQorICAgICAgICBjaGVja19lcnJvcihWYWx1ZUVycm9yLCBbJycsICcvc3BhbS9hbG90J10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InL3Vzci9saWIvJywgJy91c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW2InL3Vzci9saWIvJywgJ3Vzci9saWIvcHl0aG9uMyddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4cGF0aC5jb21tb25wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYid1c3IvbGliLycsICcvdXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvJywgYicvdXNyL2xpYi9weXRob24zJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXhwYXRoLmNvbW1vbnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL3Vzci9saWIvJywgYid1c3IvbGliL3B5dGhvbjMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeHBhdGguY29tbW9ucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyd1c3IvbGliLycsIGInL3Vzci9saWIvcHl0aG9uMyddKQorCiAKIGNsYXNzIFBvc2l4Q29tbW9uVGVzdCh0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXRobW9kdWxlID0gcG9zaXhwYXRoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvdy5weSBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CmluZGV4IDIwYjEwNjYuLjZmZWFjNDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CkBAIC0xMjIsOCArMTIyLDUgQEAKICAgICAgICAgICAgIGVxKHBvdyhhLCAtZml2ZXRvKSwgZXhwZWN0ZWQpCiAgICAgICAgIGVxKGV4cGVjdGVkLCAxLjApICAgIyBlbHNlIHdlIGRpZG4ndCBwdXNoIGZpdmV0byB0byBldmVubmVzcwogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChQb3dUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weSBiL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CmluZGV4IDE4MGRkYjAuLjM1N2M1Y2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHByaW50LnB5CkBAIC0xLDEyICsxLDE0IEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQogCi1pbXBvcnQgcHByaW50Ci1pbXBvcnQgdGVzdC5zdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZXN0LnRlc3Rfc2V0Ci1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBpbwogaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHBwcmludAoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHRlc3QudGVzdF9zZXQKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CiAKICMgbGlzdCwgdHVwbGUgYW5kIGRpY3Qgc3ViY2xhc3NlcyB0aGF0IGRvIG9yIGRvbid0IG92ZXJ3cml0ZSBfX3JlcHJfXwogY2xhc3MgbGlzdDIobGlzdCk6CkBAIC00OCw2ICs1MCwyNSBAQAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN0cihpZChzZWxmKSkKIAorIyBDbGFzcyBPcmRlcmFibGUgaXMgb3JkZXJhYmxlIHdpdGggYW55IHR5cGUKK2NsYXNzIE9yZGVyYWJsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaGFzaCk6CisgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiAhPSBvdGhlcgorICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiA9PSBvdGhlcgorICAgIGRlZiBfX2dlX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiBpcyBvdGhlcgorICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZiBpcyBub3Qgb3RoZXIKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9oYXNoCisKIGNsYXNzIFF1ZXJ5VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNTUsNiArNzYsMTggQEAKICAgICAgICAgc2VsZi5iID0gbGlzdChyYW5nZSgyMDApKQogICAgICAgICBzZWxmLmFbLTEyXSA9IHNlbGYuYgogCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcigpCisgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoaW5kZW50PTQsIHdpZHRoPTQwLCBkZXB0aD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbT1pby5TdHJpbmdJTygpLCBjb21wYWN0PVRydWUpCisgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoNCwgNDAsIDUsIGlvLlN0cmluZ0lPKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHBwID0gcHByaW50LlByZXR0eVByaW50ZXIoNCwgNDAsIDUsIGlvLlN0cmluZ0lPKCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCBpbmRlbnQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCBkZXB0aD0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwcHJpbnQuUHJldHR5UHJpbnRlciwgZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBwcmludC5QcmV0dHlQcmludGVyLCB3aWR0aD0wKQorCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IC5pc3JlY3Vyc2l2ZSgpIGFuZCAuaXNyZWFkYWJsZSgpIHcvbyByZWN1cnNpb24KICAgICAgICAgcHAgPSBwcHJpbnQuUHJldHR5UHJpbnRlcigpCkBAIC0xOTUsMTAgKzIyOCw1MiBAQAogICAgICAgICBvID0gW28xLCBvMl0KICAgICAgICAgZXhwZWN0ZWQgPSAiIiJcCiBbICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLAorICAgIHsnZmlyc3QnOiAxLCAnc2Vjb25kJzogMiwgJ3RoaXJkJzogM31dIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgaW5kZW50PTQsIHdpZHRoPTQyKSwgZXhwZWN0ZWQpCisgICAgICAgIGV4cGVjdGVkID0gIiIiXAorWyAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSwKICAgICB7ICAgJ2ZpcnN0JzogMSwKICAgICAgICAgJ3NlY29uZCc6IDIsCiAgICAgICAgICd0aGlyZCc6IDN9XSIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIGluZGVudD00LCB3aWR0aD00MiksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIGluZGVudD00LCB3aWR0aD00MSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfd2lkdGgoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gIiIiXAorW1tbW1tbMSwgMiwgM10sCisgICAgICcxIDInXV1dXSwKKyB7MTogWzEsIDIsIDNdLAorICAyOiBbMTIsIDM0XX0sCisgJ2FiYyBkZWYgZ2hpJywKKyAoJ2FiIGNkIGVmJywpLAorIHNldDIoezEsIDIzfSksCisgW1tbW1sxLCAyLCAzXSwKKyAgICAgJzEgMiddXV1dXSIiIgorICAgICAgICBvID0gZXZhbChleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD0xNSksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTE2KSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobywgd2lkdGg9MjUpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD0xNCksICIiIlwKK1tbW1tbWzEsCisgICAgICAyLAorICAgICAgM10sCisgICAgICcxICcKKyAgICAgJzInXV1dXSwKKyB7MTogWzEsCisgICAgICAyLAorICAgICAgM10sCisgIDI6IFsxMiwKKyAgICAgIDM0XX0sCisgJ2FiYyBkZWYgJworICdnaGknLAorICgnYWIgY2QgJworICAnZWYnLCksCisgc2V0Mih7MSwKKyAgICAgICAyM30pLAorIFtbW1tbMSwKKyAgICAgIDIsCisgICAgICAzXSwKKyAgICAgJzEgJworICAgICAnMiddXV1dXSIiIikKIAogICAgIGRlZiB0ZXN0X3NvcnRlZF9kaWN0KHNlbGYpOgogICAgICAgICAjIFN0YXJ0aW5nIGluIFB5dGhvbiAyLjUsIHBwcmludCBzb3J0cyBkaWN0IGRpc3BsYXlzIGJ5IGtleSByZWdhcmRsZXNzCkBAIC0yMTksMTkgKzI5NCw1MSBAQAogICAgICAgICAgICAgciJ7NTogW1tdXSwgJ3h5XHRhYlxuJzogKDMsKSwgKCk6IHt9fSIpCiAKICAgICBkZWYgdGVzdF9vcmRlcmVkX2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICdPcmRlcmVkRGljdCgpJykKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAnT3JkZXJlZERpY3QoKScpCiAgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQogICAgICAgICBkID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCiAiIiJcCi17J3RoZSc6IDAsCi0gJ3F1aWNrJzogMSwKLSAnYnJvd24nOiAyLAotICdmb3gnOiAzLAotICdqdW1wZWQnOiA0LAotICdvdmVyJzogNSwKLSAnYSc6IDYsCi0gJ2xhenknOiA3LAotICdkb2cnOiA4fSIiIikKK09yZGVyZWREaWN0KFsoJ3RoZScsIDApLAorICAgICAgICAgICAgICgncXVpY2snLCAxKSwKKyAgICAgICAgICAgICAoJ2Jyb3duJywgMiksCisgICAgICAgICAgICAgKCdmb3gnLCAzKSwKKyAgICAgICAgICAgICAoJ2p1bXBlZCcsIDQpLAorICAgICAgICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICAgICAgICgnYScsIDYpLAorICAgICAgICAgICAgICgnbGF6eScsIDcpLAorICAgICAgICAgICAgICgnZG9nJywgOCldKSIiIikKKworICAgIGRlZiB0ZXN0X21hcHBpbmdfcHJveHkoc2VsZik6CisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gZGljdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgbSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChtKSwgIiIiXAorbWFwcGluZ3Byb3h5KHsnYSc6IDYsCisgICAgICAgICAgICAgICdicm93bic6IDIsCisgICAgICAgICAgICAgICdkb2cnOiA4LAorICAgICAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAgICAgJ2p1bXBlZCc6IDQsCisgICAgICAgICAgICAgICdsYXp5JzogNywKKyAgICAgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICAgICAncXVpY2snOiAxLAorICAgICAgICAgICAgICAndGhlJzogMH0pIiIiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIG0gPSB0eXBlcy5NYXBwaW5nUHJveHlUeXBlKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobSksICIiIlwKK21hcHBpbmdwcm94eShPcmRlcmVkRGljdChbKCd0aGUnLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdxdWljaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jyb3duJywgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm94JywgMyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnb3ZlcicsIDUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9nJywgOCldKSkiIiIpCisKICAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKICAgICAgICAgbyA9IHsnbmFtZXMgd2l0aCBzcGFjZXMnOiAnc2hvdWxkIGJlIHByZXNlbnRlZCB1c2luZyByZXByKCknLAogICAgICAgICAgICAgICdvdGhlcnMuc2hvdWxkLm5vdC5iZSc6ICdsaWtlLnRoaXMnfQpAQCAtNTM1LDE2ICs2NDIsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkaWN0LmZyb21rZXlzKGtleXMsIDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiAwLCAlcjogMH0nICUgdHVwbGUoc29ydGVkKGtleXMsIGtleT1pZCkpKQogCisgICAgZGVmIHRlc3Rfc29ydF9vcmRlcmFibGVfYW5kX3Vub3JkZXJhYmxlX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAyMjcyMTogIHNvcnRlZCBwcHJpbnRzIGlzIG5vdCBzdGFibGUKKyAgICAgICAgYSA9IFVub3JkZXJhYmxlKCkKKyAgICAgICAgYiA9IE9yZGVyYWJsZShoYXNoKGEpKSAgIyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlCisgICAgICAgICMgc2VsZi10ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhhLCBiKQorICAgICAgICBzZWxmLmFzc2VydExlc3Moc3RyKHR5cGUoYikpLCBzdHIodHlwZShhKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKFtiLCBhXSksIFthLCBiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoW2EsIGJdKSwgW2EsIGJdKQorICAgICAgICAjIHNldAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNldChbYiwgYV0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyLFxuICVyfScgJSAoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KFthLCBiXSksIHdpZHRoPTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd7JXIsXG4gJXJ9JyAlIChhLCBiKSkKKyAgICAgICAgIyBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZGljdC5mcm9ta2V5cyhbYiwgYV0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiBOb25lLFxuICVyOiBOb25lfScgJSAoYSwgYikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZGljdC5mcm9ta2V5cyhbYSwgYl0pLCB3aWR0aD0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyVyOiBOb25lLFxuICVyOiBOb25lfScgJSAoYSwgYikpCisKICAgICBkZWYgdGVzdF9zdHJfd3JhcChzZWxmKToKICAgICAgICAgIyBwcHJpbnQgdHJpZXMgdG8gd3JhcCBzdHJpbmdzIGludGVsbGlnZW50bHkKICAgICAgICAgZm94ID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChmb3gsIHdpZHRoPTIwKSwgIiIiXAotKCd0aGUgcXVpY2sgJwotICdicm93biBmb3ggJwotICdqdW1wZWQgb3ZlciBhICcKLSAnbGF6eSBkb2cnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChmb3gsIHdpZHRoPTE5KSwgIiIiXAorKCd0aGUgcXVpY2sgYnJvd24gJworICdmb3gganVtcGVkIG92ZXIgJworICdhIGxhenkgZG9nJykiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBmb3gsICdjJzogMn0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjYpLCAiIiJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MjUpLCAiIiJcCiB7J2EnOiAxLAogICdiJzogJ3RoZSBxdWljayBicm93biAnCiAgICAgICAnZm94IGp1bXBlZCBvdmVyICcKQEAgLTU1NiwxMiArNjgyLDM0IEBACiAgICAgICAgICMgLSBub24tQVNDSUkgaXMgYWxsb3dlZAogICAgICAgICAjIC0gYW4gYXBvc3Ryb3BoZSBkb2Vzbid0IGRpc3J1cHQgdGhlIHBwcmludAogICAgICAgICBzcGVjaWFsID0gIlBvcnRvbnMgZGl4IGJvbnMgXCJ3aGlza3lzXCJcbsOgIGwnYXZvY2F0IGdvdWphdFx0IHF1aSBmdW1haXQgYXUgem9vIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTIxKSwgIiIiXAotKCdQb3J0b25zIGRpeCAnCi0gJ2JvbnMgIndoaXNreXMiXFxuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTY4KSwgcmVwcihzcGVjaWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0zMSksICIiIlwKKygnUG9ydG9ucyBkaXggYm9ucyAid2hpc2t5cyJcXG4nCisgIsOgIGwnYXZvY2F0IGdvdWphdFxcdCBxdWkgIgorICdmdW1haXQgYXUgem9vJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MjApLCAiIiJcCisoJ1BvcnRvbnMgZGl4IGJvbnMgJworICcid2hpc2t5cyJcXG4nCiAgIsOgIGwnYXZvY2F0ICIKICAnZ291amF0XFx0IHF1aSAnCiAgJ2Z1bWFpdCBhdSB6b28nKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9MzUpLCAiIiJcCitbW1tbWydQb3J0b25zIGRpeCBib25zICJ3aGlza3lzIlxcbicKKyAgICAgIsOgIGwnYXZvY2F0IGdvdWphdFxcdCBxdWkgIgorICAgICAnZnVtYWl0IGF1IHpvbyddXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9MjUpLCAiIiJcCitbW1tbWydQb3J0b25zIGRpeCBib25zICcKKyAgICAgJyJ3aGlza3lzIlxcbicKKyAgICAgIsOgIGwnYXZvY2F0ICIKKyAgICAgJ2dvdWphdFxcdCBxdWkgJworICAgICAnZnVtYWl0IGF1IHpvbyddXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9MjMpLCAiIiJcCitbW1tbWydQb3J0b25zIGRpeCAnCisgICAgICdib25zICJ3aGlza3lzIlxcbicKKyAgICAgIsOgIGwnYXZvY2F0ICIKKyAgICAgJ2dvdWphdFxcdCBxdWkgJworICAgICAnZnVtYWl0IGF1ICcKKyAgICAgJ3pvbyddXV1dXSIiIikKICAgICAgICAgIyBBbiB1bndyYXBwYWJsZSBzdHJpbmcgaXMgZm9ybWF0dGVkIGFzIGl0cyByZXByCiAgICAgICAgIHVud3JhcHBhYmxlID0gIngiICogMTAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQodW53cmFwcGFibGUsIHdpZHRoPTgwKSwgcmVwcih1bndyYXBwYWJsZSkpCkBAIC01ODQsNyArNzMyLDI2NyBAQAogICAxNCwgMTVdLAogIFtdLCBbMF0sIFswLCAxXSwgWzAsIDEsIDJdLCBbMCwgMSwgMiwgM10sCiAgWzAsIDEsIDIsIDMsIDRdXSIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KG8sIHdpZHRoPTQ4LCBjb21wYWN0PVRydWUpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChvLCB3aWR0aD00NywgY29tcGFjdD1UcnVlKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9jb21wYWN0X3dpZHRoKHNlbGYpOgorICAgICAgICBsZXZlbHMgPSAyMAorICAgICAgICBudW1iZXIgPSAxMAorICAgICAgICBvID0gWzBdICogbnVtYmVyCisgICAgICAgIGZvciBpIGluIHJhbmdlKGxldmVscyAtIDEpOgorICAgICAgICAgICAgbyA9IFtvXQorICAgICAgICBmb3IgdyBpbiByYW5nZShsZXZlbHMgKiAyICsgMSwgbGV2ZWxzICsgMyAqIG51bWJlciAtIDEpOgorICAgICAgICAgICAgbGluZXMgPSBwcHJpbnQucGZvcm1hdChvLCB3aWR0aD13LCBjb21wYWN0PVRydWUpLnNwbGl0bGluZXMoKQorICAgICAgICAgICAgbWF4d2lkdGggPSBtYXgobWFwKGxlbiwgbGluZXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobWF4d2lkdGgsIHcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobWF4d2lkdGgsIHcgLSAzKQorCisgICAgZGVmIHRlc3RfYnl0ZXNfd3JhcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChiJycsIHdpZHRoPTEpLCAiYicnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChiJ2FiY2QnLCB3aWR0aD0xKSwgImInYWJjZCciKQorICAgICAgICBsZXR0ZXJzID0gYidhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0yOSksIHJlcHIobGV0dGVycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MTkpLCAiIiJcCisoYidhYmNkZWZnaGlqa2wnCisgYidtbm9wcXJzdHV2d3h5eicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTE4KSwgIiIiXAorKGInYWJjZGVmZ2hpamtsJworIGInbW5vcHFyc3R1dnd4JworIGIneXonKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0xNiksICIiIlwKKyhiJ2FiY2RlZmdoaWprbCcKKyBiJ21ub3BxcnN0dXZ3eCcKKyBiJ3l6JykiIiIpCisgICAgICAgIHNwZWNpYWwgPSBieXRlcyhyYW5nZSgxNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NjEpLCByZXByKHNwZWNpYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTQ4KSwgIiIiXAorKGInXFx4MDBcXHgwMVxceDAyXFx4MDNcXHgwNFxceDA1XFx4MDZcXHgwN1xceDA4XFx0XFxuXFx4MGInCisgYidcXHgwY1xcclxceDBlXFx4MGYnKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD0zMiksICIiIlwKKyhiJ1xceDAwXFx4MDFcXHgwMlxceDAzJworIGInXFx4MDRcXHgwNVxceDA2XFx4MDdcXHgwOFxcdFxcblxceDBiJworIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9MSksICIiIlwKKyhiJ1xceDAwXFx4MDFcXHgwMlxceDAzJworIGInXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgYidcXHgwOFxcdFxcblxceDBiJworIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoeydhJzogMSwgJ2InOiBsZXR0ZXJzLCAnYyc6IDJ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTIxKSwgIiIiXAoreydhJzogMSwKKyAnYic6IGInYWJjZGVmZ2hpamtsJworICAgICAgYidtbm9wcXJzdHV2d3gnCisgICAgICBiJ3l6JywKKyAnYyc6IDJ9IiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsnYSc6IDEsICdiJzogbGV0dGVycywgJ2MnOiAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0yMCksICIiIlwKK3snYSc6IDEsCisgJ2InOiBiJ2FiY2RlZmdoJworICAgICAgYidpamtsbW5vcCcKKyAgICAgIGIncXJzdHV2d3h5eicsCisgJ2MnOiAyfSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW1tsZXR0ZXJzXV1dXV1dLCB3aWR0aD0yNSksICIiIlwKK1tbW1tbW2InYWJjZGVmZ2hpamtsbW5vcCcKKyAgICAgIGIncXJzdHV2d3h5eiddXV1dXV0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tbc3BlY2lhbF1dXV1dXSwgd2lkdGg9NDEpLCAiIiJcCitbW1tbW1tiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgICAgICBiJ1xceDA4XFx0XFxuXFx4MGJcXHgwY1xcclxceDBlXFx4MGYnXV1dXV1dIiIiKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHBwcmludCBpcyBhIHVzYWJsZSByZXByCisgICAgICAgIGZvciB3aWR0aCBpbiByYW5nZSgxLCA2NCk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD13aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChmb3JtYXR0ZWQpLCBzcGVjaWFsKQorICAgICAgICAgICAgZm9ybWF0dGVkID0gcHByaW50LnBmb3JtYXQoW3NwZWNpYWxdICogMiwgd2lkdGg9d2lkdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoZm9ybWF0dGVkKSwgW3NwZWNpYWxdICogMikKKworICAgIGRlZiB0ZXN0X2J5dGVhcnJheV93cmFwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGJ5dGVhcnJheSgpLCB3aWR0aD0xKSwgImJ5dGVhcnJheShiJycpIikKKyAgICAgICAgbGV0dGVycyA9IGJ5dGVhcnJheShiJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD00MCksIHJlcHIobGV0dGVycykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQobGV0dGVycywgd2lkdGg9MjgpLCAiIiJcCitieXRlYXJyYXkoYidhYmNkZWZnaGlqa2wnCisgICAgICAgICAgYidtbm9wcXJzdHV2d3h5eicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGxldHRlcnMsIHdpZHRoPTI3KSwgIiIiXAorYnl0ZWFycmF5KGInYWJjZGVmZ2hpamtsJworICAgICAgICAgIGInbW5vcHFyc3R1dnd4JworICAgICAgICAgIGIneXonKSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChsZXR0ZXJzLCB3aWR0aD0yNSksICIiIlwKK2J5dGVhcnJheShiJ2FiY2RlZmdoaWprbCcKKyAgICAgICAgICBiJ21ub3BxcnN0dXZ3eCcKKyAgICAgICAgICBiJ3l6JykiIiIpCisgICAgICAgIHNwZWNpYWwgPSBieXRlYXJyYXkocmFuZ2UoMTYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTcyKSwgcmVwcihzcGVjaWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzcGVjaWFsLCB3aWR0aD01NyksICIiIlwKK2J5dGVhcnJheShiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDdcXHgwOFxcdFxcblxceDBiJworICAgICAgICAgIGInXFx4MGNcXHJcXHgwZVxceDBmJykiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc3BlY2lhbCwgd2lkdGg9NDEpLCAiIiJcCitieXRlYXJyYXkoYidcXHgwMFxceDAxXFx4MDJcXHgwMycKKyAgICAgICAgICBiJ1xceDA0XFx4MDVcXHgwNlxceDA3XFx4MDhcXHRcXG5cXHgwYicKKyAgICAgICAgICBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHNwZWNpYWwsIHdpZHRoPTEpLCAiIiJcCitieXRlYXJyYXkoYidcXHgwMFxceDAxXFx4MDJcXHgwMycKKyAgICAgICAgICBiJ1xceDA0XFx4MDVcXHgwNlxceDA3JworICAgICAgICAgIGInXFx4MDhcXHRcXG5cXHgwYicKKyAgICAgICAgICBiJ1xceDBjXFxyXFx4MGVcXHgwZicpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsnYSc6IDEsICdiJzogbGV0dGVycywgJ2MnOiAyfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0zMSksICIiIlwKK3snYSc6IDEsCisgJ2InOiBieXRlYXJyYXkoYidhYmNkZWZnaGlqa2wnCisgICAgICAgICAgICAgICAgYidtbm9wcXJzdHV2d3gnCisgICAgICAgICAgICAgICAgYid5eicpLAorICdjJzogMn0iIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoW1tbW1tsZXR0ZXJzXV1dXV0sIHdpZHRoPTM3KSwgIiIiXAorW1tbW1tieXRlYXJyYXkoYidhYmNkZWZnaGlqa2xtbm9wJworICAgICAgICAgICAgICAgYidxcnN0dXZ3eHl6JyldXV1dXSIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChbW1tbW3NwZWNpYWxdXV1dXSwgd2lkdGg9NTApLCAiIiJcCitbW1tbW2J5dGVhcnJheShiJ1xceDAwXFx4MDFcXHgwMlxceDAzXFx4MDRcXHgwNVxceDA2XFx4MDcnCisgICAgICAgICAgICAgICBiJ1xceDA4XFx0XFxuXFx4MGJcXHgwY1xcclxceDBlXFx4MGYnKV1dXV1dIiIiKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QoaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiZGVmYXVsdGRpY3QoPGNsYXNzICdpbnQnPiwge30pIikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChpbnQsIHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorZGVmYXVsdGRpY3QoPGNsYXNzICdpbnQnPiwKKyAgICAgICAgICAgIHsnYSc6IDYsCisgICAgICAgICAgICAgJ2Jyb3duJzogMiwKKyAgICAgICAgICAgICAnZG9nJzogOCwKKyAgICAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAgICAnanVtcGVkJzogNCwKKyAgICAgICAgICAgICAnbGF6eSc6IDcsCisgICAgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICAgICdxdWljayc6IDEsCisgICAgICAgICAgICAgJ3RoZSc6IDB9KSIiIikKKworICAgIGRlZiB0ZXN0X2NvdW50ZXIoc2VsZik6CisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Db3VudGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgIkNvdW50ZXIoKSIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Db3VudGVyKCdzZW5zZWxlc3NuZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD00MCksCisiIiJcCitDb3VudGVyKHsncyc6IDYsCisgICAgICAgICAnZSc6IDQsCisgICAgICAgICAnbic6IDIsCisgICAgICAgICAnbCc6IDF9KSIiIikKKworICAgIGRlZiB0ZXN0X2NoYWlubWFwKHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiQ2hhaW5NYXAoe30pIikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGl0ZW1zID0gbGlzdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLkNoYWluTWFwKGRpY3QoaXRlbXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorQ2hhaW5NYXAoeydhJzogNiwKKyAgICAgICAgICAnYnJvd24nOiAyLAorICAgICAgICAgICdkb2cnOiA4LAorICAgICAgICAgICdmb3gnOiAzLAorICAgICAgICAgICdqdW1wZWQnOiA0LAorICAgICAgICAgICdsYXp5JzogNywKKyAgICAgICAgICAnb3Zlcic6IDUsCisgICAgICAgICAgJ3F1aWNrJzogMSwKKyAgICAgICAgICAndGhlJzogMH0pIiIiKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoZGljdChpdGVtcyksIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KGl0ZW1zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK0NoYWluTWFwKHsnYSc6IDYsCisgICAgICAgICAgJ2Jyb3duJzogMiwKKyAgICAgICAgICAnZG9nJzogOCwKKyAgICAgICAgICAnZm94JzogMywKKyAgICAgICAgICAnanVtcGVkJzogNCwKKyAgICAgICAgICAnbGF6eSc6IDcsCisgICAgICAgICAgJ292ZXInOiA1LAorICAgICAgICAgICdxdWljayc6IDEsCisgICAgICAgICAgJ3RoZSc6IDB9LAorICAgICAgICAgT3JkZXJlZERpY3QoWygndGhlJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgKCdxdWljaycsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICgnYnJvd24nLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICAoJ2ZveCcsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICgnanVtcGVkJywgNCksCisgICAgICAgICAgICAgICAgICAgICAgKCdvdmVyJywgNSksCisgICAgICAgICAgICAgICAgICAgICAgKCdhJywgNiksCisgICAgICAgICAgICAgICAgICAgICAgKCdsYXp5JywgNyksCisgICAgICAgICAgICAgICAgICAgICAgKCdkb2cnLCA4KV0pKSIiIikKKworICAgIGRlZiB0ZXN0X2RlcXVlKHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVxdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiZGVxdWUoW10pIikKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLmRlcXVlKG1heGxlbj03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiZGVxdWUoW10sIG1heGxlbj03KSIpCisgICAgICAgIHdvcmRzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZycuc3BsaXQoKQorICAgICAgICBkID0gY29sbGVjdGlvbnMuZGVxdWUoemlwKHdvcmRzLCBpdGVydG9vbHMuY291bnQoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitkZXF1ZShbKCd0aGUnLCAwKSwKKyAgICAgICAoJ3F1aWNrJywgMSksCisgICAgICAgKCdicm93bicsIDIpLAorICAgICAgICgnZm94JywgMyksCisgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAoJ2RvZycsIDgpXSkiIiIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5kZXF1ZSh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSwgbWF4bGVuPTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCksCisiIiJcCitkZXF1ZShbKCdicm93bicsIDIpLAorICAgICAgICgnZm94JywgMyksCisgICAgICAgKCdqdW1wZWQnLCA0KSwKKyAgICAgICAoJ292ZXInLCA1KSwKKyAgICAgICAoJ2EnLCA2KSwKKyAgICAgICAoJ2xhenknLCA3KSwKKyAgICAgICAoJ2RvZycsIDgpXSwKKyAgICAgIG1heGxlbj03KSIiIikKKworICAgIGRlZiB0ZXN0X3VzZXJfZGljdChzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJEaWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkLCB3aWR0aD0xKSwgInt9IikKKyAgICAgICAgd29yZHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nJy5zcGxpdCgpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyRGljdCh6aXAod29yZHMsIGl0ZXJ0b29scy5jb3VudCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChkKSwKKyIiIlwKK3snYSc6IDYsCisgJ2Jyb3duJzogMiwKKyAnZG9nJzogOCwKKyAnZm94JzogMywKKyAnanVtcGVkJzogNCwKKyAnbGF6eSc6IDcsCisgJ292ZXInOiA1LAorICdxdWljayc6IDEsCisgJ3RoZSc6IDB9IiIiKQorCisgICAgZGVmIHRlc3RfdXNlcl9kaWN0KHNlbGYpOgorICAgICAgICBkID0gY29sbGVjdGlvbnMuVXNlckxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTEpLCAiW10iKQorICAgICAgICB3b3JkcyA9ICd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnLnNwbGl0KCkKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJMaXN0KHppcCh3b3JkcywgaXRlcnRvb2xzLmNvdW50KCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQpLAorIiIiXAorWygndGhlJywgMCksCisgKCdxdWljaycsIDEpLAorICgnYnJvd24nLCAyKSwKKyAoJ2ZveCcsIDMpLAorICgnanVtcGVkJywgNCksCisgKCdvdmVyJywgNSksCisgKCdhJywgNiksCisgKCdsYXp5JywgNyksCisgKCdkb2cnLCA4KV0iIiIpCisKKyAgICBkZWYgdGVzdF91c2VyX3N0cmluZyhzZWxmKToKKyAgICAgICAgZCA9IGNvbGxlY3Rpb25zLlVzZXJTdHJpbmcoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoZCwgd2lkdGg9MSksICInJyIpCisgICAgICAgIGQgPSBjb2xsZWN0aW9ucy5Vc2VyU3RyaW5nKCd0aGUgcXVpY2sgYnJvd24gZm94IGp1bXBlZCBvdmVyIGEgbGF6eSBkb2cnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGQsIHdpZHRoPTIwKSwKKyIiIlwKKygndGhlIHF1aWNrIGJyb3duICcKKyAnZm94IGp1bXBlZCBvdmVyICcKKyAnYSBsYXp5IGRvZycpIiIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KHsxOiBkfSwgd2lkdGg9MjApLAorIiIiXAorezE6ICd0aGUgcXVpY2sgJworICAgICdicm93biBmb3ggJworICAgICdqdW1wZWQgb3ZlciBhICcKKyAgICAnbGF6eSBkb2cnfSIiIikKIAogCiBjbGFzcyBEb3R0ZWRQcmV0dHlQcmludGVyKHBwcmludC5QcmV0dHlQcmludGVyKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CmluZGV4IGNlZTcyMDMuLjVhZGRkMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQpAQCAtMyw3ICszLDYgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGNsYXNzIFByb3BlcnR5QmFzZShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTc3LDYgKzc2LDEzIEBACiAgICAgICAgICIiIm5ldyBkb2NzdHJpbmciIiIKICAgICAgICAgcmV0dXJuIDgKIAorY2xhc3MgUHJvcGVydHlXcml0YWJsZURvYyhvYmplY3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNwYW0oc2VsZik6CisgICAgICAgICIiIkVnZ3MiIiIKKyAgICAgICAgcmV0dXJuICJlZ2dzIgorCiBjbGFzcyBQcm9wZXJ0eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wcm9wZXJ0eV9kZWNvcmF0b3JfYmFzZWNsYXNzKHNlbGYpOgogICAgICAgICAjIHNlZSAjMTYyMApAQCAtMTUxLDYgKzE1NywyMSBAQAogICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGZvbykKICAgICAgICAgICAgIEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAorICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eV9idWlsdGluX2RvY193cml0YWJsZShzZWxmKToKKyAgICAgICAgcCA9IHByb3BlcnR5KGRvYz0nYmFzaWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuX19kb2NfXywgJ2Jhc2ljJykKKyAgICAgICAgcC5fX2RvY19fID0gJ2V4dGVuZGVkJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuX19kb2NfXywgJ2V4dGVuZGVkJykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCisgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X2RlY29yYXRvcl9kb2Nfd3JpdGFibGUoc2VsZik6CisgICAgICAgIHN1YiA9IFByb3BlcnR5V3JpdGFibGVEb2MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Yi5fX2NsYXNzX18uc3BhbS5fX2RvY19fLCAnRWdncycpCisgICAgICAgIHN1Yi5fX2NsYXNzX18uc3BhbS5fX2RvY19fID0gJ1NwYW0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICdTcGFtJykKIAogIyBJc3N1ZSA1ODkwOiBzdWJjbGFzc2VzIG9mIHByb3BlcnR5IGRvIG5vdCBwcmVzZXJ2ZSBtZXRob2QgX19kb2NfXyBzdHJpbmdzCiBjbGFzcyBQcm9wZXJ0eVN1Yihwcm9wZXJ0eSk6CkBAIC0yNDcsOCArMjY4LDUgQEAKIAogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHJvcGVydHlUZXN0cywgUHJvcGVydHlTdWJjbGFzc1Rlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BzdGF0cy5weSBiL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5CmluZGV4IDllYmVlYmIuLjU2NmIzZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHN0YXRzLnB5CkBAIC0zNCwxMiArMzQsNSBAQAogICAgICAgICBzdGF0cy5hZGQoc2VsZi5zdGF0cywgc2VsZi5zdGF0cykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIEFkZENhbGxlcnNUZXN0Q2FzZSwKLSAgICAgICAgU3RhdHNUZXN0Q2FzZSwKLSAgICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCA4OTE2ODYxLi5lZjVlOTllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMSw3ICsxLDYgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fdW5pdHRlc3QsIGltcG9ydF9tb2R1bGUsIHJlYXBfY2hpbGRyZW4KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBpbXBvcnRfbW9kdWxlLCByZWFwX2NoaWxkcmVuCiAKLSNTa2lwIHRoZXNlIHRlc3RzIGlmIGVpdGhlciBmY250bCBvciB0ZXJtaW9zIGlzIG5vdCBhdmFpbGFibGUKLWZjbnRsID0gaW1wb3J0X21vZHVsZSgnZmNudGwnKQorIyBTa2lwIHRoZXNlIHRlc3RzIGlmIHRlcm1pb3MgaXMgbm90IGF2YWlsYWJsZQogaW1wb3J0X21vZHVsZSgndGVybWlvcycpCiAKIGltcG9ydCBlcnJubwpAQCAtODQsMTYgKzgzLDE4IEBACiAgICAgICAgICMgaW4gbWFzdGVyX29wZW4oKSwgd2UgbmVlZCB0byByZWFkIHRoZSBFT0YuCiAKICAgICAgICAgIyBFbnN1cmUgdGhlIGZkIGlzIG5vbi1ibG9ja2luZyBpbiBjYXNlIHRoZXJlJ3Mgbm90aGluZyB0byByZWFkLgotICAgICAgICBvcmlnX2ZsYWdzID0gZmNudGwuZmNudGwobWFzdGVyX2ZkLCBmY250bC5GX0dFVEZMKQotICAgICAgICBmY250bC5mY250bChtYXN0ZXJfZmQsIGZjbnRsLkZfU0VURkwsIG9yaWdfZmxhZ3MgfCBvcy5PX05PTkJMT0NLKQorICAgICAgICBibG9ja2luZyA9IG9zLmdldF9ibG9ja2luZyhtYXN0ZXJfZmQpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHMxID0gb3MucmVhZChtYXN0ZXJfZmQsIDEwMjQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgczEpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVBR0FJTjoKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAjIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGZsYWdzLgotICAgICAgICBmY250bC5mY250bChtYXN0ZXJfZmQsIGZjbnRsLkZfU0VURkwsIG9yaWdfZmxhZ3MpCisgICAgICAgICAgICBvcy5zZXRfYmxvY2tpbmcobWFzdGVyX2ZkLCBGYWxzZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzMSA9IG9zLnJlYWQobWFzdGVyX2ZkLCAxMDI0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzMSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQUdBSU46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGZsYWdzLgorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKG1hc3Rlcl9mZCwgYmxvY2tpbmcpCiAKICAgICAgICAgZGVidWcoIldyaXRpbmcgdG8gc2xhdmVfZmQiKQogICAgICAgICBvcy53cml0ZShzbGF2ZV9mZCwgVEVTVF9TVFJJTkdfMSkKQEAgLTI5MiwxMSArMjkzLDggQEAKICAgICAgICAgICAgIHB0eS5fY29weShtYXN0ZXJzWzBdKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICB0cnk6Ci0gICAgICAgIHJ1bl91bml0dGVzdChTbWFsbFB0eVRlc3RzLCBQdHlUZXN0KQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHJlYXBfY2hpbGRyZW4oKQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgcmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQppbmRleCBiODFhNTk1Li4xOTMyYzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CkBAIC02LDcgKzYsNyBAQAogZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKIGZyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCiAKIAogdHN0ZmlsZSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQpAQCAtMzM5LDkgKzMzOSw1IEBACiAgICAgICAgIGRvYy51bmxpbmsoKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHVsbERPTVRlc3RDYXNlLCBUaG9yb3VnaFRlc3RDYXNlLCBTQVgyRE9NVGVzdENhc2UpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wd2QucHkgYi9MaWIvdGVzdC90ZXN0X3B3ZC5weQppbmRleCAzN2ExYmNiLi5iN2IxYTRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B3ZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B3ZC5weQpAQCAtMTA3LDggKzEwNyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwd2QuZ2V0cHd1aWQsIDIqKjEyOCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgLTIqKjEyOCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFB3ZFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weQppbmRleCBjMWZkNGY2Li40YTZjYWE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CkBAIC05OCw2ICs5OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoCiAgICAgICAgICAgICBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShiYWRfY29kaW5nKSkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+IDAsICd0ZXN0IGRvZXMgbm90IHdvcmsgd2l0aCAtTycpCiAgICAgZGVmIHRlc3RfZG91YmxlX2RvdF9ub19jbG9iYmVyKHNlbGYpOgogICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMjk2NgogICAgICAgICAjIHB5X2NvbXBpbGUgZm9vLmJhci5weSAtPiBfX3B5Y2FjaGVfXy9mb28uY3B5dGhvbi0zNC5weWMKQEAgLTExNyw2ICsxMTgsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGNhY2hlX3BhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHB5Y19wYXRoKSkKIAorICAgIGRlZiB0ZXN0X29wdGltaXphdGlvbl9wYXRoKHNlbGYpOgorICAgICAgICAjIFNwZWNpZnlpbmcgb3B0aW1pemVkIGJ5dGVjb2RlIHNob3VsZCBsZWFkIHRvIGEgcGF0aCByZWZsZWN0aW5nIHRoYXQuCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ29wdC0yJywgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuc291cmNlX3BhdGgsIG9wdGltaXplPTIpKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5Y2xici5weSBiL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5CmluZGV4IDM5ZWI2NWYuLmNhYjQzMGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5CkBAIC0yLDcgKzIsNiBAQAogICAgVGVzdCBjYXNlcyBmb3IgcHljbGJyLnB5CiAgICBOaWNrIE1hdGhld3NvbgogJycnCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCBGdW5jdGlvblR5cGUsIE1ldGhvZFR5cGUsIEJ1aWx0aW5GdW5jdGlvblR5cGUKIGltcG9ydCBweWNsYnIKQEAgLTE3Myw5ICsxNzIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgcHljbGJyLnJlYWRtb2R1bGVfZXgsICdhc3luY29yZS5mb28nKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUHljbGJyVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCAwZTk5MGI2Li5lYzVjMzFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgZGlmZmxpYgogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHB5ZG9jCkBAIC0yMiw3ICsyMSw3IEBACiBpbXBvcnQgdGV4dHdyYXAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKICAgICBURVNURk4sIHJtdHJlZSwKICAgICByZWFwX2NoaWxkcmVuLCByZWFwX3RocmVhZHMsIGNhcHR1cmVkX291dHB1dCwgY2FwdHVyZWRfc3Rkb3V0LApAQCAtMjU3LDcgKzI1NiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBleHBlY3RlZF9kYXRhX2RvY3N0cmluZ3MpCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1pc3NpbmcgbW9kdWxlCi1taXNzaW5nX3BhdHRlcm4gPSAibm8gUHl0aG9uIGRvY3VtZW50YXRpb24gZm91bmQgZm9yICclcyciCittaXNzaW5nX3BhdHRlcm4gPSAnJydcCitObyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJXIuCitVc2UgaGVscCgpIHRvIGdldCB0aGUgaW50ZXJhY3RpdmUgaGVscCB1dGlsaXR5LgorVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJy5yZXBsYWNlKCdcbicsIG9zLmxpbmVzZXApCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1vZHVsZSB3aXRoIGJhZCBpbXBvcnRzCiBiYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKQEAgLTM2NCwxNSArMzY2LDYgQEAKICAgICBvdXRwdXQgPSBwYXR0LnN1YignJywgb3V0cHV0KQogICAgIHJldHVybiBvdXRwdXQuc3RyaXAoKSwgbG9jCiAKLWRlZiBwcmludF9kaWZmcyh0ZXh0MSwgdGV4dDIpOgotICAgICJQcmludHMgdW5pZmllZCBkaWZmcyBmb3IgdHdvIHRleHRzIgotICAgICMgWFhYIG5vdyBvYnNvbGV0ZSwgdXNlIHVuaXR0ZXN0IGJ1aWx0LWluIHN1cHBvcnQKLSAgICBsaW5lczEgPSB0ZXh0MS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCi0gICAgbGluZXMyID0gdGV4dDIuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQotICAgIGRpZmZzID0gZGlmZmxpYi51bmlmaWVkX2RpZmYobGluZXMxLCBsaW5lczIsIG49MCwgZnJvbWZpbGU9J2V4cGVjdGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZmlsZT0nZ290JykKLSAgICBwcmludCgnXG4nICsgJycuam9pbihkaWZmcykpCi0KIGRlZiBnZXRfaHRtbF90aXRsZSh0ZXh0KToKICAgICAjIEJpdCBvZiBoYWNrLCBidXQgZ29vZCBlbm91Z2ggZm9yIHRlc3QgcHVycG9zZXMKICAgICBoZWFkZXIsIF8sIF8gPSB0ZXh0LnBhcnRpdGlvbigiPC9oZWFkPiIpCkBAIC00MTgsOSArNDExLDcgQEAKICAgICAgICAgZXhwZWN0ZWRfaHRtbCA9IGV4cGVjdGVkX2h0bWxfcGF0dGVybiAlICgKICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RfdXJsLCBtb2RfZmlsZSwgZG9jX2xvYykgKwogICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfaHRtbF9kYXRhX2RvY3N0cmluZ3MpCi0gICAgICAgIGlmIHJlc3VsdCAhPSBleHBlY3RlZF9odG1sOgotICAgICAgICAgICAgcHJpbnRfZGlmZnMoZXhwZWN0ZWRfaHRtbCwgcmVzdWx0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCJvdXRwdXRzIGFyZSBub3QgZXF1YWwsIHNlZSBkaWZmIGFib3ZlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkX2h0bWwpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKQEAgLTQzMyw5ICs0MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKGRvY19sb2MsKSArCiAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0X2RhdGFfZG9jc3RyaW5ncyArCiAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zcGVjdC5nZXRhYnNmaWxlKHB5ZG9jX21vZCksKSkKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX3RleHQ6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF90ZXh0LCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X3RleHRfZW51bV9tZW1iZXJfd2l0aF92YWx1ZV96ZXJvKHNlbGYpOgogICAgICAgICAjIFRlc3QgaXNzdWUgIzIwNjU0IHRvIGVuc3VyZSBlbnVtIG1lbWJlciB3aXRoIHZhbHVlIDAgY2FuIGJlCkBAIC05MzEsOSArOTIwLDcgQEAKICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGV4cGVjdGVkX2R5bmFtaWNhdHRyaWJ1dGVfcGF0dGVybiAlICgKICAgICAgICAgICAgICAgICAoX19uYW1lX18sKSArIGV4cGVjdGVkX3RleHRfZGF0YV9kb2NzdHJpbmdzWzoyXSkKICAgICAgICAgcmVzdWx0ID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCkBAIC05NTQsOSArOTQxLDcgQEAKICAgICAgICAgaGVscGVyKENsYXNzKQogICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfdmlydHVhbGF0dHJpYnV0ZV9wYXR0ZXJuMSAlIF9fbmFtZV9fCiAgICAgICAgIHJlc3VsdCA9IG91dHB1dC5nZXR2YWx1ZSgpLnN0cmlwKCkKLSAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX3RleHQ6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF90ZXh0LCByZXN1bHQpCi0gICAgICAgICAgICBzZWxmLmZhaWwoIm91dHB1dHMgYXJlIG5vdCBlcXVhbCwgc2VlIGRpZmYgYWJvdmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQpAQCAtOTk2LDE5ICs5ODEsMTMgQEAKICAgICAgICAgaGVscGVyKENsYXNzMSkKICAgICAgICAgZXhwZWN0ZWRfdGV4dDEgPSBleHBlY3RlZF92aXJ0dWFsYXR0cmlidXRlX3BhdHRlcm4yICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0MSA9IG91dHB1dC5nZXR2YWx1ZSgpLnN0cmlwKCkKLSAgICAgICAgaWYgcmVzdWx0MSAhPSBleHBlY3RlZF90ZXh0MToKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQxLCByZXN1bHQxKQotICAgICAgICAgICAgZmFpbDEgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dDEsIHJlc3VsdDEpCiAgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKICAgICAgICAgaGVscGVyID0gcHlkb2MuSGVscGVyKG91dHB1dD1vdXRwdXQpCiAgICAgICAgIGhlbHBlcihDbGFzczIpCiAgICAgICAgIGV4cGVjdGVkX3RleHQyID0gZXhwZWN0ZWRfdmlydHVhbGF0dHJpYnV0ZV9wYXR0ZXJuMyAlIF9fbmFtZV9fCiAgICAgICAgIHJlc3VsdDIgPSBvdXRwdXQuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIGlmIHJlc3VsdDIgIT0gZXhwZWN0ZWRfdGV4dDI6Ci0gICAgICAgICAgICBwcmludF9kaWZmcyhleHBlY3RlZF90ZXh0MiwgcmVzdWx0MikKLSAgICAgICAgICAgIGZhaWwyID0gVHJ1ZQotICAgICAgICBpZiBmYWlsMSBvciBmYWlsMjoKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dDIsIHJlc3VsdDIpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKQEAgLTEwMjUsOSArMTAwNCw3IEBACiAgICAgICAgIGhlbHBlcihDKQogICAgICAgICBleHBlY3RlZF90ZXh0ID0gZXhwZWN0ZWRfbWlzc2luZ2F0dHJpYnV0ZV9wYXR0ZXJuICUgX19uYW1lX18KICAgICAgICAgcmVzdWx0ID0gb3V0cHV0LmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhwZWN0ZWRfdGV4dDoKLSAgICAgICAgICAgIHByaW50X2RpZmZzKGV4cGVjdGVkX3RleHQsIHJlc3VsdCkKLSAgICAgICAgICAgIHNlbGYuZmFpbCgib3V0cHV0cyBhcmUgbm90IGVxdWFsLCBzZWUgZGlmZiBhYm92ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGV4dCwgcmVzdWx0KQogCiAgICAgZGVmIHRlc3RfcmVzb2x2ZV9mYWxzZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMjMwMDg6IHB5ZG9jIGVudW0ueyxJbnR9RW51bSBmYWlsZWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weSBiL0xpYi90ZXN0L3Rlc3RfcHlleHBhdC5weQppbmRleCAyMTZhNDZiLi41NTBhZWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZXhwYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWV4cGF0LnB5CkBAIC0xMSw3ICsxMSw3IEBACiBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAogZnJvbSB4bWwucGFyc2Vycy5leHBhdCBpbXBvcnQgZXJyb3JzCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzb3J0ZGljdCwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc29ydGRpY3QKIAogCiBjbGFzcyBTZXRBdHRyaWJ1dGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTczNywxOSArNzM3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyX2NhbGxfYXJncywgWygiYmFyIiwgImJheiIpXSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFNldEF0dHJpYnV0ZVRlc3QsCi0gICAgICAgICAgICAgICAgIFBhcnNlVGVzdCwKLSAgICAgICAgICAgICAgICAgTmFtZXNwYWNlU2VwYXJhdG9yVGVzdCwKLSAgICAgICAgICAgICAgICAgSW50ZXJuaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgQnVmZmVyVGV4dFRlc3QsCi0gICAgICAgICAgICAgICAgIEhhbmRsZXJFeGNlcHRpb25UZXN0LAotICAgICAgICAgICAgICAgICBQb3NpdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgIHNmMTI5NjQzM1Rlc3QsCi0gICAgICAgICAgICAgICAgIENoYXJkYXRhQnVmZmVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTWFsZm9ybWVkSW5wdXRUZXN0LAotICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2VUZXN0LAotICAgICAgICAgICAgICAgICBGb3JlaWduRFREVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVldWUucHkgYi9MaWIvdGVzdC90ZXN0X3F1ZXVlLnB5CmluZGV4IDJjZGZlZTQuLjRjY2FhMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcXVldWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdWV1ZS5weQpAQCAtMzU0LDEwICszNTQsNSBAQAogICAgICAgICBzZWxmLmZhaWxpbmdfcXVldWVfdGVzdChxKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChRdWV1ZVRlc3QsIExpZm9RdWV1ZVRlc3QsIFByaW9yaXR5UXVldWVUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFpbGluZ1F1ZXVlVGVzdCkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weSBiL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5CmluZGV4IDkyNTExZmEuLjdjYWMwMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IHN5cywgb3MsIGlvLCBzdWJwcm9jZXNzCkBAIC0yMDcsOSArMjA2LDUgQEAKICAgICAgICAgcCA9IHAuZGVjb2RlKCdsYXRpbi0xJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3V0LnNwbGl0bGluZXMoKSwgcC5zcGxpdGxpbmVzKCkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChRdW9wcmlUZXN0Q2FzZSkKLQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQppbmRleCBiZTVjMWM2Li5hNDFiMzUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKQEAgLTQxNSw4ICs0MTUsNSBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBleGNlcHRpb24gcmFpc2VkIikKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCAyZGJjZWJjLi4xMDZjNzMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTY0Nyw4ICs2NDcsNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIGRlbCByYW5nZW9iai5zdGVwCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFJhbmdlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKaW5kZXggNzM0OGFmMy4uN2E3NDE0MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CkBAIC0zOCw2ICszOCwyNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShhY3R1YWwpLCB0eXBlKGV4cGVjdCksIG1zZykKICAgICAgICAgcmVjdXJzZShhY3R1YWwsIGV4cGVjdCkKIAorICAgIGRlZiBjaGVja1BhdHRlcm5FcnJvcihzZWxmLCBwYXR0ZXJuLCBlcnJtc2csIHBvcz1Ob25lKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvcikgYXMgY206CisgICAgICAgICAgICByZS5jb21waWxlKHBhdHRlcm4pCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhdHRlcm49cGF0dGVybik6CisgICAgICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLm1zZywgZXJybXNnKQorICAgICAgICAgICAgaWYgcG9zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgcG9zKQorCisgICAgZGVmIGNoZWNrVGVtcGxhdGVFcnJvcihzZWxmLCBwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGVycm1zZywgcG9zPU5vbmUpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHJlLnN1YihwYXR0ZXJuLCByZXBsLCBzdHJpbmcpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhdHRlcm49cGF0dGVybiwgcmVwbD1yZXBsKToKKyAgICAgICAgICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIubXNnLCBlcnJtc2cpCisgICAgICAgICAgICBpZiBwb3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCBwb3MpCisKICAgICBkZWYgdGVzdF9rZWVwX2J1ZmZlcihzZWxmKToKICAgICAgICAgIyBTZWUgYnVnIDE0MjEyCiAgICAgICAgIGIgPSBieXRlYXJyYXkoYid4JykKQEAgLTg0LDcgKzEwMiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCIoP2kpYisiLCAieCIsICJiYmJiIEJCQkIiKSwgJ3ggeCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXGQrJywgc2VsZi5idW1wX251bSwgJzA4LjIgLTIgMjN4OTl5JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzkuMyAtMyAyNHgxMDB5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocidcZCsnLCBzZWxmLmJ1bXBfbnVtLCAnMDguMiAtMiAyM3g5OXknLCAzKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocidcZCsnLCBzZWxmLmJ1bXBfbnVtLCAnMDguMiAtMiAyM3g5OXknLCBjb3VudD0zKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnOS4zIC0zIDIzeDk5eScpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJy4nLCBsYW1iZGEgbTogciJcbiIsICd4JyksICdcXG4nKQpAQCAtMTAwLDExICsxMTgsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzwxPlxnPDE+JywgJ3h4JyksICd4eHh4JykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScscidcdFxuXHZcclxmXGFcYlxCXFpcYVxBXHdcV1xzXFNcZFxEJywnYScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcdFxuXHZcclxmXGFcYlxcQlxcWlxhXFxBXFx3XFxXXFxzXFxTXFxkXFxEJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYScsICdhJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGNocig5KStjaHIoMTApK2NocigxMSkrY2hyKDEzKStjaHIoMTIpK2Nocig3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgcidcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIChjaHIoOSkrY2hyKDEwKStjaHIoMTEpK2NocigxMykrY2hyKDEyKStjaHIoNykrY2hyKDgpKSkKKyAgICAgICAgZm9yIGMgaW4gJ2NkZWhpamtsbW9wcXN1d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGMpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcXCcgKyBjLCAnYScpLCAnXFwnICsgYykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKIApAQCAtMTQ1LDYgKzE2Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMDA5JywgJ3gnKSwgJ1wwJyArICc5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wxMTEnLCAneCcpLCAnXDExMScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4JywgcidcMTE3JywgJ3gnKSwgJ1wxMTcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDM3NycsICd4JyksICdcMzc3JykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDExMTEnLCAneCcpLCAnXDExMTEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDExMTEnLCAneCcpLCAnXDExMScgKyAnMScpCkBAIC0xNTUsMjEgKzE3NywyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDA5JywgJ3gnKSwgJ1wwJyArICc5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1wwYScsICd4JyksICdcMCcgKyAnYScpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3gnLCByJ1w0MDAnLCAneCcpLCAnXDAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCcsIHInXDc3NycsICd4JyksICdcMzc3JykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w0MDAnLCAneCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw0MDAgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcNzc3JywgJ3gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNzc3IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1w4JywgJ3gnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDknLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMTEnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMTgnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMWEnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcOTAnLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcOTknLCAneCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcMTE4JywgJ3gnKSAjIHInXDExJyArICc4JwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAneCcsIHInXDExYScsICd4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJ3gnLCByJ1wxODEnLCAneCcpICMgcidcMTgnICsgJzEnCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICd4JywgcidcODAwJywgJ3gnKSAjIHInXDgwJyArICcwJworICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDkwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDk5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1wxMScgKyAnOCcKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDE4JyArICcxJworICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgwMCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1w4MCcgKyAnMCcKIAogICAgICAgICAjIGluIHB5dGhvbjIuMyAoZXRjKSwgdGhlc2UgbG9vcCBlbmRsZXNzbHkgaW4gc3JlX3BhcnNlci5weQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKCgoKCgoKCgoKCh4KSkpKSkpKSkpKSknLCByJ1wxMScsICd4JyksICd4JykKQEAgLTE4MCw3ICsyMDYsNyBAQAogCiAgICAgZGVmIHRlc3RfcXVhbGlmaWVkX3JlX3N1YihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnYicsICdhYWFhYScpLCAnYmJiYmInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdiJywgJ2FhYWFhJywgMSksICdiYWFhYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ2InLCAnYWFhYWEnLCBjb3VudD0xKSwgJ2JhYWFhJykKIAogICAgIGRlZiB0ZXN0X2J1Z18xMTQ2NjAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInKFxTKVxzKyhcUyknLCByJ1wxIFwyJywgJ2hlbGxvICB0aGVyZScpLApAQCAtMTk0LDc1ICsyMjAsMTA1IEBACiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfZ3JvdXBzKHNlbGYpOgogICAgICAgICByZS5jb21waWxlKCcoP1A8YT54KSg/UD1hKSg/KGEpeSknKQogICAgICAgICByZS5jb21waWxlKCcoP1A8YTE+eCkoP1A9YTEpKD8oYTEpeSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDxhPikoP1A8YT4pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1B4KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UD0xKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPWEpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9YTEpJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A9YS4pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD9QPD4pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8MT4pJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICcoP1A8YS4+KScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD8oKSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/KGEpKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD8oMWEpKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnKD8oYS4pKScpCisgICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KVwxKD8oMSl5KScpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A8YT4pJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJ2EnIGFzIGdyb3VwIDI7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwIDEiKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4oP1A9YSkpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAiLCAxMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QeHkpJywgJ3Vua25vd24gZXh0ZW5zaW9uID9QeCcpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A9YScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBuYW1lJywgMTEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0nLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPSknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPTEpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hMSknLCAidW5rbm93biBncm91cCBuYW1lICdhMSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YS4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCknLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDw+KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPDE+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhLj4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oKSknLCAnbWlzc2luZyBncm91cCBuYW1lJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KGEpKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIiwgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KC0xKSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oMWEpKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzFhJyIsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPyhhLikpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgMykKICAgICAgICAgIyBOZXcgdmFsaWQvaW52YWxpZCBpZGVudGlmaWVycyBpbiBQeXRob24gMwogICAgICAgICByZS5jb21waWxlKCcoP1A8wrU+eCkoP1A9wrUpKD8owrUpeSknKQogICAgICAgICByZS5jb21waWxlKCcoP1A88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj54KSg/UD3wnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiKSg/KPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIpeSknKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJyg/UDzCqT54KScpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDzCqT54KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDQpCisgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCisgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKKyAgICAgICAgcGF0ID0gJyg/OiVzKSg/KDIwMCl6fHQpJyAlIHBhdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHBhdCwgJ3hjOHl6Jykuc3BhbigpLCAoMCwgNSkpCiAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19yZWZzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8YScsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzwnLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGcnLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCknLCAnXGc8YSBhPicsICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzw+JywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPDFhMT4nLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCByZS5zdWIsICcoP1A8YT54KScsICdcZzxhYj4nLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCl8KD9QPGI+eSknLCAnXGc8Yj4nLCAneHgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuc3ViLCAnKD9QPGE+eCl8KD9QPGI+eSknLCAnXFwyJywgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgJ1xnPC0xPicsICd4eCcpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhJywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCAzKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZycsICd4eCcsICdtaXNzaW5nIDwnLCAyKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YSBhPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EgYSciLCAzKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8PicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8MWExPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzFhMSciLCAzKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDI+JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcMicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAidW5rbm93biBncm91cCBuYW1lICdhYiciKToKKyAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCAnXGc8YWI+JywgJ3h4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpfCg/UDxiPnkpJywgcidcZzxiPicsICd4eCcpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpfCg/UDxiPnkpJywgcidcMicsICd4eCcpLCAnJykKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPC0xPicsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJy0xJyIsIDMpCiAgICAgICAgICMgTmV3IHZhbGlkL2ludmFsaWQgaWRlbnRpZmllcnMgaW4gUHl0aG9uIDMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDzCtT54KScsIHInXGc8wrU+JywgJ3h4JyksICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj54KScsIHInXGc88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj4nLCAneHgnKSwgJ3h4JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLnN1YiwgJyg/UDxhPngpJywgcidcZzzCqT4nLCAneHgnKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8wqk+JywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnwqknIiwgMykKKyAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KKyAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsICdcZzwyMDA+JywgJ3hjOHl6eGM4eScpLCAnYzh6YzgnKQogCiAgICAgZGVmIHRlc3RfcmVfc3VibihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCIoP2kpYisiLCAieCIsICJiYmJiIEJCQkIiKSwgKCd4IHgnLCAyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWJuKCJiKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAoJ3ggQkJCQicsIDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIrIiwgIngiLCAieHl6IiksICgneHl6JywgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiYioiLCAieCIsICJ4eXoiKSwgKCd4eHh5eHp4JywgNCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiYioiLCAieCIsICJ4eXoiLCAyKSwgKCd4eHh5eicsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oImIqIiwgIngiLCAieHl6IiwgY291bnQ9MiksICgneHh4eXonLCAyKSkKIAogICAgIGRlZiB0ZXN0X3JlX3NwbGl0KHNlbGYpOgogICAgICAgICBmb3Igc3RyaW5nIGluICI6YTpiOjpjIiwgUygiOmE6Yjo6YyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KCI6Iiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICdhJywgJ2InLCAnJywgJ2MnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiOioiLCBzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KCI6KyIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnYScsICdiJywgJ2MnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdCgiKDoqKSIsIHN0cmluZyksCisgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoIig6KykiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOjonLCAnYyddKQogICAgICAgICBmb3Igc3RyaW5nIGluIChiIjphOmI6OmMiLCBCKGIiOmE6Yjo6YyIpLCBieXRlYXJyYXkoYiI6YTpiOjpjIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcoYiI6YTpiOjpjIikpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KGIiOiIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2InJywgYidhJywgYidiJywgYicnLCBiJ2MnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIjoqIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIjorIiwgc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYicnLCBiJ2EnLCBiJ2InLCBiJ2MnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChiIig6KikiLCBzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUeXBlZEVxdWFsKHJlLnNwbGl0KGIiKDorKSIsIHN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2InJywgYic6JywgYidhJywgYic6JywgYidiJywgYic6OicsIGInYyddKQogICAgICAgICBmb3IgYSwgYiwgYyBpbiAoIlx4ZTBceGRmXHhlNyIsICJcdTA0MzBcdTA0MzFcdTA0MzIiLAogICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMWQ0OWNcVTAwMDFkNDllXFUwMDAxZDRiNSIpOgogICAgICAgICAgICAgc3RyaW5nID0gIjolczolczo6JXMiICUgKGEsIGIsIGMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6Iiwgc3RyaW5nKSwgWycnLCBhLCBiLCAnJywgY10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6KiIsIHN0cmluZyksIFsnJywgYSwgYiwgY10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOiopIiwgc3RyaW5nKSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjorIiwgc3RyaW5nKSwgWycnLCBhLCBiLCBjXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KykiLCBzdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgYSwgJzonLCBiLCAnOjonLCBjXSkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoPzo6KikiLCAiOmE6Yjo6YyIpLCBbJycsICdhJywgJ2InLCAnYyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikqIiwgIjphOmI6OmMiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKD86OispIiwgIjphOmI6OmMiKSwgWycnLCAnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDopKyIsICI6YTpiOjpjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6JywgJ2MnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKFtiOl0rKSIsICI6YTpiOjpjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzpiOjonLCAnYyddKQpAQCAtMjcyLDEzICszMjgsMzQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKD86Yil8KD86OispIiwgIjphOmI6OmMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICdhJywgJycsICcnLCAnYyddKQogCisgICAgICAgIGZvciBzZXAsIGV4cGVjdGVkIGluIFsKKyAgICAgICAgICAgICgnOionLCBbJycsICdhJywgJ2InLCAnYyddKSwKKyAgICAgICAgICAgICgnKD86OiopJywgWycnLCAnYScsICdiJywgJ2MnXSksCisgICAgICAgICAgICAoJyg6KiknLCBbJycsICc6JywgJ2EnLCAnOicsICdiJywgJzo6JywgJ2MnXSksCisgICAgICAgICAgICAoJyg6KSonLCBbJycsICc6JywgJ2EnLCAnOicsICdiJywgJzonLCAnYyddKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHNlcD1zZXApLCBzZWxmLmFzc2VydFdhcm5zKEZ1dHVyZVdhcm5pbmcpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHlwZWRFcXVhbChyZS5zcGxpdChzZXAsICc6YTpiOjpjJyksIGV4cGVjdGVkKQorCisgICAgICAgIGZvciBzZXAsIGV4cGVjdGVkIGluIFsKKyAgICAgICAgICAgICgnJywgWyc6YTpiOjpjJ10pLAorICAgICAgICAgICAgKHInXGInLCBbJzphOmI6OmMnXSksCisgICAgICAgICAgICAocicoPz06KScsIFsnOmE6Yjo6YyddKSwKKyAgICAgICAgICAgIChyJyg/PD06KScsIFsnOmE6Yjo6YyddKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHNlcD1zZXApLCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFR5cGVkRXF1YWwocmUuc3BsaXQoc2VwLCAnOmE6Yjo6YycpLCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X3F1YWxpZmllZF9yZV9zcGxpdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiOiIsICI6YTpiOjpjIiwgMiksIFsnJywgJ2EnLCAnYjo6YyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCc6JywgJ2E6YjpjOmQnLCAyKSwgWydhJywgJ2InLCAnYzpkJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KSIsICI6YTpiOjpjIiwgMiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoiLCAiOmE6Yjo6YyIsIG1heHNwbGl0PTIpLCBbJycsICdhJywgJ2I6OmMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgnOicsICdhOmI6YzpkJywgbWF4c3BsaXQ9MiksIFsnYScsICdiJywgJ2M6ZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikiLCAiOmE6Yjo6YyIsIG1heHNwbGl0PTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2I6OmMnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsICI6YTpiOjpjIiwgMiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KykiLCAiOmE6Yjo6YyIsIG1heHNwbGl0PTIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2I6OmMnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEZ1dHVyZVdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsICI6YTpiOjpjIiwgbWF4c3BsaXQ9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2I6OmMnXSkKIAogICAgIGRlZiB0ZXN0X3JlX2ZpbmRhbGwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbCgiOisiLCAiYWJjIiksIFtdKQpAQCAtNDA1LDYgKzQ4MiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwLm1hdGNoKCdhYmQnKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocC5tYXRjaCgnYWMnKSkKIAorICAgICAgICAjIFN1cHBvcnQgPiAxMDAgZ3JvdXBzLgorICAgICAgICBwYXQgPSAnfCcuam9pbigneCg/UDxhJWQ+JXgpeScgJSAoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMSwgMjAwICsgMSkpCisgICAgICAgIHBhdCA9ICcoPzolcykoPygyMDApeiknICUgcGF0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocGF0LCAneGM4eXonKS5zcGFuKCksICgwLCA1KSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KDApKScsICdiYWQgZ3JvdXAgbnVtYmVyJywgMTApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoKSg/KDEpYXxiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybicsIDIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoKSg/KDEpYXxifGMpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R3byBicmFuY2hlcycsIDEwKQorCisgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoKScsICdcZzwlcz4nICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsICd4eCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oJWQpKScgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAxMCkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcfCk/KFteKCldKylcMSQnLCAnfGF8JykuZ3JvdXBzKCksCkBAIC00MTgsNiArNTEyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoXDEpPyQnLCAnYycpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSkKIAorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKGFiY1wxKScsICdjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCcsIDQpCisKICAgICBkZWYgdGVzdF9ncm91cGRpY3Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJyg/UDxmaXJzdD5maXJzdCkgKD9QPHNlY29uZD5zZWNvbmQpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2Vjb25kJykuZ3JvdXBkaWN0KCksCkBAIC00MjgsNiArNTI0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IHNlY29uZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmV4cGFuZChyIlwyIFwxIFxnPHNlY29uZD4gXGc8Zmlyc3Q+IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNlY29uZCBmaXJzdCBzZWNvbmQgZmlyc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoP1A8Zmlyc3Q+Zmlyc3QpfCg/UDxzZWNvbmQ+c2Vjb25kKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpcnN0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZXhwYW5kKHIiXDIgXGc8c2Vjb25kPiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICIgIikKIAogICAgIGRlZiB0ZXN0X3JlcGVhdF9taW5tYXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxfSQiLCAiYWJjIikpCkBAIC00NTEsNiArNTUxLDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9JCIsICJ4eHgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDN9JCIsICJ4eHgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDR9JCIsICJ4eHgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7M30/JCIsICJ4eHgiKSkKQEAgLTQ2MSw2ICs1NjIsOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7fSQiLCAieHh4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7fSQiLCAieHt9IikpCiAKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ3h7MiwxfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQnLCAyKQorCiAgICAgZGVmIHRlc3RfZ2V0YXR0cihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5jb21waWxlKCIoP2kpKGEpKGIpIikucGF0dGVybiwgIig/aSkoYSkoYikiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmNvbXBpbGUoIig/aSkoYSkoYikiKS5mbGFncywgcmUuSSB8IHJlLlUpCkBAIC00NzUsNiArNTc5LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKSIsICJhIikucmVncywgKCgwLCAxKSwgKDAsIDEpKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCIoYSkiLCAiYSIpLnJlKQogCisgICAgICAgICMgSXNzdWUgMTQyNjAuIGdyb3VwaW5kZXggc2hvdWxkIGJlIG5vbi1tb2RpZmlhYmxlIG1hcHBpbmcuCisgICAgICAgIHAgPSByZS5jb21waWxlKHInKD9pKSg/UDxmaXJzdD5hKSg/UDxvdGhlcj5iKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHAuZ3JvdXBpbmRleCksIFsnZmlyc3QnLCAnb3RoZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmdyb3VwaW5kZXhbJ290aGVyJ10sIDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHAuZ3JvdXBpbmRleFsnb3RoZXInXSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmdyb3VwaW5kZXhbJ290aGVyJ10sIDIpCisKICAgICBkZWYgdGVzdF9zcGVjaWFsX2VzY2FwZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXGIoYi4pXGIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjZCBhYmMgYmNkIGJ4IikuZ3JvdXAoMSksICJieCIpCkBAIC00ODQsMTAgKzU5Niw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNkIGFiYyBiY2QgYngiLCByZS5BU0NJSSkuZ3JvdXAoMSksICJieCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXEIoYi4pXEIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIGJjZCBiYyBhYnhkIiwgcmUuQVNDSUkpLmdyb3VwKDEpLCAiYngiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxiKGIuKVxiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY2QgYWJjIGJjZCBieCIsIHJlLkxPQ0FMRSkuZ3JvdXAoMSksICJieCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXEIoYi4pXEIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjIGJjZCBiYyBhYnhkIiwgcmUuTE9DQUxFKS5ncm91cCgxKSwgImJ4IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJeYWJjJCIsICJcbmFiY1xuIiwgcmUuTSkuZ3JvdXAoMCksICJhYmMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIl5cQWFiY1xaJCIsICJhYmMiLCByZS5NKS5ncm91cCgwKSwgImFiYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLnNlYXJjaChyIl5cQWFiY1xaJCIsICJcbmFiY1xuIiwgcmUuTSkpCkBAIC01MDgsMTEgKzYxNiwzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIjFhYSEgYSIpLmdyb3VwKDApLCBiIjFhYSEgYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXGRcRFx3XFdcc1xTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFhYSEgYSIsIHJlLkFTQ0lJKS5ncm91cCgwKSwgIjFhYSEgYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXGRcRFx3XFdcc1xTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFhYSEgYSIsIHJlLkxPQ0FMRSkuZ3JvdXAoMCksICIxYWEhIGEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChiciJcZFxEXHdcV1xzXFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIjFhYSEgYSIsIHJlLkxPQ0FMRSkuZ3JvdXAoMCksIGIiMWFhISBhIikKIAorICAgIGRlZiB0ZXN0X290aGVyX2VzY2FwZXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoIlxcIiwgJ2JhZCBlc2NhcGUgKGVuZCBvZiBwYXR0ZXJuKScsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJcKCIsICcoJykuZ3JvdXAoKSwgJygnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIlwoIiwgJyknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIlxcIiwgJ1xcJykuZ3JvdXAoKSwgJ1xcJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIltcXV0iLCAnXScpLmdyb3VwKCksICddJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbXF1dIiwgJ1snKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIlthXC1jXSIsICctJykuZ3JvdXAoKSwgJy0nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIlthXC1jXSIsICdiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbXF5hXSsiLCAnYV4nKS5ncm91cCgpLCAnYV4nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIltcXmFdKyIsICdiJykpCisgICAgICAgIHJlLnB1cmdlKCkgICMgZm9yIHdhcm5pbmdzCisgICAgICAgIGZvciBjIGluICdjZWdoaWprbG1vcHF5ekNFRkdISUpLTE1OT1BRUlRWWFknOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKCdcXCVjJyAlIGMsIGMpLmdyb3VwKCksIGMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdcXCVjJyAlIGMsICdhJykpCisgICAgICAgIGZvciBjIGluICdjZWdoaWprbG1vcHF5ekFCQ0VGR0hJSktMTU5PUFFSVFZYWVonOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKCdbXFwlY10nICUgYywgYykuZ3JvdXAoKSwgYykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1tcXCVjXScgJSBjLCAnYScpKQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nX2JvdW5kYXJpZXMoc2VsZik6CiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMDcxMwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxiKGFiYylcYiIsICJhYmMiKS5ncm91cCgxKSwKQEAgLTU3NCw5ICs3MDMsNiBAQAogICAgICAgICAjIEdyb3VwIHJlZmVyZW5jZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKGEpYig/PVwxKWEnLCAnYWJhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpYig/PVwxKWMnLCAnYWJhYycpKQotICAgICAgICAjIE5hbWVkIGdyb3VwIHJlZmVyZW5jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9QPGc+YSliKD89KD9QPWcpKWEnLCAnYWJhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD9QPGc+YSliKD89KD9QPWcpKWMnLCAnYWJhYycpKQogICAgICAgICAjIENvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD89KD8oMil4fGMpKWMnLCAnYWJjJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD86KGEpfCh4KSliKD89KD8oMiljfHgpKWMnLCAnYWJjJykpCkBAIC01OTQsMTMgKzcyMCwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ2FiKD88IWIpYycsICdhYmMnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInYWIoPzwhYyljJywgJ2FiYycpKQogICAgICAgICAjIEdyb3VwIHJlZmVyZW5jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgcmUuY29tcGlsZSwgcicoYSlhKD88PVwxKWMnKQotICAgICAgICAjIE5hbWVkIGdyb3VwIHJlZmVyZW5jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgcmUuY29tcGlsZSwgcicoP1A8Zz5hKWEoPzw9KD9QPWcpKWMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoYSlhKD88PVwxKWMnLCAnYWFjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpYig/PD1cMSlhJywgJ2FiYWEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSlhKD88IVwxKWMnLCAnYWFjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyhhKWIoPzwhXDEpYScsICdhYmFhJykpCiAgICAgICAgICMgQ29uZGl0aW9uYWwgZ3JvdXAgcmVmZXJlbmNlLgotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCByZS5jb21waWxlLCByJyhhKWIoPzw9KD8oMSlifHgpKWMnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PD0oPygyKXh8YykpYycsICdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMilifHgpKWMnLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PD0oPygyKXh8YikpYycsICdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPzooYSl8KHgpKWIoPzw9KD8oMSljfHgpKWMnLCAnYWJjJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/OihhKXwoeCkpYig/PD0oPygxKWJ8eCkpYycsICdhYmMnKSkKICAgICAgICAgIyBHcm91cCB1c2VkIGJlZm9yZSBkZWZpbmVkLgotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCByZS5jb21waWxlLCByJyhhKWIoPzw9KD8oMilifHgpKShjKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCByJyhhKWIoPzw9KD8oMilifHgpKShjKScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpYig/PD0oPygxKWN8eCkpKGMpJywgJ2FiYycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoYSliKD88PSg/KDEpYnx4KSkoYyknLCAnYWJjJykpCisgICAgICAgICMgR3JvdXAgZGVmaW5lZCBpbiB0aGUgc2FtZSBsb29rYmVoaW5kIHBhdHRlcm4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIHInKGEpYig/PD0oLilcMikoYyknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgcicoYSliKD88PSg/UDxhPi4pKD9QPWEpKShjKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCByJyhhKWIoPzw9KGEpKD8oMilifHgpKShjKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCByJyhhKWIoPzw9KC4pKD88PVwyKSkoYyknKQogCiAgICAgZGVmIHRlc3RfaWdub3JlX2Nhc2Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goImFiYyIsICJBQkMiLCByZS5JKS5ncm91cCgwKSwgIkFCQyIpCkBAIC02OTIsOSArODMwLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3NyZS5nZXRsb3dlcihvcmQoJ0EnKSwgMCksIG9yZCgnYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zcmUuZ2V0bG93ZXIob3JkKCdBJyksIHJlLkxPQ0FMRSksIG9yZCgnYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zcmUuZ2V0bG93ZXIob3JkKCdBJyksIHJlLlVOSUNPREUpLCBvcmQoJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfc3JlLmdldGxvd2VyKG9yZCgnQScpLCByZS5BU0NJSSksIG9yZCgnYScpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goImFiYyIsICJBQkMiLCByZS5JKS5ncm91cCgwKSwgIkFCQyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goYiJhYmMiLCBiIkFCQyIsIHJlLkkpLmdyb3VwKDApLCBiIkFCQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goImFiYyIsICJBQkMiLCByZS5JfHJlLkEpLmdyb3VwKDApLCAiQUJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChiImFiYyIsIGIiQUJDIiwgcmUuSXxyZS5MKS5ncm91cCgwKSwgYiJBQkMiKQogCiAgICAgZGVmIHRlc3Rfbm90X2xpdGVyYWwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCkBAIC03NzksOCArOTIwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuWCwgcmUuVkVSQk9TRSkKIAogICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOgotICAgICAgICBmb3IgZmxhZyBpbiBbcmUuSSwgcmUuTSwgcmUuWCwgcmUuUywgcmUuTF06CisgICAgICAgIGZvciBmbGFnIGluIFtyZS5JLCByZS5NLCByZS5YLCByZS5TLCByZS5BLCByZS5VXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5jb21waWxlKCdecGF0dGVybiQnLCBmbGFnKSkKKyAgICAgICAgZm9yIGZsYWcgaW4gW3JlLkksIHJlLk0sIHJlLlgsIHJlLlMsIHJlLkEsIHJlLkxdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLmNvbXBpbGUoYidecGF0dGVybiQnLCBmbGFnKSkKIAogICAgIGRlZiB0ZXN0X3NyZV9jaGFyYWN0ZXJfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIFswLCA4LCAxNiwgMzIsIDY0LCAxMjcsIDEyOCwgMjU1LCAyNTYsIDB4RkZGRiwgMHgxMDAwMCwgMHgxMEZGRkZdOgpAQCAtODAyLDE1ICs5NDUsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXDA4IiwgIlwwMDA4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIlwwMSIsICJcMDAxIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIlwwMTgiLCAiXDAwMTgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXDU2NyIsIGNocigwbzE2NykpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXDkxMSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHgxIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJceDF6IiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcdTEyMyIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHUxMjN6IiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMDEyMzQiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAwMTIzNHoiLCAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlxVMDAxMTAwMDAiLCAiIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw1NjciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHgxIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHgxeiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx1MTIzIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcdTEyMycsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcdTEyM3oiLCByJ2luY29tcGxldGUgZXNjYXBlIFx1MTIzJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlxVMDAwMTIzNCIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXFUwMDAxMjM0JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlxVMDAwMTIzNHoiLCByJ2luY29tcGxldGUgZXNjYXBlIFxVMDAwMTIzNCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcVTAwMTEwMDAwIiwgcidiYWQgZXNjYXBlIFxVMDAxMTAwMDAnLCAwKQogCiAgICAgZGVmIHRlc3Rfc3JlX2NoYXJhY3Rlcl9jbGFzc19saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTUsIDI1NiwgMHhGRkZGLCAweDEwMDAwLCAweDEwRkZGRl06CkBAIC04MzAsMTIgKzk3NSwxNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiW1xVJTA4eF0iICUgaSwgY2hyKGkpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIltcVSUwOHgwXSIgJSBpLCBjaHIoaSkrIjAiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIltcVSUwOHh6XSIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcNTY3XSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiW1w5MTFdIiwgcidiYWQgZXNjYXBlIFw5JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltceDF6XSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIltcdTEyM3pdIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBcdTEyMycsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXFUwMDAxMjM0el0iLCByJ2luY29tcGxldGUgZXNjYXBlIFxVMDAwMTIzNCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXFUwMDExMDAwMF0iLCByJ2JhZCBlc2NhcGUgXFUwMDExMDAwMCcsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIltcVTAwMDFkNDljLVxVMDAwMWQ0YjVdIiwgIlxVMDAwMWQ0OWUiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcOTExXSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x4MXpdIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXHUxMjN6XSIsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAwMTIzNHpdIiwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXFUwMDExMDAwMF0iLCAiIikKIAogICAgIGRlZiB0ZXN0X3NyZV9ieXRlX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06CkBAIC04NDUsMTYgKzk5MywyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4MCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMnh6IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IieiIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXHUiLCBiJ3UnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlxVIiwgYidVJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlx1MTIzNCIsIGIndTEyMzQnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXFUwMDAxMjM0NSIsIGInVTAwMDEyMzQ1JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMCIsIGIiXDAwMCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDA4IiwgYiJcMDAwOCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAxIiwgYiJcMDAxIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDE4IiwgYiJcMDAxOCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDU2NyIsIGJ5dGVzKFswbzE2N10pKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJcOTExIiwgYiIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIlx4MSIsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDF6IiwgYiIiKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw1NjciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJceDEiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXHgxeiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKIAogICAgIGRlZiB0ZXN0X3NyZV9ieXRlX2NsYXNzX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06CkBAIC04NjYsMTAgKzEwMTgsMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeDBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4el0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1x1XSIsIGIndScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1xVXSIsIGInVScpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIGJyIltcOTExXSIsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJbXHgxel0iLCBiIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcdTEyMzRdIiwgYid1JykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcVTAwMDEyMzQ1XSIsIGInVScpKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltcNTY3XSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltcOTExXSIsIHInYmFkIGVzY2FwZSBcOScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiW1x4MXpdIiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAxKQorCisgICAgZGVmIHRlc3RfY2hhcmFjdGVyX3NldF9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocidbJywgJ3VudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ1teJywgJ3VudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0JywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ1thJywgJ3VudGVybWluYXRlZCBjaGFyYWN0ZXIgc2V0JywgMCkKKyAgICAgICAgIyBidWcgNTQ1ODU1IC0tIFRoaXMgcGF0dGVybiBmYWlsZWQgdG8gY2F1c2UgYSBjb21waWxlIGVycm9yIGFzIGl0CisgICAgICAgICMgc2hvdWxkLCBpbnN0ZWFkIHByb3Zva2luZyBhIFR5cGVFcnJvci4KKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlthLSIsICd1bnRlcm1pbmF0ZWQgY2hhcmFjdGVyIHNldCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbXHctYl0iLCByJ2JhZCBjaGFyYWN0ZXIgcmFuZ2UgXHctYicsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbYS1cd10iLCByJ2JhZCBjaGFyYWN0ZXIgcmFuZ2UgYS1cdycsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJbYi1hXSIsICdiYWQgY2hhcmFjdGVyIHJhbmdlIGItYScsIDEpCiAKICAgICBkZWYgdGVzdF9idWdfMTEzMjU0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKGEpfChiKScsICdiJykuc3RhcnQoMSksIC0xKQpAQCAtODg0LDExICsxMDUyLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKD9QPGE+YShiKSkiLCAiYWIiKS5sYXN0Z3JvdXAsICdhJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKIAotICAgIGRlZiB0ZXN0X2J1Z181NDU4NTUoc2VsZik6Ci0gICAgICAgICMgYnVnIDU0NTg1NSAtLSBUaGlzIHBhdHRlcm4gZmFpbGVkIHRvIGNhdXNlIGEgY29tcGlsZSBlcnJvciBhcyBpdAotICAgICAgICAjIHNob3VsZCwgaW5zdGVhZCBwcm92b2tpbmcgYSBUeXBlRXJyb3IuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnZm9vW2EtJykKLQogICAgIGRlZiB0ZXN0X2J1Z180MTg2MjYoc2VsZik6CiAgICAgICAgICMgYnVncyA0MTg2MjYgYXQgYWwuIC0tIFRlc3RpbmcgR3JlZyBDaGFwbWFuJ3MgYWRkaXRpb24gb2Ygb3AgY29kZQogICAgICAgICAjIFNSRV9PUF9NSU5fUkVQRUFUX09ORSBmb3IgZWxpbWluYXRpbmcgcmVjdXJzaW9uIG9uIHNpbXBsZSB1c2VzIG9mCkBAIC05MTIsNiArMTA3NSwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCcoeCkqeScsIDUwMDAwKid4JysneScpLmdyb3VwKDEpLCAneCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJyh4KSo/eScsIDUwMDAwKid4JysneScpLmdyb3VwKDEpLCAneCcpCiAKKyAgICBkZWYgdGVzdF9ub3RoaW5nX3RvX3JlcGVhdChzZWxmKToKKyAgICAgICAgZm9yIHJlcHMgaW4gJyonLCAnKycsICc/JywgJ3sxLDJ9JzoKKyAgICAgICAgICAgIGZvciBtb2QgaW4gJycsICc/JzoKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCclcyVzJyAlIChyZXBzLCBtb2QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdGhpbmcgdG8gcmVwZWF0JywgMCkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoPzolcyVzKScgJSAocmVwcywgbW9kKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvIHJlcGVhdCcsIDMpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9yZXBlYXQoc2VsZik6CisgICAgICAgIGZvciBvdXRlcl9yZXBzIGluICcqJywgJysnLCAnezEsMn0nOgorICAgICAgICAgICAgZm9yIG91dGVyX21vZCBpbiAnJywgJz8nOgorICAgICAgICAgICAgICAgIG91dGVyX29wID0gb3V0ZXJfcmVwcyArIG91dGVyX21vZAorICAgICAgICAgICAgICAgIGZvciBpbm5lcl9yZXBzIGluICcqJywgJysnLCAnPycsICd7MSwyfSc6CisgICAgICAgICAgICAgICAgICAgIGZvciBpbm5lcl9tb2QgaW4gJycsICc/JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyX29wID0gaW5uZXJfcmVwcyArIGlubmVyX21vZAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ3glcyVzJyAlIChpbm5lcl9vcCwgb3V0ZXJfb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwbGUgcmVwZWF0JywgMSArIGxlbihpbm5lcl9vcCkpCisKICAgICBkZWYgdGVzdF91bmxpbWl0ZWRfemVyb193aWR0aF9yZXBlYXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzk2NjkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPzphPykqeScsICd6JykpCkBAIC0xMDYyLDggKzEyNDMsOCBAQAogCiAgICAgZGVmIHRlc3RfaW5saW5lX2ZsYWdzKHNlbGYpOgogICAgICAgICAjIEJ1ZyAjMTcwMAotICAgICAgICB1cHBlcl9jaGFyID0gY2hyKDB4MWVhMCkgIyBMYXRpbiBDYXBpdGFsIExldHRlciBBIHdpdGggRG90IEJlbGxvdwotICAgICAgICBsb3dlcl9jaGFyID0gY2hyKDB4MWVhMSkgIyBMYXRpbiBTbWFsbCBMZXR0ZXIgQSB3aXRoIERvdCBCZWxsb3cKKyAgICAgICAgdXBwZXJfY2hhciA9ICdcdTFlYTAnICMgTGF0aW4gQ2FwaXRhbCBMZXR0ZXIgQSB3aXRoIERvdCBCZWxvdworICAgICAgICBsb3dlcl9jaGFyID0gJ1x1MWVhMScgIyBMYXRpbiBTbWFsbCBMZXR0ZXIgQSB3aXRoIERvdCBCZWxvdwogCiAgICAgICAgIHAgPSByZS5jb21waWxlKHVwcGVyX2NoYXIsIHJlLkkgfCByZS5VKQogICAgICAgICBxID0gcC5tYXRjaChsb3dlcl9jaGFyKQpAQCAtMTE0Myw2ICsxMzI0LDUyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2EpXHcnLCByZS5VTklDT0RFKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hdSlcdycpCiAKKyAgICBkZWYgdGVzdF9sb2NhbGVfZmxhZyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICBfLCBlbmMgPSBsb2NhbGUuZ2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkKKyAgICAgICAgIyBTZWFyY2ggbm9uLUFTQ0lJIGxldHRlcgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMjgsIDI1Nik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYyA9IGJ5dGVzKFtpXSkuZGVjb2RlKGVuYykKKyAgICAgICAgICAgICAgICBzbGV0dGVyID0gYy5sb3dlcigpCisgICAgICAgICAgICAgICAgaWYgc2xldHRlciA9PSBjOiBjb250aW51ZQorICAgICAgICAgICAgICAgIGJsZXR0ZXIgPSBzbGV0dGVyLmVuY29kZShlbmMpCisgICAgICAgICAgICAgICAgaWYgbGVuKGJsZXR0ZXIpICE9IDE6IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgYmxldHRlci5kZWNvZGUoZW5jKSAhPSBzbGV0dGVyOiBjb250aW51ZQorICAgICAgICAgICAgICAgIGJwYXQgPSByZS5lc2NhcGUoYnl0ZXMoW2ldKSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IChVbmljb2RlRXJyb3IsIFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmxldHRlciA9IE5vbmUKKyAgICAgICAgICAgIGJwYXQgPSBiJ0EnCisgICAgICAgICMgQnl0ZXMgcGF0dGVybnMKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicGF0LCByZS5MT0NBTEUgfCByZS5JR05PUkVDQVNFKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJyg/TCknICsgYnBhdCwgcmUuSUdOT1JFQ0FTRSkKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuSUdOT1JFQ0FTRSkKKyAgICAgICAgaWYgYmxldHRlcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgcmUuTE9DQUxFKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJyg/TClcdycpCisgICAgICAgIGlmIGJsZXR0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnKQorICAgICAgICBpZiBibGV0dGVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQorICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJyg/TCknKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9MKScsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2FMKScpCisKICAgICBkZWYgdGVzdF9idWdfNjUwOShzZWxmKToKICAgICAgICAgIyBSZXBsYWNlbWVudCBzdHJpbmdzIG9mIGJvdGggdHlwZXMgbXVzdCBwYXJzZSBwcm9wZXJseS4KICAgICAgICAgIyBhbGwgc3RyaW5ncwpAQCAtMTE3MCw4ICsxMzk3LDEwIEBACiAgICAgICAgICMgYSBSdW50aW1lRXJyb3IgaXMgcmFpc2VkIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KICAgICAgICAgbG9uZ19vdmVyZmxvdyA9IDIqKjEyOAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJlLmZpbmRpdGVyLCAiYSIsIHt9KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBfc3JlLmNvbXBpbGUsICJhYmMiLCAwLCBbbG9uZ19vdmVyZmxvd10pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3NyZS5jb21waWxlLCB7fSwgMCwgW10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICBfc3JlLmNvbXBpbGUoImFiYyIsIDAsIFtsb25nX292ZXJmbG93XSwgMCwgW10sIFtdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBfc3JlLmNvbXBpbGUoe30sIDAsIFtdLCAwLCBbXSwgW10pCiAKICAgICBkZWYgdGVzdF9zZWFyY2hfZG90X3VuaWNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNhYmMtJykpCkBAIC0xMTkzLDggKzE0MjIsOSBAQAogICAgIGRlZiB0ZXN0X2J1Z18xMzg5OShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTM4OTk6IHJlIHBhdHRlcm4gciJbXEFdIiBzaG91bGQgd29yayBsaWtlICJBIiBidXQgbWF0Y2hlcwogICAgICAgICAjIG5vdGhpbmcuIERpdHRvIEIgYW5kIFouCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbChyJ1tcQVxCXGJcQ1xaXScsICdBQlxiQ1onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ0EnLCAnQicsICdcYicsICdDJywgJ1onXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwocidbXEFcQlxiXENcWl0nLCAnQUJcYkNaJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQScsICdCJywgJ1xiJywgJ0MnLCAnWiddKQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0xKQogICAgIGRlZiB0ZXN0X2xhcmdlX3NlYXJjaChzZWxmLCBzaXplKToKQEAgLTEyNTMsMTMgKzE0ODMsMTMgQEAKIAogICAgIGRlZiB0ZXN0X2JhY2tyZWZfZ3JvdXBfbmFtZV9pbl9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTczNDE6IFBvb3IgZXJyb3IgbWVzc2FnZSB3aGVuIGNvbXBpbGluZyBpbnZhbGlkIHJlZ2V4Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzcmVfY29uc3RhbnRzLmVycm9yLCAnPGZvbz4nKToKLSAgICAgICAgICAgIHJlLmNvbXBpbGUoJyg/UD08Zm9vPiknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9PGZvbz4pJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICc8Zm9vPiciLCA0KQogCiAgICAgZGVmIHRlc3RfZ3JvdXBfbmFtZV9pbl9leGNlcHRpb24oc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTczNDE6IFBvb3IgZXJyb3IgbWVzc2FnZSB3aGVuIGNvbXBpbGluZyBpbnZhbGlkIHJlZ2V4Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzcmVfY29uc3RhbnRzLmVycm9yLCAnXD9mb28nKToKLSAgICAgICAgICAgIHJlLmNvbXBpbGUoJyg/UDw/Zm9vPiknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8P2Zvbz4pJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICc/Zm9vJyIsIDQpCiAKICAgICBkZWYgdGVzdF9pc3N1ZTE3OTk4KHNlbGYpOgogICAgICAgICBmb3IgcmVwcyBpbiAnKicsICcrJywgJz8nLCAnezF9JzoKQEAgLTEzMDksMjIgKzE1MzksMjIgQEAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXQ6CiAgICAgICAgICAgICByZS5jb21waWxlKHBhdCwgcmUuREVCVUcpCiAgICAgICAgIGR1bXAgPSAnJydcCi1zdWJwYXR0ZXJuIDEKLSAgbGl0ZXJhbCA0Ngotc3VicGF0dGVybiBOb25lCi0gIGJyYW5jaAotICAgIGluCi0gICAgICBsaXRlcmFsIDk5Ci0gICAgICBsaXRlcmFsIDEwNAotICBvcgotICAgIGxpdGVyYWwgMTEyCi0gICAgbGl0ZXJhbCAxMjEKLXN1YnBhdHRlcm4gTm9uZQotICBncm91cHJlZl9leGlzdHMgMQotICAgIGF0IGF0X2VuZAotICBlbHNlCi0gICAgbGl0ZXJhbCA1OAotICAgIGxpdGVyYWwgMzIKK1NVQlBBVFRFUk4gMQorICBMSVRFUkFMIDQ2CitTVUJQQVRURVJOIE5vbmUKKyAgQlJBTkNICisgICAgSU4KKyAgICAgIExJVEVSQUwgOTkKKyAgICAgIExJVEVSQUwgMTA0CisgIE9SCisgICAgTElURVJBTCAxMTIKKyAgICBMSVRFUkFMIDEyMQorU1VCUEFUVEVSTiBOb25lCisgIEdST1VQUkVGX0VYSVNUUyAxCisgICAgQVQgQVRfRU5ECisgIEVMU0UKKyAgICBMSVRFUkFMIDU4CisgICAgTElURVJBTCAzMgogJycnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCksIGR1bXApCiAgICAgICAgICMgRGVidWcgb3V0cHV0IGlzIG91dHB1dCBhZ2FpbiBldmVuIGEgc2Vjb25kIHRpbWUgKGJ5cGFzc2luZwpAQCAtMTM5Miw2ICsxNjIyLDU1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKGInKD9MaSlceGM1JywgYidceGU1JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKGInKD9MaSlceGU1JywgYidceGM1JykpCiAKKyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvcikgYXMgY206CisgICAgICAgICAgICByZS5jb21waWxlKCcoXHUyMGFjKSknKQorICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVyci5wYXR0ZXJuLCBzdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBhdHRlcm4sICcoXHUyMGFjKSknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5wb3MsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuY29sbm8sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLm1zZywgc3RyKGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyBhdCBwb3NpdGlvbiAzJywgc3RyKGVycikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJyBhdCBwb3NpdGlvbiAzJywgZXJyLm1zZykKKyAgICAgICAgIyBCeXRlcyBwYXR0ZXJuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuY29tcGlsZShiJyhceGE0KSknKQorICAgICAgICBlcnIgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVyci5wYXR0ZXJuLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucGF0dGVybiwgYicoXHhhNCkpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucG9zLCAzKQorICAgICAgICAjIE11bHRpbGluZSBwYXR0ZXJuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcmUuY29tcGlsZSgiIiIKKyAgICAgICAgICAgICAgICAoCisgICAgICAgICAgICAgICAgICAgIGFiYworICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgICIiIiwgcmUuVkVSQk9TRSkKKyAgICAgICAgZXJyID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLnBvcywgNzcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIuY29sbm8sIDE3KQorICAgICAgICBzZWxmLmFzc2VydEluKGVyci5tc2csIHN0cihlcnIpKQorICAgICAgICBzZWxmLmFzc2VydEluKCcgYXQgcG9zaXRpb24gNzcnLCBzdHIoZXJyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignKGxpbmUgNSwgY29sdW1uIDE3KScsIHN0cihlcnIpKQorCisgICAgZGVmIHRlc3RfbWlzY19lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKChhfGIpJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKGF8YikpJywgJ3VuYmFsYW5jZWQgcGFyZW50aGVzaXMnLCA1KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QJywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD96KScsICd1bmtub3duIGV4dGVuc2lvbiA/eicsIDEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6KScsICd1bmtub3duIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPyNhYmMnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgY29tbWVudCcsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPzwnLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPzw+KScsICd1bmtub3duIGV4dGVuc2lvbiA/PD4nLCAxKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8nLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDIpCisKIAogY2xhc3MgUGF0dGVyblJlcHJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNoZWNrKHNlbGYsIHBhdHRlcm4sIGV4cGVjdGVkKToKQEAgLTE0MzYsNiArMTcxNSwxMCBAQAogICAgICAgICBzZWxmLmNoZWNrX2ZsYWdzKGInYnl0ZXMgcGF0dGVybicsIHJlLkEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlLmNvbXBpbGUoYidieXRlcyBwYXR0ZXJuJywgcmUuQVNDSUkpIikKIAorICAgIGRlZiB0ZXN0X2xvY2FsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mbGFncyhiJ2J5dGVzIHBhdHRlcm4nLCByZS5MLAorICAgICAgICAgICAgICAgICAgICAgICAgICJyZS5jb21waWxlKGInYnl0ZXMgcGF0dGVybicsIHJlLkxPQ0FMRSkiKQorCiAgICAgZGVmIHRlc3RfcXVvdGVzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrKCdyYW5kb20gImRvdWJsZSBxdW90ZWQiIHBhdHRlcm4nLAogICAgICAgICAgICAgJycncmUuY29tcGlsZSgncmFuZG9tICJkb3VibGUgcXVvdGVkIiBwYXR0ZXJuJyknJycpCkBAIC0xNTQ5LDggKzE4MzIsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdieXRlcyBwYXR0ZXJuIG1hdGNoJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicGF0ID0gcmUuY29tcGlsZShicGF0KQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJwYXQuc2VhcmNoKGJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IHJlLmNvbXBpbGUoYnBhdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvYmouc2VhcmNoKGJzKSkKKworICAgICAgICAgICAgICAgICAgICAjIFRyeSB0aGUgbWF0Y2ggd2l0aCBMT0NBTEUgZW5hYmxlZCwgYW5kIGNoZWNrIHRoYXQgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBzdGlsbCBzdWNjZWVkcy4KKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoJ2xvY2FsZS1zZW5zaXRpdmUgbWF0Y2gnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuTE9DQUxFKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gb2JqLnNlYXJjaChicykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCc9PT0gRmFpbHMgb24gbG9jYWxlLXNlbnNpdGl2ZSBtYXRjaCcsIHQpCiAKICAgICAgICAgICAgICAgICAjIFRyeSB0aGUgbWF0Y2ggd2l0aCB0aGUgc2VhcmNoIGFyZWEgbGltaXRlZCB0byB0aGUgZXh0ZW50CiAgICAgICAgICAgICAgICAgIyBvZiB0aGUgbWF0Y2ggYW5kIHNlZSBpZiBpdCBzdGlsbCBzdWNjZWVkcy4gIFxCIHdpbGwKQEAgLTE1NjgsMTMgKzE4NTksNiBAQAogICAgICAgICAgICAgICAgICAgICBvYmogPSByZS5jb21waWxlKHBhdHRlcm4sIHJlLklHTk9SRUNBU0UpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvYmouc2VhcmNoKHMpKQogCi0gICAgICAgICAgICAgICAgIyBUcnkgdGhlIG1hdGNoIHdpdGggTE9DQUxFIGVuYWJsZWQsIGFuZCBjaGVjayB0aGF0IGl0Ci0gICAgICAgICAgICAgICAgIyBzdGlsbCBzdWNjZWVkcy4KLSAgICAgICAgICAgICAgICBpZiAnKD91KScgbm90IGluIHBhdHRlcm46Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCdsb2NhbGUtc2Vuc2l0aXZlIG1hdGNoJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvYmogPSByZS5jb21waWxlKHBhdHRlcm4sIHJlLkxPQ0FMRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvYmouc2VhcmNoKHMpKQotCiAgICAgICAgICAgICAgICAgIyBUcnkgdGhlIG1hdGNoIHdpdGggVU5JQ09ERSBsb2NhbGUgZW5hYmxlZCwgYW5kIGNoZWNrCiAgICAgICAgICAgICAgICAgIyB0aGF0IGl0IHN0aWxsIHN1Y2NlZWRzLgogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCd1bmljb2RlLXNlbnNpdGl2ZSBtYXRjaCcpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKaW5kZXggMGIyYjBhNS4uMzUzMzBhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CkBAIC0yLDkgKzIsMTAgQEAKIFZlcnkgbWluaW1hbCB1bml0dGVzdHMgZm9yIHBhcnRzIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCiAiIiIKIGltcG9ydCBvcworaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGltcG9ydF9tb2R1bGUKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZSwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAKICMgU2tpcCB0ZXN0cyBpZiB0aGVyZSBpcyBubyByZWFkbGluZSBtb2R1bGUKIHJlYWRsaW5lID0gaW1wb3J0X21vZHVsZSgncmVhZGxpbmUnKQpAQCAtNDIsNiArNDMsNDUgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoKCksIDEpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHJlYWRsaW5lLCAiYXBwZW5kX2hpc3RvcnlfZmlsZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhcHBlbmRfaGlzdG9yeSBub3QgYXZhaWxhYmxlIikKKyAgICBkZWYgdGVzdF93cml0ZV9yZWFkX2FwcGVuZChzZWxmKToKKyAgICAgICAgaGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQorICAgICAgICBoZmlsZS5jbG9zZSgpCisgICAgICAgIGhmaWxlbmFtZSA9IGhmaWxlLm5hbWUKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgaGZpbGVuYW1lKQorCisgICAgICAgICMgdGVzdCB3cml0ZS1jbGVhci1yZWFkID09IG5vcAorICAgICAgICByZWFkbGluZS5jbGVhcl9oaXN0b3J5KCkKKyAgICAgICAgcmVhZGxpbmUuYWRkX2hpc3RvcnkoImZpcnN0IGxpbmUiKQorICAgICAgICByZWFkbGluZS5hZGRfaGlzdG9yeSgic2Vjb25kIGxpbmUiKQorICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoaGZpbGVuYW1lKQorCisgICAgICAgIHJlYWRsaW5lLmNsZWFyX2hpc3RvcnkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoKCksIDApCisKKyAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9jdXJyZW50X2hpc3RvcnlfbGVuZ3RoKCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZGxpbmUuZ2V0X2hpc3RvcnlfaXRlbSgxKSwgImZpcnN0IGxpbmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9oaXN0b3J5X2l0ZW0oMiksICJzZWNvbmQgbGluZSIpCisKKyAgICAgICAgIyB0ZXN0IGFwcGVuZAorICAgICAgICByZWFkbGluZS5hcHBlbmRfaGlzdG9yeV9maWxlKDEsIGhmaWxlbmFtZSkKKyAgICAgICAgcmVhZGxpbmUuY2xlYXJfaGlzdG9yeSgpCisgICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9oaXN0b3J5X2l0ZW0oMSksICJmaXJzdCBsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkbGluZS5nZXRfaGlzdG9yeV9pdGVtKDIpLCAic2Vjb25kIGxpbmUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRsaW5lLmdldF9oaXN0b3J5X2l0ZW0oMyksICJzZWNvbmQgbGluZSIpCisKKyAgICAgICAgIyB0ZXN0ICdubyBzdWNoIGZpbGUnIGJlaGF2aW91cgorICAgICAgICBvcy51bmxpbmsoaGZpbGVuYW1lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yKToKKyAgICAgICAgICAgIHJlYWRsaW5lLmFwcGVuZF9oaXN0b3J5X2ZpbGUoMSwgaGZpbGVuYW1lKQorCisgICAgICAgICMgd3JpdGVfaGlzdG9yeV9maWxlIGNhbiBjcmVhdGUgdGhlIHRhcmdldAorICAgICAgICByZWFkbGluZS53cml0ZV9oaXN0b3J5X2ZpbGUoaGZpbGVuYW1lKQorCiAKIGNsYXNzIFRlc3RSZWFkbGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU3LDggKzk3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGInJykKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RIaXN0b3J5TWFuaXB1bGF0aW9uLCBUZXN0UmVhZGxpbmUpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQppbmRleCBhZTY3ZjA2Li5hNTFjNGQ3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CkBAIC0xMCw3ICsxMCw3IEBACiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNyZWF0ZV9lbXB0eV9maWxlLCB2ZXJib3NlCiBmcm9tIHJlcHJsaWIgaW1wb3J0IHJlcHIgYXMgciAjIERvbid0IHNoYWRvdyBidWlsdGluIHJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwcgpAQCAtNzAsMTggKzcwLDE4IEBACiAgICAgICAgIGVxKHIoWzEsIDIsIDMsIDQsIDUsIDYsIDddKSwgIlsxLCAyLCAzLCA0LCA1LCA2LCAuLi5dIikKIAogICAgICAgICAjIFNldHMgZ2l2ZSB1cCBhZnRlciA2IGFzIHdlbGwKLSAgICAgICAgZXEocihzZXQoW10pKSwgInNldChbXSkiKQotICAgICAgICBlcShyKHNldChbMV0pKSwgInNldChbMV0pIikKLSAgICAgICAgZXEocihzZXQoWzEsIDIsIDNdKSksICJzZXQoWzEsIDIsIDNdKSIpCi0gICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkpLCAic2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkiKQotICAgICAgICBlcShyKHNldChbMSwgMiwgMywgNCwgNSwgNiwgN10pKSwgInNldChbMSwgMiwgMywgNCwgNSwgNiwgLi4uXSkiKQorICAgICAgICBlcShyKHNldChbXSkpLCAic2V0KCkiKQorICAgICAgICBlcShyKHNldChbMV0pKSwgInsxfSIpCisgICAgICAgIGVxKHIoc2V0KFsxLCAyLCAzXSkpLCAiezEsIDIsIDN9IikKKyAgICAgICAgZXEocihzZXQoWzEsIDIsIDMsIDQsIDUsIDZdKSksICJ7MSwgMiwgMywgNCwgNSwgNn0iKQorICAgICAgICBlcShyKHNldChbMSwgMiwgMywgNCwgNSwgNiwgN10pKSwgInsxLCAyLCAzLCA0LCA1LCA2LCAuLi59IikKIAogICAgICAgICAjIEZyb3plbnNldHMgZ2l2ZSB1cCBhZnRlciA2IGFzIHdlbGwKLSAgICAgICAgZXEocihmcm96ZW5zZXQoW10pKSwgImZyb3plbnNldChbXSkiKQotICAgICAgICBlcShyKGZyb3plbnNldChbMV0pKSwgImZyb3plbnNldChbMV0pIikKLSAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDNdKSksICJmcm96ZW5zZXQoWzEsIDIsIDNdKSIpCi0gICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkpLCAiZnJvemVuc2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkiKQotICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNiwgN10pKSwgImZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNiwgLi4uXSkiKQorICAgICAgICBlcShyKGZyb3plbnNldChbXSkpLCAiZnJvemVuc2V0KCkiKQorICAgICAgICBlcShyKGZyb3plbnNldChbMV0pKSwgImZyb3plbnNldCh7MX0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoWzEsIDIsIDNdKSksICJmcm96ZW5zZXQoezEsIDIsIDN9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KFsxLCAyLCAzLCA0LCA1LCA2XSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzLCA0LCA1LCA2fSkiKQorICAgICAgICBlcShyKGZyb3plbnNldChbMSwgMiwgMywgNCwgNSwgNiwgN10pKSwgImZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNiwgLi4ufSkiKQogCiAgICAgICAgICMgY29sbGVjdGlvbnMuZGVxdWUgYWZ0ZXIgNgogICAgICAgICBlcShyKGRlcXVlKFsxLCAyLCAzLCA0LCA1LCA2LCA3XSkpLCAiZGVxdWUoWzEsIDIsIDMsIDQsIDUsIDYsIC4uLl0pIikKQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgZXEocihkKSwgInsnYWxpY2UnOiAxLCAnYXJ0aHVyJzogMSwgJ2JvYic6IDIsICdjaGFybGVzJzogMywgLi4ufSIpCiAKICAgICAgICAgIyBhcnJheS5hcnJheSBhZnRlciA1LgotICAgICAgICBlcShyKGFycmF5KCdpJykpLCAiYXJyYXkoJ2knLCBbXSkiKQorICAgICAgICBlcShyKGFycmF5KCdpJykpLCAiYXJyYXkoJ2knKSIpCiAgICAgICAgIGVxKHIoYXJyYXkoJ2knLCBbMV0pKSwgImFycmF5KCdpJywgWzFdKSIpCiAgICAgICAgIGVxKHIoYXJyYXkoJ2knLCBbMSwgMl0pKSwgImFycmF5KCdpJywgWzEsIDJdKSIpCiAgICAgICAgIGVxKHIoYXJyYXkoJ2knLCBbMSwgMiwgM10pKSwgImFycmF5KCdpJywgWzEsIDIsIDNdKSIpCkBAIC0xMDMsNiArMTAzLDIwIEBACiAgICAgICAgIGVxKHIoYXJyYXkoJ2knLCBbMSwgMiwgMywgNCwgNSwgNl0pKSwKICAgICAgICAgICAgICAgICAgICAiYXJyYXkoJ2knLCBbMSwgMiwgMywgNCwgNSwgLi4uXSkiKQogCisgICAgZGVmIHRlc3Rfc2V0X2xpdGVyYWwoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBlcShyKHsxfSksICJ7MX0iKQorICAgICAgICBlcShyKHsxLCAyLCAzfSksICJ7MSwgMiwgM30iKQorICAgICAgICBlcShyKHsxLCAyLCAzLCA0LCA1LCA2fSksICJ7MSwgMiwgMywgNCwgNSwgNn0iKQorICAgICAgICBlcShyKHsxLCAyLCAzLCA0LCA1LCA2LCA3fSksICJ7MSwgMiwgMywgNCwgNSwgNiwgLi4ufSIpCisKKyAgICBkZWYgdGVzdF9mcm96ZW5zZXQoc2VsZik6CisgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBlcShyKGZyb3plbnNldCh7MX0pKSwgImZyb3plbnNldCh7MX0pIikKKyAgICAgICAgZXEocihmcm96ZW5zZXQoezEsIDIsIDN9KSksICJmcm96ZW5zZXQoezEsIDIsIDN9KSIpCisgICAgICAgIGVxKHIoZnJvemVuc2V0KHsxLCAyLCAzLCA0LCA1LCA2fSkpLCAiZnJvemVuc2V0KHsxLCAyLCAzLCA0LCA1LCA2fSkiKQorICAgICAgICBlcShyKGZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNiwgN30pKSwgImZyb3plbnNldCh7MSwgMiwgMywgNCwgNSwgNiwgLi4ufSkiKQorCiAgICAgZGVmIHRlc3RfbnVtYmVycyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIGVxKHIoMTIzKSwgcmVwcigxMjMpKQpAQCAtMTIzLDcgKzEzNyw3IEBACiAgICAgICAgIGVxKHIoaTIpLCBleHBlY3RlZCkKIAogICAgICAgICBpMyA9IENsYXNzV2l0aEZhaWxpbmdSZXByKCkKLSAgICAgICAgZXEocihpMyksICgiPENsYXNzV2l0aEZhaWxpbmdSZXByIGluc3RhbmNlIGF0ICV4PiIlaWQoaTMpKSkKKyAgICAgICAgZXEocihpMyksICgiPENsYXNzV2l0aEZhaWxpbmdSZXByIGluc3RhbmNlIGF0ICUjeD4iJWlkKGkzKSkpCiAKICAgICAgICAgcyA9IHIoQ2xhc3NXaXRoRmFpbGluZ1JlcHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIjxjbGFzcyAiKSkKQEAgLTM3MywxMSArMzg3LDUgQEAKICAgICAgICAgbS5hcHBlbmQobSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAnPGEsIGIsIGMsIGQsIGUsICsrKywgeCwgKysrPicpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoUmVwclRlc3RzKQotICAgIHJ1bl91bml0dGVzdChMb25nUmVwclRlc3QpCi0gICAgcnVuX3VuaXR0ZXN0KFRlc3RSZWN1cnNpdmVSZXByKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weSBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQppbmRleCAwYjYyOWRjLi4xNTgyY2FhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CkBAIC0yMjgsMjUgKzIyOCwyNSBAQAogICAgICAgICBiID0gVXNlckxpc3QoKQogICAgICAgICBhLmFwcGVuZChiKQogICAgICAgICBiLmFwcGVuZChhKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmVxLCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLm5lLCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmx0LCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmxlLCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmd0LCBhLCBiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wZXJhdG9yLmdlLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IuZXEsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5uZSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmx0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IubGUsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5ndCwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmdlLCBhLCBiKQogCiAgICAgICAgIGIuYXBwZW5kKDE3KQogICAgICAgICAjIEV2ZW4gcmVjdXJzaXZlIGxpc3RzIG9mIGRpZmZlcmVudCBsZW5ndGhzIGFyZSBkaWZmZXJlbnQsCiAgICAgICAgICMgYnV0IHRoZXkgY2Fubm90IGJlIG9yZGVyZWQKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCAoYSA9PSBiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgIT0gYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5sdCwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5sZSwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5ndCwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5nZSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmx0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IubGUsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yLCBvcGVyYXRvci5ndCwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmdlLCBhLCBiKQogICAgICAgICBhLmFwcGVuZCgxNykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5lcSwgYSwgYikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBvcGVyYXRvci5uZSwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IsIG9wZXJhdG9yLmVxLCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgb3BlcmF0b3IubmUsIGEsIGIpCiAgICAgICAgIGEuaW5zZXJ0KDAsIDExKQogICAgICAgICBiLmluc2VydCgwLCAxMikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCAoYSA9PSBiKSkKQEAgLTMyNiw4ICszMjYsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcCh4LCB5KSwgVHJ1ZSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVmVjdG9yVGVzdCwgTnVtYmVyVGVzdCwgTWlzY1Rlc3QsIERpY3RUZXN0LCBMaXN0VGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKaW5kZXggMmRhN2ZjZS4uZDM3YjYyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CkBAIC03Miw2ICs3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhcycsIDIpLCAnYXNzZXJ0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQnKQogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCA3ODZiODEzLi40YmFlOTQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTgsMTAgKzgsMTAgQEAKIGltcG9ydCBpbXBvcnRsaWIsIGltcG9ydGxpYi5tYWNoaW5lcnksIGltcG9ydGxpYi51dGlsCiBpbXBvcnQgcHlfY29tcGlsZQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKLSAgICBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCi0gICAgY3JlYXRlX2VtcHR5X2ZpbGUpCi1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAotICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsIHRlbXBfZGlyKQorICAgIGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCisgICAgY3JlYXRlX2VtcHR5X2ZpbGUsIHRlbXBfZGlyKQorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAorICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQpCiAKIAogaW1wb3J0IHJ1bnB5CkBAIC0yNjksNyArMjY5LDcgQEAKICAgICAgICAgICAgIGlmIHZlcmJvc2UgPiAxOiBwcmludChleCkgIyBQZXJzaXN0IHdpdGggY2xlYW5pbmcgdXAKIAogICAgIGRlZiBfZml4X25zX2Zvcl9sZWdhY3lfcHljKHNlbGYsIG5zLCBhbHRlcl9zeXMpOgotICAgICAgICBjaGFyX3RvX2FkZCA9ICJjIiBpZiBfX2RlYnVnX18gZWxzZSAibyIKKyAgICAgICAgY2hhcl90b19hZGQgPSAiYyIKICAgICAgICAgbnNbIl9fZmlsZV9fIl0gKz0gY2hhcl90b19hZGQKICAgICAgICAgbnNbIl9fY2FjaGVkX18iXSA9IG5zWyJfX2ZpbGVfXyJdCiAgICAgICAgIHNwZWMgPSBuc1siX19zcGVjX18iXQpAQCAtNjczLDcgKzY3Myw3IEBACiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IHNlbGYuX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgbW9kX25hbWUsIHNvdXJjZSkKICAgICAgICAgICAgIHppcF9uYW1lLCBmbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIG1zZyA9ICJyZWN1cnNpb24gZGVwdGggZXhjZWVkZWQiCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwgbXNnLCBydW5fcGF0aCwgemlwX25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJlY3Vyc2lvbkVycm9yLCBtc2csIHJ1bl9wYXRoLCB6aXBfbmFtZSkKIAogICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5IGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKaW5kZXggOTBmMzAxNi4uMjQxMTg5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zYXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKQEAgLTIwMCw2ICsyMDAsMTMgQEAKICAgICAgICAgcGFyc2VTdHJpbmcocywgWE1MR2VuZXJhdG9yKHJlc3VsdCwgJ3V0Zi04JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LmdldHZhbHVlKCksIHhtbF9zdHIoc2VsZi5kYXRhLCAndXRmLTgnKSkKIAorICAgIGRlZiB0ZXN0X3BhcnNlU3RyaW5nX3RleHQoc2VsZik6CisgICAgICAgIGVuY29kaW5ncyA9ICgndXMtYXNjaWknLCAnaXNvLTg4NTktMScsICd1dGYtOCcsCisgICAgICAgICAgICAgICAgICAgICAndXRmLTE2JywgJ3V0Zi0xNmxlJywgJ3V0Zi0xNmJlJykKKyAgICAgICAgZm9yIGVuY29kaW5nIGluIGVuY29kaW5nczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGFyc2VTdHJpbmcoeG1sX3N0cihzZWxmLmRhdGEsIGVuY29kaW5nKSkKKyAgICAgICAgc2VsZi5jaGVja19wYXJzZVN0cmluZyhzZWxmLmRhdGEpCisKICAgICBkZWYgdGVzdF9wYXJzZVN0cmluZ19ieXRlcyhzZWxmKToKICAgICAgICAgIyBVVEYtOCBpcyBkZWZhdWx0IGVuY29kaW5nLCBVUy1BU0NJSSBpcyBjb21wYXRpYmxlIHdpdGggVVRGLTgsCiAgICAgICAgICMgVVRGLTE2IGlzIGF1dG9kZXRlY3RlZApAQCAtMzA2LDEyICszMTMsMjQgQEAKICAgICBkZWYgbWFrZV9ieXRlX3N0cmVhbShzZWxmKToKICAgICAgICAgcmV0dXJuIEJ5dGVzSU8oYiJUaGlzIGlzIGEgYnl0ZSBzdHJlYW0uIikKIAorICAgIGRlZiBtYWtlX2NoYXJhY3Rlcl9zdHJlYW0oc2VsZik6CisgICAgICAgIHJldHVybiBTdHJpbmdJTygiVGhpcyBpcyBhIGNoYXJhY3RlciBzdHJlYW0uIikKKwogICAgIGRlZiBjaGVja0NvbnRlbnQoc2VsZiwgc3RyZWFtLCBjb250ZW50KToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3RyZWFtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5yZWFkKCksIGNvbnRlbnQpCiAgICAgICAgIHN0cmVhbS5jbG9zZSgpCiAKIAorICAgIGRlZiB0ZXN0X2NoYXJhY3Rlcl9zdHJlYW0oc2VsZik6CisgICAgICAgICMgSWYgdGhlIHNvdXJjZSBpcyBhbiBJbnB1dFNvdXJjZSB3aXRoIGEgY2hhcmFjdGVyIHN0cmVhbSwgdXNlIGl0LgorICAgICAgICBzcmMgPSBJbnB1dFNvdXJjZShzZWxmLmZpbGUpCisgICAgICAgIHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oc2VsZi5tYWtlX2NoYXJhY3Rlcl9zdHJlYW0oKSkKKyAgICAgICAgcHJlcCA9IHByZXBhcmVfaW5wdXRfc291cmNlKHNyYykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJlcC5nZXRCeXRlU3RyZWFtKCkpCisgICAgICAgIHNlbGYuY2hlY2tDb250ZW50KHByZXAuZ2V0Q2hhcmFjdGVyU3RyZWFtKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGEgY2hhcmFjdGVyIHN0cmVhbS4iKQorCiAgICAgZGVmIHRlc3RfYnl0ZV9zdHJlYW0oc2VsZik6CiAgICAgICAgICMgSWYgdGhlIHNvdXJjZSBpcyBhbiBJbnB1dFNvdXJjZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBjaGFyYWN0ZXIKICAgICAgICAgIyBzdHJlYW0gYnV0IGRvZXMgaGF2ZSBhIGJ5dGUgc3RyZWFtLCB1c2UgdGhlIGJ5dGUgc3RyZWFtLgpAQCAtMzQ2LDYgKzM2NSwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrQ29udGVudChwcmVwLmdldEJ5dGVTdHJlYW0oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJUaGlzIGlzIGEgYnl0ZSBzdHJlYW0uIikKIAorICAgIGRlZiB0ZXN0X3RleHRfZmlsZShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgc291cmNlIGlzIGEgdGV4dCBmaWxlLWxpa2Ugb2JqZWN0LCB1c2UgaXQgYXMgYSBjaGFyYWN0ZXIKKyAgICAgICAgIyBzdHJlYW0uCisgICAgICAgIHByZXAgPSBwcmVwYXJlX2lucHV0X3NvdXJjZShzZWxmLm1ha2VfY2hhcmFjdGVyX3N0cmVhbSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcmVwLmdldEJ5dGVTdHJlYW0oKSkKKyAgICAgICAgc2VsZi5jaGVja0NvbnRlbnQocHJlcC5nZXRDaGFyYWN0ZXJTdHJlYW0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgYSBjaGFyYWN0ZXIgc3RyZWFtLiIpCisKIAogIyA9PT09PSBYTUxHZW5lcmF0b3IKIApAQCAtMTAyNSw2ICsxMDUyLDE5IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZ2V0dmFsdWUoKSwgeG1sX3Rlc3Rfb3V0KQogCisgICAgZGVmIHRlc3RfZXhwYXRfaW5wc291cmNlX2NoYXJhY3Rlcl9zdHJlYW0oc2VsZik6CisgICAgICAgIHBhcnNlciA9IGNyZWF0ZV9wYXJzZXIoKQorICAgICAgICByZXN1bHQgPSBCeXRlc0lPKCkKKyAgICAgICAgeG1sZ2VuID0gWE1MR2VuZXJhdG9yKHJlc3VsdCkKKworICAgICAgICBwYXJzZXIuc2V0Q29udGVudEhhbmRsZXIoeG1sZ2VuKQorICAgICAgICBpbnBzcmMgPSBJbnB1dFNvdXJjZSgpCisgICAgICAgIHdpdGggb3BlbihURVNUX1hNTEZJTEUsICdydCcsIGVuY29kaW5nPSdpc28tODg1OS0xJykgYXMgZjoKKyAgICAgICAgICAgIGlucHNyYy5zZXRDaGFyYWN0ZXJTdHJlYW0oZikKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZShpbnBzcmMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZ2V0dmFsdWUoKSwgeG1sX3Rlc3Rfb3V0KQorCiAgICAgIyA9PT09PSBJbmNyZW1lbnRhbFBhcnNlciBzdXBwb3J0CiAKICAgICBkZWYgdGVzdF9leHBhdF9pbmNyZW1lbnRhbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CmluZGV4IGIzMjU1NDUuLjQyMzliMjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY29wZS5weQpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdlYWtyZWYKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNoZWNrX3N5bnRheF9lcnJvciwgY3B5dGhvbl9vbmx5LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IsIGNweXRob25fb25seQogCiAKIGNsYXNzIFNjb3BlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzU3LDggKzc1Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoU2NvcGVUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMzcyZDZhNy4uYTc2ODBmOAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjcmlwdF9oZWxwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY3JpcHRfaGVscGVyLnB5CkBAIC0xLDggKzEsOCBAQAotIiIiVW5pdHRlc3RzIGZvciB0ZXN0LnNjcmlwdF9oZWxwZXIuICBXaG8gdGVzdHMgdGhlIHRlc3QgaGVscGVyPyIiIgorIiIiVW5pdHRlc3RzIGZvciB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlci4gIFdobyB0ZXN0cyB0aGUgdGVzdCBoZWxwZXI/IiIiCiAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIApAQCAtMjMsMjEgKzIzLDIxIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGVycm9yX2NvbnRleHQ6CiAgICAgICAgICAgICBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soJy1jJywgJ3N5cy5leGl0KDApJykKICAgICAgICAgZXJyb3JfbXNnID0gc3RyKGVycm9yX2NvbnRleHQuZXhjZXB0aW9uKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjb21tYW5kIGxpbmUgd2FzOicsIGVycm9yX21zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY29tbWFuZCBsaW5lOicsIGVycm9yX21zZykKICAgICAgICAgc2VsZi5hc3NlcnRJbignc3lzLmV4aXQoMCknLCBlcnJvcl9tc2csIG1zZz0ndW5leHBlY3RlZCBjb21tYW5kIGxpbmUnKQogCiAgICAgZGVmIHRlc3RfYXNzZXJ0X3B5dGhvbl9mYWlsdXJlX3JhaXNlcyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcikgYXMgZXJyb3JfY29udGV4dDoKICAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsICdpbXBvcnQgc3lzOyBzeXMuZXhpdCgwKScpCiAgICAgICAgIGVycm9yX21zZyA9IHN0cihlcnJvcl9jb250ZXh0LmV4Y2VwdGlvbikKLSAgICAgICAgc2VsZi5hc3NlcnRJbignUHJvY2VzcyByZXR1cm4gY29kZSBpcyAwLCcsIGVycm9yX21zZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignUHJvY2VzcyByZXR1cm4gY29kZSBpcyAwXG4nLCBlcnJvcl9tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDApJywgZXJyb3JfbXNnLAogICAgICAgICAgICAgICAgICAgICAgIG1zZz0ndW5leHBlY3RlZCBjb21tYW5kIGxpbmUuJykKIAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLlBvcGVuJykKICAgICBkZWYgdGVzdF9hc3NlcnRfcHl0aG9uX2lzb2xhdGVkX3doZW5fZW52X25vdF9yZXF1aXJlZChzZWxmLCBtb2NrX3BvcGVuKToKICAgICAgICAgd2l0aCBtb2NrLnBhdGNoLm9iamVjdChzY3JpcHRfaGVscGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPUZhbHNlKSBhcyBtb2NrX2lyZV9mdW5jOgogICAgICAgICAgICAgbW9ja19wb3Blbi5zaWRlX2VmZmVjdCA9IFJ1bnRpbWVFcnJvcignYmFpbCBvdXQgb2YgdW5pdHRlc3QnKQogICAgICAgICAgICAgdHJ5OgpAQCAtNTYsNyArNTYsNyBAQAogICAgIGRlZiB0ZXN0X2Fzc2VydF9weXRob25fbm90X2lzb2xhdGVkX3doZW5fZW52X2lzX3JlcXVpcmVkKHNlbGYsIG1vY2tfcG9wZW4pOgogICAgICAgICAiIiJFbnN1cmUgdGhhdCAtSSBpcyBub3QgcGFzc2VkIHdoZW4gdGhlIGVudmlyb25tZW50IGlzIHJlcXVpcmVkLiIiIgogICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNjcmlwdF9oZWxwZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZSkgYXMgbW9ja19pcmVfZnVuYzoKICAgICAgICAgICAgIG1vY2tfcG9wZW4uc2lkZV9lZmZlY3QgPSBSdW50aW1lRXJyb3IoJ2JhaWwgb3V0IG9mIHVuaXR0ZXN0JykKICAgICAgICAgICAgIHRyeToKQEAgLTY5LDcgKzY5LDcgQEAKIAogCiBjbGFzcyBUZXN0U2NyaXB0SGVscGVyRW52aXJvbm1lbnQodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkNvZGUgY292ZXJhZ2UgZm9yIF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpLiIiIgorICAgICIiIkNvZGUgY292ZXJhZ2UgZm9yIGludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkuIiIiCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKQEAgLTg0LDIyICs4NCwyMiBAQAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnKQogICAgIGRlZiB0ZXN0X2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50X3RydWUoc2VsZiwgbW9ja19jaGVja19jYWxsKToKICAgICAgICAgbW9ja19jaGVja19jYWxsLnNpZGVfZWZmZWN0ID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoJycsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzY3JpcHRfaGVscGVyLmludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbW9ja19jaGVja19jYWxsLmNhbGxfY291bnQpCiAKICAgICBAbW9jay5wYXRjaCgnc3VicHJvY2Vzcy5jaGVja19jYWxsJykKICAgICBkZWYgdGVzdF9pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudF9mYWxzZShzZWxmLCBtb2NrX2NoZWNrX2NhbGwpOgogICAgICAgICAjIFRoZSBtb2NrZWQgc3VicHJvY2Vzcy5jaGVja19jYWxsIGZha2VzIGEgbm8tZXJyb3IgcHJvY2Vzcy4KLSAgICAgICAgc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCisgICAgICAgIHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBtb2NrX2NoZWNrX2NhbGwuY2FsbF9jb3VudCkKIAogICAgIEBtb2NrLnBhdGNoKCdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnKQogICAgIGRlZiB0ZXN0X2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50X2RldGFpbHMoc2VsZiwgbW9ja19jaGVja19jYWxsKToKLSAgICAgICAgc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5faW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKKyAgICAgICAgc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2NyaXB0X2hlbHBlci5pbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNjcmlwdF9oZWxwZXIuaW50ZXJwcmV0ZXJfcmVxdWlyZXNfZW52aXJvbm1lbnQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBtb2NrX2NoZWNrX2NhbGwuY2FsbF9jb3VudCkKICAgICAgICAgY2hlY2tfY2FsbF9jb21tYW5kID0gbW9ja19jaGVja19jYWxsLmNhbGxfYXJnc1swXVswXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5leGVjdXRhYmxlLCBjaGVja19jYWxsX2NvbW1hbmRbMF0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlbGVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CmluZGV4IDhmOWExYzkuLmE5NzNmM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5CkBAIC03NSw5ICs3NSw4IEBACiAgICAgICAgIGFbOl0gPSBbRigpXSAqIDEwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0LnNlbGVjdChbXSwgYSwgW10pLCAoW10sIGFbOjVdLCBbXSkpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTZWxlY3RUZXN0Q2FzZSkKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkKaW5kZXggOTUyZmRhNi4uNDU0YzE3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWxlY3RvcnMucHkKQEAgLTksMTAgKzksNyBAQAogZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdW5pdHRlc3QubW9jawotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogdHJ5OgogICAgIGltcG9ydCByZXNvdXJjZQogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjUsNyArMjIsNyBAQAogICAgIGRlZiBzb2NrZXRwYWlyKGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0sIHByb3RvPTApOgogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bykgYXMgbDoKICAgICAgICAgICAgIGwuYmluZCgoc3VwcG9ydC5IT1NULCAwKSkKLSAgICAgICAgICAgIGwubGlzdGVuKDMpCisgICAgICAgICAgICBsLmxpc3RlbigpCiAgICAgICAgICAgICBjID0gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMuY29ubmVjdChsLmdldHNvY2tuYW1lKCkpCkBAIC0xODgsOCArMTg1LDggQEAKICAgICAgICAgcy5yZWdpc3Rlcih3ciwgc2VsZWN0b3JzLkVWRU5UX1dSSVRFKQogCiAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcy5nZXRfa2V5LCByZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHMuZ2V0X2tleSwgd3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcy5nZXRfa2V5LCByZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzLmdldF9rZXksIHdyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbWFwcGluZy5fX2dldGl0ZW1fXywgcmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtYXBwaW5nLl9fZ2V0aXRlbV9fLCB3cikKIApAQCAtMjU4LDggKzI1NSw4IEBACiAgICAgICAgICAgICBzZWwucmVnaXN0ZXIocmQsIHNlbGVjdG9ycy5FVkVOVF9SRUFEKQogICAgICAgICAgICAgc2VsLnJlZ2lzdGVyKHdyLCBzZWxlY3RvcnMuRVZFTlRfV1JJVEUpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHMuZ2V0X2tleSwgcmQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzLmdldF9rZXksIHdyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHMuZ2V0X2tleSwgcmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcy5nZXRfa2V5LCB3cikKIAogICAgIGRlZiB0ZXN0X2ZpbGVubyhzZWxmKToKICAgICAgICAgcyA9IHNlbGYuU0VMRUNUT1IoKQpAQCAtMzYwLDcgKzM1NywzNSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwuYWxhcm0oKSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IikKLSAgICBkZWYgdGVzdF9zZWxlY3RfaW50ZXJydXB0KHNlbGYpOgorICAgIGRlZiB0ZXN0X3NlbGVjdF9pbnRlcnJ1cHRfZXhjKHNlbGYpOgorICAgICAgICBzID0gc2VsZi5TRUxFQ1RPUigpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorCisgICAgICAgIHJkLCB3ciA9IHNlbGYubWFrZV9zb2NrZXRwYWlyKCkKKworICAgICAgICBjbGFzcyBJbnRlcnJ1cHRTZWxlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgaGFuZGxlcigqYXJncyk6CisgICAgICAgICAgICByYWlzZSBJbnRlcnJ1cHRTZWxlY3QKKworICAgICAgICBvcmlnX2Fscm1faGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb3JpZ19hbHJtX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuYWxhcm0sIDApCisKKyAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisKKyAgICAgICAgcy5yZWdpc3RlcihyZCwgc2VsZWN0b3JzLkVWRU5UX1JFQUQpCisgICAgICAgIHQgPSB0aW1lKCkKKyAgICAgICAgIyBzZWxlY3QoKSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCB3aGljaCByYWlzZXMgYW4gZXhjZXB0aW9uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW50ZXJydXB0U2VsZWN0KToKKyAgICAgICAgICAgIHMuc2VsZWN0KDMwKQorICAgICAgICAjIHNlbGVjdCgpIHdhcyBpbnRlcnJ1cHRlZCBiZWZvcmUgdGhlIHRpbWVvdXQgb2YgMzAgc2Vjb25kcworICAgICAgICBzZWxmLmFzc2VydExlc3ModGltZSgpIC0gdCwgNS4wKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwuYWxhcm0oKSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICBkZWYgdGVzdF9zZWxlY3RfaW50ZXJydXB0X25vcmFpc2Uoc2VsZik6CiAgICAgICAgIHMgPSBzZWxmLlNFTEVDVE9SKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCiAKQEAgLTM3NCw4ICszOTksMTEgQEAKIAogICAgICAgICBzLnJlZ2lzdGVyKHJkLCBzZWxlY3RvcnMuRVZFTlRfUkVBRCkKICAgICAgICAgdCA9IHRpbWUoKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VsZWN0KDIpKQotICAgICAgICBzZWxmLmFzc2VydExlc3ModGltZSgpIC0gdCwgMi41KQorICAgICAgICAjIHNlbGVjdCgpIGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBidXQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXNuJ3QKKyAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24sIHNvIHNlbGVjdCgpIHNob3VsZCBieSByZXRyaWVzIHdpdGggYSByZWNvbXB1dGVkCisgICAgICAgICMgdGltZW91dAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VsZWN0KDEuNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHRpbWUoKSAtIHQsIDEuMCkKIAogCiBjbGFzcyBTY2FsYWJsZVNlbGVjdG9yTWl4SW46CkBAIC00NTUsMTAgKzQ4MywxOCBAQAogICAgIFNFTEVDVE9SID0gZ2V0YXR0cihzZWxlY3RvcnMsICdLcXVldWVTZWxlY3RvcicsIE5vbmUpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3RvcnMsICdEZXZwb2xsU2VsZWN0b3InKSwKKyAgICAgICAgICAgICAgICAgICAgICJUZXN0IG5lZWRzIHNlbGVjdG9ycy5EZXZwb2xsU2VsZWN0b3IiKQorY2xhc3MgRGV2cG9sbFNlbGVjdG9yVGVzdENhc2UoQmFzZVNlbGVjdG9yVGVzdENhc2UsIFNjYWxhYmxlU2VsZWN0b3JNaXhJbik6CisKKyAgICBTRUxFQ1RPUiA9IGdldGF0dHIoc2VsZWN0b3JzLCAnRGV2cG9sbFNlbGVjdG9yJywgTm9uZSkKKworCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtEZWZhdWx0U2VsZWN0b3JUZXN0Q2FzZSwgU2VsZWN0U2VsZWN0b3JUZXN0Q2FzZSwKICAgICAgICAgICAgICBQb2xsU2VsZWN0b3JUZXN0Q2FzZSwgRXBvbGxTZWxlY3RvclRlc3RDYXNlLAotICAgICAgICAgICAgIEtxdWV1ZVNlbGVjdG9yVGVzdENhc2VdCisgICAgICAgICAgICAgS3F1ZXVlU2VsZWN0b3JUZXN0Q2FzZSwgRGV2cG9sbFNlbGVjdG9yVGVzdENhc2VdCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggZjA4NGViZS4uNTRkZTUwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTkzMSw3ICs5MzEsNyBAQAogCiBjbGFzcyBUZXN0QmFzaWNPcHNCeXRlcyhUZXN0QmFzaWNPcHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuY2FzZSAgID0gInN0cmluZyBzZXQiCisgICAgICAgIHNlbGYuY2FzZSAgID0gImJ5dGVzIHNldCIKICAgICAgICAgc2VsZi52YWx1ZXMgPSBbYiJhIiwgYiJiIiwgYiJjIl0KICAgICAgICAgc2VsZi5zZXQgICAgPSBzZXQoc2VsZi52YWx1ZXMpCiAgICAgICAgIHNlbGYuZHVwICAgID0gc2V0KHNlbGYudmFsdWVzKQpAQCAtMTc0Miw2ICsxNzQyLDE5IEBACiAgICAgICAgIHMudXBkYXRlKHJhbmdlKDEwMCkpCiAgICAgICAgIGxpc3Qoc2kpCiAKKyAgICBkZWYgdGVzdF9tZXJnZV9hbmRfbXV0YXRlKHNlbGYpOgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBoYXNoKDApCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIG90aGVyLmNsZWFyKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBvdGhlciA9IHNldCgpCisgICAgICAgIG90aGVyID0ge1goKSBmb3IgaSBpbiByYW5nZSgxMCl9CisgICAgICAgIHMgPSB7MH0KKyAgICAgICAgcy51cGRhdGUob3RoZXIpCisKICMgQXBwbGljYXRpb24gdGVzdHMgKGJhc2VkIG9uIERhdmlkIEVwcHN0ZWluJ3MgZ3JhcGggcmVjaXBlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogZGVmIHBvd2Vyc2V0KFUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggZDI4MDlhZS4uNGZhZmRkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKICMgVGhlIG9yaWdpbmFsIHRlc3QgZGF0YSBzZXQgd2FzIGZyb20gc2hlbGx3b3JkcywgYnkgSGFydG11dCBHb2ViZWwuCkBAIC0xOTUsOCArMTk0LDUgQEAKICAgICAgICAgaWYgbWV0aG5hbWUuc3RhcnRzd2l0aCgidGVzdCIpIGFuZCBtZXRobmFtZSAhPSAidGVzdENvbXBhdCI6CiAgICAgICAgICAgICBkZWxhdHRyKFNobGV4VGVzdCwgbWV0aG5hbWUpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTaGxleFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKaW5kZXggNWI0ZTdlNy4uNTIyOTU5YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKQEAgLTMyLDYgKzMyLDEyIEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgQloyX1NVUFBPUlRFRCA9IEZhbHNlCiAKK3RyeToKKyAgICBpbXBvcnQgbHptYQorICAgIExaTUFfU1VQUE9SVEVEID0gVHJ1ZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIExaTUFfU1VQUE9SVEVEID0gRmFsc2UKKwogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogCiB0cnk6CkBAIC0xMjA4LDYgKzEyMTQsOCBAQAogICAgICAgICBmb3JtYXRzID0gWyd0YXInLCAnZ3p0YXInLCAnemlwJ10KICAgICAgICAgaWYgQloyX1NVUFBPUlRFRDoKICAgICAgICAgICAgIGZvcm1hdHMuYXBwZW5kKCdienRhcicpCisgICAgICAgIGlmIExaTUFfU1VQUE9SVEVEOgorICAgICAgICAgICAgZm9ybWF0cy5hcHBlbmQoJ3h6dGFyJykKIAogICAgICAgICByb290X2RpciwgYmFzZV9kaXIgPSBzZWxmLl9jcmVhdGVfZmlsZXMoKQogICAgICAgICBleHBlY3RlZCA9IHJsaXN0ZGlyKHJvb3RfZGlyKQpAQCAtMTY0NCw2ICsxNjUyLDI0IEBACiAgICAgICAgIHJ2ID0gc2h1dGlsLm1vdmUoc2VsZi5zcmNfZmlsZSwgb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ2JhcicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCiAKKyAgICBAbW9ja19yZW5hbWUKKyAgICBkZWYgdGVzdF9tb3ZlX2ZpbGVfc3BlY2lhbF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgbW92ZWQgPSBbXQorICAgICAgICBkZWYgX2NvcHkoc3JjLCBkc3QpOgorICAgICAgICAgICAgbW92ZWQuYXBwZW5kKChzcmMsIGRzdCkpCisgICAgICAgIHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2RpciwgY29weV9mdW5jdGlvbj1fY29weSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW92ZWQpLCAxKQorCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kaXJfc3BlY2lhbF9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgbW92ZWQgPSBbXQorICAgICAgICBkZWYgX2NvcHkoc3JjLCBkc3QpOgorICAgICAgICAgICAgbW92ZWQuYXBwZW5kKChzcmMsIGRzdCkpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2NoaWxkJykpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2NoaWxkMScpKQorICAgICAgICBzaHV0aWwubW92ZShzZWxmLnNyY19kaXIsIHNlbGYuZHN0X2RpciwgY29weV9mdW5jdGlvbj1fY29weSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW92ZWQpLCAzKQorCiAKIGNsYXNzIFRlc3RDb3B5RmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKaW5kZXggNzRmNzRhZi4uMWI4MGZmMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKQEAgLTEsMTkgKzEsMjUgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKK2ltcG9ydCBlbnVtCiBpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaWduYWwKK2ltcG9ydCBzb2NrZXQKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgc3lzLCBvcywgdGltZSwgZXJybm8KLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBzcGF3bl9weXRob24KK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIHNwYXduX3B5dGhvbgogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCiBjbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgpAQCAtMzksNiArNDUsMjMgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKIAogCitjbGFzcyBHZW5lcmljVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCisgICAgZGVmIHRlc3RfZW51bXMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIGRpcihzaWduYWwpOgorICAgICAgICAgICAgc2lnID0gZ2V0YXR0cihzaWduYWwsIG5hbWUpCisgICAgICAgICAgICBpZiBuYW1lIGluIHsnU0lHX0RGTCcsICdTSUdfSUdOJ306CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLkhhbmRsZXJzKQorICAgICAgICAgICAgZWxpZiBuYW1lIGluIHsnU0lHX0JMT0NLJywgJ1NJR19VTkJMT0NLJywgJ1NJR19TRVRNQVNLJ306CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ21hc2tzKQorICAgICAgICAgICAgZWxpZiBuYW1lLnN0YXJ0c3dpdGgoJ1NJRycpIGFuZCBub3QgbmFtZS5zdGFydHN3aXRoKCdTSUdfJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ25hbHMpCisgICAgICAgICAgICBlbGlmIG5hbWUuc3RhcnRzd2l0aCgnQ1RSTF8nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lnLCBzaWduYWwuU2lnbmFscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5wbGF0Zm9ybSwgIndpbjMyIikKKworCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIE1BWF9EVVJBVElPTiA9IDIwICAgIyBFbnRpcmUgdGVzdCBzaG91bGQgbGFzdCBhdCBtb3N0IDIwIHNlYy4KQEAgLTE5NSw2ICsyMTgsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0c2lnbmFsKHNlbGYpOgogICAgICAgICBodXAgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYudHJpdmlhbF9zaWduYWxfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGh1cCwgc2lnbmFsLkhhbmRsZXJzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0hVUCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50cml2aWFsX3NpZ25hbF9oYW5kbGVyKQogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKQEAgLTIyOSwxNSArMjUzLDc3IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2ZkKHNlbGYpOgogICAgICAgICBmZCA9IHN1cHBvcnQubWFrZV9iYWRfZmQoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzaWduYWwuc2V0X3dha2V1cF9mZCwgZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPU0Vycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQsIGZkKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9zb2NrZXQoc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgZmQgPSBzb2NrLmZpbGVubygpCisgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT1NFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkLCBmZCkKKworICAgIGRlZiB0ZXN0X3NldF93YWtldXBfZmRfcmVzdWx0KHNlbGYpOgorICAgICAgICByMSwgdzEgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3MSkKKyAgICAgICAgcjIsIHcyID0gb3MucGlwZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcjIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgdzIpCisKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ3NldF9ibG9ja2luZycpOgorICAgICAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHcxLCBGYWxzZSkKKyAgICAgICAgICAgIG9zLnNldF9ibG9ja2luZyh3MiwgRmFsc2UpCisKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQodzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQodzIpLCB3MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuc2V0X3dha2V1cF9mZCgtMSksIHcyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgLTEpCisKKyAgICBkZWYgdGVzdF9zZXRfd2FrZXVwX2ZkX3NvY2tldF9yZXN1bHQoc2VsZik6CisgICAgICAgIHNvY2sxID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrMS5jbG9zZSkKKyAgICAgICAgc29jazEuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIGZkMSA9IHNvY2sxLmZpbGVubygpCisKKyAgICAgICAgc29jazIgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2syLmNsb3NlKQorICAgICAgICBzb2NrMi5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgZmQyID0gc29jazIuZmlsZW5vKCkKKworICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZChmZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNldF93YWtldXBfZmQoZmQyKSwgZmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgZmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKSwgLTEpCisKKyAgICAjIE9uIFdpbmRvd3MsIGZpbGVzIGFyZSBhbHdheXMgYmxvY2tpbmcgYW5kIFdpbmRvd3MgZG9lcyBub3QgcHJvdmlkZSBhCisgICAgIyBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgc29ja2V0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlLgorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJ0ZXN0cyBzcGVjaWZpYyB0byBQT1NJWCIpCisgICAgZGVmIHRlc3Rfc2V0X3dha2V1cF9mZF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgcmZkLCB3ZmQgPSBvcy5waXBlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCByZmQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgd2ZkKQorCisgICAgICAgICMgZmQgbXVzdCBiZSBub24tYmxvY2tpbmcKKyAgICAgICAgb3Muc2V0X2Jsb2NraW5nKHdmZCwgVHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGZkICVzIG11c3QgYmUgaW4gbm9uLWJsb2NraW5nIG1vZGUiICUgd2ZkKQorCisgICAgICAgICMgbm9uLWJsb2NraW5nIGlzIG9rCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3ZmQsIEZhbHNlKQorICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3ZmQpCisgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKC0xKQogCiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBXYWtldXBTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBkZWYgY2hlY2tfd2FrZXVwKHNlbGYsIHRlc3RfYm9keSwgKnNpZ25hbHMsIG9yZGVyZWQ9VHJ1ZSk6CiAgICAgICAgICMgdXNlIGEgc3VicHJvY2VzcyB0byBoYXZlIG9ubHkgb25lIHRocmVhZAogICAgICAgICBjb2RlID0gIiIiaWYgMToKLSAgICAgICAgaW1wb3J0IGZjbnRsCisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGltcG9ydCBzaWduYWwKICAgICAgICAgaW1wb3J0IHN0cnVjdApAQCAtMjYwLDEwICszNDYsNyBAQAogCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGhhbmRsZXIpCiAgICAgICAgIHJlYWQsIHdyaXRlID0gb3MucGlwZSgpCi0gICAgICAgIGZvciBmZCBpbiAocmVhZCwgd3JpdGUpOgotICAgICAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGTCwgMCkKLSAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBvcy5PX05PTkJMT0NLCi0gICAgICAgICAgICBmY250bC5mY250bChmZCwgZmNudGwuRl9TRVRGTCwgZmxhZ3MpCisgICAgICAgIG9zLnNldF9ibG9ja2luZyh3cml0ZSwgRmFsc2UpCiAgICAgICAgIHNpZ25hbC5zZXRfd2FrZXVwX2ZkKHdyaXRlKQogCiAgICAgICAgIHRlc3QoKQpAQCAtMjcxLDIxICszNTQsMjEgQEAKIAogICAgICAgICBvcy5jbG9zZShyZWFkKQogICAgICAgICBvcy5jbG9zZSh3cml0ZSkKLSAgICAgICAgIiIiLmZvcm1hdChzaWduYWxzLCBvcmRlcmVkLCB0ZXN0X2JvZHkpCisgICAgICAgICIiIi5mb3JtYXQodHVwbGUobWFwKGludCwgc2lnbmFscykpLCBvcmRlcmVkLCB0ZXN0X2JvZHkpCiAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBkZWYgdGVzdF93YWtldXBfd3JpdGVfZXJyb3Ioc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzE2MTA1OiB3cml0ZSgpIGVycm9ycyBpbiB0aGUgQyBzaWduYWwgaGFuZGxlciBzaG91bGQgbm90CiAgICAgICAgICMgcGFzcyBzaWxlbnRseS4KICAgICAgICAgIyBVc2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkLgogICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogICAgICAgICBpbXBvcnQgZXJybm8KLSAgICAgICAgaW1wb3J0IGZjbnRsCiAgICAgICAgIGltcG9ydCBvcwogICAgICAgICBpbXBvcnQgc2lnbmFsCiAgICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgaW1wb3J0IHRpbWUKICAgICAgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgogCiAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgpAQCAtMjkzLDE1ICszNzYsMTMgQEAKIAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICByLCB3ID0gb3MucGlwZSgpCi0gICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwociwgZmNudGwuRl9HRVRGTCwgMCkKLSAgICAgICAgZmNudGwuZmNudGwociwgZmNudGwuRl9TRVRGTCwgZmxhZ3MgfCBvcy5PX05PTkJMT0NLKQorICAgICAgICBvcy5zZXRfYmxvY2tpbmcociwgRmFsc2UpCiAKICAgICAgICAgIyBTZXQgd2FrZXVwX2ZkIGEgcmVhZC1vbmx5IGZpbGUgZGVzY3JpcHRvciB0byB0cmlnZ2VyIHRoZSBlcnJvcgogICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZChyKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycjoKLSAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDUuMCkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ25hbC5TSUdBTFJNKQogICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CiAgICAgICAgICAgICAjIEFuIGlnbm9yZWQgZXhjZXB0aW9uIHNob3VsZCBoYXZlIGJlZW4gcHJpbnRlZCBvdXQgb24gc3RkZXJyCiAgICAgICAgICAgICBlcnIgPSBlcnIuZ2V0dmFsdWUoKQpAQCAtMzEyLDYgKzM5Myw5IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXJyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorCisgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgIG9zLmNsb3NlKHcpCiAgICAgICAgICIiIgogICAgICAgICByLCB3ID0gb3MucGlwZSgpCiAgICAgICAgIHRyeToKQEAgLTMzNCwxOCArNDE4LDI4IEBACiAgICAgICAgICAgICBUSU1FT1VUX0ZVTEwgPSAxMAogICAgICAgICAgICAgVElNRU9VVF9IQUxGID0gNQogCisgICAgICAgICAgICBjbGFzcyBJbnRlcnJ1cHRTZWxlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEludGVycnVwdFNlbGVjdAorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKKwogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzbGVlcCwKICAgICAgICAgICAgICMgYmVmb3JlIHNlbGVjdCBpcyBjYWxsZWQKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoVElNRU9VVF9GVUxMKQotICAgICAgICAgICAgbWlkX3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgZHQgPSBtaWRfdGltZSAtIGJlZm9yZV90aW1lCi0gICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW10sIFtdLCBUSU1FT1VUX0ZVTEwpCisgICAgICAgICAgICBleGNlcHQgSW50ZXJydXB0U2VsZWN0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJzZWxlY3QoKSB3YXMgbm90IGludGVycnVwdGVkIikKKworICAgICAgICAgICAgYmVmb3JlX3RpbWUgPSB0aW1lLm1vbm90b25pYygpCiAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtyZWFkXSwgW10sIFtdLCBUSU1FT1VUX0ZVTEwpCi0gICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIG1pZF90aW1lCisgICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKICAgICAgICAgIiIiLCBzaWduYWwuU0lHQUxSTSkKQEAgLTM1OCwxNiArNDUyLDIzIEBACiAgICAgICAgICAgICBUSU1FT1VUX0ZVTEwgPSAxMAogICAgICAgICAgICAgVElNRU9VVF9IQUxGID0gNQogCisgICAgICAgICAgICBjbGFzcyBJbnRlcnJ1cHRTZWxlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIHJhaXNlIEludGVycnVwdFNlbGVjdAorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKKwogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKICAgICAgICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzZWxlY3QgY2FsbAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3JlYWRdLCBbXSwgW10sIFRJTUVPVVRfRlVMTCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdFNlbGVjdDoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiT1NFcnJvciBub3QgcmFpc2VkIikKLSAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigic2VsZWN0KCkgd2FzIG5vdCBpbnRlcnJ1cHRlZCIpCisgICAgICAgICAgICBhZnRlcl90aW1lID0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gYmVmb3JlX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKQEAgLTM3NSw5ICs0NzYsMTAgQEAKIAogICAgIGRlZiB0ZXN0X3NpZ251bShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKKyAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCi0gICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHVVNSMSkKLSAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdBTFJNKQorICAgICAgICAgICAgX3Rlc3RjYXBpLnJhaXNlX3NpZ25hbChzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgIF90ZXN0Y2FwaS5yYWlzZV9zaWduYWwoc2lnbmFsLlNJR0FMUk0pCiAgICAgICAgICIiIiwgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdBTFJNKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKSwKQEAgLTM5MSwxMyArNDkzLDk3IEBACiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bTIsIGhhbmRsZXIpCiAKICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgKHNpZ251bTEsIHNpZ251bTIpKQotICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtMSkKLSAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTIpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bTEpCisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bTIpCiAgICAgICAgICAgICAjIFVuYmxvY2tpbmcgdGhlIDIgc2lnbmFscyBjYWxscyB0aGUgQyBzaWduYWwgaGFuZGxlciB0d2ljZQogICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKICAgICAgICAgIiIiLCAgc2lnbmFsLlNJR1VTUjEsIHNpZ25hbC5TSUdVU1IyLCBvcmRlcmVkPUZhbHNlKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc29ja2V0cGFpcicpLCAnbmVlZCBzb2NrZXQuc29ja2V0cGFpcicpCitjbGFzcyBXYWtldXBTb2NrZXRTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorICAgIGRlZiB0ZXN0X3NvY2tldChzZWxmKToKKyAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkCisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIGltcG9ydCBzb2NrZXQKKyAgICAgICAgaW1wb3J0IHN0cnVjdAorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR0lOVAorICAgICAgICBzaWduYWxzID0gKHNpZ251bSwpCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgcmVhZCwgd3JpdGUgPSBzb2NrZXQuc29ja2V0cGFpcigpCisgICAgICAgIHJlYWQuc2V0YmxvY2tpbmcoRmFsc2UpCisgICAgICAgIHdyaXRlLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3cml0ZS5maWxlbm8oKSkKKworICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bSkKKworICAgICAgICBkYXRhID0gcmVhZC5yZWN2KDEpCisgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJubyBzaWdudW0gd3JpdHRlbiIpCisgICAgICAgIHJhaXNlZCA9IHN0cnVjdC51bnBhY2soJ0InLCBkYXRhKQorICAgICAgICBpZiByYWlzZWQgIT0gc2lnbmFsczoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXIgIT0gJXIiICUgKHJhaXNlZCwgc2lnbmFscykpCisKKyAgICAgICAgcmVhZC5jbG9zZSgpCisgICAgICAgIHdyaXRlLmNsb3NlKCkKKyAgICAgICAgIiIiCisKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKKyAgICBkZWYgdGVzdF9zZW5kX2Vycm9yKHNlbGYpOgorICAgICAgICAjIFVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQuCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIGFjdGlvbiA9ICdzZW5kJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWN0aW9uID0gJ3dyaXRlJworICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgaW1wb3J0IHNvY2tldAorICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgIGltcG9ydCB0aW1lCisgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgorCisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdJTlQKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICByZWFkLCB3cml0ZSA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgcmVhZC5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgd3JpdGUuc2V0YmxvY2tpbmcoRmFsc2UpCisKKyAgICAgICAgc2lnbmFsLnNldF93YWtldXBfZmQod3JpdGUuZmlsZW5vKCkpCisKKyAgICAgICAgIyBDbG9zZSBzb2NrZXRzOiBzZW5kKCkgd2lsbCBmYWlsCisgICAgICAgIHJlYWQuY2xvc2UoKQorICAgICAgICB3cml0ZS5jbG9zZSgpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnI6CisgICAgICAgICAgICBfdGVzdGNhcGkucmFpc2Vfc2lnbmFsKHNpZ251bSkKKworICAgICAgICBlcnIgPSBlcnIuZ2V0dmFsdWUoKQorICAgICAgICBpZiAoJ0V4Y2VwdGlvbiBpZ25vcmVkIHdoZW4gdHJ5aW5nIHRvIHthY3Rpb259IHRvIHRoZSBzaWduYWwgd2FrZXVwIGZkJworICAgICAgICAgICAgbm90IGluIGVycik6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihlcnIpCisgICAgICAgICIiIi5mb3JtYXQoYWN0aW9uPWFjdGlvbikKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBTaWdpbnRlcnJ1cHRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDE4LDcgKzYwNCw3IEBACiAgICAgICAgICAgICByLCB3ID0gb3MucGlwZSgpCiAKICAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAxIC8gMAogCiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQogICAgICAgICAgICAgaWYgaW50ZXJydXB0IGlzIG5vdCBOb25lOgpAQCAtNDI4LDE4ICs2MTQsMjEgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCiAgICAgICAgICAgICAjIHJ1biB0aGUgdGVzdCB0d2ljZQotICAgICAgICAgICAgZm9yIGxvb3AgaW4gcmFuZ2UoMik6Ci0gICAgICAgICAgICAgICAgIyBzZW5kIGEgU0lHQUxSTSBpbiBhIHNlY29uZCAoZHVyaW5nIHRoZSByZWFkKQotICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBibG9ja2luZyBjYWxsOiByZWFkIGZyb20gYSBwaXBlIHdpdGhvdXQgZGF0YQotICAgICAgICAgICAgICAgICAgICBvcy5yZWFkKHIsIDEpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gIT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgICAgICAgICBzeXMuZXhpdCgzKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBsb29wIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgICAgICAjIHNlbmQgYSBTSUdBTFJNIGluIGEgc2Vjb25kIChkdXJpbmcgdGhlIHJlYWQpCisgICAgICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJsb2NraW5nIGNhbGw6IHJlYWQgZnJvbSBhIHBpcGUgd2l0aG91dCBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZWFkKHIsIDEpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDIpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UocikKKyAgICAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICAiIiIgJSAoaW50ZXJydXB0LCkKICAgICAgICAgd2l0aCBzcGF3bl9weXRob24oJy1jJywgY29kZSkgYXMgcHJvY2VzczoKICAgICAgICAgICAgIHRyeToKQEAgLTUzNyw4ICs3MjYsOCBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdWVEFMUk0sIHNlbGYuc2lnX3Z0YWxybSkKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzZWxmLml0aW1lciwgMC4zLCAwLjIpCiAKLSAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHdoaWxlIHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSA8IDYwLjA6CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgLSBzdGFydF90aW1lIDwgNjAuMDoKICAgICAgICAgICAgICMgdXNlIHVwIHNvbWUgdmlydHVhbCB0aW1lIGJ5IGRvaW5nIHJlYWwgd29yawogICAgICAgICAgICAgXyA9IHBvdygxMjM0NSwgNjc4OTAsIDEwMDAwMDE5KQogICAgICAgICAgICAgaWYgc2lnbmFsLmdldGl0aW1lcihzZWxmLml0aW1lcikgPT0gKDAuMCwgMC4wKToKQEAgLTU2MCw4ICs3NDksOCBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdQUk9GLCBzZWxmLnNpZ19wcm9mKQogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNlbGYuaXRpbWVyLCAwLjIsIDAuMikKIAotICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgLSBzdGFydF90aW1lIDwgNjAuMDoKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUgPCA2MC4wOgogICAgICAgICAgICAgIyBkbyBzb21lIHdvcmsKICAgICAgICAgICAgIF8gPSBwb3coMTIzNDUsIDY3ODkwLCAxMDAwMDAxOSkKICAgICAgICAgICAgIGlmIHNpZ25hbC5nZXRpdGltZXIoc2VsZi5pdGltZXIpID09ICgwLjAsIDAuMCk6CkBAIC02MDQsNiArNzkzLDggQEAKICAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCiAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCiAgICAgICAgICAgICBwZW5kaW5nID0gc2lnbmFsLnNpZ3BlbmRpbmcoKQorICAgICAgICAgICAgZm9yIHNpZyBpbiBwZW5kaW5nOgorICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNpZywgc2lnbmFsLlNpZ25hbHMpLCByZXByKHBlbmRpbmcpCiAgICAgICAgICAgICBpZiBwZW5kaW5nICE9IHtzaWdudW19OgogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgIT0geyVzfScgJSAocGVuZGluZywgc2lnbnVtKSkKICAgICAgICAgICAgIHRyeToKQEAgLTY2MCw2ICs4NTEsNyBAQAogICAgICAgICBjb2RlID0gJycnaWYgMToKICAgICAgICAgaW1wb3J0IHNpZ25hbAogICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgIGZyb20gc2lnbmFsIGltcG9ydCBTaWduYWxzCiAKICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgICAgICAxLzAKQEAgLTcwMiw2ICs4OTQsNyBAQAogICAgICAgICBkZWYgdGVzdChzaWdudW0pOgogICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCiAgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd3YWl0KFtzaWdudW1dKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVjZWl2ZWQsIHNpZ25hbC5TaWduYWxzKSwgcmVjZWl2ZWQKICAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IHNpZ251bToKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3JlY2VpdmVkICVzLCBub3QgJXMnICUgKHJlY2VpdmVkLCBzaWdudW0pKQogICAgICAgICAnJycpCkBAIC03NTcsMzUgKzk1MCw2IEBACiAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdBTFJNCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNpZ25hbC5zaWd0aW1lZHdhaXQsIFtzaWdudW1dLCAtMS4wKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKLSAgICAjIElzc3VlICMxODIzODogc2lnd2FpdGluZm8oKSBjYW4gYmUgaW50ZXJydXB0ZWQgb24gTGludXggKHJhaXNlcwotICAgICMgSW50ZXJydXB0ZWRFcnJvciksIGJ1dCBub3Qgb24gQUlYCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiYWl4IiksCi0gICAgICAgICAgICAgICAgICAgICAnc2lnbmFsLnNpZ3dhaXRpbmZvKCkgY2Fubm90IGJlIGludGVycnVwdGVkIG9uIEFJWCcpCi0gICAgZGVmIHRlc3Rfc2lnd2FpdGluZm9faW50ZXJydXB0ZWQoc2VsZik6Ci0gICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR1VTUjEsICcnJwotICAgICAgICBkZWYgdGVzdChzaWdudW0pOgotICAgICAgICAgICAgaW1wb3J0IGVycm5vCi0KLSAgICAgICAgICAgIGhuZGxfY2FsbGVkID0gVHJ1ZQotICAgICAgICAgICAgZGVmIGFsYXJtX2hhbmRsZXIoc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBhbGFybV9oYW5kbGVyKQotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWduYWwuU0lHVVNSMV0pCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBobmRsX2NhbGxlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiU0lHQUxSTSBoYW5kbGVyIG5vdCBjYWxsZWQiKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhwZWN0ZWQgRUlOVFIgdG8gYmUgcmFpc2VkIGJ5IHNpZ3dhaXRpbmZvIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQotICAgICAgICAnJycpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3dhaXQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdCgpJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLApAQCAtODQyLDggKzEwMDYsMTQgQEAKICAgICAgICAgZGVmIGtpbGwoc2lnbnVtKToKICAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKIAorICAgICAgICBkZWYgY2hlY2tfbWFzayhtYXNrKToKKyAgICAgICAgICAgIGZvciBzaWcgaW4gbWFzazoKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzaWcsIHNpZ25hbC5TaWduYWxzKSwgcmVwcihzaWcpCisKICAgICAgICAgZGVmIHJlYWRfc2lnbWFzaygpOgotICAgICAgICAgICAgcmV0dXJuIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW10pCisgICAgICAgICAgICBzaWdtYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSkKKyAgICAgICAgICAgIGNoZWNrX21hc2soc2lnbWFzaykKKyAgICAgICAgICAgIHJldHVybiBzaWdtYXNrCiAKICAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKIApAQCAtODUyLDYgKzEwMjIsNyBAQAogCiAgICAgICAgICMgVW5ibG9jayBTSUdVU1IxIChhbmQgY29weSB0aGUgb2xkIG1hc2spIHRvIHRlc3Qgb3VyIHNpZ25hbCBoYW5kbGVyCiAgICAgICAgIG9sZF9tYXNrID0gc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBjaGVja19tYXNrKG9sZF9tYXNrKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBraWxsKHNpZ251bSkKICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgpAQCAtODYxLDExICsxMDMyLDEzIEBACiAKICAgICAgICAgIyBCbG9jayBhbmQgdGhlbiByYWlzZSBTSUdVU1IxLiBUaGUgc2lnbmFsIGlzIGJsb2NrZWQ6IHRoZSBzaWduYWwKICAgICAgICAgIyBoYW5kbGVyIGlzIG5vdCBjYWxsZWQsIGFuZCB0aGUgc2lnbmFsIGlzIG5vdyBwZW5kaW5nCi0gICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW3NpZ251bV0pCisgICAgICAgIG1hc2sgPSBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBjaGVja19tYXNrKG1hc2spCiAgICAgICAgIGtpbGwoc2lnbnVtKQogCiAgICAgICAgICMgQ2hlY2sgdGhlIG5ldyBtYXNrCiAgICAgICAgIGJsb2NrZWQgPSByZWFkX3NpZ21hc2soKQorICAgICAgICBjaGVja19tYXNrKGJsb2NrZWQpCiAgICAgICAgIGlmIHNpZ251bSBub3QgaW4gYmxvY2tlZDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgbm90IGluICVzIiAlIChzaWdudW0sIGJsb2NrZWQpKQogICAgICAgICBpZiBvbGRfbWFzayBeIGJsb2NrZWQgIT0ge3NpZ251bX06CkBAIC05MjYsMTUgKzEwOTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhpdGNvZGUsIHN0ZG91dCkpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUG9zaXhUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdha2V1cEZEVGVzdHMsIFdha2V1cFNpZ25hbFRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWdpbnRlcnJ1cHRUZXN0LCBJdGltZXJUZXN0LCBXaW5kb3dzU2lnbmFsVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdTaWduYWxzVGVzdHMpCi0gICAgZmluYWxseToKLSAgICAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKLQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGY3MWNmNzMuLjY2MTUwODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgICAgICAgICAgcmUuZXNjYXBlKG9zLnBhdGguam9pbihwdGhfZGlyLCBwdGhfZm4pKSkKICAgICAgICAgIyBYWFg6IGRpdHRvIHByZXZpb3VzIFhYWCBjb21tZW50LgogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ1RyYWNlYmFjaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnVHlwZUVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdWYWx1ZUVycm9yJykKIAogICAgIGRlZiB0ZXN0X2FkZHNpdGVkaXIoc2VsZik6CiAgICAgICAgICMgU2FtZSB0ZXN0cyBmb3IgdGVzdF9hZGRwYWNrYWdlIHNpbmNlIGFkZHNpdGVkaXIoKSBlc3NlbnRpYWxseSBqdXN0CkBAIC0yMzUsMjAgKzIzNSwxOCBAQAogICAgICAgICAgICAgIyBPUyBYIGZyYW1ld29yayBidWlsZHMKICAgICAgICAgICAgIHNpdGUuUFJFRklYRVMgPSBbJ1B5dGhvbi5mcmFtZXdvcmsnXQogICAgICAgICAgICAgZGlycyA9IHNpdGUuZ2V0c2l0ZXBhY2thZ2VzKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMl0sIHdhbnRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1sxXSwgd2FudGVkKQogICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICAjIE9TIFggbm9uLWZyYW13ZXdvcmsgYnVpbGRzLCBMaW51eCwgRnJlZUJTRCwgZXRjCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQogICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdzaXRlLXB5dGhvbicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMV0sIHdhbnRlZCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgb3RoZXIgcGxhdGZvcm1zCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKQEAgLTM1Nyw4ICszNTUsMTIgQEAKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9jLnJldHVybmNvZGUsIDApCiAgICAgICAgIG9zX19maWxlX18sIG9zX19jYWNoZWRfXyA9IHN0ZG91dC5zcGxpdGxpbmVzKClbOjJdCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKG9zX19maWxlX18pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Ficyhvc19fY2FjaGVkX18pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Ficyhvc19fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBhYnNvbHV0ZSBwYXRoLCBnb3Qge30iCisgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG9zX19maWxlX18uZGVjb2RlKCdhc2NpaScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMob3NfX2NhY2hlZF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBhYnNvbHV0ZSBwYXRoLCBnb3Qge30iCisgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KG9zX19jYWNoZWRfXy5kZWNvZGUoJ2FzY2lpJykpKQogCiAgICAgZGVmIHRlc3Rfbm9fZHVwbGljYXRlX3BhdGhzKHNlbGYpOgogICAgICAgICAjIE5vIGR1cGxpY2F0ZSBwYXRocyBzaG91bGQgZXhpc3QgaW4gc3lzLnBhdGgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkgYi9MaWIvdGVzdC90ZXN0X3NsaWNlLnB5CmluZGV4IDFlZDcxZjkuLjhjNGU2NzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2xpY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbGljZS5weQpAQCAtMSw3ICsxLDYgQEAKICMgdGVzdHMgZm9yIHNsaWNlIG9iamVjdHM7IGluIHBhcnRpY3VsYXIgdGhlIGluZGljZXMgbWV0aG9kLgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcwogCiBpbXBvcnQgaXRlcnRvb2xzCkBAIC0yNDEsOCArMjQwLDUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5pbmRpY2VzKDE1KSwgdC5pbmRpY2VzKDE1KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQocyksIGlkKHQpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU2xpY2VUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA5M2YxNGM0Li4xYWE1NWQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGlvCkBAIC03LDE0ICs4LDIwIEBACiAKIAogY2xhc3MgRHVtbXlTZXJ2ZXIoc210cGQuU01UUFNlcnZlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkcik6Ci0gICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzbXRwZC5TTVRQU2VydmVyLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5tZXNzYWdlcyA9IFtdCisgICAgICAgIGlmIHNlbGYuX2RlY29kZV9kYXRhOgorICAgICAgICAgICAgc2VsZi5yZXR1cm5fc3RhdHVzID0gJ3JldHVybiBzdGF0dXMnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJldHVybl9zdGF0dXMgPSBiJ3JldHVybiBzdGF0dXMnCiAKLSAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKToKKyAgICBkZWYgcHJvY2Vzc19tZXNzYWdlKHNlbGYsIHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3KToKICAgICAgICAgc2VsZi5tZXNzYWdlcy5hcHBlbmQoKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhKSkKLSAgICAgICAgaWYgZGF0YSA9PSAncmV0dXJuIHN0YXR1cyc6CisgICAgICAgIGlmIGRhdGEgPT0gc2VsZi5yZXR1cm5fc3RhdHVzOgogICAgICAgICAgICAgcmV0dXJuICcyNTAgT2tpc2gnCisgICAgICAgIGlmICdtYWlsX29wdGlvbnMnIGluIGt3IGFuZCAnU01UUFVURjgnIGluIGt3WydtYWlsX29wdGlvbnMnXToKKyAgICAgICAgICAgIHJldHVybiAnMjUwIFNNVFBVVEY4IG1lc3NhZ2Ugb2tpc2gnCiAKIAogY2xhc3MgRHVtbXlEaXNwYXRjaGVyQnJva2VuKEV4Y2VwdGlvbik6CkBAIC0zMSw5ICszOCwxMCBAQAogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3VuaW1wbGVtZW50ZWQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgICAgICBkZWYgd3JpdGVfbGluZShsaW5lKToKICAgICAgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKQEAgLTQ1LDE5ICs1MywyNTEgQEAKICAgICAgICAgd3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB3cml0ZV9saW5lLCBiJ3NwYW1cclxuLlxyXG4nKQogCisgICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfZGVmYXVsdF93YXJucyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKKworICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2FuZF9lbmFibGVfU01UUFVURjhfcmFpc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsCisgICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyLAorICAgICAgICAgICAgKHN1cHBvcnQuSE9TVCwgMCksCisgICAgICAgICAgICAoJ2InLCAwKSwKKyAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlLAorICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKICAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CiAKIAorY2xhc3MgRGVidWdnaW5nU2VydmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisKKyAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIGNoYW5uZWwsIGRhdGEsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSk6CisgICAgICAgIGRlZiB3cml0ZV9saW5lKGxpbmUpOgorICAgICAgICAgICAgY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisgICAgICAgIHdyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6CisgICAgICAgICAgICB3cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZSBCT0RZPThCSVRNSU1FIFNNVFBVVEY4JykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgd3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgd3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICB3cml0ZV9saW5lKGRhdGEpCisgICAgICAgIHdyaXRlX2xpbmUoYicuJykKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV93aXRoX2RlY29kZV9kYXRhX3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhlbGxvXG4nKQorICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICAgLS0tLS0tLS0tLSBNRVNTQUdFIEZPTExPV1MgLS0tLS0tLS0tLQorICAgICAgICAgICAgIEZyb206IHRlc3QKKyAgICAgICAgICAgICBYLVBlZXI6IHBlZXItYWRkcmVzcworCisgICAgICAgICAgICAgaGVsbG8KKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhceGMzXHhhOWxsb1x4ZmZcbicpCisgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tCisgICAgICAgICAgICAgYidGcm9tOiB0ZXN0JworICAgICAgICAgICAgIGInWC1QZWVyOiBwZWVyLWFkZHJlc3MnCisgICAgICAgICAgICAgYicnCisgICAgICAgICAgICAgYidoXFx4YzNcXHhhOWxsb1xceGZmJworICAgICAgICAgICAgIC0tLS0tLS0tLS0tLSBFTkQgTUVTU0FHRSAtLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3dpdGhfZW5hYmxlX1NNVFBVVEY4X3RydWUoc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBlbmFibGVfU01UUFVURjg9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaFx4YzNceGE5bGxvXHhmZlxuJykKKyAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgIC0tLS0tLS0tLS0gTUVTU0FHRSBGT0xMT1dTIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICBiJ0Zyb206IHRlc3QnCisgICAgICAgICAgICAgYidYLVBlZXI6IHBlZXItYWRkcmVzcycKKyAgICAgICAgICAgICBiJycKKyAgICAgICAgICAgICBiJ2hcXHhjM1xceGE5bGxvXFx4ZmYnCisgICAgICAgICAgICAgLS0tLS0tLS0tLS0tIEVORCBNRVNTQUdFIC0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICIiIikpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX1NNVFBVVEY4X21lc3NhZ2Vfd2l0aF9lbmFibGVfU01UUFVURjhfdHJ1ZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tIE1FU1NBR0UgRk9MTE9XUyAtLS0tLS0tLS0tCisgICAgICAgICAgICAgbWFpbCBvcHRpb25zOiBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXQorICAgICAgICAgICAgIGInRnJvbTogdGVzdCcKKyAgICAgICAgICAgICBiJ1gtUGVlcjogcGVlci1hZGRyZXNzJworICAgICAgICAgICAgIGInJworICAgICAgICAgICAgIGInaFxceGMzXFx4YTlsbG9cXHhmZicKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisKKworY2xhc3MgVGVzdEZhbWlseURldGVjdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCisgICAgZGVmIHRlc3Rfc29ja2V0X3VzZXNfSVB2NihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NUdjYsIDApLCAoc3VwcG9ydC5IT1NULCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQ2KQorCisgICAgZGVmIHRlc3Rfc29ja2V0X3VzZXNfSVB2NChzZWxmKToKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKHN1cHBvcnQuSE9TVHY2LCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQpCisKKworY2xhc3MgVGVzdFJjcHRPcHRpb25QYXJzaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlcnJvcl9yZXNwb25zZSA9IChiJzU1NSBSQ1BUIFRPIHBhcmFtZXRlcnMgbm90IHJlY29nbml6ZWQgb3Igbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICBiJ2ltcGxlbWVudGVkXHJcbicpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgY2hhbm5lbCwgbGluZSk6CisgICAgICAgIGNoYW5uZWwuc29ja2V0LnF1ZXVlX3JlY3YobGluZSkKKyAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9wYXJhbXNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCisKKyAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworCitjbGFzcyBUZXN0TWFpbE9wdGlvblBhcnNpbmcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGVycm9yX3Jlc3BvbnNlID0gKGInNTU1IE1BSUwgRlJPTSBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCAnCisgICAgICAgICAgICAgICAgICAgICAgYidpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKyAgICAgICAgYXN5bmNvcmUuc29ja2V0ID0gc210cGQuc29ja2V0ID0gc29ja2V0CisgICAgICAgIHNtdHBkLkRFQlVHU1RSRUFNID0gc2VsZi5vbGRfZGVidWdzdHJlYW0KKworICAgIGRlZiB3cml0ZV9saW5lKHNlbGYsIGNoYW5uZWwsIGxpbmUpOgorICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3Rfd2l0aF9kZWNvZGVfZGF0YV90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZm9yIGxpbmUgaW4gWworICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjgnLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjggQk9EWT04QklUTUlNRScsCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBCT0RZPVVOS05PV04nLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgYm9keT04Yml0bWltZScsCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgbGluZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgc2VsZi5lcnJvcl9yZXNwb25zZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3Rfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZm9yIGxpbmUgaW4gWworICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjgnLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjggQk9EWT04QklUTUlNRScsCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgbGluZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgc2VsZi5lcnJvcl9yZXNwb25zZSkKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgY2hhbm5lbCwKKyAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4IEJPRFk9VU5LTk9XTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgRXJyb3I6IEJPRFkgY2FuIG9ubHkgYmUgb25lIG9mIDdCSVQsIDhCSVRNSU1FXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgIGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIGJvZHk9OGJpdG1pbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF93aXRoX2VuYWJsZV9zbXRwdXRmOF90cnVlKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGVuYWJsZV9TTVRQVVRGOD1UcnVlKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICBjaGFubmVsLAorICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgYm9keT04Yml0bWltZSBzbXRwdXRmOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworCiBjbGFzcyBTTVRQRENoYW5uZWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKCdhJywgJ2InKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQpAQCAtNjksNyArMzA5LDkgQEAKICAgICAgICAgc2VsZi5jaGFubmVsLmhhbmRsZV9yZWFkKCkKIAogICAgIGRlZiB0ZXN0X2Jyb2tlbl9jb25uZWN0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEdW1teURpc3BhdGNoZXJCcm9rZW4sIEJyb2tlbkR1bW15U2VydmVyLCAnYScsICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBEdW1teURpc3BhdGNoZXJCcm9rZW4sIEJyb2tlbkR1bW15U2VydmVyLAorICAgICAgICAgICAgKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1UcnVlKQogCiAgICAgZGVmIHRlc3Rfc2VydmVyX2FjY2VwdChzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlX2FjY2VwdCgpCkBAIC0yMTQsNiArNDU2LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nXHJcbicpCiAKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfcmVqZWN0c19TTVRQVVRGOF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoCisgICAgICAgICAgICBiJ01BSUwgZnJvbTogPG5haXZlQGV4YW1wbGUuY29tPiBCT0RZPThCSVRNSU1FIFNNVFBVVEY4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDoxXSwgYic1JykKKwogICAgIGRlZiB0ZXN0X2RhdGFfbG9uZ2VyX3RoYW5fZGVmYXVsdF9kYXRhX3NpemVfbGltaXQoc2VsZik6CiAgICAgICAgICMgSGFjayB0aGUgZGVmYXVsdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdlbmVyYXRlIHNvIG11Y2ggZGF0YS4KICAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKQEAgLTM4Nyw3ICs2MzUsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKLSAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAnZWdnc0BleGFtcGxlJywKKyAgICAgICAgICAgICAgWydzcGFtQGV4YW1wbGUnXSwKKyAgICAgICAgICAgICAgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9EQVRBX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKQEAgLTQxNyw3ICs2NjgsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxuLicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCi0gICAgICAgICAgICBbKCdwZWVyJywgJ2VnZ3NAZXhhbXBsZScsIFsnc3BhbUBleGFtcGxlJywnaGFtQGV4YW1wbGUnXSwgJ2RhdGEnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAnZWdnc0BleGFtcGxlJywKKyAgICAgICAgICAgICAgWydzcGFtQGV4YW1wbGUnLCdoYW1AZXhhbXBsZSddLAorICAgICAgICAgICAgICAnZGF0YScpXSkKIAogICAgIGRlZiB0ZXN0X21hbnVhbF9zdGF0dXMoc2VsZik6CiAgICAgICAgICMgY2hlY2tzIHRoYXQgdGhlIENoYW5uZWwgaXMgYWJsZSB0byByZXR1cm4gYSBjdXN0b20gc3RhdHVzIG1lc3NhZ2UKQEAgLTQzOSw3ICs2OTMsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGFcclxuLicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2ZXIubWVzc2FnZXMsCi0gICAgICAgICAgICBbKCdwZWVyJywgJ2Zvb0BleGFtcGxlJywgWydlZ2dzQGV4YW1wbGUnXSwgJ2RhdGEnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAgJ2Zvb0BleGFtcGxlJywKKyAgICAgICAgICAgICAgIFsnZWdnc0BleGFtcGxlJ10sCisgICAgICAgICAgICAgICAnZGF0YScpXSkKIAogICAgIGRlZiB0ZXN0X0hFTE9fUlNFVChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKQEAgLTUwMiw2ICs3NTksMjQgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKKyAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCitjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogY2xhc3MgU01UUERDaGFubmVsV2l0aERhdGFTaXplTGltaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTA5LDEwICs3ODQsMTIgQEAKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKICAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQogICAgICAgICAjIFNldCBEQVRBIHNpemUgbGltaXQgdG8gMzIgYnl0ZXMgZm9yIGVhc3kgdGVzdGluZwotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwgMzIpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLCAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKQEAgLTUzNiw3ICs4MTMsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKLSAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisgICAgICAgICAgICBbKCgncGVlci1hZGRyZXNzJywgJ3BlZXItcG9ydCcpLAorICAgICAgICAgICAgICAnZWdnc0BleGFtcGxlJywKKyAgICAgICAgICAgICAgWydzcGFtQGV4YW1wbGUnXSwKKyAgICAgICAgICAgICAgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZ190b29fbXVjaF9kYXRhKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQpAQCAtNTUzLDUgKzgzMywxODEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzU1MiBFcnJvcjogVG9vIG11Y2ggbWFpbCBkYXRhXHJcbicpCiAKIAorY2xhc3MgU01UUERDaGFubmVsV2l0aERlY29kZURhdGFGYWxzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCisgICAgICAgICMgU2V0IGRlY29kZV9kYXRhIHRvIEZhbHNlCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAorICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSk6CisgICAgICAgIHNlbGYuY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfYXNjaWlfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3BsYWluIGFzY2lpIHRleHQnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwgYidwbGFpbiBhc2NpaSB0ZXh0JykKKworICAgIGRlZiB0ZXN0X3V0ZjhfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInYW5kIHNvbWUgcGxhaW4gYXNjaWknKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLAorICAgICAgICAgICAgYid1dGY4IGVucmljaGVkIHRleHQ6IFx4YzVceGJjXHhjNVx4YmFceGM0XHg4N1xuJworICAgICAgICAgICAgICAgIGInYW5kIHNvbWUgcGxhaW4gYXNjaWknKQorCisKK2NsYXNzIFNNVFBEQ2hhbm5lbFdpdGhEZWNvZGVEYXRhVHJ1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CisgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KKyAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKKyAgICAgICAgIyBTZXQgZGVjb2RlX2RhdGEgdG8gVHJ1ZQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1UcnVlKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQorICAgICAgICBhc3luY29yZS5zb2NrZXQgPSBzbXRwZC5zb2NrZXQgPSBzb2NrZXQKKyAgICAgICAgc210cGQuREVCVUdTVFJFQU0gPSBzZWxmLm9sZF9kZWJ1Z3N0cmVhbQorCisgICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSk6CisgICAgICAgIHNlbGYuY2hhbm5lbC5zb2NrZXQucXVldWVfcmVjdihsaW5lKQorICAgICAgICBzZWxmLmNoYW5uZWwuaGFuZGxlX3JlYWQoKQorCisgICAgZGVmIHRlc3RfYXNjaWlfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3BsYWluIGFzY2lpIHRleHQnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYicuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwgJ3BsYWluIGFzY2lpIHRleHQnKQorCisgICAgZGVmIHRlc3RfdXRmOF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODcnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidhbmQgc29tZSBwbGFpbiBhc2NpaScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJy4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5jaGFubmVsLnJlY2VpdmVkX2RhdGEsCisgICAgICAgICAgICAndXRmOCBlbnJpY2hlZCB0ZXh0OiDFvMW6xIdcbmFuZCBzb21lIHBsYWluIGFzY2lpJykKKworCitjbGFzcyBTTVRQRENoYW5uZWxUZXN0V2l0aEVuYWJsZVNNVFBVVEY4VHJ1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAorICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCisgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9NQUlMX2NvbW1hbmRfYWNjZXB0c19TTVRQVVRGOF93aGVuX2Fubm91bmNlZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKAorICAgICAgICAgICAgJ01BSUwgZnJvbTogPG5hacyIdmVAZXhhbXBsZS5jb20+IEJPRFk9OEJJVE1JTUUgU01UUFVURjgnLmVuY29kZSgKKyAgICAgICAgICAgICAgICAndXRmLTgnKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19zbXRwdXRmOF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBmb3IgbWFpbF9wYXJhbWV0ZXJzIGluIFtiJycsIGInQk9EWT04QklUTUlNRSBTTVRQVVRGOCddOgorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiA8YUBleGFtcGxlPiAnICsgbWFpbF9wYXJhbWV0ZXJzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIncmNwdCB0bzo8YkBleGFtcGxlLmNvbT4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzM1NCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidjXHJcbi4nKQorICAgICAgICAgICAgaWYgbWFpbF9wYXJhbWV0ZXJzID09IGInJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBTTVRQVVRGOCBtZXNzYWdlIG9raXNoXHJcbicpCisKKyAgICBkZWYgdGVzdF91dGY4X2RhdGEoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgKKyAgICAgICAgICAgICdNQUlMIEZyb206IG5hacyIdmVAZXhhbXBsw6kgQk9EWT04QklUTUlNRSBTTVRQVVRGOCcuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZSgnUkNQVCBUbzpzcMOkbUBleGFtcGzDqScuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzM1NCcpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3V0ZjggZW5yaWNoZWQgdGV4dDogXHhjNVx4YmNceGM1XHhiYVx4YzRceDg3JykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmNoYW5uZWwucmVjZWl2ZWRfZGF0YSwKKyAgICAgICAgICAgIGIndXRmOCBlbnJpY2hlZCB0ZXh0OiBceGM1XHhiY1x4YzVceGJhXHhjNFx4ODcnKQorCisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX2xpbWl0X2V4dGVuZGVkX3dpdGhfU0laRV9hbmRfU01UUFVURjgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2VobG8gZXhhbXBsZScpCisgICAgICAgIGZpbGxfbGVuID0gKDUxMiArIDI2ICsgMTApIC0gbGVuKCdtYWlsIGZyb206PEBleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogKGZpbGxfbGVuICsgMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PCcgKworICAgICAgICAgICAgICAgICAgICAgICAgYidhJyAqIGZpbGxfbGVuICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9lbWFpbHNfd2l0aF9leHRlbmRlZF9jb21tYW5kX2xlbmd0aChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZWhsbyBleGFtcGxlJykKKyAgICAgICAgZmlsbF9sZW4gPSAoNTEyICsgMjYgKyAxMCkgLSBsZW4oJ21haWwgZnJvbTo8QGV4YW1wbGU+JykKKyAgICAgICAgZm9yIGNoYXIgaW4gW2InYScsIGInYicsIGInYyddOgorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsgY2hhciAqIGZpbGxfbGVuICsgYidhQGV4YW1wbGU+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInNTAwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArIGNoYXIgKiBmaWxsX2xlbiArIGInQGV4YW1wbGU+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3JjcHQgdG86PGhhbnNAZXhhbXBsZS5jb20+JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ2RhdGEnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYiczNTQnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQppbmRleCA5NWE5ZGJlLi44ZTM2MjQxNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQpAQCAtMSw1ICsxLDcgQEAKIGltcG9ydCBhc3luY29yZQogaW1wb3J0IGVtYWlsLm1pbWUudGV4dAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKK2Zyb20gZW1haWwuYmFzZTY0bWltZSBpbXBvcnQgYm9keV9lbmNvZGUgYXMgZW5jb2RlX2Jhc2U2NAogaW1wb3J0IGVtYWlsLnV0aWxzCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc210cGQKQEAgLTEwLDYgKzEyLDcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgZXJybm8KK2ltcG9ydCB0ZXh0d3JhcAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbW9ja19zb2NrZXQKQEAgLTMwLDcgKzMzLDcgQEAKIAogCiBkZWYgc2VydmVyKGV2dCwgYnVmLCBzZXJ2KToKLSAgICBzZXJ2Lmxpc3Rlbig1KQorICAgIHNlcnYubGlzdGVuKCkKICAgICBldnQuc2V0KCkKICAgICB0cnk6CiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2LmFjY2VwdCgpCkBAIC0xMjMsNiArMTI2LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zb2NrLmdldHRpbWVvdXQoKSwgMzApCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCisgICAgZGVmIHRlc3RfZGVidWdsZXZlbChzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIZWxsbyB3b3JsZCIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoKQorICAgICAgICBzbXRwLnNldF9kZWJ1Z2xldmVsKDEpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBzbXRwLmNvbm5lY3QoSE9TVCwgc2VsZi5wb3J0KQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgZXhwZWN0ZWQgPSByZS5jb21waWxlKHIiXmNvbm5lY3Q6IiwgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyci5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2RlYnVnbGV2ZWxfMihzZWxmKToKKyAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIZWxsbyB3b3JsZCIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoKQorICAgICAgICBzbXRwLnNldF9kZWJ1Z2xldmVsKDIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBzbXRwLmNvbm5lY3QoSE9TVCwgc2VsZi5wb3J0KQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgZXhwZWN0ZWQgPSByZS5jb21waWxlKHIiXlxkezJ9OlxkezJ9OlxkezJ9XC5cZHs2fSBjb25uZWN0OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZGVyci5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKwogCiAjIFRlc3Qgc2VydmVyIHRocmVhZCB1c2luZyB0aGUgc3BlY2lmaWVkIFNNVFAgc2VydmVyIGNsYXNzCiBkZWYgZGVidWdnaW5nX3NlcnZlcihzZXJ2LCBzZXJ2X2V2dCwgY2xpZW50X2V2dCk6CkBAIC0xODQsNyArMjA4LDggQEAKICAgICAgICAgc2VsZi5vbGRfREVCVUdTVFJFQU0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKICAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCi0gICAgICAgIHNlbGYuc2VydiA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoSE9TVCwgMCksICgnbm93aGVyZScsIC0xKSkKKyAgICAgICAgc2VsZi5zZXJ2ID0gc210cGQuRGVidWdnaW5nU2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9VHJ1ZSkKICAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCiAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCkBAIC02MDQsNyArNjI5LDggQEAKICAgICAnY3JhbS1tZDUnOiAoJ1RYSVVRVUJaQjIxTEQySExDTVVVWTI5VElERzRPV1EwTUonCiAgICAgICAgICAgICAgICAgICdLV1pHUTRPRE5NTkRBNE5UR1hNRFJMWldNWVpKRE1PREcxJyksCiAgICAgfQotc2ltX2F1dGhfbG9naW5fcGFzc3dvcmQgPSAnQzI5VFpYQkhDM04zQjNKSycKK3NpbV9hdXRoX2xvZ2luX3VzZXIgPSAnVFhJVVFVQlpCMjFMRDJITENNVVVZMjlUJworc2ltX2F1dGhfcGxhaW4gPSAnQUUxWUxLRkFDMjlUWlhET1pYSkxMTU5WQlFCWkIyMUxDR0ZaQzNEVkNNUT0nCiAKIHNpbV9saXN0cyA9IHsnbGlzdC0xJzpbJ01yLkFAc29tZXdoZXJlLmNvbScsJ01ycy5DQHNvbWV3aGVyZWVzbGUuY29tJ10sCiAgICAgICAgICAgICAgJ2xpc3QtMic6WydNcy5CQHhuLS1mby1ma2EuY29tJyxdLApAQCAtNjU4LDE4ICs2ODQsMTYgQEAKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUwIE5vIGFjY2VzcyBmb3IgeW91IScpCiAKICAgICBkZWYgc210cF9BVVRIKHNlbGYsIGFyZyk6Ci0gICAgICAgIGlmIGFyZy5zdHJpcCgpLmxvd2VyKCk9PSdjcmFtLW1kNSc6CisgICAgICAgIG1lY2ggPSBhcmcuc3RyaXAoKS5sb3dlcigpCisgICAgICAgIGlmIG1lY2g9PSdjcmFtLW1kNSc6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzMzNCB7fScuZm9ybWF0KHNpbV9jcmFtX21kNV9jaGFsbGVuZ2UpKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIG1lY2gsIGF1dGggPSBhcmcuc3BsaXQoKQotICAgICAgICBtZWNoID0gbWVjaC5sb3dlcigpCi0gICAgICAgIGlmIG1lY2ggbm90IGluIHNpbV9hdXRoX2NyZWRlbnRpYWxzOgorICAgICAgICBlbGlmIG1lY2ggbm90IGluIHNpbV9hdXRoX2NyZWRlbnRpYWxzOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDQgYXV0aCB0eXBlIHVuaW1wbGVtZW50ZWQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG1lY2ggPT0gJ3BsYWluJyBhbmQgYXV0aD09c2ltX2F1dGhfY3JlZGVudGlhbHNbJ3BsYWluJ106Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzIzNSBwbGFpbiBhdXRoIG9rJykKLSAgICAgICAgZWxpZiBtZWNoPT0nbG9naW4nIGFuZCBhdXRoPT1zaW1fYXV0aF9jcmVkZW50aWFsc1snbG9naW4nXToKLSAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0IFBhc3N3b3JkOicpCisgICAgICAgIGVsaWYgbWVjaD09J3BsYWluJzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0ICcpCisgICAgICAgIGVsaWYgbWVjaD09J2xvZ2luJzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMzM0ICcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBObyBhY2Nlc3MgZm9yIHlvdSEnKQogCkBAIC03MTksNyArNzQzLDggQEAKIAogICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CiAgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKAotICAgICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMsIHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkciwKKyAgICAgICAgICAgIGRlY29kZV9kYXRhPXNlbGYuX2RlY29kZV9kYXRhKQogCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIHBhc3MKQEAgLTc0Miw3ICs3NjcsNyBAQAogICAgICAgICBzZWxmLnNlcnZfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgc2VsZi5jbGllbnRfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCi0gICAgICAgIHNlbGYuc2VydiA9IFNpbVNNVFBTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSkpCisgICAgICAgIHNlbGYuc2VydiA9IFNpbVNNVFBTZXJ2ZXIoKEhPU1QsIDApLCAoJ25vd2hlcmUnLCAtMSksIGRlY29kZV9kYXRhPVRydWUpCiAgICAgICAgICMgS2VlcCBhIG5vdGUgb2Ygd2hhdCBwb3J0IHdhcyBhc3NpZ25lZAogICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KICAgICAgICAgc2Vydl9hcmdzID0gKHNlbGYuc2Vydiwgc2VsZi5zZXJ2X2V2dCwgc2VsZi5jbGllbnRfZXZ0KQpAQCAtNzkwLDExICs4MTUsMTEgQEAKICAgICBkZWYgdGVzdFZSRlkoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKIAotICAgICAgICBmb3IgZW1haWwsIG5hbWUgaW4gc2ltX3VzZXJzLml0ZW1zKCk6CisgICAgICAgIGZvciBhZGRyX3NwZWMsIG5hbWUgaW4gc2ltX3VzZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICBleHBlY3RlZF9rbm93biA9ICgyNTAsIGJ5dGVzKCclcyAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgc210cGxpYi5xdW90ZWFkZHIoZW1haWwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHNtdHBsaWIucXVvdGVhZGRyKGFkZHJfc3BlYykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNjaWkiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC52cmZ5KGVtYWlsKSwgZXhwZWN0ZWRfa25vd24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAudnJmeShhZGRyX3NwZWMpLCBleHBlY3RlZF9rbm93bikKIAogICAgICAgICB1ID0gJ25vYm9keUBub3doZXJlLmNvbScKICAgICAgICAgZXhwZWN0ZWRfdW5rbm93biA9ICg1NTAsICgnTm8gc3VjaCB1c2VyOiAlcycgJSB1KS5lbmNvZGUoJ2FzY2lpJykpCkBAIC04MTYsMjggKzg0MSwyOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZXhwbih1KSwgZXhwZWN0ZWRfdW5rbm93bikKICAgICAgICAgc210cC5xdWl0KCkKIAotICAgIGRlZiB0ZXN0QVVUSF9QTEFJTihzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCJBVVRIIFBMQUlOIikKLSAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQotCi0gICAgICAgIGV4cGVjdGVkX2F1dGhfb2sgPSAoMjM1LCBiJ3BsYWluIGF1dGggb2snKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubG9naW4oc2ltX2F1dGhbMF0sIHNpbV9hdXRoWzFdKSwgZXhwZWN0ZWRfYXV0aF9vaykKLSAgICAgICAgc210cC5jbG9zZSgpCi0KLSAgICAjIFNpbVNNVFBDaGFubmVsIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBMT0dJTiBvciBDUkFNLU1ENSBhdXRoIGJlY2F1c2UgdGhleQotICAgICMgcmVxdWlyZSBhIHN5bmNocm9ub3VzIHJlYWQgdG8gb2J0YWluIHRoZSBjcmVkZW50aWFscy4uLnNvIGluc3RlYWQgc210cGQKKyAgICAjIFNpbVNNVFBDaGFubmVsIGRvZXNuJ3QgZnVsbHkgc3VwcG9ydCBBVVRIIGJlY2F1c2UgaXQgcmVxdWlyZXMgYQorICAgICMgc3luY2hyb25vdXMgcmVhZCB0byBvYnRhaW4gdGhlIGNyZWRlbnRpYWxzLi4uc28gaW5zdGVhZCBzbXRwZAogICAgICMgc2VlcyB0aGUgY3JlZGVudGlhbCBzZW50IGJ5IHNtdHBsaWIncyBsb2dpbiBtZXRob2QgYXMgYW4gdW5rbm93biBjb21tYW5kLAogICAgICMgd2hpY2ggcmVzdWx0cyBpbiBzbXRwbGliIHJhaXNpbmcgYW4gYXV0aCBlcnJvci4gIEZvcnR1bmF0ZWx5IHRoZSBlcnJvcgogICAgICMgbWVzc2FnZSBjb250YWlucyB0aGUgZW5jb2RlZCBjcmVkZW50aWFsLCBzbyB3ZSBjYW4gcGFydGlhbGx5IGNoZWNrIHRoYXQgaXQKICAgICAjIHdhcyBnZW5lcmF0ZWQgY29ycmVjdGx5IChwYXJ0aWFsbHksIGJlY2F1c2UgdGhlICd3b3JkJyBpcyB1cHBlcmNhc2VkIGluCiAgICAgIyB0aGUgZXJyb3IgbWVzc2FnZSkuCiAKKyAgICBkZWYgdGVzdEFVVEhfUExBSU4oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgiQVVUSCBQTEFJTiIpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKKyAgICAgICAgdHJ5OiBzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSwgaW5pdGlhbF9yZXNwb25zZV9vaz1GYWxzZSkKKyAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9wbGFpbiwgc3RyKGVycikpCisgICAgICAgIHNtdHAuY2xvc2UoKQorCiAgICAgZGVmIHRlc3RBVVRIX0xPR0lOKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoIkFVVEggTE9HSU4iKQogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCiAgICAgICAgIHRyeTogc210cC5sb2dpbihzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0pCiAgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfbG9naW5fcGFzc3dvcmQsIHN0cihlcnIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9sb2dpbl91c2VyLCBzdHIoZXJyKSkKICAgICAgICAgc210cC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdEFVVEhfQ1JBTV9NRDUoc2VsZik6CkBAIC04NTUsNyArODgwLDIzIEBACiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0xNSkKICAgICAgICAgdHJ5OiBzbXRwLmxvZ2luKHNpbV9hdXRoWzBdLCBzaW1fYXV0aFsxXSkKICAgICAgICAgZXhjZXB0IHNtdHBsaWIuU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzaW1fYXV0aF9sb2dpbl9wYXNzd29yZCwgc3RyKGVycikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX2xvZ2luX3VzZXIsIHN0cihlcnIpKQorICAgICAgICBzbXRwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2F1dGhfZnVuY3Rpb24oc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQorICAgICAgICBzZWxmLnNlcnYuYWRkX2ZlYXR1cmUoIkFVVEggQ1JBTS1NRDUiKQorICAgICAgICBzbXRwLnVzZXIsIHNtdHAucGFzc3dvcmQgPSBzaW1fYXV0aFswXSwgc2ltX2F1dGhbMV0KKyAgICAgICAgc3VwcG9ydGVkID0geydDUkFNLU1ENSc6IHNtdHAuYXV0aF9jcmFtX21kNSwKKyAgICAgICAgICAgICAgICAgICAgICdQTEFJTic6IHNtdHAuYXV0aF9wbGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICdMT0dJTic6IHNtdHAuYXV0aF9sb2dpbiwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgbWVjaGFuaXNtLCBtZXRob2QgaW4gc3VwcG9ydGVkLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6IHNtdHAuYXV0aChtZWNoYW5pc20sIG1ldGhvZCwgaW5pdGlhbF9yZXNwb25zZV9vaz1GYWxzZSkKKyAgICAgICAgICAgIGV4Y2VwdCBzbXRwbGliLlNNVFBBdXRoZW50aWNhdGlvbkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNpbV9hdXRoX2NyZWRlbnRpYWxzW21lY2hhbmlzbS5sb3dlcigpXS51cHBlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGVycikpCiAgICAgICAgIHNtdHAuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfcXVpdF9yZXNldHNfZ3JlZXRpbmcoc2VsZik6CkBAIC05MzgsMTMgKzk3OSwyNDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc210cC5zb2NrKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5fU01UUGNoYW5uZWwucmNwdF9jb3VudCwgMCkKIAorICAgIGRlZiB0ZXN0X3NtdHB1dGY4X05vdFN1cHBvcnRlZEVycm9yX2lmX25vX3NlcnZlcl9zdXBwb3J0KHNlbGYpOgorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc210cC5laGxvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtdHAuZG9lc19lc210cCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzbXRwLmhhc19leHRuKCdzbXRwdXRmOCcpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIHNtdHBsaWIuU01UUE5vdFN1cHBvcnRlZEVycm9yLAorICAgICAgICAgICAgc210cC5zZW5kbWFpbCwKKyAgICAgICAgICAgICdKb2huJywgJ1NhbGx5JywgJycsIG1haWxfb3B0aW9ucz1bJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBzbXRwbGliLlNNVFBOb3RTdXBwb3J0ZWRFcnJvciwKKyAgICAgICAgICAgIHNtdHAubWFpbCwgJ0pvaG4nLCBvcHRpb25zPVsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddKQorCisgICAgZGVmIHRlc3Rfc2VuZF91bmljb2RlX3dpdGhvdXRfU01UUFVURjgoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNtdHAuc2VuZG1haWwsICdBbGljZScsICdCw7ZiJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgc210cC5tYWlsLCAnw4RsaWNlJykKKworCitjbGFzcyBTaW1TTVRQVVRGOFNlcnZlcihTaW1TTVRQU2VydmVyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgICMgVGhlIGJhc2UgU01UUCBzZXJ2ZXIgdHVybnMgdGhlc2Ugb24gYXV0b21hdGljYWxseSwgYnV0IG91ciB0ZXN0CisgICAgICAgICMgc2VydmVyIGlzIHNldCB1cCB0byBtdW5nZSB0aGUgRUhMTyByZXNwb25zZSwgc28gd2UgbmVlZCB0byBwcm92aWRlCisgICAgICAgICMgdGhlbSBhcyB3ZWxsLiAgQW5kIHllcywgdGhlIGNhbGwgaXMgdG8gU01UUFNlcnZlciBub3QgU2ltU01UUFNlcnZlci4KKyAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMgPSBbJ1NNVFBVVEY4JywgJzhCSVRNSU1FJ10KKyAgICAgICAgc210cGQuU01UUFNlcnZlci5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKKworICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CisgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gc2VsZi5jaGFubmVsX2NsYXNzKAorICAgICAgICAgICAgc2VsZi5fZXh0cmFfZmVhdHVyZXMsIHNlbGYsIGNvbm4sIGFkZHIsCisgICAgICAgICAgICBkZWNvZGVfZGF0YT1zZWxmLl9kZWNvZGVfZGF0YSwKKyAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1zZWxmLmVuYWJsZV9TTVRQVVRGOCwKKyAgICAgICAgKQorCisgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgbWFpbF9vcHRpb25zPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNwdF9vcHRpb25zPU5vbmUpOgorICAgICAgICBzZWxmLmxhc3RfcGVlciA9IHBlZXIKKyAgICAgICAgc2VsZi5sYXN0X21haWxmcm9tID0gbWFpbGZyb20KKyAgICAgICAgc2VsZi5sYXN0X3JjcHR0b3MgPSByY3B0dG9zCisgICAgICAgIHNlbGYubGFzdF9tZXNzYWdlID0gZGF0YQorICAgICAgICBzZWxmLmxhc3RfbWFpbF9vcHRpb25zID0gbWFpbF9vcHRpb25zCisgICAgICAgIHNlbGYubGFzdF9yY3B0X29wdGlvbnMgPSByY3B0X29wdGlvbnMKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU01UUFVURjhTaW1UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBtYXhEaWZmID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlYWxfZ2V0ZnFkbiA9IHNvY2tldC5nZXRmcWRuCisgICAgICAgIHNvY2tldC5nZXRmcWRuID0gbW9ja19zb2NrZXQuZ2V0ZnFkbgorICAgICAgICBzZWxmLnNlcnZfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc2VsZi5jbGllbnRfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgIyBQaWNrIGEgcmFuZG9tIHVudXNlZCBwb3J0IGJ5IHBhc3NpbmcgMCBmb3IgdGhlIHBvcnQgbnVtYmVyCisgICAgICAgIHNlbGYuc2VydiA9IFNpbVNNVFBVVEY4U2VydmVyKChIT1NULCAwKSwgKCdub3doZXJlJywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PVRydWUpCisgICAgICAgICMgS2VlcCBhIG5vdGUgb2Ygd2hhdCBwb3J0IHdhcyBhc3NpZ25lZAorICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnYuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KKyAgICAgICAgc2Vydl9hcmdzID0gKHNlbGYuc2Vydiwgc2VsZi5zZXJ2X2V2dCwgc2VsZi5jbGllbnRfZXZ0KQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWRlYnVnZ2luZ19zZXJ2ZXIsIGFyZ3M9c2Vydl9hcmdzKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisKKyAgICAgICAgIyB3YWl0IHVudGlsIHNlcnZlciB0aHJlYWQgaGFzIGFzc2lnbmVkIGEgcG9ydCBudW1iZXIKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC53YWl0KCkKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC5jbGVhcigpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNvY2tldC5nZXRmcWRuID0gc2VsZi5yZWFsX2dldGZxZG4KKyAgICAgICAgIyBpbmRpY2F0ZSB0aGF0IHRoZSBjbGllbnQgaXMgZmluaXNoZWQKKyAgICAgICAgc2VsZi5jbGllbnRfZXZ0LnNldCgpCisgICAgICAgICMgd2FpdCBmb3IgdGhlIHNlcnZlciB0aHJlYWQgdG8gdGVybWluYXRlCisgICAgICAgIHNlbGYuc2Vydl9ldnQud2FpdCgpCisgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorCisgICAgZGVmIHRlc3RfdGVzdF9zZXJ2ZXJfc3VwcG9ydHNfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNtdHAuZWhsbygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbXRwLmRvZXNfZXNtdHApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbXRwLmhhc19leHRuKCdzbXRwdXRmOCcpKQorCisgICAgZGVmIHRlc3Rfc2VuZF91bmljb2RlX3dpdGhfU01UUFVURjhfdmlhX3NlbmRtYWlsKHNlbGYpOgorICAgICAgICBtID0gJ8KhYSB0ZXN0IG1lc3NhZ2UgY29udGFpbmluZyB1bmljb2RlIScuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoCisgICAgICAgICAgICBIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzbXRwLmNsb3NlKQorICAgICAgICBzbXRwLnNlbmRtYWlsKCdKxZFobicsICdTw6FsbHknLCBtLAorICAgICAgICAgICAgICAgICAgICAgIG1haWxfb3B0aW9ucz1bJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9tYWlsZnJvbSwgJ0rFkWhuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9yY3B0dG9zLCBbJ1PDoWxseSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21lc3NhZ2UsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JPRFk9OEJJVE1JTUUnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1NNVFBVVEY4Jywgc2VsZi5zZXJ2Lmxhc3RfbWFpbF9vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHRfb3B0aW9ucywgW10pCisKKyAgICBkZWYgdGVzdF9zZW5kX3VuaWNvZGVfd2l0aF9TTVRQVVRGOF92aWFfbG93X2xldmVsX0FQSShzZWxmKToKKyAgICAgICAgbSA9ICfCoWEgdGVzdCBtZXNzYWdlIGNvbnRhaW5pbmcgdW5pY29kZSEnLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc210cC5laGxvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNtdHAubWFpbCgnSsWRJywgb3B0aW9ucz1bJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXSksCisgICAgICAgICAgICAoMjUwLCBiJ09LJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5yY3B0KCdKw6Fub3MnKSwgKDI1MCwgYidPSycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZGF0YShtKSwgKDI1MCwgYidPSycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21haWxmcm9tLCAnSsWRJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9yY3B0dG9zLCBbJ0rDoW5vcyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X21lc3NhZ2UsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JPRFk9OEJJVE1JTUUnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1NNVFBVVEY4Jywgc2VsZi5zZXJ2Lmxhc3RfbWFpbF9vcHRpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHRfb3B0aW9ucywgW10pCisKKyAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdXNlc19zbXRwdXRmOF9pZl9hZGRyc19ub25fYXNjaWkoc2VsZik6CisgICAgICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgICAgIG1zZ1snRnJvbSddID0gIlDDoW9sbyA8ZsWRb0BiYXIuY29tPiIKKyAgICAgICAgbXNnWydUbyddID0gJ0RpbnNkYWxlJworICAgICAgICBtc2dbJ1N1YmplY3QnXSA9ICdOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5JworICAgICAgICAjIFhYWCBJIGRvbid0IGtub3cgd2h5IEkgbmVlZCB0d28gXG4ncyBoZXJlLCBidXQgdGhpcyBpcyBhbiBleGlzdGluZworICAgICAgICAjIGJ1ZyAoaWYgaXQgaXMgb25lKSBhbmQgbm90IGEgcHJvYmxlbSB3aXRoIHRoZSBuZXcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgbXNnLnNldF9jb250ZW50KCJvaCBsw6AgbMOgLCBrbm93IHdoYXQgSSBtZWFuLCBrbm93IHdoYXQgSSBtZWFuP1xuXG4iKQorICAgICAgICAjIFhYWCBzbXRwZCBjb252ZXJ0cyByZWNlaXZlZCAvci9uIHRvIC9uLCBzbyB3ZSBjYW4ndCBlYXNpbHkgdGVzdCB0aGF0CisgICAgICAgICMgd2UgYXJlIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIC9yL24gOiguCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206IFDDoW9sbyA8ZsWRb0BiYXIuY29tPgorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5CisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKworICAgICAgICAgICAgb2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8KKyAgICAgICAgICAgICIiIikKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUCgKKyAgICAgICAgICAgIEhPU1QsIHNlbGYucG9ydCwgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNtdHAuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5zZW5kX21lc3NhZ2UobXNnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfbWFpbGZyb20sICdmxZFvQGJhci5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydi5sYXN0X3JjcHR0b3MsIFsnRGluc2RhbGUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnYubGFzdF9tZXNzYWdlLmRlY29kZSgpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQk9EWT04QklUTUlNRScsIHNlbGYuc2Vydi5sYXN0X21haWxfb3B0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignU01UUFVURjgnLCBzZWxmLnNlcnYubGFzdF9tYWlsX29wdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2Lmxhc3RfcmNwdF9vcHRpb25zLCBbXSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9lcnJvcl9vbl9ub25fYXNjaWlfYWRkcnNfaWZfbm9fc210cHV0Zjgoc2VsZik6CisgICAgICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgICAgIG1zZ1snRnJvbSddID0gIlDDoW9sbyA8ZsWRb0BiYXIuY29tPiIKKyAgICAgICAgbXNnWydUbyddID0gJ0RpbnNkYWxlJworICAgICAgICBtc2dbJ1N1YmplY3QnXSA9ICdOdWRnZSBudWRnZSwgd2luaywgd2luayBcdTFGNjA5JworICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKAorICAgICAgICAgICAgSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc210cC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQTm90U3VwcG9ydGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNtdHAuc2VuZF9tZXNzYWdlKG1zZykpCisKKworRVhQRUNURURfUkVTUE9OU0UgPSBlbmNvZGVfYmFzZTY0KGInXDBwc3VcMGRvZXNub3RleGlzdCcsIGVvbD0nJykKKworY2xhc3MgU2ltU01UUEFVVEhJbml0aWFsUmVzcG9uc2VDaGFubmVsKFNpbVNNVFBDaGFubmVsKToKKyAgICBkZWYgc210cF9BVVRIKHNlbGYsIGFyZyk6CisgICAgICAgICMgUkZDIDQ5NTQncyBBVVRIIGNvbW1hbmQgYWxsb3dzIGZvciBhbiBvcHRpb25hbCBpbml0aWFsLXJlc3BvbnNlLgorICAgICAgICAjIE5vdCBhbGwgQVVUSCBtZXRob2RzIHN1cHBvcnQgdGhpczsgc29tZSByZXF1aXJlIGEgY2hhbGxlbmdlLiAgQVVUSAorICAgICAgICAjIFBMQUlOIGRvZXMgdGhvc2UsIHNvIHRlc3QgdGhhdCBoZXJlLiAgU2VlIGlzc3VlICMxNTAxNC4KKyAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgpCisgICAgICAgIGlmIGFyZ3NbMF0ubG93ZXIoKSA9PSAncGxhaW4nOgorICAgICAgICAgICAgaWYgbGVuKGFyZ3MpID09IDI6CisgICAgICAgICAgICAgICAgIyBBVVRIIFBMQUlOIDxpbml0aWFsLXJlc3BvbnNlPiB3aXRoIHRoZSByZXNwb25zZSBiYXNlIDY0CisgICAgICAgICAgICAgICAgIyBlbmNvZGVkLiAgSGFyZCBjb2RlIHRoZSBleHBlY3RlZCByZXNwb25zZSBmb3IgdGhlIHRlc3QuCisgICAgICAgICAgICAgICAgaWYgYXJnc1sxXSA9PSBFWFBFQ1RFRF9SRVNQT05TRToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyMzUgT2snKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5wdXNoKCc1NzEgQmFkIGF1dGhlbnRpY2F0aW9uJykKKworY2xhc3MgU2ltU01UUEFVVEhJbml0aWFsUmVzcG9uc2VTZXJ2ZXIoU2ltU01UUFNlcnZlcik6CisgICAgY2hhbm5lbF9jbGFzcyA9IFNpbVNNVFBBVVRISW5pdGlhbFJlc3BvbnNlQ2hhbm5lbAorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTTVRQQVVUSEluaXRpYWxSZXNwb25zZVNpbVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucmVhbF9nZXRmcWRuID0gc29ja2V0LmdldGZxZG4KKyAgICAgICAgc29ja2V0LmdldGZxZG4gPSBtb2NrX3NvY2tldC5nZXRmcWRuCisgICAgICAgIHNlbGYuc2Vydl9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBzZWxmLmNsaWVudF9ldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICAjIFBpY2sgYSByYW5kb20gdW51c2VkIHBvcnQgYnkgcGFzc2luZyAwIGZvciB0aGUgcG9ydCBudW1iZXIKKyAgICAgICAgc2VsZi5zZXJ2ID0gU2ltU01UUEFVVEhJbml0aWFsUmVzcG9uc2VTZXJ2ZXIoCisgICAgICAgICAgICAoSE9TVCwgMCksICgnbm93aGVyZScsIC0xKSwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgIyBLZWVwIGEgbm90ZSBvZiB3aGF0IHBvcnQgd2FzIGFzc2lnbmVkCisgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2Vydi5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQorICAgICAgICBzZXJ2X2FyZ3MgPSAoc2VsZi5zZXJ2LCBzZWxmLnNlcnZfZXZ0LCBzZWxmLmNsaWVudF9ldnQpCisgICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9ZGVidWdnaW5nX3NlcnZlciwgYXJncz1zZXJ2X2FyZ3MpCisgICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKKworICAgICAgICAjIHdhaXQgdW50aWwgc2VydmVyIHRocmVhZCBoYXMgYXNzaWduZWQgYSBwb3J0IG51bWJlcgorICAgICAgICBzZWxmLnNlcnZfZXZ0LndhaXQoKQorICAgICAgICBzZWxmLnNlcnZfZXZ0LmNsZWFyKCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc29ja2V0LmdldGZxZG4gPSBzZWxmLnJlYWxfZ2V0ZnFkbgorICAgICAgICAjIGluZGljYXRlIHRoYXQgdGhlIGNsaWVudCBpcyBmaW5pc2hlZAorICAgICAgICBzZWxmLmNsaWVudF9ldnQuc2V0KCkKKyAgICAgICAgIyB3YWl0IGZvciB0aGUgc2VydmVyIHRocmVhZCB0byB0ZXJtaW5hdGUKKyAgICAgICAgc2VsZi5zZXJ2X2V2dC53YWl0KCkKKyAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCisKKyAgICBkZWYgdGVzdEFVVEhfUExBSU5faW5pdGlhbF9yZXNwb25zZV9sb2dpbihzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LmFkZF9mZWF0dXJlKCdBVVRIIFBMQUlOJykKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfaG9zdG5hbWU9J2xvY2FsaG9zdCcsIHRpbWVvdXQ9MTUpCisgICAgICAgIHNtdHAubG9naW4oJ3BzdScsICdkb2Vzbm90ZXhpc3QnKQorICAgICAgICBzbXRwLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0QVVUSF9QTEFJTl9pbml0aWFsX3Jlc3BvbnNlX2F1dGgoc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5hZGRfZmVhdHVyZSgnQVVUSCBQTEFJTicpCisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTE1KQorICAgICAgICBzbXRwLnVzZXIgPSAncHN1JworICAgICAgICBzbXRwLnBhc3N3b3JkID0gJ2RvZXNub3RleGlzdCcKKyAgICAgICAgY29kZSwgcmVzcG9uc2UgPSBzbXRwLmF1dGgoJ3BsYWluJywgc210cC5hdXRoX3BsYWluKQorICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAyMzUpCisKIAogQHN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoR2VuZXJhbFRlc3RzLCBEZWJ1Z2dpbmdTZXJ2ZXJUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbkNvbm5lY3RpbmdUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhZEhFTE9TZXJ2ZXJUZXN0cywgU01UUFNpbVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9vTG9uZ0xpbmVUZXN0cykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgQmFkSEVMT1NlcnZlclRlc3RzLAorICAgICAgICBEZWJ1Z2dpbmdTZXJ2ZXJUZXN0cywKKyAgICAgICAgR2VuZXJhbFRlc3RzLAorICAgICAgICBOb25Db25uZWN0aW5nVGVzdHMsCisgICAgICAgIFNNVFBBVVRISW5pdGlhbFJlc3BvbnNlU2ltVGVzdHMsCisgICAgICAgIFNNVFBTaW1UZXN0cywKKyAgICAgICAgVG9vTG9uZ0xpbmVUZXN0cywKKyAgICAgICAgKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQppbmRleCAxNTY1NGYyLi5jYzliYWI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CkBAIC03OSw4ICs3OSw1IEBACiAgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNtdHBUZXN0LCBTbXRwU1NMVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbmRoZHIucHkgYi9MaWIvdGVzdC90ZXN0X3NuZGhkci5weQppbmRleCA1ZTBhYmUwLi40MjY0MTdjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NuZGhkci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NuZGhkci5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBzbmRoZHIKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCiAKQEAgLTE4LDYgKzE5LDE5IEBACiAgICAgICAgICAgICB3aGF0ID0gc25kaGRyLndoYXQoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdoYXQsIE5vbmUsIGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKHdoYXQsIGV4cGVjdGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aGF0LmZpbGV0eXBlLCBleHBlY3RlZFswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2hhdC5mcmFtZXJhdGUsIGV4cGVjdGVkWzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aGF0Lm5jaGFubmVscywgZXhwZWN0ZWRbMl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQubmZyYW1lcywgZXhwZWN0ZWRbM10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdoYXQuc2FtcHdpZHRoLCBleHBlY3RlZFs0XSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZWFibGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gZmluZGZpbGUoJ3NuZGhkci5haWZjJywgc3ViZGlyPSJzbmRoZHJkYXRhIikKKyAgICAgICAgd2hhdCA9IHNuZGhkci53aGF0KGZpbGVuYW1lKQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGR1bXAgPSBwaWNrbGUuZHVtcHMod2hhdCwgcHJvdG8pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpY2tsZS5sb2FkcyhkdW1wKSwgd2hhdCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQppbmRleCBjYzhkYTE3Li5hMDg5ZWYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQpAQCAtMjAsNiArMjAsOCBAQAogaW1wb3J0IG1hdGgKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzdHJpbmcKIHRyeToKICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC03Niw3ICs3OCw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnYgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgIHNlbGYucG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc2VydikKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigxKQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKQEAgLTQ0NSw3ICs0NDcsNyBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwKCkKLSAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigxKQorICAgICAgICBzZWxmLnNlcnYubGlzdGVuKCkKIAogCiBjbGFzcyBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbihUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlLCBTb2NrZXRUZXN0QmFzZSwKQEAgLTcxNiwxMSArNzE4LDExIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKCdcdTI2MjAnLCBzb2NrbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJ3N0cicgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgImEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnc3RyJyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHMuc2VuZHRvKDVqLCBzb2NrbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJ2NvbXBsZXgnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKQorICAgICAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJ2NvbXBsZXgnIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oYidmb28nLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgTm9uZVR5cGUnLHN0cihjbS5leGNlcHRpb24pKQpAQCAtNzI4LDExICs3MzAsMTEgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oJ1x1MjYyMCcsIDAsIHNvY2tuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICInc3RyJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSBieXRlcy1saWtlIG9iamVjdCBpcyByZXF1aXJlZCwgbm90ICdzdHInIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgcy5zZW5kdG8oNWosIDAsIHNvY2tuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAotICAgICAgICAgICAgICAgICAgICAgICAgICInY29tcGxleCcgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYnVmZmVyIGludGVyZmFjZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgImEgYnl0ZXMtbGlrZSBvYmplY3QgaXMgcmVxdWlyZWQsIG5vdCAnY29tcGxleCciKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzLnNlbmR0byhiJ2ZvbycsIDAsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBOb25lVHlwZScsIHN0cihjbS5leGNlcHRpb24pKQpAQCAtMTA3Miw2ICsxMDc0LDcgQEAKICAgICAgICAgYXNzZXJ0SW52YWxpZChmLCBiJ1x4MDAnICogMykKICAgICAgICAgYXNzZXJ0SW52YWxpZChmLCBiJ1x4MDAnICogNSkKICAgICAgICAgYXNzZXJ0SW52YWxpZChmLCBiJ1x4MDAnICogMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3MC44NS4xNzAuODUnLCBmKGJ5dGVhcnJheShiJ1x4YWFceDU1XHhhYVx4NTUnKSkpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4wLjEuMCcsIGcoYidceDAxXHgwMFx4MDFceDAwJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3MC44NS4xNzAuODUnLCBnKGInXHhhYVx4NTVceGFhXHg1NScpKQpAQCAtMTA3OSw2ICsxMDgyLDcgQEAKICAgICAgICAgYXNzZXJ0SW52YWxpZChnLCBiJ1x4MDAnICogMykKICAgICAgICAgYXNzZXJ0SW52YWxpZChnLCBiJ1x4MDAnICogNSkKICAgICAgICAgYXNzZXJ0SW52YWxpZChnLCBiJ1x4MDAnICogMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3MC44NS4xNzAuODUnLCBnKGJ5dGVhcnJheShiJ1x4YWFceDU1XHhhYVx4NTUnKSkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ2luZXRfbnRvcCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG5lZWRzIHNvY2tldC5pbmV0X250b3AoKScpCkBAIC0xMTA4LDYgKzExMTIsNyBAQAogICAgICAgICAgICAgJ2FlZjpiMDE6NTA2OjEwMDE6ZmZmZjo5OTk3OjU1OjE3MCcsCiAgICAgICAgICAgICBmKGInXHgwYVx4ZWZceDBiXHgwMVx4MDVceDA2XHgxMFx4MDFceGZmXHhmZlx4OTlceDk3XHgwMFx4NTVceDAxXHg3MCcpCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOjoxJywgZihieXRlYXJyYXkoYidceDAwJyAqIDE1ICsgYidceDAxJykpKQogCiAgICAgICAgIGFzc2VydEludmFsaWQoYidceDEyJyAqIDE1KQogICAgICAgICBhc3NlcnRJbnZhbGlkKGInXHgxMicgKiAxNykKQEAgLTEzODMsMTAgKzEzODgsMTMgQEAKIAogICAgIGRlZiB0ZXN0X2xpc3Rlbl9iYWNrbG9nKHNlbGYpOgogICAgICAgICBmb3IgYmFja2xvZyBpbiAwLCAtMToKLSAgICAgICAgICAgIHNydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzcnY6CisgICAgICAgICAgICAgICAgc3J2LmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgICAgIHNydi5saXN0ZW4oYmFja2xvZykKKworICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgc3J2OgogICAgICAgICAgICAgc3J2LmJpbmQoKEhPU1QsIDApKQotICAgICAgICAgICAgc3J2Lmxpc3RlbihiYWNrbG9nKQotICAgICAgICAgICAgc3J2LmNsb3NlKCkKKyAgICAgICAgICAgIHNydi5saXN0ZW4oKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfbGlzdGVuX2JhY2tsb2dfb3ZlcmZsb3coc2VsZik6CkBAIC0xNDkyLDYgKzE1MDAsNyBAQAogICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfRklMVEVSLCBjYW5fZmlsdGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYW5fZmlsdGVyLAogICAgICAgICAgICAgICAgICAgICBzLmdldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIDgpKQorICAgICAgICAgICAgcy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfRklMVEVSLCBieXRlYXJyYXkoY2FuX2ZpbHRlcikpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQ0FOLCAnU29ja2V0Q2FuIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKQEAgLTM1OTQsNyArMzYwMyw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwKCkKICAgICAgICAgb3JpZ19hbHJtX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNpZ251bSwgZnJhbWU6IE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2lnbnVtLCBmcmFtZTogMSAvIDApCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb3JpZ19hbHJtX2hhbmRsZXIpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNldEFsYXJtLCAwKQogCkBAIC0zNjMxLDEzICszNjQwLDExIEBACiAgICAgICAgIHNlbGYuc2Vydi5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKIAogICAgIGRlZiBjaGVja0ludGVycnVwdGVkUmVjdihzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpIHJhaXNlcyBPU0Vycm9yIHdpdGggYW4KKyAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSByYWlzZXMKICAgICAgICAgIyBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgogICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcikgYXMgY206CiAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGNtLmV4Y2VwdGlvbiwgc29ja2V0LnRpbWVvdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FSU5UUikKIAogICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2VGltZW91dChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdiwgMTAyNCkKQEAgLTM2OTMsMTIgKzM3MDAsMTAgQEAKICAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSwgcnVuIGluIGEgbG9vcCwgcmFpc2VzCiAgICAgICAgICMgT1NFcnJvciB3aXRoIGFuIGVycm5vIG9mIEVJTlRSIHdoZW4gaW50ZXJydXB0ZWQgYnkgYQogICAgICAgICAjIHNpZ25hbC4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcikgYXMgY206CiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHNlbGYuc2V0QWxhcm0oc2VsZi5hbGFybV90aW1lKQogICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoY20uZXhjZXB0aW9uLCBzb2NrZXQudGltZW91dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJTlRSKQogCiAgICAgIyBJc3N1ZSAjMTI5NTg6IFRoZSBmb2xsb3dpbmcgdGVzdHMgaGF2ZSBwcm9ibGVtcyBvbiBPUyBYIHByaW9yIHRvIDEwLjcKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA3KQpAQCAtMzc0MCw4ICszNzQ1LDYgQEAKICAgICAgICAgc2VsZi5jbGkuY29ubmVjdCgoSE9TVCwgc2VsZi5wb3J0KSkKICAgICAgICAgdGltZS5zbGVlcCgxLjApCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc29ja2V0cGFpcicpLAotICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QgbmVlZHMgc29ja2V0LnNvY2tldHBhaXIoKScpCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgQmFzaWNTb2NrZXRQYWlyVGVzdChTb2NrZXRQYWlyVGVzdCk6CiAKQEAgLTM4MjIsNyArMzgyNSw3IEBACiAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX05PTkJMT0NLKQogICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCi0gICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oMSkKKyAgICAgICAgc2VsZi5zZXJ2Lmxpc3RlbigpCiAgICAgICAgICMgYWN0dWFsIHRlc3RpbmcKICAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQogICAgICAgICB0cnk6CkBAIC00MDY4LDExNyArNDA3MSw2IEBACiAgICAgICAgIHBhc3MKIAogCi1jbGFzcyBGaWxlT2JqZWN0SW50ZXJydXB0ZWRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdCB0aGF0IHRoZSBmaWxlIG9iamVjdCBjb3JyZWN0bHkgaGFuZGxlcyBFSU5UUiBpbnRlcm5hbGx5LiIiIgotCi0gICAgY2xhc3MgTW9ja1NvY2tldChvYmplY3QpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmVjdl9mdW5jcz0oKSk6Ci0gICAgICAgICAgICAjIEEgZ2VuZXJhdG9yIHRoYXQgcmV0dXJucyBjYWxsYWJsZXMgdGhhdCB3ZSdsbCBjYWxsIGZvciBlYWNoCi0gICAgICAgICAgICAjIGNhbGwgdG8gcmVjdigpLgotICAgICAgICAgICAgc2VsZi5fcmVjdl9zdGVwID0gaXRlcihyZWN2X2Z1bmNzKQotCi0gICAgICAgIGRlZiByZWN2X2ludG8oc2VsZiwgYnVmZmVyKToKLSAgICAgICAgICAgIGRhdGEgPSBuZXh0KHNlbGYuX3JlY3Zfc3RlcCkoKQotICAgICAgICAgICAgYXNzZXJ0IGxlbihidWZmZXIpID49IGxlbihkYXRhKQotICAgICAgICAgICAgYnVmZmVyWzpsZW4oZGF0YSldID0gZGF0YQotICAgICAgICAgICAgcmV0dXJuIGxlbihkYXRhKQotCi0gICAgICAgIGRlZiBfZGVjcmVmX3NvY2tldGlvcyhzZWxmKToKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBkZWYgX3RleHRpb3dyYXBfZm9yX3Rlc3Qoc2VsZiwgYnVmZmVyaW5nPS0xKToKLSAgICAgICAgICAgIHJhdyA9IHNvY2tldC5Tb2NrZXRJTyhzZWxmLCAiciIpCi0gICAgICAgICAgICBpZiBidWZmZXJpbmcgPCAwOgotICAgICAgICAgICAgICAgIGJ1ZmZlcmluZyA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKLSAgICAgICAgICAgIGlmIGJ1ZmZlcmluZyA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybiByYXcKLSAgICAgICAgICAgIGJ1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdywgYnVmZmVyaW5nKQotICAgICAgICAgICAgdGV4dCA9IGlvLlRleHRJT1dyYXBwZXIoYnVmZmVyLCBOb25lLCBOb25lKQotICAgICAgICAgICAgdGV4dC5tb2RlID0gInJiIgotICAgICAgICAgICAgcmV0dXJuIHRleHQKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX3JhaXNlX2VpbnRyKCk6Ci0gICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUlOVFIsICJpbnRlcnJ1cHRlZCIpCi0KLSAgICBkZWYgX3RleHRpb3dyYXBfbW9ja19zb2NrZXQoc2VsZiwgbW9jaywgYnVmZmVyaW5nPS0xKToKLSAgICAgICAgcmF3ID0gc29ja2V0LlNvY2tldElPKG1vY2ssICJyIikKLSAgICAgICAgaWYgYnVmZmVyaW5nIDwgMDoKLSAgICAgICAgICAgIGJ1ZmZlcmluZyA9IGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKLSAgICAgICAgaWYgYnVmZmVyaW5nID09IDA6Ci0gICAgICAgICAgICByZXR1cm4gcmF3Ci0gICAgICAgIGJ1ZmZlciA9IGlvLkJ1ZmZlcmVkUmVhZGVyKHJhdywgYnVmZmVyaW5nKQotICAgICAgICB0ZXh0ID0gaW8uVGV4dElPV3JhcHBlcihidWZmZXIsIE5vbmUsIE5vbmUpCi0gICAgICAgIHRleHQubW9kZSA9ICJyYiIKLSAgICAgICAgcmV0dXJuIHRleHQKLQotICAgIGRlZiBfdGVzdF9yZWFkbGluZShzZWxmLCBzaXplPS0xLCBidWZmZXJpbmc9LTEpOgotICAgICAgICBtb2NrX3NvY2sgPSBzZWxmLk1vY2tTb2NrZXQocmVjdl9mdW5jcz1bCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJUaGlzIGlzIHRoZSBmaXJzdCBsaW5lXG5BbmQgdGhlIHNlYyIsCi0gICAgICAgICAgICAgICAgc2VsZi5fcmFpc2VfZWludHIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJvbmQgbGluZSBpcyBoZXJlXG4iLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsICAjIFhYWChncHMpOiBpbyBsaWJyYXJ5IGRvZXMgYW4gZXh0cmEgRU9GIHJlYWQKLSAgICAgICAgICAgIF0pCi0gICAgICAgIGZvID0gbW9ja19zb2NrLl90ZXh0aW93cmFwX2Zvcl90ZXN0KGJ1ZmZlcmluZz1idWZmZXJpbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm8ucmVhZGxpbmUoc2l6ZSksICJUaGlzIGlzIHRoZSBmaXJzdCBsaW5lXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvLnJlYWRsaW5lKHNpemUpLCAiQW5kIHRoZSBzZWNvbmQgbGluZSBpcyBoZXJlXG4iKQotCi0gICAgZGVmIF90ZXN0X3JlYWQoc2VsZiwgc2l6ZT0tMSwgYnVmZmVyaW5nPS0xKToKLSAgICAgICAgbW9ja19zb2NrID0gc2VsZi5Nb2NrU29ja2V0KHJlY3ZfZnVuY3M9WwotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiVGhpcyBpcyB0aGUgZmlyc3QgbGluZVxuQW5kIHRoZSBzZWMiLAotICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlX2VpbnRyLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIib25kIGxpbmUgaXMgaGVyZVxuIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiIiLCAgIyBYWFgoZ3BzKTogaW8gbGlicmFyeSBkb2VzIGFuIGV4dHJhIEVPRiByZWFkCi0gICAgICAgICAgICBdKQotICAgICAgICBleHBlY3RpbmcgPSAoYiJUaGlzIGlzIHRoZSBmaXJzdCBsaW5lXG4iCi0gICAgICAgICAgICAgICAgICAgICBiIkFuZCB0aGUgc2Vjb25kIGxpbmUgaXMgaGVyZVxuIikKLSAgICAgICAgZm8gPSBtb2NrX3NvY2suX3RleHRpb3dyYXBfZm9yX3Rlc3QoYnVmZmVyaW5nPWJ1ZmZlcmluZykKLSAgICAgICAgaWYgYnVmZmVyaW5nID09IDA6Ci0gICAgICAgICAgICBkYXRhID0gYicnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhID0gJycKLSAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgd2hpbGUgbGVuKGRhdGEpICE9IGxlbihleHBlY3RpbmcpOgotICAgICAgICAgICAgcGFydCA9IGZvLnJlYWQoc2l6ZSkKLSAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBkYXRhICs9IHBhcnQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RpbmcpCi0KLSAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X3JlYWRsaW5lKCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZShzaXplPTEwMCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkKHNpemU9MTAwKQotCi0gICAgZGVmIHRlc3Rfd2l0aF8xa19idWZmZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmUoYnVmZmVyaW5nPTEwMjQpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmUoc2l6ZT0xMDAsIGJ1ZmZlcmluZz0xMDI0KQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoYnVmZmVyaW5nPTEwMjQpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChzaXplPTEwMCwgYnVmZmVyaW5nPTEwMjQpCi0KLSAgICBkZWYgX3Rlc3RfcmVhZGxpbmVfbm9fYnVmZmVyKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBtb2NrX3NvY2sgPSBzZWxmLk1vY2tTb2NrZXQocmVjdl9mdW5jcz1bCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiJhIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIlxuIiwKLSAgICAgICAgICAgICAgICBsYW1iZGEgOiBiIkIiLAotICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlX2VpbnRyLAotICAgICAgICAgICAgICAgIGxhbWJkYSA6IGIiYiIsCi0gICAgICAgICAgICAgICAgbGFtYmRhIDogYiIiLAotICAgICAgICAgICAgXSkKLSAgICAgICAgZm8gPSBtb2NrX3NvY2suX3RleHRpb3dyYXBfZm9yX3Rlc3QoYnVmZmVyaW5nPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm8ucmVhZGxpbmUoc2l6ZSksIGIiYVxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmby5yZWFkbGluZShzaXplKSwgYiJCYiIpCi0KLSAgICBkZWYgdGVzdF9ub19idWZmZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZGxpbmVfbm9fYnVmZmVyKCkKLSAgICAgICAgc2VsZi5fdGVzdF9yZWFkbGluZV9ub19idWZmZXIoc2l6ZT00KQotICAgICAgICBzZWxmLl90ZXN0X3JlYWQoYnVmZmVyaW5nPTApCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVhZChzaXplPTEwMCwgYnVmZmVyaW5nPTApCi0KLQogY2xhc3MgVW5idWZmZXJlZEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlKEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlKToKIAogICAgICIiIlJlcGVhdCB0aGUgdGVzdHMgZnJvbSBGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZSB3aXRoIGJ1ZnNpemU9PTAuCkBAIC00NTk3LDcgKzQ0ODksNyBAQAogICAgICAgICBhZGRyZXNzID0gYiJceDAwcHl0aG9uLXRlc3QtaGVsbG9ceDAwXHhmZiIKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHMxOgogICAgICAgICAgICAgczEuYmluZChhZGRyZXNzKQotICAgICAgICAgICAgczEubGlzdGVuKDEpCisgICAgICAgICAgICBzMS5saXN0ZW4oKQogICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHMyOgogICAgICAgICAgICAgICAgIHMyLmNvbm5lY3QoczEuZ2V0c29ja25hbWUoKSkKICAgICAgICAgICAgICAgICB3aXRoIHMxLmFjY2VwdCgpWzBdIGFzIHMzOgpAQCAtNDYyNCw2ICs0NTE2LDEyIEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0Qnl0ZWFycmF5TmFtZShzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGFuIGFic3RyYWN0IG5hbWUgY2FuIGJlIHBhc3NlZCBhcyBhIGJ5dGVhcnJheS4KKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHM6CisgICAgICAgICAgICBzLmJpbmQoYnl0ZWFycmF5KGIiXHgwMHB5dGhvblx4MDB0ZXN0XHgwMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHNvY2tuYW1lKCksIGIiXHgwMHB5dGhvblx4MDB0ZXN0XHgwMCIpCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnQUZfVU5JWCcpLCAndGVzdCBuZWVkcyBzb2NrZXQuQUZfVU5JWCcpCiBjbGFzcyBUZXN0VW5peERvbWFpbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTQ4MjksNyArNDcyNyw3IEBACiAgICAgICAgIHNydmFkZHIgPSAoc29ja2V0LlRJUENfQUREUl9OQU1FU0VRLCBUSVBDX1NUWVBFLAogICAgICAgICAgICAgICAgIFRJUENfTE9XRVIsIFRJUENfVVBQRVIpCiAgICAgICAgIHNlbGYuc3J2LmJpbmQoc3J2YWRkcikKLSAgICAgICAgc2VsZi5zcnYubGlzdGVuKDUpCisgICAgICAgIHNlbGYuc3J2Lmxpc3RlbigpCiAgICAgICAgIHNlbGYuc2VydmVyRXhwbGljaXRSZWFkeSgpCiAgICAgICAgIHNlbGYuY29ubiwgc2VsZi5jb25uYWRkciA9IHNlbGYuc3J2LmFjY2VwdCgpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmNvbm4uY2xvc2UpCkBAIC01MTE4LDYgKzUwMTYsMjc1IEBACiAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRmaWxlVXNpbmdTZW5kVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgorICAgICIiIgorICAgIFRlc3QgdGhlIHNlbmQoKSBpbXBsZW1lbnRhdGlvbiBvZiBzb2NrZXQuc2VuZGZpbGUoKS4KKyAgICAiIiIKKworICAgIEZJTEVTSVpFID0gKDEwICogMTAyNCAqIDEwMjQpICAjIDEwTUIKKyAgICBCVUZTSVpFID0gODE5MgorICAgIEZJTEVEQVRBID0gYiIiCisgICAgVElNRU9VVCA9IDIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGRlZiBjaHVua3ModG90YWwsIHN0ZXApOgorICAgICAgICAgICAgYXNzZXJ0IHRvdGFsID49IHN0ZXAKKyAgICAgICAgICAgIHdoaWxlIHRvdGFsID4gc3RlcDoKKyAgICAgICAgICAgICAgICB5aWVsZCBzdGVwCisgICAgICAgICAgICAgICAgdG90YWwgLT0gc3RlcAorICAgICAgICAgICAgaWYgdG90YWw6CisgICAgICAgICAgICAgICAgeWllbGQgdG90YWwKKworICAgICAgICBjaHVuayA9IGIiIi5qb2luKFtyYW5kb20uY2hvaWNlKHN0cmluZy5hc2NpaV9sZXR0ZXJzKS5lbmNvZGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjbHMuQlVGU0laRSldKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICBmb3IgY3NpemUgaW4gY2h1bmtzKGNscy5GSUxFU0laRSwgY2xzLkJVRlNJWkUpOgorICAgICAgICAgICAgICAgIGYud3JpdGUoY2h1bmspCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGNscy5GSUxFREFUQSA9IGYucmVhZCgpCisgICAgICAgICAgICBhc3NlcnQgbGVuKGNscy5GSUxFREFUQSkgPT0gY2xzLkZJTEVTSVpFCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiBhY2NlcHRfY29ubihzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LnNldHRpbWVvdXQoc2VsZi5USU1FT1VUKQorICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2LmFjY2VwdCgpCisgICAgICAgIGNvbm4uc2V0dGltZW91dChzZWxmLlRJTUVPVVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjb25uLmNsb3NlKQorICAgICAgICByZXR1cm4gY29ubgorCisgICAgZGVmIHJlY3ZfZGF0YShzZWxmLCBjb25uKToKKyAgICAgICAgcmVjZWl2ZWQgPSBbXQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3Yoc2VsZi5CVUZTSVpFKQorICAgICAgICAgICAgaWYgbm90IGNodW5rOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQoY2h1bmspCisgICAgICAgIHJldHVybiBiJycuam9pbihyZWNlaXZlZCkKKworICAgIGRlZiBtZXRoX2Zyb21fc29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIG1peGluIGNsYXNzIGJlaW5nIHJ1biByZXR1cm4gZWl0aGVyIHNlbmQoKQorICAgICAgICAjIG9yIHNlbmRmaWxlKCkgbWV0aG9kIGltcGxlbWVudGF0aW9uLgorICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kIikKKworICAgICMgcmVndWxhciBmaWxlCisKKyAgICBkZWYgX3Rlc3RSZWd1bGFyRmlsZShzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIHNlbGYuRklMRVNJWkUpCisKKyAgICBkZWYgdGVzdFJlZ3VsYXJGaWxlKHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgc2VsZi5GSUxFU0laRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBKQorCisgICAgIyBub24gcmVndWxhciBmaWxlCisKKyAgICBkZWYgX3Rlc3ROb25SZWd1bGFyRmlsZShzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBpby5CeXRlc0lPKHNlbGYuRklMRURBVEEpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIHNlbnQgPSBzb2NrLnNlbmRmaWxlKGZpbGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIHNlbGYuRklMRVNJWkUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGUudGVsbCgpLCBzZWxmLkZJTEVTSVpFKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0Ll9HaXZldXBPblNlbmRmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29jay5fc2VuZGZpbGVfdXNlX3NlbmRmaWxlLCBmaWxlKQorCisgICAgZGVmIHRlc3ROb25SZWd1bGFyRmlsZShzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBkYXRhID0gc2VsZi5yZWN2X2RhdGEoY29ubikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIHNlbGYuRklMRVNJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQSkKKworICAgICMgZW1wdHkgZmlsZQorCisgICAgZGVmIF90ZXN0RW1wdHlGaWxlU2VuZChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVuYW1lLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIDApCisKKyAgICBkZWYgdGVzdEVtcHR5RmlsZVNlbmQoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiIiKQorCisgICAgIyBvZmZzZXQKKworICAgIGRlZiBfdGVzdE9mZnNldChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSwgb2Zmc2V0PTUwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIHNlbGYuRklMRVNJWkUgLSA1MDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgc2VsZi5GSUxFU0laRSkKKworICAgIGRlZiB0ZXN0T2Zmc2V0KHNlbGYpOgorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgc2VsZi5GSUxFU0laRSAtIDUwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQVs1MDAwOl0pCisKKyAgICAjIGNvdW50CisKKyAgICBkZWYgX3Rlc3RDb3VudChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PTIpIGFzIHNvY2ssIGZpbGUgYXMgZmlsZToKKyAgICAgICAgICAgIGNvdW50ID0gNTAwMDAwNworICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2soc29jaykKKyAgICAgICAgICAgIHNlbnQgPSBtZXRoKGZpbGUsIGNvdW50PWNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50LCBjb3VudCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZS50ZWxsKCksIGNvdW50KQorCisgICAgZGVmIHRlc3RDb3VudChzZWxmKToKKyAgICAgICAgY291bnQgPSA1MDAwMDA3CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBjb3VudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBWzpjb3VudF0pCisKKyAgICAjIGNvdW50IHNtYWxsCisKKyAgICBkZWYgX3Rlc3RDb3VudFNtYWxsKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MikgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgY291bnQgPSAxCisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSwgY291bnQ9Y291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIGNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgY291bnQpCisKKyAgICBkZWYgdGVzdENvdW50U21hbGwoc2VsZik6CisgICAgICAgIGNvdW50ID0gMQorICAgICAgICBjb25uID0gc2VsZi5hY2NlcHRfY29ubigpCisgICAgICAgIGRhdGEgPSBzZWxmLnJlY3ZfZGF0YShjb25uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5GSUxFREFUQVs6Y291bnRdKQorCisgICAgIyBjb3VudCArIG9mZnNldAorCisgICAgZGVmIF90ZXN0Q291bnRXaXRoT2Zmc2V0KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5zZXJ2LmdldHNvY2tuYW1lKCkKKyAgICAgICAgZmlsZSA9IG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpCisgICAgICAgIHdpdGggc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHJlc3MsIHRpbWVvdXQ9MikgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgY291bnQgPSAxMDAwMDcKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZW50ID0gbWV0aChmaWxlLCBvZmZzZXQ9MjAwNywgY291bnQ9Y291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbnQsIGNvdW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlLnRlbGwoKSwgY291bnQgKyAyMDA3KQorCisgICAgZGVmIHRlc3RDb3VudFdpdGhPZmZzZXQoc2VsZik6CisgICAgICAgIGNvdW50ID0gMTAwMDA3CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBjb3VudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLkZJTEVEQVRBWzIwMDc6Y291bnQrMjAwN10pCisKKyAgICAjIG5vbiBibG9ja2luZyBzb2NrZXRzIGFyZSBub3Qgc3VwcG9zZWQgdG8gd29yaworCisgICAgZGVmIF90ZXN0Tm9uQmxvY2tpbmcoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcykgYXMgc29jaywgZmlsZSBhcyBmaWxlOgorICAgICAgICAgICAgc29jay5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHNvY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRoLCBmaWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc29jay5zZW5kZmlsZSwgZmlsZSkKKworICAgIGRlZiB0ZXN0Tm9uQmxvY2tpbmcoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgaWYgY29ubi5yZWN2KDgxOTIpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCd3YXMgbm90IHN1cHBvc2VkIHRvIHJlY2VpdmUgYW55IGRhdGEnKQorCisgICAgIyB0aW1lb3V0IChub24tdHJpZ2dlcmVkKQorCisgICAgZGVmIF90ZXN0V2l0aFRpbWVvdXQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBmaWxlID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD0yKSBhcyBzb2NrLCBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VudCA9IG1ldGgoZmlsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgc2VsZi5GSUxFU0laRSkKKworICAgIGRlZiB0ZXN0V2l0aFRpbWVvdXQoc2VsZik6CisgICAgICAgIGNvbm4gPSBzZWxmLmFjY2VwdF9jb25uKCkKKyAgICAgICAgZGF0YSA9IHNlbGYucmVjdl9kYXRhKGNvbm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzZWxmLkZJTEVTSVpFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuRklMRURBVEEpCisKKyAgICAjIHRpbWVvdXQgKHRyaWdnZXJlZCkKKworICAgIGRlZiBfdGVzdFdpdGhUaW1lb3V0VHJpZ2dlcmVkU2VuZChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisgICAgICAgIGZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PTAuMDEpIGFzIHNvY2ssIFwKKyAgICAgICAgICAgICAgICBmaWxlIGFzIGZpbGU6CisgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzb2NrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQsIG1ldGgsIGZpbGUpCisKKyAgICBkZWYgdGVzdFdpdGhUaW1lb3V0VHJpZ2dlcmVkU2VuZChzZWxmKToKKyAgICAgICAgY29ubiA9IHNlbGYuYWNjZXB0X2Nvbm4oKQorICAgICAgICBjb25uLnJlY3YoODgxOTIpCisKKyAgICAjIGVycm9ycworCisgICAgZGVmIF90ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQodHlwZT1zb2NrZXQuU09DS19ER1JBTSkgYXMgczoKKyAgICAgICAgICAgICAgICBtZXRoID0gc2VsZi5tZXRoX2Zyb21fc29jayhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIFZhbHVlRXJyb3IsICJTT0NLX1NUUkVBTSIsIG1ldGgsIGZpbGUpCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3J0JykgYXMgZmlsZToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CisgICAgICAgICAgICAgICAgbWV0aCA9IHNlbGYubWV0aF9mcm9tX3NvY2socykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCAiYmluYXJ5IG1vZGUiLCBtZXRoLCBmaWxlKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyYicpIGFzIGZpbGU6CisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBzOgorICAgICAgICAgICAgICAgIG1ldGggPSBzZWxmLm1ldGhfZnJvbV9zb2NrKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJwb3NpdGl2ZSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGgsIGZpbGUsIGNvdW50PScyJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInBvc2l0aXZlIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aCwgZmlsZSwgY291bnQ9MC4xKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInBvc2l0aXZlIGludGVnZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aCwgZmlsZSwgY291bnQ9MCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJwb3NpdGl2ZSBpbnRlZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGgsIGZpbGUsIGNvdW50PS0xKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAic2VuZGZpbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICdvcy5zZW5kZmlsZSgpIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRmaWxlVXNpbmdTZW5kZmlsZVRlc3QoU2VuZGZpbGVVc2luZ1NlbmRUZXN0KToKKyAgICAiIiIKKyAgICBUZXN0IHRoZSBzZW5kZmlsZSgpIGltcGxlbWVudGF0aW9uIG9mIHNvY2tldC5zZW5kZmlsZSgpLgorICAgICIiIgorICAgIGRlZiBtZXRoX2Zyb21fc29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc29jaywgIl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUiKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC01MTI1LDcgKzUyOTIsNiBAQAogICAgIHRlc3RzLmV4dGVuZChbCiAgICAgICAgIE5vbkJsb2NraW5nVENQVGVzdHMsCiAgICAgICAgIEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlLAotICAgICAgICBGaWxlT2JqZWN0SW50ZXJydXB0ZWRUZXN0Q2FzZSwKICAgICAgICAgVW5idWZmZXJlZEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlLAogICAgICAgICBMaW5lQnVmZmVyZWRGaWxlT2JqZWN0Q2xhc3NUZXN0Q2FzZSwKICAgICAgICAgU21hbGxCdWZmZXJlZEZpbGVPYmplY3RDbGFzc1Rlc3RDYXNlLApAQCAtNTE3MCw2ICs1MzM2LDggQEAKICAgICAgICAgSW50ZXJydXB0ZWRSZWN2VGltZW91dFRlc3QsCiAgICAgICAgIEludGVycnVwdGVkU2VuZFRpbWVvdXRUZXN0LAogICAgICAgICBUZXN0U29ja2V0U2hhcmluZywKKyAgICAgICAgU2VuZGZpbGVVc2luZ1NlbmRUZXN0LAorICAgICAgICBTZW5kZmlsZVVzaW5nU2VuZGZpbGVUZXN0LAogICAgIF0pCiAKICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggMzI1ZDQ4NS4uMWVhNjZhNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTIyMiwzOCArMjIyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRncmFtX2V4YW1pbmUpCiAKLSAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotICAgIGRlZiBtb2NrZWRfc2VsZWN0X21vZHVsZShzZWxmKToKLSAgICAgICAgIiIiTW9ja3MgdGhlIHNlbGVjdC5zZWxlY3QoKSBjYWxsIHRvIHJhaXNlIEVJTlRSIGZvciBmaXJzdCBjYWxsIiIiCi0gICAgICAgIG9sZF9zZWxlY3QgPSBzZWxlY3Quc2VsZWN0Ci0KLSAgICAgICAgY2xhc3MgTW9ja1NlbGVjdDoKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IDAKLQotICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCArPSAxCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5jYWxsZWQgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgIyByYWlzZSB0aGUgZXhjZXB0aW9uIG9uIGZpcnN0IGNhbGwKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgUmV0dXJuIHJlYWwgc2VsZWN0IHZhbHVlIGZvciBjb25zZWN1dGl2ZSBjYWxscwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2xkX3NlbGVjdCgqYXJncykKLQotICAgICAgICBzZWxlY3Quc2VsZWN0ID0gTW9ja1NlbGVjdCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkIHNlbGVjdC5zZWxlY3QKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QgPSBvbGRfc2VsZWN0Ci0KLSAgICBkZWYgdGVzdF9JbnRlcnJ1cHRTZXJ2ZXJTZWxlY3RDYWxsKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYubW9ja2VkX3NlbGVjdF9tb2R1bGUoKSBhcyBtb2NrX3NlbGVjdDoKLSAgICAgICAgICAgIHBpZCA9IHNlbGYucnVuX3NlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbV9leGFtaW5lKQotICAgICAgICAgICAgIyBNYWtlIHN1cmUgc2VsZWN0IHdhcyBjYWxsZWQgYWdhaW46Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobW9ja19zZWxlY3QuY2FsbGVkLCAxKQotCiAgICAgIyBBbGFzLCBvbiBMaW51eCAoYXQgbGVhc3QpIHJlY3Zmcm9tKCkgZG9lc24ndCByZXR1cm4gYSBtZWFuaW5nZnVsCiAgICAgIyBjbGllbnQgYWRkcmVzcyBzbyB0aGlzIGNhbm5vdCB3b3JrOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKaW5kZXggOGY2YWY2NC4uYTVkMGViZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQpAQCAtMjYyLDI0ICsyNjIsNSBAQAogCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICB0ZXN0X2NsYXNzZXMgPSAoCi0gICAgICAgIFRlc3RCYXNlLAotICAgICAgICBUZXN0RGVjb3JhdGVTb3J0VW5kZWNvcmF0ZSwKLSAgICAgICAgVGVzdEJ1Z3MsCi0gICAgKQotCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKLQotICAgICMgdmVyaWZ5IHJlZmVyZW5jZSBjb3VudGluZwotICAgIGlmIHZlcmJvc2UgYW5kIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgY291bnRzID0gW05vbmVdICogNQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oY291bnRzKSk6Ci0gICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICBjb3VudHNbaV0gPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCi0gICAgICAgIHByaW50KGNvdW50cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCBjZGYzYWVkLi5mMzE0ZmY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtODUsNiArODUsMTIgQEAKICAgICAjIDAuOS44IG9yIGhpZ2hlcgogICAgIHJldHVybiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDAsIDksIDgsIDAsIDE1KQogCitkZWYgdXRjX29mZnNldCgpOiAjTk9URTogaWdub3JlIGlzc3VlcyBsaWtlICMxNjQ3NjU0CisgICAgIyBsb2NhbCB0aW1lID0gdXRjIHRpbWUgKyB1dGMgb2Zmc2V0CisgICAgaWYgdGltZS5kYXlsaWdodCBhbmQgdGltZS5sb2NhbHRpbWUoKS50bV9pc2RzdCA+IDA6CisgICAgICAgIHJldHVybiAtdGltZS5hbHR6b25lICAjIHNlY29uZHMKKyAgICByZXR1cm4gLXRpbWUudGltZXpvbmUKKwogZGVmIGFzbjF0aW1lKGNlcnRfdGltZSk6CiAgICAgIyBTb21lIHZlcnNpb25zIG9mIE9wZW5TU0wgaWdub3JlIHNlY29uZHMsIHNlZSAjMTgyMDcKICAgICAjIDAuOS44LmkKQEAgLTEzMyw2ICsxMzksMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX1NOSSwge1RydWUsIEZhbHNlfSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihzc2wuSEFTX0VDREgsIHtUcnVlLCBGYWxzZX0pCiAKKyAgICBkZWYgdGVzdF9zdHJfZm9yX2VudW1zKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBQUk9UT0NPTF8qIGNvbnN0YW50cyBoYXZlIGVudW0tbGlrZSBzdHJpbmcKKyAgICAgICAgIyByZXBycy4KKyAgICAgICAgcHJvdG8gPSBzc2wuUFJPVE9DT0xfU1NMdjIzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHByb3RvKSwgJ19TU0xNZXRob2QuUFJPVE9DT0xfU1NMdjIzJykKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQocHJvdG8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY3R4LnByb3RvY29sLCBwcm90bykKKwogICAgIGRlZiB0ZXN0X3JhbmRvbShzZWxmKToKICAgICAgICAgdiA9IHNzbC5SQU5EX3N0YXR1cygpCiAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTE1Nyw2ICsxNzEsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNzbC5SQU5EX2VnZCwgJ2ZvbycsIDEpCiAgICAgICAgIHNzbC5SQU5EX2FkZCgidGhpcyBpcyBhIHJhbmRvbSBzdHJpbmciLCA3NS4wKQorICAgICAgICBzc2wuUkFORF9hZGQoYiJ0aGlzIGlzIGEgcmFuZG9tIGJ5dGVzIG9iamVjdCIsIDc1LjApCisgICAgICAgIHNzbC5SQU5EX2FkZChieXRlYXJyYXkoYiJ0aGlzIGlzIGEgcmFuZG9tIGJ5dGVhcnJheSBvYmplY3QiKSwgNzUuMCkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIHBvc2l4JykKICAgICBkZWYgdGVzdF9yYW5kb21fZm9yayhzZWxmKToKQEAgLTI5NywxMCArMzEzLDEwIEBACiAgICAgICAgICMgVmVyc2lvbiBzdHJpbmcgYXMgcmV0dXJuZWQgYnkge09wZW4sTGlicmV9U1NMLCB0aGUgZm9ybWF0IG1pZ2h0IGNoYW5nZQogICAgICAgICBpZiAiTGlicmVTU0wiIGluIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJMaWJyZVNTTCB7OmR9Lns6ZH0iLmZvcm1hdChtYWpvciwgbWlub3IpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocywgdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMsIHQsIGhleChuKSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJPcGVuU1NMIHs6ZH0uezpkfS57OmR9Ii5mb3JtYXQobWFqb3IsIG1pbm9yLCBmaXgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocywgdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMsIHQsIGhleChuKSkpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9yZWZjeWNsZShzZWxmKToKQEAgLTM2OCw2ICszODQsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wubWF0Y2hfaG9zdG5hbWUsIGNlcnQsIGhvc3RuYW1lKQogCisgICAgICAgICMgLS0gSG9zdG5hbWUgbWF0Y2hpbmcgLS0KKwogICAgICAgICBjZXJ0ID0geydzdWJqZWN0JzogKCgoJ2NvbW1vbk5hbWUnLCAnZXhhbXBsZS5jb20nKSwpLCl9CiAgICAgICAgIG9rKGNlcnQsICdleGFtcGxlLmNvbScpCiAgICAgICAgIG9rKGNlcnQsICdFeEFtcGxlLmNPbScpCkBAIC00NTMsNiArNDcxLDI4IEBACiAgICAgICAgICMgT25seSBjb21tb25OYW1lIGlzIGNvbnNpZGVyZWQKICAgICAgICAgZmFpbChjZXJ0LCAnQ2FsaWZvcm5pYScpCiAKKyAgICAgICAgIyAtLSBJUHY0IG1hdGNoaW5nIC0tCisgICAgICAgIGNlcnQgPSB7J3N1YmplY3QnOiAoKCgnY29tbW9uTmFtZScsICdleGFtcGxlLmNvbScpLCksKSwKKyAgICAgICAgICAgICAgICAnc3ViamVjdEFsdE5hbWUnOiAoKCdETlMnLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdJUCBBZGRyZXNzJywgJzEwLjExLjEyLjEzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSVAgQWRkcmVzcycsICcxNC4xNS4xNi4xNycpKX0KKyAgICAgICAgb2soY2VydCwgJzEwLjExLjEyLjEzJykKKyAgICAgICAgb2soY2VydCwgJzE0LjE1LjE2LjE3JykKKyAgICAgICAgZmFpbChjZXJ0LCAnMTQuMTUuMTYuMTgnKQorICAgICAgICBmYWlsKGNlcnQsICdleGFtcGxlLm5ldCcpCisKKyAgICAgICAgIyAtLSBJUHY2IG1hdGNoaW5nIC0tCisgICAgICAgIGNlcnQgPSB7J3N1YmplY3QnOiAoKCgnY29tbW9uTmFtZScsICdleGFtcGxlLmNvbScpLCksKSwKKyAgICAgICAgICAgICAgICAnc3ViamVjdEFsdE5hbWUnOiAoKCdETlMnLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdJUCBBZGRyZXNzJywgJzIwMDE6MDowOjA6MDowOjA6Q0FGRVxuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnSVAgQWRkcmVzcycsICcyMDAzOjA6MDowOjA6MDowOkJBQkFcbicpKX0KKyAgICAgICAgb2soY2VydCwgJzIwMDE6OmNhZmUnKQorICAgICAgICBvayhjZXJ0LCAnMjAwMzo6YmFiYScpCisgICAgICAgIGZhaWwoY2VydCwgJzIwMDM6OmJlYmUnKQorICAgICAgICBmYWlsKGNlcnQsICdleGFtcGxlLm5ldCcpCisKKyAgICAgICAgIyAtLSBNaXNjZWxsYW5lb3VzIC0tCisKICAgICAgICAgIyBOZWl0aGVyIGNvbW1vbk5hbWUgbm9yIHN1YmplY3RBbHROYW1lCiAgICAgICAgIGNlcnQgPSB7J25vdEFmdGVyJzogJ0RlYyAxOCAyMzo1OTo1OSAyMDExIEdNVCcsCiAgICAgICAgICAgICAgICAgJ3N1YmplY3QnOiAoKCgnY291bnRyeU5hbWUnLCAnVVMnKSwpLApAQCAtNTA0LDkgKzU0NCwxNCBAQAogICAgIGRlZiB0ZXN0X3Vua25vd25fY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgogICAgICAgICAjIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciB1bmtub3duIHR5cGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICBzLmJpbmQoKCcxMjcuMC4wLjEnLCAwKSkKKyAgICAgICAgcy5saXN0ZW4oKQorICAgICAgICBjID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgYy5jb25uZWN0KHMuZ2V0c29ja25hbWUoKSkKKyAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoYywgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpIGFzIHNzOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICBzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ1bmtub3duLXR5cGUiKQorICAgICAgICBzLmNsb3NlKCkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKCJ0bHMtdW5pcXVlIiBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICIndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIG5vdCBhdmFpbGFibGUiKQpAQCAtNjQ3LDYgKzY5Miw3MSBAQAogICAgICAgICAgICAgY3R4LndyYXBfc29ja2V0KHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGN4LmV4Y2VwdGlvbiksICJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogCisgICAgZGVmIGNlcnRfdGltZV9vayhzZWxmLCB0aW1lc3RyaW5nLCB0aW1lc3RhbXApOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcyh0aW1lc3RyaW5nKSwgdGltZXN0YW1wKQorCisgICAgZGVmIGNlcnRfdGltZV9mYWlsKHNlbGYsIHRpbWVzdHJpbmcpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKHRpbWVzdHJpbmcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh1dGNfb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsIHRpbWUgbmVlZHMgdG8gYmUgZGlmZmVyZW50IGZyb20gVVRDJykKKyAgICBkZWYgdGVzdF9jZXJ0X3RpbWVfdG9fc2Vjb25kc190aW1lem9uZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTk5NDA6IHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcygpIHJldHVybnMgd3JvbmcKKyAgICAgICAgIyAgICAgICAgICAgICAgIHJlc3VsdHMgaWYgbG9jYWwgdGltZXpvbmUgaXMgbm90IFVUQworICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiTWF5ICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3ODY2ODgwMC4wKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICA1IDA5OjM0OjQzIDIwMTggR01UIiwgMTUxNTE0NDg4My4wKQorCisgICAgZGVmIHRlc3RfY2VydF90aW1lX3RvX3NlY29uZHMoc2VsZik6CisgICAgICAgIHRpbWVzdHJpbmcgPSAiSmFuICA1IDA5OjM0OjQzIDIwMTggR01UIgorICAgICAgICB0cyA9IDE1MTUxNDQ4ODMuMAorICAgICAgICBzZWxmLmNlcnRfdGltZV9vayh0aW1lc3RyaW5nLCB0cykKKyAgICAgICAgIyBhY2NlcHQga2V5d29yZCBwYXJhbWV0ZXIsIGFzc2VydCBpdHMgbmFtZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNzbC5jZXJ0X3RpbWVfdG9fc2Vjb25kcyhjZXJ0X3RpbWU9dGltZXN0cmluZyksIHRzKQorICAgICAgICAjIGFjY2VwdCBib3RoICVlIGFuZCAlZCAoc3BhY2Ugb3IgemVybyBnZW5lcmF0ZWQgYnkgc3RyZnRpbWUpCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gMDUgMDk6MzQ6NDMgMjAxOCBHTVQiLCB0cykKKyAgICAgICAgIyBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYU4gIDUgMDk6MzQ6NDMgMjAxOCBHbVQiLCB0cykKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDA5OjM0IDIwMTggR01UIikgICAgICMgbm8gc2Vjb25kcworICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6MzQ6NDMgMjAxOCIpICAgICAgIyBubyBHTVQKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbCgiSmFuICA1IDA5OjM0OjQzIDIwMTggVVRDIikgICMgbm90IEdNVCB0aW1lem9uZQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gMzUgMDk6MzQ6NDMgMjAxOCBHTVQiKSAgIyBpbnZhbGlkIGRheQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKb24gIDUgMDk6MzQ6NDMgMjAxOCBHTVQiKSAgIyBpbnZhbGlkIG1vbnRoCisgICAgICAgIHNlbGYuY2VydF90aW1lX2ZhaWwoIkphbiAgNSAyNDowMDowMCAyMDE4IEdNVCIpICAjIGludmFsaWQgaG91cgorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6NjA6NDMgMjAxOCBHTVQiKSAgIyBpbnZhbGlkIG1pbnV0ZQorCisgICAgICAgIG5ld3llYXJfdHMgPSAxMjMwNzY4MDAwLjAKKyAgICAgICAgIyBsZWFwIHNlY29uZHMKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkRlYyAzMSAyMzo1OTo2MCAyMDA4IEdNVCIsIG5ld3llYXJfdHMpCisgICAgICAgICMgc2FtZSB0aW1lc3RhbXAKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAgMSAwMDowMDowMCAyMDA5IEdNVCIsIG5ld3llYXJfdHMpCisKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkphbiAgNSAwOTozNDo1OSAyMDE4IEdNVCIsIDE1MTUxNDQ4OTkpCisgICAgICAgICMgIGFsbG93IDYwdGggc2Vjb25kIChldmVuIGlmIGl0IGlzIG5vdCBhIGxlYXAgc2Vjb25kKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiSmFuICA1IDA5OjM0OjYwIDIwMTggR01UIiwgMTUxNTE0NDkwMCkKKyAgICAgICAgIyAgYWxsb3cgMm5kIGxlYXAgc2Vjb25kIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGltZS5zdHJwdGltZSgpCisgICAgICAgIHNlbGYuY2VydF90aW1lX29rKCJKYW4gIDUgMDk6MzQ6NjEgMjAxOCBHTVQiLCAxNTE1MTQ0OTAxKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKCJKYW4gIDUgMDk6MzQ6NjIgMjAxOCBHTVQiKSAgIyBpbnZhbGlkIHNlY29uZHMKKworICAgICAgICAjIG5vIHNwZWNpYWwgdHJlYXRlbWVudCBmb3IgdGhlIHNwZWNpYWwgdmFsdWU6CisgICAgICAgICMgICA5OTk5MTIzMTIzNTk1OVogKHJmYyA1MjgwKQorICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRGVjIDMxIDIzOjU5OjU5IDk5OTkgR01UIiwgMjUzNDAyMzAwNzk5LjApCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF9sb2NhbGUoJ0xDX0FMTCcsICcnKQorICAgIGRlZiB0ZXN0X2NlcnRfdGltZV90b19zZWNvbmRzX2xvY2FsZShzZWxmKToKKyAgICAgICAgIyBgY2VydF90aW1lX3RvX3NlY29uZHMoKWAgc2hvdWxkIGJlIGxvY2FsZSBpbmRlcGVuZGVudAorCisgICAgICAgIGRlZiBsb2NhbF9mZWJydWFyeV9uYW1lKCk6CisgICAgICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJWInLCAoMSwgMiwgMywgNCwgNSwgNiwgMCwgMCwgMCkpCisKKyAgICAgICAgaWYgbG9jYWxfZmVicnVhcnlfbmFtZSgpLmxvd2VyKCkgPT0gJ2ZlYic6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJsb2NhbGUtc3BlY2lmaWMgbW9udGggbmFtZSBuZWVkcyB0byBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWZmZXJlbnQgZnJvbSBDIGxvY2FsZSIpCisKKyAgICAgICAgIyBsb2NhbGUtaW5kZXBlbmRlbnQKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkZlYiAgOSAwMDowMDowMCAyMDA3IEdNVCIsIDExNzA5NzkyMDAuMCkKKyAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbChsb2NhbF9mZWJydWFyeV9uYW1lKCkgKyAiICA5IDAwOjAwOjAwIDIwMDcgR01UIikKKwogCiBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMTU2LDcgKzEyNjYsNyBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CiAgICAgICAgICAgICBzLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKLSAgICAgICAgICAgIHMubGlzdGVuKDUpCisgICAgICAgICAgICBzLmxpc3RlbigpCiAgICAgICAgICAgICBjID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgICAgICBjLmNvbm5lY3Qocy5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgYy5zZXRibG9ja2luZyhGYWxzZSkKQEAgLTExNjksNiArMTI3OSw2OSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRCkKIAogCitjbGFzcyBNZW1vcnlCSU9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9yZWFkX3dyaXRlKHNlbGYpOgorICAgICAgICBiaW8gPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgYmlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYicnKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBiaW8ud3JpdGUoYidiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKCksIGInZm9vYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJycpCisgICAgICAgIGJpby53cml0ZShiJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoMiksIGInYmEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDEpLCBiJ3onKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5yZWFkKDEpLCBiJycpCisKKyAgICBkZWYgdGVzdF9lb2Yoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYicnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5lb2YpCisgICAgICAgIGJpby53cml0ZShiJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgYmlvLndyaXRlX2VvZigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgyKSwgYidmbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmVvZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgxKSwgYidvJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJpby5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYicnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYmlvLmVvZikKKworICAgIGRlZiB0ZXN0X3BlbmRpbmcoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5wZW5kaW5nLCAwKQorICAgICAgICBiaW8ud3JpdGUoYidmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5wZW5kaW5nLCAzKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIGJpby5yZWFkKDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5wZW5kaW5nLCAzLWktMSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBiaW8ud3JpdGUoYid4JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnBlbmRpbmcsIGkrMSkKKyAgICAgICAgYmlvLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpby5wZW5kaW5nLCAwKQorCisgICAgZGVmIHRlc3RfYnVmZmVyX3R5cGVzKHNlbGYpOgorICAgICAgICBiaW8gPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgYmlvLndyaXRlKGInZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJ2ZvbycpCisgICAgICAgIGJpby53cml0ZShieXRlYXJyYXkoYidiYXInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW8ucmVhZCgpLCBiJ2JhcicpCisgICAgICAgIGJpby53cml0ZShtZW1vcnl2aWV3KGInYmF6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmlvLnJlYWQoKSwgYidiYXonKQorCisgICAgZGVmIHRlc3RfZXJyb3JfdHlwZXMoc2VsZik6CisgICAgICAgIGJpbyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW8ud3JpdGUsIDEpCisKKwogY2xhc3MgTmV0d29ya2VkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY29ubmVjdChzZWxmKToKQEAgLTEzOTYsMTQgKzE1NjksMTIgQEAKICAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYpOgogICAgICAgICBkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShob3N0LCBwb3J0LCBjZXJ0PU5vbmUpOgogICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChob3N0KToKLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgbm90IHBlbToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKIAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuUFJPVE9DT0xfU1NMdjIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSkKICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CiAgICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbApAQCAtMTQxMyw3ICsxNTg0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCiAKICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlBST1RPQ09MX1NTTHYyMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1jZXJ0KQogICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCkBAIC0xNDk5LDYgKzE2NjksOTMgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCiAKKworY2xhc3MgTmV0d29ya2VkQklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNzbF9pb19sb29wKHNlbGYsIHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBBIHNpbXBsZSBJTyBsb29wLiBDYWxsIGZ1bmMoKmFyZ3MpIGRlcGVuZGluZyBvbiB0aGUgZXJyb3Igd2UgZ2V0CisgICAgICAgICMgKFdBTlRfUkVBRCBvciBXQU5UX1dSSVRFKSBtb3ZlIGRhdGEgYmV0d2VlbiB0aGUgc29ja2V0IGFuZCB0aGUgQklPcy4KKyAgICAgICAgdGltZW91dCA9IGt3YXJncy5nZXQoJ3RpbWVvdXQnLCAxMCkKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBlcnJubyA9IE5vbmUKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXQgPSBmdW5jKCphcmdzKQorICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IHdlIGdldCBhIHNwdXJpb3VzIC0xL1NTTF9FUlJPUl9TWVNDQUxMIGZvcgorICAgICAgICAgICAgICAgICMgbm9uLWJsb2NraW5nIElPLiBUaGUgU1NMX3NodXRkb3duIG1hbnBhZ2UgaGludHMgYXQgdGhpcy4KKyAgICAgICAgICAgICAgICAjIEl0ICpzaG91bGQqIGJlIHNhZmUgdG8ganVzdCBpZ25vcmUgU1lTX0VSUk9SX1NZU0NBTEwgYmVjYXVzZQorICAgICAgICAgICAgICAgICMgd2l0aCBhIE1lbW9yeSBCSU8gdGhlcmUncyBubyBzeXNjYWxscyAoZm9yIElPIGF0IGxlYXN0KS4KKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vIG5vdCBpbiAoc3NsLlNTTF9FUlJPUl9XQU5UX1JFQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5TU0xfRVJST1JfV0FOVF9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLlNTTF9FUlJPUl9TWVNDQUxMKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBlcnJubyA9IGUuZXJybm8KKyAgICAgICAgICAgICMgR2V0IGFueSBkYXRhIGZyb20gdGhlIG91dGdvaW5nIEJJTyBpcnJlc3BlY3RpdmUgb2YgYW55IGVycm9yLCBhbmQKKyAgICAgICAgICAgICMgc2VuZCBpdCB0byB0aGUgc29ja2V0LgorICAgICAgICAgICAgYnVmID0gb3V0Z29pbmcucmVhZCgpCisgICAgICAgICAgICBzb2NrLnNlbmRhbGwoYnVmKQorICAgICAgICAgICAgIyBJZiB0aGVyZSdzIG5vIGVycm9yLCB3ZSdyZSBkb25lLiBGb3IgV0FOVF9SRUFELCB3ZSBuZWVkIHRvIGdldAorICAgICAgICAgICAgIyBkYXRhIGZyb20gdGhlIHNvY2tldCBhbmQgcHV0IGl0IGluIHRoZSBpbmNvbWluZyBCSU8uCisgICAgICAgICAgICBpZiBlcnJubyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbGlmIGVycm5vID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgorICAgICAgICAgICAgICAgIGJ1ZiA9IHNvY2sucmVjdigzMjc2OCkKKyAgICAgICAgICAgICAgICBpZiBidWY6CisgICAgICAgICAgICAgICAgICAgIGluY29taW5nLndyaXRlKGJ1ZikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpbmNvbWluZy53cml0ZV9lb2YoKQorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJOZWVkZWQgJWQgY2FsbHMgdG8gY29tcGxldGUgJXMoKS5cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY291bnQsIGZ1bmMuX19uYW1lX18pKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgdGVzdF9oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoInN2bi5weXRob24ub3JnIik6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgICAgIHNvY2suY29ubmVjdCgoInN2bi5weXRob24ub3JnIiwgNDQzKSkKKyAgICAgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCkKKyAgICAgICAgICAgIGN0eC5jaGVja19ob3N0bmFtZSA9IFRydWUKKyAgICAgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCAnc3ZuLnB5dGhvbi5vcmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQorICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2xvYmoud3JpdGUsIGInZm9vJykKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorCisgICAgZGVmIHRlc3RfcmVhZF93cml0ZV9kYXRhKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzdm4ucHl0aG9uLm9yZyIpOgorICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgICAgICBzb2NrLmNvbm5lY3QoKCJzdm4ucHl0aG9uLm9yZyIsIDQ0MykpCisgICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSkKKyAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQorICAgICAgICAgICAgcmVxID0gYidHRVQgLyBIVFRQLzEuMFxyXG5cclxuJworICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQorICAgICAgICAgICAgYnVmID0gc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5yZWFkLCAxMDI0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZbOjVdLCBiJ0hUVFAvJykKKyAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisKKwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTE1MzAsNyArMTc4Nyw4IEBACiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBzZWxmLnNlcnZlci5jb250ZXh0LndyYXBfc29ja2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZWxlY3RlZF9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfbnBuX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZWxlY3RlZF9hbHBuX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSkKICAgICAgICAgICAgICAgICBleGNlcHQgKHNzbC5TU0xFcnJvciwgQ29ubmVjdGlvblJlc2V0RXJyb3IpIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICMgV2UgdHJlYXQgQ29ubmVjdGlvblJlc2V0RXJyb3IgYXMgdGhvdWdoIGl0IHdlcmUgYW4KICAgICAgICAgICAgICAgICAgICAgIyBTU0xFcnJvciAtIE9wZW5TU0wgb24gVWJ1bnR1IGFicnVwdGx5IGNsb3NlcyB0aGUKQEAgLTE1NDcsNiArMTgwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zaGFyZWRfY2lwaGVycy5hcHBlbmQoc2VsZi5zc2xjb25uLnNoYXJlZF9jaXBoZXJzKCkpCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyLmNvbnRleHQudmVyaWZ5X21vZGUgPT0gc3NsLkNFUlRfUkVRVUlSRUQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ID0gc2VsZi5zc2xjb25uLmdldHBlZXJjZXJ0KCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY2hhdHR5OgpAQCAtMTYzNyw3ICsxODk2LDggQEAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNlcnRpZmljYXRlPU5vbmUsIHNzbF92ZXJzaW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1Ob25lLCBjYWNlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSwgc3RhcnR0bHNfc2VydmVyPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICBucG5fcHJvdG9jb2xzPU5vbmUsIGFscG5fcHJvdG9jb2xzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBjb250ZXh0OgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNjUyLDYgKzE5MTIsOCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRpZmljYXRlKQogICAgICAgICAgICAgICAgIGlmIG5wbl9wcm90b2NvbHM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhucG5fcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIGlmIGFscG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKGFscG5fcHJvdG9jb2xzKQogICAgICAgICAgICAgICAgIGlmIGNpcGhlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQogICAgICAgICAgICAgc2VsZi5jaGF0dHkgPSBjaGF0dHkKQEAgLTE2NjEsNyArMTkyMyw5IEBACiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNvY2spCiAgICAgICAgICAgICBzZWxmLmZsYWcgPSBOb25lCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZSA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLnNlbGVjdGVkX3Byb3RvY29scyA9IFtdCisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkX25wbl9wcm90b2NvbHMgPSBbXQorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZF9hbHBuX3Byb3RvY29scyA9IFtdCisgICAgICAgICAgICBzZWxmLnNoYXJlZF9jaXBoZXJzID0gW10KICAgICAgICAgICAgIHNlbGYuY29ubl9lcnJvcnMgPSBbXQogICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgc2VsZi5kYWVtb24gPSBUcnVlCkBAIC0xNjgxLDcgKzE5NDUsNyBAQAogCiAgICAgICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICAgICBzZWxmLnNvY2suc2V0dGltZW91dCgwLjA1KQotICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3Rlbig1KQorICAgICAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZSA9IFRydWUKICAgICAgICAgICAgIGlmIHNlbGYuZmxhZzoKICAgICAgICAgICAgICAgICAjIHNpZ25hbCBhbiBldmVudApAQCAtMTg4NywxNCArMjE1MSwyNSBAQAogICAgICAgICAgICAgICAgICAgICAnY29tcHJlc3Npb24nOiBzLmNvbXByZXNzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgICdjaXBoZXInOiBzLmNpcGhlcigpLAogICAgICAgICAgICAgICAgICAgICAncGVlcmNlcnQnOiBzLmdldHBlZXJjZXJ0KCksCi0gICAgICAgICAgICAgICAgICAgICdjbGllbnRfbnBuX3Byb3RvY29sJzogcy5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorICAgICAgICAgICAgICAgICAgICAnY2xpZW50X2FscG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSwKKyAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ucG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpLAorICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6IHMudmVyc2lvbigpLAogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBzdGF0c1snc2VydmVyX25wbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9wcm90b2NvbHMKKyAgICAgICAgICAgIHN0YXRzWydzZXJ2ZXJfYWxwbl9wcm90b2NvbHMnXSA9IHNlcnZlci5zZWxlY3RlZF9hbHBuX3Byb3RvY29scworICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfbnBuX3Byb3RvY29scworICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9zaGFyZWRfY2lwaGVycyddID0gc2VydmVyLnNoYXJlZF9jaXBoZXJzCiAgICAgICAgIHJldHVybiBzdGF0cwogCiAgICAgZGVmIHRyeV9wcm90b2NvbF9jb21ibyhzZXJ2ZXJfcHJvdG9jb2wsIGNsaWVudF9wcm90b2NvbCwgZXhwZWN0X3N1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0c3JlcXM9Tm9uZSwgc2VydmVyX29wdGlvbnM9MCwgY2xpZW50X29wdGlvbnM9MCk6CisgICAgICAgICIiIgorICAgICAgICBUcnkgdG8gU1NMLWNvbm5lY3QgdXNpbmcgKmNsaWVudF9wcm90b2NvbCogdG8gKnNlcnZlcl9wcm90b2NvbCouCisgICAgICAgIElmICpleHBlY3Rfc3VjY2VzcyogaXMgdHJ1ZSwgYXNzZXJ0IHRoYXQgdGhlIGNvbm5lY3Rpb24gc3VjY2VlZHMsCisgICAgICAgIGlmIGl0J3MgZmFsc2UsIGFzc2VydCB0aGF0IHRoZSBjb25uZWN0aW9uIGZhaWxzLgorICAgICAgICBBbHNvLCBpZiAqZXhwZWN0X3N1Y2Nlc3MqIGlzIGEgc3RyaW5nLCBhc3NlcnQgdGhhdCBpdCBpcyB0aGUgcHJvdG9jb2wKKyAgICAgICAgdmVyc2lvbiBhY3R1YWxseSB1c2VkIGJ5IHRoZSBjb25uZWN0aW9uLgorICAgICAgICAiIiIKICAgICAgICAgaWYgY2VydHNyZXFzIGlzIE5vbmU6CiAgICAgICAgICAgICBjZXJ0c3JlcXMgPSBzc2wuQ0VSVF9OT05FCiAgICAgICAgIGNlcnR0eXBlID0gewpAQCAtMTkyNCw4ICsyMTk5LDggQEAKICAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCiAgICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1GYWxzZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1GYWxzZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgIyBQcm90b2NvbCBtaXNtYXRjaCBjYW4gcmVzdWx0IGluIGVpdGhlciBhbiBTU0xFcnJvciwgb3IgYQogICAgICAgICAjICJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiIGVycm9yLgogICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yOgpAQCAtMTk0MCw2ICsyMjE1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICJDbGllbnQgcHJvdG9jb2wgJXMgc3VjY2VlZGVkIHdpdGggc2VydmVyIHByb3RvY29sICVzISIKICAgICAgICAgICAgICAgICAgICAgJSAoc3NsLmdldF9wcm90b2NvbF9uYW1lKGNsaWVudF9wcm90b2NvbCksCiAgICAgICAgICAgICAgICAgICAgICAgIHNzbC5nZXRfcHJvdG9jb2xfbmFtZShzZXJ2ZXJfcHJvdG9jb2wpKSkKKyAgICAgICAgICAgIGVsaWYgKGV4cGVjdF9zdWNjZXNzIGlzIG5vdCBUcnVlCisgICAgICAgICAgICAgICAgICBhbmQgZXhwZWN0X3N1Y2Nlc3MgIT0gc3RhdHNbJ3ZlcnNpb24nXSk6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInZlcnNpb24gbWlzbWF0Y2g6IGV4cGVjdGVkICVyLCBnb3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZXhwZWN0X3N1Y2Nlc3MsIHN0YXRzWyd2ZXJzaW9uJ10pKQogCiAKICAgICBjbGFzcyBUaHJlYWRlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxMDcsNyArMjM4Niw3IEBACiAgICAgICAgICAgICAjIGFuZCBzZXRzIEV2ZW50IGBsaXN0ZW5lcl9nb25lYCB0byBsZXQgdGhlIG1haW4gdGhyZWFkIGtub3cKICAgICAgICAgICAgICMgdGhlIHNvY2tldCBpcyBnb25lLgogICAgICAgICAgICAgZGVmIGxpc3RlbmVyKCk6Ci0gICAgICAgICAgICAgICAgcy5saXN0ZW4oNSkKKyAgICAgICAgICAgICAgICBzLmxpc3RlbigpCiAgICAgICAgICAgICAgICAgbGlzdGVuZXJfcmVhZHkuc2V0KCkKICAgICAgICAgICAgICAgICBuZXdzb2NrLCBhZGRyID0gcy5hY2NlcHQoKQogICAgICAgICAgICAgICAgIG5ld3NvY2suY2xvc2UoKQpAQCAtMjE3MiwxOSArMjQ1MSwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgU1NMMiBjbGllbnQgdG8gU1NMMjMgc2VydmVyIHRlc3QgdW5leHBlY3RlZGx5IGZhaWxlZDpcbiAlc1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc3RyKHgpKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MycpOgotICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUpCisgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJykKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBUcnVlKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgVHJ1ZSkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScpCiAKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKLSAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKKyAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnLCBzc2wuQ0VSVF9PUFRJT05BTCkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBUcnVlLCBzc2wuQ0VSVF9PUFRJT05BTCkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsIFRydWUsIHNzbC5DRVJUX09QVElPTkFMKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgJ1RMU3YxJywgc3NsLkNFUlRfT1BUSU9OQUwpCiAKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKLSAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCBUcnVlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1NTTHYzLCAnU1NMdjMnLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBUcnVlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjEsIFRydWUsIHNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2MjMsIHNzbC5QUk9UT0NPTF9UTFN2MSwgJ1RMU3YxJywgc3NsLkNFUlRfUkVRVUlSRUQpCiAKICAgICAgICAgICAgICMgU2VydmVyIHdpdGggc3BlY2lmaWMgU1NMIG9wdGlvbnMKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKQEAgLTIyMDQsOSArMjQ4Myw5IEBACiAgICAgICAgICAgICAiIiJDb25uZWN0aW5nIHRvIGFuIFNTTHYzIHNlcnZlciB3aXRoIHZhcmlvdXMgY2xpZW50IG9wdGlvbnMiIiIKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsIFRydWUsIHNzbC5DRVJUX09QVElPTkFMKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYzLCBUcnVlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJykKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MywgJ1NTTHYzJywgc3NsLkNFUlRfT1BUSU9OQUwpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjMsICdTU0x2MycsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpOgogICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MiwgRmFsc2UpCiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfU1NMdjIzLCBGYWxzZSwKQEAgLTIyMTQsNyArMjQ5Myw3IEBACiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYzLCBzc2wuUFJPVE9DT0xfVExTdjEsIEZhbHNlKQogICAgICAgICAgICAgaWYgbm9fc3NsdjJfaW1wbGllc19zc2x2M19oZWxsbygpOgogICAgICAgICAgICAgICAgICMgTm8gU1NMdjIgPT4gY2xpZW50IHdpbGwgdXNlIGFuIFNTTHYzIGhlbGxvIG9uIHJlY2VudCBPcGVuU1NMcwotICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjMsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIFRydWUsCisgICAgICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9TU0x2Mywgc3NsLlBST1RPQ09MX1NTTHYyMywgJ1NTTHYzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9c3NsLk9QX05PX1NTTHYyKQogCiAgICAgICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCkBAIC0yMjIyLDkgKzI1MDEsOSBAQAogICAgICAgICAgICAgIiIiQ29ubmVjdGluZyB0byBhIFRMU3YxIHNlcnZlciB3aXRoIHZhcmlvdXMgY2xpZW50IG9wdGlvbnMiIiIKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsIFRydWUpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsIFRydWUsIHNzbC5DRVJUX09QVElPTkFMKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxLCBUcnVlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgJ1RMU3YxJykKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MSwgJ1RMU3YxJywgc3NsLkNFUlRfT1BUSU9OQUwpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxLCBzc2wuUFJPVE9DT0xfVExTdjEsICdUTFN2MScsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpOgogICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9TU0x2MiwgRmFsc2UpCiAgICAgICAgICAgICBpZiBoYXNhdHRyKHNzbCwgJ1BST1RPQ09MX1NTTHYzJyk6CkBAIC0yMjQwLDcgKzI1MTksNyBAQAogICAgICAgICAgICAgICAgVGVzdGluZyBhZ2FpbnN0IG9sZGVyIFRMUyB2ZXJzaW9ucy4iIiIKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBUcnVlKQorICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgJ1RMU3YxLjEnKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpOgogICAgICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMSwgc3NsLlBST1RPQ09MX1NTTHYyLCBGYWxzZSkKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjMnKToKQEAgLTIyNDgsNyArMjUyNyw3IEBACiAgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1RMU3YxXzEsIHNzbC5QUk9UT0NPTF9TU0x2MjMsIEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXNzbC5PUF9OT19UTFN2MV8xKQogCi0gICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzEsIFRydWUpCisgICAgICAgICAgICB0cnlfcHJvdG9jb2xfY29tYm8oc3NsLlBST1RPQ09MX1NTTHYyMywgc3NsLlBST1RPQ09MX1RMU3YxXzEsICdUTFN2MS4xJykKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMSwgc3NsLlBST1RPQ09MX1RMU3YxLCBGYWxzZSkKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjEsIHNzbC5QUk9UT0NPTF9UTFN2MV8xLCBGYWxzZSkKIApAQCAtMjI2MSw3ICsyNTQwLDcgQEAKICAgICAgICAgICAgICAgIFRlc3RpbmcgYWdhaW5zdCBvbGRlciBUTFMgdmVyc2lvbnMuIiIiCiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQotICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfVExTdjFfMiwgVHJ1ZSwKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1RMU3YxXzIsICdUTFN2MS4yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfb3B0aW9ucz1zc2wuT1BfTk9fU1NMdjN8c3NsLk9QX05PX1NTTHYyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9vcHRpb25zPXNzbC5PUF9OT19TU0x2M3xzc2wuT1BfTk9fU1NMdjIsKQogICAgICAgICAgICAgaWYgaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpOgpAQCAtMjI3MSw3ICsyNTUwLDcgQEAKICAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfVExTdjFfMiwgc3NsLlBST1RPQ09MX1NTTHYyMywgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X29wdGlvbnM9c3NsLk9QX05PX1RMU3YxXzIpCiAKLSAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjFfMiwgVHJ1ZSkKKyAgICAgICAgICAgIHRyeV9wcm90b2NvbF9jb21ibyhzc2wuUFJPVE9DT0xfU1NMdjIzLCBzc2wuUFJPVE9DT0xfVExTdjFfMiwgJ1RMU3YxLjInKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfVExTdjEsIEZhbHNlKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MSwgc3NsLlBST1RPQ09MX1RMU3YxXzIsIEZhbHNlKQogICAgICAgICAgICAgdHJ5X3Byb3RvY29sX2NvbWJvKHNzbC5QUk9UT0NPTF9UTFN2MV8yLCBzc2wuUFJPVE9DT0xfVExTdjFfMSwgRmFsc2UpCkBAIC0yNTA3LDYgKzI3ODYsMzYgQEAKICAgICAgICAgICAgICAgICBzLndyaXRlKGIib3ZlclxuIikKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAorICAgICAgICBkZWYgdGVzdF9ub25ibG9ja2luZ19zZW5kKHNlbGYpOgorICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRyZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKKworICAgICAgICAgICAgICAgICMgSWYgd2Uga2VlcCBzZW5kaW5nIGRhdGEsIGF0IHNvbWUgcG9pbnQgdGhlIGJ1ZmZlcnMKKyAgICAgICAgICAgICAgICAjIHdpbGwgYmUgZnVsbCBhbmQgdGhlIGNhbGwgd2lsbCBibG9jaworICAgICAgICAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSg4MTkyKQorICAgICAgICAgICAgICAgIGRlZiBmaWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZW5kKGJ1ZikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoc3NsLlNTTFdhbnRXcml0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMV2FudFJlYWRFcnJvciksIGZpbGxfYnVmZmVyKQorCisgICAgICAgICAgICAgICAgIyBOb3cgcmVhZCBhbGwgdGhlIG91dHB1dCBhbmQgZGlzY2FyZCBpdAorICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoVHJ1ZSkKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKwogICAgICAgICBkZWYgdGVzdF9oYW5kc2hha2VfdGltZW91dChzZWxmKToKICAgICAgICAgICAgICMgSXNzdWUgIzUxMDM6IFNTTCBoYW5kc2hha2UgbXVzdCByZXNwZWN0IHRoZSBzb2NrZXQgdGltZW91dAogICAgICAgICAgICAgc2VydmVyID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKQEAgLTI1MTYsNyArMjgyNSw3IEBACiAgICAgICAgICAgICBmaW5pc2ggPSBGYWxzZQogCiAgICAgICAgICAgICBkZWYgc2VydmUoKToKLSAgICAgICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKDUpCisgICAgICAgICAgICAgICAgc2VydmVyLmxpc3RlbigpCiAgICAgICAgICAgICAgICAgc3RhcnRlZC5zZXQoKQogICAgICAgICAgICAgICAgIGNvbm5zID0gW10KICAgICAgICAgICAgICAgICB3aGlsZSBub3QgZmluaXNoOgpAQCAtMjU3Myw3ICsyODgyLDcgQEAKICAgICAgICAgICAgIHBlZXIgPSBOb25lCiAgICAgICAgICAgICBkZWYgc2VydmUoKToKICAgICAgICAgICAgICAgICBub25sb2NhbCByZW1vdGUsIHBlZXIKLSAgICAgICAgICAgICAgICBzZXJ2ZXIubGlzdGVuKDUpCisgICAgICAgICAgICAgICAgc2VydmVyLmxpc3RlbigpCiAgICAgICAgICAgICAgICAgIyBCbG9jayBvbiB0aGUgYWNjZXB0IGFuZCB3YWl0IG9uIHRoZSBjb25uZWN0aW9uIHRvIGNsb3NlLgogICAgICAgICAgICAgICAgIGV2dC5zZXQoKQogICAgICAgICAgICAgICAgIHJlbW90ZSwgcGVlciA9IHNlcnZlci5hY2NlcHQoKQpAQCAtMjYyMyw2ICsyOTMyLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vIHNoYXJlZCBjaXBoZXIiLCBzdHIoc2VydmVyLmNvbm5fZXJyb3JzWzBdKSkKIAorICAgICAgICBkZWYgdGVzdF92ZXJzaW9uX2Jhc2ljKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBCYXNpYyB0ZXN0cyBmb3IgU1NMU29ja2V0LnZlcnNpb24oKS4KKyAgICAgICAgICAgIE1vcmUgdGVzdHMgYXJlIGRvbmUgaW4gdGhlIHRlc3RfcHJvdG9jb2xfKigpIG1ldGhvZHMuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICB3aXRoIFRocmVhZGVkRWNob1NlcnZlcihDRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1GYWxzZSkgYXMgc2VydmVyOgorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocy52ZXJzaW9uKCksIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMudmVyc2lvbigpLCAiVExTdjEiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocy52ZXJzaW9uKCksIE5vbmUpCisKICAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAidGVzdCByZXF1aXJlcyBFQ0RILWVuYWJsZWQgT3BlblNTTCIpCiAgICAgICAgIGRlZiB0ZXN0X2RlZmF1bHRfZWNkaF9jdXJ2ZShzZWxmKToKICAgICAgICAgICAgICMgSXNzdWUgIzIxMDE1OiBlbGxpcHRpYyBjdXJ2ZS1iYXNlZCBEaWZmaWUgSGVsbG1hbiBrZXkgZXhjaGFuZ2UKQEAgLTI3MzIsNiArMzA1Niw1NSBAQAogICAgICAgICAgICAgaWYgIkFESCIgbm90IGluIHBhcnRzIGFuZCAiRURIIiBub3QgaW4gcGFydHMgYW5kICJESEUiIG5vdCBpbiBwYXJ0czoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vbi1ESCBjaXBoZXI6ICIgKyBjaXBoZXJbMF0pCiAKKyAgICAgICAgZGVmIHRlc3Rfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgICAgICMgc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpIGlzIE5vbmUgdW5sZXNzIEFMUE4gaXMgdXNlZC4KKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY2xpZW50X2FscG5fcHJvdG9jb2wnXSwgTm9uZSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX0FMUE4sICJBTFBOIHN1cHBvcnQgcmVxdWlyZWQiKQorICAgICAgICBkZWYgdGVzdF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2lmX3NlcnZlcl91c2VzX2FscG4oc2VsZik6CisgICAgICAgICAgICAjIHNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSBpcyBOb25lIHVubGVzcyBBTFBOIGlzIHVzZWQgYnkgdGhlIGNsaWVudC4KKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfYWxwbl9wcm90b2NvbHMoWydmb28nLCAnYmFyJ10pCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGF0c1snY2xpZW50X2FscG5fcHJvdG9jb2wnXSwgTm9uZSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX0FMUE4sICJBTFBOIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICBkZWYgdGVzdF9hbHBuX3Byb3RvY29scyhzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9wcm90b2NvbHMgPSBbJ2ZvbycsICdiYXInLCAnbWlsa3NoYWtlJ10KKyAgICAgICAgICAgIHByb3RvY29sX3Rlc3RzID0gWworICAgICAgICAgICAgICAgIChbJ2ZvbycsICdiYXInXSwgJ2ZvbycpLAorICAgICAgICAgICAgICAgIChbJ2JhcicsICdmb28nXSwgJ2ZvbycpLAorICAgICAgICAgICAgICAgIChbJ21pbGtzaGFrZSddLCAnbWlsa3NoYWtlJyksCisgICAgICAgICAgICAgICAgKFsnaHR0cC8zLjAnLCAnaHR0cC80LjAnXSwgTm9uZSkKKyAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGZvciBjbGllbnRfcHJvdG9jb2xzLCBleHBlY3RlZCBpbiBwcm90b2NvbF90ZXN0czoKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKHNlcnZlcl9wcm90b2NvbHMpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9hbHBuX3Byb3RvY29scyhjbGllbnRfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorCisgICAgICAgICAgICAgICAgbXNnID0gImZhaWxlZCB0cnlpbmcgJXMgKHMpIGFuZCAlcyAoYykuXG4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAid2FzIGV4cGVjdGluZyAlcywgYnV0IGdvdCAlJXMgZnJvbSB0aGUgJSVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN0cihzZXJ2ZXJfcHJvdG9jb2xzKSwgc3RyKGNsaWVudF9wcm90b2NvbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIGNsaWVudF9yZXN1bHQgPSBzdGF0c1snY2xpZW50X2FscG5fcHJvdG9jb2wnXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xpZW50X3Jlc3VsdCwgZXhwZWN0ZWQsIG1zZyAlIChjbGllbnRfcmVzdWx0LCAiY2xpZW50IikpCisgICAgICAgICAgICAgICAgc2VydmVyX3Jlc3VsdCA9IHN0YXRzWydzZXJ2ZXJfYWxwbl9wcm90b2NvbHMnXVstMV0gXAorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oc3RhdHNbJ3NlcnZlcl9hbHBuX3Byb3RvY29scyddKSBlbHNlICdub3RoaW5nJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3Jlc3VsdCwgZXhwZWN0ZWQsIG1zZyAlIChzZXJ2ZXJfcmVzdWx0LCAic2VydmVyIikpCisKICAgICAgICAgZGVmIHRlc3Rfc2VsZWN0ZWRfbnBuX3Byb3RvY29sKHNlbGYpOgogICAgICAgICAgICAgIyBzZWxlY3RlZF9ucG5fcHJvdG9jb2woKSBpcyBOb25lIHVubGVzcyBOUE4gaXMgdXNlZAogICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKQEAgLTI4NzIsNiArMzI0NSwyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uLCAnVExTVjFfQUxFUlRfSU5URVJOQUxfRVJST1InKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiVHlwZUVycm9yIiwgc3RkZXJyLmdldHZhbHVlKCkpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2hhcmVkX2NpcGhlcnMoc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuc2V0X2NpcGhlcnMoIlJDNCIpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfY2lwaGVycygiQUVTOlJDNCIpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBjaXBoZXJzID0gc3RhdHNbJ3NlcnZlcl9zaGFyZWRfY2lwaGVycyddWzBdCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGNpcGhlcnMpLCAwKQorICAgICAgICAgICAgZm9yIG5hbWUsIHRsc192ZXJzaW9uLCBiaXRzIGluIGNpcGhlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiUkM0IiwgbmFtZS5zcGxpdCgiLSIpKQorCiAgICAgICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfYWZ0ZXJfY2xvc2VfcmFpc2VzX3ZhbHVlcnJvcihzZWxmKToKICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECkBAIC0yODg3LDIxICszMjc0LDQ2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy5yZWFkLCAxMDI0KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMud3JpdGUsIGInaGVsbG8nKQogCisgICAgICAgIGRlZiB0ZXN0X3NlbmRmaWxlKHNlbGYpOgorICAgICAgICAgICAgVEVTVF9EQVRBID0gYiJ4IiAqIDUxMgorICAgICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoVEVTVF9EQVRBKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCwgY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5yZWN2KDEwMjQpLCBURVNUX0RBVEEpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICBwbGF0cyA9IHsKICAgICAgICAgICAgICdMaW51eCc6IHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbiwKICAgICAgICAgICAgICdNYWMnOiBwbGF0Zm9ybS5tYWNfdmVyLAogICAgICAgICAgICAgJ1dpbmRvd3MnOiBwbGF0Zm9ybS53aW4zMl92ZXIsCiAgICAgICAgIH0KLSAgICAgICAgZm9yIG5hbWUsIGZ1bmMgaW4gcGxhdHMuaXRlbXMoKToKLSAgICAgICAgICAgIHBsYXQgPSBmdW5jKCkKLSAgICAgICAgICAgIGlmIHBsYXQgYW5kIHBsYXRbMF06Ci0gICAgICAgICAgICAgICAgcGxhdCA9ICclcyAlcicgJSAobmFtZSwgcGxhdCkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGxhdCA9IHJlcHIocGxhdGZvcm0ucGxhdGZvcm0oKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCisgICAgICAgICAgICAgICAgJ2lnbm9yZScsCisgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKKyAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIG5hbWUsIGZ1bmMgaW4gcGxhdHMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBwbGF0ID0gZnVuYygpCisgICAgICAgICAgICAgICAgaWYgcGxhdCBhbmQgcGxhdFswXToKKyAgICAgICAgICAgICAgICAgICAgcGxhdCA9ICclcyAlcicgJSAobmFtZSwgcGxhdCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGxhdCA9IHJlcHIocGxhdGZvcm0ucGxhdGZvcm0oKSkKICAgICAgICAgcHJpbnQoInRlc3Rfc3NsOiB0ZXN0aW5nIHdpdGggJXIgJXIiICUKICAgICAgICAgICAgIChzc2wuT1BFTlNTTF9WRVJTSU9OLCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8pKQogICAgICAgICBwcmludCgiICAgICAgICAgIHVuZGVyICVzIiAlIHBsYXQpCkBAIC0yOTIwLDEwICszMzMyLDExIEBACiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZSAlciIgJSBmaWxlbmFtZSkKIAotICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0c10KKyAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHMsIFNTTEVycm9yVGVzdHMsIE1lbW9yeUJJT1Rlc3RzXQogCiAgICAgaWYgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRUZXN0cykKKyAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZEJJT1Rlc3RzKQogCiAgICAgaWYgX2hhdmVfdGhyZWFkczoKICAgICAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0YXJ0ZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5CmluZGV4IDQzYWJmOWIuLmY1OTI1MmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5CkBAIC0zMCw4ICszMCw1IEBACiAgICAgICAgICAgICBzdGFydGZpbGUoZW1wdHkpCiAgICAgICAgICAgICBzdGFydGZpbGUoZW1wdHksICJvcGVuIikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RDYXNlKQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQppbmRleCBhZjZjZWQ0Li5mMWE1OTM4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGltcG9ydF9mcmVzaF9tb2R1bGUKIAogY19zdGF0ID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnc3RhdCcsIGZyZXNoPVsnX3N0YXQnXSkKQEAgLTUyLDYgKzUzLDI2IEBACiAgICAgICAgICdTX0lXT1RIJzogMG8wMDIsCiAgICAgICAgICdTX0lYT1RIJzogMG8wMDF9CiAKKyAgICAjIGRlZmluZWQgYnkgdGhlIFdpbmRvd3MgQVBJIGRvY3VtZW50YXRpb24KKyAgICBmaWxlX2F0dHJpYnV0ZXMgPSB7CisgICAgICAgICdGSUxFX0FUVFJJQlVURV9BUkNISVZFJzogMzIsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9DT01QUkVTU0VEJzogMjA0OCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0RFVklDRSc6IDY0LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZJzogMTYsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQnOiAxNjM4NCwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX0hJRERFTic6IDIsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNJzogMzI3NjgsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9OT1JNQUwnOiAxMjgsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9OT1RfQ09OVEVOVF9JTkRFWEVEJzogODE5MiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEnOiAxMzEwNzIsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9PRkZMSU5FJzogNDA5NiwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1JFQURPTkxZJzogMSwKKyAgICAgICAgJ0ZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQnOiAxMDI0LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUnOiA1MTIsCisgICAgICAgICdGSUxFX0FUVFJJQlVURV9TWVNURU0nOiA0LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfVEVNUE9SQVJZJzogMjU2LAorICAgICAgICAnRklMRV9BVFRSSUJVVEVfVklSVFVBTCc6IDY1NTM2fQorCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5yZW1vdmUoVEVTVEZOKQpAQCAtMTg1LDYgKzIwNiwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxhYmxlKGZ1bmMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKDApLCAwKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZJTEVfQVRUUklCVVRFXyogY29uc3RhbnRzIGFyZSBXaW4zMiBzcGVjaWZpYyIpCisgICAgZGVmIHRlc3RfZmlsZV9hdHRyaWJ1dGVfY29uc3RhbnRzKHNlbGYpOgorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzb3J0ZWQoc2VsZi5maWxlX2F0dHJpYnV0ZXMuaXRlbXMoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnN0YXRtb2QsIGtleSksIGtleSkKKyAgICAgICAgICAgIG1vZHZhbHVlID0gZ2V0YXR0cihzZWxmLnN0YXRtb2QsIGtleSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIG1vZHZhbHVlLCBrZXkpCisKIAogY2xhc3MgVGVzdEZpbGVtb2RlQ1N0YXQoVGVzdEZpbGVtb2RlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc3RhdG1vZCA9IGNfc3RhdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmluZy5weQppbmRleCAzMGZlNDJhLi41ZDM3ZTE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZy5weQpAQCAtMSwxOSArMSwyMiBAQAogaW1wb3J0IHVuaXR0ZXN0LCBzdHJpbmcKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIE1vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYXR0cnMoc2VsZik6Ci0gICAgICAgIHN0cmluZy53aGl0ZXNwYWNlCi0gICAgICAgIHN0cmluZy5hc2NpaV9sb3dlcmNhc2UKLSAgICAgICAgc3RyaW5nLmFzY2lpX3VwcGVyY2FzZQotICAgICAgICBzdHJpbmcuYXNjaWlfbGV0dGVycwotICAgICAgICBzdHJpbmcuZGlnaXRzCi0gICAgICAgIHN0cmluZy5oZXhkaWdpdHMKLSAgICAgICAgc3RyaW5nLm9jdGRpZ2l0cwotICAgICAgICBzdHJpbmcucHVuY3R1YXRpb24KLSAgICAgICAgc3RyaW5nLnByaW50YWJsZQorICAgICAgICAjIFdoaWxlIHRoZSBleGFjdCBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlc2UgYXR0cmlidXRlcyBpcyBub3QKKyAgICAgICAgIyB0ZWNobmljYWxseSBwYXJ0IG9mIHRoZSAibGFuZ3VhZ2Ugc3BlYyIsIGluIHByYWN0aWNlIHRoZXJlIGlzIGFsbW9zdAorICAgICAgICAjIGNlcnRhaW5seSB1c2VyIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoZSBvcmRlciwgc28gZGUtZmFjdG8gaXQgKmlzKgorICAgICAgICAjIHBhcnQgb2YgdGhlIHNwZWMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLndoaXRlc3BhY2UsICcgXHRcblxyXHgwYlx4MGMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5hc2NpaV9sb3dlcmNhc2UsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmFzY2lpX3VwcGVyY2FzZSwgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuYXNjaWlfbGV0dGVycywgc3RyaW5nLmFzY2lpX2xvd2VyY2FzZSArIHN0cmluZy5hc2NpaV91cHBlcmNhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmRpZ2l0cywgJzAxMjM0NTY3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5oZXhkaWdpdHMsIHN0cmluZy5kaWdpdHMgKyAnYWJjZGVmQUJDREVGJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcub2N0ZGlnaXRzLCAnMDEyMzQ1NjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5wdW5jdHVhdGlvbiwgJyEiIyQlJlwnKCkqKywtLi86Ozw9Pj9AW1xcXV5fYHt8fX4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5wcmludGFibGUsIHN0cmluZy5kaWdpdHMgKyBzdHJpbmcuYXNjaWlfbG93ZXJjYXNlICsgc3RyaW5nLmFzY2lpX3VwcGVyY2FzZSArIHN0cmluZy5wdW5jdHVhdGlvbiArIHN0cmluZy53aGl0ZXNwYWNlKQogCiAgICAgZGVmIHRlc3RfY2Fwd29yZHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyaW5nLmNhcHdvcmRzKCdhYmMgZGVmIGdoaScpLCAnQWJjIERlZiBHaGknKQpAQCAtNDMsOCArNDYsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17Zm9ybWF0X3N0cmluZ30tIiwgZm9ybWF0X3N0cmluZz0ndGVzdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICctdGVzdC0nKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgZm10LmZvcm1hdCwgIi17Zm9ybWF0X3N0cmluZ30tIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KGFyZz0ndGVzdCcsIGZvcm1hdF9zdHJpbmc9Ii17YXJnfS0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnLXRlc3QtJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiZm9ybWF0X3N0cmluZyIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KGFyZz0ndGVzdCcsIGZvcm1hdF9zdHJpbmc9Ii17YXJnfS0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy10ZXN0LScpCiAKICAgICBkZWYgdGVzdF9hdXRvX251bWJlcmluZyhzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCkBAIC0xODEsOCArMTg1LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigicmVjdXJzaW9uIiwgc3RyKGVyci5leGNlcHRpb24pKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNb2R1bGVUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmluZ3ByZXAucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ3ByZXAucHkKaW5kZXggZTc2MzYzNS4uZDRiNGExMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJpbmdwcmVwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5ncHJlcC5weQpAQCAtMiw3ICsyLDYgQEAKICMgU2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aGVtLCB0aGlzIHRlc3QgY2hlY2tzIG9ubHkgYSBmZXcgY29kZSBwb2ludHMuCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGZyb20gc3RyaW5ncHJlcCBpbXBvcnQgKgogCkBAIC04OSw4ICs4OCw1IEBACiAgICAgICAgICMgICAgIGgudXBkYXRlKGRhdGEpCiAgICAgICAgICMgICAgIHByaW50IHAsIGguaGV4ZGlnZXN0KCkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFN0cmluZ3ByZXBUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQppbmRleCBkMDEzMjJmLi44N2NmZmU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQpAQCAtMzIsNyArMzIsNiBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZXN0LnN1cHBvcnQKIAogCiBURU1QTEFURSA9IHIiIiIjIGNvZGluZzogJXMKQEAgLTE5OSw4ICsxOTgsNSBAQAogICAgICAgICBzZWxmLmNoZWNrX2VuY29kaW5nKCJsYXRpbjkiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQppbmRleCAyYTZmM2Y4Li4zNDZlMmM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKQEAgLTU3OCwxOCArNTc4LDUgQEAKICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX1RJTUUsIGxvY2FsZV9pbmZvKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgZ2V0bGFuZ19UZXN0cywKLSAgICAgICAgTG9jYWxlVGltZV9UZXN0cywKLSAgICAgICAgVGltZVJFVGVzdHMsCi0gICAgICAgIFN0cnB0aW1lVGVzdHMsCi0gICAgICAgIFN0cnB0aW1lMTJBTVBNVGVzdHMsCi0gICAgICAgIEp1bGlhblRlc3RzLAotICAgICAgICBDYWxjdWxhdGlvblRlc3RzLAotICAgICAgICBDYWNoZVRlc3RzCi0gICAgKQotCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydG9kLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkKaW5kZXggNDFiNmU1Zi4uMjcyNzUxNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkKQEAgLTQyOSw4ICs0MjksNSBAQAogICAgICAgICBmb3IgcyBpbiB0ZXN0X3N0cmluZ3M6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0cnRvZChzKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChTdHJ0b2RUZXN0cykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQppbmRleCAwMTA3ZWViLi5lZmJkYmZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQpAQCAtNjYwLDggKzY2MCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RtZW1iZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RtZW1iZXJzLnB5CmluZGV4IDFjOTMxYWUuLjU3ZWM0NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0bWVtYmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdG1lbWJlcnMucHkKQEAgLTE0MCw4ICsxNDAsNSBAQAogICAgICAgICAgICAgdHMuVF9VU0hPUlQgPSBVU0hSVF9NQVgrMQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3RzZXEucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weQppbmRleCAzNTNkMGVhLi4zZWNiMjdkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgU3RydWN0U2VxVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMjMsOCArMTIyLDUgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRbc3RhcnQ6c3RvcDpzdGVwXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFtzdGFydDpzdG9wOnN0ZXBdKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3RydWN0U2VxVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CmluZGV4IGUxYjhjMzYuLmZmMjAxMGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKQEAgLTM5MSw3ICszOTEsNyBAQAogICAgICAgICBweXRob25fZGlyLCBweXRob25fYmFzZSA9IHNlbGYuX3NwbGl0X3B5dGhvbl9wYXRoKCkKICAgICAgICAgYWJzX3B5dGhvbiA9IG9zLnBhdGguam9pbihweXRob25fZGlyLCBweXRob25fYmFzZSkKICAgICAgICAgcmVsX3B5dGhvbiA9IG9zLnBhdGguam9pbihvcy5jdXJkaXIsIHB5dGhvbl9iYXNlKQotICAgICAgICB3aXRoIHNjcmlwdF9oZWxwZXIudGVtcF9kaXIoKSBhcyB3cm9uZ19kaXI6CisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHdyb25nX2RpcjoKICAgICAgICAgICAgICMgQmVmb3JlIGNhbGxpbmcgd2l0aCBhbiBhYnNvbHV0ZSBwYXRoLCBjb25maXJtIHRoYXQgdXNpbmcgYQogICAgICAgICAgICAgIyByZWxhdGl2ZSBwYXRoIGZhaWxzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCkBAIC0xMjI5LDYgKzEyMjksMTAyIEBACiAgICAgICAgIGZkc19hZnRlcl9leGNlcHRpb24gPSBvcy5saXN0ZGlyKGZkX2RpcmVjdG9yeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmZHNfYmVmb3JlX3BvcGVuLCBmZHNfYWZ0ZXJfZXhjZXB0aW9uKQogCisKK2NsYXNzIFJ1bkZ1bmNUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgIGRlZiBydW5fcHl0aG9uKHNlbGYsIGNvZGUsICoqa3dhcmdzKToKKyAgICAgICAgIiIiUnVuIFB5dGhvbiBjb2RlIGluIGEgc3VicHJvY2VzcyB1c2luZyBzdWJwcm9jZXNzLnJ1biIiIgorICAgICAgICBhcmd2ID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCBjb2RlXQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5ydW4oYXJndiwgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5jb2RlKHNlbGYpOgorICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHNlcXVlbmNlIGFyZ3VtZW50CisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCJpbXBvcnQgc3lzOyBzeXMuZXhpdCg0NykiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwLnJldHVybmNvZGUsIDQ3KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgICAgIGNwLmNoZWNrX3JldHVybmNvZGUoKQorCisgICAgZGVmIHRlc3RfY2hlY2soc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpIGFzIGM6CisgICAgICAgICAgICBzZWxmLnJ1bl9weXRob24oImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSIsIGNoZWNrPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ucmV0dXJuY29kZSwgNDcpCisKKyAgICBkZWYgdGVzdF9jaGVja196ZXJvKHNlbGYpOgorICAgICAgICAjIGNoZWNrX3JldHVybmNvZGUgc2hvdWxkbid0IHJhaXNlIHdoZW4gcmV0dXJuY29kZSBpcyB6ZXJvCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCJpbXBvcnQgc3lzOyBzeXMuZXhpdCgwKSIsIGNoZWNrPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3AucmV0dXJuY29kZSwgMCkKKworICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgcnVuKCkgZnVuY3Rpb24gd2l0aCB0aW1lb3V0IGFyZ3VtZW50OyB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY2hpbGQKKyAgICAgICAgIyBwcm9jZXNzIGdldHMga2lsbGVkIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4gIElmIHRoZSBjaGlsZCBpc24ndAorICAgICAgICAjIGtpbGxlZCwgdGhpcyBjYWxsIHdpbGwgZGVhZGxvY2sgc2luY2Ugc3VicHJvY2Vzcy5ydW4gd2FpdHMgZm9yIHRoZQorICAgICAgICAjIGNoaWxkLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQpOgorICAgICAgICAgICAgc2VsZi5ydW5fcHl0aG9uKCJ3aGlsZSBUcnVlOiBwYXNzIiwgdGltZW91dD0wLjAwMDEpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlX3N0ZG91dChzZWxmKToKKyAgICAgICAgIyBjYXB0dXJlIHN0ZG91dCB3aXRoIHplcm8gcmV0dXJuIGNvZGUKKyAgICAgICAgY3AgPSBzZWxmLnJ1bl9weXRob24oInByaW50KCdCREZMJykiLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEluKGInQkRGTCcsIGNwLnN0ZG91dCkKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVfc3RkZXJyKHNlbGYpOgorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigiaW1wb3J0IHN5czsgc3lzLnN0ZGVyci53cml0ZSgnQkRGTCcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ0JERkwnLCBjcC5zdGRlcnIpCisKKyAgICBkZWYgdGVzdF9jaGVja19vdXRwdXRfc3RkaW5fYXJnKHNlbGYpOgorICAgICAgICAjIHJ1bigpIGNhbiBiZSBjYWxsZWQgd2l0aCBzdGRpbiBzZXQgdG8gYSBmaWxlCisgICAgICAgIHRmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0Zi5jbG9zZSkKKyAgICAgICAgdGYud3JpdGUoYidwZWFyJykKKyAgICAgICAgdGYuc2VlaygwKQorICAgICAgICBjcCA9IHNlbGYucnVuX3B5dGhvbigKKyAgICAgICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoc3lzLnN0ZGluLnJlYWQoKS51cHBlcigpKSIsCisgICAgICAgICAgICAgICAgc3RkaW49dGYsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidQRUFSJywgY3Auc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X2lucHV0X2FyZyhzZWxmKToKKyAgICAgICAgIyBjaGVja19vdXRwdXQoKSBjYW4gYmUgY2FsbGVkIHdpdGggaW5wdXQgc2V0IHRvIGEgc3RyaW5nCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKAorICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKHN5cy5zdGRpbi5yZWFkKCkudXBwZXIoKSkiLAorICAgICAgICAgICAgICAgIGlucHV0PWIncGVhcicsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidQRUFSJywgY3Auc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3N0ZGluX3dpdGhfaW5wdXRfYXJnKHNlbGYpOgorICAgICAgICAjIHJ1bigpIHJlZnVzZXMgdG8gYWNjZXB0ICdzdGRpbicgd2l0aCAnaW5wdXQnCisgICAgICAgIHRmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0Zi5jbG9zZSkKKyAgICAgICAgdGYud3JpdGUoYidwZWFyJykKKyAgICAgICAgdGYuc2VlaygwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgIG1zZz0iRXhwZWN0ZWQgVmFsdWVFcnJvciB3aGVuIHN0ZGluIGFuZCBpbnB1dCBhcmdzIHN1cHBsaWVkLiIpIGFzIGM6CisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9weXRob24oInByaW50KCd3aWxsIG5vdCBiZSBydW4nKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49dGYsIGlucHV0PWInaGFyZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N0ZGluJywgYy5leGNlcHRpb24uYXJnc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaW5wdXQnLCBjLmV4Y2VwdGlvbi5hcmdzWzBdKQorCisgICAgZGVmIHRlc3RfY2hlY2tfb3V0cHV0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCkgYXMgYzoKKyAgICAgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCgKKyAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC53cml0ZSgnQkRGTCcpXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC5mbHVzaCgpXG4iCisgICAgICAgICAgICAgICAgICAgICAidGltZS5zbGVlcCgzNjAwKSIpLAorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlCisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBtdWNoIHRpbWUgdG8gc3RhcnQgYW5kIHByaW50LgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ub3V0cHV0LCBiJ0JERkwnKQorICAgICAgICAjIG91dHB1dCBpcyBhbGlhc2VkIHRvIHN0ZG91dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhjZXB0aW9uLnN0ZG91dCwgYidCREZMJykKKworICAgIGRlZiB0ZXN0X3J1bl9rd2FyZ3Moc2VsZik6CisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVQiXSA9ICJiYW5hbmEiCisgICAgICAgIGNwID0gc2VsZi5ydW5fcHl0aG9uKCgnaW1wb3J0IHN5cywgb3M7JworICAgICAgICAgICAgICAgICAgICAgICdzeXMuZXhpdCgzMyBpZiBvcy5nZXRlbnYoIkZSVUlUIik9PSJiYW5hbmEiIGVsc2UgMzEpJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3AucmV0dXJuY29kZSwgMzMpCisKKwogQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJQT1NJWCBzcGVjaWZpYyB0ZXN0cyIpCiBjbGFzcyBQT1NJWFByb2Nlc3NUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgogCkBAIC0yNDE3LDI0ICsyNTEzLDIwIEBACiAgICAgICAgIHN1YnByb2Nlc3MuX1BvcGVuU2VsZWN0b3IgPSBzZWxmLm9yaWdfc2VsZWN0b3IKICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlLnRlYXJEb3duKHNlbGYpCiAKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICIiIkVuc3VyZSB0aGF0IF9fYWxsX18gaXMgcG9wdWxhdGVkIHByb3Blcmx5LiIiIgorICAgICAgICBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkID0gc2V0KCgibGlzdDJjbWRsaW5lIiwpKQorICAgICAgICBleHBvcnRlZCA9IHNldChzdWJwcm9jZXNzLl9fYWxsX18pCisgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMgPSBzZXQoKQorICAgICAgICBpbXBvcnQgdHlwZXMKKyAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHN1YnByb2Nlc3MuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAodHlwZXMuTW9kdWxlVHlwZSwpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcG9zc2libGVfZXhwb3J0cy5hZGQobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBvcnRlZCwgcG9zc2libGVfZXhwb3J0cyAtIGludGVudGlvbmFsbHlfZXhjbHVkZWQpCiAKLWNsYXNzIEhlbHBlckZ1bmN0aW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIEB1bml0dGVzdC5za2lwSWYobXN3aW5kb3dzLCAiZXJybm8gYW5kIEVJTlRSIG1ha2Ugbm8gc2Vuc2Ugb24gd2luZG93cyIpCi0gICAgZGVmIHRlc3RfZWludHJfcmV0cnlfY2FsbChzZWxmKToKLSAgICAgICAgcmVjb3JkX2NhbGxzID0gW10KLSAgICAgICAgZGVmIGZha2Vfb3NfZnVuYygqYXJncyk6Ci0gICAgICAgICAgICByZWNvcmRfY2FsbHMuYXBwZW5kKGFyZ3MpCi0gICAgICAgICAgICBpZiBsZW4ocmVjb3JkX2NhbGxzKSA9PSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoZXJybm8uRUlOVFIsICJmYWtlIGludGVycnVwdGVkIHN5c3RlbSBjYWxsIikKLSAgICAgICAgICAgIHJldHVybiB0dXBsZShyZXZlcnNlZChhcmdzKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCg5OTksIDI1NiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5fZWludHJfcmV0cnlfY2FsbChmYWtlX29zX2Z1bmMsIDI1NiwgOTk5KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKDI1NiwgOTk5KV0sIHJlY29yZF9jYWxscykKLSAgICAgICAgIyBUaGlzIHRpbWUgdGhlcmUgd2lsbCBiZSBhbiBFSU5UUiBzbyBpdCB3aWxsIGxvb3Agb25jZS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoNjY2LCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5fZWludHJfcmV0cnlfY2FsbChmYWtlX29zX2Z1bmMsIDY2NikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygyNTYsIDk5OSksICg2NjYsKSwgKDY2NiwpXSwgcmVjb3JkX2NhbGxzKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKG1zd2luZG93cywgIldpbmRvd3Mtc3BlY2lmaWMgdGVzdHMiKQpAQCAtMjU0MSw5ICsyNjMzLDkgQEAKICAgICAgICAgICAgICAgICAgIFdpbjMyUHJvY2Vzc1Rlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgQ29tbWFuZFRlc3RzLAogICAgICAgICAgICAgICAgICAgUHJvY2Vzc1Rlc3RDYXNlTm9Qb2xsLAotICAgICAgICAgICAgICAgICAgSGVscGVyRnVuY3Rpb25UZXN0cywKICAgICAgICAgICAgICAgICAgIENvbW1hbmRzV2l0aFNwYWNlcywKICAgICAgICAgICAgICAgICAgIENvbnRleHRNYW5hZ2VyVGVzdHMsCisgICAgICAgICAgICAgICAgICBSdW5GdW5jVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICApCiAKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdW5pdF90ZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKaW5kZXggZTk5Y2E5ZS4uMWZiOTk2NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5kcnkucHkKQEAgLTIyLDggKzIyLDYgQEAKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuY2NvbXBpbGVyCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlcgogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy5maWxlbGlzdAotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMubXN2Y2NvbXBpbGVyCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLnRleHRfZmlsZQogICAgICAgICAgICAgaW1wb3J0IGRpc3R1dGlscy51bml4Y2NvbXBpbGVyCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CmluZGV4IDM3ZmMyZDkuLmRjM2ExNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQpAQCAtMiw3ICsyLDYgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBBOgpAQCAtMTczLDkgKzE3Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgWC5tZXRoLCBjKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U3VwZXIpCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQppbmRleCAwM2NlOWQxLi4yYzAwNDE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgZGVmIHRlc3RfYmluZF9wb3J0KHNlbGYpOgogICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHMpCi0gICAgICAgIHMubGlzdGVuKDEpCisgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgcy5jbG9zZSgpCiAKICAgICAjIFRlc3RzIGZvciB0ZW1wX2RpcigpCkBAIC0yODAsNiArMjgwLDM4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbIml0ZW0iXSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEWyJpdGVtIl0sIDEpCiAKKyAgICBjbGFzcyBSZWZDbGFzczoKKyAgICAgICAgYXR0cmlidXRlMSA9IE5vbmUKKyAgICAgICAgYXR0cmlidXRlMiA9IE5vbmUKKyAgICAgICAgX2hpZGRlbl9hdHRyaWJ1dGUxID0gTm9uZQorICAgICAgICBfX21hZ2ljXzFfXyA9IE5vbmUKKworICAgIGNsYXNzIE90aGVyQ2xhc3M6CisgICAgICAgIGF0dHJpYnV0ZTIgPSBOb25lCisgICAgICAgIGF0dHJpYnV0ZTMgPSBOb25lCisgICAgICAgIF9fbWFnaWNfMV9fID0gTm9uZQorICAgICAgICBfX21hZ2ljXzJfXyA9IE5vbmUKKworICAgIGRlZiB0ZXN0X2RldGVjdF9hcGlfbWlzbWF0Y2goc2VsZik6CisgICAgICAgIG1pc3NpbmdfaXRlbXMgPSBzdXBwb3J0LmRldGVjdF9hcGlfbWlzbWF0Y2goc2VsZi5SZWZDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk90aGVyQ2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydhdHRyaWJ1dGUxJ30sIG1pc3NpbmdfaXRlbXMpCisKKyAgICAgICAgbWlzc2luZ19pdGVtcyA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaChzZWxmLk90aGVyQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5SZWZDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2F0dHJpYnV0ZTMnLCAnX19tYWdpY18yX18nfSwgbWlzc2luZ19pdGVtcykKKworICAgIGRlZiB0ZXN0X2RldGVjdF9hcGlfbWlzbWF0Y2hfX2lnbm9yZShzZWxmKToKKyAgICAgICAgaWdub3JlID0gWydhdHRyaWJ1dGUxJywgJ2F0dHJpYnV0ZTMnLCAnX19tYWdpY18yX18nLCAnbm90X2luX2VpdGhlciddCisKKyAgICAgICAgbWlzc2luZ19pdGVtcyA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaCgKKyAgICAgICAgICAgICAgICBzZWxmLlJlZkNsYXNzLCBzZWxmLk90aGVyQ2xhc3MsIGlnbm9yZT1pZ25vcmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG1pc3NpbmdfaXRlbXMpCisKKyAgICAgICAgbWlzc2luZ19pdGVtcyA9IHN1cHBvcnQuZGV0ZWN0X2FwaV9taXNtYXRjaCgKKyAgICAgICAgICAgICAgICBzZWxmLk90aGVyQ2xhc3MsIHNlbGYuUmVmQ2xhc3MsIGlnbm9yZT1pZ25vcmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG1pc3NpbmdfaXRlbXMpCisKICAgICAjIFhYWCAtZm9sbG93cyBhIGxpc3Qgb2YgdW50ZXN0ZWQgQVBJCiAgICAgIyBtYWtlX2xlZ2FjeV9weWMKICAgICAjIGlzX3Jlc291cmNlX2VuYWJsZWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkgYi9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CmluZGV4IDMzNWI0ZGMuLmU1ZTdiODMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCBzeW10YWJsZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIFRFU1RfQ09ERSA9ICIiIgpAQCAtMTY5LDggKzE2OCw1IEBACiAgICAgICAgIHN5bWJvbHMgPSBzeW10YWJsZS5zeW10YWJsZSgiZGVmIGYoeCk6IHJldHVybiB4IiwgIj8iLCAiZXhlYyIpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5bXRhYmxlVGVzdCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQppbmRleCBhOWQzNjI4Li5hMjJjZWJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQpAQCAtMTQxLDYgKzE0MSw5IEBACiA+Pj4gZih4IGZvciB4IGluIEwsIDEpCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkIGlmIG5vdCBzb2xlIGFyZ3VtZW50Cis+Pj4gZih4IGZvciB4IGluIEwsIHkgZm9yIHkgaW4gTCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKK1N5bnRheEVycm9yOiBHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgaWYgbm90IHNvbGUgYXJndW1lbnQKID4+PiBmKCh4IGZvciB4IGluIEwpLCAxKQogWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCiAKQEAgLTU4Miw3ICs1ODUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViY2xhc3M9SW5kZW50YXRpb25FcnJvcikKIAogICAgIGRlZiB0ZXN0X2t3YXJnc19sYXN0KHNlbGYpOgotICAgICAgICBzZWxmLl9jaGVja19lcnJvcigiaW50KGJhc2U9MTAsICcyJykiLCAibm9uLWtleXdvcmQgYXJnIikKKyAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImludChiYXNlPTEwLCAnMicpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQgZm9sbG93cyBrZXl3b3JkIGFyZ3VtZW50IikKKworICAgIGRlZiB0ZXN0X2t3YXJnc19sYXN0MihzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImludCgqKntiYXNlOiAxMH0sICcyJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIikKKworICAgIGRlZiB0ZXN0X2t3YXJnc19sYXN0MyhzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImludCgqKntiYXNlOiAxMH0sICpbJzInXSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUgYXJndW1lbnQgdW5wYWNraW5nIGZvbGxvd3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmciKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3ludGF4VGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5cy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CmluZGV4IGE2ZDkyNmYuLjgzNTQ5YmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0LCB0ZXN0LnN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHN5cywgaW8sIG9zCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3VicHJvY2VzcwpAQCAtMjExLDggKzIxMSw4IEBACiAgICAgICAgICAgICBmb3IgaSBpbiAoNTAsIDEwMDApOgogICAgICAgICAgICAgICAgICMgSXNzdWUgIzUzOTI6IHN0YWNrIG92ZXJmbG93IGFmdGVyIGhpdHRpbmcgcmVjdXJzaW9uIGxpbWl0IHR3aWNlCiAgICAgICAgICAgICAgICAgc3lzLnNldHJlY3Vyc2lvbmxpbWl0KGkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgZikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvciwgZikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5zZXRyZWN1cnNpb25saW1pdChvbGRsaW1pdCkKIApAQCAtMjI1LDcgKzIyNSw3IEBACiAgICAgICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZigpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGYoKQogCiAgICAgICAgICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQoJWQpCkBAIC02MzYsNiArNjM2LDUzIEBACiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKIAorICAgIGRlZiBjX2xvY2FsZV9nZXRfZXJyb3JfaGFuZGxlcihzZWxmLCBpc29sYXRlZD1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgICMgRm9yY2UgdGhlIFBPU0lYIGxvY2FsZQorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBlbnZbIkxDX0FMTCJdID0gIkMiCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oKAorICAgICAgICAgICAgJ2ltcG9ydCBzeXMnLAorICAgICAgICAgICAgJ2RlZiBkdW1wKG5hbWUpOicsCisgICAgICAgICAgICAnICAgIHN0ZCA9IGdldGF0dHIoc3lzLCBuYW1lKScsCisgICAgICAgICAgICAnICAgIHByaW50KCIlczogJXMiICUgKG5hbWUsIHN0ZC5lcnJvcnMpKScsCisgICAgICAgICAgICAnZHVtcCgic3RkaW4iKScsCisgICAgICAgICAgICAnZHVtcCgic3Rkb3V0IiknLAorICAgICAgICAgICAgJ2R1bXAoInN0ZGVyciIpJywKKyAgICAgICAgKSkKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgY29kZV0KKyAgICAgICAgaWYgaXNvbGF0ZWQ6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLUkiKQorICAgICAgICBlbGlmIGVuY29kaW5nOgorICAgICAgICAgICAgZW52WydQWVRIT05JT0VOQ09ESU5HJ10gPSBlbmNvZGluZworICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1lbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0dXJuIHN0ZG91dAorCisgICAgZGVmIHRlc3RfY19sb2NhbGVfc3Vycm9nYXRlZXNjYXBlKHNlbGYpOgorICAgICAgICBvdXQgPSBzZWxmLmNfbG9jYWxlX2dldF9lcnJvcl9oYW5kbGVyKGlzb2xhdGVkPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRpbjogc3Vycm9nYXRlZXNjYXBlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZG91dDogc3Vycm9nYXRlZXNjYXBlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGVycjogYmFja3NsYXNocmVwbGFjZVxuJykKKworICAgICAgICAjIHJlcGxhY2UgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlcgorICAgICAgICBvdXQgPSBzZWxmLmNfbG9jYWxlX2dldF9lcnJvcl9oYW5kbGVyKGVuY29kaW5nPSc6c3RyaWN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGluOiBzdHJpY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3Rkb3V0OiBzdHJpY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RkZXJyOiBiYWNrc2xhc2hyZXBsYWNlXG4nKQorCisgICAgICAgICMgZm9yY2UgdGhlIGVuY29kaW5nCisgICAgICAgIG91dCA9IHNlbGYuY19sb2NhbGVfZ2V0X2Vycm9yX2hhbmRsZXIoZW5jb2Rpbmc9J2lzbzg4NTktMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdzdGRpbjogc3Vycm9nYXRlZXNjYXBlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZG91dDogc3Vycm9nYXRlZXNjYXBlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0ZGVycjogYmFja3NsYXNocmVwbGFjZVxuJykKKwogICAgIGRlZiB0ZXN0X2ltcGxlbWVudGF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBhcHBsaWVzIHRvIGFsbCBpbXBsZW1lbnRhdGlvbnMgZXF1YWxseS4KIApAQCAtNjYxLDcgKzcwOCw3IEBACiAgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9kZWJ1Z21hbGxvY3N0YXRzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkKLSAgICAgICAgZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKKyAgICAgICAgZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogICAgICAgICBhcmdzID0gWyctYycsICdpbXBvcnQgc3lzOyBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSddCiAgICAgICAgIHJldCwgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCphcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKGIiZnJlZSBQeURpY3RPYmplY3RzIiwgZXJyKQpAQCAtNjk4LDYgKzc0NSwyNyBAQAogICAgICAgICBjID0gc3lzLmdldGFsbG9jYXRlZGJsb2NrcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYywgcmFuZ2UoYiAtIDUwLCBiICsgNTApKQogCisgICAgZGVmIHRlc3RfaXNfZmluYWxpemluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMuaXNfZmluYWxpemluZygpLCBGYWxzZSkKKyAgICAgICAgIyBEb24ndCB1c2UgdGhlIGF0ZXhpdCBtb2R1bGUgYmVjYXVzZSBfUHlfRmluYWxpemluZyBpcyBvbmx5IHNldAorICAgICAgICAjIGFmdGVyIGNhbGxpbmcgYXRleGl0IGNhbGxiYWNrcworICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgY2xhc3MgQXRFeGl0OgorICAgICAgICAgICAgICAgIGlzX2ZpbmFsaXppbmcgPSBzeXMuaXNfZmluYWxpemluZworICAgICAgICAgICAgICAgIHByaW50ID0gcHJpbnQKKworICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByaW50KHNlbGYuaXNfZmluYWxpemluZygpLCBmbHVzaD1UcnVlKQorCisgICAgICAgICAgICAjIEtlZXAgYSByZWZlcmVuY2UgaW4gdGhlIF9fbWFpbl9fIG1vZHVsZSBuYW1lc3BhY2UsIHNvIHRoZQorICAgICAgICAgICAgIyBBdEV4aXQgZGVzdHJ1Y3RvciB3aWxsIGJlIGNhbGxlZCBhdCBQeXRob24gZXhpdAorICAgICAgICAgICAgcmVmID0gQXRFeGl0KCkKKyAgICAgICAgIiIiCisgICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQucnN0cmlwKCksIGInVHJ1ZScpCisKIAogQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKIGNsYXNzIFNpemVvZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzcwLDcgKzgzOCw3IEBACiAgICAgICAgICMgYnVmZmVyCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgYnVpbHRpbl9mdW5jdGlvbl9vcl9tZXRob2QKLSAgICAgICAgY2hlY2sobGVuLCBzaXplKCczUCcpKSAjIFhYWCBjaGVjayBsYXlvdXQKKyAgICAgICAgY2hlY2sobGVuLCBzaXplKCc0UCcpKSAjIFhYWCBjaGVjayBsYXlvdXQKICAgICAgICAgIyBieXRlYXJyYXkKICAgICAgICAgc2FtcGxlcyA9IFtiJycsIGIndScqMTAwMDAwXQogICAgICAgICBmb3Igc2FtcGxlIGluIHNhbXBsZXM6CkBAIC04NzQsNyArOTQyLDcgQEAKICAgICAgICAgICAgIGNoZWNrKGJhciwgc2l6ZSgnUFAnKSkKICAgICAgICAgIyBnZW5lcmF0b3IKICAgICAgICAgZGVmIGdldF9nZW4oKTogeWllbGQgMQotICAgICAgICBjaGVjayhnZXRfZ2VuKCksIHNpemUoJ1BiMlAnKSkKKyAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQYjJQUFAnKSkKICAgICAgICAgIyBpdGVyYXRvcgogICAgICAgICBjaGVjayhpdGVyKCdhYmMnKSwgc2l6ZSgnbFAnKSkKICAgICAgICAgIyBjYWxsYWJsZS1pdGVyYXRvcgpAQCAtOTI4LDcgKzk5Niw3IEBACiAgICAgICAgICMgZnJvemVuc2V0CiAgICAgICAgIFB5U2V0X01JTlNJWkUgPSA4CiAgICAgICAgIHNhbXBsZXMgPSBbW10sIHJhbmdlKDEwKSwgcmFuZ2UoNTApXQotICAgICAgICBzID0gc2l6ZSgnM24yUCcgKyBQeVNldF9NSU5TSVpFKiduUCcgKyAnblAnKQorICAgICAgICBzID0gc2l6ZSgnM25QJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICcyblAnKQogICAgICAgICBmb3Igc2FtcGxlIGluIHNhbXBsZXM6CiAgICAgICAgICAgICBtaW51c2VkID0gbGVuKHNhbXBsZSkKICAgICAgICAgICAgIGlmIG1pbnVzZWQgPT0gMDogdG1wID0gMQpAQCAtOTU3LDkgKzEwMjUsOSBAQAogICAgICAgICAjIHN0YXRpYyB0eXBlOiBQeVR5cGVPYmplY3QKICAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSVAnKQogICAgICAgICBjaGVjayhpbnQsIHMpCi0gICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5TnVtYmVyTWV0aG9kcyArIFB5TWFwcGluZ01ldGhvZHMgKworICAgICAgICAjIChQeVR5cGVPYmplY3QgKyBQeUFzeW5jTWV0aG9kcyArIFB5TnVtYmVyTWV0aG9kcyArIFB5TWFwcGluZ01ldGhvZHMgKwogICAgICAgICAjICBQeVNlcXVlbmNlTWV0aG9kcyArIFB5QnVmZmVyUHJvY3MgKyA0UCkKLSAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSVAnKSArIHN0cnVjdC5jYWxjc2l6ZSgnMzRQIDNQIDEwUCAyUCA0UCcpCisgICAgICAgIHMgPSB2c2l6ZSgnUDJuMTdQbDRQbjlQbjExUElQJykgKyBzdHJ1Y3QuY2FsY3NpemUoJzM0UCAzUCAzUCAxMFAgMlAgNFAnKQogICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCiAgICAgICAgIHMgKz0gc3RydWN0LmNhbGNzaXplKCIyblBuIikgKyA0KnN0cnVjdC5jYWxjc2l6ZSgibjJQIikKICAgICAgICAgIyBjbGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0cHJvZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHByb2ZpbGUucHkKaW5kZXggOTgxNmUzZS4uYmI3MWFjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0cHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXRwcm9maWxlLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBUZXN0R2V0UHJvZmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMjYwLDcgKzI1OSw2IEBACiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKICAgICAgICAgICAgICAgICB5aWVsZCBpCi0gICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCiAgICAgICAgIGRlZiBnKHApOgogICAgICAgICAgICAgZm9yIGkgaW4gZigpOgogICAgICAgICAgICAgICAgIHBhc3MKQEAgLTM3NCwxMyArMzcyLDUgQEAKICAgICBwcHJpbnQucHByaW50KGNhcHR1cmVfZXZlbnRzKGNhbGxhYmxlKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCi0gICAgICAgIFRlc3RHZXRQcm9maWxlLAotICAgICAgICBQcm9maWxlSG9va1Rlc3RDYXNlLAotICAgICAgICBQcm9maWxlU2ltdWxhdG9yVGVzdENhc2UKLSAgICApCi0KLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCA4ZWQ3MjlhLi4wOTE3YzNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQpAQCAtMzg1LDYgKzM4NSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh2YXJzWydTTyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnNbJ1NPJ10sIHZhcnNbJ0VYVF9TVUZGSVgnXSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnLCAnTGludXgtc3BlY2lmaWMgdGVzdCcpCisgICAgZGVmIHRlc3RfdHJpcGxldF9pbl9leHRfc3VmZml4KHNlbGYpOgorICAgICAgICBpbXBvcnQgY3R5cGVzLCBwbGF0Zm9ybSwgcmUKKyAgICAgICAgbWFjaGluZSA9IHBsYXRmb3JtLm1hY2hpbmUoKQorICAgICAgICBzdWZmaXggPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0VYVF9TVUZGSVgnKQorICAgICAgICBpZiByZS5tYXRjaCgnKGFhcmNoNjR8YXJtfG1pcHN8cHBjfHBvd2VycGN8czM5MHxzcGFyYyknLCBtYWNoaW5lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQorICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CisgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4KQorICAgICAgICAgICAgZWxzZTogIyA4IGJ5dGUgcG9pbnRlciBzaXplCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudS5zbycpLCBzdWZmaXgpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdPUyBYLXNwZWNpZmljIHRlc3QnKQorICAgIGRlZiB0ZXN0X29zeF9leHRfc3VmZml4KHNlbGYpOgorICAgICAgICBzdWZmaXggPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0VYVF9TVUZGSVgnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCctZGFyd2luLnNvJyksIHN1ZmZpeCkKIAogY2xhc3MgTWFrZWZpbGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzbG9nLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNsb2cucHkKaW5kZXggYjdmZDJiZC4uNmY5MDJmMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNsb2cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNsb2cucHkKQEAgLTM2LDggKzM2LDUgQEAKICAgICAgICAgc3lzbG9nLm9wZW5sb2coKQogICAgICAgICBzeXNsb2cuc3lzbG9nKCd0ZXN0IG1lc3NhZ2UgZnJvbSBweXRob24gdGVzdF9zeXNsb2cnKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQppbmRleCAzMDkxY2U3Li4xNDEyY2FlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CkBAIC0yLDExICsyLDE0IEBACiBpbXBvcnQgb3MKIGltcG9ydCBpbwogZnJvbSBoYXNobGliIGltcG9ydCBtZDUKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKIAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QubW9jawogaW1wb3J0IHRhcmZpbGUKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCiAKICMgQ2hlY2sgZm9yIG91ciBjb21wcmVzc2lvbiBtb2R1bGVzLgogdHJ5OgpAQCAtMjg1LDYgKzI4OCwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKGIncGF4JyArIChiJy8xMjMnICogMTI1KSArIGInL2xvbmdsaW5rIGxpbmsgdG8gcGF4JyArCiAgICAgICAgICAgICAgICAgICAgICAgKGInLzEyMycgKiAxMjUpICsgYicvbG9uZ25hbWUnLCBvdXQpCiAKKyAgICBkZWYgdGVzdF9saXN0X21lbWJlcnMoc2VsZik6CisgICAgICAgIHRpbyA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLCAnYXNjaWknLCBuZXdsaW5lPSdcbicpCisgICAgICAgIGRlZiBtZW1iZXJzKHRhcik6CisgICAgICAgICAgICBmb3IgdGFyaW5mbyBpbiB0YXIuZ2V0bWVtYmVycygpOgorICAgICAgICAgICAgICAgIGlmICdyZWcnIGluIHRhcmluZm8ubmFtZToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgdGFyaW5mbworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3N0ZG91dCcsIHRpbyk6CisgICAgICAgICAgICBzZWxmLnRhci5saXN0KHZlcmJvc2U9RmFsc2UsIG1lbWJlcnM9bWVtYmVycyhzZWxmLnRhcikpCisgICAgICAgIG91dCA9IHRpby5kZXRhY2goKS5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYid1c3Rhci9yZWd0eXBlJywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKGIndXN0YXIvY29udHR5cGUnLCBvdXQpCisKIAogY2xhc3MgR3ppcExpc3RUZXN0KEd6aXBUZXN0LCBMaXN0VGVzdCk6CiAgICAgcGFzcwpAQCAtOTkwLDYgKzEwMDUsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmb2JqLmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBmb2JqLmdldHZhbHVlKCkpCiAKKyAgICBkZWYgdGVzdF9lb2ZfbWFya2VyKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBhbiBlbmQgb2YgYXJjaGl2ZSBtYXJrZXIgaXMgd3JpdHRlbiAodHdvIHplcm8gYmxvY2tzKS4KKyAgICAgICAgIyB0YXJmaWxlIGluc2lzdHMgb24gYWxpZ25pbmcgYXJjaGl2ZXMgdG8gYSAyMCAqIDUxMiBieXRlIHJlY29yZHNpemUuCisgICAgICAgICMgU28sIHdlIGNyZWF0ZSBhbiBhcmNoaXZlIHRoYXQgaGFzIGV4YWN0bHkgMTAyNDAgYnl0ZXMgd2l0aG91dCB0aGUKKyAgICAgICAgIyBtYXJrZXIsIGFuZCBoYXMgMjA0ODAgYnl0ZXMgb25jZSB0aGUgbWFya2VyIGlzIHdyaXR0ZW4uCisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRtcG5hbWUsIHNlbGYubW9kZSkgYXMgdGFyOgorICAgICAgICAgICAgdCA9IHRhcmZpbGUuVGFySW5mbygiZm9vIikKKyAgICAgICAgICAgIHQuc2l6ZSA9IHRhcmZpbGUuUkVDT1JEU0laRSAtIHRhcmZpbGUuQkxPQ0tTSVpFCisgICAgICAgICAgICB0YXIuYWRkZmlsZSh0LCBpby5CeXRlc0lPKGIiYSIgKiB0LnNpemUpKQorCisgICAgICAgIHdpdGggc2VsZi5vcGVuKHRtcG5hbWUsICJyYiIpIGFzIGZvYmo6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmb2JqLnJlYWQoKSksIHRhcmZpbGUuUkVDT1JEU0laRSAqIDIpCisKIAogY2xhc3MgV3JpdGVUZXN0KFdyaXRlVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTQzMyw2ICsxNDYxLDg4IEBACiAgICAgICAgICAgICAgICAgICAgKCJsb25nbG5rLyIgKiAxMjcpICsgImxvbmdsaW5rXyIpCiAKIAorY2xhc3MgQ3JlYXRlVGVzdChXcml0ZVRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwcmVmaXggPSAieDoiCisKKyAgICBmaWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInNwYW1lZ2dzNDIiKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayh0bXBuYW1lKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgd2l0aCBvcGVuKGNscy5maWxlX3BhdGgsICJ3YiIpIGFzIGZvYmo6CisgICAgICAgICAgICBmb2JqLndyaXRlKGIiYWFhIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKGNscy5maWxlX3BhdGgpCisKKyAgICBkZWYgdGVzdF9jcmVhdGUoc2VsZik6CisgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRtcG5hbWUsIHNlbGYubW9kZSkgYXMgdG9iajoKKyAgICAgICAgICAgIHRvYmouYWRkKHNlbGYuZmlsZV9wYXRoKQorCisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUpIGFzIHRvYmo6CisgICAgICAgICAgICBuYW1lcyA9IHRvYmouZ2V0bmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NwYW1lZ2dzNDInLCBuYW1lc1swXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9leGlzdGluZyhzZWxmKToKKyAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odG1wbmFtZSwgc2VsZi5tb2RlKSBhcyB0b2JqOgorICAgICAgICAgICAgdG9iai5hZGQoc2VsZi5maWxlX3BhdGgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhGaWxlRXhpc3RzRXJyb3IpOgorICAgICAgICAgICAgdG9iaiA9IHRhcmZpbGUub3Blbih0bXBuYW1lLCBzZWxmLm1vZGUpCisKKyAgICAgICAgd2l0aCBzZWxmLnRhcm9wZW4odG1wbmFtZSkgYXMgdG9iajoKKyAgICAgICAgICAgIG5hbWVzID0gdG9iai5nZXRuYW1lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc3BhbWVnZ3M0MicsIG5hbWVzWzBdKQorCisgICAgZGVmIHRlc3RfY3JlYXRlX3Rhcm9wZW4oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUsICJ4IikgYXMgdG9iajoKKyAgICAgICAgICAgIHRvYmouYWRkKHNlbGYuZmlsZV9wYXRoKQorCisgICAgICAgIHdpdGggc2VsZi50YXJvcGVuKHRtcG5hbWUpIGFzIHRvYmo6CisgICAgICAgICAgICBuYW1lcyA9IHRvYmouZ2V0bmFtZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NwYW1lZ2dzNDInLCBuYW1lc1swXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9leGlzdGluZ190YXJvcGVuKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lLCAieCIpIGFzIHRvYmo6CisgICAgICAgICAgICB0b2JqLmFkZChzZWxmLmZpbGVfcGF0aCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVFeGlzdHNFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lLCAieCIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYudGFyb3Blbih0bXBuYW1lKSBhcyB0b2JqOgorICAgICAgICAgICAgbmFtZXMgPSB0b2JqLmdldG5hbWVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCJzcGFtZWdnczQyIiwgbmFtZXNbMF0pCisKKworY2xhc3MgR3ppcENyZWF0ZVRlc3QoR3ppcFRlc3QsIENyZWF0ZVRlc3QpOgorICAgIHBhc3MKKworCitjbGFzcyBCejJDcmVhdGVUZXN0KEJ6MlRlc3QsIENyZWF0ZVRlc3QpOgorICAgIHBhc3MKKworCitjbGFzcyBMem1hQ3JlYXRlVGVzdChMem1hVGVzdCwgQ3JlYXRlVGVzdCk6CisgICAgcGFzcworCisKK2NsYXNzIENyZWF0ZVdpdGhYTW9kZVRlc3QoQ3JlYXRlVGVzdCk6CisKKyAgICBwcmVmaXggPSAieCIKKworICAgIHRlc3RfY3JlYXRlX3Rhcm9wZW4gPSBOb25lCisgICAgdGVzdF9jcmVhdGVfZXhpc3RpbmdfdGFyb3BlbiA9IE5vbmUKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAibGluayIpLCAiTWlzc2luZyBoYXJkbGluayBpbXBsZW1lbnRhdGlvbiIpCiBjbGFzcyBIYXJkbGlua1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGVzdCB0aGUgY3JlYXRpb24gb2YgTE5LVFlQRSAoaGFyZGxpbmspIG1lbWJlcnMgaW4gYW4gYXJjaGl2ZS4KQEAgLTIxOTEsNiArMjMwMSwxMzggQEAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX2lucHV0KCJyOmJ6MiIpCiAKIAorZGVmIHJvb3RfaXNfdWlkX2dpZF8wKCk6CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgcHdkLCBncnAKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIHB3ZC5nZXRwd3VpZCgwKVswXSAhPSAncm9vdCc6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIGdycC5nZXRncmdpZCgwKVswXSAhPSAncm9vdCc6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2Nob3duJyksICJtaXNzaW5nIG9zLmNob3duIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRldWlkJyksICJtaXNzaW5nIG9zLmdldGV1aWQiKQorY2xhc3MgTnVtZXJpY093bmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBtb2NrIHRoZSBmb2xsb3dpbmc6CisgICAgIyAgb3MuY2hvd246IHNvIHdlIGNhbiB0ZXN0IHdoYXQncyBiZWluZyBjYWxsZWQKKyAgICAjICBvcy5jaG1vZDogc28gdGhlIG1vZGVzIGFyZSBub3QgYWN0dWFsbHkgY2hhbmdlZC4gaWYgdGhleSBhcmUsIHdlIGNhbid0CisgICAgIyAgICAgICAgICAgICBkZWxldGUgdGhlIGZpbGVzL2RpcmVjdG9yaWVzCisgICAgIyAgb3MuZ2V0ZXVpZDogc28gd2UgY2FuIGxpZSBhbmQgc2F5IHdlJ3JlIHJvb3QgKHVpZCA9IDApCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9tYWtlX3Rlc3RfYXJjaGl2ZShmaWxlbmFtZV8xLCBkaXJuYW1lXzEsIGZpbGVuYW1lXzIpOgorICAgICAgICAjIHRoZSBmaWxlIGNvbnRlbnRzIHRvIHdyaXRlCisgICAgICAgIGZvYmogPSBpby5CeXRlc0lPKGIiY29udGVudCIpCisKKyAgICAgICAgIyBjcmVhdGUgYSB0YXIgZmlsZSB3aXRoIGEgZmlsZSwgYSBkaXJlY3RvcnksIGFuZCBhIGZpbGUgd2l0aGluIHRoYXQKKyAgICAgICAgIyAgZGlyZWN0b3J5LiBBc3NpZ24gdmFyaW91cyAudWlkLy5naWQgdmFsdWVzIHRvIHRoZW0KKyAgICAgICAgaXRlbXMgPSBbKGZpbGVuYW1lXzEsIDk5LCA5OCwgdGFyZmlsZS5SRUdUWVBFLCBmb2JqKSwKKyAgICAgICAgICAgICAgICAgKGRpcm5hbWVfMSwgIDc3LCA3NiwgdGFyZmlsZS5ESVJUWVBFLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgKGZpbGVuYW1lXzIsIDg4LCA4NywgdGFyZmlsZS5SRUdUWVBFLCBmb2JqKSwKKyAgICAgICAgICAgICAgICAgXQorICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0bXBuYW1lLCAndycpIGFzIHRhcmZsOgorICAgICAgICAgICAgZm9yIG5hbWUsIHVpZCwgZ2lkLCB0eXAsIGNvbnRlbnRzIGluIGl0ZW1zOgorICAgICAgICAgICAgICAgIHQgPSB0YXJmaWxlLlRhckluZm8obmFtZSkKKyAgICAgICAgICAgICAgICB0LnVpZCA9IHVpZAorICAgICAgICAgICAgICAgIHQuZ2lkID0gZ2lkCisgICAgICAgICAgICAgICAgdC51bmFtZSA9ICdyb290JworICAgICAgICAgICAgICAgIHQuZ25hbWUgPSAncm9vdCcKKyAgICAgICAgICAgICAgICB0LnR5cGUgPSB0eXAKKyAgICAgICAgICAgICAgICB0YXJmbC5hZGRmaWxlKHQsIGNvbnRlbnRzKQorCisgICAgICAgICMgcmV0dXJuIHRoZSBmdWxsIHBhdGhuYW1lIHRvIHRoZSB0YXIgZmlsZQorICAgICAgICByZXR1cm4gdG1wbmFtZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIEBjb250ZXh0bWFuYWdlcgorICAgIGRlZiBfc2V0dXBfdGVzdChtb2NrX2dldGV1aWQpOgorICAgICAgICBtb2NrX2dldGV1aWQucmV0dXJuX3ZhbHVlID0gMCAgIyBsaWUgYW5kIHNheSB3ZSdyZSByb290CisgICAgICAgIGZuYW1lID0gJ251bWVyaWMtb3duZXItdGVzdGZpbGUnCisgICAgICAgIGRpcm5hbWUgPSAnZGlyJworCisgICAgICAgICMgdGhlIG5hbWVzIHdlIHdhbnQgc3RvcmVkIGluIHRoZSB0YXJmaWxlCisgICAgICAgIGZpbGVuYW1lXzEgPSBmbmFtZQorICAgICAgICBkaXJuYW1lXzEgPSBkaXJuYW1lCisgICAgICAgIGZpbGVuYW1lXzIgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgZm5hbWUpCisKKyAgICAgICAgIyBjcmVhdGUgdGhlIHRhcmZpbGUgd2l0aCB0aGUgY29udGVudHMgd2UncmUgYWZ0ZXIKKyAgICAgICAgdGFyX2ZpbGVuYW1lID0gTnVtZXJpY093bmVyVGVzdC5fbWFrZV90ZXN0X2FyY2hpdmUoZmlsZW5hbWVfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlybmFtZV8xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV8yKQorCisgICAgICAgICMgb3BlbiB0aGUgdGFyZmlsZSBmb3IgcmVhZGluZy4geWllbGQgaXQgYW5kIHRoZSBuYW1lcyBvZiB0aGUgaXRlbXMKKyAgICAgICAgIyAgd2Ugc3RvcmVkIGludG8gdGhlIGZpbGUKKyAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFyX2ZpbGVuYW1lKSBhcyB0YXJmbDoKKyAgICAgICAgICAgIHlpZWxkIHRhcmZsLCBmaWxlbmFtZV8xLCBkaXJuYW1lXzEsIGZpbGVuYW1lXzIKKworICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG93bicpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNobW9kJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuZ2V0ZXVpZCcpCisgICAgZGVmIHRlc3RfZXh0cmFjdF93aXRoX251bWVyaWNfb3duZXIoc2VsZiwgbW9ja19nZXRldWlkLCBtb2NrX2NobW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tfY2hvd24pOgorICAgICAgICB3aXRoIHNlbGYuX3NldHVwX3Rlc3QobW9ja19nZXRldWlkKSBhcyAodGFyZmwsIGZpbGVuYW1lXzEsIF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV8yKToKKyAgICAgICAgICAgIHRhcmZsLmV4dHJhY3QoZmlsZW5hbWVfMSwgVEVNUERJUiwgbnVtZXJpY19vd25lcj1UcnVlKQorICAgICAgICAgICAgdGFyZmwuZXh0cmFjdChmaWxlbmFtZV8yICwgVEVNUERJUiwgbnVtZXJpY19vd25lcj1UcnVlKQorCisgICAgICAgICMgY29udmVydCB0byBmaWxlc3lzdGVtIHBhdGhzCisgICAgICAgIGZfZmlsZW5hbWVfMSA9IG9zLnBhdGguam9pbihURU1QRElSLCBmaWxlbmFtZV8xKQorICAgICAgICBmX2ZpbGVuYW1lXzIgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMikKKworICAgICAgICBtb2NrX2Nob3duLmFzc2VydF9oYXNfY2FsbHMoW3VuaXR0ZXN0Lm1vY2suY2FsbChmX2ZpbGVuYW1lXzEsIDk5LCA5OCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QubW9jay5jYWxsKGZfZmlsZW5hbWVfMiwgODgsIDg3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55X29yZGVyPVRydWUpCisKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuY2hvd24nKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG1vZCcpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmdldGV1aWQnKQorICAgIGRlZiB0ZXN0X2V4dHJhY3RhbGxfd2l0aF9udW1lcmljX293bmVyKHNlbGYsIG1vY2tfZ2V0ZXVpZCwgbW9ja19jaG1vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrX2Nob3duKToKKyAgICAgICAgd2l0aCBzZWxmLl9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCkgYXMgKHRhcmZsLCBmaWxlbmFtZV8xLCBkaXJuYW1lXzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV8yKToKKyAgICAgICAgICAgIHRhcmZsLmV4dHJhY3RhbGwoVEVNUERJUiwgbnVtZXJpY19vd25lcj1UcnVlKQorCisgICAgICAgICMgY29udmVydCB0byBmaWxlc3lzdGVtIHBhdGhzCisgICAgICAgIGZfZmlsZW5hbWVfMSA9IG9zLnBhdGguam9pbihURU1QRElSLCBmaWxlbmFtZV8xKQorICAgICAgICBmX2Rpcm5hbWVfMSAgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZGlybmFtZV8xKQorICAgICAgICBmX2ZpbGVuYW1lXzIgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgZmlsZW5hbWVfMikKKworICAgICAgICBtb2NrX2Nob3duLmFzc2VydF9oYXNfY2FsbHMoW3VuaXR0ZXN0Lm1vY2suY2FsbChmX2ZpbGVuYW1lXzEsIDk5LCA5OCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QubW9jay5jYWxsKGZfZGlybmFtZV8xLCA3NywgNzYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suY2FsbChmX2ZpbGVuYW1lXzIsIDg4LCA4NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFueV9vcmRlcj1UcnVlKQorCisgICAgIyB0aGlzIHRlc3QgcmVxdWlyZXMgdGhhdCB1aWQ9MCBhbmQgZ2lkPTAgcmVhbGx5IGJlIG5hbWVkICdyb290Jy4gdGhhdCdzCisgICAgIyAgYmVjYXVzZSB0aGUgdW5hbWUgYW5kIGduYW1lIGluIHRoZSB0ZXN0IGZpbGUgYXJlICdyb290JywgYW5kIGV4dHJhY3QoKQorICAgICMgIHdpbGwgbG9vayB0aGVtIHVwIHVzaW5nIHB3ZCBhbmQgZ3JwIHRvIGZpbmQgdGhlaXIgdWlkIGFuZCBnaWQsIHdoaWNoIHdlCisgICAgIyAgdGVzdCBoZXJlIHRvIGJlIDAuCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mocm9vdF9pc191aWRfZ2lkXzAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndWlkPTAsZ2lkPTAgbXVzdCBiZSBuYW1lZCAicm9vdCInKQorICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5jaG93bicpCisgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ29zLmNobW9kJykKKyAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgnb3MuZ2V0ZXVpZCcpCisgICAgZGVmIHRlc3RfZXh0cmFjdF93aXRob3V0X251bWVyaWNfb3duZXIoc2VsZiwgbW9ja19nZXRldWlkLCBtb2NrX2NobW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tfY2hvd24pOgorICAgICAgICB3aXRoIHNlbGYuX3NldHVwX3Rlc3QobW9ja19nZXRldWlkKSBhcyAodGFyZmwsIGZpbGVuYW1lXzEsIF8sIF8pOgorICAgICAgICAgICAgdGFyZmwuZXh0cmFjdChmaWxlbmFtZV8xLCBURU1QRElSLCBudW1lcmljX293bmVyPUZhbHNlKQorCisgICAgICAgICMgY29udmVydCB0byBmaWxlc3lzdGVtIHBhdGhzCisgICAgICAgIGZfZmlsZW5hbWVfMSA9IG9zLnBhdGguam9pbihURU1QRElSLCBmaWxlbmFtZV8xKQorCisgICAgICAgIG1vY2tfY2hvd24uYXNzZXJ0X2NhbGxlZF93aXRoKGZfZmlsZW5hbWVfMSwgMCwgMCkKKworICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdvcy5nZXRldWlkJykKKyAgICBkZWYgdGVzdF9rZXl3b3JkX29ubHkoc2VsZiwgbW9ja19nZXRldWlkKToKKyAgICAgICAgd2l0aCBzZWxmLl9zZXR1cF90ZXN0KG1vY2tfZ2V0ZXVpZCkgYXMgKHRhcmZsLCBmaWxlbmFtZV8xLCBfLCBfKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmZsLmV4dHJhY3QsIGZpbGVuYW1lXzEsIFRFTVBESVIsIEZhbHNlLCBUcnVlKQorCisKIGRlZiBzZXRVcE1vZHVsZSgpOgogICAgIHN1cHBvcnQudW5saW5rKFRFTVBESVIpCiAgICAgb3MubWFrZWRpcnMoVEVNUERJUikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGNsLnB5IGIvTGliL3Rlc3QvdGVzdF90Y2wucHkKaW5kZXggNjZlOWQ0OS4uNWJlNjQ1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90Y2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90Y2wucHkKQEAgLTcsOSArNyw3IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGtpbnRlciBtb2R1bGUgd2Fzbid0IGJ1aWx0LgogX3RraW50ZXIgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190a2ludGVyJykKIAotIyBNYWtlIHN1cmUgdGtpbnRlci5fZml4IHJ1bnMgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudAotdGtpbnRlciA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgndGtpbnRlcicpCi0KK2ltcG9ydCB0a2ludGVyCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRjbAogZnJvbSBfdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIApAQCAtMTMwLDkgKzEyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLHRjbC51bnNldHZhciwnYScpCiAKICAgICBkZWYgZ2V0X2ludGVnZXJzKHNlbGYpOgotICAgICAgICBpbnRlZ2VycyA9ICgwLCAxLCAtMSwgMioqMzEtMSwgLTIqKjMxKQotICAgICAgICBpZiB0Y2xfdmVyc2lvbiA+PSAoOCwgNCk6ICAjIHdpZGVJbnQgd2FzIGFkZGVkIGluIFRjbCA4LjQKLSAgICAgICAgICAgIGludGVnZXJzICs9ICgyKiozMSwgLTIqKjMxLTEsIDIqKjYzLTEsIC0yKio2MykKKyAgICAgICAgaW50ZWdlcnMgPSAoMCwgMSwgLTEsIDIqKjMxLTEsIC0yKiozMSwgMioqMzEsIC0yKiozMS0xLCAyKio2My0xLCAtMioqNjMpCiAgICAgICAgICMgYmlnbnVtIHdhcyBhZGRlZCBpbiBUY2wgOC41LCBidXQgaXRzIHN1cHBvcnQgaXMgYWJsZSBvbmx5IHNpbmNlIDguNS44CiAgICAgICAgIGlmIChnZXRfdGtfcGF0Y2hsZXZlbCgpID49ICg4LCA2LCAwLCAnZmluYWwnKSBvcgogICAgICAgICAgICAgKDgsIDUsIDgpIDw9IGdldF90a19wYXRjaGxldmVsKCkgPCAoOCwgNikpOgpAQCAtMTY1LDEwICsxNjEsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Y2wuZ2V0ZG91YmxlKCcgNDIgJyksIDQyLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGNsLmdldGRvdWJsZSgnIDQyLjUgJyksIDQyLjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGNsLmdldGRvdWJsZSg0Mi41KSwgNDIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Y2wuZ2V0ZG91YmxlKDQyKSwgNDIuMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Y2wuZ2V0ZG91YmxlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRjbC5nZXRkb3VibGUsICc0Mi41JywgJzEwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0Y2wuZ2V0ZG91YmxlLCBiJzQyLjUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRjbC5nZXRkb3VibGUsIDQyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgdGNsLmdldGRvdWJsZSwgJ2EnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBUY2xFcnJvciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjbC5nZXRkb3VibGUsICc0Mi41XDAnKQpAQCAtNDY0LDYgKzQ2MCw4IEBACiAgICAgICAgICAgICAjIFhYWCBOYU4gcmVwcmVzZW50YXRpb24gY2FuIGJlIG5vdCBwYXJzYWJsZSBieSBmbG9hdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFzc1ZhbHVlKCgxLCAnMicsICgzLjQsKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgxLCAnMicsICgzLjQsKSkgaWYgc2VsZi53YW50b2JqZWN0cyBlbHNlICcxIDIgMy40JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXNzVmFsdWUoWydhJywgWydiJywgJ2MnXV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsICgnYicsICdjJykpIGlmIHNlbGYud2FudG9iamVjdHMgZWxzZSAnYSB7YiBjfScpCiAKICAgICBkZWYgdGVzdF91c2VyX2NvbW1hbmQoc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IE5vbmUKQEAgLTUxNyw2ICs1MTUsNyBAQAogICAgICAgICAjIFhYWCBOYU4gcmVwcmVzZW50YXRpb24gY2FuIGJlIG5vdCBwYXJzYWJsZSBieSBmbG9hdCgpCiAgICAgICAgIGNoZWNrKCgpLCAnJykKICAgICAgICAgY2hlY2soKDEsICgyLCksICgzLCA0KSwgJzUgNicsICgpKSwgJzEgMiB7MyA0fSB7NSA2fSB7fScpCisgICAgICAgIGNoZWNrKFsxLCBbMixdLCBbMywgNF0sICc1IDYnLCBbXV0sICcxIDIgezMgNH0gezUgNn0ge30nKQogCiAgICAgZGVmIHRlc3Rfc3BsaXRsaXN0KHNlbGYpOgogICAgICAgICBzcGxpdGxpc3QgPSBzZWxmLmludGVycC50ay5zcGxpdGxpc3QKQEAgLTU0MiwxMiArNTQxLDE1IEBACiAgICAgICAgICAgICAoJ2EgMy40JywgKCdhJywgJzMuNCcpKSwKICAgICAgICAgICAgICgoJ2EnLCAzLjQpLCAoJ2EnLCAzLjQpKSwKICAgICAgICAgICAgICgoKSwgKCkpLAorICAgICAgICAgICAgKFtdLCAoKSksCisgICAgICAgICAgICAoWydhJywgWydiJywgJ2MnXV0sICgnYScsIFsnYicsICdjJ10pKSwKICAgICAgICAgICAgIChjYWxsKCdsaXN0JywgMSwgJzInLCAoMy40LCkpLAogICAgICAgICAgICAgICAgICgxLCAnMicsICgzLjQsKSkgaWYgc2VsZi53YW50b2JqZWN0cyBlbHNlCiAgICAgICAgICAgICAgICAgKCcxJywgJzInLCAnMy40JykpLAogICAgICAgICBdCisgICAgICAgIHRrX3BhdGNobGV2ZWwgPSBnZXRfdGtfcGF0Y2hsZXZlbCgpCiAgICAgICAgIGlmIHRjbF92ZXJzaW9uID49ICg4LCA1KToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLndhbnRvYmplY3RzIG9yIGdldF90a19wYXRjaGxldmVsKCkgPCAoOCwgNSwgNSk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi53YW50b2JqZWN0cyBvciB0a19wYXRjaGxldmVsIDwgKDgsIDUsIDUpOgogICAgICAgICAgICAgICAgICMgQmVmb3JlIDguNS41IGRpY3RzIHdlcmUgY29udmVydGVkIHRvIGxpc3RzIHRocm91Z2ggc3RyaW5nCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAoJzEyJywgJ1x1MjBhYycsICdceGUyXHg4Mlx4YWMnLCAnMy40JykKICAgICAgICAgICAgIGVsc2U6CkBAIC01NTYsOCArNTU4LDExIEBACiAgICAgICAgICAgICAgICAgKGNhbGwoJ2RpY3QnLCAnY3JlYXRlJywgMTIsICdcdTIwYWMnLCBiJ1x4ZTJceDgyXHhhYycsICgzLjQsKSksCiAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKSwKICAgICAgICAgICAgIF0KKyAgICAgICAgZGJnX2luZm8gPSAoJ3dhbnQgb2JqZWN0cz8gJXMsIFRjbCB2ZXJzaW9uOiAlcywgVGsgcGF0Y2hsZXZlbDogJXMnCisgICAgICAgICAgICAgICAgICAgICUgKHNlbGYud2FudG9iamVjdHMsIHRjbF92ZXJzaW9uLCB0a19wYXRjaGxldmVsKSkKICAgICAgICAgZm9yIGFyZywgcmVzIGluIHRlc3RjYXNlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRsaXN0KGFyZyksIHJlcywgbXNnPWFyZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRsaXN0KGFyZyksIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyZz0lYSwgJXMnICUgKGFyZywgZGJnX2luZm8pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc3BsaXRsaXN0LCAneycpCiAKICAgICBkZWYgdGVzdF9zcGxpdChzZWxmKToKQEAgLTU4OSw2ICs1OTQsOSBAQAogICAgICAgICAgICAgKCgnYScsIDMuNCksICgnYScsIDMuNCkpLAogICAgICAgICAgICAgKCgnYScsICgyLCAzLjQpKSwgKCdhJywgKDIsIDMuNCkpKSwKICAgICAgICAgICAgICgoKSwgKCkpLAorICAgICAgICAgICAgKFtdLCAoKSksCisgICAgICAgICAgICAoWydhJywgJ2IgYyddLCAoJ2EnLCAoJ2InLCAnYycpKSksCisgICAgICAgICAgICAoWydhJywgWydiJywgJ2MnXV0sICgnYScsICgnYicsICdjJykpKSwKICAgICAgICAgICAgIChjYWxsKCdsaXN0JywgMSwgJzInLCAoMy40LCkpLAogICAgICAgICAgICAgICAgICgxLCAnMicsICgzLjQsKSkgaWYgc2VsZi53YW50b2JqZWN0cyBlbHNlCiAgICAgICAgICAgICAgICAgKCcxJywgJzInLCAnMy40JykpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weQppbmRleCBlZTFjMzU3Li41MjRiYmEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weQpAQCAtMTEsNyArMTEsNyBAQAogSE9TVCA9IHN1cHBvcnQuSE9TVAogCiBkZWYgc2VydmVyKGV2dCwgc2Vydik6Ci0gICAgc2Vydi5saXN0ZW4oNSkKKyAgICBzZXJ2Lmxpc3RlbigpCiAgICAgZXZ0LnNldCgpCiAgICAgdHJ5OgogICAgICAgICBjb25uLCBhZGRyID0gc2Vydi5hY2NlcHQoKQpAQCAtMzkzLDkgKzM5Myw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYicnLmpvaW4od2FudFs6LTFdKSkKIAogCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoR2VuZXJhbFRlc3RzLCBSZWFkVGVzdHMsIFdyaXRlVGVzdHMsIE9wdGlvblRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVjdFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQppbmRleCA2NjQxMjk4Li40YTA3N2NjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKQEAgLTEyLDcgKzEyLDggQEAKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIAogCiBpZiBoYXNhdHRyKG9zLCAnc3RhdCcpOgpAQCAtMzUsMTAgKzM2LDM4IEBACiAjIGluIG9yZGVyIG9mIHRoZWlyIGFwcGVhcmFuY2UgaW4gdGhlIGZpbGUuICBUZXN0aW5nIHdoaWNoIHJlcXVpcmVzCiAjIHRocmVhZHMgaXMgbm90IGRvbmUgaGVyZS4KIAorY2xhc3MgVGVzdExvd0xldmVsSW50ZXJuYWxzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbmZlcl9yZXR1cm5fdHlwZV9zaW5nbGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhieXRlcywgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoTm9uZSkpCisKKyAgICBkZWYgdGVzdF9pbmZlcl9yZXR1cm5fdHlwZV9tdWx0aXBsZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoJycsICcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhieXRlcywgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKGInJywgYicnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKCcnLCBiJycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShiJycsICcnKQorCisgICAgZGVmIHRlc3RfaW5mZXJfcmV0dXJuX3R5cGVfbXVsdGlwbGVzX2FuZF9ub25lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHN0ciwgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKE5vbmUsICcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzdHIsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZSgnJywgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RyLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoTm9uZSwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYnl0ZXMsIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShiJycsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ5dGVzLCB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoTm9uZSwgYicnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGVtcGZpbGUuX2luZmVyX3JldHVybl90eXBlKCcnLCBOb25lLCBiJycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShiJycsIE5vbmUsICcnKQorCisKICMgQ29tbW9uIGZ1bmN0aW9uYWxpdHkuCisKIGNsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdHJfY2hlY2sgPSByZS5jb21waWxlKHIiXlthLXowLTlfLV17OH0kIikKKyAgICBiX2NoZWNrID0gcmUuY29tcGlsZShiciJeW2EtejAtOV8tXXs4fSQiKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLl93YXJuaW5nc19tYW5hZ2VyID0gc3VwcG9ydC5jaGVja193YXJuaW5ncygpCkBAIC01NSwxOCArODQsMzEgQEAKICAgICAgICAgbnByZSAgPSBuYmFzZVs6bGVuKHByZSldCiAgICAgICAgIG5zdWYgID0gbmJhc2VbbGVuKG5iYXNlKS1sZW4oc3VmKTpdCiAKKyAgICAgICAgaWYgZGlyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5hbWUpLCBzdHIgaWYgdHlwZShkaXIpIGlzIHN0ciBlbHNlIGJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCByZXR1cm4gdHlwZSIpCisgICAgICAgIGlmIHByZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuYW1lKSwgc3RyIGlmIHR5cGUocHJlKSBpcyBzdHIgZWxzZSBieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcmV0dXJuIHR5cGUiKQorICAgICAgICBpZiBzdWYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmFtZSksIHN0ciBpZiB0eXBlKHN1ZikgaXMgc3RyIGVsc2UgYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHJldHVybiB0eXBlIikKKyAgICAgICAgaWYgKGRpciwgcHJlLCBzdWYpID09IChOb25lLCBOb25lLCBOb25lKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuYW1lKSwgc3RyLCAiZGVmYXVsdCByZXR1cm4gdHlwZSBtdXN0IGJlIHN0ciIpCisKICAgICAgICAgIyBjaGVjayBmb3IgZXF1YWxpdHkgb2YgdGhlIGFic29sdXRlIHBhdGhzIQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aChuZGlyKSwgb3MucGF0aC5hYnNwYXRoKGRpciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJyVzJyBub3QgaW4gZGlyZWN0b3J5ICclcyciICUgKG5hbWUsIGRpcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJXIgbm90IGluIGRpcmVjdG9yeSAlciIgJSAobmFtZSwgZGlyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucHJlLCBwcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgJyVzJyBkb2VzIG5vdCBiZWdpbiB3aXRoICclcyciICUgKG5iYXNlLCBwcmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICVyIGRvZXMgbm90IGJlZ2luIHdpdGggJXIiICUgKG5iYXNlLCBwcmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zdWYsIHN1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSAnJXMnIGRvZXMgbm90IGVuZCB3aXRoICclcyciICUgKG5iYXNlLCBzdWYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlICVyIGRvZXMgbm90IGVuZCB3aXRoICVyIiAlIChuYmFzZSwgc3VmKSkKIAogICAgICAgICBuYmFzZSA9IG5iYXNlW2xlbihwcmUpOmxlbihuYmFzZSktbGVuKHN1ZildCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnN0cl9jaGVjay5tYXRjaChuYmFzZSksCi0gICAgICAgICAgICAgICAgICAgICAicmFuZG9tIHN0cmluZyAnJXMnIGRvZXMgbm90IG1hdGNoIF5bYS16MC05Xy1dezh9JCIKLSAgICAgICAgICAgICAgICAgICAgICUgbmJhc2UpCisgICAgICAgIGNoZWNrID0gc2VsZi5zdHJfY2hlY2sgaWYgaXNpbnN0YW5jZShuYmFzZSwgc3RyKSBlbHNlIHNlbGYuYl9jaGVjaworICAgICAgICBzZWxmLmFzc2VydFRydWUoY2hlY2subWF0Y2gobmJhc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSBjaGFyYWN0ZXJzICVyIGRvIG5vdCBtYXRjaCAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKG5iYXNlLCBjaGVjay5wYXR0ZXJuKSkKIAogCiBjbGFzcyBUZXN0RXhwb3J0cyhCYXNlVGVzdENhc2UpOgpAQCAtODIsNyArMTI0LDkgQEAKICAgICAgICAgICAgICJta3RlbXAiIDogMSwKICAgICAgICAgICAgICJUTVBfTUFYIiA6IDEsCiAgICAgICAgICAgICAiZ2V0dGVtcHByZWZpeCIgOiAxLAorICAgICAgICAgICAgImdldHRlbXBwcmVmaXhiIiA6IDEsCiAgICAgICAgICAgICAiZ2V0dGVtcGRpciIgOiAxLAorICAgICAgICAgICAgImdldHRlbXBkaXJiIiA6IDEsCiAgICAgICAgICAgICAidGVtcGRpciIgOiAxLAogICAgICAgICAgICAgInRlbXBsYXRlIiA6IDEsCiAgICAgICAgICAgICAiU3Bvb2xlZFRlbXBvcmFyeUZpbGUiIDogMSwKQEAgLTMxOSw3ICszNjMsOCBAQAogICAgICAgICAgICAgaWYgYmluOiBmbGFncyA9IHNlbGYuX2JmbGFncwogICAgICAgICAgICAgZWxzZTogICBmbGFncyA9IHNlbGYuX3RmbGFncwogCi0gICAgICAgICAgICAoc2VsZi5mZCwgc2VsZi5uYW1lKSA9IHRlbXBmaWxlLl9ta3N0ZW1wX2lubmVyKGRpciwgcHJlLCBzdWYsIGZsYWdzKQorICAgICAgICAgICAgb3V0cHV0X3R5cGUgPSB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoZGlyLCBwcmUsIHN1ZikKKyAgICAgICAgICAgIChzZWxmLmZkLCBzZWxmLm5hbWUpID0gdGVtcGZpbGUuX21rc3RlbXBfaW5uZXIoZGlyLCBwcmUsIHN1ZiwgZmxhZ3MsIG91dHB1dF90eXBlKQogCiAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgogICAgICAgICAgICAgb3Mud3JpdGUoc2VsZi5mZCwgc3RyKQpAQCAtMzI4LDkgKzM3MywxNyBAQAogICAgICAgICAgICAgc2VsZi5fY2xvc2Uoc2VsZi5mZCkKICAgICAgICAgICAgIHNlbGYuX3VubGluayhzZWxmLm5hbWUpCiAKLSAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIiwgYmluPTEpOgorICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT1Ob25lLCBzdWY9Tm9uZSwgYmluPTEpOgorICAgICAgICBvdXRwdXRfdHlwZSA9IHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShkaXIsIHByZSwgc3VmKQogICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgaWYgb3V0cHV0X3R5cGUgaXMgc3RyOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIGlmIHByZSBpcyBOb25lOgorICAgICAgICAgICAgcHJlID0gb3V0cHV0X3R5cGUoKQorICAgICAgICBpZiBzdWYgaXMgTm9uZToKKyAgICAgICAgICAgIHN1ZiA9IG91dHB1dF90eXBlKCkKICAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIGRpciwgcHJlLCBzdWYpCkBAIC0zNDQsNiArMzk3LDIzIEBACiAgICAgICAgIHNlbGYuZG9fY3JlYXRlKHByZT0iYSIsIHN1Zj0iYiIpLndyaXRlKGIiYmxhdCIpCiAgICAgICAgIHNlbGYuZG9fY3JlYXRlKHByZT0iYWEiLCBzdWY9Ii50eHQiKS53cml0ZShiImJsYXQiKQogCisgICAgZGVmIHRlc3RfYmFzaWNfd2l0aF9ieXRlc19uYW1lcyhzZWxmKToKKyAgICAgICAgIyBfbWtzdGVtcF9pbm5lciBjYW4gY3JlYXRlIGZpbGVzIHdoZW4gZ2l2ZW4gbmFtZSBwYXJ0cyBhbGwKKyAgICAgICAgIyBzcGVjaWZpZWQgYXMgYnl0ZXMuCisgICAgICAgIGRpcl9iID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHN1Zj1iIiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPWIiYSIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgc3VmPWIiYiIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kaXJfYiwgcHJlPWIiYSIsIHN1Zj1iImIiKS53cml0ZShiImJsYXQiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHByZT1iImFhIiwgc3VmPWIiLnR4dCIpLndyaXRlKGIiYmxhdCIpCisgICAgICAgICMgQ2FuJ3QgbWl4IHN0ciAmIGJpbmFyeSB0eXBlcyBpbiB0aGUgYXJncy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPSIiLCBzdWY9YiIiKS53cml0ZShiImJsYXQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZGlyX2IsIHByZT0iIikud3JpdGUoYiJibGF0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWRpcl9iLCBwcmU9YiIiLCBzdWY9IiIpLndyaXRlKGIiYmxhdCIpCisKICAgICBkZWYgdGVzdF9iYXNpY19tYW55KHNlbGYpOgogICAgICAgICAjIF9ta3N0ZW1wX2lubmVyIGNhbiBjcmVhdGUgbWFueSBmaWxlcyAoc3RvY2hhc3RpYykKICAgICAgICAgZXh0YW50ID0gbGlzdChyYW5nZShURVNUX0ZJTEVTKSkKQEAgLTQyMyw5ICs0OTMsMTAgQEAKIAogICAgIGRlZiBtYWtlX3RlbXAoc2VsZik6CiAgICAgICAgIHJldHVybiB0ZW1wZmlsZS5fbWtzdGVtcF9pbm5lcih0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS50ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLmdldHRlbXBwcmVmaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuX2Jpbl9vcGVuZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5fYmluX29wZW5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cikKIAogICAgIGRlZiB0ZXN0X2NvbGxpc2lvbl93aXRoX2V4aXN0aW5nX2ZpbGUoc2VsZik6CiAgICAgICAgICMgX21rc3RlbXBfaW5uZXIgdHJpZXMgYW5vdGhlciBuYW1lIHdoZW4gYSBmaWxlIHdpdGgKQEAgLTQ2MSw3ICs1MzIsMTIgQEAKICAgICAgICAgcCA9IHRlbXBmaWxlLmdldHRlbXBwcmVmaXgoKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBzdHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocCkgPiAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHApLCAwKQorCisgICAgICAgIHBiID0gdGVtcGZpbGUuZ2V0dGVtcHByZWZpeGIoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwYiwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocGIpLCAwKQogCiAgICAgZGVmIHRlc3RfdXNhYmxlX3RlbXBsYXRlKHNlbGYpOgogICAgICAgICAjIGdldHRlbXBwcmVmaXggcmV0dXJucyBhIHVzYWJsZSBwcmVmaXggc3RyaW5nCkBAIC00ODYsMTEgKzU2MiwxMSBAQAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9leGlzdHMoc2VsZik6CiAgICAgICAgICMgZ2V0dGVtcGRpciByZXR1cm5zIGEgZGlyZWN0b3J5IHdoaWNoIGV4aXN0cwogCi0gICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2FicyhkaXIpIG9yIGRpciA9PSBvcy5jdXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAiJXMgaXMgbm90IGFuIGFic29sdXRlIHBhdGgiICUgZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihkaXIpLAotICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIG5vdCBhIGRpcmVjdG9yeSIgJSBkaXIpCisgICAgICAgIGZvciBkIGluICh0ZW1wZmlsZS5nZXR0ZW1wZGlyKCksIHRlbXBmaWxlLmdldHRlbXBkaXJiKCkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNhYnMoZCkgb3IgZCA9PSBvcy5jdXJkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVyIGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoIiAlIGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIgaXMgbm90IGEgZGlyZWN0b3J5IiAlIGQpCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rvcnlfd3JpdGFibGUoc2VsZik6CiAgICAgICAgICMgZ2V0dGVtcGRpciByZXR1cm5zIGEgZGlyZWN0b3J5IHdyaXRhYmxlIGJ5IHRoZSB1c2VyCkBAIC01MDYsOCArNTgyLDExIEBACiAgICAgICAgICMgZ2V0dGVtcGRpciBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBvYmplY3QKICAgICAgICAgYSA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQogICAgICAgICBiID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCisgICAgICAgIGMgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgaXMgYikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0eXBlKGEpLCB0eXBlKGMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIG9zLmZzZGVjb2RlKGMpKQogCiAgICAgZGVmIHRlc3RfY2FzZV9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgICMgZ2V0dGVtcGRpciBzaG91bGQgbm90IGZsYXR0ZW4gaXRzIGNhc2UKQEAgLTUyNyw5ICs2MDYsMTcgQEAKIGNsYXNzIFRlc3RNa3N0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta3N0ZW1wKCkuIiIiCiAKLSAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CisgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPU5vbmUsIHN1Zj1Ob25lKToKKyAgICAgICAgb3V0cHV0X3R5cGUgPSB0ZW1wZmlsZS5faW5mZXJfcmV0dXJuX3R5cGUoZGlyLCBwcmUsIHN1ZikKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgICAgIGlmIG91dHB1dF90eXBlIGlzIHN0cjoKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcmIoKQorICAgICAgICBpZiBwcmUgaXMgTm9uZToKKyAgICAgICAgICAgIHByZSA9IG91dHB1dF90eXBlKCkKKyAgICAgICAgaWYgc3VmIGlzIE5vbmU6CisgICAgICAgICAgICBzdWYgPSBvdXRwdXRfdHlwZSgpCiAgICAgICAgIChmZCwgbmFtZSkgPSB0ZW1wZmlsZS5ta3N0ZW1wKGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCiAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCiAgICAgICAgIGFkaXIgPSBvcy5wYXRoLmFic3BhdGgoZGlyKQpAQCAtNTUxLDYgKzYzOCwyNCBAQAogICAgICAgICBzZWxmLmRvX2NyZWF0ZShwcmU9ImFhIiwgc3VmPSIudHh0IikKICAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPSIuIikKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX3dpdGhfYnl0ZXNfbmFtZXMoc2VsZik6CisgICAgICAgICMgbWtzdGVtcCBjYW4gY3JlYXRlIGZpbGVzIHdoZW4gZ2l2ZW4gbmFtZSBwYXJ0cyBhbGwKKyAgICAgICAgIyBzcGVjaWZpZWQgYXMgYnl0ZXMuCisgICAgICAgIGQgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBzdWY9YiIiKQorICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYSIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1kLCBzdWY9YiJiIikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImEiLCBzdWY9YiJiIikKKyAgICAgICAgc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImFhIiwgc3VmPWIiLnR4dCIpCisgICAgICAgIHNlbGYuZG9fY3JlYXRlKGRpcj1iIi4iKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9Ii4iLCBwcmU9YiJhYSIsIHN1Zj1iIi50eHQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9YiIuIiwgcHJlPSJhYSIsIHN1Zj1iIi50eHQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmRvX2NyZWF0ZShkaXI9YiIuIiwgcHJlPWIiYWEiLCBzdWY9Ii50eHQiKQorCisKICAgICBkZWYgdGVzdF9jaG9vc2VfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICAjIG1rc3RlbXAgY2FuIGNyZWF0ZSBkaXJlY3RvcmllcyBpbiBhIHVzZXItc2VsZWN0ZWQgZGlyZWN0b3J5CiAgICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQpAQCAtNTY2LDkgKzY3MSwxNyBAQAogICAgIGRlZiBtYWtlX3RlbXAoc2VsZik6CiAgICAgICAgIHJldHVybiB0ZW1wZmlsZS5ta2R0ZW1wKCkKIAotICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKKyAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9Tm9uZSwgc3VmPU5vbmUpOgorICAgICAgICBvdXRwdXRfdHlwZSA9IHRlbXBmaWxlLl9pbmZlcl9yZXR1cm5fdHlwZShkaXIsIHByZSwgc3VmKQogICAgICAgICBpZiBkaXIgaXMgTm9uZToKLSAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgaWYgb3V0cHV0X3R5cGUgaXMgc3RyOgorICAgICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyYigpCisgICAgICAgIGlmIHByZSBpcyBOb25lOgorICAgICAgICAgICAgcHJlID0gb3V0cHV0X3R5cGUoKQorICAgICAgICBpZiBzdWYgaXMgTm9uZToKKyAgICAgICAgICAgIHN1ZiA9IG91dHB1dF90eXBlKCkKICAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICB0cnk6CkBAIC01ODYsNiArNjk5LDIxIEBACiAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKHByZT0iYSIsIHN1Zj0iYiIpKQogICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShwcmU9ImFhIiwgc3VmPSIudHh0IikpCiAKKyAgICBkZWYgdGVzdF9iYXNpY193aXRoX2J5dGVzX25hbWVzKHNlbGYpOgorICAgICAgICAjIG1rZHRlbXAgY2FuIGNyZWF0ZSBkaXJlY3RvcmllcyB3aGVuIGdpdmVuIGFsbCBiaW5hcnkgcGFydHMKKyAgICAgICAgZCA9IHRlbXBmaWxlLmdldHRlbXBkaXJiKCkKKyAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQpKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYSIpKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgc3VmPWIiYiIpKQorICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPWIiYSIsIHN1Zj1iImIiKSkKKyAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImFhIiwgc3VmPWIiLnR4dCIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBvcy5ybWRpcihzZWxmLmRvX2NyZWF0ZShkaXI9ZCwgcHJlPSJhYSIsIHN1Zj1iIi50eHQiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgb3Mucm1kaXIoc2VsZi5kb19jcmVhdGUoZGlyPWQsIHByZT1iImFhIiwgc3VmPSIudHh0IikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuZG9fY3JlYXRlKGRpcj0iIiwgcHJlPWIiYWEiLCBzdWY9YiIudHh0IikpCisKICAgICBkZWYgdGVzdF9iYXNpY19tYW55KHNlbGYpOgogICAgICAgICAjIG1rZHRlbXAgY2FuIGNyZWF0ZSBtYW55IGRpcmVjdG9yaWVzIChzdG9jaGFzdGljKQogICAgICAgICBleHRhbnQgPSBsaXN0KHJhbmdlKFRFU1RfRklMRVMpKQpAQCAtMTMxMyw4ICsxNDQxLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhuYW1lKSkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkgYi9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CmluZGV4IDFiYmE3N2UuLjcwN2FhYWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQpAQCAtMTg0LDYgKzE4NCwxNiBAQAogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgNDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBbInRoaXMtaXMtYS11c2VmdWwtZmVhdHVyZS1mb3ItcmVmb3JtYXR0aW5nLSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc3RzLWZyb20tdGltLXBldGVycydseSJdKQorICAgICAgICAjIFRoZSB0ZXN0IHRlc3RzIGN1cnJlbnQgYmVoYXZpb3IgYnV0IGlzIG5vdCB0ZXN0aW5nIHBhcnRzIG9mIHRoZSBBUEkuCisgICAgICAgIGV4cGVjdCA9ICgidGhpcy18aXMtfGEtfHVzZWZ1bC18ZmVhdHVyZS18Zm9yLXwiCisgICAgICAgICAgICAgICAgICAicmVmb3JtYXR0aW5nLXxwb3N0cy18ZnJvbS18dGltLXxwZXRlcnMnbHkiKS5zcGxpdCgnfCcpCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAxLCBleHBlY3QsIGJyZWFrX2xvbmdfd29yZHM9RmFsc2UpCisgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQodGV4dCwgZXhwZWN0KQorCisgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoJ2UtbWFpbCcsIFsnZS1tYWlsJ10pCisgICAgICAgIHNlbGYuY2hlY2tfc3BsaXQoJ0plbGx5LU8nLCBbJ0plbGx5LU8nXSkKKyAgICAgICAgIyBUaGUgdGVzdCB0ZXN0cyBjdXJyZW50IGJlaGF2aW9yIGJ1dCBpcyBub3QgdGVzdGluZyBwYXJ0cyBvZiB0aGUgQVBJLgorICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KCdoYWxmLWEtY3Jvd24nLCAnaGFsZi18YS18Y3Jvd24nLnNwbGl0KCd8JykpCiAKICAgICBkZWYgdGVzdF9oeXBoZW5hdGVkX251bWJlcnMoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IGh5cGhlbmF0ZWQgbnVtYmVycyAoZWcuIGRhdGVzKSBhcmUgbm90IGJyb2tlbiBsaWtlIHdvcmRzLgpAQCAtMTk1LDYgKzIwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWxlYXNlZCBvbiAxOTk0LTAyLTE1LiddKQogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgNDAsIFsnUHl0aG9uIDEuMC4wIHdhcyByZWxlYXNlZCBvbiAxOTk0LTAxLTI2LicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24gMS4wLjEgd2FzIHJlbGVhc2VkIG9uIDE5OTQtMDItMTUuJ10pCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAxLCB0ZXh0LnNwbGl0KCksIGJyZWFrX2xvbmdfd29yZHM9RmFsc2UpCiAKICAgICAgICAgdGV4dCA9ICJJIGRvIGFsbCBteSBzaG9wcGluZyBhdCA3LTExLiIKICAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDI1LCBbIkkgZG8gYWxsIG15IHNob3BwaW5nIGF0IiwKQEAgLTIwMiw2ICsyMTMsNyBAQAogICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgMjcsIFsiSSBkbyBhbGwgbXkgc2hvcHBpbmcgYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNy0xMS4iXSkKICAgICAgICAgc2VsZi5jaGVja193cmFwKHRleHQsIDI5LCBbIkkgZG8gYWxsIG15IHNob3BwaW5nIGF0IDctMTEuIl0pCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCAxLCB0ZXh0LnNwbGl0KCksIGJyZWFrX2xvbmdfd29yZHM9RmFsc2UpCiAKICAgICBkZWYgdGVzdF9lbV9kYXNoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGV4dCB3aXRoIGVtLWRhc2hlcwpAQCAtMzI2LDYgKzMzOCwxMCBAQAogICAgICAgICBzZWxmLmNoZWNrX3NwbGl0KCJ0aGUgWyd3aWJibGUtd29iYmxlJ10gd2lkZ2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3RoZScsICcgJywgIlsnd2liYmxlLSIsICJ3b2JibGUnXSIsICcgJywgJ3dpZGdldCddKQogCisgICAgICAgICMgVGhlIHRlc3QgdGVzdHMgY3VycmVudCBiZWhhdmlvciBidXQgaXMgbm90IHRlc3RpbmcgcGFydHMgb2YgdGhlIEFQSS4KKyAgICAgICAgc2VsZi5jaGVja19zcGxpdCgid2hhdC1kJ3lvdS1jYWxsLWl0LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIndoYXQtZCd5b3UtfGNhbGwtfGl0LiIuc3BsaXQoJ3wnKSkKKwogICAgIGRlZiB0ZXN0X2Z1bmt5X3BhcmVucyAoc2VsZik6CiAgICAgICAgICMgU2Vjb25kIHBhcnQgb2YgU0YgYnVnICM1OTY0MzQ6IGxvbmcgb3B0aW9uIHN0cmluZ3MgaW5zaWRlCiAgICAgICAgICMgcGFyZW50aGVzZXMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZC5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5CmluZGV4IDYxNDQ5MDEuLmVmMzA1OWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5CkBAIC0yNTIsOSArMjUyLDUgQEAKICAgICAgICAgICAgIHBhc3MKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGhyZWFkUnVubmluZ1Rlc3RzLCBCYXJyaWVyVGVzdCwgTG9ja1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RGb3JrSW5UaHJlYWQpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkZWRfaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKaW5kZXggNGJlNjE1YS4uOWIyZDlhNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkKQEAgLTExNSwxMiArMTE1LDE4IEBACiAgICAgICAgICAgICBlcnJvcnMgPSBbXQogICAgICAgICAgICAgZG9uZV90YXNrcyA9IFtdCiAgICAgICAgICAgICBkb25lLmNsZWFyKCkKKyAgICAgICAgICAgIHQwID0gdGltZS5tb25vdG9uaWMoKQogICAgICAgICAgICAgd2l0aCBzdGFydF90aHJlYWRzKHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXRhc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShOKSk6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRvbmUud2FpdCg2MCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVycm9ycykKKyAgICAgICAgICAgIGNvbXBsZXRlZCA9IGRvbmUud2FpdCgxMCAqIDYwKQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gdDAKKyAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIiUuMWYgbXMiICUgKGR0KjFlMyksIGZsdXNoPVRydWUsIGVuZD0iICIpCisgICAgICAgICAgICBkYmdfaW5mbyA9ICdkb25lOiAlcy8lcycgJSAobGVuKGRvbmVfdGFza3MpLCBOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlcnJvcnMsIGRiZ19pbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBsZXRlZCwgZGJnX2luZm8pCiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCJPSy4iKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IDRiNzVlYTYuLjNiMTFiZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC00LDcgKzQsNyBAQAogCiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgc3RyaXBfcHl0aG9uX3N0ZGVyciwgaW1wb3J0X21vZHVsZSwgY3B5dGhvbl9vbmx5Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCkBAIC05NDUsNyArOTQ1LDcgQEAKICAgICAgICAgICAgIGRlZiBvdXRlcigpOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmVjdXJzZSgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICAgICAgdyA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PW91dGVyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CmluZGV4IGJlN2RkY2MuLmRlMGNiYzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKQEAgLTEsMjEgKzEsMzcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IGVudW0KK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHN5cwotaW1wb3J0IHBsYXRmb3JtCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgX3Rlc3RjYXBpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3Rlc3RjYXBpID0gTm9uZQorCiAKICMgTWF4IHllYXIgaXMgb25seSBsaW1pdGVkIGJ5IHRoZSBzaXplIG9mIEMgaW50LgogU0laRU9GX0lOVCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignU0laRU9GX0lOVCcpIG9yIDQKIFRJTUVfTUFYWUVBUiA9ICgxIDw8IDggKiBTSVpFT0ZfSU5UIC0gMSkgLSAxCiBUSU1FX01JTllFQVIgPSAtVElNRV9NQVhZRUFSIC0gMQotX1B5VGltZV9ST1VORF9ET1dOID0gMAotX1B5VGltZV9ST1VORF9VUCA9IDEKKworVVNfVE9fTlMgPSAxMCAqKiAzCitNU19UT19OUyA9IDEwICoqIDYKK1NFQ19UT19OUyA9IDEwICoqIDkKKworY2xhc3MgX1B5VGltZShlbnVtLkludEVudW0pOgorICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKKyAgICBST1VORF9GTE9PUiA9IDAKKyAgICAjIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpCisgICAgUk9VTkRfQ0VJTElORyA9IDEKKworQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQogCiAKIGNsYXNzIFRpbWVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC05OCwxMyArMTE0LDYgQEAKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnY29udmVyc2lvbiBzcGVjaWZpZXI6ICVyIGZhaWxlZC4nICUgZm9ybWF0KQogCi0gICAgICAgICMgSXNzdWUgIzEwNzYyOiBHdWFyZCBhZ2FpbnN0IGludmFsaWQvbm9uLXN1cHBvcnRlZCBmb3JtYXQgc3RyaW5nCi0gICAgICAgICMgc28gdGhhdCBQeXRob24gZG9uJ3QgY3Jhc2ggKFdpbmRvd3MgY3Jhc2hlcyB3aGVuIHRoZSBmb3JtYXQgc3RyaW5nCi0gICAgICAgICMgaW5wdXQgdG8gW3ddc3RyZnRpbWUgaXMgbm90IGtvc2hlci4KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCclZicpCi0KICAgICBkZWYgX2JvdW5kc19jaGVja2luZyhzZWxmLCBmdW5jKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzdHJmdGltZSgpIGNoZWNrcyB0aGUgYm91bmRzIG9mIHRoZSB2YXJpb3VzIHBhcnRzCiAgICAgICAgICMgb2YgdGhlIHRpbWUgdHVwbGUgKDAgaXMgdmFsaWQgZm9yICphbGwqIHZhbHVlcykuCkBAIC0xNjUsNiArMTc0LDE5IEBACiAgICAgZGVmIHRlc3Rfc3RyZnRpbWVfYm91bmRpbmdfY2hlY2soc2VsZik6CiAgICAgICAgIHNlbGYuX2JvdW5kc19jaGVja2luZyhsYW1iZGEgdHVwOiB0aW1lLnN0cmZ0aW1lKCcnLCB0dXApKQogCisgICAgZGVmIHRlc3Rfc3RyZnRpbWVfZm9ybWF0X2NoZWNrKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzdHJmdGltZSBkb2VzIG5vdCBjcmFzaCBvbiBpbnZhbGlkIGZvcm1hdCBzdHJpbmdzCisgICAgICAgICMgdGhhdCBtYXkgdHJpZ2dlciBhIGJ1ZmZlciBvdmVycmVhZC4gV2hlbiBub3QgdHJpZ2dlcmVkLAorICAgICAgICAjIHN0cmZ0aW1lIG1heSBzdWNjZWVkIG9yIHJhaXNlIFZhbHVlRXJyb3IgZGVwZW5kaW5nIG9uCisgICAgICAgICMgdGhlIHBsYXRmb3JtLgorICAgICAgICBmb3IgeCBpbiBbICcnLCAnQScsICclQScsICclQUEnIF06CisgICAgICAgICAgICBmb3IgeSBpbiByYW5nZSgweDAsIDB4MTApOgorICAgICAgICAgICAgICAgIGZvciB6IGluIFsgJyUnLCAnQSUnLCAnQUElJywgJyVBJScsICdBJUElJywgJyUjJyBdOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKHggKiB5ICsgeikKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKICAgICBkZWYgdGVzdF9kZWZhdWx0X3ZhbHVlc19mb3JfemVybyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB1c2luZyBhbGwgemVyb3MgdXNlcyB0aGUgcHJvcGVyIGRlZmF1bHQKICAgICAgICAgIyB2YWx1ZXMuICBObyB0ZXN0IGZvciBkYXlsaWdodCBzYXZpbmdzIHNpbmNlIHN0cmZ0aW1lKCkgZG9lcwpAQCAtNTk1LDExMiArNjE3LDY1IEBACiAgICAgZGVmIHRlc3RfdGltZV90KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lX3QKICAgICAgICAgZm9yIG9iaiwgdGltZV90LCBybmQgaW4gKAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIHplcm8KLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgIyBSb3VuZCBhd2F5IGZyb20gemVybwotICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMCwgLTEsIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjksIC0yLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDEuOSwgMiwgX1B5VGltZV9ST1VORF9VUCksCisgICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCisgICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKKyAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAogICAgICAgICApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKIAotICAgICAgICBybmQgPSBfUHlUaW1lX1JPVU5EX0RPV04KKyAgICAgICAgcm5kID0gX1B5VGltZS5ST1VORF9GTE9PUgogICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZV90LCBpbnZhbGlkLCBybmQpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1ldmFsKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1ldmFsCi0gICAgICAgIGZvciBvYmosIHRpbWV2YWwsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgemVybwotICAgICAgICAgICAgKDAsICgwLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMSwgKC0xLCAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDFlLTYsICgwLCAxKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxZS03LCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTFlLTYsICgtMSwgOTk5OTk5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtNywgKC0xLCA5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTksICgwLCA5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDAuMDAwMDA0MSwgKDAsIDQpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMTIzNDU2MCwgKDEsIDEyMzQ1NiksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMS4xMjM0NTY5LCAoMSwgMTIzNDU2KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMC4wMDAwMDQwLCAoLTEsIDk5OTk5NiksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTAuMDAwMDA0MSwgKC0xLCA5OTk5OTUpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjEyMzQ1NjAsICgtMiwgODc2NTQ0KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTYxLCAoLTIsIDg3NjU0MyksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAjIFJvdW5kIGF3YXkgZnJvbSB6ZXJvCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMSwgKC0xLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMWUtNiwgKDAsIDEpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxZS03LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xZS02LCAoLTEsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xZS03LCAoLTEsIDk5OTk5OSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwKSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoMC45OTk5OTk5LCAoMSwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDAuMDAwMDA0MSwgKDAsIDUpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxLjEyMzQ1NjAsICgxLCAxMjM0NTcpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxLjEyMzQ1NjksICgxLCAxMjM0NTcpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMC4wMDAwMDQwLCAoLTEsIDk5OTk5NiksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0wLjAwMDAwNDEsICgtMSwgOTk5OTk1KSwgX1B5VGltZV9ST1VORF9VUCksCi0gICAgICAgICAgICAoLTEuMTIzNDU2MCwgKC0yLCA4NzY1NDQpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTYxLCAoLTIsIDg3NjU0MyksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1ldmFsPXRpbWV2YWwpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1ldmFsKG9iaiwgcm5kKSwgdGltZXZhbCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lX1JPVU5EX0RPV04KLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwogICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyB6ZXJvCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMWUtOSwgKDAsIDEpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMWUtMTAsICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMCwgOTk5OTk5OTk5KSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3ODkpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWVfUk9VTkRfRE9XTiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lX1JPVU5EX0RPV04pLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjEwKSwgX1B5VGltZV9ST1VORF9ET1dOKSwKLSAgICAgICAgICAgICMgUm91bmQgYXdheSBmcm9tIHplcm8KLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDEsIDApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lX1JPVU5EX1VQKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWVfUk9VTkRfVVApLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjEwKSwgX1B5VGltZV9ST1VORF9VUCksCisgICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCisgICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoMWUtOSwgKDAsIDEpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMWUtMTAsICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDAwMDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgwLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3ODkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3ODkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjEwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCisgICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpCisgICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMWUtOSwgKDAsIDEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKDFlLTEwLCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMWUtMTAsICgwLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCisgICAgICAgICAgICAoMS4xMjM0NTY3ODkwLCAoMSwgMTIzNDU2NzkwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODkxLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCiAgICAgICAgICk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzcGVjPXRpbWVzcGVjKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMob2JqLCBybmQpLCB0aW1lc3BlYykKIAotICAgICAgICBybmQgPSBfUHlUaW1lX1JPVU5EX0RPV04KKyAgICAgICAgcm5kID0gX1B5VGltZS5ST1VORF9GTE9PUgogICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsIGludmFsaWQsIHJuZCkKQEAgLTc1OSw1ICs3MzQsMjY3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobHQudG1fem9uZSwgTm9uZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGVzdGNhcGkgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aGUgX3Rlc3RjYXBpIG1vZHVsZScpCitjbGFzcyBUZXN0UHlUaW1lX3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCisgICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICBkZWYgdGVzdF9Gcm9tU2Vjb25kc09iamVjdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdAorCisgICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgcm91bmRpbmcgbWV0aG9kcworICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgorICAgICAgICAgICAgZm9yIG9iaiwgdHMgaW4gKAorICAgICAgICAgICAgICAgICMgaW50ZWdlcnMKKyAgICAgICAgICAgICAgICAoMCwgMCksCisgICAgICAgICAgICAgICAgKDEsIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKC0zLCAtMyAqIFNFQ19UT19OUyksCisKKyAgICAgICAgICAgICAgICAjIGZsb2F0OiBzdWJzZWNvbmRzCisgICAgICAgICAgICAgICAgKDAuMCwgMCksCisgICAgICAgICAgICAgICAgKDFlLTksIDEpLAorICAgICAgICAgICAgICAgICgxZS02LCAxMCAqKiAzKSwKKyAgICAgICAgICAgICAgICAoMWUtMywgMTAgKiogNiksCisKKyAgICAgICAgICAgICAgICAjIGZsb2F0OiBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIuMCwgMiAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKDEyMy4wLCAxMjMgKiBTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICgtNy4wLCAtNyAqIFNFQ19UT19OUyksCisKKyAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmQgYXJlIGtlcHQgZm9yIHZhbHVlIDw9IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyKioyMiAtIDFlLTksICA0MTk0MzAzOTk5OTk5OTk5KSwKKyAgICAgICAgICAgICAgICAoMioqMjIsICAgICAgICAgNDE5NDMwNDAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIqKjIyICsgMWUtOSwgIDQxOTQzMDQwMDAwMDAwMDEpLAorICAgICAgICAgICAgICAgICgyKioyMyAtIDFlLTksICA4Mzg4NjA3OTk5OTk5OTk5KSwKKyAgICAgICAgICAgICAgICAoMioqMjMsICAgICAgICAgODM4ODYwODAwMDAwMDAwMCksCisKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IGxvb3NpbmcgcHJlY2lzaW9uIGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyKioyMyArIDFlLTksICA4Mzg4NjA4MDAwMDAwMDAyKSwKKworICAgICAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIqKjI0IC0gMWUtOSwgMTY3NzcyMTU5OTk5OTk5OTgpLAorICAgICAgICAgICAgICAgICgyKioyNCwgICAgICAgIDE2Nzc3MjE2MDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjQgKyAxZS05LCAxNjc3NzIxNjAwMDAwMDAwMCksCisgICAgICAgICAgICAgICAgKDIqKjI1IC0gMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyKioyNSAgICAgICAsIDMzNTU0NDMyMDAwMDAwMDAwKSwKKyAgICAgICAgICAgICAgICAoMioqMjUgKyAxZS05LCAzMzU1NDQzMjAwMDAwMDAwMCksCisKKyAgICAgICAgICAgICAgICAjIGNsb3NlIHRvIDJeNjMgbmFub3NlY29uZHMgKF9QeVRpbWVfdCBsaW1pdCkKKyAgICAgICAgICAgICAgICAoOTIyMzM3MjAzNiwgOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYuMCwgOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKC05MjIzMzcyMDM2LCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgKC05MjIzMzcyMDM2LjAsIC05MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1lc3RhbXA9dHMpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdChvYmosIHJuZCksIHRzKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChyb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCg5MjIzMzcyMDM3LCBybmQpCisgICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCg5MjIzMzcyMDM3LjAsIHJuZCkKKyAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KC05MjIzMzcyMDM3LCBybmQpCisgICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNy4wLCBybmQpCisKKyAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyBkaWZmZXJlbnQgcmVzdWx0cyBkZXBlbmRpbmcgb24gdGhlIHJvdW5kaW5nIG1ldGhvZAorICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKKyAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORworICAgICAgICBmb3Igb2JqLCB0cywgcm5kIGluICgKKyAgICAgICAgICAgICMgY2xvc2UgdG8gemVybworICAgICAgICAgICAgKCAxZS0xMCwgIDAsIEZMT09SKSwKKyAgICAgICAgICAgICggMWUtMTAsICAxLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMWUtMTAsIC0xLCBGTE9PUiksCisgICAgICAgICAgICAoLTFlLTEwLCAgMCwgQ0VJTElORyksCisKKyAgICAgICAgICAgICMgdGVzdCByb3VuZGluZyBvZiB0aGUgbGFzdCBuYW5vc2Vjb25kCisgICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3ODksIEZMT09SKSwKKyAgICAgICAgICAgICggMS4xMjM0NTY3ODk5LCAgMTEyMzQ1Njc5MCwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3OTAsIEZMT09SKSwKKyAgICAgICAgICAgICgtMS4xMjM0NTY3ODk5LCAtMTEyMzQ1Njc4OSwgQ0VJTElORyksCisKKyAgICAgICAgICAgICMgY2xvc2UgdG8gMSBzZWNvbmQKKyAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgIDk5OTk5OTk5OSwgRkxPT1IpLAorICAgICAgICAgICAgKCAwLjk5OTk5OTk5OTksICAxMDAwMDAwMDAwLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAtMTAwMDAwMDAwMCwgRkxPT1IpLAorICAgICAgICAgICAgKC0wLjk5OTk5OTk5OTksICAtOTk5OTk5OTk5LCBDRUlMSU5HKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdChvYmosIHJuZCksIHRzKQorCisgICAgZGVmIHRlc3RfQXNTZWNvbmRzRG91YmxlKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzU2Vjb25kc0RvdWJsZQorCisgICAgICAgIGZvciBuYW5vc2Vjb25kcywgc2Vjb25kcyBpbiAoCisgICAgICAgICAgICAjIG5lYXIgMSBuYW5vc2Vjb25kCisgICAgICAgICAgICAoIDAsICAwLjApLAorICAgICAgICAgICAgKCAxLCAgMWUtOSksCisgICAgICAgICAgICAoLTEsIC0xZS05KSwKKworICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCisgICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCisgICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKKyAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKworICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCisgICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCisgICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKworICAgICAgICAgICAgIyBuYW5vc2Vjb25kIGFyZSBrZXB0IGZvciB2YWx1ZSA8PSAyXjIzIHNlY29uZHMKKyAgICAgICAgICAgICg0MTk0MzAzOTk5OTk5OTk5LCAyKioyMiAtIDFlLTkpLAorICAgICAgICAgICAgKDQxOTQzMDQwMDAwMDAwMDAsIDIqKjIyKSwKKyAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAxLCAyKioyMiArIDFlLTkpLAorCisgICAgICAgICAgICAjIHN0YXJ0IGxvb3NpbmcgcHJlY2lzaW9uIGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcworICAgICAgICAgICAgKDgzODg2MDgwMDAwMDAwMDIsIDIqKjIzICsgMWUtOSksCisKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCisgICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCisgICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCisgICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCisgICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCisgICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCisKKyAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKKyAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKKyAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKKworICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCisgICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKKyAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKKworICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNUaW1ldmFsCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKKyAgICAgICAgICAgICAgICAjIG1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgICgwLCAoMCwgMCkpLAorICAgICAgICAgICAgICAgICgxMDAwLCAoMCwgMSkpLAorICAgICAgICAgICAgICAgICgtMTAwMCwgKC0xLCA5OTk5OTkpKSwKKworICAgICAgICAgICAgICAgICMgc2Vjb25kcworICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAorICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgKC0zLCAwKSksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWV2YWwobnMsIHJuZCksIHR2KQorCisgICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgorICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCisgICAgICAgIGZvciBucywgdHYsIHJuZCBpbiAoCisgICAgICAgICAgICAjIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMSwgKDAsIDApLCBGTE9PUiksCisgICAgICAgICAgICAoMSwgKDAsIDEpLCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCA5OTk5OTkpLCBGTE9PUiksCisgICAgICAgICAgICAoLTEsICgwLCAwKSwgQ0VJTElORyksCisKKyAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2NyksIEZMT09SKSwKKyAgICAgICAgICAgICgxMjM0NTY3MDAxLCAoMSwgMjM0NTY4KSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEyMzQ1NjcwMDEsICgtMiwgNzY1NDMyKSwgRkxPT1IpLAorICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMyksIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoX3Rlc3RjYXBpLCAnUHlUaW1lX0FzVGltZXNwZWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBfdGVzdGNhcGkuUHlUaW1lX0FzVGltZXNwZWMnKQorICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKKyAgICAgICAgZm9yIG5zLCB0cyBpbiAoCisgICAgICAgICAgICAjIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMCwgKDAsIDApKSwKKyAgICAgICAgICAgICgxLCAoMCwgMSkpLAorICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAorCisgICAgICAgICAgICAjIHNlY29uZHMKKyAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAorICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKworICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxMjM0NTY3ODkwLCAoMSwgMjM0NTY3ODkwKSksCisgICAgICAgICAgICAoLTEyMzQ1Njc4OTAsICgtMiwgNzY1NDMyMTEwKSksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXNwZWM9dHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXNwZWMobnMpLCB0cykKKworICAgIGRlZiB0ZXN0X21pbGxpc2Vjb25kcyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc01pbGxpc2Vjb25kcworICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgorICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCisgICAgICAgICAgICAgICAgIyBtaWxsaXNlY29uZHMKKyAgICAgICAgICAgICAgICAoMSAqIE1TX1RPX05TLCAxKSwKKyAgICAgICAgICAgICAgICAoLTIgKiBNU19UT19OUywgLTIpLAorCisgICAgICAgICAgICAgICAgIyBzZWNvbmRzCisgICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsIDIwMDApLAorICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgLTMwMDApLAorICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWxsaXNlY29uZHMobnMsIHJuZCksIHR2KQorCisgICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgorICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCisgICAgICAgIGZvciBucywgbXMsIHJuZCBpbiAoCisgICAgICAgICAgICAjIG5hbm9zZWNvbmRzCisgICAgICAgICAgICAoMSwgMCwgRkxPT1IpLAorICAgICAgICAgICAgKDEsIDEsIENFSUxJTkcpLAorICAgICAgICAgICAgKC0xLCAtMSwgRkxPT1IpLAorICAgICAgICAgICAgKC0xLCAwLCBDRUlMSU5HKSwKKworICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM0LCBGTE9PUiksCisgICAgICAgICAgICAoMTIzNCAqIE1TX1RPX05TICsgMSwgMTIzNSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEyMzQgKiBNU19UT19OUyAtIDEsIC0xMjM1LCBGTE9PUiksCisgICAgICAgICAgICAoLTEyMzQgKiBNU19UT19OUyAtIDEsIC0xMjM0LCBDRUlMSU5HKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCBtaWxsaXNlY29uZHM9bXMsIHJvdW5kPXJuZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWxsaXNlY29uZHMobnMsIHJuZCksIG1zKQorCisgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRzKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWljcm9zZWNvbmRzCisgICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6CisgICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKKyAgICAgICAgICAgICAgICAjIG1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgICgxICogVVNfVE9fTlMsIDEpLAorICAgICAgICAgICAgICAgICgtMiAqIFVTX1RPX05TLCAtMiksCisKKyAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcworICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEwMDApLAorICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMjAwMCksCisKKyAgICAgICAgICAgICAgICAjIHNlY29uZHMKKyAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMDAwMCksCisgICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMDAwMCksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pY3Jvc2Vjb25kcyhucywgcm5kKSwgdHYpCisKKyAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCisgICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKKyAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKKyAgICAgICAgICAgICMgbmFub3NlY29uZHMKKyAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCisgICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCisgICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCisgICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAorCisgICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcworICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKKyAgICAgICAgICAgICgxMjM0ICogVVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKKyAgICAgICAgICAgICgtMTIzNCAqIFVTX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKKyAgICAgICAgICAgICgtMTIzNCAqIFVTX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pY3Jvc2Vjb25kcyhucywgcm5kKSwgbXMpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggOTE4YTI5NC4uMmRiM2MxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgdGltZQogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKIApAQCAtODksOCArODgsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgdGltZWl0LlRpbWVyLCBzZXR1cD0nY29udGludWUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgdGltZWl0LlRpbWVyLCBzZXR1cD0nZnJvbSB0aW1laXQgaW1wb3J0IConKQogCi0gICAgZmFrZV9zZXR1cCA9ICJpbXBvcnQgdGltZWl0OyB0aW1laXQuX2Zha2VfdGltZXIuc2V0dXAoKSIKLSAgICBmYWtlX3N0bXQgPSAiaW1wb3J0IHRpbWVpdDsgdGltZWl0Ll9mYWtlX3RpbWVyLmluYygpIgorICAgIGZha2Vfc2V0dXAgPSAiaW1wb3J0IHRpbWVpdFxudGltZWl0Ll9mYWtlX3RpbWVyLnNldHVwKCkiCisgICAgZmFrZV9zdG10ID0gImltcG9ydCB0aW1laXRcbnRpbWVpdC5fZmFrZV90aW1lci5pbmMoKSIKIAogICAgIGRlZiBmYWtlX2NhbGxhYmxlX3NldHVwKHNlbGYpOgogICAgICAgICBzZWxmLmZha2VfdGltZXIuc2V0dXAoKQpAQCAtOTgsOSArOTcsMTAgQEAKICAgICBkZWYgZmFrZV9jYWxsYWJsZV9zdG10KHNlbGYpOgogICAgICAgICBzZWxmLmZha2VfdGltZXIuaW5jKCkKIAotICAgIGRlZiB0aW1laXQoc2VsZiwgc3RtdCwgc2V0dXAsIG51bWJlcj1Ob25lKToKKyAgICBkZWYgdGltZWl0KHNlbGYsIHN0bXQsIHNldHVwLCBudW1iZXI9Tm9uZSwgZ2xvYmFscz1Ob25lKToKICAgICAgICAgc2VsZi5mYWtlX3RpbWVyID0gRmFrZVRpbWVyKCkKLSAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXN0bXQsIHNldHVwPXNldHVwLCB0aW1lcj1zZWxmLmZha2VfdGltZXIpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgdGltZXI9c2VsZi5mYWtlX3RpbWVyLAorICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscykKICAgICAgICAga3dhcmdzID0ge30KICAgICAgICAgaWYgbnVtYmVyIGlzIE5vbmU6CiAgICAgICAgICAgICBudW1iZXIgPSBERUZBVUxUX05VTUJFUgpAQCAtMTQyLDYgKzE0MiwxNyBAQAogICAgICAgICAgICAgICAgIHRpbWVyPUZha2VUaW1lcigpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlbHRhX3RpbWUsIDApCiAKKyAgICBkZWYgdGVzdF90aW1laXRfZ2xvYmFsc19hcmdzKHNlbGYpOgorICAgICAgICBnbG9iYWwgX2dsb2JhbF90aW1lcgorICAgICAgICBfZ2xvYmFsX3RpbWVyID0gRmFrZVRpbWVyKCkKKyAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PSdfZ2xvYmFsX3RpbWVyLmluYygpJywgdGltZXI9X2dsb2JhbF90aW1lcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCB0LnRpbWVpdCwgbnVtYmVyPTMpCisgICAgICAgIHRpbWVpdC50aW1laXQoc3RtdD0nX2dsb2JhbF90aW1lci5pbmMoKScsIHRpbWVyPV9nbG9iYWxfdGltZXIsCisgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKCksIG51bWJlcj0zKQorICAgICAgICBsb2NhbF90aW1lciA9IEZha2VUaW1lcigpCisgICAgICAgIHRpbWVpdC50aW1laXQoc3RtdD0nbG9jYWxfdGltZXIuaW5jKCknLCB0aW1lcj1sb2NhbF90aW1lciwKKyAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWxvY2FscygpLCBudW1iZXI9MykKKwogICAgIGRlZiByZXBlYXQoc2VsZiwgc3RtdCwgc2V0dXAsIHJlcGVhdD1Ob25lLCBudW1iZXI9Tm9uZSk6CiAgICAgICAgIHNlbGYuZmFrZV90aW1lciA9IEZha2VUaW1lcigpCiAgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgdGltZXI9c2VsZi5mYWtlX3RpbWVyKQpAQCAtMjYxLDYgKzI3MiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICJDdXN0b21TZXR1cFxuIiAqIDMgKwogICAgICAgICAgICAgICAgICIzNSBsb29wcywgYmVzdCBvZiAzOiAyIHNlYyBwZXIgbG9vcFxuIikKIAorICAgIGRlZiB0ZXN0X21haW5fbXVsdGlwbGVfc2V0dXBzKHNlbGYpOgorICAgICAgICBzID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9Mi4wLAorICAgICAgICAgICAgICAgIHN3aXRjaGVzPVsnLW4zNScsICctcycsICdhID0gIkN1c3RvbVNldHVwIicsICctcycsICdwcmludChhKSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICJDdXN0b21TZXR1cFxuIiAqIDMgKworICAgICAgICAgICAgICAgICIzNSBsb29wcywgYmVzdCBvZiAzOiAyIHNlYyBwZXIgbG9vcFxuIikKKwogICAgIGRlZiB0ZXN0X21haW5fZml4ZWRfcmVwcyhzZWxmKToKICAgICAgICAgcyA9IHNlbGYucnVuX21haW4oc2Vjb25kc19wZXJfaW5jcmVtZW50PTYwLjAsIHN3aXRjaGVzPVsnLXI5J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgIjEwIGxvb3BzLCBiZXN0IG9mIDk6IDYwIHNlYyBwZXIgbG9vcFxuIikKQEAgLTMwNyw2ICszMjQsMjYgQEAKICAgICAgICAgICAgICAgICAxMDAwMCBsb29wcywgYmVzdCBvZiAzOiA1MCB1c2VjIHBlciBsb29wCiAgICAgICAgICAgICAiIiIpKQogCisgICAgZGVmIHRlc3RfbWFpbl93aXRoX3RpbWVfdW5pdChzZWxmKToKKyAgICAgICAgdW5pdF9zZWMgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMiwKKyAgICAgICAgICAgICAgICBzd2l0Y2hlcz1bJy11JywgJ3NlYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaXRfc2VjLAorICAgICAgICAgICAgICAgICIxMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDAuMDAyIHNlYyBwZXIgbG9vcFxuIikKKyAgICAgICAgdW5pdF9tc2VjID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDIsCisgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICdtc2VjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pdF9tc2VjLAorICAgICAgICAgICAgICAgICIxMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDIgbXNlYyBwZXIgbG9vcFxuIikKKyAgICAgICAgdW5pdF91c2VjID0gc2VsZi5ydW5fbWFpbihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDIsCisgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICd1c2VjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pdF91c2VjLAorICAgICAgICAgICAgICAgICIxMDAwIGxvb3BzLCBiZXN0IG9mIDM6IDJlKzAzIHVzZWMgcGVyIGxvb3BcbiIpCisgICAgICAgICMgVGVzdCBpbnZhbGlkIHVuaXQgaW5wdXQKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnJvcl9zdHJpbmdpbzoKKyAgICAgICAgICAgIGludmFsaWQgPSBzZWxmLnJ1bl9tYWluKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMiwKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoZXM9WyctdScsICdwYXJzZWMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcl9zdHJpbmdpby5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIHVuaXQuIFBsZWFzZSBzZWxlY3QgdXNlYywgbXNlYywgb3Igc2VjLlxuIikKKwogICAgIGRlZiB0ZXN0X21haW5fZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIGVycm9yX3N0cmluZ2lvOgogICAgICAgICAgICAgcyA9IHNlbGYucnVuX21haW4oc3dpdGNoZXM9WycxLzAnXSkKQEAgLTMxOCw4ICszNTUsNSBAQAogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUZXN0VGltZWl0KQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWVvdXQucHkKaW5kZXggNzAzYzQzYS4uM2M3NWRjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lb3V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZW91dC5weQpAQCAtMjQzLDE0ICsyNDMsMTQgQEAKICAgICBkZWYgdGVzdEFjY2VwdFRpbWVvdXQoc2VsZik6CiAgICAgICAgICMgVGVzdCBhY2NlcHQoKSB0aW1lb3V0CiAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNlbGYuc29jaywgc2VsZi5sb2NhbGhvc3QpCi0gICAgICAgIHNlbGYuc29jay5saXN0ZW4oNSkKKyAgICAgICAgc2VsZi5zb2NrLmxpc3RlbigpCiAgICAgICAgIHNlbGYuX3NvY2tfb3BlcmF0aW9uKDEsIDEuNSwgJ2FjY2VwdCcpCiAKICAgICBkZWYgdGVzdFNlbmQoc2VsZik6CiAgICAgICAgICMgVGVzdCBzZW5kKCkgdGltZW91dAogICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgc2VydjoKICAgICAgICAgICAgIHN1cHBvcnQuYmluZF9wb3J0KHNlcnYsIHNlbGYubG9jYWxob3N0KQotICAgICAgICAgICAgc2Vydi5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlcnYubGlzdGVuKCkKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KHNlcnYuZ2V0c29ja25hbWUoKSkKICAgICAgICAgICAgICMgU2VuZCBhIGxvdCBvZiBkYXRhIGluIG9yZGVyIHRvIGJ5cGFzcyBidWZmZXJpbmcgaW4gdGhlIFRDUCBzdGFjay4KICAgICAgICAgICAgIHNlbGYuX3NvY2tfb3BlcmF0aW9uKDEwMCwgMS41LCAnc2VuZCcsIGIiWCIgKiAyMDAwMDApCkBAIC0yNTksNyArMjU5LDcgQEAKICAgICAgICAgIyBUZXN0IHNlbmR0bygpIHRpbWVvdXQKICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pIGFzIHNlcnY6CiAgICAgICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzZXJ2LCBzZWxmLmxvY2FsaG9zdCkKLSAgICAgICAgICAgIHNlcnYubGlzdGVuKDUpCisgICAgICAgICAgICBzZXJ2Lmxpc3RlbigpCiAgICAgICAgICAgICBzZWxmLnNvY2suY29ubmVjdChzZXJ2LmdldHNvY2tuYW1lKCkpCiAgICAgICAgICAgICAjIFRoZSBhZGRyZXNzIGFyZ3VtZW50IGlzIGlnbm9yZWQgc2luY2Ugd2UgYWxyZWFkeSBjb25uZWN0ZWQuCiAgICAgICAgICAgICBzZWxmLl9zb2NrX29wZXJhdGlvbigxMDAsIDEuNSwgJ3NlbmR0bycsIGIiWCIgKiAyMDAwMDAsCkBAIC0yNjksNyArMjY5LDcgQEAKICAgICAgICAgIyBUZXN0IHNlbmRhbGwoKSB0aW1lb3V0CiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzZXJ2OgogICAgICAgICAgICAgc3VwcG9ydC5iaW5kX3BvcnQoc2Vydiwgc2VsZi5sb2NhbGhvc3QpCi0gICAgICAgICAgICBzZXJ2Lmxpc3Rlbig1KQorICAgICAgICAgICAgc2Vydi5saXN0ZW4oKQogICAgICAgICAgICAgc2VsZi5zb2NrLmNvbm5lY3Qoc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICAgICAgIyBTZW5kIGEgbG90IG9mIGRhdGEgaW4gb3JkZXIgdG8gYnlwYXNzIGJ1ZmZlcmluZyBpbiB0aGUgVENQIHN0YWNrLgogICAgICAgICAgICAgc2VsZi5fc29ja19vcGVyYXRpb24oMTAwLCAxLjUsICdzZW5kYWxsJywgYiJYIiAqIDIwMDAwMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGl4LnB5IGIvTGliL3Rlc3QvdGVzdF90aXgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYTNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfdGl4LnB5CkBAIC0wLDAgKzEsMzIgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgc3lzCisKKyMgU2tpcCB0aGlzIHRlc3QgaWYgdGhlIF90a2ludGVyIG1vZHVsZSB3YXNuJ3QgYnVpbHQuCitfdGtpbnRlciA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQorCisjIFNraXAgdGVzdCBpZiB0ayBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQuCitzdXBwb3J0LnJlcXVpcmVzKCdndWknKQorCitmcm9tIHRraW50ZXIgaW1wb3J0IHRpeCwgVGNsRXJyb3IKKworCitjbGFzcyBUZXN0VGl4KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5yb290ID0gdGl4LlRrKCkKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGl4IHNob3VsZCBhbHdheXMgYmUgYXZhaWxhYmxlIG9uIFdpbmRvd3MnKQorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGl4IG5vdCBhdmFpbGFibGUnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucm9vdC5kZXN0cm95KQorCisgICAgZGVmIHRlc3RfdGl4X2F2YWlsYWJsZShzZWxmKToKKyAgICAgICAgIyB0aGlzIHRlc3QgaXMganVzdCBoZXJlIHRvIG1ha2Ugc2V0VXAgcnVuCisgICAgICAgIHBhc3MKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ay5weSBiL0xpYi90ZXN0L3Rlc3RfdGsucHkKaW5kZXggNjI3MjlmMC4uNDhjZWZkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RrLnB5CkBAIC0yLDkgKzIsNiBAQAogIyBTa2lwIHRlc3QgaWYgX3RraW50ZXIgd2Fzbid0IGJ1aWx0Lgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGtpbnRlcicpCiAKLSMgTWFrZSBzdXJlIHRraW50ZXIuX2ZpeCBydW5zIHRvIHNldCB1cCB0aGUgZW52aXJvbm1lbnQKLXN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgndGtpbnRlcicpCi0KICMgU2tpcCB0ZXN0IGlmIHRrIGNhbm5vdCBiZSBpbml0aWFsaXplZC4KIHN1cHBvcnQucmVxdWlyZXMoJ2d1aScpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDY1MDZiNjcuLmI3Y2EwODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNDY2LDcgKzQ2Niw3IEBACiAKIE11bHRpcGxpY2F0aXZlCiAKLSAgICA+Pj4gZHVtcF90b2tlbnMoInggPSAxLy8xKjEvNSoxMiUweDEyIikKKyAgICA+Pj4gZHVtcF90b2tlbnMoInggPSAxLy8xKjEvNSoxMiUweDEyQDQyIikKICAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKQEAgLTQ4MSw2ICs0ODEsOCBAQAogICAgIE5VTUJFUiAgICAgJzEyJyAgICAgICAgICAoMSwgMTMpICgxLCAxNSkKICAgICBPUCAgICAgICAgICclJyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCiAgICAgTlVNQkVSICAgICAnMHgxMicgICAgICAgICgxLCAxNikgKDEsIDIwKQorICAgIE9QICAgICAgICAgJ0AnICAgICAgICAgICAoMSwgMjApICgxLCAyMSkKKyAgICBOVU1CRVIgICAgICc0MicgICAgICAgICAgKDEsIDIxKSAoMSwgMjMpCiAKIFVuYXJ5CiAKQEAgLTY0MSw2ICs2NDMsMjc2IEBACiAgICAgTkFNRSAgICAgICAnZ3LDvG4nICAgICAgICAoMiwgMCkgKDIsIDQpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgyLCA1KSAoMiwgNikKICAgICBTVFJJTkcgICAgICJVJ2dyZWVuJyIgICAgKDIsIDcpICgyLCAxNSkKKworQXN5bmMvYXdhaXQgZXh0ZW5zaW9uOgorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYyA9IDEiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDYpICgxLCA3KQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImEgPSAoYXN5bmMgPSAxKSIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhJyAgICAgICAgICAgKDEsIDApICgxLCAxKQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMikgKDEsIDMpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCA0KSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDUpICgxLCAxMCkKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgxLCAxMykgKDEsIDE0KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTQpICgxLCAxNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMoKSIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKworICAgID4+PiBkdW1wX3Rva2VucygiY2xhc3MgYXN5bmMoQmFyKTpwYXNzIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2NsYXNzJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA2KSAoMSwgMTEpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICgxLCAxMSkgKDEsIDEyKQorICAgIE5BTUUgICAgICAgJ0JhcicgICAgICAgICAoMSwgMTIpICgxLCAxNSkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDEsIDE1KSAoMSwgMTYpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgxLCAxNikgKDEsIDE3KQorICAgIE5BTUUgICAgICAgJ3Bhc3MnICAgICAgICAoMSwgMTcpICgxLCAyMSkKKworICAgID4+PiBkdW1wX3Rva2VucygiY2xhc3MgYXN5bmM6cGFzcyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdjbGFzcycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgNikgKDEsIDExKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTEpICgxLCAxMikKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDEyKSAoMSwgMTYpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImF3YWl0ID0gMSIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgNikgKDEsIDcpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKworICAgID4+PiBkdW1wX3Rva2VucygiZm9vLmFzeW5jIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMCkgKDEsIDMpCisgICAgT1AgICAgICAgICAnLicgICAgICAgICAgICgxLCAzKSAoMSwgNCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDQpICgxLCA5KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYyBmb3IgYSBpbiBiOiBwYXNzIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkFNRSAgICAgICAnZm9yJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKyAgICBOQU1FICAgICAgICdhJyAgICAgICAgICAgKDEsIDEwKSAoMSwgMTEpCisgICAgTkFNRSAgICAgICAnaW4nICAgICAgICAgICgxLCAxMikgKDEsIDE0KQorICAgIE5BTUUgICAgICAgJ2InICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDE2KSAoMSwgMTcpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgxLCAxOCkgKDEsIDIyKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYyB3aXRoIGEgYXMgYjogcGFzcyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE5BTUUgICAgICAgJ3dpdGgnICAgICAgICAoMSwgNikgKDEsIDEwKQorICAgIE5BTUUgICAgICAgJ2EnICAgICAgICAgICAoMSwgMTEpICgxLCAxMikKKyAgICBOQU1FICAgICAgICdhcycgICAgICAgICAgKDEsIDEzKSAoMSwgMTUpCisgICAgTkFNRSAgICAgICAnYicgICAgICAgICAgICgxLCAxNikgKDEsIDE3KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTcpICgxLCAxOCkKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDE5KSAoMSwgMjMpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoImFzeW5jLmZvbyIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdhc3luYycgICAgICAgKDEsIDApICgxLCA1KQorICAgIE9QICAgICAgICAgJy4nICAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgxLCA2KSAoMSwgOSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmMiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYXN5bmNcXG4jY29tbWVudFxcbmF3YWl0IikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgQ09NTUVOVCAgICAnI2NvbW1lbnQnICAgICgyLCAwKSAoMiwgOCkKKyAgICBOTCAgICAgICAgICdcXG4nICAgICAgICAgICgyLCA4KSAoMiwgOSkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDMsIDApICgzLCA1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luY1xcbi4uLlxcbmF3YWl0IikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgT1AgICAgICAgICAnLi4uJyAgICAgICAgICgyLCAwKSAoMiwgMykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgyLCAzKSAoMiwgNCkKKyAgICBOQU1FICAgICAgICdhd2FpdCcgICAgICAgKDMsIDApICgzLCA1KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luY1xcbmF3YWl0IikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICgyLCAwKSAoMiwgNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiZm9vLmFzeW5jICsgMSIpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDEsIDApICgxLCAzKQorICAgIE9QICAgICAgICAgJy4nICAgICAgICAgICAoMSwgMykgKDEsIDQpCisgICAgTkFNRSAgICAgICAnYXN5bmMnICAgICAgICgxLCA0KSAoMSwgOSkKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDEwKSAoMSwgMTEpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICgxLCAxMikgKDEsIDEzKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCJhc3luYyBkZWYgZm9vKCk6IHBhc3MiKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMTApICgxLCAxMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBOQU1FICAgICAgICdwYXNzJyAgICAgICAgKDEsIDE3KSAoMSwgMjEpCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoJycnYXN5bmMgZGVmIGZvbygpOgorICAgIC4uLiAgIGRlZiBmb28oYXdhaXQpOgorICAgIC4uLiAgICAgYXdhaXQgPSAxCisgICAgLi4uICAgaWYgMToKKyAgICAuLi4gICAgIGF3YWl0CisgICAgLi4uIGFzeW5jICs9IDEKKyAgICAuLi4gJycnKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMTApICgxLCAxMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNikgKDEsIDE3KQorICAgIElOREVOVCAgICAgJyAgJyAgICAgICAgICAoMiwgMCkgKDIsIDIpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgyLCAyKSAoMiwgNSkKKyAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDIsIDYpICgyLCA5KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMiwgOSkgKDIsIDEwKQorICAgIEFXQUlUICAgICAgJ2F3YWl0JyAgICAgICAoMiwgMTApICgyLCAxNSkKKyAgICBPUCAgICAgICAgICcpJyAgICAgICAgICAgKDIsIDE1KSAoMiwgMTYpCisgICAgT1AgICAgICAgICAnOicgICAgICAgICAgICgyLCAxNikgKDIsIDE3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDIsIDE3KSAoMiwgMTgpCisgICAgSU5ERU5UICAgICAnICAgICcgICAgICAgICgzLCAwKSAoMywgNCkKKyAgICBBV0FJVCAgICAgICdhd2FpdCcgICAgICAgKDMsIDQpICgzLCA5KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMywgMTApICgzLCAxMSkKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDMsIDEyKSAoMywgMTMpCisgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMywgMTMpICgzLCAxNCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDQsIDIpICg0LCAyKQorICAgIE5BTUUgICAgICAgJ2lmJyAgICAgICAgICAoNCwgMikgKDQsIDQpCisgICAgTlVNQkVSICAgICAnMScgICAgICAgICAgICg0LCA1KSAoNCwgNikKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDQsIDYpICg0LCA3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDQsIDcpICg0LCA4KQorICAgIElOREVOVCAgICAgJyAgICAnICAgICAgICAoNSwgMCkgKDUsIDQpCisgICAgQVdBSVQgICAgICAnYXdhaXQnICAgICAgICg1LCA0KSAoNSwgOSkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICg1LCA5KSAoNSwgMTApCisgICAgREVERU5UICAgICAnJyAgICAgICAgICAgICg2LCAwKSAoNiwgMCkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDYsIDApICg2LCAwKQorICAgIE5BTUUgICAgICAgJ2FzeW5jJyAgICAgICAoNiwgMCkgKDYsIDUpCisgICAgT1AgICAgICAgICAnKz0nICAgICAgICAgICg2LCA2KSAoNiwgOCkKKyAgICBOVU1CRVIgICAgICcxJyAgICAgICAgICAgKDYsIDkpICg2LCAxMCkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICg2LCAxMCkgKDYsIDExKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAuLi4gICBhc3luYyBmb3IgaSBpbiAxOiBwYXNzJycnKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMTApICgxLCAxMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTUpICgxLCAxNikKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNikgKDEsIDE3KQorICAgIElOREVOVCAgICAgJyAgJyAgICAgICAgICAoMiwgMCkgKDIsIDIpCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgyLCAyKSAoMiwgNykKKyAgICBOQU1FICAgICAgICdmb3InICAgICAgICAgKDIsIDgpICgyLCAxMSkKKyAgICBOQU1FICAgICAgICdpJyAgICAgICAgICAgKDIsIDEyKSAoMiwgMTMpCisgICAgTkFNRSAgICAgICAnaW4nICAgICAgICAgICgyLCAxNCkgKDIsIDE2KQorICAgIE5VTUJFUiAgICAgJzEnICAgICAgICAgICAoMiwgMTcpICgyLCAxOCkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDIsIDE4KSAoMiwgMTkpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgyLCAyMCkgKDIsIDI0KQorICAgIERFREVOVCAgICAgJycgICAgICAgICAgICAoMywgMCkgKDMsIDApCisKKyAgICA+Pj4gZHVtcF90b2tlbnMoJycnYXN5bmMgZGVmIGZvbyhhc3luYyk6IGF3YWl0JycnKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMSwgMTApICgxLCAxMykKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAxNCkgKDEsIDE5KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMSwgMTkpICgxLCAyMCkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDIwKSAoMSwgMjEpCisgICAgQVdBSVQgICAgICAnYXdhaXQnICAgICAgICgxLCAyMikgKDEsIDI3KQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCcnJ2RlZiBmKCk6CisgICAgLi4uCisgICAgLi4uICAgZGVmIGJheigpOiBwYXNzCisgICAgLi4uICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisgICAgLi4uCisgICAgLi4uICAgYXdhaXQgPSAyJycnKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgxLCAwKSAoMSwgMykKKyAgICBOQU1FICAgICAgICdmJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMSwgNSkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIE5MICAgICAgICAgJ1xcbicgICAgICAgICAgKDIsIDApICgyLCAxKQorICAgIElOREVOVCAgICAgJyAgJyAgICAgICAgICAoMywgMCkgKDMsIDIpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgzLCAyKSAoMywgNSkKKyAgICBOQU1FICAgICAgICdiYXonICAgICAgICAgKDMsIDYpICgzLCA5KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMywgOSkgKDMsIDEwKQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMywgMTApICgzLCAxMSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDMsIDExKSAoMywgMTIpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgzLCAxMykgKDMsIDE3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDMsIDE3KSAoMywgMTgpCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICg0LCAyKSAoNCwgNykKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDQsIDgpICg0LCAxMSkKKyAgICBOQU1FICAgICAgICdiYXInICAgICAgICAgKDQsIDEyKSAoNCwgMTUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICg0LCAxNSkgKDQsIDE2KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoNCwgMTYpICg0LCAxNykKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDQsIDE3KSAoNCwgMTgpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICg0LCAxOSkgKDQsIDIzKQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDQsIDIzKSAoNCwgMjQpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoNSwgMCkgKDUsIDEpCisgICAgTkFNRSAgICAgICAnYXdhaXQnICAgICAgICg2LCAyKSAoNiwgNykKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDYsIDgpICg2LCA5KQorICAgIE5VTUJFUiAgICAgJzInICAgICAgICAgICAoNiwgMTApICg2LCAxMSkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDcsIDApICg3LCAwKQorCisgICAgPj4+IGR1bXBfdG9rZW5zKCcnJ2FzeW5jIGRlZiBmKCk6CisgICAgLi4uCisgICAgLi4uICAgZGVmIGJheigpOiBwYXNzCisgICAgLi4uICAgYXN5bmMgZGVmIGJhcigpOiBwYXNzCisgICAgLi4uCisgICAgLi4uICAgYXdhaXQgPSAyJycnKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICgxLCAwKSAoMSwgNSkKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDEsIDYpICgxLCA5KQorICAgIE5BTUUgICAgICAgJ2YnICAgICAgICAgICAoMSwgMTApICgxLCAxMSkKKyAgICBPUCAgICAgICAgICcoJyAgICAgICAgICAgKDEsIDExKSAoMSwgMTIpCisgICAgT1AgICAgICAgICAnKScgICAgICAgICAgICgxLCAxMikgKDEsIDEzKQorICAgIE9QICAgICAgICAgJzonICAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNCkgKDEsIDE1KQorICAgIE5MICAgICAgICAgJ1xcbicgICAgICAgICAgKDIsIDApICgyLCAxKQorICAgIElOREVOVCAgICAgJyAgJyAgICAgICAgICAoMywgMCkgKDMsIDIpCisgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgzLCAyKSAoMywgNSkKKyAgICBOQU1FICAgICAgICdiYXonICAgICAgICAgKDMsIDYpICgzLCA5KQorICAgIE9QICAgICAgICAgJygnICAgICAgICAgICAoMywgOSkgKDMsIDEwKQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoMywgMTApICgzLCAxMSkKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDMsIDExKSAoMywgMTIpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICgzLCAxMykgKDMsIDE3KQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDMsIDE3KSAoMywgMTgpCisgICAgQVNZTkMgICAgICAnYXN5bmMnICAgICAgICg0LCAyKSAoNCwgNykKKyAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDQsIDgpICg0LCAxMSkKKyAgICBOQU1FICAgICAgICdiYXInICAgICAgICAgKDQsIDEyKSAoNCwgMTUpCisgICAgT1AgICAgICAgICAnKCcgICAgICAgICAgICg0LCAxNSkgKDQsIDE2KQorICAgIE9QICAgICAgICAgJyknICAgICAgICAgICAoNCwgMTYpICg0LCAxNykKKyAgICBPUCAgICAgICAgICc6JyAgICAgICAgICAgKDQsIDE3KSAoNCwgMTgpCisgICAgTkFNRSAgICAgICAncGFzcycgICAgICAgICg0LCAxOSkgKDQsIDIzKQorICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDQsIDIzKSAoNCwgMjQpCisgICAgTkwgICAgICAgICAnXFxuJyAgICAgICAgICAoNSwgMCkgKDUsIDEpCisgICAgQVdBSVQgICAgICAnYXdhaXQnICAgICAgICg2LCAyKSAoNiwgNykKKyAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDYsIDgpICg2LCA5KQorICAgIE5VTUJFUiAgICAgJzInICAgICAgICAgICAoNiwgMTApICg2LCAxMSkKKyAgICBERURFTlQgICAgICcnICAgICAgICAgICAgKDcsIDApICg3LCAwKQogIiIiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTExMSw2ICsxMzgzLDE3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY29kaW5nX3VzZWQsIGVuY29kaW5nKQogCisgICAgZGVmIHRlc3Rfb25lbGluZV9kZWZzKHNlbGYpOgorICAgICAgICBidWYgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSg1MDApOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgnZGVmIGl7aX0oKTogcmV0dXJuIHtpfScuZm9ybWF0KGk9aSkpCisgICAgICAgIGJ1Zi5hcHBlbmQoJ09LJykKKyAgICAgICAgYnVmID0gJ1xuJy5qb2luKGJ1ZikKKworICAgICAgICAjIFRlc3QgdGhhdCA1MDAgY29uc2VxdWVudCwgb25lLWxpbmUgZGVmcyBpcyBPSworICAgICAgICB0b2tzID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKGJ1Zi5lbmNvZGUoJ3V0Zi04JykpLnJlYWRsaW5lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b2tzWy0yXS5zdHJpbmcsICdPSycpICMgWy0xXSBpcyBhbHdheXMgRU5ETUFSS0VSCisKICAgICBkZWYgYXNzZXJ0RXhhY3RUeXBlRXF1YWwoc2VsZiwgb3BzdHIsICpvcHR5cGVzKToKICAgICAgICAgdG9rZW5zID0gbGlzdCh0b2tlbml6ZShCeXRlc0lPKG9wc3RyLmVuY29kZSgndXRmLTgnKSkucmVhZGxpbmUpKQogICAgICAgICBudW1fb3B0eXBlcyA9IGxlbihvcHR5cGVzKQpAQCAtMTE2NSw2ICsxNDQ4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy8nLCB0b2tlbi5ET1VCTEVTTEFTSCkKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy89JywgdG9rZW4uRE9VQkxFU0xBU0hFUVVBTCkKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCcsIHRva2VuLkFUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdAPScsIHRva2VuLkFURVFVQUwpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnYSoqMitiKioyPT1jKioyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FLCB0b2tlbi5ET1VCTEVTVEFSLCBOVU1CRVIsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfaTE4bi5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9pMThuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYWE4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfaTE4bi5weQpAQCAtMCwwICsxLDY4IEBACisiIiJUZXN0cyB0byBjb3ZlciB0aGUgVG9vbHMvaTE4biBwYWNrYWdlIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCB0b29sc2RpcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHRlbXBfY3dkCisKK2NsYXNzIFRlc3RfcHlnZXR0ZXh0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3IgdGhlIHB5Z2V0dGV4dC5weSB0b29sIiIiCisKKyAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4odG9vbHNkaXIsJ2kxOG4nLCAncHlnZXR0ZXh0LnB5JykKKworICAgIGRlZiBnZXRfaGVhZGVyKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiIgdXRpbGl0eTogcmV0dXJuIHRoZSBoZWFkZXIgb2YgYSAucG8gZmlsZSBhcyBhIGRpY3Rpb25hcnkgIiIiCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBmb3IgbGluZSBpbiBkYXRhLnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCgnIycsICdtc2dpZCcsJ21zZ3N0cicpKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoJyInKQorICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnNwbGl0KCc6JywxKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIGhlYWRlcnMKKworICAgIGRlZiB0ZXN0X2hlYWRlcihzZWxmKToKKyAgICAgICAgIiIiTWFrZSBzdXJlIHRoZSByZXF1aXJlZCBmaWVsZHMgYXJlIGluIHRoZSBoZWFkZXIsIGFjY29yZGluZyB0bzoKKyAgICAgICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dldHRleHQvbWFudWFsL2dldHRleHQuaHRtbCNIZWFkZXItRW50cnkKKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggdGVtcF9jd2QoTm9uZSkgYXMgY3dkOgorICAgICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzZWxmLnNjcmlwdCkKKyAgICAgICAgICAgIHdpdGggb3BlbignbWVzc2FnZXMucG90JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgaGVhZGVyID0gc2VsZi5nZXRfaGVhZGVyKGRhdGEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlByb2plY3QtSWQtVmVyc2lvbiIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlBPVC1DcmVhdGlvbi1EYXRlIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiUE8tUmV2aXNpb24tRGF0ZSIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkxhc3QtVHJhbnNsYXRvciIsIGhlYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkxhbmd1YWdlLVRlYW0iLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJNSU1FLVZlcnNpb24iLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJDb250ZW50LVR5cGUiLCBoZWFkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIiwgaGVhZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiR2VuZXJhdGVkLUJ5IiwgaGVhZGVyKQorCisgICAgICAgICAgICAjIG5vdCBjbGVhciBpZiB0aGVzZSBzaG91bGQgYmUgcmVxdWlyZWQgaW4gUE9UICh0ZW1wbGF0ZSkgZmlsZXMKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCJSZXBvcnQtTXNnaWQtQnVncy1UbyIsIGhlYWRlcikKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCJMYW5ndWFnZSIsIGhlYWRlcikKKworICAgICAgICAgICAgIyJQbHVyYWwtRm9ybXMiIGlzIG9wdGlvbmFsCisKKworICAgIGRlZiB0ZXN0X1BPVF9DcmVhdGlvbl9EYXRlKHNlbGYpOgorICAgICAgICAiIiIgTWF0Y2ggdGhlIGRhdGUgZm9ybWF0IGZyb20geGdldHRleHQgZm9yIFBPVC1DcmVhdGlvbi1EYXRlICIiIgorICAgICAgICBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorICAgICAgICB3aXRoIHRlbXBfY3dkKE5vbmUpIGFzIGN3ZDoKKyAgICAgICAgICAgIGFzc2VydF9weXRob25fb2soc2VsZi5zY3JpcHQpCisgICAgICAgICAgICB3aXRoIG9wZW4oJ21lc3NhZ2VzLnBvdCcpIGFzIGZwOgorICAgICAgICAgICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIGhlYWRlciA9IHNlbGYuZ2V0X2hlYWRlcihkYXRhKQorICAgICAgICAgICAgY3JlYXRpb25EYXRlID0gaGVhZGVyWydQT1QtQ3JlYXRpb24tRGF0ZSddCisKKyAgICAgICAgICAgICMgcGVlbCBvZmYgdGhlIGVzY2FwZWQgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHN0cmluZworICAgICAgICAgICAgaWYgY3JlYXRpb25EYXRlLmVuZHN3aXRoKCdcXG4nKToKKyAgICAgICAgICAgICAgICBjcmVhdGlvbkRhdGUgPSBjcmVhdGlvbkRhdGVbOi1sZW4oJ1xcbicpXQorCisgICAgICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBpZiB0aGUgZGF0ZSBmb3JtYXQgZG9lcyBub3QgZXhhY3RseSBtYXRjaC4KKyAgICAgICAgICAgIGRhdGV0aW1lLnN0cnB0aW1lKGNyZWF0aW9uRGF0ZSwgJyVZLSVtLSVkICVIOiVNJXonKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKaW5kZXggNTllYTE0OS4uMTMwNTI5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CkBAIC00LDcgKzQsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGluZGVudC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CmluZGV4IDE0YTBhYTIuLmUyOTNiYzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9waW5kZW50LnB5CkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZXh0d3JhcAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogCiBmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9yZWluZGVudC5weQppbmRleCA0NWNlYmY3Li5kN2MyMGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcmVpbmRlbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3JlaW5kZW50LnB5CkBAIC02LDcgKzYsNyBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKIAogZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCBlZTMzOTg2Li4wM2RmZjg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTksMTIgKzksMTEgQEAKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIAotCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCiAKIGRlZiBmaXhfZXh0X3B5KGZpbGVuYW1lKToKLSAgICAiIiJHaXZlbiBhIC5weWMvLnB5byBmaWxlbmFtZSBjb252ZXJ0cyBpdCB0byB0aGUgYXBwcm9wcmlhdGUgLnB5IiIiCi0gICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcucHljJywgJy5weW8nKSk6CisgICAgIiIiR2l2ZW4gYSAucHljIGZpbGVuYW1lIGNvbnZlcnRzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSAucHkiIiIKKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLnB5YycpOgogICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lWzotMV0KICAgICByZXR1cm4gZmlsZW5hbWUKIApAQCAtMjIzLDYgKzIyMiwxMSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTEpCiAgICAgICAgIHNlbGYuZmlsZW1vZCA9IG15X2ZpbGVfYW5kX21vZG5hbWUoKQorICAgICAgICBzZWxmLl9zYXZlZF90cmFjZWZ1bmMgPSBzeXMuZ2V0dHJhY2UoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zYXZlZF90cmFjZWZ1bmMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5fc2F2ZWRfdHJhY2VmdW5jKQogCiAgICAgZGVmIHRlc3Rfc2ltcGxlX2NhbGxlcihzZWxmKToKICAgICAgICAgc2VsZi50cmFjZXIucnVuZnVuYyh0cmFjZWRfZnVuY19zaW1wbGVfY2FsbGVyLCAxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCBkNmM5ZGYyLi4wMzYyNTA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMSwxNSArMSwyNCBAQAogIiIiVGVzdCBjYXNlcyBmb3IgdHJhY2ViYWNrIG1vZHVsZSIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgcmUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIEVycm9yLCBjYXB0dXJlZF9vdXRwdXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIEVycm9yLCBjYXB0dXJlZF9vdXRwdXQsIHVubGluaywgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitpbXBvcnQgdGV4dHdyYXAKIAogaW1wb3J0IHRyYWNlYmFjawogCiAKK3Rlc3RfY29kZSA9IG5hbWVkdHVwbGUoJ2NvZGUnLCBbJ2NvX2ZpbGVuYW1lJywgJ2NvX25hbWUnXSkKK3Rlc3RfZnJhbWUgPSBuYW1lZHR1cGxlKCdmcmFtZScsIFsnZl9jb2RlJywgJ2ZfZ2xvYmFscycsICdmX2xvY2FscyddKQordGVzdF90YiA9IG5hbWVkdHVwbGUoJ3RiJywgWyd0Yl9mcmFtZScsICd0Yl9saW5lbm8nLCAndGJfbmV4dCddKQorCisKIGNsYXNzIFN5bnRheFRyYWNlYmFja0Nhc2VzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIEZvciBub3csIGEgdmVyeSBtaW5pbWFsIHNldCBvZiB0ZXN0cy4gIEkgd2FudCB0byBiZSBzdXJlIHRoYXQKICAgICAjIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIHdvcmtzIGJhc2VkIG9uIGNoYW5nZXMgZm9yIDIuMS4KQEAgLTkyLDkgKzEwMSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVyciksIDEpCiAgICAgICAgIHN0cl92YWx1ZSA9ICc8dW5wcmludGFibGUgJXMgb2JqZWN0PicgJSBYLl9fbmFtZV9fCiAgICAgICAgIGlmIFguX19tb2R1bGVfXyBpbiAoJ19fbWFpbl9fJywgJ2J1aWx0aW5zJyk6Ci0gICAgICAgICAgICBzdHJfbmFtZSA9IFguX19uYW1lX18KKyAgICAgICAgICAgIHN0cl9uYW1lID0gWC5fX3F1YWxuYW1lX18KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0cl9uYW1lID0gJy4nLmpvaW4oW1guX19tb2R1bGVfXywgWC5fX25hbWVfX10pCisgICAgICAgICAgICBzdHJfbmFtZSA9ICcuJy5qb2luKFtYLl9fbW9kdWxlX18sIFguX19xdWFsbmFtZV9fXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJbMF0sICIlczogJXNcbiIgJSAoc3RyX25hbWUsIHN0cl92YWx1ZSkpCiAKICAgICBkZWYgdGVzdF93aXRob3V0X2V4Y2VwdGlvbihzZWxmKToKQEAgLTE2OSw2ICsxNzgsNDQgQEAKICAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXMgbm8gZWZmZWN0CiAgICAgICAgIGRvX3Rlc3QoIjBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKKyAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjI1OTk6IEVuc3VyZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgdHJhY2ViYWNrIG1vZHVsZQorICAgICAgICAjIHRvIGRpc3BsYXkgYW4gZXhjZXB0aW9uIGF0IFB5dGhvbiBleGl0CisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisKKyAgICAgICAgICAgIGNsYXNzIFByaW50RXhjZXB0aW9uQXRFeGl0KG9iamVjdCk6CisgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMSAvIDAKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWxmLmV4Y19pbmZvWzFdICh0cmFjZWJhY2spIGNvbnRhaW5zIGZyYW1lczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGljaXRseSBjbGVhciB0aGUgcmVmZXJlbmNlIHRvIHNlbGYgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgdG8gYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbigqc2VsZi5leGNfaW5mbykKKworICAgICAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNlIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlIHRvIGNhbGwgdGhlIGRlc3RydWN0b3IKKyAgICAgICAgICAgICMgd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkCisgICAgICAgICAgICBvYmogPSBQcmludEV4Y2VwdGlvbkF0RXhpdCgpCisgICAgICAgICIiIikKKyAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICBleHBlY3RlZCA9IFtiJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonLAorICAgICAgICAgICAgICAgICAgICBiJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDgsIGluIF9faW5pdF9fJywKKyAgICAgICAgICAgICAgICAgICAgYidaZXJvRGl2aXNpb25FcnJvcjogZGl2aXNpb24gYnkgemVybyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLnNwbGl0bGluZXMoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9wcmludF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbigKKyAgICAgICAgICAgIEV4Y2VwdGlvbiwgRXhjZXB0aW9uKCJwcm9qZWN0b3IiKSwgTm9uZSwgZmlsZT1vdXRwdXQKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5nZXR2YWx1ZSgpLCAiRXhjZXB0aW9uOiBwcm9qZWN0b3JcbiIpCisKIAogY2xhc3MgVHJhY2ViYWNrRm9ybWF0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00MzksNiArNDg2LDEyNiBAQAogICAgICAgICByZXR1cm4gcy5nZXR2YWx1ZSgpCiAKIAorY2xhc3MgTGltaXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAnJycgVGVzdHMgZm9yIGxpbWl0IGFyZ3VtZW50LgorICAgICAgICBJdCdzIGVub3VnaCB0byB0ZXN0IGV4dGFjdF90YiwgZXh0cmFjdF9zdGFjayBhbmQgZm9ybWF0X2V4Y2VwdGlvbiAnJycKKworICAgIGRlZiBsYXN0X3JhaXNlczEoc2VsZik6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignTGFzdCByYWlzZWQnKQorCisgICAgZGVmIGxhc3RfcmFpc2VzMihzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczEoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzMyhzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczIoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzNChzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczMoKQorCisgICAgZGVmIGxhc3RfcmFpc2VzNShzZWxmKToKKyAgICAgICAgc2VsZi5sYXN0X3JhaXNlczQoKQorCisgICAgZGVmIGxhc3RfcmV0dXJuc19mcmFtZTEoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuX2dldGZyYW1lKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWUyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUxKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWUzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUyKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWU0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWUzKCkKKworICAgIGRlZiBsYXN0X3JldHVybnNfZnJhbWU1KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXN0X3JldHVybnNfZnJhbWU0KCkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2soc2VsZik6CisgICAgICAgIGZyYW1lID0gc2VsZi5sYXN0X3JldHVybnNfZnJhbWU1KCkKKyAgICAgICAgZGVmIGV4dHJhY3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKGZyYW1lLCAqKmt3YXJncykKKyAgICAgICAgZGVmIGFzc2VydEVxdWFsRXhjZXB0KGFjdHVhbCwgZXhwZWN0ZWQsIGlnbm9yZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFs6aWdub3JlXSwgZXhwZWN0ZWRbOmlnbm9yZV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFtpZ25vcmUrMTpdLCBleHBlY3RlZFtpZ25vcmUrMTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsKSwgbGVuKGV4cGVjdGVkKSkKKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgMTAwMCk6CisgICAgICAgICAgICBub2xpbSA9IGV4dHJhY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihub2xpbSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MiksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBhc3NlcnRFcXVhbEV4Y2VwdChleHRyYWN0KGxpbWl0PTEwMCksIG5vbGltWy0xMDA6XSwgLTUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMiksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIGFzc2VydEVxdWFsRXhjZXB0KGV4dHJhY3QobGltaXQ9LTEwMCksIG5vbGltWzoxMDBdLCBsZW4obm9saW0pLTUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0wKSwgW10pCisgICAgICAgICAgICBkZWwgc3lzLnRyYWNlYmFja2xpbWl0CisgICAgICAgICAgICBhc3NlcnRFcXVhbEV4Y2VwdChleHRyYWN0KCksIG5vbGltLCAtNS0xKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIG5vbGltWy0yOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTMpLCBub2xpbVs6M10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF90YihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sYXN0X3JhaXNlczUoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICBkZWYgZXh0cmFjdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmV4dHJhY3RfdGIodGIsICoqa3dhcmdzKQorCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCAxMDAwKToKKyAgICAgICAgICAgIG5vbGltID0gZXh0cmFjdCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihub2xpbSksIDUrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0yKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTEwKSwgbm9saW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTIpLCBub2xpbVstMjpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTApLCBbXSkKKyAgICAgICAgICAgIGRlbCBzeXMudHJhY2ViYWNrbGltaXQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbSkKKyAgICAgICAgICAgIHN5cy50cmFjZWJhY2tsaW1pdCA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBub2xpbVs6Ml0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MyksIG5vbGltWzozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMyksIG5vbGltWy0zOl0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgW10pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5sYXN0X3JhaXNlczUoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAjIFsxOi0xXSB0byBleGNsdWRlICJUcmFjZWJhY2sgKC4uLikiIGhlYWRlciBhbmQKKyAgICAgICAgIyBleGNlcHRpb24gdHlwZSBhbmQgdmFsdWUKKyAgICAgICAgZGVmIGV4dHJhY3QoKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV4Y190eXBlLCBleGNfdmFsdWUsIHRiLCAqKmt3YXJncylbMTotMV0KKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgMTAwMCk6CisgICAgICAgICAgICBub2xpbSA9IGV4dHJhY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obm9saW0pLCA1KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9MiksIG5vbGltWzoyXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0xMCksIG5vbGltKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PS0yKSwgbm9saW1bLTI6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0tMTApLCBub2xpbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdChsaW1pdD0wKSwgW10pCisgICAgICAgICAgICBkZWwgc3lzLnRyYWNlYmFja2xpbWl0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW0pCisgICAgICAgICAgICBzeXMudHJhY2ViYWNrbGltaXQgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QoKSwgbm9saW1bOjJdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KGxpbWl0PTMpLCBub2xpbVs6M10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4dHJhY3QobGltaXQ9LTMpLCBub2xpbVstMzpdKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHRyYWN0KCksIFtdKQorICAgICAgICAgICAgc3lzLnRyYWNlYmFja2xpbWl0ID0gLTEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXh0cmFjdCgpLCBbXSkKKworCiBjbGFzcyBNaXNjVHJhY2ViYWNrQ2FzZXModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMKICAgICAjIENoZWNrIG5vbi1wcmludGluZyBmdW5jdGlvbnMgaW4gdHJhY2ViYWNrIG1vZHVsZQpAQCAtNDczLDE0ICs2NDAsMjc2IEBACiAgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soKQogICAgICAgICByZXN1bHQgPSBleHRyYWN0KCkKICAgICAgICAgbGluZW5vID0gZXh0cmFjdC5fX2NvZGVfXy5jb19maXJzdGxpbmVubwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFstMjpdLCBbCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3R1cGxlKHgpIGZvciB4IGluIHJlc3VsdFstMjpdXSwgWwogICAgICAgICAgICAgKF9fZmlsZV9fLCBsaW5lbm8rMiwgJ3Rlc3RfZXh0cmFjdF9zdGFjaycsICdyZXN1bHQgPSBleHRyYWN0KCknKSwKICAgICAgICAgICAgIChfX2ZpbGVfXywgbGluZW5vKzEsICdleHRyYWN0JywgJ3JldHVybiB0cmFjZWJhY2suZXh0cmFjdF9zdGFjaygpJyksCi0gICAgICAgIF0pCisgICAgICAgICAgICBdKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoX19uYW1lX18pCitjbGFzcyBUZXN0RnJhbWUodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoImYiLCBnbG9iYWxzKCkpCisgICAgICAgIGYgPSB0cmFjZWJhY2suRnJhbWVTdW1tYXJ5KCJmIiwgMSwgImR1bW15IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICgiZiIsIDEsICJkdW1teSIsICciIiJUZXN0IGNhc2VzIGZvciB0cmFjZWJhY2sgbW9kdWxlIiIiJyksCisgICAgICAgICAgICB0dXBsZShmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBmLmxvY2FscykKKworICAgIGRlZiB0ZXN0X2xhenlfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgZiA9IHRyYWNlYmFjay5GcmFtZVN1bW1hcnkoImYiLCAxLCAiZHVtbXkiLCBsb29rdXBfbGluZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBmLl9saW5lKQorICAgICAgICBsaW5lY2FjaGUubGF6eWNhY2hlKCJmIiwgZ2xvYmFscygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgJyIiIlRlc3QgY2FzZXMgZm9yIHRyYWNlYmFjayBtb2R1bGUiIiInLAorICAgICAgICAgICAgZi5saW5lKQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfbGluZShzZWxmKToKKyAgICAgICAgZiA9IHRyYWNlYmFjay5GcmFtZVN1bW1hcnkoImYiLCAxLCAiZHVtbXkiLCBsaW5lPSJsaW5lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgibGluZSIsIGYubGluZSkKKworCitjbGFzcyBUZXN0U3RhY2sodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2Fsa19zdGFjayhzZWxmKToKKyAgICAgICAgcyA9IGxpc3QodHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocyksIDEwKQorCisgICAgZGVmIHRlc3Rfd2Fsa190YihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBfLCBfLCB0YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgIHMgPSBsaXN0KHRyYWNlYmFjay53YWxrX3RiKHRiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDEpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3N0YWNrKHNlbGYpOgorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KHRyYWNlYmFjay53YWxrX3N0YWNrKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocywgdHJhY2ViYWNrLlN0YWNrU3VtbWFyeSkKKworICAgIGRlZiB0ZXN0X2V4dHJhY3Rfc3RhY2tfbGltaXQoc2VsZik6CisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QodHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSksIGxpbWl0PTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCA1KQorCisgICAgZGVmIHRlc3RfZXh0cmFjdF9zdGFja19sb29rdXBfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIE5vbmUsIE5vbmUpCisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoaXRlcihbKGYsIDYpXSksIGxvb2t1cF9saW5lcz1UcnVlKQorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXS5saW5lLCAiaW1wb3J0IHN5cyIpCisKKyAgICBkZWYgdGVzdF9leHRyYWN0X3N0YWNrdXBfZGVmZXJyZWRfbG9va3VwX2xpbmVzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgTm9uZSwgTm9uZSkKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdChpdGVyKFsoZiwgNildKSwgbG9va3VwX2xpbmVzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBsaW5lY2FjaGUuY2FjaGUpCisgICAgICAgIGxpbmVjYWNoZS51cGRhdGVjYWNoZSgnL2Zvby5weScsIGdsb2JhbHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdLmxpbmUsICJpbXBvcnQgc3lzIikKKworICAgIGRlZiB0ZXN0X2Zyb21fbGlzdChzZWxmKToKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KFsoJ2Zvby5weScsIDEsICdmcmVkJywgJ2xpbmUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiZm9vLnB5IiwgbGluZSAxLCBpbiBmcmVkXG4gICAgbGluZVxuJ10sCisgICAgICAgICAgICBzLmZvcm1hdCgpKQorCisgICAgZGVmIHRlc3RfZnJvbV9saXN0X2VkaXRlZF9zdGFjayhzZWxmKToKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KFsoJ2Zvby5weScsIDEsICdmcmVkJywgJ2xpbmUnKV0pCisgICAgICAgIHNbMF0gPSAoJ2Zvby5weScsIDIsICdmcmVkJywgJ2xpbmUnKQorICAgICAgICBzMiA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZnJvbV9saXN0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiZm9vLnB5IiwgbGluZSAyLCBpbiBmcmVkXG4gICAgbGluZVxuJ10sCisgICAgICAgICAgICBzMi5mb3JtYXQoKSkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF9zbW9rZShzZWxmKToKKyAgICAgICAgIyBGb3IgZGV0YWlsZWQgdGVzdHMgc2VlIHRoZSBmb3JtYXRfbGlzdCB0ZXN0cywgd2hpY2ggY29uc3VtZSB0aGUgc2FtZQorICAgICAgICAjIGNvZGUuCisgICAgICAgIHMgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmZyb21fbGlzdChbKCdmb28ucHknLCAxLCAnZnJlZCcsICdsaW5lJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWycgIEZpbGUgImZvby5weSIsIGxpbmUgMSwgaW4gZnJlZFxuICAgIGxpbmVcbiddLAorICAgICAgICAgICAgcy5mb3JtYXQoKSkKKworICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIGdsb2JhbHMoKSwgeydzb21ldGhpbmcnOiAxfSkKKyAgICAgICAgcyA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdChpdGVyKFsoZiwgNildKSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWzBdLmxvY2Fscywgeydzb21ldGhpbmcnOiAnMSd9KQorCisgICAgZGVmIHRlc3Rfbm9fbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgZ2xvYmFscygpLCB7J3NvbWV0aGluZyc6IDF9KQorICAgICAgICBzID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KGl0ZXIoWyhmLCA2KV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbMF0ubG9jYWxzLCBOb25lKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2xvY2FscyhzZWxmKToKKyAgICAgICAgZGVmIHNvbWVfaW5uZXIoaywgdik6CisgICAgICAgICAgICBhID0gMQorICAgICAgICAgICAgYiA9IDIKKyAgICAgICAgICAgIHJldHVybiB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLndhbGtfc3RhY2soTm9uZSksIGNhcHR1cmVfbG9jYWxzPVRydWUsIGxpbWl0PTEpCisgICAgICAgIHMgPSBzb21lX2lubmVyKDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbJyAgRmlsZSAiJXMiLCBsaW5lICVkLCBpbiBzb21lX2lubmVyXG4nCisgICAgICAgICAgICAgJyAgICB0cmFjZWJhY2sud2Fsa19zdGFjayhOb25lKSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSwgbGltaXQ9MSlcbicKKyAgICAgICAgICAgICAnICAgIGEgPSAxXG4nCisgICAgICAgICAgICAgJyAgICBiID0gMlxuJworICAgICAgICAgICAgICcgICAgayA9IDNcbicKKyAgICAgICAgICAgICAnICAgIHYgPSA0XG4nICUgKF9fZmlsZV9fLCBzb21lX2lubmVyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgNCkKKyAgICAgICAgICAgIF0sIHMuZm9ybWF0KCkpCisKK2NsYXNzIFRlc3RUcmFjZWJhY2tFeGNlcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc21va2Uoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEvMAorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm8pCisgICAgICAgICAgICBleHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgZXhjLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9mcm9tX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgIyBDaGVjayBhbGwgdGhlIHBhcmFtZXRlcnMgYXJlIGFjY2VwdGVkLgorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9vKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgc2VsZi5leHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSksIGxpbWl0PTEsIGxvb2t1cF9saW5lcz1GYWxzZSwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICAgICAgc2VsZi5leGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uLmZyb21fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIGUsIGxpbWl0PTEsIGxvb2t1cF9saW5lcz1GYWxzZSwgY2FwdHVyZV9sb2NhbHM9VHJ1ZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhY2sgPSBzZWxmLmV4cGVjdGVkX3N0YWNrCisgICAgICAgIGV4YyA9IHNlbGYuZXhjCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgZXhjLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9jYXVzZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBleGNfaW5mb19jb250ZXh0ID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvX2NvbnRleHQpCisgICAgICAgICAgICAgICAgY2F1c2UgPSBFeGNlcHRpb24oImNhdXNlIikKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInVoIG9oIikgZnJvbSBjYXVzZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgZXhjX2luZm8gPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjID0gdHJhY2ViYWNrLlRyYWNlYmFja0V4Y2VwdGlvbigqZXhjX2luZm8pCisgICAgICAgICAgICBleHBlY3RlZF9zdGFjayA9IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZXh0cmFjdCgKKyAgICAgICAgICAgICAgICB0cmFjZWJhY2sud2Fsa190YihleGNfaW5mb1syXSkpCisgICAgICAgIGV4Y19jYXVzZSA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBjYXVzZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfY2F1c2UsIGV4Yy5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjX2NvbnRleHQsIGV4Yy5fX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBleGMuX19zdXBwcmVzc19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfc3RhY2ssIGV4Yy5zdGFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGNfaW5mb1swXSwgZXhjLmV4Y190eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleGNfaW5mb1sxXSksIHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfY29udGV4dChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBleGNfaW5mb19jb250ZXh0ID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICBleGNfY29udGV4dCA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvX2NvbnRleHQpCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ1aCBvaCIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICBleGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKCpleGNfaW5mbykKKyAgICAgICAgICAgIGV4cGVjdGVkX3N0YWNrID0gdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5leHRyYWN0KAorICAgICAgICAgICAgICAgIHRyYWNlYmFjay53YWxrX3RiKGV4Y19pbmZvWzJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBleGMuX19jYXVzZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19jb250ZXh0LCBleGMuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGFjaywgZXhjLnN0YWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19pbmZvWzBdLCBleGMuZXhjX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGV4Y19pbmZvWzFdKSwgc3RyKGV4YykpCisKKyAgICBkZWYgdGVzdF9saW1pdChzZWxmKToKKyAgICAgICAgZGVmIHJlY3Vyc2Uobik6CisgICAgICAgICAgICBpZiBuOgorICAgICAgICAgICAgICAgIHJlY3Vyc2Uobi0xKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVjdXJzZSgxMCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oKmV4Y19pbmZvLCBsaW1pdD01KQorICAgICAgICAgICAgZXhwZWN0ZWRfc3RhY2sgPSB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICAgICAgdHJhY2ViYWNrLndhbGtfdGIoZXhjX2luZm9bMl0pLCBsaW1pdD01KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YWNrLCBleGMuc3RhY2spCisKKyAgICBkZWYgdGVzdF9sb29rdXBfbGluZXMoc2VsZik6CisgICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKKyAgICAgICAgZSA9IEV4Y2VwdGlvbigidWggb2giKQorICAgICAgICBjID0gdGVzdF9jb2RlKCcvZm9vLnB5JywgJ21ldGhvZCcpCisgICAgICAgIGYgPSB0ZXN0X2ZyYW1lKGMsIE5vbmUsIE5vbmUpCisgICAgICAgIHRiID0gdGVzdF90YihmLCA2LCBOb25lKQorICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKEV4Y2VwdGlvbiwgZSwgdGIsIGxvb2t1cF9saW5lcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgbGluZWNhY2hlLmNhY2hlKQorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnN0YWNrWzBdLmxpbmUsICJpbXBvcnQgc3lzIikKKworICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgbGluZWNhY2hlLnVwZGF0ZWNhY2hlKCcvZm9vLnB5JywgZ2xvYmFscygpKQorICAgICAgICBlID0gRXhjZXB0aW9uKCJ1aCBvaCIpCisgICAgICAgIGMgPSB0ZXN0X2NvZGUoJy9mb28ucHknLCAnbWV0aG9kJykKKyAgICAgICAgZiA9IHRlc3RfZnJhbWUoYywgZ2xvYmFscygpLCB7J3NvbWV0aGluZyc6IDEsICdvdGhlcic6ICdzdHJpbmcnfSkKKyAgICAgICAgdGIgPSB0ZXN0X3RiKGYsIDYsIE5vbmUpCisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICBFeGNlcHRpb24sIGUsIHRiLCBjYXB0dXJlX2xvY2Fscz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZXhjLnN0YWNrWzBdLmxvY2Fscywgeydzb21ldGhpbmcnOiAnMScsICdvdGhlcic6ICInc3RyaW5nJyJ9KQorCisgICAgZGVmIHRlc3Rfbm9fbG9jYWxzKHNlbGYpOgorICAgICAgICBsaW5lY2FjaGUudXBkYXRlY2FjaGUoJy9mb28ucHknLCBnbG9iYWxzKCkpCisgICAgICAgIGUgPSBFeGNlcHRpb24oInVoIG9oIikKKyAgICAgICAgYyA9IHRlc3RfY29kZSgnL2Zvby5weScsICdtZXRob2QnKQorICAgICAgICBmID0gdGVzdF9mcmFtZShjLCBnbG9iYWxzKCksIHsnc29tZXRoaW5nJzogMX0pCisgICAgICAgIHRiID0gdGVzdF90YihmLCA2LCBOb25lKQorICAgICAgICBleGMgPSB0cmFjZWJhY2suVHJhY2ViYWNrRXhjZXB0aW9uKEV4Y2VwdGlvbiwgZSwgdGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLnN0YWNrWzBdLmxvY2FscywgTm9uZSkKKworICAgIGRlZiB0ZXN0X3RyYWNlYmFja19oZWFkZXIoc2VsZik6CisgICAgICAgICMgZG8gbm90IHByaW50IGEgdHJhY2ViYWNrIGhlYWRlciBpZiBleGNfdHJhY2ViYWNrIGlzIE5vbmUKKyAgICAgICAgIyBzZWUgaXNzdWUgIzI0Njk1CisgICAgICAgIGV4YyA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oRXhjZXB0aW9uLCBFeGNlcHRpb24oImhhdmVuIiksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChleGMuZm9ybWF0KCkpLCBbIkV4Y2VwdGlvbjogaGF2ZW5cbiJdKQorCisKK2NsYXNzIE1pc2NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBzZXQoKQorICAgICAgICBibGFja2xpc3QgPSB7J3ByaW50X2xpc3QnfQorICAgICAgICBmb3IgbmFtZSBpbiBkaXIodHJhY2ViYWNrKToKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIG9yIG5hbWUgaW4gYmxhY2tsaXN0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtb2R1bGVfb2JqZWN0ID0gZ2V0YXR0cih0cmFjZWJhY2ssIG5hbWUpCisgICAgICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZV9vYmplY3QsICdfX21vZHVsZV9fJywgTm9uZSkgPT0gJ3RyYWNlYmFjayc6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbCh0cmFjZWJhY2suX19hbGxfXywgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggNDhjY2FiMi4uZjY1ZTM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC00LDggKzQsOSBAQAogaW1wb3J0IHRyYWNlbWFsbG9jCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKLWZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlciwgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCkKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTY2MCwxMSArNjYxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhYmNkZCcsICdhKmMqZScpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2FiY2JkZWZlZicsICdhKmJkKmVnJykpCiAKLSAgICAgICAgIyByZXBsYWNlIC5weWMgYW5kIC5weW8gc3VmZml4IHdpdGggLnB5CisgICAgICAgICMgcmVwbGFjZSAucHljIHN1ZmZpeCB3aXRoIC5weQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5weWMnLCAnYS5weScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5weW8nLCAnYS5weScpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5weScsICdhLnB5YycpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5weScsICdhLnB5bycpKQogCiAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgICMgY2FzZSBpbnNlbnNpdGl2ZQpAQCAtNjcyLDE4ICs2NzEsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhQmNEZScsICdBYipkRScpKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5weWMnLCAnYS5QWScpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZubWF0Y2goJ2EuUFlPJywgJ2EucHknKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmbm1hdGNoKCdhLnB5JywgJ2EuUFlDJykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm5tYXRjaCgnYS5QWScsICdhLnB5bycpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBjYXNlIHNlbnNpdGl2ZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhQkMnLCAnQUJjJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2FCY0RlJywgJ0FiKmRFJykpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYS5weWMnLCAnYS5QWScpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLlBZTycsICdhLnB5JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZubWF0Y2goJ2EucHknLCAnYS5QWUMnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaCgnYS5QWScsICdhLnB5bycpKQogCiAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgICMgbm9ybWFsaXplIGFsdGVybmF0ZSBzZXBhcmF0b3IgIi8iIHRvIHRoZSBzdGFuZGFyZCBzZXBhcmF0b3IgIlwiCkBAIC02OTgsNiArNjkzLDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZm5tYXRjaChyJ2EvYlxjJywgcidhXGIvYycpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKHInYS9iL2MnLCByJ2FcYlxjJykpCiAKKyAgICAgICAgIyBhcyBvZiAzLjUsIC5weW8gaXMgbm8gbG9uZ2VyIG11bmdlZCB0byAucHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbm1hdGNoKCdhLnB5bycsICdhLnB5JykpCisKICAgICBkZWYgdGVzdF9maWx0ZXJfbWF0Y2hfdHJhY2Uoc2VsZik6CiAgICAgICAgIHQxID0gKCgiYS5weSIsIDIpLCAoImIucHkiLCAzKSkKICAgICAgICAgdDIgPSAoKCJiLnB5IiwgNCksICgiYi5weSIsIDUpKQpAQCAtNzU1LDcgKzc1Myw3IEBACiAgICAgICAgIHN0ZG91dCA9IHN0ZG91dC5yc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYidGYWxzZScpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKHNjcmlwdF9oZWxwZXIuX2ludGVycHJldGVyX3JlcXVpcmVzX2Vudmlyb25tZW50KCksCisgICAgQHVuaXR0ZXN0LnNraXBJZihpbnRlcnByZXRlcl9yZXF1aXJlc19lbnZpcm9ubWVudCgpLAogICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBydW4gLUUgdGVzdHMgd2hlbiBQWVRIT04gZW52IHZhcnMgYXJlIHJlcXVpcmVkLicpCiAgICAgZGVmIHRlc3RfZW52X3Zhcl9pZ25vcmVkX3dpdGhfRShzZWxmKToKICAgICAgICAgIiIiUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgbXVzdCBiZSBpZ25vcmVkIHdoZW4gLUUgaXMgcHJlc2VudC4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkgYi9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CmluZGV4IGZjZGVkYWMuLjQ5MGU3MjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQpAQCAtNSwxMiArNSwxMCBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciB3YXNuJ3QgYnVpbHQuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190a2ludGVyJykKIAotIyBNYWtlIHN1cmUgdGtpbnRlci5fZml4IHJ1bnMgdG8gc2V0IHVwIHRoZSBlbnZpcm9ubWVudAotdGtpbnRlciA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgndGtpbnRlcicpCi0KICMgU2tpcCB0ZXN0IGlmIHRrIGNhbm5vdCBiZSBpbml0aWFsaXplZC4KIHN1cHBvcnQucmVxdWlyZXMoJ2d1aScpCiAKK2ltcG9ydCB0a2ludGVyCiBmcm9tIF90a2ludGVyIGltcG9ydCBUY2xFcnJvcgogZnJvbSB0a2ludGVyIGltcG9ydCB0dGsKIGZyb20gdGtpbnRlci50ZXN0IGltcG9ydCBydW50a3Rlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weSBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CmluZGV4IDFjZmViMTUuLjU2NmZjOWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CkBAIC00LDkgKzQsNiBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciBkb2VzIG5vdCBleGlzdC4KIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3RraW50ZXInKQogCi0jIE1ha2Ugc3VyZSB0a2ludGVyLl9maXggcnVucyB0byBzZXQgdXAgdGhlIGVudmlyb25tZW50Ci1zdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ3RraW50ZXInKQotCiBmcm9tIHRraW50ZXIudGVzdCBpbXBvcnQgcnVudGt0ZXN0cwogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5IGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQppbmRleCA1MTg3NWExLi5mYjExM2FiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKQEAgLTYsNiArNiwxMSBAQAogY2xhc3MgVHVwbGVUZXN0KHNlcV90ZXN0cy5Db21tb25UZXN0KToKICAgICB0eXBlMnRlc3QgPSB0dXBsZQogCisgICAgZGVmIHRlc3RfZ2V0aXRlbV9lcnJvcihzZWxmKToKKyAgICAgICAgbXNnID0gInR1cGxlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CisgICAgICAgICAgICAoKVsnYSddCisKICAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcnMoc2VsZik6CiAgICAgICAgIHN1cGVyKCkudGVzdF9jb25zdHJ1Y3RvcnMoKQogICAgICAgICAjIGNhbGxpbmcgYnVpbHQtaW4gdHlwZXMgd2l0aG91dCBhcmd1bWVudCBtdXN0IHJldHVybiBlbXB0eQpAQCAtMjAzLDggKzIwOCwxMyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBbMyxdICsgVCgoMSwyKSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFR1cGxlVGVzdCkKKyAgICBkZWYgdGVzdF9sZXhpY29ncmFwaGljX29yZGVyaW5nKHNlbGYpOgorICAgICAgICAjIElzc3VlIDIxMTAwCisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMSwgMl0pCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChbMSwgMiwgMF0pCisgICAgICAgIGMgPSBzZWxmLnR5cGUydGVzdChbMSwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhhLCBiKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoYiwgYykKIAotaWYgX19uYW1lX189PSJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGVjaGVja3MucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVjaGVja3MucHkKaW5kZXggMTdjZDVkMy4uYTBlNjE3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlY2hlY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwZWNoZWNrcy5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlVuaXQgdGVzdHMgZm9yIF9faW5zdGFuY2VjaGVja19fIGFuZCBfX3N1YmNsYXNzY2hlY2tfXy4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBBQkModHlwZSk6CkBAIC02OCw5ICs2Nyw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXNpbnN0YW5jZSg0MiwgKFN1YkludCwpKSwgRmFsc2UpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFR5cGVDaGVja3NUZXN0KQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQppbmRleCA4NDljYmE5Li41ZTc0MTE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKQEAgLTEsMTIgKzEsMTQgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgNiwgYnVpbHQtaW4gdHlwZXMKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX3dpdGhfbG9jYWxlCi1pbXBvcnQgY29sbGVjdGlvbnMKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fd2l0aF9sb2NhbGUKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2ltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKLWltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2ltcG9ydCB3ZWFrcmVmCiAKIGNsYXNzIFR5cGVzVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0zNDMsNiArMzQ1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgMyAuX19mb3JtYXRfXywgIixuIikKICAgICAgICAgIyBjYW4ndCBoYXZlICcsJyB3aXRoICdjJwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCAzIC5fX2Zvcm1hdF9fLCAiLGMiKQorICAgICAgICAjIGNhbid0IGhhdmUgJyMnIHdpdGggJ2MnCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIDMgLl9fZm9ybWF0X18sICIjYyIpCiAKICAgICAgICAgIyBlbnN1cmUgdGhhdCBvbmx5IGludCBhbmQgZmxvYXQgdHlwZSBzcGVjaWZpZXJzIHdvcmsKICAgICAgICAgZm9yIGZvcm1hdF9zcGVjIGluIChbY2hyKHgpIGZvciB4IGluIHJhbmdlKG9yZCgnYScpLCBvcmQoJ3onKSsxKV0gKwpAQCAtMTE4Niw5ICsxMTkwLDMxOCBAQAogICAgICAgICAgICAgdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkgPj0gRmFrZVNpbXBsZU5hbWVzcGFjZSgpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChUeXBlc1Rlc3RzLCBNYXBwaW5nUHJveHlUZXN0cywgQ2xhc3NDcmVhdGlvblRlc3RzLAotICAgICAgICAgICAgICAgICBTaW1wbGVOYW1lc3BhY2VUZXN0cykKK2NsYXNzIENvcm91dGluZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF93cm9uZ19hcmdzKHNlbGYpOgorICAgICAgICBzYW1wbGVzID0gW05vbmUsIDEsIG9iamVjdCgpXQorICAgICAgICBmb3Igc2FtcGxlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlcy5jb3JvdXRpbmUuKmV4cGVjdHMgYSBjYWxsYWJsZScpOgorICAgICAgICAgICAgICAgIHR5cGVzLmNvcm91dGluZShzYW1wbGUpCisKKyAgICBkZWYgdGVzdF9ub25fZ2VuX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gJ3NwYW0nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKCksICdzcGFtJykKKworICAgICAgICBjbGFzcyBBd2FpdGFibGU6CisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoKQorICAgICAgICBhdyA9IEF3YWl0YWJsZSgpCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGZvbygpOgorICAgICAgICAgICAgcmV0dXJuIGF3CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXcsIGZvbygpKQorCisgICAgICAgICMgZGVjb3JhdGUgZm9vIHNlY29uZCB0aW1lCisgICAgICAgIGZvbyA9IHR5cGVzLmNvcm91dGluZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXcsIGZvbygpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZGVmKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0eXBlcy5jb3JvdXRpbmUgcGFzc2VzICdhc3luYyBkZWYnIGNvcm91dGluZXMKKyAgICAgICAgIyB3aXRob3V0IG1vZGlmaWNhdGlvbgorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICBmb29fY29kZSA9IGZvby5fX2NvZGVfXworICAgICAgICBmb29fZmxhZ3MgPSBmb28uX19jb2RlX18uY29fZmxhZ3MKKyAgICAgICAgZGVjb3JhdGVkX2ZvbyA9IHR5cGVzLmNvcm91dGluZShmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vLCBkZWNvcmF0ZWRfZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5fX2NvZGVfXy5jb19mbGFncywgZm9vX2ZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydElzKGRlY29yYXRlZF9mb28uX19jb2RlX18sIGZvb19jb2RlKQorCisgICAgICAgIGZvb19jb3JvID0gZm9vKCkKKyAgICAgICAgZGVmIGJhcigpOiByZXR1cm4gZm9vX2Nvcm8KKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoMik6CisgICAgICAgICAgICBiYXIgPSB0eXBlcy5jb3JvdXRpbmUoYmFyKQorICAgICAgICAgICAgY29ybyA9IGJhcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZvb19jb3JvLCBjb3JvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3JvLmNyX2NvZGUuY29fZmxhZ3MsIGZvb19mbGFncykKKyAgICAgICAgICAgIGNvcm8uY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZHVja19jb3JvKHNlbGYpOgorICAgICAgICBjbGFzcyBDb3JvTGlrZToKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgdGhyb3coc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fYXdhaXRfXyhzZWxmKTogcmV0dXJuIHNlbGYKKworICAgICAgICBjb3JvID0gQ29yb0xpa2UoKQorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBjb3JvCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCksIGNvcm8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCkuX19hd2FpdF9fKCksIGNvcm8pCisKKyAgICBkZWYgdGVzdF9kdWNrX2Nvcm9nZW4oc2VsZik6CisgICAgICAgIGNsYXNzIENvcm9HZW5MaWtlOgorICAgICAgICAgICAgZGVmIHNlbmQoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgX19hd2FpdF9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiBwYXNzCisKKyAgICAgICAgY29ybyA9IENvcm9HZW5MaWtlKCkKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICByZXR1cm4gY29ybworICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLCBjb3JvKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLl9fYXdhaXRfXygpLCBjb3JvKQorCisgICAgZGVmIHRlc3RfZHVja19nZW4oc2VsZik6CisgICAgICAgIGNsYXNzIEdlbkxpa2U6CisgICAgICAgICAgICBkZWYgc2VuZChzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIHRocm93KHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOiBwYXNzCisKKyAgICAgICAgIyBTZXR1cCBnZW5lcmF0b3IgbW9jayBvYmplY3QKKyAgICAgICAgZ2VuID0gdW5pdHRlc3QubW9jay5NYWdpY01vY2soR2VuTGlrZSkKKyAgICAgICAgZ2VuLl9faXRlcl9fID0gbGFtYmRhIGdlbjogZ2VuCisgICAgICAgIGdlbi5fX25hbWVfXyA9ICdnZW4nCisgICAgICAgIGdlbi5fX3F1YWxuYW1lX18gPSAndGVzdC5nZW4nCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnZW4sIGNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZ2VuLCBpdGVyKGdlbikpCisKKyAgICAgICAgQHR5cGVzLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6IHJldHVybiBnZW4KKworICAgICAgICB3cmFwcGVyID0gZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIHR5cGVzLl9HZW5lcmF0b3JXcmFwcGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX19hd2FpdF9fKCksIHdyYXBwZXIpCisgICAgICAgICMgV3JhcHBlciBwcm94aWVzIGR1Y2sgZ2VuZXJhdG9ycyBjb21wbGV0ZWx5OgorICAgICAgICBzZWxmLmFzc2VydElzKGl0ZXIod3JhcHBlciksIHdyYXBwZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3cmFwcGVyLCBjb2xsZWN0aW9ucy5hYmMuQXdhaXRhYmxlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX3F1YWxuYW1lX18sIGdlbi5fX3F1YWxuYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX25hbWVfXywgZ2VuLl9fbmFtZV9fKQorCisgICAgICAgICMgVGVzdCBBdHRyaWJ1dGVFcnJvcnMKKyAgICAgICAgZm9yIG5hbWUgaW4geydnaV9ydW5uaW5nJywgJ2dpX2ZyYW1lJywgJ2dpX2NvZGUnLCAnZ2lfeWllbGRmcm9tJywKKyAgICAgICAgICAgICAgICAgICAgICdjcl9ydW5uaW5nJywgJ2NyX2ZyYW1lJywgJ2NyX2NvZGUnLCAnY3JfYXdhaXQnfToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgIGdldGF0dHIod3JhcHBlciwgbmFtZSkKKworICAgICAgICAjIFRlc3QgYXR0cmlidXRlcyBwYXNzLXRocm91Z2gKKyAgICAgICAgZ2VuLmdpX3J1bm5pbmcgPSBvYmplY3QoKQorICAgICAgICBnZW4uZ2lfZnJhbWUgPSBvYmplY3QoKQorICAgICAgICBnZW4uZ2lfY29kZSA9IG9iamVjdCgpCisgICAgICAgIGdlbi5naV95aWVsZGZyb20gPSBvYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuZ2lfcnVubmluZywgZ2VuLmdpX3J1bm5pbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5naV9mcmFtZSwgZ2VuLmdpX2ZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuZ2lfY29kZSwgZ2VuLmdpX2NvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5naV95aWVsZGZyb20sIGdlbi5naV95aWVsZGZyb20pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5jcl9ydW5uaW5nLCBnZW4uZ2lfcnVubmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmNyX2ZyYW1lLCBnZW4uZ2lfZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5jcl9jb2RlLCBnZW4uZ2lfY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cmFwcGVyLmNyX2F3YWl0LCBnZW4uZ2lfeWllbGRmcm9tKQorCisgICAgICAgIHdyYXBwZXIuY2xvc2UoKQorICAgICAgICBnZW4uY2xvc2UuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHdyYXBwZXIuc2VuZCgxKQorICAgICAgICBnZW4uc2VuZC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxKQorICAgICAgICBnZW4ucmVzZXRfbW9jaygpCisKKyAgICAgICAgbmV4dCh3cmFwcGVyKQorICAgICAgICBnZW4uX19uZXh0X18uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorICAgICAgICBnZW4ucmVzZXRfbW9jaygpCisKKyAgICAgICAgd3JhcHBlci50aHJvdygxLCAyLCAzKQorICAgICAgICBnZW4udGhyb3cuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICAgICAgZ2VuLnJlc2V0X21vY2soKQorCisgICAgICAgIHdyYXBwZXIudGhyb3coMSwgMikKKyAgICAgICAgZ2VuLnRocm93LmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIpCisgICAgICAgIGdlbi5yZXNldF9tb2NrKCkKKworICAgICAgICB3cmFwcGVyLnRocm93KDEpCisgICAgICAgIGdlbi50aHJvdy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgxKQorICAgICAgICBnZW4ucmVzZXRfbW9jaygpCisKKyAgICAgICAgIyBUZXN0IGV4Y2VwdGlvbnMgcHJvcGFnYXRpb24KKyAgICAgICAgZXJyb3IgPSBFeGNlcHRpb24oKQorICAgICAgICBnZW4udGhyb3cuc2lkZV9lZmZlY3QgPSBlcnJvcgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3cmFwcGVyLnRocm93KDEpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGV4LCBlcnJvcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnd3JhcHBlciBkaWQgbm90IHByb3BhZ2F0ZSBhbiBleGNlcHRpb24nKQorCisgICAgICAgICMgVGVzdCBpbnZhbGlkIGFyZ3MKKyAgICAgICAgZ2VuLnJlc2V0X21vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3cmFwcGVyLnRocm93KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZW4udGhyb3cuY2FsbGVkKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB3cmFwcGVyLmNsb3NlKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2VuLmNsb3NlLmNhbGxlZCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd3JhcHBlci5zZW5kKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZW4uc2VuZC5jYWxsZWQpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgZG8gbm90IGRvdWJsZSB3cmFwCisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGJhcigpOiByZXR1cm4gd3JhcHBlcgorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIsIGJhcigpKQorCisgICAgICAgICMgVGVzdCB3ZWFrcmVmcyBzdXBwb3J0CisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKHdyYXBwZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVmKCksIHdyYXBwZXIpCisKKyAgICBkZWYgdGVzdF9kdWNrX2Z1bmN0aW9uYWxfZ2VuKHNlbGYpOgorICAgICAgICBjbGFzcyBHZW5lcmF0b3I6CisgICAgICAgICAgICAiIiJFbXVsYXRlcyB0aGUgZm9sbG93aW5nIGdlbmVyYXRvciAodmVyeSBjbHVtc3kpOgorCisgICAgICAgICAgICAgIGRlZiBnZW4oZnV0KToKKyAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGZ1dAorICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCAqIDIKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1dCk6CisgICAgICAgICAgICAgICAgc2VsZi5faSA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLl9mdXQgPSBmdXQKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIGRlZiBzZW5kKHNlbGYsIHYpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5faSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHYgaXMgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Z1dAorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKHYgKiAyKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pICs9IDEKKyAgICAgICAgICAgIGRlZiB0aHJvdyhzZWxmLCB0cCwgKmV4Yyk6CisgICAgICAgICAgICAgICAgc2VsZi5faSA9IDEwMAorICAgICAgICAgICAgICAgIGlmIHRwIGlzIG5vdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgICAgICByYWlzZSB0cAorICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYudGhyb3coR2VuZXJhdG9yRXhpdCkKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIEdlbmVyYXRvcignc3BhbScpCisKKyAgICAgICAgd3JhcHBlciA9IGZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh3cmFwcGVyLCB0eXBlcy5fR2VuZXJhdG9yV3JhcHBlcikKKworICAgICAgICBhc3luYyBkZWYgY29yb2Z1bmMoKToKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmb28oKSArIDEwMAorICAgICAgICBjb3JvID0gY29yb2Z1bmMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29yby5zZW5kKE5vbmUpLCAnc3BhbScpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvcm8uc2VuZCgyMCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDE0MCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgZXhwZWN0ZWQnKQorCisgICAgZGVmIHRlc3RfZ2VuKHNlbGYpOgorICAgICAgICBkZWYgZ2VuX2Z1bmMoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHJldHVybiAoeWllbGQgMikKKyAgICAgICAgZ2VuID0gZ2VuX2Z1bmMoKQorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKTogcmV0dXJuIGdlbgorICAgICAgICB3cmFwcGVyID0gZm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdyYXBwZXIsIHR5cGVzLl9HZW5lcmF0b3JXcmFwcGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyYXBwZXIuX19hd2FpdF9fKCksIGdlbikKKworICAgICAgICBmb3IgbmFtZSBpbiAoJ19fbmFtZV9fJywgJ19fcXVhbG5hbWVfXycsICdnaV9jb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdnaV9ydW5uaW5nJywgJ2dpX2ZyYW1lJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIoZm9vKCksIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKGdlbiwgbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm9vKCkuY3JfY29kZSwgZ2VuLmdpX2NvZGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KHdyYXBwZXIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuc2VuZChOb25lKSwgMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN0b3BJdGVyYXRpb24sICdzcGFtJyk6CisgICAgICAgICAgICB3cmFwcGVyLnNlbmQoJ3NwYW0nKQorCisgICAgICAgIGdlbiA9IGdlbl9mdW5jKCkKKyAgICAgICAgd3JhcHBlciA9IGZvbygpCisgICAgICAgIHdyYXBwZXIuc2VuZChOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAnaGFtJyk6CisgICAgICAgICAgICB3cmFwcGVyLnRocm93KEV4Y2VwdGlvbiwgRXhjZXB0aW9uKCdoYW0nKSkKKworICAgICAgICAjIGRlY29yYXRlIGZvbyBzZWNvbmQgdGltZQorICAgICAgICBmb28gPSB0eXBlcy5jb3JvdXRpbmUoZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLl9fYXdhaXRfXygpLCBnZW4pCisKKyAgICBkZWYgdGVzdF9yZXR1cm5pbmdfaXRlcmNvcm8oc2VsZik6CisgICAgICAgIEB0eXBlcy5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQKKworICAgICAgICBnZW5jb3JvID0gZ2VuKCkKKworICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHJldHVybiBnZW5jb3JvCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb28oKSwgZ2VuY29ybykKKworICAgICAgICAjIGRlY29yYXRlIGZvbyBzZWNvbmQgdGltZQorICAgICAgICBmb28gPSB0eXBlcy5jb3JvdXRpbmUoZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKGZvbygpLCBnZW5jb3JvKQorCisgICAgZGVmIHRlc3RfZ2VuZnVuYyhzZWxmKToKKyAgICAgICAgZGVmIGdlbigpOiB5aWVsZAorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGVzLmNvcm91dGluZShnZW4pLCBnZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZXMuY29yb3V0aW5lKHR5cGVzLmNvcm91dGluZShnZW4pKSwgZ2VuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnZW4uX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0lURVJBQkxFX0NPUk9VVElORSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZW4uX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGcuZ2lfY29kZS5jb19mbGFncyAmIGluc3BlY3QuQ09fSVRFUkFCTEVfQ09ST1VUSU5FKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGcuZ2lfY29kZS5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZXMuY29yb3V0aW5lKGdlbiksIGdlbikKKworICAgIGRlZiB0ZXN0X3dyYXBwZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZAorICAgICAgICBAdHlwZXMuY29yb3V0aW5lCisgICAgICAgIGRlZiBjb3JvKCk6CisgICAgICAgICAgICByZXR1cm4gZ2VuKCkKKworICAgICAgICB3cmFwcGVyID0gY29ybygpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0dlbmVyYXRvcldyYXBwZXInLCByZXByKHdyYXBwZXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIod3JhcHBlciksIHN0cih3cmFwcGVyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChkaXIod3JhcHBlcikpLmlzc3VwZXJzZXQoeworICAgICAgICAgICAgJ19fYXdhaXRfXycsICdfX2l0ZXJfXycsICdfX25leHRfXycsICdjcl9jb2RlJywgJ2NyX3J1bm5pbmcnLAorICAgICAgICAgICAgJ2NyX2ZyYW1lJywgJ2dpX2NvZGUnLCAnZ2lfZnJhbWUnLCAnZ2lfcnVubmluZycsICdzZW5kJywKKyAgICAgICAgICAgICdjbG9zZScsICd0aHJvdyd9KSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjFjZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGluZy5weQpAQCAtMCwwICsxLDEyNTcgQEAKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2ltcG9ydCByZQoraW1wb3J0IHN5cworZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIG1haW4KK3RyeToKKyAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IG1vY2sgICMgM3JkIHBhcnR5IGluc3RhbGwsIGZvciBQWTMuMi4KKworZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGVWYXIsIEFueVN0cgorZnJvbSB0eXBpbmcgaW1wb3J0IFQsIEtULCBWVCAgIyBOb3QgaW4gX19hbGxfXy4KK2Zyb20gdHlwaW5nIGltcG9ydCBVbmlvbiwgT3B0aW9uYWwKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCitmcm9tIHR5cGluZyBpbXBvcnQgR2VuZXJpYworZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKK2Zyb20gdHlwaW5nIGltcG9ydCBnZXRfdHlwZV9oaW50cworZnJvbSB0eXBpbmcgaW1wb3J0IG5vX3R5cGVfY2hlY2ssIG5vX3R5cGVfY2hlY2tfZGVjb3JhdG9yCitmcm9tIHR5cGluZyBpbXBvcnQgTmFtZWRUdXBsZQorZnJvbSB0eXBpbmcgaW1wb3J0IElPLCBUZXh0SU8sIEJpbmFyeUlPCitmcm9tIHR5cGluZyBpbXBvcnQgUGF0dGVybiwgTWF0Y2gKK2ltcG9ydCB0eXBpbmcKKworCitjbGFzcyBFbXBsb3llZToKKyAgICBwYXNzCisKKworY2xhc3MgTWFuYWdlcihFbXBsb3llZSk6CisgICAgcGFzcworCisKK2NsYXNzIEZvdW5kZXIoRW1wbG95ZWUpOgorICAgIHBhc3MKKworCitjbGFzcyBNYW5hZ2luZ0ZvdW5kZXIoTWFuYWdlciwgRm91bmRlcik6CisgICAgcGFzcworCisKK2NsYXNzIEFueVRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FueV9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc2luc3RhbmNlKDQyLCBBbnkpCisKKyAgICBkZWYgdGVzdF9hbnlfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEVtcGxveWVlLCBBbnkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhpbnQsIEFueSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoTm9uZSksIEFueSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKG9iamVjdCwgQW55KSkKKworICAgIGRlZiB0ZXN0X290aGVyc19hbnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhBbnksIEVtcGxveWVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEFueSwgaW50KSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEFueSwgdHlwZShOb25lKSkpCisgICAgICAgICMgSG93ZXZlciwgQW55IGlzIGEgc3ViY2xhc3Mgb2Ygb2JqZWN0ICh0aGlzIGNhbid0IGJlIGhlbHBlZCkuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEFueSwgb2JqZWN0KSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihBbnkpLCAndHlwaW5nLkFueScpCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzc3ViY2xhc3MoNDIsIEFueSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQW55W2ludF0gICMgQW55IGlzIG5vdCBhIGdlbmVyaWMgdHlwZS4KKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQShBbnkpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9pbnN0YW50aWF0ZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQW55KCkKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJzY3JpcHQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFueVtpbnRdCisKKyAgICBkZWYgdGVzdF9hbnlfaXNfc3ViY2xhc3Moc2VsZik6CisgICAgICAgICMgQW55IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgc3ViY2xhc3Mgb2YgZXZlcnl0aGluZy4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBBbnkpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLkxpc3QpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLkxpc3RbaW50XSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTGlzdFtUXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWFwcGluZykKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCB0eXBpbmcuTWFwcGluZ1tzdHIsIGludF0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLk1hcHBpbmdbS1QsIFZUXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBHZW5lcmljKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEdlbmVyaWNbVF0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgR2VuZXJpY1tLVCwgVlRdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIEFueVN0cikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBVbmlvbikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQW55LCBVbmlvbltpbnQsIHN0cl0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEFueSwgdHlwaW5nLk1hdGNoKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBbnksIHR5cGluZy5NYXRjaFtzdHJdKQorICAgICAgICAjIFRoZXNlIGV4cHJlc3Npb25zIG11c3Qgc2ltcGx5IG5vdCBmYWlsLgorICAgICAgICB0eXBpbmcuTWF0Y2hbQW55XQorICAgICAgICB0eXBpbmcuUGF0dGVybltBbnldCisgICAgICAgIHR5cGluZy5JT1tBbnldCisKKworY2xhc3MgVHlwZVZhclRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljX3BsYWluKHNlbGYpOgorICAgICAgICBUID0gVHlwZVZhcignVCcpCisgICAgICAgICMgRXZlcnkgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiBULgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhpbnQsIFQpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHN0ciwgVCkKKyAgICAgICAgIyBUIGVxdWFscyBpdHNlbGYuCisgICAgICAgIGFzc2VydCBUID09IFQKKyAgICAgICAgIyBUIGlzIGEgc3ViY2xhc3Mgb2YgaXRzZWxmLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhULCBUKQorICAgICAgICAjIFQgaXMgYW4gaW5zdGFuY2Ugb2YgVHlwZVZhcgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShULCBUeXBlVmFyKQorCisgICAgZGVmIHRlc3RfdHlwZXZhcl9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICBUID0gVHlwZVZhcignVCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIFQpCisKKyAgICBkZWYgdGVzdF9iYXNpY19jb25zdHJhaW5lZChzZWxmKToKKyAgICAgICAgQSA9IFR5cGVWYXIoJ0EnLCBzdHIsIGJ5dGVzKQorICAgICAgICAjIE9ubHkgc3RyIGFuZCBieXRlcyBhcmUgc3ViY2xhc3NlcyBvZiBBLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhzdHIsIEEpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGJ5dGVzLCBBKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoaW50LCBBKQorICAgICAgICAjIEEgZXF1YWxzIGl0c2VsZi4KKyAgICAgICAgYXNzZXJ0IEEgPT0gQQorICAgICAgICAjIEEgaXMgYSBzdWJjbGFzcyBvZiBpdHNlbGYuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEEsIEEpCisKKyAgICBkZWYgdGVzdF9jb25zdHJhaW5lZF9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgWCA9IFR5cGVWYXIoJ1gnLCBpbnQpCisKKyAgICBkZWYgdGVzdF91bmlvbl91bmlxdWUoc2VsZik6CisgICAgICAgIFggPSBUeXBlVmFyKCdYJykKKyAgICAgICAgWSA9IFR5cGVWYXIoJ1knKQorICAgICAgICBhc3NlcnQgWCAhPSBZCisgICAgICAgIGFzc2VydCBVbmlvbltYXSA9PSBYCisgICAgICAgIGFzc2VydCBVbmlvbltYXSAhPSBVbmlvbltYLCBZXQorICAgICAgICBhc3NlcnQgVW5pb25bWCwgWF0gPT0gWAorICAgICAgICBhc3NlcnQgVW5pb25bWCwgaW50XSAhPSBVbmlvbltYXQorICAgICAgICBhc3NlcnQgVW5pb25bWCwgaW50XSAhPSBVbmlvbltpbnRdCisgICAgICAgIGFzc2VydCBVbmlvbltYLCBpbnRdLl9fdW5pb25fcGFyYW1zX18gPT0gKFgsIGludCkKKyAgICAgICAgYXNzZXJ0IFVuaW9uW1gsIGludF0uX191bmlvbl9zZXRfcGFyYW1zX18gPT0ge1gsIGludH0KKworICAgIGRlZiB0ZXN0X3VuaW9uX2NvbnN0cmFpbmVkKHNlbGYpOgorICAgICAgICBBID0gVHlwZVZhcignQScsIHN0ciwgYnl0ZXMpCisgICAgICAgIGFzc2VydCBVbmlvbltBLCBzdHJdICE9IFVuaW9uW0FdCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVCksICd+VCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihLVCksICd+S1QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVlQpLCAnflZUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEFueVN0ciksICd+QW55U3RyJykKKyAgICAgICAgVF9jbyA9IFR5cGVWYXIoJ1RfY28nLCBjb3ZhcmlhbnQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFRfY28pLCAnK1RfY28nKQorICAgICAgICBUX2NvbnRyYSA9IFR5cGVWYXIoJ1RfY29udHJhJywgY29udHJhdmFyaWFudD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVF9jb250cmEpLCAnLVRfY29udHJhJykKKworICAgIGRlZiB0ZXN0X25vX3JlZGVmaW5pdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChUeXBlVmFyKCdUJyksIFR5cGVWYXIoJ1QnKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChUeXBlVmFyKCdUJywgaW50LCBzdHIpLCBUeXBlVmFyKCdUJywgaW50LCBzdHIpKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NfYXNfdW5pb25zKHNlbGYpOgorICAgICAgICAjIE5vbmUgb2YgdGhlc2UgYXJlIHRydWUgLS0gZWFjaCB0eXBlIHZhciBpcyBpdHMgb3duIHdvcmxkLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHlwZVZhcignVCcsIGludCwgc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVWYXIoJ1QnLCBpbnQsIHN0cikpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHlwZVZhcignVCcsIGludCwgZmxvYXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVZhcignVCcsIGludCwgZmxvYXQsIHN0cikpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHlwZVZhcignVCcsIGludCwgc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVWYXIoJ1QnLCBzdHIsIGludCkpKQorICAgICAgICBBID0gVHlwZVZhcignQScsIGludCwgc3RyKQorICAgICAgICBCID0gVHlwZVZhcignQicsIGludCwgc3RyLCBmbG9hdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEEsIEIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQiwgQSkpCisKKyAgICBkZWYgdGVzdF9jYW5ub3Rfc3ViY2xhc3NfdmFycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgVihUeXBlVmFyKCdUJykpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzc192YXJfaXRzZWxmKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBWKFR5cGVWYXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9pbnN0YW50aWF0ZV92YXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBUeXBlVmFyKCdBJykoKQorCisgICAgZGVmIHRlc3RfYm91bmQoc2VsZik6CisgICAgICAgIFggPSBUeXBlVmFyKCdYJywgYm91bmQ9RW1wbG95ZWUpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEVtcGxveWVlLCBYKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhNYW5hZ2VyLCBYKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoaW50LCBYKQorCisgICAgZGVmIHRlc3RfYm91bmRfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBUeXBlVmFyKCdYJywgYm91bmQ9NDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR5cGVWYXIoJ1gnLCBzdHIsIGZsb2F0LCBib3VuZD1FbXBsb3llZSkKKworCitjbGFzcyBVbmlvblRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW2ludCwgZmxvYXRdCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodSwgVW5pb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGludCwgdSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGZsb2F0LCB1KSkKKworICAgIGRlZiB0ZXN0X3VuaW9uX2FueShzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW0FueV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBBbnkpCisgICAgICAgIHUgPSBVbmlvbltpbnQsIEFueV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBBbnkpCisgICAgICAgIHUgPSBVbmlvbltBbnksIGludF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBBbnkpCisKKyAgICBkZWYgdGVzdF91bmlvbl9vYmplY3Qoc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltvYmplY3RdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgb2JqZWN0KQorICAgICAgICB1ID0gVW5pb25baW50LCBvYmplY3RdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgb2JqZWN0KQorICAgICAgICB1ID0gVW5pb25bb2JqZWN0LCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgb2JqZWN0KQorCisgICAgZGVmIHRlc3RfdW5pb25fYW55X29iamVjdChzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW29iamVjdCwgQW55XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKyAgICAgICAgdSA9IFVuaW9uW0FueSwgb2JqZWN0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIEFueSkKKworICAgIGRlZiB0ZXN0X3Vub3JkZXJlZChzZWxmKToKKyAgICAgICAgdTEgPSBVbmlvbltpbnQsIGZsb2F0XQorICAgICAgICB1MiA9IFVuaW9uW2Zsb2F0LCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodTEsIHUyKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2VyLCB1KSkKKworICAgIGRlZiB0ZXN0X3NlbGZfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFVuaW9uW0tULCBWVF0sIFVuaW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFVuaW9uLCBVbmlvbltLVCwgVlRdKSkKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX2luaGVyaXRhbmNlKHNlbGYpOgorICAgICAgICB1ID0gVW5pb25baW50LCBFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFuYWdpbmdGb3VuZGVyLCB1KSkKKworICAgIGRlZiB0ZXN0X3NpbmdsZV9jbGFzc19kaXNhcHBlYXJzKHNlbGYpOgorICAgICAgICB0ID0gVW5pb25bRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0SXModCwgRW1wbG95ZWUpCisKKyAgICBkZWYgdGVzdF9iYXNlX2NsYXNzX2Rpc2FwcGVhcnMoc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltFbXBsb3llZSwgTWFuYWdlciwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFVuaW9uW2ludCwgRW1wbG95ZWVdKQorICAgICAgICB1ID0gVW5pb25bTWFuYWdlciwgaW50LCBFbXBsb3llZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBVbmlvbltpbnQsIEVtcGxveWVlXSkKKyAgICAgICAgdSA9IFVuaW9uW0VtcGxveWVlLCBNYW5hZ2VyXQorICAgICAgICBzZWxmLmFzc2VydElzKHUsIEVtcGxveWVlKQorCisgICAgZGVmIHRlc3Rfd2VpcmRfc3ViY2xhc3NlcyhzZWxmKToKKyAgICAgICAgdSA9IFVuaW9uW0VtcGxveWVlLCBpbnQsIGZsb2F0XQorICAgICAgICB2ID0gVW5pb25baW50LCBmbG9hdF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModiwgdSkpCisgICAgICAgIHcgPSBVbmlvbltpbnQsIE1hbmFnZXJdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHcsIHUpKQorCisgICAgZGVmIHRlc3RfdW5pb25fdW5pb24oc2VsZik6CisgICAgICAgIHUgPSBVbmlvbltpbnQsIGZsb2F0XQorICAgICAgICB2ID0gVW5pb25bdSwgRW1wbG95ZWVdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgVW5pb25baW50LCBmbG9hdCwgRW1wbG95ZWVdKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFVuaW9uKSwgJ3R5cGluZy5VbmlvbicpCisgICAgICAgIHUgPSBVbmlvbltFbXBsb3llZSwgaW50XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodSksICd0eXBpbmcuVW5pb25bJXMuRW1wbG95ZWUsIGludF0nICUgX19uYW1lX18pCisgICAgICAgIHUgPSBVbmlvbltpbnQsIEVtcGxveWVlXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodSksICd0eXBpbmcuVW5pb25baW50LCAlcy5FbXBsb3llZV0nICUgX19uYW1lX18pCisKKyAgICBkZWYgdGVzdF9jYW5ub3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEMoVW5pb24pOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQyhVbmlvbltpbnQsIHN0cl0pOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9pbnN0YW50aWF0ZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVW5pb24oKQorICAgICAgICB1ID0gVW5pb25baW50LCBmbG9hdF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdSgpCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbChzZWxmKToKKyAgICAgICAgbyA9IE9wdGlvbmFsW2ludF0KKyAgICAgICAgdSA9IFVuaW9uW2ludCwgTm9uZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLCB1KQorCisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFVuaW9uWygpXQorCisgICAgZGVmIHRlc3RfaXNzdWJjbGFzc191bmlvbihzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVW5pb25baW50LCBzdHJdLCBVbmlvbikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKGludCwgVW5pb24pCisKKyAgICBkZWYgdGVzdF91bmlvbl9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc2luc3RhbmNlKDQyLCBVbmlvbltpbnQsIHN0cl0pCisKKworY2xhc3MgVHlwZVZhclVuaW9uVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2ltcGxlcihzZWxmKToKKyAgICAgICAgQSA9IFR5cGVWYXIoJ0EnLCBpbnQsIHN0ciwgZmxvYXQpCisgICAgICAgIEIgPSBUeXBlVmFyKCdCJywgaW50LCBzdHIpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEEsIEEpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEIsIEIpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhCLCBBKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhBLCBVbmlvbltpbnQsIHN0ciwgZmxvYXRdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVW5pb25baW50LCBzdHIsIGZsb2F0XSwgQSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFVuaW9uW2ludCwgc3RyXSwgQikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoQiwgVW5pb25baW50LCBzdHJdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoQSwgQikKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFVuaW9uW2ludCwgc3RyLCBmbG9hdF0sIEIpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhBLCBVbmlvbltpbnQsIHN0cl0pCisKKyAgICBkZWYgdGVzdF92YXJfdW5pb25fc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFQsIFVuaW9uW2ludCwgVF0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhLVCwgVW5pb25bS1QsIFZUXSkpCisKKyAgICBkZWYgdGVzdF92YXJfdW5pb24oc2VsZik6CisgICAgICAgIFRVID0gVHlwZVZhcignVFUnLCBVbmlvbltpbnQsIGZsb2F0XSwgTm9uZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCBUVSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZmxvYXQsIFRVKQorCisKK2NsYXNzIFR1cGxlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhUdXBsZVtpbnQsIHN0cl0sIFR1cGxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVHVwbGVbaW50LCBzdHJdLCBUdXBsZVtpbnQsIHN0cl0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoaW50LCBUdXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUdXBsZVtmbG9hdCwgc3RyXSwgVHVwbGVbaW50LCBzdHJdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFR1cGxlW2ludCwgc3RyLCBpbnRdLCBUdXBsZVtpbnQsIHN0cl0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoVHVwbGVbaW50LCBzdHJdLCBUdXBsZVtpbnQsIHN0ciwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR1cGxlLCBUdXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhUdXBsZSwgdHVwbGUpKSAgIyBDYW4ndCBoYXZlIGl0IGJvdGggd2F5cy4KKworICAgIGRlZiB0ZXN0X3R1cGxlX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeVR1cGxlKHR1cGxlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXlUdXBsZSwgVHVwbGUpKQorCisgICAgZGVmIHRlc3RfdHVwbGVfaW5zdGFuY2VfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSgoMCwgMCksIFR1cGxlW2ludCwgaW50XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZSgoMCwgMCksIFR1cGxlKQorCisgICAgZGVmIHRlc3RfdHVwbGVfZWxsaXBzaXNfc3ViY2xhc3Moc2VsZik6CisKKyAgICAgICAgY2xhc3MgQjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBDKEIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtCXSwgVHVwbGVbQiwgLi4uXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbQywgLi4uXSwgVHVwbGVbQiwgLi4uXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKFR1cGxlW0MsIC4uLl0sIFR1cGxlW0JdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3MoVHVwbGVbQ10sIFR1cGxlW0IsIC4uLl0pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVHVwbGUpLCAndHlwaW5nLlR1cGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFR1cGxlWygpXSksICd0eXBpbmcuVHVwbGVbXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihUdXBsZVtpbnQsIGZsb2F0XSksICd0eXBpbmcuVHVwbGVbaW50LCBmbG9hdF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoVHVwbGVbaW50LCAuLi5dKSwgJ3R5cGluZy5UdXBsZVtpbnQsIC4uLl0nKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpc3N1YmNsYXNzKDQyLCBUdXBsZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNzdWJjbGFzcyg0MiwgVHVwbGVbaW50XSkKKworCitjbGFzcyBDYWxsYWJsZVRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NlbGZfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDYWxsYWJsZSwgQ2FsbGFibGVbW2ludF0sIGludF0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW2ludF0sIGludF0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW0VtcGxveWVlXSwgaW50XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxhYmxlW1tNYW5hZ2VyXSwgaW50XSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDYWxsYWJsZVtbTWFuYWdlcl0sIGludF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsYWJsZVtbRW1wbG95ZWVdLCBpbnRdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENhbGxhYmxlW1tpbnRdLCBFbXBsb3llZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsYWJsZVtbaW50XSwgTWFuYWdlcl0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ2FsbGFibGVbW2ludF0sIE1hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGFibGVbW2ludF0sIEVtcGxveWVlXSkpCisKKyAgICBkZWYgdGVzdF9lcV9oYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbaW50XSwgaW50XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oe0NhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbaW50XSwgaW50XX0pLCAxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZVtbaW50XSwgc3RyXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChDYWxsYWJsZVtbaW50XSwgaW50XSwgQ2FsbGFibGVbW3N0cl0sIGludF0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tpbnQsIGludF0sIGludF0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoQ2FsbGFibGVbW2ludF0sIGludF0sIENhbGxhYmxlW1tdLCBpbnRdKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKENhbGxhYmxlW1tpbnRdLCBpbnRdLCBDYWxsYWJsZSkKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorCisgICAgICAgICAgICBjbGFzcyBDKENhbGxhYmxlKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorCisgICAgICAgICAgICBjbGFzcyBDKENhbGxhYmxlW1tpbnRdLCBpbnRdKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jYW5ub3RfaW5zdGFudGlhdGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIENhbGxhYmxlKCkKKyAgICAgICAgYyA9IENhbGxhYmxlW1tpbnRdLCBzdHJdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGMoKQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfaW5zdGFuY2Vfd29ya3Moc2VsZik6CisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGYsIENhbGxhYmxlKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoTm9uZSwgQ2FsbGFibGUpCisKKyAgICBkZWYgdGVzdF9jYWxsYWJsZV9pbnN0YW5jZV90eXBlX2Vycm9yKHNlbGYpOgorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmLCBDYWxsYWJsZVtbXSwgTm9uZV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGYsIENhbGxhYmxlW1tdLCBBbnldKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoTm9uZSwgQ2FsbGFibGVbW10sIE5vbmVdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoTm9uZSwgQ2FsbGFibGVbW10sIEFueV0pCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBjdDAgPSBDYWxsYWJsZVtbXSwgYm9vbF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGN0MCksICd0eXBpbmcuQ2FsbGFibGVbW10sIGJvb2xdJykKKyAgICAgICAgY3QyID0gQ2FsbGFibGVbW3N0ciwgZmxvYXRdLCBpbnRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjdDIpLCAndHlwaW5nLkNhbGxhYmxlW1tzdHIsIGZsb2F0XSwgaW50XScpCisgICAgICAgIGN0diA9IENhbGxhYmxlWy4uLiwgc3RyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY3R2KSwgJ3R5cGluZy5DYWxsYWJsZVsuLi4sIHN0cl0nKQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfd2l0aF9lbGxpcHNpcyhzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IENhbGxhYmxlWy4uLiwgVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3R5cGVfaGludHMoZm9vLCBnbG9iYWxzKCksIGxvY2FscygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBDYWxsYWJsZVsuLi4sIFRdfSkKKworCitYSyA9IFR5cGVWYXIoJ1hLJywgc3RyLCBieXRlcykKK1hWID0gVHlwZVZhcignWFYnKQorCisKK2NsYXNzIFNpbXBsZU1hcHBpbmcoR2VuZXJpY1tYSywgWFZdKToKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXk6IFhLKSAtPiBYVjoKKyAgICAgICAgLi4uCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBYSywgdmFsdWU6IFhWKToKKyAgICAgICAgLi4uCisKKyAgICBkZWYgZ2V0KHNlbGYsIGtleTogWEssIGRlZmF1bHQ6IFhWID0gTm9uZSkgLT4gWFY6CisgICAgICAgIC4uLgorCisKK2NsYXNzIE15U2ltcGxlTWFwcGluZyhTaW1wbGVNYXBwaW5nKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zdG9yZSA9IHt9CisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5OiBzdHIpOgorICAgICAgICByZXR1cm4gc2VsZi5zdG9yZVtrZXldCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5OiBzdHIsIHZhbHVlKToKKyAgICAgICAgc2VsZi5zdG9yZVtrZXldID0gdmFsdWUKKworICAgIGRlZiBnZXQoc2VsZiwga2V5OiBzdHIsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN0b3JlW2tleV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKworCitjbGFzcyBQcm90b2NvbFRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2ludChzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCB0eXBpbmcuU3VwcG9ydHNJbnQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0ludCkKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2Zsb2F0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmbG9hdCwgdHlwaW5nLlN1cHBvcnRzRmxvYXQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0Zsb2F0KQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfY29tcGxleChzZWxmKToKKworICAgICAgICAjIE5vdGU6IGNvbXBsZXggaXRzZWxmIGRvZXNuJ3QgaGF2ZSBfX2NvbXBsZXhfXy4KKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBfX2NvbXBsZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMGoKKworICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhDLCB0eXBpbmcuU3VwcG9ydHNDb21wbGV4KQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNDb21wbGV4KQorCisgICAgZGVmIHRlc3Rfc3VwcG9ydHNfYnl0ZXMoc2VsZik6CisKKyAgICAgICAgIyBOb3RlOiBieXRlcyBpdHNlbGYgZG9lc24ndCBoYXZlIF9fYnl0ZXNfXy4KKyAgICAgICAgY2xhc3MgQjoKKyAgICAgICAgICAgIGRlZiBfX2J5dGVzX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJworCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKEIsIHR5cGluZy5TdXBwb3J0c0J5dGVzKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3Moc3RyLCB0eXBpbmcuU3VwcG9ydHNCeXRlcykKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX2FicyhzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoZmxvYXQsIHR5cGluZy5TdXBwb3J0c0FicykKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoaW50LCB0eXBpbmcuU3VwcG9ydHNBYnMpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c0FicykKKworICAgIGRlZiB0ZXN0X3N1cHBvcnRzX3JvdW5kKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhmbG9hdCwgdHlwaW5nLlN1cHBvcnRzUm91bmQpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGludCwgdHlwaW5nLlN1cHBvcnRzUm91bmQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhzdHIsIHR5cGluZy5TdXBwb3J0c1JvdW5kKQorCisgICAgZGVmIHRlc3RfcmV2ZXJzaWJsZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobGlzdCwgdHlwaW5nLlJldmVyc2libGUpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhpbnQsIHR5cGluZy5SZXZlcnNpYmxlKQorCisgICAgZGVmIHRlc3RfcHJvdG9jb2xfaW5zdGFuY2VfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXNpbnN0YW5jZShbXSwgdHlwaW5nLlJldmVyc2libGUpCisKKworY2xhc3MgR2VuZXJpY1Rlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgWCA9IFNpbXBsZU1hcHBpbmdbc3RyLCBBbnldCisgICAgICAgIFkgPSBTaW1wbGVNYXBwaW5nW1hLLCBzdHJdCisgICAgICAgIFhbc3RyLCBzdHJdCisgICAgICAgIFlbc3RyLCBzdHJdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFhbaW50LCBzdHJdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFlbc3RyLCBieXRlc10KKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIFQgPSBUeXBlVmFyKCdUJykKKyAgICAgICAgUyA9IFR5cGVWYXIoJ1MnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBHZW5lcmljW1QsIFRdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEdlbmVyaWNbVCwgUywgVF0KKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihTaW1wbGVNYXBwaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBfX25hbWVfXyArICcuJyArICdTaW1wbGVNYXBwaW5nW35YSywgflhWXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihNeVNpbXBsZU1hcHBpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmFtZV9fICsgJy4nICsgJ015U2ltcGxlTWFwcGluZ1t+WEssIH5YVl0nKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBCID0gU2ltcGxlTWFwcGluZ1tYSywgQW55XQorCisgICAgICAgICAgICBjbGFzcyBDKEdlbmVyaWNbQl0pOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3JlcHJfMihzZWxmKToKKyAgICAgICAgUFkzMiA9IHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDMpCisKKyAgICAgICAgY2xhc3MgQyhHZW5lcmljW1RdKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3NlcnQgQy5fX21vZHVsZV9fID09IF9fbmFtZV9fCisgICAgICAgIGlmIG5vdCBQWTMyOgorICAgICAgICAgICAgYXNzZXJ0IEMuX19xdWFsbmFtZV9fID09ICdHZW5lcmljVGVzdHMudGVzdF9yZXByXzIuPGxvY2Fscz4uQycKKyAgICAgICAgYXNzZXJ0IHJlcHIoQykuc3BsaXQoJy4nKVstMV0gPT0gJ0NbflRdJworICAgICAgICBYID0gQ1tpbnRdCisgICAgICAgIGFzc2VydCBYLl9fbW9kdWxlX18gPT0gX19uYW1lX18KKyAgICAgICAgaWYgbm90IFBZMzI6CisgICAgICAgICAgICBhc3NlcnQgWC5fX3F1YWxuYW1lX18gPT0gJ0MnCisgICAgICAgIGFzc2VydCByZXByKFgpLnNwbGl0KCcuJylbLTFdID09ICdDW2ludF0nCisKKyAgICAgICAgY2xhc3MgWShDW2ludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBZLl9fbW9kdWxlX18gPT0gX19uYW1lX18KKyAgICAgICAgaWYgbm90IFBZMzI6CisgICAgICAgICAgICBhc3NlcnQgWS5fX3F1YWxuYW1lX18gPT0gJ0dlbmVyaWNUZXN0cy50ZXN0X3JlcHJfMi48bG9jYWxzPi5ZJworICAgICAgICBhc3NlcnQgcmVwcihZKS5zcGxpdCgnLicpWy0xXSA9PSAnWVtpbnRdJworCisgICAgZGVmIHRlc3RfZXFfMShzZWxmKToKKyAgICAgICAgYXNzZXJ0IEdlbmVyaWMgPT0gR2VuZXJpYworICAgICAgICBhc3NlcnQgR2VuZXJpY1tUXSA9PSBHZW5lcmljW1RdCisgICAgICAgIGFzc2VydCBHZW5lcmljW0tUXSAhPSBHZW5lcmljW1ZUXQorCisgICAgZGVmIHRlc3RfZXFfMihzZWxmKToKKworICAgICAgICBjbGFzcyBBKEdlbmVyaWNbVF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEIoR2VuZXJpY1tUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXNzZXJ0IEEgPT0gQQorICAgICAgICBhc3NlcnQgQSAhPSBCCisgICAgICAgIGFzc2VydCBBW1RdID09IEFbVF0KKyAgICAgICAgYXNzZXJ0IEFbVF0gIT0gQltUXQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfaW5oZXJpdGFuY2Uoc2VsZik6CisKKyAgICAgICAgY2xhc3MgQShHZW5lcmljW1QsIFZUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQihHZW5lcmljW0tULCBUXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQyhBLCBHZW5lcmljW0tULCBWVF0sIEIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBDLl9fcGFyYW1ldGVyc19fID09IChULCBWVCwgS1QpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWQoc2VsZik6CisKKyAgICAgICAgY2xhc3MgRyhHZW5lcmljKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBWaXNpdG9yKEdbVF0pOgorCisgICAgICAgICAgICBhID0gTm9uZQorCisgICAgICAgICAgICBkZWYgc2V0KHNlbGYsIGE6IFQpOgorICAgICAgICAgICAgICAgIHNlbGYuYSA9IGEKKworICAgICAgICAgICAgZGVmIGdldChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hCisKKyAgICAgICAgICAgIGRlZiB2aXNpdChzZWxmKSAtPiBUOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmEKKworICAgICAgICBWID0gVmlzaXRvclt0eXBpbmcuTGlzdFtpbnRdXQorCisgICAgICAgIGNsYXNzIEludExpc3RWaXNpdG9yKFYpOgorCisgICAgICAgICAgICBkZWYgYXBwZW5kKHNlbGYsIHg6IGludCk6CisgICAgICAgICAgICAgICAgc2VsZi5hLmFwcGVuZCh4KQorCisgICAgICAgIGEgPSBJbnRMaXN0VmlzaXRvcigpCisgICAgICAgIGEuc2V0KFtdKQorICAgICAgICBhLmFwcGVuZCgxKQorICAgICAgICBhLmFwcGVuZCg0MikKKyAgICAgICAgYXNzZXJ0IGEuZ2V0KCkgPT0gWzEsIDQyXQorCisgICAgZGVmIHRlc3RfdHlwZV9lcmFzdXJlKHNlbGYpOgorICAgICAgICBUID0gVHlwZVZhcignVCcpCisKKyAgICAgICAgY2xhc3MgTm9kZShHZW5lcmljW1RdKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsYWJlbDogVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnTm9kZVtUXScgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAnTm9kZVtUXScgPSBOb25lKToKKyAgICAgICAgICAgICAgICBzZWxmLmxhYmVsID0gbGFiZWwgICMgdHlwZTogVAorICAgICAgICAgICAgICAgIHNlbGYubGVmdCA9IGxlZnQgICMgdHlwZTogT3B0aW9uYWxbTm9kZVtUXV0KKyAgICAgICAgICAgICAgICBzZWxmLnJpZ2h0ID0gcmlnaHQgICMgdHlwZTogT3B0aW9uYWxbTm9kZVtUXV0KKworICAgICAgICBkZWYgZm9vKHg6IFQpOgorICAgICAgICAgICAgYSA9IE5vZGUoeCkKKyAgICAgICAgICAgIGIgPSBOb2RlW1RdKHgpCisgICAgICAgICAgICBjID0gTm9kZVtBbnldKHgpCisgICAgICAgICAgICBhc3NlcnQgdHlwZShhKSBpcyBOb2RlCisgICAgICAgICAgICBhc3NlcnQgdHlwZShiKSBpcyBOb2RlCisgICAgICAgICAgICBhc3NlcnQgdHlwZShjKSBpcyBOb2RlCisKKyAgICAgICAgZm9vKDQyKQorCisKK2NsYXNzIFZhcmlhbmNlVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW52YXJpYW5jZShzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIG9mIGludmFyaWFuY2UsIExpc3Rbc3ViY2xhc3Mgb2YgWF0gaXMgbm90IGEgc3ViY2xhc3MKKyAgICAgICAgIyBvZiBMaXN0W1hdLCBhbmQgZGl0dG8gZm9yIE11dGFibGVTZXF1ZW5jZS4KKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5MaXN0W01hbmFnZXJdLCB0eXBpbmcuTGlzdFtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW01hbmFnZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk11dGFibGVTZXF1ZW5jZVtFbXBsb3llZV0pCisgICAgICAgICMgSXQncyBzdGlsbCByZWZsZXhpdmUuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5MaXN0W0VtcGxveWVlXSwgdHlwaW5nLkxpc3RbRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuTXV0YWJsZVNlcXVlbmNlW0VtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk11dGFibGVTZXF1ZW5jZVtFbXBsb3llZV0pCisKKyAgICBkZWYgdGVzdF9jb3ZhcmlhbmNlX3R1cGxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIGNvdmFyaWFjZSBmb3IgVHVwbGUgKHdoaWNoIGFyZSByZWFsbHkgc3BlY2lhbCBjYXNlcykuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFR1cGxlW01hbmFnZXJdLCBUdXBsZVtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtFbXBsb3llZV0sIFR1cGxlW01hbmFnZXJdKQorICAgICAgICAjIEFuZCBwYWlyd2lzZS4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbTWFuYWdlciwgTWFuYWdlcl0sIFR1cGxlW0VtcGxveWVlLCBFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtFbXBsb3llZSwgRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHVwbGVbTWFuYWdlciwgRW1wbG95ZWVdKQorICAgICAgICAjIEFuZCB1c2luZyBlbGxpcHNpcy4KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoVHVwbGVbTWFuYWdlciwgLi4uXSwgVHVwbGVbRW1wbG95ZWUsIC4uLl0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhUdXBsZVtFbXBsb3llZSwgLi4uXSwgVHVwbGVbTWFuYWdlciwgLi4uXSkKKworICAgIGRlZiB0ZXN0X2NvdmFyaWFuY2Vfc2VxdWVuY2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgY292YXJpYW5jZSBmb3IgU2VxdWVuY2UgKHdoaWNoIGlzIGp1c3QgYSBnZW5lcmljIGNsYXNzCisgICAgICAgICMgZm9yIHRoaXMgcHVycG9zZSwgYnV0IHVzaW5nIGEgY292YXJpYW50IHR5cGUgdmFyaWFibGUpLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuU2VxdWVuY2VbTWFuYWdlcl0sIHR5cGluZy5TZXF1ZW5jZVtFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuU2VxdWVuY2VbRW1wbG95ZWVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLlNlcXVlbmNlW01hbmFnZXJdKQorCisgICAgZGVmIHRlc3RfY292YXJpYW5jZV9tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIERpdHRvIGZvciBNYXBwaW5nIChjb3ZhcmlhbnQgaW4gdGhlIHZhbHVlLCBpbnZhcmlhbnQgaW4gdGhlIGtleSkuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGluZy5NYXBwaW5nW0VtcGxveWVlLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLk1hcHBpbmdbRW1wbG95ZWUsIEVtcGxveWVlXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5NYXBwaW5nW01hbmFnZXIsIEVtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5NYXBwaW5nW0VtcGxveWVlLCBFbXBsb3llZV0pCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyh0eXBpbmcuTWFwcGluZ1tFbXBsb3llZSwgTWFuYWdlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBpbmcuTWFwcGluZ1tNYW5hZ2VyLCBNYW5hZ2VyXSkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHR5cGluZy5NYXBwaW5nW01hbmFnZXIsIEVtcGxveWVlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5NYXBwaW5nW01hbmFnZXIsIE1hbmFnZXJdKQorCisKK2NsYXNzIENhc3RUZXN0cyhUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGFzc2VydCBjYXN0KGludCwgNDIpID09IDQyCisgICAgICAgIGFzc2VydCBjYXN0KGZsb2F0LCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IHR5cGUoY2FzdChmbG9hdCwgNDIpKSBpcyBpbnQKKyAgICAgICAgYXNzZXJ0IGNhc3QoQW55LCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QobGlzdCwgNDIpID09IDQyCisgICAgICAgIGFzc2VydCBjYXN0KFVuaW9uW3N0ciwgZmxvYXRdLCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QoQW55U3RyLCA0MikgPT0gNDIKKyAgICAgICAgYXNzZXJ0IGNhc3QoTm9uZSwgNDIpID09IDQyCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgQm9ndXMgY2FsbHMgYXJlIG5vdCBleHBlY3RlZCB0byBmYWlsLgorICAgICAgICBjYXN0KDQyLCA0MikKKyAgICAgICAgY2FzdCgnaGVsbG8nLCA0MikKKworCitjbGFzcyBGb3J3YXJkUmVmVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE5vZGUoR2VuZXJpY1tUXSk6CisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsYWJlbDogVCk6CisgICAgICAgICAgICAgICAgc2VsZi5sYWJlbCA9IGxhYmVsCisgICAgICAgICAgICAgICAgc2VsZi5sZWZ0ID0gc2VsZi5yaWdodCA9IE5vbmUKKworICAgICAgICAgICAgZGVmIGFkZF9ib3RoKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogJ09wdGlvbmFsW05vZGVbVF1dJywKKyAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogJ05vZGVbVF0nID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHVmZjogaW50ID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBibGFoPU5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYubGVmdCA9IGxlZnQKKyAgICAgICAgICAgICAgICBzZWxmLnJpZ2h0ID0gcmlnaHQKKworICAgICAgICAgICAgZGVmIGFkZF9sZWZ0KHNlbGYsIG5vZGU6IE9wdGlvbmFsWydOb2RlW1RdJ10pOgorICAgICAgICAgICAgICAgIHNlbGYuYWRkX2JvdGgobm9kZSwgTm9uZSkKKworICAgICAgICAgICAgZGVmIGFkZF9yaWdodChzZWxmLCBub2RlOiAnTm9kZVtUXScgPSBOb25lKToKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9ib3RoKE5vbmUsIG5vZGUpCisKKyAgICAgICAgdCA9IE5vZGVbaW50XQorICAgICAgICBib3RoX2hpbnRzID0gZ2V0X3R5cGVfaGludHModC5hZGRfYm90aCwgZ2xvYmFscygpLCBsb2NhbHMoKSkKKyAgICAgICAgYXNzZXJ0IGJvdGhfaGludHNbJ2xlZnQnXSA9PSBib3RoX2hpbnRzWydyaWdodCddID09IE9wdGlvbmFsW05vZGVbVF1dCisgICAgICAgIGFzc2VydCBib3RoX2hpbnRzWydzdHVmZiddID09IE9wdGlvbmFsW2ludF0KKyAgICAgICAgYXNzZXJ0ICdibGFoJyBub3QgaW4gYm90aF9oaW50cworCisgICAgICAgIGxlZnRfaGludHMgPSBnZXRfdHlwZV9oaW50cyh0LmFkZF9sZWZ0LCBnbG9iYWxzKCksIGxvY2FscygpKQorICAgICAgICBhc3NlcnQgbGVmdF9oaW50c1snbm9kZSddID09IE9wdGlvbmFsW05vZGVbVF1dCisKKyAgICAgICAgcmlnaHRfaGludHMgPSBnZXRfdHlwZV9oaW50cyh0LmFkZF9yaWdodCwgZ2xvYmFscygpLCBsb2NhbHMoKSkKKyAgICAgICAgYXNzZXJ0IHJpZ2h0X2hpbnRzWydub2RlJ10gPT0gT3B0aW9uYWxbTm9kZVtUXV0KKworICAgIGRlZiB0ZXN0X2ZvcndhcmRyZWZfaW5zdGFuY2VfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgZnIgPSB0eXBpbmcuX0ZvcndhcmRSZWYoJ2ludCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGlzaW5zdGFuY2UoNDIsIGZyKQorCisgICAgZGVmIHRlc3RfdW5pb25fZm9yd2FyZChzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6IFVuaW9uWydUJ10pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3R5cGVfaGludHMoZm9vLCBnbG9iYWxzKCksIGxvY2FscygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBVbmlvbltUXX0pCisKKyAgICBkZWYgdGVzdF90dXBsZV9mb3J3YXJkKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogVHVwbGVbJ1QnXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdHlwZV9oaW50cyhmb28sIGdsb2JhbHMoKSwgbG9jYWxzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IFR1cGxlW1RdfSkKKworICAgIGRlZiB0ZXN0X2NhbGxhYmxlX2ZvcndhcmQoc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBDYWxsYWJsZVtbJ1QnXSwgJ1QnXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdHlwZV9oaW50cyhmb28sIGdsb2JhbHMoKSwgbG9jYWxzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IENhbGxhYmxlW1tUXSwgVF19KQorCisgICAgZGVmIHRlc3RfY2FsbGFibGVfd2l0aF9lbGxpcHNpc19mb3J3YXJkKHNlbGYpOgorCisgICAgICAgIGRlZiBmb28oYTogJ0NhbGxhYmxlWy4uLiwgVF0nKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF90eXBlX2hpbnRzKGZvbywgZ2xvYmFscygpLCBsb2NhbHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogQ2FsbGFibGVbLi4uLCBUXX0pCisKKyAgICBkZWYgdGVzdF9zeW50YXhfZXJyb3Ioc2VsZik6CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBHZW5lcmljWycvVCddCisKKyAgICBkZWYgdGVzdF9kZWxheWVkX3N5bnRheF9lcnJvcihzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6ICdOb2RlW1QnKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGdldF90eXBlX2hpbnRzKGZvbykKKworICAgIGRlZiB0ZXN0X3R5cGVfZXJyb3Ioc2VsZik6CisKKyAgICAgICAgZGVmIGZvbyhhOiBUdXBsZVsnNDInXSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZ2V0X3R5cGVfaGludHMoZm9vKQorCisgICAgZGVmIHRlc3RfbmFtZV9lcnJvcihzZWxmKToKKworICAgICAgICBkZWYgZm9vKGE6ICdOb29kZVtUXScpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGdldF90eXBlX2hpbnRzKGZvbywgbG9jYWxzKCkpCisKKyAgICBkZWYgdGVzdF9ub190eXBlX2NoZWNrKHNlbGYpOgorCisgICAgICAgIEBub190eXBlX2NoZWNrCisgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRoID0gZ2V0X3R5cGVfaGludHMoZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoLCB7fSkKKworICAgIGRlZiB0ZXN0X25vX3R5cGVfY2hlY2tfY2xhc3Moc2VsZik6CisKKyAgICAgICAgQG5vX3R5cGVfY2hlY2sKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjdGggPSBnZXRfdHlwZV9oaW50cyhDLmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdGgsIHt9KQorICAgICAgICBpdGggPSBnZXRfdHlwZV9oaW50cyhDKCkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0aCwge30pCisKKyAgICBkZWYgdGVzdF9tZXRhX25vX3R5cGVfY2hlY2soc2VsZik6CisKKyAgICAgICAgQG5vX3R5cGVfY2hlY2tfZGVjb3JhdG9yCisgICAgICAgIGRlZiBtYWdpY19kZWNvcmF0b3IoZGVjbyk6CisgICAgICAgICAgICByZXR1cm4gZGVjbworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWNfZGVjb3JhdG9yLl9fbmFtZV9fLCAnbWFnaWNfZGVjb3JhdG9yJykKKworICAgICAgICBAbWFnaWNfZGVjb3JhdG9yCisgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBtYWdpY19kZWNvcmF0b3IKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlZiBmb28oYTogJ3doYXRldmVycycpIC0+IHt9OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5fX25hbWVfXywgJ2ZvbycpCisgICAgICAgIHRoID0gZ2V0X3R5cGVfaGludHMoZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoLCB7fSkKKyAgICAgICAgY3RoID0gZ2V0X3R5cGVfaGludHMoQy5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3RoLCB7fSkKKyAgICAgICAgaXRoID0gZ2V0X3R5cGVfaGludHMoQygpLmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGgsIHt9KQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9nbG9iYWxzKHNlbGYpOgorICAgICAgICBjb2RlID0gKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICIgICAgZGVmIGZvbyhzZWxmLCBhOiAnQycpIC0+ICdEJzogcGFzc1xuIgorICAgICAgICAgICAgICAgICJjbGFzcyBEOlxuIgorICAgICAgICAgICAgICAgICIgICAgZGVmIGJhcihzZWxmLCBiOiAnRCcpIC0+IEM6IHBhc3NcbiIKKyAgICAgICAgICAgICAgICApCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgaGludHMgPSBnZXRfdHlwZV9oaW50cyhuc1snQyddLmZvbykKKyAgICAgICAgYXNzZXJ0IGhpbnRzID09IHsnYSc6IG5zWydDJ10sICdyZXR1cm4nOiBuc1snRCddfQorCisKK2NsYXNzIE92ZXJsb2FkVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb3ZlcmxvYWRfZXhpc3RzKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgb3ZlcmxvYWQKKworICAgIGRlZiB0ZXN0X292ZXJsb2FkX2ZhaWxzKHNlbGYpOgorICAgICAgICBmcm9tIHR5cGluZyBpbXBvcnQgb3ZlcmxvYWQKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBAb3ZlcmxvYWQKKyAgICAgICAgICAgIGRlZiBibGFoKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisKK2NsYXNzIENvbGxlY3Rpb25zQWJjVGVzdHMoVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaGFzaGFibGUoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuSGFzaGFibGUpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShbXSwgdHlwaW5nLkhhc2hhYmxlKQorCisgICAgZGVmIHRlc3RfaXRlcmFibGUoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGUpCisgICAgICAgICMgRHVlIHRvIEFCQyBjYWNoaW5nLCB0aGUgc2Vjb25kIHRpbWUgdGFrZXMgYSBzZXBhcmF0ZSBjb2RlCisgICAgICAgICMgcGF0aCBhbmQgY291bGQgZmFpbC4gIFNvIGNhbGwgdGhpcyBhIGZldyB0aW1lcy4KKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5JdGVyYWJsZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5JdGVyYWJsZSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5JdGVyYWJsZVtpbnRdKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5JdGVyYWJsZSkKKyAgICAgICAgIyBKdXN0IGluIGNhc2UsIGFsc28gdGVzdCBpc3N1YmNsYXNzKCkgYSBmZXcgdGltZXMuCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGxpc3QsIHR5cGluZy5JdGVyYWJsZSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobGlzdCwgdHlwaW5nLkl0ZXJhYmxlKQorCisgICAgZGVmIHRlc3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGl0ID0gaXRlcihbXSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXQsIHR5cGluZy5JdGVyYXRvcikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXQsIHR5cGluZy5JdGVyYXRvcltpbnRdKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5JdGVyYXRvcikKKworICAgIGRlZiB0ZXN0X3NpemVkKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLlNpemVkKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5TaXplZCkKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5lcihzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5Db250YWluZXIpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSg0MiwgdHlwaW5nLkNvbnRhaW5lcikKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0c2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZXQoKSwgdHlwaW5nLkFic3RyYWN0U2V0KQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5BYnN0cmFjdFNldCkKKworICAgIGRlZiB0ZXN0X211dGFibGVzZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNldCgpLCB0eXBpbmcuTXV0YWJsZVNldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKGZyb3plbnNldCgpLCB0eXBpbmcuTXV0YWJsZVNldCkKKworICAgIGRlZiB0ZXN0X21hcHBpbmcoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHt9LCB0eXBpbmcuTWFwcGluZykKKyAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKDQyLCB0eXBpbmcuTWFwcGluZykKKworICAgIGRlZiB0ZXN0X211dGFibGVtYXBwaW5nKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh7fSwgdHlwaW5nLk11dGFibGVNYXBwaW5nKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5NdXRhYmxlTWFwcGluZykKKworICAgIGRlZiB0ZXN0X3NlcXVlbmNlKHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShbXSwgdHlwaW5nLlNlcXVlbmNlKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoNDIsIHR5cGluZy5TZXF1ZW5jZSkKKworICAgIGRlZiB0ZXN0X211dGFibGVzZXF1ZW5jZShzZWxmKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoW10sIHR5cGluZy5NdXRhYmxlU2VxdWVuY2UpCisgICAgICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZSgoKSwgdHlwaW5nLk11dGFibGVTZXF1ZW5jZSkKKworICAgIGRlZiB0ZXN0X2J5dGVzdHJpbmcoc2VsZik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGInJywgdHlwaW5nLkJ5dGVTdHJpbmcpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGJ5dGVhcnJheShiJycpLCB0eXBpbmcuQnl0ZVN0cmluZykKKworICAgIGRlZiB0ZXN0X2xpc3Qoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGxpc3QsIHR5cGluZy5MaXN0KQorCisgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyhzZXQsIHR5cGluZy5TZXQpCisgICAgICAgIGFzc2VydCBub3QgaXNzdWJjbGFzcyhmcm96ZW5zZXQsIHR5cGluZy5TZXQpCisKKyAgICBkZWYgdGVzdF9mcm96ZW5zZXQoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGZyb3plbnNldCwgdHlwaW5nLkZyb3plblNldCkKKyAgICAgICAgYXNzZXJ0IG5vdCBpc3N1YmNsYXNzKHNldCwgdHlwaW5nLkZyb3plblNldCkKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGRpY3QsIHR5cGluZy5EaWN0KQorCisgICAgZGVmIHRlc3Rfbm9fbGlzdF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuTGlzdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5MaXN0W1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkxpc3RbaW50XSgpCisKKyAgICBkZWYgdGVzdF9saXN0X3N1YmNsYXNzX2luc3RhbnRpYXRpb24oc2VsZik6CisKKyAgICAgICAgY2xhc3MgTXlMaXN0KHR5cGluZy5MaXN0W2ludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGEgPSBNeUxpc3QoKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBNeUxpc3QpCisKKyAgICBkZWYgdGVzdF9ub19kaWN0X2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5EaWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkRpY3RbS1QsIFZUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5EaWN0W3N0ciwgaW50XSgpCisKKyAgICBkZWYgdGVzdF9kaWN0X3N1YmNsYXNzX2luc3RhbnRpYXRpb24oc2VsZik6CisKKyAgICAgICAgY2xhc3MgTXlEaWN0KHR5cGluZy5EaWN0W3N0ciwgaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZCA9IE15RGljdCgpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIE15RGljdCkKKworICAgIGRlZiB0ZXN0X25vX3NldF9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuU2V0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLlNldFtUXSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5TZXRbaW50XSgpCisKKyAgICBkZWYgdGVzdF9zZXRfc3ViY2xhc3NfaW5zdGFudGlhdGlvbihzZWxmKToKKworICAgICAgICBjbGFzcyBNeVNldCh0eXBpbmcuU2V0W2ludF0pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGQgPSBNeVNldCgpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGQsIE15U2V0KQorCisgICAgZGVmIHRlc3Rfbm9fZnJvemVuc2V0X2luc3RhbnRpYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5Gcm96ZW5TZXQoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuRnJvemVuU2V0W1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkZyb3plblNldFtpbnRdKCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbnNldF9zdWJjbGFzc19pbnN0YW50aWF0aW9uKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE15RnJvemVuU2V0KHR5cGluZy5Gcm96ZW5TZXRbaW50XSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZCA9IE15RnJvemVuU2V0KCkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZCwgTXlGcm96ZW5TZXQpCisKKyAgICBkZWYgdGVzdF9ub190dXBsZV9pbnN0YW50aWF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBUdXBsZSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFR1cGxlW1RdKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgVHVwbGVbaW50XSgpCisKKyAgICBkZWYgdGVzdF9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDQyCisgICAgICAgIGcgPSBmb28oKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKGcpLCB0eXBpbmcuR2VuZXJhdG9yKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBpbmcuR2VuZXJhdG9yW01hbmFnZXIsIEVtcGxveWVlLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcltFbXBsb3llZSwgTWFuYWdlciwgRW1wbG95ZWVdKQorICAgICAgICBhc3NlcnQgbm90IGlzc3ViY2xhc3ModHlwaW5nLkdlbmVyYXRvcltNYW5hZ2VyLCBNYW5hZ2VyLCBNYW5hZ2VyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3JbRW1wbG95ZWUsIEVtcGxveWVlLCBFbXBsb3llZV0pCisKKyAgICBkZWYgdGVzdF9ub19nZW5lcmF0b3JfaW5zdGFudGlhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwaW5nLkdlbmVyYXRvcigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGluZy5HZW5lcmF0b3JbVCwgVCwgVF0oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBpbmcuR2VuZXJhdG9yW2ludCwgaW50LCBpbnRdKCkKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgorCisgICAgICAgIGNsYXNzIE1NQSh0eXBpbmcuTXV0YWJsZU1hcHBpbmcpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogICMgSXQncyBhYnN0cmFjdAorICAgICAgICAgICAgTU1BKCkKKworICAgICAgICBjbGFzcyBNTUMoTU1BKToKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgYXNzZXJ0IGxlbihNTUMoKSkgPT0gMAorCisgICAgICAgIGNsYXNzIE1NQih0eXBpbmcuTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSk6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGFzc2VydCBsZW4oTU1CKCkpID09IDAKKyAgICAgICAgYXNzZXJ0IGxlbihNTUJbc3RyLCBzdHJdKCkpID09IDAKKyAgICAgICAgYXNzZXJ0IGxlbihNTUJbS1QsIFZUXSgpKSA9PSAwCisKKworY2xhc3MgTmFtZWRUdXBsZVRlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgRW1wID0gTmFtZWRUdXBsZSgnRW1wJywgWygnbmFtZScsIHN0ciksICgnaWQnLCBpbnQpXSkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoRW1wLCB0dXBsZSkKKyAgICAgICAgam9lID0gRW1wKCdKb2UnLCA0MikKKyAgICAgICAgamltID0gRW1wKG5hbWU9J0ppbScsIGlkPTEpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGpvZSwgRW1wKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShqb2UsIHR1cGxlKQorICAgICAgICBhc3NlcnQgam9lLm5hbWUgPT0gJ0pvZScKKyAgICAgICAgYXNzZXJ0IGpvZS5pZCA9PSA0MgorICAgICAgICBhc3NlcnQgamltLm5hbWUgPT0gJ0ppbScKKyAgICAgICAgYXNzZXJ0IGppbS5pZCA9PSAxCisgICAgICAgIGFzc2VydCBFbXAuX19uYW1lX18gPT0gJ0VtcCcKKyAgICAgICAgYXNzZXJ0IEVtcC5fZmllbGRzID09ICgnbmFtZScsICdpZCcpCisgICAgICAgIGFzc2VydCBFbXAuX2ZpZWxkX3R5cGVzID09IGRpY3QobmFtZT1zdHIsIGlkPWludCkKKworCitjbGFzcyBJT1Rlc3RzKFRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2lvKHNlbGYpOgorCisgICAgICAgIGRlZiBzdHVmZihhOiBJTykgLT4gQW55U3RyOgorICAgICAgICAgICAgcmV0dXJuIGEucmVhZGxpbmUoKQorCisgICAgICAgIGEgPSBzdHVmZi5fX2Fubm90YXRpb25zX19bJ2EnXQorICAgICAgICBhc3NlcnQgYS5fX3BhcmFtZXRlcnNfXyA9PSAoQW55U3RyLCkKKworICAgIGRlZiB0ZXN0X3RleHRpbyhzZWxmKToKKworICAgICAgICBkZWYgc3R1ZmYoYTogVGV4dElPKSAtPiBzdHI6CisgICAgICAgICAgICByZXR1cm4gYS5yZWFkbGluZSgpCisKKyAgICAgICAgYSA9IHN0dWZmLl9fYW5ub3RhdGlvbnNfX1snYSddCisgICAgICAgIGFzc2VydCBhLl9fcGFyYW1ldGVyc19fID09IChzdHIsKQorCisgICAgZGVmIHRlc3RfYmluYXJ5aW8oc2VsZik6CisKKyAgICAgICAgZGVmIHN0dWZmKGE6IEJpbmFyeUlPKSAtPiBieXRlczoKKyAgICAgICAgICAgIHJldHVybiBhLnJlYWRsaW5lKCkKKworICAgICAgICBhID0gc3R1ZmYuX19hbm5vdGF0aW9uc19fWydhJ10KKyAgICAgICAgYXNzZXJ0IGEuX19wYXJhbWV0ZXJzX18gPT0gKGJ5dGVzLCkKKworICAgIGRlZiB0ZXN0X2lvX3N1Ym1vZHVsZShzZWxmKToKKyAgICAgICAgZnJvbSB0eXBpbmcuaW8gaW1wb3J0IElPLCBUZXh0SU8sIEJpbmFyeUlPLCBfX2FsbF9fLCBfX25hbWVfXworICAgICAgICBhc3NlcnQgSU8gaXMgdHlwaW5nLklPCisgICAgICAgIGFzc2VydCBUZXh0SU8gaXMgdHlwaW5nLlRleHRJTworICAgICAgICBhc3NlcnQgQmluYXJ5SU8gaXMgdHlwaW5nLkJpbmFyeUlPCisgICAgICAgIGFzc2VydCBzZXQoX19hbGxfXykgPT0gc2V0KFsnSU8nLCAnVGV4dElPJywgJ0JpbmFyeUlPJ10pCisgICAgICAgIGFzc2VydCBfX25hbWVfXyA9PSAndHlwaW5nLmlvJworCisKK2NsYXNzIFJFVGVzdHMoVGVzdENhc2UpOgorICAgICMgTXVjaCBvZiB0aGlzIGlzIHJlYWxseSB0ZXN0aW5nIF9UeXBlQWxpYXMuCisKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1thLXpdKycsIHJlLkkpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHBhdC5fX2NsYXNzX18sIFBhdHRlcm4pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHR5cGUocGF0KSwgUGF0dGVybikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3ModHlwZShwYXQpLCBQYXR0ZXJuW3N0cl0pCisKKyAgICAgICAgbWF0ID0gcGF0LnNlYXJjaCgnMTIzNDVhYmNkZS4uLi4uJykKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MobWF0Ll9fY2xhc3NfXywgTWF0Y2gpCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKG1hdC5fX2NsYXNzX18sIE1hdGNoW3N0cl0pCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKG1hdC5fX2NsYXNzX18sIE1hdGNoW2J5dGVzXSkgICMgU2FkIGJ1dCB0cnVlLgorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKG1hdCksIE1hdGNoKQorICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0eXBlKG1hdCksIE1hdGNoW3N0cl0pCisKKyAgICAgICAgcCA9IFBhdHRlcm5bVW5pb25bc3RyLCBieXRlc11dCisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKFBhdHRlcm5bc3RyXSwgUGF0dGVybikKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoUGF0dGVybltzdHJdLCBwKQorCisgICAgICAgIG0gPSBNYXRjaFtVbmlvbltieXRlcywgc3RyXV0KKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoTWF0Y2hbYnl0ZXNdLCBNYXRjaCkKKyAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoTWF0Y2hbYnl0ZXNdLCBtKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAjIERvZXNuJ3QgZml0IEFueVN0ci4KKyAgICAgICAgICAgIFBhdHRlcm5baW50XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAjIENhbid0IGNoYW5nZSB0eXBlIHZhcnM/CisgICAgICAgICAgICBNYXRjaFtUXQorICAgICAgICBtID0gTWF0Y2hbVW5pb25bc3RyLCBieXRlc11dCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgVG9vIGNvbXBsaWNhdGVkPworICAgICAgICAgICAgbVtzdHJdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICMgV2UgZG9uJ3Qgc3VwcG9ydCBpc2luc3RhbmNlKCkuCisgICAgICAgICAgICBpc2luc3RhbmNlKDQyLCBQYXR0ZXJuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAjIFdlIGRvbid0IHN1cHBvcnQgaXNpbnN0YW5jZSgpLgorICAgICAgICAgICAgaXNpbnN0YW5jZSg0MiwgUGF0dGVybltzdHJdKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgYXNzZXJ0IHJlcHIoUGF0dGVybikgPT0gJ1BhdHRlcm5bfkFueVN0cl0nCisgICAgICAgIGFzc2VydCByZXByKFBhdHRlcm5bc3RyXSkgPT0gJ1BhdHRlcm5bc3RyXScKKyAgICAgICAgYXNzZXJ0IHJlcHIoUGF0dGVybltieXRlc10pID09ICdQYXR0ZXJuW2J5dGVzXScKKyAgICAgICAgYXNzZXJ0IHJlcHIoTWF0Y2gpID09ICdNYXRjaFt+QW55U3RyXScKKyAgICAgICAgYXNzZXJ0IHJlcHIoTWF0Y2hbc3RyXSkgPT0gJ01hdGNoW3N0cl0nCisgICAgICAgIGFzc2VydCByZXByKE1hdGNoW2J5dGVzXSkgPT0gJ01hdGNoW2J5dGVzXScKKworICAgIGRlZiB0ZXN0X3JlX3N1Ym1vZHVsZShzZWxmKToKKyAgICAgICAgZnJvbSB0eXBpbmcucmUgaW1wb3J0IE1hdGNoLCBQYXR0ZXJuLCBfX2FsbF9fLCBfX25hbWVfXworICAgICAgICBhc3NlcnQgTWF0Y2ggaXMgdHlwaW5nLk1hdGNoCisgICAgICAgIGFzc2VydCBQYXR0ZXJuIGlzIHR5cGluZy5QYXR0ZXJuCisgICAgICAgIGFzc2VydCBzZXQoX19hbGxfXykgPT0gc2V0KFsnTWF0Y2gnLCAnUGF0dGVybiddKQorICAgICAgICBhc3NlcnQgX19uYW1lX18gPT0gJ3R5cGluZy5yZScKKworICAgIGRlZiB0ZXN0X2Nhbm5vdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4OgorCisgICAgICAgICAgICBjbGFzcyBBKHR5cGluZy5NYXRjaCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGFzc2VydCBzdHIoZXguZXhjZXB0aW9uKSA9PSAiQSB0eXBlIGFsaWFzIGNhbm5vdCBiZSBzdWJjbGFzc2VkIgorCisKK2NsYXNzIEFsbFRlc3RzKFRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBmb3IgX19hbGxfXy4iIiIKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgZnJvbSB0eXBpbmcgaW1wb3J0IF9fYWxsX18gYXMgYQorICAgICAgICAjIEp1c3Qgc3BvdC1jaGVjayB0aGUgZmlyc3QgYW5kIGxhc3Qgb2YgZXZlcnkgY2F0ZWdvcnkuCisgICAgICAgIGFzc2VydCAnQWJzdHJhY3RTZXQnIGluIGEKKyAgICAgICAgYXNzZXJ0ICdWYWx1ZXNWaWV3JyBpbiBhCisgICAgICAgIGFzc2VydCAnY2FzdCcgaW4gYQorICAgICAgICBhc3NlcnQgJ292ZXJsb2FkJyBpbiBhCisgICAgICAgIGFzc2VydCAnaW8nIGluIGEKKyAgICAgICAgYXNzZXJ0ICdyZScgaW4gYQorICAgICAgICAjIFNwb3QtY2hlY2sgdGhhdCBzdGRsaWIgbW9kdWxlcyBhcmVuJ3QgZXhwb3J0ZWQuCisgICAgICAgIGFzc2VydCAnb3MnIG5vdCBpbiBhCisgICAgICAgIGFzc2VydCAnc3lzJyBub3QgaW4gYQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Vjbi5weSBiL0xpYi90ZXN0L3Rlc3RfdWNuLnB5CmluZGV4IDFlMDdmNjYuLjhmZWJmMGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdWNuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdWNuLnB5CkBAIC0yMzMsOCArMjMzLDUgQEAKICAgICAgICAgKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVbmljb2RlTmFtZXNUZXN0KQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuYXJ5LnB5IGIvTGliL3Rlc3QvdGVzdF91bmFyeS5weQppbmRleCBiODM1NTY0Li5jM2MxN2NjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuYXJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5hcnkucHkKQEAgLTEsNyArMSw2IEBACiAiIiJUZXN0IGNvbXBpbGVyIGNoYW5nZXMgZm9yIHVuYXJ5IG9wcyAoKywgLSwgfikgaW50cm9kdWNlZCBpbiBQeXRob24gMi4yIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBjbGFzcyBVbmFyeU9wVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01MCw5ICs0OSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgIn4yLjAiKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVW5hcnlPcFRlc3RDYXNlKQotCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQppbmRleCA1ZWZiZTNlLi4zZmNiNTkwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IF9zdHJpbmcKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zMTUsNiArMzE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29yZCgnYScpOiBOb25lLCBvcmQoJ2InKTogJyd9KQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgneHl5eCcsICd4engnLCAndHJhbnNsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29yZCgneicpOiAneXknfSkKKwogICAgICAgICAjIHRoaXMgbmVlZHMgbWFrZXRyYW5zKCkKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoJ2FiYWJhYmMnLCAnYWJhYmFiYycsICd0cmFuc2xhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2InOiAnPGk+J30pCkBAIC0zMjQsNiArMzI2LDMzIEBACiAgICAgICAgIHRibCA9IHNlbGYudHlwZTJ0ZXN0Lm1ha2V0cmFucygnYWJjJywgJ3h5eicsICdkJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoJ3h5enp5JywgJ2FiZGNkY2JkZGRkJywgJ3RyYW5zbGF0ZScsIHRibCkKIAorICAgICAgICAjIHZhcmlvdXMgdGVzdHMgc3dpdGNoaW5nIGZyb20gQVNDSUkgdG8gbGF0aW4xIG9yIHRoZSBvcHBvc2l0ZTsKKyAgICAgICAgIyBzYW1lIGxlbmd0aCwgcmVtb3ZlIGEgbGV0dGVyLCBvciByZXBsYWNlIHdpdGggYSBsb25nZXIgc3RyaW5nLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKCdhJywgJ1gnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltYXSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlthXSIudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoeydhJzogJ1gnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbWF0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnYSc6IE5vbmV9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiAnWFhYJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW1hYWF0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbYV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnYSc6ICdceGU5J30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW1x4ZTldIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW2FdIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J2EnOiAnPFx4ZTk+J30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiWzxceGU5Pl0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHhlOV0iLnRyYW5zbGF0ZShzdHIubWFrZXRyYW5zKHsnXHhlOSc6ICdhJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW2FdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x4ZTldIi50cmFuc2xhdGUoc3RyLm1ha2V0cmFucyh7J1x4ZTknOiBOb25lfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbXSIpCisKKyAgICAgICAgIyBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVycworICAgICAgICBpbnZhbGlkX2NoYXIgPSAweDEwZmZmZisxCisgICAgICAgIGZvciBiZWZvcmUgaW4gImFceGU5XHUyMGFjXFUwMDEwZmZmZiI6CisgICAgICAgICAgICBtYXBwaW5nID0gc3RyLm1ha2V0cmFucyh7YmVmb3JlOiBpbnZhbGlkX2NoYXJ9KQorICAgICAgICAgICAgdGV4dCA9ICJbJXNdIiAlIGJlZm9yZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGV4dC50cmFuc2xhdGUsIG1hcHBpbmcpCisKKyAgICAgICAgIyBlcnJvcnMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5tYWtldHJhbnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0Lm1ha2V0cmFucywgJ2FiYycsICdkZWZnJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5tYWtldHJhbnMsIDIsICdkZWYnKQpAQCAtMTMwNiwyMCArMTMzNSwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclLjJzJyAlICJhXHhlOVx1MjBhYyIsICdhXHhlOScpCiAKICAgICAgICAgI2lzc3VlIDE5OTk1Ci0gICAgICAgIGNsYXNzIFBzdWVkb0ludDoKKyAgICAgICAgY2xhc3MgUHNldWRvSW50OgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKICAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gaW50KHZhbHVlKQogICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKICAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKLSAgICAgICAgY2xhc3MgUHN1ZWRvRmxvYXQ6CisgICAgICAgIGNsYXNzIFBzZXVkb0Zsb2F0OgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKICAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gZmxvYXQodmFsdWUpCiAgICAgICAgICAgICBkZWYgX19pbnRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50KHNlbGYudmFsdWUpCi0gICAgICAgIHBpID0gUHN1ZWRvRmxvYXQoMy4xNDE1KQotICAgICAgICBsZXR0ZXJfbSA9IFBzdWVkb0ludCgxMDkpCisgICAgICAgIHBpID0gUHNldWRvRmxvYXQoMy4xNDE1KQorICAgICAgICBsZXR0ZXJfbSA9IFBzZXVkb0ludCgxMDkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyV4JyAlIDQyLCAnMmEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclWCcgJSAxNSwgJ0YnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclbycgJSA5LCAnMTEnKQpAQCAtMTMyOCwxMSArMTM1NywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclWCcgJSBsZXR0ZXJfbSwgJzZEJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJW8nICUgbGV0dGVyX20sICcxNTUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCclYycgJSBsZXR0ZXJfbSwgJ20nKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyV4Jy5fX21vZF9fLCBwaSksCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCAnJXgnLl9fbW9kX18sIDMuMTQpLAotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgJyVYJy5fX21vZF9fLCAyLjExKSwKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsICclbycuX19tb2RfXywgMS43OSksCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCAnJWMnLl9fbW9kX18sIHBpKSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICcleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCcsIG9wZXJhdG9yLm1vZCwgJyV4JywgMy4xNCksCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnJVggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQnLCBvcGVyYXRvci5tb2QsICclWCcsIDIuMTEpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJyVvIGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0Jywgb3BlcmF0b3IubW9kLCAnJW8nLCAxLjc5KSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICcleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBQc2V1ZG9GbG9hdCcsIG9wZXJhdG9yLm1vZCwgJyV4JywgcGkpLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCwgJyVjJywgcGkpLAogCiAgICAgZGVmIHRlc3RfZm9ybWF0dGluZ193aXRoX2VudW0oc2VsZik6CiAgICAgICAgICMgaXNzdWUxODc4MApAQCAtMjA1Miw3ICsyMDgxLDggQEAKICAgICAgICAgICAgICdjcDg2MycsICdjcDg2NScsICdjcDg2NicsICdjcDExMjUnLAogICAgICAgICAgICAgJ2lzbzg4NTlfMTAnLCAnaXNvODg1OV8xMycsICdpc284ODU5XzE0JywgJ2lzbzg4NTlfMTUnLAogICAgICAgICAgICAgJ2lzbzg4NTlfMicsICdpc284ODU5XzMnLCAnaXNvODg1OV80JywgJ2lzbzg4NTlfNScsICdpc284ODU5XzYnLAotICAgICAgICAgICAgJ2lzbzg4NTlfNycsICdpc284ODU5XzknLCAna29pOF9yJywgJ2xhdGluXzEnLAorICAgICAgICAgICAgJ2lzbzg4NTlfNycsICdpc284ODU5XzknLAorICAgICAgICAgICAgJ2tvaThfcicsICdrb2k4X3QnLCAna29pOF91JywgJ2t6MTA0OCcsICdsYXRpbl8xJywKICAgICAgICAgICAgICdtYWNfY3lyaWxsaWMnLCAnbWFjX2xhdGluMicsCiAKICAgICAgICAgICAgICdjcDEyNTAnLCAnY3AxMjUxJywgJ2NwMTI1MicsICdjcDEyNTMnLCAnY3AxMjU0JywgJ2NwMTI1NScsCkBAIC0yMDgwLDE0ICsyMTEwLDE0IEBACiAgICAgICAgICAgICAnY3A4NjMnLCAnY3A4NjUnLCAnY3A4NjYnLCAnY3AxMTI1JywKICAgICAgICAgICAgICdpc284ODU5XzEwJywgJ2lzbzg4NTlfMTMnLCAnaXNvODg1OV8xNCcsICdpc284ODU5XzE1JywKICAgICAgICAgICAgICdpc284ODU5XzInLCAnaXNvODg1OV80JywgJ2lzbzg4NTlfNScsCi0gICAgICAgICAgICAnaXNvODg1OV85JywgJ2tvaThfcicsICdsYXRpbl8xJywKKyAgICAgICAgICAgICdpc284ODU5XzknLCAna29pOF9yJywgJ2tvaThfdScsICdsYXRpbl8xJywKICAgICAgICAgICAgICdtYWNfY3lyaWxsaWMnLCAnbWFjX2xhdGluMicsCiAKICAgICAgICAgICAgICMjIyBUaGVzZSBoYXZlIHVuZGVmaW5lZCBtYXBwaW5nczoKICAgICAgICAgICAgICMnY3AxMjUwJywgJ2NwMTI1MScsICdjcDEyNTInLCAnY3AxMjUzJywgJ2NwMTI1NCcsICdjcDEyNTUnLAogICAgICAgICAgICAgIydjcDEyNTYnLCAnY3AxMjU3JywgJ2NwMTI1OCcsCiAgICAgICAgICAgICAjJ2NwNDI0JywgJ2NwODU2JywgJ2NwODU3JywgJ2NwODY0JywgJ2NwODY5JywgJ2NwODc0JywKLSAgICAgICAgICAgICMnaXNvODg1OV8zJywgJ2lzbzg4NTlfNicsICdpc284ODU5XzcnLAorICAgICAgICAgICAgIydpc284ODU5XzMnLCAnaXNvODg1OV82JywgJ2lzbzg4NTlfNycsICdrb2k4X3QnLCAna3oxMDQ4JywKICAgICAgICAgICAgICMnbWFjX2dyZWVrJywgJ21hY19pY2VsYW5kJywnbWFjX3JvbWFuJywgJ21hY190dXJraXNoJywKIAogICAgICAgICAgICAgIyMjIFRoZXNlIGZhaWwgdGhlIHJvdW5kLXRyaXA6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQppbmRleCA3MDdiMzBlLi4wZjMzZDE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKQEAgLTIxLDcgKzIxLDcgQEAKIGNsYXNzIFVuaWNvZGVNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZTc0ZTg3OGRlNzFiNmU3ODBmZmFjMjcxNzg1YzNjYjU4ZjYyNTFmMycKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJzU5NzE3NjA4NzJiMmY5OGJiOWM3MDFlNmMwZGIzMjczZDc1NmIzZWMnCiAKICAgICBkZWYgdGVzdF9tZXRob2RfY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtNzksOCArNzksOSBAQAogCiBjbGFzcyBVbmljb2RlRnVuY3Rpb25zVGVzdChVbmljb2RlRGF0YWJhc2VUZXN0KToKIAotICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdmMGI3NGQyNjc3NjMzMWNjN2JkYzNhNDY5OGYwMzdkNzNmMmNlZTJiJworICAgICMgVXBkYXRlIHRoaXMgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMuIE1ha2Ugc3VyZSB0byBkbyBhIGZ1bGwgcmVidWlsZAorICAgICMgKGUuZy4gJ21ha2UgZGlzdGNsZWFuICYmIG1ha2UnKSB0byBnZXQgdGhlIGNvcnJlY3QgY2hlY2tzdW0uCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1ZTc0ODI3Y2QwN2Y5ZTU0NmEzMGYzNGI3YmNmNmNjMmVhYzM4YzhjJwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBkYXRhID0gW10KICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC0zMTIsMTIgKzMxMyw1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcdSUuNHggc2hvdWxkIG5vdCBiZSBhIGxpbmVicmVhayIgJSBpKQogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdCgKLSAgICAgICAgVW5pY29kZU1pc2NUZXN0LAotICAgICAgICBVbmljb2RlTWV0aG9kc1Rlc3QsCi0gICAgICAgIFVuaWNvZGVGdW5jdGlvbnNUZXN0Ci0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CmluZGV4IGIxYzQ4M2QuLmQxY2NiMzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CkBAIC03Niw3ICs3Niw3IEBACiAgICAgPj4+IGEsIGIsIGMsIGQgPSBTZXEoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFZhbHVlRXJyb3I6IG5lZWQgbW9yZSB0aGFuIDMgdmFsdWVzIHRvIHVucGFjaworICAgIFZhbHVlRXJyb3I6IG5vdCBlbm91Z2ggdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgNCwgZ290IDMpCiAKIFVucGFja2luZyBzZXF1ZW5jZSB0b28gbG9uZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CmluZGV4IGFlMmRjYmQuLmQyN2VlZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CkBAIC03MSw4ICs3MSwxODggQEAKICAgICA+Pj4gYSA9PSAwIGFuZCBiID09IFsxLCAyLCAzXSBhbmQgYyA9PSA0IGFuZCBkID09IFswLCAxLCAyLCAzXSBhbmQgZSA9PSA0CiAgICAgVHJ1ZQogCitBc3NpZ25tZW50IHVucGFja2luZworCisgICAgPj4+IGEsIGIsICpjID0gcmFuZ2UoNSkKKyAgICA+Pj4gYSwgYiwgYworICAgICgwLCAxLCBbMiwgMywgNF0pCisgICAgPj4+ICphLCBiLCBjID0gYSwgYiwgKmMKKyAgICA+Pj4gYSwgYiwgYworICAgIChbMCwgMSwgMl0sIDMsIDQpCisKK1NldCBkaXNwbGF5IGVsZW1lbnQgdW5wYWNraW5nCisKKyAgICA+Pj4gYSA9IFsxLCAyLCAzXQorICAgID4+PiBzb3J0ZWQoezEsICphLCAwLCA0fSkKKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiB7MSwgKjEsIDAsIDR9CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlCisKK0RpY3QgZGlzcGxheSBlbGVtZW50IHVucGFja2luZworCisgICAgPj4+IGt3ZHMgPSB7J3onOiAwLCAndyc6IDEyfQorICAgID4+PiBzb3J0ZWQoeyd4JzogMSwgJ3knOiAyLCAqKmt3ZHN9Lml0ZW1zKCkpCisgICAgWygndycsIDEyKSwgKCd4JywgMSksICgneScsIDIpLCAoJ3onLCAwKV0KKworICAgID4+PiBzb3J0ZWQoeyoqeyd4JzogMX0sICd5JzogMiwgKip7J3onOiAzfX0uaXRlbXMoKSkKKyAgICBbKCd4JywgMSksICgneScsIDIpLCAoJ3onLCAzKV0KKworICAgID4+PiBzb3J0ZWQoeyoqeyd4JzogMX0sICd5JzogMiwgKip7J3gnOiAzfX0uaXRlbXMoKSkKKyAgICBbKCd4JywgMyksICgneScsIDIpXQorCisgICAgPj4+IHNvcnRlZCh7Kip7J3gnOiAxfSwgKip7J3gnOiAzfSwgJ3gnOiA0fS5pdGVtcygpKQorICAgIFsoJ3gnLCA0KV0KKworICAgID4+PiB7Kip7fX0KKyAgICB7fQorCisgICAgPj4+IGEgPSB7fQorICAgID4+PiB7KiphfVswXSA9IDEKKyAgICA+Pj4gYQorICAgIHt9CisKKyAgICA+Pj4geyoqMX0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGEgbWFwcGluZworCisgICAgPj4+IHsqKltdfQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdsaXN0JyBvYmplY3QgaXMgbm90IGEgbWFwcGluZworCisgICAgPj4+IGxlbihldmFsKCJ7IiArICIsICIuam9pbigiKip7e3t9OiB7fX19Ii5mb3JtYXQoaSwgaSkKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApKSArICJ9IikpCisgICAgMTAwMAorCisgICAgPj4+IHswOjEsICoqezA6Mn0sIDA6MywgMDo0fQorICAgIHswOiA0fQorCitMaXN0IGNvbXByZWhlbnNpb24gZWxlbWVudCB1bnBhY2tpbmcKKworICAgID4+PiBhLCBiLCBjID0gWzAsIDEsIDJdLCAzLCA0CisgICAgPj4+IFsqYSwgYiwgY10KKyAgICBbMCwgMSwgMiwgMywgNF0KKworICAgID4+PiBsID0gW2EsICgzLCA0KSwgezV9LCB7NjogTm9uZX0sIChpIGZvciBpIGluIHJhbmdlKDcsIDEwKSldCisgICAgPj4+IFsqaXRlbSBmb3IgaXRlbSBpbiBsXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgICBTeW50YXhFcnJvcjogaXRlcmFibGUgdW5wYWNraW5nIGNhbm5vdCBiZSB1c2VkIGluIGNvbXByZWhlbnNpb24KKworICAgID4+PiBbKlswLCAxXSBmb3IgaSBpbiByYW5nZSgxMCldCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFN5bnRheEVycm9yOiBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgorCisgICAgPj4+IFsqJ2EnIGZvciBpIGluIHJhbmdlKDEwKV0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgU3ludGF4RXJyb3I6IGl0ZXJhYmxlIHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiBjb21wcmVoZW5zaW9uCisKKyAgICA+Pj4gWypbXSBmb3IgaSBpbiByYW5nZSgxMCldCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFN5bnRheEVycm9yOiBpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbgorCitHZW5lcmF0b3IgZXhwcmVzc2lvbiBpbiBmdW5jdGlvbiBhcmd1bWVudHMKKworICAgID4+PiBsaXN0KCp4IGZvciB4IGluIChyYW5nZSg1KSBmb3IgaSBpbiByYW5nZSgzKSkpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgICAgICBsaXN0KCp4IGZvciB4IGluIChyYW5nZSg1KSBmb3IgaSBpbiByYW5nZSgzKSkpCisgICAgICAgICAgICAgICAgICBeCisgICAgU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4CisKKyAgICA+Pj4gZGljdCgqKnggZm9yIHggaW4gW3sxOjJ9XSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgICAgIGRpY3QoKip4IGZvciB4IGluIFt7MToyfV0pCisgICAgICAgICAgICAgICAgICAgXgorICAgIFN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheAorCitJdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmcKKworICAgID4+PiBwcmludCgqWzFdLCAqWzJdLCAzKQorICAgIDEgMiAzCisKK01ha2Ugc3VyZSB0aGF0IHRoZXkgZG9uJ3QgY29ycnVwdCB0aGUgcGFzc2VkLWluIGRpY3RzLgorCisgICAgPj4+IGRlZiBmKHgsIHkpOgorICAgIC4uLiAgICAgcHJpbnQoeCwgeSkKKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWxfZGljdCA9IHsneCc6IDF9CisgICAgPj4+IGYoKipvcmlnaW5hbF9kaWN0LCB5PTIpCisgICAgMSAyCisgICAgPj4+IG9yaWdpbmFsX2RpY3QKKyAgICB7J3gnOiAxfQorCiBOb3cgZm9yIHNvbWUgZmFpbHVyZXMKIAorTWFrZSBzdXJlIHRoZSByYWlzZWQgZXJyb3JzIGFyZSByaWdodCBmb3Iga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmdzCisKKyAgICA+Pj4gZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCisgICAgPj4+IGNsYXNzIENyYXp5RGljdChNdXRhYmxlTWFwcGluZyk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5kID0ge30KKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICBmb3IgeCBpbiBzZWxmLmQuX19pdGVyX18oKToKKyAgICAuLi4gICAgICAgICAgICAgaWYgeCA9PSAnYyc6CisgICAgLi4uICAgICAgICAgICAgICAgICBzZWxmLmRbJ3onXSA9IDEwCisgICAgLi4uICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5kW2tdCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gbGVuKHNlbGYuZCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrLCB2KToKKyAgICAuLi4gICAgICAgICBzZWxmLmRba10gPSB2CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgayk6CisgICAgLi4uICAgICAgICAgZGVsIHNlbGYuZFtrXQorICAgIC4uLgorICAgID4+PiBkID0gQ3JhenlEaWN0KCkKKyAgICA+Pj4gZC5kID0ge2NocihvcmQoJ2EnKSArIHgpOiB4IGZvciB4IGluIHJhbmdlKDUpfQorICAgID4+PiBlID0geyoqZH0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgUnVudGltZUVycm9yOiBkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uCisKKyAgICA+Pj4gZC5kID0ge2NocihvcmQoJ2EnKSArIHgpOiB4IGZvciB4IGluIHJhbmdlKDUpfQorICAgID4+PiBkZWYgZigqKmt3YXJncyk6IHByaW50KGt3YXJncykKKyAgICA+Pj4gZigqKmQpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFJ1bnRpbWVFcnJvcjogZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbgorCitPdmVycmlkZGVuIHBhcmFtZXRlcnMKKworICAgID4+PiBmKHg9NSwgKip7J3gnOiAzfSwgeT0yKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisKKyAgICA+Pj4gZigqKnsneCc6IDN9LCB4PTUsIHk9MikKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICd4JworCisgICAgPj4+IGYoKip7J3gnOiAzfSwgKip7J3gnOiA1fSwgeT0yKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ3gnCisKKyAgICA+Pj4gZigqKnsxOiAzfSwgKip7MTogNX0pCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzCisKIFVucGFja2luZyBub24tc2VxdWVuY2UKIAogICAgID4+PiBhLCAqYiA9IDcKQEAgLTg1LDcgKzI2NSwxNCBAQAogICAgID4+PiBhLCAqYiwgYywgZCwgZSA9IFNlcSgpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVmFsdWVFcnJvcjogbmVlZCBtb3JlIHRoYW4gMyB2YWx1ZXMgdG8gdW5wYWNrCisgICAgVmFsdWVFcnJvcjogbm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCBhdCBsZWFzdCA0LCBnb3QgMykKKworVW5wYWNraW5nIHNlcXVlbmNlIHRvbyBzaG9ydCBhbmQgdGFyZ2V0IGFwcGVhcnMgbGFzdAorCisgICAgPj4+IGEsIGIsIGMsIGQsICplID0gU2VxKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBWYWx1ZUVycm9yOiBub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0IDQsIGdvdCAzKQogCiBVbnBhY2tpbmcgYSBzZXF1ZW5jZSB3aGVyZSB0aGUgdGVzdCBmb3IgdG9vIGxvbmcgcmFpc2VzIGEgZGlmZmVyZW50IGtpbmQgb2YKIGVycm9yCkBAIC0xMzEsMTcgKzMxOCwxNyBAQAogICAgID4+PiAqYSAjIGRvY3Rlc3Q6K0VMTElQU0lTCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgU3ludGF4RXJyb3I6IGNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQKKyAgICBTeW50YXhFcnJvcjogY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlCiAKICAgICA+Pj4gKjEgIyBkb2N0ZXN0OitFTExJUFNJUwogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFN5bnRheEVycm9yOiBjYW4gdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBvbmx5IGFzIGFzc2lnbm1lbnQgdGFyZ2V0CisgICAgU3ludGF4RXJyb3I6IGNhbid0IHVzZSBzdGFycmVkIGV4cHJlc3Npb24gaGVyZQogCiAgICAgPj4+IHggPSAqYSAjIGRvY3Rlc3Q6K0VMTElQU0lTCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgU3ludGF4RXJyb3I6IGNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQKKyAgICBTeW50YXhFcnJvcjogY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlCiAKIFNvbWUgc2l6ZSBjb25zdHJhaW50cyAoYWxsIGZhaWwuKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CmluZGV4IDE2MjM2ZWYuLjU4Y2EyYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CkBAIC0xMCw3ICsxMCwxMCBAQAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgb3MKLWltcG9ydCBzc2wKK3RyeToKKyAgICBpbXBvcnQgc3NsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgc3NsID0gTm9uZQogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIG50dXJsMnBhdGggaW1wb3J0IHVybDJwYXRobmFtZSwgcGF0aG5hbWUydXJsCkBAIC0zODAsNiArMzgzLDcgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJyxEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lcigpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wsICJzc2wgbW9kdWxlIHJlcXVpcmVkIikKICAgICBkZWYgdGVzdF9jYWZpbGVfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgIGNvbnRleHQgPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CkBAIC0xMzMxLDcgKzEzMzUsNyBAQAogIyAgICAgc2Vydi5zZXR0aW1lb3V0KDMpCiAjICAgICBzZXJ2LnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRUFERFIsIDEpCiAjICAgICBzZXJ2LmJpbmQoKCIiLCA5MDkzKSkKLSMgICAgIHNlcnYubGlzdGVuKDUpCisjICAgICBzZXJ2Lmxpc3RlbigpCiAjICAgICB0cnk6CiAjICAgICAgICAgY29ubiwgYWRkciA9IHNlcnYuYWNjZXB0KCkKICMgICAgICAgICBjb25uLnNlbmQoIjEgSG9sYSBtdW5kb1xuIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCA3ZDQxZWExLi5hNTI4MWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC0xMSw3ICsxMSw5IEBACiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICMgVGhlIHByb3h5IGJ5cGFzcyBtZXRob2QgaW1wb3J0ZWQgYmVsb3cgaGFzIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSBPU1gKICMgcHJveHkgY29uZmlnIGRhdGEgc3RydWN0dXJlIGJ1dCBpcyB0ZXN0YWJsZSBvbiBhbGwgcGxhdGZvcm1zLgotZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgUmVxdWVzdCwgT3BlbmVyRGlyZWN0b3IsIF9wYXJzZV9wcm94eSwgX3Byb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZgorZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgKFJlcXVlc3QsIE9wZW5lckRpcmVjdG9yLCBIVFRQQmFzaWNBdXRoSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoLCBfcGFyc2VfcHJveHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Byb3h5X2J5cGFzc19tYWNvc3hfc3lzY29uZikKIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQogaW1wb3J0IHVybGxpYi5lcnJvcgogaW1wb3J0IGh0dHAuY2xpZW50CkBAIC0yMSw2ICsyMyw3IEBACiAjIENhY2hlRlRQSGFuZGxlciAoaGFyZCB0byB3cml0ZSkKICMgcGFyc2Vfa2Vxdl9saXN0LCBwYXJzZV9odHRwX2xpc3QsIEhUVFBEaWdlc3RBdXRoSGFuZGxlcgogCisKIGNsYXNzIFRyaXZpYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9fX2FsbF9fKHNlbGYpOgpAQCAtNzEsNiArNzQsNyBAQAogICAgICAgICBlcnIgPSB1cmxsaWIuZXJyb3IuVVJMRXJyb3IoJ3JlYXNvbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLnJlYXNvbiwgc3RyKGVycikpCiAKKwogY2xhc3MgUmVxdWVzdEhkcnNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9yZXF1ZXN0X2hlYWRlcnNfZGljdChzZWxmKToKQEAgLTEzMCw3ICsxMzQsNiBAQAogICAgICAgICByZXEucmVtb3ZlX2hlYWRlcigiVW5yZWRpcmVjdGVkLXNwYW0iKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5oYXNfaGVhZGVyKCJVbnJlZGlyZWN0ZWQtc3BhbSIpKQogCi0KICAgICBkZWYgdGVzdF9wYXNzd29yZF9tYW5hZ2VyKHNlbGYpOgogICAgICAgICBtZ3IgPSB1cmxsaWIucmVxdWVzdC5IVFRQUGFzc3dvcmRNZ3IoKQogICAgICAgICBhZGQgPSBtZ3IuYWRkX3Bhc3N3b3JkCkBAIC0yMzQsNDMgKzIzNyw2MCBAQAogCiBjbGFzcyBNb2NrT3BlbmVyOgogICAgIGFkZGhlYWRlcnMgPSBbXQorCiAgICAgZGVmIG9wZW4oc2VsZiwgcmVxLCBkYXRhPU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKICAgICAgICAgc2VsZi5yZXEsIHNlbGYuZGF0YSwgc2VsZi50aW1lb3V0ID0gcmVxLCBkYXRhLCB0aW1lb3V0CisKICAgICBkZWYgZXJyb3Ioc2VsZiwgcHJvdG8sICphcmdzKToKICAgICAgICAgc2VsZi5wcm90bywgc2VsZi5hcmdzID0gcHJvdG8sIGFyZ3MKIAorCiBjbGFzcyBNb2NrRmlsZToKLSAgICBkZWYgcmVhZChzZWxmLCBjb3VudD1Ob25lKTogcGFzcwotICAgIGRlZiByZWFkbGluZShzZWxmLCBjb3VudD1Ob25lKTogcGFzcwotICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworICAgIGRlZiByZWFkKHNlbGYsIGNvdW50PU5vbmUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgY291bnQ9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCiAKIGNsYXNzIE1vY2tIZWFkZXJzKGRpY3QpOgogICAgIGRlZiBnZXRoZWFkZXJzKHNlbGYsIG5hbWUpOgogICAgICAgICByZXR1cm4gbGlzdChzZWxmLnZhbHVlcygpKQogCisKIGNsYXNzIE1vY2tSZXNwb25zZShpby5TdHJpbmdJTyk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvZGUsIG1zZywgaGVhZGVycywgZGF0YSwgdXJsPU5vbmUpOgogICAgICAgICBpby5TdHJpbmdJTy5fX2luaXRfXyhzZWxmLCBkYXRhKQogICAgICAgICBzZWxmLmNvZGUsIHNlbGYubXNnLCBzZWxmLmhlYWRlcnMsIHNlbGYudXJsID0gY29kZSwgbXNnLCBoZWFkZXJzLCB1cmwKKwogICAgIGRlZiBpbmZvKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJzCisKICAgICBkZWYgZ2V0dXJsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi51cmwKIAorCiBjbGFzcyBNb2NrQ29va2llSmFyOgogICAgIGRlZiBhZGRfY29va2llX2hlYWRlcihzZWxmLCByZXF1ZXN0KToKICAgICAgICAgc2VsZi5hY2hfcmVxID0gcmVxdWVzdAorCiAgICAgZGVmIGV4dHJhY3RfY29va2llcyhzZWxmLCByZXNwb25zZSwgcmVxdWVzdCk6CiAgICAgICAgIHNlbGYuZWNfcmVxLCBzZWxmLmVjX3IgPSByZXF1ZXN0LCByZXNwb25zZQogCisKIGNsYXNzIEZha2VNZXRob2Q6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhfbmFtZSwgYWN0aW9uLCBoYW5kbGUpOgogICAgICAgICBzZWxmLm1ldGhfbmFtZSA9IG1ldGhfbmFtZQogICAgICAgICBzZWxmLmhhbmRsZSA9IGhhbmRsZQogICAgICAgICBzZWxmLmFjdGlvbiA9IGFjdGlvbgorCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzKToKICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlKHNlbGYubWV0aF9uYW1lLCBzZWxmLmFjdGlvbiwgKmFyZ3MpCiAKKwogY2xhc3MgTW9ja0hUVFBSZXNwb25zZShpby5JT0Jhc2UpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCwgbXNnLCBzdGF0dXMsIHJlYXNvbik6CiAgICAgICAgIHNlbGYuZnAgPSBmcApAQCAtMzI0LDI0ICszNDQsMzEgQEAKICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGJvZHkKICAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9lbmRoZWFkZXJzOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCisKICAgICBkZWYgZ2V0cmVzcG9uc2Uoc2VsZik6CiAgICAgICAgIHJldHVybiBNb2NrSFRUUFJlc3BvbnNlKE1vY2tGaWxlKCksIHt9LCAyMDAsICJPSyIpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKIAorCiBjbGFzcyBNb2NrSGFuZGxlcjoKICAgICAjIHVzZWZ1bCBmb3IgdGVzdGluZyBoYW5kbGVyIG1hY2hpbmVyeQogICAgICMgc2VlIGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMoKSBkb2NzdHJpbmcKICAgICBoYW5kbGVyX29yZGVyID0gNTAwCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kcyk6CiAgICAgICAgIHNlbGYuX2RlZmluZV9tZXRob2RzKG1ldGhvZHMpCisKICAgICBkZWYgX2RlZmluZV9tZXRob2RzKHNlbGYsIG1ldGhvZHMpOgogICAgICAgICBmb3Igc3BlYyBpbiBtZXRob2RzOgotICAgICAgICAgICAgaWYgbGVuKHNwZWMpID09IDI6IG5hbWUsIGFjdGlvbiA9IHNwZWMKLSAgICAgICAgICAgIGVsc2U6IG5hbWUsIGFjdGlvbiA9IHNwZWMsIE5vbmUKKyAgICAgICAgICAgIGlmIGxlbihzcGVjKSA9PSAyOgorICAgICAgICAgICAgICAgIG5hbWUsIGFjdGlvbiA9IHNwZWMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSwgYWN0aW9uID0gc3BlYywgTm9uZQogICAgICAgICAgICAgbWV0aCA9IEZha2VNZXRob2QobmFtZSwgYWN0aW9uLCBzZWxmLmhhbmRsZSkKICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5fX2NsYXNzX18sIG5hbWUsIG1ldGgpCisKICAgICBkZWYgaGFuZGxlKHNlbGYsIGZuX25hbWUsIGFjdGlvbiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgIHNlbGYucGFyZW50LmNhbGxzLmFwcGVuZCgoc2VsZiwgZm5fbmFtZSwgYXJncywga3dkcykpCiAgICAgICAgIGlmIGFjdGlvbiBpcyBOb25lOgpAQCAtMzY0LDE2ICszOTEsMjEgQEAKICAgICAgICAgZWxpZiBhY3Rpb24gPT0gInJhaXNlIjoKICAgICAgICAgICAgIHJhaXNlIHVybGxpYi5lcnJvci5VUkxFcnJvcigiYmxhaCIpCiAgICAgICAgIGFzc2VydCBGYWxzZQotICAgIGRlZiBjbG9zZShzZWxmKTogcGFzcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBwYXNzCisKICAgICBkZWYgYWRkX3BhcmVudChzZWxmLCBwYXJlbnQpOgogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLnBhcmVudC5jYWxscyA9IFtdCisKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgbm90IGhhc2F0dHIob3RoZXIsICJoYW5kbGVyX29yZGVyIik6CiAgICAgICAgICAgICAjIE5vIGhhbmRsZXJfb3JkZXIsIGxlYXZlIGluIG9yaWdpbmFsIG9yZGVyLiAgWXVjay4KICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLmhhbmRsZXJfb3JkZXIgPCBvdGhlci5oYW5kbGVyX29yZGVyCiAKKwogZGVmIGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMob3BlbmVyLCBtZXRoX3NwZWMpOgogICAgICIiIkNyZWF0ZSBNb2NrSGFuZGxlcnMgYW5kIGFkZCB0aGVtIHRvIGFuIE9wZW5lckRpcmVjdG9yLgogCkBAIC0zOTYsNyArNDI4LDkgQEAKICAgICBoYW5kbGVycyA9IFtdCiAgICAgY291bnQgPSAwCiAgICAgZm9yIG1ldGhzIGluIG1ldGhfc3BlYzoKLSAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6IHBhc3MKKyAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6CisgICAgICAgICAgICBwYXNzCisKICAgICAgICAgaCA9IE1vY2tIYW5kbGVyU3ViY2xhc3MobWV0aHMpCiAgICAgICAgIGguaGFuZGxlcl9vcmRlciArPSBjb3VudAogICAgICAgICBoLmFkZF9wYXJlbnQob3BlbmVyKQpAQCAtNDA1LDEyICs0MzksMTQgQEAKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGgpCiAgICAgcmV0dXJuIGhhbmRsZXJzCiAKKwogZGVmIGJ1aWxkX3Rlc3Rfb3BlbmVyKCpoYW5kbGVyX2luc3RhbmNlcyk6CiAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQogICAgIGZvciBoIGluIGhhbmRsZXJfaW5zdGFuY2VzOgogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaCkKICAgICByZXR1cm4gb3BlbmVyCiAKKwogY2xhc3MgTW9ja0hUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkJhc2VIYW5kbGVyKToKICAgICAjIHVzZWZ1bCBmb3IgdGVzdGluZyByZWRpcmVjdGlvbnMgYW5kIGF1dGgKICAgICAjIHNlbmRzIHN1cHBsaWVkIGhlYWRlcnMgYW5kIGNvZGUgYXMgZmlyc3QgcmVzcG9uc2UKQEAgLTQxOSw5ICs0NTUsMTEgQEAKICAgICAgICAgc2VsZi5jb2RlID0gY29kZQogICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCiAgICAgICAgIHNlbGYucmVzZXQoKQorCiAgICAgZGVmIHJlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9jb3VudCA9IDAKICAgICAgICAgc2VsZi5yZXF1ZXN0cyA9IFtdCisKICAgICBkZWYgaHR0cF9vcGVuKHNlbGYsIHJlcSk6CiAgICAgICAgIGltcG9ydCBlbWFpbCwgaHR0cC5jbGllbnQsIGNvcHkKICAgICAgICAgc2VsZi5yZXF1ZXN0cy5hcHBlbmQoY29weS5kZWVwY29weShyZXEpKQpAQCAtNDM2LDYgKzQ3NCw3IEBACiAgICAgICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJcclxuXHJcbiIpCiAgICAgICAgICAgICByZXR1cm4gTW9ja1Jlc3BvbnNlKDIwMCwgIk9LIiwgbXNnLCAiIiwgcmVxLmdldF9mdWxsX3VybCgpKQogCisKIGNsYXNzIE1vY2tIVFRQU0hhbmRsZXIodXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcik6CiAgICAgIyBVc2VmdWwgZm9yIHRlc3RpbmcgdGhlIFByb3h5LUF1dGhvcml6YXRpb24gcmVxdWVzdCBieSB2ZXJpZnlpbmcgdGhlCiAgICAgIyBwcm9wZXJ0aWVzIG9mIGh0dHBjb24KQEAgLTQ0NywxMiArNDg2LDMzIEBACiAgICAgZGVmIGh0dHBzX29wZW4oc2VsZiwgcmVxKToKICAgICAgICAgcmV0dXJuIHNlbGYuZG9fb3BlbihzZWxmLmh0dHBjb25uLCByZXEpCiAKKworY2xhc3MgTW9ja0hUVFBIYW5kbGVyQ2hlY2tBdXRoKHVybGxpYi5yZXF1ZXN0LkJhc2VIYW5kbGVyKToKKyAgICAjIHVzZWZ1bCBmb3IgdGVzdGluZyBhdXRoCisgICAgIyBzZW5kcyBzdXBwbGllZCBjb2RlIHJlc3BvbnNlCisgICAgIyBjaGVja3MgaWYgYXV0aCBoZWFkZXIgaXMgc3BlY2lmaWVkIGluIHJlcXVlc3QKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29kZSk6CisgICAgICAgIHNlbGYuY29kZSA9IGNvZGUKKyAgICAgICAgc2VsZi5oYXNfYXV0aF9oZWFkZXIgPSBGYWxzZQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLmhhc19hdXRoX2hlYWRlciA9IEZhbHNlCisKKyAgICBkZWYgaHR0cF9vcGVuKHNlbGYsIHJlcSk6CisgICAgICAgIGlmIHJlcS5oYXNfaGVhZGVyKCdBdXRob3JpemF0aW9uJyk6CisgICAgICAgICAgICBzZWxmLmhhc19hdXRoX2hlYWRlciA9IFRydWUKKyAgICAgICAgbmFtZSA9IGh0dHAuY2xpZW50LnJlc3BvbnNlc1tzZWxmLmNvZGVdCisgICAgICAgIHJldHVybiBNb2NrUmVzcG9uc2Uoc2VsZi5jb2RlLCBuYW1lLCBNb2NrRmlsZSgpLCAiIiwgcmVxLmdldF9mdWxsX3VybCgpKQorCisKKwogY2xhc3MgTW9ja1Bhc3N3b3JkTWFuYWdlcjoKICAgICBkZWYgYWRkX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCB1cmksIHVzZXIsIHBhc3N3b3JkKToKICAgICAgICAgc2VsZi5yZWFsbSA9IHJlYWxtCiAgICAgICAgIHNlbGYudXJsID0gdXJpCiAgICAgICAgIHNlbGYudXNlciA9IHVzZXIKICAgICAgICAgc2VsZi5wYXNzd29yZCA9IHBhc3N3b3JkCisKICAgICBkZWYgZmluZF91c2VyX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCBhdXRodXJpKToKICAgICAgICAgc2VsZi50YXJnZXRfcmVhbG0gPSByZWFsbQogICAgICAgICBzZWxmLnRhcmdldF91cmwgPSBhdXRodXJpCkBAIC01MTcsMTEgKzU3NywxMSBAQAogICAgIGRlZiB0ZXN0X2hhbmRsZXJfb3JkZXIoc2VsZik6CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCiAgICAgICAgIGhhbmRsZXJzID0gW10KLSAgICAgICAgZm9yIG1ldGhzLCBoYW5kbGVyX29yZGVyIGluIFsKLSAgICAgICAgICAgIChbKCJodHRwX29wZW4iLCAicmV0dXJuIHNlbGYiKV0sIDUwMCksCi0gICAgICAgICAgICAoWyJodHRwX29wZW4iXSwgMCksCi0gICAgICAgICAgICBdOgotICAgICAgICAgICAgY2xhc3MgTW9ja0hhbmRsZXJTdWJjbGFzcyhNb2NrSGFuZGxlcik6IHBhc3MKKyAgICAgICAgZm9yIG1ldGhzLCBoYW5kbGVyX29yZGVyIGluIFsoWygiaHR0cF9vcGVuIiwgInJldHVybiBzZWxmIildLCA1MDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbImh0dHBfb3BlbiJdLCAwKV06CisgICAgICAgICAgICBjbGFzcyBNb2NrSGFuZGxlclN1YmNsYXNzKE1vY2tIYW5kbGVyKToKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgICAgIGggPSBNb2NrSGFuZGxlclN1YmNsYXNzKG1ldGhzKQogICAgICAgICAgICAgaC5oYW5kbGVyX29yZGVyID0gaGFuZGxlcl9vcmRlcgogICAgICAgICAgICAgaGFuZGxlcnMuYXBwZW5kKGgpCkBAIC01NTksNyArNjE5LDggQEAKICAgICAgICAgaGFuZGxlcnMgPSBhZGRfb3JkZXJlZF9tb2NrX2hhbmRsZXJzKG8sIG1ldGhfc3BlYykKIAogICAgICAgICBjbGFzcyBVbmtub3duOgotICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6IHJldHVybiBUcnVlCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iKQogICAgICAgICBvLm9wZW4ocmVxKQpAQCAtNTcyLDcgKzYzMyw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChoYW5kbGVyLCBtZXRob2RfbmFtZSksIGdvdFs6Ml0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIGdvdFsyXSkKIAotCiAgICAgZGVmIHRlc3RfcHJvY2Vzc29ycyhzZWxmKToKICAgICAgICAgIyAqX3JlcXVlc3QgLyAqX3Jlc3BvbnNlIG1ldGhvZHMgZ2V0IGNhbGxlZCBhcHByb3ByaWF0ZWx5CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCkBAIC02MDgsNiArNjY4LDcgQEAKICAgICAgICAgICAgICAgICBpZiBhcmdzWzFdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXJnc1sxXSwgTW9ja1Jlc3BvbnNlKQogCisKIGRlZiBzYW5lcGF0aG5hbWUydXJsKHBhdGgpOgogICAgIHRyeToKICAgICAgICAgcGF0aC5lbmNvZGUoInV0Zi04IikKQEAgLTYxOSwxOCArNjgwLDI1IEBACiAgICAgIyBYWFggZG9uJ3QgYXNrIG1lIGFib3V0IHRoZSBtYWMuLi4KICAgICByZXR1cm4gdXJscGF0aAogCisKIGNsYXNzIEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mdHAoc2VsZik6CiAgICAgICAgIGNsYXNzIE1vY2tGVFBXcmFwcGVyOgotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOiBzZWxmLmRhdGEgPSBkYXRhCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CisgICAgICAgICAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCiAgICAgICAgICAgICBkZWYgcmV0cmZpbGUoc2VsZiwgZmlsZW5hbWUsIGZpbGV0eXBlKToKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lLCBzZWxmLmZpbGV0eXBlID0gZmlsZW5hbWUsIGZpbGV0eXBlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGlvLlN0cmluZ0lPKHNlbGYuZGF0YSksIGxlbihzZWxmLmRhdGEpCi0gICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6IHBhc3MKKworICAgICAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBjbGFzcyBOdWxsRlRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5GVFBIYW5kbGVyKToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKTogc2VsZi5kYXRhID0gZGF0YQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgorICAgICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKwogICAgICAgICAgICAgZGVmIGNvbm5lY3RfZnRwKHNlbGYsIHVzZXIsIHBhc3N3ZCwgaG9zdCwgcG9ydCwgZGlycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CiAgICAgICAgICAgICAgICAgc2VsZi51c2VyLCBzZWxmLnBhc3N3ZCA9IHVzZXIsIHBhc3N3ZApAQCAtODY4LDcgKzkzNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaC5kb19yZXF1ZXN0XywgcmVxKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksMzApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKIAogICAgICAgICBmaWxlX29iai5jbG9zZSgpCiAKQEAgLTkwMSwxMiArOTY5LDEyIEBACiAKICAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciBob3N0IGlzIGRldGVybWluZWQgY29ycmVjdGx5IGlmIHRoZXJlIGlzIG5vIHByb3h5CiAgICAgICAgICAgICBucF9kc19yZXEgPSBoLmRvX3JlcXVlc3RfKGRzX3JlcSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sImV4YW1wbGUuY29tIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnBfZHNfcmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sICJleGFtcGxlLmNvbSIpCiAKICAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciBob3N0IGlzIGRldGVybWluZWQgY29ycmVjdGx5IGlmIHRoZXJlIGlzIGEgcHJveHkKLSAgICAgICAgICAgIGRzX3JlcS5zZXRfcHJveHkoInNvbWVwcm94eTozMTI4IixOb25lKQorICAgICAgICAgICAgZHNfcmVxLnNldF9wcm94eSgic29tZXByb3h5OjMxMjgiLCBOb25lKQogICAgICAgICAgICAgcF9kc19yZXEgPSBoLmRvX3JlcXVlc3RfKGRzX3JlcSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocF9kc19yZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwiZXhhbXBsZS5jb20iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwX2RzX3JlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiZXhhbXBsZS5jb20iKQogCiAgICAgZGVmIHRlc3RfZnVsbF91cmxfc2V0dGVyKHNlbGYpOgogICAgICAgICAjIENoZWNrcyB0byBlbnN1cmUgdGhhdCBjb21wb25lbnRzIGFyZSBzZXQgY29ycmVjdGx5IGFmdGVyIHNldHRpbmcgdGhlCkBAIC05NDgsMTUgKzEwMTYsMTQgQEAKICAgICAgICAgd2VpcmRfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9uLm9yZz9nZXRzcGFtJwogICAgICAgICByZXEgPSBSZXF1ZXN0KHdlaXJkX3VybCkKICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmhvc3QsJ3d3dy5weXRob24ub3JnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuc2VsZWN0b3IsJy8/Z2V0c3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmhvc3QsICd3d3cucHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLnNlbGVjdG9yLCAnLz9nZXRzcGFtJykKIAogICAgICAgICB1cmxfd2l0aG91dF9wYXRoID0gJ2h0dHA6Ly93d3cucHl0aG9uLm9yZycKICAgICAgICAgcmVxID0gUmVxdWVzdCh1cmxfd2l0aG91dF9wYXRoKQogICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuaG9zdCwnd3d3LnB5dGhvbi5vcmcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5zZWxlY3RvciwnJykKLQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5ob3N0LCAnd3d3LnB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5zZWxlY3RvciwgJycpCiAKICAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5IVFRQRXJyb3JQcm9jZXNzb3IoKQpAQCAtMTA0Myw2ICsxMTEwLDcgQEAKICAgICAgICAgIyBsb29wIGRldGVjdGlvbgogICAgICAgICByZXEgPSBSZXF1ZXN0KGZyb21fdXJsKQogICAgICAgICByZXEudGltZW91dCA9IHNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVAorCiAgICAgICAgIGRlZiByZWRpcmVjdChoLCByZXEsIHVybD10b191cmwpOgogICAgICAgICAgICAgaC5odHRwX2Vycm9yXzMwMihyZXEsIE1vY2tGaWxlKCksIDMwMiwgIkJsYWgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2NrSGVhZGVycyh7ImxvY2F0aW9uIjogdXJsfSkpCkBAIC0xMDczLDcgKzExNDEsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QuSFRUUFJlZGlyZWN0SGFuZGxlci5tYXhfcmVkaXJlY3Rpb25zKQogCi0KICAgICBkZWYgdGVzdF9pbnZhbGlkX3JlZGlyZWN0KHNlbGYpOgogICAgICAgICBmcm9tX3VybCA9ICJodHRwOi8vZXhhbXBsZS5jb20vYS5odG1sIgogICAgICAgICB2YWxpZF9zY2hlbWVzID0gWydodHRwJywnaHR0cHMnLCdmdHAnXQpAQCAtMTE3Niw3ICsxMjQzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgZGVsIG9zLmVudmlyb25bJ25vX3Byb3h5J10KIAotCiAgICAgZGVmIHRlc3RfcHJveHlfaHR0cHMoc2VsZik6CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCiAgICAgICAgIHBoID0gdXJsbGliLnJlcXVlc3QuUHJveHlIYW5kbGVyKGRpY3QoaHR0cHM9InByb3h5LmV4YW1wbGUuY29tOjMxMjgiKSkKQEAgLTEyMDAsMjEgKzEyNjYsMjEgQEAKICAgICAgICAgaHR0cHNfaGFuZGxlciA9IE1vY2tIVFRQU0hhbmRsZXIoKQogICAgICAgICBvLmFkZF9oYW5kbGVyKGh0dHBzX2hhbmRsZXIpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpCi0gICAgICAgIHJlcS5hZGRfaGVhZGVyKCJQcm94eS1BdXRob3JpemF0aW9uIiwiRm9vQmFyIikKLSAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlVzZXItQWdlbnQiLCJHcmFpbCIpCisgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJQcm94eS1BdXRob3JpemF0aW9uIiwgIkZvb0JhciIpCisgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJVc2VyLUFnZW50IiwgIkdyYWlsIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5leGFtcGxlLmNvbSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlcS5fdHVubmVsX2hvc3QpCiAgICAgICAgIG8ub3BlbihyZXEpCiAgICAgICAgICMgVmVyaWZ5IFByb3h5LUF1dGhvcml6YXRpb24gZ2V0cyB0dW5uZWxlZCB0byByZXF1ZXN0LgogICAgICAgICAjIGh0dHBzY29ubiByZXFfaGVhZGVycyBkbyBub3QgaGF2ZSB0aGUgUHJveHktQXV0aG9yaXphdGlvbiBoZWFkZXIgYnV0CiAgICAgICAgICMgdGhlIHJlcSB3aWxsIGhhdmUuCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKCJQcm94eS1BdXRob3JpemF0aW9uIiwiRm9vQmFyIiksCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKCJQcm94eS1BdXRob3JpemF0aW9uIiwgIkZvb0JhciIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzX2hhbmRsZXIuaHR0cGNvbm4ucmVxX2hlYWRlcnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oKCJVc2VyLUFnZW50IiwiR3JhaWwiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRJbigoIlVzZXItQWdlbnQiLCAiR3JhaWwiKSwKICAgICAgICAgICAgICAgICAgICAgICBodHRwc19oYW5kbGVyLmh0dHBjb25uLnJlcV9oZWFkZXJzKQogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZXEuX3R1bm5lbF9ob3N0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlByb3h5LWF1dGhvcml6YXRpb24iKSwiRm9vQmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiUHJveHktYXV0aG9yaXphdGlvbiIpLCAiRm9vQmFyIikKIAogICAgICMgVE9ETzogVGhpcyBzaG91bGQgYmUgb25seSBmb3IgT1NYCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAib25seSByZWxldmFudCBmb3IgT1NYIikKQEAgLTEyNDYsNyArMTMxMiw3IEBACiAgICAgICAgIHJlYWxtID0gIkFDTUUgV2lkZ2V0IFN0b3JlIgogICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCiAgICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0lcyVzJXNcclxuXHJcbicgJQotICAgICAgICAgICAgKHF1b3RlX2NoYXIsIHJlYWxtLCBxdW90ZV9jaGFyKSApCisgICAgICAgICAgICAocXVvdGVfY2hhciwgcmVhbG0sIHF1b3RlX2NoYXIpKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQogICAgICAgICBzZWxmLl90ZXN0X2Jhc2ljX2F1dGgob3BlbmVyLCBhdXRoX2hhbmRsZXIsICJBdXRob3JpemF0aW9uIiwKQEAgLTEzMDQsMTMgKzEzNzAsMTYgQEAKICAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICBPcGVuZXJEaXJlY3Rvci5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgICAgIHNlbGYucmVjb3JkZWQgPSBbXQorCiAgICAgICAgICAgICBkZWYgcmVjb3JkKHNlbGYsIGluZm8pOgogICAgICAgICAgICAgICAgIHNlbGYucmVjb3JkZWQuYXBwZW5kKGluZm8pCisKICAgICAgICAgY2xhc3MgVGVzdERpZ2VzdEF1dGhIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBEaWdlc3RBdXRoSGFuZGxlcik6CiAgICAgICAgICAgICBkZWYgaHR0cF9lcnJvcl80MDEoc2VsZiwgKmFyZ3MsICoqa3dkcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXJlbnQucmVjb3JkKCJkaWdlc3QiKQogICAgICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LkhUVFBEaWdlc3RBdXRoSGFuZGxlci5odHRwX2Vycm9yXzQwMShzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzLCAqKmt3ZHMpCisKICAgICAgICAgY2xhc3MgVGVzdEJhc2ljQXV0aEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEJhc2ljQXV0aEhhbmRsZXIpOgogICAgICAgICAgICAgZGVmIGh0dHBfZXJyb3JfNDAxKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAgICAgICAgIHNlbGYucGFyZW50LnJlY29yZCgiYmFzaWMiKQpAQCAtMTM0Niw3ICsxNDE1LDcgQEAKICAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEtlcmJlcm9zXHJcblxyXG4nKQogICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoZGlnZXN0X2F1dGhfaGFuZGxlcikKICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZW5lci5vcGVuLCAiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9hdXRoX2Jhc2ljX2hhbmRsZXIoc2VsZik6CiAgICAgICAgICMgV2hpbGUgdXNpbmcgQmFzaWNBdXRoSGFuZGxlcgpAQCAtMTM1Niw3ICsxNDI1LDcgQEAKICAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IE5UTE1cclxuXHJcbicpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihiYXNpY19hdXRoX2hhbmRsZXIpCiAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVuZXIub3BlbiwgImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQogCiAgICAgZGVmIF90ZXN0X2Jhc2ljX2F1dGgoc2VsZiwgb3BlbmVyLCBhdXRoX2hhbmRsZXIsIGF1dGhfaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCkBAIC0xMzk1LDYgKzE0NjQsNzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaHR0cF9oYW5kbGVyLnJlcXVlc3RzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodHRwX2hhbmRsZXIucmVxdWVzdHNbMF0uaGFzX2hlYWRlcihhdXRoX2hlYWRlcikpCiAKKyAgICBkZWYgdGVzdF9iYXNpY19wcmlvcl9hdXRoX2F1dG9fc2VuZChzZWxmKToKKyAgICAgICAgIyBBc3N1bWUgYWxyZWFkeSBhdXRoZW50aWNhdGVkIGlmIGlzX2F1dGhlbnRpY2F0ZWQ9VHJ1ZQorICAgICAgICAjIGZvciBBUElzIGxpa2UgR2l0aHViIHRoYXQgZG9uJ3QgcmV0dXJuIDQwMQorCisgICAgICAgIHVzZXIsIHBhc3N3b3JkID0gIndpbGUiLCAiY295b3RlIgorICAgICAgICByZXF1ZXN0X3VybCA9ICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiCisKKyAgICAgICAgaHR0cF9oYW5kbGVyID0gTW9ja0hUVFBIYW5kbGVyQ2hlY2tBdXRoKDIwMCkKKworICAgICAgICBwd2RfbWFuYWdlciA9IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgoKQorICAgICAgICBhdXRoX3ByaW9yX2hhbmRsZXIgPSBIVFRQQmFzaWNBdXRoSGFuZGxlcihwd2RfbWFuYWdlcikKKyAgICAgICAgYXV0aF9wcmlvcl9oYW5kbGVyLmFkZF9wYXNzd29yZCgKKyAgICAgICAgICAgIE5vbmUsIHJlcXVlc3RfdXJsLCB1c2VyLCBwYXNzd29yZCwgaXNfYXV0aGVudGljYXRlZD1UcnVlKQorCisgICAgICAgIGlzX2F1dGggPSBwd2RfbWFuYWdlci5pc19hdXRoZW50aWNhdGVkKHJlcXVlc3RfdXJsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfYXV0aCkKKworICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX3ByaW9yX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisKKyAgICAgICAgb3BlbmVyLm9wZW4ocmVxdWVzdF91cmwpCisKKyAgICAgICAgIyBleHBlY3QgcmVxdWVzdCB0byBiZSBzZW50IHdpdGggYXV0aCBoZWFkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGh0dHBfaGFuZGxlci5oYXNfYXV0aF9oZWFkZXIpCisKKyAgICBkZWYgdGVzdF9iYXNpY19wcmlvcl9hdXRoX3NlbmRfYWZ0ZXJfZmlyc3Rfc3VjY2VzcyhzZWxmKToKKyAgICAgICAgIyBBdXRvIHNlbmQgYXV0aCBoZWFkZXIgYWZ0ZXIgYXV0aGVudGljYXRpb24gaXMgc3VjY2Vzc2Z1bCBvbmNlCisKKyAgICAgICAgdXNlciwgcGFzc3dvcmQgPSAnd2lsZScsICdjb3lvdGUnCisgICAgICAgIHJlcXVlc3RfdXJsID0gJ2h0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCcKKyAgICAgICAgcmVhbG0gPSAnQUNNRScKKworICAgICAgICBwd2RfbWFuYWdlciA9IEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgoKQorICAgICAgICBhdXRoX3ByaW9yX2hhbmRsZXIgPSBIVFRQQmFzaWNBdXRoSGFuZGxlcihwd2RfbWFuYWdlcikKKyAgICAgICAgYXV0aF9wcmlvcl9oYW5kbGVyLmFkZF9wYXNzd29yZChyZWFsbSwgcmVxdWVzdF91cmwsIHVzZXIsIHBhc3N3b3JkKQorCisgICAgICAgIGlzX2F1dGggPSBwd2RfbWFuYWdlci5pc19hdXRoZW50aWNhdGVkKHJlcXVlc3RfdXJsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzX2F1dGgpCisKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9wcmlvcl9oYW5kbGVyKQorCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKyAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSIlcyJcclxuXHJcbicgJSBOb25lKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorCisgICAgICAgIG9wZW5lci5vcGVuKHJlcXVlc3RfdXJsKQorCisgICAgICAgIGlzX2F1dGggPSBwd2RfbWFuYWdlci5pc19hdXRoZW50aWNhdGVkKHJlcXVlc3RfdXJsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfYXV0aCkKKworICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXJDaGVja0F1dGgoMjAwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0dHBfaGFuZGxlci5oYXNfYXV0aF9oZWFkZXIpCisKKyAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9wcmlvcl9oYW5kbGVyKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorCisgICAgICAgICMgQWZ0ZXIgZ2V0dGluZyAyMDAgZnJvbSBNb2NrSFRUUEhhbmRsZXIKKyAgICAgICAgIyBOZXh0IHJlcXVlc3Qgc2VuZHMgaGVhZGVyIGluIHRoZSBmaXJzdCByZXF1ZXN0CisgICAgICAgIG9wZW5lci5vcGVuKHJlcXVlc3RfdXJsKQorCisgICAgICAgICMgZXhwZWN0IHJlcXVlc3QgdG8gYmUgc2VudCB3aXRoIGF1dGggaGVhZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodHRwX2hhbmRsZXIuaGFzX2F1dGhfaGVhZGVyKQorCiAgICAgZGVmIHRlc3RfaHR0cF9jbG9zZWQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhlIGNvbm5lY3Rpb24gaXMgY2xlYW5lZCB1cCB3aGVuIHRoZSByZXNwb25zZSBpcyBjbG9zZWQiIiIKICAgICAgICAgZm9yICh0cmFuc2ZlciwgZGF0YSkgaW4gKApAQCAtMTQyMyw2ICsxNTU4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbm4uZmFrZXNvY2suY2xvc2VkLCAiQ29ubmVjdGlvbiBub3QgY2xvc2VkIikKIAogCisKIGNsYXNzIE1pc2NUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgb3BlbmVyX2hhc19oYW5kbGVyKHNlbGYsIG9wZW5lciwgaGFuZGxlcl9jbGFzcyk6CkBAIC0xNDMwLDExICsxNTY2LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGggaW4gb3BlbmVyLmhhbmRsZXJzKSkKIAogICAgIGRlZiB0ZXN0X2J1aWxkX29wZW5lcihzZWxmKToKLSAgICAgICAgY2xhc3MgTXlIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcik6IHBhc3MKKyAgICAgICAgY2xhc3MgTXlIVFRQSGFuZGxlcih1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlcik6CisgICAgICAgICAgICBwYXNzCisKICAgICAgICAgY2xhc3MgRm9vSGFuZGxlcih1cmxsaWIucmVxdWVzdC5CYXNlSGFuZGxlcik6Ci0gICAgICAgICAgICBkZWYgZm9vX29wZW4oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBmb29fb3BlbihzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgY2xhc3MgQmFySGFuZGxlcih1cmxsaWIucmVxdWVzdC5CYXNlSGFuZGxlcik6Ci0gICAgICAgICAgICBkZWYgYmFyX29wZW4oc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBiYXJfb3BlbihzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgYnVpbGRfb3BlbmVyID0gdXJsbGliLnJlcXVlc3QuYnVpbGRfb3BlbmVyCiAKQEAgLTE0NjEsNyArMTYwMiw5IEBACiAgICAgICAgIHNlbGYub3BlbmVyX2hhc19oYW5kbGVyKG8sIHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKQogCiAgICAgICAgICMgSXNzdWUyNjcwOiBtdWx0aXBsZSBoYW5kbGVycyBzaGFyaW5nIHRoZSBzYW1lIGJhc2UgY2xhc3MKLSAgICAgICAgY2xhc3MgTXlPdGhlckhUVFBIYW5kbGVyKHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyKTogcGFzcworICAgICAgICBjbGFzcyBNeU90aGVySFRUUEhhbmRsZXIodXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIpOgorICAgICAgICAgICAgcGFzcworCiAgICAgICAgIG8gPSBidWlsZF9vcGVuZXIoTXlIVFRQSGFuZGxlciwgTXlPdGhlckhUVFBIYW5kbGVyKQogICAgICAgICBzZWxmLm9wZW5lcl9oYXNfaGFuZGxlcihvLCBNeUhUVFBIYW5kbGVyKQogICAgICAgICBzZWxmLm9wZW5lcl9oYXNfaGFuZGxlcihvLCBNeU90aGVySFRUUEhhbmRsZXIpCkBAIC0xNDk3LDYgKzE2NDAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5oZWFkZXJzLCAnQ29udGVudC1MZW5ndGg6IDQyJykKICAgICAgICAgZXhwZWN0ZWRfZXJybXNnID0gJ0hUVFAgRXJyb3IgJXM6ICVzJyAlIChlcnIuY29kZSwgZXJyLm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZXJyKSwgZXhwZWN0ZWRfZXJybXNnKQorICAgICAgICBleHBlY3RlZF9lcnJtc2cgPSAnPEhUVFBFcnJvciAlczogJXI+JyAlIChlcnIuY29kZSwgZXJyLm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVyciksIGV4cGVjdGVkX2Vycm1zZykKIAogICAgIGRlZiB0ZXN0X3BhcnNlX3Byb3h5KHNlbGYpOgogICAgICAgICBwYXJzZV9wcm94eV90ZXN0X2Nhc2VzID0gWwpAQCAtMTUzNSw5ICsxNjgwLDEwIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3BhcnNlX3Byb3h5LCAnZmlsZTovZnRwLmV4YW1wbGUuY29tJyksCiAKKwogY2xhc3MgUmVxdWVzdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjbGFzcyBQdXRSZXF1ZXN0KFJlcXVlc3QpOgotICAgICAgICBtZXRob2Q9J1BVVCcKKyAgICAgICAgbWV0aG9kID0gJ1BVVCcKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5nZXQgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvfmplcmVteS8iKQpAQCAtMTYyNiw3ICsxNzcyLDcgQEAKICAgICBkZWYgdGVzdF91cmxfZnVsbHVybF9nZXRfZnVsbF91cmwoc2VsZik6CiAgICAgICAgIHVybHMgPSBbJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcnLAogICAgICAgICAgICAgICAgICdodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdXJsbGliMi5odG1sI09LJywKLSAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnLz9xcz1xdWVyeSNmcmFnbWVudD10cnVlJyBdCisgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cucHl0aG9uLm9yZy8/cXM9cXVlcnkjZnJhZ21lbnQ9dHJ1ZSddCiAgICAgICAgIGZvciB1cmwgaW4gdXJsczoKICAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QodXJsKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2Z1bGxfdXJsKCksIHJlcS5mdWxsX3VybCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQppbmRleCAxN2Y5ZDFiLi5jYWQ4M2ZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CkBAIC0yMCw4ICsyMCw2IEBACiAgICAgICAgIGV4Y2VwdCBleGMgYXMgZToKICAgICAgICAgICAgIGxhc3RfZXhjID0gZQogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmFpc2UKICAgICByYWlzZSBsYXN0X2V4YwogCiBkZWYgX3dyYXBfd2l0aF9yZXRyeV90aHJpY2UoZnVuYywgZXhjKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CmluZGV4IDE3NzVlZjMuLjA1NTJmOTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQpAQCAtMjEwLDEwICsyMTAsNiBAQAogCiAgICAgICAgICMgImFibm9ybWFsIiBjYXNlcyBmcm9tIFJGQyAxODA4OgogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcnLCAnaHR0cDovL2EvYi9jL2Q7cD9xI2YnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcvLi9nJywgJ2h0dHA6Ly9hLy4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdnLicsICdodHRwOi8vYS9iL2MvZy4nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuZycsICdodHRwOi8vYS9iL2MvLmcnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdnLi4nLCAnaHR0cDovL2EvYi9jL2cuLicpCkBAIC0yMjgsNiArMjI0LDEzIEBACiAgICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICdodHRwOmcnLCAnaHR0cDpnJykKICAgICAgICAgI3NlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJ2h0dHA6JywgJ2h0dHA6JykKIAorICAgICAgICAjIFhYWDogVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm8gbG9uZ2VyIGNvbXBhdGlibGUgd2l0aCBSRkMzOTg2CisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMTgwOF9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzE4MDhfQkFTRSwgJy8uL2cnLCAnaHR0cDovL2EvLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMxODA4X0JBU0UsICcvLi4vZycsICdodHRwOi8vYS8uLi9nJykKKworCiAgICAgZGVmIHRlc3RfUkZDMjM2OChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxMTQ2NzogcGF0aCB0aGF0IHN0YXJ0cyB3aXRoIGEgbnVtYmVyIGlzIG5vdCBwYXJzZWQgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJsbGliLnBhcnNlLnVybHBhcnNlKCdtYWlsdG86MTMzN0BleGFtcGxlLm9yZycpLApAQCAtMjU4LDEwICsyNjEsNiBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8nLCAnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vZycsICdodHRwOi8vYS9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnJywgUkZDMjM5Nl9CQVNFKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcvLi9nJywgJ2h0dHA6Ly9hLy4vZycpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy8uLi9nJywgJ2h0dHA6Ly9hLy4uL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnLicsICdodHRwOi8vYS9iL2MvZy4nKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuZycsICdodHRwOi8vYS9iL2MvLmcnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnLi4nLCAnaHR0cDovL2EvYi9jL2cuLicpCkBAIC0yNzcsMTAgKzI3NiwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICdnI3MvLi94JywgJ2h0dHA6Ly9hL2IvYy9nI3MvLi94JykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnZyNzLy4uL3gnLCAnaHR0cDovL2EvYi9jL2cjcy8uLi94JykKIAorICAgICAgICAjIFhYWDogVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm8gbG9uZ2VyIGNvbXBhdGlibGUgd2l0aCBSRkMzOTg2CisgICAgICAgICMgc2VsZi5jaGVja0pvaW4oUkZDMjM5Nl9CQVNFLCAnLi4vLi4vLi4vZycsICdodHRwOi8vYS8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywgJ2h0dHA6Ly9hLy4uLy4uL2cnKQorICAgICAgICAjIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJy8uL2cnLCAnaHR0cDovL2EvLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihSRkMyMzk2X0JBU0UsICcvLi4vZycsICdodHRwOi8vYS8uLi9nJykKKworCiAgICAgZGVmIHRlc3RfUkZDMzk4NihzZWxmKToKICAgICAgICAgIyBUZXN0IGNhc2VzIGZyb20gUkZDMzk4NgogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICc/eScsJ2h0dHA6Ly9hL2IvYy9kO3A/eScpCi0gICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzIzOTZfQkFTRSwgJzt4JywgJ2h0dHA6Ly9hL2IvYy87eCcpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJzt4JywgJ2h0dHA6Ly9hL2IvYy87eCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2c6aCcsJ2c6aCcpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2cnLCdodHRwOi8vYS9iL2MvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4vZycsJ2h0dHA6Ly9hL2IvYy9nJykKQEAgLTMwNCwxNyArMzEwLDE3IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uJywnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vJywnaHR0cDovL2EvJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi9nJywgJ2h0dHA6Ly9hL2cnKQogCiAgICAgICAgICNBYm5vcm1hbCBFeGFtcGxlcwogCiAgICAgICAgICMgVGhlICdhYm5vcm1hbCBzY2VuYXJpb3MnIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBSRkMyOTg2IHBhcnNpbmcKICAgICAgICAgIyBUZXN0cyBhcmUgaGVyZSBmb3IgcmVmZXJlbmNlLgogCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcuLi8uLi8uLi8uLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi9nJywnaHR0cDovL2EvZycpCi0gICAgICAgICNzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi4vZycsJ2h0dHA6Ly9hL2cnKQotCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLi4vLi4vLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQorICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICcvLi9nJywnaHR0cDovL2EvZycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJy8uLi9nJywnaHR0cDovL2EvZycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFJGQzM5ODZfQkFTRSwgJ2cuJywnaHR0cDovL2EvYi9jL2cuJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oUkZDMzk4Nl9CQVNFLCAnLmcnLCdodHRwOi8vYS9iL2MvLmcnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihSRkMzOTg2X0JBU0UsICdnLi4nLCdodHRwOi8vYS9iL2MvZy4uJykKQEAgLTM1NCwxMCArMzYwLDggQEAKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi9nJywnaHR0cDovL2EvYi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLi8uLicsJ2h0dHA6Ly9hLycpCiAgICAgICAgIHNlbGYuY2hlY2tKb2luKFNJTVBMRV9CQVNFLCAnLi4vLi4vZycsJ2h0dHA6Ly9hL2cnKQotICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS8uLi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcuLy4uL2cnLCdodHRwOi8vYS9iL2cnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4vZy8uJywnaHR0cDovL2EvYi9jL2cvJykKLSAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICcvLi9nJywnaHR0cDovL2EvLi9nJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICdnLy4vaCcsJ2h0dHA6Ly9hL2IvYy9nL2gnKQogICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJ2cvLi4vaCcsJ2h0dHA6Ly9hL2IvYy9oJykKICAgICAgICAgc2VsZi5jaGVja0pvaW4oU0lNUExFX0JBU0UsICdodHRwOmcnLCdodHRwOi8vYS9iL2MvZycpCkBAIC0zNzEsNiArMzc1LDI1IEBACiAgICAgICAgIHNlbGYuY2hlY2tKb2luKCdzdm46Ly9wYXRodG9yZXBvL2RpcjEnLCAnZGlyMicsICdzdm46Ly9wYXRodG9yZXBvL2RpcjInKQogICAgICAgICBzZWxmLmNoZWNrSm9pbignc3ZuK3NzaDovL3BhdGh0b3JlcG8vZGlyMScsICdkaXIyJywgJ3N2bitzc2g6Ly9wYXRodG9yZXBvL2RpcjInKQogCisgICAgICAgICMgWFhYOiBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBubyBsb25nZXIgY29tcGF0aWJsZSB3aXRoIFJGQzM5ODYKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy4uLy4uLy4uL2cnLCdodHRwOi8vYS8uLi9nJykKKyAgICAgICAgIyBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSwgJy8uL2cnLCdodHRwOi8vYS8uL2cnKQorCisgICAgICAgICMgdGVzdCBmb3IgaXNzdWUyMjExOCBkdXBsaWNhdGUgc2xhc2hlcworICAgICAgICBzZWxmLmNoZWNrSm9pbihTSU1QTEVfQkFTRSArICcvJywgJ2ZvbycsIFNJTVBMRV9CQVNFICsgJy9mb28nKQorCisgICAgICAgICMgTm9uLVJGQy1kZWZpbmVkIHRlc3RzLCBjb3ZlcmluZyB2YXJpYXRpb25zIG9mIGJhc2UgYW5kIHRyYWlsaW5nCisgICAgICAgICMgc2xhc2hlcworICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZS8nLCAnLi4vLi4vZi9nLycsICdodHRwOi8vYS9iL2MvZi9nLycpCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdodHRwOi8vYS9iL2MvZC9lJywgJy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvYi9mL2cvJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UvJywgJy8uLi8uLi9mL2cvJywgJ2h0dHA6Ly9hL2YvZy8nKQorICAgICAgICBzZWxmLmNoZWNrSm9pbignaHR0cDovL2EvYi9jL2QvZScsICcvLi4vLi4vZi9nLycsICdodHRwOi8vYS9mL2cvJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvYy9kL2UvJywgJy4uLy4uL2YvZycsICdodHRwOi8vYS9iL2MvZi9nJykKKyAgICAgICAgc2VsZi5jaGVja0pvaW4oJ2h0dHA6Ly9hL2IvJywgJy4uLy4uL2YvZy8nLCAnaHR0cDovL2EvZi9nLycpCisKKyAgICAgICAgIyBpc3N1ZSAyMzcwMzogZG9uJ3QgZHVwbGljYXRlIGZpbGVuYW1lCisgICAgICAgIHNlbGYuY2hlY2tKb2luKCdhJywgJ2InLCAnYicpCisKICAgICBkZWYgdGVzdF9SRkMyNzMyKHNlbGYpOgogICAgICAgICBzdHJfY2FzZXMgPSBbCiAgICAgICAgICAgICAoJ2h0dHA6Ly9UZXN0LnB5dGhvbi5vcmc6NTQzMi9mb28vJywgJ3Rlc3QucHl0aG9uLm9yZycsIDU0MzIpLApAQCAtODAzLDYgKzgyNiwxNiBAQAogICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKHsnYSc6IFRyaXZpYWwoKX0sIFRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnYT10cml2aWFsJykKIAorICAgIGRlZiB0ZXN0X3VybGVuY29kZV9xdW90ZV92aWEoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoeydhJzogJ3NvbWUgdmFsdWUnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICJhPXNvbWUrdmFsdWUiKQorICAgICAgICByZXN1bHQgPSB1cmxsaWIucGFyc2UudXJsZW5jb2RlKHsnYSc6ICdzb21lIHZhbHVlL2Fub3RoZXInfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV92aWE9dXJsbGliLnBhcnNlLnF1b3RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgImE9c29tZSUyMHZhbHVlJTJGYW5vdGhlciIpCisgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS51cmxlbmNvZGUoeydhJzogJ3NvbWUgdmFsdWUvYW5vdGhlcid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhZmU9Jy8nLCBxdW90ZV92aWE9dXJsbGliLnBhcnNlLnF1b3RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgImE9c29tZSUyMHZhbHVlL2Fub3RoZXIiKQorCiAgICAgZGVmIHRlc3RfcXVvdGVfZnJvbV9ieXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1cmxsaWIucGFyc2UucXVvdGVfZnJvbV9ieXRlcywgJ2ZvbycpCiAgICAgICAgIHJlc3VsdCA9IHVybGxpYi5wYXJzZS5xdW90ZV9mcm9tX2J5dGVzKGInYXJjaGFlb2xvZ2ljYWwgYXJjYW5hJykKQEAgLTg2MSw2ICs4OTQsMjIgQEAKICAgICAgICAgcXVvdGVyID0gdXJsbGliLnBhcnNlLlF1b3Rlcih1cmxsaWIucGFyc2UuX0FMV0FZU19TQUZFKQogICAgICAgICBzZWxmLmFzc2VydEluKCdRdW90ZXInLCByZXByKHF1b3RlcikpCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gW10KKyAgICAgICAgdW5kb2N1bWVudGVkID0geworICAgICAgICAgICAgJ3NwbGl0YXR0cicsICdzcGxpdGhvc3QnLCAnc3BsaXRucG9ydCcsICdzcGxpdHBhc3N3ZCcsCisgICAgICAgICAgICAnc3BsaXRwb3J0JywgJ3NwbGl0cXVlcnknLCAnc3BsaXR0YWcnLCAnc3BsaXR0eXBlJywgJ3NwbGl0dXNlcicsCisgICAgICAgICAgICAnc3BsaXR2YWx1ZScsCisgICAgICAgICAgICAnUXVvdGVyJywgJ1Jlc3VsdEJhc2UnLCAnY2xlYXJfY2FjaGUnLCAndG9fYnl0ZXMnLCAndW53cmFwJywKKyAgICAgICAgfQorICAgICAgICBmb3IgbmFtZSBpbiBkaXIodXJsbGliLnBhcnNlKToKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIG9yIG5hbWUgaW4gdW5kb2N1bWVudGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBvYmplY3QgPSBnZXRhdHRyKHVybGxpYi5wYXJzZSwgbmFtZSkKKyAgICAgICAgICAgIGlmIGdldGF0dHIob2JqZWN0LCAnX19tb2R1bGVfXycsIE5vbmUpID09ICd1cmxsaWIucGFyc2UnOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZChuYW1lKQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwodXJsbGliLnBhcnNlLl9fYWxsX18sIGV4cGVjdGVkKQorCiAKIGNsYXNzIFV0aWxpdHlfVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RjYXNlIHRvIHRlc3QgdGhlIHZhcmlvdXMgdXRpbGl0eSBmdW5jdGlvbnMgaW4gdGhlIHVybGxpYi4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CmluZGV4IDJjYTk5MjkuLmM4M2NjNTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQpAQCAtMTkwLDEwICsxOTAsNSBAQAogCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBVc2VyRGljdFRlc3QsCi0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQppbmRleCA2MzgxMDcwLi40YTMwNGRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKQEAgLTU4LDggKzU4LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCB2KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodSksIHR5cGUodikpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVc2VyTGlzdFRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weSBiL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQppbmRleCAxZThjYmEzLi5mY2I4NDU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1aWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CkBAIC0xLDkgKzEsMTAgQEAKLWltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB1dWlkCiAKIGRlZiBpbXBvcnRhYmxlKG5hbWUpOgpAQCAtNDEyLDI4ICs0MTMsMjcgQEAKIGNsYXNzIFRlc3RJbnRlcm5hbHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIFBvc2l4JykKICAgICBkZWYgdGVzdF9maW5kX21hYyhzZWxmKToKLSAgICAgICAgZGF0YSA9ICcnJ1wKLQorICAgICAgICBkYXRhID0gJycnCiBmYWtlIGh3YWRkcgogY3Njb3R1bjAgIExpbmsgZW5jYXA6VU5TUEVDICBIV2FkZHIgMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAtMDAKIGV0aDAgICAgICBMaW5rIGVuY2FwOkV0aGVybmV0ICBIV2FkZHIgMTI6MzQ6NTY6Nzg6OTA6YWIKICcnJwotICAgICAgICBkZWYgbW9ja19wb3BlbihjbWQpOgotICAgICAgICAgICAgcmV0dXJuIGlvLlN0cmluZ0lPKGRhdGEpCiAKLSAgICAgICAgaWYgc2h1dGlsLndoaWNoKCdpZmNvbmZpZycpIGlzIE5vbmU6Ci0gICAgICAgICAgICBwYXRoID0gb3MucGF0aHNlcC5qb2luKCgnL3NiaW4nLCAnL3Vzci9zYmluJykpCi0gICAgICAgICAgICBpZiBzaHV0aWwud2hpY2goJ2lmY29uZmlnJywgcGF0aD1wYXRoKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3JlcXVpcmVzIGlmY29uZmlnJykKKyAgICAgICAgcG9wZW4gPSB1bml0dGVzdC5tb2NrLk1hZ2ljTW9jaygpCisgICAgICAgIHBvcGVuLnN0ZG91dCA9IGlvLkJ5dGVzSU8oZGF0YS5lbmNvZGUoKSkKIAotICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKG9zLCAncG9wZW4nLCBtb2NrX3BvcGVuKToKLSAgICAgICAgICAgIG1hYyA9IHV1aWQuX2ZpbmRfbWFjKAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9J2lmY29uZmlnJywKLSAgICAgICAgICAgICAgICBhcmdzPScnLAotICAgICAgICAgICAgICAgIGh3X2lkZW50aWZpZXJzPVsnaHdhZGRyJ10sCi0gICAgICAgICAgICAgICAgZ2V0X2luZGV4PWxhbWJkYSB4OiB4ICsgMSwKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFjLCAweDEyMzQ1Njc4OTBhYikKKyAgICAgICAgd2l0aCB1bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChzaHV0aWwsICd3aGljaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPScvc2Jpbi9pZmNvbmZpZycpOgorICAgICAgICAgICAgd2l0aCB1bml0dGVzdC5tb2NrLnBhdGNoLm9iamVjdChzdWJwcm9jZXNzLCAnUG9wZW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9cG9wZW4pOgorICAgICAgICAgICAgICAgIG1hYyA9IHV1aWQuX2ZpbmRfbWFjKAorICAgICAgICAgICAgICAgICAgICBjb21tYW5kPSdpZmNvbmZpZycsCisgICAgICAgICAgICAgICAgICAgIGFyZ3M9JycsCisgICAgICAgICAgICAgICAgICAgIGh3X2lkZW50aWZpZXJzPVtiJ2h3YWRkciddLAorICAgICAgICAgICAgICAgICAgICBnZXRfaW5kZXg9bGFtYmRhIHg6IHggKyAxLAorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hYywgMHgxMjM0NTY3ODkwYWIpCiAKICAgICBkZWYgY2hlY2tfbm9kZShzZWxmLCBub2RlLCByZXF1aXJlcz1Ob25lLCBuZXR3b3JrPUZhbHNlKToKICAgICAgICAgaWYgcmVxdWlyZXMgYW5kIG5vZGUgaXMgTm9uZToKQEAgLTQ1NCw2ICs0NTQsMTEgQEAKICAgICAgICAgc2VsZi5jaGVja19ub2RlKG5vZGUsICdpZmNvbmZpZycsIFRydWUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsICdyZXF1aXJlcyBQb3NpeCcpCisgICAgZGVmIHRlc3RfaXBfZ2V0bm9kZShzZWxmKToKKyAgICAgICAgbm9kZSA9IHV1aWQuX2lwX2dldG5vZGUoKQorICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2lwJywgVHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIFBvc2l4JykKICAgICBkZWYgdGVzdF9hcnBfZ2V0bm9kZShzZWxmKToKICAgICAgICAgbm9kZSA9IHV1aWQuX2FycF9nZXRub2RlKCkKICAgICAgICAgc2VsZi5jaGVja19ub2RlKG5vZGUsICdhcnAnLCBUcnVlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5IGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CmluZGV4IGI0NjI1ODguLjkyMDdhNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKQEAgLTEyLDcgKzEyLDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsIHJ1bl91bml0dGVzdCwKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBFbnZpcm9ubWVudFZhckd1YXJkLCBybXRyZWUpCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdApAQCAtMzk4LDggKzM5OCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0X3BpcF9ub3RfaW5zdGFsbGVkKCkKIAogCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KEJhc2ljVGVzdCwgRW5zdXJlUGlwVGVzdCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YWl0My5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKaW5kZXggZjZhMDY1ZC4uZWI1MWIyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YWl0My5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CkBAIC01LDcgKzUsNyBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LmZvcmtfd2FpdCBpbXBvcnQgRm9ya1dhaXQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHJlYXBfY2hpbGRyZW4KK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZWFwX2NoaWxkcmVuCiAKIGlmIG5vdCBoYXNhdHRyKG9zLCAnZm9yaycpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJvcy5mb3JrIG5vdCBkZWZpbmVkIikKQEAgLTE4LDcgKzE4LDggQEAKICAgICAgICAgIyBUaGlzIG1hbnkgaXRlcmF0aW9ucyBjYW4gYmUgcmVxdWlyZWQsIHNpbmNlIHNvbWUgcHJldmlvdXNseSBydW4KICAgICAgICAgIyB0ZXN0cyAoZS5nLiB0ZXN0X2N0eXBlcykgY291bGQgaGF2ZSBzcGF3bmVkIGEgbG90IG9mIGNoaWxkcmVuCiAgICAgICAgICMgdmVyeSBxdWlja2x5LgotICAgICAgICBmb3IgaSBpbiByYW5nZSgzMCk6CisgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIDEwLjAKKyAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8PSBkZWFkbGluZToKICAgICAgICAgICAgICMgd2FpdDMoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzLCBydXNhZ2UgPSBvcy53YWl0Myhvcy5XTk9IQU5HKQpAQCAtMzAsOSArMzEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShydXNhZ2UpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoV2FpdDNUZXN0KQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgcmVhcF9jaGlsZHJlbigpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDQucHkgYi9MaWIvdGVzdC90ZXN0X3dhaXQ0LnB5CmluZGV4IDM1MmMxMWEuLjQzODY5YmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YWl0NC5weQpAQCAtNSw3ICs1LDcgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QuZm9ya193YWl0IGltcG9ydCBGb3JrV2FpdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcmVhcF9jaGlsZHJlbiwgZ2V0X2F0dHJpYnV0ZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlYXBfY2hpbGRyZW4sIGdldF9hdHRyaWJ1dGUKIAogIyBJZiBlaXRoZXIgb2YgdGhlc2UgZG8gbm90IGV4aXN0LCBza2lwIHRoaXMgdGVzdC4KIGdldF9hdHRyaWJ1dGUob3MsICdmb3JrJykKQEAgLTE5LDIwICsxOSwyMCBAQAogICAgICAgICAgICAgIyBJc3N1ZSAjMTExODU6IHdhaXQ0IGlzIGJyb2tlbiBvbiBBSVggYW5kIHdpbGwgYWx3YXlzIHJldHVybiAwCiAgICAgICAgICAgICAjIHdpdGggV05PSEFORy4KICAgICAgICAgICAgIG9wdGlvbiA9IDAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyAxMC4wCisgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPD0gZGVhZGxpbmU6CiAgICAgICAgICAgICAjIHdhaXQ0KCkgc2hvdWxkbid0IGhhbmcsIGJ1dCBzb21lIG9mIHRoZSBidWlsZGJvdHMgc2VlbSB0byBoYW5nCiAgICAgICAgICAgICAjIGluIHRoZSBmb3JraW5nIHRlc3RzLiAgVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbS4KICAgICAgICAgICAgIHNwaWQsIHN0YXR1cywgcnVzYWdlID0gb3Mud2FpdDQoY3BpZCwgb3B0aW9uKQogICAgICAgICAgICAgaWYgc3BpZCA9PSBjcGlkOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwaWQsIGNwaWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiY2F1c2UgPSAlZCwgZXhpdCA9ICVkIiAlIChzdGF0dXMmMHhmZiwgc3RhdHVzPj44KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJ1c2FnZSkKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChXYWl0NFRlc3QpCitkZWYgdGVhckRvd25Nb2R1bGUoKToKICAgICByZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQppbmRleCBiNTE5ZjBhLi5jZWE5YzU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKQEAgLTUsOSArNSw5IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QgaW1wb3J0IHdhcm5pbmdfdGVzdHMKK2Zyb20gdGVzdC50ZXN0X3dhcm5pbmdzLmRhdGEgaW1wb3J0IHN0YWNrbGV2ZWwgYXMgd2FybmluZ190ZXN0cwogCiBpbXBvcnQgd2FybmluZ3MgYXMgb3JpZ2luYWxfd2FybmluZ3MKIApAQCAtMTk0LDExICsxOTQsMTEgQEAKICAgICAgICAgICAgIHNlbGYubW9kdWxlLnJlc2V0d2FybmluZ3MoKQogICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoIm9uY2UiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKICAgICAgICAgICAgIG1lc3NhZ2UgPSBVc2VyV2FybmluZygiRmlsdGVyVGVzdHMudGVzdF9vbmNlIikKLSAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm5fZXhwbGljaXQobWVzc2FnZSwgVXNlcldhcm5pbmcsICJ0ZXN0X3dhcm5pbmdzLnB5IiwKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm5fZXhwbGljaXQobWVzc2FnZSwgVXNlcldhcm5pbmcsICJfX2luaXRfXy5weSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1stMV0ubWVzc2FnZSwgbWVzc2FnZSkKICAgICAgICAgICAgIGRlbCB3WzpdCi0gICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIFVzZXJXYXJuaW5nLCAidGVzdF93YXJuaW5ncy5weSIsCisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIFVzZXJXYXJuaW5nLCAiX19pbml0X18ucHkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMCkKICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm5fZXhwbGljaXQobWVzc2FnZSwgVXNlcldhcm5pbmcsICJ0ZXN0X3dhcm5pbmdzMi5weSIsCkBAIC0zMDQsMTAgKzMwNCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBtb2R1bGU9c2VsZi5tb2R1bGUpIGFzIHc6CiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5pbm5lcigic3BhbTEiKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ190ZXN0cy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhY2tsZXZlbC5weSIpCiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5vdXRlcigic3BhbTIiKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ190ZXN0cy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhY2tsZXZlbC5weSIpCiAKICAgICBkZWYgdGVzdF9zdGFja2xldmVsKHNlbGYpOgogICAgICAgICAjIFRlc3Qgc3RhY2tsZXZlbCBhcmd1bWVudApAQCAtMzE3LDI1ICszMTcsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgbW9kdWxlPXNlbGYubW9kdWxlKSBhcyB3OgogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMuaW5uZXIoInNwYW0zIiwgc3RhY2tsZXZlbD0xKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ190ZXN0cy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhY2tsZXZlbC5weSIpCiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5vdXRlcigic3BhbTQiLCBzdGFja2xldmVsPTEpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmJhc2VuYW1lKHdbLTFdLmZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nX3Rlc3RzLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFja2xldmVsLnB5IikKIAogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMuaW5uZXIoInNwYW01Iiwgc3RhY2tsZXZlbD0yKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF93YXJuaW5ncy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbml0X18ucHkiKQogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMub3V0ZXIoInNwYW02Iiwgc3RhY2tsZXZlbD0yKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ190ZXN0cy5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhY2tsZXZlbC5weSIpCiAgICAgICAgICAgICAgICAgd2FybmluZ190ZXN0cy5vdXRlcigic3BhbTYuNSIsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYmFzZW5hbWUod1stMV0uZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfd2FybmluZ3MucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW5pdF9fLnB5IikKIAogICAgICAgICAgICAgICAgIHdhcm5pbmdfdGVzdHMuaW5uZXIoInNwYW03Iiwgc3RhY2tsZXZlbD05OTk5KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZSh3Wy0xXS5maWxlbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzIikKIAorICAgIGRlZiB0ZXN0X3N0YWNrbGV2ZWxfaW1wb3J0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNDMwNTogV2l0aCBzdGFja2xldmVsPTIsIG1vZHVsZS1sZXZlbCB3YXJuaW5ncyBzaG91bGQgd29yay4KKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3QudGVzdF93YXJuaW5ncy5kYXRhLmltcG9ydF93YXJuaW5nJykKKyAgICAgICAgd2l0aCB3YXJuaW5nc19zdGF0ZShzZWxmLm1vZHVsZSk6CisgICAgICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICBtb2R1bGU9c2VsZi5tb2R1bGUpIGFzIHc6CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUuc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICAgICAgICAgIGltcG9ydCB0ZXN0LnRlc3Rfd2FybmluZ3MuZGF0YS5pbXBvcnRfd2FybmluZworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1swXS5maWxlbmFtZSwgX19maWxlX18pCisKICAgICBkZWYgdGVzdF9taXNzaW5nX2ZpbGVuYW1lX25vdF9tYWluKHNlbGYpOgogICAgICAgICAjIElmIF9fZmlsZV9fIGlzIG5vdCBzcGVjaWZpZWQgYW5kIF9fbWFpbl9fIGlzIG5vdCB0aGUgbW9kdWxlIG5hbWUsCiAgICAgICAgICMgdGhlbiBfX2ZpbGVfXyBzaG91bGQgYmUgc2V0IHRvIHRoZSBtb2R1bGUgbmFtZS4KQEAgLTQ1MCw2ICs0NjEsNDQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oQmFkU3RyV2FybmluZygpKQogCisgICAgZGVmIHRlc3Rfd2FybmluZ19jbGFzc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeVdhcm5pbmdDbGFzcyhXYXJuaW5nKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBOb25XYXJuaW5nU3ViY2xhc3M6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBwYXNzaW5nIGEgbm9uLXN1YmNsYXNzIG9mIFdhcm5pbmcgc2hvdWxkIHJhaXNlIGEgVHlwZUVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ2JhZCB3YXJuaW5nIGNhdGVnb3J5JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCBub3QgJywKKyAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdiYWQgd2FybmluZyBjYXRlZ29yeScsIE5vbldhcm5pbmdTdWJjbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MsIG5vdCAnLAorICAgICAgICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pKQorCisgICAgICAgICMgY2hlY2sgdGhhdCB3YXJuaW5nIGluc3RhbmNlcyBhbHNvIHJhaXNlIGEgVHlwZUVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ2JhZCB3YXJuaW5nIGNhdGVnb3J5JywgTXlXYXJuaW5nQ2xhc3MoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MsIG5vdCAnLAorICAgICAgICAgICAgICAgICAgICAgIHN0cihjbS5leGNlcHRpb24pKQorCisgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLnJlc2V0d2FybmluZ3MoKQorICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoJ2RlZmF1bHQnKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKE15V2FybmluZ0NsYXNzKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBNeVdhcm5pbmdDbGFzcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2dvb2Qgd2FybmluZyBjYXRlZ29yeScsIHN0cihjbS53YXJuaW5nKSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKCdnb29kIHdhcm5pbmcgY2F0ZWdvcnknLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZ29vZCB3YXJuaW5nIGNhdGVnb3J5Jywgc3RyKGNtLndhcm5pbmcpKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoTXlXYXJuaW5nQ2xhc3MpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ2dvb2Qgd2FybmluZyBjYXRlZ29yeScsIE15V2FybmluZ0NsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNtLndhcm5pbmcsIFdhcm5pbmcpCiAKIGNsYXNzIENXYXJuVGVzdHMoV2FyblRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwpAQCAtODM5LDcgKzg4OCwxOSBAQAogICAgICAgICAgICAgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoc3RyKHN5cy53YXJub3B0aW9ucykpIiwKICAgICAgICAgICAgIFBZVEhPTldBUk5JTkdTPSJpZ25vcmU6OkRlcHJlY2F0aW9uV2FybmluZyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LAotICAgICAgICAgICAgYiJbJ2lnbm9yZTo6VW5pY29kZVdhcm5pbmcnLCAnaWdub3JlOjpEZXByZWNhdGlvbldhcm5pbmcnXSIpCisgICAgICAgICAgICBiIlsnaWdub3JlOjpEZXByZWNhdGlvbldhcm5pbmcnLCAnaWdub3JlOjpVbmljb2RlV2FybmluZyddIikKKworICAgIGRlZiB0ZXN0X2NvbmZsaWN0aW5nX2VudnZhcl9hbmRfY29tbWFuZF9saW5lKHNlbGYpOgorICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoIi1XZXJyb3I6OkRlcHJlY2F0aW9uV2FybmluZyIsICItYyIsCisgICAgICAgICAgICAiaW1wb3J0IHN5cywgd2FybmluZ3M7IHN5cy5zdGRvdXQud3JpdGUoc3RyKHN5cy53YXJub3B0aW9ucykpOyAiCisgICAgICAgICAgICAid2FybmluZ3Mud2FybignTWVzc2FnZScsIERlcHJlY2F0aW9uV2FybmluZykiLAorICAgICAgICAgICAgUFlUSE9OV0FSTklOR1M9ImRlZmF1bHQ6OkRlcHJlY2F0aW9uV2FybmluZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LAorICAgICAgICAgICAgYiJbJ2RlZmF1bHQ6OkRlcHJlY2F0aW9uV2FybmluZycsICdlcnJvcjo6RGVwcmVjYXRpb25XYXJuaW5nJ10iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyci5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICBbYiJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6IiwKKyAgICAgICAgICAgICBiIiAgRmlsZSBcIjxzdHJpbmc+XCIsIGxpbmUgMSwgaW4gPG1vZHVsZT4iLAorICAgICAgICAgICAgIGIiRGVwcmVjYXRpb25XYXJuaW5nOiBNZXNzYWdlIl0pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgIT0gJ2FzY2lpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgbm9uLWFzY2lpIGZpbGVzeXN0ZW1lbmNvZGluZycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19fbWFpbl9fLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGU1MmVjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX21haW5fXy5weQpAQCAtMCwwICsxLDMgQEAKK2ltcG9ydCB1bml0dGVzdAorCit1bml0dGVzdC5tYWluKCd0ZXN0LnRlc3Rfd2FybmluZ3MnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9kYXRhL2ltcG9ydF93YXJuaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9kYXRhL2ltcG9ydF93YXJuaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZWEyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL2RhdGEvaW1wb3J0X3dhcm5pbmcucHkKQEAgLTAsMCArMSwzIEBACitpbXBvcnQgd2FybmluZ3MKKword2FybmluZ3Mud2FybignbW9kdWxlLWxldmVsIHdhcm5pbmcnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC93YXJuaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9kYXRhL3N0YWNrbGV2ZWwucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3dhcm5pbmdfdGVzdHMucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvZGF0YS9zdGFja2xldmVsLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKaW5kZXggM2U3MzQ3Yy4uYWZkMGI2MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQpAQCAtNyw3ICs3LDggQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgY29weQogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIAogIyBVc2VkIGluIFJlZmVyZW5jZXNUZXN0Q2FzZS50ZXN0X3JlZl9jcmVhdGVkX2R1cmluZ19kZWwoKSAuCiByZWZfZnJvbV9kZWwgPSBOb25lCkBAIC05Miw2ICs5MywxOCBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2NhbGxiYWNrKGNyZWF0ZV9mdW5jdGlvbikKICAgICAgICAgc2VsZi5jaGVja19iYXNpY19jYWxsYmFjayhjcmVhdGVfYm91bmRfbWV0aG9kKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCisgICAgICAgIGNyZWF0ZV9jZnVuY3Rpb24gPSBfdGVzdGNhcGkuY3JlYXRlX2NmdW5jdGlvbgorICAgICAgICBmID0gY3JlYXRlX2NmdW5jdGlvbigpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoZikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBmKQorICAgICAgICBkZWwgZgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cigpKQorICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX3JlZihjcmVhdGVfY2Z1bmN0aW9uKQorICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2NhbGxiYWNrKGNyZWF0ZV9jZnVuY3Rpb24pCisKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgIG8gPSBDKCkKICAgICAgICAgcmVmMSA9IHdlYWtyZWYucmVmKG8sIHNlbGYuY2FsbGJhY2spCkBAIC0xNTc0LDYgKzE1ODcsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZCksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnQsIDIpCiAKKyAgICBkZWYgdGVzdF9tYWtlX3dlYWtfdmFsdWVkX2RpY3RfcmVwcihzZWxmKToKKyAgICAgICAgZGljdCA9IHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihkaWN0KSwgJzxXZWFrVmFsdWVEaWN0aW9uYXJ5IGF0IDB4Lio+JykKKworICAgIGRlZiB0ZXN0X21ha2Vfd2Vha19rZXllZF9kaWN0X3JlcHIoc2VsZik6CisgICAgICAgIGRpY3QgPSB3ZWFrcmVmLldlYWtLZXlEaWN0aW9uYXJ5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChyZXByKGRpY3QpLCAnPFdlYWtLZXlEaWN0aW9uYXJ5IGF0IDB4Lio+JykKKwogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnlUZXN0Q2FzZShtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKaW5kZXggZmIyMjg3OS4uOWNlNjcyYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5LCByZWYsIFdlYWtTZXQKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGNvcHkKQEAgLTQ0Myw4ICs0NDIsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobjIsIG4xKQogCiAKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0V2Vha1NldCkKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKaW5kZXggODM2MThiNi4uN2FmYjI0YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CkBAIC0yNDYsOCArMjQ2LDUgQEAKICAgICByZXR1cm4gX19oYXZlX3NvdW5kY2FyZF9jYWNoZQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChCZWVwVGVzdCwgTWVzc2FnZUJlZXBUZXN0LCBQbGF5U291bmRUZXN0KQotCi1pZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQoraWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQppbmRleCBjYmFhZmNmLi5lOGQ3ODliIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aXRoLnB5CkBAIC04LDcgKzgsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBjb250ZXh0bGliIGltcG9ydCBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIsIGNvbnRleHRtYW5hZ2VyCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIAogY2xhc3MgTW9ja0NvbnRleHRNYW5hZ2VyKF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlcik6CkBAIC00NTUsNyArNDU0LDggQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCJmcm9tIHdpdGgiKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZFN0b3BJdGVyYXRpb24yKHNlbGYpOgogICAgICAgICAjIEZyb20gYnVnIDE0NjI0ODUKQEAgLTQ4Miw3ICs0ODIsOCBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIG5leHQoaXRlcihbXSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKIAogICAgIGRlZiB0ZXN0UmFpc2VkR2VuZXJhdG9yRXhpdDEoc2VsZik6CiAgICAgICAgICMgRnJvbSBidWcgMTQ2MjQ4NQpAQCAtNzM3LDE0ICs3MzgsNSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMCwgYjEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIwLCBiMikKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChGYWlsdXJlVGVzdENhc2UsIE5vbmV4Y2VwdGlvbmFsVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIE5lc3RlZE5vbmV4Y2VwdGlvbmFsVGVzdENhc2UsIEV4Y2VwdGlvbmFsVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgIE5vbkxvY2FsRmxvd0NvbnRyb2xUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgQXNzaWdubWVudFRhcmdldFRlc3RDYXNlLAotICAgICAgICAgICAgICAgICBFeGl0U3dhbGxvd3NFeGNlcHRpb25UZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgTmVzdGVkV2l0aCkKLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKaW5kZXggNDA3NmI2OC4uOGNjYTU5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQpAQCAtMTUsOCArMTUsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCiAKIGNsYXNzIE1vY2tTZXJ2ZXIoV1NHSVNlcnZlcik6CiAgICAgIiIiTm9uLXNvY2tldCBIVFRQIHNlcnZlciIiIgpAQCAtMzY5LDYgKzM2Nyw3IEBACiAKICAgICBkZWYgdGVzdE1hcHBpbmdJbnRlcmZhY2Uoc2VsZik6CiAgICAgICAgIHRlc3QgPSBbKCd4JywneScpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihIZWFkZXJzKCkpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihIZWFkZXJzKFtdKSksMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oSGVhZGVycyh0ZXN0WzpdKSksMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIZWFkZXJzKHRlc3RbOl0pLmtleXMoKSwgWyd4J10pCkBAIC0zNzYsNyArMzc1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIZWFkZXJzKHRlc3RbOl0pLml0ZW1zKCksIHRlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoSGVhZGVycyh0ZXN0KS5pdGVtcygpLCB0ZXN0KSAgIyBtdXN0IGJlIGNvcHkhCiAKLSAgICAgICAgaD1IZWFkZXJzKFtdKQorICAgICAgICBoID0gSGVhZGVycygpCiAgICAgICAgIGRlbCBoWydmb28nXSAgICMgc2hvdWxkIG5vdCByYWlzZSBhbiBlcnJvcgogCiAgICAgICAgIGhbJ0ZvbyddID0gJ2JhcicKQEAgLTQwMSw5ICs0MDAsOCBAQAogICAgIGRlZiB0ZXN0UmVxdWlyZUxpc3Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgSGVhZGVycywgImZvbyIpCiAKLQogICAgIGRlZiB0ZXN0RXh0cmFzKHNlbGYpOgotICAgICAgICBoID0gSGVhZGVycyhbXSkKKyAgICAgICAgaCA9IEhlYWRlcnMoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwnXHJcbicpCiAKICAgICAgICAgaC5hZGRfaGVhZGVyKCdmb28nLCdiYXInLGJhej0ic3BhbSIpCkBAIC02NTksOCArNjU3LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWRlX2VmZmVjdHNbJ2Nsb3NlX2NhbGxlZCddLCBUcnVlKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKLQogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94ZHJsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3hkcmxpYi5weQppbmRleCA3MDQ5NmQ2Li4zZGY1ZjI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3hkcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3hkcmxpYi5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB4ZHJsaWIKQEAgLTc0LDkgKzczLDUgQEAKICAgICBkZWYgdGVzdF91aHlwZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzQ29udmVyc2lvbihzZWxmLnBhY2tlci5wYWNrX3VoeXBlciwgJ3N0cmluZycpCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChYRFJUZXN0KQotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENvbnZlcnNpb25FcnJvclRlc3QpCi0KIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggMWM2YTkzOS4uZjgzZGI3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTcwNSw3ICs3MDUsNyBAQAogICAgICAgICAgICAgJ21hYy1yb21hbicsICdtYWMtdHVya2lzaCcsCiAgICAgICAgICAgICAnaXNvMjAyMi1qcCcsICdpc28yMDIyLWpwLTEnLCAnaXNvMjAyMi1qcC0yJywgJ2lzbzIwMjItanAtMjAwNCcsCiAgICAgICAgICAgICAnaXNvMjAyMi1qcC0zJywgJ2lzbzIwMjItanAtZXh0JywKLSAgICAgICAgICAgICdrb2k4LXInLCAna29pOC11JywKKyAgICAgICAgICAgICdrb2k4LXInLCAna29pOC10JywgJ2tvaTgtdScsICdrejEwNDgnLAogICAgICAgICAgICAgJ2h6JywgJ3B0Y3AxNTQnLAogICAgICAgICBdCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBzdXBwb3J0ZWRfZW5jb2RpbmdzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggODE2YWE4Ni4uZDBkZjM4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC01NSw3ICs1NSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVsZW1lbnRzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnNVAnKQogICAgICAgICAjIGV4dHJhCi0gICAgICAgIHNlbGYuZXh0cmEgPSBzdHJ1Y3QuY2FsY3NpemUoJ1BpaVA0UCcpCisgICAgICAgIHNlbGYuZXh0cmEgPSBzdHJ1Y3QuY2FsY3NpemUoJ1BublA0UCcpCiAKICAgICBjaGVja19zaXplb2YgPSBzdXBwb3J0LmNoZWNrX3NpemVvZgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CmluZGV4IDdhZTBkY2UuLjk4ODBmNGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CkBAIC0yODcsNyArMjg3LDcgQEAKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNywxLDIsMyw0LDUpCiAgICAgICAgIHQgPSB4bWxycGNsaWIuRGF0ZVRpbWUoZCkKLSAgICAgICAgdmFsID0iPERhdGVUaW1lICcyMDA3MDEwMlQwMzowNDowNScgYXQgJXg+IiAlIGlkKHQpCisgICAgICAgIHZhbCA9IjxEYXRlVGltZSAnMjAwNzAxMDJUMDM6MDQ6MDUnIGF0ICUjeD4iICUgaWQodCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCB2YWwpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CkBAIC03MTMsNiArNzEzLDIzIEBACiAgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvUlBDMiBIVFRQLzEuMFxyXG5Db250ZW50LUxlbmd0aDogMTAwXHJcblxyXG5ieWUnKQogICAgICAgICBjb25uLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCB4bWxycGNsaWIuU2VydmVyUHJveHkoVVJMKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBzZXJ2ZXIuYWRkKDIsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlcnZlcigndHJhbnNwb3J0JykuX2Nvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIoJ3RyYW5zcG9ydCcpLl9jb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9tZXRob2RfZXJyb3Ioc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggeG1scnBjbGliLlNlcnZlclByb3h5KFVSTCkgYXMgc2VydmVyOgorICAgICAgICAgICAgICAgIHNlcnZlci5hZGQoMiwgImEiKQorICAgICAgICBleGNlcHQgeG1scnBjbGliLkZhdWx0OgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlcigndHJhbnNwb3J0JykuX2Nvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpKQorCiAKIGNsYXNzIE11bHRpUGF0aFNlcnZlclRlc3RDYXNlKEJhc2VTZXJ2ZXJUZXN0Q2FzZSk6CiAgICAgdGhyZWFkRnVuYyA9IHN0YXRpY21ldGhvZChodHRwX211bHRpX3NlcnZlcikKQEAgLTkxOSw2ICs5MzYsNyBAQAogICAgICAgICBwID0geG1scnBjbGliLlNlcnZlclByb3h5KHNlbGYudXJsLCB0cmFuc3BvcnQ9dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwKCd0cmFuc3BvcnQnKSwgdCkKIAorCiAjIFRoaXMgaXMgYSBjb250cml2ZWQgd2F5IHRvIG1ha2UgYSBmYWlsdXJlIG9jY3VyIG9uIHRoZSBzZXJ2ZXIgc2lkZQogIyBpbiBvcmRlciB0byB0ZXN0IHRoZSBfc2VuZF90cmFjZWJhY2tfaGVhZGVyIGZsYWcgb24gdGhlIHNlcnZlcgogY2xhc3MgRmFpbGluZ01lc3NhZ2VDbGFzcyhodHRwLmNsaWVudC5IVFRQTWVzc2FnZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGFwcC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwYXBwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MzQzODAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGFwcC5weQpAQCAtMCwwICsxLDM0OSBAQAorIiIiVGVzdCBoYXJuZXNzIGZvciB0aGUgemlwYXBwIG1vZHVsZS4iIiIKKworaW1wb3J0IGlvCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHN0YXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgemlwYXBwCitpbXBvcnQgemlwZmlsZQorCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKK2NsYXNzIFppcEFwcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB6aXBhcHAgbW9kdWxlIGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0bXBkaXIuY2xlYW51cCkKKyAgICAgICAgc2VsZi50bXBkaXIgPSBwYXRobGliLlBhdGgodG1wZGlyLm5hbWUpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXJjaGl2ZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHBhY2tpbmcgYSBkaXJlY3RvcnkuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfYXJjaGl2ZV93aXRoX3BhdGhsaWIoc2VsZik6CisgICAgICAgICMgVGVzdCBwYWNraW5nIGEgZGlyZWN0b3J5IHVzaW5nIFBhdGggb2JqZWN0cyBmb3Igc291cmNlIGFuZCB0YXJnZXQuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0LmlzX2ZpbGUoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hcmNoaXZlX3dpdGhfc3ViZGlycyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHBhY2tpbmcgYSBkaXJlY3RvcnkgaW5jbHVkZXMgZW50cmllcyBmb3Igc3ViZGlyZWN0b3JpZXMuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgKHNvdXJjZSAvICdmb28nKS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnYmFyJykubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ2ZvbycgLyAnX19pbml0X18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHRhcmdldCkKKyAgICAgICAgdGFyZ2V0LnNlZWsoMCkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUodGFyZ2V0LCAncicpIGFzIHo6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmb28vJywgei5uYW1lbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYmFyLycsIHoubmFtZWxpc3QoKSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hcmNoaXZlX2RlZmF1bHRfdGFyZ2V0KHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFja2luZyBhIGRpcmVjdG9yeSB0byB0aGUgZGVmYXVsdCBuYW1lLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSkKKyAgICAgICAgZXhwZWN0ZWRfdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4cGVjdGVkX3RhcmdldC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9ub19tYWluKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBwYWNraW5nIGEgZGlyZWN0b3J5IHdpdGggbm8gX19tYWluX18ucHkgZmFpbHMuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdmb28ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoemlwYXBwLlppcEFwcEVycm9yKToKKyAgICAgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCkpCisKKyAgICBkZWYgdGVzdF9tYWluX2FuZF9tYWluX3B5KHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzdXBwbHlpbmcgYSBtYWluIGFyZ3VtZW50IHdpdGggX19tYWluX18ucHkgZmFpbHMuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh6aXBhcHAuWmlwQXBwRXJyb3IpOgorICAgICAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgbWFpbj0ncGtnLm1vZDpmbicpCisKKyAgICBkZWYgdGVzdF9tYWluX3dyaXR0ZW4oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBfX21haW5fXy5weSBpcyB3cml0dGVuIGNvcnJlY3RseS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ2Zvby5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgbWFpbj0ncGtnLm1vZDpmbicpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHN0cih0YXJnZXQpLCAncicpIGFzIHo6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdfX21haW5fXy5weScsIHoubmFtZWxpc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidwa2cubW9kLmZuKCknLCB6LnJlYWQoJ19fbWFpbl9fLnB5JykpCisKKyAgICBkZWYgdGVzdF9tYWluX29ubHlfd3JpdHRlbl9vbmNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBkb24ndCB3cml0ZSBtdWx0aXBsZSBfX21haW5fXy5weSBmaWxlcy4KKyAgICAgICAgIyBUaGUgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBoYWQgdGhpcyBidWc7IHppcCBmaWxlcyBhbGxvdworICAgICAgICAjIG11bHRpcGxlIGVudHJpZXMgd2l0aCB0aGUgc2FtZSBuYW1lCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgIyBXcml0ZSAyIGZpbGVzLCBhcyB0aGUgb3JpZ2luYWwgYnVnIHdyb3RlIF9fbWFpbl9fLnB5CisgICAgICAgICMgb25jZSBmb3IgZWFjaCBmaWxlIHdyaXR0ZW4gOi0oCisgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvcmV2aWV3LzIzNDkxL2RpZmYvMTM5ODIvTGliL3ppcGFwcC5weSNuZXdjb2RlNjdMaWIvemlwYXBwLnB5OjY3CisgICAgICAgICMgKGxpbmUgNjcpCisgICAgICAgIChzb3VyY2UgLyAnZm9vLnB5JykudG91Y2goKQorICAgICAgICAoc291cmNlIC8gJ2Jhci5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgbWFpbj0ncGtnLm1vZDpmbicpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHN0cih0YXJnZXQpLCAncicpIGFzIHo6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHoubmFtZWxpc3QoKS5jb3VudCgnX19tYWluX18ucHknKSkKKworICAgIGRlZiB0ZXN0X21haW5fdmFsaWRhdGlvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaW52YWxpZCB2YWx1ZXMgZm9yIG1haW4gYXJlIHJlamVjdGVkLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHByb2JsZW1zID0gWworICAgICAgICAgICAgJycsICdmb28nLCAnZm9vOicsICc6YmFyJywgJzEyOmJhcicsICdhLmIuYy46ZCcsCisgICAgICAgICAgICAnLmE6YicsICdhOmIuJywgJ2E6LmInLCAnYTpzaWxseSBuYW1lJworICAgICAgICBdCisgICAgICAgIGZvciBtYWluIGluIHByb2JsZW1zOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobWFpbj1tYWluKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGFwcC5aaXBBcHBFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIG1haW49bWFpbikKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfbm9fc2hlYmFuZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgbm8gc2hlYmFuZyBsaW5lIGlzIHdyaXR0ZW4gdG8gdGhlIHRhcmdldCBieSBkZWZhdWx0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCkpCisgICAgICAgIHdpdGggdGFyZ2V0Lm9wZW4oJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZi5yZWFkKDIpLCBiJyMhJykKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9pbnRlcnByZXRlcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYSBzaGViYW5nIGxpbmUgd2l0aCBhIGN1c3RvbSBpbnRlcnByZXRlciBpcyB3cml0dGVuCisgICAgICAgICMgY29ycmVjdGx5LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICB3aXRoIHRhcmdldC5vcGVuKCdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgyKSwgYicjIScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIncHl0aG9uXG4nLCBmLnJlYWRsaW5lKCkpCisKKyAgICBkZWYgdGVzdF9wYWNrX3RvX2ZpbGVvYmooc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBwYWNrIHRvIGEgZmlsZSBvYmplY3QuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgdGFyZ2V0LCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5nZXR2YWx1ZSgpLnN0YXJ0c3dpdGgoYicjIXB5dGhvblxuJykpCisKKyAgICBkZWYgdGVzdF9yZWFkX3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiByZWFkIHRoZSBzaGViYW5nIGxpbmUgY29ycmVjdGx5LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGFwcC5nZXRfaW50ZXJwcmV0ZXIoc3RyKHRhcmdldCkpLCAncHl0aG9uJykKKworICAgIGRlZiB0ZXN0X3JlYWRfbWlzc2luZ19zaGViYW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCByZWFkaW5nIHRoZSBzaGViYW5nIGxpbmUgb2YgYSBmaWxlIHdpdGhvdXQgb25lIHJldHVybnMgTm9uZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGFwcC5nZXRfaW50ZXJwcmV0ZXIoc3RyKHRhcmdldCkpLCBOb25lKQorCisgICAgZGVmIHRlc3RfbW9kaWZ5X3NoZWJhbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdlIGNhbiBjaGFuZ2UgdGhlIHNoZWJhbmcgb2YgYSBmaWxlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnY2hhbmdlZC5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIodGFyZ2V0KSwgc3RyKG5ld190YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uMi43JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBhcHAuZ2V0X2ludGVycHJldGVyKHN0cihuZXdfdGFyZ2V0KSksICdweXRob24yLjcnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfc2hlYmFuZ190b19maWxlb2JqKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gY2hhbmdlIHRoZSBzaGViYW5nIG9mIGEgZmlsZSwgd3JpdGluZyB0aGUgcmVzdWx0IHRvIGEKKyAgICAgICAgIyBmaWxlIG9iamVjdC4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgbmV3X3RhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHRhcmdldCksIG5ld190YXJnZXQsIGludGVycHJldGVyPSdweXRob24yLjcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV3X3RhcmdldC5nZXR2YWx1ZSgpLnN0YXJ0c3dpdGgoYicjIXB5dGhvbjIuN1xuJykpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fcGF0aG9iaihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIGNvcHkgYW4gYXJjaGl2ZSB1c2luZyBhbiBwYXRobGliLlBhdGggb2JqZWN0CisgICAgICAgICMgZm9yIHRoZSBzb3VyY2UuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0MSA9IHNlbGYudG1wZGlyIC8gJ3RhcmdldDEucHl6JworICAgICAgICB0YXJnZXQyID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0Mi5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldDEsIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUodGFyZ2V0MSwgdGFyZ2V0MiwgaW50ZXJwcmV0ZXI9J3B5dGhvbjIuNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwYXBwLmdldF9pbnRlcnByZXRlcih0YXJnZXQyKSwgJ3B5dGhvbjIuNycpCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZW9iaihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgY2FuIGNvcHkgYW4gYXJjaGl2ZSB1c2luZyBhbiBvcGVuIGZpbGUgb2JqZWN0LgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHRlbXBfYXJjaGl2ZSA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHRlbXBfYXJjaGl2ZSwgaW50ZXJwcmV0ZXI9J3B5dGhvbicpCisgICAgICAgIG5ld190YXJnZXQgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgdGVtcF9hcmNoaXZlLnNlZWsoMCkKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHRlbXBfYXJjaGl2ZSwgbmV3X3RhcmdldCwgaW50ZXJwcmV0ZXI9J3B5dGhvbjIuNycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdfdGFyZ2V0LmdldHZhbHVlKCkuc3RhcnRzd2l0aChiJyMhcHl0aG9uMi43XG4nKSkKKworICAgIGRlZiB0ZXN0X3JlbW92ZV9zaGViYW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZSBjYW4gcmVtb3ZlIHRoZSBzaGViYW5nIGZyb20gYSBmaWxlLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZS5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgc3RyKHRhcmdldCksIGludGVycHJldGVyPSdweXRob24nKQorICAgICAgICBuZXdfdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnY2hhbmdlZC5weXonCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIodGFyZ2V0KSwgc3RyKG5ld190YXJnZXQpLCBpbnRlcnByZXRlcj1Ob25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGFwcC5nZXRfaW50ZXJwcmV0ZXIoc3RyKG5ld190YXJnZXQpKSwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2NvbnRlbnRfb2ZfY29waWVkX2FyY2hpdmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvcHlpbmcgYW4gYXJjaGl2ZSBkb2Vzbid0IGNvcnJ1cHQgaXQuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHppcGFwcC5jcmVhdGVfYXJjaGl2ZShzdHIoc291cmNlKSwgdGFyZ2V0LCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgbmV3X3RhcmdldCA9IGlvLkJ5dGVzSU8oKQorICAgICAgICB0YXJnZXQuc2VlaygwKQorICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUodGFyZ2V0LCBuZXdfdGFyZ2V0LCBpbnRlcnByZXRlcj1Ob25lKQorICAgICAgICBuZXdfdGFyZ2V0LnNlZWsoMCkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUobmV3X3RhcmdldCwgJ3InKSBhcyB6OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoei5uYW1lbGlzdCgpKSwgeydfX21haW5fXy5weSd9KQorCisgICAgIyAoVW5peCBvbmx5KSB0ZXN0cyB0aGF0IGFyY2hpdmVzIHdpdGggc2hlYmFuZyBsaW5lcyBhcmUgbWFkZSBleGVjdXRhYmxlCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICdXaW5kb3dzIGRvZXMgbm90IHN1cHBvcnQgYW4gZXhlY3V0YWJsZSBiaXQnKQorICAgIGRlZiB0ZXN0X3NoZWJhbmdfaXNfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgYW4gYXJjaGl2ZSB3aXRoIGEgc2hlYmFuZyBsaW5lIGlzIG1hZGUgZXhlY3V0YWJsZS4KKyAgICAgICAgc291cmNlID0gc2VsZi50bXBkaXIgLyAnc291cmNlJworICAgICAgICBzb3VyY2UubWtkaXIoKQorICAgICAgICAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykudG91Y2goKQorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UucHl6JworICAgICAgICB6aXBhcHAuY3JlYXRlX2FyY2hpdmUoc3RyKHNvdXJjZSksIHN0cih0YXJnZXQpLCBpbnRlcnByZXRlcj0ncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5zdGF0KCkuc3RfbW9kZSAmIHN0YXQuU19JRVhFQykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAnV2luZG93cyBkb2VzIG5vdCBzdXBwb3J0IGFuIGV4ZWN1dGFibGUgYml0JykKKyAgICBkZWYgdGVzdF9ub19zaGViYW5nX2lzX25vdF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhbiBhcmNoaXZlIHdpdGggbm8gc2hlYmFuZyBsaW5lIGlzIG5vdCBtYWRlIGV4ZWN1dGFibGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHN0cihzb3VyY2UpLCBzdHIodGFyZ2V0KSwgaW50ZXJwcmV0ZXI9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0YXJnZXQuc3RhdCgpLnN0X21vZGUgJiBzdGF0LlNfSUVYRUMpCisKKworY2xhc3MgWmlwQXBwQ21kbGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB6aXBhcHAgbW9kdWxlIGNvbW1hbmQgbGluZSBBUEkuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRtcGRpciA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0bXBkaXIuY2xlYW51cCkKKyAgICAgICAgc2VsZi50bXBkaXIgPSBwYXRobGliLlBhdGgodG1wZGlyLm5hbWUpCisKKyAgICBkZWYgbWFrZV9hcmNoaXZlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhbiBhcmNoaXZlIHdpdGggbm8gc2hlYmFuZyBsaW5lIGlzIG5vdCBtYWRlIGV4ZWN1dGFibGUuCisgICAgICAgIHNvdXJjZSA9IHNlbGYudG1wZGlyIC8gJ3NvdXJjZScKKyAgICAgICAgc291cmNlLm1rZGlyKCkKKyAgICAgICAgKHNvdXJjZSAvICdfX21haW5fXy5weScpLnRvdWNoKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAnc291cmNlLnB5eicKKyAgICAgICAgemlwYXBwLmNyZWF0ZV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0KQorICAgICAgICByZXR1cm4gdGFyZ2V0CisKKyAgICBkZWYgdGVzdF9jbWRsaW5lX2NyZWF0ZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoZSBiYXNpYyBjb21tYW5kIGxpbmUgQVBJLgorICAgICAgICBzb3VyY2UgPSBzZWxmLnRtcGRpciAvICdzb3VyY2UnCisgICAgICAgIHNvdXJjZS5ta2RpcigpCisgICAgICAgIChzb3VyY2UgLyAnX19tYWluX18ucHknKS50b3VjaCgpCisgICAgICAgIGFyZ3MgPSBbc3RyKHNvdXJjZSldCisgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgIHRhcmdldCA9IHNvdXJjZS53aXRoX3N1ZmZpeCgnLnB5eicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXJnZXQuaXNfZmlsZSgpKQorCisgICAgZGVmIHRlc3RfY21kbGluZV9jb3B5KHNlbGYpOgorICAgICAgICAjIFRlc3QgY29weWluZyBhbiBhcmNoaXZlLgorICAgICAgICBvcmlnaW5hbCA9IHNlbGYubWFrZV9hcmNoaXZlKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0LnB5eicKKyAgICAgICAgYXJncyA9IFtzdHIob3JpZ2luYWwpLCAnLW8nLCBzdHIodGFyZ2V0KV0KKyAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldC5pc19maWxlKCkpCisKKyAgICBkZWYgdGVzdF9jbWRsaW5lX2NvcHlfaW5wbGFjZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvcHlpbmcgYW4gYXJjaGl2ZSBpbiBwbGFjZSBmYWlscy4KKyAgICAgICAgb3JpZ2luYWwgPSBzZWxmLm1ha2VfYXJjaGl2ZSgpCisgICAgICAgIHRhcmdldCA9IHNlbGYudG1wZGlyIC8gJ3RhcmdldC5weXonCisgICAgICAgIGFyZ3MgPSBbc3RyKG9yaWdpbmFsKSwgJy1vJywgc3RyKG9yaWdpbmFsKV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBjbToKKyAgICAgICAgICAgIHppcGFwcC5tYWluKGFyZ3MpCisgICAgICAgICMgUHJvZ3JhbSBzaG91bGQgZXhpdCB3aXRoIGEgbm9uLXplcm8gcmV0dXJtIGNvZGUuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbS5leGNlcHRpb24uY29kZSkKKworICAgIGRlZiB0ZXN0X2NtZGxpbmVfY29weV9jaGFuZ2VfbWFpbihzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvcHlpbmcgYW4gYXJjaGl2ZSBkb2Vzbid0IGFsbG93IGNoYW5naW5nIF9fbWFpbl9fLnB5LgorICAgICAgICBvcmlnaW5hbCA9IHNlbGYubWFrZV9hcmNoaXZlKCkKKyAgICAgICAgdGFyZ2V0ID0gc2VsZi50bXBkaXIgLyAndGFyZ2V0LnB5eicKKyAgICAgICAgYXJncyA9IFtzdHIob3JpZ2luYWwpLCAnLW8nLCBzdHIodGFyZ2V0KSwgJy1tJywgJ2ZvbzpiYXInXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpIGFzIGNtOgorICAgICAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgIyBQcm9ncmFtIHNob3VsZCBleGl0IHdpdGggYSBub24temVybyByZXR1cm0gY29kZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtLmV4Y2VwdGlvbi5jb2RlKQorCisgICAgQHBhdGNoKCdzeXMuc3Rkb3V0JywgbmV3X2NhbGxhYmxlPWlvLlN0cmluZ0lPKQorICAgIGRlZiB0ZXN0X2luZm9fY29tbWFuZChzZWxmLCBtb2NrX3N0ZG91dCk6CisgICAgICAgICMgVGVzdCB0aGUgb3V0cHV0IG9mIHRoZSBpbmZvIGNvbW1hbmQuCisgICAgICAgIHRhcmdldCA9IHNlbGYubWFrZV9hcmNoaXZlKCkKKyAgICAgICAgYXJncyA9IFtzdHIodGFyZ2V0KSwgJy0taW5mbyddCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCkgYXMgY206CisgICAgICAgICAgICB6aXBhcHAubWFpbihhcmdzKQorICAgICAgICAjIFByb2dyYW0gc2hvdWxkIGV4aXQgd2l0aCBhIHplcm8gcmV0dXJtIGNvZGUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmNvZGUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja19zdGRvdXQuZ2V0dmFsdWUoKSwgIkludGVycHJldGVyOiA8bm9uZT5cbiIpCisKKyAgICBkZWYgdGVzdF9pbmZvX2Vycm9yKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGluZm8gY29tbWFuZCBmYWlscyB3aGVuIHRoZSBhcmNoaXZlIGRvZXMgbm90IGV4aXN0LgorICAgICAgICB0YXJnZXQgPSBzZWxmLnRtcGRpciAvICdkdW1teS5weXonCisgICAgICAgIGFyZ3MgPSBbc3RyKHRhcmdldCksICctLWluZm8nXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpIGFzIGNtOgorICAgICAgICAgICAgemlwYXBwLm1haW4oYXJncykKKyAgICAgICAgIyBQcm9ncmFtIHNob3VsZCBleGl0IHdpdGggYSBub24temVybyByZXR1cm0gY29kZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtLmV4Y2VwdGlvbi5jb2RlKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggMGM0YzU3OS4uNjdlODU3MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMzMwLDYgKzMzMCwzNyBAQAogICAgICAgICAgICAgICAgICAgICB3aGlsZSB6aXBvcGVuLnJlYWQxKDEwMCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBmbmFtZSA9ICdmaWxlLm5hbWUnCisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICd3Jywgc2VsZi5jb21wcmVzc2lvbikgYXMgemlwZnA6CisgICAgICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCBmbmFtZSkKKyAgICAgICAgICAgICAgICByID0gcmVwcih6aXBmcCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJtb2RlPSd3JyIsIHIpCisKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZnA6CisgICAgICAgICAgICAgICAgciA9IHJlcHIoemlwZnApCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlbmFtZT0lcicgJSBmLCByKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGU9JXInICUgZiwgcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJtb2RlPSdyJyIsIHIpCisgICAgICAgICAgICAgICAgciA9IHJlcHIoemlwZnAuZ2V0aW5mbyhmbmFtZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZW5hbWU9JXInICUgZm5hbWUsIHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZW1vZGU9JywgcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdmaWxlX3NpemU9JywgcikKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbXByZXNzaW9uICE9IHppcGZpbGUuWklQX1NUT1JFRDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY29tcHJlc3NfdHlwZT0nLCByKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjb21wcmVzc19zaXplPScsIHIpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKGZuYW1lKSBhcyB6aXBvcGVuOgorICAgICAgICAgICAgICAgICAgICByID0gcmVwcih6aXBvcGVuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCduYW1lPSVyJyAlIGZuYW1lLCByKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJtb2RlPSdyJyIsIHIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY29tcHJlc3Npb24gIT0gemlwZmlsZS5aSVBfU1RPUkVEOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY29tcHJlc3NfdHlwZT0nLCByKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1tjbG9zZWRdJywgcmVwcih6aXBvcGVuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1tjbG9zZWRdJywgcmVwcih6aXBmcCkpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4pCiAgICAgICAgIHVubGluayhURVNURk4yKQpAQCAtNjU4LDcgKzY4OSw3IEBACiAgICAgICAgIHNlbGYucmVxdWlyZXNXcml0ZUFjY2Vzcyhvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoKSBhcyB0LCB6aXBmaWxlLlB5WmlwRmlsZSh0LCAidyIpIGFzIHppcGZwOgogICAgICAgICAgICAgZm4gPSBfX2ZpbGVfXwotICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoJy5weWMnKSBvciBmbi5lbmRzd2l0aCgnLnB5bycpOgorICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoJy5weWMnKToKICAgICAgICAgICAgICAgICBwYXRoX3NwbGl0ID0gZm4uc3BsaXQob3Muc2VwKQogICAgICAgICAgICAgICAgIGlmIG9zLmFsdHNlcCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgcGF0aF9zcGxpdC5leHRlbmQoZm4uc3BsaXQob3MuYWx0c2VwKSkKQEAgLTY3NSw3ICs3MDYsNyBAQAogCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgpIGFzIHQsIHppcGZpbGUuUHlaaXBGaWxlKHQsICJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICBmbiA9IF9fZmlsZV9fCi0gICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgoJy5weWMnLCAnLnB5bycpKToKKyAgICAgICAgICAgIGlmIGZuLmVuZHN3aXRoKCcucHljJyk6CiAgICAgICAgICAgICAgICAgZm4gPSBmbls6LTFdCiAKICAgICAgICAgICAgIHppcGZwLndyaXRlcHkoZm4sICJ0ZXN0cGFja2FnZSIpCkBAIC03MzIsMTAgKzc2Myw4IEBACiAgICAgICAgIGltcG9ydCBlbWFpbAogICAgICAgICBwYWNrYWdlZGlyID0gb3MucGF0aC5kaXJuYW1lKGVtYWlsLl9fZmlsZV9fKQogICAgICAgICBzZWxmLnJlcXVpcmVzV3JpdGVBY2Nlc3MocGFja2FnZWRpcikKLSAgICAgICAgIyB1c2UgLnB5YyBpZiBydW5uaW5nIHRlc3QgaW4gb3B0aW1pemF0aW9uIG1vZGUsCi0gICAgICAgICMgdXNlIC5weW8gaWYgcnVubmluZyB0ZXN0IGluIGRlYnVnIG1vZGUKICAgICAgICAgb3B0bGV2ZWwgPSAxIGlmIF9fZGVidWdfXyBlbHNlIDAKLSAgICAgICAgZXh0ID0gJy5weW8nIGlmIG9wdGxldmVsID09IDEgZWxzZSAnLnB5YycKKyAgICAgICAgZXh0ID0gJy5weWMnCiAKICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCkgYXMgdCwgXAogICAgICAgICAgICAgIHppcGZpbGUuUHlaaXBGaWxlKHQsICJ3Iiwgb3B0aW1pemU9b3B0bGV2ZWwpIGFzIHppcGZwOgpAQCAtODA5LDExICs4MzgsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJTeW50YXhFcnJvciIsIHMuZ2V0dmFsdWUoKSkKIAogICAgICAgICAgICAgICAgICMgYXMgaXQgd2lsbCBub3QgaGF2ZSBjb21waWxlZCB0aGUgcHl0aG9uIGZpbGUsIGl0IHdpbGwKLSAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIC5weSBmaWxlIG5vdCAucHljIG9yIC5weW8KKyAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIC5weSBmaWxlIG5vdCAucHljCiAgICAgICAgICAgICAgICAgbmFtZXMgPSB6aXBmcC5uYW1lbGlzdCgpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbW9kMS5weScsIG5hbWVzKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21vZDEucHljJywgbmFtZXMpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbW9kMS5weW8nLCBuYW1lcykKIAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgcm10cmVlKFRFU1RGTjIpCkBAIC0xMDc0LDYgKzExMDIsMTkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemYuZmlsZWxpc3RbMF0uZmlsZW5hbWUsICJmb28udHh0IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemYuZmlsZWxpc3RbMV0uZmlsZW5hbWUsICJceGY2LnR4dCIpCiAKKyAgICBkZWYgdGVzdF9leGNsdXNpdmVfY3JlYXRlX3ppcF9maWxlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGV4Y2x1c2l2ZSBjcmVhdGluZyBhIG5ldyB6aXBmaWxlLiIiIgorICAgICAgICB1bmxpbmsoVEVTVEZOMikKKyAgICAgICAgZmlsZW5hbWUgPSAndGVzdGZpbGUudHh0JworICAgICAgICBjb250ZW50ID0gYidoZWxsbywgd29ybGQuIHRoaXMgaXMgc29tZSBjb250ZW50LicKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgIngiLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgorICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoZmlsZW5hbWUsIGNvbnRlbnQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yKToKKyAgICAgICAgICAgIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAieCIsIHppcGZpbGUuWklQX1NUT1JFRCkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInIiKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZnAubmFtZWxpc3QoKSwgW2ZpbGVuYW1lXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZnAucmVhZChmaWxlbmFtZSksIGNvbnRlbnQpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfbm9uX2V4aXN0ZW50X2ZpbGVfZm9yX2FwcGVuZChzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVEVTVEZOKToKICAgICAgICAgICAgIG9zLnVubGluayhURVNURk4pCkBAIC0xNjQ4LDYgKzE2ODksNzIgQEAKICAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0xaTUEKIAogCisjIFByaXZpZGUgdGhlIHRlbGwoKSBtZXRob2QgYnV0IG5vdCBzZWVrKCkKK2NsYXNzIFRlbGxhYmxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHNlbGYuZnAgPSBmcAorICAgICAgICBzZWxmLm9mZnNldCA9IDAKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgbiA9IHNlbGYuZnAud3JpdGUoZGF0YSkKKyAgICAgICAgc2VsZi5vZmZzZXQgKz0gbgorICAgICAgICByZXR1cm4gbgorCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm9mZnNldAorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKworY2xhc3MgVW5zZWVrYWJsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnApOgorICAgICAgICBzZWxmLmZwID0gZnAKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZnAud3JpdGUoZGF0YSkKKworICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisKK2NsYXNzIFVuc2Vla2FibGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfd3JpdGVzdHIoc2VsZik6CisgICAgICAgIGZvciB3cmFwcGVyIGluIChsYW1iZGEgZjogZiksIFRlbGxhYmxlLCBVbnNlZWthYmxlOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qod3JhcHBlcj13cmFwcGVyKToKKyAgICAgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICAgICAgZi53cml0ZShiJ2FiYycpCisgICAgICAgICAgICAgICAgYmYgPSBpby5CdWZmZXJlZFdyaXRlcihmKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHdyYXBwZXIoYmYpLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CisgICAgICAgICAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCdvbmVzJywgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigndHdvcycsIGInMjIyJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0dmFsdWUoKVs6NV0sIGInYWJjUEsnKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsIG1vZGU9J3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCisKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAgZm9yIHdyYXBwZXIgaW4gKGxhbWJkYSBmOiBmKSwgVGVsbGFibGUsIFVuc2Vla2FibGU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3cmFwcGVyPXdyYXBwZXIpOgorICAgICAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKGInYWJjJykKKyAgICAgICAgICAgICAgICBiZiA9IGlvLkJ1ZmZlcmVkV3JpdGVyKGYpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUod3JhcHBlcihiZiksICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgVEVTVEZOKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGYyLndyaXRlKGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCAnb25lcycpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGYyOgorICAgICAgICAgICAgICAgICAgICAgICAgZjIud3JpdGUoYicyMjInKQorICAgICAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICd0d29zJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0dmFsdWUoKVs6NV0sIGInYWJjUEsnKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsIG1vZGU9J3InKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCisKKwogQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEBjbGFzc21ldGhvZApAQCAtMTY2NCwzNSArMTc3MSw1MiBAQAogICAgIGRlZiB0ZXN0X3NhbWVfZmlsZShzZWxmKToKICAgICAgICAgIyBWZXJpZnkgdGhhdCAod2hlbiB0aGUgWmlwRmlsZSBpcyBpbiBjb250cm9sIG9mIGNyZWF0aW5nIGZpbGUgb2JqZWN0cykKICAgICAgICAgIyBtdWx0aXBsZSBvcGVuKCkgY2FsbHMgY2FuIGJlIG1hZGUgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIGVhY2ggb3RoZXIuCi0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoVEVTVEZOMikKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMSwgemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4yOgotICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQotICAgICAgICAgICAgICAgIGRhdGEyID0gem9wZW4yLnJlYWQoNTAwKQotICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKLSAgICAgICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBkYXRhMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZikKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsIG1vZGU9InIiKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjI6CisgICAgICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgZGF0YTIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKIAogICAgIGRlZiB0ZXN0X2RpZmZlcmVudF9maWxlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGF0ICh3aGVuIHRoZSBaaXBGaWxlIGlzIGluIGNvbnRyb2wgb2YgY3JlYXRpbmcgZmlsZSBvYmplY3RzKQogICAgICAgICAjIG11bHRpcGxlIG9wZW4oKSBjYWxscyBjYW4gYmUgbWFkZSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggZWFjaCBvdGhlci4KLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShURVNURk4yKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZjoKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjI6Ci0gICAgICAgICAgICAgICAgZGF0YTEgPSB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQotICAgICAgICAgICAgICAgIGRhdGEyICs9IHpvcGVuMi5yZWFkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQorICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYpCisgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCBtb2RlPSJyIikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMSwgemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW4yOgorICAgICAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCisgICAgICAgICAgICAgICAgICAgIGRhdGExICs9IHpvcGVuMS5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTIgKz0gem9wZW4yLnJlYWQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKIAogICAgIGRlZiB0ZXN0X2ludGVybGVhdmVkKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGF0ICh3aGVuIHRoZSBaaXBGaWxlIGlzIGluIGNvbnRyb2wgb2YgY3JlYXRpbmcgZmlsZSBvYmplY3RzKQogICAgICAgICAjIG11bHRpcGxlIG9wZW4oKSBjYWxscyBjYW4gYmUgbWFkZSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggZWFjaCBvdGhlci4KLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShURVNURk4yKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZjoKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjI6CisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZikKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsIG1vZGU9InIiKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xLCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjI6CisgICAgICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICAgICAgZGF0YTEgKz0gem9wZW4xLnJlYWQoKQorICAgICAgICAgICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEyLCBzZWxmLmRhdGEyKQorCisgICAgZGVmIHRlc3RfcmVhZF9hZnRlcl9jbG9zZShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmKQorICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgem9wZW4xID0gc3RhY2suZW50ZXJfY29udGV4dCh6aXBmLm9wZW4oJ29uZXMnKSkKKyAgICAgICAgICAgICAgICAgICAgem9wZW4yID0gc3RhY2suZW50ZXJfY29udGV4dCh6aXBmLm9wZW4oJ3R3b3MnKSkKICAgICAgICAgICAgICAgICBkYXRhMSA9IHpvcGVuMS5yZWFkKDUwMCkKICAgICAgICAgICAgICAgICBkYXRhMiA9IHpvcGVuMi5yZWFkKDUwMCkKICAgICAgICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCkBAIC0xNzAwLDQzICsxODI0LDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKIAotICAgIGRlZiB0ZXN0X3JlYWRfYWZ0ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoVEVTVEZOMikKLSAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgotICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgotICAgICAgICAgICAgICAgIHpvcGVuMSA9IHN0YWNrLmVudGVyX2NvbnRleHQoemlwZi5vcGVuKCdvbmVzJykpCi0gICAgICAgICAgICAgICAgem9wZW4yID0gc3RhY2suZW50ZXJfY29udGV4dCh6aXBmLm9wZW4oJ3R3b3MnKSkKLSAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQotICAgICAgICAgICAgZGF0YTIgPSB6b3BlbjIucmVhZCg1MDApCi0gICAgICAgICAgICBkYXRhMSArPSB6b3BlbjEucmVhZCgpCi0gICAgICAgICAgICBkYXRhMiArPSB6b3BlbjIucmVhZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCi0KICAgICBkZWYgdGVzdF9yZWFkX2FmdGVyX3dyaXRlKHNlbGYpOgotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgotICAgICAgICAgICAgemlwZi53cml0ZXN0cignb25lcycsIHNlbGYuZGF0YTEpCi0gICAgICAgICAgICB6aXBmLndyaXRlc3RyKCd0d29zJywgc2VsZi5kYXRhMikKLSAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJykgYXMgem9wZW4xOgotICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExWzo1MDBdKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAncicpIGFzIHppcGY6Ci0gICAgICAgICAgICBkYXRhMSA9IHppcGYucmVhZCgnb25lcycpCi0gICAgICAgICAgICBkYXRhMiA9IHppcGYucmVhZCgndHdvcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCisgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgemlwZi53cml0ZXN0cignb25lcycsIHNlbGYuZGF0YTEpCisgICAgICAgICAgICAgICAgemlwZi53cml0ZXN0cigndHdvcycsIHNlbGYuZGF0YTIpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnKSBhcyB6b3BlbjE6CisgICAgICAgICAgICAgICAgICAgIGRhdGExID0gem9wZW4xLnJlYWQoNTAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMVs6NTAwXSkKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZjoKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHppcGYucmVhZCgnb25lcycpCisgICAgICAgICAgICAgICAgZGF0YTIgPSB6aXBmLnJlYWQoJ3R3b3MnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCiAKICAgICBkZWYgdGVzdF93cml0ZV9hZnRlcl9yZWFkKHNlbGYpOgotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgotICAgICAgICAgICAgemlwZi53cml0ZXN0cignb25lcycsIHNlbGYuZGF0YTEpCi0gICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMToKLSAgICAgICAgICAgICAgICB6b3BlbjEucmVhZCg1MDApCi0gICAgICAgICAgICAgICAgemlwZi53cml0ZXN0cigndHdvcycsIHNlbGYuZGF0YTIpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZjoKLSAgICAgICAgICAgIGRhdGExID0gemlwZi5yZWFkKCdvbmVzJykKLSAgICAgICAgICAgIGRhdGEyID0gemlwZi5yZWFkKCd0d29zJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMiwgc2VsZi5kYXRhMikKKyAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInciLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycpIGFzIHpvcGVuMToKKyAgICAgICAgICAgICAgICAgICAgem9wZW4xLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCd0d29zJywgc2VsZi5kYXRhMikKKyAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZjoKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHppcGYucmVhZCgnb25lcycpCisgICAgICAgICAgICAgICAgZGF0YTIgPSB6aXBmLnJlYWQoJ3R3b3MnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTIsIHNlbGYuZGF0YTIpCiAKICAgICBkZWYgdGVzdF9tYW55X29wZW5zKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGF0IHJlYWQoKSBhbmQgb3BlbigpIHByb21wdGx5IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3IsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IDFlMzUxYzguLmE5N2E3NzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC01MSw3ICs1MSw3IEBACiBURU1QX1pJUCA9IG9zLnBhdGguYWJzcGF0aCgianVuazk1MTQyLnppcCIpCiAKIHB5Y19maWxlID0gaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UoVEVTVE1PRCArICcucHknKQotcHljX2V4dCA9ICgnLnB5YycgaWYgX19kZWJ1Z19fIGVsc2UgJy5weW8nKQorcHljX2V4dCA9ICcucHljJwogCiAKIGNsYXNzIEltcG9ydEhvb2tzQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ1MCw3ICs0NTAsOSBAQAogICAgICAgICBmZCA9IG9zLm9wZW4oVEVTVE1PRCwgb3MuT19DUkVBVCwgMDAwKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0WmlwRmFpbHVyZShURVNUTU9EKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGltcG9ydC5aaXBJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKFRFU1RNT0QpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAjIElmIHdlIGxlYXZlICJ0aGUgcmVhZC1vbmx5IGJpdCIgc2V0IG9uIFdpbmRvd3MsIG5vdGhpbmcgY2FuCiAgICAgICAgICAgICAjIGRlbGV0ZSBURVNUTU9ELCBhbmQgbGF0ZXIgdGVzdHMgc3VmZmVyIGJvZ3VzIGZhaWx1cmVzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggNjZjMzU1Ny4uNTkxMzYyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xNCw4ICsxNCw4IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbiwgYXNzZXJ0X3B5dGhvbl9vaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcF9kaXIsIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCitmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbiwgYXNzZXJ0X3B5dGhvbl9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3NjcmlwdCwgbWFrZV96aXBfc2NyaXB0KQogCiB2ZXJib3NlID0gdGVzdC5zdXBwb3J0LnZlcmJvc2UKIApAQCAtMzksNyArMzksNyBAQAogICAgICMgVXNlIHRoZSBvYmplY3QncyBmdWxseSBxdWFsaWZpZWQgbmFtZSBpZiBpdCBoYXMgb25lCiAgICAgIyBPdGhlcndpc2UsIHVzZSB0aGUgbW9kdWxlJ3MgbmFtZQogICAgIHRyeToKLSAgICAgICAgbmFtZSA9ICIlcy4lcyIgJSAob2JqLl9fbW9kdWxlX18sIG9iai5fX25hbWVfXykKKyAgICAgICAgbmFtZSA9ICIlcy4lcyIgJSAob2JqLl9fbW9kdWxlX18sIG9iai5fX3F1YWxuYW1lX18pCiAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCiAgICAgZm9yIGV4YW1wbGUgaW4gZmluZGVyLmZpbmQob2JqLCBuYW1lLCBtb2R1bGUpOgpAQCAtNzgsNyArNzgsNyBAQAogCiAgICAgZGVmIHRlc3RfaW5zcGVjdF9nZXRzb3VyY2VfaXNzdWU0MjIzKHNlbGYpOgogICAgICAgICB0ZXN0X3NyYyA9ICJkZWYgZm9vKCk6IHBhc3NcbiIKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIGQ6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfZGlyKCkgYXMgZDoKICAgICAgICAgICAgIGluaXRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICdfX2luaXRfXycsIHRlc3Rfc3JjKQogICAgICAgICAgICAgbmFtZV9pbl96aXAgPSBvcy5wYXRoLmpvaW4oJ3ppcF9wa2cnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShpbml0X25hbWUpKQpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgICAgICBtb2RfbmFtZSA9IG1vZF9uYW1lLnJlcGxhY2UoInNhbXBsZV8iLCAic2FtcGxlX3ppcHBlZF8iKQogICAgICAgICAgICAgc2FtcGxlX3NvdXJjZXNbbW9kX25hbWVdID0gc3JjCiAKLSAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIGQ6CisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LnRlbXBfZGlyKCkgYXMgZDoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gbWFrZV9zY3JpcHQoZCwgJ3Rlc3RfemlwcGVkX2RvY3Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3NyYykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChkLCAndGVzdF96aXAnLApAQCAtMTk1LDcgKzE5NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRvY3Rlc3QudGVzdG1vZCgpCiAgICAgICAgICAgICAgICAgICAgICIiIikKICAgICAgICAgcGF0dGVybiA9ICdGaWxlICIlcyIsIGxpbmUgMiwgaW4gJXMnCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBkOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICdzY3JpcHQnLCB0ZXN0X3NyYykKICAgICAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBleHBlY3RlZCA9IHBhdHRlcm4gJSAoc2NyaXB0X25hbWUsICJfX21haW5fXy5UZXN0IikKQEAgLTIyMiw3ICsyMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgcGRiCiAgICAgICAgICAgICAgICAgICAgIHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkucnVuY2FsbChmKQogICAgICAgICAgICAgICAgICAgICAiIiIpCi0gICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBkOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC50ZW1wX2RpcigpIGFzIGQ6CiAgICAgICAgICAgICBzY3JpcHRfbmFtZSA9IG1ha2Vfc2NyaXB0KGQsICdzY3JpcHQnLCB0ZXN0X3NyYykKICAgICAgICAgICAgIHAgPSBzcGF3bl9weXRob24oc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBwLnN0ZGluLndyaXRlKGInbFxuJykKQEAgLTIzOCw5ICsyMzgsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLm5vcm1jYXNlKHJ1bl9uYW1lLmVuY29kZSgndXRmLTgnKSksIGRhdGEpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoWmlwU3VwcG9ydFRlc3RzKQorZGVmIHRlYXJEb3duTW9kdWxlKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNTNiYjJhZC4uN2NkMWQ3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtNzE0LDE2ICs3MTQsNSBAQAogIiIiCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAotICAgICAgICBWZXJzaW9uVGVzdENhc2UsCi0gICAgICAgIENoZWNrc3VtVGVzdENhc2UsCi0gICAgICAgIENoZWNrc3VtQmlnQnVmZmVyVGVzdENhc2UsCi0gICAgICAgIEV4Y2VwdGlvblRlc3RDYXNlLAotICAgICAgICBDb21wcmVzc1Rlc3RDYXNlLAotICAgICAgICBDb21wcmVzc09iamVjdFRlc3RDYXNlCi0gICAgKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHVuaXR0ZXN0Lm1haW4oKSAjIFhYWAotICAgICMjI3Rlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5IGIvTGliL3Rlc3QvdGZfaW5oZXJpdF9jaGVjay5weQppbmRleCBhZmU1MGQyLi4xMzhmMjVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90Zl9pbmhlcml0X2NoZWNrLnB5CisrKyBiL0xpYi90ZXN0L3RmX2luaGVyaXRfY2hlY2sucHkKQEAgLTQsMjIgKzQsMjQgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgU3VwcHJlc3NDcmFzaFJlcG9ydAogCi12ZXJib3NlID0gKHN5cy5hcmd2WzFdID09ICd2JykKLXRyeToKLSAgICBmZCA9IGludChzeXMuYXJndlsyXSkKLQord2l0aCBTdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgdmVyYm9zZSA9IChzeXMuYXJndlsxXSA9PSAndicpCiAgICAgdHJ5OgotICAgICAgICBvcy53cml0ZShmZCwgYiJibGF0IikKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgIyBTdWNjZXNzIC0tIGNvdWxkIG5vdCB3cml0ZSB0byBmZC4KLSAgICAgICAgc3lzLmV4aXQoMCkKLSAgICBlbHNlOgotICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZmQgJWQgaXMgb3BlbiBpbiBjaGlsZCIgJSBmZCkKLSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgZmQgPSBpbnQoc3lzLmFyZ3ZbMl0pCiAKLWV4Y2VwdCBFeGNlcHRpb246Ci0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcmFpc2UKLSAgICBzeXMuZXhpdCgxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYiJibGF0IikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIFN1Y2Nlc3MgLS0gY291bGQgbm90IHdyaXRlIHRvIGZkLgorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiZmQgJWQgaXMgb3BlbiBpbiBjaGlsZCIgJSBmZCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXh0d3JhcC5weSBiL0xpYi90ZXh0d3JhcC5weQppbmRleCA1ODg2N2Y5Li4zYWQzZTE4IDEwMDY0NAotLS0gYS9MaWIvdGV4dHdyYXAucHkKKysrIGIvTGliL3RleHR3cmFwLnB5CkBAIC03OSwxMCArNzksMjUgQEAKICAgICAjIHNwbGl0cyBpbnRvCiAgICAgIyAgIEhlbGxvLyAvdGhlcmUvIC8tLS8gL3lvdS8gL2dvb2YtL2JhbGwsLyAvdXNlLyAvdGhlLyAvLWIvIC9vcHRpb24hCiAgICAgIyAoYWZ0ZXIgc3RyaXBwaW5nIG91dCBlbXB0eSBzdHJpbmdzKS4KLSAgICB3b3Jkc2VwX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgcicoXHMrfCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbnkgd2hpdGVzcGFjZQotICAgICAgICByJ1teXHNcd10qXHcrW14wLTlcV10tKD89XHcrW14wLTlcV10pfCcgICAjIGh5cGhlbmF0ZWQgd29yZHMKLSAgICAgICAgcicoPzw9W1x3XCFcIlwnXCZcLlwsXD9dKS17Mix9KD89XHcpKScpICAgIyBlbS1kYXNoCisgICAgd29yZF9wdW5jdCA9IHInW1x3ISJcJyYuLD9dJworICAgIGxldHRlciA9IHInW15cZFxXXScKKyAgICB3b3Jkc2VwX3JlID0gcmUuY29tcGlsZShyJycnCisgICAgICAgICggIyBhbnkgd2hpdGVzcGFjZQorICAgICAgICAgIFxzKworICAgICAgICB8ICMgZW0tZGFzaCBiZXR3ZWVuIHdvcmRzCisgICAgICAgICAgKD88PSUod3ApcykgLXsyLH0gKD89XHcpCisgICAgICAgIHwgIyB3b3JkLCBwb3NzaWJseSBoeXBoZW5hdGVkCisgICAgICAgICAgXFMrPyAoPzoKKyAgICAgICAgICAgICMgaHlwaGVuYXRlZCB3b3JkCisgICAgICAgICAgICAgIC0oPzogKD88PSUobHQpc3syfS0pIHwgKD88PSUobHQpcy0lKGx0KXMtKSkKKyAgICAgICAgICAgICAgKD89ICUobHQpcyAtPyAlKGx0KXMpCisgICAgICAgICAgICB8ICMgZW5kIG9mIHdvcmQKKyAgICAgICAgICAgICAgKD89XHN8XFopCisgICAgICAgICAgICB8ICMgZW0tZGFzaAorICAgICAgICAgICAgICAoPzw9JSh3cClzKSAoPz0tezIsfVx3KQorICAgICAgICAgICAgKQorICAgICAgICApJycnICUgeyd3cCc6IHdvcmRfcHVuY3QsICdsdCc6IGxldHRlcn0sIHJlLlZFUkJPU0UpCisgICAgZGVsIHdvcmRfcHVuY3QsIGxldHRlcgogCiAgICAgIyBUaGlzIGxlc3MgZnVua3kgbGl0dGxlIHJlZ2V4IGp1c3Qgc3BsaXQgb24gcmVjb2duaXplZCBzcGFjZXMuIEUuZy4KICAgICAjICAgIkhlbGxvIHRoZXJlIC0tIHlvdSBnb29mLWJhbGwsIHVzZSB0aGUgLWIgb3B0aW9uISIKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDM3YWEzYjguLjI0Y2M5MTEgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMywxMCArMyw3IEBACiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBfdGhyZWFkCiAKLXRyeToKLSAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQorZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjIGFzIF9mb3JtYXRfZXhjCiBmcm9tIF93ZWFrcmVmc2V0IGltcG9ydCBXZWFrU2V0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlIGFzIF9pc2xpY2UsIGNvdW50IGFzIF9jb3VudApAQCAtMTA2LDggKzEwMywxNCBAQAogICAgICAgICAgICAgb3duZXIgPSBfYWN0aXZlW293bmVyXS5uYW1lCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuICI8JXMgb3duZXI9JXIgY291bnQ9JWQ+IiAlICgKLSAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgb3duZXIsIHNlbGYuX2NvdW50KQorICAgICAgICByZXR1cm4gIjwlcyAlcy4lcyBvYmplY3Qgb3duZXI9JXIgY291bnQ9JWQgYXQgJXM+IiAlICgKKyAgICAgICAgICAgICJsb2NrZWQiIGlmIHNlbGYuX2Jsb2NrLmxvY2tlZCgpIGVsc2UgInVubG9ja2VkIiwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICBvd25lciwKKyAgICAgICAgICAgIHNlbGYuX2NvdW50LAorICAgICAgICAgICAgaGV4KGlkKHNlbGYpKQorICAgICAgICApCiAKICAgICBkZWYgYWNxdWlyZShzZWxmLCBibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKToKICAgICAgICAgIiIiQWNxdWlyZSBhIGxvY2ssIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZy4KZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5CmluZGV4IDBiMWM2MDEuLjJkZTg4ZjcgMTAwNzU1Ci0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjAsNiArMjAsNyBAQAogICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVwcmVjYXRlZCkKICAgLWMvLS1jbG9jazogdXNlIHRpbWUuY2xvY2soKSAoZGVwcmVjYXRlZCkKICAgLXYvLS12ZXJib3NlOiBwcmludCByYXcgdGltaW5nIHJlc3VsdHM7IHJlcGVhdCBmb3IgbW9yZSBkaWdpdHMgcHJlY2lzaW9uCisgIC11Ly0tdW5pdDogc2V0IHRoZSBvdXRwdXQgdGltZSB1bml0ICh1c2VjLCBtc2VjLCBvciBzZWMpCiAgIC1oLy0taGVscDogcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlIGFuZCBleGl0CiAgIC0tOiBzZXBhcmF0ZSBvcHRpb25zIGZyb20gc3RhdGVtZW50LCB1c2Ugd2hlbiBzdGF0ZW1lbnQgc3RhcnRzIHdpdGggLQogICBzdGF0ZW1lbnQ6IHN0YXRlbWVudCB0byBiZSB0aW1lZCAoZGVmYXVsdCAncGFzcycpCkBAIC02MSw2ICs2Miw4IEBACiBkZWZhdWx0X3JlcGVhdCA9IDMKIGRlZmF1bHRfdGltZXIgPSB0aW1lLnBlcmZfY291bnRlcgogCitfZ2xvYmFscyA9IGdsb2JhbHMKKwogIyBEb24ndCBjaGFuZ2UgdGhlIGluZGVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0ZTsgdGhlIHJlaW5kZW50KCkgY2FsbHMKICMgaW4gVGltZXIuX19pbml0X18oKSBkZXBlbmQgb24gc2V0dXAgYmVpbmcgaW5kZW50ZWQgNCBzcGFjZXMgYW5kIHN0bXQKICMgYmVpbmcgaW5kZW50ZWQgOCBzcGFjZXMuCkBAIC03OCwyNCArODEsMTUgQEAKICAgICAiIiJIZWxwZXIgdG8gcmVpbmRlbnQgYSBtdWx0aS1saW5lIHN0YXRlbWVudC4iIiIKICAgICByZXR1cm4gc3JjLnJlcGxhY2UoIlxuIiwgIlxuIiArICIgIippbmRlbnQpCiAKLWRlZiBfdGVtcGxhdGVfZnVuYyhzZXR1cCwgZnVuYyk6Ci0gICAgIiIiQ3JlYXRlIGEgdGltZXIgZnVuY3Rpb24uIFVzZWQgaWYgdGhlICJzdGF0ZW1lbnQiIGlzIGEgY2FsbGFibGUuIiIiCi0gICAgZGVmIGlubmVyKF9pdCwgX3RpbWVyLCBfZnVuYz1mdW5jKToKLSAgICAgICAgc2V0dXAoKQotICAgICAgICBfdDAgPSBfdGltZXIoKQotICAgICAgICBmb3IgX2kgaW4gX2l0OgotICAgICAgICAgICAgX2Z1bmMoKQotICAgICAgICBfdDEgPSBfdGltZXIoKQotICAgICAgICByZXR1cm4gX3QxIC0gX3QwCi0gICAgcmV0dXJuIGlubmVyCi0KIGNsYXNzIFRpbWVyOgogICAgICIiIkNsYXNzIGZvciB0aW1pbmcgZXhlY3V0aW9uIHNwZWVkIG9mIHNtYWxsIGNvZGUgc25pcHBldHMuCiAKICAgICBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBzdGF0ZW1lbnQgdG8gYmUgdGltZWQsIGFuIGFkZGl0aW9uYWwKICAgICBzdGF0ZW1lbnQgdXNlZCBmb3Igc2V0dXAsIGFuZCBhIHRpbWVyIGZ1bmN0aW9uLiAgQm90aCBzdGF0ZW1lbnRzCiAgICAgZGVmYXVsdCB0byAncGFzcyc7IHRoZSB0aW1lciBmdW5jdGlvbiBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgKHNlZQotICAgIG1vZHVsZSBkb2Mgc3RyaW5nKS4KKyAgICBtb2R1bGUgZG9jIHN0cmluZykuICBJZiAnZ2xvYmFscycgaXMgc3BlY2lmaWVkLCB0aGUgY29kZSB3aWxsIGJlCisgICAgZXhlY3V0ZWQgd2l0aGluIHRoYXQgbmFtZXNwYWNlIChhcyBvcHBvc2VkIHRvIGluc2lkZSB0aW1laXQncworICAgIG5hbWVzcGFjZSkuCiAKICAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlCiAgICAgdGltZWl0KCkgbWV0aG9kLiAgVGhlIHJlcGVhdCgpIG1ldGhvZCBpcyBhIGNvbnZlbmllbmNlIHRvIGNhbGwKQEAgLTEwNSw0MiArOTksNDAgQEAKICAgICBtdWx0aS1saW5lIHN0cmluZyBsaXRlcmFscy4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKKyAgICAgICAgICAgICAgICAgZ2xvYmFscz1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuICBTZWUgY2xhc3MgZG9jIHN0cmluZy4iIiIKICAgICAgICAgc2VsZi50aW1lciA9IHRpbWVyCi0gICAgICAgIG5zID0ge30KKyAgICAgICAgbG9jYWxfbnMgPSB7fQorICAgICAgICBnbG9iYWxfbnMgPSBfZ2xvYmFscygpIGlmIGdsb2JhbHMgaXMgTm9uZSBlbHNlIGdsb2JhbHMKKyAgICAgICAgaW5pdCA9ICcnCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0dXAsIHN0cik6CisgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvZGUgY2FuIGJlIGNvbXBpbGVkIG91dHNpZGUgYSBmdW5jdGlvbgorICAgICAgICAgICAgY29tcGlsZShzZXR1cCwgZHVtbXlfc3JjX25hbWUsICJleGVjIikKKyAgICAgICAgICAgIHN0bXRwcmVmaXggPSBzZXR1cCArICdcbicKKyAgICAgICAgICAgIHNldHVwID0gcmVpbmRlbnQoc2V0dXAsIDQpCisgICAgICAgIGVsaWYgY2FsbGFibGUoc2V0dXApOgorICAgICAgICAgICAgbG9jYWxfbnNbJ19zZXR1cCddID0gc2V0dXAKKyAgICAgICAgICAgIGluaXQgKz0gJywgX3NldHVwPV9zZXR1cCcKKyAgICAgICAgICAgIHN0bXRwcmVmaXggPSAnJworICAgICAgICAgICAgc2V0dXAgPSAnX3NldHVwKCknCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXR1cCBpcyBuZWl0aGVyIGEgc3RyaW5nIG5vciBjYWxsYWJsZSIpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RtdCwgc3RyKToKICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgY29kZSBjYW4gYmUgY29tcGlsZWQgb3V0c2lkZSBhIGZ1bmN0aW9uCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgotICAgICAgICAgICAgICAgIGNvbXBpbGUoc2V0dXAsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCi0gICAgICAgICAgICAgICAgY29tcGlsZShzZXR1cCArICdcbicgKyBzdG10LCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb21waWxlKHN0bXQsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCisgICAgICAgICAgICBjb21waWxlKHN0bXRwcmVmaXggKyBzdG10LCBkdW1teV9zcmNfbmFtZSwgImV4ZWMiKQogICAgICAgICAgICAgc3RtdCA9IHJlaW5kZW50KHN0bXQsIDgpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgotICAgICAgICAgICAgICAgIHNldHVwID0gcmVpbmRlbnQoc2V0dXAsIDQpCi0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUuZm9ybWF0KHN0bXQ9c3RtdCwgc2V0dXA9c2V0dXAsIGluaXQ9JycpCi0gICAgICAgICAgICBlbGlmIGNhbGxhYmxlKHNldHVwKToKLSAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD0nX3NldHVwKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0PScsIF9zZXR1cD1fc2V0dXAnKQotICAgICAgICAgICAgICAgIG5zWydfc2V0dXAnXSA9IHNldHVwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKLSAgICAgICAgICAgIHNlbGYuc3JjID0gc3JjICMgU2F2ZSBmb3IgdHJhY2ViYWNrIGRpc3BsYXkKLSAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNyYywgZHVtbXlfc3JjX25hbWUsICJleGVjIikKLSAgICAgICAgICAgIGV4ZWMoY29kZSwgZ2xvYmFscygpLCBucykKLSAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBuc1siaW5uZXIiXQogICAgICAgICBlbGlmIGNhbGxhYmxlKHN0bXQpOgotICAgICAgICAgICAgc2VsZi5zcmMgPSBOb25lCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgotICAgICAgICAgICAgICAgIF9zZXR1cCA9IHNldHVwCi0gICAgICAgICAgICAgICAgZGVmIHNldHVwKCk6Ci0gICAgICAgICAgICAgICAgICAgIGV4ZWMoX3NldHVwLCBnbG9iYWxzKCksIG5zKQotICAgICAgICAgICAgZWxpZiBub3QgY2FsbGFibGUoc2V0dXApOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKLSAgICAgICAgICAgIHNlbGYuaW5uZXIgPSBfdGVtcGxhdGVfZnVuYyhzZXR1cCwgc3RtdCkKKyAgICAgICAgICAgIGxvY2FsX25zWydfc3RtdCddID0gc3RtdAorICAgICAgICAgICAgaW5pdCArPSAnLCBfc3RtdD1fc3RtdCcKKyAgICAgICAgICAgIHN0bXQgPSAnX3N0bXQoKScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0bXQgaXMgbmVpdGhlciBhIHN0cmluZyBub3IgY2FsbGFibGUiKQorICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCwgaW5pdD1pbml0KQorICAgICAgICBzZWxmLnNyYyA9IHNyYyAgIyBTYXZlIGZvciB0cmFjZWJhY2sgZGlzcGxheQorICAgICAgICBjb2RlID0gY29tcGlsZShzcmMsIGR1bW15X3NyY19uYW1lLCAiZXhlYyIpCisgICAgICAgIGV4ZWMoY29kZSwgZ2xvYmFsX25zLCBsb2NhbF9ucykKKyAgICAgICAgc2VsZi5pbm5lciA9IGxvY2FsX25zWyJpbm5lciJdCiAKICAgICBkZWYgcHJpbnRfZXhjKHNlbGYsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIkhlbHBlciB0byBwcmludCBhIHRyYWNlYmFjayBmcm9tIHRoZSB0aW1lZCBjb2RlLgpAQCAtMjE2LDE0ICsyMDgsMTQgQEAKICAgICAgICAgcmV0dXJuIHIKIAogZGVmIHRpbWVpdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAotICAgICAgICAgICBudW1iZXI9ZGVmYXVsdF9udW1iZXIpOgorICAgICAgICAgICBudW1iZXI9ZGVmYXVsdF9udW1iZXIsIGdsb2JhbHM9Tm9uZSk6CiAgICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIFRpbWVyIG9iamVjdCBhbmQgY2FsbCB0aW1laXQgbWV0aG9kLiIiIgotICAgIHJldHVybiBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIpLnRpbWVpdChudW1iZXIpCisgICAgcmV0dXJuIFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lciwgZ2xvYmFscykudGltZWl0KG51bWJlcikKIAogZGVmIHJlcGVhdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAotICAgICAgICAgICByZXBlYXQ9ZGVmYXVsdF9yZXBlYXQsIG51bWJlcj1kZWZhdWx0X251bWJlcik6CisgICAgICAgICAgIHJlcGVhdD1kZWZhdWx0X3JlcGVhdCwgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgcmVwZWF0IG1ldGhvZC4iIiIKLSAgICByZXR1cm4gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyKS5yZXBlYXQocmVwZWF0LCBudW1iZXIpCisgICAgcmV0dXJuIFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lciwgZ2xvYmFscykucmVwZWF0KHJlcGVhdCwgbnVtYmVyKQogCiBkZWYgbWFpbihhcmdzPU5vbmUsICosIF93cmFwX3RpbWVyPU5vbmUpOgogICAgICIiIk1haW4gcHJvZ3JhbSwgdXNlZCB3aGVuIHJ1biBhcyBhIHNjcmlwdC4KQEAgLTI0NiwxMCArMjM4LDEwIEBACiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KICAgICBpbXBvcnQgZ2V0b3B0CiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjpzOnI6dGNwdmgiLAorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAibjp1OnM6cjp0Y3B2aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsibnVtYmVyPSIsICJzZXR1cD0iLCAicmVwZWF0PSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZSIsICJjbG9jayIsICJwcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgImhlbHAiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJib3NlIiwgInVuaXQ9IiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGVycjoKICAgICAgICAgcHJpbnQoZXJyKQogICAgICAgICBwcmludCgidXNlIC1oLy0taGVscCBmb3IgY29tbWFuZCBsaW5lIGhlbHAiKQpAQCAtMjYwLDEyICsyNTIsMjEgQEAKICAgICBzZXR1cCA9IFtdCiAgICAgcmVwZWF0ID0gZGVmYXVsdF9yZXBlYXQKICAgICB2ZXJib3NlID0gMAorICAgIHRpbWVfdW5pdCA9IE5vbmUKKyAgICB1bml0cyA9IHsidXNlYyI6IDEsICJtc2VjIjogMWUzLCAic2VjIjogMWU2fQogICAgIHByZWNpc2lvbiA9IDMKICAgICBmb3IgbywgYSBpbiBvcHRzOgogICAgICAgICBpZiBvIGluICgiLW4iLCAiLS1udW1iZXIiKToKICAgICAgICAgICAgIG51bWJlciA9IGludChhKQogICAgICAgICBpZiBvIGluICgiLXMiLCAiLS1zZXR1cCIpOgogICAgICAgICAgICAgc2V0dXAuYXBwZW5kKGEpCisgICAgICAgIGlmIG8gaW4gKCItdSIsICItLXVuaXQiKToKKyAgICAgICAgICAgIGlmIGEgaW4gdW5pdHM6CisgICAgICAgICAgICAgICAgdGltZV91bml0ID0gYQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgiVW5yZWNvZ25pemVkIHVuaXQuIFBsZWFzZSBzZWxlY3QgdXNlYywgbXNlYywgb3Igc2VjLiIsCisgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4gMgogICAgICAgICBpZiBvIGluICgiLXIiLCAiLS1yZXBlYXQiKToKICAgICAgICAgICAgIHJlcGVhdCA9IGludChhKQogICAgICAgICAgICAgaWYgcmVwZWF0IDw9IDA6CkBAIC0zMTUsMTUgKzMxNiwyMSBAQAogICAgICAgICBwcmludCgicmF3IHRpbWVzOiIsICIgIi5qb2luKFsiJS4qZyIgJSAocHJlY2lzaW9uLCB4KSBmb3IgeCBpbiByXSkpCiAgICAgcHJpbnQoIiVkIGxvb3BzLCIgJSBudW1iZXIsIGVuZD0nICcpCiAgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKLSAgICBpZiB1c2VjIDwgMTAwMDoKLSAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQorICAgIGlmIHRpbWVfdW5pdCBpcyBub3QgTm9uZToKKyAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgJXMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy91bml0c1t0aW1lX3VuaXRdLCB0aW1lX3VuaXQpKQogICAgIGVsc2U6Ci0gICAgICAgIG1zZWMgPSB1c2VjIC8gMTAwMAotICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIG1zZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLCBtc2VjKSkKKyAgICAgICAgaWYgdXNlYyA8IDEwMDA6CisgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyB1c2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgdXNlYykpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWMgPSBtc2VjIC8gMTAwMAotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgc2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgICAgIG1zZWMgPSB1c2VjIC8gMTAwMAorICAgICAgICAgICAgaWYgbXNlYyA8IDEwMDA6CisgICAgICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgbXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgbXNlYykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlYyA9IG1zZWMgLyAxMDAwCisgICAgICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIHNlYykpCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggMjFhNTYwYi4uZWE3NDdhYyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMxLDkgKzMxLDYgQEAKICIiIgogCiBpbXBvcnQgc3lzCi1pZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKLSAgICAjIEF0dGVtcHQgdG8gY29uZmlndXJlIFRjbC9UayB3aXRob3V0IHJlcXVpcmluZyBQQVRICi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBfZml4CiAKIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogVGNsRXJyb3IgPSBfdGtpbnRlci5UY2xFcnJvcgpAQCAtMzU1LDcgKzM1Miw3IEBACiAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBhcyBhbiBpbnRlZ2VyLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdldGludChzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCiAKIGNsYXNzIERvdWJsZVZhcihWYXJpYWJsZSk6CiAgICAgIiIiVmFsdWUgaG9sZGVyIGZvciBmbG9hdCB2YXJpYWJsZXMuIiIiCkBAIC0zNzQsNyArMzcxLDcgQEAKIAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGFzIGEgZmxvYXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQorICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0ZG91YmxlKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKIAogY2xhc3MgQm9vbGVhblZhcihWYXJpYWJsZSk6CiAgICAgIiIiVmFsdWUgaG9sZGVyIGZvciBib29sZWFuIHZhcmlhYmxlcy4iIiIKQEAgLTUwNSwxNCArNTAyLDI2IEBACiAgICAgZGVmIGdldHZhcihzZWxmLCBuYW1lPSdQWV9WQVInKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIFRjbCB2YXJpYWJsZSBOQU1FLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5nZXR2YXIobmFtZSkKLSAgICBnZXRpbnQgPSBpbnQKLSAgICBnZXRkb3VibGUgPSBmbG9hdAorCisgICAgZGVmIGdldGludChzZWxmLCBzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHMpCisgICAgICAgIGV4Y2VwdCBUY2xFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihleGMpKQorCisgICAgZGVmIGdldGRvdWJsZShzZWxmLCBzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHMpCisgICAgICAgIGV4Y2VwdCBUY2xFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihleGMpKQorCiAgICAgZGVmIGdldGJvb2xlYW4oc2VsZiwgcyk6CiAgICAgICAgICIiIlJldHVybiBhIGJvb2xlYW4gdmFsdWUgZm9yIFRjbCBib29sZWFuIHZhbHVlcyB0cnVlIGFuZCBmYWxzZSBnaXZlbiBhcyBwYXJhbWV0ZXIuIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGJvb2xlYW4ocykKICAgICAgICAgZXhjZXB0IFRjbEVycm9yOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQorCiAgICAgZGVmIGZvY3VzX3NldChzZWxmKToKICAgICAgICAgIiIiRGlyZWN0IGlucHV0IGZvY3VzIHRvIHRoaXMgd2lkZ2V0LgogCkBAIC03NzUsMTMgKzc4NCwxMCBAQAogICAgICAgICAiIiJSYWlzZSB0aGlzIHdpZGdldCBpbiB0aGUgc3RhY2tpbmcgb3JkZXIuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgncmFpc2UnLCBzZWxmLl93LCBhYm92ZVRoaXMpCiAgICAgbGlmdCA9IHRrcmFpc2UKLSAgICBkZWYgY29sb3Jtb2RlbChzZWxmLCB2YWx1ZT1Ob25lKToKLSAgICAgICAgIiIiVXNlbGVzcy4gTm90IGltcGxlbWVudGVkIGluIFRrLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd0aycsICdjb2xvcm1vZGVsJywgc2VsZi5fdywgdmFsdWUpCiAgICAgZGVmIHdpbmZvX2F0b20oc2VsZiwgbmFtZSwgZGlzcGxheW9mPTApOgogICAgICAgICAiIiJSZXR1cm4gaW50ZWdlciB3aGljaCByZXByZXNlbnRzIGF0b20gTkFNRS4iIiIKICAgICAgICAgYXJncyA9ICgnd2luZm8nLCAnYXRvbScpICsgc2VsZi5fZGlzcGxheW9mKGRpc3BsYXlvZikgKyAobmFtZSwpCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKGFyZ3MpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKGFyZ3MpKQogICAgIGRlZiB3aW5mb19hdG9tbmFtZShzZWxmLCBpZCwgZGlzcGxheW9mPTApOgogICAgICAgICAiIiJSZXR1cm4gbmFtZSBvZiBhdG9tIHdpdGggaWRlbnRpZmllciBJRC4iIiIKICAgICAgICAgYXJncyA9ICgnd2luZm8nLCAnYXRvbW5hbWUnKSBcCkBAIC03ODksNyArNzk1LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChhcmdzKQogICAgIGRlZiB3aW5mb19jZWxscyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIG51bWJlciBvZiBjZWxscyBpbiB0aGUgY29sb3JtYXAgZm9yIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2NlbGxzJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2NoaWxkcmVuKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCB3aWRnZXRzIHdoaWNoIGFyZSBjaGlsZHJlbiBvZiB0aGlzIHdpZGdldC4iIiIKQEAgLTgyMCwyMiArODI2LDIyIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1ldG93aWRnZXQobmFtZSkKICAgICBkZWYgd2luZm9fZGVwdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgnd2luZm8nLCAnZGVwdGgnLCBzZWxmLl93KSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgnd2luZm8nLCAnZGVwdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fZXhpc3RzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGlzIHdpZGdldCBleGlzdHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnZXhpc3RzJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2ZwaXhlbHMoc2VsZiwgbnVtYmVyKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIGZvciB0aGUgZ2l2ZW4gZGlzdGFuY2UgTlVNQkVSCiAgICAgICAgIChlLmcuICIzYyIpIGFzIGZsb2F0LiIiIgotICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgICd3aW5mbycsICdmcGl4ZWxzJywgc2VsZi5fdywgbnVtYmVyKSkKICAgICBkZWYgd2luZm9fZ2VvbWV0cnkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBnZW9tZXRyeSBzdHJpbmcgZm9yIHRoaXMgd2lkZ2V0IGluIHRoZSBmb3JtICJ3aWR0aHhoZWlnaHQrWCtZIi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnZ2VvbWV0cnknLCBzZWxmLl93KQogICAgIGRlZiB3aW5mb19oZWlnaHQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBoZWlnaHQgb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2lkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaWRlbnRpZmllciBJRCBmb3IgdGhpcyB3aWRnZXQuIiIiCkBAIC04NDcsNyArODUzLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChhcmdzKSkKICAgICBkZWYgd2luZm9faXNtYXBwZWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoaXMgd2lkZ2V0IGlzIG1hcHBlZC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdpc21hcHBlZCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19tYW5hZ2VyKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHdpbmRvdyBtYW5hbmdlciBuYW1lIGZvciB0aGlzIHdpZGdldC4iIiIKQEAgLTg2NSwxMSArODcxLDExIEBACiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoYXJncykKICAgICBkZWYgd2luZm9fcGl4ZWxzKHNlbGYsIG51bWJlcik6CiAgICAgICAgICIiIlJvdW5kZWQgaW50ZWdlciB2YWx1ZSBvZiB3aW5mb19mcGl4ZWxzLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3BpeGVscycsIHNlbGYuX3csIG51bWJlcikpCiAgICAgZGVmIHdpbmZvX3BvaW50ZXJ4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnRlciBvbiB0aGUgcm9vdCB3aW5kb3cuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncG9pbnRlcngnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fcG9pbnRlcnh5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSB0dXBsZSBvZiB4IGFuZCB5IGNvb3JkaW5hdGVzIG9mIHRoZSBwb2ludGVyIG9uIHRoZSByb290IHdpbmRvdy4iIiIKQEAgLTg3NywxNSArODgzLDE1IEBACiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3BvaW50ZXJ4eScsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19wb2ludGVyeShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIHBvaW50ZXIgb24gdGhlIHJvb3Qgd2luZG93LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3BvaW50ZXJ5Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3JlcWhlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHJlcXVlc3RlZCBoZWlnaHQgb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncmVxaGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3JlcXdpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gcmVxdWVzdGVkIHdpZHRoIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3JlcXdpZHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3JnYihzZWxmLCBjb2xvcik6CiAgICAgICAgICIiIlJldHVybiB0dXBsZSBvZiBkZWNpbWFsIHZhbHVlcyBmb3IgcmVkLCBncmVlbiwgYmx1ZSBmb3IKQEAgLTg5NSwxMiArOTAxLDEyIEBACiAgICAgZGVmIHdpbmZvX3Jvb3R4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4geCBjb29yZGluYXRlIG9mIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoaXMgd2lkZ2V0IG9uIHRoZQogICAgICAgICByb290IHdpbmRvdy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdyb290eCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19yb290eShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHkgY29vcmRpbmF0ZSBvZiB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGlzIHdpZGdldCBvbiB0aGUKICAgICAgICAgcm9vdCB3aW5kb3cuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAncm9vdHknLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVuKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHNjcmVlbiBuYW1lIG9mIHRoaXMgd2lkZ2V0LiIiIgpAQCAtOTA4LDI3ICs5MTQsMjcgQEAKICAgICBkZWYgd2luZm9fc2NyZWVuY2VsbHMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBjZWxscyBpbiB0aGUgY29sb3JtYXAgb2YgdGhlIHNjcmVlbgogICAgICAgICBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW5jZWxscycsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zY3JlZW5kZXB0aChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgb2YgdGhlIHJvb3Qgd2luZG93IG9mIHRoZQogICAgICAgICBzY3JlZW4gb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVuZGVwdGgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fc2NyZWVuaGVpZ2h0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhlIGhlaWdodCBvZiB0aGUgc2NyZWVuIG9mIHRoaXMgd2lkZ2V0CiAgICAgICAgIGluIHBpeGVsLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3NjcmVlbmhlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zY3JlZW5tbWhlaWdodChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIHRoZSBoZWlnaHQgb2YgdGhlIHNjcmVlbiBvZgogICAgICAgICB0aGlzIHdpZGdldCBpbiBtbS4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW5tbWhlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zY3JlZW5tbXdpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gb2YKICAgICAgICAgdGhpcyB3aWRnZXQgaW4gbW0uIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnc2NyZWVubW13aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zY3JlZW52aXN1YWwoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBvbmUgb2YgdGhlIHN0cmluZ3MgZGlyZWN0Y29sb3IsIGdyYXlzY2FsZSwgcHNldWRvY29sb3IsCkBAIC05MzgsNyArOTQ0LDcgQEAKICAgICBkZWYgd2luZm9fc2NyZWVud2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIHBpeGVscyBvZiB0aGUgd2lkdGggb2YgdGhlIHNjcmVlbiBvZgogICAgICAgICB0aGlzIHdpZGdldCBpbiBwaXhlbC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdzY3JlZW53aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19zZXJ2ZXIoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpbmZvcm1hdGlvbiBvZiB0aGUgWC1TZXJ2ZXIgb2YgdGhlIHNjcmVlbiBvZiB0aGlzIHdpZGdldCBpbgpAQCAtOTUwLDcgKzk1Niw3IEBACiAgICAgICAgICAgICAnd2luZm8nLCAndG9wbGV2ZWwnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdmlld2FibGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSB3aWRnZXQgYW5kIGFsbCBpdHMgaGlnaGVyIGFuY2VzdG9ycyBhcmUgbWFwcGVkLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3ZpZXdhYmxlJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3Zpc3VhbChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIG9uZSBvZiB0aGUgc3RyaW5ncyBkaXJlY3Rjb2xvciwgZ3JheXNjYWxlLCBwc2V1ZG9jb2xvciwKQEAgLTk4MiwzNyArOTg4LDM3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgaGVpZ2h0IG9mIHRoZSB2aXJ0dWFsIHJvb3Qgd2luZG93IGFzc29jaWF0ZWQgd2l0aCB0aGlzCiAgICAgICAgIHdpZGdldCBpbiBwaXhlbHMuIElmIHRoZXJlIGlzIG5vIHZpcnR1YWwgcm9vdCB3aW5kb3cgcmV0dXJuIHRoZQogICAgICAgICBoZWlnaHQgb2YgdGhlIHNjcmVlbi4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2cm9vdGhlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb192cm9vdHdpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHdpZHRoIG9mIHRoZSB2aXJ0dWFsIHJvb3Qgd2luZG93IGFzc29jaWF0ZWQgd2l0aCB0aGlzCiAgICAgICAgIHdpZGdldCBpbiBwaXhlbC4gSWYgdGhlcmUgaXMgbm8gdmlydHVhbCByb290IHdpbmRvdyByZXR1cm4gdGhlCiAgICAgICAgIHdpZHRoIG9mIHRoZSBzY3JlZW4uIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndnJvb3R3aWR0aCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb192cm9vdHgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeCBvZmZzZXQgb2YgdGhlIHZpcnR1YWwgcm9vdCByZWxhdGl2ZSB0byB0aGUgcm9vdAogICAgICAgICB3aW5kb3cgb2YgdGhlIHNjcmVlbiBvZiB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2cm9vdHgnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9fdnJvb3R5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHkgb2Zmc2V0IG9mIHRoZSB2aXJ0dWFsIHJvb3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QKICAgICAgICAgd2luZG93IG9mIHRoZSBzY3JlZW4gb2YgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndnJvb3R5Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3dpZHRoKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHdpZHRoIG9mIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3dpZHRoJywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX3goc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgeCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGlzIHdpZGdldAogICAgICAgICBpbiB0aGUgcGFyZW50LiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3gnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9feShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoaXMgd2lkZ2V0CiAgICAgICAgIGluIHRoZSBwYXJlbnQuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAneScsIHNlbGYuX3cpKQogICAgIGRlZiB1cGRhdGUoc2VsZik6CiAgICAgICAgICIiIkVudGVyIGV2ZW50IGxvb3AgdW50aWwgYWxsIHBlbmRpbmcgZXZlbnRzIGhhdmUgYmVlbiBwcm9jZXNzZWQgYnkgVGNsLiIiIgpAQCAtMTEyOSwxMSArMTEzNSwxMSBAQAogICAgIGRlZiBfZ2V0aW50cyhzZWxmLCBzdHJpbmcpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgaWYgc3RyaW5nOgotICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChnZXRpbnQsIHNlbGYudGsuc3BsaXRsaXN0KHN0cmluZykpKQorICAgICAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChzZWxmLnRrLmdldGludCwgc2VsZi50ay5zcGxpdGxpc3Qoc3RyaW5nKSkpCiAgICAgZGVmIF9nZXRkb3VibGVzKHNlbGYsIHN0cmluZyk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgogICAgICAgICBpZiBzdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gdHVwbGUobWFwKGdldGRvdWJsZSwgc2VsZi50ay5zcGxpdGxpc3Qoc3RyaW5nKSkpCisgICAgICAgICAgICByZXR1cm4gdHVwbGUobWFwKHNlbGYudGsuZ2V0ZG91YmxlLCBzZWxmLnRrLnNwbGl0bGlzdChzdHJpbmcpKSkKICAgICBkZWYgX2dldGJvb2xlYW4oc2VsZiwgc3RyaW5nKToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCiAgICAgICAgIGlmIHN0cmluZzoKQEAgLTEyMzIsMTIgKzEyMzgsMTIgQEAKICAgICAgICAgaWYgbGVuKGFyZ3MpICE9IGxlbihzZWxmLl9zdWJzdF9mb3JtYXQpOiByZXR1cm4gYXJncwogICAgICAgICBnZXRib29sZWFuID0gc2VsZi50ay5nZXRib29sZWFuCiAKLSAgICAgICAgZ2V0aW50ID0gaW50CisgICAgICAgIGdldGludCA9IHNlbGYudGsuZ2V0aW50CiAgICAgICAgIGRlZiBnZXRpbnRfZXZlbnQocyk6CiAgICAgICAgICAgICAiIiJUayBjaGFuZ2VkIGJlaGF2aW9yIGluIDguNC4yLCByZXR1cm5pbmcgIj8/IiByYXRoZXIgbW9yZSBvZnRlbi4iIiIKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0aW50KHMpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFRjbEVycm9yKToKICAgICAgICAgICAgICAgICByZXR1cm4gcwogCiAgICAgICAgIG5zaWduLCBiLCBmLCBoLCBrLCBzLCB0LCB3LCB4LCB5LCBBLCBFLCBLLCBOLCBXLCBULCBYLCBZLCBEID0gYXJncwpAQCAtMTI4MSw3ICsxMjg3LDcgQEAKICAgICAgICAgZS55X3Jvb3QgPSBnZXRpbnRfZXZlbnQoWSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZS5kZWx0YSA9IGdldGludChEKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUY2xFcnJvcik6CiAgICAgICAgICAgICBlLmRlbHRhID0gMAogICAgICAgICByZXR1cm4gKGUsKQogICAgIGRlZiBfcmVwb3J0X2V4Y2VwdGlvbihzZWxmKToKQEAgLTEzMzYsNiArMTM0MiwxMSBAQAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHdpbmRvdyBwYXRoIG5hbWUgb2YgdGhpcyB3aWRnZXQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl93CisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPCVzLiVzIG9iamVjdCAlcz4nICUgKAorICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19tb2R1bGVfXywgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fLCBzZWxmLl93KQorCiAgICAgIyBQYWNrIG1ldGhvZHMgdGhhdCBhcHBseSB0byB0aGUgbWFzdGVyCiAgICAgX25vYXJnXyA9IFsnX25vYXJnXyddCiAgICAgZGVmIHBhY2tfcHJvcGFnYXRlKHNlbGYsIGZsYWc9X25vYXJnXyk6CkBAIC0xNDAxLDEwICsxNDEyLDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbm90IHN2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICBlbGlmICcuJyBpbiBzdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRkb3VibGUoc3ZhbHVlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoc3ZhbHVlKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRpbnQoc3ZhbHVlKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChzdmFsdWUpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFRjbEVycm9yKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJldHVybiB2YWx1ZQogCkBAIC0xODUwLDcgKzE4NjEsNyBAQAogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBiYXNlTmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pCiAgICAgICAgICAgICBiYXNlTmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChiYXNlTmFtZSkKLSAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcucHknLCAnLnB5YycsICcucHlvJyk6CisgICAgICAgICAgICBpZiBleHQgbm90IGluICgnLnB5JywgJy5weWMnKToKICAgICAgICAgICAgICAgICBiYXNlTmFtZSA9IGJhc2VOYW1lICsgZXh0CiAgICAgICAgIGludGVyYWN0aXZlID0gMAogICAgICAgICBzZWxmLnRrID0gX3RraW50ZXIuY3JlYXRlKHNjcmVlbk5hbWUsIGJhc2VOYW1lLCBjbGFzc05hbWUsIGludGVyYWN0aXZlLCB3YW50b2JqZWN0cywgdXNlVGssIHN5bmMsIHVzZSkKQEAgLTIxOTYsMjEgKzIyMDcsNiBAQAogICAgICAgICAiIiIKICAgICAgICAgV2lkZ2V0Ll9faW5pdF9fKHNlbGYsIG1hc3RlciwgJ2J1dHRvbicsIGNuZiwga3cpCiAKLSAgICBkZWYgdGtCdXR0b25FbnRlcihzZWxmLCAqZHVtbXkpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrQnV0dG9uRW50ZXInLCBzZWxmLl93KQotCi0gICAgZGVmIHRrQnV0dG9uTGVhdmUoc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvbkxlYXZlJywgc2VsZi5fdykKLQotICAgIGRlZiB0a0J1dHRvbkRvd24oc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvbkRvd24nLCBzZWxmLl93KQotCi0gICAgZGVmIHRrQnV0dG9uVXAoc2VsZiwgKmR1bW15KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a0J1dHRvblVwJywgc2VsZi5fdykKLQotICAgIGRlZiB0a0J1dHRvbkludm9rZShzZWxmLCAqZHVtbXkpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrQnV0dG9uSW52b2tlJywgc2VsZi5fdykKLQogICAgIGRlZiBmbGFzaChzZWxmKToKICAgICAgICAgIiIiRmxhc2ggdGhlIGJ1dHRvbi4KIApAQCAtMjI5NywxNyArMjI5MywxNyBAQAogICAgIGRlZiBjYW52YXN4KHNlbGYsIHNjcmVlbngsIGdyaWRzcGFjaW5nPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNhbnZhcyB4IGNvb3JkaW5hdGUgb2YgcGl4ZWwgcG9zaXRpb24gU0NSRUVOWCByb3VuZGVkCiAgICAgICAgIHRvIG5lYXJlc3QgbXVsdGlwbGUgb2YgR1JJRFNQQUNJTkcgdW5pdHMuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ2NhbnZhc3gnLCBzY3JlZW54LCBncmlkc3BhY2luZykpCiAgICAgZGVmIGNhbnZhc3koc2VsZiwgc2NyZWVueSwgZ3JpZHNwYWNpbmc9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY2FudmFzIHkgY29vcmRpbmF0ZSBvZiBwaXhlbCBwb3NpdGlvbiBTQ1JFRU5ZIHJvdW5kZWQKICAgICAgICAgdG8gbmVhcmVzdCBtdWx0aXBsZSBvZiBHUklEU1BBQ0lORyB1bml0cy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZShzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZShzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICBzZWxmLl93LCAnY2FudmFzeScsIHNjcmVlbnksIGdyaWRzcGFjaW5nKSkKICAgICBkZWYgY29vcmRzKHNlbGYsICphcmdzKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb29yZGluYXRlcyBmb3IgdGhlIGl0ZW0gZ2l2ZW4gaW4gQVJHUy4iIiIKICAgICAgICAgIyBYWFggU2hvdWxkIHVzZSBfZmxhdHRlbiBvbiBhcmdzCi0gICAgICAgIHJldHVybiBbZ2V0ZG91YmxlKHgpIGZvciB4IGluCisgICAgICAgIHJldHVybiBbc2VsZi50ay5nZXRkb3VibGUoeCkgZm9yIHggaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGsuc3BsaXRsaXN0KAogICAgICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ2Nvb3JkcycpICsgYXJncykpXQogICAgIGRlZiBfY3JlYXRlKHNlbGYsIGl0ZW1UeXBlLCBhcmdzLCBrdyk6ICMgQXJnczogKHZhbCwgdmFsLCAuLi4sIGNuZj17fSkKQEAgLTIzMTgsNyArMjMxNCw3IEBACiAgICAgICAgICAgICBhcmdzID0gYXJnc1s6LTFdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjbmYgPSB7fQotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICdjcmVhdGUnLCBpdGVtVHlwZSwKICAgICAgICAgICAgICooYXJncyArIHNlbGYuX29wdGlvbnMoY25mLCBrdykpKSkKICAgICBkZWYgY3JlYXRlX2FyYyhzZWxmLCAqYXJncywgKiprdyk6CkBAIC0yNDAyLDcgKzIzOTgsNyBAQAogICAgICAgICBzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdpY3Vyc29yJykgKyBhcmdzKQogICAgIGRlZiBpbmRleChzZWxmLCAqYXJncyk6CiAgICAgICAgICIiIlJldHVybiBwb3NpdGlvbiBvZiBjdXJzb3IgYXMgaW50ZWdlciBpbiBpdGVtIHNwZWNpZmllZCBpbiBBUkdTLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ2luZGV4JykgKyBhcmdzKSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgoc2VsZi5fdywgJ2luZGV4JykgKyBhcmdzKSkKICAgICBkZWYgaW5zZXJ0KHNlbGYsICphcmdzKToKICAgICAgICAgIiIiSW5zZXJ0IFRFWFQgaW4gaXRlbSBUQUdPUklEIGF0IHBvc2l0aW9uIFBPUy4gQVJHUyBtdXN0CiAgICAgICAgIGJlIFRBR09SSUQgUE9TIFRFWFQuIiIiCkBAIC0yNTI4LDcgKzI1MjQsNyBAQAogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2ljdXJzb3InLCBpbmRleCkKICAgICBkZWYgaW5kZXgoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJSZXR1cm4gcG9zaXRpb24gb2YgY3Vyc29yLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICdpbmRleCcsIGluZGV4KSkKICAgICBkZWYgaW5zZXJ0KHNlbGYsIGluZGV4LCBzdHJpbmcpOgogICAgICAgICAiIiJJbnNlcnQgU1RSSU5HIGF0IElOREVYLiIiIgpAQCAtMjY0MywxMyArMjYzOSwxMyBAQAogICAgICAgICAiIiJSZXR1cm4gaW5kZXggb2YgaXRlbSBpZGVudGlmaWVkIHdpdGggSU5ERVguIiIiCiAgICAgICAgIGkgPSBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2luZGV4JywgaW5kZXgpCiAgICAgICAgIGlmIGkgPT0gJ25vbmUnOiByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gZ2V0aW50KGkpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChpKQogICAgIGRlZiBpbnNlcnQoc2VsZiwgaW5kZXgsICplbGVtZW50cyk6CiAgICAgICAgICIiIkluc2VydCBFTEVNRU5UUyBhdCBJTkRFWC4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKChzZWxmLl93LCAnaW5zZXJ0JywgaW5kZXgpICsgZWxlbWVudHMpCiAgICAgZGVmIG5lYXJlc3Qoc2VsZiwgeSk6CiAgICAgICAgICIiIkdldCBpbmRleCBvZiBpdGVtIHdoaWNoIGlzIG5lYXJlc3QgdG8geSBjb29yZGluYXRlIFkuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgc2VsZi5fdywgJ25lYXJlc3QnLCB5KSkKICAgICBkZWYgc2Nhbl9tYXJrKHNlbGYsIHgsIHkpOgogICAgICAgICAiIiJSZW1lbWJlciB0aGUgY3VycmVudCBYLCBZIGNvb3JkaW5hdGVzLiIiIgpAQCAtMjY4Myw3ICsyNjc5LDcgQEAKICAgICBzZWxlY3Rfc2V0ID0gc2VsZWN0aW9uX3NldAogICAgIGRlZiBzaXplKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdGJveC4iIiIKLSAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnKSkKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2l6ZScpKQogICAgIGRlZiBpdGVtY2dldChzZWxmLCBpbmRleCwgb3B0aW9uKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSByZXNvdXJjZSB2YWx1ZSBmb3IgYW4gSVRFTSBhbmQgYW4gT1BUSU9OLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKApAQCAtMjcwOSwzNSArMjcwNSwxNSBAQAogICAgICAgICBkaXNhYmxlZGZvcmVncm91bmQsIGZnLCBmb250LCBmb3JlZ3JvdW5kLCBwb3N0Y29tbWFuZCwgcmVsaWVmLAogICAgICAgICBzZWxlY3Rjb2xvciwgdGFrZWZvY3VzLCB0ZWFyb2ZmLCB0ZWFyb2ZmY29tbWFuZCwgdGl0bGUsIHR5cGUuIiIiCiAgICAgICAgIFdpZGdldC5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICdtZW51JywgY25mLCBrdykKKyAgICBkZWYgdGtfcG9wdXAoc2VsZiwgeCwgeSwgZW50cnk9IiIpOgorICAgICAgICAiIiJQb3N0IHRoZSBtZW51IGF0IHBvc2l0aW9uIFgsWSB3aXRoIGVudHJ5IEVOVFJZLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3BvcHVwJywgc2VsZi5fdywgeCwgeSwgZW50cnkpCiAgICAgZGVmIHRrX2JpbmRGb3JUcmF2ZXJzYWwoc2VsZik6CiAgICAgICAgICMgb2Jzb2xldGUgc2luY2UgVGsgNC4wCiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICB3YXJuaW5ncy53YXJuKCd0a19iaW5kRm9yVHJhdmVyc2FsKCkgZG9lcyBub3RoaW5nIGFuZCAnCiAgICAgICAgICAgICAgICAgICAgICAgJ3dpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIGRlZiB0a19tYlBvc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfbWJQb3N0Jywgc2VsZi5fdykKLSAgICBkZWYgdGtfbWJVbnBvc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfbWJVbnBvc3QnKQotICAgIGRlZiB0a190cmF2ZXJzZVRvTWVudShzZWxmLCBjaGFyKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190cmF2ZXJzZVRvTWVudScsIHNlbGYuX3csIGNoYXIpCi0gICAgZGVmIHRrX3RyYXZlcnNlV2l0aGluTWVudShzZWxmLCBjaGFyKToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190cmF2ZXJzZVdpdGhpbk1lbnUnLCBzZWxmLl93LCBjaGFyKQotICAgIGRlZiB0a19nZXRNZW51QnV0dG9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgndGtfZ2V0TWVudUJ1dHRvbnMnLCBzZWxmLl93KQotICAgIGRlZiB0a19uZXh0TWVudShzZWxmLCBjb3VudCk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfbmV4dE1lbnUnLCBjb3VudCkKLSAgICBkZWYgdGtfbmV4dE1lbnVFbnRyeShzZWxmLCBjb3VudCk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfbmV4dE1lbnVFbnRyeScsIGNvdW50KQotICAgIGRlZiB0a19pbnZva2VNZW51KHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX2ludm9rZU1lbnUnLCBzZWxmLl93KQotICAgIGRlZiB0a19maXJzdE1lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfZmlyc3RNZW51Jywgc2VsZi5fdykKLSAgICBkZWYgdGtfbWJCdXR0b25Eb3duKHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX21iQnV0dG9uRG93bicsIHNlbGYuX3cpCi0gICAgZGVmIHRrX3BvcHVwKHNlbGYsIHgsIHksIGVudHJ5PSIiKToKLSAgICAgICAgIiIiUG9zdCB0aGUgbWVudSBhdCBwb3NpdGlvbiBYLFkgd2l0aCBlbnRyeSBFTlRSWS4iIiIKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a19wb3B1cCcsIHNlbGYuX3csIHgsIHksIGVudHJ5KQogICAgIGRlZiBhY3RpdmF0ZShzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIkFjdGl2YXRlIGVudHJ5IGF0IElOREVYLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2FjdGl2YXRlJywgaW5kZXgpCkBAIC0yODA1LDcgKzI3ODEsNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGluZGV4IG9mIGEgbWVudSBpdGVtIGlkZW50aWZpZWQgYnkgSU5ERVguIiIiCiAgICAgICAgIGkgPSBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2luZGV4JywgaW5kZXgpCiAgICAgICAgIGlmIGkgPT0gJ25vbmUnOiByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gZ2V0aW50KGkpCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludChpKQogICAgIGRlZiBpbnZva2Uoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJJbnZva2UgYSBtZW51IGl0ZW0gaWRlbnRpZmllZCBieSBJTkRFWCBhbmQgZXhlY3V0ZQogICAgICAgICB0aGUgYXNzb2NpYXRlZCBjb21tYW5kLiIiIgpAQCAtMjgyMiwxMCArMjc5OCwxMCBAQAogICAgIGRlZiB4cG9zaXRpb24oc2VsZiwgaW5kZXgpOiAjIG5ldyBpbiBUayA4LjUKICAgICAgICAgIiIiUmV0dXJuIHRoZSB4LXBvc2l0aW9uIG9mIHRoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtCiAgICAgICAgIGF0IElOREVYLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbChzZWxmLl93LCAneHBvc2l0aW9uJywgaW5kZXgpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoc2VsZi50ay5jYWxsKHNlbGYuX3csICd4cG9zaXRpb24nLCBpbmRleCkpCiAgICAgZGVmIHlwb3NpdGlvbihzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgeS1wb3NpdGlvbiBvZiB0aGUgdG9wbW9zdCBwaXhlbCBvZiB0aGUgbWVudSBpdGVtIGF0IElOREVYLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICd5cG9zaXRpb24nLCBpbmRleCkpCiAKIGNsYXNzIE1lbnVidXR0b24oV2lkZ2V0KToKQEAgLTI4ODEsOSArMjg1Nyw5IEBACiAgICAgICAgICIiIkdldCB0aGUgY3VycmVudCB2YWx1ZSBhcyBpbnRlZ2VyIG9yIGZsb2F0LiIiIgogICAgICAgICB2YWx1ZSA9IHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0JykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGdldGludCh2YWx1ZSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0ZG91YmxlKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KHZhbHVlKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFRjbEVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGRvdWJsZSh2YWx1ZSkKICAgICBkZWYgc2V0KHNlbGYsIHZhbHVlKToKICAgICAgICAgIiIiU2V0IHRoZSB2YWx1ZSB0byBWQUxVRS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdzZXQnLCB2YWx1ZSkKQEAgLTI5MTAsMTkgKzI4ODYsMjMgQEAKICAgICAgICAgcmVsaWVmLCByZXBlYXRkZWxheSwgcmVwZWF0aW50ZXJ2YWwsIHRha2Vmb2N1cywKICAgICAgICAgdHJvdWdoY29sb3IsIHdpZHRoLiIiIgogICAgICAgICBXaWRnZXQuX19pbml0X18oc2VsZiwgbWFzdGVyLCAnc2Nyb2xsYmFyJywgY25mLCBrdykKLSAgICBkZWYgYWN0aXZhdGUoc2VsZiwgaW5kZXgpOgotICAgICAgICAiIiJEaXNwbGF5IHRoZSBlbGVtZW50IGF0IElOREVYIHdpdGggYWN0aXZlYmFja2dyb3VuZCBhbmQgYWN0aXZlcmVsaWVmLgotICAgICAgICBJTkRFWCBjYW4gYmUgImFycm93MSIsInNsaWRlciIgb3IgImFycm93MiIuIiIiCi0gICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKKyAgICBkZWYgYWN0aXZhdGUoc2VsZiwgaW5kZXg9Tm9uZSk6CisgICAgICAgICIiIk1hcmtzIHRoZSBlbGVtZW50IGluZGljYXRlZCBieSBpbmRleCBhcyBhY3RpdmUuCisgICAgICAgIFRoZSBvbmx5IGluZGV4IHZhbHVlcyB1bmRlcnN0b29kIGJ5IHRoaXMgbWV0aG9kIGFyZSAiYXJyb3cxIiwKKyAgICAgICAgInNsaWRlciIsIG9yICJhcnJvdzIiLiAgSWYgYW55IG90aGVyIHZhbHVlIGlzIHNwZWNpZmllZCB0aGVuIG5vCisgICAgICAgIGVsZW1lbnQgb2YgdGhlIHNjcm9sbGJhciB3aWxsIGJlIGFjdGl2ZS4gIElmIGluZGV4IGlzIG5vdCBzcGVjaWZpZWQsCisgICAgICAgIHRoZSBtZXRob2QgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZWxlbWVudCB0aGF0IGlzIGN1cnJlbnRseSBhY3RpdmUsCisgICAgICAgIG9yIE5vbmUgaWYgbm8gZWxlbWVudCBpcyBhY3RpdmUuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2FjdGl2YXRlJywgaW5kZXgpIG9yIE5vbmUKICAgICBkZWYgZGVsdGEoc2VsZiwgZGVsdGF4LCBkZWx0YXkpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGZyYWN0aW9uYWwgY2hhbmdlIG9mIHRoZSBzY3JvbGxiYXIgc2V0dGluZyBpZiBpdAogICAgICAgICB3b3VsZCBiZSBtb3ZlZCBieSBERUxUQVggb3IgREVMVEFZIHBpeGVscy4iIiIKLSAgICAgICAgcmV0dXJuIGdldGRvdWJsZSgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0ZG91YmxlKAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdkZWx0YScsIGRlbHRheCwgZGVsdGF5KSkKICAgICBkZWYgZnJhY3Rpb24oc2VsZiwgeCwgeSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgZnJhY3Rpb25hbCB2YWx1ZSB3aGljaCBjb3JyZXNwb25kcyB0byBhIHNsaWRlcgogICAgICAgICBwb3NpdGlvbiBvZiBYLFkuIiIiCi0gICAgICAgIHJldHVybiBnZXRkb3VibGUoc2VsZi50ay5jYWxsKHNlbGYuX3csICdmcmFjdGlvbicsIHgsIHkpKQorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRkb3VibGUoc2VsZi50ay5jYWxsKHNlbGYuX3csICdmcmFjdGlvbicsIHgsIHkpKQogICAgIGRlZiBpZGVudGlmeShzZWxmLCB4LCB5KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBlbGVtZW50IHVuZGVyIHBvc2l0aW9uIFgsWSBhcyBvbmUgb2YKICAgICAgICAgImFycm93MSIsInNsaWRlciIsImFycm93MiIgb3IgIiIuIiIiCkBAIC0yOTMxLDEwICsyOTExLDEwIEBACiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBmcmFjdGlvbmFsIHZhbHVlcyAodXBwZXIgYW5kIGxvd2VyIGVuZCkKICAgICAgICAgb2YgdGhlIHNsaWRlciBwb3NpdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2dldGRvdWJsZXMoc2VsZi50ay5jYWxsKHNlbGYuX3csICdnZXQnKSkKLSAgICBkZWYgc2V0KHNlbGYsICphcmdzKToKKyAgICBkZWYgc2V0KHNlbGYsIGZpcnN0LCBsYXN0KToKICAgICAgICAgIiIiU2V0IHRoZSBmcmFjdGlvbmFsIHZhbHVlcyBvZiB0aGUgc2xpZGVyIHBvc2l0aW9uICh1cHBlciBhbmQKICAgICAgICAgbG93ZXIgZW5kcyBhcyB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEpLiIiIgotICAgICAgICBzZWxmLnRrLmNhbGwoKHNlbGYuX3csICdzZXQnKSArIGFyZ3MpCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2V0JywgZmlyc3QsIGxhc3QpCiAKIAogCkBAIC0yOTY5LDE0ICsyOTQ5LDYgQEAKICAgICAgICAgYm94IG9mIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gaW5kZXguIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9nZXRpbnRzKAogICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYmJveCcsIGluZGV4KSkgb3IgTm9uZQotICAgIGRlZiB0a190ZXh0U2VsZWN0VG8oc2VsZiwgaW5kZXgpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RleHRTZWxlY3RUbycsIHNlbGYuX3csIGluZGV4KQotICAgIGRlZiB0a190ZXh0QmFja3NwYWNlKHNlbGYpOgotICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3RleHRCYWNrc3BhY2UnLCBzZWxmLl93KQotICAgIGRlZiB0a190ZXh0SW5kZXhDbG9zZXIoc2VsZiwgYSwgYiwgYyk6Ci0gICAgICAgIHNlbGYudGsuY2FsbCgndGtfdGV4dEluZGV4Q2xvc2VyJywgc2VsZi5fdywgYSwgYiwgYykKLSAgICBkZWYgdGtfdGV4dFJlc2V0QW5jaG9yKHNlbGYsIGluZGV4KToKLSAgICAgICAgc2VsZi50ay5jYWxsKCd0a190ZXh0UmVzZXRBbmNob3InLCBzZWxmLl93LCBpbmRleCkKICAgICBkZWYgY29tcGFyZShzZWxmLCBpbmRleDEsIG9wLCBpbmRleDIpOgogICAgICAgICAiIiJSZXR1cm4gd2hldGhlciBiZXR3ZWVuIGluZGV4IElOREVYMSBhbmQgaW5kZXggSU5ERVgyIHRoZQogICAgICAgICByZWxhdGlvbiBPUCBpcyBzYXRpc2ZpZWQuIE9QIGlzIG9uZSBvZiA8LCA8PSwgPT0sID49LCA+LCBvciAhPS4iIiIKQEAgLTM0MDEsMTQgKzMzNzMsMTQgQEAKICAgICBjb25maWcgPSBjb25maWd1cmUKICAgICBkZWYgaGVpZ2h0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2UuIiIiCi0gICAgICAgIHJldHVybiBnZXRpbnQoCisgICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnaW1hZ2UnLCAnaGVpZ2h0Jywgc2VsZi5uYW1lKSkKICAgICBkZWYgdHlwZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBpbWdhZ2UsIGUuZy4gInBob3RvIiBvciAiYml0bWFwIi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnaW1hZ2UnLCAndHlwZScsIHNlbGYubmFtZSkKICAgICBkZWYgd2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgd2lkdGggb2YgdGhlIGltYWdlLiIiIgotICAgICAgICByZXR1cm4gZ2V0aW50KAorICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ2ltYWdlJywgJ3dpZHRoJywgc2VsZi5uYW1lKSkKIAogY2xhc3MgUGhvdG9JbWFnZShJbWFnZSk6CkBAIC0zODU0LDM1ICszODI2LDEyIEBACiAgICAgICAgICIiIlJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mIHRoZSBjaGlsZCBwYW5lcy4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFuZXMnKSkKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBFeHRlbnNpb25zOgotCi1jbGFzcyBTdHVkYnV0dG9uKEJ1dHRvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCBjbmY9e30sICoqa3cpOgotICAgICAgICBXaWRnZXQuX19pbml0X18oc2VsZiwgbWFzdGVyLCAnc3R1ZGJ1dHRvbicsIGNuZiwga3cpCi0gICAgICAgIHNlbGYuYmluZCgnPEFueS1FbnRlcj4nLCAgICAgICBzZWxmLnRrQnV0dG9uRW50ZXIpCi0gICAgICAgIHNlbGYuYmluZCgnPEFueS1MZWF2ZT4nLCAgICAgICBzZWxmLnRrQnV0dG9uTGVhdmUpCi0gICAgICAgIHNlbGYuYmluZCgnPDE+JywgICAgICAgICAgICAgICBzZWxmLnRrQnV0dG9uRG93bikKLSAgICAgICAgc2VsZi5iaW5kKCc8QnV0dG9uUmVsZWFzZS0xPicsIHNlbGYudGtCdXR0b25VcCkKLQotY2xhc3MgVHJpYnV0dG9uKEJ1dHRvbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCBjbmY9e30sICoqa3cpOgotICAgICAgICBXaWRnZXQuX19pbml0X18oc2VsZiwgbWFzdGVyLCAndHJpYnV0dG9uJywgY25mLCBrdykKLSAgICAgICAgc2VsZi5iaW5kKCc8QW55LUVudGVyPicsICAgICAgIHNlbGYudGtCdXR0b25FbnRlcikKLSAgICAgICAgc2VsZi5iaW5kKCc8QW55LUxlYXZlPicsICAgICAgIHNlbGYudGtCdXR0b25MZWF2ZSkKLSAgICAgICAgc2VsZi5iaW5kKCc8MT4nLCAgICAgICAgICAgICAgIHNlbGYudGtCdXR0b25Eb3duKQotICAgICAgICBzZWxmLmJpbmQoJzxCdXR0b25SZWxlYXNlLTE+Jywgc2VsZi50a0J1dHRvblVwKQotICAgICAgICBzZWxmWydmZyddICAgICAgICAgICAgICAgPSBzZWxmWydiZyddCi0gICAgICAgIHNlbGZbJ2FjdGl2ZWJhY2tncm91bmQnXSA9IHNlbGZbJ2JnJ10KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0OgogCiBkZWYgX3Rlc3QoKToKICAgICByb290ID0gVGsoKQogICAgIHRleHQgPSAiVGhpcyBpcyBUY2wvVGsgdmVyc2lvbiAlcyIgJSBUY2xWZXJzaW9uCi0gICAgaWYgVGNsVmVyc2lvbiA+PSA4LjE6Ci0gICAgICAgIHRleHQgKz0gIlxuVGhpcyBzaG91bGQgYmUgYSBjZWRpbGxhOiBceGU3IgorICAgIHRleHQgKz0gIlxuVGhpcyBzaG91bGQgYmUgYSBjZWRpbGxhOiBceGU3IgogICAgIGxhYmVsID0gTGFiZWwocm9vdCwgdGV4dD10ZXh0KQogICAgIGxhYmVsLnBhY2soKQogICAgIHRlc3QgPSBCdXR0b24ocm9vdCwgdGV4dD0iQ2xpY2sgbWUhIiwKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19maXgucHkgYi9MaWIvdGtpbnRlci9fZml4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTg4NzM0Li4wMDAwMDAwCi0tLSBhL0xpYi90a2ludGVyL19maXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1pbXBvcnQgc3lzLCBvcwotCi0jIERlbGF5IGltcG9ydCBfdGtpbnRlciB1bnRpbCB3ZSBoYXZlIHNldCBUQ0xfTElCUkFSWSwKLSMgc28gdGhhdCBUY2xfRmluZEV4ZWN1dGFibGUgaGFzIGEgY2hhbmNlIHRvIGxvY2F0ZSBpdHMKLSMgZW5jb2RpbmcgZGlyZWN0b3J5LgotCi0jIFVuZm9ydHVuYXRlbHksIHdlIGNhbm5vdCBrbm93IHRoZSBUQ0xfTElCUkFSWSBkaXJlY3RvcnkKLSMgaWYgd2UgZG9uJ3Qga25vdyB0aGUgdGNsIHZlcnNpb24sIHdoaWNoIHdlIGNhbm5vdCBmaW5kIG91dAotIyB3aXRob3V0IGltcG9ydCBUY2wuIEZvcnR1bmF0ZWx5LCBUY2wgd2lsbCBpdHNlbGYgbG9vayBpbgotIyA8VENMX0xJQlJBUlk+XC4uXHRjbDxUQ0xfVkVSU0lPTj4sIHNvIGFueXRoaW5nIGNsb3NlIHRvCi0jIHRoZSByZWFsIFRjbCBsaWJyYXJ5IHdpbGwgZG8uCi0KLSMgRXhwYW5kIHN5bWJvbGljIGxpbmtzIG9uIFZpc3RhCi10cnk6Ci0gICAgaW1wb3J0IGN0eXBlcwotICAgIGN0eXBlcy53aW5kbGwua2VybmVsMzIuR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVwotZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgotICAgIGRlZiBjb252ZXJ0X3BhdGgocyk6Ci0gICAgICAgIHJldHVybiBzCi1lbHNlOgotICAgIGRlZiBjb252ZXJ0X3BhdGgocyk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgotICAgICAgICAgICAgcyA9IHMuZGVjb2RlKCJtYmNzIikKLSAgICAgICAgaGRpciA9IGN0eXBlcy53aW5kbGwua2VybmVsMzIuXAotICAgICAgICAgICAgQ3JlYXRlRmlsZVcocywgMHg4MCwgICAgIyBGSUxFX1JFQURfQVRUUklCVVRFUwotICAgICAgICAgICAgICAgICAgICAgICAgMSwgICAgICAgICAgIyBGSUxFX1NIQVJFX1JFQUQKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIDMsICAgICMgT1BFTl9FWElTVElORwotICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAwMDAwMCwgIyBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUwotICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKLSAgICAgICAgaWYgaGRpciA9PSAtMToKLSAgICAgICAgICAgICMgQ2Fubm90IG9wZW4gZGlyZWN0b3J5LCBnaXZlIHVwCi0gICAgICAgICAgICByZXR1cm4gcwotICAgICAgICBidWYgPSBjdHlwZXMuY3JlYXRlX3VuaWNvZGVfYnVmZmVyKCIiLCAzMjc2OCkKLSAgICAgICAgcmVzID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5cCi0gICAgICAgICAgICBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkaXIsIGJ1ZiwgbGVuKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApICMgVk9MVU1FX05BTUVfRE9TCi0gICAgICAgIGN0eXBlcy53aW5kbGwua2VybmVsMzIuQ2xvc2VIYW5kbGUoaGRpcikKLSAgICAgICAgaWYgcmVzID09IDA6Ci0gICAgICAgICAgICAjIENvbnZlcnNpb24gZmFpbGVkIChlLmcuIG5ldHdvcmsgbG9jYXRpb24pCi0gICAgICAgICAgICByZXR1cm4gcwotICAgICAgICBzID0gYnVmWzpyZXNdCi0gICAgICAgICMgSWdub3JlIGxlYWRpbmcgXFw/XAotICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoIlxcXFw/XFwiKToKLSAgICAgICAgICAgIHMgPSBzWzQ6XQotICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoIlVOQyIpOgotICAgICAgICAgICAgcyA9ICJcXCIgKyBzWzM6XQotICAgICAgICByZXR1cm4gcwotCi1wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCJ0Y2wiKQotaWYgbm90IG9zLnBhdGguZXhpc3RzKHByZWZpeCk6Ci0gICAgIyBkZXZkaXIvZXh0ZXJuYWxzL3RjbHRrL2xpYgotICAgIHByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICJleHRlcm5hbHMiLCAidGNsdGsiLCAibGliIikKLSAgICBwcmVmaXggPSBvcy5wYXRoLmFic3BhdGgocHJlZml4KQotIyBpZiB0aGlzIGRvZXMgbm90IGV4aXN0LCBubyBmdXJ0aGVyIHNlYXJjaCBpcyBuZWVkZWQKLWlmIG9zLnBhdGguZXhpc3RzKHByZWZpeCk6Ci0gICAgcHJlZml4ID0gY29udmVydF9wYXRoKHByZWZpeCkKLSAgICBpZiAiVENMX0xJQlJBUlkiIG5vdCBpbiBvcy5lbnZpcm9uOgotICAgICAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHByZWZpeCk6Ci0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoInRjbCIpOgotICAgICAgICAgICAgICAgIHRjbGRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHRjbGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlRDTF9MSUJSQVJZIl0gPSB0Y2xkaXIKLSAgICAjIENvbXB1dGUgVEtfTElCUkFSWSwga25vd2luZyB0aGF0IGl0IGhhcyB0aGUgc2FtZSB2ZXJzaW9uCi0gICAgIyBhcyBUY2wKLSAgICBpbXBvcnQgX3RraW50ZXIKLSAgICB2ZXIgPSBzdHIoX3RraW50ZXIuVENMX1ZFUlNJT04pCi0gICAgaWYgIlRLX0xJQlJBUlkiIG5vdCBpbiBvcy5lbnZpcm9uOgotICAgICAgICB2ID0gb3MucGF0aC5qb2luKHByZWZpeCwgJ3RrJyt2ZXIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih2LCAidGNsSW5kZXgiKSk6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWydUS19MSUJSQVJZJ10gPSB2Ci0gICAgIyBXZSBkb24ndCBrbm93IHRoZSBUaXggdmVyc2lvbiwgc28gd2UgbXVzdCBzZWFyY2ggdGhlIGVudGlyZQotICAgICMgZGlyZWN0b3J5Ci0gICAgaWYgIlRJWF9MSUJSQVJZIiBub3QgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihwcmVmaXgpOgotICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJ0aXgiKToKLSAgICAgICAgICAgICAgICB0aXhkaXIgPSBvcy5wYXRoLmpvaW4ocHJlZml4LG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcih0aXhkaXIpOgotICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWyJUSVhfTElCUkFSWSJdID0gdGl4ZGlyCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9mb250LnB5IGIvTGliL3RraW50ZXIvZm9udC5weQppbmRleCBiOTY2NzMyLi4xMzY0MjU3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9mb250LnB5CisrKyBiL0xpYi90a2ludGVyL2ZvbnQucHkKQEAgLTExMiw4ICsxMTIsNiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlbGV0ZV9mb250OgogICAgICAgICAgICAgICAgIHNlbGYuX2NhbGwoImZvbnQiLCAiZGVsZXRlIiwgc2VsZi5uYW1lKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBwYXNzCiAKQEAgLTE1Myw3ICsxNTEsNyBAQAogICAgICAgICBhcmdzID0gKHRleHQsKQogICAgICAgICBpZiBkaXNwbGF5b2Y6CiAgICAgICAgICAgICBhcmdzID0gKCctZGlzcGxheW9mJywgZGlzcGxheW9mLCB0ZXh0KQotICAgICAgICByZXR1cm4gaW50KHNlbGYuX2NhbGwoImZvbnQiLCAibWVhc3VyZSIsIHNlbGYubmFtZSwgKmFyZ3MpKQorICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0aW50KHNlbGYuX2NhbGwoImZvbnQiLCAibWVhc3VyZSIsIHNlbGYubmFtZSwgKmFyZ3MpKQogCiAgICAgZGVmIG1ldHJpY3Moc2VsZiwgKm9wdGlvbnMsICoqa3cpOgogICAgICAgICAiIiJSZXR1cm4gZm9udCBtZXRyaWNzLgpAQCAtMTY2LDEzICsxNjQsMTMgQEAKICAgICAgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YpCiAgICAgICAgIGlmIG9wdGlvbnM6CiAgICAgICAgICAgICBhcmdzID0gYXJncyArIHNlbGYuX2dldChvcHRpb25zKQotICAgICAgICAgICAgcmV0dXJuIGludCgKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRpbnQoCiAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCAqYXJncykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXMgPSBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsICphcmdzKSkKICAgICAgICAgICAgIG9wdGlvbnMgPSB7fQogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHJlcyksIDIpOgotICAgICAgICAgICAgICAgIG9wdGlvbnNbcmVzW2ldWzE6XV0gPSBpbnQocmVzW2krMV0pCisgICAgICAgICAgICAgICAgb3B0aW9uc1tyZXNbaV1bMTpdXSA9IHNlbGYuX3RrLmdldGludChyZXNbaSsxXSkKICAgICAgICAgICAgIHJldHVybiBvcHRpb25zCiAKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvc2ltcGxlZGlhbG9nLnB5IGIvTGliL3RraW50ZXIvc2ltcGxlZGlhbG9nLnB5CmluZGV4IDQ1MzAyYjQuLmE5NWY1NTEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3NpbXBsZWRpYWxvZy5weQorKysgYi9MaWIvdGtpbnRlci9zaW1wbGVkaWFsb2cucHkKQEAgLTMyNSw3ICszMjUsNyBAQAogY2xhc3MgX1F1ZXJ5SW50ZWdlcihfUXVlcnlEaWFsb2cpOgogICAgIGVycm9ybWVzc2FnZSA9ICJOb3QgYW4gaW50ZWdlci4iCiAgICAgZGVmIGdldHJlc3VsdChzZWxmKToKLSAgICAgICAgcmV0dXJuIGludChzZWxmLmVudHJ5LmdldCgpKQorICAgICAgICByZXR1cm4gc2VsZi5nZXRpbnQoc2VsZi5lbnRyeS5nZXQoKSkKIAogZGVmIGFza2ludGVnZXIodGl0bGUsIHByb21wdCwgKiprdyk6CiAgICAgJycnZ2V0IGFuIGludGVnZXIgZnJvbSB0aGUgdXNlcgpAQCAtMzQ0LDcgKzM0NCw3IEBACiBjbGFzcyBfUXVlcnlGbG9hdChfUXVlcnlEaWFsb2cpOgogICAgIGVycm9ybWVzc2FnZSA9ICJOb3QgYSBmbG9hdGluZyBwb2ludCB2YWx1ZS4iCiAgICAgZGVmIGdldHJlc3VsdChzZWxmKToKLSAgICAgICAgcmV0dXJuIGZsb2F0KHNlbGYuZW50cnkuZ2V0KCkpCisgICAgICAgIHJldHVybiBzZWxmLmdldGRvdWJsZShzZWxmLmVudHJ5LmdldCgpKQogCiBkZWYgYXNrZmxvYXQodGl0bGUsIHByb21wdCwgKiprdyk6CiAgICAgJycnZ2V0IGEgZmxvYXQgZnJvbSB0aGUgdXNlcgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5IGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CmluZGV4IGNjYjM3NTUuLmRiZTVlODggMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKQEAgLTE2LDcgKzE2LDcgQEAKIAogZGVmIGlzX3BhY2thZ2UocGF0aCk6CiAgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihwYXRoKToKLSAgICAgICAgaWYgbmFtZSBpbiAoJ19faW5pdF9fLnB5JywgJ19faW5pdF9fLnB5YycsICdfX2luaXQucHlvJyk6CisgICAgICAgIGlmIG5hbWUgaW4gKCdfX2luaXRfXy5weScsICdfX2luaXRfXy5weWMnKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCiAKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQppbmRleCBkOGRlOTQ5Li44NWVlMmM3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CkBAIC03LDYgKzcsMTEgQEAKIAogY2xhc3MgTWlzY1Rlc3QoQWJzdHJhY3RUa1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHQgPSB0a2ludGVyLlRvcGxldmVsKHNlbGYucm9vdCwgbmFtZT0ndG9wJykKKyAgICAgICAgZiA9IHRraW50ZXIuRnJhbWUodCwgbmFtZT0nY2hpbGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICc8dGtpbnRlci5GcmFtZSBvYmplY3QgLnRvcC5jaGlsZD4nKQorCiAgICAgZGVmIHRlc3RfdGtfc2V0UGFsZXR0ZShzZWxmKToKICAgICAgICAgcm9vdCA9IHNlbGYucm9vdAogICAgICAgICByb290LnRrX3NldFBhbGV0dGUoJ2JsYWNrJykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKaW5kZXggNGI3Mjk0My4uYWJkY2U5NiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKQEAgLTEyMiwxMCArMTIyLDEwIEBACiAgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZShzZWxmKToKICAgICAgICAgdiA9IEludFZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQogICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgVGNsRXJyb3IpKToKICAgICAgICAgICAgIHYuZ2V0KCkKICAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzNDUuMCIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIFRjbEVycm9yKSk6CiAgICAgICAgICAgICB2LmdldCgpCiAKIApAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZShzZWxmKToKICAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQogICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgVGNsRXJyb3IpKToKICAgICAgICAgICAgIHYuZ2V0KCkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKaW5kZXggOGJlMDM3MS4uNzE3MTY2NyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQpAQCAtOTIwLDggKzkyMCw5IEBACiAgICAgICAgIHNiID0gc2VsZi5jcmVhdGUoKQogICAgICAgICBmb3IgZSBpbiAoJ2Fycm93MScsICdzbGlkZXInLCAnYXJyb3cyJyk6CiAgICAgICAgICAgICBzYi5hY3RpdmF0ZShlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzYi5hY3RpdmF0ZSgpLCBlKQogICAgICAgICBzYi5hY3RpdmF0ZSgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzYi5hY3RpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2IuYWN0aXZhdGUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzYi5hY3RpdmF0ZSwgJ2Fycm93MScsICdhcnJvdzInKQogCiAgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgpAQCAtOTMxLDggKzkzMiw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsICdhYmMnLCAnZGVmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNiLnNldCwgMC42LCAnZGVmJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IsIHNiLnNldCwgMC42LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvciwgc2Iuc2V0LCAwLjYpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yLCBzYi5zZXQsIDAuNiwgMC43LCAwLjgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2Iuc2V0LCAwLjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2Iuc2V0LCAwLjYsIDAuNywgMC44KQogCiAKIEBhZGRfc3RhbmRhcmRfb3B0aW9ucyhTdGFuZGFyZE9wdGlvbnNUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2V4dGVuc2lvbnMucHkKaW5kZXggYzNhZjA2Yy4uZjMzOTQ1YyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2V4dGVuc2lvbnMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2V4dGVuc2lvbnMucHkKQEAgLTcwLDE3ICs3MCwxNSBAQAogICAgICAgICAjIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uL3Bhc3NpbmcKICAgICAgICAgcGFzc2VkX2V4cGVjdGVkID0gKCgnMCcsIDApLCAoMCwgMCksICgxMCwgMTApLAogICAgICAgICAgICAgKC0xLCAtMSksIChzeXMubWF4c2l6ZSArIDEsIHN5cy5tYXhzaXplICsgMSkpCi0gICAgICAgIGlmIHNlbGYud2FudG9iamVjdHM6Ci0gICAgICAgICAgICBwYXNzZWRfZXhwZWN0ZWQgKz0gKCgyLjUsIDIpLCkKICAgICAgICAgZm9yIHBhaXIgaW4gcGFzc2VkX2V4cGVjdGVkOgogICAgICAgICAgICAgeCA9IHR0ay5MYWJlbGVkU2NhbGUoc2VsZi5yb290LCBmcm9tXz1wYWlyWzBdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnZhbHVlLCBwYWlyWzFdKQogICAgICAgICAgICAgeC5kZXN0cm95KCkKICAgICAgICAgeCA9IHR0ay5MYWJlbGVkU2NhbGUoc2VsZi5yb290LCBmcm9tXz0nMi41JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeC5fdmFyaWFibGUuZ2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgdGtpbnRlci5UY2xFcnJvciksIHguX3ZhcmlhYmxlLmdldCkKICAgICAgICAgeC5kZXN0cm95KCkKICAgICAgICAgeCA9IHR0ay5MYWJlbGVkU2NhbGUoc2VsZi5yb290LCBmcm9tXz1Ob25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4Ll92YXJpYWJsZS5nZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCB0a2ludGVyLlRjbEVycm9yKSwgeC5fdmFyaWFibGUuZ2V0KQogICAgICAgICB4LmRlc3Ryb3koKQogICAgICAgICAjIHZhcmlhYmxlIHNob3VsZCBoYXZlIGl0cyBkZWZhdWx0IHZhbHVlIHNldCB0byB0aGUgZnJvbV8gdmFsdWUKICAgICAgICAgbXl2YXIgPSB0a2ludGVyLkRvdWJsZVZhcihzZWxmLnJvb3QsIHZhbHVlPTIwKQpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuLnB5IGIvTGliL3Rva2VuLnB5CmluZGV4IDc0NzBjOGMuLjVmZGIyMjIgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbi5weQorKysgYi9MaWIvdG9rZW4ucHkKQEAgLTYwLDExICs2MCwxNCBAQAogRE9VQkxFU0xBU0ggPSA0NwogRE9VQkxFU0xBU0hFUVVBTCA9IDQ4CiBBVCA9IDQ5Ci1SQVJST1cgPSA1MAotRUxMSVBTSVMgPSA1MQotT1AgPSA1MgotRVJST1JUT0tFTiA9IDUzCi1OX1RPS0VOUyA9IDU0CitBVEVRVUFMID0gNTAKK1JBUlJPVyA9IDUxCitFTExJUFNJUyA9IDUyCitPUCA9IDUzCitBV0FJVCA9IDU0CitBU1lOQyA9IDU1CitFUlJPUlRPS0VOID0gNTYKK05fVE9LRU5TID0gNTcKIE5UX09GRlNFVCA9IDI1NgogIy0tZW5kIGNvbnN0YW50cy0tCiAKQEAgLTk2LDggKzk5LDggQEAKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkkvTyBlcnJvcjogJXNcbiIgJSBzdHIoZXJyKSkKICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICBsaW5lcyA9IGZwLnJlYWQoKS5zcGxpdCgiXG4iKQotICAgIGZwLmNsb3NlKCkKKyAgICB3aXRoIGZwOgorICAgICAgICBsaW5lcyA9IGZwLnJlYWQoKS5zcGxpdCgiXG4iKQogICAgIHByb2cgPSByZS5jb21waWxlKAogICAgICAgICAiI2RlZmluZVsgXHRdWyBcdF0qKFtBLVowLTldW0EtWjAtOV9dKilbIFx0XVsgXHRdKihbMC05XVswLTldKikiLAogICAgICAgICByZS5JR05PUkVDQVNFKQpAQCAtMTE1LDggKzExOCw4IEBACiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJJL08gZXJyb3I6ICVzXG4iICUgc3RyKGVycikpCiAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgZm9ybWF0ID0gZnAucmVhZCgpLnNwbGl0KCJcbiIpCi0gICAgZnAuY2xvc2UoKQorICAgIHdpdGggZnA6CisgICAgICAgIGZvcm1hdCA9IGZwLnJlYWQoKS5zcGxpdCgiXG4iKQogICAgIHRyeToKICAgICAgICAgc3RhcnQgPSBmb3JtYXQuaW5kZXgoIiMtLXN0YXJ0IGNvbnN0YW50cy0tIikgKyAxCiAgICAgICAgIGVuZCA9IGZvcm1hdC5pbmRleCgiIy0tZW5kIGNvbnN0YW50cy0tIikKQEAgLTEzMiw4ICsxMzUsOCBAQAogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiSS9PIGVycm9yOiAlc1xuIiAlIHN0cihlcnIpKQogICAgICAgICBzeXMuZXhpdCg0KQotICAgIGZwLndyaXRlKCJcbiIuam9pbihmb3JtYXQpKQotICAgIGZwLmNsb3NlKCkKKyAgICB3aXRoIGZwOgorICAgICAgICBmcC53cml0ZSgiXG4iLmpvaW4oZm9ybWF0KSkKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IDRkOTNhODMuLjY1ZDA2ZTUgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTkxLDcgKzkxLDggQEAKICAgICAnKio9JzogRE9VQkxFU1RBUkVRVUFMLAogICAgICcvLyc6ICBET1VCTEVTTEFTSCwKICAgICAnLy89JzogRE9VQkxFU0xBU0hFUVVBTCwKLSAgICAnQCc6ICAgQVQKKyAgICAnQCc6ICAgQVQsCisgICAgJ0A9JzogIEFURVFVQUwsCiB9CiAKIGNsYXNzIFRva2VuSW5mbyhjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdUb2tlbkluZm8nLCAndHlwZSBzdHJpbmcgc3RhcnQgZW5kIGxpbmUnKSk6CkBAIC0xNTAsNyArMTUxLDcgQEAKICMgcmVjb2duaXplZCBhcyB0d28gaW5zdGFuY2VzIG9mID0pLgogT3BlcmF0b3IgPSBncm91cChyIlwqXCo9PyIsIHIiPj49PyIsIHIiPDw9PyIsIHIiIT0iLAogICAgICAgICAgICAgICAgICByIi8vPT8iLCByIi0+IiwKLSAgICAgICAgICAgICAgICAgciJbK1wtKi8lJnxePTw+XT0/IiwKKyAgICAgICAgICAgICAgICAgciJbK1wtKi8lJkB8Xj08Pl09PyIsCiAgICAgICAgICAgICAgICAgIHIifiIpCiAKIEJyYWNrZXQgPSAnW11bKCl7fV0nCkBAIC0xODYsNyArMTg3LDYgQEAKICAgICAgICAgICAgInJCJycnIjogU2luZ2xlMywgJ3JCIiIiJzogRG91YmxlMywKICAgICAgICAgICAgIlJCJycnIjogU2luZ2xlMywgJ1JCIiIiJzogRG91YmxlMywKICAgICAgICAgICAgInUnJyciOiBTaW5nbGUzLCAndSIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAogICAgICAgICAgICAiVScnJyI6IFNpbmdsZTMsICdVIiIiJzogRG91YmxlMywKICAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lLAogICAgICAgICAgICAndSc6IE5vbmUsICdVJzogTm9uZX0KQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSB0b2t2YWwKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBpZiB0b2tudW0gaW4gKE5BTUUsIE5VTUJFUik6CisgICAgICAgICAgICBpZiB0b2tudW0gaW4gKE5BTUUsIE5VTUJFUiwgQVNZTkMsIEFXQUlUKToKICAgICAgICAgICAgICAgICB0b2t2YWwgKz0gJyAnCiAKICAgICAgICAgICAgICMgSW5zZXJ0IGEgc3BhY2UgYmV0d2VlbiB0d28gY29uc2VjdXRpdmUgc3RyaW5ncwpAQCAtNDk4LDYgKzQ5OCwxMiBAQAogICAgIGNvbnRsaW5lID0gTm9uZQogICAgIGluZGVudHMgPSBbMF0KIAorICAgICMgJ3N0YXNoZWQnIGFuZCAnYXN5bmNfKicgYXJlIHVzZWQgZm9yIGFzeW5jL2F3YWl0IHBhcnNpbmcKKyAgICBzdGFzaGVkID0gTm9uZQorICAgIGFzeW5jX2RlZiA9IEZhbHNlCisgICAgYXN5bmNfZGVmX2luZGVudCA9IDAKKyAgICBhc3luY19kZWZfbmwgPSBGYWxzZQorCiAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmIGVuY29kaW5nID09ICJ1dGYtOC1zaWciOgogICAgICAgICAgICAgIyBCT00gd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBzdHJpcHBlZC4KQEAgLTU3Myw4ICs1NzksMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmluZGVudCBkb2VzIG5vdCBtYXRjaCBhbnkgb3V0ZXIgaW5kZW50YXRpb24gbGV2ZWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgKCI8dG9rZW5pemU+IiwgbG51bSwgcG9zLCBsaW5lKSkKICAgICAgICAgICAgICAgICBpbmRlbnRzID0gaW5kZW50c1s6LTFdCisKKyAgICAgICAgICAgICAgICBpZiBhc3luY19kZWYgYW5kIGFzeW5jX2RlZl9pbmRlbnQgPj0gaW5kZW50c1stMV06CisgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZiA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9ubCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9pbmRlbnQgPSAwCisKICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oREVERU5ULCAnJywgKGxudW0sIHBvcyksIChsbnVtLCBwb3MpLCBsaW5lKQogCisgICAgICAgICAgICBpZiBhc3luY19kZWYgYW5kIGFzeW5jX2RlZl9ubCBhbmQgYXN5bmNfZGVmX2luZGVudCA+PSBpbmRlbnRzWy0xXToKKyAgICAgICAgICAgICAgICBhc3luY19kZWYgPSBGYWxzZQorICAgICAgICAgICAgICAgIGFzeW5jX2RlZl9ubCA9IEZhbHNlCisgICAgICAgICAgICAgICAgYXN5bmNfZGVmX2luZGVudCA9IDAKKwogICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdGF0ZW1lbnQKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIHJhaXNlIFRva2VuRXJyb3IoIkVPRiBpbiBtdWx0aS1saW5lIHN0YXRlbWVudCIsIChsbnVtLCAwKSkKQEAgLTU5MywxMCArNjEwLDIxIEBACiAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsID09ICcuJyBhbmQgdG9rZW4gIT0gJy4nIGFuZCB0b2tlbiAhPSAnLi4uJykpOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTlVNQkVSLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gJ1xyXG4nOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oTkwgaWYgcGFyZW5sZXYgPiAwIGVsc2UgTkVXTElORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyZW5sZXYgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKE5MLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhORVdMSU5FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfbmwgPSBUcnVlCisKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJyMnOgogICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRva2VuLmVuZHN3aXRoKCJcbiIpCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCkBAIC02MjQsNyArNjUyLDM2IEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oU1RSSU5HLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwuaXNpZGVudGlmaWVyKCk6ICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBuYW1lCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhOQU1FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gKCdhc3luYycsICdhd2FpdCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNZTkMgaWYgdG9rZW4gPT0gJ2FzeW5jJyBlbHNlIEFXQUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIHRvayA9IFRva2VuSW5mbyhOQU1FLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gPT0gJ2FzeW5jJyBhbmQgbm90IHN0YXNoZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gdG9rCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuID09ICdkZWYnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXNoZWQudHlwZSA9PSBOQU1FCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGFzaGVkLnN0cmluZyA9PSAnYXN5bmMnKToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jX2RlZiA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luY19kZWZfaW5kZW50ID0gaW5kZW50c1stMV0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhBU1lOQywgc3Rhc2hlZC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQuc3RhcnQsIHN0YXNoZWQuZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkLmxpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKKworICAgICAgICAgICAgICAgICAgICBpZiBzdGFzaGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKKworICAgICAgICAgICAgICAgICAgICB5aWVsZCB0b2sKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgPT0gJ1xcJzogICAgICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RtdAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZWQgPSAxCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTYzMiwxMiArNjg5LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbmxldiArPSAxCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiAnKV19JzoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVubGV2IC09IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhPUCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhFUlJPUlRPS0VOLCBsaW5lW3Bvc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG51bSwgcG9zKSwgKGxudW0sIHBvcysxKSwgbGluZSkKICAgICAgICAgICAgICAgICBwb3MgKz0gMQogCisgICAgaWYgc3Rhc2hlZDoKKyAgICAgICAgeWllbGQgc3Rhc2hlZAorICAgICAgICBzdGFzaGVkID0gTm9uZQorCiAgICAgZm9yIGluZGVudCBpbiBpbmRlbnRzWzE6XTogICAgICAgICAgICAgICAgICMgcG9wIHJlbWFpbmluZyBpbmRlbnQgbGV2ZWxzCiAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhERURFTlQsICcnLCAobG51bSwgMCksIChsbnVtLCAwKSwgJycpCiAgICAgeWllbGQgVG9rZW5JbmZvKEVORE1BUktFUiwgJycsIChsbnVtLCAwKSwgKGxudW0sIDApLCAnJykKZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQppbmRleCAwOWZlOWVlLi5mMTA4MjY2IDEwMDc1NQotLS0gYS9MaWIvdHJhY2UucHkKKysrIGIvTGliL3RyYWNlLnB5CkBAIC01OSwxMCArNTksNyBAQAogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgotdHJ5OgotICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCitmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMjM1LDggKzIzMiw4IEBACiAgICAgICAgIGlmIHNlbGYuaW5maWxlOgogICAgICAgICAgICAgIyBUcnkgdG8gbWVyZ2UgZXhpc3RpbmcgY291bnRzIGZpbGUuCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycyA9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5sb2FkKG9wZW4oc2VsZi5pbmZpbGUsICdyYicpKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmluZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycyA9IHBpY2tsZS5sb2FkKGYpCiAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGUoc2VsZi5fX2NsYXNzX18oY291bnRzLCBjYWxsZWRmdW5jcywgY2FsbGVycykpCiAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIEVPRkVycm9yLCBWYWx1ZUVycm9yKSBhcyBlcnI6CiAgICAgICAgICAgICAgICAgcHJpbnQoKCJTa2lwcGluZyBjb3VudHMgZmlsZSAlcjogJXMiCkBAIC0zMDgsNyArMzA1LDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYuaXNfaWdub3JlZF9maWxlbmFtZShmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCIucHljIiwgIi5weW8iKSk6CisgICAgICAgICAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgiLnB5YyIpOgogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogCiAgICAgICAgICAgICBpZiBjb3ZlcmRpciBpcyBOb25lOgpAQCAtMzI2LDE2ICszMjMsMTcgQEAKICAgICAgICAgICAgICAgICBsbm90YWIgPSBfZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmlsZW5hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxub3RhYiA9IHt9CisgICAgICAgICAgICBpZiBsbm90YWI6CisgICAgICAgICAgICAgICAgc291cmNlID0gbGluZWNhY2hlLmdldGxpbmVzKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIGNvdmVycGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG1vZHVsZW5hbWUgKyAiLmNvdmVyIikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgXyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhmcC5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICBuX2hpdHMsIG5fbGluZXMgPSBzZWxmLndyaXRlX3Jlc3VsdHNfZmlsZShjb3ZlcnBhdGgsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbm90YWIsIGNvdW50LCBlbmNvZGluZykKKyAgICAgICAgICAgICAgICBpZiBzdW1tYXJ5IGFuZCBuX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICBwZXJjZW50ID0gaW50KDEwMCAqIG5faGl0cyAvIG5fbGluZXMpCisgICAgICAgICAgICAgICAgICAgIHN1bXNbbW9kdWxlbmFtZV0gPSBuX2xpbmVzLCBwZXJjZW50LCBtb2R1bGVuYW1lLCBmaWxlbmFtZQogCi0gICAgICAgICAgICBzb3VyY2UgPSBsaW5lY2FjaGUuZ2V0bGluZXMoZmlsZW5hbWUpCi0gICAgICAgICAgICBjb3ZlcnBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBtb2R1bGVuYW1lICsgIi5jb3ZlciIpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIGVuY29kaW5nLCBfID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZwLnJlYWRsaW5lKQotICAgICAgICAgICAgbl9oaXRzLCBuX2xpbmVzID0gc2VsZi53cml0ZV9yZXN1bHRzX2ZpbGUoY292ZXJwYXRoLCBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbm90YWIsIGNvdW50LCBlbmNvZGluZykKLSAgICAgICAgICAgIGlmIHN1bW1hcnkgYW5kIG5fbGluZXM6Ci0gICAgICAgICAgICAgICAgcGVyY2VudCA9IGludCgxMDAgKiBuX2hpdHMgLyBuX2xpbmVzKQotICAgICAgICAgICAgICAgIHN1bXNbbW9kdWxlbmFtZV0gPSBuX2xpbmVzLCBwZXJjZW50LCBtb2R1bGVuYW1lLCBmaWxlbmFtZQogCiAgICAgICAgIGlmIHN1bW1hcnkgYW5kIHN1bXM6CiAgICAgICAgICAgICBwcmludCgibGluZXMgICBjb3YlICAgbW9kdWxlICAgKHBhdGgpIikKQEAgLTM2MywyNiArMzYxLDI2IEBACiAKICAgICAgICAgbl9saW5lcyA9IDAKICAgICAgICAgbl9oaXRzID0gMAotICAgICAgICBmb3IgbGluZW5vLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcywgMSk6Ci0gICAgICAgICAgICAjIGRvIHRoZSBibGFuay9jb21tZW50IG1hdGNoIHRvIHRyeSB0byBtYXJrIG1vcmUgbGluZXMKLSAgICAgICAgICAgICMgKGhlbHAgdGhlIHJlYWRlciBmaW5kIHN0dWZmIHRoYXQgaGFzbid0IGJlZW4gY292ZXJlZCkKLSAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsaW5lc19oaXQ6Ci0gICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiJTVkOiAiICUgbGluZXNfaGl0W2xpbmVub10pCi0gICAgICAgICAgICAgICAgbl9oaXRzICs9IDEKLSAgICAgICAgICAgICAgICBuX2xpbmVzICs9IDEKLSAgICAgICAgICAgIGVsaWYgcnhfYmxhbmsubWF0Y2gobGluZSk6Ci0gICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiICAgICAgICIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgbGluZXMgcHJlY2VkZWQgYnkgbm8gbWFya3Mgd2VyZW4ndCBoaXQKLSAgICAgICAgICAgICAgICAjIEhpZ2hsaWdodCB0aGVtIGlmIHNvIGluZGljYXRlZCwgdW5sZXNzIHRoZSBsaW5lIGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgIyAjcHJhZ21hOiBOTyBDT1ZFUgotICAgICAgICAgICAgICAgIGlmIGxpbmVubyBpbiBsbm90YWIgYW5kIG5vdCBQUkFHTUFfTk9DT1ZFUiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCI+Pj4+Pj4gIikKKyAgICAgICAgd2l0aCBvdXRmaWxlOgorICAgICAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUobGluZXMsIDEpOgorICAgICAgICAgICAgICAgICMgZG8gdGhlIGJsYW5rL2NvbW1lbnQgbWF0Y2ggdG8gdHJ5IHRvIG1hcmsgbW9yZSBsaW5lcworICAgICAgICAgICAgICAgICMgKGhlbHAgdGhlIHJlYWRlciBmaW5kIHN0dWZmIHRoYXQgaGFzbid0IGJlZW4gY292ZXJlZCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaW4gbGluZXNfaGl0OgorICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIlNWQ6ICIgJSBsaW5lc19oaXRbbGluZW5vXSkKKyAgICAgICAgICAgICAgICAgICAgbl9oaXRzICs9IDEKICAgICAgICAgICAgICAgICAgICAgbl9saW5lcyArPSAxCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbGlmIHJ4X2JsYW5rLm1hdGNoKGxpbmUpOgogICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIgICAgICAgIikKLSAgICAgICAgICAgIG91dGZpbGUud3JpdGUobGluZS5leHBhbmR0YWJzKDgpKQotICAgICAgICBvdXRmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIGxpbmVzIHByZWNlZGVkIGJ5IG5vIG1hcmtzIHdlcmVuJ3QgaGl0CisgICAgICAgICAgICAgICAgICAgICMgSGlnaGxpZ2h0IHRoZW0gaWYgc28gaW5kaWNhdGVkLCB1bmxlc3MgdGhlIGxpbmUgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgIyAjcHJhZ21hOiBOTyBDT1ZFUgorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lbm8gaW4gbG5vdGFiIGFuZCBub3QgUFJBR01BX05PQ09WRVIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoIj4+Pj4+PiAiKQorICAgICAgICAgICAgICAgICAgICAgICAgbl9saW5lcyArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCIgICAgICAgIikKKyAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKGxpbmUuZXhwYW5kdGFicyg4KSkKIAogICAgICAgICByZXR1cm4gbl9oaXRzLCBuX2xpbmVzCiAKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IGZhZjU5M2EuLjExMmU5YmEgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMSwzMiArMSwyNyBAQAogIiIiRXh0cmFjdCwgZm9ybWF0IGFuZCBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBQeXRob24gc3RhY2sgdHJhY2VzLiIiIgogCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBzeXMKLWltcG9ydCBvcGVyYXRvcgogCiBfX2FsbF9fID0gWydleHRyYWN0X3N0YWNrJywgJ2V4dHJhY3RfdGInLCAnZm9ybWF0X2V4Y2VwdGlvbicsCiAgICAgICAgICAgICdmb3JtYXRfZXhjZXB0aW9uX29ubHknLCAnZm9ybWF0X2xpc3QnLCAnZm9ybWF0X3N0YWNrJywKICAgICAgICAgICAgJ2Zvcm1hdF90YicsICdwcmludF9leGMnLCAnZm9ybWF0X2V4YycsICdwcmludF9leGNlcHRpb24nLAotICAgICAgICAgICAncHJpbnRfbGFzdCcsICdwcmludF9zdGFjaycsICdwcmludF90YicsCi0gICAgICAgICAgICdjbGVhcl9mcmFtZXMnXQorICAgICAgICAgICAncHJpbnRfbGFzdCcsICdwcmludF9zdGFjaycsICdwcmludF90YicsICdjbGVhcl9mcmFtZXMnLAorICAgICAgICAgICAnRnJhbWVTdW1tYXJ5JywgJ1N0YWNrU3VtbWFyeScsICdUcmFjZWJhY2tFeGNlcHRpb24nLAorICAgICAgICAgICAnd2Fsa19zdGFjaycsICd3YWxrX3RiJ10KIAogIwogIyBGb3JtYXR0aW5nIGFuZCBwcmludGluZyBsaXN0cyBvZiB0cmFjZWJhY2sgbGluZXMuCiAjCiAKLWRlZiBfZm9ybWF0X2xpc3RfaXRlcihleHRyYWN0ZWRfbGlzdCk6Ci0gICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgaW4gZXh0cmFjdGVkX2xpc3Q6Ci0gICAgICAgIGl0ZW0gPSAnICBGaWxlICJ7fSIsIGxpbmUge30sIGluIHt9XG4nLmZvcm1hdChmaWxlbmFtZSwgbGluZW5vLCBuYW1lKQotICAgICAgICBpZiBsaW5lOgotICAgICAgICAgICAgaXRlbSA9IGl0ZW0gKyAnICAgIHt9XG4nLmZvcm1hdChsaW5lLnN0cmlwKCkpCi0gICAgICAgIHlpZWxkIGl0ZW0KLQogZGVmIHByaW50X2xpc3QoZXh0cmFjdGVkX2xpc3QsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgdGhlIGxpc3Qgb2YgdHVwbGVzIGFzIHJldHVybmVkIGJ5IGV4dHJhY3RfdGIoKSBvcgogICAgIGV4dHJhY3Rfc3RhY2soKSBhcyBhIGZvcm1hdHRlZCBzdGFjayB0cmFjZSB0byB0aGUgZ2l2ZW4gZmlsZS4iIiIKICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgZm9yIGl0ZW0gaW4gX2Zvcm1hdF9saXN0X2l0ZXIoZXh0cmFjdGVkX2xpc3QpOgorICAgIGZvciBpdGVtIGluIFN0YWNrU3VtbWFyeS5mcm9tX2xpc3QoZXh0cmFjdGVkX2xpc3QpLmZvcm1hdCgpOgogICAgICAgICBwcmludChpdGVtLCBmaWxlPWZpbGUsIGVuZD0iIikKIAogZGVmIGZvcm1hdF9saXN0KGV4dHJhY3RlZF9saXN0KToKQEAgLTM5LDQ1ICszNCwxMiBAQAogICAgIHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcwogICAgIHdob3NlIHNvdXJjZSB0ZXh0IGxpbmUgaXMgbm90IE5vbmUuCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpc3QoX2Zvcm1hdF9saXN0X2l0ZXIoZXh0cmFjdGVkX2xpc3QpKQorICAgIHJldHVybiBTdGFja1N1bW1hcnkuZnJvbV9saXN0KGV4dHJhY3RlZF9saXN0KS5mb3JtYXQoKQogCiAjCiAjIFByaW50aW5nIGFuZCBFeHRyYWN0aW5nIFRyYWNlYmFja3MuCiAjCiAKLSMgZXh0cmFjdG9yIHRha2VzIGN1cnIgYW5kIG5lZWRzIHRvIHJldHVybiBhIHR1cGxlIG9mOgotIyAtIEZyYW1lIG9iamVjdAotIyAtIExpbmUgbnVtYmVyCi0jIC0gTmV4dCBpdGVtIChzYW1lIHR5cGUgYXMgY3VycikKLSMgSW4gcHJhY3RpY2UsIGN1cnIgaXMgZWl0aGVyIGEgdHJhY2ViYWNrIG9yIGEgZnJhbWUuCi1kZWYgX2V4dHJhY3RfdGJfb3Jfc3RhY2tfaXRlcihjdXJyLCBsaW1pdCwgZXh0cmFjdG9yKToKLSAgICBpZiBsaW1pdCBpcyBOb25lOgotICAgICAgICBsaW1pdCA9IGdldGF0dHIoc3lzLCAndHJhY2ViYWNrbGltaXQnLCBOb25lKQotCi0gICAgbiA9IDAKLSAgICB3aGlsZSBjdXJyIGlzIG5vdCBOb25lIGFuZCAobGltaXQgaXMgTm9uZSBvciBuIDwgbGltaXQpOgotICAgICAgICBmLCBsaW5lbm8sIG5leHRfaXRlbSA9IGV4dHJhY3RvcihjdXJyKQotICAgICAgICBjbyA9IGYuZl9jb2RlCi0gICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKLSAgICAgICAgbmFtZSA9IGNvLmNvX25hbWUKLQotICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8sIGYuZl9nbG9iYWxzKQotCi0gICAgICAgIGlmIGxpbmU6Ci0gICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gTm9uZQotCi0gICAgICAgIHlpZWxkIChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKQotICAgICAgICBjdXJyID0gbmV4dF9pdGVtCi0gICAgICAgIG4gKz0gMQotCi1kZWYgX2V4dHJhY3RfdGJfaXRlcih0YiwgbGltaXQpOgotICAgIHJldHVybiBfZXh0cmFjdF90Yl9vcl9zdGFja19pdGVyKAotICAgICAgICAgICAgICAgIHRiLCBsaW1pdCwKLSAgICAgICAgICAgICAgICBvcGVyYXRvci5hdHRyZ2V0dGVyKCJ0Yl9mcmFtZSIsICJ0Yl9saW5lbm8iLCAidGJfbmV4dCIpKQotCiBkZWYgcHJpbnRfdGIodGIsIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgdXAgdG8gJ2xpbWl0JyBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20gdGhlIHRyYWNlYmFjayAndGInLgogCkBAIC05MCw3ICs1Miw3IEBACiAKIGRlZiBmb3JtYXRfdGIodGIsIGxpbWl0PU5vbmUpOgogICAgICIiIkEgc2hvcnRoYW5kIGZvciAnZm9ybWF0X2xpc3QoZXh0cmFjdF90Yih0YiwgbGltaXQpKScuIiIiCi0gICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3RfdGIodGIsIGxpbWl0PWxpbWl0KSkKKyAgICByZXR1cm4gZXh0cmFjdF90Yih0YiwgbGltaXQ9bGltaXQpLmZvcm1hdCgpCiAKIGRlZiBleHRyYWN0X3RiKHRiLCBsaW1pdD1Ob25lKToKICAgICAiIiJSZXR1cm4gbGlzdCBvZiB1cCB0byBsaW1pdCBwcmUtcHJvY2Vzc2VkIGVudHJpZXMgZnJvbSB0cmFjZWJhY2suCkBAIC0xMDMsNyArNjUsNyBAQAogICAgIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugc3RyaXBwZWQ7IGlmIHRoZSBzb3VyY2UgaXMgbm90CiAgICAgYXZhaWxhYmxlIGl0IGlzIE5vbmUuCiAgICAgIiIiCi0gICAgcmV0dXJuIGxpc3QoX2V4dHJhY3RfdGJfaXRlcih0YiwgbGltaXQ9bGltaXQpKQorICAgIHJldHVybiBTdGFja1N1bW1hcnkuZXh0cmFjdCh3YWxrX3RiKHRiKSwgbGltaXQ9bGltaXQpCiAKICMKICMgRXhjZXB0aW9uIGZvcm1hdHRpbmcgYW5kIG91dHB1dC4KQEAgLTExMSw0NyArNzMsMTIgQEAKIAogX2NhdXNlX21lc3NhZ2UgPSAoCiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCi0gICAgIm9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuIikKKyAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiIpCiAKIF9jb250ZXh0X21lc3NhZ2UgPSAoCiAgICAgIlxuRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICIKLSAgICAiYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4iKQorICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuIikKIAotZGVmIF9pdGVyX2NoYWluKGV4YywgY3VzdG9tX3RiPU5vbmUsIHNlZW49Tm9uZSk6Ci0gICAgaWYgc2VlbiBpcyBOb25lOgotICAgICAgICBzZWVuID0gc2V0KCkKLSAgICBzZWVuLmFkZChleGMpCi0gICAgaXRzID0gW10KLSAgICBjb250ZXh0ID0gZXhjLl9fY29udGV4dF9fCi0gICAgY2F1c2UgPSBleGMuX19jYXVzZV9fCi0gICAgaWYgY2F1c2UgaXMgbm90IE5vbmUgYW5kIGNhdXNlIG5vdCBpbiBzZWVuOgotICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNhdXNlLCBGYWxzZSwgc2VlbikpCi0gICAgICAgIGl0cy5hcHBlbmQoWyhfY2F1c2VfbWVzc2FnZSwgTm9uZSldKQotICAgIGVsaWYgKGNvbnRleHQgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgbm90IGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXyBhbmQKLSAgICAgICAgICBjb250ZXh0IG5vdCBpbiBzZWVuKToKLSAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjb250ZXh0LCBOb25lLCBzZWVuKSkKLSAgICAgICAgaXRzLmFwcGVuZChbKF9jb250ZXh0X21lc3NhZ2UsIE5vbmUpXSkKLSAgICBpdHMuYXBwZW5kKFsoZXhjLCBjdXN0b21fdGIgb3IgZXhjLl9fdHJhY2ViYWNrX18pXSkKLSAgICAjIGl0ZXJ0b29scy5jaGFpbiBpcyBpbiBhbiBleHRlbnNpb24gbW9kdWxlIGFuZCBtYXkgYmUgdW5hdmFpbGFibGUKLSAgICBmb3IgaXQgaW4gaXRzOgotICAgICAgICB5aWVsZCBmcm9tIGl0Ci0KLWRlZiBfZm9ybWF0X2V4Y2VwdGlvbl9pdGVyKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbik6Ci0gICAgaWYgY2hhaW46Ci0gICAgICAgIHZhbHVlcyA9IF9pdGVyX2NoYWluKHZhbHVlLCB0YikKLSAgICBlbHNlOgotICAgICAgICB2YWx1ZXMgPSBbKHZhbHVlLCB0YildCi0KLSAgICBmb3IgdmFsdWUsIHRiIGluIHZhbHVlczoKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgICMgVGhpcyBpcyBhIGNhdXNlL2NvbnRleHQgbWVzc2FnZSBsaW5lCi0gICAgICAgICAgICB5aWVsZCB2YWx1ZSArICdcbicKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHRiOgotICAgICAgICAgICAgeWllbGQgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKLSAgICAgICAgICAgIHlpZWxkIGZyb20gX2Zvcm1hdF9saXN0X2l0ZXIoX2V4dHJhY3RfdGJfaXRlcih0YiwgbGltaXQ9bGltaXQpKQotICAgICAgICB5aWVsZCBmcm9tIF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcih0eXBlKHZhbHVlKSwgdmFsdWUpCiAKIGRlZiBwcmludF9leGNlcHRpb24oZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lLCBjaGFpbj1UcnVlKToKICAgICAiIiJQcmludCBleGNlcHRpb24gdXAgdG8gJ2xpbWl0JyBzdGFjayB0cmFjZSBlbnRyaWVzIGZyb20gJ3RiJyB0byAnZmlsZScuCkBAIC0xNjQsMTEgKzkxLDE2IEBACiAgICAgb2NjdXJyZWQgd2l0aCBhIGNhcmV0IG9uIHRoZSBuZXh0IGxpbmUgaW5kaWNhdGluZyB0aGUgYXBwcm94aW1hdGUKICAgICBwb3NpdGlvbiBvZiB0aGUgZXJyb3IuCiAgICAgIiIiCisgICAgIyBmb3JtYXRfZXhjZXB0aW9uIGhhcyBpZ25vcmVkIGV0eXBlIGZvciBzb21lIHRpbWUsIGFuZCBjb2RlIHN1Y2ggYXMgY2dpdGIKKyAgICAjIHBhc3NlcyBpbiBib2d1cyB2YWx1ZXMgYXMgYSByZXN1bHQuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggc3VjaCBjb2RlIHdlCisgICAgIyBpZ25vcmUgaXQgaGVyZSAocmF0aGVyIHRoYW4gaW4gdGhlIG5ldyBUcmFjZWJhY2tFeGNlcHRpb24gQVBJKS4KICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgZm9yIGxpbmUgaW4gX2Zvcm1hdF9leGNlcHRpb25faXRlcihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdCwgY2hhaW4pOgorICAgIGZvciBsaW5lIGluIFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgIHR5cGUodmFsdWUpLCB2YWx1ZSwgdGIsIGxpbWl0PWxpbWl0KS5mb3JtYXQoY2hhaW49Y2hhaW4pOgogICAgICAgICBwcmludChsaW5lLCBmaWxlPWZpbGUsIGVuZD0iIikKIAorCiBkZWYgZm9ybWF0X2V4Y2VwdGlvbihldHlwZSwgdmFsdWUsIHRiLCBsaW1pdD1Ob25lLCBjaGFpbj1UcnVlKToKICAgICAiIiJGb3JtYXQgYSBzdGFjayB0cmFjZSBhbmQgdGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbi4KIApAQCAtMTc4LDcgKzExMCwxMiBAQAogICAgIHRoZXNlIGxpbmVzIGFyZSBjb25jYXRlbmF0ZWQgYW5kIHByaW50ZWQsIGV4YWN0bHkgdGhlIHNhbWUgdGV4dCBpcwogICAgIHByaW50ZWQgYXMgZG9lcyBwcmludF9leGNlcHRpb24oKS4KICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZm9ybWF0X2V4Y2VwdGlvbl9pdGVyKGV0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0LCBjaGFpbikpCisgICAgIyBmb3JtYXRfZXhjZXB0aW9uIGhhcyBpZ25vcmVkIGV0eXBlIGZvciBzb21lIHRpbWUsIGFuZCBjb2RlIHN1Y2ggYXMgY2dpdGIKKyAgICAjIHBhc3NlcyBpbiBib2d1cyB2YWx1ZXMgYXMgYSByZXN1bHQuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggc3VjaCBjb2RlIHdlCisgICAgIyBpZ25vcmUgaXQgaGVyZSAocmF0aGVyIHRoYW4gaW4gdGhlIG5ldyBUcmFjZWJhY2tFeGNlcHRpb24gQVBJKS4KKyAgICByZXR1cm4gbGlzdChUcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgIHR5cGUodmFsdWUpLCB2YWx1ZSwgdGIsIGxpbWl0PWxpbWl0KS5mb3JtYXQoY2hhaW49Y2hhaW4pKQorCiAKIGRlZiBmb3JtYXRfZXhjZXB0aW9uX29ubHkoZXR5cGUsIHZhbHVlKToKICAgICAiIiJGb3JtYXQgdGhlIGV4Y2VwdGlvbiBwYXJ0IG9mIGEgdHJhY2ViYWNrLgpAQCAtMTk2LDQ2ICsxMzMsMTQgQEAKICAgICBzdHJpbmcgaW4gdGhlIGxpc3QuCiAKICAgICAiIiIKLSAgICByZXR1cm4gbGlzdChfZm9ybWF0X2V4Y2VwdGlvbl9vbmx5X2l0ZXIoZXR5cGUsIHZhbHVlKSkKKyAgICByZXR1cm4gbGlzdChUcmFjZWJhY2tFeGNlcHRpb24oZXR5cGUsIHZhbHVlLCBOb25lKS5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKSkKIAotZGVmIF9mb3JtYXRfZXhjZXB0aW9uX29ubHlfaXRlcihldHlwZSwgdmFsdWUpOgotICAgICMgR3JhY2VmdWxseSBoYW5kbGUgKHRoZSB3YXkgUHl0aG9uIDIuNCBhbmQgZWFybGllciBkaWQpIHRoZSBjYXNlIG9mCi0gICAgIyBiZWluZyBjYWxsZWQgd2l0aCAoTm9uZSwgTm9uZSkuCi0gICAgaWYgZXR5cGUgaXMgTm9uZToKLSAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpCi0gICAgICAgIHJldHVybgogCi0gICAgc3R5cGUgPSBldHlwZS5fX25hbWVfXwotICAgIHNtb2QgPSBldHlwZS5fX21vZHVsZV9fCi0gICAgaWYgc21vZCBub3QgaW4gKCJfX21haW5fXyIsICJidWlsdGlucyIpOgotICAgICAgICBzdHlwZSA9IHNtb2QgKyAnLicgKyBzdHlwZQotCi0gICAgaWYgbm90IGlzc3ViY2xhc3MoZXR5cGUsIFN5bnRheEVycm9yKToKLSAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShzdHlwZSwgdmFsdWUpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBJdCB3YXMgYSBzeW50YXggZXJyb3I7IHNob3cgZXhhY3RseSB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQuCi0gICAgZmlsZW5hbWUgPSB2YWx1ZS5maWxlbmFtZSBvciAiPHN0cmluZz4iCi0gICAgbGluZW5vID0gc3RyKHZhbHVlLmxpbmVubykgb3IgJz8nCi0gICAgeWllbGQgJyAgRmlsZSAie30iLCBsaW5lIHt9XG4nLmZvcm1hdChmaWxlbmFtZSwgbGluZW5vKQotCi0gICAgYmFkbGluZSA9IHZhbHVlLnRleHQKLSAgICBvZmZzZXQgPSB2YWx1ZS5vZmZzZXQKLSAgICBpZiBiYWRsaW5lIGlzIG5vdCBOb25lOgotICAgICAgICB5aWVsZCAnICAgIHt9XG4nLmZvcm1hdChiYWRsaW5lLnN0cmlwKCkpCi0gICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBiYWRsaW5lLnJzdHJpcCgnXG4nKQotICAgICAgICAgICAgb2Zmc2V0ID0gbWluKGxlbihjYXJldHNwYWNlKSwgb2Zmc2V0KSAtIDEKLSAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBjYXJldHNwYWNlWzpvZmZzZXRdLmxzdHJpcCgpCi0gICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNwYWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAotICAgICAgICAgICAgY2FyZXRzcGFjZSA9ICgoYy5pc3NwYWNlKCkgYW5kIGMgb3IgJyAnKSBmb3IgYyBpbiBjYXJldHNwYWNlKQotICAgICAgICAgICAgeWllbGQgJyAgICB7fV5cbicuZm9ybWF0KCcnLmpvaW4oY2FyZXRzcGFjZSkpCi0gICAgbXNnID0gdmFsdWUubXNnIG9yICI8bm8gZGV0YWlsIGF2YWlsYWJsZT4iCi0gICAgeWllbGQgInt9OiB7fVxuIi5mb3JtYXQoc3R5cGUsIG1zZykKKyMgLS0gbm90IG9mZmljYWwgQVBJIGJ1dCBmb2xrIHByb2JhYmx5IHVzZSB0aGVzZSB0d28gZnVuY3Rpb25zLgogCiBkZWYgX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpOgogICAgIHZhbHVlc3RyID0gX3NvbWVfc3RyKHZhbHVlKQotICAgIGlmIHZhbHVlIGlzIE5vbmUgb3Igbm90IHZhbHVlc3RyOgorICAgIGlmIHZhbHVlID09ICdOb25lJyBvciB2YWx1ZSBpcyBOb25lIG9yIG5vdCB2YWx1ZXN0cjoKICAgICAgICAgbGluZSA9ICIlc1xuIiAlIGV0eXBlCiAgICAgZWxzZToKICAgICAgICAgbGluZSA9ICIlczogJXNcbiIgJSAoZXR5cGUsIHZhbHVlc3RyKQpAQCAtMjQ3LDYgKzE1Miw4IEBACiAgICAgZXhjZXB0OgogICAgICAgICByZXR1cm4gJzx1bnByaW50YWJsZSAlcyBvYmplY3Q+JyAlIHR5cGUodmFsdWUpLl9fbmFtZV9fCiAKKyMgLS0KKwogZGVmIHByaW50X2V4YyhsaW1pdD1Ob25lLCBmaWxlPU5vbmUsIGNoYWluPVRydWUpOgogICAgICIiIlNob3J0aGFuZCBmb3IgJ3ByaW50X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCksIGxpbWl0LCBmaWxlKScuIiIiCiAgICAgcHJpbnRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSwgbGltaXQ9bGltaXQsIGZpbGU9ZmlsZSwgY2hhaW49Y2hhaW4pCkBAIC0yNjcsMTUgKzE3NCw2IEBACiAjIFByaW50aW5nIGFuZCBFeHRyYWN0aW5nIFN0YWNrcy4KICMKIAotZGVmIF9leHRyYWN0X3N0YWNrX2l0ZXIoZiwgbGltaXQ9Tm9uZSk6Ci0gICAgcmV0dXJuIF9leHRyYWN0X3RiX29yX3N0YWNrX2l0ZXIoCi0gICAgICAgICAgICAgICAgZiwgbGltaXQsIGxhbWJkYSBmOiAoZiwgZi5mX2xpbmVubywgZi5mX2JhY2spKQotCi1kZWYgX2dldF9zdGFjayhmKToKLSAgICBpZiBmIGlzIE5vbmU6Ci0gICAgICAgIGYgPSBzeXMuX2dldGZyYW1lKCkuZl9iYWNrLmZfYmFjawotICAgIHJldHVybiBmCi0KIGRlZiBwcmludF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgIiIiUHJpbnQgYSBzdGFjayB0cmFjZSBmcm9tIGl0cyBpbnZvY2F0aW9uIHBvaW50LgogCkBAIC0yODMsMTEgKzE4MSwxNyBAQAogICAgIHN0YWNrIGZyYW1lIGF0IHdoaWNoIHRvIHN0YXJ0LiBUaGUgb3B0aW9uYWwgJ2xpbWl0JyBhbmQgJ2ZpbGUnCiAgICAgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgcHJpbnRfZXhjZXB0aW9uKCkuCiAgICAgIiIiCi0gICAgcHJpbnRfbGlzdChleHRyYWN0X3N0YWNrKF9nZXRfc3RhY2soZiksIGxpbWl0PWxpbWl0KSwgZmlsZT1maWxlKQorICAgIGlmIGYgaXMgTm9uZToKKyAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKKyAgICBwcmludF9saXN0KGV4dHJhY3Rfc3RhY2soZiwgbGltaXQ9bGltaXQpLCBmaWxlPWZpbGUpCisKIAogZGVmIGZvcm1hdF9zdGFjayhmPU5vbmUsIGxpbWl0PU5vbmUpOgogICAgICIiIlNob3J0aGFuZCBmb3IgJ2Zvcm1hdF9saXN0KGV4dHJhY3Rfc3RhY2soZiwgbGltaXQpKScuIiIiCi0gICAgcmV0dXJuIGZvcm1hdF9saXN0KGV4dHJhY3Rfc3RhY2soX2dldF9zdGFjayhmKSwgbGltaXQ9bGltaXQpKQorICAgIGlmIGYgaXMgTm9uZToKKyAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKKyAgICByZXR1cm4gZm9ybWF0X2xpc3QoZXh0cmFjdF9zdGFjayhmLCBsaW1pdD1saW1pdCkpCisKIAogZGVmIGV4dHJhY3Rfc3RhY2soZj1Ob25lLCBsaW1pdD1Ob25lKToKICAgICAiIiJFeHRyYWN0IHRoZSByYXcgdHJhY2ViYWNrIGZyb20gdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUuCkBAIC0yOTgsMTAgKzIwMiwxMyBAQAogICAgIGxpbmUgbnVtYmVyLCBmdW5jdGlvbiBuYW1lLCB0ZXh0KSwgYW5kIHRoZSBlbnRyaWVzIGFyZSBpbiBvcmRlcgogICAgIGZyb20gb2xkZXN0IHRvIG5ld2VzdCBzdGFjayBmcmFtZS4KICAgICAiIiIKLSAgICBzdGFjayA9IGxpc3QoX2V4dHJhY3Rfc3RhY2tfaXRlcihfZ2V0X3N0YWNrKGYpLCBsaW1pdD1saW1pdCkpCisgICAgaWYgZiBpcyBOb25lOgorICAgICAgICBmID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjaworICAgIHN0YWNrID0gU3RhY2tTdW1tYXJ5LmV4dHJhY3Qod2Fsa19zdGFjayhmKSwgbGltaXQ9bGltaXQpCiAgICAgc3RhY2sucmV2ZXJzZSgpCiAgICAgcmV0dXJuIHN0YWNrCiAKKwogZGVmIGNsZWFyX2ZyYW1lcyh0Yik6CiAgICAgIkNsZWFyIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBpbiB0aGUgZnJhbWVzIG9mIGEgdHJhY2ViYWNrLiIKICAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKQEAgLTMxMSwzICsyMTgsMzU3IEBACiAgICAgICAgICAgICAjIElnbm9yZSB0aGUgZXhjZXB0aW9uIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgc3RpbGwgZXhlY3V0aW5nLgogICAgICAgICAgICAgcGFzcwogICAgICAgICB0YiA9IHRiLnRiX25leHQKKworCitjbGFzcyBGcmFtZVN1bW1hcnk6CisgICAgIiIiQSBzaW5nbGUgZnJhbWUgZnJvbSBhIHRyYWNlYmFjay4KKworICAgIC0gOmF0dHI6YGZpbGVuYW1lYCBUaGUgZmlsZW5hbWUgZm9yIHRoZSBmcmFtZS4KKyAgICAtIDphdHRyOmBsaW5lbm9gIFRoZSBsaW5lIHdpdGhpbiBmaWxlbmFtZSBmb3IgdGhlIGZyYW1lIHRoYXQgd2FzCisgICAgICBhY3RpdmUgd2hlbiB0aGUgZnJhbWUgd2FzIGNhcHR1cmVkLgorICAgIC0gOmF0dHI6YG5hbWVgIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBvciBtZXRob2QgdGhhdCB3YXMgZXhlY3V0aW5nCisgICAgICB3aGVuIHRoZSBmcmFtZSB3YXMgY2FwdHVyZWQuCisgICAgLSA6YXR0cjpgbGluZWAgVGhlIHRleHQgZnJvbSB0aGUgbGluZWNhY2hlIG1vZHVsZSBmb3IgdGhlCisgICAgICBvZiBjb2RlIHRoYXQgd2FzIHJ1bm5pbmcgd2hlbiB0aGUgZnJhbWUgd2FzIGNhcHR1cmVkLgorICAgIC0gOmF0dHI6YGxvY2Fsc2AgRWl0aGVyIE5vbmUgaWYgbG9jYWxzIHdlcmUgbm90IHN1cHBsaWVkLCBvciBhIGRpY3QKKyAgICAgIG1hcHBpbmcgdGhlIG5hbWUgdG8gdGhlIHJlcHIoKSBvZiB0aGUgdmFyaWFibGUuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoJ2ZpbGVuYW1lJywgJ2xpbmVubycsICduYW1lJywgJ19saW5lJywgJ2xvY2FscycpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgKiwgbG9va3VwX2xpbmU9VHJ1ZSwKKyAgICAgICAgICAgIGxvY2Fscz1Ob25lLCBsaW5lPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYSBGcmFtZVN1bW1hcnkuCisKKyAgICAgICAgOnBhcmFtIGxvb2t1cF9saW5lOiBJZiBUcnVlLCBgbGluZWNhY2hlYCBpcyBjb25zdWx0ZWQgZm9yIHRoZSBzb3VyY2UKKyAgICAgICAgICAgIGNvZGUgbGluZS4gT3RoZXJ3aXNlLCB0aGUgbGluZSB3aWxsIGJlIGxvb2tlZCB1cCB3aGVuIGZpcnN0IG5lZWRlZC4KKyAgICAgICAgOnBhcmFtIGxvY2FsczogSWYgc3VwcGxpZWQgdGhlIGZyYW1lIGxvY2Fscywgd2hpY2ggd2lsbCBiZSBjYXB0dXJlZCBhcworICAgICAgICAgICAgb2JqZWN0IHJlcHJlc2VudGF0aW9ucy4KKyAgICAgICAgOnBhcmFtIGxpbmU6IElmIHByb3ZpZGVkLCB1c2UgdGhpcyBpbnN0ZWFkIG9mIGxvb2tpbmcgdXAgdGhlIGxpbmUgaW4KKyAgICAgICAgICAgIHRoZSBsaW5lY2FjaGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl9saW5lID0gbGluZQorICAgICAgICBpZiBsb29rdXBfbGluZToKKyAgICAgICAgICAgIHNlbGYubGluZQorICAgICAgICBzZWxmLmxvY2FscyA9IFwKKyAgICAgICAgICAgIGRpY3QoKGssIHJlcHIodikpIGZvciBrLCB2IGluIGxvY2Fscy5pdGVtcygpKSBpZiBsb2NhbHMgZWxzZSBOb25lCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmZpbGVuYW1lID09IG90aGVyLmZpbGVuYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID09IG90aGVyLmxpbmVubyBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPT0gb3RoZXIubmFtZSBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmxvY2FscyA9PSBvdGhlci5sb2NhbHMpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcG9zKToKKyAgICAgICAgcmV0dXJuIChzZWxmLmZpbGVuYW1lLCBzZWxmLmxpbmVubywgc2VsZi5uYW1lLCBzZWxmLmxpbmUpW3Bvc10KKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoW3NlbGYuZmlsZW5hbWUsIHNlbGYubGluZW5vLCBzZWxmLm5hbWUsIHNlbGYubGluZV0pCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiPEZyYW1lU3VtbWFyeSBmaWxlIHtmaWxlbmFtZX0sIGxpbmUge2xpbmVub30gaW4ge25hbWV9PiIuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9c2VsZi5maWxlbmFtZSwgbGluZW5vPXNlbGYubGluZW5vLCBuYW1lPXNlbGYubmFtZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsaW5lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9saW5lIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saW5lID0gbGluZWNhY2hlLmdldGxpbmUoc2VsZi5maWxlbmFtZSwgc2VsZi5saW5lbm8pLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xpbmUKKworCitkZWYgd2Fsa19zdGFjayhmKToKKyAgICAiIiJXYWxrIGEgc3RhY2sgeWllbGRpbmcgdGhlIGZyYW1lIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmcmFtZS4KKworICAgIFRoaXMgd2lsbCBmb2xsb3cgZi5mX2JhY2sgZnJvbSB0aGUgZ2l2ZW4gZnJhbWUuIElmIG5vIGZyYW1lIGlzIGdpdmVuLCB0aGUKKyAgICBjdXJyZW50IHN0YWNrIGlzIHVzZWQuIFVzdWFsbHkgdXNlZCB3aXRoIFN0YWNrU3VtbWFyeS5leHRyYWN0LgorICAgICIiIgorICAgIGlmIGYgaXMgTm9uZToKKyAgICAgICAgZiA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2suZl9iYWNrCisgICAgd2hpbGUgZiBpcyBub3QgTm9uZToKKyAgICAgICAgeWllbGQgZiwgZi5mX2xpbmVubworICAgICAgICBmID0gZi5mX2JhY2sKKworCitkZWYgd2Fsa190Yih0Yik6CisgICAgIiIiV2FsayBhIHRyYWNlYmFjayB5aWVsZGluZyB0aGUgZnJhbWUgYW5kIGxpbmUgbnVtYmVyIGZvciBlYWNoIGZyYW1lLgorCisgICAgVGhpcyB3aWxsIGZvbGxvdyB0Yi50Yl9uZXh0IChhbmQgdGh1cyBpcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdG8KKyAgICB3YWxrX3N0YWNrKS4gVXN1YWxseSB1c2VkIHdpdGggU3RhY2tTdW1tYXJ5LmV4dHJhY3QuCisgICAgIiIiCisgICAgd2hpbGUgdGIgaXMgbm90IE5vbmU6CisgICAgICAgIHlpZWxkIHRiLnRiX2ZyYW1lLCB0Yi50Yl9saW5lbm8KKyAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CisKKworY2xhc3MgU3RhY2tTdW1tYXJ5KGxpc3QpOgorICAgICIiIkEgc3RhY2sgb2YgZnJhbWVzLiIiIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGV4dHJhY3Qoa2xhc3MsIGZyYW1lX2dlbiwgKiwgbGltaXQ9Tm9uZSwgbG9va3VwX2xpbmVzPVRydWUsCisgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1GYWxzZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIFN0YWNrU3VtbWFyeSBmcm9tIGEgdHJhY2ViYWNrIG9yIHN0YWNrIG9iamVjdC4KKworICAgICAgICA6cGFyYW0gZnJhbWVfZ2VuOiBBIGdlbmVyYXRvciB0aGF0IHlpZWxkcyAoZnJhbWUsIGxpbmVubykgdHVwbGVzIHRvCisgICAgICAgICAgICBpbmNsdWRlIGluIHRoZSBzdGFjay4KKyAgICAgICAgOnBhcmFtIGxpbWl0OiBOb25lIHRvIGluY2x1ZGUgYWxsIGZyYW1lcyBvciB0aGUgbnVtYmVyIG9mIGZyYW1lcyB0bworICAgICAgICAgICAgaW5jbHVkZS4KKyAgICAgICAgOnBhcmFtIGxvb2t1cF9saW5lczogSWYgVHJ1ZSwgbG9va3VwIGxpbmVzIGZvciBlYWNoIGZyYW1lIGltbWVkaWF0ZWx5LAorICAgICAgICAgICAgb3RoZXJ3aXNlIGxvb2t1cCBpcyBkZWZlcnJlZCB1bnRpbCB0aGUgZnJhbWUgaXMgcmVuZGVyZWQuCisgICAgICAgIDpwYXJhbSBjYXB0dXJlX2xvY2FsczogSWYgVHJ1ZSwgdGhlIGxvY2FsIHZhcmlhYmxlcyBmcm9tIGVhY2ggZnJhbWUgd2lsbAorICAgICAgICAgICAgYmUgY2FwdHVyZWQgYXMgb2JqZWN0IHJlcHJlc2VudGF0aW9ucyBpbnRvIHRoZSBGcmFtZVN1bW1hcnkuCisgICAgICAgICIiIgorICAgICAgICBpZiBsaW1pdCBpcyBOb25lOgorICAgICAgICAgICAgbGltaXQgPSBnZXRhdHRyKHN5cywgJ3RyYWNlYmFja2xpbWl0JywgTm9uZSkKKyAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lIGFuZCBsaW1pdCA8IDA6CisgICAgICAgICAgICAgICAgbGltaXQgPSAwCisgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGltaXQgPj0gMDoKKyAgICAgICAgICAgICAgICBmcmFtZV9nZW4gPSBpdGVydG9vbHMuaXNsaWNlKGZyYW1lX2dlbiwgbGltaXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZyYW1lX2dlbiA9IGNvbGxlY3Rpb25zLmRlcXVlKGZyYW1lX2dlbiwgbWF4bGVuPS1saW1pdCkKKworICAgICAgICByZXN1bHQgPSBrbGFzcygpCisgICAgICAgIGZuYW1lcyA9IHNldCgpCisgICAgICAgIGZvciBmLCBsaW5lbm8gaW4gZnJhbWVfZ2VuOgorICAgICAgICAgICAgY28gPSBmLmZfY29kZQorICAgICAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQorICAgICAgICAgICAgbmFtZSA9IGNvLmNvX25hbWUKKworICAgICAgICAgICAgZm5hbWVzLmFkZChmaWxlbmFtZSkKKyAgICAgICAgICAgIGxpbmVjYWNoZS5sYXp5Y2FjaGUoZmlsZW5hbWUsIGYuZl9nbG9iYWxzKQorICAgICAgICAgICAgIyBNdXN0IGRlZmVyIGxpbmUgbG9va3VwcyB1bnRpbCB3ZSBoYXZlIGNhbGxlZCBjaGVja2NhY2hlLgorICAgICAgICAgICAgaWYgY2FwdHVyZV9sb2NhbHM6CisgICAgICAgICAgICAgICAgZl9sb2NhbHMgPSBmLmZfbG9jYWxzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZfbG9jYWxzID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGcmFtZVN1bW1hcnkoCisgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbG9va3VwX2xpbmU9RmFsc2UsIGxvY2Fscz1mX2xvY2FscykpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmbmFtZXM6CisgICAgICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKKyAgICAgICAgIyBJZiBpbW1lZGlhdGUgbG9va3VwIHdhcyBkZXNpcmVkLCB0cmlnZ2VyIGxvb2t1cHMgbm93LgorICAgICAgICBpZiBsb29rdXBfbGluZXM6CisgICAgICAgICAgICBmb3IgZiBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAgZi5saW5lCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2xpc3Qoa2xhc3MsIGFfbGlzdCk6CisgICAgICAgICIiIkNyZWF0ZSBhIFN0YWNrU3VtbWFyeSBmcm9tIGEgc2ltcGxlIGxpc3Qgb2YgdHVwbGVzLgorCisgICAgICAgIFRoaXMgbWV0aG9kIHN1cHBvcnRzIHRoZSBvbGRlciBQeXRob24gQVBJLiBFYWNoIHR1cGxlIHNob3VsZCBiZSBhCisgICAgICAgIDQtdHVwbGUgd2l0aCAoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkgZWxlbWVudHMuCisgICAgICAgICIiIgorICAgICAgICAjIFdoaWxlIGRvaW5nIGEgZmFzdC1wYXRoIGNoZWNrIGZvciBpc2luc3RhbmNlKGFfbGlzdCwgU3RhY2tTdW1tYXJ5KSBpcworICAgICAgICAjIGFwcGVhbGluZywgaWRsZWxpYi5ydW4uY2xlYW51cF90cmFjZWJhY2sgYW5kIG90aGVyIHNpbWlsYXIgY29kZSBtYXkKKyAgICAgICAgIyBicmVhayB0aGlzIGJ5IG1ha2luZyBhcmJpdHJhcnkgZnJhbWVzIHBsYWluIHR1cGxlcywgc28gd2UgbmVlZCB0bworICAgICAgICAjIGNoZWNrIG9uIGEgZnJhbWUgYnkgZnJhbWUgYmFzaXMuCisgICAgICAgIHJlc3VsdCA9IFN0YWNrU3VtbWFyeSgpCisgICAgICAgIGZvciBmcmFtZSBpbiBhX2xpc3Q6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZyYW1lLCBGcmFtZVN1bW1hcnkpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZnJhbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUgPSBmcmFtZQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRnJhbWVTdW1tYXJ5KGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmU9bGluZSkpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBmb3JtYXQoc2VsZik6CisgICAgICAgICIiIkZvcm1hdCB0aGUgc3RhY2sgcmVhZHkgZm9yIHByaW50aW5nLgorCisgICAgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgcmVhZHkgZm9yIHByaW50aW5nLiAgRWFjaCBzdHJpbmcgaW4gdGhlCisgICAgICAgIHJlc3VsdGluZyBsaXN0IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZyYW1lIGZyb20gdGhlIHN0YWNrLgorICAgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIHJvdyA9IFtdCisgICAgICAgICAgICByb3cuYXBwZW5kKCcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KAorICAgICAgICAgICAgICAgIGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8sIGZyYW1lLm5hbWUpKQorICAgICAgICAgICAgaWYgZnJhbWUubGluZToKKyAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCcgICAge31cbicuZm9ybWF0KGZyYW1lLmxpbmUuc3RyaXAoKSkpCisgICAgICAgICAgICBpZiBmcmFtZS5sb2NhbHM6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZS5sb2NhbHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycuam9pbihyb3cpKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKworY2xhc3MgVHJhY2ViYWNrRXhjZXB0aW9uOgorICAgICIiIkFuIGV4Y2VwdGlvbiByZWFkeSBmb3IgcmVuZGVyaW5nLgorCisgICAgVGhlIHRyYWNlYmFjayBtb2R1bGUgY2FwdHVyZXMgZW5vdWdoIGF0dHJpYnV0ZXMgZnJvbSB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uCisgICAgdG8gdGhpcyBpbnRlcm1lZGlhcnkgZm9ybSB0byBlbnN1cmUgdGhhdCBubyByZWZlcmVuY2VzIGFyZSBoZWxkLCB3aGlsZQorICAgIHN0aWxsIGJlaW5nIGFibGUgdG8gZnVsbHkgcHJpbnQgb3IgZm9ybWF0IGl0LgorCisgICAgVXNlIGBmcm9tX2V4Y2VwdGlvbmAgdG8gY3JlYXRlIFRyYWNlYmFja0V4Y2VwdGlvbiBpbnN0YW5jZXMgZnJvbSBleGNlcHRpb24KKyAgICBvYmplY3RzLCBvciB0aGUgY29uc3RydWN0b3IgdG8gY3JlYXRlIFRyYWNlYmFja0V4Y2VwdGlvbiBpbnN0YW5jZXMgZnJvbQorICAgIGluZGl2aWR1YWwgY29tcG9uZW50cy4KKworICAgIC0gOmF0dHI6YF9fY2F1c2VfX2AgQSBUcmFjZWJhY2tFeGNlcHRpb24gb2YgdGhlIG9yaWdpbmFsICpfX2NhdXNlX18qLgorICAgIC0gOmF0dHI6YF9fY29udGV4dF9fYCBBIFRyYWNlYmFja0V4Y2VwdGlvbiBvZiB0aGUgb3JpZ2luYWwgKl9fY29udGV4dF9fKi4KKyAgICAtIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgVGhlICpfX3N1cHByZXNzX2NvbnRleHRfXyogdmFsdWUgZnJvbSB0aGUKKyAgICAgIG9yaWdpbmFsIGV4Y2VwdGlvbi4KKyAgICAtIDphdHRyOmBzdGFja2AgQSBgU3RhY2tTdW1tYXJ5YCByZXByZXNlbnRpbmcgdGhlIHRyYWNlYmFjay4KKyAgICAtIDphdHRyOmBleGNfdHlwZWAgVGhlIGNsYXNzIG9mIHRoZSBvcmlnaW5hbCB0cmFjZWJhY2suCisgICAgLSA6YXR0cjpgZmlsZW5hbWVgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGZpbGVuYW1lIHdoZXJlIHRoZSBlcnJvcgorICAgICAgb2NjdXJlZC4KKyAgICAtIDphdHRyOmBsaW5lbm9gIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIGxpbmVudW1iZXIgd2hlcmUgdGhlIGVycm9yCisgICAgICBvY2N1cmVkLgorICAgIC0gOmF0dHI6YHRleHRgIEZvciBzeW50YXggZXJyb3JzIC0gdGhlIHRleHQgd2hlcmUgdGhlIGVycm9yCisgICAgICBvY2N1cmVkLgorICAgIC0gOmF0dHI6YG9mZnNldGAgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQgd2hlcmUgdGhlCisgICAgICBlcnJvciBvY2N1cmVkLgorICAgIC0gOmF0dHI6YG1zZ2AgRm9yIHN5bnRheCBlcnJvcnMgLSB0aGUgY29tcGlsZXIgZXJyb3IgbWVzc2FnZS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrLCAqLCBsaW1pdD1Ob25lLAorICAgICAgICAgICAgbG9va3VwX2xpbmVzPVRydWUsIGNhcHR1cmVfbG9jYWxzPUZhbHNlLCBfc2Vlbj1Ob25lKToKKyAgICAgICAgIyBOQjogd2UgbmVlZCB0byBhY2NlcHQgZXhjX3RyYWNlYmFjaywgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrIHRvCisgICAgICAgICMgcGVybWl0IGJhY2t3YXJkcyBjb21wYXQgd2l0aCB0aGUgZXhpc3RpbmcgQVBJLCBvdGhlcndpc2Ugd2UKKyAgICAgICAgIyBuZWVkIHN0dWIgdGh1bmsgb2JqZWN0cyBqdXN0IHRvIGdsdWUgaXQgdG9nZXRoZXIuCisgICAgICAgICMgSGFuZGxlIGxvb3BzIGluIF9fY2F1c2VfXyBvciBfX2NvbnRleHRfXy4KKyAgICAgICAgaWYgX3NlZW4gaXMgTm9uZToKKyAgICAgICAgICAgIF9zZWVuID0gc2V0KCkKKyAgICAgICAgX3NlZW4uYWRkKGV4Y192YWx1ZSkKKyAgICAgICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSAodGhlIHdheSBQeXRob24gMi40IGFuZCBlYXJsaWVyIGRpZCkgdGhlIGNhc2Ugb2YKKyAgICAgICAgIyBiZWluZyBjYWxsZWQgd2l0aCBubyB0eXBlIG9yIHZhbHVlIChOb25lLCBOb25lLCBOb25lKS4KKyAgICAgICAgaWYgKGV4Y192YWx1ZSBhbmQgZXhjX3ZhbHVlLl9fY2F1c2VfXyBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIGV4Y192YWx1ZS5fX2NhdXNlX18gbm90IGluIF9zZWVuKToKKyAgICAgICAgICAgIGNhdXNlID0gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgIHR5cGUoZXhjX3ZhbHVlLl9fY2F1c2VfXyksCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVlLl9fY2F1c2VfXywKKyAgICAgICAgICAgICAgICBleGNfdmFsdWUuX19jYXVzZV9fLl9fdHJhY2ViYWNrX18sCisgICAgICAgICAgICAgICAgbGltaXQ9bGltaXQsCisgICAgICAgICAgICAgICAgbG9va3VwX2xpbmVzPUZhbHNlLAorICAgICAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPWNhcHR1cmVfbG9jYWxzLAorICAgICAgICAgICAgICAgIF9zZWVuPV9zZWVuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2F1c2UgPSBOb25lCisgICAgICAgIGlmIChleGNfdmFsdWUgYW5kIGV4Y192YWx1ZS5fX2NvbnRleHRfXyBpcyBub3QgTm9uZQorICAgICAgICAgICAgYW5kIGV4Y192YWx1ZS5fX2NvbnRleHRfXyBub3QgaW4gX3NlZW4pOgorICAgICAgICAgICAgY29udGV4dCA9IFRyYWNlYmFja0V4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICB0eXBlKGV4Y192YWx1ZS5fX2NvbnRleHRfXyksCisgICAgICAgICAgICAgICAgZXhjX3ZhbHVlLl9fY29udGV4dF9fLAorICAgICAgICAgICAgICAgIGV4Y192YWx1ZS5fX2NvbnRleHRfXy5fX3RyYWNlYmFja19fLAorICAgICAgICAgICAgICAgIGxpbWl0PWxpbWl0LAorICAgICAgICAgICAgICAgIGxvb2t1cF9saW5lcz1GYWxzZSwKKyAgICAgICAgICAgICAgICBjYXB0dXJlX2xvY2Fscz1jYXB0dXJlX2xvY2FscywKKyAgICAgICAgICAgICAgICBfc2Vlbj1fc2VlbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRleHQgPSBOb25lCisgICAgICAgIHNlbGYuZXhjX3RyYWNlYmFjayA9IGV4Y190cmFjZWJhY2sKKyAgICAgICAgc2VsZi5fX2NhdXNlX18gPSBjYXVzZQorICAgICAgICBzZWxmLl9fY29udGV4dF9fID0gY29udGV4dAorICAgICAgICBzZWxmLl9fc3VwcHJlc3NfY29udGV4dF9fID0gXAorICAgICAgICAgICAgZXhjX3ZhbHVlLl9fc3VwcHJlc3NfY29udGV4dF9fIGlmIGV4Y192YWx1ZSBlbHNlIEZhbHNlCisgICAgICAgICMgVE9ETzogbG9jYWxzLgorICAgICAgICBzZWxmLnN0YWNrID0gU3RhY2tTdW1tYXJ5LmV4dHJhY3QoCisgICAgICAgICAgICB3YWxrX3RiKGV4Y190cmFjZWJhY2spLCBsaW1pdD1saW1pdCwgbG9va3VwX2xpbmVzPWxvb2t1cF9saW5lcywKKyAgICAgICAgICAgIGNhcHR1cmVfbG9jYWxzPWNhcHR1cmVfbG9jYWxzKQorICAgICAgICBzZWxmLmV4Y190eXBlID0gZXhjX3R5cGUKKyAgICAgICAgIyBDYXB0dXJlIG5vdyB0byBwZXJtaXQgZnJlZWluZyByZXNvdXJjZXM6IG9ubHkgY29tcGxpY2F0aW9uIGlzIGluIHRoZQorICAgICAgICAjIHVub2ZmaWNpYWwgQVBJIF9mb3JtYXRfZmluYWxfZXhjX2xpbmUKKyAgICAgICAgc2VsZi5fc3RyID0gX3NvbWVfc3RyKGV4Y192YWx1ZSkKKyAgICAgICAgaWYgZXhjX3R5cGUgYW5kIGlzc3ViY2xhc3MoZXhjX3R5cGUsIFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICMgSGFuZGxlIFN5bnRheEVycm9yJ3Mgc3BlY2lhbGx5CisgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gZXhjX3ZhbHVlLmZpbGVuYW1lCisgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHN0cihleGNfdmFsdWUubGluZW5vKQorICAgICAgICAgICAgc2VsZi50ZXh0ID0gZXhjX3ZhbHVlLnRleHQKKyAgICAgICAgICAgIHNlbGYub2Zmc2V0ID0gZXhjX3ZhbHVlLm9mZnNldAorICAgICAgICAgICAgc2VsZi5tc2cgPSBleGNfdmFsdWUubXNnCisgICAgICAgIGlmIGxvb2t1cF9saW5lczoKKyAgICAgICAgICAgIHNlbGYuX2xvYWRfbGluZXMoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZXhjZXB0aW9uKHNlbGYsIGV4YywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgVHJhY2ViYWNrRXhjZXB0aW9uIGZyb20gYW4gZXhjZXB0aW9uLiIiIgorICAgICAgICByZXR1cm4gVHJhY2ViYWNrRXhjZXB0aW9uKAorICAgICAgICAgICAgdHlwZShleGMpLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgX2xvYWRfbGluZXMoc2VsZik6CisgICAgICAgICIiIlByaXZhdGUgQVBJLiBmb3JjZSBhbGwgbGluZXMgaW4gdGhlIHN0YWNrIHRvIGJlIGxvYWRlZC4iIiIKKyAgICAgICAgZm9yIGZyYW1lIGluIHNlbGYuc3RhY2s6CisgICAgICAgICAgICBmcmFtZS5saW5lCisgICAgICAgIGlmIHNlbGYuX19jb250ZXh0X186CisgICAgICAgICAgICBzZWxmLl9fY29udGV4dF9fLl9sb2FkX2xpbmVzKCkKKyAgICAgICAgaWYgc2VsZi5fX2NhdXNlX186CisgICAgICAgICAgICBzZWxmLl9fY2F1c2VfXy5fbG9hZF9saW5lcygpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18gPT0gb3RoZXIuX19kaWN0X18KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc3RyCisKKyAgICBkZWYgZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHNlbGYpOgorICAgICAgICAiIiJGb3JtYXQgdGhlIGV4Y2VwdGlvbiBwYXJ0IG9mIHRoZSB0cmFjZWJhY2suCisKKyAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIGdlbmVyYXRvciBvZiBzdHJpbmdzLCBlYWNoIGVuZGluZyBpbiBhIG5ld2xpbmUuCisKKyAgICAgICAgTm9ybWFsbHksIHRoZSBnZW5lcmF0b3IgZW1pdHMgYSBzaW5nbGUgc3RyaW5nOyBob3dldmVyLCBmb3IKKyAgICAgICAgU3ludGF4RXJyb3IgZXhjZXB0aW9ucywgaXQgZW1pdGVzIHNldmVyYWwgbGluZXMgdGhhdCAod2hlbgorICAgICAgICBwcmludGVkKSBkaXNwbGF5IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZSBzeW50YXgKKyAgICAgICAgZXJyb3Igb2NjdXJyZWQuCisKKyAgICAgICAgVGhlIG1lc3NhZ2UgaW5kaWNhdGluZyB3aGljaCBleGNlcHRpb24gb2NjdXJyZWQgaXMgYWx3YXlzIHRoZSBsYXN0CisgICAgICAgIHN0cmluZyBpbiB0aGUgb3V0cHV0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5leGNfdHlwZSBpcyBOb25lOgorICAgICAgICAgICAgeWllbGQgX2Zvcm1hdF9maW5hbF9leGNfbGluZShOb25lLCBzZWxmLl9zdHIpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzdHlwZSA9IHNlbGYuZXhjX3R5cGUuX19xdWFsbmFtZV9fCisgICAgICAgIHNtb2QgPSBzZWxmLmV4Y190eXBlLl9fbW9kdWxlX18KKyAgICAgICAgaWYgc21vZCBub3QgaW4gKCJfX21haW5fXyIsICJidWlsdGlucyIpOgorICAgICAgICAgICAgc3R5cGUgPSBzbW9kICsgJy4nICsgc3R5cGUKKworICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhzZWxmLmV4Y190eXBlLCBTeW50YXhFcnJvcik6CisgICAgICAgICAgICB5aWVsZCBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCBzZWxmLl9zdHIpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEl0IHdhcyBhIHN5bnRheCBlcnJvcjsgc2hvdyBleGFjdGx5IHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZC4KKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lIG9yICI8c3RyaW5nPiIKKyAgICAgICAgbGluZW5vID0gc3RyKHNlbGYubGluZW5vKSBvciAnPycKKyAgICAgICAgeWllbGQgJyAgRmlsZSAie30iLCBsaW5lIHt9XG4nLmZvcm1hdChmaWxlbmFtZSwgbGluZW5vKQorCisgICAgICAgIGJhZGxpbmUgPSBzZWxmLnRleHQKKyAgICAgICAgb2Zmc2V0ID0gc2VsZi5vZmZzZXQKKyAgICAgICAgaWYgYmFkbGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHlpZWxkICcgICAge31cbicuZm9ybWF0KGJhZGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBjYXJldHNwYWNlID0gYmFkbGluZS5yc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBtaW4obGVuKGNhcmV0c3BhY2UpLCBvZmZzZXQpIC0gMQorICAgICAgICAgICAgICAgIGNhcmV0c3BhY2UgPSBjYXJldHNwYWNlWzpvZmZzZXRdLmxzdHJpcCgpCisgICAgICAgICAgICAgICAgIyBub24tc3BhY2Ugd2hpdGVzcGFjZSAobGlrZXMgdGFicykgbXVzdCBiZSBrZXB0IGZvciBhbGlnbm1lbnQKKyAgICAgICAgICAgICAgICBjYXJldHNwYWNlID0gKChjLmlzc3BhY2UoKSBhbmQgYyBvciAnICcpIGZvciBjIGluIGNhcmV0c3BhY2UpCisgICAgICAgICAgICAgICAgeWllbGQgJyAgICB7fV5cbicuZm9ybWF0KCcnLmpvaW4oY2FyZXRzcGFjZSkpCisgICAgICAgIG1zZyA9IHNlbGYubXNnIG9yICI8bm8gZGV0YWlsIGF2YWlsYWJsZT4iCisgICAgICAgIHlpZWxkICJ7fToge31cbiIuZm9ybWF0KHN0eXBlLCBtc2cpCisKKyAgICBkZWYgZm9ybWF0KHNlbGYsICosIGNoYWluPVRydWUpOgorICAgICAgICAiIiJGb3JtYXQgdGhlIGV4Y2VwdGlvbi4KKworICAgICAgICBJZiBjaGFpbiBpcyBub3QgKlRydWUqLCAqX19jYXVzZV9fKiBhbmQgKl9fY29udGV4dF9fKiB3aWxsIG5vdCBiZSBmb3JtYXR0ZWQuCisKKyAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIGdlbmVyYXRvciBvZiBzdHJpbmdzLCBlYWNoIGVuZGluZyBpbiBhIG5ld2xpbmUgYW5kCisgICAgICAgIHNvbWUgY29udGFpbmluZyBpbnRlcm5hbCBuZXdsaW5lcy4gYHByaW50X2V4Y2VwdGlvbmAgaXMgYSB3cmFwcGVyIGFyb3VuZAorICAgICAgICB0aGlzIG1ldGhvZCB3aGljaCBqdXN0IHByaW50cyB0aGUgbGluZXMgdG8gYSBmaWxlLgorCisgICAgICAgIFRoZSBtZXNzYWdlIGluZGljYXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAorICAgICAgICBzdHJpbmcgaW4gdGhlIG91dHB1dC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGNoYWluOgorICAgICAgICAgICAgaWYgc2VsZi5fX2NhdXNlX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9fY2F1c2VfXy5mb3JtYXQoY2hhaW49Y2hhaW4pCisgICAgICAgICAgICAgICAgeWllbGQgX2NhdXNlX21lc3NhZ2UKKyAgICAgICAgICAgIGVsaWYgKHNlbGYuX19jb250ZXh0X18gaXMgbm90IE5vbmUgYW5kCisgICAgICAgICAgICAgICAgbm90IHNlbGYuX19zdXBwcmVzc19jb250ZXh0X18pOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5fX2NvbnRleHRfXy5mb3JtYXQoY2hhaW49Y2hhaW4pCisgICAgICAgICAgICAgICAgeWllbGQgX2NvbnRleHRfbWVzc2FnZQorICAgICAgICBpZiBzZWxmLmV4Y190cmFjZWJhY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB5aWVsZCAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICB5aWVsZCBmcm9tIHNlbGYuc3RhY2suZm9ybWF0KCkKKyAgICAgICAgeWllbGQgZnJvbSBzZWxmLmZvcm1hdF9leGNlcHRpb25fb25seSgpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2VtYWxsb2MucHkgYi9MaWIvdHJhY2VtYWxsb2MucHkKaW5kZXggYWRlZGZjNS4uNjI4OGRhOCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlbWFsbG9jLnB5CisrKyBiL0xpYi90cmFjZW1hbGxvYy5weQpAQCAtMjk3LDcgKzI5Nyw3IEBACiAKIGRlZiBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lKToKICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybWNhc2UoZmlsZW5hbWUpCi0gICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCcucHljJywgJy5weW8nKSk6CisgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5weWMnKToKICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVs6LTFdCiAgICAgcmV0dXJuIGZpbGVuYW1lCiAKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5IGIvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vc29ydGluZ19hbmltYXRlLnB5IGIvTGliL3R1cnRsZWRlbW8vc29ydGluZ19hbmltYXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNWEwYWIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdHVydGxlZGVtby9zb3J0aW5nX2FuaW1hdGUucHkKQEAgLTAsMCArMSwyMDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyIiIgorCisgICAgICAgICBzb3J0aW5nX2FuaW1hdGlvbi5weQorCitBIG1pbmltYWwgc29ydGluZyBhbGdvcml0aG0gYW5pbWF0aW9uOgorU29ydHMgYSBzaGVsZiBvZiAxMCBibG9ja3MgdXNpbmcgaW5zZXJ0aW9uCitzb3J0LCBzZWxlY3Rpb24gc29ydCBhbmQgcXVpY2tzb3J0LgorCitTaGVsZnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIGJ1aWx0aW4gbGlzdHMuCisKK0Jsb2NrcyBhcmUgdHVydGxlcyB3aXRoIHNoYXBlICJzcXVhcmUiLCBidXQKK3N0cmV0Y2hlZCB0byByZWN0YW5nbGVzIGJ5IHNoYXBlc2l6ZSgpCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgVG8gZXhpdCBwcmVzcyBzcGFjZSBidXR0b24KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyIiIgorZnJvbSB0dXJ0bGUgaW1wb3J0ICoKK2ltcG9ydCByYW5kb20KKworCitjbGFzcyBCbG9jayhUdXJ0bGUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLnNpemUgPSBzaXplCisgICAgICAgIFR1cnRsZS5fX2luaXRfXyhzZWxmLCBzaGFwZT0ic3F1YXJlIiwgdmlzaWJsZT1GYWxzZSkKKyAgICAgICAgc2VsZi5wdSgpCisgICAgICAgIHNlbGYuc2hhcGVzaXplKHNpemUgKiAxLjUsIDEuNSwgMikgIyBzcXVhcmUtLT5yZWN0YW5nbGUKKyAgICAgICAgc2VsZi5maWxsY29sb3IoImJsYWNrIikKKyAgICAgICAgc2VsZi5zdCgpCisKKyAgICBkZWYgZ2xvdyhzZWxmKToKKyAgICAgICAgc2VsZi5maWxsY29sb3IoInJlZCIpCisKKyAgICBkZWYgdW5nbG93KHNlbGYpOgorICAgICAgICBzZWxmLmZpbGxjb2xvcigiYmxhY2siKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkJsb2NrIHNpemU6IHswfSIuZm9ybWF0KHNlbGYuc2l6ZSkKKworCitjbGFzcyBTaGVsZihsaXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB5KToKKyAgICAgICAgImNyZWF0ZSBhIHNoZWxmLiB5IGlzIHktcG9zaXRpb24gb2YgZmlyc3QgYmxvY2siCisgICAgICAgIHNlbGYueSA9IHkKKyAgICAgICAgc2VsZi54ID0gLTE1MAorCisgICAgZGVmIHB1c2goc2VsZiwgZCk6CisgICAgICAgIHdpZHRoLCBfLCBfID0gZC5zaGFwZXNpemUoKQorICAgICAgICAjIGFsaWduIGJsb2NrcyBieSB0aGUgYm90dG9tIGVkZ2UKKyAgICAgICAgeV9vZmZzZXQgPSB3aWR0aCAvIDIgKiAyMAorICAgICAgICBkLnNldHkoc2VsZi55ICsgeV9vZmZzZXQpCisgICAgICAgIGQuc2V0eChzZWxmLnggKyAzNCAqIGxlbihzZWxmKSkKKyAgICAgICAgc2VsZi5hcHBlbmQoZCkKKworICAgIGRlZiBfY2xvc2VfZ2FwX2Zyb21faShzZWxmLCBpKToKKyAgICAgICAgZm9yIGIgaW4gc2VsZltpOl06CisgICAgICAgICAgICB4cG9zLCBfID0gYi5wb3MoKQorICAgICAgICAgICAgYi5zZXR4KHhwb3MgLSAzNCkKKworICAgIGRlZiBfb3Blbl9nYXBfZnJvbV9pKHNlbGYsIGkpOgorICAgICAgICBmb3IgYiBpbiBzZWxmW2k6XToKKyAgICAgICAgICAgIHhwb3MsIF8gPSBiLnBvcygpCisgICAgICAgICAgICBiLnNldHgoeHBvcyArIDM0KQorCisgICAgZGVmIHBvcChzZWxmLCBrZXkpOgorICAgICAgICBiID0gbGlzdC5wb3Aoc2VsZiwga2V5KQorICAgICAgICBiLmdsb3coKQorICAgICAgICBiLnNldHkoMjAwKQorICAgICAgICBzZWxmLl9jbG9zZV9nYXBfZnJvbV9pKGtleSkKKyAgICAgICAgcmV0dXJuIGIKKworICAgIGRlZiBpbnNlcnQoc2VsZiwga2V5LCBiKToKKyAgICAgICAgc2VsZi5fb3Blbl9nYXBfZnJvbV9pKGtleSkKKyAgICAgICAgbGlzdC5pbnNlcnQoc2VsZiwga2V5LCBiKQorICAgICAgICBiLnNldHgoc2VsZi54ICsgMzQgKiBrZXkpCisgICAgICAgIHdpZHRoLCBfLCBfID0gYi5zaGFwZXNpemUoKQorICAgICAgICAjIGFsaWduIGJsb2NrcyBieSB0aGUgYm90dG9tIGVkZ2UKKyAgICAgICAgeV9vZmZzZXQgPSB3aWR0aCAvIDIgKiAyMAorICAgICAgICBiLnNldHkoc2VsZi55ICsgeV9vZmZzZXQpCisgICAgICAgIGIudW5nbG93KCkKKworZGVmIGlzb3J0KHNoZWxmKToKKyAgICBsZW5ndGggPSBsZW4oc2hlbGYpCisgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuZ3RoKToKKyAgICAgICAgaG9sZSA9IGkKKyAgICAgICAgd2hpbGUgaG9sZSA+IDAgYW5kIHNoZWxmW2ldLnNpemUgPCBzaGVsZltob2xlIC0gMV0uc2l6ZToKKyAgICAgICAgICAgIGhvbGUgPSBob2xlIC0gMQorICAgICAgICBzaGVsZi5pbnNlcnQoaG9sZSwgc2hlbGYucG9wKGkpKQorICAgIHJldHVybgorCitkZWYgc3NvcnQoc2hlbGYpOgorICAgIGxlbmd0aCA9IGxlbihzaGVsZikKKyAgICBmb3IgaiBpbiByYW5nZSgwLCBsZW5ndGggLSAxKToKKyAgICAgICAgaW1pbiA9IGoKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoaiArIDEsIGxlbmd0aCk6CisgICAgICAgICAgICBpZiBzaGVsZltpXS5zaXplIDwgc2hlbGZbaW1pbl0uc2l6ZToKKyAgICAgICAgICAgICAgICBpbWluID0gaQorICAgICAgICBpZiBpbWluICE9IGo6CisgICAgICAgICAgICBzaGVsZi5pbnNlcnQoaiwgc2hlbGYucG9wKGltaW4pKQorCitkZWYgcGFydGl0aW9uKHNoZWxmLCBsZWZ0LCByaWdodCwgcGl2b3RfaW5kZXgpOgorICAgIHBpdm90ID0gc2hlbGZbcGl2b3RfaW5kZXhdCisgICAgc2hlbGYuaW5zZXJ0KHJpZ2h0LCBzaGVsZi5wb3AocGl2b3RfaW5kZXgpKQorICAgIHN0b3JlX2luZGV4ID0gbGVmdAorICAgIGZvciBpIGluIHJhbmdlKGxlZnQsIHJpZ2h0KTogIyByYW5nZSBpcyBub24taW5jbHVzaXZlIG9mIGVuZGluZyB2YWx1ZQorICAgICAgICBpZiBzaGVsZltpXS5zaXplIDwgcGl2b3Quc2l6ZToKKyAgICAgICAgICAgIHNoZWxmLmluc2VydChzdG9yZV9pbmRleCwgc2hlbGYucG9wKGkpKQorICAgICAgICAgICAgc3RvcmVfaW5kZXggPSBzdG9yZV9pbmRleCArIDEKKyAgICBzaGVsZi5pbnNlcnQoc3RvcmVfaW5kZXgsIHNoZWxmLnBvcChyaWdodCkpICMgbW92ZSBwaXZvdCB0byBjb3JyZWN0IHBvc2l0aW9uCisgICAgcmV0dXJuIHN0b3JlX2luZGV4CisKK2RlZiBxc29ydChzaGVsZiwgbGVmdCwgcmlnaHQpOgorICAgIGlmIGxlZnQgPCByaWdodDoKKyAgICAgICAgcGl2b3RfaW5kZXggPSBsZWZ0CisgICAgICAgIHBpdm90X25ld19pbmRleCA9IHBhcnRpdGlvbihzaGVsZiwgbGVmdCwgcmlnaHQsIHBpdm90X2luZGV4KQorICAgICAgICBxc29ydChzaGVsZiwgbGVmdCwgcGl2b3RfbmV3X2luZGV4IC0gMSkKKyAgICAgICAgcXNvcnQoc2hlbGYsIHBpdm90X25ld19pbmRleCArIDEsIHJpZ2h0KQorCitkZWYgcmFuZG9taXplKCk6CisgICAgZGlzYWJsZV9rZXlzKCkKKyAgICBjbGVhcigpCisgICAgdGFyZ2V0ID0gbGlzdChyYW5nZSgxMCkpCisgICAgcmFuZG9tLnNodWZmbGUodGFyZ2V0KQorICAgIGZvciBpLCB0IGluIGVudW1lcmF0ZSh0YXJnZXQpOgorICAgICAgICBmb3IgaiBpbiByYW5nZShpLCBsZW4ocykpOgorICAgICAgICAgICAgaWYgc1tqXS5zaXplID09IHQgKyAxOgorICAgICAgICAgICAgICAgIHMuaW5zZXJ0KGksIHMucG9wKGopKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMxKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMyLCBsaW5lPTEpCisgICAgZW5hYmxlX2tleXMoKQorCitkZWYgc2hvd190ZXh0KHRleHQsIGxpbmU9MCk6CisgICAgbGluZSA9IDIwICogbGluZQorICAgIGdvdG8oMCwtMjUwIC0gbGluZSkKKyAgICB3cml0ZSh0ZXh0LCBhbGlnbj0iY2VudGVyIiwgZm9udD0oIkNvdXJpZXIiLCAxNiwgImJvbGQiKSkKKworZGVmIHN0YXJ0X3Nzb3J0KCk6CisgICAgZGlzYWJsZV9rZXlzKCkKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KCJTZWxlY3Rpb24gU29ydCIpCisgICAgc3NvcnQocykKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisKK2RlZiBzdGFydF9pc29ydCgpOgorICAgIGRpc2FibGVfa2V5cygpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dCgiSW5zZXJ0aW9uIFNvcnQiKQorICAgIGlzb3J0KHMpCisgICAgY2xlYXIoKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMxKQorICAgIHNob3dfdGV4dChpbnN0cnVjdGlvbnMyLCBsaW5lPTEpCisgICAgZW5hYmxlX2tleXMoKQorCitkZWYgc3RhcnRfcXNvcnQoKToKKyAgICBkaXNhYmxlX2tleXMoKQorICAgIGNsZWFyKCkKKyAgICBzaG93X3RleHQoIlF1aWNrc29ydCIpCisgICAgcXNvcnQocywgMCwgbGVuKHMpIC0gMSkKKyAgICBjbGVhcigpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisKK2RlZiBpbml0X3NoZWxmKCk6CisgICAgZ2xvYmFsIHMKKyAgICBzID0gU2hlbGYoLTIwMCkKKyAgICB2YWxzID0gKDQsIDIsIDgsIDksIDEsIDUsIDEwLCAzLCA3LCA2KQorICAgIGZvciBpIGluIHZhbHM6CisgICAgICAgIHMucHVzaChCbG9jayhpKSkKKworZGVmIGRpc2FibGVfa2V5cygpOgorICAgIG9ua2V5KE5vbmUsICJzIikKKyAgICBvbmtleShOb25lLCAiaSIpCisgICAgb25rZXkoTm9uZSwgInEiKQorICAgIG9ua2V5KE5vbmUsICJyIikKKworZGVmIGVuYWJsZV9rZXlzKCk6CisgICAgb25rZXkoc3RhcnRfaXNvcnQsICJpIikKKyAgICBvbmtleShzdGFydF9zc29ydCwgInMiKQorICAgIG9ua2V5KHN0YXJ0X3Fzb3J0LCAicSIpCisgICAgb25rZXkocmFuZG9taXplLCAiciIpCisgICAgb25rZXkoYnllLCAic3BhY2UiKQorCitkZWYgbWFpbigpOgorICAgIGdldHNjcmVlbigpLmNsZWFyc2NyZWVuKCkKKyAgICBodCgpOyBwZW51cCgpCisgICAgaW5pdF9zaGVsZigpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczEpCisgICAgc2hvd190ZXh0KGluc3RydWN0aW9uczIsIGxpbmU9MSkKKyAgICBlbmFibGVfa2V5cygpCisgICAgbGlzdGVuKCkKKyAgICByZXR1cm4gIkVWRU5UTE9PUCIKKworaW5zdHJ1Y3Rpb25zMSA9ICJwcmVzcyBpIGZvciBpbnNlcnRpb24gc29ydCwgcyBmb3Igc2VsZWN0aW9uIHNvcnQsIHEgZm9yIHF1aWNrc29ydCIKK2luc3RydWN0aW9uczIgPSAic3BhY2ViYXIgdG8gcXVpdCwgciB0byByYW5kb21pemUiCisKK2lmIF9fbmFtZV9fPT0iX19tYWluX18iOgorICAgIG1zZyA9IG1haW4oKQorICAgIG1haW5sb29wKCkKZGlmZiAtLWdpdCBhL0xpYi90eXBlcy5weSBiL0xpYi90eXBlcy5weQppbmRleCA0ZmIyZGVmLi40ODg5MWNkIDEwMDY0NAotLS0gYS9MaWIvdHlwZXMucHkKKysrIGIvTGliL3R5cGVzLnB5CkBAIC0xOSw2ICsxOSwxMSBAQAogICAgIHlpZWxkIDEKIEdlbmVyYXRvclR5cGUgPSB0eXBlKF9nKCkpCiAKK2FzeW5jIGRlZiBfYygpOiBwYXNzCitfYyA9IF9jKCkKK0Nvcm91dGluZVR5cGUgPSB0eXBlKF9jKQorX2MuY2xvc2UoKSAgIyBQcmV2ZW50IFJlc291cmNlV2FybmluZworCiBjbGFzcyBfQzoKICAgICBkZWYgX20oc2VsZik6IHBhc3MKIE1ldGhvZFR5cGUgPSB0eXBlKF9DKCkuX20pCkBAIC00MCw3ICs0NSw3IEBACiBHZXRTZXREZXNjcmlwdG9yVHlwZSA9IHR5cGUoRnVuY3Rpb25UeXBlLl9fY29kZV9fKQogTWVtYmVyRGVzY3JpcHRvclR5cGUgPSB0eXBlKEZ1bmN0aW9uVHlwZS5fX2dsb2JhbHNfXykKIAotZGVsIHN5cywgX2YsIF9nLCBfQywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBmb3IgZXhwb3J0CitkZWwgc3lzLCBfZiwgX2csIF9DLCBfYywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBmb3IgZXhwb3J0CiAKIAogIyBQcm92aWRlIGEgUEVQIDMxMTUgY29tcGxpYW50IG1lY2hhbmlzbSBmb3IgY2xhc3MgY3JlYXRpb24KQEAgLTE1OCw0ICsxNjMsOTkgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKK2ltcG9ydCBmdW5jdG9vbHMgYXMgX2Z1bmN0b29scworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYyBhcyBfY29sbGVjdGlvbnNfYWJjCisKK2NsYXNzIF9HZW5lcmF0b3JXcmFwcGVyOgorICAgICMgVE9ETzogSW1wbGVtZW50IHRoaXMgaW4gQy4KKyAgICBkZWYgX19pbml0X18oc2VsZiwgZ2VuKToKKyAgICAgICAgc2VsZi5fX3dyYXBwZWQgPSBnZW4KKyAgICAgICAgc2VsZi5fX2lzZ2VuID0gZ2VuLl9fY2xhc3NfXyBpcyBHZW5lcmF0b3JUeXBlCisgICAgICAgIHNlbGYuX19uYW1lX18gPSBnZXRhdHRyKGdlbiwgJ19fbmFtZV9fJywgTm9uZSkKKyAgICAgICAgc2VsZi5fX3F1YWxuYW1lX18gPSBnZXRhdHRyKGdlbiwgJ19fcXVhbG5hbWVfXycsIE5vbmUpCisgICAgZGVmIHNlbmQoc2VsZiwgdmFsKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLnNlbmQodmFsKQorICAgIGRlZiB0aHJvdyhzZWxmLCB0cCwgKnJlc3QpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQudGhyb3codHAsICpyZXN0KQorICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmNsb3NlKCkKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ2lfY29kZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX193cmFwcGVkLmdpX2NvZGUKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ2lfZnJhbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC5naV9mcmFtZQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnaV9ydW5uaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX3dyYXBwZWQuZ2lfcnVubmluZworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnaV95aWVsZGZyb20oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZC5naV95aWVsZGZyb20KKyAgICBjcl9jb2RlID0gZ2lfY29kZQorICAgIGNyX2ZyYW1lID0gZ2lfZnJhbWUKKyAgICBjcl9ydW5uaW5nID0gZ2lfcnVubmluZworICAgIGNyX2F3YWl0ID0gZ2lfeWllbGRmcm9tCisgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbmV4dChzZWxmLl9fd3JhcHBlZCkKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX19pc2dlbjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fd3JhcHBlZAorICAgICAgICByZXR1cm4gc2VsZgorICAgIF9fYXdhaXRfXyA9IF9faXRlcl9fCisKK2RlZiBjb3JvdXRpbmUoZnVuYyk6CisgICAgIiIiQ29udmVydCByZWd1bGFyIGdlbmVyYXRvciBmdW5jdGlvbiB0byBhIGNvcm91dGluZS4iIiIKKworICAgIGlmIG5vdCBjYWxsYWJsZShmdW5jKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0eXBlcy5jb3JvdXRpbmUoKSBleHBlY3RzIGEgY2FsbGFibGUnKQorCisgICAgaWYgKGZ1bmMuX19jbGFzc19fIGlzIEZ1bmN0aW9uVHlwZSBhbmQKKyAgICAgICAgZ2V0YXR0cihmdW5jLCAnX19jb2RlX18nLCBOb25lKS5fX2NsYXNzX18gaXMgQ29kZVR5cGUpOgorCisgICAgICAgIGNvX2ZsYWdzID0gZnVuYy5fX2NvZGVfXy5jb19mbGFncworCisgICAgICAgICMgQ2hlY2sgaWYgJ2Z1bmMnIGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLgorICAgICAgICAjICgweDE4MCA9PSBDT19DT1JPVVRJTkUgfCBDT19JVEVSQUJMRV9DT1JPVVRJTkUpCisgICAgICAgIGlmIGNvX2ZsYWdzICYgMHgxODA6CisgICAgICAgICAgICByZXR1cm4gZnVuYworCisgICAgICAgICMgQ2hlY2sgaWYgJ2Z1bmMnIGlzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLgorICAgICAgICAjICgweDIwID09IENPX0dFTkVSQVRPUikKKyAgICAgICAgaWYgY29fZmxhZ3MgJiAweDIwOgorICAgICAgICAgICAgIyBUT0RPOiBJbXBsZW1lbnQgdGhpcyBpbiBDLgorICAgICAgICAgICAgY28gPSBmdW5jLl9fY29kZV9fCisgICAgICAgICAgICBmdW5jLl9fY29kZV9fID0gQ29kZVR5cGUoCisgICAgICAgICAgICAgICAgY28uY29fYXJnY291bnQsIGNvLmNvX2t3b25seWFyZ2NvdW50LCBjby5jb19ubG9jYWxzLAorICAgICAgICAgICAgICAgIGNvLmNvX3N0YWNrc2l6ZSwKKyAgICAgICAgICAgICAgICBjby5jb19mbGFncyB8IDB4MTAwLCAgIyAweDEwMCA9PSBDT19JVEVSQUJMRV9DT1JPVVRJTkUKKyAgICAgICAgICAgICAgICBjby5jb19jb2RlLAorICAgICAgICAgICAgICAgIGNvLmNvX2NvbnN0cywgY28uY29fbmFtZXMsIGNvLmNvX3Zhcm5hbWVzLCBjby5jb19maWxlbmFtZSwKKyAgICAgICAgICAgICAgICBjby5jb19uYW1lLCBjby5jb19maXJzdGxpbmVubywgY28uY29fbG5vdGFiLCBjby5jb19mcmVldmFycywKKyAgICAgICAgICAgICAgICBjby5jb19jZWxsdmFycykKKyAgICAgICAgICAgIHJldHVybiBmdW5jCisKKyAgICAjIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBwcmltYXJpbHkgdG8gc3VwcG9ydCBmdW5jdGlvbnMgdGhhdAorICAgICMgcmV0dXJuIGdlbmVyYXRvci1saWtlIG9iamVjdHMgKGZvciBpbnN0YW5jZSBnZW5lcmF0b3JzCisgICAgIyBjb21waWxlZCB3aXRoIEN5dGhvbikuCisKKyAgICBAX2Z1bmN0b29scy53cmFwcyhmdW5jKQorICAgIGRlZiB3cmFwcGVkKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGNvcm8gPSBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgaWYgKGNvcm8uX19jbGFzc19fIGlzIENvcm91dGluZVR5cGUgb3IKKyAgICAgICAgICAgIGNvcm8uX19jbGFzc19fIGlzIEdlbmVyYXRvclR5cGUgYW5kIGNvcm8uZ2lfY29kZS5jb19mbGFncyAmIDB4MTAwKToKKyAgICAgICAgICAgICMgJ2Nvcm8nIGlzIGEgbmF0aXZlIGNvcm91dGluZSBvYmplY3Qgb3IgYW4gaXRlcmFibGUgY29yb3V0aW5lCisgICAgICAgICAgICByZXR1cm4gY29ybworICAgICAgICBpZiAoaXNpbnN0YW5jZShjb3JvLCBfY29sbGVjdGlvbnNfYWJjLkdlbmVyYXRvcikgYW5kCisgICAgICAgICAgICBub3QgaXNpbnN0YW5jZShjb3JvLCBfY29sbGVjdGlvbnNfYWJjLkNvcm91dGluZSkpOgorICAgICAgICAgICAgIyAnY29ybycgaXMgZWl0aGVyIGEgcHVyZSBQeXRob24gZ2VuZXJhdG9yIGl0ZXJhdG9yLCBvciBpdAorICAgICAgICAgICAgIyBpbXBsZW1lbnRzIGNvbGxlY3Rpb25zLmFiYy5HZW5lcmF0b3IgKGFuZCBkb2VzIG5vdCBpbXBsZW1lbnQKKyAgICAgICAgICAgICMgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSkuCisgICAgICAgICAgICByZXR1cm4gX0dlbmVyYXRvcldyYXBwZXIoY29ybykKKyAgICAgICAgIyAnY29ybycgaXMgZWl0aGVyIGFuIGluc3RhbmNlIG9mIGNvbGxlY3Rpb25zLmFiYy5Db3JvdXRpbmUgb3IKKyAgICAgICAgIyBzb21lIG90aGVyIG9iamVjdCAtLSBwYXNzIGl0IHRocm91Z2guCisgICAgICAgIHJldHVybiBjb3JvCisKKyAgICByZXR1cm4gd3JhcHBlZAorCisKIF9fYWxsX18gPSBbbiBmb3IgbiBpbiBnbG9iYWxzKCkgaWYgbls6MV0gIT0gJ18nXQpkaWZmIC0tZ2l0IGEvTGliL3R5cGluZy5weSBiL0xpYi90eXBpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE0OTgyZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90eXBpbmcucHkKQEAgLTAsMCArMSwxNjQ4IEBACisjIFRPRE8gbml0czoKKyMgR2V0IHJpZCBvZiBhc3NlcnRzIHRoYXQgYXJlIHRoZSBjYWxsZXIncyBmYXVsdC4KKyMgRG9jc3RyaW5ncyAoZS5nLiBBQkNzKS4KKworaW1wb3J0IGFiYworZnJvbSBhYmMgaW1wb3J0IGFic3RyYWN0bWV0aG9kLCBhYnN0cmFjdHByb3BlcnR5CitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCByZSBhcyBzdGRsaWJfcmUgICMgQXZvaWQgY29uZnVzaW9uIHdpdGggdGhlIHJlIHdlIGV4cG9ydC4KK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcwordHJ5OgorICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMgYXMgY29sbGVjdGlvbnNfYWJjCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IGNvbGxlY3Rpb25zIGFzIGNvbGxlY3Rpb25zX2FiYyAgIyBGYWxsYmFjayBmb3IgUFkzLjIuCisKKworIyBQbGVhc2Uga2VlcCBfX2FsbF9fIGFscGhhYmV0aXplZCB3aXRoaW4gZWFjaCBjYXRlZ29yeS4KK19fYWxsX18gPSBbCisgICAgIyBTdXBlci1zcGVjaWFsIHR5cGluZyBwcmltaXRpdmVzLgorICAgICdBbnknLAorICAgICdDYWxsYWJsZScsCisgICAgJ0dlbmVyaWMnLAorICAgICdPcHRpb25hbCcsCisgICAgJ1R5cGVWYXInLAorICAgICdVbmlvbicsCisgICAgJ1R1cGxlJywKKworICAgICMgQUJDcyAoZnJvbSBjb2xsZWN0aW9ucy5hYmMpLgorICAgICdBYnN0cmFjdFNldCcsICAjIGNvbGxlY3Rpb25zLmFiYy5TZXQuCisgICAgJ0J5dGVTdHJpbmcnLAorICAgICdDb250YWluZXInLAorICAgICdIYXNoYWJsZScsCisgICAgJ0l0ZW1zVmlldycsCisgICAgJ0l0ZXJhYmxlJywKKyAgICAnSXRlcmF0b3InLAorICAgICdLZXlzVmlldycsCisgICAgJ01hcHBpbmcnLAorICAgICdNYXBwaW5nVmlldycsCisgICAgJ011dGFibGVNYXBwaW5nJywKKyAgICAnTXV0YWJsZVNlcXVlbmNlJywKKyAgICAnTXV0YWJsZVNldCcsCisgICAgJ1NlcXVlbmNlJywKKyAgICAnU2l6ZWQnLAorICAgICdWYWx1ZXNWaWV3JywKKworICAgICMgU3RydWN0dXJhbCBjaGVja3MsIGEuay5hLiBwcm90b2NvbHMuCisgICAgJ1JldmVyc2libGUnLAorICAgICdTdXBwb3J0c0FicycsCisgICAgJ1N1cHBvcnRzRmxvYXQnLAorICAgICdTdXBwb3J0c0ludCcsCisgICAgJ1N1cHBvcnRzUm91bmQnLAorCisgICAgIyBDb25jcmV0ZSBjb2xsZWN0aW9uIHR5cGVzLgorICAgICdEaWN0JywKKyAgICAnTGlzdCcsCisgICAgJ1NldCcsCisgICAgJ05hbWVkVHVwbGUnLCAgIyBOb3QgcmVhbGx5IGEgdHlwZS4KKyAgICAnR2VuZXJhdG9yJywKKworICAgICMgT25lLW9mZiB0aGluZ3MuCisgICAgJ0FueVN0cicsCisgICAgJ2Nhc3QnLAorICAgICdnZXRfdHlwZV9oaW50cycsCisgICAgJ25vX3R5cGVfY2hlY2snLAorICAgICdub190eXBlX2NoZWNrX2RlY29yYXRvcicsCisgICAgJ292ZXJsb2FkJywKKworICAgICMgU3VibW9kdWxlcy4KKyAgICAnaW8nLAorICAgICdyZScsCitdCisKKworZGVmIF9xdWFsbmFtZSh4KToKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywgMyk6CisgICAgICAgIHJldHVybiB4Ll9fcXVhbG5hbWVfXworICAgIGVsc2U6CisgICAgICAgICMgRmFsbCBiYWNrIHRvIGp1c3QgbmFtZS4KKyAgICAgICAgcmV0dXJuIHguX19uYW1lX18KKworCitjbGFzcyBUeXBpbmdNZXRhKHR5cGUpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgZXZlcnkgdHlwZSBkZWZpbmVkIGJlbG93LgorCisgICAgVGhpcyBvdmVycmlkZXMgX19uZXdfXygpIHRvIHJlcXVpcmUgYW4gZXh0cmEga2V5d29yZCBwYXJhbWV0ZXIKKyAgICAnX3Jvb3QnLCB3aGljaCBzZXJ2ZXMgYXMgYSBndWFyZCBhZ2FpbnN0IG5haXZlIHN1YmNsYXNzaW5nIG9mIHRoZQorICAgIHR5cGluZyBjbGFzc2VzLiAgQW55IGxlZ2l0aW1hdGUgY2xhc3MgZGVmaW5lZCB1c2luZyBhIG1ldGFjbGFzcworICAgIGRlcml2ZWQgZnJvbSBUeXBpbmdNZXRhIChpbmNsdWRpbmcgaW50ZXJuYWwgc3ViY2xhc3NlcyBjcmVhdGVkIGJ5CisgICAgZS5nLiAgVW5pb25bWCwgWV0pIG11c3QgcGFzcyBfcm9vdD1UcnVlLgorCisgICAgVGhpcyBhbHNvIGRlZmluZXMgYSBkdW1teSBjb25zdHJ1Y3RvciAoYWxsIHRoZSB3b3JrIGlzIGRvbmUgaW4KKyAgICBfX25ld19fKSBhbmQgYSBuaWNlciByZXByKCkuCisgICAgIiIiCisKKyAgICBfaXNfcHJvdG9jb2wgPSBGYWxzZQorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIGlmIG5vdCBfcm9vdDoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2Fubm90IHN1YmNsYXNzICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcsICcuam9pbihtYXAoX3R5cGVfcmVwciwgYmFzZXMpKSBvciAnKCknKSkKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBfZXZhbF90eXBlKHNlbGYsIGdsb2JhbG5zLCBsb2NhbG5zKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvIGludGVycHJldCBmb3J3YXJkIHJlZmVyZW5jZXMuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIFVuaW9uWydDJ10gaXMgaW50ZXJuYWxseSBzdG9yZWQgYXMKKyAgICAgICAgVW5pb25bX0ZvcndhcmRSZWYoJ0MnKV0sIHdoaWNoIHNob3VsZCBldmFsdWF0ZSB0byBfVW5pb25bQ10sCisgICAgICAgIHdoZXJlIEMgaXMgYW4gb2JqZWN0IGZvdW5kIGluIGdsb2JhbG5zIG9yIGxvY2FsbnMgKHNlYXJjaGluZworICAgICAgICBsb2NhbG5zIGZpcnN0LCBvZiBjb3Vyc2UpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy4lcycgJSAoc2VsZi5fX21vZHVsZV9fLCBfcXVhbG5hbWUoc2VsZikpCisKKworY2xhc3MgRmluYWw6CisgICAgIiIiTWl4LWluIGNsYXNzIHRvIHByZXZlbnQgaW5zdGFudGlhdGlvbi4iIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBkZWYgX19uZXdfXyhzZWxmLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgaW5zdGFudGlhdGUgJXIiICUgc2VsZi5fX2NsYXNzX18pCisKKworY2xhc3MgX0ZvcndhcmRSZWYoVHlwaW5nTWV0YSk6CisgICAgIiIiV3JhcHBlciB0byBob2xkIGEgZm9yd2FyZCByZWZlcmVuY2UuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIGFyZyk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZywgc3RyKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm9yd2FyZFJlZiBtdXN0IGJlIGEgc3RyaW5nIC0tIGdvdCAlcicgJSAoYXJnLCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGFyZywgJzxzdHJpbmc+JywgJ2V2YWwnKQorICAgICAgICBleGNlcHQgU3ludGF4RXJyb3I6CisgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcignRm9yd2FyZFJlZiBtdXN0IGJlIGFuIGV4cHJlc3Npb24gLS0gZ290ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnLCkpCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBhcmcsICgpLCB7fSwgX3Jvb3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfYXJnX18gPSBhcmcKKyAgICAgICAgc2VsZi5fX2ZvcndhcmRfY29kZV9fID0gY29kZQorICAgICAgICBzZWxmLl9fZm9yd2FyZF9ldmFsdWF0ZWRfXyA9IEZhbHNlCisgICAgICAgIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18gPSBOb25lCisgICAgICAgIHR5cGluZ19nbG9iYWxzID0gZ2xvYmFscygpCisgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQorICAgICAgICB3aGlsZSBmcmFtZSBpcyBub3QgTm9uZSBhbmQgZnJhbWUuZl9nbG9iYWxzIGlzIHR5cGluZ19nbG9iYWxzOgorICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKKyAgICAgICAgYXNzZXJ0IGZyYW1lIGlzIG5vdCBOb25lCisgICAgICAgIHNlbGYuX19mb3J3YXJkX2ZyYW1lX18gPSBmcmFtZQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9ldmFsX3R5cGUoc2VsZiwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsb2NhbG5zLCBkaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm9yd2FyZFJlZiBsb2NhbG5zIG11c3QgYmUgYSBkaWN0IC0tIGdvdCAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2NhbG5zLCkpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGdsb2JhbG5zLCBkaWN0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRm9yd2FyZFJlZiBnbG9iYWxucyBtdXN0IGJlIGEgZGljdCAtLSBnb3QgJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2xvYmFsbnMsKSkKKyAgICAgICAgaWYgbm90IHNlbGYuX19mb3J3YXJkX2V2YWx1YXRlZF9fOgorICAgICAgICAgICAgaWYgZ2xvYmFsbnMgaXMgTm9uZSBhbmQgbG9jYWxucyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGdsb2JhbG5zID0gbG9jYWxucyA9IHt9CisgICAgICAgICAgICBlbGlmIGdsb2JhbG5zIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZ2xvYmFsbnMgPSBsb2NhbG5zCisgICAgICAgICAgICBlbGlmIGxvY2FsbnMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBsb2NhbG5zID0gZ2xvYmFsbnMKKyAgICAgICAgICAgIHNlbGYuX19mb3J3YXJkX3ZhbHVlX18gPSBfdHlwZV9jaGVjaygKKyAgICAgICAgICAgICAgICBldmFsKHNlbGYuX19mb3J3YXJkX2NvZGVfXywgZ2xvYmFsbnMsIGxvY2FsbnMpLAorICAgICAgICAgICAgICAgICJGb3J3YXJkIHJlZmVyZW5jZXMgbXVzdCBldmFsdWF0ZSB0byB0eXBlcy4iKQorICAgICAgICAgICAgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX18gPSBUcnVlCisgICAgICAgIHJldHVybiBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJGb3J3YXJkIHJlZmVyZW5jZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5fX2ZvcndhcmRfZXZhbHVhdGVkX186CisgICAgICAgICAgICBnbG9iYWxucyA9IHNlbGYuX19mb3J3YXJkX2ZyYW1lX18uZl9nbG9iYWxzCisgICAgICAgICAgICBsb2NhbG5zID0gc2VsZi5fX2ZvcndhcmRfZnJhbWVfXy5mX2xvY2FscworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2V2YWxfdHlwZShnbG9iYWxucywgbG9jYWxucykKKyAgICAgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlICAjIFRvbyBlYXJseS4KKyAgICAgICAgcmV0dXJuIGlzc3ViY2xhc3MoY2xzLCBzZWxmLl9fZm9yd2FyZF92YWx1ZV9fKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ19Gb3J3YXJkUmVmKCVyKScgJSAoc2VsZi5fX2ZvcndhcmRfYXJnX18sKQorCisKK2NsYXNzIF9UeXBlQWxpYXM6CisgICAgIiIiSW50ZXJuYWwgaGVscGVyIGNsYXNzIGZvciBkZWZpbmluZyBnZW5lcmljIHZhcmlhbnRzIG9mIGNvbmNyZXRlIHR5cGVzLgorCisgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IGEgdHlwZTsgbGV0J3MgY2FsbCBpdCBhIHBzZXVkby10eXBlLiAgSXQgY2FuCisgICAgYmUgdXNlZCBpbiBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzLCBlLmcuIGlzaW5zdGFuY2UobSwgTWF0Y2gpCisgICAgb3IgaXNzdWJjbGFzcyh0eXBlKG0pLCBNYXRjaCkuICBIb3dldmVyLCBpdCBjYW5ub3QgYmUgaXRzZWxmIHRoZQorICAgIHRhcmdldCBvZiBhbiBpc3N1YmNsYXNzKCkgY2FsbDsgZS5nLiBpc3N1YmNsYXNzKE1hdGNoLCBDKSAoZm9yCisgICAgc29tZSBhcmJpdHJhcnkgY2xhc3MgQykgcmFpc2VzIFR5cGVFcnJvciByYXRoZXIgdGhhbiByZXR1cm5pbmcKKyAgICBGYWxzZS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgnbmFtZScsICd0eXBlX3ZhcicsICdpbXBsX3R5cGUnLCAndHlwZV9jaGVja2VyJykKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgICAgIFRoaXMgb25seSBleGlzdHMgdG8gZ2l2ZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIGluIGNhc2UKKyAgICAgICAgc29tZW9uZSB0cmllcyB0byBzdWJjbGFzcyBhIHR5cGUgYWxpYXMgKG5vdCBhIGdvb2QgaWRlYSkuCisgICAgICAgICIiIgorICAgICAgICBpZiAobGVuKGFyZ3MpID09IDMgYW5kCisgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cikgYW5kCisgICAgICAgICAgICBpc2luc3RhbmNlKGFyZ3NbMV0sIHR1cGxlKSk6CisgICAgICAgICAgICAjIENsb3NlIGVub3VnaC4KKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQSB0eXBlIGFsaWFzIGNhbm5vdCBiZSBzdWJjbGFzc2VkIikKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX25ld19fKGNscykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB0eXBlX3ZhciwgaW1wbF90eXBlLCB0eXBlX2NoZWNrZXIpOgorICAgICAgICAiIiJJbml0aWFsaXplci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgbmFtZTogVGhlIG5hbWUsIGUuZy4gJ1BhdHRlcm4nLgorICAgICAgICAgICAgdHlwZV92YXI6IFRoZSB0eXBlIHBhcmFtZXRlciwgZS5nLiBBbnlTdHIsIG9yIHRoZQorICAgICAgICAgICAgICAgIHNwZWNpZmljIHR5cGUsIGUuZy4gc3RyLgorICAgICAgICAgICAgaW1wbF90eXBlOiBUaGUgaW1wbGVtZW50YXRpb24gdHlwZS4KKyAgICAgICAgICAgIHR5cGVfY2hlY2tlcjogRnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBpbXBsX3R5cGUgaW5zdGFuY2UuCisgICAgICAgICAgICAgICAgYW5kIHJldHVybnMgYSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBhIHR5cGVfdmFyIGluc3RhbmNlLgorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobmFtZSwgc3RyKSwgcmVwcihuYW1lKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0eXBlX3ZhciwgdHlwZSksIHJlcHIodHlwZV92YXIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGltcGxfdHlwZSwgdHlwZSksIHJlcHIoaW1wbF90eXBlKQorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UoaW1wbF90eXBlLCBUeXBpbmdNZXRhKSwgcmVwcihpbXBsX3R5cGUpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi50eXBlX3ZhciA9IHR5cGVfdmFyCisgICAgICAgIHNlbGYuaW1wbF90eXBlID0gaW1wbF90eXBlCisgICAgICAgIHNlbGYudHlwZV9jaGVja2VyID0gdHlwZV9jaGVja2VyCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXNbJXNdIiAlIChzZWxmLm5hbWUsIF90eXBlX3JlcHIoc2VsZi50eXBlX3ZhcikpCisKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgcGFyYW1ldGVyKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyLCB0eXBlKSwgcmVwcihwYXJhbWV0ZXIpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYudHlwZV92YXIsIFR5cGVWYXIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBjYW5ub3QgYmUgZnVydGhlciBwYXJhbWV0ZXJpemVkLiIgJSBzZWxmKQorICAgICAgICBpZiBzZWxmLnR5cGVfdmFyLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHBhcmFtZXRlciwgVW5pb25bc2VsZi50eXBlX3Zhci5fX2NvbnN0cmFpbnRzX19dKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIGlzIG5vdCBhIHZhbGlkIHN1YnN0aXR1dGlvbiBmb3IgJXMuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbWV0ZXIsIHNlbGYudHlwZV92YXIpKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5uYW1lLCBwYXJhbWV0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmltcGxfdHlwZSwgc2VsZi50eXBlX2NoZWNrZXIpCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIGFsaWFzZXMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjbHMsIF9UeXBlQWxpYXMpOgorICAgICAgICAgICAgIyBDb3ZhcmlhbmNlLiAgRm9yIG5vdywgd2UgY29tcGFyZSBieSBuYW1lLgorICAgICAgICAgICAgcmV0dXJuIChjbHMubmFtZSA9PSBzZWxmLm5hbWUgYW5kCisgICAgICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoY2xzLnR5cGVfdmFyLCBzZWxmLnR5cGVfdmFyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaXMgaXMgdG9vIGxlbmllbnQsIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAjIGltcGxlbWVudGF0aW9uIHR5cGUgZG9lc24ndCBjYXJyeSBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgICAgIyB3aGV0aGVyIGl0IGlzIGFib3V0IGJ5dGVzIG9yIHN0ciAoZm9yIGV4YW1wbGUpLgorICAgICAgICAgICAgcmV0dXJuIGlzc3ViY2xhc3MoY2xzLCBzZWxmLmltcGxfdHlwZSkKKworCitkZWYgX2hhc190eXBlX3Zhcih0KToKKyAgICByZXR1cm4gdCBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZSh0LCBUeXBpbmdNZXRhKSBhbmQgdC5faGFzX3R5cGVfdmFyKCkKKworCitkZWYgX2V2YWxfdHlwZSh0LCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgaWYgaXNpbnN0YW5jZSh0LCBUeXBpbmdNZXRhKToKKyAgICAgICAgcmV0dXJuIHQuX2V2YWxfdHlwZShnbG9iYWxucywgbG9jYWxucykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gdAorCisKK2RlZiBfdHlwZV9jaGVjayhhcmcsIG1zZyk6CisgICAgIiIiQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgaXMgYSB0eXBlLCBhbmQgcmV0dXJuIGl0LgorCisgICAgQXMgYSBzcGVjaWFsIGNhc2UsIGFjY2VwdCBOb25lIGFuZCByZXR1cm4gdHlwZShOb25lKSBpbnN0ZWFkLgorICAgIEFsc28sIF9UeXBlQWxpYXMgaW5zdGFuY2VzIChlLmcuIE1hdGNoLCBQYXR0ZXJuKSBhcmUgYWNjZXB0YWJsZS4KKworICAgIFRoZSBtc2cgYXJndW1lbnQgaXMgYSBodW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlLCBlLmcuCisKKyAgICAgICAgIlVuaW9uW2FyZywgLi4uXTogYXJnIHNob3VsZCBiZSBhIHR5cGUuIgorCisgICAgV2UgYXBwZW5kIHRoZSByZXByKCkgb2YgdGhlIGFjdHVhbCB2YWx1ZSAodHJ1bmNhdGVkIHRvIDEwMCBjaGFycykuCisgICAgIiIiCisgICAgaWYgYXJnIGlzIE5vbmU6CisgICAgICAgIHJldHVybiB0eXBlKE5vbmUpCisgICAgaWYgaXNpbnN0YW5jZShhcmcsIHN0cik6CisgICAgICAgIGFyZyA9IF9Gb3J3YXJkUmVmKGFyZykKKyAgICBpZiBub3QgaXNpbnN0YW5jZShhcmcsICh0eXBlLCBfVHlwZUFsaWFzKSk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cgKyAiIEdvdCAlLjEwMHIuIiAlIChhcmcsKSkKKyAgICByZXR1cm4gYXJnCisKKworZGVmIF90eXBlX3JlcHIob2JqKToKKyAgICAiIiJSZXR1cm4gdGhlIHJlcHIoKSBvZiBhbiBvYmplY3QsIHNwZWNpYWwtY2FzaW5nIHR5cGVzLgorCisgICAgSWYgb2JqIGlzIGEgdHlwZSwgd2UgcmV0dXJuIGEgc2hvcnRlciB2ZXJzaW9uIHRoYW4gdGhlIGRlZmF1bHQKKyAgICB0eXBlLl9fcmVwcl9fLCBiYXNlZCBvbiB0aGUgbW9kdWxlIGFuZCBxdWFsaWZpZWQgbmFtZSwgd2hpY2ggaXMKKyAgICB0eXBpY2FsbHkgZW5vdWdoIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgdHlwZS4gIEZvciBldmVyeXRoaW5nCisgICAgZWxzZSwgd2UgZmFsbCBiYWNrIG9uIHJlcHIob2JqKS4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSkgYW5kIG5vdCBpc2luc3RhbmNlKG9iaiwgVHlwaW5nTWV0YSk6CisgICAgICAgIGlmIG9iai5fX21vZHVsZV9fID09ICdidWlsdGlucyc6CisgICAgICAgICAgICByZXR1cm4gX3F1YWxuYW1lKG9iaikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXMnICUgKG9iai5fX21vZHVsZV9fLCBfcXVhbG5hbWUob2JqKSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcmVwcihvYmopCisKKworY2xhc3MgQW55TWV0YShUeXBpbmdNZXRhKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIEFueS4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9RmFsc2UpOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgX3Jvb3Q9X3Jvb3QpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJBbnkgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKSAgIyBUbyBUeXBlRXJyb3IuCisgICAgICAgIHJldHVybiBUcnVlCisKKworY2xhc3MgQW55KEZpbmFsLCBtZXRhY2xhc3M9QW55TWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiU3BlY2lhbCB0eXBlIGluZGljYXRpbmcgYW4gdW5jb25zdHJhaW5lZCB0eXBlLgorCisgICAgLSBBbnkgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIEFueS4KKyAgICAtIEFueSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIEFueS4KKyAgICAtIEFzIGEgc3BlY2lhbCBjYXNlLCBBbnkgYW5kIG9iamVjdCBhcmUgc3ViY2xhc3NlcyBvZiBlYWNoIG90aGVyLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBUeXBlVmFyKFR5cGluZ01ldGEsIG1ldGFjbGFzcz1UeXBpbmdNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJUeXBlIHZhcmlhYmxlLgorCisgICAgVXNhZ2U6OgorCisgICAgICBUID0gVHlwZVZhcignVCcpICAjIENhbiBiZSBhbnl0aGluZworICAgICAgQSA9IFR5cGVWYXIoJ0EnLCBzdHIsIGJ5dGVzKSAgIyBNdXN0IGJlIHN0ciBvciBieXRlcworCisgICAgVHlwZSB2YXJpYWJsZXMgZXhpc3QgcHJpbWFyaWx5IGZvciB0aGUgYmVuZWZpdCBvZiBzdGF0aWMgdHlwZQorICAgIGNoZWNrZXJzLiAgVGhleSBzZXJ2ZSBhcyB0aGUgcGFyYW1ldGVycyBmb3IgZ2VuZXJpYyB0eXBlcyBhcyB3ZWxsCisgICAgYXMgZm9yIGdlbmVyaWMgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBTZWUgY2xhc3MgR2VuZXJpYyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uIG9uIGdlbmVyaWMgdHlwZXMuICBHZW5lcmljIGZ1bmN0aW9ucyB3b3JrIGFzIGZvbGxvd3M6CisKKyAgICAgIGRlZiByZXBlYXQoeDogVCwgbjogaW50KSAtPiBTZXF1ZW5jZVtUXToKKyAgICAgICAgICAnJydSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgbiByZWZlcmVuY2VzIHRvIHguJycnCisgICAgICAgICAgcmV0dXJuIFt4XSpuCisKKyAgICAgIGRlZiBsb25nZXN0KHg6IEEsIHk6IEEpIC0+IEE6CisgICAgICAgICAgJycnUmV0dXJuIHRoZSBsb25nZXN0IG9mIHR3byBzdHJpbmdzLicnJworICAgICAgICAgIHJldHVybiB4IGlmIGxlbih4KSA+PSBsZW4oeSkgZWxzZSB5CisKKyAgICBUaGUgbGF0dGVyIGV4YW1wbGUncyBzaWduYXR1cmUgaXMgZXNzZW50aWFsbHkgdGhlIG92ZXJsb2FkaW5nCisgICAgb2YgKHN0ciwgc3RyKSAtPiBzdHIgYW5kIChieXRlcywgYnl0ZXMpIC0+IGJ5dGVzLiAgQWxzbyBub3RlCisgICAgdGhhdCBpZiB0aGUgYXJndW1lbnRzIGFyZSBpbnN0YW5jZXMgb2Ygc29tZSBzdWJjbGFzcyBvZiBzdHIsCisgICAgdGhlIHJldHVybiB0eXBlIGlzIHN0aWxsIHBsYWluIHN0ci4KKworICAgIEF0IHJ1bnRpbWUsIGlzaW5zdGFuY2UoeCwgVCkgd2lsbCByYWlzZSBUeXBlRXJyb3IuICBIb3dldmVyLAorICAgIGlzc3ViY2xhc3MoQywgVCkgaXMgdHJ1ZSBmb3IgYW55IGNsYXNzIEMsIGFuZCBpc3N1YmNsYXNzKHN0ciwgQSkKKyAgICBhbmQgaXNzdWJjbGFzcyhieXRlcywgQSkgYXJlIHRydWUsIGFuZCBpc3N1YmNsYXNzKGludCwgQSkgaXMKKyAgICBmYWxzZS4KKworICAgIFR5cGUgdmFyaWFibGVzIG1heSBiZSBtYXJrZWQgY292YXJpYW50IG9yIGNvbnRyYXZhcmlhbnQgYnkgcGFzc2luZworICAgIGNvdmFyaWFudD1UcnVlIG9yIGNvbnRyYXZhcmlhbnQ9VHJ1ZS4gIFNlZSBQRVAgNDg0IGZvciBtb3JlCisgICAgZGV0YWlscy4gIEJ5IGRlZmF1bHQgdHlwZSB2YXJpYWJsZXMgYXJlIGludmFyaWFudC4KKworICAgIFR5cGUgdmFyaWFibGVzIGNhbiBiZSBpbnRyb3NwZWN0ZWQuIGUuZy46CisKKyAgICAgIFQuX19uYW1lX18gPT0gJ1QnCisgICAgICBULl9fY29uc3RyYWludHNfXyA9PSAoKQorICAgICAgVC5fX2NvdmFyaWFudF9fID09IEZhbHNlCisgICAgICBULl9fY29udHJhdmFyaWFudF9fID0gRmFsc2UKKyAgICAgIEEuX19jb25zdHJhaW50c19fID09IChzdHIsIGJ5dGVzKQorICAgICIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCAqY29uc3RyYWludHMsIGJvdW5kPU5vbmUsCisgICAgICAgICAgICAgICAgY292YXJpYW50PUZhbHNlLCBjb250cmF2YXJpYW50PUZhbHNlKToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIChGaW5hbCwpLCB7fSwgX3Jvb3Q9VHJ1ZSkKKyAgICAgICAgaWYgY292YXJpYW50IGFuZCBjb250cmF2YXJpYW50OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQml2YXJpYW50IHR5cGUgdmFyaWFibGVzIGFyZSBub3Qgc3VwcG9ydGVkLiIpCisgICAgICAgIHNlbGYuX19jb3ZhcmlhbnRfXyA9IGJvb2woY292YXJpYW50KQorICAgICAgICBzZWxmLl9fY29udHJhdmFyaWFudF9fID0gYm9vbChjb250cmF2YXJpYW50KQorICAgICAgICBpZiBjb25zdHJhaW50cyBhbmQgYm91bmQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNvbnN0cmFpbnRzIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIGJvdW5kPS4uLiIpCisgICAgICAgIGlmIGNvbnN0cmFpbnRzIGFuZCBsZW4oY29uc3RyYWludHMpID09IDE6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkEgc2luZ2xlIGNvbnN0cmFpbnQgaXMgbm90IGFsbG93ZWQiKQorICAgICAgICBtc2cgPSAiVHlwZVZhcihuYW1lLCBjb25zdHJhaW50LCAuLi4pOiBjb25zdHJhaW50cyBtdXN0IGJlIHR5cGVzLiIKKyAgICAgICAgc2VsZi5fX2NvbnN0cmFpbnRzX18gPSB0dXBsZShfdHlwZV9jaGVjayh0LCBtc2cpIGZvciB0IGluIGNvbnN0cmFpbnRzKQorICAgICAgICBpZiBib3VuZDoKKyAgICAgICAgICAgIHNlbGYuX19ib3VuZF9fID0gX3R5cGVfY2hlY2soYm91bmQsICJCb3VuZCBtdXN0IGJlIGEgdHlwZS4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fX2JvdW5kX18gPSBOb25lCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2NvdmFyaWFudF9fOgorICAgICAgICAgICAgcHJlZml4ID0gJysnCisgICAgICAgIGVsaWYgc2VsZi5fX2NvbnRyYXZhcmlhbnRfXzoKKyAgICAgICAgICAgIHByZWZpeCA9ICctJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJlZml4ID0gJ34nCisgICAgICAgIHJldHVybiBwcmVmaXggKyBzZWxmLl9fbmFtZV9fCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgdmFyaWFibGVzIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgIyBUT0RPOiBNYWtlIHRoaXMgcmFpc2UgVHlwZUVycm9yIHRvbz8KKyAgICAgICAgaWYgY2xzIGlzIHNlbGY6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5fX2JvdW5kX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhjbHMsIHNlbGYuX19ib3VuZF9fKQorICAgICAgICBpZiBzZWxmLl9fY29uc3RyYWludHNfXzoKKyAgICAgICAgICAgIHJldHVybiBhbnkoaXNzdWJjbGFzcyhjbHMsIGMpIGZvciBjIGluIHNlbGYuX19jb25zdHJhaW50c19fKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKKyMgU29tZSB1bmNvbnN0cmFpbmVkIHR5cGUgdmFyaWFibGVzLiAgVGhlc2UgYXJlIHVzZWQgYnkgdGhlIGNvbnRhaW5lciB0eXBlcy4KK1QgPSBUeXBlVmFyKCdUJykgICMgQW55IHR5cGUuCitLVCA9IFR5cGVWYXIoJ0tUJykgICMgS2V5IHR5cGUuCitWVCA9IFR5cGVWYXIoJ1ZUJykgICMgVmFsdWUgdHlwZS4KK1RfY28gPSBUeXBlVmFyKCdUX2NvJywgY292YXJpYW50PVRydWUpICAjIEFueSB0eXBlIGNvdmFyaWFudCBjb250YWluZXJzLgorVl9jbyA9IFR5cGVWYXIoJ1ZfY28nLCBjb3ZhcmlhbnQ9VHJ1ZSkgICMgQW55IHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuCitWVF9jbyA9IFR5cGVWYXIoJ1ZUX2NvJywgY292YXJpYW50PVRydWUpICAjIFZhbHVlIHR5cGUgY292YXJpYW50IGNvbnRhaW5lcnMuCitUX2NvbnRyYSA9IFR5cGVWYXIoJ1RfY29udHJhJywgY29udHJhdmFyaWFudD1UcnVlKSAgIyBEaXR0byBjb250cmF2YXJpYW50LgorCisjIEEgdXNlZnVsIHR5cGUgdmFyaWFibGUgd2l0aCBjb25zdHJhaW50cy4gIFRoaXMgcmVwcmVzZW50cyBzdHJpbmcgdHlwZXMuCisjIFRPRE86IFdoYXQgYWJvdXQgYnl0ZWFycmF5LCBtZW1vcnl2aWV3PworQW55U3RyID0gVHlwZVZhcignQW55U3RyJywgYnl0ZXMsIHN0cikKKworCitjbGFzcyBVbmlvbk1ldGEoVHlwaW5nTWV0YSk6CisgICAgIiIiTWV0YWNsYXNzIGZvciBVbmlvbi4iIiIKKworICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgcGFyYW1ldGVycz1Ob25lLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIGlmIHBhcmFtZXRlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJFeHBlY3RlZCBwYXJhbWV0ZXJzPTx0dXBsZT4iKQorICAgICAgICAjIEZsYXR0ZW4gb3V0IFVuaW9uW1VuaW9uWy4uLl0sIC4uLl0gYW5kIHR5cGUtY2hlY2sgbm9uLVVuaW9uIGFyZ3MuCisgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgIG1zZyA9ICJVbmlvblthcmcsIC4uLl06IGVhY2ggYXJnIG11c3QgYmUgYSB0eXBlLiIKKyAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyczoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocCwgVW5pb25NZXRhKToKKyAgICAgICAgICAgICAgICBwYXJhbXMuZXh0ZW5kKHAuX191bmlvbl9wYXJhbXNfXykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChfdHlwZV9jaGVjayhwLCBtc2cpKQorICAgICAgICAjIFdlZWQgb3V0IHN0cmljdCBkdXBsaWNhdGVzLCBwcmVzZXJ2aW5nIHRoZSBmaXJzdCBvZiBlYWNoIG9jY3VycmVuY2UuCisgICAgICAgIGFsbF9wYXJhbXMgPSBzZXQocGFyYW1zKQorICAgICAgICBpZiBsZW4oYWxsX3BhcmFtcykgPCBsZW4ocGFyYW1zKToKKyAgICAgICAgICAgIG5ld19wYXJhbXMgPSBbXQorICAgICAgICAgICAgZm9yIHQgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgIGlmIHQgaW4gYWxsX3BhcmFtczoKKyAgICAgICAgICAgICAgICAgICAgbmV3X3BhcmFtcy5hcHBlbmQodCkKKyAgICAgICAgICAgICAgICAgICAgYWxsX3BhcmFtcy5yZW1vdmUodCkKKyAgICAgICAgICAgIHBhcmFtcyA9IG5ld19wYXJhbXMKKyAgICAgICAgICAgIGFzc2VydCBub3QgYWxsX3BhcmFtcywgYWxsX3BhcmFtcworICAgICAgICAjIFdlZWQgb3V0IHN1YmNsYXNzZXMuCisgICAgICAgICMgRS5nLiBVbmlvbltpbnQsIEVtcGxveWVlLCBNYW5hZ2VyXSA9PSBVbmlvbltpbnQsIEVtcGxveWVlXS4KKyAgICAgICAgIyBJZiBBbnkgb3Igb2JqZWN0IGlzIHByZXNlbnQgaXQgd2lsbCBiZSB0aGUgc29sZSBzdXJ2aXZvci4KKyAgICAgICAgIyBJZiBib3RoIEFueSBhbmQgb2JqZWN0IGFyZSBwcmVzZW50LCBBbnkgd2lucy4KKyAgICAgICAgIyBOZXZlciBkaXNjYXJkIHR5cGUgdmFyaWFibGVzLCBleGNlcHQgYWdhaW5zdCBBbnkuCisgICAgICAgICMgKEluIHBhcnRpY3VsYXIsIFVuaW9uW3N0ciwgQW55U3RyXSAhPSBBbnlTdHIuKQorICAgICAgICBhbGxfcGFyYW1zID0gc2V0KHBhcmFtcykKKyAgICAgICAgZm9yIHQxIGluIHBhcmFtczoKKyAgICAgICAgICAgIGlmIHQxIGlzIEFueToKKyAgICAgICAgICAgICAgICByZXR1cm4gQW55CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHQxLCBUeXBlVmFyKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgYW55KGlzc3ViY2xhc3ModDEsIHQyKQorICAgICAgICAgICAgICAgICAgIGZvciB0MiBpbiBhbGxfcGFyYW1zIC0ge3QxfSBpZiBub3QgaXNpbnN0YW5jZSh0MiwgVHlwZVZhcikpOgorICAgICAgICAgICAgICAgIGFsbF9wYXJhbXMucmVtb3ZlKHQxKQorICAgICAgICAjIEl0J3Mgbm90IGEgdW5pb24gaWYgdGhlcmUncyBvbmx5IG9uZSB0eXBlIGxlZnQuCisgICAgICAgIGlmIGxlbihhbGxfcGFyYW1zKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIGFsbF9wYXJhbXMucG9wKCkKKyAgICAgICAgIyBDcmVhdGUgYSBuZXcgY2xhc3Mgd2l0aCB0aGVzZSBwYXJhbXMuCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywge30sIF9yb290PVRydWUpCisgICAgICAgIHNlbGYuX191bmlvbl9wYXJhbXNfXyA9IHR1cGxlKHQgZm9yIHQgaW4gcGFyYW1zIGlmIHQgaW4gYWxsX3BhcmFtcykKKyAgICAgICAgc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXyA9IGZyb3plbnNldChzZWxmLl9fdW5pb25fcGFyYW1zX18pCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIHAgPSB0dXBsZShfZXZhbF90eXBlKHQsIGdsb2JhbG5zLCBsb2NhbG5zKQorICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKQorICAgICAgICBpZiBwID09IHNlbGYuX191bmlvbl9wYXJhbXNfXzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIF9yb290PVRydWUpCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fOgorICAgICAgICAgICAgICAgIGlmIF9oYXNfdHlwZV92YXIodCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByID0gc3VwZXIoKS5fX3JlcHJfXygpCisgICAgICAgIGlmIHNlbGYuX191bmlvbl9wYXJhbXNfXzoKKyAgICAgICAgICAgIHIgKz0gJ1slc10nICUgKCcsICcuam9pbihfdHlwZV9yZXByKHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gc2VsZi5fX3VuaW9uX3BhcmFtc19fKSkKKyAgICAgICAgcmV0dXJuIHIKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBwYXJhbWV0ZXJzKToKKyAgICAgICAgaWYgc2VsZi5fX3VuaW9uX3BhcmFtc19fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW5ub3Qgc3Vic2NyaXB0IGFuIGV4aXN0aW5nIFVuaW9uLiBVc2UgVW5pb25bdSwgdF0gaW5zdGVhZC4iKQorICAgICAgICBpZiBwYXJhbWV0ZXJzID09ICgpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW5ub3QgdGFrZSBhIFVuaW9uIG9mIG5vIHR5cGVzLiIpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtZXRlcnMsIHR1cGxlKToKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSAocGFyYW1ldGVycywpCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksIHBhcmFtZXRlcnMsIF9yb290PVRydWUpCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIFVuaW9uTWV0YSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX191bmlvbl9zZXRfcGFyYW1zX18gPT0gb3RoZXIuX191bmlvbl9zZXRfcGFyYW1zX18KKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX3VuaW9uX3NldF9wYXJhbXNfXykKKworICAgIGRlZiBfX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBvYmopOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuaW9ucyBjYW5ub3QgYmUgdXNlZCB3aXRoIGlzaW5zdGFuY2UoKS4iKQorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGNscyBpcyBBbnk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLl9fdW5pb25fcGFyYW1zX18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKGNscywgVW5pb25NZXRhKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoY2xzLCBVbmlvbk1ldGEpOgorICAgICAgICAgICAgaWYgY2xzLl9fdW5pb25fcGFyYW1zX18gaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBhbGwoaXNzdWJjbGFzcyhjLCBzZWxmKSBmb3IgYyBpbiAoY2xzLl9fdW5pb25fcGFyYW1zX18pKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2UoY2xzLCBUeXBlVmFyKToKKyAgICAgICAgICAgIGlmIGNscyBpbiBzZWxmLl9fdW5pb25fcGFyYW1zX186CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIGNscy5fX2NvbnN0cmFpbnRzX186CisgICAgICAgICAgICAgICAgcmV0dXJuIGlzc3ViY2xhc3MoVW5pb25bY2xzLl9fY29uc3RyYWludHNfX10sIHNlbGYpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBhbnkoaXNzdWJjbGFzcyhjbHMsIHQpIGZvciB0IGluIHNlbGYuX191bmlvbl9wYXJhbXNfXykKKworCitjbGFzcyBVbmlvbihGaW5hbCwgbWV0YWNsYXNzPVVuaW9uTWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiVW5pb24gdHlwZTsgVW5pb25bWCwgWV0gbWVhbnMgZWl0aGVyIFggb3IgWS4KKworICAgIFRvIGRlZmluZSBhIHVuaW9uLCB1c2UgZS5nLiBVbmlvbltpbnQsIHN0cl0uICBEZXRhaWxzOgorCisgICAgLSBUaGUgYXJndW1lbnRzIG11c3QgYmUgdHlwZXMgYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lLgorCisgICAgLSBOb25lIGFzIGFuIGFyZ3VtZW50IGlzIGEgc3BlY2lhbCBjYXNlIGFuZCBpcyByZXBsYWNlZCBieQorICAgICAgdHlwZShOb25lKS4KKworICAgIC0gVW5pb25zIG9mIHVuaW9ucyBhcmUgZmxhdHRlbmVkLCBlLmcuOjoKKworICAgICAgICBVbmlvbltVbmlvbltpbnQsIHN0cl0sIGZsb2F0XSA9PSBVbmlvbltpbnQsIHN0ciwgZmxvYXRdCisKKyAgICAtIFVuaW9ucyBvZiBhIHNpbmdsZSBhcmd1bWVudCB2YW5pc2gsIGUuZy46OgorCisgICAgICAgIFVuaW9uW2ludF0gPT0gaW50ICAjIFRoZSBjb25zdHJ1Y3RvciBhY3R1YWxseSByZXR1cm5zIGludAorCisgICAgLSBSZWR1bmRhbnQgYXJndW1lbnRzIGFyZSBza2lwcGVkLCBlLmcuOjoKKworICAgICAgICBVbmlvbltpbnQsIHN0ciwgaW50XSA9PSBVbmlvbltpbnQsIHN0cl0KKworICAgIC0gV2hlbiBjb21wYXJpbmcgdW5pb25zLCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgaWdub3JlZCwgZS5nLjo6CisKKyAgICAgICAgVW5pb25baW50LCBzdHJdID09IFVuaW9uW3N0ciwgaW50XQorCisgICAgLSBXaGVuIHR3byBhcmd1bWVudHMgaGF2ZSBhIHN1YmNsYXNzIHJlbGF0aW9uc2hpcCwgdGhlIGxlYXN0CisgICAgICBkZXJpdmVkIGFyZ3VtZW50IGlzIGtlcHQsIGUuZy46OgorCisgICAgICAgIGNsYXNzIEVtcGxveWVlOiBwYXNzCisgICAgICAgIGNsYXNzIE1hbmFnZXIoRW1wbG95ZWUpOiBwYXNzCisgICAgICAgIFVuaW9uW2ludCwgRW1wbG95ZWUsIE1hbmFnZXJdID09IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIFVuaW9uW01hbmFnZXIsIGludCwgRW1wbG95ZWVdID09IFVuaW9uW2ludCwgRW1wbG95ZWVdCisgICAgICAgIFVuaW9uW0VtcGxveWVlLCBNYW5hZ2VyXSA9PSBFbXBsb3llZQorCisgICAgLSBDb3JvbGxhcnk6IGlmIEFueSBpcyBwcmVzZW50IGl0IGlzIHRoZSBzb2xlIHN1cnZpdm9yLCBlLmcuOjoKKworICAgICAgICBVbmlvbltpbnQsIEFueV0gPT0gQW55CisKKyAgICAtIFNpbWlsYXIgZm9yIG9iamVjdDo6CisKKyAgICAgICAgVW5pb25baW50LCBvYmplY3RdID09IG9iamVjdAorCisgICAgLSBUbyBjdXQgYSB0aWU6IFVuaW9uW29iamVjdCwgQW55XSA9PSBVbmlvbltBbnksIG9iamVjdF0gPT0gQW55LgorCisgICAgLSBZb3UgY2Fubm90IHN1YmNsYXNzIG9yIGluc3RhbnRpYXRlIGEgdW5pb24uCisKKyAgICAtIFlvdSBjYW5ub3Qgd3JpdGUgVW5pb25bWF1bWV0gKHdoYXQgd291bGQgaXQgbWVhbj8pLgorCisgICAgLSBZb3UgY2FuIHVzZSBPcHRpb25hbFtYXSBhcyBhIHNob3J0aGFuZCBmb3IgVW5pb25bWCwgTm9uZV0uCisgICAgIiIiCisKKyAgICAjIFVuc3Vic2NyaXB0ZWQgVW5pb24gdHlwZSBoYXMgcGFyYW1zIHNldCB0byBOb25lLgorICAgIF9fdW5pb25fcGFyYW1zX18gPSBOb25lCisgICAgX191bmlvbl9zZXRfcGFyYW1zX18gPSBOb25lCisKKworY2xhc3MgT3B0aW9uYWxNZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgT3B0aW9uYWwuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PUZhbHNlKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PV9yb290KQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGFyZyk6CisgICAgICAgIGFyZyA9IF90eXBlX2NoZWNrKGFyZywgIk9wdGlvbmFsW3RdIHJlcXVpcmVzIGEgc2luZ2xlIHR5cGUuIikKKyAgICAgICAgcmV0dXJuIFVuaW9uW2FyZywgdHlwZShOb25lKV0KKworCitjbGFzcyBPcHRpb25hbChGaW5hbCwgbWV0YWNsYXNzPU9wdGlvbmFsTWV0YSwgX3Jvb3Q9VHJ1ZSk6CisgICAgIiIiT3B0aW9uYWwgdHlwZS4KKworICAgIE9wdGlvbmFsW1hdIGlzIGVxdWl2YWxlbnQgdG8gVW5pb25bWCwgdHlwZShOb25lKV0uCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2NsYXNzIFR1cGxlTWV0YShUeXBpbmdNZXRhKToKKyAgICAiIiJNZXRhY2xhc3MgZm9yIFR1cGxlLiIiIgorCisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBwYXJhbWV0ZXJzPU5vbmUsCisgICAgICAgICAgICAgICAgdXNlX2VsbGlwc2lzPUZhbHNlLCBfcm9vdD1GYWxzZSk6CisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgc2VsZi5fX3R1cGxlX3BhcmFtc19fID0gcGFyYW1ldGVycworICAgICAgICBzZWxmLl9fdHVwbGVfdXNlX2VsbGlwc2lzX18gPSB1c2VfZWxsaXBzaXMKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfaGFzX3R5cGVfdmFyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX186CisgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fdHVwbGVfcGFyYW1zX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX2V2YWxfdHlwZShzZWxmLCBnbG9iYWxucywgbG9jYWxucyk6CisgICAgICAgIHRwID0gc2VsZi5fX3R1cGxlX3BhcmFtc19fCisgICAgICAgIGlmIHRwIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBwID0gdHVwbGUoX2V2YWxfdHlwZSh0LCBnbG9iYWxucywgbG9jYWxucykgZm9yIHQgaW4gdHApCisgICAgICAgIGlmIHAgPT0gc2VsZi5fX3R1cGxlX3BhcmFtc19fOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgciA9IHN1cGVyKCkuX19yZXByX18oKQorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBwYXJhbXMgPSBbX3R5cGVfcmVwcihwKSBmb3IgcCBpbiBzZWxmLl9fdHVwbGVfcGFyYW1zX19dCisgICAgICAgICAgICBpZiBzZWxmLl9fdHVwbGVfdXNlX2VsbGlwc2lzX186CisgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgnLi4uJykKKyAgICAgICAgICAgIHIgKz0gJ1slc10nICUgKAorICAgICAgICAgICAgICAgICcsICcuam9pbihwYXJhbXMpKQorICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtZXRlcnMpOgorICAgICAgICBpZiBzZWxmLl9fdHVwbGVfcGFyYW1zX18gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCByZS1wYXJhbWV0ZXJpemUgJXIiICUgKHNlbGYsKSkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFyYW1ldGVycywgdHVwbGUpOgorICAgICAgICAgICAgcGFyYW1ldGVycyA9IChwYXJhbWV0ZXJzLCkKKyAgICAgICAgaWYgbGVuKHBhcmFtZXRlcnMpID09IDIgYW5kIHBhcmFtZXRlcnNbMV0gPT0gRWxsaXBzaXM6CisgICAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc1s6MV0KKyAgICAgICAgICAgIHVzZV9lbGxpcHNpcyA9IFRydWUKKyAgICAgICAgICAgIG1zZyA9ICJUdXBsZVt0LCAuLi5dOiB0IG11c3QgYmUgYSB0eXBlLiIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVzZV9lbGxpcHNpcyA9IEZhbHNlCisgICAgICAgICAgICBtc2cgPSAiVHVwbGVbdDAsIHQxLCAuLi5dOiBlYWNoIHQgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICBwYXJhbWV0ZXJzID0gdHVwbGUoX3R5cGVfY2hlY2socCwgbXNnKSBmb3IgcCBpbiBwYXJhbWV0ZXJzKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fX25hbWVfXywgc2VsZi5fX2Jhc2VzX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KHNlbGYuX19kaWN0X18pLCBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2VsbGlwc2lzPXVzZV9lbGxpcHNpcywgX3Jvb3Q9VHJ1ZSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgVHVwbGVNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX3R1cGxlX3BhcmFtc19fID09IG90aGVyLl9fdHVwbGVfcGFyYW1zX18KKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5fX3R1cGxlX3BhcmFtc19fKQorCisgICAgZGVmIF9faW5zdGFuY2VjaGVja19fKHNlbGYsIG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHVwbGVzIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgdHlwZSk6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3N1YmNsYXNzY2hlY2tfXyhjbHMpICAjIFRvIFR5cGVFcnJvci4KKyAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIHR1cGxlKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlICAjIFNwZWNpYWwgY2FzZS4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCBUdXBsZU1ldGEpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKSAgIyBGYWxzZS4KKyAgICAgICAgaWYgc2VsZi5fX3R1cGxlX3BhcmFtc19fIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBjbHMuX190dXBsZV9wYXJhbXNfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlICAjID8/PworICAgICAgICBpZiBjbHMuX190dXBsZV91c2VfZWxsaXBzaXNfXyAhPSBzZWxmLl9fdHVwbGVfdXNlX2VsbGlwc2lzX186CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBDb3ZhcmlhbmNlLgorICAgICAgICByZXR1cm4gKGxlbihzZWxmLl9fdHVwbGVfcGFyYW1zX18pID09IGxlbihjbHMuX190dXBsZV9wYXJhbXNfXykgYW5kCisgICAgICAgICAgICAgICAgYWxsKGlzc3ViY2xhc3MoeCwgcCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHgsIHAgaW4gemlwKGNscy5fX3R1cGxlX3BhcmFtc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3R1cGxlX3BhcmFtc19fKSkpCisKKworY2xhc3MgVHVwbGUoRmluYWwsIG1ldGFjbGFzcz1UdXBsZU1ldGEsIF9yb290PVRydWUpOgorICAgICIiIlR1cGxlIHR5cGU7IFR1cGxlW1gsIFldIGlzIHRoZSBjcm9zcy1wcm9kdWN0IHR5cGUgb2YgWCBhbmQgWS4KKworICAgIEV4YW1wbGU6IFR1cGxlW1QxLCBUMl0gaXMgYSB0dXBsZSBvZiB0d28gZWxlbWVudHMgY29ycmVzcG9uZGluZworICAgIHRvIHR5cGUgdmFyaWFibGVzIFQxIGFuZCBUMi4gIFR1cGxlW2ludCwgZmxvYXQsIHN0cl0gaXMgYSB0dXBsZQorICAgIG9mIGFuIGludCwgYSBmbG9hdCBhbmQgYSBzdHJpbmcuCisKKyAgICBUbyBzcGVjaWZ5IGEgdmFyaWFibGUtbGVuZ3RoIHR1cGxlIG9mIGhvbW9nZW5lb3VzIHR5cGUsIHVzZSBTZXF1ZW5jZVtUXS4KKyAgICAiIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKworY2xhc3MgQ2FsbGFibGVNZXRhKFR5cGluZ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgQ2FsbGFibGUuIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIF9yb290PUZhbHNlLAorICAgICAgICAgICAgICAgIGFyZ3M9Tm9uZSwgcmVzdWx0PU5vbmUpOgorICAgICAgICBpZiBhcmdzIGlzIE5vbmUgYW5kIHJlc3VsdCBpcyBOb25lOgorICAgICAgICAgICAgcGFzcyAgIyBNdXN0IGJlICdjbGFzcyBDYWxsYWJsZScuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBhcmdzIGlzIG5vdCBFbGxpcHNpczoKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYWxsYWJsZVthcmdzLCByZXN1bHRdOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJncyBtdXN0IGJlIGEgbGlzdC4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIEdvdCAlLjEwMHIuIiAlIChhcmdzLCkpCisgICAgICAgICAgICAgICAgbXNnID0gIkNhbGxhYmxlW1thcmcsIC4uLl0sIHJlc3VsdF06IGVhY2ggYXJnIG11c3QgYmUgYSB0eXBlLiIKKyAgICAgICAgICAgICAgICBhcmdzID0gdHVwbGUoX3R5cGVfY2hlY2soYXJnLCBtc2cpIGZvciBhcmcgaW4gYXJncykKKyAgICAgICAgICAgIG1zZyA9ICJDYWxsYWJsZVthcmdzLCByZXN1bHRdOiByZXN1bHQgbXVzdCBiZSBhIHR5cGUuIgorICAgICAgICAgICAgcmVzdWx0ID0gX3R5cGVfY2hlY2socmVzdWx0LCBtc2cpCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1fcm9vdCkKKyAgICAgICAgc2VsZi5fX2FyZ3NfXyA9IGFyZ3MKKyAgICAgICAgc2VsZi5fX3Jlc3VsdF9fID0gcmVzdWx0CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXzoKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX19hcmdzX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIF9oYXNfdHlwZV92YXIoc2VsZi5fX3Jlc3VsdF9fKQorCisgICAgZGVmIF9ldmFsX3R5cGUoc2VsZiwgZ2xvYmFsbnMsIGxvY2FsbnMpOgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIE5vbmUgYW5kIHNlbGYuX19yZXN1bHRfXyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBFbGxpcHNpczoKKyAgICAgICAgICAgIGFyZ3MgPSBzZWxmLl9fYXJnc19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gW19ldmFsX3R5cGUodCwgZ2xvYmFsbnMsIGxvY2FsbnMpIGZvciB0IGluIHNlbGYuX19hcmdzX19dCisgICAgICAgIHJlc3VsdCA9IF9ldmFsX3R5cGUoc2VsZi5fX3Jlc3VsdF9fLCBnbG9iYWxucywgbG9jYWxucykKKyAgICAgICAgaWYgYXJncyA9PSBzZWxmLl9fYXJnc19fIGFuZCByZXN1bHQgPT0gc2VsZi5fX3Jlc3VsdF9fOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLCByZXN1bHQ9cmVzdWx0LCBfcm9vdD1UcnVlKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByID0gc3VwZXIoKS5fX3JlcHJfXygpCisgICAgICAgIGlmIHNlbGYuX19hcmdzX18gaXMgbm90IE5vbmUgb3Igc2VsZi5fX3Jlc3VsdF9fIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBFbGxpcHNpczoKKyAgICAgICAgICAgICAgICBhcmdzX3IgPSAnLi4uJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzX3IgPSAnWyVzXScgJSAnLCAnLmpvaW4oX3R5cGVfcmVwcih0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBzZWxmLl9fYXJnc19fKQorICAgICAgICAgICAgciArPSAnWyVzLCAlc10nICUgKGFyZ3NfciwgX3R5cGVfcmVwcihzZWxmLl9fcmVzdWx0X18pKQorICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtZXRlcnMpOgorICAgICAgICBpZiBzZWxmLl9fYXJnc19fIGlzIG5vdCBOb25lIG9yIHNlbGYuX19yZXN1bHRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVGhpcyBDYWxsYWJsZSB0eXBlIGlzIGFscmVhZHkgcGFyYW1ldGVyaXplZC4iKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYXJhbWV0ZXJzLCB0dXBsZSkgb3IgbGVuKHBhcmFtZXRlcnMpICE9IDI6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbGxhYmxlIG11c3QgYmUgdXNlZCBhcyBDYWxsYWJsZVtbYXJnLCAuLi5dLCByZXN1bHRdLiIpCisgICAgICAgIGFyZ3MsIHJlc3VsdCA9IHBhcmFtZXRlcnMKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX19uYW1lX18sIHNlbGYuX19iYXNlc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChzZWxmLl9fZGljdF9fKSwgX3Jvb3Q9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9YXJncywgcmVzdWx0PXJlc3VsdCkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQ2FsbGFibGVNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKHNlbGYuX19hcmdzX18gPT0gb3RoZXIuX19hcmdzX18gYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fX3Jlc3VsdF9fID09IG90aGVyLl9fcmVzdWx0X18pCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKHNlbGYuX19hcmdzX18pIF4gaGFzaChzZWxmLl9fcmVzdWx0X18pCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgIyBGb3IgdW5wYXJhbWV0cml6ZWQgQ2FsbGFibGUgd2UgYWxsb3cgdGhpcywgYmVjYXVzZQorICAgICAgICAjIHR5cGluZy5DYWxsYWJsZSBzaG91bGQgYmUgZXF1aXZhbGVudCB0bworICAgICAgICAjIGNvbGxlY3Rpb25zLmFiYy5DYWxsYWJsZS4KKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBOb25lIGFuZCBzZWxmLl9fcmVzdWx0X18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnNfYWJjLkNhbGxhYmxlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYWxsYWJsZVtdIGNhbm5vdCBiZSB1c2VkIHdpdGggaXNpbnN0YW5jZSgpLiIpCisKKyAgICBkZWYgX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgY2xzKToKKyAgICAgICAgaWYgY2xzIGlzIEFueToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgQ2FsbGFibGVNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykKKyAgICAgICAgaWYgc2VsZi5fX2FyZ3NfXyBpcyBOb25lIGFuZCBzZWxmLl9fcmVzdWx0X18gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgV2UncmUgbm90IGRvaW5nIGNvdmFyaWFuY2Ugb3IgY29udHJhdmFyaWFuY2UgLS0gdGhpcyBpcyAqaW52YXJpYW5jZSouCisgICAgICAgIHJldHVybiBzZWxmID09IGNscworCisKK2NsYXNzIENhbGxhYmxlKEZpbmFsLCBtZXRhY2xhc3M9Q2FsbGFibGVNZXRhLCBfcm9vdD1UcnVlKToKKyAgICAiIiJDYWxsYWJsZSB0eXBlOyBDYWxsYWJsZVtbaW50XSwgc3RyXSBpcyBhIGZ1bmN0aW9uIG9mIChpbnQpIC0+IHN0ci4KKworICAgIFRoZSBzdWJzY3JpcHRpb24gc3ludGF4IG11c3QgYWx3YXlzIGJlIHVzZWQgd2l0aCBleGFjdGx5IHR3bworICAgIHZhbHVlczogdGhlIGFyZ3VtZW50IGxpc3QgYW5kIHRoZSByZXR1cm4gdHlwZS4gIFRoZSBhcmd1bWVudCBsaXN0CisgICAgbXVzdCBiZSBhIGxpc3Qgb2YgdHlwZXM7IHRoZSByZXR1cm4gdHlwZSBtdXN0IGJlIGEgc2luZ2xlIHR5cGUuCisKKyAgICBUaGVyZSBpcyBubyBzeW50YXggdG8gaW5kaWNhdGUgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMsCisgICAgc3VjaCBmdW5jdGlvbiB0eXBlcyBhcmUgcmFyZWx5IHVzZWQgYXMgY2FsbGJhY2sgdHlwZXMuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2RlZiBfZ29yZyhhKToKKyAgICAiIiJSZXR1cm4gdGhlIGZhcnRoZXN0IG9yaWdpbiBvZiBhIGdlbmVyaWMgY2xhc3MuIiIiCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgR2VuZXJpY01ldGEpCisgICAgd2hpbGUgYS5fX29yaWdpbl9fIGlzIG5vdCBOb25lOgorICAgICAgICBhID0gYS5fX29yaWdpbl9fCisgICAgcmV0dXJuIGEKKworCitkZWYgX2dlcXYoYSwgYik6CisgICAgIiIiUmV0dXJuIHdoZXRoZXIgdHdvIGdlbmVyaWMgY2xhc3NlcyBhcmUgZXF1aXZhbGVudC4KKworICAgIFRoZSBpbnRlbnRpb24gaXMgdG8gY29uc2lkZXIgZ2VuZXJpYyBjbGFzcyBYIGFuZCBhbnkgb2YgaXRzCisgICAgcGFyYW1ldGVyaXplZCBmb3JtcyAoWFtUXSwgWFtpbnRdLCBldGMuKSAgYXMgZXF1aXZhbGVudC4KKworICAgIEhvd2V2ZXIsIFggaXMgbm90IGVxdWl2YWxlbnQgdG8gYSBzdWJjbGFzcyBvZiBYLgorCisgICAgVGhlIHJlbGF0aW9uIGlzIHJlZmxleGl2ZSwgc3ltbWV0cmljIGFuZCB0cmFuc2l0aXZlLgorICAgICIiIgorICAgIGFzc2VydCBpc2luc3RhbmNlKGEsIEdlbmVyaWNNZXRhKSBhbmQgaXNpbnN0YW5jZShiLCBHZW5lcmljTWV0YSkKKyAgICAjIFJlZHVjZSBlYWNoIHRvIGl0cyBvcmlnaW4uCisgICAgcmV0dXJuIF9nb3JnKGEpIGlzIF9nb3JnKGIpCisKKworY2xhc3MgR2VuZXJpY01ldGEoVHlwaW5nTWV0YSwgYWJjLkFCQ01ldGEpOgorICAgICIiIk1ldGFjbGFzcyBmb3IgZ2VuZXJpYyB0eXBlcy4iIiIKKworICAgICMgVE9ETzogQ29uc3RyYWluIG1vcmUgaG93IEdlbmVyaWMgaXMgdXNlZDsgb25seSBhIGZldworICAgICMgc3RhbmRhcmQgcGF0dGVybnMgc2hvdWxkIGJlIGFsbG93ZWQuCisKKyAgICAjIFRPRE86IFVzZSBhIG1vcmUgcHJlY2lzZSBydWxlIHRoYW4gbWF0Y2hpbmcgX19uYW1lX18gdG8gZGVjaWRlCisgICAgIyB3aGV0aGVyIHR3byBjbGFzc2VzIGFyZSB0aGUgc2FtZS4gIEFsc28sIHNhdmUgdGhlIGZvcm1hbAorICAgICMgcGFyYW1ldGVycy4gIChUaGVzZSB0aGluZ3MgYXJlIHJlbGF0ZWQhICBBIHNvbHV0aW9uIGxpZXMgaW4KKyAgICAjIHVzaW5nIG9yaWdpbi4pCisKKyAgICBfX2V4dHJhX18gPSBOb25lCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsCisgICAgICAgICAgICAgICAgcGFyYW1ldGVycz1Ob25lLCBvcmlnaW49Tm9uZSwgZXh0cmE9Tm9uZSk6CisgICAgICAgIGlmIHBhcmFtZXRlcnMgaXMgTm9uZToKKyAgICAgICAgICAgICMgRXh0cmFjdCBwYXJhbWV0ZXJzIGZyb20gZGlyZWN0IGJhc2UgY2xhc3Nlcy4gIE9ubHkKKyAgICAgICAgICAgICMgZGlyZWN0IGJhc2VzIGFyZSBjb25zaWRlcmVkIGFuZCBvbmx5IHRob3NlIHRoYXQgYXJlCisgICAgICAgICAgICAjIHRoZW1zZWx2ZXMgZ2VuZXJpYywgYW5kIHBhcmFtZXRlcml6ZWQgd2l0aCB0eXBlCisgICAgICAgICAgICAjIHZhcmlhYmxlcy4gIERvbid0IHVzZSBiYXNlcyBsaWtlIEFueSwgVW5pb24sIFR1cGxlLAorICAgICAgICAgICAgIyBDYWxsYWJsZSBvciB0eXBlIHZhcmlhYmxlcy4KKyAgICAgICAgICAgIHBhcmFtcyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBiYXNlIGluIGJhc2VzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYmFzZSwgVHlwaW5nTWV0YSk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJhc2UsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91IGNhbm5vdCBpbmhlcml0IGZyb20gbWFnaWMgY2xhc3MgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGJhc2UpKQorICAgICAgICAgICAgICAgICAgICBpZiBiYXNlLl9fcGFyYW1ldGVyc19fIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAgIyBUaGUgYmFzZSBpcyB1bnBhcmFtZXRlcml6ZWQuCisgICAgICAgICAgICAgICAgICAgIGZvciBicCBpbiBiYXNlLl9fcGFyYW1ldGVyc19fOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3ZhcihicCkgYW5kIG5vdCBpc2luc3RhbmNlKGJwLCBUeXBlVmFyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgaW5oZXJpdCBmcm9tIGEgZ2VuZXJpYyBjbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJpemVkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLXR5cGUtdmFyaWFibGUgJXMiICUgYnApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSBbXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnAgbm90IGluIHBhcmFtczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuYXBwZW5kKGJwKQorICAgICAgICAgICAgaWYgcGFyYW1zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMgPSB0dXBsZShwYXJhbXMpCisgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBfcm9vdD1UcnVlKQorICAgICAgICBzZWxmLl9fcGFyYW1ldGVyc19fID0gcGFyYW1ldGVycworICAgICAgICBpZiBleHRyYSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX19leHRyYV9fID0gZXh0cmEKKyAgICAgICAgIyBFbHNlIF9fZXh0cmFfXyBpcyBpbmhlcml0ZWQsIGV2ZW50dWFsbHkgZnJvbSB0aGUKKyAgICAgICAgIyAobWV0YS0pY2xhc3MgZGVmYXVsdCBhYm92ZS4KKyAgICAgICAgc2VsZi5fX29yaWdpbl9fID0gb3JpZ2luCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX2hhc190eXBlX3ZhcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX3BhcmFtZXRlcnNfXzoKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuX19wYXJhbWV0ZXJzX186CisgICAgICAgICAgICAgICAgaWYgX2hhc190eXBlX3Zhcih0KToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHIgPSBzdXBlcigpLl9fcmVwcl9fKCkKKyAgICAgICAgaWYgc2VsZi5fX3BhcmFtZXRlcnNfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHIgKz0gJ1slc10nICUgKAorICAgICAgICAgICAgICAgICcsICcuam9pbihfdHlwZV9yZXByKHApIGZvciBwIGluIHNlbGYuX19wYXJhbWV0ZXJzX18pKQorICAgICAgICByZXR1cm4gcgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBHZW5lcmljTWV0YSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIChfZ2VxdihzZWxmLCBvdGhlcikgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fX3BhcmFtZXRlcnNfXyA9PSBvdGhlci5fX3BhcmFtZXRlcnNfXykKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYuX19uYW1lX18sIHNlbGYuX19wYXJhbWV0ZXJzX18pKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIHBhcmFtcyk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhcmFtcywgdHVwbGUpOgorICAgICAgICAgICAgcGFyYW1zID0gKHBhcmFtcywpCisgICAgICAgIGlmIG5vdCBwYXJhbXM6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBoYXZlIGVtcHR5IHBhcmFtZXRlciBsaXN0IikKKyAgICAgICAgbXNnID0gIlBhcmFtZXRlcnMgdG8gZ2VuZXJpYyB0eXBlcyBtdXN0IGJlIHR5cGVzLiIKKyAgICAgICAgcGFyYW1zID0gdHVwbGUoX3R5cGVfY2hlY2socCwgbXNnKSBmb3IgcCBpbiBwYXJhbXMpCisgICAgICAgIGlmIHNlbGYuX19wYXJhbWV0ZXJzX18gaXMgTm9uZToKKyAgICAgICAgICAgIGZvciBwIGluIHBhcmFtczoKKyAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwLCBUeXBlVmFyKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbml0aWFsIHBhcmFtZXRlcnMgbXVzdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSB2YXJpYWJsZXM7IGdvdCAlcyIgJSBwKQorICAgICAgICAgICAgaWYgbGVuKHNldChwYXJhbXMpKSAhPSBsZW4ocGFyYW1zKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJBbGwgdHlwZSB2YXJpYWJsZXMgaW4gR2VuZXJpY1suLi5dIG11c3QgYmUgZGlzdGluY3QuIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGxlbihwYXJhbXMpICE9IGxlbihzZWxmLl9fcGFyYW1ldGVyc19fKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBjaGFuZ2UgcGFyYW1ldGVyIGNvdW50IGZyb20gJWQgdG8gJWQiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl9fcGFyYW1ldGVyc19fKSwgbGVuKHBhcmFtcykpKQorICAgICAgICAgICAgZm9yIG5ldywgb2xkIGluIHppcChwYXJhbXMsIHNlbGYuX19wYXJhbWV0ZXJzX18pOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2xkLCBUeXBlVmFyKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9sZC5fX2NvbnN0cmFpbnRzX186CisgICAgICAgICAgICAgICAgICAgICAgICAjIFN1YnN0aXR1dGluZyBmb3IgYW4gdW5jb25zdHJhaW5lZCBUeXBlVmFyIGlzIE9LLgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNzdWJjbGFzcyhuZXcsIFVuaW9uW29sZC5fX2NvbnN0cmFpbnRzX19dKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbGl6aW5nIGEgY29uc3RyYWluZWQgdHlwZSB2YXJpYWJsZSBpcyBPSy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MobmV3LCBvbGQpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHN1YnN0aXR1dGUgJXMgZm9yICVzIGluICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAoX3R5cGVfcmVwcihuZXcpLCBfdHlwZV9yZXByKG9sZCksIHNlbGYpKQorCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl9fbmFtZV9fLCBzZWxmLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Qoc2VsZi5fX2RpY3RfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzPXBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbj1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9c2VsZi5fX2V4dHJhX18pCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpOgorICAgICAgICAjIFNpbmNlIHdlIGV4dGVuZCBBQkMuX19zdWJjbGFzc2NoZWNrX18gYW5kCisgICAgICAgICMgQUJDLl9faW5zdGFuY2VjaGVja19fIGlubGluZXMgdGhlIGNhY2hlIGNoZWNraW5nIGRvbmUgYnkgdGhlCisgICAgICAgICMgbGF0dGVyLCB3ZSBtdXN0IGV4dGVuZCBfX2luc3RhbmNlY2hlY2tfXyB0b28uIEZvciBzaW1wbGljaXR5CisgICAgICAgICMgd2UganVzdCBza2lwIHRoZSBjYWNoZSBjaGVjayAtLSBpbnN0YW5jZSBjaGVja3MgZm9yIGdlbmVyaWMKKyAgICAgICAgIyBjbGFzc2VzIGFyZSBzdXBwb3NlZCB0byBiZSByYXJlIGFueXdheXMuCisgICAgICAgIHJldHVybiBzZWxmLl9fc3ViY2xhc3NjaGVja19fKGluc3RhbmNlLl9fY2xhc3NfXykKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBjbHMgaXMgQW55OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShjbHMsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgICMgRm9yIGEgY2xhc3MgQyhHZW5lcmljW1RdKSB3aGVyZSBUIGlzIGNvLXZhcmlhbnQsCisgICAgICAgICAgICAjIENbWF0gaXMgYSBzdWJjbGFzcyBvZiBDW1ldIGlmZiBYIGlzIGEgc3ViY2xhc3Mgb2YgWS4KKyAgICAgICAgICAgIG9yaWdpbiA9IHNlbGYuX19vcmlnaW5fXworICAgICAgICAgICAgaWYgb3JpZ2luIGlzIG5vdCBOb25lIGFuZCBvcmlnaW4gaXMgY2xzLl9fb3JpZ2luX186CisgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihzZWxmLl9fcGFyYW1ldGVyc19fKSA9PSBsZW4ob3JpZ2luLl9fcGFyYW1ldGVyc19fKQorICAgICAgICAgICAgICAgIGFzc2VydCBsZW4oY2xzLl9fcGFyYW1ldGVyc19fKSA9PSBsZW4ob3JpZ2luLl9fcGFyYW1ldGVyc19fKQorICAgICAgICAgICAgICAgIGZvciBwX3NlbGYsIHBfY2xzLCBwX29yaWdpbiBpbiB6aXAoc2VsZi5fX3BhcmFtZXRlcnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5fX3BhcmFtZXRlcnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbi5fX3BhcmFtZXRlcnNfXyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocF9vcmlnaW4sIFR5cGVWYXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcF9vcmlnaW4uX19jb3ZhcmlhbnRfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmFyaWFudCAtLSBwX2NscyBtdXN0IGJlIGEgc3ViY2xhc3Mgb2YgcF9zZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHBfY2xzLCBwX3NlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwX29yaWdpbi5fX2NvbnRyYXZhcmlhbnRfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvbnRyYXZhcmlhbnQuICBJIHRoaW5rIGl0J3MgdGhlIG9wcG9zaXRlLiA6LSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyhwX3NlbGYsIHBfY2xzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbnZhcmlhbnQgLS0gcF9jbHMgYW5kIHBfc2VsZiBtdXN0IGVxdWFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBfc2VsZiAhPSBwX2NsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIG9yaWdpbidzIHBhcmFtZXRlciBpcyBub3QgYSB0eXBldmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnNpc3Qgb24gaW52YXJpYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBfc2VsZiAhPSBwX2NsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgIyBJZiB3ZSBicmVhayBvdXQgb2YgdGhlIGxvb3AsIHRoZSBzdXBlcmNsYXNzIGdldHMgYSBjaGFuY2UuCisgICAgICAgIGlmIHN1cGVyKCkuX19zdWJjbGFzc2NoZWNrX18oY2xzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuX19leHRyYV9fIGlzIE5vbmUgb3IgaXNpbnN0YW5jZShjbHMsIEdlbmVyaWNNZXRhKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gaXNzdWJjbGFzcyhjbHMsIHNlbGYuX19leHRyYV9fKQorCisKK2NsYXNzIEdlbmVyaWMobWV0YWNsYXNzPUdlbmVyaWNNZXRhKToKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBnZW5lcmljIHR5cGVzLgorCisgICAgQSBnZW5lcmljIHR5cGUgaXMgdHlwaWNhbGx5IGRlY2xhcmVkIGJ5IGluaGVyaXRpbmcgZnJvbSBhbgorICAgIGluc3RhbnRpYXRpb24gb2YgdGhpcyBjbGFzcyB3aXRoIG9uZSBvciBtb3JlIHR5cGUgdmFyaWFibGVzLgorICAgIEZvciBleGFtcGxlLCBhIGdlbmVyaWMgbWFwcGluZyB0eXBlIG1pZ2h0IGJlIGRlZmluZWQgYXM6OgorCisgICAgICBjbGFzcyBNYXBwaW5nKEdlbmVyaWNbS1QsIFZUXSk6CisgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleTogS1QpIC0+IFZUOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAjIEV0Yy4KKworICAgIFRoaXMgY2xhc3MgY2FuIHRoZW4gYmUgdXNlZCBhcyBmb2xsb3dzOjoKKworICAgICAgZGVmIGxvb2t1cF9uYW1lKG1hcHBpbmc6IE1hcHBpbmcsIGtleTogS1QsIGRlZmF1bHQ6IFZUKSAtPiBWVDoKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2tleV0KKyAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBGb3IgY2xhcml0eSB0aGUgdHlwZSB2YXJpYWJsZXMgbWF5IGJlIHJlZGVmaW5lZCwgZS5nLjo6CisKKyAgICAgIFggPSBUeXBlVmFyKCdYJykKKyAgICAgIFkgPSBUeXBlVmFyKCdZJykKKyAgICAgIGRlZiBsb29rdXBfbmFtZShtYXBwaW5nOiBNYXBwaW5nW1gsIFldLCBrZXk6IFgsIGRlZmF1bHQ6IFkpIC0+IFk6CisgICAgICAgICAgIyBTYW1lIGJvZHkgYXMgYWJvdmUuCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgbmV4dF9pbl9tcm8gPSBvYmplY3QKKyAgICAgICAgIyBMb29rIGZvciB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIEdlbmVyaWMgb3IgR2VuZXJpY1suLi5dLgorICAgICAgICBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoY2xzLl9fbXJvX19bOi0xXSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIEdlbmVyaWNNZXRhKSBhbmQgX2dvcmcoYykgaXMgR2VuZXJpYzoKKyAgICAgICAgICAgICAgICBuZXh0X2luX21ybyA9IGNscy5fX21yb19fW2krMV0KKyAgICAgICAgcmV0dXJuIG5leHRfaW5fbXJvLl9fbmV3X18oX2dvcmcoY2xzKSkKKworCitkZWYgY2FzdCh0eXAsIHZhbCk6CisgICAgIiIiQ2FzdCBhIHZhbHVlIHRvIGEgdHlwZS4KKworICAgIFRoaXMgcmV0dXJucyB0aGUgdmFsdWUgdW5jaGFuZ2VkLiAgVG8gdGhlIHR5cGUgY2hlY2tlciB0aGlzCisgICAgc2lnbmFscyB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaGFzIHRoZSBkZXNpZ25hdGVkIHR5cGUsIGJ1dCBhdAorICAgIHJ1bnRpbWUgd2UgaW50ZW50aW9uYWxseSBkb24ndCBjaGVjayBhbnl0aGluZyAod2Ugd2FudCB0aGlzCisgICAgdG8gYmUgYXMgZmFzdCBhcyBwb3NzaWJsZSkuCisgICAgIiIiCisgICAgcmV0dXJuIHZhbAorCisKK2RlZiBfZ2V0X2RlZmF1bHRzKGZ1bmMpOgorICAgICIiIkludGVybmFsIGhlbHBlciB0byBleHRyYWN0IHRoZSBkZWZhdWx0IGFyZ3VtZW50cywgYnkgbmFtZS4iIiIKKyAgICBjb2RlID0gZnVuYy5fX2NvZGVfXworICAgIHBvc19jb3VudCA9IGNvZGUuY29fYXJnY291bnQKKyAgICBrd19jb3VudCA9IGNvZGUuY29fa3dvbmx5YXJnY291bnQKKyAgICBhcmdfbmFtZXMgPSBjb2RlLmNvX3Zhcm5hbWVzCisgICAga3dhcmdfbmFtZXMgPSBhcmdfbmFtZXNbcG9zX2NvdW50OnBvc19jb3VudCArIGt3X2NvdW50XQorICAgIGFyZ19uYW1lcyA9IGFyZ19uYW1lc1s6cG9zX2NvdW50XQorICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18gb3IgKCkKKyAgICBrd2RlZmF1bHRzID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworICAgIHJlcyA9IGRpY3Qoa3dkZWZhdWx0cykgaWYga3dkZWZhdWx0cyBlbHNlIHt9CisgICAgcG9zX29mZnNldCA9IHBvc19jb3VudCAtIGxlbihkZWZhdWx0cykKKyAgICBmb3IgbmFtZSwgdmFsdWUgaW4gemlwKGFyZ19uYW1lc1twb3Nfb2Zmc2V0Ol0sIGRlZmF1bHRzKToKKyAgICAgICAgYXNzZXJ0IG5hbWUgbm90IGluIHJlcworICAgICAgICByZXNbbmFtZV0gPSB2YWx1ZQorICAgIHJldHVybiByZXMKKworCitkZWYgZ2V0X3R5cGVfaGludHMob2JqLCBnbG9iYWxucz1Ob25lLCBsb2NhbG5zPU5vbmUpOgorICAgICIiIlJldHVybiB0eXBlIGhpbnRzIGZvciBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCisKKyAgICBUaGlzIGlzIG9mdGVuIHRoZSBzYW1lIGFzIG9iai5fX2Fubm90YXRpb25zX18sIGJ1dCBpdCBoYW5kbGVzCisgICAgZm9yd2FyZCByZWZlcmVuY2VzIGVuY29kZWQgYXMgc3RyaW5nIGxpdGVyYWxzLCBhbmQgaWYgbmVjZXNzYXJ5CisgICAgYWRkcyBPcHRpb25hbFt0XSBpZiBhIGRlZmF1bHQgdmFsdWUgZXF1YWwgdG8gTm9uZSBpcyBzZXQuCisKKyAgICBCRVdBUkUgLS0gdGhlIGJlaGF2aW9yIG9mIGdsb2JhbG5zIGFuZCBsb2NhbG5zIGlzIGNvdW50ZXJpbnR1aXRpdmUKKyAgICAodW5sZXNzIHlvdSBhcmUgZmFtaWxpYXIgd2l0aCBob3cgZXZhbCgpIGFuZCBleGVjKCkgd29yaykuICBUaGUKKyAgICBzZWFyY2ggb3JkZXIgaXMgbG9jYWxzIGZpcnN0LCB0aGVuIGdsb2JhbHMuCisKKyAgICAtIElmIG5vIGRpY3QgYXJndW1lbnRzIGFyZSBwYXNzZWQsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgdGhlCisgICAgICBnbG9iYWxzIGZyb20gb2JqLCBhbmQgdGhlc2UgYXJlIGFsc28gdXNlZCBhcyB0aGUgbG9jYWxzLiAgSWYgdGhlCisgICAgICBvYmplY3QgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgZ2xvYmFscywgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgIC0gSWYgb25lIGRpY3QgYXJndW1lbnQgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGZvciBib3RoIGdsb2JhbHMgYW5kCisgICAgICBsb2NhbHMuCisKKyAgICAtIElmIHR3byBkaWN0IGFyZ3VtZW50cyBhcmUgcGFzc2VkLCB0aGV5IHNwZWNpZnkgZ2xvYmFscyBhbmQKKyAgICAgIGxvY2FscywgcmVzcGVjdGl2ZWx5LgorICAgICIiIgorICAgIGlmIGdldGF0dHIob2JqLCAnX19ub190eXBlX2NoZWNrX18nLCBOb25lKToKKyAgICAgICAgcmV0dXJuIHt9CisgICAgaWYgZ2xvYmFsbnMgaXMgTm9uZToKKyAgICAgICAgZ2xvYmFsbnMgPSBnZXRhdHRyKG9iaiwgJ19fZ2xvYmFsc19fJywge30pCisgICAgICAgIGlmIGxvY2FsbnMgaXMgTm9uZToKKyAgICAgICAgICAgIGxvY2FsbnMgPSBnbG9iYWxucworICAgIGVsaWYgbG9jYWxucyBpcyBOb25lOgorICAgICAgICBsb2NhbG5zID0gZ2xvYmFsbnMKKyAgICBkZWZhdWx0cyA9IF9nZXRfZGVmYXVsdHMob2JqKQorICAgIGhpbnRzID0gZGljdChvYmouX19hbm5vdGF0aW9uc19fKQorICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBoaW50cy5pdGVtcygpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgdmFsdWUgPSBfRm9yd2FyZFJlZih2YWx1ZSkKKyAgICAgICAgdmFsdWUgPSBfZXZhbF90eXBlKHZhbHVlLCBnbG9iYWxucywgbG9jYWxucykKKyAgICAgICAgaWYgbmFtZSBpbiBkZWZhdWx0cyBhbmQgZGVmYXVsdHNbbmFtZV0gaXMgTm9uZToKKyAgICAgICAgICAgIHZhbHVlID0gT3B0aW9uYWxbdmFsdWVdCisgICAgICAgIGhpbnRzW25hbWVdID0gdmFsdWUKKyAgICByZXR1cm4gaGludHMKKworCisjIFRPRE86IEFsc28gc3VwcG9ydCB0aGlzIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorZGVmIG5vX3R5cGVfY2hlY2soYXJnKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gaW5kaWNhdGUgdGhhdCBhbm5vdGF0aW9ucyBhcmUgbm90IHR5cGUgaGludHMuCisKKyAgICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIGNsYXNzIG9yIGZ1bmN0aW9uOyBpZiBpdCBpcyBhIGNsYXNzLCBpdAorICAgIGFwcGxpZXMgcmVjdXJzaXZlbHkgdG8gYWxsIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGF0IGNsYXNzIChidXQgbm90CisgICAgdG8gbWV0aG9kcyBkZWZpbmVkIGluIGl0cyBzdXBlcmNsYXNzZXMgb3Igc3ViY2xhc3NlcykuCisKKyAgICBUaGlzIG11dGF0ZXMgdGhlIGZ1bmN0aW9uKHMpIGluIHBsYWNlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UoYXJnLCB0eXBlKToKKyAgICAgICAgZm9yIG9iaiBpbiBhcmcuX19kaWN0X18udmFsdWVzKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgICAgICAgICBvYmouX19ub190eXBlX2NoZWNrX18gPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgYXJnLl9fbm9fdHlwZV9jaGVja19fID0gVHJ1ZQorICAgIHJldHVybiBhcmcKKworCitkZWYgbm9fdHlwZV9jaGVja19kZWNvcmF0b3IoZGVjb3JhdG9yKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gZ2l2ZSBhbm90aGVyIGRlY29yYXRvciB0aGUgQG5vX3R5cGVfY2hlY2sgZWZmZWN0LgorCisgICAgVGhpcyB3cmFwcyB0aGUgZGVjb3JhdG9yIHdpdGggc29tZXRoaW5nIHRoYXQgd3JhcHMgdGhlIGRlY29yYXRlZAorICAgIGZ1bmN0aW9uIGluIEBub190eXBlX2NoZWNrLgorICAgICIiIgorCisgICAgQGZ1bmN0b29scy53cmFwcyhkZWNvcmF0b3IpCisgICAgZGVmIHdyYXBwZWRfZGVjb3JhdG9yKCphcmdzLCAqKmt3ZHMpOgorICAgICAgICBmdW5jID0gZGVjb3JhdG9yKCphcmdzLCAqKmt3ZHMpCisgICAgICAgIGZ1bmMgPSBub190eXBlX2NoZWNrKGZ1bmMpCisgICAgICAgIHJldHVybiBmdW5jCisKKyAgICByZXR1cm4gd3JhcHBlZF9kZWNvcmF0b3IKKworCitkZWYgb3ZlcmxvYWQoZnVuYyk6CisgICAgcmFpc2UgUnVudGltZUVycm9yKCJPdmVybG9hZGluZyBpcyBvbmx5IHN1cHBvcnRlZCBpbiBsaWJyYXJ5IHN0dWJzIikKKworCitjbGFzcyBfUHJvdG9jb2xNZXRhKEdlbmVyaWNNZXRhKToKKyAgICAiIiJJbnRlcm5hbCBtZXRhY2xhc3MgZm9yIF9Qcm90b2NvbC4KKworICAgIFRoaXMgZXhpc3RzIHNvIF9Qcm90b2NvbCBjbGFzc2VzIGNhbiBiZSBnZW5lcmljIHdpdGhvdXQgZGVyaXZpbmcKKyAgICBmcm9tIEdlbmVyaWMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgb2JqKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJQcm90b2NvbHMgY2Fubm90IGJlIHVzZWQgd2l0aCBpc2luc3RhbmNlKCkuIikKKworICAgIGRlZiBfX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBjbHMpOgorICAgICAgICBpZiBub3Qgc2VsZi5faXNfcHJvdG9jb2w6CisgICAgICAgICAgICAjIE5vIHN0cnVjdHVyYWwgY2hlY2tzIHNpbmNlIHRoaXMgaXNuJ3QgYSBwcm90b2NvbC4KKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgICAgIGlmIHNlbGYgaXMgX1Byb3RvY29sOgorICAgICAgICAgICAgIyBFdmVyeSBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIHRoZSBlbXB0eSBwcm90b2NvbC4KKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgIyBGaW5kIGFsbCBhdHRyaWJ1dGVzIGRlZmluZWQgaW4gdGhlIHByb3RvY29sLgorICAgICAgICBhdHRycyA9IHNlbGYuX2dldF9wcm90b2NvbF9hdHRycygpCisKKyAgICAgICAgZm9yIGF0dHIgaW4gYXR0cnM6CisgICAgICAgICAgICBpZiBub3QgYW55KGF0dHIgaW4gZC5fX2RpY3RfXyBmb3IgZCBpbiBjbHMuX19tcm9fXyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX2dldF9wcm90b2NvbF9hdHRycyhzZWxmKToKKyAgICAgICAgIyBHZXQgYWxsIFByb3RvY29sIGJhc2UgY2xhc3Nlcy4KKyAgICAgICAgcHJvdG9jb2xfYmFzZXMgPSBbXQorICAgICAgICBmb3IgYyBpbiBzZWxmLl9fbXJvX186CisgICAgICAgICAgICBpZiBnZXRhdHRyKGMsICdfaXNfcHJvdG9jb2wnLCBGYWxzZSkgYW5kIGMuX19uYW1lX18gIT0gJ19Qcm90b2NvbCc6CisgICAgICAgICAgICAgICAgcHJvdG9jb2xfYmFzZXMuYXBwZW5kKGMpCisKKyAgICAgICAgIyBHZXQgYXR0cmlidXRlcyBpbmNsdWRlZCBpbiBwcm90b2NvbC4KKyAgICAgICAgYXR0cnMgPSBzZXQoKQorICAgICAgICBmb3IgYmFzZSBpbiBwcm90b2NvbF9iYXNlczoKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGJhc2UuX19kaWN0X18ua2V5cygpOgorICAgICAgICAgICAgICAgICMgSW5jbHVkZSBhdHRyaWJ1dGVzIG5vdCBkZWZpbmVkIGluIGFueSBub24tcHJvdG9jb2wgYmFzZXMuCisgICAgICAgICAgICAgICAgZm9yIGMgaW4gc2VsZi5fX21yb19fOgorICAgICAgICAgICAgICAgICAgICBpZiAoYyBpcyBub3QgYmFzZSBhbmQgYXR0ciBpbiBjLl9fZGljdF9fIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBnZXRhdHRyKGMsICdfaXNfcHJvdG9jb2wnLCBGYWxzZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiAobm90IGF0dHIuc3RhcnRzd2l0aCgnX2FiY18nKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fYWJzdHJhY3RtZXRob2RzX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX2lzX3Byb3RvY29sJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fZGljdF9fJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fc2xvdHNfXycgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyICE9ICdfZ2V0X3Byb3RvY29sX2F0dHJzJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fcGFyYW1ldGVyc19fJyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgIT0gJ19fb3JpZ2luX18nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciAhPSAnX19tb2R1bGVfXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMuYWRkKGF0dHIpCisKKyAgICAgICAgcmV0dXJuIGF0dHJzCisKKworY2xhc3MgX1Byb3RvY29sKG1ldGFjbGFzcz1fUHJvdG9jb2xNZXRhKToKKyAgICAiIiJJbnRlcm5hbCBiYXNlIGNsYXNzIGZvciBwcm90b2NvbCBjbGFzc2VzLgorCisgICAgVGhpcyBpbXBsZW1lbnRzIGEgc2ltcGxlLW1pbmRlZCBzdHJ1Y3R1cmFsIGlzaW5zdGFuY2UgY2hlY2sKKyAgICAoc2ltaWxhciBidXQgbW9yZSBnZW5lcmFsIHRoYW4gdGhlIG9uZS1vZmZzIGluIGNvbGxlY3Rpb25zLmFiYworICAgIHN1Y2ggYXMgSGFzaGFibGUpLgorICAgICIiIgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIF9pc19wcm90b2NvbCA9IFRydWUKKworCisjIFZhcmlvdXMgQUJDcyBtaW1pY2tpbmcgdGhvc2UgaW4gY29sbGVjdGlvbnMuYWJjLgorIyBBIGZldyBhcmUgc2ltcGx5IHJlLWV4cG9ydGVkIGZvciBjb21wbGV0ZW5lc3MuCisKK0hhc2hhYmxlID0gY29sbGVjdGlvbnNfYWJjLkhhc2hhYmxlICAjIE5vdCBnZW5lcmljLgorCisKK2NsYXNzIEl0ZXJhYmxlKEdlbmVyaWNbVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5JdGVyYWJsZSk6CisgICAgX19zbG90c19fID0gKCkKKworCitjbGFzcyBJdGVyYXRvcihJdGVyYWJsZVtUX2NvXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkl0ZXJhdG9yKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisKK2NsYXNzIFN1cHBvcnRzSW50KF9Qcm90b2NvbCk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2ludF9fKHNlbGYpIC0+IGludDoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzRmxvYXQoX1Byb3RvY29sKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZmxvYXRfXyhzZWxmKSAtPiBmbG9hdDoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzQ29tcGxleChfUHJvdG9jb2wpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19jb21wbGV4X18oc2VsZikgLT4gY29tcGxleDoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzQnl0ZXMoX1Byb3RvY29sKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fYnl0ZXNfXyhzZWxmKSAtPiBieXRlczoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFN1cHBvcnRzQWJzKF9Qcm90b2NvbFtUX2NvXSk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2Fic19fKHNlbGYpIC0+IFRfY286CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTdXBwb3J0c1JvdW5kKF9Qcm90b2NvbFtUX2NvXSk6CisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX3JvdW5kX18oc2VsZiwgbmRpZ2l0czogaW50ID0gMCkgLT4gVF9jbzoKKyAgICAgICAgcGFzcworCisKK2NsYXNzIFJldmVyc2libGUoX1Byb3RvY29sW1RfY29dKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKSAtPiAnSXRlcmF0b3JbVF9jb10nOgorICAgICAgICBwYXNzCisKKworU2l6ZWQgPSBjb2xsZWN0aW9uc19hYmMuU2l6ZWQgICMgTm90IGdlbmVyaWMuCisKKworY2xhc3MgQ29udGFpbmVyKEdlbmVyaWNbVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5Db250YWluZXIpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKworIyBDYWxsYWJsZSB3YXMgZGVmaW5lZCBlYXJsaWVyLgorCisKK2NsYXNzIEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dLAorICAgICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLlNldCk6CisgICAgcGFzcworCisKK2NsYXNzIE11dGFibGVTZXQoQWJzdHJhY3RTZXRbVF0sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NdXRhYmxlU2V0KToKKyAgICBwYXNzCisKKworIyBOT1RFOiBPbmx5IHRoZSB2YWx1ZSB0eXBlIGlzIGNvdmFyaWFudC4KK2NsYXNzIE1hcHBpbmcoU2l6ZWQsIEl0ZXJhYmxlW0tUXSwgQ29udGFpbmVyW0tUXSwgR2VuZXJpY1tWVF9jb10sCisgICAgICAgICAgICAgIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NYXBwaW5nKToKKyAgICBwYXNzCisKKworY2xhc3MgTXV0YWJsZU1hcHBpbmcoTWFwcGluZ1tLVCwgVlRdLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuTXV0YWJsZU1hcHBpbmcpOgorICAgIHBhc3MKKworCitjbGFzcyBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSwKKyAgICAgICAgICAgICAgIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5TZXF1ZW5jZSk6CisgICAgcGFzcworCisKK2NsYXNzIE11dGFibGVTZXF1ZW5jZShTZXF1ZW5jZVtUXSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLk11dGFibGVTZXF1ZW5jZSk6CisgICAgcGFzcworCisKK2NsYXNzIEJ5dGVTdHJpbmcoU2VxdWVuY2VbaW50XSwgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkJ5dGVTdHJpbmcpOgorICAgIHBhc3MKKworCitCeXRlU3RyaW5nLnJlZ2lzdGVyKHR5cGUobWVtb3J5dmlldyhiJycpKSkKKworCitjbGFzcyBMaXN0KGxpc3QsIE11dGFibGVTZXF1ZW5jZVtUXSk6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBfZ2VxdihjbHMsIExpc3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIExpc3QgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgbGlzdCgpIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gbGlzdC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCitjbGFzcyBTZXQoc2V0LCBNdXRhYmxlU2V0W1RdKToKKworICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgIGlmIF9nZXF2KGNscywgU2V0KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSBTZXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2Ugc2V0KCkgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBzZXQuX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpCisKKworY2xhc3MgX0Zyb3plblNldE1ldGEoR2VuZXJpY01ldGEpOgorICAgICIiIlRoaXMgbWV0YWNsYXNzIGVuc3VyZXMgc2V0IGlzIG5vdCBhIHN1YmNsYXNzIG9mIEZyb3plblNldC4KKworICAgIFdpdGhvdXQgdGhpcyBtZXRhY2xhc3MsIHNldCB3b3VsZCBiZSBjb25zaWRlcmVkIGEgc3ViY2xhc3Mgb2YKKyAgICBGcm96ZW5TZXQsIGJlY2F1c2UgRnJvemVuU2V0Ll9fZXh0cmFfXyBpcyBjb2xsZWN0aW9ucy5hYmMuU2V0LCBhbmQKKyAgICBzZXQgaXMgYSBzdWJjbGFzcyBvZiB0aGF0LgorICAgICIiIgorCisgICAgZGVmIF9fc3ViY2xhc3NjaGVja19fKHNlbGYsIGNscyk6CisgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCBTZXQpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzdXBlcigpLl9fc3ViY2xhc3NjaGVja19fKGNscykKKworCitjbGFzcyBGcm96ZW5TZXQoZnJvemVuc2V0LCBBYnN0cmFjdFNldFtUX2NvXSwgbWV0YWNsYXNzPV9Gcm96ZW5TZXRNZXRhKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgZGVmIF9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKToKKyAgICAgICAgaWYgX2dlcXYoY2xzLCBGcm96ZW5TZXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIEZyb3plblNldCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBmcm96ZW5zZXQoKSBpbnN0ZWFkIikKKyAgICAgICAgcmV0dXJuIGZyb3plbnNldC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCitjbGFzcyBNYXBwaW5nVmlldyhTaXplZCwgSXRlcmFibGVbVF9jb10sIGV4dHJhPWNvbGxlY3Rpb25zX2FiYy5NYXBwaW5nVmlldyk6CisgICAgcGFzcworCisKK2NsYXNzIEtleXNWaWV3KE1hcHBpbmdWaWV3W0tUXSwgQWJzdHJhY3RTZXRbS1RdLAorICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLktleXNWaWV3KToKKyAgICBwYXNzCisKKworIyBUT0RPOiBFbmFibGUgU2V0W1R1cGxlW0tULCBWVF9jb11dIGluc3RlYWQgb2YgR2VuZXJpY1tLVCwgVlRfY29dLgorY2xhc3MgSXRlbXNWaWV3KE1hcHBpbmdWaWV3LCBHZW5lcmljW0tULCBWVF9jb10sCisgICAgICAgICAgICAgICAgZXh0cmE9Y29sbGVjdGlvbnNfYWJjLkl0ZW1zVmlldyk6CisgICAgcGFzcworCisKK2NsYXNzIFZhbHVlc1ZpZXcoTWFwcGluZ1ZpZXdbVlRfY29dLCBleHRyYT1jb2xsZWN0aW9uc19hYmMuVmFsdWVzVmlldyk6CisgICAgcGFzcworCisKK2NsYXNzIERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSk6CisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBfZ2VxdihjbHMsIERpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUeXBlIERpY3QgY2Fubm90IGJlIGluc3RhbnRpYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgZGljdCgpIGluc3RlYWQiKQorICAgICAgICByZXR1cm4gZGljdC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKworCisjIERldGVybWluZSB3aGF0IGJhc2UgY2xhc3MgdG8gdXNlIGZvciBHZW5lcmF0b3IuCitpZiBoYXNhdHRyKGNvbGxlY3Rpb25zX2FiYywgJ0dlbmVyYXRvcicpOgorICAgICMgU3VmZmljaWVudGx5IHJlY2VudCB2ZXJzaW9ucyBvZiAzLjUgaGF2ZSBhIEdlbmVyYXRvciBBQkMuCisgICAgX0dfYmFzZSA9IGNvbGxlY3Rpb25zX2FiYy5HZW5lcmF0b3IKK2Vsc2U6CisgICAgIyBGYWxsIGJhY2sgb24gdGhlIGV4YWN0IHR5cGUuCisgICAgX0dfYmFzZSA9IHR5cGVzLkdlbmVyYXRvclR5cGUKKworCitjbGFzcyBHZW5lcmF0b3IoSXRlcmF0b3JbVF9jb10sIEdlbmVyaWNbVF9jbywgVF9jb250cmEsIFZfY29dLAorICAgICAgICAgICAgICAgIGV4dHJhPV9HX2Jhc2UpOgorICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3ZHMpOgorICAgICAgICBpZiBfZ2VxdihjbHMsIEdlbmVyYXRvcik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlR5cGUgR2VuZXJhdG9yIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRlIGEgc3ViY2xhc3MgaW5zdGVhZCIpCisgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCAqYXJncywgKiprd2RzKQorCisKK2RlZiBOYW1lZFR1cGxlKHR5cGVuYW1lLCBmaWVsZHMpOgorICAgICIiIlR5cGVkIHZlcnNpb24gb2YgbmFtZWR0dXBsZS4KKworICAgIFVzYWdlOjoKKworICAgICAgICBFbXBsb3llZSA9IHR5cGluZy5OYW1lZFR1cGxlKCdFbXBsb3llZScsIFsoJ25hbWUnLCBzdHIpLCAnaWQnLCBpbnQpXSkKKworICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0bzo6CisKKyAgICAgICAgRW1wbG95ZWUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdFbXBsb3llZScsIFsnbmFtZScsICdpZCddKQorCisgICAgVGhlIHJlc3VsdGluZyBjbGFzcyBoYXMgb25lIGV4dHJhIGF0dHJpYnV0ZTogX2ZpZWxkX3R5cGVzLAorICAgIGdpdmluZyBhIGRpY3QgbWFwcGluZyBmaWVsZCBuYW1lcyB0byB0eXBlcy4gIChUaGUgZmllbGQgbmFtZXMKKyAgICBhcmUgaW4gdGhlIF9maWVsZHMgYXR0cmlidXRlLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBuYW1lZHR1cGxlCisgICAgQVBJLikKKyAgICAiIiIKKyAgICBmaWVsZHMgPSBbKG4sIHQpIGZvciBuLCB0IGluIGZpZWxkc10KKyAgICBjbHMgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKHR5cGVuYW1lLCBbbiBmb3IgbiwgdCBpbiBmaWVsZHNdKQorICAgIGNscy5fZmllbGRfdHlwZXMgPSBkaWN0KGZpZWxkcykKKyAgICByZXR1cm4gY2xzCisKKworY2xhc3MgSU8oR2VuZXJpY1tBbnlTdHJdKToKKyAgICAiIiJHZW5lcmljIGJhc2UgY2xhc3MgZm9yIFRleHRJTyBhbmQgQmluYXJ5SU8uCisKKyAgICBUaGlzIGlzIGFuIGFic3RyYWN0LCBnZW5lcmljIHZlcnNpb24gb2YgdGhlIHJldHVybiBvZiBvcGVuKCkuCisKKyAgICBOT1RFOiBUaGlzIGRvZXMgbm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGRpZmZlcmVudCBwb3NzaWJsZQorICAgIGNsYXNzZXMgKHRleHQgdnMuIGJpbmFyeSwgcmVhZCB2cy4gd3JpdGUgdnMuIHJlYWQvd3JpdGUsCisgICAgYXBwZW5kLW9ubHksIHVuYnVmZmVyZWQpLiAgVGhlIFRleHRJTyBhbmQgQmluYXJ5SU8gc3ViY2xhc3NlcworICAgIGJlbG93IGNhcHR1cmUgdGhlIGRpc3RpbmN0aW9ucyBiZXR3ZWVuIHRleHQgdnMuIGJpbmFyeSwgd2hpY2ggaXMKKyAgICBwZXJ2YXNpdmUgaW4gdGhlIGludGVyZmFjZTsgaG93ZXZlciB3ZSBjdXJyZW50bHkgZG8gbm90IG9mZmVyIGEKKyAgICB3YXkgdG8gdHJhY2sgdGhlIG90aGVyIGRpc3RpbmN0aW9ucyBpbiB0aGUgdHlwZSBzeXN0ZW0uCisgICAgIiIiCisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgbW9kZShzZWxmKSAtPiBzdHI6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZikgLT4gc3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgY2xvc2Uoc2VsZikgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGNsb3NlZChzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmlsZW5vKHNlbGYpIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZsdXNoKHNlbGYpIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBpc2F0dHkoc2VsZikgLT4gYm9vbDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWQoc2VsZiwgbjogaW50ID0gLTEpIC0+IEFueVN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpIC0+IGJvb2w6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiByZWFkbGluZShzZWxmLCBsaW1pdDogaW50ID0gLTEpIC0+IEFueVN0cjoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBoaW50OiBpbnQgPSAtMSkgLT4gTGlzdFtBbnlTdHJdOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQ6IGludCwgd2hlbmNlOiBpbnQgPSAwKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBzZWVrYWJsZShzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgdGVsbChzZWxmKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB0cnVuY2F0ZShzZWxmLCBzaXplOiBpbnQgPSBOb25lKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0YWJsZShzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgd3JpdGUoc2VsZiwgczogQW55U3RyKSAtPiBpbnQ6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiB3cml0ZWxpbmVzKHNlbGYsIGxpbmVzOiBMaXN0W0FueVN0cl0pIC0+IE5vbmU6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2VudGVyX18oc2VsZikgLT4gJ0lPW0FueVN0cl0nOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjaykgLT4gTm9uZToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEJpbmFyeUlPKElPW2J5dGVzXSk6CisgICAgIiIiVHlwZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIG9mIG9wZW4oKSBpbiBiaW5hcnkgbW9kZS4iIiIKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgd3JpdGUoc2VsZiwgczogVW5pb25bYnl0ZXMsIGJ5dGVhcnJheV0pIC0+IGludDoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKSAtPiAnQmluYXJ5SU8nOgorICAgICAgICBwYXNzCisKKworY2xhc3MgVGV4dElPKElPW3N0cl0pOgorICAgICIiIlR5cGVkIHZlcnNpb24gb2YgdGhlIHJldHVybiBvZiBvcGVuKCkgaW4gdGV4dCBtb2RlLiIiIgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIGJ1ZmZlcihzZWxmKSAtPiBCaW5hcnlJTzoKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBkZWYgZW5jb2Rpbmcoc2VsZikgLT4gc3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBlcnJvcnMoc2VsZikgLT4gc3RyOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBsaW5lX2J1ZmZlcmluZyhzZWxmKSAtPiBib29sOgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBuZXdsaW5lcyhzZWxmKSAtPiBBbnk6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX2VudGVyX18oc2VsZikgLT4gJ1RleHRJTyc6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBpbzoKKyAgICAiIiJXcmFwcGVyIG5hbWVzcGFjZSBmb3IgSU8gZ2VuZXJpYyBjbGFzc2VzLiIiIgorCisgICAgX19hbGxfXyA9IFsnSU8nLCAnVGV4dElPJywgJ0JpbmFyeUlPJ10KKyAgICBJTyA9IElPCisgICAgVGV4dElPID0gVGV4dElPCisgICAgQmluYXJ5SU8gPSBCaW5hcnlJTworCitpby5fX25hbWVfXyA9IF9fbmFtZV9fICsgJy5pbycKK3N5cy5tb2R1bGVzW2lvLl9fbmFtZV9fXSA9IGlvCisKKworUGF0dGVybiA9IF9UeXBlQWxpYXMoJ1BhdHRlcm4nLCBBbnlTdHIsIHR5cGUoc3RkbGliX3JlLmNvbXBpbGUoJycpKSwKKyAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBwOiBwLnBhdHRlcm4pCitNYXRjaCA9IF9UeXBlQWxpYXMoJ01hdGNoJywgQW55U3RyLCB0eXBlKHN0ZGxpYl9yZS5tYXRjaCgnJywgJycpKSwKKyAgICAgICAgICAgICAgICAgICBsYW1iZGEgbTogbS5yZS5wYXR0ZXJuKQorCisKK2NsYXNzIHJlOgorICAgICIiIldyYXBwZXIgbmFtZXNwYWNlIGZvciByZSB0eXBlIGFsaWFzZXMuIiIiCisKKyAgICBfX2FsbF9fID0gWydQYXR0ZXJuJywgJ01hdGNoJ10KKyAgICBQYXR0ZXJuID0gUGF0dGVybgorICAgIE1hdGNoID0gTWF0Y2gKKworcmUuX19uYW1lX18gPSBfX25hbWVfXyArICcucmUnCitzeXMubW9kdWxlc1tyZS5fX25hbWVfX10gPSByZQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L19faW5pdF9fLnB5IGIvTGliL3VuaXR0ZXN0L19faW5pdF9fLnB5CmluZGV4IGE1ZDUwYWYuLmY2ZDdhZTIgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvdW5pdHRlc3QvX19pbml0X18ucHkKQEAgLTY3LDMgKzY3LDEyIEBACiAKICMgZGVwcmVjYXRlZAogX1RleHRUZXN0UmVzdWx0ID0gVGV4dFRlc3RSZXN1bHQKKworIyBUaGVyZSBhcmUgbm8gdGVzdHMgaGVyZSwgc28gZG9uJ3QgdHJ5IHRvIHJ1biBhbnl0aGluZyBkaXNjb3ZlcmVkIGZyb20KKyMgaW50cm9zcGVjdGluZyB0aGUgc3ltYm9scyAoZS5nLiBGdW5jdGlvblRlc3RDYXNlKS4gSW5zdGVhZCwgYWxsIG91cgorIyB0ZXN0cyBjb21lIGZyb20gd2l0aGluIHVuaXR0ZXN0LnRlc3QuCitkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICBpbXBvcnQgb3MucGF0aAorICAgICMgdG9wIGxldmVsIGRpcmVjdG9yeSBjYWNoZWQgb24gbG9hZGVyIGluc3RhbmNlCisgICAgdGhpc19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAgcmV0dXJuIGxvYWRlci5kaXNjb3ZlcihzdGFydF9kaXI9dGhpc19kaXIsIHBhdHRlcm49cGF0dGVybikKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKaW5kZXggOGE5ZjFjMC4uYWM4ZDY3ZCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKQEAgLTExOSw2ICsxMTksMTAgQEAKICAgICB0ZXN0X2l0ZW0uX191bml0dGVzdF9leHBlY3RpbmdfZmFpbHVyZV9fID0gVHJ1ZQogICAgIHJldHVybiB0ZXN0X2l0ZW0KIAorZGVmIF9pc19zdWJ0eXBlKGV4cGVjdGVkLCBiYXNldHlwZSk6CisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgdHVwbGUpOgorICAgICAgICByZXR1cm4gYWxsKF9pc19zdWJ0eXBlKGUsIGJhc2V0eXBlKSBmb3IgZSBpbiBleHBlY3RlZCkKKyAgICByZXR1cm4gaXNpbnN0YW5jZShleHBlY3RlZCwgdHlwZSkgYW5kIGlzc3ViY2xhc3MoZXhwZWN0ZWQsIGJhc2V0eXBlKQogCiBjbGFzcyBfQmFzZVRlc3RDYXNlQ29udGV4dDoKIApAQCAtMTI5LDM1ICsxMzMsNDUgQEAKICAgICAgICAgbXNnID0gc2VsZi50ZXN0X2Nhc2UuX2Zvcm1hdE1lc3NhZ2Uoc2VsZi5tc2csIHN0YW5kYXJkTXNnKQogICAgICAgICByYWlzZSBzZWxmLnRlc3RfY2FzZS5mYWlsdXJlRXhjZXB0aW9uKG1zZykKIAotCiBjbGFzcyBfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQoX0Jhc2VUZXN0Q2FzZUNvbnRleHQpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCB0ZXN0X2Nhc2UsIGNhbGxhYmxlX29iaj1Ob25lLAotICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHRlc3RfY2FzZSwgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CiAgICAgICAgIF9CYXNlVGVzdENhc2VDb250ZXh0Ll9faW5pdF9fKHNlbGYsIHRlc3RfY2FzZSkKICAgICAgICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkCiAgICAgICAgIHNlbGYudGVzdF9jYXNlID0gdGVzdF9jYXNlCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gY2FsbGFibGVfb2JqLl9fbmFtZV9fCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IHN0cihjYWxsYWJsZV9vYmopCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gTm9uZQogICAgICAgICBpZiBleHBlY3RlZF9yZWdleCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICAgc2VsZi5leHBlY3RlZF9yZWdleCA9IGV4cGVjdGVkX3JlZ2V4CisgICAgICAgIHNlbGYub2JqX25hbWUgPSBOb25lCiAgICAgICAgIHNlbGYubXNnID0gTm9uZQogCi0gICAgZGVmIGhhbmRsZShzZWxmLCBuYW1lLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncyk6CisgICAgZGVmIGhhbmRsZShzZWxmLCBuYW1lLCBhcmdzLCBrd2FyZ3MpOgogICAgICAgICAiIiIKLSAgICAgICAgSWYgY2FsbGFibGVfb2JqIGlzIE5vbmUsIGFzc2VydFJhaXNlcy9XYXJucyBpcyBiZWluZyB1c2VkIGFzIGEKKyAgICAgICAgSWYgYXJncyBpcyBlbXB0eSwgYXNzZXJ0UmFpc2VzL1dhcm5zIGlzIGJlaW5nIHVzZWQgYXMgYQogICAgICAgICBjb250ZXh0IG1hbmFnZXIsIHNvIGNoZWNrIGZvciBhICdtc2cnIGt3YXJnIGFuZCByZXR1cm4gc2VsZi4KLSAgICAgICAgSWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lLCBjYWxsIGl0IHBhc3NpbmcgYXJncyBhbmQga3dhcmdzLgorICAgICAgICBJZiBhcmdzIGlzIG5vdCBlbXB0eSwgY2FsbCBhIGNhbGxhYmxlIHBhc3NpbmcgcG9zaXRpb25hbCBhbmQga2V5d29yZAorICAgICAgICBhcmd1bWVudHMuCiAgICAgICAgICIiIgotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKKyAgICAgICAgaWYgbm90IF9pc19zdWJ0eXBlKHNlbGYuZXhwZWN0ZWQsIHNlbGYuX2Jhc2VfdHlwZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgYXJnIDEgbXVzdCBiZSAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBzZWxmLl9iYXNlX3R5cGVfc3RyKSkKKyAgICAgICAgaWYgYXJncyBhbmQgYXJnc1swXSBpcyBOb25lOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybigiY2FsbGFibGUgaXMgTm9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMykKKyAgICAgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIHNlbGYubXNnID0ga3dhcmdzLnBvcCgnbXNnJywgTm9uZSkKKyAgICAgICAgICAgIGlmIGt3YXJnczoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGZ1bmN0aW9uJyAlIG5leHQoaXRlcihrd2FyZ3MpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMykKICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgY2FsbGFibGVfb2JqLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5vYmpfbmFtZSA9IGNhbGxhYmxlX29iai5fX25hbWVfXworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBzZWxmLm9ial9uYW1lID0gc3RyKGNhbGxhYmxlX29iaikKICAgICAgICAgd2l0aCBzZWxmOgogICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTY1LDYgKzE3OSw5IEBACiBjbGFzcyBfQXNzZXJ0UmFpc2VzQ29udGV4dChfQXNzZXJ0UmFpc2VzQmFzZUNvbnRleHQpOgogICAgICIiIkEgY29udGV4dCBtYW5hZ2VyIHVzZWQgdG8gaW1wbGVtZW50IFRlc3RDYXNlLmFzc2VydFJhaXNlcyogbWV0aG9kcy4iIiIKIAorICAgIF9iYXNlX3R5cGUgPSBCYXNlRXhjZXB0aW9uCisgICAgX2Jhc2VfdHlwZV9zdHIgPSAnYW4gZXhjZXB0aW9uIHR5cGUgb3IgdHVwbGUgb2YgZXhjZXB0aW9uIHR5cGVzJworCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKIApAQCAtMTk5LDYgKzIxNiw5IEBACiBjbGFzcyBfQXNzZXJ0V2FybnNDb250ZXh0KF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dCk6CiAgICAgIiIiQSBjb250ZXh0IG1hbmFnZXIgdXNlZCB0byBpbXBsZW1lbnQgVGVzdENhc2UuYXNzZXJ0V2FybnMqIG1ldGhvZHMuIiIiCiAKKyAgICBfYmFzZV90eXBlID0gV2FybmluZworICAgIF9iYXNlX3R5cGVfc3RyID0gJ2Egd2FybmluZyB0eXBlIG9yIHR1cGxlIG9mIHdhcm5pbmcgdHlwZXMnCisKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICAjIFRoZSBfX3dhcm5pbmdyZWdpc3RyeV9fJ3MgbmVlZCB0byBiZSBpbiBhIHByaXN0aW5lIHN0YXRlIGZvciB0ZXN0cwogICAgICAgICAjIHRvIHdvcmsgcHJvcGVybHkuCkBAIC02NzcsMTUgKzY5NywxNSBAQAogICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICAnJXMgOiAlcycgJSAoc2FmZV9yZXByKHN0YW5kYXJkTXNnKSwgc2FmZV9yZXByKG1zZykpCiAKLSAgICBkZWYgYXNzZXJ0UmFpc2VzKHNlbGYsIGV4Y0NsYXNzLCBjYWxsYWJsZU9iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhjQ2xhc3MgaXMgcmFpc2VkCi0gICAgICAgICAgIGJ5IGNhbGxhYmxlT2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCi0gICAgICAgICAgIGFyZ3VtZW50cyBrd2FyZ3MuIElmIGEgZGlmZmVyZW50IHR5cGUgb2YgZXhjZXB0aW9uIGlzCisgICAgZGVmIGFzc2VydFJhaXNlcyhzZWxmLCBleHBlY3RlZF9leGNlcHRpb24sICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIkZhaWwgdW5sZXNzIGFuIGV4Y2VwdGlvbiBvZiBjbGFzcyBleHBlY3RlZF9leGNlcHRpb24gaXMgcmFpc2VkCisgICAgICAgICAgIGJ5IHRoZSBjYWxsYWJsZSB3aGVuIGludm9rZWQgd2l0aCBzcGVjaWZpZWQgcG9zaXRpb25hbCBhbmQKKyAgICAgICAgICAga2V5d29yZCBhcmd1bWVudHMuIElmIGEgZGlmZmVyZW50IHR5cGUgb2YgZXhjZXB0aW9uIGlzCiAgICAgICAgICAgIHJhaXNlZCwgaXQgd2lsbCBub3QgYmUgY2F1Z2h0LCBhbmQgdGhlIHRlc3QgY2FzZSB3aWxsIGJlCiAgICAgICAgICAgIGRlZW1lZCB0byBoYXZlIHN1ZmZlcmVkIGFuIGVycm9yLCBleGFjdGx5IGFzIGZvciBhbgogICAgICAgICAgICB1bmV4cGVjdGVkIGV4Y2VwdGlvbi4KIAotICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCBjYWxsYWJsZU9iaiBvbWl0dGVkIG9yIE5vbmUsIHdpbGwgcmV0dXJuIGEKKyAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggdGhlIGNhbGxhYmxlIGFuZCBhcmd1bWVudHMgb21pdHRlZCwgd2lsbCByZXR1cm4gYQogICAgICAgICAgICBjb250ZXh0IG9iamVjdCB1c2VkIGxpa2UgdGhpczo6CiAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24pOgpAQCAtNzAzLDE4ICs3MjMsMTggQEAKICAgICAgICAgICAgICAgIHRoZV9leGNlcHRpb24gPSBjbS5leGNlcHRpb24KICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX2V4Y2VwdGlvbi5lcnJvcl9jb2RlLCAzKQogICAgICAgICAiIiIKLSAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4Y0NsYXNzLCBzZWxmLCBjYWxsYWJsZU9iaikKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuaGFuZGxlKCdhc3NlcnRSYWlzZXMnLCBjYWxsYWJsZU9iaiwgYXJncywga3dhcmdzKQorICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBzZWxmKQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlcycsIGFyZ3MsIGt3YXJncykKIAotICAgIGRlZiBhc3NlcnRXYXJucyhzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgYXNzZXJ0V2FybnMoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiRmFpbCB1bmxlc3MgYSB3YXJuaW5nIG9mIGNsYXNzIHdhcm5DbGFzcyBpcyB0cmlnZ2VyZWQKLSAgICAgICAgICAgYnkgY2FsbGFibGVfb2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCi0gICAgICAgICAgIGFyZ3VtZW50cyBrd2FyZ3MuICBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIHdhcm5pbmcgaXMKKyAgICAgICAgICAgYnkgdGhlIGNhbGxhYmxlIHdoZW4gaW52b2tlZCB3aXRoIHNwZWNpZmllZCBwb3NpdGlvbmFsIGFuZAorICAgICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEgZGlmZmVyZW50IHR5cGUgb2Ygd2FybmluZyBpcwogICAgICAgICAgICB0cmlnZ2VyZWQsIGl0IHdpbGwgbm90IGJlIGhhbmRsZWQ6IGRlcGVuZGluZyBvbiB0aGUgb3RoZXIKICAgICAgICAgICAgd2FybmluZyBmaWx0ZXJpbmcgcnVsZXMgaW4gZWZmZWN0LCBpdCBtaWdodCBiZSBzaWxlbmNlZCwgcHJpbnRlZAogICAgICAgICAgICBvdXQsIG9yIHJhaXNlZCBhcyBhbiBleGNlcHRpb24uCiAKLSAgICAgICAgICAgSWYgY2FsbGVkIHdpdGggY2FsbGFibGVfb2JqIG9taXR0ZWQgb3IgTm9uZSwgd2lsbCByZXR1cm4gYQorICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCB0aGUgY2FsbGFibGUgYW5kIGFyZ3VtZW50cyBvbWl0dGVkLCB3aWxsIHJldHVybiBhCiAgICAgICAgICAgIGNvbnRleHQgb2JqZWN0IHVzZWQgbGlrZSB0aGlzOjoKIAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhTb21lV2FybmluZyk6CkBAIC03MzQsOCArNzU0LDggQEAKICAgICAgICAgICAgICAgIHRoZV93YXJuaW5nID0gY20ud2FybmluZwogICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfd2FybmluZy5zb21lX2F0dHJpYnV0ZSwgMTQ3KQogICAgICAgICAiIiIKLSAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqKQotICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zJywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0V2FybnNDb250ZXh0KGV4cGVjdGVkX3dhcm5pbmcsIHNlbGYpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnMnLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0TG9ncyhzZWxmLCBsb2dnZXI9Tm9uZSwgbGV2ZWw9Tm9uZSk6CiAgICAgICAgICIiIkZhaWwgdW5sZXNzIGEgbG9nIG1lc3NhZ2Ugb2YgbGV2ZWwgKmxldmVsKiBvciBoaWdoZXIgaXMgZW1pdHRlZApAQCAtMTIyMiwyNiArMTI0MiwyMyBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKHNlbGYuX2Zvcm1hdE1lc3NhZ2UobXNnLCBzdGFuZGFyZE1zZykpCiAKICAgICBkZWYgYXNzZXJ0UmFpc2VzUmVnZXgoc2VsZiwgZXhwZWN0ZWRfZXhjZXB0aW9uLCBleHBlY3RlZF9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVfb2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkFzc2VydHMgdGhhdCB0aGUgbWVzc2FnZSBpbiBhIHJhaXNlZCBleGNlcHRpb24gbWF0Y2hlcyBhIHJlZ2V4LgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBleHBlY3RlZF9leGNlcHRpb246IEV4Y2VwdGlvbiBjbGFzcyBleHBlY3RlZCB0byBiZSByYWlzZWQuCiAgICAgICAgICAgICBleHBlY3RlZF9yZWdleDogUmVnZXggKHJlIHBhdHRlcm4gb2JqZWN0IG9yIHN0cmluZykgZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZm91bmQgaW4gZXJyb3IgbWVzc2FnZS4KLSAgICAgICAgICAgIGNhbGxhYmxlX29iajogRnVuY3Rpb24gdG8gYmUgY2FsbGVkLgorICAgICAgICAgICAgYXJnczogRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFuZCBleHRyYSBwb3NpdGlvbmFsIGFyZ3MuCisgICAgICAgICAgICBrd2FyZ3M6IEV4dHJhIGt3YXJncy4KICAgICAgICAgICAgIG1zZzogT3B0aW9uYWwgbWVzc2FnZSB1c2VkIGluIGNhc2Ugb2YgZmFpbHVyZS4gQ2FuIG9ubHkgYmUgdXNlZAogICAgICAgICAgICAgICAgICAgICB3aGVuIGFzc2VydFJhaXNlc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCi0gICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgotICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgotICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFJhaXNlc0NvbnRleHQoZXhwZWN0ZWRfZXhjZXB0aW9uLCBzZWxmLCBjYWxsYWJsZV9vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleCkKLQotICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleHBlY3RlZF9leGNlcHRpb24sIHNlbGYsIGV4cGVjdGVkX3JlZ2V4KQorICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlc1JlZ2V4JywgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFdhcm5zUmVnZXgoc2VsZiwgZXhwZWN0ZWRfd2FybmluZywgZXhwZWN0ZWRfcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGVfb2JqPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiQXNzZXJ0cyB0aGF0IHRoZSBtZXNzYWdlIGluIGEgdHJpZ2dlcmVkIHdhcm5pbmcgbWF0Y2hlcyBhIHJlZ2V4cC4KICAgICAgICAgQmFzaWMgZnVuY3Rpb25pbmcgaXMgc2ltaWxhciB0byBhc3NlcnRXYXJucygpIHdpdGggdGhlIGFkZGl0aW9uCiAgICAgICAgIHRoYXQgb25seSB3YXJuaW5ncyB3aG9zZSBtZXNzYWdlcyBhbHNvIG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KQEAgLTEyNTEsMTUgKzEyNjgsMTMgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3dhcm5pbmc6IFdhcm5pbmcgY2xhc3MgZXhwZWN0ZWQgdG8gYmUgdHJpZ2dlcmVkLgogICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg6IFJlZ2V4IChyZSBwYXR0ZXJuIG9iamVjdCBvciBzdHJpbmcpIGV4cGVjdGVkCiAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGZvdW5kIGluIGVycm9yIG1lc3NhZ2UuCi0gICAgICAgICAgICBjYWxsYWJsZV9vYmo6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4KKyAgICAgICAgICAgIGFyZ3M6IEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhbmQgZXh0cmEgcG9zaXRpb25hbCBhcmdzLgorICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKICAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRXYXJuc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCi0gICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgotICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgotICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4KQotICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFdhcm5zUmVnZXgnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKKyAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgZXhwZWN0ZWRfcmVnZXgpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnNSZWdleCcsIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRSZWdleChzZWxmLCB0ZXh0LCBleHBlY3RlZF9yZWdleCwgbXNnPU5vbmUpOgogICAgICAgICAiIiJGYWlsIHRoZSB0ZXN0IHVubGVzcyB0aGUgdGV4dCBtYXRjaGVzIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uIiIiCkBAIC0xMjY3LDggKzEyODIsMTAgQEAKICAgICAgICAgICAgIGFzc2VydCBleHBlY3RlZF9yZWdleCwgImV4cGVjdGVkX3JlZ2V4IG11c3Qgbm90IGJlIGVtcHR5LiIKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICAgaWYgbm90IGV4cGVjdGVkX3JlZ2V4LnNlYXJjaCh0ZXh0KToKLSAgICAgICAgICAgIG1zZyA9IG1zZyBvciAiUmVnZXggZGlkbid0IG1hdGNoIgotICAgICAgICAgICAgbXNnID0gJyVzOiAlciBub3QgZm91bmQgaW4gJXInICUgKG1zZywgZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgdGV4dCkKKyAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gIlJlZ2V4IGRpZG4ndCBtYXRjaDogJXIgbm90IGZvdW5kIGluICVyIiAlICgKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCB0ZXh0KQorICAgICAgICAgICAgIyBfZm9ybWF0TWVzc2FnZSBlbnN1cmVzIHRoZSBsb25nTWVzc2FnZSBvcHRpb24gaXMgcmVzcGVjdGVkCisgICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpCiAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQogCiAgICAgZGVmIGFzc2VydE5vdFJlZ2V4KHNlbGYsIHRleHQsIHVuZXhwZWN0ZWRfcmVnZXgsIG1zZz1Ob25lKToKQEAgLTEyNzcsMTEgKzEyOTQsMTIgQEAKICAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVnZXggPSByZS5jb21waWxlKHVuZXhwZWN0ZWRfcmVnZXgpCiAgICAgICAgIG1hdGNoID0gdW5leHBlY3RlZF9yZWdleC5zZWFyY2godGV4dCkKICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICBtc2cgPSBtc2cgb3IgIlJlZ2V4IG1hdGNoZWQiCi0gICAgICAgICAgICBtc2cgPSAnJXM6ICVyIG1hdGNoZXMgJXIgaW4gJXInICUgKG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFttYXRjaC5zdGFydCgpOm1hdGNoLmVuZCgpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZF9yZWdleC5wYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0KQorICAgICAgICAgICAgc3RhbmRhcmRNc2cgPSAnUmVnZXggbWF0Y2hlZDogJXIgbWF0Y2hlcyAlciBpbiAlcicgJSAoCisgICAgICAgICAgICAgICAgdGV4dFttYXRjaC5zdGFydCgpIDogbWF0Y2guZW5kKCldLAorICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwKKyAgICAgICAgICAgICAgICB0ZXh0KQorICAgICAgICAgICAgIyBfZm9ybWF0TWVzc2FnZSBlbnN1cmVzIHRoZSBsb25nTWVzc2FnZSBvcHRpb24gaXMgcmVzcGVjdGVkCisgICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpCiAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24obXNnKQogCiAKQEAgLTEzMDMsNiArMTMyMSw3IEBACiAgICAgZmFpbElmID0gX2RlcHJlY2F0ZShhc3NlcnRGYWxzZSkKICAgICBhc3NlcnRSYWlzZXNSZWdleHAgPSBfZGVwcmVjYXRlKGFzc2VydFJhaXNlc1JlZ2V4KQogICAgIGFzc2VydFJlZ2V4cE1hdGNoZXMgPSBfZGVwcmVjYXRlKGFzc2VydFJlZ2V4KQorICAgIGFzc2VydE5vdFJlZ2V4cE1hdGNoZXMgPSBfZGVwcmVjYXRlKGFzc2VydE5vdFJlZ2V4KQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L2xvYWRlci5weSBiL0xpYi91bml0dGVzdC9sb2FkZXIucHkKaW5kZXggYWYzOTIxNi4uYzc3NmYxNiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHR5cGVzCiBpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgd2FybmluZ3MKIAogZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKQEAgLTEzLDkgKzE0LDkgQEAKIAogX191bml0dGVzdCA9IFRydWUKIAotIyB3aGF0IGFib3V0IC5weWMgb3IgLnB5byAoZXRjKQorIyB3aGF0IGFib3V0IC5weWMgKGV0YykKICMgd2Ugd291bGQgbmVlZCB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHRlc3RzIG11bHRpcGxlIHRpbWVzCi0jIGZyb20gJy5weScsICcucHljJyAqYW5kKiAnLnB5bycKKyMgZnJvbSAnLnB5JywgKmFuZCogJy5weWMnCiBWQUxJRF9NT0RVTEVfTkFNRSA9IHJlLmNvbXBpbGUocidbX2Etel1cdypcLnB5JCcsIHJlLklHTk9SRUNBU0UpCiAKIApAQCAtMzUsMTUgKzM2LDE4IEBACiAKIAogZGVmIF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdChuYW1lLCBzdWl0ZUNsYXNzKToKLSAgICBtZXNzYWdlID0gJ0ZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6ICVzXG4lcycgJSAobmFtZSwgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICByZXR1cm4gX21ha2VfZmFpbGVkX3Rlc3QobmFtZSwgSW1wb3J0RXJyb3IobWVzc2FnZSksIHN1aXRlQ2xhc3MpCisgICAgbWVzc2FnZSA9ICdGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiAlc1xuJXMnICUgKAorICAgICAgICBuYW1lLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgIHJldHVybiBfbWFrZV9mYWlsZWRfdGVzdChuYW1lLCBJbXBvcnRFcnJvcihtZXNzYWdlKSwgc3VpdGVDbGFzcywgbWVzc2FnZSkKIAogZGVmIF9tYWtlX2ZhaWxlZF9sb2FkX3Rlc3RzKG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcyk6Ci0gICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcykKKyAgICBtZXNzYWdlID0gJ0ZhaWxlZCB0byBjYWxsIGxvYWRfdGVzdHM6XG4lcycgJSAodHJhY2ViYWNrLmZvcm1hdF9leGMoKSwpCisgICAgcmV0dXJuIF9tYWtlX2ZhaWxlZF90ZXN0KAorICAgICAgICBuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MsIG1lc3NhZ2UpCiAKLWRlZiBfbWFrZV9mYWlsZWRfdGVzdChtZXRob2RuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpOgorZGVmIF9tYWtlX2ZhaWxlZF90ZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbiwgc3VpdGVDbGFzcywgbWVzc2FnZSk6CiAgICAgdGVzdCA9IF9GYWlsZWRUZXN0KG1ldGhvZG5hbWUsIGV4Y2VwdGlvbikKLSAgICByZXR1cm4gc3VpdGVDbGFzcygodGVzdCwpKQorICAgIHJldHVybiBzdWl0ZUNsYXNzKCh0ZXN0LCkpLCBtZXNzYWdlCiAKIGRlZiBfbWFrZV9za2lwcGVkX3Rlc3QobWV0aG9kbmFtZSwgZXhjZXB0aW9uLCBzdWl0ZUNsYXNzKToKICAgICBAY2FzZS5za2lwKHN0cihleGNlcHRpb24pKQpAQCAtNjksNiArNzMsMTMgQEAKICAgICBzdWl0ZUNsYXNzID0gc3VpdGUuVGVzdFN1aXRlCiAgICAgX3RvcF9sZXZlbF9kaXIgPSBOb25lCiAKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RMb2FkZXIsIHNlbGYpLl9faW5pdF9fKCkKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBbXQorICAgICAgICAjIFRyYWNrcyBwYWNrYWdlcyB3aGljaCB3ZSBoYXZlIGNhbGxlZCBpbnRvIHZpYSBsb2FkX3Rlc3RzLCB0bworICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlLWVudHJhbmN5LgorICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzID0gc2V0KCkKKwogICAgIGRlZiBsb2FkVGVzdHNGcm9tVGVzdENhc2Uoc2VsZiwgdGVzdENhc2VDbGFzcyk6CiAgICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGVzdENhc2VDbGFzcyIiIgogICAgICAgICBpZiBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIHN1aXRlLlRlc3RTdWl0ZSk6CkBAIC04MSw4ICs5MiwzMCBAQAogICAgICAgICBsb2FkZWRfc3VpdGUgPSBzZWxmLnN1aXRlQ2xhc3MobWFwKHRlc3RDYXNlQ2xhc3MsIHRlc3RDYXNlTmFtZXMpKQogICAgICAgICByZXR1cm4gbG9hZGVkX3N1aXRlCiAKLSAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShzZWxmLCBtb2R1bGUsIHVzZV9sb2FkX3Rlc3RzPVRydWUpOgorICAgICMgWFhYIEFmdGVyIFB5dGhvbiAzLjUsIHJlbW92ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGhhY2tzIGZvcgorICAgICMgdXNlX2xvYWRfdGVzdHMgZGVwcmVjYXRpb24gdmlhICphcmdzIGFuZCAqKmt3cy4gIFNlZSBpc3N1ZSAxNjY2Mi4KKyAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShzZWxmLCBtb2R1bGUsICphcmdzLCBwYXR0ZXJuPU5vbmUsICoqa3dzKToKICAgICAgICAgIiIiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiB0aGUgZ2l2ZW4gbW9kdWxlIiIiCisgICAgICAgICMgVGhpcyBtZXRob2QgdXNlZCB0byB0YWtlIGFuIHVuZG9jdW1lbnRlZCBhbmQgdW5vZmZpY2lhbAorICAgICAgICAjIHVzZV9sb2FkX3Rlc3RzIGFyZ3VtZW50LiAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlIHN0aWxsCisgICAgICAgICMgYWNjZXB0IHRoZSBhcmd1bWVudCAod2hpY2ggY2FuIGFsc28gYmUgdGhlIGZpcnN0IHBvc2l0aW9uKSBidXQgd2UKKyAgICAgICAgIyBpZ25vcmUgaXQgYW5kIGlzc3VlIGEgZGVwcmVjYXRpb24gd2FybmluZyBpZiBpdCdzIHByZXNlbnQuCisgICAgICAgIGlmIGxlbihhcmdzKSA+IDAgb3IgJ3VzZV9sb2FkX3Rlc3RzJyBpbiBrd3M6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCd1c2VfbG9hZF90ZXN0cyBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAga3dzLnBvcCgndXNlX2xvYWRfdGVzdHMnLCBOb25lKQorICAgICAgICBpZiBsZW4oYXJncykgPiAxOgorICAgICAgICAgICAgIyBDb21wbGFpbiBhYm91dCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgYnV0IGRvbid0IGZvcmdldCB0aGUKKyAgICAgICAgICAgICMgcmVxdWlyZWQgYG1vZHVsZWAgYXJndW1lbnQuCisgICAgICAgICAgICBjb21wbGFpbnQgPSBsZW4oYXJncykgKyAxCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2xvYWRUZXN0c0Zyb21Nb2R1bGUoKSB0YWtlcyAxIHBvc2l0aW9uYWwgYXJndW1lbnQgYnV0IHt9IHdlcmUgZ2l2ZW4nLmZvcm1hdChjb21wbGFpbnQpKQorICAgICAgICBpZiBsZW4oa3dzKSAhPSAwOgorICAgICAgICAgICAgIyBTaW5jZSB0aGUga2V5d29yZCBhcmd1bWVudHMgYXJlIHVuc29ydGVkIChzZWUgUEVQIDQ2OCksIGp1c3QKKyAgICAgICAgICAgICMgcGljayB0aGUgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGZpcnN0IGFyZ3VtZW50IHRvIGNvbXBsYWluIGFib3V0LAorICAgICAgICAgICAgIyBpZiBtdWx0aXBsZSB3ZXJlIGdpdmVuLiAgQXQgbGVhc3QgdGhlIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZQorICAgICAgICAgICAgIyBwcmVkaWN0YWJsZS4KKyAgICAgICAgICAgIGNvbXBsYWludCA9IHNvcnRlZChrd3MpWzBdCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImxvYWRUZXN0c0Zyb21Nb2R1bGUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICd7fSciLmZvcm1hdChjb21wbGFpbnQpKQogICAgICAgICB0ZXN0cyA9IFtdCiAgICAgICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGUpOgogICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihtb2R1bGUsIG5hbWUpCkBAIC05MSwxMiArMTI0LDE0IEBACiAKICAgICAgICAgbG9hZF90ZXN0cyA9IGdldGF0dHIobW9kdWxlLCAnbG9hZF90ZXN0cycsIE5vbmUpCiAgICAgICAgIHRlc3RzID0gc2VsZi5zdWl0ZUNsYXNzKHRlc3RzKQotICAgICAgICBpZiB1c2VfbG9hZF90ZXN0cyBhbmQgbG9hZF90ZXN0cyBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbG9hZF90ZXN0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF90ZXN0cyhzZWxmLCB0ZXN0cywgTm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9hZF90ZXN0cyhzZWxmLCB0ZXN0cywgcGF0dGVybikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICByZXR1cm4gX21ha2VfZmFpbGVkX2xvYWRfdGVzdHMobW9kdWxlLl9fbmFtZV9fLCBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgICAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IF9tYWtlX2ZhaWxlZF9sb2FkX3Rlc3RzKAorICAgICAgICAgICAgICAgICAgICBtb2R1bGUuX19uYW1lX18sIGUsIHNlbGYuc3VpdGVDbGFzcykKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JfY2FzZQogICAgICAgICByZXR1cm4gdGVzdHMKIAogICAgIGRlZiBsb2FkVGVzdHNGcm9tTmFtZShzZWxmLCBuYW1lLCBtb2R1bGU9Tm9uZSk6CkBAIC0xMDksMjAgKzE0NCw0NyBAQAogICAgICAgICBUaGUgbWV0aG9kIG9wdGlvbmFsbHkgcmVzb2x2ZXMgdGhlIG5hbWVzIHJlbGF0aXZlIHRvIGEgZ2l2ZW4gbW9kdWxlLgogICAgICAgICAiIiIKICAgICAgICAgcGFydHMgPSBuYW1lLnNwbGl0KCcuJykKKyAgICAgICAgZXJyb3JfY2FzZSwgZXJyb3JfbWVzc2FnZSA9IE5vbmUsIE5vbmUKICAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXJ0c19jb3B5ID0gcGFydHNbOl0KICAgICAgICAgICAgIHdoaWxlIHBhcnRzX2NvcHk6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKCcuJy5qb2luKHBhcnRzX2NvcHkpKQorICAgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZSA9ICcuJy5qb2luKHBhcnRzX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IF9faW1wb3J0X18obW9kdWxlX25hbWUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgICAgICAgICBkZWwgcGFydHNfY29weVstMV0KKyAgICAgICAgICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBwYXJ0c19jb3B5LnBvcCgpCisgICAgICAgICAgICAgICAgICAgICMgTGFzdCBlcnJvciBzbyB3ZSBjYW4gZ2l2ZSBpdCB0byB0aGUgdXNlciBpZiBuZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2F0dHJpYnV0ZSwgc2VsZi5zdWl0ZUNsYXNzKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcGFydHNfY29weToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAjIEV2ZW4gdGhlIHRvcCBsZXZlbCBpbXBvcnQgZmFpbGVkOiByZXBvcnQgdGhhdCBlcnJvci4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKICAgICAgICAgICAgIHBhcnRzID0gcGFydHNbMTpdCiAgICAgICAgIG9iaiA9IG1vZHVsZQogICAgICAgICBmb3IgcGFydCBpbiBwYXJ0czoKLSAgICAgICAgICAgIHBhcmVudCwgb2JqID0gb2JqLCBnZXRhdHRyKG9iaiwgcGFydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXJlbnQsIG9iaiA9IG9iaiwgZ2V0YXR0cihvYmosIHBhcnQpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIFdlIGNhbid0IHRyYXZlcnNlIHNvbWUgcGFydCBvZiB0aGUgbmFtZS4KKyAgICAgICAgICAgICAgICBpZiAoZ2V0YXR0cihvYmosICdfX3BhdGhfXycsIE5vbmUpIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgICAgIGFuZCBlcnJvcl9jYXNlIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgcGFja2FnZSAobm8gX19wYXRoX18gcGVyIGltcG9ydGxpYiBkb2NzKSwgYW5kIHdlCisgICAgICAgICAgICAgICAgICAgICMgZW5jb3VudGVyZWQgYW4gZXJyb3IgaW1wb3J0aW5nIHNvbWV0aGluZy4gV2UgY2Fubm90IHRlbGwKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBhY2thZ2UuV3JvbmdOYW1lVGVzdENsYXNzIGFuZAorICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2Uud3JvbmdfbW9kdWxlX25hbWUgc28gd2UganVzdCByZXBvcnQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgSW1wb3J0RXJyb3IgLSBpdCBpcyBtb3JlIGluZm9ybWF0aXZlLgorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgd2Ugc2lnbmFsIHRoYXQgYW4gQXR0cmlidXRlRXJyb3IgaGFzIG9jY3VycmVkLgorICAgICAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gX21ha2VfZmFpbGVkX3Rlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LCBlLCBzZWxmLnN1aXRlQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGFjY2VzcyBhdHRyaWJ1dGU6XG4lcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSwpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9ycy5hcHBlbmQoZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UKIAogICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTW9kdWxlVHlwZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG9iaikKQEAgLTE4MSw5ICsyNDMsMTMgQEAKIAogICAgICAgICBJZiBhIHRlc3QgcGFja2FnZSBuYW1lIChkaXJlY3Rvcnkgd2l0aCAnX19pbml0X18ucHknKSBtYXRjaGVzIHRoZQogICAgICAgICBwYXR0ZXJuIHRoZW4gdGhlIHBhY2thZ2Ugd2lsbCBiZSBjaGVja2VkIGZvciBhICdsb2FkX3Rlc3RzJyBmdW5jdGlvbi4gSWYKLSAgICAgICAgdGhpcyBleGlzdHMgdGhlbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGxvYWRlciwgdGVzdHMsIHBhdHRlcm4uCisgICAgICAgIHRoaXMgZXhpc3RzIHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCAobG9hZGVyLCB0ZXN0cywgcGF0dGVybikgdW5sZXNzCisgICAgICAgIHRoZSBwYWNrYWdlIGhhcyBhbHJlYWR5IGhhZCBsb2FkX3Rlc3RzIGNhbGxlZCBmcm9tIHRoZSBzYW1lIGRpc2NvdmVyeQorICAgICAgICBpbnZvY2F0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSBwYWNrYWdlIG1vZHVsZSBvYmplY3QgaXMgbm90IHNjYW5uZWQgZm9yCisgICAgICAgIHRlc3RzIC0gdGhpcyBlbnN1cmVzIHRoYXQgd2hlbiBhIHBhY2thZ2UgdXNlcyBkaXNjb3ZlciB0byBmdXJ0aGVyCisgICAgICAgIGRpc2NvdmVyIGNoaWxkIHRlc3RzIHRoYXQgaW5maW5pdGUgcmVjdXJzaW9uIGRvZXMgbm90IGhhcHBlbi4KIAotICAgICAgICBJZiBsb2FkX3Rlc3RzIGV4aXN0cyB0aGVuIGRpc2NvdmVyeSBkb2VzICAqbm90KiByZWN1cnNlIGludG8gdGhlIHBhY2thZ2UsCisgICAgICAgIElmIGxvYWRfdGVzdHMgZXhpc3RzIHRoZW4gZGlzY292ZXJ5IGRvZXMgKm5vdCogcmVjdXJzZSBpbnRvIHRoZSBwYWNrYWdlLAogICAgICAgICBsb2FkX3Rlc3RzIGlzIHJlc3BvbnNpYmxlIGZvciBsb2FkaW5nIGFsbCB0ZXN0cyBpbiB0aGUgcGFja2FnZS4KIAogICAgICAgICBUaGUgcGF0dGVybiBpcyBkZWxpYmVyYXRlbHkgbm90IHN0b3JlZCBhcyBhIGxvYWRlciBhdHRyaWJ1dGUgc28gdGhhdApAQCAtMjg4LDYgKzM1NCw4IEBACiAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5kaXJuYW1lKGZ1bGxfcGF0aCkKIAogICAgIGRlZiBfZ2V0X25hbWVfZnJvbV9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICBpZiBwYXRoID09IHNlbGYuX3RvcF9sZXZlbF9kaXI6CisgICAgICAgICAgICByZXR1cm4gJy4nCiAgICAgICAgIHBhdGggPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGgubm9ybXBhdGgocGF0aCkpCiAKICAgICAgICAgX3JlbHBhdGggPSBvcy5wYXRoLnJlbHBhdGgocGF0aCwgc2VsZi5fdG9wX2xldmVsX2RpcikKQEAgLTMwNyw2MyArMzc1LDExMSBAQAogCiAgICAgZGVmIF9maW5kX3Rlc3RzKHNlbGYsIHN0YXJ0X2RpciwgcGF0dGVybiwgbmFtZXNwYWNlPUZhbHNlKToKICAgICAgICAgIiIiVXNlZCBieSBkaXNjb3ZlcnkuIFlpZWxkcyB0ZXN0IHN1aXRlcyBpdCBsb2Fkcy4iIiIKKyAgICAgICAgIyBIYW5kbGUgdGhlIF9faW5pdF9fIGluIHRoaXMgcGFja2FnZQorICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKHN0YXJ0X2RpcikKKyAgICAgICAgIyBuYW1lIGlzICcuJyB3aGVuIHN0YXJ0X2RpciA9PSB0b3BfbGV2ZWxfZGlyIChhbmQgdG9wX2xldmVsX2RpciBpcyBieQorICAgICAgICAjIGRlZmluaXRpb24gbm90IGEgcGFja2FnZSkuCisgICAgICAgIGlmIG5hbWUgIT0gJy4nIGFuZCBuYW1lIG5vdCBpbiBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzOgorICAgICAgICAgICAgIyBuYW1lIGlzIGluIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMgd2hpbGUgd2UgaGF2ZSBjYWxsZWQgaW50bworICAgICAgICAgICAgIyBsb2FkVGVzdHNGcm9tTW9kdWxlIHdpdGggbmFtZS4KKyAgICAgICAgICAgIHRlc3RzLCBzaG91bGRfcmVjdXJzZSA9IHNlbGYuX2ZpbmRfdGVzdF9wYXRoKAorICAgICAgICAgICAgICAgIHN0YXJ0X2RpciwgcGF0dGVybiwgbmFtZXNwYWNlKQorICAgICAgICAgICAgaWYgdGVzdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgeWllbGQgdGVzdHMKKyAgICAgICAgICAgIGlmIG5vdCBzaG91bGRfcmVjdXJzZToKKyAgICAgICAgICAgICAgICAjIEVpdGhlciBhbiBlcnJvciBvY2N1cmVkLCBvciBsb2FkX3Rlc3RzIHdhcyB1c2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICMgcGFja2FnZS4KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBIYW5kbGUgdGhlIGNvbnRlbnRzLgogICAgICAgICBwYXRocyA9IHNvcnRlZChvcy5saXN0ZGlyKHN0YXJ0X2RpcikpCi0KICAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CiAgICAgICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLmpvaW4oc3RhcnRfZGlyLCBwYXRoKQotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICBpZiBub3QgVkFMSURfTU9EVUxFX05BTUUubWF0Y2gocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgICMgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzIG9ubHkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2hfcGF0aChwYXRoLCBmdWxsX3BhdGgsIHBhdHRlcm4pOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICMgaWYgdGhlIHRlc3QgZmlsZSBtYXRjaGVzLCBsb2FkIGl0CisgICAgICAgICAgICB0ZXN0cywgc2hvdWxkX3JlY3Vyc2UgPSBzZWxmLl9maW5kX3Rlc3RfcGF0aCgKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGgsIHBhdHRlcm4sIG5hbWVzcGFjZSkKKyAgICAgICAgICAgIGlmIHRlc3RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RzCisgICAgICAgICAgICBpZiBzaG91bGRfcmVjdXJzZToKKyAgICAgICAgICAgICAgICAjIHdlIGZvdW5kIGEgcGFja2FnZSB0aGF0IGRpZG4ndCB1c2UgbG9hZF90ZXN0cy4KICAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmFkZChuYW1lKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgY2FzZS5Ta2lwVGVzdCBhcyBlOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgX21ha2VfZmFpbGVkX2ltcG9ydF90ZXN0KG5hbWUsIHNlbGYuc3VpdGVDbGFzcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtb2RfZmlsZSA9IG9zLnBhdGguYWJzcGF0aChnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgZnVsbF9wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVhbHBhdGggPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGgucmVhbHBhdGgobW9kX2ZpbGUpKQotICAgICAgICAgICAgICAgICAgICBmdWxscGF0aF9ub2V4dCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQob3MucGF0aC5yZWFscGF0aChmdWxsX3BhdGgpKQotICAgICAgICAgICAgICAgICAgICBpZiByZWFscGF0aC5sb3dlcigpICE9IGZ1bGxwYXRoX25vZXh0Lmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJlYWxwYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kX25hbWUgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZnVsbF9wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2RpciA9IG9zLnBhdGguZGlybmFtZShmdWxsX3BhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAoIiVyIG1vZHVsZSBpbmNvcnJlY3RseSBpbXBvcnRlZCBmcm9tICVyLiBFeHBlY3RlZCAlci4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJcyB0aGlzIG1vZHVsZSBnbG9iYWxseSBpbnN0YWxsZWQ/IikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZyAlIChtb2RfbmFtZSwgbW9kdWxlX2RpciwgZXhwZWN0ZWRfZGlyKSkKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgIGlmIChub3QgbmFtZXNwYWNlIGFuZAotICAgICAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGZ1bGxfcGF0aCwgJ19faW5pdF9fLnB5JykpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLl9maW5kX3Rlc3RzKGZ1bGxfcGF0aCwgcGF0dGVybiwgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRpbmdfcGFja2FnZXMuZGlzY2FyZChuYW1lKQogCi0gICAgICAgICAgICAgICAgbG9hZF90ZXN0cyA9IE5vbmUKLSAgICAgICAgICAgICAgICB0ZXN0cyA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBmbm1hdGNoKHBhdGgsIHBhdHRlcm4pOgotICAgICAgICAgICAgICAgICAgICAjIG9ubHkgY2hlY2sgbG9hZF90ZXN0cyBpZiB0aGUgcGFja2FnZSBkaXJlY3RvcnkgaXRzZWxmIG1hdGNoZXMgdGhlIGZpbHRlcgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gc2VsZi5fZ2V0X25hbWVfZnJvbV9wYXRoKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZSA9IHNlbGYuX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRfdGVzdHMgPSBnZXRhdHRyKHBhY2thZ2UsICdsb2FkX3Rlc3RzJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUocGFja2FnZSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UpCisgICAgZGVmIF9maW5kX3Rlc3RfcGF0aChzZWxmLCBmdWxsX3BhdGgsIHBhdHRlcm4sIG5hbWVzcGFjZT1GYWxzZSk6CisgICAgICAgICIiIlVzZWQgYnkgZGlzY292ZXJ5LgogCi0gICAgICAgICAgICAgICAgaWYgbG9hZF90ZXN0cyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMgdGVzdHMgbG9hZGVkIGZyb20gcGFja2FnZSBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0cwotICAgICAgICAgICAgICAgICAgICAjIHJlY3Vyc2UgaW50byB0aGUgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX2ZpbmRfdGVzdHMoZnVsbF9wYXRoLCBwYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlPW5hbWVzcGFjZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBsb2FkX3Rlc3RzKHNlbGYsIHRlc3RzLCBwYXR0ZXJuKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBfbWFrZV9mYWlsZWRfbG9hZF90ZXN0cyhwYWNrYWdlLl9fbmFtZV9fLCBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICBMb2FkcyB0ZXN0cyBmcm9tIGEgc2luZ2xlIGZpbGUsIG9yIGEgZGlyZWN0b3JpZXMnIF9faW5pdF9fLnB5IHdoZW4KKyAgICAgICAgcGFzc2VkIHRoZSBkaXJlY3RvcnkuCisKKyAgICAgICAgUmV0dXJucyBhIHR1cGxlIChOb25lX29yX3Rlc3RzX2Zyb21fZmlsZSwgc2hvdWxkX3JlY3Vyc2UpLgorICAgICAgICAiIiIKKyAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxfcGF0aCkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgIGlmIG5vdCBWQUxJRF9NT0RVTEVfTkFNRS5tYXRjaChiYXNlbmFtZSk6CisgICAgICAgICAgICAgICAgIyB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMgb25seQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBGYWxzZQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX21hdGNoX3BhdGgoYmFzZW5hbWUsIGZ1bGxfcGF0aCwgcGF0dGVybik6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIEZhbHNlCisgICAgICAgICAgICAjIGlmIHRoZSB0ZXN0IGZpbGUgbWF0Y2hlcywgbG9hZCBpdAorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChmdWxsX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fZ2V0X21vZHVsZV9mcm9tX25hbWUobmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBjYXNlLlNraXBUZXN0IGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9tYWtlX3NraXBwZWRfdGVzdChuYW1lLCBlLCBzZWxmLnN1aXRlQ2xhc3MpLCBGYWxzZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGVycm9yX2Nhc2UsIGVycm9yX21lc3NhZ2UgPSBcCisgICAgICAgICAgICAgICAgICAgIF9tYWtlX2ZhaWxlZF9pbXBvcnRfdGVzdChuYW1lLCBzZWxmLnN1aXRlQ2xhc3MpCisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcnMuYXBwZW5kKGVycm9yX21lc3NhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX2Nhc2UsIEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZF9maWxlID0gb3MucGF0aC5hYnNwYXRoKAorICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJywgZnVsbF9wYXRoKSkKKyAgICAgICAgICAgICAgICByZWFscGF0aCA9IF9qeXRob25fYXdhcmVfc3BsaXRleHQoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgobW9kX2ZpbGUpKQorICAgICAgICAgICAgICAgIGZ1bGxwYXRoX25vZXh0ID0gX2p5dGhvbl9hd2FyZV9zcGxpdGV4dCgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5yZWFscGF0aChmdWxsX3BhdGgpKQorICAgICAgICAgICAgICAgIGlmIHJlYWxwYXRoLmxvd2VyKCkgIT0gZnVsbHBhdGhfbm9leHQubG93ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2RpciA9IG9zLnBhdGguZGlybmFtZShyZWFscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgbW9kX25hbWUgPSBfanl0aG9uX2F3YXJlX3NwbGl0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShmdWxsX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbF9wYXRoKQorICAgICAgICAgICAgICAgICAgICBtc2cgPSAoIiVyIG1vZHVsZSBpbmNvcnJlY3RseSBpbXBvcnRlZCBmcm9tICVyLiBFeHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIuIElzIHRoaXMgbW9kdWxlIGdsb2JhbGx5IGluc3RhbGxlZD8iKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyAlIChtb2RfbmFtZSwgbW9kdWxlX2RpciwgZXhwZWN0ZWRfZGlyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKSwgRmFsc2UKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICBpZiAobm90IG5hbWVzcGFjZSBhbmQKKyAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGZ1bGxfcGF0aCwgJ19faW5pdF9fLnB5JykpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgRmFsc2UKKworICAgICAgICAgICAgbG9hZF90ZXN0cyA9IE5vbmUKKyAgICAgICAgICAgIHRlc3RzID0gTm9uZQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX2dldF9uYW1lX2Zyb21fcGF0aChmdWxsX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGFja2FnZSA9IHNlbGYuX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgY2FzZS5Ta2lwVGVzdCBhcyBlOgorICAgICAgICAgICAgICAgIHJldHVybiBfbWFrZV9za2lwcGVkX3Rlc3QobmFtZSwgZSwgc2VsZi5zdWl0ZUNsYXNzKSwgRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBlcnJvcl9jYXNlLCBlcnJvcl9tZXNzYWdlID0gXAorICAgICAgICAgICAgICAgICAgICBfbWFrZV9mYWlsZWRfaW1wb3J0X3Rlc3QobmFtZSwgc2VsZi5zdWl0ZUNsYXNzKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JzLmFwcGVuZChlcnJvcl9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9jYXNlLCBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2FkX3Rlc3RzID0gZ2V0YXR0cihwYWNrYWdlLCAnbG9hZF90ZXN0cycsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBNYXJrIHRoaXMgcGFja2FnZSBhcyBiZWluZyBpbiBsb2FkX3Rlc3RzIChwb3NzaWJseSA7KSkKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmFkZChuYW1lKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBzZWxmLmxvYWRUZXN0c0Zyb21Nb2R1bGUocGFja2FnZSwgcGF0dGVybj1wYXR0ZXJuKQorICAgICAgICAgICAgICAgICAgICBpZiBsb2FkX3Rlc3RzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBsb2FkVGVzdHNGcm9tTW9kdWxlKHBhY2thZ2UpIGhhcyBsb2FkZWQgdGVzdHMgZm9yIHVzLgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3RzLCBGYWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdHMsIFRydWUKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkaW5nX3BhY2thZ2VzLmRpc2NhcmQobmFtZSkKKwogCiBkZWZhdWx0VGVzdExvYWRlciA9IFRlc3RMb2FkZXIoKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbWFpbi5weSBiL0xpYi91bml0dGVzdC9tYWluLnB5CmluZGV4IGU3NTBjYTUuLjA5ZmVmZTEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tYWluLnB5CisrKyBiL0xpYi91bml0dGVzdC9tYWluLnB5CkBAIC01OCw3ICs1OCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZT0nX19tYWluX18nLCBkZWZhdWx0VGVzdD1Ob25lLCBhcmd2PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXI9Tm9uZSwgdGVzdExvYWRlcj1sb2FkZXIuZGVmYXVsdFRlc3RMb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgIGV4aXQ9VHJ1ZSwgdmVyYm9zaXR5PTEsIGZhaWxmYXN0PU5vbmUsIGNhdGNoYnJlYWs9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyPU5vbmUsIHdhcm5pbmdzPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBidWZmZXI9Tm9uZSwgd2FybmluZ3M9Tm9uZSwgKiwgdGJfbG9jYWxzPUZhbHNlKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGUsIHN0cik6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZSA9IF9faW1wb3J0X18obW9kdWxlKQogICAgICAgICAgICAgZm9yIHBhcnQgaW4gbW9kdWxlLnNwbGl0KCcuJylbMTpdOgpAQCAtNzMsOCArNzMsOSBAQAogICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBjYXRjaGJyZWFrCiAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CiAgICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCisgICAgICAgIHNlbGYudGJfbG9jYWxzID0gdGJfbG9jYWxzCiAgICAgICAgIGlmIHdhcm5pbmdzIGlzIE5vbmUgYW5kIG5vdCBzeXMud2Fybm9wdGlvbnM6Ci0gICAgICAgICAgICAjIGV2ZW4gaWYgRHJlcHJlY2F0aW9uV2FybmluZ3MgYXJlIGlnbm9yZWQgYnkgZGVmYXVsdAorICAgICAgICAgICAgIyBldmVuIGlmIERlcHJlY2F0aW9uV2FybmluZ3MgYXJlIGlnbm9yZWQgYnkgZGVmYXVsdAogICAgICAgICAgICAgIyBwcmludCB0aGVtIGFueXdheSB1bmxlc3Mgb3RoZXIgd2FybmluZ3Mgc2V0dGluZ3MgYXJlCiAgICAgICAgICAgICAjIHNwZWNpZmllZCBieSB0aGUgd2FybmluZ3MgYXJnIG9yIHRoZSAtVyBweXRob24gZmxhZwogICAgICAgICAgICAgc2VsZi53YXJuaW5ncyA9ICdkZWZhdWx0JwpAQCAtMTU5LDcgKzE2MCw5IEBACiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBkZXN0PSd2ZXJib3NpdHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1F1aWV0IG91dHB1dCcpCi0KKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1sb2NhbHMnLCBkZXN0PSd0Yl9sb2NhbHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2hvdyBsb2NhbCB2YXJpYWJsZXMgaW4gdHJhY2ViYWNrcycpCiAgICAgICAgIGlmIHNlbGYuZmFpbGZhc3QgaXMgTm9uZToKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmFpbGZhc3QnLCBkZXN0PSdmYWlsZmFzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCkBAIC0yMzEsMTAgKzIzNCwxOCBAQAogICAgICAgICAgICAgc2VsZi50ZXN0UnVubmVyID0gcnVubmVyLlRleHRUZXN0UnVubmVyCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi50ZXN0UnVubmVyLCB0eXBlKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKHZlcmJvc2l0eT1zZWxmLnZlcmJvc2l0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PXNlbGYuZmFpbGZhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9c2VsZi5idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncz1zZWxmLndhcm5pbmdzKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi52ZXJib3NpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9c2VsZi5mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9c2VsZi5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M9c2VsZi53YXJuaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yl9sb2NhbHM9c2VsZi50Yl9sb2NhbHMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBkaWRuJ3QgYWNjZXB0IHRoZSB0Yl9sb2NhbHMgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lciA9IHNlbGYudGVzdFJ1bm5lcih2ZXJib3NpdHk9c2VsZi52ZXJib3NpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9c2VsZi5mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9c2VsZi5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3M9c2VsZi53YXJuaW5ncykKICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgIyBkaWRuJ3QgYWNjZXB0IHRoZSB2ZXJib3NpdHksIGJ1ZmZlciBvciBmYWlsZmFzdCBhcmd1bWVudHMKICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyID0gc2VsZi50ZXN0UnVubmVyKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tb2NrLnB5IGIvTGliL3VuaXR0ZXN0L21vY2sucHkKaW5kZXggNTczYzc5OS4uOTljZTFlMiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21vY2sucHkKKysrIGIvTGliL3VuaXR0ZXN0L21vY2sucHkKQEAgLTI3LDkgKzI3LDEzIEBACiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHBwcmludAogaW1wb3J0IHN5cworaW1wb3J0IGJ1aWx0aW5zCitmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMsIHBhcnRpYWwKIAogCitfYnVpbHRpbnMgPSB7bmFtZSBmb3IgbmFtZSBpbiBkaXIoYnVpbHRpbnMpIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKX0KKwogQmFzZUV4Y2VwdGlvbnMgPSAoQmFzZUV4Y2VwdGlvbiwpCiBpZiAnamF2YScgaW4gc3lzLnBsYXRmb3JtOgogICAgICMganl0aG9uCkBAIC0yNzEsMTMgKzI3NSwxMSBAQAogICAgIHJldHVybiB2YWx1ZQogCiAKLV9hbGxvd2VkX25hbWVzID0gc2V0KAotICAgIFsKLSAgICAgICAgJ3JldHVybl92YWx1ZScsICdfbW9ja19yZXR1cm5fdmFsdWUnLCAnc2lkZV9lZmZlY3QnLAotICAgICAgICAnX21vY2tfc2lkZV9lZmZlY3QnLCAnX21vY2tfcGFyZW50JywgJ19tb2NrX25ld19wYXJlbnQnLAotICAgICAgICAnX21vY2tfbmFtZScsICdfbW9ja19uZXdfbmFtZScKLSAgICBdCi0pCitfYWxsb3dlZF9uYW1lcyA9IHsKKyAgICAncmV0dXJuX3ZhbHVlJywgJ19tb2NrX3JldHVybl92YWx1ZScsICdzaWRlX2VmZmVjdCcsCisgICAgJ19tb2NrX3NpZGVfZWZmZWN0JywgJ19tb2NrX3BhcmVudCcsICdfbW9ja19uZXdfcGFyZW50JywKKyAgICAnX21vY2tfbmFtZScsICdfbW9ja19uZXdfbmFtZScKK30KIAogCiBkZWYgX2RlbGVnYXRpbmdfcHJvcGVydHkobmFtZSk6CkBAIC0zNzUsNyArMzc3LDcgQEAKICAgICBkZWYgX19pbml0X18oCiAgICAgICAgICAgICBzZWxmLCBzcGVjPU5vbmUsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwKICAgICAgICAgICAgIHBhcmVudD1Ob25lLCBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsCi0gICAgICAgICAgICBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwgX2VhdF9zZWxmPU5vbmUsICoqa3dhcmdzCisgICAgICAgICAgICBfc3BlY19hc19pbnN0YW5jZT1GYWxzZSwgX2VhdF9zZWxmPU5vbmUsIHVuc2FmZT1GYWxzZSwgKiprd2FyZ3MKICAgICAgICAgKToKICAgICAgICAgaWYgX25ld19wYXJlbnQgaXMgTm9uZToKICAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gcGFyZW50CkBAIC00MDUsNiArNDA3LDcgQEAKICAgICAgICAgX19kaWN0X19bJ19tb2NrX21vY2tfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCiAKICAgICAgICAgX19kaWN0X19bJ21ldGhvZF9jYWxscyddID0gX0NhbGxMaXN0KCkKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3Vuc2FmZSddID0gdW5zYWZlCiAKICAgICAgICAgaWYga3dhcmdzOgogICAgICAgICAgICAgc2VsZi5jb25maWd1cmVfbW9jaygqKmt3YXJncykKQEAgLTUwMyw3ICs1MDYsOCBAQAogICAgICAgICBpZiBkZWxlZ2F0ZWQgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0CiAgICAgICAgIHNmID0gZGVsZWdhdGVkLnNpZGVfZWZmZWN0Ci0gICAgICAgIGlmIHNmIGlzIG5vdCBOb25lIGFuZCBub3QgY2FsbGFibGUoc2YpIGFuZCBub3QgaXNpbnN0YW5jZShzZiwgX01vY2tJdGVyKToKKyAgICAgICAgaWYgKHNmIGlzIG5vdCBOb25lIGFuZCBub3QgY2FsbGFibGUoc2YpCisgICAgICAgICAgICAgICAgYW5kIG5vdCBpc2luc3RhbmNlKHNmLCBfTW9ja0l0ZXIpIGFuZCBub3QgX2lzX2V4Y2VwdGlvbihzZikpOgogICAgICAgICAgICAgc2YgPSBfTW9ja0l0ZXIoc2YpCiAgICAgICAgICAgICBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QgPSBzZgogICAgICAgICByZXR1cm4gc2YKQEAgLTU2NywxMyArNTcxLDE2IEBACiAKIAogICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgaWYgbmFtZSA9PSAnX21vY2tfbWV0aG9kcyc6CisgICAgICAgIGlmIG5hbWUgaW4geydfbW9ja19tZXRob2RzJywgJ19tb2NrX3Vuc2FmZSd9OgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKICAgICAgICAgZWxpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgb3IgbmFtZSBpbiBfYWxsX21hZ2ljczoKICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSBuYW1lKQogICAgICAgICBlbGlmIF9pc19tYWdpYyhuYW1lKToKICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGlmIG5vdCBzZWxmLl9tb2NrX3Vuc2FmZToKKyAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgoJ2Fzc2VydCcsICdhc3NyZXQnKSk6CisgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKIAogICAgICAgICByZXN1bHQgPSBzZWxmLl9tb2NrX2NoaWxkcmVuLmdldChuYW1lKQogICAgICAgICBpZiByZXN1bHQgaXMgX2RlbGV0ZWQ6CkBAIC03NTYsNiArNzYzLDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gX2NhbGwKIAorICAgIGRlZiBhc3NlcnRfbm90X2NhbGxlZChfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIG5ldmVyIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIHNlbGYuY2FsbF9jb3VudCAhPSAwOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIG5vdCBoYXZlIGJlZW4gY2FsbGVkLiBDYWxsZWQgJXMgdGltZXMuIiAlCisgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KQEAgLTExNzIsNiArMTE4Nyw5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsb2NhbCA9IFRydWUKIAorICAgICAgICBpZiBuYW1lIGluIF9idWlsdGlucyBhbmQgaXNpbnN0YW5jZSh0YXJnZXQsIE1vZHVsZVR5cGUpOgorICAgICAgICAgICAgc2VsZi5jcmVhdGUgPSBUcnVlCisKICAgICAgICAgaWYgbm90IHNlbGYuY3JlYXRlIGFuZCBvcmlnaW5hbCBpcyBERUZBVUxUOgogICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCiAgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgdGhlIGF0dHJpYnV0ZSAlciIgJSAodGFyZ2V0LCBuYW1lKQpAQCAtMTY1OSw3ICsxNjc3LDcgQEAKICkKIAogbnVtZXJpY3MgPSAoCi0gICAgImFkZCBzdWIgbXVsIGRpdiBmbG9vcmRpdiBtb2QgbHNoaWZ0IHJzaGlmdCBhbmQgeG9yIG9yIHBvdyB0cnVlZGl2IgorICAgICJhZGQgc3ViIG11bCBtYXRtdWwgZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93IHRydWVkaXYiCiApCiBpbnBsYWNlID0gJyAnLmpvaW4oJ2klcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCiByaWdodCA9ICcgJy5qb2luKCdyJXMnICUgbiBmb3IgbiBpbiBudW1lcmljcy5zcGxpdCgpKQpAQCAtMTY2OCwxMSArMTY4NiwxMiBAQAogIyAoYXMgdGhleSBhcmUgbWV0YWNsYXNzIG1ldGhvZHMpCiAjIF9fZGVsX18gaXMgbm90IHN1cHBvcnRlZCBhdCBhbGwgYXMgaXQgY2F1c2VzIHByb2JsZW1zIGlmIGl0IGV4aXN0cwogCi1fbm9uX2RlZmF1bHRzID0gc2V0KCdfXyVzX18nICUgbWV0aG9kIGZvciBtZXRob2QgaW4gWwotICAgICdnZXQnLCAnc2V0JywgJ2RlbGV0ZScsICdyZXZlcnNlZCcsICdtaXNzaW5nJywgJ3JlZHVjZScsICdyZWR1Y2VfZXgnLAotICAgICdnZXRpbml0YXJncycsICdnZXRuZXdhcmdzJywgJ2dldHN0YXRlJywgJ3NldHN0YXRlJywgJ2dldGZvcm1hdCcsCi0gICAgJ3NldGZvcm1hdCcsICdyZXByJywgJ2RpcicsICdzdWJjbGFzc2VzJywgJ2Zvcm1hdCcsCi1dKQorX25vbl9kZWZhdWx0cyA9IHsKKyAgICAnX19nZXRfXycsICdfX3NldF9fJywgJ19fZGVsZXRlX18nLCAnX19yZXZlcnNlZF9fJywgJ19fbWlzc2luZ19fJywKKyAgICAnX19yZWR1Y2VfXycsICdfX3JlZHVjZV9leF9fJywgJ19fZ2V0aW5pdGFyZ3NfXycsICdfX2dldG5ld2FyZ3NfXycsCisgICAgJ19fZ2V0c3RhdGVfXycsICdfX3NldHN0YXRlX18nLCAnX19nZXRmb3JtYXRfXycsICdfX3NldGZvcm1hdF9fJywKKyAgICAnX19yZXByX18nLCAnX19kaXJfXycsICdfX3N1YmNsYXNzZXNfXycsICdfX2Zvcm1hdF9fJywKK30KIAogCiBkZWYgX2dldF9tZXRob2QobmFtZSwgZnVuYyk6CkBAIC0xNjgzLDE5ICsxNzAyLDE5IEBACiAgICAgcmV0dXJuIG1ldGhvZAogCiAKLV9tYWdpY3MgPSBzZXQoCitfbWFnaWNzID0gewogICAgICdfXyVzX18nICUgbWV0aG9kIGZvciBtZXRob2QgaW4KICAgICAnICcuam9pbihbbWFnaWNfbWV0aG9kcywgbnVtZXJpY3MsIGlucGxhY2UsIHJpZ2h0XSkuc3BsaXQoKQotKQorfQogCiBfYWxsX21hZ2ljcyA9IF9tYWdpY3MgfCBfbm9uX2RlZmF1bHRzCiAKLV91bnN1cHBvcnRlZF9tYWdpY3MgPSBzZXQoWworX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHsKICAgICAnX19nZXRhdHRyX18nLCAnX19zZXRhdHRyX18nLAogICAgICdfX2luaXRfXycsICdfX25ld19fJywgJ19fcHJlcGFyZV9fJwogICAgICdfX2luc3RhbmNlY2hlY2tfXycsICdfX3N1YmNsYXNzY2hlY2tfXycsCiAgICAgJ19fZGVsX18nCi1dKQorfQogCiBfY2FsY3VsYXRlX3JldHVybl92YWx1ZSA9IHsKICAgICAnX19oYXNoX18nOiBsYW1iZGEgc2VsZjogb2JqZWN0Ll9faGFzaF9fKHNlbGYpLApAQCAtMTg4NCw3ICsxOTAzLDcgQEAKICAgICBmb3JtYXR0ZWRfYXJncyA9ICcnCiAgICAgYXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oW3JlcHIoYXJnKSBmb3IgYXJnIGluIGFyZ3NdKQogICAgIGt3YXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oWwotICAgICAgICAnJXM9JXInICUgKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpCisgICAgICAgICclcz0lcicgJSAoa2V5LCB2YWx1ZSkgZm9yIGtleSwgdmFsdWUgaW4gc29ydGVkKGt3YXJncy5pdGVtcygpKQogICAgIF0pCiAgICAgaWYgYXJnc19zdHJpbmc6CiAgICAgICAgIGZvcm1hdHRlZF9hcmdzID0gYXJnc19zdHJpbmcKQEAgLTIwMDcsMTAgKzIwMjYsNiBAQAogICAgICAgICByZXR1cm4gKG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncykgPT0gKHNlbGZfYXJncywgc2VsZl9rd2FyZ3MpCiAKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQotCi0KICAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpLCBuYW1lPScoKScpCkBAIC0yMDI2LDYgKzIwNDEsMTIgQEAKICAgICAgICAgcmV0dXJuIF9DYWxsKG5hbWU9bmFtZSwgcGFyZW50PXNlbGYsIGZyb21fa2FsbD1GYWxzZSkKIAogCisgICAgZGVmIGNvdW50KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9fZ2V0YXR0cl9fKCdjb3VudCcpKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBpbmRleChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2dldGF0dHJfXygnaW5kZXgnKSgqYXJncywgKiprd2FyZ3MpCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmZyb21fa2FsbDoKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUgb3IgJ2NhbGwnCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5IGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQppbmRleCA4ZTBhNjQzLi5hMThmMTFiIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC9yZXN1bHQucHkKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICAgICAgc2VsZi51bmV4cGVjdGVkU3VjY2Vzc2VzID0gW10KICAgICAgICAgc2VsZi5zaG91bGRTdG9wID0gRmFsc2UKICAgICAgICAgc2VsZi5idWZmZXIgPSBGYWxzZQorICAgICAgICBzZWxmLnRiX2xvY2FscyA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3N0ZG91dF9idWZmZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0ZGVycl9idWZmZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX29yaWdpbmFsX3N0ZG91dCA9IHN5cy5zdGRvdXQKQEAgLTE3OSw5ICsxODAsMTEgQEAKICAgICAgICAgaWYgZXhjdHlwZSBpcyB0ZXN0LmZhaWx1cmVFeGNlcHRpb246CiAgICAgICAgICAgICAjIFNraXAgYXNzZXJ0KigpIHRyYWNlYmFjayBsZXZlbHMKICAgICAgICAgICAgIGxlbmd0aCA9IHNlbGYuX2NvdW50X3JlbGV2YW50X3RiX2xldmVscyh0YikKLSAgICAgICAgICAgIG1zZ0xpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oZXhjdHlwZSwgdmFsdWUsIHRiLCBsZW5ndGgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2dMaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKGV4Y3R5cGUsIHZhbHVlLCB0YikKKyAgICAgICAgICAgIGxlbmd0aCA9IE5vbmUKKyAgICAgICAgdGJfZSA9IHRyYWNlYmFjay5UcmFjZWJhY2tFeGNlcHRpb24oCisgICAgICAgICAgICBleGN0eXBlLCB2YWx1ZSwgdGIsIGxpbWl0PWxlbmd0aCwgY2FwdHVyZV9sb2NhbHM9c2VsZi50Yl9sb2NhbHMpCisgICAgICAgIG1zZ0xpbmVzID0gbGlzdCh0Yl9lLmZvcm1hdCgpKQogCiAgICAgICAgIGlmIHNlbGYuYnVmZmVyOgogICAgICAgICAgICAgb3V0cHV0ID0gc3lzLnN0ZG91dC5nZXR2YWx1ZSgpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5IGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQppbmRleCAyOGI4ODY1Li4yMTEyMjYyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKQEAgLTEyNiw3ICsxMjYsMTMgQEAKICAgICByZXN1bHRjbGFzcyA9IFRleHRUZXN0UmVzdWx0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtPU5vbmUsIGRlc2NyaXB0aW9ucz1UcnVlLCB2ZXJib3NpdHk9MSwKLSAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9RmFsc2UsIGJ1ZmZlcj1GYWxzZSwgcmVzdWx0Y2xhc3M9Tm9uZSwgd2FybmluZ3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGZhaWxmYXN0PUZhbHNlLCBidWZmZXI9RmFsc2UsIHJlc3VsdGNsYXNzPU5vbmUsIHdhcm5pbmdzPU5vbmUsCisgICAgICAgICAgICAgICAgICosIHRiX2xvY2Fscz1GYWxzZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhIFRleHRUZXN0UnVubmVyLgorCisgICAgICAgIFN1YmNsYXNzZXMgc2hvdWxkIGFjY2VwdCAqKmt3YXJncyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSBhcyB0aGUKKyAgICAgICAgaW50ZXJmYWNlIGNoYW5nZXMuCisgICAgICAgICIiIgogICAgICAgICBpZiBzdHJlYW0gaXMgTm9uZToKICAgICAgICAgICAgIHN0cmVhbSA9IHN5cy5zdGRlcnIKICAgICAgICAgc2VsZi5zdHJlYW0gPSBfV3JpdGVsbkRlY29yYXRvcihzdHJlYW0pCkBAIC0xMzQsNiArMTQwLDcgQEAKICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAgICAgc2VsZi5mYWlsZmFzdCA9IGZhaWxmYXN0CiAgICAgICAgIHNlbGYuYnVmZmVyID0gYnVmZmVyCisgICAgICAgIHNlbGYudGJfbG9jYWxzID0gdGJfbG9jYWxzCiAgICAgICAgIHNlbGYud2FybmluZ3MgPSB3YXJuaW5ncwogICAgICAgICBpZiByZXN1bHRjbGFzcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYucmVzdWx0Y2xhc3MgPSByZXN1bHRjbGFzcwpAQCAtMTQ3LDYgKzE1NCw3IEBACiAgICAgICAgIHJlZ2lzdGVyUmVzdWx0KHJlc3VsdCkKICAgICAgICAgcmVzdWx0LmZhaWxmYXN0ID0gc2VsZi5mYWlsZmFzdAogICAgICAgICByZXN1bHQuYnVmZmVyID0gc2VsZi5idWZmZXIKKyAgICAgICAgcmVzdWx0LnRiX2xvY2FscyA9IHNlbGYudGJfbG9jYWxzCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIGlmIHNlbGYud2FybmluZ3M6CiAgICAgICAgICAgICAgICAgIyBpZiBzZWxmLndhcm5pbmdzIGlzIHNldCwgdXNlIGl0IHRvIGZpbHRlciBhbGwgdGhlIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3Qvc3VwcG9ydC5weQppbmRleCAwMmU4ZjNhLi41MjkyNjUzIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC9zdXBwb3J0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3N1cHBvcnQucHkKQEAgLTI1LDggKzI1LDYgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBub3QgaGFzaChvYmpfMSkgPT0gaGFzaChvYmpfMik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXIgYW5kICVyIGRvIG5vdCBoYXNoIGVxdWFsIiAlIChvYmpfMSwgb2JqXzIpKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJQcm9ibGVtIGhhc2hpbmcgJXIgYW5kICVyOiAlcyIgJSAob2JqXzEsIG9ial8yLCBlKSkKIApAQCAtMzUsOCArMzMsNiBAQAogICAgICAgICAgICAgICAgIGlmIGhhc2gob2JqXzEpID09IGhhc2gob2JqXzIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiVzIGFuZCAlcyBoYXNoIGVxdWFsLCBidXQgc2hvdWxkbid0IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2JqXzEsIG9ial8yKSkKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUHJvYmxlbSBoYXNoaW5nICVzIGFuZCAlczogJXMiICUgKG9ial8xLCBvYmpfMiwgZSkpCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQppbmRleCBjMzQ5YTk1Li5lNmUyYmMyIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CkBAIC0xMzMsNyArMTMzLDYgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RSZWdleCgnQWxhIG1hIGtvdGEnLCByJ2sudCcsICdNZXNzYWdlJykKICAgICAgICAgZXhjZXB0IHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiJ2tvdCciLCBlLmFyZ3NbMF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdNZXNzYWdlJywgZS5hcmdzWzBdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdhc3NlcnROb3RSZWdleCBzaG91bGQgaGF2ZSBmYWlsZWQuJykKQEAgLTMyOSw2ICszMjgsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lJCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJedW5leHBlY3RlZGx5IGlkZW50aWNhbDogTm9uZSA6IG9vcHMkIl0pCiAKKyAgICBkZWYgdGVzdEFzc2VydFJlZ2V4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnRSZWdleCcsICgnZm9vJywgJ2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXlJlZ2V4IGRpZG4ndCBtYXRjaDoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXm9vcHMkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5SZWdleCBkaWRuJ3QgbWF0Y2g6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5SZWdleCBkaWRuJ3QgbWF0Y2g6ICguKikgOiBvb3BzJCJdKQorCisgICAgZGVmIHRlc3RBc3NlcnROb3RSZWdleChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0Tm90UmVnZXgnLCAoJ2ZvbycsICdmb28nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIl5SZWdleCBtYXRjaGVkOiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlJlZ2V4IG1hdGNoZWQ6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5SZWdleCBtYXRjaGVkOiAoLiopIDogb29wcyQiXSkKKwogCiAgICAgZGVmIGFzc2VydE1lc3NhZ2VzQ00oc2VsZiwgbWV0aG9kTmFtZSwgYXJncywgZnVuYywgZXJyb3JzKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2JyZWFrLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9icmVhay5weQppbmRleCAwYmYxYTIyLi4yYzc1MDE5IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2JyZWFrLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYnJlYWsucHkKQEAgLTIxMSw2ICsyMTEsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gdmVyYm9zaXR5CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsZmFzdCA9IGZhaWxmYXN0CiAgICAgICAgICAgICAgICAgc2VsZi5jYXRjaGJyZWFrID0gY2F0Y2hicmVhaworICAgICAgICAgICAgICAgIHNlbGYudGJfbG9jYWxzID0gRmFsc2UKICAgICAgICAgICAgICAgICBzZWxmLnRlc3RSdW5uZXIgPSBGYWtlUnVubmVyCiAgICAgICAgICAgICAgICAgc2VsZi50ZXN0ID0gdGVzdAogICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQpAQCAtMjIxLDYgKzIyMiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5pbml0QXJncywgWygoKSwgeydidWZmZXInOiBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyYm9zaXR5JzogdmVyYm9zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGZhc3QnOiBmYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RiX2xvY2Fscyc6IEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MnOiBOb25lfSldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIucnVuQXJncywgW3Rlc3RdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucmVzdWx0LCByZXN1bHQpCkBAIC0yMzUsNiArMjM3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLmluaXRBcmdzLCBbKCgpLCB7J2J1ZmZlcic6IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NpdHknOiB2ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZmFzdCc6IGZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGJfbG9jYWxzJzogRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3YXJuaW5ncyc6IE5vbmV9KV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci5ydW5BcmdzLCBbdGVzdF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXN1bHQsIHJlc3VsdCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQppbmRleCAzMjFkNjdhLi5hZGE3MzNiIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CkBAIC0xMTAzLDEyICsxMTAzLDkgQEAKICAgICAgICAgZXhjZXB0IHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgIyBuZWVkIHRvIHJlbW92ZSB0aGUgZmlyc3QgbGluZSBvZiB0aGUgZXJyb3IgbWVzc2FnZQogICAgICAgICAgICAgZXJyb3IgPSBzdHIoZSkuc3BsaXQoJ1xuJywgMSlbMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2FtcGxlX3RleHRfZXJyb3IsIGVycm9yKQogCi0gICAgICAgICAgICAjIG5vIGZhaXIgdGVzdGluZyBvdXJzZWxmIHdpdGggb3Vyc2VsZiwgYW5kIGFzc2VydEVxdWFsIGlzIHVzZWQgZm9yIHN0cmluZ3MKLSAgICAgICAgICAgICMgc28gY2FuJ3QgdXNlIGFzc2VydEVxdWFsIGVpdGhlci4gSnVzdCB1c2UgYXNzZXJ0VHJ1ZS4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzYW1wbGVfdGV4dF9lcnJvciA9PSBlcnJvcikKLQotICAgIGRlZiB0ZXN0QXNlcnRFcXVhbFNpbmdsZUxpbmUoc2VsZik6CisgICAgZGVmIHRlc3RBc3NlcnRFcXVhbFNpbmdsZUxpbmUoc2VsZik6CiAgICAgICAgIHNhbXBsZV90ZXh0ID0gImxhZGVuIHN3YWxsb3dzIGZseSBzbG93bHkiCiAgICAgICAgIHJldmlzZWRfc2FtcGxlX3RleHQgPSAidW5sYWRlbiBzd2FsbG93cyBmbHkgcXVpY2tseSIKICAgICAgICAgc2FtcGxlX3RleHRfZXJyb3IgPSAiIiJcCkBAIC0xMTIwLDggKzExMTcsOSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZV90ZXh0LCByZXZpc2VkX3NhbXBsZV90ZXh0KQogICAgICAgICBleGNlcHQgc2VsZi5mYWlsdXJlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAjIG5lZWQgdG8gcmVtb3ZlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBlcnJvciBtZXNzYWdlCiAgICAgICAgICAgICBlcnJvciA9IHN0cihlKS5zcGxpdCgnXG4nLCAxKVsxXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNhbXBsZV90ZXh0X2Vycm9yID09IGVycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzYW1wbGVfdGV4dF9lcnJvciwgZXJyb3IpCiAKICAgICBkZWYgdGVzdEFzc2VydElzTm9uZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoTm9uZSkKQEAgLTExNDcsNiArMTE0NSw5IEBACiAgICAgICAgICMgRmFpbHVyZSB3aGVuIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uTW9jaywgbGFtYmRhOiAwKQorICAgICAgICAjIEZhaWx1cmUgd2hlbiB0aGUgZnVuY3Rpb24gaXMgTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2ssIE5vbmUpCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2spOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgU3R1YikKQEAgLTExNzEsMTAgKzExNzIsMzEgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb25Nb2NrKToKICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQ3VzdG9tIG1lc3NhZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ2Zvb2JhcicpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb25Nb2NrLCBtc2c9J2Zvb2JhcicpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBJbnZhbGlkIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAnZm9vYmFyJyksIFwKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbk1vY2ssIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIGV4Y2VwdGlvbiBpcyByYWlzZWQKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb25Nb2NrKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIFN0dWIpCiAKKyAgICBkZWYgdGVzdEFzc2VydFJhaXNlc05vRXhjZXB0aW9uVHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvYmplY3QpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCAxKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIG9iamVjdCkpCisKICAgICBkZWYgdGVzdEFzc2VydFJhaXNlc1JlZ2V4KHNlbGYpOgogICAgICAgICBjbGFzcyBFeGNlcHRpb25Nb2NrKEV4Y2VwdGlvbik6CiAgICAgICAgICAgICBwYXNzCkBAIC0xMTg0LDYgKzEyMDYsOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uTW9jaywgcmUuY29tcGlsZSgnZXhwZWN0JCcpLCBTdHViKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbk1vY2ssICdleHBlY3QkJywgU3R1YikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbk1vY2ssICdleHBlY3QkJywgTm9uZSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0Tm90UmFpc2VzUmVnZXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCkBAIC0xMTk0LDYgKzEyMTgsMTUgQEAKICAgICAgICAgICAgICAgICBzZWxmLmZhaWx1cmVFeGNlcHRpb24sICdeRXhjZXB0aW9uIG5vdCByYWlzZWQgYnkgPGxhbWJkYT4kJywKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4LCBFeGNlcHRpb24sICd4JywKICAgICAgICAgICAgICAgICBsYW1iZGE6IE5vbmUpCisgICAgICAgICMgQ3VzdG9tIG1lc3NhZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ2Zvb2JhcicpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2V4cGVjdCcsIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICdleHBlY3QnLCBmb29iYXI9NDIpOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzUmVnZXhJbnZhbGlkUmVnZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgMjAxNDUuCkBAIC0xMjM3LDYgKzEyNzAsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUsIEV4Y2VwdGlvbk1vY2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCB2KQogCisgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXNSZWdleE5vRXhjZXB0aW9uVHlwZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgxLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChvYmplY3QsICdleHBlY3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KChWYWx1ZUVycm9yLCAxKSwgJ2V4cGVjdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoKFZhbHVlRXJyb3IsIG9iamVjdCksICdleHBlY3QnKQorCiAgICAgZGVmIHRlc3RBc3NlcnRXYXJuc0NhbGxhYmxlKHNlbGYpOgogICAgICAgICBkZWYgX3J1bnRpbWVfd2FybigpOgogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiZm9vIiwgUnVudGltZVdhcm5pbmcpCkBAIC0xMjUxLDYgKzEyOTgsOSBAQAogICAgICAgICAjIEZhaWx1cmUgd2hlbiBubyB3YXJuaW5nIGlzIHRyaWdnZXJlZAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGYuZmFpbHVyZUV4Y2VwdGlvbik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCBsYW1iZGE6IDApCisgICAgICAgICMgRmFpbHVyZSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhSdW50aW1lV2FybmluZywgTm9uZSkKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciB3YXJuaW5nIGlzIHRyaWdnZXJlZAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAjIEZvcmNlIGRlZmF1bHQgZmlsdGVyIChpbiBjYXNlIHRlc3RzIGFyZSBydW4gd2l0aCAtV2UpCkBAIC0xMjg5LDYgKzEzMzksMTUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nKToKICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQ3VzdG9tIG1lc3NhZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ2Zvb2JhcicpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJ1bnRpbWVXYXJuaW5nLCBtc2c9J2Zvb2JhcicpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyBJbnZhbGlkIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAnZm9vYmFyJyksIFwKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUnVudGltZVdhcm5pbmcsIGZvb2Jhcj00Mik6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEZhaWx1cmUgd2hlbiBhbm90aGVyIHdhcm5pbmcgaXMgdHJpZ2dlcmVkCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICMgRm9yY2UgZGVmYXVsdCBmaWx0ZXIgKGluIGNhc2UgdGVzdHMgYXJlIHJ1biB3aXRoIC1XZSkKQEAgLTEzMDMsNiArMTM2MiwyMCBAQAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgICAgICAgICBfcnVudGltZV93YXJuKCkKIAorICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnNOb0V4Y2VwdGlvblR5cGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMob2JqZWN0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKChVc2VyV2FybmluZywgMSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoKFVzZXJXYXJuaW5nLCBvYmplY3QpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zKChVc2VyV2FybmluZywgRXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnNSZWdleENhbGxhYmxlKHNlbGYpOgogICAgICAgICBkZWYgX3J1bnRpbWVfd2Fybihtc2cpOgogICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIFJ1bnRpbWVXYXJuaW5nKQpAQCAtMTMxMiw2ICsxMzg1LDkgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzZWxmLmZhaWx1cmVFeGNlcHRpb24pOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFJ1bnRpbWVXYXJuaW5nLCAibysiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogMCkKKyAgICAgICAgIyBGYWlsdXJlIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICJvKyIsIE5vbmUpCiAgICAgICAgICMgRmFpbHVyZSB3aGVuIGFub3RoZXIgd2FybmluZyBpcyB0cmlnZ2VyZWQKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgIyBGb3JjZSBkZWZhdWx0IGZpbHRlciAoaW4gY2FzZSB0ZXN0cyBhcmUgcnVuIHdpdGggLVdlKQpAQCAtMTM0OCw2ICsxNDI0LDE1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5mYWlsdXJlRXhjZXB0aW9uKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFJ1bnRpbWVXYXJuaW5nLCAibysiKToKICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQ3VzdG9tIG1lc3NhZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuZmFpbHVyZUV4Y2VwdGlvbiwgJ2Zvb2JhcicpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUnVudGltZVdhcm5pbmcsICdvKycsIG1zZz0nZm9vYmFyJyk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAjIEludmFsaWQga2V5d29yZCBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdmb29iYXInKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFJ1bnRpbWVXYXJuaW5nLCAnbysnLCBmb29iYXI9NDIpOgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBGYWlsdXJlIHdoZW4gYW5vdGhlciB3YXJuaW5nIGlzIHRyaWdnZXJlZAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAjIEZvcmNlIGRlZmF1bHQgZmlsdGVyIChpbiBjYXNlIHRlc3RzIGFyZSBydW4gd2l0aCAtV2UpCkBAIC0xMzY5LDYgKzE0NTQsMjIgQEAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChSdW50aW1lV2FybmluZywgIm8rIik6CiAgICAgICAgICAgICAgICAgICAgIF9ydW50aW1lX3dhcm4oImJhcnoiKQogCisgICAgZGVmIHRlc3RBc3NlcnRXYXJuc1JlZ2V4Tm9FeGNlcHRpb25UeXBlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoVXNlcldhcm5pbmcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgxLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KG9iamVjdCwgJ2V4cGVjdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgoVXNlcldhcm5pbmcsIDEpLCAnZXhwZWN0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KChVc2VyV2FybmluZywgb2JqZWN0KSwgJ2V4cGVjdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgoVXNlcldhcm5pbmcsIEV4Y2VwdGlvbiksICdleHBlY3QnKQorCiAgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKICAgICBkZWYgYXNzZXJ0Tm9TdGRlcnIoc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgYnVmOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9kaXNjb3ZlcnkucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Rpc2NvdmVyeS5weQppbmRleCBmMTJlODk4Li44OTkxZjM4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Rpc2NvdmVyeS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Rpc2NvdmVyeS5weQpAQCAtMSw0ICsxLDUgQEAKLWltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKQEAgLTY5LDcgKzcwLDEzIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2lzZmlsZSkKIAogICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gbGFtYmRhIHBhdGg6IHBhdGggKyAnIG1vZHVsZScKLSAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUgPSBsYW1iZGEgbW9kdWxlOiBtb2R1bGUgKyAnIHRlc3RzJworICAgICAgICBvcmlnX2xvYWRfdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUsIHBhdHRlcm49Tm9uZSk6CisgICAgICAgICAgICAjIFRoaXMgaXMgd2hlcmUgbG9hZF90ZXN0cyBpcyBjYWxsZWQuCisgICAgICAgICAgICBiYXNlID0gb3JpZ19sb2FkX3Rlc3RzKG1vZHVsZSwgcGF0dGVybj1wYXR0ZXJuKQorICAgICAgICAgICAgcmV0dXJuIGJhc2UgKyBbbW9kdWxlICsgJyB0ZXN0cyddCisgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlID0gbG9hZFRlc3RzRnJvbU1vZHVsZQorICAgICAgICBsb2FkZXIuc3VpdGVDbGFzcyA9IGxhbWJkYSB0aGluZzogdGhpbmcKIAogICAgICAgICB0b3BfbGV2ZWwgPSBvcy5wYXRoLmFic3BhdGgoJy9mb28nKQogICAgICAgICBsb2FkZXIuX3RvcF9sZXZlbF9kaXIgPSB0b3BfbGV2ZWwKQEAgLTc3LDkgKzg0LDkgQEAKIAogICAgICAgICAjIFRoZSB0ZXN0IHN1aXRlcyBmb3VuZCBzaG91bGQgYmUgc29ydGVkIGFscGhhYmV0aWNhbGx5IGZvciByZWxpYWJsZQogICAgICAgICAjIGV4ZWN1dGlvbiBvcmRlci4KLSAgICAgICAgZXhwZWN0ZWQgPSBbbmFtZSArICcgbW9kdWxlIHRlc3RzJyBmb3IgbmFtZSBpbgotICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QxJywgJ3Rlc3QyJyldCi0gICAgICAgIGV4cGVjdGVkLmV4dGVuZChbKCd0ZXN0X2Rpci4lcycgJSBuYW1lKSArICcgbW9kdWxlIHRlc3RzJyBmb3IgbmFtZSBpbgorICAgICAgICBleHBlY3RlZCA9IFtbbmFtZSArICcgbW9kdWxlIHRlc3RzJ10gZm9yIG5hbWUgaW4KKyAgICAgICAgICAgICAgICAgICAgKCd0ZXN0MScsICd0ZXN0MicsICd0ZXN0X2RpcicpXQorICAgICAgICBleHBlY3RlZC5leHRlbmQoW1soJ3Rlc3RfZGlyLiVzJyAlIG5hbWUpICsgJyBtb2R1bGUgdGVzdHMnXSBmb3IgbmFtZSBpbgogICAgICAgICAgICAgICAgICAgICAoJ3Rlc3QzJywgJ3Rlc3Q0JyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLCBleHBlY3RlZCkKIApAQCAtMTE3LDM0ICsxMjQsMjA0IEBACiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAndGVzdF9kaXJlY3RvcnknOgogICAgICAgICAgICAgICAgICAgICBkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZF90ZXN0c19hcmdzLmFwcGVuZCgobG9hZGVyLCB0ZXN0cywgcGF0dGVybikpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2xvYWRfdGVzdHMnCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYucGF0aCArICcgbG9hZF90ZXN0cyddCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKIAogICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aCA9PSBvdGhlci5wYXRoCiAKICAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKLSAgICAgICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCB1c2VfbG9hZF90ZXN0cyk6Ci0gICAgICAgICAgICBpZiB1c2VfbG9hZF90ZXN0czoKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oJ3VzZV9sb2FkX3Rlc3RzIHNob3VsZCBiZSBGYWxzZSBmb3IgcGFja2FnZXMnKQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZS5wYXRoICsgJyBtb2R1bGUgdGVzdHMnCisgICAgICAgIG9yaWdfbG9hZF90ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGRlZiBsb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSwgcGF0dGVybj1Ob25lKToKKyAgICAgICAgICAgICMgVGhpcyBpcyB3aGVyZSBsb2FkX3Rlc3RzIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIGJhc2UgPSBvcmlnX2xvYWRfdGVzdHMobW9kdWxlLCBwYXR0ZXJuPXBhdHRlcm4pCisgICAgICAgICAgICByZXR1cm4gYmFzZSArIFttb2R1bGUucGF0aCArICcgbW9kdWxlIHRlc3RzJ10KICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUgPSBsb2FkVGVzdHNGcm9tTW9kdWxlCisgICAgICAgIGxvYWRlci5zdWl0ZUNsYXNzID0gbGFtYmRhIHRoaW5nOiB0aGluZwogCiAgICAgICAgIGxvYWRlci5fdG9wX2xldmVsX2RpciA9ICcvZm9vJwogICAgICAgICAjIHRoaXMgdGltZSBubyAnLnB5JyBvbiB0aGUgcGF0dGVybiBzbyB0aGF0IGl0IGNhbiBtYXRjaAogICAgICAgICAjIGEgdGVzdCBwYWNrYWdlCiAgICAgICAgIHN1aXRlID0gbGlzdChsb2FkZXIuX2ZpbmRfdGVzdHMoJy9mb28nLCAndGVzdConKSkKIAotICAgICAgICAjIFdlIHNob3VsZCBoYXZlIGxvYWRlZCB0ZXN0cyBmcm9tIHRoZSB0ZXN0X2RpcmVjdG9yeSBwYWNrYWdlIGJ5IGNhbGxpbmcgbG9hZF90ZXN0cwotICAgICAgICAjIGFuZCBkaXJlY3RseSBmcm9tIHRoZSB0ZXN0X2RpcmVjdG9yeTIgcGFja2FnZQorICAgICAgICAjIFdlIHNob3VsZCBoYXZlIGxvYWRlZCB0ZXN0cyBmcm9tIHRoZSBhX2RpcmVjdG9yeSBhbmQgdGVzdF9kaXJlY3RvcnkyCisgICAgICAgICMgZGlyZWN0bHkgYW5kIHZpYSBsb2FkX3Rlc3RzIGZvciB0aGUgdGVzdF9kaXJlY3RvcnkgcGFja2FnZSwgd2hpY2gKKyAgICAgICAgIyBzdGlsbCBjYWxscyB0aGUgYmFzZWxpbmUgbW9kdWxlIGxvYWRlci4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xvYWRfdGVzdHMnLCAndGVzdF9kaXJlY3RvcnkyJyArICcgbW9kdWxlIHRlc3RzJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgW1snYV9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkgbG9hZF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9kaXJlY3RvcnkgbW9kdWxlIHRlc3RzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9kaXJlY3RvcnkyIG1vZHVsZSB0ZXN0cyddXSkKKworCiAgICAgICAgICMgVGhlIHRlc3QgbW9kdWxlIHBhdGhzIHNob3VsZCBiZSBzb3J0ZWQgZm9yIHJlbGlhYmxlIGV4ZWN1dGlvbiBvcmRlcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5wYXRocywgWyd0ZXN0X2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeTInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUucGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWydhX2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeScsICd0ZXN0X2RpcmVjdG9yeTInXSkKKworICAgICAgICAjIGxvYWRfdGVzdHMgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZSB3aXRoIGxvYWRlciwgdGVzdHMgYW5kIHBhdHRlcm4KKyAgICAgICAgIyAoYnV0IHRoZXJlIGFyZSBubyB0ZXN0cyBpbiBvdXIgc3R1YiBtb2R1bGUgaXRzZWxmLCBzbyB0aGF0cyBbXSBhdCB0aGUKKyAgICAgICAgIyB0aW1lIG9mIGNhbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLmxvYWRfdGVzdHNfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKGxvYWRlciwgW10sICd0ZXN0KicpXSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfdGVzdHNfZGVmYXVsdF9jYWxsc19wYWNrYWdlX2xvYWRfdGVzdHMoc2VsZik6CisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorCisgICAgICAgIG9yaWdpbmFsX2xpc3RkaXIgPSBvcy5saXN0ZGlyCisgICAgICAgIGRlZiByZXN0b3JlX2xpc3RkaXIoKToKKyAgICAgICAgICAgIG9zLmxpc3RkaXIgPSBvcmlnaW5hbF9saXN0ZGlyCisgICAgICAgIG9yaWdpbmFsX2lzZmlsZSA9IG9zLnBhdGguaXNmaWxlCisgICAgICAgIGRlZiByZXN0b3JlX2lzZmlsZSgpOgorICAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUgPSBvcmlnaW5hbF9pc2ZpbGUKKyAgICAgICAgb3JpZ2luYWxfaXNkaXIgPSBvcy5wYXRoLmlzZGlyCisgICAgICAgIGRlZiByZXN0b3JlX2lzZGlyKCk6CisgICAgICAgICAgICBvcy5wYXRoLmlzZGlyID0gb3JpZ2luYWxfaXNkaXIKKworICAgICAgICBkaXJlY3RvcmllcyA9IFsnYV9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnknLCAndGVzdF9kaXJlY3RvcnkyJ10KKyAgICAgICAgcGF0aF9saXN0cyA9IFtkaXJlY3RvcmllcywgW10sIFtdLCBbXV0KKyAgICAgICAgb3MubGlzdGRpciA9IGxhbWJkYSBwYXRoOiBwYXRoX2xpc3RzLnBvcCgwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9saXN0ZGlyKQorCisgICAgICAgIG9zLnBhdGguaXNkaXIgPSBsYW1iZGEgcGF0aDogVHJ1ZQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9pc2RpcikKKworICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IGxhbWJkYSBwYXRoOiBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpIG5vdCBpbiBkaXJlY3RvcmllcworICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9pc2ZpbGUpCisKKyAgICAgICAgY2xhc3MgTW9kdWxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXRocyA9IFtdCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICAgICAgICAgIHNlbGYucGF0aHMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAndGVzdF9kaXJlY3RvcnknOgorICAgICAgICAgICAgICAgICAgICBkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZF90ZXN0c19hcmdzLmFwcGVuZCgobG9hZGVyLCB0ZXN0cywgcGF0dGVybikpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYucGF0aCArICcgbG9hZF90ZXN0cyddCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aCA9PSBvdGhlci5wYXRoCisKKyAgICAgICAgbG9hZGVyLl9nZXRfbW9kdWxlX2Zyb21fbmFtZSA9IGxhbWJkYSBuYW1lOiBNb2R1bGUobmFtZSkKKyAgICAgICAgb3JpZ19sb2FkX3Rlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgZGVmIGxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlLCBwYXR0ZXJuPU5vbmUpOgorICAgICAgICAgICAgIyBUaGlzIGlzIHdoZXJlIGxvYWRfdGVzdHMgaXMgY2FsbGVkLgorICAgICAgICAgICAgYmFzZSA9IG9yaWdfbG9hZF90ZXN0cyhtb2R1bGUsIHBhdHRlcm49cGF0dGVybikKKyAgICAgICAgICAgIHJldHVybiBiYXNlICsgW21vZHVsZS5wYXRoICsgJyBtb2R1bGUgdGVzdHMnXQorICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSA9IGxvYWRUZXN0c0Zyb21Nb2R1bGUKKyAgICAgICAgbG9hZGVyLnN1aXRlQ2xhc3MgPSBsYW1iZGEgdGhpbmc6IHRoaW5nCisKKyAgICAgICAgbG9hZGVyLl90b3BfbGV2ZWxfZGlyID0gJy9mb28nCisgICAgICAgICMgdGhpcyB0aW1lIG5vICcucHknIG9uIHRoZSBwYXR0ZXJuIHNvIHRoYXQgaXQgY2FuIG1hdGNoCisgICAgICAgICMgYSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgc3VpdGUgPSBsaXN0KGxvYWRlci5fZmluZF90ZXN0cygnL2ZvbycsICd0ZXN0Ki5weScpKQorCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIGFfZGlyZWN0b3J5IGFuZCB0ZXN0X2RpcmVjdG9yeTIKKyAgICAgICAgIyBkaXJlY3RseSBhbmQgdmlhIGxvYWRfdGVzdHMgZm9yIHRoZSB0ZXN0X2RpcmVjdG9yeSBwYWNrYWdlLCB3aGljaAorICAgICAgICAjIHN0aWxsIGNhbGxzIHRoZSBiYXNlbGluZSBtb2R1bGUgbG9hZGVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtbJ2FfZGlyZWN0b3J5IG1vZHVsZSB0ZXN0cyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfZGlyZWN0b3J5IGxvYWRfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfZGlyZWN0b3J5IG1vZHVsZSB0ZXN0cyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfZGlyZWN0b3J5MiBtb2R1bGUgdGVzdHMnXV0pCisgICAgICAgICMgVGhlIHRlc3QgbW9kdWxlIHBhdGhzIHNob3VsZCBiZSBzb3J0ZWQgZm9yIHJlbGlhYmxlIGV4ZWN1dGlvbiBvcmRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5wYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5JywgJ3Rlc3RfZGlyZWN0b3J5MiddKQorCiAKICAgICAgICAgIyBsb2FkX3Rlc3RzIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2Ugd2l0aCBsb2FkZXIsIHRlc3RzIGFuZCBwYXR0ZXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTW9kdWxlLmxvYWRfdGVzdHNfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICBbKGxvYWRlciwgJ3Rlc3RfZGlyZWN0b3J5JyArICcgbW9kdWxlIHRlc3RzJywgJ3Rlc3QqJyldKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCBbXSwgJ3Rlc3QqLnB5JyldKQorCisgICAgZGVmIHRlc3RfZmluZF90ZXN0c19jdXN0b21pc2VfdmlhX3BhY2thZ2VfcGF0dGVybihzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3QgdXNlcyB0aGUgZXhhbXBsZSAnZG8tbm90aGluZycgbG9hZF90ZXN0cyBmcm9tCisgICAgICAgICMgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWwjbG9hZC10ZXN0cy1wcm90b2NvbAorICAgICAgICAjIHRvIG1ha2Ugc3VyZSB0aGF0IHRoYXQgYWN0dWFsbHkgd29ya3MuCisgICAgICAgICMgSG91c2VrZWVwaW5nCisgICAgICAgIG9yaWdpbmFsX2xpc3RkaXIgPSBvcy5saXN0ZGlyCisgICAgICAgIGRlZiByZXN0b3JlX2xpc3RkaXIoKToKKyAgICAgICAgICAgIG9zLmxpc3RkaXIgPSBvcmlnaW5hbF9saXN0ZGlyCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2xpc3RkaXIpCisgICAgICAgIG9yaWdpbmFsX2lzZmlsZSA9IG9zLnBhdGguaXNmaWxlCisgICAgICAgIGRlZiByZXN0b3JlX2lzZmlsZSgpOgorICAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUgPSBvcmlnaW5hbF9pc2ZpbGUKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfaXNmaWxlKQorICAgICAgICBvcmlnaW5hbF9pc2RpciA9IG9zLnBhdGguaXNkaXIKKyAgICAgICAgZGVmIHJlc3RvcmVfaXNkaXIoKToKKyAgICAgICAgICAgIG9zLnBhdGguaXNkaXIgPSBvcmlnaW5hbF9pc2RpcgorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9pc2RpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLnJlbW92ZSwgYWJzcGF0aCgnL2ZvbycpKQorCisgICAgICAgICMgVGVzdCBkYXRhOiB3ZSBleHBlY3QgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgIyBhIGxpc3RkaXIgdG8gZmluZCBvdXIgcGFja2FnZSwgYW5kIGEgaXNmaWxlIGFuZCBpc2RpciBjaGVjayBvbiBpdC4KKyAgICAgICAgIyBhIG1vZHVsZS1mcm9tLW5hbWUgY2FsbCB0byB0dXJuIHRoYXQgaW50byBhIG1vZHVsZQorICAgICAgICAjIGZvbGxvd2VkIGJ5IGxvYWRfdGVzdHMuCisgICAgICAgICMgdGhlbiBvdXIgbG9hZF90ZXN0cyB3aWxsIGNhbGwgZGlzY292ZXIoKSB3aGljaCBpcyBtZXNzeQorICAgICAgICAjIGJ1dCB0aGF0IGZpbmFsbHkgY2hhaW5zIGludG8gZmluZF90ZXN0cyBhZ2FpbiBmb3IgdGhlIGNoaWxkIGRpciAtCisgICAgICAgICMgd2hpY2ggaXMgd2h5IHdlIGRvbid0IGhhdmUgYSBpbmZpbml0ZSBsb29wLgorICAgICAgICAjIFdlIGV4cGVjdCB0byBzZWU6CisgICAgICAgICMgdGhlIG1vZHVsZSBsb2FkIHRlc3RzIGZvciBib3RoIHBhY2thZ2UgYW5kIHBsYWluIG1vZHVsZSBjYWxsZWQsCisgICAgICAgICMgYW5kIHRoZSBwbGFpbiBtb2R1bGUgcmVzdWx0IG5lc3RlZCBieSB0aGUgcGFja2FnZSBtb2R1bGUgbG9hZF90ZXN0cworICAgICAgICAjIGluZGljYXRpbmcgdGhhdCBpdCB3YXMgcHJvY2Vzc2VkIGFuZCBjb3VsZCBoYXZlIGJlZW4gbXV0YXRlZC4KKyAgICAgICAgdmZzID0ge2Fic3BhdGgoJy9mb28nKTogWydteV9wYWNrYWdlJ10sCisgICAgICAgICAgICAgICBhYnNwYXRoKCcvZm9vL215X3BhY2thZ2UnKTogWydfX2luaXRfXy5weScsICd0ZXN0X21vZHVsZS5weSddfQorICAgICAgICBkZWYgbGlzdF9kaXIocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gbGlzdCh2ZnNbcGF0aF0pCisgICAgICAgIG9zLmxpc3RkaXIgPSBsaXN0X2RpcgorICAgICAgICBvcy5wYXRoLmlzZGlyID0gbGFtYmRhIHBhdGg6IG5vdCBwYXRoLmVuZHN3aXRoKCcucHknKQorICAgICAgICBvcy5wYXRoLmlzZmlsZSA9IGxhbWJkYSBwYXRoOiBwYXRoLmVuZHN3aXRoKCcucHknKQorCisgICAgICAgIGNsYXNzIE1vZHVsZShvYmplY3QpOgorICAgICAgICAgICAgcGF0aHMgPSBbXQorICAgICAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGhzLmFwcGVuZChwYXRoKQorICAgICAgICAgICAgICAgIGlmIHBhdGguZW5kc3dpdGgoJ3Rlc3RfbW9kdWxlJyk6CisgICAgICAgICAgICAgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rlc3RzX2FyZ3MuYXBwZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbc2VsZi5wYXRoICsgJyBsb2FkX3Rlc3RzJ10KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZF90ZXN0c19hcmdzLmFwcGVuZCgobG9hZGVyLCB0ZXN0cywgcGF0dGVybikpCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRvcCBsZXZlbCBkaXJlY3RvcnkgY2FjaGVkIG9uIGxvYWRlciBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgX19maWxlX18gPSAnL2Zvby9teV9wYWNrYWdlL19faW5pdF9fLnB5JworICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAgICAgICAgICAgICAgICAgICAgICBwa2dfdGVzdHMgPSBsb2FkZXIuZGlzY292ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfZGlyPXRoaXNfZGlyLCBwYXR0ZXJuPXBhdHRlcm4pCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3NlbGYucGF0aCArICcgbG9hZF90ZXN0cycsIHRlc3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSArIHBrZ190ZXN0cworICAgICAgICAgICAgICAgIHNlbGYubG9hZF90ZXN0cyA9IGxvYWRfdGVzdHMKKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aCA9PSBvdGhlci5wYXRoCisKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBsYW1iZGEgbmFtZTogTW9kdWxlKG5hbWUpCisgICAgICAgIGxvYWRlci5zdWl0ZUNsYXNzID0gbGFtYmRhIHRoaW5nOiB0aGluZworCisgICAgICAgIGxvYWRlci5fdG9wX2xldmVsX2RpciA9IGFic3BhdGgoJy9mb28nKQorICAgICAgICAjIHRoaXMgdGltZSBubyAnLnB5JyBvbiB0aGUgcGF0dGVybiBzbyB0aGF0IGl0IGNhbiBtYXRjaAorICAgICAgICAjIGEgdGVzdCBwYWNrYWdlCisgICAgICAgIHN1aXRlID0gbGlzdChsb2FkZXIuX2ZpbmRfdGVzdHMoYWJzcGF0aCgnL2ZvbycpLCAndGVzdCoucHknKSkKKworICAgICAgICAjIFdlIHNob3VsZCBoYXZlIGxvYWRlZCB0ZXN0cyBmcm9tIGJvdGggbXlfcGFja2FnZSBhbmQKKyAgICAgICAgIyBteV9wYWNha2dlLnRlc3RfbW9kdWxlLCBhbmQgYWxzbyBydW4gdGhlIGxvYWRfdGVzdHMgaG9vayBpbiBib3RoLgorICAgICAgICAjIChub3JtYWxseSB0aGlzIHdvdWxkIGJlIG5lc3RlZCBUZXN0U3VpdGVzLikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbWydteV9wYWNrYWdlIGxvYWRfdGVzdHMnLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWydteV9wYWNrYWdlLnRlc3RfbW9kdWxlIGxvYWRfdGVzdHMnXV1dKQorICAgICAgICAjIFBhcmVudHMgYmVmb3JlIGNoaWxkcmVuLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vZHVsZS5wYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ215X3BhY2thZ2UnLCAnbXlfcGFja2FnZS50ZXN0X21vZHVsZSddKQorCisgICAgICAgICMgbG9hZF90ZXN0cyBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0d2ljZSB3aXRoIGxvYWRlciwgdGVzdHMgYW5kIHBhdHRlcm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNb2R1bGUubG9hZF90ZXN0c19hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsobG9hZGVyLCBbXSwgJ3Rlc3QqLnB5JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2FkZXIsIFtdLCAndGVzdCoucHknKV0pCiAKICAgICBkZWYgdGVzdF9kaXNjb3ZlcihzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCkBAIC0xOTIsNiArMzY5LDUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZpbmRfdGVzdHNfYXJncywgWyhzdGFydF9kaXIsICdwYXR0ZXJuJyldKQogICAgICAgICBzZWxmLmFzc2VydEluKHRvcF9sZXZlbF9kaXIsIHN5cy5wYXRoKQogCisgICAgZGVmIHRlc3RfZGlzY292ZXJfc3RhcnRfZGlyX2lzX3BhY2thZ2VfY2FsbHNfcGFja2FnZV9sb2FkX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRoZSBwYWNrYWdlIGxvYWRfdGVzdHMgaW4gYSBwYWNrYWdlIGlzIGluZGVlZAorICAgICAgICAjIGludm9rZWQgd2hlbiB0aGUgc3RhcnRfZGlyIGlzIGEgcGFja2FnZSAoYW5kIG5vdCB0aGUgdG9wIGxldmVsKS4KKyAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjI0NTcKKworICAgICAgICAjIFRlc3QgZGF0YTogd2UgZXhwZWN0IHRoZSBmb2xsb3dpbmc6CisgICAgICAgICMgYW4gaXNmaWxlIHRvIHZlcmlmeSB0aGUgcGFja2FnZSwgdGhlbiBpbXBvcnRpbmcgYW5kIHNjYW5uaW5nCisgICAgICAgICMgYXMgcGVyIF9maW5kX3Rlc3RzJyBub3JtYWwgYmVoYXZpb3VyLgorICAgICAgICAjIFdlIGV4cGVjdCB0byBzZWUgb3VyIGxvYWRfdGVzdHMgaG9vayBjYWxsZWQgb25jZS4KKyAgICAgICAgdmZzID0ge2Fic3BhdGgoJy90b3BsZXZlbCcpOiBbJ3N0YXJ0ZGlyJ10sCisgICAgICAgICAgICAgICBhYnNwYXRoKCcvdG9wbGV2ZWwvc3RhcnRkaXInKTogWydfX2luaXRfXy5weSddfQorICAgICAgICBkZWYgbGlzdF9kaXIocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gbGlzdCh2ZnNbcGF0aF0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcywgJ2xpc3RkaXInLCBvcy5saXN0ZGlyKQorICAgICAgICBvcy5saXN0ZGlyID0gbGlzdF9kaXIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLnBhdGgsICdpc2ZpbGUnLCBvcy5wYXRoLmlzZmlsZSkKKyAgICAgICAgb3MucGF0aC5pc2ZpbGUgPSBsYW1iZGEgcGF0aDogcGF0aC5lbmRzd2l0aCgnLnB5JykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIG9zLnBhdGgsICdpc2RpcicsIG9zLnBhdGguaXNkaXIpCisgICAgICAgIG9zLnBhdGguaXNkaXIgPSBsYW1iZGEgcGF0aDogbm90IHBhdGguZW5kc3dpdGgoJy5weScpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMucGF0aC5yZW1vdmUsIGFic3BhdGgoJy90b3BsZXZlbCcpKQorCisgICAgICAgIGNsYXNzIE1vZHVsZShvYmplY3QpOgorICAgICAgICAgICAgcGF0aHMgPSBbXQorICAgICAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgICAgICAgICAgZGVmIGxvYWRfdGVzdHMoc2VsZiwgbG9hZGVyLCB0ZXN0cywgcGF0dGVybik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFsnbG9hZF90ZXN0cyBjYWxsZWQgJyArIHNlbGYucGF0aF0KKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aCA9PSBvdGhlci5wYXRoCisKKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgIGxvYWRlci5fZ2V0X21vZHVsZV9mcm9tX25hbWUgPSBsYW1iZGEgbmFtZTogTW9kdWxlKG5hbWUpCisgICAgICAgIGxvYWRlci5zdWl0ZUNsYXNzID0gbGFtYmRhIHRoaW5nOiB0aGluZworCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmRpc2NvdmVyKCcvdG9wbGV2ZWwvc3RhcnRkaXInLCB0b3BfbGV2ZWxfZGlyPScvdG9wbGV2ZWwnKQorCisgICAgICAgICMgV2Ugc2hvdWxkIGhhdmUgbG9hZGVkIHRlc3RzIGZyb20gdGhlIHBhY2thZ2UgX19pbml0X18uCisgICAgICAgICMgKG5vcm1hbGx5IHRoaXMgd291bGQgYmUgbmVzdGVkIFRlc3RTdWl0ZXMuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtbJ2xvYWRfdGVzdHMgY2FsbGVkIHN0YXJ0ZGlyJ11dKQorCiAgICAgZGVmIHNldHVwX2ltcG9ydF9pc3N1ZV90ZXN0cyhzZWxmLCBmYWtlZmlsZSk6CiAgICAgICAgIGxpc3RkaXIgPSBvcy5saXN0ZGlyCiAgICAgICAgIG9zLmxpc3RkaXIgPSBsYW1iZGEgXzogW2Zha2VmaWxlXQpAQCAtMjA0LDYgKzQyNiwxNyBAQAogICAgICAgICAgICAgc3lzLnBhdGhbOl0gPSBvcmlnX3N5c19wYXRoCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlKQogCisgICAgZGVmIHNldHVwX2ltcG9ydF9pc3N1ZV9wYWNrYWdlX3Rlc3RzKHNlbGYsIHZmcyk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBvcywgJ2xpc3RkaXInLCBvcy5saXN0ZGlyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZmlsZScsIG9zLnBhdGguaXNmaWxlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgb3MucGF0aCwgJ2lzZGlyJywgb3MucGF0aC5pc2RpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5wYXRoLl9fc2V0aXRlbV9fLCBzbGljZShOb25lKSwgbGlzdChzeXMucGF0aCkpCisgICAgICAgIGRlZiBsaXN0X2RpcihwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBsaXN0KHZmc1twYXRoXSkKKyAgICAgICAgb3MubGlzdGRpciA9IGxpc3RfZGlyCisgICAgICAgIG9zLnBhdGguaXNkaXIgPSBsYW1iZGEgcGF0aDogbm90IHBhdGguZW5kc3dpdGgoJy5weScpCisgICAgICAgIG9zLnBhdGguaXNmaWxlID0gbGFtYmRhIHBhdGg6IHBhdGguZW5kc3dpdGgoJy5weScpCisKICAgICBkZWYgdGVzdF9kaXNjb3Zlcl93aXRoX21vZHVsZXNfdGhhdF9mYWlsX3RvX2ltcG9ydChzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKQEAgLTIxMiwxMSArNDQ1LDQ0IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmRpc2NvdmVyKCcuJykKICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5nZXRjd2QoKSwgc3lzLnBhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgIyBFcnJvcnMgbG9hZGluZyB0aGUgc3VpdGUgYXJlIGFsc28gY2FwdHVyZWQgZm9yIGludHJvc3BlY3Rpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoW10sIGxvYWRlci5lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxvYWRlci5lcnJvcnMpKQorICAgICAgICBlcnJvciA9IGxvYWRlci5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJ0ZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IHRlc3RfdGhpc19kb2VzX25vdF9leGlzdCcgaW4gZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCiAgICAgICAgIHRlc3QgPSBsaXN0KGxpc3Qoc3VpdGUpWzBdKVswXSAjIGV4dHJhY3QgdGVzdCBmcm9tIHN1aXRlCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICB0ZXN0LnRlc3RfdGhpc19kb2VzX25vdF9leGlzdCgpCiAKKyAgICBkZWYgdGVzdF9kaXNjb3Zlcl93aXRoX2luaXRfbW9kdWxlc190aGF0X2ZhaWxfdG9faW1wb3J0KHNlbGYpOgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL2ZvbycpOiBbJ215X3BhY2thZ2UnXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy9mb28vbXlfcGFja2FnZScpOiBbJ19faW5pdF9fLnB5JywgJ3Rlc3RfbW9kdWxlLnB5J119CisgICAgICAgIHNlbGYuc2V0dXBfaW1wb3J0X2lzc3VlX3BhY2thZ2VfdGVzdHModmZzKQorICAgICAgICBpbXBvcnRfY2FsbHMgPSBbXQorICAgICAgICBkZWYgX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpOgorICAgICAgICAgICAgaW1wb3J0X2NhbGxzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkNhbm5vdCBpbXBvcnQgTmFtZSIpCisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gX2dldF9tb2R1bGVfZnJvbV9uYW1lCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmRpc2NvdmVyKGFic3BhdGgoJy9mb28nKSkKKworICAgICAgICBzZWxmLmFzc2VydEluKGFic3BhdGgoJy9mb28nKSwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgIyBFcnJvcnMgbG9hZGluZyB0aGUgc3VpdGUgYXJlIGFsc28gY2FwdHVyZWQgZm9yIGludHJvc3BlY3Rpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoW10sIGxvYWRlci5lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxvYWRlci5lcnJvcnMpKQorICAgICAgICBlcnJvciA9IGxvYWRlci5lcnJvcnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgJ0ZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IG15X3BhY2thZ2UnIGluIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICB0ZXN0ID0gbGlzdChsaXN0KHN1aXRlKVswXSlbMF0gIyBleHRyYWN0IHRlc3QgZnJvbSBzdWl0ZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHRlc3QubXlfcGFja2FnZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X2NhbGxzLCBbJ215X3BhY2thZ2UnXSkKKwogICAgICAgICAjIENoZWNrIHBpY2tsYWJpbGl0eQogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHModGVzdCwgcHJvdG8pKQpAQCAtMjQxLDYgKzUwNywzMCBAQAogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoc3VpdGUsIHByb3RvKSkKIAorICAgIGRlZiB0ZXN0X2Rpc2NvdmVyX3dpdGhfaW5pdF9tb2R1bGVfdGhhdF9yYWlzZXNfU2tpcFRlc3Rfb25faW1wb3J0KHNlbGYpOgorICAgICAgICB2ZnMgPSB7YWJzcGF0aCgnL2ZvbycpOiBbJ215X3BhY2thZ2UnXSwKKyAgICAgICAgICAgICAgIGFic3BhdGgoJy9mb28vbXlfcGFja2FnZScpOiBbJ19faW5pdF9fLnB5JywgJ3Rlc3RfbW9kdWxlLnB5J119CisgICAgICAgIHNlbGYuc2V0dXBfaW1wb3J0X2lzc3VlX3BhY2thZ2VfdGVzdHModmZzKQorICAgICAgICBpbXBvcnRfY2FsbHMgPSBbXQorICAgICAgICBkZWYgX2dldF9tb2R1bGVfZnJvbV9uYW1lKG5hbWUpOgorICAgICAgICAgICAgaW1wb3J0X2NhbGxzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ3NraXBwZXJvbycpCisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICBsb2FkZXIuX2dldF9tb2R1bGVfZnJvbV9uYW1lID0gX2dldF9tb2R1bGVfZnJvbV9uYW1lCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmRpc2NvdmVyKGFic3BhdGgoJy9mb28nKSkKKworICAgICAgICBzZWxmLmFzc2VydEluKGFic3BhdGgoJy9mb28nKSwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHN1aXRlLnJ1bihyZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5za2lwcGVkKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQudGVzdHNSdW4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X2NhbGxzLCBbJ215X3BhY2thZ2UnXSkKKworICAgICAgICAjIENoZWNrIHBpY2tsYWJpbGl0eQorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoc3VpdGUsIHByb3RvKSkKKwogICAgIGRlZiB0ZXN0X2NvbW1hbmRfbGluZV9oYW5kbGluZ19wYXJzZUFyZ3Moc2VsZik6CiAgICAgICAgIHByb2dyYW0gPSBUZXN0YWJsZVRlc3RQcm9ncmFtKCkKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQppbmRleCBiNjJhMWI1Li42OGYxMDM2IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQpAQCAtMSwxMiArMSwzNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCi0KK2ltcG9ydCB3YXJuaW5ncwogCiBpbXBvcnQgdW5pdHRlc3QKIAorIyBEZWNvcmF0b3IgdXNlZCBpbiB0aGUgZGVwcmVjYXRpb24gdGVzdHMgdG8gcmVzZXQgdGhlIHdhcm5pbmcgcmVnaXN0cnkgZm9yCisjIHRlc3QgaXNvbGF0aW9uIGFuZCByZXByb2R1Y2liaWxpdHkuCitkZWYgd2FybmluZ3JlZ2lzdHJ5KGZ1bmMpOgorICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3cyk6CisgICAgICAgIG1pc3NpbmcgPSBvYmplY3QoKQorICAgICAgICBzYXZlZCA9IGdldGF0dHIod2FybmluZ3MsICdfX3dhcm5pbmdyZWdpc3RyeV9fJywgbWlzc2luZykuY29weSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3cykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHNhdmVkIGlzIG1pc3Npbmc6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBkZWwgd2FybmluZ3MuX193YXJuaW5ncmVnaXN0cnlfXworICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5fX3dhcm5pbmdyZWdpc3RyeV9fID0gc2F2ZWQKKwogCiBjbGFzcyBUZXN0X1Rlc3RMb2FkZXIodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgIyMjIEJhc2ljIG9iamVjdCB0ZXN0cworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworICAgIGRlZiB0ZXN0X19faW5pdF9fKHNlbGYpOgorICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgbG9hZGVyLmVycm9ycykKKwogICAgICMjIyBUZXN0cyBmb3IgVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tVGVzdENhc2UKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKQEAgLTE1MCw2ICsxNzQsNyBAQAogCiAgICAgIyBDaGVjayB0aGF0IGxvYWRUZXN0c0Zyb21Nb2R1bGUgaG9ub3JzIChvciBub3QpIGEgbW9kdWxlCiAgICAgIyB3aXRoIGEgbG9hZF90ZXN0cyBmdW5jdGlvbi4KKyAgICBAd2FybmluZ3JlZ2lzdHJ5CiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU1vZHVsZV9fbG9hZF90ZXN0cyhzZWxmKToKICAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQogICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE2OCwxMCArMTkzLDE0NCBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzdWl0ZSwgdW5pdHRlc3QuVGVzdFN1aXRlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorICAgICAgICAjIFdpdGggUHl0aG9uIDMuNSwgdGhlIHVuZG9jdW1lbnRlZCBhbmQgdW5vZmZpY2lhbCB1c2VfbG9hZF90ZXN0cyBpcworICAgICAgICAjIGlnbm9yZWQgKGFuZCBkZXByZWNhdGVkKS4KKyAgICAgICAgbG9hZF90ZXN0c19hcmdzID0gW10KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9RmFsc2UpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCduZXZlcicpCisgICAgICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIHVzZV9sb2FkX3Rlc3RzPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkX3Rlc3RzX2FyZ3MsIFtsb2FkZXIsIHN1aXRlLCBOb25lXSkKKworICAgIEB3YXJuaW5ncmVnaXN0cnkKKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX191c2VfbG9hZF90ZXN0c19kZXByZWNhdGVkX3Bvc2l0aW9uYWwoc2VsZik6CisgICAgICAgIG0gPSB0eXBlcy5Nb2R1bGVUeXBlKCdtJykKKyAgICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIG0udGVzdGNhc2VfMSA9IE15VGVzdENhc2UKIAogICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQotICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIHVzZV9sb2FkX3Rlc3RzPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW10pCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisgICAgICAgICMgVGhlIG1ldGhvZCBzdGlsbCB3b3Jrcy4KKyAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgICMgdXNlX2xvYWRfdGVzdHM9VHJ1ZSBhcyBhIHBvc2l0aW9uYWwgYXJndW1lbnQuCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICAjIGxvYWRfdGVzdHMgd2FzIHN0aWxsIGNhbGxlZCBiZWNhdXNlIHVzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICMgYW5kIGlnbm9yZWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRfdGVzdHNfYXJncywgW2xvYWRlciwgc3VpdGUsIE5vbmVdKQorICAgICAgICAjIFdlIGdvdCBhIHdhcm5pbmcuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMod1stMV0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1stMV0ubWVzc2FnZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VfbG9hZF90ZXN0cyBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkJykKKworICAgIEB3YXJuaW5ncmVnaXN0cnkKKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX191c2VfbG9hZF90ZXN0c19kZXByZWNhdGVkX2tleXdvcmQoc2VsZik6CisgICAgICAgIG0gPSB0eXBlcy5Nb2R1bGVUeXBlKCdtJykKKyAgICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIG0udGVzdGNhc2VfMSA9IE15VGVzdENhc2UKKworICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorICAgICAgICBkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0ZXN0cywgdW5pdHRlc3QuVGVzdFN1aXRlKQorICAgICAgICAgICAgbG9hZF90ZXN0c19hcmdzLmV4dGVuZCgobG9hZGVyLCB0ZXN0cywgcGF0dGVybikpCisgICAgICAgICAgICByZXR1cm4gdGVzdHMKKyAgICAgICAgbS5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworICAgICAgICAjIFRoZSBtZXRob2Qgc3RpbGwgd29ya3MuCisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZShtLCB1c2VfbG9hZF90ZXN0cz1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzdWl0ZSwgdW5pdHRlc3QuVGVzdFN1aXRlKQorICAgICAgICAgICAgIyBsb2FkX3Rlc3RzIHdhcyBzdGlsbCBjYWxsZWQgYmVjYXVzZSB1c2VfbG9hZF90ZXN0cyBpcyBkZXByZWNhdGVkCisgICAgICAgICAgICAjIGFuZCBpZ25vcmVkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2FkX3Rlc3RzX2FyZ3MsIFtsb2FkZXIsIHN1aXRlLCBOb25lXSkKKyAgICAgICAgICAgICMgV2UgZ290IGEgd2FybmluZy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod1stMV0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbLTFdLm1lc3NhZ2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnKQorCisgICAgQHdhcm5pbmdyZWdpc3RyeQorICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3Rvb19tYW55X3Bvc2l0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY20sIFwKKyAgICAgICAgICAgICB3YXJuaW5ncy5jYXRjaF93YXJuaW5nKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSwgRmFsc2UsICd0ZXN0bWUuKicpCisgICAgICAgICAgICAjIFdlIHN0aWxsIGdvdCB0aGUgZGVwcmVjYXRpb24gd2FybmluZy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod1stMV0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHdbLTFdLm1lc3NhZ2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZV9sb2FkX3Rlc3RzIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnKQorICAgICAgICAgICAgIyBXZSBhbHNvIGdvdCBhIFR5cGVFcnJvciBmb3IgdG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY20uZXhjZXB0aW9uKSwgVHlwZUVycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAnbG9hZFRlc3RzRnJvbU1vZHVsZSgpIHRha2VzIDEgcG9zaXRpb25hbCBhcmd1bWVudCBidXQgMyB3ZXJlIGdpdmVuJykKKworICAgIEB3YXJuaW5ncmVnaXN0cnkKKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX191c2VfbG9hZF90ZXN0c19vdGhlcl9iYWRfa2V5d29yZChzZWxmKToKKyAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQorICAgICAgICBjbGFzcyBNeVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQorCisgICAgICAgIGxvYWRfdGVzdHNfYXJncyA9IFtdCisgICAgICAgIGRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgdGVzdHMsIHBhdHRlcm4pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRlc3RzLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MuZXh0ZW5kKChsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKSkKKyAgICAgICAgICAgIHJldHVybiB0ZXN0cworICAgICAgICBtLmxvYWRfdGVzdHMgPSBsb2FkX3Rlc3RzCisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ25ldmVyJykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSgKKyAgICAgICAgICAgICAgICAgICAgbSwgdXNlX2xvYWRfdGVzdHM9RmFsc2UsIHZlcnlfYmFkPVRydWUsIHdvcnNlPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoY20uZXhjZXB0aW9uKSwgVHlwZUVycm9yKQorICAgICAgICAjIFRoZSBlcnJvciBtZXNzYWdlIG5hbWVzIHRoZSBmaXJzdCBiYWQgYXJndW1lbnQgYWxwaGFiZXRpY2FsbHksCisgICAgICAgICMgaG93ZXZlciB1c2VfbG9hZF90ZXN0cyAod2hpY2ggc29ydHMgZmlyc3QpIGlzIGlnbm9yZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICJsb2FkVGVzdHNGcm9tTW9kdWxlKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAndmVyeV9iYWQnIikKKworICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21Nb2R1bGVfX3BhdHRlcm4oc2VsZik6CisgICAgICAgIG0gPSB0eXBlcy5Nb2R1bGVUeXBlKCdtJykKKyAgICAgICAgY2xhc3MgTXlUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIG0udGVzdGNhc2VfMSA9IE15VGVzdENhc2UKKworICAgICAgICBsb2FkX3Rlc3RzX2FyZ3MgPSBbXQorICAgICAgICBkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHRlc3RzLCBwYXR0ZXJuKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0ZXN0cywgdW5pdHRlc3QuVGVzdFN1aXRlKQorICAgICAgICAgICAgbG9hZF90ZXN0c19hcmdzLmV4dGVuZCgobG9hZGVyLCB0ZXN0cywgcGF0dGVybikpCisgICAgICAgICAgICByZXR1cm4gdGVzdHMKKyAgICAgICAgbS5sb2FkX3Rlc3RzID0gbG9hZF90ZXN0cworCisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0sIHBhdHRlcm49J3Rlc3RtZS4qJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZF90ZXN0c19hcmdzLCBbbG9hZGVyLCBzdWl0ZSwgJ3Rlc3RtZS4qJ10pCiAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTW9kdWxlX19mYXVsdHlfbG9hZF90ZXN0cyhzZWxmKToKICAgICAgICAgbSA9IHR5cGVzLk1vZHVsZVR5cGUoJ20nKQpAQCAtMTg0LDYgKzM0MywxMyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzdWl0ZSwgdW5pdHRlc3QuVGVzdFN1aXRlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1aXRlLmNvdW50VGVzdENhc2VzKCksIDEpCisgICAgICAgICMgRXJyb3JzIGxvYWRpbmcgdGhlIHN1aXRlIGFyZSBhbHNvIGNhcHR1cmVkIGZvciBpbnRyb3NwZWN0aW9uLgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKFtdLCBsb2FkZXIuZXJyb3JzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihsb2FkZXIuZXJyb3JzKSkKKyAgICAgICAgZXJyb3IgPSBsb2FkZXIuZXJyb3JzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKKyAgICAgICAgICAgICdGYWlsZWQgdG8gY2FsbCBsb2FkX3Rlc3RzOicgaW4gZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCiAgICAgICAgIHRlc3QgPSBsaXN0KHN1aXRlKVswXQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAic29tZSBmYWlsdXJlIiwgdGVzdC5tKQpAQCAtMjE5LDE1ICszODUsMTUgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fbWFsZm9ybWVkX25hbWUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgICMgWFhYIFNob3VsZCB0aGlzIHJhaXNlIFZhbHVlRXJyb3Igb3IgSW1wb3J0RXJyb3I/Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJykKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nKQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjICgpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgIEltcG9ydEVycm9yLCBleHBlY3RlZF9yZWdleCwgZ2V0YXR0cih0ZXN0LCAnYWJjICgpIC8vJykpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSAuLi4gdG8gYQogICAgICMgbW9kdWxlIgpAQCAtMjM2LDI4ICs0MDIsNDcgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fdW5rbm93bl9tb2R1bGVfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnc2Rhc2Zhc2Zhc2RmJykKKyAgICAgICAgZXhwZWN0ZWQgPSAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIgorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbXBvcnRFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCiAgICAgIyB3aXRoaW4gYSB0ZXN0IGNhc2UgY2xhc3MsIG9yIGEgY2FsbGFibGUgb2JqZWN0IHdoaWNoIHJldHVybnMgYQogICAgICMgVGVzdENhc2Ugb3IgVGVzdFN1aXRlIGluc3RhbmNlLiIKICAgICAjCi0gICAgIyBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGZvdW5kLCBidXQgdGhlIGF0dHJpYnV0ZSBjYW4ndD8KLSAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fdW5rbm93bl9hdHRyX25hbWUoc2VsZik6CisgICAgIyBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgbW9kdWxlIGlzIGZvdW5kLCBidXQgdGhlIGF0dHJpYnV0ZSBpc24ndD8KKyAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZV9fdW5rbm93bl9hdHRyX25hbWVfb25fbW9kdWxlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LnNkYXNmYXNmYXNkZicpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICInbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUgZmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LmxvYWRlci5zZGFzZmFzZmFzZGYnKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0LmxvYWRlcicgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKKworICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bworICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZAorICAgICMgd2l0aGluIGEgdGVzdCBjYXNlIGNsYXNzLCBvciBhIGNhbGxhYmxlIG9iamVjdCB3aGljaCByZXR1cm5zIGEKKyAgICAjIFRlc3RDYXNlIG9yIFRlc3RTdWl0ZSBpbnN0YW5jZS4iCisgICAgIworICAgICMgV2hhdCBoYXBwZW5zIHdoZW4gdGhlIG1vZHVsZSBpcyBmb3VuZCwgYnV0IHRoZSBhdHRyaWJ1dGUgaXNuJ3Q/CisgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVfX3Vua25vd25fYXR0cl9uYW1lX29uX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCd1bml0dGVzdC5zZGFzZmFzZmFzZGYnKQorICAgICAgICBleHBlY3RlZCA9ICJObyBtb2R1bGUgbmFtZWQgJ3VuaXR0ZXN0LnNkYXNmYXNmYXNkZiciCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEltcG9ydEVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTI2OSwxMiArNDU0LDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVfX3JlbGF0aXZlX3Vua25vd25fbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIidtb2R1bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSBmYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnc2Rhc2Zhc2Zhc2RmJywgdW5pdHRlc3QpCisgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ3NkYXNmYXNmYXNkZiciCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC5zZGFzZmFzZmFzZGYpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTI5MCwxMiArNDc2LDEzIEBACiAgICAgZGVmIHRlc3RfbG9hZFRlc3RzRnJvbU5hbWVfX3JlbGF0aXZlX2VtcHR5X25hbWUoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnJywgdW5pdHRlc3QpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnJywgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBleHBlY3RlZCA9ICJoYXMgbm8gYXR0cmlidXRlICcnIgorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgZ2V0YXR0cih0ZXN0LCAnJykpCiAKICAgICAjICJUaGUgc3BlY2lmaWVyIG5hbWUgaXMgYSBgYGRvdHRlZCBuYW1lJycgdGhhdCBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8KICAgICAjIGEgbW9kdWxlLCBhIHRlc3QgY2FzZSBjbGFzcywgYSBUZXN0U3VpdGUgaW5zdGFuY2UsIGEgdGVzdCBtZXRob2QKQEAgLTMxMCwxNCArNDk3LDE1IEBACiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCiAgICAgICAgICMgWFhYIFNob3VsZCB0aGlzIHJhaXNlIEF0dHJpYnV0ZUVycm9yIG9yIFZhbHVlRXJyb3I/Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJywgdW5pdHRlc3QpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJywgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWRfcmVnZXgsIGdldGF0dHIodGVzdCwgJ2FiYyAoKSAvLycpKQogCiAgICAgIyAiVGhlIG1ldGhvZCBvcHRpb25hbGx5IHJlc29sdmVzIG5hbWUgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIG1vZHVsZSIKICAgICAjCkBAIC00MjMsMTIgKzYxMSwxMyBAQAogICAgICAgICBtLnRlc3RjYXNlXzEgPSBNeVRlc3RDYXNlCiAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgndGVzdGNhc2VfMS50ZXN0Zm9vJywgbSkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIkZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCd0ZXN0Y2FzZV8xLnRlc3Rmb28nLCBtKQorICAgICAgICBleHBlY3RlZCA9ICJ0eXBlIG9iamVjdCAnTXlUZXN0Q2FzZScgaGFzIG5vIGF0dHJpYnV0ZSAndGVzdGZvbyciCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQorICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAorICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCBleHBlY3RlZCwgdGVzdC50ZXN0Zm9vKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgLi4uIHRvCiAgICAgIyAuLi4gYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggcmV0dXJucyBhIC4uLiBUZXN0U3VpdGUgaW5zdGFuY2UiCkBAIC01NDYsNiArNzM1LDIzIEBACiAgICAgIyMjIFRlc3RzIGZvciBUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcygpCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCisgICAgZGVmIGNoZWNrX2RlZmVycmVkX2Vycm9yKHNlbGYsIGxvYWRlciwgc3VpdGUpOgorICAgICAgICAiIiJIZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNraW5nIHRoYXQgZXJyb3JzIGluIGxvYWRpbmcgYXJlIHJlcG9ydGVkLgorCisgICAgICAgIDpwYXJhbSBsb2FkZXI6IEEgbG9hZGVyIHdpdGggc29tZSBlcnJvcnMuCisgICAgICAgIDpwYXJhbSBzdWl0ZTogQSBzdWl0ZSB0aGF0IHNob3VsZCBoYXZlIGEgbGF0ZSBib3VuZCBlcnJvci4KKyAgICAgICAgOnJldHVybjogVGhlIGZpcnN0IGVycm9yIG1lc3NhZ2UgZnJvbSB0aGUgbG9hZGVyIGFuZCB0aGUgdGVzdCBvYmplY3QKKyAgICAgICAgICAgIGZyb20gdGhlIHN1aXRlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1aXRlLCB1bml0dGVzdC5UZXN0U3VpdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VpdGUuY291bnRUZXN0Q2FzZXMoKSwgMSkKKyAgICAgICAgIyBFcnJvcnMgbG9hZGluZyB0aGUgc3VpdGUgYXJlIGFsc28gY2FwdHVyZWQgZm9yIGludHJvc3BlY3Rpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoW10sIGxvYWRlci5lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGxvYWRlci5lcnJvcnMpKQorICAgICAgICBlcnJvciA9IGxvYWRlci5lcnJvcnNbMF0KKyAgICAgICAgdGVzdCA9IGxpc3Qoc3VpdGUpWzBdCisgICAgICAgIHJldHVybiBlcnJvciwgdGVzdAorCiAgICAgIyAiU2ltaWxhciB0byBsb2FkVGVzdHNGcm9tTmFtZSgpLCBidXQgdGFrZXMgYSBzZXF1ZW5jZSBvZiBuYW1lcyByYXRoZXIKICAgICAjIHRoYW4gYSBzaW5nbGUgbmFtZS4iCiAgICAgIwpAQCAtNTk4LDE0ICs4MDQsMTUgQEAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgVmFsdWVFcnJvciBvciBJbXBvcnRFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddKQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjICgpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCAgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBJbXBvcnRFcnJvciwgZXhwZWN0ZWRfcmVnZXgsIGdldGF0dHIodGVzdCwgJ2FiYyAoKSAvLycpKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02MTYsMTIgKzgyMywxMyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fdW5rbm93bl9tb2R1bGVfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ3NkYXNmYXNmYXNkZiddKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkICdzZGFzZmFzZmFzZGYnIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMgZmFpbGVkIHRvIHJhaXNlIEltcG9ydEVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnc2Rhc2Zhc2Zhc2RmJ10pCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBzZGFzZmFzZmFzZGYiCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW1wb3J0RXJyb3IsIGV4cGVjdGVkLCB0ZXN0LnNkYXNmYXNmYXNkZikKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtNjMyLDEyICs4NDAsMTQgQEAKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tTmFtZXNfX3Vua25vd25fYXR0cl9uYW1lKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsndW5pdHRlc3Quc2Rhc2Zhc2Zhc2RmJywgJ3VuaXR0ZXN0J10pCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICInbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzIGZhaWxlZCB0byByYWlzZSBBdHRyaWJ1dGVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcygKKyAgICAgICAgICAgIFsndW5pdHRlc3QubG9hZGVyLnNkYXNmYXNmYXNkZicsICd1bml0dGVzdC50ZXN0LmR1bW15J10pCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0LmxvYWRlcicgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02NTEsMTIgKzg2MSwxMyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fdW5rbm93bl9uYW1lX3JlbGF0aXZlXzEoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICInbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUgZmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnc2Rhc2Zhc2Zhc2RmJ10sIHVuaXR0ZXN0KQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02NzAsMTIgKzg4MSwxMyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fdW5rbm93bl9uYW1lX3JlbGF0aXZlXzIoc2VsZik6CiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydUZXN0Q2FzZScsICdzZGFzZmFzZmFzZGYnXSwgdW5pdHRlc3QpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICInbW9kdWxlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUgZmFpbGVkIHRvIHJhaXNlIEF0dHJpYnV0ZUVycm9yIikKKyAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnVGVzdENhc2UnLCAnc2Rhc2Zhc2Zhc2RmJ10sIHVuaXR0ZXN0KQorICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVsxXSkKKyAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnc2Rhc2Zhc2Zhc2RmJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3Quc2Rhc2Zhc2Zhc2RmKQogCiAgICAgIyAiVGhlIHNwZWNpZmllciBuYW1lIGlzIGEgYGBkb3R0ZWQgbmFtZScnIHRoYXQgbWF5IHJlc29sdmUgZWl0aGVyIHRvCiAgICAgIyBhIG1vZHVsZSwgYSB0ZXN0IGNhc2UgY2xhc3MsIGEgVGVzdFN1aXRlIGluc3RhbmNlLCBhIHRlc3QgbWV0aG9kCkBAIC02OTEsMTIgKzkwMywxMyBAQAogICAgIGRlZiB0ZXN0X2xvYWRUZXN0c0Zyb21OYW1lc19fcmVsYXRpdmVfZW1wdHlfbmFtZShzZWxmKToKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJyddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJyddLCB1bml0dGVzdCkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gImhhcyBubyBhdHRyaWJ1dGUgJyciCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsIGV4cGVjdGVkLCBnZXRhdHRyKHRlc3QsICcnKSkKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0bwogICAgICMgYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIFRlc3RTdWl0ZSBpbnN0YW5jZSwgYSB0ZXN0IG1ldGhvZApAQCAtNzEwLDE0ICs5MjMsMTUgQEAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAKICAgICAgICAgIyBYWFggU2hvdWxkIHRoaXMgcmFpc2UgQXR0cmlidXRlRXJyb3Igb3IgVmFsdWVFcnJvcj8KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgiVGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydhYmMgKCkgLy8nXSwgdW5pdHRlc3QpCisgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQorICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oCisgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCisgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWRfcmVnZXgsIGdldGF0dHIodGVzdCwgJ2FiYyAoKSAvLycpKQogCiAgICAgIyAiVGhlIG1ldGhvZCBvcHRpb25hbGx5IHJlc29sdmVzIG5hbWUgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIG1vZHVsZSIKICAgICAjCkBAIC04MzUsMTIgKzEwNDksMTMgQEAKICAgICAgICAgbS50ZXN0Y2FzZV8xID0gTXlUZXN0Q2FzZQogCiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsndGVzdGNhc2VfMS50ZXN0Zm9vJ10sIG0pCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJ0eXBlIG9iamVjdCAnTXlUZXN0Q2FzZScgaGFzIG5vIGF0dHJpYnV0ZSAndGVzdGZvbyciKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgQXR0cmlidXRlRXJyb3IiKQorICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWyd0ZXN0Y2FzZV8xLnRlc3Rmb28nXSwgbSkKKyAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCisgICAgICAgIGV4cGVjdGVkID0gInR5cGUgb2JqZWN0ICdNeVRlc3RDYXNlJyBoYXMgbm8gYXR0cmlidXRlICd0ZXN0Zm9vJyIKKyAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKKyAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgZXhwZWN0ZWQsIHRlc3QudGVzdGZvbykKIAogICAgICMgIlRoZSBzcGVjaWZpZXIgbmFtZSBpcyBhIGBgZG90dGVkIG5hbWUnJyB0aGF0IG1heSByZXNvbHZlIC4uLiB0bwogICAgICMgLi4uIGEgY2FsbGFibGUgb2JqZWN0IHdoaWNoIHJldHVybnMgYSAuLi4gVGVzdFN1aXRlIGluc3RhbmNlIgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CmluZGV4IDcyNWQ2N2YuLjFjZmMxNzkgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKQEAgLTEzNCw2ICsxMzQsNyBAQAogICAgIHJlc3VsdCA9IE5vbmUKICAgICB2ZXJib3NpdHkgPSAxCiAgICAgZGVmYXVsdFRlc3QgPSBOb25lCisgICAgdGJfbG9jYWxzID0gRmFsc2UKICAgICB0ZXN0UnVubmVyID0gTm9uZQogICAgIHRlc3RMb2FkZXIgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlcgogICAgIG1vZHVsZSA9ICdfX21haW5fXycKQEAgLTE0NywxOCArMTQ4LDE5IEBACiBjbGFzcyBGYWtlUnVubmVyKG9iamVjdCk6CiAgICAgaW5pdEFyZ3MgPSBOb25lCiAgICAgdGVzdCA9IE5vbmUKLSAgICByYWlzZUVycm9yID0gRmFsc2UKKyAgICByYWlzZUVycm9yID0gMAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgRmFrZVJ1bm5lci5pbml0QXJncyA9IGt3YXJncwogICAgICAgICBpZiBGYWtlUnVubmVyLnJhaXNlRXJyb3I6Ci0gICAgICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSBGYWxzZQorICAgICAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yIC09IDEKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgogCiAgICAgZGVmIHJ1bihzZWxmLCB0ZXN0KToKICAgICAgICAgRmFrZVJ1bm5lci50ZXN0ID0gdGVzdAogICAgICAgICByZXR1cm4gUkVTVUxUCiAKKwogY2xhc3MgVGVzdENvbW1hbmRMaW5lQXJncyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xNjYsNyArMTY4LDcgQEAKICAgICAgICAgc2VsZi5wcm9ncmFtLmNyZWF0ZVRlc3RzID0gbGFtYmRhOiBOb25lCiAgICAgICAgIEZha2VSdW5uZXIuaW5pdEFyZ3MgPSBOb25lCiAgICAgICAgIEZha2VSdW5uZXIudGVzdCA9IE5vbmUKLSAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gRmFsc2UKKyAgICAgICAgRmFrZVJ1bm5lci5yYWlzZUVycm9yID0gMAogCiAgICAgZGVmIHRlc3RWZXJib3NpdHkoc2VsZik6CiAgICAgICAgIHByb2dyYW0gPSBzZWxmLnByb2dyYW0KQEAgLTI1Niw2ICsyNTgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZha2VSdW5uZXIuaW5pdEFyZ3MsIHsndmVyYm9zaXR5JzogJ3ZlcmJvc2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGZhc3QnOiAnZmFpbGZhc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1ZmZlcic6ICdidWZmZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RiX2xvY2Fscyc6IEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzJzogJ3dhcm5pbmdzJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci50ZXN0LCAndGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocHJvZ3JhbS5yZXN1bHQsIFJFU1VMVCkKQEAgLTI3NCwxMCArMjc3LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFrZVJ1bm5lci50ZXN0LCAndGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMocHJvZ3JhbS5yZXN1bHQsIFJFU1VMVCkKIAorICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQorCisgICAgICAgIHByb2dyYW0udGVzdFJ1bm5lciA9IEZha2VSdW5uZXIKKyAgICAgICAgcHJvZ3JhbS5wYXJzZUFyZ3MoW05vbmUsICctLWxvY2FscyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIHByb2dyYW0udGJfbG9jYWxzKQorICAgICAgICBwcm9ncmFtLnJ1blRlc3RzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWtlUnVubmVyLmluaXRBcmdzLCB7J2J1ZmZlcic6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGZhc3QnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RiX2xvY2Fscyc6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NpdHknOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2FybmluZ3MnOiBOb25lfSkKKwogICAgIGRlZiB0ZXN0UnVuVGVzdHNPbGRSdW5uZXJDbGFzcyhzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQogCi0gICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IFRydWUKKyAgICAgICAgIyBUd28gVHlwZUVycm9ycyBhcmUgbmVlZGVkIHRvIGZhbGwgYWxsIHRoZSB3YXkgYmFjayB0byBvbGQtc3R5bGUKKyAgICAgICAgIyBydW5uZXJzIC0gb25lIHRvIGZhaWwgdGJfbG9jYWxzLCBvbmUgdG8gZmFpbCBidWZmZXIgZXRjLgorICAgICAgICBGYWtlUnVubmVyLnJhaXNlRXJyb3IgPSAyCiAgICAgICAgIHByb2dyYW0udGVzdFJ1bm5lciA9IEZha2VSdW5uZXIKICAgICAgICAgcHJvZ3JhbS52ZXJib3NpdHkgPSAndmVyYm9zaXR5JwogICAgICAgICBwcm9ncmFtLmZhaWxmYXN0ID0gJ2ZhaWxmYXN0JwpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9yZXN1bHQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weQppbmRleCA0ODlmZTE3Li5lMzllMmVhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Jlc3VsdC5weQpAQCAtOCw2ICs4LDIwIEBACiBpbXBvcnQgdW5pdHRlc3QKIAogCitjbGFzcyBNb2NrVHJhY2ViYWNrKG9iamVjdCk6CisgICAgY2xhc3MgVHJhY2ViYWNrRXhjZXB0aW9uOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FwdHVyZV9sb2NhbHMgPSBrd2FyZ3MuZ2V0KCdjYXB0dXJlX2xvY2FscycsIEZhbHNlKQorICAgICAgICBkZWYgZm9ybWF0KHNlbGYpOgorICAgICAgICAgICAgcmVzdWx0ID0gWydBIHRyYWNlYmFjayddCisgICAgICAgICAgICBpZiBzZWxmLmNhcHR1cmVfbG9jYWxzOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ2xvY2FscycpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKK2RlZiByZXN0b3JlX3RyYWNlYmFjaygpOgorICAgIHVuaXR0ZXN0LnJlc3VsdC50cmFjZWJhY2sgPSB0cmFjZWJhY2sKKworCiBjbGFzcyBUZXN0X1Rlc3RSZXN1bHQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgTm90ZTogdGhlcmUgYXJlIG5vdCBzZXBhcmF0ZSB0ZXN0cyBmb3IgVGVzdFJlc3VsdC53YXNTdWNjZXNzZnVsKCksCiAgICAgIyBUZXN0UmVzdWx0LmVycm9ycywgVGVzdFJlc3VsdC5mYWlsdXJlcywgVGVzdFJlc3VsdC50ZXN0c1J1biBvcgpAQCAtMjI3LDYgKzI0MSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHRlc3RfY2FzZSwgdGVzdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZvcm1hdHRlZF9leGMsIHN0cikKIAorICAgIGRlZiB0ZXN0X2FkZEVycm9yX2xvY2FscyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0XzEoc2VsZik6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgdGVzdCA9IEZvbygndGVzdF8xJykKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHJlc3VsdC50Yl9sb2NhbHMgPSBUcnVlCisKKyAgICAgICAgdW5pdHRlc3QucmVzdWx0LnRyYWNlYmFjayA9IE1vY2tUcmFjZWJhY2sKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfdHJhY2ViYWNrKQorICAgICAgICByZXN1bHQuc3RhcnRUZXN0UnVuKCkKKyAgICAgICAgdGVzdC5ydW4ocmVzdWx0KQorICAgICAgICByZXN1bHQuc3RvcFRlc3RSdW4oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5lcnJvcnMpLCAxKQorICAgICAgICB0ZXN0X2Nhc2UsIGZvcm1hdHRlZF9leGMgPSByZXN1bHQuZXJyb3JzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0EgdHJhY2ViYWNrbG9jYWxzJywgZm9ybWF0dGVkX2V4YykKKwogICAgIGRlZiB0ZXN0X2FkZFN1YlRlc3Qoc2VsZik6CiAgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBkZWYgdGVzdF8xKHNlbGYpOgpAQCAtMzk4LDYgKzQzMSw3IEBACiAgICAgc2VsZi50ZXN0c1J1biA9IDAKICAgICBzZWxmLnNob3VsZFN0b3AgPSBGYWxzZQogICAgIHNlbGYuYnVmZmVyID0gRmFsc2UKKyAgICBzZWxmLnRiX2xvY2FscyA9IEZhbHNlCiAKIGNsYXNzRGljdFsnX19pbml0X18nXSA9IF9faW5pdF9fCiBPbGRSZXN1bHQgPSB0eXBlKCdPbGRSZXN1bHQnLCAob2JqZWN0LCksIGNsYXNzRGljdCkKQEAgLTQ1NCwxNSArNDg4LDYgQEAKICAgICAgICAgcnVubmVyLnJ1bihUZXN0KCd0ZXN0Rm9vJykpCiAKIAotY2xhc3MgTW9ja1RyYWNlYmFjayhvYmplY3QpOgotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZm9ybWF0X2V4Y2VwdGlvbigqXyk6Ci0gICAgICAgIHJldHVybiBbJ0EgdHJhY2ViYWNrJ10KLQotZGVmIHJlc3RvcmVfdHJhY2ViYWNrKCk6Ci0gICAgdW5pdHRlc3QucmVzdWx0LnRyYWNlYmFjayA9IHRyYWNlYmFjawotCi0KIGNsYXNzIFRlc3RPdXRwdXRCdWZmZXJpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9ydW5uZXIucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weQppbmRleCA3YzBiZDUxLi45Y2JjMjYwIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3J1bm5lci5weQpAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVubmVyLndhcm5pbmdzLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocnVubmVyLmRlc2NyaXB0aW9ucykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5uZXIucmVzdWx0Y2xhc3MsIHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0KQotCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocnVubmVyLnRiX2xvY2FscykKIAogICAgIGRlZiB0ZXN0X211bHRpcGxlX2luaGVyaXRhbmNlKHNlbGYpOgogICAgICAgICBjbGFzcyBBUmVzdWx0KHVuaXR0ZXN0LlRlc3RSZXN1bHQpOgpAQCAtMTcyLDE0ICsxNzIsMTMgQEAKICAgICAgICAgIyBvbiBhcmd1bWVudHMgaW4gaXRzIF9faW5pdF9fIHN1cGVyIGNhbGwKICAgICAgICAgQVRleHRSZXN1bHQoTm9uZSwgTm9uZSwgMSkKIAotCiAgICAgZGVmIHRlc3RCdWZmZXJBbmRGYWlsZmFzdChzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBkZWYgdGVzdEZvbyhzZWxmKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRlc3RSZXN1bHQoKQogICAgICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihzdHJlYW09aW8uU3RyaW5nSU8oKSwgZmFpbGZhc3Q9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPVRydWUpCiAgICAgICAgICMgVXNlIG91ciByZXN1bHQgb2JqZWN0CiAgICAgICAgIHJ1bm5lci5fbWFrZVJlc3VsdCA9IGxhbWJkYTogcmVzdWx0CiAgICAgICAgIHJ1bm5lci5ydW4oVGVzdCgndGVzdEZvbycpKQpAQCAtMTg3LDYgKzE4NiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0LmZhaWxmYXN0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0LmJ1ZmZlcikKIAorICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoc3RyZWFtPWlvLlN0cmluZ0lPKCksIHRiX2xvY2Fscz1UcnVlKQorICAgICAgICByZXN1bHQgPSBydW5uZXIucnVuKHVuaXR0ZXN0LlRlc3RTdWl0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIHJlc3VsdC50Yl9sb2NhbHMpCisKICAgICBkZWYgdGVzdFJ1bm5lclJlZ2lzdGVyc1Jlc3VsdChzZWxmKToKICAgICAgICAgY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBkZWYgdGVzdEZvbyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rfc2V0dXBzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9zZXR1cHMucHkKaW5kZXggMzkyZjk1ZS4uMmRmNzAzZSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9zZXR1cHMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9zZXR1cHMucHkKQEAgLTExMSw3ICsxMTEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHQuZXJyb3JzKSwgMSkKICAgICAgICAgZXJyb3IsIF8gPSByZXN1bHQuZXJyb3JzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVycm9yKSwKLSAgICAgICAgICAgICAgICAgICAgJ3NldFVwQ2xhc3MgKCVzLkJyb2tlblRlc3QpJyAlIF9fbmFtZV9fKQorICAgICAgICAgICAgICAgICAgICAnc2V0VXBDbGFzcyAoJXMuJXMpJyAlIChfX25hbWVfXywgQnJva2VuVGVzdC5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3RfZXJyb3JfaW5fdGVhcmRvd25fY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTQ0LDcgKzE0NCw3IEBACiAKICAgICAgICAgZXJyb3IsIF8gPSByZXN1bHQuZXJyb3JzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVycm9yKSwKLSAgICAgICAgICAgICAgICAgICAgJ3RlYXJEb3duQ2xhc3MgKCVzLlRlc3QpJyAlIF9fbmFtZV9fKQorICAgICAgICAgICAgICAgICAgICAndGVhckRvd25DbGFzcyAoJXMuJXMpJyAlIChfX25hbWVfXywgVGVzdC5fX3F1YWxuYW1lX18pKQogCiAgICAgZGVmIHRlc3RfY2xhc3Nfbm90X3Rvcm5kb3duX3doZW5fc2V0dXBfZmFpbHMoc2VsZik6CiAgICAgICAgIGNsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDE0LDcgKzQxNCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdC5lcnJvcnMpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHQuc2tpcHBlZCksIDEpCiAgICAgICAgIHNraXBwZWQgPSByZXN1bHQuc2tpcHBlZFswXVswXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihza2lwcGVkKSwgJ3NldFVwQ2xhc3MgKCVzLlRlc3QpJyAlIF9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihza2lwcGVkKSwKKyAgICAgICAgICAgICAgICAgICAgJ3NldFVwQ2xhc3MgKCVzLiVzKScgJSAoX19uYW1lX18sIFRlc3QuX19xdWFsbmFtZV9fKSkKIAogICAgIGRlZiB0ZXN0X3NraXB0ZXN0X2luX3NldHVwbW9kdWxlKHNlbGYpOgogICAgICAgICBjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CmluZGV4IGUwNWM2ZTAuLmJiOWI5NTYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtNDI0LDYgKzQyNCwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFtdKQogCiAKKyAgICBkZWYgdGVzdF9tYXRtdWwoc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobSBAIDEsIE1hZ2ljTW9jaykKKyAgICAgICAgbS5fX21hdG11bF9fLnJldHVybl92YWx1ZSA9IDQyCisgICAgICAgIG0uX19ybWF0bXVsX18ucmV0dXJuX3ZhbHVlID0gNjY2CisgICAgICAgIG0uX19pbWF0bXVsX18ucmV0dXJuX3ZhbHVlID0gMjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtIEAgMSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSBAIG0sIDY2NikKKyAgICAgICAgbSBAPSAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIDI0KQorCiAgICAgZGVmIHRlc3RfZGl2bW9kX2FuZF9yZGl2bW9kKHNlbGYpOgogICAgICAgICBtID0gTWFnaWNNb2NrKCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRpdm1vZCg1LCBtKSwgTWFnaWNNb2NrKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQppbmRleCBjZjE2NzNjLi4yYTYwNjlmIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMTc0LDYgKzE3NCwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFttb2NrKCksIG1vY2soKSwgbW9jaygpXSwgWzMsIDIsIDFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUgc2lkZSBlZmZlY3Qgbm90IHVzZWQgY29ycmVjdGx5IikKIAorICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3NpZGVfZWZmZWN0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgIyBUZXN0IGZvciBpc3N1ZSAyMzY2MQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoZikKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IFZhbHVlRXJyb3IoJ0JhemluZ2EhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQmF6aW5nYSEnLCBtb2NrKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoJ2phdmEnIGluIHN5cy5wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdGVzdCBvbmx5IGFwcGxpZXMgdG8gSnl0aG9uJykKICAgICBkZWYgdGVzdF9qYXZhX2V4Y2VwdGlvbl9zaWRlX2VmZmVjdChzZWxmKToKQEAgLTExOTQsNiArMTIwMyw0MiBAQAogICAgICAgICBtID0gbW9jay5jcmVhdGVfYXV0b3NwZWMob2JqZWN0KCksIG5hbWU9J3N3ZWV0X2Z1bmMnKQogICAgICAgICBzZWxmLmFzc2VydEluKCdzd2VldF9mdW5jJywgcmVwcihtKSkKIAorICAgICNJc3N1ZTIxMjM4CisgICAgZGVmIHRlc3RfbW9ja191bnNhZmUoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBtLmFzc2VydF9mb29fY2FsbCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgbS5hc3NyZXRfZm9vX2NhbGwoKQorICAgICAgICBtID0gTW9jayh1bnNhZmU9VHJ1ZSkKKyAgICAgICAgbS5hc3NlcnRfZm9vX2NhbGwoKQorICAgICAgICBtLmFzc3JldF9mb29fY2FsbCgpCisKKyAgICAjSXNzdWUyMTI2MgorICAgIGRlZiB0ZXN0X2Fzc2VydF9ub3RfY2FsbGVkKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X25vdF9jYWxsZWQoKQorICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9ub3RfY2FsbGVkKCkKKworICAgICNJc3N1ZTIxMjU2IHByaW50b3V0IG9mIGtleXdvcmQgYXJncyBzaG91bGQgYmUgaW4gZGV0ZXJtaW5pc3RpYyBvcmRlcgorICAgIGRlZiB0ZXN0X3NvcnRlZF9jYWxsX3NpZ25hdHVyZShzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICBtLmhlbGxvKG5hbWU9J2hlbGxvJywgZGFkZHk9J2hlcm8nKQorICAgICAgICB0ZXh0ID0gImNhbGwoZGFkZHk9J2hlcm8nLCBuYW1lPSdoZWxsbycpIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobS5oZWxsby5jYWxsX2FyZ3MpLCB0ZXh0KQorCisgICAgI0lzc3VlMjEyNzAgb3ZlcnJpZGVzIHR1cGxlIG1ldGhvZHMgZm9yIG1vY2suY2FsbCBvYmplY3RzCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfdHVwbGVfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgYyA9IGNhbGwuY291bnQoKQorICAgICAgICBpID0gY2FsbC5pbmRleCgxMzIsJ2hlbGxvJykKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICBtLmNvdW50KCkKKyAgICAgICAgbS5pbmRleCgxMzIsImhlbGxvIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1swXSwgYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1sxXSwgaSkKKwogICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWMoc2VsZik6CiAgICAgICAgIGNsYXNzIF9PbmUob2JqZWN0KToKICAgICAgICAgICAgIG9uZSA9IDEKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQppbmRleCBiNTE2ZjQyLi4yOGZlODZiIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CkBAIC0zNzcsNyArMzc3LDcgQEAKIAogICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dvbnRfY3JlYXRlX2J5X2RlZmF1bHQoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnZnJvb2JsZScsIHNlbnRpbmVsLkZyb29ibGUpCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ29yZCcsIHNlbnRpbmVsLkZyb29ibGUpCiAgICAgICAgICAgICBkZWYgdGVzdCgpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnUGF0Y2hpbmcgbm9uIGV4aXN0ZW50IGF0dHJpYnV0ZXMgc2hvdWxkIGZhaWwnKQogCkBAIC0zODYsNyArMzg2LDI3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFNvbWVDbGFzcywgJ2Zyb29ibGUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFNvbWVDbGFzcywgJ29yZCcpKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9idWlsdGluc193aXRob3V0X2NyZWF0ZShzZWxmKToKKyAgICAgICAgQHBhdGNoKF9fbmFtZV9fKycub3JkJykKKyAgICAgICAgZGVmIHRlc3Rfb3JkKG1vY2tfb3JkKToKKyAgICAgICAgICAgIG1vY2tfb3JkLnJldHVybl92YWx1ZSA9IDEwMQorICAgICAgICAgICAgcmV0dXJuIG9yZCgnYycpCisKKyAgICAgICAgQHBhdGNoKF9fbmFtZV9fKycub3BlbicpCisgICAgICAgIGRlZiB0ZXN0X29wZW4obW9ja19vcGVuKToKKyAgICAgICAgICAgIG0gPSBtb2NrX29wZW4ucmV0dXJuX3ZhbHVlCisgICAgICAgICAgICBtLnJlYWQucmV0dXJuX3ZhbHVlID0gJ2FiY2QnCisKKyAgICAgICAgICAgIGZvYmogPSBvcGVuKCdkb2Vzbm90ZXhpc3RzLnR4dCcpCisgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKKyAgICAgICAgICAgIGZvYmouY2xvc2UoKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rfb3JkKCksIDEwMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X29wZW4oKSwgJ2FiY2QnKQogCiAKICAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3N0YXRpY19tZXRob2RzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3V0aWwucHkgYi9MaWIvdW5pdHRlc3QvdXRpbC5weQppbmRleCBhZWU0OThmLi40NTQ4NWRjIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdXRpbC5weQorKysgYi9MaWIvdW5pdHRlc3QvdXRpbC5weQpAQCAtNTIsNyArNTIsNyBAQAogICAgIHJldHVybiByZXN1bHRbOl9NQVhfTEVOR1RIXSArICcgW3RydW5jYXRlZF0uLi4nCiAKIGRlZiBzdHJjbGFzcyhjbHMpOgotICAgIHJldHVybiAiJXMuJXMiICUgKGNscy5fX21vZHVsZV9fLCBjbHMuX19uYW1lX18pCisgICAgcmV0dXJuICIlcy4lcyIgJSAoY2xzLl9fbW9kdWxlX18sIGNscy5fX3F1YWxuYW1lX18pCiAKIGRlZiBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlKGV4cGVjdGVkLCBhY3R1YWwpOgogICAgICIiIkZpbmRzIGVsZW1lbnRzIGluIG9ubHkgb25lIG9yIHRoZSBvdGhlciBvZiB0d28sIHNvcnRlZCBpbnB1dCBsaXN0cy4KZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvZXJyb3IucHkgYi9MaWIvdXJsbGliL2Vycm9yLnB5CmluZGV4IDQ1YjcxNjkuLmM1YjY3NWQgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvZXJyb3IucHkKKysrIGIvTGliL3VybGxpYi9lcnJvci5weQpAQCAtMzUsNiArMzUsNyBAQAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gJzx1cmxvcGVuIGVycm9yICVzPicgJSBzZWxmLnJlYXNvbgogCisKIGNsYXNzIEhUVFBFcnJvcihVUkxFcnJvciwgdXJsbGliLnJlc3BvbnNlLmFkZGluZm91cmwpOgogICAgICIiIlJhaXNlZCB3aGVuIEhUVFAgZXJyb3Igb2NjdXJzLCBidXQgYWxzbyBhY3RzIGxpa2Ugbm9uLWVycm9yIHJldHVybiIiIgogICAgIF9fc3VwZXJfaW5pdCA9IHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsLl9faW5pdF9fCkBAIC01NSw2ICs1Niw5IEBACiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnSFRUUCBFcnJvciAlczogJXMnICUgKHNlbGYuY29kZSwgc2VsZi5tc2cpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPEhUVFBFcnJvciAlczogJXI+JyAlIChzZWxmLmNvZGUsIHNlbGYubXNnKQorCiAgICAgIyBzaW5jZSBVUkxFcnJvciBzcGVjaWZpZXMgYSAucmVhc29uIGF0dHJpYnV0ZSwgSFRUUEVycm9yIHNob3VsZCBhbHNvCiAgICAgIyAgcHJvdmlkZSB0aGlzIGF0dHJpYnV0ZS4gU2VlIGlzc3VlMTMyMTEgZm9yIGRpc2N1c3Npb24uCiAgICAgQHByb3BlcnR5CkBAIC02OSw4ICs3Myw5IEBACiAgICAgZGVmIGhlYWRlcnMoc2VsZiwgaGVhZGVycyk6CiAgICAgICAgIHNlbGYuaGRycyA9IGhlYWRlcnMKIAotIyBleGNlcHRpb24gcmFpc2VkIHdoZW4gZG93bmxvYWRlZCBzaXplIGRvZXMgbm90IG1hdGNoIGNvbnRlbnQtbGVuZ3RoCisKIGNsYXNzIENvbnRlbnRUb29TaG9ydEVycm9yKFVSTEVycm9yKToKKyAgICAiIiJFeGNlcHRpb24gcmFpc2VkIHdoZW4gZG93bmxvYWRlZCBzaXplIGRvZXMgbm90IG1hdGNoIGNvbnRlbnQtbGVuZ3RoLiIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjb250ZW50KToKICAgICAgICAgVVJMRXJyb3IuX19pbml0X18oc2VsZiwgbWVzc2FnZSkKICAgICAgICAgc2VsZi5jb250ZW50ID0gY29udGVudApkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9wYXJzZS5weSBiL0xpYi91cmxsaWIvcGFyc2UucHkKaW5kZXggZDM2ODMzMS4uMDFjOWU1OCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9wYXJzZS5weQorKysgYi9MaWIvdXJsbGliL3BhcnNlLnB5CkBAIC0zNCw3ICszNCw5IEBACiBfX2FsbF9fID0gWyJ1cmxwYXJzZSIsICJ1cmx1bnBhcnNlIiwgInVybGpvaW4iLCAidXJsZGVmcmFnIiwKICAgICAgICAgICAgInVybHNwbGl0IiwgInVybHVuc3BsaXQiLCAidXJsZW5jb2RlIiwgInBhcnNlX3FzIiwKICAgICAgICAgICAgInBhcnNlX3FzbCIsICJxdW90ZSIsICJxdW90ZV9wbHVzIiwgInF1b3RlX2Zyb21fYnl0ZXMiLAotICAgICAgICAgICAidW5xdW90ZSIsICJ1bnF1b3RlX3BsdXMiLCAidW5xdW90ZV90b19ieXRlcyJdCisgICAgICAgICAgICJ1bnF1b3RlIiwgInVucXVvdGVfcGx1cyIsICJ1bnF1b3RlX3RvX2J5dGVzIiwKKyAgICAgICAgICAgIkRlZnJhZ1Jlc3VsdCIsICJQYXJzZVJlc3VsdCIsICJTcGxpdFJlc3VsdCIsCisgICAgICAgICAgICJEZWZyYWdSZXN1bHRCeXRlcyIsICJQYXJzZVJlc3VsdEJ5dGVzIiwgIlNwbGl0UmVzdWx0Qnl0ZXMiXQogCiAjIEEgY2xhc3NpZmljYXRpb24gb2Ygc2NoZW1lcyAoJycgbWVhbnMgYXBwbHkgYnkgZGVmYXVsdCkKIHVzZXNfcmVsYXRpdmUgPSBbJ2Z0cCcsICdodHRwJywgJ2dvcGhlcicsICdubnRwJywgJ2ltYXAnLApAQCAtNDA5LDExICs0MTEsMTMgQEAKICAgICAgICAgcmV0dXJuIHVybAogICAgIGlmIG5vdCB1cmw6CiAgICAgICAgIHJldHVybiBiYXNlCisKICAgICBiYXNlLCB1cmwsIF9jb2VyY2VfcmVzdWx0ID0gX2NvZXJjZV9hcmdzKGJhc2UsIHVybCkKICAgICBic2NoZW1lLCBibmV0bG9jLCBicGF0aCwgYnBhcmFtcywgYnF1ZXJ5LCBiZnJhZ21lbnQgPSBcCiAgICAgICAgICAgICB1cmxwYXJzZShiYXNlLCAnJywgYWxsb3dfZnJhZ21lbnRzKQogICAgIHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCA9IFwKICAgICAgICAgICAgIHVybHBhcnNlKHVybCwgYnNjaGVtZSwgYWxsb3dfZnJhZ21lbnRzKQorCiAgICAgaWYgc2NoZW1lICE9IGJzY2hlbWUgb3Igc2NoZW1lIG5vdCBpbiB1c2VzX3JlbGF0aXZlOgogICAgICAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsKQogICAgIGlmIHNjaGVtZSBpbiB1c2VzX25ldGxvYzoKQEAgLTQyMSw5ICs0MjUsNyBAQAogICAgICAgICAgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCiAgICAgICAgIG5ldGxvYyA9IGJuZXRsb2MKLSAgICBpZiBwYXRoWzoxXSA9PSAnLyc6Ci0gICAgICAgIHJldHVybiBfY29lcmNlX3Jlc3VsdCh1cmx1bnBhcnNlKChzY2hlbWUsIG5ldGxvYywgcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCisKICAgICBpZiBub3QgcGF0aCBhbmQgbm90IHBhcmFtczoKICAgICAgICAgcGF0aCA9IGJwYXRoCiAgICAgICAgIHBhcmFtcyA9IGJwYXJhbXMKQEAgLTQzMSwyOSArNDMzLDQ1IEBACiAgICAgICAgICAgICBxdWVyeSA9IGJxdWVyeQogICAgICAgICByZXR1cm4gX2NvZXJjZV9yZXN1bHQodXJsdW5wYXJzZSgoc2NoZW1lLCBuZXRsb2MsIHBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQotICAgIHNlZ21lbnRzID0gYnBhdGguc3BsaXQoJy8nKVs6LTFdICsgcGF0aC5zcGxpdCgnLycpCi0gICAgIyBYWFggVGhlIHN0dWZmIGJlbG93IGlzIGJvZ3VzIGluIHZhcmlvdXMgd2F5cy4uLgotICAgIGlmIHNlZ21lbnRzWy0xXSA9PSAnLic6Ci0gICAgICAgIHNlZ21lbnRzWy0xXSA9ICcnCi0gICAgd2hpbGUgJy4nIGluIHNlZ21lbnRzOgotICAgICAgICBzZWdtZW50cy5yZW1vdmUoJy4nKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIGkgPSAxCi0gICAgICAgIG4gPSBsZW4oc2VnbWVudHMpIC0gMQotICAgICAgICB3aGlsZSBpIDwgbjoKLSAgICAgICAgICAgIGlmIChzZWdtZW50c1tpXSA9PSAnLi4nCi0gICAgICAgICAgICAgICAgYW5kIHNlZ21lbnRzW2ktMV0gbm90IGluICgnJywgJy4uJykpOgotICAgICAgICAgICAgICAgIGRlbCBzZWdtZW50c1tpLTE6aSsxXQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpID0gaSsxCisKKyAgICBiYXNlX3BhcnRzID0gYnBhdGguc3BsaXQoJy8nKQorICAgIGlmIGJhc2VfcGFydHNbLTFdICE9ICcnOgorICAgICAgICAjIHRoZSBsYXN0IGl0ZW0gaXMgbm90IGEgZGlyZWN0b3J5LCBzbyB3aWxsIG5vdCBiZSB0YWtlbiBpbnRvIGFjY291bnQKKyAgICAgICAgIyBpbiByZXNvbHZpbmcgdGhlIHJlbGF0aXZlIHBhdGgKKyAgICAgICAgZGVsIGJhc2VfcGFydHNbLTFdCisKKyAgICAjIGZvciByZmMzOTg2LCBpZ25vcmUgYWxsIGJhc2UgcGF0aCBzaG91bGQgdGhlIGZpcnN0IGNoYXJhY3RlciBiZSByb290LgorICAgIGlmIHBhdGhbOjFdID09ICcvJzoKKyAgICAgICAgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcvJykKKyAgICBlbHNlOgorICAgICAgICBzZWdtZW50cyA9IGJhc2VfcGFydHMgKyBwYXRoLnNwbGl0KCcvJykKKyAgICAgICAgIyBmaWx0ZXIgb3V0IGVsZW1lbnRzIHRoYXQgd291bGQgY2F1c2UgcmVkdW5kYW50IHNsYXNoZXMgb24gcmUtam9pbmluZworICAgICAgICAjIHRoZSByZXNvbHZlZF9wYXRoCisgICAgICAgIHNlZ21lbnRzWzE6LTFdID0gZmlsdGVyKE5vbmUsIHNlZ21lbnRzWzE6LTFdKQorCisgICAgcmVzb2x2ZWRfcGF0aCA9IFtdCisKKyAgICBmb3Igc2VnIGluIHNlZ21lbnRzOgorICAgICAgICBpZiBzZWcgPT0gJy4uJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXNvbHZlZF9wYXRoLnBvcCgpCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBhbnkgLi4gc2VnbWVudHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgY2F1c2UgYW4gSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgICMgd2hlbiBwb3BwZWQgZnJvbSByZXNvbHZlZF9wYXRoIGlmIHJlc29sdmluZyBmb3IgcmZjMzk4NgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiBzZWcgPT0gJy4nOgorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJyZWFrCi0gICAgaWYgc2VnbWVudHMgPT0gWycnLCAnLi4nXToKLSAgICAgICAgc2VnbWVudHNbLTFdID0gJycKLSAgICBlbGlmIGxlbihzZWdtZW50cykgPj0gMiBhbmQgc2VnbWVudHNbLTFdID09ICcuLic6Ci0gICAgICAgIHNlZ21lbnRzWy0yOl0gPSBbJyddCi0gICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCAnLycuam9pbihzZWdtZW50cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgcXVlcnksIGZyYWdtZW50KSkpCisgICAgICAgICAgICByZXNvbHZlZF9wYXRoLmFwcGVuZChzZWcpCisKKyAgICBpZiBzZWdtZW50c1stMV0gaW4gKCcuJywgJy4uJyk6CisgICAgICAgICMgZG8gc29tZSBwb3N0LXByb2Nlc3NpbmcgaGVyZS4gaWYgdGhlIGxhc3Qgc2VnbWVudCB3YXMgYSByZWxhdGl2ZSBkaXIsCisgICAgICAgICMgdGhlbiB3ZSBuZWVkIHRvIGFwcGVuZCB0aGUgdHJhaWxpbmcgJy8nCisgICAgICAgIHJlc29sdmVkX3BhdGguYXBwZW5kKCcnKQorCisgICAgcmV0dXJuIF9jb2VyY2VfcmVzdWx0KHVybHVucGFyc2UoKHNjaGVtZSwgbmV0bG9jLCAnLycuam9pbigKKyAgICAgICAgcmVzb2x2ZWRfcGF0aCkgb3IgJy8nLCBwYXJhbXMsIHF1ZXJ5LCBmcmFnbWVudCkpKQorCiAKIGRlZiB1cmxkZWZyYWcodXJsKToKICAgICAiIiJSZW1vdmVzIGFueSBleGlzdGluZyBmcmFnbWVudCBmcm9tIFVSTC4KQEAgLTY0MSw3ICs2NTksNyBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAjIFdpdGhvdXQgdGhpcywgd2lsbCBqdXN0IGRpc3BsYXkgYXMgYSBkZWZhdWx0ZGljdAotICAgICAgICByZXR1cm4gIjxRdW90ZXIgJXI+IiAlIGRpY3Qoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXMgJXI+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgZGljdChzZWxmKSkKIAogICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBiKToKICAgICAgICAgIyBIYW5kbGUgYSBjYWNoZSBtaXNzLiBTdG9yZSBxdW90ZWQgc3RyaW5nIGluIGNhY2hlIGFuZCByZXR1cm4uCkBAIC03MzIsNyArNzUwLDggQEAKICAgICAgICAgX3NhZmVfcXVvdGVyc1tzYWZlXSA9IHF1b3RlciA9IFF1b3RlcihzYWZlKS5fX2dldGl0ZW1fXwogICAgIHJldHVybiAnJy5qb2luKFtxdW90ZXIoY2hhcikgZm9yIGNoYXIgaW4gYnNdKQogCi1kZWYgdXJsZW5jb2RlKHF1ZXJ5LCBkb3NlcT1GYWxzZSwgc2FmZT0nJywgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgorZGVmIHVybGVuY29kZShxdWVyeSwgZG9zZXE9RmFsc2UsIHNhZmU9JycsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLAorICAgICAgICAgICAgICBxdW90ZV92aWE9cXVvdGVfcGx1cyk6CiAgICAgIiIiRW5jb2RlIGEgZGljdCBvciBzZXF1ZW5jZSBvZiB0d28tZWxlbWVudCB0dXBsZXMgaW50byBhIFVSTCBxdWVyeSBzdHJpbmcuCiAKICAgICBJZiBhbnkgdmFsdWVzIGluIHRoZSBxdWVyeSBhcmcgYXJlIHNlcXVlbmNlcyBhbmQgZG9zZXEgaXMgdHJ1ZSwgZWFjaApAQCAtNzQ0LDggKzc2Myw4IEBACiAKICAgICBUaGUgY29tcG9uZW50cyBvZiBhIHF1ZXJ5IGFyZyBtYXkgZWFjaCBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBieXRlcyB0eXBlLgogCi0gICAgVGhlIHNhZmUsIGVuY29kaW5nLCBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBkb3duIHRvIHF1b3RlX3BsdXMoKQotICAgIChlbmNvZGluZyBhbmQgZXJyb3JzIG9ubHkgaWYgYSBjb21wb25lbnQgaXMgYSBzdHIpLgorICAgIFRoZSBzYWZlLCBlbmNvZGluZywgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgZG93biB0byB0aGUgZnVuY3Rpb24KKyAgICBzcGVjaWZpZWQgYnkgcXVvdGVfdmlhIChlbmNvZGluZyBhbmQgZXJyb3JzIG9ubHkgaWYgYSBjb21wb25lbnQgaXMgYSBzdHIpLgogICAgICIiIgogCiAgICAgaWYgaGFzYXR0cihxdWVyeSwgIml0ZW1zIik6CkBAIC03NzEsMjcgKzc5MCwyNyBAQAogICAgIGlmIG5vdCBkb3NlcToKICAgICAgICAgZm9yIGssIHYgaW4gcXVlcnk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGssIGJ5dGVzKToKLSAgICAgICAgICAgICAgICBrID0gcXVvdGVfcGx1cyhrLCBzYWZlKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoaywgc2FmZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgayA9IHF1b3RlX3BsdXMoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyh2LCBzYWZlKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEodiwgc2FmZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdiA9IHF1b3RlX3BsdXMoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgbC5hcHBlbmQoayArICc9JyArIHYpCiAgICAgZWxzZToKICAgICAgICAgZm9yIGssIHYgaW4gcXVlcnk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGssIGJ5dGVzKToKLSAgICAgICAgICAgICAgICBrID0gcXVvdGVfcGx1cyhrLCBzYWZlKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoaywgc2FmZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgayA9IHF1b3RlX3BsdXMoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGsgPSBxdW90ZV92aWEoc3RyKGspLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyh2LCBzYWZlKQorICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEodiwgc2FmZSkKICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgdikKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2LCBzdHIpOgotICAgICAgICAgICAgICAgIHYgPSBxdW90ZV9wbHVzKHYsIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgdiA9IHF1b3RlX3ZpYSh2LCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyB2KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC03OTksMTUgKzgxOCwxNSBAQAogICAgICAgICAgICAgICAgICAgICB4ID0gbGVuKHYpCiAgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgIyBub3QgYSBzZXF1ZW5jZQotICAgICAgICAgICAgICAgICAgICB2ID0gcXVvdGVfcGx1cyhzdHIodiksIHNhZmUsIGVuY29kaW5nLCBlcnJvcnMpCisgICAgICAgICAgICAgICAgICAgIHYgPSBxdW90ZV92aWEoc3RyKHYpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQogICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZChrICsgJz0nICsgdikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgc2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICAgZm9yIGVsdCBpbiB2OgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShlbHQsIGJ5dGVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV9wbHVzKGVsdCwgc2FmZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV92aWEoZWx0LCBzYWZlKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQgPSBxdW90ZV9wbHVzKHN0cihlbHQpLCBzYWZlLCBlbmNvZGluZywgZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCA9IHF1b3RlX3ZpYShzdHIoZWx0KSwgc2FmZSwgZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgICAgICAgICAgICAgICAgIGwuYXBwZW5kKGsgKyAnPScgKyBlbHQpCiAgICAgcmV0dXJuICcmJy5qb2luKGwpCiAKQEAgLTg1MiwxMiArODcxLDEyIEBACiAgICAgIiIic3BsaXR0eXBlKCd0eXBlOm9wYXF1ZXN0cmluZycpIC0tPiAndHlwZScsICdvcGFxdWVzdHJpbmcnLiIiIgogICAgIGdsb2JhbCBfdHlwZXByb2cKICAgICBpZiBfdHlwZXByb2cgaXMgTm9uZToKLSAgICAgICAgX3R5cGVwcm9nID0gcmUuY29tcGlsZSgnXihbXi86XSspOicpCisgICAgICAgIF90eXBlcHJvZyA9IHJlLmNvbXBpbGUoJyhbXi86XSspOiguKiknLCByZS5ET1RBTEwpCiAKICAgICBtYXRjaCA9IF90eXBlcHJvZy5tYXRjaCh1cmwpCiAgICAgaWYgbWF0Y2g6Ci0gICAgICAgIHNjaGVtZSA9IG1hdGNoLmdyb3VwKDEpCi0gICAgICAgIHJldHVybiBzY2hlbWUubG93ZXIoKSwgdXJsW2xlbihzY2hlbWUpICsgMTpdCisgICAgICAgIHNjaGVtZSwgZGF0YSA9IG1hdGNoLmdyb3VwcygpCisgICAgICAgIHJldHVybiBzY2hlbWUubG93ZXIoKSwgZGF0YQogICAgIHJldHVybiBOb25lLCB1cmwKIAogX2hvc3Rwcm9nID0gTm9uZQpAQCAtODY1LDM4ICs4ODQsMjUgQEAKICAgICAiIiJzcGxpdGhvc3QoJy8vaG9zdFs6cG9ydF0vcGF0aCcpIC0tPiAnaG9zdFs6cG9ydF0nLCAnL3BhdGgnLiIiIgogICAgIGdsb2JhbCBfaG9zdHByb2cKICAgICBpZiBfaG9zdHByb2cgaXMgTm9uZToKLSAgICAgICAgX2hvc3Rwcm9nID0gcmUuY29tcGlsZSgnXi8vKFteLz9dKikoLiopJCcpCisgICAgICAgIF9ob3N0cHJvZyA9IHJlLmNvbXBpbGUoJy8vKFteLz9dKikoLiopJywgcmUuRE9UQUxMKQogCiAgICAgbWF0Y2ggPSBfaG9zdHByb2cubWF0Y2godXJsKQogICAgIGlmIG1hdGNoOgotICAgICAgICBob3N0X3BvcnQgPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBwYXRoID0gbWF0Y2guZ3JvdXAoMikKLSAgICAgICAgaWYgcGF0aCBhbmQgbm90IHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgICAgICBob3N0X3BvcnQsIHBhdGggPSBtYXRjaC5ncm91cHMoKQorICAgICAgICBpZiBwYXRoIGFuZCBwYXRoWzBdICE9ICcvJzoKICAgICAgICAgICAgIHBhdGggPSAnLycgKyBwYXRoCiAgICAgICAgIHJldHVybiBob3N0X3BvcnQsIHBhdGgKICAgICByZXR1cm4gTm9uZSwgdXJsCiAKLV91c2VycHJvZyA9IE5vbmUKIGRlZiBzcGxpdHVzZXIoaG9zdCk6CiAgICAgIiIic3BsaXR1c2VyKCd1c2VyWzpwYXNzd2RdQGhvc3RbOnBvcnRdJykgLS0+ICd1c2VyWzpwYXNzd2RdJywgJ2hvc3RbOnBvcnRdJy4iIiIKLSAgICBnbG9iYWwgX3VzZXJwcm9nCi0gICAgaWYgX3VzZXJwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF91c2VycHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopQCguKikkJykKKyAgICB1c2VyLCBkZWxpbSwgaG9zdCA9IGhvc3QucnBhcnRpdGlvbignQCcpCisgICAgcmV0dXJuICh1c2VyIGlmIGRlbGltIGVsc2UgTm9uZSksIGhvc3QKIAotICAgIG1hdGNoID0gX3VzZXJwcm9nLm1hdGNoKGhvc3QpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQotICAgIHJldHVybiBOb25lLCBob3N0Ci0KLV9wYXNzd2Rwcm9nID0gTm9uZQogZGVmIHNwbGl0cGFzc3dkKHVzZXIpOgogICAgICIiInNwbGl0cGFzc3dkKCd1c2VyOnBhc3N3ZCcpIC0+ICd1c2VyJywgJ3Bhc3N3ZCcuIiIiCi0gICAgZ2xvYmFsIF9wYXNzd2Rwcm9nCi0gICAgaWYgX3Bhc3N3ZHByb2cgaXMgTm9uZToKLSAgICAgICAgX3Bhc3N3ZHByb2cgPSByZS5jb21waWxlKCdeKFteOl0qKTooLiopJCcscmUuUykKLQotICAgIG1hdGNoID0gX3Bhc3N3ZHByb2cubWF0Y2godXNlcikKLSAgICBpZiBtYXRjaDogcmV0dXJuIG1hdGNoLmdyb3VwKDEsIDIpCi0gICAgcmV0dXJuIHVzZXIsIE5vbmUKKyAgICB1c2VyLCBkZWxpbSwgcGFzc3dkID0gdXNlci5wYXJ0aXRpb24oJzonKQorICAgIHJldHVybiB1c2VyLCAocGFzc3dkIGlmIGRlbGltIGVsc2UgTm9uZSkKIAogIyBzcGxpdHRhZygnL3BhdGgjdGFnJykgLS0+ICcvcGF0aCcsICd0YWcnCiBfcG9ydHByb2cgPSBOb25lCkBAIC05MDQsNyArOTEwLDcgQEAKICAgICAiIiJzcGxpdHBvcnQoJ2hvc3Q6cG9ydCcpIC0tPiAnaG9zdCcsICdwb3J0Jy4iIiIKICAgICBnbG9iYWwgX3BvcnRwcm9nCiAgICAgaWYgX3BvcnRwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF9wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopOihbMC05XSopJCcpCisgICAgICAgIF9wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJyguKik6KFswLTldKikkJywgcmUuRE9UQUxMKQogCiAgICAgbWF0Y2ggPSBfcG9ydHByb2cubWF0Y2goaG9zdCkKICAgICBpZiBtYXRjaDoKQEAgLTkxMyw0NyArOTE5LDM0IEBACiAgICAgICAgICAgICByZXR1cm4gaG9zdCwgcG9ydAogICAgIHJldHVybiBob3N0LCBOb25lCiAKLV9ucG9ydHByb2cgPSBOb25lCiBkZWYgc3BsaXRucG9ydChob3N0LCBkZWZwb3J0PS0xKToKICAgICAiIiJTcGxpdCBob3N0IGFuZCBwb3J0LCByZXR1cm5pbmcgbnVtZXJpYyBwb3J0LgogICAgIFJldHVybiBnaXZlbiBkZWZhdWx0IHBvcnQgaWYgbm8gJzonIGZvdW5kOyBkZWZhdWx0cyB0byAtMS4KICAgICBSZXR1cm4gbnVtZXJpY2FsIHBvcnQgaWYgYSB2YWxpZCBudW1iZXIgYXJlIGZvdW5kIGFmdGVyICc6Jy4KICAgICBSZXR1cm4gTm9uZSBpZiAnOicgYnV0IG5vdCBhIHZhbGlkIG51bWJlci4iIiIKLSAgICBnbG9iYWwgX25wb3J0cHJvZwotICAgIGlmIF9ucG9ydHByb2cgaXMgTm9uZToKLSAgICAgICAgX25wb3J0cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopOiguKikkJykKLQotICAgIG1hdGNoID0gX25wb3J0cHJvZy5tYXRjaChob3N0KQotICAgIGlmIG1hdGNoOgotICAgICAgICBob3N0LCBwb3J0ID0gbWF0Y2guZ3JvdXAoMSwgMikKLSAgICAgICAgaWYgcG9ydDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBucG9ydCA9IGludChwb3J0KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbnBvcnQgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4gaG9zdCwgbnBvcnQKKyAgICBob3N0LCBkZWxpbSwgcG9ydCA9IGhvc3QucnBhcnRpdGlvbignOicpCisgICAgaWYgbm90IGRlbGltOgorICAgICAgICBob3N0ID0gcG9ydAorICAgIGVsaWYgcG9ydDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbnBvcnQgPSBpbnQocG9ydCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBucG9ydCA9IE5vbmUKKyAgICAgICAgcmV0dXJuIGhvc3QsIG5wb3J0CiAgICAgcmV0dXJuIGhvc3QsIGRlZnBvcnQKIAotX3F1ZXJ5cHJvZyA9IE5vbmUKIGRlZiBzcGxpdHF1ZXJ5KHVybCk6CiAgICAgIiIic3BsaXRxdWVyeSgnL3BhdGg/cXVlcnknKSAtLT4gJy9wYXRoJywgJ3F1ZXJ5Jy4iIiIKLSAgICBnbG9iYWwgX3F1ZXJ5cHJvZwotICAgIGlmIF9xdWVyeXByb2cgaXMgTm9uZToKLSAgICAgICAgX3F1ZXJ5cHJvZyA9IHJlLmNvbXBpbGUoJ14oLiopXD8oW14/XSopJCcpCi0KLSAgICBtYXRjaCA9IF9xdWVyeXByb2cubWF0Y2godXJsKQotICAgIGlmIG1hdGNoOiByZXR1cm4gbWF0Y2guZ3JvdXAoMSwgMikKKyAgICBwYXRoLCBkZWxpbSwgcXVlcnkgPSB1cmwucnBhcnRpdGlvbignPycpCisgICAgaWYgZGVsaW06CisgICAgICAgIHJldHVybiBwYXRoLCBxdWVyeQogICAgIHJldHVybiB1cmwsIE5vbmUKIAotX3RhZ3Byb2cgPSBOb25lCiBkZWYgc3BsaXR0YWcodXJsKToKICAgICAiIiJzcGxpdHRhZygnL3BhdGgjdGFnJykgLS0+ICcvcGF0aCcsICd0YWcnLiIiIgotICAgIGdsb2JhbCBfdGFncHJvZwotICAgIGlmIF90YWdwcm9nIGlzIE5vbmU6Ci0gICAgICAgIF90YWdwcm9nID0gcmUuY29tcGlsZSgnXiguKikjKFteI10qKSQnKQotCi0gICAgbWF0Y2ggPSBfdGFncHJvZy5tYXRjaCh1cmwpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQorICAgIHBhdGgsIGRlbGltLCB0YWcgPSB1cmwucnBhcnRpdGlvbignIycpCisgICAgaWYgZGVsaW06CisgICAgICAgIHJldHVybiBwYXRoLCB0YWcKICAgICByZXR1cm4gdXJsLCBOb25lCiAKIGRlZiBzcGxpdGF0dHIodXJsKToKQEAgLTk2MiwxMyArOTU1LDcgQEAKICAgICB3b3JkcyA9IHVybC5zcGxpdCgnOycpCiAgICAgcmV0dXJuIHdvcmRzWzBdLCB3b3Jkc1sxOl0KIAotX3ZhbHVlcHJvZyA9IE5vbmUKIGRlZiBzcGxpdHZhbHVlKGF0dHIpOgogICAgICIiInNwbGl0dmFsdWUoJ2F0dHI9dmFsdWUnKSAtLT4gJ2F0dHInLCAndmFsdWUnLiIiIgotICAgIGdsb2JhbCBfdmFsdWVwcm9nCi0gICAgaWYgX3ZhbHVlcHJvZyBpcyBOb25lOgotICAgICAgICBfdmFsdWVwcm9nID0gcmUuY29tcGlsZSgnXihbXj1dKik9KC4qKSQnKQotCi0gICAgbWF0Y2ggPSBfdmFsdWVwcm9nLm1hdGNoKGF0dHIpCi0gICAgaWYgbWF0Y2g6IHJldHVybiBtYXRjaC5ncm91cCgxLCAyKQotICAgIHJldHVybiBhdHRyLCBOb25lCisgICAgYXR0ciwgZGVsaW0sIHZhbHVlID0gYXR0ci5wYXJ0aXRpb24oJz0nKQorICAgIHJldHVybiBhdHRyLCAodmFsdWUgaWYgZGVsaW0gZWxzZSBOb25lKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IDM3NmJiYTQuLmE3ZmQwMTcgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTEyMCw5ICsxMjAsMTAgQEAKICAgICAnUmVxdWVzdCcsICdPcGVuZXJEaXJlY3RvcicsICdCYXNlSGFuZGxlcicsICdIVFRQRGVmYXVsdEVycm9ySGFuZGxlcicsCiAgICAgJ0hUVFBSZWRpcmVjdEhhbmRsZXInLCAnSFRUUENvb2tpZVByb2Nlc3NvcicsICdQcm94eUhhbmRsZXInLAogICAgICdIVFRQUGFzc3dvcmRNZ3InLCAnSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbScsCi0gICAgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsICdIVFRQQmFzaWNBdXRoSGFuZGxlcicsICdQcm94eUJhc2ljQXV0aEhhbmRsZXInLAotICAgICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywgJ0hUVFBEaWdlc3RBdXRoSGFuZGxlcicsICdQcm94eURpZ2VzdEF1dGhIYW5kbGVyJywKLSAgICAnSFRUUEhhbmRsZXInLCAnRmlsZUhhbmRsZXInLCAnRlRQSGFuZGxlcicsICdDYWNoZUZUUEhhbmRsZXInLCAnRGF0YUhhbmRsZXInLAorICAgICdIVFRQUGFzc3dvcmRNZ3JXaXRoUHJpb3JBdXRoJywgJ0Fic3RyYWN0QmFzaWNBdXRoSGFuZGxlcicsCisgICAgJ0hUVFBCYXNpY0F1dGhIYW5kbGVyJywgJ1Byb3h5QmFzaWNBdXRoSGFuZGxlcicsICdBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyJywKKyAgICAnSFRUUERpZ2VzdEF1dGhIYW5kbGVyJywgJ1Byb3h5RGlnZXN0QXV0aEhhbmRsZXInLCAnSFRUUEhhbmRsZXInLAorICAgICdGaWxlSGFuZGxlcicsICdGVFBIYW5kbGVyJywgJ0NhY2hlRlRQSGFuZGxlcicsICdEYXRhSGFuZGxlcicsCiAgICAgJ1Vua25vd25IYW5kbGVyJywgJ0hUVFBFcnJvclByb2Nlc3NvcicsCiAgICAgIyBGdW5jdGlvbnMKICAgICAndXJsb3BlbicsICdpbnN0YWxsX29wZW5lcicsICdidWlsZF9vcGVuZXInLApAQCAtODM2LDYgKzgzNywzNyBAQAogICAgICAgICByZXR1cm4gSFRUUFBhc3N3b3JkTWdyLmZpbmRfdXNlcl9wYXNzd29yZChzZWxmLCBOb25lLCBhdXRodXJpKQogCiAKK2NsYXNzIEhUVFBQYXNzd29yZE1ncldpdGhQcmlvckF1dGgoSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0ge30KKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgYWRkX3Bhc3N3b3JkKHNlbGYsIHJlYWxtLCB1cmksIHVzZXIsIHBhc3N3ZCwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSk6CisgICAgICAgIHNlbGYudXBkYXRlX2F1dGhlbnRpY2F0ZWQodXJpLCBpc19hdXRoZW50aWNhdGVkKQorICAgICAgICAjIEFkZCBhIGRlZmF1bHQgZm9yIHByaW9yIGF1dGggcmVxdWVzdHMKKyAgICAgICAgaWYgcmVhbG0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdXBlcigpLmFkZF9wYXNzd29yZChOb25lLCB1cmksIHVzZXIsIHBhc3N3ZCkKKyAgICAgICAgc3VwZXIoKS5hZGRfcGFzc3dvcmQocmVhbG0sIHVyaSwgdXNlciwgcGFzc3dkKQorCisgICAgZGVmIHVwZGF0ZV9hdXRoZW50aWNhdGVkKHNlbGYsIHVyaSwgaXNfYXV0aGVudGljYXRlZD1GYWxzZSk6CisgICAgICAgICMgdXJpIGNvdWxkIGJlIGEgc2luZ2xlIFVSSSBvciBhIHNlcXVlbmNlCisgICAgICAgIGlmIGlzaW5zdGFuY2UodXJpLCBzdHIpOgorICAgICAgICAgICAgdXJpID0gW3VyaV0KKworICAgICAgICBmb3IgZGVmYXVsdF9wb3J0IGluIFRydWUsIEZhbHNlOgorICAgICAgICAgICAgZm9yIHUgaW4gdXJpOgorICAgICAgICAgICAgICAgIHJlZHVjZWRfdXJpID0gc2VsZi5yZWR1Y2VfdXJpKHUsIGRlZmF1bHRfcG9ydCkKKyAgICAgICAgICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWRbcmVkdWNlZF91cmldID0gaXNfYXV0aGVudGljYXRlZAorCisgICAgZGVmIGlzX2F1dGhlbnRpY2F0ZWQoc2VsZiwgYXV0aHVyaSk6CisgICAgICAgIGZvciBkZWZhdWx0X3BvcnQgaW4gVHJ1ZSwgRmFsc2U6CisgICAgICAgICAgICByZWR1Y2VkX2F1dGh1cmkgPSBzZWxmLnJlZHVjZV91cmkoYXV0aHVyaSwgZGVmYXVsdF9wb3J0KQorICAgICAgICAgICAgZm9yIHVyaSBpbiBzZWxmLmF1dGhlbnRpY2F0ZWQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5pc19zdWJ1cmkodXJpLCByZWR1Y2VkX2F1dGh1cmkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5hdXRoZW50aWNhdGVkW3VyaV0KKworCiBjbGFzcyBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXI6CiAKICAgICAjIFhYWCB0aGlzIGFsbG93cyBmb3IgbXVsdGlwbGUgYXV0aC1zY2hlbWVzLCBidXQgd2lsbCBzdHVwaWRseSBwaWNrCkBAIC04OTAsNiArOTIyLDMxIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIGh0dHBfcmVxdWVzdChzZWxmLCByZXEpOgorICAgICAgICBpZiAobm90IGhhc2F0dHIoc2VsZi5wYXNzd2QsICdpc19hdXRoZW50aWNhdGVkJykgb3IKKyAgICAgICAgICAgbm90IHNlbGYucGFzc3dkLmlzX2F1dGhlbnRpY2F0ZWQocmVxLmZ1bGxfdXJsKSk6CisgICAgICAgICAgICByZXR1cm4gcmVxCisKKyAgICAgICAgaWYgbm90IHJlcS5oYXNfaGVhZGVyKCdBdXRob3JpemF0aW9uJyk6CisgICAgICAgICAgICB1c2VyLCBwYXNzd2QgPSBzZWxmLnBhc3N3ZC5maW5kX3VzZXJfcGFzc3dvcmQoTm9uZSwgcmVxLmZ1bGxfdXJsKQorICAgICAgICAgICAgY3JlZGVudGlhbHMgPSAnezB9OnsxfScuZm9ybWF0KHVzZXIsIHBhc3N3ZCkuZW5jb2RlKCkKKyAgICAgICAgICAgIGF1dGhfc3RyID0gYmFzZTY0LnN0YW5kYXJkX2I2NGVuY29kZShjcmVkZW50aWFscykuZGVjb2RlKCkKKyAgICAgICAgICAgIHJlcS5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcignQXV0aG9yaXphdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIHt9Jy5mb3JtYXQoYXV0aF9zdHIuc3RyaXAoKSkpCisgICAgICAgIHJldHVybiByZXEKKworICAgIGRlZiBodHRwX3Jlc3BvbnNlKHNlbGYsIHJlcSwgcmVzcG9uc2UpOgorICAgICAgICBpZiBoYXNhdHRyKHNlbGYucGFzc3dkLCAnaXNfYXV0aGVudGljYXRlZCcpOgorICAgICAgICAgICAgaWYgMjAwIDw9IHJlc3BvbnNlLmNvZGUgPCAzMDA6CisgICAgICAgICAgICAgICAgc2VsZi5wYXNzd2QudXBkYXRlX2F1dGhlbnRpY2F0ZWQocmVxLmZ1bGxfdXJsLCBUcnVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnBhc3N3ZC51cGRhdGVfYXV0aGVudGljYXRlZChyZXEuZnVsbF91cmwsIEZhbHNlKQorICAgICAgICByZXR1cm4gcmVzcG9uc2UKKworICAgIGh0dHBzX3JlcXVlc3QgPSBodHRwX3JlcXVlc3QKKyAgICBodHRwc19yZXNwb25zZSA9IGh0dHBfcmVzcG9uc2UKKworCiAKIGNsYXNzIEhUVFBCYXNpY0F1dGhIYW5kbGVyKEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciwgQmFzZUhhbmRsZXIpOgogCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5IGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQppbmRleCAxZDdiNzUxLi40ZmJiMGNiIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5wYXRoID09ICIqIiBvciBmaWxlbmFtZS5zdGFydHN3aXRoKHNlbGYucGF0aCkKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuYWxsb3dhbmNlIGFuZCAiQWxsb3ciIG9yICJEaXNhbGxvdyIpICsgIjogIiArIHNlbGYucGF0aAorICAgICAgICByZXR1cm4gKCJBbGxvdyIgaWYgc2VsZi5hbGxvd2FuY2UgZWxzZSAiRGlzYWxsb3ciKSArICI6ICIgKyBzZWxmLnBhdGgKIAogCiBjbGFzcyBFbnRyeToKZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggMTA2MWJmZi4uYTY2NDNlZCAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTEzOSwxMCArMTM5LDggQEAKICAgICAgICAgaWYgYnl0ZXNfbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBsZW4oYnl0ZXNfbGUpICE9IDE2OgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2J5dGVzX2xlIGlzIG5vdCBhIDE2LWNoYXIgc3RyaW5nJykKLSAgICAgICAgICAgIGJ5dGVzID0gKGJ5dGVzXyhyZXZlcnNlZChieXRlc19sZVswOjRdKSkgKwotICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfKHJldmVyc2VkKGJ5dGVzX2xlWzQ6Nl0pKSArCi0gICAgICAgICAgICAgICAgICAgICBieXRlc18ocmV2ZXJzZWQoYnl0ZXNfbGVbNjo4XSkpICsKLSAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2xlWzg6XSkKKyAgICAgICAgICAgIGJ5dGVzID0gKGJ5dGVzX2xlWzQtMTo6LTFdICsgYnl0ZXNfbGVbNi0xOjQtMTotMV0gKworICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfbGVbOC0xOjYtMTotMV0gKyBieXRlc19sZVs4Ol0pCiAgICAgICAgIGlmIGJ5dGVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgbGVuKGJ5dGVzKSAhPSAxNjoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdieXRlcyBpcyBub3QgYSAxNi1jaGFyIHN0cmluZycpCkBAIC0xODcsMTEgKzE4NSw2IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbnQgPT0gb3RoZXIuaW50CiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIFVVSUQpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW50ICE9IG90aGVyLmludAotICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLQogICAgICMgUS4gV2hhdCdzIHRoZSB2YWx1ZSBvZiBiZWluZyBhYmxlIHRvIHNvcnQgVVVJRHM/CiAgICAgIyBBLiBVc2UgdGhlbSBhcyBrZXlzIGluIGEgQi1UcmVlIG9yIHNpbWlsYXIgbWFwcGluZy4KIApAQCAtMjIyLDcgKzIxNSw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmludAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1VVSUQoJXIpJyAlIHN0cihzZWxmKQorICAgICAgICByZXR1cm4gJyVzKCVyKScgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHN0cihzZWxmKSkKIAogICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVVVJRCBvYmplY3RzIGFyZSBpbW11dGFibGUnKQpAQCAtMjM0LDE3ICsyMjcsMTIgQEAKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBieXRlcyhzZWxmKToKLSAgICAgICAgYnl0ZXMgPSBieXRlYXJyYXkoKQotICAgICAgICBmb3Igc2hpZnQgaW4gcmFuZ2UoMCwgMTI4LCA4KToKLSAgICAgICAgICAgIGJ5dGVzLmluc2VydCgwLCAoc2VsZi5pbnQgPj4gc2hpZnQpICYgMHhmZikKLSAgICAgICAgcmV0dXJuIGJ5dGVzXyhieXRlcykKKyAgICAgICAgcmV0dXJuIHNlbGYuaW50LnRvX2J5dGVzKDE2LCAnYmlnJykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBieXRlc19sZShzZWxmKToKICAgICAgICAgYnl0ZXMgPSBzZWxmLmJ5dGVzCi0gICAgICAgIHJldHVybiAoYnl0ZXNfKHJldmVyc2VkKGJ5dGVzWzA6NF0pKSArCi0gICAgICAgICAgICAgICAgYnl0ZXNfKHJldmVyc2VkKGJ5dGVzWzQ6Nl0pKSArCi0gICAgICAgICAgICAgICAgYnl0ZXNfKHJldmVyc2VkKGJ5dGVzWzY6OF0pKSArCisgICAgICAgIHJldHVybiAoYnl0ZXNbNC0xOjotMV0gKyBieXRlc1s2LTE6NC0xOi0xXSArIGJ5dGVzWzgtMTo2LTE6LTFdICsKICAgICAgICAgICAgICAgICBieXRlc1s4Ol0pCiAKICAgICBAcHJvcGVydHkKQEAgLTMxMSwzMyArMjk5LDM4IEBACiAgICAgICAgIGlmIHNlbGYudmFyaWFudCA9PSBSRkNfNDEyMjoKICAgICAgICAgICAgIHJldHVybiBpbnQoKHNlbGYuaW50ID4+IDc2KSAmIDB4ZikKIAotZGVmIF9wb3Blbihjb21tYW5kLCBhcmdzKToKLSAgICBpbXBvcnQgb3MsIHNodXRpbAorZGVmIF9wb3Blbihjb21tYW5kLCAqYXJncyk6CisgICAgaW1wb3J0IG9zLCBzaHV0aWwsIHN1YnByb2Nlc3MKICAgICBleGVjdXRhYmxlID0gc2h1dGlsLndoaWNoKGNvbW1hbmQpCiAgICAgaWYgZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICBwYXRoID0gb3MucGF0aHNlcC5qb2luKCgnL3NiaW4nLCAnL3Vzci9zYmluJykpCiAgICAgICAgIGV4ZWN1dGFibGUgPSBzaHV0aWwud2hpY2goY29tbWFuZCwgcGF0aD1wYXRoKQogICAgICAgICBpZiBleGVjdXRhYmxlIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICMgTENfQUxMIHRvIGVuc3VyZSBFbmdsaXNoIG91dHB1dCwgMj4vZGV2L251bGwgdG8gcHJldmVudCBvdXRwdXQgb24KLSAgICAjIHN0ZGVyciAoTm90ZTogd2UgZG9uJ3QgaGF2ZSBhbiBleGFtcGxlIHdoZXJlIHRoZSB3b3JkcyB3ZSBzZWFyY2ggZm9yCi0gICAgIyBhcmUgYWN0dWFsbHkgbG9jYWxpemVkLCBidXQgaW4gdGhlb3J5IHNvbWUgc3lzdGVtIGNvdWxkIGRvIHNvLikKLSAgICBjbWQgPSAnTENfQUxMPUMgJXMgJXMgMj4vZGV2L251bGwnICUgKGV4ZWN1dGFibGUsIGFyZ3MpCi0gICAgcmV0dXJuIG9zLnBvcGVuKGNtZCkKKyAgICAjIExDX0FMTD1DIHRvIGVuc3VyZSBFbmdsaXNoIG91dHB1dCwgc3RkZXJyPURFVk5VTEwgdG8gcHJldmVudCBvdXRwdXQKKyAgICAjIG9uIHN0ZGVyciAoTm90ZTogd2UgZG9uJ3QgaGF2ZSBhbiBleGFtcGxlIHdoZXJlIHRoZSB3b3JkcyB3ZSBzZWFyY2gKKyAgICAjIGZvciBhcmUgYWN0dWFsbHkgbG9jYWxpemVkLCBidXQgaW4gdGhlb3J5IHNvbWUgc3lzdGVtIGNvdWxkIGRvIHNvLikKKyAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCisgICAgZW52WydMQ19BTEwnXSA9ICdDJworICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKChleGVjdXRhYmxlLCkgKyBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgIHJldHVybiBwcm9jCiAKIGRlZiBfZmluZF9tYWMoY29tbWFuZCwgYXJncywgaHdfaWRlbnRpZmllcnMsIGdldF9pbmRleCk6CiAgICAgdHJ5OgotICAgICAgICBwaXBlID0gX3BvcGVuKGNvbW1hbmQsIGFyZ3MpCi0gICAgICAgIGlmIG5vdCBwaXBlOgorICAgICAgICBwcm9jID0gX3BvcGVuKGNvbW1hbmQsICphcmdzLnNwbGl0KCkpCisgICAgICAgIGlmIG5vdCBwcm9jOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHdpdGggcGlwZToKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHBpcGU6CisgICAgICAgIHdpdGggcHJvYzoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHByb2Muc3Rkb3V0OgogICAgICAgICAgICAgICAgIHdvcmRzID0gbGluZS5sb3dlcigpLnJzdHJpcCgpLnNwbGl0KCkKICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4od29yZHMpKToKICAgICAgICAgICAgICAgICAgICAgaWYgd29yZHNbaV0gaW4gaHdfaWRlbnRpZmllcnM6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmRzW2dldF9pbmRleChpKV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWMgPSBpbnQod29yZC5yZXBsYWNlKCc6JywgJycpLCAxNikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWMgPSBpbnQod29yZC5yZXBsYWNlKGInOicsIGInJyksIDE2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hYwogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKQEAgLTM1NCwxMCArMzQ3LDE3IEBACiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBpZmNvbmZpZy4iIiIKICAgICAjIFRoaXMgd29ya3Mgb24gTGludXggKCcnIG9yICctYScpLCBUcnU2NCAoJy1hdicpLCBidXQgbm90IGFsbCBVbml4ZXMuCiAgICAgZm9yIGFyZ3MgaW4gKCcnLCAnLWEnLCAnLWF2Jyk6Ci0gICAgICAgIG1hYyA9IF9maW5kX21hYygnaWZjb25maWcnLCBhcmdzLCBbJ2h3YWRkcicsICdldGhlciddLCBsYW1iZGEgaTogaSsxKQorICAgICAgICBtYWMgPSBfZmluZF9tYWMoJ2lmY29uZmlnJywgYXJncywgW2InaHdhZGRyJywgYidldGhlciddLCBsYW1iZGEgaTogaSsxKQogICAgICAgICBpZiBtYWM6CiAgICAgICAgICAgICByZXR1cm4gbWFjCiAKK2RlZiBfaXBfZ2V0bm9kZSgpOgorICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgaXAuIiIiCisgICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4IHdpdGggaXByb3V0ZTIuCisgICAgbWFjID0gX2ZpbmRfbWFjKCdpcCcsICdsaW5rIGxpc3QnLCBbYidsaW5rL2V0aGVyJ10sIGxhbWJkYSBpOiBpKzEpCisgICAgaWYgbWFjOgorICAgICAgICByZXR1cm4gbWFjCisKIGRlZiBfYXJwX2dldG5vZGUoKToKICAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGFycC4iIiIKICAgICBpbXBvcnQgb3MsIHNvY2tldApAQCAtMzY3LDMyICszNjcsMzIgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICMgVHJ5IGdldHRpbmcgdGhlIE1BQyBhZGRyIGZyb20gYXJwIGJhc2VkIG9uIG91ciBJUCBhZGRyZXNzIChTb2xhcmlzKS4KLSAgICByZXR1cm4gX2ZpbmRfbWFjKCdhcnAnLCAnLWFuJywgW2lwX2FkZHJdLCBsYW1iZGEgaTogLTEpCisgICAgcmV0dXJuIF9maW5kX21hYygnYXJwJywgJy1hbicsIFtvcy5mc2VuY29kZShpcF9hZGRyKV0sIGxhbWJkYSBpOiAtMSkKIAogZGVmIF9sYW5zY2FuX2dldG5vZGUoKToKICAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGxhbnNjYW4uIiIiCiAgICAgIyBUaGlzIG1pZ2h0IHdvcmsgb24gSFAtVVguCi0gICAgcmV0dXJuIF9maW5kX21hYygnbGFuc2NhbicsICctYWknLCBbJ2xhbjAnXSwgbGFtYmRhIGk6IDApCisgICAgcmV0dXJuIF9maW5kX21hYygnbGFuc2NhbicsICctYWknLCBbYidsYW4wJ10sIGxhbWJkYSBpOiAwKQogCiBkZWYgX25ldHN0YXRfZ2V0bm9kZSgpOgogICAgICIiIkdldCB0aGUgaGFyZHdhcmUgYWRkcmVzcyBvbiBVbml4IGJ5IHJ1bm5pbmcgbmV0c3RhdC4iIiIKICAgICAjIFRoaXMgbWlnaHQgd29yayBvbiBBSVgsIFRydTY0IFVOSVggYW5kIHByZXN1bWFibHkgb24gSVJJWC4KICAgICB0cnk6Ci0gICAgICAgIHBpcGUgPSBfcG9wZW4oJ25ldHN0YXQnLCAnLWlhJykKLSAgICAgICAgaWYgbm90IHBpcGU6CisgICAgICAgIHByb2MgPSBfcG9wZW4oJ25ldHN0YXQnLCAnLWlhJykKKyAgICAgICAgaWYgbm90IHByb2M6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgd2l0aCBwaXBlOgotICAgICAgICAgICAgd29yZHMgPSBwaXBlLnJlYWRsaW5lKCkucnN0cmlwKCkuc3BsaXQoKQorICAgICAgICB3aXRoIHByb2M6CisgICAgICAgICAgICB3b3JkcyA9IHByb2Muc3Rkb3V0LnJlYWRsaW5lKCkucnN0cmlwKCkuc3BsaXQoKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGkgPSB3b3Jkcy5pbmRleCgnQWRkcmVzcycpCisgICAgICAgICAgICAgICAgaSA9IHdvcmRzLmluZGV4KGInQWRkcmVzcycpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGZvciBsaW5lIGluIHBpcGU6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBwcm9jLnN0ZG91dDoKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHdvcmRzID0gbGluZS5yc3RyaXAoKS5zcGxpdCgpCiAgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tpXQotICAgICAgICAgICAgICAgICAgICBpZiBsZW4od29yZCkgPT0gMTcgYW5kIHdvcmQuY291bnQoJzonKSA9PSA1OgotICAgICAgICAgICAgICAgICAgICAgICAgbWFjID0gaW50KHdvcmQucmVwbGFjZSgnOicsICcnKSwgMTYpCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbih3b3JkKSA9PSAxNyBhbmQgd29yZC5jb3VudChiJzonKSA9PSA1OgorICAgICAgICAgICAgICAgICAgICAgICAgbWFjID0gaW50KHdvcmQucmVwbGFjZShiJzonLCBiJycpLCAxNikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1hYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFjCiAgICAgICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKQEAgLTQ0Nyw5ICs0NDcsMTAgQEAKICAgICAgICAgaWYgd2luMzJ3bmV0Lk5ldGJpb3MobmNiKSAhPSAwOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgc3RhdHVzLl91bnBhY2soKQotICAgICAgICBieXRlcyA9IHN0YXR1cy5hZGFwdGVyX2FkZHJlc3MKLSAgICAgICAgcmV0dXJuICgoYnl0ZXNbMF08PDQwKSArIChieXRlc1sxXTw8MzIpICsgKGJ5dGVzWzJdPDwyNCkgKwotICAgICAgICAgICAgICAgIChieXRlc1szXTw8MTYpICsgKGJ5dGVzWzRdPDw4KSArIGJ5dGVzWzVdKQorICAgICAgICBieXRlcyA9IHN0YXR1cy5hZGFwdGVyX2FkZHJlc3NbOjZdCisgICAgICAgIGlmIGxlbihieXRlcykgIT0gNjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldHVybiBpbnQuZnJvbV9ieXRlcyhieXRlcywgJ2JpZycpCiAKICMgVGhhbmtzIHRvIFRob21hcyBIZWxsZXIgZm9yIGN0eXBlcyBhbmQgZm9yIGhpcyBoZWxwIHdpdGggaXRzIHVzZSBoZXJlLgogCkBAIC00NTgsMTMgKzQ1OSwxNyBAQAogX3V1aWRfZ2VuZXJhdGVfcmFuZG9tID0gX3V1aWRfZ2VuZXJhdGVfdGltZSA9IF9VdWlkQ3JlYXRlID0gTm9uZQogdHJ5OgogICAgIGltcG9ydCBjdHlwZXMsIGN0eXBlcy51dGlsCisgICAgaW1wb3J0IHN5cwogCiAgICAgIyBUaGUgdXVpZF9nZW5lcmF0ZV8qIHJvdXRpbmVzIGFyZSBwcm92aWRlZCBieSBsaWJ1dWlkIG9uIGF0IGxlYXN0CiAgICAgIyBMaW51eCBhbmQgRnJlZUJTRCwgYW5kIHByb3ZpZGVkIGJ5IGxpYmMgb24gTWFjIE9TIFguCi0gICAgZm9yIGxpYm5hbWUgaW4gWyd1dWlkJywgJ2MnXToKKyAgICBfbGlibmFtZXMgPSBbJ3V1aWQnXQorICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgIF9saWJuYW1lcy5hcHBlbmQoJ2MnKQorICAgIGZvciBsaWJuYW1lIGluIF9saWJuYW1lczoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbGliID0gY3R5cGVzLkNETEwoY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KGxpYm5hbWUpKQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiBoYXNhdHRyKGxpYiwgJ3V1aWRfZ2VuZXJhdGVfcmFuZG9tJyk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV9yYW5kb20gPSBsaWIudXVpZF9nZW5lcmF0ZV9yYW5kb20KQEAgLTQ3Miw2ICs0NzcsNyBAQAogICAgICAgICAgICAgX3V1aWRfZ2VuZXJhdGVfdGltZSA9IGxpYi51dWlkX2dlbmVyYXRlX3RpbWUKICAgICAgICAgICAgIGlmIF91dWlkX2dlbmVyYXRlX3JhbmRvbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBicmVhayAgIyBmb3VuZCBldmVyeXRoaW5nIHdlIHdlcmUgbG9va2luZyBmb3IKKyAgICBkZWwgX2xpYm5hbWVzCiAKICAgICAjIFRoZSB1dWlkX2dlbmVyYXRlXyogZnVuY3Rpb25zIGFyZSBicm9rZW4gb24gTWFjT1MgWCAxMC41LCBhcyBub3RlZAogICAgICMgaW4gaXNzdWUgIzg2MjEgdGhlIGZ1bmN0aW9uIGdlbmVyYXRlcyB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMKQEAgLTQ4MCw3ICs0ODYsNiBAQAogICAgICMKICAgICAjIEFzc3VtZSB0aGF0IHRoZSB1dWlkX2dlbmVyYXRlIGZ1bmN0aW9ucyBhcmUgYnJva2VuIGZyb20gMTAuNSBvbndhcmQsCiAgICAgIyB0aGUgdGVzdCBjYW4gYmUgYWRqdXN0ZWQgd2hlbiBhIGxhdGVyIHZlcnNpb24gaXMgZml4ZWQuCi0gICAgaW1wb3J0IHN5cwogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPj0gOToKQEAgLTUxOCw3ICs1MjMsNyBAQAogZGVmIF9yYW5kb21fZ2V0bm9kZSgpOgogICAgICIiIkdldCBhIHJhbmRvbSBub2RlIElELCB3aXRoIGVpZ2h0aCBiaXQgc2V0IGFzIHN1Z2dlc3RlZCBieSBSRkMgNDEyMi4iIiIKICAgICBpbXBvcnQgcmFuZG9tCi0gICAgcmV0dXJuIHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTw8NDgpIHwgMHgwMTAwMDAwMDAwMDAKKyAgICByZXR1cm4gcmFuZG9tLmdldHJhbmRiaXRzKDQ4KSB8IDB4MDEwMDAwMDAwMDAwCiAKIF9ub2RlID0gTm9uZQogCkBAIC01MzksOCArNTQ0LDggQEAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgZ2V0dGVycyA9IFtfd2luZGxsX2dldG5vZGUsIF9uZXRiaW9zX2dldG5vZGUsIF9pcGNvbmZpZ19nZXRub2RlXQogICAgIGVsc2U6Ci0gICAgICAgIGdldHRlcnMgPSBbX3VuaXhkbGxfZ2V0bm9kZSwgX2lmY29uZmlnX2dldG5vZGUsIF9hcnBfZ2V0bm9kZSwKLSAgICAgICAgICAgICAgICAgICBfbGFuc2Nhbl9nZXRub2RlLCBfbmV0c3RhdF9nZXRub2RlXQorICAgICAgICBnZXR0ZXJzID0gW191bml4ZGxsX2dldG5vZGUsIF9pZmNvbmZpZ19nZXRub2RlLCBfaXBfZ2V0bm9kZSwKKyAgICAgICAgICAgICAgICAgICBfYXJwX2dldG5vZGUsIF9sYW5zY2FuX2dldG5vZGUsIF9uZXRzdGF0X2dldG5vZGVdCiAKICAgICBmb3IgZ2V0dGVyIGluIGdldHRlcnMgKyBbX3JhbmRvbV9nZXRub2RlXToKICAgICAgICAgdHJ5OgpAQCAtNTc2LDcgKzU4MSw3IEBACiAgICAgX2xhc3RfdGltZXN0YW1wID0gdGltZXN0YW1wCiAgICAgaWYgY2xvY2tfc2VxIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydCByYW5kb20KLSAgICAgICAgY2xvY2tfc2VxID0gcmFuZG9tLnJhbmRyYW5nZSgxPDwxNCkgIyBpbnN0ZWFkIG9mIHN0YWJsZSBzdG9yYWdlCisgICAgICAgIGNsb2NrX3NlcSA9IHJhbmRvbS5nZXRyYW5kYml0cygxNCkgIyBpbnN0ZWFkIG9mIHN0YWJsZSBzdG9yYWdlCiAgICAgdGltZV9sb3cgPSB0aW1lc3RhbXAgJiAweGZmZmZmZmZmCiAgICAgdGltZV9taWQgPSAodGltZXN0YW1wID4+IDMyKSAmIDB4ZmZmZgogICAgIHRpbWVfaGlfdmVyc2lvbiA9ICh0aW1lc3RhbXAgPj4gNDgpICYgMHgwZmZmCkBAIC02MDYsMTAgKzYxMSw5IEBACiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgcmV0dXJuIFVVSUQoYnl0ZXM9b3MudXJhbmRvbSgxNiksIHZlcnNpb249NCkKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgaW1wb3J0IHJhbmRvbQotICAgICAgICBieXRlcyA9IGJ5dGVzXyhyYW5kb20ucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMTYpKQotICAgICAgICByZXR1cm4gVVVJRChieXRlcz1ieXRlcywgdmVyc2lvbj00KQorICAgICAgICByZXR1cm4gVVVJRChpbnQ9cmFuZG9tLmdldHJhbmRiaXRzKDEyOCksIHZlcnNpb249NCkKIAogZGVmIHV1aWQ1KG5hbWVzcGFjZSwgbmFtZSk6CiAgICAgIiIiR2VuZXJhdGUgYSBVVUlEIGZyb20gdGhlIFNIQS0xIGhhc2ggb2YgYSBuYW1lc3BhY2UgVVVJRCBhbmQgYSBuYW1lLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3dhcm5pbmdzLnB5IGIvTGliL3dhcm5pbmdzLnB5CmluZGV4IDcwZDA4N2UuLjFkNGZiMjAgMTAwNjQ0Ci0tLSBhL0xpYi93YXJuaW5ncy5weQorKysgYi9MaWIvd2FybmluZ3MucHkKQEAgLTE2MCw2ICsxNjAsMjAgQEAKICAgICByZXR1cm4gY2F0CiAKIAorZGVmIF9pc19pbnRlcm5hbF9mcmFtZShmcmFtZSk6CisgICAgIiIiU2lnbmFsIHdoZXRoZXIgdGhlIGZyYW1lIGlzIGFuIGludGVybmFsIENQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsLiIiIgorICAgIGZpbGVuYW1lID0gZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCisgICAgcmV0dXJuICdpbXBvcnRsaWInIGluIGZpbGVuYW1lIGFuZCAnX2Jvb3RzdHJhcCcgaW4gZmlsZW5hbWUKKworCitkZWYgX25leHRfZXh0ZXJuYWxfZnJhbWUoZnJhbWUpOgorICAgICIiIkZpbmQgdGhlIG5leHQgZnJhbWUgdGhhdCBkb2Vzbid0IGludm9sdmUgQ1B5dGhvbiBpbnRlcm5hbHMuIiIiCisgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKKyAgICB3aGlsZSBmcmFtZSBpcyBub3QgTm9uZSBhbmQgX2lzX2ludGVybmFsX2ZyYW1lKGZyYW1lKToKKyAgICAgICAgZnJhbWUgPSBmcmFtZS5mX2JhY2sKKyAgICByZXR1cm4gZnJhbWUKKworCiAjIENvZGUgdHlwaWNhbGx5IHJlcGxhY2VkIGJ5IF93YXJuaW5ncwogZGVmIHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xKToKICAgICAiIiJJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uIiIiCkBAIC0xNjksMTYgKzE4MywyOCBAQAogICAgICMgQ2hlY2sgY2F0ZWdvcnkgYXJndW1lbnQKICAgICBpZiBjYXRlZ29yeSBpcyBOb25lOgogICAgICAgICBjYXRlZ29yeSA9IFVzZXJXYXJuaW5nCi0gICAgYXNzZXJ0IGlzc3ViY2xhc3MoY2F0ZWdvcnksIFdhcm5pbmcpCisgICAgaWYgbm90IChpc2luc3RhbmNlKGNhdGVnb3J5LCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjYXRlZ29yeSwgV2FybmluZykpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhdGVnb3J5IG11c3QgYmUgYSBXYXJuaW5nIHN1YmNsYXNzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90ICd7OnN9JyIuZm9ybWF0KHR5cGUoY2F0ZWdvcnkpLl9fbmFtZV9fKSkKICAgICAjIEdldCBjb250ZXh0IGluZm9ybWF0aW9uCiAgICAgdHJ5OgotICAgICAgICBjYWxsZXIgPSBzeXMuX2dldGZyYW1lKHN0YWNrbGV2ZWwpCisgICAgICAgIGlmIHN0YWNrbGV2ZWwgPD0gMSBvciBfaXNfaW50ZXJuYWxfZnJhbWUoc3lzLl9nZXRmcmFtZSgxKSk6CisgICAgICAgICAgICAjIElmIGZyYW1lIGlzIHRvbyBzbWFsbCB0byBjYXJlIG9yIGlmIHRoZSB3YXJuaW5nIG9yaWdpbmF0ZWQgaW4KKyAgICAgICAgICAgICMgaW50ZXJuYWwgY29kZSwgdGhlbiBkbyBub3QgdHJ5IHRvIGhpZGUgYW55IGZyYW1lcy4KKyAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZShzdGFja2xldmVsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCisgICAgICAgICAgICAjIExvb2sgZm9yIG9uZSBmcmFtZSBsZXNzIHNpbmNlIHRoZSBhYm92ZSBsaW5lIHN0YXJ0cyB1cyBvZmYuCisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZShzdGFja2xldmVsLTEpOgorICAgICAgICAgICAgICAgIGZyYW1lID0gX25leHRfZXh0ZXJuYWxfZnJhbWUoZnJhbWUpCisgICAgICAgICAgICAgICAgaWYgZnJhbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBnbG9iYWxzID0gc3lzLl9fZGljdF9fCiAgICAgICAgIGxpbmVubyA9IDEKICAgICBlbHNlOgotICAgICAgICBnbG9iYWxzID0gY2FsbGVyLmZfZ2xvYmFscwotICAgICAgICBsaW5lbm8gPSBjYWxsZXIuZl9saW5lbm8KKyAgICAgICAgZ2xvYmFscyA9IGZyYW1lLmZfZ2xvYmFscworICAgICAgICBsaW5lbm8gPSBmcmFtZS5mX2xpbmVubwogICAgIGlmICdfX25hbWVfXycgaW4gZ2xvYmFsczoKICAgICAgICAgbW9kdWxlID0gZ2xvYmFsc1snX19uYW1lX18nXQogICAgIGVsc2U6CkBAIC0xODYsNyArMjEyLDcgQEAKICAgICBmaWxlbmFtZSA9IGdsb2JhbHMuZ2V0KCdfX2ZpbGVfXycpCiAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgIGZubCA9IGZpbGVuYW1lLmxvd2VyKCkKLSAgICAgICAgaWYgZm5sLmVuZHN3aXRoKCgiLnB5YyIsICIucHlvIikpOgorICAgICAgICBpZiBmbmwuZW5kc3dpdGgoIi5weWMiKToKICAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi0xXQogICAgIGVsc2U6CiAgICAgICAgIGlmIG1vZHVsZSA9PSAiX19tYWluX18iOgpAQCAtMzcyLDcgKzM5OCw2IEBACiAgICAgZGVmYXVsdGFjdGlvbiA9IF9kZWZhdWx0YWN0aW9uCiAgICAgb25jZXJlZ2lzdHJ5ID0gX29uY2VyZWdpc3RyeQogICAgIF93YXJuaW5nc19kZWZhdWx0cyA9IFRydWUKLQogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZpbHRlcnMgPSBbXQogICAgIGRlZmF1bHRhY3Rpb24gPSAiZGVmYXVsdCIKZGlmZiAtLWdpdCBhL0xpYi93ZWFrcmVmLnB5IGIvTGliL3dlYWtyZWYucHkKaW5kZXggMTJiZjk3NS4uYTRlY2FkYyAxMDA2NDQKLS0tIGEvTGliL3dlYWtyZWYucHkKKysrIGIvTGliL3dlYWtyZWYucHkKQEAgLTE0NCw3ICsxNDQsNyBAQAogICAgICAgICByZXR1cm4gbyBpcyBub3QgTm9uZQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxXZWFrVmFsdWVEaWN0aW9uYXJ5IGF0ICVzPiIgJSBpZChzZWxmKQorICAgICAgICByZXR1cm4gIjwlcyBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaWQoc2VsZikpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CkBAIC0zNTksNyArMzU5LDcgQEAKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpIC0gbGVuKHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPFdlYWtLZXlEaWN0aW9uYXJ5IGF0ICVzPiIgJSBpZChzZWxmKQorICAgICAgICByZXR1cm4gIjwlcyBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaWQoc2VsZikpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgIHNlbGYuZGF0YVtyZWYoa2V5LCBzZWxmLl9yZW1vdmUpXSA9IHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi9oZWFkZXJzLnB5IGIvTGliL3dzZ2lyZWYvaGVhZGVycy5weQppbmRleCBkOTM5NjI4Li43ZTY3MGIzIDEwMDY0NAotLS0gYS9MaWIvd3NnaXJlZi9oZWFkZXJzLnB5CisrKyBiL0xpYi93c2dpcmVmL2hlYWRlcnMucHkKQEAgLTI2LDEwICsyNiwxMCBAQAogCiAKIGNsYXNzIEhlYWRlcnM6Ci0KICAgICAiIiJNYW5hZ2UgYSBjb2xsZWN0aW9uIG9mIEhUVFAgcmVzcG9uc2UgaGVhZGVycyIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsaGVhZGVycyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhlYWRlcnM9Tm9uZSk6CisgICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzIGlmIGhlYWRlcnMgaXMgbm90IE5vbmUgZWxzZSBbXQogICAgICAgICBpZiB0eXBlKGhlYWRlcnMpIGlzIG5vdCBsaXN0OgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJIZWFkZXJzIG11c3QgYmUgYSBsaXN0IG9mIG5hbWUvdmFsdWUgdHVwbGVzIikKICAgICAgICAgc2VsZi5faGVhZGVycyA9IGhlYWRlcnMKQEAgLTEzMSw3ICsxMzEsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5faGVhZGVyc1s6XQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkhlYWRlcnMoJXIpIiAlIHNlbGYuX2hlYWRlcnMKKyAgICAgICAgcmV0dXJuICIlcyglcikiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9oZWFkZXJzKQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgICIiInN0cigpIHJldHVybnMgdGhlIGZvcm1hdHRlZCBoZWFkZXJzLCBjb21wbGV0ZSB3aXRoIGVuZCBsaW5lLApkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vbWluaWRvbS5weSBiL0xpYi94bWwvZG9tL21pbmlkb20ucHkKaW5kZXggYzM3OWEzMy4uYTVkODEzZiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vbWluaWRvbS5weQorKysgYi9MaWIveG1sL2RvbS9taW5pZG9tLnB5CkBAIC01NDUsOSArNTQ1LDYgQEAKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPCAwCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAotCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGF0dG5hbWVfb3JfdHVwbGUpOgogICAgICAgICBpZiBpc2luc3RhbmNlKGF0dG5hbWVfb3JfdHVwbGUsIHR1cGxlKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hdHRyc05TW2F0dG5hbWVfb3JfdHVwbGVdCkBAIC02NDgsOSArNjQ1LDEwIEBACiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYubmFtZXNwYWNlOgotICAgICAgICAgICAgcmV0dXJuICI8VHlwZUluZm8gJXIgKGZyb20gJXIpPiIgJSAoc2VsZi5uYW1lLCBzZWxmLm5hbWVzcGFjZSkKKyAgICAgICAgICAgIHJldHVybiAiPCVzICVyIChmcm9tICVyKT4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVzcGFjZSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiPFR5cGVJbmZvICVyPiIgJSBzZWxmLm5hbWUKKyAgICAgICAgICAgIHJldHVybiAiPCVzICVyPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKIAogICAgIGRlZiBfZ2V0X25hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLm5hbWUKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkgYi9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CmluZGV4IGQ3OTg2MjQuLjQ0NGYwYjIgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKKysrIGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQpAQCAtMSw2ICsxLDcgQEAKICIiIkltcGxlbWVudGF0aW9uIG9mIHRoZSBET00gTGV2ZWwgMyAnTFMtTG9hZCcgZmVhdHVyZS4iIiIKIAogaW1wb3J0IGNvcHkKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHhtbC5kb20KIAogZnJvbSB4bWwuZG9tLk5vZGVGaWx0ZXIgaW1wb3J0IE5vZGVGaWx0ZXIKQEAgLTMzMSwxMyArMzMyLDMzIEBACiBkZWwgTm9kZUZpbHRlcgogCiAKK2NsYXNzIF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eToKKyAgICBkZWYgd2FybihzZWxmLCBjbHMpOgorICAgICAgICBjbHNuYW1lID0gY2xzLl9fbmFtZV9fCisgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAie2Nsc30uYXN5bmMgaXMgZGVwcmVjYXRlZDsgdXNlIHtjbHN9LmFzeW5jXyIuZm9ybWF0KGNscz1jbHNuYW1lKSwKKyAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKKworICAgIGRlZiBfX2dldF9fKHNlbGYsIGluc3RhbmNlLCBjbHMpOgorICAgICAgICBzZWxmLndhcm4oY2xzKQorICAgICAgICBpZiBpbnN0YW5jZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5hc3luY18KKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpOgorICAgICAgICBzZWxmLndhcm4odHlwZShpbnN0YW5jZSkpCisgICAgICAgIHNldGF0dHIoaW5zdGFuY2UsICdhc3luY18nLCB2YWx1ZSkKKworCiBjbGFzcyBEb2N1bWVudExTOgogICAgICIiIk1peGluIHRvIGNyZWF0ZSBkb2N1bWVudHMgdGhhdCBjb25mb3JtIHRvIHRoZSBsb2FkL3NhdmUgc3BlYy4iIiIKIAotICAgIGFzeW5jID0gRmFsc2UKKyAgICBhc3luYyA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpCisgICAgYXN5bmNfID0gRmFsc2UKIAogICAgIGRlZiBfZ2V0X2FzeW5jKHNlbGYpOgogICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBfc2V0X2FzeW5jKHNlbGYsIGFzeW5jKToKICAgICAgICAgaWYgYXN5bmM6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigKQEAgLTM2Myw2ICszODQsOSBAQAogICAgICAgICByZXR1cm4gc25vZGUudG94bWwoKQogCiAKK2RlbCBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHkKKworCiBjbGFzcyBET01JbXBsZW1lbnRhdGlvbkxTOgogICAgIE1PREVfU1lOQ0hST05PVVMgPSAxCiAgICAgTU9ERV9BU1lOQ0hST05PVVMgPSAyCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQppbmRleCBkOTE0ZGRiLi41ZGU0MjMyIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKQEAgLTExNCw3ICsxMTQsMTAgQEAKICAgICByZXR1cm4gc2VsZWN0CiAKIGRlZiBwcmVwYXJlX2Rlc2NlbmRhbnQobmV4dCwgdG9rZW4pOgotICAgIHRva2VuID0gbmV4dCgpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICByZXR1cm4KICAgICBpZiB0b2tlblswXSA9PSAiKiI6CiAgICAgICAgIHRhZyA9ICIqIgogICAgIGVsaWYgbm90IHRva2VuWzBdOgpAQCAtMTQ4LDcgKzE1MSwxMCBAQAogICAgIHNpZ25hdHVyZSA9IFtdCiAgICAgcHJlZGljYXRlID0gW10KICAgICB3aGlsZSAxOgotICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiA9IG5leHQoKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiB0b2tlblswXSA9PSAiXSI6CiAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiB0b2tlblswXSBhbmQgdG9rZW5bMF1bOjFdIGluICInXCIiOgpAQCAtMjYxLDcgKzI2NywxMCBAQAogICAgICAgICBpZiBwYXRoWzoxXSA9PSAiLyI6CiAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiY2Fubm90IHVzZSBhYnNvbHV0ZSBwYXRoIG9uIGVsZW1lbnQiKQogICAgICAgICBuZXh0ID0gaXRlcih4cGF0aF90b2tlbml6ZXIocGF0aCwgbmFtZXNwYWNlcykpLl9fbmV4dF9fCi0gICAgICAgIHRva2VuID0gbmV4dCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuID0gbmV4dCgpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGVjdG9yID0gW10KICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKQEAgLTI4NiwxMCArMjk1LDcgQEAKICMgRmluZCBmaXJzdCBtYXRjaGluZyBvYmplY3QuCiAKIGRlZiBmaW5kKGVsZW0sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gbmV4dChpdGVyZmluZChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzKSkKLSAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXR1cm4gbmV4dChpdGVyZmluZChlbGVtLCBwYXRoLCBuYW1lc3BhY2VzKSwgTm9uZSkKIAogIyMKICMgRmluZCBhbGwgbWF0Y2hpbmcgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IGE4NTg1YjYuLjRjMTA5YTIgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICAgICAgIHNlbGYuX2NoaWxkcmVuID0gW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8RWxlbWVudCAlcyBhdCAweCV4PiIgJSAocmVwcihzZWxmLnRhZyksIGlkKHNlbGYpKQorICAgICAgICByZXR1cm4gIjwlcyAlciBhdCAlI3g+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi50YWcsIGlkKHNlbGYpKQogCiAgICAgZGVmIG1ha2VlbGVtZW50KHNlbGYsIHRhZywgYXR0cmliKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGVsZW1lbnQgd2l0aCB0aGUgc2FtZSB0eXBlLgpAQCAtNTA5LDcgKzUwOSw3IEBACiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRleHQKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnPFFOYW1lICVyPicgJSAoc2VsZi50ZXh0LCkKKyAgICAgICAgcmV0dXJuICc8JXMgJXI+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi50ZXh0KQogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi50ZXh0KQogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgpAQCAtNTMyLDEwICs1MzIsNiBAQAogICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBRTmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi50ZXh0ID09IG90aGVyLnRleHQKICAgICAgICAgcmV0dXJuIHNlbGYudGV4dCA9PSBvdGhlcgotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBRTmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi50ZXh0ICE9IG90aGVyLnRleHQKLSAgICAgICAgcmV0dXJuIHNlbGYudGV4dCAhPSBvdGhlcgogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0xpYi94bWwvc2F4L19faW5pdF9fLnB5IGIvTGliL3htbC9zYXgvX19pbml0X18ucHkKaW5kZXggYjE2MWIxZi4uZWY2N2FlNiAxMDA2NDQKLS0tIGEvTGliL3htbC9zYXgvX19pbml0X18ucHkKKysrIGIvTGliL3htbC9zYXgvX19pbml0X18ucHkKQEAgLTMzLDggKzMzLDcgQEAKICAgICBwYXJzZXIucGFyc2Uoc291cmNlKQogCiBkZWYgcGFyc2VTdHJpbmcoc3RyaW5nLCBoYW5kbGVyLCBlcnJvckhhbmRsZXI9RXJyb3JIYW5kbGVyKCkpOgotICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLQorICAgIGltcG9ydCBpbwogICAgIGlmIGVycm9ySGFuZGxlciBpcyBOb25lOgogICAgICAgICBlcnJvckhhbmRsZXIgPSBFcnJvckhhbmRsZXIoKQogICAgIHBhcnNlciA9IG1ha2VfcGFyc2VyKCkKQEAgLTQyLDcgKzQxLDEwIEBACiAgICAgcGFyc2VyLnNldEVycm9ySGFuZGxlcihlcnJvckhhbmRsZXIpCiAKICAgICBpbnBzcmMgPSBJbnB1dFNvdXJjZSgpCi0gICAgaW5wc3JjLnNldEJ5dGVTdHJlYW0oQnl0ZXNJTyhzdHJpbmcpKQorICAgIGlmIGlzaW5zdGFuY2Uoc3RyaW5nLCBzdHIpOgorICAgICAgICBpbnBzcmMuc2V0Q2hhcmFjdGVyU3RyZWFtKGlvLlN0cmluZ0lPKHN0cmluZykpCisgICAgZWxzZToKKyAgICAgICAgaW5wc3JjLnNldEJ5dGVTdHJlYW0oaW8uQnl0ZXNJTyhzdHJpbmcpKQogICAgIHBhcnNlci5wYXJzZShpbnBzcmMpCiAKICMgdGhpcyBpcyB0aGUgcGFyc2VyIGxpc3QgdXNlZCBieSB0aGUgbWFrZV9wYXJzZXIgZnVuY3Rpb24gaWYgbm8KZGlmZiAtLWdpdCBhL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5IGIvTGliL3htbC9zYXgvZXhwYXRyZWFkZXIucHkKaW5kZXggM2I2MzczNy4uOThiNWNhOSAxMDA2NDQKLS0tIGEvTGliL3htbC9zYXgvZXhwYXRyZWFkZXIucHkKKysrIGIvTGliL3htbC9zYXgvZXhwYXRyZWFkZXIucHkKQEAgLTIzMiw5ICsyMzIsMTQgQEAKICAgICAgICAgICAgICAgICBwYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIgPSBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKICAgICAgICAgICAgICAgICBwYXJzZXIuRXJyb3JMaW5lTnVtYmVyID0gc2VsZi5fcGFyc2VyLkVycm9yTGluZU51bWJlcgogICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlciA9IHBhcnNlcgotICAgICAgICAgICAgYnMgPSBzZWxmLl9zb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpCi0gICAgICAgICAgICBpZiBicyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBicy5jbG9zZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZmlsZSA9IHNlbGYuX3NvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKQorICAgICAgICAgICAgICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmaWxlID0gc2VsZi5fc291cmNlLmdldEJ5dGVTdHJlYW0oKQorICAgICAgICAgICAgICAgIGlmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQogCiAgICAgZGVmIF9yZXNldF9jb250X2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuX3BhcnNlci5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyID0gXApkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgvc2F4dXRpbHMucHkgYi9MaWIveG1sL3NheC9zYXh1dGlscy5weQppbmRleCAxZDNkMGVjLi5hNjljN2Y3IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC9zYXh1dGlscy5weQorKysgYi9MaWIveG1sL3NheC9zYXh1dGlscy5weQpAQCAtMzQ1LDExICszNDUsMTQgQEAKICAgICBlbGlmIGhhc2F0dHIoc291cmNlLCAicmVhZCIpOgogICAgICAgICBmID0gc291cmNlCiAgICAgICAgIHNvdXJjZSA9IHhtbHJlYWRlci5JbnB1dFNvdXJjZSgpCi0gICAgICAgIHNvdXJjZS5zZXRCeXRlU3RyZWFtKGYpCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZi5yZWFkKDApLCBzdHIpOgorICAgICAgICAgICAgc291cmNlLnNldENoYXJhY3RlclN0cmVhbShmKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc291cmNlLnNldEJ5dGVTdHJlYW0oZikKICAgICAgICAgaWYgaGFzYXR0cihmLCAibmFtZSIpIGFuZCBpc2luc3RhbmNlKGYubmFtZSwgc3RyKToKICAgICAgICAgICAgIHNvdXJjZS5zZXRTeXN0ZW1JZChmLm5hbWUpCiAKLSAgICBpZiBzb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpIGlzIE5vbmU6CisgICAgaWYgc291cmNlLmdldENoYXJhY3RlclN0cmVhbSgpIGlzIE5vbmUgYW5kIHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkgaXMgTm9uZToKICAgICAgICAgc3lzaWQgPSBzb3VyY2UuZ2V0U3lzdGVtSWQoKQogICAgICAgICBiYXNlaGVhZCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLm5vcm1wYXRoKGJhc2UpKQogICAgICAgICBzeXNpZGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGJhc2VoZWFkLCBzeXNpZCkKZGlmZiAtLWdpdCBhL0xpYi94bWwvc2F4L3htbHJlYWRlci5weSBiL0xpYi94bWwvc2F4L3htbHJlYWRlci5weQppbmRleCA3ZWY0OTdmLi43MTZmMjI4IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC94bWxyZWFkZXIucHkKKysrIGIvTGliL3htbC9zYXgveG1scmVhZGVyLnB5CkBAIC0xMTcsNyArMTE3LDkgQEAKICAgICAgICAgc291cmNlID0gc2F4dXRpbHMucHJlcGFyZV9pbnB1dF9zb3VyY2Uoc291cmNlKQogCiAgICAgICAgIHNlbGYucHJlcGFyZVBhcnNlcihzb3VyY2UpCi0gICAgICAgIGZpbGUgPSBzb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpCisgICAgICAgIGZpbGUgPSBzb3VyY2UuZ2V0Q2hhcmFjdGVyU3RyZWFtKCkKKyAgICAgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRCeXRlU3RyZWFtKCkKICAgICAgICAgYnVmZmVyID0gZmlsZS5yZWFkKHNlbGYuX2J1ZnNpemUpCiAgICAgICAgIHdoaWxlIGJ1ZmZlcjoKICAgICAgICAgICAgIHNlbGYuZmVlZChidWZmZXIpCmRpZmYgLS1naXQgYS9MaWIveG1scnBjL2NsaWVudC5weSBiL0xpYi94bWxycGMvY2xpZW50LnB5CmluZGV4IDQ1MjEzMjUuLmFjYjgxNDIgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvY2xpZW50LnB5CisrKyBiL0xpYi94bWxycGMvY2xpZW50LnB5CkBAIC0yMDgsOCArMjA4LDggQEAKICAgICAgICAgc2VsZi5oZWFkZXJzID0gaGVhZGVycwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAgICI8UHJvdG9jb2xFcnJvciBmb3IgJXM6ICVzICVzPiIgJQotICAgICAgICAgICAgKHNlbGYudXJsLCBzZWxmLmVycmNvZGUsIHNlbGYuZXJybXNnKQorICAgICAgICAgICAgIjwlcyBmb3IgJXM6ICVzICVzPiIgJQorICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnVybCwgc2VsZi5lcnJjb2RlLCBzZWxmLmVycm1zZykKICAgICAgICAgICAgICkKIAogIyMKQEAgLTIzNyw3ICsyMzcsOCBAQAogICAgICAgICBzZWxmLmZhdWx0Q29kZSA9IGZhdWx0Q29kZQogICAgICAgICBzZWxmLmZhdWx0U3RyaW5nID0gZmF1bHRTdHJpbmcKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPEZhdWx0ICVzOiAlcj4iICUgKHNlbGYuZmF1bHRDb2RlLCBzZWxmLmZhdWx0U3RyaW5nKQorICAgICAgICByZXR1cm4gIjwlcyAlczogJXI+IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYXVsdENvZGUsIHNlbGYuZmF1bHRTdHJpbmcpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgU3BlY2lhbCB2YWx1ZXMKQEAgLTMzOSwxMCArMzQwLDYgQEAKICAgICAgICAgcywgbyA9IHNlbGYubWFrZV9jb21wYXJhYmxlKG90aGVyKQogICAgICAgICByZXR1cm4gcyA9PSBvCiAKLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcywgbyA9IHNlbGYubWFrZV9jb21wYXJhYmxlKG90aGVyKQotICAgICAgICByZXR1cm4gcyAhPSBvCi0KICAgICBkZWYgdGltZXR1cGxlKHNlbGYpOgogICAgICAgICByZXR1cm4gdGltZS5zdHJwdGltZShzZWxmLnZhbHVlLCAiJVklbSVkVCVIOiVNOiVTIikKIApAQCAtMzU1LDcgKzM1Miw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPERhdGVUaW1lICVyIGF0ICV4PiIgJSAoc2VsZi52YWx1ZSwgaWQoc2VsZikpCisgICAgICAgIHJldHVybiAiPCVzICVyIGF0ICUjeD4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLnZhbHVlLCBpZChzZWxmKSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYudmFsdWUgPSBzdHIoZGF0YSkuc3RyaXAoKQpAQCAtNDA2LDExICs0MDMsNiBAQAogICAgICAgICAgICAgb3RoZXIgPSBvdGhlci5kYXRhCiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEgPT0gb3RoZXIKIAotICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBCaW5hcnkpOgotICAgICAgICAgICAgb3RoZXIgPSBvdGhlci5kYXRhCi0gICAgICAgIHJldHVybiBzZWxmLmRhdGEgIT0gb3RoZXIKLQogICAgIGRlZiBkZWNvZGUoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGF0YSA9IGJhc2U2NC5kZWNvZGVieXRlcyhkYXRhKQogCkBAIC04NTIsNyArODQ0LDcgQEAKICAgICAgICAgc2VsZi5fX2NhbGxfbGlzdCA9IFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPE11bHRpQ2FsbCBhdCAleD4iICUgaWQoc2VsZikKKyAgICAgICAgcmV0dXJuICI8JXMgYXQgJSN4PiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGlkKHNlbGYpKQogCiAgICAgX19zdHJfXyA9IF9fcmVwcl9fCiAKQEAgLTEwMjMsMTIgKzEwMTUsOSBAQAogICAgIGlmIG5vdCBnemlwOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAgICAgZiA9IEJ5dGVzSU8oKQotICAgIGd6ZiA9IGd6aXAuR3ppcEZpbGUobW9kZT0id2IiLCBmaWxlb2JqPWYsIGNvbXByZXNzbGV2ZWw9MSkKLSAgICBnemYud3JpdGUoZGF0YSkKLSAgICBnemYuY2xvc2UoKQotICAgIGVuY29kZWQgPSBmLmdldHZhbHVlKCkKLSAgICBmLmNsb3NlKCkKLSAgICByZXR1cm4gZW5jb2RlZAorICAgIHdpdGggZ3ppcC5HemlwRmlsZShtb2RlPSJ3YiIsIGZpbGVvYmo9ZiwgY29tcHJlc3NsZXZlbD0xKSBhcyBnemY6CisgICAgICAgIGd6Zi53cml0ZShkYXRhKQorICAgIHJldHVybiBmLmdldHZhbHVlKCkKIAogIyMKICMgRGVjb2RlIGEgc3RyaW5nIHVzaW5nIHRoZSBnemlwIGNvbnRlbnQgZW5jb2Rpbmcgc3VjaCBhcyBzcGVjaWZpZWQgYnkgdGhlCkBAIC0xMDQ5LDE3ICsxMDM4LDE0IEBACiAgICAgIiIiCiAgICAgaWYgbm90IGd6aXA6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLSAgICBmID0gQnl0ZXNJTyhkYXRhKQotICAgIGd6ZiA9IGd6aXAuR3ppcEZpbGUobW9kZT0icmIiLCBmaWxlb2JqPWYpCi0gICAgdHJ5OgotICAgICAgICBpZiBtYXhfZGVjb2RlIDwgMDogIyBubyBsaW1pdAotICAgICAgICAgICAgZGVjb2RlZCA9IGd6Zi5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRlY29kZWQgPSBnemYucmVhZChtYXhfZGVjb2RlICsgMSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBkYXRhIikKLSAgICBmLmNsb3NlKCkKLSAgICBnemYuY2xvc2UoKQorICAgIHdpdGggZ3ppcC5HemlwRmlsZShtb2RlPSJyYiIsIGZpbGVvYmo9Qnl0ZXNJTyhkYXRhKSkgYXMgZ3pmOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBtYXhfZGVjb2RlIDwgMDogIyBubyBsaW1pdAorICAgICAgICAgICAgICAgIGRlY29kZWQgPSBnemYucmVhZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlY29kZWQgPSBnemYucmVhZChtYXhfZGVjb2RlICsgMSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGRhdGEiKQogICAgIGlmIG1heF9kZWNvZGUgPj0gMCBhbmQgbGVuKGRlY29kZWQpID4gbWF4X2RlY29kZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibWF4IGd6aXBwZWQgcGF5bG9hZCBsZW5ndGggZXhjZWVkZWQiKQogICAgIHJldHVybiBkZWNvZGVkCkBAIC0xMTQ5LDcgKzExMzUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGkgb3IgZS5lcnJubyBub3QgaW4gKGVycm5vLkVDT05OUkVTRVQsIGVycm5vLkVDT05OQUJPUlRFRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJuby5FUElQRSk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuQmFkU3RhdHVzTGluZTogI2Nsb3NlIGFmdGVyIHdlIHNlbnQgcmVxdWVzdAorICAgICAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LlJlbW90ZURpc2Nvbm5lY3RlZDoKICAgICAgICAgICAgICAgICBpZiBpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogCkBAIC0xNDUyLDggKzE0MzgsOCBAQAogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gKAotICAgICAgICAgICAgIjxTZXJ2ZXJQcm94eSBmb3IgJXMlcz4iICUKLSAgICAgICAgICAgIChzZWxmLl9faG9zdCwgc2VsZi5fX2hhbmRsZXIpCisgICAgICAgICAgICAiPCVzIGZvciAlcyVzPiIgJQorICAgICAgICAgICAgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLl9faG9zdCwgc2VsZi5fX2hhbmRsZXIpCiAgICAgICAgICAgICApCiAKICAgICBfX3N0cl9fID0gX19yZXByX18KQEAgLTE0NzUsNiArMTQ2MSwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX190cmFuc3BvcnQKICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkF0dHJpYnV0ZSAlciBub3QgZm91bmQiICUgKGF0dHIsKSkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLl9fY2xvc2UoKQorCiAjIGNvbXBhdGliaWxpdHkKIAogU2VydmVyID0gU2VydmVyUHJveHkKZGlmZiAtLWdpdCBhL0xpYi96aXBhcHAucHkgYi9MaWIvemlwYXBwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MzgwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvemlwYXBwLnB5CkBAIC0wLDAgKzEsMjAwIEBACitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHNodXRpbAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzeXMKK2ltcG9ydCB6aXBmaWxlCisKK19fYWxsX18gPSBbJ1ppcEFwcEVycm9yJywgJ2NyZWF0ZV9hcmNoaXZlJywgJ2dldF9pbnRlcnByZXRlciddCisKKworIyBUaGUgX19tYWluX18ucHkgdXNlZCBpZiB0aGUgdXNlcnMgc3BlY2lmaWVzICItbSBtb2R1bGU6Zm4iLgorIyBOb3RlIHRoYXQgdGhpcyB3aWxsIGFsd2F5cyBiZSB3cml0dGVuIGFzIFVURi04IChtb2R1bGUgYW5kCisjIGZ1bmN0aW9uIG5hbWVzIGNhbiBiZSBub24tQVNDSUkgaW4gUHl0aG9uIDMpLgorIyBXZSBhZGQgYSBjb2RpbmcgY29va2llIGV2ZW4gdGhvdWdoIFVURi04IGlzIHRoZSBkZWZhdWx0IGluIFB5dGhvbiAzCisjIGJlY2F1c2UgdGhlIHJlc3VsdGluZyBhcmNoaXZlIG1heSBiZSBpbnRlbmRlZCB0byBiZSBydW4gdW5kZXIgUHl0aG9uIDIuCitNQUlOX1RFTVBMQVRFID0gIiIiXAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KK2ltcG9ydCB7bW9kdWxlfQore21vZHVsZX0ue2ZufSgpCisiIiIKKworCisjIFRoZSBXaW5kb3dzIGxhdW5jaGVyIGRlZmF1bHRzIHRvIFVURi04IHdoZW4gcGFyc2luZyBzaGViYW5nIGxpbmVzIGlmIHRoZQorIyBmaWxlIGhhcyBubyBCT00uIFNvIHVzZSBVVEYtOCBvbiBXaW5kb3dzLgorIyBPbiBVbml4LCB1c2UgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCitpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgc2hlYmFuZ19lbmNvZGluZyA9ICd1dGYtOCcKK2Vsc2U6CisgICAgc2hlYmFuZ19lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQorCisKK2NsYXNzIFppcEFwcEVycm9yKFZhbHVlRXJyb3IpOgorICAgIHBhc3MKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9tYXliZV9vcGVuKGFyY2hpdmUsIG1vZGUpOgorICAgIGlmIGlzaW5zdGFuY2UoYXJjaGl2ZSwgcGF0aGxpYi5QYXRoKToKKyAgICAgICAgYXJjaGl2ZSA9IHN0cihhcmNoaXZlKQorICAgIGlmIGlzaW5zdGFuY2UoYXJjaGl2ZSwgc3RyKToKKyAgICAgICAgd2l0aCBvcGVuKGFyY2hpdmUsIG1vZGUpIGFzIGY6CisgICAgICAgICAgICB5aWVsZCBmCisgICAgZWxzZToKKyAgICAgICAgeWllbGQgYXJjaGl2ZQorCisKK2RlZiBfd3JpdGVfZmlsZV9wcmVmaXgoZiwgaW50ZXJwcmV0ZXIpOgorICAgICIiIldyaXRlIGEgc2hlYmFuZyBsaW5lLiIiIgorICAgIGlmIGludGVycHJldGVyOgorICAgICAgICBzaGViYW5nID0gYicjIScgKyBpbnRlcnByZXRlci5lbmNvZGUoc2hlYmFuZ19lbmNvZGluZykgKyBiJ1xuJworICAgICAgICBmLndyaXRlKHNoZWJhbmcpCisKKworZGVmIF9jb3B5X2FyY2hpdmUoYXJjaGl2ZSwgbmV3X2FyY2hpdmUsIGludGVycHJldGVyPU5vbmUpOgorICAgICIiIkNvcHkgYW4gYXBwbGljYXRpb24gYXJjaGl2ZSwgbW9kaWZ5aW5nIHRoZSBzaGViYW5nIGxpbmUuIiIiCisgICAgd2l0aCBfbWF5YmVfb3BlbihhcmNoaXZlLCAncmInKSBhcyBzcmM6CisgICAgICAgICMgU2tpcCB0aGUgc2hlYmFuZyBsaW5lIGZyb20gdGhlIHNvdXJjZS4KKyAgICAgICAgIyBSZWFkIDIgYnl0ZXMgb2YgdGhlIHNvdXJjZSBhbmQgY2hlY2sgaWYgdGhleSBhcmUgIyEuCisgICAgICAgIGZpcnN0XzIgPSBzcmMucmVhZCgyKQorICAgICAgICBpZiBmaXJzdF8yID09IGInIyEnOgorICAgICAgICAgICAgIyBEaXNjYXJkIHRoZSBpbml0aWFsIDIgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBzaGViYW5nIGxpbmUuCisgICAgICAgICAgICBmaXJzdF8yID0gYicnCisgICAgICAgICAgICBzcmMucmVhZGxpbmUoKQorCisgICAgICAgIHdpdGggX21heWJlX29wZW4obmV3X2FyY2hpdmUsICd3YicpIGFzIGRzdDoKKyAgICAgICAgICAgIF93cml0ZV9maWxlX3ByZWZpeChkc3QsIGludGVycHJldGVyKQorICAgICAgICAgICAgIyBJZiB0aGVyZSB3YXMgbm8gc2hlYmFuZywgImZpcnN0XzIiIGNvbnRhaW5zIHRoZSBmaXJzdCAyIGJ5dGVzCisgICAgICAgICAgICAjIG9mIHRoZSBzb3VyY2UgZmlsZSwgc28gd3JpdGUgdGhlbSBiZWZvcmUgY29weWluZyB0aGUgcmVzdAorICAgICAgICAgICAgIyBvZiB0aGUgZmlsZS4KKyAgICAgICAgICAgIGRzdC53cml0ZShmaXJzdF8yKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0KQorCisgICAgaWYgaW50ZXJwcmV0ZXIgYW5kIGlzaW5zdGFuY2UobmV3X2FyY2hpdmUsIHN0cik6CisgICAgICAgIG9zLmNobW9kKG5ld19hcmNoaXZlLCBvcy5zdGF0KG5ld19hcmNoaXZlKS5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQorCisKK2RlZiBjcmVhdGVfYXJjaGl2ZShzb3VyY2UsIHRhcmdldD1Ob25lLCBpbnRlcnByZXRlcj1Ob25lLCBtYWluPU5vbmUpOgorICAgICIiIkNyZWF0ZSBhbiBhcHBsaWNhdGlvbiBhcmNoaXZlIGZyb20gU09VUkNFLgorCisgICAgVGhlIFNPVVJDRSBjYW4gYmUgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnksIG9yIGEgZmlsZW5hbWUgb3IgYSBmaWxlLWxpa2UKKyAgICBvYmplY3QgcmVmZXJyaW5nIHRvIGFuIGV4aXN0aW5nIGFyY2hpdmUuCisKKyAgICBUaGUgY29udGVudCBvZiBTT1VSQ0UgaXMgcGFja2VkIGludG8gYW4gYXBwbGljYXRpb24gYXJjaGl2ZSBpbiBUQVJHRVQsCisgICAgd2hpY2ggY2FuIGJlIGEgZmlsZW5hbWUgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgSWYgU09VUkNFIGlzIGEgZGlyZWN0b3J5LAorICAgIFRBUkdFVCBjYW4gYmUgb21pdHRlZCBhbmQgd2lsbCBkZWZhdWx0IHRvIHRoZSBuYW1lIG9mIFNPVVJDRSB3aXRoIC5weXoKKyAgICBhcHBlbmRlZC4KKworICAgIFRoZSBjcmVhdGVkIGFwcGxpY2F0aW9uIGFyY2hpdmUgd2lsbCBoYXZlIGEgc2hlYmFuZyBsaW5lIHNwZWNpZnlpbmcKKyAgICB0aGF0IGl0IHNob3VsZCBydW4gd2l0aCBJTlRFUlBSRVRFUiAodGhlcmUgd2lsbCBiZSBubyBzaGViYW5nIGxpbmUgaWYKKyAgICBJTlRFUlBSRVRFUiBpcyBOb25lKSwgYW5kIGEgX19tYWluX18ucHkgd2hpY2ggcnVucyBNQUlOIChpZiBNQUlOIGlzCisgICAgbm90IHNwZWNpZmllZCwgYW4gZXhpc3RpbmcgX19tYWluX18ucHkgd2lsbCBiZSB1c2VkKS4gSXQgaXMgYW4gdG8gc3BlY2lmeQorICAgIE1BSU4gZm9yIGFueXRoaW5nIG90aGVyIHRoYW4gYSBkaXJlY3Rvcnkgc291cmNlIHdpdGggbm8gX19tYWluX18ucHksIGFuZCBpdAorICAgIGlzIGFuIGVycm9yIHRvIG9taXQgTUFJTiBpZiB0aGUgZGlyZWN0b3J5IGhhcyBubyBfX21haW5fXy5weS4KKyAgICAiIiIKKyAgICAjIEFyZSB3ZSBjb3B5aW5nIGFuIGV4aXN0aW5nIGFyY2hpdmU/CisgICAgc291cmNlX2lzX2ZpbGUgPSBGYWxzZQorICAgIGlmIGhhc2F0dHIoc291cmNlLCAncmVhZCcpIGFuZCBoYXNhdHRyKHNvdXJjZSwgJ3JlYWRsaW5lJyk6CisgICAgICAgIHNvdXJjZV9pc19maWxlID0gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHNvdXJjZSA9IHBhdGhsaWIuUGF0aChzb3VyY2UpCisgICAgICAgIGlmIHNvdXJjZS5pc19maWxlKCk6CisgICAgICAgICAgICBzb3VyY2VfaXNfZmlsZSA9IFRydWUKKworICAgIGlmIHNvdXJjZV9pc19maWxlOgorICAgICAgICBfY29weV9hcmNoaXZlKHNvdXJjZSwgdGFyZ2V0LCBpbnRlcnByZXRlcikKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIFdlIGFyZSBjcmVhdGluZyBhIG5ldyBhcmNoaXZlIGZyb20gYSBkaXJlY3RvcnkuCisgICAgaWYgbm90IHNvdXJjZS5leGlzdHMoKToKKyAgICAgICAgcmFpc2UgWmlwQXBwRXJyb3IoIlNvdXJjZSBkb2VzIG5vdCBleGlzdCIpCisgICAgaGFzX21haW4gPSAoc291cmNlIC8gJ19fbWFpbl9fLnB5JykuaXNfZmlsZSgpCisgICAgaWYgbWFpbiBhbmQgaGFzX21haW46CisgICAgICAgIHJhaXNlIFppcEFwcEVycm9yKAorICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IGVudHJ5IHBvaW50IGlmIHRoZSBzb3VyY2UgaGFzIF9fbWFpbl9fLnB5IikKKyAgICBpZiBub3QgKG1haW4gb3IgaGFzX21haW4pOgorICAgICAgICByYWlzZSBaaXBBcHBFcnJvcigiQXJjaGl2ZSBoYXMgbm8gZW50cnkgcG9pbnQiKQorCisgICAgbWFpbl9weSA9IE5vbmUKKyAgICBpZiBtYWluOgorICAgICAgICAjIENoZWNrIHRoYXQgbWFpbiBoYXMgdGhlIHJpZ2h0IGZvcm1hdC4KKyAgICAgICAgbW9kLCBzZXAsIGZuID0gbWFpbi5wYXJ0aXRpb24oJzonKQorICAgICAgICBtb2Rfb2sgPSBhbGwocGFydC5pc2lkZW50aWZpZXIoKSBmb3IgcGFydCBpbiBtb2Quc3BsaXQoJy4nKSkKKyAgICAgICAgZm5fb2sgPSBhbGwocGFydC5pc2lkZW50aWZpZXIoKSBmb3IgcGFydCBpbiBmbi5zcGxpdCgnLicpKQorICAgICAgICBpZiBub3QgKHNlcCA9PSAnOicgYW5kIG1vZF9vayBhbmQgZm5fb2spOgorICAgICAgICAgICAgcmFpc2UgWmlwQXBwRXJyb3IoIkludmFsaWQgZW50cnkgcG9pbnQ6ICIgKyBtYWluKQorICAgICAgICBtYWluX3B5ID0gTUFJTl9URU1QTEFURS5mb3JtYXQobW9kdWxlPW1vZCwgZm49Zm4pCisKKyAgICBpZiB0YXJnZXQgaXMgTm9uZToKKyAgICAgICAgdGFyZ2V0ID0gc291cmNlLndpdGhfc3VmZml4KCcucHl6JykKKyAgICBlbGlmIG5vdCBoYXNhdHRyKHRhcmdldCwgJ3dyaXRlJyk6CisgICAgICAgIHRhcmdldCA9IHBhdGhsaWIuUGF0aCh0YXJnZXQpCisKKyAgICB3aXRoIF9tYXliZV9vcGVuKHRhcmdldCwgJ3diJykgYXMgZmQ6CisgICAgICAgIF93cml0ZV9maWxlX3ByZWZpeChmZCwgaW50ZXJwcmV0ZXIpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGZkLCAndycpIGFzIHo6CisgICAgICAgICAgICByb290ID0gcGF0aGxpYi5QYXRoKHNvdXJjZSkKKyAgICAgICAgICAgIGZvciBjaGlsZCBpbiByb290LnJnbG9iKCcqJyk6CisgICAgICAgICAgICAgICAgYXJjbmFtZSA9IHN0cihjaGlsZC5yZWxhdGl2ZV90byhyb290KSkKKyAgICAgICAgICAgICAgICB6LndyaXRlKHN0cihjaGlsZCksIGFyY25hbWUpCisgICAgICAgICAgICBpZiBtYWluX3B5OgorICAgICAgICAgICAgICAgIHoud3JpdGVzdHIoJ19fbWFpbl9fLnB5JywgbWFpbl9weS5lbmNvZGUoJ3V0Zi04JykpCisKKyAgICBpZiBpbnRlcnByZXRlciBhbmQgbm90IGhhc2F0dHIodGFyZ2V0LCAnd3JpdGUnKToKKyAgICAgICAgdGFyZ2V0LmNobW9kKHRhcmdldC5zdGF0KCkuc3RfbW9kZSB8IHN0YXQuU19JRVhFQykKKworCitkZWYgZ2V0X2ludGVycHJldGVyKGFyY2hpdmUpOgorICAgIHdpdGggX21heWJlX29wZW4oYXJjaGl2ZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgaWYgZi5yZWFkKDIpID09IGInIyEnOgorICAgICAgICAgICAgcmV0dXJuIGYucmVhZGxpbmUoKS5zdHJpcCgpLmRlY29kZShzaGViYW5nX2VuY29kaW5nKQorCisKK2RlZiBtYWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiUnVuIHRoZSB6aXBhcHAgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KKworICAgIFRoZSBBUkdTIHBhcmFtZXRlciBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBhcmd1bWVudCBsaXN0IGRpcmVjdGx5LgorICAgIE9taXR0aW5nIEFSR1MgKG9yIHNldHRpbmcgaXQgdG8gTm9uZSkgd29ya3MgYXMgZm9yIGFyZ3BhcnNlLCB1c2luZworICAgIHN5cy5hcmd2WzE6XSBhcyB0aGUgYXJndW1lbnQgbGlzdC4KKyAgICAiIiIKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dCcsICctbycsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgIGhlbHA9IlRoZSBuYW1lIG9mIHRoZSBvdXRwdXQgYXJjaGl2ZS4gIgorICAgICAgICAgICAgICAgICAiUmVxdWlyZWQgaWYgU09VUkNFIGlzIGFuIGFyY2hpdmUuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXB5dGhvbicsICctcCcsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgIGhlbHA9IlRoZSBuYW1lIG9mIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gdXNlICIKKyAgICAgICAgICAgICAgICAgIihkZWZhdWx0OiBubyBzaGViYW5nIGxpbmUpLiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tYWluJywgJy1tJywgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgaGVscD0iVGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIGFwcGxpY2F0aW9uICIKKyAgICAgICAgICAgICAgICAgIihkZWZhdWx0OiB1c2UgYW4gZXhpc3RpbmcgX19tYWluX18ucHkpLiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbmZvJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9IkRpc3BsYXkgdGhlIGludGVycHJldGVyIGZyb20gdGhlIGFyY2hpdmUuIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdzb3VyY2UnLAorICAgICAgICAgICAgaGVscD0iU291cmNlIGRpcmVjdG9yeSAob3IgZXhpc3RpbmcgYXJjaGl2ZSkuIikKKworICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorCisgICAgIyBIYW5kbGUgYHB5dGhvbiAtbSB6aXBhcHAgYXJjaGl2ZS5weXogLS1pbmZvYC4KKyAgICBpZiBhcmdzLmluZm86CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShhcmdzLnNvdXJjZSk6CisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KCJDYW4gb25seSBnZXQgaW5mbyBmb3IgYW4gYXJjaGl2ZSBmaWxlIikKKyAgICAgICAgaW50ZXJwcmV0ZXIgPSBnZXRfaW50ZXJwcmV0ZXIoYXJncy5zb3VyY2UpCisgICAgICAgIHByaW50KCJJbnRlcnByZXRlcjoge30iLmZvcm1hdChpbnRlcnByZXRlciBvciAiPG5vbmU+IikpCisgICAgICAgIHN5cy5leGl0KDApCisKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShhcmdzLnNvdXJjZSk6CisgICAgICAgIGlmIGFyZ3Mub3V0cHV0IGlzIE5vbmUgb3IgKG9zLnBhdGguZXhpc3RzKGFyZ3Mub3V0cHV0KSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5zYW1lZmlsZShhcmdzLnNvdXJjZSwgYXJncy5vdXRwdXQpKToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoIkluLXBsYWNlIGVkaXRpbmcgb2YgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIGlmIGFyZ3MubWFpbjoKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoIkNhbm5vdCBjaGFuZ2UgdGhlIG1haW4gZnVuY3Rpb24gd2hlbiBjb3B5aW5nIikKKworICAgIGNyZWF0ZV9hcmNoaXZlKGFyZ3Muc291cmNlLCBhcmdzLm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICBpbnRlcnByZXRlcj1hcmdzLnB5dGhvbiwgbWFpbj1hcmdzLm1haW4pCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi96aXBmaWxlLnB5IGIvTGliL3ppcGZpbGUucHkKaW5kZXggYmRhNjEzNC4uODViZGFhOSAxMDA2NDQKLS0tIGEvTGliL3ppcGZpbGUucHkKKysrIGIvTGliL3ppcGZpbGUucHkKQEAgLTEzLDYgKzEzLDcgQEAKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBiaW5hc2NpaQoraW1wb3J0IHRocmVhZGluZwogCiAKIHRyeToKQEAgLTM1NSw2ICszNTYsMjggQEAKICAgICAgICAgIyBjb21wcmVzc19zaXplICAgICAgICAgU2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBmaWxlCiAgICAgICAgICMgZmlsZV9zaXplICAgICAgICAgICAgIFNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBmaWxlCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFsnPCVzIGZpbGVuYW1lPSVyJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5maWxlbmFtZSldCisgICAgICAgIGlmIHNlbGYuY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGNvbXByZXNzX3R5cGU9JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nvcl9uYW1lcy5nZXQoc2VsZi5jb21wcmVzc190eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXByZXNzX3R5cGUpKQorICAgICAgICBoaSA9IHNlbGYuZXh0ZXJuYWxfYXR0ciA+PiAxNgorICAgICAgICBsbyA9IHNlbGYuZXh0ZXJuYWxfYXR0ciAmIDB4RkZGRgorICAgICAgICBpZiBoaToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbW9kZT0lcicgJSBzdGF0LmZpbGVtb2RlKGhpKSkKKyAgICAgICAgaWYgbG86CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZXh0ZXJuYWxfYXR0cj0lI3gnICUgbG8pCisgICAgICAgIGlzZGlyID0gc2VsZi5maWxlbmFtZVstMTpdID09ICcvJworICAgICAgICBpZiBub3QgaXNkaXIgb3Igc2VsZi5maWxlX3NpemU6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZV9zaXplPSVyJyAlIHNlbGYuZmlsZV9zaXplKQorICAgICAgICBpZiAoKG5vdCBpc2RpciBvciBzZWxmLmNvbXByZXNzX3NpemUpIGFuZAorICAgICAgICAgICAgKHNlbGYuY29tcHJlc3NfdHlwZSAhPSBaSVBfU1RPUkVEIG9yCisgICAgICAgICAgICAgc2VsZi5maWxlX3NpemUgIT0gc2VsZi5jb21wcmVzc19zaXplKSk6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgY29tcHJlc3Nfc2l6ZT0lcicgJSBzZWxmLmNvbXByZXNzX3NpemUpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKICAgICBkZWYgRmlsZUhlYWRlcihzZWxmLCB6aXA2ND1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBwZXItZmlsZSBoZWFkZXIgYXMgYSBzdHJpbmcuIiIiCiAgICAgICAgIGR0ID0gc2VsZi5kYXRlX3RpbWUKQEAgLTYyNCw2ICs2NDcsNDcgQEAKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKGNvbXByZXNzX3R5cGUsKSkKIAogCitjbGFzcyBfU2hhcmVkRmlsZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jayk6CisgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCisgICAgICAgIHNlbGYuX3BvcyA9IHBvcworICAgICAgICBzZWxmLl9jbG9zZSA9IGNsb3NlCisgICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCisKKyAgICBkZWYgcmVhZChzZWxmLCBuPS0xKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQobikKKyAgICAgICAgICAgIHNlbGYuX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9maWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZmlsZW9iaiA9IHNlbGYuX2ZpbGUKKyAgICAgICAgICAgIHNlbGYuX2ZpbGUgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9jbG9zZShmaWxlb2JqKQorCisjIFByb3ZpZGUgdGhlIHRlbGwgbWV0aG9kIGZvciB1bnNlZWthYmxlIHN0cmVhbQorY2xhc3MgX1RlbGxhYmxlOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCk6CisgICAgICAgIHNlbGYuZnAgPSBmcAorICAgICAgICBzZWxmLm9mZnNldCA9IDAKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgbiA9IHNlbGYuZnAud3JpdGUoZGF0YSkKKyAgICAgICAgc2VsZi5vZmZzZXQgKz0gbgorICAgICAgICByZXR1cm4gbgorCisgICAgZGVmIHRlbGwoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm9mZnNldAorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBzZWxmLmZwLmZsdXNoKCkKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5mcC5jbG9zZSgpCisKKwogY2xhc3MgWmlwRXh0RmlsZShpby5CdWZmZXJlZElPQmFzZSk6CiAgICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KICAgICAgICBJcyByZXR1cm5lZCBieSBaaXBGaWxlLm9wZW4oKS4KQEAgLTY3MSw2ICs3MzUsMjAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2NyYyA9IE5vbmUKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gWyc8JXMuJXMnICUgKHNlbGYuX19jbGFzc19fLl9fbW9kdWxlX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX3F1YWxuYW1lX18pXQorICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgbmFtZT0lciBtb2RlPSVyJyAlIChzZWxmLm5hbWUsIHNlbGYubW9kZSkpCisgICAgICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlICE9IFpJUF9TVE9SRUQ6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGNvbXByZXNzX3R5cGU9JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzb3JfbmFtZXMuZ2V0KHNlbGYuX2NvbXByZXNzX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc190eXBlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBbY2xvc2VkXScpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKICAgICBkZWYgcmVhZGxpbmUoc2VsZiwgbGltaXQ9LTEpOgogICAgICAgICAiIiJSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS4KIApAQCAtODg0LDcgKzk2Miw4IEBACiAKICAgICBmaWxlOiBFaXRoZXIgdGhlIHBhdGggdG8gdGhlIGZpbGUsIG9yIGEgZmlsZS1saWtlIG9iamVjdC4KICAgICAgICAgICBJZiBpdCBpcyBhIHBhdGgsIHRoZSBmaWxlIHdpbGwgYmUgb3BlbmVkIGFuZCBjbG9zZWQgYnkgWmlwRmlsZS4KLSAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgInIiLCB3cml0ZSAidyIgb3IgYXBwZW5kICJhIi4KKyAgICBtb2RlOiBUaGUgbW9kZSBjYW4gYmUgZWl0aGVyIHJlYWQgJ3InLCB3cml0ZSAndycsIGV4Y2x1c2l2ZSBjcmVhdGUgJ3gnLAorICAgICAgICAgIG9yIGFwcGVuZCAnYScuCiAgICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSwgWklQX0RFRkxBVEVEIChyZXF1aXJlcyB6bGliKSwKICAgICAgICAgICAgICAgICAgWklQX0JaSVAyIChyZXF1aXJlcyBiejIpIG9yIFpJUF9MWk1BIChyZXF1aXJlcyBsem1hKS4KICAgICBhbGxvd1ppcDY0OiBpZiBUcnVlIFppcEZpbGUgd2lsbCBjcmVhdGUgZmlsZXMgd2l0aCBaSVA2NCBleHRlbnNpb25zIHdoZW4KQEAgLTg5Nyw5ICs5NzYsMTAgQEAKICAgICBfd2luZG93c19pbGxlZ2FsX25hbWVfdHJhbnNfdGFibGUgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZT0iciIsIGNvbXByZXNzaW9uPVpJUF9TVE9SRUQsIGFsbG93WmlwNjQ9VHJ1ZSk6Ci0gICAgICAgICIiIk9wZW4gdGhlIFpJUCBmaWxlIHdpdGggbW9kZSByZWFkICJyIiwgd3JpdGUgInciIG9yIGFwcGVuZCAiYSIuIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3IiwgImEiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignWmlwRmlsZSgpIHJlcXVpcmVzIG1vZGUgInIiLCAidyIsIG9yICJhIicpCisgICAgICAgICIiIk9wZW4gdGhlIFpJUCBmaWxlIHdpdGggbW9kZSByZWFkICdyJywgd3JpdGUgJ3cnLCBleGNsdXNpdmUgY3JlYXRlICd4JywKKyAgICAgICAgb3IgYXBwZW5kICdhJy4iIiIKKyAgICAgICAgaWYgbW9kZSBub3QgaW4gKCdyJywgJ3cnLCAneCcsICdhJyk6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlppcEZpbGUgcmVxdWlyZXMgbW9kZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIApAQCAtOTA5LDcgKzk4OSw3IEBACiAgICAgICAgIHNlbGYuTmFtZVRvSW5mbyA9IHt9ICAgICMgRmluZCBmaWxlIGluZm8gZ2l2ZW4gbmFtZQogICAgICAgICBzZWxmLmZpbGVsaXN0ID0gW10gICAgICAjIExpc3Qgb2YgWmlwSW5mbyBpbnN0YW5jZXMgZm9yIGFyY2hpdmUKICAgICAgICAgc2VsZi5jb21wcmVzc2lvbiA9IGNvbXByZXNzaW9uICAjIE1ldGhvZCBvZiBjb21wcmVzc2lvbgotICAgICAgICBzZWxmLm1vZGUgPSBrZXkgPSBtb2RlLnJlcGxhY2UoJ2InLCAnJylbMF0KKyAgICAgICAgc2VsZi5tb2RlID0gbW9kZQogICAgICAgICBzZWxmLnB3ZCA9IE5vbmUKICAgICAgICAgc2VsZi5fY29tbWVudCA9IGInJwogCkBAIC05MTgsMzMgKzk5OCw1MSBAQAogICAgICAgICAgICAgIyBObywgaXQncyBhIGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9maWxlUGFzc2VkID0gMAogICAgICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGUKLSAgICAgICAgICAgIG1vZGVEaWN0ID0geydyJyA6ICdyYicsICd3JzogJ3diJywgJ2EnIDogJ3IrYid9Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcCA9IGlvLm9wZW4oZmlsZSwgbW9kZURpY3RbbW9kZV0pCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBpZiBtb2RlID09ICdhJzoKLSAgICAgICAgICAgICAgICAgICAgbW9kZSA9IGtleSA9ICd3JwotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwID0gaW8ub3BlbihmaWxlLCBtb2RlRGljdFttb2RlXSkKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgbW9kZURpY3QgPSB7J3InIDogJ3JiJywgJ3cnOiAndytiJywgJ3gnOiAneCtiJywgJ2EnIDogJ3IrYicsCisgICAgICAgICAgICAgICAgICAgICAgICAncitiJzogJ3crYicsICd3K2InOiAnd2InLCAneCtiJzogJ3hiJ30KKyAgICAgICAgICAgIGZpbGVtb2RlID0gbW9kZURpY3RbbW9kZV0KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwID0gaW8ub3BlbihmaWxlLCBmaWxlbW9kZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgaWYgZmlsZW1vZGUgaW4gbW9kZURpY3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbW9kZSA9IG1vZGVEaWN0W2ZpbGVtb2RlXQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fZmlsZVBhc3NlZCA9IDEKICAgICAgICAgICAgIHNlbGYuZnAgPSBmaWxlCiAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gZ2V0YXR0cihmaWxlLCAnbmFtZScsIE5vbmUpCisgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgPSAxCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQorICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IFRydWUKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBrZXkgPT0gJ3InOgorICAgICAgICAgICAgaWYgbW9kZSA9PSAncic6CiAgICAgICAgICAgICAgICAgc2VsZi5fUmVhbEdldENvbnRlbnRzKCkKLSAgICAgICAgICAgIGVsaWYga2V5ID09ICd3JzoKKyAgICAgICAgICAgIGVsaWYgbW9kZSBpbiAoJ3cnLCAneCcpOgogICAgICAgICAgICAgICAgICMgc2V0IHRoZSBtb2RpZmllZCBmbGFnIHNvIGNlbnRyYWwgZGlyZWN0b3J5IGdldHMgd3JpdHRlbgogICAgICAgICAgICAgICAgICMgZXZlbiBpZiBubyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGFyY2hpdmUKICAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAnYSc6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCisgICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAgPSBfVGVsbGFibGUoc2VsZi5mcCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSAwCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgZmlsZS1saWtlIG9iamVjdHMgY2FuIHByb3ZpZGUgdGVsbCgpIGJ1dCBub3Qgc2VlaygpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IEZhbHNlCisgICAgICAgICAgICBlbGlmIG1vZGUgPT0gJ2EnOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaWYgZmlsZSBpcyBhIHppcCBmaWxlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1JlYWxHZXRDb250ZW50cygpCiAgICAgICAgICAgICAgICAgICAgICMgc2VlayB0byBzdGFydCBvZiBkaXJlY3RvcnkgYW5kIG92ZXJ3cml0ZQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKICAgICAgICAgICAgICAgICBleGNlcHQgQmFkWmlwRmlsZToKICAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGlzIG5vdCBhIHppcCBmaWxlLCBqdXN0IGFwcGVuZAogICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoMCwgMikKQEAgLTk1MiwxMyArMTA1MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAjIHNldCB0aGUgbW9kaWZpZWQgZmxhZyBzbyBjZW50cmFsIGRpcmVjdG9yeSBnZXRzIHdyaXR0ZW4KICAgICAgICAgICAgICAgICAgICAgIyBldmVuIGlmIG5vIGZpbGVzIGFyZSBhZGRlZCB0byB0aGUgYXJjaGl2ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdNb2RlIG11c3QgYmUgInIiLCAidyIgb3IgImEiJykKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBmcCA9IHNlbGYuZnAKICAgICAgICAgICAgIHNlbGYuZnAgPSBOb25lCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZVBhc3NlZDoKLSAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9mcGNsb3NlKGZwKQogICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CkBAIC05NjcsNiArMTA2NSwyMCBAQAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKICAgICAgICAgc2VsZi5jbG9zZSgpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFsnPCVzLiVzJyAlIChzZWxmLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19xdWFsbmFtZV9fKV0KKyAgICAgICAgaWYgc2VsZi5mcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVQYXNzZWQ6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGU9JXInICUgc2VsZi5mcCkKKyAgICAgICAgICAgIGVsaWYgc2VsZi5maWxlbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZW5hbWU9JXInICUgc2VsZi5maWxlbmFtZSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBtb2RlPSVyJyAlIHNlbGYubW9kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBbY2xvc2VkXScpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoJz4nKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKICAgICBkZWYgX1JlYWxHZXRDb250ZW50cyhzZWxmKToKICAgICAgICAgIiIiUmVhZCBpbiB0aGUgdGFibGUgb2YgY29udGVudHMgZm9yIHRoZSBaSVAgZmlsZS4iIiIKICAgICAgICAgZnAgPSBzZWxmLmZwCkBAIC0xMTMxLDIzICsxMjQzLDE3IEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gcmVhZCBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCiAKLSAgICAgICAgIyBPbmx5IG9wZW4gYSBuZXcgZmlsZSBmb3IgaW5zdGFuY2VzIHdoZXJlIHdlIHdlcmUgbm90Ci0gICAgICAgICMgZ2l2ZW4gYSBmaWxlIG9iamVjdCBpbiB0aGUgY29uc3RydWN0b3IKLSAgICAgICAgaWYgc2VsZi5fZmlsZVBhc3NlZDoKLSAgICAgICAgICAgIHplZl9maWxlID0gc2VsZi5mcAorICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluZm8gb2JqZWN0CisgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgWmlwSW5mbyk6CisgICAgICAgICAgICAjICduYW1lJyBpcyBhbHJlYWR5IGFuIGluZm8gb2JqZWN0CisgICAgICAgICAgICB6aW5mbyA9IG5hbWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHplZl9maWxlID0gaW8ub3BlbihzZWxmLmZpbGVuYW1lLCAncmInKQorICAgICAgICAgICAgIyBHZXQgaW5mbyBvYmplY3QgZm9yIG5hbWUKKyAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCiAKKyAgICAgICAgc2VsZi5fZmlsZVJlZkNudCArPSAxCisgICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwgc2VsZi5fZnBjbG9zZSwgc2VsZi5fbG9jaykKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBpbmZvIG9iamVjdAotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCBaaXBJbmZvKToKLSAgICAgICAgICAgICAgICAjICduYW1lJyBpcyBhbHJlYWR5IGFuIGluZm8gb2JqZWN0Ci0gICAgICAgICAgICAgICAgemluZm8gPSBuYW1lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCi0gICAgICAgICAgICAgICAgemluZm8gPSBzZWxmLmdldGluZm8obmFtZSkKLSAgICAgICAgICAgIHplZl9maWxlLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCwgMCkKLQogICAgICAgICAgICAgIyBTa2lwIHRoZSBmaWxlIGhlYWRlcjoKICAgICAgICAgICAgIGZoZWFkZXIgPSB6ZWZfZmlsZS5yZWFkKHNpemVGaWxlSGVhZGVyKQogICAgICAgICAgICAgaWYgbGVuKGZoZWFkZXIpICE9IHNpemVGaWxlSGVhZGVyOgpAQCAtMTIwNiwxMSArMTMxMiw5IEBACiAgICAgICAgICAgICAgICAgaWYgaFsxMV0gIT0gY2hlY2tfYnl0ZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUiLCBuYW1lKQogCi0gICAgICAgICAgICByZXR1cm4gWmlwRXh0RmlsZSh6ZWZfZmlsZSwgbW9kZSwgemluZm8sIHpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmlsZW9iaj1ub3Qgc2VsZi5fZmlsZVBhc3NlZCkKKyAgICAgICAgICAgIHJldHVybiBaaXBFeHRGaWxlKHplZl9maWxlLCBtb2RlLCB6aW5mbywgemQsIFRydWUpCiAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlUGFzc2VkOgotICAgICAgICAgICAgICAgIHplZl9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgIHplZl9maWxlLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgZXh0cmFjdChzZWxmLCBtZW1iZXIsIHBhdGg9Tm9uZSwgcHdkPU5vbmUpOgpAQCAtMTI5OCw4ICsxNDAyLDggQEAKICAgICAgICAgaWYgemluZm8uZmlsZW5hbWUgaW4gc2VsZi5OYW1lVG9JbmZvOgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdEdXBsaWNhdGUgbmFtZTogJXInICUgemluZm8uZmlsZW5hbWUsIHN0YWNrbGV2ZWw9MykKLSAgICAgICAgaWYgc2VsZi5tb2RlIG5vdCBpbiAoInciLCAiYSIpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCd3cml0ZSgpIHJlcXVpcmVzIG1vZGUgInciIG9yICJhIicpCisgICAgICAgIGlmIHNlbGYubW9kZSBub3QgaW4gKCd3JywgJ3gnLCAnYScpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKQEAgLTEzNDQsNjYgKzE0NDgsNzkgQEAKIAogICAgICAgICB6aW5mby5maWxlX3NpemUgPSBzdC5zdF9zaXplCiAgICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKLSAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGJ5dGVzCi0gICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6Ci0gICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgotICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGJ5dGVzCisgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAotICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQorICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQogCi0gICAgICAgIGlmIGlzZGlyOgotICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgIHppbmZvLkNSQyA9IDAKLSAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKKyAgICAgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICAgICAgICAgIHppbmZvLkNSQyA9IDAKKyAgICAgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCisgICAgICAgICAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCisgICAgICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKEZhbHNlKSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGNtcHIgPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwOAorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAjIE11c3Qgb3ZlcndyaXRlIENSQyBhbmQgc2l6ZXMgd2l0aCBjb3JyZWN0IGRhdGEgbGF0ZXIKKyAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgPSAwCisgICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIHNpemUgY2FuIGJlIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplCisgICAgICAgICAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCisgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSAqIDEuMDUgPiBaSVA2NF9MSU1JVAorICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCisgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gMAorICAgICAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWQoMTAyNCAqIDgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSBmaWxlX3NpemUgKyBsZW4oYnVmKQorICAgICAgICAgICAgICAgICAgICBDUkMgPSBjcmMzMihidWYsIENSQykgJiAweGZmZmZmZmZmCisgICAgICAgICAgICAgICAgICAgIGlmIGNtcHI6CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBjbXByLmNvbXByZXNzKGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCisgICAgICAgICAgICBpZiBjbXByOgorICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQorICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gZmlsZV9zaXplCisgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZQorICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKKyAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCisgICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCisgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBub3QgemlwNjQgYW5kIHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgaGFzIGluY3JlYXNlZCBkdXJpbmcgY29tcHJlc3NpbmcnKQorICAgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCisgICAgICAgICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKKyAgICAgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQorICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKKyAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCkKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQogICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgotICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCi0gICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCi0gICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgZmlsZV9zaXplID0gMAotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQotICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBDUkMgPSBjcmMzMihidWYsIENSQykgJiAweGZmZmZmZmZmCi0gICAgICAgICAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gY21wci5jb21wcmVzcyhidWYpCi0gICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQotICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICB6aW5mby5DUkMgPSBDUkMKLSAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplCi0gICAgICAgIGlmIG5vdCB6aXA2NCBhbmQgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIGhhcyBpbmNyZWFzZWQgZHVyaW5nIGNvbXByZXNzaW5nJykKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCi0gICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCi0gICAgICAgICMgY29ycmVjdCBDUkMgYW5kIGZpbGUgc2l6ZXMpCi0gICAgICAgIHBvc2l0aW9uID0gc2VsZi5mcC50ZWxsKCkgICAgICAgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKLSAgICAgICAgc2VsZi5mcC5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQsIDApCi0gICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgIHNlbGYuZnAuc2Vlayhwb3NpdGlvbiwgMCkKLSAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCi0gICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogCiAgICAgZGVmIHdyaXRlc3RyKHNlbGYsIHppbmZvX29yX2FyY25hbWUsIGRhdGEsIGNvbXByZXNzX3R5cGU9Tm9uZSk6CiAgICAgICAgICIiIldyaXRlIGEgZmlsZSBpbnRvIHRoZSBhcmNoaXZlLiAgVGhlIGNvbnRlbnRzIGlzICdkYXRhJywgd2hpY2gKQEAgLTE0MzAsMTU0ICsxNTQ3LDE3MSBAQAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKIAogICAgICAgICB6aW5mby5maWxlX3NpemUgPSBsZW4oZGF0YSkgICAgICAgICAgICAjIFVuY29tcHJlc3NlZCBzaXplCi0gICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCi0gICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCisgICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQorICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKLSAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICB6aW5mby5DUkMgPSBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmYgICAgICAgIyBDUkMtMzIgY2hlY2tzdW0KLSAgICAgICAgY28gPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKLSAgICAgICAgaWYgY286Ci0gICAgICAgICAgICBkYXRhID0gY28uY29tcHJlc3MoZGF0YSkgKyBjby5mbHVzaCgpCi0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gbGVuKGRhdGEpICAgICMgQ29tcHJlc3NlZCBzaXplCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gemluZm8uZmlsZV9zaXplCi0gICAgICAgIHppcDY0ID0gemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgXAotICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCi0gICAgICAgIGlmIHppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKLSAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgc2VsZi5mcC53cml0ZShkYXRhKQotICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDA4OgotICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgemluZm8uQ1JDLCB6aW5mby5jb21wcmVzc19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICBzZWxmLmZwLmZsdXNoKCkKLSAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCi0gICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZiAgICAgICAjIENSQy0zMiBjaGVja3N1bQorICAgICAgICAgICAgY28gPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKKyAgICAgICAgICAgIGlmIGNvOgorICAgICAgICAgICAgICAgIGRhdGEgPSBjby5jb21wcmVzcyhkYXRhKSArIGNvLmZsdXNoKCkKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gbGVuKGRhdGEpICAgICMgQ29tcHJlc3NlZCBzaXplCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSB6aW5mby5maWxlX3NpemUKKyAgICAgICAgICAgIHppcDY0ID0gemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgXAorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVAorICAgICAgICAgICAgaWYgemlwNjQgYW5kIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgorICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGRhdGEpCisgICAgICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDA4OgorICAgICAgICAgICAgICAgICMgV3JpdGUgQ1JDIGFuZCBmaWxlIHNpemVzIGFmdGVyIHRoZSBmaWxlIGRhdGEKKyAgICAgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgemlwNjQgZWxzZSAnPExMTCcKKyAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgemluZm8uQ1JDLCB6aW5mby5jb21wcmVzc19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplKSkKKyAgICAgICAgICAgIHNlbGYuZnAuZmx1c2goKQorICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQorICAgICAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCisgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAiIiJDYWxsIHRoZSAiY2xvc2UoKSIgbWV0aG9kIGluIGNhc2UgdGhlIHVzZXIgZm9yZ290LiIiIgogICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgIiIiQ2xvc2UgdGhlIGZpbGUsIGFuZCBmb3IgbW9kZSAidyIgYW5kICJhIiB3cml0ZSB0aGUgZW5kaW5nCisgICAgICAgICIiIkNsb3NlIHRoZSBmaWxlLCBhbmQgZm9yIG1vZGUgJ3cnLCAneCcgYW5kICdhJyB3cml0ZSB0aGUgZW5kaW5nCiAgICAgICAgIHJlY29yZHMuIiIiCiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoInciLCAiYSIpIGFuZCBzZWxmLl9kaWRNb2RpZnk6ICMgd3JpdGUgZW5kaW5nIHJlY29yZHMKLSAgICAgICAgICAgICAgICBwb3MxID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgICAgICBmb3IgemluZm8gaW4gc2VsZi5maWxlbGlzdDogICAgICAgICAjIHdyaXRlIGNlbnRyYWwgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgICAgIGR0ID0gemluZm8uZGF0ZV90aW1lCi0gICAgICAgICAgICAgICAgICAgIGRvc2RhdGUgPSAoZHRbMF0gLSAxOTgwKSA8PCA5IHwgZHRbMV0gPDwgNSB8IGR0WzJdCi0gICAgICAgICAgICAgICAgICAgIGRvc3RpbWUgPSBkdFszXSA8PCAxMSB8IGR0WzRdIDw8IDUgfCAoZHRbNV0gLy8gMikKLSAgICAgICAgICAgICAgICAgICAgZXh0cmEgPSBbXQotICAgICAgICAgICAgICAgICAgICBpZiB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBcCi0gICAgICAgICAgICAgICAgICAgICAgIG9yIHppbmZvLmNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5maWxlX3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uY29tcHJlc3Nfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSAweGZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSB6aW5mby5maWxlX3NpemUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSB6aW5mby5jb21wcmVzc19zaXplCi0KLSAgICAgICAgICAgICAgICAgICAgaWYgemluZm8uaGVhZGVyX29mZnNldCA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmhlYWRlcl9vZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gMHhmZmZmZmZmZgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IHppbmZvLmhlYWRlcl9vZmZzZXQKLQotICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhID0gemluZm8uZXh0cmEKLSAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSAwCi0gICAgICAgICAgICAgICAgICAgIGlmIGV4dHJhOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSBaSVA2NCBmaWVsZCB0byB0aGUgZXh0cmEncwotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YSA9IHN0cnVjdC5wYWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8SEgnICsgJ1EnKmxlbihleHRyYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQotCi0gICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IFpJUDY0X1ZFUlNJT04KLQotICAgICAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBlbGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtaW5fdmVyc2lvbiA9IG1heChMWk1BX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQotCi0gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uY3JlYXRlX3ZlcnNpb24pCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSB6aW5mby5fZW5jb2RlRmlsZW5hbWVGbGFncygpCi0gICAgICAgICAgICAgICAgICAgICAgICBjZW50ZGlyID0gc3RydWN0LnBhY2soc3RydWN0Q2VudHJhbERpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdDZW50cmFsRGlyLCBjcmVhdGVfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5jcmVhdGVfc3lzdGVtLCBleHRyYWN0X3ZlcnNpb24sIHppbmZvLnJlc2VydmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfYml0cywgemluZm8uY29tcHJlc3NfdHlwZSwgZG9zdGltZSwgZG9zZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5DUkMsIGNvbXByZXNzX3NpemUsIGZpbGVfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZmlsZW5hbWUpLCBsZW4oZXh0cmFfZGF0YSksIGxlbih6aW5mby5jb21tZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB6aW5mby5pbnRlcm5hbF9hdHRyLCB6aW5mby5leHRlcm5hbF9hdHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBEZXByZWNhdGlvbldhcm5pbmc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgoc3RydWN0Q2VudHJhbERpciwgc3RyaW5nQ2VudHJhbERpciwgY3JlYXRlX3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uY3JlYXRlX3N5c3RlbSwgZXh0cmFjdF92ZXJzaW9uLCB6aW5mby5yZXNlcnZlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMsIHppbmZvLmNvbXByZXNzX3R5cGUsIGRvc3RpbWUsIGRvc2RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uQ1JDLCBjb21wcmVzc19zaXplLCBmaWxlX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHppbmZvLmZpbGVuYW1lKSwgbGVuKGV4dHJhX2RhdGEpLCBsZW4oemluZm8uY29tbWVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgemluZm8uaW50ZXJuYWxfYXR0ciwgemluZm8uZXh0ZXJuYWxfYXR0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0KSwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShjZW50ZGlyKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGZpbGVuYW1lKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGV4dHJhX2RhdGEpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uY29tbWVudCkKLQotICAgICAgICAgICAgICAgIHBvczIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgICAgICMgV3JpdGUgZW5kLW9mLXppcC1hcmNoaXZlIHJlY29yZAotICAgICAgICAgICAgICAgIGNlbnREaXJDb3VudCA9IGxlbihzZWxmLmZpbGVsaXN0KQotICAgICAgICAgICAgICAgIGNlbnREaXJTaXplID0gcG9zMiAtIHBvczEKLSAgICAgICAgICAgICAgICBjZW50RGlyT2Zmc2V0ID0gcG9zMQotICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIGNlbnREaXJDb3VudCA+IFpJUF9GSUxFQ09VTlRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkZpbGVzIGNvdW50IgotICAgICAgICAgICAgICAgIGVsaWYgY2VudERpck9mZnNldCA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJDZW50cmFsIGRpcmVjdG9yeSBvZmZzZXQiCi0gICAgICAgICAgICAgICAgZWxpZiBjZW50RGlyU2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJDZW50cmFsIGRpcmVjdG9yeSBzaXplIgotICAgICAgICAgICAgICAgIGlmIHJlcXVpcmVzX3ppcDY0OgotICAgICAgICAgICAgICAgICAgICAjIE5lZWQgdG8gd3JpdGUgdGhlIFpJUDY0IGVuZC1vZi1hcmNoaXZlIHJlY29yZHMKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUocmVxdWlyZXNfemlwNjQgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKLSAgICAgICAgICAgICAgICAgICAgemlwNjRlbmRyZWMgPSBzdHJ1Y3QucGFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdEVuZEFyY2hpdmU2NCwgc3RyaW5nRW5kQXJjaGl2ZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgNDQsIDQ1LCA0NSwgMCwgMCwgY2VudERpckNvdW50LCBjZW50RGlyQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjZW50RGlyU2l6ZSwgY2VudERpck9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGVuZHJlYykKLQotICAgICAgICAgICAgICAgICAgICB6aXA2NGxvY3JlYyA9IHN0cnVjdC5wYWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0RW5kQXJjaGl2ZTY0TG9jYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0VuZEFyY2hpdmU2NExvY2F0b3IsIDAsIHBvczIsIDEpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemlwNjRsb2NyZWMpCi0gICAgICAgICAgICAgICAgICAgIGNlbnREaXJDb3VudCA9IG1pbihjZW50RGlyQ291bnQsIDB4RkZGRikKLSAgICAgICAgICAgICAgICAgICAgY2VudERpclNpemUgPSBtaW4oY2VudERpclNpemUsIDB4RkZGRkZGRkYpCi0gICAgICAgICAgICAgICAgICAgIGNlbnREaXJPZmZzZXQgPSBtaW4oY2VudERpck9mZnNldCwgMHhGRkZGRkZGRikKLQotICAgICAgICAgICAgICAgIGVuZHJlYyA9IHN0cnVjdC5wYWNrKHN0cnVjdEVuZEFyY2hpdmUsIHN0cmluZ0VuZEFyY2hpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgY2VudERpckNvdW50LCBjZW50RGlyQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VudERpclNpemUsIGNlbnREaXJPZmZzZXQsIGxlbihzZWxmLl9jb21tZW50KSkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGVuZHJlYykKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHNlbGYuX2NvbW1lbnQpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCisgICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gKCd3JywgJ3gnLCAnYScpIGFuZCBzZWxmLl9kaWRNb2RpZnk6ICMgd3JpdGUgZW5kaW5nIHJlY29yZHMKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9lbmRfcmVjb3JkKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZwID0gc2VsZi5mcAogICAgICAgICAgICAgc2VsZi5mcCA9IE5vbmUKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlUGFzc2VkOgotICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UoZnApCisKKyAgICBkZWYgX3dyaXRlX2VuZF9yZWNvcmQoc2VsZik6CisgICAgICAgIGZvciB6aW5mbyBpbiBzZWxmLmZpbGVsaXN0OiAgICAgICAgICMgd3JpdGUgY2VudHJhbCBkaXJlY3RvcnkKKyAgICAgICAgICAgIGR0ID0gemluZm8uZGF0ZV90aW1lCisgICAgICAgICAgICBkb3NkYXRlID0gKGR0WzBdIC0gMTk4MCkgPDwgOSB8IGR0WzFdIDw8IDUgfCBkdFsyXQorICAgICAgICAgICAgZG9zdGltZSA9IGR0WzNdIDw8IDExIHwgZHRbNF0gPDwgNSB8IChkdFs1XSAvLyAyKQorICAgICAgICAgICAgZXh0cmEgPSBbXQorICAgICAgICAgICAgaWYgemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQgXAorICAgICAgICAgICAgICAgb3IgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZCh6aW5mby5maWxlX3NpemUpCisgICAgICAgICAgICAgICAgZXh0cmEuYXBwZW5kKHppbmZvLmNvbXByZXNzX3NpemUpCisgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgorICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSAweGZmZmZmZmZmCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQorICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSB6aW5mby5jb21wcmVzc19zaXplCisKKyAgICAgICAgICAgIGlmIHppbmZvLmhlYWRlcl9vZmZzZXQgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uaGVhZGVyX29mZnNldCkKKyAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gMHhmZmZmZmZmZgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoZWFkZXJfb2Zmc2V0ID0gemluZm8uaGVhZGVyX29mZnNldAorCisgICAgICAgICAgICBleHRyYV9kYXRhID0gemluZm8uZXh0cmEKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gMAorICAgICAgICAgICAgaWYgZXh0cmE6CisgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSBaSVA2NCBmaWVsZCB0byB0aGUgZXh0cmEncworICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSBzdHJ1Y3QucGFjaygKKyAgICAgICAgICAgICAgICAgICAgJzxISCcgKyAnUScqbGVuKGV4dHJhKSwKKyAgICAgICAgICAgICAgICAgICAgMSwgOCpsZW4oZXh0cmEpLCAqZXh0cmEpICsgZXh0cmFfZGF0YQorCisgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCisKKyAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorICAgICAgICAgICAgZWxpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KExaTUFfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisKKyAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSB6aW5mby5fZW5jb2RlRmlsZW5hbWVGbGFncygpCisgICAgICAgICAgICAgICAgY2VudGRpciA9IHN0cnVjdC5wYWNrKHN0cnVjdENlbnRyYWxEaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ0NlbnRyYWxEaXIsIGNyZWF0ZV92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5jcmVhdGVfc3lzdGVtLCBleHRyYWN0X3ZlcnNpb24sIHppbmZvLnJlc2VydmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnX2JpdHMsIHppbmZvLmNvbXByZXNzX3R5cGUsIGRvc3RpbWUsIGRvc2RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLkNSQywgY29tcHJlc3Nfc2l6ZSwgZmlsZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZmlsZW5hbWUpLCBsZW4oZXh0cmFfZGF0YSksIGxlbih6aW5mby5jb21tZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgemluZm8uaW50ZXJuYWxfYXR0ciwgemluZm8uZXh0ZXJuYWxfYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCkKKyAgICAgICAgICAgIGV4Y2VwdCBEZXByZWNhdGlvbldhcm5pbmc6CisgICAgICAgICAgICAgICAgcHJpbnQoKHN0cnVjdENlbnRyYWxEaXIsIHN0cmluZ0NlbnRyYWxEaXIsIGNyZWF0ZV92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5jcmVhdGVfc3lzdGVtLCBleHRyYWN0X3ZlcnNpb24sIHppbmZvLnJlc2VydmVkLAorICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMsIHppbmZvLmNvbXByZXNzX3R5cGUsIGRvc3RpbWUsIGRvc2RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLkNSQywgY29tcHJlc3Nfc2l6ZSwgZmlsZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICBsZW4oemluZm8uZmlsZW5hbWUpLCBsZW4oZXh0cmFfZGF0YSksIGxlbih6aW5mby5jb21tZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwgemluZm8uaW50ZXJuYWxfYXR0ciwgemluZm8uZXh0ZXJuYWxfYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZShjZW50ZGlyKQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZShmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZXh0cmFfZGF0YSkKKyAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uY29tbWVudCkKKworICAgICAgICBwb3MyID0gc2VsZi5mcC50ZWxsKCkKKyAgICAgICAgIyBXcml0ZSBlbmQtb2YtemlwLWFyY2hpdmUgcmVjb3JkCisgICAgICAgIGNlbnREaXJDb3VudCA9IGxlbihzZWxmLmZpbGVsaXN0KQorICAgICAgICBjZW50RGlyU2l6ZSA9IHBvczIgLSBzZWxmLnN0YXJ0X2RpcgorICAgICAgICBjZW50RGlyT2Zmc2V0ID0gc2VsZi5zdGFydF9kaXIKKyAgICAgICAgcmVxdWlyZXNfemlwNjQgPSBOb25lCisgICAgICAgIGlmIGNlbnREaXJDb3VudCA+IFpJUF9GSUxFQ09VTlRfTElNSVQ6CisgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJGaWxlcyBjb3VudCIKKyAgICAgICAgZWxpZiBjZW50RGlyT2Zmc2V0ID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICByZXF1aXJlc196aXA2NCA9ICJDZW50cmFsIGRpcmVjdG9yeSBvZmZzZXQiCisgICAgICAgIGVsaWYgY2VudERpclNpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkNlbnRyYWwgZGlyZWN0b3J5IHNpemUiCisgICAgICAgIGlmIHJlcXVpcmVzX3ppcDY0OgorICAgICAgICAgICAgIyBOZWVkIHRvIHdyaXRlIHRoZSBaSVA2NCBlbmQtb2YtYXJjaGl2ZSByZWNvcmRzCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKKyAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUocmVxdWlyZXNfemlwNjQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCisgICAgICAgICAgICB6aXA2NGVuZHJlYyA9IHN0cnVjdC5wYWNrKAorICAgICAgICAgICAgICAgIHN0cnVjdEVuZEFyY2hpdmU2NCwgc3RyaW5nRW5kQXJjaGl2ZTY0LAorICAgICAgICAgICAgICAgIDQ0LCA0NSwgNDUsIDAsIDAsIGNlbnREaXJDb3VudCwgY2VudERpckNvdW50LAorICAgICAgICAgICAgICAgIGNlbnREaXJTaXplLCBjZW50RGlyT2Zmc2V0KQorICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aXA2NGVuZHJlYykKKworICAgICAgICAgICAgemlwNjRsb2NyZWMgPSBzdHJ1Y3QucGFjaygKKyAgICAgICAgICAgICAgICBzdHJ1Y3RFbmRBcmNoaXZlNjRMb2NhdG9yLAorICAgICAgICAgICAgICAgIHN0cmluZ0VuZEFyY2hpdmU2NExvY2F0b3IsIDAsIHBvczIsIDEpCisgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppcDY0bG9jcmVjKQorICAgICAgICAgICAgY2VudERpckNvdW50ID0gbWluKGNlbnREaXJDb3VudCwgMHhGRkZGKQorICAgICAgICAgICAgY2VudERpclNpemUgPSBtaW4oY2VudERpclNpemUsIDB4RkZGRkZGRkYpCisgICAgICAgICAgICBjZW50RGlyT2Zmc2V0ID0gbWluKGNlbnREaXJPZmZzZXQsIDB4RkZGRkZGRkYpCisKKyAgICAgICAgZW5kcmVjID0gc3RydWN0LnBhY2soc3RydWN0RW5kQXJjaGl2ZSwgc3RyaW5nRW5kQXJjaGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgY2VudERpckNvdW50LCBjZW50RGlyQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnREaXJTaXplLCBjZW50RGlyT2Zmc2V0LCBsZW4oc2VsZi5fY29tbWVudCkpCisgICAgICAgIHNlbGYuZnAud3JpdGUoZW5kcmVjKQorICAgICAgICBzZWxmLmZwLndyaXRlKHNlbGYuX2NvbW1lbnQpCisgICAgICAgIHNlbGYuZnAuZmx1c2goKQorCisgICAgZGVmIF9mcGNsb3NlKHNlbGYsIGZwKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2ZpbGVSZWZDbnQgPiAwCisgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgLT0gMQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZVJlZkNudCBhbmQgbm90IHNlbGYuX2ZpbGVQYXNzZWQ6CisgICAgICAgICAgICBmcC5jbG9zZSgpCiAKIAogY2xhc3MgUHlaaXBGaWxlKFppcEZpbGUpOgpAQCAtMTU5Nyw3ICsxNzMxLDcgQEAKICAgICAgICAgdGhlIG1vZHVsZXMgaW50byB0aGUgYXJjaGl2ZS4gIElmIHBhdGhuYW1lIGlzIGEgcGxhaW4KICAgICAgICAgZGlyZWN0b3J5LCBsaXN0ZGlyICoucHkgYW5kIGVudGVyIGFsbCBtb2R1bGVzLiAgRWxzZSwgcGF0aG5hbWUKICAgICAgICAgbXVzdCBiZSBhIFB5dGhvbiAqLnB5IGZpbGUgYW5kIHRoZSBtb2R1bGUgd2lsbCBiZSBwdXQgaW50byB0aGUKLSAgICAgICAgYXJjaGl2ZS4gIEFkZGVkIG1vZHVsZXMgYXJlIGFsd2F5cyBtb2R1bGUucHlvIG9yIG1vZHVsZS5weWMuCisgICAgICAgIGFyY2hpdmUuICBBZGRlZCBtb2R1bGVzIGFyZSBhbHdheXMgbW9kdWxlLnB5Yy4KICAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCBjb21waWxlIHRoZSBtb2R1bGUucHkgaW50byBtb2R1bGUucHljIGlmCiAgICAgICAgIG5lY2Vzc2FyeS4KICAgICAgICAgSWYgZmlsdGVyZnVuYyhwYXRobmFtZSkgaXMgZ2l2ZW4sIGl0IGlzIGNhbGxlZCB3aXRoIGV2ZXJ5IGFyZ3VtZW50LgpAQCAtMTY5MCw0NiArMTgyNCw1OSBAQAogCiAgICAgICAgIGZpbGVfcHkgID0gcGF0aG5hbWUgKyAiLnB5IgogICAgICAgICBmaWxlX3B5YyA9IHBhdGhuYW1lICsgIi5weWMiCi0gICAgICAgIGZpbGVfcHlvID0gcGF0aG5hbWUgKyAiLnB5byIKLSAgICAgICAgcHljYWNoZV9weWMgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBUcnVlKQotICAgICAgICBweWNhY2hlX3B5byA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIEZhbHNlKQorICAgICAgICBweWNhY2hlX29wdDAgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBvcHRpbWl6YXRpb249JycpCisgICAgICAgIHB5Y2FjaGVfb3B0MSA9IGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlKGZpbGVfcHksIG9wdGltaXphdGlvbj0xKQorICAgICAgICBweWNhY2hlX29wdDIgPSBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShmaWxlX3B5LCBvcHRpbWl6YXRpb249MikKICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemUgPT0gLTE6CiAgICAgICAgICAgICAjIGxlZ2FjeSBtb2RlOiB1c2Ugd2hhdGV2ZXIgZmlsZSBpcyBwcmVzZW50Ci0gICAgICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUoZmlsZV9weW8pIGFuZAotICAgICAgICAgICAgICAgIG9zLnN0YXQoZmlsZV9weW8pLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgotICAgICAgICAgICAgICAgICMgVXNlIC5weW8gZmlsZS4KLSAgICAgICAgICAgICAgICBhcmNuYW1lID0gZm5hbWUgPSBmaWxlX3B5bwotICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUoZmlsZV9weWMpIGFuZAorICAgICAgICAgICAgaWYgKG9zLnBhdGguaXNmaWxlKGZpbGVfcHljKSBhbmQKICAgICAgICAgICAgICAgICAgIG9zLnN0YXQoZmlsZV9weWMpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgogICAgICAgICAgICAgICAgICMgVXNlIC5weWMgZmlsZS4KICAgICAgICAgICAgICAgICBhcmNuYW1lID0gZm5hbWUgPSBmaWxlX3B5YwotICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9weWMpIGFuZAotICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX3B5Yykuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CisgICAgICAgICAgICBlbGlmIChvcy5wYXRoLmlzZmlsZShweWNhY2hlX29wdDApIGFuZAorICAgICAgICAgICAgICAgICAgb3Muc3RhdChweWNhY2hlX29wdDApLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgogICAgICAgICAgICAgICAgICMgVXNlIHRoZSBfX3B5Y2FjaGVfXy8qLnB5YyBmaWxlLCBidXQgd3JpdGUgaXQgdG8gdGhlIGxlZ2FjeSBweWMKICAgICAgICAgICAgICAgICAjIGZpbGUgbmFtZSBpbiB0aGUgYXJjaGl2ZS4KLSAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfcHljCisgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDAKICAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKLSAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfcHlvKSBhbmQKLSAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9weW8pLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgotICAgICAgICAgICAgICAgICMgVXNlIHRoZSBfX3B5Y2FjaGVfXy8qLnB5byBmaWxlLCBidXQgd3JpdGUgaXQgdG8gdGhlIGxlZ2FjeSBweW8KKyAgICAgICAgICAgIGVsaWYgKG9zLnBhdGguaXNmaWxlKHB5Y2FjaGVfb3B0MSkgYW5kCisgICAgICAgICAgICAgICAgICBvcy5zdGF0KHB5Y2FjaGVfb3B0MSkuc3RfbXRpbWUgPj0gb3Muc3RhdChmaWxlX3B5KS5zdF9tdGltZSk6CisgICAgICAgICAgICAgICAgIyBVc2UgdGhlIF9fcHljYWNoZV9fLyoucHljIGZpbGUsIGJ1dCB3cml0ZSBpdCB0byB0aGUgbGVnYWN5IHB5YwogICAgICAgICAgICAgICAgICMgZmlsZSBuYW1lIGluIHRoZSBhcmNoaXZlLgotICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9weW8KLSAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weW8KKyAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MQorICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YworICAgICAgICAgICAgZWxpZiAob3MucGF0aC5pc2ZpbGUocHljYWNoZV9vcHQyKSBhbmQKKyAgICAgICAgICAgICAgICAgIG9zLnN0YXQocHljYWNoZV9vcHQyKS5zdF9tdGltZSA+PSBvcy5zdGF0KGZpbGVfcHkpLnN0X210aW1lKToKKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgX19weWNhY2hlX18vKi5weWMgZmlsZSwgYnV0IHdyaXRlIGl0IHRvIHRoZSBsZWdhY3kgcHljCisgICAgICAgICAgICAgICAgIyBmaWxlIG5hbWUgaW4gdGhlIGFyY2hpdmUuCisgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDIKKyAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBDb21waWxlIHB5IGludG8gUEVQIDMxNDcgcHljIGZpbGUuCiAgICAgICAgICAgICAgICAgaWYgX2NvbXBpbGUoZmlsZV9weSk6Ci0gICAgICAgICAgICAgICAgICAgIGZuYW1lID0gKHB5Y2FjaGVfcHljIGlmIF9fZGVidWdfXyBlbHNlIHB5Y2FjaGVfcHlvKQotICAgICAgICAgICAgICAgICAgICBhcmNuYW1lID0gKGZpbGVfcHljIGlmIF9fZGVidWdfXyBlbHNlIGZpbGVfcHlvKQorICAgICAgICAgICAgICAgICAgICBpZiBzeXMuZmxhZ3Mub3B0aW1pemUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQwCisgICAgICAgICAgICAgICAgICAgIGVsaWYgc3lzLmZsYWdzLm9wdGltaXplID09IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDIKKyAgICAgICAgICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVfcHljCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSBhcmNuYW1lID0gZmlsZV9weQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBuZXcgbW9kZTogdXNlIGdpdmVuIG9wdGltaXphdGlvbiBsZXZlbAogICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemUgPT0gMDoKLSAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfcHljCisgICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX29wdDAKICAgICAgICAgICAgICAgICBhcmNuYW1lID0gZmlsZV9weWMKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm5hbWUgPSBweWNhY2hlX3B5bwotICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5bworICAgICAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlX3B5YworICAgICAgICAgICAgICAgIGlmIHNlbGYuX29wdGltaXplID09IDE6CisgICAgICAgICAgICAgICAgICAgIGZuYW1lID0gcHljYWNoZV9vcHQxCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9vcHRpbWl6ZSA9PSAyOgorICAgICAgICAgICAgICAgICAgICBmbmFtZSA9IHB5Y2FjaGVfb3B0MgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIHZhbHVlIGZvciAnb3B0aW1pemUnOiB7IXJ9Ii5mb3JtYXQoc2VsZi5fb3B0aW1pemUpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQogICAgICAgICAgICAgaWYgbm90IChvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kCiAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQoZm5hbWUpLnN0X210aW1lID49IG9zLnN0YXQoZmlsZV9weSkuc3RfbXRpbWUpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBfY29tcGlsZShmaWxlX3B5LCBvcHRpbWl6ZT1zZWxmLl9vcHRpbWl6ZSk6CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CmluZGV4IGRiNjg3YmUuLmY4YjI1ZmEgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CisrKyBiL01hYy9CdWlsZFNjcmlwdC9SRUFETUUudHh0CkBAIC0xLDI1ICsxLDE1IEBACiBCdWlsZGluZyBhIFB5dGhvbiBNYWMgT1MgWCBkaXN0cmlidXRpb24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgYGBidWlsZC1pbnN0YWxsZXIucHlgYCBzY3JpcHQgY3JlYXRlcyBQeXRob24gZGlzdHJpYnV0aW9ucywgaW5jbHVkaW5nCi1jZXJ0YWluIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBhcyBuZWNlc3NhcnkuICBJdCBidWlsZHMgYSBjb21wbGV0ZSAKLWZyYW1ld29yay1iYXNlZCBQeXRob24gb3V0LW9mLXRyZWUsIGluc3RhbGxzIGl0IGluIGEgZnVubnkgcGxhY2Ugd2l0aCAKLSRERVNUUk9PVCwgbWFzc2FnZXMgdGhhdCBpbnN0YWxsYXRpb24gdG8gcmVtb3ZlIC5weWMgZmlsZXMgYW5kIHN1Y2gsIGNyZWF0ZXMgCi1hbiBJbnN0YWxsZXIgcGFja2FnZSBmcm9tIHRoZSBpbnN0YWxsYXRpb24gcGx1cyBvdGhlciBmaWxlcyBpbiBgYHJlc291cmNlc2BgIAorVGhlIGBgYnVpbGQtaW5zdGFsbC5weWBgIHNjcmlwdCBjcmVhdGVzIFB5dGhvbiBkaXN0cmlidXRpb25zLCBpbmNsdWRpbmcKK2NlcnRhaW4gdGhpcmQtcGFydHkgbGlicmFyaWVzIGFzIG5lY2Vzc2FyeS4gIEl0IGJ1aWxkcyBhIGNvbXBsZXRlCitmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG91dC1vZi10cmVlLCBpbnN0YWxscyBpdCBpbiBhIGZ1bm55IHBsYWNlIHdpdGgKKyRERVNUUk9PVCwgbWFzc2FnZXMgdGhhdCBpbnN0YWxsYXRpb24gdG8gcmVtb3ZlIC5weWMgZmlsZXMgYW5kIHN1Y2gsIGNyZWF0ZXMKK2FuIEluc3RhbGxlciBwYWNrYWdlIGZyb20gdGhlIGluc3RhbGxhdGlvbiBwbHVzIG90aGVyIGZpbGVzIGluIGBgcmVzb3VyY2VzYGAKIGFuZCBgYHNjcmlwdHNgYCBhbmQgcGxhY2VkIHRoYXQgb24gYSBgYC5kbWdgYCBkaXNrIGltYWdlLgogCi1UaGlzIGluc3RhbGxlcnMgYnVpbHQgYnkgdGhpcyBzY3JpcHQgYXJlIGxlZ2FjeSBidW5kbGUgaW5zdGFsbGVycyB0aGF0IGhhdmUKLWJlZW4gc3VwcG9ydGVkIGZyb20gdGhlIGVhcmx5IGRheXMgb2YgT1MgWC4gIEluIHBhcnRpY3VsYXIsIHRoZXkgYXJlIHN1cHBvcnRlZAotb24gT1MgWCAxMC4zLjksIHRoZSBlYXJsaWVzdCBzdXBwb3J0ZWQgcmVsZWFzZSBmb3IgYnVpbGRzIGZyb20gdGhpcyBzY3JpcHQuCi0KLUJlZ2lubmluZyB3aXRoIFB5dGhvbiAzLjQuMiwgUFNGIHByYWN0aWNlIGlzIHRvIGJ1aWxkIHR3byBpbnN0YWxsZXIgdmFyaWFudHMKLXVzaW5nIHRoZSBuZXdlciBmbGF0IHBhY2thZ2UgZm9ybWF0LCBzdXBwb3J0ZWQgb24gMTAuNSssIGFuZCBzaWduZWQgd2l0aCB0aGUKLWJ1aWxkZXIncyBBcHBsZSBkZXZlbG9wZXIga2V5LCBhbGxvd2luZyBkb3dubG9hZGVkIHBhY2thZ2VzIHRvIHNhdGlzZnkgQXBwbGUncwotZGVmYXVsdCBHYXRla2VlcGVyIHBvbGljeSAoZS5nLiBzdGFydGluZyB3aXRoIDEwLjgsIEFwcGxlIHN0b3JlIGRvd25sb2FkcyBhbmQKLUFwcGxlIGRldmVsb3BlciBJRCBzaWduZWQgYXBwcyBhbmQgaW5zdGFsbGVyIHBhY2thZ2VzKS4gIFRoZSBwcm9jZXNzIGZvcgotdHJhbnNmb3JtaW5nIHRoZSBvdXRwdXQgYnVpbGQgYXJ0aWZhY3RzIGludG8gc2lnbmVkIGZsYXQgcGFja2FnZXMgaXMgbm90Ci15ZXQgaW50ZWdyYXRlZCBpbnRvIGBgYnVpbGQtaW5zdGFsbGVyLnB5YGAuICBUaGUgc3RlcHMgcHJpb3IgdG8gdGhlIGZsYXQKLXBhY2thZ2UgY3JlYXRpb24gYXJlIHRoZSBzYW1lIGFzIGZvciAzLjQuMSBiZWxvdy4KK0ZvciBQeXRob24gMy40LjAsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCitmb3IgZWFjaCByZWxlYXNlLgogCiAxLiAgMzItYml0LW9ubHksIGkzODYgYW5kIFBQQyB1bml2ZXJzYWwsIGNhcGFibGUgb24gcnVubmluZyBvbiBhbGwgbWFjaGluZXMKICAgICBzdXBwb3J0ZWQgYnkgTWFjIE9TIFggMTAuNSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuOTo6CkBAIC0zMSw3ICsyMSw2IEBACiAKICAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcwogCi0gICAgICAgICogbGliY3J5cHRvIGFuZCBsaWJzc2wgZnJvbSBPcGVuU1NMIDEuMC4xIChuZXcsIGFzIG9mIDMuNC4zKQogICAgICAgICAqIE5DdXJzZXMgNS45IChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTUwMzcpCiAgICAgICAgICogU1FMaXRlIDMuOC4xMQogICAgICAgICAqIFhaIDUuMC41CkBAIC03Myw3ICs2Miw2IEBACiAKICAgICAtIHVzZXMgc3lzdGVtLXN1cHBsaWVkIHZlcnNpb25zIG9mIHRoaXJkLXBhcnR5IGxpYnJhcmllcwogCi0gICAgICAgICogbGliY3J5cHRvIGFuZCBsaWJzc2wgZnJvbSBBcHBsZSBPcGVuU1NMIDAuOS44CiAgICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQogCiAgICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LjE1LjEgKG9yIGxhdGVyKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCkBAIC0xMDIsNiArOTAsNDcgQEAKICAgICAgICAgICB0aGF0IHRoZSBYY29kZSAzIGdjYy00LjIgY29tcGlsZXIgaGFzIGhhZC4KIAogCisqICAgRm9yIFB5dGhvbiAyLjcueCBhbmQgMy4yLngsIHRoZSAzMi1iaXQtb25seSBpbnN0YWxsZXIgd2FzIGNvbmZpZ3VyZWQgdG8KKyAgICBzdXBwb3J0IE1hYyBPUyBYIDEwLjMuOSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuNi4gIEJlY2F1c2UgaXQgaXMKKyAgICBiZWxpZXZlZCB0aGF0IHRoZXJlIGFyZSBmZXcgc3lzdGVtcyBzdGlsbCBydW5uaW5nIE9TIFggMTAuMyBvciAxMC40CisgICAgYW5kIGJlY2F1c2UgaXQgaGFzIGJlY29tZSBpbmNyZWFzaW5nbHkgZGlmZmljdWx0IHRvIHRlc3QgYW5kCisgICAgc3VwcG9ydCB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlc2UgZWFybGllciBzeXN0ZW1zLCBhcyBvZiBQeXRob24gMy4zLjAgdGhlIFBTRgorICAgIDMyLWJpdCBpbnN0YWxsZXIgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoZW0uICBGb3IgcmVmZXJlbmNlIGluIGJ1aWxkaW5nIHN1Y2gKKyAgICBhbiBpbnN0YWxsZXIgeW91cnNlbGYsIHRoZSBkZXRhaWxzIGFyZTo6CisKKyAgICAgICAgL3Vzci9iaW4vcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCisgICAgICAgICAgICAtLXNkay1wYXRoPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgXAorICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9MzItYml0IFwKKyAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC4zCisKKyAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogQnppcDIKKyAgICAgICAgKiBOQ3Vyc2VzCisgICAgICAgICogR05VIFJlYWRsaW5lIChHUEwpCisgICAgICAgICogU1FMaXRlIDMKKyAgICAgICAgKiBYWgorICAgICAgICAqIFpsaWIgMS4yLjMKKyAgICAgICAgKiBPcmFjbGUgU2xlZXB5Y2F0IERCIDQuOCAoUHl0aG9uIDIueCBvbmx5KQorCisgICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBgYFRjbC9UayA4LjRgYCAoY3VycmVudGx5IDguNC4yMCkgdG8gYmUgaW5zdGFsbGVkIGZvciBidWlsZGluZworCisgICAgLSByZWNvbW1lbmRlZCBidWlsZCBlbnZpcm9ubWVudDoKKworICAgICAgICAqIE1hYyBPUyBYIDEwLjUuOCBQUEMgb3IgSW50ZWwKKyAgICAgICAgKiBYY29kZSAzLjEuNCAob3IgbGF0ZXIpCisgICAgICAgICogYGBNYWNPU1gxMC40dWBgIFNESyAobGF0ZXIgU0RLcyBkbyBub3Qgc3VwcG9ydCBQUEMgRzMgcHJvY2Vzc29ycykKKyAgICAgICAgKiBgYE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC4zYGAKKyAgICAgICAgKiBBcHBsZSBgYGdjYy00LjBgYAorICAgICAgICAqIHN5c3RlbSBQeXRob24gMi41IGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIHdpdGggU3BoaW54CisKKyAgICAtIGFsdGVybmF0ZSBidWlsZCBlbnZpcm9ubWVudHM6CisKKyAgICAgICAgKiBNYWMgT1MgWCAxMC42Ljggd2l0aCBYY29kZSAzLjIuNgorICAgICAgICAgICAgLSBuZWVkIHRvIGNoYW5nZSBgYC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL3tUY2wsVGt9LmZyYW1ld29yay9WZXJzaW9uL0N1cnJlbnRgYCB0byBgYDguNGBgCisKKworCiBHZW5lcmFsIFByZXJlcXVpc2l0ZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNDUsNyArMTc0LDcgQEAKIEJ1aWxkaW5nIG90aGVyIHVuaXZlcnNhbCBpbnN0YWxsZXJzCiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCi1JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIGEgNC13YXkgdW5pdmVyc2FsIGluc3RhbGxlciB0aGF0IHJ1bnMgb24gCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGJ1aWxkIGEgNC13YXkgdW5pdmVyc2FsIGluc3RhbGxlciB0aGF0IHJ1bnMgb24KIE9TIFggMTAuNSBMZW9wYXJkIG9yIGxhdGVyOjoKIAogICAgIC91c3IvYmluL3B5dGhvbiAvYnVpbGQtaW5zdGFsbGVyLnB5IFwKQEAgLTE3OSw3ICsyMDgsNyBAQAogCiAgICAgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QgLXcgLXUgYWxsLC1sYXJnZWZpbGUKICAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4tMzIgLW0gdGVzdCAtdyAtdSBhbGwKLSAgICAKKwogQ2VydGFpbiB0ZXN0cyB3aWxsIGJlIHNraXBwZWQgYW5kIHNvbWUgY2F1c2UgdGhlIGludGVycHJldGVyIHRvIGZhaWwKIHdoaWNoIHdpbGwgbGlrZWx5IGdlbmVyYXRlIGBgUHl0aG9uIHF1aXQgdW5leHBlY3RlZGx5YGAgYWxlcnQgbWVzc2FnZXMKIHRvIGJlIGdlbmVyYXRlZCBhdCBzZXZlcmFsIHBvaW50cyBkdXJpbmcgYSB0ZXN0IHJ1bi4gIFRoZXNlIGFyZSBub3JtYWwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CmluZGV4IGYzNjNlYmQuLmU4YTExMjYgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKKysrIGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQpAQCAtNTcyLDcgKzU3Miw3IEBACiAgICAgIiIiCiAgICAgdHJ5OgogICAgICAgICBmID0gb3Blbihjb25maWdmaWxlLCAiciIpCi0gICAgZXhjZXB0OgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBmYXRhbCgiRnJhbWV3b3JrIGNvbmZpZ3VyYXRpb24gZmlsZSBub3QgZm91bmQ6ICVzIiAlIGNvbmZpZ2ZpbGUpCiAKICAgICBmb3IgbCBpbiBmOgpAQCAtODE0LDcgKzgxNCw3IEBACiAgICAgZXhjZXB0OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKIGRlZiB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbmFtZSk6CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKaW5kZXggNTJkOGI4MC4uNjVlM2YxNCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgpAQCAtMSw0ICsxLDQgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0N1xjb2NvYXN1YnJ0ZjU3MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQ4XGNvY29hc3VicnRmMTcwCiB7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7XGYxXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXJOZXdQU01UO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KIFxtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTMzODBcdmlld2gxNDYwMFx2aWV3a2luZDAKQEAgLTI0LDcgKzI0LDcgQEAKIFxpMCAgdmFyaWFudC4gIFVubGVzcyB5b3UgYXJlIGluc3RhbGxpbmcgdG8gYW4gMTAuNSBzeXN0ZW0gb3IgeW91IG5lZWQgdG8gYnVpbGQgYXBwbGljYXRpb25zIHRoYXQgY2FuIHJ1biBvbiAxMC41IHN5c3RlbXMsIHVzZSB0aGUgMTAuNiB2YXJpYW50IGlmIHBvc3NpYmxlLiAgVGhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCBvcGVyYXRpbmcgc3lzdGVtIGZ1bmN0aW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgc3RhcnRpbmcgd2l0aCAxMC42IGFuZCB5b3UgbWF5IHNlZSBiZXR0ZXIgcGVyZm9ybWFuY2UgdXNpbmcgNjQtYml0IG1vZGUuICBCeSBkZWZhdWx0LCBQeXRob24gd2lsbCBhdXRvbWF0aWNhbGx5IHJ1biBpbiA2NC1iaXQgbW9kZSBpZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBpdC4gIEFsc28gc2VlIAogXGkgQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMCiBcaTAgIGJlbG93LiAgVGhlIFB5dGhvbnMgaW5zdGFsbGVkIGJ5IHRoZXNlIGluc3RhbGxlcnMgYXJlIGJ1aWx0IHdpdGggcHJpdmF0ZSBjb3BpZXMgb2Ygc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgbm90IGluY2x1ZGVkIHdpdGggb3IgbmV3ZXIgdGhhbiB0aG9zZSBpbiBPUyBYIGl0c2VsZi4gIFRoZSBsaXN0IG9mIHRoZXNlIGxpYnJhcmllcyB2YXJpZXMgYnkgaW5zdGFsbGVyIHZhcmlhbnQgYW5kIGlzIGluY2x1ZGVkIGF0IHRoZSBlbmQgb2YgdGhlIExpY2Vuc2UucnRmIGZpbGUuCi1cYiBcdWwgXHVsYzAgXAorXGIgXHVsIFwKIFwKIFVwZGF0ZSB5b3VyIHZlcnNpb24gb2YgVGNsL1RrIHRvIHVzZSBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucwogXGIwIFx1bG5vbmUgXApAQCAtMzYsNzUgKzM2LDE2IEBACiBcaTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC5cCiAKIFxiIFx1bCBcCi1JbnN0YWxsaW5nIG9uIE9TIFggMTAuOCAoTW91bnRhaW4gTGlvbikgb3IgbGF0ZXIgc3lzdGVtc1wKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotXGNmMCBcdWxub25lIFtDSEFOR0VEIGZvciBQeXRob24gMy40LjJdCi1cYjAgXAotXAotQXMgb2YgUHl0aG9uIDMuNC4yLCBpbnN0YWxsZXIgcGFja2FnZXMgZnJvbSBweXRob24ub3JnIGFyZSBub3cgY29tcGF0aWJsZSB3aXRoIHRoZSBHYXRla2VlcGVyIHNlY3VyaXR5IGZlYXR1cmUgaW50cm9kdWNlZCBpbiBPUyBYIDEwLjguICAgRG93bmxvYWRlZCBwYWNrYWdlcyBjYW4gbm93IGJlIGRpcmVjdGx5IGluc3RhbGxlZCBieSBkb3VibGUtY2xpY2tpbmcgd2l0aCB0aGUgZGVmYXVsdCBzeXN0ZW0gc2VjdXJpdHkgc2V0dGluZ3MuICBQeXRob24ub3JnIGluc3RhbGxlciBwYWNrYWdlcyBmb3IgT1MgWCBhcmUgc2lnbmVkIHdpdGggdGhlIERldmVsb3BlciBJRCBvZiB0aGUgYnVpbGRlciwgYXMgaWRlbnRpZmllZCBvbiB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8ifX17XGZsZHJzbHQgdGhlIGRvd25sb2FkIHBhZ2V9fSBmb3IgdGhpcyByZWxlYXNlLiAgVG8gaW5zcGVjdCB0aGUgZGlnaXRhbCBzaWduYXR1cmUgb2YgdGhlIHBhY2thZ2UsIGNsaWNrIG9uIHRoZSBsb2NrIGljb24gaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lciBvZiB0aGUgCi1caSBJbnN0YWxsIFB5dGhvbgotXGkwICBpbnN0YWxsZXIgd2luZG93LiAgUmVmZXIgdG8gQXBwbGVcJzkycyBzdXBwb3J0IHBhZ2VzIGZvciB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwOi8vc3VwcG9ydC5hcHBsZS5jb20va2IvaHQ1MjkwIn19e1xmbGRyc2x0IG1vcmUgaW5mb3JtYXRpb24gb24gR2F0ZWtlZXBlcn19LlwKLVwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAogCi1cYiBcY2YwIFx1bCBTaW1wbGlmaWVkIHdlYi1iYXNlZCBpbnN0YWxsc1wKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotXGNmMCBcdWxub25lIFtORVcgZm9yIFB5dGhvbiAzLjQuMl0KLVxiMCBcCi1cCi1XaXRoIHRoZSBjaGFuZ2UgdG8gdGhlIG5ld2VyIGZsYXQgZm9ybWF0IGluc3RhbGxlciBwYWNrYWdlLCB0aGUgZG93bmxvYWQgZmlsZSBub3cgaGFzIGEgCi1cZjEgLnBrZwotXGYwICBleHRlbnNpb24gYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBlbWJlZCB0aGUgaW5zdGFsbGVyIHdpdGhpbiBhIGRpc2sgaW1hZ2UgKAotXGYxIC5kbWcKLVxmMCApIGNvbnRhaW5lci4gICBJZiB5b3UgZG93bmxvYWQgdGhlIFB5dGhvbiBpbnN0YWxsZXIgdGhyb3VnaCBhIHdlYiBicm93c2VyLCB0aGUgT1MgWCBpbnN0YWxsZXIgYXBwbGljYXRpb24gbWF5IG9wZW4gYXV0b21hdGljYWxseSB0byBhbGxvdyB5b3UgdG8gcGVyZm9ybSB0aGUgaW5zdGFsbC4gIElmIHlvdXIgYnJvd3NlciBzZXR0aW5ncyBkbyBub3QgYWxsb3cgYXV0b21hdGljIG9wZW4sIGRvdWJsZSBjbGljayBvbiB0aGUgZG93bmxvYWRlZCBpbnN0YWxsZXIgZmlsZS5cCi1cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKLQotXGIgXGNmMCBcdWwgTmV3IEluc3RhbGxhdGlvbiBPcHRpb25zIGFuZCBEZWZhdWx0c1wKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotXGNmMCBcdWxub25lIFtORVcgZm9yIFB5dGhvbiAzLjQuMF0KLVxiMCBcCi1cCi1UaGUgUHl0aG9uIGluc3RhbGxlciBub3cgaW5jbHVkZXMgYW4gb3B0aW9uIHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBvciB1cGdyYWRlIAotXGYxIHBpcAotXGYwICwgYSB0b29sIGZvciBpbnN0YWxsaW5nIGFuZCBtYW5hZ2luZyBQeXRob24gcGFja2FnZXMuICBUaGlzIG9wdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgYW5kIG5vIEludGVybmV0IGFjY2VzcyBpcyByZXF1aXJlZC4gIElmIHlvdSBkbyBub3Qgd2FudCB0aGUgaW5zdGFsbGVyIHRvIGRvIHRoaXMsIHNlbGVjdCB0aGUgCi1caSBDdXN0b21pemUKLVxpMCAgb3B0aW9uIGF0IHRoZSAKLVxpIEluc3RhbGxhdGlvbiBUeXBlCi1caTAgIHN0ZXAgYW5kIHVuY2hlY2sgdGhlIAotXGkgSW5zdGFsbCBvciB1Z3ByYWRlIHBpcAotXGkwICBvcHRpb24uXAotXAotVG8gbWFrZSBpdCBlYXNpZXIgdG8gdXNlIHNjcmlwdHMgaW5zdGFsbGVkIGJ5IHRoaXJkLXBhcnR5IFB5dGhvbiBwYWNrYWdlcywgd2l0aCAKLVxmMSBwaXAKLVxmMCAgb3IgYnkgb3RoZXIgbWVhbnMsIHRoZSAKLVxpIFNoZWxsIHByb2ZpbGUgdXBkYXRlcgotXGkwICBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgYXMgaGFzIGJlZW4gdGhlIGNhc2Ugd2l0aCBQeXRob24gMi43LnggaW5zdGFsbGVycy4gWW91IGNhbiBhbHNvIHR1cm4gdGhpcyBvcHRpb24gb2ZmIGJ5IHNlbGVjdGluZyAKLVxpIEN1c3RvbWl6ZQotXGkwICBhbmQgdW5jaGVja2luZyB0aGUgCi1caSBTaGVsbCBwcm9maWxlIHVwZGF0ZXIKLVxpMCAgb3B0aW9uLiBZb3UgY2FuIGFsc28gdXBkYXRlIHlvdXIgc2hlbGwgcHJvZmlsZSBsYXRlciBieSBsYXVuY2hpbmcgdGhlIAotXGkgVXBkYXRlIFNoZWxsIFByb2ZpbGUKLVxpMCAgY29tbWFuZCBmb3VuZCBpbiB0aGUgCi1cZjEgL0FwcGxpY2F0aW9ucy9QeXRob24gJFZFUlNJT04gCi1cZjAgZm9sZGVyLiAgWW91IG1heSBuZWVkIHRvIHN0YXJ0IGEgbmV3IHRlcm1pbmFsIHdpbmRvdyBmb3IgdGhlIGNoYW5nZXMgdG8gdGFrZSBlZmZlY3QuXAotXAotRm9yIG90aGVyIGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlLCBzZWUgdGhlIFJlbGVhc2UgTm90ZXMgbGluayBmb3IgdGhpcyByZWxlYXNlIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKLQotXGIgXGNmMCBcdWwgQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAzLjQuM10KLVxiMCBcCi1cCi1QeXRob24gMy40LjMgaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIGluY2x1c2lvbiBpbiBQeXRob24gMy40IG1haW50ZW5hbmNlIHJlbGVhc2VzLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCitcYjAgXHVsbm9uZSBcCitQeXRob24gMy41IGluY2x1ZGVzIGEgbnVtYmVyIG9mIG5ldHdvcmsgc2VjdXJpdHkgZW5oYW5jZW1lbnRzIHRoYXQgd2VyZSByZWxlYXNlZCBpbiBQeXRob24gMy40LjMgYW5kIFB5dGhvbiAyLjcuMTAuICB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDc2LyJ9fXtcZmxkcnNsdCBQRVAgNDc2fX0gY2hhbmdlcyBzZXZlcmFsIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlcywgbGlrZSAKIFxpIGh0dHBsaWIKIFxpMCAsIAogXGkgdXJsbGliCiBcaTAgLCBhbmQgCiBcaSB4bWxycGNsaWIKLVxpMCAsIHRvIGJ5IGRlZmF1bHQgdmVyaWZ5IGNlcnRpZmljYXRlcyBwcmVzZW50ZWQgYnkgc2VydmVycyBvdmVyIHNlY3VyZSAoVExTKSBjb25uZWN0aW9ucy4gIFRoZSB2ZXJpZmljYXRpb24gaXMgcGVyZm9ybWVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcmllcyB0aGF0IFB5dGhvbiBpcyBsaW5rZWQgdG8uICBQcmlvciB0byAzLjQuMywgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBkeW5hbWljYWxseSBsaW5rZWQgd2l0aCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBzaGlwcGVkIHdpdGggT1MgWC4gIE9TIFggcHJvdmlkZXMgYSBtdWx0aXBsZSBsZXZlbCBzZWN1cml0eSBmcmFtZXdvcmsgdGhhdCBzdG9yZXMgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCitcaTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKIFxpIEtleWNoYWluIEFjY2VzcyAKIFxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAogXGkgc2VjdXJpdHkKQEAgLTEyMiwxMCArNjMsMTAgQEAKIFxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAogXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKIFxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIGFzIG9mIDMuNC4zIHRoZSAKK1xpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKIFxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAogXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wCitcaSBPcGVuU1NMIDEuMC4yCiBcaTAgOyBpdCBjb25zdWx0cyB0aGUgc2FtZSBkZWZhdWx0IGNlcnRpZmljYXRlIGRpcmVjdG9yeSwgCiBcZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKIFxmMCAuICAgQXMgYmVmb3JlLCBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gbWFuYWdlIGNlcnRpZmljYXRlcyB5b3Vyc2VsZiB3aGVuIHlvdSB1c2UgdGhpcyBQeXRob24gdmFyaWFudCBhbmQsIHdpdGggY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHlvdSBtYXkgbm93IG5lZWQgdG8gdGFrZSBhZGRpdGlvbmFsIHN0ZXBzIHRvIGVuc3VyZSB5b3VyIFB5dGhvbiBwcm9ncmFtcyBoYXZlIGFjY2VzcyB0byBDQSBjZXJ0aWZpY2F0ZXMgeW91IHRydXN0LiAgSWYgeW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IHRvIGJ1aWxkIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIHdpdGggdGhpcmQtcGFydHkgdG9vbHMgbGlrZSB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5MmFwcC8ifX17XGZsZHJzbHQgCkBAIC0xMzcsNyArNzgsNyBAQAogXGkgMC45LjggbGlicmFyaWVzCiBcaTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAogXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCBmb3IgMy40LjMgdGhlIAorXGYwICwgdGhlIGNlcnRpZmljYXRlcyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrIEluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIGFyZSBhbHNvIGNvbnN1bHRlZCAodXNpbmcgQXBwbGUgcHJpdmF0ZSBBUElzKS4gIEZvciB0aGlzIHJlYXNvbiwgdGhlIAogXGkgNjQtYml0LzMyLWJpdCAxMC42KyBweXRob24ub3JnIHZhcmlhbnQKIFxpMCAgY29udGludWVzIHRvIGJlIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlJ3MgT3BlblNTTCAwLjkuOCBzaW5jZSBpdCB3YXMgZmVsdCB0aGF0IHRoZSBsb3NzIG9mIHRoZSBzeXN0ZW0tcHJvdmlkZWQgY2VydGlmaWNhdGVzIGFuZCBtYW5hZ2VtZW50IHRvb2xzIG91dHdlaWdocyB0aGUgYWRkaXRpb25hbCBzZWN1cml0eSBmZWF0dXJlcyBwcm92aWRlZCBieSBuZXdlciB2ZXJzaW9ucyBvZiBPcGVuU1NMLiAgVGhpcyB3aWxsIGxpa2VseSBjaGFuZ2UgaW4gZnV0dXJlIHJlbGVhc2VzIG9mIHRoZSBweXRob24ub3JnIGluc3RhbGxlcnMgYXMgQXBwbGUgaGFzIGRlcHJlY2F0ZWQgdXNlIG9mIHRoZSBzeXN0ZW0tc3VwcGxpZWQgT3BlblNTTCBsaWJyYXJpZXMuICBJZiB5b3UgZG8gbmVlZCBmZWF0dXJlcyBmcm9tIG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wsIHRoZXJlIGFyZSB0aGlyZC1wYXJ0eSBPcGVuU1NMIHdyYXBwZXIgcGFja2FnZXMgYXZhaWxhYmxlIHRocm91Z2ggCiBcaSBQeVBJCkBAIC0xNDUsNyArODYsMTggQEAKIFwKIFRoZSBidW5kbGVkIAogXGYxIHBpcAotXGYwICBpbmNsdWRlZCB3aXRoIDMuNC4zIGhhcyBpdHMgb3duIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZm9yIHZlcmlmeWluZyBkb3dubG9hZCBjb25uZWN0aW9ucy5cCitcZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAorXAorCitcYiBcdWwgT3RoZXIgY2hhbmdlc1wKKworXGIwIFx1bG5vbmUgXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitcY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK1xpIFdoYXQncyBuZXcKK1xpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAorXGkgUmVsZWFzZSBOb3RlcworXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCiBccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAogXGIgXGNmMCBcdWwgXApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKaW5kZXggMjUyNzc4Ny4uZGZiNzVkOCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCkBAIC0xLDUgKzEsNSBAQAoge1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQzXGNvY29hc3VicnRmMTYwCi1cY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7XGYxXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXJOZXdQU01UO30KK1xjb2NvYXNjcmVlbmZvbnRzMXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9CiBccGFwZXJ3MTE5MDVccGFwZXJoMTY4MzdcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzEyMjAwXHZpZXdoMTA4ODBcdmlld2tpbmQwCiBccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwCkBAIC0xNywxMiArMTcsNiBAQAogXGIwIC5cCiBcCiAKLVxiIE5FVyBmb3IgUHl0aG9uIDMuNC4zOiAKLVxiMCAgMy40LjMgaW5jbHVkZXMgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgUHl0aG9uIGFwcGxpY2F0aW9ucy4gIFNlZSB0aGUgCi1cZjEgUmVhZE1lCi1cZjAgIGZpbGUgYW5kIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvd2hhdHNuZXcvMy40Lmh0bWwjY2hhbmdlZC1pbi0zLTQtMyJ9fXtcZmxkcnNsdCB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb259fSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cCi1cCi0KIFxiIElNUE9SVEFOVDoKIFxiMCAgCiBcYiBJRExFCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmVuc3VyZXBpcCBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZW5zdXJlcGlwCmluZGV4IGJmODkzZDEuLjMwNzRmYTMgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZW5zdXJlcGlwCisrKyBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZW5zdXJlcGlwCkBAIC0xMCwxNSArMTAsMTUgQEAKIAogdW1hc2sgMDIyCiAKLSIke0ZXS30vYmluL3B5dGhvbiR7UFlWRVJ9IiAtbSBlbnN1cmVwaXAgLS11cGdyYWRlCisiJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLUUgLXMgLW0gZW5zdXJlcGlwIC0tdXBncmFkZQogCi0iJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLVdpIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob24ke1BZVkVSfSIgLUUgLXMgLVdpIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14IGJhZHN5bnRheCBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKIAotIiR7RldLfS9iaW4vcHl0aG9uJHtQWVZFUn0iIC1XaSAtTyBcCi0gICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorIiR7RldLfS9iaW4vcHl0aG9uJHtQWVZFUn0iIC1FIC1zIC1XaSAtTyBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgLXEgLWowIFwKICAgICAtZiAteCBiYWRzeW50YXggXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCiAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZnJhbWV3b3JrIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsKaW5kZXggZWIwODI5Ny4uMGYyZTUyYyAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsKQEAgLTYsMjMgKzYsMjMgQEAKIFBZVkVSPSJAUFlWRVJAIgogRldLPSIvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQCIKIAotIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIFwKLSAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtRSAtcyAtV2kgXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIC1xIC1qMCBcCiAgICAgLWYgLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0iCiAKLSIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCi0gICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLUUgLXMgLVdpIC1PIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9IgogCi0iJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAotICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1FIC1zIC1XaSBcCisgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgLXEgLWowIFwKICAgICAtZiAteCBiYWRzeW50YXggXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCiAKLSIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCi0gICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAorIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLUUgLXMgLVdpIC1PIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiAtcSAtajAgXAogICAgIC1mIC14IGJhZHN5bnRheCBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vc2l0ZS1wYWNrYWdlcyIKIApkaWZmIC0tZ2l0IGEvTWFjL01ha2VmaWxlLmluIGIvTWFjL01ha2VmaWxlLmluCmluZGV4IDAzZWM3MzguLjEyNTViMTMgMTAwNjQ0Ci0tLSBhL01hYy9NYWtlZmlsZS5pbgorKysgYi9NYWMvTWFrZWZpbGUuaW4KQEAgLTEsNSArMSw1IEBACi0jIFRoaXMgZmlsZSBjYW4gYmUgaW52b2tlZCBmcm9tIHRoZSB2YXJpb3VzIGZyYW1ld29ya2luc3RhbGwuLi4gdGFyZ2V0cyBpbiB0aGUgCi0jIG1haW4gTWFrZWZpbGUuIFRoZSBuZXh0IGNvdXBsZSBvZiB2YXJpYWJsZXMgYXJlIG92ZXJyaWRkZW4gb24gdGhlIAorIyBUaGlzIGZpbGUgY2FuIGJlIGludm9rZWQgZnJvbSB0aGUgdmFyaW91cyBmcmFtZXdvcmtpbnN0YWxsLi4uIHRhcmdldHMgaW4gdGhlCisjIG1haW4gTWFrZWZpbGUuIFRoZSBuZXh0IGNvdXBsZSBvZiB2YXJpYWJsZXMgYXJlIG92ZXJyaWRkZW4gb24gdGhlCiAjIGNvbW1hbmRsaW5lIGluIHRoYXQgY2FzZS4KIAogVkVSU0lPTj1AVkVSU0lPTkAKQEAgLTUzLDcgKzUzLDcgQEAKIGluc3RhbGxhcHBzOiBpbnN0YWxsX1B5dGhvbiBpbnN0YWxsX1B5dGhvbkxhdW5jaGVyIGluc3RhbGxfSURMRQogCiAjCi0jIEluc3RhbGwgdW5peCB0b29scyBpbiAvdXNyL2xvY2FsL2Jpbi4gVGhlc2UgYXJlIGp1c3QgYWxpYXNlcyBmb3IgdGhlIAorIyBJbnN0YWxsIHVuaXggdG9vbHMgaW4gL3Vzci9sb2NhbC9iaW4uIFRoZXNlIGFyZSBqdXN0IGFsaWFzZXMgZm9yIHRoZQogIyBhY3R1YWwgaW5zdGFsbGF0aW9uIGluc2lkZSB0aGUgZnJhbWV3b3JrLgogIwogaW5zdGFsbHVuaXh0b29sczoKZGlmZiAtLWdpdCBhL01hYy9QeXRob25MYXVuY2hlci9JbmZvLnBsaXN0LmluIGIvTWFjL1B5dGhvbkxhdW5jaGVyL0luZm8ucGxpc3QuaW4KaW5kZXggNDI4NDZlYS4uYjRhZGUxZCAxMDA2NDQKLS0tIGEvTWFjL1B5dGhvbkxhdW5jaGVyL0luZm8ucGxpc3QuaW4KKysrIGIvTWFjL1B5dGhvbkxhdW5jaGVyL0luZm8ucGxpc3QuaW4KQEAgLTEsNSArMSw1IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUgQ29tcHV0ZXIvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cis8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KIDxwbGlzdCB2ZXJzaW9uPSIxLjAiPgogPGRpY3Q+CiAJPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9rZXk+CkBAIC0zOCw3ICszOCw3IEBACiAJCTwvZGljdD4KIAk8L2FycmF5PgogCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz5QeXRob25MYXVuY2hlcjwvc3RyaW5nPgorCTxzdHJpbmc+UHl0aG9uIExhdW5jaGVyPC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZUdldEluZm9TdHJpbmc8L2tleT4KIAk8c3RyaW5nPiVWRVJTSU9OJSwgwqkgMjAwMS0yMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+CmRpZmYgLS1naXQgYS9NYWMvUHl0aG9uTGF1bmNoZXIvTWFrZWZpbGUuaW4gYi9NYWMvUHl0aG9uTGF1bmNoZXIvTWFrZWZpbGUuaW4KaW5kZXggZjA1ZWZkZi4uNGMwNWYyNiAxMDA2NDQKLS0tIGEvTWFjL1B5dGhvbkxhdW5jaGVyL01ha2VmaWxlLmluCisrKyBiL01hYy9QeXRob25MYXVuY2hlci9NYWtlZmlsZS5pbgpAQCAtMTUsMTIgKzE1LDEwIEBACiBQWVRIT05GUkFNRVdPUks9QFBZVEhPTkZSQU1FV09SS0AKIAogIyBEZXBsb3ltZW50IHRhcmdldCBzZWxlY3RlZCBkdXJpbmcgY29uZmlndXJlLCB0byBiZSBjaGVja2VkCi0jIGJ5IGRpc3R1dGlscyAgCisjIGJ5IGRpc3R1dGlscwogTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPUBDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUQAogQEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRAZXhwb3J0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogCi1CVU5ETEVCVUxERVI9JChzcmNkaXIpLy4uL1Rvb2xzL2J1bmRsZWJ1aWxkZXIucHkKLQogUFlUSE9OQVBQU0RJUj1ARlJBTUVXT1JLSU5TVEFMTEFQUFNQUkVGSVhALyQoUFlUSE9ORlJBTUVXT1JLKSAkKFZFUlNJT04pCiBPQkpFQ1RTPUZpbGVTZXR0aW5ncy5vIE15QXBwRGVsZWdhdGUubyBNeURvY3VtZW50Lm8gUHJlZmVyZW5jZXNXaW5kb3dDb250cm9sbGVyLm8gZG9zY3JpcHQubyBtYWluLm8KIApAQCAtMzAsMTAgKzI4LDEwIEBACiAJL2Jpbi9jcCAtciAiUHl0aG9uIExhdW5jaGVyLmFwcCIgIiQoREVTVERJUikkKFBZVEhPTkFQUFNESVIpIgogCXRvdWNoICIkKERFU1RESVIpJChQWVRIT05BUFBTRElSKS9QeXRob24gTGF1bmNoZXIuYXBwIgogCi0KIGNsZWFuOgogCXJtIC1mICoubyAiUHl0aG9uIExhdW5jaGVyIgogCXJtIC1yZiAiUHl0aG9uIExhdW5jaGVyLmFwcCIKKwlybSAtZiBJbmZvLnBsaXN0CiAKIFB5dGhvblwgTGF1bmNoZXIuYXBwOiAgSW5mby5wbGlzdCBcCiAJCVB5dGhvblwgTGF1bmNoZXIgJChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkxhdW5jaGVyLmljbnMgXApAQCAtNDEsMTggKzM5LDE3IEBACiAJCSQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Db21waWxlZC5pY25zIFwKIAkJJChzcmNkaXIpL2ZhY3RvcnlTZXR0aW5ncy5wbGlzdAogCXJtIC1mciAiUHl0aG9uIExhdW5jaGVyLmFwcCIKLQkkKFJVTlNIQVJFRCkgJChCVUlMRFBZVEhPTikgJChCVU5ETEVCVUxERVIpIFwKLQkJLS1idWlsZGRpcj0uIFwKLQkJLS1uYW1lPSJQeXRob24gTGF1bmNoZXIiIFwKLQkJLS1leGVjdXRhYmxlPSJQeXRob24gTGF1bmNoZXIiIFwKLQkJLS1pY29uZmlsZT0kKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uTGF1bmNoZXIuaWNucyBcCi0JCS0tYnVuZGxlLWlkPW9yZy5weXRob24uUHl0aG9uTGF1bmNoZXIgXAotCQktLXJlc291cmNlPSQoc3JjZGlyKS8uLi9JY29ucy9QeXRob25Tb3VyY2UuaWNucyBcCi0JCS0tcmVzb3VyY2U9JChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkNvbXBpbGVkLmljbnMgXAotCQktLXJlc291cmNlPSQoc3JjZGlyKS9FbmdsaXNoLmxwcm9qIFwKLQkJLS1yZXNvdXJjZT0kKHNyY2RpcikvZmFjdG9yeVNldHRpbmdzLnBsaXN0IFwKLQkJLS1wbGlzdCBJbmZvLnBsaXN0IFwKLQkJYnVpbGQKKwlta2RpciAiUHl0aG9uIExhdW5jaGVyLmFwcCIKKwlta2RpciAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cyIKKwlta2RpciAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9NYWNPUyIKKwlta2RpciAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCisJY3AgIlB5dGhvbiBMYXVuY2hlciIgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvTWFjT1MiCisJY3AgSW5mby5wbGlzdCAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMiCisJY3AgJChzcmNkaXIpLy4uL0ljb25zL1B5dGhvbkxhdW5jaGVyLmljbnMgICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKKwljcCAkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uU291cmNlLmljbnMgICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKKwljcCAkKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uQ29tcGlsZWQuaWNucyAgIlB5dGhvbiBMYXVuY2hlci5hcHAvQ29udGVudHMvUmVzb3VyY2VzIgorCWNwICQoc3JjZGlyKS9mYWN0b3J5U2V0dGluZ3MucGxpc3QgICJQeXRob24gTGF1bmNoZXIuYXBwL0NvbnRlbnRzL1Jlc291cmNlcyIKKwljcCAtUiAkKHNyY2RpcikvRW5nbGlzaC5scHJvaiAiUHl0aG9uIExhdW5jaGVyLmFwcC9Db250ZW50cy9SZXNvdXJjZXMiCiAKIEZpbGVTZXR0aW5ncy5vOiAkKHNyY2RpcikvRmlsZVNldHRpbmdzLm0KIAkkKENDKSAkKENGTEFHUykgLW8gJEAgLWMgJChzcmNkaXIpL0ZpbGVTZXR0aW5ncy5tCmRpZmYgLS1naXQgYS9NYWMvUkVBRE1FIGIvTWFjL1JFQURNRQppbmRleCAwYTMxM2QxLi5kOTYyMmE2IDEwMDY0NAotLS0gYS9NYWMvUkVBRE1FCisrKyBiL01hYy9SRUFETUUKQEAgLTE5LDcgKzE5LDcgQEAKIAogICBJZiB0aGlzIGFyZ3VtZW50IGlzIHNwZWNpZmllZCB0aGUgYnVpbGQgd2lsbCBjcmVhdGUgYSBQeXRob24uZnJhbWV3b3JrIHJhdGhlcgogICB0aGFuIGEgdHJhZGl0aW9uYWwgVW5peCBpbnN0YWxsLiBTZWUgdGhlIHNlY3Rpb24KLSAgX2BCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYYCBmb3IgbW9yZSAKKyAgX2BCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYYCBmb3IgbW9yZQogICBpbmZvcm1hdGlvbiBvbiBmcmFtZXdvcmtzLgogCiAgIElmIHRoZSBvcHRpb25hbCBkaXJlY3RvcnkgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBmcmFtZXdvcmsgaXMgaW5zdGFsbGVkCkBAIC01Myw3ICs1Myw3IEBACiAKICogYGAtLXdpdGgtdW5pdmVyYWwtYXJjaHM9VkFMVUVgYAogCi0gIFNwZWNpZnkgdGhlIGtpbmQgb2YgdW5pdmVyc2FsIGJpbmFyeSB0aGF0IHNob3VsZCBiZSBjcmVhdGVkLiBUaGlzIG9wdGlvbiBpcyAKKyAgU3BlY2lmeSB0aGUga2luZCBvZiB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgc2hvdWxkIGJlIGNyZWF0ZWQuIFRoaXMgb3B0aW9uIGlzCiAgIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4gIFRoZSBkZWZhdWx0IGlzCiAgIGBgMzItYml0YGAgaWYgYSBidWlsZGluZyB3aXRoIGEgU0RLIHRoYXQgc3VwcG9ydHMgUFBDLCBvdGhlcndpc2UgZGVmYXVsdHMKICAgdG8gYGBpbnRlbGBgLgpAQCAtMTc0LDE0ICsxNzQsMTQgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSBtYWluIHJlYXNvbiBpcyBiZWNhdXNlIHlvdSB3YW50IHRvIGNyZWF0ZSBHVUkgcHJvZ3JhbXMgaW4gUHl0aG9uLiBXaXRoIHRoZQotZXhjZXB0aW9uIG9mIFgxMS9YRGFyd2luLWJhc2VkIEdVSSB0b29sa2l0cyBhbGwgR1VJIHByb2dyYW1zIG5lZWQgdG8gYmUgcnVuIAorZXhjZXB0aW9uIG9mIFgxMS9YRGFyd2luLWJhc2VkIEdVSSB0b29sa2l0cyBhbGwgR1VJIHByb2dyYW1zIG5lZWQgdG8gYmUgcnVuCiBmcm9tIGEgTWFjIE9TIFggYXBwbGljYXRpb24gYnVuZGxlICgiLmFwcCIpLgogCiBXaGlsZSBpdCBpcyB0ZWNobmljYWxseSBwb3NzaWJsZSB0byBjcmVhdGUgYSAuYXBwIHdpdGhvdXQgdXNpbmcgZnJhbWV3b3JrcyB5b3UKIHdpbGwgaGF2ZSB0byBkbyB0aGUgd29yayB5b3Vyc2VsZiBpZiB5b3UgcmVhbGx5IHdhbnQgdGhpcy4KIAogQSBzZWNvbmQgcmVhc29uIGZvciB1c2luZyBmcmFtZXdvcmtzIGlzIHRoYXQgdGhleSBwdXQgUHl0aG9uLXJlbGF0ZWQgaXRlbXMgaW4KLW9ubHkgdHdvIHBsYWNlczogIi9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrIiBhbmQgCitvbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kCiAiL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+IiB3aGVyZSBgYDxWRVJTSU9OPmBgIGNhbiBiZSBlLmcuICIzLjQiLAogIjIuNyIsIGV0Yy4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nCiBQeXRob24gZnJvbSBhIGJpbmFyeSBkaXN0cmlidXRpb24gaWYgdGhleSB3YW50IHRvIGdldCByaWQgb2YgaXQgYWdhaW4uIE1vcmVvdmVyLApAQCAtMjI4LDExICsyMjgsMTEgQEAKICAxLiAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcmsKIAogIDIuIG1ha2UKLSAKKwogIDMuIG1ha2UgaW5zdGFsbAogCiBUaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gYGAvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29ya2BgLAotdGhlIGFwcGxpY2F0aW9ucyBpbiBgYC9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPmBgIGFuZCB0aGUgdW5peCB0b29scyBpbiAKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4KIGBgL3Vzci9sb2NhbC9iaW5gYC4KIAogSW5zdGFsbGluZyBpbiBhbm90aGVyIHBsYWNlLCBmb3IgaW5zdGFuY2UgYGAkSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYCBpZiB5b3UKQEAgLTMwMCw3ICszMDAsNyBAQAogdXNlIHlvdXIgbm9ybWFsIGJ1aWxkIGRpcmVjdG9yeSBub3IgZG9lcyBpdCBpbnN0YWxsIGludG8gLy4KIAogQmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBzY3JpcHQgbG9jYXRlcyB0aGUgZmlsZXMgaXQgbmVlZHMgeW91IGhhdmUgdG8gcnVuIGl0Ci1mcm9tIHdpdGhpbiB0aGUgQnVpbGRTY3JpcHQgZGlyZWN0b3J5LiBUaGUgc2NyaXB0IGFjY2VwdHMgYSBudW1iZXIgb2YgCitmcm9tIHdpdGhpbiB0aGUgQnVpbGRTY3JpcHQgZGlyZWN0b3J5LiBUaGUgc2NyaXB0IGFjY2VwdHMgYSBudW1iZXIgb2YKIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHJ1biBpdCB3aXRoIC0taGVscCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogQ29uZmlndXJlIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9NYWMvVG9vbHMvYnVuZGxlYnVpbGRlci5weSBiL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNTY3OWQzLi4wMDAwMDAwCi0tLSBhL01hYy9Ub29scy9idW5kbGVidWlsZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTM0ICswLDAgQEAKLSMhIC91c3IvYmluL2VudiBweXRob24KLQotIiIiXAotYnVuZGxlYnVpbGRlci5weSAtLSBUb29scyB0byBhc3NlbWJsZSBNYWNPUyBYIChhcHBsaWNhdGlvbikgYnVuZGxlcy4KLQotVGhpcyBtb2R1bGUgY29udGFpbnMgdHdvIGNsYXNzZXMgdG8gYnVpbGQgc28gY2FsbGVkICJidW5kbGVzIiBmb3IKLU1hY09TIFguIEJ1bmRsZUJ1aWxkZXIgaXMgYSBnZW5lcmFsIHRvb2wsIEFwcEJ1aWxkZXIgaXMgYSBzdWJjbGFzcwotc3BlY2lhbGl6ZWQgaW4gYnVpbGRpbmcgYXBwbGljYXRpb24gYnVuZGxlcy4KLQotW0J1bmRsZXxBcHBdQnVpbGRlciBvYmplY3RzIGFyZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGJ1bmNoIG9mIGtleXdvcmQKLWFyZ3VtZW50cywgYW5kIGhhdmUgYSBidWlsZCgpIG1ldGhvZCB0aGF0IHdpbGwgZG8gYWxsIHRoZSB3b3JrLiBTZWUKLXRoZSBjbGFzcyBkb2Mgc3RyaW5ncyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgY29uc3RydWN0b3IgYXJndW1lbnRzLgotCi1UaGUgbW9kdWxlIGNvbnRhaW5zIGEgbWFpbiBwcm9ncmFtIHRoYXQgY2FuIGJlIHVzZWQgaW4gdHdvIHdheXM6Ci0KLSAgJSBweXRob24gYnVuZGxlYnVpbGRlci5weSBbb3B0aW9uc10gYnVpbGQKLSAgJSBweXRob24gYnVpbGRhcHAucHkgW29wdGlvbnNdIGJ1aWxkCi0KLVdoZXJlICJidWlsZGFwcC5weSIgaXMgYSB1c2VyLXN1cHBsaWVkIHNldHVwLnB5LWxpa2Ugc2NyaXB0IGZvbGxvd2luZwotdGhpcyBtb2RlbDoKLQotICBmcm9tIGJ1bmRsZWJ1aWxkZXIgaW1wb3J0IGJ1aWxkYXBwCi0gIGJ1aWxkYXBwKDxsb3RzLW9mLWtleXdvcmQtYXJncz4pCi0KLSIiIgotCi0KLV9fYWxsX18gPSBbIkJ1bmRsZUJ1aWxkZXIiLCAiQnVuZGxlQnVpbGRlckVycm9yIiwgIkFwcEJ1aWxkZXIiLCAiYnVpbGRhcHAiXQotCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcywgZXJybm8sIHNodXRpbAotaW1wb3J0IGltcCwgbWFyc2hhbAotaW1wb3J0IHJlCi1mcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5Ci1pbXBvcnQgZ2V0b3B0Ci1mcm9tIHBsaXN0bGliIGltcG9ydCBQbGlzdAotZnJvbSB0eXBlcyBpbXBvcnQgRnVuY3Rpb25UeXBlIGFzIGZ1bmN0aW9uCi0KLWNsYXNzIEJ1bmRsZUJ1aWxkZXJFcnJvcihFeGNlcHRpb24pOiBwYXNzCi0KLQotY2xhc3MgRGVmYXVsdHM6Ci0KLSAgICAiIiJDbGFzcyBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlIGFuZCBhcmUKLSAgICBub3QgZnVuY3Rpb25zIG9yIGNsYXNzbWV0aG9kcyBhcmUgKGRlZXApY29waWVkIHRvIHNlbGYuX19kaWN0X18uCi0gICAgVGhpcyBhbGxvd3MgZm9yIG11dGFibGUgZGVmYXVsdCB2YWx1ZXMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBkZWZhdWx0cyA9IHNlbGYuX2dldERlZmF1bHRzKCkKLSAgICAgICAgZGVmYXVsdHMudXBkYXRlKGt3YXJncykKLSAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZGVmYXVsdHMpCi0KLSAgICBkZWYgX2dldERlZmF1bHRzKGNscyk6Ci0gICAgICAgIGRlZmF1bHRzID0ge30KLSAgICAgICAgZm9yIGJhc2UgaW4gY2xzLl9fYmFzZXNfXzoKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoYmFzZSwgIl9nZXREZWZhdWx0cyIpOgotICAgICAgICAgICAgICAgIGRlZmF1bHRzLnVwZGF0ZShiYXNlLl9nZXREZWZhdWx0cygpKQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbGlzdChjbHMuX19kaWN0X18uaXRlbXMoKSk6Ci0gICAgICAgICAgICBpZiBuYW1lWzBdICE9ICJfIiBhbmQgbm90IGlzaW5zdGFuY2UodmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbiwgY2xhc3NtZXRob2QpKToKLSAgICAgICAgICAgICAgICBkZWZhdWx0c1tuYW1lXSA9IGRlZXBjb3B5KHZhbHVlKQotICAgICAgICByZXR1cm4gZGVmYXVsdHMKLSAgICBfZ2V0RGVmYXVsdHMgPSBjbGFzc21ldGhvZChfZ2V0RGVmYXVsdHMpCi0KLQotY2xhc3MgQnVuZGxlQnVpbGRlcihEZWZhdWx0cyk6Ci0KLSAgICAiIiJCdW5kbGVCdWlsZGVyIGlzIGEgYmFyZWJvbmVzIGNsYXNzIGZvciBhc3NlbWJsaW5nIGJ1bmRsZXMuIEl0Ci0gICAga25vd3Mgbm90aGluZyBhYm91dCBleGVjdXRhYmxlcyBvciBpY29ucywgaXQgb25seSBjb3BpZXMgZmlsZXMKLSAgICBhbmQgY3JlYXRlcyB0aGUgUGtnSW5mbyBhbmQgSW5mby5wbGlzdCBmaWxlcy4KLSAgICAiIiIKLQotICAgICMgKE5vdGUgdGhhdCBEZWZhdWx0cy5fX2luaXRfXyAoZGVlcCljb3BpZXMgdGhlc2UgdmFsdWVzIHRvCi0gICAgIyBpbnN0YW5jZSB2YXJpYWJsZXMuIE11dGFibGUgZGVmYXVsdHMgYXJlIHRoZXJlZm9yZSBzYWZlLikKLQotICAgICMgTmFtZSBvZiB0aGUgYnVuZGxlLCB3aXRoIG9yIHdpdGhvdXQgZXh0ZW5zaW9uLgotICAgIG5hbWUgPSBOb25lCi0KLSAgICAjIFRoZSBwcm9wZXJ0eSBsaXN0ICgicGxpc3QiKQotICAgIHBsaXN0ID0gUGxpc3QoQ0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbiA9ICJFbmdsaXNoIiwKLSAgICAgICAgICAgICAgICAgIENGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uID0gIjYuMCIpCi0KLSAgICAjIFRoZSB0eXBlIG9mIHRoZSBidW5kbGUuCi0gICAgdHlwZSA9ICJCTkRMIgotICAgICMgVGhlIGNyZWF0b3IgY29kZSBvZiB0aGUgYnVuZGxlLgotICAgIGNyZWF0b3IgPSBOb25lCi0KLSAgICAjIHRoZSBDRkJ1bmRsZUlkZW50aWZpZXIgKHRoaXMgaXMgdXNlZCBmb3IgdGhlIHByZWZlcmVuY2VzIGZpbGUgbmFtZSkKLSAgICBidW5kbGVfaWQgPSBOb25lCi0KLSAgICAjIExpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIHRvIGJlIGNvcGllZCB0byA8YnVuZGxlPi9Db250ZW50cy9SZXNvdXJjZXMuCi0gICAgcmVzb3VyY2VzID0gW10KLQotICAgICMgTGlzdCBvZiAoc3JjLCBkZXN0KSB0dXBsZXM7IGRlc3Qgc2hvdWxkIGJlIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVuZGxlCi0gICAgIyAoZWcuICJDb250ZW50cy9SZXNvdXJjZXMvTXlTdHVmZi9Tb21lRmlsZS5leHQpLgotICAgIGZpbGVzID0gW10KLQotICAgICMgTGlzdCBvZiBzaGFyZWQgbGlicmFyaWVzIChkeWxpYnMsIEZyYW1ld29ya3MpIHRvIGJ1bmRsZSB3aXRoIHRoZSBhcHAKLSAgICAjIHdpbGwgYmUgcGxhY2VkIGluIENvbnRlbnRzL0ZyYW1ld29ya3MKLSAgICBsaWJzID0gW10KLQotICAgICMgRGlyZWN0b3J5IHdoZXJlIHRoZSBidW5kbGUgd2lsbCBiZSBhc3NlbWJsZWQuCi0gICAgYnVpbGRkaXIgPSAiYnVpbGQiCi0KLSAgICAjIE1ha2Ugc3ltbGlua3MgaW5zdGVhZCBjb3B5aW5nIGZpbGVzLiBUaGlzIGlzIGhhbmR5IGR1cmluZyBkZWJ1Z2dpbmcsIGJ1dAotICAgICMgbWFrZXMgdGhlIGJ1bmRsZSBub24tZGlzdHJpYnV0YWJsZS4KLSAgICBzeW1saW5rID0gMAotCi0gICAgIyBWZXJib3NpdHkgbGV2ZWwuCi0gICAgdmVyYm9zaXR5ID0gMQotCi0gICAgIyBEZXN0aW5hdGlvbiByb290IGRpcmVjdG9yeQotICAgIGRlc3Ryb290ID0gIiIKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgIyBYWFggcmV0aGluayBzZWxmLm5hbWUgbXVuZ2luZywgdGhpcyBpcyBicml0dGxlLgotICAgICAgICBzZWxmLm5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoc2VsZi5uYW1lKQotICAgICAgICBpZiBub3QgZXh0OgotICAgICAgICAgICAgZXh0ID0gIi5idW5kbGUiCi0gICAgICAgIGJ1bmRsZWV4dGVuc2lvbiA9IGV4dAotICAgICAgICAjIG1pc2MgKGRlcml2ZWQpIGF0dHJpYnV0ZXMKLSAgICAgICAgc2VsZi5idW5kbGVwYXRoID0gcGF0aGpvaW4oc2VsZi5idWlsZGRpciwgc2VsZi5uYW1lICsgYnVuZGxlZXh0ZW5zaW9uKQotCi0gICAgICAgIHBsaXN0ID0gc2VsZi5wbGlzdAotICAgICAgICBwbGlzdC5DRkJ1bmRsZU5hbWUgPSBzZWxmLm5hbWUKLSAgICAgICAgcGxpc3QuQ0ZCdW5kbGVQYWNrYWdlVHlwZSA9IHNlbGYudHlwZQotICAgICAgICBpZiBzZWxmLmNyZWF0b3IgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIocGxpc3QsICJDRkJ1bmRsZVNpZ25hdHVyZSIpOgotICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRvciA9IHBsaXN0LkNGQnVuZGxlU2lnbmF0dXJlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRvciA9ICI/Pz8/IgotICAgICAgICBwbGlzdC5DRkJ1bmRsZVNpZ25hdHVyZSA9IHNlbGYuY3JlYXRvcgotICAgICAgICBpZiBzZWxmLmJ1bmRsZV9pZDoKLSAgICAgICAgICAgIHBsaXN0LkNGQnVuZGxlSWRlbnRpZmllciA9IHNlbGYuYnVuZGxlX2lkCi0gICAgICAgIGVsaWYgbm90IGhhc2F0dHIocGxpc3QsICJDRkJ1bmRsZUlkZW50aWZpZXIiKToKLSAgICAgICAgICAgIHBsaXN0LkNGQnVuZGxlSWRlbnRpZmllciA9IHNlbGYubmFtZQotCi0gICAgZGVmIGJ1aWxkKHNlbGYpOgotICAgICAgICAiIiJCdWlsZCB0aGUgYnVuZGxlLiIiIgotICAgICAgICBidWlsZGRpciA9IHNlbGYuYnVpbGRkaXIKLSAgICAgICAgaWYgYnVpbGRkaXIgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZGRpcik6Ci0gICAgICAgICAgICBvcy5ta2RpcihidWlsZGRpcikKLSAgICAgICAgc2VsZi5tZXNzYWdlKCJCdWlsZGluZyAlcyIgJSByZXByKHNlbGYuYnVuZGxlcGF0aCksIDEpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYuYnVuZGxlcGF0aCk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuYnVuZGxlcGF0aCkKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5idW5kbGVwYXRoICsgJ34nKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5idW5kbGVwYXRoICsgJ34nKQotICAgICAgICBicCA9IHNlbGYuYnVuZGxlcGF0aAotCi0gICAgICAgICMgQ3JlYXRlIHRoZSBhcHAgYnVuZGxlIGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIGFuZCB0aGVuCi0gICAgICAgICMgcmVuYW1lIHRoZSBjb21wbGV0ZWQgYnVuZGxlLiBUaGlzIHdheSB0aGUgRmluZGVyIHdpbGwKLSAgICAgICAgIyBuZXZlciBzZWUgYW4gaW5jb21wbGV0ZSBidW5kbGUgKHdoZXJlIGl0IG1pZ2h0IHBpY2sgdXAKLSAgICAgICAgIyBhbmQgY2FjaGUgdGhlIHdyb25nIG1ldGEgZGF0YSkKLSAgICAgICAgc2VsZi5idW5kbGVwYXRoID0gYnAgKyAnficKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWtkaXIoc2VsZi5idW5kbGVwYXRoKQotICAgICAgICAgICAgc2VsZi5wcmVQcm9jZXNzKCkKLSAgICAgICAgICAgIHNlbGYuX2NvcHlGaWxlcygpCi0gICAgICAgICAgICBzZWxmLl9hZGRNZXRhRmlsZXMoKQotICAgICAgICAgICAgc2VsZi5wb3N0UHJvY2VzcygpCi0gICAgICAgICAgICBvcy5yZW5hbWUoc2VsZi5idW5kbGVwYXRoLCBicCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuYnVuZGxlcGF0aCA9IGJwCi0gICAgICAgIHNlbGYubWVzc2FnZSgiRG9uZS4iLCAxKQotCi0gICAgZGVmIHByZVByb2Nlc3Moc2VsZik6Ci0gICAgICAgICIiIkhvb2sgZm9yIHN1YmNsYXNzZXMuIiIiCi0gICAgICAgIHBhc3MKLSAgICBkZWYgcG9zdFByb2Nlc3Moc2VsZik6Ci0gICAgICAgICIiIkhvb2sgZm9yIHN1YmNsYXNzZXMuIiIiCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBfYWRkTWV0YUZpbGVzKHNlbGYpOgotICAgICAgICBjb250ZW50cyA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgIkNvbnRlbnRzIikKLSAgICAgICAgbWFrZWRpcnMoY29udGVudHMpCi0gICAgICAgICMKLSAgICAgICAgIyBXcml0ZSBDb250ZW50cy9Qa2dJbmZvCi0gICAgICAgIGFzc2VydCBsZW4oc2VsZi50eXBlKSA9PSBsZW4oc2VsZi5jcmVhdG9yKSA9PSA0LCBcCi0gICAgICAgICAgICAgICAgInR5cGUgYW5kIGNyZWF0b3IgbXVzdCBiZSA0LWJ5dGUgc3RyaW5ncy4iCi0gICAgICAgIHBrZ2luZm8gPSBwYXRoam9pbihjb250ZW50cywgIlBrZ0luZm8iKQotICAgICAgICBmID0gb3Blbihwa2dpbmZvLCAid2IiKQotICAgICAgICBmLndyaXRlKChzZWxmLnR5cGUgKyBzZWxmLmNyZWF0b3IpLmVuY29kZSgnbGF0aW4xJykpCi0gICAgICAgIGYuY2xvc2UoKQotICAgICAgICAjCi0gICAgICAgICMgV3JpdGUgQ29udGVudHMvSW5mby5wbGlzdAotICAgICAgICBpbmZvcGxpc3QgPSBwYXRoam9pbihjb250ZW50cywgIkluZm8ucGxpc3QiKQotICAgICAgICBzZWxmLnBsaXN0LndyaXRlKGluZm9wbGlzdCkKLQotICAgIGRlZiBfY29weUZpbGVzKHNlbGYpOgotICAgICAgICBmaWxlcyA9IHNlbGYuZmlsZXNbOl0KLSAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5yZXNvdXJjZXM6Ci0gICAgICAgICAgICBmaWxlcy5hcHBlbmQoKHBhdGgsIHBhdGhqb2luKCJDb250ZW50cyIsICJSZXNvdXJjZXMiLAotICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUocGF0aCkpKSkKLSAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5saWJzOgotICAgICAgICAgICAgZmlsZXMuYXBwZW5kKChwYXRoLCBwYXRoam9pbigiQ29udGVudHMiLCAiRnJhbWV3b3JrcyIsCi0gICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShwYXRoKSkpKQotICAgICAgICBpZiBzZWxmLnN5bWxpbms6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIk1ha2luZyBzeW1ib2xpYyBsaW5rcyIsIDEpCi0gICAgICAgICAgICBtc2cgPSAiTWFraW5nIHN5bWxpbmsgZnJvbSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiQ29weWluZyBmaWxlcyIsIDEpCi0gICAgICAgICAgICBtc2cgPSAiQ29weWluZyIKLSAgICAgICAgZmlsZXMuc29ydCgpCi0gICAgICAgIGZvciBzcmMsIGRzdCBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKLSAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiVzICVzLyB0byAlcy8iICUgKG1zZywgc3JjLCBkc3QpLCAyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiVzICVzIHRvICVzIiAlIChtc2csIHNyYywgZHN0KSwgMikKLSAgICAgICAgICAgIGRzdCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgZHN0KQotICAgICAgICAgICAgaWYgc2VsZi5zeW1saW5rOgotICAgICAgICAgICAgICAgIHN5bWxpbmsoc3JjLCBkc3QsIG1rZGlycz0xKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb3B5KHNyYywgZHN0LCBta2RpcnM9MSkKLQotICAgIGRlZiBtZXNzYWdlKHNlbGYsIG1zZywgbGV2ZWw9MCk6Ci0gICAgICAgIGlmIGxldmVsIDw9IHNlbGYudmVyYm9zaXR5OgotICAgICAgICAgICAgaW5kZW50ID0gIiIKLSAgICAgICAgICAgIGlmIGxldmVsID4gMToKLSAgICAgICAgICAgICAgICBpbmRlbnQgPSAobGV2ZWwgLSAxKSAqICIgICIKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoaW5kZW50ICsgbXNnICsgIlxuIikKLQotICAgIGRlZiByZXBvcnQoc2VsZik6Ci0gICAgICAgICMgWFhYIHNvbWV0aGluZyBkZWNlbnQKLSAgICAgICAgcGFzcwotCi0KLWlmIF9fZGVidWdfXzoKLSAgICBQWUNfRVhUID0gIi5weWMiCi1lbHNlOgotICAgIFBZQ19FWFQgPSAiLnB5byIKLQotTUFHSUMgPSBpbXAuZ2V0X21hZ2ljKCkKLVVTRV9aSVBJTVBPUlQgPSAiemlwaW1wb3J0IiBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKLQotIyBGb3Igc3RhbmRhbG9uZSBhcHBzLCB3ZSBoYXZlIG91ciBvd24gbWluaW1hbCBzaXRlLnB5LiBXZSBkb24ndCBuZWVkCi0jIGFsbCB0aGUgY3J1ZnQgb2YgdGhlIHJlYWwgc2l0ZS5weS4KLVNJVEVfUFkgPSAiIiJcCi1pbXBvcnQgc3lzCi1pZiBub3QgJShzZW1pX3N0YW5kYWxvbmUpczoKLSAgICBkZWwgc3lzLnBhdGhbMTpdICAjIHN5cy5wYXRoWzBdIGlzIENvbnRlbnRzL1Jlc291cmNlcy8KLSIiIgotCi1pZiBVU0VfWklQSU1QT1JUOgotICAgIFpJUF9BUkNISVZFID0gIk1vZHVsZXMuemlwIgotICAgIFNJVEVfUFkgKz0gInN5cy5wYXRoLmFwcGVuZChzeXMucGF0aFswXSArICcvJXMnKVxuIiAlIFpJUF9BUkNISVZFCi0gICAgZGVmIGdldFB5Y0RhdGEoZnVsbG5hbWUsIGNvZGUsIGlzcGtnKToKLSAgICAgICAgaWYgaXNwa2c6Ci0gICAgICAgICAgICBmdWxsbmFtZSArPSAiLl9faW5pdF9fIgotICAgICAgICBwYXRoID0gZnVsbG5hbWUucmVwbGFjZSgiLiIsIG9zLnNlcCkgKyBQWUNfRVhUCi0gICAgICAgIHJldHVybiBwYXRoLCBNQUdJQyArICdcMFwwXDBcMCcgKyBtYXJzaGFsLmR1bXBzKGNvZGUpCi0KLSMKLSMgRXh0ZW5zaW9uIG1vZHVsZXMgY2FuJ3QgYmUgaW4gdGhlIG1vZHVsZXMgemlwIGFyY2hpdmUsIHNvIGEgcGxhY2Vob2xkZXIKLSMgaXMgYWRkZWQgaW5zdGVhZCwgdGhhdCBsb2FkcyB0aGUgZXh0ZW5zaW9uIGZyb20gYSBzcGVjaWZpZWQgbG9jYXRpb24uCi0jCi1FWFRfTE9BREVSID0gIiIiXAotZGVmIF9fbG9hZCgpOgotICAgIGltcG9ydCBpbXAsIHN5cywgb3MKLSAgICBmb3IgcCBpbiBzeXMucGF0aDoKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwLCAiJShmaWxlbmFtZSlzIikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6Ci0gICAgICAgIGFzc2VydCAwLCAiZmlsZSBub3QgZm91bmQ6ICUoZmlsZW5hbWUpcyIKLSAgICBtb2QgPSBpbXAubG9hZF9keW5hbWljKCIlKG5hbWUpcyIsIHBhdGgpCi0KLV9fbG9hZCgpCi1kZWwgX19sb2FkCi0iIiIKLQotTUFZTUlTU19NT0RVTEVTID0gWydtYWMnLCAnbnQnLCAnbnRwYXRoJywgJ2RvcycsICdkb3NwYXRoJywKLSAgICAnd2luMzJhcGknLCAnY2UnLCAnX3dpbnJlZycsICdudHVybDJwYXRoJywgJ3NpdGVjdXN0b21pemUnLAotICAgICdvcmcucHl0aG9uLmNvcmUnLCAncmlzY29zJywgJ3Jpc2Nvc2Vudmlyb24nLCAncmlzY29zcGF0aCcKLV0KLQotU1RSSVBfRVhFQyA9ICIvdXNyL2Jpbi9zdHJpcCIKLQotIwotIyBXZSdyZSB1c2luZyBhIHN0b2NrIGludGVycHJldGVyIHRvIHJ1biB0aGUgYXBwLCB5ZXQgd2UgbmVlZAotIyBhIHdheSB0byBwYXNzIHRoZSBQeXRob24gbWFpbiBwcm9ncmFtIHRvIHRoZSBpbnRlcnByZXRlci4gVGhlCi0jIGJvb3RzdHJhcHBpbmcgc2NyaXB0IGZpcmVzIHVwIHRoZSBpbnRlcnByZXRlciB3aXRoIHRoZSByaWdodAotIyBhcmd1bWVudHMuIG9zLmV4ZWN2ZSgpIGlzIHVzZWQgYXMgT1NYIGRvZXNuJ3QgbGlrZSB1cyB0bwotIyBzdGFydCBhIHJlYWwgbmV3IHByb2Nlc3MuIEFsc28sIHRoZSBleGVjdXRhYmxlIG5hbWUgbXVzdCBtYXRjaAotIyB0aGUgQ0ZCdW5kbGVFeGVjdXRhYmxlIHZhbHVlIGluIHRoZSBJbmZvLnBsaXN0LCBzbyB3ZSBsaWUKLSMgZGVsaWJlcmF0ZWx5IHdpdGggYXJndlswXS4gVGhlIGFjdHVhbCBQeXRob24gZXhlY3V0YWJsZSBpcwotIyBwYXNzZWQgaW4gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgc28gd2UgY2FuICJyZXBhaXIiCi0jIHN5cy5leGVjdXRhYmxlIGxhdGVyLgotIwotQk9PVFNUUkFQX1NDUklQVCA9ICIiIlwKLSMhJShoYXNoYmFuZylzCi0KLWltcG9ydCBzeXMsIG9zCi1leGVjZGlyID0gb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKQotZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihleGVjZGlyLCAiJShleGVjdXRhYmxlKXMiKQotcmVzZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShleGVjZGlyKSwgIlJlc291cmNlcyIpCi1saWJkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGV4ZWNkaXIpLCAiRnJhbWV3b3JrcyIpCi1tYWlucHJvZ3JhbSA9IG9zLnBhdGguam9pbihyZXNkaXIsICIlKG1haW5wcm9ncmFtKXMiKQotCi1zeXMuYXJndi5pbnNlcnQoMSwgbWFpbnByb2dyYW0pCi1pZiAlKHN0YW5kYWxvbmUpcyBvciAlKHNlbWlfc3RhbmRhbG9uZSlzOgotICAgIG9zLmVudmlyb25bIlBZVEhPTlBBVEgiXSA9IHJlc2RpcgotICAgIGlmICUoc3RhbmRhbG9uZSlzOgotICAgICAgICBvcy5lbnZpcm9uWyJQWVRIT05IT01FIl0gPSByZXNkaXIKLWVsc2U6Ci0gICAgcHlwYXRoID0gb3MuZ2V0ZW52KCJQWVRIT05QQVRIIiwgIiIpCi0gICAgaWYgcHlwYXRoOgotICAgICAgICBweXBhdGggPSAiOiIgKyBweXBhdGgKLSAgICBvcy5lbnZpcm9uWyJQWVRIT05QQVRIIl0gPSByZXNkaXIgKyBweXBhdGgKLW9zLmVudmlyb25bIlBZVEhPTkVYRUNVVEFCTEUiXSA9IGV4ZWN1dGFibGUKLW9zLmVudmlyb25bIkRZTERfTElCUkFSWV9QQVRIIl0gPSBsaWJkaXIKLW9zLmVudmlyb25bIkRZTERfRlJBTUVXT1JLX1BBVEgiXSA9IGxpYmRpcgotb3MuZXhlY3ZlKGV4ZWN1dGFibGUsIHN5cy5hcmd2LCBvcy5lbnZpcm9uKQotIiIiCi0KLQotIwotIyBPcHRpb25hbCB3cmFwcGVyIHRoYXQgY29udmVydHMgImRyb3BwZWQgZmlsZXMiIGludG8gc3lzLmFyZ3YgdmFsdWVzLgotIwotQVJHVl9FTVVMQVRPUiA9ICIiIlwKLWltcG9ydCBhcmd2ZW11bGF0b3IsIG9zCi0KLWFyZ3ZlbXVsYXRvci5Bcmd2Q29sbGVjdG9yKCkubWFpbmxvb3AoKQotZXhlY2ZpbGUob3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAiJShyZWFsbWFpbnByb2dyYW0pcyIpKQotIiIiCi0KLSMKLSMgV2hlbiBidWlsZGluZyBhIHN0YW5kYWxvbmUgYXBwIHdpdGggUHl0aG9uLmZyYW1ld29yaywgd2UgbmVlZCB0byBjb3B5Ci0jIGEgc3Vic2V0IGZyb20gUHl0aG9uLmZyYW1ld29yayB0byB0aGUgYnVuZGxlLiBUaGUgZm9sbG93aW5nIGxpc3QKLSMgc3BlY2lmaWVzIGV4YWN0bHkgd2hhdCBpdGVtcyB3ZSdsbCBjb3B5LgotIwotUFlUSE9ORlJBTUVXT1JLR09PRElFUyA9IFsKLSAgICAiUHl0aG9uIiwgICMgdGhlIFB5dGhvbiBjb3JlIGxpYnJhcnkKLSAgICAiUmVzb3VyY2VzL0VuZ2xpc2gubHByb2oiLAotICAgICJSZXNvdXJjZXMvSW5mby5wbGlzdCIsCi0gICAgIlJlc291cmNlcy92ZXJzaW9uLnBsaXN0IiwKLV0KLQotZGVmIGlzRnJhbWV3b3JrKCk6Ci0gICAgcmV0dXJuIHN5cy5leGVjX3ByZWZpeC5maW5kKCJQeXRob24uZnJhbWV3b3JrIikgPiAwCi0KLQotTElCID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICJsaWIiLCAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkKLVNJVEVfUEFDS0FHRVMgPSBvcy5wYXRoLmpvaW4oTElCLCAic2l0ZS1wYWNrYWdlcyIpCi0KLQotY2xhc3MgQXBwQnVpbGRlcihCdW5kbGVCdWlsZGVyKToKLQotICAgICMgT3ZlcnJpZGUgdHlwZSBvZiB0aGUgYnVuZGxlLgotICAgIHR5cGUgPSAiQVBQTCIKLQotICAgICMgcGxhdGZvcm0sIG5hbWUgb2YgdGhlIHN1YmZvbGRlciBvZiBDb250ZW50cyB0aGF0IGNvbnRhaW5zIHRoZSBleGVjdXRhYmxlLgotICAgIHBsYXRmb3JtID0gIk1hY09TIgotCi0gICAgIyBBIFB5dGhvbiBtYWluIHByb2dyYW0uIElmIHRoaXMgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBtYWluCi0gICAgIyBleGVjdXRhYmxlIGluIHRoZSBidW5kbGUgd2lsbCBiZSBhIHNtYWxsIHdyYXBwZXIgdGhhdCBpbnZva2VzCi0gICAgIyB0aGUgbWFpbiBwcm9ncmFtLiAoWFhYIERpc2N1c3Mgd2h5LikKLSAgICBtYWlucHJvZ3JhbSA9IE5vbmUKLQotICAgICMgVGhlIG1haW4gZXhlY3V0YWJsZS4gSWYgYSBQeXRob24gbWFpbiBwcm9ncmFtIGlzIHNwZWNpZmllZAotICAgICMgdGhlIGV4ZWN1dGFibGUgd2lsbCBiZSBjb3BpZWQgdG8gUmVzb3VyY2VzIGFuZCBiZSBpbnZva2VkCi0gICAgIyBieSB0aGUgd3JhcHBlciBwcm9ncmFtIG1lbnRpb25lZCBhYm92ZS4gT3RoZXJ3aXNlIGl0IHdpbGwKLSAgICAjIHNpbXBseSBiZSB1c2VkIGFzIHRoZSBtYWluIGV4ZWN1dGFibGUuCi0gICAgZXhlY3V0YWJsZSA9IE5vbmUKLQotICAgICMgVGhlIG5hbWUgb2YgdGhlIG1haW4gbmliLCBmb3IgQ29jb2EgYXBwcy4gKk11c3QqIGJlIHNwZWNpZmllZAotICAgICMgd2hlbiBidWlsZGluZyBhIENvY29hIGFwcC4KLSAgICBuaWJuYW1lID0gTm9uZQotCi0gICAgIyBUaGUgbmFtZSBvZiB0aGUgaWNvbiBmaWxlIHRvIGJlIGNvcGllZCB0byBSZXNvdXJjZXMgYW5kIHVzZWQgZm9yCi0gICAgIyB0aGUgRmluZGVyIGljb24uCi0gICAgaWNvbmZpbGUgPSBOb25lCi0KLSAgICAjIFN5bWxpbmsgdGhlIGV4ZWN1dGFibGUgaW5zdGVhZCBvZiBjb3B5aW5nIGl0LgotICAgIHN5bWxpbmtfZXhlYyA9IDAKLQotICAgICMgSWYgVHJ1ZSwgYnVpbGQgc3RhbmRhbG9uZSBhcHAuCi0gICAgc3RhbmRhbG9uZSA9IDAKLQotICAgICMgSWYgVHJ1ZSwgYnVpbGQgc2VtaS1zdGFuZGFsb25lIGFwcCAob25seSBpbmNsdWRlcyB0aGlyZC1wYXJ0eSBtb2R1bGVzKS4KLSAgICBzZW1pX3N0YW5kYWxvbmUgPSAwCi0KLSAgICAjIElmIHNldCwgdXNlIHRoaXMgZm9yICMhIGxpbmVzIGluIHN0ZWFkIG9mIHN5cy5leGVjdXRhYmxlCi0gICAgcHl0aG9uID0gTm9uZQotCi0gICAgIyBJZiBUcnVlLCBhZGQgYSByZWFsIG1haW4gcHJvZ3JhbSB0aGF0IGVtdWxhdGVzIHN5cy5hcmd2IGJlZm9yZSBjYWxsaW5nCi0gICAgIyBtYWlucHJvZ3JhbQotICAgIGFyZ3ZfZW11bGF0aW9uID0gMAotCi0gICAgIyBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIG9ubHkgdXNlZCB3aGVuIGJ1aWxkaW5nIGEgc3RhbmRhbG9uZSBhcHAuCi0KLSAgICAjIEV4Y2x1ZGUgdGhlc2UgbW9kdWxlcy4KLSAgICBleGNsdWRlTW9kdWxlcyA9IFtdCi0KLSAgICAjIEluY2x1ZGUgdGhlc2UgbW9kdWxlcy4KLSAgICBpbmNsdWRlTW9kdWxlcyA9IFtdCi0KLSAgICAjIEluY2x1ZGUgdGhlc2UgcGFja2FnZXMuCi0gICAgaW5jbHVkZVBhY2thZ2VzID0gW10KLQotICAgICMgU3RyaXAgYmluYXJpZXMgZnJvbSBkZWJ1ZyBpbmZvLgotICAgIHN0cmlwID0gMAotCi0gICAgIyBGb3VuZCBQeXRob24gbW9kdWxlczogWyhuYW1lLCBjb2Rlb2JqZWN0LCBpc3BrZyksIC4uLl0KLSAgICBweW1vZHVsZXMgPSBbXQotCi0gICAgIyBNb2R1bGVzIHRoYXQgbW9kdWxlZmluZGVyIGNvdWxkbid0IGZpbmQ6Ci0gICAgbWlzc2luZ01vZHVsZXMgPSBbXQotICAgIG1heWJlTWlzc2luZ01vZHVsZXMgPSBbXQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBpZiAoKHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZSkKLSAgICAgICAgICAgIGFuZCBzZWxmLm1haW5wcm9ncmFtIGlzIE5vbmUpOgotICAgICAgICAgICAgcmFpc2UgQnVuZGxlQnVpbGRlckVycm9yKCJtdXN0IHNwZWNpZnkgJ21haW5wcm9ncmFtJyB3aGVuICIKLSAgICAgICAgICAgICAgICAgICAgImJ1aWxkaW5nIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbi4iKQotICAgICAgICBpZiBzZWxmLm1haW5wcm9ncmFtIGlzIE5vbmUgYW5kIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgQnVuZGxlQnVpbGRlckVycm9yKCJtdXN0IHNwZWNpZnkgZWl0aGVyIG9yIGJvdGggb2YgIgotICAgICAgICAgICAgICAgICAgICAiJ2V4ZWN1dGFibGUnIGFuZCAnbWFpbnByb2dyYW0nIikKLQotICAgICAgICBzZWxmLmV4ZWNkaXIgPSBwYXRoam9pbigiQ29udGVudHMiLCBzZWxmLnBsYXRmb3JtKQotCi0gICAgICAgIGlmIHNlbGYubmFtZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBzZWxmLm1haW5wcm9ncmFtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5uYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHNlbGYubWFpbnByb2dyYW0pKVswXQotICAgICAgICBlbGlmIGV4ZWN1dGFibGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLm5hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoc2VsZi5leGVjdXRhYmxlKSlbMF0KLSAgICAgICAgaWYgc2VsZi5uYW1lWy00Ol0gIT0gIi5hcHAiOgotICAgICAgICAgICAgc2VsZi5uYW1lICs9ICIuYXBwIgotCi0gICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuc3RhbmRhbG9uZSBhbmQgbm90IGlzRnJhbWV3b3JrKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zeW1saW5rX2V4ZWMgPSAxCi0gICAgICAgICAgICBpZiBzZWxmLnB5dGhvbjoKLSAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUgPSBzZWxmLnB5dGhvbgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQotCi0gICAgICAgIGlmIHNlbGYubmlibmFtZToKLSAgICAgICAgICAgIHNlbGYucGxpc3QuTlNNYWluTmliRmlsZSA9IHNlbGYubmlibmFtZQotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5wbGlzdCwgIk5TUHJpbmNpcGFsQ2xhc3MiKToKLSAgICAgICAgICAgICAgICBzZWxmLnBsaXN0Lk5TUHJpbmNpcGFsQ2xhc3MgPSAiTlNBcHBsaWNhdGlvbiIKLQotICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgYW5kIGlzRnJhbWV3b3JrKCk6Ci0gICAgICAgICAgICBzZWxmLmFkZFB5dGhvbkZyYW1ld29yaygpCi0KLSAgICAgICAgQnVuZGxlQnVpbGRlci5zZXR1cChzZWxmKQotCi0gICAgICAgIHNlbGYucGxpc3QuQ0ZCdW5kbGVFeGVjdXRhYmxlID0gc2VsZi5uYW1lCi0KLSAgICAgICAgaWYgc2VsZi5zdGFuZGFsb25lIG9yIHNlbGYuc2VtaV9zdGFuZGFsb25lOgotICAgICAgICAgICAgc2VsZi5maW5kRGVwZW5kZW5jaWVzKCkKLQotICAgIGRlZiBwcmVQcm9jZXNzKHNlbGYpOgotICAgICAgICByZXNkaXIgPSAiQ29udGVudHMvUmVzb3VyY2VzIgotICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLm1haW5wcm9ncmFtIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZXhlY25hbWUgPSBzZWxmLm5hbWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhlY25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuZXhlY3V0YWJsZSkKLSAgICAgICAgICAgIGV4ZWNwYXRoID0gcGF0aGpvaW4oc2VsZi5leGVjZGlyLCBleGVjbmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnN5bWxpbmtfZXhlYzoKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgoc2VsZi5kZXN0cm9vdCArIHNlbGYuZXhlY3V0YWJsZSwgZXhlY3BhdGgpKQotICAgICAgICAgICAgc2VsZi5leGVjcGF0aCA9IGV4ZWNwYXRoCi0KLSAgICAgICAgaWYgc2VsZi5tYWlucHJvZ3JhbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG1haW5wcm9ncmFtID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLm1haW5wcm9ncmFtKQotICAgICAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKHNlbGYubWFpbnByb2dyYW0sIHBhdGhqb2luKHJlc2RpciwgbWFpbnByb2dyYW0pKSkKLSAgICAgICAgICAgIGlmIHNlbGYuYXJndl9lbXVsYXRpb246Ci0gICAgICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIG1haW4gcHJvZ3JhbSwgYW5kIGNyZWF0ZSB0aGUgaGVscGVyIG1haW4gcHJvZ3JhbSAod2hpY2gKLSAgICAgICAgICAgICAgICAjIGRvZXMgYXJndiBjb2xsZWN0aW9uIGFuZCB0aGVuIGNhbGxzIHRoZSByZWFsIG1haW4pLgotICAgICAgICAgICAgICAgICMgQWxzbyB1cGRhdGUgdGhlIGluY2x1ZGVkIG1vZHVsZXMgKGlmIHdlJ3JlIGNyZWF0aW5nIGEgc3RhbmRhbG9uZQotICAgICAgICAgICAgICAgICMgcHJvZ3JhbSkgYW5kIHRoZSBwbGlzdAotICAgICAgICAgICAgICAgIHJlYWxtYWlucHJvZ3JhbSA9IG1haW5wcm9ncmFtCi0gICAgICAgICAgICAgICAgbWFpbnByb2dyYW0gPSAnX19hcmd2ZW11bGF0b3JfJyArIG1haW5wcm9ncmFtCi0gICAgICAgICAgICAgICAgcmVzZGlycGF0aCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgcmVzZGlyKQotICAgICAgICAgICAgICAgIG1haW5wcm9ncmFtcGF0aCA9IHBhdGhqb2luKHJlc2RpcnBhdGgsIG1haW5wcm9ncmFtKQotICAgICAgICAgICAgICAgIG1ha2VkaXJzKHJlc2RpcnBhdGgpCi0gICAgICAgICAgICAgICAgb3BlbihtYWlucHJvZ3JhbXBhdGgsICJ3Iikud3JpdGUoQVJHVl9FTVVMQVRPUiAlIGxvY2FscygpKQotICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlTW9kdWxlcy5hcHBlbmQoImFyZ3ZlbXVsYXRvciIpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZU1vZHVsZXMuYXBwZW5kKCJvcyIpCi0gICAgICAgICAgICAgICAgaWYgIkNGQnVuZGxlRG9jdW1lbnRUeXBlcyIgbm90IGluIHNlbGYucGxpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucGxpc3RbIkNGQnVuZGxlRG9jdW1lbnRUeXBlcyJdID0gWwotICAgICAgICAgICAgICAgICAgICAgICAgeyAiQ0ZCdW5kbGVUeXBlT1NUeXBlcyIgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIioqKioiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzayJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0ZCdW5kbGVUeXBlUm9sZSI6ICJWaWV3ZXIifV0KLSAgICAgICAgICAgICMgV3JpdGUgYm9vdHN0cmFwIHNjcmlwdAotICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLnBhdGguYmFzZW5hbWUoc2VsZi5leGVjdXRhYmxlKQotICAgICAgICAgICAgZXhlY2RpciA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgc2VsZi5leGVjZGlyKQotICAgICAgICAgICAgYm9vdHN0cmFwcGF0aCA9IHBhdGhqb2luKGV4ZWNkaXIsIHNlbGYubmFtZSkKLSAgICAgICAgICAgIG1ha2VkaXJzKGV4ZWNkaXIpCi0gICAgICAgICAgICBpZiBzZWxmLnN0YW5kYWxvbmUgb3Igc2VsZi5zZW1pX3N0YW5kYWxvbmU6Ci0gICAgICAgICAgICAgICAgIyBYWFggd2UncmUgc2NyZXdlZCB3aGVuIHRoZSBlbmQgdXNlciBoYXMgZGVsZXRlZAotICAgICAgICAgICAgICAgICMgL3Vzci9iaW4vcHl0aG9uCi0gICAgICAgICAgICAgICAgaGFzaGJhbmcgPSAiL3Vzci9iaW4vcHl0aG9uIgotICAgICAgICAgICAgZWxpZiBzZWxmLnB5dGhvbjoKLSAgICAgICAgICAgICAgICBoYXNoYmFuZyA9IHNlbGYucHl0aG9uCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGhhc2hiYW5nID0gb3MucGF0aC5yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkKLSAgICAgICAgICAgIHN0YW5kYWxvbmUgPSBzZWxmLnN0YW5kYWxvbmUKLSAgICAgICAgICAgIHNlbWlfc3RhbmRhbG9uZSA9IHNlbGYuc2VtaV9zdGFuZGFsb25lCi0gICAgICAgICAgICBvcGVuKGJvb3RzdHJhcHBhdGgsICJ3Iikud3JpdGUoQk9PVFNUUkFQX1NDUklQVCAlIGxvY2FscygpKQotICAgICAgICAgICAgb3MuY2htb2QoYm9vdHN0cmFwcGF0aCwgMG83NzUpCi0KLSAgICAgICAgaWYgc2VsZi5pY29uZmlsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGljb25iYXNlID0gb3MucGF0aC5iYXNlbmFtZShzZWxmLmljb25maWxlKQotICAgICAgICAgICAgc2VsZi5wbGlzdC5DRkJ1bmRsZUljb25GaWxlID0gaWNvbmJhc2UKLSAgICAgICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChzZWxmLmljb25maWxlLCBwYXRoam9pbihyZXNkaXIsIGljb25iYXNlKSkpCi0KLSAgICBkZWYgcG9zdFByb2Nlc3Moc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgIHNlbGYuYWRkUHl0aG9uTW9kdWxlcygpCi0gICAgICAgIGlmIHNlbGYuc3RyaXAgYW5kIG5vdCBzZWxmLnN5bWxpbms6Ci0gICAgICAgICAgICBzZWxmLnN0cmlwQmluYXJpZXMoKQotCi0gICAgICAgIGlmIHNlbGYuc3ltbGlua19leGVjIGFuZCBzZWxmLmV4ZWN1dGFibGU6Ci0gICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIlN5bWxpbmtpbmcgZXhlY3V0YWJsZSAlcyB0byAlcyIgJSAoc2VsZi5leGVjdXRhYmxlLAotICAgICAgICAgICAgICAgICAgICBzZWxmLmV4ZWNwYXRoKSwgMikKLSAgICAgICAgICAgIGRzdCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgc2VsZi5leGVjcGF0aCkKLSAgICAgICAgICAgIG1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShkc3QpKQotICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmFic3BhdGgoc2VsZi5leGVjdXRhYmxlKSwgZHN0KQotCi0gICAgICAgIGlmIHNlbGYubWlzc2luZ01vZHVsZXMgb3Igc2VsZi5tYXliZU1pc3NpbmdNb2R1bGVzOgotICAgICAgICAgICAgc2VsZi5yZXBvcnRNaXNzaW5nKCkKLQotICAgIGRlZiBhZGRQeXRob25GcmFtZXdvcmsoc2VsZik6Ci0gICAgICAgICMgSWYgd2UncmUgYnVpbGRpbmcgYSBzdGFuZGFsb25lIGFwcCB3aXRoIFB5dGhvbi5mcmFtZXdvcmssCi0gICAgICAgICMgaW5jbHVkZSBhIG1pbmltYWwgc3Vic2V0IG9mIFB5dGhvbi5mcmFtZXdvcmssICp1bmxlc3MqCi0gICAgICAgICMgUHl0aG9uLmZyYW1ld29yayB3YXMgc3BlY2lmaWVkIG1hbnVhbGx5IGluIHNlbGYubGlicy4KLSAgICAgICAgZm9yIGxpYiBpbiBzZWxmLmxpYnM6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKGxpYikgPT0gIlB5dGhvbi5mcmFtZXdvcmsiOgotICAgICAgICAgICAgICAgICMgYSBQeXRob24uZnJhbWV3b3JrIHdhcyBzcGVjaWZpZWQgYXMgYSBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZnJhbWV3b3JrcGF0aCA9IHN5cy5leGVjX3ByZWZpeFs6c3lzLmV4ZWNfcHJlZml4LmZpbmQoCi0gICAgICAgICAgICAiUHl0aG9uLmZyYW1ld29yayIpICsgbGVuKCJQeXRob24uZnJhbWV3b3JrIildCi0KLSAgICAgICAgdmVyc2lvbiA9IHN5cy52ZXJzaW9uWzozXQotICAgICAgICBmcmFtZXdvcmtwYXRoID0gcGF0aGpvaW4oZnJhbWV3b3JrcGF0aCwgIlZlcnNpb25zIiwgdmVyc2lvbikKLSAgICAgICAgZGVzdGJhc2UgPSBwYXRoam9pbigiQ29udGVudHMiLCAiRnJhbWV3b3JrcyIsICJQeXRob24uZnJhbWV3b3JrIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmVyc2lvbnMiLCB2ZXJzaW9uKQotICAgICAgICBmb3IgaXRlbSBpbiBQWVRIT05GUkFNRVdPUktHT09ESUVTOgotICAgICAgICAgICAgc3JjID0gcGF0aGpvaW4oZnJhbWV3b3JrcGF0aCwgaXRlbSkKLSAgICAgICAgICAgIGRzdCA9IHBhdGhqb2luKGRlc3RiYXNlLCBpdGVtKQotICAgICAgICAgICAgc2VsZi5maWxlcy5hcHBlbmQoKHNyYywgZHN0KSkKLQotICAgIGRlZiBfZ2V0U2l0ZUNvZGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBjb21waWxlKFNJVEVfUFkgJSB7InNlbWlfc3RhbmRhbG9uZSI6IHNlbGYuc2VtaV9zdGFuZGFsb25lfSwKLSAgICAgICAgICAgICAgICAgICAgICI8LWJ1bmRsZWJ1aWxkZXIucHktPiIsICJleGVjIikKLQotICAgIGRlZiBhZGRQeXRob25Nb2R1bGVzKHNlbGYpOgotICAgICAgICBzZWxmLm1lc3NhZ2UoIkFkZGluZyBQeXRob24gbW9kdWxlcyIsIDEpCi0KLSAgICAgICAgaWYgVVNFX1pJUElNUE9SVDoKLSAgICAgICAgICAgICMgQ3JlYXRlIGEgemlwIGZpbGUgY29udGFpbmluZyBhbGwgbW9kdWxlcyBhcyBweWMuCi0gICAgICAgICAgICBpbXBvcnQgemlwZmlsZQotICAgICAgICAgICAgcmVscGF0aCA9IHBhdGhqb2luKCJDb250ZW50cyIsICJSZXNvdXJjZXMiLCBaSVBfQVJDSElWRSkKLSAgICAgICAgICAgIGFic3BhdGggPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsIHJlbHBhdGgpCi0gICAgICAgICAgICB6ZiA9IHppcGZpbGUuWmlwRmlsZShhYnNwYXRoLCAidyIsIHppcGZpbGUuWklQX0RFRkxBVEVEKQotICAgICAgICAgICAgZm9yIG5hbWUsIGNvZGUsIGlzcGtnIGluIHNlbGYucHltb2R1bGVzOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiQWRkaW5nIFB5dGhvbiBtb2R1bGUgJXMiICUgbmFtZSwgMikKLSAgICAgICAgICAgICAgICBwYXRoLCBweWMgPSBnZXRQeWNEYXRhKG5hbWUsIGNvZGUsIGlzcGtnKQotICAgICAgICAgICAgICAgIHpmLndyaXRlc3RyKHBhdGgsIHB5YykKLSAgICAgICAgICAgIHpmLmNsb3NlKCkKLSAgICAgICAgICAgICMgYWRkIHNpdGUucHljCi0gICAgICAgICAgICBzaXRlcGF0aCA9IHBhdGhqb2luKHNlbGYuYnVuZGxlcGF0aCwgIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsCi0gICAgICAgICAgICAgICAgICAgICJzaXRlIiArIFBZQ19FWFQpCi0gICAgICAgICAgICB3cml0ZVB5YyhzZWxmLl9nZXRTaXRlQ29kZSgpLCBzaXRlcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQ3JlYXRlIGluZGl2aWR1YWwgLnB5YyBmaWxlcy4KLSAgICAgICAgICAgIGZvciBuYW1lLCBjb2RlLCBpc3BrZyBpbiBzZWxmLnB5bW9kdWxlczoKLSAgICAgICAgICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAiLl9faW5pdF9fIgotICAgICAgICAgICAgICAgIHBhdGggPSBuYW1lLnNwbGl0KCIuIikKLSAgICAgICAgICAgICAgICBwYXRoID0gcGF0aGpvaW4oIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsICpwYXRoKSArIFBZQ19FWFQKLQotICAgICAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIkFkZGluZyBQeXRob24gcGFja2FnZSAlcyIgJSBwYXRoLCAyKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiQWRkaW5nIFB5dGhvbiBtb2R1bGUgJXMiICUgcGF0aCwgMikKLQotICAgICAgICAgICAgICAgIGFic3BhdGggPSBwYXRoam9pbihzZWxmLmJ1bmRsZXBhdGgsIHBhdGgpCi0gICAgICAgICAgICAgICAgbWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKGFic3BhdGgpKQotICAgICAgICAgICAgICAgIHdyaXRlUHljKGNvZGUsIGFic3BhdGgpCi0KLSAgICBkZWYgc3RyaXBCaW5hcmllcyhzZWxmKToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKFNUUklQX0VYRUMpOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJFcnJvcjogY2FuJ3Qgc3RyaXAgYmluYXJpZXM6IG5vIHN0cmlwIHByb2dyYW0gYXQgIgotICAgICAgICAgICAgICAgICIlcyIgJSBTVFJJUF9FWEVDLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW1wb3J0IHN0YXQKLSAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiU3RyaXBwaW5nIGJpbmFyaWVzIiwgMSkKLSAgICAgICAgICAgIGRlZiB3YWxrKHRvcCk6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcih0b3ApOgotICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGF0aGpvaW4odG9wLCBuYW1lKQotICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YWxrKHBhdGgpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2QgPSBvcy5zdGF0KHBhdGgpW3N0YXQuU1RfTU9ERV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAobW9kICYgMG8xMDApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWxwYXRoID0gcGF0aFtsZW4oc2VsZi5idW5kbGVwYXRoKTpdCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIlN0cmlwcGluZyAlcyIgJSByZWxwYXRoLCAyKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5mLCBvdXRmID0gb3MucG9wZW40KCIlcyAtUyBcIiVzXCIiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1RSSVBfRVhFQywgcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvdXRmLnJlYWQoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1c3VhbGx5IG5vdCBhIHJlYWwgcHJvYmxlbSwgbGlrZSB3aGVuIHdlJ3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cnlpbmcgdG8gc3RyaXAgYSBzY3JpcHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIlByb2JsZW0gc3RyaXBwaW5nICVzOiIgJSByZWxwYXRoLCAzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZShvdXRwdXQsIDMpCi0gICAgICAgICAgICB3YWxrKHNlbGYuYnVuZGxlcGF0aCkKLQotICAgIGRlZiBmaW5kRGVwZW5kZW5jaWVzKHNlbGYpOgotICAgICAgICBzZWxmLm1lc3NhZ2UoIkZpbmRpbmcgbW9kdWxlIGRlcGVuZGVuY2llcyIsIDEpCi0gICAgICAgIGltcG9ydCBtb2R1bGVmaW5kZXIKLSAgICAgICAgbWYgPSBtb2R1bGVmaW5kZXIuTW9kdWxlRmluZGVyKGV4Y2x1ZGVzPXNlbGYuZXhjbHVkZU1vZHVsZXMpCi0gICAgICAgIGlmIFVTRV9aSVBJTVBPUlQ6Ci0gICAgICAgICAgICAjIHppcGltcG9ydCBpbXBvcnRzIHpsaWIsIG11c3QgYWRkIGl0IG1hbnVhbGx5Ci0gICAgICAgICAgICBtZi5pbXBvcnRfaG9vaygiemxpYiIpCi0gICAgICAgICMgbWFudWFsbHkgYWRkIG91ciBvd24gc2l0ZS5weQotICAgICAgICBzaXRlID0gbWYuYWRkX21vZHVsZSgic2l0ZSIpCi0gICAgICAgIHNpdGUuX19jb2RlX18gPSBzZWxmLl9nZXRTaXRlQ29kZSgpCi0gICAgICAgIG1mLnNjYW5fY29kZShzaXRlLl9fY29kZV9fLCBzaXRlKQotCi0gICAgICAgICMgd2FybmluZ3MucHkgZ2V0cyBpbXBvcnRlZCBpbXBsaWNpdGx5IGZyb20gQwotICAgICAgICBtZi5pbXBvcnRfaG9vaygid2FybmluZ3MiKQotCi0gICAgICAgIGluY2x1ZGVNb2R1bGVzID0gc2VsZi5pbmNsdWRlTW9kdWxlc1s6XQotICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLmluY2x1ZGVQYWNrYWdlczoKLSAgICAgICAgICAgIGluY2x1ZGVNb2R1bGVzLmV4dGVuZChsaXN0KGZpbmRQYWNrYWdlQ29udGVudHMobmFtZSkua2V5cygpKSkKLSAgICAgICAgZm9yIG5hbWUgaW4gaW5jbHVkZU1vZHVsZXM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbWYuaW1wb3J0X2hvb2sobmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLm1pc3NpbmdNb2R1bGVzLmFwcGVuZChuYW1lKQotCi0gICAgICAgIG1mLnJ1bl9zY3JpcHQoc2VsZi5tYWlucHJvZ3JhbSkKLSAgICAgICAgbW9kdWxlcyA9IGxpc3QobWYubW9kdWxlcy5pdGVtcygpKQotICAgICAgICBtb2R1bGVzLnNvcnQoKQotICAgICAgICBmb3IgbmFtZSwgbW9kIGluIG1vZHVsZXM6Ci0gICAgICAgICAgICBwYXRoID0gbW9kLl9fZmlsZV9fCi0gICAgICAgICAgICBpZiBwYXRoIGFuZCBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgICAgICAjIHNraXAgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSAgICAgICAgICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoTElCKSBhbmQgbm90IHBhdGguc3RhcnRzd2l0aChTSVRFX1BBQ0tBR0VTKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHBhdGggYW5kIG1vZC5fX2NvZGVfXyBpcyBOb25lOgotICAgICAgICAgICAgICAgICMgQyBleHRlbnNpb24KLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKLSAgICAgICAgICAgICAgICBwYXRoaXRlbXMgPSBuYW1lLnNwbGl0KCIuIilbOi0xXSArIFtmaWxlbmFtZV0KLSAgICAgICAgICAgICAgICBkc3RwYXRoID0gcGF0aGpvaW4oKnBhdGhpdGVtcykKLSAgICAgICAgICAgICAgICBpZiBVU0VfWklQSU1QT1JUOgotICAgICAgICAgICAgICAgICAgICBpZiBuYW1lICE9ICJ6bGliIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbmVhdGx5IHBhY2sgYWxsIGV4dGVuc2lvbiBtb2R1bGVzIGluIGEgc3ViZGlyZWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgIyBleGNlcHQgemxpYiwgc2luY2UgaXQncyBuZWNlc3NhcnkgZm9yIGJvb3RzdHJhcHBpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICBkc3RwYXRoID0gcGF0aGpvaW4oIkV4dGVuc2lvbk1vZHVsZXMiLCBkc3RwYXRoKQotICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiBtb2R1bGVzIGFyZSBzdG9yZWQgaW4gYSBaaXAgYXJjaGl2ZSwgYnV0IHB1dAotICAgICAgICAgICAgICAgICAgICAjIGV4dGVuc2lvbnMgaW4gQ29udGVudHMvUmVzb3VyY2VzLy4gQWRkIGEgdGlueSAibG9hZGVyIgotICAgICAgICAgICAgICAgICAgICAjIHByb2dyYW0gaW4gdGhlIFppcCBhcmNoaXZlLiBEdWUgdG8gVGhvbWFzIEhlbGxlci4KLSAgICAgICAgICAgICAgICAgICAgc291cmNlID0gRVhUX0xPQURFUiAlIHsibmFtZSI6IG5hbWUsICJmaWxlbmFtZSI6IGRzdHBhdGh9Ci0gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNvdXJjZSwgIjxkeW5sb2FkZXIgZm9yICVzPiIgJSBuYW1lLCAiZXhlYyIpCi0gICAgICAgICAgICAgICAgICAgIG1vZC5fX2NvZGVfXyA9IGNvZGUKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGVzLmFwcGVuZCgocGF0aCwgcGF0aGpvaW4oIkNvbnRlbnRzIiwgIlJlc291cmNlcyIsIGRzdHBhdGgpKSkKLSAgICAgICAgICAgIGlmIG1vZC5fX2NvZGVfXyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpc3BrZyA9IG1vZC5fX3BhdGhfXyBpcyBub3QgTm9uZQotICAgICAgICAgICAgICAgIGlmIG5vdCBVU0VfWklQSU1QT1JUIG9yIG5hbWUgIT0gInNpdGUiOgotICAgICAgICAgICAgICAgICAgICAjIE91ciBzaXRlLnB5IGlzIGRvaW5nIHRoZSBib290c3RyYXBwaW5nLCBzbyB3ZSBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICMgaW5jbHVkZSBhIHJlYWwgLnB5YyBmaWxlIGlmIFVTRV9aSVBJTVBPUlQgaXMgVHJ1ZS4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5weW1vZHVsZXMuYXBwZW5kKChuYW1lLCBtb2QuX19jb2RlX18sIGlzcGtnKSkKLQotICAgICAgICBpZiBoYXNhdHRyKG1mLCAiYW55X21pc3NpbmdfbWF5YmUiKToKLSAgICAgICAgICAgIG1pc3NpbmcsIG1heWJlID0gbWYuYW55X21pc3NpbmdfbWF5YmUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWlzc2luZyA9IG1mLmFueV9taXNzaW5nKCkKLSAgICAgICAgICAgIG1heWJlID0gW10KLSAgICAgICAgc2VsZi5taXNzaW5nTW9kdWxlcy5leHRlbmQobWlzc2luZykKLSAgICAgICAgc2VsZi5tYXliZU1pc3NpbmdNb2R1bGVzLmV4dGVuZChtYXliZSkKLQotICAgIGRlZiByZXBvcnRNaXNzaW5nKHNlbGYpOgotICAgICAgICBtaXNzaW5nID0gW25hbWUgZm9yIG5hbWUgaW4gc2VsZi5taXNzaW5nTW9kdWxlcwotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIE1BWU1JU1NfTU9EVUxFU10KLSAgICAgICAgaWYgc2VsZi5tYXliZU1pc3NpbmdNb2R1bGVzOgotICAgICAgICAgICAgbWF5YmUgPSBzZWxmLm1heWJlTWlzc2luZ01vZHVsZXMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1heWJlID0gW25hbWUgZm9yIG5hbWUgaW4gbWlzc2luZyBpZiAiLiIgaW4gbmFtZV0KLSAgICAgICAgICAgIG1pc3NpbmcgPSBbbmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nIGlmICIuIiBub3QgaW4gbmFtZV0KLSAgICAgICAgbWlzc2luZy5zb3J0KCkKLSAgICAgICAgbWF5YmUuc29ydCgpCi0gICAgICAgIGlmIG1heWJlOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJXYXJuaW5nOiBjb3VsZG4ndCBmaW5kIHRoZSBmb2xsb3dpbmcgc3VibW9kdWxlczoiLCAxKQotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIgICAgKE5vdGUgdGhhdCB0aGVzZSBjb3VsZCBiZSBmYWxzZSBhbGFybXMgLS0gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJpdCdzIG5vdCBhbHdheXMiLCAxKQotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIgICAgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBcImZyb20gcGFja2FnZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzdWJtb2R1bGVcIiAiLCAxKQotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCIgICAgYW5kIFwiZnJvbSBwYWNrYWdlIGltcG9ydCBuYW1lXCIpIiwgMSkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIG1heWJlOgotICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgiICA/ICIgKyBuYW1lLCAxKQotICAgICAgICBpZiBtaXNzaW5nOgotICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCJXYXJuaW5nOiBjb3VsZG4ndCBmaW5kIHRoZSBmb2xsb3dpbmcgbW9kdWxlczoiLCAxKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbWlzc2luZzoKLSAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoIiAgPyAiICsgbmFtZSwgMSkKLQotICAgIGRlZiByZXBvcnQoc2VsZik6Ci0gICAgICAgICMgWFhYIHNvbWV0aGluZyBkZWNlbnQKLSAgICAgICAgaW1wb3J0IHBwcmludAotICAgICAgICBwcHJpbnQucHByaW50KHNlbGYuX19kaWN0X18pCi0gICAgICAgIGlmIHNlbGYuc3RhbmRhbG9uZSBvciBzZWxmLnNlbWlfc3RhbmRhbG9uZToKLSAgICAgICAgICAgIHNlbGYucmVwb3J0TWlzc2luZygpCi0KLSMKLSMgVXRpbGl0aWVzLgotIwotCi1TVUZGSVhFUyA9IFtfc3VmIGZvciBfc3VmLCBfbW9kZSwgX3RwIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KLWlkZW50aWZpZXJSRSA9IHJlLmNvbXBpbGUociJbX2EtekEtel1bX2EtekEtWjAtOV0qJCIpCi0KLWRlZiBmaW5kUGFja2FnZUNvbnRlbnRzKG5hbWUsIHNlYXJjaHBhdGg9Tm9uZSk6Ci0gICAgaGVhZCA9IG5hbWUuc3BsaXQoIi4iKVstMV0KLSAgICBpZiBpZGVudGlmaWVyUkUubWF0Y2goaGVhZCkgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIHt9Ci0gICAgdHJ5OgotICAgICAgICBmcCwgcGF0aCwgKGV4dCwgbW9kZSwgdHApID0gaW1wLmZpbmRfbW9kdWxlKGhlYWQsIHNlYXJjaHBhdGgpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICByZXR1cm4ge30KLSAgICBtb2R1bGVzID0ge25hbWU6IE5vbmV9Ci0gICAgaWYgdHAgPT0gaW1wLlBLR19ESVJFQ1RPUlkgYW5kIHBhdGg6Ci0gICAgICAgIGZpbGVzID0gb3MubGlzdGRpcihwYXRoKQotICAgICAgICBmb3Igc3ViIGluIGZpbGVzOgotICAgICAgICAgICAgc3ViLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHN1YikKLSAgICAgICAgICAgIGZ1bGxuYW1lID0gbmFtZSArICIuIiArIHN1YgotICAgICAgICAgICAgaWYgc3ViICE9ICJfX2luaXRfXyIgYW5kIGZ1bGxuYW1lIG5vdCBpbiBtb2R1bGVzOgotICAgICAgICAgICAgICAgIG1vZHVsZXMudXBkYXRlKGZpbmRQYWNrYWdlQ29udGVudHMoZnVsbG5hbWUsIFtwYXRoXSkpCi0gICAgcmV0dXJuIG1vZHVsZXMKLQotZGVmIHdyaXRlUHljKGNvZGUsIHBhdGgpOgotICAgIGYgPSBvcGVuKHBhdGgsICJ3YiIpCi0gICAgZi53cml0ZShNQUdJQykKLSAgICBmLndyaXRlKCJcMCIgKiA0KSAgIyBkb24ndCBib3RoZXIgYWJvdXQgYSB0aW1lIHN0YW1wCi0gICAgbWFyc2hhbC5kdW1wKGNvZGUsIGYpCi0gICAgZi5jbG9zZSgpCi0KLWRlZiBjb3B5KHNyYywgZHN0LCBta2RpcnM9MCk6Ci0gICAgIiIiQ29weSBhIGZpbGUgb3IgYSBkaXJlY3RvcnkuIiIiCi0gICAgaWYgbWtkaXJzOgotICAgICAgICBtYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoZHN0KSkKLSAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6Ci0gICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmMsIGRzdCwgc3ltbGlua3M9MSkKLSAgICBlbHNlOgotICAgICAgICBzaHV0aWwuY29weTIoc3JjLCBkc3QpCi0KLWRlZiBjb3B5dG9kaXIoc3JjLCBkc3RkaXIpOgotICAgICIiIkNvcHkgYSBmaWxlIG9yIGEgZGlyZWN0b3J5IHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4iIiIKLSAgICBkc3QgPSBwYXRoam9pbihkc3RkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSkKLSAgICBjb3B5KHNyYywgZHN0KQotCi1kZWYgbWFrZWRpcnMoZGlyKToKLSAgICAiIiJNYWtlIGFsbCBkaXJlY3RvcmllcyBsZWFkaW5nIHVwIHRvICdkaXInIGluY2x1ZGluZyB0aGUgbGVhZgotICAgIGRpcmVjdG9yeS4gRG9uJ3QgbW9hbiBpZiBhbnkgcGF0aCBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiIiIgotICAgIHRyeToKLSAgICAgICAgb3MubWFrZWRpcnMoZGlyKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIHdoeToKLSAgICAgICAgaWYgd2h5LmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgIHJhaXNlCi0KLWRlZiBzeW1saW5rKHNyYywgZHN0LCBta2RpcnM9MCk6Ci0gICAgIiIiQ29weSBhIGZpbGUgb3IgYSBkaXJlY3RvcnkuIiIiCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNyYyk6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IoIk5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk6ICclcyciICUgc3JjKQotICAgIGlmIG1rZGlyczoKLSAgICAgICAgbWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKGRzdCkpCi0gICAgb3Muc3ltbGluayhvcy5wYXRoLmFic3BhdGgoc3JjKSwgZHN0KQotCi1kZWYgcGF0aGpvaW4oKmFyZ3MpOgotICAgICIiIlNhZmUgd3JhcHBlciBmb3Igb3MucGF0aC5qb2luOiBhc3NlcnRzIHRoYXQgYWxsIGJ1dCB0aGUgZmlyc3QKLSAgICBhcmd1bWVudCBhcmUgcmVsYXRpdmUgcGF0aHMuIiIiCi0gICAgZm9yIHNlZyBpbiBhcmdzWzE6XToKLSAgICAgICAgYXNzZXJ0IHNlZ1swXSAhPSAiLyIKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCphcmdzKQotCi0KLWNtZGxpbmVfZG9jID0gIiIiXAotVXNhZ2U6Ci0gIHB5dGhvbiBidW5kbGVidWlsZGVyLnB5IFtvcHRpb25zXSBjb21tYW5kCi0gIHB5dGhvbiBteWJ1aWxkc2NyaXB0LnB5IFtvcHRpb25zXSBjb21tYW5kCi0KLUNvbW1hbmRzOgotICBidWlsZCAgICAgIGJ1aWxkIHRoZSBhcHBsaWNhdGlvbgotICByZXBvcnQgICAgIHByaW50IGEgcmVwb3J0Ci0KLU9wdGlvbnM6Ci0gIC1iLCAtLWJ1aWxkZGlyPURJUiAgICAgdGhlIGJ1aWxkIGRpcmVjdG9yeTsgZGVmYXVsdHMgdG8gImJ1aWxkIgotICAtbiwgLS1uYW1lPU5BTUUgICAgICAgIGFwcGxpY2F0aW9uIG5hbWUKLSAgLXIsIC0tcmVzb3VyY2U9RklMRSAgICBleHRyYSBmaWxlIG9yIGZvbGRlciB0byBiZSBjb3BpZWQgdG8gUmVzb3VyY2VzCi0gIC1mLCAtLWZpbGU9U1JDOkRTVCAgICAgZXh0cmEgZmlsZSBvciBmb2xkZXIgdG8gYmUgY29waWVkIGludG8gdGhlIGJ1bmRsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBEU1QgbXVzdCBiZSBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGJ1bmRsZSByb290Ci0gIC1lLCAtLWV4ZWN1dGFibGU9RklMRSAgdGhlIGV4ZWN1dGFibGUgdG8gYmUgdXNlZAotICAtbSwgLS1tYWlucHJvZ3JhbT1GSUxFIHRoZSBQeXRob24gbWFpbiBwcm9ncmFtCi0gIC1hLCAtLWFyZ3YgICAgICAgICAgICAgYWRkIGEgd3JhcHBlciBtYWluIHByb2dyYW0gdG8gY3JlYXRlIHN5cy5hcmd2Ci0gIC1wLCAtLXBsaXN0PUZJTEUgICAgICAgLnBsaXN0IGZpbGUgKGRlZmF1bHQ6IGdlbmVyYXRlIG9uZSkKLSAgICAgIC0tbmliPU5BTUUgICAgICAgICBtYWluIG5pYiBuYW1lCi0gIC1jLCAtLWNyZWF0b3I9Q0NDQyAgICAgNC1jaGFyIGNyZWF0b3IgY29kZSAoZGVmYXVsdDogJz8/Pz8nKQotICAgICAgLS1pY29uZmlsZT1GSUxFICAgIGZpbGVuYW1lIG9mIHRoZSBpY29uIChhbiAuaWNucyBmaWxlKSB0byBiZSB1c2VkCi0gICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIEZpbmRlciBpY29uCi0gICAgICAtLWJ1bmRsZS1pZD1JRCAgICAgdGhlIENGQnVuZGxlSWRlbnRpZmllciwgaW4gcmV2ZXJzZS1kbnMgZm9ybWF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKGVnLiBvcmcucHl0aG9uLkJ1aWxkQXBwbGV0OyB0aGlzIGlzIHVzZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHByZWZlcmVuY2VzIGZpbGUgbmFtZSkKLSAgLWwsIC0tbGluayAgICAgICAgICAgICBzeW1saW5rIGZpbGVzL2ZvbGRlciBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhlbQotICAgICAgLS1saW5rLWV4ZWMgICAgICAgIHN5bWxpbmsgdGhlIGV4ZWN1dGFibGUgaW5zdGVhZCBvZiBjb3B5aW5nIGl0Ci0gICAgICAtLXN0YW5kYWxvbmUgICAgICAgYnVpbGQgYSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLCB3aGljaCBpcyBmdWxseQotICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVwZW5kZW50IG9mIGEgUHl0aG9uIGluc3RhbGxhdGlvbgotICAgICAgLS1zZW1pLXN0YW5kYWxvbmUgIGJ1aWxkIGEgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiwgd2hpY2ggZGVwZW5kcyBvbgotICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbGxlZCBQeXRob24sIHlldCBpbmNsdWRlcyBhbGwgdGhpcmQtcGFydHkKLSAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLgotICAgICAgLS1weXRob249RklMRSAgICAgIFB5dGhvbiB0byB1c2UgaW4gIyEgbGluZSBpbiBzdGVhZCBvZiBjdXJyZW50IFB5dGhvbgotICAgICAgLS1saWI9RklMRSAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IG9yIGZyYW1ld29yayB0byBiZSBjb3BpZWQgaW50bwotICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidW5kbGUKLSAgLXgsIC0tZXhjbHVkZT1NT0RVTEUgICBleGNsdWRlIG1vZHVsZSAod2l0aCAtLShzZW1pLSlzdGFuZGFsb25lKQotICAtaSwgLS1pbmNsdWRlPU1PRFVMRSAgIGluY2x1ZGUgbW9kdWxlICh3aXRoIC0tKHNlbWktKXN0YW5kYWxvbmUpCi0gICAgICAtLXBhY2thZ2U9UEFDS0FHRSAgaW5jbHVkZSBhIHdob2xlIHBhY2thZ2UgKHdpdGggLS0oc2VtaS0pc3RhbmRhbG9uZSkKLSAgICAgIC0tc3RyaXAgICAgICAgICAgICBzdHJpcCBiaW5hcmllcyAocmVtb3ZlIGRlYnVnIGluZm8pCi0gIC12LCAtLXZlcmJvc2UgICAgICAgICAgaW5jcmVhc2UgdmVyYm9zaXR5IGxldmVsCi0gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgZGVjcmVhc2UgdmVyYm9zaXR5IGxldmVsCi0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgcHJpbnQgdGhpcyBtZXNzYWdlCi0iIiIKLQotZGVmIHVzYWdlKG1zZz1Ob25lKToKLSAgICBpZiBtc2c6Ci0gICAgICAgIHByaW50KG1zZykKLSAgICBwcmludChjbWRsaW5lX2RvYykKLSAgICBzeXMuZXhpdCgxKQotCi1kZWYgbWFpbihidWlsZGVyPU5vbmUpOgotICAgIGlmIGJ1aWxkZXIgaXMgTm9uZToKLSAgICAgICAgYnVpbGRlciA9IEFwcEJ1aWxkZXIodmVyYm9zaXR5PTEpCi0KLSAgICBzaG9ydG9wdHMgPSAiYjpuOnI6ZjplOm06YzpwOmx4Omk6aHZxYSIKLSAgICBsb25nb3B0cyA9ICgiYnVpbGRkaXI9IiwgIm5hbWU9IiwgInJlc291cmNlPSIsICJmaWxlPSIsICJleGVjdXRhYmxlPSIsCi0gICAgICAgICJtYWlucHJvZ3JhbT0iLCAiY3JlYXRvcj0iLCAibmliPSIsICJwbGlzdD0iLCAibGluayIsCi0gICAgICAgICJsaW5rLWV4ZWMiLCAiaGVscCIsICJ2ZXJib3NlIiwgInF1aWV0IiwgImFyZ3YiLCAic3RhbmRhbG9uZSIsCi0gICAgICAgICJleGNsdWRlPSIsICJpbmNsdWRlPSIsICJwYWNrYWdlPSIsICJzdHJpcCIsICJpY29uZmlsZT0iLAotICAgICAgICAibGliPSIsICJweXRob249IiwgInNlbWktc3RhbmRhbG9uZSIsICJidW5kbGUtaWQ9IiwgImRlc3Ryb290PSIpCi0KLSAgICB0cnk6Ci0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgc2hvcnRvcHRzLCBsb25nb3B0cykKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yOgotICAgICAgICB1c2FnZSgpCi0KLSAgICBmb3Igb3B0LCBhcmcgaW4gb3B0aW9uczoKLSAgICAgICAgaWYgb3B0IGluICgnLWInLCAnLS1idWlsZGRpcicpOgotICAgICAgICAgICAgYnVpbGRlci5idWlsZGRpciA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy1uJywgJy0tbmFtZScpOgotICAgICAgICAgICAgYnVpbGRlci5uYW1lID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLXInLCAnLS1yZXNvdXJjZScpOgotICAgICAgICAgICAgYnVpbGRlci5yZXNvdXJjZXMuYXBwZW5kKG9zLnBhdGgubm9ybXBhdGgoYXJnKSkKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctZicsICctLWZpbGUnKToKLSAgICAgICAgICAgIHNyY2RzdCA9IGFyZy5zcGxpdCgnOicpCi0gICAgICAgICAgICBpZiBsZW4oc3JjZHN0KSAhPSAyOgotICAgICAgICAgICAgICAgIHVzYWdlKCItZiBvciAtLWZpbGUgYXJndW1lbnQgbXVzdCBiZSB0d28gcGF0aHMsICIKLSAgICAgICAgICAgICAgICAgICAgICAic2VwYXJhdGVkIGJ5IGEgY29sb24iKQotICAgICAgICAgICAgYnVpbGRlci5maWxlcy5hcHBlbmQoc3JjZHN0KQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1lJywgJy0tZXhlY3V0YWJsZScpOgotICAgICAgICAgICAgYnVpbGRlci5leGVjdXRhYmxlID0gYXJnCi0gICAgICAgIGVsaWYgb3B0IGluICgnLW0nLCAnLS1tYWlucHJvZ3JhbScpOgotICAgICAgICAgICAgYnVpbGRlci5tYWlucHJvZ3JhbSA9IGFyZwotICAgICAgICBlbGlmIG9wdCBpbiAoJy1hJywgJy0tYXJndicpOgotICAgICAgICAgICAgYnVpbGRlci5hcmd2X2VtdWxhdGlvbiA9IDEKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctYycsICctLWNyZWF0b3InKToKLSAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRvciA9IGFyZwotICAgICAgICBlbGlmIG9wdCA9PSAnLS1idW5kbGUtaWQnOgotICAgICAgICAgICAgYnVpbGRlci5idW5kbGVfaWQgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0taWNvbmZpbGUnOgotICAgICAgICAgICAgYnVpbGRlci5pY29uZmlsZSA9IGFyZwotICAgICAgICBlbGlmIG9wdCA9PSAiLS1saWIiOgotICAgICAgICAgICAgYnVpbGRlci5saWJzLmFwcGVuZChvcy5wYXRoLm5vcm1wYXRoKGFyZykpCi0gICAgICAgIGVsaWYgb3B0ID09ICItLW5pYiI6Ci0gICAgICAgICAgICBidWlsZGVyLm5pYm5hbWUgPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctcCcsICctLXBsaXN0Jyk6Ci0gICAgICAgICAgICBidWlsZGVyLnBsaXN0ID0gUGxpc3QuZnJvbUZpbGUoYXJnKQotICAgICAgICBlbGlmIG9wdCBpbiAoJy1sJywgJy0tbGluaycpOgotICAgICAgICAgICAgYnVpbGRlci5zeW1saW5rID0gMQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1saW5rLWV4ZWMnOgotICAgICAgICAgICAgYnVpbGRlci5zeW1saW5rX2V4ZWMgPSAxCi0gICAgICAgIGVsaWYgb3B0IGluICgnLWgnLCAnLS1oZWxwJyk6Ci0gICAgICAgICAgICB1c2FnZSgpCi0gICAgICAgIGVsaWYgb3B0IGluICgnLXYnLCAnLS12ZXJib3NlJyk6Ci0gICAgICAgICAgICBidWlsZGVyLnZlcmJvc2l0eSArPSAxCi0gICAgICAgIGVsaWYgb3B0IGluICgnLXEnLCAnLS1xdWlldCcpOgotICAgICAgICAgICAgYnVpbGRlci52ZXJib3NpdHkgLT0gMQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1zdGFuZGFsb25lJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuc3RhbmRhbG9uZSA9IDEKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tc2VtaS1zdGFuZGFsb25lJzoKLSAgICAgICAgICAgIGJ1aWxkZXIuc2VtaV9zdGFuZGFsb25lID0gMQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1weXRob24nOgotICAgICAgICAgICAgYnVpbGRlci5weXRob24gPSBhcmcKLSAgICAgICAgZWxpZiBvcHQgaW4gKCcteCcsICctLWV4Y2x1ZGUnKToKLSAgICAgICAgICAgIGJ1aWxkZXIuZXhjbHVkZU1vZHVsZXMuYXBwZW5kKGFyZykKLSAgICAgICAgZWxpZiBvcHQgaW4gKCctaScsICctLWluY2x1ZGUnKToKLSAgICAgICAgICAgIGJ1aWxkZXIuaW5jbHVkZU1vZHVsZXMuYXBwZW5kKGFyZykKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tcGFja2FnZSc6Ci0gICAgICAgICAgICBidWlsZGVyLmluY2x1ZGVQYWNrYWdlcy5hcHBlbmQoYXJnKQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1zdHJpcCc6Ci0gICAgICAgICAgICBidWlsZGVyLnN0cmlwID0gMQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1kZXN0cm9vdCc6Ci0gICAgICAgICAgICBidWlsZGVyLmRlc3Ryb290ID0gYXJnCi0KLSAgICBpZiBsZW4oYXJncykgIT0gMToKLSAgICAgICAgdXNhZ2UoIk11c3Qgc3BlY2lmeSBvbmUgY29tbWFuZCAoJ2J1aWxkJywgJ3JlcG9ydCcgb3IgJ2hlbHAnKSIpCi0gICAgY29tbWFuZCA9IGFyZ3NbMF0KLQotICAgIGlmIGNvbW1hbmQgPT0gImJ1aWxkIjoKLSAgICAgICAgYnVpbGRlci5zZXR1cCgpCi0gICAgICAgIGJ1aWxkZXIuYnVpbGQoKQotICAgIGVsaWYgY29tbWFuZCA9PSAicmVwb3J0IjoKLSAgICAgICAgYnVpbGRlci5zZXR1cCgpCi0gICAgICAgIGJ1aWxkZXIucmVwb3J0KCkKLSAgICBlbGlmIGNvbW1hbmQgPT0gImhlbHAiOgotICAgICAgICB1c2FnZSgpCi0gICAgZWxzZToKLSAgICAgICAgdXNhZ2UoIlVua25vd24gY29tbWFuZCAnJXMnIiAlIGNvbW1hbmQpCi0KLQotZGVmIGJ1aWxkYXBwKCoqa3dhcmdzKToKLSAgICBidWlsZGVyID0gQXBwQnVpbGRlcigqKmt3YXJncykKLSAgICBtYWluKGJ1aWxkZXIpCi0KLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCBlMTlmYzAwLi5jZTJjMGFhMiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKyBiL01ha2VmaWxlLnByZS5pbgpAQCAtMzI4LDYgKzMyOCwxMyBAQAogUEdFTk9CSlM9CSQoUE9CSlMpICQoUEdPQkpTKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBvcGNvZGUuaCBnZW5lcmF0aW9uCitPUENPREVfSF9ESVI9IAkkKHNyY2RpcikvSW5jbHVkZQorT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQorT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAorT1BDT0RFX0hfR0VOPQlAT1BDT0RFSEdFTkAgICQoT1BDT0RFX0hfU0NSSVBUKSAkKHNyY2RpcikvTGliL29wY29kZS5weSAkKE9QQ09ERV9IKQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKIEFTVF9IPQkJJChBU1RfSF9ESVIpL1B5dGhvbi1hc3QuaApAQCAtMzgyLDYgKzM4OSw3IEBACiAJCVB5dGhvbi9weWN0eXBlLm8gXAogCQlQeXRob24vcHlmcGUubyBcCiAJCVB5dGhvbi9weWhhc2gubyBcCisJCVB5dGhvbi9weWxpZmVjeWNsZS5vIFwKIAkJUHl0aG9uL3B5bWF0aC5vIFwKIAkJUHl0aG9uL3B5c3RhdGUubyBcCiAJCVB5dGhvbi9weXRob25ydW4ubyBcCkBAIC0zOTQsNiArNDAyLDcgQEAKIAkJUHl0aG9uL2dldG9wdC5vIFwKIAkJUHl0aG9uL3B5c3RyY21wLm8gXAogCQlQeXRob24vcHlzdHJ0b2QubyBcCisJCVB5dGhvbi9weXN0cmhleC5vIFwKIAkJUHl0aG9uL2R0b2EubyBcCiAJCVB5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5vIFwKIAkJUHl0aG9uL2ZpbGV1dGlscy5vIFwKQEAgLTQyOCw2ICs0MzcsNyBAQAogCQlPYmplY3RzL2xpc3RvYmplY3QubyBcCiAJCU9iamVjdHMvbG9uZ29iamVjdC5vIFwKIAkJT2JqZWN0cy9kaWN0b2JqZWN0Lm8gXAorCQlPYmplY3RzL29kaWN0b2JqZWN0Lm8gXAogCQlPYmplY3RzL21lbW9yeW9iamVjdC5vIFwKIAkJT2JqZWN0cy9tZXRob2RvYmplY3QubyBcCiAJCU9iamVjdHMvbW9kdWxlb2JqZWN0Lm8gXApAQCAtNDY1LDcgKzQ3NSw3IEBACiAKICMgRGVmYXVsdCB0YXJnZXQKIGFsbDoJCWJ1aWxkX2FsbAotYnVpbGRfYWxsOgkkKEJVSUxEUFlUSE9OKSBvbGRzaGFyZWRtb2RzIHNoYXJlZG1vZHMgZ2RiaG9va3MgTW9kdWxlcy9fdGVzdGVtYmVkIHB5dGhvbi1jb25maWcKK2J1aWxkX2FsbDoJJChCVUlMRFBZVEhPTikgb2xkc2hhcmVkbW9kcyBzaGFyZWRtb2RzIGdkYmhvb2tzIFByb2dyYW1zL190ZXN0ZW1iZWQgcHl0aG9uLWNvbmZpZwogCiAjIENvbXBpbGUgYSBiaW5hcnkgd2l0aCBnY2MgcHJvZmlsZSBndWlkZWQgb3B0aW1pemF0aW9uLgogcHJvZmlsZS1vcHQ6CkBAIC01MjQsNiArNTM0LDcgQEAKIAk6ICMgZm9yY2UgcmVidWlsZGluZyBvZiBwYXJzZXIgYW5kIGltcG9ydGxpYgogCUB0b3VjaCAkKEdSQU1NQVJfSU5QVVQpCiAJQHRvdWNoICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKKwlAdG91Y2ggJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQogCTogIyBidWlsZCB3aXRoIGNvdmVyYWdlIGluZm8KIAkkKE1BS0UpIGNvdmVyYWdlCiAJOiAjIHJ1biB0ZXN0cywgaWdub3JlIGZhaWx1cmVzCkBAIC01MzgsOCArNTQ5LDggQEAKIAkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAuL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgLS1tYWtlCiAKICMgQnVpbGQgdGhlIGludGVycHJldGVyCi0kKEJVSUxEUFlUSE9OKToJTW9kdWxlcy9weXRob24ubyAkKExJQlJBUlkpICQoTERMSUJSQVJZKSAkKFBZM0xJQlJBUlkpCi0JJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBNb2R1bGVzL3B5dGhvbi5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiskKEJVSUxEUFlUSE9OKToJUHJvZ3JhbXMvcHl0aG9uLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQorCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0CiAJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KQEAgLTY3NCwxOCArNjg1LDIzIEBACiAJCWVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIjsgXAogCWZpCiAKLU1vZHVsZXMvX3Rlc3RlbWJlZDogTW9kdWxlcy9fdGVzdGVtYmVkLm8gJChMSUJSQVJZKSAkKExETElCUkFSWSkgJChQWTNMSUJSQVJZKQotCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgTW9kdWxlcy9fdGVzdGVtYmVkLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKK1Byb2dyYW1zL190ZXN0ZW1iZWQ6IFByb2dyYW1zL190ZXN0ZW1iZWQubyAkKExJQlJBUlkpICQoTERMSUJSQVJZKSAkKFBZM0xJQlJBUlkpCisJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBQcm9ncmFtcy9fdGVzdGVtYmVkLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBJbXBvcnRsaWIKIAotTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYjogTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQotCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCitQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jIE1ha2VmaWxlCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKLQkkKE1BS0UpIE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIKLQkuL01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAorUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCisJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCisKK1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgorCS4vUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAorCQkkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAorCitQeXRob24vaW1wb3J0bGliLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKKwkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKIAkJJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQeXRob24vaW1wb3J0bGliLmgKIAogCkBAIC03MTMsMTEgKzcyOSwxMSBAQAogCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCiAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwogCi1Nb2R1bGVzL3B5dGhvbi5vOiAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYwotCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9weXRob24uYworUHJvZ3JhbXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYworCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvUHJvZ3JhbXMvcHl0aG9uLmMKIAotTW9kdWxlcy9fdGVzdGVtYmVkLm86ICQoc3JjZGlyKS9Nb2R1bGVzL190ZXN0ZW1iZWQuYwotCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKK1Byb2dyYW1zL190ZXN0ZW1iZWQubzogJChzcmNkaXIpL1Byb2dyYW1zL190ZXN0ZW1iZWQuYworCSQoTUFJTkNDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkKHNyY2RpcikvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCiAKIE1vZHVsZXMvX3NyZS5vOiAkKHNyY2RpcikvTW9kdWxlcy9fc3JlLmMgJChzcmNkaXIpL01vZHVsZXMvc3JlLmggJChzcmNkaXIpL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oICQoc3JjZGlyKS9Nb2R1bGVzL3NyZV9saWIuaAogCkBAIC03NDYsMTUgKzc2MiwxMyBAQAogCiAkKElPX09CSlMpOiAkKElPX0gpCiAKLSQoR1JBTU1BUl9IKTogJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQorJChHUkFNTUFSX0gpOiAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKIAkJQCQoTUtESVJfUCkgSW5jbHVkZQotCQkkKE1BS0UpICQoUEdFTikKIAkJJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKLQkJJChNQUtFKSAkKEdSQU1NQVJfSCkKKyQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpCiAJCXRvdWNoICQoR1JBTU1BUl9DKQogCi0kKFBHRU4pOgkkKFBHRU5PQkpTKQorJChQR0VOKTogJChQR0VOT0JKUykKIAkJJChDQykgJChPUFQpICQoUFlfTERGTEFHUykgJChQR0VOT0JKUykgJChMSUJTKSAtbyAkKFBHRU4pCiAKIFBhcnNlci9ncmFtbWFyLm86CSQoc3JjZGlyKS9QYXJzZXIvZ3JhbW1hci5jIFwKQEAgLTc3Niw2ICs3OTAsOSBAQAogCSQoTUtESVJfUCkgJChBU1RfQ19ESVIpCiAJJChBU0RMR0VOKSAtYyAkKEFTVF9DX0RJUikgJChBU1RfQVNETCkKIAorJChPUENPREVfSCk6ICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0hfU0NSSVBUKQorCSQoT1BDT0RFX0hfR0VOKQorCiBQeXRob24vY29tcGlsZS5vIFB5dGhvbi9zeW10YWJsZS5vIFB5dGhvbi9hc3QubzogJChHUkFNTUFSX0gpICQoQVNUX0gpCiAKIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKQEAgLTgzMCw3ICs4NDcsNyBAQAogCiBQeXRob24vY2V2YWwubzogJChPUENPREVUQVJHRVRTX0gpICQoc3JjZGlyKS9QeXRob24vY2V2YWxfZ2lsLmgKIAotUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmgKK1B5dGhvbi9mcm96ZW4ubzogUHl0aG9uL2ltcG9ydGxpYi5oIFB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAogCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQpAQCAtODg3LDcgKzkwNCw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL25vZGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamVjdC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb2JqaW1wbC5oIFwKLQkJJChzcmNkaXIpL0luY2x1ZGUvb3Bjb2RlLmggXAorCQkkKE9QQ09ERV9IKSBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL29zZGVmcy5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbi5oIFwKQEAgLTkwMCw2ICs5MTcsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWVycm9ycy5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlmcGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5aGFzaC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlsaWZlY3ljbGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWF0aC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlnZXRvcHQuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5bWFjcm8uaCBcCkBAIC05MDgsNiArOTI2LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdGF0ZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJjbXAuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5c3RydG9kLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cmhleC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aG9ucnVuLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weXRocmVhZC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aW1lLmggXApAQCAtOTI4LDcgKzk0Nyw3IEBACiAJCSQoUEFSU0VSX0hFQURFUlMpIFwKIAkJJChBU1RfSCkKIAotJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgTW9kdWxlcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKKyQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTExMzEsOSArMTE1MCwxNCBAQAogCQl0ZXN0L2F1ZGlvZGF0YSBcCiAJCXRlc3QvY2FwYXRoIHRlc3QvZGF0YSBcCiAJCXRlc3QvY2prZW5jb2RpbmdzIHRlc3QvZGVjaW1hbHRlc3RkYXRhIHRlc3QveG1sdGVzdGRhdGEgXAorCQl0ZXN0L2VpbnRyZGF0YSBcCiAJCXRlc3QvaW1naGRyZGF0YSBcCiAJCXRlc3Qvc3VicHJvY2Vzc2RhdGEgdGVzdC9zbmRoZHJkYXRhIHRlc3Qvc3VwcG9ydCBcCiAJCXRlc3QvdHJhY2VkbW9kdWxlcyB0ZXN0L2VuY29kZWRfbW9kdWxlcyBcCisJCXRlc3QvdGVzdF9pbXBvcnQgXAorCQl0ZXN0L3Rlc3RfaW1wb3J0L2RhdGEgXAorCQl0ZXN0L3Rlc3RfaW1wb3J0L2RhdGEvY2lyY3VsYXJfaW1wb3J0cyBcCisJCXRlc3QvdGVzdF9pbXBvcnQvZGF0YS9jaXJjdWxhcl9pbXBvcnRzL3N1YnBrZyBcCiAJCXRlc3QvdGVzdF9pbXBvcnRsaWIvbmFtZXNwYWNlX3BrZ3MgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vIFwKQEAgLTEyNDYsNyArMTI3MCwxMiBAQAogCQktZCAkKExJQkRFU1QpIC1mIFwKIAkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAJCSQoREVTVERJUikkKExJQkRFU1QpCi0JLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCisJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU9PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQktZCAkKExJQkRFU1QpIC1mIFwKKwkJLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCisJCSQoREVTVERJUikkKExJQkRFU1QpCisJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCiAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCkBAIC0xMjU1LDYgKzEyODQsMTAgQEAKIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtT08gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCisJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0CiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dApAQCAtMTMzNyw3ICsxMzcwLDcgQEAKIAkJZmk7IFwKIAlmaQogCSQoSU5TVEFMTF9EQVRBKSBNb2R1bGVzL2NvbmZpZy5jICQoREVTVERJUikkKExJQlBMKS9jb25maWcuYwotCSQoSU5TVEFMTF9EQVRBKSBNb2R1bGVzL3B5dGhvbi5vICQoREVTVERJUikkKExJQlBMKS9weXRob24ubworCSQoSU5TVEFMTF9EQVRBKSBQcm9ncmFtcy9weXRob24ubyAkKERFU1RESVIpJChMSUJQTCkvcHl0aG9uLm8KIAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL01vZHVsZXMvY29uZmlnLmMuaW4gJChERVNURElSKSQoTElCUEwpL2NvbmZpZy5jLmluCiAJJChJTlNUQUxMX0RBVEEpIE1ha2VmaWxlICQoREVTVERJUikkKExJQlBMKS9NYWtlZmlsZQogCSQoSU5TVEFMTF9EQVRBKSBNb2R1bGVzL1NldHVwICQoREVTVERJUikkKExJQlBMKS9TZXR1cApAQCAtMTM0OCwxMCArMTM4MSwxMCBAQAogCSQoSU5TVEFMTF9TQ1JJUFQpICQoc3JjZGlyKS9pbnN0YWxsLXNoICQoREVTVERJUikkKExJQlBMKS9pbnN0YWxsLXNoCiAJJChJTlNUQUxMX1NDUklQVCkgcHl0aG9uLWNvbmZpZy5weSAkKERFU1RESVIpJChMSUJQTCkvcHl0aG9uLWNvbmZpZy5weQogCSQoSU5TVEFMTF9TQ1JJUFQpIHB5dGhvbi1jb25maWcgJChERVNURElSKSQoQklORElSKS9weXRob24kKExEVkVSU0lPTiktY29uZmlnCi0JQGlmIFsgLXMgTW9kdWxlcy9weXRob24uZXhwIC1hIFwKKwlAaWYgWyAtcyBQcm9ncmFtcy9weXRob24uZXhwIC1hIFwKIAkJImBlY2hvICQoTUFDSERFUCkgfCBzZWQgJ3MvXlwoLi4uXCkuKi9cMS8nYCIgPSAiYWl4IiBdOyB0aGVuIFwKIAkJZWNobzsgZWNobyAiSW5zdGFsbGluZyBzdXBwb3J0IGZpbGVzIGZvciBidWlsZGluZyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMgb24gQUlYOiI7IFwKLQkJJChJTlNUQUxMX0RBVEEpIE1vZHVsZXMvcHl0aG9uLmV4cAkJXAorCQkkKElOU1RBTExfREFUQSkgUHJvZ3JhbXMvcHl0aG9uLmV4cAkJXAogCQkJCSQoREVTVERJUikkKExJQlBMKS9weXRob24uZXhwOwkJXAogCQllY2hvOyBlY2hvICIkKExJQlBMKS9weXRob24uZXhwIjsJCVwKIAkJJChJTlNUQUxMX1NDUklQVCkgJChzcmNkaXIpL01vZHVsZXMvbWFrZXhwX2FpeAlcCkBAIC0xNTM0LDcgKzE1NjcsNyBAQAogCWZpbmQgYnVpbGQgLW5hbWUgJyoucHlbY29dJyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQogCS1ybSAtZiBweWJ1aWxkZGlyLnR4dAogCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCi0JLXJtIC1mIE1vZHVsZXMvX3Rlc3RlbWJlZCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCisJLXJtIC1mIFByb2dyYW1zL190ZXN0ZW1iZWQgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKQEAgLTE1NTgsNyArMTU5MSw3IEBACiAJZG9uZQogCS1ybSAtZiBjb3JlIE1ha2VmaWxlIE1ha2VmaWxlLnByZSBjb25maWcuc3RhdHVzIFwKIAkJTW9kdWxlcy9TZXR1cCBNb2R1bGVzL1NldHVwLmxvY2FsIE1vZHVsZXMvU2V0dXAuY29uZmlnIFwKLQkJTW9kdWxlcy9sZF9zb19haXggTW9kdWxlcy9weXRob24uZXhwIE1pc2MvcHl0aG9uLnBjCisJCU1vZHVsZXMvbGRfc29fYWl4IFByb2dyYW1zL3B5dGhvbi5leHAgTWlzYy9weXRob24ucGMKIAktcm0gLWYgcHl0aG9uKi1nZGIucHkKIAlmaW5kICQoc3JjZGlyKS9bYS16QS1aXSogJygnIC1uYW1lICcqLmZkYycgLW8gLW5hbWUgJyp+JyBcCiAJCQkJICAgICAtbyAtbmFtZSAnW0AsI10qJyAtbyAtbmFtZSAnKi5vbGQnIFwKQEAgLTE2MDUsNyArMTYzOCw3IEBACiAJCS1vIC1wcmludAogCiAjIFBlcmZvcm0gc29tZSB2ZXJpZmljYXRpb24gY2hlY2tzIG9uIGFueSBtb2RpZmllZCBmaWxlcy4KLXBhdGNoY2hlY2s6CitwYXRjaGNoZWNrOiBhbGwKIAkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CiAKICMgRGVwZW5kZW5jaWVzCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggNDE4ODhiNy4uMzcwNGU2NSAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtNDYsNiArNDYsNyBAQAogRXJpayBBbmRlcnPDqW4KIE9saXZlciBBbmRyaWNoCiBSb3NzIEFuZHJ1cworRmFicmljZSBBbmVjaGUKIEp1YW5jYXJsbyBBw7FlegogQ2hyaXMgQW5nZWxpY28KIErDqXLDqW15IEFuZ2VyCkBAIC03MSw2ICs3Miw3IEBACiBTdGlnIEJha2tlbgogR3JlZyBCYWxsCiBMdWlnaSBCYWxsYWJpbworVGhvbWFzIEJhbGxpbmdlcgogSmVmZiBCYWxvZ2gKIE1hbnVlbCBCYWxzZXJhCiBNYXR0IEJhbmR5CkBAIC04OSw2ICs5MSw3IEBACiBDZXNhciBFZHVhcmRvIEJhcnJvcwogRGVzIEJhcnJ5CiBVbGYgQmFydGVsdAorQ2FtcGJlbGwgQmFydG9uCiBEb24gQmFzaGZvcmQKIFBpb3IgQmFzdGlkYQogTmljayBCYXN0aW4KQEAgLTEwMSw2ICsxMDQsNyBAQAogRG9uYWxkIEJlYXVkcnkKIERhdmlkIEJlYXpsZXkKIEpvaG4gQmVjaworSW5nb2xmIEJlY2tlcgogTmVhbCBCZWNrZXIKIFJvYmluIEJlY2tlcgogVG9yc3RlbiBCZWNrZXIKQEAgLTE1Miw2ICsxNTYsNyBAQAogR2F3YWluIEJvbHRvbgogRm9yZXN0IEJvbmQKIEdyZWdvcnkgQm9uZAorTcOpZMOpcmljIEJvcXVpZW4KIE1hdGlhcyBCb3JkZXNlCiBKb25hcyBCb3Jnc3Ryw7ZtCiBKdXJqZW4gQm9zCkBAIC0yMzEsMTAgKzIzNiwxMiBAQAogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKK0dhdmluIENoYXBwZWxsCiBHb2RlZnJvaWQgQ2hhcGVsbGUKIEJyYWQgQ2hhcG1hbgogR3JlZyBDaGFwbWFuCiBNaXRjaCBDaGFwbWFuCitNYXR0IENoYXB1dAogWW9nZXNoIENoYXVkaGFyaQogRGF2aWQgQ2hhdW0KIE5pY29sYXMgQ2hhdXZhdApAQCAtNDc1LDYgKzQ4Miw3IEBACiBYYXZpZXIgZGUgR2F5ZQogSGFycnkgSGVucnkgR2ViZWwKIE1hcml1cyBHZWRtaW5hcworSmFuLVBoaWxpcCBHZWhyY2tlCiBUaG9tYXMgR2VsbGVrdW0KIEdhYnJpZWwgR2VuZWxsaW5hCiBDaHJpc3RvcyBHZW9yZ2lvdQpAQCAtNDg3LDYgKzQ5NSw3IEBACiBNaWNoYWVsIEdpbGZpeAogSnVsaWFuIEdpbmRpCiBZYW5uaWNrIEdpbmdyYXMKK05laWwgR2lyZGhhcgogTWF0dCBHaXVjYQogV2ltIEdsZW5uCiBNaWNoYWVsIEdvZGVyYmF1ZXIKQEAgLTUwMSw2ICs1MTAsNyBAQAogRGF2aWQgR29vZGdlcgogSGFucyBkZSBHcmFhZmYKIFRpbSBHcmFoYW0KK0tpbSBHcsOkc21hbgogTmF0aGFuaWVsIEdyYXkKIEVkZHkgRGUgR3JlZWYKIEdyYW50IEdyaWZmaW4KQEAgLTU3NSw2ICs1ODUsNyBAQAogV291dGVyIHZhbiBIZXlzdAogS2Vsc2V5IEhpZ2h0b3dlcgogSmFzb24gSGlsZGVicmFuZAorQWFyb24gSGlsbAogUmljaGllIEhpbmRsZQogS29ucmFkIEhpbnNlbgogRGF2aWQgSG9ibGV5CkBAIC02MTEsNiArNjIyLDcgQEAKIEtlbiBIb3dhcmQKIEJyYWQgSG93ZXMKIE1pa2UgSG95CitCZW4gSG95dAogQ2hpdS1Ic2lhbmcgSHN1CiBDaGloLUhhbyBIdWFuZwogQ2hyaXN0aWFuIEh1ZG9uCkBAIC02MzEsNiArNjQzLDcgQEAKIEFhcm9uIElsZXMKIExhcnMgSW1taXNjaAogQm9iYnkgSW1wb2xsb25pYQorTmFva2kgSW5hZGEKIE1lYWRvciBJbmdlCiBQZXRlciBJbmdlYnJldHNvbgogVG9ueSBJbmdyYWxkaQpAQCAtNjUzLDEzICs2NjYsMTYgQEAKIFRob21hcyBKYXJvc2NoCiBKdWhhbmEgSmF1aGlhaW5lbgogUmFqYWdvcGFsYXNhcm1hIEpheWFrcmlzaG5hbgorRGV2aW4gSmVhbnBpZXJyZQogWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1lawogSnVsaWVuIEplaGFubmV0CitNdWhhbW1hZCBKZWhhbnplYgogRHJldyBKZW5raW5zCiBGbGVtbWluZyBLasOmciBKZW5zZW4KIFBoaWxpcCBILiBKZW5zZW4KIFBoaWxpcCBKZW52ZXkKIE11blNpYyBKZW9uZworSm9lIEpldm5pawogQ2hyaXMgSmVyZG9uZWsKIEppbSBKZXdldHQKIFBlZHJvIERpYXogSmltZW5legpAQCAtNjc0LDYgKzY5MCw3IEBACiBOaWNvbGFzIEpvbHkKIEJyaWFuIEsuIEpvbmVzCiBFdmFuIEpvbmVzCitHbGVubiBKb25lcwogSmVyZW15IEpvbmVzCiBSaWNoYXJkIEpvbmVzCiBJcm1lbiBkZSBKb25nCkBAIC02OTYsMTIgKzcxMywxNSBAQAogSmFuIEthbmlzCiBSYWZlIEthcGxhbgogSmFjb2IgS2FwbGFuLU1vc3MKK0FsbGlzb24gS2FwdHVyCiBKYW5uZSBLYXJpbGEKIFBlciDDmHl2aW5kIEthcmxzZW4KIEFudG9uIEthc3lhbm92CiBMb3UgS2F0ZXMKIE1ha290byBLYXRvCiBIaXJvYWtpIEthd2FpCitEbWl0cnkgS2F6YWtvdgorQnJpYW4gS2Vhcm5zCiBTZWJhc3RpZW4gS2VpbQogUnlhbiBLZWxseQogRGFuIEtlbmlnc2JlcmcKQEAgLTcxMiwxMSArNzMyLDEzIEBACiBMYXdyZW5jZSBLZXN0ZWxvb3QKIFZpdmVrIEtoZXJhCiBEaGlydSBLaG9saWEKK0Frc2hpdCBLaHVyYW5hCiBNYWRzIEtpaWxlcmljaAogSmFzb24gS2lsbGVuCiBKYW4gS2ltCiBUYWVrIEpvbyBLaW0KIFNhbSBLaW1icmVsCitKYW1lcyBLaW5nCiBXLiBUcmV2b3IgS2luZwogUGF1bCBLaXBwZXMKIFN0ZXZlIEtpcnNjaApAQCAtNzY1LDYgKzc4Nyw3IEBACiBEYXZlIEt1aGxtYW4KIEpvbiBLdWhuCiBUb3NoaW8gS3VyYXRvbWkKK0lsaWEgS3VyZW5rb3YKIFZsYWRpbWlyIEt1c2huaXIKIEVybm8gS3V1c2VsYQogUm9zcyBMYWdlcndhbGwKQEAgLTc4OCw2ICs4MTEsNyBAQAogU2ltb24gTGF3CiBKdWxpYSBMYXdhbGwKIENocmlzIExhd3JlbmNlCitNYXJrIExhd3JlbmNlCiBCcmlhbiBMZWFpcgogTWF0aGlldSBMZWR1Yy1IYW1lbAogQW1hbmRpbmUgTGVlCkBAIC04MjcsNiArODUxLDcgQEAKIFNoYXduIExpZ29ja2kKIE1hcnRpbiBMaWdyCiBHZWRpbWluYXMgTGlrdGFyYXMKK1ZpdG9yIGRlIExpbWEKIEdyYW50IExpbWJlcmcKIENocmlzdG9waGVyIExpbmRibGFkCiBVbGYgQS4gTGluZGdyZW4KQEAgLTg0NCw2ICs4NjksNyBAQAogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQogUGV0ZXIgTG92ZXR0CitDaGFsbWVyIExvd2UKIEphc29uIExvd2UKIFRvbnkgTG93bmRzCiBSYXkgTG95emFnYQpAQCAtODk5LDkgKzkyNSwxMSBAQAogQXJuYXVkIE1hemluCiBQYW0gTWNBJ051bHR5CiBNYXR0IE1jQ2x1cmUKK0phY2sgTWNDcmFja2VuCiBSZWJlY2NhIE1jQ3JlYXJ5CiBLaXJrIE1jRG9uYWxkCiBDaHJpcyBNY0Rvbm91Z2gKK01pY2hhZWwgTWNGYWRkZW4KIEdyZWcgTWNGYXJsYW5lCiBBbGFuIE1jSW50eXJlCiBKZXNzaWNhIE1jS2VsbGFyCkBAIC0xMDA1LDYgKzEwMzMsNyBAQAogSm9obiBPJ0Nvbm5vcgogS2V2aW4gTydDb25ub3IKIFRpbSBPJ01hbGxleQorRGFuIE8nUmVpbGx5CiBab29rbyBPJ1doaWVsYWNyb254CiBBYXJvbiBPYWtsZXkKIEphbWVzIE9ha2xleQpAQCAtMTA0NSw2ICsxMDc0LDcgQEAKIEFsZXhhbmRyZSBQYXJlbnRlYXUKIERhbiBQYXJpc2llbgogV2lsbGlhbSBQYXJrCitDbGF1ZGUgUGFyb3oKIEhlaWtraSBQYXJ0YW5lbgogSGFycmkgUGFzYW5lbgogR2HDq2wgUGFzZ3JpbWF1ZApAQCAtMTEyMSw2ICsxMTUxLDggQEAKIFJhbSBSYWNodW0KIErDqXLDtG1lIFJhZGl4CiBCdXJ0b24gUmFkb25zCitBYmhpbGFzaCBSYWoKK1Nob3J5YSBSYWoKIEplZmYgUmFtbmFuaQogQnJvZGllIFJhbwogU2Vua28gUmFzaWMKQEAgLTExNjMsNiArMTE5NSw3IEBACiBEYXZpZGUgUml6em8KIEFudGhvbnkgUm9hY2gKIENhcmwgUm9iYmVuCitCZW4gUm9iZXJ0cwogTWFyayBSb2JlcnRzCiBBbmR5IFJvYmluc29uCiBKaW0gUm9iaW5zb24KQEAgLTExNzksNiArMTIxMiw3IEBACiBUaW1vdGh5IFJvc2NvZQogRXJpayBSb3NlCiBNYXJrIFJvc2VtYW4KK0pvc2ggUm9zZW5iZXJnCiBKaW0gUm9za2luZAogQnJpYW4gUm9zbmVyCiBHdWlkbyB2YW4gUm9zc3VtCkBAIC0xMTk3LDYgKzEyMzEsNyBAQAogQXVkdW4gUy4gUnVuZGUKIEVyYW4gUnVuZHN0ZWluCiBSYXVsaSBSdW9ob25lbgorTGF1cmEgUnVwcHJlY2h0CiBKZWZmIFJ1c2gKIFNhbSBSdXNoaW5nCiBNYXJrIFJ1c3NlbGwKQEAgLTEyMTAsNiArMTI0NSw3IEBACiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CiBHZW9yZ2UgU2Fra2lzCitWaWN0b3IgU2FsZ2FkbwogUmljaCBTYWx6CiBLZXZpbiBTYW1ib3JuCiBBZHJpYW4gU2FtcHNvbgpAQCAtMTMxMyw2ICsxMzQ5LDcgQEAKIEV2Z2VueSBTb2xvZ3Vib3YKIENvZHkgU29tZXJ2aWxsZQogRWRvYXJkbyBTcGFkb2xpbmkKK0dlb2ZmcmV5IFNwZWFyCiBDbGF5IFNwZW5jZQogU3RlZmFuIFNwZXJsaW5nCiBOaWNob2xhcyBTcGllcwpAQCAtMTM1OCw2ICsxMzk1LDcgQEAKIFDDqXRlciBTemFiw7MKIEpvaG4gU3pha21laXN0ZXIKIEFtaXIgU3pla2VseQorTWFjaWVqIFN6dWxpawogQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMKIEhpZGVha2kgVGFrYWhhc2hpCiBJbmRyYSBUYWxpcApAQCAtMTM3MCw2ICsxNDA4LDcgQEAKIEFteSBUYXlsb3IKIE1vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKK0d1c3Rhdm8gVGVtcGxlCiBNaWtoYWlsIFRlcmVraG92CiBWaWN0b3IgVGVycsOzbgogUmljaGFyZCBNLiBUZXcKQEAgLTE0MDMsNiArMTQ0Miw3IEBACiBOYXRoYW4gVHJhcHV6emFubwogTGF1cmVuY2UgVHJhdHQKIEFsYmVydG8gVHJldmlubworTWF5YW5rIFRyaXBhdGhpCiBNYXR0aGlhcyBUcm9mZmFlcwogVG9tIFRyb21leQogSm9obiBUcm9tcApAQCAtMTQyNSw2ICsxNDY1LDcgQEAKIERhbmllbCBVcmJhbgogTWljaGFlbCBVcm1hbgogSGVjdG9yIFVydHViaWEKK0x1a2FzIFZhY2VrCiBWaWxsZSBWYWluaW8KIEFuZGkgVmFqZGEKIENhc2UgVmFuIEhvcnNlbgpAQCAtMTQ0MCw2ICsxNDgxLDcgQEAKIEphYXAgVmVybWV1bGVuCiBOaWtpdGEgVmV0b3Noa2luCiBBbCBWZXp6YQorUGV0ciBWaWN0b3JpbgogSmFjcXVlcyBBLiBWaWRyaW5lCiBKb2huIFZpZWdhCiBEaW5vIFZpZWhsYW5kCkBAIC0xNDQ5LDEwICsxNDkxLDEzIEBACiBQYXVsaSBWaXJ0YW5lbgogRnJhbmsgVmlzc2VyCiBKb2hhbm5lcyBWb2dlbAorTWljaGFlbCBWb2d0CitSYWR1IFZvaWNpbGFzCiBBbGV4IFZvbGtvdgogTWFydGlqbiBWcmllcwogU2pvZXJkIGRlIFZyaWVzCiBHdWlkbyBWcmFua2VuCitEYW5pZWwgV2FnbmVyLUhhbGwKIE5pa2kgVy4gV2FpYmVsCiBXb2p0ZWsgV2FsY3phawogQ2hhcmxlcyBXYWxkbWFuCkBAIC0xNDcxLDYgKzE1MTYsNyBAQAogRGF2aWQgV2F0c29uCiBBYXJvbiBXYXR0ZXJzCiBIZW5yaWsgV2ViZXIKK0xlb24gV2ViZXIKIENvcnJhbiBXZWJzdGVyCiBHbHluIFdlYnN0ZXIKIFBoaWwgV2Vic3RlcgpAQCAtMTUwMCw2ICsxNTQ2LDcgQEAKIENhcm9sIFdpbGxpbmcKIFN0ZXZlbiBXaWxsaXMKIEZyYW5rIFdpbGxpc29uCitEYXZpZCBXaWxzb24KIEdlb2ZmIFdpbHNvbgogR3JlZyBWLiBXaWxzb24KIEogRGVyZWsgV2lsc29uCkBAIC0xNTI1LDExICsxNTcyLDEzIEBACiBEYXJyZW4gV29ycmFsbAogVGhvbWFzIFdvdXRlcnMKIERhbmllbCBXb3puaWFrCitXZWkgV3UKIEhlaWtvIFd1bmRyYW0KIERvdWcgV3lhdHQKIFJvYmVydCBYaWFvCiBGbG9yZW50IFhpY2x1bmEKIEhpcm9rYXp1IFlhbWFtb3RvCitBcm5vbiBZYWFyaQogS2EtUGluZyBZZWUKIEphc29uIFllbwogRXVuZ0p1biBZaQpAQCAtMTU1Niw2ICsxNjA1LDcgQEAKIEdlbm5hZGl5IFpsb2JpbgogRG91ZyBab25na2VyCiBQZXRlciDDhXN0cmFuZAorSWduYWNpbyBSb3NzaQogTGF1cmVudCBEZSBCdXlzdAogTmljb2xhIFBhbHVtYm8KIGV2aWx6ZXJvCmRpZmYgLS1naXQgYS9NaXNjL0hJU1RPUlkgYi9NaXNjL0hJU1RPUlkKaW5kZXggZjQ4Mzc1OS4uMDQ2MmY0ZSAxMDA2NDQKLS0tIGEvTWlzYy9ISVNUT1JZCisrKyBiL01pc2MvSElTVE9SWQpAQCAtMTgsMTMgKzE4LDEzIEBACiAKIC0gSXNzdWUgIzE2MDQ2OiBGaXggbG9hZGluZyBzb3VyY2VsZXNzIGxlZ2FjeSAucHlvIGZpbGVzLgogCi0tIElzc3VlICMxNjA2MDogRml4IHJlZmNvdW50aW5nIGJ1ZyB3aGVuIF9fdHJ1bmNfXyByZXR1cm5zIGFuIG9iamVjdAotICB3aG9zZSBfX2ludF9fIGdpdmVzIGEgbm9uLWludGVnZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBgX190cnVuY19fKClgIHJldHVybnMgYW4gb2JqZWN0IHdob3NlCisgIGBfX2ludF9fKClgIGdpdmVzIGEgbm9uLWludGVnZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCiBFeHRlbnNpb24gTW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTYwMTI6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcHlleHBhdC4gVGhlIHBhcnNlcidzIFVzZUZvcmVpZ25EVEQoKQorLSBJc3N1ZSAjMTYwMTI6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcHlleHBhdC4gVGhlIHBhcnNlcidzIGBVc2VGb3JlaWduRFREKClgCiAgIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCiAKIApAQCAtMzYsMjYgKzM2LDI2IEBACiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCgpLgorLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKWAuCiAKIC0gSXNzdWUgIzE1OTI2OiBGaXggY3Jhc2ggYWZ0ZXIgbXVsdGlwbGUgcmVpbml0aWFsaXphdGlvbnMgb2YgdGhlIGludGVycHJldGVyLgogCiAtIElzc3VlICMxNTg5NTogRml4IEZJTEUgcG9pbnRlciBsZWFrIGluIG9uZSBlcnJvciBicmFuY2ggb2YKLSAgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoKSB3aGVuIGZpbGVuYW1lIHBvaW50cyB0byBhIHB5Yy9weW8gZmlsZSwgY2xvc2VpdAotICBpcyBmYWxzZSBhbiBhbmQgc2V0X21haW5fbG9hZGVyKCkgZmFpbHMuCisgIGBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFncygpYCB3aGVuIGZpbGVuYW1lIHBvaW50cyB0byBhIHB5Yy9weW8gZmlsZSwgY2xvc2VpdCBpcworICBmYWxzZSBhbiBhbmQgc2V0X21haW5fbG9hZGVyKCkgZmFpbHMuCiAKIC0gRml4ZXMgZm9yIGEgZmV3IGNyYXNoIGFuZCBtZW1vcnkgbGVhayByZWdyZXNzaW9ucyBmb3VuZCBieSBDb3Zlcml0eS4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICMxNTg4MjogQ2hhbmdlIF9kZWNpbWFsIHRvIGFjY2VwdCBhbnkgY29lZmZpY2llbnQgdHVwbGUgd2hlbgotICBjb25zdHJ1Y3RpbmcgaW5maW5pdGllcy4gVGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQotICB3aXRoIGRlY2ltYWwucHk6IEluZmluaXR5IGNvZWZmaWNpZW50cyBhcmUgdW5kZWZpbmVkIGluIF9kZWNpbWFsCi0gIChpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHNwZWNpZmljYXRpb24pLgorLSBJc3N1ZSAjMTU4ODI6IENoYW5nZSBgX2RlY2ltYWxgIHRvIGFjY2VwdCBhbnkgY29lZmZpY2llbnQgdHVwbGUgd2hlbgorICBjb25zdHJ1Y3RpbmcgaW5maW5pdGllcy4gVGhpcyBpcyBkb25lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoCisgIGRlY2ltYWwucHk6IEluZmluaXR5IGNvZWZmaWNpZW50cyBhcmUgdW5kZWZpbmVkIGluIF9kZWNpbWFsIChpbiBhY2NvcmRhbmNlCisgIHdpdGggdGhlIHNwZWNpZmljYXRpb24pLgogCi0tIElzc3VlICMxNTkyNTogRml4IGEgcmVncmVzc2lvbiBpbiBlbWFpbC51dGlsIHdoZXJlIHRoZSBwYXJzZWRhdGUoKSBhbmQKLSAgcGFyc2VkYXRlX3R6KCkgZnVuY3Rpb25zIGRpZCBub3QgcmV0dXJuIE5vbmUgYW55bW9yZSB3aGVuIHRoZSBhcmd1bWVudCBjb3VsZAorLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGVtYWlsLnV0aWxgIHdoZXJlIHRoZSBgcGFyc2VkYXRlKClgIGFuZAorICBgcGFyc2VkYXRlX3R6KClgIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKICAgbm90IGJlIHBhcnNlZC4KIAogRXh0ZW5zaW9uIE1vZHVsZXMKQEAgLTY3LDcgKzY3LDcgQEAKIC0gSXNzdWUgIzE1OTc3OiBGaXggbWVtb3J5IGxlYWsgaW4gTW9kdWxlcy9fc3NsLmMgd2hlbiB0aGUgZnVuY3Rpb24KICAgX3NldF9ucG5fcHJvdG9jb2xzKCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0aGFua3MgdG8gRGFuaWVsIFNvbW1lcm1hbm4uCiAKLS0gSXNzdWUgIzE1OTY5OiBmYXVsdGhhbmRsZXIgbW9kdWxlOiByZW5hbWUgZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KKy0gSXNzdWUgIzE1OTY5OiBgZmF1bHRoYW5kbGVyYCBtb2R1bGU6IHJlbmFtZSBkdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bwogICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGFuZCBjYW5jZWxfZHVtcF90cmFjZWJhY2tzX2xhdGVyKCkgdG8KICAgY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkuCiAKQEAgLTgzLDM1ICs4MywzNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0KIAogLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCi0gIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yCi0gIGNoYWlucyByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lcgotICB0eXBlcy4KKyAgc3BvcmFkaWMgY3Jhc2hlcyBpbiBtdWx0aS10aHJlYWQgcHJvZ3JhbXMgd2hlbiBzZXZlcmFsIGxvbmcgZGVhbGxvY2F0b3IgY2hhaW5zCisgIHJhbiBjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyIHR5cGVzLgogCi0tIElzc3VlICMxNTc4NDogTW9kaWZ5IE9TRXJyb3IuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuCi0gIGVycm5vIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KKy0gSXNzdWUgIzE1Nzg0OiBNb2RpZnkgYE9TRXJyb3JgLl9fc3RyX18oKSB0byBiZXR0ZXIgZGlzdGluZ3Vpc2ggYmV0d2VlbiBlcnJubworICBlcnJvciBudW1iZXJzIGFuZCBXaW5kb3dzIGVycm9yIG51bWJlcnMuCiAKIC0gSXNzdWUgIzE1NzgxOiBGaXggdHdvIHNtYWxsIHJhY2UgY29uZGl0aW9ucyBpbiBpbXBvcnQncyBtb2R1bGUgbG9ja2luZy4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICMxNTg0NzogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSwgd2hpY2ggZGlkIG5vdCBhY2NlcHQgdHVwbGVzCi0gIGFzIGFyZ3VtZW50IGxpc3RzIGFueW1vcmUuCistIElzc3VlICMxNzE1ODogQWRkICdzeW1ib2xzJyB0byBoZWxwKCkgd2VsY29tZSBtZXNzYWdlOyBjbGFyaWZ5CisgICdtb2R1bGVzIHNwYW0nIG1lc3NhZ2VzLgogCi0tIElzc3VlICMxNTgyODogUmVzdG9yZSBzdXBwb3J0IGZvciBDIGV4dGVuc2lvbnMgaW4gaW1wLmxvYWRfbW9kdWxlKCkuCistIElzc3VlICMxNTg0NzogRml4IGEgcmVncmVzc2lvbiBpbiBhcmdwYXJzZSwgd2hpY2ggZGlkIG5vdCBhY2NlcHQgdHVwbGVzIGFzCisgIGFyZ3VtZW50IGxpc3RzIGFueW1vcmUuCiAKLS0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gL2Rldi91cmFuZG9tIGNhbm5vdAotICBiZSBvcGVuZWQuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gY2F1c2VkIGJ5IHRoZSBoYXNoIHJhbmRvbWl6YXRpb24gcGF0Y2guCistIElzc3VlICMxNTgyODogUmVzdG9yZSBzdXBwb3J0IGZvciBDIGV4dGVuc2lvbnMgaW4gYGltcC5sb2FkX21vZHVsZSgpYC4KIAotLSBJc3N1ZSAjMTA2NTA6IERlcHJlY2F0ZSB0aGUgd2F0Y2hleHAgcGFyYW1ldGVyIG9mIHRoZSBEZWNpbWFsLnF1YW50aXplKCkKKy0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gYGAvZGV2L3VyYW5kb21gYCBjYW5ub3QgYmUKKyAgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorCistIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIGBEZWNpbWFsLnF1YW50aXplKClgCiAgIG1ldGhvZC4KIAotLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSB3aW5kb3cuZ2V0X3djaCgpIEFQSSBvZiB0aGUgY3Vyc2VzIG1vZHVsZTogcmV0dXJuCi0gIGEgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIGFuZCBhbiBpbnRlZ2VyIGZvciBzcGVjaWFsIGtleXMsIGluc3RlYWQgb2YKLSAgYWx3YXlzIHJldHVybmluZyBhbiBpbnRlZ2VyLiBTbyBpdCBpcyBub3cgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggc3BlY2lhbAotICBrZXlzIGxpa2Uga2V5cGFkIGtleXMuCistIElzc3VlICMxNTc4NTogTW9kaWZ5IGB3aW5kb3cuZ2V0X3djaCgpYCBBUEkgb2YgdGhlIGN1cnNlcyBtb2R1bGU6IHJldHVybiBhCisgIGNoYXJhY3RlciBmb3IgbW9zdCBrZXlzLCBhbmQgYW4gaW50ZWdlciBmb3Igc3BlY2lhbCBrZXlzLCBpbnN0ZWFkIG9mIGFsd2F5cworICByZXR1cm5pbmcgYW4gaW50ZWdlci4gU28gaXQgaXMgbm93IHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIHNwZWNpYWwga2V5cyBsaWtlCisgIGtleXBhZCBrZXlzLgogCi0tIElzc3VlICMxNDIyMzogRml4IHdpbmRvdy5hZGRjaCgpIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKKy0gSXNzdWUgIzE0MjIzOiBGaXggYHdpbmRvdy5hZGRjaCgpYCBvZiB0aGUgY3Vyc2VzIG1vZHVsZSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXJzCiAgIGxpa2UgY3Vyc2VzLkFDU19ITElORTogdGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChpbnQpIGFuZCBhZGRjaChieXRlcykgaXMgbm93CiAgIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZGNoKCkvbXZ3YWRkY2goKSAoYXMgaXQgd2FzIGRvbmUgaW4gUHl0aG9uIDMuMiksCiAgIGluc3RlYWQgb2Ygd2FkZF93Y2goKS9tdndhZGRfd2NoKCkuIFRoZSBQeXRob24gZnVuY3Rpb24gYWRkY2goc3RyKSBpcyBzdGlsbApAQCAtMTI3LDEwICsxMjksMTAgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkCi0gIHRoZSBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZQotICBpdGVtIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleQotICB3aWxsIGJlIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMQorLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkIHRoZQorICBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZSBpdGVtCisgIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleSB3aWxsIGJlCisgIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMS4KIAogCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPwpAQCAtMTQ0LDEzMSArMTQ2LDEyMyBAQAogLSBJc3N1ZSAjMTU1NzM6IG1lbW9yeXZpZXcgY29tcGFyaXNvbnMgYXJlIG5vdyBwZXJmb3JtZWQgYnkgdmFsdWUgd2l0aCBmdWxsCiAgIHN1cHBvcnQgZm9yIGFueSB2YWxpZCBzdHJ1Y3QgbW9kdWxlIGZvcm1hdCBkZWZpbml0aW9uLgogCi0tIElzc3VlICMxNTMxNjogV2hlbiBhbiBpdGVtIGluIHRoZSBmcm9tbGlzdCBmb3IgX19pbXBvcnRfXyBkb2Vzbid0IGV4aXN0LAorLSBJc3N1ZSAjMTUzMTY6IFdoZW4gYW4gaXRlbSBpbiB0aGUgZnJvbWxpc3QgZm9yIGBfX2ltcG9ydF9fKClgIGRvZXNuJ3QgZXhpc3QsCiAgIGRvbid0IHJhaXNlIGFuIGVycm9yLCBidXQgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBhcyBwYXJ0IG9mIGFuIGltcG9ydCBkbwogICBsZXQgdGhhdCBwcm9wYWdhdGUuCiAKLS0gSXNzdWUgIzE1Nzc4OiBlbnN1cmUgdGhhdCBzdHIoSW1wb3J0RXJyb3IobXNnKSkgcmV0dXJucyBhIHN0cgotICBldmVuIHdoZW4gbXNnIGlzbid0IGEgc3RyLgorLSBJc3N1ZSAjMTU3Nzg6IEVuc3VyZSB0aGF0IGBgc3RyKEltcG9ydEVycm9yKG1zZykpYGAgcmV0dXJucyBhIHN0ciBldmVuIHdoZW4KKyAgbXNnIGlzbid0IGEgc3RyLgogCi0tIElzc3VlICMyMDUxOiBTb3VyY2UgZmlsZSBwZXJtaXNzaW9uIGJpdHMgYXJlIG9uY2UgYWdhaW4gY29ycmVjdGx5Ci0gIGNvcGllZCB0byB0aGUgY2FjaGVkIGJ5dGVjb2RlIGZpbGUuIChUaGUgbWlncmF0aW9uIHRvIGltcG9ydGxpYgotICByZWludHJvZHVjZWQgdGhpcyBwcm9ibGVtIGJlY2F1c2UgdGhlc2Ugd2FzIG5vIHJlZ3Jlc3Npb24gdGVzdC4gQSB0ZXN0Ci0gIGhhcyBiZWVuIGFkZGVkIGFzIHBhcnQgb2YgdGhpcyBwYXRjaCkKKy0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkgY29waWVkIHRvCisgIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliIHJlaW50cm9kdWNlZCB0aGlzCisgIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZgorICB0aGlzIHBhdGNoKQogCi0tIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gUFlUSE9ORVhFQ1VUQUJMRSBpcyBzZXQgb24gTWFjIE9TIFguCistIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gYGBQWVRIT05FWEVDVVRBQkxFYGAgaXMgc2V0IG9uIE1hYyBPUyBYLgogCi0tIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLgotICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCistIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLiAgUGF0Y2ggYnkKKyAgUm9iaW4gU2NocmVpYmVyLgogCi0tIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgUHlPYmplY3RfSXNUcnVlKCkgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKKy0gSXNzdWUgIzE1NjA0OiBVcGRhdGUgdXNlcyBvZiBgUHlPYmplY3RfSXNUcnVlKClgIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCiAgIGVycm9ycyBjb3JyZWN0bHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNDg0NjogaW1wb3J0bGliLkZpbGVGaW5kZXIgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlCi0gIGRpcmVjdG9yeSBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQKKy0gSXNzdWUgIzE0ODQ2OiBgaW1wb3J0bGliLkZpbGVGaW5kZXJgIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBkaXJlY3RvcnkKKyAgYmVpbmcgc2VhcmNoZWQgaXMgcmVtb3ZlZCBhZnRlciBhIHByZXZpb3VzIGltcG9ydCBhdHRlbXB0LgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMKLSAgY29tcGlsZWQgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyCistIElzc3VlICMxMzM3MDogRW5zdXJlIHRoYXQgY3R5cGVzIHdvcmtzIG9uIE1hYyBPUyBYIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkCisgIHVzaW5nIHRoZSBjbGFuZyBjb21waWxlci4KIAotLSBJc3N1ZSAjMTMwNzI6IFRoZSBhcnJheSBtb2R1bGUncyAndScgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kCi0gIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gNC4wLgorLSBJc3N1ZSAjMTMwNzI6IFRoZSBhcnJheSBtb2R1bGUncyAndScgZm9ybWF0IGNvZGUgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUKKyAgcmVtb3ZlZCBpbiBQeXRob24gNC4wLgogCiAtIElzc3VlICMxNTU0NDogRml4IERlY2ltYWwuX19mbG9hdF9fIHRvIHdvcmsgd2l0aCBwYXlsb2FkLWNhcnJ5aW5nIE5hTnMuCiAKLS0gSXNzdWUgIzE1MjQ5OiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgorLSBJc3N1ZSAjMTU3NzY6IEFsbG93IHB5dmVudiB0byB3b3JrIGluIGV4aXN0aW5nIGRpcmVjdG9yeSB3aXRoIC0tY2xlYW4uCisKKy0gSXNzdWUgIzE1MjQ5OiBlbWFpbCdzIEJ5dGVzR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgbWFuZ2xlcyBGcm9tIGxpbmVzICh3aGVuCiAgIHJlcXVlc3RlZCkgZXZlbiBpZiB0aGUgYm9keSBjb250YWlucyB1bmRlY29kYWJsZSBieXRlcy4KIAogLSBJc3N1ZSAjMTU3Nzc6IEZpeCBhIHJlZmxlYWsgaW4gX3Bvc2l4c3VicHJvY2Vzcy4KIAotLSBJc3N1ZSAjIzY2NTE5NDogVXBkYXRlIGVtYWlsLnV0aWxzLmxvY2FsdGltZSB0byB1c2UgZGF0ZXRpbWUuYXN0aW1lem9uZSBhbmQKKy0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBgZW1haWwudXRpbHMubG9jYWx0aW1lYCB0byB1c2UgZGF0ZXRpbWUuYXN0aW1lem9uZSBhbmQKICAgY29ycmVjdGx5IGhhbmRsZSBoaXN0b3JpYyBjaGFuZ2VzIGluIFVUQyBvZmZzZXRzLgogCiAtIElzc3VlICMxNTE5OTogRml4IEphdmFTY3JpcHQncyBkZWZhdWx0IE1JTUUgdHlwZSB0byBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LgogICBQYXRjaCBieSBCb2h1c2xhdiBLYWJyZGEuCiAKLS0gSXNzdWUgIzEyNjQzOiBjb2RlLkludGVyYWN0aXZlQ29uc29sZSBub3cgcmVzcGVjdHMgc3lzLmV4Y2VwdGhvb2sgd2hlbgotICBkaXNwbGF5aW5nIGV4Y2VwdGlvbnMgKFBhdGNoIGJ5IEFhcm9uIElsZXMpCistIElzc3VlICMxMjY0MzogYGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlYCBub3cgcmVzcGVjdHMgYHN5cy5leGNlcHRob29rYCB3aGVuCisgIGRpc3BsYXlpbmcgZXhjZXB0aW9ucy4gIFBhdGNoIGJ5IEFhcm9uIElsZXMuCiAKLS0gSXNzdWUgIzEzNTc5OiBzdHJpbmcuRm9ybWF0dGVyIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgorLSBJc3N1ZSAjMTM1Nzk6IGBzdHJpbmcuRm9ybWF0dGVyYCBub3cgdW5kZXJzdGFuZHMgdGhlICdhJyBjb252ZXJzaW9uIHNwZWNpZmllci4KIAotLSBJc3N1ZSAjMTU3OTM6IFN0YWNrIGNvcnJ1cHRpb24gaW4gc3NsLlJBTkRfZWdkKCkuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NTk1OiBGaXggc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgZm9yIGNlcnRhaW4gbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCistIElzc3VlICMxNTU5NTogRml4IGBgc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSlgYCBmb3IgY2VydGFpbgorICBsb2NhbGVzICh1dGYtMTYgYW5kIHV0Zi0zMiBmYW1pbHkpLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KIAogLSBJc3N1ZSAjMTU0Nzc6IEluIGNtYXRoIGFuZCBtYXRoIG1vZHVsZXMsIGFkZCB3b3JrYXJvdW5kIGZvciBwbGF0Zm9ybXMgd2hvc2UKICAgc3lzdGVtLXN1cHBsaWVkIGxvZzFwIGZ1bmN0aW9uIGRvZXNuJ3QgcmVzcGVjdCBzaWducyBvZiB6ZXJvcy4KIAotLSBJc3N1ZSAjMTU3MTU6IGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgd2lsbCBzaWxlbmNlIGFuIEltcG9ydEVycm9yIHdoZW4gdGhlIHVzZQotICBvZiBmcm9tbGlzdCBsZWFkcyB0byBhIGZhaWxlZCBpbXBvcnQuCistIElzc3VlICMxNTcxNTogYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgIHdpbGwgc2lsZW5jZSBhbiBJbXBvcnRFcnJvciB3aGVuIHRoZQorICB1c2Ugb2YgZnJvbWxpc3QgbGVhZHMgdG8gYSBmYWlsZWQgaW1wb3J0LgogCi0tIElzc3VlICMxNDY2OTogRml4IHBpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIG9uIE1hY09TWAotICBieSBzZW5kaW5nL3JlY2VpdmluZyBhbiBhY2tub3dsZWRnbWVudCBhZnRlciBmaWxlIGRlc2NyaXB0b3IgdHJhbnNmZXIuCi0gIFRlc3RQaWNrbGluZ0Nvbm5lY3Rpb24gaGFzIGJlZW4gcmVlbmFibGVkIGZvciBNYWNPU1guCistIElzc3VlICMxNDY2OTogRml4IHBpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIG9uIE1hYyBPUyBYIGJ5CisgIHNlbmRpbmcvcmVjZWl2aW5nIGFuIGFja25vd2xlZGdtZW50IGFmdGVyIGZpbGUgZGVzY3JpcHRvciB0cmFuc2Zlci4KKyAgVGVzdFBpY2tsaW5nQ29ubmVjdGlvbiBoYXMgYmVlbiByZWVuYWJsZWQgZm9yIE1hYyBPUyBYLgogCiAtIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCiAKLS0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZwotICBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyB3aXRob3V0IHRoZSAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIKLSAgaWRpb20uCistIElzc3VlICMxNTY0NjogUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcgYG11bHRpcHJvY2Vzc2luZ2AKKyAgb24gV2luZG93cyB3aXRob3V0IHRoZSBgYGlmIF9fbmFtZV9fID09ICdfX21haW5fXydgYCBpZGlvbS4KIAotLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lCi0gICgzLjMuMGIyIHJlZ3Jlc3Npb24pLgorSURMRQorLS0tLQogCi1DIEFQSQotLS0tLS0KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQorLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lICgzLjMuMGIyCisgIHJlZ3Jlc3Npb24pLgogCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBqc29uIG1vZHVsZSdzIHN0YW5kYXJkIGNvbXBsaWFuY2UuCistIFRvdWNoZWQgdXAgdGhlIFB5dGhvbiAyIHRvIDMgcG9ydGluZyBndWlkZS4KKworLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGBqc29uYCBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgogICBQYXRjaCBieSBDaHJpcyBSZWJlcnQuCiAKIC0gQ3JlYXRlIGEgJ0NvbmN1cnJlbnQgRXhlY3V0aW9uJyBzZWN0aW9uIGluIHRoZSBkb2NzLCBhbmQgc3BsaXQgdXAgdGhlCiAgICdPcHRpb25hbCBPcGVyYXRpbmcgU3lzdGVtIFNlcnZpY2VzJyBzZWN0aW9uIHRvIHVzZSBhIG1vcmUgdXNlci1jZW50cmljCi0gIGNsYXNzaWZpY2F0aW9uIHNjaGVtZSAoc3BsaXR0aW5nIHRoZW0gYWNyb3NzIHRoZSBuZXcgQ0Ugc2VjdGlvbiwgSVBDIGFuZAotICB0ZXh0IHByb2Nlc3NpbmcpLiBPcGVyYXRpbmcgc3lzdGVtIGxpbWl0YXRvbnMgY2FuIGJlIHJlZmxlY3RlZCB3aXRoCi0gIHRoZSBTcGhpbnggYGA6cGxhdGZvcm06YGAgdGFnLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYXMgcGFydCBvZiB0aGUgVGFibGUgb2YKLSAgQ29udGVudHMuCisgIGNsYXNzaWZpY2F0aW9uIHNjaGVtZSAoc3BsaXR0aW5nIHRoZW0gYWNyb3NzIHRoZSBuZXcgQ0Ugc2VjdGlvbiwgSVBDIGFuZCB0ZXh0CisgIHByb2Nlc3NpbmcpLiBPcGVyYXRpbmcgc3lzdGVtIGxpbWl0YXRpb25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aCB0aGUgU3BoaW54CisgIGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mIENvbnRlbnRzLgogCi0tIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uCi0gIGFuZCB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4KKy0gSXNzdWUgIzQ5NjY6IEJyaW5nIHRoZSBzZXF1ZW5jZSBkb2NzIHVwIHRvIGRhdGUgZm9yIHRoZSBQeTNrIHRyYW5zaXRpb24gYW5kCisgIHRoZSBtYW55IGxhbmd1YWdlIGVuaGFuY2VtZW50cyBzaW5jZSB0aGV5IHdlcmUgb3JpZ2luYWwgd3JpdHRlbi4KIAogLSBUaGUgInBhdGggaW1wb3J0ZXIiIG1pc25vbWVyIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggRXJpYyBTbm93J3MKLSAgbW9yZS1hd2t3YXJkLWJ1dC1hdC1sZWFzdC1ub3Qtd3Jvbmcgc3VnZ2VzdGlvbiBvZiAicGF0aCBiYXNlZCBmaW5kZXIiIGluCi0gIHRoZSBpbXBvcnQgc3lzdGVtIHJlZmVyZW5jZSBkb2NzCisgIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbiB0aGUKKyAgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcy4KIAotLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGltcG9ydGxpYi5hYmMuRmluZGVyIGFzIGRlcHJlY2F0ZWQuCistIElzc3VlICMxNTY0MDogRG9jdW1lbnQgYGltcG9ydGxpYi5hYmMuRmluZGVyYCBhcyBkZXByZWNhdGVkLgogCi0tIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5CistIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuICBQYXRjaCBieQogICBEYW5pZWwgRWxsaXMuCiAKIFRlc3RzCiAtLS0tLQogCiAtIElzc3VlICMxNTc0NzogWkZTIGFsd2F5cyByZXR1cm5zIEVPUE5PVFNVUFAgd2hlbiBhdHRlbXB0aW5nIHRvIHNldCB0aGUKLSAgVUZfSU1NVVRBQkxFIGZsYWcgKHZpYSBlaXRoZXIgY2hmbGFncyBvciBsY2hmbGFncyk7IHJlZmFjdG9yIGFmZmVjdGVkCi0gIHRlc3RzIGluIHRlc3RfcG9zaXgucHkgdG8gYWNjb3VudCBmb3IgdGhpcy4KKyAgVUZfSU1NVVRBQkxFIGZsYWcgKHZpYSBlaXRoZXIgY2hmbGFncyBvciBsY2hmbGFncyk7IHJlZmFjdG9yIGFmZmVjdGVkIHRlc3RzIGluCisgIHRlc3RfcG9zaXgucHkgdG8gYWNjb3VudCBmb3IgdGhpcy4KIAotLSBJc3N1ZSAjMTUyODU6IFJlZmFjdG9yIHRoZSBhcHByb2FjaCBmb3IgdGVzdGluZyBjb25uZWN0IHRpbWVvdXRzIHVzaW5nCi0gIHR3byBleHRlcm5hbCBob3N0cyB0aGF0IGhhdmUgYmVlbiBjb25maWd1cmVkIHNwZWNpZmljYWxseSBmb3IgdGhpcyB0eXBlCi0gIG9mIHRlc3QuCistIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcgdHdvCisgIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUgb2YgdGVzdC4KIAotLSBJc3N1ZSAjMTU3NDM6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2QgdXNhZ2UgaW4gdXJsbGliIHRlc3RzLiBQYXRjaCBieQorLSBJc3N1ZSAjMTU3NDM6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtZXRob2QgdXNhZ2UgaW4gYHVybGxpYmAgdGVzdHMuIFBhdGNoIGJ5CiAgIEplZmYgS251cHAuCiAKLS0gSXNzdWUgIzE1NjE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlJ3MgaGFuZGxpbmcgb2YgaW52YWxpZAotICBpbnB1dCBkYXRhLiAgUGF0Y2ggYnkgS3VzaGFsIERhcy4KKy0gSXNzdWUgIzE1NjE1OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGBqc29uYCBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkIGlucHV0CisgIGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgogCiBCdWlsZAogLS0tLS0KQEAgLTI3NywxMSArMjcxLDExIEBACiAKIC0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCiAKLS0gRHJvcCBQQ1xweXRob25fbnQuaCBhcyBpdCdzIG5vdCB1c2VkLiBBZGQgaW5wdXQgZGVwZW5kZW5jeSBvbiBjdXN0b20KKy0gRHJvcCBgYFBDXHB5dGhvbl9udC5oYGAgYXMgaXQncyBub3QgdXNlZC4gIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQogICBidWlsZCBzdGVwLgogCi0tIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsCi0gIGFtZDY0IGNvbmZpZ3VyYXRpb24uCistIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsIGFtZDY0CisgIGNvbmZpZ3VyYXRpb24uCiAKIC0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCiAKQEAgLTI5NiwxNSArMjkwLDE1IEBACiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mICJ5aWVsZCBmcm9tIiB3aGVuIFN0b3BJdGVyYXRpb24gaXMKKy0gSXNzdWUgIzE1NTY4OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBgYHlpZWxkIGZyb21gYCB3aGVuIFN0b3BJdGVyYXRpb24gaXMKICAgcmFpc2VkIGJ5IGEgY3VzdG9tIGl0ZXJhdG9yLgogCi0tIElzc3VlICMxMzExOTogc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCistIElzc3VlICMxMzExOTogYHN5cy5zdGRvdXRgIGFuZCBgc3lzLnN0ZGVycmAgYXJlIG5vdyB1c2luZyAiXHJcbiIgbmV3bGluZSBvbgogICBXaW5kb3dzLCBhcyBQeXRob24gMi4KIAogLSBJc3N1ZSAjMTU1MzQ6IEZpeCB0aGUgZmFzdC1zZWFyY2ggZnVuY3Rpb24gZm9yIG5vbi1BU0NJSSBVbmljb2RlIHN0cmluZ3MuCiAKLS0gSXNzdWUgIzE1NTA4OiBGaXggdGhlIGRvY3N0cmluZyBmb3IgX19pbXBvcnRfXyB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAorLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBgX19pbXBvcnRfXygpYCB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAogICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90CiAgIHN1cHBvcnRlZC4KIApAQCAtMzE3LDE3ICszMTEsMTcgQEAKICAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCiAKIC0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCi0gICJCYXNlRXhjZXB0aW9uLl9fbmV3X18iIHRvIGhlbHAgcGlja2xpbmcgb2YgbmFpdmUgc3ViY2xhc3Nlcy4KKyAgYEJhc2VFeGNlcHRpb24uX19uZXdfXygpYCB0byBoZWxwIHBpY2tsaW5nIG9mIG5haXZlIHN1YmNsYXNzZXMuCiAKLS0gSXNzdWUgIzEyODM0OiBGaXggUHlCdWZmZXJfVG9Db250aWd1b3VzKCkgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KKy0gSXNzdWUgIzEyODM0OiBGaXggYFB5QnVmZmVyX1RvQ29udGlndW91cygpYCBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgogCi0tIElzc3VlICMxNTQ1NjogRml4IGNvZGUgX19zaXplb2ZfXyBhZnRlciAjMTIzOTkgY2hhbmdlLiAgUGF0Y2ggYnkgU2VyaGl5CistIElzc3VlICMxNTQ1NjogRml4IGNvZGUgYF9fc2l6ZW9mX18oKWAgYWZ0ZXIgIzEyMzk5IGNoYW5nZS4gIFBhdGNoIGJ5IFNlcmhpeQogICBTdG9yY2hha2EuCiAKIC0gSXNzdWUgIzE1NDA0OiBSZWZsZWFrIGluIFB5TWV0aG9kT2JqZWN0IHJlcHIuCiAKLS0gSXNzdWUgIzE1Mzk0OiBBbiBpc3N1ZSBpbiBQeU1vZHVsZV9DcmVhdGUgdGhhdCBjYXVzZWQgcmVmZXJlbmNlcyB0byBiZSBsZWFrZWQKLSAgb24gc29tZSBlcnJvciBwYXRocyBoYXMgYmVlbiBmaXhlZC4gIFBhdGNoIGJ5IEp1bGlhIExhd2FsbC4KKy0gSXNzdWUgIzE1Mzk0OiBBbiBpc3N1ZSBpbiBgUHlNb2R1bGVfQ3JlYXRlKClgIHRoYXQgY2F1c2VkIHJlZmVyZW5jZXMgdG8gYmUKKyAgbGVha2VkIG9uIHNvbWUgZXJyb3IgcGF0aHMgaGFzIGJlZW4gZml4ZWQuICBQYXRjaCBieSBKdWxpYSBMYXdhbGwuCiAKIC0gSXNzdWUgIzE1MzY4OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCBieXRlY29kZSBnZW5lcmF0aW9uIHRvIGJlIG5vbi1kZXRlcm1pbmlzdGljCiAgIGhhcyBiZWVuIGZpeGVkLgpAQCAtMzM1LDcgKzMyOSw3IEBACiAtIElzc3VlICMxNTIwMjogQ29uc2lzdGVudGx5IHVzZSB0aGUgbmFtZSAiZm9sbG93X3N5bWxpbmtzIiBmb3IgbmV3IHBhcmFtZXRlcnMKICAgaW4gb3MgYW5kIHNodXRpbCBmdW5jdGlvbnMuCiAKLS0gSXNzdWUgIzE1MzE0OiBfX21haW5fXy5fX2xvYWRlcl9fIGlzIG5vdyBzZXQgY29ycmVjdGx5IGR1cmluZyBpbnRlcnByZXRlcgorLSBJc3N1ZSAjMTUzMTQ6IGBgX19tYWluX18uX19sb2FkZXJfX2BgIGlzIG5vdyBzZXQgY29ycmVjdGx5IGR1cmluZyBpbnRlcnByZXRlcgogICBzdGFydHVwLgogCiAtIElzc3VlICMxNTExMTogV2hlbiBhIG1vZHVsZSBpbXBvcnRlZCB1c2luZyAnZnJvbSBpbXBvcnQnIGhhcyBhbiBJbXBvcnRFcnJvcgpAQCAtMzUwLDU3ICszNDQsNjIgQEAKIC0gSXNzdWUgIzE1MTEwOiBGaXggdGhlIHRyYWNlYmFja3MgZ2VuZXJhdGVkIGJ5ICJpbXBvcnQgeHh4IiB0byBub3Qgc2hvdyB0aGUKICAgaW1wb3J0bGliIHN0YWNrIGZyYW1lcy4KIAorLSBJc3N1ZSAjMTYzNjk6IEdsb2JhbCBQeVR5cGVPYmplY3RzIG5vdCBpbml0aWFsaXplZCB3aXRoIFB5VHlwZV9SZWFkeSguLi4pLgorCiAtIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKICAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KIAotLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRoLAorLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCisgIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgorCistIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGNoLAogICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCiAKLS0gSXNzdWUgIzE1MjI5OiBBbiBPU0Vycm9yIHN1YmNsYXNzIHdob3NlIF9faW5pdF9fIGRvZXNuJ3QgY2FsbCBiYWNrCistIElzc3VlICMxNTIyOTogQW4gYE9TRXJyb3JgIHN1YmNsYXNzIHdob3NlIF9faW5pdF9fIGRvZXNuJ3QgY2FsbCBiYWNrCiAgIE9TRXJyb3IuX19pbml0X18gY291bGQgcHJvZHVjZSBpbmNvbXBsZXRlIGluc3RhbmNlcywgbGVhZGluZyB0byBjcmFzaGVzIHdoZW4KICAgY2FsbGluZyBzdHIoKSBvbiB0aGVtLgogCi0tIElzc3VlIDE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgorLSBJc3N1ZSAjMTUzMDc6IFZpcnR1YWwgZW52aXJvbm1lbnRzIG5vdyB1c2Ugc3ltbGlua3Mgd2l0aCBmcmFtZXdvcmsgYnVpbGRzIG9uCiAgIE1hYyBPUyBYLCBsaWtlIG90aGVyIFBPU0lYIGJ1aWxkcy4KIAogTGlicmFyeQogLS0tLS0tLQogCi0tIElzc3VlICMxNTQyNDogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5CistIElzc3VlICMxNDU5MDogY29uZmlncGFyc2VyIG5vdyBjb3JyZWN0bHkgc3RyaXBzIGlubGluZSBjb21tZW50cyB3aGVuIGRlbGltaXRlcgorICBvY2N1cnMgZWFybGllciB3aXRob3V0IHByZWNlZGluZyBzcGFjZS4KKworLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIGBfX3NpemVvZl9fKClgIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkKICAgTHVkd2lnIEjDpGhuZS4KIAogLSBJc3N1ZSAjMTU1NzY6IEFsbG93IGV4dGVuc2lvbiBtb2R1bGVzIHRvIGFjdCBhcyBhIHBhY2thZ2UncyBfX2luaXRfXyBtb2R1bGUuCiAKLS0gSXNzdWUgIzE1NTAyOiBIYXZlIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIHdvcmsgb24gc3lzLm1ldGFfcGF0aCBpbnN0ZWFkCi0gIG9mIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgorLSBJc3N1ZSAjMTU1MDI6IEhhdmUgYGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpYCB3b3JrIG9uIGBzeXMubWV0YV9wYXRoYAorICBpbnN0ZWFkIG9mIGBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCiAKIC0gSXNzdWUgIzE1MTYzOiBQeWRvYyBzaG91bGRuJ3QgbGlzdCBfX2xvYWRlcl9fIGFzIG1vZHVsZSBkYXRhLgogCiAtIElzc3VlICMxNTQ3MTogRG8gbm90IHVzZSBtdXRhYmxlIG9iamVjdHMgYXMgZGVmYXVsdHMgZm9yCi0gIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkuCisgIGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYC4KIAogLSBJc3N1ZSAjMTU1NTk6IFRvIGF2b2lkIGEgcHJvYmxlbWF0aWMgZmFpbHVyZSBtb2RlIHdoZW4gcGFzc2VkIHRvIHRoZSBieXRlcwotICBjb25zdHJ1Y3Rvciwgb2JqZWN0cyBpbiB0aGUgaXBhZGRyZXNzIG1vZHVsZSBubyBsb25nZXIgaW1wbGVtZW50IF9faW5kZXhfXwotICAodGhleSBzdGlsbCBpbXBsZW1lbnQgX19pbnRfXyBhcyBhcHByb3ByaWF0ZSkKKyAgY29uc3RydWN0b3IsIG9iamVjdHMgaW4gdGhlIGlwYWRkcmVzcyBtb2R1bGUgbm8gbG9uZ2VyIGltcGxlbWVudCBgX19pbmRleF9fKClgCisgICh0aGV5IHN0aWxsIGltcGxlbWVudCBgX19pbnRfXygpYCBhcyBhcHByb3ByaWF0ZSkuCiAKIC0gSXNzdWUgIzE1NTQ2OiBGaXggaGFuZGxpbmcgb2YgcGF0aG9sb2dpY2FsIGlucHV0IGRhdGEgaW4gdGhlIHBlZWsoKSBhbmQKICAgcmVhZDEoKSBtZXRob2RzIG9mIHRoZSBCWjJGaWxlLCBHemlwRmlsZSBhbmQgTFpNQUZpbGUgY2xhc3Nlcy4KIAotLSBJc3N1ZSAjMTMwNTI6IEZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nCi0gIGVuZGVkIHdpdGggJ1wnLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKy0gSXNzdWUgIzEyNjU1OiBJbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGN1c3RvbSB0eXBlLCBgb3Muc2NoZWRfZ2V0YWZmaW5pdHkoKWAgYW5kCisgIGBvcy5zY2hlZF9zZXRhZmZpbml0eSgpYCBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlCisgIENQVXMgYSBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCiAKLS0gSXNzdWUgIzEyNjU1OiBJbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGN1c3RvbSB0eXBlLCBvcy5zY2hlZF9nZXRhZmZpbml0eSBhbmQKLSAgb3Muc2NoZWRfc2V0YWZmaW5pdHkgbm93IHVzZSByZWd1bGFyIHNldHMgb2YgaW50ZWdlcnMgdG8gcmVwcmVzZW50IHRoZSBDUFVzIGEKLSAgcHJvY2VzcyBpcyByZXN0cmljdGVkIHRvLgotCi0tIElzc3VlICMxNTUzODogRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBnZXRuYW1laW5mbygpIC8gZ2V0YWRkcmluZm8oKSBlbXVsYXRpb24KLSAgY29kZS4gIFBhdGNoIGJ5IFBoaWxpcHAgSGFnZW1laXN0ZXIuCistIElzc3VlICMxNTUzODogRml4IGNvbXBpbGF0aW9uIG9mIHRoZSBgc29ja2V0LmdldG5hbWVpbmZvKClgIC8KKyAgYHNvY2tldC5nZXRhZGRyaW5mbygpYCBlbXVsYXRpb24gY29kZS4gIFBhdGNoIGJ5IFBoaWxpcHAgSGFnZW1laXN0ZXIuCiAKIC0gSXNzdWUgIzE1NTE5OiBQcm9wZXJseSBleHBvc2UgV2luZG93c1JlZ2lzdHJ5RmluZGVyIGluIGltcG9ydGxpYiAoYW5kIHVzZSB0aGUKLSAgY29ycmVjdCB0ZXJtIGZvciBpdCkuIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKyAgY29ycmVjdCB0ZXJtIGZvciBpdCkuICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCiAKIC0gSXNzdWUgIzE1NTAyOiBCcmluZyB0aGUgaW1wb3J0bGliIEFCQ3MgaW50byBsaW5lIHdpdGggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlCi0gIGltcG9ydCBwcm90b2NvbHMgZ2l2ZW4gUEVQIDQyMC4gT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorICBpbXBvcnQgcHJvdG9jb2xzIGdpdmVuIFBFUCA0MjAuICBPcmlnaW5hbCBwYXRjaCBieSBFcmljIFNub3cuCiAKIC0gSXNzdWUgIzE1NDk5OiBMYXVuY2hpbmcgYSB3ZWJicm93c2VyIGluIFVuaXggdXNlZCB0byBzbGVlcCBmb3IgYSBmZXcgc2Vjb25kcy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgQW50b24gQmFya292c2t5LgpAQCAtNDA4LDM3ICs0MDcsMzYgQEAKIC0gSXNzdWUgIzE1NDYzOiBUaGUgZmF1bHRoYW5kbGVyIG1vZHVsZSB0cnVuY2F0ZXMgc3RyaW5ncyB0byA1MDAgY2hhcmFjdGVycywKICAgaW5zdGVhZCBvZiAxMDAsIHRvIGJlIGFibGUgdG8gZGlzcGxheSBsb25nIGZpbGUgcGF0aHMuCiAKLS0gSXNzdWUgIzYwNTY6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHVzZSBzZXRibG9ja2luZyhUcnVlKSBvbiB0aGUgc29ja2V0cyBpdAorLSBJc3N1ZSAjNjA1NjogTWFrZSBgbXVsdGlwcm9jZXNzaW5nYCB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKICAgdXNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEogRGVyZWsgV2lsc29uLgogCiAtIElzc3VlICMxNTM2NDogRml4IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KIAotLSBJc3N1ZSAjMTUwNDE6IFVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTU0MTM6IGBvcy50aW1lcygpYCBoYWQgZGlzYXBwZWFyZWQgdW5kZXIgV2luZG93cy4KIAotLSBJc3N1ZSAjMTU0MTM6IG9zLnRpbWVzKCkgaGFkIGRpc2FwcGVhcmVkIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE1NDAyOiBBbiBpc3N1ZSBpbiB0aGUgc3RydWN0IG1vZHVsZSB0aGF0IGNhdXNlZCBzeXMuZ2V0c2l6ZW9mIHRvCistIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgYHN5cy5nZXRzaXplb2YoKWAgdG8KICAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4gIEluaXRpYWwKICAgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTUyMzI6IFdoZW4gbWFuZ2xlX2Zyb20gaXMgVHJ1ZSwgZW1haWwuR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgbWFuZ2xlcwotICBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvciBlcGlsb2d1ZS4KKy0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGBlbWFpbC5HZW5lcmF0b3JgIG5vdyBjb3JyZWN0bHkKKyAgbWFuZ2xlcyBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvcgorICBlcGlsb2d1ZS4KIAogLSBJc3N1ZSAjMTUwOTQ6IEluY29ycmVjdGx5IHBsYWNlZCAjZW5kaWYgaW4gX3RraW50ZXIuYy4gIFBhdGNoIGJ5IFNlcmhpeQogICBTdG9yY2hha2EuCiAKLS0gSXNzdWUgIzEzOTIyOiBhcmdwYXJzZSBubyBsb25nZXIgaW5jb3JyZWN0bHkgc3RyaXBzICctLSdzIHRoYXQgYXBwZWFyIGFmdGVyCistIElzc3VlICMxMzkyMjogYGFyZ3BhcnNlYCBubyBsb25nZXIgaW5jb3JyZWN0bHkgc3RyaXBzICctLSdzIHRoYXQgYXBwZWFyIGFmdGVyCiAgIHRoZSBmaXJzdCBvbmUuCiAKLS0gSXNzdWUgIzEyMzUzOiBhcmdwYXJzZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgbnVsbCBhcmd1bWVudCB2YWx1ZXMuCistIElzc3VlICMxMjM1MzogYGFyZ3BhcnNlYCBub3cgY29ycmVjdGx5IGhhbmRsZXMgbnVsbCBhcmd1bWVudCB2YWx1ZXMuCiAKIC0gSXNzdWUgIzEwMDE3LCBpc3N1ZSAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCiAgIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCiAKLS0gSXNzdWUgIzE1Mzk3OiBpbnNwZWN0LmdldG1vZHVsZW5hbWUoKSBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gaW1wb3J0bGliIHZpYSBhCi0gIG5ldyBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpIEFQSS4KKy0gSXNzdWUgIzE1Mzk3OiBgaW5zcGVjdC5nZXRtb2R1bGVuYW1lKClgIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhCisgIGEgbmV3IGBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpYCBBUEkuCiAKLS0gSXNzdWUgIzE0NjM1OiB0ZWxuZXRsaWIgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KKy0gSXNzdWUgIzE0NjM1OiBgdGVsbmV0bGliYCB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZSB0bwogICBhdm9pZCBmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgogCiAtIElzc3VlICMxNTE4MDogQ2xhcmlmeSBwb3NpeHBhdGguam9pbigpIGVycm9yIG1lc3NhZ2Ugd2hlbiBtaXhpbmcgc3RyICYgYnl0ZXMuCkBAIC00NTUsNyArNDUzLDcgQEAKIC0gSXNzdWUgIzE1MjMzOiBQeXRob24gbm93IGd1YXJhbnRlZXMgdGhhdCBjYWxsYWJsZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhdGV4aXQKICAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGluIGEgZGV0ZXJtaW5pc3RpYyBvcmRlci4KIAotLSBJc3N1ZSAjMTUyMzg6IHNodXRpbC5jb3B5c3RhdCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KKy0gSXNzdWUgIzE1MjM4OiBgc2h1dGlsLmNvcHlzdGF0KClgIG5vdyBjb3BpZXMgTGludXggImV4dGVuZGVkIGF0dHJpYnV0ZXMiLgogCiAtIElzc3VlICMxNTIzMDogcnVucHkucnVuX3BhdGggbm93IGNvcnJlY3RseSBzZXRzIF9fcGFja2FnZV9fIGFzIGRlc2NyaWJlZCBpbgogICB0aGUgZG9jdW1lbnRhdGlvbi4KQEAgLTQ2NSw0MiArNDYzLDQyIEBACiAtIElzc3VlICMxNTI5NDogRml4IGEgcmVncmVzc2lvbiBpbiBwa2d1dGlsLmV4dGVuZF9wYXRoKCkncyBoYW5kbGluZyBvZiBuZXN0ZWQKICAgbmFtZXNwYWNlIHBhY2thZ2VzLgogCi0tIElzc3VlICMxNTA1NjogaW1wLmNhY2hlX2Zyb21fc291cmNlKCkgYW5kIHNvdXJjZV9mcm9tX2NhY2hlKCkgcmFpc2UKLSAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgc2V0IHRvIE5vbmUuCistIElzc3VlICMxNTA1NjogYGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpYCBhbmQgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCByYWlzZQorICBOb3RJbXBsZW1lbnRlZEVycm9yIHdoZW4gYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIHNldCB0byBOb25lLgogCi0tIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGltcC5maW5kX21vZHVsZSgpLgorLSBJc3N1ZSAjMTUyNTY6IEdyYW1tYXRpY2FsIG1pc3Rha2UgaW4gZXhjZXB0aW9uIHJhaXNlZCBieSBgaW1wLmZpbmRfbW9kdWxlKClgLgogCi0tIElzc3VlICM1OTMxOiB3c2dpcmVmIGVudmlyb24gdmFyaWFibGUgU0VSVkVSX1NPRlRXQVJFIHdpbGwgc3BlY2lmeSBhbgorLSBJc3N1ZSAjNTkzMTogYHdzZ2lyZWZgIGVudmlyb24gdmFyaWFibGUgU0VSVkVSX1NPRlRXQVJFIHdpbGwgc3BlY2lmeSBhbgogICBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UgQ1B5dGhvbiwgSnl0aG9uIGluc3RlYWQgb2YgZ2VuZXJpYyAiUHl0aG9uIi4KIAogLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAibWF4X2J1ZmZlcl9zaXplIiBvZiBCdWZmZXJlZFdyaXRlciBhbmQKICAgQnVmZmVyZWRSV1BhaXIsIGZyb20gdGhlIGlvIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBvYnNvbGV0ZSBhcmd1bWVudCAidmVyc2lvbiIgb2YgYXJncGFyc2UuQXJndW1lbnRQYXJzZXIuCistIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJ2ZXJzaW9uIiBvZiBgYXJncGFyc2UuQXJndW1lbnRQYXJzZXJgLgogCiAtIElzc3VlICMxNDgxNDogSW1wbGVtZW50IG1vcmUgY29uc2lzdGVudCBvcmRlcmluZyBhbmQgc29ydGluZyBiZWhhdmlvdXIgZm9yCiAgIGlwYWRkcmVzcyBvYmplY3RzLgogCi0tIElzc3VlICMxNDgxNDogaXBhZGRyZXNzIG5ldHdvcmsgb2JqZWN0cyBjb3JyZWN0bHkgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4KKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCiAgIGNvbXBhcmVkIHRvIGFyYml0cmFyeSBvYmplY3RzIGluc3RlYWQgb2YgcmFpc2luZyBUeXBlRXJyb3IuCiAKIC0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcgZGVjbGFyYXRpb24uCiAKLS0gSXNzdWUgIzE0ODE0OiBpcGFkZHJlc3Mgbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgd2hlbgorLSBJc3N1ZSAjMTQ4MTQ6IGBpcGFkZHJlc3NgIG5vdyBwcm92aWRlcyBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2VzIHdoZW4KICAgY29uc3RydWN0aW5nIGluc3RhbmNlcyBkaXJlY3RseSAoY2hhbmdlcyBwZXJtaXR0ZWQgZHVyaW5nIGJldGEgZHVlIHRvCiAgIHByb3Zpc2lvbmFsIEFQSSBzdGF0dXMpLgogCi0tIElzc3VlICMxNTI0NzogRmlsZUlPIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvciBwb2ludGluZwotICB0byBhIGRpcmVjdG9yeS4KKy0gSXNzdWUgIzE1MjQ3OiBgaW8uRmlsZUlPYCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IKKyAgcG9pbnRpbmcgdG8gYSBkaXJlY3RvcnkuCiAKIC0gSXNzdWUgIzE1MjYxOiBTdG9wIG9zLnN0YXQoZmQpIGNyYXNoaW5nIG9uIFdpbmRvd3Mgd2hlbiBmZCBub3Qgb3Blbi4KIAotLSBJc3N1ZSAjMTUxNjY6IEltcGxlbWVudCBpbXAuZ2V0X3RhZygpIHVzaW5nIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcuCistIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGBpbXAuZ2V0X3RhZygpYCB1c2luZyBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AuCiAKLS0gSXNzdWUgIzE1MjEwOiBDYXRjaCBLZXlFcnJvciB3aGVuIGltcG9ydGxpYi5fX2luaXRfXyBjYW4ndCBmaW5kCistIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBgaW1wb3J0bGliLl9faW5pdF9fKClgIGNhbid0IGZpbmQKICAgX2Zyb3plbl9pbXBvcnRsaWIgaW4gc3lzLm1vZHVsZXMsIG5vdCBJbXBvcnRFcnJvci4KIAotLSBJc3N1ZSAjMTUwMzA6IGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXIgbm93IHN1cHBvcnRzIHRoZSBuZXcgc291cmNlIHNpemUKKy0gSXNzdWUgIzE1MDMwOiBgaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcmAgbm93IHN1cHBvcnRzIHRoZSBuZXcgc291cmNlIHNpemUKICAgaGVhZGVyIGZpZWxkIGluIC5weWMgZmlsZXMuCiAKIC0gSXNzdWUgIzUzNDY6IFByZXNlcnZlIHBlcm1pc3Npb25zIG9mIG1ib3gsIE1NREYgYW5kIEJhYnlsIG1haWxib3ggZmlsZXMgb24KQEAgLTUxMyw3ICs1MTEsNyBAQAogICByZW5hbWVkIG92ZXIgdGhlIG9sZCBmaWxlIHdoZW4gZmx1c2goKSBpcyBjYWxsZWQgb24gYW4gbWJveCwgTU1ERiBvciBCYWJ5bAogICBtYWlsYm94LgogCi0tIElzc3VlIDEwOTI0OiBGaXhlZCBjcnlwdC5ta3NhbHQoKSB0byB1c2UgYSBSTkcgdGhhdCBpcyBzdWl0YWJsZSBmb3IKKy0gSXNzdWUgIzEwOTI0OiBGaXhlZCBgY3J5cHQubWtzYWx0KClgIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgogICBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCiAKIC0gSXNzdWUgIzE1MTg0OiBFbnN1cmUgY29uc2lzdGVudCByZXN1bHRzIG9mIE9TIFggY29uZmlndXJhdGlvbiB0YWlsb3JpbmcgZm9yCkBAIC01MjQsMTAgKzUyMiwxMCBAQAogQyBBUEkKIC0tLS0tCiAKLS0gSXNzdWUgIzE1NjEwOiBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCgpIG5vdyB1c2VzIGEgJ2xldmVsJyBvZiAwIGluc3RlYWQgb2YgLTEuCistIElzc3VlICMxNTYxMDogYFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KClgIG5vdyB1c2VzIGEgJ2xldmVsJyBvZiAwIGluc3RlYWQgb2YgLTEuCiAKLS0gSXNzdWVzICMxNTE2OSwgIzE0NTk5OiBTdHJpcCBvdXQgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YKLSAgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKCkgdXNlZCBieSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBhbmQKKy0gSXNzdWUgIzE1MTY5LCBpc3N1ZSAjMTQ1OTk6IFN0cmlwIG91dCB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZgorICBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCiAgIHVzZWQgdGhlIFB5dGhvbiBjb2RlIGluc3RlYWQuIExlYWRzIHRvIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkgdG8gbm90CiAgIHRyeSB0byBpbmZlciB0aGUgc291cmNlIHBhdGggZnJvbSB0aGUgYnl0ZWNvZGUgcGF0aCBhcwogICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBkb2VzLgpAQCAtNTM1LDE0ICs1MzMsMTcgQEAKIEV4dGVuc2lvbiBNb2R1bGVzCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxNTY3NjogTm93ICJtbWFwIiBjaGVjayBmb3IgZW1wdHkgZmlsZXMgYmVmb3JlIGRvaW5nIHRoZQotICBvZmZzZXQgY2hlY2suICBQYXRjaCBieSBTdGV2ZW4gV2lsbGlzLgotCi0tIElzc3VlICM2NDkzOiBBbiBpc3N1ZSBpbiBjdHlwZXMgb24gV2luZG93cyB0aGF0IGNhdXNlZCBzdHJ1Y3R1cmUgYml0ZmllbGRzCi0gIG9mIHR5cGUgY3R5cGVzLmNfdWludDMyIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCistIElzc3VlICM2NDkzOiBBbiBpc3N1ZSBpbiBjdHlwZXMgb24gV2luZG93cyB0aGF0IGNhdXNlZCBzdHJ1Y3R1cmUgYml0ZmllbGRzIG9mCisgIHR5cGUgYGN0eXBlcy5jX3VpbnQzMmAgYW5kIHdpZHRoIDMyIHRvIGluY29ycmVjdGx5IGJlIHNldCBoYXMgYmVlbiBmaXhlZC4KIAogLSBJc3N1ZSAjMTUxOTQ6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC4xMSByZWxlYXNlLgogCitJRExFCistLS0tCisKKy0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZworICBlbmRlZCB3aXRoIGBgXGBgLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCkBAIC01NjIsOCArNTYzLDEwIEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE1NDQ0OiBVc2UgcHJvcGVyIHNwZWxsaW5nIGZvciBub24tQVNDSUkgY29udHJpYnV0b3IgbmFtZXMuICBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTUwNDE6IFVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KIAogLSBJc3N1ZSAjMTUyOTU6IFJlb3JnYW5pemUgYW5kIHJld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0uCiAKQEAgLTU3OCwyNSArNTgxLDI5IEBACiAgICJjaGFuZ2VkIiBzaW5jZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIHdvcmsgd2l0aCBtb2R1bGVzIGRpcmVjdGx5IGltcG9ydGVkIGJ5CiAgIGltcG9ydCBpdHNlbGYuCiAKLS0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGV4ZWMgb3IKLSAgZXhlY2ZpbGUoKS4KKy0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGBleGVjKClgIG9yCisgIGBleGVjZmlsZSgpYC4KIAotLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgZmlsZWNtcC5kaXJjbXAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaAorLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgYGZpbGVjbXAuZGlyY21wKClgIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKICAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCiAKKy0gSXNzdWUgIzE1NDQyOiBFeHBvc2UgdGhlIGRlZmF1bHQgbGlzdCBvZiBkaXJlY3RvcmllcyBpZ25vcmVkIGJ5CisgIGBmaWxlY21wLmRpcmNtcCgpYCBhcyBhIG1vZHVsZSBhdHRyaWJ1dGUsIGFuZCBleHBhbmQgdGhlIGxpc3QgdG8gbW9yZSBtb2Rlcm4KKyAgdmFsdWVzLgorCiBUZXN0cwogLS0tLS0KIAotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gIFBhdGNoIGJ5Ci0gIFNlcmhpeSBTdG9yY2hha2EuCistIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBgX19zaXplb2ZfXygpYCB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gIFBhdGNoCisgIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKIC0gSXNzdWUgIzE1MzIwOiBNYWtlIGl0ZXJhdGluZyB0aGUgbGlzdCBvZiB0ZXN0cyB0aHJlYWQtc2FmZSB3aGVuIHJ1bm5pbmcgdGVzdHMKICAgaW4gbXVsdGlwcm9jZXNzIG1vZGUuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgogCi0tIElzc3VlICMxNTE2ODogTW92ZSBpbXBvcnRsaWIudGVzdCB0byB0ZXN0LnRlc3RfaW1wb3J0bGliLgorLSBJc3N1ZSAjMTUxNjg6IE1vdmUgYGltcG9ydGxpYi50ZXN0YCB0byBgdGVzdC50ZXN0X2ltcG9ydGxpYmAuCiAKIC0gSXNzdWUgIzE1MDkxOiBSZWFjdGl2YXRlIGEgdGVzdCBvbiBVTklYIHdoaWNoIHdhcyBmYWlsaW5nIHRoYW5rcyB0byBhCi0gIGZvcmdvdHRlbiBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSBjYWxsLgorICBmb3Jnb3R0ZW4gYGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpYCBjYWxsLgogCiAtIElzc3VlICMxNTIzMDogQWRvcHRlZCBhIG1vcmUgc3lzdGVtYXRpYyBhcHByb2FjaCBpbiB0aGUgcnVucHkgdGVzdHMuCiAKQEAgLTYyOSw2ICs2MzYsOCBAQAogCiAtIElzc3VlICMxNDAxODogRml4IE9TIFggVGNsL1RrIGZyYW1ld29yayBjaGVja2luZyB3aGVuIHVzaW5nIE9TIFggU0RLcy4KIAorLSBJc3N1ZSAjMTYyNTY6IE9TIFggaW5zdGFsbGVyIG5vdyBzZXRzIGNvcnJlY3QgcGVybWlzc2lvbnMgZm9yIGRvYyBkaXJlY3RvcnkuCisKIC0gSXNzdWUgIzE1NDMxOiBBZGQgX2ZyZWV6ZV9pbXBvcnRsaWIgcHJvamVjdCB0byByZWdlbmVyYXRlIGltcG9ydGxpYi5oIG9uCiAgIFdpbmRvd3MuIFBhdGNoIGJ5IEtyaXN0asOhbiBWYWx1ciBKw7Nuc3Nvbi4KIApAQCAtNjY0LDE0ICs2NzMsOSBAQAogCiAtIElzc3VlICMxMTYyNjogQWRkIF9TaXplVCBmdW5jdGlvbnMgdG8gc3RhYmxlIEFCSS4KIAotLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQogLSBJc3N1ZSAjMTUxNDI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIGRlYWxsb2NhdGluZyBpbnN0YW5jZXMgb2YgdHlwZXMKICAgY3JlYXRlZCB1c2luZyBQeVR5cGVfRnJvbVNwZWMoKS4KIAotLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCi0gIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQogLSBJc3N1ZSAjMTAwNTM6IERvbid0IGNsb3NlIEZEcyB3aGVuIEZpbGVJTy5fX2luaXRfXyBmYWlscy4gTG9vc2VseSBiYXNlZCBvbgogICB0aGUgd29yayBieSBIaXJva2F6dSBZYW1hbW90by4KIApAQCAtNjk5LDkgKzcwMyw2IEBACiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzEyMjg4OiBDb25zaWRlciAnMCcgYW5kICcwLjAnIGFzIHZhbGlkIGluaXRpYWx2YWx1ZQogICBmb3IgdGtpbnRlciBTaW1wbGVEaWFsb2cuCiAKQEAgLTcyMCwxNCArNzIxLDggQEAKIC0gSXNzdWUgIzE1NTE0OiBDb3JyZWN0IF9fc2l6ZW9mX18gc3VwcG9ydCBmb3IgY3B1X3NldC4KICAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAotLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZwotICBiZWhpbmQuCi0KIC0gSXNzdWUgIzE1MTc3OiBBZGRlZCBkaXJfZmQgcGFyYW1ldGVyIHRvIG9zLmZ3YWxrKCkuCiAKLS0gSXNzdWUgIzE1MTc2OiBDbGFyaWZpZWQgYmVoYXZpb3IsIGRvY3VtZW50YXRpb24sIGFuZCBpbXBsZW1lbnRhdGlvbgotICBvZiBvcy5saXN0ZGlyKCkuCi0KIC0gSXNzdWUgIzE1MDYxOiBSZS1pbXBsZW1lbnRlZCBobWFjLmNvbXBhcmVfZGlnZXN0KCkgaW4gQyB0byBwcmV2ZW50IGZ1cnRoZXIKICAgdGltaW5nIGFuYWx5c2lzIGFuZCB0byBzdXBwb3J0IGFsbCBidWZmZXIgcHJvdG9jb2wgYXdhcmUgb2JqZWN0cyBhcyB3ZWxsIGFzCiAgIEFTQ0lJIG9ubHkgc3RyIGluc3RhbmNlcyBzYWZlbHkuCkBAIC04MjcsMTAgKzgyMiw2IEBACiAtIElzc3VlICMxNTAwNjogQWxsb3cgZXF1YWxpdHkgY29tcGFyaXNvbiBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZQogICB0aW1lIG9yIGRhdGV0aW1lIG9iamVjdHMuCiAKLS0gSXNzdWUgIzE0OTgyOiBEb2N1bWVudCB0aGF0IHBrZ3V0aWwncyBpdGVyYXRpb24gZnVuY3Rpb25zIHJlcXVpcmUgdGhlCi0gIG5vbi1zdGFuZGFyZCBpdGVyX21vZHVsZXMoKSBtZXRob2QgdG8gYmUgZGVmaW5lZCBieSBhbiBpbXBvcnRlciAoc29tZXRoaW5nCi0gIHRoZSBpbXBvcnRsaWIgaW1wb3J0ZXJzIGRvIG5vdCBkZWZpbmUpLgotCiAtIElzc3VlICMxNTAzNjogTWFpbGJveCBubyBsb25nZXIgdGhyb3dzIGFuIGVycm9yIGlmIGEgZmx1c2ggaXMgZG9uZQogICBiZXR3ZWVuIG9wZXJhdGlvbnMgd2hlbiByZW1vdmluZyBvciBjaGFuZ2luZyBtdWx0aXBsZSBpdGVtcyBpbiBtYm94LAogICBNTURGLCBvciBCYWJ5bCBtYWlsYm94ZXMuCkBAIC04OTgsOSArODg5LDYgQEAKIAogLSBJc3N1ZSAjMTQ5Njk6IEJldHRlciBoYW5kbGluZyBvZiBleGNlcHRpb24gY2hhaW5pbmcgaW4gY29udGV4dGxpYi5FeGl0U3RhY2sKIAotLSBJc3N1ZSAjMTQ5NjI6IFVwZGF0ZSB0ZXh0IGNvbG9yaW5nIGluIElETEUgc2hlbGwgd2luZG93IGFmdGVyIGNoYW5naW5nCi0gIG9wdGlvbnMuICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQogLSBJc3N1ZSAjMTQ5NjM6IENvbnZlcnQgY29udGV4dGxpYi5FeGl0U3RhY2suX19leGl0X18gdG8gdXNlIGFuIGl0ZXJhdGl2ZQogICBhbGdvcml0aG0gKFBhdGNoIGJ5IEFsb24gSG9yZXYpCiAKQEAgLTkxMyw2ICs5MDEsMTEgQEAKIEMtQVBJCiAtLS0tLQogCistIElzc3VlICMxNTE0NjogQWRkIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTA0MjogQWRkIFB5U3RhdGVfQWRkTW9kdWxlIGFuZCBQeVN0YXRlX1JlbW92ZU1vZHVsZS4gQWRkIHZlcnNpb24KKyAgZ3VhcmQgZm9yIFB5X0xJTUlURURfQVBJIGFkZGl0aW9ucy4gUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCiAtIElzc3VlICMxMzc4MzogSW5hZHZlcnRlbnQgYWRkaXRpb25zIHRvIHRoZSBwdWJsaWMgQyBBUEkgaW4gdGhlIFBFUCAzODAKICAgaW1wbGVtZW50YXRpb24gaGF2ZSBlaXRoZXIgYmVlbiByZW1vdmVkIG9yIG1hcmtlZCBhcyBwcml2YXRlIGludGVyZmFjZXMuCiAKQEAgLTkyMSw5ICs5MTQsMjUgQEAKIAogLSBJc3N1ZSAjMTUwMDA6IFN1cHBvcnQgdGhlICJ1bmlxdWUiIHgzMiBhcmNoaXRlY3R1cmUgaW4gX3Bvc2l4c3VicHJvY2Vzcy5jLgogCitJRExFCistLS0tCisKKy0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KKyAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZworICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTUxNzY6IENsYXJpZmllZCBiZWhhdmlvciwgZG9jdW1lbnRhdGlvbiwgYW5kIGltcGxlbWVudGF0aW9uCisgIG9mIG9zLmxpc3RkaXIoKS4KKworLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKKyAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKKyAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCisKIC0gSXNzdWUgIzE1MDgxOiBEb2N1bWVudCBQeVN0YXRlX0ZpbmRNb2R1bGUuCiAgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KIApAQCAtOTMyLDYgKzk0MSw5IEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZworICBiZWhpbmQuCisKIC0gSXNzdWUgIzE0NzY5OiB0ZXN0X2NhcGkgbm93IGhhcyBTa2lwaXRlbVRlc3QsIHdoaWNoIGNsZXZlcmx5IGNoZWNrcwogICBmb3IgInBhcml0eSIgYmV0d2VlbiBQeUFyZ19QYXJzZVR1cGxlKCkgYW5kIHRoZSBQeXRob24vZ2V0YXJncy5jIHN0YXRpYwogICBmdW5jdGlvbiBza2lwaXRlbSgpIGZvciBhbGwgcG9zc2libGUgImZvcm1hdCB1bml0cyIuCkBAIC0xMDIwLDM0ICsxMDMyLDE4IEBACiAtIElzc3VlICMxNDcwMDogRml4IHR3byBicm9rZW4gYW5kIHVuZGVmaW5lZC1iZWhhdmlvdXItaW5kdWNpbmcgb3ZlcmZsb3cgY2hlY2tzCiAgIGluIG9sZC1zdHlsZSBzdHJpbmcgZm9ybWF0dGluZy4KIAotLSBJc3N1ZSAjMTQ3MDU6IFRoZSBQeUFyZ19QYXJzZSgpIGZhbWlseSBvZiBmdW5jdGlvbnMgbm93IHN1cHBvcnQgdGhlICdwJyBmb3JtYXQKLSAgdW5pdCwgd2hpY2ggYWNjZXB0cyBhICJib29sZWFuIHByZWRpY2F0ZSIgYXJndW1lbnQuICBJdCBjb252ZXJ0cyBhbnkgUHl0aG9uCi0gIHZhbHVlIGludG8gYW4gaW50ZWdlci0tMCBpZiBpdCBpcyAiZmFsc2UiLCBhbmQgMSBvdGhlcndpc2UuCi0KIExpYnJhcnkKIC0tLS0tLS0KIAogLSBJc3N1ZSAjMTQ2OTA6IFVzZSBtb25vdG9uaWMgY2xvY2sgaW5zdGVhZCBvZiBzeXN0ZW0gY2xvY2sgaW4gdGhlIHNjaGVkLAogICBzdWJwcm9jZXNzIGFuZCB0cmFjZSBtb2R1bGVzLgogCi0tIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQKLSAgYnl0ZSBsaXRlcmFscyBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuMy4KLQotLSBJc3N1ZSAjMTA5OTc6IFByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCi0KIC0gSXNzdWUgIzE0NDQzOiBUZWxsIHJwbWJ1aWxkIHRvIHVzZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFB5dGhvbiBpbgogICBiZGlzdF9ycG0uIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCiAKLS0gSXNzdWUgIzE0OTI5OiBTdG9wIElkbGUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgotICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzEyNTE1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IGlmIGl0IGdldHMgdG8gRU9GIHdoaWxlIHBhcnNpbmcKICAgYSBNSU1FIHBhcnQgd2l0aG91dCBzZWVpbmcgdGhlIGNsb3NpbmcgTUlNRSBib3VuZGFyeS4KIAotLSBJc3N1ZSAjMTI1MTA6IEF0dGVtcHRpbmcgdG8gZ2V0IGludmFsaWQgdG9vbHRpcCBubyBsb25nZXIgY2xvc2VzIElkbGUuCi0gIE90aGVyIHRvb2x0aXBzcyBoYXZlIGJlZW4gY29ycmVjdGVkIG9yIGltcHJvdmVkIGFuZCB0aGUgbnVtYmVyIG9mIHRlc3RzCi0gIGhhcyBiZWVuIHRyaXBsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxNjcyNTY4OiBlbWFpbCBub3cgYWx3YXlzIGRlY29kZXMgYmFzZTY0IHBheWxvYWRzLCBhZGRpbmcgcGFkZGluZyBhbmQKICAgaWdub3Jpbmcgbm9uLWJhc2U2NC1hbHBoYWJldCBjaGFyYWN0ZXJzIGlmIG5lZWRlZCwgYW5kIHJlZ2lzdGVyaW5nIGRlZmVjdHMKICAgZm9yIGFueSBzdWNoIHByb2JsZW1zLgpAQCAtMTA4MSw5ICsxMDc3LDYgQEAKIC0gSXNzdWUgIzE0NTQ4OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBmaW5hbGl6ZXJzIGNoZWNrIHBpZCBiZWZvcmUKICAgcnVubmluZyB0byBjb3BlIHdpdGggcG9zc2liaWxpdHkgb2YgZ2MgcnVubmluZyBqdXN0IGFmdGVyIGZvcmsuCiAKLS0gSXNzdWUgIzE0ODYzOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24gb2Ygb3MuZmRvcGVuKCkgdG8gcmVmbGVjdCB0aGUKLSAgZmFjdCB0aGF0IGl0J3Mgb25seSBhIHRoaW4gd3JhcHBlciBhcm91bmQgb3BlbigpIGFueW1vcmUuCi0KIC0gSXNzdWUgIzE0MDM2OiBBZGQgYW4gYWRkaXRpb25hbCBjaGVjayB0byB2YWxpZGF0ZSB0aGF0IHBvcnQgaW4gdXJscGFyc2UgZG9lcwogICBub3QgZ28gaW4gaWxsZWdhbCByYW5nZSBhbmQgcmV0dXJucyBOb25lLgogCkBAIC0xMjEwLDYgKzEyMDMsMjEgQEAKIC0gSXNzdWUgIzE0MTI3IGFuZCAjMTAxNDg6IHNodXRpbC5jb3B5c3RhdCBub3cgcHJlc2VydmVzIGV4YWN0IG10aW1lIGFuZCBhdGltZQogICBvbiBmaWxlc3lzdGVtcyBwcm92aWRpbmcgbmFub3NlY29uZCByZXNvbHV0aW9uLgogCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE0OTU4OiBDaGFuZ2UgSURMRSBzeXN0YXggaGlnaGxpZ2h0aW5nIHRvIHJlY29nbml6ZSBhbGwgc3RyaW5nIGFuZAorICBieXRlIGxpdGVyYWxzIHN1cHBvcnRlZCBpbiBQeXRob24gMy4zLgorCistIElzc3VlICMxMDk5NzogUHJldmVudCBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBJRExFJ3MgIlJlY2VudCBGaWxlcyIgbWVudS4KKworLSBJc3N1ZSAjMTQ5Mjk6IFN0b3AgSURMRSAzLnggZnJvbSBjbG9zaW5nIG9uIFVuaWNvZGUgZGVjb2RlIGVycm9ycyB3aGVuCisgIGdyZXBwaW5nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTI1MTA6IEF0dGVtcHRpbmcgdG8gZ2V0IGludmFsaWQgdG9vbHRpcCBubyBsb25nZXIgY2xvc2VzIElETEUuCisgIE90aGVyIHRvb2x0aXBzcyBoYXZlIGJlZW4gY29ycmVjdGVkIG9yIGltcHJvdmVkIGFuZCB0aGUgbnVtYmVyIG9mIHRlc3RzCisgIGhhcyBiZWVuIHRyaXBsZWQuIE9yaWdpbmFsIHBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIApAQCAtMTIyOCw5ICsxMjM2LDE5IEBACiAKIC0gSXNzdWUgIzEzMjEwOiBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFZTMjAxMCwgcG9ydGVkIGZyb20gVlMyMDA4LgogCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTQ3MDU6IFRoZSBQeUFyZ19QYXJzZSgpIGZhbWlseSBvZiBmdW5jdGlvbnMgbm93IHN1cHBvcnQgdGhlICdwJyBmb3JtYXQKKyAgdW5pdCwgd2hpY2ggYWNjZXB0cyBhICJib29sZWFuIHByZWRpY2F0ZSIgYXJndW1lbnQuICBJdCBjb252ZXJ0cyBhbnkgUHl0aG9uCisgIHZhbHVlIGludG8gYW4gaW50ZWdlci0tMCBpZiBpdCBpcyAiZmFsc2UiLCBhbmQgMSBvdGhlcndpc2UuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTQ4NjM6IFVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcy5mZG9wZW4oKSB0byByZWZsZWN0IHRoZQorICBmYWN0IHRoYXQgaXQncyBvbmx5IGEgdGhpbiB3cmFwcGVyIGFyb3VuZCBvcGVuKCkgYW55bW9yZS4KKwogLSBJc3N1ZSAjMTQ1ODg6IFRoZSBsYW5ndWFnZSByZWZlcmVuY2Ugbm93IGFjY3VyYXRlbHkgZG9jdW1lbnRzIHRoZSBQeXRob24gMwogICBjbGFzcyBkZWZpbml0aW9uIHByb2Nlc3MuIFBhdGNoIGJ5IE5pY2sgQ29naGxhbi4KIApAQCAtMTI3OSw5ICsxMjk3LDYgQEAKIC0gSXNzdWUgIzE0MzM5OiBTcGVlZCBpbXByb3ZlbWVudHMgdG8gYmluLCBvY3QgYW5kIGhleCBmdW5jdGlvbnMuICBQYXRjaCBieQogICBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNDA5ODogTmV3IGZ1bmN0aW9ucyBQeUVycl9HZXRFeGNJbmZvIGFuZCBQeUVycl9TZXRFeGNJbmZvLgotICBQYXRjaCBieSBTdGVmYW4gQmVobmVsLgotCiAtIElzc3VlICMxNDM4NTogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBhIGN1c3RvbSB0eXBlIGZvciB0aGUgX19idWlsdGluc19fCiAgIG5hbWVzcGFjZSwgaW5zdGVhZCBvZiBhIGRpY3QuIEl0IGNhbiBiZSB1c2VkIGZvciBzYW5kYm94aW5nIGZvciBleGFtcGxlLgogICBSYWlzZSBhbHNvIGEgTmFtZUVycm9yIGluc3RlYWQgb2YgSW1wb3J0RXJyb3IgaWYgX19idWlsZF9jbGFzc19fIG5hbWUgaWYgbm90CkBAIC0xNDMxLDEyICsxNDQ2LDYgQEAKIAogLSBEb24ndCBQeV9ERUNSRUYgTlVMTCB2YXJpYWJsZSBpbiBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyLgogCi0tIElzc3VlICM4NTE1OiBTZXQgX19maWxlX18gd2hlbiBydW4gZmlsZSBpbiBJRExFLgotICBJbml0aWFsIHBhdGNoIGJ5IEJydWNlIEZyZWRlcmlrc2VuLgotCi0tIElzc3VlICMxNDQ5NjogRml4IHdyb25nIG5hbWUgaW4gaWRsZWxpYi90YWJiZWRwYWdlcy5weS4KLSAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgotCiAtIElzc3VlICMzMDMzOiBBZGQgZGlzcGxheW9mIHBhcmFtZXRlciB0byB0a2ludGVyIGZvbnQuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgogCiAtIElzc3VlICMxNDQ4MjogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQpAQCAtMTQ3Miw2ICsxNDgxLDE1IEBACiAtIElzc3VlICMxNDM1NTogUmVncnRlc3Qgbm93IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcsIGFuZAogICB3aWxsIHVzZSBpdCBpZiBhIHRlc3QgZmlsZSBjb250YWlucyBubyBgdGVzdF9tYWluYCBtZXRob2QuCiAKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KKyAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KKworLSBJc3N1ZSAjMTQ0OTY6IEZpeCB3cm9uZyBuYW1lIGluIGlkbGVsaWIvdGFiYmVkcGFnZXMucHkuCisgIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KKwogVG9vbHMgLyBEZW1vcwogLS0tLS0tLS0tLS0tLQogCkBAIC0xNDgxLDYgKzE0OTksMTIgQEAKIC0gSXNzdWUgIzEzMTY1OiBzdHJpbmdiZW5jaCBpcyBub3cgYXZhaWxhYmxlIGluIHRoZSBUb29scy9zdHJpbmdiZW5jaCBmb2xkZXIuCiAgIEl0IHVzZWQgdG8gbGl2ZSBpbiBpdHMgb3duIFNWTiBwcm9qZWN0LgogCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KKyAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKwogCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAyPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTE1MzIsMTYgKzE1NTYsOSBAQAogCiAtIElzc3VlICM1MTM2OiBkZXByZWNhdGUgb2xkLCB1bnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlci4KIAotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQogLSBJc3N1ZSAjMTQ0MTY6IHN5c2xvZyBub3cgZGVmaW5lcyB0aGUgTE9HX09ERUxBWSBhbmQgTE9HX0FVVEhQUklWIGNvbnN0YW50cwogICBpZiB0aGV5IGFyZSBkZWZpbmVkIGluIDxzeXNsb2cuaD4uCiAKLS0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgcHl0aG9uIC1tIGlkbGVsaWIKLQogLSBJc3N1ZSAjMTQyOTU6IEFkZCB1bml0dGVzdC5tb2NrCiAKIC0gSXNzdWUgIzc2NTI6IEFkZCAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjIG9wdGlvbiB0byBjb25maWd1cmUgZm9yIGxpbmtpbmcKQEAgLTE1NjcsOSArMTU4NCw2IEBACiAgIHVwIHRoZSBkZWNpbWFsIG1vZHVsZS4gUGVyZm9ybWFuY2UgZ2FpbnMgb2YgdGhlIG5ldyBDIGltcGxlbWVudGF0aW9uIGFyZQogICBiZXR3ZWVuIDEweCBhbmQgMTAweCwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4KIAotLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwotICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCi0KIC0gSXNzdWUgIzE0MjY5OiBTTVRQRCBub3cgY29uZm9ybXMgdG8gdGhlIFJGQyBhbmQgcmVxdWlyZXMgYSBIRUxPIGNvbW1hbmQKICAgYmVmb3JlIE1BSUwsIFJDUFQsIG9yIERBVEEuCiAKQEAgLTE2MDEsOCArMTYxNSw2IEBACiAgIGRlbmlhbCBvZiBzZXJ2aWNlIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtIHdpdGggc29tZQogICBtb2RpZmljYXRpb25zIGJ5IHRoZSBleHBhdCBwcm9qZWN0LgogCi0tIElzc3VlICMxNDIwMDogSWRsZSBzaGVsbCBjcmFzaCBvbiBwcmludGluZyBub24tQk1QIHVuaWNvZGUgY2hhcmFjdGVyLgotCiAtIElzc3VlICMxMjgxODogZm9ybWF0IGFkZHJlc3Mgbm8gbG9uZ2VyIG5lZWRsZXNzbHkgXCBlc2NhcGVzICgpcyBpbiBuYW1lcyB3aGVuCiAgIHRoZSBuYW1lIGVuZHMgdXAgYmVpbmcgcXVvdGVkLgogCkBAIC0xNjE4LDggKzE2MzAsNiBAQAogCiAtIElzc3VlICM5ODk3MTI6IFN1cHBvcnQgdXNpbmcgVGsgd2l0aG91dCBhIG1haW5sb29wLgogCi0tIElzc3VlICM1MjE5OiBQcmV2ZW50IGV2ZW50IGhhbmRsZXIgY2FzY2FkZSBpbiBJRExFLgotCiAtIElzc3VlICMzODM1OiBSZWZ1c2UgdG8gdXNlIHVudGhyZWFkZWQgVGNsIGluIHRocmVhZGVkIFB5dGhvbi4KIAogLSBJc3N1ZSAjMjg0MzogQWRkIG5ldyBUayBBUEkgdG8gVGtpbnRlci4KQEAgLTE4NDgsMTAgKzE4NTgsNiBAQAogICBvbiBQT1NJWCBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5CiAgIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KIAotLSBJc3N1ZSAjMTM0NTI6IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKCkgZG9lc24ndCBzdXBwb3J0IGVycm9yIGhhbmRsZXJzCi0gIGRpZmZlcmVudCB0aGFuICJzdHJpY3QiIGFueW1vcmUuIFRoZSBjYWxsZXIgd2FzIHVuYWJsZSB0byBjb21wdXRlIHRoZQotICBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyOiBpdCBkZXBlbmRzIG9uIHRoZSBlcnJvciBoYW5kbGVyLgotCiAtIFBFUCAzMTU1IC8gaXNzdWUgIzEzNDQ4OiBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgogCiAtIElzc3VlICMxMzQzNjogRml4IGEgYm9ndXMgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIEFTVCBvYmplY3Qgd2FzIHBhc3NlZApAQCAtMTk0MiwxMCArMTk0OCw2IEBACiAKIC0gUEVQIDMxNTEgLyBpc3N1ZSAjMTI1NTU6IHJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkuCiAKLS0gSXNzdWUgIzEzNTYwOiBBZGQgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgpLCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpCi0gIGFuZCBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKCkgZnVuY3Rpb25zIHRvIHRoZSBDIEFQSSB0byBkZWNvZGUvZW5jb2RlIGZyb20vdG8KLSAgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgotCiAtIEFkZCBpbnRlcm5hbCBBUEkgZm9yIHN0YXRpYyBzdHJpbmdzIChfUHlfaWRlbnRpZmllciBldCBhbC4pLgogCiAtIElzc3VlICMxMzA2MzogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfTk9fREFUQSAobnVtYmVyZWQgMjMyIGFuZCBkZXNjcmliZWQKQEAgLTIwMjgsNyArMjAzMCw3IEBACiAgIGRlYWxsb2NhdG9yIGNhbGxzIG9uZSBvZiB0aGUgbWV0aG9kcyBvbiB0aGUgdHlwZSAoZS5nLiB3aGVuIHN1YmNsYXNzaW5nCiAgIElPQmFzZSkuICBEaWFnbm9zaXMgYW5kIHBhdGNoIGJ5IERhdmlkZSBSaXp6by4KIAotLSBJc3N1ZSAjOTYxMSwgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgorLSBJc3N1ZSAjOTYxMSwgSXNzdWUgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgogCiAtIElzc3VlICM5NjQyOiBVbmlmb3JtaXplIHRoZSB0ZXN0cyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBtYmNzIGNvZGVjLCBhZGQKICAgYSBuZXcgSEFWRV9NQkNTIGRlZmluZS4KQEAgLTIxOTEsMTcgKzIxOTMsMTEgQEAKICAgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGFuZCBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsICJ1dGYtOCIsCiAgIE5VTEwpLgogCi0tIElzc3VlICMxMDgzMTogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBzdXBwb3J0cyAlbGksICVsbGkgYW5kICV6aSBmb3JtYXRzLgotCiAtIElzc3VlICMxMDgyOTogUmVmYWN0b3IgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSwgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIHRvIHBhcnNlCiAgIHRoZSBmb3JtYXQgc3RyaW5nIGluIHRoZSAzIHN0ZXBzLCBmaXggY3Jhc2hzIG9uIGludmFsaWQgZm9ybWF0IHN0cmluZ3MuCiAKIC0gSXNzdWUgIzEzMDA3OiB3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KIAotLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KLSAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KLSAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCi0KIC0gSXNzdWUgIzExMjg2OiBSYWlzZSBhIFZhbHVlRXJyb3IgZnJvbSBjYWxsaW5nIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyIHdpdGgKICAgYSBidWZmZXIgc3RydWN0IGhhdmluZyBhIE5VTEwgZGF0YSBwb2ludGVyLgogCkBAIC0yMjExLDkgKzIyMDcsNiBAQAogLSBJc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIG5vdyBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KICAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCiAKLS0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KLSAgbmFycm93IGJ1aWxkLgotCiAtIElzc3VlICMxMTE2ODogUmVtb3ZlIGZpbGVuYW1lIGRlYnVnIHZhcmlhYmxlIGZyb20gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCiAgIEl0IGVuY29kZWQgdGhlIFVuaWNvZGUgZmlsZW5hbWUgdG8gVVRGLTgsIGJ1dCB0aGUgZW5jb2RpbmcgZmFpbHMgb24KICAgdW5kZWNvZGFibGUgZmlsZW5hbWUgKG9uIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzKSB3aGljaCByYWlzZXMgYW4gdW5leHBlY3RlZApAQCAtMjI1NSwxNSArMjI0OCw5IEBACiAgIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgogICBPKG4pLgogCi0tIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KLSAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgotCiAtIElzc3VlICMxMTg0MTogRml4IGNvbXBhcmlzb24gYnVnIHdpdGggJ3JjJyB2ZXJzaW9ucyBpbiBwYWNrYWdpbmcudmVyc2lvbi4KICAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KIAotLSBJc3N1ZSAjMTM0NDc6IEFkZCBhIHRlc3QgZmlsZSB0byBob3N0IHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGJ1Z3MgaW4gdGhlCi0gIHNjcmlwdHMgZm91bmQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4KLQogLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCiAgIG9uIFdpbmRvd3MuICBBbHNvIGZpeGVkIGluIHBhY2thZ2luZy4KIApAQCAtMjMxOSw5ICsyMzA2LDYgQEAKICAgYXV0aGVudGljYXRpbmcgKHNpbmNlIHRoZSByZXN1bHQgbWF5IGNoYW5nZSwgYWNjb3JkaW5nIHRvIFJGQyA0NjQzKS4KICAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCi0tIElzc3VlICMxMzk4OTogRG9jdW1lbnQgdGhhdCBHemlwRmlsZSBkb2VzIG5vdCBzdXBwb3J0IHRleHQgbW9kZSwgYW5kIGdpdmUgYQotICBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZSB3aGVuIG9wZW5lZCB3aXRoIGFuIGludmFsaWQgbW9kZSBzdHJpbmcuCi0KIC0gSXNzdWUgIzEzNTkwOiBPbiBPUyBYIDEwLjcgYW5kIDEwLjYgd2l0aCBYY29kZSA0LjIsIGJ1aWxkaW5nCiAgIERpc3R1dGlscy1iYXNlZCBwYWNrYWdlcyB3aXRoIEMgZXh0ZW5zaW9uIG1vZHVsZXMgbWF5IGZhaWwgYmVjYXVzZQogICBBcHBsZSBoYXMgcmVtb3ZlZCBnY2MtNC4yLCB0aGUgdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIHB5dGhvbi5vcmcKQEAgLTIzMzgsMTAgKzIzMjIsNiBAQAogLSBJc3N1ZSAjMTM5NjA6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBjb21tZW50cyB3aGVuCiAgIHN0cmljdD1GYWxzZS4KIAotLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKLSAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCi0gIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotCiAtIFdoZW4gJycgaXMgYSBwYXRoIChlLmcuIGluIHN5cy5wYXRoKSwgbWFrZSBzdXJlIF9fZmlsZV9fIHVzZXMgdGhlIGN1cnJlbnQKICAgd29ya2luZyBkaXJlY3RvcnkgaW5zdGVhZCBvZiAnJyBpbiBpbXBvcnRsaWIuCiAKQEAgLTIzNjMsMTEgKzIzNDMsNiBAQAogLSBJc3N1ZSAjMTA4MTE6IEZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywKICAgcmFpc2UgYSBQcm9ncmFtbWluZ0Vycm9yIG5vdy4KIAotLSBJc3N1ZSAjMTA4ODE6IEZpeCB0ZXN0X3NpdGUgZmFpbHVyZSB3aXRoIE9TIFggZnJhbWV3b3JrIGJ1aWxkcy4KLQotLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgotICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzEzNzM0OiBBZGQgb3MuZndhbGsoKSwgYSBkaXJlY3Rvcnkgd2Fsa2luZyBmdW5jdGlvbiB5aWVsZGluZyBmaWxlCiAgIGRlc2NyaXB0b3JzLgogCkBAIC0yMzc3LDE2ICsyMzUyLDggQEAKIAogLSBJc3N1ZSAjMTE4MDU6IHBhY2thZ2VfZGF0YSBpbiBzZXR1cC5jZmcgc2hvdWxkIGFsbG93IG1vcmUgdGhhbiBvbmUgdmFsdWUuCiAKLS0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAotICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKLQotLSBJc3N1ZSAjMTM5MDE6IFByZXZlbnQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZXMgb24gT1MgWCB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KLQogLSBJc3N1ZSAjMTM2NzY6IEhhbmRsZSBzdHJpbmdzIHdpdGggZW1iZWRkZWQgemVyb3MgY29ycmVjdGx5IGluIHNxbGl0ZTMuCiAKLS0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCi0gIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCi0KIC0gSXNzdWUgIzg4Mjg6IEFkZCBuZXcgZnVuY3Rpb24gb3MucmVwbGFjZSgpLCBmb3IgY3Jvc3MtcGxhdGZvcm0gcmVuYW1pbmcKICAgd2l0aCBvdmVyd3JpdGluZy4KIApAQCAtMjQwNywxMiArMjM3NCw2IEBACiAgIE9TRXJyb3IgaWYgbG9jYWx0aW1lKCkgZmFpbGVkLiB0aW1lLmNsb2NrKCkgbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKICAgcHJvY2Vzc29yIHRpbWUgdXNlZCBpcyBub3QgYXZhaWxhYmxlIG9yIGl0cyB2YWx1ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQKIAotLSBJc3N1ZSAjMTM4NjI6IEZpeCBzcHVyaW91cyBmYWlsdXJlIGluIHRlc3RfemxpYiBkdWUgdG8gcnVudGltZS9jb21waWxlIHRpbWUKLSAgbWlub3IgdmVyc2lvbnMgbm90IG1hdGNoaW5nLgotCi0tIElzc3VlICMxMjgwNDogRml4IHRlc3Rfc29ja2V0IGFuZCB0ZXN0X3VybGxpYjJuZXQgZmFpbHVyZXMgd2hlbiBydW5uaW5nIHRlc3RzCi0gIG9uIGEgc3lzdGVtIHdpdGhvdXQgaW50ZXJuZXQgYWNjZXNzLgotCiAtIElzc3VlICMxMzc3MjogSW4gb3Muc3ltbGluaygpIHVuZGVyIFdpbmRvd3MsIGRvIG5vdCB0cnkgdG8gZ3Vlc3MgdGhlIGxpbmsKICAgdGFyZ2V0J3MgdHlwZSAoZmlsZSBvciBkaXJlY3RvcnkpLiAgVGhlIGRldGVjdGlvbiB3YXMgYnVnZ3kgYW5kIG1hZGUgdGhlCiAgIGNhbGwgbm9uLWF0b21pYyAodGhlcmVmb3JlIHByb25lIHRvIHJhY2UgY29uZGl0aW9ucykuCkBAIC0yNDM5LDkgKzI0MDAsNiBAQAogLSBJc3N1ZSAjMTM2NDI6IFVucXVvdGUgYmVmb3JlIGI2NGVuY29kaW5nIHVzZXI6cGFzc3dvcmQgZHVyaW5nIEJhc2ljCiAgIEF1dGhlbnRpY2F0aW9uLiBQYXRjaCBjb250cmlidXRlZCBieSBKb29uYXMgS3VvcmlsZWh0by4KIAotLSBJc3N1ZSAjMTM3MjY6IEZpeCB0aGUgYW1iaWd1b3VzIC1TIGZsYWcgaW4gcmVncnRlc3QuIEl0IGlzIC1vLy0tc2xvdyBmb3Igc2xvdwotICB0ZXN0cy4KLQogLSBJc3N1ZSAjMTIzNjQ6IEZpeCBhIGhhbmcgaW4gY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IuCiAgIFRoZSBoYW5nIHdvdWxkIG9jY3VyIHdoZW4gcmV0cmlldmluZyB0aGUgcmVzdWx0IG9mIGEgc2NoZWR1bGVkIGZ1dHVyZSBhZnRlcgogICB0aGUgZXhlY3V0b3IgaGFkIGJlZW4gc2h1dCBkb3duLgpAQCAtMjUyNCwxMCArMjQ4Miw2IEBACiAtIElzc3VlICMxMzU5MTogQSBidWcgaW4gaW1wb3J0bGliIGhhcyBiZWVuIGZpeGVkIHRoYXQgY2F1c2VkIGltcG9ydF9tb2R1bGUKICAgdG8gbG9hZCBhIG1vZHVsZSB0d2ljZS4KIAotLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCi0gIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFJvZ2VyIFNlcnd5LgotCiAtIElzc3VlICMxMzQ0OSBzY2hlZC5zY2hlZHVsZXIucnVuKCkgbWV0aG9kIGhhcyBhIG5ldyAiYmxvY2tpbmciIHBhcmFtZXRlciB3aGljaAogICB3aGVuIHNldCB0byBGYWxzZSBtYWtlcyBydW4oKSBleGVjdXRlIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0byBleHBpcmUKICAgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4uICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2zDoC4KQEAgLTI1NDQsMTIgKzI0OTgsOSBAQAogICAnaW1wb3J0bGliLmFiYy5QeVB5Y0xvYWRlcicsICdubnRwbGliLk5OVFAueGd0aXRsZScsICdubnRwbGliLk5OVFAueHBhdGgnLAogICBhbmQgcHJpdmF0ZSBhdHRyaWJ1dGVzIG9mICdzbXRwZC5TTVRQQ2hhbm5lbCcuCiAKLS0gSXNzdWUgIzU5MDUsICMxMzU2MDogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgY3VycmVudCBsb2NhbGUKKy0gSXNzdWUgIzU5MDUsIElzc3VlICMxMzU2MDogdGltZS5zdHJmdGltZSgpIGlzIG5vdyB1c2luZyB0aGUgY3VycmVudCBsb2NhbGUKICAgZW5jb2RpbmcsIGluc3RlYWQgb2YgVVRGLTgsIGlmIHRoZSB3Y3NmdGltZSgpIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUuCiAKLS0gSXNzdWUgIzg2NDE6IFVwZGF0ZSBJRExFIDMgc3ludGF4IGNvbG9yaW5nIHRvIHJlY29nbml6ZSBiIi4uIiBhbmQgbm90IHUiLi4iLgotICBQYXRjaCBieSBUYWwgRWluYXQuCi0KIC0gSXNzdWUgIzEzNDY0OiBBZGQgYSByZWFkaW50bygpIG1ldGhvZCB0byBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UuICBQYXRjaAogICBieSBKb24gS3Vobi4KIApAQCAtMjY2MSw5ICsyNjEyLDYgQEAKIC0gSXNzdWUgIzEwODE3OiBGaXggdXJscmV0cmlldmUgZnVuY3Rpb24gdG8gcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IgZXZlbgogICB3aGVuIHJlcG9ydGhvb2sgaXMgTm9uZS4gUGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KIAotLSBJc3N1ZSAjMTMyOTY6IEZpeCBJRExFIHRvIGNsZWFyIGNvbXBpbGUgX19mdXR1cmVfXyBmbGFncyBvbiBzaGVsbCByZXN0YXJ0LgotICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCi0KIC0gRml4IHRoZSB4bWxycGMuY2xpZW50IHVzZXIgYWdlbnQgdG8gcmV0dXJuIHNvbWV0aGluZyBzaW1pbGFyIHRvCiAgIHVybGxpYi5yZXF1ZXN0IHVzZXIgYWdlbnQ6ICJQeXRob24teG1scnBjLzMuMyIuCiAKQEAgLTI3NjYsMTAgKzI3MTQsNiBAQAogLSBJc3N1ZSAjMTMwMzQ6IFdoZW4gZGVjb2Rpbmcgc29tZSBTU0wgY2VydGlmaWNhdGVzLCB0aGUgc3ViamVjdEFsdE5hbWUKICAgZXh0ZW5zaW9uIGNvdWxkIGJlIHVucmVwb3J0ZWQuCiAKLS0gSXNzdWUgIzk4NzE6IFByZXZlbnQgSURMRSAzIGNyYXNoIHdoZW4gZ2l2ZW4gYnl0ZSBzdGluZ3MKLSAgd2l0aCBpbnZhbGlkIGhleCBlc2NhcGUgc2VxdWVuY2VzLCBsaWtlIGInXHgwJy4KLSAgKE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4pCi0KIC0gSXNzdWUgIzEyMzA2OiBFeHBvc2UgdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgemxpYiBDIGxpYnJhcnkgYXMgYSBjb25zdGFudCwKICAgWkxJQl9SVU5USU1FX1ZFUlNJT04sIGluIHRoZSB6bGliIG1vZHVsZS4gUGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgogCkBAIC0yNzk4LDggKzI3NDIsNiBAQAogCiAtIElzc3VlICMxMjg3ODogRXhwb3NlIGEgX19kaWN0X18gYXR0cmlidXRlIG9uIGlvLklPQmFzZSBhbmQgaXRzIHN1YmNsYXNzZXMuCiAKLS0gSXNzdWUgIzEyNjM2OiBJRExFIHJlYWRzIHRoZSBjb2RpbmcgY29va2llIHdoZW4gZXhlY3V0aW5nIGEgUHl0aG9uIHNjcmlwdC4KLQogLSBJc3N1ZSAjMTI0OTQ6IE9uIGVycm9yLCBjYWxsKCksIGNoZWNrX2NhbGwoKSwgY2hlY2tfb3V0cHV0KCkgYW5kCiAgIGdldHN0YXR1c291dHB1dCgpIGZ1bmN0aW9ucyBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGtpbGwgdGhlIHByb2Nlc3MsCiAgIHJlYWQgaXRzIHN0YXR1cyAodG8gYXZvaWQgem9tYmlzKSBhbmQgY2xvc2UgcGlwZXMuCkBAIC0yODY5LDkgKzI4MTEsNiBAQAogCiAtIElzc3VlICMxMDA4NzogRml4IHRoZSBodG1sIG91dHB1dCBmb3JtYXQgb2YgdGhlIGNhbGVuZGFyIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTI1NDA6IFByZXZlbnQgem9tYmllIElETEUgcHJvY2Vzc2VzIG9uIFdpbmRvd3MgZHVlIHRvIGNoYW5nZXMKLSAgaW4gb3Mua2lsbCgpLgotCiAtIElzc3VlICMxMzEyMTogYWRkIHN1cHBvcnQgZm9yIGlucGxhY2UgbWF0aCBvcGVyYXRvcnMgdG8gY29sbGVjdGlvbnMuQ291bnRlci4KIAogLSBBZGQgc3VwcG9ydCBmb3IgdW5hcnkgcGx1cyBhbmQgdW5hcnkgbWludXMgdG8gY29sbGVjdGlvbnMuQ291bnRlci4KQEAgLTI5MDMsNyArMjg0Miw3IEBACiAgIENvbmRpdGlvbiwgZXRjLikgdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIGhpZGRlbgogICBjbGFzc2VzIChfRXZlbnQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcwogICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUKLSAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCisgIHRvIGluaGVyaXQgZnJvbSB0aGVzZSBjbGFzc2VzLCB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlIHByaXZhdGUKICAgdW5kZXJzY29yZWQgbmFtZXMgbGlrZSBtdWx0aXByb2Nlc3NpbmcgZGlkLgogCiAtIElzc3VlICM5NzIzOiBBZGQgc2hsZXgucXVvdGUgZnVuY3Rpb25zLCB0byBlc2NhcGUgZmlsZW5hbWVzIGFuZCBjb21tYW5kCkBAIC0yOTE3LDE0ICsyODU2LDggQEAKIC0gSXNzdWUgIzEyNjA3OiBJbiBzdWJwcm9jZXNzLCBmaXggaXNzdWUgd2hlcmUgaWYgc3RkaW4sIHN0ZG91dCBvciBzdGRlcnIgaXMKICAgZ2l2ZW4gYXMgYSBsb3cgZmQsIGl0IGdldHMgb3ZlcndyaXR0ZW4uCiAKLS0gSXNzdWUgIzEyNTkwOiBJRExFIGVkaXRvciB3aW5kb3cgbm93IGFsd2F5cyBkaXNwbGF5cyB0aGUgZmlyc3QgbGluZQotICB3aGVuIG9wZW5pbmcgYSBsb25nIGZpbGUuICBXaXRoIFRrIDguNSwgdGhlIGZpcnN0IGxpbmUgd2FzIGhpZGRlbi4KLQogLSBJc3N1ZSAjMTI1NzY6IEZpeCB1cmxvcGVuIGJlaGF2aW9yIG9uIHNpdGVzIHdoaWNoIGRvIG5vdCBzZW5kIChvciBvYmZ1c2NhdGVzKQotICBDb25uZWN0aW9uOmNsb3NlIGhlYWRlci4KLQotLSBJc3N1ZSAjMTIxMDI6IERvY3VtZW50IHRoYXQgYnVmZmVyZWQgZmlsZXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBiZWluZyB1c2VkCi0gIHdpdGggbW1hcC4gUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KKyAgYGBDb25uZWN0aW9uOiBjbG9zZWBgIGhlYWRlci4KIAogLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCiAKQEAgLTMxNzksNyArMzExMiw3IEBACiAtIElzc3VlICMxMjE3NTogRmlsZUlPLnJlYWRhbGwoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpbnN0ZWFkIG9mIGFuIElPRXJyb3IKICAgaWYgdGhlIGZpbGUgaXMgY2xvc2VkLgogCi0tIElzc3VlICMxMTEwOTogTmV3IHNlcnZpY2VfYWN0aW9uIG1ldGhvZCBmb3IgQmFzZVNlcnZlciwgdXNlZCBieSBGb3JraW5nTWl4SW4KKy0gSXNzdWUgIzExMTA5OiBOZXcgc2VydmljZV9hY3Rpb24gbWV0aG9kIGZvciBCYXNlU2VydmVyLCB1c2VkIGJ5IEZvcmtpbmdNaXhpbgogICBjbGFzcyBmb3IgY2xlYW51cC4gSW5pdGlhbCBQYXRjaCBieSBKdXN0aW4gV2Fya2VudGluLgogCiAtIElzc3VlICMxMjA0NTogQXZvaWQgZHVwbGljYXRlIGV4ZWN1dGlvbiBvZiBjb21tYW5kIGluCkBAIC0zMjI0LDkgKzMxNTcsNiBAQAogICBwYXNzaW5nIGEgYGBjb250ZXh0YGAgYXJndW1lbnQgcG9pbnRpbmcgdG8gYW4gc3NsLlNTTENvbnRleHQgaW5zdGFuY2UuCiAgIFBhdGNoIGJ5IEthc3VuIEhlcmF0aC4KIAotLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCi0gIHdpdGggVGsgOC41LgotCiAtIElzc3VlICM5NTE2OiBJc3N1ZSAjOTUxNjogYXZvaWQgZXJyb3JzIGluIHN5c2NvbmZpZyB3aGVuIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAogICBpcyBzZXQgaW4gc2hlbGwuCiAKQEAgLTMyNDYsMTAgKzMxNzYsNiBAQAogLSBJc3N1ZSAjOTk3MTogV3JpdGUgYW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIEJ1ZmZlcmVkUmVhZGVyLnJlYWRpbnRvKCkuCiAgIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCiAKLS0gSXNzdWUgIzEwMjg6IFRrIHJldHVybnMgaW52YWxpZCBVbmljb2RlIG51bGwgaW4gJUE6IFVuaWNvZGVEZWNvZGVFcnJvci4KLSAgV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZAotICBJRExFIHRvIGV4aXQuICBDb252ZXJ0ZWQgdG8gdmFsaWQgVW5pY29kZSBudWxsIGluIFB5dGhvbkNtZCgpLgotCiAtIElzc3VlICMxMTc5OTogdXJsbGliLnJlcXVlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlcnMgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IKICAgd2hlbiBwcmVzZW50ZWQgd2l0aCBhbiB1bnN1cHBvcnRlZCBBdXRoZW50aWNhdGlvbiBTY2hlbWUuIFBhdGNoIGNvbnRyaWJ1dGVkCiAgIGJ5IFl1dmFsIEdyZWVuZmllbGQuCkBAIC0zNDg2LDEyICszNDEyLDEyIEBACiAKIC0gSXNzdWUgIzc2Mzk6IEZpeCBzaG9ydCBmaWxlIG5hbWUgZ2VuZXJhdGlvbiBpbiBiZGlzdF9tc2kKIAotLSBJc3N1ZSAjMTE2NTk6IEZpeCBSZXNvdXJjZVdhcm5pbmcgaW4gdGVzdF9zdWJwcm9jZXNzIGludHJvZHVjZWQgYnkgIzExNDU5LgotICBQYXRjaCBieSBCZW4gSGF5ZGVuLgotCiAtIElzc3VlICMxMTYzNTogRG9uJ3QgdXNlIHBvbGxpbmcgaW4gd29ya2VyIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBsYXVuY2hlZCBieQogICBjb25jdXJyZW50LmZ1dHVyZXMuCiAKKy0gSXNzdWUgIzU4NDU6IEF1dG9tYXRpY2FsbHkgcmVhZCByZWFkbGluZSBjb25maWd1cmF0aW9uIHRvIGVuYWJsZSBjb21wbGV0aW9uCisgIGluIGludGVyYWN0aXZlIG1vZGUuCisKIC0gSXNzdWUgIzY4MTE6IEFsbG93IGltcG9ydGxpYiB0byBjaGFuZ2UgYSBjb2RlIG9iamVjdCdzIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZQogICB0byBtYXRjaCB0aGUgcGF0aCB0byB3aGVyZSB0aGUgc291cmNlIGNvZGUgY3VycmVudGx5IGlzLCBub3Qgd2hlcmUgdGhlIGNvZGUKICAgb2JqZWN0IG9yaWdpbmFsbHkgY2FtZSBmcm9tLgpAQCAtMzUyNiw3ICszNDUyLDcgQEAKIAogLSBJc3N1ZSAjMTExMjc6IFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBhIHNvY2tldCBvYmplY3QuCiAKLS0gSXNzdWUgIzExNTYzOiBDb25uZWN0aW9uOmNsb3NlIGhlYWRlciBpcyBzZW50IGJ5IHJlcXVlc3RzIHVzaW5nIFVSTE9wZW5lcgorLSBJc3N1ZSAjMTE1NjM6IGBgQ29ubmVjdGlvbjogY2xvc2VgYCBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKICAgY2xhc3Mgd2hpY2ggaGVscHMgaW4gY2xvc2luZyBvZiBzb2NrZXRzIGFmdGVyIGNvbm5lY3Rpb24gaXMgb3Zlci4gUGF0Y2gKICAgY29udHJpYnV0aW9ucyBieSBKZWZmIE1jTmVpbCBhbmQgTmFkZWVtIFZhd2RhLgogCkBAIC0zNTQxLDggKzM0NjcsNiBAQAogLSBJc3N1ZSAjMTA5Nzk6IHVuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZQogICBzZXR1cCBhbmQgdGVhcmRvd24uCiAKLS0gSXNzdWUgIzExNTc3OiBmaXggUmVzb3VyY2VXYXJuaW5nIHRyaWdnZXJlZCBieSBpbXByb3ZlZCBiaW5oZXggdGVzdCBjb3ZlcmFnZQotCiAtIElzc3VlICMxMTI0MzogZml4IHRoZSBwYXJhbWV0ZXIgcXVlcnlpbmcgbWV0aG9kcyBvZiBNZXNzYWdlIHRvIHdvcmsgaWYKICAgdGhlIGhlYWRlcnMgY29udGFpbiB1bi1lbmNvZGVkIG5vbi1BU0NJSSBkYXRhLgogCkBAIC0zNTc1LDkgKzM0OTksNiBAQAogLSBJc3N1ZSAjMTE1NTQ6IEZpeGVkIHN1cHBvcnQgZm9yIEphcGFuZXNlIGNvZGVjczsgcHJldmlvdXNseSB0aGUgYm9keSBvdXRwdXQKICAgZW5jb2Rpbmcgd2FzIG5vdCBkb25lIGlmIGV1Yy1qcCBvciBzaGlmdC1qaXMgd2FzIHNwZWNpZmllZCBhcyB0aGUgY2hhcnNldC4KIAotLSBJc3N1ZSAjMTE1MDk6IFNpZ25pZmljYW50bHkgaW5jcmVhc2UgdGVzdCBjb3ZlcmFnZSBvZiBmaWxlaW5wdXQuCi0gIFBhdGNoIGJ5IERlbnZlciBDb25leWJlYXJlIGF0IFB5Q29uIDIwMTEgU3ByaW50cy4KLQogLSBJc3N1ZSAjMTE0MDc6IGBUZXN0Q2FzZS5ydW5gIHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3QgdXNlZCBvciBjcmVhdGVkLgogICBDb250cmlidXRlZCBieSBKYW5hdGhhbiBIYXJ0bGV5LgogCkBAIC0zNzAwLDExICszNjIxLDYgQEAKIAogLSBJc3N1ZSAjOTM0ODogUmFpc2UgYW4gZWFybHkgZXJyb3IgaWYgYXJncGFyc2UgbmFyZ3MgYW5kIG1ldGF2YXIgZG9uJ3QgbWF0Y2guCiAKLS0gSXNzdWUgIzg5ODI6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgotCi0tIElzc3VlICM5MzQzOiBEb2N1bWVudCB0aGF0IGFyZ3BhcnNlIHBhcmVudCBwYXJzZXJzIG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKLSAgdGhlaXIgY2hpbGRyZW4uCi0KIC0gSXNzdWUgIzkwMjY6IEZpeCBvcmRlciBvZiBhcmdwYXJzZSBzdWItY29tbWFuZHMgaW4gaGVscCBtZXNzYWdlcy4KIAogLSBJc3N1ZSAjOTM0NzogRml4IGZvcm1hdHRpbmcgZm9yIHR1cGxlcyBpbiBhcmdwYXJzZSB0eXBlPSBlcnJvciBtZXNzYWdlcy4KQEAgLTM3NTcsMTAgKzM2NzMsNjEgQEAKIAogLSBJc3N1ZSAjMTE0OTU6IE9TRiBzdXBwb3J0IGlzIGVsaW1pbmF0ZWQuIEl0IHdhcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIuCiAKLQogSURMRQogLS0tLQogCistIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdworICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCisgIGhhcyB0byB1c2UgdGhlIGJ1aWx0LWluIGRlZmF1bHQga2V5IGJpbmRpbmdzLgorICBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgorCistIElETEUgY2FuIGJlIGxhdW5jaGVkIGFzIHB5dGhvbiAtbSBpZGxlbGliCisKKy0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKKyAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQorCistIElzc3VlICMxNDIwMDogSURMRSBzaGVsbCBjcmFzaCBvbiBwcmludGluZyBub24tQk1QIHVuaWNvZGUgY2hhcmFjdGVyLgorCistIElzc3VlICM1MjE5OiBQcmV2ZW50IGV2ZW50IGhhbmRsZXIgY2FzY2FkZSBpbiBJRExFLgorCistIElzc3VlICM5NjQ0Mzc6IE1ha2UgSURMRSBoZWxwIHdpbmRvdyBub24tbW9kYWwuCisgIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvIGFuZCBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMTM5MzM6IElETEUgYXV0by1jb21wbGV0ZSBkaWQgbm90IHdvcmsgd2l0aCBzb21lIGltcG9ydGVkCisgIG1vZHVsZSwgbGlrZSBoYXNobGliLiAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQorCistIElzc3VlICMxMzUwNjogQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgorICBPcmlnaW5hbCBwYXRjaGVzIGJ5IE1hcmNvIFNjYXRhZ2xpbmkgYW5kIFJvZ2VyIFNlcnd5LgorCistIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludCBmaWxlcywKKyAgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgUm9nZXIgU2Vyd3kuCisKKy0gSXNzdWUgIzg2NDE6IFVwZGF0ZSBJRExFIDMgc3ludGF4IGNvbG9yaW5nIHRvIHJlY29nbml6ZSBiIi4uIiBhbmQgbm90IHUiLi4iLgorICBQYXRjaCBieSBUYWwgRWluYXQuCisKKy0gSXNzdWUgIzEzMjk2OiBGaXggSURMRSB0byBjbGVhciBjb21waWxlIF9fZnV0dXJlX18gZmxhZ3Mgb24gc2hlbGwgcmVzdGFydC4KKyAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQorCistIElzc3VlICM5ODcxOiBQcmV2ZW50IElETEUgMyBjcmFzaCB3aGVuIGdpdmVuIGJ5dGUgc3RpbmdzCisgIHdpdGggaW52YWxpZCBoZXggZXNjYXBlIHNlcXVlbmNlcywgbGlrZSBiJ1x4MCcuCisgIChPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuKQorCistIElzc3VlICMxMjYzNjogSURMRSByZWFkcyB0aGUgY29kaW5nIGNvb2tpZSB3aGVuIGV4ZWN1dGluZyBhIFB5dGhvbiBzY3JpcHQuCisKKy0gSXNzdWUgIzEyNTQwOiBQcmV2ZW50IHpvbWJpZSBJRExFIHByb2Nlc3NlcyBvbiBXaW5kb3dzIGR1ZSB0byBjaGFuZ2VzCisgIGluIG9zLmtpbGwoKS4KKworLSBJc3N1ZSAjMTI1OTA6IElETEUgZWRpdG9yIHdpbmRvdyBub3cgYWx3YXlzIGRpc3BsYXlzIHRoZSBmaXJzdCBsaW5lCisgIHdoZW4gb3BlbmluZyBhIGxvbmcgZmlsZS4gIFdpdGggVGsgOC41LCB0aGUgZmlyc3QgbGluZSB3YXMgaGlkZGVuLgorCistIElzc3VlICMxMTA4ODogZG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBGNSB0byBydW4gYSBzY3JpcHQgaW4gSURMRSBvbiBNYWNPU1gKKyAgd2l0aCBUayA4LjUuCisKKy0gSXNzdWUgIzEwMjg6IFRrIHJldHVybnMgaW52YWxpZCBVbmljb2RlIG51bGwgaW4gJUE6IFVuaWNvZGVEZWNvZGVFcnJvci4KKyAgV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZAorICBJRExFIHRvIGV4aXQuICBDb252ZXJ0ZWQgdG8gdmFsaWQgVW5pY29kZSBudWxsIGluIFB5dGhvbkNtZCgpLgorCiAtIElzc3VlICMxMTcxODogSURMRSdzIG9wZW4gbW9kdWxlIGRpYWxvZyBjb3VsZG4ndCBmaW5kIHRoZSBfX2luaXRfXy5weQogICBmaWxlIGluIGEgcGFja2FnZS4KIApAQCAtMzc5MCw2ICszNzU3LDEwIEBACiBFeHRlbnNpb24gTW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTY4NDc6IEZpeGVkIGltcHJvcGVyIHVzZSBvZiBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKSBpbgorICBub24tcHlkZWJ1ZyBidWlsZHMuIFNldmVyYWwgZXh0ZW5zaW9uIG1vZHVsZXMgbm93IGNvbXBpbGUgY2xlYW5seSB3aGVuCisgIGFzc2VydCgpcyBhcmUgZW5hYmxlZCBpbiBzdGFuZGFyZCBidWlsZHMgKC1EREVCVUcgZmxhZykuCisKIC0gSXNzdWUgIzEzODQwOiBUaGUgZXJyb3IgbWVzc2FnZSBwcm9kdWNlZCBieSBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIKICAgd2hlbiBnaXZlbiBhIFVuaWNvZGUgc3RyaW5nIGhhcyBiZWVuIGZpeGVkLgogCkBAIC0zODUyLDYgKzM4MjMsMzMgQEAKIFRlc3RzCiAtLS0tLQogCistIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KKyAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgorCistIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKKyAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgorCistIElzc3VlICMxMDg4MTogRml4IHRlc3Rfc2l0ZSBmYWlsdXJlIHdpdGggT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgorCistIElzc3VlICMxMzkwMTogUHJldmVudCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlcyBvbiBPUyBYIHdpdGggLS1lbmFibGUtc2hhcmVkLgorCistIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQorICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCisKKy0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCisKKy0gSXNzdWUgIzEzNzI2OiBGaXggdGhlIGFtYmlndW91cyAtUyBmbGFnIGluIHJlZ3J0ZXN0LiBJdCBpcyAtby8tLXNsb3cgZm9yIHNsb3cKKyAgdGVzdHMuCisKKy0gSXNzdWUgIzExNjU5OiBGaXggUmVzb3VyY2VXYXJuaW5nIGluIHRlc3Rfc3VicHJvY2VzcyBpbnRyb2R1Y2VkIGJ5ICMxMTQ1OS4KKyAgUGF0Y2ggYnkgQmVuIEhheWRlbi4KKworLSBJc3N1ZSAjMTE1Nzc6IGZpeCBSZXNvdXJjZVdhcm5pbmcgdHJpZ2dlcmVkIGJ5IGltcHJvdmVkIGJpbmhleCB0ZXN0IGNvdmVyYWdlCisKKy0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgorICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCisKIC0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdAogCiAtIElzc3VlICMxMzc4NjogUmVtb3ZlIHVuaW1wbGVtZW50ZWQgJ3RyYWNlJyBsb25nIG9wdGlvbiBmcm9tIHJlZ3J0ZXN0LnB5LgpAQCAtNDAzMCw3ICs0MDI4LDcgQEAKIC0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weS4gUGF0Y2ggYnkgQWxpY2lhCiAgIEFybGVuCiAKLS0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQorLSBJc3N1ZSAjMTE0OTA6IHRlc3Rfc3VicHJvY2Vzcy50ZXN0X2xlYWtpbmdfZmRzX29uX2Vycm9yIG5vIGxvbmdlciBnaXZlcyBhCiAgIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBsYXN0IGRpcmVjdG9yeSBpbiB0aGUgcGF0aCBpcyBpbmFjY2Vzc2libGUuCiAKIC0gSXNzdWUgIzExMjIzOiBGaXggdGVzdF90aHJlYWRzaWduYWxzIHRvIGZhaWwsIG5vdCBoYW5nLCB3aGVuIHRoZQpAQCAtNDA1NCw2ICs0MDUyLDIzIEBACiBDLUFQSQogLS0tLS0KIAorLSBJc3N1ZSAjMTM0NTI6IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKCkgZG9lc24ndCBzdXBwb3J0IGVycm9yIGhhbmRsZXJzCisgIGRpZmZlcmVudCB0aGFuICJzdHJpY3QiIGFueW1vcmUuIFRoZSBjYWxsZXIgd2FzIHVuYWJsZSB0byBjb21wdXRlIHRoZQorICBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyOiBpdCBkZXBlbmRzIG9uIHRoZSBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICMxMzU2MDogQWRkIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoKSwgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKQorICBhbmQgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9ucyB0byB0aGUgQyBBUEkgdG8gZGVjb2RlL2VuY29kZSBmcm9tL3RvCisgIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KKworLSBJc3N1ZSAjMTA4MzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkgc3VwcG9ydHMgJWxpLCAlbGxpIGFuZCAlemkgZm9ybWF0cy4KKworLSBJc3N1ZSAjMTEyNDY6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVYiKSB0byBkZWNvZGUgdGhlIGJ5dGUgc3RyaW5nIGZyb20KKyAgVVRGLTggKHdpdGggcmVwbGFjZSBlcnJvciBoYW5kbGVyKSBpbnN0ZWFkIG9mIElTTy04ODU5LTEgKGluIHN0cmljdCBtb2RlKS4KKyAgUGF0Y2ggd3JpdHRlbiBieSBSYXkgQWxsZW4uCisKKy0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KKyAgbmFycm93IGJ1aWxkLgorCiAtIEFkZCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCBhbmQgUHlPYmplY3RfR2VuZXJpU2V0RGljdC4gVGhleSBhcmUgZ2VuZXJpYwogICBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBnZXR0ZXIgYW5kIHNldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yIG9mIEMKICAgdHlwZXMuCkBAIC00MDc5LDYgKzQwOTQsMjQgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTM5ODk6IERvY3VtZW50IHRoYXQgR3ppcEZpbGUgZG9lcyBub3Qgc3VwcG9ydCB0ZXh0IG1vZGUsIGFuZCBnaXZlIGEKKyAgbW9yZSBoZWxwZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiBvcGVuZWQgd2l0aCBhbiBpbnZhbGlkIG1vZGUgc3RyaW5nLgorCistIElzc3VlICMxMzkyMTogVW5kb2N1bWVudCBhbmQgY2xlYW4gdXAgc3FsaXRlMy5PcHRpbWl6ZWRVbmljb2RlLAorICB3aGljaCBpcyBvYnNvbGV0ZSBpbiBQeXRob24gMy54LiBJdCdzIG5vdyBhbGlhc2VkIHRvIHN0ciBmb3IKKyAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCisKKy0gSXNzdWUgIzEyMTAyOiBEb2N1bWVudCB0aGF0IGJ1ZmZlcmVkIGZpbGVzIG11c3QgYmUgZmx1c2hlZCBiZWZvcmUgYmVpbmcgdXNlZAorICB3aXRoIG1tYXAuIFBhdGNoIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCisKKy0gSXNzdWUgIzg5ODI6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgorCistIElzc3VlICM5MzQzOiBEb2N1bWVudCB0aGF0IGFyZ3BhcnNlIHBhcmVudCBwYXJzZXJzIG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKKyAgdGhlaXIgY2hpbGRyZW4uCisKKy0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCisgIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCisKIC0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgogICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCiAKQEAgLTk2NTIsNyArOTY4NSw3IEBACiAKIC0gSXNzdWUgIzEyMTA6IEZpeGVkIGltYXBsaWIgYW5kIGl0cyBkb2N1bWVudGF0aW9uLgogCi0tIElzc3VlICM0MjMzOiBDaGFuZ2VkIHNlbWFudGljIG9mIGBgX2ZpbGVpby5GaWxlSU9gYCdzIGBgY2xvc2UoKWBgIAorLSBJc3N1ZSAjNDIzMzogQ2hhbmdlZCBzZW1hbnRpYyBvZiBgYF9maWxlaW8uRmlsZUlPYGAncyBgYGNsb3NlKClgYAogICBtZXRob2Qgb24gZmlsZSBvYmplY3RzIHdpdGggY2xvc2VmZD1GYWxzZS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBzdGlsbAogICBrZXB0IG9wZW4gYnV0IHRoZSBmaWxlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBjbG9zZWQgZmlsZS4gVGhlIGBgRmlsZUlPYGAKICAgb2JqZWN0IGFsc28gZ290IGEgbmV3IHJlYWRvbmx5IGF0dHJpYnV0ZSBgYGNsb3NlZmRgYC4KQEAgLTk3OTYsMTMgKzk4MjksMTMgQEAKICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbi4KIAogLSBJc3N1ZSAjMzY2ODogRml4IGEgbWVtb3J5IGxlYWsgd2l0aCB0aGUgInMqIiBhcmd1bWVudCBwYXJzZXIgaW4KLSAgUHlBcmdfUGFyc2VUdXBsZSBhbmQgZnJpZW5kcywgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgYXJndW1lbnQgZm9yICJzKiIgCisgIFB5QXJnX1BhcnNlVHVwbGUgYW5kIGZyaWVuZHMsIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIGFyZ3VtZW50IGZvciAicyoiCiAgIHdhcyBjb3JyZWN0bHkgcGFyc2VkIGJ1dCBwYXJzaW5nIG9mIHN1YnNlcXVlbnQgYXJndW1lbnRzIGZhaWxlZC4KIAogLSBJc3N1ZSAjMzYxMTogQW4gZXhjZXB0aW9uIF9fY29udGV4dF9fIGNvdWxkIGJlIGNsZWFyZWQgaW4gYSBjb21wbGV4IHBhdHRlcm4KICAgaW52b2x2aW5nIGEgX19kZWxfXyBtZXRob2QgcmUtcmFpc2luZyBhbiBleGNlcHRpb24uCiAKLS0gSXNzdWUgIzI1MzQ6IHNwZWVkIHVwIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpIGJ5IDUwLTcwJSwgc28gYXMgdG8gCistIElzc3VlICMyNTM0OiBzcGVlZCB1cCBpc2luc3RhbmNlKCkgYW5kIGlzc3ViY2xhc3MoKSBieSA1MC03MCUsIHNvIGFzIHRvCiAgIG1hdGNoIFB5dGhvbiAyLjUgc3BlZWQgZGVzcGl0ZSB0aGUgX19pbnN0YW5jZWNoZWNrX18gLyBfX3N1YmNsYXNzY2hlY2tfXwogICBtZWNoYW5pc20uIEluIHRoZSBwcm9jZXNzLCBmaXggYSBidWcgd2hlcmUgaXNpbnN0YW5jZSgpIGFuZCBpc3N1YmNsYXNzKCksCiAgIHdoZW4gZ2l2ZW4gYSB0dXBsZSBvZiBjbGFzc2VzIGFzIHNlY29uZCBhcmd1bWVudCwgd2VyZSBsb29raW5nIHVwCkBAIC05ODgwLDcgKzk5MTMsNyBAQAogCiAtIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgdGhlIGNhbWVsQ2FzZSB0aHJlYWRpbmcgQVBJIG5hbWVzIHdlcmUgcmVtb3ZlZC4KIAotLSBJc3N1ZSAjMzExMDogbXVsdGlwcm9jZXNzaW5nIGZhaWxzIHRvIGNvbXBpZWwgb24gc29sYXJpcyAxMCBkdWUgdG8gbWlzc2luZyAKKy0gSXNzdWUgIzMxMTA6IG11bHRpcHJvY2Vzc2luZyBmYWlscyB0byBjb21waWVsIG9uIHNvbGFyaXMgMTAgZHVlIHRvIG1pc3NpbmcKICAgU0VNX1ZBTFVFX01BWC4KIAogRXh0ZW5zaW9uIE1vZHVsZXMKQEAgLTIxNTEyLDcgKzIxNTQ1LDcgQEAKIAlCb3cgdG8gZm9udC1sb2NrIGF0IHRoZSBlbmQgb2YgdGhlIGRvY3N0cmluZywgc2luY2UgaXQgdGhyb3dzIHN0dWZmCiAJb2ZmLgogCi0JTWFrZSBzdXJlIHRoZSBwYXRoIHBhcmFtZXRlciB0byByZWFkbW9kdWxlKCkgaXMgYSBsaXN0IGJlZm9yZSBhZGRpbmcgaXQKKwlNYWtlIHN1cmUgdGhlIHBhdGggcGFyYW10ZXIgdG8gcmVhZG1vZHVsZSgpIGlzIGEgbGlzdCBiZWZvcmUgYWRkaW5nIGl0CiAJd2l0aCBzeXMucGF0aCwgb3IgdGhlIGFkZGl0aW9uIGNvdWxkIGZhaWwuCiAKIApAQCAtMjE1OTMsNyArMjE2MjYsNyBAQAogCiAtIEltcHJvdmVkIEJlT1Mgc3VwcG9ydC4KIAotLSBTdXBwb3J0IGR5bmFtaWMgbG9hZGluZyBvZiBzaGFyZWQgbGlicmFyaWVzIG9uIE5ldEJTRCBwbGF0Zm9ybXMgdGhhdCAKKy0gU3VwcG9ydCBkeW5hbWljIGxvYWRpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBOZXRCU0QgcGxhdGZvcm1zIHRoYXQKIHVzZSBFTEYgKGkuZS4sIE1JUFMgYW5kIEFscGhhIHN5c3RlbXMpLgogCiBDb25maWd1cmF0aW9uL2J1aWxkIGNoYW5nZXMKQEAgLTIxODEwLDcgKzIxODQzLDcgQEAKIGhpZ2hlci1sZXZlbCBjbGFzc2VzIGluIGNvZGUucHkuCiAKIC0gdHVydGxlLnB5IGlzIGEgbmV3IG1vZHVsZSBmb3Igc2ltcGxlIHR1cnRsZSBncmFwaGljcy4gIEknbSBzdGlsbAotd29ya2luZyBvbiBpdDsgbGV0IG1lIGtub3cgaWYgeW91IHVzZSB0aGlzIHRvIHRlYWNoIFB5dGhvbiB0byBjaGlsZHJlbiAKK3dvcmtpbmcgb24gaXQ7IGxldCBtZSBrbm93IGlmIHlvdSB1c2UgdGhpcyB0byB0ZWFjaCBQeXRob24gdG8gY2hpbGRyZW4KIG9yIG90aGVyIG5vdmljZXMgd2l0aG91dCBwcmlvciBwcm9ncmFtbWluZyBleHBlcmllbmNlLgogCiBPYnNvbGV0ZWQgbGlicmFyeSBtb2R1bGVzCkBAIC0yMTk0Miw3ICsyMTk3NSw3IEBACiBDaGFuZ2VzIHRvIHRvb2xzCiAtLS0tLS0tLS0tLS0tLS0tCiAKLS0gTmV3LCBpbXByb3ZlZCB2ZXJzaW9uIG9mIEJhcnJ5IFdhcnNhdydzIE1pc2MvcHl0aG9uLW1vZGUuZWwgKGVkaXRpbmcgCistIE5ldywgaW1wcm92ZWQgdmVyc2lvbiBvZiBCYXJyeSBXYXJzYXcncyBNaXNjL3B5dGhvbi1tb2RlLmVsIChlZGl0aW5nCiBzdXBwb3J0IGZvciBFbWFjcykuCiAKIC0gdGFibmFubnkucHk6IGFkZGVkIGEgLXEgKCdxdWlldCcpIG9wdGlvbiB0byB0YWJuYW5ueSwgd2hpY2ggY2F1c2VzCkBAIC0yMjIxNyw3ICsyMjI1MCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLQogCiAtIEluc3RhbGwgemxpYi5kbGwgaW4gdGhlIERMTHMgZGlyZWN0b3J5IGluc3RlYWQgb2YgaW4gdGhlIHdpbjMyCi1zeXN0ZW0gZGlyZWN0b3J5LCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBhcHBsaWNhdGlvbnMgdGhhdCBoYXZlIAorc3lzdGVtIGRpcmVjdG9yeSwgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgaGF2ZQogdGhlaXIgb3duIHpsaWIuZGxsLgogCiBUZXN0IFN1aXRlCkBAIC0yMjI5Nyw3ICsyMjMzMCw3IEBACiBzbyB0aGF0IGEgc3ltbGluayB0byBhIHN5bWxpbmsgY2FuIHdvcmsuCiAKIC0gQWRkZWQgYSBoYWNrIHNvIHRoYXQgd2hlbiB5b3UgdHlwZSAncXVpdCcgb3IgJ2V4aXQnIGF0IHRoZQotaW50ZXJwcmV0ZXIsIHlvdSBnZXQgYSBmcmllbmRseSBleHBsYW5hdGlvbiBvZiBob3cgdG8gcHJlc3MgQ3RybC1EIChvciAKK2ludGVycHJldGVyLCB5b3UgZ2V0IGEgZnJpZW5kbHkgZXhwbGFuYXRpb24gb2YgaG93IHRvIHByZXNzIEN0cmwtRCAob3IKIEN0cmwtWikgdG8gZXhpdC4KIAogLSBOZXcgYW5kIGltcHJvdmVkIE1pc2MvcHl0aG9uLW1vZGUuZWwgKFB5dGhvbiBtb2RlIGZvciBFbWFjcykuCkBAIC0yMjQ3MCwxMyArMjI1MDMsMTMgQEAKIHJhbmdlLiAgQWxzbywgcmFuZGludChhLCBiKSBpcyBub3cgcmVkZWZpbmVkIGFzIHJhbmRyYW5nZShhLCBiKzEpLAogYWRkaW5nIGV4dHJhIHJhbmdlIGFuZCB0eXBlIGNoZWNraW5nIHRvIGl0cyBhcmd1bWVudHMhCiAKLS0gQWRkIHNvbWUgc2VtaS10aHJlYWQtc2FmZXR5IHRvIHJhbmRvbS5nYXVzcygpIChpdCB1c2VkIHRvIGJlIGFibGUgdG8gCistIEFkZCBzb21lIHNlbWktdGhyZWFkLXNhZmV0eSB0byByYW5kb20uZ2F1c3MoKSAoaXQgdXNlZCB0byBiZSBhYmxlIHRvCiBjcmFzaCB3aGVuIGludm9rZWQgZnJvbSBzZXBhcmF0ZSB0aHJlYWRzOyBub3cgdGhlIHdvcnN0IGl0IGNhbiBkbyBpcwogZ2l2ZSBhIGR1cGxpY2F0ZSByZXN1bHQgb2NjYXNpb25hbGx5KS4KIAogLSBTb21lIHJlc3RydWN0dXJpbmcgYW5kIGdlbmVyYWxpemF0aW9uIGRvbmUgdG8gY21kLnB5LgogCi0tIE1ham9yIHVwZ3JhZGUgdG8gQ29uZmlnUGFyc2VyLnB5OyBjb252ZXJ0ZWQgdG8gdXNpbmcgJ3JlJywgYWRkZWQgbmV3IAorLSBNYWpvciB1cGdyYWRlIHRvIENvbmZpZ1BhcnNlci5weTsgY29udmVydGVkIHRvIHVzaW5nICdyZScsIGFkZGVkIG5ldwogZXhjZXB0aW9ucywgc3VwcG9ydCB1bmRlcnNjb3JlIGluIHNlY3Rpb24gaGVhZGVyIGFuZCBvcHRpb24gbmFtZS4gIE5vCiBsb25nZXIgYWRkICduYW1lJyBvcHRpb24gdG8gZXZlcnkgc2VjdGlvbjsgaW5zdGVhZCwgYWRkICdfX25hbWVfXycuCiAKQEAgLTIyNjczLDcgKzIyNzA2LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tCiAKIC0gVGhlIHJlZ2lzdHJ5IGtleSB1c2VkIGlzIG5vdyAiMS41IiBpbnN0ZWFkIG9mICIxLjUueCIgLS0gc28gZnV0dXJlCi12ZXJzaW9ucyBvZiAxLjUgYW5kIE1hcmsgSGFtbW9uZCdzIHdpbjMyYWxsIGluc3RhbGxlciBkb24ndCBuZWVkIHRvIGJlIAordmVyc2lvbnMgb2YgMS41IGFuZCBNYXJrIEhhbW1vbmQncyB3aW4zMmFsbCBpbnN0YWxsZXIgZG9uJ3QgbmVlZCB0byBiZQogcmVzeW5jaHJvbml6ZWQuCiAKIFdpbmRvd3MgVG9vbHMKQEAgLTIyNzQwLDcgKzIyNzczLDcgQEAKIGR5bmFtaWNhbGx5IGFkZCBvbmUgb3IgbWFueSBlbnRyaWVzIHRvIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLgogCiAtIE5ldyBtYWNybyBQeV9Jbml0TW9kdWxlMyhuYW1lLCBtZXRob2RzLCBkb2MpIHdoaWNoIGNhbGxzCi1QeV9Jbml0TW9kdWxlNCgpIHdpdGggYXBwcm9wcmlhdGUgYXJndW1lbnRzLiAgKFRoZSAtNCB2YXJpYW50IHJlcXVpcmVzIAorUHlfSW5pdE1vZHVsZTQoKSB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy4gIChUaGUgLTQgdmFyaWFudCByZXF1aXJlcwogeW91IHRvIHBhc3MgYW4gb2JzY3VyZSB2ZXJzaW9uIG51bWJlciBjb25zdGFudCB3aGljaCBpcyBhbHdheXMgdGhlIHNhbWUuKQogCiAtIE5ldyBBUElzIFB5U3lzX1dyaXRlU3Rkb3V0KCkgYW5kIFB5U3lzX1dyaXRlU3RkZXJyKCkgdG8gd3JpdGUgdG8KQEAgLTIyODEyLDcgKzIyODQ1LDcgQEAKIFN5bnRheCBjaGFuZ2UKIC0tLS0tLS0tLS0tLS0KIAotLSBUaGUgcmFpc2Ugc3RhdGVtZW50IGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGFyZ3VtZW50cywgdG8gcmUtcmFpc2UgCistIFRoZSByYWlzZSBzdGF0ZW1lbnQgY2FuIG5vdyBiZSB1c2VkIHdpdGhvdXQgYXJndW1lbnRzLCB0byByZS1yYWlzZQogYSBwcmV2aW91c2x5IHNldCBleGNlcHRpb24uICBUaGlzIHNob3VsZCBiZSB1c2VkIGFmdGVyIGNhdGNoaW5nIGFuCiBleGNlcHRpb24gd2l0aCBhbiBleGNlcHQgY2xhdXNlIG9ubHksIGVpdGhlciBpbiB0aGUgZXhjZXB0IGNsYXVzZSBvcgogbGF0ZXIgaW4gdGhlIHNhbWUgZnVuY3Rpb24uCkBAIC0yMjg3MSw3ICsyMjkwNCw3IEBACiAKIAlEZW1vL3RraW50ZXIvZ3VpZG8vcGFpbnQucHkgLS0gRGF2ZSBNaXRjaGVsbAogCURlbW8vc29ja2V0cy91bml4c2VydmVyLnB5IC0tIFBpZXQgdmFuIE9vc3RydW0KLQkKKwogCiAtIE11Y2ggYmV0dGVyIGZyZWV6ZSBzdXBwb3J0LiAgVGhlIGZyZWV6ZSBzY3JpcHQgY2FuIG5vdyBmcmVlemUKIGhpZXJhcmNoaWNhbCBtb2R1bGUgbmFtZXMgKHdpdGggYSBjb3JyZXNwb25kaW5nIGNoYW5nZSB0byBpbXBvcnQuYyksCkBAIC0yMzAxMCw3ICsyMzA0Myw3IEBACiAtIE5ldyBjb21tYW5kIHN1cHBvcnRlZCBieSB0aGUgZnRwbGliIG1vZHVsZTogcm1kKCk7IGFsc28gZml4ZWQgc29tZQogbWlub3IgYnVncy4KIAotLSBUaGUgcHJvZmlsZSBtb2R1bGUgbm93IHVzZXMgYSBkaWZmZXJlbnQgdGltZXIgZnVuY3Rpb24gYnkgZGVmYXVsdCAtLSAKKy0gVGhlIHByb2ZpbGUgbW9kdWxlIG5vdyB1c2VzIGEgZGlmZmVyZW50IHRpbWVyIGZ1bmN0aW9uIGJ5IGRlZmF1bHQgLS0KIHRpbWUuY2xvY2soKSBpcyBnZW5lcmFsbHkgYmV0dGVyIHRoYW4gb3MudGltZXMoKS4gIFRoaXMgbWFrZXMgaXQgd29yawogYmV0dGVyIG9uIFdpbmRvd3MgTlQsIHRvby4KIApAQCAtMjMwNDksMTQgKzIzMDgyLDE0IEBACiAtIEluIHRoZSBtdWx0aWZpbGUgbW9kdWxlLCBzdXBwb3J0IHRoZSBvcHRpb25hbCBzZWNvbmQgcGFyYW1ldGVyIHRvCiBzZWVrKCkgd2hlbiBwb3NzaWJsZS4KIAotLSBTZXZlcmFsIGZpeGVzIHRvIHRoZSBnb3BoZXJsaWIgbW9kdWxlIGJ5IExhcnMgTWFyaXVzIEdhcnNob2wuICBBbHNvLCAKKy0gU2V2ZXJhbCBmaXhlcyB0byB0aGUgZ29waGVybGliIG1vZHVsZSBieSBMYXJzIE1hcml1cyBHYXJzaG9sLiAgQWxzbywKIHVybHBhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBHb3BoZXIgVVJMcyB3aXRoIHF1ZXJ5IHN0cmluZ3MuCiAKIC0gRml4ZWQgYSB0aW55IGJ1ZyBpbiBmb3JtYXRfZXhjZXB0aW9uKCkgaW4gdGhlIHRyYWNlYmFjayBtb2R1bGUuCiBBbHNvIHJld3JpdGUgdGJfbGluZW5vKCkgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEpQeXRob24gKGFuZCBub3QKIGRpc3R1cmIgdGhlIGN1cnJlbnQgZXhjZXB0aW9uISk7IGJ5IEppbSBIdWd1bmluLgogCi0tIFRoZSBodHRwbGliIG1vZHVsZSBpcyBtb3JlIHJvYnVzdCB3aGVuIHNlcnZlcnMgc2VuZCBhIHNob3J0IHJlc3BvbnNlIAorLSBUaGUgaHR0cGxpYiBtb2R1bGUgaXMgbW9yZSByb2J1c3Qgd2hlbiBzZXJ2ZXJzIHNlbmQgYSBzaG9ydCByZXNwb25zZQogLS0gY291cnRlc3kgVGltIE8nTWFsbGV5LgogCiBUa2ludGVyIGFuZCBmcmllbmRzCkBAIC0yMzA3MSw3ICsyMzEwNCw3IEBACiBubyBsb25nZXIgdXNlIHRoZSBkZWZhdWx0IHJvb3QuCiAKIC0gVGhlIGludGVyZmFjZXMgZm9yIHRoZSBiaW5kKigpIGFuZCB1bmJpbmQoKSB3aWRnZXQgbWV0aG9kcyBoYXZlIGJlZW4KLXJlZGVzaWduZWQ7IHRoZSBiaW5kKigpIG1ldGhvZHMgbm93IHJldHVybiB0aGUgbmFtZSBvZiB0aGUgVGNsIGNvbW1hbmQgCityZWRlc2lnbmVkOyB0aGUgYmluZCooKSBtZXRob2RzIG5vdyByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIFRjbCBjb21tYW5kCiBjcmVhdGVkIGZvciB0aGUgY2FsbGJhY2ssIGFuZCB0aGlzIGNhbiBiZSBwYXNzZWQgYXMgYSBvcHRpb25hbAogYXJndW1lbnQgdG8gdW5iaW5kKCkgaW4gb3JkZXIgdG8gZGVsZXRlIHRoZSBjb21tYW5kIChub3JtYWxseSwgc3VjaAogY29tbWFuZHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5ib3VuZCB3aGVuIHRoZSB3aWRnZXQgaXMgZGVzdHJveWVkLCBidXQKQEAgLTIzMTA3LDcgKzIzMTQwLDcgQEAKIGRpY3Rpb25hcnkgdG8gYWxsb3cgcmVjdXJzaXZlIGNvbnRhaW5lciB0eXBlcyB0byBkZXRlY3QgcmVjdXJzaW9uIGluCiB0aGVpciByZXByKCksIHN0cigpIGFuZCBwcmludCBpbXBsZW1lbnRhdGlvbnMuCiAKLS0gTmV3IGZ1bmN0aW9uIFB5T2JqZWN0X05vdCh4KSBjYWxjdWxhdGVzIChub3QgeCkgYWNjb3JkaW5nIHRvIFB5dGhvbidzIAorLSBOZXcgZnVuY3Rpb24gUHlPYmplY3RfTm90KHgpIGNhbGN1bGF0ZXMgKG5vdCB4KSBhY2NvcmRpbmcgdG8gUHl0aG9uJ3MKIHN0YW5kYXJkIHJ1bGVzIChiYXNpY2FsbHksIGl0IG5lZ2F0ZXMgdGhlIG91dGNvbWUgUHlPYmplY3RfSXNUcnVlKHgpLgogCiAtIE5ldyBmdW5jdGlvbiBfUHlNb2R1bGVfQ2xlYXIoKSwgd2hpY2ggY2xlYXJzIGEgbW9kdWxlJ3MgZGljdGlvbmFyeQpAQCAtMjMyNjgsNyArMjMzMDEsNyBAQAogaW5zdGFuY2VzIHdpdGggY29weS5weS4gIFRoZSBjUGlja2xlLmMgY2hhbmdlcyBhbmQgc29tZSBwaWNrbGUucHkKIGNoYW5nZXMgYXJlIGNvdXJ0ZXN5IEppbSBGdWx0b24uCiAKLS0gTG9jYWxlIHN1cHBvcnQgaW4gaGUgInJlIiAoUGVybCByZWd1bGFyIGV4cHJlc3Npb25zKSBtb2R1bGUuICBVc2UgCistIExvY2FsZSBzdXBwb3J0IGluIGhlICJyZSIgKFBlcmwgcmVndWxhciBleHByZXNzaW9ucykgbW9kdWxlLiAgVXNlCiB0aGUgZmxhZyByZS5MIChvciByZS5MT0NBTEUpIHRvIGVuYWJsZSBsb2NhbGUtc3BlY2lmaWMgbWF0Y2hpbmcKIHJ1bGVzIGZvciBcdyBhbmQgXGIuICBUaGUgaW4tbGluZSBzeW50YXggZm9yIHRoaXMgZmxhZyBpcyAoP0wpLgogCkBAIC0yMzMzNCw3ICsyMzM2Nyw3IEBACiAKIC0gU29tZSBpbXByb3ZlbWVudHMgdG8gdGhlIF90a2ludGVyIGJ1aWxkIGxpbmUgc3VnZ2VzdGVkIGJ5IENhc2UgUm9vbGUuCiAKLS0gQSBmdWxsIHN1aXRlIG9mIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzIGZvciBOZXRCU0QgMS54LCBzdWJtaXR0ZWQgYnkgCistIEEgZnVsbCBzdWl0ZSBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcyBmb3IgTmV0QlNEIDEueCwgc3VibWl0dGVkIGJ5CiBBbmRlcnMgQW5kZXJzZW4uCiAKIC0gTmV3IFNvbGFyaXMgc3BlY2lmaWMgaGVhZGVyIFNUUk9QVFMucHkuCkBAIC0yMzQwNCw3ICsyMzQzNyw3IEBACiBpZiB0aGVyZSBhcmUgbG90cyBvZiBkdXBsaWNhdGVzLCBhbmQgb3RoZXJ3aXNlIGF0IGxlYXN0IGFzIGdvb2QuCiAKIC0gQWRkZWQgInV1ZSIgYXMgYW4gYWxpYXMgZm9yICJ1dWVuY29kZSIgdG8gbWltZXRvb2xzLnB5LiAgKEhtLCB0aGUKLXV1ZGVjb2RlIGJ1ZyB3aGVyZSBpdCBjb21wbGFpbnRzIGFib3V0IHRyYWlsaW5nIGdhcmJhZ2UgaXMgc3RpbGwgdGhlcmUgCit1dWRlY29kZSBidWcgd2hlcmUgaXQgY29tcGxhaW50cyBhYm91dCB0cmFpbGluZyBnYXJiYWdlIGlzIHN0aWxsIHRoZXJlCiA6LSggKS4KIAogLSBwaWNrbGUucHkgcmVxdWlyZXMgaW50ZWdlcnMgaW4gdGV4dCBtb2RlIHRvIGJlIGluIGRlY2ltYWwgbm90YXRpb24KQEAgLTIzNTY0LDcgKzIzNTk3LDcgQEAKIC0gVGhlIHdhcm5pbmcgYWJvdXQgYSB0aHJlYWQgc3RpbGwgaGF2aW5nIGEgZnJhbWUgbm93IG9ubHkgaGFwcGVucyBpbgogdmVyYm9zZSBtb2RlLgogCi0tIENoYW5nZSB0aGUgc2lnbmFsIGZpbmFsaXphdGlvbiBzbyB0aGF0IGl0IGFsc28gcmVzZXRzIHRoZSBzaWduYWwKKy0gQ2hhbmdlIHRoZSBzaWduYWwgZmluaWFsaXphdGlvbiBzbyB0aGF0IGl0IGFsc28gcmVzZXRzIHRoZSBzaWduYWwKIGhhbmRsZXJzLiAgQWZ0ZXIgdGhpcyBoYXMgYmVlbiBjYWxsZWQsIG91ciBzaWduYWwgaGFuZGxlcnMgYXJlIG5vCiBsb25nZXIgYWN0aXZlIQogCkBAIC0yNDE4MCw3ICsyNDIxMyw3IEBACiBUaGUgUHl0aG9uL0MgQVBJIGZvciBmcmFtZXMgaXMgY2hhbmdlZCAoeW91IHNob3VsZG4ndCBiZSB1c2luZyB0aGlzCiBhbnl3YXkpLgogCi0tIFNpZ25pZmljYW50IHNwZWVkdXAgYnkgaW5saW5pbmcgc29tZSBjb21tb24gb3Bjb2RlcyBmb3IgY29tbW9uIG9wZXJhbmQgCistIFNpZ25pZmljYW50IHNwZWVkdXAgYnkgaW5saW5pbmcgc29tZSBjb21tb24gb3Bjb2RlcyBmb3IgY29tbW9uIG9wZXJhbmQKIHR5cGVzIChlLmcuICBpK2ksIGktaSwgYW5kIGxpc3RbaV0pLiAgRnJlZHJpayBMdW5kaC4KIAogLSBTbWFsbCBzcGVlZHVwIGJ5IHJlb3JkZXJpbmcgdGhlIG1ldGhvZCB0YWJsZXMgb2Ygc29tZSBjb21tb24KQEAgLTI0MjA2LDM0ICsyNDIzOSwzNCBAQAogcHJpbnRpbmcgdGhlIGRvY3VtZW50YXRpb24gbm93IGtpbGxzIGZld2VyIHRyZWVzIC0tIHRoZSBtYXJnaW5zIGhhdmUKIGJlZW4gcmVkdWNlZC4KIAotLSBJIGhhdmUgc3RhcnRlZCBkb2N1bWVudGluZyB0aGUgUHl0aG9uL0MgQVBJLiBVbmZvcnR1bmF0ZWx5IHRoaXMgcHJvamVjdCAKLWhhc24ndCBiZWVuIGNvbXBsZXRlZCB5ZXQuICBJdCB3aWxsIGJlIGNvbXBsZXRlIGJlZm9yZSB0aGUgZmluYWwgcmVsZWFzZSBvZiAKLVB5dGhvbiAxLjUsIHRob3VnaC4gIEF0IHRoZSBtb21lbnQsIGl0J3MgYmV0dGVyIHRvIHJlYWQgdGhlIExhVGVYIHNvdXJjZSAKKy0gSSBoYXZlIHN0YXJ0ZWQgZG9jdW1lbnRpbmcgdGhlIFB5dGhvbi9DIEFQSS4gVW5mb3J0dW5hdGVseSB0aGlzIHByb2plY3QKK2hhc24ndCBiZWVuIGNvbXBsZXRlZCB5ZXQuICBJdCB3aWxsIGJlIGNvbXBsZXRlIGJlZm9yZSB0aGUgZmluYWwgcmVsZWFzZSBvZgorUHl0aG9uIDEuNSwgdGhvdWdoLiAgQXQgdGhlIG1vbWVudCwgaXQncyBiZXR0ZXIgdG8gcmVhZCB0aGUgTGFUZVggc291cmNlCiB0aGFuIHRvIGF0dGVtcHQgdG8gcnVuIGl0IHRocm91Z2ggTGFUZVggYW5kIHByaW50IHRoZSByZXN1bHRpbmcgZHZpIGZpbGUuCiAKLS0gVGhlIHBvc2l4IG1vZHVsZSAoYW5kIGhlbmNlIG9zLnB5KSBub3cgaGFzIGRvYyBzdHJpbmdzISAgVGhhbmtzIHRvIE5laWwgCi1TY2hlbWVuYXVlci4gIEkgcmVjZWl2ZWQgYSBmZXcgb3RoZXIgY29udHJpYnV0aW9ucyBvZiBkb2Mgc3RyaW5ncy4gIEluIG1vc3QgCistIFRoZSBwb3NpeCBtb2R1bGUgKGFuZCBoZW5jZSBvcy5weSkgbm93IGhhcyBkb2Mgc3RyaW5ncyEgIFRoYW5rcyB0byBOZWlsCitTY2hlbWVuYXVlci4gIEkgcmVjZWl2ZWQgYSBmZXcgb3RoZXIgY29udHJpYnV0aW9ucyBvZiBkb2Mgc3RyaW5ncy4gIEluIG1vc3QKIG90aGVyIHBsYWNlcywgZG9jIHN0cmluZ3MgYXJlIHN0aWxsIHdpc2hmdWwgdGhpbmtpbmcuLi4KIAogCiBMYW5ndWFnZSBjaGFuZ2VzCiAtLS0tLS0tLS0tLS0tLS0tCiAKLS0gUHJpdmF0ZSB2YXJpYWJsZXMgd2l0aCBsZWFkaW5nIGRvdWJsZSB1bmRlcnNjb3JlIGFyZSBub3cgYSBwZXJtYW5lbnQgCi1mZWF0dXJlIG9mIHRoZSBsYW5ndWFnZS4gIChUaGVzZSB3ZXJlIGV4cGVyaW1lbnRhbCBpbiByZWxlYXNlIDEuNC4gIEkgaGF2ZSAKLWZhdm9yYWJsZSBleHBlcmllbmNlIHVzaW5nIHRoZW07IEkgY2FuJ3QgbGFiZWwgdGhlbSAiZXhwZXJpbWVudGFsIiAKKy0gUHJpdmF0ZSB2YXJpYWJsZXMgd2l0aCBsZWFkaW5nIGRvdWJsZSB1bmRlcnNjb3JlIGFyZSBub3cgYSBwZXJtYW5lbnQKK2ZlYXR1cmUgb2YgdGhlIGxhbmd1YWdlLiAgKFRoZXNlIHdlcmUgZXhwZXJpbWVudGFsIGluIHJlbGVhc2UgMS40LiAgSSBoYXZlCitmYXZvcmFibGUgZXhwZXJpZW5jZSB1c2luZyB0aGVtOyBJIGNhbid0IGxhYmVsIHRoZW0gImV4cGVyaW1lbnRhbCIKIGZvcmV2ZXIuKQogCi0tIFRoZXJlJ3MgbmV3IHN0cmluZyBsaXRlcmFsIHN5bnRheCBmb3IgInJhdyBzdHJpbmdzIi4gIFByZWZpeGluZyBhIHN0cmluZyAKLWxpdGVyYWwgd2l0aCB0aGUgbGV0dGVyIHIgKG9yIFIpIGRpc2FibGVzIGFsbCBlc2NhcGUgcHJvY2Vzc2luZyBpbiB0aGUgCi1zdHJpbmc7IGZvciBleGFtcGxlLCByJ1xuJyBpcyBhIHR3by1jaGFyYWN0ZXIgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYSAKLWJhY2tzbGFzaCBmb2xsb3dlZCBieSB0aGUgbGV0dGVyIG4uICBUaGlzIGNvbWJpbmVzIHdpdGggYWxsIGZvcm1zIG9mIHN0cmluZyAKLXF1b3RlczsgaXQgaXMgYWN0dWFsbHkgdXNlZnVsIGZvciB0cmlwbGUgcXVvdGVkIGRvYyBzdHJpbmdzIHdoaWNoIG1pZ2h0IAotY29udGFpbiByZWZlcmVuY2VzIHRvIFxuIG9yIFx0LiAgQW4gZW1iZWRkZWQgcXVvdGUgcHJlZml4ZWQgd2l0aCBhIAotYmFja3NsYXNoIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUgc3RyaW5nLCBidXQgdGhlIGJhY2tzbGFzaCBpcyBzdGlsbCAKLWluY2x1ZGVkIGluIHRoZSBzdHJpbmc7IGZvciBleGFtcGxlLCByJ1wnJyBpcyBhIHR3by1jaGFyYWN0ZXIgc3RyaW5nIAotY29uc2lzdGluZyBvZiBhIGJhY2tzbGFzaCBhbmQgYSBxdW90ZS4gIChSYXcgc3RyaW5ncyBhcmUgYWxzbyAKLWFmZmVjdGlvbmF0ZWx5IGtub3duIGFzIFJvYmluIHN0cmluZ3MsIGFmdGVyIHRoZWlyIGludmVudG9yLCBSb2JpbiAKKy0gVGhlcmUncyBuZXcgc3RyaW5nIGxpdGVyYWwgc3ludGF4IGZvciAicmF3IHN0cmluZ3MiLiAgUHJlZml4aW5nIGEgc3RyaW5nCitsaXRlcmFsIHdpdGggdGhlIGxldHRlciByIChvciBSKSBkaXNhYmxlcyBhbGwgZXNjYXBlIHByb2Nlc3NpbmcgaW4gdGhlCitzdHJpbmc7IGZvciBleGFtcGxlLCByJ1xuJyBpcyBhIHR3by1jaGFyYWN0ZXIgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYQorYmFja3NsYXNoIGZvbGxvd2VkIGJ5IHRoZSBsZXR0ZXIgbi4gIFRoaXMgY29tYmluZXMgd2l0aCBhbGwgZm9ybXMgb2Ygc3RyaW5nCitxdW90ZXM7IGl0IGlzIGFjdHVhbGx5IHVzZWZ1bCBmb3IgdHJpcGxlIHF1b3RlZCBkb2Mgc3RyaW5ncyB3aGljaCBtaWdodAorY29udGFpbiByZWZlcmVuY2VzIHRvIFxuIG9yIFx0LiAgQW4gZW1iZWRkZWQgcXVvdGUgcHJlZml4ZWQgd2l0aCBhCitiYWNrc2xhc2ggZG9lcyBub3QgdGVybWluYXRlIHRoZSBzdHJpbmcsIGJ1dCB0aGUgYmFja3NsYXNoIGlzIHN0aWxsCitpbmNsdWRlZCBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgcidcJycgaXMgYSB0d28tY2hhcmFjdGVyIHN0cmluZworY29uc2lzdGluZyBvZiBhIGJhY2tzbGFzaCBhbmQgYSBxdW90ZS4gIChSYXcgc3RyaW5ncyBhcmUgYWxzbworYWZmZWN0aW9uYXRlbHkga25vd24gYXMgUm9iaW4gc3RyaW5ncywgYWZ0ZXIgdGhlaXIgaW52ZW50b3IsIFJvYmluCiBGcmllZHJpY2guKQogCiAtIFRoZXJlJ3MgYSBzaW1wbGUgYXNzZXJ0IHN0YXRlbWVudCwgYW5kIGEgbmV3IGV4Y2VwdGlvbgpAQCAtMjQyNjIsMTAgKzI0Mjk1LDEwIEBACiAtIFRoZSBvYnNvbGV0ZSBleGNlcHRpb24gQ29uZmxpY3RFcnJvciAocHJlc3VtYWJseSB1c2VkIGJ5IHRoZSBsb25nCiBvYnNvbGV0ZSBhY2Nlc3Mgc3RhdGVtZW50KSBoYXMgYmVlbiBkZWxldGVkLgogCi0tIFRoZXJlJ3MgYSBuZXcgZnVuY3Rpb24gc3lzLmV4Y19pbmZvKCkgd2hpY2ggcmV0dXJucyB0aGUgdHVwbGUgCistIFRoZXJlJ3MgYSBuZXcgZnVuY3Rpb24gc3lzLmV4Y19pbmZvKCkgd2hpY2ggcmV0dXJucyB0aGUgdHVwbGUKIChzeXMuZXhjX3R5cGUsIHN5cy5leGNfdmFsdWUsIHN5cy5leGNfdHJhY2ViYWNrKSBpbiBhIHRocmVhZC1zYWZlIHdheS4KIAotLSBUaGVyZSdzIGEgbmV3IHZhcmlhYmxlIHN5cy5leGVjdXRhYmxlLCBwb2ludGluZyB0byB0aGUgZXhlY3V0YWJsZSBmaWxlIAorLSBUaGVyZSdzIGEgbmV3IHZhcmlhYmxlIHN5cy5leGVjdXRhYmxlLCBwb2ludGluZyB0byB0aGUgZXhlY3V0YWJsZSBmaWxlCiBmb3IgdGhlIFB5dGhvbiBpbnRlcnByZXRlci4KIAogLSBUaGUgc29ydCgpIG1ldGhvZHMgZm9yIGxpc3RzIG5vIGxvbmdlciB1c2VzIHRoZSBDIGxpYnJhcnkgcXNvcnQoKTsgSQpAQCAtMjQyOTEsMTEgKzI0MzI0LDExIEBACiByZXR1cm5pbmcgZnJvbSBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbi4KIAogLSBUaGVyZSdzIGEgbmV3ICJidWZmZXIiIGludGVyZmFjZS4gIENlcnRhaW4gb2JqZWN0cyAoZS5nLiBzdHJpbmdzIGFuZAotYXJyYXlzKSBub3cgc3VwcG9ydCB0aGUgImJ1ZmZlciIgcHJvdG9jb2wuICBCdWZmZXIgb2JqZWN0cyBhcmUgYWNjZXB0YWJsZSAKLXdoZW5ldmVyIGZvcm1lcmx5IGEgc3RyaW5nIHdhcyByZXF1aXJlZCBmb3IgYSB3cml0ZSBvcGVyYXRpb247IG11dGFibGUgCithcnJheXMpIG5vdyBzdXBwb3J0IHRoZSAiYnVmZmVyIiBwcm90b2NvbC4gIEJ1ZmZlciBvYmplY3RzIGFyZSBhY2NlcHRhYmxlCit3aGVuZXZlciBmb3JtZXJseSBhIHN0cmluZyB3YXMgcmVxdWlyZWQgZm9yIGEgd3JpdGUgb3BlcmF0aW9uOyBtdXRhYmxlCiBidWZmZXIgb2JqZWN0cyBjYW4gYmUgdGhlIHRhcmdldCBvZiBhIHJlYWQgb3BlcmF0aW9uIHVzaW5nIHRoZSBjYWxsCi1mLnJlYWRpbnRvKGJ1ZmZlcikuICBBIGNvb2wgZmVhdHVyZSBpcyB0aGF0IHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBub3cgCi1hbHNvIHdvcmsgb24gYXJyYXkgb2JqZWN0cy4gIENvbnRyaWJ1dGlvbiBieSBKYWNrIEphbnNlbi4gIChOZWVkcyAKK2YucmVhZGludG8oYnVmZmVyKS4gIEEgY29vbCBmZWF0dXJlIGlzIHRoYXQgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIG5vdworYWxzbyB3b3JrIG9uIGFycmF5IG9iamVjdHMuICBDb250cmlidXRpb24gYnkgSmFjayBKYW5zZW4uICAoTmVlZHMKIGRvY3VtZW50YXRpb24uKQogCiAtIFN0cmluZyBpbnRlcm5pbmc6IGRpY3Rpb25hcnkgbG9va3VwcyBhcmUgZmFzdGVyIHdoZW4gdGhlIGxvb2t1cApAQCAtMjQ1ODcsNyArMjQ2MjAsNyBAQAogb2YgbWVzc2FnZSBzZXF1ZW5jZSBzcGVjaWZpZXJzIHdpdGhvdXQgaW52b2tpbmcgYSBzdWJwcm9jZXNzLiAgQWxzbwogYWRkZWQgYSBjcmVhdGVtZXNzYWdlKCkgbWV0aG9kIGJ5IExhcnMgV2lyemVuaXVzLgogCi0tIFRoZSBTdHJpbmdJTy5TdHJpbmdJTyBjbGFzcyBub3cgc3VwcG9ydHMgcmVhZGxpbmUobmJ5dGVzKS4gIChMYXJzIAorLSBUaGUgU3RyaW5nSU8uU3RyaW5nSU8gY2xhc3Mgbm93IHN1cHBvcnRzIHJlYWRsaW5lKG5ieXRlcykuICAoTGFycwogV2lyemVuaXVzLikgIChPZiBjb3Vyc2UsIHlvdSBzaG91bGQgYmUgdXNpbmcgY1N0cmluZ0lPIGZvciBwZXJmb3JtYW5jZS4pCiAKIC0gVXNlckRpY3QucHkgc3VwcG9ydHMgdGhlIG5ldyBkaWN0aW9uYXJ5IG1ldGhvZHMgYXMgd2VsbC4KQEAgLTI0NjM1LDggKzI0NjY4LDggQEAKIC0gVmFyaW91cyBzbWFsbCBmaXhlcyB0byB0aGUgbm50cGxpYi5weSBtb2R1bGUgdGhhdCBJIGNhbid0IGJvdGhlciB0bwogZG9jdW1lbnQgaW4gZGV0YWlsLgogCi0tIFNqb2VyZCBNdWxsZW5kZXIncyBtaW1pZnkucHkgbW9kdWxlIG5vdyBzdXBwb3J0cyBiYXNlNjQgZW5jb2RpbmcgYW5kIAotaW5jbHVkZXMgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgZnVubnkgZW5jb2RpbmcgeW91IHNvbWV0aW1lcyBzZWUgaW4gbWFpbCAKKy0gU2pvZXJkIE11bGxlbmRlcidzIG1pbWlmeS5weSBtb2R1bGUgbm93IHN1cHBvcnRzIGJhc2U2NCBlbmNvZGluZyBhbmQKK2luY2x1ZGVzIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGZ1bm55IGVuY29kaW5nIHlvdSBzb21ldGltZXMgc2VlIGluIG1haWwKIGhlYWRlcnMuICBJdCBpcyBub3cgZG9jdW1lbnRlZC4KIAogLSBtYWlsYm94LnB5OiBBZGRlZCBCYWJ5bE1haWxib3guICBJbXByb3ZlZCB0aGUgd2F5IHRoZSBtYWlsYm94IGlzCkBAIC0yNDk4NywyMyArMjUwMjAsMjMgQEAKIE5UICh0aGUgb2xkIFZDKysgNC4yIE1ha2VmaWxlIGlzIGFsc28gc3RpbGwgc3VwcG9ydGVkLCBidXQgd2lsbAogZXZlbnR1YWxseSBiZSB3aXRoZHJhd24gZHVlIHRvIGl0cyBidWxraW5lc3MpLgogCi0tIFNlZSB0aGUgbm90ZSBvbiB0aGUgbmV3IG1vZHVsZSBzZWFyY2ggcGF0aCBpbiB0aGUgIk1pc2NlbGxhbmVvdXMiIHNlY3Rpb24gCistIFNlZSB0aGUgbm90ZSBvbiB0aGUgbmV3IG1vZHVsZSBzZWFyY2ggcGF0aCBpbiB0aGUgIk1pc2NlbGxhbmVvdXMiIHNlY3Rpb24KIGFib3ZlLgogCiAtIFN1cHBvcnQgZm9yIFdpbjMycyAodGhlIDMyLWJpdCBXaW5kb3dzIEFQSSB1bmRlciBXaW5kb3dzIDMuMSkgaXMKIGJhc2ljYWxseSB3aXRoZHJhd24uICBJZiBpdCBzdGlsbCB3b3JrcyBmb3IgeW91LCB5b3UncmUgbHVja3kuCiAKLS0gVGhlcmUncyBhIG5ldyBleHRlbnNpb24gbW9kdWxlLCBtc3ZjcnQuYywgd2hpY2ggcHJvdmlkZXMgdmFyaW91cyAKLWxvdy1sZXZlbCBvcGVyYXRpb25zIGRlZmluZWQgaW4gdGhlIE1pY3Jvc29mdCBWaXN1YWwgQysrIFJ1bnRpbWUgTGlicmFyeS4gIAotVGhlc2UgaW5jbHVkZSBsb2NraW5nKCksIHNldG1vZGUoKSwgZ2V0X29zZmhhbmRsZSgpLCBzZXRfb3NmaGFuZGxlKCksIGFuZCAKKy0gVGhlcmUncyBhIG5ldyBleHRlbnNpb24gbW9kdWxlLCBtc3ZjcnQuYywgd2hpY2ggcHJvdmlkZXMgdmFyaW91cworbG93LWxldmVsIG9wZXJhdGlvbnMgZGVmaW5lZCBpbiB0aGUgTWljcm9zb2Z0IFZpc3VhbCBDKysgUnVudGltZSBMaWJyYXJ5LgorVGhlc2UgaW5jbHVkZSBsb2NraW5nKCksIHNldG1vZGUoKSwgZ2V0X29zZmhhbmRsZSgpLCBzZXRfb3NmaGFuZGxlKCksIGFuZAogY29uc29sZSBJL08gZnVuY3Rpb25zIGxpa2Uga2JoaXQoKSwgZ2V0Y2goKSBhbmQgcHV0Y2goKS4KIAogLSBUaGUgLXUgb3B0aW9uIG5vdCBvbmx5IHNldHMgdGhlIHN0YW5kYXJkIEkvTyBzdHJlYW1zIHRvIHVuYnVmZmVyZWQKIHN0YXR1cywgYnV0IGFsc28gc2V0cyB0aGVtIGluIGJpbmFyeSBtb2RlLiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZQogdXNpbmcgbXN2Y3J0LnNldG1vZGUoKSwgYnkgdGhlIHdheS4pCiAKLS0gVGhlLCBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggdmFyaWFibGVzIHBvaW50IHRvIHRoZSBkaXJlY3RvcnkgCi13aGVyZSBQeXRob24gaXMgaW5zdGFsbGVkLCBvciB0byB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgdHJlZSwgaWYgaXQgd2FzIHJ1biAKKy0gVGhlLCBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggdmFyaWFibGVzIHBvaW50IHRvIHRoZSBkaXJlY3RvcnkKK3doZXJlIFB5dGhvbiBpcyBpbnN0YWxsZWQsIG9yIHRvIHRoZSB0b3Agb2YgdGhlIHNvdXJjZSB0cmVlLCBpZiBpdCB3YXMgcnVuCiBmcm9tIHRoZXJlLgogCiAtIFRoZSB2YXJpb3VzIG9zLnBhdGggbW9kdWxlcyAocG9zaXhwYXRoLCBudHBhdGgsIG1hY3BhdGgpIG5vdyBzdXBwb3J0CkBAIC0yNTAxMSw3ICsyNTA0NCw3IEBACiBvcy5wYXRoLmpvaW4oYSwgYiwgYykgaXMgdGhlIHNhbWUgYXMgb3MucGF0aC5qb2luKGEsIG9zLnBhdGguam9pbihiLAogYykpLgogCi0tIFRoZSBudHBhdGggbW9kdWxlIChub3JtYWxseSB1c2VkIGFzIG9zLnBhdGgpIHN1cHBvcnRzIH4gdG8gJEhPTUUgCistIFRoZSBudHBhdGggbW9kdWxlIChub3JtYWxseSB1c2VkIGFzIG9zLnBhdGgpIHN1cHBvcnRzIH4gdG8gJEhPTUUKIGV4cGFuc2lvbiBpbiBleHBhbmR1c2VyKCkuCiAKIC0gVGhlIGZyZWV6ZSB0b29sIG5vdyB3b3JrcyBvbiBXaW5kb3dzLgpAQCAtMjUzMDksNDcgKzI1MzQyLDQ3IEBACiAKIC0gTmV3IG1vZHVsZSB3aGljaGRiIHJlY29nbml6ZXMgZGJtLCBnZGJtIGFuZCBic2RkYi9kYmhhc2ggZmlsZXMuCiAKLS0gVGhlIERvYy9NYWtlZmlsZSB0YXJnZXRzIGhhdmUgYmVlbiByZW9yZ2FuaXplZCBzb21ld2hhdCB0byByZW1vdmUgdGhlIAorLSBUaGUgRG9jL01ha2VmaWxlIHRhcmdldHMgaGF2ZSBiZWVuIHJlb3JnYW5pemVkIHNvbWV3aGF0IHRvIHJlbW92ZSB0aGUKIGluc2lzdGVuY2Ugb24gYWx3YXlzIGdlbmVyYXRpbmcgUG9zdFNjcmlwdC4KIAogLSBUaGUgdGV4aW5mbyB0byBodG1sIGZpbHRlciAoRG9jL3RleGkyaHRtbC5weSkgaGFzIGJlZW4gaW1wcm92ZWQgc29tZXdoYXQuCiAKLS0gImVycm9ycy5oIiBoYXMgYmVlbiByZW5hbWVkIHRvICJweWVycm9ycy5oIiB0byByZXNvbHZlIGEgbG9uZy1zdGFuZGluZyAKKy0gImVycm9ycy5oIiBoYXMgYmVlbiByZW5hbWVkIHRvICJweWVycm9ycy5oIiB0byByZXNvbHZlIGEgbG9uZy1zdGFuZGluZwogbmFtZSBjb25mbGljdCBvbiB0aGUgTWFjLgogCi0tIExpbmtpbmcgYSBtb2R1bGUgY29tcGlsZWQgd2l0aCBhIGRpZmZlcmVudCBzZXR0aW5nIGZvciBQeV9UUkFDRV9SRUZTIG5vdyAKKy0gTGlua2luZyBhIG1vZHVsZSBjb21waWxlZCB3aXRoIGEgZGlmZmVyZW50IHNldHRpbmcgZm9yIFB5X1RSQUNFX1JFRlMgbm93CiBnZW5lcmF0ZXMgYSBsaW5rZXIgZXJyb3IgcmF0aGVyIHRoYW4gYSBjb3JlIGR1bXAuCiAKLS0gVGhlIGNnaSBtb2R1bGUgaGFzIGEgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHByaW50X2V4Y2VwdGlvbigpLCB3aGljaCAKLWZvcm1hdHMgYSBweXRob24gZXhjZXB0aW9uIHVzaW5nIEhUTUwuICBJdCBhbHNvIGZpeGVzIGEgYnVnIGluIHRoZSAKLWNvbXBhdGliaWxpdHkgY29kZSBhbmQgYWRkcyBhIGR1YmlvdXMgZmVhdHVyZSB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byAKKy0gVGhlIGNnaSBtb2R1bGUgaGFzIGEgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHByaW50X2V4Y2VwdGlvbigpLCB3aGljaAorZm9ybWF0cyBhIHB5dGhvbiBleGNlcHRpb24gdXNpbmcgSFRNTC4gIEl0IGFsc28gZml4ZXMgYSBidWcgaW4gdGhlCitjb21wYXRpYmlsaXR5IGNvZGUgYW5kIGFkZHMgYSBkdWJpb3VzIGZlYXR1cmUgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUgdG8KIGhhdmUgdHdvIHF1ZXJ5IHN0cmluZ3MsIG9uZSBpbiB0aGUgVVJMIGFuZCBvbmUgaW4gdGhlIFBPU1QgZGF0YS4KIAotLSBBIHN1YnRsZSBjaGFuZ2UgaW4gdGhlIHVucGlja2xpbmcgb2YgY2xhc3MgaW5zdGFuY2VzIG1ha2VzIGl0IHBvc3NpYmxlIAotdG8gdW5waWNrbGUgaW4gcmVzdHJpY3RlZCBleGVjdXRpb24gbW9kZSwgd2hlcmUgdGhlIF9fZGljdF9fIGF0dHJpYnV0ZSBpcyAKKy0gQSBzdWJ0bGUgY2hhbmdlIGluIHRoZSB1bnBpY2tsaW5nIG9mIGNsYXNzIGluc3RhbmNlcyBtYWtlcyBpdCBwb3NzaWJsZQordG8gdW5waWNrbGUgaW4gcmVzdHJpY3RlZCBleGVjdXRpb24gbW9kZSwgd2hlcmUgdGhlIF9fZGljdF9fIGF0dHJpYnV0ZSBpcwogbm90IGF2YWlsYWJsZSAoYnV0IHNldGF0dHIoKSBpcykuCiAKLS0gRG9jdW1lbnRhdGlvbiBmb3Igb3MucGF0aC5zcGxpdGV4dCgpICg9PSBwb3NpeHBhdGguc3BsaXRleHQoKSkgaGFzIGJlZW4gCistIERvY3VtZW50YXRpb24gZm9yIG9zLnBhdGguc3BsaXRleHQoKSAoPT0gcG9zaXhwYXRoLnNwbGl0ZXh0KCkpIGhhcyBiZWVuCiBjbGVhcmVkIHVwLiAgSXQgc3BsaXRzIGF0IHRoZSAqbGFzdCogZG90LgogCiAtIHBvc2l4ZmlsZSBsb2NraW5nIGlzIG5vdyBhbHNvIGNvcnJlY3RseSBzdXBwb3J0ZWQgb24gQUlYLgogCi0tIFRoZSB0ZW1wZmlsZSBtb2R1bGUgb25jZSBhZ2FpbiBob25vcnMgYW4gaW5pdGlhbCBzZXR0aW5nIG9mIHRtcGRpci4gIEl0IAorLSBUaGUgdGVtcGZpbGUgbW9kdWxlIG9uY2UgYWdhaW4gaG9ub3JzIGFuIGluaXRpYWwgc2V0dGluZyBvZiB0bXBkaXIuICBJdAogbm93IHdvcmtzIG9uIFdpbmRvd3MsIHRvby4KIAotLSBUaGUgdHJhY2ViYWNrIG1vZHVsZSBoYXMgc29tZSBuZXcgZnVuY3Rpb25zIHRvIGV4dHJhY3QsIGZvcm1hdCBhbmQgcHJpbnQgCistIFRoZSB0cmFjZWJhY2sgbW9kdWxlIGhhcyBzb21lIG5ldyBmdW5jdGlvbnMgdG8gZXh0cmFjdCwgZm9ybWF0IGFuZCBwcmludAogdGhlIGFjdGl2ZSBzdGFjay4KIAotLSBTb21lIHRyYW5zbGF0aW9uIGZ1bmN0aW9ucyBpbiB0aGUgdXJsbGliIG1vZHVsZSBoYXZlIGJlZW4gbWFkZSBhIGxpdHRsZSAKKy0gU29tZSB0cmFuc2xhdGlvbiBmdW5jdGlvbnMgaW4gdGhlIHVybGxpYiBtb2R1bGUgaGF2ZSBiZWVuIG1hZGUgYSBsaXR0bGUKIGxlc3Mgc2x1Z2dpc2guCiAKLS0gVGhlIGFkZHRhZ18qIG1ldGhvZHMgZm9yIENhbnZhcyB3aWRnZXRzIGluIFRraW50ZXIgYXMgd2VsbCBhcyBpbiB0aGUgCi1zZXBhcmF0ZSBDYW52YXMgY2xhc3MgaGF2ZSBiZWVuIGZpeGVkIHNvIHRoZXkgYWN0dWFsbHkgZG8gc29tZXRoaW5nIAorLSBUaGUgYWRkdGFnXyogbWV0aG9kcyBmb3IgQ2FudmFzIHdpZGdldHMgaW4gVGtpbnRlciBhcyB3ZWxsIGFzIGluIHRoZQorc2VwYXJhdGUgQ2FudmFzIGNsYXNzIGhhdmUgYmVlbiBmaXhlZCBzbyB0aGV5IGFjdHVhbGx5IGRvIHNvbWV0aGluZwogbWVhbmluZ2Z1bC4KIAogLSBBIHRpbnkgX3Rlc3QoKSBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCB0byBUa2ludGVyLnB5LgogCi0tIEEgZ2VuZXJpYyBNYWtlZmlsZSBmb3IgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZXMgaXMgcHJvdmlkZWQgaW4gdGhlIE1pc2MgCistIEEgZ2VuZXJpYyBNYWtlZmlsZSBmb3IgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZXMgaXMgcHJvdmlkZWQgaW4gdGhlIE1pc2MKIHN1YmRpcmVjdG9yeSAoTWlzYy9nTWFrZWZpbGUpLgogCiAtIEEgbmV3IHZlcnNpb24gb2YgcHl0aG9uLW1vZGUuZWwgZm9yIEVtYWNzIGlzIHByb3ZpZGVkLiAgU2VlCkBAIC0yNTM1NywyNSArMjUzOTAsMjUgQEAKIHNlcGFyYXRlIGZpbGUgcHlpbWVudS5lbCBpcyBubyBsb25nZXIgbmVlZGVkLCBpbWVudSBzdXBwb3J0IGlzIGZvbGRlZAogaW50byBweXRob24tbW9kZS5lbC4KIAotLSBUaGUgY29uZmlndXJlIHNjcmlwdCBjYW4gZmluYWxseSBjb3JyZWN0bHkgZmluZCB0aGUgcmVhZGxpbmUgbGlicmFyeSBpbiBhIAotbm9uLXN0YW5kYXJkIGxvY2F0aW9uLiAgVGhlIExERkxBR1MgdmFyaWFibGUgaXMgcGFzc2VkIG9uIHRoZSBNYWtlZmlsZXMgCistIFRoZSBjb25maWd1cmUgc2NyaXB0IGNhbiBmaW5hbGx5IGNvcnJlY3RseSBmaW5kIHRoZSByZWFkbGluZSBsaWJyYXJ5IGluIGEKK25vbi1zdGFuZGFyZCBsb2NhdGlvbi4gIFRoZSBMREZMQUdTIHZhcmlhYmxlIGlzIHBhc3NlZCBvbiB0aGUgTWFrZWZpbGVzCiBmcm9tIHRoZSBjb25maWd1cmUgc2NyaXB0LgogCi0tIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdyBpbnN0YWxsZWQgYXMgcHJvZ3JhbXMgKGkuZS4gd2l0aCBleGVjdXRhYmxlIAorLSBTaGFyZWQgbGlicmFyaWVzIGFyZSBub3cgaW5zdGFsbGVkIGFzIHByb2dyYW1zIChpLmUuIHdpdGggZXhlY3V0YWJsZQogcGVybWlzc2lvbikuICBUaGlzIGlzIHJlcXVpcmVkIG9uIEhQLVVYIGFuZCB3b24ndCBodXJ0IG9uIG90aGVyIHN5c3RlbXMuCiAKLS0gVGhlIG9iamMuYyBtb2R1bGUgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gIE9iamVjdGl2ZS1DIAorLSBUaGUgb2JqYy5jIG1vZHVsZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZGlzdHJpYnV0aW9uLiAgT2JqZWN0aXZlLUMKIHN1cHBvcnQgbWF5IGJlY29tZSBhdmFpbGFibGUgYXMgY29udHJpYnV0ZWQgc29mdHdhcmUgb24gdGhlIGZ0cCBzaXRlLgogCiAtIFRoZSBzeWJhc2UgbW9kdWxlIGlzIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24uICBBIG11Y2gKIGltcHJvdmVkIHN5YmFzZSBtb2R1bGUgaXMgYXZhaWxhYmxlIGFzIGNvbnRyaWJ1dGVkIHNvZnR3YXJlIGZyb20gdGhlCiBmdHAgc2l0ZS4KIAotLSBfdGtpbnRlciBpcyBub3cgY29tcGF0aWJsZSB3aXRoIFRjbCA3LjUgLyBUayA0LjEgcGF0Y2gxIG9uIFdpbmRvd3MgYW5kIAotTWFjIChkb24ndCB1c2UgdW5wYXRjaGVkIFRjbC9UayEpLiAgVGhlIGRlZmF1bHQgbGluZSBpbiB0aGUgU2V0dXAuaW4gZmlsZSAKKy0gX3RraW50ZXIgaXMgbm93IGNvbXBhdGlibGUgd2l0aCBUY2wgNy41IC8gVGsgNC4xIHBhdGNoMSBvbiBXaW5kb3dzIGFuZAorTWFjIChkb24ndCB1c2UgdW5wYXRjaGVkIFRjbC9UayEpLiAgVGhlIGRlZmF1bHQgbGluZSBpbiB0aGUgU2V0dXAuaW4gZmlsZQogbm93IGxpbmtzIHdpdGggVGNsIDcuNSAvIFRrIDQuMSByYXRoZXIgdGhhbiA3LjQvNC4wLgogCi0tIEluIFNldHVwLCB5b3UgY2FuIG5vdyB3cml0ZSAiKnNoYXJlZCoiIGluc3RlYWQgb2YgIipub2NvbmZpZyoiLCBhbmQgeW91IAorLSBJbiBTZXR1cCwgeW91IGNhbiBub3cgd3JpdGUgIipzaGFyZWQqIiBpbnN0ZWFkIG9mICIqbm9jb25maWcqIiwgYW5kIHlvdQogY2FuIHVzZSAqLnNvIGFuZCAqLnNsIGFzIHNoYXJlZCBsaWJyYXJpZXMuCiAKIC0gU29tZSBtb3JlIGZpZGdldGluZyBmb3IgQUlYIHNoYXJlZCBsaWJyYXJpZXMuCkBAIC0yNTM4NCw4MSArMjU0MTcsODEgQEAKIChOb3RlIC0tIGEgY29tcGxldGUgcmVwbGFjZW1lbnQgYnkgTmllbHMgTW8ibGxlciwgY2FsbGVkIGdwbW9kdWxlLCBpcwogYXZhaWxhYmxlIGZyb20gdGhlIGNvbnRyaWIgZGlyZWN0b3J5IG9uIHRoZSBmdHAgc2l0ZS4pCiAKLS0gQSB3YXJuaW5nIGlzIHdyaXR0ZW4gdG8gc3lzLnN0ZGVyciB3aGVuIGEgX19kZWxfXyBtZXRob2QgcmFpc2VzIGFuIAorLSBBIHdhcm5pbmcgaXMgd3JpdHRlbiB0byBzeXMuc3RkZXJyIHdoZW4gYSBfX2RlbF9fIG1ldGhvZCByYWlzZXMgYW4KIGV4Y2VwdGlvbiAoZm9ybWVybHksIHN1Y2ggZXhjZXB0aW9ucyB3ZXJlIGNvbXBsZXRlbHkgaWdub3JlZCkuCiAKLS0gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGRlZmluZXMgSEFWRV9PTERfQ1BQIGlmIHRoZSBDIHByZXByb2Nlc3NvciBpcyAKKy0gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGRlZmluZXMgSEFWRV9PTERfQ1BQIGlmIHRoZSBDIHByZXByb2Nlc3NvciBpcwogaW5jYXBhYmxlIG9mIEFOU0kgc3R5bGUgdG9rZW4gY29uY2F0ZW5hdGlvbiBhbmQgc3RyaW5naWZpY2F0aW9uLgogCi0tIEFsbCBzb3VyY2UgZmlsZXMgKGV4Y2VwdCBhIGZldyBwbGF0Zm9ybSBzcGVjaWZpYyBtb2R1bGVzKSBhcmUgb25jZSBhZ2FpbiAKKy0gQWxsIHNvdXJjZSBmaWxlcyAoZXhjZXB0IGEgZmV3IHBsYXRmb3JtIHNwZWNpZmljIG1vZHVsZXMpIGFyZSBvbmNlIGFnYWluCiBjb21wYXRpYmxlIHdpdGggSyZSIEMgY29tcGlsZXJzIGFzIHdlbGwgYXMgQU5TSSBjb21waWxlcnMuICBJbiBwYXJ0aWN1bGFyLAotQU5TSS1pc21zIGhhdmUgYmVlbiByZW1vdmVkIG9yIG1hZGUgY29uZGl0aW9uYWwgaW4gY29tcGxleG9iamVjdC5jLCAKK0FOU0ktaXNtcyBoYXZlIGJlZW4gcmVtb3ZlZCBvciBtYWRlIGNvbmRpdGlvbmFsIGluIGNvbXBsZXhvYmplY3QuYywKIGdldGFyZ3MuYyBhbmQgb3BlcmF0b3IuYy4KIAotLSBUaGUgYWJzdHJhY3Qgb2JqZWN0IEFQSSBoYXMgdGhyZWUgbmV3IGZ1bmN0aW9ucywgUHlPYmplY3RfRGVsSXRlbSwgCistIFRoZSBhYnN0cmFjdCBvYmplY3QgQVBJIGhhcyB0aHJlZSBuZXcgZnVuY3Rpb25zLCBQeU9iamVjdF9EZWxJdGVtLAogUHlTZXF1ZW5jZV9EZWxJdGVtLCBhbmQgUHlTZXF1ZW5jZV9EZWxTbGljZS4KIAotLSBUaGUgb3BlcmF0b3IgbW9kdWxlIGhhcyBuZXcgZnVuY3Rpb25zIGRlbGl0ZW0gYW5kIGRlbHNsaWNlLCBhbmQgdGhlIAotZnVuY3Rpb25zICJvciIgYW5kICJhbmQiIGFyZSByZW5hbWVkIHRvICJvcl8iIGFuZCAiYW5kXyIgKHNpbmNlICJvciIgYW5kIAorLSBUaGUgb3BlcmF0b3IgbW9kdWxlIGhhcyBuZXcgZnVuY3Rpb25zIGRlbGl0ZW0gYW5kIGRlbHNsaWNlLCBhbmQgdGhlCitmdW5jdGlvbnMgIm9yIiBhbmQgImFuZCIgYXJlIHJlbmFtZWQgdG8gIm9yXyIgYW5kICJhbmRfIiAoc2luY2UgIm9yIiBhbmQKICJhbmQiIGFyZSByZXNlcnZlZCB3b3JkcykuICAoIl9fb3JfXyIgYW5kICJfX2FuZF9fIiBhcmUgdW5jaGFuZ2VkLikKIAotLSBUaGUgZW52aXJvbm1lbnQgbW9kdWxlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQ7IHB1dGVudigpIGlzIG5vdyBhIGZ1bmN0aW9uIAorLSBUaGUgZW52aXJvbm1lbnQgbW9kdWxlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQ7IHB1dGVudigpIGlzIG5vdyBhIGZ1bmN0aW9uCiBpbiBwb3NpeG1vZHVsZSAoYWxzbyB1bmRlciBOVCkuCiAKIC0gRXJyb3IgaW4gZmlsdGVyKDxmdW5jdGlvbj4sICIiKSBoYXMgYmVlbiBmaXhlZC4KIAogLSBVbnJlY29nbml6ZWQga2V5d29yZCBhcmd1bWVudHMgcmFpc2UgVHlwZUVycm9yLCBub3QgS2V5RXJyb3IuCiAKLS0gQmV0dGVyIHBvcnRhYmlsaXR5LCBmZXdlciBidWdzIGFuZCBtZW1vcnkgbGVha3MsIGZld2VyIGNvbXBpbGVyIHdhcm5pbmdzLCAKKy0gQmV0dGVyIHBvcnRhYmlsaXR5LCBmZXdlciBidWdzIGFuZCBtZW1vcnkgbGVha3MsIGZld2VyIGNvbXBpbGVyIHdhcm5pbmdzLAogc29tZSBtb3JlIGRvY3VtZW50YXRpb24uCiAKLS0gQnVnIGluIGZsb2F0IHBvd2VyIGJvdW5kYXJ5IGNhc2UgKDAuMCB0byB0aGUgbmVnYXRpdmUgaW50ZWdlciBwb3dlcikgCistIEJ1ZyBpbiBmbG9hdCBwb3dlciBib3VuZGFyeSBjYXNlICgwLjAgdG8gdGhlIG5lZ2F0aXZlIGludGVnZXIgcG93ZXIpCiBmaXhlZC4KIAotLSBUaGUgdGVzdCBvZiBuZWdhdGl2ZSBudW1iZXIgdG8gdGhlIGZsb2F0IHBvd2VyIGhhcyBiZWVuIG1vdmVkIGZyb20gdGhlIAorLSBUaGUgdGVzdCBvZiBuZWdhdGl2ZSBudW1iZXIgdG8gdGhlIGZsb2F0IHBvd2VyIGhhcyBiZWVuIG1vdmVkIGZyb20gdGhlCiBidWlsdC1pbiBwb3coKSBmdW5jdGlvbiB0byBmbG9hdG9iamVjdC5jIChzbyBjb21wbGV4IG51bWJlcnMgY2FuIHlpZWxkIHRoZQogY29ycmVjdCByZXN1bHQpLgogCi0tIFRoZSBidWcgaW50cm9kdWNlZCBpbiBiZXRhMiB3aGVyZSBzaGFyZWQgbGlicmFyaWVzIGxvYWRlZCAodXNpbmcgCistIFRoZSBidWcgaW50cm9kdWNlZCBpbiBiZXRhMiB3aGVyZSBzaGFyZWQgbGlicmFyaWVzIGxvYWRlZCAodXNpbmcKIGRsb3BlbigpKSBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3b3VsZCBmYWlsLCBoYXMgYmVlbiBmaXhlZC4KIAotLSBNb2R1bGVzIGltcG9ydGVkIGFzIHNoYXJlZCBsaWJyYXJpZXMgbm93IGFsc28gaGF2ZSBhIF9fZmlsZV9fIGF0dHJpYnV0ZSwgCi1naXZpbmcgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhleSB3ZXJlIGxvYWRlZC4gIFRoZSBvbmx5IG1vZHVsZXMgd2l0aG91dCAKKy0gTW9kdWxlcyBpbXBvcnRlZCBhcyBzaGFyZWQgbGlicmFyaWVzIG5vdyBhbHNvIGhhdmUgYSBfX2ZpbGVfXyBhdHRyaWJ1dGUsCitnaXZpbmcgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhleSB3ZXJlIGxvYWRlZC4gIFRoZSBvbmx5IG1vZHVsZXMgd2l0aG91dAogYSBfX2ZpbGVfXyBhdHRyaWJ1dGUgbm93IGFyZSBidWlsdC1pbiBtb2R1bGVzLgogCi0tIE9uIHRoZSBNYWMsIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzIGNhbiBlbmQgaW4gZWl0aGVyICIuc2xiIiBvciAKLSIuPHBsYXRmb3JtPi5zbGIiIHdoZXJlIDxwbGF0Zm9ybT4gaXMgZWl0aGVyICJDRk02OEsiIG9yICJwcGMiLiAgVGhlICIuc2xiIiAKKy0gT24gdGhlIE1hYywgZHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZXMgY2FuIGVuZCBpbiBlaXRoZXIgIi5zbGIiIG9yCisiLjxwbGF0Zm9ybT4uc2xiIiB3aGVyZSA8cGxhdGZvcm0+IGlzIGVpdGhlciAiQ0ZNNjhLIiBvciAicHBjIi4gIFRoZSAiLnNsYiIKIGV4dGVuc2lvbiBzaG91bGQgb25seSBiZSB1c2VkIGZvciAiZmF0IiBiaW5hcmllcy4KIAotLSBDIEFQSSBhZGRpdGlvbjogbWFyc2hhbC5jIG5vdyBzdXBwb3J0cyAKKy0gQyBBUEkgYWRkaXRpb246IG1hcnNoYWwuYyBub3cgc3VwcG9ydHMKIFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nKG9iamVjdCkuCiAKIC0gQyBBUEkgYWRkaXRpb246IGdldGFyZ3MuYyBub3cgc3VwcG9ydHMKIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsIGZvcm1hdCwga3duYW1lcywgLi4uKQogdG8gcGFyc2Uga2V5d29yZCBhcmd1bWVudHMuCiAKLS0gVGhlIFBDIHZlcnNpb25pbmcgc2NoZW1lIChzeXMud2ludmVyKSBoYXMgY2hhbmdlZCBvbmNlIGFnYWluLiAgdGhlIAotdmVyc2lvbiBudW1iZXIgaXMgbm93ICI8ZGlnaXQ+LjxkaWdpdD4uPGRpZ2l0Pi48YXBpdmVyc2lvbj4iLCB3aGVyZSB0aGUgCi1maXJzdCB0aHJlZSA8ZGlnaXQ+cyBhcmUgdGhlIFB5dGhvbiB2ZXJzaW9uIChlLmcuICIxLjQuMCIgZm9yIFB5dGhvbiAxLjQsIAotIjEuNC4xIiBmb3IgUHl0aG9uIDEuNC4xIC0tIHRoZSBiZXRhIGxldmVsIGlzIG5vdCBpbmNsdWRlZCkgYW5kIAorLSBUaGUgUEMgdmVyc2lvbmluZyBzY2hlbWUgKHN5cy53aW52ZXIpIGhhcyBjaGFuZ2VkIG9uY2UgYWdhaW4uICB0aGUKK3ZlcnNpb24gbnVtYmVyIGlzIG5vdyAiPGRpZ2l0Pi48ZGlnaXQ+LjxkaWdpdD4uPGFwaXZlcnNpb24+Iiwgd2hlcmUgdGhlCitmaXJzdCB0aHJlZSA8ZGlnaXQ+cyBhcmUgdGhlIFB5dGhvbiB2ZXJzaW9uIChlLmcuICIxLjQuMCIgZm9yIFB5dGhvbiAxLjQsCisiMS40LjEiIGZvciBQeXRob24gMS40LjEgLS0gdGhlIGJldGEgbGV2ZWwgaXMgbm90IGluY2x1ZGVkKSBhbmQKIDxhcGl2ZXJzaW9uPiBpcyB0aGUgZm91ci1kaWdpdCBQWVRIT05fQVBJX1ZFUlNJT04gKGN1cnJlbnRseSAxMDA1KS4KIAogLSBoMnB5LnB5IGFjY2VwdHMgd2hpdGVzcGFjZSBiZWZvcmUgdGhlICMgaW4gQ1BQIGRpcmVjdGl2ZXMKIAotLSBPbiBTb2xhcmlzIDIuNSwgaXQgc2hvdWxkIG5vdyBiZSBwb3NzaWJsZSB0byB1c2UgZWl0aGVyIFBvc2l4IHRocmVhZHMgb3IgCi1Tb2xhcmlzIHRocmVhZHMgKFhYWDogaG93IGRvIHlvdSBzZWxlY3Qgd2hpY2ggaXMgdXNlZD8/PykuICAoTm90ZTogdGhlIAotUHl0aG9uIHB0aHJlYWRzIGludGVyZmFjZSBkb2Vzbid0IGZ1bGx5IHN1cHBvcnQgc2VtYXBob3JlcyB5ZXQgLS0gYW55b25lIAorLSBPbiBTb2xhcmlzIDIuNSwgaXQgc2hvdWxkIG5vdyBiZSBwb3NzaWJsZSB0byB1c2UgZWl0aGVyIFBvc2l4IHRocmVhZHMgb3IKK1NvbGFyaXMgdGhyZWFkcyAoWFhYOiBob3cgZG8geW91IHNlbGVjdCB3aGljaCBpcyB1c2VkPz8/KS4gIChOb3RlOiB0aGUKK1B5dGhvbiBwdGhyZWFkcyBpbnRlcmZhY2UgZG9lc24ndCBmdWxseSBzdXBwb3J0IHNlbWFwaG9yZXMgeWV0IC0tIGFueW9uZQogY2FyZSB0byBmaXggdGhpcz8pCiAKLS0gVGhyZWFkIHN1cHBvcnQgc2hvdWxkIG5vdyB3b3JrIG9uIEFJWCwgdXNpbmcgZWl0aGVyIERDRSB0aHJlYWRzIG9yIAorLSBUaHJlYWQgc3VwcG9ydCBzaG91bGQgbm93IHdvcmsgb24gQUlYLCB1c2luZyBlaXRoZXIgRENFIHRocmVhZHMgb3IKIHB0aHJlYWRzLgogCiAtIE5ldyBmaWxlIERlbW8vc29ja2V0cy91bmljYXN0LnB5CiAKLS0gV29ya2luZyBNYWMgcG9ydCwgd2l0aCBDRk02OEsgc3VwcG9ydCwgd2l0aCBUayA0LjEgc3VwcG9ydCAodGhvdWdoIG5vdCAKKy0gV29ya2luZyBNYWMgcG9ydCwgd2l0aCBDRk02OEsgc3VwcG9ydCwgd2l0aCBUayA0LjEgc3VwcG9ydCAodGhvdWdoIG5vdAogYm90aCkgKFhYWCkKIAotLSBOZXcgcHJvamVjdCBzZXR1cCBmb3IgUEMgcG9ydCwgbm93IGNvbXBhdGlibGUgd2l0aCBQeXRob25XaW4sIHdpdGggCistIE5ldyBwcm9qZWN0IHNldHVwIGZvciBQQyBwb3J0LCBub3cgY29tcGF0aWJsZSB3aXRoIFB5dGhvbldpbiwgd2l0aAogX3RraW50ZXIgYW5kIE51bVB5IHN1cHBvcnQgKFhYWCkKIAogLSBOZXcgbW9kdWxlIHNpdGUucHkgKFhYWCkKQEAgLTI1NDc1LDcgKzI1NTA4LDcgQEAKIAogLSBzdHJpbmcuYXRvaSBjLnMuIG5vdyByYWlzZSBhbiBleGNlcHRpb24gZm9yIGFuIGVtcHR5IGlucHV0IHN0cmluZy4KIAotLSBBdCBsYXN0LCBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGRlZmluZSBIQVZFX0NPTkZJR19IIGluIG9yZGVyIHRvIAorLSBBdCBsYXN0LCBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IHRvIGRlZmluZSBIQVZFX0NPTkZJR19IIGluIG9yZGVyIHRvCiBoYXZlIGNvbmZpZy5oIGluY2x1ZGVkIGF0IHZhcmlvdXMgcGxhY2VzLgogCiAtIFVucmVjb2duaXplZCBrZXl3b3JkIGFyZ3VtZW50cyBub3cgcmFpc2UgVHlwZUVycm9yIHJhdGhlciB0aGFuIEtleUVycm9yLgpAQCAtMjU0ODMsMjUgKzI1NTE2LDI1IEBACiAtIFRoZSBtYWtlc2V0dXAgc2NyaXB0IHJlY29nbml6ZXMgZmlsZXMgd2l0aCBleHRlbnNpb24gLnNvIG9yIC5zbCBhcwogKHNoYXJlZCkgbGlicmFyaWVzLgogCi0tICdhY2Nlc3MnIGlzIG5vIGxvbmdlciBhIHJlc2VydmVkIHdvcmQsIGFuZCBhbGwgY29kZSByZWxhdGVkIHRvIGl0cyAKLWltcGxlbWVudGF0aW9uIGlzIGdvbmUgKG9yIGF0IGxlYXN0ICNpZmRlZidlZCBvdXQpLiAgVGhpcyBzaG91bGQgbWFrZSAKKy0gJ2FjY2VzcycgaXMgbm8gbG9uZ2VyIGEgcmVzZXJ2ZWQgd29yZCwgYW5kIGFsbCBjb2RlIHJlbGF0ZWQgdG8gaXRzCitpbXBsZW1lbnRhdGlvbiBpcyBnb25lIChvciBhdCBsZWFzdCAjaWZkZWYnZWQgb3V0KS4gIFRoaXMgc2hvdWxkIG1ha2UKIFB5dGhvbiBhIGxpdHRsZSBzcGVlZGllciB0b28hCiAKLS0gUGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIHN1Z2dlc3RlZCBieSBTam9lcmQgTXVsbGVuZGVyLiAgVGhpcyBpbmNsdWRlcyAKLXRoZSBpbnRyb2R1Y3Rpb24gb2YgdHdvIG5ldyBvcHRpb25hbCBmdW5jdGlvbiBwb2ludGVycyBpbiB0eXBlIG9iamVjdCwgCi1nZXRhdHRybyBhbmQgc2V0YXR0cm8sIHdoaWNoIGFyZSBsaWtlIGdldGF0dHIgYW5kIHNldGF0dHIgYnV0IHRha2UgYSAKKy0gUGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIHN1Z2dlc3RlZCBieSBTam9lcmQgTXVsbGVuZGVyLiAgVGhpcyBpbmNsdWRlcwordGhlIGludHJvZHVjdGlvbiBvZiB0d28gbmV3IG9wdGlvbmFsIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHR5cGUgb2JqZWN0LAorZ2V0YXR0cm8gYW5kIHNldGF0dHJvLCB3aGljaCBhcmUgbGlrZSBnZXRhdHRyIGFuZCBzZXRhdHRyIGJ1dCB0YWtlIGEKIHN0cmluZyBvYmplY3QgaW5zdGVhZCBvZiBhIEMgc3RyaW5nIHBvaW50ZXIuCiAKLS0gTmV3IG9wZXJhdGlvbnMgaW4gc3RyaW5nIG1vZHVsZTogbHN0cmlwKHMpIGFuZCByc3RyaXAocykgc3RyaXAgd2hpdGVzcGFjZSAKLW9ubHkgb24gdGhlIGxlZnQgb3Igb25seSBvbiB0aGUgcmlnaHQsIEEgbmV3IG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IHRvIAotc3BsaXQoKSBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlcGFyYXRvcnMgaG9ub3JlZCAoc28gCi1zcGxpdGZpZWxkcyhzLCBzZXAsIG4pIHJldHVybnMgYSBsaXN0IG9mIGF0IG1vc3QgbisxIGVsZW1lbnRzKS4gIChTaW5jZSAKKy0gTmV3IG9wZXJhdGlvbnMgaW4gc3RyaW5nIG1vZHVsZTogbHN0cmlwKHMpIGFuZCByc3RyaXAocykgc3RyaXAgd2hpdGVzcGFjZQorb25seSBvbiB0aGUgbGVmdCBvciBvbmx5IG9uIHRoZSByaWdodCwgQSBuZXcgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgdG8KK3NwbGl0KCkgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZXBhcmF0b3JzIGhvbm9yZWQgKHNvCitzcGxpdGZpZWxkcyhzLCBzZXAsIG4pIHJldHVybnMgYSBsaXN0IG9mIGF0IG1vc3QgbisxIGVsZW1lbnRzKS4gIChTaW5jZQogMS4zLCBzcGxpdGZpZWxkcyhzLCBOb25lKSBpcyB0b3RhbGx5IGVxdWl2YWxlbnQgdG8gc3BsaXQocykuKQotc3RyaW5nLmNhcHdvcmRzKCkgaGFzIGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZSAKK3N0cmluZy5jYXB3b3JkcygpIGhhcyBhbiBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgc3BlY2lmeWluZyB0aGUKIHNlcGFyYXRvciAod2hpY2ggaXMgcGFzc2VkIHRvIHNwbGl0KCkpLgogCi0tIHJlZ3N1Yi5zcGxpdCgpIGhhcyB0aGUgc2FtZSBhZGRpdGlvbiBhcyBzdHJpbmcuc3BsaXQoKS4gIHJlZ3N1Yi5zcGxpdHgocywgCi1zZXAsIG1heHNlcCkgaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IHdhcyByZWdzdWIuc3BsaXQocywgMSkgaW4gCistIHJlZ3N1Yi5zcGxpdCgpIGhhcyB0aGUgc2FtZSBhZGRpdGlvbiBhcyBzdHJpbmcuc3BsaXQoKS4gIHJlZ3N1Yi5zcGxpdHgocywKK3NlcCwgbWF4c2VwKSBpbXBsZW1lbnRzIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgd2FzIHJlZ3N1Yi5zcGxpdChzLCAxKSBpbgogMS40YmV0YTIgKHJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgZGVsaW1pdGVycyBhcyB3ZWxsIGFzIHRoZSB3b3JkcykuCiAKIC0gRmluYWwgdG91Y2ggZm9yIEFJWCBsb2FkaW5nLCByZXdyaXR0ZW4gTWlzYy9BSVgtTk9URVMuCkBAIC0yNTU0NSwxMSArMjU1NzgsMTEgQEAKIG1lYW5pbmdmdWwgdmFsdWUgKGEgZmV3IHRoaW5ncyB3ZXJlIGJvdGNoZWQgaW4gYmV0YSAxKS4gIExpYi9kb3NfOHgzCiBpcyBub3cgYSBzdGFuZGFyZCBwYXJ0IG9mIHRoZSBkaXN0cmlidXRpb24gKGFsYXMpLgogCi0tIE1vcmUgaW1wcm92ZW1lbnRzIHRvIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VkdXJlLiAgVHlwaW5nICJtYWtlIGluc3RhbGwiIAotbm93IGluc2VydHMgdGhlIHZlcnNpb24gbnVtYmVyIGluIHRoZSBwYXRobmFtZXMgb2YgYWxtb3N0IGV2ZXJ5dGhpbmcgCi1pbnN0YWxsZWQsIGFuZCBjcmVhdGVzIHRoZSBtYWNoaW5lIGRlcGVuZGVudCBtb2R1bGVzIChGQ05UTC5weSBldGMuKSBpZiBub3QgCi1zdXBwbGllZCBieSB0aGUgZGlzdHJpYnV0aW9uLiAgKFhYWCBUaGVyZSdzIHN0aWxsIGEgcHJvYmxlbSB3aXRoIHRoZSBsYXR0ZXIgCi1iZWNhdXNlIHRoZSAicmVnZW4iIHNjcmlwdCByZXF1aXJlcyB0aGF0IFB5dGhvbiBpcyBpbnN0YWxsZWQuICBTb21lIG1hbnVhbCAKKy0gTW9yZSBpbXByb3ZlbWVudHMgdG8gdGhlIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUuICBUeXBpbmcgIm1ha2UgaW5zdGFsbCIKK25vdyBpbnNlcnRzIHRoZSB2ZXJzaW9uIG51bWJlciBpbiB0aGUgcGF0aG5hbWVzIG9mIGFsbW9zdCBldmVyeXRoaW5nCitpbnN0YWxsZWQsIGFuZCBjcmVhdGVzIHRoZSBtYWNoaW5lIGRlcGVuZGVudCBtb2R1bGVzIChGQ05UTC5weSBldGMuKSBpZiBub3QKK3N1cHBsaWVkIGJ5IHRoZSBkaXN0cmlidXRpb24uICAoWFhYIFRoZXJlJ3Mgc3RpbGwgYSBwcm9ibGVtIHdpdGggdGhlIGxhdHRlcgorYmVjYXVzZSB0aGUgInJlZ2VuIiBzY3JpcHQgcmVxdWlyZXMgdGhhdCBQeXRob24gaXMgaW5zdGFsbGVkLiAgU29tZSBtYW51YWwKIGludGVydmVudGlvbiBtYXkgc3RpbGwgYmUgcmVxdWlyZWQuKSAoVGhpcyBoYXMgYmVlbiBmaXhlZCBpbiAxLjRiZXRhMy4pCiAKIC0gTmV3IG1vZHVsZXM6IGVycm5vLCBvcGVyYXRvciAoWFhYKS4KQEAgLTI1NjEyLDggKzI1NjQ1LDggQEAKIAogLSBBZGRlZCBzeXMucGxhdGZvcm0gYW5kIHN5cy5leGVjX3BsYXRmb3JtIGZvciBCaWxsIEphbnNzZW4uCiAKLS0gSW5zdGFsbGF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlbHkgb3ZlcmhhdWxlZC4gICJtYWtlIGluc3RhbGwiIG5vdyBpbnN0YWxscyAKLWV2ZXJ5dGhpbmcsIG5vdCBqdXN0IHRoZSBweXRob24gYmluYXJ5LiAgSW5zdGFsbGF0aW9uIHVzZXMgdGhlIGluc3RhbGwtc2ggCistIEluc3RhbGxhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWx5IG92ZXJoYXVsZWQuICAibWFrZSBpbnN0YWxsIiBub3cgaW5zdGFsbHMKK2V2ZXJ5dGhpbmcsIG5vdCBqdXN0IHRoZSBweXRob24gYmluYXJ5LiAgSW5zdGFsbGF0aW9uIHVzZXMgdGhlIGluc3RhbGwtc2gKIHNjcmlwdCAoYm9ycm93ZWQgZnJvbSBYMTEpIHRvIGluc3RhbGwgZWFjaCBmaWxlLgogCiAtIE5ldyBmdW5jdGlvbnMgaW4gdGhlIHBvc2l4IG1vZHVsZTogbWtmaWZvLCBwbG9jaywgcmVtb3ZlICg9PSB1bmxpbmspLApAQCAtMjU2MjMsNTkgKzI1NjU2LDU5IEBACiAKIC0gU2hhcmVkIGxpYnJhcnkgc3VwcG9ydCBmb3IgRnJlZUJTRC4KIAotLSBUaGUgLS13aXRoLXJlYWRsaW5lIG9wdGlvbiBjYW4gbm93IGJlIHVzZWQgd2l0aG91dCBhIERJUkVDVE9SWSBhcmd1bWVudCwgCi1mb3Igc3lzdGVtcyB3aGVyZSBsaWJyZWFkbGluZS4qIGlzIGluIG9uZSBvZiB0aGUgc3RhbmRhcmQgcGxhY2VzLiAgSXQgaXMgCistIFRoZSAtLXdpdGgtcmVhZGxpbmUgb3B0aW9uIGNhbiBub3cgYmUgdXNlZCB3aXRob3V0IGEgRElSRUNUT1JZIGFyZ3VtZW50LAorZm9yIHN5c3RlbXMgd2hlcmUgbGlicmVhZGxpbmUuKiBpcyBpbiBvbmUgb2YgdGhlIHN0YW5kYXJkIHBsYWNlcy4gIEl0IGlzCiBhbHNvIHBvc3NpYmxlIGZvciBpdCB0byBiZSBhIHNoYXJlZCBsaWJyYXJ5LgogCi0tIFRoZSBleHRlbnNpb24gdGtpbnRlciBoYXMgYmVlbiByZW5hbWVkIHRvIF90a2ludGVyLCB0byBhdm9pZCBjb25mdXNpb24gCi13aXRoIFRraW50ZXIucHkgb25jYXNlIGluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4gIEl0IG5vdyBzdXBwb3J0cyBUayA0LjEgYXMgCistIFRoZSBleHRlbnNpb24gdGtpbnRlciBoYXMgYmVlbiByZW5hbWVkIHRvIF90a2ludGVyLCB0byBhdm9pZCBjb25mdXNpb24KK3dpdGggVGtpbnRlci5weSBvbmNhc2UgaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLiAgSXQgbm93IHN1cHBvcnRzIFRrIDQuMSBhcwogd2VsbCBhcyA0LjAuCiAKLS0gQXV0aG9yJ3MgY2hhbmdlIG9mIGFkZHJlc3MgZnJvbSBDV0kgaW4gQW1zdGVyZGFtLCBUaGUgTmV0aGVybGFuZHMsIHRvIAorLSBBdXRob3IncyBjaGFuZ2Ugb2YgYWRkcmVzcyBmcm9tIENXSSBpbiBBbXN0ZXJkYW0sIFRoZSBOZXRoZXJsYW5kcywgdG8KIENOUkkgaW4gUmVzdG9uLCBWQSwgVVNBLgogCi0tIFRoZSBtYXRoLmh5cG90KCkgZnVuY3Rpb24gaXMgbm93IGFsd2F5cyBhdmFpbGFibGUgKGlmIGl0IGlzbid0IGZvdW5kIGluIAorLSBUaGUgbWF0aC5oeXBvdCgpIGZ1bmN0aW9uIGlzIG5vdyBhbHdheXMgYXZhaWxhYmxlIChpZiBpdCBpc24ndCBmb3VuZCBpbgogdGhlIEMgbWF0aCBsaWJyYXJ5LCBQeXRob24gcHJvdmlkZXMgaXRzIG93biBpbXBsZW1lbnRhdGlvbikuCiAKLS0gVGhlIGxhdGV4IGRvY3VtZW50YXRpb24gaXMgbm93IGNvbXBhdGlibGUgd2l0aCBsYXRleDJlLCB0aGFua3MgdG8gRGF2aWQgCistIFRoZSBsYXRleCBkb2N1bWVudGF0aW9uIGlzIG5vdyBjb21wYXRpYmxlIHdpdGggbGF0ZXgyZSwgdGhhbmtzIHRvIERhdmlkCiBBc2NoZXIuCiAKIC0gVGhlIGV4cHJlc3Npb24geCoqeSBpcyBub3cgZXF1aXZhbGVudCB0byBwb3coeCwgeSkuCiAKIC0gVGhlIGluZGV4aW5nIGV4cHJlc3Npb24geFthLCBiLCBjXSBpcyBub3cgZXF1aXZhbGVudCB0byB4WyhhLCBiLCBjKV0uCiAKLS0gQ29tcGxleCBudW1iZXJzIGFyZSBub3cgc3VwcG9ydGVkLiAgSW1hZ2luYXJ5IGNvbnN0YW50cyBhcmUgd3JpdHRlbiB3aXRoIAotYSAnaicgb3IgJ0onIHByZWZpeCwgZ2VuZXJhbCBjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIAotcGFydCB0byBhbiBpbWFnaW5hcnkgcGFydCwgbGlrZSAzKzRqLiAgQ29tcGxleCBudW1iZXJzIGFyZSBhbHdheXMgc3RvcmVkIGluIAotZmxvYXRpbmcgcG9pbnQgZm9ybSwgc28gdGhpcyBpcyBlcXVpdmFsZW50IHRvIDMuMCs0LjBqLiAgSXQgaXMgYWxzbyAKLXBvc3NpYmxlIHRvIGNyZWF0ZSBjb21wbGV4IG51bWJlcnMgd2l0aCB0aGUgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIAotY29tcGxleChyZSwgW2ltXSkuICBGb3IgdGhlIGZvb3RwcmludC1jb25zY2lvdXMsIGNvbXBsZXggbnVtYmVyIHN1cHBvcnQgY2FuIAorLSBDb21wbGV4IG51bWJlcnMgYXJlIG5vdyBzdXBwb3J0ZWQuICBJbWFnaW5hcnkgY29uc3RhbnRzIGFyZSB3cml0dGVuIHdpdGgKK2EgJ2onIG9yICdKJyBwcmVmaXgsIGdlbmVyYWwgY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbAorcGFydCB0byBhbiBpbWFnaW5hcnkgcGFydCwgbGlrZSAzKzRqLiAgQ29tcGxleCBudW1iZXJzIGFyZSBhbHdheXMgc3RvcmVkIGluCitmbG9hdGluZyBwb2ludCBmb3JtLCBzbyB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gMy4wKzQuMGouICBJdCBpcyBhbHNvCitwb3NzaWJsZSB0byBjcmVhdGUgY29tcGxleCBudW1iZXJzIHdpdGggdGhlIG5ldyBidWlsdC1pbiBmdW5jdGlvbgorY29tcGxleChyZSwgW2ltXSkuICBGb3IgdGhlIGZvb3RwcmludC1jb25zY2lvdXMsIGNvbXBsZXggbnVtYmVyIHN1cHBvcnQgY2FuCiBiZSBkaXNhYmxlZCBieSBkZWZpbmluZyB0aGUgc3ltYm9sIFdJVEhPVVRfQ09NUExFWC4KIAogLSBOZXcgYnVpbHQtaW4gZnVuY3Rpb24gbGlzdCgpIGlzIHRoZSBsb25nLWF3YWl0ZWQgY291bnRlcnBhcnQgb2YgdHVwbGUoKS4KIAotLSBUaGVyZSdzIGEgbmV3ICJjbWF0aCIgbW9kdWxlIHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGZ1bmN0aW9ucyBhcyB0aGUgCi0ibWF0aCIgbGlicmFyeSBidXQgd2l0aCBjb21wbGV4IGFyZ3VtZW50cyBhbmQgcmVzdWx0cy4gIChUaGVyZSBhcmUgdmVyeSAKLWdvb2QgcmVhc29ucyB3aHkgbWF0aC5zcXJ0KC0xKSBzdGlsbCByYWlzZXMgYW4gZXhjZXB0aW9uIC0tIHlvdSBoYXZlIHRvIHVzZSAKKy0gVGhlcmUncyBhIG5ldyAiY21hdGgiIG1vZHVsZSB3aGljaCBwcm92aWRlcyB0aGUgc2FtZSBmdW5jdGlvbnMgYXMgdGhlCisibWF0aCIgbGlicmFyeSBidXQgd2l0aCBjb21wbGV4IGFyZ3VtZW50cyBhbmQgcmVzdWx0cy4gIChUaGVyZSBhcmUgdmVyeQorZ29vZCByZWFzb25zIHdoeSBtYXRoLnNxcnQoLTEpIHN0aWxsIHJhaXNlcyBhbiBleGNlcHRpb24gLS0geW91IGhhdmUgdG8gdXNlCiBjbWF0aC5zcXJ0KC0xKSB0byBnZXQgMWogZm9yIGFuIGFuc3dlci4pCiAKLS0gVGhlIFB5dGhvbi5oIGhlYWRlciBmaWxlICh3aGljaCBpcyByZWFsbHkgdGhlIHNhbWUgYXMgYWxsb2JqZWN0cy5oIGV4Y2VwdCAKLWl0IGRpc2FibGVzIHN1cHBvcnQgZm9yIG9sZCBzdHlsZSBuYW1lcykgbm93IGluY2x1ZGVzIHNldmVyYWwgbW9yZSBmaWxlcywgCistIFRoZSBQeXRob24uaCBoZWFkZXIgZmlsZSAod2hpY2ggaXMgcmVhbGx5IHRoZSBzYW1lIGFzIGFsbG9iamVjdHMuaCBleGNlcHQKK2l0IGRpc2FibGVzIHN1cHBvcnQgZm9yIG9sZCBzdHlsZSBuYW1lcykgbm93IGluY2x1ZGVzIHNldmVyYWwgbW9yZSBmaWxlcywKIHNvIHlvdSBoYXZlIHRvIGhhdmUgZmV3ZXIgI2luY2x1ZGUgc3RhdGVtZW50cyBpbiB0aGUgYXZlcmFnZSBleHRlbnNpb24uCiAKLS0gVGhlIE5ERUJVRyBzeW1ib2wgaXMgbm8gbG9uZ2VyIHVzZWQuICBDb2RlIHRoYXQgdXNlZCB0byBiZSBkZXBlbmRlbnQgb24gCi10aGUgcHJlc2VuY2Ugb2YgTkRFQlVHIGlzIG5vdyBwcmVzZW50IG9uIHRoZSBhYnNlbmNlIG9mIERFQlVHLiAgVFJBQ0VfUkVGUyAKLWFuZCBSRUZfREVCVUcgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gUHlfVFJBQ0VfUkVGUyBhbmQgUHlfUkVGX0RFQlVHLCAKLXJlc3BlY3RpdmVseS4gIEF0IGxvbmcgbGFzdCwgdGhlIHNvdXJjZSBhY3R1YWxseSBjb21waWxlcyBhbmQgbGlua3Mgd2l0aG91dCAKKy0gVGhlIE5ERUJVRyBzeW1ib2wgaXMgbm8gbG9uZ2VyIHVzZWQuICBDb2RlIHRoYXQgdXNlZCB0byBiZSBkZXBlbmRlbnQgb24KK3RoZSBwcmVzZW5jZSBvZiBOREVCVUcgaXMgbm93IHByZXNlbnQgb24gdGhlIGFic2VuY2Ugb2YgREVCVUcuICBUUkFDRV9SRUZTCithbmQgUkVGX0RFQlVHIGhhdmUgYmVlbiByZW5hbWVkIHRvIFB5X1RSQUNFX1JFRlMgYW5kIFB5X1JFRl9ERUJVRywKK3Jlc3BlY3RpdmVseS4gIEF0IGxvbmcgbGFzdCwgdGhlIHNvdXJjZSBhY3R1YWxseSBjb21waWxlcyBhbmQgbGlua3Mgd2l0aG91dAogZXJyb3JzIHdoZW4gdGhpcyBzeW1ib2wgaXMgZGVmaW5lZC4KIAotLSBTZXZlcmFsIHN5bWJvbHMgdGhhdCBkaWRuJ3QgZm9sbG93IHRoZSBuZXcgbmFtaW5nIHNjaGVtZSBoYXZlIGJlZW4gCi1yZW5hbWVkICh1c3VhbGx5IGJ5IGFkZGluZyB0byByZW5hbWUyLmgpIHRvIHVzZSBhIFB5IG9yIF9QeSBwcmVmaXguICBUaGVyZSAKLWFyZSBubyBleHRlcm5hbCBzeW1ib2xzIGxlZnQgd2l0aG91dCBhIFB5IG9yIF9QeSBwcmVmaXgsIG5vdCBldmVuIHRob3NlIAotZGVmaW5lZCBieSBzb3VyY2VzIHRoYXQgd2VyZSBpbmNvcnBvcmF0ZWQgZnJvbSBlbHNld2hlcmUgKHJlZ2V4cHIuYywgCistIFNldmVyYWwgc3ltYm9scyB0aGF0IGRpZG4ndCBmb2xsb3cgdGhlIG5ldyBuYW1pbmcgc2NoZW1lIGhhdmUgYmVlbgorcmVuYW1lZCAodXN1YWxseSBieSBhZGRpbmcgdG8gcmVuYW1lMi5oKSB0byB1c2UgYSBQeSBvciBfUHkgcHJlZml4LiAgVGhlcmUKK2FyZSBubyBleHRlcm5hbCBzeW1ib2xzIGxlZnQgd2l0aG91dCBhIFB5IG9yIF9QeSBwcmVmaXgsIG5vdCBldmVuIHRob3NlCitkZWZpbmVkIGJ5IHNvdXJjZXMgdGhhdCB3ZXJlIGluY29ycG9yYXRlZCBmcm9tIGVsc2V3aGVyZSAocmVnZXhwci5jLAogbWQ1Yy5jKS4gIChNYWNyb3MgYXJlIGEgZGlmZmVyZW50IHN0b3J5Li4uKQogCi0tIFRoZXJlIGFyZSBub3cgdHlwZWRlZnMgZm9yIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gY29uZmlnLmMgYW5kIAorLSBUaGVyZSBhcmUgbm93IHR5cGVkZWZzIGZvciB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIGNvbmZpZy5jIGFuZAogZnJvemVuLmMuCiAKIC0gTmV3IFBZVEhPTl9BUElfVkVSU0lPTiB2YWx1ZSBhbmQgLnB5YyBmaWxlIG1hZ2ljIG51bWJlci4KQEAgLTI1Njg5LDEyNSArMjU3MjIsMTI1IEBACiAtIFRoZSBiaW5oZXggYW5kIGJpbmFzY2lpIG1vZHVsZXMgbm93IGFjdHVhbGx5IHdvcmsuCiAKIC0gVGhlIGNnaSBtb2R1bGUgaGFzIGJlZW4gYWxtb3N0IHRvdGFsbHkgcmV3cml0dGVuIGFuZCBkb2N1bWVudGVkLgotSXQgbm93IHN1cHBvcnRzIGZpbGUgdXBsb2FkIGFuZCBhIG5ldyBkYXRhIHR5cGUgdG8gaGFuZGxlIGZvcm1zIG1vcmUgCitJdCBub3cgc3VwcG9ydHMgZmlsZSB1cGxvYWQgYW5kIGEgbmV3IGRhdGEgdHlwZSB0byBoYW5kbGUgZm9ybXMgbW9yZQogZmxleGlibHkuCiAKIC0gVGhlIGZvcm1hdHRlciBtb2R1bGUgKGZvciB1c2Ugd2l0aCBodG1sbGliKSBoYXMgYmVlbiBvdmVyaGF1bGVkIChhZ2FpbikuCiAKIC0gVGhlIGZ0cGxpYiBtb2R1bGUgbm93IHN1cHBvcnRzIHBhc3NpdmUgbW9kZSBhbmQgaGFzIGRvYyBzdHJpbmdzLgogCi0tIEluIChpZGVhbGx5KSBhbGwgcGxhY2VzIHdoZXJlIGJpbmFyeSBmaWxlcyBhcmUgcmVhZCBvciB3cml0dGVuLCB0aGUgZmlsZSAKLWlzIG5vdyBjb3JyZWN0bHkgb3BlbmVkIGluIGJpbmFyeSBtb2RlICgncmInIG9yICd3YicpIHNvIHRoZSBjb2RlIHdpbGwgd29yayAKKy0gSW4gKGlkZWFsbHkpIGFsbCBwbGFjZXMgd2hlcmUgYmluYXJ5IGZpbGVzIGFyZSByZWFkIG9yIHdyaXR0ZW4sIHRoZSBmaWxlCitpcyBub3cgY29ycmVjdGx5IG9wZW5lZCBpbiBiaW5hcnkgbW9kZSAoJ3JiJyBvciAnd2InKSBzbyB0aGUgY29kZSB3aWxsIHdvcmsKIG9uIE1hYyBvciBQQy4KIAotLSBEdW1teSB2ZXJzaW9ucyBvZiBvcy5wYXRoLmV4cGFuZHZhcnMoKSBhbmQgZXhwYW5kdXNlcigpIGFyZSBub3cgcHJvdmlkZWQgCistIER1bW15IHZlcnNpb25zIG9mIG9zLnBhdGguZXhwYW5kdmFycygpIGFuZCBleHBhbmR1c2VyKCkgYXJlIG5vdyBwcm92aWRlZAogb24gbm9uLVVuaXggcGxhdGZvcm1zLgogCi0tIE1vZHVsZSB1cmxsaWIgbm93IGhhcyB0d28gbmV3IGZ1bmN0aW9ucyB1cmwycGF0aG5hbWUgYW5kIHBhdGhuYW1lMnVybCAKLXdoaWNoIHR1cm4gbG9jYWwgZmlsZW5hbWVzIGludG8gImZpbGU6Li4uIiBVUkxzIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzIAotTmV0c2NhcGUgKHdoeSBiZSBkaWZmZXJlbnQpLiAgaXQgYWxzbyBzdXBwb3J0cyB1cmxyZXRyaWV2ZSgpIHdpdGggYSAKLXBhdGhuYW1lIHBhcmFtZXRlciwgYW5kIGhvbm9ycyB0aGUgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIChodHRwX3Byb3h5IAorLSBNb2R1bGUgdXJsbGliIG5vdyBoYXMgdHdvIG5ldyBmdW5jdGlvbnMgdXJsMnBhdGhuYW1lIGFuZCBwYXRobmFtZTJ1cmwKK3doaWNoIHR1cm4gbG9jYWwgZmlsZW5hbWVzIGludG8gImZpbGU6Li4uIiBVUkxzIHVzaW5nIHRoZSBzYW1lIHJ1bGVzIGFzCitOZXRzY2FwZSAod2h5IGJlIGRpZmZlcmVudCkuICBpdCBhbHNvIHN1cHBvcnRzIHVybHJldHJpZXZlKCkgd2l0aCBhCitwYXRobmFtZSBwYXJhbWV0ZXIsIGFuZCBob25vcnMgdGhlIHByb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyAoaHR0cF9wcm94eQogZXRjLikuICBUaGUgVVJMIHBhcnNpbmcgaGFzIGJlZW4gaW1wcm92ZWQgc29tZXdoYXQsIHRvby4KIAotLSBNaWNybyBpbXByb3ZlbWVudHMgdG8gdXJscGFyc2UuICBBZGRlZCB1cmxwYXJzZS51cmxkZWZyYWcoKSB3aGljaCAKKy0gTWljcm8gaW1wcm92ZW1lbnRzIHRvIHVybHBhcnNlLiAgQWRkZWQgdXJscGFyc2UudXJsZGVmcmFnKCkgd2hpY2gKIHJlbW92ZXMgYSB0cmFpbGluZyBgYCNmcmFnbWVudCcnIGlmIGFueS4KIAogLSBUaGUgbWFpbGJveCBtb2R1bGUgbm93IHN1cHBvcnRzIE1IIHN0eWxlIG1lc3NhZ2UgZGVsaW1pdGVycyBhcyB3ZWxsLgogCi0tIFRoZSBtaGxpYiBtb2R1bGUgY29udGFpbnMgc29tZSBuZXcgZnVuY3Rpb25hbGl0eTogc2V0Y29udGV4dCgpIHRvIHNldCB0aGUgCi1jdXJyZW50IGZvbGRlciBhbmQgcGFyc2VzZXF1ZW5jZSgpIHRvIHBhcnNlIGEgc2VxdWVuY2UgYXMgY29tbW9ubHkgcGFzc2VkIAorLSBUaGUgbWhsaWIgbW9kdWxlIGNvbnRhaW5zIHNvbWUgbmV3IGZ1bmN0aW9uYWxpdHk6IHNldGNvbnRleHQoKSB0byBzZXQgdGhlCitjdXJyZW50IGZvbGRlciBhbmQgcGFyc2VzZXF1ZW5jZSgpIHRvIHBhcnNlIGEgc2VxdWVuY2UgYXMgY29tbW9ubHkgcGFzc2VkCiB0byBNSCBjb21tYW5kcyAoZS5nLiAxLTEwIG9yIGxhc3Q6NSkuCiAKLS0gTmV3IG1vZHVsZSBtaW1pZnkgZm9yIGNvbnZlcnNpb24gdG8gYW5kIGZyb20gTUlNRSBmb3JtYXQgb2YgZW1haWwgCistIE5ldyBtb2R1bGUgbWltaWZ5IGZvciBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIE1JTUUgZm9ybWF0IG9mIGVtYWlsCiBtZXNzYWdlcy4KIAotLSBNb2R1bGUgbmkgbm93IGF1dG9tYXRpY2FsbHkgaW5zdGFsbHMgaXRzZWxmIHdoZW4gZmlyc3QgaW1wb3J0ZWQgLS0gdGhpcyAKLWlzIGFnYWluc3QgdGhlIG5vcm1hbCBydWxlIHRoYXQgbW9kdWxlcyBzaG91bGQgZGVmaW5lIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyAKLWJ1dCBub3QgaW52b2tlIHRoZW0sIGJ1dCBhcHBlYXJzIG1vcmUgdXNlZnVsIGluIHRoZSBjYXNlIHRoYXQgdHdvIAorLSBNb2R1bGUgbmkgbm93IGF1dG9tYXRpY2FsbHkgaW5zdGFsbHMgaXRzZWxmIHdoZW4gZmlyc3QgaW1wb3J0ZWQgLS0gdGhpcworaXMgYWdhaW5zdCB0aGUgbm9ybWFsIHJ1bGUgdGhhdCBtb2R1bGVzIHNob3VsZCBkZWZpbmUgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCitidXQgbm90IGludm9rZSB0aGVtLCBidXQgYXBwZWFycyBtb3JlIHVzZWZ1bCBpbiB0aGUgY2FzZSB0aGF0IHR3bwogZGlmZmVyZW50LCBpbmRlcGVuZGVudCBtb2R1bGVzIHdhbnQgdG8gdXNlIG5pJ3MgZmVhdHVyZXMuCiAKIC0gU29tZSBzbWFsbCBwZXJmb3JtYW5jZSBlbmhhbmNlbWVudHMgaW4gbW9kdWxlIHBpY2tsZS4KIAotLSBTbWFsbCBpbnRlcmZhY2UgY2hhbmdlIHRvIHRoZSBwcm9maWxlLnJ1biooKSBmYW1pbHkgb2YgZnVuY3Rpb25zIC0tIG1vcmUgCistIFNtYWxsIGludGVyZmFjZSBjaGFuZ2UgdG8gdGhlIHByb2ZpbGUucnVuKigpIGZhbWlseSBvZiBmdW5jdGlvbnMgLS0gbW9yZQogc2Vuc2libGUgaGFuZGxpbmcgb2YgcmV0dXJuIHZhbHVlcy4KIAotLSBUaGUgb2ZmaWNpYWxseSByZWdpc3RlcmVkIE1hYyBjcmVhdG9yIGZvciBQeXRob24gZmlsZXMgaXMgJ1B5dGgnLiAgVGhpcyAKKy0gVGhlIG9mZmljaWFsbHkgcmVnaXN0ZXJlZCBNYWMgY3JlYXRvciBmb3IgUHl0aG9uIGZpbGVzIGlzICdQeXRoJy4gIFRoaXMKIHJlcGxhY2VzICdQWVRIJyB3aGljaCB3YXMgdXNlZCBiZWZvcmUgYnV0IG5ldmVyIHJlZ2lzdGVyZWQuCiAKIC0gQWRkZWQgcmVnc3ViLmNhcHdvcmRzKCkuICAoWFhYKQogCi0tIEFkZGVkIHN0cmluZy5jYXB3b3JkcygpLCBzdHJpbmcuY2FwaXRhbGl6ZSgpIGFuZCBzdHJpbmcudHJhbnNsYXRlKCkuICAKKy0gQWRkZWQgc3RyaW5nLmNhcHdvcmRzKCksIHN0cmluZy5jYXBpdGFsaXplKCkgYW5kIHN0cmluZy50cmFuc2xhdGUoKS4KIChYWFgpCiAKLS0gRml4ZWQgYW4gaW50ZXJmYWNlIGJ1ZyBpbiB0aGUgcmV4ZWMgbW9kdWxlOiBpdCB3YXMgaW1wb3NzaWJsZSB0byBwYXNzIGEgCi1ob29rcyBpbnN0YW5jZSB0byB0aGUgUkV4ZWMgY2xhc3MuICByZXhlYyBub3cgYWxzbyBzdXBwb3J0cyB0aGUgZHluYW1pYyAKLWxvYWRpbmcgb2YgbW9kdWxlcyBmcm9tIHNoYXJlZCBsaWJyYXJpZXMuICBTb21lIG90aGVyIGludGVyZmFjZXMgaGF2ZSBiZWVuIAorLSBGaXhlZCBhbiBpbnRlcmZhY2UgYnVnIGluIHRoZSByZXhlYyBtb2R1bGU6IGl0IHdhcyBpbXBvc3NpYmxlIHRvIHBhc3MgYQoraG9va3MgaW5zdGFuY2UgdG8gdGhlIFJFeGVjIGNsYXNzLiAgcmV4ZWMgbm93IGFsc28gc3VwcG9ydHMgdGhlIGR5bmFtaWMKK2xvYWRpbmcgb2YgbW9kdWxlcyBmcm9tIHNoYXJlZCBsaWJyYXJpZXMuICBTb21lIG90aGVyIGludGVyZmFjZXMgaGF2ZSBiZWVuCiBhZGRlZCB0b28uCiAKLS0gTW9kdWxlIHJmYzgyMiBub3cgY2FjaGVzIHRoZSBoZWFkZXJzIGluIGEgZGljdGlvbmFyeSBmb3IgbW9yZSBlZmZpY2llbnQgCistIE1vZHVsZSByZmM4MjIgbm93IGNhY2hlcyB0aGUgaGVhZGVycyBpbiBhIGRpY3Rpb25hcnkgZm9yIG1vcmUgZWZmaWNpZW50CiBsb29rdXAuCiAKLS0gVGhlIHNnbWxsaWIgbW9kdWxlIG5vdyB1bmRlcnN0YW5kcyBhIGxpbWl0ZWQgbnVtYmVyIG9mIFNHTUwgInNob3J0aGFuZHMiIAorLSBUaGUgc2dtbGxpYiBtb2R1bGUgbm93IHVuZGVyc3RhbmRzIGEgbGltaXRlZCBudW1iZXIgb2YgU0dNTCAic2hvcnRoYW5kcyIKIGxpa2UgPEEvLi4uLyBmb3IgPEE+Li4uPC9BPi4gIChJdCdzIG5vdCBjbGVhciB0aGF0IHRoaXMgd2FzIGEgZ29vZCBpZGVhLi4uKQogCi0tIFRoZSB0ZW1wZmlsZSBtb2R1bGUgYWN0dWFsbHkgdHJpZXMgYSBudW1iZXIgb2YgZGlmZmVyZW50IHBsYWNlcyB0byBmaW5kIGEgCi11c2FibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIChUaGlzIHdhcyBwcm9tcHRlZCBieSBjZXJ0YWluIExpbnV4IAotaW5zdGFsbGF0aW9ucyB0aGF0IGFwcGVhciB0byBiZSBtaXNzaW5nIGEgL3Vzci90bXAgZGlyZWN0b3J5LikgW0EgYnVnIGluIAotdGhlIGltcGxlbWVudGF0aW9uIHRoYXQgd291bGQgaWdub3JlIGEgcHJlLWV4aXN0aW5nIHRtcGRpciBnbG9iYWwgaGFzIGJlZW4gCistIFRoZSB0ZW1wZmlsZSBtb2R1bGUgYWN0dWFsbHkgdHJpZXMgYSBudW1iZXIgb2YgZGlmZmVyZW50IHBsYWNlcyB0byBmaW5kIGEKK3VzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAgKFRoaXMgd2FzIHByb21wdGVkIGJ5IGNlcnRhaW4gTGludXgKK2luc3RhbGxhdGlvbnMgdGhhdCBhcHBlYXIgdG8gYmUgbWlzc2luZyBhIC91c3IvdG1wIGRpcmVjdG9yeS4pIFtBIGJ1ZyBpbgordGhlIGltcGxlbWVudGF0aW9uIHRoYXQgd291bGQgaWdub3JlIGEgcHJlLWV4aXN0aW5nIHRtcGRpciBnbG9iYWwgaGFzIGJlZW4KIGZpeGVkIGluIGJldGEzLl0KIAogLSBNdWNoIGltcHJvdmVkIGFuZCBlbmhhbnZlZCBGaWxlRGlhbG9nIG1vZHVsZSBmb3IgVGtpbnRlci4KIAotLSBNYW55IHNtYWxsIGNoYW5nZXMgdG8gVGtpbnRlciwgdG8gYnJpbmcgaXQgbW9yZSBpbiBsaW5lIHdpdGggVGsgNC4wIChhcyAKKy0gTWFueSBzbWFsbCBjaGFuZ2VzIHRvIFRraW50ZXIsIHRvIGJyaW5nIGl0IG1vcmUgaW4gbGluZSB3aXRoIFRrIDQuMCAoYXMKIHdlbGwgYXMgVGsgNC4xKS4KIAotLSBOZXcgc29ja2V0IGludGVyZmFjZXMgaW5jbHVkZSBudG9ocygpLCBudG9obCgpLCBodG9ucygpLCBodG9ubCgpLCBhbmQgCi1zLmR1cCgpLiAgU29ja2V0cyBub3cgd29yayBjb3JyZWN0bHkgb24gV2luZG93cy4gIE9uIFdpbmRvd3MsIHRoZSBidWlsdC1pbiAKLWV4dGVuc2lvbiBpcyBjYWxsZWQgX3NvY2tldCBhbmQgYSB3cmFwcGVyIG1vZHVsZSB3aW4vc29ja2V0LnB5IHByb3ZpZGVzIAotIm1ha2VmaWxlKCkiIGFuZCAiZHVwKCkiIGZ1bmN0aW9uYWxpdHkuICBPbiBXaW5kb3dzLCB0aGUgc2VsZWN0IG1vZHVsZSAKKy0gTmV3IHNvY2tldCBpbnRlcmZhY2VzIGluY2x1ZGUgbnRvaHMoKSwgbnRvaGwoKSwgaHRvbnMoKSwgaHRvbmwoKSwgYW5kCitzLmR1cCgpLiAgU29ja2V0cyBub3cgd29yayBjb3JyZWN0bHkgb24gV2luZG93cy4gIE9uIFdpbmRvd3MsIHRoZSBidWlsdC1pbgorZXh0ZW5zaW9uIGlzIGNhbGxlZCBfc29ja2V0IGFuZCBhIHdyYXBwZXIgbW9kdWxlIHdpbi9zb2NrZXQucHkgcHJvdmlkZXMKKyJtYWtlZmlsZSgpIiBhbmQgImR1cCgpIiBmdW5jdGlvbmFsaXR5LiAgT24gV2luZG93cywgdGhlIHNlbGVjdCBtb2R1bGUKIHdvcmtzIG9ubHkgd2l0aCBzb2NrZXQgb2JqZWN0cy4KIAogLSBCdWdzIGluIGJzZGRiIG1vZHVsZSBmaXhlZCAoZS5nLiBtaXNzaW5nIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzKS4KIAogLSBUaGUgY3Vyc2VzIGV4dGVuc2lvbiBub3cgaW5jbHVkZXMgPG5jdXJzZXMuaD4gd2hlbiBhdmFpbGFibGUuCiAKLS0gVGhlIGdkYm0gbW9kdWxlIG5vdyBzdXBwb3J0cyBvcGVuaW5nIGRhdGFiYXNlcyBpbiAiZmFzdCIgbW9kZSBieSAKKy0gVGhlIGdkYm0gbW9kdWxlIG5vdyBzdXBwb3J0cyBvcGVuaW5nIGRhdGFiYXNlcyBpbiAiZmFzdCIgbW9kZSBieQogc3BlY2lmeWluZyAnZicgYXMgdGhlIHNlY29uZCBjaGFyYWN0ZXIgb3IgdGhlIG1vZGUgc3RyaW5nLgogCi0tIG5ldyB2YXJpYWJsZXMgc3lzLnByZWZpeCBhbmQgc3lzLmV4ZWNfcHJlZml4IHBhc3MgY29ycmVzcG9uZGluZyAKKy0gbmV3IHZhcmlhYmxlcyBzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggcGFzcyBjb3JyZXNwb25kaW5nCiBjb25maWd1cmF0aW9uIG9wdGlvbnMgLyBNYWtlZmlsZSB2YXJpYWJsZXMgdG8gdGhlIFB5dGhvbiBwcm9ncmFtbWVyLgogCi0tIFRoZSBgYG5ldycnIG1vZHVsZSBub3cgc3VwcG9ydHMgY3JlYXRpbmcgbmV3IHVzZXItZGVmaW5lZCBjbGFzc2VzIGFzIHdlbGwgCistIFRoZSBgYG5ldycnIG1vZHVsZSBub3cgc3VwcG9ydHMgY3JlYXRpbmcgbmV3IHVzZXItZGVmaW5lZCBjbGFzc2VzIGFzIHdlbGwKIGFzIGluc3RhbmNlcyB0aGVyZW9mLgogCi0tIFRoZSBzb3VuZGV4IG1vZHVsZSBub3cgc3BvcnRzIGdldF9zb3VuZGV4KCkgdG8gZ2V0IHRoZSBzb3VuZGV4IHZhbHVlIGZvciBhbiAKLWFyYml0cmFyeSBzdHJpbmcgKGZvcm1lcmx5IGl0IHdvdWxkIG9ubHkgZG8gc291bmRleC1iYXNlZCBzdHJpbmcgCistIFRoZSBzb3VuZGV4IG1vZHVsZSBub3cgc3BvcnRzIGdldF9zb3VuZGV4KCkgdG8gZ2V0IHRoZSBzb3VuZGV4IHZhbHVlIGZvciBhbgorYXJiaXRyYXJ5IHN0cmluZyAoZm9ybWVybHkgaXQgd291bGQgb25seSBkbyBzb3VuZGV4LWJhc2VkIHN0cmluZwogY29tcGFyaXNvbikgYXMgd2VsbCBhcyBkb2Mgc3RyaW5ncy4KIAotLSBOZXcgb2JqZWN0IHR5cGUgImNvYmplY3QiIHRvIHNhZmVseSB3cmFwIHZvaWQgcG9pbnRlcnMgZm9yIHBhc3NpbmcgdGhlbSAKKy0gTmV3IG9iamVjdCB0eXBlICJjb2JqZWN0IiB0byBzYWZlbHkgd3JhcCB2b2lkIHBvaW50ZXJzIGZvciBwYXNzaW5nIHRoZW0KIGJldHdlZW4gdmFyaW91cyBleHRlbnNpb24gbW9kdWxlcy4KIAogLSBNb3JlIGVmZmljaWVudCBjb21wdXRhdGlvbiBvZiBmbG9hdCoqc21hbGxpbnQuCiAKLS0gVGhlIG15c3RlcmlvdXMgYnVnIHdoZXJlYnkgIngueCIgKHR3byBvY2N1cnJlbmNlcyBvZiB0aGUgc2FtZSAKLW9uZS1jaGFyYWN0ZXIgbmFtZSkgdHlwZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUgd291bGQgc29tZXRpbWVzIGZhaWwgCistIFRoZSBteXN0ZXJpb3VzIGJ1ZyB3aGVyZWJ5ICJ4LngiICh0d28gb2NjdXJyZW5jZXMgb2YgdGhlIHNhbWUKK29uZS1jaGFyYWN0ZXIgbmFtZSkgdHlwZWQgZnJvbSB0aGUgY29tbWFuZGxpbmUgd291bGQgc29tZXRpbWVzIGZhaWwKIG15c3RlcmlvdXNseS4KIAotLSBUaGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHJlYWRsaW5lIGZ1bmN0aW9uIGNhbiBub3cgYmUgaW52b2tlZCBieSBhIEMgCistIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcmVhZGxpbmUgZnVuY3Rpb24gY2FuIG5vdyBiZSBpbnZva2VkIGJ5IGEgQwogZXh0ZW5zaW9uIHRocm91Z2ggUHlPU19SZWFkbGluZUluaXQoKS4KIAotLSBUaGVyZSdzIG5vdyBhbiBleHRlcm5hbGx5IHZpc2libGUgcG9pbnRlciBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIHdoaWNoIAorLSBUaGVyZSdzIG5vdyBhbiBleHRlcm5hbGx5IHZpc2libGUgcG9pbnRlciBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIHdoaWNoCiBjYW4gYmUgY2hhbmdlZCBieSBhbiBlbWJlZGRpbmcgYXBwbGljYXRpb24uCiAKLS0gVGhlIGFyZ3VtZW50IHBhcnNpbmcgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IGEgbmV3IGZvcm1hdCBjaGFyYWN0ZXIgJ0QnIHRvIAorLSBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgbm93IHN1cHBvcnQgYSBuZXcgZm9ybWF0IGNoYXJhY3RlciAnRCcgdG8KIHNwZWNpZnkgY29tcGxleCBudW1iZXJzLgogCiAtIFZhcmlvdXMgbWVtb3J5IGxlYWtzIHBsdWdnZWQgYW5kIGJ1Z3MgZml4ZWQuCiAKLS0gSW1wcm92ZWQgc3VwcG9ydCBmb3IgcG9zaXggdGhyZWFkcyAobm93IHRoYXQgcmVhbCBpbXBsZW1lbnRhdGlvbnMgYXJlIAorLSBJbXByb3ZlZCBzdXBwb3J0IGZvciBwb3NpeCB0aHJlYWRzIChub3cgdGhhdCByZWFsIGltcGxlbWVudGF0aW9ucyBhcmUKIGJlZ2lubmluZyB0byBhcGVwYXIpLiAgU3RpbGwgbm8gZnVsbHkgZnVuY3Rpb25pbmcgc2VtYXBob3Jlcy4KIAotLSBTb21lIHZhcmlvdXMgYW5kIHN1bmRyeSBpbXByb3ZlbWVudHMgYW5kIG5ldyBlbnRyaWVzIGluIHRoZSBUb29scyAKKy0gU29tZSB2YXJpb3VzIGFuZCBzdW5kcnkgaW1wcm92ZW1lbnRzIGFuZCBuZXcgZW50cmllcyBpbiB0aGUgVG9vbHMKIGRpcmVjdG9yeS4KIAogCkBAIC0yNzQxNyw3ICsyNzQ1MCw3IEBACiBUaGUgbGltaXQgb24gdGhlIHNpemUgb2YgdGhlICpydW4tdGltZSogc3RhY2sgaGFzIGNvbXBsZXRlbHkgYmVlbgogcmVtb3ZlZCAtLSB0aGlzIG1lYW5zIHRoYXQgdHVwbGUgb3IgbGlzdCBkaXNwbGF5cyBjYW4gY29udGFpbiBhbnkKIG51bWJlciBvZiBlbGVtZW50cyAoZm9ybWVybHkgbW9yZSB0aGFuIDUwIHdvdWxkIGNyYXNoIHRoZQotaW50ZXJwcmV0ZXIpLiAKK2ludGVycHJldGVyKS4KIAogCiBDaGFuZ2VzIHRvIGV4aXN0aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCmluZGV4IGQ1NzBiZDQuLjlkZjJmYzcgMTAwNjQ0Ci0tLSBhL01pc2MvTkVXUworKysgYi9NaXNjL05FV1MKQEAgLTEsMTM4ICsxLDI0OCBAQAot77u/KysrKysrKysrKysKKysrKysrKysrKysrCiBQeXRob24gTmV3cwogKysrKysrKysrKysKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjRyYzE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiB0YmEKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IFRCQQogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjQ4OTE6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGF0IFB5dGhvbiBzdGFydHVwIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IKLSAgb2Ygc3RkaW4gKDApLCBzdGRvdXQgKDEpIG9yIHN0ZGVyciAoMikgaXMgY2xvc2VkIHdoaWxlIFB5dGhvbiBpcyBjcmVhdGluZwotICBzeXMuc3RkaW4sIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgb2JqZWN0cy4gVGhlc2UgYXR0cmlidXRlcyBhcmUgbm93IHNldAotICB0byBOb25lIGlmIHRoZSBjcmVhdGlvbiBvZiB0aGUgb2JqZWN0IGZhaWxlZCwgaW5zdGVhZCBvZiByYWlzaW5nIGFuIE9TRXJyb3IKLSAgZXhjZXB0aW9uLiBJbml0aWFsIHBhdGNoIHdyaXR0ZW4gYnkgTWFyY28gUGFvbGluaS4KLQotLSBJc3N1ZSAjMjExNjc6IE5BTiBvcGVyYXRpb25zIGFyZSBub3cgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiBweXRob24gaXMKLSAgY29tcGlsZWQgd2l0aCBJQ0MgZXZlbiBpZiAtZnAtbW9kZWwgc3RyaWN0IGlzIG5vdCBzcGVjaWZpZWQuCi0KLS0gSXNzdWUgIzQzOTU6IEJldHRlciB0ZXN0aW5nIGFuZCBkb2N1bWVudGF0aW9uIG9mIGJpbmFyeSBvcGVyYXRvcnMuCi0gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzI0NDY3OiBGaXhlZCBwb3NzaWJsZSBidWZmZXIgb3Zlci1yZWFkIGluIGJ5dGVhcnJheS4gVGhlIGJ5dGVhcnJheQotICBvYmplY3Qgbm93IGFsd2F5cyBhbGxvY2F0ZXMgcGxhY2UgZm9yIHRyYWlsaW5nIG51bGwgYnl0ZSBhbmQgaXQncyBidWZmZXIgbm93Ci0gIGlzIGFsd2F5cyBudWxsLXRlcm1pbmF0ZWQuCi0KLS0gSXNzdWUgIzI0MTE1OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSwgUHlPYmplY3RfTm90KCksCi0gIFB5T2JqZWN0X0lzSW5zdGFuY2UoKSwgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCkgYW5kIF9QeURpY3RfQ29udGFpbnMoKQotICB0byBjaGVjayBmb3IgYW5kIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5LgotCi0tIElzc3VlICMyNDI1NzogRml4ZWQgc3lzdGVtIGVycm9yIGluIHRoZSBjb21wYXJpc29uIG9mIGZha2VkCi0gIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KLQotLSBJc3N1ZSAjMjI5Mzk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcmF0b3Igb2JqZWN0LiAgUGF0Y2ggYnkKLSAgQ2xlbWVudCBSb3VhdWx0LgotCi0tIElzc3VlICMyMzk4NTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gd2hlbiBkZWxldGluZyBhIHNsaWNlIGZyb20KLSAgdGhlIGZyb250IG9mIGEgYnl0ZWFycmF5IGFuZCB0aGVuIGFwcGVuZGluZyBzb21lIG90aGVyIGJ5dGVzIGRhdGEuCi0KLS0gSXNzdWUgIzI0MTAyOiBGaXhlZCBleGNlcHRpb24gdHlwZSBjaGVja2luZyBpbiBzdGFuZGFyZCBlcnJvciBoYW5kbGVycy4KLQotLSBJc3N1ZSAjMjM3NTc6IFB5U2VxdWVuY2VfVHVwbGUoKSBpbmNvcnJlY3RseSBjYWxsZWQgdGhlIGNvbmNyZXRlIGxpc3QgQVBJCi0gIHdoZW4gdGhlIGRhdGEgd2FzIGEgbGlzdCBzdWJjbGFzcy4KLQotLSBJc3N1ZSAjMjQ0MDc6IEZpeCBjcmFzaCB3aGVuIGRpY3QgaXMgbXV0YXRlZCB3aGlsZSBiZWluZyB1cGRhdGVkLgotCi0tIElzc3VlICMyNDA5NjogTWFrZSB3YXJuaW5ncy53YXJuX2V4cGxpY2l0IG1vcmUgcm9idXN0IGFnYWluc3QgbXV0YXRpb24gb2YgdGhlCi0gIHdhcm5pbmdzLmZpbHRlcnMgbGlzdC4KLQotLSBJc3N1ZSAjMjM5OTY6IEF2b2lkIGEgY3Jhc2ggd2hlbiBhIGRlbGVnYXRlZCBnZW5lcmF0b3IgcmFpc2VzIGFuCi0gIHVubm9ybWFsaXplZCBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCi0KLS0gSXNzdWUgIzI0MDIyOiBGaXggdG9rZW5pemVyIGNyYXNoIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZS4KLQotLSBJc3N1ZSAjMjMzMDk6IEF2b2lkIGEgZGVhZGxvY2sgYXQgc2h1dGRvd24gaWYgYSBkYWVtb24gdGhyZWFkIGlzIGFib3J0ZWQKLSAgd2hpbGUgaXQgaXMgaG9sZGluZyBhIGxvY2sgdG8gYSBidWZmZXJlZCBJL08gb2JqZWN0LCBhbmQgdGhlIG1haW4gdGhyZWFkCi0gIHRyaWVzIHRvIHVzZSB0aGUgc2FtZSBJL08gb2JqZWN0ICh0eXBpY2FsbHkgc3Rkb3V0IG9yIHN0ZGVycikuICBBIGZhdGFsCi0gIGVycm9yIGlzIGVtaXR0ZWQgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMjI5Nzc6IEZpeGVkIGZvcm1hdHRpbmcgV2luZG93cyBlcnJvciBtZXNzYWdlcyBvbiBXaW5lLgotICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICMyMzgwMzogRml4ZWQgc3RyLnBhcnRpdGlvbigpIGFuZCBzdHIucnBhcnRpdGlvbigpIHdoZW4gYSBzZXBhcmF0b3IKLSAgaXMgd2lkZXIgdGhlbiBwYXJ0aXRpb25lZCBzdHJpbmcuCi0KLS0gSXNzdWUgIzIzMTkyOiBGaXhlZCBnZW5lcmF0b3IgbGFtYmRhcy4gIFBhdGNoIGJ5IEJydW5vIENhdWV0LgotCi0tIElzc3VlICMyMzYyOTogRml4IHRoZSBkZWZhdWx0IF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHZhcmlhYmxlLXNpemVkCi0gIG9iamVjdHMuCi0KLS0gSXNzdWUgIzI0MDQ0OiBGaXggcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxpc3Quc29ydCBpbiBvdXQgb2YKLSAgbWVtb3J5IGNvbmRpdGlvbnMuCi0KLS0gSXNzdWUgIzIxMzU0OiBQeUNGdW5jdGlvbl9OZXcgZnVuY3Rpb24gaXMgZXhwb3NlZCBieSBweXRob24gRExMIGFnYWluLgotCi0tIElzc3VlICMyMzgxMjogRml4IGFzeW5jaW8uUXVldWUuZ2V0KCkgdG8gYXZvaWQgbG9vc2luZyBpdGVtcyBvbiBjYW5jZWxsYXRpb24uCi0gIFBhdGNoIGJ5IEd1c3Rhdm8gSi4gQS4gTS4gQ2FybmVpcm8uCi0KIExpYnJhcnkKIC0tLS0tLS0KIAogLSBJc3N1ZSAjMjM1MTc6IEZpeCByb3VuZGluZyBpbiBmcm9tdGltZXN0YW1wKCkgYW5kIHV0Y2Zyb210aW1lc3RhbXAoKSBtZXRob2RzCiAgIG9mIGRhdGV0aW1lLmRhdGV0aW1lOiBtaWNyb3NlY29uZHMgYXJlIG5vdyByb3VuZGVkIHRvIG5lYXJlc3Qgd2l0aCB0aWVzCiAgIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyIChST1VORF9IQUxGX0VWRU4pLCBpbnN0ZWFkIG9mIGJlaW5nIHJvdW5kaW5nCi0gIHRvd2FyZHMgemVybyAoUk9VTkRfRE9XTikuIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlc2UgbWV0aG9kcyB1c2UgdGhlIHNhbWUKLSAgcm91bmRpbmcgbW9kZSB0aGFuIGRhdGV0aW1lLnRpbWVkZWx0YSB0byBrZWVwIHRoZSBwcm9wZXJ0eToKKyAgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoUk9VTkRfRkxPT1IpLiBJdCdzIGltcG9ydGFudCB0aGF0IHRoZXNlIG1ldGhvZHMgdXNlCisgIHRoZSBzYW1lIHJvdW5kaW5nIG1vZGUgdGhhbiBkYXRldGltZS50aW1lZGVsdGEgdG8ga2VlcCB0aGUgcHJvcGVydHk6CiAgIChkYXRldGltZSgxOTcwLDEsMSkgKyB0aW1lZGVsdGEoc2Vjb25kcz10KSkgPT0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KS4KICAgSXQgYWxzbyB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGJ5IHJvdW5kKGZsb2F0KSBmb3IgZXhhbXBsZS4KIAorLSBJc3N1ZSAjMjUxNTU6IEZpeCBkYXRldGltZS5kYXRldGltZS5ub3coKSBhbmQgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkgb24KKyAgV2luZG93cyB0byBzdXBwb3J0IGRhdGUgYWZ0ZXIgeWVhciAyMDM4LiBJdCB3YXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4KKyAgUHl0aG9uIDMuNS4wLgorCistIElzc3VlICMyNTEwODogT21pdHRlZCBpbnRlcm5hbCBmcmFtZXMgaW4gdHJhY2ViYWNrIGZ1bmN0aW9ucyBwcmludF9zdGFjaygpLAorICBmb3JtYXRfc3RhY2soKSwgYW5kIGV4dHJhY3Rfc3RhY2soKSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzI1MTE4OiBGaXggYSByZWdyZXNzaW9uIG9mIFB5dGhvbiAzLjUuMCBpbiBvcy53YWl0cGlkKCkgb24gV2luZG93cy4KKwogLSBJc3N1ZSAjMjQ2ODQ6IHNvY2tldC5zb2NrZXQuZ2V0YWRkcmluZm8oKSBub3cgY2FsbHMKICAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgZW5jb2RlKCkgbWV0aG9kIG9mIHRoZQogICBob3N0LCB0byBoYW5kbGUgY29ycmVjdGx5IGN1c3RvbSBzdHJpbmcgd2l0aCBhbiBlbmNvZGUoKSBtZXRob2Qgd2hpY2ggZG9lc24ndAogICByZXR1cm4gYSBieXRlIHN0cmluZy4gVGhlIGVuY29kZXIgb2YgdGhlIElETkEgY29kZWMgaXMgbm93IGNhbGxlZCBkaXJlY3RseQogICBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIGVuY29kZSgpIG1ldGhvZCBvZiB0aGUgc3RyaW5nLgogCi0tIElzc3VlICMyNDk4Mjogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIHdpdGggdGhlICJ6aXAiIGZvcm1hdCBub3cgYWRkcyBlbnRyaWVzCi0gIGZvciBkaXJlY3RvcmllcyAoaW5jbHVkaW5nIGVtcHR5IGRpcmVjdG9yaWVzKSBpbiBaSVAgZmlsZS4KKy0gSXNzdWUgIzI1MDYwOiBDb3JyZWN0bHkgY29tcHV0ZSBzdGFjayB1c2FnZSBvZiB0aGUgQlVJTERfTUFQIG9wY29kZS4KIAogLSBJc3N1ZSAjMjQ4NTc6IENvbXBhcmluZyBjYWxsX2FyZ3MgdG8gYSBsb25nIHNlcXVlbmNlIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBhCiAgIGJvb2xlYW4gcmVzdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uICBQYXRjaCBieSBBIEthcHR1ci4KIAotLSBJc3N1ZSAjMjUwMTk6IEZpeGVkIGEgY3Jhc2ggY2F1c2VkIGJ5IHNldHRpbmcgbm9uLXN0cmluZyBrZXkgb2YgZXhwYXQgcGFyc2VyLgotICBCYXNlZCBvbiBwYXRjaCBieSBKb2huIExlaXRjaC4KLQotLSBJc3N1ZSAjMjQ5MTc6IHRpbWVfc3RyZnRpbWUoKSBidWZmZXIgb3Zlci1yZWFkLgotCiAtIElzc3VlICMyMzE0NDogTWFrZSBzdXJlIHRoYXQgSFRNTFBhcnNlci5mZWVkKCkgcmV0dXJucyBhbGwgdGhlIGRhdGEsIGV2ZW4KICAgd2hlbiBjb252ZXJ0X2NoYXJyZWZzIGlzIFRydWUuCiAKKy0gSXNzdWUgIzI0OTgyOiBzaHV0aWwubWFrZV9hcmNoaXZlKCkgd2l0aCB0aGUgInppcCIgZm9ybWF0IG5vdyBhZGRzIGVudHJpZXMKKyAgZm9yIGRpcmVjdG9yaWVzIChpbmNsdWRpbmcgZW1wdHkgZGlyZWN0b3JpZXMpIGluIFpJUCBmaWxlLgorCistIElzc3VlICMyNTAxOTogRml4ZWQgYSBjcmFzaCBjYXVzZWQgYnkgc2V0dGluZyBub24tc3RyaW5nIGtleSBvZiBleHBhdCBwYXJzZXIuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IEpvaG4gTGVpdGNoLgorCiAtIElzc3VlICMxNjE4MDogRXhpdCBwZGIgaWYgZmlsZSBoYXMgc3ludGF4IGVycm9yLCBpbnN0ZWFkIG9mIHRyYXBwaW5nIHVzZXIKICAgaW4gYW4gaW5maW5pdGUgbG9vcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCistIElzc3VlICMyNDg5MTogRml4IGEgcmFjZSBjb25kaXRpb24gYXQgUHl0aG9uIHN0YXJ0dXAgaWYgdGhlIGZpbGUgZGVzY3JpcHRvcgorICBvZiBzdGRpbiAoMCksIHN0ZG91dCAoMSkgb3Igc3RkZXJyICgyKSBpcyBjbG9zZWQgd2hpbGUgUHl0aG9uIGlzIGNyZWF0aW5nCisgIHN5cy5zdGRpbiwgc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBvYmplY3RzLiBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBub3cgc2V0CisgIHRvIE5vbmUgaWYgdGhlIGNyZWF0aW9uIG9mIHRoZSBvYmplY3QgZmFpbGVkLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gT1NFcnJvcgorICBleGNlcHRpb24uIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBNYXJjbyBQYW9saW5pLgorCistIElzc3VlICMyNDk5MjogRml4IGVycm9yIGhhbmRsaW5nIGFuZCBhIHJhY2UgY29uZGl0aW9uIChyZWxhdGVkIHRvIGdhcmJhZ2UKKyAgY29sbGVjdGlvbikgaW4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgY29uc3RydWN0b3IuCisKKy0gSXNzdWUgIzI0ODgxOiBGaXhlZCBzZXR0aW5nIGJpbmFyeSBtb2RlIGluIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlSU8KKyAgb24gV2luZG93cyBhbmQgQ3lnd2luLiAgUGF0Y2ggZnJvbSBBa2lyYSBMaS4KKwogLSBJc3N1ZSAjMjExMTI6IEZpeCByZWdyZXNzaW9uIGluIHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZSBvbiBzdWJjbGFzc2VzLgogICBQYXRjaCBmcm9tIEJlcmtlciBQZWtzYWcuCiAKLS0gSXNzdWUgIzI0OTMxOiBJbnN0YW5jZXMgb2Ygc3ViY2xhc3NlcyBvZiBuYW1lZHR1cGxlcyBoYXZlIHRoZWlyIG93biBfX2RpY3RfXwotICB3aGljaCBicmVha3MgdGhlIGluaGVyaXRlZCBfX2RpY3RfXyBwcm9wZXJ0eSBhbmQgYnJlYWtzIHRoZSBfYXNkaWN0KCkgbWV0aG9kLgotICBSZW1vdmVkIHRoZSBfX2RpY3RfXyBwcm9wZXJ0eSB0byBwcmV2ZW50IHRoZSBjb25mbGljdCBhbmQgZml4ZWQgX2FzZGljdCgpLgotCiAtIElzc3VlICMyNDc2NDogY2dpLkZpZWxkU3RvcmFnZS5yZWFkX211bHRpKCkgbm93IGlnbm9yZXMgdGhlIENvbnRlbnQtTGVuZ3RoCiAgIGhlYWRlciBpbiBwYXJ0IGhlYWRlcnMuIFBhdGNoIHdyaXR0ZW4gYnkgUGV0ZXIgTGFuZHJ5IGFuZCByZXZpZXdlZCBieSBQaWVycmUKICAgUXVlbnRlbC4KIAorLSBJc3N1ZSAjMjQ5MTM6IEZpeCBvdmVycnVuIGVycm9yIGluIGRlcXVlLmluZGV4KCkuCisgIEZvdW5kIGJ5IEpvaG4gTGVpdGNoIGFuZCBCcnljZSBEYXJsaW5nLgorCiAtIElzc3VlICMyNDc3NDogRml4IGRvY3N0cmluZyBpbiBodHRwLnNlcnZlci50ZXN0LiBQYXRjaCBmcm9tIENoaXUtSHNpYW5nIEhzdS4KIAogLSBJc3N1ZSAjMjExNTk6IEltcHJvdmUgbWVzc2FnZSBpbiBjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvci4KICAgUGF0Y2ggZnJvbSDFgXVrYXN6IExhbmdhLgogCi0tIElzc3VlICMyMzg4ODogSGFuZGxlIGZyYWN0aW9uYWwgdGltZSBpbiBjb29raWUgZXhwaXJ5LiBQYXRjaCBieSBzc2guCistIElzc3VlICMyMDM2MjogSG9ub3VyIFRlc3RDYXNlLmxvbmdNZXNzYWdlIGNvcnJlY3RseSBpbiBhc3NlcnRSZWdleC4KKyAgUGF0Y2ggZnJvbSBJbGlhIEt1cmVua292LgorCistIElzc3VlICMyMzU3MjogRml4ZWQgZnVuY3Rvb2xzLnNpbmdsZWRpc3BhdGNoIG9uIGNsYXNzZXMgd2l0aCBmYWxzeQorICBtZXRhY2xhc3Nlcy4gIFBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNDk1MjogQ2xhcmlmeSB0aGUgZGVmYXVsdCBzaXplIGFyZ3VtZW50IG9mIHN0YWNrX3NpemUoKSBpbgorICB0aGUgInRocmVhZGluZyIgYW5kICJfdGhyZWFkIiBtb2R1bGVzLiBQYXRjaCBmcm9tIE1hdHRpcC4KKworLSBJc3N1ZSAjMjM3MjU6IE92ZXJoYXVsIHRlbXBmaWxlIGRvY3MuIE5vdGUgZGVwcmVjYXRlZCBzdGF0dXMgb2YgbWt0ZW1wLgorICBQYXRjaCBmcm9tIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsuCisKKy0gSXNzdWUgIzI0ODA4OiBVcGRhdGUgdGhlIHR5cGVzIG9mIHNvbWUgUHlUeXBlT2JqZWN0IGZpZWxkcy4gIFBhdGNoIGJ5CisgIEpvc2VwaCBXZXN0b24uCisKKy0gSXNzdWUgIzIyODEyOiBGaXggdW5pdHRlc3QgZGlzY292ZXJ5IGV4YW1wbGVzLgorICBQYXRjaCBmcm9tIFBhbSBNY0EnTnVsdHkuCisKK1Rlc3RzCistLS0tLQorCistIFBDYnVpbGRccnQuYmF0IG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKKyAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNDkxMDogV2luZG93cyBNU0lzIG5vdyBoYXZlIHVuaXF1ZSBkaXNwbGF5IG5hbWVzLgorCistIElzc3VlICMyNDk4NjogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIFB5dGhvbiBvbiBXaW5kb3dzIHdpdGhvdXQgZXJyb3JzCisgIHdoZW4gZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgYXZhaWxhYmxlLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI1MDIyOiBSZW1vdmVkIHZlcnkgb3V0ZGF0ZWQgUEMvZXhhbXBsZV9udC8gZGlyZWN0b3J5LgorCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBmaW5hbD8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDktMTMKKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI1MDcxOiBXaW5kb3dzIGluc3RhbGxlciBzaG91bGQgbm90IHJlcXVpcmUgVGFyZ2V0RGlyCisgIHBhcmFtZXRlciB3aGVuIGluc3RhbGxpbmcgcXVpZXRseS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCByZWxlYXNlIGNhbmRpZGF0ZSA0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA5LTA5CisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjUwMjk6IEZpeGVzIE1lbW9yeUVycm9yIGluIHRlc3Rfc3RycHRpbWUuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNTAyNzogUmV2ZXJ0cyBwYXJ0aWFsLXN0YXRpYyBidWlsZCBvcHRpb25zIGFuZCBhZGRzCisgIHZjcnVudGltZTE0MC5kbGwgdG8gV2luZG93cyBpbnN0YWxsYXRpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgcmVsZWFzZSBjYW5kaWRhdGUgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wOS0wNworCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQzMDU6IFByZXZlbnQgaW1wb3J0IHN1YnN5c3RlbSBzdGFjayBmcmFtZXMgZnJvbSBiZWluZyBjb3VudGVkCisgIGJ5IHRoZSB3YXJuaW5ncy53YXJuKHN0YWNrbGV2ZWw9KSBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzI0OTEyOiBQcmV2ZW50IF9fY2xhc3NfXyBhc3NpZ25tZW50IHRvIGltbXV0YWJsZSBidWlsdC1pbiBvYmplY3RzLgorCistIElzc3VlICMyNDk3NTogRml4IEFTVCBjb21waWxhdGlvbiBmb3IgUEVQIDQ0OCBzeW50YXguCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjQ5MTc6IHRpbWVfc3RyZnRpbWUoKSBidWZmZXIgb3Zlci1yZWFkLgorCistIElzc3VlICMyNDc0ODogVG8gcmVzb2x2ZSBhIGNvbXBhdGliaWxpdHkgcHJvYmxlbSBmb3VuZCB3aXRoIHB5MmV4ZSBhbmQKKyAgcHl3aW4zMiwgaW1wLmxvYWRfZHluYW1pYygpIG9uY2UgYWdhaW4gaWdub3JlcyBwcmV2aW91c2x5IGxvYWRlZCBtb2R1bGVzCisgIHRvIHN1cHBvcnQgUHl0aG9uIG1vZHVsZXMgcmVwbGFjaW5nIHRoZW1zZWx2ZXMgd2l0aCBleHRlbnNpb24gbW9kdWxlcy4KKyAgUGF0Y2ggYnkgUGV0ciBWaWt0b3Jpbi4KKworLSBJc3N1ZSAjMjQ2MzU6IEZpeGVkIGEgYnVnIGluIHR5cGluZy5weSB3aGVyZSBpc2luc3RhbmNlKFtdLCB0eXBpbmcuSXRlcmFibGUpCisgIHdvdWxkIHJldHVybiBUcnVlIG9uY2UsIHRoZW4gRmFsc2Ugb24gc3Vic2VxdWVudCBjYWxscy4KKworLSBJc3N1ZSAjMjQ5ODk6IEZpeGVkIGJ1ZmZlciBvdmVycmVhZCBpbiBCeXRlc0lPLnJlYWRsaW5lKCkgaWYgYSBwb3NpdGlvbiBpcworICBzZXQgYmV5b25kIHNpemUuICBCYXNlZCBvbiBwYXRjaCBieSBKb2huIExlaXRjaC4KKworLSBJc3N1ZSAjMjQ5MTM6IEZpeCBvdmVycnVuIGVycm9yIGluIGRlcXVlLmluZGV4KCkuCisgIEZvdW5kIGJ5IEpvaG4gTGVpdGNoIGFuZCBCcnljZSBEYXJsaW5nLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIHJlbGVhc2UgY2FuZGlkYXRlIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDgtMjUKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0NzY5OiBJbnRlcnByZXRlciBub3cgc3RhcnRzIHByb3Blcmx5IHdoZW4gZHluYW1pYyBsb2FkaW5nCisgIGlzIGRpc2FibGVkLiAgUGF0Y2ggYnkgUGV0ciBWaWt0b3Jpbi4KKworLSBJc3N1ZSAjMjExNjc6IE5BTiBvcGVyYXRpb25zIGFyZSBub3cgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiBweXRob24gaXMKKyAgY29tcGlsZWQgd2l0aCBJQ0MgZXZlbiBpZiAtZnAtbW9kZWwgc3RyaWN0IGlzIG5vdCBzcGVjaWZpZWQuCisKKy0gSXNzdWUgIzI0NDkyOiBBICJwYWNrYWdlIiBsYWNraW5nIGEgX19uYW1lX18gYXR0cmlidXRlIHdoZW4gdHJ5aW5nIHRvIHBlcmZvcm0KKyAgYSBgYGZyb20gLi4gaW1wb3J0IC4uLmBgIHN0YXRlbWVudCB3aWxsIHRyaWdnZXIgYW4gSW1wb3J0RXJyb3IgaW5zdGVhZCBvZiBhbgorICBBdHRyaWJ1dGVFcnJvci4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNDg0NzogUmVtb3ZlcyB2Y3J1bnRpbWUxNDAuZGxsIGRlcGVuZGVuY3kgZnJvbSBUY2wvVGsuCisKKy0gSXNzdWUgIzI0ODM5OiBwbGF0Zm9ybS5fc3lzY21kX3ZlciByYWlzZXMgRGVwcmVjYXRpb25XYXJuaW5nCisKKy0gSXNzdWUgIzI0ODY3OiBGaXggVGFzay5nZXRfc3RhY2soKSBmb3IgJ2FzeW5jIGRlZicgY29yb3V0aW5lcworCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIHJlbGVhc2UgY2FuZGlkYXRlIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDgtMDkKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0NjY3OiBSZXNpemUgb2RpY3QgaW4gYWxsIGNhc2VzIHRoYXQgdGhlIHVuZGVybHlpbmcgZGljdCByZXNpemVzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI0ODI0OiBTaWduYXR1cmVzIG9mIGNvZGVjcy5lbmNvZGUoKSBhbmQgY29kZWNzLmRlY29kZSgpIG5vdyBhcmUKKyAgY29tcGF0aWJsZSB3aXRoIHB5ZG9jLgorCistIElzc3VlICMyNDYzNDogSW1wb3J0aW5nIHV1aWQgc2hvdWxkIG5vdCB0cnkgdG8gbG9hZCBsaWJjIG9uIFdpbmRvd3MKKworLSBJc3N1ZSAjMjQ3OTg6IF9tc3ZjY29tcGlsZXIucHkgZG9lc24ndCBwcm9wZXJseSBzdXBwb3J0IG1hbmlmZXN0cworCistIElzc3VlICM0Mzk1OiBCZXR0ZXIgdGVzdGluZyBhbmQgZG9jdW1lbnRhdGlvbiBvZiBiaW5hcnkgb3BlcmF0b3JzLgorICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyMzk3MzogVXBkYXRlIHR5cGluZy5weSBmcm9tIEdpdEh1YiByZXBvLgogCiAtIElzc3VlICMyMzAwNDogbW9ja19vcGVuKCkgbm93IHJlYWRzIGJpbmFyeSBkYXRhIGNvcnJlY3RseSB3aGVuIHRoZSB0eXBlIG9mCiAgIHJlYWRfZGF0YSBpcyBieXRlcy4gIEluaXRpYWwgcGF0Y2ggYnkgQWFyb24gSGlsbC4KIAorLSBJc3N1ZSAjMjM4ODg6IEhhbmRsZSBmcmFjdGlvbmFsIHRpbWUgaW4gY29va2llIGV4cGlyeS4gUGF0Y2ggYnkgc3NoLgorCiAtIElzc3VlICMyMzY1MjogTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHRoZSBzZWxlY3QgbW9kdWxlIGFnYWluc3QgdGhlCiAgIGxpYmMgaGVhZGVycyBmcm9tIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLCB3aGljaCBkbyBub3QgaW5jbHVkZSBzb21lCiAgIEVQT0xMIG1hY3Jvcy4gIFBhdGNoIGJ5IE1hdHQgRnJhbmsuCkBAIC0xNTEsMzQgKzI2MSwxMTcgQEAKIAogLSBJc3N1ZSAjMTk0NTA6IFVwZGF0ZSBXaW5kb3dzIGFuZCBPUyBYIGluc3RhbGxlciBidWlsZHMgdG8gdXNlIFNRTGl0ZSAzLjguMTEuCiAKKy0gSXNzdWUgIzE3NTI3OiBBZGQgUEFUQ0ggdG8gd3NnaXJlZi52YWxpZGF0b3IuIFBhdGNoIGZyb20gTHVjYSBTYmFyZGVsbGEuCisKKy0gSXNzdWUgIzIzODEyOiBGaXggYXN5bmNpby5RdWV1ZS5nZXQoKSB0byBhdm9pZCBsb29zaW5nIGl0ZW1zIG9uIGNhbmNlbGxhdGlvbi4KKyAgUGF0Y2ggYnkgR3VzdGF2byBKLiBBLiBNLiBDYXJuZWlyby4KKworLSBJc3N1ZSAjMjQ3OTE6IEZpeCBncmFtbWFyIHJlZ3Jlc3Npb24gZm9yIGNhbGwgc3ludGF4OiAnZygqYSBvciBiKScuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjM2NzI6IEFsbG93IElkbGUgdG8gZWRpdCBhbmQgcnVuIGZpbGVzIHdpdGggYXN0cmFsIGNoYXJzIGluIG5hbWUuCisgIFBhdGNoIGJ5IE1vaGQgU2FuYWQgWmFraSBSaXp2aS4KKworLSBJc3N1ZSAjMjQ3NDU6IElkbGUgZWRpdG9yIGRlZmF1bHQgZm9udC4gU3dpdGNoIGZyb20gQ291cmllciB0bworICBwbGF0Zm9ybS1zZW5zaXRpdmUgVGtGaXhlZEZvbnQuICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IGN1cnJlbnQgY3VzdG9taXplZAorICBmb250IHNlbGVjdGlvbnMuICBJZiB0aGVyZSBpcyBhIHByb2JsZW0sIGVkaXQgJEhPTUUvLmlkbGVyYy9jb25maWctbWFpbi5jZmcKKyAgYW5kIHJlbW92ZSAnZm9udHh4eCcgZW50cmllcyBmcm9tIFtFZGl0b3IgV2luZG93XS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjExOTI6IElkbGUgZWRpdG9yLiBXaGVuIGEgZmlsZSBpcyBydW4sIHB1dCBpdHMgbmFtZSBpbiB0aGUgcmVzdGFydCBiYXIuCisgIERvIG5vdCBwcmludCBmYWxzZSBwcm9tcHRzLiBPcmlnaW5hbCBwYXRjaCBieSBBZG5hbiBVbWVyLgorCistIElzc3VlICMxMzg4NDogSWRsZSBtZW51cy4gUmVtb3ZlIHRlYXJvZmYgbGluZXMuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0MTI5OiBDbGFyaWZ5IHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbmFtZSByZXNvbHV0aW9uLgorICBUaGlzIGluY2x1ZGVzIHJlbW92aW5nIHRoZSBhc3N1bXB0aW9uIHRoYXQgcmVhZGVycyB3aWxsIGJlIGZhbWlsaWFyIHdpdGggdGhlCisgIG5hbWUgcmVzb2x1dGlvbiBzY2hlbWUgUHl0aG9uIHVzZWQgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBsZXhpY2FsCisgIHNjb3BpbmcgZm9yIGZ1bmN0aW9uIG5hbWVzcGFjZXMuIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjA3Njk6IEltcHJvdmUgcmVsb2FkKCkgZG9jcy4gUGF0Y2ggYnkgRG9yaWFuIFB1bGEuCisKKy0gSXNzdWUgIzIzNTg5OiBSZW1vdmUgZHVwbGljYXRlIHNlbnRlbmNlIGZyb20gdGhlIEZBUS4gIFBhdGNoIGJ5IFlvbmd6aGkgUGFuLgorCistIElzc3VlICMyNDcyOTogQ29ycmVjdCBJTyB0dXRvcmlhbCB0byBtYXRjaCBpbXBsZW1lbnRhdGlvbiByZWdhcmRpbmcKKyAgZW5jb2RpbmcgcGFyYW1ldGVyIHRvIG9wZW4gZnVuY3Rpb24uCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNDc1MTogV2hlbiBydW5uaW5nIHJlZ3J0ZXN0IHdpdGggdGhlIGBgLXdgYCBjb21tYW5kIGxpbmUgb3B0aW9uLAorICBhIHRlc3QgcnVuIGlzIG5vIGxvbmdlciBtYXJrZWQgYXMgYSBmYWlsdXJlIGlmIGFsbCB0ZXN0cyBzdWNjZWVkIHdoZW4KKyAgcmUtcnVuLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE1LTA3LTI2CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzU3MzogUmVzdG9yZWQgb3B0aW1pemF0aW9uIG9mIGJ5dGVzLnJmaW5kKCkgYW5kIGJ5dGVhcnJheS5yZmluZCgpCisgIGZvciBzaW5nbGUtYnl0ZSBhcmd1bWVudCBvbiBMaW51eC4KKworLSBJc3N1ZSAjMjQ1Njk6IE1ha2UgUEVQIDQ0OCBkaWN0aW9uYXJ5IGV2YWx1YXRpb24gbW9yZSBjb25zaXN0ZW50LgorCistIElzc3VlICMyNDU4MzogRml4IGNyYXNoIHdoZW4gc2V0IGlzIG11dGF0ZWQgd2hpbGUgYmVpbmcgdXBkYXRlZC4KKworLSBJc3N1ZSAjMjQ0MDc6IEZpeCBjcmFzaCB3aGVuIGRpY3QgaXMgbXV0YXRlZCB3aGlsZSBiZWluZyB1cGRhdGVkLgorCistIElzc3VlICMyNDYxOTogTmV3IGFwcHJvYWNoIGZvciB0b2tlbml6aW5nIGFzeW5jL2F3YWl0LiBBcyBhIGNvbnNlcXVlbmNlLAorICBpcyBpcyBub3cgcG9zc2libGUgdG8gaGF2ZSBvbmUtbGluZSAnYXN5bmMgZGVmIGZvbygpOiBhd2FpdCAuLicgZnVuY3Rpb25zLgorCistIElzc3VlICMyNDY4NzogUGx1ZyByZWZsZWFrIG9uIFN5bnRheEVycm9yIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMKKyAgYW5ub3RhdGlvbnMuCisKKy0gSXNzdWUgIzE1OTQ0OiBtZW1vcnl2aWV3OiBBbGxvdyBhcmJpdHJhcnkgZm9ybWF0cyB3aGVuIGNhc3RpbmcgdG8gYnl0ZXMuCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMjM0NDE6IHJjb21wbGV0ZXIgbm93IHByaW50cyBhIHRhYiBjaGFyYWN0ZXIgaW5zdGVhZCBvZiBkaXNwbGF5aW5nCiAgIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZvciBhbiBlbXB0eSB3b3JkLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJ0aW4gU2VrZXJhLgogCi0tIElzc3VlICMyNDczNTogRml4IGludmFsaWQgbWVtb3J5IGFjY2VzcyBpbgotICBpdGVydG9vbHMuY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQoKS4KLQotLSBJc3N1ZSAjMTc1Mjc6IEFkZCBQQVRDSCB0byB3c2dpcmVmLnZhbGlkYXRvci4gUGF0Y2ggZnJvbSBMdWNhIFNiYXJkZWxsYS4KLQogLSBJc3N1ZSAjMjQ2ODM6IEZpeGVkIGNyYXNoZXMgaW4gX2pzb24gZnVuY3Rpb25zIGNhbGxlZCB3aXRoIGFyZ3VtZW50cyBvZgogICBpbmFwcHJvcHJpYXRlIHR5cGUuCiAKIC0gSXNzdWUgIzIxNjk3OiBzaHV0aWwuY29weXRyZWUoKSBub3cgY29ycmVjdGx5IGhhbmRsZXMgc3ltYm9saWMgbGlua3MgdGhhdAogICBwb2ludCB0byBkaXJlY3Rvcmllcy4gIFBhdGNoIGJ5IEVkdWFyZG8gU2VhYnJhIGFuZCBUaG9tYXMgS2x1eXZlci4KIAorLSBJc3N1ZSAjMTQzNzM6IEZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGdjLmNvbGxlY3QoKSBpcyBjYWxsZWQgZHVyaW5nCisgIGNvbnN0cnVjdGluZyBscnVfY2FjaGUgKEMgaW1wbGVtZW50YXRpb24pLgorCistIElzc3VlICMyNDY5NTogRml4IGEgcmVncmVzc2lvbiBpbiB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uKCkuICBJZgorICBleGNfdHJhY2ViYWNrIGlzIE5vbmUgd2Ugc2hvdWxkbid0IHByaW50IGEgdHJhY2ViYWNrIGhlYWRlciBsaWtlIGRlc2NyaWJlZAorICBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KKwogLSBJc3N1ZSAjMjQ2MjA6IFJhbmRvbS5zZXRzdGF0ZSgpIG5vdyB2YWxpZGF0ZXMgdGhlIHZhbHVlIG9mIHN0YXRlIGxhc3QgZWxlbWVudC4KIAorLSBJc3N1ZSAjMjI0ODU6IEZpeGVkIGFuIGlzc3VlIHRoYXQgY2F1c2VkIGBpbnNwZWN0LmdldHNvdXJjZWAgdG8gcmV0dXJuCisgIGluY29ycmVjdCByZXN1bHRzIG9uIG5lc3RlZCBmdW5jdGlvbnMuCisKIC0gSXNzdWUgIzIyMTUzOiBJbXByb3ZlIHVuaXR0ZXN0IGRvY3MuIFBhdGNoIGZyb20gTWFydGluIFBhbnRlciBhbmQgZXZpbHplcm8uCiAKKy0gSXNzdWUgIzI0NTgwOiBTeW1ib2xpYyBncm91cCByZWZlcmVuY2VzIHRvIG9wZW4gZ3JvdXAgaW4gcmUgcGF0dGVybnMgbm93IGFyZQorICBleHBsaWNpdGx5IGZvcmJpZGRlbiBhcyB3ZWxsIGFzIG51bWVyaWMgZ3JvdXAgcmVmZXJlbmNlcy4KKwogLSBJc3N1ZSAjMjQyMDY6IEZpeGVkIF9fZXFfXyBhbmQgX19uZV9fIG1ldGhvZHMgb2YgaW5zcGVjdCBjbGFzc2VzLgogCi0tIElzc3VlICMyMTc1MDogbW9ja19vcGVuLnJlYWRfZGF0YSBjYW4gbm93IGJlIHJlYWQgZnJvbSBlYWNoIGluc3RhbmNlLCBhcyBpdAotICBjb3VsZCBpbiBQeXRob24gMy4zLgotCi0tIElzc3VlICMyMzI0NzogRml4IGEgY3Jhc2ggaW4gdGhlIFN0cmVhbVdyaXRlci5yZXNldCgpIG9mIENKSyBjb2RlY3MuCistIElzc3VlICMyNDYzMTogRml4ZWQgcmVncmVzc2lvbiBpbiB0aGUgdGltZWl0IG1vZHVsZSB3aXRoIG11bHRpbGluZSBzZXR1cC4KIAogLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCiAgIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCiAKKy0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKKyAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKKwogLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCiAKIC0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCkBAIC0xODYsNiArMzc5LDU5IEBACiAtIElzc3VlICMyNDI1OTogdGFyZmlsZSBub3cgcmFpc2VzIGEgUmVhZEVycm9yIGlmIGFuIGFyY2hpdmUgaXMgdHJ1bmNhdGVkCiAgIGluc2lkZSBhIGRhdGEgc2VnbWVudC4KIAorLSBJc3N1ZSAjMTUwMTQ6IFNNVFAuYXV0aCgpIGFuZCBTTVRQLmxvZ2luKCkgbm93IHN1cHBvcnQgUkZDIDQ5NTQncyBvcHRpb25hbAorICBpbml0aWFsLXJlc3BvbnNlIGFyZ3VtZW50IHRvIHRoZSBTTVRQIEFVVEggY29tbWFuZC4KKworLSBJc3N1ZSAjMjQ2Njk6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIGZvciAnYXN5bmMgZGVmJyBmdW5jdGlvbnMuCisgIFBhdGNoIGJ5IEthaSBHcm9uZXIuCisKKy0gSXNzdWUgIzI0Njg4OiBhc3QuZ2V0X2RvY3N0cmluZygpIGZvciAnYXN5bmMgZGVmJyBmdW5jdGlvbnMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNDYwMzogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIGFuZCBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMCisgIDEuMC4yZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNy0wNQorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQ0Njc6IEZpeGVkIHBvc3NpYmxlIGJ1ZmZlciBvdmVyLXJlYWQgaW4gYnl0ZWFycmF5LiBUaGUgYnl0ZWFycmF5CisgIG9iamVjdCBub3cgYWx3YXlzIGFsbG9jYXRlcyBwbGFjZSBmb3IgdHJhaWxpbmcgbnVsbCBieXRlIGFuZCBpdCdzIGJ1ZmZlciBub3cKKyAgaXMgYWx3YXlzIG51bGwtdGVybWluYXRlZC4KKworLSBVcGdyYWRlIHRvIFVuaWNvZGUgOC4wLjAuCisKKy0gSXNzdWUgIzI0MzQ1OiBBZGQgUHlfdHBfZmluYWxpemUgc2xvdCBmb3IgdGhlIHN0YWJsZSBBQkkuCisKKy0gSXNzdWUgIzI0NDAwOiBJbnRyb2R1Y2UgYSBkaXN0aW5jdCB0eXBlIGZvciBQRVAgNDkyIGNvcm91dGluZXM7IGFkZAorICB0eXBlcy5Db3JvdXRpbmVUeXBlLCBpbnNwZWN0LmdldGNvcm91dGluZXN0YXRlLCBpbnNwZWN0LmdldGNvcm91dGluZWxvY2FsczsKKyAgY29yb3V0aW5lcyBubyBsb25nZXIgdXNlIENPX0dFTkVSQVRPUiBmbGFnOyBzeXMuc2V0X2Nvcm91dGluZV93cmFwcGVyCisgIHdvcmtzIG9ubHkgZm9yICdhc3luYyBkZWYnIGNvcm91dGluZXM7IGluc3BlY3QuaXNjb3JvdXRpbmUgbm8gbG9uZ2VyCisgIHVzZXMgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSwgaXQncyBpbnRlbmRlZCB0byB0ZXN0IGZvciBwdXJlICdhc3luYyBkZWYnCisgIGNvcm91dGluZXMgb25seTsgYWRkIG5ldyBvcGNvZGU6IEdFVF9ZSUVMRF9GUk9NX0lURVI7IGZpeCBnZW5lcmF0b3JzIHdyYXBwZXIKKyAgdXNlZCBpbiB0eXBlcy5jb3JvdXRpbmUgdG8gYmUgaW5zdGFuY2Ugb2YgY29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvcjsKKyAgY29sbGVjdGlvbnMuYWJjLkF3YWl0YWJsZSBhbmQgY29sbGVjdGlvbnMuYWJjLkNvcm91dGluZSBjYW4gbm8gbG9uZ2VyCisgIGJlIHVzZWQgdG8gZGV0ZWN0IGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzLS11c2UgaW5zcGVjdC5pc2F3YWl0YWJsZQorICBpbnN0ZWFkLgorCistIElzc3VlICMyNDQ1MDogQWRkIGdpX3lpZWxkZnJvbSB0byBnZW5lcmF0b3JzIGFuZCBjcl9hd2FpdCB0byBjb3JvdXRpbmVzLgorICBDb250cmlidXRlZCBieSBCZW5ubyBMZXNsaWUgYW5kIFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMxOTIzNTogQWRkIG5ldyBSZWN1cnNpb25FcnJvciBleGNlcHRpb24uIFBhdGNoIGJ5IEdlb3JnIEJyYW5kbC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMTc1MDogbW9ja19vcGVuLnJlYWRfZGF0YSBjYW4gbm93IGJlIHJlYWQgZnJvbSBlYWNoIGluc3RhbmNlLCBhcyBpdAorICBjb3VsZCBpbiBQeXRob24gMy4zLgorCiAtIElzc3VlICMyNDU1MjogRml4IHVzZSBhZnRlciBmcmVlIGluIGFuIGVycm9yIGNhc2Ugb2YgdGhlIF9waWNrbGUgbW9kdWxlLgogCiAtIElzc3VlICMyNDUxNDogdGFyZmlsZSBub3cgdG9sZXJhdGVzIG51bWJlciBmaWVsZHMgY29uc2lzdGluZyBvZiBvbmx5CkBAIC0yMDYsMjQgKzQ1MiwxOTcgQEAKIC0gSXNzdWUgIzI0MzM2OiBUaGUgY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yIG5vdyB3b3JrcyB3aXRoIGZ1bmN0aW9ucyB3aXRoCiAgIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAiZnVuYyIgYW5kICJzZWxmIi4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCiAKKy0gSXNzdWUgIzI0NTIyOiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBqc29uIGFjY2VsZXJhdG9yIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjQ0ODk6IGVuc3VyZSBhIHByZXZpb3VzbHkgc2V0IEMgZXJybm8gZG9lc24ndCBkaXN0dXJiIGNtYXRoLnBvbGFyKCkuCiAKKy0gSXNzdWUgIzI0NDA4OiBGaXhlZCBBdHRyaWJ1dGVFcnJvciBpbiBtZWFzdXJlKCkgYW5kIG1ldHJpY3MoKSBtZXRob2RzIG9mCisgIHRraW50ZXIuRm9udC4KKworLSBJc3N1ZSAjMTQzNzM6IEMgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBjYW4gYmUgdXNlZCB3aXRoCisgIG1ldGhvZHMuCisKKy0gSXNzdWUgIzI0MzQ3OiBTZXQgS2V5RXJyb3IgaWYgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IgcmV0dXJucyBOVUxMLgorCistIElzc3VlICMyNDM0ODogRHJvcCBzdXBlcmZsdW91cyBpbmNyZWYvZGVjcmVmLgorCistIElzc3VlICMyNDM1OTogQ2hlY2sgZm9yIGNoYW5nZWQgT3JkZXJlZERpY3Qgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uLgorCistIElzc3VlICMyNDM2ODogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyBpbiBPcmRlcmVkRGljdCBtZXRob2RzLgorCistIElzc3VlICMyNDM2MjogU2ltcGxpZnkgdGhlIEMgT3JkZXJlZERpY3QgZmFzdCBub2RlcyByZXNpemUgbG9naWMuCisKKy0gSXNzdWUgIzI0Mzc3OiBGaXggYSByZWYgbGVhayBpbiBPcmRlcmVkRGljdC5fX3JlcHJfXy4KKworLSBJc3N1ZSAjMjQzNjk6IERlZmVuZCBhZ2FpbnN0IGtleS1jaGFuZ2VzIGR1cmluZyBpdGVyYXRpb24uCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNDM3MzogX3Rlc3RtdWx0aXBoYXNlIGFuZCB4eGxpbWl0ZWQgbm93IHVzZSB0cF90cmF2ZXJzZSBhbmQKKyAgdHBfZmluYWxpemUgdG8gYXZvaWQgcmVmZXJlbmNlIGxlYWtzIGVuY291bnRlcmVkIHdoZW4gY29tYmluaW5nIHRwX2RlYWxsb2MKKyAgd2l0aCBQeVR5cGVfRnJvbVNwZWMgKHNlZSBpc3N1ZSAjMTY2OTAgZm9yIGRldGFpbHMpCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQ0NTg6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIGNvdmVyIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIGZvcgorICBleHRlbnNpb24gbW9kdWxlcyAoUEVQIDQ4OSkuIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKKy0gSXNzdWUgIzI0MzUxOiBDbGFyaWZ5IHdoYXQgaXMgbWVhbnQgYnkgImlkZW50aWZpZXIiIGluIHRoZSBjb250ZXh0IG9mCisgIHN0cmluZy5UZW1wbGF0ZSBpbnN0YW5jZXMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNDQzMjogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIGFuZCBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMCisgIDEuMC4yYy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wNS0zMQorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQyODQ6IFRoZSBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBtZXRob2RzIG9mIHRoZSBzdHIgY2xhc3Mgbm8gbG9uZ2VyCisgIHJldHVybiBUcnVlIHdoZW4gZmluZGluZyB0aGUgZW1wdHkgc3RyaW5nIGFuZCB0aGUgaW5kZXhlcyBhcmUgY29tcGxldGVseSBvdXQKKyAgb2YgcmFuZ2UuCisKKy0gSXNzdWUgIzI0MTE1OiBVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSwgUHlPYmplY3RfTm90KCksCisgIFB5T2JqZWN0X0lzSW5zdGFuY2UoKSwgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCkgYW5kIF9QeURpY3RfQ29udGFpbnMoKQorICB0byBjaGVjayBmb3IgYW5kIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5LgorCistIElzc3VlICMyNDMyODogRml4IGltcG9ydGluZyBvbmUgY2hhcmFjdGVyIGV4dGVuc2lvbiBtb2R1bGVzLgorCistIElzc3VlICMxMTIwNTogSW4gZGljdGlvbmFyeSBkaXNwbGF5cywgZXZhbHVhdGUgdGhlIGtleSBiZWZvcmUgdGhlIHZhbHVlLgorCistIElzc3VlICMyNDI4NTogRml4ZWQgcmVncmVzc2lvbiB0aGF0IHByZXZlbnRlZCBpbXBvcnRpbmcgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgZnJvbSBpbnNpZGUgcGFja2FnZXMuIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjMyNDc6IEZpeCBhIGNyYXNoIGluIHRoZSBTdHJlYW1Xcml0ZXIucmVzZXQoKSBvZiBDSksgY29kZWNzLgorCistIElzc3VlICMyNDI3MDogQWRkIG1hdGguaXNjbG9zZSgpIGFuZCBjbWF0aC5pc2Nsb3NlKCkgZnVuY3Rpb25zIGFzIHBlciBQRVAgNDg1LgorICBDb250cmlidXRlZCBieSBDaHJpcyBCYXJrZXIgYW5kIFRhbCBFaW5hdC4KKwogLSBJc3N1ZSAjNTYzMzogRml4ZWQgdGltZWl0IHdoZW4gdGhlIHN0YXRlbWVudCBpcyBhIHN0cmluZyBhbmQgdGhlIHNldHVwIGlzIG5vdC4KIAogLSBJc3N1ZSAjMjQzMjY6IEZpeGVkIGF1ZGlvb3AucmF0ZWN2KCkgd2l0aCBub24tZGVmYXVsdCB3ZWlnaHRCIGFyZ3VtZW50LgogICBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZCBNb29yZS4KIAotLSBJc3N1ZSAjMjM4NDA6IHRva2VuaXplLm9wZW4oKSBub3cgY2xvc2VzIHRoZSB0ZW1wb3JhcnkgYmluYXJ5IGZpbGUgb24gZXJyb3IKLSAgdG8gZml4IGEgcmVzb3VyY2Ugd2FybmluZy4KKy0gSXNzdWUgIzE2OTkxOiBBZGQgYSBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyMzkzNDogRml4IGluc3BlY3Quc2lnbmF0dXJlIHRvIGZhaWwgY29ycmVjdGx5IGZvciBidWlsdGluIHR5cGVzCisgIGxhY2tpbmcgc2lnbmF0dXJlIGluZm9ybWF0aW9uLiAgSW5pdGlhbCBwYXRjaCBieSBKYW1lcyBQb3dlbGwuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDUtMjQKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI0Mjc2OiBGaXhlZCBvcHRpbWl6YXRpb24gb2YgcHJvcGVydHkgZGVzY3JpcHRvciBnZXR0ZXIuCisKKy0gSXNzdWUgIzI0MjY4OiBQRVAgNDg5OiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgorCistIElzc3VlICMyMzk1NTogQWRkIHB5dmVudi5jZmcgb3B0aW9uIHRvIHN1cHByZXNzIHJlZ2lzdHJ5L2Vudmlyb25tZW50CisgIGxvb2t1cCBmb3IgZ2VuZXJhdGluZyBzeXMucGF0aCBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNDI1NzogRml4ZWQgc3lzdGVtIGVycm9yIGluIHRoZSBjb21wYXJpc29uIG9mIGZha2VkCisgIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKworLSBJc3N1ZSAjMjI5Mzk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcmF0b3Igb2JqZWN0LiAgUGF0Y2ggYnkKKyAgQ2xlbWVudCBSb3VhdWx0LgorCistIElzc3VlICMyMzk4NTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gd2hlbiBkZWxldGluZyBhIHNsaWNlIGZyb20KKyAgdGhlIGZyb250IG9mIGEgYnl0ZWFycmF5IGFuZCB0aGVuIGFwcGVuZGluZyBzb21lIG90aGVyIGJ5dGVzIGRhdGEuCisKKy0gSXNzdWUgIzI0MTAyOiBGaXhlZCBleGNlcHRpb24gdHlwZSBjaGVja2luZyBpbiBzdGFuZGFyZCBlcnJvciBoYW5kbGVycy4KKworLSBJc3N1ZSAjMTUwMjc6IFRoZSBVVEYtMzIgZW5jb2RlciBpcyBub3cgM3ggdG8gN3ggZmFzdGVyLgorCistIElzc3VlICMyMzI5MDogT3B0aW1pemUgc2V0X21lcmdlKCkgZm9yIGNhc2VzIHdoZXJlIHRoZSB0YXJnZXQgaXMgZW1wdHkuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthLikKKworLSBJc3N1ZSAjMjI5MjogUEVQIDQ0ODogQWRkaXRpb25hbCBVbnBhY2tpbmcgR2VuZXJhbGl6YXRpb25zLgorCistIElzc3VlICMyNDA5NjogTWFrZSB3YXJuaW5ncy53YXJuX2V4cGxpY2l0IG1vcmUgcm9idXN0IGFnYWluc3QgbXV0YXRpb24gb2YgdGhlCisgIHdhcm5pbmdzLmZpbHRlcnMgbGlzdC4KKworLSBJc3N1ZSAjMjM5OTY6IEF2b2lkIGEgY3Jhc2ggd2hlbiBhIGRlbGVnYXRlZCBnZW5lcmF0b3IgcmFpc2VzIGFuCisgIHVubm9ybWFsaXplZCBTdG9wSXRlcmF0aW9uIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCisKKy0gSXNzdWUgIzIzOTEwOiBPcHRpbWl6ZSBwcm9wZXJ0eSgpIGdldHRlciBjYWxscy4gIFBhdGNoIGJ5IEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzIzOTExOiBNb3ZlIHBhdGgtYmFzZWQgaW1wb3J0bGliIGJvb3RzdHJhcCBjb2RlIHRvIGEgc2VwYXJhdGUKKyAgZnJvemVuIG1vZHVsZS4KKworLSBJc3N1ZSAjMjQxOTI6IEZpeCBuYW1lc3BhY2UgcGFja2FnZSBpbXBvcnRzLgorCistIElzc3VlICMyNDAyMjogRml4IHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUuCisKKy0gSXNzdWUgIzk5NTE6IEFkZGVkIGEgaGV4KCkgbWV0aG9kIHRvIGJ5dGVzLCBieXRlYXJyYXksIGFuZCBtZW1vcnl2aWV3LgorCistIElzc3VlICMyMjkwNjogUEVQIDQ3OTogQ2hhbmdlIFN0b3BJdGVyYXRpb24gaGFuZGxpbmcgaW5zaWRlIGdlbmVyYXRvcnMuCisKKy0gSXNzdWUgIzI0MDE3OiBQRVAgNDkyOiBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDM3MzogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlKCkuICBCYXNlZCBvbgorICBwYXRjaGVzIGJ5IE1hdHQgSm9pbmVyIGFuZCBBbGV4ZXkgS2FjaGF5ZXYuCisKKy0gSXNzdWUgIzI0MjMwOiBUaGUgdGVtcGZpbGUgbW9kdWxlIG5vdyBhY2NlcHRzIGJ5dGVzIGZvciBwcmVmaXgsIHN1ZmZpeCBhbmQgZGlyCisgIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYnl0ZXMgaW4gc3VjaCBzaXR1YXRpb25zIChtYXRjaGluZyB0aGUgb3MgbW9kdWxlIEFQSXMpLgorCistIElzc3VlICMyMjE4OTogY29sbGVjdGlvbnMuVXNlclN0cmluZyBub3cgc3VwcG9ydHMgX19nZXRuZXdhcmdzX18oKSwKKyAgX19ybW9kX18oKSwgY2FzZWZvbGQoKSwgZm9ybWF0X21hcCgpLCBpc3ByaW50YWJsZSgpLCBhbmQgbWFrZXRyYW5zKCkuCisgIFBhdGNoIGJ5IEpvZSBKZXZuaWsuCisKKy0gSXNzdWUgIzI0MjQ0OiBQcmV2ZW50cyB0ZXJtaW5hdGlvbiB3aGVuIGFuIGludmFsaWQgZm9ybWF0IHN0cmluZyBpcworICBlbmNvdW50ZXJlZCBvbiBXaW5kb3dzIGluIHN0cmZ0aW1lLgorCistIElzc3VlICMyMzk3MzogUEVQIDQ4NDogQWRkIHRoZSB0eXBpbmcgbW9kdWxlLgorCistIElzc3VlICMyMzA4NjogVGhlIGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSgpIGFic3RyYWN0IGJhc2UgY2xhc3MgYWRkZWQKKyAgKnN0YXJ0KiBhbmQgKnN0b3AqIHBhcmFtZXRlcnMgdG8gdGhlIGluZGV4KCkgbWl4aW4uCisgIFBhdGNoIGJ5IERldmluIEplYW5waWVycmUuCisKKy0gSXNzdWUgIzIwMDM1OiBSZXBsYWNlZCB0aGUgYGB0a2ludGVyLl9maXhgYCBtb2R1bGUgdXNlZCBmb3Igc2V0dGluZyB1cCB0aGUKKyAgVGNsL1RrIGVudmlyb25tZW50IG9uIFdpbmRvd3Mgd2l0aCBhIHByaXZhdGUgZnVuY3Rpb24gaW4gdGhlIGBgX3RraW50ZXJgYAorICBtb2R1bGUgdGhhdCBtYWtlcyBubyBwZXJtYW5lbnQgY2hhbmdlcyB0byB0aGUgZW52aXJvbm1lbnQuCiAKIC0gSXNzdWUgIzI0MjU3OiBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgaW4gc3FsaXRlMy5Sb3cgY29uc3RydWN0b3Igd2l0aCBmYWtlZAogICBjdXJzb3IgdHlwZS4KIAorLSBJc3N1ZSAjMTU4MzY6IGFzc2VydFJhaXNlcygpLCBhc3NlcnRSYWlzZXNSZWdleCgpLCBhc3NlcnRXYXJucygpIGFuZAorICBhc3NlcnRXYXJuc1JlZ2V4KCkgYXNzZXJ0bWVudHMgbm93IGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudAorICB0byBwcmV2ZW50IHBvc3NpYmxlIHVzZXIgZXJyb3IuICBCYXNlZCBvbiBwYXRjaCBieSBEYW5pZWwgV2FnbmVyLUhhbGwuCisKKy0gSXNzdWUgIzk4NTg6IEFkZCBtaXNzaW5nIG1ldGhvZCBzdHVicyB0byBfaW8uUmF3SU9CYXNlLiAgUGF0Y2ggYnkgTGF1cmEKKyAgUnVwcHJlY2h0LgorCistIElzc3VlICMyMjk1NTogYXR0cmdldHRlciwgaXRlbWdldHRlciBhbmQgbWV0aG9kY2FsbGVyIG9iamVjdHMgaW4gdGhlIG9wZXJhdG9yCisgIG1vZHVsZSBub3cgc3VwcG9ydCBwaWNrbGluZy4gIEFkZGVkIHJlYWRhYmxlIGFuZCBldmFsdWFibGUgcmVwciBmb3IgdGhlc2UKKyAgb2JqZWN0cy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvc2ggUm9zZW5iZXJnLgorCiAtIElzc3VlICMyMjEwNzogdGVtcGZpbGUuZ2V0dGVtcGRpcigpIGFuZCB0ZW1wZmlsZS5ta2R0ZW1wKCkgbm93IHRyeSBhZ2FpbgogICB3aGVuIGEgZGlyZWN0b3J5IHdpdGggdGhlIGNob3NlbiBuYW1lIGFscmVhZHkgZXhpc3RzIG9uIFdpbmRvd3MgYXMgd2VsbCBhcwogICBvbiBVbml4LiAgdGVtcGZpbGUubWtzdGVtcCgpIG5vdyBmYWlscyBlYXJseSBpZiBwYXJlbnQgZGlyZWN0b3J5IGlzIG5vdAogICB2YWxpZCAobm90IGV4aXN0cyBvciBpcyBhIGZpbGUpIG9uIFdpbmRvd3MuCiAKKy0gSXNzdWUgIzIzNzgwOiBJbXByb3ZlZCBlcnJvciBtZXNzYWdlIGluIG9zLnBhdGguam9pbigpIHdpdGggc2luZ2xlIGFyZ3VtZW50LgorCiAtIElzc3VlICM2NTk4OiBJbmNyZWFzZWQgdGltZSBwcmVjaXNpb24gYW5kIHJhbmRvbSBudW1iZXIgcmFuZ2UgaW4KICAgZW1haWwudXRpbHMubWFrZV9tc2dpZCgpIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgSUQuCiAKQEAgLTIzNCwzOCArNjUzLDg1IEBACiAgIGFyZ3VtZW50IGluc3RlYWQgb2YgYSBWYWx1ZUVycm9yIHdpdGggYSBib2d1cyBGQ0kgZXJyb3IgbnVtYmVyLgogICBQYXRjaCBieSBKZWZmcmV5IEFybXN0cm9uZy4KIAorLSBJc3N1ZSAjMTM4NjY6ICpxdW90ZV92aWEqIGFyZ3VtZW50IGFkZGVkIHRvIHVybGxpYi5wYXJzZS51cmxlbmNvZGUuCisKKy0gSXNzdWUgIzIwMDk4OiBOZXcgbWFuZ2xlX2Zyb20gcG9saWN5IG9wdGlvbiBmb3IgZW1haWwsIGRlZmF1bHQgVHJ1ZQorICBmb3IgY29tcGF0MzIsIGJ1dCBGYWxzZSBmb3IgYWxsIG90aGVyIHBvbGljaWVzLgorCistIElzc3VlICMyNDIxMTogVGhlIGVtYWlsIGxpYnJhcnkgbm93IHN1cHBvcnRzIFJGQyA2NTMyOiBpdCBjYW4gZ2VuZXJhdGUKKyAgaGVhZGVycyB1c2luZyB1dGYtOCBpbnN0ZWFkIG9mIGVuY29kZWQgd29yZHMuCisKKy0gSXNzdWUgIzE2MzE0OiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgTFpNQSBjb21wcmVzc2lvbiBpbiBkaXN0dXRpbHMuCisKKy0gSXNzdWUgIzIxODA0OiBwb3BsaWIgbm93IHN1cHBvcnRzIFJGQyA2ODU2IChVVEY4KS4KKworLSBJc3N1ZSAjMTg2ODI6IE9wdGltaXplZCBwcHJpbnQgZnVuY3Rpb25zIGZvciBidWlsdGluIHNjYWxhciB0eXBlcy4KKworLSBJc3N1ZSAjMjIwMjc6IHNtdHBsaWIgbm93IHN1cHBvcnRzIFJGQyA2NTMxIChTTVRQVVRGOCkuCisKKy0gSXNzdWUgIzIzNDg4OiBSYW5kb20gZ2VuZXJhdG9yIG9iamVjdHMgbm93IGNvbnN1bWUgMnggbGVzcyBtZW1vcnkgb24gNjQtYml0LgorCistIElzc3VlICMxMzIyOiBwbGF0Zm9ybS5kaXN0KCkgYW5kIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUKKyAgbm93IGRlcHJlY2F0ZWQuICBJbml0aWFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbiBub3cgaXMKKyAgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgorCistIElzc3VlICMyNDA2NDogUHJvcGVydHkoKSBkb2NzdHJpbmdzIGFyZSBub3cgd3JpdGVhYmxlLgorICAoUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4pCisKKy0gSXNzdWUgIzIyNjgxOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUga29pOF90IGVuY29kaW5nLgorCistIElzc3VlICMyMjY4MjogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGt6MTA0OCBlbmNvZGluZy4KKwogLSBJc3N1ZSAjMjM3OTY6IHBlZWsgYW5kIHJlYWQxIG1ldGhvZHMgb2YgQnVmZmVyZWRSZWFkZXIgbm93IHJhaXNlIFZhbHVlRXJyb3IKICAgaWYgdGhleSBjYWxsZWQgb24gYSBjbG9zZWQgb2JqZWN0LiBQYXRjaCBieSBKb2huIEhlcmdlbnJvZWRlci4KIAotLSBJc3N1ZSAjMjQ1MjE6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBpbiB0aGUgcGlja2xlIG1vZHVsZS4KKy0gSXNzdWUgIzIxNzk1OiBzbXRwZCBub3cgc3VwcG9ydHMgdGhlIDhCSVRNSU1FIGV4dGVuc2lvbiB3aGVuZXZlcgorICB0aGUgbmV3ICpkZWNvZGVfZGF0YSogY29uc3RydWN0b3IgYXJndW1lbnQgaXMgc2V0IHRvIEZhbHNlLgogCi0tIElzc3VlICMyMjkzMTogQWxsb3cgJ1snIGFuZCAnXScgaW4gY29va2llIHZhbHVlcy4KKy0gSXNzdWUgIzI0MTU1OiBvcHRpbWl6ZSBoZWFwcS5oZWFwaWZ5KCkgZm9yIGJldHRlciBjYWNoZSBwZXJmb3JtYW5jZQorICB3aGVuIGhlYXBpZnlpbmcgbGFyZ2UgbGlzdHMuCisKKy0gSXNzdWUgIzIxODAwOiBpbWFwbGliIG5vdyBzdXBwb3J0cyBSRkMgNTE2MSAoZW5hYmxlKSwgUkZDIDY4NTUKKyAgKHV0ZjgvaW50ZXJuYXRpb25hbGl6ZWQgZW1haWwpIGFuZCBhdXRvbWF0aWNhbGx5IGVuY29kZXMgbm9uLUFTQ0lJCisgIHVzZXJuYW1lcyBhbmQgcGFzc3dvcmRzIHRvIFVURjguCisKKy0gSXNzdWUgIzIwMjc0OiBXaGVuIGNhbGxpbmcgYSBfc3FsaXRlLkNvbm5lY3Rpb24sIGl0IG5vdyBjb21wbGFpbnMgaWYgcGFzc2VkCisgIGFueSBrZXl3b3JkIGFyZ3VtZW50cy4gIFByZXZpb3VzbHkgaXQgc2lsZW50bHkgaWdub3JlZCB0aGVtLgogCiAtIElzc3VlICMyMDI3NDogUmVtb3ZlIGlnbm9yZWQgYW5kIGVycm9uZW91cyAia3dhcmdzIiBwYXJhbWV0ZXJzIGZyb20gdGhyZWUKICAgTUVUSF9WQVJBUkdTIG1ldGhvZHMgb24gX3NxbGl0ZS5Db25uZWN0aW9uLgogCistIElzc3VlICMyNDEzNDogYXNzZXJ0UmFpc2VzKCksIGFzc2VydFJhaXNlc1JlZ2V4KCksIGFzc2VydFdhcm5zKCkgYW5kCisgIGFzc2VydFdhcm5zUmVnZXgoKSBjaGVja3Mgbm93IGVtaXRzIGEgZGVwcmVjYXRpb24gd2FybmluZyB3aGVuIGNhbGxhYmxlIGlzCisgIE5vbmUgb3Iga2V5d29yZCBhcmd1bWVudHMgZXhjZXB0IG1zZyBpcyBwYXNzZWQgaW4gdGhlIGNvbnRleHQgbWFuYWdlciBtb2RlLgorCistIElzc3VlICMyNDAxODogQWRkIGEgY29sbGVjdGlvbnMuYWJjLkdlbmVyYXRvciBhYnN0cmFjdCBiYXNlIGNsYXNzLgorICBDb250cmlidXRlZCBieSBTdGVmYW4gQmVobmVsLgorCistIElzc3VlICMyMzg4MDogVGtpbnRlcidzIGdldGludCgpIGFuZCBnZXRkb3VibGUoKSBub3cgc3VwcG9ydCBUY2xfT2JqLgorICBUa2ludGVyJ3MgZ2V0ZG91YmxlKCkgbm93IHN1cHBvcnRzIGFueSBudW1iZXJzIChpbiBwYXJ0aWN1bGFyIGludCkuCisKKy0gSXNzdWUgIzIyNjE5OiBBZGRlZCBuZWdhdGl2ZSBsaW1pdCBzdXBwb3J0IGluIHRoZSB0cmFjZWJhY2sgbW9kdWxlLgorICBCYXNlZCBvbiBwYXRjaCBieSBEbWl0cnkgS2F6YWtvdi4KKwogLSBJc3N1ZSAjMjQwOTQ6IEZpeCBwb3NzaWJsZSBjcmFzaCBpbiBqc29uLmVuY29kZSB3aXRoIHBvb3JseSBiZWhhdmVkIGRpY3QKICAgc3ViY2xhc3Nlcy4KIAotLSBBc3luY2lvIGlzc3VlIDIyMiAvIFBSIDIzMSAoVmljdG9yIFN0aW5uZXIpIC0tIGZpeCBAY29yb3V0aW5lCi0gIGZ1bmN0aW9ucyB3aXRob3V0IF9fbmFtZV9fLgotCiAtIElzc3VlICM5MjQ2OiBPbiBQT1NJWCwgb3MuZ2V0Y3dkKCkgbm93IHN1cHBvcnRzIHBhdGhzIGxvbmdlciB0aGFuIDEwMjUgYnl0ZXMuCiAgIFBhdGNoIHdyaXR0ZW4gYnkgV2lsbGlhbSBPcnIuCiAKLS0gVGhlIGtleXdvcmRzIGF0dHJpYnV0ZSBvZiBmdW5jdG9vbHMucGFydGlhbCBpcyBub3cgYWx3YXlzIGEgZGljdGlvbmFyeS4KKy0gSXNzdWUgIzE3NDQ1OiBhZGQgZGlmZmxpYi5kaWZmX2J5dGVzKCkgdG8gc3VwcG9ydCBjb21wYXJpc29uIG9mCisgIGJ5dGUgc3RyaW5ncyAoZml4ZXMgYSByZWdyZXNzaW9uIGZyb20gUHl0aG9uIDIpLgogCi0tIElzc3VlcyAjMjQwOTksICMyNDEwMCwgYW5kICMyNDEwMTogRml4IGZyZWUtYWZ0ZXItdXNlIGJ1ZyBpbiBoZWFwcSdzIHNpZnR1cAotICBhbmQgc2lmdGRvd24gZnVuY3Rpb25zLgotCi0tIEJhY2twb3J0IGNvbGxlY3Rpb25zLmRlcXVlIGZpeGVzIGZyb20gUHl0aG9uIDMuNS4gIFByZXZlbnRzIHJlZW50cmFudCBiYWRuZXNzCi0gIGR1cmluZyBkZWxldGlvbiBieSBkZWZlcnJpbmcgdGhlIGRlY3JlZiB1bnRpbCB0aGUgY29udGFpbmVyIGhhcyBiZWVuIHJlc3RvcmVkCi0gIHRvIGEgY29uc2lzdGVudCBzdGF0ZS4KKy0gSXNzdWUgIzIzOTE3OiBGYWxsIGJhY2sgdG8gc2VxdWVudGlhbCBjb21waWxhdGlvbiB3aGVuIFByb2Nlc3NQb29sRXhlY3V0b3IKKyAgZG9lc24ndCBleGlzdC4gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KIAogLSBJc3N1ZSAjMjMwMDg6IEZpeGVkIHJlc29sdmluZyBhdHRyaWJ1dGVzIHdpdGggYm9vbGVhbiB2YWx1ZSBpcyBGYWxzZSBpbiBweWRvYy4KIAogLSBGaXggYXN5bmNpbyBpc3N1ZSAyMzU6IExpZm9RdWV1ZSBhbmQgUHJpb3JpdHlRdWV1ZSdzIHB1dCBkaWRuJ3QKLSAgaW5jcmVtZW50IHVuZmluaXNoZWQgdGFza3MgKHRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIDMuNC4zIHdoZW4KKyAgaW5jcmVtZW50IHVuZmluaXNoZWQgdGFza3MgKHRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIHdoZW4KICAgSm9pbmFibGVRdWV1ZSB3YXMgbWVyZ2VkIHdpdGggUXVldWUpLgogCiAtIElzc3VlICMyMzkwODogb3MgZnVuY3Rpb25zIG5vdyByZWplY3QgcGF0aHMgd2l0aCBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcgpAQCAtMjc0LDY0ICs3NDAsMzkyIEBACiAtIElzc3VlICMyMzcyODogYmluYXNjaWkuY3JjX2hxeCgpIGNvdWxkIHJldHVybiBhbiBpbnRlZ2VyIG91dHNpZGUgb2YgdGhlIHJhbmdlCiAgIDAtMHhmZmZmIGZvciBlbXB0eSBkYXRhLgogCistIElzc3VlICMyMzg4NzogdXJsbGliLmVycm9yLkhUVFBFcnJvciBub3cgaGFzIGEgcHJvcGVyIHJlcHIoKSByZXByZXNlbnRhdGlvbi4KKyAgUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKworLSBhc3luY2lvOiBOZXcgZXZlbnQgbG9vcCBBUElzOiBzZXRfdGFza19mYWN0b3J5KCkgYW5kIGdldF90YXNrX2ZhY3RvcnkoKS4KKworLSBhc3luY2lvOiBhc3luYygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGVuc3VyZV9mdXR1cmUoKS4KKworLSBJc3N1ZSAjMjQxNzg6IGFzeW5jaW8uTG9jaywgQ29uZGl0aW9uLCBTZW1hcGhvcmUsIGFuZCBCb3VuZGVkU2VtYXBob3JlCisgIHN1cHBvcnQgbmV3ICdhc3luYyB3aXRoJyBzeW50YXguICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjQxNzk6IFN1cHBvcnQgJ2FzeW5jIGZvcicgZm9yIGFzeW5jaW8uU3RyZWFtUmVhZGVyLgorICBDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjQxODQ6IEFkZCBBc3luY0l0ZXJhdG9yIGFuZCBBc3luY0l0ZXJhYmxlIEFCQ3MgdG8KKyAgY29sbGVjdGlvbnMuYWJjLiAgQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzIyNTQ3OiBJbXBsZW1lbnQgaW5mb3JtYXRpdmUgX19yZXByX18gZm9yIGluc3BlY3QuQm91bmRBcmd1bWVudHMuCisgIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMyNDE5MDogSW1wbGVtZW50IGluc3BlY3QuQm91bmRBcmd1bWVudC5hcHBseV9kZWZhdWx0cygpIG1ldGhvZC4KKyAgQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzIwNjkxOiBBZGQgJ2ZvbGxvd193cmFwcGVkJyBhcmd1bWVudCB0bworICBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlKCkgYW5kIGluc3BlY3Quc2lnbmF0dXJlKCkuCisgIENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCistIElzc3VlICMyNDI0ODogRGVwcmVjYXRlIGluc3BlY3QuU2lnbmF0dXJlLmZyb21fZnVuY3Rpb24oKSBhbmQKKyAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9idWlsdGluKCkuCisKKy0gSXNzdWUgIzIzODk4OiBGaXggaW5zcGVjdC5jbGFzc2lmeV9jbGFzc19hdHRycygpIHRvIHN1cHBvcnQgYXR0cmlidXRlcworICB3aXRoIG92ZXJsb2FkZWQgX19lcV9fIGFuZCBfX2Jvb2xfXy4gIFBhdGNoIGJ5IE1pa2UgQmF5ZXIuCisKKy0gSXNzdWUgIzI0Mjk4OiBGaXggaW5zcGVjdC5zaWduYXR1cmUoKSB0byBjb3JyZWN0bHkgdW53cmFwIHdyYXBwZXJzCisgIGFyb3VuZCBib3VuZCBtZXRob2RzLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzIzMTg0OiByZW1vdmUgdW51c2VkIG5hbWVzIGFuZCBpbXBvcnRzIGluIGlkbGVsaWIuCisgIEluaXRpYWwgcGF0Y2ggYnkgQWwgU3dlaWdhcnQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyMTUyMDogdGVzdF96aXBmaWxlIG5vIGxvbmdlciBmYWlscyBpZiB0aGUgd29yZCAnYmFkJyBhcHBlYXJzCisgIGFueXdoZXJlIGluIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjOTUxNzogTW92ZSBzY3JpcHRfaGVscGVyIGludG8gdGhlIHN1cHBvcnQgcGFja2FnZS4KKyAgUGF0Y2ggYnkgQ2hyaXN0aWUgV2lsc29uLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIyMTU1OiBBZGQgRmlsZSBIYW5kbGVycyBzdWJzZWN0aW9uIHdpdGggY3JlYXRlZmlsZWhhbmRsZXIgdG8gdGtpbnRlcgorICBkb2MuICBSZW1vdmUgb2Jzb2xldGUgZXhhbXBsZSBmcm9tIEZBUS4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzI0MDI5OiBEb2N1bWVudCB0aGUgbmFtZSBiaW5kaW5nIGJlaGF2aW9yIGZvciBzdWJtb2R1bGUgaW1wb3J0cy4KKworLSBJc3N1ZSAjMjQwNzc6IEZpeCB0eXBvIGluIG1hbiBwYWdlIGZvciAtSSBjb21tYW5kIG9wdGlvbjogLXMsIG5vdCAtUworCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjQwMDA6IEltcHJvdmVkIEFyZ3VtZW50IENsaW5pYydzIG1hcHBpbmcgb2YgY29udmVydGVycyB0byBsZWdhY3kKKyAgImZvcm1hdCB1bml0cyIuICBVcGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIHRvIG1hdGNoLgorCistIElzc3VlICMyNDAwMTogQXJndW1lbnQgQ2xpbmljIGNvbnZlcnRlcnMgbm93IHVzZSBhY2NlcHQ9e3R5cGV9CisgIGluc3RlYWQgb2YgdHlwZXM9eyd0eXBlJ30gdG8gc3BlY2lmeSB0aGUgdHlwZXMgdGhlIGNvbnZlcnRlciBhY2NlcHRzLgorCistIElzc3VlICMyMzMzMDogaDJweSBub3cgc3VwcG9ydHMgYXJiaXRyYXJ5IGZpbGVuYW1lcyBpbiAjaW5jbHVkZS4KKworLSBJc3N1ZSAjMjQwMzE6IG1ha2UgcGF0Y2hjaGVjayBub3cgc3VwcG9ydHMgZ2l0IGNoZWNrb3V0cywgdG9vLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTUtMDQtMTkKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIyOTgwOiBVbmRlciBMaW51eCwgR05VL0tGcmVlQlNEIGFuZCB0aGUgSHVyZCwgQyBleHRlbnNpb25zIG5vdyBpbmNsdWRlCisgIHRoZSBhcmNoaXRlY3R1cmUgdHJpcGxldCBpbiB0aGUgZXh0ZW5zaW9uIG5hbWUsIHRvIG1ha2UgaXQgZWFzeSB0byB0ZXN0IGJ1aWxkcworICBmb3IgZGlmZmVyZW50IEFCSXMgaW4gdGhlIHNhbWUgd29ya2luZyB0cmVlLiAgVW5kZXIgT1MgWCwgdGhlIGV4dGVuc2lvbiBuYW1lCisgIG5vdyBpbmNsdWRlcyBQRVAgMzE0OS1zdHlsZSBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjMjI2MzE6IEFkZGVkIExpbnV4LXNwZWNpZmljIHNvY2tldCBjb25zdGFudCBDQU5fUkFXX0ZEX0ZSQU1FUy4KKyAgUGF0Y2ggY291cnRlc3kgb2YgSm9lIEpldm5pay4KKworLSBJc3N1ZSAjMjM3MzE6IEltcGxlbWVudCBQRVAgNDg4OiByZW1vdmFsIG9mIC5weW8gZmlsZXMuCisKKy0gSXNzdWUgIzIzNzI2OiBEb24ndCBlbmFibGUgR0MgZm9yIHVzZXIgc3ViY2xhc3NlcyBvZiBub24tR0MgdHlwZXMgdGhhdAorICBkb24ndCBhZGQgYW55IG5ldyBmaWVsZHMuICBQYXRjaCBieSBFdWdlbmUgVG9kZXIuCisKKy0gSXNzdWUgIzIzMzA5OiBBdm9pZCBhIGRlYWRsb2NrIGF0IHNodXRkb3duIGlmIGEgZGFlbW9uIHRocmVhZCBpcyBhYm9ydGVkCisgIHdoaWxlIGl0IGlzIGhvbGRpbmcgYSBsb2NrIHRvIGEgYnVmZmVyZWQgSS9PIG9iamVjdCwgYW5kIHRoZSBtYWluIHRocmVhZAorICB0cmllcyB0byB1c2UgdGhlIHNhbWUgSS9PIG9iamVjdCAodHlwaWNhbGx5IHN0ZG91dCBvciBzdGRlcnIpLiAgQSBmYXRhbAorICBlcnJvciBpcyBlbWl0dGVkIGluc3RlYWQuCisKKy0gSXNzdWUgIzIyOTc3OiBGaXhlZCBmb3JtYXR0aW5nIFdpbmRvd3MgZXJyb3IgbWVzc2FnZXMgb24gV2luZS4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjM0NjY6ICVjLCAlbywgJXgsIGFuZCAlWCBpbiBieXRlcyBmb3JtYXR0aW5nIG5vdyByYWlzZSBUeXBlRXJyb3Igb24KKyAgbm9uLWludGVnZXIgaW5wdXQuCisKKy0gSXNzdWUgIzI0MDQ0OiBGaXggcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIGxpc3Quc29ydCBpbiBvdXQgb2YKKyAgbWVtb3J5IGNvbmRpdGlvbnMuCisKKy0gSXNzdWUgIzIxMzU0OiBQeUNGdW5jdGlvbl9OZXcgZnVuY3Rpb24gaXMgZXhwb3NlZCBieSBweXRob24gRExMIGFnYWluLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzIzODQwOiB0b2tlbml6ZS5vcGVuKCkgbm93IGNsb3NlcyB0aGUgdGVtcG9yYXJ5IGJpbmFyeSBmaWxlIG9uIGVycm9yCisgIHRvIGZpeCBhIHJlc291cmNlIHdhcm5pbmcuCisKKy0gSXNzdWUgIzE2OTE0OiBuZXcgZGVidWdsZXZlbCAyIGluIHNtdHBsaWIgYWRkcyB0aW1lc3RhbXBzIHRvIGRlYnVnIG91dHB1dC4KKworLSBJc3N1ZSAjNzE1OTogdXJsbGliLnJlcXVlc3Qgbm93IHN1cHBvcnRzIHNlbmRpbmcgYXV0aCBjcmVkZW50aWFscworICBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZSBmaXJzdCA0MDEuICBUaGlzIGVuaGFuY2VtZW50IGlzIGEgc3VwZXJzZXQgb2YgdGhlCisgIGVuaGFuY2VtZW50IGZyb20gaXNzdWUgIzE5NDk0IGFuZCBzdXBlcnNlZGVzIHRoYXQgY2hhbmdlLgorCistIElzc3VlICMyMzcwMzogRml4IGEgcmVncmVzc2lvbiBpbiB1cmxqb2luKCkgaW50cm9kdWNlZCBpbiA5MDFlNGU1MmIyMGEuCisgIFBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzQyNTQ6IEFkZHMgX2N1cnNlcy51cGRhdGVfbGluZXNfY29scygpIFBhdGNoIGJ5IEFybm9uIFlhYXJpCisKKy0gSXNzdWUgIzE5OTMzOiBQcm92aWRlIGRlZmF1bHQgYXJndW1lbnQgZm9yIG5kaWdpdHMgaW4gcm91bmQuIFBhdGNoIGJ5CisgIFZhanJhc2t5IEtvay4KKworLSBJc3N1ZSAjMjMxOTM6IEFkZCBhIG51bWVyaWNfb3duZXIgcGFyYW1ldGVyIHRvCisgIHRhcmZpbGUuVGFyRmlsZS5leHRyYWN0IGFuZCB0YXJmaWxlLlRhckZpbGUuZXh0cmFjdGFsbC4gUGF0Y2ggYnkKKyAgTWljaGFlbCBWb2d0IGFuZCBFcmljIFNtaXRoLgorCistIElzc3VlICMyMzM0MjogQWRkIGEgc3VicHJvY2Vzcy5ydW4oKSBmdW5jdGlvbiB0aGFuIHJldHVybnMgYSBDYWxsZWRQcm9jZXNzCisgIGluc3RhbmNlIGZvciBhIG1vcmUgY29uc2lzdGVudCBBUEkgdGhhbiB0aGUgZXhpc3RpbmcgY2FsbCogZnVuY3Rpb25zLgorCistIElzc3VlICMyMTIxNzogaW5zcGVjdC5nZXRzb3VyY2VsaW5lcygpIG5vdyB0cmllcyB0byBjb21wdXRlIHRoZSBzdGFydCBhbmQgZW5kCisgIGxpbmVzIGZyb20gdGhlIGNvZGUgb2JqZWN0LCBmaXhpbmcgYW4gaXNzdWUgd2hlbiBhIGxhbWJkYSBmdW5jdGlvbiBpcyB1c2VkIGFzCisgIGRlY29yYXRvciBhcmd1bWVudC4gUGF0Y2ggYnkgVGhvbWFzIEJhbGxpbmdlciBhbmQgQWxsaXNvbiBLYXB0dXIuCisKKy0gSXNzdWUgIzI0NTIxOiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIHBpY2tsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzIyOTMxOiBBbGxvdyAnWycgYW5kICddJyBpbiBjb29raWUgdmFsdWVzLgorCistIFRoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaXMgbm93IGFsd2F5cyBhIGRpY3Rpb25hcnkuCisKIC0gSXNzdWUgIzIzODExOiBBZGQgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBQeUNvbXBpbGVFcnJvciBlcnJvciBtZXNzYWdlLgogICBQYXRjaCBieSBBbGV4IFNoa29wLgogCi0tIElzc3VlICMxNzg5ODogRml4IGV4Y2VwdGlvbiBpbiBnZXR0ZXh0LnB5IHdoZW4gcGFyc2luZyBjZXJ0YWluIHBsdXJhbCBmb3Jtcy4KKy0gSXNzdWUgIzIxMTE2OiBBdm9pZCBibG93aW5nIG1lbW9yeSB3aGVuIGFsbG9jYXRpbmcgYSBtdWx0aXByb2Nlc3Npbmcgc2hhcmVkCisgIGFycmF5IHRoYXQncyBsYXJnZXIgdGhhbiA1MCUgb2YgdGhlIGF2YWlsYWJsZSBSQU0uICBQYXRjaCBieSBNw6lkw6lyaWMgQm9xdWllbi4KIAogLSBJc3N1ZSAjMjI5ODI6IEltcHJvdmUgQk9NIGhhbmRsaW5nIHdoZW4gc2Vla2luZyB0byBtdWx0aXBsZSBwb3NpdGlvbnMgb2YKICAgYSB3cml0YWJsZSB0ZXh0IGZpbGUuCiAKKy0gSXNzdWUgIzIzNDY0OiBSZW1vdmVkIGRlcHJlY2F0ZWQgYXN5bmNpbyBKb2luYWJsZVF1ZXVlLgorCistIElzc3VlICMyMzUyOTogTGltaXQgdGhlIHNpemUgb2YgZGVjb21wcmVzc2VkIGRhdGEgd2hlbiByZWFkaW5nIGZyb20KKyAgR3ppcEZpbGUsIEJaMkZpbGUgb3IgTFpNQUZpbGUuICBUaGlzIGRlZmVhdHMgZGVuaWFsIG9mIHNlcnZpY2UgYXR0YWNrcworICB1c2luZyBjb21wcmVzc2VkIGJvbWJzIChpLmUuIGNvbXByZXNzZWQgcGF5bG9hZHMgd2hpY2ggZGVjb21wcmVzcyB0byBhIGh1Z2UKKyAgc2l6ZSkuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyIGFuZCBOaWtvbGF1cyBSYXRoLgorCistIElzc3VlICMyMTg1OTogQWRkZWQgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGlvLkZpbGVJTy4KKwogLSBJc3N1ZSAjMjM4NjU6IGNsb3NlKCkgbWV0aG9kcyBpbiBtdWx0aXBsZSBtb2R1bGVzIG5vdyBhcmUgaWRlbXBvdGVudCBhbmQgbW9yZQogICByb2J1c3QgYXQgc2h1dGRvd24uIElmIHRoZXkgbmVlZCB0byByZWxlYXNlIG11bHRpcGxlIHJlc291cmNlcywgYWxsIGFyZQogICByZWxlYXNlZCBldmVuIGlmIGVycm9ycyBvY2N1ci4KIAorLSBJc3N1ZSAjMjM0MDA6IFJhaXNlIHNhbWUgZXhjZXB0aW9uIG9uIGJvdGggUHl0aG9uIDIgYW5kIDMgaWYgc2VtX29wZW4gaXMgbm90CisgIGF2YWlsYWJsZS4gIFBhdGNoIGJ5IERhdmluIFBvdHRzLgorCistIElzc3VlICMxMDgzODogVGhlIHN1YnByb2Nlc3Mgbm93IG1vZHVsZSBpbmNsdWRlcyBTdWJwcm9jZXNzRXJyb3IgYW5kCisgIFRpbWVvdXRFcnJvciBpbiBpdHMgbGlzdCBvZiBleHBvcnRlZCBuYW1lcyBmb3IgdGhlIHVzZXJzIHdpbGQgZW5vdWdoCisgIHRvIHVzZSBgYGZyb20gc3VicHJvY2VzcyBpbXBvcnQgKmBgLgorCistIElzc3VlICMyMzQxMTogQWRkZWQgRGVmcmFnUmVzdWx0LCBQYXJzZVJlc3VsdCwgU3BsaXRSZXN1bHQsIERlZnJhZ1Jlc3VsdEJ5dGVzLAorICBQYXJzZVJlc3VsdEJ5dGVzLCBhbmQgU3BsaXRSZXN1bHRCeXRlcyB0byB1cmxsaWIucGFyc2UuX19hbGxfXy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKwogLSBJc3N1ZSAjMjM4ODE6IHVybGxpYi5yZXF1ZXN0LmZ0cHdyYXBwZXIgY29uc3RydWN0b3Igbm93IGNsb3NlcyB0aGUgc29ja2V0IGlmCiAgIHRoZSBGVFAgY29ubmVjdGlvbiBmYWlsZWQgdG8gZml4IGEgUmVzb3VyY2VXYXJuaW5nLgogCi0tIElzc3VlICMyMzQwMDogUmFpc2Ugc2FtZSBleGNlcHRpb24gb24gYm90aCBQeXRob24gMiBhbmQgMyBpZiBzZW1fb3BlbiBpcyBub3QKLSAgYXZhaWxhYmxlLiAgUGF0Y2ggYnkgRGF2aW4gUG90dHMuCistIElzc3VlICMyMzg1MzogOm1ldGg6YHNvY2tldC5zb2NrZXQuc2VuZGFsbGAgZG9lcyBubyBtb3JlIHJlc2V0IHRoZSBzb2NrZXQKKyAgdGltZW91dCBlYWNoIHRpbWUgZGF0YSBpcyBzZW50IHN1Y2Nlc3NmdWx5LiBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRoZQorICBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHNlbmQgYWxsIGRhdGEuCisKKy0gSXNzdWUgIzIyNzIxOiBBbiBvcmRlciBvZiBtdWx0aWxpbmUgcHByaW50IG91dHB1dCBvZiBzZXQgb3IgZGljdCBjb250YWluaW5nCisgIG9yZGVyYWJsZSBhbmQgbm9uLW9yZGVyYWJsZSBlbGVtZW50cyBubyBsb25nZXIgZGVwZW5kcyBvbiBpdGVyYXRpb24gb3JkZXIgb2YKKyAgc2V0IG9yIGRpY3QuCiAKIC0gSXNzdWUgIzE1MTMzOiBfdGtpbnRlci50a2FwcC5nZXRib29sZWFuKCkgbm93IHN1cHBvcnRzIFRjbF9PYmogYW5kIGFsd2F5cwogICByZXR1cm5zIGJvb2wuICB0a2ludGVyLkJvb2xlYW5WYXIgbm93IHZhbGlkYXRlcyBpbnB1dCB2YWx1ZXMgKGFjY2VwdGVkIGJvb2wsCiAgIGludCwgc3RyLCBhbmQgVGNsX09iaikuICB0a2ludGVyLkJvb2xlYW5WYXIuZ2V0KCkgbm93IGFsd2F5cyByZXR1cm5zIGJvb2wuCiAKKy0gSXNzdWUgIzEwNTkwOiB4bWwuc2F4LnBhcnNlU3RyaW5nKCkgbm93IHN1cHBvcnRzIHN0cmluZyBhcmd1bWVudC4KKwogLSBJc3N1ZSAjMjMzMzg6IEZpeGVkIGZvcm1hdHRpbmcgY3R5cGVzIGVycm9yIG1lc3NhZ2VzIG9uIEN5Z3dpbi4KICAgUGF0Y2ggYnkgTWFrb3RvIEthdG8uCiAKKy0gSXNzdWUgIzE1NTgyOiBpbnNwZWN0LmdldGRvYygpIG5vdyBmb2xsb3dzIGluaGVyaXRhbmNlIGNoYWlucy4KKworLSBJc3N1ZSAjMjE3NTogU0FYIHBhcnNlcnMgbm93IHN1cHBvcnQgYSBjaGFyYWN0ZXIgc3RyZWFtIG9mIElucHV0U291cmNlIG9iamVjdC4KKwogLSBJc3N1ZSAjMTY4NDA6IFRraW50ZXIgbm93IHN1cHBvcnRzIDY0LWJpdCBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC40IGFuZAogICBhcmJpdHJhcnkgcHJlY2lzaW9uIGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjUuCiAKIC0gSXNzdWUgIzIzODM0OiBGaXggc29ja2V0LnNlbmR0bygpLCB1c2UgdGhlIEMgUHlfc3NpemVfdCB0eXBlIHRvIHN0b3JlIHRoZQogICByZXN1bHQgb2Ygc2VuZHRvKCkgaW5zdGVhZCBvZiB0aGUgQyBpbnQgdHlwZS4KIAorLSBJc3N1ZSAjMjM2MTg6IDptZXRoOmBzb2NrZXQuc29ja2V0LmNvbm5lY3RgIG5vdyB3YWl0cyB1bnRpbCB0aGUgY29ubmVjdGlvbgorICBjb21wbGV0ZXMgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIHRoZSBjb25uZWN0aW9uIGlzCisgIGludGVycnVwdGVkIGJ5IHNpZ25hbHMsIHNpZ25hbCBoYW5kbGVycyBkb24ndCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHRoZQorICBzb2NrZXQgaXMgYmxvY2tpbmcgb3IgaGFzIGEgdGltZW91dC4gOm1ldGg6YHNvY2tldC5zb2NrZXQuY29ubmVjdGAgc3RpbGwKKyAgcmFpc2UgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZm9yIG5vbi1ibG9ja2luZyBzb2NrZXRzLgorCiAtIElzc3VlICMyMTUyNjogVGtpbnRlciBub3cgc3VwcG9ydHMgbmV3IGJvb2xlYW4gdHlwZSBpbiBUY2wgOC41LgogCistIElzc3VlICMyMzgzNjogRml4IHRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRvIGhhbmRsZSByZWVudHJhbnQgY2FsbHMgdG8KKyAgaXRzIHNpZ25hbCBoYW5kbGVycy4KKwogLSBJc3N1ZSAjMjM4Mzg6IGxpbmVjYWNoZSBub3cgY2xlYXJzIHRoZSBjYWNoZSBhbmQgcmV0dXJucyBhbiBlbXB0eSByZXN1bHQgb24KICAgTWVtb3J5RXJyb3IuCiAKKy0gSXNzdWUgIzEwMzk1OiBBZGRlZCBvcy5wYXRoLmNvbW1vbnBhdGgoKS4gSW1wbGVtZW50ZWQgaW4gcG9zaXhwYXRoIGFuZCBudHBhdGguCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFJhZmlrIERyYW91aS4KKworLSBJc3N1ZSAjMjM2MTE6IFNlcmlhbGl6aW5nIG1vcmUgImxvb2t1cGFibGUiIG9iamVjdHMgKHN1Y2ggYXMgdW5ib3VuZCBtZXRob2RzCisgIG9yIG5lc3RlZCBjbGFzc2VzKSBub3cgYXJlIHN1cHBvcnRlZCB3aXRoIHBpY2tsZSBwcm90b2NvbHMgPCA0LgorCistIElzc3VlICMxMzU4Mzogc3FsaXRlMy5Sb3cgbm93IHN1cHBvcnRzIHNsaWNlIGluZGV4aW5nLgorCiAtIElzc3VlICMxODQ3MzogRml4ZWQgMnRvMyBhbmQgM3RvMiBjb21wYXRpYmxlIHBpY2tsZSBtYXBwaW5ncy4gIEZpeGVkCiAgIGFtYmlnaW91cyByZXZlcnNlIG1hcHBpbmdzLiAgQWRkZWQgbWFueSBuZXcgbWFwcGluZ3MuICBJbXBvcnQgbWFwcGluZyBpcyBubwogICBsb25nZXIgYXBwbGllZCB0byBtb2R1bGVzIGFscmVhZHkgbWFwcGVkIHdpdGggZnVsbCBuYW1lIG1hcHBpbmcuCiAKKy0gSXNzdWUgIzIzNDg1OiBzZWxlY3Quc2VsZWN0KCkgaXMgbm93IHJldHJpZWQgYXV0b21hdGljYWxseSB3aXRoIHRoZQorICByZWNvbXB1dGVkIHRpbWVvdXQgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlcgorICByYWlzZXMgYW4gZXhjZXB0aW9uLiBUaGlzIGNoYW5nZSBpcyBwYXJ0IG9mIHRoZSBQRVAgNDc1LgorCistIElzc3VlICMyMzc1MjogV2hlbiBidWlsdCBmcm9tIGFuIGV4aXN0aW5nIGZpbGUgZGVzY3JpcHRvciwgaW8uRmlsZUlPKCkgbm93CisgIG9ubHkgY2FsbHMgZnN0YXQoKSBvbmNlLiBCZWZvcmUgZnN0YXQoKSB3YXMgY2FsbGVkIHR3aWNlLCB3aGljaCB3YXMgbm90CisgIG5lY2Vzc2FyeS4KKworLSBJc3N1ZSAjMjM3MDQ6IGNvbGxlY3Rpb25zLmRlcXVlKCkgb2JqZWN0cyBub3cgc3VwcG9ydCBfX2FkZF9fLCBfX211bF9fLCBhbmQKKyAgX19pbXVsX18oKS4KKworLSBJc3N1ZSAjMjMxNzE6IGNzdi5Xcml0ZXIud3JpdGVyb3coKSBub3cgc3VwcG9ydHMgYXJiaXRyYXJ5IGl0ZXJhYmxlcy4KKwogLSBJc3N1ZSAjMjM3NDU6IFRoZSBuZXcgZW1haWwgaGVhZGVyIHBhcnNlciBub3cgaGFuZGxlcyBkdXBsaWNhdGUgTUlNRQogICBwYXJhbWV0ZXIgbmFtZXMgd2l0aG91dCBlcnJvciwgc2ltaWxhciB0byBob3cgZ2V0X3BhcmFtIGJlaGF2ZXMuCiAKKy0gSXNzdWUgIzIyMTE3OiBGaXggb3MudXRpbWUoKSwgaXQgbm93IHJvdW5kcyB0aGUgdGltZXN0YW1wIHRvd2FyZHMgbWludXMKKyAgaW5maW5pdHkgKC1pbmYpIGluc3RlYWQgb2Ygcm91bmRpbmcgdG93YXJkcyB6ZXJvLgorCistIElzc3VlICMyMzMxMDogRml4IE1hZ2ljTW9jaydzIGluaXRpYWxpemVyIHRvIHdvcmsgd2l0aCBfX21ldGhvZHNfXywganVzdAorICBsaWtlIGNvbmZpZ3VyZV9tb2NrKCkuICBQYXRjaCBieSBLYXNpYSBKYWNoaW0uCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyMzgxNzogRnJlZUJTRCBub3cgdXNlcyAiMS4wIiB0aGUgdGhlIFNPVkVSU0lPTiBhcyBvdGhlciBvcGVyYXRpbmcKKyAgc3lzdGVtcywgaW5zdGVhZCBvZiBqdXN0ICIxIi4KKworLSBJc3N1ZSAjMjM1MDE6IEFyZ3VtZW50IENsaW5pYyBub3cgZ2VuZXJhdGVzIGNvZGUgaW50byBzZXBhcmF0ZSBmaWxlcyBieSBkZWZhdWx0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjM3OTk6IEFkZGVkIHRlc3Quc3VwcG9ydC5zdGFydF90aHJlYWRzKCkgZm9yIHJ1bm5pbmcgYW5kCisgIGNsZWFuaW5nIHVwIG11bHRpcGxlIHRocmVhZHMuCisKKy0gSXNzdWUgIzIyMzkwOiB0ZXN0LnJlZ3J0ZXN0IG5vdyBlbWl0cyBhIHdhcm5pbmcgaWYgdGVtcG9yYXJ5IGZpbGVzIG9yCisgIGRpcmVjdG9yaWVzIGFyZSBsZWZ0IGFmdGVyIHJ1bm5pbmcgYSB0ZXN0LgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTgxMjg6IHB5Z2V0dGV4dCBub3cgdXNlcyBzdGFuZGFyZCArTk5OTiBmb3JtYXQgaW4gdGhlCisgIFBPVC1DcmVhdGlvbi1EYXRlIGhlYWRlci4KKworLSBJc3N1ZSAjMjM5MzU6IEFyZ3VtZW50IENsaW5pYydzIHVuZGVyc3RhbmRpbmcgb2YgZm9ybWF0IHVuaXRzCisgIGFjY2VwdGluZyBieXRlcywgYnl0ZWFycmF5cywgYW5kIGJ1ZmZlcnMgaXMgbm93IGNvbnNpc3RlbnQgd2l0aAorICBib3RoIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzIzOTQ0OiBBcmd1bWVudCBDbGluaWMgbm93IHdyYXBzIGxvbmcgaW1wbCBwcm90b3R5cGVzIGF0IGNvbHVtbiA3OC4KKworLSBJc3N1ZSAjMjA1ODY6IEFyZ3VtZW50IENsaW5pYyBub3cgZW5zdXJlcyB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IGRvY3N0cmluZ3MKKyAgaGF2ZSBzaWduYXR1cmVzLgorCistIElzc3VlICMyMzQ5MjogQXJndW1lbnQgQ2xpbmljIG5vdyBnZW5lcmF0ZXMgYXJndW1lbnQgcGFyc2luZyBjb2RlIHdpdGgKKyAgUHlBcmdfUGFyc2UgaW5zdGVhZCBvZiBQeUFyZ19QYXJzZVR1cGxlIGlmIHBvc3NpYmxlLgorCistIElzc3VlICMyMzUwMDogQXJndW1lbnQgQ2xpbmljIGlzIG5vdyBzbWFydGVyIGFib3V0IGdlbmVyYXRpbmcgdGhlICIjaWZuZGVmIgorICAoZW1wdHkpIGRlZmluaXRpb24gb2YgdGhlIG1ldGhvZGRlZiBtYWNybzogaXQncyBvbmx5IGdlbmVyYXRlZCBvbmNlLCBldmVuCisgIGlmIEFyZ3VtZW50IENsaW5pYyBwcm9jZXNzZXMgdGhlIHNhbWUgc3ltYm9sIG11bHRpcGxlIHRpbWVzLCBhbmQgaXQncyBlbWl0dGVkCisgIGF0IHRoZSBlbmQgb2YgYWxsIHByb2Nlc3NpbmcgcmF0aGVyIHRoYW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGZpcnN0IHVzZS4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzIzOTk4OiBQeUltcG9ydF9SZUluaXRMb2NrKCkgbm93IGNoZWNrcyBmb3IgbG9jayBhbGxvY2F0aW9uIGVycm9yCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYWxwaGEgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMy0yOAorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzM6IEluY3JlYXNlZCBwZXJmb3JtYW5jZSBvZiBzdHJpbmcgc2VhcmNoIG9wZXJhdGlvbnMgKHN0ci5maW5kLAorICBzdHIuaW5kZXgsIHN0ci5jb3VudCwgdGhlIGluIG9wZXJhdG9yLCBzdHIuc3BsaXQsIHN0ci5wYXJ0aXRpb24pIHdpdGgKKyAgYXJndW1lbnRzIG9mIGRpZmZlcmVudCBraW5kcyAoVUNTMSwgVUNTMiwgVUNTNCkuCisKKy0gSXNzdWUgIzIzNzUzOiBQeXRob24gZG9lc24ndCBzdXBwb3J0IGFueW1vcmUgcGxhdGZvcm1zIHdpdGhvdXQgc3RhdCgpIG9yCisgIGZzdGF0KCksIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWx3YXlzIHJlcXVpcmVkLgorCistIElzc3VlICMyMzY4MTogVGhlIC1iIG9wdGlvbiBub3cgYWZmZWN0cyBjb21wYXJpc29ucyBvZiBieXRlcyB3aXRoIGludC4KKworLSBJc3N1ZSAjMjM2MzI6IE1lbW9yeXZpZXdzIG5vdyBhbGxvdyB0dXBsZSBpbmRleGluZyAoaW5jbHVkaW5nIGZvcgorICBtdWx0aS1kaW1lbnNpb25hbCBtZW1vcnl2aWV3cykuCisKKy0gSXNzdWUgIzIzMTkyOiBGaXhlZCBnZW5lcmF0b3IgbGFtYmRhcy4gIFBhdGNoIGJ5IEJydW5vIENhdWV0LgorCistIElzc3VlICMyMzYyOTogRml4IHRoZSBkZWZhdWx0IF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHZhcmlhYmxlLXNpemVkCisgIG9iamVjdHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTQyNjA6IFRoZSBncm91cGluZGV4IGF0dHJpYnV0ZSBvZiByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBvYmplY3QKKyAgbm93IGlzIG5vbi1tb2RpZmlhYmxlIG1hcHBpbmcuCisKIC0gSXNzdWUgIzIzNzkyOiBJZ25vcmUgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiB0aGUgcHlkb2MgcGFnZXIgaXMgYWN0aXZlLgogICBUaGlzIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIHN0YW5kYXJkIHVuaXggcGFnZXJzLCBhbmQgcHJldmVudHMKICAgcGlwZXBhZ2VyIGZyb20gc2h1dHRpbmcgZG93biB3aGlsZSB0aGUgcGFnZXIgaXRzZWxmIGlzIHN0aWxsIHJ1bm5pbmcuCiAKKy0gSXNzdWUgIzIzNzc1OiBwcHJpbnQoKSBvZiBPcmRlcmVkRGljdCBub3cgb3V0cHV0cyB0aGUgc2FtZSByZXByZXNlbnRhdGlvbgorICBhcyByZXByKCkuCisKKy0gSXNzdWUgIzIzNzY1OiBSZW1vdmVkIElzQmFkU3RyaW5nUHRyIGNhbGxzIGluIGN0eXBlcworCistIElzc3VlICMyMjM2NDogSW1wcm92ZWQgc29tZSByZSBlcnJvciBtZXNzYWdlcyB1c2luZyByZWdleCBmb3IgaGludHMuCisKIC0gSXNzdWUgIzIzNzQyOiBudHBhdGguZXhwYW5kdmFycygpIG5vIGxvbmdlciBsb3NlcyB1bmJhbGFuY2VkIHNpbmdsZSBxdW90ZXMuCiAKKy0gSXNzdWUgIzIxNzE3OiBUaGUgemlwZmlsZS5aaXBGaWxlLm9wZW4gZnVuY3Rpb24gbm93IHN1cHBvcnRzICd4JyAoZXhjbHVzaXZlCisgIGNyZWF0aW9uKSBtb2RlLgorCiAtIElzc3VlICMyMTgwMjogVGhlIHJlYWRlciBpbiBCdWZmZXJlZFJXUGFpciBub3cgaXMgY2xvc2VkIGV2ZW4gd2hlbiBjbG9zaW5nCiAgIHdyaXRlciBmYWlsZWQgaW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KIAorLSBJc3N1ZSAjMjM2MjI6IFVua25vd24gZXNjYXBlcyBpbiByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgY29uc2lzdCBvZiBgYCdcJ2BgCisgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4KKyAgUHl0aG9uIDMuNi4KKwogLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHRvIHNwZWNpZnkgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKICAga2V5d29yZCBhcmd1bWVudC4gIHN0cmluZy5Gb3JtYXR0ZXIgbm93IGFsbG93cyB0byBzcGVjaWZ5IHRoZSAic2VsZiIgYW5kCiAgIHRoZSAiZm9ybWF0X3N0cmluZyIgcGFyYW1ldGVycyBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KIAotLSBJc3N1ZSAjMjE1NjA6IEFuIGF0dGVtcHQgdG8gd3JpdGUgYSBkYXRhIG9mIHdyb25nIHR5cGUgbm8gbG9uZ2VyIGNhdXNlCi0gIEd6aXBGaWxlIGNvcnJ1cHRpb24uICBPcmlnaW5hbCBwYXRjaCBieSBXb2xmZ2FuZyBNYWllci4KKy0gSXNzdWUgIzIzNTAyOiBUaGUgcHByaW50IG1vZHVsZSBub3cgc3VwcG9ydHMgbWFwcGluZyBwcm94aWVzLgorCistIElzc3VlICMxNzUzMDogcHByaW50IG5vdyB3cmFwcyBsb25nIGJ5dGVzIG9iamVjdHMgYW5kIGJ5dGVhcnJheXMuCisKKy0gSXNzdWUgIzIyNjg3OiBGaXhlZCBzb21lIGNvcm5lciBjYXNlcyBpbiBicmVha2luZyB3b3JkcyBpbiB0ZXR4dHdyYXAuCisgIEdvdCByaWQgb2YgcXVhZHJhdGljIGNvbXBsZXhpdHkgaW4gYnJlYWtpbmcgbG9uZyB3b3Jkcy4KKworLSBJc3N1ZSAjNDcyNzogVGhlIGNvcHkgbW9kdWxlIG5vdyB1c2VzIHBpY2tsZSBwcm90b2NvbCA0IChQRVAgMzE1NCkgYW5kCisgIHN1cHBvcnRzIGNvcHlpbmcgb2YgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2hvc2UgX19uZXdfXyBtZXRob2QgdGFrZXMKKyAga2V5d29yZC1vbmx5IGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjM0OTE6IEFkZGVkIGEgemlwYXBwIG1vZHVsZSB0byBzdXBwb3J0IGNyZWF0aW5nIGV4ZWN1dGFibGUgemlwCisgIGZpbGUgYXJjaGl2ZXMgb2YgUHl0aG9uIGNvZGUuIFJlZ2lzdGVyZWQgIi5weXoiIGFuZCAiLnB5enciIGV4dGVuc2lvbnMKKyAgb24gV2luZG93cyBmb3IgdGhlc2UgYXJjaGl2ZXMgKFBFUCA0NDEpLgorCistIElzc3VlICMyMzY1NzogQXZvaWQgZXhwbGljaXQgY2hlY2tzIGZvciBzdHIgaW4gemlwYXBwLCBhZGRpbmcgc3VwcG9ydAorICBmb3IgcGF0aGxpYi5QYXRoIG9iamVjdHMgYXMgYXJndW1lbnRzLgorCistIElzc3VlICMyMzY4ODogQWRkZWQgc3VwcG9ydCBvZiBhcmJpdHJhcnkgYnl0ZXMtbGlrZSBvYmplY3RzIGFuZCBhdm9pZGVkCisgIHVubmVjZXNzYXJ5IGNvcHlpbmcgb2YgbWVtb3J5dmlldyBpbiBnemlwLkd6aXBGaWxlLndyaXRlKCkuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFdvbGZnYW5nIE1haWVyLgorCistIElzc3VlICMyMzI1MjogQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyBaSVAgZmlsZXMgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgogCiAtIElzc3VlICMyMzY0NzogSW5jcmVhc2UgaW1wYWxpYidzIE1BWExJTkUgdG8gYWNjb21tb2RhdGUgbW9kZXJuIG1haWxib3ggc2l6ZXMuCiAKQEAgLTM0Myw2ICsxMTM3LDIzIEBACiAgIGFuZCBzb2NrZXQgb3BlbiB1bnRpbCB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgY2xlYW5zIHRoZW0gdXAuICBQYXRjaCBieQogICBNYXJ0aW4gUGFudGVyLgogCistIElzc3VlICMyMzcwNDogY29sbGVjdGlvbnMuZGVxdWUoKSBvYmplY3RzIG5vdyBzdXBwb3J0IG1ldGhvZHMgZm9yIGluZGV4KCksCisgIGluc2VydCgpLCBhbmQgY29weSgpLiAgVGhpcyBhbGxvd3MgZGVxdWVzIHRvIGJlIHJlZ2lzdGVyZWQgYXMgYQorICBNdXRhYmxlU2VxdWVuY2UgYW5kIGl0IGltcHJvdmVzIHRoZWlyIHN1YnN0aXR1dGFibGl0eSBmb3IgbGlzdHMuCisKKy0gSXNzdWUgIzIzNzE1OiA6ZnVuYzpgc2lnbmFsLnNpZ3dhaXRpbmZvYCBhbmQgOmZ1bmM6YHNpZ25hbC5zaWd0aW1lZHdhaXRgIGFyZQorICBub3cgcmV0cmllZCB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIG5vdCBpbiB0aGUgKnNpZ3NldCogcGFyYW1ldGVyLCBpZgorICB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4gZXhjZXB0aW9uLiBzaWduYWwuc2lndGltZWR3YWl0KCkKKyAgcmVjb21wdXRlcyB0aGUgdGltZW91dCB3aXRoIGEgbW9ub3RvbmljIGNsb2NrIHdoZW4gaXQgaXMgcmV0cmllZC4KKworLSBJc3N1ZSAjMjMwMDE6IEZldyBmdW5jdGlvbnMgaW4gbW9kdWxlcyBtbWFwLCBvc3NhdWRpb2Rldiwgc29ja2V0LCBzc2wsIGFuZAorICBjb2RlY3MsIHRoYXQgYWNjZXB0ZWQgb25seSByZWFkLW9ubHkgYnl0ZXMtbGlrZSBvYmplY3Qgbm93IGFjY2VwdCB3cml0YWJsZQorICBieXRlcy1saWtlIG9iamVjdCB0b28uCisKKy0gSXNzdWUgIzIzNjQ2OiBJZiB0aW1lLnNsZWVwKCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIHRoZSBzbGVlcCBpcyBub3cKKyAgcmV0cmllZCB3aXRoIHRoZSByZWNvbXB1dGVkIGRlbGF5LCBleGNlcHQgaWYgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhbgorICBleGNlcHRpb24gKFBFUCA0NzUpLgorCiAtIElzc3VlICMyMzEzNjogX3N0cnB0aW1lIG5vdyB1bmlmb3JtbHkgaGFuZGxlcyBhbGwgZGF5cyBpbiB3ZWVrIDAsIGluY2x1ZGluZwogICBEZWMgMzAgb2YgcHJldmlvdXMgeWVhci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEppbSBDYXJyb2xsLgogCkBAIC0zNTIsOSArMTE2MywzMSBAQAogLSBJc3N1ZSAjMjI5MDM6IFRoZSBmYWtlIHRlc3QgY2FzZSBjcmVhdGVkIGJ5IHVuaXR0ZXN0LmxvYWRlciB3aGVuIGl0IGZhaWxzCiAgIGltcG9ydGluZyBhIHRlc3QgbW9kdWxlIGlzIG5vdyBwaWNrbGFibGUuCiAKKy0gSXNzdWUgIzIyMTgxOiBPbiBMaW51eCwgb3MudXJhbmRvbSgpIG5vdyB1c2VzIHRoZSBuZXcgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpZgorICBhdmFpbGFibGUsIHN5c2NhbGwgaW50cm9kdWNlZCBpbiB0aGUgTGludXgga2VybmVsIDMuMTcuIEl0IGlzIG1vcmUgcmVsaWFibGUKKyAgYW5kIG1vcmUgc2VjdXJlLCBiZWNhdXNlIGl0IGF2b2lkcyB0aGUgbmVlZCBvZiBhIGZpbGUgZGVzY3JpcHRvciBhbmQgd2FpdHMKKyAgdW50aWwgdGhlIGtlcm5lbCBoYXMgZW5vdWdoIGVudHJvcHkuCisKKy0gSXNzdWUgIzIyMTE6IFVwZGF0ZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBodHRwLmNvb2tpZXMuTW9yc2VsIGNsYXNzLgorICBTZXR0aW5nIGF0dHJpYnV0ZXMga2V5LCB2YWx1ZSBhbmQgY29kZWRfdmFsdWUgZGlyZWN0bHkgbm93IGlzIGRlcHJlY2F0ZWQuCisgIHVwZGF0ZSgpIGFuZCBzZXRkZWZhdWx0KCkgbm93IHRyYW5zZm9ybSBhbmQgY2hlY2sga2V5cy4gIENvbXBhcmluZyBmb3IKKyAgZXF1YWxpdHkgbm93IHRha2VzIGludG8gYWNjb3VudCBhdHRyaWJ1dGVzIGtleSwgdmFsdWUgYW5kIGNvZGVkX3ZhbHVlLgorICBjb3B5KCkgbm93IHJldHVybnMgYSBNb3JzZWwsIG5vdCBhIGRpY3QuICByZXByKCkgbm93IGNvbnRhaW5zIGFsbCBhdHRyaWJ1dGVzLgorICBPcHRpbWl6ZWQgY2hlY2tpbmcga2V5cyBhbmQgcXVvdGluZyB2YWx1ZXMuICBBZGRlZCBuZXcgdGVzdHMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy0gSXNzdWUgIzE4OTgzOiBBbGxvdyBzZWxlY3Rpb24gb2Ygb3V0cHV0IHVuaXRzIGluIHRpbWVpdC4KKyAgUGF0Y2ggYnkgSnVsaWFuIEdpbmRpLgorCistIElzc3VlICMyMzYzMTogRml4IHRyYWNlYmFjay5mb3JtYXRfbGlzdCB3aGVuIGEgdHJhY2ViYWNrIGhhcyBiZWVuIG11dGF0ZWQuCisKIC0gSXNzdWUgIzIzNTY4OiBBZGQgcmRpdm1vZCBzdXBwb3J0IHRvIE1hZ2ljTW9jaygpIG9iamVjdHMuCiAgIFBhdGNoIGJ5IEjDpWthbiBMw7Z2ZGFobC4KIAorLSBJc3N1ZSAjMjA1MjogQWRkIGNoYXJzZXQgcGFyYW1ldGVyIHRvIEh0bWxEaWZmLm1ha2VfZmlsZSgpLgorCistIElzc3VlICMyMzY2ODogU3VwcG9ydCBvcy50cnVuY2F0ZSBhbmQgb3MuZnRydW5jYXRlIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzIzMTM4OiBGaXhlZCBwYXJzaW5nIGNvb2tpZXMgd2l0aCBhYnNlbnQga2V5cyBvciB2YWx1ZXMgaW4gY29va2llamFyLgogICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgogCkBAIC0zNjIsMTIgKzExOTUsNjYgQEAKICAgaGFuZGxlIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IGFuIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgQWxvbiBEaWFtYW50IGFuZCBEYXZpbgogICBQb3R0cy4KIAorLSBJc3N1ZSAjMjM1ODE6IEFkZCBtYXRtdWwgc3VwcG9ydCB0byBNYWdpY01vY2suIFBhdGNoIGJ5IEjDpWthbiBMw7Z2ZGFobC4KKworLSBJc3N1ZSAjMjM1NjY6IGVuYWJsZSgpLCByZWdpc3RlcigpLCBkdW1wX3RyYWNlYmFjaygpIGFuZAorICBkdW1wX3RyYWNlYmFja19sYXRlcigpIGZ1bmN0aW9ucyBvZiBmYXVsdGhhbmRsZXIgbm93IGFjY2VwdCBmaWxlCisgIGRlc2NyaXB0b3JzLiBQYXRjaCBieSBXZWkgV3UuCisKIC0gSXNzdWUgIzIyOTI4OiBEaXNhYmxlZCBIVFRQIGhlYWRlciBpbmplY3Rpb25zIGluIGh0dHAuY2xpZW50LgogICBPcmlnaW5hbCBwYXRjaCBieSBEZW1pYW4gQnJlY2h0LgogCiAtIElzc3VlICMyMzYxNTogTW9kdWxlcyBiejIsIHRhcmZpbGUgYW5kIHRva2VuaXplIG5vdyBjYW4gYmUgcmVsb2FkZWQgd2l0aAogICBpbXAucmVsb2FkKCkuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KIAorLSBJc3N1ZSAjMjM2MDU6IG9zLndhbGsoKSBub3cgY2FsbHMgb3Muc2NhbmRpcigpIGluc3RlYWQgb2Ygb3MubGlzdGRpcigpLgorICBUaGUgdXNhZ2Ugb2Ygb3Muc2NhbmRpcigpIHJlZHVjZXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBvcy5zdGF0KCkuCisgIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBCZW4gSG95dC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzIzNTg1OiBtYWtlIHBhdGNoY2hlY2sgd2lsbCBlbnN1cmUgdGhlIGludGVycHJldGVyIGlzIGJ1aWx0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjM1ODM6IEFkZGVkIHRlc3RzIGZvciBzdGFuZGFyZCBJTyBzdHJlYW1zIGluIElETEUuCisKKy0gSXNzdWUgIzIyMjg5OiBQcmV2ZW50IHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyBkdWUgdG8gZnRwIGNvbm5lY3Rpb24gdGltZW91dC4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIyODI2OiBUaGUgcmVzdWx0IG9mIG9wZW4oKSBpbiBUb29scy9mcmVlemUvYmtmaWxlLnB5IGlzIG5vdyBiZXR0ZXIKKyAgY29tcGF0aWJsZSB3aXRoIHJlZ3VsYXIgZmlsZXMgKGluIHBhcnRpY3VsYXIgaXQgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0CisgIG1hbmFnZW1lbnQgcHJvdG9jb2wpLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNSBhbHBoYSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNS0wMy0wOQorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM1NzE6IFB5T2JqZWN0X0NhbGwoKSBhbmQgUHlDRnVuY3Rpb25fQ2FsbCgpIG5vdyByYWlzZSBhIFN5c3RlbUVycm9yCisgIGlmIGEgZnVuY3Rpb24gcmV0dXJucyBhIHJlc3VsdCBhbmQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gVGhlIFN5c3RlbUVycm9yIGlzCisgIGNoYWluZWQgdG8gdGhlIHByZXZpb3VzIGV4Y2VwdGlvbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMjUyNDogTmV3IG9zLnNjYW5kaXIoKSBmdW5jdGlvbiwgcGFydCBvZiB0aGUgUEVQIDQ3MTogIm9zLnNjYW5kaXIoKQorICBmdW5jdGlvbiAtLSBhIGJldHRlciBhbmQgZmFzdGVyIGRpcmVjdG9yeSBpdGVyYXRvciIuIFBhdGNoIHdyaXR0ZW4gYnkgQmVuCisgIEhveXQuCisKKy0gSXNzdWUgIzIzMTAzOiBSZWR1Y2VkIHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2YgSVB2NEFkZHJlc3MgYW5kIElQdjZBZGRyZXNzLgorCistIElzc3VlICMyMTc5MzogQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciBhZ2FpbiBsb2dzIHJlc3BvbnNlIGNvZGUgYXMgbnVtZXJpYywKKyAgbm90IGFzIHN0cmluZ2lmaWVkIGVudW0uICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCiAtIElzc3VlICMyMzQ3NjogSW4gdGhlIHNzbCBtb2R1bGUsIGVuYWJsZSBPcGVuU1NMJ3MgWDUwOV9WX0ZMQUdfVFJVU1RFRF9GSVJTVAogICBmbGFnIG9uIGNlcnRpZmljYXRlIHN0b3JlcyB3aGVuIGl0IGlzIGF2YWlsYWJsZS4KIApAQCAtMzc2LDggKzEyNjMsMTYgQEAKIAogLSBJc3N1ZSAjMjM1MDQ6IEFkZGVkIGFuIF9fYWxsX18gdG8gdGhlIHR5cGVzIG1vZHVsZS4KIAorLSBJc3N1ZSAjMjM1NjM6IE9wdGltaXplZCB1dGlsaXR5IGZ1bmN0aW9ucyBpbiB1cmxsaWIucGFyc2UuCisKKy0gSXNzdWUgIzc4MzA6IEZsYXR0ZW4gbmVzdGVkIGZ1bmN0b29scy5wYXJ0aWFsLgorCiAtIElzc3VlICMyMDIwNDogQWRkZWQgdGhlIF9fbW9kdWxlX18gYXR0cmlidXRlIHRvIF90a2ludGVyIGNsYXNzZXMuCiAKKy0gSXNzdWUgIzE5OTgwOiBJbXByb3ZlZCBoZWxwKCkgZm9yIG5vbi1yZWNvZ25pemVkIHN0cmluZ3MuICBoZWxwKCcnKSBub3cKKyAgc2hvd3MgdGhlIGhlbHAgb24gc3RyLiAgaGVscCgnaGVscCcpIG5vdyBzaG93cyB0aGUgaGVscCBvbiBoZWxwKCkuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgTGF3cmVuY2UuCisKIC0gSXNzdWUgIzIzNTIxOiBDb3JyZWN0ZWQgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24gb2YgdGltZWRlbHRhIGRpdmlzaW9uLgogCiAgKiBFbGltaW5hdGVkIE92ZXJmbG93RXJyb3IgZnJvbSB0aW1lZGVsdGEgKiBmbG9hdCBmb3Igc29tZSBmbG9hdHM7CkBAIC0zODYsMTIgKzEyODEsMTcgQEAKIC0gSXNzdWUgIzIxNjE5OiBQb3BlbiBvYmplY3RzIG5vIGxvbmdlciBsZWF2ZSBhIHpvbWJpZSBhZnRlciBleGl0IGluIHRoZSB3aXRoCiAgIHN0YXRlbWVudCBpZiB0aGUgcGlwZSB3YXMgYnJva2VuLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAorLSBJc3N1ZSAjMjI5MzY6IE1ha2UgaXQgcG9zc2libGUgdG8gc2hvdyBsb2NhbCB2YXJpYWJsZXMgaW4gdHJhY2ViYWNrcyBmb3IKKyAgYm90aCB0aGUgdHJhY2ViYWNrIG1vZHVsZSBhbmQgdW5pdHRlc3QuCisKKy0gSXNzdWUgIzE1OTU1OiBBZGQgYW4gb3B0aW9uIHRvIGxpbWl0IHRoZSBvdXRwdXQgc2l6ZSBpbiBiejIuZGVjb21wcmVzcygpLgorICBQYXRjaCBieSBOaWtvbGF1cyBSYXRoLgorCiAtIElzc3VlICM2NjM5OiBNb2R1bGUtbGV2ZWwgdHVydGxlIGZ1bmN0aW9ucyBubyBsb25nZXIgcmFpc2UgVGNsRXJyb3IgYWZ0ZXIKICAgY2xvc2luZyB0aGUgd2luZG93LgogCi0tIElzc3VlcyAjODE0MjUzLCAjOTE3OTogV2FybmluZ3Mgbm93IGFyZSByYWlzZWQgd2hlbiBncm91cCByZWZlcmVuY2VzIGFuZAotICBjb25kaXRpb25hbCBncm91cCByZWZlcmVuY2VzIGFyZSB1c2VkIGluIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBpbiByZWd1bGFyCi0gIGV4cHJlc3Npb25zLgorLSBJc3N1ZXMgIzgxNDI1MywgIzkxNzk6IEdyb3VwIHJlZmVyZW5jZXMgYW5kIGNvbmRpdGlvbmFsIGdyb3VwIHJlZmVyZW5jZXMgbm93CisgIHdvcmsgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCiAKIC0gSXNzdWUgIzIzMjE1OiBNdWx0aWJ5dGUgY29kZWNzIHdpdGggY3VzdG9tIGVycm9yIGhhbmRsZXJzIHRoYXQgaWdub3JlcyBlcnJvcnMKICAgY29uc3VtZWQgdG9vIG11Y2ggbWVtb3J5IGFuZCByYWlzZWQgU3lzdGVtRXJyb3Igb3IgTWVtb3J5RXJyb3IuCkBAIC00MTEsMTQwICsxMzExLDc2IEBACiAtIElzc3VlICMyMjg4NTogRml4ZWQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGRibS5kdW1iCiAgIG1vZHVsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KIAorLSBJc3N1ZSAjMjMyMzk6IHNzbC5tYXRjaF9ob3N0bmFtZSgpIG5vdyBzdXBwb3J0cyBtYXRjaGluZyBvZiBJUCBhZGRyZXNzZXMuCisKIC0gSXNzdWUgIzIzMTQ2OiBGaXggbWlzaGFuZGxpbmcgb2YgYWJzb2x1dGUgV2luZG93cyBwYXRocyB3aXRoIGZvcndhcmQKICAgc2xhc2hlcyBpbiBwYXRobGliLgogCistIElzc3VlICMyMzA5NjogUGlja2xlIHJlcHJlc2VudGF0aW9uIG9mIGZsb2F0cyB3aXRoIHByb3RvY29sIDAgbm93IGlzIHRoZSBzYW1lCisgIGZvciBib3RoIFB5dGhvbiBhbmQgQyBpbXBsZW1lbnRhdGlvbnMuCisKKy0gSXNzdWUgIzE5MTA1OiBwcHJpbnQgbm93IG1vcmUgZWZmaWNpZW50bHkgdXNlcyBmcmVlIHNwYWNlIGF0IHRoZSByaWdodC4KKworLSBJc3N1ZSAjMTQ5MTA6IEFkZCBhbGxvd19hYmJyZXYgcGFyYW1ldGVyIHRvIGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyLiBQYXRjaCBieQorICBKb25hdGhhbiBQYXVnaCwgU3RldmVuIEJldGhhcmQsIHBhdWwgajMgYW5kIERhbmllbCBFcmlrc3Nvbi4KKworLSBJc3N1ZSAjMjE3MTc6IHRhcmZpbGUub3BlbigpIG5vdyBzdXBwb3J0cyAneCcgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZS4KKworLSBJc3N1ZSAjMjMzNDQ6IG1hcnNoYWwuZHVtcHMoKSBpcyBub3cgMjAtMjUlIGZhc3RlciBvbiBhdmVyYWdlLgorCistIElzc3VlICMyMDQxNjogbWFyc2hhbC5kdW1wcygpIHdpdGggcHJvdG9jb2xzIDMgYW5kIDQgaXMgbm93IDQwLTUwJSBmYXN0ZXIgb24KKyAgYXZlcmFnZS4KKwogLSBJc3N1ZSAjMjM0MjE6IEZpeGVkIGNvbXByZXNzaW9uIGluIHRhcmZpbGUgQ0xJLiAgUGF0Y2ggYnkgd2R2NDc1OGguCiAKIC0gSXNzdWUgIzIzMzY3OiBGaXggcG9zc2libGUgb3ZlcmZsb3dzIGluIHRoZSB1bmljb2RlZGF0YSBtb2R1bGUuCiAKIC0gSXNzdWUgIzIzMzYxOiBGaXggcG9zc2libGUgb3ZlcmZsb3cgaW4gV2luZG93cyBzdWJwcm9jZXNzIGNyZWF0aW9uIGNvZGUuCiAKKy0gbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyIG5vdyB0YWtlcyBhIHJlc3BlY3RfaGFuZGxlcl9sZXZlbCBrZXl3b3JkCisgIGFyZ3VtZW50IHdoaWNoLCBpZiBzZXQgdG8gVHJ1ZSwgd2lsbCBwYXNzIG1lc3NhZ2VzIHRvIGhhbmRsZXJzIHRha2luZyBoYW5kbGVyCisgIGxldmVscyBpbnRvIGFjY291bnQuCisKKy0gSXNzdWUgIzE5NzA1OiB0dXJ0bGVkZW1vIG5vdyBoYXMgYSB2aXN1YWwgc29ydGluZyBhbGdvcml0aG0gZGVtby4gIE9yaWdpbmFsCisgIHBhdGNoIGZyb20gSmFzb24gWWVvLgorCiAtIElzc3VlICMyMzgwMTogRml4IGlzc3VlIHdoZXJlIGNnaS5GaWVsZFN0b3JhZ2UgZGlkIG5vdCBhbHdheXMgaWdub3JlIHRoZQogICBlbnRpcmUgcHJlYW1ibGUgdG8gYSBtdWx0aXBhcnQgYm9keS4KIAotLSBJc3N1ZSAjMjMzMTA6IEZpeCBNYWdpY01vY2sncyBpbml0aWFsaXplciB0byB3b3JrIHdpdGggX19tZXRob2RzX18sIGp1c3QKLSAgbGlrZSBjb25maWd1cmVfbW9jaygpLiAgUGF0Y2ggYnkgS2FzaWEgSmFjaGltLgotCi0tIGFzeW5jaW86IE5ldyBldmVudCBsb29wIEFQSXM6IHNldF90YXNrX2ZhY3RvcnkoKSBhbmQgZ2V0X3Rhc2tfZmFjdG9yeSgpLgotCi0tIGFzeW5jaW86IGFzeW5jKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZW5zdXJlX2Z1dHVyZSgpLgotCi0tIElzc3VlICMyMzg5ODogRml4IGluc3BlY3QuY2xhc3NpZnlfY2xhc3NfYXR0cnMoKSB0byBzdXBwb3J0IGF0dHJpYnV0ZXMKLSAgd2l0aCBvdmVybG9hZGVkIF9fZXFfXyBhbmQgX19ib29sX18uICBQYXRjaCBieSBNaWtlIEJheWVyLgotCi0tIElzc3VlICMyNDI5ODogRml4IGluc3BlY3Quc2lnbmF0dXJlKCkgdG8gY29ycmVjdGx5IHVud3JhcCB3cmFwcGVycwotICBhcm91bmQgYm91bmQgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMjM1NzI6IEZpeGVkIGZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaCBvbiBjbGFzc2VzIHdpdGggZmFsc3kKLSAgbWV0YWNsYXNzZXMuICBQYXRjaCBieSBFdGhhbiBGdXJtYW4uCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjM2NzI6IEFsbG93IElkbGUgdG8gZWRpdCBhbmQgcnVuIGZpbGVzIHdpdGggYXN0cmFsIGNoYXJzIGluIG5hbWUuCi0gIFBhdGNoIGJ5IE1vaGQgU2FuYWQgWmFraSBSaXp2aS4KLQotLSBJc3N1ZSAyNDc0NTogSWRsZSBlZGl0b3IgZGVmYXVsdCBmb250LiBTd2l0Y2ggZnJvbSBDb3VyaWVyIHRvCi0gIHBsYXRmb3JtLXNlbnNpdGl2ZSBUa0ZpeGVkRm9udC4gIFRoaXMgc2hvdWxkIG5vdCBhZmZlY3QgY3VycmVudCBjdXN0b21pemVkCi0gIGZvbnQgc2VsZWN0aW9ucy4gIElmIHRoZXJlIGlzIGEgcHJvYmxlbSwgZWRpdCAkSE9NRS8uaWRsZXJjL2NvbmZpZy1tYWluLmNmZwotICBhbmQgcmVtb3ZlICdmb250eHh4JyBlbnRyaWVzIGZyb20gW0VkaXRvciBXaW5kb3ddLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyMTE5MjogSWRsZSBlZGl0b3IuIFdoZW4gYSBmaWxlIGlzIHJ1biwgcHV0IGl0cyBuYW1lIGluIHRoZSByZXN0YXJ0IGJhci4KLSAgRG8gbm90IHByaW50IGZhbHNlIHByb21wdHMuIE9yaWdpbmFsIHBhdGNoIGJ5IEFkbmFuIFVtZXIuCi0KLS0gSXNzdWUgIzEzODg0OiBJZGxlIG1lbnVzLiBSZW1vdmUgdGVhcm9mZiBsaW5lcy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzIzMTg0OiByZW1vdmUgdW51c2VkIG5hbWVzIGFuZCBpbXBvcnRzIGluIGlkbGVsaWIuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQWwgU3dlaWdhcnQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMyNDc1MTogV2hlbiBydW5uaW5nIHJlZ3J0ZXN0IHdpdGggdGhlIGBgLXdgYCBjb21tYW5kIGxpbmUgb3B0aW9uLAotICBhIHRlc3QgcnVuIGlzIG5vIGxvbmdlciBtYXJrZWQgYXMgYSBmYWlsdXJlIGlmIGFsbCB0ZXN0cyBzdWNjZWVkIHdoZW4KLSAgcmUtcnVuLgotCi0tIElzc3VlICMyMTUyMDogdGVzdF96aXBmaWxlIG5vIGxvbmdlciBmYWlscyBpZiB0aGUgd29yZCAnYmFkJyBhcHBlYXJzCi0gIGFueXdoZXJlIGluIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMjM3OTk6IEFkZGVkIHRlc3Quc3VwcG9ydC5zdGFydF90aHJlYWRzKCkgZm9yIHJ1bm5pbmcgYW5kCi0gIGNsZWFuaW5nIHVwIG11bHRpcGxlIHRocmVhZHMuCi0KLS0gSXNzdWUgIzIyMzkwOiB0ZXN0LnJlZ3J0ZXN0IG5vdyBlbWl0cyBhIHdhcm5pbmcgaWYgdGVtcG9yYXJ5IGZpbGVzIG9yCi0gIGRpcmVjdG9yaWVzIGFyZSBsZWZ0IGFmdGVyIHJ1bm5pbmcgYSB0ZXN0LgotCi0tIElzc3VlICMyMzU4MzogQWRkZWQgdGVzdHMgZm9yIHN0YW5kYXJkIElPIHN0cmVhbXMgaW4gSURMRS4KLQogQnVpbGQKIC0tLS0tCiAKIC0gSXNzdWUgIzIzNDQ1OiBweWRlYnVnIGJ1aWxkcyBub3cgdXNlICJnY2MgLU9nIiB3aGVyZSBwb3NzaWJsZSwgdG8gbWFrZQogICB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgZmFzdGVyLgogCi0tIElzc3VlICMyNDYwMzogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIGFuZCBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMCi0gIDEuMC4yZC4KKy0gSXNzdWUgIzIzNjg2OiBVcGRhdGUgT1MgWCAxMC41IGluc3RhbGxlciBidWlsZCB0byB1c2UgT3BlblNTTCAxLjAuMmEuCiAKIEMgQVBJCiAtLS0tLQogCi0tIElzc3VlICMyMzk5ODogUHlJbXBvcnRfUmVJbml0TG9jaygpIG5vdyBjaGVja3MgZm9yIGxvY2sgYWxsb2NhdGlvbiBlcnJvcgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzI0OTUyOiBDbGFyaWZ5IHRoZSBkZWZhdWx0IHNpemUgYXJndW1lbnQgb2Ygc3RhY2tfc2l6ZSgpIGluCi0gIHRoZSAidGhyZWFkaW5nIiBhbmQgIl90aHJlYWQiIG1vZHVsZXMuIFBhdGNoIGZyb20gTWF0dGlwLgotCi0tIElzc3VlICMyNDgwODogVXBkYXRlIHRoZSB0eXBlcyBvZiBzb21lIFB5VHlwZU9iamVjdCBmaWVsZHMuIFBhdGNoIGJ5Ci0gIEpvc2VwaCBXZXN0b24uCi0KLS0gSXNzdWUgIzIyODEyOiBGaXggdW5pdHRlc3QgZGlzY292ZXJ5IGV4YW1wbGVzLgotICBQYXRjaCBmcm9tIFBhbSBNY0EnTnVsdHkuCi0KLS0gSXNzdWUgIzI0MTI5OiBDbGFyaWZ5IHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBmb3IgbmFtZSByZXNvbHV0aW9uLgotICBUaGlzIGluY2x1ZGVzIHJlbW92aW5nIHRoZSBhc3N1bXB0aW9uIHRoYXQgcmVhZGVycyB3aWxsIGJlIGZhbWlsaWFyIHdpdGggdGhlCi0gIG5hbWUgcmVzb2x1dGlvbiBzY2hlbWUgUHl0aG9uIHVzZWQgcHJpb3IgdG8gdGhlIGludHJvZHVjdGlvbiBvZiBsZXhpY2FsCi0gIHNjb3BpbmcgZm9yIGZ1bmN0aW9uIG5hbWVzcGFjZXMuIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KLQotLSBJc3N1ZSAjMjA3Njk6IEltcHJvdmUgcmVsb2FkKCkgZG9jcy4gUGF0Y2ggYnkgRG9yaWFuIFB1bGEuCi0KLS0gSXNzdWUgIzIzNTg5OiBSZW1vdmUgZHVwbGljYXRlIHNlbnRlbmNlIGZyb20gdGhlIEZBUS4gIFBhdGNoIGJ5IFlvbmd6aGkgUGFuLgotCi0tIElzc3VlICMyNDcyOTogQ29ycmVjdCBJTyB0dXRvcmlhbCB0byBtYXRjaCBpbXBsZW1lbnRhdGlvbiByZWdhcmRpbmcKLSAgZW5jb2RpbmcgcGFyYW1ldGVyIHRvIG9wZW4gZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzI0MzUxOiBDbGFyaWZ5IHdoYXQgaXMgbWVhbnQgYnkgImlkZW50aWZpZXIiIGluIHRoZSBjb250ZXh0IG9mCi0gIHN0cmluZy5UZW1wbGF0ZSBpbnN0YW5jZXMuCi0KLS0gSXNzdWUgIzIyMTU1OiBBZGQgRmlsZSBIYW5kbGVycyBzdWJzZWN0aW9uIHdpdGggY3JlYXRlZmlsZWhhbmRsZXIgdG8gdGtpbnRlcgotICBkb2MuICBSZW1vdmUgb2Jzb2xldGUgZXhhbXBsZSBmcm9tIEZBUS4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzI0MDI5OiBEb2N1bWVudCB0aGUgbmFtZSBiaW5kaW5nIGJlaGF2aW9yIGZvciBzdWJtb2R1bGUgaW1wb3J0cy4KLQotLSBJc3N1ZSAjMjQwNzc6IEZpeCB0eXBvIGluIG1hbiBwYWdlIGZvciAtSSBjb21tYW5kIG9wdGlvbjogLXMsIG5vdCAtUy4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIzMzMwOiBoMnB5IG5vdyBzdXBwb3J0cyBhcmJpdHJhcnkgZmlsZW5hbWVzIGluICNpbmNsdWRlLgotCi0tIElzc3VlICMyNDAzMTogbWFrZSBwYXRjaGNoZWNrIG5vdyBzdXBwb3J0cyBnaXQgY2hlY2tvdXRzLCB0b28uCistIElzc3VlICMyMDIwNDogRGVwcmVjYXRpb24gd2FybmluZyBpcyBub3cgcmFpc2VkIGZvciBidWlsdGluIHR5cGUgd2l0aG91dCB0aGUKKyAgX19tb2R1bGVfXyBhdHRyaWJ1dGUuCiAKIFdpbmRvd3MKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMjUwMjI6IFJlbW92ZWQgdmVyeSBvdXRkYXRlZCBQQy9leGFtcGxlX250LyBkaXJlY3RvcnkuCistIElzc3VlICMyMzQ2NTogSW1wbGVtZW50IFBFUCA0ODYgLSBNYWtlIHRoZSBQeXRob24gTGF1bmNoZXIgYXdhcmUgb2YgdmlydHVhbAorICBlbnZpcm9ubWVudHMuIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy0gSXNzdWUgIzIzNDM3OiBNYWtlIHVzZXIgc2NyaXB0cyBkaXJlY3RvcnkgdmVyc2lvbmVkIG9uIFdpbmRvd3MuIFBhdGNoIGJ5IFBhdWwKKyAgTW9vcmUuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNSBhbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVJlbGVhc2UgZGF0ZTogMjAxNS0wMi0yMworUmVsZWFzZSBkYXRlOiAyMDE1LTAyLTA4CiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyMzI4NTogUEVQIDQ3NSAtIEVJTlRSIGhhbmRsaW5nLgorCiAtIElzc3VlICMyMjczNTogRml4IG1hbnkgZWRnZSBjYXNlcyAoaW5jbHVkaW5nIGNyYXNoZXMpIGludm9sdmluZyBjdXN0b20gbXJvKCkKICAgaW1wbGVtZW50YXRpb25zLgogCkBAIC01NTQsMTcgKzEzOTAsNDYgQEAKIC0gSXNzdWUgIzIxMjk1OiBSZXZlcnQgc29tZSBjaGFuZ2VzIChpc3N1ZSAjMTY3OTUpIHRvIEFTVCBsaW5lIG51bWJlcnMgYW5kCiAgIGNvbHVtbiBvZmZzZXRzIHRoYXQgY29uc3RpdHV0ZWQgYSByZWdyZXNzaW9uLgogCistIElzc3VlICMyMjk4NjogQWxsb3cgY2hhbmdpbmcgYW4gb2JqZWN0J3MgX19jbGFzc19fIGJldHdlZW4gYSBkeW5hbWljIHR5cGUgYW5kCisgIHN0YXRpYyB0eXBlIGluIHNvbWUgY2FzZXMuCisKKy0gSXNzdWUgIzE1ODU5OiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCksIFB5VW5pY29kZV9FbmNvZGVNQkNTKCkgYW5kCisgIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZSgpIG5vdyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIG9iamVjdCBpcyBub3QgYW4KKyAgVW5pY29kZSBvYmplY3QuIEZvciBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCksIGl0IHdhcyBhbHJlYWR5IHRoZSBjYXNlIG9uCisgIHBsYXRmb3JtcyBvdGhlciB0aGFuIFdpbmRvd3MuIFBhdGNoIHdyaXR0ZW4gYnkgQ2FtcGJlbGwgQmFydG9uLgorCiAtIElzc3VlICMyMTQwODogVGhlIGRlZmF1bHQgX19uZV9fKCkgbm93IHJldHVybnMgTm90SW1wbGVtZW50ZWQgaWYgX19lcV9fKCkKICAgcmV0dXJuZWQgTm90SW1wbGVtZW50ZWQuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCiAtIElzc3VlICMyMzMyMTogRml4ZWQgYSBjcmFzaCBpbiBzdHIuZGVjb2RlKCkgd2hlbiBlcnJvciBoYW5kbGVyIHJldHVybmVkCiAgIHJlcGxhY21lbnQgc3RyaW5nIGxvbmdlciB0aGFuIG1haWxmb3JtZWQgaW5wdXQgZGF0YS4KIAorLSBJc3N1ZSAjMjIyODY6IFRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IgaGFuZGxlcnMgbm93IHdvcmtzIHdpdGgKKyAgZGVjb2RpbmcgYW5kIHRyYW5zbGF0aW5nLgorCistIElzc3VlICMyMzI1MzogRGVsYXktbG9hZCBTaGVsbEV4ZWN1dGVbQVddIGluIG9zLnN0YXJ0ZmlsZSBmb3IgcmVkdWNlZAorICBzdGFydHVwIG92ZXJoZWFkIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzIyMDM4OiBweWF0b21pYy5oIG5vdyB1c2VzIHN0ZGF0b21pYy5oIG9yIEdDQyBidWlsdC1pbiBmdW5jdGlvbnMgZm9yCisgIGF0b21pYyBtZW1vcnkgYWNjZXNzIGlmIGF2YWlsYWJsZS4gUGF0Y2ggd3JpdHRlbiBieSBWaXRvciBkZSBMaW1hIGFuZCBHdXN0YXZvCisgIFRlbXBsZS4KKworLSBJc3N1ZSAjMjAyODQ6ICUtaW50ZXJwb2xhdGlvbiAoYWthIHByaW50ZikgZm9ybWF0dGluZyBhZGRlZCBmb3IgYnl0ZXMgYW5kCisgIGJ5dGVhcnJheS4KKwogLSBJc3N1ZSAjMjMwNDg6IEZpeCBqdW1waW5nIG91dCBvZiBhbiBpbmZpbml0ZSB3aGlsZSBsb29wIGluIHRoZSBwZGIuCiAKIC0gSXNzdWUgIzIwMzM1OiBieXRlcyBjb25zdHJ1Y3RvciBub3cgcmFpc2VzIFR5cGVFcnJvciB3aGVuIGVuY29kaW5nIG9yIGVycm9ycwogICBpcyBzcGVjaWZpZWQgd2l0aCBub24tc3RyaW5nIGFyZ3VtZW50LiAgQmFzZWQgb24gcGF0Y2ggYnkgUmVuYXVkIEJsYW5jaC4KIAorLSBJc3N1ZSAjMjI4MzQ6IElmIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGVuZHMgdXAgYmVpbmcgc2V0IHRvIGEKKyAgbm9uLWV4aXN0ZW50IGRpcmVjdG9yeSB0aGVuIGltcG9ydCB3aWxsIG5vIGxvbmdlciByYWlzZSBGaWxlTm90Rm91bmRFcnJvci4KKworLSBJc3N1ZSAjMjI4Njk6IE1vdmUgdGhlIGludGVycHJldGVyIHN0YXJ0dXAgJiBzaHV0ZG93biBjb2RlIHRvIGEgbmV3CisgIGRlZGljYXRlZCBweWxpZmVjeWNsZS5jIG1vZHVsZQorCistIElzc3VlICMyMjg0NzogSW1wcm92ZSBtZXRob2QgY2FjaGUgZWZmaWNpZW5jeS4KKwogLSBJc3N1ZSAjMjIzMzU6IEZpeCBjcmFzaCB3aGVuIHRyeWluZyB0byBlbmxhcmdlIGEgYnl0ZWFycmF5IHRvIDB4N2ZmZmZmZmYKICAgYnl0ZXMgb24gYSAzMi1iaXQgcGxhdGZvcm0uCiAKQEAgLTU3NCwxMiArMTQzOSwyOCBAQAogLSBJc3N1ZSAjMjI2NDM6IEZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIFVuaWNvZGUgY2FzZSBvcGVyYXRpb25zICh1cHBlciwgbG93ZXIsCiAgIHRpdGxlLCBzd2FwY2FzZSwgY2FzZWZvbGQpLgogCistIElzc3VlICMxNzYzNjogQ2lyY3VsYXIgaW1wb3J0cyBpbnZvbHZpbmcgcmVsYXRpdmUgaW1wb3J0cyBhcmUgbm93CisgIHN1cHBvcnRlZC4KKwogLSBJc3N1ZSAjMjI2MDQ6IEZpeCBhc3NlcnRpb24gZXJyb3IgaW4gZGVidWcgbW9kZSB3aGVuIGRpdmlkaW5nIGEgY29tcGxleAogICBudW1iZXIgYnkgKG5hbiswaikuCiAKKy0gSXNzdWUgIzIxMDUyOiBEbyBub3QgcmFpc2UgSW1wb3J0V2FybmluZyB3aGVuIHN5cy5wYXRoX2hvb2tzIG9yIHN5cy5tZXRhX3BhdGgKKyAgYXJlIHNldCB0byBOb25lLgorCistIElzc3VlICMxNjUxODogVXNlICdieXRlcy1saWtlIG9iamVjdCByZXF1aXJlZCcgaW4gZXJyb3IgbWVzc2FnZXMgdGhhdAorICBwcmV2aW91c2x5IHVzZWQgdGhlIGZhciBtb3JlIGNyeXB0aWMgIid4JyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIKKyAgcHJvdG9jb2wuCisKIC0gSXNzdWUgIzIyNDcwOiBGaXhlZCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiAiYmFja3NsYXNocmVwbGFjZSIsCiAgICJ4bWxjaGFycmVmcmVwbGFjZSIsIGFuZCAic3Vycm9nYXRlcGFzcyIgZXJyb3IgaGFuZGxlcnMuCiAKKy0gSXNzdWUgIzIyNTQwOiBzcGVlZCB1cCBgUHlPYmplY3RfSXNJbnN0YW5jZWAgYW5kIGBQeU9iamVjdF9Jc1N1YmNsYXNzYCBpbiB0aGUKKyAgY29tbW9uIGNhc2UgdGhhdCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcyBtZXRhY2xhc3MgYHR5cGVgLgorCistIElzc3VlICMxODcxMTogQWRkIGEgbmV3IGBQeUVycl9Gb3JtYXRWYCBmdW5jdGlvbiwgc2ltaWxhciB0byBgUHlFcnJfRm9ybWF0YAorICBidXQgYWNjZXB0aW5nIGEgYHZhX2xpc3RgIGFyZ3VtZW50LgorCiAtIElzc3VlICMyMjUyMDogRml4IG92ZXJmbG93IGNoZWNraW5nIHdoZW4gZ2VuZXJhdGluZyB0aGUgcmVwciBvZiBhIHVuaWNvZGUKICAgb2JqZWN0LgogCkBAIC01ODcsNiArMTQ2OCwxMzggQEAKIAogLSBJc3N1ZSAjMjI1MTg6IEZpeCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBsYXRpbi0xIGVuY29kaW5nLgogCistIElzc3VlICMxNjMyNDogX2NoYXJzZXQgcGFyYW1ldGVyIG9mIE1JTUVUZXh0IG5vdyBhbHNvIGFjY2VwdHMKKyAgZW1haWwuY2hhcnNldC5DaGFyc2V0IGluc3RhbmNlcy4gSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGUgUGFyb3ouCisKKy0gSXNzdWUgIzE3NjQyODY6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIHRvIHN1cHBvcnQgZGVjb3JhdGVkIGZ1bmN0aW9ucy4KKyAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxODU1NDogb3MuX19hbGxfXyBpbmNsdWRlcyBwb3NpeCBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzIxMzkxOiBVc2Ugb3MucGF0aC5hYnNwYXRoIGluIHRoZSBzaHV0aWwgbW9kdWxlLgorCistIElzc3VlICMxMTQ3MTogYXZvaWQgZ2VuZXJhdGluZyBhIEpVTVBfRk9SV0FSRCBpbnN0cnVjdGlvbiBhdCB0aGUgZW5kIG9mCisgIGFuIGlmLWJsb2NrIGlmIHRoZXJlIGlzIG5vIGVsc2UtY2xhdXNlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXVnZW5lIFRvZGVyLgorCistIElzc3VlICMyMjIxNTogTm93IFZhbHVlRXJyb3IgaXMgcmFpc2VkIGluc3RlYWQgb2YgVHlwZUVycm9yIHdoZW4gc3RyIG9yIGJ5dGVzCisgIGFyZ3VtZW50IGNvbnRhaW5zIG5vdCBwZXJtaXR0ZWQgbnVsbCBjaGFyYWN0ZXIgb3IgYnl0ZS4KKworLSBJc3N1ZSAjMjIyNTg6IEZpeCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gc2V0X2luaGVyaXRhYmxlKCkgb24gSWxsdW1vcy4KKyAgVGhpcyBwbGF0Zm9ybSBleHBvc2VzIHRoZSBmdW5jdGlvbiBgYGlvY3RsKEZJT0NMRVgpYGAsIGJ1dCBjYWxsaW5nIGl0IGZhaWxzCisgIHdpdGggZXJybm8gaXMgRU5PVFRZOiAiSW5hcHByb3ByaWF0ZSBpb2N0bCBmb3IgZGV2aWNlIi4gc2V0X2luaGVyaXRhYmxlKCkKKyAgbm93IGZhbGxzIGJhY2sgdG8gdGhlIHNsb3dlciBgYGZjbnRsKClgYCAoYGBGX0dFVEZEYGAgYW5kIHRoZW4gYGBGX1NFVEZEYGApLgorCistIElzc3VlICMyMTM4OTogRGlzcGxheWluZyB0aGUgX19xdWFsbmFtZV9fIG9mIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIGluIHRoZQorICByZXByIG9mIGEgYm91bmQgbWV0aG9kLgorCistIElzc3VlICMyMjIwNjogVXNpbmcgcHRocmVhZCwgUHlUaHJlYWRfY3JlYXRlX2tleSgpIG5vdyBzZXRzIGVycm5vIHRvIEVOT01FTQorICBhbmQgcmV0dXJucyAtMSAoZXJyb3IpIG9uIGludGVnZXIgb3ZlcmZsb3cuCisKKy0gSXNzdWUgIzIwMTg0OiBBcmd1bWVudCBDbGluaWMgYmFzZWQgc2lnbmF0dXJlIGludHJvc3BlY3Rpb24gYWRkZWQgZm9yCisgIDMwIG9mIHRoZSBidWlsdGluIGZ1bmN0aW9ucy4KKworLSBJc3N1ZSAjMjIxMTY6IEMgZnVuY3Rpb25zIGFuZCBtZXRob2RzIChvZiB0aGUgJ2J1aWx0aW5fZnVuY3Rpb25fb3JfbWV0aG9kJworICB0eXBlKSBjYW4gbm93IGJlIHdlYWtyZWYnZWQuICBQYXRjaCBieSBXZWkgV3UuCisKKy0gSXNzdWUgIzIyMDc3OiBJbXByb3ZlIGluZGV4IGVycm9yIG1lc3NhZ2VzIGZvciBieXRlYXJyYXlzLCBieXRlcywgbGlzdHMsCisgIGFuZCB0dXBsZXMgYnkgYWRkaW5nICdvciBzbGljZXMnLiBBZGRlZCAnLCBub3QgPHR5cGVuYW1lJyBmb3IgYnl0ZWFycmF5cy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMyMDE3OTogQXBwbHkgQXJndW1lbnQgQ2xpbmljIHRvIGJ5dGVzIGFuZCBieXRlYXJyYXkuCisgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMjIwODI6IENsZWFyIGludGVybmVkIHN0cmluZ3MgaW4gc2xvdGRlZnMuCisKKy0gVXBncmFkZSBVbmljb2RlIGRhdGFiYXNlIHRvIFVuaWNvZGUgNy4wLjAuCisKKy0gSXNzdWUgIzIxODk3OiBGaXggYSBjcmFzaCB3aXRoIHRoZSBmX2xvY2FscyBhdHRyaWJ1dGUgd2l0aCBjbG9zdXJlCisgIHZhcmlhYmxlcyB3aGVuIGZyYW1lLmNsZWFyKCkgaGFzIGJlZW4gY2FsbGVkLgorCistIElzc3VlICMyMTIwNTogQWRkIGEgbmV3IGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlIHRvIGdlbmVyYXRvciwgdGhlCisgIHF1YWxpZmllZCBuYW1lLCBhbmQgdXNlIGl0IGluIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhIGdlbmVyYXRvcgorICAoYGByZXByKGdlbilgYCkuIFRoZSBkZWZhdWx0IG5hbWUgb2YgdGhlIGdlbmVyYXRvciAoYGBfX25hbWVfX2BgIGF0dHJpYnV0ZSkKKyAgaXMgbm93IGdldCBmcm9tIHRoZSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBjb2RlLiBVc2UgYGBnZW4uZ2lfY29kZS5jb19uYW1lYGAKKyAgdG8gZ2V0IHRoZSBuYW1lIG9mIHRoZSBjb2RlLgorCistIElzc3VlICMyMTY2OTogV2l0aCB0aGUgYWlkIG9mIGhldXJpc3RpY3MgaW4gU3ludGF4RXJyb3IuX19pbml0X18sIHRoZQorICBwYXJzZXIgbm93IGF0dGVtcHRzIHRvIGdlbmVyYXRlIG1vcmUgbWVhbmluZ2Z1bCAob3IgYXQgbGVhc3QgbW9yZSBzZWFyY2gKKyAgZW5naW5lIGZyaWVuZGx5KSBlcnJvciBtZXNzYWdlcyB3aGVuICJleGVjIiBhbmQgInByaW50IiBhcmUgdXNlZCBhcworICBzdGF0ZW1lbnRzLgorCistIElzc3VlICMyMTY0MjogSWYgdGhlIGNvbmRpdGlvbmFsIGlmLWVsc2UgZXhwcmVzc2lvbiwgYWxsb3cgYW4gaW50ZWdlciB3cml0dGVuCisgIHdpdGggbm8gc3BhY2UgYmV0d2VlbiBpdHNlbGYgYW5kIHRoZSBgYGVsc2VgYCBrZXl3b3JkIChlLmcuIGBgVHJ1ZSBpZiA0MmVsc2UKKyAgRmFsc2VgYCkgdG8gYmUgdmFsaWQgc3ludGF4LgorCistIElzc3VlICMyMTUyMzogRml4IG92ZXItcGVzc2ltaXN0aWMgY29tcHV0YXRpb24gb2YgdGhlIHN0YWNrIGVmZmVjdCBvZgorICBzb21lIG9wY29kZXMgaW4gdGhlIGNvbXBpbGVyLiAgVGhpcyBhbHNvIGZpeGVzIGEgcXVhZHJhdGljIGNvbXBpbGF0aW9uCisgIHRpbWUgaXNzdWUgbm90aWNlYWJsZSB3aGVuIGNvbXBpbGluZyBjb2RlIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgImFuZCIKKyAgYW5kICJvciIgb3BlcmF0b3JzLgorCistIElzc3VlICMyMTQxODogRml4IGEgY3Jhc2ggaW4gdGhlIGJ1aWx0aW4gZnVuY3Rpb24gc3VwZXIoKSB3aGVuIGNhbGxlZCB3aXRob3V0CisgIGFyZ3VtZW50IGFuZCB3aXRob3V0IGN1cnJlbnQgZnJhbWUgKGV4OiBlbWJlZGRlZCBQeXRob24pLgorCistIElzc3VlICMyMTQyNTogRml4IGZsdXNoaW5nIG9mIHN0YW5kYXJkIHN0cmVhbXMgaW4gdGhlIGludGVyYWN0aXZlCisgIGludGVycHJldGVyLgorCistIElzc3VlICMyMTQzNTogSW4gcmFyZSBjYXNlcywgd2hlbiBydW5uaW5nIGZpbmFsaXplcnMgb24gb2JqZWN0cyBpbiBjeWNsaWMKKyAgdHJhc2ggYSBiYWQgcG9pbnRlciBkZXJlZmVyZW5jZSBjb3VsZCBvY2N1ciBkdWUgdG8gYSBzdWJ0bGUgZmxhdyBpbgorICBpbnRlcm5hbCBpdGVyYXRpb24gbG9naWMuCisKKy0gSXNzdWUgIzIxMzc3OiBQeUJ5dGVzX0NvbmNhdCgpIG5vdyB0cmllcyB0byBjb25jYXRlbmF0ZSBpbi1wbGFjZSB3aGVuIHRoZQorICBmaXJzdCBhcmd1bWVudCBoYXMgYSByZWZlcmVuY2UgY291bnQgb2YgMS4gIFBhdGNoIGJ5IE5pa29sYXVzIFJhdGguCisKKy0gSXNzdWUgIzIwMzU1OiAtVyBjb21tYW5kIGxpbmUgb3B0aW9ucyBub3cgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aGUKKyAgUFlUSE9OV0FSTklOR1MgZW52aXJvbm1lbnQgdmFyaWFibGUuICBQYXRjaCBieSBBcmZyZXZlci4KKworLSBJc3N1ZSAjMjEyNzQ6IERlZmluZSBQQVRIX01BWCBmb3IgR05VL0h1cmQgaW4gUHl0aG9uL3B5dGhvbnJ1bi5jLgorCistIElzc3VlICMyMDkwNDogU3VwcG9ydCBzZXR0aW5nIEZQVSBwcmVjaXNpb24gb24gbTY4ay4KKworLSBJc3N1ZSAjMjEyMDk6IEZpeCBzZW5kaW5nIHR1cGxlcyB0byBjdXN0b20gZ2VuZXJhdG9yIG9iamVjdHMgd2l0aCB0aGUgeWllbGQKKyAgZnJvbSBzeW50YXguCisKKy0gSXNzdWUgIzIxMTkzOiBwb3coYSwgYiwgYykgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFR5cGVFcnJvciB3aGVuIGIKKyAgaXMgbmVnYXRpdmUuICBQYXRjaCBieSBKb3NoIFJvc2VuYmVyZy4KKworLSBQRVAgNDY1IGFuZCBJc3N1ZSAjMjExNzY6IEFkZCB0aGUgJ0AnIG9wZXJhdG9yIGZvciBtYXRyaXggbXVsdGlwbGljYXRpb24uCisKKy0gSXNzdWUgIzIxMTM0OiBGaXggc2VnZmF1bHQgd2hlbiBzdHIgaXMgY2FsbGVkIG9uIGFuIHVuaW5pdGlhbGl6ZWQKKyAgVW5pY29kZUVuY29kZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IsIG9yIFVuaWNvZGVUcmFuc2xhdGVFcnJvciBvYmplY3QuCisKKy0gSXNzdWUgIzE5NTM3OiBGaXggUHlVbmljb2RlX0RBVEEoKSBhbGlnbm1lbnQgdW5kZXIgbTY4ay4gIFBhdGNoIGJ5CisgIEFuZHJlYXMgU2Nod2FiLgorCistIElzc3VlICMyMDkyOTogQWRkIGEgdHlwZSBjYXN0IHRvIGF2b2lkIHNoaWZ0aW5nIGEgbmVnYXRpdmUgbnVtYmVyLgorCistIElzc3VlICMyMDczMTogUHJvcGVybHkgcG9zaXRpb24gaW4gc291cmNlIGNvZGUgZmlsZXMgZXZlbiBpZiB0aGV5CisgIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyMDYzNzogS2V5LXNoYXJpbmcgbm93IGFsc28gd29ya3MgZm9yIGluc3RhbmNlIGRpY3Rpb25hcmllcyBvZgorICBzdWJjbGFzc2VzLiAgUGF0Y2ggYnkgUGV0ZXIgSW5nZWJyZXRzb24uCisKKy0gSXNzdWUgIzgyOTc6IEF0dHJpYnV0ZXMgbWlzc2luZyBmcm9tIG1vZHVsZXMgbm93IGluY2x1ZGUgdGhlIG1vZHVsZSBuYW1lCisgIGluIHRoZSBlcnJvciB0ZXh0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgeXNqLnJheS4KKworLSBJc3N1ZSAjMTk5OTU6ICVjLCAlbywgJXgsIGFuZCAlWCBub3cgcmFpc2UgVHlwZUVycm9yIG9uIG5vbi1pbnRlZ2VyIGlucHV0LgorCistIElzc3VlICMxOTY1NTogVGhlIEFTREwgcGFyc2VyIC0gdXNlZCBieSB0aGUgYnVpbGQgcHJvY2VzcyB0byBnZW5lcmF0ZSBjb2RlIGZvcgorICBtYW5hZ2luZyB0aGUgUHl0aG9uIEFTVCBpbiBDIC0gd2FzIHJld3JpdHRlbi4gVGhlIG5ldyBwYXJzZXIgaXMgc2VsZiBjb250YWluZWQKKyAgYW5kIGRvZXMgbm90IHJlcXVpcmUgdG8gY2FycnkgbG9uZyB0aGUgc3BhcmsucHkgcGFyc2VyLWdlbmVyYXRvciBsaWJyYXJ5OworICBzcGFyay5weSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2UgYmFzZS4KKworLSBJc3N1ZSAjMTI1NDY6IEFsbG93IFx4MDAgdG8gYmUgdXNlZCBhcyBhIGZpbGwgY2hhcmFjdGVyIHdoZW4gdXNpbmcgc3RyLCBpbnQsCisgIGZsb2F0LCBhbmQgY29tcGxleCBfX2Zvcm1hdF9fIG1ldGhvZHMuCisKKy0gSXNzdWUgIzIwNDgwOiBBZGQgaXBhZGRyZXNzLnJldmVyc2VfcG9pbnRlci4gUGF0Y2ggYnkgTGVvbiBXZWJlci4KKworLSBJc3N1ZSAjMTM1OTg6IE1vZGlmeSBzdHJpbmcuRm9ybWF0dGVyIHRvIHN1cHBvcnQgYXV0by1udW1iZXJpbmcgb2YKKyAgcmVwbGFjZW1lbnQgZmllbGRzLiBJdCBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2Ygc3RyLmZvcm1hdCgpIGluCisgIHRoaXMgcmVnYXJkLiBQYXRjaGVzIGJ5IFBoaWwgRWxzb24gYW5kIFJhbWNoYW5kcmEgQXB0ZS4KKworLSBJc3N1ZSAjODkzMTogTWFrZSBhbHRlcm5hdGUgZm9ybWF0dGluZyAoJyMnKSBmb3IgdHlwZSAnYycgcmFpc2UgYW4KKyAgZXhjZXB0aW9uLiBJbiB2ZXJzaW9ucyBwcmlvciB0byAzLjUsICcjJyB3aXRoICdjJyBoYWQgbm8gZWZmZWN0LiBOb3cKKyAgc3BlY2lmeWluZyBpdCBpcyBhbiBlcnJvci4gIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KKwogLSBJc3N1ZSAjMjMxNjU6IFBlcmZvcm0gb3ZlcmZsb3cgY2hlY2tzIGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeSBpbiB0aGUKICAgX1B5X2NoYXIyd2NoYXIgZnVuY3Rpb24uCiAKQEAgLTU5NSw5ICsxNjA4LDI0IEBACiAKIC0gSXNzdWUgIzIzMzk5OiBweXZlbnYgY3JlYXRlcyByZWxhdGl2ZSBzeW1saW5rcyB3aGVyZSBwb3NzaWJsZS4KIAorLSBJc3N1ZSAjMjAyODk6IGNnaS5GaWVsZFN0b3JhZ2UoKSBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlbWVudAorICBwcm90b2NvbC4KKworLSBJc3N1ZSAjMTMxMjg6IFByaW50IHJlc3BvbnNlIGhlYWRlcnMgZm9yIENPTk5FQ1QgcmVxdWVzdHMgd2hlbiBkZWJ1Z2xldmVsCisgID4gMC4gUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMTUzODE6IE9wdGltaXplZCBpby5CeXRlc0lPIHRvIG1ha2UgbGVzcyBhbGxvY2F0aW9ucyBhbmQgY29weWluZ3MuCisKKy0gSXNzdWUgIzIyODE4OiBTcGxpdHRpbmcgb24gYSBwYXR0ZXJuIHRoYXQgY291bGQgbWF0Y2ggYW4gZW1wdHkgc3RyaW5nIG5vdworICByYWlzZXMgYSB3YXJuaW5nLiAgUGF0dGVybnMgdGhhdCBjYW4gb25seSBtYXRjaCBlbXB0eSBzdHJpbmdzIGFyZSBub3cKKyAgcmVqZWN0ZWQuCisKIC0gSXNzdWUgIzIzMDk5OiBDbG9zaW5nIGlvLkJ5dGVzSU8gd2l0aCBleHBvcnRlZCBidWZmZXIgaXMgcmVqZWN0ZWQgbm93IHRvCiAgIHByZXZlbnQgY29ycnVwdGluZyBleHBvcnRlZCBidWZmZXIuCiAKKy0gSXNzdWUgIzIzMzI2OiBSZW1vdmVkIF9fbmVfXyBpbXBsZW1lbnRhdGlvbnMuICBTaW5jZSBmaXhpbmcgZGVmYXVsdCBfX25lX18KKyAgaW1wbGVtZW50YXRpb24gaW4gaXNzdWUgIzIxNDA4IHRoZXkgYXJlIHJlZHVuZGFudC4KKwogLSBJc3N1ZSAjMjMzNjM6IEZpeCBwb3NzaWJsZSBvdmVyZmxvdyBpbiBpdGVydG9vbHMucGVybXV0YXRpb25zLgogCiAtIElzc3VlICMyMzM2NDogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIGl0ZXJ0b29scy5wcm9kdWN0LgpAQCAtNjEzLDYgKzE2NDEsMTQgQEAKICAgaXMgbm93IGFsd2F5cyByZXN0b3JlZCBvciBzd2FwcGVkLCBub3Qgb25seSBpZiB3aHkgaXMgV0hZX1lJRUxEIG9yCiAgIFdIWV9SRVRVUk4uIFBhdGNoIGNvLXdyaXR0ZW4gd2l0aCBBbnRvaW5lIFBpdHJvdS4KIAorLSBJc3N1ZSAjMTQwOTk6IFJlc3RvcmVkIHN1cHBvcnQgb2Ygd3JpdGluZyBaSVAgZmlsZXMgdG8gdGVsbGFibGUgYnV0CisgIG5vbi1zZWVrYWJsZSBzdHJlYW1zLgorCistIElzc3VlICMxNDA5OTogV3JpdGluZyB0byBaaXBGaWxlIGFuZCByZWFkaW5nIG11bHRpcGxlIFppcEV4dEZpbGVzIGlzCisgIHRocmVhZHNhZmUgbm93LgorCistIElzc3VlICMxOTM2MTogSlNPTiBkZWNvZGVyIG5vdyByYWlzZXMgSlNPTkRlY29kZUVycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvci4KKwogLSBJc3N1ZSAjMTg1MTg6IHRpbWVpdCBub3cgcmVqZWN0cyBzdGF0ZW1lbnRzIHdoaWNoIGNhbid0IGJlIGNvbXBpbGVkIG91dHNpZGUKICAgYSBmdW5jdGlvbiBvciBhIGxvb3AgKGUuZy4gInJldHVybiIgb3IgImJyZWFrIikuCiAKQEAgLTYyNyw0NyArMTY2Myw4NSBAQAogLSBJc3N1ZSAjMTk5OTY6IDpjbGFzczpgZW1haWwuZmVlZHBhcnNlci5GZWVkUGFyc2VyYCBub3cgaGFuZGxlcyAobWFsZm9ybWVkKQogICBoZWFkZXJzIHdpdGggbm8ga2V5IHJhdGhlciB0aGFuIGFzc3VtaW5nIHRoZSBib2R5IGhhcyBzdGFydGVkLgogCistIElzc3VlICMyMDE4ODogU3VwcG9ydCBBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiAoQUxQTikgaW4gdGhlIHNzbAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzIzMTMzOiBQaWNrbGluZyBvZiBpcGFkZHJlc3Mgb2JqZWN0cyBub3cgcHJvZHVjZXMgbW9yZSBjb21wYWN0IGFuZAorICBwb3J0YWJsZSByZXByZXNlbnRhdGlvbi4KKwogLSBJc3N1ZSAjMjMyNDg6IFVwZGF0ZSBzc2wgZXJyb3IgY29kZXMgZnJvbSBsYXRlc3QgT3BlblNTTCBnaXQgbWFzdGVyLgogCistIElzc3VlICMyMzI2NjogTXVjaCBmYXN0ZXIgaW1wbGVtZW50YXRpb24gb2YgaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygpCisgIHdoZW4gdGhlcmUgYXJlIG1hbnkgbm9uLWNvbnNlY3V0aXZlIGFkZHJlc3Nlcy4KKwogLSBJc3N1ZSAjMjMwOTg6IDY0LWJpdCBkZXZfdCBpcyBub3cgc3VwcG9ydGVkIGluIHRoZSBvcyBtb2R1bGUuCiAKKy0gSXNzdWUgIzIxODE3OiBXaGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gYSB0YXNrIHN1Ym1pdHRlZCB0byBhCisgIFByb2Nlc3NQb29sRXhlY3V0b3IsIHRoZSByZW1vdGUgdHJhY2ViYWNrIGlzIG5vdyBkaXNwbGF5ZWQgaW4gdGhlCisgIHBhcmVudCBwcm9jZXNzLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxNTk1NTogQWRkIGFuIG9wdGlvbiB0byBsaW1pdCBvdXRwdXQgc2l6ZSB3aGVuIGRlY29tcHJlc3NpbmcgTFpNQQorICBkYXRhLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aCBhbmQgTWFydGluIFBhbnRlci4KKwogLSBJc3N1ZSAjMjMyNTA6IEluIHRoZSBodHRwLmNvb2tpZXMgbW9kdWxlLCBjYXBpdGFsaXplICJIdHRwT25seSIgYW5kICJTZWN1cmUiCiAgIGFzIHRoZXkgYXJlIHdyaXR0ZW4gaW4gdGhlIHN0YW5kYXJkLgogCiAtIElzc3VlICMyMzA2MzogSW4gdGhlIGRpc3V0aWxzJyBjaGVjayBjb21tYW5kLCBmaXggcGFyc2luZyBvZiByZVNUIHdpdGggY29kZSBvcgogICBjb2RlLWJsb2NrIGRpcmVjdGl2ZXMuCiAKLS0gSXNzdWUgIzIzMjA5LCAjMjMyMjU6IHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuY2xvc2UoKSBub3cgY2xlYXJzIGl0cyBpbnRlcm5hbAotICByZWZlcmVuY2UgdG8gdGhlIHNlbGVjdG9yIG1hcHBpbmcgdG8gYnJlYWsgYSByZWZlcmVuY2UgY3ljbGUuIEluaXRpYWwgcGF0Y2gKLSAgd3JpdHRlbiBieSBNYXJ0aW4gUmljaGFyZC4KKy0gSXNzdWUgIzIzMjA5LCAjMjMyMjU6IHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuZ2V0X2tleSgpIG5vdyByYWlzZXMgYQorICBSdW50aW1lRXJyb3IgaWYgdGhlIHNlbGVjdG9yIGlzIGNsb3NlZC4gQW5kIHNlbGVjdG9ycy5CYXNlU2VsZWN0b3IuY2xvc2UoKQorICBub3cgY2xlYXJzIGl0cyBpbnRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHNlbGVjdG9yIG1hcHBpbmcgdG8gYnJlYWsgYQorICByZWZlcmVuY2UgY3ljbGUuIEluaXRpYWwgcGF0Y2ggd3JpdHRlbiBieSBNYXJ0aW4gUmljaGFyZC4KIAotLSBJc3N1ZSAjMjEzNTY6IE1ha2Ugc3NsLlJBTkRfZWdkKCkgb3B0aW9uYWwgdG8gc3VwcG9ydCBMaWJyZVNTTC4gVGhlCi0gIGF2YWlsYWJpbGl0eSBvZiB0aGUgZnVuY3Rpb24gaXMgY2hlY2tlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLiBQYXRjaCB3cml0dGVuCi0gIGJ5IEJlcm5hcmQgU3BpbC4KKy0gSXNzdWUgIzE3OTExOiBQcm92aWRlIGEgd2F5IHRvIHNlZWQgdGhlIGxpbmVjYWNoZSBmb3IgYSBQRVAtMzAyIG1vZHVsZQorICB3aXRob3V0IGFjdHVhbGx5IGxvYWRpbmcgdGhlIGNvZGUuCiAKLS0gSXNzdWUgIzIwODk2LCAjMjI5MzU6IFRoZSA6ZnVuYzpgc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGVgIGZ1bmN0aW9uIG5vdwotICB1c2VzIHRoZSA6ZGF0YTpgfnNzbC5QUk9UT0NPTF9TU0x2MjNgIHByb3RvY29sIGJ5IGRlZmF1bHQsIG5vdAotICA6ZGF0YTpgfnNzbC5QUk9UT0NPTF9TU0x2M2AsIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkgYW5kIHN1cHBvcnQgcGxhdGZvcm1zCi0gIHdoZXJlIDpkYXRhOmB+c3NsLlBST1RPQ09MX1NTTHYzYCBzdXBwb3J0IGlzIGRpc2FibGVkLgorLSBJc3N1ZSAjMTc5MTE6IFByb3ZpZGUgYSBuZXcgb2JqZWN0IEFQSSBmb3IgdHJhY2ViYWNrLCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkKKyAgdG8gbm90IGxvb2t1cCBsaW5lcyBhdCBhbGwgdW50aWwgdGhlIHRyYWNlYmFjayBpcyBhY3R1YWxseSByZW5kZXJlZCwgd2l0aG91dAorICBhbnkgdHJhY2Ugb2YgdGhlIG9yaWdpbmFsIG9iamVjdHMgYmVpbmcga2VwdCBhbGl2ZS4KIAotLSBJc3N1ZSAjMjMxMTE6IEluIHRoZSBmdHBsaWIsIG1ha2Ugc3NsLlBST1RPQ09MX1NTTHYyMyB0aGUgZGVmYXVsdCBwcm90b2NvbAotICB2ZXJzaW9uLgorLSBJc3N1ZSAjMTk3Nzc6IFByb3ZpZGUgYSBob21lKCkgY2xhc3NtZXRob2Qgb24gUGF0aCBvYmplY3RzLiAgQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFNhbGdhZG8gYW5kIE1heWFuayBUcmlwYXRoaS4KIAotLSBJc3N1ZSAjMjMxMzI6IE1pdGlnYXRlIHJlZ3Jlc3Npb24gaW4gc3BlZWQgYW5kIGNsYXJpdHkgaW4gZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nLgorLSBJc3N1ZSAjMjMyMDY6IE1ha2UgYGBqc29uLmR1bXBzKC4uLiwgZW5zdXJlX2FzY2lpPUZhbHNlKWBgIGFzIGZhc3QgYXMgdGhlCisgIGRlZmF1bHQgY2FzZSBvZiBgYGVuc3VyZV9hc2NpaT1UcnVlYGAuICBQYXRjaCBieSBOYW9raSBJbmFkYS4KIAotLSBJc3N1ZSAjMjI1ODU6IE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyBjYWxscyBnZXRlbnRyb3B5KCksCi0gIGluc3RlYWQgb2YgcmVhZGluZyAvZGV2L3VyYW5kb20sIHRvIGdldCBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorLSBJc3N1ZSAjMjMxODU6IEFkZCBtYXRoLmluZiBhbmQgbWF0aC5uYW4gY29uc3RhbnRzLgorCistIElzc3VlICMyMzE4NjogQWRkIHNzbC5TU0xPYmplY3Quc2hhcmVkX2NpcGhlcnMoKSBhbmQKKyAgc3NsLlNTTFNvY2tldC5zaGFyZWRfY2lwaGVycygpIHRvIGZldGNoIHRoZSBjbGllbnQncyBsaXN0IGNpcGhlcnMgc2VudCBhdAorICBoYW5kc2hha2UuCisKKy0gSXNzdWUgIzIzMTQzOiBSZW1vdmUgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0xzIG9sZGVyIHRoYW4gMC45LjguCisKKy0gSXNzdWUgIzIzMTMyOiBJbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCBpbnRyb3NwZWN0aW9uIHN1cHBvcnQgb2YgY29tcGFyaXNvbgorICBtZXRob2RzIGNyZWF0ZWQgYnkgZnVuY3Rvb2wudG90YWxfb3JkZXJpbmcuCisKKy0gSXNzdWUgIzE5Nzc2OiBBZGQgYSBleHBhbmR1c2VyKCkgbWV0aG9kIG9uIFBhdGggb2JqZWN0cy4KIAogLSBJc3N1ZSAjMjMxMTI6IEZpeCBTaW1wbGVIVFRQU2VydmVyIHRvIGNvcnJlY3RseSBjYXJyeSB0aGUgcXVlcnkgc3RyaW5nIGFuZAogICBmcmFnbWVudCB3aGVuIGl0IHJlZGlyZWN0cyB0byBhZGQgYSB0cmFpbGluZyBzbGFzaC4KIAorLSBJc3N1ZSAjMjE3OTM6IEFkZGVkIGh0dHAuSFRUUFN0YXR1cyBlbnVtcyAoaS5lLiBIVFRQU3RhdHVzLk9LLAorICBIVFRQU3RhdHVzLk5PVF9GT1VORCkuICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCiAtIElzc3VlICMyMzA5MzogSW4gdGhlIGlvLCBtb2R1bGUgYWxsb3cgbW9yZSBvcGVyYXRpb25zIHRvIHdvcmsgb24gZGV0YWNoZWQKICAgc3RyZWFtcy4KIAorLSBJc3N1ZSAjMjMxMTE6IEluIHRoZSBmdHBsaWIsIG1ha2Ugc3NsLlBST1RPQ09MX1NTTHYyMyB0aGUgZGVmYXVsdCBwcm90b2NvbAorICB2ZXJzaW9uLgorCistIElzc3VlICMyMjU4NTogT24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCBvcy51cmFuZG9tKCkgbm93IGNhbGxzIGdldGVudHJvcHkoKSwKKyAgaW5zdGVhZCBvZiByZWFkaW5nIC9kZXYvdXJhbmRvbSwgdG8gZ2V0IHBzZXVkby1yYW5kb20gYnl0ZXMuCisKIC0gSXNzdWUgIzE5MTA0OiBwcHJpbnQgbm93IHByb2R1Y2VzIGV2YWx1YWJsZSBvdXRwdXQgZm9yIHdyYXBwZWQgc3RyaW5ncy4KIAogLSBJc3N1ZSAjMjMwNzE6IEFkZGVkIG1pc3NpbmcgbmFtZXMgdG8gY29kZWNzLl9fYWxsX18uICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCistIElzc3VlICMyMjc4MzogUGlja2xpbmcgbm93IHVzZXMgdGhlIE5FV09CSiBvcGNvZGUgaW5zdGVhZCBvZiB0aGUgTkVXT0JKX0VYCisgIG9wY29kZSBpZiBwb3NzaWJsZS4KKwogLSBJc3N1ZSAjMTU1MTM6IEFkZGVkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgcGlja2xlIGNsYXNzZXMuCiAKIC0gSXNzdWUgIzE5ODU4OiBwaWNrbGV0b29scy5vcHRpbWl6ZSgpIG5vdyBhd2FyZSBvZiB0aGUgTUVNT0laRSBvcGNvZGUsIGNhbgpAQCAtNjg5LDEyICsxNzYzLDI1IEBACiAtIElzc3VlICMxMjE4MjM0OiBGaXggaW5zcGVjdC5nZXRzb3VyY2UoKSB0byBsb2FkIHVwZGF0ZWQgc291cmNlIG9mCiAgIHJlbG9hZGVkIG1vZHVsZS4gSW5pdGlhbCBwYXRjaCBieSBCZXJrZXIgUGVrc2FnLgogCistIElzc3VlICMyMTc0MDogU3VwcG9ydCB3cmFwcGVkIGNhbGxhYmxlcyBpbiBkb2N0ZXN0LiBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzIzMDA5OiBNYWtlIHN1cmUgc2VsZWN0b3JzLkVwb2xsU2VsZWNydG9yLnNlbGVjdCgpIHdvcmtzIHdoZW4gbm8KKyAgRkQgaXMgcmVnaXN0ZXJlZC4KKwogLSBJc3N1ZSAjMjI5NTk6IEluIHRoZSBjb25zdHJ1Y3RvciBvZiBodHRwLmNsaWVudC5IVFRQU0Nvbm5lY3Rpb24sIHByZWZlciB0aGUKICAgY29udGV4dCdzIGNoZWNrX2hvc3RuYW1lIGF0dHJpYnV0ZSBvdmVyIHRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlci4KIAorLSBJc3N1ZSAjMjI2OTY6IEFkZCBmdW5jdGlvbiA6ZnVuYzpgc3lzLmlzX2ZpbmFsaXppbmdgIHRvIGtub3cgYWJvdXQKKyAgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCisKIC0gSXNzdWUgIzE2MDQzOiBBZGQgYSBkZWZhdWx0IGxpbWl0IGZvciB0aGUgYW1vdW50IG9mIGRhdGEgeG1scnBjbGliLmd6aXBfZGVjb2RlCiAgIHdpbGwgcmV0dXJuLiBUaGlzIHJlc29sdmVzIENWRS0yMDEzLTE3NTMuCiAKKy0gSXNzdWUgIzE0MDk5OiBaaXBGaWxlLm9wZW4oKSBubyBsb25nZXIgcmVvcGVuIHRoZSB1bmRlcmx5aW5nIGZpbGUuICBPYmplY3RzCisgIHJldHVybmVkIGJ5IFppcEZpbGUub3BlbigpIGNhbiBub3cgb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZSBaaXBGaWxlIGV2ZW4KKyAgaWYgdGhlIFppcEZpbGUgd2FzIGNyZWF0ZWQgYnkgcGFzc2luZyBpbiBhIGZpbGUtbGlrZSBvYmplY3QgYXMgdGhlIGZpcnN0CisgIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3Rvci4KKwogLSBJc3N1ZSAjMjI5NjY6IEZpeCBfX3B5Y2FjaGVfXyBweWMgZmlsZSBuYW1lIGNsb2JiZXIgd2hlbiBweWNfY29tcGlsZSBpcwogICBhc2tlZCB0byBjb21waWxlIGEgc291cmNlIGZpbGUgY29udGFpbmluZyBtdWx0aXBsZSBkb3RzIGluIHRoZSBzb3VyY2UgZmlsZQogICBuYW1lLgpAQCAtNzA0LDE0ICsxNzkxLDMwIEBACiAtIElzc3VlICMyMTAzMi4gRml4ZWQgc29ja2V0IGxlYWsgaWYgSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKSBmYWlscy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAorLSBJc3N1ZSAjMjI0MDc6IERlcHJlY2F0ZWQgdGhlIHVzZSBvZiByZS5MT0NBTEUgZmxhZyB3aXRoIHN0ciBwYXR0ZXJucyBvcgorICByZS5BU0NJSS4gSXQgd2FzIG5ld2VyIHdvcmtlZC4KKworLSBJc3N1ZSAjMjI5MDI6IFRoZSAiaXAiIGNvbW1hbmQgaXMgbm93IHVzZWQgb24gTGludXggdG8gZGV0ZXJtaW5lIE1BQyBhZGRyZXNzCisgIGluIHV1aWQuZ2V0bm9kZSgpLiAgUGFjaCBieSBCcnVubyBDYXVldC4KKwogLSBJc3N1ZSAjMjI5NjA6IEFkZCBhIGNvbnRleHQgYXJndW1lbnQgdG8geG1scnBjbGliLlNlcnZlclByb3h5IGNvbnN0cnVjdG9yLgogCistIElzc3VlICMyMjM4OTogQWRkIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKCkuCisKKy0gSXNzdWUgIzIxMzU2OiBNYWtlIHNzbC5SQU5EX2VnZCgpIG9wdGlvbmFsIHRvIHN1cHBvcnQgTGlicmVTU0wuIFRoZQorICBhdmFpbGFiaWxpdHkgb2YgdGhlIGZ1bmN0aW9uIGlzIGNoZWNrZWQgZHVyaW5nIHRoZSBjb21waWxhdGlvbi4gUGF0Y2ggd3JpdHRlbgorICBieSBCZXJuYXJkIFNwaWwuCisKIC0gSXNzdWUgIzIyOTE1OiBTQVggcGFyc2VyIG5vdyBzdXBwb3J0cyBmaWxlcyBvcGVuZWQgd2l0aCBmaWxlIGRlc2NyaXB0b3Igb3IKICAgYnl0ZXMgcGF0aC4KIAogLSBJc3N1ZSAjMjI2MDk6IENvbnN0cnVjdG9ycyBhbmQgdXBkYXRlIG1ldGhvZHMgb2YgbWFwcGluZyBjbGFzc2VzIGluIHRoZQogICBjb2xsZWN0aW9ucyBtb2R1bGUgbm93IGFjY2VwdCB0aGUgc2VsZiBrZXl3b3JkIGFyZ3VtZW50LgogCistIElzc3VlICMyMjk0MDogQWRkIHJlYWRsaW5lLmFwcGVuZF9oaXN0b3J5X2ZpbGUuCisKKy0gSXNzdWUgIzE5Njc2OiBBZGRlZCB0aGUgIm5hbWVyZXBsYWNlIiBlcnJvciBoYW5kbGVyLgorCiAtIElzc3VlICMyMjc4ODogQWRkICpjb250ZXh0KiBwYXJhbWV0ZXIgdG8gbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlci4KIAogLSBJc3N1ZSAjMjI5MjE6IEFsbG93IFNTTENvbnRleHQgdG8gdGFrZSB0aGUgKmhvc3RuYW1lKiBwYXJhbWV0ZXIgZXZlbiBpZgpAQCAtNzIwLDE0ICsxODIzLDE5IEBACiAtIElzc3VlICMyMjg5NDogVGVzdENhc2Uuc3ViVGVzdCgpIHdvdWxkIGNhdXNlIHRoZSB0ZXN0IHN1aXRlIHRvIGJlIHN0b3BwZWQKICAgd2hlbiBpbiBmYWlsZmFzdCBtb2RlLCBldmVuIGluIHRoZSBhYnNlbmNlIG9mIGZhaWx1cmVzLgogCi0tIElzc3VlICMyMjYzODogU1NMdjMgaXMgbm93IGRpc2FibGVkIHRocm91Z2hvdXQgdGhlIHN0YW5kYXJkIGxpYnJhcnkuCi0gIEl0IGNhbiBzdGlsbCBiZSBlbmFibGVkIGJ5IGluc3RhbnRpYXRpbmcgYSBTU0xDb250ZXh0IG1hbnVhbGx5LgorLSBJc3N1ZSAjMjI3OTY6IEhUVFAgY29va2llIHBhcnNpbmcgaXMgbm93IHN0cmljdGVyLCBpbiBvcmRlciB0byBwcm90ZWN0CisgIGFnYWluc3QgcG90ZW50aWFsIGluamVjdGlvbiBhdHRhY2tzLgogCiAtIElzc3VlICMyMjM3MDogV2luZG93cyBkZXRlY3Rpb24gaW4gcGF0aGxpYiBpcyBub3cgbW9yZSByb2J1c3QuCiAKIC0gSXNzdWUgIzIyODQxOiBSZWplY3QgY29yb3V0aW5lcyBpbiBhc3luY2lvIGFkZF9zaWduYWxfaGFuZGxlcigpLgogICBQYXRjaCBieSBMdWRvdmljLkdhc2MuCiAKKy0gSXNzdWUgIzE5NDk0OiBBZGRlZCB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNQcmlvckF1dGhIYW5kbGVyLiBQYXRjaCBieQorICBNYXRlaiBDZXBsLgorCistIElzc3VlICMyMjU3ODogQWRkZWQgYXR0cmlidXRlcyB0byB0aGUgcmUuZXJyb3IgY2xhc3MuCisKIC0gSXNzdWUgIzIyODQ5OiBGaXggcG9zc2libGUgZG91YmxlIGZyZWUgaW4gdGhlIGlvLlRleHRJT1dyYXBwZXIgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzEyNzI4OiBEaWZmZXJlbnQgVW5pY29kZSBjaGFyYWN0ZXJzIGhhdmluZyB0aGUgc2FtZSB1cHBlcmNhc2UgYnV0CkBAIC03MzYsNiArMTg0NCwxNCBAQAogLSBJc3N1ZSAjMjI4MjE6IEZpeGVkIGZjbnRsKCkgd2l0aCBpbnRlZ2VyIGFyZ3VtZW50IG9uIDY0LWJpdCBiaWctZW5kaWFuCiAgIHBsYXRmb3Jtcy4KIAorLSBJc3N1ZSAjMjE2NTA6IEFkZCBhbiBgLS1zb3J0LWtleXNgIG9wdGlvbiB0byBqc29uLnRvb2wgQ0xJLgorCistIElzc3VlICMyMjgyNDogVXBkYXRlZCByZXBybGliIG91dHB1dCBmb3JtYXQgZm9yIHNldHMgdG8gdXNlIHNldCBsaXRlcmFscy4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQmVya2VyIFBla3NhZy4KKworLSBJc3N1ZSAjMjI4MjQ6IFVwZGF0ZWQgcmVwcmxpYiBvdXRwdXQgZm9ybWF0IGZvciBhcnJheXMgdG8gZGlzcGxheSBlbXB0eQorICBhcnJheXMgd2l0aG91dCBhbiB1bm5lY2Vzc2FyeSBlbXB0eSBsaXN0LiAgU3VnZ2VzdGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzIyNDA2OiBGaXhlZCB0aGUgdXVfY29kZWMgY29kZWMgaW5jb3JyZWN0bHkgcG9ydGVkIHRvIDMueC4KICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIApAQCAtNzQ5LDE2ICsxODY1LDE1IEBACiAtIElzc3VlICMyMjc3NTogRml4ZWQgdW5waWNrbGluZyBvZiBodHRwLmNvb2tpZXMuU2ltcGxlQ29va2llIHdpdGggcHJvdG9jb2wgMgogICBhbmQgYWJvdmUuICBQYXRjaCBieSBUaW0gR3JhaGFtLgogCi0tIElzc3VlICMyMjM2NjogdXJsbGliLnJlcXVlc3QudXJsb3BlbiB3aWxsIGFjY2VwdCBhIGNvbnRleHQgb2JqZWN0Ci0gIChTU0xDb250ZXh0KSBhcyBhbiBhcmd1bWVudCB3aGljaCB3aWxsIHRoZW4gdXNlZCBiZSBmb3IgSFRUUFMgY29ubmVjdGlvbi4KLSAgUGF0Y2ggYnkgQWxleCBHYXlub3IuCi0KIC0gSXNzdWUgIzIyNzc2OiBCcm91Z2h0IGV4Y2x1ZGVkIGNvZGUgaW50byB0aGUgc2NvcGUgb2YgYSB0cnkgYmxvY2sgaW4KICAgU3lzTG9nSGFuZGxlci5lbWl0KCkuCiAKIC0gSXNzdWUgIzIyNjY1OiBBZGQgbWlzc2luZyBnZXRfdGVybWluYWxfc2l6ZSBhbmQgU2FtZUZpbGVFcnJvciB0bwogICBzaHV0aWwuX19hbGxfXy4KIAorLSBJc3N1ZSAjNjYyMzogUmVtb3ZlIGRlcHJlY2F0ZWQgTmV0cmMgY2xhc3MgaW4gdGhlIGZ0cGxpYiBtb2R1bGUuIFBhdGNoIGJ5CisgIE1hdHQgQ2hhcHV0LgorCiAtIElzc3VlICMxNzM4MTogRml4ZWQgaGFuZGxpbmcgb2YgY2FzZS1pbnNlbnNpdGl2ZSByYW5nZXMgaW4gcmVndWxhcgogICBleHByZXNzaW9ucy4KIApAQCAtNzcyLDE4ICsxODg3LDUzIEBACiAgIGRvZXNuJ3Qgd29yay4gIFRoaXMgYWxsb3dzIHVzZSB3aXRoIHNwZWNpYWwgZmlsZXN5c3RlbXMgc3VjaCBhcyBWaXJ0dWFsQm94CiAgIHNoYXJlZCBmb2xkZXJzLgogCistIElzc3VlICMyMjIxNzogSW1wbGVtZW50ZWQgcmVwcnMgb2YgY2xhc3NlcyBpbiB0aGUgemlwZmlsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzIyNDU3OiBIb25vdXIgbG9hZF90ZXN0cyBpbiB0aGUgc3RhcnRfZGlyIG9mIGRpc2NvdmVyeS4KKworLSBJc3N1ZSAjMTgyMTY6IGdldHRleHQgbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGEgLm1vIGZpbGUgaGFzIGFuCisgIHVuc3VwcG9ydGVkIG1ham9yIHZlcnNpb24gbnVtYmVyLiAgUGF0Y2ggYnkgQWFyb24gSGlsbC4KKworLSBJc3N1ZSAjMTM5MTg6IFByb3ZpZGUgYSBsb2NhbGUuZGVsb2NhbGl6ZSgpIGZ1bmN0aW9uIHdoaWNoIGNhbiByZW1vdmUKKyAgbG9jYWxlLXNwZWNpZmljIG51bWJlciBmb3JtYXR0aW5nIGZyb20gYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbnVtYmVyLAorICB3aXRob3V0IHRoZW4gY29udmVydGluZyBpdCB0byBhIHNwZWNpZmljIHR5cGUuICBQYXRjaCBieSBDw6lkcmljIEtyaWVyLgorCistIElzc3VlICMyMjY3NjogTWFrZSB0aGUgcGlja2xpbmcgb2YgZ2xvYmFsIG9iamVjdHMgd2hpY2ggZG9uJ3QgaGF2ZSBhCisgIF9fbW9kdWxlX18gYXR0cmlidXRlIGxlc3Mgc2xvdy4KKwogLSBJc3N1ZSAjMTg4NTM6IEZpeGVkIFJlc291cmNlV2FybmluZyBpbiBzaGxleC5fX25haW5fXy4KIAogLSBJc3N1ZSAjOTM1MTogRGVmYXVsdHMgc2V0IHdpdGggc2V0X2RlZmF1bHRzIG9uIGFuIGFyZ3BhcnNlIHN1YnBhcnNlcgogICBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQgd2hlbiBhbHNvIHNldCBvbiB0aGUgcGFyZW50IHBhcnNlci4KIAorLSBJc3N1ZSAjNzU1OTogdW5pdHRlc3QgdGVzdCBsb2FkaW5nIEltcG9ydEVycm9ycyBhcmUgcmVwb3J0ZWQgYXMgaW1wb3J0IGVycm9ycworICB3aXRoIHRoZWlyIGltcG9ydCBleGNlcHRpb24gcmF0aGVyIHRoYW4gYXMgYXR0cmlidXRlIGVycm9ycyBhZnRlciB0aGUgaW1wb3J0CisgIGhhcyBhbHJlYWR5IGZhaWxlZC4KKworLSBJc3N1ZSAjMTk3NDY6IE1ha2UgaXQgcG9zc2libGUgdG8gZXhhbWluZSB0aGUgZXJyb3JzIGZyb20gdW5pdHRlc3QKKyAgZGlzY292ZXJ5IHdpdGhvdXQgZXhlY3V0aW5nIHRoZSB0ZXN0IHN1aXRlLiBUaGUgbmV3IGBlcnJvcnNgIGF0dHJpYnV0ZQorICBvbiBUZXN0TG9hZGVyIGV4cG9zZXMgdGhlc2Ugbm9uLWZhdGFsIGVycm9ycyBlbmNvdW50ZXJlZCBkdXJpbmcgZGlzY292ZXJ5LgorCiAtIElzc3VlICMyMTk5MTogTWFrZSBlbWFpbC5oZWFkZXJyZWdpc3RyeSdzIGhlYWRlciAncGFyYW1zJyBhdHRyaWJ1dGVzCiAgIGJlIHJlYWQtb25seSAoTWFwcGluZ1Byb3h5VHlwZSkuICBQcmV2aW91c2x5IHRoZSBkaWN0aW9uYXJ5IHdhcyBtb2RpZmlhYmxlCiAgIGJ1dCBhIG5ldyBvbmUgd2FzIGNyZWF0ZWQgb24gZWFjaCBhY2Nlc3Mgb2YgdGhlIGF0dHJpYnV0ZS4KIAorLSBJc3N1ZSAjMjI2Mzg6IFNTTHYzIGlzIG5vdyBkaXNhYmxlZCB0aHJvdWdob3V0IHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgorICBJdCBjYW4gc3RpbGwgYmUgZW5hYmxlZCBieSBpbnN0YW50aWF0aW5nIGEgU1NMQ29udGV4dCBtYW51YWxseS4KKwogLSBJc3N1ZSAjMjI2NDE6IEluIGFzeW5jaW8sIHRoZSBkZWZhdWx0IFNTTCBjb250ZXh0IGZvciBjbGllbnQgY29ubmVjdGlvbnMKICAgaXMgbm93IGNyZWF0ZWQgdXNpbmcgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKSwgZm9yIHN0cm9uZ2VyIHNlY3VyaXR5LgogCistIElzc3VlICMxNzQwMTogSW5jbHVkZSBjbG9zZWZkIGluIGlvLkZpbGVJTyByZXByLgorCistIElzc3VlICMyMTMzODogQWRkIHNpbGVudCBtb2RlIGZvciBjb21waWxlYWxsLiBxdWlldCBwYXJhbWV0ZXJzIG9mCisgIGNvbXBpbGVfe2RpciwgZmlsZSwgcGF0aH0gZnVuY3Rpb25zIG5vdyBoYXZlIGEgbXVsdGlsZXZlbCB2YWx1ZS4gQWxzbywKKyAgLXEgb3B0aW9uIG9mIHRoZSBDTEkgbm93IGhhdmUgYSBtdWx0aWxldmVsIHZhbHVlLiBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKworLSBJc3N1ZSAjMjAxNTI6IENvbnZlcnQgdGhlIGFycmF5IGFuZCBjbWF0aCBtb2R1bGVzIHRvIEFyZ3VtZW50IENsaW5pYy4KKworLSBJc3N1ZSAjMTg2NDM6IEFkZCBzb2NrZXQuc29ja2V0cGFpcigpIG9uIFdpbmRvd3MuCisKIC0gSXNzdWUgIzIyNDM1OiBGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayB3aGVuIFNvY2tldFNlcnZlciBiaW5kIGZhaWxzLgogCiAtIElzc3VlICMxMzA5NjogRml4ZWQgc2VnZmF1bHQgaW4gQ1R5cGVzIFBPSU5URVIgaGFuZGxpbmcgb2YgbGFyZ2UKQEAgLTc5Miw5ICsxOTQyLDE5IEBACiAtIElzc3VlICMxMTY5NDogUmFpc2UgQ29udmVyc2lvbkVycm9yIGluIHhkcmxpYiBhcyBkb2N1bWVudGVkLiAgUGF0Y2gKICAgYnkgRmlsaXAgR3J1c3pjennFhHNraSBhbmQgQ2xhdWRpdSBQb3BhLgogCistIElzc3VlICMxOTM4MDogT3B0aW1pemVkIHBhcnNpbmcgb2YgcmVndWxhciBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjMTUxOTYzODogTm93IHVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggZW1wdHkgc3RyaW5ncyBpbiByZS5zdWIoKQorICBhbmQgcmUuc3VibigpLgorCistIElzc3VlICMxODYxNTogc25kaGRyLndoYXQvd2hhdGhkciBub3cgcmV0dXJuIGEgbmFtZWR0dXBsZS4KKwogLSBJc3N1ZSAjMjI0NjI6IEZpeCBweWV4cGF0J3MgY3JlYXRpb24gb2YgYSBkdW1teSBmcmFtZSB0byBtYWtlIGl0CiAgIGFwcGVhciBpbiBleGNlcHRpb24gdHJhY2ViYWNrcy4KIAorLSBJc3N1ZSAjMjE5NjU6IEFkZCBzdXBwb3J0IGZvciBpbi1tZW1vcnkgU1NMIHRvIHRoZSBzc2wgbW9kdWxlLiAgUGF0Y2gKKyAgYnkgR2VlcnQgSmFuc2VuLgorCiAtIElzc3VlICMyMTE3MzogRml4IGxlbigpIG9uIGEgV2Vha0tleURpY3Rpb25hcnkgd2hlbiAuY2xlYXIoKSB3YXMgY2FsbGVkCiAgIHdpdGggYW4gaXRlcmF0b3IgYWxpdmUuCiAKQEAgLTgwNCwxNDkgKzE5NjQsMzggQEAKIC0gSXNzdWUgIzIxOTA1OiBBdm9pZCBSdW50aW1lRXJyb3IgaW4gcGlja2xlLndoaWNobW9kdWxlKCkgd2hlbiBzeXMubW9kdWxlcwogICBpcyBtdXRhdGVkIHdoaWxlIGl0ZXJhdGluZy4gIFBhdGNoIGJ5IE9saXZpZXIgR3Jpc2VsLgogCistIElzc3VlICMxMTI3MTogY29uY3VycmVudC5mdXR1cmVzLkV4ZWN1dG9yLm1hcCgpIG5vdyB0YWtlcyBhICpjaHVua3NpemUqCisgIGFyZ3VtZW50IHRvIGFsbG93IGJhdGNoaW5nIG9mIHRhc2tzIGluIGNoaWxkIHByb2Nlc3NlcyBhbmQgaW1wcm92ZQorICBwZXJmb3JtYW5jZSBvZiBQcm9jZXNzUG9vbEV4ZWN1dG9yLiAgUGF0Y2ggYnkgRGFuIE8nUmVpbGx5LgorCistIElzc3VlICMyMTg4Mzogb3MucGF0aC5qb2luKCkgYW5kIG9zLnBhdGgucmVscGF0aCgpIG5vdyByYWlzZSBhIFR5cGVFcnJvciB3aXRoCisgIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIGZvciB1bnN1cHBvcnRlZCBvciBtaXNtYXRjaGVkIHR5cGVzIG9mIGFyZ3VtZW50cy4KKwogLSBJc3N1ZSAjMjIyMTk6IFRoZSB6aXBmaWxlIG1vZHVsZSBDTEkgbm93IGFkZHMgZW50cmllcyBmb3IgZGlyZWN0b3JpZXMKICAgKGluY2x1ZGluZyBlbXB0eSBkaXJlY3RvcmllcykgaW4gWklQIGZpbGUuCiAKIC0gSXNzdWUgIzIyNDQ5OiBJbiB0aGUgc3NsLlNTTENvbnRleHQubG9hZF9kZWZhdWx0X2NlcnRzLCBjb25zdWx0IHRoZQogICBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBTU0xfQ0VSVF9ESVIgYW5kIFNTTF9DRVJUX0ZJTEUgb24gV2luZG93cy4KIAorLSBJc3N1ZSAjMjI1MDg6IFRoZSBlbWFpbC5fX3ZlcnNpb25fXyB2YXJpYWJsZSBoYXMgYmVlbiByZW1vdmVkOyB0aGUgZW1haWwKKyAgY29kZSBpcyBubyBsb25nZXIgc2hpcHBlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIHN0ZGxpYiwgYW5kIF9fdmVyc2lvbl9fCisgIGhhc24ndCBiZWVuIHVwZGF0ZWQgaW4gc2V2ZXJhbCByZWxlYXNlcy4KKwogLSBJc3N1ZSAjMjAwNzY6IEFkZGVkIG5vbiBkZXJpdmVkIFVURi04IGFsaWFzZXMgdG8gbG9jYWxlIGFsaWFzZXMgdGFibGUuCiAKIC0gSXNzdWUgIzIwMDc5OiBBZGRlZCBsb2NhbGVzIHN1cHBvcnRlZCBpbiBnbGliYyAyLjE4IHRvIGxvY2FsZSBhbGlhcyB0YWJsZS4KIAotLSBJc3N1ZSAjMjIzOTY6IE9uIDMyLWJpdCBBSVggcGxhdGZvcm0sIGRvbid0IGV4cG9zZSBvcy5wb3NpeF9mYWR2aXNlKCkgbm9yCi0gIG9zLnBvc2l4X2ZhbGxvY2F0ZSgpIGJlY2F1c2UgdGhlaXIgcHJvdG90eXBlcyBpbiBzeXN0ZW0gaGVhZGVycyBhcmUgd3JvbmcuCistIElzc3VlICMyMDIxODogQWRkZWQgY29udmVuaWVuY2UgbWV0aG9kcyByZWFkX3RleHQvd3JpdGVfdGV4dCBhbmQgcmVhZF9ieXRlcy8KKyAgd3JpdGVfYnl0ZXMgdG8gcGF0aGxpYi5QYXRoIG9iamVjdHMuCiAKLS0gSXNzdWUgIzIyNTE3OiBXaGVuIGEgaW8uQnVmZmVyZWRSV1BhaXIgb2JqZWN0IGlzIGRlYWxsb2NhdGVkLCBjbGVhciBpdHMKLSAgd2Vha3JlZnMuCistIElzc3VlICMyMjQzNzogTnVtYmVyIG9mIGNhcHR1cmluZyBncm91cHMgaW4gcmVndWxhciBleHByZXNzaW9uIGlzIG5vIGxvbmdlcgorICBsaW1pdGVkIGJ5IDEwMC4KIAotLSBJc3N1ZSAjMjI0NDg6IEltcHJvdmUgY2FuY2VsZWQgdGltZXIgaGFuZGxlcyBjbGVhbnVwIHRvIHByZXZlbnQKLSAgdW5ib3VuZCBtZW1vcnkgdXNhZ2UuIFBhdGNoIGJ5IEpvc2h1YSBNb29yZS1PbGl2YS4KLQotLSBJc3N1ZSAjMjMwMDk6IE1ha2Ugc3VyZSBzZWxlY3RvcnMuRXBvbGxTZWxlY3J0b3Iuc2VsZWN0KCkgd29ya3Mgd2hlbiBubwotICBGRCBpcyByZWdpc3RlcmVkLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzIwNTc3OiBDb25maWd1cmF0aW9uIG9mIHRoZSBtYXggbGluZSBsZW5ndGggZm9yIHRoZSBGb3JtYXRQYXJhZ3JhcGgKLSAgZXh0ZW5zaW9uIGhhcyBiZWVuIG1vdmVkIGZyb20gdGhlIEdlbmVyYWwgdGFiIG9mIHRoZSBJZGxlIHByZWZlcmVuY2VzIGRpYWxvZwotICB0byB0aGUgRm9ybWF0UGFyYWdyYXBoIHRhYiBvZiB0aGUgQ29uZmlnIEV4dGVuc2lvbnMgZGlhbG9nLgotICBQYXRjaCBieSBUYWwgRWluYXQuCi0KLS0gSXNzdWUgIzE2ODkzOiBVcGRhdGUgSWRsZSBkb2MgY2hhcHRlciB0byBtYXRjaCBjdXJyZW50IElkbGUgYW5kIGFkZCBuZXcKLSAgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzMwNjg6IEFkZCBJZGxlIGV4dGVuc2lvbiBjb25maWd1cmF0aW9uIGRpYWxvZyB0byBPcHRpb25zIG1lbnUuCi0gIENoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gSE9NRS8uaWRsZXJjL2NvbmZpZy1leHRlbnNpb25zLmNmZy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgVGFsIEVpbmF0LgotCi0tIElzc3VlICMxNjIzMzogQSBtb2R1bGUgYnJvd3NlciAoRmlsZSA6IENsYXNzIEJyb3dzZXIsIEFsdCtDKSByZXF1aXJlcyBhCi0gIGVkaXRvciB3aW5kb3cgd2l0aCBhIGZpbGVuYW1lLiAgV2hlbiBDbGFzcyBCcm93c2VyIGlzIHJlcXVlc3RlZCBvdGhlcndpc2UsCi0gIGZyb20gYSBzaGVsbCwgb3V0cHV0IHdpbmRvdywgb3IgJ1VudGl0bGVkJyBlZGl0b3IsIElkbGUgbm8gbG9uZ2VyIGRpc3BsYXlzCi0gIGFuIGVycm9yIGJveC4gIEl0IG5vdyBwb3BzIHVwIGFuIE9wZW4gTW9kdWxlIGJveCAoQWx0K00pLiBJZiBhIHZhbGlkIG5hbWUKLSAgaXMgZW50ZXJlZCBhbmQgYSBtb2R1bGUgaXMgb3BlbmVkLCBhIGNvcnJlc3BvbmRpbmcgYnJvd3NlciBpcyBhbHNvIG9wZW5lZC4KLQotLSBJc3N1ZSAjNDgzMjogU2F2ZSBBcyB0byB0eXBlIFB5dGhvbiBmaWxlcyBhdXRvbWF0aWNhbGx5IGFkZHMgLnB5IHRvIHRoZQotICBuYW1lIHlvdSBlbnRlciAoZXZlbiBpZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBkaXNwbGF5IGl0KS4gIFNvbWUgc3lzdGVtcwotICBhdXRvbWF0aWNhbGx5IGFkZCAudHh0IHdoZW4gdHlwZSBpcyBUZXh0IGZpbGVzLgotCi0tIElzc3VlICMyMTk4NjogQ29kZSBvYmplY3RzIGFyZSBub3Qgbm9ybWFsbHkgcGlja2xlZCBieSB0aGUgcGlja2xlIG1vZHVsZS4KLSAgVG8gbWF0Y2ggdGhpcywgdGhleSBhcmUgbm8gbG9uZ2VyIHBpY2tsZWQgd2hlbiBydW5uaW5nIHVuZGVyIElkbGUuCi0KLS0gSXNzdWUgIzIzMTgwOiBSZW5hbWUgSURMRSAiV2luZG93cyIgbWVudSBpdGVtIHRvICJXaW5kb3ciLgotICBQYXRjaCBieSBBbCBTd2VpZ2FydC4KLQotVGVzdHMKLS0tLS0tCistIElzc3VlICMxNzQ0MjogSW50ZXJhY3RpdmVJbnRlcnByZXRlciBub3cgZGlzcGxheXMgdGhlIGZ1bGwgY2hhaW5lZCB0cmFjZWJhY2sKKyAgaW4gaXRzIHNob3d0cmFjZWJhY2sgbWV0aG9kLCB0byBtYXRjaCB0aGUgYnVpbHQgaW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCiAKIC0gSXNzdWUgIzIzMzkyOiBBZGRlZCB0ZXN0cyBmb3IgbWFyc2hhbCBDIEFQSSB0aGF0IHdvcmtzIHdpdGggRklMRSouCiAKLS0gSXNzdWUgIzE4OTgyOiBBZGQgdGVzdHMgZm9yIENMSSBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlLgotCi0tIElzc3VlICMxOTU0ODogQWRkZWQgc29tZSBhZGRpdGlvbmFsIGNoZWNrcyB0byB0ZXN0X2NvZGVjcyB0byBlbnN1cmUgdGhhdAotICBzdGF0ZW1lbnRzIGluIHRoZSB1cGRhdGVkIGRvY3VtZW50YXRpb24gcmVtYWluIGFjY3VyYXRlLiBQYXRjaCBieSBNYXJ0aW4KLSAgUGFudGVyLgotCi0tIElzc3VlICMyMjgzODogQWxsIHRlc3RfcmUgdGVzdHMgbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLQotLSBJc3N1ZSAjMjIxNzM6IFVwZGF0ZSBsaWIydG8zIHRlc3RzIHRvIHVzZSB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KLQotLSBJc3N1ZSAjMTYwMDA6IENvbnZlcnQgdGVzdF9jdXJzZXMgdG8gdXNlIHVuaXR0ZXN0LgotCi0tIElzc3VlICMyMTQ1NjogU2tpcCB0d28gdGVzdHMgaW4gdGVzdF91cmxsaWIybmV0LnB5IGlmIF9zc2wgbW9kdWxlIG5vdAotICBwcmVzZW50LiBQYXRjaCBieSBSZW1pIFBvaW50ZWwuCi0KLS0gSXNzdWUgIzIyNzcwOiBQcmV2ZW50IHNvbWUgVGsgc2VnZmF1bHRzIG9uIE9TIFggd2hlbiBydW5uaW5nIGd1aSB0ZXN0cy4KLQotLSBJc3N1ZSAjMjMyMTE6IFdvcmthcm91bmQgdGVzdF9sb2dnaW5nIGZhaWx1cmUgb24gc29tZSBPUyBYIDEwLjYgc3lzdGVtcy4KLQotLSBJc3N1ZSAjMjMzNDU6IFByZXZlbnQgdGVzdF9zc2wgZmFpbHVyZXMgd2l0aCBsYXJnZSBPcGVuU1NMIHBhdGNoIGxldmVsCi0gIHZhbHVlcyAobGlrZSAwLjkuOHpjKS4KLQotLSBJc3N1ZSAjMjIyODk6IFByZXZlbnQgdGVzdF91cmxsaWIybmV0IGZhaWx1cmVzIGR1ZSB0byBmdHAgY29ubmVjdGlvbiB0aW1lb3V0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU1MDY6IFVzZSBzdGFuZGFyZCBQS0dfUFJPR19QS0dfQ09ORklHIGF1dG9jb25mIG1hY3JvIGluIHRoZSBjb25maWd1cmUKLSAgc2NyaXB0LgotCi0tIElzc3VlICMyMjkzNTogQWxsb3cgdGhlIHNzbCBtb2R1bGUgdG8gYmUgY29tcGlsZWQgaWYgb3BlbnNzbCBkb2Vzbid0IHN1cHBvcnQKLSAgU1NMIDMuCi0KLS0gSXNzdWUgIzE2NTM3OiBDaGVjayB3aGV0aGVyIHNlbGYuZXh0ZW5zaW9ucyBpcyBlbXB0eSBpbiBzZXR1cC5weS4gUGF0Y2ggYnkKLSAgSm9uYXRoYW4gSG9zbWVyLgotCi0tIElzc3VlICMxODA5NjogRml4IGxpYnJhcnkgb3JkZXIgcmV0dXJuZWQgYnkgcHl0aG9uLWNvbmZpZy4KLQotLSBJc3N1ZSAjMTcyMTk6IEFkZCBsaWJyYXJ5IGJ1aWxkIGRpciBmb3IgUHl0aG9uIGV4dGVuc2lvbiBjcm9zcy1idWlsZHMuCi0KLS0gSXNzdWUgIzE3MTI4OiBVc2UgcHJpdmF0ZSB2ZXJzaW9uIG9mIE9wZW5TU0wgZm9yIDMuNC4zIE9TIFggMTAuNSsgaW5zdGFsbGVyLgotCi1DIEFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMjIwNzk6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCBzdGF0aWNhbGx5IGFsbG9jYXRlZCB0eXBlIGhhcwotICBubyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYmFzZXMuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTk1NDg6IFVwZGF0ZSB0aGUgY29kZWNzIG1vZHVsZSBkb2N1bWVudGF0aW9uIHRvIGJldHRlciBjb3ZlciB0aGUKLSAgZGlzdGluY3Rpb24gYmV0d2VlbiB0ZXh0IGVuY29kaW5ncyBhbmQgb3RoZXIgY29kZWNzLCB0b2dldGhlciB3aXRoIG90aGVyCi0gIGNsYXJpZmljYXRpb25zLiBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICMyMjkxNDogVXBkYXRlIHRoZSBQeXRob24gMi8zIHBvcnRpbmcgSE9XVE8gdG8gZGVzY3JpYmUgYSBtb3JlIGF1dG9tYXRlZAotICBhcHByb2FjaC4KLQotLSBJc3N1ZSAjMjE1MTQ6IFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBqc29uIG1vZHVsZSBub3cgcmVmZXJzIHRvIG5ldyBKU09OIFJGQwotICA3MTU5IGluc3RlYWQgb2Ygb2Jzb2xldGVkIFJGQyA0NjI3LgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIzMTQ6IHB5ZG9jIG5vdyB3b3JrcyB3aGVuIHRoZSBMSU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTc4OTY6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IGV4cGVjdCBleHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMKLSAgdG8gYmUgaW4gYGBQQ2J1aWxkXC4uXGV4dGVybmFsc2BgIHJhdGhlciB0aGFuIGBgUENidWlsZFwuLlwuLmBgLgotCi0tIElzc3VlICMxNzcxNzogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgdXNlIGEgY29weSBvZiBOQVNNIHB1bGxlZCBmcm9tCi0gIHN2bi5weXRob24ub3JnIHRvIGJ1aWxkIE9wZW5TU0wuCi0KLS0gSXNzdWUgIzIyNjQ0OiBUaGUgYnVuZGxlZCB2ZXJzaW9uIG9mIE9wZW5TU0wgaGFzIGJlZW4gdXBkYXRlZCB0byAxLjAuMWouCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTEwLTA2Ci0KLUxpYnJhcnkKLS0tLS0tLS0KIAogLSBJc3N1ZSAjMTA1MTA6IGRpc3R1dGlscyByZWdpc3RlciBhbmQgdXBsb2FkIG1ldGhvZHMgbm93IHVzZSBIVE1MIHN0YW5kYXJkcwogICBjb21wbGlhbnQgQ1JMRiBsaW5lIGVuZGluZ3MuCkBAIC05NTQsMTUgKzIwMDMsMjcgQEAKIC0gSXNzdWUgIzk4NTA6IEZpeGVkIG1hY3BhdGguam9pbigpIGZvciBlbXB0eSBmaXJzdCBjb21wb25lbnQuICBQYXRjaCBieQogICBPbGVnIE9zaG15YW4uCiAKKy0gSXNzdWUgIzUzMDk6IGRpc3R1dGlscycgYnVpbGQgYW5kIGJ1aWxkX2V4dCBjb21tYW5kcyBub3cgYWNjZXB0IGEgYGAtamBgCisgIG9wdGlvbiB0byBlbmFibGUgcGFyYWxsZWwgYnVpbGRpbmcgb2YgZXh0ZW5zaW9uIG1vZHVsZXMuCisKKy0gSXNzdWUgIzIyNDQ4OiBJbXByb3ZlIGNhbmNlbGVkIHRpbWVyIGhhbmRsZXMgY2xlYW51cCB0byBwcmV2ZW50CisgIHVuYm91bmQgbWVtb3J5IHVzYWdlLiBQYXRjaCBieSBKb3NodWEgTW9vcmUtT2xpdmEuCisKIC0gSXNzdWUgIzIyNDI3OiBUZW1wb3JhcnlEaXJlY3Rvcnkgbm8gbG9uZ2VyIGF0dGVtcHRzIHRvIGNsZWFuIHVwIHR3aWNlIHdoZW4KICAgdXNlZCBpbiB0aGUgd2l0aCBzdGF0ZW1lbnQgaW4gZ2VuZXJhdG9yLgogCistIElzc3VlICMyMjM2MjogRm9yYmlkZGVuIGFtYmlndW91cyBvY3RhbCBlc2NhcGVzIG91dCBvZiByYW5nZSAwLTBvMzc3IGluCisgIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKIC0gSXNzdWUgIzIwOTEyOiBOb3cgZGlyZWN0b3JpZXMgYWRkZWQgdG8gWklQIGZpbGUgaGF2ZSBjb3JyZWN0IFVuaXggYW5kIE1TLURPUwogICBkaXJlY3RvcnkgYXR0cmlidXRlcy4KIAogLSBJc3N1ZSAjMjE4NjY6IFppcEZpbGUuY2xvc2UoKSBubyBsb25nZXIgd3JpdGVzIFpJUDY0IGNlbnRyYWwgZGlyZWN0b3J5CiAgIHJlY29yZHMgaWYgYWxsb3daaXA2NCBpcyBmYWxzZS4KIAorLSBJc3N1ZSAjMjIyNzg6IEZpeCB1cmxqb2luIHByb2JsZW0gd2l0aCByZWxhdGl2ZSB1cmxzLCBhIHJlZ3Jlc3Npb24gb2JzZXJ2ZWQKKyAgYWZ0ZXIgY2hhbmdlcyB0byBpc3N1ZTIyMTE4IHdlcmUgc3VibWl0dGVkLgorCiAtIElzc3VlICMyMjQxNTogRml4ZWQgZGVidWdnaW5nIG91dHB1dCBvZiB0aGUgR1JPVVBSRUZfRVhJU1RTIG9wY29kZSBpbiB0aGUgcmUKICAgbW9kdWxlLiAgUmVtb3ZlZCB0cmFpbGluZyBzcGFjZXMgaW4gZGVidWdnaW5nIG91dHB1dC4KIApAQCAtOTcyLDQ3ICsyMDMzLDE4IEBACiAtIElzc3VlICMyMTMzMjogRW5zdXJlIHRoYXQgYGBidWZzaXplPTFgYCBpbiBzdWJwcm9jZXNzLlBvcGVuKCkgc2VsZWN0cwogICBsaW5lIGJ1ZmZlcmluZywgcmF0aGVyIHRoYW4gYmxvY2sgYnVmZmVyaW5nLiAgUGF0Y2ggYnkgQWtpcmEgTGkuCiAKLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjJyYzE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTA5LTIyCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjI1ODogRml4IHRoZSB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gc2V0X2luaGVyaXRhYmxlKCkgb24gSWxsdW1vcy4KLSAgVGhpcyBwbGF0Zm9ybSBleHBvc2VzIHRoZSBmdW5jdGlvbiBgYGlvY3RsKEZJT0NMRVgpYGAsIGJ1dCBjYWxsaW5nIGl0IGZhaWxzCi0gIHdpdGggZXJybm8gaXMgRU5PVFRZOiAiSW5hcHByb3ByaWF0ZSBpb2N0bCBmb3IgZGV2aWNlIi4gc2V0X2luaGVyaXRhYmxlKCkKLSAgbm93IGZhbGxzIGJhY2sgdG8gdGhlIHNsb3dlciBgYGZjbnRsKClgYCAoYGBGX0dFVEZEYGAgYW5kIHRoZW4gYGBGX1NFVEZEYGApLgotCi0tIElzc3VlICMyMTY2OTogV2l0aCB0aGUgYWlkIG9mIGhldXJpc3RpY3MgaW4gU3ludGF4RXJyb3IuX19pbml0X18sIHRoZQotICBwYXJzZXIgbm93IGF0dGVtcHRzIHRvIGdlbmVyYXRlIG1vcmUgbWVhbmluZ2Z1bCAob3IgYXQgbGVhc3QgbW9yZSBzZWFyY2gKLSAgZW5naW5lIGZyaWVuZGx5KSBlcnJvciBtZXNzYWdlcyB3aGVuICJleGVjIiBhbmQgInByaW50IiBhcmUgdXNlZCBhcwotICBzdGF0ZW1lbnRzLgotCi0tIElzc3VlICMyMTY0MjogSWYgdGhlIGNvbmRpdGlvbmFsIGlmLWVsc2UgZXhwcmVzc2lvbiwgYWxsb3cgYW4gaW50ZWdlciB3cml0dGVuCi0gIHdpdGggbm8gc3BhY2UgYmV0d2VlbiBpdHNlbGYgYW5kIHRoZSBgYGVsc2VgYCBrZXl3b3JkIChlLmcuIGBgVHJ1ZSBpZiA0MmVsc2UKLSAgRmFsc2VgYCkgdG8gYmUgdmFsaWQgc3ludGF4LgotCi0tIElzc3VlICMyMTUyMzogRml4IG92ZXItcGVzc2ltaXN0aWMgY29tcHV0YXRpb24gb2YgdGhlIHN0YWNrIGVmZmVjdCBvZgotICBzb21lIG9wY29kZXMgaW4gdGhlIGNvbXBpbGVyLiAgVGhpcyBhbHNvIGZpeGVzIGEgcXVhZHJhdGljIGNvbXBpbGF0aW9uCi0gIHRpbWUgaXNzdWUgbm90aWNlYWJsZSB3aGVuIGNvbXBpbGluZyBjb2RlIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgImFuZCIKLSAgYW5kICJvciIgb3BlcmF0b3JzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KIC0gSXNzdWUgIzIxMDkxOiBGaXggQVBJIGJ1ZzogZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfYXR0YWNobWVudCBpcyBub3cKLSAgYSBtZXRob2QuICBTaW5jZSBFbWFpbE1lc3NhZ2UgaXMgcHJvdmlzaW9uYWwsIHdlIGNhbiBjaGFuZ2UgdGhlIEFQSSBpbiBhCi0gIG1haW50ZW5hbmNlIHJlbGVhc2UsIGJ1dCB3ZSB1c2UgYSB0cmljayB0byByZW1haW4gYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoCi0gIDMuNC4wLzEuCisgIGEgbWV0aG9kLgogCiAtIElzc3VlICMyMTA3OTogRml4IGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX2F0dGFjaG1lbnQgdG8gcmV0dXJuIHRoZQogICBjb3JyZWN0IHJlc3VsdCB3aGVuIHRoZSBoZWFkZXIgaGFzIHBhcmFtZXRlcnMgYXMgd2VsbCBhcyBhIHZhbHVlLgogCiAtIElzc3VlICMyMjI0NzogQWRkIE5OVFBFcnJvciB0byBubnRwbGliLl9fYWxsX18uCiAKKy0gSXNzdWUgIzIyMzY2OiB1cmxsaWIucmVxdWVzdC51cmxvcGVuIHdpbGwgYWNjZXB0IGEgY29udGV4dCBvYmplY3QKKyAgKFNTTENvbnRleHQpIGFzIGFuIGFyZ3VtZW50IHdoaWNoIHdpbGwgdGhlbiB1c2VkIGJlIGZvciBIVFRQUyBjb25uZWN0aW9uLgorICBQYXRjaCBieSBBbGV4IEdheW5vci4KKwogLSBJc3N1ZSAjNDE4MDogVGhlIHdhcm5pbmdzIHJlZ2lzdHJpZXMgYXJlIG5vdyByZXNldCB3aGVuIHRoZSBmaWx0ZXJzCiAgIGFyZSBtb2RpZmllZC4KIApAQCAtMTAyNCw2ICsyMDU2LDkgQEAKICAgd2l0aCBub24tc3RhbmRhcmQgY29va2llIGhhbmRsaW5nIGluIHNvbWUgV2ViIGJyb3dzZXJzLiAgUmVwb3J0ZWQgYnkKICAgU2VyZ2V5IEJvYnJvdi4KIAorLSBJc3N1ZSAjMjA1Mzc6IGxvZ2dpbmcgbWV0aG9kcyBub3cgYWNjZXB0IGFuIGV4Y2VwdGlvbiBpbnN0YW5jZSBhcyB3ZWxsIGFzIGEKKyAgQm9vbGVhbiB2YWx1ZSBvciBleGNlcHRpb24gdHVwbGUuIFRoYW5rcyB0byBZdXJ5IFNlbGl2YW5vdiBmb3IgdGhlIHBhdGNoLgorCiAtIElzc3VlICMyMjM4NDogQW4gZXhjZXB0aW9uIGluIFRraW50ZXIgY2FsbGJhY2sgbm8gbG9uZ2VyIGNyYXNoZXMgdGhlIHByb2dyYW0KICAgd2hlbiBpdCBpcyBydW4gd2l0aCBweXRob253LmV4ZS4KIApAQCAtMTAzMiw2ICsyMDY3LDkgQEAKIC0gSXNzdWUgIzIxMTQ3OiBzcWxpdGUzIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIHRoZSByZXF1ZXN0IGNvbnRhaW5zIGEgbnVsbAogICBjaGFyYWN0ZXIgaW5zdGVhZCBvZiB0cnVuY2F0ZSBpdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgogCistIElzc3VlICMxMzk2ODogVGhlIGdsb2IgbW9kdWxlIG5vdyBzdXBwb3J0cyByZWN1cnNpdmUgc2VhcmNoIGluCisgIHN1YmRpcmVjdG9yaWVzIHVzaW5nIHRoZSAiKioiIHBhdHRlcm4uCisKIC0gSXNzdWUgIzIxOTUxOiBGaXhlZCBhIGNyYXNoIGluIFRraW50ZXIgb24gQUlYIHdoZW4gY2FsbGVkIFRjbCBjb21tYW5kIHdpdGgKICAgZW1wdHkgc3RyaW5nIG9yIHR1cGxlIGFyZ3VtZW50LgogCkBAIC0xMDQwLDEyICsyMDc4LDMxIEBACiAKIC0gSXNzdWUgIzIyMzM4OiBGaXggYSBjcmFzaCBpbiB0aGUganNvbiBtb2R1bGUgb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS4KIAorLSBJc3N1ZSAjMTI0MTA6IGltYXBsaWIuSU1BUDQgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFRhcmVrIFppYWTDqS4KKworLSBJc3N1ZSAjMjEyNzA6IFdlIG5vdyBvdmVycmlkZSB0dXBsZSBtZXRob2RzIGluIG1vY2suY2FsbCBvYmplY3RzIHNvIHRoYXQKKyAgdGhleSBjYW4gYmUgdXNlZCBhcyBub3JtYWwgY2FsbCBhdHRyaWJ1dGVzLgorCistIElzc3VlICMxNjY2MjogbG9hZF90ZXN0cygpIGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgcnVuIHdoZW4gaXQgaXMgcHJlc2VudCBpbgorICBhIHBhY2thZ2UncyBfX2luaXRfXy5weS4gIFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSgpIHN0aWxsIGFjY2VwdHMKKyAgdXNlX2xvYWRfdGVzdHMsIGJ1dCBpdCBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLiAgQSBuZXcga2V5d29yZC1vbmx5CisgIGF0dHJpYnV0ZSBgcGF0dGVybmAgaXMgYWRkZWQgYW5kIGRvY3VtZW50ZWQuICBQYXRjaCBnaXZlbiBieSBSb2JlcnQgQ29sbGlucywKKyAgdHdlYWtlZCBieSBCYXJyeSBXYXJzYXcuCisKIC0gSXNzdWUgIzIyMjI2OiBGaXJzdCBsZXR0ZXIgbm8gbG9uZ2VyIGlzIHN0cmlwcGVkIGZyb20gdGhlICJzdGF0dXMiIGtleSBpbgogICB0aGUgcmVzdWx0IG9mIFRyZWV2aWV3LmhlYWRpbmcoKS4KIAogLSBJc3N1ZSAjMTk1MjQ6IEZpeGVkIHJlc291cmNlIGxlYWsgaW4gdGhlIEhUVFAgY29ubmVjdGlvbiB3aGVuIGFuIGludmFsaWQKICAgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgogCistIElzc3VlICMyMDQyMTogQWRkIGEgLnZlcnNpb24oKSBtZXRob2QgdG8gU1NMIHNvY2tldHMgZXhwb3NpbmcgdGhlIGFjdHVhbAorICBwcm90b2NvbCB2ZXJzaW9uIGluIHVzZS4KKworLSBJc3N1ZSAjMTk1NDY6IGNvbmZpZ3BhcnNlciBleGNlcHRpb25zIG5vIGxvbmdlciBleHBvc2UgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KKyAgQ2hhaW5lZCBLZXlFcnJvcnMgYXJlIHJlbW92ZWQsIHdoaWNoIGxlYWRzIHRvIGNsZWFuZXIgdHJhY2ViYWNrcy4gIFBhdGNoIGJ5CisgIENsYXVkaXUgUG9wYS4KKwogLSBJc3N1ZSAjMjIwNTE6IHR1cnRsZWRlbW8gbm8gbG9uZ2VyIHJlbG9hZHMgZXhhbXBsZXMgdG8gcmUtcnVuIHRoZW0uCiAgIEluaXRpYWxpemF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgZ3VpIHNldHVwIHNob3VsZCBiZSBkb25lIGluIG1haW4oKSwKICAgd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZSBhIGRlbW8gaXMgcnVuLCBidXQgbm90IG9uIGltcG9ydC4KQEAgLTEwNjIsMjMgKzIxMTksNTcgQEAKIC0gSXNzdWUgIzE4MTMyOiBUdXJ0bGVkZW1vIGJ1dHRvbnMgbm8gbG9uZ2VyIGRpc2FwcGVhciB3aGVuIHRoZSB3aW5kb3cgaXMKICAgc2hydW5rLiAgT3JpZ2luYWwgcGF0Y2hlcyBieSBKYW4gS2FuaXMgYW5kIExpdGEgQ2hvLgogCistIElzc3VlICMyMjA0MzogdGltZS5tb25vdG9uaWMoKSBpcyBub3cgYWx3YXlzIGF2YWlsYWJsZS4KKyAgYGB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKClgYCwgYGB0aHJlYWRpbmcuUkxvY2suYWNxdWlyZSgpYGAgYW5kIHNvY2tldAorICBvcGVyYXRpb25zIG5vdyB1c2UgYSBtb25vdG9uaWMgY2xvY2ssIGluc3RlYWQgb2YgdGhlIHN5c3RlbSBjbG9jaywgd2hlbiBhCisgIHRpbWVvdXQgaXMgdXNlZC4KKworLSBJc3N1ZSAjMjE1Mjc6IEFkZCBhIGRlZmF1bHQgbnVtYmVyIG9mIHdvcmtlcnMgdG8gVGhyZWFkUG9vbEV4ZWN1dG9yIGVxdWFsCisgIHRvIDUgdGltZXMgdGhlIG51bWJlciBvZiBDUFVzLiAgUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCiAtIElzc3VlICMyMjIxNjogc210cGxpYiBub3cgcmVzZXRzIGl0cyBzdGF0ZSBtb3JlIGNvbXBsZXRlbHkgYWZ0ZXIgYSBxdWl0LiAgVGhlCiAgIG1vc3Qgb2J2aW91cyBjb25zZXF1ZW5jZSBvZiB0aGUgcHJldmlvdXMgYmVoYXZpb3Igd2FzIGEgU1RBUlRUTFMgZmFpbHVyZQogICBkdXJpbmcgYSBjb25uZWN0L3N0YXJ0dGxzL3F1aXQvY29ubmVjdC9zdGFydHRscyBzZXF1ZW5jZS4KIAorLSBJc3N1ZSAjMjIwOTg6IGN0eXBlcycgQmlnRW5kaWFuU3RydWN0dXJlIGFuZCBMaXR0bGVFbmRpYW5TdHJ1Y3R1cmUgbm93CisgIGRlZmluZSBhbiBlbXB0eSBfX3Nsb3RzX18gc28gdGhhdCBzdWJjbGFzc2VzIGRvbid0IGFsd2F5cyBnZXQgYW4gaW5zdGFuY2UKKyAgZGljdC4gIFBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKwogLSBJc3N1ZSAjMjIxODU6IEZpeCBhbiBvY2Nhc2lvbmFsIFJ1bnRpbWVFcnJvciBpbiB0aHJlYWRpbmcuQ29uZGl0aW9uLndhaXQoKQogICBjYXVzZWQgYnkgbXV0YXRpb24gb2YgdGhlIHdhaXRlcnMgcXVldWUgd2l0aG91dCBob2xkaW5nIHRoZSBsb2NrLiAgUGF0Y2gKICAgYnkgRG91ZyBab25na2VyLgogCistIElzc3VlICMyMjI4NzogT24gVU5JWCwgX1B5VGltZV9nZXR0aW1lb2ZkYXkoKSBub3cgdXNlcworICBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FKSBpZiBhdmFpbGFibGUuIEFzIGEgc2lkZSBlZmZlY3QsIFB5dGhvbiBub3cKKyAgZGVwZW5kcyBvbiB0aGUgbGlicnQgbGlicmFyeSBvbiBTb2xhcmlzIGFuZCBvbiBMaW51eCAob25seSB3aXRoIGdsaWJjIG9sZGVyCisgIHRoYW4gMi4xNykuCisKIC0gSXNzdWUgIzIyMTgyOiBVc2UgZS5hcmdzIHRvIHVucGFjayBleGNlcHRpb25zIGNvcnJlY3RseSBpbgogICBkaXN0dXRpbHMuZmlsZV91dGlsLm1vdmVfZmlsZS4gUGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgogCiAtIFRoZSB3ZWJicm93c2VyIG1vZHVsZSBub3cgdXNlcyBzdWJwcm9jZXNzJ3Mgc3RhcnRfbmV3X3Nlc3Npb249VHJ1ZSByYXRoZXIKICAgdGhhbiBhIHBvdGVudGlhbGx5IHJpc2t5IHByZWV4ZWNfZm49b3Muc2V0c2lkIGNhbGwuCiAKKy0gSXNzdWUgIzIyMDQyOiBzaWduYWwuc2V0X3dha2V1cF9mZChmZCkgbm93IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIGZpbGUKKyAgZGVzY3JpcHRvciBpcyBpbiBibG9ja2luZyBtb2RlLgorCistIElzc3VlICMxNjgwODogaW5zcGVjdC5zdGFjaygpIG5vdyByZXR1cm5zIGEgbmFtZWQgdHVwbGUgaW5zdGVhZCBvZiBhIHR1cGxlLgorICBQYXRjaCBieSBEYW5pZWwgU2hhaGFmLgorCiAtIElzc3VlICMyMjIzNjogRml4ZWQgVGtpbnRlciBpbWFnZXMgY29weWluZyBvcGVyYXRpb25zIGluIE5vRGVmYXVsdFJvb3QgbW9kZS4KIAotLSBJc3N1ZSAjMjIxOTE6IEZpeCB3YXJuaW5ncy5fX2FsbF9fLgorLSBJc3N1ZSAjMjUyNzogQWRkIGEgKmdsb2JhbHMqIGFyZ3VtZW50IHRvIHRpbWVpdCBmdW5jdGlvbnMsIGluIG9yZGVyIHRvCisgIG92ZXJyaWRlIHRoZSBnbG9iYWxzIG5hbWVzcGFjZSBpbiB3aGljaCB0aGUgdGltZWQgY29kZSBpcyBleGVjdXRlZC4KKyAgUGF0Y2ggYnkgQmVuIFJvYmVydHMuCisKKy0gSXNzdWUgIzIyMTE4OiBTd2l0Y2ggdXJsbGliLnBhcnNlIHRvIHVzZSBSRkMgMzk4NiBzZW1hbnRpY3MgZm9yIHRoZQorICByZXNvbHV0aW9uIG9mIHJlbGF0aXZlIFVSTHMsIHJhdGhlciB0aGFuIFJGQ3MgMTgwOCBhbmQgMjM5Ni4KKyAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KKworLSBJc3N1ZSAjMjE1NDk6IEFkZGVkIHRoZSAibWVtYmVycyIgcGFyYW1ldGVyIHRvIFRhckZpbGUubGlzdCgpLgorCistIElzc3VlICMxOTYyODogQWxsb3cgY29tcGlsZWFsbCByZWN1cnNpb24gZGVwdGggdG8gYmUgc3BlY2lmaWVkIHdpdGggYSAtcgorICBvcHRpb24uCiAKIC0gSXNzdWUgIzE1Njk2OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBtbWFwIG9iamVjdHMgb24gV2luZG93cy4KIApAQCAtMTA4Niw2ICsyMTc3LDggQEAKIAogLSBJc3N1ZSAjMjIxNjU6IFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciBub3cgc3VwcG9ydHMgdW5kZWNvZGFibGUgZmlsZSBuYW1lcy4KIAorLSBJc3N1ZSAjMTUzODE6IE9wdGltaXplZCBsaW5lIHJlYWRpbmcgaW4gaW8uQnl0ZXNJTy4KKwogLSBJc3N1ZSAjODc5NzogUmFpc2UgSFRUUEVycm9yIG9uIGZhaWxlZCBCYXNpYyBBdXRoZW50aWNhdGlvbiBpbW1lZGlhdGVseS4KICAgSW5pdGlhbCBwYXRjaCBieSBTYW0gQnVsbC4KIApAQCAtMTEwMSw2ICsyMTk0LDE0IEBACiAtIElzc3VlICMxNzkyMzogZ2xvYigpIHBhdHRlcm5zIGVuZGluZyB3aXRoIGEgc2xhc2ggbm8gbG9uZ2VyIG1hdGNoIG5vbi1kaXJzIG9uCiAgIEFJWC4gIEJhc2VkIG9uIHBhdGNoIGJ5IERlbGhhbGx0LgogCistIElzc3VlICMyMTcyNTogQWRkZWQgc3VwcG9ydCBmb3IgUkZDIDY1MzEgKFNNVFBVVEY4KSBpbiBzbXRwZC4KKworLSBJc3N1ZSAjMjIxNzY6IFVwZGF0ZSB0aGUgY3R5cGVzIG1vZHVsZSdzIGxpYmZmaSB0byB2My4xLiAgVGhpcyByZWxlYXNlCisgIGFkZHMgc3VwcG9ydCBmb3IgdGhlIExpbnV4IEFBcmNoNjQgYW5kIFBPV0VSUEMgRUxGIEFCSXYyIGxpdHRsZSBlbmRpYW4KKyAgYXJjaGl0ZWN0dXJlcy4KKworLSBJc3N1ZSAjNTQxMTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlICJ4enRhciIgZm9ybWF0IGluIHRoZSBzaHV0aWwgbW9kdWxlLgorCiAtIElzc3VlICMyMTEyMTogRG9uJ3QgZm9yY2UgM3JkIHBhcnR5IEMgZXh0ZW5zaW9ucyB0byBiZSBidWlsdCB3aXRoCiAgIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50LgogCkBAIC0xMTA4LDE4ICsyMjA5LDU3IEBACiAgIHdoZW4gdW5waWNrbGluZyBwaWNrbGVkIHNxbGl0ZTMuUm93KS4gIHNxbGl0ZTMuUm93IGlzIG5vdyBpbml0aWFsaXplZCBpbiB0aGUKICAgX19uZXdfXygpIG1ldGhvZC4KIAorLSBJc3N1ZSAjMjAxNzA6IENvbnZlcnQgcG9zaXhtb2R1bGUgdG8gdXNlIEFyZ3VtZW50IENsaW5pYy4KKworLSBJc3N1ZSAjMjE1Mzk6IEFkZCBhICpleGlzdHNfb2sqIGFyZ3VtZW50IHRvIGBQYXRobGliLm1rZGlyKClgIHRvIG1pbWljCisgIGBta2RpciAtcGAgYW5kIGBvcy5tYWtlZGlycygpYCBmdW5jdGlvbmFsaXR5LiAgV2hlbiB0cnVlLCBpZ25vcmUKKyAgRmlsZUV4aXN0c0Vycm9ycy4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCisKKy0gSXNzdWUgIzIyMTI3OiBCeXBhc3MgSUROQSBmb3IgcHVyZS1BU0NJSSBob3N0IG5hbWVzIGluIHRoZSBzb2NrZXQgbW9kdWxlCisgIChpbiBwYXJ0aWN1bGFyIGZvciBudW1lcmljIElQcykuCisKKy0gSXNzdWUgIzIxMDQ3OiBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqY29udmVydF9jaGFycmVmcyogYXJndW1lbnQKKyAgb2YgSFRNTFBhcnNlciB0byBUcnVlLiAgUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4KKworLSBBZGQgYW4gX19hbGxfXyB0byBodG1sLmVudGl0aWVzLgorCistIElzc3VlICMxNTExNDogdGhlIHN0cmljdCBtb2RlIGFuZCBhcmd1bWVudCBvZiBIVE1MUGFyc2VyLCBIVE1MUGFyc2VyLmVycm9yLAorICBhbmQgdGhlIEhUTUxQYXJzZXJFcnJvciBleGNlcHRpb24gaGF2ZSBiZWVuIHJlbW92ZWQuCisKKy0gSXNzdWUgIzIyMDg1OiBEcm9wcGVkIHN1cHBvcnQgb2YgVGsgOC4zIGluIFRraW50ZXIuCisKIC0gSXNzdWUgIzIxNTgwOiBOb3cgVGtpbnRlciBjb3JyZWN0bHkgaGFuZGxlcyBieXRlcyBhcmd1bWVudHMgcGFzc2VkIHRvIFRrLgogICBJbiBwYXJ0aWN1bGFyIHRoaXMgYWxsb3dzIHRvIGluaXRpYWxpemUgaW1hZ2VzIGZyb20gYmluYXJ5IGRhdGEuCiAKKy0gSXNzdWUgIzIyMDAzOiBXaGVuIGluaXRpYWxpemVkIGZyb20gYSBieXRlcyBvYmplY3QsIGlvLkJ5dGVzSU8oKSBub3cKKyAgZGVmZXJzIG1ha2luZyBhIGNvcHkgdW50aWwgaXQgaXMgbXV0YXRlZCwgaW1wcm92aW5nIHBlcmZvcm1hbmNlIGFuZAorICBtZW1vcnkgdXNlIG9uIHNvbWUgdXNlIGNhc2VzLiAgUGF0Y2ggYnkgRGF2aWQgV2lsc29uLgorCistIElzc3VlICMyMjAxODogT24gV2luZG93cywgc2lnbmFsLnNldF93YWtldXBfZmQoKSBub3cgYWxzbyBzdXBwb3J0cyBzb2NrZXRzLgorICBBIHNpZGUgZWZmZWN0IGlzIHRoYXQgUHl0aG9uIGRlcGVuZHMgdG8gdGhlIFdpblNvY2sgbGlicmFyeS4KKworLSBJc3N1ZSAjMjIwNTQ6IEFkZCBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCkgZnVuY3Rpb25zIHRvIGdldAorICBhbmQgc2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIGEgZmlsZSBkZXNjcmlwdG9yIChGYWxzZSBpZiB0aGUgT19OT05CTE9DSyBmbGFnCisgIGlzIHNldCwgVHJ1ZSBvdGhlcndpc2UpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBhdmFpbGFibGUgb24gV2luZG93cy4KKwogLSBJc3N1ZSAjMTcxNzI6IE1ha2UgdHVydGxlZGVtbyBzdGFydCBhcyBhY3RpdmUgb24gT1MgWCBldmVuIHdoZW4gcnVuIHdpdGgKICAgc3VicHJvY2Vzcy4gIFBhdGNoIGJ5IExpdGEgQ2hvLgogCiAtIElzc3VlICMyMTcwNDogRml4IGJ1aWxkIGVycm9yIGZvciBfbXVsdGlwcm9jZXNzaW5nIHdoZW4gc2VtYXBob3JlcwogICBhcmUgbm90IGF2YWlsYWJsZS4gIFBhdGNoIGJ5IEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzLgogCistIElzc3VlICMyMDE3MzogQ29udmVydCBzaGExLCBzaGEyNTYsIHNoYTUxMiBhbmQgbWQ1IHRvIEFyZ3VtZW50Q2xpbmljLgorICBQYXRjaCBieSBWYWpyYXNreSBLb2suCisKIC0gRml4IHJlcHIoX3NvY2tldC5zb2NrZXQpIG9uIFdpbmRvd3MgNjQtYml0OiBkb24ndCBmYWlsIHdpdGggT3ZlcmZsb3dFcnJvcgogICBvbiBjbG9zZWQgc29ja2V0LiByZXByKHNvY2tldC5zb2NrZXQpIGFscmVhZHkgd29ya3MgZmluZS4KIAorLSBJc3N1ZSAjMjIwMzM6IFJlcHJzIG9mIG1vc3QgUHl0aG9uIGltcGxlbWVuZWQgY2xhc3NlcyBub3cgY29udGFpbiBhY3R1YWwKKyAgY2xhc3MgbmFtZSBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBvbmUuCisKKy0gSXNzdWUgIzIxOTQ3OiBUaGUgZGlzIG1vZHVsZSBjYW4gbm93IGRpc2Fzc2VtYmxlIGdlbmVyYXRvci1pdGVyYXRvcgorICBvYmplY3RzIGJhc2VkIG9uIHRoZWlyIGdpX2NvZGUgYXR0cmlidXRlLiBQYXRjaCBieSBDbGVtZW50IFJvdWF1bHQuCisKIC0gSXNzdWUgIzE2MTMzOiBUaGUgYXN5bmNoYXQuYXN5bmNfY2hhdC5oYW5kbGVfcmVhZCgpIG1ldGhvZCBub3cgaWdub3JlcwogICBCbG9ja2luZ0lPRXJyb3IgZXhjZXB0aW9ucy4KIApAQCAtMTEzMSwxNiArMjI3MSw0MiBAQAogICBzZXF1ZW5jZSBpcyB1c2VkIG9uIHNvbWUgdGVybWluYWwgKGV4OiBURVJNPXh0ZXJtLTI1NmNvbG9yIikgdG8gZW5hYmxlCiAgIHN1cHBvcnQgb2YgOCBiaXQgY2hhcmFjdGVycy4KIAorLSBJc3N1ZSAjNDM1MDogUmVtb3ZlZCBhIG51bWJlciBvZiBvdXQtb2YtZGF0ZWQgYW5kIG5vbi13b3JraW5nIGZvciBhIGxvbmcgdGltZQorICBUa2ludGVyIG1ldGhvZHMuCisKKy0gSXNzdWUgIzYxNjc6IFNjcm9sbGJhci5hY3RpdmF0ZSgpIG5vdyByZXR1cm5zIHRoZSBuYW1lIG9mIGFjdGl2ZSBlbGVtZW50IGlmCisgIHRoZSBhcmd1bWVudCBpcyBub3Qgc3BlY2lmaWVkLiAgU2Nyb2xsYmFyLnNldCgpIG5vdyBhbHdheXMgYWNjZXB0cyBvbmx5IDIKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMxNTI3NTogQ2xlYW4gdXAgYW5kIHNwZWVkIHVwIHRoZSBudHBhdGggbW9kdWxlLgorCiAtIElzc3VlICMyMTg4ODogcGxpc3RsaWIncyBsb2FkKCkgYW5kIGxvYWRzKCkgbm93IHdvcmsgaWYgdGhlIGZtdCBwYXJhbWV0ZXIgaXMKICAgc3BlY2lmaWVkLgogCistIElzc3VlICMyMjAzMjogX19xdWFsbmFtZV9fIGluc3RlYWQgb2YgX19uYW1lX18gaXMgbm93IGFsd2F5cyB1c2VkIHRvIGZvcm1hdAorICBmdWxseSBxdWFsaWZpZWQgY2xhc3MgbmFtZXMgb2YgUHl0aG9uIGltcGxlbWVudGVkIGNsYXNzZXMuCisKKy0gSXNzdWUgIzIyMDMxOiBSZXBycyBub3cgYWx3YXlzIHVzZSBoZXhhZGVjaW1hbCBmb3JtYXQgd2l0aCB0aGUgIjB4IiBwcmVmaXgKKyAgd2hlbiBjb250YWluIGFuIGlkIGluIGZvcm0gIiBhdCAweC4uLiIuCisKKy0gSXNzdWUgIzIyMDE4OiBzaWduYWwuc2V0X3dha2V1cF9mZCgpIG5vdyByYWlzZXMgYW4gT1NFcnJvciBpbnN0ZWFkIG9mIGEKKyAgVmFsdWVFcnJvciBvbiBgYGZzdGF0KClgYCBmYWlsdXJlLgorCiAtIElzc3VlICMyMTA0NDogdGFyZmlsZS5vcGVuKCkgbm93IGhhbmRsZXMgZmlsZW9iaiB3aXRoIGFuIGludGVnZXIgJ25hbWUnCiAgIGF0dHJpYnV0ZS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEFudG9pbmUgUGlldHJpLgogCi0tIElzc3VlICMyMTg2NzogUHJldmVudCB0dXJ0bGUgY3Jhc2ggZHVlIHRvIGludmFsaWQgdW5kbyBidWZmZXIgc2l6ZS4KKy0gSXNzdWUgIzIxOTY2OiBSZXNwZWN0IC1xIGNvbW1hbmQtbGluZSBvcHRpb24gd2hlbiBjb2RlIG1vZHVsZSBpcyByYW4uCiAKIC0gSXNzdWUgIzE5MDc2OiBEb24ndCBwYXNzIHRoZSByZWR1bmRhbnQgJ2ZpbGUnIGFyZ3VtZW50IHRvIHNlbGYuZXJyb3IoKS4KIAorLSBJc3N1ZSAjMTYzODI6IEltcHJvdmUgZXhjZXB0aW9uIG1lc3NhZ2Ugb2Ygd2FybmluZ3Mud2FybigpIGZvciBiYWQKKyAgY2F0ZWdvcnkuIEluaXRpYWwgcGF0Y2ggYnkgUGhpbCBFbHNvbi4KKworLSBJc3N1ZSAjMjE5MzI6IG9zLnJlYWQoKSBub3cgdXNlcyBhIDpjOmZ1bmM6YFB5X3NzaXplX3RgIHR5cGUgaW5zdGVhZCBvZgorICA6Yzp0eXBlOmBpbnRgIGZvciB0aGUgc2l6ZSB0byBzdXBwb3J0IHJlYWRpbmcgbW9yZSB0aGFuIDIgR0IgYXQgb25jZS4gT24KKyAgV2luZG93cywgdGhlIHNpemUgaXMgdHJ1bmN0ZWQgdG8gSU5UX01BWC4gQXMgYW55IGNhbGwgdG8gb3MucmVhZCgpLCB0aGUgT1MKKyAgbWF5IHJlYWQgbGVzcyBieXRlcyB0aGFuIHRoZSBudW1iZXIgb2YgcmVxdWVzdGVkIGJ5dGVzLgorCiAtIElzc3VlICMyMTk0MjogRml4ZWQgc291cmNlIGZpbGUgdmlld2luZyBpbiBweWRvYydzIHNlcnZlciBtb2RlIG9uIFdpbmRvd3MuCiAKIC0gSXNzdWUgIzExMjU5OiBhc3luY2hhdC5hc3luY19jaGF0KCkuc2V0X3Rlcm1pbmF0b3IoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvcgpAQCAtMTE1OCw4ICsyMzI0LDggQEAKIC0gSXNzdWUgIzIxNzE0OiBEaXNhbGxvdyB0aGUgY29uc3RydWN0aW9uIG9mIGludmFsaWQgcGF0aHMgdXNpbmcKICAgUGF0aC53aXRoX25hbWUoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9ueSBMZWUuCiAKLS0gSXNzdWUgIzIxODk3OiBGaXggYSBjcmFzaCB3aXRoIHRoZSBmX2xvY2FscyBhdHRyaWJ1dGUgd2l0aCBjbG9zdXJlCi0gIHZhcmlhYmxlcyB3aGVuIGZyYW1lLmNsZWFyKCkgaGFzIGJlZW4gY2FsbGVkLgorLSBJc3N1ZSAjMTUwMTQ6IEFkZGVkICdhdXRoJyBtZXRob2QgdG8gc210cGxpYiB0byBtYWtlIGltcGxlbWVudGluZyBhdXRoCisgIG1lY2hhbmlzbXMgc2ltcGxlciwgYW5kIHVzZWQgaXQgaW50ZXJuYWxseSBpbiB0aGUgbG9naW4gbWV0aG9kLgogCiAtIElzc3VlICMyMTE1MTogRml4ZWQgYSBzZWdmYXVsdCBpbiB0aGUgd2lucmVnIG1vZHVsZSB3aGVuIGBgTm9uZWBgIGlzIHBhc3NlZAogICBhcyBhIGBgUkVHX0JJTkFSWWBgIHZhbHVlIHRvIFNldFZhbHVlRXguICBQYXRjaCBieSBKb2huIEVocmVzbWFuLgpAQCAtMTE2Nyw4ICsyMzMzLDE3IEBACiAtIElzc3VlICMyMTA5MDogaW8uRmlsZUlPLnJlYWRhbGwoKSBkb2VzIG5vdCBpZ25vcmUgSS9PIGVycm9ycyBhbnltb3JlLiBCZWZvcmUsCiAgIGl0IGlnbm9yZWQgSS9PIGVycm9ycyBpZiBhdCBsZWFzdCB0aGUgZmlyc3QgQyBjYWxsIHJlYWQoKSBzdWNjZWVkLgogCistIElzc3VlICM1ODAwOiBoZWFkZXJzIHBhcmFtZXRlciBvZiB3c2dpcmVmLmhlYWRlcnMuSGVhZGVycyBpcyBub3cgb3B0aW9uYWwuCisgIEluaXRpYWwgcGF0Y2ggYnkgUGFibG8gVG9ycmVzIE5hdmFycmV0ZSBhbmQgU2lsZW50R2hvc3QuCisKIC0gSXNzdWUgIzIxNzgxOiBzc2wuUkFORF9hZGQoKSBub3cgc3VwcG9ydHMgc3RyaW5ncyBsb25nZXIgdGhhbiAyIEdCLgogCistIElzc3VlICMyMTY3OTogUHJldmVudCBleHRyYW5lb3VzIGZzdGF0KCkgY2FsbHMgZHVyaW5nIG9wZW4oKS4gIFBhdGNoIGJ5CisgIEJvaHVzbGF2IEthYnJkYS4KKworLSBJc3N1ZSAjMjE4NjM6IGNQcm9maWxlIG5vdyBkaXNwbGF5cyB0aGUgbW9kdWxlIG5hbWUgb2YgQyBleHRlbnNpb24gZnVuY3Rpb25zLAorICBpbiBhZGRpdGlvbiB0byB0aGVpciBvd24gbmFtZS4KKwogLSBJc3N1ZSAjMTE0NTM6IGFzeW5jb3JlOiBlbWl0IGEgUmVzb3VyY2VXYXJuaW5nIHdoZW4gYW4gdW5jbG9zZWQgZmlsZV93cmFwcGVyCiAgIG9iamVjdCBpcyBkZXN0cm95ZWQuIFRoZSBkZXN0cnVjdG9yIG5vdyBjbG9zZXMgdGhlIGZpbGUgaWYgbmVlZGVkLiBUaGUKICAgY2xvc2UoKSBtZXRob2QgY2FuIG5vdyBiZSBjYWxsZWQgdHdpY2U6IHRoZSBzZWNvbmQgY2FsbCBkb2VzIG5vdGhpbmcuCkBAIC0xMTc4LDQ4ICsyMzUzLDUzIEBACiAtIElzc3VlICMyMTQ3NjogTWFrZSBzdXJlIHRoZSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIgVGV4dElPV3JhcHBlciBpcwogICBkaXNjYXJkZWQgYWZ0ZXIgcGFyc2luZywgc28gdGhlIGlucHV0IGZpbGUgaXNuJ3QgdW5leHBlY3RlZGx5IGNsb3NlZC4KIAorLSBJc3N1ZSAjMjAyOTU6IGltZ2hkciBub3cgcmVjb2duaXplcyBPcGVuRVhSIGZvcm1hdCBpbWFnZXMuCisKIC0gSXNzdWUgIzIxNzI5OiBVc2VkIHRoZSAid2l0aCIgc3RhdGVtZW50IGluIHRoZSBkYm0uZHVtYiBtb2R1bGUgdG8gZW5zdXJlCiAgIGZpbGVzIGNsb3NpbmcuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCiAKIC0gSXNzdWUgIzIxNDkxOiBzb2NrZXRzZXJ2ZXI6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIGNoaWxkIHByb2Nlc3NlcyByZWFwaW5nLgogCistIElzc3VlICMyMTcxOTogQWRkZWQgdGhlIGBgc3RfZmlsZV9hdHRyaWJ1dGVzYGAgZmllbGQgdG8gb3Muc3RhdF9yZXN1bHQgb24KKyAgV2luZG93cy4KKwogLSBJc3N1ZSAjMjE4MzI6IFJlcXVpcmUgbmFtZWQgdHVwbGUgaW5wdXRzIHRvIGJlIGV4YWN0IHN0cmluZ3MuCiAKLS0gSXNzdWUgIzE5MTQ1OiBUaGUgdGltZXMgYXJndW1lbnQgZm9yIGl0ZXJ0b29scy5yZXBlYXQgbm93IGhhbmRsZXMKLSAgbmVnYXRpdmUgdmFsdWVzIHRoZSBzYW1lIHdheSBmb3Iga2V5d29yZCBhcmd1bWVudHMgYXMgaXQgZG9lcyBmb3IKLSAgcG9zaXRpb25hbCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzIxODEyOiB0dXJ0bGUuc2hhcGV0cmFuc2Zvcm0gZGlkIG5vdCB0cmFuZm9ybSB0aGUgdHVydGxlIG9uIHRoZQotICBmaXJzdCBjYWxsLiAgKElzc3VlIGlkZW50aWZpZWQgYW5kIGZpeGVkIGJ5IExpdGEgQ2hvLikKLQotLSBJc3N1ZSAjMjE2MzU6IFRoZSBkaWZmbGliIFNlcXVlbmNlTWF0Y2hlci5nZXRfbWF0Y2hpbmdfYmxvY2tzKCkgbWV0aG9kCi0gIGNhY2hlIGRpZG4ndCBtYXRjaCB0aGUgYWN0dWFsIHJlc3VsdC4gIFRoZSBmb3JtZXIgd2FzIGEgbGlzdCBvZiB0dXBsZXMKLSAgYW5kIHRoZSBsYXR0ZXIgd2FzIGEgbGlzdCBvZiBuYW1lZCB0dXBsZXMuCi0KIC0gSXNzdWUgIzIxNzIyOiBUaGUgZGlzdHV0aWxzICJ1cGxvYWQiIGNvbW1hbmQgbm93IGV4aXRzIHdpdGggYSBub24temVybwogICByZXR1cm4gY29kZSB3aGVuIHVwbG9hZGluZyBmYWlscy4gIFBhdGNoIGJ5IE1hcnRpbiBEZW5nbGVyLgogCiAtIElzc3VlICMyMTcyMzogYXN5bmNpby5RdWV1ZTogc3VwcG9ydCBhbnkgdHlwZSBvZiBudW1iZXIgKGV4OiBmbG9hdCkgZm9yIHRoZQogICBtYXhpbXVtIHNpemUuIFBhdGNoIHdyaXR0ZW4gYnkgVmFqcmFza3kgS29rLgogCistIElzc3VlICMyMTcxMTogc3VwcG9ydCBmb3IgInNpdGUtcHl0aG9uIiBkaXJlY3RvcmllcyBoYXMgbm93IGJlZW4gcmVtb3ZlZAorICBmcm9tIHRoZSBzaXRlIG1vZHVsZSAoaXQgd2FzIGRlcHJlY2F0ZWQgaW4gMy40KS4KKworLSBJc3N1ZSAjMTc1NTI6IG5ldyBzb2NrZXQuc2VuZGZpbGUoKSBtZXRob2QgYWxsb3dpbmcgdG8gc2VuZCBhIGZpbGUgb3ZlciBhCisgIHNvY2tldCBieSB1c2luZyBoaWdoLXBlcmZvcm1hbmNlIG9zLnNlbmRmaWxlKCkgb24gVU5JWC4KKyAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCisKKy0gSXNzdWUgIzE4MDM5OiBkYm0uZHVtcC5vcGVuKCkgbm93IGFsd2F5cyBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdoZW4gdGhlCisgIGZsYWcgaGFzIHRoZSB2YWx1ZSAnbicuICBQYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKIC0gSXNzdWUgIzIxMzI2OiBBZGQgYSBuZXcgaXNfY2xvc2VkKCkgbWV0aG9kIHRvIGFzeW5jaW8uQmFzZUV2ZW50TG9vcC4KICAgcnVuX2ZvcmV2ZXIoKSBhbmQgcnVuX3VudGlsX2NvbXBsZXRlKCkgbWV0aG9kcyBvZiBhc3luY2lvLkJhc2VFdmVudExvb3Agbm93CiAgIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZXZlbnQgbG9vcCB3YXMgY2xvc2VkLgogCi0tIElzc3VlICMyMTc3NDogRml4ZWQgTmFtZUVycm9yIGZvciBhbiBpbmNvcnJlY3QgdmFyaWFibGUgcmVmZXJlbmNlIGluIHRoZQotICBYTUwgTWluaWRvbSBjb2RlIGZvciBjcmVhdGluZyBwcm9jZXNzaW5nIGluc3RydWN0aW9ucy4KLSAgKEZvdW5kIGFuZCBmaXhlZCBieSBDbGF1ZGl1IFBvcGEuKQotCiAtIElzc3VlICMyMTc2NjogUHJldmVudCBhIHNlY3VyaXR5IGhvbGUgaW4gQ0dJSFRUUFNlcnZlciBieSBVUkwgdW5xdW90aW5nIHBhdGhzCiAgIGJlZm9yZSBjaGVja2luZyBmb3IgYSBDR0kgc2NyaXB0IGF0IHRoYXQgcGF0aC4KIAogLSBJc3N1ZSAjMjEzMTA6IEZpeGVkIHBvc3NpYmxlIHJlc291cmNlIGxlYWsgaW4gZmFpbGVkIG9wZW4oKS4KIAorLSBJc3N1ZSAjMjEyNTY6IFByaW50b3V0IG9mIGtleXdvcmQgYXJncyBzaG91bGQgYmUgaW4gZGV0ZXJtaW5pc3RpYyBvcmRlciBpbgorICBhIG1vY2sgZnVuY3Rpb24gY2FsbC4gVGhpcyB3aWxsIGhlbHAgdG8gd3JpdGUgYmV0dGVyIGRvY3Rlc3RzLgorCiAtIElzc3VlICMyMTY3NzogRml4ZWQgY2hhaW5pbmcgbm9ubm9ybWFsaXplZCBleGNlcHRpb25zIGluIGlvIGNsb3NlKCkgbWV0aG9kcy4KIAogLSBJc3N1ZSAjMTE3MDk6IEZpeCB0aGUgcHlkb2MuaGVscCBmdW5jdGlvbiB0byBub3QgZmFpbCB3aGVuIHN5cy5zdGRpbiBpcyBub3QgYQogICB2YWxpZCBmaWxlLgogCistIElzc3VlICMyMTUxNTogdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSBub3cgdXNlcyBvcy5PX1RNUEZJTEUgZmxhZyBpcyBhdmFpbGFibGUuCisKIC0gSXNzdWUgIzEzMjIzOiBGaXggcHlkb2Mud3JpdGVkb2Mgc28gdGhhdCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBtZXRob2RzCiAgIHRoYXQgdXNlICdzZWxmJyBpbiB0aGUgZXhhbXBsZSBjb2RlIGlzIGdlbmVyYXRlZCBjb3JyZWN0bHkuCiAKQEAgLTEyMzAsNiArMjQxMCw5IEBACiAgIGxpbWl0cyB3b3VsZCBvdGhlcndpc2UgYWxsb3cuICBPbiBzeXN0ZW1zIHdpdGggYSBmdW5jdGlvbmluZyAvcHJvYy9zZWxmL2ZkCiAgIG9yIC9kZXYvZmQgaW50ZXJmYWNlIHRoZSBtYXggaXMgbm93IGlnbm9yZWQgYW5kIGFsbCBmZHMgYXJlIGNsb3NlZC4KIAorLSBJc3N1ZSAjMjAzODM6IEludHJvZHVjZSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKCkgYXMgdGhlIHByZWZlcnJlZCB3YXkKKyAgdG8gY3JlYXRlIGEgbmV3IG1vZHVsZS4KKwogLSBJc3N1ZSAjMjE1NTI6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgb2YgdG9vIGxvbmcgc3RyaW5nIGxlbmd0aHMgaW4KICAgdGhlIHRraW50ZXIgbW9kdWxlIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCiAKQEAgLTEyMzgsOCArMjQyMSwxNCBAQAogICBlcnJvciBidWJibGUgdXAgYXMgdGhpcyAiYmFkIGRhdGEiIGFwcGVhcnMgaW4gbWFueSByZWFsIHdvcmxkIHppcCBmaWxlcyBpbgogICB0aGUgd2lsZCBhbmQgaXMgaWdub3JlZCBieSBvdGhlciB6aXAgdG9vbHMuCiAKKy0gSXNzdWUgIzEzNzQyOiBBZGRlZCAia2V5IiBhbmQgInJldmVyc2UiIHBhcmFtZXRlcnMgdG8gaGVhcHEubWVyZ2UoKS4KKyAgKEZpcnN0IGRyYWZ0IG9mIHBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFNpbW9uIFNhcGluLikKKwogLSBJc3N1ZSAjMjE0MDI6IHRraW50ZXIudHRrIG5vdyB3b3JrcyB3aGVuIGRlZmF1bHQgcm9vdCB3aW5kb3cgaXMgbm90IHNldC4KIAorLSBJc3N1ZSAjMzAxNTogX3RraW50ZXIuY3JlYXRlKCkgbm93IGNyZWF0ZXMgdGthcHAgb2JqZWN0IHdpdGggd2FudG9iamVjdD0xIGJ5CisgIGRlZmF1bHQuCisKIC0gSXNzdWUgIzEwMjAzOiBzcWxpdGUzLlJvdyBub3cgdHJ1bHkgc3VwcG9ydHMgc2VxdWVuY2UgcHJvdG9jb2wuICBJbiBwYXJ0aWN1bHIKICAgaXQgc3VwcG9ydHMgcmV2ZXJzZSgpIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgogCkBAIC0xMjQ3LDk3ICsyNDM2LDIxIEBACiAgIGludGVycHJldGVyIGFsaWFzZXMgKHB5dGhvbiwgcHl0aG9uMykgYXJlIG5vdyBjcmVhdGVkIGJ5IGNvcHlpbmcgcmF0aGVyIHRoYW4KICAgc3ltbGlua2luZy4KIAotLSBJc3N1ZSAjMTQ3MTA6IHBrZ3V0aWwuZ2V0X2xvYWRlcigpIG5vIGxvbmdlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gTm9uZSBpcwotICBmb3VuZCBpbiBzeXMubW9kdWxlcy4KKy0gSXNzdWUgIzIwMTk3OiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgV2ViUCBpbWFnZSB0eXBlIGluIHRoZSBpbWdoZHIgbW9kdWxlLgorICBQYXRjaCBieSBGYWJyaWNlIEFuZWNoZSBhbmQgQ2xhdWRpdSBQb3BhLgogCi0tIElzc3VlICMxNDcxMDogcGtndXRpbC5maW5kX2xvYWRlcigpIG5vIGxvbmdlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gYQotICBtb2R1bGUgZG9lc24ndCBleGlzdC4KKy0gSXNzdWUgIzIxNTEzOiBTcGVlZHVwIHNvbWUgcHJvcGVydGllcyBvZiBJUCBhZGRyZXNzZXMgKElQdjRBZGRyZXNzLAorICBJUHY2QWRkcmVzcykgc3VjaCBhcyAuaXNfcHJpdmF0ZSBvciAuaXNfbXVsdGljYXN0LgogCi0tIElzc3VlICMyMTQ4MTogQXJncGFyc2UgZXF1YWxpdHkgYW5kIGluZXF1YWxpdHkgdGVzdHMgbm93IHJldHVybgotICBOb3RJbXBsZW1lbnRlZCB3aGVuIGNvbXBhcmluZyB0byBhbiB1bmtub3duIHR5cGUuCi0KLS0gSXNzdWUgIzg3NDM6IEZpeCBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gc2V0IG9iamVjdHMgYW5kIHRoZQotICBjb2xsZWN0aW9ucy5TZXQoKSBhYnN0cmFjdCBiYXNlIGNsYXNzLgotCi0tIElzc3VlICMxMzM1NTogcmFuZG9tLnRyaWFuZ3VsYXIoKSBubyBsb25nZXIgZmFpbHMgd2l0aCBhIFplcm9EaXZpc2lvbkVycm9yCi0gIHdoZW4gbG93IGVxdWFscyBoaWdoLgorLSBJc3N1ZSAjMjExMzc6IEltcHJvdmUgdGhlIHJlcHIgZm9yIHRocmVhZGluZy5Mb2NrKCkgYW5kIGl0cyB2YXJpYW50cworICBieSBzaG93aW5nIHRoZSAibG9ja2VkIiBvciAidW5sb2NrZWQiIHN0YXR1cy4gIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCiAKIC0gSXNzdWUgIzIxNTM4OiBUaGUgcGxpc3RsaWIgbW9kdWxlIG5vdyBzdXBwb3J0cyBsb2FkaW5nIG9mIGJpbmFyeSBwbGlzdCBmaWxlcwogICB3aGVuIHJlZmVyZW5jZSBvciBvZmZzZXQgc2l6ZSBpcyBub3QgYSBwb3dlciBvZiB0d28uCiAKLS0gSXNzdWUgIzIxODAxOiBWYWxpZGF0ZSB0aGF0IF9fc2lnbmF0dXJlX18gaXMgTm9uZSBvciBhbiBpbnN0YW5jZSBvZiBTaWduYXR1cmUuCistIElzc3VlICMyMTQ1NTogQWRkIGEgZGVmYXVsdCBiYWNrbG9nIHRvIHNvY2tldC5saXN0ZW4oKS4KIAotLSBJc3N1ZSAjMjE5MjM6IFByZXZlbnQgQXR0cmlidXRlRXJyb3IgaW4gZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIKLSAgZHVlIHRvIHBvc3NpYmxlIHVuaW5pdGlhbGl6ZWQgX2NvbmZpZ192YXJzLgotCi0tIElzc3VlICMyMTMyMzogRml4IGh0dHAuc2VydmVyIHRvIGFnYWluIGhhbmRsZSBzY3JpcHRzIGluIENHSSBzdWJkaXJlY3RvcmllcywKLSAgYnJva2VuIGJ5IHRoZSBmaXggZm9yIHNlY3VyaXR5IGlzc3VlICMxOTQzNS4gIFBhdGNoIGJ5IFphY2ggQnlybmUuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjE3NjogVXBkYXRlIHRoZSBjdHlwZXMgbW9kdWxlJ3MgbGliZmZpIHRvIHYzLjEuICBUaGlzIHJlbGVhc2UKLSAgYWRkcyBzdXBwb3J0IGZvciB0aGUgTGludXggQUFyY2g2NCBhbmQgUE9XRVJQQyBFTEYgQUJJdjIgbGl0dGxlIGVuZGlhbgotICBhcmNoaXRlY3R1cmVzLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU2NjE6IHB5dGhvbi5vcmcgT1MgWCBpbnN0YWxsZXJzIGFyZSBub3cgZGlzdHJpYnV0ZWQgYXMgc2lnbmVkCi0gIGluc3RhbGxlciBwYWNrYWdlcyBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZS4KLQotLSBJc3N1ZSAjMjE5NTg6IERlZmluZSBIQVZFX1JPVU5EIHdoZW4gYnVpbGRpbmcgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTMgYW5kCi0gIGFib3ZlLiAgUGF0Y2ggYnkgWmFjaGFyeSBUdXJuZXIuCi0KLS0gSXNzdWUgIzE1NzU5OiAibWFrZSBzdXNwaWNpb3VzIiwgIm1ha2UgbGlua2NoZWNrIiBhbmQgIm1ha2UgZG9jdGVzdCIgaW4gRG9jLwotICBub3cgZGlzcGxheSBzcGVjaWFsIG1lc3NhZ2Ugd2hlbiBhbmQgb25seSB3aGVuIHRoZXJlIGFyZSBmYWlsdXJlcy4KLQotLSBJc3N1ZSAjMTcwOTU6IEZpeCBNb2R1bGVzL1NldHVwICpzaGFyZWQqIHN1cHBvcnQuCi0KLS0gSXNzdWUgIzIxODExOiBBbnRpY2lwYXRlZCBmaXhlcyB0byBzdXBwb3J0IE9TIFggdmVyc2lvbnMgPiAxMC45LgotCi0tIElzc3VlICMyMTE2NjogUHJldmVudCBwb3NzaWJsZSBzZWdmYXVsdHMgYW5kIG90aGVyIHJhbmRvbSBmYWlsdXJlcyBvZgotICBweXRob24gLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHB5YnVpbGRkaXIudHh0IGJ1aWxkIHRhcmdldC4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNzM5MDogQWRqdXN0IEVkaXRvciB3aW5kb3cgdGl0bGU7IHJlbW92ZSAnUHl0aG9uJywKLSAgbW92ZSB2ZXJzaW9uIHRvIGVuZC4KLQotLSBJc3N1ZSAjMTQxMDU6IElkbGUgZGVidWdnZXIgYnJlYWtwb2ludHMgbm8gbG9uZ2VyIGRpc2FwcGVhcgotICB3aGVuIGluc2V0aW5nIG9yIGRlbGV0aW5nIGxpbmVzLgotCi0tIElzc3VlICMxNzE3MjogVHVydGxlZGVtbyBjYW4gbm93IGJlIHJ1biBmcm9tIElkbGUuCi0gIEN1cnJlbnRseSwgdGhlIGVudHJ5IGlzIG9uIHRoZSBIZWxwIG1lbnUsIGJ1dCBpdCBtYXkgbW92ZSB0byBSdW4uCi0gIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0IGFuZCBMaXRhIENoby4KLQotLSBJc3N1ZSAjMjE3NjU6IEFkZCBzdXBwb3J0IGZvciBub24tYXNjaWkgaWRlbnRpZmllcnMgdG8gSHlwZXJQYXJzZXIuCi0KLS0gSXNzdWUgIzIxOTQwOiBBZGQgdW5pdHRlc3QgZm9yIFdpZGdldFJlZGlyZWN0b3IuIEluaXRpYWwgcGF0Y2ggYnkgU2FpbWFkaGF2Ci0gIEhlYmxpa2FyLgotCi0tIElzc3VlICMxODU5MjogQWRkIHVuaXR0ZXN0IGZvciBTZWFyY2hEaWFsb2dCYXNlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLS0gSXNzdWUgIzIxNjk0OiBBZGQgdW5pdHRlc3QgZm9yIFBhcmVuTWF0Y2guIFBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMjE2ODY6IGFkZCB1bml0dGVzdCBmb3IgSHlwZXJQYXJzZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdgotICBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTIzODc6IEFkZCBtaXNzaW5nIHVwcGVyKGxvd2VyKWNhc2UgdmVyc2lvbnMgb2YgZGVmYXVsdCBXaW5kb3dzIGtleQotICBiaW5kaW5ncyBmb3IgSWRsZSBzbyBDYXBzIExvY2sgZG9lcyBub3QgZGlzYWJsZSB0aGVtLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjMjE2OTU6IENsb3NpbmcgYSBGaW5kLWluLWZpbGVzIG91dHB1dCB3aW5kb3cgd2hpbGUgdGhlIHNlYXJjaCBpcwotICBzdGlsbCBpbiBwcm9ncmVzcyBubyBsb25nZXIgY2xvc2VzIElkbGUuCi0KLS0gSXNzdWUgIzE4OTEwOiBBZGQgdW5pdHRlc3QgZm9yIHRleHRWaWV3LiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLS0gSXNzdWUgIzE4MjkyOiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9FeHBhbmQuIFBhdGNoIGJ5IFNhaWhhZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTg0MDk6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0NvbXBsZXRlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMjE1MjU6IE1vc3QgVGtpbnRlciBtZXRob2RzIHdoaWNoIGFjY2VwdGVkIHR1cGxlcyBub3cgYWNjZXB0IGxpc3RzIHRvby4KIAogLSBJc3N1ZSAjMjIxNjY6IFdpdGggdGhlIGFzc2lzdGFuY2Ugb2YgYSBuZXcgaW50ZXJuYWwgX2NvZGVjcy5fZm9yZ2V0X2NvZGVjCiAgIGhlbHBpbmcgZnVuY3Rpb24sIHRlc3RfY29kZWNzIG5vdyBjbGVhcnMgdGhlIGVuY29kaW5nIGNhY2hlcyB0byBhdm9pZCB0aGUKQEAgLTEzNDYsMTgxICsyNDU5LDkzIEBACiAtIElzc3VlICMyMjIzNjogVGtpbnRlciB0ZXN0cyBub3cgZG9uJ3QgcmV1c2UgZGVmYXVsdCByb290IHdpbmRvdy4gIE5ldyByb290CiAgIHdpbmRvdyBpcyBjcmVhdGVkIGZvciBldmVyeSB0ZXN0IGNsYXNzLgogCi0tIElzc3VlICMyMDc0NjogRml4IHRlc3RfcGRiIHRvIHJ1biBpbiByZWZsZWFrIG1vZGUgKC1SKS4gIFBhdGNoIGJ5IFhhdmllcgotICBkZSBHYXllLgotCi0tIElzc3VlICMyMjA2MDogdGVzdF9jdHlwZXMgaGFzIGJlZW4gc29tZXdoYXQgY2xlYW5lZCB1cCBhbmQgc2ltcGxpZmllZDsgaXQKLSAgbm93IHVzZXMgdW5pdHRlc3QgdGVzdCBkaXNjb3ZlcnkgdG8gZmluZCBpdHMgdGVzdHMuCi0KLS0gSXNzdWUgIzIyMTA0OiByZWdydGVzdC5weSBubyBsb25nZXIgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHN1aXRlIG9mIHRlc3RzCi0gIGxvYWRlZCBmcm9tIHRlc3QgbW9kdWxlcyB0aGF0IGRvbid0IGRlZmluZSB0ZXN0X21haW4oKS4KLQotLSBJc3N1ZSAjMjIwMDI6IEFkZGVkIGBgbG9hZF9wYWNrYWdlX3Rlc3RzYGAgZnVuY3Rpb24gdG8gdGVzdC5zdXBwb3J0IGFuZCB1c2VkCi0gIGl0IHRvIGltcGxlbWVudC9hdWdtZW50IHRlc3QgZGlzY292ZXJ5IGluIHRlc3RfYXN5bmNpbywgdGVzdF9lbWFpbCwKLSAgdGVzdF9pbXBvcnRsaWIsIHRlc3RfanNvbiwgYW5kIHRlc3RfdG9vbHMuCi0KLS0gSXNzdWUgIzIxOTc2OiBGaXggdGVzdF9zc2wgdG8gYWNjZXB0IExpYnJlU1NMIHZlcnNpb24gc3RyaW5ncy4gIFRoYW5rcwotICB0byBXaWxsaWFtIE9yci4KLQotLSBJc3N1ZSAjMjE5MTg6IENvbnZlcnRlZCB0ZXN0X3Rvb2xzIGZyb20gYSBtb2R1bGUgdG8gYSBwYWNrYWdlIGNvbnRhaW5pbmcKLSAgc2VwYXJhdGUgdGVzdCBmaWxlcyBmb3IgZWFjaCB0ZXN0ZWQgc2NyaXB0LgotCi0tIElzc3VlICMyMDE1NTogQ2hhbmdlZCBIVFRQIG1ldGhvZCBuYW1lcyBpbiBmYWlsaW5nIHRlc3RzIGluIHRlc3RfaHR0cHNlcnZlcnMKLSAgc28gdGhhdCBwYWNrZXQgZmlsdGVyaW5nIHNvZnR3YXJlIChzcGVjaWZpY2FsbHkgV2luZG93cyBCYXNlIEZpbHRlcmluZyBFbmdpbmUpCi0gIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3MgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgotCi0tIElzc3VlICMxOTQ5MzogUmVmYWN0b3JlZCB0aGUgY3R5cGVzIHRlc3QgcGFja2FnZSB0byBza2lwIHRlc3RzIGV4cGxpY2l0bHkKLSAgcmF0aGVyIHRoYW4gc2lsZW50bHkuCi0KLS0gSXNzdWUgIzE4NDkyOiBBbGwgcmVzb3VyY2VzIGFyZSBub3cgYWxsb3dlZCB3aGVuIHRlc3RzIGFyZSBub3QgcnVuIGJ5Ci0gIHJlZ3J0ZXN0LnB5LgotCi0tIElzc3VlICMyMTYzNDogRml4IHB5c3RvbmUgbWljcm8tYmVuY2htYXJrOiB1c2UgZmxvb3IgZGl2aXNpb24gaW5zdGVhZCBvZiB0cnVlCi0gIGRpdmlzaW9uIHRvIGJlbmNobWFyayBpbnRlZ2VycyBpbnN0ZWFkIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFNldCBweXN0b25lCi0gIHZlcnNpb24gdG8gMS4yLiBQYXRjaCB3cml0dGVuIGJ5IExlbm5hcnQgUmVnZWJyby4KLQotLSBJc3N1ZSAjMjE2MDU6IEFkZGVkIHRlc3RzIGZvciBUa2ludGVyIGltYWdlcy4KLQotLSBJc3N1ZSAjMjE0OTM6IEFkZGVkIHRlc3QgZm9yIG50cGF0aC5leHBhbmR1c2VyKCkuICBPcmlnaW5hbCBwYXRjaCBieQotICBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzE5OTI1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHNwd2QgbW9kdWxlLiBPcmlnaW5hbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzIxNTIyOiBBZGRlZCBUa2ludGVyIHRlc3RzIGZvciBMaXN0Ym94Lml0ZW1jb25maWd1cmUoKSwKLSAgUGFuZWRXaW5kb3cucGFuZWNvbmZpZ3VyZSgpLCBhbmQgTWVudS5lbnRyeWNvbmZpZ3VyZSgpLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxNzc3OiBUaGUgYmluYXJ5IHNlcXVlbmNlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBhcmUgbm93Ci0gIGRvY3VtZW50ZWQgZXhwbGljaXRseSwgcmF0aGVyIHRoYW4gYXNzdW1pbmcgdXNlcnMgd2lsbCBiZSBhYmxlIHRvIGRlcml2ZQotICB0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyIGZyb20gdGhlIGJlaGF2aW91ciBvZiB0aGUgY29ycmVzcG9uZGluZyBzdHIgbWV0aG9kcy4KLQotV2luZG93cwotLS0tLS0tLQotCi0tIElzc3VlICMyMTY3MSwgIzIyMTYwLCBDVkUtMjAxNC0wMjI0OiBUaGUgYnVuZGxlZCB2ZXJzaW9uIG9mIE9wZW5TU0wgaGFzIGJlZW4KLSAgdXBkYXRlZCB0byAxLjAuMWkuCi0KLS0gSXNzdWUgIzEwNzQ3OiBVc2UgdmVyc2lvbmVkIGxhYmVscyBpbiB0aGUgV2luZG93cyBzdGFydCBtZW51LgotICBQYXRjaCBieSBPbGl2ZSBLaWxidXJuLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIyMDE6IENvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb2YgdGhlIHppcGZpbGUgbW9kdWxlIG5vdyBjb3JyZWN0bHkKLSAgZXh0cmFjdHMgWklQIGZpbGVzIHdpdGggZGlyZWN0b3J5IGVudHJpZXMuICBQYXRjaCBieSBSeWFuIFdpbHNvbi4KLQotLSBJc3N1ZSAjMjE5MDY6IE1ha2UgVG9vbHMvc2NyaXB0cy9tZDVzdW0ucHkgd29yayBpbiBQeXRob24gMy4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMyMTYyOTogRml4IEFyZ3VtZW50IENsaW5pYydzICItLWNvbnZlcnRlcnMiIGZlYXR1cmUuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy40LjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE0LTA1LTE4Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMTQxODogRml4IGEgY3Jhc2ggaW4gdGhlIGJ1aWx0aW4gZnVuY3Rpb24gc3VwZXIoKSB3aGVuIGNhbGxlZCB3aXRob3V0Ci0gIGFyZ3VtZW50IGFuZCB3aXRob3V0IGN1cnJlbnQgZnJhbWUgKGV4OiBlbWJlZGRlZCBQeXRob24pLgotCi0tIElzc3VlICMyMTQyNTogRml4IGZsdXNoaW5nIG9mIHN0YW5kYXJkIHN0cmVhbXMgaW4gdGhlIGludGVyYWN0aXZlCi0gIGludGVycHJldGVyLgotCi0tIElzc3VlICMyMTQzNTogSW4gcmFyZSBjYXNlcywgd2hlbiBydW5uaW5nIGZpbmFsaXplcnMgb24gb2JqZWN0cyBpbiBjeWNsaWMKLSAgdHJhc2ggYSBiYWQgcG9pbnRlciBkZXJlZmVyZW5jZSBjb3VsZCBvY2N1ciBkdWUgdG8gYSBzdWJ0bGUgZmxhdyBpbgotICBpbnRlcm5hbCBpdGVyYXRpb24gbG9naWMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQogLSBJc3N1ZSAjMTA3NDQ6IEZpeCBQRVAgMzExOCBmb3JtYXQgc3RyaW5ncyBvbiBjdHlwZXMgb2JqZWN0cyB3aXRoIGEgbm9udHJpdmlhbAogICBzaGFwZS4KIAorLSBJc3N1ZSAjMjA4MjY6IE9wdGltaXplIGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoKS4KKworLSBJc3N1ZSAjMjE0ODc6IE9wdGltaXplIGlwYWRkcmVzcy5zdW1tYXJpemVfYWRkcmVzc19yYW5nZSgpIGFuZAorICBpcGFkZHJlc3Mue0lQdjROZXR3b3JrLElQdjZOZXR3b3JrfS5zdWJuZXRzKCkuCisKKy0gSXNzdWUgIzIxNDg2OiBPcHRpbWl6ZSBwYXJzaW5nIG9mIG5ldG1hc2tzIGluIGlwYWRkcmVzcy5JUHY0TmV0d29yayBhbmQKKyAgaXBhZGRyZXNzLklQdjZOZXR3b3JrLgorCistIElzc3VlICMxMzkxNjogRGlzYWxsb3dlZCB0aGUgc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyIGZvciBub24gVVRGLSoKKyAgZW5jb2RpbmdzLgorCiAtIElzc3VlICMyMDk5ODogRml4ZWQgcmUuZnVsbG1hdGNoKCkgb2YgcmVwZWF0ZWQgc2luZ2xlIGNoYXJhY3RlciBwYXR0ZXJuCiAgIHdpdGggaWdub3JlIGNhc2UuICBPcmlnaW5hbCBwYXRjaCBieSBNYXR0aGV3IEJhcm5ldHQuCiAKIC0gSXNzdWUgIzIxMDc1OiBmaWxlaW5wdXQuRmlsZUlucHV0IG5vdyByZWFkcyBieXRlcyBmcm9tIHN0YW5kYXJkIHN0cmVhbSBpZgogICBiaW5hcnkgbW9kZSBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBTYW0gS2ltYnJlbC4KIAotLSBJc3N1ZSAjMjEzOTY6IEZpeCBUZXh0SU9XcmFwcGVyKC4uLiwgd3JpdGVfdGhyb3VnaD1UcnVlKSB0byBub3QgZm9yY2UgYQotICBmbHVzaCgpIG9uIHRoZSB1bmRlcmx5aW5nIGJpbmFyeSBzdHJlYW0uICBQYXRjaCBieSBha2lyYS4KKy0gSXNzdWUgIzE5Nzc1OiBBZGQgYSBzYW1lZmlsZSgpIG1ldGhvZCB0byBwYXRobGliIFBhdGggb2JqZWN0cy4gIEluaXRpYWwKKyAgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgogCi0tIElzc3VlICMyMTQ3MDogRG8gYSBiZXR0ZXIgam9iIHNlZWRpbmcgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGJ5Ci0gIHVzaW5nIGVub3VnaCBieXRlcyB0byBzcGFuIHRoZSBmdWxsIHN0YXRlIHNwYWNlIG9mIHRoZSBNZXJzZW5uZSBUd2lzdGVyLgorLSBJc3N1ZSAjMjEyMjY6IFNldCB1cCBtb2R1bGVzIHByb3Blcmx5IGluIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0CisgIChhbmQgZnJpZW5kcykuCiAKIC0gSXNzdWUgIzIxMzk4OiBGaXggYW4gdW5pY29kZSBlcnJvciBpbiB0aGUgcHlkb2MgcGFnZXIgd2hlbiB0aGUgZG9jdW1lbnRhdGlvbgogICBjb250YWlucyBjaGFyYWN0ZXJzIG5vdCBlbmNvZGFibGUgdG8gdGhlIHN0ZG91dCBlbmNvZGluZy4KIAotVGVzdHMKLS0tLS0tCistIElzc3VlICMxNjUzMTogaXBhZGRyZXNzLklQdjROZXR3b3JrIGFuZCBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsgbm93IGFjY2VwdAorICBhbiAoYWRkcmVzcywgbmV0bWFzaykgdHVwbGUgYXJndW1lbnQsIHNvIGFzIHRvIGVhc2lseSBjb25zdHJ1Y3QgbmV0d29yaworICBvYmplY3RzIGZyb20gZXhpc3RpbmcgYWRkcmVzc2VzLgogCi0tIElzc3VlICMxNzc1NjogRml4IHRlc3RfY29kZSB0ZXN0IHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKy0gSXNzdWUgIzIxMTU2OiBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXIuc291cmNlX3RvX2NvZGUoKSBpcyBub3cgYQorICBzdGF0aWNtZXRob2QuCiAKLS0gSXNzdWUgIzE3NzUyOiBGaXggZGlzdHV0aWxzIHRlc3RzIHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKy0gSXNzdWUgIzIxNDI0OiBTaW1wbGlmaWVkIGFuZCBvcHRpbWl6ZWQgaGVhcXAubmxhcmdlc3QoKSBhbmQgbm1zbWFsbGVzdCgpCisgIHRvIG1ha2UgZmV3ZXIgdHVwbGUgY29tcGFyaXNvbnMuCiAKLUlETEUKLS0tLS0KKy0gSXNzdWUgIzIxMzk2OiBGaXggVGV4dElPV3JhcHBlciguLi4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSkgdG8gbm90IGZvcmNlIGEKKyAgZmx1c2goKSBvbiB0aGUgdW5kZXJseWluZyBiaW5hcnkgc3RyZWFtLiAgUGF0Y2ggYnkgYWtpcmEuCiAKLS0gSXNzdWUgIzE4MTA0OiBBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KLSAgY29uc29saWRhdGluZyBhbmQgaW1wcm92aW5nIGh1bWFuLXZhbGlkYXRlZCB0ZXN0cyBvZiBJZGxlLiBDaGFuZ2Ugb3RoZXIgZmlsZXMKLSAgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBodGVzdC4gIFJ1bm5pbmcgdGhlIG1vZHVsZSBhcyBfX21haW5fXyBydW5zIGFsbCB0ZXN0cy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjQuMXJjMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTQtMDUtMDUKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxMjc0OiBEZWZpbmUgUEFUSF9NQVggZm9yIEdOVS9IdXJkIGluIFB5dGhvbi9weXRob25ydW4uYy4KLQotLSBJc3N1ZSAjMjEyMDk6IEZpeCBzZW5kaW5nIHR1cGxlcyB0byBjdXN0b20gZ2VuZXJhdG9yIG9iamVjdHMgd2l0aCB0aGUgeWllbGQKLSAgZnJvbSBzeW50YXguCi0KLS0gSXNzdWUgIzIxMTM0OiBGaXggc2VnZmF1bHQgd2hlbiBzdHIgaXMgY2FsbGVkIG9uIGFuIHVuaW5pdGlhbGl6ZWQKLSAgVW5pY29kZUVuY29kZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IsIG9yIFVuaWNvZGVUcmFuc2xhdGVFcnJvciBvYmplY3QuCi0KLS0gSXNzdWUgIzE5NTM3OiBGaXggUHlVbmljb2RlX0RBVEEoKSBhbGlnbm1lbnQgdW5kZXIgbTY4ay4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU2Nod2FiLgotCi0tIElzc3VlICMyMDkyOTogQWRkIGEgdHlwZSBjYXN0IHRvIGF2b2lkIHNoaWZ0aW5nIGEgbmVnYXRpdmUgbnVtYmVyLgotCi0tIElzc3VlICMyMDczMTogUHJvcGVybHkgcG9zaXRpb24gaW4gc291cmNlIGNvZGUgZmlsZXMgZXZlbiBpZiB0aGV5Ci0gIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyMDYzNzogS2V5LXNoYXJpbmcgbm93IGFsc28gd29ya3MgZm9yIGluc3RhbmNlIGRpY3Rpb25hcmllcyBvZgotICBzdWJjbGFzc2VzLiAgUGF0Y2ggYnkgUGV0ZXIgSW5nZWJyZXRzb24uCi0KLS0gSXNzdWUgIzEyNTQ2OiBBbGxvdyBceDAwIHRvIGJlIHVzZWQgYXMgYSBmaWxsIGNoYXJhY3RlciB3aGVuIHVzaW5nIHN0ciwgaW50LAotICBmbG9hdCwgYW5kIGNvbXBsZXggX19mb3JtYXRfXyBtZXRob2RzLgotCi0tIElzc3VlICMxMzU5ODogTW9kaWZ5IHN0cmluZy5Gb3JtYXR0ZXIgdG8gc3VwcG9ydCBhdXRvLW51bWJlcmluZyBvZgotICByZXBsYWNlbWVudCBmaWVsZHMuIEl0IG5vdyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBzdHIuZm9ybWF0KCkgaW4KLSAgdGhpcyByZWdhcmQuIFBhdGNoZXMgYnkgUGhpbCBFbHNvbiBhbmQgUmFtY2hhbmRyYSBBcHRlLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxODMxNDogVW5saW5rIG5vdyByZW1vdmVzIGp1bmN0aW9ucyBvbiBXaW5kb3dzLiBQYXRjaCBieSBLaW0gR3LDpHNtYW4KIAogLSBJc3N1ZSAjMjEwODg6IEJ1Z2ZpeCBmb3IgY3Vyc2VzLndpbmRvdy5hZGRjaCgpIHJlZ3Jlc3Npb24gaW4gMy40LjAuCiAgIEluIHBvcnRpbmcgdG8gQXJndW1lbnQgQ2xpbmljLCB0aGUgZmlyc3QgdHdvIGFyZ3VtZW50cyB3ZXJlIHJldmVyc2VkLgogCistIElzc3VlICMyMTQwNzogX2RlY2ltYWw6IFRoZSBtb2R1bGUgbm93IHN1cHBvcnRzIGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKKy0gSXNzdWUgIzEwNjUwOiBSZW1vdmUgdGhlIG5vbi1zdGFuZGFyZCAnd2F0Y2hleHAnIHBhcmFtZXRlciBmcm9tIHRoZQorICBEZWNpbWFsLnF1YW50aXplKCkgbWV0aG9kIGluIHRoZSBQeXRob24gdmVyc2lvbi4gIEl0IGhhZCBuZXZlciBiZWVuCisgIHByZXNlbnQgaW4gdGhlIEMgdmVyc2lvbi4KKwogLSBJc3N1ZSAjMjE0Njk6IFJlZHVjZWQgdGhlIHJpc2sgb2YgZmFsc2UgcG9zaXRpdmVzIGluIHJvYm90cGFyc2VyIGJ5CiAgIGNoZWNraW5nIHRvIG1ha2Ugc3VyZSB0aGF0IHJvYm90cy50eHQgaGFzIGJlZW4gcmVhZCBvciBkb2VzIG5vdCBleGlzdAogICBwcmlvciB0byByZXR1cm5pbmcgVHJ1ZSBpbiBjYW5fZmV0Y2goKS4KIAorLSBJc3N1ZSAjMTk0MTQ6IEhhdmUgdGhlIE9yZGVyZWREaWN0IG1hcmsgZGVsZXRlZCBsaW5rcyBhcyB1bnVzYWJsZS4KKyAgVGhpcyBnaXZlcyBhbiBlYXJseSBmYWlsdXJlIGlmIHRoZSBsaW5rIGlzIGRlbGV0ZWQgZHVyaW5nIGl0ZXJhdGlvbi4KKworLSBJc3N1ZSAjMjE0MjE6IEFkZCBfX3Nsb3RzX18gdG8gdGhlIE1hcHBpbmdWaWV3cyBBQkMuCisgIFBhdGNoIGJ5IEpvc2ggUm9zZW5iZXJnLgorCistIElzc3VlICMyMTEwMTogRWxpbWluYXRlIGRvdWJsZSBoYXNoaW5nIGluIHRoZSBDIHNwZWVkLXVwIGNvZGUgZm9yCisgIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KKwogLSBJc3N1ZSAjMjEzMjE6IGl0ZXJ0b29scy5pc2xpY2UoKSBub3cgcmVsZWFzZXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgc291cmNlCiAgIGl0ZXJhdG9yIHdoZW4gdGhlIHNsaWNlIGlzIGV4aGF1c3RlZC4gIFBhdGNoIGJ5IEFudG9uIEFmYW5hc3lldi4KIAorLSBJc3N1ZSAjMjEwNTc6IFRleHRJT1dyYXBwZXIgbm93IGFsbG93cyB0aGUgdW5kZXJseWluZyBiaW5hcnkgc3RyZWFtJ3MKKyAgcmVhZCgpIG9yIHJlYWQxKCkgbWV0aG9kIHRvIHJldHVybiBhbiBhcmJpdHJhcnkgYnl0ZXMtbGlrZSBvYmplY3QKKyAgKHN1Y2ggYXMgYSBtZW1vcnl2aWV3KS4gIFBhdGNoIGJ5IE5pa29sYXVzIFJhdGguCisKKy0gSXNzdWUgIzIwOTUxOiBTU0xTb2NrZXQuc2VuZCgpIG5vdyByYWlzZXMgZWl0aGVyIFNTTFdhbnRSZWFkRXJyb3Igb3IKKyAgU1NMV2FudFdyaXRlRXJyb3Igb24gYSBub24tYmxvY2tpbmcgc29ja2V0IGlmIHRoZSBvcGVyYXRpb24gd291bGQgYmxvY2suCisgIFByZXZpb3VzbHksIGl0IHdvdWxkIHJldHVybiAwLiAgUGF0Y2ggYnkgTmlrb2xhdXMgUmF0aC4KKworLSBJc3N1ZSAjMTMyNDg6IHJlbW92ZWQgcHJldmlvdXNseSBkZXByZWNhdGVkIGFzeW5jb3JlLmRpc3BhdGNoZXIgX19nZXRhdHRyX18KKyAgY2hlYXAgaW5oZXJpdGFuY2UgaGFjay4KKwogLSBJc3N1ZSAjOTgxNTogYXNzZXJ0UmFpc2VzIG5vdyB0cmllcyB0byBjbGVhciByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcwogICBpbiB0aGUgZXhjZXB0aW9uJ3MgdHJhY2ViYWNrLgogCistIElzc3VlICMxOTk0MDogc3NsLmNlcnRfdGltZV90b19zZWNvbmRzKCkgbm93IGludGVycHJldHMgdGhlIGdpdmVuIHRpbWUKKyAgc3RyaW5nIGluIHRoZSBVVEMgdGltZXpvbmUgKGFzIHNwZWNpZmllZCBpbiBSRkMgNTI4MCksIG5vdCB0aGUgbG9jYWwKKyAgdGltZXpvbmUuCisKIC0gSXNzdWUgIzEzMjA0OiBDYWxsaW5nIHN5cy5mbGFncy5fX25ld19fIHdvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciwKICAgbm93IGl0IHJhaXNlcyBhIFR5cGVFcnJvci4KIApAQCAtMTU0NCw5ICsyNTY5LDI1IEBACiAtIElzc3VlICMxMjIyMDogbWluZG9tIG5vdyByYWlzZXMgYSBjdXN0b20gVmFsdWVFcnJvciBpbmRpY2F0aW5nIGl0IGRvZXNuJ3QKICAgc3VwcG9ydCBzcGFjZXMgaW4gVVJJcyBpbnN0ZWFkIG9mIGxldHRpbmcgYSAnc3BsaXQnIFZhbHVlRXJyb3IgYnViYmxlIHVwLgogCistIElzc3VlICMyMTA2ODogVGhlIHNzbC5QUk9UT0NPTCogY29uc3RhbnRzIGFyZSBub3cgZW51bSBtZW1iZXJzLgorCistIElzc3VlICMyMTI3NjogcG9zaXhtb2R1bGU6IERvbid0IGRlZmluZSBVU0VfWEFUVFJTIG9uIEtGcmVlQlNEIGFuZCB0aGUgSHVyZC4KKworLSBJc3N1ZSAjMjEyNjI6IE5ldyBtZXRob2QgYXNzZXJ0X25vdF9jYWxsZWQgZm9yIE1vY2suCisgIEl0IHJhaXNlcyBBc3NlcnRpb25FcnJvciBpZiB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQuCisKKy0gSXNzdWUgIzIxMjM4OiBOZXcga2V5d29yZCBhcmd1bWVudCBgdW5zYWZlYCB0byBNb2NrLiBJdCByYWlzZXMKKyAgYEF0dHJpYnV0ZUVycm9yYCBpbmNhc2Ugb2YgYW4gYXR0cmlidXRlIHN0YXJ0c3dpdGggYXNzZXJ0IG9yIGFzc3JldC4KKworLSBJc3N1ZSAjMjA4OTY6IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCkgbm93IHVzZXMgUFJPVE9DT0xfU1NMdjIzLCBub3QKKyAgUFJPVE9DT0xfU1NMdjMsIGZvciBtYXhpbXVtIGNvbXBhdGliaWxpdHkuCisKIC0gSXNzdWUgIzIxMjM5OiBwYXRjaC5zdG9wYWxsKCkgZGlkbid0IHdvcmsgZGV0ZXJtaW5pc3RpY2FsbHkgd2hlbiB0aGUgc2FtZQogICBuYW1lIHdhcyBwYXRjaGVkIG1vcmUgdGhhbiBvbmNlLgogCistIElzc3VlICMyMTIwMzogVXBkYXRlZCBmaWxlQ29uZmlnIGFuZCBkaWN0Q29uZmlnIHRvIHJlbW92ZSBpbmNvbnNpc3RlbmNpZXMuCisgIFRoYW5rcyB0byBKdXJlIEtvcmVuIGZvciB0aGUgcGF0Y2guCisKIC0gSXNzdWUgIzIxMjIyOiBQYXNzaW5nIG5hbWUga2V5d29yZCBhcmd1bWVudCB0byBtb2NrLmNyZWF0ZV9hdXRvc3BlYyBub3cKICAgd29ya3MuCiAKQEAgLTE1NzYsMTcgKzI2MTcsMzEgQEAKIC0gSXNzdWUgIzIxMTcxOiBGaXhlZCB1bmRvY3VtZW50ZWQgZmlsdGVyIEFQSSBvZiB0aGUgcm90MTMgY29kZWMuCiAgIFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuCiAKKy0gSXNzdWUgIzIwNTM5OiBJbXByb3ZlZCBtYXRoLmZhY3RvcmlhbCBlcnJvciBtZXNzYWdlIGZvciBsYXJnZSBwb3NpdGl2ZSBpbnB1dHMKKyAgYW5kIGNoYW5nZWQgZXhjZXB0aW9uIHR5cGUgKE92ZXJmbG93RXJyb3IgLT4gVmFsdWVFcnJvcikgZm9yIGxhcmdlIG5lZ2F0aXZlCisgIGlucHV0cy4KKwogLSBJc3N1ZSAjMjExNzI6IGlzaW5zdGFuY2UgY2hlY2sgcmVsYXhlZCBmcm9tIGRpY3QgdG8gY29sbGVjdGlvbnMuTWFwcGluZy4KIAogLSBJc3N1ZSAjMjExNTU6IGFzeW5jaW8uRXZlbnRMb29wLmNyZWF0ZV91bml4X3NlcnZlcigpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yCiAgIGlmIHBhdGggYW5kIHNvY2sgYXJlIHNwZWNpZmllZCBhdCB0aGUgc2FtZSB0aW1lLgogCistIElzc3VlICMyMTEzNjogQXZvaWQgdW5uZWNlc3Nhcnkgbm9ybWFsaXphdGlvbiBvZiBGcmFjdGlvbnMgcmVzdWx0aW5nIGZyb20KKyAgcG93ZXIgYW5kIG90aGVyIG9wZXJhdGlvbnMuICBQYXRjaCBieSBSYXltb25kIEhldHRpbmdlci4KKworLSBJc3N1ZSAjMTc2MjE6IEludHJvZHVjZSBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLgorCistIElzc3VlICMyMTA3Njogc2lnbmFsIG1vZHVsZSBjb25zdGFudHMgd2VyZSB0dXJuZWQgaW50byBlbnVtcy4KKyAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCisKKy0gSXNzdWUgIzIwNjM2OiBJbXByb3ZlZCB0aGUgcmVwciBvZiBUa2ludGVyIHdpZGdldHMuCisKKy0gSXNzdWUgIzE5NTA1OiBUaGUgaXRlbXMsIGtleXMsIGFuZCB2YWx1ZXMgdmlld3Mgb2YgT3JkZXJlZERpY3Qgbm93IHN1cHBvcnQKKyAgcmV2ZXJzZSBpdGVyYXRpb24gdXNpbmcgcmV2ZXJzZWQoKS4KKwogLSBJc3N1ZSAjMjExNDk6IEltcHJvdmVkIHRocmVhZC1zYWZldHkgaW4gbG9nZ2luZyBjbGVhbnVwIGR1cmluZyBpbnRlcnByZXRlcgogICBzaHV0ZG93bi4gVGhhbmtzIHRvIERldmluIEplYW5waWVycmUgZm9yIHRoZSBwYXRjaC4KIAotLSBJc3N1ZSAjMjAxNDU6IGBhc3NlcnRSYWlzZXNSZWdleGAgYW5kIGBhc3NlcnRXYXJuc1JlZ2V4YCBub3cgcmFpc2UgYQotICBUeXBlRXJyb3IgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBub3QgYSBzdHJpbmcgb3IgY29tcGlsZWQgcmVnZXguCi0KIC0gSXNzdWUgIzIxMDU4OiBGaXggYSBsZWFrIG9mIGZpbGUgZGVzY3JpcHRvciBpbgogICA6ZnVuYzpgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlYCwgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBpZgogICA6ZnVuYzpgaW8ub3BlbmAgZmFpbHMKQEAgLTE1OTYsNiArMjY1MSw5IEBACiAtIElzc3VlICMyMTAxMzogRW5oYW5jZSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpIHdoZW4gdXNlZCBmb3Igc2VydmVyIHNpZGUKICAgc29ja2V0cyB0byBwcm92aWRlIGJldHRlciBzZWN1cml0eSBieSBkZWZhdWx0LgogCistIElzc3VlICMyMDE0NTogYGFzc2VydFJhaXNlc1JlZ2V4YCBhbmQgYGFzc2VydFdhcm5zUmVnZXhgIG5vdyByYWlzZSBhCisgIFR5cGVFcnJvciBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5vdCBhIHN0cmluZyBvciBjb21waWxlZCByZWdleC4KKwogLSBJc3N1ZSAjMjA2MzM6IFJlcGxhY2UgcmVsYXRpdmUgaW1wb3J0IGJ5IGFic29sdXRlIGltcG9ydC4KIAogLSBJc3N1ZSAjMjA5ODA6IFN0b3Agd3JhcHBpbmcgZXhjZXB0aW9uIHdoZW4gdXNpbmcgVGhyZWFkUG9vbC4KQEAgLTE2MDksNiArMjY2Nyw4IEBACiAgIGN1cnZlIGZvciBFQ0RIIGtleSBleGNoYW5nZSBvbiBPcGVuU1NMIDEuMC4yIGFuZCBsYXRlciwgYW5kIG90aGVyd2lzZQogICBkZWZhdWx0IHRvICJwcmltZTI1NnYxIi4KIAorLSBJc3N1ZSAjMjEwMDA6IEltcHJvdmUgdGhlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb2YganNvbi50b29sLgorCiAtIElzc3VlICMyMDk5NTogRW5oYW5jZSBkZWZhdWx0IGNpcGhlcnMgdXNlZCBieSB0aGUgc3NsIG1vZHVsZSB0byBlbmFibGUKICAgYmV0dGVyIHNlY3VyaXR5IGFuIHByaW9yaXRpemUgcGVyZmVjdCBmb3J3YXJkIHNlY3JlY3kuCiAKQEAgLTE2MTYsNiArMjY3NiwyNCBAQAogCiAtIElzc3VlICMyMTQ5OTogSWdub3JlIF9fYnVpbHRpbnNfXyBpbiBzZXZlcmFsIHRlc3RfaW1wb3J0bGliLnRlc3RfYXBpIHRlc3RzLgogCistIElzc3VlICMyMDYyNzogeG1scnBjLmNsaWVudC5TZXJ2ZXJQcm94eSBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIuCisKKy0gSXNzdWUgIzE5MTY1OiBUaGUgZm9ybWF0dGVyIG1vZHVsZSBub3cgcmFpc2VzIERlcHJlY2F0aW9uV2FybmluZyBpbnN0ZWFkIG9mCisgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisKKy0gSXNzdWUgIzEzOTM2OiBSZW1vdmUgdGhlIGFiaWxpdHkgb2YgZGF0ZXRpbWUudGltZSBpbnN0YW5jZXMgdG8gYmUgY29uc2lkZXJlZAorICBmYWxzZSBpbiBib29sZWFuIGNvbnRleHRzLgorCistIElzc3VlICMxODkzMTogc2VsZWN0b3JzIG1vZHVsZSBub3cgc3VwcG9ydHMgL2Rldi9wb2xsIG9uIFNvbGFyaXMuCisgIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCistIElzc3VlICMxOTk3NzogV2hlbiB0aGUgYGBMQ19UWVBFYGAgbG9jYWxlIGlzIHRoZSBQT1NJWCBsb2NhbGUgKGBgQ2BgIGxvY2FsZSksCisgIDpweTpkYXRhOmBzeXMuc3RkaW5gIGFuZCA6cHk6ZGF0YTpgc3lzLnN0ZG91dGAgYXJlIG5vdyB1c2luZyB0aGUKKyAgYGBzdXJyb2dhdGVlc2NhcGVgYCBlcnJvciBoYW5kbGVyLCBpbnN0ZWFkIG9mIHRoZSBgYHN0cmljdGBgIGVycm9yIGhhbmRsZXIuCisKKy0gSXNzdWUgIzIwNTc0OiBJbXBsZW1lbnQgaW5jcmVtZW50YWwgZGVjb2RlciBmb3IgY3A2NTAwMSBjb2RlIChXaW5kb3dzIGNvZGUKKyAgcGFnZSA2NTAwMSwgTWljcm9zb2Z0IFVURi04KS4KKwogLSBJc3N1ZSAjMjA4Nzk6IERlbGF5IHRoZSBpbml0aWFsaXphdGlvbiBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdGFibGVzIGZvcgogICBiYXNlMzIsIGFzY2lpODUgYW5kIGJhc2U4NSBjb2RlY3MgaW4gdGhlIGJhc2U2NCBtb2R1bGUsIGFuZCBkZWxheSB0aGUKICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHVucXVvdGVfdG9fYnl0ZXMoKSB0YWJsZSBvZiB0aGUgdXJsbGliLnBhcnNlIG1vZHVsZSwgdG8KQEAgLTE2NTAsNiArMjcyOCwxNCBAQAogLSBJc3N1ZSAjMTk3NDg6IE9uIEFJWCwgdGltZS5ta3RpbWUoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IgZm9yIHllYXIKICAgb3V0c2l6ZSByYW5nZSBbMTkwMjsgMjAzN10uCiAKKy0gSXNzdWUgIzE5NTczOiBpbnNwZWN0LnNpZ25hdHVyZTogVXNlIGVudW0gZm9yIHBhcmFtZXRlciBraW5kIGNvbnN0YW50cy4KKworLSBJc3N1ZSAjMjA3MjY6IGluc3BlY3Quc2lnbmF0dXJlOiBNYWtlIFNpZ25hdHVyZSBhbmQgUGFyYW1ldGVyIHBpY2tsYWJsZS4KKworLSBJc3N1ZSAjMTczNzM6IEFkZCBpbnNwZWN0LlNpZ25hdHVyZS5mcm9tX2NhbGxhYmxlIG1ldGhvZC4KKworLSBJc3N1ZSAjMjAzNzg6IEltcHJvdmUgcmVwciBvZiBpbnNwZWN0LlNpZ25hdHVyZSBhbmQgaW5zcGVjdC5QYXJhbWV0ZXIuCisKIC0gSXNzdWUgIzIwODE2OiBGaXggaW5zcGVjdC5nZXRjYWxsYXJncygpIHRvIHJhaXNlIGNvcnJlY3QgVHlwZUVycm9yIGZvcgogICBtaXNzaW5nIGtleXdvcmQtb25seSBhcmd1bWVudHMuIFBhdGNoIGJ5IEplcmVtaWFoIExvd2luLgogCkBAIC0xNjY2LDYgKzI3NTIsMTIgQEAKICAgcG9zaXRpb25hbC1vci1rZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgYXMga2V5d29yZCBhcmd1bWVudHMgYmVjb21lCiAgIGtleXdvcmQtb25seS4KIAorLSBJc3N1ZSAjMjAzMzQ6IGluc3BlY3QuU2lnbmF0dXJlIGFuZCBpbnNwZWN0LlBhcmFtZXRlciBhcmUgbm93IGhhc2hhYmxlLgorICBUaGFua3MgdG8gQW50b255IExlZSBmb3IgYnVnIHJlcG9ydHMgYW5kIHN1Z2dlc3Rpb25zLgorCistIElzc3VlICMxNTkxNjogZG9jdGVzdC5Eb2NUZXN0U3VpdGUgcmV0dXJucyBhbiBlbXB0eSB1bml0dGVzdC5UZXN0U3VpdGUgaW5zdGVhZAorICBvZiByYWlzaW5nIFZhbHVlRXJyb3IgaWYgaXQgZmluZHMgbm8gdGVzdHMKKwogLSBJc3N1ZSAjMjEyMDk6IEZpeCBhc3luY2lvLnRhc2tzLkNvcm9XcmFwcGVyIHRvIHdvcmthcm91bmQgYSBidWcKICAgaW4geWllbGQtZnJvbSBpbXBsZW1lbnRhdGlvbiBpbiBDUHl0aG9ucyBwcmlvciB0byAzLjQuMS4KIApAQCAtMTY3OCwxNyArMjc3MCw5MCBAQAogLSBJc3N1ZSAjMTE1NzE6IEVuc3VyZSB0aGF0IHRoZSB0dXJ0bGUgd2luZG93IGJlY29tZXMgdGhlIHRvcG1vc3Qgd2luZG93CiAgIHdoZW4gbGF1bmNoZWQgb24gT1MgWC4KIAotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCistIElzc3VlICMyMTgwMTogVmFsaWRhdGUgdGhhdCBfX3NpZ25hdHVyZV9fIGlzIE5vbmUgb3IgYW4gaW5zdGFuY2Ugb2YgU2lnbmF0dXJlLgogCi0tIElzc3VlICMyMTI3NjogcG9zaXhtb2R1bGU6IERvbid0IGRlZmluZSBVU0VfWEFUVFJTIG9uIEtGcmVlQlNEIGFuZCB0aGUgSHVyZC4KKy0gSXNzdWUgIzIxOTIzOiBQcmV2ZW50IEF0dHJpYnV0ZUVycm9yIGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyCisgIGR1ZSB0byBwb3NzaWJsZSB1bmluaXRpYWxpemVkIF9jb25maWdfdmFycy4KIAotLSBJc3N1ZSAjMjEyMjY6IFNldCB1cCBtb2R1bGVzIHByb3Blcmx5IGluIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0Ci0gIChhbmQgZnJpZW5kcykuCistIElzc3VlICMyMTMyMzogRml4IGh0dHAuc2VydmVyIHRvIGFnYWluIGhhbmRsZSBzY3JpcHRzIGluIENHSSBzdWJkaXJlY3RvcmllcywKKyAgYnJva2VuIGJ5IHRoZSBmaXggZm9yIHNlY3VyaXR5IGlzc3VlICMxOTQzNS4gIFBhdGNoIGJ5IFphY2ggQnlybmUuCisKKy0gSXNzdWUgIzIyNzMzOiBGaXggZmZpX3ByZXBfYXJncyBub3QgemVyby1leHRlbmRpbmcgYXJndW1lbnQgdmFsdWVzIGNvcnJlY3RseQorICBvbiA2NC1iaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMjMzMDI6IERlZmF1bHQgdG8gVENQX05PREVMQVk9MSB1cG9uIGVzdGFibGlzaGluZyBhbiBIVFRQQ29ubmVjdGlvbi4KKyAgUmVtb3ZlZCB1c2Ugb2YgaGFyZC1jb2RlZCBNU1MgYXMgaXQncyBhbiBvcHRpbWl6YXRpb24gdGhhdCdzIG5vIGxvbmdlciBuZWVkZWQKKyAgd2l0aCBOYWdsZSBkaXNhYmxlZC4KIAogSURMRQogLS0tLQogCistIElzc3VlICMyMDU3NzogQ29uZmlndXJhdGlvbiBvZiB0aGUgbWF4IGxpbmUgbGVuZ3RoIGZvciB0aGUgRm9ybWF0UGFyYWdyYXBoCisgIGV4dGVuc2lvbiBoYXMgYmVlbiBtb3ZlZCBmcm9tIHRoZSBHZW5lcmFsIHRhYiBvZiB0aGUgSWRsZSBwcmVmZXJlbmNlcyBkaWFsb2cKKyAgdG8gdGhlIEZvcm1hdFBhcmFncmFwaCB0YWIgb2YgdGhlIENvbmZpZyBFeHRlbnNpb25zIGRpYWxvZy4KKyAgUGF0Y2ggYnkgVGFsIEVpbmF0LgorCistIElzc3VlICMxNjg5MzogVXBkYXRlIElkbGUgZG9jIGNoYXB0ZXIgdG8gbWF0Y2ggY3VycmVudCBJZGxlIGFuZCBhZGQgbmV3CisgIGluZm9ybWF0aW9uLgorCistIElzc3VlICMzMDY4OiBBZGQgSWRsZSBleHRlbnNpb24gY29uZmlndXJhdGlvbiBkaWFsb2cgdG8gT3B0aW9ucyBtZW51LgorICBDaGFuZ2VzIGFyZSB3cml0dGVuIHRvIEhPTUUvLmlkbGVyYy9jb25maWctZXh0ZW5zaW9ucy5jZmcuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFRhbCBFaW5hdC4KKworLSBJc3N1ZSAjMTYyMzM6IEEgbW9kdWxlIGJyb3dzZXIgKEZpbGUgOiBDbGFzcyBCcm93c2VyLCBBbHQrQykgcmVxdWlyZXMgYQorICBlZGl0b3Igd2luZG93IHdpdGggYSBmaWxlbmFtZS4gIFdoZW4gQ2xhc3MgQnJvd3NlciBpcyByZXF1ZXN0ZWQgb3RoZXJ3aXNlLAorICBmcm9tIGEgc2hlbGwsIG91dHB1dCB3aW5kb3csIG9yICdVbnRpdGxlZCcgZWRpdG9yLCBJZGxlIG5vIGxvbmdlciBkaXNwbGF5cworICBhbiBlcnJvciBib3guICBJdCBub3cgcG9wcyB1cCBhbiBPcGVuIE1vZHVsZSBib3ggKEFsdCtNKS4gSWYgYSB2YWxpZCBuYW1lCisgIGlzIGVudGVyZWQgYW5kIGEgbW9kdWxlIGlzIG9wZW5lZCwgYSBjb3JyZXNwb25kaW5nIGJyb3dzZXIgaXMgYWxzbyBvcGVuZWQuCisKKy0gSXNzdWUgIzQ4MzI6IFNhdmUgQXMgdG8gdHlwZSBQeXRob24gZmlsZXMgYXV0b21hdGljYWxseSBhZGRzIC5weSB0byB0aGUKKyAgbmFtZSB5b3UgZW50ZXIgKGV2ZW4gaWYgeW91ciBzeXN0ZW0gZG9lcyBub3QgZGlzcGxheSBpdCkuICBTb21lIHN5c3RlbXMKKyAgYXV0b21hdGljYWxseSBhZGQgLnR4dCB3aGVuIHR5cGUgaXMgVGV4dCBmaWxlcy4KKworLSBJc3N1ZSAjMjE5ODY6IENvZGUgb2JqZWN0cyBhcmUgbm90IG5vcm1hbGx5IHBpY2tsZWQgYnkgdGhlIHBpY2tsZSBtb2R1bGUuCisgIFRvIG1hdGNoIHRoaXMsIHRoZXkgYXJlIG5vIGxvbmdlciBwaWNrbGVkIHdoZW4gcnVubmluZyB1bmRlciBJZGxlLgorCistIElzc3VlICMxNzM5MDogQWRqdXN0IEVkaXRvciB3aW5kb3cgdGl0bGU7IHJlbW92ZSAnUHl0aG9uJywKKyAgbW92ZSB2ZXJzaW9uIHRvIGVuZC4KKworLSBJc3N1ZSAjMTQxMDU6IElkbGUgZGVidWdnZXIgYnJlYWtwb2ludHMgbm8gbG9uZ2VyIGRpc2FwcGVhcgorICB3aGVuIGluc2V0aW5nIG9yIGRlbGV0aW5nIGxpbmVzLgorCistIElzc3VlICMxNzE3MjogVHVydGxlZGVtbyBjYW4gbm93IGJlIHJ1biBmcm9tIElkbGUuCisgIEN1cnJlbnRseSwgdGhlIGVudHJ5IGlzIG9uIHRoZSBIZWxwIG1lbnUsIGJ1dCBpdCBtYXkgbW92ZSB0byBSdW4uCisgIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0IGFuZCBMaXRhIENoby4KKworLSBJc3N1ZSAjMjE3NjU6IEFkZCBzdXBwb3J0IGZvciBub24tYXNjaWkgaWRlbnRpZmllcnMgdG8gSHlwZXJQYXJzZXIuCisKKy0gSXNzdWUgIzIxOTQwOiBBZGQgdW5pdHRlc3QgZm9yIFdpZGdldFJlZGlyZWN0b3IuIEluaXRpYWwgcGF0Y2ggYnkgU2FpbWFkaGF2CisgIEhlYmxpa2FyLgorCistIElzc3VlICMxODU5MjogQWRkIHVuaXR0ZXN0IGZvciBTZWFyY2hEaWFsb2dCYXNlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCisKKy0gSXNzdWUgIzIxNjk0OiBBZGQgdW5pdHRlc3QgZm9yIFBhcmVuTWF0Y2guIFBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMjE2ODY6IGFkZCB1bml0dGVzdCBmb3IgSHlwZXJQYXJzZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdgorICBIZWJsaWthci4KKworLSBJc3N1ZSAjMTIzODc6IEFkZCBtaXNzaW5nIHVwcGVyKGxvd2VyKWNhc2UgdmVyc2lvbnMgb2YgZGVmYXVsdCBXaW5kb3dzIGtleQorICBiaW5kaW5ncyBmb3IgSWRsZSBzbyBDYXBzIExvY2sgZG9lcyBub3QgZGlzYWJsZSB0aGVtLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLSBJc3N1ZSAjMjE2OTU6IENsb3NpbmcgYSBGaW5kLWluLWZpbGVzIG91dHB1dCB3aW5kb3cgd2hpbGUgdGhlIHNlYXJjaCBpcworICBzdGlsbCBpbiBwcm9ncmVzcyBubyBsb25nZXIgY2xvc2VzIElkbGUuCisKKy0gSXNzdWUgIzE4OTEwOiBBZGQgdW5pdHRlc3QgZm9yIHRleHRWaWV3LiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCisKKy0gSXNzdWUgIzE4MjkyOiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9FeHBhbmQuIFBhdGNoIGJ5IFNhaWhhZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMTg0MDk6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0NvbXBsZXRlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCisKKy0gSXNzdWUgIzIxNDc3OiBodGVzdC5weSAtIEltcHJvdmUgZnJhbWV3b3JrLCBjb21wbGV0ZSBzZXQgb2YgdGVzdHMuCisgIFBhdGNoZXMgYnkgU2FpbWFkaGF2IEhlYmxpa2FyCisKKy0gSXNzdWUgIzE4MTA0OiBBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KKyAgY29uc29saWRhdGluZyBhbmQgaW1wcm92aW5nIGh1bWFuLXZhbGlkYXRlZCB0ZXN0cyBvZiBJZGxlLiBDaGFuZ2Ugb3RoZXIgZmlsZXMKKyAgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBodGVzdC4gIFJ1bm5pbmcgdGhlIG1vZHVsZSBhcyBfX21haW5fXyBydW5zIGFsbCB0ZXN0cy4KKwogLSBJc3N1ZSAjMjExMzk6IENoYW5nZSBkZWZhdWx0IHBhcmFncmFwaCB3aWR0aCB0byA3MiwgdGhlIFBFUCA4IHJlY29tbWVuZGF0aW9uLgogCiAtIElzc3VlICMyMTI4NDogUGFyYWdyYXBoIHJlZm9ybWF0IHRlc3QgcGFzc2VzIGFmdGVyIHVzZXIgY2hhbmdlcyByZWZvcm1hdCB3aWR0aC4KQEAgLTE2OTYsMTAgKzI4NjEsNTIgQEAKIC0gSXNzdWUgIzE3NjU0OiBFbnN1cmUgSURMRSBtZW51cyBhcmUgY3VzdG9taXplZCBwcm9wZXJseSBvbiBPUyBYIGZvcgogICBub24tZnJhbWV3b3JrIGJ1aWxkcyBhbmQgZm9yIGFsbCB2YXJpYW50cyBvZiBUay4KIAorLSBJc3N1ZSAjMjMxODA6IFJlbmFtZSBJRExFICJXaW5kb3dzIiBtZW51IGl0ZW0gdG8gIldpbmRvdyIuCisgIFBhdGNoIGJ5IEFsIFN3ZWlnYXJ0LgorCiBCdWlsZAogLS0tLS0KIAotLSBUaGUgV2luZG93cyBidWlsZCBub3cgaW5jbHVkZXMgT3BlblNTTCAxLjAuMWcKKy0gSXNzdWUgIzE1NTA2OiBVc2Ugc3RhbmRhcmQgUEtHX1BST0dfUEtHX0NPTkZJRyBhdXRvY29uZiBtYWNybyBpbiB0aGUgY29uZmlndXJlCisgIHNjcmlwdC4KKworLSBJc3N1ZSAjMjI5MzU6IEFsbG93IHRoZSBzc2wgbW9kdWxlIHRvIGJlIGNvbXBpbGVkIGlmIG9wZW5zc2wgZG9lc24ndCBzdXBwb3J0CisgIFNTTCAzLgorCistIElzc3VlICMyMjU5MjogRHJvcCBzdXBwb3J0IG9mIHRoZSBCb3JsYW5kIEMgY29tcGlsZXIgdG8gYnVpbGQgUHl0aG9uLiBUaGUKKyAgZGlzdHV0aWxzIG1vZHVsZSBzdGlsbCBzdXBwb3J0cyBpdCB0byBidWlsZCBleHRlbnNpb25zLgorCistIElzc3VlICMyMjU5MTogRHJvcCBzdXBwb3J0IG9mIE1TLURPUywgZXNwZWNpYWxseSBvZiB0aGUgREpHUFAgY29tcGlsZXIKKyAgKE1TLURPUyBwb3J0IG9mIEdDQykuCisKKy0gSXNzdWUgIzE2NTM3OiBDaGVjayB3aGV0aGVyIHNlbGYuZXh0ZW5zaW9ucyBpcyBlbXB0eSBpbiBzZXR1cC5weS4gUGF0Y2ggYnkKKyAgSm9uYXRoYW4gSG9zbWVyLgorCistIElzc3VlICMyMjM1OTogUmVtb3ZlIGluY29ycmVjdCB1c2VzIG9mIHJlY3Vyc2l2ZSBtYWtlLiAgUGF0Y2ggYnkgSm9uYXMKKyAgV2FnbmVyLgorCistIElzc3VlICMyMTk1ODogRGVmaW5lIEhBVkVfUk9VTkQgd2hlbiBidWlsZGluZyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMyBhbmQKKyAgYWJvdmUuICBQYXRjaCBieSBaYWNoYXJ5IFR1cm5lci4KKworLSBJc3N1ZSAjMTgwOTM6IHRoZSBwcm9ncmFtcyB0aGF0IGVtYmVkIHRoZSBDUHl0aG9uIHJ1bnRpbWUgYXJlIG5vdyBpbiBhCisgIHNlcGFyYXRlICJQcm9ncmFtcyIgZGlyZWN0b3J5LCByYXRoZXIgdGhhbiBiZWluZyBrZXB0IGluIHRoZSBNb2R1bGVzCisgIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTU3NTk6ICJtYWtlIHN1c3BpY2lvdXMiLCAibWFrZSBsaW5rY2hlY2siIGFuZCAibWFrZSBkb2N0ZXN0IiBpbiBEb2MvCisgIG5vdyBkaXNwbGF5IHNwZWNpYWwgbWVzc2FnZSB3aGVuIGFuZCBvbmx5IHdoZW4gdGhlcmUgYXJlIGZhaWx1cmVzLgorCistIElzc3VlICMyMTE0MTogVGhlIFdpbmRvd3MgYnVpbGQgcHJvY2VzcyBubyBsb25nZXIgYXR0ZW1wdHMgdG8gZmluZCBQZXJsLAorICBpbnN0ZWFkIHJlbHlpbmcgb24gT3BlblNTTCBzb3VyY2UgYmVpbmcgY29uZmlndXJlZCBhbmQgcmVhZHkgdG8gYnVpbGQuICBUaGUKKyAgYGBQQ2J1aWxkXGJ1aWxkX3NzbC5weWBgIHNjcmlwdCBoYXMgYmVlbiByZS13cml0dGVuIGFuZCByZS1uYW1lZCB0bworICBgYFBDYnVpbGRccHJlcGFyZV9zc2wucHlgYCwgYW5kIHRha2VzIGNhcmUgb2YgY29uZmlndXJpbmcgT3BlblNTTCBzb3VyY2UKKyAgZm9yIGJvdGggMzIgYW5kIDY0IGJpdCBwbGF0Zm9ybXMuICBPcGVuU1NMIHNvdXJjZXMgb2J0YWluZWQgZnJvbQorICBzdm4ucHl0aG9uLm9yZyB3aWxsIGFsd2F5cyBiZSBwcmUtY29uZmlndXJlZCBhbmQgcmVhZHkgdG8gYnVpbGQuCisKKy0gSXNzdWUgIzIxMDM3OiBBZGQgYSBidWlsZCBvcHRpb24gdG8gZW5hYmxlIEFkZHJlc3NTYW5pdGl6ZXIgc3VwcG9ydC4KKworLSBJc3N1ZSAjMTk5NjI6IFRoZSBXaW5kb3dzIGJ1aWxkIHByb2Nlc3Mgbm93IGNyZWF0ZXMgInB5dGhvbi5iYXQiIGluIHRoZQorICByb290IG9mIHRoZSBzb3VyY2UgdHJlZSwgd2hpY2ggcGFzc2VzIGFsbCBhcmd1bWVudHMgdGhyb3VnaCB0byB0aGUgbW9zdAorICByZWNlbnRseSBidWlsdCBpbnRlcnByZXRlci4KIAogLSBJc3N1ZSAjMjEyODU6IFJlZmFjdG9yIGFuZCBmaXggY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjayB0byBhbHdheXMgc2VhcmNoCiAgIGluIGEgbmN1cnNlc3cgZGlyZWN0b3J5LgpAQCAtMTcwOCwxMiArMjkxNSw2MCBAQAogICBpbmNsdWRlIGRpcmVjdG9yaWVzIGlmIHRoZXkgYXJlbid0IGFscmVhZHkgYmVpbmcgc2VhcmNoZWQuIFRoaXMgYXZvaWRzCiAgIGFuIGV4cGxpY2l0IHJ1bnRpbWUgbGlicmFyeSBkZXBlbmRlbmN5LgogCistIElzc3VlICMxNzg2MTogVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSBhdXRvbWF0aWNhbGx5IHJlZ2VuZXJhdGVzCisgIEluY2x1ZGUvb3Bjb2RlLmggZnJvbSBMaWIvb3Bjb2RlLnB5IGlmIHRoZSBsYXRlciBnZXRzIGFueSBjaGFuZ2UuCisKIC0gSXNzdWUgIzIwNjQ0OiBPUyBYIGluc3RhbGxlciBidWlsZCBzdXBwb3J0IGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIGNoYW5nZXMKICAgaW4gMy40LjE6IGFzc3VtZSBleHRlcm5hbGx5IHN1cHBsaWVkIHNwaGlueC1idWlsZCBpcyBhdmFpbGFibGUgaW4gL3Vzci9iaW4uCiAKKy0gSXNzdWUgIzIwMDIyOiBFbGltaW5hdGUgdXNlIG9mIGRlcHJlY2F0ZWQgYnVuZGxlYnVpbGRlciBpbiBPUyBYIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTU5Njg6IEluY29ycG9yYXRlZCBUY2wsIFRrLCBhbmQgVGl4IGJ1aWxkcyBpbnRvIHRoZSBXaW5kb3dzIGJ1aWxkCisgIHNvbHV0aW9uLgorCistIElzc3VlICMxNzA5NTogRml4IE1vZHVsZXMvU2V0dXAgKnNoYXJlZCogc3VwcG9ydC4KKworLSBJc3N1ZSAjMjE4MTE6IEFudGljaXBhdGVkIGZpeGVzIHRvIHN1cHBvcnQgT1MgWCB2ZXJzaW9ucyA+IDEwLjkuCisKKy0gSXNzdWUgIzIxMTY2OiBQcmV2ZW50IHBvc3NpYmxlIHNlZ2ZhdWx0cyBhbmQgb3RoZXIgcmFuZG9tIGZhaWx1cmVzIG9mCisgIHB5dGhvbiAtLWdlbmVyYXRlLXBvc2l4LXZhcnMgaW4gcHlidWlsZGRpci50eHQgYnVpbGQgdGFyZ2V0LgorCistIElzc3VlICMxODA5NjogRml4IGxpYnJhcnkgb3JkZXIgcmV0dXJuZWQgYnkgcHl0aG9uLWNvbmZpZy4KKworLSBJc3N1ZSAjMTcyMTk6IEFkZCBsaWJyYXJ5IGJ1aWxkIGRpciBmb3IgUHl0aG9uIGV4dGVuc2lvbiBjcm9zcy1idWlsZHMuCisKKy0gSXNzdWUgIzIyOTE5OiBXaW5kb3dzIGJ1aWxkIHVwZGF0ZWQgdG8gc3VwcG9ydCBWQyAxNC4wIChWaXN1YWwgU3R1ZGlvIDIwMTUpLAorICB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBvZmZpY2lhbCByZWxlYXNlLgorCistIElzc3VlICMyMTIzNjogQnVpbGQgX21zaS5weWQgd2l0aCBjYWJpbmV0LmxpYiBpbnN0ZWFkIG9mIGZjaS5saWIKKworLSBJc3N1ZSAjMTcxMjg6IFVzZSBwcml2YXRlIHZlcnNpb24gb2YgT3BlblNTTCBmb3IgT1MgWCAxMC41KyBpbnN0YWxsZXIuCisKIEMgQVBJCiAtLS0tLQogCistIElzc3VlICMxNDIwMzogUmVtb3ZlIG9ic29sZXRlIHN1cHBvcnQgZm9yIHZpZXc9PU5VTEwgaW4gUHlCdWZmZXJfRmlsbEluZm8oKSwKKyAgYnl0ZWFycmF5X2dldGJ1ZmZlcigpLCBieXRlc2lvYnVmX2dldGJ1ZmZlcigpIGFuZCBhcnJheV9idWZmZXJfZ2V0YnVmKCkuCisgIEFsbCBmdW5jdGlvbnMgbm93IHJhaXNlIEJ1ZmZlckVycm9yIGluIHRoYXQgY2FzZS4KKworLSBJc3N1ZSAjMjI0NDU6IFB5QnVmZmVyX0lzQ29udGlndW91cygpIG5vdyBpbXBsZW1lbnRzIHByZWNpc2UgY29udGlndWl0eQorICB0ZXN0cywgY29tcGF0aWJsZSB3aXRoIE51bVB5J3MgTlBZX1JFTEFYRURfU1RSSURFU19DSEVDS0lORyBjb21waWxhdGlvbgorICBmbGFnLiAgUHJldmlvdXNseSB0aGUgZnVuY3Rpb24gcmVwb3J0ZWQgZmFsc2UgbmVnYXRpdmVzIGZvciBjb3JuZXIgY2FzZXMuCisKKy0gSXNzdWUgIzIyMDc5OiBQeVR5cGVfUmVhZHkoKSBub3cgY2hlY2tzIHRoYXQgc3RhdGljYWxseSBhbGxvY2F0ZWQgdHlwZSBoYXMKKyAgbm8gZHluYW1pY2FsbHkgYWxsb2NhdGVkIGJhc2VzLgorCistIElzc3VlICMyMjQ1MzogUmVtb3ZlZCBub24tZG9jdW1lbnRlZCBtYWNybyBQeU9iamVjdF9SRVBSKCkuCisKKy0gSXNzdWUgIzE4Mzk1OiBSZW5hbWUgYGBfUHlfY2hhcjJ3Y2hhcigpYGAgdG8gOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCwKKyAgcmVuYW1lIGBgX1B5X3djaGFyMmNoYXIoKWBgIHRvIDpjOmZ1bmM6YFB5X0VuY29kZUxvY2FsZWAsIGFuZCBkb2N1bWVudAorICB0aGVzZSBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzIxMjMzOiBBZGQgbmV3IEMgZnVuY3Rpb25zOiBQeU1lbV9SYXdDYWxsb2MoKSwgUHlNZW1fQ2FsbG9jKCksCisgIFB5T2JqZWN0X0NhbGxvYygpLCBfUHlPYmplY3RfR0NfQ2FsbG9jKCkuIGJ5dGVzKGludCkgaXMgbm93IHVzaW5nCisgIGBgY2FsbG9jKClgYCBpbnN0ZWFkIG9mIGBgbWFsbG9jKClgYCBmb3IgbGFyZ2Ugb2JqZWN0cyB3aGljaCBpcyBmYXN0ZXIgYW5kCisgIHVzZSBsZXNzIG1lbW9yeS4KKwogLSBJc3N1ZSAjMjA5NDI6IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdCgpIG5vIGxvbmdlciBzZXRzIF9fZmlsZV9fIHRvCiAgIG1hdGNoIHdoYXQgaW1wb3J0bGliIGRvZXM7IHRoaXMgYWZmZWN0cyBfZnJvemVuX2ltcG9ydGxpYiBhcyB3ZWxsIGFzIGFueQogICBtb2R1bGUgbG9hZGVkIHVzaW5nIGltcC5pbml0X2Zyb3plbigpLgpAQCAtMTcyMSw5ICsyOTc2LDI5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE5NTQ4OiBVcGRhdGUgdGhlIGNvZGVjcyBtb2R1bGUgZG9jdW1lbnRhdGlvbiB0byBiZXR0ZXIgY292ZXIgdGhlCisgIGRpc3RpbmN0aW9uIGJldHdlZW4gdGV4dCBlbmNvZGluZ3MgYW5kIG90aGVyIGNvZGVjcywgdG9nZXRoZXIgd2l0aCBvdGhlcgorICBjbGFyaWZpY2F0aW9ucy4gUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjIzOTQ6IERvYy9NYWtlZmlsZSBub3cgc3VwcG9ydHMgYGBtYWtlIHZlbnYgUFlUSE9OPS4uL3B5dGhvbmBgIHRvCisgIGNyZWF0ZSBhIHZlbnYgZm9yIGdlbmVyYXRpbmcgdGhlIGRvY3VtZW50YXRpb24sIGUuZy4sCisgIGBgbWFrZSBodG1sIFBZVEhPTj12ZW52L2Jpbi9weXRob24zYGAuCisKKy0gSXNzdWUgIzIxNTE0OiBUaGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUganNvbiBtb2R1bGUgbm93IHJlZmVycyB0byBuZXcgSlNPTiBSRkMKKyAgNzE1OSBpbnN0ZWFkIG9mIG9ic29sZXRlZCBSRkMgNDYyNy4KKworLSBJc3N1ZSAjMjE3Nzc6IFRoZSBiaW5hcnkgc2VxdWVuY2UgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IGFyZSBub3cKKyAgZG9jdW1lbnRlZCBleHBsaWNpdGx5LCByYXRoZXIgdGhhbiBhc3N1bWluZyB1c2VycyB3aWxsIGJlIGFibGUgdG8gZGVyaXZlCisgIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIgZnJvbSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHN0ciBtZXRob2RzLgorCistIElzc3VlICM2OTE2OiB1bmRvY3VtZW50IGRlcHJlY2F0ZWQgYXN5bmNoYXQuZmlmbyBjbGFzcy4KKwogLSBJc3N1ZSAjMTczODY6IEV4cGFuZGVkIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGBgRG9jL21ha2UuYmF0YGAgc2NyaXB0IHRvIG1ha2UKICAgaXQgbXVjaCBtb3JlIGNvbXBhcmFibGUgdG8gYGBEb2MvTWFrZWZpbGVgYC4KIAorLSBJc3N1ZSAjMjEzMTI6IFVwZGF0ZSB0aGUgdGhyZWFkX2Zvb2Jhci5oIHRlbXBsYXRlIGZpbGUgdG8gaW5jbHVkZSBuZXdlcgorICB0aHJlYWRpbmcgQVBJcy4gIFBhdGNoIGJ5IEphY2sgTWNDcmFja2VuLgorCiAtIElzc3VlICMyMTA0MzogUmVtb3ZlIHRoZSByZWNvbW1lbmRhdGlvbiBmb3Igc3BlY2lmaWMgQ0Egb3JnYW5pemF0aW9ucyBhbmQgdG8KICAgbWVudGlvbiB0aGUgYWJpbGl0eSB0byBsb2FkIHRoZSBPUyBjZXJ0aWZpY2F0ZXMuCiAKQEAgLTE3NDEsNiArMzAxNiw3MyBAQAogVGVzdHMKIC0tLS0tCiAKKy0gSXNzdWUgIzE4OTgyOiBBZGQgdGVzdHMgZm9yIENMSSBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlLgorCistIElzc3VlICMxOTU0ODogQWRkZWQgc29tZSBhZGRpdGlvbmFsIGNoZWNrcyB0byB0ZXN0X2NvZGVjcyB0byBlbnN1cmUgdGhhdAorICBzdGF0ZW1lbnRzIGluIHRoZSB1cGRhdGVkIGRvY3VtZW50YXRpb24gcmVtYWluIGFjY3VyYXRlLiBQYXRjaCBieSBNYXJ0aW4KKyAgUGFudGVyLgorCistIElzc3VlICMyMjgzODogQWxsIHRlc3RfcmUgdGVzdHMgbm93IHdvcmsgd2l0aCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKworLSBJc3N1ZSAjMjIxNzM6IFVwZGF0ZSBsaWIydG8zIHRlc3RzIHRvIHVzZSB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeS4KKworLSBJc3N1ZSAjMTYwMDA6IENvbnZlcnQgdGVzdF9jdXJzZXMgdG8gdXNlIHVuaXR0ZXN0LgorCistIElzc3VlICMyMTQ1NjogU2tpcCB0d28gdGVzdHMgaW4gdGVzdF91cmxsaWIybmV0LnB5IGlmIF9zc2wgbW9kdWxlIG5vdAorICBwcmVzZW50LiBQYXRjaCBieSBSZW1pIFBvaW50ZWwuCisKKy0gSXNzdWUgIzIwNzQ2OiBGaXggdGVzdF9wZGIgdG8gcnVuIGluIHJlZmxlYWsgbW9kZSAoLVIpLiAgUGF0Y2ggYnkgWGF2aWVyCisgIGRlIEdheWUuCisKKy0gSXNzdWUgIzIyMDYwOiB0ZXN0X2N0eXBlcyBoYXMgYmVlbiBzb21ld2hhdCBjbGVhbmVkIHVwIGFuZCBzaW1wbGlmaWVkOyBpdAorICBub3cgdXNlcyB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB0byBmaW5kIGl0cyB0ZXN0cy4KKworLSBJc3N1ZSAjMjIxMDQ6IHJlZ3J0ZXN0LnB5IG5vIGxvbmdlciBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgc3VpdGUgb2YgdGVzdHMKKyAgbG9hZGVkIGZyb20gdGVzdCBtb2R1bGVzIHRoYXQgZG9uJ3QgZGVmaW5lIHRlc3RfbWFpbigpLgorCistIElzc3VlICMyMjExMTogQXNzb3J0ZWQgY2xlYW51cHMgaW4gdGVzdF9pbWFwbGliLiAgUGF0Y2ggYnkgTWlsYW4gT2JlcmtpcmNoLgorCistIElzc3VlICMyMjAwMjogQWRkZWQgYGBsb2FkX3BhY2thZ2VfdGVzdHNgYCBmdW5jdGlvbiB0byB0ZXN0LnN1cHBvcnQgYW5kIHVzZWQKKyAgaXQgdG8gaW1wbGVtZW50L2F1Z21lbnQgdGVzdCBkaXNjb3ZlcnkgaW4gdGVzdF9hc3luY2lvLCB0ZXN0X2VtYWlsLAorICB0ZXN0X2ltcG9ydGxpYiwgdGVzdF9qc29uLCBhbmQgdGVzdF90b29scy4KKworLSBJc3N1ZSAjMjE5NzY6IEZpeCB0ZXN0X3NzbCB0byBhY2NlcHQgTGlicmVTU0wgdmVyc2lvbiBzdHJpbmdzLiAgVGhhbmtzCisgIHRvIFdpbGxpYW0gT3JyLgorCistIElzc3VlICMyMTkxODogQ29udmVydGVkIHRlc3RfdG9vbHMgZnJvbSBhIG1vZHVsZSB0byBhIHBhY2thZ2UgY29udGFpbmluZworICBzZXBhcmF0ZSB0ZXN0IGZpbGVzIGZvciBlYWNoIHRlc3RlZCBzY3JpcHQuCisKKy0gSXNzdWUgIzk1NTQ6IFVzZSBtb2Rlcm4gdW5pdHRlc3QgZmVhdHVyZXMgaW4gdGVzdF9hcmdwYXJzZS4gSW5pdGlhbCBwYXRjaCBieQorICBEZW52ZXIgQ29uZXliZWFyZSBhbmQgUmFkdSBWb2ljaWxhcy4KKworLSBJc3N1ZSAjMjAxNTU6IENoYW5nZWQgSFRUUCBtZXRob2QgbmFtZXMgaW4gZmFpbGluZyB0ZXN0cyBpbiB0ZXN0X2h0dHBzZXJ2ZXJzCisgIHNvIHRoYXQgcGFja2V0IGZpbHRlcmluZyBzb2Z0d2FyZSAoc3BlY2lmaWNhbGx5IFdpbmRvd3MgQmFzZSBGaWx0ZXJpbmcgRW5naW5lKQorICBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgdHJhbnNhY3Rpb24gc2VtYW50aWNzIGV4cGVjdGVkIGJ5IHRoZSB0ZXN0cy4KKworLSBJc3N1ZSAjMTk0OTM6IFJlZmFjdG9yZWQgdGhlIGN0eXBlcyB0ZXN0IHBhY2thZ2UgdG8gc2tpcCB0ZXN0cyBleHBsaWNpdGx5CisgIHJhdGhlciB0aGFuIHNpbGVudGx5LgorCistIElzc3VlICMxODQ5MjogQWxsIHJlc291cmNlcyBhcmUgbm93IGFsbG93ZWQgd2hlbiB0ZXN0cyBhcmUgbm90IHJ1biBieQorICByZWdydGVzdC5weS4KKworLSBJc3N1ZSAjMjE2MzQ6IEZpeCBweXN0b25lIG1pY3JvLWJlbmNobWFyazogdXNlIGZsb29yIGRpdmlzaW9uIGluc3RlYWQgb2YgdHJ1ZQorICBkaXZpc2lvbiB0byBiZW5jaG1hcmsgaW50ZWdlcnMgaW5zdGVhZCBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBTZXQgcHlzdG9uZQorICB2ZXJzaW9uIHRvIDEuMi4gUGF0Y2ggd3JpdHRlbiBieSBMZW5uYXJ0IFJlZ2Vicm8uCisKKy0gSXNzdWUgIzIxNjA1OiBBZGRlZCB0ZXN0cyBmb3IgVGtpbnRlciBpbWFnZXMuCisKKy0gSXNzdWUgIzIxNDkzOiBBZGRlZCB0ZXN0IGZvciBudHBhdGguZXhwYW5kdXNlcigpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMxOTkyNTogQWRkZWQgdGVzdHMgZm9yIHRoZSBzcHdkIG1vZHVsZS4gT3JpZ2luYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCistIElzc3VlICMyMTUyMjogQWRkZWQgVGtpbnRlciB0ZXN0cyBmb3IgTGlzdGJveC5pdGVtY29uZmlndXJlKCksCisgIFBhbmVkV2luZG93LnBhbmVjb25maWd1cmUoKSwgYW5kIE1lbnUuZW50cnljb25maWd1cmUoKS4KKworLSBJc3N1ZSAjMTc3NTY6IEZpeCB0ZXN0X2NvZGUgdGVzdCB3aGVuIHJ1biBmcm9tIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24uCisKKy0gSXNzdWUgIzE3NzUyOiBGaXggZGlzdHV0aWxzIHRlc3RzIHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKwogLSBJc3N1ZSAjMTg2MDQ6IENvbnNvbGlkYXRlZCBjaGVja3MgZm9yIEdVSSBhdmFpbGFiaWxpdHkuICBBbGwgcGxhdGZvcm1zIG5vdwogICBhdCBsZWFzdCBjaGVjayB3aGV0aGVyIFRrIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2hlbiB0aGUgR1VJIHJlc291cmNlIGlzCiAgIHJlcXVlc3RlZC4KQEAgLTE3NTgsNiArMzEwMCw4IEBACiAKIC0gSXNzdWUgIzIxMDk3OiBNb3ZlIHRlc3RfbmFtZXNwYWNlX3BrZ3MgaW50byB0ZXN0X2ltcG9ydGxpYi4KIAorLSBJc3N1ZSAjMjE1MDM6IFVzZSB0ZXN0X2JvdGgoKSBjb25zaXN0ZW50bHkgaW4gdGVzdF9pbXBvcnRsaWIuCisKIC0gSXNzdWUgIzIwOTM5OiBBdm9pZCB2YXJpb3VzIG5ldHdvcmsgdGVzdCBmYWlsdXJlcyBkdWUgdG8gbmV3CiAgIHJlZGlyZWN0IG9mIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8gdG8gaHR0cHM6Ly93d3cucHl0aG9uLm9yZzoKICAgdXNlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20gaW5zdGVhZC4KQEAgLTE3NjgsOSArMzExMiw0MSBAQAogLSBJc3N1ZSAjMjEwOTM6IFByZXZlbnQgZmFpbHVyZXMgb2YgY3R5cGVzIHRlc3RfbWFjaG9saWIgb24gT1MgWCBpZiBhCiAgIGNvcHkgb2YgbGlieiBleGlzdHMgaW4gJEhPTUUvbGliIG9yIC91c3IvbG9jYWwvbGliLgogCistIElzc3VlICMyMjc3MDogUHJldmVudCBzb21lIFRrIHNlZ2ZhdWx0cyBvbiBPUyBYIHdoZW4gcnVubmluZyBndWkgdGVzdHMuCisKKy0gSXNzdWUgIzIzMjExOiBXb3JrYXJvdW5kIHRlc3RfbG9nZ2luZyBmYWlsdXJlIG9uIHNvbWUgT1MgWCAxMC42IHN5c3RlbXMuCisKKy0gSXNzdWUgIzIzMzQ1OiBQcmV2ZW50IHRlc3Rfc3NsIGZhaWx1cmVzIHdpdGggbGFyZ2UgT3BlblNTTCBwYXRjaCBsZXZlbAorICB2YWx1ZXMgKGxpa2UgMC45Ljh6YykuCisKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCistIElzc3VlICMyMjMxNDogcHlkb2Mgbm93IHdvcmtzIHdoZW4gdGhlIExJTkVTIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldC4KKworLSBJc3N1ZSAjMjI2MTU6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgdGhlICJ0eXBlIiBhcmd1bWVudCBmb3IgdGhlCisgIGludCBjb252ZXJ0ZXIuICBUaGlzIHBlcm1pdHMgdXNpbmcgdGhlIGludCBjb252ZXJ0ZXIgd2l0aCBlbnVtcyBhbmQKKyAgdHlwZWRlZnMuCisKKy0gSXNzdWUgIzIwMDc2OiBUaGUgbWFrZWxvY2FsZWFsaWFzLnB5IHNjcmlwdCBubyBsb25nZXIgaWdub3JlcyBVVEYtOCBtYXBwaW5nLgorCistIElzc3VlICMyMDA3OTogVGhlIG1ha2Vsb2NhbGVhbGlhcy5weSBzY3JpcHQgbm93IGNhbiBwYXJzZSB0aGUgU1VQUE9SVEVEIGZpbGUKKyAgZnJvbSBnbGliYyBzb3VyY2VzIGFuZCBzdXBwb3J0cyBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3Igc291cmNlIHBhdGhzLgorCistIElzc3VlICMyMjIwMTogQ29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB0aGUgemlwZmlsZSBtb2R1bGUgbm93IGNvcnJlY3RseQorICBleHRyYWN0cyBaSVAgZmlsZXMgd2l0aCBkaXJlY3RvcnkgZW50cmllcy4gIFBhdGNoIGJ5IFJ5YW4gV2lsc29uLgorCistIElzc3VlICMyMjEyMDogRm9yIGZ1bmN0aW9ucyB1c2luZyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHJldHVybiBjb252ZXJ0ZXIsCisgIEFyZ3VtZW50IENsaW5pYyBub3cgZ2VuZXJhdGVzIGEgY2FzdCB0byB0aGF0IHR5cGUgZm9yIHRoZSBjb21wYXJpc29uCisgIHRvIC0xIGluIHRoZSBnZW5lcmF0ZWQgY29kZS4gIChUaGlzIHN1cHJlc3NlcyBhIGNvbXBpbGF0aW9uIHdhcm5pbmcuKQorCistIElzc3VlICMxODk3NDogVG9vbHMvc2NyaXB0cy9kaWZmLnB5IG5vdyB1c2VzIGFyZ3BhcnNlIGluc3RlYWQgb2Ygb3B0cGFyc2UuCisKKy0gSXNzdWUgIzIxOTA2OiBNYWtlIFRvb2xzL3NjcmlwdHMvbWQ1c3VtLnB5IHdvcmsgaW4gUHl0aG9uIDMuCisgIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLSBJc3N1ZSAjMjE2Mjk6IEZpeCBBcmd1bWVudCBDbGluaWMncyAiLS1jb252ZXJ0ZXJzIiBmZWF0dXJlLgorCiAtIEFkZCBzdXBwb3J0IGZvciBgYHlpZWxkIGZyb21gYCB0byAydG8zLgogCiAtIEFkZCBzdXBwb3J0IGZvciB0aGUgUEVQIDQ2NSBtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3IgdG8gMnRvMy4KQEAgLTE3ODMsNiArMzE1OSwzMiBAQAogLSBJc3N1ZSAjMjA1MzU6IFBZVEhPTldBUk5JTkcgbm8gbG9uZ2VyIGFmZmVjdHMgdGhlIHJ1bl90ZXN0cy5weSBzY3JpcHQuCiAgIFBhdGNoIGJ5IEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzLgogCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzIzMjYwOiBVcGRhdGUgV2luZG93cyBpbnN0YWxsZXIKKworLSBUaGUgYnVuZGxlZCB2ZXJzaW9uIG9mIFRjbC9UayBoYXMgYmVlbiB1cGRhdGVkIHRvIDguNi4zLiAgVGhlIG1vc3QgdmlzaWJsZQorICByZXN1bHQgb2YgdGhpcyBjaGFuZ2UgaXMgdGhlIGFkZGl0aW9uIG9mIG5ldyBuYXRpdmUgZmlsZSBkaWFsb2dzIHdoZW4KKyAgcnVubmluZyBvbiBXaW5kb3dzIFZpc3RhIG9yIG5ld2VyLiAgU2VlIFRjbC9UaydzIFRJUCA0MzIgZm9yIG1vcmUKKyAgaW5mb3JtYXRpb24uICBBbHNvLCB0aGlzIHZlcnNpb24gb2YgVGNsL1RrIGluY2x1ZGVzIHN1cHBvcnQgZm9yIFdpbmRvd3MgMTAuCisKKy0gSXNzdWUgIzE3ODk2OiBUaGUgV2luZG93cyBidWlsZCBzY3JpcHRzIG5vdyBleHBlY3QgZXh0ZXJuYWwgbGlicmFyeSBzb3VyY2VzCisgIHRvIGJlIGluIGBgUENidWlsZFwuLlxleHRlcm5hbHNgYCByYXRoZXIgdGhhbiBgYFBDYnVpbGRcLi5cLi5gYC4KKworLSBJc3N1ZSAjMTc3MTc6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IHVzZSBhIGNvcHkgb2YgTkFTTSBwdWxsZWQgZnJvbQorICBzdm4ucHl0aG9uLm9yZyB0byBidWlsZCBPcGVuU1NMLgorCistIElzc3VlICMyMTkwNzogSW1wcm92ZWQgdGhlIGJhdGNoIHNjcmlwdHMgcHJvdmlkZWQgZm9yIGJ1aWxkaW5nIFB5dGhvbi4KKworLSBJc3N1ZSAjMjI2NDQ6IFRoZSBidW5kbGVkIHZlcnNpb24gb2YgT3BlblNTTCBoYXMgYmVlbiB1cGRhdGVkIHRvIDEuMC4xai4KKworLSBJc3N1ZSAjMTA3NDc6IFVzZSB2ZXJzaW9uZWQgbGFiZWxzIGluIHRoZSBXaW5kb3dzIHN0YXJ0IG1lbnUuCisgIFBhdGNoIGJ5IE9saXZlIEtpbGJ1cm4uCisKKy0gSXNzdWUgIzIyOTgwOiAucHlkIGZpbGVzIHdpdGggYSB2ZXJzaW9uIGFuZCBwbGF0Zm9ybSB0YWcgKGZvciBleGFtcGxlLAorICAiLmNwMzUtd2luMzIucHlkIikgd2lsbCBub3cgYmUgbG9hZGVkIGluIHByZWZlcmVuY2UgdG8gdGhvc2Ugd2l0aG91dCB0YWdzLgorCiAKIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNC4wPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01OTAyLDYgKzczMDQsMTAgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjMwMDY6IEltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gYW5kIGluZGV4aW5nIG9mIGRpY3QuX19taXNzaW5nX18uCisgIEFkZCBhbiBlbnRyeSBpbiB0aGUgbGFuZ3VhZ2UgZGF0YW1vZGVsIHNwZWNpYWwgbWV0aG9kcyBzZWN0aW9uLgorICBSZXZpc2UgYW5kIGluZGV4IGl0cyBkaXNjdXNzaW9uIGluIHRoZSBzdGR0eXBlcyBtYXBwaW5nL2RpY3Qgc2VjdGlvbi4KKwogLSBJc3N1ZSAjMTc3MDE6IEltcHJvdmluZyBzdHJmdGltZSBkb2N1bWVudGF0aW9uLgogCiAtIElzc3VlICMxODQ0MDogQ2xhcmlmeSB0aGF0IGBoYXNoKClgIGNhbiB0cnVuY2F0ZSB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbgpAQCAtNjA2NCw0MTQxICs3NDcwLDQgQEAKIC0gSXNzdWUgIzE4NTY5OiBUaGUgaW5zdGFsbGVyIG5vdyBhZGRzIC5weSB0byB0aGUgUEFUSEVYVCB2YXJpYWJsZSB3aGVuIGV4dGVuc2lvbnMKICAgYXJlIHJlZ2lzdGVyZWQuIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCiAKLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjA/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjktU2VwLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KLQotLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBgX190cnVuY19fKClgIHJldHVybnMgYW4gb2JqZWN0IHdob3NlCi0gIGBfX2ludF9fKClgIGdpdmVzIGEgbm9uLWludGVnZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTYwMTI6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcHlleHBhdC4gVGhlIHBhcnNlcidzIGBVc2VGb3JlaWduRFREKClgCi0gIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIzLVNlcC0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKWAuCi0KLS0gSXNzdWUgIzE1OTI2OiBGaXggY3Jhc2ggYWZ0ZXIgbXVsdGlwbGUgcmVpbml0aWFsaXphdGlvbnMgb2YgdGhlIGludGVycHJldGVyLgotCi0tIElzc3VlICMxNTg5NTogRml4IEZJTEUgcG9pbnRlciBsZWFrIGluIG9uZSBlcnJvciBicmFuY2ggb2YKLSAgYFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKClgIHdoZW4gZmlsZW5hbWUgcG9pbnRzIHRvIGEgcHljL3B5byBmaWxlLCBjbG9zZWl0IGlzCi0gIGZhbHNlIGFuIGFuZCBzZXRfbWFpbl9sb2FkZXIoKSBmYWlscy4KLQotLSBGaXhlcyBmb3IgYSBmZXcgY3Jhc2ggYW5kIG1lbW9yeSBsZWFrIHJlZ3Jlc3Npb25zIGZvdW5kIGJ5IENvdmVyaXR5LgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KLSAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAotICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQotICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KLQotLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGVtYWlsLnV0aWxgIHdoZXJlIHRoZSBgcGFyc2VkYXRlKClgIGFuZAotICBgcGFyc2VkYXRlX3R6KClgIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKLSAgbm90IGJlIHBhcnNlZC4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1OTczOiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjb21wYXJpbmcgZGF0ZXRpbWUgdGltZXpvbmUKLSAgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgotICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KLQotLSBJc3N1ZSAjMTU5Njk6IGBmYXVsdGhhbmRsZXJgIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCi0gIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bwotICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KLQotLSBfZGVjaW1hbCBtb2R1bGU6IHVzZSBvbmx5IEMgODkgc3R5bGUgY29tbWVudHMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA5LVNlcC0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCi0gIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucwotICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KLQotLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBgT1NFcnJvcmAuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm5vCi0gIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KLQotLSBJc3N1ZSAjMTU3ODE6IEZpeCB0d28gc21hbGwgcmFjZSBjb25kaXRpb25zIGluIGltcG9ydCdzIG1vZHVsZSBsb2NraW5nLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3MTU4OiBBZGQgJ3N5bWJvbHMnIHRvIGhlbHAoKSB3ZWxjb21lIG1lc3NhZ2U7IGNsYXJpZnkKLSAgJ21vZHVsZXMgc3BhbScgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMgYXMKLSAgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KLQotLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCi0KLS0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gYGAvZGV2L3VyYW5kb21gYCBjYW5ub3QgYmUKLSAgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgotCi0tIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIGBEZWNpbWFsLnF1YW50aXplKClgCi0gIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQotICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKLSAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQotICBrZXlwYWQga2V5cy4KLQotLSBJc3N1ZSAjMTQyMjM6IEZpeCBgd2luZG93LmFkZGNoKClgIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKLSAgbGlrZSBjdXJzZXMuQUNTX0hMSU5FOiB0aGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKGludCkgYW5kIGFkZGNoKGJ5dGVzKSBpcyBub3cKLSAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkY2goKS9tdndhZGRjaCgpIChhcyBpdCB3YXMgZG9uZSBpbiBQeXRob24gMy4yKSwKLSAgaW5zdGVhZCBvZiB3YWRkX3djaCgpL212d2FkZF93Y2goKS4gVGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChzdHIpIGlzIHN0aWxsCi0gIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZF93Y2goKS9tdndhZGRfd2NoKCkgaWYgdGhlIFB5dGhvbiBjdXJzZXMgaXMgbGlua2VkCi0gIHRvIGxpYm5jdXJzZXN3LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU4MjI6IFJlYWxseSBlbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZAotICAocmVwbGFjZXMgZml4ZXMgZm9yIElzc3VlICMxNTY0NSkuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkIHRoZQotICBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZSBpdGVtCi0gIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleSB3aWxsIGJlCi0gIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjUtQXVnLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKLSAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCi0KLS0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAotICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KLSAgbGV0IHRoYXQgcHJvcGFnYXRlLgotCi0tIElzc3VlICMxNTc3ODogRW5zdXJlIHRoYXQgYGBzdHIoSW1wb3J0RXJyb3IobXNnKSlgYCByZXR1cm5zIGEgc3RyIGV2ZW4gd2hlbgotICBtc2cgaXNuJ3QgYSBzdHIuCi0KLS0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkgY29waWVkIHRvCi0gIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliIHJlaW50cm9kdWNlZCB0aGlzCi0gIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZgotICB0aGlzIHBhdGNoKQotCi0tIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gYGBQWVRIT05FWEVDVVRBQkxFYGAgaXMgc2V0IG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLiAgUGF0Y2ggYnkKLSAgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQotICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQ4NDY6IGBpbXBvcnRsaWIuRmlsZUZpbmRlcmAgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeQotICBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAotICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCi0KLS0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCi0gIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KLQotLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgotCi0tIElzc3VlICMxNTc3NjogQWxsb3cgcHl2ZW52IHRvIHdvcmsgaW4gZXhpc3RpbmcgZGlyZWN0b3J5IHdpdGggLS1jbGVhbi4KLQotLSBJc3N1ZSAjMTUyNDk6IGVtYWlsJ3MgQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KLSAgcmVxdWVzdGVkKSBldmVuIGlmIHRoZSBib2R5IGNvbnRhaW5zIHVuZGVjb2RhYmxlIGJ5dGVzLgotCi0tIElzc3VlICMxNTc3NzogRml4IGEgcmVmbGVhayBpbiBfcG9zaXhzdWJwcm9jZXNzLgotCi0tIElzc3VlICMjNjY1MTk0OiBVcGRhdGUgYGVtYWlsLnV0aWxzLmxvY2FsdGltZWAgdG8gdXNlIGRhdGV0aW1lLmFzdGltZXpvbmUgYW5kCi0gIGNvcnJlY3RseSBoYW5kbGUgaGlzdG9yaWMgY2hhbmdlcyBpbiBVVEMgb2Zmc2V0cy4KLQotLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KLSAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgotCi0tIElzc3VlICMxMjY0MzogYGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlYCBub3cgcmVzcGVjdHMgYHN5cy5leGNlcHRob29rYCB3aGVuCi0gIGRpc3BsYXlpbmcgZXhjZXB0aW9ucy4gIFBhdGNoIGJ5IEFhcm9uIElsZXMuCi0KLS0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCi0KLS0gSXNzdWUgIzE1NTk1OiBGaXggYGBzdWJwcm9jZXNzLlBvcGVuKHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKWBgIGZvciBjZXJ0YWluCi0gIGxvY2FsZXMgKHV0Zi0xNiBhbmQgdXRmLTMyIGZhbWlseSkuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQotICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgotCi0tIElzc3VlICMxNTcxNTogYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgIHdpbGwgc2lsZW5jZSBhbiBJbXBvcnRFcnJvciB3aGVuIHRoZQotICB1c2Ugb2YgZnJvbWxpc3QgbGVhZHMgdG8gYSBmYWlsZWQgaW1wb3J0LgotCi0tIElzc3VlICMxNDY2OTogRml4IHBpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIGFuZCBzb2NrZXRzIG9uIE1hYyBPUyBYIGJ5Ci0gIHNlbmRpbmcvcmVjZWl2aW5nIGFuIGFja25vd2xlZGdtZW50IGFmdGVyIGZpbGUgZGVzY3JpcHRvciB0cmFuc2Zlci4KLSAgVGVzdFBpY2tsaW5nQ29ubmVjdGlvbiBoYXMgYmVlbiByZWVuYWJsZWQgZm9yIE1hYyBPUyBYLgotCi0tIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCi0KLS0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZyBgbXVsdGlwcm9jZXNzaW5nYAotICBvbiBXaW5kb3dzIHdpdGhvdXQgdGhlIGBgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJ2BgIGlkaW9tLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE1Njc4OiBGaXggSURMRSBtZW51cyB3aGVuIHN0YXJ0ZWQgZnJvbSBPUyBYIGNvbW1hbmQgbGluZSAoMy4zLjBiMgotICByZWdyZXNzaW9uKS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIFRvdWNoZWQgdXAgdGhlIFB5dGhvbiAyIHRvIDMgcG9ydGluZyBndWlkZS4KLQotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGBqc29uYCBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgotICBQYXRjaCBieSBDaHJpcyBSZWJlcnQuCi0KLS0gQ3JlYXRlIGEgJ0NvbmN1cnJlbnQgRXhlY3V0aW9uJyBzZWN0aW9uIGluIHRoZSBkb2NzLCBhbmQgc3BsaXQgdXAgdGhlCi0gICdPcHRpb25hbCBPcGVyYXRpbmcgU3lzdGVtIFNlcnZpY2VzJyBzZWN0aW9uIHRvIHVzZSBhIG1vcmUgdXNlci1jZW50cmljCi0gIGNsYXNzaWZpY2F0aW9uIHNjaGVtZSAoc3BsaXR0aW5nIHRoZW0gYWNyb3NzIHRoZSBuZXcgQ0Ugc2VjdGlvbiwgSVBDIGFuZCB0ZXh0Ci0gIHByb2Nlc3NpbmcpLiBPcGVyYXRpbmcgc3lzdGVtIGxpbWl0YXRpb25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aCB0aGUgU3BoaW54Ci0gIGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mIENvbnRlbnRzLgotCi0tIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAotICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCi0KLS0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCi0gIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbiB0aGUKLSAgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcy4KLQotLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKLSAgRGFuaWVsIEVsbGlzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCi0gIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgotICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCi0KLS0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZyB0d28KLSAgZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZSBvZiB0ZXN0LgotCi0tIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiBgdXJsbGliYCB0ZXN0cy4gUGF0Y2ggYnkKLSAgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYGpzb25gIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQKLSAgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCi0KLS0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCi0KLS0gRHJvcCBgYFBDXHB5dGhvbl9udC5oYGAgYXMgaXQncyBub3QgdXNlZC4gIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQotICBidWlsZCBzdGVwLgotCi0tIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsIGFtZDY0Ci0gIGNvbmZpZ3VyYXRpb24uCi0KLS0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCi0KLS0gSXNzdWUgIzE1NjQ1OiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEyLUF1Zy0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgeWllbGQgZnJvbWBgIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcwotICByYWlzZWQgYnkgYSBjdXN0b20gaXRlcmF0b3IuCi0KLS0gSXNzdWUgIzEzMTE5OiBgc3lzLnN0ZG91dGAgYW5kIGBzeXMuc3RkZXJyYCBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCi0gIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgotCi0tIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBgX19pbXBvcnRfXygpYCB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAotICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90Ci0gIHN1cHBvcnRlZC4KLQotLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZwotICBpbXBvcnRsaWIuCi0KLS0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKLSAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCi0KLS0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCi0gIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgotCi0tIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KLQotLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKLSAgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgotCi0tIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCi0gIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgotCi0tIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYwotICBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCi0gIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNTMxNDogYGBfX21haW5fXy5fX2xvYWRlcl9fYGAgaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCi0gIHN0YXJ0dXAuCi0KLS0gSXNzdWUgIzE1MTExOiBXaGVuIGEgbW9kdWxlIGltcG9ydGVkIHVzaW5nICdmcm9tIGltcG9ydCcgaGFzIGFuIEltcG9ydEVycm9yCi0gIGluc2lkZSBpdHNlbGYsIGRvbid0IG1hc2sgdGhhdCBmYWN0IGJlaGluZCBhIGdlbmVyaWMgSW1wb3J0RXJyb3IgZm9yIHRoZQotICBtb2R1bGUgaXRzZWxmLgotCi0tIElzc3VlICMxNTI5MzogQWRkIEdDIHN1cHBvcnQgdG8gdGhlIEFTVCBiYXNlIG5vZGUgdHlwZS4KLQotLSBJc3N1ZSAjMTUyOTE6IEZpeCBhIG1lbW9yeSBsZWFrIHdoZXJlIEFTVCBub2RlcyB3aGVyZSBub3QgcHJvcGVybHkKLSAgZGVhbGxvY2F0ZWQuCi0KLS0gSXNzdWUgIzE1MTEwOiBGaXggdGhlIHRyYWNlYmFja3MgZ2VuZXJhdGVkIGJ5ICJpbXBvcnQgeHh4IiB0byBub3Qgc2hvdyB0aGUKLSAgaW1wb3J0bGliIHN0YWNrIGZyYW1lcy4KLQotLSBJc3N1ZSAjMTYzNjk6IEdsb2JhbCBQeVR5cGVPYmplY3RzIG5vdCBpbml0aWFsaXplZCB3aXRoIFB5VHlwZV9SZWFkeSguLi4pLgotCi0tIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKLSAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KLQotLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCi0gIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgotCi0tIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGNoLAotICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCi0KLS0gSXNzdWUgIzE1MjI5OiBBbiBgT1NFcnJvcmAgc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKLSAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgotICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCi0KLS0gSXNzdWUgIzE1MzA3OiBWaXJ0dWFsIGVudmlyb25tZW50cyBub3cgdXNlIHN5bWxpbmtzIHdpdGggZnJhbWV3b3JrIGJ1aWxkcyBvbgotICBNYWMgT1MgWCwgbGlrZSBvdGhlciBQT1NJWCBidWlsZHMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ1OTA6IGNvbmZpZ3BhcnNlciBub3cgY29ycmVjdGx5IHN0cmlwcyBpbmxpbmUgY29tbWVudHMgd2hlbiBkZWxpbWl0ZXIKLSAgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuCi0KLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBgX19zaXplb2ZfXygpYCBpbXBsZW1lbnRhdGlvbiBmb3IgYXJyYXkgb2JqZWN0cy4gIFBhdGNoIGJ5Ci0gIEx1ZHdpZyBIw6RobmUuCi0KLS0gSXNzdWUgIzE1NTc2OiBBbGxvdyBleHRlbnNpb24gbW9kdWxlcyB0byBhY3QgYXMgYSBwYWNrYWdlJ3MgX19pbml0X18gbW9kdWxlLgotCi0tIElzc3VlICMxNTUwMjogSGF2ZSBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIHdvcmsgb24gYHN5cy5tZXRhX3BhdGhgCi0gIGluc3RlYWQgb2YgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4KLQotLSBJc3N1ZSAjMTUxNjM6IFB5ZG9jIHNob3VsZG4ndCBsaXN0IF9fbG9hZGVyX18gYXMgbW9kdWxlIGRhdGEuCi0KLS0gSXNzdWUgIzE1NDcxOiBEbyBub3QgdXNlIG11dGFibGUgb2JqZWN0cyBhcyBkZWZhdWx0cyBmb3IKLSAgYGltcG9ydGxpYi5fX2ltcG9ydF9fKClgLgotCi0tIElzc3VlICMxNTU1OTogVG8gYXZvaWQgYSBwcm9ibGVtYXRpYyBmYWlsdXJlIG1vZGUgd2hlbiBwYXNzZWQgdG8gdGhlIGJ5dGVzCi0gIGNvbnN0cnVjdG9yLCBvYmplY3RzIGluIHRoZSBpcGFkZHJlc3MgbW9kdWxlIG5vIGxvbmdlciBpbXBsZW1lbnQgYF9faW5kZXhfXygpYAotICAodGhleSBzdGlsbCBpbXBsZW1lbnQgYF9faW50X18oKWAgYXMgYXBwcm9wcmlhdGUpLgotCi0tIElzc3VlICMxNTU0NjogRml4IGhhbmRsaW5nIG9mIHBhdGhvbG9naWNhbCBpbnB1dCBkYXRhIGluIHRoZSBwZWVrKCkgYW5kCi0gIHJlYWQxKCkgbWV0aG9kcyBvZiB0aGUgQloyRmlsZSwgR3ppcEZpbGUgYW5kIExaTUFGaWxlIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzEyNjU1OiBJbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGN1c3RvbSB0eXBlLCBgb3Muc2NoZWRfZ2V0YWZmaW5pdHkoKWAgYW5kCi0gIGBvcy5zY2hlZF9zZXRhZmZpbml0eSgpYCBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlCi0gIENQVXMgYSBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCi0KLS0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGBzb2NrZXQuZ2V0bmFtZWluZm8oKWAgLwotICBgc29ja2V0LmdldGFkZHJpbmZvKClgIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KLQotLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQotICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KLQotLSBJc3N1ZSAjMTU1MDI6IEJyaW5nIHRoZSBpbXBvcnRsaWIgQUJDcyBpbnRvIGxpbmUgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKLSAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgotCi0tIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KLQotLSBJc3N1ZSAjMTU0NjM6IFRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRydW5jYXRlcyBzdHJpbmdzIHRvIDUwMCBjaGFyYWN0ZXJzLAotICBpbnN0ZWFkIG9mIDEwMCwgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGxvbmcgZmlsZSBwYXRocy4KLQotLSBJc3N1ZSAjNjA1NjogTWFrZSBgbXVsdGlwcm9jZXNzaW5nYCB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKLSAgdXNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEogRGVyZWsgV2lsc29uLgotCi0tIElzc3VlICMxNTM2NDogRml4IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KLQotLSBJc3N1ZSAjMTU0MTM6IGBvcy50aW1lcygpYCBoYWQgZGlzYXBwZWFyZWQgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIGBzeXMuZ2V0c2l6ZW9mKClgIHRvCi0gIHJldHVybiBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuICBJbml0aWFsCi0gIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MjMyOiBXaGVuIG1hbmdsZV9mcm9tIGlzIFRydWUsIGBlbWFpbC5HZW5lcmF0b3JgIG5vdyBjb3JyZWN0bHkKLSAgbWFuZ2xlcyBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvcgotICBlcGlsb2d1ZS4KLQotLSBJc3N1ZSAjMTUwOTQ6IEluY29ycmVjdGx5IHBsYWNlZCAjZW5kaWYgaW4gX3RraW50ZXIuYy4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzEzOTIyOiBgYXJncGFyc2VgIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIgYWZ0ZXIKLSAgdGhlIGZpcnN0IG9uZS4KLQotLSBJc3N1ZSAjMTIzNTM6IGBhcmdwYXJzZWAgbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgotCi0tIElzc3VlICMxMDAxNywgaXNzdWUgIzE0OTk4OiBGaXggVHlwZUVycm9yIHVzaW5nIHBwcmludCBvbiBkaWN0aW9uYXJpZXMgd2l0aAotICB1c2VyLWRlZmluZWQgdHlwZXMgYXMga2V5cyBvciBvdGhlciB1bm9yZGVyYWJsZSBrZXlzLgotCi0tIElzc3VlICMxNTM5NzogYGluc3BlY3QuZ2V0bW9kdWxlbmFtZSgpYCBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gaW1wb3J0bGliIHZpYQotICBhIG5ldyBgaW1wb3J0bGliLm1hY2hpbmVyeS5hbGxfc3VmZml4ZXMoKWAgQVBJLgotCi0tIElzc3VlICMxNDYzNTogYHRlbG5ldGxpYmAgd2lsbCB1c2UgcG9sbCgpIHJhdGhlciB0aGFuIHNlbGVjdCgpIHdoZW4gcG9zc2libGUgdG8KLSAgYXZvaWQgZmFpbGluZyBkdWUgdG8gdGhlIHNlbGVjdCgpIGZpbGUgZGVzY3JpcHRvciBsaW1pdC4KLQotLSBJc3N1ZSAjMTUxODA6IENsYXJpZnkgcG9zaXhwYXRoLmpvaW4oKSBlcnJvciBtZXNzYWdlIHdoZW4gbWl4aW5nIHN0ciAmIGJ5dGVzLgotCi0tIElzc3VlICMxNTM0MzogcGtndXRpbCBub3cgaW5jbHVkZXMgYW4gaXRlcl9pbXBvcnRlcl9tb2R1bGVzIGltcGxlbWVudGF0aW9uIGZvcgotICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIgKHNpbWlsYXIgdG8gdGhlIHdheSBpdCBhbHJlYWR5IGhhbmRsZWQKLSAgemlwaW1wb3J0LnppcGltcG9ydGVyKS4KLQotLSBJc3N1ZSAjMTUzMTQ6IHJ1bnB5IG5vdyBzZXRzIF9fbWFpbl9fLl9fbG9hZGVyX18gY29ycmVjdGx5LgotCi0tIElzc3VlICMxNTM1NzogVGhlIGltcG9ydCBlbXVsYXRpb24gaW4gcGtndXRpbCBpcyBub3cgZGVwcmVjYXRlZC4gcGtndXRpbCB1c2VzCi0gIGltcG9ydGxpYiBpbnRlcm5hbGx5IHJhdGhlciB0aGFuIHRoZSBlbXVsYXRpb24uCi0KLS0gSXNzdWUgIzE1MjMzOiBQeXRob24gbm93IGd1YXJhbnRlZXMgdGhhdCBjYWxsYWJsZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhdGV4aXQKLSAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGluIGEgZGV0ZXJtaW5pc3RpYyBvcmRlci4KLQotLSBJc3N1ZSAjMTUyMzg6IGBzaHV0aWwuY29weXN0YXQoKWAgbm93IGNvcGllcyBMaW51eCAiZXh0ZW5kZWQgYXR0cmlidXRlcyIuCi0KLS0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkIGluCi0gIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNTMxNTogU3VwcG9ydCBWUyAyMDEwIGluIGRpc3R1dGlscyBjeWd3aW5jb21waWxlci4KLQotLSBJc3N1ZSAjMTUyOTQ6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcGtndXRpbC5leHRlbmRfcGF0aCgpJ3MgaGFuZGxpbmcgb2YgbmVzdGVkCi0gIG5hbWVzcGFjZSBwYWNrYWdlcy4KLQotLSBJc3N1ZSAjMTUwNTY6IGBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoKWAgYW5kIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgcmFpc2UKLSAgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBzZXQgdG8gTm9uZS4KLQotLSBJc3N1ZSAjMTUyNTY6IEdyYW1tYXRpY2FsIG1pc3Rha2UgaW4gZXhjZXB0aW9uIHJhaXNlZCBieSBgaW1wLmZpbmRfbW9kdWxlKClgLgotCi0tIElzc3VlICM1OTMxOiBgd3NnaXJlZmAgZW52aXJvbiB2YXJpYWJsZSBTRVJWRVJfU09GVFdBUkUgd2lsbCBzcGVjaWZ5IGFuCi0gIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHRlcm0gbGlrZSBDUHl0aG9uLCBKeXRob24gaW5zdGVhZCBvZiBnZW5lcmljICJQeXRob24iLgotCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJtYXhfYnVmZmVyX3NpemUiIG9mIEJ1ZmZlcmVkV3JpdGVyIGFuZAotICBCdWZmZXJlZFJXUGFpciwgZnJvbSB0aGUgaW8gbW9kdWxlLgotCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIG9ic29sZXRlIGFyZ3VtZW50ICJ2ZXJzaW9uIiBvZiBgYXJncGFyc2UuQXJndW1lbnRQYXJzZXJgLgotCi0tIElzc3VlICMxNDgxNDogSW1wbGVtZW50IG1vcmUgY29uc2lzdGVudCBvcmRlcmluZyBhbmQgc29ydGluZyBiZWhhdmlvdXIgZm9yCi0gIGlwYWRkcmVzcyBvYmplY3RzLgotCi0tIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2AgbmV0d29yayBvYmplY3RzIGNvcnJlY3RseSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbgotICBjb21wYXJlZCB0byBhcmJpdHJhcnkgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhaXNpbmcgVHlwZUVycm9yLgotCi0tIElzc3VlICMxNDk5MDogQ29ycmVjdGx5IGZhaWwgd2l0aCBTeW50YXhFcnJvciBvbiBpbnZhbGlkIGVuY29kaW5nIGRlY2xhcmF0aW9uLgotCi0tIElzc3VlICMxNDgxNDogYGlwYWRkcmVzc2Agbm93IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgd2hlbgotICBjb25zdHJ1Y3RpbmcgaW5zdGFuY2VzIGRpcmVjdGx5IChjaGFuZ2VzIHBlcm1pdHRlZCBkdXJpbmcgYmV0YSBkdWUgdG8KLSAgcHJvdmlzaW9uYWwgQVBJIHN0YXR1cykuCi0KLS0gSXNzdWUgIzE1MjQ3OiBgaW8uRmlsZUlPYCBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IKLSAgcG9pbnRpbmcgdG8gYSBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE1MjYxOiBTdG9wIG9zLnN0YXQoZmQpIGNyYXNoaW5nIG9uIFdpbmRvd3Mgd2hlbiBmZCBub3Qgb3Blbi4KLQotLSBJc3N1ZSAjMTUxNjY6IEltcGxlbWVudCBgaW1wLmdldF90YWcoKWAgdXNpbmcgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgLgotCi0tIElzc3VlICMxNTIxMDogQ2F0Y2ggS2V5RXJyb3Igd2hlbiBgaW1wb3J0bGliLl9faW5pdF9fKClgIGNhbid0IGZpbmQKLSAgX2Zyb3plbl9pbXBvcnRsaWIgaW4gc3lzLm1vZHVsZXMsIG5vdCBJbXBvcnRFcnJvci4KLQotLSBJc3N1ZSAjMTUwMzA6IGBpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyYCBub3cgc3VwcG9ydHMgdGhlIG5ldyBzb3VyY2Ugc2l6ZQotICBoZWFkZXIgZmllbGQgaW4gLnB5YyBmaWxlcy4KLQotLSBJc3N1ZSAjNTM0NjogUHJlc2VydmUgcGVybWlzc2lvbnMgb2YgbWJveCwgTU1ERiBhbmQgQmFieWwgbWFpbGJveCBmaWxlcyBvbgotICBmbHVzaCgpLgotCi0tIElzc3VlICMxMDU3MTogRml4IHRoZSAiLS1zaWduIiBvcHRpb24gb2YgZGlzdHV0aWxzJyB1cGxvYWQgY29tbWFuZC4gIFBhdGNoIGJ5Ci0gIEpha3ViIFdpbGsuCi0KLS0gSXNzdWUgIzk1NTk6IElmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIgY3JlYXRlZCBhbmQKLSAgcmVuYW1lZCBvdmVyIHRoZSBvbGQgZmlsZSB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkIG9uIGFuIG1ib3gsIE1NREYgb3IgQmFieWwKLSAgbWFpbGJveC4KLQotLSBJc3N1ZSAjMTA5MjQ6IEZpeGVkIGBjcnlwdC5ta3NhbHQoKWAgdG8gdXNlIGEgUk5HIHRoYXQgaXMgc3VpdGFibGUgZm9yCi0gIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KLQotLSBJc3N1ZSAjMTUxODQ6IEVuc3VyZSBjb25zaXN0ZW50IHJlc3VsdHMgb2YgT1MgWCBjb25maWd1cmF0aW9uIHRhaWxvcmluZyBmb3IKLSAgdW5pdmVyc2FsIGJ1aWxkcyBieSBmYWN0b3Jpbmcgb3V0IGNvbW1vbiBPUyBYLXNwZWNpZmljIGN1c3RvbWl6YXRpb25zIGZyb20KLSAgc3lzY29uZmlnLCBkaXN0dXRpbHMuc3lzY29uZmlnLCBkaXN0dXRpbHMudXRpbCwgYW5kIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyCi0gIGludG8gYSBuZXcgbW9kdWxlIF9vc3hfc3VwcG9ydC4KLQotQyBBUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NjEwOiBgUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoKWAgbm93IHVzZXMgYSAnbGV2ZWwnIG9mIDAgaW5zdGVhZCBvZiAtMS4KLQotLSBJc3N1ZSAjMTUxNjksIGlzc3VlICMxNDU5OTogU3RyaXAgb3V0IHRoZSBDIGltcGxlbWVudGF0aW9uIG9mCi0gIGBpbXAuc291cmNlX2Zyb21fY2FjaGUoKWAgdXNlZCBieSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBhbmQKLSAgdXNlZCB0aGUgUHl0aG9uIGNvZGUgaW5zdGVhZC4gTGVhZHMgdG8gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoKSB0byBub3QKLSAgdHJ5IHRvIGluZmVyIHRoZSBzb3VyY2UgcGF0aCBmcm9tIHRoZSBieXRlY29kZSBwYXRoIGFzCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIGRvZXMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM2NDkzOiBBbiBpc3N1ZSBpbiBjdHlwZXMgb24gV2luZG93cyB0aGF0IGNhdXNlZCBzdHJ1Y3R1cmUgYml0ZmllbGRzIG9mCi0gIHR5cGUgYGN0eXBlcy5jX3VpbnQzMmAgYW5kIHdpZHRoIDMyIHRvIGluY29ycmVjdGx5IGJlIHNldCBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTUxOTQ6IFVwZGF0ZSBsaWJmZmkgdG8gdGhlIDMuMC4xMSByZWxlYXNlLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzEzMDUyOiBGaXggSURMRSBjcmFzaGluZyB3aGVuIHJlcGxhY2Ugc3RyaW5nIGluIFNlYXJjaC9SZXBsYWNlIGRpYWxvZwotICBlbmRlZCB3aXRoIGBgXGBgLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTQ1ODogcHl0aG9uLWNvbmZpZyBnZXRzIGEgbmV3IG9wdGlvbiAtLWNvbmZpZ2RpciB0byBwcmludCB0aGUgJExJQlBMCi0gIHZhbHVlLgotCi0tIE1vdmUgaW1wb3J0bGliLnRlc3QuYmVuY2htYXJrIHRvIFRvb2xzL2ltcG9ydGJlbmNoLgotCi0tIElzc3VlICMxMjYwNTogVGhlIGdkYiBob29rcyBmb3IgZGVidWdnaW5nIENQeXRob24gKHdpdGhpbiBUb29scy9nZGIpIGhhdmUgYmVlbgotICBlbmhhbmNlZCB0byBzaG93IGluZm9ybWF0aW9uIG9uIG1vcmUgQyBmcmFtZXMgcmVsZXZhbnQgdG8gQ1B5dGhvbiB3aXRoaW4gdGhlCi0gICJweS1idCIgYW5kICJweS1idC1mdWxsIiBjb21tYW5kczoKLQotICAqIEMgZnJhbWVzIHRoYXQgYXJlIHdhaXRpbmcgb24gdGhlIEdJTAotICAqIEMgZnJhbWVzIHRoYXQgYXJlIGdhcmJhZ2UtY29sbGVjdGluZwotICAqIEMgZnJhbWVzIHRoYXQgYXJlIGR1ZSB0byB0aGUgaW52b2NhdGlvbiBvZiBhIFB5Q0Z1bmN0aW9uCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUwNDE6IFVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2ggYnkKLSAgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUyOTU6IFJlb3JnYW5pemUgYW5kIHJld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0uCi0KLS0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weSBtb2R1bGUgYW5kCi0gIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjMTUwNTM6IENvcHkgUHl0aG9uIDMuMyBpbXBvcnQgbG9jayBjaGFuZ2Ugbm90aWNlIHRvIGFsbCByZWxldmFudAotICBmdW5jdGlvbnMgaW4gaW1wIGluc3RlYWQgb2YganVzdCBhdCB0aGUgdG9wIG9mIHRoZSByZWxldmFudCBzZWN0aW9uLgotCi0tIElzc3VlICMxNTI4ODogTGluayB0byB0aGUgdGVybSAibG9hZGVyIiBpbiBub3RlcyBpbiBwa2d1dGlsIGFib3V0IGhvdyB0aGluZ3MKLSAgd29uJ3Qgd29yayBhcyBleHBlY3RlZCBpbiBQeXRob24gMy4zIGFuZCBtYXJrIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25zIGFzCi0gICJjaGFuZ2VkIiBzaW5jZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIHdvcmsgd2l0aCBtb2R1bGVzIGRpcmVjdGx5IGltcG9ydGVkIGJ5Ci0gIGltcG9ydCBpdHNlbGYuCi0KLS0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGBleGVjKClgIG9yCi0gIGBleGVjZmlsZSgpYC4KLQotLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgYGZpbGVjbXAuZGlyY21wKClgIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKLSAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1NDQyOiBFeHBvc2UgdGhlIGRlZmF1bHQgbGlzdCBvZiBkaXJlY3RvcmllcyBpZ25vcmVkIGJ5Ci0gIGBmaWxlY21wLmRpcmNtcCgpYCBhcyBhIG1vZHVsZSBhdHRyaWJ1dGUsIGFuZCBleHBhbmQgdGhlIGxpc3QgdG8gbW9yZSBtb2Rlcm4KLSAgdmFsdWVzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgYF9fc2l6ZW9mX18oKWAgdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuICBQYXRjaAotICBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTMyMDogTWFrZSBpdGVyYXRpbmcgdGhlIGxpc3Qgb2YgdGVzdHMgdGhyZWFkLXNhZmUgd2hlbiBydW5uaW5nIHRlc3RzCi0gIGluIG11bHRpcHJvY2VzcyBtb2RlLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSBJc3N1ZSAjMTUxNjg6IE1vdmUgYGltcG9ydGxpYi50ZXN0YCB0byBgdGVzdC50ZXN0X2ltcG9ydGxpYmAuCi0KLS0gSXNzdWUgIzE1MDkxOiBSZWFjdGl2YXRlIGEgdGVzdCBvbiBVTklYIHdoaWNoIHdhcyBmYWlsaW5nIHRoYW5rcyB0byBhCi0gIGZvcmdvdHRlbiBgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKClgIGNhbGwuCi0KLS0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cy4KLQotLSBJc3N1ZSAjMTUzMDA6IEVuc3VyZSB0aGUgdGVtcG9yYXJ5IHRlc3Qgd29ya2luZyBkaXJlY3RvcmllcyBhcmUgaW4gdGhlIHNhbWUKLSAgcGFyZW50IGZvbGRlciB3aGVuIHJ1bm5pbmcgdGVzdHMgaW4gbXVsdGlwcm9jZXNzIG1vZGUgZnJvbSBhIFB5dGhvbiBidWlsZC4KLSAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1Mjg0OiBTa2lwIHtzZW5kLHJlY3Z9bXNnIHRlc3RzIGluIHRlc3Rfc29ja2V0IHdoZW4gSVB2NiBpcyBub3QKLSAgZW5hYmxlZC4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICMxNTI3NzogRml4IGEgcmVzb3VyY2UgbGVhayBpbiBzdXBwb3J0LnB5IHdoZW4gSVB2NiBpcyBkaXNhYmxlZC4gIFBhdGNoCi0gIGJ5IEJyaWFuIEJyYXppbC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQgdG9vbHMKLSAgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1MDM3OiBCdWlsZCBPUyBYIGluc3RhbGxlcnMgd2l0aCBsb2NhbCBjb3B5IG9mIG5jdXJzZXMgNS45IGxpYnJhcmllcwotICB0byBhdm9pZCBjdXJzZXMudW5nZXRfd2NoIGJ1ZyBwcmVzZW50IGluIG9sZGVyIHZlcnNpb25zIG9mIG5jdXJzZXMgc3VjaCBhcwotICB0aG9zZSBzaGlwcGVkIHdpdGggT1MgWC4KLQotLSBJc3N1ZSAjMTU1NjA6IEZpeCBidWlsZGluZyBfc3FsaXRlMyBleHRlbnNpb24gb24gT1MgWCB3aXRoIGFuIFNESy4gIEFsc28sIGZvcgotICBPUyBYIGluc3RhbGxlcnMsIGVuc3VyZSBjb25zaXN0ZW50IHNxbGl0ZTMgYmVoYXZpb3IgYW5kIGZlYXR1cmUgYXZhaWxhYmlsaXR5Ci0gIGJ5IGJ1aWxkaW5nIGEgbG9jYWwgY29weSBvZiBsaWJzcWxpdGUzIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGUgd2lkZSByYW5nZQotICBvZiB2ZXJzaW9ucyBzdXBwbGllZCB3aXRoIHZhcmlvdXMgT1MgWCByZWxlYXNlcy4KLQotLSBJc3N1ZSAjODg0NzogRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCi0KLS0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgotCi0tIElzc3VlICMxNjI1NjogT1MgWCBpbnN0YWxsZXIgbm93IHNldHMgY29ycmVjdCBwZXJtaXNzaW9ucyBmb3IgZG9jIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTU0MzE6IEFkZCBfZnJlZXplX2ltcG9ydGxpYiBwcm9qZWN0IHRvIHJlZ2VuZXJhdGUgaW1wb3J0bGliLmggb24KLSAgV2luZG93cy4gUGF0Y2ggYnkgS3Jpc3Rqw6FuIFZhbHVyIErDs25zc29uLgotCi0tIElzc3VlICMxNDE5NzogRm9yIE9TIFggZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlIGxpbmtzIHRvIHRoZSBzaGFyZWQgbGlicmFyeQotICBhcmUgY3JlYXRlZCB3aXRoIHRoZSBwcm9wZXIgQUJJIHN1ZmZpeC4KLQotLSBJc3N1ZSAjMTQzMzA6IEZvciBjcm9zcyBidWlsZHMsIGRvbid0IHVzZSBob3N0IHB5dGhvbiwgdXNlIGhvc3Qgc2VhcmNoIHBhdGhzCi0gIGZvciBob3N0IGNvbXBpbGVyLgotCi0tIElzc3VlICMxNTIzNTogQWxsb3cgQmVya2xleSBEQiB2ZXJzaW9ucyB1cCB0byA1LjMgdG8gYnVpbGQgdGhlIGRibSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE1MjY4OiBTZWFyY2ggY3Vyc2VzLmggaW4gL3Vzci9pbmNsdWRlL25jdXJzZXN3LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjctSnVuLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEZpeCBhIChtb3N0IGxpa2VseSkgdmVyeSByYXJlIG1lbW9yeSBsZWFrIHdoZW4gY2FsbGluZyBtYWluKCkgYW5kIG5vdCBiZWluZwotICBhYmxlIHRvIGRlY29kZSBhIGNvbW1hbmQtbGluZSBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTQ4MTU6IFVzZSBQeV9zc2l6ZV90IGluc3RlYWQgb2YgbG9uZyBmb3IgdGhlIG9iamVjdCBoYXNoLCB0bwotICBwcmVzZXJ2ZSBhbGwgNjQgYml0cyBvZiBoYXNoIG9uIFdpbjY0LgotCi0tIElzc3VlICMxMjI2ODogRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkKCkgb3IgcmVhZGFsbCgpIG1ldGhvZHMKLSAgbm8gbG9uZ2VyIGxvc2UgZGF0YSB3aGVuIGFuIHVuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZC4KLSAgSU9FcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIGR1ZSB0byBhIHJlYWQgc3lzdGVtIGNhbGwgcmV0dXJuaW5nIEVJTlRSCi0gIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzExNjI2OiBBZGQgX1NpemVUIGZ1bmN0aW9ucyB0byBzdGFibGUgQUJJLgotCi0tIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwotICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNTA5NjogUmVtb3ZlZCBzdXBwb3J0IGZvciB1cicnIGFzIHRoZSByYXcgbm90YXRpb24gaXNuJ3QKLSAgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLngncyByYXcgdW5pY29kZSBzdHJpbmdzLgotCi0tIElzc3VlICMxMzc4MzogR2VuZXJhdG9yIG9iamVjdHMgbm93IHVzZSB0aGUgaWRlbnRpZmllciBBUElzIGludGVybmFsbHkKLQotLSBJc3N1ZSAjMTQ4NzQ6IFJlc3RvcmUgY2hhcm1hcCBkZWNvZGluZyBzcGVlZCB0byBwcmUtUEVQIDM5MyBsZXZlbHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MDI2OiB1dGYtMTYgZW5jb2RpbmcgaXMgbm93IHNpZ25pZmljYW50bHkgZmFzdGVyICh1cCB0byAxMHgpLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMTAyMjogb3BlbigpIGFuZCBpby5UZXh0SU9XcmFwcGVyIGFyZSBub3cgY2FsbGluZwotICBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGluc3RlYWQgb2YgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKCkKLSAgaW4gdGV4dCBtb2RlIGlmIHRoZSBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkLiBEb24ndCBjaGFuZ2UgdGVtcG9yYXJ5IHRoZQotICBsb2NhbGUgZW5jb2RpbmcgdXNpbmcgbG9jYWxlLnNldGxvY2FsZSgpLCB1c2UgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nCi0gIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgotCi0tIElzc3VlICMxNDY3MzogQWRkIEVyaWMgU25vdydzIHN5cy5pbXBsZW1lbnRhdGlvbiBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTUwMzg6IE9wdGltaXplIHB5dGhvbiBMb2NrcyBvbiBXaW5kb3dzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMjg4OiBDb25zaWRlciAnMCcgYW5kICcwLjAnIGFzIHZhbGlkIGluaXRpYWx2YWx1ZQotICBmb3IgdGtpbnRlciBTaW1wbGVEaWFsb2cuCi0KLS0gSXNzdWUgIzE1NTEyOiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBwYXJzZXIuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDY5OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBkZXF1ZSBvYmplY3RzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQ4OTogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgQnl0ZXNJTyBvYmplY3RzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTQ4NzogQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgYnVmZmVyZWQgSS9PIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NTE0OiBDb3JyZWN0IF9fc2l6ZW9mX18gc3VwcG9ydCBmb3IgY3B1X3NldC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUxNzc6IEFkZGVkIGRpcl9mZCBwYXJhbWV0ZXIgdG8gb3MuZndhbGsoKS4KLQotLSBJc3N1ZSAjMTUwNjE6IFJlLWltcGxlbWVudGVkIGhtYWMuY29tcGFyZV9kaWdlc3QoKSBpbiBDIHRvIHByZXZlbnQgZnVydGhlcgotICB0aW1pbmcgYW5hbHlzaXMgYW5kIHRvIHN1cHBvcnQgYWxsIGJ1ZmZlciBwcm90b2NvbCBhd2FyZSBvYmplY3RzIGFzIHdlbGwgYXMKLSAgQVNDSUkgb25seSBzdHIgaW5zdGFuY2VzIHNhZmVseS4KLQotLSBJc3N1ZSAjMTUxNjQ6IENoYW5nZSByZXR1cm4gdmFsdWUgb2YgcGxhdGZvcm0udW5hbWUoKSBmcm9tIGEKLSAgcGxhaW4gdHVwbGUgdG8gYSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlLgotCi0tIFN1cHBvcnQgTWFnZWlhIExpbnV4IGluIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCi0KLS0gSXNzdWUgIzExNjc4OiBTdXBwb3J0IEFyY2ggbGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTUxMTg6IENoYW5nZSByZXR1cm4gdmFsdWUgb2Ygb3MudW5hbWUoKSBhbmQgb3MudGltZXMoKSBmcm9tCi0gIHBsYWluIHR1cGxlcyB0byBpbW11dGFibGUgaXRlcmFibGUgb2JqZWN0cyB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMKLSAgKHN0cnVjdHNlcSBvYmplY3RzKS4KLQotLSBTcGVlZCB1cCBfZGVjaW1hbCBieSBhbm90aGVyIDEwLTE1JSBieSBjYWNoaW5nIHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dAotICB0aGF0IHdhcyBsYXN0IGFjY2Vzc2VkLiBJbiB0aGUgcGkgYmVuY2htYXJrICg2NC1iaXQgcGxhdGZvcm0sIHByZWM9OSksCi0gIF9kZWNpbWFsIGlzIG5vdyBvbmx5IDEuNXggc2xvd2VyIHRoYW4gZmxvYXQuCi0KLS0gUmVtb3ZlIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCB3aGljaCBpcyBub3QgcmVhZHkgZm9yIHByaW1lIHRpbWUuCi0KLS0gSXNzdWUgIzE1MTU0OiBBZGQgImRpcl9mZCIgcGFyYW1ldGVyIHRvIG9zLnJtZGlyLCByZW1vdmUgInJtZGlyIgotICBwYXJhbWV0ZXIgZnJvbSBvcy5yZW1vdmUgLyBvcy51bmxpbmsuCi0KLS0gSXNzdWUgIzQ0ODk6IEFkZCBhIHNodXRpbC5ybXRyZWUgdGhhdCBpc24ndCBzdXNjZXB0aWJsZSB0byBzeW1saW5rIGF0dGFja3MuCi0gIEl0IGlzIHVzZWQgYXV0b21hdGljYWxseSBvbiBwbGF0Zm9ybXMgc3VwcG9ydGluZyB0aGUgbmVjZXNzYXJ5IG9zLm9wZW5hdCgpCi0gIGFuZCBvcy51bmxpbmthdCgpIGZ1bmN0aW9ucy4gTWFpbiBjb2RlIGJ5IE1hcnRpbiB2b24gTMO2d2lzLgotCi0tIElzc3VlICMxNTE1NjogSFRNTFBhcnNlciBub3cgdXNlcyB0aGUgbmV3ICJodG1sLmVudGl0aWVzLmh0bWw1IiBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxMTExMzogYWRkIGEgbmV3ICJodG1sNSIgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBuYW1lZCBjaGFyYWN0ZXIKLSAgcmVmZXJlbmNlcyBkZWZpbmVkIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZCBhbmQgdGhlIGVxdWl2YWxlbnQgVW5pY29kZQotICBjaGFyYWN0ZXIocykgdG8gdGhlIGh0bWwuZW50aXRpZXMgbW9kdWxlLgotCi0tIElzc3VlICMxNTExNDogdGhlIHN0cmljdCBtb2RlIG9mIEhUTUxQYXJzZXIgYW5kIHRoZSBIVE1MUGFyc2VFcnJvciBleGNlcHRpb24KLSAgYXJlIGRlcHJlY2F0ZWQgbm93IHRoYXQgdGhlIHBhcnNlciBpcyBhYmxlIHRvIHBhcnNlIGludmFsaWQgbWFya3VwLgotCi0tIElzc3VlICMzNjY1OiBcdSBhbmQgXFUgZXNjYXBlcyBhcmUgbm93IHN1cHBvcnRlZCBpbiB1bmljb2RlIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbnMuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTE1MzogQWRkZWQgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMgdG8gc2ltcGxpZnkgd2hpdGUgYm94Ci0gIHRlc3Rpbmcgb2YgZ2VuZXJhdG9yIHN0YXRlIHVwZGF0ZXMKLQotLSBJc3N1ZSAjMTMwNjI6IEFkZGVkIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMgdG8gc2ltcGxpZnkgdGVzdGluZyBzdGF0ZWZ1bAotICBjbG9zdXJlcwotCi0tIElzc3VlICMxMTAyNDogRml4ZXMgYW5kIGFkZGl0aW9uYWwgdGVzdHMgZm9yIFRpbWUySW50ZXJuYWxkYXRlLgotCi0tIElzc3VlICMxNDYyNjogTGFyZ2UgcmVmYWN0b3Jpbmcgb2YgZnVuY3Rpb25zIC8gcGFyYW1ldGVycyBpbiB0aGUgb3MgbW9kdWxlLgotICBNYW55IGZ1bmN0aW9ucyBub3cgc3VwcG9ydCAiZGlyX2ZkIiBhbmQgImZvbGxvd19zeW1saW5rcyIgcGFyYW1ldGVyczsKLSAgc29tZSBhbHNvIHN1cHBvcnQgYWNjZXB0aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGluIHBsYWNlIG9mIGEgcGF0aAotICBzdHJpbmcuICBBZGRlZCBvcy5zdXBwb3J0XyogY29sbGVjdGlvbnMgYXMgTEJZTCBoZWxwZXJzLiAgUmVtb3ZlZCBtYW55Ci0gIGZ1bmN0aW9ucyBvbmx5IHByZXZpb3VzbHkgc2VlbiBpbiAzLjMgYWxwaGEgcmVsZWFzZXMgKG9mdGVuIHN0YXJ0aW5nIHdpdGgKLSAgImYiIG9yICJsIiwgb3IgZW5kaW5nIHdpdGggImF0IikuICBPcmlnaW5hbGx5IHN1Z2dlc3RlZCBieSBTZXJoaXkgU3RvcmNoYWthOwotICBpbXBsZW1lbnRlZCBieSBMYXJyeSBIYXN0aW5ncy4KLQotLSBJc3N1ZSAjMTUwMDg6IEltcGxlbWVudCBQRVAgMzYyICJTaWduYXR1cmUgT2JqZWN0cyIuCi0gIFBhdGNoIGJ5IFl1cnkgU2VsaXZhbm92LgotCi0tIElzc3VlOiAjMTUxMzg6IGJhc2U2NC51cmxzYWZlX3tlbixkZX1jb2RlKCkgYXJlIG5vdyAzLTR4IGZhc3Rlci4KLQotLSBJc3N1ZSAjNDQ0NTgyOiBBZGQgc2h1dGlsLndoaWNoLCBmb3IgZmluZGluZyBwcm9ncmFtcyBvbiB0aGUgc3lzdGVtIHBhdGguCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgRGVtYWluZSwgd2l0aCBsYXRlciBpdGVyYXRpb25zIGJ5IEphbiBLaWxsaWFuCi0gIGFuZCBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzE0ODM3OiBTU0wgZXJyb3JzIG5vdyBoYXZlIGBgbGlicmFyeWBgIGFuZCBgYHJlYXNvbmBgIGF0dHJpYnV0ZXMKLSAgZGVzY3JpYmluZyBwcmVjaXNlbHkgd2hhdCBoYXBwZW5lZCBhbmQgaW4gd2hpY2ggT3BlblNTTCBzdWJtb2R1bGUuICBUaGUKLSAgc3RyKCkgb2YgYSBTU0xFcnJvciBpcyBhbHNvIGVuaGFuY2VkIGFjY29yZGluZ2x5LgotCi0tIElzc3VlICM5NTI3OiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kIHdpbGwgbm93IHN1cHBseSBhIGNsYXNzCi0gIHRpbWV6b25lIGluc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN5c3RlbSBsb2NhbCB0aW1lem9uZSB3aGVuCi0gIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTQ2NTM6IGVtYWlsLnV0aWxzLm1rdGltZV90eigpIG5vIGxvbmdlciByZWxpZXMgb24gc3lzdGVtCi0gIG1rdGltZSgpIHdoZW4gdGltZXpvbmUgb2ZmZXN0IGlzIHN1cHBsaWVkLgotCi0tIElzc3VlICMxNDY4NDogemxpYi5jb21wcmVzc29iaigpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKSBub3cgc3VwcG9ydCB0aGUgdXNlCi0gIG9mIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyaWVzLiBPcmlnaW5hbCBwYXRjaCBieSBTYW0gUnVzaGluZy4KLQotLSBGaXggR3ppcEZpbGUncyBoYW5kbGluZyBvZiBmaWxlbmFtZXMgZ2l2ZW4gYXMgYnl0ZXMgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ3NzI6IFJldHVybiBkZXN0aW5hdGlvbiB2YWx1ZXMgZnJvbSBzb21lIHNodXRpbCBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE1MDY0OiBJbXBsZW1lbnQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIGZvciBtdWx0aXByb2Nlc3NpbmcgdHlwZXMKLQotLSBJc3N1ZSAjMTUxMDE6IE1ha2UgcG9vbCBmaW5hbGl6ZXIgYXZvaWQgam9pbmluZyBjdXJyZW50IHRocmVhZC4KLQotLSBJc3N1ZSAjMTQ2NTc6IFRoZSBmcm96ZW4gaW5zdGFuY2Ugb2YgaW1wb3J0bGliIHVzZWQgZm9yIGJvb3RzdHJhcCBpcyBub3cKLSAgYWxzbyB0aGUgbW9kdWxlIGltcG9ydGVkIGFzIGltcG9ydGxpYi5fYm9vdHN0cmFwLgotCi0tIElzc3VlICMxNDA1NTogQWRkIF9fc2l6ZW9mX18gc3VwcG9ydCB0byBfZWxlbWVudHRyZWUuCi0KLS0gSXNzdWUgIzE1MDU0OiBBIGJ1ZyBpbiB0b2tlbml6ZS50b2tlbml6ZSB0aGF0IGNhdXNlZCBzdHJpbmcgbGl0ZXJhbHMKLSAgd2l0aCAnYicgcHJlZml4ZXMgdG8gYmUgaW5jb3JyZWN0bHkgdG9rZW5pemVkIGhhcyBiZWVuIGZpeGVkLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTAwNjogQWxsb3cgZXF1YWxpdHkgY29tcGFyaXNvbiBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZQotICB0aW1lIG9yIGRhdGV0aW1lIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCi0gIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCi0gIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KLQotLSBJc3N1ZSAjMTQwNTk6IEltcGxlbWVudCBtdWx0aXByb2Nlc3NpbmcuQmFycmllci4KLQotLSBJc3N1ZSAjMTUwNjE6IFRoZSBpbmFwcHJvcHJpYXRlbHkgbmFtZWQgaG1hYy5zZWN1cmVfY29tcGFyZSBoYXMgYmVlbgotICByZW5hbWVkIHRvIGhtYWMuY29tcGFyZV9kaWdlc3QsIHJlc3RyaWN0ZWQgdG8gb3BlcmF0aW5nIG9uIGJ5dGVzIGlucHV0cwotICBvbmx5IGFuZCBoYWQgaXRzIGRvY3VtZW50YXRpb24gdXBkYXRlZCB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBib3RoIGl0cwotICBpbnRlbnQgYW5kIGl0cyBsaW1pdGF0aW9ucwotCi0tIElzc3VlICMxMzg0MTogTWFrZSBjaGlsZCBwcm9jZXNzZXMgZXhpdCB1c2luZyBzeXMuZXhpdCgpIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE0OTM2OiBjdXJzZXNfcGFuZWwgd2FzIGNvbnZlcnRlZCB0byBQRVAgMzEyMSBhbmQgUEVQIDM4NCBBUEkuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTY2NzU0NjogT24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgdG1fem9uZSBhbmQgdG1fZ210b2ZmIGZpZWxkcwotICBpbiBzdHJ1Y3QgdG0sIHRpbWUuc3RydWN0X3RpbWUgb2JqZWN0cyByZXR1cm5lZCBieSB0aW1lLmdtdGltZSgpLAotICB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLnN0cnB0aW1lKCkgZnVuY3Rpb25zIG5vdyBoYXZlIHRtX3pvbmUgYW5kCi0gIHRtX2dtdG9mZiBhdHRyaWJ1dGVzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUGF1bCBCb2RkaWUuCi0KLS0gUmVuYW1lIGFkanVzdGVkIGF0dHJpYnV0ZSB0byBhZGp1c3RhYmxlIGluIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSByZXN1bHQuCi0KLS0gSXNzdWUgIzM1MTg6IFJlbW92ZSByZWZlcmVuY2VzIHRvIG5vbi1leGlzdGVudCBCYXNlTWFuYWdlci5mcm9tX2FkZHJlc3MoKQotICBtZXRob2QuCi0KLS0gSXNzdWUgIzEzODU3OiBBZGRlZCB0ZXh0d3JhcC5pbmRlbnQoKSBmdW5jdGlvbiAoaW5pdGlhbCBwYXRjaCBieSBFenJhCi0gIEJlcmNoKQotCi0tIElzc3VlICMyNzM2OiBBZGRlZCBkYXRldGltZS50aW1lc3RhbXAoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzEzODU0OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBwcm9wZXJseSBoYW5kbGUgbm9uLWludGVnZXIKLSAgbm9uLXN0cmluZyBhcmd1bWVudCB0byBTeXN0ZW1FeGl0LgotCi0tIElzc3VlICMxMjE1NzogTWFrZSBwb29sLm1hcCgpIGVtcHR5IGl0ZXJhYmxlcyBjb3JyZWN0bHkuICBJbml0aWFsCi0gIHBhdGNoIGJ5IG1vdWFkLgotCi0tIElzc3VlICMxMTgyMzogZGlzYXNzZW1ibHkgbm93IHNob3dzIGFyZ3VtZW50IGNvdW50cyBvbiBjYWxscyB3aXRoIGtleXdvcmQgYXJncy4KLQotLSBJc3N1ZSAjMTQ3MTE6IG9zLnN0YXRfZmxvYXRfdGltZXMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLgotCi0tIExaTUFGaWxlIG5vdyBhY2NlcHRzIHRoZSBtb2RlcyAicmIiLyJ3YiIvImFiIiBhcyBzeW5vbnltcyBvZiAiciIvInciLyJhIi4KLQotLSBUaGUgYnoyIGFuZCBsem1hIG1vZHVsZXMgbm93IGVhY2ggY29udGFpbiBhbiBvcGVuKCkgZnVuY3Rpb24sIGFsbG93aW5nCi0gIGNvbXByZXNzZWQgZmlsZXMgdG8gcmVhZGlseSBiZSBvcGVuZWQgaW4gdGV4dCBtb2RlIGFzIHdlbGwgYXMgYmluYXJ5IG1vZGUuCi0KLS0gQloyRmlsZS5fX2luaXRfXygpIGFuZCBMWk1BRmlsZS5fX2luaXRfXygpIG5vdyBhY2NlcHQgYSBmaWxlIG9iamVjdCBhcyB0aGVpcgotICBmaXJzdCBhcmd1bWVudCwgcmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgc2VwYXJhdGUgImZpbGVvYmoiIGFyZ3VtZW50LgotCi0tIGd6aXAub3BlbigpIG5vdyBhY2NlcHRzIGZpbGUgb2JqZWN0cyBhcyB3ZWxsIGFzIGZpbGVuYW1lcy4KLQotLSBJc3N1ZSAjMTQ5OTI6IG9zLm1ha2VkaXJzKHBhdGgsIGV4aXN0X29rPVRydWUpIHdvdWxkIHJhaXNlIGFuIE9TRXJyb3IKLSAgd2hlbiB0aGUgcGF0aCBleGlzdGVkIGFuZCBoYWQgdGhlIFNfSVNHSUQgbW9kZSBiaXQgc2V0IHdoZW4gaXQgd2FzCi0gIG5vdCBleHBsaWNpdGx5IGFza2VkIGZvci4gIFRoaXMgaXMgbm8gbG9uZ2VyIGFuIGV4Y2VwdGlvbiBhcyBta2RpcgotICBjYW5ub3QgY29udHJvbCBpZiB0aGUgT1Mgc2V0cyB0aGF0IGJpdCBmb3IgaXQgb3Igbm90LgotCi0tIElzc3VlICMxNDk4OTogTWFrZSB0aGUgQ0dJIGVuYWJsZSBvcHRpb24gdG8gaHR0cC5zZXJ2ZXIgYXZhaWxhYmxlIHZpYSBjb21tYW5kCi0gIGxpbmUuCi0KLS0gSXNzdWUgIzE0OTg3OiBBZGQgYSBtaXNzaW5nIGltcG9ydCBzdGF0ZW1lbnQgdG8gaW5zcGVjdC4KLQotLSBJc3N1ZSAjMTA3OTogZW1haWwuaGVhZGVyLmRlY29kZV9oZWFkZXIgbm93IGNvcnJlY3RseSBwYXJzZXMgYWxsIHRoZSBleGFtcGxlcwotICBpbiBSRkMyMDQ3LiAgVGhlcmUgaXMgYSBuZWNlc3NhcnkgdmlzaWJsZSBiZWhhdmlvciBjaGFuZ2U6IHRoZSBsZWFkaW5nIGFuZC9vcgotICB0cmFpbGluZyB3aGl0ZXNwYWNlIG9uIEFTQ0lJIHBhcnRzIGlzIG5vdyBwcmVzZXJ2ZWQuCi0KLS0gSXNzdWUgIzE0OTY5OiBCZXR0ZXIgaGFuZGxpbmcgb2YgZXhjZXB0aW9uIGNoYWluaW5nIGluIGNvbnRleHRsaWIuRXhpdFN0YWNrCi0KLS0gSXNzdWUgIzE0OTYzOiBDb252ZXJ0IGNvbnRleHRsaWIuRXhpdFN0YWNrLl9fZXhpdF9fIHRvIHVzZSBhbiBpdGVyYXRpdmUKLSAgYWxnb3JpdGhtIChQYXRjaCBieSBBbG9uIEhvcmV2KQotCi0tIElzc3VlICMxNDc4NTogQWRkIHN5cy5fZGVidWdtYWxsb2NzdGF0cygpIHRvIGhlbHAgZGVidWcgbG93LWxldmVsIG1lbW9yeQotICBhbGxvY2F0aW9uIGlzc3VlcwotCi0tIElzc3VlICMxNDQ0MzogRW5zdXJlIHRoYXQgLnB5IGZpbGVzIGFyZSBieXRlLWNvbXBpbGVkIHdpdGggdGhlIGNvcnJlY3QgUHl0aG9uCi0gIGV4ZWN1dGFibGUgd2l0aGluIGJkaXN0X3JwbSBldmVuIG9uIG9sZGVyIHZlcnNpb25zIG9mIFJQTQotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCi0gIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTM3ODM6IEluYWR2ZXJ0ZW50IGFkZGl0aW9ucyB0byB0aGUgcHVibGljIEMgQVBJIGluIHRoZSBQRVAgMzgwCi0gIGltcGxlbWVudGF0aW9uIGhhdmUgZWl0aGVyIGJlZW4gcmVtb3ZlZCBvciBtYXJrZWQgYXMgcHJpdmF0ZSBpbnRlcmZhY2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUwMDA6IFN1cHBvcnQgdGhlICJ1bmlxdWUiIHgzMiBhcmNoaXRlY3R1cmUgaW4gX3Bvc2l4c3VicHJvY2Vzcy5jLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzk4MDM6IERvbid0IGNsb3NlIElETEUgb24gc2F2aW5nIGlmIGJyZWFrcG9pbnQgaXMgb3Blbi4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZwotICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTUxNzY6IENsYXJpZmllZCBiZWhhdmlvciwgZG9jdW1lbnRhdGlvbiwgYW5kIGltcGxlbWVudGF0aW9uCi0gIG9mIG9zLmxpc3RkaXIoKS4KLQotLSBJc3N1ZSAjMTQ5ODI6IERvY3VtZW50IHRoYXQgcGtndXRpbCdzIGl0ZXJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZSB0aGUKLSAgbm9uLXN0YW5kYXJkIGl0ZXJfbW9kdWxlcygpIG1ldGhvZCB0byBiZSBkZWZpbmVkIGJ5IGFuIGltcG9ydGVyIChzb21ldGhpbmcKLSAgdGhlIGltcG9ydGxpYiBpbXBvcnRlcnMgZG8gbm90IGRlZmluZSkuCi0KLS0gSXNzdWUgIzE1MDgxOiBEb2N1bWVudCBQeVN0YXRlX0ZpbmRNb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KLQotLSBJc3N1ZSAjMTQ4MTQ6IEFkZGVkIGZpcnN0IGRyYWZ0IG9mIGlwYWRkcmVzcyBtb2R1bGUgQVBJIHJlZmVyZW5jZQotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTUxODc6IEJ1Z2ZpeDogcmVtb3ZlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB0ZXN0X3NodXRpbCB3YXMgbGVhdmluZwotICBiZWhpbmQuCi0KLS0gSXNzdWUgIzE0NzY5OiB0ZXN0X2NhcGkgbm93IGhhcyBTa2lwaXRlbVRlc3QsIHdoaWNoIGNsZXZlcmx5IGNoZWNrcwotICBmb3IgInBhcml0eSIgYmV0d2VlbiBQeUFyZ19QYXJzZVR1cGxlKCkgYW5kIHRoZSBQeXRob24vZ2V0YXJncy5jIHN0YXRpYwotICBmdW5jdGlvbiBza2lwaXRlbSgpIGZvciBhbGwgcG9zc2libGUgImZvcm1hdCB1bml0cyIuCi0KLS0gdGVzdF9ubnRwbGliIG5vdyB0b2xlcmF0ZXMgYmVpbmcgcnVuIGZyb20gYmVoaW5kIE5OVFAgZ2F0ZXdheXMgdGhhdCBhZGQKLSAgIlgtQW50aXZpcnVzIiBoZWFkZXJzIHRvIGFydGljbGVzCi0KLS0gSXNzdWUgIzE1MDQzOiB0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MKLSAgYmxvY2sgbG9hZGluZyBvZiB0aGUgZ2RiIGhvb2tzCi0KLS0gSXNzdWUgIzE0OTYzOiBBZGQgdGVzdCBjYXNlcyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIGJlaGF2aW91cgotICBpbiBjb250ZXh0bGliLkV4aXRTdGFjayAoSW5pdGlhbCBwYXRjaCBieSBBbG9uIEhvcmV2KQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTM1OTA6IEltcHJvdmUgc3VwcG9ydCBmb3IgT1MgWCBYY29kZSA0OgotICAgICogVHJ5IHRvIGF2b2lkIGJ1aWxkaW5nIFB5dGhvbiBvciBleHRlbnNpb24gbW9kdWxlcyB3aXRoIHByb2JsZW1hdGljCi0gICAgICBsbHZtLWdjYyBjb21waWxlci4KLSAgICAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93Ci0gICAgICBjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHBwYyBhbmQKLSAgICAgIHBwYzY0IGFyY2hzIHdoZW4gbm90IGF2YWlsYWJsZS4KLSAgICAqIFNpbmNlIFhjb2RlIDQgbm8gbG9uZ2VyIGluc3RhbGwgU0RLcyBpbiBkZWZhdWx0IGxvY2F0aW9ucywKLSAgICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcgaW5zdGFsbGVkIGhlYWRlcnMKLSAgICAgIGFuZCBsaWJzIGlmIHRoZSBTREsgdXNlZCB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90Ci0gICAgICBhdmFpbGFibGUuCi0gICAgKiBVcGRhdGUgLi9jb25maWd1cmUgdG8gdXNlIGJldHRlciBkZWZhdWx0cyBmb3IgdW5pdmVyc2FsIGJ1aWxkczsKLSAgICAgIGluIHBhcnRpY3VsYXIsIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz15ZXMgdXNlcyB0aGUgWGNvZGUgZGVmYXVsdAotICAgICAgU0RLIGFuZCAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIG5vdyBkZWZhdWx0cyB0byAiaW50ZWwiIGlmIHBwYwotICAgICAgbm90IGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTQyMjU6IEZpeCBVbmljb2RlIHN1cHBvcnQgZm9yIGN1cnNlcyAoIzEyNTY3KSBvbiBPUyBYCi0KLS0gSXNzdWUgIzE0OTI4OiBGaXggaW1wb3J0bGliIGJvb3RzdHJhcCBpc3N1ZXMgYnkgdXNpbmcgYSBjdXN0b20gZXhlY3V0YWJsZQotICAoTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYikgdG8gYnVpbGQgUHl0aG9uL2ltcG9ydGxpYi5oLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDQ/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAzMS1NYXktMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0ODM1OiBNYWtlIHBsaXN0bGliIG91dHB1dCBlbXB0eSBhcnJheXMgJiBkaWN0cyBsaWtlIE9TIFguCi0gIFBhdGNoIGJ5IFNpZG5leSBTYW4gTWFydMOtbi4KLQotLSBJc3N1ZSAjMTQ3NDQ6IFVzZSB0aGUgbmV3IF9QeVVuaWNvZGVXcml0ZXIgaW50ZXJuYWwgQVBJIHRvIHNwZWVkIHVwCi0gIHN0ciVhcmdzIGFuZCBzdHIuZm9ybWF0KGFyZ3MpLgotCi0tIElzc3VlICMxNDkzMDogTWFrZSBtZW1vcnl2aWV3IG9iamVjdHMgd2Vha3JlZmFibGUuCi0KLS0gSXNzdWUgIzE0Nzc1OiBGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlCi0gIGNvbGxlY3RvciByZXBlYXRlZGx5IHRyeWluZyB0byB1bnRyYWNrIGRpY3RzLgotCi0tIElzc3VlICMxNDg1NzogZml4IHJlZ3Jlc3Npb24gaW4gcmVmZXJlbmNlcyB0byBQRVAgMzEzNSBpbXBsaWNpdCBfX2NsYXNzX18KLSAgY2xvc3VyZSB2YXJpYWJsZSAoUmVvcGVucyBpc3N1ZSAjMTIzNzApCi0KLS0gSXNzdWUgIzE0NzEyIChQRVAgNDA1KTogVmlydHVhbCBlbnZpcm9ubWVudHMuIEltcGxlbWVudGVkIGJ5IFZpbmF5IFNhamlwLgotCi0tIElzc3VlICMxNDY2MCAoUEVQIDQyMCk6IE5hbWVzcGFjZSBwYWNrYWdlcy4gSW1wbGVtZW50ZWQgYnkgRXJpYyBTbWl0aC4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzkyNjA6IEEgZmluZXItZ3JhaW5lZCBpbXBvcnQgbG9jay4gIE1vc3Qgb2YgdGhlIGltcG9ydCBzZXF1ZW5jZQotICBub3cgdXNlcyBwZXItbW9kdWxlIGxvY2tzIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGVsaW1pbmF0aW5nCi0gIHdlbGwta25vd24gaXNzdWVzIHdpdGggdGhyZWFkcyBhbmQgaW1wb3J0cy4KLQotLSBJc3N1ZSAjMTQ2MjQ6IFVURi0xNiBkZWNvZGluZyBpcyBub3cgM3ggdG8gNHggZmFzdGVyIG9uIHZhcmlvdXMgaW5wdXRzLgotICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIGFzZGxfc2VxIGFuZCBhc2RsX2ludF9zZXEgYXJlIG5vdyBQeV9zc2l6ZV90IHNpemVkLgotCi0tIElzc3VlICMxNDEzMyAoUEVQIDQxNSk6IEltcGxlbWVudCBzdXBwcmVzc2lvbiBvZiBfX2NvbnRleHRfXyBkaXNwbGF5IHdpdGggYW4KLSAgYXR0cmlidXRlIG9uIEJhc2VFeGNlcHRpb24uIFRoaXMgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG1lY2hhbmlzbSBvZiBQRVAgNDA5LgotCi0tIElzc3VlICMxNDQxNzogTXV0YXRpbmcgYSBkaWN0IGR1cmluZyBsb29rdXAgbm93IHJlc3RhcnRzIHRoZSBsb29rdXAgaW5zdGVhZAotICBvZiByYWlzaW5nIGEgUnVudGltZUVycm9yICh1bmRvZXMgaXNzdWUgIzE0MjA1KS4KLQotLSBJc3N1ZSAjMTQ3Mzg6IFNwZWVkLXVwIFVURi04IGRlY29kaW5nIG9uIG5vbi1BU0NJSSBkYXRhLiAgUGF0Y2ggYnkgU2VyaGl5Ci0gIFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcwotICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ2OTA6IFVzZSBtb25vdG9uaWMgY2xvY2sgaW5zdGVhZCBvZiBzeXN0ZW0gY2xvY2sgaW4gdGhlIHNjaGVkLAotICBzdWJwcm9jZXNzIGFuZCB0cmFjZSBtb2R1bGVzLgotCi0tIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KLSAgYmRpc3RfcnBtLiBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICMxMjUxNTogZW1haWwgbm93IHJlZ2lzdGVycyBhIGRlZmVjdCBpZiBpdCBnZXRzIHRvIEVPRiB3aGlsZSBwYXJzaW5nCi0gIGEgTUlNRSBwYXJ0IHdpdGhvdXQgc2VlaW5nIHRoZSBjbG9zaW5nIE1JTUUgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzE2NzI1Njg6IGVtYWlsIG5vdyBhbHdheXMgZGVjb2RlcyBiYXNlNjQgcGF5bG9hZHMsIGFkZGluZyBwYWRkaW5nIGFuZAotICBpZ25vcmluZyBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaWYgbmVlZGVkLCBhbmQgcmVnaXN0ZXJpbmcgZGVmZWN0cwotICBmb3IgYW55IHN1Y2ggcHJvYmxlbXMuCi0KLS0gSXNzdWUgIzE0OTI1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IHdoZW4gdGhlIHBhcnNlciBkZWNpZGVzIHRoYXQgdGhlcmUKLSAgaXMgYSBtaXNzaW5nIGhlYWRlci9ib2R5IHNlcGFyYXRvciBsaW5lLiAgTWFsZm9ybWVkSGVhZGVyRGVmZWN0LCB3aGljaCB0aGUKLSAgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBhY3R1YWxseSBnZW5lcmF0ZSwgaXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMTAzNjU6IEZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuCi0gIHRoZSBwYXJlbnQgd2luZG93IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGRpYWxvZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzg3Mzk6IFVwZGF0ZWQgc210cGQgdG8gc3VwcG9ydCBSRkMgNTMyMSwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIHRoZQotICBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4KLQotLSBJc3N1ZSAjNjY1MTk0OiBBZGRlZCBhIGxvY2FsdGltZSBmdW5jdGlvbiB0byBlbWFpbC51dGlscyB0byBwcm92aWRlIGFuCi0gIGF3YXJlIGxvY2FsIGRhdGV0aW1lIGZvciB1c2UgaW4gc2V0dGluZyBEYXRlIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzEyNTg2OiBBZGRlZCBuZXcgcHJvdmlzaW9uYWwgcG9saWNpZXMgdGhhdCBpbXBsZW1lbnQgY29udmVuaWVudAotICB1bmljb2RlIHN1cHBvcnQgZm9yIGVtYWlsIGhlYWRlcnMuICBTZWUgV2hhdCdzIE5ldyBmb3IgZGV0YWlscy4KLQotLSBJc3N1ZSAjMTQ3MzE6IFJlZmFjdG9yZWQgZW1haWwgUG9saWN5IGZyYW1ld29yayB0byBzdXBwb3J0IGZ1bGwgYmFja3dhcmQKLSAgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIgYnkgZGVmYXVsdCB5ZXQgYWxsb3cgZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YKLSAgbmV3IGZlYXR1cmVzIHRocm91Z2ggbmV3IHBvbGljaWVzLiAgTm90ZSB0aGF0IFBvbGljeS5tdXN0X2JlXzdiaXQgaXMgcmVuYW1lZAotICB0byBjdGVfdHlwZS4KLQotLSBJc3N1ZSAjMTQ4NzY6IFVzZSB1c2VyLXNlbGVjdGVkIGZvbnQgZm9yIGhpZ2hsaWdodCBjb25maWd1cmF0aW9uLgotCi0tIElzc3VlICMxNDkyMDogRml4IHRoZSBoZWxwKHVybGxpYi5wYXJzZSkgZmFpbHVyZSBvbiBsb2NhbGUgQyBvbiB0ZXJtaW5hbHMuCi0gIEhhdmUgYXNjaWkgY2hhcmFjdGVycyBpbiBoZWxwLgotCi0tIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCi0gIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgotCi0tIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKLSAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KLQotLSBJc3N1ZSAjMTQ4NjI6IEFkZCBtaXNzaW5nIG5hbWVzIHRvIG9zLl9fYWxsX18KLQotLSBJc3N1ZSAjMTQ4NzU6IFVzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTM1ODU6IEFkZGVkIGNvbnRleHRsaWIuRXhpdFN0YWNrCi0KLS0gUEVQIDMxNDQsIElzc3VlICMxNDgxNDogQWRkZWQgdGhlIGlwYWRkcmVzcyBtb2R1bGUKLQotLSBJc3N1ZSAjMTQ0MjY6IENvcnJlY3QgdGhlIERhdGUgZm9ybWF0IGluIEV4cGlyZXMgYXR0cmlidXRlIG9mIFNldC1Db29raWUKLSAgSGVhZGVyIGluIENvb2tpZS5weS4KLQotLSBJc3N1ZSAjMTQ1ODg6IFRoZSB0eXBlcyBtb2R1bGUgbm93IHByb3ZpZGUgbmV3X2NsYXNzKCkgYW5kIHByZXBhcmVfY2xhc3MoKQotICBmdW5jdGlvbnMgdG8gc3VwcG9ydCBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkKLSAgRGFuaWVsIFVyYmFuIGFuZCBOaWNrIENvZ2hsYW4uCi0KLS0gSXNzdWUgIzEzMTUyOiBBbGxvdyB0byBzcGVjaWZ5IGEgY3VzdG9tIHRhYnNpemUgZm9yIGV4cGFuZGluZyB0YWJzIGluCi0gIHRleHR3cmFwLiBQYXRjaCBieSBKb2huIEZldWVyc3RlaW4uCi0KLS0gSXNzdWUgIzE0NzIxOiBTZW5kIHRoZSBjb3JyZWN0ICdDb250ZW50LWxlbmd0aDogMCcgaGVhZGVyIHdoZW4gdGhlIGJvZHkgaXMgYW4KLSAgZW1wdHkgc3RyaW5nICcnLiBJbml0aWFsIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEFydmUgS251ZHNlbi4KLQotLSBJc3N1ZSAjMTQwNzI6IEZpeCBwYXJzaW5nIG9mICd0ZWwnIFVSSXMgaW4gdXJscGFyc2UgYnkgbWFraW5nIHRoZSBjaGVjayBmb3IKLSAgcG9ydHMgc3RyaWN0ZXIuCi0KLS0gSXNzdWUgIzkzNzQ6IEdlbmVyaWMgcGFyc2luZyBvZiBxdWVyeSBhbmQgZnJhZ21lbnQgcG9ydGlvbnMgb2YgdXJsIGZvciBhbnkKLSAgc2NoZW1lLiBTdXBwb3J0ZWQgYm90aCBieSBSRkMzOTg2IGFuZCBSRkMyMzk2LgotCi0tIElzc3VlICMxNDc5ODogRml4IHRoZSBmdW5jdGlvbnMgaW4gcHljbGJyIHRvIHJhaXNlIGFuIEltcG9ydEVycm9yCi0gIHdoZW4gdGhlIGZpcnN0IHBhcnQgb2YgYSBkb3R0ZWQgbmFtZSBpcyBub3QgYSBwYWNrYWdlLiBQYXRjaCBieQotICBYYXZpZXIgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMTIwOTg6IG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIG5vdyBzdGFydHMgY2hpbGQgcHJvY2Vzc2VzCi0gIHVzaW5nIHRoZSBzYW1lIHN5cy5mbGFncyBhcyB0aGUgY3VycmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieQotICBTZXJnZXkgTWV6ZW50c2V2LgotCi0tIElzc3VlICMxMzAzMTogU21hbGwgc3BlZWQtdXAgZm9yIHRhcmZpbGUgd2hlbiB1bnppcHBpbmcgdGFyZmlsZXMuCi0gIFBhdGNoIGJ5IEp1c3RpbiBQZWVsLgotCi0tIElzc3VlICMxNDc4MDogdXJsbGliLnJlcXVlc3QudXJsb3BlbigpIG5vdyBoYXMgYSBgYGNhZGVmYXVsdGBgIGFyZ3VtZW50Ci0gIHRvIHVzZSB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZS4gIEluaXRpYWwgcGF0Y2ggYnkgSmFtZXMgT2FrbGV5LgotCi0tIElzc3VlICMxNDgyOTogRml4IGJpc2VjdCBhbmQgcmFuZ2UoKSBpbmRleGluZyB3aXRoIGxhcmdlIGluZGljZXMKLSAgKD49IDIgKiogMzIpIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxNDczMjogVGhlIF9jc3YgbW9kdWxlIG5vdyB1c2VzIFBFUCAzMTIxIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KLSAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgotCi0tIElzc3VlICMxNDgwOTogQWRkIEhUVFAgc3RhdHVzIGNvZGVzIGludHJvZHVjZWQgYnkgUkZDIDY1ODUgdG8gaHR0cC5zZXJ2ZXIKLSAgYW5kIGh0dHAuY2xpZW50LiBQYXRjaCBieSBFdW5nSnVuIFlpLgotCi0tIElzc3VlICMxNDc3NzogdGtpbnRlciBtYXkgcmV0dXJuIHVuZGVjb2RlZCBVVEYtOCBieXRlcyBhcyBhIHN0cmluZyB3aGVuCi0gIGFjY2Vzc2luZyB0aGUgVGsgY2xpcGJvYXJkLiAgTW9kaWZ5IGNsaXBib2FkX2dldCgpIHRvIGZpcnN0IHJlcXVlc3QgdHlwZQotICBVVEY4X1NUUklORyB3aGVuIG5vIHNwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcKLSAgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgY3VycmVudCBkZWZhdWx0IHR5cGUgU1RSSU5HIGlmIHRoYXQgZmFpbHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMxNDc3MzogRml4IG9zLmZ3YWxrKCkgZmFpbGluZyBvbiBkYW5nbGluZyBzeW1saW5rcy4KLQotLSBJc3N1ZSAjMTI1NDE6IEJlIGxlbmllbnQgd2l0aCBxdW90ZXMgYXJvdW5kIFJlYWxtIGZpZWxkIG9mIEhUVFAgQmFzaWMKLSAgQXV0aGVudGF0aW9uIGluIHVybGxpYjIuCi0KLS0gSXNzdWUgIzE0ODA3OiBtb3ZlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlKCkgdG8gc3RhdC5maWxlbW9kZSgpIGFuZCBhZGQKLSAgZG9jIGVudHJ5LiBBZGQgdGFyZmlsZS5maWxlbW9kZSBhbGlhcyB3aXRoIGRlcHJlY2F0aW9uIHdhcm5pbmcuCi0KLS0gSXNzdWUgIzEzODE1OiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgbm93IHJldHVybnMgaW8uQnVmZmVyZWRSZWFkZXIgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTQ1MzI6IEFkZCBhIHNlY3VyZV9jb21wYXJlKCkgaGVscGVyIHRvIHRoZSBobWFjIG1vZHVsZSwgdG8gbWl0aWdhdGUKLSAgdGltaW5nIGF0dGFja3MuIFBhdGNoIGJ5IEpvbiBPYmVyaGVpZGUuCi0KLS0gQWRkIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLgotCi0tIElzc3VlICMxNDM2NjogU3VwcG9ydCBsem1hIGNvbXByZXNzaW9uIGluIHppcCBmaWxlcy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTM5NTk6IEludHJvZHVjZSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBhbmQgZG9jdW1lbnQKLSAgaW1wLmZpbmRfbW9kdWxlL2xvYWRfbW9kdWxlIGFzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzE0MDgyOiBzaHV0aWwuY29weTIoKSBub3cgY29waWVzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGlmIHBvc3NpYmxlLgotICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpL2dldF9maWxlbmFtZSgpIGFuZAotICBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKSBoYXZlIHRoZWlyIHNpbmdsZQotICBhcmd1bWVudCBiZSBvcHRpb25hbC4gQWxsb3dzIGZvciB0aGUgcmVwbGFjZW1lbnQgKGFuZCB0aHVzIGRlcHJlY2F0aW9uKSBvZgotICBpbXAubG9hZF9zb3VyY2UoKS9sb2FkX3BhY2thZ2UoKS9sb2FkX2NvbXBpbGVkKCkuCi0KLS0gSXNzdWUgIzEzOTU5OiBpbXAuZ2V0X3N1ZmZpeGVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdGhlIG5ldwotICBhdHRyaWJ1dGVzIG9uIGltcG9ydGxpYi5tYWNoaW5lcnk6IFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCi0gIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsIGFuZCBFWFRFTlNJT05fU1VGRklYRVMuIFRoaXMKLSAgbGVkIHRvIGFuIGluZGlyZWN0IGRlcHJlY2F0aW9uIG9mIGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpLgotCi0tIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90Ci0gIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTQ3NTM6IE1ha2UgbXVsdGlwcm9jZXNzaW5nJ3MgaGFuZGxpbmcgb2YgbmVnYXRpdmUgdGltZW91dHMKLSAgdGhlIHNhbWUgYXMgaXQgd2FzIGluIFB5dGhvbiAzLjIuCi0KLS0gSXNzdWUgIzE0NTgzOiBGaXggaW1wb3J0bGliIGJ1ZyB3aGVuIGEgcGFja2FnZSdzIF9faW5pdF9fLnB5IHdvdWxkIGZpcnN0Ci0gIGltcG9ydCBvbmUgb2YgaXRzIG1vZHVsZXMgdGhlbiByYWlzZSBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTQ3NDE6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIEVsbGlwc2lzICgnLi4uJykgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQ2OTc6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIHNldCBkaXNwbGF5cyBhbmQgc2V0IGNvbXByZWhlbnNpb25zIGluCi0gIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE0NzAxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciAncmFpc2UgLi4uIGZyb20nIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gQWRkIHN1cHBvcnQgZm9yIHRpbWVvdXRzIHRvIHRoZSBhY3F1aXJlKCkgbWV0aG9kcyBvZgotICBtdWx0aXByb2Nlc3NpbmcncyBsb2NrL3NlbWFwaG9yZS9jb25kaXRpb24gcHJveGllcy4KLQotLSBJc3N1ZSAjMTM5ODk6IEFkZCBzdXBwb3J0IGZvciB0ZXh0IG1vZGUgdG8gZ3ppcC5vcGVuKCkuCi0KLS0gSXNzdWUgIzE0MTI3OiBUaGUgb3Muc3RhdCgpIHJlc3VsdCBvYmplY3Qgbm93IHByb3ZpZGVzIHRocmVlIGFkZGl0aW9uYWwKLSAgZmllbGRzOiBzdF9jdGltZV9ucywgc3RfbXRpbWVfbnMsIGFuZCBzdF9hdGltZV9ucywgcHJvdmlkaW5nIHRob3NlIHRpbWVzIGFzIGFuCi0gIGludGVnZXIgd2l0aCBuYW5vc2Vjb25kIHJlc29sdXRpb24uICBUaGUgZnVuY3Rpb25zIG9zLnV0aW1lKCksIG9zLmx1dGltZXMoKSwKLSAgYW5kIG9zLmZ1dGltZXMoKSBub3cgYWNjZXB0IGEgbmV3IHBhcmFtZXRlciwgbnMsIHdoaWNoIGFjY2VwdHMgbXRpbWUgYW5kIGF0aW1lCi0gIGFzIGludGVnZXJzIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLgotCi0tIElzc3VlICMxNDEyNyBhbmQgIzEwMTQ4OiBzaHV0aWwuY29weXN0YXQgbm93IHByZXNlcnZlcyBleGFjdCBtdGltZSBhbmQgYXRpbWUKLSAgb24gZmlsZXN5c3RlbXMgcHJvdmlkaW5nIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQKLSAgYnl0ZSBsaXRlcmFscyBzdXBwb3J0ZWQgaW4gUHl0aG9uIDMuMy4KLQotLSBJc3N1ZSAjMTA5OTc6IFByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCi0KLS0gSXNzdWUgIzE0OTI5OiBTdG9wIElETEUgMy54IGZyb20gY2xvc2luZyBvbiBVbmljb2RlIGRlY29kZSBlcnJvcnMgd2hlbgotICBncmVwcGluZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEyNTEwOiBBdHRlbXB0aW5nIHRvIGdldCBpbnZhbGlkIHRvb2x0aXAgbm8gbG9uZ2VyIGNsb3NlcyBJRExFLgotICBPdGhlciB0b29sdGlwc3MgaGF2ZSBiZWVuIGNvcnJlY3RlZCBvciBpbXByb3ZlZCBhbmQgdGhlIG51bWJlciBvZiB0ZXN0cwotICBoYXMgYmVlbiB0cmlwbGVkLiBPcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE0Njk1OiBCcmluZyBUb29scy9wYXJzZXIvdW5wYXJzZS5weSBzdXBwb3J0IHVwIHRvIGRhdGUgd2l0aAotICB0aGUgUHl0aG9uIDMuMyBHcmFtbWFyLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTQ0NzI6IFVwZGF0ZSAuZ2l0aWdub3JlLiBQYXRjaCBieSBNYXRlaiBDZXBsLgotCi0tIFVwZ3JhZGUgV2luZG93cyBsaWJyYXJ5IHZlcnNpb25zOiBiemlwIDEuMC42LCBPcGVuU1NMIDEuMC4xYy4KLQotLSBJc3N1ZSAjMTQ2OTM6IFVuZGVyIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgaGFzaGxpYidzIGZhbGxiYWNrIG1vZHVsZXMgYXJlCi0gIGFsd2F5cyBjb21waWxlZCwgZXZlbiBpZiBPcGVuU1NMIGlzIHByZXNlbnQgYXQgYnVpbGQgdGltZS4KLQotLSBJc3N1ZSAjMTMyMTA6IFdpbmRvd3MgYnVpbGQgbm93IHVzZXMgVlMyMDEwLCBwb3J0ZWQgZnJvbSBWUzIwMDguCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxNDcwNTogVGhlIFB5QXJnX1BhcnNlKCkgZmFtaWx5IG9mIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCB0aGUgJ3AnIGZvcm1hdAotICB1bml0LCB3aGljaCBhY2NlcHRzIGEgImJvb2xlYW4gcHJlZGljYXRlIiBhcmd1bWVudC4gIEl0IGNvbnZlcnRzIGFueSBQeXRob24KLSAgdmFsdWUgaW50byBhbiBpbnRlZ2VyLS0wIGlmIGl0IGlzICJmYWxzZSIsIGFuZCAxIG90aGVyd2lzZS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCi0gIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgotCi0tIElzc3VlICMxNDU4ODogVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgYWNjdXJhdGVseSBkb2N1bWVudHMgdGhlIFB5dGhvbiAzCi0gIGNsYXNzIGRlZmluaXRpb24gcHJvY2Vzcy4gUGF0Y2ggYnkgTmljayBDb2dobGFuLgotCi0tIElzc3VlICMxNDk0MzogQ29ycmVjdCBhIGRlZmF1bHQgYXJndW1lbnQgdmFsdWUgZm9yIHdpbnJlZy5PcGVuS2V5Ci0gIGFuZCBjb3JyZWN0bHkgbGlzdCB0aGUgYXJndW1lbnQgbmFtZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZXhwbGFuYXRpb24uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAxLU1heS0yMDEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4gaXMgY2xvc2VkLgotCi0tIElzc3VlICMxNDUyMTogTWFrZSByZXN1bHQgb2YgZmxvYXQoJ25hbicpIGFuZCBmbG9hdCgnLW5hbicpIG1vcmUgY29uc2lzdGVudAotICBhY3Jvc3MgcGxhdGZvcm1zLgotCi0tIElzc3VlICMxNDY0NjogX19pbXBvcnRfXygpIHNldHMgX19sb2FkZXJfXyBpZiB0aGUgbG9hZGVyIGRpZCBub3QuCi0KLS0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5tZXRhX3BhdGguIElmCi0gIHN5cy5tZXRhX3BhdGggaXMgZm91bmQgdG8gYmUgZW1wdHksIHJhaXNlIEltcG9ydFdhcm5pbmcuCi0KLS0gSXNzdWUgIzE0NjA1OiBObyBsb25nZXIgaGF2ZSBpbXBsaWNpdCBlbnRyaWVzIGluIHN5cy5wYXRoX2hvb2tzLiBJZgotICBzeXMucGF0aF9ob29rcyBpcyBmb3VuZCB0byBiZSBlbXB0eSwgYSB3YXJuaW5nIHdpbGwgYmUgcmFpc2VkLiBOb25lIGlzIG5vdwotICBpbnNlcnRlZCBpbnRvIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlmIG5vIGZpbmRlciB3YXMgZGlzY292ZXJlZC4gVGhpcyBhbHNvCi0gIG1lYW5zIGltcC5OdWxsSW1wb3J0ZXIgaXMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgdXNlZC4KLQotLSBJc3N1ZSAjMTM5MDM6IEltcGxlbWVudCBQRVAgNDEyLiBJbmRpdmlkdWFsIGRpY3Rpb25hcnkgaW5zdGFuY2VzIGNhbiBub3cgc2hhcmUKLSAgdGhlaXIga2V5cyB3aXRoIG90aGVyIGRpY3Rpb25hcmllcy4gQ2xhc3NlcyB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIHRvIHNoYXJlCi0gIHRoZWlyIGluc3RhbmNlIGRpY3Rpb25hcnkga2V5cyBmb3IgaW1wcm92ZWQgbWVtb3J5IGFuZCBwZXJmb3JtYW5jZS4KLQotLSBJc3N1ZSAjMTE2MDMgKGFnYWluKTogU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IKLSAgd2hlbiByZXByKCkgb3Igc3RyKCkgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gb2JqZWN0LgotCi0tIElzc3VlICMxNDY1ODogRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYQotICBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCi0KLS0gSXNzdWUgIzE0NjMwOiBGaXggYSBtZW1vcnkgYWNjZXNzIGJ1ZyBmb3IgaW5zdGFuY2VzIG9mIGEgc3ViY2xhc3Mgb2YgaW50Ci0gIHdpdGggdmFsdWUgMC4KLQotLSBJc3N1ZSAjMTQzMzk6IFNwZWVkIGltcHJvdmVtZW50cyB0byBiaW4sIG9jdCBhbmQgaGV4IGZ1bmN0aW9ucy4gIFBhdGNoIGJ5Ci0gIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0Mzg1OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIGEgY3VzdG9tIHR5cGUgZm9yIHRoZSBfX2J1aWx0aW5zX18KLSAgbmFtZXNwYWNlLCBpbnN0ZWFkIG9mIGEgZGljdC4gSXQgY2FuIGJlIHVzZWQgZm9yIHNhbmRib3hpbmcgZm9yIGV4YW1wbGUuCi0gIFJhaXNlIGFsc28gYSBOYW1lRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvciBpZiBfX2J1aWxkX2NsYXNzX18gbmFtZSBpZiBub3QKLSAgZm91bmQgaW4gX19idWlsdGluc19fLgotCi0tIElzc3VlICMxMjU5OTogQmUgbW9yZSBzdHJpY3QgaW4gYWNjZXB0aW5nIE5vbmUgY29tcGFyZWQgdG8gYSBmYWxzZS1saWtlCi0gIG9iamVjdCBmb3IgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIgYW5kCi0gIGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlci4KLQotLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgotCi0tIElzc3VlICMxNDU5MjogQXR0ZW1wdGluZyBhIHJlbGF0aXZlIGltcG9ydCB3L28gX19wYWNrYWdlX18gb3IgX19uYW1lX18gc2V0IGluCi0gIGdsb2JhbHMgcmFpc2VzIGEgS2V5RXJyb3IuCi0KLS0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgotCi0tIElzc3VlICMxMDg1NDogVGhlIEltcG9ydEVycm9yIHJhaXNlZCB3aGVuIGFuIGV4dGVuc2lvbiBtb2R1bGUgb24gV2luZG93cwotICBmYWlscyB0byBpbXBvcnQgbm93IHVzZXMgdGhlIG5ldyBwYXRoIGFuZCBuYW1lIGF0dHJpYnV0ZXMgZnJvbQotICBJc3N1ZSAjMTU1OTU0OS4KLQotLSBJc3N1ZSAjMTM4ODk6IENoZWNrIGFuZCAoaWYgbmVjZXNzYXJ5KSBzZXQgRlBVIGNvbnRyb2wgd29yZCBiZWZvcmUgY2FsbGluZwotICBhbnkgb2YgdGhlIGR0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZgotICBQeXRob24uICBUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgotCi0tIF9faW1wb3J0X18oKSBub3cgbWF0Y2hlcyBQRVAgMzI4IGFuZCBkb2N1bWVudGF0aW9uIGJ5IGRlZmF1bHRpbmcgJ2luZGV4JyB0byAwCi0gIGluc3RlYWQgb2YgLTEgYW5kIHJlbW92aW5nIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIHZhbHVlcy4KLQotLSBJc3N1ZSAjMjM3NzogTWFrZSBpbXBvcnRsaWIgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9faW1wb3J0X18oKS4KLQotLSBJc3N1ZSAjMTU1OTU0OTogSW1wb3J0RXJyb3Igbm93IGhhcyAnbmFtZScgYW5kICdwYXRoJyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHNldAotICB1c2luZyBrZXl3b3JkIGFyZ3VtZW50cyB0byBpdHMgY29uc3RydWN0b3IuIFRoZXkgYXJlIGN1cnJlbnRseSBub3Qgc2V0IGJ5Ci0gIGltcG9ydCBhcyB0aGV5IGFyZSBtZWFudCBmb3IgdXNlIGJ5IGltcG9ydGxpYi4KLQotLSBJc3N1ZSAjMTQ0NzQ6IFNhdmUgYW5kIHJlc3RvcmUgZXhjZXB0aW9uIHN0YXRlIGluIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKCkKLSAgd2hpbGUgd3JpdGluZyBlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGEgdW5oYW5kbGVkIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCi0gIGJ5IFN1bWFuIFNhaGEuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KLQotLSBJc3N1ZSAjMTQzNzE6IFN1cHBvcnQgYnppcDIgaW4gemlwZmlsZSBtb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzE4MzogRml4IHBkYiBza2lwcGluZyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKLSAgc3RlcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxNDY5NjogRml4IHBhcnNlciBtb2R1bGUgdG8gdW5kZXJzdGFuZCAnbm9ubG9jYWwnIGRlY2xhcmF0aW9ucy4KLQotLSBJc3N1ZSAjMTA5NDE6IEZpeCBpbWFwbGliLkludGVybmFsZGF0ZTJ0dXBsZSB0byBwcm9kdWNlIGNvcnJlY3QgcmVzdWx0IG5lYXIKLSAgdGhlIERTVCB0cmFuc2l0aW9uLiAgUGF0Y2ggYnkgSm9lIFBldGVyc29uLgotCi0tIElzc3VlICM5MTU0OiBGaXggcGFyc2VyIG1vZHVsZSB0byB1bmRlcnN0YW5kIGZ1bmN0aW9uIGFubm90YXRpb25zLgotCi0tIElzc3VlICM2MDg1OiBJbiBodHRwLnNlcnZlci5weSBTaW1wbGVIVFRQU2VydmVyLmFkZHJlc3Nfc3RyaW5nIHJldHVybnMgdGhlCi0gIGNsaWVudCBpcCBhZGRyZXNzIGluc3RlYWQgY2xpZW50IGhvc3RuYW1lLiBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzE0MzA5OiBEZXByZWNhdGUgdGltZS5jbG9jaygpLCB1c2UgdGltZS5wZXJmX2NvdW50ZXIoKSBvcgotICB0aW1lLnByb2Nlc3NfdGltZSgpIGluc3RlYWQuCi0KLS0gSXNzdWUgIzE0NDI4OiBJbXBsZW1lbnQgdGhlIFBFUCA0MTguIEFkZCB0aW1lLmdldF9jbG9ja19pbmZvKCksCi0gIHRpbWUucGVyZl9jb3VudGVyKCkgYW5kIHRpbWUucHJvY2Vzc190aW1lKCkgZnVuY3Rpb25zLCBhbmQgcmVuYW1lCi0gIHRpbWUuc3RlYWR5KCkgdG8gdGltZS5tb25vdG9uaWMoKS4KLQotLSBJc3N1ZSAjMTQ2NDY6IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyKCkgbm93IHNldHMgX19sb2FkZXJfXyBhbmQKLSAgX19wYWNrYWdlX18gKHdoZW4gcG9zc2libGUpLgotCi0tIElzc3VlICMxNDY2NDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEKLSAgdGVzdCBjbGFzcyB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlIChpLmUuIGEgbWl4aW4pLgotCi0tIElzc3VlICM0ODkyOiBtdWx0aXByb2Nlc3NpbmcgQ29ubmVjdGlvbnMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBvdmVyCi0gIG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucy4gIFBhdGNoIGJ5IFJpY2hhcmQgT3Vka2VyayAoc2J0KS4KLQotLSBJc3N1ZSAjMTQxNjA6IFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQgdG8gcmVzb2x2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuCi0gIHRoZSBsaW5rcyB3ZXJlIG5vdCBsb2NhdGVkIGluIGFuIGFyY2hpdmUgc3ViZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNDYzODogcHlkb2Mgbm93IHRyZWF0cyBub24tc3RyaW5nIF9fbmFtZV9fIHZhbHVlcyBhcyBpZiB0aGV5Ci0gIHdlcmUgbWlzc2luZywgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICMxMzY4NDogRml4IGh0dHBsaWIgdHVubmVsIGlzc3VlIG9mIGluZmluaXRlIGxvb3BzIGZvciBjZXJ0YWluIHNpdGVzCi0gIHdoaWNoIHNlbmQgRU9GIHdpdGhvdXQgdHJhaWxpbmcgXHJcbi4KLQotLSBJc3N1ZSAjMTQ2MDU6IEFkZCBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuKEZpbGVGaW5kZXIsCi0gIFNvdXJjZUZpbGVMb2FkZXIsIFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBFeHRlbnNpb25GaWxlTG9hZGVyKS4KLQotLSBJc3N1ZSAjMTM5NTk6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpL3NvdXJjZV9mcm9tX2NhY2hlKCkgbm93IGZvbGxvdwotICBvcy5wYXRoLmpvaW4oKS9zcGxpdCgpIHNlbWFudGljcyBmb3IgcGF0aCBtYW5pcHVsYXRpb24gaW5zdGVhZCBvZiBpdHMgcHJpb3IsCi0gIGN1c3RvbSBzZW1hbnRpY3Mgb2YgY2FyaW5nIHRoZSByaWdodC1tb3N0IHBhdGggc2VwYXJhdG9yIGZvcndhcmQgaW4gcGF0aAotICBqb2luaW5nLgotCi0tIElzc3VlICMyMTkzOiBBbGxvdyAiOiIgY2hhcmFjdGVyIGluIENvb2tpZSBOQU1FIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTQ2Mjk6IHRva2VuaXplci5kZXRlY3RfZW5jb2Rpbmcgd2lsbCBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBpbiB0aGUKLSAgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmIGZvdW5kIGF0IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUuCi0KLS0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQotICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgotCi0tIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwotICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KLQotLSBJc3N1ZSAjMTE3NTA6IFRoZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgc2NhdHRlcmVkIGluIHRoZSBfc3VicHJvY2VzcyBhbmQKLSAgX211bHRpcHJvY2Vzc2luZy53aW4zMiBtb2R1bGVzIG5vdyBsaXZlIGluIGEgc2luZ2xlIG1vZHVsZSAiX3dpbmFwaSIuCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTQwODc6IG11bHRpcHJvY2Vzc2luZzogYWRkIENvbmRpdGlvbi53YWl0X2ZvcigpLiBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzE0NTM4OiBIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluCi0gIGEgYmFyZSAnLycuCi0KLS0gSXNzdWUgIzE0NDUyOiBTeXNMb2dIYW5kbGVyIG5vIGxvbmdlciBpbnNlcnRzIGEgVVRGLTggQk9NIGludG8gdGhlIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzE0Mzg2OiBFeHBvc2UgdGhlIGRpY3RfcHJveHkgaW50ZXJuYWwgdHlwZSBhcyB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLgotCi0tIElzc3VlICMxMzk1OTogTWFrZSBpbXAucmVsb2FkKCkgYWx3YXlzIHVzZSBhIG1vZHVsZSdzIF9fbG9hZGVyX18gdG8gcGVyZm9ybQotICB0aGUgcmVsb2FkLgotCi0tIElzc3VlICMxMzk1OTogQWRkIGltcC5weSBhbmQgcmVuYW1lIHRoZSBidWlsdC1pbiBtb2R1bGUgdG8gX2ltcCwgYWxsb3dpbmcgZm9yCi0gIHJlLWltcGxlbWVudGluZyBwYXJ0cyBvZiB0aGUgbW9kdWxlIGluIHB1cmUgUHl0aG9uLgotCi0tIElzc3VlICMxMzQ5NjogRml4IHBvdGVudGlhbCBvdmVyZmxvdyBpbiBiaXNlY3QuYmlzZWN0IGFsZ29yaXRobSB3aGVuIGFwcGxpZWQKLSAgdG8gYSBjb2xsZWN0aW9uIG9mIHNpemUgPiBzeXMubWF4c2l6ZSAvIDIuCi0KLS0gSGF2ZSBpbXBvcnRsaWIgdGFrZSBhZHZhbnRhZ2Ugb2YgSW1wb3J0RXJyb3IncyBuZXcgJ25hbWUnIGFuZCAncGF0aCcKLSAgYXR0cmlidXRlcy4KLQotLSBJc3N1ZSAjMTQzOTk6IHppcGZpbGUgbm93IHJlY29nbml6ZXMgdGhhdCB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBtb2RpZmllZCBldmVuCi0gIGlmIG9ubHkgdGhlIGNvbW1lbnQgaXMgY2hhbmdlZC4gIEluIGFkZGl0aW9uLCB0aGUgVHlwZUVycm9yIHRoYXQgcmVzdWx0cyBmcm9tCi0gIHRyeWluZyB0byBzZXQgYSBub24tYmluYXJ5IHZhbHVlIGFzIGEgY29tbWVudCBpcyBub3cgcmFpc2VkIGF0IHRoZSB0aW1lCi0gIHRoZSBjb21tZW50IGlzIHNldCByYXRoZXIgdGhhbiBhdCB0aGUgdGltZSB0aGUgemlwZmlsZSBpcyB3cml0dGVuLgotCi0tIHRyYWNlLkNvdmVyYWdlUmVzdWx0cy5pc19pZ25vcmVkX2ZpbGVuYW1lKCkgbm93IGlnbm9yZXMgYW55IG5hbWUgdGhhdCBzdGFydHMKLSAgd2l0aCAiPCIgYW5kIGVuZHMgd2l0aCAiPiIgaW5zdGVhZCBvZiBzcGVjaWFsLWNhc2luZyAiPHN0cmluZz4iIGFuZAotICAiPGRvY3Rlc3QgIi4KLQotLSBJc3N1ZSAjMTI1Mzc6IFRoZSBtYWlsYm94IG1vZHVsZSBubyBsb25nZXIgZGVwZW5kcyBvbiBrbm93bGVkZ2Ugb2YgaW50ZXJuYWwKLSAgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgZW1haWwgcGFja2FnZSBNZXNzYWdlIG9iamVjdC4KLQotLSBJc3N1ZSAjNzk3ODogc29ja2V0c2VydmVyIG5vdyByZXN0YXJ0cyB0aGUgc2VsZWN0KCkgY2FsbCB3aGVuIEVJTlRSIGlzCi0gIHJldHVybmVkLiAgVGhpcyBhdm9pZHMgY3Jhc2hpbmcgdGhlIHNlcnZlciBsb29wIHdoZW4gYSBzaWduYWwgaXMgcmVjZWl2ZWQuCi0gIFBhdGNoIGJ5IEplcnp5IEtvemVyYS4KLQotLSBJc3N1ZSAjMTQ1MjI6IEF2b2lkIGR1cGxpY2F0aW5nIHNvY2tldCBoYW5kbGVzIGluIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLgotICBQYXRjaCBieSBzYnQuCi0KLS0gRG9uJ3QgUHlfREVDUkVGIE5VTEwgdmFyaWFibGUgaW4gaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci4KLQotLSBJc3N1ZSAjMzAzMzogQWRkIGRpc3BsYXlvZiBwYXJhbWV0ZXIgdG8gdGtpbnRlciBmb250LiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KLQotLSBJc3N1ZSAjMTQ0ODI6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKLSAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfVU5JWCB0eXBlIGFkZHJlc3MgdW5kZXIKLSAgV2luZG93cy4gIFBhdGNoIGJ5IFBvcGEgQ2xhdWRpdS4KLQotLSBJc3N1ZSAjODAyMzEwOiBHZW5lcmF0ZSBhbHdheXMgdW5pcXVlIHRraW50ZXIgZm9udCBuYW1lcyBpZiBub3QgZGlyZWN0bHkgcGFzc2VkLgotCi0tIElzc3VlICMxNDE1MTogUmFpc2UgYSBWYWx1ZUVycm9yLCBub3QgYSBOYW1lRXJyb3IsIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZQotICBhIG11bHRpcHJvY2Vzc2luZyBDbGllbnQgb3IgTGlzdGVuZXIgd2l0aCBhbiBBRl9QSVBFIHR5cGUgYWRkcmVzcyB1bmRlcgotICBub24tV2luZG93cyBwbGF0Zm9ybXMuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLS0gSXNzdWUgIzE0NDkzOiBVc2UgZ3Zmcy1vcGVuIG9yIHhkZy1vcGVuIGluIHdlYmJyb3dzZXIuCi0KLUJ1aWxkCi0tLS0tLQotCi0tICJtYWtlIHRvdWNoIiB3aWxsIG5vdyB0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBpbnRvIE1lcmN1cmlhbCwKLSAgYWZ0ZXIgYSAiaGcgdXBkYXRlIiB3aGljaCBmYWlsZWQgdG8gYnJpbmcgdGhlIHRpbWVzdGFtcHMgaW50byB0aGUgcmlnaHQgb3JkZXIuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNDAyNjogSW4gdGVzdF9jbWRfbGluZV9zY3JpcHQsIGNoZWNrIHRoYXQgc3lzLmFyZ3YgaXMgcG9wdWxhdGVkCi0gIGNvcnJlY3RseSBmb3IgdGhlIHZhcmlvdXMgaW52b2NhdGlvbiBhcHByb2FjaGVzIChQYXRjaCBieSBKYXNvbiBZZW8pCi0KLS0gSXNzdWUgIzE0MDMyOiBGaXggaW5jb3JyZWN0IHZhcmlhYmxlIG5hbWUgaW4gdGVzdF9jbWRfbGluZV9zY3JpcHQgZGVidWdnaW5nCi0gIG1lc3NhZ2UgKFBhdGNoIGJ5IEphc29uIFllbykKLQotLSBJc3N1ZSAjMTQ1ODk6IFVwZGF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Igc2hhMjU2LnRicy1pbnRlcm5ldC5jb20sIGZpeGluZwotICBhIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KLQotLSBJc3N1ZSAjMTQzNTU6IFJlZ3J0ZXN0IG5vdyBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLCBhbmQKLSAgd2lsbCB1c2UgaXQgaWYgYSB0ZXN0IGZpbGUgY29udGFpbnMgbm8gYHRlc3RfbWFpbmAgbWV0aG9kLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCi0KLS0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgotICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCi0KLVRvb2xzIC8gRGVtb3MKLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzU2MTogVGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBoYXMgYW4gb3B0aW9uLCBvZmYgYnkgZGVmYXVsdCwgZm9yCi0gIHBsYWNpbmcgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaW50byB0aGUgc3lzdGVtICJQYXRoIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotLSBJc3N1ZSAjMTMxNjU6IHN0cmluZ2JlbmNoIGlzIG5vdyBhdmFpbGFibGUgaW4gdGhlIFRvb2xzL3N0cmluZ2JlbmNoIGZvbGRlci4KLSAgSXQgdXNlZCB0byBsaXZlIGluIGl0cyBvd24gU1ZOIHByb2plY3QuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxNDA5ODogTmV3IGZ1bmN0aW9ucyBQeUVycl9HZXRFeGNJbmZvIGFuZCBQeUVycl9TZXRFeGNJbmZvLgotICBQYXRjaCBieSBTdGVmYW4gQmVobmVsLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwMS1BcHItMjAxMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2ODMzNjg6IG9iamVjdC5fX25ld19fIGFuZCBvYmplY3QuX19pbml0X18gcmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhleQotICBhcmUgcGFzc2VkIGFyZ3VtZW50cyBhbmQgdGhlaXIgY29tcGxlbWVudGFyeSBtZXRob2QgaXMgbm90IG92ZXJyaWRkZW4uCi0KLS0gSXNzdWUgIzE0Mzc4OiBGaXggY29tcGlsaW5nIGFzdC5JbXBvcnRGcm9tIG5vZGVzIHdpdGggYSAiX19mdXR1cmVfXyIgc3RyaW5nIGFzCi0gIHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCi0KLS0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKLSAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCi0KLS0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAotICBwYXNzZWQgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTQ2OTYyOTogQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZQotICBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZSBpZiBgYHguX19kaWN0X18gaXMgeGBgKS4KLQotLSBJc3N1ZSAjMTQyMDU6IGRpY3QgbG9va3VwIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUgZGljdCBpcyBtb2RpZmllZAotICBkdXJpbmcgYSBsb29rdXAuCi0KLS0gSXNzdWUgIzE0MjIwOiBXaGVuIGEgZ2VuZXJhdG9yIGlzIGRlbGVnYXRpbmcgdG8gYW5vdGhlciBpdGVyYXRvciB3aXRoIHRoZQotICB5aWVsZCBmcm9tIHN5bnRheCwgaXQgbmVlZHMgdG8gaGF2ZSBpdHMgYGBnaV9ydW5uaW5nYGAgZmxhZyBzZXQgdG8gVHJ1ZS4KLQotLSBJc3N1ZSAjMTQ0MzU6IFJlbW92ZSBkZWRpY2F0ZWQgYmxvY2sgYWxsb2NhdG9yIGZyb20gZmxvYXRvYmplY3QuYyBhbmQgcmVseQotICBvbiB0aGUgUHlPYmplY3RfTWFsbG9jKCkgYXBpIGxpa2UgYWxsIG90aGVyIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQyODg6IEFsbG93IHRoZSBzZXJpYWxpemF0aW9uIG9mIGJ1aWx0aW4gaXRlcmF0b3JzCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQzMDA6IFVuZGVyIFdpbmRvd3MsIHNvY2tldHMgY3JlYXRlZCB1c2luZyBzb2NrZXQuZHVwKCkgbm93IGFsbG93Ci0gIG92ZXJsYXBwZWQgSS9PLiAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKLSAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCi0KLS0gSXNzdWUgIzE0NDA2OiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIHVzaW5nIGBgY29uY3VycmVudC5mdXR1cmVzLndhaXQoCi0gIHJldHVybl93aGVuPUFMTF9DT01QTEVURUQpYGAuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KLQotLSBJc3N1ZSAjNTEzNjogZGVwcmVjYXRlIG9sZCwgdW51c2VkIGZ1bmN0aW9ucyBmcm9tIHRraW50ZXIuCi0KLS0gSXNzdWUgIzE0NDE2OiBzeXNsb2cgbm93IGRlZmluZXMgdGhlIExPR19PREVMQVkgYW5kIExPR19BVVRIUFJJViBjb25zdGFudHMKLSAgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiA8c3lzbG9nLmg+LgotCi0tIElzc3VlICMxNDI5NTogQWRkIHVuaXR0ZXN0Lm1vY2sKLQotLSBJc3N1ZSAjNzY1MjogQWRkIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMgb3B0aW9uIHRvIGNvbmZpZ3VyZSBmb3IgbGlua2luZwotICB0aGUgX2RlY2ltYWwgbW9kdWxlIGFnYWluc3QgYW4gaW5zdGFsbGVkIGxpYm1wZGVjLgotCi0tIElzc3VlICMxNDM4MDogTUlNRVRleHQgbm93IGRlZmF1bHRzIHRvIHV0Zi04IHdoZW4gcGFzc2VkIG5vbi1BU0NJSSB1bmljb2RlCi0gIHdpdGggbm8gY2hhcnNldCBzcGVjaWZpZWQuCi0KLS0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgotICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKLSAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgotCi0tIElzc3VlICMxNDIwNDogVGhlIHNzbCBtb2R1bGUgbm93IGhhcyBzdXBwb3J0IGZvciB0aGUgTmV4dCBQcm90b2NvbAotICBOZWdvdGlhdGlvbiBleHRlbnNpb24sIGlmIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBPcGVuU1NMIGxpYnJhcnkuCi0gIFBhdGNoIGJ5IENvbGluIE1hcmMuCi0KLS0gSXNzdWUgIzMwMzU6IFVudXNlZCBmdW5jdGlvbnMgZnJvbSB0a2ludGVyIGFyZSBtYXJrZWQgYXMgcGVuZGluZyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KLSAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzc2NTI6IEludGVncmF0ZSB0aGUgZGVjaW1hbCBmbG9hdGluZyBwb2ludCBsaWJtcGRlYyBsaWJyYXJ5IHRvIHNwZWVkCi0gIHVwIHRoZSBkZWNpbWFsIG1vZHVsZS4gUGVyZm9ybWFuY2UgZ2FpbnMgb2YgdGhlIG5ldyBDIGltcGxlbWVudGF0aW9uIGFyZQotICBiZXR3ZWVuIDEweCBhbmQgMTAweCwgZGVwZW5kaW5nIG9uIHRoZSBhcHBsaWNhdGlvbi4KLQotLSBJc3N1ZSAjMTQyNjk6IFNNVFBEIG5vdyBjb25mb3JtcyB0byB0aGUgUkZDIGFuZCByZXF1aXJlcyBhIEhFTE8gY29tbWFuZAotICBiZWZvcmUgTUFJTCwgUkNQVCwgb3IgREFUQS4KLQotLSBJc3N1ZSAjMTM2OTQ6IGFzeW5jaHJvbm91cyBjb25uZWN0IGluIGFzeW5jb3JlLmRpc3BhdGNoZXIgZG9lcyBub3Qgc2V0IGFkZHIKLSAgYXR0cmlidXRlLgotCi0tIElzc3VlICMxNDM0NDogZml4ZWQgdGhlIHJlcHIgb2YgZW1haWwucG9saWN5IG9iamVjdHMuCi0KLS0gSXNzdWUgIzExNjg2OiBBZGRlZCBtaXNzaW5nIGVudHJpZXMgdG8gZW1haWwgcGFja2FnZSBfX2FsbF9fIGxpc3RzCi0gIChtb3N0bHkgdGhlIG5ldyBCeXRlcyBjbGFzc2VzKS4KLQotLSBJc3N1ZSAjMTQzMzU6IG11bHRpcHJvY2Vzc2luZydzIGN1c3RvbSBQaWNrbGVyIHN1YmNsYXNzIG5vdyBpbmhlcml0cyBmcm9tCi0gIHRoZSBDLWFjY2VsZXJhdGVkIGltcGxlbWVudGF0aW9uLiAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCi0KLS0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCi0KLS0gSW1wcm92ZSB0aGUgbWVtb3J5IHV0aWxpemF0aW9uIGFuZCBzcGVlZCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlLgotCi0tIElzc3VlICMxNDIyMjogVXNlIHRoZSBuZXcgdGltZS5zdGVhZHkoKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRpbWUudGltZSgpIGZvcgotICB0aW1lb3V0IGluIHF1ZXVlIGFuZCB0aHJlYWRpbmcgbW9kdWxlcyB0byBub3QgYmUgYWZmZWN0ZWQgb2Ygc3lzdGVtIHRpbWUKLSAgdXBkYXRlLgotCi0tIElzc3VlICMxMzI0ODogUmVtb3ZlIGxpYjJ0bzMucHl0cmVlLkJhc2UuZ2V0X3ByZWZpeC9zZXRfcHJlZml4LgotCi0tIElzc3VlICMxNDIzNDogQ1ZFLTIwMTItMDg3NjogUmFuZG9taXplIGhhc2hlcyBvZiB4bWwgYXR0cmlidXRlcyBpbiB0aGUgaGFzaAotICB0YWJsZSBpbnRlcm5hbCB0byB0aGUgcHlleHBhdCBtb2R1bGUncyBjb3B5IG9mIHRoZSBleHBhdCBsaWJyYXJ5IHRvIGF2b2lkIGEKLSAgZGVuaWFsIG9mIHNlcnZpY2UgZHVlIHRvIGhhc2ggY29sbGlzaW9ucy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0gd2l0aCBzb21lCi0gIG1vZGlmaWNhdGlvbnMgYnkgdGhlIGV4cGF0IHByb2plY3QuCi0KLS0gSXNzdWUgIzEyODE4OiBmb3JtYXQgYWRkcmVzcyBubyBsb25nZXIgbmVlZGxlc3NseSBcIGVzY2FwZXMgKClzIGluIG5hbWVzIHdoZW4KLSAgdGhlIG5hbWUgZW5kcyB1cCBiZWluZyBxdW90ZWQuCi0KLS0gSXNzdWUgIzE0MDYyOiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IGZvbGRzIEhlYWRlciBvYmplY3RzLAotICBpbmNsdWRpbmcgdXNpbmcgbGluZXNlcCB3aGVuIGZvbGRpbmcuCi0KLS0gSXNzdWUgIzEzODM5OiBXaGVuIGludm9rZWQgb24gdGhlIGNvbW1hbmQtbGluZSwgdGhlIHBzdGF0cyBtb2R1bGUgbm93Ci0gIGFjY2VwdHMgc2V2ZXJhbCBmaWxlbmFtZXMgb2YgcHJvZmlsZSBzdGF0IGZpbGVzIGFuZCBtZXJnZXMgdGhlbSBhbGwuCi0gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgotCi0tIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCi0gIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KLQotLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KLQotLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCi0KLS0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCi0KLS0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgotICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgotCi0tIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksCi0gIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpCi0gIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvciBpZiBsb2NhbHRpbWUoKSBvciBnbXRpbWUoKSBmYWlsZWQuCi0KLS0gSXNzdWUgIzE0MTgwOiB0aW1lLmN0aW1lKCksIGdtdGltZSgpLCB0aW1lLmxvY2FsdGltZSgpLAotICBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAotICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yLCBpbnN0ZWFkIG9mCi0gIGEgVmFsdWVFcnJvciwgaWYgdGhlIHRpbWVzdGFtcCBkb2VzIG5vdCBmaXQgaW4gdGltZV90LgotCi0tIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAotICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJvdW5kIG1pY3Jvc2Vjb25kcyB0b3dhcmRzIHplcm8KLSAgaW5zdGVhZCBvZiByb3VuZGluZyB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KLQotLSBJc3N1ZSAjMTA1NDM6IEZpeCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB3aXRoIEp5dGhvbiBieXRlY29kZSBmaWxlcy4KLQotLSBJc3N1ZSAjMTE3ODg2MzogU2VwYXJhdGUgaW5pdGlhbGlzYXRpb24gZnJvbSBzZXR0aW5nIHdoZW4gaW5pdGlhbGl6aW5nCi0gIFRraW50ZXIuVmFyaWFibGVzOyBoYXJtb25pemUgZXhjZXB0aW9ucyB0byBWYWx1ZUVycm9yOyBvbmx5IGRlbGV0ZSB2YXJpYWJsZXMKLSAgdGhhdCBoYXZlIG5vdCBiZWVuIGRlbGV0ZWQ7IGFzc2VydCB0aGF0IHZhcmlhYmxlIG5hbWVzIGFyZSBzdHJpbmdzLgotCi0tIElzc3VlICMxNDEwNDogSW1wbGVtZW50IHRpbWUubW9ub3RvbmljKCkgb24gTWFjIE9TIFgsIHBhdGNoIHdyaXR0ZW4gYnkKLSAgTmljaG9sYXMgUmlsZXkuCi0KLS0gSXNzdWUgIzEzMzk0OiB0aGUgYWlmYyBtb2R1bGUgbm93IHVzZXMgd2FybmluZ3Mud2FybigpIHRvIHNpZ25hbCB3YXJuaW5ncy4KLQotLSBJc3N1ZSAjMTQyNTI6IEZpeCBzdWJwcm9jZXNzLlBvcGVuLnRlcm1pbmF0ZSgpIHRvIG5vdCByYWlzZSBhbiBlcnJvciB1bmRlcgotICBXaW5kb3dzIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLgotCi0tIElzc3VlICMxNDIyMzogY3Vyc2VzLmFkZGNoKCkgaXMgbm8gbW9yZSBsaW1pdGVkIHRvIHRoZSByYW5nZSAwLTI1NSB3aGVuIHRoZQotICBQeXRob24gY3Vyc2VzIGlzIG5vdCBsaW5rZWQgdG8gbGlibmN1cnNlc3cuIEl0IHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZAotICBpbiBQeXRob24gMy4zYTEuCi0KLS0gSXNzdWUgIzE0MTY4OiBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgRWxlbWVudC5fYXR0cnMgaW4gbWluaWRvbSBiZWZvcmUKLSAgYWNjZXNzaW5nIGl0LgotCi0tIElzc3VlICMxMjMyODogRml4IG11bHRpcHJvY2Vzc2luZydzIHVzZSBvZiBvdmVybGFwcGVkIEkvTyBvbiBXaW5kb3dzLgotICBBbHNvLCBhZGQgYSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0KHJsaXN0LCB0aW1lb3V0PU5vbmUpIGZ1bmN0aW9uCi0gIGZvciBwb2xsaW5nIG11bHRpcGxlIG9iamVjdHMgYXQgb25jZS4gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTQwMDc6IEFjY2VwdCBpbmNvbXBsZXRlIFRyZWVCdWlsZGVyIG9iamVjdHMgKG1pc3Npbmcgc3RhcnQsIGVuZCwKLSAgZGF0YSBvciBjbG9zZSBtZXRob2QpIGZvciB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGFzIHdlbGwuCi0gIERyb3AgdGhlIG5vLW9wIFRyZWVCdWlsZGVyKCkueG1sKCkgbWV0aG9kIGZyb20gdGhlIEMgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE0MjEwOiBwZGIgbm93IGhhcyB0YWItY29tcGxldGlvbiBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0Ci0gIGFsc28gZm9yIHRoZWlyIGFyZ3VtZW50cywgd2hlcmV2ZXIgcG9zc2libGUuCi0KLS0gSXNzdWUgIzE0MzEwOiBTb2NrZXRzIGNhbiBub3cgYmUgd2l0aCBvdGhlciBwcm9jZXNzZXMgb24gV2luZG93cyB1c2luZwotICB0aGUgYXBpIHNvY2tldC5zb2NrZXQuc2hhcmUoKSBhbmQgc29ja2V0LmZyb21zaGFyZSgpLgotCi0tIElzc3VlICMxMDU3NjogVGhlIGdjIG1vZHVsZSBub3cgaGFzIGEgJ2NhbGxiYWNrcycgbWVtYmVyIHRoYXQgd2lsbCBnZXQKLSAgY2FsbGVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIHRha2VzIHBsYWNlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTQ1NTc6IEZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgotCi0tIElzc3VlICMxNDM4NzogRG8gbm90IGluY2x1ZGUgYWNjdS5oIGZyb20gUHl0aG9uLmguCi0KLS0gSXNzdWUgIzE0MzU5OiBPbmx5IHVzZSBPX0NMT0VYRUMgaW4gX3Bvc2l4bW9kdWxlLmMgaWYgaXQgaXMgZGVmaW5lZC4KLSAgQmFzZWQgb24gcGF0Y2ggZnJvbSBIZXJ2w6kgQ29hdGFuaGF5LgotCi0tIElzc3VlICMxNDMyMTogRG8gbm90IHJ1biBwZ2VuIGR1cmluZyB0aGUgYnVpbGQgaWYgZmlsZXMgYXJlIHVwIHRvIGRhdGUuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KLQotLSBJc3N1ZSAjMTQzMjQ6IEZpeCBjb25maWd1cmUgdGVzdHMgZm9yIGNyb3NzIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQzMjc6IENhbGwgQUNfQ0FOT05JQ0FMX0hPU1QgaW4gY29uZmlndXJlLmFjIGFuZCBjaGVjayBpbgotICBjb25maWcue2d1ZXNzLHN1Yn0uIERvbid0IHVzZSB1bmFtZSBjYWxscyBmb3IgY3Jvc3MgYnVpbGRzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTA0MTogQW4gaXNzdWUgaW4gY3R5cGVzLmNfbG9uZ2RvdWJsZSwgY3R5cGVzLmNfZG91YmxlLCBhbmQKLSAgY3R5cGVzLmNfZmxvYXQgdGhhdCBjYXVzZWQgYW4gaW5jb3JyZWN0IGV4Y2VwdGlvbiB0byBiZSByZXR1cm5lZCBpbiB0aGUKLSAgY2FzZSBvZiBvdmVyZmxvdyBoYXMgYmVlbiBmaXhlZC4KLQotLSBJc3N1ZSAjMTQyMTI6IFRoZSByZSBtb2R1bGUgZGlkbid0IHJldGFpbiBhIHJlZmVyZW5jZSB0byBidWZmZXJzIGl0IHdhcwotICBzY2FubmluZywgcmVzdWx0aW5nIGluIHNlZ2ZhdWx0cy4KLQotLSBJc3N1ZSAjMTQyNTk6IFRoZSBmaW5kaXRlcigpIG1ldGhvZCBvZiByZSBvYmplY3RzIGRpZCBub3QgdGFrZSBhbnkKLSAga2V5d29yZCBhcmd1bWVudHMsIGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMDE0MjogU3VwcG9ydCBmb3IgU0VFS19IT0xFL1NFRUtfREFUQSAoZm9yIGV4YW1wbGUsIHVuZGVyIFpGUykuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNDQ0MjogQWRkIG1pc3NpbmcgZXJybm8gaW1wb3J0IGluIHRlc3Rfc210cGxpYi4KLQotLSBJc3N1ZSAjODMxNTogKHBhcnRpYWwgZml4KSBweXRob24gLW0gdW5pdHRlc3QgdGVzdC50ZXN0X2VtYWlsIG5vdyB3b3Jrcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDUtTWFyLTIwMTIqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDE3MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gbWFyc2hhbGxpbmcgYSBidWZmZXItbGlrZSBvYmplY3QKLSAgKG90aGVyIHRoYW4gYSBieXRlcyBvYmplY3QpLgotCi0tIElzc3VlICMxMzUyMTogZGljdC5zZXRkZWZhdWx0KCkgbm93IGRvZXMgb25seSBvbmUgbG9va3VwIGZvciB0aGUgZ2l2ZW4ga2V5LAotICBtYWtpbmcgaXQgImF0b21pYyIgZm9yIG1hbnkgcHVycG9zZXMuICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgotCi0tIFBFUCA0MDksIElzc3VlICM2MjEwOiAicmFpc2UgWCBmcm9tIE5vbmUiIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBtZWFucyBvZgotICBzdXBwcmVzc2luZyB0aGUgZGlzcGxheSBvZiB0aGUgY2hhaW5lZCBleGNlcHRpb24gY29udGV4dC4gVGhlIGNoYWluZWQKLSAgY29udGV4dCBzdGlsbCByZW1haW5zIGF2YWlsYWJsZSBhcyB0aGUgX19jb250ZXh0X18gYXR0cmlidXRlLgotCi0tIElzc3VlICMxMDE4MTogTmV3IG1lbW9yeXZpZXcgaW1wbGVtZW50YXRpb24gZml4ZXMgbXVsdGlwbGUgb3duZXJzaGlwCi0gIGFuZCBsaWZldGltZSBpc3N1ZXMgb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIFB5X2J1ZmZlciBtZW1iZXJzICgjOTk5MCkKLSAgYXMgd2VsbCBhcyBjcmFzaGVzICgjODMwNSwgIzc0MzMpLiBNYW55IG5ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQKLSAgKFNlZSB3aGF0c25ldy8zLjMpLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCBleHRlbnNpdmVseS4KLSAgVGhlIG5kYXJyYXkgdGVzdCBvYmplY3QgZnJvbSBfdGVzdGJ1ZmZlci5jIGltcGxlbWVudHMgYWxsIGFzcGVjdHMgb2YKLSAgUEVQLTMxMTgsIHNvIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgdG93YXJkcyB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24KLSAgb2YgdGhlIFBFUCBjYW4gcHJvY2VlZCBpbiBhIHRlc3QtZHJpdmVuIG1hbm5lci4KLQotICBUaGFua3MgdG8gTmljayBDb2dobGFuLCBBbnRvaW5lIFBpdHJvdSBhbmQgUGF1bGkgVmlydGFuZW4gZm9yIHJldmlldwotICBhbmQgbWFueSBpZGVhcy4KLQotLSBJc3N1ZSAjMTI4MzQ6IEZpeCBpbmNvcnJlY3QgcmVzdWx0cyBvZiBtZW1vcnl2aWV3LnRvYnl0ZXMoKSBmb3IKLSAgbm9uLWNvbnRpZ3VvdXMgYXJyYXlzLgotCi0tIElzc3VlICM1MjMxOiBJbnRyb2R1Y2UgbWVtb3J5dmlldy5jYXN0KCkgbWV0aG9kIHRoYXQgYWxsb3dzIGNoYW5naW5nCi0gIGZvcm1hdCBhbmQgc2hhcGUgd2l0aG91dCBtYWtpbmcgYSBjb3B5IG9mIHRoZSB1bmRlcmx5aW5nIG1lbW9yeS4KLQotLSBJc3N1ZSAjMTQwODQ6IEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIHdpdGggYQotICBiYWQgZW5jb2RpbmcuCi0KLS0gVXBncmFkZSBVbmljb2RlIGRhdGEgdG8gVW5pY29kZSA2LjEuCi0KLS0gSXNzdWUgIzE0MDQwOiBSZW1vdmUgcmFyZWx5IHVzZWQgZmlsZSBuYW1lIHN1ZmZpeGVzIGZvciBDIGV4dGVuc2lvbnMKLSAgKHVuZGVyIFBPU0lYIG1haW5seSkuCi0KLS0gSXNzdWUgIzE0MDUxOiBBbGxvdyBhcmJpdHJhcnkgYXR0cmlidXRlcyB0byBiZSBzZXQgb2YgY2xhc3NtZXRob2QgYW5kCi0gIHN0YXRpY21ldGhvZC4KLQotLSBJc3N1ZSAjMTM3MDM6IG9DRVJULTIwMTEtMDAzOiBSYW5kb21pemUgaGFzaGVzIG9mIHN0ciBhbmQgYnl0ZXMgdG8gcHJvdGVjdAotICBhZ2FpbnN0IGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kCi0gIHNldCB0eXBlcy4gIFBhdGNoIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzEzMDIwOiBGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3RzZXF1ZW5jZSBvYmplY3QKLSAgZmFpbHMuICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzkwODogUmVhZHkgdHlwZXMgcmV0dXJuZWQgZnJvbSBQeVR5cGVfRnJvbVNwZWMuCi0KLS0gSXNzdWUgIzExMjM1OiBGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZQotICBtb2RpZmljYXRpb24gdGltZSBkb2Vzbid0IGZpdCBpbiBhIDMyLWJpdCB0aW1lc3RhbXAuCi0KLS0gSXNzdWUgIzEyNzA1OiBBIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpcyBub3cgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0bwotICBjb21waWxlIG11bHRpcGxlIHN0YXRlbWVudHMgYXMgYSBzaW5nbGUgaW50ZXJhY3RpdmUgc3RhdGVtZW50LgotCi0tIEZpeCB0aGUgYnVpbHRpbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24gY29kZSB0byBzdG9yZSB0aGUgaW5pdCBmdW5jdGlvbiBmb3IKLSAgZnV0dXJlIHJlaW5pdGlhbGl6YXRpb24uCi0KLS0gSXNzdWUgIzgwNTI6IFRoZSBwb3NpeCBzdWJwcm9jZXNzIG1vZHVsZSB3b3VsZCB0YWtlIGEgbG9uZyB0aW1lIGNsb3NpbmcKLSAgYWxsIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNoaWxkIHByb2Nlc3MgcmF0aGVyIHRoYW4ganVzdCBvcGVuCi0gIGZpbGUgZGVzY3JpcHRvcnMuICBJdCBub3cgY2xvc2VzIG9ubHkgdGhlIG9wZW4gZmRzIGlmIHBvc3NpYmxlIGZvciB0aGUKLSAgZGVmYXVsdCBjbG9zZV9mZHM9VHJ1ZSBiZWhhdmlvci4KLQotLSBJc3N1ZSAjMTM2Mjk6IFJlbnVtYmVyIHRoZSB0b2tlbnMgaW4gdG9rZW4uaCBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIGluZGV4ZXMKLSAgaW50byBfUHlQYXJzZXJfVG9rZW5OYW1lcy4KLQotLSBJc3N1ZSAjMTM3NTI6IEFkZCBhIGNhc2Vmb2xkKCkgbWV0aG9kIHRvIHN0ci4KLQotLSBJc3N1ZSAjMTM3NjE6IEFkZCBhICJmbHVzaCIga2V5d29yZCBhcmd1bWVudCB0byB0aGUgcHJpbnQoKSBmdW5jdGlvbiwKLSAgdXNlZCB0byBlbnN1cmUgZmx1c2hpbmcgdGhlIG91dHB1dCBzdHJlYW0uCi0KLS0gSXNzdWUgIzEzNjQ1OiBweWMgZmlsZXMgbm93IGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlCi0gIGNvZGUsIHRvIGF2b2lkIHRpbWVzdGFtcCBjb2xsaXNpb25zIChlc3BlY2lhbGx5IG9uIGZpbGVzeXN0ZW1zIHdpdGggYSBsb3cKLSAgdGltZXN0YW1wIHJlc29sdXRpb24pIHdoZW4gY2hlY2tpbmcgZm9yIGZyZXNobmVzcyBvZiB0aGUgYnl0ZWNvZGUuCi0KLS0gUEVQIDM4MCwgSXNzdWUgIzExNjgyOiBBZGQgInlpZWxkIGZyb20gPHg+IiB0byBzdXBwb3J0IGVhc3kgZGVsZWdhdGlvbiB0bwotICBzdWJnZW5lcmF0b3JzIChpbml0aWFsIHBhdGNoIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0aW9uIGludG8gMy4zIGJ5Ci0gIFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHksIFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgYW5kIE5pY2sgQ29naGxhbikKLQotLSBJc3N1ZSAjMTM3NDg6IFJhdyBieXRlcyBsaXRlcmFscyBjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aCB0aGUgYGByYmBgIHByZWZpeAotICBhcyB3ZWxsIGFzIGBgYnJgYC4KLQotLSBJc3N1ZSAjMTI3MzY6IFVzZSBmdWxsIHVuaWNvZGUgY2FzZSBtYXBwaW5ncyBmb3IgdXBwZXIsIGxvd2VyLCBhbmQgdGl0bGUgY2FzZS4KLQotLSBJc3N1ZSAjMTI3NjA6IEFkZCBhIGNyZWF0ZSBtb2RlIHRvIG9wZW4oKS4gUGF0Y2ggYnkgRGF2aWQgVG93bnNoZW5kLgotCi0tIElzc3VlICMxMzczODogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgYnl0ZXMubG93ZXIoKSBhbmQgYnl0ZXMudXBwZXIoKS4KLQotLSBJc3N1ZSAjMTM1Nzc6IEJ1aWx0LWluIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBub3cgaGF2ZSBhIF9fcXVhbG5hbWVfXy4KLSAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICM2Njk1OiBGdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiBydW5zIG5vdyBjbGVhciB0aGUgZnJlZWxpc3Qgb2Ygc2V0Ci0gIG9iamVjdHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdHRoaWFzIFRyb2ZmYWVzLgotCi0tIEZpeCBPU0Vycm9yLl9faW5pdF9fIGFuZCBPU0Vycm9yLl9fbmV3X18gc28gdGhhdCBlYWNoIG9mIHRoZW0gY2FuIGJlCi0gIG92ZXJyaWRlbiBhbmQgdGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoZm9sbG93dXAgdG8gaXNzdWUgIzEyNTU1KS4KLQotLSBGaXggdGhlIGZpeCBmb3IgaXNzdWUgIzEyMTQ5OiBpdCB3YXMgaW5jb3JyZWN0LCBhbHRob3VnaCBpdCBoYWQgdGhlIHNpZGUKLSAgZWZmZWN0IG9mIGFwcGVhcmluZyB0byByZXNvbHZlIHRoZSBpc3N1ZS4gIFRoYW5rcyB0byBNYXJrIFNoYW5ub24gZm9yCi0gIG5vdGljaW5nLgotCi0tIElzc3VlICMxMzUwNTogUGlja2xlIGJ5dGVzIG9iamVjdHMgaW4gYSB3YXkgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGgKLSAgUHl0aG9uIDIgd2hlbiB1c2luZyBwcm90b2NvbHMgPD0gMi4KLQotLSBJc3N1ZSAjMTExNDc6IEZpeCBhbiB1bnVzZWQgYXJndW1lbnQgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUi4gIChGaXgKLSAgZ2l2ZW4gYnkgQ2FtcGJlbGwgQmFydG9uKS4KLQotLSBJc3N1ZSAjMTM1MDM6IFVzZSBhIG1vcmUgZWZmaWNpZW50IHJlZHVjdGlvbiBmb3JtYXQgZm9yIGJ5dGVhcnJheXMgd2l0aAotICBwaWNrbGUgcHJvdG9jb2wgPj0gMy4gIFRoZSBvbGQgcmVkdWN0aW9uIGZvcm1hdCBpcyBrZXB0IHdpdGggb2xkZXIgcHJvdG9jb2xzCi0gIGluIG9yZGVyIHRvIGFsbG93IHVucGlja2xpbmcgdW5kZXIgUHl0aG9uIDIuICBQYXRjaCBieSBJcm1lbiBkZSBKb25nLgotCi0tIElzc3VlICM3MTExOiBQeXRob24gY2FuIG5vdyBiZSBydW4gd2l0aG91dCBhIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyCi0gIHN0cmVhbS4gIEl0IHdhcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggUHl0aG9uIDIuICBIb3dldmVyLCB0aGUgY29ycmVzcG9uZGluZwotICBzeXMgbW9kdWxlIGVudHJpZXMgYXJlIG5vdyBzZXQgdG8gTm9uZSAoaW5zdGVhZCBvZiBhbiB1bnVzYWJsZSBmaWxlIG9iamVjdCkuCi0KLS0gSXNzdWUgIzExODQ5OiBFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZAotICBvbiBQT1NJWCBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5Ci0gIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBQRVAgMzE1NSAvIGlzc3VlICMxMzQ0ODogUXVhbGlmaWVkIG5hbWUgZm9yIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTM0MzY6IEZpeCBhIGJvZ3VzIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbiBBU1Qgb2JqZWN0IHdhcyBwYXNzZWQKLSAgYW4gaW52YWxpZCBpbnRlZ2VyIHZhbHVlLgotCi0tIElzc3VlICMxMzQxMTogbWVtb3J5dmlldyBvYmplY3RzIGFyZSBub3cgaGFzaGFibGUgd2hlbiB0aGUgdW5kZXJseWluZwotICBvYmplY3QgaXMgaGFzaGFibGUuCi0KLS0gSXNzdWUgIzEzMzM4OiBIYW5kbGUgYWxsIGVudW1lcmF0aW9ucyBpbiBfUHlfQU5OT1RBVEVfTUVNT1JZX09SREVSCi0gIHRvIGFsbG93IGNvbXBpbGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIC1Xc3dpdGNoLWVudW0gb24gZ2NjLgotICBJbml0aWFsIHBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICMxMDIyNzogQWRkIGFuIGFsbG9jYXRpb24gY2FjaGUgZm9yIGEgc2luZ2xlIHNsaWNlIG9iamVjdC4gIFBhdGNoIGJ5Ci0gIFN0ZWZhbiBCZWhuZWwuCi0KLS0gSXNzdWUgIzEzMzkzOiBCdWZmZXJlZFJlYWRlci5yZWFkMSgpIG5vdyBhc2tzIHRoZSBmdWxsIHJlcXVlc3RlZCBzaXplIHRvCi0gIHRoZSByYXcgc3RyZWFtIGluc3RlYWQgb2YgbGltaXRpbmcgaXRzZWxmIHRvIHRoZSBidWZmZXIgc2l6ZS4KLQotLSBJc3N1ZSAjMTMzOTI6IFdyaXRpbmcgYSBweWMgZmlsZSBzaG91bGQgbm93IGJlIGF0b21pYyB1bmRlciBXaW5kb3dzIGFzIHdlbGwuCi0KLS0gSXNzdWUgIzEzMzMzOiBUaGUgVVRGLTcgZGVjb2RlciBub3cgYWNjZXB0cyBsb25lIHN1cnJvZ2F0ZXMgKHRoZSBlbmNvZGVyCi0gIGFscmVhZHkgYWNjZXB0cyB0aGVtKS4KLQotLSBJc3N1ZSAjMTMzODk6IEZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIHBhc3NlcyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0cyBmb3IKLSAgbGlzdCBhbmQgZGljdCBvYmplY3RzLiAgVGhleSBhbHJlYWR5IGNsZWFyZWQgb3RoZXIgZnJlZWxpc3RzIGluIHRoZQotICBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMTMzMjc6IFJlbW92ZSB0aGUgbmVlZCBmb3IgYW4gZXhwbGljaXQgTm9uZSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50Ci0gIHRvIG9zLnV0aW1lLCBvcy5sdXRpbWVzLCBvcy5mdXRpbWVzLCBvcy5mdXRpbWVucywgb3MuZnV0aW1lc2F0LCBpbgotICBvcmRlciB0byB1cGRhdGUgdG8gdGhlIGN1cnJlbnQgdGltZS4gQWxzbyBhZGRlZCBrZXl3b3JkIGFyZ3VtZW50Ci0gIGhhbmRsaW5nIHRvIG9zLnV0aW1lbnNhdCBpbiBvcmRlciB0byByZW1vdmUgdGhlIG5lZWQgZm9yIGV4cGxpY2l0IE5vbmUuCi0KLS0gSXNzdWUgIzEzMzUwOiBTaW1wbGlmeSBzb21lIEMgY29kZSBieSByZXBsYWNpbmcgbW9zdCB1c2FnZXMgb2YKLSAgUHlVbmljb2RlX0Zvcm1hdCBieSBQeVVuaWNvZGVfRnJvbUZvcm1hdC4KLQotLSBJc3N1ZSAjMTMzNDI6IGlucHV0KCkgdXNlZCB0byBpZ25vcmUgc3lzLnN0ZGluJ3MgYW5kIHN5cy5zdGRvdXQncyB1bmljb2RlCi0gIGVycm9yIGhhbmRsZXIgaW4gaW50ZXJhY3RpdmUgbW9kZSAod2hlbiBjYWxsaW5nIGludG8gUHlPU19SZWFkbGluZSgpKS4KLQotLSBJc3N1ZSAjOTg5NjogQWRkIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhdHRyaWJ1dGVzIHRvIHJhbmdlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEzMzQzOiBGaXggYSBTeXN0ZW1FcnJvciB3aGVuIGEgbGFtYmRhIGV4cHJlc3Npb24gdXNlcyBhIGdsb2JhbAotICB2YXJpYWJsZSBpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBhIGtleXdvcmQtb25seSBhcmd1bWVudDogYGBsYW1iZGEgKiwKLSAgYXJnPUdMT0JBTF9OQU1FOiBOb25lYGAKLQotLSBJc3N1ZSAjMTI3OTc6IEFkZGVkIGN1c3RvbSBvcGVuZXIgcGFyYW1ldGVyIHRvIGJ1aWx0aW4gb3BlbigpIGFuZAotICBGaWxlSU8ub3BlbigpLgotCi0tIElzc3VlICMxMDUxOTogQXZvaWQgdW5uZWNlc3NhcnkgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGluCi0gIHNldG9iamVjdC5jLgotCi0tIElzc3VlICMxMDM2MzogRGVhbGxvY2F0ZSBnbG9iYWwgbG9ja3MgaW4gUHlfRmluYWxpemUoKS4KLQotLSBJc3N1ZSAjMTMwMTg6IEZpeCByZWZlcmVuY2UgbGVha3MgaW4gZXJyb3IgcGF0aHMgaW4gZGljdG9iamVjdC5jLgotICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzIwMTogRGVmaW5lICc9PScgYW5kICchPScgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzIGJhc2VkIG9uCi0gIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nIGJhc2VkIG9uCi0gIG9iamVjdCBpZGVudGl0eSkuCi0KLS0gSXNzdWUgIzEyOTQyMzI6IEluIGEgZmV3IGNhc2VzIGludm9sdmluZyBtZXRhY2xhc3MgaW5oZXJpdGFuY2UsIHRoZQotICBpbnRlcnByZXRlciB3b3VsZCBzb21ldGltZXMgaW52b2tlIHRoZSB3cm9uZyBtZXRhY2xhc3Mgd2hlbiBidWlsZGluZyBhIG5ldwotICBjbGFzcyBvYmplY3QuIFRoZXNlIGNhc2VzIG5vdyBiZWhhdmUgY29ycmVjdGx5LiBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzEyNzUzOiBBZGQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KLSAgQm90aCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgYW5kICdcTnsuLi59JyBub3cgcmVzb2x2ZSBhbGlhc2VzLAotICBhbmQgYGB1bmljb2RlZGF0YS5sb29rdXAoKWBgIHJlc29sdmVzIG5hbWVkIHNlcXVlbmNlcyB0b28uCi0KLS0gSXNzdWUgIzEyMTcwOiBUaGUgY291bnQoKSwgZmluZCgpLCByZmluZCgpLCBpbmRleCgpIGFuZCByaW5kZXgoKSBtZXRob2RzCi0gIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBub3cgYWNjZXB0IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyNTUKLSAgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KLQotLSBJc3N1ZSAjMTI2MDQ6IFZUUkFDRSBtYWNybyBleHBhbmRlZCB0byBuby1vcCBpbiBfc3JlLmMgdG8gYXZvaWQgY29tcGlsZXIKLSAgd2FybmluZ3MuIFBhdGNoIGJ5IEpvc2ggVHJpcGxldHQgYW5kIFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMjI4MTogUmV3cml0ZSB0aGUgTUJDUyBjb2RlYyB0byBoYW5kbGUgY29ycmVjdGx5IHJlcGxhY2UgYW5kIGlnbm9yZQotICBlcnJvciBoYW5kbGVycyBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4gVGhlIE1CQ1MgY29kZWMgaXMgbm93IHN1cHBvcnRpbmcgYWxsCi0gIGVycm9yIGhhbmRsZXJzLCBpbnN0ZWFkIG9mIG9ubHkgcmVwbGFjZSB0byBlbmNvZGUgYW5kIGlnbm9yZSB0byBkZWNvZGUuCi0KLS0gSXNzdWUgIzEzMTg4OiBXaGVuIGNhbGxlZCB3aXRob3V0IGFuIGV4cGxpY2l0IHRyYWNlYmFjayBhcmd1bWVudCwKLSAgZ2VuZXJhdG9yLnRocm93KCkgbm93IGdldHMgdGhlIHRyYWNlYmFjayBmcm9tIHRoZSBwYXNzZWQgZXhjZXB0aW9uJ3MKLSAgYGBfX3RyYWNlYmFja19fYGAgYXR0cmlidXRlLiAgUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzEzMTQ2OiBXcml0aW5nIGEgcHljIGZpbGUgaXMgbm93IGF0b21pYyB1bmRlciBQT1NJWC4KLQotLSBJc3N1ZSAjNzgzMzogRXh0ZW5zaW9uIG1vZHVsZXMgYnVpbHQgdXNpbmcgZGlzdHV0aWxzIG9uIFdpbmRvd3Mgd2lsbCBubwotICBsb25nZXIgaW5jbHVkZSBhICJtYW5pZmVzdCIgdG8gcHJldmVudCB0aGVtIGZhaWxpbmcgYXQgaW1wb3J0IHRpbWUgaW4gc29tZQotICBlbWJlZGRlZCBzaXR1YXRpb25zLgotCi0tIFBFUCAzMTUxIC8gaXNzdWUgIzEyNTU1OiByZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5LgotCi0tIEFkZCBpbnRlcm5hbCBBUEkgZm9yIHN0YXRpYyBzdHJpbmdzIChfUHlfaWRlbnRpZmllciBldCBhbC4pLgotCi0tIElzc3VlICMxMzA2MzogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfTk9fREFUQSAobnVtYmVyZWQgMjMyIGFuZCBkZXNjcmliZWQKLSAgYXMgIlRoZSBwaXBlIGlzIGJlaW5nIGNsb3NlZCIpIGlzIG5vdyBtYXBwZWQgdG8gUE9TSVggZXJybm8gRVBJUEUKLSAgKHByZXZpb3VzbHkgRUlOVkFMKS4KLQotLSBJc3N1ZSAjMTI5MTE6IEZpeCBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVwcigpIG9mIGh1Z2UKLSAgdHVwbGVzIG9yIGxpc3RzLgotCi0tIFBFUCAzOTM6IGZsZXhpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhhbmtzIHRvIFRvcnN0ZW4gQmVja2VyIGZvciB0aGUKLSAgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYW5kIFZpY3RvciBTdGlubmVyIGZvciB2YXJpb3VzIGJ1ZyBmaXhlcy4KLQotLSBJc3N1ZSAjMTQwODE6IFRoZSAnc2VwJyBhbmQgJ21heHNwbGl0JyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0LCBieXRlcy5zcGxpdCwKLSAgYW5kIGJ5dGVhcnJheS5zcGxpdCBtYXkgbm93IGJlIHBhc3NlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTMwMTI6IFRoZSAna2VlcGVuZHMnIHBhcmFtZXRlciB0byBzdHIuc3BsaXRsaW5lcyBtYXkgbm93IGJlIHBhc3NlZAotICBhcyBhIGtleXdvcmQgYXJndW1lbnQ6ICJteV9zdHJpbmcuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSIuICBUaGUgc2FtZQotICBjaGFuZ2UgYWxzbyBhcHBsaWVzIHRvIGJ5dGVzLnNwbGl0bGluZXMgYW5kIGJ5dGVhcnJheS5zcGxpdGxpbmVzLgotCi0tIElzc3VlICM3NzMyOiBEb24ndCBvcGVuIGEgZGlyZWN0b3J5IGFzIGEgZmlsZSBhbnltb3JlIHdoaWxlIGltcG9ydGluZyBhCi0gIG1vZHVsZS4gSWdub3JlIHRoZSBkaXJlY290cnkgaWYgaXRzIG5hbWUgbWF0Y2hzIHRoZSBtb2R1bGUgbmFtZSAoZS5nLgotICAiX19pbml0X18ucHkiKSBhbmQgcmFpc2UgYSBJbXBvcnRFcnJvciBpbnN0ZWFkLgotCi0tIElzc3VlICMxMzAyMTogTWlzc2luZyBkZWNyZWYgb24gYW4gZXJyb3IgcGF0aC4gIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvcgotICBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgotCi0tIElzc3VlICMxMjk3MzogRml4IG92ZXJmbG93IGNoZWNrcyB0aGF0IHJlbGllZCBvbiB1bmRlZmluZWQgYmVoYXZpb3VyIGluCi0gIGxpc3RfcmVwZWF0IChsaXN0b2JqZWN0LmMpIGFuZCBpc2xpY2VfbmV4dCAoaXRlcnRvb2xzbW9kdWxlLmMpLiAgVGhlc2UgYnVncwotICBjYXVzZWQgdGVzdCBmYWlsdXJlcyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBDbGFuZy4KLQotLSBJc3N1ZSAjMTI5MDQ6IG9zLnV0aW1lLCBvcy5mdXRpbWVzLCBvcy5sdXRpbWVzLCBhbmQgb3MuZnV0aW1lc2F0IG5vdyB3cml0ZQotICBhdGltZSBhbmQgbXRpbWUgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbiBvbiBtb2Rlcm4gUE9TSVggcGxhdGZvcm1zLgotCi0tIElzc3VlICMxMjgwMjogdGhlIFdpbmRvd3MgZXJyb3IgRVJST1JfRElSRUNUT1JZIChudW1iZXJlZCAyNjcpIGlzIG5vdwotICBtYXBwZWQgdG8gUE9TSVggZXJybm8gRU5PVERJUiAocHJldmlvdXNseSBFSU5WQUwpLgotCi0tIElzc3VlICM5MjAwOiBUaGUgc3RyLmlzKiBtZXRob2RzIG5vdyB3b3JrIHdpdGggc3RyaW5ncyB0aGF0IGNvbnRhaW4gbm9uLUJNUAotICBjaGFyYWN0ZXJzIGV2ZW4gaW4gbmFycm93IFVuaWNvZGUgYnVpbGRzLgotCi0tIElzc3VlICMxMjc5MTogQnJlYWsgcmVmZXJlbmNlIGN5Y2xlcyBlYXJseSB3aGVuIGEgZ2VuZXJhdG9yIGV4aXRzIHdpdGgKLSAgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICMxMjc3MzogTWFrZSBfX2RvY19fIG11dGFibGUgb24gdXNlci1kZWZpbmVkIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzEyNzY2OiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBjcmVhdGluZyBhIGNsYXNzIHdpdGggYSBjbGFzcyB2YXJpYWJsZQotICB0aGF0IGNvbmZsaWN0cyB3aXRoIGEgbmFtZSBpbiBfX3Nsb3RzX18uCi0KLS0gSXNzdWUgIzEyMjY2OiBGaXggc3RyLmNhcGl0YWxpemUoKSB0byBjb3JyZWN0bHkgdXBwZXJjYXNlL2xvd2VyY2FzZQotICB0aXRsZWNhc2VkIGFuZCBjYXNlZCBub24tbGV0dGVyIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzEyNzMyOiBJbiBuYXJyb3cgdW5pY29kZSBidWlsZHMsIGFsbG93IFVuaWNvZGUgaWRlbnRpZmllcnMgd2hpY2ggZmFsbAotICBvdXRzaWRlIHRoZSBCTVAuCi0KLS0gSXNzdWUgIzEyNTc1OiBWYWxpZGF0ZSB1c2VyLWdlbmVyYXRlZCBBU1QgYmVmb3JlIGl0IGlzIGNvbXBpbGVkLgotCi0tIE1ha2UgdHlwZShOb25lKSwgdHlwZShFbGxpcHNpcyksIGFuZCB0eXBlKE5vdEltcGxlbWVudGVkKSBjYWxsYWJsZS4gVGhleQotICByZXR1cm4gdGhlIHJlc3BlY3RpdmUgc2luZ2xldG9uIGluc3RhbmNlcy4KLQotLSBGb3JiaWQgc3VtbWluZyBieXRlcyB3aXRoIHN1bSgpLgotCi0tIFZlcmlmeSB0aGUgdHlwZXMgb2YgQVNUIHN0cmluZ3MgYW5kIGlkZW50aWZpZXJzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGJlZm9yZQotICBjb21waWxpbmcgdGhlbS4KLQotLSBJc3N1ZSAjMTI2NDc6IFRoZSBOb25lIG9iamVjdCBub3cgaGFzIGEgX19ib29sX18oKSBtZXRob2QgdGhhdCByZXR1cm5zIEZhbHNlLgotICBGb3JtZXJseSwgYm9vbChOb25lKSByZXR1cm5lZCBGYWxzZSBvbmx5IGJlY2F1c2Ugb2Ygc3BlY2lhbCBjYXNlIGxvZ2ljCi0gIGluIFB5T2JqZWN0X0lzVHJ1ZSgpLgotCi0tIElzc3VlICMxMjU3OTogc3RyLmZvcm1hdF9tYXAoKSBub3cgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiB1c2VkIG9uIGEKLSAgZm9ybWF0IHN0cmluZyB0aGF0IGNvbnRhaW5zIHBvc2l0aW9uYWwgZmllbGRzLiBJbml0aWFsIHBhdGNoIGJ5Ci0gIEp1bGlhbiBCZXJtYW4uCi0KLS0gSXNzdWUgIzEwMjcxOiBBbGxvdyB3YXJuaW5ncy5zaG93d2FybmluZygpIGJlIGFueSBjYWxsYWJsZS4KLQotLSBJc3N1ZSAjMTE2Mjc6IEZpeCBzZWdmYXVsdCB3aGVuIF9fbmV3X18gb24gYSBleGNlcHRpb24gcmV0dXJucyBhCi0gIG5vbi1leGNlcHRpb24gY2xhc3MuCi0KLS0gSXNzdWUgIzEyMTQ5OiBVcGRhdGUgdGhlIG1ldGhvZCBjYWNoZSBhZnRlciBhIHR5cGUncyBkaWN0aW9uYXJ5IGdldHMKLSAgY2xlYXJlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGlzIGZpeGVzIGEgc2VnZmF1bHQgd2hlbiBhbiBpbnN0YW5jZQotICBhbmQgaXRzIHR5cGUgZ2V0IGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZSwgYW5kIHRoZSBpbnN0YW5jZSdzCi0gIGRlYWxsb2NhdG9yIGNhbGxzIG9uZSBvZiB0aGUgbWV0aG9kcyBvbiB0aGUgdHlwZSAoZS5nLiB3aGVuIHN1YmNsYXNzaW5nCi0gIElPQmFzZSkuICBEaWFnbm9zaXMgYW5kIHBhdGNoIGJ5IERhdmlkZSBSaXp6by4KLQotLSBJc3N1ZSAjOTYxMSwgSXNzdWUgIzkwMTU6IEZpbGVJTy5yZWFkKCkgY2xhbXBzIHRoZSBsZW5ndGggdG8gSU5UX01BWCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM5NjQyOiBVbmlmb3JtaXplIHRoZSB0ZXN0cyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBtYmNzIGNvZGVjLCBhZGQKLSAgYSBuZXcgSEFWRV9NQkNTIGRlZmluZS4KLQotLSBJc3N1ZSAjOTY0MjogRml4IGZpbGVzeXN0ZW0gZW5jb2RpbmcgaW5pdGlhbGl6YXRpb246IHVzZSB0aGUgQU5TSSBjb2RlIHBhZ2UKLSAgb24gV2luZG93cyBpZiB0aGUgbWJjcyBjb2RlYyBpcyBub3QgYXZhaWxhYmxlLCBhbmQgZmFpbCB3aXRoIGEgZmF0YWwgZXJyb3IgaWYKLSAgd2UgY2Fubm90IGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIChpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBpcyBub3QgYXZhaWxhYmxlKQotICBpbnN0ZWFkIG9mIHVzaW5nIFVURi04LgotCi0tIFdoZW4gYSBnZW5lcmF0b3IgeWllbGRzLCBkbyBub3QgcmV0YWluIHRoZSBjYWxsZXIncyBleGNlcHRpb24gc3RhdGUgb24gdGhlCi0gIGdlbmVyYXRvci4KLQotLSBJc3N1ZSAjMTI0NzU6IFByZXZlbnQgZ2VuZXJhdG9ycyBmcm9tIGxlYWtpbmcgdGhlaXIgZXhjZXB0aW9uIHN0YXRlIGludG8gdGhlCi0gIGNhbGxlcidzIGZyYW1lIGFzIHRoZXkgcmV0dXJuIGZvciB0aGUgbGFzdCB0aW1lLgotCi0tIElzc3VlICMxMjI5MTogWW91IGNhbiBub3cgbG9hZCBtdWx0aXBsZSBtYXJzaGFsbGVkIG9iamVjdHMgZnJvbSBhIHN0cmVhbSwKLSAgd2l0aCBvdGhlciBkYXRhIGludGVybGVhdmVkIGJldHdlZW4gbWFyc2hhbGxlZCBvYmplY3RzLgotCi0tIElzc3VlICMxMjM1NjogV2hlbiByZXF1aXJlZCBwb3NpdGlvbmFsIG9yIGtleXdvcmQtb25seSBhcmd1bWVudHMgYXJlIG5vdAotICBnaXZlbiwgcHJvZHVjZSBhIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2Ugd2hpY2ggaW5jbHVkZXMgdGhlIG5hbWUocykgb2YgdGhlCi0gIG1pc3NpbmcgYXJndW1lbnRzLgotCi0tIElzc3VlICMxMjM3MDogRml4IHN1cGVyIHdpdGggbm8gYXJndW1lbnRzIHdoZW4gX19jbGFzc19fIGlzIG92ZXJyaWRlbiBpbiB0aGUKLSAgY2xhc3MgYm9keS4KLQotLSBJc3N1ZSAjMTIwODQ6IG9zLnN0YXQgb24gV2luZG93cyBub3cgd29ya3MgcHJvcGVybHkgd2l0aCByZWxhdGl2ZSBzeW1ib2xpYwotICBsaW5rcyB3aGVuIGNhbGxlZCBmcm9tIGFueSBkaXJlY3RvcnkuCi0KLS0gTG9vc2VuIHR5cGUgcmVzdHJpY3Rpb25zIG9uIHRoZSBfX2Rpcl9fIG1ldGhvZC4gX19kaXJfXyBjYW4gbm93IHJldHVybiBhbnkKLSAgc2VxdWVuY2UsIHdoaWNoIHdpbGwgYmUgY29udmVydGVkIHRvIGEgbGlzdCBhbmQgc29ydGVkIGJ5IGRpcigpLgotCi0tIElzc3VlICMxMjI2NTogTWFrZSBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCBieSBwYXNzaW5nIGFuIGludmFsaWQgc2V0IG9mCi0gIGFyZ3VtZW50cyB0byBhIGZ1bmN0aW9uIG1vcmUgaW5mb3JtYXRpdmUuCi0KLS0gSXNzdWUgIzEyMjI1OiBTdGlsbCBhbGxvdyBQeXRob24gdG8gYnVpbGQgaWYgUHl0aG9uIGlzIG5vdCBpbiBpdHMgaGcgcmVwbyBvcgotICBtZXJjdXJpYWwgaXMgbm90IGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTE5NTogbXlfZmdldHMoKSBub3cgYWx3YXlzIGNsZWFycyBlcnJvcnMgYmVmb3JlIGNhbGxpbmcgZmdldHMoKS4gRml4Ci0gIHRoZSBmb2xsb3dpbmcgY2FzZTogc3lzLnN0ZGluLnJlYWQoKSBzdG9wcGVkIHdpdGggQ1RSTCtkIChlbmQgb2YgZmlsZSksCi0gIHJhd19pbnB1dCgpIGludGVycnVwdGVkIGJ5IENUUkwrYy4KLQotLSBJc3N1ZSAjMTIyMTY6IEFsbG93IHVuZXhwZWN0ZWQgRU9GIGVycm9ycyB0byBoYXBwZW4gb24gYW55IGxpbmUgb2YgdGhlIGZpbGUuCi0KLS0gSXNzdWUgIzEyMTk5OiBUaGUgVHJ5RXhjZXB0IGFuZCBUcnlGaW5hbGx5IGFuZCBBU1Qgbm9kZXMgaGF2ZSBiZWVuIHVuaWZpZWQKLSAgaW50byBhIFRyeSBub2RlLgotCi0tIElzc3VlICM5NjcwOiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgotICBNYWMgT1MgWCBhbmQgRnJlZUJTRCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSBjcmFzaCBpbnN0ZWFkIG9mIGEKLSAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uLgotICAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQotCi0tIElzc3VlICMxMjEwNjogVGhlIHVzZSBvZiB0aGUgbXVsdGlwbGUtd2l0aCBzaG9ydGhhbmQgc3ludGF4IGlzIG5vdyByZWZsZWN0ZWQKLSAgaW4gdGhlIEFTVC4KLQotLSBJc3N1ZSAjMTIxOTA6IFRyeSB0byB1c2UgdGhlIHNhbWUgZmlsZW5hbWUgb2JqZWN0IHdoZW4gY29tcGlsaW5nIHVubWFyc2hhbGxpbmcKLSAgYSBjb2RlIG9iamVjdHMgaW4gdGhlIHNhbWUgZmlsZS4KLQotLSBJc3N1ZSAjMTIxNjY6IE1vdmUgaW1wbGVtZW50YXRpb25zIG9mIGRpcigpIHNwZWNpYWxpemVkIGZvciB2YXJpb3VzIHR5cGVzIGludG8KLSAgdGhlIF9fZGlyX18oKSBtZXRob2RzIG9mIHRob3NlIHR5cGVzLgotCi0tIElzc3VlICM1NzE1OiBJbiBzb2NrZXRzZXJ2ZXIsIGNsb3NlIHRoZSBzZXJ2ZXIgc29ja2V0IGluIHRoZSBjaGlsZCBwcm9jZXNzLgotCi0tIENvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGNhdXNlcyBlcnJvcnMKLSAgYmVzaWRlcyBBdHRyaWJ1dGVFcnJvciBmb3VuZCBvbiBsb29rdXAgdG8gYmUgcHJvcGFnYXRlZC4KLQotLSBJc3N1ZSAjMTIwNjA6IFVzZSBzaWdfYXRvbWljX3QgdHlwZSBhbmQgdm9sYXRpbGUga2V5d29yZCBpbiB0aGUgc2lnbmFsCi0gIG1vZHVsZS4gUGF0Y2ggd3JpdHRlbiBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzE3NDY2NTY6IEFkZGVkIHRoZSBpZl9uYW1laW5kZXgsIGlmX2luZGV4dG9uYW1lLCBpZl9uYW1ldG9pbmRleAotICBtZXRob2RzIHRvIHRoZSBzb2NrZXQgbW9kdWxlLgotCi0tIElzc3VlICMxMjA0NDogRml4ZWQgc3VicHJvY2Vzcy5Qb3BlbiB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdG8KLSAgd2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gZW5kIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCB0byBhdm9pZCB1bmludGVudGlvbmFsbHkKLSAgbGVhdmluZyB6b21iaWUgcHJvY2Vzc2VzIGFyb3VuZC4KLQotLSBJc3N1ZSAjMTE5NTogRml4IGlucHV0KCkgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgQ1RSTCtkIGFuZCB0aGVuIENUUkwrYywKLSAgY2xlYXIgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBhZnRlciBDVFJMK2QuCi0KLS0gSXNzdWUgIzE4NTY6IEF2b2lkIGNyYXNoZXMgYW5kIGxvY2t1cHMgd2hlbiBkYWVtb24gdGhyZWFkcyBydW4gd2hpbGUgdGhlCi0gIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd247IGluc3RlYWQsIHRoZXNlIHRocmVhZHMgYXJlIG5vdyBraWxsZWQgd2hlbgotICB0aGV5IHRyeSB0byB0YWtlIHRoZSBHSUwuCi0KLS0gSXNzdWUgIzk3NTY6IFdoZW4gY2FsbGluZyBhIG1ldGhvZCBkZXNjcmlwdG9yIG9yIGEgc2xvdCB3cmFwcGVyIGRlc2NyaXB0b3IsCi0gIHRoZSBjaGVjayBvZiB0aGUgb2JqZWN0IHR5cGUgZG9lc24ndCByZWFkIHRoZSBfX2NsYXNzX18gYXR0cmlidXRlIGFueW1vcmUuCi0gIEZpeCBhIGNyYXNoIGlmIGEgY2xhc3Mgb3ZlcnJpZGUgaXRzIF9fY2xhc3NfXyBhdHRyaWJ1dGUgKGUuZy4gYSBwcm94eSBvZiB0aGUKLSAgc3RyIHR5cGUpLiBQYXRjaCB3cml0dGVuIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTA1MTc6IEFmdGVyIGZvcmsoKSwgcmVpbml0aWFsaXplIHRoZSBUTFMgdXNlZCBieSB0aGUgUHlHSUxTdGF0ZV8qCi0gIEFQSXMsIHRvIGF2b2lkIGEgY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaAotICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzEwOTE0OiBJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgZmlsZXN5c3RlbSBjb2RlYyB3aGVuIGNyZWF0aW5nIGEgbmV3Ci0gIHN1YmludGVycHJldGVyIHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZSB3aXRoIGNvZGVjcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIGFzCi0gIHRoZSBJU08tODg1OS0xNSBjb2RlYy4KLQotLSBJc3N1ZSAjMTE5MTg6IE9TLzIgYW5kIFZNUyBhcmUgbm8gbW9yZSBzdXBwb3J0ZWQgYmVjYXVzZSBvZiB0aGUgbGFjayBvZgotICBtYWludGFpbmVyLgotCi0tIElzc3VlICM2NzgwOiBmaXggc3RhcnRzL2VuZHN3aXRoIGVycm9yIG1lc3NhZ2UgdG8gbWVudGlvbiB0aGF0IHR1cGxlcyBhcmUKLSAgYWNjZXB0ZWQgdG9vLgotCi0tIElzc3VlICM1MDU3OiBmaXggYSBidWcgaW4gdGhlIHBlZXBob2xlciB0aGF0IGxlZCB0byBub24tcG9ydGFibGUgcHljIGZpbGVzCi0gIGJldHdlZW4gbmFycm93IGFuZCB3aWRlIGJ1aWxkcyB3aGlsZSBvcHRpbWl6aW5nIEJJTkFSWV9TVUJTQ1Igb24gbm9uLUJNUAotICBjaGFycyAoZS5nLiAiXFUwMDAxMjM0NSJbMF0pLgotCi0tIElzc3VlICMxMTg0NTogRml4IHR5cG8gaW4gcmFuZ2VvYmplY3QuYyB0aGF0IGNhdXNlZCBhIGNyYXNoIGluCi0gIGNvbXB1dGVfc2xpY2VfaW5kaWNlcy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KLQotLSBJc3N1ZSAjNTY3MzogQWRkZWQgYSBgdGltZW91dGAga2V5d29yZCBhcmd1bWVudCB0byBzdWJwcm9jZXNzLlBvcGVuLndhaXQsCi0gIHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGVkLCBzdWJwcm9jZXNzLmNhbGwsIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCwgYW5kCi0gIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0LiAgSWYgdGhlIGJsb2NraW5nIG9wZXJhdGlvbiB0YWtlcyBtb3JlIHRoYW4gYHRpbWVvdXRgCi0gIHNlY29uZHMsIHRoZSBgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLQotLSBJc3N1ZSAjMTE2NTA6IFB5T1NfU3RkaW9SZWFkbGluZSgpIHJldHJpZXMgZmdldHMoKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQKLSAgKEVJTlRSKSwgZm9yIGV4YW1wbGUgaWYgdGhlIHByb2dyYW0gaXMgc3RvcHBlZCB3aXRoIENUUkwreiBvbiBNYWMgT1MgWC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjOTMxOTogSW5jbHVkZSB0aGUgZmlsZW5hbWUgaW4gIk5vbi1VVEY4IGNvZGUgLi4uIiBzeW50YXggZXJyb3IuCi0KLS0gSXNzdWUgIzEwNzg1OiBTdG9yZSB0aGUgZmlsZW5hbWUgYXMgVW5pY29kZSBpbiB0aGUgUHl0aG9uIHBhcnNlci4KLQotLSBJc3N1ZSAjMTE2MTk6IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZSgpIGRvZXNuJ3QgZW5jb2RlIHRoZSBwYXRoIHRvIGJ5dGVzCi0gIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEwOTk4OiBSZW1vdmUgbWVudGlvbnMgb2YgLVEsIHN5cy5mbGFncy5kaXZpc2lvbl93YXJuaW5nIGFuZAotICBQeV9EaXZpc2lvbldhcm5pbmdGbGFnIGxlZnQgb3ZlciBmcm9tIFB5dGhvbiAyLgotCi0tIElzc3VlICMxMTI0NDogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IHBlZXBob2xlciBjaGVjayB0aGF0IHdhcyBwcmV2ZW50aW5nCi0gIG5lZ2F0aXZlIHplcm9zIGZyb20gYmVpbmcgY29uc3RhbnQtZm9sZGVkIHByb3Blcmx5LgotCi0tIElzc3VlICMxMTM5NTogaW8uRmlsZUlPKCkud3JpdGUoKSBjbGFtcHMgdGhlIGRhdGEgbGVuZ3RoIHRvIDMyLDc2NyBieXRlcyBvbgotICBXaW5kb3dzIGlmIHRoZSBmaWxlIGlzIGEgVFRZIHRvIHdvcmthcm91bmQgYSBXaW5kb3dzIGJ1Zy4gVGhlIFdpbmRvd3MgY29uc29sZQotICByZXR1cm5zIGFuIGVycm9yICgxMjogbm90IGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZgotICBzdGRvdXQgbW9kZSBpcyBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywKLSAgZGVwZW5kaW5nIG9uIGhlYXAgdXNhZ2UpLgotCi0tIElzc3VlICMxMTMyMDogZml4IGJvZ3VzIG1lbW9yeSBtYW5hZ2VtZW50IGluIE1vZHVsZXMvZ2V0cGF0aC5jLCBsZWFkaW5nIHRvCi0gIGEgcG9zc2libGUgY3Jhc2ggd2hlbiBjYWxsaW5nIFB5X1NldFBhdGgoKS4KLQotLSBJc3N1ZSAjMTE0MzI6IEEgYnVnIHdhcyBpbnRyb2R1Y2VkIGluIHN1YnByb2Nlc3MuUG9wZW4gb24gcG9zaXggc3lzdGVtcyB3aXRoCi0gIDMuMi4wIHdoZXJlIHRoZSBzdGRvdXQgb3Igc3RkZXJyIGZpbGUgZGVzY3JpcHRvciBiZWluZyB0aGUgc2FtZSBhcyB0aGUgc3RkaW4KLSAgZmlsZSBkZXNjcmlwdG9yIHdvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbi4gd2ViYnJvd3Nlci5vcGVuIHdvdWxkIGZhaWwuIGZpeGVkLgotCi0tIElzc3VlICM5ODU2OiBDaGFuZ2Ugb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nCi0gIHRvIGJlIGEgRGVwcmVjYXRpb25XYXJuaW5nLiBJbiAzLjIgaXQgd2FzIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KLSAgSW4gMy40IGl0IHdpbGwgYmUgYSBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzExMjQ0OiBUaGUgcGVlcGhvbGUgb3B0aW1pemVyIGlzIG5vdyBhYmxlIHRvIGNvbnN0YW50LWZvbGQKLSAgYXJiaXRyYXJpbHkgY29tcGxleCBleHByZXNzaW9ucy4gIFRoaXMgYWxzbyBmaXhlcyBhIDMuMiByZWdyZXNzaW9uIHdoZXJlCi0gIG9wZXJhdGlvbnMgaW52b2x2aW5nIG5lZ2F0aXZlIG51bWJlcnMgd2VyZSBub3QgY29uc3RhbnQtZm9sZGVkLgotCi0tIElzc3VlICMxMTQ1MDogRG9uJ3QgdHJ1bmNhdGUgaGcgdmVyc2lvbiBpbmZvIGluIFB5X0dldEJ1aWxkSW5mbygpIHdoZW4KLSAgdGhlcmUgYXJlIG1hbnkgdGFncyAoZS5nLiB3aGVuIHVzaW5nIG1xKS4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTEzMzU6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gbGlzdC5zb3J0IHdoZW4gdGhlIGtleSBmdW5jdGlvbgotICB0aHJvd3MgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICM4OTIzOiBXaGVuIGEgc3RyaW5nIGlzIGVuY29kZWQgdG8gVVRGLTggaW4gc3RyaWN0IG1vZGUsIHRoZSByZXN1bHQgaXMKLSAgY2FjaGVkIGludG8gdGhlIG9iamVjdC4gRXhhbXBsZXM6IHN0ci5lbmNvZGUoKSwgc3RyLmVuY29kZSgndXRmLTgnKSwKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGFuZCBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsICJ1dGYtOCIsCi0gIE5VTEwpLgotCi0tIElzc3VlICMxMDgyOTogUmVmYWN0b3IgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSwgdXNlIHRoZSBzYW1lIGZ1bmN0aW9uIHRvIHBhcnNlCi0gIHRoZSBmb3JtYXQgc3RyaW5nIGluIHRoZSAzIHN0ZXBzLCBmaXggY3Jhc2hzIG9uIGludmFsaWQgZm9ybWF0IHN0cmluZ3MuCi0KLS0gSXNzdWUgIzEzMDA3OiB3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KLQotLSBJc3N1ZSAjMTEyODY6IFJhaXNlIGEgVmFsdWVFcnJvciBmcm9tIGNhbGxpbmcgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIgd2l0aAotICBhIGJ1ZmZlciBzdHJ1Y3QgaGF2aW5nIGEgTlVMTCBkYXRhIHBvaW50ZXIuCi0KLS0gSXNzdWUgIzExMjcyOiBPbiBXaW5kb3dzLCBpbnB1dCgpIHN0cmlwcyAnXHInIChhbmQgbm90IG9ubHkgJ1xuJyksIGFuZAotICBzeXMuc3RkaW4gdXNlcyB1bml2ZXJzYWwgbmV3bGluZSAocmVwbGFjZSAnXHJcbicgYnkgJ1xuJykuCi0KLS0gSXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBub3cgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguCi0gIFBhdGNoIGJ5IFRvcnN0ZW4gQmVja2VyLgotCi0tIElzc3VlICMxMTE2ODogUmVtb3ZlIGZpbGVuYW1lIGRlYnVnIHZhcmlhYmxlIGZyb20gUHlFdmFsX0V2YWxGcmFtZUV4KCkuCi0gIEl0IGVuY29kZWQgdGhlIFVuaWNvZGUgZmlsZW5hbWUgdG8gVVRGLTgsIGJ1dCB0aGUgZW5jb2RpbmcgZmFpbHMgb24KLSAgdW5kZWNvZGFibGUgZmlsZW5hbWUgKG9uIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzKSB3aGljaCByYWlzZXMgYW4gdW5leHBlY3RlZAotICBVbmljb2RlRW5jb2RlRXJyb3Igb24gcmVjdXJzaW9uIGxpbWl0LgotCi0tIElzc3VlICMxMTE4NzogUmVtb3ZlIGJvb3RzdHJhcCBjb2RlICh1c2UgQVNDSUkpIG9mCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSwgaXQgd2FzIHJlcGxhY2VkIGJ5IGEgYmV0dGVyIGZhbGxiYWNrICh1c2UgdGhlCi0gIGxvY2FsZSBlbmNvZGluZykgaW4gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpLgotCi0tIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCi0KLS0gSXNzdWUgIzEwNTE2OiBOZXcgY29weSgpIGFuZCBjbGVhcigpIG1ldGhvZHMgZm9yIGxpc3RzIGFuZCBieXRlYXJyYXlzLgotCi0tIElzc3VlICMxMTM4NjogYnl0ZWFycmF5LnBvcCgpIG5vdyB0aHJvd3MgSW5kZXhFcnJvciB3aGVuIHRoZSBieXRlYXJyYXkgaXMKLSAgZW1wdHksIGluc3RlYWQgb2YgT3ZlcmZsb3dFcnJvci4KLQotLSBJc3N1ZSAjMTIzODA6IFRoZSByanVzdCwgbGp1c3QgYW5kIGNlbnRlciBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkKLSAgbm93IGFjY2VwdCBhIGJ5dGVhcnJheSBhcmd1bWVudC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxNDE5NTogQW4gaXNzdWUgdGhhdCBjYXVzZWQgd2Vha3JlZi5XZWFrU2V0IGluc3RhbmNlcyB0byBpbmNvcnJlY3RseQotICByZXR1cm4gVHJ1ZSBmb3IgYSBXZWFrU2V0IGluc3RhbmNlICdhJyBpbiBib3RoICdhIDwgYScgYW5kICdhID4gYScgaGFzIGJlZW4KLSAgZml4ZWQuCi0KLS0gSXNzdWUgIzE0MTY2OiBQaWNrbGVyIG9iamVjdHMgbm93IGhhdmUgYW4gb3B0aW9uYWwgYGBkaXNwYXRjaF90YWJsZWBgCi0gIGF0dHJpYnV0ZSB3aGljaCBhbGxvd3MgdG8gc2V0IGN1c3RvbSBwZXItcGlja2xlciByZWR1Y3Rpb24gZnVuY3Rpb25zLgotICBQYXRjaCBieSBzYnQuCi0KLS0gSXNzdWUgIzE0MTc3OiBtYXJzaGFsLmxvYWRzKCkgbm93IHJhaXNlcyBUeXBlRXJyb3Igd2hlbiBnaXZlbiBhbiB1bmljb2RlCi0gIHN0cmluZy4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBHb27Dp2FsdmVzLgotCi0tIElzc3VlICMxMzU1MDogUmVtb3ZlIHRoZSBkZWJ1ZyBtYWNoaW5lcnkgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZTogcmVtb3ZlCi0gIHZlcmJvc2UgYXJndW1lbnRzIGZyb20gYWxsIHRocmVhZGluZyBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzE0MTU5OiBGaXggdGhlIGxlbigpIG9mIHdlYWsgY29udGFpbmVycyAoV2Vha1NldCwgV2Vha0tleURpY3Rpb25hcnksCi0gIFdlYWtWYWx1ZURpY3Rpb25hcnkpIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uIHdoZW4gc29tZSBvYmplY3RzCi0gIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIgdGhhbgotICBPKG4pLgotCi0tIElzc3VlICMxMTg0MTogRml4IGNvbXBhcmlzb24gYnVnIHdpdGggJ3JjJyB2ZXJzaW9ucyBpbiBwYWNrYWdpbmcudmVyc2lvbi4KLSAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjNjg4NDogRml4IGxvbmctc3RhbmRpbmcgYnVncyB3aXRoIE1BTklGRVNULmluIHBhcnNpbmcgaW4gZGlzdHV0aWxzCi0gIG9uIFdpbmRvd3MuICBBbHNvIGZpeGVkIGluIHBhY2thZ2luZy4KLQotLSBJc3N1ZSAjODAzMzogc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zCi0gIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcHBlIERldmFsa2VuZWVyLgotCi0tIEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KLQotLSBJc3N1ZSAjMTM2NDE6IERlY29kaW5nIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZTY0IG1vZHVsZSBub3cgYWNjZXB0IEFTQ0lJLW9ubHkKLSAgdW5pY29kZSBzdHJpbmdzLiAgUGF0Y2ggYnkgQ2F0YWxpbiBJYWNvYi4KLQotLSBJc3N1ZSAjMTQwNDM6IFNwZWVkIHVwIGltcG9ydGxpYidzIF9GaWxlRmluZGVyIGJ5IGF0IGxlYXN0IDh4LCBhbmQgYWRkIGEKLSAgbmV3IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxNDAwMTogQ1ZFLTIwMTItMDg0NTogeG1scnBjOiBGaXggYW4gZW5kbGVzcyBsb29wIGluCi0gIFNpbXBsZVhNTFJQQ1NlcnZlciB1cG9uIG1hbGZvcm1lZCBQT1NUIHJlcXVlc3QuCi0KLS0gSXNzdWUgIzEzOTYxOiBNb3ZlIGltcG9ydGxpYiBvdmVyIHRvIHVzaW5nIG9zLnJlcGxhY2UoKSBmb3IgYXRvbWljIHJlbmFtaW5nLgotCi0tIERvIGF3YXkgd2l0aCBhbWJpZ3VvdXMgbGV2ZWwgdmFsdWVzIChhcyBzdWdnZXN0ZWQgYnkgUEVQIDMyOCkgaW4KLSAgaW1wb3J0bGliLl9faW1wb3J0X18oKSBieSByYWlzaW5nIFZhbHVlRXJyb3Igd2hlbiBsZXZlbCA8IDAuCi0KLS0gSXNzdWUgIzI0ODk6IHB0eS5zcGF3biBjb3VsZCBjb25zdW1lIDEwMCUgY3B1IHdoZW4gaXQgZW5jb3VudGVyZWQgYW4gRU9GLgotCi0tIElzc3VlICMxMzAxNDogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCi0KLS0gSXNzdWUgIzEzNzc3OiBBZGQgUEZfU1lTVEVNIHNvY2tldHMgb24gT1MgWC4KLSAgUGF0Y2ggYnkgTWljaGFlbCBHb2RlcmJhdWVyLgotCi0tIElzc3VlICMxMzAxNTogRml4IGEgcG9zc2libGUgcmVmZXJlbmNlIGxlYWsgaW4gZGVmYXVsdGRpY3QuX19yZXByX18uCi0gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCi0KLS0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYW5kIHBhY2thZ2luZydzIGJ1aWxkX2V4dCBjb21tYW5kcyBvcHRpb24gbm93Ci0gIGNvcnJlY3RseSBwYXJzZXMgbXVsdGlwbGUgdmFsdWVzIChzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMpIGdpdmVuCi0gIHRvIHRoZWlyIC0tbGlicmFyaWVzIG9wdGlvbi4KLQotLSBJc3N1ZSAjMTAyODc6IG5udHBsaWIgbm93IHF1ZXJpZXMgdGhlIHNlcnZlcidzIENBUEFCSUxJVElFUyBmaXJzdCBiZWZvcmUKLSAgc2VuZGluZyBNT0RFIFJFQURFUiwgYW5kIG9ubHkgc2VuZHMgaXQgaWYgbm90IGFscmVhZHkgaW4gUkVBREVSIG1vZGUuCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTM5OTM6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBlbmQgdGFncyB3aGVuCi0gIHN0cmljdD1GYWxzZS4KLQotLSBJc3N1ZSAjMTM5MzA6IGxpYjJ0bzMgbm93IHN1cHBvcnRzIHdyaXRpbmcgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCi0gIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCi0gIHN1ZmZpeC4KLQotLSBJc3N1ZSAjOTc1MDogRml4IHNxbGl0ZTMuQ29ubmVjdGlvbi5pdGVyZHVtcCBvbiB0YWJsZXMgYW5kIGZpZWxkcwotICB3aXRoIGEgbmFtZSB0aGF0IGlzIGEga2V5d29yZCBvciBjb250YWlucyBxdW90ZXMuIFBhdGNoIGJ5IE1hcmtvCi0gIEtvaHRhbGEuCi0KLS0gSXNzdWUgIzEwMjg3OiBubnRwbGliIG5vdyBxdWVyaWVzIHRoZSBzZXJ2ZXIncyBDQVBBQklMSVRJRVMgYWdhaW4gYWZ0ZXIKLSAgYXV0aGVudGljYXRpbmcgKHNpbmNlIHRoZSByZXN1bHQgbWF5IGNoYW5nZSwgYWNjb3JkaW5nIHRvIFJGQyA0NjQzKS4KLSAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxMzU5MDogT24gT1MgWCAxMC43IGFuZCAxMC42IHdpdGggWGNvZGUgNC4yLCBidWlsZGluZwotICBEaXN0dXRpbHMtYmFzZWQgcGFja2FnZXMgd2l0aCBDIGV4dGVuc2lvbiBtb2R1bGVzIG1heSBmYWlsIGJlY2F1c2UKLSAgQXBwbGUgaGFzIHJlbW92ZWQgZ2NjLTQuMiwgdGhlIHZlcnNpb24gdXNlZCB0byBidWlsZCBweXRob24ub3JnCi0gIDY0LWJpdC8zMi1iaXQgUHl0aG9ucy4gIElmIHRoZSB1c2VyIGRvZXMgbm90IGV4cGxpY2l0bHkgb3ZlcnJpZGUKLSAgdGhlIGRlZmF1bHQgQyBjb21waWxlciBieSBzZXR0aW5nIHRoZSBDQyBlbnZpcm9ubWVudCB2YXJpYWJsZSwKLSAgRGlzdHV0aWxzIHdpbGwgbm93IGF0dGVtcHQgdG8gY29tcGlsZSBleHRlbnNpb24gbW9kdWxlcyB3aXRoIGNsYW5nCi0gIGlmIGdjYy00LjIgaXMgcmVxdWlyZWQgYnV0IG5vdCBmb3VuZC4gQWxzbyBhcyBhIGNvbnZlbmllbmNlLCBpZgotICB0aGUgdXNlciBkb2VzIGV4cGxpY2l0bHkgc2V0IENDLCBzdWJzdGl0dXRlIGl0cyB2YWx1ZSBhcyB0aGUgZGVmYXVsdAotICBjb21waWxlciBpbiB0aGUgRGlzdHV0aWxzIExEU0hBUkVEIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZm9yIE9TIFguCi0gIChOb3RlLCB0aGUgcHl0aG9uLm9yZyAzMi1iaXQtb25seSBQeXRob25zIHVzZSBnY2MtNC4wIGFuZCB0aGUgMTAuNHUKLSAgU0RLLCBuZWl0aGVyIG9mIHdoaWNoIGFyZSBhdmFpbGFibGUgaW4gWGNvZGUgNC4gIFRoaXMgY2hhbmdlIGRvZXMgbm90Ci0gIGF0dGVtcHQgdG8gb3ZlcnJpZGUgc2V0dGluZ3MgdG8gc3VwcG9ydCB0aGVpciB1c2Ugd2l0aCBYY29kZSA0LikKLQotLSBJc3N1ZSAjMTM5NjA6IEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIGJyb2tlbiBjb21tZW50cyB3aGVuCi0gIHN0cmljdD1GYWxzZS4KLQotLSBXaGVuICcnIGlzIGEgcGF0aCAoZS5nLiBpbiBzeXMucGF0aCksIG1ha2Ugc3VyZSBfX2ZpbGVfXyB1c2VzIHRoZSBjdXJyZW50Ci0gIHdvcmtpbmcgZGlyZWN0b3J5IGluc3RlYWQgb2YgJycgaW4gaW1wb3J0bGliLgotCi0tIElzc3VlICMxMzYwOTogQWRkIHR3byBmdW5jdGlvbnMgdG8gcXVlcnkgdGhlIHRlcm1pbmFsIHNpemU6Ci0gIG9zLmdldF90ZXJtaW5hbF9zaXplIChsb3cgbGV2ZWwpIGFuZCBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUgKGhpZ2ggbGV2ZWwpLgotICBQYXRjaCBieSBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrLgotCi0tIElzc3VlICMxMzg0NTogT24gV2luZG93cywgdGltZS50aW1lKCkgbm93IHVzZXMgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKQotICBpbnN0ZWFkIG9mIGZ0aW1lKCkgdG8gaGF2ZSBhIHJlc29sdXRpb24gb2YgMTAwIG5zIGluc3RlYWQgb2YgMSBtcyAodGhlIGNsb2NrCi0gIGFjY3VyYWN5IGlzIGJldHdlZW4gMC41IG1zIGFuZCAxNSBtcykuCi0KLS0gSXNzdWUgIzEzODQ2OiBBZGQgdGltZS5tb25vdG9uaWMoKSwgbW9ub3RvbmljIGNsb2NrLgotCi0tIElzc3VlICM4MTg0OiBtdWx0aXByb2Nlc3Npbmc6IE9uIFdpbmRvd3MsIGRvbid0IHNldCBTT19SRVVTRUFERFIgb24KLSAgQ29ubmVjdGlvbiBzb2NrZXRzLCBhbmQgc2V0IEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFIG9uIG5hbWVkIHBpcGVzLCB0bwotICBtYWtlIHN1cmUgdHdvIGxpc3RlbmVycyBjYW4ndCBiaW5kIHRvIHRoZSBzYW1lIHNvY2tldC9waXBlIChvciBhbnkgZXhpc3RpbmcKLSAgc29ja2V0L3BpcGUpLgotCi0tIElzc3VlICMxMDgxMTogRml4IHJlY3Vyc2l2ZSB1c2FnZSBvZiBjdXJzb3JzLiBJbnN0ZWFkIG9mIGNyYXNoaW5nLAotICByYWlzZSBhIFByb2dyYW1taW5nRXJyb3Igbm93LgotCi0tIElzc3VlICMxMzczNDogQWRkIG9zLmZ3YWxrKCksIGEgZGlyZWN0b3J5IHdhbGtpbmcgZnVuY3Rpb24geWllbGRpbmcgZmlsZQotICBkZXNjcmlwdG9ycy4KLQotLSBJc3N1ZSAjMjk0NTogTWFrZSB0aGUgZGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIGF3YXJlIG9mIGJkaXN0X3JwbSBwcm9kdWN0cy4KLQotLSBJc3N1ZSAjMTM3MTI6IHB5c2V0dXAgY3JlYXRlIHNob3VsZCBub3QgY29udmVydCBwYWNrYWdlX2RhdGEgdG8gZXh0cmFfZmlsZXMuCi0KLS0gSXNzdWUgIzExODA1OiBwYWNrYWdlX2RhdGEgaW4gc2V0dXAuY2ZnIHNob3VsZCBhbGxvdyBtb3JlIHRoYW4gb25lIHZhbHVlLgotCi0tIElzc3VlICMxMzY3NjogSGFuZGxlIHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCB6ZXJvcyBjb3JyZWN0bHkgaW4gc3FsaXRlMy4KLQotLSBJc3N1ZSAjODgyODogQWRkIG5ldyBmdW5jdGlvbiBvcy5yZXBsYWNlKCksIGZvciBjcm9zcy1wbGF0Zm9ybSByZW5hbWluZwotICB3aXRoIG92ZXJ3cml0aW5nLgotCi0tIElzc3VlICMxMzg0ODogb3BlbigpIGFuZCB0aGUgRmlsZUlPIGNvbnN0cnVjdG9yIG5vdyBjaGVjayBmb3IgTlVMCi0gIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgbmFtZS4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTM4MDY6IFRoZSBzaXplIGNoZWNrIGluIGF1ZGlvb3AgZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMgd2FzIHRvbwotICBzdHJpY3QgYW5kIGNvdWxkIHJlamVjdCB2YWxpZCBjb21wcmVzc2VkIGRhdGEuICBQYXRjaCBieSBPbGVnIFBsYWtob3RueXVrLgotCi0tIElzc3VlICMxMzgxMjogV2hlbiBhIG11bHRpcHJvY2Vzc2luZyBQcm9jZXNzIGNoaWxkIHJhaXNlcyBhbiBleGNlcHRpb24sCi0gIGZsdXNoIHN0ZGVyciBhZnRlciBwcmludGluZyB0aGUgZXhjZXB0aW9uIHRyYWNlYmFjay4KLQotLSBJc3N1ZSAjMTM4ODU6IENWRS0yMDExLTMzODk6IHRoZSBfc3NsIG1vZHVsZSB3b3VsZCBhbHdheXMgZGlzYWJsZSB0aGUgQ0JDCi0gIElWIGF0dGFjayBjb3VudGVybWVhc3VyZS4KLQotLSBJc3N1ZSAjMTM4NDc6IHRpbWUubG9jYWx0aW1lKCkgYW5kIHRpbWUuZ210aW1lKCkgbm93IHJhaXNlIGFuIE9TRXJyb3IgaW5zdGVhZAotICBvZiBWYWx1ZUVycm9yIG9uIGZhaWx1cmUuIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5hc2N0aW1lKCkgbm93IHJhaXNlcyBhbgotICBPU0Vycm9yIGlmIGxvY2FsdGltZSgpIGZhaWxlZC4gdGltZS5jbG9jaygpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCi0gIHByb2Nlc3NvciB0aW1lIHVzZWQgaXMgbm90IGF2YWlsYWJsZSBvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkCi0KLS0gSXNzdWUgIzEzNzcyOiBJbiBvcy5zeW1saW5rKCkgdW5kZXIgV2luZG93cywgZG8gbm90IHRyeSB0byBndWVzcyB0aGUgbGluawotICB0YXJnZXQncyB0eXBlIChmaWxlIG9yIGRpcmVjdG9yeSkuICBUaGUgZGV0ZWN0aW9uIHdhcyBidWdneSBhbmQgbWFkZSB0aGUKLSAgY2FsbCBub24tYXRvbWljICh0aGVyZWZvcmUgcHJvbmUgdG8gcmFjZSBjb25kaXRpb25zKS4KLQotLSBJc3N1ZSAjNjYzMTogRGlzYWxsb3cgcmVsYXRpdmUgZmlsZSBwYXRocyBpbiB1cmxsaWIgdXJsb3BlbiBtZXRob2RzLgotCi0tIElzc3VlICMxMzcyMjogQXZvaWQgc2lsZW5jaW5nIEltcG9ydEVycm9ycyB3aGVuIGluaXRpYWxpemluZyB0aGUgY29kZWNzCi0gIHJlZ2lzdHJ5LgotCi0tIElzc3VlICMxMzc4MTogRml4IEd6aXBGaWxlIGJ1ZyB0aGF0IGNhdXNlZCBhbiBleGNlcHRpb24gdG8gYmUgcmFpc2VkIHdoZW4KLSAgb3BlbmluZyBmb3Igd3JpdGluZyB1c2luZyBhIGZpbGVvYmogcmV0dXJuZWQgYnkgb3MuZmRvcGVuKCkuCi0KLS0gSXNzdWUgIzEzODAzOiBVbmRlciBTb2xhcmlzLCBkaXN0dXRpbHMgZG9lc24ndCBpbmNsdWRlIGJpdG5lc3MKLSAgaW4gdGhlIGRpcmVjdG9yeSBuYW1lLgotCi0tIElzc3VlICMxMDI3ODogQWRkIHRpbWUud2FsbGNsb2NrKCkgZnVuY3Rpb24sIG1vbm90b25pYyBjbG9jay4KLQotLSBJc3N1ZSAjMTM4MDk6IEZpeCByZWdyZXNzaW9uIHdoZXJlIGJ6MiBtb2R1bGUgd291bGRuJ3Qgd29yayB3aGVuIHRocmVhZHMgYXJlCi0gIGRpc2FibGVkLiBPcmlnaW5hbCBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KLQotLSBJc3N1ZSAjMTM1ODk6IEZpeCBzb21lIHNlcmlhbGl6YXRpb24gcHJpbWl0aXZlcyBpbiB0aGUgYWlmYyBtb2R1bGUuCi0gIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCi0KLS0gSXNzdWUgIzEzNjQyOiBVbnF1b3RlIGJlZm9yZSBiNjRlbmNvZGluZyB1c2VyOnBhc3N3b3JkIGR1cmluZyBCYXNpYwotICBBdXRoZW50aWNhdGlvbi4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSm9vbmFzIEt1b3JpbGVodG8uCi0KLS0gSXNzdWUgIzEyMzY0OiBGaXggYSBoYW5nIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yLgotICBUaGUgaGFuZyB3b3VsZCBvY2N1ciB3aGVuIHJldHJpZXZpbmcgdGhlIHJlc3VsdCBvZiBhIHNjaGVkdWxlZCBmdXR1cmUgYWZ0ZXIKLSAgdGhlIGV4ZWN1dG9yIGhhZCBiZWVuIHNodXQgZG93bi4KLQotLSBJc3N1ZSAjMTM1MDI6IHRocmVhZGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gRXZlbnQud2FpdCgpIHRoYXQgbWFkZSBpdAotICByZXR1cm4gRmFsc2Ugd2hlbiB0aGUgZXZlbnQgd2FzIHNldCBhbmQgY2xlYXJlZCByaWdodCBhZnRlci4KLQotLSBJc3N1ZSAjOTk5MzogV2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW1zLAotICBhbmQgdGhlIHNvdXJjZSBpcyBhIHN5bWxpbmssIHNodXRpbC5tb3ZlKCkgbm93IHJlY3JlYXRlcyBhIHN5bWxpbmsgb24gdGhlCi0gIGRlc3RpbmF0aW9uIGluc3RlYWQgb2YgY29weWluZyB0aGUgZmlsZSBjb250ZW50cy4gIFBhdGNoIGJ5IEpvbmF0aGFuIE5pZWhvZgotICBhbmQgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxMjkyNjogRml4IGEgYnVnIGluIHRhcmZpbGUncyBsaW5rIGV4dHJhY3Rpb24uCi0KLS0gSXNzdWUgIzEzNjk2OiBGaXggdGhlIDMwMiBSZWxhdGl2ZSBVUkwgUmVkaXJlY3Rpb24gcHJvYmxlbS4KLQotLSBJc3N1ZSAjMTM2MzY6IFdlYWsgY2lwaGVycyBhcmUgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIHNzbCBtb2R1bGUKLSAgKGV4Y2VwdCB3aGVuIFNTTHYyIGlzIGV4cGxpY2l0bHkgYXNrZWQgZm9yKS4KLQotLSBJc3N1ZSAjMTI3MTU6IEFkZCBhbiBvcHRpb25hbCBzeW1saW5rcyBhcmd1bWVudCB0byBzaHV0aWwgZnVuY3Rpb25zCi0gIChjb3B5ZmlsZSwgY29weW1vZGUsIGNvcHlzdGF0LCBjb3B5LCBjb3B5MikuICBXaGVuIHRoYXQgcGFyYW1ldGVyIGlzCi0gIHRydWUsIHN5bWxpbmtzIGFyZW4ndCBkZXJlZmVyZW5jZWQgYW5kIHRoZSBvcGVyYXRpb24gaW5zdGVhZCBhY3RzIG9uIHRoZQotICBzeW1saW5rIGl0c2VsZiAob3IgY3JlYXRlcyBvbmUsIGlmIHJlbGV2YW50KS4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBBZGQgYSBmbGFncyBwYXJhbWV0ZXIgdG8gc2VsZWN0LmVwb2xsLgotCi0tIElzc3VlICMxMzYyNjogQWRkIHN1cHBvcnQgZm9yIFNTTCBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlCi0gIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBtZXRob2QgYW5kIHRoZSBzc2wuT1BfU0lOR0xFX0RIX1VTRSBvcHRpb24uCi0KLS0gSXNzdWUgIzExMDA2OiBEb24ndCBpc3N1ZSBsb3cgbGV2ZWwgd2FybmluZyBpbiBzdWJwcm9jZXNzIHdoZW4gcGlwZTIoKSBmYWlscy4KLQotLSBJc3N1ZSAjMTM2MjA6IFN1cHBvcnQgZm9yIENocm9tZSBicm93c2VyIGluIHdlYmJyb3dzZXIuICBQYXRjaCBjb250cmlidXRlZAotICBieSBBcm5hdWQgQ2FsbWV0dGVzLgotCi0tIElzc3VlICMxMTgyOTogRml4IGNvZGUgZXhlY3V0aW9uIGhvbGVzIGluIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yCi0gIG1ldGFjbGFzc2VzIHdpdGggbWV0YWNsYXNzZXMuIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTI3MDg6IEFkZCBzdGFybWFwKCkgYW5kIHN0YXJtYXBfYXN5bmMoKSBtZXRob2RzIChzaW1pbGFyIHRvCi0gIGl0ZXJ0b29scy5zdGFybWFwKCkpIHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgotCi0tIElzc3VlICMxNzg1OiBGaXggaW5zcGVjdCBhbmQgcHlkb2Mgd2l0aCBtaXNiZWhhdmluZyBkZXNjcmlwdG9ycy4KLQotLSBJc3N1ZSAjMTM2Mzc6ICJhMmIiIGZ1bmN0aW9ucyBpbiB0aGUgYmluYXNjaWkgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQotICB1bmljb2RlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzEzNjM0OiBBZGQgc3VwcG9ydCBmb3IgcXVlcnlpbmcgYW5kIGRpc2FibGluZyBTU0wgY29tcHJlc3Npb24uCi0KLS0gSXNzdWUgIzEzNjI3OiBBZGQgc3VwcG9ydCBmb3IgU1NMIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuCi0gIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUgU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZSgpIG1ldGhvZCBhbmQgdGhlCi0gIHNzbC5PUF9TSU5HTEVfRUNESF9VU0Ugb3B0aW9uLgotCi0tIElzc3VlICMxMzYzNTogQWRkIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIHNvIHRoYXQgU1NMIHNlcnZlcnMKLSAgY2hvb3NlIHRoZSBjaXBoZXIgYmFzZWQgb24gdGhlaXIgb3duIHByZWZlcmVuY2VzLCByYXRoZXIgdGhhbiBvbiB0aGUKLSAgY2xpZW50J3MuCi0KLS0gSXNzdWUgIzExODEzOiBGaXggaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IgbW9kdWxlcy4gUGF0Y2ggYnkgQW5kcmVhcwotICBTdMO8aHJrLgotCi0tIElzc3VlICM3NTAyOiBGaXggZXF1YWxpdHkgY29tcGFyaXNvbiBmb3IgRG9jVGVzdENhc2UgaW5zdGFuY2VzLiAgUGF0Y2ggYnkKLSAgQ8OpZHJpYyBLcmllci4KLQotLSBJc3N1ZSAjMTE4NzA6IHRocmVhZGluZzogUHJvcGVybHkgcmVpbml0aWFsaXplIHRocmVhZHMgaW50ZXJuYWwgbG9ja3MgYW5kCi0gIGNvbmRpdGlvbiB2YXJpYWJsZXMgdG8gYXZvaWQgZGVhZGxvY2tzIGluIGNoaWxkIHByb2Nlc3Nlcy4KLQotLSBJc3N1ZSAjODAzNTogdXJsbGliOiBGaXggYSBidWcgd2hlcmUgdGhlIGNsaWVudCBjb3VsZCByZW1haW4gc3R1Y2sgYWZ0ZXIgYQotICByZWRpcmVjdGlvbiBvciBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTM1NjA6IG9zLnN0cmVycm9yKCkgbm93IHVzZXMgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YKLSAgVVRGLTguCi0KLS0gSXNzdWUgIzgzNzM6IFRoZSBmaWxlc3lzdGVtIHBhdGggb2YgQUZfVU5JWCBzb2NrZXRzIG5vdyB1c2VzIHRoZSBmaWxlc3lzdGVtCi0gIGVuY29kaW5nIGFuZCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsIHJhdGhlciB0aGFuIFVURi04LiAgUGF0Y2gKLSAgYnkgRGF2aWQgV2F0c29uLgotCi0tIElzc3VlICMxMDM1MDogUmVhZCBhbmQgc2F2ZSBlcnJubyBiZWZvcmUgY2FsbGluZyBhIGZ1bmN0aW9uIHdoaWNoIG1pZ2h0Ci0gIG92ZXJ3cml0ZSBpdC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCi0KLS0gSXNzdWUgIzExNjEwOiBJbnRyb2R1Y2UgYSBtb3JlIGdlbmVyYWwgd2F5IHRvIGRlY2xhcmUgYWJzdHJhY3QgcHJvcGVydGllcy4KLQotLSBJc3N1ZSAjMTM1OTE6IEEgYnVnIGluIGltcG9ydGxpYiBoYXMgYmVlbiBmaXhlZCB0aGF0IGNhdXNlZCBpbXBvcnRfbW9kdWxlCi0gIHRvIGxvYWQgYSBtb2R1bGUgdHdpY2UuCi0KLS0gSXNzdWUgIzEzNDQ5IHNjaGVkLnNjaGVkdWxlci5ydW4oKSBtZXRob2QgaGFzIGEgbmV3ICJibG9ja2luZyIgcGFyYW1ldGVyIHdoaWNoCi0gIHdoZW4gc2V0IHRvIEZhbHNlIG1ha2VzIHJ1bigpIGV4ZWN1dGUgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZQotICBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybi4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbMOgLgotCi0tIElzc3VlICM4Njg0IHNjaGVkLnNjaGVkdWxlciBjbGFzcyBjYW4gYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKLSAgZW52aXJvbm1lbnRzLiAgUGF0Y2ggYnkgSm9zaWFoIENhcmxzb24gYW5kIEdpYW1wYW9sbyBSb2RvbMOgLgotCi0tIEFsaWFzIHJlc291cmNlLmVycm9yIHRvIE9TRXJyb3IgYWxhIFBFUCAzMTUxLgotCi0tIElzc3VlICM1Njg5OiBBZGQgc3VwcG9ydCBmb3IgbHptYSBjb21wcmVzc2lvbiB0byB0aGUgdGFyZmlsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMjQ4OiBUdXJuIDMuMidzIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaW50byAzLjMncwotICBEZXByZWNhdGlvbldhcm5pbmcuICBJdCBjb3ZlcnMgJ2NnaS5lc2NhcGUnLCAnaW1wb3J0bGliLmFiYy5QeUxvYWRlcicsCi0gICdpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyJywgJ25udHBsaWIuTk5UUC54Z3RpdGxlJywgJ25udHBsaWIuTk5UUC54cGF0aCcsCi0gIGFuZCBwcml2YXRlIGF0dHJpYnV0ZXMgb2YgJ3NtdHBkLlNNVFBDaGFubmVsJy4KLQotLSBJc3N1ZSAjNTkwNSwgSXNzdWUgIzEzNTYwOiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZQotICBlbmNvZGluZywgaW5zdGVhZCBvZiBVVEYtOCwgaWYgdGhlIHdjc2Z0aW1lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTM0NjQ6IEFkZCBhIHJlYWRpbnRvKCkgbWV0aG9kIHRvIGh0dHAuY2xpZW50LkhUVFBSZXNwb25zZS4gIFBhdGNoCi0gIGJ5IEpvbiBLdWhuLgotCi0tIHRhcmZpbGUucHk6IENvcnJlY3RseSBkZXRlY3QgYnppcDIgY29tcHJlc3NlZCBzdHJlYW1zIHdpdGggYmxvY2tzaXplcwotICBvdGhlciB0aGFuIDkwMGsuCi0KLS0gSXNzdWUgIzEzNDM5OiBGaXggbWFueSBlcnJvcnMgaW4gdHVydGxlIGRvY3N0cmluZ3MuCi0KLS0gSXNzdWUgIzY3MTU6IEFkZCBhIG1vZHVsZSAnbHptYScgZm9yIGNvbXByZXNzaW9uIHVzaW5nIHRoZSBMWk1BIGFsZ29yaXRobS4KLSAgVGhhbmtzIHRvIFBlciDDmHl2aW5kIEthcmxzZW4gZm9yIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uLgotCi0tIElzc3VlICMxMzQ4NzogTWFrZSBpbnNwZWN0LmdldG1vZHVsZSByb2J1c3QgYWdhaW5zdCBjaGFuZ2VzIGRvbmUgdG8KLSAgc3lzLm1vZHVsZXMgd2hpbGUgaXQgaXMgaXRlcmF0aW5nIG92ZXIgaXQuCi0KLS0gSXNzdWUgIzEyNjE4OiBGaXggYSBidWcgdGhhdCBwcmV2ZW50ZWQgcHlfY29tcGlsZSBmcm9tIGNyZWF0aW5nIGJ5dGUKLSAgY29tcGlsZWQgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgSW5pdGlhbCBwYXRjaCBieSBTam9lcmQgZGUgVnJpZXMuCi0KLS0gSXNzdWUgIzEzNDQ0OiBXaGVuIHN0ZG91dCBoYXMgYmVlbiBjbG9zZWQgZXhwbGljaXRseSwgd2Ugc2hvdWxkIG5vdCBhdHRlbXB0Ci0gIHRvIGZsdXNoIGl0IGF0IHNodXRkb3duIGFuZCBwcmludCBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMTI1Njc6IFRoZSBjdXJzZXMgbW9kdWxlIHVzZXMgVW5pY29kZSBmdW5jdGlvbnMgZm9yIFVuaWNvZGUgYXJndW1lbnRzCi0gIHdoZW4gaXQgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzIGxpYnJhcnkuIEl0IGVuY29kZXMgYWxzbyBVbmljb2RlIHN0cmluZ3MgdG8KLSAgdGhlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgotCi0tIElzc3VlICMxMjg1NjogRW5zdXJlIGNoaWxkIHByb2Nlc3NlcyBkbyBub3QgaW5oZXJpdCB0aGUgcGFyZW50J3MgcmFuZG9tCi0gIHNlZWQgZm9yIGZpbGVuYW1lIGdlbmVyYXRpb24gaW4gdGhlIHRlbXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IEJyaWFuCi0gIEhhcnJpbmcuCi0KLS0gSXNzdWUgIzk5NTc6IFNwb29sZWRUZW1wb3JhcnlGaWxlLnRydW5jYXRlKCkgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc2l6ZQotICBwYXJhbWV0ZXIsIGFzIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzLiAgUGF0Y2ggYnkgUnlhbiBLZWxseS4KLQotLSBJc3N1ZSAjMTM0NTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSBzc2wgbW9kdWxlIHdoZW4gZGVjb2RpbmcgYQotICBjZXJ0aWZpY2F0ZSB3aXRoIGEgc3ViamVjdEFsdE5hbWUuICBQYXRjaCBieSBSb2JlcnQgWGlhby4KLQotLSBJc3N1ZSAjMTM0MTU6IG9zLnVuc2V0ZW52KCkgZG9lc24ndCBpZ25vcmUgZXJyb3JzIGFueW1vcmUuCi0KLS0gSXNzdWUgIzEzMjQ1OiBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY29uc3RydWN0b3IncyB0aW1lZnVuYyBhbmQKLSAgZGVsYXlmdW5jdCBwYXJhbWV0ZXJzIGFyZSBub3cgb3B0aW9uYWwuCi0gIHNjaGVkdWxlci5lbnRlciBhbmQgc2NoZWR1bGVyLmVudGVyYWJzIG1ldGhvZHMgZ2FpbmVkIGEgbmV3IGt3YXJncyBwYXJhbWV0ZXIuCi0gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrLgotCi0tIElzc3VlICMxMjMyODogVW5kZXIgV2luZG93cywgcmVmYWN0b3IgaGFuZGxpbmcgb2YgQ3RybC1DIGV2ZW50cyBhbmQKLSAgbWFrZSBfbXVsdGlwcm9jZXNzaW5nLndpbjMyLldhaXRGb3JNdWx0aXBsZU9iamVjdHMgaW50ZXJydXB0aWJsZSB3aGVuCi0gIHRoZSB3YWl0X2ZsYWcgcGFyYW1ldGVyIGlzIGZhbHNlLiAgUGF0Y2ggYnkgc2J0LgotCi0tIElzc3VlICMxMzMyMjogRml4IEJ1ZmZlcmVkV3JpdGVyLndyaXRlKCkgdG8gZW5zdXJlIHRoYXQgQmxvY2tpbmdJT0Vycm9yIGlzCi0gIHJhaXNlZCB3aGVuIHRoZSB3cmFwcGVkIHJhdyBmaWxlIGlzIG5vbi1ibG9ja2luZyBhbmQgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgotICBQcmV2aW91cyBjb2RlIGFzc3VtZWQgdGhhdCB0aGUgcmF3IHdyaXRlKCkgd291bGQgcmFpc2UgQmxvY2tpbmdJT0Vycm9yLCBidXQKLSAgUmF3SU9CYXNlLndyaXRlKCkgaXMgZGVmaW5lZCB0byByZXR1cm5lZCBOb25lIHdoZW4gdGhlIGNhbGwgd291bGQgYmxvY2suCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTMzNTg6IEhUTUxQYXJzZXIgbm93IGNhbGxzIGhhbmRsZV9kYXRhIG9ubHkgb25jZSBmb3IgZWFjaCBDREFUQS4KLQotLSBJc3N1ZSAjNDE0NzogbWluaWRvbSdzIHRvcHJldHR5eG1sIG5vIGxvbmdlciBhZGRzIHdoaXRlc3BhY2UgYXJvdW5kIGEgdGV4dAotICBub2RlIHdoZW4gaXQgaXMgdGhlIG9ubHkgY2hpbGQgb2YgYW4gZWxlbWVudC4gIEluaXRpYWwgcGF0Y2ggYnkgRGFuCi0gIEtlbmlnc2JlcmcuCi0KLS0gSXNzdWUgIzEzMzc0OiBUaGUgV2luZG93cyBieXRlcyBBUEkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiB0aGUgb3MgbW9kdWxlLiBVc2UKLSAgVW5pY29kZSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBieXRlcyBmaWxlbmFtZXMgdG8gbm90IGRlcGVuZCBvbiB0aGUgQU5TSSBjb2RlCi0gIHBhZ2UgYW55bW9yZSBhbmQgdG8gc3VwcG9ydCBhbnkgZmlsZW5hbWUuCi0KLS0gSXNzdWUgIzEzMjk3OiBVc2UgYnl0ZXMgdHlwZSB0byBzZW5kIGFuZCByZWNlaXZlIGJpbmFyeSBkYXRhIHRocm91Z2ggWE1MUlBDLgotCi0tIElzc3VlICM2Mzk3OiBTdXBwb3J0ICIvZGV2L3BvbGwiIHBvbGxpbmcgb2JqZWN0cyBpbiBzZWxlY3QgbW9kdWxlLAotICB1bmRlciBTb2xhcmlzICYgZGVyaXZhdGl2ZXMuCi0KLS0gSXNzdWVzICMxNzQ1NzYxLCAjNzU1NjcwLCAjMTMzNTcsICMxMjYyOSwgIzEyMDAzMTM6IEhUTUxQYXJzZXIgbm93IGNvcnJlY3RseQotICBoYW5kbGVzIG5vbi12YWxpZCBhdHRyaWJ1dGVzLCBpbmNsdWRpbmcgYWRqYWNlbnQgYW5kIHVucXVvdGVkIGF0dHJpYnV0ZXMuCi0KLS0gSXNzdWUgIzEzMTkzOiBGaXggZGlzdHV0aWxzLmZpbGVsaXN0LkZpbGVMaXN0IGFuZCBwYWNrYWdpbmcubWFuaWZlc3QuTWFuaWZlc3QKLSAgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTMzODQ6IFJlbW92ZSB1bm5lY2Vzc2FyeSBfX2Z1dHVyZV9fIGltcG9ydCBpbiBMaWIvcmFuZG9tLnB5Ci0KLS0gSXNzdWUgIzEzMTQ5OiBTcGVlZCB1cCBhcHBlbmQtb25seSBTdHJpbmdJTyBvYmplY3RzLgotCi0tIElzc3VlICMxMzM3MzogbXVsdGlwcm9jZXNzaW5nLlF1ZXVlLmdldCgpIGNvdWxkIHNvbWV0aW1lcyBibG9jayBpbmRlZmluaXRlbHkKLSAgd2hlbiBjYWxsZWQgd2l0aCBhIHRpbWVvdXQuICBQYXRjaCBieSBBcm5hdWQgWXNtYWwuCi0KLS0gSXNzdWUgIzEzMjU0OiBGaXggTWFpbGRpciBpbml0aWFsaXphdGlvbiBzbyB0aGF0IG1haWxkaXIgY29udGVudHMKLSAgYXJlIHJlYWQgY29ycmVjdGx5LgotCi0tIElzc3VlICMzMDY3OiBsb2NhbGUuc2V0bG9jYWxlKCkgbm93IHJhaXNlcyBUeXBlRXJyb3IgaWYgdGhlIHNlY29uZAotICBhcmd1bWVudCBpcyBhbiBpbnZhbGlkIGl0ZXJhYmxlLiBJdHMgZG9jdW1lbnRhdGlvbiBhbmQgZG9jc3RyaW5nCi0gIHdlcmUgYWxzbyB1cGRhdGVkLiBJbml0aWFsIHBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzEzMTQwOiBGaXggdGhlIGRhZW1vbl90aHJlYWRzIGF0dHJpYnV0ZSBvZiBUaHJlYWRpbmdNaXhJbi4KLQotLSBJc3N1ZSAjMTMzMzk6IEZpeCBjb21waWxlIGVycm9yIGluIHBvc2l4bW9kdWxlLmMgZHVlIHRvIG1pc3Npbmcgc2VtaWNvbG9uLgotICBUaGFua3MgdG8gUm9iZXJ0IFhpYW8uCi0KLS0gQnl0ZSBjb21waWxhdGlvbiBpbiBwYWNrYWdpbmcgaXMgbm93IGlzb2xhdGVkIGZyb20gdGhlIGNhbGxpbmcgUHl0aG9uIC1CIG9yCi0gIC1PIG9wdGlvbnMsIGluc3RlYWQgb2YgYmVpbmcgZGlzYWxsb3dlZCB1bmRlciAtQiBvciBidWdneSB1bmRlciAtTy4KLQotLSBJc3N1ZSAjMTA1NzA6IGN1cnNlcy5wdXRwKCkgYW5kIGN1cnNlcy50cGFybSgpIGFyZSBub3cgZXhwZWN0aW5nIGEgYnl0ZQotICBzdHJpbmcsIGluc3RlYWQgb2YgYSBVbmljb2RlIHN0cmluZy4KLQotLSBJc3N1ZSAjMTMyOTU6IGh0dHAuc2VydmVyIG5vdyBwcm9kdWNlcyB2YWxpZCBIVE1MIDQuMDEgc3RyaWN0LgotCi0tIElzc3VlICMyODkyOiBwcmVzZXJ2ZSBpdGVycGFyc2UgZXZlbnRzIGluIGNhc2Ugb2YgU3ludGF4RXJyb3IuCi0KLS0gSXNzdWUgIzEzMjg3OiB1cmxsaWIucmVxdWVzdCBhbmQgdXJsbGliLmVycm9yIG5vdyBjb250YWlucyBhbiBfX2FsbF9fCi0gIGF0dHJpYnV0ZSB0byBleHBvc2Ugb25seSByZWxldmFudCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuICBQYXRjaCBieSBGbG9yZW50Ci0gIFhpY2x1bmEuCi0KLS0gSXNzdWUgIzY3MDY2NDogRml4IEhUTUxQYXJzZXIgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgY29udGVudCBvZgotICBgYDxzY3JpcHQ+Li4uPC9zY3JpcHQ+YGAgYW5kIGBgPHN0eWxlPi4uLjwvc3R5bGU+YGAuCi0KLS0gSXNzdWUgIzEwODE3OiBGaXggdXJscmV0cmlldmUgZnVuY3Rpb24gdG8gcmFpc2UgQ29udGVudFRvb1Nob3J0RXJyb3IgZXZlbgotICB3aGVuIHJlcG9ydGhvb2sgaXMgTm9uZS4gUGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KLQotLSBGaXggdGhlIHhtbHJwYy5jbGllbnQgdXNlciBhZ2VudCB0byByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgdG8KLSAgdXJsbGliLnJlcXVlc3QgdXNlciBhZ2VudDogIlB5dGhvbi14bWxycGMvMy4zIi4KLQotLSBJc3N1ZSAjMTMyOTM6IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIG1hcnNoYWwgYnl0ZXMgdXNpbmcKLSAgeG1scnBjLmNsaWVudC4KLQotLSBJc3N1ZSAjMTMyOTE6IE5hbWVFcnJvciBpbiB4bWxycGMgcGFja2FnZS4KLQotLSBJc3N1ZSAjMTMyNTg6IFVzZSBjYWxsYWJsZSgpIGJ1aWx0LWluIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotCi0tIElzc3VlICMxMzI3MzogZml4IGEgYnVnIHRoYXQgcHJldmVudGVkIEhUTUxQYXJzZXIgdG8gcHJvcGVybHkgZGV0ZWN0IHNvbWUKLSAgdGFncyB3aGVuIHN0cmljdD1GYWxzZS4KLQotLSBJc3N1ZSAjMTExODM6IEFkZCBmaW5lci1ncmFpbmVkIGV4Y2VwdGlvbnMgdG8gdGhlIHNzbCBtb2R1bGUsIHNvIHRoYXQKLSAgeW91IGRvbid0IGhhdmUgdG8gaW5zcGVjdCB0aGUgZXhjZXB0aW9uJ3MgYXR0cmlidXRlcyBpbiB0aGUgY29tbW9uIGNhc2UuCi0KLS0gSXNzdWUgIzEzMjE2OiBBZGQgY3A2NTAwMSBjb2RlYywgdGhlIFdpbmRvd3MgVVRGLTggKENQX1VURjgpLgotCi0tIElzc3VlICMxMzIyNjogQWRkIFJUTERfeHh4IGNvbnN0YW50cyB0byB0aGUgb3MgbW9kdWxlLiBUaGVzZSBjb25zdGFudHMgY2FuIGJlCi0gIHVzZWQgd2l0aCBzeXMuc2V0ZGxvcGVuZmxhZ3MoKS4KLQotLSBJc3N1ZSAjMTAyNzg6IEFkZCBjbG9ja19nZXRyZXMoKSwgY2xvY2tfZ2V0dGltZSgpIGFuZCBDTE9DS194eHggY29uc3RhbnRzIHRvCi0gIHRoZSB0aW1lIG1vZHVsZS4gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKSBwcm92aWRlcyBhCi0gIG1vbm90b25pYyBjbG9jawotCi0tIElzc3VlICMxMDMzMjogbXVsdGlwcm9jZXNzaW5nOiBmaXggYSByYWNlIGNvbmRpdGlvbiB3aGVuIGEgUG9vbCBpcyBjbG9zZWQKLSAgYmVmb3JlIGFsbCB0YXNrcyBoYXZlIGNvbXBsZXRlZC4KLQotLSBJc3N1ZSAjMTMyNTU6IHdyb25nIGRvY3N0cmluZ3MgaW4gYXJyYXkgbW9kdWxlLgotCi0tIElzc3VlICM4NTQwOiBSZW1vdmUgZGVwcmVjYXRlZCBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgaW4gRGVjaW1hbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMjM1OiBBZGRlZCBEZXByZWNhdGlvbldhcm5pbmcgdG8gbG9nZ2luZy53YXJuKCkgbWV0aG9kIGFuZCBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjOTE2ODogbm93IHNtdHBkIGlzIGFibGUgdG8gYmluZCBwcml2aWxlZ2VkIHBvcnQuCi0KLS0gSXNzdWUgIzEyNTI5OiBmaXggY2dpLnBhcnNlX2hlYWRlciBpc3N1ZSBvbiBzdHJpbmdzIHdpdGggZG91YmxlLXF1b3RlcyBhbmQKLSAgc2VtaWNvbG9ucyB0b2dldGhlci4gUGF0Y2ggYnkgQmVuIERhcm5lbGwgYW5kIFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMzIyNzogZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBoYXMgYSBvcHRpb24gdG8gZGlzdGluZ3Vpc2gKLSAgY2FsbHMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMuCi0KLS0gSXNzdWUgIzYwOTA6IHppcGZpbGUgcmFpc2VzIGEgVmFsdWVFcnJvciB3aGVuIGEgZG9jdW1lbnQgd2l0aCBhIHRpbWVzdGFtcAotICBlYXJsaWVyIHRoYW4gMTk4MCBpcyBwcm92aWRlZC4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzEzMTUwOiBzeXNjb25maWcgbm8gbG9uZ2VyIHBhcnNlcyB0aGUgTWFrZWZpbGUgYW5kIGNvbmZpZy5oIGZpbGVzCi0gIHdoZW4gaW1wb3J0ZWQsIGluc3RlYWQgZG9pbmcgaXQgYXQgYnVpbGQgdGltZS4gIFRoaXMgbWFrZXMgaW1wb3J0aW5nCi0gIHN5c2NvbmZpZyBmYXN0ZXIgYW5kIHJlZHVjZXMgUHl0aG9uIHN0YXJ0dXAgdGltZSBieSAyMCUuCi0KLS0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAotICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgotCi0tIElzc3VlICMxMjQ1NDogVGhlIG1haWxib3ggbW9kdWxlIGlzIG5vdyB1c2luZyBBU0NJSSwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlCi0gIGVuY29kaW5nLCB0byByZWFkIGFuZCB3cml0ZSAubWhfc2VxdWVuY2VzIGZpbGVzLgotCi0tIElzc3VlICMxMzE5NDogemxpYi5jb21wcmVzc29iaigpLmNvcHkoKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkuY29weSgpIGFyZQotICBub3cgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE2NzMwMDc6IHVybGxpYi5yZXF1ZXN0IG5vdyBzdXBwb3J0cyBIRUFEIHJlcXVlc3QgdmlhIG5ldyBtZXRob2QgYXJndW1lbnQuCi0gIFBhdGNoIGNvbnRyaWJ1dGlvbnMgYnkgRGF2aWQgU3RhbmVrLCBQYXRyaWNrIFdlc3RlcmhvZmYgYW5kIEV6aW8gTWVsb3R0aS4KLQotLSBJc3N1ZSAjMTIzODY6IHBhY2thZ2luZyBkb2VzIG5vdCBmYWlsIGFueW1vcmUgd2hlbiB3cml0aW5nIHRoZSBSRVNPVVJDRVMKLSAgZmlsZS4KLQotLSBJc3N1ZSAjMTMxNTg6IEZpeCBkZWNvZGluZyBhbmQgZW5jb2Rpbmcgb2YgR05VIHRhciBzcGVjaWZpYyBiYXNlLTI1NiBudW1iZXIKLSAgZmllbGRzIGluIHRhcmZpbGUuCi0KLS0gSXNzdWUgIzEzMDI1OiBtaW1ldHlwZXMgaXMgbm93IHJlYWRpbmcgTUlNRSB0eXBlcyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcsCi0gIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTA2NTM6IE9uIFdpbmRvd3MsIHVzZSBzdHJmdGltZSgpIGluc3RlYWQgb2Ygd2NzZnRpbWUoKSBiZWNhdXNlCi0gIHdjc2Z0aW1lKCkgZG9lc24ndCBmb3JtYXQgdGltZSB6b25lIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMTMxNTA6IFRoZSB0b2tlbml6ZSBtb2R1bGUgZG9lc24ndCBjb21waWxlIGxhcmdlIHJlZ3VsYXIgZXhwcmVzc2lvbnMKLSAgYXQgc3RhcnR1cCBhbnltb3JlLgotCi0tIElzc3VlICMxMTE3MTogRml4IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lIHdoZW4gUHl0aG9uIHdhcwotICBjb25maWd1cmVkIHdpdGggZGlmZmVyZW50IHByZWZpeCBhbmQgZXhlYy1wcmVmaXguCi0KLS0gSXNzdWUgIzExMjU0OiBUZWFjaCBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyB0byBjb21waWxlIC5weWMgYW5kIC5weW8gZmlsZXMgaW4KLSAgUEVQIDMxNDctY29tcGxpYW50IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLgotCi0tIElzc3VlICM3MzY3OiBGaXggcGtndXRpbC53YWxrX3BhdGhzIHRvIHNraXAgZGlyZWN0b3JpZXMgd2hvc2UKLSAgY29udGVudHMgY2Fubm90IGJlIHJlYWQuCi0KLS0gSXNzdWUgIzMxNjM6IFRoZSBzdHJ1Y3QgbW9kdWxlIGdldHMgbmV3IGZvcm1hdCBjaGFyYWN0ZXJzICduJyBhbmQgJ04nCi0gIHN1cHBvcnRpbmcgQyBpbnRlZ2VyIHR5cGVzIGBgc3NpemVfdGBgIGFuZCBgYHNpemVfdGBgLCByZXNwZWN0aXZlbHkuCi0KLS0gSXNzdWUgIzEzMDk5OiBGaXggc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkIHVuZGVyIGEgVHVya2lzaCBsb2NhbGUuCi0gIFJlcG9ydGVkIGFuZCBkaWFnbm9zZWQgYnkgVGhvbWFzIEtsdXl2ZXIuCi0KLS0gSXNzdWUgIzEzMDg3OiBCdWZmZXJlZFJlYWRlci5zZWVrKCkgbm93IGFsd2F5cyByYWlzZXMgVW5zdXBwb3J0ZWRPcGVyYXRpb24KLSAgaWYgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyB1bnNlZWthYmxlLCBldmVuIGlmIHRoZSBzZWVrIGNvdWxkIGJlCi0gIHNhdGlzZmllZCB1c2luZyB0aGUgaW50ZXJuYWwgYnVmZmVyLiAgUGF0Y2ggYnkgSm9obiBPJ0Nvbm5vci4KLQotLSBJc3N1ZSAjNzY4OTogQWxsb3cgcGlja2xpbmcgb2YgZHluYW1pY2FsbHkgY3JlYXRlZCBjbGFzc2VzIHdoZW4gdGhlaXIKLSAgbWV0YWNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCBjb3B5cmVnLiAgUGF0Y2ggYnkgTmljb2xhcyBNLiBUaGnDqXJ5IGFuZCBDcmFpZwotICBDaXRyby4KLQotLSBJc3N1ZSAjMTMwMzQ6IFdoZW4gZGVjb2Rpbmcgc29tZSBTU0wgY2VydGlmaWNhdGVzLCB0aGUgc3ViamVjdEFsdE5hbWUKLSAgZXh0ZW5zaW9uIGNvdWxkIGJlIHVucmVwb3J0ZWQuCi0KLS0gSXNzdWUgIzEyMzA2OiBFeHBvc2UgdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgemxpYiBDIGxpYnJhcnkgYXMgYSBjb25zdGFudCwKLSAgWkxJQl9SVU5USU1FX1ZFUlNJT04sIGluIHRoZSB6bGliIG1vZHVsZS4gUGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgotCi0tIElzc3VlICMxMjk1OTogQWRkIGNvbGxlY3Rpb25zLkNoYWluTWFwIHRvIGNvbGxlY3Rpb25zLl9fYWxsX18uCi0KLS0gSXNzdWUgIzg5MzM6IGRpc3R1dGlscycgUEtHLUlORk8gZmlsZXMgYW5kIHBhY2thZ2luZydzIE1FVEFEQVRBIGZpbGVzIHdpbGwKLSAgbm93IGNvcnJlY3RseSByZXBvcnQgTWV0YWRhdGEtVmVyc2lvbjogMS4xIGluc3RlYWQgb2YgMS4wIGlmIGEgQ2xhc3NpZmllciBvcgotICBEb3dubG9hZC1VUkwgZmllbGQgaXMgcHJlc2VudC4KLQotLSBJc3N1ZSAjMTI1Njc6IEFkZCBjdXJzZXMudW5nZXRfd2NoKCkgZnVuY3Rpb24uIFB1c2ggYSBjaGFyYWN0ZXIgc28gdGhlIG5leHQKLSAgZ2V0X3djaCgpIHdpbGwgcmV0dXJuIGl0LgotCi0tIElzc3VlICM5NTYxOiBkaXN0dXRpbHMgYW5kIHBhY2thZ2luZyBub3cgd3JpdGVzIGVnZy1pbmZvIGZpbGVzIHVzaW5nIFVURi04LAotICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzgyODY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZCBzZGlzdCB3aWxsIHByaW50IGEgd2FybmluZyBtZXNzYWdlIGluc3RlYWQKLSAgb2YgY3Jhc2hpbmcgd2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgotCi0tIElzc3VlICMxMjg0MTogdGFyZmlsZSB1bm5lY2Vzc2FyaWx5IGNoZWNrZWQgdGhlIGV4aXN0ZW5jZSBvZiBudW1lcmljYWwgdXNlcgotICBhbmQgZ3JvdXAgaWRzIG9uIGV4dHJhY3Rpb24uIElmIG9uZSBvZiB0aGVtIGRpZCBub3QgZXhpc3QgdGhlIHJlc3BlY3RpdmUgaWQKLSAgb2YgdGhlIGN1cnJlbnQgdXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcAotICBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KLQotLSBJc3N1ZSAjMTI4ODg6IEZpeCBhIGJ1ZyBpbiBIVE1MUGFyc2VyLnVuZXNjYXBlIHRoYXQgcHJldmVudGVkIGl0IHRvIGVzY2FwZQotICBtb3JlIHRoYW4gMTI4IGVudGl0aWVzLiAgUGF0Y2ggYnkgUGV0ZXIgT3R0ZW4uCi0KLS0gSXNzdWUgIzEyODc4OiBFeHBvc2UgYSBfX2RpY3RfXyBhdHRyaWJ1dGUgb24gaW8uSU9CYXNlIGFuZCBpdHMgc3ViY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTI0OTQ6IE9uIGVycm9yLCBjYWxsKCksIGNoZWNrX2NhbGwoKSwgY2hlY2tfb3V0cHV0KCkgYW5kCi0gIGdldHN0YXR1c291dHB1dCgpIGZ1bmN0aW9ucyBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgbm93IGtpbGwgdGhlIHByb2Nlc3MsCi0gIHJlYWQgaXRzIHN0YXR1cyAodG8gYXZvaWQgem9tYmlzKSBhbmQgY2xvc2UgcGlwZXMuCi0KLS0gSXNzdWUgIzEyNzIwOiBFeHBvc2UgbG93LWxldmVsIExpbnV4IGV4dGVuZGVkIGZpbGUgYXR0cmlidXRlIGZ1bmN0aW9ucyBpbiBvcy4KLQotLSBJc3N1ZSAjMTA5NDY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZHMgYmRpc3RfZHVtYiwgYmRpc3Rfd2luaW5zdCBhbmQgYmRpc3RfbXNpCi0gIG5vdyByZXNwZWN0IGEgLS1za2lwLWJ1aWxkIG9wdGlvbiBnaXZlbiB0byBiZGlzdC4gIFRoZSBwYWNrYWdpbmcgY29tbWFuZHMKLSAgd2VyZSBmaXhlZCB0b28uCi0KLS0gSXNzdWUgIzEyODQ3OiBGaXggYSBjcmFzaCB3aXRoIG5lZ2F0aXZlIFBVVCBhbmQgTE9OR19CSU5QVVQgYXJndW1lbnRzIGluCi0gIHRoZSBDIHBpY2tsZSBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTE1NjQ6IEF2b2lkIGNyYXNoZXMgd2hlbiB0cnlpbmcgdG8gcGlja2xlIGh1Z2Ugb2JqZWN0cyBvciBjb250YWluZXJzCi0gIChtb3JlIHRoYW4gMioqMzEgaXRlbXMpLiAgSW5zdGVhZCwgaW4gbW9zdCBjYXNlcywgYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQuCi0KLS0gSXNzdWUgIzEyMjg3OiBGaXggYSBzdGFjayBjb3JydXB0aW9uIGluIG9zc2F1ZGlvZGV2IG1vZHVsZSB3aGVuIHRoZSBGRCBpcwotICBncmVhdGVyIHRoYW4gRkRfU0VUU0laRS4KLQotLSBJc3N1ZSAjMTI4Mzk6IEZpeCBjcmFzaCBpbiB6bGliIG1vZHVsZSBkdWUgdG8gdmVyc2lvbiBtaXNtYXRjaC4KLSAgRml4IGJ5IFJpY2hhcmQgTS4gVGV3LgotCi0tIElzc3VlICM5OTIzOiBUaGUgbWFpbGNhcCBtb2R1bGUgbm93IGNvcnJlY3RseSB1c2VzIHRoZSBwbGF0Zm9ybSBwYXRoCi0gIHNlcGFyYXRvciBmb3IgdGhlIE1BSUxDQVAgZW52aXJvbm1lbnQgdmFyaWFibGUgb24gbm9uLVBPU0lYIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTI4MzU6IEZvbGxvdyB1cCB0byAjNjU2MCB0aGF0IHVuY29uZGl0aW9uYWxseSBwcmV2ZW50cyB1c2Ugb2YgdGhlCi0gIHVuZW5jcnlwdGVkIHNlbmRtc2cvcmVjdm1zZyBBUElzIG9uIFNTTCB3cmFwcGVkIHNvY2tldHMuIFBhdGNoIGJ5IERhdmlkCi0gIFdhdHNvbi4KLQotLSBJc3N1ZSAjMTI4MDM6IFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluKCkgbm93IGFjY2VwdHMgYSBwYXNzd29yZCBhcmd1bWVudAotICB0byBiZSB1c2VkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBlbmNyeXB0ZWQuICBQYXRjaCBieSBBZGFtIFNpbXBraW5zLgotCi0tIElzc3VlICMxMTY1NzogRml4IHNlbmRpbmcgZmlsZSBkZXNjcmlwdG9ycyBvdmVyIDI1NSBvdmVyIGEgbXVsdGlwcm9jZXNzaW5nCi0gIFBpcGUuCi0KLS0gSXNzdWUgIzEyODExOiB0YWJuYW5ueS5jaGVjaygpIG5vdyBwcm9tcHRseSBjbG9zZXMgY2hlY2tlZCBmaWxlcy4gUGF0Y2ggYnkKLSAgQW50aG9ueSBCcmlnZ3MuCi0KLS0gSXNzdWUgIzY1NjA6IFRoZSBzZW5kbXNnL3JlY3Ztc2cgQVBJIGlzIG5vdyBleHBvc2VkIGJ5IHRoZSBzb2NrZXQgbW9kdWxlCi0gIHdoZW4gcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0sIHN1cHBvcnRpbmcgcHJvY2Vzc2luZyBvZgotICBhbmNpbGxhcnkgZGF0YSBpbiBwdXJlIFB5dGhvbiBjb2RlLiBQYXRjaCBieSBEYXZpZCBXYXRzb24gYW5kIEhlaWtvIFd1bmRyYW0uCi0KLS0gSXNzdWUgIzEyMzI2OiBPbiBMaW51eCwgc3lzLnBsYXRmb3JtIGRvZXNuJ3QgY29udGFpbiB0aGUgbWFqb3IgdmVyc2lvbgotICBhbnltb3JlLiBJdCBpcyBub3cgYWx3YXlzICdsaW51eCcsIGluc3RlYWQgb2YgJ2xpbnV4Micgb3IgJ2xpbnV4MycgZGVwZW5kaW5nCi0gIG9uIHRoZSBMaW51eCB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgUHl0aG9uLgotCi0tIElzc3VlICMxMjIxMzogRml4IGEgYnVmZmVyaW5nIGJ1ZyB3aXRoIGludGVybGVhdmVkIHJlYWRzIGFuZCB3cml0ZXMgdGhhdAotICBjb3VsZCBhcHBlYXIgb24gQnVmZmVyZWRSYW5kb20gc3RyZWFtcy4KLQotLSBJc3N1ZSAjMTI3Nzg6IFJlZHVjZSBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBKU09OLWVuY29kaW5nIGEgbGFyZ2UKLSAgY29udGFpbmVyIG9mIG1hbnkgc21hbGwgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTI2NTA6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGEgc3VicHJvY2Vzcy5Qb3BlbiBjb3VsZCBsZWFrCi0gIHJlc291cmNlcyAoRkQvem9tYmllKSB3aGVuIGtpbGxlZCBhdCB0aGUgd3JvbmcgdGltZS4KLQotLSBJc3N1ZSAjMTI3NDQ6IEZpeCBpbmVmZmljaWVudCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2VycyBiZXR3ZWVuIDIqKjMxIGFuZAotICAyKio2MyBvbiBzeXN0ZW1zIHdpdGggYSA2NC1iaXQgQyAibG9uZyIuCi0KLS0gSXNzdWUgIzEyNjQ2OiBBZGQgYW4gJ2VvZicgYXR0cmlidXRlIHRvIHpsaWIuRGVjb21wcmVzcywgdG8gbWFrZSBpdCBlYXNpZXIgdG8KLSAgZGV0ZWN0IHRydW5jYXRlZCBpbnB1dCBzdHJlYW1zLgotCi0tIElzc3VlICMxMTUxMzogRml4IGV4Y2VwdGlvbiBoYW5kbGluZyBgYHRhcmZpbGUuVGFyRmlsZS5nem9wZW4oKWBgIHdoZW4KLSAgdGhlIGZpbGUgY2Fubm90IGJlIG9wZW5lZC4KLQotLSBJc3N1ZSAjMTI2ODc6IEZpeCBhIHBvc3NpYmxlIGJ1ZmZlcmluZyBidWcgd2hlbiB1bnBpY2tsaW5nIHRleHQgbW9kZQotICAocHJvdG9jb2wgMCwgbW9zdGx5KSBwaWNrbGVzLgotCi0tIElzc3VlICMxMDA4NzogRml4IHRoZSBodG1sIG91dHB1dCBmb3JtYXQgb2YgdGhlIGNhbGVuZGFyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMxMjE6IGFkZCBzdXBwb3J0IGZvciBpbnBsYWNlIG1hdGggb3BlcmF0b3JzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCi0KLS0gQWRkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMgYW5kIHVuYXJ5IG1pbnVzIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIuCi0KLS0gSXNzdWUgIzEyNjgzOiB1cmxwYXJzZSB1cGRhdGVkIHRvIGluY2x1ZGUgc3ZuIGFzIHNjaGVtZXMgdGhhdCB1c2VzIHJlbGF0aXZlCi0gIHBhdGhzLiAoc3ZuIGZyb20gMS41IG9ud2FyZHMgc3VwcG9ydCByZWxhdGl2ZSBwYXRoKS4KLQotLSBJc3N1ZSAjMTI2NTU6IEV4cG9zZSBmdW5jdGlvbnMgZnJvbSBzY2hlZC5oIGluIHRoZSBvcyBtb2R1bGU6IHNjaGVkX3lpZWxkKCksCi0gIHNjaGVkX3NldHNjaGVkdWxlcigpLCBzY2hlZF9nZXRzY2hlZHVsZXIoKSwgc2NoZWRfc2V0cGFyYW0oKSwKLSAgc2NoZWRfZ2V0X21pbl9wcmlvcml0eSgpLCBzY2hlZF9nZXRfbWF4X3ByaW9yaXR5KCksIHNjaGVkX3JyX2dldF9pbnRlcnZhbCgpLAotICBzY2hlZF9nZXRhZmZpbml0eSgpLCBzY2hlZF9zZXRhZmZpbml0eSgpLgotCi0tIEFkZCBUaHJlYWRFcnJvciB0byB0aHJlYWRpbmcuX19hbGxfXy4KLQotLSBJc3N1ZXMgIzExMTA0LCAjODY4ODogRml4IHRoZSBiZWhhdmlvciBvZiBkaXN0dXRpbHMnIHNkaXN0IGNvbW1hbmQgd2l0aAotICBtYW51YWxseS1tYWludGFpbmVkIE1BTklGRVNUIGZpbGVzLgotCi0tIElzc3VlICMxMTI4MTogc210cGxpYi5TVE1QIGdldHMgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyLCB3aGljaCBhZGRzIHRoZQotICBhYmlsaXR5IHRvIGJpbmQgdG8gc3BlY2lmaWMgc291cmNlIGFkZHJlc3Mgb24gYSBtYWNoaW5lIHdpdGggbXVsdGlwbGUKLSAgaW50ZXJmYWNlcy4gUGF0Y2ggYnkgUGF1bG8gU2NhcmRpbmUuCi0KLS0gSXNzdWUgIzEyNDY0OiB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkuY2xlYW51cCgpIHNob3VsZCBub3QgZm9sbG93Ci0gIHN5bWxpbmtzOiBmaXggaXQuIFBhdGNoIGJ5IFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICM4ODg3OiAicHlkb2Mgc29tZWJ1aWx0aW4uc29tZW1ldGhvZCIgKG9yIGhlbHAoJ3NvbWVidWlsdGluLnNvbWVtZXRob2QnKQotICBpbiBQeXRob24gY29kZSkgbm93IGZpbmRzIHRoZSBkb2Mgb2YgdGhlIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTA5Njg6IFJlbW92ZSBpbmRpcmVjdGlvbiBpbiB0aHJlYWRpbmcuICBUaGUgcHVibGljIG5hbWVzIChFdmVudCwKLSAgQ29uZGl0aW9uLCBldGMuKSB1c2VkIHRvIGJlIGZhY3RvcnkgZnVuY3Rpb25zIHJldHVybmluZyBpbnN0YW5jZXMgb2YgaGlkZGVuCi0gIGNsYXNzZXMgKF9FdmVudCwgX0NvbmRpdGlvbiwgZXRjLiksIGJlY2F1c2UgKGlmIEd1aWRvIHJlY2FsbHMgY29ycmVjdGx5KSB0aGlzCi0gIGNvZGUgcHJlLWRhdGVzIHRoZSBhYmlsaXR5IHRvIHN1YmNsYXNzIGV4dGVuc2lvbiB0eXBlcy4gIEl0IGlzIG5vdyBwb3NzaWJsZQotICB0byBpbmhlcml0IGZyb20gdGhlc2UgY2xhc3Nlcywgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZSBwcml2YXRlCi0gIHVuZGVyc2NvcmVkIG5hbWVzIGxpa2UgbXVsdGlwcm9jZXNzaW5nIGRpZC4KLQotLSBJc3N1ZSAjOTcyMzogQWRkIHNobGV4LnF1b3RlIGZ1bmN0aW9ucywgdG8gZXNjYXBlIGZpbGVuYW1lcyBhbmQgY29tbWFuZAotICBsaW5lcy4KLQotLSBJc3N1ZSAjMTI2MDM6IEZpeCBweWRvYy5zeW5vcHNpcygpIG9uIGZpbGVzIHdpdGggbm9uLW5lZ2F0aXZlIHN0X210aW1lLgotCi0tIElzc3VlICMxMjUxNDogVXNlIHRyeS9maW5hbGx5IHRvIGFzc3VyZSB0aGUgdGltZWl0IG1vZHVsZSByZXN0b3JlcyBnYXJiYWdlCi0gIGNvbGxlY3Rpb25zIHdoZW4gaXQgaXMgZG9uZS4KLQotLSBJc3N1ZSAjMTI2MDc6IEluIHN1YnByb2Nlc3MsIGZpeCBpc3N1ZSB3aGVyZSBpZiBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVyciBpcwotICBnaXZlbiBhcyBhIGxvdyBmZCwgaXQgZ2V0cyBvdmVyd3JpdHRlbi4KLQotLSBJc3N1ZSAjMTI1NzY6IEZpeCB1cmxvcGVuIGJlaGF2aW9yIG9uIHNpdGVzIHdoaWNoIGRvIG5vdCBzZW5kIChvciBvYmZ1c2NhdGVzKQotICBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyLgotCi0tIElzc3VlICMxMjU2MDogQnVpbGQgbGlicHl0aG9uLnNvIG9uIE9wZW5CU0QuIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KLQotLSBJc3N1ZSAjMTgxMzogRml4IGNvZGVjIGxvb2t1cCB1bmRlciBUdXJraXNoIGxvY2FsZXMuCi0KLS0gSXNzdWUgIzEyNTkxOiBJbXByb3ZlIHN1cHBvcnQgb2YgInVuaXZlcnNhbCBuZXdsaW5lcyIgaW4gdGhlIHN1YnByb2Nlc3MKLSAgbW9kdWxlOiB0aGUgcGlwZWQgc3RyZWFtcyBjYW4gbm93IGJlIHByb3Blcmx5IHJlYWQgZnJvbSBvciB3cml0dGVuIHRvLgotCi0tIElzc3VlICMxMjU5MTogQWxsb3cgaW8uVGV4dElPV3JhcHBlciB0byB3b3JrIHdpdGggcmF3IElPIG9iamVjdHMgKHdpdGhvdXQKLSAgYSByZWFkMSgpIG1ldGhvZCksIGFuZCBhZGQgYSAqd3JpdGVfdGhyb3VnaCogcGFyYW1ldGVyIHRvIG1hbmRhdGUKLSAgdW5idWZmZXJlZCB3cml0ZXMuCi0KLS0gSXNzdWUgIzEwODgzOiBGaXggc29ja2V0IGxlYWtzIGluIHVybGxpYi5yZXF1ZXN0IHdoZW4gdXNpbmcgRlRQLgotCi0tIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KLQotLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgotCi0tIElzc3VlICMxMjU1MTogUHJvdmlkZSBhIGdldF9jaGFubmVsX2JpbmRpbmcoKSBtZXRob2Qgb24gU1NMIHNvY2tldHMgc28gYXMKLSAgdG8gZ2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciB0aGUgY3VycmVudCBTU0wgc2Vzc2lvbiAob25seSB0aGUKLSAgInRscy11bmlxdWUiIGNoYW5uZWwgYmluZGluZyBpcyBpbXBsZW1lbnRlZCkuICBUaGlzIGFsbG93cyB0aGUgaW1wbGVtZW50YXRpb24KLSAgb2YgY2VydGFpbiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHN1Y2ggYXMgU0NSQU0tU0hBLTEtUExVUy4gIFBhdGNoIGJ5Ci0gIEphY2VrIEtvbmllY3pueS4KLQotLSBJc3N1ZSAjNjY1MTk0OiBlbWFpbC51dGlscyBub3cgaGFzIGZvcm1hdF9kYXRldGltZSBhbmQgcGFyc2VkYXRlX3RvX2RhdGV0aW1lCi0gIGZ1bmN0aW9ucywgYWxsb3dpbmcgZm9yIHJvdW5kIHRyaXBwaW5nIG9mIFJGQzI4MjIgZm9ybWF0IGRhdGVzLgotCi0tIElzc3VlICMxMjU3MTogQWRkIGEgcGxhdC1saW51eDMgZGlyZWN0b3J5IG1pcnJvcmluZyB0aGUgcGxhdC1saW51eDIKLSAgZGlyZWN0b3J5LCBzbyB0aGF0ICJpbXBvcnQgRExGQ04iIGFuZCBvdGhlciBzaW1pbGFyIGltcG9ydHMgd29yayBvbgotICBMaW51eCAzLjAuCi0KLS0gSXNzdWUgIzc0ODQ6IHNtdHBsaWIgbm8gbG9uZ2VyIHB1dHMgPD4gYXJvdW5kIGFkZHJlc3NlcyBpbiBWUkZZIGFuZCBFWFBOCi0gIGNvbW1hbmRzOyB0aGV5IGFyZW4ndCByZXF1aXJlZCBhbmQgaW4gZmFjdCBwb3N0Zml4IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IGZvcm0uCi0KLS0gSXNzdWUgIzEyMjczOiBSZW1vdmUgYXN0Ll9fdmVyc2lvbl9fLiBBU1QgY2hhbmdlcyBjYW4gYmUgYWNjb3VudGVkIGZvciBieQotICBjaGVja2luZyBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5fbWVyY3VyaWFsLgotCi0tIFNpbGVuY2Ugc3B1cmlvdXMgImJyb2tlbiBwaXBlIiB0cmFjZWJhY2tzIHdoZW4gc2h1dHRpbmcgZG93biBhCi0gIFByb2Nlc3NQb29sRXhlY3V0b3IuCi0KLS0gRml4IHBvdGVudGlhbCByZXNvdXJjZSBsZWFrcyBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcgotICBieSBqb2luaW5nIGFsbCBxdWV1ZXMgYW5kIHByb2Nlc3NlcyB3aGVuIHNodXRkb3duKCkgaXMgY2FsbGVkLgotCi0tIElzc3VlICMxMTYwMzogRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzExMzIxOiBGaXggYSBjcmFzaCB3aXRoIG11bHRpcGxlIGltcG9ydHMgb2YgdGhlIF9waWNrbGUgbW9kdWxlIHdoZW4KLSAgZW1iZWRkaW5nIFB5dGhvbi4gIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjNjc1NTogQWRkIGdldF93Y2goKSBtZXRob2QgdG8gY3Vyc2VzLndpbmRvdyBjbGFzcy4gUGF0Y2ggYnkgScOxaWdvCi0gIFNlcm5hLgotCi0tIEFkZCBjZ2kuY2xvc2Vsb2coKSBmdW5jdGlvbiB0byBjbG9zZSB0aGUgbG9nIGZpbGUuCi0KLS0gSXNzdWUgIzEyNTAyOiBhc3luY29yZTogZml4IHBvbGxpbmcgbG9vcCB3aXRoIEFGX1VOSVggc29ja2V0cy4KLQotLSBJc3N1ZSAjNDM3NjogY3R5cGVzIG5vdyBzdXBwb3J0cyBuZXN0ZWQgc3RydWN0dXJlcyBpbiBhIGVuZGlhbiBkaWZmZXJlbnQgdGhhbgotICB0aGUgcGFyZW50IHN0cnVjdHVyZS4gUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KLQotLSBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlIF9DSFVOS19TSVpFIGF0dHJpYnV0ZSBvZiBhCi0gIFRleHRJT1dyYXBwZXIgdG8gYSBodWdlIHZhbHVlLCBub3QgVHlwZUVycm9yLgotCi0tIElzc3VlICMxMjUwNDogQ2xvc2UgZmlsZSBoYW5kbGVzIGluIGEgdGltZWx5IG1hbm5lciBpbiBwYWNrYWdpbmcuZGF0YWJhc2UuCi0gIFRoaXMgZml4ZXMgYSBidWcgd2l0aCB0aGUgcmVtb3ZlICh1bmluc3RhbGwpIGZlYXR1cmUgb24gV2luZG93cy4KLQotLSBJc3N1ZXMgIzEyMTY5IGFuZCAjMTA1MTA6IEZhY3RvciBvdXQgY29kZSB1c2VkIGJ5IHZhcmlvdXMgcGFja2FnaW5nIGNvbW1hbmRzCi0gIHRvIG1ha2UgSFRUUCBQT1NUIHJlcXVlc3RzLCBhbmQgbWFrZSBzdXJlIGl0IHVzZXMgQ1JMRi4KLQotLSBJc3N1ZSAjMTIwMTY6IE11bHRpYnl0ZSBDSksgZGVjb2RlcnMgbm93IHJlc3luY2hyb25pemUgZmFzdGVyLiBUaGV5IG9ubHkKLSAgaWdub3JlIHRoZSBmaXJzdCBieXRlIG9mIGFuIGludmFsaWQgYnl0ZSBzZXF1ZW5jZS4gRm9yIGV4YW1wbGUsCi0gIGInXHhmZlxuJy5kZWNvZGUoJ2diMjMxMicsICdyZXBsYWNlJykgZ2l2ZXMgJ1x1ZmZmZFxuJyBpbnN0ZWFkIG9mICdcdWZmZmQnLgotCi0tIElzc3VlICMxMjQ1OTogdGltZS5zbGVlcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHRoZSBzbGVlcCBsZW5ndGggaXMKLSAgbmVnYXRpdmUsIGluc3RlYWQgb2YgYW4gaW5maW5pdGUgc2xlZXAgb24gV2luZG93cyBvciByYWlzaW5nIGFuIElPRXJyb3Igb24KLSAgTGludXggZm9yIGV4YW1wbGUsIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIG9uIGFsbCBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBweWRvYzogaHRtbF9nZXRmaWxlKCkgbm93IHVzZXMgdG9rZW5pemUub3BlbigpIHRvIHN1cHBvcnQKLSAgUHl0aG9uIHNjcmlwdHMgdXNpbmcgYSBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiBVVEYtOCAocmVhZCB0aGUgY29kaW5nIGNvb2tpZQotICBvZiB0aGUgc2NyaXB0KS4KLQotLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKLSAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCi0KLS0gSXNzdWUgIzEyNDY3OiB3YXJuaW5nczogZml4IGEgcmFjZSBjb25kaXRpb24gaWYgYSB3YXJuaW5nIGlzIGVtaXR0ZWQgYXQKLSAgc2h1dGRvd24sIGlmIGdsb2JhbHMoKVsnX19maWxlX18nXSBpcyBOb25lLgotCi0tIElzc3VlICMxMjQ1MTogcHlkb2M6IGltcG9ydGZpbGUoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTI0NTE6IHJ1bnB5OiBydW5fcGF0aCgpIG5vdyBvcGVucyB0aGUgUHl0aG9uIHNjcmlwdCBpbiBiaW5hcnkgbW9kZSwKLSAgaW5zdGVhZCBvZiB0ZXh0IG1vZGUgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgdG8gc3VwcG9ydCBvdGhlciBlbmNvZGluZ3MKLSAgdGhhbiBVVEYtOCAoc2NyaXB0cyB1c2luZyB0aGUgY29kaW5nIGNvb2tpZSkuCi0KLS0gSXNzdWUgIzEyNDUxOiB4bWwuZG9tLnB1bGxkb206IHBhcnNlKCkgbm93IG9wZW5zIGZpbGVzIGluIGJpbmFyeSBtb2RlIGluc3RlYWQKLSAgb2YgdGhlIHRleHQgbW9kZSAodXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZykgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjE0NzogQWRqdXN0IHRoZSBuZXctaW4tMy4yIHNtdHBsaWIuc2VuZF9tZXNzYWdlIG1ldGhvZCBmb3IgYmV0dGVyCi0gIGNvbmZvcm1hbmNlIHRvIHRoZSBSRkNzOiBjb3JyZWN0bHkgaGFuZGxlIFNlbmRlciBhbmQgUmVzZW50LSBoZWFkZXJzLgotCi0tIElzc3VlICMxMjM1MjogRml4IGEgZGVhZGxvY2sgaW4gbXVsdGlwcm9jZXNzaW5nLkhlYXAgd2hlbiBhIGJsb2NrIGlzIGZyZWVkIGJ5Ci0gIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB3aGlsZSB0aGUgSGVhcCBsb2NrIGlzIGhlbGQuCi0KLS0gSXNzdWUgIzEyNDYyOiB0aW1lLnNsZWVwKCkgbm93IGltbWVkaWF0ZWx5IGNhbGxzIHRoZSAoUHl0aG9uKSBzaWduYWwgaGFuZGxlcgotICBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd2FpdCB1bnRpbCB0aGUgbmV4dAotICBpbnN0cnVjdGlvbi4KLQotLSBJc3N1ZSAjMTI0NDI6IG5ldyBzaHV0aWwuZGlza191c2FnZSBmdW5jdGlvbiwgcHJvdmlkaW5nIHRvdGFsLCB1c2VkIGFuZCBmcmVlCi0gIGRpc2sgc3BhY2Ugc3RhdGlzdGljcy4KLQotLSBJc3N1ZSAjMTI0NTE6IFRoZSBYSW5jbHVkZSBkZWZhdWx0IGxvYWRlciBvZiB4bWwuZXRyZWUgbm93IGRlY29kZXMgZmlsZXMgZnJvbQotICBVVEYtOCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIEl0IG5vdwotICBhbHNvIG9wZW5zIFhNTCBmaWxlcyBmb3IgdGhlIHBhcnNlciBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkIG9mIHRoZSB0ZXh0IG1vZGUKLSAgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogZG9jdGVzdC5kZWJ1Z19zY3JpcHQoKSBkb2Vzbid0IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlCi0gIGFueW1vcmUgdG8gYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogcHlkb2Muc3lub3BzaXMoKSBub3cgcmVhZHMgdGhlIGVuY29kaW5nIGNvb2tpZSBpZiBhdmFpbGFibGUsCi0gIHRvIHJlYWQgdGhlIFB5dGhvbiBzY3JpcHQgZnJvbSB0aGUgcmlnaHQgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzEyNDUxOiBkaXN0dXRpbHMgbm93IG9wZW5zIHRoZSBzZXR1cCBzY3JpcHQgaW4gYmluYXJ5IG1vZGUgdG8gcmVhZCB0aGUKLSAgZW5jb2RpbmcgY29va2llLCBpbnN0ZWFkIG9mIG9wZW5pbmcgaXQgaW4gVVRGLTguCi0KLS0gSXNzdWUgIzk1MTY6IE9uIE1hYyBPUyBYLCBjaGFuZ2UgRGlzdHV0aWxzIHRvIG5vIGxvbmdlciBnbG9iYWxseSBhdHRlbXB0IHRvCi0gIGNoZWNrIG9yIHNldCB0aGUgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGUKLSAgaW50ZXJwcmV0ZXIgcHJvY2Vzcy4gIFRoaXMgY291bGQgY2F1c2UgZmFpbHVyZXMgaW4gbm9uLURpc3R1dGlscyBzdWJwcm9jZXNzZXMKLSAgYW5kIHdhcyB1bnJlbGlhYmxlIHNpbmNlIHRlc3RzIG9yIHVzZXIgcHJvZ3JhbXMgY291bGQgbW9kaWZ5IHRoZSBpbnRlcnByZXRlcgotICBlbnZpcm9ubWVudCBhZnRlciBEaXN0dXRpbHMgc2V0IGl0LiAgSW5zdGVhZCwgaGF2ZSBEaXN0dXRpbHMgc2V0IHRoZQotICBkZXBsb3ltZW50IHRhcmdldCBvbmx5IGluIHRoZSBlbnZpcm9ubWVudCBvZiBlYWNoIGJ1aWxkIHN1YnByb2Nlc3MuICBJdCBpcwotICBzdGlsbCBwb3NzaWJsZSB0byBnbG9iYWxseSBvdmVycmlkZSB0aGUgZGVmYXVsdCBieSBzZXR0aW5nCi0gIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBiZWZvcmUgbGF1bmNoaW5nIHRoZSBpbnRlcnByZXRlcjsgaXRzIHZhbHVlIG11c3QgYmUKLSAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHZhbHVlIHdpdGggd2hpY2ggdGhlIGludGVycHJldGVyCi0gIHdhcyBidWlsdC4gIEFsc28sIGltcGxlbWVudCB0aGUgc2FtZSBoYW5kbGluZyBpbiBwYWNrYWdpbmcuCi0KLS0gSXNzdWUgIzEyNDIyOiBJbiB0aGUgY29weSBtb2R1bGUsIGRvbid0IHN0b3JlIG9iamVjdHMgdGhhdCBhcmUgdGhlaXIgb3duIGNvcHkKLSAgaW4gdGhlIG1lbW8gZGljdC4KLQotLSBJc3N1ZSAjMTIzMDM6IEFkZCBzaWd3YWl0aW5mbygpIGFuZCBzaWd0aW1lZHdhaXQoKSB0byB0aGUgc2lnbmFsIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTI0MDQ6IFJlbW92ZSBDODkgaW5jb21wYXRpYmxlIGNvZGUgZnJvbSBtbWFwIG1vZHVsZS4gUGF0Y2ggYnkgQWtpcmEKLSAgS2l0YWRhLgotCi0tIElzc3VlICMxODc0OiBlbWFpbCBub3cgZGV0ZWN0cyBhbmQgcmVwb3J0cyBhcyBhIGRlZmVjdCB0aGUgcHJlc2VuY2Ugb2YKLSAgYW55IENURSBvdGhlciB0aGFuIDdiaXQsIDhiaXQsIG9yIGJpbmFyeSBvbiBhIG11bHRpcGFydC4KLQotLSBJc3N1ZSAjMTIzODM6IEZpeCBzdWJwcm9jZXNzIG1vZHVsZSB3aXRoIGVudj17fTogZG9uJ3QgY29weSB0aGUgZW52aXJvbm1lbnQKLSAgdmFyaWFibGVzLCBzdGFydCB3aXRoIGFuIGVtcHR5IGVudmlyb25tZW50LgotCi0tIElzc3VlICMxMTYzNzogRml4IHN1cHBvcnQgZm9yIGltcG9ydGluZyBwYWNrYWdpbmcgc2V0dXAgaG9va3MgZnJvbSB0aGUKLSAgcHJvamVjdCBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzY3NzE6IE1vdmVkIHRoZSBjdXJzZXMud3JhcHBlciBmdW5jdGlvbiBmcm9tIHRoZSBzaW5nbGUtZnVuY3Rpb24KLSAgd3JhcHBlciBtb2R1bGUgaW50byBfX2luaXRfXywgZWxpbWluYXRpbmcgdGhlIG1vZHVsZS4gIFNpbmNlIF9faW5pdF9fIHdhcwotICBhbHJlYWR5IGltcG9ydGluZyB0aGUgZnVuY3Rpb24gdG8gY3Vyc2VzLndyYXBwZXIsIHRoZXJlIGlzIG5vIEFQSSBjaGFuZ2UuCi0KLS0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlcgotICBwYXNzZWQgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsCi0gIGlmIGdpdmVuIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCi0KLS0gSXNzdWUgIzExNzAwOiBtYWlsYm94IHByb3h5IG9iamVjdCBjbG9zZSBtZXRob2RzIGNhbiBub3cgYmUgY2FsbGVkIG11bHRpcGxlCi0gIHRpbWVzIHdpdGhvdXQgZXJyb3IuCi0KLS0gSXNzdWUgIzExNzY3OiBDb3JyZWN0IGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIG1haWxib3gncyBfX2dldGl0ZW1fXyBtZXRob2QuCi0KLS0gSXNzdWUgIzEyMTMzOiBBYnN0cmFjdEhUVFBIYW5kbGVyLmRvX29wZW4oKSBvZiB1cmxsaWIucmVxdWVzdCBjbG9zZXMgdGhlIEhUVFAKLSAgY29ubmVjdGlvbiBpZiBpdHMgZ2V0cmVzcG9uc2UoKSBtZXRob2QgZmFpbHMgd2l0aCBhIHNvY2tldCBlcnJvci4gUGF0Y2gKLSAgd3JpdHRlbiBieSBFemlvIE1lbG90dGkuCi0KLS0gSXNzdWUgIzEyMjQwOiBBbGxvdyBtdWx0aXBsZSBzZXR1cCBob29rcyBpbiBwYWNrYWdpbmcncyBzZXR1cC5jZmcgZmlsZXMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWsgQnJheS4KLQotLSBJc3N1ZSAjOTI4NDogQWxsb3cgaW5zcGVjdC5maW5kc291cmNlKCkgdG8gZmluZCB0aGUgc291cmNlIG9mIGRvY3Rlc3QKLSAgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxMTU5NTogRml4IGFzc29ydGVkIGJ1Z3MgaW4gcGFja2FnaW5nLnV0aWwuY2ZnX3RvX2FyZ3MsIGEKLSAgY29tcGF0aWJpbGl0eSBoZWxwZXIgZm9yIHRoZSBkaXN0dXRpbHMtcGFja2FnaW5nIHRyYW5zaXRpb24uICBPcmlnaW5hbCBwYXRjaAotICBieSBFcmlrIEJyYXkuCi0KLS0gSXNzdWUgIzEyMjg3OiBJbiBvc3NhdWRpb2RldiwgY2hlY2sgdGhhdCB0aGUgZGV2aWNlIGlzbid0IGNsb3NlZCBpbiBzZXZlcmFsCi0gIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzEyMDA5OiBGaXhlZCByZWdyZXNzaW9uIGluIG5ldHJjIGZpbGUgY29tbWVudCBoYW5kbGluZy4KLQotLSBJc3N1ZSAjMTIyNDY6IFdhcm4gYW5kIGZhaWwgd2hlbiB0cnlpbmcgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHByb2plY3QgZnJvbQotICBhbiB1bmluc3RhbGxlZCBQeXRob24gKGJ1aWx0IGluIGEgc291cmNlIGNoZWNrb3V0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFRzaGVwYW5nIExla2hvbmtob2JlLgotCi0tIElzc3VlICMxMDY5NDogemlwZmlsZSBub3cgaWdub3JlcyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgYSB6aXBmaWxlLgotCi0tIElzc3VlICMxMjI4MzogRml4ZWQgcmVncmVzc2lvbiBpbiBzbXRwbGliIHF1b3Rpbmcgb2YgbGVhZGluZyBkb3RzIGluIERBVEEuCi0KLS0gSXNzdWUgIzEwNDI0OiBBcmdwYXJzZSBub3cgaW5jbHVkZXMgdGhlIG5hbWVzIG9mIHRoZSBtaXNzaW5nIHJlcXVpcmVkCi0gIGFyZ3VtZW50cyBpbiB0aGUgbWlzc2luZyBhcmd1bWVudHMgZXJyb3IgbWVzc2FnZS4KLQotLSBJc3N1ZSAjMTIxNjg6IFN5c0xvZ0hhbmRsZXIgbm93IGFsbG93cyBOVUwgdGVybWluYXRpb24gdG8gYmUgY29udHJvbGxlZCB1c2luZwotICBhIG5ldyAnYXBwZW5kX251bCcgYXR0cmlidXRlIG9uIHRoZSBoYW5kbGVyLgotCi0tIElzc3VlICMxMTU4MzogU3BlZWQgdXAgb3MucGF0aC5pc2RpciBvbiBXaW5kb3dzIGJ5IHVzaW5nIEdldEZpbGVBdHRyaWJ1dGVzCi0gIGluc3RlYWQgb2Ygb3Muc3RhdC4KLQotLSBJc3N1ZSAjMTIwMjE6IE1ha2UgbW1hcCdzIHJlYWQoKSBtZXRob2QgYXJndW1lbnQgb3B0aW9uYWwuIFBhdGNoIGJ5IFBldHJpCi0gIExlaHRpbmVuLgotCi0tIElzc3VlICM5MjA1OiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvciBub3cgZGV0ZWN0cyBraWxsZWQKLSAgY2hpbGRyZW4gYW5kIHJhaXNlcyBCcm9rZW5Qcm9jZXNzUG9vbCBpbiBzdWNoIGEgc2l0dWF0aW9uLiAgUHJldmlvdXNseSBpdAotICB3b3VsZCByZWxpYWJseSBmcmVlemUvZGVhZGxvY2suCi0KLS0gSXNzdWUgIzEyMDQwOiBFeHBvc2UgYSBuZXcgYXR0cmlidXRlIGBgc2VudGluZWxgYCBvbiBpbnN0YW5jZXMgb2YKLSAgYGBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzc2BgLiAgQWxzbywgZml4IFByb2Nlc3Muam9pbigpIHRvIG5vdCB1c2UgcG9sbGluZwotICBhbnltb3JlLCB3aGVuIGdpdmVuIGEgdGltZW91dC4KLQotLSBJc3N1ZSAjMTE4OTM6IFJlbW92ZSBvYnNvbGV0ZSBpbnRlcm5hbCB3cmFwcGVyIGNsYXNzIGBgU1NMRmFrZUZpbGVgYCBpbiB0aGUKLSAgc210cGxpYiBtb2R1bGUuICBQYXRjaCBieSBDYXRhbGluIElhY29iLgotCi0tIElzc3VlICMxMjA4MDogRml4IGEgRGVjaW1hbC5wb3dlcigpIGNhc2UgdGhhdCB0b29rIGFuIHVucmVhc29uYWJseSBsb25nIHRpbWUKLSAgdG8gY29tcHV0ZS4KLQotLSBJc3N1ZSAjMTIyMjE6IFJlbW92ZSBfX3ZlcnNpb25fXyBhdHRyaWJ1dGVzIGZyb20gcHlleHBhdCwgcGlja2xlLCB0YXJmaWxlLAotICBweWRvYywgdGtpbnRlciwgYW5kIHhtbC5wYXJzZXJzLmV4cGF0LiBUaGlzIHdlcmUgdXNlbGVzcyB2ZXJzaW9uIGNvbnN0YW50cwotICBsZWZ0IG92ZXIgZnJvbSB0aGUgTWVyY3VyaWFsIHRyYW5zaXRpb24KLQotLSBOYW1lZCB0dXBsZXMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggdmFycygpLgotCi0tIElzc3VlICMxMjA4NTogRml4IGFuIGF0dHJpYnV0ZSBlcnJvciBpbiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3IgaWYgdGhlCi0gIGNvbnN0cnVjdG9yIGhhcyBmYWlsZWQsIGUuZy4gYmVjYXVzZSBvZiBhbiB1bmRlY2xhcmVkIGtleXdvcmQgYXJndW1lbnQuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgT2xlZyBPc2hteWFuLgotCi0tIElzc3VlICMxMjAyODogTWFrZSB0aHJlYWRpbmcuX2dldF9pZGVudCgpIHB1YmxpYywgcmVuYW1lIGl0IHRvCi0gIHRocmVhZGluZy5nZXRfaWRlbnQoKSBhbmQgZG9jdW1lbnQgaXQuIFRoaXMgZnVuY3Rpb24gd2FzIGFscmVhZHkgdXNlZCB1c2luZwotICBfdGhyZWFkLmdldF9pZGVudCgpLgotCi0tIElzc3VlICMxMjE3MTogSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0KCkgb2YgQ0pLIGNvZGVjcyAobXVsdGlieXRlY29kZWMpIGNhbGxzCi0gIGVuY3Jlc2V0KCkgaW5zdGVhZCBvZiBkZWNyZXNldCgpLgotCi0tIElzc3VlICMxMjIxODogUmVtb3ZlZCB3c2dpcmVmLmVnZy1pbmZvLgotCi0tIElzc3VlICMxMjE5NjogQWRkIHBpcGUyKCkgdG8gdGhlIG9zIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTg1MDY0OiBNYWtlIHBsaXN0bGliIG1vcmUgcmVzaWxpZW50IHRvIGZhdWx0eSBpbnB1dCBwbGlzdHMuCi0gIFBhdGNoIGJ5IE1oZXIgTW92c2lzeWFuLgotCi0tIElzc3VlICMxNjI1OiBCWjJGaWxlIGFuZCBiejIuZGVjb21wcmVzcygpIG5vdyBzdXBwb3J0IG11bHRpLXN0cmVhbSBmaWxlcy4KLSAgSW5pdGlhbCBwYXRjaCBieSBOaXIgQWlkZXMuCi0KLS0gSXNzdWUgIzEyMTc1OiBCdWZmZXJlZFJlYWRlci5yZWFkKC0xKSBub3cgY2FsbHMgcmF3LnJlYWRhbGwoKSBpZiBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyBvbmx5IHJlYWRzIHRoZSBmaWxlIHBvc2l0aW9uIGFuZCBzaXplCi0gIG9uY2UuCi0KLS0gSXNzdWUgIzEyMTc1OiBSYXdJT0Jhc2UucmVhZGFsbCgpIG5vdyByZXR1cm5zIE5vbmUgaWYgcmVhZCgpIHJldHVybnMgTm9uZS4KLQotLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yCi0gIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4KLQotLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peGluCi0gIGNsYXNzIGZvciBjbGVhbnVwLiBJbml0aWFsIFBhdGNoIGJ5IEp1c3RpbiBXYXJrZW50aW4uCi0KLS0gSXNzdWUgIzEyMDQ1OiBBdm9pZCBkdXBsaWNhdGUgZXhlY3V0aW9uIG9mIGNvbW1hbmQgaW4KLSAgY3R5cGVzLnV0aWwuX2dldF9zb25hbWUoKS4gIFBhdGNoIGJ5IFNpamluIEpvc2VwaC4KLQotLSBJc3N1ZSAjMTA4MTg6IFJlbW92ZSB0aGUgVGsgR1VJIGFuZCB0aGUgc2VydmUoKSBmdW5jdGlvbiBvZiB0aGUgcHlkb2MgbW9kdWxlLAotICBweWRvYyAtZyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIgYW5kIGl0IGhhcyBhIG5ldyBlbmhhbmNlZCB3ZWIKLSAgc2VydmVyLgotCi0tIElzc3VlICMxNDQxNTMwOiBJbiBpbWFwbGliLCByZWFkIHRoZSBkYXRhIGluIG9uZSBjaHVuayB0byBzcGVlZCB1cCBsYXJnZQotICByZWFkcyBhbmQgc2ltcGxpZnkgY29kZS4KLQotLSBJc3N1ZSAjMTIwNzA6IEZpeCB0aGUgTWFrZWZpbGUgcGFyc2VyIG9mIHRoZSBzeXNjb25maWcgbW9kdWxlIHRvIGhhbmRsZQotICBjb3JyZWN0bHkgcmVmZXJlbmNlcyB0byAiYm9ndXMgdmFyaWFibGUiIChlLmcuICJwcmVmaXg9JC9vcHQvcHl0aG9uIikuCi0KLS0gSXNzdWUgIzEyMTAwOiBEb24ndCByZXNldCBpbmNyZW1lbnRhbCBlbmNvZGVycyBvZiBDSksgY29kZWNzIGF0IGVhY2ggY2FsbCB0bwotICB0aGVpciBlbmNvZGUoKSBtZXRob2QgYW55bW9yZSwgYnV0IGNvbnRpbnVlIHRvIGNhbGwgdGhlIHJlc2V0KCkgbWV0aG9kIGlmIHRoZQotICBmaW5hbCBhcmd1bWVudCBpcyBUcnVlLgotCi0tIElzc3VlICMxMjA0OTogQWRkIFJBTkRfYnl0ZXMoKSBhbmQgUkFORF9wc2V1ZG9fYnl0ZXMoKSBmdW5jdGlvbnMgdG8gdGhlIHNzbAotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzY1MDE6IG9zLmRldmljZV9lbmNvZGluZygpIHJldHVybnMgTm9uZSBvbiBXaW5kb3dzIGlmIHRoZSBhcHBsaWNhdGlvbgotICBoYXMgbm8gY29uc29sZS4KLQotLSBJc3N1ZSAjMTIxMDU6IEFkZCBPX0NMT0VYRUMgdG8gdGhlIG9zIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTIwNzk6IERlY2ltYWwoJ0luZmluaXR5JykuZm1hKERlY2ltYWwoJzAnKSwgKDMuOTEyMjQzMTgxMjY3ODZlKzE5KzBqKSkKLSAgbm93IHJhaXNlcyBUeXBlRXJyb3IgKHJlZmxlY3RpbmcgdGhlIGludmFsaWQgdHlwZSBvZiB0aGUgM3JkIGFyZ3VtZW50KSByYXRoZXIKLSAgdGhhbiBEZWNpbWFsLkludmFsaWRPcGVyYXRpb24uCi0KLS0gSXNzdWUgIzEyMTI0OiB6aXBpbXBvcnQgZG9lc24ndCBrZWVwIGEgcmVmZXJlbmNlIHRvIHpsaWIuZGVjb21wcmVzcygpIGFueW1vcmUKLSAgdG8gYmUgYWJsZSB0byB1bmxvYWQgdGhlIG1vZHVsZS4KLQotLSBBZGQgdGhlIHBhY2thZ2luZyBtb2R1bGUsIGFuIGltcHJvdmVkIGZvcmsgb2YgZGlzdHV0aWxzIChhbHNvIGtub3duIGFzCi0gIGRpc3R1dGlsczIpLgotCi0tIElzc3VlICMxMjA2NTogY29ubmVjdF9leCgpIG9uIGFuIFNTTCBzb2NrZXQgbm93IHJldHVybnMgdGhlIG9yaWdpbmFsIGVycm5vCi0gIHdoZW4gdGhlIHNvY2tldCdzIHRpbWVvdXQgZXhwaXJlcyAoaXQgdXNlZCB0byByZXR1cm4gTm9uZSkuCi0KLS0gSXNzdWUgIzg4MDk6IFRoZSBTTVRQX1NTTCBjb25zdHJ1Y3RvciBhbmQgU01UUC5zdGFydHRscygpIG5vdyBzdXBwb3J0Ci0gIHBhc3NpbmcgYSBgYGNvbnRleHRgYCBhcmd1bWVudCBwb2ludGluZyB0byBhbiBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZS4KLSAgUGF0Y2ggYnkgS2FzdW4gSGVyYXRoLgotCi0tIElzc3VlICM5NTE2OiBJc3N1ZSAjOTUxNjogYXZvaWQgZXJyb3JzIGluIHN5c2NvbmZpZyB3aGVuIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotICBpcyBzZXQgaW4gc2hlbGwuCi0KLS0gSXNzdWUgIzg2NTA6IE1ha2UgemxpYiBtb2R1bGUgNjQtYml0IGNsZWFuLiBjb21wcmVzcygpLCBkZWNvbXByZXNzKCkgYW5kCi0gIHRoZWlyIGluY3JlbWVudGFsIGNvdW50ZXJwYXJ0cyBub3cgcmFpc2UgT3ZlcmZsb3dFcnJvciBpZiBnaXZlbiBhbiBpbnB1dAotICBsYXJnZXIgdGhhbiA0R0IsIGluc3RlYWQgb2Ygc2lsZW50bHkgdHJ1bmNhdGluZyB0aGUgaW5wdXQgYW5kIHJldHVybmluZwotICBhbiBpbmNvcnJlY3QgcmVzdWx0LgotCi0tIElzc3VlICMxMjA1MDogemxpYi5kZWNvbXByZXNzb2JqKCkuZGVjb21wcmVzcygpIG5vdyBjbGVhcnMgdGhlIHVuY29uc3VtZWRfdGFpbAotICBhdHRyaWJ1dGUgd2hlbiBjYWxsZWQgd2l0aG91dCBhIG1heF9sZW5ndGggYXJndW1lbnQuCi0KLS0gSXNzdWUgIzEyMDYyOiBGaXggYSBmbHVzaGluZyBidWcgd2hlbiBkb2luZyBhIGNlcnRhaW4gdHlwZSBvZiBJL08gc2VxdWVuY2UKLSAgb24gYSBmaWxlIG9wZW5lZCBpbiByZWFkK3dyaXRlIG1vZGUgKG5hbWVseTogcmVhZGluZywgc2Vla2luZyBhIGJpdCBmb3J3YXJkLAotICB3cml0aW5nLCB0aGVuIHNlZWtpbmcgYmVmb3JlIHRoZSBwcmV2aW91cyB3cml0ZSBidXQgc3RpbGwgd2l0aGluIGJ1ZmZlcmVkCi0gIGRhdGEsIGFuZCB3cml0aW5nIGFnYWluKS4KLQotLSBJc3N1ZSAjOTk3MTogV3JpdGUgYW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIEJ1ZmZlcmVkUmVhZGVyLnJlYWRpbnRvKCkuCi0gIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCi0KLS0gSXNzdWUgIzExNzk5OiB1cmxsaWIucmVxdWVzdCBBdXRoZW50aWNhdGlvbiBIYW5kbGVycyB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvcgotICB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIHVuc3VwcG9ydGVkIEF1dGhlbnRpY2F0aW9uIFNjaGVtZS4gUGF0Y2ggY29udHJpYnV0ZWQKLSAgYnkgWXV2YWwgR3JlZW5maWVsZC4KLQotLSBJc3N1ZSAjMTA0MTksICM2MDExOiBidWlsZF9zY3JpcHRzIGNvbW1hbmQgb2YgZGlzdHV0aWxzIGhhbmRsZXMgY29ycmVjdGx5Ci0gIG5vbi1BU0NJSSBwYXRoIChwYXRoIHRvIHRoZSBQeXRob24gZXhlY3V0YWJsZSkuIE9wZW4gYW5kIHdyaXRlIHRoZSBzY3JpcHQgaW4KLSAgYmluYXJ5IG1vZGUsIGJ1dCBlbnN1cmUgdGhhdCB0aGUgc2hlYmFuZyBpcyBkZWNvZGFibGUgZnJvbSBVVEYtOCBhbmQgZnJvbSB0aGUKLSAgZW5jb2Rpbmcgb2YgdGhlIHNjcmlwdC4KLQotLSBJc3N1ZSAjODQ5ODogSW4gc29ja2V0LmFjY2VwdCgpLCBhbGxvdyB0byBzcGVjaWZ5IDAgYXMgYSBiYWNrbG9nIHZhbHVlIGluCi0gIG9yZGVyIHRvIGFjY2VwdCBleGFjdGx5IG9uZSBjb25uZWN0aW9uLiAgUGF0Y2ggYnkgRGFuaWVsIEV2ZXJzLgotCi0tIElzc3VlICMxMjAxMTogc2lnbmFsLnNpZ25hbCgpIGFuZCBzaWduYWwuc2lnaW50ZXJydXB0KCkgcmFpc2UgYW4gT1NFcnJvciwKLSAgaW5zdGVhZCBvZiBhIFJ1bnRpbWVFcnJvcjogT1NFcnJvciBoYXMgYW4gZXJybm8gYXR0cmlidXRlLgotCi0tIElzc3VlICMzNzA5OiBhZGQgYSBmbHVzaF9oZWFkZXJzIG1ldGhvZCB0byBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCB3aGljaAotICBtYW5hZ2VzIHRoZSBzZW5kaW5nIG9mIGhlYWRlcnMgdG8gb3V0cHV0IHN0cmVhbSBhbmQgZmx1c2hpbmcgdGhlIGludGVybmFsCi0gIGhlYWRlcnMgYnVmZmVyLiBQYXRjaCBjb250cmlidXRpb24gYnkgQW5kcmV3IFNjaGFhZgotCi0tIElzc3VlICMxMTc0MzogUmV3cml0ZSBtdWx0aXByb2Nlc3NpbmcgY29ubmVjdGlvbiBjbGFzc2VzIGluIHB1cmUgUHl0aG9uLgotCi0tIElzc3VlICMxMTE2NDogU3RvcCB0cnlpbmcgdG8gdXNlIF94bWxwbHVzIGluIHRoZSB4bWwgbW9kdWxlLgotCi0tIElzc3VlICMxMTg4ODogQWRkIGxvZzIgZnVuY3Rpb24gdG8gbWF0aCBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgTWFyawotICBEaWNraW5zb24uCi0KLS0gSXNzdWUgIzEyMDEyOiBzc2wuUFJPVE9DT0xfU1NMdjIgYmVjb21lcyBvcHRpb25hbC4KLQotLSBJc3N1ZSAjODQwNzogVGhlIHNpZ25hbCBoYW5kbGVyIHdyaXRlcyB0aGUgc2lnbmFsIG51bWJlciBhcyBhIHNpbmdsZSBieXRlCi0gIGluc3RlYWQgb2YgYSBudWwgYnl0ZSBpbnRvIHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yLiBTbyBpdCBpcyBwb3NzaWJsZSB0bwotICB3YWl0IG1vcmUgdGhhbiBvbmUgc2lnbmFsIGFuZCBrbm93IHdoaWNoIHNpZ25hbHMgd2VyZSByYWlzZWQuCi0KLS0gSXNzdWUgIzg0MDc6IEFkZCBwdGhyZWFkX2tpbGwoKSwgc2lncGVuZGluZygpIGFuZCBzaWd3YWl0KCkgZnVuY3Rpb25zIHRvIHRoZQotICBzaWduYWwgbW9kdWxlLgotCi0tIElzc3VlICMxMTkyNzogU01UUF9TU0wgbm93IHVzZXMgcG9ydCA0NjUgYnkgZGVmYXVsdCBhcyBkb2N1bWVudGVkLiAgUGF0Y2gKLSAgYnkgS2FzdW4gSGVyYXRoLgotCi0tIElzc3VlICMxMjAwMjogZnRwbGliJ3MgYWJvcnQoKSBtZXRob2QgcmFpc2VzIFR5cGVFcnJvci4KLQotLSBJc3N1ZSAjMTE5MTY6IEFkZCBhIG51bWJlciBvZiBNYWNPU1ggc3BlY2lmaWMgZGVmaW5pdGlvbnMgdG8gdGhlIGVycm5vIG1vZHVsZS4KLSAgUGF0Y2ggYnkgUGllcnJlIENhcnJpZXIuCi0KLS0gSXNzdWUgIzExOTk5OiBmaXhlZCBzcG9yYWRpYyBzeW5jIGZhaWx1cmUgbWFpbGJveC5NYWlsZGlyIGR1ZSB0byBpdHMgdHJ5aW5nIHRvCi0gIGRldGVjdCBtdGltZSBjaGFuZ2VzIGJ5IGNvbXBhcmluZyB0byB0aGUgc3lzdGVtIGNsb2NrIGluc3RlYWQgb2YgdG8gdGhlCi0gIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBtdGltZS4KLQotLSBJc3N1ZSAjMTEwNzI6IGFkZGVkIE1MU0QgY29tbWFuZCAoUkZDLTM2NTkpIHN1cHBvcnQgdG8gZnRwbGliLgotCi0tIElzc3VlICM4ODA4OiBUaGUgSU1BUDRfU1NMIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgcGFzc2luZyBhbiBTU0xDb250ZXh0Ci0gIHBhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLiAgUGF0Y2ggYnkgU2lqaW4KLSAgSm9zZXBoLgotCi0tIG50cGF0aC5zYW1lZmlsZSBmYWlsZWQgdG8gbm90aWNlIHRoYXQgImEudHh0IiBhbmQgIkEuVFhUIiByZWZlciB0byB0aGUgc2FtZQotICBmaWxlIG9uIFdpbmRvd3MgWFAuIEFzIG5vdGljZWQgaW4gaXNzdWUgIzEwNjg0LgotCi0tIElzc3VlICMxMjAwMDogV2hlbiBhIFNTTCBjZXJ0aWZpY2F0ZSBoYXMgYSBzdWJqZWN0QWx0TmFtZSB3aXRob3V0IGFueQotICBkTlNOYW1lIGVudHJ5LCBzc2wubWF0Y2hfaG9zdG5hbWUoKSBzaG91bGQgdXNlIHRoZSBzdWJqZWN0J3MgY29tbW9uTmFtZS4KLSAgUGF0Y2ggYnkgTmljb2xhcyBCYXJlaWwuCi0KLS0gSXNzdWUgIzEwNzc1OiBhc3NlcnRSYWlzZXMsIGFzc2VydFJhaXNlc1JlZ2V4LCBhc3NlcnRXYXJucywgYW5kCi0gIGFzc2VydFdhcm5zUmVnZXggbm93IGFjY2VwdCBhIGtleXdvcmQgYXJndW1lbnQgJ21zZycgd2hlbiB1c2VkIGFzIGNvbnRleHQKLSAgbWFuYWdlcnMuICBJbml0aWFsIHBhdGNoIGJ5IFdpbnN0b24gRXdlcnQuCi0KLS0gSXNzdWUgIzEwNjg0OiBzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlCi0gIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZSB3aGVyZSB0aGUgc2FtZSBleGNlcHQKLSAgZm9yIHRoZSBjYXNlLgotCi0tIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQKLSAgbW9yZSB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2gKLSAgYnkgWXNqIFJheS4KLQotLSBJc3N1ZSAjMTE5MzA6IFJlbW92ZWQgZGVwcmVjYXRlZCB0aW1lLmFjY2VwdDJkeWVhciB2YXJpYWJsZS4KLSAgUmVtb3ZlZCB5ZWFyID49IDEwMDAgcmVzdHJpY3Rpb24gZnJvbSBkYXRldGltZS5zdHJmdGltZS4KLQotLSBsb2dnaW5nOiBkb24ndCBkZWZpbmUgUXVldWVMaXN0ZW5lciBpZiBQeXRob24gaGFzIG5vIHRocmVhZCBzdXBwb3J0LgotCi0tIGZ1bmN0b29scy5jbXBfdG9fa2V5KCkgbm93IHdvcmtzIHdpdGggY29sbGVjdGlvbnMuSGFzaGFibGUoKS4KLQotLSBJc3N1ZSAjMTEyNzc6IG1tYXAubW1hcCgpIGNhbGxzIGZjbnRsKGZkLCBGX0ZVTExGU1lOQykgb24gTWFjIE9TIFggdG8gZ2V0Ci0gIGFyb3VuZCBhIG1tYXAgYnVnIHdpdGggc3BhcnNlIGZpbGVzLiBQYXRjaCB3cml0dGVuIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCi0KLS0gSXNzdWUgIzg0MDc6IEFkZCBzaWduYWwucHRocmVhZF9zaWdtYXNrKCkgZnVuY3Rpb24gdG8gZmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUKLSAgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLgotCi0tIElzc3VlICMxMTg1ODogY29uZmlncGFyc2VyLkV4dGVuZGVkSW50ZXJwb2xhdGlvbiBleHBlY3RlZCBsb3dlci1jYXNlIHNlY3Rpb24KLSAgbmFtZXMuCi0KLS0gSXNzdWUgIzExMzI0OiBDb25maWdQYXJzZXIoaW50ZXJwb2xhdGlvbj1Ob25lKSBub3cgd29ya3MgY29ycmVjdGx5LgotCi0tIElzc3VlICMxMTgxMTogc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKSBpcyBub3cgSVB2Ni1jb21wYXRpYmxlLiAgUGF0Y2gKLSAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTc2MzogZG9uJ3QgdXNlIGRpZmZsaWIgaW4gVGVzdENhc2UuYXNzZXJ0TXVsdGlMaW5lRXF1YWwgaWYgdGhlCi0gIHN0cmluZ3MgYXJlIHRvbyBsb25nLgotCi0tIElzc3VlICMxMTIzNjogZ2V0cGFzcy5nZXRwYXNzIHJlc3BvbmRzIHRvIGN0cmwtYyBvciBjdHJsLXogb24gdGVybWluYWwuCi0KLS0gSXNzdWUgIzExODU2OiBTcGVlZCB1cCBwYXJzaW5nIG9mIEpTT04gbnVtYmVycy4KLQotLSBJc3N1ZSAjMTEwMDU6IHRocmVhZGluZy5STG9jaygpLl9yZWxlYXNlX3NhdmUoKSByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlCi0gIGxvY2sgd2FzIG5vdCBhY3F1aXJlZC4KLQotLSBJc3N1ZSAjMTEyNTg6IFNwZWVkIHVwIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpIHVuZGVyIExpbnV4IGJ5IGEgZmFjdG9yCi0gIG9mIDUgdG8gMTAuICBJbml0aWFsIHBhdGNoIGJ5IEpvbmFzIEguCi0KLS0gSXNzdWUgIzExMzgyOiBUcml2aWFsIHN5c3RlbSBjYWxscywgc3VjaCBhcyBkdXAoKSBvciBwaXBlKCksIG5lZWRuJ3QKLSAgcmVsZWFzZSB0aGUgR0lMLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTIyMzogQWRkIHRocmVhZGluZy5faW5mbygpIGZ1bmN0aW9uIHByb3ZpZGluZyBpbmZvcm1hdGlvbnMgYWJvdXQKLSAgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjMTE3MzE6IHNpbXBsaWZ5L2VuaGFuY2UgZW1haWwgcGFyc2VyL2dlbmVyYXRvciBBUEkgYnkgaW50cm9kdWNpbmcKLSAgcG9saWN5IG9iamVjdHMuCi0KLS0gSXNzdWUgIzExNzY4OiBUaGUgc2lnbmFsIGhhbmRsZXIgb2YgdGhlIHNpZ25hbCBtb2R1bGUgb25seSBjYWxscwotICBQeV9BZGRQZW5kaW5nQ2FsbCgpIGZvciB0aGUgZmlyc3Qgc2lnbmFsIHRvIGZpeCBhIGRlYWRsb2NrIG9uIHJlZW50cmFudCBvcgotICBwYXJhbGxlbCBjYWxscy4gUHlFcnJfU2V0SW50ZXJydXB0KCkgd3JpdGVzIGFsc28gaW50byB0aGUgd2FrZSB1cCBmaWxlLgotCi0tIElzc3VlICMxMTQ5MjogZml4IHNldmVyYWwgaXNzdWVzIHdpdGggaGVhZGVyIGZvbGRpbmcgaW4gdGhlIGVtYWlsIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzExODUyOiBBZGQgbWlzc2luZyBpbXBvcnRzIGFuZCB1cGRhdGUgdGVzdHMuCi0KLS0gSXNzdWUgIzExODc1OiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCdzIF9fcmVkdWNlX18gd2FzIHRlbXBvcmFyaWx5Ci0gIG11dGF0aW5nIHRoZSBvYmplY3QgaW5zdGVhZCBvZiBqdXN0IHdvcmtpbmcgb24gYSBjb3B5LgotCi0tIElzc3VlICMxMTQ2NzogRml4IHVybHBhcnNlIGJlaGF2aW9yIHdoZW4gaGFuZGxpbmcgdXJscyB3aGljaCBjb250YWlucyBzY2hlbWUKLSAgc3BlY2lmaWMgcGFydCBvbmx5IGRpZ2l0cy4gUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCi0KLS0gY29sbGVjdGlvbnMuQ291bnRlcigpLmNvcHkoKSBub3cgd29ya3MgY29ycmVjdGx5IGZvciBzdWJjbGFzc2VzLgotCi0tIElzc3VlICMxMTQ3NDogRml4IHRoZSBidWcgd2l0aCB1cmwycGF0aG5hbWUoKSBoYW5kbGluZyBvZiAnL0N8Lycgb24gV2luZG93cy4KLSAgUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCi0KLS0gSXNzdWUgIzExNjg0OiBjb21wbGV0ZSBlbWFpbC5wYXJzZXIgYnl0ZXMgQVBJIGJ5IGFkZGluZyBCeXRlc0hlYWRlclBhcnNlci4KLQotLSBUaGUgYnoyIG1vZHVsZSBub3cgaGFuZGxlcyA0R2lCKyBpbnB1dCBidWZmZXJzIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjOTIzMzogRml4IGpzb24ubG9hZHMoJ3t9JykgdG8gcmV0dXJuIGEgZGljdCAoaW5zdGVhZCBvZiBhIGxpc3QpLCB3aGVuCi0gIF9qc29uIGlzIG5vdCBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzExODMwOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW50cm9zcGVjdGlvbiBjb2RlIGluIHRoZSBkZWNpbWFsIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTE3MDM6IHVybGxpYjIuZ2V0dXJsKCkgZG9lcyBub3QgcmV0dXJuIGNvcnJlY3QgdXJsIHdoZW4gdGhlIG9yaWdpbmFsCi0gIHVybCBjb250YWlucyAjZnJhZ21lbnQuCi0KLS0gSXNzdWUgIzEwMDE5OiBGaXhlZCByZWdyZXNzaW9uIGluIGpzb24gbW9kdWxlIHdoZXJlIGFuIGluZGVudCBvZiAwIHN0b3BwZWQKLSAgYWRkaW5nIG5ld2xpbmVzIGFuZCBhY3RlZCBpbnN0ZWFkIGxpa2UgJ05vbmUnLgotCi0tIElzc3VlICMxMTE4NjogcHlkb2MgaWdub3JlcyBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZQotICBjaGFyYWN0ZXIgaW4gdGhlIGluZGV4IG9mIG1vZHVsZXMuCi0KLS0gSXNzdWUgIzExODE1OiBVc2UgYSBsaWdodC13ZWlnaHQgU2ltcGxlUXVldWUgZm9yIHRoZSByZXN1bHQgcXVldWUgaW4KLSAgY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3IuCi0KLS0gSXNzdWUgIzUxNjI6IFRyZWF0IHNlcnZpY2VzIGxpa2UgZnJvemVuIGV4ZWN1dGFibGVzIHRvIGFsbG93IGNoaWxkIHNwYXduaW5nCi0gIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgb24gV2luZG93cy4KLQotLSBsb2dnaW5nLmJhc2ljQ29uZmlnIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAnaGFuZGxlcnMnIGFyZ3VtZW50IHRha2luZyBhbgotICBpdGVyYWJsZSBvZiBoYW5kbGVycyB0byBiZSBhZGRlZCB0byB0aGUgcm9vdCBsb2dnZXIuIEFkZGl0aW9uYWwgcGFyYW1ldGVyCi0gIGNoZWNrcyB3ZXJlIGFsc28gYWRkZWQgdG8gYmFzaWNDb25maWcuCi0KLS0gSXNzdWUgIzExODE0OiBGaXggbGlrZWx5IHR5cG8gaW4gbXVsdGlwcm9jZXNzaW5nLlBvb2wuX3Rlcm1pbmF0ZSgpLgotCi0tIElzc3VlICMxMTc0NzogRml4IHJhbmdlIGZvcm1hdHRpbmcgaW4gZGlmZmxpYi5jb250ZXh0X2RpZmYoKSBhbmQKLSAgZGlmZmxpYi51bmlmaWVkX2RpZmYoKS4KLQotLSBJc3N1ZSAjODQyODogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gbXVsdGlwcm9jZXNzaW5nLlBvb2wgd2hlbiB0ZXJtaW5hdGluZwotICB3b3JrZXIgcHJvY2Vzc2VzOiBuZXcgcHJvY2Vzc2VzIHdvdWxkIGJlIHNwYXduZWQgd2hpbGUgdGhlIHBvb2wgaXMgYmVpbmcKLSAgc2h1dCBkb3duLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMyNjUwOiByZS5lc2NhcGUoKSBubyBsb25nZXIgZXNjYXBlcyB0aGUgJ18nLgotCi0tIElzc3VlICMxMTc1Nzogc2VsZWN0LnNlbGVjdCgpIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIGEgbmVnYXRpdmUgdGltZW91dAotICBpcyBwYXNzZWQgKHByZXZpb3VzbHksIGEgc2VsZWN0LmVycm9yIHdpdGggRUlOVkFMIHdvdWxkIGJlIHJhaXNlZCkuICBQYXRjaAotICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzczMTE6IGZpeCBodG1sLnBhcnNlciB0byBhY2NlcHQgbm9uLUFTQ0lJIGF0dHJpYnV0ZSB2YWx1ZXMuCi0KLS0gSXNzdWUgIzExNjA1OiBlbWFpbC5wYXJzZXIuQnl0ZXNGZWVkUGFyc2VyIHdhcyBpbmNvcnJlY3RseSBjb252ZXJ0aW5nCi0gIG11bHRpcGFydCBzdWJwYXJ0cyB3aXRoIGFuIDgtYml0IENURSBpbnRvIHVuaWNvZGUgaW5zdGVhZCBvZiBwcmVzZXJ2aW5nIHRoZQotICBieXRlcy4KLQotLSBJc3N1ZSAjMTY5MDYwODogZW1haWwudXRpbC5mb3JtYXRhZGRyIGlzIG5vdyBSRkMgMjA0NyBhd2FyZTogaXQgbm93IGhhcyBhCi0gIGNoYXJzZXQgcGFyYW1ldGVyIHRoYXQgZGVmYXVsdHMgdG8gdXRmLTggYW5kIGlzIHVzZWQgYXMgdGhlIGNoYXJzZXQgZm9yIFJGQwotICAyMDQ3IGVuY29kaW5nIHdoZW4gdGhlIHJlYWxuYW1lIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxMDk2MzogRW5zdXJlIHRoYXQgc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIG5ldmVyIHJhaXNlcyBFUElQRS4KLQotLSBJc3N1ZSAjMTA3OTE6IEltcGxlbWVudCBtaXNzaW5nIG1ldGhvZCBHemlwRmlsZS5yZWFkMSgpLCBhbGxvd2luZyBHemlwRmlsZQotICB0byBiZSB3cmFwcGVkIGluIGEgVGV4dElPV3JhcHBlci4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTE3MDc6IEFkZGVkIGEgZmFzdCBDIHZlcnNpb24gb2YgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KLSAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjMTE2ODg6IEFkZCBzcWxpdGUzLkNvbm5lY3Rpb24uc2V0X3RyYWNlX2NhbGxiYWNrKCkuICBQYXRjaCBieQotICBUb3JzdGVuIExhbmRzY2hvZmYuCi0KLS0gSXNzdWUgIzExNzQ2OiBGaXggU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSB0byBhY2NlcHQgZWxsaXB0aWMgY3VydmUKLSAgcHJpdmF0ZSBrZXlzLgotCi0tIElzc3VlICM1ODYzOiBSZXdyaXRlIEJaMkZpbGUgaW4gcHVyZSBQeXRob24sIGFuZCBhbGxvdyBpdCB0byBhY2NlcHQKLSAgZmlsZS1saWtlIG9iamVjdHMgdXNpbmcgYSBuZXcgYGBmaWxlb2JqYGAgY29uc3RydWN0b3IgYXJndW1lbnQuICBQYXRjaCBieQotICBOYWRlZW0gVmF3ZGEuCi0KLS0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0U2FtZUVsZW1lbnRzIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiBpbml0ZnNlbmNvZGluZygpIHdhcyBub3QKLSAgY2FsbGVkIHlldDogZGV0ZWN0IGJvb3RzdHJhcCAoc3RhcnR1cCkgaXNzdWVzIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzExMzkzOiBBZGQgdGhlIG5ldyBmYXVsdGhhbmRsZXIgbW9kdWxlLgotCi0tIElzc3VlICMxMTYxODogRml4IHRoZSB0aW1lb3V0IGxvZ2ljIGluIHRocmVhZGluZy5Mb2NrLmFjcXVpcmUoKSB1bmRlciBXaW5kb3dzLgotCi0tIFJlbW92ZWQgdGhlICdzdHJpY3QnIGFyZ3VtZW50IHRvIGVtYWlsLnBhcnNlci5QYXJzZXIsIHdoaWNoIGhhcyBiZWVuCi0gIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDIuNC4KLQotLSBJc3N1ZSAjMTEyNTY6IEZpeCBpbnNwZWN0LmdldGNhbGxhcmdzIG9uIGZ1bmN0aW9ucyB0aGF0IHRha2Ugb25seSBrZXl3b3JkCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTE2OTY6IEZpeCBJRCBnZW5lcmF0aW9uIGluIG1zaWxpYi4KLQotLSBpdGVydG9vbHMuYWNjdW11bGF0ZSBub3cgc3VwcG9ydHMgYW4gb3B0aW9uYWwgKmZ1bmMqIGFyZ3VtZW50IGZvcgotICBhIHVzZXItc3VwcGxpZWQgYmluYXJ5IGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMTY5MjogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlbW8gZnVuY3Rpb25zIGluIHN1YnByb2Nlc3MgbW9kdWxlLgotCi0tIElzc3VlICM5Njk2OiBGaXggZXhjZXB0aW9uIGluY29ycmVjdGx5IHJhaXNlZCBieSB4ZHJsaWIuUGFja2VyLnBhY2tfaW50IHdoZW4KLSAgdHJ5aW5nIHRvIHBhY2sgYSBuZWdhdGl2ZSAoaW4tcmFuZ2UpIGludGVnZXIuCi0KLS0gSXNzdWUgIzExNjc1OiBtdWx0aXByb2Nlc3NpbmcuW1Jhd11BcnJheSBvYmplY3RzIGNyZWF0ZWQgZnJvbSBhbiBpbnRlZ2VyIHNpemUKLSAgYXJlIG5vdyB6ZXJvZWQgb24gY3JlYXRpb24uICBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW91ciBzcGVjaWZpZWQgYnkgdGhlCi0gIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzc2Mzk6IEZpeCBzaG9ydCBmaWxlIG5hbWUgZ2VuZXJhdGlvbiBpbiBiZGlzdF9tc2kKLQotLSBJc3N1ZSAjMTE2MzU6IERvbid0IHVzZSBwb2xsaW5nIGluIHdvcmtlciB0aHJlYWRzIGFuZCBwcm9jZXNzZXMgbGF1bmNoZWQgYnkKLSAgY29uY3VycmVudC5mdXR1cmVzLgotCi0tIElzc3VlICM1ODQ1OiBBdXRvbWF0aWNhbGx5IHJlYWQgcmVhZGxpbmUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgY29tcGxldGlvbgotICBpbiBpbnRlcmFjdGl2ZSBtb2RlLgotCi0tIElzc3VlICM2ODExOiBBbGxvdyBpbXBvcnRsaWIgdG8gY2hhbmdlIGEgY29kZSBvYmplY3QncyBjb19maWxlbmFtZSBhdHRyaWJ1dGUKLSAgdG8gbWF0Y2ggdGhlIHBhdGggdG8gd2hlcmUgdGhlIHNvdXJjZSBjb2RlIGN1cnJlbnRseSBpcywgbm90IHdoZXJlIHRoZSBjb2RlCi0gIG9iamVjdCBvcmlnaW5hbGx5IGNhbWUgZnJvbS4KLQotLSBJc3N1ZSAjODc1NDogSGF2ZSBpbXBvcnRsaWIgdXNlIHRoZSByZXByIG9mIGEgbW9kdWxlIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzExNTkxOiBQcmV2ZW50ICJpbXBvcnQgc2l0ZSIgZnJvbSBtb2RpZnlpbmcgc3lzLnBhdGggd2hlbiBweXRob24KLSAgd2FzIHN0YXJ0ZWQgd2l0aCAtUy4KLQotLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IGFkZHMgYSBfc291cmNlIGF0dHJpYnV0ZSB0byB0aGUgZ2VuZXJhdGVkCi0gIGNsYXNzLiAgVGhpcyBtYWtlIHRoZSBzb3VyY2UgbW9yZSBhY2Nlc3NpYmxlIHRoYW4gdGhlIG91dGRhdGVkCi0gICJ2ZXJib3NlIiBvcHRpb24gd2hpY2ggcHJpbnRzIHRvIHN0ZG91dCBidXQgZG9lc24ndCBtYWtlIHRoZSBzb3VyY2UKLSAgc3RyaW5nIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMTEzNzE6IE1hcmsgZ2V0b3B0IGVycm9yIG1lc3NhZ2VzIGFzIGxvY2FsaXphYmxlLiAgUGF0Y2ggYnkgRmlsaXAKLSAgR3J1c3pjennFhHNraS4KLQotLSBJc3N1ZSAjMTEzMzM6IEFkZCBfX3Nsb3RzX18gdG8gY29sbGVjdGlvbnMgQUJDcy4KLQotLSBJc3N1ZSAjMTE2Mjg6IGNtcF90b19rZXkgZ2VuZXJhdGVkIGNsYXNzIHNob3VsZCB1c2UgX19zbG90c19fLgotCi0tIElzc3VlICMxMTY2NjogbGV0IGhlbHAoKSBkaXNwbGF5IG5hbWVkIHR1cGxlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMKLSAgdGhhdCBzdGFydCB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLgotCi0tIElzc3VlICMxMTY2MjogTWFrZSB1cmxsaWIgYW5kIHVybGxpYjIgaWdub3JlIHJlZGlyZWN0aW9ucyBpZiB0aGUKLSAgc2NoZW1lIGlzIG5vdCBIVFRQLCBIVFRQUyBvciBGVFAgKENWRS0yMDExLTE1MjEpLgotCi0tIElzc3VlICM1NTM3OiBGaXggdGltZTJpc296KCkgYW5kIHRpbWUybmV0c2NhcGUoKSBmdW5jdGlvbnMgb2YKLSAgaHR0cGxpYi5jb29raWVqYXIgZm9yIGV4cGlyYXRpb24geWVhciBncmVhdGVyIHRoYW4gMjAzOCBvbiAzMi1iaXQgc3lzdGVtcy4KLQotLSBJc3N1ZSAjNDM5MTogVXNlIHByb3BlciBnZXR0ZXh0IHBsdXJhbCBmb3JtcyBpbiBvcHRwYXJzZS4KLQotLSBJc3N1ZSAjMTExMjc6IFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIHBpY2tsZSBhIHNvY2tldCBvYmplY3QuCi0KLS0gSXNzdWUgIzExNTYzOiBgYENvbm5lY3Rpb246IGNsb3NlYGAgaGVhZGVyIGlzIHNlbnQgYnkgcmVxdWVzdHMgdXNpbmcgVVJMT3BlbmVyCi0gIGNsYXNzIHdoaWNoIGhlbHBzIGluIGNsb3Npbmcgb2Ygc29ja2V0cyBhZnRlciBjb25uZWN0aW9uIGlzIG92ZXIuIFBhdGNoCi0gIGNvbnRyaWJ1dGlvbnMgYnkgSmVmZiBNY05laWwgYW5kIE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTE0NTk6IEEgYGBidWZzaXplYGAgdmFsdWUgb2YgMCBpbiBzdWJwcm9jZXNzLlBvcGVuKCkgcmVhbGx5IGNyZWF0ZXMKLSAgdW5idWZmZXJlZCBwaXBlcywgc3VjaCB0aGF0IHNlbGVjdCgpIHdvcmtzIHByb3Blcmx5IG9uIHRoZW0uCi0KLS0gSXNzdWUgIzU0MjE6IEZpeCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBvbmUgb2Ygc29ja2V0LnNlbmR0bygpJ3MKLSAgYXJndW1lbnRzIGhhcyB0aGUgd3JvbmcgdHlwZS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCi0KLS0gSXNzdWUgIzEwODEyOiBBZGQgc29tZSBleHRyYSBwb3NpeCBmdW5jdGlvbnMgdG8gdGhlIG9zIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA5Nzk6IHVuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZQotICBzZXR1cCBhbmQgdGVhcmRvd24uCi0KLS0gSXNzdWUgIzExMjQzOiBmaXggdGhlIHBhcmFtZXRlciBxdWVyeWluZyBtZXRob2RzIG9mIE1lc3NhZ2UgdG8gd29yayBpZgotICB0aGUgaGVhZGVycyBjb250YWluIHVuLWVuY29kZWQgbm9uLUFTQ0lJIGRhdGEuCi0KLS0gSXNzdWUgIzExNDAxOiBmaXggaGFuZGxpbmcgb2YgaGVhZGVycyB3aXRoIG5vIHZhbHVlOyB0aGlzIGZpeGVzIGEgcmVncmVzc2lvbgotICByZWxhdGl2ZSB0byBQeXRob24yIGFuZCB0aGUgcmVzdWx0IGlzIG5vdyB0aGUgc2FtZSBhcyBpdCB3YXMgaW4gUHl0aG9uMi4KLQotLSBJc3N1ZSAjOTI5ODogYmFzZTY0IGJvZGllcyB3ZXJlbid0IGJlaW5nIGZvbGRlZCB0byBsaW5lIGxlbmd0aHMgbGVzcyB0aGFuIDc4LAotICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZQotICBvZiB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KLQotLSBJc3N1ZSAjMTE1NjA6IHNodXRpbC51bnBhY2tfYXJjaGl2ZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZvcm1hdAotICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KLQotLSBJc3N1ZSAjNTg3MDogQWRkIGBzdWJwcm9jZXNzLkRFVk5VTExgIGNvbnN0YW50LgotCi0tIElzc3VlICMxMTEzMzogZml4IHR3byBjYXNlcyB3aGVyZSBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGNhbiB0cmlnZ2VyIGNvZGUKLSAgZXhlY3V0aW9uLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzExNTY5OiB1c2UgYWJzb2x1dGUgcGF0aCB0byB0aGUgc3lzY3RsIGNvbW1hbmQgaW4gbXVsdGlwcm9jZXNzaW5nIHRvCi0gIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzCi0gIHRoYXQgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KLQotLSBJc3N1ZSAjMTE1MDE6IGRpc3V0aWxzLmFyY2hpdmVfdXRpbHMubWFrZV96aXBmaWxlIG5vIGxvbmdlciBmYWlscyBpZiB6bGliIGlzCi0gIG5vdCBpbnN0YWxsZWQuIEluc3RlYWQsIHRoZSB6aXBmaWxlLlpJUF9TVE9SRUQgY29tcHJlc3Npb24gaXMgdXNlZCB0byBjcmVhdGUKLSAgdGhlIFppcEZpbGUuIFBhdGNoIGJ5IE5hdGFsaWEgQi4gQmlkYXJ0LgotCi0tIElzc3VlICMxMTI4OTogYHNtdHAuU01UUGAgY2xhc3MgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIHNvIGl0IGNhbiBiZSB1c2VkCi0gIGluIGEgYHdpdGhgIHN0YXRlbWVudC4gIENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEuCi0KLS0gSXNzdWUgIzExNTU0OiBGaXhlZCBzdXBwb3J0IGZvciBKYXBhbmVzZSBjb2RlY3M7IHByZXZpb3VzbHkgdGhlIGJvZHkgb3V0cHV0Ci0gIGVuY29kaW5nIHdhcyBub3QgZG9uZSBpZiBldWMtanAgb3Igc2hpZnQtamlzIHdhcyBzcGVjaWZpZWQgYXMgdGhlIGNoYXJzZXQuCi0KLS0gSXNzdWUgIzExNDA3OiBgVGVzdENhc2UucnVuYCByZXR1cm5zIHRoZSByZXN1bHQgb2JqZWN0IHVzZWQgb3IgY3JlYXRlZC4KLSAgQ29udHJpYnV0ZWQgYnkgSmFuYXRoYW4gSGFydGxleS4KLQotLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBPUyBYIHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQKLSAgSVAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KLQotLSBJc3N1ZSAjMTE0OTE6IGRibS5lcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIHdoZW4gZGJtLm9wZW4gaXMgY2FsbGVkIHdpdGgKLSAgdGhlICJuIiBhcyB0aGUgZmxhZyBhcmd1bWVudCBhbmQgdGhlIGZpbGUgZXhpc3RzLiBUaGUgYmVoYXZpb3IgbWF0Y2hlcwotICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZ2VuZXJhbCBsb2dpYy4KLQotLSBJc3N1ZSAjMTE2MjQ3NzogUG9zdGVsIFByaW5jaXBsZSBhZGp1c3RtZW50IHRvIGVtYWlsIGRhdGUgcGFyc2luZzogaGFuZGxlIHRoZQotICBmYWN0IHRoYXQgc29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyBpbnN0ZWFkIG9mICc6JyBpbiB0aW1lIHNwZWNzLgotCi0tIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBkZWNpbWFsLkRlY2ltYWwgcGx1cyBhbmQgbWludXMKLSAgb3BlcmF0aW9ucyB3aGVuIHRoZSByb3VuZGluZyBtb2RlIGlzIFJPVU5EX0ZMT09SLgotCi0tIElzc3VlICM5OTM1OiBTcGVlZCB1cCBwaWNrbGluZyBvZiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzU2MjI6IEZpeCBjdXJzZXMud3JhcHBlciB0byByYWlzZSBjb3JyZWN0IGV4Y2VwdGlvbiBpZiBjdXJzZXMKLSAgaW5pdGlhbGl6YXRpb24gZmFpbHMuCi0KLS0gSXNzdWUgIzExNDA4OiBJbiB0aHJlYWRpbmcuTG9jay5hY3F1aXJlKCksIG9ubHkgY2FsbCBnZXR0aW1lb2ZkYXkoKSB3aGVuCi0gIHJlYWxseSBuZWNlc3NhcnkuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzExMzkxOiBXcml0aW5nIHRvIGEgbW1hcCBvYmplY3QgY3JlYXRlZCB3aXRoCi0gIGBgbW1hcC5QUk9UX1JFQUR8bW1hcC5QUk9UX0VYRUNgYCB3b3VsZCBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYQotICBUeXBlRXJyb3IuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzk3OTU6IGFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBmb3Igbm50cGxpYi5OTlRQIGNsYXNzLgotCi0tIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbgotICBjZXJ0YWluIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieQotICBjaGVja2luZyBmb3IgRUFDQ0VTLCBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgotCi0tIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycwotICBvbiBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCi0KLS0gSXNzdWUgIzExMzc3OiBEZXByZWNhdGUgcGxhdGZvcm0ucG9wZW4oKSBhbmQgcmVpbXBsZW1lbnQgaXQgd2l0aCBvcy5wb3BlbigpLgotCi0tIElzc3VlICM4NTEzOiBPbiBVTklYLCBzdWJwcm9jZXNzIHN1cHBvcnRzIGJ5dGVzIGNvbW1hbmQgc3RyaW5nLgotCi0tIElzc3VlICMxMDg2NjogQWRkIHNvY2tldC5zZXRob3N0bmFtZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTExNDA6IExvY2sucmVsZWFzZSgpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3Igd2hlbiBhdHRlbXB0aW5nCi0gIHRvIHJlbGVhc2UgYW4gdW5hY3F1aXJlZCBsb2NrLCBhcyBjbGFpbWVkIGluIHRoZSB0aHJlYWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAgVGhlIF90aHJlYWQuZXJyb3IgZXhjZXB0aW9uIGlzIG5vdyBhbiBhbGlhcyBvZiBSdW50aW1lRXJyb3IuICBQYXRjaCBieQotICBGaWxpcCBHcnVzemN6ecWEc2tpLiAgUGF0Y2ggZm9yIF9kdW1teV90aHJlYWQgYnkgQXltZXJpYyBBdWd1c3Rpbi4KLQotLSBJc3N1ZSAjODU5NDogZnRwbGliIG5vdyBwcm92aWRlcyBhIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdoaWNoCi0gIChhZGRyZXNzLCBwb3J0KSB0byBiaW5kIHRvIGJlZm9yZSBjb25uZWN0aW5nLgotCi0tIElzc3VlICMxMTMyNjogQWRkIHRoZSBtaXNzaW5nIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1NMIHNvY2tldHMsCi0gIGFuZCBtYWtlIGl0IHdvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KLQotLSBJc3N1ZSAjMTEyOTc6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCgpLgotCi0tIElzc3VlICMxMDc1NTogQWRkIHRoZSBwb3NpeC5mbGlzdGRpcigpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzQ3NjE6IEFkZCB0aGUgYGAqYXQoKWBgIGZhbWlseSBvZiBmdW5jdGlvbnMgKG9wZW5hdCgpLCBldGMuKSB0byB0aGUKLSAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzczMjI6IFRyeWluZyB0byByZWFkIGZyb20gYSBzb2NrZXQncyBmaWxlLWxpa2Ugb2JqZWN0IGFmdGVyIGEgdGltZW91dAotICBvY2N1cnJlZCBub3cgcmFpc2VzIGFuIGVycm9yIGluc3RlYWQgb2Ygc2lsZW50bHkgbG9zaW5nIGRhdGEuCi0KLS0gSXNzdWUgIzExMjkxOiBwb3BsaWIuUE9QIG5vIGxvbmdlciBzdXBwcmVzc2VzIGVycm9ycyBvbiBxdWl0KCkuCi0KLS0gSXNzdWUgIzExMTc3OiBhc3luY29yZSdzIGNyZWF0ZV9zb2NrZXQoKSBhcmd1bWVudHMgY2FuIG5vdyBiZSBvbWl0dGVkLgotCi0tIElzc3VlICM2MDY0OiBBZGQgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHRocmVhZGluZy5UaHJlYWQKLSAgYW5kIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzIGNvbnN0cnVjdG9ycyBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKLSAgZGVmYXVsdCBiZWhhdmlvdXIgb2YgaW5oZXJpdGluZyB0aGUgZGFlbW9uaWMgcHJvcGVydHkgZnJvbSB0aGUgY3VycmVudAotICB0aHJlYWQvcHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTA5NTY6IEJ1ZmZlcmVkIEkvTyBjbGFzc2VzIHJldHJ5IHJlYWRpbmcgb3Igd3JpdGluZyBhZnRlciBhIHNpZ25hbAotICBoYXMgYXJyaXZlZCBhbmQgdGhlIGhhbmRsZXIgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LgotCi0tIElzc3VlICMxMDc4NDogTmV3IG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxMTExNDogRml4IGNhdGFzdHJvcGhpYyBwZXJmb3JtYW5jZSBvZiB0ZWxsKCkgb24gdGV4dCBmaWxlcyAodXAKLSAgdG8gMTAwMHggZmFzdGVyIGluIHNvbWUgY2FzZXMpLiAgSXQgaXMgc3RpbGwgb25lIHRvIHR3byBvcmRlciBvZiBtYWduaXR1ZGVzCi0gIHNsb3dlciB0aGFuIGJpbmFyeSB0ZWxsKCkuCi0KLS0gSXNzdWUgIzEwODgyOiBBZGQgb3Muc2VuZGZpbGUgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzEwODY4OiBBbGxvdyB1c2FnZSBvZiB0aGUgcmVnaXN0ZXIgbWV0aG9kIG9mIGFuIEFCQyBhcyBhIGNsYXNzCi0gIGRlY29yYXRvci4KLQotLSBJc3N1ZSAjMTEyMjQ6IEZpeGVkIGEgcmVncmVzc2lvbiBpbiB0YXJmaWxlIHRoYXQgYWZmZWN0ZWQgdGhlIGZpbGUtbGlrZQotICBvYmplY3RzIHJldHVybmVkIGJ5IFRhckZpbGUuZXh0cmFjdGZpbGUoKSByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIG1lbW9yeQotICBjb25zdW1wdGlvbiBhbmQgZmFpbHVyZXMgd2l0aCB0aGUgc3RyZWFtIGludGVyZmFjZS4KLQotLSBJc3N1ZSAjMTA5MjQ6IEFkZGluZyBzYWx0IGFuZCBNb2R1bGFyIENyeXB0IEZvcm1hdCB0byBjcnlwdCBsaWJyYXJ5LgotICBNb3ZlZCBvbGQgQyB3cmFwcGVyIHRvIF9jcnlwdCwgYW5kIGFkZGVkIGEgUHl0aG9uIHdyYXBwZXIgd2l0aAotICBlbmhhbmNlZCBzYWx0IGdlbmVyYXRpb24gYW5kIHNpbXBsZXIgQVBJIGZvciBwYXNzd29yZCBnZW5lcmF0aW9uLgotCi0tIElzc3VlICMxMTA3NDogTWFrZSAndG9rZW5pemUnIHNvIGl0IGNhbiBiZSByZWxvYWRlZC4KLQotLSBJc3N1ZSAjMTEwODU6IE1vdmVkIGNvbGxlY3Rpb25zIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnRvIGEgc2VwYXJhdGUKLSAgbW9kdWxlIGNhbGxlZCBjb2xsZWN0aW9ucy5hYmMsIGZvbGxvd2luZyB0aGUgcGF0dGVybiB1c2VkIGJ5IGltcG9ydGxpYi5hYmMuCi0gIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjb2xsZWN0aW9ucwotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzQ2ODE6IEFsbG93IG1tYXAoKSB0byB3b3JrIG9uIGZpbGUgc2l6ZXMgYW5kIG9mZnNldHMgbGFyZ2VyIHRoYW4KLSAgNEdCLCBldmVuIG9uIDMyLWJpdCBidWlsZHMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLCBhZGFwdGVkIGZvcgotICAzMi1iaXQgV2luZG93cy4KLQotLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCi0gIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCi0KLS0gSXNzdWUgIzExMDg5OiBGaXggcGVyZm9ybWFuY2UgaXNzdWUgbGltaXRpbmcgdGhlIHVzZSBvZiBDb25maWdQYXJzZXIoKQotICB3aXRoIGxhcmdlIGNvbmZpZyBmaWxlcy4KLQotLSBJc3N1ZSAjMTAyNzY6IEZpeCB0aGUgcmVzdWx0cyBvZiB6bGliLmNyYzMyKCkgYW5kIHpsaWIuYWRsZXIzMigpIG9uIGJ1ZmZlcnMKLSAgbGFyZ2VyIHRoYW4gNEdCLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTM4ODogQWRkZWQgYSBjbGVhcigpIG1ldGhvZCB0byBNdXRhYmxlU2VxdWVuY2UKLQotLSBJc3N1ZSAjMTExNzQ6IEFkZCBhcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIsIHdoaWNoIHVzZXMgdHlwZSBuYW1lcwotICBmb3IgdGhlIG5hbWVzIG9mIG9wdGlvbmFsIGFuZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbiBoZWxwIG1lc3NhZ2VzLgotCi0tIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KLQotLSBJc3N1ZSAjOTAyNjogRml4IG9yZGVyIG9mIGFyZ3BhcnNlIHN1Yi1jb21tYW5kcyBpbiBoZWxwIG1lc3NhZ2VzLgotCi0tIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgotCi0tIElzc3VlICMxMjE5MTogQWRkZWQgc2h1dGlsLmNob3duKCkgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG93bmVyIG9mIGEKLSAgZ2l2ZW4gcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlaXIgbmFtZXMuCi0KLS0gSXNzdWUgIzEzOTg4OiBUaGUgX2VsZW1lbnR0cmVlIGFjY2VsZXJhdG9yIGlzIHVzZWQgd2hlbmV2ZXIgYXZhaWxhYmxlLgotICBOb3cgeG1sLmV0cmVlLmNFbGVtZW50VHJlZSBiZWNvbWVzIGEgZGVwcmVjYXRlZCBhbGlhcyB0byBFbGVtZW50VHJlZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgotCi0tIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCi0KLS0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KLQotLSBQRVAgMzkzOiB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2lkZS11bmljb2RlIGlzIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzEyODUyOiBTZXQgX1hPUEVOX1NPVVJDRSB0byA3MDAsIGluc3RlYWQgb2YgNjAwLCB0byBnZXQgUE9TSVggMjAwOAotICBmdW5jdGlvbnMgb24gT3BlbkJTRCAoZS5nLiBmZG9wZW5kaXIpLgotCi0tIElzc3VlICMxMTg2MzogUmVtb3ZlIHN1cHBvcnQgZm9yIGxlZ2FjeSBzeXN0ZW1zIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMgotICAoZm9sbG93aW5nIFBFUCAxMSkuICBUaGVzZSBzeXN0ZW1zIGFyZSBzeXN0ZW1zIHVzaW5nIE1hY2ggQyBUaHJlYWRzLAotICBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMsIEdOVSBwdGggdGhyZWFkcyBhbmQgSVJJWCB0aHJlYWRzLgotCi0tIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAotICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlCi0gIGZ1bmN0aW9ucyAoQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFgKLSAgKFVGX0hJRERFTiBhbmQgVUZfQ09NUFJFU1NFRCkuCi0KLS0gSXNzdWUgIzEwNjQ1OiBJbnN0YWxsaW5nIFB5dGhvbiBubyBsb25nZXIgY3JlYXRlcyBhCi0gIFB5dGhvbi1YLlkuWi1weVguWS5lZ2ctaW5mbyBmaWxlIGluIHRoZSBsaWItZHlubG9hZCBkaXJlY3RvcnkuCi0KLS0gRG8gbm90IGFjY2lkZW50YWxseSBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBzcWxpdGUuaCB0d2ljZSB3aGVuCi0gIGJ1aWxkaW5nIHNxbGl0ZTMuCi0KLS0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywKLSAgZW5zdXJlICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIKLSAgZmlsZXMgaW4gdGhlIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgotCi0tIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgotCi0tIElzc3VlICMxMTQxMTogRml4ICdtYWtlIERFU1RESVI9JyB3aXRoIGEgcmVsYXRpdmUgZGVzdGluYXRpb24uCi0KLS0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24KLSAgcGFja2FnZSBoYWQgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTE0OTU6IE9TRiBzdXBwb3J0IGlzIGVsaW1pbmF0ZWQuIEl0IHdhcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQotLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBweXRob24gLW0gaWRsZWxpYgotCi0tIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCi0gIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpIChQYXRjaCBieSBHdWlsaGVybWUgUG9sbykKLQotLSBJc3N1ZSAjMTQyMDA6IElETEUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQotLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgotICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAotICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKLQotLSBJc3N1ZSAjMTM1MDY6IEFkZCAnJyB0byBwYXRoIGZvciBJRExFIFNoZWxsIHdoZW4gc3RhcnRlZCBhbmQgcmVzdGFydGVkIHdpdGggUmVzdGFydCBTaGVsbC4KLSAgT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjNDYyNTogSWYgSURMRSBjYW5ub3Qgd3JpdGUgdG8gaXRzIHJlY2VudCBmaWxlIG9yIGJyZWFrcG9pbnQgZmlsZXMsCi0gIGRpc3BsYXkgYSBtZXNzYWdlIHBvcHVwIGFuZCBjb250aW51ZSByYXRoZXIgdGhhbiBjcmFzaC4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICM4NjQxOiBVcGRhdGUgSURMRSAzIHN5bnRheCBjb2xvcmluZyB0byByZWNvZ25pemUgYiIuLiIgYW5kIG5vdCB1Ii4uIi4KLSAgUGF0Y2ggYnkgVGFsIEVpbmF0LgotCi0tIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCi0gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKLQotLSBJc3N1ZSAjOTg3MTogUHJldmVudCBJRExFIDMgY3Jhc2ggd2hlbiBnaXZlbiBieXRlIHN0aW5ncwotICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgotICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKLQotLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgotCi0tIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcwotICBpbiBvcy5raWxsKCkuCi0KLS0gSXNzdWUgIzEyNTkwOiBJRExFIGVkaXRvciB3aW5kb3cgbm93IGFsd2F5cyBkaXNwbGF5cyB0aGUgZmlyc3QgbGluZQotICB3aGVuIG9wZW5pbmcgYSBsb25nIGZpbGUuICBXaXRoIFRrIDguNSwgdGhlIGZpcnN0IGxpbmUgd2FzIGhpZGRlbi4KLQotLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCi0gIHdpdGggVGsgOC41LgotCi0tIElzc3VlICMxMDI4OiBUayByZXR1cm5zIGludmFsaWQgVW5pY29kZSBudWxsIGluICVBOiBVbmljb2RlRGVjb2RlRXJyb3IuCi0gIFdpdGggVGsgPCA4LjUgX3RraW50ZXIuYzpQeXRob25DbWQoKSByYWlzZWQgVW5pY29kZURlY29kZUVycm9yLCBjYXVzZWQKLSAgSURMRSB0byBleGl0LiAgQ29udmVydGVkIHRvIHZhbGlkIFVuaWNvZGUgbnVsbCBpbiBQeXRob25DbWQoKS4KLQotLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKLSAgZmlsZSBpbiBhIHBhY2thZ2UuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNDA1MzogcGF0Y2hjaGVjay5weSAoIm1ha2UgcGF0Y2hjaGVjayIpIG5vdyB3b3JrcyB3aXRoIE1RIHBhdGNoZXMuCi0gIFBhdGNoIGJ5IEZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCi0KLS0gSXNzdWUgIzEzOTMwOiAydG8zIGlzIG5vdyBhYmxlIHRvIHdyaXRlIGl0cyBjb252ZXJ0ZWQgb3V0cHV0IGZpbGVzIHRvIGFub3RoZXIKLSAgZGlyZWN0b3J5IHRyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUKLSAgc3VmZml4LiAgU2VlIGl0cyBuZXcgLW8sIC1XIGFuZCAtLWFkZC1zdWZmaXggb3B0aW9ucy4gIFRoaXMgbWFrZXMgaXQgbW9yZQotICB1c2VmdWwgaW4gbWFueSBhdXRvbWF0ZWQgY29kZSB0cmFuc2xhdGlvbiB3b3JrZmxvd3MuCi0KLS0gSXNzdWUgIzEzNjI4OiBweXRob24tZ2RiLnB5IGlzIG5vdyBhYmxlIHRvIHJldHJpZXZlIG1vcmUgZnJhbWVzIGluIHRoZSBQeXRob24KLSAgdHJhY2ViYWNrIGlmIFB5dGhvbiBpcyBvcHRpbWl6ZWQuCi0KLS0gSXNzdWUgIzExOTk2OiBsaWJweXRob24gKGdkYiksIHJlcGxhY2UgInB5LWJ0IiBjb21tYW5kIGJ5ICJweS1idC1mdWxsIiBhbmQKLSAgYWRkIGEgc21hcnRlciAicHktYnQiIGNvbW1hbmQgcHJpbnRpbmcgYSBjbGFzc2ljIFB5dGhvbiB0cmFjZWJhY2suCi0KLS0gSXNzdWUgIzExMTc5OiBNYWtlIGNjYmVuY2ggd29yayB1bmRlciBQeXRob24gMy4xIGFuZCAyLjcgYWdhaW4uCi0KLS0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKLSAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgotICAiLS1uZXdsaW5lIiBvcHRpb24gYWRkZWQgdG8gc3BlY2lmeSBuZXcgbGluZSBjaGFyYWN0ZXIuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNjg0NzogRml4ZWQgaW1wcm9wZXIgdXNlIG9mIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgpIGluCi0gIG5vbi1weWRlYnVnIGJ1aWxkcy4gU2V2ZXJhbCBleHRlbnNpb24gbW9kdWxlcyBub3cgY29tcGlsZSBjbGVhbmx5IHdoZW4KLSAgYXNzZXJ0KClzIGFyZSBlbmFibGVkIGluIHN0YW5kYXJkIGJ1aWxkcyAoLURERUJVRyBmbGFnKS4KLQotLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgotICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzk5NzU6IHNvY2tldDogRml4IGluY29ycmVjdCB1c2Ugb2YgZmxvd2luZm8gYW5kIHNjb3BlX2lkLiBQYXRjaCBieQotICBWaWxtb3MgTmViZWhhai4KLQotLSBJc3N1ZSAjNzc3Nzogc29ja2V0OiBBZGQgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAoUEZfUkRTKSBzdXBwb3J0LgotCi0tIElzc3VlICMxMzE1OTogRmlsZUlPIGFuZCBCWjJDb21wcmVzc29yL0JaMkRlY29tcHJlc3NvciBub3cgdXNlIGEgbGluZWFyLXRpbWUKLSAgYnVmZmVyIGdyb3d0aCBzdHJhdGVneSBpbnN0ZWFkIG9mIGEgcXVhZHJhdGljLXRpbWUgb25lLgotCi0tIElzc3VlICMxMDE0MTogc29ja2V0OiBBZGQgU29ja2V0Q0FOIChQRl9DQU4pIHN1cHBvcnQuIEluaXRpYWwgcGF0Y2ggYnkKLSAgTWF0dGhpYXMgRnVjaHMsIHVwZGF0ZWQgYnkgVGlhZ28gR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTMwNzA6IEZpeCBhIGNyYXNoIHdoZW4gYSBUZXh0SU9XcmFwcGVyIGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZQotICB3b3VsZCBiZSBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSB0byBpdHMgdW5kZXJseWluZyBCdWZmZXJlZFJXUGFpcidzCi0gIHdyaXRlciBnb3QgY2xlYXJlZCBieSB0aGUgR0MuCi0KLS0gSXNzdWUgIzEyODgxOiBjdHlwZXM6IEZpeCBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcy4KLQotLSBJc3N1ZSAjMTMwNTg6IG9zc2F1ZGlvZGV2OiBmaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBvbiBlcnJvci4gUGF0Y2ggYnkKLSAgVGhvbWFzIEphcm9zY2guCi0KLS0gSXNzdWUgIzEzMDEzOiBjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLgotICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTMwMjI6IEZpeDogX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoKSBkb2Vzbid0IGNoZWNrIHRoYXQKLSAgZmlsZSBkZXNjcmlwdG9yIHdhcyBhY3R1YWxseSByZWNlaXZlZC4KLQotLSBJc3N1ZSAjMTE3MjcxMTogQWRkICdsb25nIGxvbmcnIHN1cHBvcnQgdG8gdGhlIGFycmF5IG1vZHVsZS4KLSAgSW5pdGlhbCBwYXRjaCBieSBPcmVuIFRpcm9zaCBhbmQgSGlyb2thenUgWWFtYW1vdG8uCi0KLS0gSXNzdWUgIzEyNDgzOiBjdHlwZXM6IEZpeCBhIGNyYXNoIHdoZW4gdGhlIGRlc3RydWN0aW9uIG9mIGEgY2FsbGJhY2sKLSAgb2JqZWN0IHRyaWdnZXJzIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KLQotLSBJc3N1ZSAjMTI5NTA6IEZpeCBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvcnMgaW4gbXVsdGlwcm9jZXNzaW5nLCB1bmRlcgotICBPcGVuSW5kaWFuYS9JbGx1bW9zLgotCi0tIElzc3VlICMxMjc2NDogRml4IGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gdGhlIG5hbWUgb2YgYSBTdHJ1Y3R1cmUgZmllbGQgaXMgbm90Ci0gIGEgc3RyaW5nLgotCi0tIElzc3VlICMxMTI0MTogc3ViY2xhc3NlcyBvZiBjdHlwZXMuQXJyYXkgY2FuIG5vdyBiZSBzdWJjbGFzc2VkLgotCi0tIElzc3VlICM5NjUxOiBGaXggYSBjcmFzaCB3aGVuIGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcigwKSB3YXMgcGFzc2VkIHRvCi0gIHNvbWUgZnVuY3Rpb25zIGxpa2UgZmlsZS53cml0ZSgpLgotCi0tIElzc3VlICMxMDMwOTogRGVmaW5lIF9HTlVfU09VUkNFIHNvIHRoYXQgbXJlbWFwKCkgZ2V0cyB0aGUgcHJvcGVyCi0gIHNpZ25hdHVyZS4gIFdpdGhvdXQgdGhpcywgYXJjaGl0ZWN0dXJlcyB3aGVyZSBzaXplb2Ygdm9pZCogIT0gc2l6ZW9mIGludCBhcmUKLSAgYnJva2VuLiAgUGF0Y2ggZ2l2ZW4gYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTIwNTE6IEZpeCBzZWdmYXVsdCBpbiBqc29uLmR1bXBzKCkgd2hpbGUgZW5jb2RpbmcgaGlnaGx5LW5lc3RlZAotICBvYmplY3RzIHVzaW5nIHRoZSBDIGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzEyMDE3OiBGaXggc2VnZmF1bHQgaW4ganNvbi5sb2FkcygpIHdoaWxlIGRlY29kaW5nIGhpZ2hseS1uZXN0ZWQKLSAgb2JqZWN0cyB1c2luZyB0aGUgQyBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxODM4OiBQcmV2ZW50IHNlZ2ZhdWx0IGluIGN0eXBlcywgd2hlbiBfYXNfcGFyYW1ldGVyXyBvbiBhIGNsYXNzIGlzIHNldAotICB0byBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMzEyNTogU2lsZW5jZSBzcHVyaW91cyB0ZXN0X2xpYjJ0bzMgb3V0cHV0IHdoZW4gaW4gbm9uLXZlcmJvc2UgbW9kZS4KLSAgUGF0Y2ggYnkgTWlraGFpbCBOb3Zpa292LgotCi0tIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKLSAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxMDg4MTogRml4IHRlc3Rfc2l0ZSBmYWlsdXJlIHdpdGggT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgotCi0tIElzc3VlICMxMzkwMTogUHJldmVudCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlcyBvbiBPUyBYIHdpdGggLS1lbmFibGUtc2hhcmVkLgotCi0tIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQotICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCi0KLS0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKLSAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCi0KLS0gSXNzdWUgIzEzNzI2OiBGaXggdGhlIGFtYmlndW91cyAtUyBmbGFnIGluIHJlZ3J0ZXN0LiBJdCBpcyAtby8tLXNsb3cgZm9yIHNsb3cKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzExNjU5OiBGaXggUmVzb3VyY2VXYXJuaW5nIGluIHRlc3Rfc3VicHJvY2VzcyBpbnRyb2R1Y2VkIGJ5ICMxMTQ1OS4KLSAgUGF0Y2ggYnkgQmVuIEhheWRlbi4KLQotLSBJc3N1ZSAjMTE1Nzc6IGZpeCBSZXNvdXJjZVdhcm5pbmcgdHJpZ2dlcmVkIGJ5IGltcHJvdmVkIGJpbmhleCB0ZXN0IGNvdmVyYWdlCi0KLS0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgotICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCi0KLS0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdAotCi0tIElzc3VlICMxMzc4NjogUmVtb3ZlIHVuaW1wbGVtZW50ZWQgJ3RyYWNlJyBsb25nIG9wdGlvbiBmcm9tIHJlZ3J0ZXN0LnB5LgotCi0tIElzc3VlICMxMzcyNTogRml4IHJlZ3J0ZXN0IHRvIHJlY29nbml6ZSB0aGUgZG9jdW1lbnRlZCAtZCBmbGFnLgotICBQYXRjaCBieSBFcm5vIFR1a2lhLgotCi0tIElzc3VlICMxMzMwNDogU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvcgotICBQWVRIT05OT1VTRVJTSVRFKS4gIChQYXRjaCBieSBDYXJsIE1leWVyKQotCi0tIElzc3VlICM1NjYxOiBBZGQgYSB0ZXN0IGZvciBFQ09OTlJFU0VUL0VQSVBFIGhhbmRsaW5nIHRvIHRlc3RfYXN5bmNvcmUuIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxMzIxODogRml4IHRlc3Rfc3NsIGZhaWx1cmVzIG9uIERlYmlhbi9VYnVudHUuCi0KLS0gUmUtZW5hYmxlIGxpYjJ0bzMncyB0ZXN0X3BhcnNlci5weSB0ZXN0cywgdGhvdWdoIHdpdGggYW4gZXhwZWN0ZWQgZmFpbHVyZQotICAoc2VlIGlzc3VlICMxMzEyNSkuCi0KLS0gSXNzdWUgIzEyNjU2OiBBZGQgdGVzdHMgZm9yIElQdjYgYW5kIFVuaXggc29ja2V0cyB0byB0ZXN0X2FzeW5jb3JlLgotCi0tIElzc3VlICM2NDg0OiBBZGQgdW5pdCB0ZXN0cyBmb3IgbWFpbGNhcCBtb2R1bGUgKHBhdGNoIGJ5IEdyZWdvcnkgTm9maSkKLQotLSBJc3N1ZSAjMTE2NTE6IEltcHJvdmUgdGhlIE1ha2VmaWxlIHRlc3QgdGFyZ2V0cyB0byBydW4gbW9yZSBvZiB0aGUgdGVzdCBzdWl0ZQotICBtb3JlIHF1aWNrbHkuIFRoZSAtLW11bHRpcHJvY2VzcyBvcHRpb24gaXMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgcmVkdWNpbmcKLSAgdGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHRlc3RzLiAibWFrZSB0ZXN0IiBhbmQgIm1ha2UgcXVpY2t0ZXN0IgotICBub3cgaW5jbHVkZSBzb21lIHJlc291cmNlLWludGVuc2l2ZSB0ZXN0cywgYnV0IG5vIGxvbmdlciBydW4gdGhlIHRlc3Qgc3VpdGUKLSAgdHdpY2UgdG8gY2hlY2sgZm9yIGJ1Z3MgaW4gLnB5YyBnZW5lcmF0aW9uLiBUb29scy9zY3JpcHRzL3J1bl90ZXN0LnB5IHByb3ZpZGVzCi0gIGFuIGVhc3kgcGxhdGZvcm0taW5kZXBlbmRlbnQgd2F5IHRvIHJ1biB0ZXN0IHN1aXRlIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCi0KLS0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHBhY2thZ2luZyBtb2R1bGUgY2FuIG5vdyBydW4gZnJvbSBhbgotICBpbnN0YWxsZWQgUHl0aG9uLgotCi0tIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIGxpYjJ0bzMgY2FuIG5vdyBydW4gZnJvbSBhbiBpbnN0YWxsZWQKLSAgUHl0aG9uLgotCi0tIElzc3VlICMxMjYyNjogSW4gcmVncnRlc3QsIGFsbG93IHRvIGZpbHRlciB0ZXN0cyB1c2luZyBhIGdsb2IgZmlsdGVyCi0gIHdpdGggdGhlIGBgLW1gYCAob3IgYGAtLW1hdGNoYGApIG9wdGlvbi4gIFRoaXMgd29ya3Mgd2l0aCBhbGwgdGVzdCBjYXNlcwotICB1c2luZyB0aGUgdW5pdHRlc3QgbW9kdWxlLiAgVGhpcyBpcyB1c2VmdWwgd2l0aCBsb25nIHRlc3Qgc3VpdGVzCi0gIHN1Y2ggYXMgdGVzdF9pbyBvciB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzEyNjI0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gZmFpbCBhZnRlciB0aGUgZmlyc3QgZmFpbHVyZSB3aGVuCi0gIHJ1bm5pbmcgaW4gdmVyYm9zZSBtb2RlIChgYC12YGAgb3IgYGAtV2BgKSwgYnkgdXNpbmcgdGhlIGBgLS1mYWlsZmFzdGBgCi0gIChvciBgYC1HYGApIG9wdGlvbiB0byByZWdydGVzdC4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjU4NzogQ29ycmVjdCBmYXVsdHkgdGVzdCBmaWxlIGFuZCByZWZlcmVuY2UgaW4gdGVzdF90b2tlbml6ZS4KLSAgKFBhdGNoIGJ5IFJvYmVydCBYaWFvKQotCi0tIElzc3VlICMxMjU3MzogQWRkIHJlc291cmNlIGNoZWNrcyBmb3IgZGFuZ2xpbmcgVGhyZWFkIGFuZCBQcm9jZXNzIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKLSAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCi0KLS0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQotICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KLQotLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCi0gIGluIHRlc3RfdGVsbmV0bGliLnB5LgotCi0tIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKLSAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKLSAgV2ViIHNpdGUuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cwotICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0Ci0gIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCi0KLS0gSXNzdWUgIzEyNDQwOiBXaGVuIHRlc3Rpbmcgd2hldGhlciBzb21lIGJpdHMgaW4gU1NMQ29udGV4dC5vcHRpb25zIGNhbiBiZQotICByZXNldCwgY2hlY2sgdGhlIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgaGVhZGVycyBQeXRob24gd2FzIGNvbXBpbGVkIGFnYWluc3QsCi0gIHJhdGhlciB0aGFuIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIE9wZW5TU0wgbGlicmFyeS4KLQotLSBJc3N1ZSAjMTE1MTI6IEFkZCBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBjZ2l0YiBtb2R1bGUuIFBhdGNoIGJ5IFJvYmJpZSBDbGVtb25zLgotCi0tIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKLSAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KLQotLSBJc3N1ZSAjMTI0Njk6IFJ1biB3YWtldXAgYW5kIHBlbmRpbmcgc2lnbmFsIHRlc3RzIGluIGEgc3VicHJvY2VzcyB0byBydW4gdGhlCi0gIHRlc3QgaW4gYSBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbAotICBoYW5kbGluZyBvZiB0aGUgcGFyZW50IHByb2Nlc3MuCi0KLS0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KLSAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAotICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgotCi0tIElzc3VlICMxMjQwNzogRXhwbGljaXRseSBza2lwIHRlc3RfY2FwaS5FbWJlZGRpbmdUZXN0IHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEyNDAwOiByZWdydGVzdCAtVyBkb2Vzbid0IHJlcnVuIHRoZSB0ZXN0cyB0d2ljZSBhbnltb3JlLCBidXQgY2FwdHVyZXMKLSAgdGhlIG91dHB1dCBhbmQgZGlzcGxheXMgaXQgb24gZmFpbHVyZSBpbnN0ZWFkLiByZWdydGVzdCAtdiBkb2Vzbid0IHByaW50IHRoZQotICBlcnJvciB0d2ljZSBhbnltb3JlIGlmIHRoZXJlIGlzIG9ubHkgb25lIGVycm9yLgotCi0tIElzc3VlICMxMjE0MTogSW5zdGFsbCBjb3BpZXMgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0Ci0gIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2NvbW1hbmRfYnVpbGRfZXh0IG9mCi0gIHRlc3RfcGFja2FnaW5nIGFyZSBubyBsb25nZXIgc2lsZW50bHkgc2tpcHBlZCB3aGVuCi0gIHJ1biBvdXRzaWRlIG9mIGEgYnVpbGQgZGlyZWN0b3J5LgotCi0tIElzc3VlICM4NzQ2OiBBZGQgYWRkaXRpb25hbCB0ZXN0cyBmb3Igb3MuY2hmbGFncygpIGFuZCBvcy5sY2hmbGFncygpLgotICBQYXRjaCBieSBHYXJyZXR0IENvb3Blci4KLQotLSBJc3N1ZSAjMTA3MzY6IEZpeCB0ZXN0X3R0ayB0ZXN0X3dpZGdldHMgZmFpbHVyZXMgd2l0aCBDb2NvYSBUayA4LjUuOQotICAyLjgrIG9uIE1hYyBPUyBYLiAgKFBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKLQotLSBJc3N1ZSAjMTIwNTc6IEFkZCB0ZXN0cyBmb3IgSVNPIDIwMjIgY29kZWNzIChpc28yMDIyX2pwLCBpc28yMDIyX2pwXzIsCi0gIGlzbzIwMjJfa3IpLgotCi0tIElzc3VlICMxMjA5NjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGVzdF90aHJlYWRpbmcudGVzdF93YWl0Zm9yKCkuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTYxNDogaW1wb3J0IF9faGVsbG9fXyBwcmludHMgIkhlbGxvIFdvcmxkISIuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICM1NzIzOiBJbXByb3ZlIGpzb24gdGVzdHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxMjA0MTogTWFrZSB0ZXN0X3dhaXQzIG1vcmUgcm9idXN0LgotCi0tIElzc3VlICMxMTg3MzogQ2hhbmdlIHJlZ2V4IGluIHRlc3RfY29tcGlsZWFsbCB0byBmaXggb2NjYXNpb25hbCBmYWlsdXJlcyB3aGVuCi0gIHdoZW4gdGhlIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZW1wb3JhcnkgcGF0aCBoYXBwZW5lZCB0byBtYXRjaCB0aGUgcmVnZXguCi0KLS0gSXNzdWUgIzExOTU4OiBGaXggRlRQIHRlc3RzIGZvciBJUHY2LCBiaW5kIHRvICI6OjEiIGluc3RlYWQgb2YgImxvY2FsaG9zdCIuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzg0MDcsICMxMTg1OTogRml4IHRlc3RzIG9mIHRlc3RfaW8gdXNpbmcgdGhyZWFkcyBhbmQgYW4gYWxhcm06IHVzZQotICBwdGhyZWFkX3NpZ21hc2soKSB0byBlbnN1cmUgdGhhdCB0aGUgU0lHQUxSTSBzaWduYWwgaXMgcmVjZWl2ZWQgYnkgdGhlIG1haW4KLSAgdGhyZWFkLgotCi0tIElzc3VlICMxMTgxMTogRmFjdG9yIG91dCBkZXRlY3Rpb24gb2YgSVB2NiBzdXBwb3J0IG9uIHRoZSBjdXJyZW50IGhvc3QKLSAgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIGFzIGBgdGVzdC5zdXBwb3J0LklQVjZfRU5BQkxFRGBgLiAgUGF0Y2ggYnkKLSAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMDkxNDogQWRkIGEgbWluaW1hbCBlbWJlZGRpbmcgdGVzdCB0byB0ZXN0X2NhcGkuCi0KLS0gSXNzdWUgIzExMjIzOiBTa2lwIHRlc3RfbG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIGFuZAotICB0ZXN0X3Jsb2NrX2FjcXVpcmVfaW50ZXJydXB0aW9uKCkgb2YgdGVzdF90aHJlYWRzaWduYWxzIGlmIGEgdGhyZWFkIGxvY2sgaXMKLSAgaW1wbGVtZW50ZWQgdXNpbmcgYSBQT1NJWCBtdXRleCBhbmQgYSBQT1NJWCBjb25kaXRpb24gdmFyaWFibGUuIEEgUE9TSVgKLSAgY29uZGl0aW9uIHZhcmlhYmxlIGNhbm5vdCBiZSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoZS5nLiBvbiBMaW51eCwgdGhlCi0gIGZ1dGV4IHN5c3RlbSBjYWxsIGlzIHJlc3RhcnRlZCkuCi0KLS0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCi0KLS0gRml4IHBvc3NpYmxlICJmaWxlIGFscmVhZHkgZXhpc3RzIiBlcnJvciB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzIGluIHBhcmFsbGVsLgotCi0tIElzc3VlICMxMTcxOTogRml4IG1lc3NhZ2UgYWJvdXQgdW5leHBlY3RlZCB0ZXN0X21zaWxpYiBza2lwIG9uIG5vbi1XaW5kb3dzCi0gIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgotCi0tIElzc3VlICMxMTcyNzogQWRkIGEgLS10aW1lb3V0IG9wdGlvbiB0byByZWdydGVzdDogaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgotICBUSU1FT1VUIHNlY29uZHMsIGR1bXBzIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgYW5kIGV4aXRzLgotCi0tIElzc3VlICMxMTY1MzogZml4IC1XIHdpdGggLWogaW4gcmVncnRlc3QuCi0KLS0gVGhlIGVtYWlsIHRlc3Qgc3VpdGUgbm93IGxpdmVzIGluIHRoZSBMaWIvdGVzdC90ZXN0X2VtYWlsIHBhY2thZ2UuICBUaGUgdGVzdAotICBoYXJuZXNzIGNvZGUgaGFzIGFsc28gYmVlbiBtb2Rlcm5pemVkIHRvIGFsbG93IHVzZSBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMuCi0KLS0gcmVncnRlc3Qgbm93IGRpc2NvdmVycyB0ZXN0IHBhY2thZ2VzIGFzIHdlbGwgYXMgdGVzdCBtb2R1bGVzLgotCi0tIElzc3VlICMxMTU3NzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIGJpbmhleC5weS4gUGF0Y2ggYnkgQXJrYWR5IEtvcGx5YXJvdi4KLQotLSBOZXcgdGVzdF9jcmFzaGVycyBhZGRlZCB0byBleGVyY2lzZSB0aGUgc2NyaXB0cyBpbiB0aGUgTGliL3Rlc3QvY3Jhc2hlcnMKLSAgZGlyZWN0b3J5IGFuZCBjb25maXJtIHRoZXkgZmFpbCBhcyBleHBlY3RlZAotCi0tIElzc3VlICMxMTU3ODogYWRkZWQgdGVzdCBmb3IgdGhlIHRpbWVpdCBtb2R1bGUuICBQYXRjaCBieSBNaWNoYWVsIEhlbnJ5LgotCi0tIElzc3VlICMxMTUwMzogaW1wcm92ZSB0ZXN0IGNvdmVyYWdlIG9mIHBvc2l4cGF0aC5weS4gUGF0Y2ggYnkgRXZhbiBEYW5kcmVhLgotCi0tIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHksIGluY3JlYXNlcyBncmFudWxhcml0eSBvZgotICBzdHJpbmcuRm9ybWF0dGVyIHRlc3RzLiBJbml0aWFsIHBhdGNoIGJ5IEFsaWNpYSBBcmxlbi4KLQotLSBJc3N1ZSAjMTE1NDg6IEltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiB0aGUgc2h1dGlsIG1vZHVsZS4gUGF0Y2ggYnkKLSAgRXZhbiBEYW5kcmVhLgotCi0tIElzc3VlICMxMTU1NDogUmVhY3RpdmF0ZWQgdGVzdF9lbWFpbF9jb2RlY3MuCi0KLS0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weS4gUGF0Y2ggYnkgQWxpY2lhCi0gIEFybGVuCi0KLS0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3MudGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQotICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgotCi0tIElzc3VlICMxMTIyMzogRml4IHRlc3RfdGhyZWFkc2lnbmFscyB0byBmYWlsLCBub3QgaGFuZywgd2hlbiB0aGUKLSAgbm9uLXNlbWFwaG9yZSBpbXBsZW1lbnRhdGlvbiBvZiBsb2NrcyBpcyB1c2VkIHVuZGVyIFBPU0lYLgotCi0tIElzc3VlICMxMDkxMTogQWRkIHRlc3RzIG9uIENHSSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiBQYXRjaCB3cml0dGVuIGJ5Ci0gIFBpZXJyZSBRdWVudGVsLgotCi0tIElzc3VlICM5OTMxOiBGaXggaGFuZ3MgaW4gR1VJIHRlc3RzIHVuZGVyIFdpbmRvd3MgaW4gY2VydGFpbiBjb25kaXRpb25zLgotICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjMTA1MTI6IFByb3Blcmx5IGNsb3NlIHNvY2tldHMgdW5kZXIgdGVzdC50ZXN0X2NnaS4KLQotLSBJc3N1ZSAjMTA5OTI6IE1ha2UgdGVzdHMgcGFzcyB1bmRlciBjb3ZlcmFnZS4KLQotLSBJc3N1ZSAjMTA4MjY6IFByZXZlbnQgc3BvcmFkaWMgZmFpbHVyZSBpbiB0ZXN0X3N1YnByb2Nlc3Mgb24gU29sYXJpcyBkdWUKLSAgdG8gb3BlbiBkb29yIGZpbGVzLgotCi0tIElzc3VlICMxMDk5MDogUHJldmVudCB0ZXN0cyBmcm9tIGNsb2JiZXJpbmcgYSBzZXQgdHJhY2UgZnVuY3Rpb24uCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxMzQ1MjogUHlVbmljb2RlX0VuY29kZURlY2ltYWwoKSBkb2Vzbid0IHN1cHBvcnQgZXJyb3IgaGFuZGxlcnMKLSAgZGlmZmVyZW50IHRoYW4gInN0cmljdCIgYW55bW9yZS4gVGhlIGNhbGxlciB3YXMgdW5hYmxlIHRvIGNvbXB1dGUgdGhlCi0gIHNpemUgb2YgdGhlIG91dHB1dCBidWZmZXI6IGl0IGRlcGVuZHMgb24gdGhlIGVycm9yIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzEzNTYwOiBBZGQgUHlVbmljb2RlX0RlY29kZUxvY2FsZSgpLCBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZSgpCi0gIGFuZCBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKCkgZnVuY3Rpb25zIHRvIHRoZSBDIEFQSSB0byBkZWNvZGUvZW5jb2RlIGZyb20vdG8KLSAgdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLgotCi0tIElzc3VlICMxMDgzMTogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBzdXBwb3J0cyAlbGksICVsbGkgYW5kICV6aSBmb3JtYXRzLgotCi0tIElzc3VlICMxMTI0NjogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlViIpIHRvIGRlY29kZSB0aGUgYnl0ZSBzdHJpbmcgZnJvbQotICBVVEYtOCAod2l0aCByZXBsYWNlIGVycm9yIGhhbmRsZXIpIGluc3RlYWQgb2YgSVNPLTg4NTktMSAoaW4gc3RyaWN0IG1vZGUpLgotICBQYXRjaCB3cml0dGVuIGJ5IFJheSBBbGxlbi4KLQotLSBJc3N1ZSAjMTA4MzA6IEZpeCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoIiVjIikgZm9yIG5vbi1CTVAgY2hhcmFjdGVycyBvbgotICBuYXJyb3cgYnVpbGQuCi0KLS0gQWRkIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0IGFuZCBQeU9iamVjdF9HZW5lcmlTZXREaWN0LiBUaGV5IGFyZSBnZW5lcmljCi0gIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGdldHRlciBhbmQgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3Igb2YgQwotICB0eXBlcy4KLQotLSBJc3N1ZSAjMTM3Mjc6IEFkZCAzIG1hY3JvcyB0byBhY2Nlc3MgUHlEYXRlVGltZV9EZWx0YSBtZW1iZXJzOgotICBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTLCBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTLAotICBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMuCi0KLS0gSXNzdWUgIzEwNTQyOiBBZGQgNCBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6IFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFLAotICBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFLCBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUsCi0gIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTLgotCi0tIElzc3VlICMxMjcyNDogQWRkIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRCBtYWNybyBmb3IgcmV0dXJuaW5nIE5vdEltcGxlbWVudGVkLgotCi0tIFBZX1BBVENITEVWRUxfUkVWSVNJT04gaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2UgaXQncyBtZWFuaW5nbGVzcyB3aXRoCi0gIE1lcmN1cmlhbC4KLQotLSBJc3N1ZSAjMTIxNzM6IFRoZSBmaXJzdCBhcmd1bWVudCBvZiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCBpcyBub3cgYGNvbnN0Ci0gIGNoYXIgKmAgaW5zdGVhZCBvZiBgY2hhciAqYC4KLQotLSBJc3N1ZSAjMTIzODA6IFB5QXJnX1BhcnNlVHVwbGUgbm93IGFjY2VwdHMgYSBieXRlYXJyYXkgZm9yIHRoZSAnYycgZm9ybWF0LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIzMDA2OiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbmRleGluZyBvZiBkaWN0Ll9fbWlzc2luZ19fLgotICBBZGQgYW4gZW50cnkgaW4gdGhlIGxhbmd1YWdlIGRhdGFtb2RlbCBzcGVjaWFsIG1ldGhvZHMgc2VjdGlvbi4KLSAgUmV2aXNlIGFuZCBpbmRleCBpdHMgZGlzY3Vzc2lvbiBpbiB0aGUgc3RkdHlwZXMgbWFwcGluZy9kaWN0IHNlY3Rpb24uCi0KLS0gSXNzdWUgIzEzOTg5OiBEb2N1bWVudCB0aGF0IEd6aXBGaWxlIGRvZXMgbm90IHN1cHBvcnQgdGV4dCBtb2RlLCBhbmQgZ2l2ZSBhCi0gIG1vcmUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIHdoZW4gb3BlbmVkIHdpdGggYW4gaW52YWxpZCBtb2RlIHN0cmluZy4KLQotLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKLSAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCi0gIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotCi0tIElzc3VlICMxMjEwMjogRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQKLSAgd2l0aCBtbWFwLiBQYXRjaCBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgotCi0tIElzc3VlICM4OTgyOiBJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXJncGFyc2UgTmFtZXNwYWNlIG9iamVjdC4KLQotLSBJc3N1ZSAjOTM0MzogRG9jdW1lbnQgdGhhdCBhcmdwYXJzZSBwYXJlbnQgcGFyc2VycyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlCi0gIHRoZWlyIGNoaWxkcmVuLgotCi0tIElzc3VlICMxMzQ5ODogQ2xhcmlmeSBkb2NzIG9mIG9zLm1ha2VkaXJzKCkncyBleGlzdF9vayBhcmd1bWVudC4gIERvbmUgd2l0aAotICBncmVhdCBuYXRpdmUtc3BlYWtlciBoZWxwIGZyb20gUi4gRGF2aWQgTXVycmF5LgotCi0tIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KLSAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgotCi0tIElzc3VlICMxMzQwMjogRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgotCi0tIElzc3VlICMxMzg4MzogUFlUSE9OQ0FTRU9LIGFsc28gd29ya3Mgb24gT1MgWC4KLQotLSBJc3N1ZSAjOTAyMTogQWRkIGFuIGludHJvZHVjdGlvbiB0byB0aGUgY29weSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNjAwNTogRXhhbXBsZXMgaW4gdGhlIHNvY2tldCBsaWJyYXJ5IGRvY3VtZW50YXRpb24gdXNlIHNlbmRhbGwsIHdoZXJlCi0gIHJlbGV2YW50LCBpbnN0ZWFkIHNlbmQgbWV0aG9kLgotCi0tIElzc3VlICMxMjc5ODogVXBkYXRlZCB0aGUgbWltZXR5cGVzIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzEyOTQ5OiBEb2N1bWVudCB0aGUga3dvbmx5YXJnY291bnQgYXJndW1lbnQgZm9yIHRoZSBQeUNvZGVfTmV3Ci0gIEMgQVBJIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxMzUxMzogRml4IGlvLklPQmFzZSBkb2N1bWVudGF0aW9uIHRvIGNvcnJlY3RseSBsaW5rIHRvIHRoZQotICBpby5JT0Jhc2UucmVhZGxpbmUgbWV0aG9kIGluc3RlYWQgb2YgdGhlIHJlYWRsaW5lIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTMyMzc6IFJlb3JnYW5pc2Ugc3VicHJvY2VzcyBkb2N1bWVudGF0aW9uIHRvIGVtcGhhc2lzZSBjb252ZW5pZW5jZQotICBmdW5jdGlvbnMgYW5kIHRoZSBtb3N0IGNvbW1vbmx5IG5lZWRlZCBhcmd1bWVudHMgdG8gUG9wZW4uCi0KLS0gSXNzdWUgIzEzMTQxOiBEZW1vbnN0cmF0ZSByZWNvbW1lbmRlZCBzdHlsZSBmb3Igc29ja2V0c2VydmVyIGV4YW1wbGVzLgotCi0tIElzc3VlICMxMTgxODogRml4IHRlbXBmaWxlIGV4YW1wbGVzIGZvciBQeXRob24gMy4KLQotCiAqKihGb3IgaW5mb3JtYXRpb24gYWJvdXQgb2xkZXIgdmVyc2lvbnMsIGNvbnN1bHQgdGhlIEhJU1RPUlkgZmlsZS4pKioKZGlmZiAtLWdpdCBhL01pc2MvUG9ydGluZyBiL01pc2MvUG9ydGluZwppbmRleCA1MWY3M2U2Li5jNDNiMTEyIDEwMDY0NAotLS0gYS9NaXNjL1BvcnRpbmcKKysrIGIvTWlzYy9Qb3J0aW5nCkBAIC0xLDQxICsxIEBACi1RLiBJIHdhbnQgdG8gcG9ydCBQeXRob24gdG8gYSBuZXcgcGxhdGZvcm0uICBIb3cgZG8gSSBiZWdpbj8KLQotQS4gSSBndWVzcyB0aGUgdHdvIHRoaW5ncyB0byBzdGFydCB3aXRoIGlzIHRvIGZhbWlsaWFyaXplIHlvdXJzZWxmCi13aXRoIGFyZSB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGZvciB5b3VyIHRhcmdldCBwbGF0Zm9ybSBhbmQgdGhlCi1nZW5lcmljIGJ1aWxkIHByb2Nlc3MgZm9yIFB5dGhvbi4gIE1ha2Ugc3VyZSB5b3UgY2FuIGNvbXBpbGUgYW5kIHJ1biBhCi1zaW1wbGUgaGVsbG8td29ybGQgcHJvZ3JhbSBvbiB5b3VyIHRhcmdldCBwbGF0Zm9ybS4gIE1ha2Ugc3VyZSB5b3UgY2FuCi1jb21waWxlIGFuZCBydW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciBvbiBhIHBsYXRmb3JtIHRvIHdoaWNoIGl0IGhhcwotYWxyZWFkeSBiZWVuIHBvcnRlZCAocHJlZmVyYWJseSBVbml4LCBidXQgTWFjIG9yIFdpbmRvd3Mgd2lsbCBkbywKLXRvbykuCi0KLUkgYWxzbyB3b3VsZCBuZXZlciBzdGFydCBzb21ldGhpbmcgbGlrZSB0aGlzIHdpdGhvdXQgYXQgbGVhc3QKLW1lZGl1bS1sZXZlbCB1bmRlcnN0YW5kaW5nIG9mIHlvdXIgdGFyZ2V0IHBsYXRmb3JtIChpLmUuIGhvdyBpdCBpcwotZ2VuZXJhbGx5IHVzZWQsIGhvdyB0byB3cml0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBhcHBzIGV0Yy4pIGFuZCBQeXRob24KLShvciBlbHNlIHlvdSdsbCBuZXZlciBrbm93IGhvdyB0byB0ZXN0IHRoZSByZXN1bHRzKS4KLQotVGhlIGJ1aWxkIHByb2Nlc3MgZm9yIFB5dGhvbiwgaW4gcGFydGljdWxhciB0aGUgTWFrZWZpbGVzIGluIHRoZQotc291cmNlIGRpc3RyaWJ1dGlvbiwgd2lsbCBnaXZlIHlvdSBhIGhpbnQgb24gd2hpY2ggZmlsZXMgdG8gY29tcGlsZQotZm9yIFB5dGhvbi4gIE5vdCBhbGwgc291cmNlIGZpbGVzIGFyZSByZWxldmFudCAtLSBzb21lIGFyZSBwbGF0Zm9ybQotc3BlY2lmaWMsIG90aGVycyBhcmUgb25seSB1c2VkIGluIGVtZXJnZW5jaWVzIChlLmcuIGdldG9wdC5jKS4gIFRoZQotTWFrZWZpbGVzIHRlbGwgdGhlIHN0b3J5LgotCi1Zb3UnbGwgYWxzbyBuZWVkIGEgcHljb25maWcuaCBmaWxlIHRhaWxvcmVkIGZvciB5b3VyIHBsYXRmb3JtLiAgWW91IGNhbgotc3RhcnQgd2l0aCBweWNvbmZpZy5oLmluLCByZWFkIHRoZSBjb21tZW50cyBhbmQgdHVybiBvbiBkZWZpbml0aW9ucyB0aGF0Ci1hcHBseSB0byB5b3VyIHBsYXRmb3JtLgotCi1BbmQgeW91J2xsIG5lZWQgYSBjb25maWcuYyBmaWxlLCB3aGljaCBsaXN0cyB0aGUgYnVpbHQtaW4gbW9kdWxlcyB5b3UKLXN1cHBvcnQuICBTdGFydCB3aXRoIE1vZHVsZXMvY29uZmlnLmMuaW4uCi0KLUZpbmFsbHksIHlvdSdsbCBydW4gaW50byBzb21lIHRoaW5ncyB0aGF0IGFyZW4ndCBzdXBwb3J0ZWQgb24geW91cgotdGFyZ2V0IHBsYXRmb3JtLiAgRm9yZ2V0IGFib3V0IHRoZSBwb3NpeCBtb2R1bGUgZm9yIG5vdyAtLSBzaW1wbHkgdGFrZSAKLWl0IG91dCBvZiB0aGUgY29uZmlnLmMgZmlsZS4KLQotQmFuZyBvbiBpdCB1bnRpbCB5b3UgZ2V0IGEgPj4+IHByb21wdC4gIChZb3UgbWF5IGhhdmUgdG8gZGlzYWJsZSB0aGUKLWltcG9ydGluZyBvZiAic2l0ZS5weSIgYnkgcGFzc2luZyB0aGUgLVMgb3B0aW9uLikKLQotVGhlbiBiYW5nIG9uIGl0IHVudGlsIGl0IGV4ZWN1dGVzIHZlcnkgc2ltcGxlIFB5dGhvbiBzdGF0ZW1lbnRzLgotCi1Ob3cgYmFuZyBvbiBpdCBzb21lIG1vcmUuICBBdCBzb21lIHBvaW50IHlvdSdsbCB3YW50IHRvIHVzZSB0aGUgb3MKLW1vZHVsZTsgdGhpcyBpcyB0aGUgdGltZSB0byBzdGFydCB0aGlua2luZyBhYm91dCB3aGF0IHRvIGRvIHdpdGggdGhlCi1wb3NpeCBtb2R1bGUuICBJdCdzIG9rYXkgdG8gc2ltcGx5ICNpZmRlZiBvdXQgdGhvc2UgZnVuY3Rpb25zIHRoYXQKLWNhdXNlIHByb2JsZW1zOyB0aGUgcmVtYWluaW5nIG9uZXMgd2lsbCBiZSBxdWl0ZSB1c2VmdWwuCitUaGlzIGRvY3VtZW50IGlzIG1vdmVkIHRvIGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldmd1aWRlL2ZhcS5odG1sI2hvdy1kby1pLXBvcnQtcHl0aG9uLXRvLWEtbmV3LXBsYXRmb3JtCmRpZmYgLS1naXQgYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKaW5kZXggNTdmM2FlYi4uNDkzZTdjMSAxMDA2NDQKLS0tIGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCisrKyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwpAQCAtODUsNyArODUsNyBAQAogfQogCiAvKiBQeXRob24vZmlsZXV0aWxzLmMgKi8KLXdjaGFyX3QgKl9QeV9jaGFyMndjaGFyKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQord2NoYXJfdCAqUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQogewogICAgd2NoYXJfdCAqdzsKICAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zaW5rX18oYXJnKTsKQEAgLTEyMiw3ICsxMjIsOCBAQAogCiAvKiBDb3Zlcml0eSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhhdCBmZG9wZW5kaXIoKSBtYXkgdGFrZSBvd25lcnNoaXAgb2YgZmQuICovCiAKLURJUiAqZmRvcGVuZGlyKGludCBmZCkgeworRElSICpmZG9wZW5kaXIoaW50IGZkKQorewogICAgIERJUiAqZDsKICAgICBpZiAoZCkgewogICAgICAgICBfX2NvdmVyaXR5X2Nsb3NlX18oZmQpOwpAQCAtMTMwLDMgKzEzMSw1OCBAQAogICAgIHJldHVybiBkOwogfQogCisvKiBNb2R1bGVzL19kYXRldGltZS5jCisgKgorICogQ292ZXJpdHkgdGhpbmtzIHRoYXQgdGhlIGlucHV0IHZhbHVlcyBmb3IgdGhlc2UgZnVuY3Rpb24gY29tZSBmcm9tIGEKKyAqIHRhaW50ZWQgc291cmNlIFB5RGF0ZVRpbWVfREFURV9HRVRfKiBtYWNyb3MgdXNlIGJpdCBzaGlmdGluZy4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWxkX3N0cnVjdF90aW1lKGludCB5LCBpbnQgbSwgaW50IGQsIGludCBoaCwgaW50IG1tLCBpbnQgc3MsIGludCBkc3RmbGFnKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgCisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyh5KTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKG0pOworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oZCk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhoaCk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhtbSk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhzcyk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhkc3RmbGFnKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK3ltZF90b19vcmQoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkKK3sKKyAgICBpbnQgb3JkID0gMDsKKworICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3Nhbml0aXplX18oeWVhcik7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhtb250aCk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyhkYXkpOworCisgICAgcmV0dXJuIG9yZDsKK30KKworc3RhdGljIGludAorbm9ybWFsaXplX2RhdGUoaW50ICp5ZWFyLCBpbnQgKm1vbnRoLCBpbnQgKmRheSkKK3sKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKCp5ZWFyKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKCptb250aCk7CisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXygqZGF5KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit3ZWVrZGF5KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXkpCit7CisgICAgaW50IHcgPSAwOworCisgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2FuaXRpemVfXyh5ZWFyKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKG1vbnRoKTsKKyAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zYW5pdGl6ZV9fKGRheSk7CisKKyAgICByZXR1cm4gdzsKK30KKwpkaWZmIC0tZ2l0IGEvTWlzYy9nZGJpbml0IGIvTWlzYy9nZGJpbml0CmluZGV4IDk0ODRiNTEuLjNiNmZlNTAgMTAwNjQ0Ci0tLSBhL01pc2MvZ2RiaW5pdAorKysgYi9NaXNjL2dkYmluaXQKQEAgLTE1MCwxMCArMTUwLDEwIEBACiAKICMgZ2VuZXJhbGx5IHVzZWZ1bCBtYWNybyB0byBwcmludCBhIFVuaWNvZGUgc3RyaW5nCiBkZWYgcHUKLSAgc2V0ICR1bmkgPSAkYXJnMCAKKyAgc2V0ICR1bmkgPSAkYXJnMAogICBzZXQgJGkgPSAwCiAgIHdoaWxlICgqJHVuaSAmJiAkaSsrPDEwMCkKLSAgICBpZiAoKiR1bmkgPCAweDgwKSAKKyAgICBpZiAoKiR1bmkgPCAweDgwKQogICAgICAgcHJpbnQgKihjaGFyKikkdW5pKysKICAgICBlbHNlCiAgICAgICBwcmludCAveCAqKHNob3J0KikkdW5pKysKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLm1hbiBiL01pc2MvcHl0aG9uLm1hbgppbmRleCBlYTk1NDBjLi42ZGJkYmE5IDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi5tYW4KKysrIGIvTWlzYy9weXRob24ubWFuCkBAIC0xMDMsMTAgKzEwMywxMCBAQAogYXBwbGljYXRpb25zLgogU2VlIHRoZSBpbnRlcm5hbCBkb2N1bWVudGF0aW9uIGZvciBoaW50cy4KIC5QUAotRG9jdW1lbnRhdGlvbiBmb3IgaW5zdGFsbGVkIFB5dGhvbiBtb2R1bGVzIGFuZCBwYWNrYWdlcyBjYW4gYmUgCi12aWV3ZWQgYnkgcnVubmluZyB0aGUgCitEb2N1bWVudGF0aW9uIGZvciBpbnN0YWxsZWQgUHl0aG9uIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGNhbiBiZQordmlld2VkIGJ5IHJ1bm5pbmcgdGhlCiAuQiBweWRvYwotcHJvZ3JhbS4gIAorcHJvZ3JhbS4KIC5TSCBDT01NQU5EIExJTkUgT1BUSU9OUwogLlRQCiAuQiBcLUIKQEAgLTE0OSwyMyArMTQ5LDIwIEBACiBtYWxpY2lvdXMgY29kZS4KIC5UUAogLkJJICJcLW0gIiBtb2R1bGUtbmFtZQotU2VhcmNoZXMgCi0uSSBzeXMucGF0aCAKLWZvciB0aGUgbmFtZWQgbW9kdWxlIGFuZCBydW5zIHRoZSBjb3JyZXNwb25kaW5nIAotLkkgLnB5IAorU2VhcmNoZXMKKy5JIHN5cy5wYXRoCitmb3IgdGhlIG5hbWVkIG1vZHVsZSBhbmQgcnVucyB0aGUgY29ycmVzcG9uZGluZworLkkgLnB5CiBmaWxlIGFzIGEgc2NyaXB0LgogLlRQCiAuQiBcLU8KLVR1cm4gb24gYmFzaWMgb3B0aW1pemF0aW9ucy4gIFRoaXMgY2hhbmdlcyB0aGUgZmlsZW5hbWUgZXh0ZW5zaW9uIGZvcgotY29tcGlsZWQgKGJ5dGVjb2RlKSBmaWxlcyBmcm9tCi0uSSAucHljCi10byBcZkkucHlvXGZQLiAgR2l2ZW4gdHdpY2UsIGNhdXNlcyBkb2NzdHJpbmdzIHRvIGJlIGRpc2NhcmRlZC4KK1R1cm4gb24gYmFzaWMgb3B0aW1pemF0aW9ucy4gIEdpdmVuIHR3aWNlLCBjYXVzZXMgZG9jc3RyaW5ncyB0byBiZSBkaXNjYXJkZWQuCiAuVFAKIC5CIFwtT08KIERpc2NhcmQgZG9jc3RyaW5ncyBpbiBhZGRpdGlvbiB0byB0aGUgXGZCLU9cZlAgb3B0aW1pemF0aW9ucy4KIC5UUAogLkIgXC1xCi1EbyBub3QgcHJpbnQgdGhlIHZlcnNpb24gYW5kIGNvcHlyaWdodCBtZXNzYWdlcy4gVGhlc2UgbWVzc2FnZXMgYXJlIAorRG8gbm90IHByaW50IHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIGFyZQogYWxzbyBzdXBwcmVzc2VkIGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlLgogLlRQCiAuQiBcLXMKQEAgLTE5Miw3ICsxODksNyBAQAogLkIgXC12CiBQcmludCBhIG1lc3NhZ2UgZWFjaCB0aW1lIGEgbW9kdWxlIGlzIGluaXRpYWxpemVkLCBzaG93aW5nIHRoZSBwbGFjZQogKGZpbGVuYW1lIG9yIGJ1aWx0LWluIG1vZHVsZSkgZnJvbSB3aGljaCBpdCBpcyBsb2FkZWQuICBXaGVuIGdpdmVuCi10d2ljZSwgcHJpbnQgYSBtZXNzYWdlIGZvciBlYWNoIGZpbGUgdGhhdCBpcyBjaGVja2VkIGZvciB3aGVuIAordHdpY2UsIHByaW50IGEgbWVzc2FnZSBmb3IgZWFjaCBmaWxlIHRoYXQgaXMgY2hlY2tlZCBmb3Igd2hlbgogc2VhcmNoaW5nIGZvciBhIG1vZHVsZS4gIEFsc28gcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gbW9kdWxlIGNsZWFudXAKIGF0IGV4aXQuCiAuVFAKQEAgLTQxNyw3ICs0MTQsNyBAQAogLklQIFBZVEhPTlZFUkJPU0UKIElmIHRoaXMgaXMgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZyBpdCBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcKIHRoZSBcZkJcLXZcZlAgb3B0aW9uLiBJZiBzZXQgdG8gYW4gaW50ZWdlciwgaXQgaXMgZXF1aXZhbGVudCB0bwotc3BlY2lmeWluZyBcZkJcLXZcZlAgbXVsdGlwbGUgdGltZXMuIAorc3BlY2lmeWluZyBcZkJcLXZcZlAgbXVsdGlwbGUgdGltZXMuCiAuSVAgUFlUSE9OV0FSTklOR1MKIElmIHRoaXMgaXMgc2V0IHRvIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBpdCBpcyBlcXVpdmFsZW50IHRvCiBzcGVjaWZ5aW5nIHRoZSBcZkJcLVdcZlAgb3B0aW9uIGZvciBlYWNoIHNlcGFyYXRlIHZhbHVlLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9SRUFETUUgYi9Nb2R1bGVzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Yjc5ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9SRUFETUUKQEAgLTAsMCArMSwyIEBACitTb3VyY2UgZmlsZXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkgZXh0ZW5zaW9uIG1vZHVsZXMsCithbmQgZm9ybWVyIGV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgYXJlIG5vdyBidWlsdGluIG1vZHVsZXMuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbiBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCmluZGV4IDVhYzI0MDQuLmFkYWMwMzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCisrKyBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCkBAIC03LDcgKzcsNyBAQAogQFVTRV9USFJFQURfTU9EVUxFQF90aHJlYWQgX3RocmVhZG1vZHVsZS5jCiAKICMgVGhlIHNpZ25hbCBtb2R1bGUKLUBVU0VfU0lHTkFMX01PRFVMRUBzaWduYWwgc2lnbmFsbW9kdWxlLmMKK0BVU0VfU0lHTkFMX01PRFVMRUBfc2lnbmFsIHNpZ25hbG1vZHVsZS5jCiAKICMgVGhlIHJlc3Qgb2YgdGhlIG1vZHVsZXMgcHJldmlvdXNseSBsaXN0ZWQgaW4gdGhpcyBmaWxlIGFyZSBidWlsdAogIyBieSB0aGUgc2V0dXAucHkgc2NyaXB0IGluIFB5dGhvbiAyLjEgYW5kIGxhdGVyLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IGI2MGI1OTQuLjA2YmE2YWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTExOCw2ICsxMTgsNyBAQAogaXRlcnRvb2xzIGl0ZXJ0b29sc21vZHVsZS5jICAgICMgRnVuY3Rpb25zIGNyZWF0aW5nIGl0ZXJhdG9ycyBmb3IgZWZmaWNpZW50IGxvb3BpbmcKIGF0ZXhpdCBhdGV4aXRtb2R1bGUuYyAgICAgICMgUmVnaXN0ZXIgZnVuY3Rpb25zIHRvIGJlIHJ1biBhdCBpbnRlcnByZXRlci1zaHV0ZG93bgogX3N0YXQgX3N0YXQuYwkJCSMgc3RhdC5oIGludGVyZmFjZQordGltZSB0aW1lbW9kdWxlLmMJIyAtbG0gIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwogCiAjIGFjY2VzcyB0byBJU08gQyBsb2NhbGUgc3VwcG9ydAogX2xvY2FsZSBfbG9jYWxlbW9kdWxlLmMgICMgLWxpbnRsCkBAIC0xNzEsNyArMTcyLDYgQEAKICNjbWF0aCBjbWF0aG1vZHVsZS5jIF9tYXRoLmMgIyAtbG0gIyBjb21wbGV4IG1hdGggbGlicmFyeSBmdW5jdGlvbnMKICNtYXRoIG1hdGhtb2R1bGUuYyBfbWF0aC5jICMgLWxtICMgbWF0aCBsaWJyYXJ5IGZ1bmN0aW9ucywgZS5nLiBzaW4oKQogI19zdHJ1Y3QgX3N0cnVjdC5jCSMgYmluYXJ5IHN0cnVjdHVyZSBwYWNraW5nL3VucGFja2luZwotI3RpbWUgdGltZW1vZHVsZS5jICMgLWxtICMgdGltZSBvcGVyYXRpb25zIGFuZCB2YXJpYWJsZXMKICNfd2Vha3JlZiBfd2Vha3JlZi5jCSMgYmFzaWMgd2VhayByZWZlcmVuY2Ugc3VwcG9ydAogI190ZXN0Y2FwaSBfdGVzdGNhcGltb2R1bGUuYyAgICAjIFB5dGhvbiBDIEFQSSB0ZXN0IG1vZHVsZQogI19yYW5kb20gX3JhbmRvbW1vZHVsZS5jCSMgUmFuZG9tIG51bWJlciBnZW5lcmF0b3IKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKaW5kZXggZTY1MmY0ZC4uN2RmZDMwNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYnoybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKQEAgLTUxLDYgKzUxLDE0IEBACiAgICAgYnpfc3RyZWFtIGJ6czsKICAgICBjaGFyIGVvZjsgICAgICAgICAgIC8qIFRfQk9PTCBleHBlY3RzIGEgY2hhciAqLwogICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyAgICBjaGFyIG5lZWRzX2lucHV0OworICAgIGNoYXIgKmlucHV0X2J1ZmZlcjsKKyAgICBzaXplX3QgaW5wdXRfYnVmZmVyX3NpemU7CisKKyAgICAvKiBienMtPmF2YWlsX2luIGlzIG9ubHkgMzIgYml0LCBzbyB3ZSBzdG9yZSB0aGUgdHJ1ZSBsZW5ndGgKKyAgICAgICBzZXBhcmF0ZWx5LiBDb252ZXJzaW9uIGFuZCBsb29waW5nIGlzIGVuY2Fwc3VsYXRlZCBpbgorICAgICAgIGRlY29tcHJlc3NfYnVmKCkgKi8KKyAgICBzaXplX3QgYnpzX2F2YWlsX2luX3JlYWw7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKICNlbmRpZgpAQCAtMTExLDE5ICsxMTksMjMgQEAKIH0KIAogI2lmIEJVRlNJWiA8IDgxOTIKLSNkZWZpbmUgU01BTExDSFVOSyA4MTkyCisjZGVmaW5lIElOSVRJQUxfQlVGRkVSX1NJWkUgODE5MgogI2Vsc2UKLSNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKKyNkZWZpbmUgSU5JVElBTF9CVUZGRVJfU0laRSBCVUZTSVoKICNlbmRpZgogCiBzdGF0aWMgaW50Ci1ncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK2dyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCiB7CiAgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAogICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKICAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLwogICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKICAgICBzaXplX3QgbmV3X3NpemUgPSBzaXplICsgKHNpemUgPj4gMykgKyA2OworCisgICAgaWYgKG1heF9sZW5ndGggPiAwICYmIG5ld19zaXplID4gKHNpemVfdCkgbWF4X2xlbmd0aCkKKyAgICAgICAgbmV3X3NpemUgPSAoc2l6ZV90KSBtYXhfbGVuZ3RoOworCiAgICAgaWYgKG5ld19zaXplID4gc2l6ZSkgewogICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgbmV3X3NpemUpOwogICAgIH0gZWxzZSB7ICAvKiBvdmVyZmxvdyAqLwpAQCAtMTQyLDE0ICsxNTQsMTQgQEAKICAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjLT5ienMubmV4dF9pbiA9IGRhdGE7CiAgICAgYy0+YnpzLmF2YWlsX2luID0gMDsKICAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBTTUFMTENIVU5LOworICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBJTklUSUFMX0JVRkZFUl9TSVpFOwogICAgIGZvciAoOzspIHsKICAgICAgICAgY2hhciAqdGhpc19vdXQ7CiAgICAgICAgIGludCBiemVycm9yOwpAQCAtMTY4LDcgKzE4MCw3IEBACiAgICAgICAgIGlmIChjLT5ienMuYXZhaWxfb3V0ID09IDApIHsKICAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKICAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpIDwgMCkKKyAgICAgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCwgLTEpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwpAQCAtMTg4LDcgKzIwMCw3IEBACiAgICAgICAgIGlmIChhY3Rpb24gPT0gQlpfRklOSVNIICYmIGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICBpZiAoZGF0YV9zaXplICE9IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQogICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPCAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTk5LDEyICsyMTEsMTEgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgX2J6MgogY2xhc3MgX2J6Mi5CWjJDb21wcmVzc29yICJCWjJDb21wcmVzc29yICoiICImQloyQ29tcHJlc3Nvcl9UeXBlIgogY2xhc3MgX2J6Mi5CWjJEZWNvbXByZXNzb3IgIkJaMkRlY29tcHJlc3NvciAqIiAiJkJaMkRlY29tcHJlc3Nvcl9UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZTNiMTM5OTI0ZjVlMThjY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZGM3ZDc5OTJhNzlmOWNiN10qLwogCiAjaW5jbHVkZSAiY2xpbmljL19iejJtb2R1bGUuYy5oIgogCkBAIC00MDIsNjQgKzQxMywxNzYgQEAKIAogLyogQloyRGVjb21wcmVzc29yIGNsYXNzLiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKmQsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pCisvKiBEZWNvbXByZXNzIGRhdGEgb2YgbGVuZ3RoIGQtPmJ6c19hdmFpbF9pbl9yZWFsIGluIGQtPmJ6cy5uZXh0X2luLiAgVGhlIG91dHB1dAorICAgYnVmZmVyIGlzIGFsbG9jYXRlZCBkeW5hbWljYWxseSBhbmQgcmV0dXJuZWQuICBBdCBtb3N0IG1heF9sZW5ndGggYnl0ZXMgYXJlCisgICByZXR1cm5lZCwgc28gc29tZSBvZiB0aGUgaW5wdXQgbWF5IG5vdCBiZSBjb25zdW1lZC4gZC0+YnpzLm5leHRfaW4gYW5kCisgICBkLT5ienNfYXZhaWxfaW5fcmVhbCBhcmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBjb25zdW1lZCBpbnB1dC4gKi8KK3N0YXRpYyBQeU9iamVjdCoKK2RlY29tcHJlc3NfYnVmKEJaMkRlY29tcHJlc3NvciAqZCwgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQogewotICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIC8qIGRhdGFfc2l6ZSBpcyBzdHJpY3RseSBwb3NpdGl2ZSwgYnV0IGJlY2F1c2Ugd2UgcmVwZWF0ZWRseSBoYXZlIHRvCisgICAgICAgY29tcGFyZSBhZ2FpbnN0IG1heF9sZW5ndGggYW5kIFB5Qnl0ZXNfR0VUX1NJWkUgd2UgZGVjbGFyZSBpdCBhcworICAgICAgIHNpZ25lZCAqLworICAgIFB5X3NzaXplX3QgZGF0YV9zaXplID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGJ6X3N0cmVhbSAqYnpzID0gJmQtPmJ6czsKIAotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgaWYgKG1heF9sZW5ndGggPCAwIHx8IG1heF9sZW5ndGggPj0gSU5JVElBTF9CVUZGRVJfU0laRSkKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWF4X2xlbmd0aCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIGQtPmJ6cy5uZXh0X2luID0gZGF0YTsKLSAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGxlbiBtaWdodCBub3QgZml0IGluIGF2YWlsX2luIChhbiB1bnNpZ25lZCBpbnQpLgotICAgICAgIERvIGRlY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcyBlYWNoLiAqLwotICAgIGQtPmJ6cy5hdmFpbF9pbiA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGxlbiwgVUlOVF9NQVgpOwotICAgIGxlbiAtPSBkLT5ienMuYXZhaWxfaW47Ci0gICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBkLT5ienMuYXZhaWxfb3V0ID0gU01BTExDSFVOSzsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBienMtPm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnRoaXNfb3V0OwotICAgICAgICBpbnQgYnplcnJvcjsKKyAgICAgICAgaW50IGJ6cmV0OworICAgICAgICBzaXplX3QgYXZhaWw7CisKKyAgICAgICAgLyogT24gYSA2NC1iaXQgc3lzdGVtLCBidWZmZXIgbGVuZ3RoIG1pZ2h0IG5vdCBmaXQgaW4gYXZhaWxfb3V0LCBzbyB3ZQorICAgICAgICAgICBkbyBkZWNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMKKyAgICAgICAgICAgZWFjaC4gTm90ZSB0aGF0IHRoZSBleHByZXNzaW9uIGZvciBgYXZhaWxgIGlzIGd1YXJhbnRlZWQgdG8gYmUKKyAgICAgICAgICAgcG9zaXRpdmUsIHNvIHRoZSBjYXN0IGlzIHNhZmUuICovCisgICAgICAgIGF2YWlsID0gKHNpemVfdCkgKFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZSk7CisgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gKHVuc2lnbmVkIGludClQeV9NSU4oYXZhaWwsIFVJTlRfTUFYKTsKKyAgICAgICAgYnpzLT5hdmFpbF9pbiA9ICh1bnNpZ25lZCBpbnQpUHlfTUlOKGQtPmJ6c19hdmFpbF9pbl9yZWFsLCBVSU5UX01BWCk7CisgICAgICAgIGQtPmJ6c19hdmFpbF9pbl9yZWFsIC09IGJ6cy0+YXZhaWxfaW47CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICB0aGlzX291dCA9IGQtPmJ6cy5uZXh0X291dDsKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3MoJmQtPmJ6cyk7Ci0gICAgICAgIGRhdGFfc2l6ZSArPSBkLT5ienMubmV4dF9vdXQgLSB0aGlzX291dDsKKyAgICAgICAgYnpyZXQgPSBCWjJfYnpEZWNvbXByZXNzKGJ6cyk7CisgICAgICAgIGRhdGFfc2l6ZSA9IGJ6cy0+bmV4dF9vdXQgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBkLT5ienNfYXZhaWxfaW5fcmVhbCArPSBienMtPmF2YWlsX2luOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6cmV0KSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKKyAgICAgICAgaWYgKGJ6cmV0ID09IEJaX1NUUkVBTV9FTkQpIHsKICAgICAgICAgICAgIGQtPmVvZiA9IDE7Ci0gICAgICAgICAgICBsZW4gKz0gZC0+YnpzLmF2YWlsX2luOwotICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsgLyogU2F2ZSBsZWZ0b3ZlciBpbnB1dCB0byB1bnVzZWRfZGF0YSAqLwotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKLSAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZC0+YnpzLm5leHRfaW4sIGxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgfSBlbHNlIGlmIChkLT5ienNfYXZhaWxfaW5fcmVhbCA9PSAwKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZGF0YV9zaXplID09IG1heF9sZW5ndGgpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkLT5ienMuYXZhaWxfaW4gPSAodW5zaWduZWQgaW50KVB5X01JTihsZW4sIFVJTlRfTUFYKTsKLSAgICAgICAgICAgIGxlbiAtPSBkLT5ienMuYXZhaWxfaW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGQtPmJ6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpIC0gZGF0YV9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCkgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGQtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkLT5ienMuYXZhaWxfb3V0ID0gKHVuc2lnbmVkIGludClQeV9NSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKKyAgICAgICAgICAgIGlmIChkYXRhX3NpemUgPT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpICYmCisgICAgICAgICAgICAgICAgZ3Jvd19idWZmZXIoJnJlc3VsdCwgbWF4X2xlbmd0aCkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChkYXRhX3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPCAwKQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIGRhdGFfc2l6ZSkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqZCwgY2hhciAqZGF0YSwgc2l6ZV90IGxlbiwgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQoreworICAgIGNoYXIgaW5wdXRfYnVmZmVyX2luX3VzZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGJ6X3N0cmVhbSAqYnpzID0gJmQtPmJ6czsKKworICAgIC8qIFByZXBlbmQgdW5jb25zdW1lZCBpbnB1dCBpZiBuZWNlc3NhcnkgKi8KKyAgICBpZiAoYnpzLT5uZXh0X2luICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZV90IGF2YWlsX25vdywgYXZhaWxfdG90YWw7CisKKyAgICAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHdlIGNhbiBhcHBlbmQgdG8gaW5wdXQgYnVmZmVyICovCisgICAgICAgIGF2YWlsX25vdyA9IChkLT5pbnB1dF9idWZmZXIgKyBkLT5pbnB1dF9idWZmZXJfc2l6ZSkKKyAgICAgICAgICAgIC0gKGJ6cy0+bmV4dF9pbiArIGQtPmJ6c19hdmFpbF9pbl9yZWFsKTsKKworICAgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGFwcGVuZCBpZiB3ZSBtb3ZlIGV4aXN0aW5nCisgICAgICAgICAgIGNvbnRlbnRzIHRvIGJlZ2lubmluZyBvZiBidWZmZXIgKG92ZXJ3cml0aW5nCisgICAgICAgICAgIGNvbnN1bWVkIGlucHV0KSAqLworICAgICAgICBhdmFpbF90b3RhbCA9IGQtPmlucHV0X2J1ZmZlcl9zaXplIC0gZC0+YnpzX2F2YWlsX2luX3JlYWw7CisKKyAgICAgICAgaWYgKGF2YWlsX3RvdGFsIDwgbGVuKSB7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gYnpzLT5uZXh0X2luIC0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICAgICAgY2hhciAqdG1wOworICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplID0gZC0+aW5wdXRfYnVmZmVyX3NpemUgKyBsZW4gLSBhdmFpbF9ub3c7CisKKyAgICAgICAgICAgIC8qIEFzc2lnbiB0byB0ZW1wb3JhcnkgdmFyaWFibGUgZmlyc3QsIHNvIHdlIGRvbid0CisgICAgICAgICAgICAgICBsb3NlIGFkZHJlc3Mgb2YgYWxsb2NhdGVkIGJ1ZmZlciBpZiByZWFsbG9jIGZhaWxzICovCisgICAgICAgICAgICB0bXAgPSBQeU1lbV9SZWFsbG9jKGQtPmlucHV0X2J1ZmZlciwgbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19NZW1vcnlFcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXIgPSB0bXA7CisgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXJfc2l6ZSA9IG5ld19zaXplOworCisgICAgICAgICAgICBienMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXIgKyBvZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXZhaWxfbm93IDwgbGVuKSB7CisgICAgICAgICAgICBtZW1tb3ZlKGQtPmlucHV0X2J1ZmZlciwgYnpzLT5uZXh0X2luLAorICAgICAgICAgICAgICAgICAgICBkLT5ienNfYXZhaWxfaW5fcmVhbCk7CisgICAgICAgICAgICBienMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KCh2b2lkKikoYnpzLT5uZXh0X2luICsgZC0+YnpzX2F2YWlsX2luX3JlYWwpLCBkYXRhLCBsZW4pOworICAgICAgICBkLT5ienNfYXZhaWxfaW5fcmVhbCArPSBsZW47CisgICAgICAgIGlucHV0X2J1ZmZlcl9pbl91c2UgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYnpzLT5uZXh0X2luID0gZGF0YTsKKyAgICAgICAgZC0+YnpzX2F2YWlsX2luX3JlYWwgPSBsZW47CisgICAgICAgIGlucHV0X2J1ZmZlcl9pbl91c2UgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IGRlY29tcHJlc3NfYnVmKGQsIG1heF9sZW5ndGgpOworICAgIGlmKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChkLT5lb2YpIHsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAwOworICAgICAgICBpZiAoZC0+YnpzX2F2YWlsX2luX3JlYWwgPiAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgYnpzLT5uZXh0X2luLCBkLT5ienNfYXZhaWxfaW5fcmVhbCk7CisgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGQtPmJ6c19hdmFpbF9pbl9yZWFsID09IDApIHsKKyAgICAgICAgYnpzLT5uZXh0X2luID0gTlVMTDsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAwOworCisgICAgICAgIC8qIElmIHdlIGRpZCBub3QgdXNlIHRoZSBpbnB1dCBidWZmZXIsIHdlIG5vdyBoYXZlCisgICAgICAgICAgIHRvIGNvcHkgdGhlIHRhaWwgZnJvbSB0aGUgY2FsbGVyJ3MgYnVmZmVyIGludG8gdGhlCisgICAgICAgICAgIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBpZiAoIWlucHV0X2J1ZmZlcl9pbl91c2UpIHsKKworICAgICAgICAgICAgLyogRGlzY2FyZCBidWZmZXIgaWYgaXQncyB0b28gc21hbGwKKyAgICAgICAgICAgICAgIChyZXNpemluZyBpdCBtYXkgbmVlZGxlc3NseSBjb3B5IHRoZSBjdXJyZW50IGNvbnRlbnRzKSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPCBkLT5ienNfYXZhaWxfaW5fcmVhbCkgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoZC0+aW5wdXRfYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXIgPSBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBBbGxvY2F0ZSBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IFB5TWVtX01hbGxvYyhkLT5ienNfYXZhaWxfaW5fcmVhbCk7CisgICAgICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTWVtb3J5RXJyb3IpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkLT5pbnB1dF9idWZmZXJfc2l6ZSA9IGQtPmJ6c19hdmFpbF9pbl9yZWFsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb3B5IHRhaWwgKi8KKyAgICAgICAgICAgIG1lbWNweShkLT5pbnB1dF9idWZmZXIsIGJ6cy0+bmV4dF9pbiwgZC0+YnpzX2F2YWlsX2luX3JlYWwpOworICAgICAgICAgICAgYnpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIAogZXJyb3I6CkBAIC00NzAsMjEgKzU5MywzMCBAQAogLypbY2xpbmljIGlucHV0XQogX2J6Mi5CWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcwogCisgICAgc2VsZjogc2VsZih0eXBlPSJCWjJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCi0gICAgLworICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIAotUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LgorRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4KIAotUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLgorSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mCitkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmUKK3Byb2R1Y2VkLCAqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gYGBGYWxzZWBgLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXh0CitjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiJycgdG8gb2J0YWluIG1vcmUgb2YgdGhlIG91dHB1dC4KIAotQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAotcmFpc2VzIGFuIEVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtCi1pcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgorSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIgYmVjYXVzZSB0aGlzCit3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZSAqbWF4X2xlbmd0aCogd2FzIG5lZ2F0aXZlKSwKKypzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLgorCitBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIHJhaXNlcyBhbgorRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4KK3RoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDg2ZTRiOTllNjBjYjNmNiBpbnB1dD02MTZjMmE2ZGI1MjY5OTYxXSovCitfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzZTQxMDQ1ZGViMjQwYTMgaW5wdXQ9OTU1OGI0MjRjOGIwMDUxNl0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC00OTIsNyArNjI0LDcgQEAKICAgICBpZiAoc2VsZi0+ZW9mKQogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJFbmQgb2Ygc3RyZWFtIGFscmVhZHkgcmVhY2hlZCIpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBkYXRhLT5idWYsIGRhdGEtPmxlbik7CisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3Moc2VsZiwgZGF0YS0+YnVmLCBkYXRhLT5sZW4sIG1heF9sZW5ndGgpOwogICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTI3LDcgKzY1OSwxMSBAQAogICAgIH0KICNlbmRpZgogCi0gICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKKyAgICBzZWxmLT5uZWVkc19pbnB1dCA9IDE7CisgICAgc2VsZi0+YnpzX2F2YWlsX2luX3JlYWwgPSAwOworICAgIHNlbGYtPmlucHV0X2J1ZmZlciA9IE5VTEw7CisgICAgc2VsZi0+aW5wdXRfYnVmZmVyX3NpemUgPSAwOworICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKICAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNTQ5LDYgKzY4NSw4IEBACiBzdGF0aWMgdm9pZAogQloyRGVjb21wcmVzc29yX2RlYWxsb2MoQloyRGVjb21wcmVzc29yICpzZWxmKQogeworICAgIGlmKHNlbGYtPmlucHV0X2J1ZmZlciAhPSBOVUxMKQorICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmlucHV0X2J1ZmZlcik7CiAgICAgQloyX2J6RGVjb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKICAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CiAjaWZkZWYgV0lUSF9USFJFQUQKQEAgLTU3MCwxMSArNzA4LDE2IEBACiBQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX19kb2NfXywKICJEYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLiIpOwogCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX25lZWRzX2lucHV0X2RvYywKKyJUcnVlIGlmIG1vcmUgaW5wdXQgaXMgbmVlZGVkIGJlZm9yZSBtb3JlIGRlY29tcHJlc3NlZCBkYXRhIGNhbiBiZSBwcm9kdWNlZC4iKTsKKwogc3RhdGljIFB5TWVtYmVyRGVmIEJaMkRlY29tcHJlc3Nvcl9tZW1iZXJzW10gPSB7CiAgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgZW9mKSwKICAgICAgUkVBRE9OTFksIEJaMkRlY29tcHJlc3Nvcl9lb2ZfX2RvY19ffSwKICAgICB7InVudXNlZF9kYXRhIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKEJaMkRlY29tcHJlc3NvciwgdW51c2VkX2RhdGEpLAogICAgICBSRUFET05MWSwgQloyRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX19kb2NfX30sCisgICAgeyJuZWVkc19pbnB1dCIsIFRfQk9PTCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCBuZWVkc19pbnB1dCksIFJFQURPTkxZLAorICAgICBCWjJEZWNvbXByZXNzb3JfbmVlZHNfaW5wdXRfZG9jfSwKICAgICB7TlVMTH0KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKaW5kZXggNTJmMzQ3OS4uNzU3NTc3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMKQEAgLTQ3LDE5ICs0NywyNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZTEzOTBlM2RhM2NiOWRlYl0qLwogCisjaW5jbHVkZSAiY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oIgogCiAvKiAtLS0gUmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlEb2NfU1RSVkFSKHJlZ2lzdGVyX19kb2NfXywKLSJyZWdpc3RlcihzZWFyY2hfZnVuY3Rpb24pXG5cCi1cblwKLVJlZ2lzdGVyIGEgY29kZWMgc2VhcmNoIGZ1bmN0aW9uLiBTZWFyY2ggZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byB0YWtlXG5cCi1vbmUgYXJndW1lbnQsIHRoZSBlbmNvZGluZyBuYW1lIGluIGFsbCBsb3dlciBjYXNlIGxldHRlcnMsIGFuZCBlaXRoZXJcblwKLXJldHVybiBOb25lLCBvciBhIHR1cGxlIG9mIGZ1bmN0aW9ucyAoZW5jb2RlciwgZGVjb2Rlciwgc3RyZWFtX3JlYWRlcixcblwKLXN0cmVhbV93cml0ZXIpIChvciBhIENvZGVjSW5mbyBvYmplY3QpLiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5yZWdpc3RlcgorICAgIHNlYXJjaF9mdW5jdGlvbjogb2JqZWN0CisgICAgLwogCi1zdGF0aWMKLVB5T2JqZWN0ICpjb2RlY19yZWdpc3RlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlYXJjaF9mdW5jdGlvbikKK1JlZ2lzdGVyIGEgY29kZWMgc2VhcmNoIGZ1bmN0aW9uLgorCitTZWFyY2ggZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byB0YWtlIG9uZSBhcmd1bWVudCwgdGhlIGVuY29kaW5nIG5hbWUgaW4KK2FsbCBsb3dlciBjYXNlIGxldHRlcnMsIGFuZCBlaXRoZXIgcmV0dXJuIE5vbmUsIG9yIGEgdHVwbGUgb2YgZnVuY3Rpb25zCisoZW5jb2RlciwgZGVjb2Rlciwgc3RyZWFtX3JlYWRlciwgc3RyZWFtX3dyaXRlcikgKG9yIGEgQ29kZWNJbmZvIG9iamVjdCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzZWFyY2hfZnVuY3Rpb24pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDE3NjA4YjZhZDM4MGViOCBpbnB1dD0zNjk1Nzg0Njc5NTVjYWU0XSovCiB7CiAgICAgaWYgKFB5Q29kZWNfUmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02Nyw3NSArNzMsNzMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGxvb2t1cF9fZG9jX18sCi0ibG9va3VwKGVuY29kaW5nKSAtPiBDb2RlY0luZm9cblwKLVxuXAotTG9va3MgdXAgYSBjb2RlYyB0dXBsZSBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5IGFuZCByZXR1cm5zXG5cCi1hIENvZGVjSW5mbyBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLmxvb2t1cAorICAgIGVuY29kaW5nOiBzdHIKKyAgICAvCiAKLXN0YXRpYwotUHlPYmplY3QgKmNvZGVjX2xvb2t1cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitMb29rcyB1cCBhIGNvZGVjIHR1cGxlIGluIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkgYW5kIHJldHVybnMgYSBDb2RlY0luZm8gb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OThlNDFhZmYwYzA0ZWY2IGlucHV0PTNjNTcyYzBkYjNmZWJlOWNdKi8KIHsKLSAgICBjaGFyICplbmNvZGluZzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpsb29rdXAiLCAmZW5jb2RpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBfUHlDb2RlY19Mb29rdXAoZW5jb2RpbmcpOwogfQogCi1QeURvY19TVFJWQVIoZW5jb2RlX19kb2NfXywKLSJlbmNvZGUob2JqLCBbZW5jb2RpbmdbLGVycm9yc11dKSAtPiBvYmplY3RcblwKLVxuXAotRW5jb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLiBlbmNvZGluZyBkZWZhdWx0c1xuXAotdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG5cCi1oYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZVxuXAotYSBWYWx1ZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnLCAncmVwbGFjZScgYW5kXG5cCi0neG1sY2hhcnJlZnJlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG5cCi1jb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5lbmNvZGUKKyAgICBvYmo6IG9iamVjdAorICAgIGVuY29kaW5nOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAidXRmLTgiCisgICAgZXJyb3JzOiBzdHIoY19kZWZhdWx0PSJOVUxMIikgPSAic3RyaWN0IgorCitFbmNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCisKK1RoZSBkZWZhdWx0IGVuY29kaW5nIGlzICd1dGYtOCcuICBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhCitkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcKK2Vycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnLCAncmVwbGFjZScKK2FuZCAnYmFja3NsYXNocmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGgKK2NvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb2RlY19lbmNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjMDczZjYyMjQ5YzhkN2MgaW5wdXQ9Y2Q1YjY4NTA0MGZmNjFmMF0qLwogewotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHNzOmVuY29kZSIsICZ2LCAmZW5jb2RpbmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIAogICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgcmV0dXJuIFB5Q29kZWNfRW5jb2RlKHYsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBQeUNvZGVjX0VuY29kZShvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogfQogCi1QeURvY19TVFJWQVIoZGVjb2RlX19kb2NfXywKLSJkZWNvZGUob2JqLCBbZW5jb2RpbmdbLGVycm9yc11dKSAtPiBvYmplY3RcblwKLVxuXAotRGVjb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLiBlbmNvZGluZyBkZWZhdWx0c1xuXAotdG8gdGhlIGRlZmF1bHQgZW5jb2RpbmcuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG5cCi1oYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMgJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZVxuXAotYSBWYWx1ZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZSdcblwKLWFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzXG5cCi1hYmxlIHRvIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZGVjb2RlCisgICAgb2JqOiBvYmplY3QKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInV0Zi04IgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gInN0cmljdCIKKworRGVjb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgorCitEZWZhdWx0IGVuY29kaW5nIGlzICd1dGYtOCcuICBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhCitkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcKK2Vycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnLCAncmVwbGFjZScKK2FuZCAnYmFja3NsYXNocmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGgKK2NvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb2RlY19kZWNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2NvZGVjc19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM4MWNiZjYxODlhN2Y4NzggaW5wdXQ9NzcwMmMwY2MyZmExYWRkNl0qLwogewotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHNzOmRlY29kZSIsICZ2LCAmZW5jb2RpbmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIAogICAgIC8qIERlY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCi0gICAgcmV0dXJuIFB5Q29kZWNfRGVjb2RlKHYsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBQeUNvZGVjX0RlY29kZShvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogfQogCiAvKiAtLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTE0OSwzNyArMTUzLDkgQEAKIFB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX18sCi0iX2ZvcmdldF9jb2RlYygkbW9kdWxlLCBlbmNvZGluZywgLylcbiIKLSItLVxuIgotIlxuIgotIlB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUiKTsKLQotI2RlZmluZSBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGICAgIFwKLSAgICB7Il9mb3JnZXRfY29kZWMiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19fZm9yZ2V0X2NvZGVjLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19fZm9yZ2V0X2NvZGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzOl9mb3JnZXRfY29kZWMiLAotICAgICAgICAmZW5jb2RpbmcpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE3NWU2MzE1OTE3MDJhNWMgaW5wdXQ9MThkNWQ5MmQwZTM4NmMzOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1NmE5Yjk5ZDJkMjgwODAgaW5wdXQ9MThkNWQ5MmQwZTM4NmMzOF0qLwogewogICAgIGlmIChfUHlDb2RlY19Gb3JnZXQoZW5jb2RpbmcpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE4OCw0OCArMTY0LDQ5IEBACiB9CiAKIHN0YXRpYwotUHlPYmplY3QgKmNvZGVjX3R1cGxlKFB5T2JqZWN0ICp1bmljb2RlLAorUHlPYmplY3QgKmNvZGVjX3R1cGxlKFB5T2JqZWN0ICpkZWNvZGVkLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuKQogewotICAgIFB5T2JqZWN0ICp2OwotICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IFB5X0J1aWxkVmFsdWUoIk9uIiwgdW5pY29kZSwgbGVuKTsKLSAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5uIiwgZGVjb2RlZCwgbGVuKTsKIH0KIAogLyogLS0tIFN0cmluZyBjb2RlY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi1zdGF0aWMgUHlPYmplY3QgKgotZXNjYXBlX2RlY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICpkYXRhOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZXNjYXBlX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcihhY2NlcHQ9e3N0ciwgYnVmZmVyfSkKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfHo6ZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhLCAmc2l6ZSwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBjb2RlY190dXBsZShQeUJ5dGVzX0RlY29kZUVzY2FwZShkYXRhLCBzaXplLCBlcnJvcnMsIDAsIE5VTEwpLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjQ4ZmEzZTc4ZDAzZTY1OCBpbnB1dD0wMDE4ZWRmZDk5ZGI3MTRkXSovCit7CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeUJ5dGVzX0RlY29kZUVzY2FwZShkYXRhLT5idWYsIGRhdGEtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgMCwgTlVMTCk7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MuZXNjYXBlX2VuY29kZQorICAgIGRhdGE6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5Qnl0ZXNfVHlwZScpCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZXNjYXBlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitfY29kZWNzX2VzY2FwZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mY2Q2ZjM0ZmU0MTExYzUwIGlucHV0PWRhOWRlZDAwOTkyZjMyZjJdKi8KIHsKLSAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7Ci0gICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBQeU9iamVjdCAqdjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8ejplc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJnN0ciwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3RyKTsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShkYXRhKTsKICAgICBpZiAoc2l6ZSA+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+IGhhbmRsZXJcblwKLVxuXAotUmV0dXJuIHRoZSBlcnJvciBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsaW5nIG5hbWVcblwKLW9yIHJhaXNlIGEgTG9va3VwRXJyb3IsIGlmIG5vIGhhbmRsZXIgZXhpc3RzIHVuZGVyIHRoaXMgbmFtZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3MubG9va3VwX2Vycm9yCisgICAgbmFtZTogc3RyCisgICAgLwogCi1zdGF0aWMgUHlPYmplY3QgKmxvb2t1cF9lcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyCisKK1JldHVybiB0aGUgZXJyb3IgaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBlcnJvciBoYW5kbGluZyBuYW1lIG9yIHJhaXNlIGEKK0xvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzMxZTZkZjhjODNjNjE1OCBpbnB1dD00Nzc1ZGQ2NWU2MjM1YWJhXSovCiB7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpsb29rdXBfZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUNvZGVjX0xvb2t1cEVycm9yKG5hbWUpOwogfQogCiAvKiAtLS0gTW9kdWxlIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIF9jb2RlY3NfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJyZWdpc3RlciIsICAgICAgICAgICAgICAgIGNvZGVjX3JlZ2lzdGVyLCAgICAgICAgICAgICAgICAgTUVUSF9PLAotICAgICAgICByZWdpc3Rlcl9fZG9jX199LAotICAgIHsibG9va3VwIiwgICAgICAgICAgICAgICAgICBjb2RlY19sb29rdXAsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgbG9va3VwX19kb2NfX30sCi0gICAgeyJlbmNvZGUiLCAgICAgICAgICAgICAgICAgIGNvZGVjX2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICBlbmNvZGVfX2RvY19ffSwKLSAgICB7ImRlY29kZSIsICAgICAgICAgICAgICAgICAgY29kZWNfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGRlY29kZV9fZG9jX199LAotICAgIHsiZXNjYXBlX2VuY29kZSIsICAgICAgICAgICBlc2NhcGVfZW5jb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJlc2NhcGVfZGVjb2RlIiwgICAgICAgICAgIGVzY2FwZV9kZWNvZGUsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl84X2VuY29kZSIsICAgICAgICAgICAgdXRmXzhfZW5jb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzhfZGVjb2RlIiwgICAgICAgICAgICB1dGZfOF9kZWNvZGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfN19lbmNvZGUiLCAgICAgICAgICAgIHV0Zl83X2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl83X2RlY29kZSIsICAgICAgICAgICAgdXRmXzdfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2VuY29kZSIsICAgICAgICAgICB1dGZfMTZfZW5jb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfbGVfZW5jb2RlIiwgICAgICAgIHV0Zl8xNl9sZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9iZV9lbmNvZGUiLCAgICAgICAgdXRmXzE2X2JlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2RlY29kZSIsICAgICAgICAgICB1dGZfMTZfZGVjb2RlLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMTZfbGVfZGVjb2RlIiwgICAgICAgIHV0Zl8xNl9sZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8xNl9iZV9kZWNvZGUiLCAgICAgICAgdXRmXzE2X2JlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzE2X2V4X2RlY29kZSIsICAgICAgICB1dGZfMTZfZXhfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfZW5jb2RlIiwgICAgICAgICAgIHV0Zl8zMl9lbmNvZGUsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9sZV9lbmNvZGUiLCAgICAgICAgdXRmXzMyX2xlX2VuY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2JlX2VuY29kZSIsICAgICAgICB1dGZfMzJfYmVfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfZGVjb2RlIiwgICAgICAgICAgIHV0Zl8zMl9kZWNvZGUsICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InV0Zl8zMl9sZV9kZWNvZGUiLCAgICAgICAgdXRmXzMyX2xlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidXRmXzMyX2JlX2RlY29kZSIsICAgICAgICB1dGZfMzJfYmVfZGVjb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1dGZfMzJfZXhfZGVjb2RlIiwgICAgICAgIHV0Zl8zMl9leF9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuaWNvZGVfZXNjYXBlX2VuY29kZSIsICAgdW5pY29kZV9lc2NhcGVfZW5jb2RlLCAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsidW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgICB1bmljb2RlX2VzY2FwZV9kZWNvZGUsICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJ1bmljb2RlX2ludGVybmFsX2VuY29kZSIsIHVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlLCAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlIiwgdW5pY29kZV9pbnRlcm5hbF9kZWNvZGUsICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsIHJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUsICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZSwgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxhdGluXzFfZW5jb2RlIiwgICAgICAgICAgbGF0aW5fMV9lbmNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsibGF0aW5fMV9kZWNvZGUiLCAgICAgICAgICBsYXRpbl8xX2RlY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJhc2NpaV9lbmNvZGUiLCAgICAgICAgICAgIGFzY2lpX2VuY29kZSwgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImFzY2lpX2RlY29kZSIsICAgICAgICAgICAgYXNjaWlfZGVjb2RlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY2hhcm1hcF9lbmNvZGUiLCAgICAgICAgICBjaGFybWFwX2VuY29kZSwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjaGFybWFwX2RlY29kZSIsICAgICAgICAgIGNoYXJtYXBfZGVjb2RlLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNoYXJtYXBfYnVpbGQiLCAgICAgICAgICAgY2hhcm1hcF9idWlsZCwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAgICAgICByZWFkYnVmZmVyX2VuY29kZSwgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9NQkNTCi0gICAgeyJtYmNzX2VuY29kZSIsICAgICAgICAgICAgIG1iY3NfZW5jb2RlLCAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSAgICB7Im1iY3NfZGVjb2RlIiwgICAgICAgICAgICAgbWJjc19kZWNvZGUsICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY29kZV9wYWdlX2VuY29kZSIsICAgICAgICBjb2RlX3BhZ2VfZW5jb2RlLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjb2RlX3BhZ2VfZGVjb2RlIiwgICAgICAgIGNvZGVfcGFnZV9kZWNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSNlbmRpZgotICAgIHsicmVnaXN0ZXJfZXJyb3IiLCAgICAgICAgICByZWdpc3Rlcl9lcnJvciwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgcmVnaXN0ZXJfZXJyb3JfX2RvY19ffSwKLSAgICB7Imxvb2t1cF9lcnJvciIsICAgICAgICAgICAgbG9va3VwX2Vycm9yLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgIGxvb2t1cF9lcnJvcl9fZG9jX199LAorICAgIF9DT0RFQ1NfUkVHSVNURVJfTUVUSE9EREVGCisgICAgX0NPREVDU19MT09LVVBfTUVUSE9EREVGCisgICAgX0NPREVDU19FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19FU0NBUEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl84X0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl84X0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl83X0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl83X0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfTEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0JFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMTZfTEVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzE2X0JFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8xNl9FWF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0xFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9CRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVVRGXzMyX0xFX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1VURl8zMl9CRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VVEZfMzJfRVhfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9FU0NBUEVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19VTklDT0RFX0lOVEVSTkFMX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX1JBV19VTklDT0RFX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfTEFUSU5fMV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19MQVRJTl8xX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0FTQ0lJX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0FTQ0lJX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NIQVJNQVBfRU5DT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfQ0hBUk1BUF9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19DSEFSTUFQX0JVSUxEX01FVEhPRERFRgorICAgIF9DT0RFQ1NfUkVBREJVRkZFUl9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19SRUdJU1RFUl9FUlJPUl9NRVRIT0RERUYKKyAgICBfQ09ERUNTX0xPT0tVUF9FUlJPUl9NRVRIT0RERUYKICAgICBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggNjU4MDNhNC4uZjQ1MGYyNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC0xLDUwICsxLDczIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKKyNpZmRlZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAgICAgICAgIC8qIEZvciBzaXplX3QgKi8KKyNlbmRpZgorCiAvKiBjb2xsZWN0aW9ucyBtb2R1bGUgaW1wbGVtZW50YXRpb24gb2YgYSBkZXF1ZSgpIGRhdGF0eXBlCiAgICBXcml0dGVuIGFuZCBtYWludGFpbmVkIGJ5IFJheW1vbmQgRC4gSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KLSAgIENvcHlyaWdodCAoYykgMjAwNC0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgQ29weXJpZ2h0IChjKSAyMDA0LTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogKi8KIAogLyogVGhlIGJsb2NrIGxlbmd0aCBtYXkgYmUgc2V0IHRvIGFueSBudW1iZXIgb3ZlciAxLiAgTGFyZ2VyIG51bWJlcnMKICAqIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHRoZSBtZW1vcnkgYWxsb2NhdG9yLCBnaXZlIGZhc3RlcgotICogaW5kZXhpbmcgYW5kIHJvdGF0aW9uLCBhbmQgcmVkdWNlIHRoZSBsaW5rOjpkYXRhIG92ZXJoZWFkIHJhdGlvLgotICoKLSAqIElkZWFsbHksIHRoZSBibG9jayBsZW5ndGggd2lsbCBiZSBzZXQgdG8gdHdvIGxlc3MgdGhhbiBzb21lCi0gKiBtdWx0aXBsZSBvZiB0aGUgY2FjaGUtbGluZSBsZW5ndGggKHNvIHRoYXQgdGhlIGZ1bGwgYmxvY2sKLSAqIGluY2x1ZGluZyB0aGUgbGVmdGxpbmsgYW5kIHJpZ2h0bGluayB3aWxsIGZpdCBuZWF0bHkgaW50bwotICogY2FjaGUgbGluZXMpLgorICogaW5kZXhpbmcgYW5kIHJvdGF0aW9uLCBhbmQgcmVkdWNlIHRoZSBsaW5rIHRvIGRhdGEgb3ZlcmhlYWQgcmF0aW8uCisgKiBNYWtpbmcgdGhlIGJsb2NrIGxlbmd0aCBhIHBvd2VyIG9mIHR3byBzcGVlZHMtdXAgdGhlIG1vZHVsbworICogYW5kIGRpdmlzaW9uIGNhbGN1bGF0aW9ucyBpbiBkZXF1ZV9pdGVtKCkgYW5kIGRlcXVlX2Fzc19pdGVtKCkuCiAgKi8KIAotI2RlZmluZSBCTE9DS0xFTiA2MgorI2RlZmluZSBCTE9DS0xFTiA2NAogI2RlZmluZSBDRU5URVIgKChCTE9DS0xFTiAtIDEpIC8gMikKIAotLyogQSBgZGVxdWVvYmplY3RgIGlzIGNvbXBvc2VkIG9mIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGBibG9ja2Agbm9kZXMuCisvKiBEYXRhIGZvciBkZXF1ZSBvYmplY3RzIGlzIHN0b3JlZCBpbiBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBmaXhlZAorICogbGVuZ3RoIGJsb2Nrcy4gIFRoaXMgYXNzdXJlcyB0aGF0IGFwcGVuZHMgb3IgcG9wcyBuZXZlciBtb3ZlIGFueQorICogb3RoZXIgZGF0YSBlbGVtZW50cyBiZXNpZGVzIHRoZSBvbmUgYmVpbmcgYXBwZW5kZWQgb3IgcG9wcGVkLgorICoKKyAqIEFub3RoZXIgYWR2YW50YWdlIGlzIHRoYXQgaXQgY29tcGxldGVseSBhdm9pZHMgdXNlIG9mIHJlYWxsb2MoKSwKKyAqIHJlc3VsdGluZyBpbiBtb3JlIHByZWRpY3RhYmxlIHBlcmZvcm1hbmNlLgorICoKKyAqIFRleHRib29rIGltcGxlbWVudGF0aW9ucyBvZiBkb3VibHktbGlua2VkIGxpc3RzIHN0b3JlIG9uZSBkYXR1bQorICogcGVyIGxpbmssIGJ1dCB0aGF0IGdpdmVzIHRoZW0gYSAyMDAlIG1lbW9yeSBvdmVyaGVhZCAoYSBwcmV2IGFuZAorICogbmV4dCBsaW5rIGZvciBlYWNoIGRhdHVtKSBhbmQgaXQgY29zdHMgb25lIG1hbGxvYygpIGNhbGwgcGVyIGRhdGEKKyAqIGVsZW1lbnQuICBCeSB1c2luZyBmaXhlZC1sZW5ndGggYmxvY2tzLCB0aGUgbGluayB0byBkYXRhIHJhdGlvIGlzCisgKiBzaWduaWZpY2FudGx5IGltcHJvdmVkIGFuZCB0aGVyZSBhcmUgcHJvcG9ydGlvbmFsbHkgZmV3ZXIgY2FsbHMKKyAqIHRvIG1hbGxvYygpIGFuZCBmcmVlKCkuICBUaGUgZGF0YSBibG9ja3Mgb2YgY29uc2VjdXRpdmUgcG9pbnRlcnMKKyAqIGFsc28gaW1wcm92ZSBjYWNoZSBsb2NhbGl0eS4KKyAqCiAgKiBUaGUgbGlzdCBvZiBibG9ja3MgaXMgbmV2ZXIgZW1wdHksIHNvIGQubGVmdGJsb2NrIGFuZCBkLnJpZ2h0YmxvY2sKICAqIGFyZSBuZXZlciBlcXVhbCB0byBOVUxMLiAgVGhlIGxpc3QgaXMgbm90IGNpcmN1bGFyLgogICoKICAqIEEgZGVxdWUgZCdzIGZpcnN0IGVsZW1lbnQgaXMgYXQgZC5sZWZ0YmxvY2tbbGVmdGluZGV4XQogICogYW5kIGl0cyBsYXN0IGVsZW1lbnQgaXMgYXQgZC5yaWdodGJsb2NrW3JpZ2h0aW5kZXhdLgotICogVW5saWtlIFB5dGhvbiBzbGljZSBpbmRpY2VzLCB0aGVzZSBpbmRpY2VzIGFyZSBpbmNsdXNpdmUKLSAqIG9uIGJvdGggZW5kcy4gIFRoaXMgbWFrZXMgdGhlIGFsZ29yaXRobXMgZm9yIGxlZnQgYW5kCi0gKiByaWdodCBvcGVyYXRpb25zIG1vcmUgc3ltbWV0cmljYWwgYW5kIHNpbXBsaWZpZXMgdGhlIGRlc2lnbi4KICAqCi0gKiBUaGUgaW5kaWNlcywgZC5sZWZ0aW5kZXggYW5kIGQucmlnaHRpbmRleCBhcmUgYWx3YXlzIGluIHRoZSByYW5nZQotICogICAgIDAgPD0gaW5kZXggPCBCTE9DS0xFTi4KLSAqIFRoZWlyIGV4YWN0IHJlbGF0aW9uc2hpcCBpczoKLSAqICAgICAoZC5sZWZ0aW5kZXggKyBkLmxlbiAtIDEpICUgQkxPQ0tMRU4gPT0gZC5yaWdodGluZGV4LgorICogVW5saWtlIFB5dGhvbiBzbGljZSBpbmRpY2VzLCB0aGVzZSBpbmRpY2VzIGFyZSBpbmNsdXNpdmUgb24gYm90aAorICogZW5kcy4gIFRoaXMgbWFrZXMgdGhlIGFsZ29yaXRobXMgZm9yIGxlZnQgYW5kIHJpZ2h0IG9wZXJhdGlvbnMKKyAqIG1vcmUgc3ltbWV0cmljYWwgYW5kIGl0IHNpbXBsaWZpZXMgdGhlIGRlc2lnbi4KICAqCi0gKiBFbXB0eSBkZXF1ZXMgaGF2ZSBkLmxlbiA9PSAwOyBkLmxlZnRibG9jaz09ZC5yaWdodGJsb2NrOwotICogZC5sZWZ0aW5kZXggPT0gQ0VOVEVSKzE7IGFuZCBkLnJpZ2h0aW5kZXggPT0gQ0VOVEVSLgorICogVGhlIGluZGljZXMsIGQubGVmdGluZGV4IGFuZCBkLnJpZ2h0aW5kZXggYXJlIGFsd2F5cyBpbiB0aGUgcmFuZ2U6CisgKiAgICAgMCA8PSBpbmRleCA8IEJMT0NLTEVOCisgKgorICogQW5kIHRoZWlyIGV4YWN0IHJlbGF0aW9uc2hpcCBpczoKKyAqICAgICAoZC5sZWZ0aW5kZXggKyBkLmxlbiAtIDEpICUgQkxPQ0tMRU4gPT0gZC5yaWdodGluZGV4CisgKgorICogV2hlbmV2ZXIgZC5sZWZ0YmxvY2sgPT0gZC5yaWdodGJsb2NrLCB0aGVuOgorICogICAgIGQubGVmdGluZGV4ICsgZC5sZW4gLSAxID09IGQucmlnaHRpbmRleAorICoKKyAqIEhvd2V2ZXIsIHdoZW4gZC5sZWZ0YmxvY2sgIT0gZC5yaWdodGJsb2NrLCB0aGUgZC5sZWZ0aW5kZXggYW5kCisgKiBkLnJpZ2h0aW5kZXggYmVjb21lIGluZGljZXMgaW50byBkaXN0aW5jdCBibG9ja3MgYW5kIGVpdGhlciBtYXkKKyAqIGJlIGxhcmdlciB0aGFuIHRoZSBvdGhlci4KKyAqCisgKiBFbXB0eSBkZXF1ZXMgaGF2ZToKKyAqICAgICBkLmxlbiA9PSAwCisgKiAgICAgZC5sZWZ0YmxvY2sgPT0gZC5yaWdodGJsb2NrCisgKiAgICAgZC5sZWZ0aW5kZXggPT0gQ0VOVEVSICsgMQorICogICAgIGQucmlnaHRpbmRleCA9PSBDRU5URVIKKyAqCiAgKiBDaGVja2luZyBmb3IgZC5sZW4gPT0gMCBpcyB0aGUgaW50ZW5kZWQgd2F5IHRvIHNlZSB3aGV0aGVyIGQgaXMgZW1wdHkuCi0gKgotICogV2hlbmV2ZXIgZC5sZWZ0YmxvY2sgPT0gZC5yaWdodGJsb2NrLAotICogICAgIGQubGVmdGluZGV4ICsgZC5sZW4gLSAxID09IGQucmlnaHRpbmRleC4KLSAqCi0gKiBIb3dldmVyLCB3aGVuIGQubGVmdGJsb2NrICE9IGQucmlnaHRibG9jaywgZC5sZWZ0aW5kZXggYW5kIGQucmlnaHRpbmRleAotICogYmVjb21lIGluZGljZXMgaW50byBkaXN0aW5jdCBibG9ja3MgYW5kIGVpdGhlciBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlCi0gKiBvdGhlci4KICAqLwogCiB0eXBlZGVmIHN0cnVjdCBCTE9DSyB7CkBAIC01Myw2ICs3NiwxOSBAQAogICAgIHN0cnVjdCBCTE9DSyAqcmlnaHRsaW5rOwogfSBibG9jazsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X1ZBUl9IRUFECisgICAgYmxvY2sgKmxlZnRibG9jazsKKyAgICBibG9jayAqcmlnaHRibG9jazsKKyAgICBQeV9zc2l6ZV90IGxlZnRpbmRleDsgICAgICAgLyogMCA8PSBsZWZ0aW5kZXggPCBCTE9DS0xFTiAqLworICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleDsgICAgICAvKiAwIDw9IHJpZ2h0aW5kZXggPCBCTE9DS0xFTiAqLworICAgIHNpemVfdCBzdGF0ZTsgICAgICAgICAgICAgICAvKiBpbmNyZW1lbnRlZCB3aGVuZXZlciB0aGUgaW5kaWNlcyBtb3ZlICovCisgICAgUHlfc3NpemVfdCBtYXhsZW47CisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OworfSBkZXF1ZW9iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZV90eXBlOworCiAvKiBGb3IgZGVidWcgYnVpbGRzLCBhZGQgZXJyb3IgY2hlY2tpbmcgdG8gdHJhY2sgdGhlIGVuZHBvaW50cwogICogaW4gdGhlIGNoYWluIG9mIGxpbmtzLiAgVGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoYXQgbGluawogICogYXNzaWdubWVudHMgb25seSB0YWtlIHBsYWNlIGF0IGVuZHBvaW50cyBzbyB0aGF0IGxpbmtzIGFscmVhZHkKQEAgLTc0LDggKzExMCwxNCBAQAogI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCiAjZW5kaWYKIAorLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCisgICBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LgorKi8KKworI2RlZmluZSBNQVhfREVRVUVfTEVOIChQWV9TU0laRV9UX01BWCAtIDMqQkxPQ0tMRU4pCisKIC8qIEEgc2ltcGxlIGZyZWVsaXN0aW5nIHNjaGVtZSBpcyB1c2VkIHRvIG1pbmltaXplIGNhbGxzIHRvIHRoZSBtZW1vcnkKLSAgIGFsbG9jYXRvci4gIEl0IGFjY29tb2RhdGVzIGNvbW1vbiB1c2UgY2FzZXMgd2hlcmUgbmV3IGJsb2NrcyBhcmUgYmVpbmcKKyAgIGFsbG9jYXRvci4gIEl0IGFjY29tbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCiAgICBhZGRlZCBhdCBhYm91dCB0aGUgc2FtZSByYXRlIGFzIG9sZCBibG9ja3MgYXJlIGJlaW5nIGZyZWVkLgogICovCiAKQEAgLTg2LDkgKzEyOCw3IEBACiBzdGF0aWMgYmxvY2sgKgogbmV3YmxvY2soUHlfc3NpemVfdCBsZW4pIHsKICAgICBibG9jayAqYjsKLSAgICAvKiBUbyBwcmV2ZW50IGxlbiBmcm9tIG92ZXJmbG93aW5nIFBZX1NTSVpFX1RfTUFYLCB3ZSByZWZ1c2UgdG8KLSAgICAgKiBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LiAqLwotICAgIGlmIChsZW4gPj0gUFlfU1NJWkVfVF9NQVggLSAyKkJMT0NLTEVOKSB7CisgICAgaWYgKGxlbiA+PSBNQVhfREVRVUVfTEVOKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBibG9ja3MgdG8gdGhlIGRlcXVlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2LDM0ICsxNTYsMTEgQEAKICAgICB9CiB9CiAKLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9WQVJfSEVBRAotICAgIGJsb2NrICpsZWZ0YmxvY2s7Ci0gICAgYmxvY2sgKnJpZ2h0YmxvY2s7Ci0gICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIGluIHJhbmdlKEJMT0NLTEVOKSAqLwotICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleDsgICAgICAvKiBpbiByYW5nZShCTE9DS0xFTikgKi8KLSAgICBsb25nIHN0YXRlOyAgICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLwotICAgIFB5X3NzaXplX3QgbWF4bGVuOwotICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KLX0gZGVxdWVvYmplY3Q7Ci0KLS8qIFRoZSBkZXF1ZSdzIHNpemUgbGltaXQgaXMgZC5tYXhsZW4uICBUaGUgbGltaXQgY2FuIGJlIHplcm8gb3IgcG9zaXRpdmUuCi0gKiBJZiB0aGVyZSBpcyBubyBsaW1pdCwgdGhlbiBkLm1heGxlbiA9PSAtMS4KLSAqCi0gKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMgZ3Jvd24gcGFzdAotICogdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0IGJ5IHBvcHBpbmcgYW4KLSAqIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLAotICogYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KLSAqLwotCi0jZGVmaW5lIFRSSU0oZCwgcG9wZnVuY3Rpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChkLT5tYXhsZW4gIT0gLTEgJiYgUHlfU0laRShkKSA+IGQtPm1heGxlbikgeyAgICAgICBcCi0gICAgICAgIFB5T2JqZWN0ICpydiA9IHBvcGZ1bmN0aW9uKGQsIE5VTEwpOyAgICAgICAgICAgICAgICBcCi0gICAgICAgIGFzc2VydChydiAhPSBOVUxMICAmJiAgUHlfU0laRShkKSA8PSBkLT5tYXhsZW4pOyAgICBcCi0gICAgICAgIFB5X0RFQ1JFRihydik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IGRlcXVlX3R5cGU7CisvKiBYWFggVG9kbzoKKyAgIElmIGFsaWduZWQgbWVtb3J5IGFsbG9jYXRpb25zIGJlY29tZSBhdmFpbGFibGUsIG1ha2UgdGhlCisgICBkZXF1ZSBvYmplY3QgNjQgYnl0ZSBhbGlnbmVkIHNvIHRoYXQgYWxsIG9mIHRoZSBmaWVsZHMKKyAgIGNhbiBiZSByZXRyaWV2ZWQgb3IgdXBkYXRlZCBpbiBhIHNpbmdsZSBjYWNoZSBsaW5lLgorKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKQEAgLTE2NSwxNCArMTgyLDE0IEBACiAgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKIAogICAgIGFzc2VydChCTE9DS0xFTiA+PSAyKTsKKyAgICBQeV9TSVpFKGRlcXVlKSA9IDA7CiAgICAgZGVxdWUtPmxlZnRibG9jayA9IGI7CiAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOwogICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwogICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgIFB5X1NJWkUoZGVxdWUpID0gMDsKICAgICBkZXF1ZS0+c3RhdGUgPSAwOwotICAgIGRlcXVlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAgICAgZGVxdWUtPm1heGxlbiA9IC0xOworICAgIGRlcXVlLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiB9CkBAIC0xOTMsMTMgKzIxMCw3IEBACiAgICAgZGVxdWUtPnN0YXRlKys7CiAKICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKLSAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ID09IGRlcXVlLT5yaWdodGluZGV4KzEpOwotICAgICAgICAgICAgLyogcmUtY2VudGVyIGluc3RlYWQgb2YgZnJlZWluZyBhIGJsb2NrICovCi0gICAgICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKLSAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkpIHsKICAgICAgICAgICAgIHByZXZibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrICE9IGRlcXVlLT5yaWdodGJsb2NrKTsKICAgICAgICAgICAgIGZyZWVibG9jayhkZXF1ZS0+cmlnaHRibG9jayk7CkBAIC0yMDcsNiArMjE4LDEyIEBACiAgICAgICAgICAgICBNQVJLX0VORChwcmV2YmxvY2stPnJpZ2h0bGluayk7CiAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jayA9IHByZXZibG9jazsKICAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQkxPQ0tMRU4gLSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOworICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7CisgICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KKyAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOworICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGl0ZW07CkBAIC0yMzEsMTMgKzI0OCw3IEBACiAgICAgZGVxdWUtPnN0YXRlKys7CiAKICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSBCTE9DS0xFTikgewotICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewotICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwotICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0aW5kZXggPT0gZGVxdWUtPnJpZ2h0aW5kZXgrMSk7Ci0gICAgICAgICAgICAvKiByZS1jZW50ZXIgaW5zdGVhZCBvZiBmcmVlaW5nIGEgYmxvY2sgKi8KLSAgICAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwotICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBDRU5URVI7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOwogICAgICAgICAgICAgcHJldmJsb2NrID0gZGVxdWUtPmxlZnRibG9jay0+cmlnaHRsaW5rOwogICAgICAgICAgICAgZnJlZWJsb2NrKGRlcXVlLT5sZWZ0YmxvY2spOwpAQCAtMjQ1LDYgKzI1NiwxMiBAQAogICAgICAgICAgICAgTUFSS19FTkQocHJldmJsb2NrLT5sZWZ0bGluayk7CiAgICAgICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrID0gcHJldmJsb2NrOwogICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CisgICAgICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCA9PSBkZXF1ZS0+cmlnaHRpbmRleCsxKTsKKyAgICAgICAgICAgIC8qIHJlLWNlbnRlciBpbnN0ZWFkIG9mIGZyZWVpbmcgYSBibG9jayAqLworICAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IENFTlRFUiArIDE7CisgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaXRlbTsKQEAgLTI1MiwxMSArMjY5LDQyIEBACiAKIFB5RG9jX1NUUlZBUihwb3BsZWZ0X2RvYywgIlJlbW92ZSBhbmQgcmV0dXJuIHRoZSBsZWZ0bW9zdCBlbGVtZW50LiIpOwogCisvKiBUaGUgZGVxdWUncyBzaXplIGxpbWl0IGlzIGQubWF4bGVuLiAgVGhlIGxpbWl0IGNhbiBiZSB6ZXJvIG9yIHBvc2l0aXZlLgorICogSWYgdGhlcmUgaXMgbm8gbGltaXQsIHRoZW4gZC5tYXhsZW4gPT0gLTEuCisgKgorICogQWZ0ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byBhIGRlcXVlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgaGFzIGdyb3duIHBhc3QKKyAqIHRoZSBsaW1pdC4gSWYgaXQgaGFzLCB3ZSBnZXQgdGhlIHNpemUgYmFjayBkb3duIHRvIHRoZSBsaW1pdCBieSBwb3BwaW5nIGFuCisgKiBpdGVtIG9mZiBvZiB0aGUgb3Bwb3NpdGUgZW5kLiAgVGhlIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwKKyAqIGFwcGVuZGxlZnQoKSwgZXh0ZW5kKCksIGFuZCBleHRlbmRsZWZ0KCkuCisgKi8KKworc3RhdGljIHZvaWQKK2RlcXVlX3RyaW1fcmlnaHQoZGVxdWVvYmplY3QgKmRlcXVlKQoreworICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgeworICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCk7CisgICAgICAgIGFzc2VydChQeV9TSVpFKGRlcXVlKSA8PSBkZXF1ZS0+bWF4bGVuKTsKKyAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitkZXF1ZV90cmltX2xlZnQoZGVxdWVvYmplY3QgKmRlcXVlKQoreworICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgeworICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOworICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7CisgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgfQorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfYXBwZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgZGVxdWUtPnN0YXRlKys7Ci0gICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOLTEpIHsKKyAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CiAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzEsNyArMzE5LDcgQEAKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5yaWdodGluZGV4Kys7CiAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKLSAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3BsZWZ0KTsKKyAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0yOTYsNyArMzQ0LDcgQEAKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICBUUklNKGRlcXVlLCBkZXF1ZV9wb3ApOworICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0zNTIsNyArNDAwLDcgQEAKIAogICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKLSAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOLTEpIHsKKyAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewogICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwpAQCAtMzY5LDExICs0MTcsMTMgQEAKICAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKLSAgICAgICAgVFJJTShkZXF1ZSwgZGVxdWVfcG9wbGVmdCk7CisgICAgICAgIGRlcXVlX3RyaW1fbGVmdChkZXF1ZSk7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9ERUNSRUYoaXQpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNDMwLDExICs0ODAsMTMgQEAKICAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICAgICAgVFJJTShkZXF1ZSwgZGVxdWVfcG9wKTsKKyAgICAgICAgZGVxdWVfdHJpbV9yaWdodChkZXF1ZSk7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9ERUNSRUYoaXQpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtNDQ5LDExICs1MDEsMTUxIEBACiAgICAgcmVzdWx0ID0gZGVxdWVfZXh0ZW5kKGRlcXVlLCBvdGhlcik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIFB5X0lOQ1JFRihkZXF1ZSk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogfQogCitzdGF0aWMgUHlPYmplY3QgKmRlcXVlX2NvcHkoUHlPYmplY3QgKmRlcXVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2NvbmNhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICpvdGhlcikKK3sKKyAgICBQeU9iamVjdCAqbmV3X2RlcXVlLCAqcmVzdWx0OworICAgIGludCBydjsKKworICAgIHJ2ID0gUHlPYmplY3RfSXNJbnN0YW5jZShvdGhlciwgKFB5T2JqZWN0ICopJmRlcXVlX3R5cGUpOworICAgIGlmIChydiA8PSAwKSB7CisgICAgICAgIGlmIChydiA9PSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4gb25seSBjb25jYXRlbmF0ZSBkZXF1ZSAobm90IFwiJS4yMDBzXCIpIHRvIGRlcXVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmV3X2RlcXVlID0gZGVxdWVfY29weSgoUHlPYmplY3QgKilkZXF1ZSk7CisgICAgaWYgKG5ld19kZXF1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBkZXF1ZV9leHRlbmQoKGRlcXVlb2JqZWN0ICopbmV3X2RlcXVlLCBvdGhlcik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIG5ld19kZXF1ZTsKK30KKworc3RhdGljIHZvaWQgZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK3sKKyAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICAvKiBYWFggYWRkIGEgc3BlY2lhbCBjYXNlIGZvciB3aGVuIG1heGxlbiBpcyBkZWZpbmVkICovCisgICAgaWYgKG4gPCAwKQorICAgICAgICBuID0gMDsKKyAgICBlbHNlIGlmIChuID4gMCAmJiBQeV9TSVpFKGRlcXVlKSA+IE1BWF9ERVFVRV9MRU4gLyBuKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIG5ld19kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlX25ldygmZGVxdWVfdHlwZSwgKFB5T2JqZWN0ICopTlVMTCwgKFB5T2JqZWN0ICopTlVMTCk7CisgICAgbmV3X2RlcXVlLT5tYXhsZW4gPSBkZXF1ZS0+bWF4bGVuOworCisgICAgZm9yICggOyBuIDsgbi0tKSB7CisgICAgICAgIHJlc3VsdCA9IGRlcXVlX2V4dGVuZChuZXdfZGVxdWUsIChQeU9iamVjdCAqKWRlcXVlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X2RlcXVlOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfaW5wbGFjZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCit7CisgICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIFB5T2JqZWN0ICpzZXE7CisgICAgUHlPYmplY3QgKnJ2OworCisgICAgc2l6ZSA9IFB5X1NJWkUoZGVxdWUpOworICAgIGlmIChzaXplID09IDAgfHwgbiA9PSAxKSB7CisgICAgICAgIFB5X0lOQ1JFRihkZXF1ZSk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKKyAgICB9CisKKyAgICBpZiAobiA8PSAwKSB7CisgICAgICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKKyAgICAgICAgUHlfSU5DUkVGKGRlcXVlKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOworICAgIH0KKworICAgIGlmIChzaXplID4gTUFYX0RFUVVFX0xFTiAvIG4pIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICAvKiBjb21tb24gY2FzZSwgcmVwZWF0aW5nIGEgc2luZ2xlIGVsZW1lbnQgKi8KKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdOworCisgICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIG4gPiBkZXF1ZS0+bWF4bGVuKQorICAgICAgICAgICAgbiA9IGRlcXVlLT5tYXhsZW47CisKKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCBuLTEgOyBpKyspIHsKKyAgICAgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKGRlcXVlLCBpdGVtKTsKKyAgICAgICAgICAgIGlmIChydiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoZGVxdWUpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CisgICAgfQorCisgICAgc2VxID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoc2VxID09IE5VTEwpCisgICAgICAgIHJldHVybiBzZXE7CisKKyAgICBmb3IgKGkgPSAwIDsgaSA8IG4tMSA7IGkrKykgeworICAgICAgICBydiA9IGRlcXVlX2V4dGVuZChkZXF1ZSwgc2VxKTsKKyAgICAgICAgaWYgKHJ2ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGRlcXVlKTsKKyAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7Cit9CisKKy8qIFRoZSByb3RhdGUoKSBtZXRob2QgaXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBhbmQgaXMgdXNlZCBpbnRlcm5hbGx5CithcyBhIHByaW1pdGl2ZSBmb3Igb3RoZXIgbWV0aG9kcy4KKworUm90YXRpb24gYnkgMSBvciAtMSBpcyBhIGNvbW1vbiBjYXNlLCBzbyBhbnkgb3B0aW1pemF0aW9ucyBmb3IgaGlnaAordm9sdW1lIHJvdGF0aW9ucyBzaG91bGQgdGFrZSBjYXJlIG5vdCB0byBwZW5hbGl6ZSB0aGUgY29tbW9uIGNhc2UuCisKK0NvbmNlcHR1YWxseSwgYSByb3RhdGUgYnkgb25lIGlzIGVxdWl2YWxlbnQgdG8gYSBwb3Agb24gb25lIHNpZGUgYW5kIGFuCithcHBlbmQgb24gdGhlIG90aGVyLiAgSG93ZXZlciwgYSBwb3AvYXBwZW5kIHBhaXIgaXMgdW5uZWNlc3NhcmlseSBzbG93CitiZWNhdXNlIGl0IHJlcXVpcmVzIGEgaW5jcmVmL2RlY3JlZiBwYWlyIGZvciBhbiBvYmplY3QgbG9jYXRlZCByYW5kb21seQoraW4gbWVtb3J5LiAgSXQgaXMgYmV0dGVyIHRvIGp1c3QgbW92ZSB0aGUgb2JqZWN0IHBvaW50ZXIgZnJvbSBvbmUgYmxvY2sKK3RvIHRoZSBuZXh0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHJlZmVyZW5jZSBjb3VudC4KKworV2hlbiBtb3ZpbmcgYmF0Y2hlcyBvZiBwb2ludGVycywgaXQgaXMgdGVtcHRpbmcgdG8gdXNlIG1lbWNweSgpIGJ1dCB0aGF0Citwcm92ZWQgdG8gYmUgc2xvd2VyIHRoYW4gYSBzaW1wbGUgbG9vcCBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnMuCitNZW1jcHkoKSBjYW5ub3Qga25vdyBpbiBhZHZhbmNlIHRoYXQgd2UncmUgY29weWluZyBwb2ludGVycyBpbnN0ZWFkIG9mCitieXRlcywgdGhhdCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgcG9pbnRlciBhbGlnbmVkIGFuZAorbm9uLW92ZXJsYXBwaW5nLCB0aGF0IG1vdmluZyBqdXN0IG9uZSBwb2ludGVyIGlzIGEgY29tbW9uIGNhc2UsIHRoYXQgd2UKK25ldmVyIG5lZWQgdG8gbW92ZSBtb3JlIHRoYW4gQkxPQ0tMRU4gcG9pbnRlcnMsIGFuZCB0aGF0IGF0IGxlYXN0IG9uZQorcG9pbnRlciBpcyBhbHdheXMgbW92ZWQuCisKK0ZvciBoaWdoIHZvbHVtZSByb3RhdGlvbnMsIG5ld2Jsb2NrKCkgYW5kIGZyZWVibG9jaygpIGFyZSBuZXZlciBjYWxsZWQKK21vcmUgdGhhbiBvbmNlLiAgUHJldmlvdXNseSBlbXB0aWVkIGJsb2NrcyBhcmUgaW1tZWRpYXRlbHkgcmV1c2VkIGFzIGEKK2Rlc3RpbmF0aW9uIGJsb2NrLiAgSWYgYSBibG9jayBpcyBsZWZ0LW92ZXIgYXQgdGhlIGVuZCwgaXQgaXMgZnJlZWQuCisqLworCiBzdGF0aWMgaW50CiBfZGVxdWVfcm90YXRlKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQogewpAQCAtNTAzLDEzICs2OTUsMTMgQEAKICAgICAgICAgICAgIGlmIChtID4gbGVmdGluZGV4KQogICAgICAgICAgICAgICAgIG0gPSBsZWZ0aW5kZXg7CiAgICAgICAgICAgICBhc3NlcnQgKG0gPiAwICYmIG0gPD0gbGVuKTsKLSAgICAgICAgICAgIHNyYyA9ICZyaWdodGJsb2NrLT5kYXRhW3JpZ2h0aW5kZXhdOwotICAgICAgICAgICAgZGVzdCA9ICZsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4IC0gMV07CiAgICAgICAgICAgICByaWdodGluZGV4IC09IG07CiAgICAgICAgICAgICBsZWZ0aW5kZXggLT0gbTsKKyAgICAgICAgICAgIHNyYyA9ICZyaWdodGJsb2NrLT5kYXRhW3JpZ2h0aW5kZXggKyAxXTsKKyAgICAgICAgICAgIGRlc3QgPSAmbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CiAgICAgICAgICAgICBuIC09IG07CiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgKihkZXN0LS0pID0gKihzcmMtLSk7CisgICAgICAgICAgICAgICAgKihkZXN0KyspID0gKihzcmMrKyk7CiAgICAgICAgICAgICB9IHdoaWxlICgtLW0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CkBAIC01ODUsNyArNzc3LDcgQEAKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cm90YXRlIiwgJm4pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoX2RlcXVlX3JvdGF0ZShkZXF1ZSwgbikgPT0gMCkKKyAgICBpZiAoIV9kZXF1ZV9yb3RhdGUoZGVxdWUsIG4pKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTYwMCw3ICs3OTIsNyBAQAogICAgIGJsb2NrICpyaWdodGJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgcmlnaHRpbmRleCA9IGRlcXVlLT5yaWdodGluZGV4OwotICAgIFB5X3NzaXplX3QgbiA9IChQeV9TSVpFKGRlcXVlKSkvMjsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKSAvIDI7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICp0bXA7CiAKQEAgLTY0Myw4ICs4MzUsOCBAQAogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKKyAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgUHlPYmplY3QgKml0ZW07Ci0gICAgbG9uZyBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBpbnQgY21wOwogCiAgICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKQEAgLTY3NSw2ICs4NjcsMzggQEAKIFB5RG9jX1NUUlZBUihjb3VudF9kb2MsCiAiRC5jb3VudCh2YWx1ZSkgLT4gaW50ZWdlciAtLSByZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHZhbHVlIik7CiAKK3N0YXRpYyBpbnQKK2RlcXVlX2NvbnRhaW5zKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKnYpCit7CisgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgaW50IGNtcDsKKworICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgICAgIENIRUNLX05PVF9FTkQoYik7CisgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKKyAgICAgICAgaWYgKGNtcCkgeworICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBtdXRhdGVkIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCsrOworICAgICAgICBpZiAoaW5kZXggPT0gQkxPQ0tMRU4pIHsKKyAgICAgICAgICAgIGIgPSBiLT5yaWdodGxpbms7CisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeV9zc2l6ZV90CiBkZXF1ZV9sZW4oZGVxdWVvYmplY3QgKmRlcXVlKQogewpAQCAtNjgyLDYgKzkwNiwxMDEgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2luZGV4KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpLCBzdGFydD0wLCBzdG9wPVB5X1NJWkUoZGVxdWUpOworICAgIFB5T2JqZWN0ICp2LCAqaXRlbTsKKyAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0b3ApKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgIHN0YXJ0ICs9IFB5X1NJWkUoZGVxdWUpOworICAgICAgICBpZiAoc3RhcnQgPCAwKQorICAgICAgICAgICAgc3RhcnQgPSAwOworICAgIH0KKyAgICBpZiAoc3RvcCA8IDApIHsKKyAgICAgICAgc3RvcCArPSBQeV9TSVpFKGRlcXVlKTsKKyAgICAgICAgaWYgKHN0b3AgPCAwKQorICAgICAgICAgICAgc3RvcCA9IDA7CisgICAgfQorICAgIGlmIChzdG9wID4gUHlfU0laRShkZXF1ZSkpCisgICAgICAgIHN0b3AgPSBQeV9TSVpFKGRlcXVlKTsKKworICAgIGZvciAoaT0wIDsgaTxzdG9wIDsgaSsrKSB7CisgICAgICAgIGlmIChpID49IHN0YXJ0KSB7CisgICAgICAgICAgICBpbnQgY21wOworICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKKyAgICAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOworICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiJVIgaXMgbm90IGluIGRlcXVlIiwgdik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihpbmRleF9kb2MsCisiRC5pbmRleCh2YWx1ZSwgW3N0YXJ0LCBbc3RvcF1dKSAtPiBpbnRlZ2VyIC0tIHJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZS5cbiIKKyJSYWlzZXMgVmFsdWVFcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IHByZXNlbnQuIik7CisKKy8qIGluc2VydCgpLCByZW1vdmUoKSwgYW5kIGRlbGl0ZW0oKSBhcmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YKKyAgIHJvdGF0ZSgpIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlIHBlcmZvcm1hbmNlIG5lYXIgdGhlIGVuZAorICAgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoZXNlIG1ldGhvZHMgYmVjb21lIHBvcHVsYXIsIGl0IGlzIG5vdAorICAgaGFyZCB0byByZS1pbXBsZW1lbnQgdGhpcyB1c2luZyBkaXJlY3QgZGF0YSBtb3ZlbWVudCAoc2ltaWxhciB0bworICAgdGhlIGNvZGUgdXNlZCBpbiBsaXN0IHNsaWNlIGFzc2lnbm1lbnRzKSBhbmQgYWNoaWV2ZSBhIHBlcmZvcm1hbmNlCisgICBib29zdCAoYnkgbW92aW5nIGVhY2ggcG9pbnRlciBvbmx5IG9uY2UgaW5zdGVhZCBvZiB0d2ljZSkuCisqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfaW5zZXJ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgUHlPYmplY3QgKnJ2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLCAmaW5kZXgsICZ2YWx1ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA+PSBuKQorICAgICAgICByZXR1cm4gZGVxdWVfYXBwZW5kKGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKGluZGV4IDw9IC1uIHx8IGluZGV4ID09IDApCisgICAgICAgIHJldHVybiBkZXF1ZV9hcHBlbmRsZWZ0KGRlcXVlLCB2YWx1ZSk7CisgICAgaWYgKF9kZXF1ZV9yb3RhdGUoZGVxdWUsIC1pbmRleCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKGRlcXVlLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBydiA9IGRlcXVlX2FwcGVuZGxlZnQoZGVxdWUsIHZhbHVlKTsKKyAgICBpZiAocnYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKHJ2KTsKKyAgICBpZiAoX2RlcXVlX3JvdGF0ZShkZXF1ZSwgaW5kZXgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGluc2VydF9kb2MsCisiRC5pbnNlcnQoaW5kZXgsIG9iamVjdCkgLS0gaW5zZXJ0IG9iamVjdCBiZWZvcmUgaW5kZXgiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX3JlbW92ZShkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKICAgICBQeV9zc2l6ZV90IGksIG49UHlfU0laRShkZXF1ZSk7CkBAIC03MjYsOSArMTA0NSwxNyBAQAogICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICB9Ci0gICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2sgJiYKLSAgICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCAtIDEgPT0gZGVxdWUtPnJpZ2h0aW5kZXggJiYKLSAgICAgICAgICAgUHlfU0laRShkZXF1ZSkgPT0gMCk7CisgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOworICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4IC0gMSA9PSBkZXF1ZS0+cmlnaHRpbmRleCk7CisgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpID09IDApOworfQorCitzdGF0aWMgaW50Cit2YWxpZF9pbmRleChQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbGltaXQpCit7CisgICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldCB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCisgICAgICAgdG8gY2hlY2sgd2hldGhlciBpIGlzIGluIHRoZSByYW5nZTogMCA8PSBpIDwgbGltaXQgKi8KKyAgICByZXR1cm4gKHNpemVfdCkgaSA8IChzaXplX3QpIGxpbWl0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzM4LDkgKzEwNjUsOCBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIFB5X3NzaXplX3QgbiwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoZGVxdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgIGlmICghdmFsaWRfaW5kZXgoaSwgUHlfU0laRShkZXF1ZSkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiZGVxdWUgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzUyLDE0ICsxMDc4LDE2IEBACiAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICB9IGVsc2UgewogICAgICAgICBpICs9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgICAgIGkgJT0gQkxPQ0tMRU47CisgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAvIEJMT0NLTEVOKTsKKyAgICAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgICAgICBpZiAoaW5kZXggPCAoUHlfU0laRShkZXF1ZSkgPj4gMSkpIHsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbiA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCisgICAgICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKKyAgICAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgICAgICAgICAgd2hpbGUgKG4tLSkKICAgICAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC03NzAsMTMgKzEwOTgsNiBAQAogICAgIHJldHVybiBpdGVtOwogfQogCi0vKiBkZWxpdGVtKCkgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Ygcm90YXRlIGZvciBzaW1wbGljaXR5IGFuZCByZWFzb25hYmxlCi0gICBwZXJmb3JtYW5jZSBuZWFyIHRoZSBlbmQgcG9pbnRzLiAgSWYgZm9yIHNvbWUgcmVhc29uIHRoaXMgbWV0aG9kIGJlY29tZXMKLSAgIHBvcHVsYXIsIGl0IGlzIG5vdCBoYXJkIHRvIHJlLWltcGxlbWVudCB0aGlzIHVzaW5nIGRpcmVjdCBkYXRhIG1vdmVtZW50Ci0gICAoc2ltaWxhciB0byBjb2RlIGluIGxpc3Qgc2xpY2UgYXNzaWdubWVudCkgYW5kIGFjaGlldmUgYSB0d28gb3IgdGhyZWVmb2xkCi0gICBwZXJmb3JtYW5jZSBib29zdC4KLSovCi0KIHN0YXRpYyBpbnQKIGRlcXVlX2RlbF9pdGVtKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBpKQogewpAQCAtODAwLDIzICsxMTIxLDI0IEBACiAgICAgYmxvY2sgKmI7CiAgICAgUHlfc3NpemVfdCBuLCBsZW49UHlfU0laRShkZXF1ZSksIGhhbGZsZW49KGxlbisxKT4+MSwgaW5kZXg9aTsKIAotICAgIGlmIChpIDwgMCB8fCBpID49IGxlbikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICBpZiAoIXZhbGlkX2luZGV4KGksIGxlbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJkZXF1ZSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZGVxdWVfZGVsX2l0ZW0oZGVxdWUsIGkpOwogCiAgICAgaSArPSBkZXF1ZS0+bGVmdGluZGV4OwotICAgIG4gPSBpIC8gQkxPQ0tMRU47Ci0gICAgaSAlPSBCTE9DS0xFTjsKKyAgICBuID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgLyBCTE9DS0xFTik7CisgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgIGlmIChpbmRleCA8PSBoYWxmbGVuKSB7CiAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgICAgICB3aGlsZSAobi0tKQogICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICB9IGVsc2UgewotICAgICAgICBuID0gKGRlcXVlLT5sZWZ0aW5kZXggKyBsZW4gLSAxKSAvIEJMT0NLTEVOIC0gbjsKKyAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKKyAgICAgICAgICAgICAgICAoKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSkpCisgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgIHdoaWxlIChuLS0pCiAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CkBAIC05MzgsMTMgKzEyNjAsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gIT0gLTEpCi0KICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImRlcXVlKCVSLCBtYXhsZW49JXpkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbGlzdCwgKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuKTsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkZXF1ZSglUikiLCBhc2xpc3QpOwotICAgIFB5X0RFQ1JFRihhc2xpc3QpOwogICAgIFB5X1JlcHJMZWF2ZShkZXF1ZSk7CisgICAgUHlfREVDUkVGKGFzbGlzdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTA3Myw2ICsxMzk0LDEyIEBACiBQeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKICJELl9fc2l6ZW9mX18oKSAtLSBzaXplIG9mIEQgaW4gbWVtb3J5LCBpbiBieXRlcyIpOwogCitzdGF0aWMgaW50CitkZXF1ZV9ib29sKGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICByZXR1cm4gUHlfU0laRShkZXF1ZSkgIT0gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX2dldF9tYXhsZW4oZGVxdWVvYmplY3QgKmRlcXVlKQogewpAQCAtMTA4MSw2ICsxNDA4LDkgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGRlcXVlLT5tYXhsZW4pOwogfQogCisKKy8qIGRlcXVlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogc3RhdGljIFB5R2V0U2V0RGVmIGRlcXVlX2dldHNldFtdID0gewogICAgIHsibWF4bGVuIiwgKGdldHRlcilkZXF1ZV9nZXRfbWF4bGVuLCAoc2V0dGVyKU5VTEwsCiAgICAgICJtYXhpbXVtIHNpemUgb2YgYSBkZXF1ZSBvciBOb25lIGlmIHVuYm91bmRlZCJ9LApAQCAtMTA4OSwxOSArMTQxOSwzMCBAQAogCiBzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgZGVxdWVfYXNfc2VxdWVuY2UgPSB7CiAgICAgKGxlbmZ1bmMpZGVxdWVfbGVuLCAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfcmVwZWF0ICovCisgICAgKGJpbmFyeWZ1bmMpZGVxdWVfY29uY2F0LCAgICAgICAgICAgLyogc3FfY29uY2F0ICovCisgICAgKHNzaXplYXJnZnVuYylkZXF1ZV9yZXBlYXQsICAgICAgICAgLyogc3FfcmVwZWF0ICovCiAgICAgKHNzaXplYXJnZnVuYylkZXF1ZV9pdGVtLCAgICAgICAgICAgLyogc3FfaXRlbSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3NsaWNlICovCi0gICAgKHNzaXplb2JqYXJncHJvYylkZXF1ZV9hc3NfaXRlbSwgICAgICAgICAgICAvKiBzcV9hc3NfaXRlbSAqLworICAgIChzc2l6ZW9iamFyZ3Byb2MpZGVxdWVfYXNzX2l0ZW0sICAgIC8qIHNxX2Fzc19pdGVtICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfYXNzX3NsaWNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KLSAgICAoYmluYXJ5ZnVuYylkZXF1ZV9pbnBsYWNlX2NvbmNhdCwgICAgICAgICAgIC8qIHNxX2lucGxhY2VfY29uY2F0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfaW5wbGFjZV9yZXBlYXQgKi8KLQorICAgIChvYmpvYmpwcm9jKWRlcXVlX2NvbnRhaW5zLCAgICAgICAgIC8qIHNxX2NvbnRhaW5zICovCisgICAgKGJpbmFyeWZ1bmMpZGVxdWVfaW5wbGFjZV9jb25jYXQsICAgLyogc3FfaW5wbGFjZV9jb25jYXQgKi8KKyAgICAoc3NpemVhcmdmdW5jKWRlcXVlX2lucGxhY2VfcmVwZWF0LCAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAotLyogZGVxdWUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkZXF1ZV9hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfc3VidHJhY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Rpdm1vZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9wb3NpdGl2ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCisgICAgKGlucXVpcnkpZGVxdWVfYm9vbCwgICAgICAgICAgICAgICAgLyogbmJfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludmVydCAqLworIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZGVxdWVfaXRlcihkZXF1ZW9iamVjdCAqZGVxdWUpOwogc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9yZXZpdGVyKGRlcXVlb2JqZWN0ICpkZXF1ZSk7CkBAIC0xMTE3LDE3ICsxNDU4LDIzIEBACiAgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBjbGVhcl9kb2N9LAogICAgIHsiX19jb3B5X18iLCAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfY29weSwKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIGNvcHlfZG9jfSwKKyAgICB7ImNvcHkiLCAgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2NvcHksCisgICAgICAgIE1FVEhfTk9BUkdTLCAgICAgICAgICAgICBjb3B5X2RvY30sCiAgICAgeyJjb3VudCIsICAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9jb3VudCwKLSAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudF9kb2N9LAorICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgY291bnRfZG9jfSwKICAgICB7ImV4dGVuZCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2V4dGVuZCwKICAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgIGV4dGVuZF9kb2N9LAogICAgIHsiZXh0ZW5kbGVmdCIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfZXh0ZW5kbGVmdCwKICAgICAgICAgTUVUSF9PLCAgICAgICAgICAgICAgICAgIGV4dGVuZGxlZnRfZG9jfSwKKyAgICB7ImluZGV4IiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2luZGV4LAorICAgICAgICBNRVRIX1ZBUkFSR1MsICAgICAgICAgICAgaW5kZXhfZG9jfSwKKyAgICB7Imluc2VydCIsICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX2luc2VydCwKKyAgICAgICAgTUVUSF9WQVJBUkdTLCAgICAgICAgICAgIGluc2VydF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcG9wLAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcG9wX2RvY30sCiAgICAgeyJwb3BsZWZ0IiwgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilkZXF1ZV9wb3BsZWZ0LAogICAgICAgICBNRVRIX05PQVJHUywgICAgICAgICAgICAgcG9wbGVmdF9kb2N9LAotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3JlZHVjZSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRlcXVlX3JlZHVjZSwKICAgICAgICAgTUVUSF9OT0FSR1MsICAgICAgICAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGVxdWVfcmVtb3ZlLAogICAgICAgICBNRVRIX08sICAgICAgICAgICAgICAgICAgcmVtb3ZlX2RvY30sCkBAIC0xMTQ1LDcgKzE0OTIsNyBAQAogUHlEb2NfU1RSVkFSKGRlcXVlX2RvYywKICJkZXF1ZShbaXRlcmFibGVbLCBtYXhsZW5dXSkgLS0+IGRlcXVlIG9iamVjdFxuXAogXG5cCi1CdWlsZCBhbiBvcmRlcmVkIGNvbGxlY3Rpb24gd2l0aCBvcHRpbWl6ZWQgYWNjZXNzIGZyb20gaXRzIGVuZHBvaW50cy4iKTsKK0EgbGlzdC1saWtlIHNlcXVlbmNlIG9wdGltaXplZCBmb3IgZGF0YSBhY2Nlc3NlcyBuZWFyIGl0cyBlbmRwb2ludHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKQEAgLTExNTksNyArMTUwNiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCiAgICAgZGVxdWVfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZkZXF1ZV9hc19udW1iZXIsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICZkZXF1ZV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCwgICAgICAgIC8qIHRwX2hhc2ggKi8KQEAgLTExOTUsMTAgKzE1NDIsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIGJsb2NrICpiOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgZGVxdWVvYmplY3QgKmRlcXVlOwotICAgIGxvbmcgc3RhdGU7ICAgICAgICAgLyogc3RhdGUgd2hlbiB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCAqLworICAgIHNpemVfdCBzdGF0ZTsgICAgICAgICAgLyogc3RhdGUgd2hlbiB0aGUgaXRlcmF0b3IgaXMgY3JlYXRlZCAqLwogICAgIFB5X3NzaXplX3QgY291bnRlcjsgICAgLyogbnVtYmVyIG9mIGl0ZW1zIHJlbWFpbmluZyBmb3IgaXRlcmF0aW9uICovCiB9IGRlcXVlaXRlcm9iamVjdDsKIApAQCAtMTMxNSw3ICsxNjYyLDcgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZWl0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTMzNCw3ICsxNjgxLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkZXF1ZWl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTE0MzcsNyArMTc4NCw3IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVyZXZpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAgLyogdHBfbmFtZSAqLworICAgICJfY29sbGVjdGlvbnMuX2RlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTE0NTYsNyArMTgwMyw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZGVxdWVpdGVyX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xODAwLDE5ICsyMTQ3LDQwIEBACiAgICAgaWYgKG1hcHBpbmdfZ2V0ICE9IE5VTEwgJiYgbWFwcGluZ19nZXQgPT0gZGljdF9nZXQgJiYKICAgICAgICAgbWFwcGluZ19zZXRpdGVtICE9IE5VTEwgJiYgbWFwcGluZ19zZXRpdGVtID09IGRpY3Rfc2V0aXRlbSkgewogICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgLyogRmFzdCBwYXRoIGFkdmFudGFnZXM6CisgICAgICAgICAgICAgICAgICAgMS4gRWxpbWluYXRlIGRvdWJsZSBoYXNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgKGJ5IHJlLXVzaW5nIHRoZSBzYW1lIGhhc2ggZm9yIGJvdGggdGhlIGdldCBhbmQgc2V0KQorICAgICAgICAgICAgICAgICAgIDIuIEF2b2lkIGFyZ3VtZW50IG92ZXJoZWFkIG9mIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgICAgICAgICAgICAgICAgICAgICAoYXJndW1lbnQgdHVwbGUgY3JlYXRpb24gYW5kIHBhcnNpbmcpCisgICAgICAgICAgICAgICAgICAgMy4gQXZvaWQgaW5kaXJlY3Rpb24gdGhyb3VnaCBhIGJvdW5kIG1ldGhvZCBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAoY3JlYXRlcyBhbm90aGVyIGFyZ3VtZW50IHR1cGxlKQorICAgICAgICAgICAgICAgICAgIDQuIEF2b2lkIGluaXRpYWwgaW5jcmVtZW50IGZyb20gemVybworICAgICAgICAgICAgICAgICAgICAgIChyZXVzZSBhbiBleGlzdGluZyBvbmUtb2JqZWN0IGluc3RlYWQpCisgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CisKICAgICAgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KGl0KTsKICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIG9sZHZhbCA9IFB5RGljdF9HZXRJdGVtKG1hcHBpbmcsIGtleSk7CisKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb2xkdmFsID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgb25lKSA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IFB5TnVtYmVyX0FkZChvbGR2YWwsIG9uZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpID09IC0xKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKQEAgLTE5MDEsNiArMjI2OSw5IEBACiAgICAgUHlfSU5DUkVGKCZkZWZkaWN0X3R5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZGVmYXVsdGRpY3QiLCAoUHlPYmplY3QgKikmZGVmZGljdF90eXBlKTsKIAorICAgIFB5X0lOQ1JFRigmUHlPRGljdF9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk9yZGVyZWREaWN0IiwgKFB5T2JqZWN0ICopJlB5T0RpY3RfVHlwZSk7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZkZXF1ZWl0ZXJfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoJmRlcXVlaXRlcl90eXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCmluZGV4IGRhNDRlZjMuLmQ0MjJjZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3J5cHRtb2R1bGUuYwpAQCAtMTIsMTIgKzEyLDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jNjI1MmNmNGYyZjJhZTgxXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2NyeXB0bW9kdWxlLmMuaCIKIAogLypbY2xpbmljIGlucHV0XQogY3J5cHQuY3J5cHQKIAotICAgIHdvcmQ6ICdzJwotICAgIHNhbHQ6ICdzJworICAgIHdvcmQ6IHN0cgorICAgIHNhbHQ6IHN0cgogICAgIC8KIAogSGFzaCBhICp3b3JkKiB3aXRoIHRoZSBnaXZlbiAqc2FsdCogYW5kIHJldHVybiB0aGUgaGFzaGVkIHBhc3N3b3JkLgpAQCAtMjksNDMgKzMwLDkgQEAKIAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoY3J5cHRfY3J5cHRfX2RvY19fLAotImNyeXB0KCRtb2R1bGUsIHdvcmQsIHNhbHQsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJIYXNoIGEgKndvcmQqIHdpdGggdGhlIGdpdmVuICpzYWx0KiBhbmQgcmV0dXJuIHRoZSBoYXNoZWQgcGFzc3dvcmQuXG4iCi0iXG4iCi0iKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXJcJ3MgcGFzc3dvcmQuICAqc2FsdCogKGVpdGhlciBhIHJhbmRvbSAyIG9yIDE2XG4iCi0iY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aCAkZGlnaXQkIHRvIGluZGljYXRlIHRoZSBtZXRob2QpXG4iCi0id2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIGFuZCBwcm9kdWNlIGRpc3RpbmN0XG4iCi0icmVzdWx0cyBmb3IgYSBnaXZlbiAqd29yZCouIik7Ci0KLSNkZWZpbmUgQ1JZUFRfQ1JZUFRfTUVUSE9EREVGICAgIFwKLSAgICB7ImNyeXB0IiwgKFB5Q0Z1bmN0aW9uKWNyeXB0X2NyeXB0LCBNRVRIX1ZBUkFSR1MsIGNyeXB0X2NyeXB0X19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jcnlwdF9jcnlwdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKndvcmQsIGNvbnN0IGNoYXIgKnNhbHQpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotY3J5cHRfY3J5cHQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqd29yZDsKLSAgICBjb25zdCBjaGFyICpzYWx0OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzczpjcnlwdCIsCi0gICAgICAgICZ3b3JkLCAmc2FsdCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBjcnlwdF9jcnlwdF9pbXBsKG1vZHVsZSwgd29yZCwgc2FsdCk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIGNyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZWFhY2RmOTk0YTZmZjIzIGlucHV0PTRkOTNiNmQwZjQxZmJmNThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTVhZDFlODU0ZDgzMDY5IGlucHV0PTBlOGVkZWM5YzM2NDM1MmJdKi8KIHsKICAgICAvKiBPbiBzb21lIHBsYXRmb3JtcyAoQXRoZU9TKSBjcnlwdCByZXR1cm5zIE5VTEwgZm9yIGFuIGludmFsaWQKICAgICAgICBzYWx0LiBSZXR1cm4gTm9uZSBpbiB0aGF0IGNhc2UuIFhYWCBNYXliZSByYWlzZSBhbiBleGNlcHRpb24/ICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA3YTcxNTY0Li5hNjE0MTkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNyYyk7CiAgICAgICAgICAgICBpZiAobGVuID4gMSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJcIiVzXCIgbXVzdCBiZSBhbiAxLWNoYXJhY3RlciBzdHJpbmciLAorICAgICAgICAgICAgICAgICAgICAiXCIlc1wiIG11c3QgYmUgYSAxLWNoYXJhY3RlciBzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICBTdHlsZURlc2MgKnFzOwogCiAgICAgZm9yIChxcyA9IHF1b3RlX3N0eWxlczsgcXMtPm5hbWU7IHFzKyspIHsKLSAgICAgICAgaWYgKHFzLT5zdHlsZSA9PSBxdW90aW5nKQorICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYmFkIFwicXVvdGluZ1wiIHZhbHVlIik7CkBAIC00MzIsNyArNDMyLDcgQEAKICAgICAgICAgZ290byBlcnI7CiAgICAgaWYgKHNlbGYtPmRlbGltaXRlciA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiXCJkZWxpbWl0ZXJcIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgIlwiZGVsaW1pdGVyXCIgbXVzdCBiZSBhIDEtY2hhcmFjdGVyIHN0cmluZyIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKHF1b3RlY2hhciA9PSBQeV9Ob25lICYmIHF1b3RpbmcgPT0gTlVMTCkKQEAgLTEwMDksNyArMTAwOSw3IEBACiAgKi8KIHN0YXRpYyBQeV9zc2l6ZV90CiBqb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQsIHZvaWQgKmZpZWxkX2RhdGEsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZmllbGRfbGVuLCBpbnQgcXVvdGVfZW1wdHksIGludCAqcXVvdGVkLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiwgaW50ICpxdW90ZWQsCiAgICAgICAgICAgICAgICAgIGludCBjb3B5X3BoYXNlKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwpAQCAtMTA3MSwxOCArMTA3MSw2IEBACiAgICAgICAgIEFERENIKGMpOwogICAgIH0KIAotICAgIC8qIElmIGZpZWxkIGlzIGVtcHR5IGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIHF1b3RlZC4KLSAgICAgKi8KLSAgICBpZiAoaSA9PSAwICYmIHF1b3RlX2VtcHR5KSB7Ci0gICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCi0gICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcXVvdGVkID0gMTsKLSAgICB9Ci0KICAgICBpZiAoKnF1b3RlZCkgewogICAgICAgICBpZiAoY29weV9waGFzZSkKICAgICAgICAgICAgIEFERENIKGRpYWxlY3QtPnF1b3RlY2hhcik7CkBAIC0xMTI2LDcgKzExMTQsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1qb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5T2JqZWN0ICpmaWVsZCwgaW50ICpxdW90ZWQsIGludCBxdW90ZV9lbXB0eSkKK2pvaW5fYXBwZW5kKFdyaXRlck9iaiAqc2VsZiwgUHlPYmplY3QgKmZpZWxkLCBpbnQgcXVvdGVkKQogewogICAgIHVuc2lnbmVkIGludCBmaWVsZF9raW5kID0gLTE7CiAgICAgdm9pZCAqZmllbGRfZGF0YSA9IE5VTEw7CkBAIC0xMTQxLDcgKzExMjksNyBAQAogICAgICAgICBmaWVsZF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmaWVsZCk7CiAgICAgfQogICAgIHJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCAwKTsKICAgICBpZiAocmVjX2xlbiA8IDApCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTUwLDcgKzExMzgsNyBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkX2tpbmQsIGZpZWxkX2RhdGEsIGZpZWxkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcXVvdGVkLCAxKTsKICAgICBzZWxmLT5udW1fZmllbGRzKys7CiAKICAgICByZXR1cm4gMTsKQEAgLTExODEsMzcgKzExNjksMzAgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGNzdl93cml0ZXJvd19kb2MsCi0id3JpdGVyb3coc2VxdWVuY2UpXG4iCisid3JpdGVyb3coaXRlcmFibGUpXG4iCiAiXG4iCi0iQ29uc3RydWN0IGFuZCB3cml0ZSBhIENTViByZWNvcmQgZnJvbSBhIHNlcXVlbmNlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmdcbiIKKyJDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgQ1NWIHJlY29yZCBmcm9tIGFuIGl0ZXJhYmxlIG9mIGZpZWxkcy4gIE5vbi1zdHJpbmdcbiIKICJlbGVtZW50cyB3aWxsIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3Zfd3JpdGVyb3coV3JpdGVyT2JqICpzZWxmLCBQeU9iamVjdCAqc2VxKQogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwotICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgIFB5T2JqZWN0ICpsaW5lLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICppdGVyLCAqZmllbGQsICpsaW5lLCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAic2VxdWVuY2UgZXhwZWN0ZWQiKTsKLQotICAgIGxlbiA9IFB5U2VxdWVuY2VfTGVuZ3RoKHNlcSk7Ci0gICAgaWYgKGxlbiA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKHNlcSk7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIGV4cGVjdGVkLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXEtPm9iX3R5cGUtPnRwX25hbWUpOwogCiAgICAgLyogSm9pbiBhbGwgZmllbGRzIGluIGludGVybmFsIGJ1ZmZlci4KICAgICAgKi8KICAgICBqb2luX3Jlc2V0KHNlbGYpOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBQeU9iamVjdCAqZmllbGQ7CisgICAgd2hpbGUgKChmaWVsZCA9IFB5SXRlcl9OZXh0KGl0ZXIpKSkgewogICAgICAgICBpbnQgYXBwZW5kX29rOwogICAgICAgICBpbnQgcXVvdGVkOwogCi0gICAgICAgIGZpZWxkID0gUHlTZXF1ZW5jZV9HZXRJdGVtKHNlcSwgaSk7Ci0gICAgICAgIGlmIChmaWVsZCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAgICAgc3dpdGNoIChkaWFsZWN0LT5xdW90aW5nKSB7CiAgICAgICAgIGNhc2UgUVVPVEVfTk9OTlVNRVJJQzoKICAgICAgICAgICAgIHF1b3RlZCA9ICFQeU51bWJlcl9DaGVjayhmaWVsZCk7CkBAIC0xMjI1LDExICsxMjA2LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGZpZWxkKSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgZmllbGQsICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIGZpZWxkLCBxdW90ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChmaWVsZCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAmcXVvdGVkLCBsZW4gPT0gMSk7CisgICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBOVUxMLCBxdW90ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTEyMzcsMTkgKzEyMTgsMzcgQEAKIAogICAgICAgICAgICAgc3RyID0gUHlPYmplY3RfU3RyKGZpZWxkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7Ci0gICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLCBzdHIsICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIHN0ciwgcXVvdGVkKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghYXBwZW5kX29rKQorICAgICAgICBpZiAoIWFwcGVuZF9vaykgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKGl0ZXIpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzZWxmLT5udW1fZmllbGRzID4gMCAmJiBzZWxmLT5yZWNfc2l6ZSA9PSAwKSB7CisgICAgICAgIGlmIChkaWFsZWN0LT5xdW90aW5nID09IFFVT1RFX05PTkUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosCisgICAgICAgICAgICAgICAgInNpbmdsZSBlbXB0eSBmaWVsZCByZWNvcmQgbXVzdCBiZSBxdW90ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNlbGYtPm51bV9maWVsZHMtLTsKKyAgICAgICAgaWYgKCFqb2luX2FwcGVuZChzZWxmLCBOVUxMLCAxKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIC8qIEFkZCBsaW5lIHRlcm1pbmF0b3IuCiAgICAgICovCiAgICAgaWYgKCFqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihzZWxmKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+cmVjLCBzZWxmLT5yZWNfbGVuKTsKQEAgLTEyNjEsOSArMTI2MCw5IEBACiB9CiAKIFB5RG9jX1NUUlZBUihjc3Zfd3JpdGVyb3dzX2RvYywKLSJ3cml0ZXJvd3Moc2VxdWVuY2Ugb2Ygc2VxdWVuY2VzKVxuIgorIndyaXRlcm93cyhpdGVyYWJsZSBvZiBpdGVyYWJsZXMpXG4iCiAiXG4iCi0iQ29uc3RydWN0IGFuZCB3cml0ZSBhIHNlcmllcyBvZiBzZXF1ZW5jZXMgdG8gYSBjc3YgZmlsZS4gIE5vbi1zdHJpbmdcbiIKKyJDb25zdHJ1Y3QgYW5kIHdyaXRlIGEgc2VyaWVzIG9mIGl0ZXJhYmxlcyB0byBhIGNzdiBmaWxlLiAgTm9uLXN0cmluZ1xuIgogImVsZW1lbnRzIHdpbGwgYmUgY29udmVydGVkIHRvIHN0cmluZy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDJlNTkzOWMuLmI5ZmQ4MmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgY2hhciAqbmV3X3ByZWZpeDsKICAgICBjaGFyICpyZXN1bHQ7CiAgICAgY2hhciBidWZbMzJdOwotICAgIGludCBwcmVmaXhfbGVuOworICAgIFB5X3NzaXplX3QgcHJlZml4X2xlbjsKICAgICBpbnQgazsKIAogICAgIHByZWZpeF9sZW4gPSAzMiAqIG5kaW0gKyAzOwpAQCAtMjgxOSw4ICsyODE5LDkgQEAKICAgICAgICAgICAgICAgIHNyYy0+Yl9wdHIsCiAgICAgICAgICAgICAgICBzaXplKTsKIAotICAgICAgICBpZiAoUHlDUG9pbnRlclR5cGVPYmplY3RfQ2hlY2sodHlwZSkpCi0gICAgICAgICAgICAvKiBYWFggKi87CisgICAgICAgIGlmIChQeUNQb2ludGVyVHlwZU9iamVjdF9DaGVjayh0eXBlKSkgeworICAgICAgICAgICAgLyogWFhYICovCisgICAgICAgIH0KIAogICAgICAgICB2YWx1ZSA9IEdldEtlZXBlZE9iamVjdHMoc3JjKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDhkYWVmZmMuLjAzYTkxMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC0xNjAzLDcgKzE2MDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIk1lbW9yeSBjYW5ub3QgYmUgcmVzaXplZCBiZWNhdXNlIHRoaXMgb2JqZWN0IGRvZXNuJ3Qgb3duIGl0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc2l6ZSA8PSBzaXplb2Yob2JqLT5iX3ZhbHVlKSkgeworICAgIGlmICgoc2l6ZV90KXNpemUgPD0gc2l6ZW9mKG9iai0+Yl92YWx1ZSkpIHsKICAgICAgICAgLyogaW50ZXJuYWwgZGVmYXVsdCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoICovCiAgICAgICAgIG9iai0+Yl9zaXplID0gc2l6ZTsKICAgICAgICAgZ290byBkb25lOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCmluZGV4IGM4OWQ5MTkuLjNjN2E1MmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKQEAgLTEzNTUsMTQgKzEzNTUsNiBAQAogewogICAgIC8qIFhYWCBXaGF0IGFib3V0IGludmFsaWQgcG9pbnRlcnMgPz8/ICovCiAgICAgaWYgKCoodm9pZCAqKilwdHIpIHsKLSNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChfV0lOMzJfV0NFKQotICAgICAgICBpZiAoSXNCYWRTdHJpbmdQdHJBKCooY2hhciAqKilwdHIsIC0xKSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3RyaW5nIHBvaW50ZXIgJXAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICooY2hhciAqKilwdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgqKGNoYXIgKiopcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oKihjaGFyICoqKXB0cikpOwogICAgIH0gZWxzZSB7CkBAIC0xNDE5LDE0ICsxNDExLDYgQEAKICAgICB3Y2hhcl90ICpwOwogICAgIHAgPSAqKHdjaGFyX3QgKiopcHRyOwogICAgIGlmIChwKSB7Ci0jaWYgZGVmaW5lZChNU19XSU4zMikgJiYgIWRlZmluZWQoX1dJTjMyX1dDRSkKLSAgICAgICAgaWYgKElzQmFkU3RyaW5nUHRyVygqKHdjaGFyX3QgKiopcHRyLCAtMSkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHN0cmluZyBwb2ludGVyICVwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAqKHdjaGFyX3QgKiopcHRyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocCwgd2NzbGVuKHApKTsKICAgICB9IGVsc2UgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0xNDU2LDE1ICsxNDQwLDE1IEBACiAgICAgLyogY3JlYXRlIGEgQlNUUiBmcm9tIHZhbHVlICovCiAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgIHdjaGFyX3QqIHd2YWx1ZTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgICAgICBQeV9zc2l6ZV90IHdzaXplOworICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJndzaXplKTsKICAgICAgICAgaWYgKHd2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICgodW5zaWduZWQpIHNpemUgIT0gc2l6ZSkgeworICAgICAgICBpZiAoKHVuc2lnbmVkKSB3c2l6ZSAhPSB3c2l6ZSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJTdHJpbmcgdG9vIGxvbmcgZm9yIEJTVFIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGJzdHIgPSBTeXNBbGxvY1N0cmluZ0xlbih3dmFsdWUsICh1bnNpZ25lZClzaXplKTsKKyAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHd2YWx1ZSwgKHVuc2lnbmVkKXdzaXplKTsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgYnN0ciA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMKaW5kZXggNzZjYjAzZS4uYjc1ODZjNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9tc3ZjL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYwpAQCAtNjUsMzcgKzY1LDU2IEBACiAJYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIHNpemVvZih2b2lkICopKTsKIAogICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwotICAgICAgaWYgKHogPCBzaXplb2YoaW50KSkKKyAgICAgIGlmICh6IDwgc2l6ZW9mKGludHB0cl90KSkKIAl7Ci0JICB6ID0gc2l6ZW9mKGludCk7CisJICB6ID0gc2l6ZW9mKGludHB0cl90KTsKIAkgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCiAJICAgIHsKIAkgICAgY2FzZSBGRklfVFlQRV9TSU5UODoKLQkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDggKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQ4ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDggKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDggKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDE2OgotCSAgICAgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMTYgKikoKiBwX2FyZ3YpOworCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQxNiAqKSgqIHBfYXJndik7CiAJICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBwX2FyZ3YpOworCSAgICAgICoodWludHB0cl90ICopIGFyZ3AgPSAodWludHB0cl90KSooVUlOVDE2ICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKLQkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKGludHB0cl90ICopIGFyZ3AgPSAoaW50cHRyX3QpKihTSU5UMzIgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQzMiAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gMDsKKwkgICAgICAqKGZsb2F0ICopIGFyZ3AgPSAqKGZsb2F0ICopKCogcF9hcmd2KTsKKwkgICAgICBicmVhazsKKworCSAgICAvLyA2NC1iaXQgdmFsdWUgY2FzZXMgc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIHg4NiBhbmQgQU1ENjQgYnVpbGRzCisJICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgorCSAgICAgICooaW50cHRyX3QgKikgYXJncCA9IChpbnRwdHJfdCkqKFNJTlQ2NCAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9ICh1aW50cHRyX3QpKihVSU5UNjQgKikoKiBwX2FyZ3YpOwogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotCSAgICAgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDMyICopKCogcF9hcmd2KTsKKwkgICAgICAqKHVpbnRwdHJfdCAqKSBhcmdwID0gKHVpbnRwdHJfdCkqKFVJTlQzMiAqKSgqIHBfYXJndik7CisJICAgICAgYnJlYWs7CisKKwkgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgICAgKih1aW50cHRyX3QgKikgYXJncCA9IDA7CisJICAgICAgKihkb3VibGUgKikgYXJncCA9ICooZG91YmxlICopKCogcF9hcmd2KTsKIAkgICAgICBicmVhazsKIAogCSAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwppbmRleCA1ZmZjZTJmLi5kNjRiZGM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwpAQCAtMTQwLDYgKzE0MCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04OGM4NjBhYmRiYjUwZTBjXSovCiAKKyNpbmNsdWRlICJjbGluaWMvX2N1cnNlc21vZHVsZS5jLmgiCisKIC8qIERlZmluaXRpb24gb2YgZXhjZXB0aW9uIGN1cnNlcy5lcnJvciAqLwogCiBzdGF0aWMgUHlPYmplY3QgKlB5Q3Vyc2VzRXJyb3I7CkBAIC01ODMsNzUgKzU4NSwxMCBAQAogY3VycmVudCBzZXR0aW5ncyBmb3IgdGhlIHdpbmRvdyBvYmplY3QuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihjdXJzZXNfd2luZG93X2FkZGNoX19kb2NfXywKLSJhZGRjaChbeSwgeCxdIGNoLCBbYXR0cl0pXG4iCi0iUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0ci5cbiIKLSJcbiIKLSIgIHlcbiIKLSIgICAgWS1jb29yZGluYXRlLlxuIgotIiAgeFxuIgotIiAgICBYLWNvb3JkaW5hdGUuXG4iCi0iICBjaFxuIgotIiAgICBDaGFyYWN0ZXIgdG8gYWRkLlxuIgotIiAgYXR0clxuIgotIiAgICBBdHRyaWJ1dGVzIGZvciB0aGUgY2hhcmFjdGVyLlxuIgotIlxuIgotIlBhaW50IGNoYXJhY3RlciBjaCBhdCAoeSwgeCkgd2l0aCBhdHRyaWJ1dGVzIGF0dHIsXG4iCi0ib3ZlcndyaXRpbmcgYW55IGNoYXJhY3RlciBwcmV2aW91c2x5IHBhaW50ZWQgYXQgdGhhdCBsb2NhdGlvbi5cbiIKLSJCeSBkZWZhdWx0LCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIGFuZCBhdHRyaWJ1dGVzIGFyZSB0aGVcbiIKLSJjdXJyZW50IHNldHRpbmdzIGZvciB0aGUgd2luZG93IG9iamVjdC4iKTsKLQotI2RlZmluZSBDVVJTRVNfV0lORE9XX0FERENIX01FVEhPRERFRiAgICBcCi0gICAgeyJhZGRjaCIsIChQeUNGdW5jdGlvbiljdXJzZXNfd2luZG93X2FkZGNoLCBNRVRIX1ZBUkFSR1MsIGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgaW50IGdyb3VwX2xlZnRfMSwgaW50IHksIGludCB4LCBQeU9iamVjdCAqY2gsIGludCBncm91cF9yaWdodF8xLCBsb25nIGF0dHIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotY3Vyc2VzX3dpbmRvd19hZGRjaChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IGdyb3VwX2xlZnRfMSA9IDA7Ci0gICAgaW50IHkgPSAwOwotICAgIGludCB4ID0gMDsKLSAgICBQeU9iamVjdCAqY2g7Ci0gICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOwotICAgIGxvbmcgYXR0ciA9IDA7Ci0KLSAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDphZGRjaCIsICZjaCwgJmF0dHIpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjdXJzZXMud2luZG93LmFkZGNoIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgcmV0dXJuX3ZhbHVlID0gY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKHNlbGYsIGdyb3VwX2xlZnRfMSwgeSwgeCwgY2gsIGdyb3VwX3JpZ2h0XzEsIGF0dHIpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jdXJzZXNfd2luZG93X2FkZGNoX2ltcGwoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIGludCBncm91cF9sZWZ0XzEsIGludCB5LCBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0Yjk3Y2MyODcwMTBjNTQgaW5wdXQ9NWE0MWVmYjM0YTJkZTMzOF0qLworY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5ZjdmODUwNzhlYzA2YzMgaW5wdXQ9NWE0MWVmYjM0YTJkZTMzOF0qLwogewogICAgIFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpjd3NlbGYgPSAoUHlDdXJzZXNXaW5kb3dPYmplY3QgKilzZWxmOwogICAgIGludCBjb29yZGluYXRlc19ncm91cCA9IGdyb3VwX2xlZnRfMTsKQEAgLTI2NzUsNyArMjYxMiw3IEBACiAgICAgfQogICAgIGtucCA9IGtleW5hbWUoY2gpOwogCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygoa25wID09IE5VTEwpID8gIiIgOiAoY2hhciAqKWtucCk7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygoa25wID09IE5VTEwpID8gIiIgOiBrbnApOwogfQogI2VuZGlmCiAKQEAgLTI5MjksNiArMjg2NiwxMyBAQAogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gMTsKIH0KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzX3VwZGF0ZV9saW5lc19jb2xzKFB5T2JqZWN0ICpzZWxmKQoreworICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSB1cGRhdGVfbGluZXNfY29scygpKTsKK30KKwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0NVUlNFU19SRVNJWkVURVJNCkBAIC0zMzMxLDYgKzMyNzUsOSBAQAogICAgIHsidHlwZWFoZWFkIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19UeXBlQWhlYWQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmN0cmwiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuQ3RybCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuZ2V0Y2giLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRDaCwgTUVUSF9WQVJBUkdTfSwKKyNpZiBkZWZpbmVkKEhBVkVfQ1VSU0VTX1JFU0laRVRFUk0pIHx8IGRlZmluZWQoSEFWRV9DVVJTRVNfUkVTSVpFX1RFUk0pCisgICAgeyJ1cGRhdGVfbGluZXNfY29scyIsICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX3VwZGF0ZV9saW5lc19jb2xzLCBNRVRIX05PQVJHU30sCisjZW5kaWYKICNpZmRlZiBIQVZFX05DVVJTRVNXCiAgICAgeyJ1bmdldF93Y2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0X1djaCwgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggY2FiZTRlZC4uMWQ1ODNhNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC03LDYgKzcsMTAgQEAKIAogI2luY2x1ZGUgPHRpbWUuaD4KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPHdpbnNvY2syLmg+ICAgICAgICAgLyogc3RydWN0IHRpbWV2YWwgKi8KKyNlbmRpZgorCiAvKiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gYnVpbGRpbmcgdGhlIGNvcmUgbW9kdWxlIGFuZCBidWlsZGluZyBleHRlbnNpb24KICAqIG1vZHVsZXMuCiAgKi8KQEAgLTIyLDYgKzI2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTc4MTQyY2I2NGI5ZTk4YmNdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oIgorCiAvKiBXZSByZXF1aXJlIHRoYXQgQyBpbnQgYmUgYXQgbGVhc3QgMzIgYml0cywgYW5kIHVzZSBpbnQgdmlydHVhbGx5CiAgKiBldmVyeXdoZXJlLiAgSW4ganVzdCBhIGZldyBjYXNlcyB3ZSB1c2UgYSB0ZW1wIGxvbmcsIHdoZXJlIGEgUHl0aG9uCiAgKiBBUEkgcmV0dXJucyBhIEMgbG9uZy4gIEluIHN1Y2ggY2FzZXMsIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlCkBAIC0yNDU5LDcgKzI0NjUsNyBAQAogICAgIHN0cnVjdCB0bSAqdG07CiAgICAgdGltZV90IHQ7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0LCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnQsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHRtID0gbG9jYWx0aW1lKCZ0KTsKQEAgLTM4MDUsMjkgKzM4MTEsNiBAQAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotc3RhdGljIGludAotdGltZV9ib29sKFB5T2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpvZmZzZXQsICp0emluZm87Ci0gICAgaW50IG9mZnNlY3MgPSAwOwotCi0gICAgaWYgKFRJTUVfR0VUX1NFQ09ORChzZWxmKSB8fCBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKSkgewotICAgICAgICAvKiBTaW5jZSB1dGNvZmZzZXQgaXMgaW4gd2hvbGUgbWludXRlcywgbm90aGluZyBjYW4KLSAgICAgICAgICogYWx0ZXIgdGhlIGNvbmNsdXNpb24gdGhhdCB0aGlzIGlzIG5vbnplcm8uCi0gICAgICAgICAqLwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgdHppbmZvID0gR0VUX1RJTUVfVFpJTkZPKHNlbGYpOwotICAgIGlmICh0emluZm8gIT0gUHlfTm9uZSkgewotICAgICAgICBvZmZzZXQgPSBjYWxsX3V0Y29mZnNldCh0emluZm8sIFB5X05vbmUpOwotICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG9mZnNlY3MgPSBHRVRfVERfREFZUyhvZmZzZXQpKjg2NDAwICsgR0VUX1REX1NFQ09ORFMob2Zmc2V0KTsKLSAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7Ci0gICAgfQotICAgIHJldHVybiAoVElNRV9HRVRfTUlOVVRFKHNlbGYpKjYwIC0gb2Zmc2VjcyArIFRJTUVfR0VUX0hPVVIoc2VsZikqMzYwMCkgIT0gMDsKLX0KLQogLyogUGlja2xlIHN1cHBvcnQsIGEgc2ltcGxlIHVzZSBvZiBfX3JlZHVjZV9fLiAqLwogCiAvKiBMZXQgYmFzZXN0YXRlIGJlIHRoZSBub24tdHppbmZvIGRhdGEgc3RyaW5nLgpAQCAtMzg5NSwxOSArMzg3OCw2IEBACiBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbiBpbnN0YW5jZSBvZlxuXAogYSB0emluZm8gc3ViY2xhc3MuIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRzLlxuIik7CiAKLXN0YXRpYyBQeU51bWJlck1ldGhvZHMgdGltZV9hc19udW1iZXIgPSB7Ci0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hZGQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9tdWx0aXBseSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcmVtYWluZGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3Bvd2VyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9uZWdhdGl2ZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG9zaXRpdmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Fic29sdXRlICovCi0gICAgKGlucXVpcnkpdGltZV9ib29sLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9ib29sICovCi19OwotCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVGltZVR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgImRhdGV0aW1lLnRpbWUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0zOTE5LDcgKzM4ODksNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpdGltZV9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAmdGltZV9hc19udW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIChoYXNoZnVuYyl0aW1lX2hhc2gsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtNDE5NCwxMCArNDE2NCwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoUHlPYmplY3QgKmNscywgVE1fRlVOQyBmLCBQeU9iamVjdCAqdHppbmZvKQogewotICAgIF9QeVRpbWVfdGltZXZhbCB0OwotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZ0KTsKLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0LnR2X3NlYywgKGludCl0LnR2X3VzZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgX1B5VGltZV90IHRzID0gX1B5VGltZV9HZXRTeXN0ZW1DbG9jaygpOworICAgIHRpbWVfdCBzZWNzOworICAgIGludCB1czsKKworICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbFRpbWVfdCh0cywgJnNlY3MsICZ1cywgX1B5VGltZV9ST1VORF9GTE9PUikgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoMCA8PSB1cyAmJiB1cyA8PSA5OTk5OTkpOworCisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgc2VjcywgdXMsIHR6aW5mbyk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTQyMTMsNDMgKzQxODgsOSBAQAogSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfXywKLSJub3coJHR5cGUsIC8sIHR6PU5vbmUpXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIG5ldyBkYXRldGltZSBvYmplY3QgcmVwcmVzZW50aW5nIGN1cnJlbnQgdGltZSBsb2NhbCB0byB0ei5cbiIKLSJcbiIKLSIgIHR6XG4iCi0iICAgIFRpbWV6b25lIG9iamVjdC5cbiIKLSJcbiIKLSJJZiBubyB0eiBpcyBzcGVjaWZpZWQsIHVzZXMgbG9jYWwgdGltZXpvbmUuIik7Ci0KLSNkZWZpbmUgREFURVRJTUVfREFURVRJTUVfTk9XX01FVEhPRERFRiAgICBcCi0gICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU3xNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqdHogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAifE86bm93IiwgX2tleXdvcmRzLAotICAgICAgICAmdHopKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwodHlwZSwgdHopOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODNjNTYzN2UzYzg0M2ZhIGlucHV0PTgwZDA5ODY5YzUyNjdkMDBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMzM4NmU1MzQ1ZTJiNDdhIGlucHV0PTgwZDA5ODY5YzUyNjdkMDBdKi8KIHsKICAgICBQeU9iamVjdCAqc2VsZjsKIApAQCAtNTExMSw4ICs1MDUyLDcgQEAKIAogICAgIHsidXRjZnJvbXRpbWVzdGFtcCIsIChQeUNGdW5jdGlvbilkYXRldGltZV91dGNmcm9tdGltZXN0YW1wLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0NMQVNTLAotICAgICBQeURvY19TVFIoInRpbWVzdGFtcCAtPiBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAiCi0gICAgICAgICAgICAgICAiKGxpa2UgdGltZS50aW1lKCkpLiIpfSwKKyAgICAgUHlEb2NfU1RSKCJDb25zdHJ1Y3QgYSBuYWl2ZSBVVEMgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcC4iKX0sCiAKICAgICB7InN0cnB0aW1lIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3N0cnB0aW1lLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0NMQVNTLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCA5M2VhNDE2Li4wMjg5OWU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMjksMTAgKzI5LDEwIEBACiAjZW5kaWYKIAogLypbY2xpbmljIGlucHV0XQotbW9kdWxlIGRibQotY2xhc3MgZGJtLmRibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKK21vZHVsZSBfZGJtCitjbGFzcyBfZGJtLmRibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTkyNDUwNTY0Njg0YTY5YTNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTliMWFhODc1NmQxNjE1MGVdKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTQwLDYgKzQwLDggQEAKICAgICBEQk0gKmRpX2RibTsKIH0gZGJtb2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL19kYm1tb2R1bGUuYy5oIgorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IERibXR5cGU7CiAKICNkZWZpbmUgaXNfZGJtb2JqZWN0KHYpIChQeV9UWVBFKHYpID09ICZEYm10eXBlKQpAQCAtNDksMTUgKzUxLDYgQEAKIAogc3RhdGljIFB5T2JqZWN0ICpEYm1FcnJvcjsKIAotLypbcHl0aG9uIGlucHV0XQotY2xhc3MgZGJtb2JqZWN0X2NvbnZlcnRlcihzZWxmX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICJkYm1vYmplY3QgKiIKLSAgICBkZWYgcHJlX3JlbmRlcihzZWxmKToKLSAgICAgICAgc3VwZXIoKS5wcmVfcmVuZGVyKCkKLSAgICAgICAgc2VsZi5uYW1lID0gJ2RwJwotW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmFkNTM2MzU3OTEzODc5YV0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgogbmV3ZGJtb2JqZWN0KGNvbnN0IGNoYXIgKmZpbGUsIGludCBmbGFncywgaW50IG1vZGUpCiB7CkBAIC0xODEsMjkgKzE3NCw0MyBAQAogICAgIChvYmpvYmphcmdwcm9jKWRibV9hc3Nfc3ViLCAgICAgICAgIC8qbXBfYXNzX3N1YnNjcmlwdCovCiB9OwogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5jbG9zZQorCitDbG9zZSB0aGUgZGF0YWJhc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1kYm1fX2Nsb3NlKGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICp1bnVzZWQpCitfZGJtX2RibV9jbG9zZV9pbXBsKGRibW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jOGRjNWI2NzA5NjAwYjg2IGlucHV0PTA0NmRiNzIzNzdkNTFiZThdKi8KIHsKLSAgICBpZiAoZHAtPmRpX2RibSkKLSAgICAgICAgZGJtX2Nsb3NlKGRwLT5kaV9kYm0pOwotICAgIGRwLT5kaV9kYm0gPSBOVUxMOworICAgIGlmIChzZWxmLT5kaV9kYm0pCisgICAgICAgIGRibV9jbG9zZShzZWxmLT5kaV9kYm0pOworICAgIHNlbGYtPmRpX2RibSA9IE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZGJtLmRibS5rZXlzCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZGJtX2tleXMoZGJtb2JqZWN0ICpkcCwgUHlPYmplY3QgKnVudXNlZCkKK19kYm1fZGJtX2tleXNfaW1wbChkYm1vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM0NTQ5ZjdjMTIxYjMzYyBpbnB1dD1kMjEwYmE3NzhjZDljNjhhXSovCiB7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGRhdHVtIGtleTsKICAgICBpbnQgZXJyOwogCi0gICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oZHApOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOwogICAgIHYgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoa2V5ID0gZGJtX2ZpcnN0a2V5KGRwLT5kaV9kYm0pOyBrZXkuZHB0cjsKLSAgICAgICAgIGtleSA9IGRibV9uZXh0a2V5KGRwLT5kaV9kYm0pKSB7CisgICAgZm9yIChrZXkgPSBkYm1fZmlyc3RrZXkoc2VsZi0+ZGlfZGJtKTsga2V5LmRwdHI7CisgICAgICAgICBrZXkgPSBkYm1fbmV4dGtleShzZWxmLT5kaV9kYm0pKSB7CiAgICAgICAgIGl0ZW0gPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGtleS5kcHRyLCBrZXkuZHNpemUpOwogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC0yNjUsNTggKzI3MiwyNyBAQAogfTsKIAogLypbY2xpbmljIGlucHV0XQorX2RibS5kYm0uZ2V0CiAKLWRibS5kYm0uZ2V0Ci0KLSAgICBzZWxmOiBkYm1vYmplY3QKLQotICAgIGtleTogc3RyKGxlbmd0aD1UcnVlKQotICAgIGRlZmF1bHQ6IG9iamVjdCA9IE5vbmUKKyAgICBrZXk6IHN0cihhY2NlcHQ9e3N0ciwgcm9idWZmZXJ9LCB6ZXJvZXM9VHJ1ZSkKKyAgICBkZWZhdWx0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKICAgICAvCiAKIFJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGRibV9kYm1fZ2V0X19kb2NfXywKLSJnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiIpOwotCi0jZGVmaW5lIERCTV9EQk1fR0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pZGJtX2RibV9nZXQsIE1FVEhfVkFSQVJHUywgZGJtX2RibV9nZXRfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGgsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibV9kYm1fZ2V0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmtleTsKLSAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJzI3xPOmdldCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYm1fZGJtX2dldF9pbXBsKGRwLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSwgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTJlYTExMzk0ZTdlOTJkIGlucHV0PWFlY2Y1ZWZkMmYyYjFhM2JdKi8KK19kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDRmOTVlYmE4MjAzZDkzIGlucHV0PWEzYTI3OTk1N2Y4NWViNmRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjVjMGU1MjNlYWYxMjUxIGlucHV0PTk0MDJjMGFmODU4MmRjNjldKi8KIHsKICAgICBkYXR1bSBkYm1fa2V5LCB2YWw7CiAKICAgICBkYm1fa2V5LmRwdHIgPSAoY2hhciAqKWtleTsKICAgICBkYm1fa2V5LmRzaXplID0ga2V5X2xlbmd0aDsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGRibV9rZXkpOworICAgIGNoZWNrX2RibW9iamVjdF9vcGVuKHNlbGYpOworICAgIHZhbCA9IGRibV9mZXRjaChzZWxmLT5kaV9kYm0sIGRibV9rZXkpOwogICAgIGlmICh2YWwuZHB0ciAhPSBOVUxMKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh2YWwuZHB0ciwgdmFsLmRzaXplKTsKIApAQCAtMzI0LDQ2ICszMDAsNTUgQEAKICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2RibS5kYm0uc2V0ZGVmYXVsdAorICAgIGtleTogc3RyKGFjY2VwdD17c3RyLCByb2J1ZmZlcn0sIHplcm9lcz1UcnVlKQorICAgIGRlZmF1bHQ6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworICAgIC8KKworUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LgorCitJZiBrZXkgaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW5zZXJ0ZWQgd2l0aCBkZWZhdWx0IGFzIHRoZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWRibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqZHAsIFB5T2JqZWN0ICphcmdzKQorX2RibV9kYm1fc2V0ZGVmYXVsdF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjU0NTg4NmNmMjcyMTYxIGlucHV0PWJmNDBjNDhlZGFjYTAxZDZdKi8KIHsKLSAgICBkYXR1bSBrZXksIHZhbDsKLSAgICBQeU9iamVjdCAqZGVmdmFsdWUgPSBOVUxMOwotICAgIGNoYXIgKnRtcF9wdHI7CisgICAgZGF0dW0gZGJtX2tleSwgdmFsOwogICAgIFB5X3NzaXplX3QgdG1wX3NpemU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfE86c2V0ZGVmYXVsdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXBfcHRyLCAmdG1wX3NpemUsICZkZWZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtleS5kcHRyID0gdG1wX3B0cjsKLSAgICBrZXkuZHNpemUgPSB0bXBfc2l6ZTsKLSAgICBjaGVja19kYm1vYmplY3Rfb3BlbihkcCk7Ci0gICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGtleSk7CisgICAgZGJtX2tleS5kcHRyID0gKGNoYXIgKilrZXk7CisgICAgZGJtX2tleS5kc2l6ZSA9IGtleV9sZW5ndGg7CisgICAgY2hlY2tfZGJtb2JqZWN0X29wZW4oc2VsZik7CisgICAgdmFsID0gZGJtX2ZldGNoKHNlbGYtPmRpX2RibSwgZGJtX2tleSk7CiAgICAgaWYgKHZhbC5kcHRyICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHZhbC5kcHRyLCB2YWwuZHNpemUpOwotICAgIGlmIChkZWZ2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIGRlZnZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICAgICAgaWYgKGRlZnZhbHVlID09IE5VTEwpCisgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBkZWZhdWx0X3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICAgICAgaWYgKGRlZmF1bHRfdmFsdWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB2YWwuZHB0ciA9IE5VTEw7CiAgICAgICAgIHZhbC5kc2l6ZSA9IDA7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoICFQeUFyZ19QYXJzZShkZWZ2YWx1ZSwgInMjIiwgJnZhbC5kcHRyLCAmdG1wX3NpemUpICkgeworICAgICAgICBpZiAoICFQeUFyZ19QYXJzZShkZWZhdWx0X3ZhbHVlLCAicyMiLCAmdmFsLmRwdHIsICZ0bXBfc2l6ZSkgKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJkYm0gbWFwcGluZ3MgaGF2ZSBieXRlIHN0cmluZyBlbGVtZW50cyBvbmx5Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICB2YWwuZHNpemUgPSB0bXBfc2l6ZTsKLSAgICAgICAgUHlfSU5DUkVGKGRlZnZhbHVlKTsKKyAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOwogICAgIH0KLSAgICBpZiAoZGJtX3N0b3JlKGRwLT5kaV9kYm0sIGtleSwgdmFsLCBEQk1fSU5TRVJUKSA8IDApIHsKLSAgICAgICAgZGJtX2NsZWFyZXJyKGRwLT5kaV9kYm0pOworICAgIGlmIChkYm1fc3RvcmUoc2VsZi0+ZGlfZGJtLCBkYm1fa2V5LCB2YWwsIERCTV9JTlNFUlQpIDwgMCkgeworICAgICAgICBkYm1fY2xlYXJlcnIoc2VsZi0+ZGlfZGJtKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKERibUVycm9yLCAiY2Fubm90IGFkZCBpdGVtIHRvIGRhdGFiYXNlIik7Ci0gICAgICAgIFB5X0RFQ1JFRihkZWZ2YWx1ZSk7CisgICAgICAgIFB5X0RFQ1JFRihkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBkZWZ2YWx1ZTsKKyAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM4MiwxNSArMzY3LDEwIEBACiAKIAogc3RhdGljIFB5TWV0aG9kRGVmIGRibV9tZXRob2RzW10gPSB7Ci0gICAgeyJjbG9zZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pZGJtX19jbG9zZSwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICAiY2xvc2UoKVxuQ2xvc2UgdGhlIGRhdGFiYXNlLiJ9LAotICAgIHsia2V5cyIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRibV9rZXlzLCAgICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgImtleXMoKSAtPiBsaXN0XG5SZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4ifSwKLSAgICBEQk1fREJNX0dFVF9NRVRIT0RERUYKLSAgICB7InNldGRlZmF1bHQiLCAgICAgIChQeUNGdW5jdGlvbilkYm1fc2V0ZGVmYXVsdCwgICAgTUVUSF9WQVJBUkdTLAotICAgICAic2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSkgLT4gdmFsdWVcbiIKLSAgICAgIlJldHVybiB0aGUgdmFsdWUgZm9yIGtleSBpZiBwcmVzZW50LCBvdGhlcndpc2UgZGVmYXVsdC4gIElmIGtleVxuIgotICAgICAiaXMgbm90IGluIHRoZSBkYXRhYmFzZSwgaXQgaXMgaW5zZXJ0ZWQgd2l0aCBkZWZhdWx0IGFzIHRoZSB2YWx1ZS4ifSwKKyAgICBfREJNX0RCTV9DTE9TRV9NRVRIT0RERUYKKyAgICBfREJNX0RCTV9LRVlTX01FVEhPRERFRgorICAgIF9EQk1fREJNX0dFVF9NRVRIT0RERUYKKyAgICBfREJNX0RCTV9TRVRERUZBVUxUX01FVEhPRERFRgogICAgIHsiX19lbnRlcl9fIiwgZGJtX19lbnRlcl9fLCBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJfX2V4aXRfXyIsICBkYm1fX2V4aXRfXywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwpAQCAtNDMxLDcgKzQxMSw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIAotZGJtLm9wZW4gYXMgZGJtb3BlbgorX2RibS5vcGVuIGFzIGRibW9wZW4KIAogICAgIGZpbGVuYW1lOiBzdHIKICAgICAgICAgVGhlIGZpbGVuYW1lIHRvIG9wZW4uCkBAIC00NDksNDcgKzQyOSwxMCBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKLSJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBhIGRhdGFiYXNlIG9iamVjdC5cbiIKLSJcbiIKLSIgIGZpbGVuYW1lXG4iCi0iICAgIFRoZSBmaWxlbmFtZSB0byBvcGVuLlxuIgotIiAgZmxhZ3NcbiIKLSIgICAgSG93IHRvIG9wZW4gdGhlIGZpbGUuICBcInJcIiBmb3IgcmVhZGluZywgXCJ3XCIgZm9yIHdyaXRpbmcsIGV0Yy5cbiIKLSIgIG1vZGVcbiIKLSIgICAgSWYgY3JlYXRpbmcgYSBuZXcgZmlsZSwgdGhlIG1vZGUgYml0cyBmb3IgdGhlIG5ldyBmaWxlXG4iCi0iICAgIChlLmcuIG9zLk9fUkRXUikuIik7Ci0KLSNkZWZpbmUgREJNT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilkYm1vcGVuLCBNRVRIX1ZBUkFSR1MsIGRibW9wZW5fX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsIGludCBtb2RlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWRibW9wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgY29uc3QgY2hhciAqZmlsZW5hbWU7Ci0gICAgY29uc3QgY2hhciAqZmxhZ3MgPSAiciI7Ci0gICAgaW50IG1vZGUgPSA0Mzg7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInN8c2k6b3BlbiIsCi0gICAgICAgICZmaWxlbmFtZSwgJmZsYWdzLCAmbW9kZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kYm1vcGVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmZsYWdzLCBpbnQgbW9kZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTdiNzI1ZjljNGRjZWMyIGlucHV0PTY0OTlhYjBmYWIxMzMzYWNdKi8KK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZThkNGIzNmYyNWM3MzNmZCBpbnB1dD0yMjYzMzRiYWRlNTc2NGU2XSovCiB7CiAgICAgaW50IGlmbGFnczsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCmluZGV4IGYwMDA4ODcuLjE2OTkxNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTU2NDAsNyArNTY0MCw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIC8qIGFkZCB0byBtb2R1bGUgKi8KQEAgLTU2NzIsNyArNTY3Miw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCiAgICAgICAgIH0KIAotICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKChjaGFyICopY20tPmZxbmFtZSwgYmFzZSwgTlVMTCkpOworICAgICAgICBBU1NJR05fUFRSKGNtLT5leCwgUHlFcnJfTmV3RXhjZXB0aW9uKGNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKICAgICAgICAgUHlfREVDUkVGKGJhc2UpOwogCiAgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCBhNjQ5MGI5Li43MTAyOWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtMTksMjYgKzE5LDMwIEBACiBQeURvY19TVFJWQVIoZG9jX19kZWNpbWFsLAogIkMgZGVjaW1hbCBhcml0aG1ldGljIG1vZHVsZSIpOwogCi1QeURvY19TVFJWQVIoZG9jX2dldGNvbnRleHQsIlxuXAotZ2V0Y29udGV4dCgpIC0gR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZ2V0Y29udGV4dCwKKyJnZXRjb250ZXh0KCRtb2R1bGUsIC8pXG4tLVxuXG5cCitHZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LCJcblwKLXNldGNvbnRleHQoYykgLSBTZXQgYSBuZXcgZGVmYXVsdCBjb250ZXh0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19zZXRjb250ZXh0LAorInNldGNvbnRleHQoJG1vZHVsZSwgY29udGV4dCwgLylcbi0tXG5cblwKK1NldCBhIG5ldyBkZWZhdWx0IGNvbnRleHQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwiXG5cCi1sb2NhbGNvbnRleHQoY3R4PU5vbmUpIC0gUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgd2lsbCBzZXQgdGhlIGRlZmF1bHRcblwKLWNvbnRleHQgdG8gYSBjb3B5IG9mIGN0eCBvbiBlbnRyeSB0byB0aGUgd2l0aC1zdGF0ZW1lbnQgYW5kIHJlc3RvcmUgdGhlXG5cCi1wcmV2aW91cyBkZWZhdWx0IGNvbnRleHQgd2hlbiBleGl0aW5nIHRoZSB3aXRoLXN0YXRlbWVudC4gSWYgbm8gY29udGV4dCBpc1xuXAotc3BlY2lmaWVkLCBhIGNvcHkgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvY2FsY29udGV4dCwKKyJsb2NhbGNvbnRleHQoJG1vZHVsZSwgLywgY3R4PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB3aWxsIHNldCB0aGUgZGVmYXVsdCBjb250ZXh0IHRvIGEgY29weSBvZiBjdHhcblwKK29uIGVudHJ5IHRvIHRoZSB3aXRoLXN0YXRlbWVudCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgZGVmYXVsdCBjb250ZXh0IHdoZW5cblwKK2V4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZCwgYSBjb3B5IG9mIHRoZSBjdXJyZW50XG5cCitkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKIFxuIik7CiAKICNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCi1QeURvY19TVFJWQVIoZG9jX2llZWVfY29udGV4dCwiXG5cCi1JRUVFQ29udGV4dChiaXRzKSAtIFJldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvclxuXAotb25lIG9mIHRoZSBJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgYW5kXG5cCi1sZXNzIHRoYW4gSUVFRV9DT05URVhUX01BWF9CSVRTLiBGb3IgdGhlIG1vc3QgY29tbW9uIHZhbHVlcywgdGhlIGNvbnN0YW50c1xuXAorUHlEb2NfU1RSVkFSKGRvY19pZWVlX2NvbnRleHQsCisiSUVFRUNvbnRleHQoJG1vZHVsZSwgYml0cywgLylcbi0tXG5cblwKK1JldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvciBvbmUgb2YgdGhlXG5cCitJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyIGFuZCBsZXNzXG5cCit0aGFuIElFRUVfQ09OVEVYVF9NQVhfQklUUy4gIEZvciB0aGUgbW9zdCBjb21tb24gdmFsdWVzLCB0aGUgY29uc3RhbnRzXG5cCiBERUNJTUFMMzIsIERFQ0lNQUw2NCBhbmQgREVDSU1BTDEyOCBhcmUgcHJvdmlkZWQuXG5cCiBcbiIpOwogI2VuZGlmCkBAIC00OCwzMiArNTIsMzQgQEAKIC8qICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsIE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1QeURvY19TVFJWQVIoZG9jX2RlY2ltYWwsIlxuXAotRGVjaW1hbCh2YWx1ZT1cIjBcIiwgY29udGV4dD1Ob25lKTogQ29uc3RydWN0IGEgbmV3IERlY2ltYWwgb2JqZWN0LlxuXAotdmFsdWUgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIG9yIGFub3RoZXIgRGVjaW1hbCBvYmplY3QuXG5cCi1JZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0XG5cCi10aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBJbnZhbGlkT3BlcmF0aW9uXG5cCi10cmFwIGlzIGFjdGl2ZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfZGVjaW1hbCwKKyJEZWNpbWFsKHZhbHVlPVwiMFwiLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitDb25zdHJ1Y3QgYSBuZXcgRGVjaW1hbCBvYmplY3QuICd2YWx1ZScgY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsXG5cCitvciBhbm90aGVyIERlY2ltYWwgb2JqZWN0LiBJZiBubyB2YWx1ZSBpcyBnaXZlbiwgcmV0dXJuIERlY2ltYWwoJzAnKS4gVGhlXG5cCitjb250ZXh0IGRvZXMgbm90IGFmZmVjdCB0aGUgY29udmVyc2lvbiBhbmQgaXMgb25seSBwYXNzZWQgdG8gZGV0ZXJtaW5lIGlmXG5cCit0aGUgSW52YWxpZE9wZXJhdGlvbiB0cmFwIGlzIGFjdGl2ZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYWRqdXN0ZWQsIlxuXAotYWRqdXN0ZWQoKSAtIFJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci5cblwKLVxuXAotRGVmaW5lZCBhcyBleHAgKyBkaWdpdHMgLSAxLlxuXAorUHlEb2NfU1RSVkFSKGRvY19hZGp1c3RlZCwKKyJhZGp1c3RlZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2YgdGhlIG51bWJlci4gIERlZmluZWQgYXMgZXhwICsgZGlnaXRzIC0gMS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfYXNfdHVwbGUsIlxuXAotYXNfdHVwbGUoKSAtIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2FzX3R1cGxlLAorImFzX3R1cGxlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdHVwbGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY2Fub25pY2FsLCJcblwKLWNhbm9uaWNhbCgpIC0gUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiBDdXJyZW50bHksXG5cCi10aGUgZW5jb2Rpbmcgb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uXG5cCi1yZXR1cm5zIGl0cyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKKyJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXAorb2YgYSBEZWNpbWFsIGluc3RhbmNlIGlzIGFsd2F5cyBjYW5vbmljYWwsIHNvIHRoaXMgb3BlcmF0aW9uIHJldHVybnMgaXRzXG5cCithcmd1bWVudCB1bmNoYW5nZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmUsIlxuXAotY29tcGFyZShvdGhlciwgY29udGV4dD1Ob25lKSAtIENvbXBhcmUgc2VsZiB0byBvdGhlci4gUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZSwKKyJjb21wYXJlKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSBzZWxmIHRvIG90aGVyLiAgUmV0dXJuIGEgZGVjaW1hbCB2YWx1ZTpcblwKIFxuXAogICAgIGEgb3IgYiBpcyBhIE5hTiA9PT4gRGVjaW1hbCgnTmFOJylcblwKICAgICBhIDwgYiAgICAgICAgICAgPT0+IERlY2ltYWwoJy0xJylcblwKQEAgLTgxLDE3ICs4NywxOCBAQAogICAgIGEgPiBiICAgICAgICAgICA9PT4gRGVjaW1hbCgnMScpXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLCJcblwKLWNvbXBhcmVfc2lnbmFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0XG5cCi1hbGwgTmFOcyBzaWduYWwuXG5cCitQeURvY19TVFJWQVIoZG9jX2NvbXBhcmVfc2lnbmFsLAorImNvbXBhcmVfc2lnbmFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIGNvbXBhcmUsIGV4Y2VwdCB0aGF0IGFsbCBOYU5zIHNpZ25hbC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwiXG5cCi1jb21wYXJlX3RvdGFsKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXJcblwKLWFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyIG51bWVyaWNhbCB2YWx1ZS4gU2ltaWxhciB0byB0aGVcblwKLWNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0IGdpdmVzIGEgdG90YWwgb3JkZXJpbmcgb24gRGVjaW1hbCBpbnN0YW5jZXMuXG5cCi1Ud28gRGVjaW1hbCBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGJ1dCBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zXG5cCi1jb21wYXJlIHVuZXF1YWwgaW4gdGhpcyBvcmRlcmluZzpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbCwKKyJjb21wYXJlX3RvdGFsKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW5cblwKK3RoZWlyIG51bWVyaWNhbCB2YWx1ZS4gIFNpbWlsYXIgdG8gdGhlIGNvbXBhcmUoKSBtZXRob2QsIGJ1dCB0aGUgcmVzdWx0XG5cCitnaXZlcyBhIHRvdGFsIG9yZGVyaW5nIG9uIERlY2ltYWwgaW5zdGFuY2VzLiAgVHdvIERlY2ltYWwgaW5zdGFuY2VzIHdpdGhcblwKK3RoZSBzYW1lIG51bWVyaWMgdmFsdWUgYnV0IGRpZmZlcmVudCByZXByZXNlbnRhdGlvbnMgY29tcGFyZSB1bmVxdWFsXG5cCitpbiB0aGlzIG9yZGVyaW5nOlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEyLjAnKS5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyJykpXG5cCiAgICAgRGVjaW1hbCgnLTEnKVxuXApAQCAtMTA3LDM2ICsxMTQsMzkgQEAKIEludmFsaWRPcGVyYXRpb24gaWYgdGhlIHNlY29uZCBvcGVyYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZXhhY3RseS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbF9tYWcsIlxuXAotY29tcGFyZV90b3RhbF9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBDb21wYXJlIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpclxuXAotYWJzdHJhY3QgcmVwcmVzZW50YXRpb24gcmF0aGVyIHRoYW4gdGhlaXIgdmFsdWUgYXMgaW4gY29tcGFyZV90b3RhbCgpLCBidXRcblwKLWlnbm9yaW5nIHRoZSBzaWduIG9mIGVhY2ggb3BlcmFuZC4geC5jb21wYXJlX3RvdGFsX21hZyh5KSBpcyBlcXVpdmFsZW50IHRvXG5cCi14LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK0NvbXBhcmUgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyXG5cCit2YWx1ZSBhcyBpbiBjb21wYXJlX3RvdGFsKCksIGJ1dCBpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuXG5cCitcblwKK3guY29tcGFyZV90b3RhbF9tYWcoeSkgaXMgZXF1aXZhbGVudCB0byB4LmNvcHlfYWJzKCkuY29tcGFyZV90b3RhbCh5LmNvcHlfYWJzKCkpLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb25qdWdhdGUsIlxuXAotY29uanVnYXRlKCkgLSBSZXR1cm4gc2VsZi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29uanVnYXRlLAorImNvbmp1Z2F0ZSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBzZWxmLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X2FicywiXG5cCi1jb3B5X2FicygpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uXG5cCi1pcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9hYnMsCisiY29weV9hYnMoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnlcblwKK2NvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X25lZ2F0ZSwiXG5cCi1jb3B5X25lZ2F0ZSgpIC0gUmV0dXJuIHRoZSBuZWdhdGlvbiBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uIGlzXG5cCi11bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmdcblwKLWlzIHBlcmZvcm1lZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9uZWdhdGUsCisiY29weV9uZWdhdGUoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gIFRoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgY29udGV4dFxuXAorYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm8gcm91bmRpbmcgaXMgcGVyZm9ybWVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCB3aXRoXG5cCi10aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLiBGb3IgZXhhbXBsZTpcblwKK1B5RG9jX1NUUlZBUihkb2NfY29weV9zaWduLAorImNvcHlfc2lnbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlXG5cCitzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC4gRm9yIGV4YW1wbGU6XG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgnMi4zJykuY29weV9zaWduKERlY2ltYWwoJy0xLjUnKSlcblwKICAgICBEZWNpbWFsKCctMi4zJylcblwKQEAgLTE0NiwxNCArMTU2LDE2IEBACiBJbnZhbGlkT3BlcmF0aW9uIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2V4cCwiXG5cCi1leHAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIChuYXR1cmFsKSBleHBvbmVudGlhbCBmdW5jdGlvblxuXAotZSoqeCBhdCB0aGUgZ2l2ZW4gbnVtYmVyLiBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlXG5cCi1hbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfZXhwLAorImV4cCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKG5hdHVyYWwpIGV4cG9uZW50aWFsIGZ1bmN0aW9uIGUqKnggYXQgdGhlIGdpdmVuXG5cCitudW1iZXIuICBUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0XG5cCitpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfZnJvbV9mbG9hdCwiXG5cCi1mcm9tX2Zsb2F0KGYpIC0gQ2xhc3MgbWV0aG9kIHRoYXQgY29udmVydHMgYSBmbG9hdCB0byBhIGRlY2ltYWwgbnVtYmVyLCBleGFjdGx5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19mcm9tX2Zsb2F0LAorImZyb21fZmxvYXQoJHR5cGUsIGYsIC8pXG4tLVxuXG5cCitDbGFzcyBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuXG5cCiBTaW5jZSAwLjEgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsXG5cCiBEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuXG5cCiBcblwKQEAgLTE2OCwxNTUgKzE4MCwxNzYgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19mbWEsIlxuXAotZm1hKG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKSAtIEZ1c2VkIG11bHRpcGx5LWFkZC4gUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmRcblwKLXdpdGggbm8gcm91bmRpbmcgb2YgdGhlIGludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2ZtYSwKKyJmbWEoJHNlbGYsIC8sIG90aGVyLCB0aGlyZCwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRnVzZWQgbXVsdGlwbHktYWRkLiAgUmV0dXJuIHNlbGYqb3RoZXIrdGhpcmQgd2l0aCBubyByb3VuZGluZyBvZiB0aGVcblwKK2ludGVybWVkaWF0ZSBwcm9kdWN0IHNlbGYqb3RoZXIuXG5cCiBcblwKICAgICA+Pj4gRGVjaW1hbCgyKS5mbWEoMywgNSlcblwKICAgICBEZWNpbWFsKCcxMScpXG5cCiBcblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfY2Fub25pY2FsLCJcblwKLWlzX2Nhbm9uaWNhbCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGNhbm9uaWNhbCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotQ3VycmVudGx5LCBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzXG5cCi1yZXR1cm5zIFRydWUuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2Nhbm9uaWNhbCwKKyJpc19jYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgY2Fub25pY2FsIGFuZCBGYWxzZSBvdGhlcndpc2UuICBDdXJyZW50bHksXG5cCithIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzIGNhbm9uaWNhbCwgc28gdGhpcyBvcGVyYXRpb24gYWx3YXlzIHJldHVybnNcblwKK1RydWUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2Zpbml0ZSwiXG5cCi1pc19maW5pdGUoKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIGZpbml0ZSBudW1iZXIsIGFuZCBGYWxzZSBpZiB0aGVcblwKLWFyZ3VtZW50IGlzIGluZmluaXRlIG9yIGEgTmFOLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19maW5pdGUsCisiaXNfZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgZmluaXRlIG51bWJlciwgYW5kIEZhbHNlIGlmIHRoZSBhcmd1bWVudFxuXAoraXMgaW5maW5pdGUgb3IgYSBOYU4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLCJcblwKLWlzX2luZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG5cCi1pbmZpbml0eSBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotXG4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19pc19uYW4sIlxuXAotaXNfbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLAorImlzX2luZmluaXRlKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSBhbmRcblwKIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbChjb250ZXh0PU5vbmUpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgbm9ybWFsIGZpbml0ZVxuXAotbm9uLXplcm8gbnVtYmVyIHdpdGggYW4gYWRqdXN0ZWQgZXhwb25lbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIEVtaW4uXG5cCi1SZXR1cm4gRmFsc2UgaWYgdGhlIGFyZ3VtZW50IGlzIHplcm8sIHN1Ym5vcm1hbCwgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX25hbiwKKyJpc19uYW4oJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kIEZhbHNlXG5cCitvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3FuYW4sIlxuXAotaXNfcW5hbigpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBub3JtYWwgZmluaXRlIG5vbi16ZXJvIG51bWJlciB3aXRoIGFuXG5cCithZGp1c3RlZCBleHBvbmVudCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gRW1pbi4gUmV0dXJuIEZhbHNlIGlmIHRoZVxuXAorYXJndW1lbnQgaXMgemVybywgc3Vibm9ybWFsLCBpbmZpbml0ZSBvciBhIE5hTi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLCJcblwKLWlzX3NpZ25lZCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGhhcyBhIG5lZ2F0aXZlIHNpZ24gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuIE5vdGUgdGhhdCBib3RoIHplcm9zIGFuZCBOYU5zIGNhbiBjYXJyeSBzaWducy5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfcW5hbiwKKyJpc19xbmFuKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgcXVpZXQgTmFOLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19pc19zbmFuLCJcblwKLWlzX3NuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLAorImlzX3NpZ25lZCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBoYXMgYSBuZWdhdGl2ZSBzaWduIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitOb3RlIHRoYXQgYm90aCB6ZXJvcyBhbmQgTmFOcyBjYW4gY2Fycnkgc2lnbnMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoY29udGV4dD1Ob25lKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZFxuXAotRmFsc2Ugb3RoZXJ3aXNlLiBBIG51bWJlciBpcyBzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhblxuXAotYWRqdXN0ZWQgZXhwb25lbnQgbGVzcyB0aGFuIEVtaW4uXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3NuYW4sCisiaXNfc25hbigkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHNpZ25hbGluZyBOYU4gYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfaXNfemVybywiXG5cCi1pc196ZXJvKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHplcm8gYW5kXG5cCi1GYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwKKyJpc19zdWJub3JtYWwoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCBGYWxzZSBvdGhlcndpc2UuIEEgbnVtYmVyIGlzXG5cCitzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhbiBhZGp1c3RlZCBleHBvbmVudCBsZXNzXG5cCit0aGFuIEVtaW4uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xuLCJcblwKLWxuKGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2lzX3plcm8sCisiaXNfemVybygkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgemVybyBhbmQgRmFsc2VcblwKK290aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nMTAsIlxuXAotbG9nMTAoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgYmFzZSB0ZW4gbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLlxuXAotVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpc1xuXAotY29ycmVjdGx5IHJvdW5kZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xuLAorImxuKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHRoZSBvcGVyYW5kLiBUaGUgZnVuY3Rpb24gYWx3YXlzXG5cCit1c2VzIHRoZSBST1VORF9IQUxGX0VWRU4gbW9kZSBhbmQgdGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9nYiwiXG5cCi1sb2diKGNvbnRleHQ9Tm9uZSkgLSBGb3IgYSBub24temVybyBudW1iZXIsIHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnRcblwKLW9mIHRoZSBvcGVyYW5kIGFzIGEgRGVjaW1hbCBpbnN0YW5jZS4gSWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvLCB0aGVuXG5cCi1EZWNpbWFsKCctSW5maW5pdHknKSBpcyByZXR1cm5lZCBhbmQgdGhlIERpdmlzaW9uQnlaZXJvIGNvbmRpdGlvbiBpc1xuXAotcmFpc2VkLiBJZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmZpbml0eSB0aGVuIERlY2ltYWwoJ0luZmluaXR5JykgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZzEwLAorImxvZzEwKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGJhc2UgdGVuIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC4gVGhlIGZ1bmN0aW9uIGFsd2F5cyB1c2VzIHRoZVxuXAorUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfYW5kLCJcblwKLWxvZ2ljYWxfYW5kKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGFuZCBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2IsCisibG9nYigkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorRm9yIGEgbm9uLXplcm8gbnVtYmVyLCByZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBvcGVyYW5kIGFzIGFcblwKK0RlY2ltYWwgaW5zdGFuY2UuICBJZiB0aGUgb3BlcmFuZCBpcyBhIHplcm8sIHRoZW4gRGVjaW1hbCgnLUluZmluaXR5JykgaXNcblwKK3JldHVybmVkIGFuZCB0aGUgRGl2aXNpb25CeVplcm8gY29uZGl0aW9uIGlzIHJhaXNlZC4gSWYgdGhlIG9wZXJhbmQgaXNcblwKK2FuIGluZmluaXR5IHRoZW4gRGVjaW1hbCgnSW5maW5pdHknKSBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBpbnZlcnNpb24gb2YgdGhlXG5cCi0obG9naWNhbCkgb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgJ2FuZCcgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfb3IsIlxuXAotbG9naWNhbF9vcihvdGhlciwgY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBvciBvZiB0aGUgdHdvXG5cCi0obG9naWNhbCkgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfaW52ZXJ0LAorImxvZ2ljYWxfaW52ZXJ0KCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgaW52ZXJzaW9uIG9mIHRoZSAobG9naWNhbCkgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3Iob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgZXhjbHVzaXZlIG9yIG9mIHRoZVxuXAotdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWdpdC13aXNlICdvcicgb2YgdGhlIHR3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX21heCwiXG5cCi1tYXgob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiBJZiBvbmUgb3BlcmFuZCBpcyBhXG5cCi1xdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19sb2dpY2FsX3hvciwKKyJsb2dpY2FsX3hvcigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgZGlnaXQtd2lzZSAnZXhjbHVzaXZlIG9yJyBvZiB0aGUgdHdvIChsb2dpY2FsKSBvcGVyYW5kcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWF4X21hZywiXG5cCi1tYXhfbWFnKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gU2ltaWxhciB0byB0aGUgbWF4KCkgbWV0aG9kLCBidXQgdGhlXG5cCi1jb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCitQeURvY19TVFJWQVIoZG9jX21heCwKKyJtYXgoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiAgSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpc1xuXAorbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbWluLCJcblwKLW1pbihvdGhlciwgY29udGV4dD1Ob25lKSAtIE1pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGFcblwKLXF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX21heF9tYWcsCisibWF4X21hZygkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1NpbWlsYXIgdG8gdGhlIG1heCgpIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzIGRvbmUgdXNpbmcgdGhlIGFic29sdXRlXG5cCit2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19taW5fbWFnLCJcblwKLW1pbl9tYWcob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBTaW1pbGFyIHRvIHRoZSBtaW4oKSBtZXRob2QsIGJ1dCB0aGVcblwKLWNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluLAorIm1pbigkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK01pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXQgTmFOIGFuZCB0aGUgb3RoZXIgaXNcblwKK251bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsIlxuXAotbmV4dF9taW51cyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZVxuXAotZ2l2ZW4gY29udGV4dCAob3IgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXRcblwKLWlzIHNtYWxsZXIgdGhhbiB0aGUgZ2l2ZW4gb3BlcmFuZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorU2ltaWxhciB0byB0aGUgbWluKCkgbWV0aG9kLCBidXQgdGhlIGNvbXBhcmlzb24gaXMgZG9uZSB1c2luZyB0aGUgYWJzb2x1dGVcblwKK3ZhbHVlcyBvZiB0aGUgb3BlcmFuZHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywiXG5cCi1uZXh0X3BsdXMoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlXG5cCi1naXZlbiBjb250ZXh0IChvciBpbiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdFxuXAotaXMgbGFyZ2VyIHRoYW4gdGhlIGdpdmVuIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfbWludXMsCisibmV4dF9taW51cygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IG51bWJlciByZXByZXNlbnRhYmxlIGluIHRoZSBnaXZlbiBjb250ZXh0IChvciBpbiB0aGVcblwKK2N1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgZ2l2ZW4pIHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZVxuXAorZ2l2ZW4gb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbmV4dF90b3dhcmQsIlxuXAotbmV4dF90b3dhcmQob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBJZiB0aGUgdHdvIG9wZXJhbmRzIGFyZSB1bmVxdWFsLCByZXR1cm5cblwKLXRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKLUlmIGJvdGggb3BlcmFuZHMgYXJlIG51bWVyaWNhbGx5IGVxdWFsLCByZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kXG5cCi13aXRoIHRoZSBzaWduIHNldCB0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIC8sIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1JldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlIGdpdmVuIGNvbnRleHQgKG9yIGluIHRoZVxuXAorY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGVcblwKK2dpdmVuIG9wZXJhbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX25vcm1hbGl6ZSwiXG5cCi1ub3JtYWxpemUoY29udGV4dD1Ob25lKSAtIE5vcm1hbGl6ZSB0aGUgbnVtYmVyIGJ5IHN0cmlwcGluZyB0aGUgcmlnaHRtb3N0XG5cCi10cmFpbGluZyB6ZXJvcyBhbmQgY29udmVydGluZyBhbnkgcmVzdWx0IGVxdWFsIHRvIERlY2ltYWwoJzAnKSB0byBEZWNpbWFsKCcwZTAnKS5cblwKLVVzZWQgZm9yIHByb2R1Y2luZyBjYW5vbmljYWwgdmFsdWVzIGZvciBtZW1iZXJzIG9mIGFuIGVxdWl2YWxlbmNlIGNsYXNzLiBGb3JcblwKLWV4YW1wbGUsIERlY2ltYWwoJzMyLjEwMCcpIGFuZCBEZWNpbWFsKCcwLjMyMTAwMGUrMicpIGJvdGggbm9ybWFsaXplIHRvIHRoZVxuXAotZXF1aXZhbGVudCB2YWx1ZSBEZWNpbWFsKCczMi4xJykuXG5cCitQeURvY19TVFJWQVIoZG9jX25leHRfdG93YXJkLAorIm5leHRfdG93YXJkKCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUgdW5lcXVhbCwgcmV0dXJuIHRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3RcblwKK29wZXJhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuICBJZiBib3RoIG9wZXJhbmRzIGFyZVxuXAorbnVtZXJpY2FsbHkgZXF1YWwsIHJldHVybiBhIGNvcHkgb2YgdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgc2lnbiBzZXRcblwKK3RvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLCJcblwKLW51bWJlcl9jbGFzcyhjb250ZXh0PU5vbmUpIC0gUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZVxuXAotb3BlcmFuZC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRlbiBzdHJpbmdzOlxuXAorUHlEb2NfU1RSVkFSKGRvY19ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCAvLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZyB6ZXJvcyBhbmRcblwKK2NvbnZlcnRpbmcgYW55IHJlc3VsdCBlcXVhbCB0byBEZWNpbWFsKCcwJykgdG8gRGVjaW1hbCgnMGUwJykuICBVc2VkXG5cCitmb3IgcHJvZHVjaW5nIGNhbm9uaWNhbCB2YWx1ZXMgZm9yIG1lbWJlcnMgb2YgYW4gZXF1aXZhbGVuY2UgY2xhc3MuXG5cCitGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMzIuMTAwJykgYW5kIERlY2ltYWwoJzAuMzIxMDAwZSsyJykgYm90aCBub3JtYWxpemVcblwKK3RvIHRoZSBlcXVpdmFsZW50IHZhbHVlIERlY2ltYWwoJzMyLjEnKS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbnVtYmVyX2NsYXNzLAorIm51bWJlcl9jbGFzcygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsYXNzIG9mIHRoZSBvcGVyYW5kLiAgVGhlIHJldHVybmVkIHZhbHVlXG5cCitpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZW4gc3RyaW5nczpcblwKIFxuXAogICAgICogJy1JbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBpbmZpbml0eS5cblwKICAgICAqICctTm9ybWFsJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgbm9ybWFsIG51bWJlci5cblwKQEAgLTMzMSw5ICszNjQsMTAgQEAKIFxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZShleHAsIHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGVcblwKLWZpcnN0IG9wZXJhbmQgYWZ0ZXIgcm91bmRpbmcgYW5kIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgLywgZXhwLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciByb3VuZGluZyBhbmQgaGF2aW5nIHRoZVxuXAorZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAogXG5cCiAgICAgPj4+IERlY2ltYWwoJzEuNDE0MjEzNTYnKS5xdWFudGl6ZShEZWNpbWFsKCcxLjAwMCcpKVxuXAogICAgIERlY2ltYWwoJzEuNDE0JylcblwKQEAgLTM1MiwxMDMgKzM4NiwxMDkgQEAKIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JhZGl4LCJcblwKLXJhZGl4KCkgLSBSZXR1cm4gRGVjaW1hbCgxMCksIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIERlY2ltYWwgY2xhc3MgZG9lc1xuXAorUHlEb2NfU1RSVkFSKGRvY19yYWRpeCwKKyJyYWRpeCgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBEZWNpbWFsKDEwKSwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgRGVjaW1hbCBjbGFzcyBkb2VzXG5cCiBhbGwgaXRzIGFyaXRobWV0aWMuIEluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JlbWFpbmRlcl9uZWFyLCJcblwKLXJlbWFpbmRlcl9uZWFyKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBkaXZpZGluZ1xuXAotc2VsZiBieSBvdGhlci4gVGhpcyBkaWZmZXJzIGZyb20gc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlXG5cCi1yZW1haW5kZXIgaXMgY2hvc2VuIHNvIGFzIHRvIG1pbmltaXplIGl0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZVxuXAotcmV0dXJuIHZhbHVlIGlzIHNlbGYgLSBuICogb3RoZXIgd2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdFxuXAotdmFsdWUgb2Ygc2VsZiAvIG90aGVyLCBhbmQgaWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmVcblwKLWlzIGNob3Nlbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlbWFpbmRlciBmcm9tIGRpdmlkaW5nIHNlbGYgYnkgb3RoZXIuICBUaGlzIGRpZmZlcnMgZnJvbVxuXAorc2VsZiAlIG90aGVyIGluIHRoYXQgdGhlIHNpZ24gb2YgdGhlIHJlbWFpbmRlciBpcyBjaG9zZW4gc28gYXMgdG8gbWluaW1pemVcblwKK2l0cyBhYnNvbHV0ZSB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZSByZXR1cm4gdmFsdWUgaXMgc2VsZiAtIG4gKiBvdGhlclxuXAord2hlcmUgbiBpcyB0aGUgaW50ZWdlciBuZWFyZXN0IHRvIHRoZSBleGFjdCB2YWx1ZSBvZiBzZWxmIC8gb3RoZXIsIGFuZFxuXAoraWYgdHdvIGludGVnZXJzIGFyZSBlcXVhbGx5IG5lYXIgdGhlbiB0aGUgZXZlbiBvbmUgaXMgY2hvc2VuLlxuXAogXG5cCiBJZiB0aGUgcmVzdWx0IGlzIHplcm8gdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHNlbGYuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwiXG5cCi1yb3RhdGUob3RoZXIsIGNvbnRleHQ9Tm9uZSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZVxuXAotZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZCBvcGVyYW5kXG5cCi1tdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZSBhYnNvbHV0ZVxuXAotdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHJvdGF0ZS4gSWYgdGhlIHNlY29uZFxuXAotb3BlcmFuZCBpcyBwb3NpdGl2ZSB0aGVuIHJvdGF0aW9uIGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2Ugcm90YXRpb24gaXMgdG8gdGhlXG5cCi1yaWdodC4gVGhlIGNvZWZmaWNpZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGlzIHBhZGRlZCBvbiB0aGUgbGVmdCB3aXRoIHplcm9zIHRvXG5cCitQeURvY19TVFJWQVIoZG9jX3JvdGF0ZSwKKyJyb3RhdGUoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIHJlc3VsdCBvZiByb3RhdGluZyB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudFxuXAorc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW5cblwKK3RoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZFxuXAorb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byByb3RhdGUuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUgdGhlbiByb3RhdGlvbiBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlIHJvdGF0aW9uIGlzIHRvIHRoZSByaWdodC5cblwKK1RoZSBjb2VmZmljaWVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBwYWRkZWQgb24gdGhlIGxlZnQgd2l0aCB6ZXJvcyB0b1xuXAogbGVuZ3RoIHByZWNpc2lvbiBpZiBuZWNlc3NhcnkuIFRoZSBzaWduIGFuZCBleHBvbmVudCBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmVcblwKIHVuY2hhbmdlZC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bShvdGhlciwgY29udGV4dD1Ob25lKSAtIFRlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZVxuXAotc2FtZSBleHBvbmVudCBvciB3aGV0aGVyIGJvdGggYXJlIE5hTi5cblwKK1B5RG9jX1NUUlZBUihkb2Nfc2FtZV9xdWFudHVtLAorInNhbWVfcXVhbnR1bSgkc2VsZiwgLywgb3RoZXIsIGNvbnRleHQ9Tm9uZSlcbi0tXG5cblwKK1Rlc3Qgd2hldGhlciBzZWxmIGFuZCBvdGhlciBoYXZlIHRoZSBzYW1lIGV4cG9uZW50IG9yIHdoZXRoZXIgYm90aCBhcmUgTmFOLlxuXAogXG5cCiBUaGlzIG9wZXJhdGlvbiBpcyB1bmFmZmVjdGVkIGJ5IGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZFxuXAogYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC4gQXMgYW4gZXhjZXB0aW9uLCB0aGUgQyB2ZXJzaW9uIG1heSByYWlzZVxuXAogSW52YWxpZE9wZXJhdGlvbiBpZiB0aGUgc2Vjb25kIG9wZXJhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBleGFjdGx5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zY2FsZWIsIlxuXAotc2NhbGViKG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIGV4cG9uZW50XG5cCi1hZGp1c3RlZCB0aGUgc2Vjb25kLiBFcXVpdmFsZW50bHksIHJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5XG5cCi0xMCoqb3RoZXIuIFRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX3NjYWxlYiwKKyJzY2FsZWIoJHNlbGYsIC8sIG90aGVyLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnQgYWRqdXN0ZWQgdGhlIHNlY29uZC4gIEVxdWl2YWxlbnRseSxcblwKK3JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBtdWx0aXBsaWVkIGJ5IDEwKipvdGhlci4gVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmVcblwKK2FuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3NoaWZ0LCJcblwKLXNoaWZ0KG90aGVyLCBjb250ZXh0PU5vbmUpIC0gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZlxuXAotdGhlIGZpcnN0IG9wZXJhbmQgYnkgYW4gYW1vdW50IHNwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuIFRoZSBzZWNvbmRcblwKLW9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAtcHJlY2lzaW9uIHRocm91Z2ggcHJlY2lzaW9uLiBUaGVcblwKLWFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0byBzaGlmdC5cblwKLUlmIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBwb3NpdGl2ZSwgdGhlbiB0aGUgc2hpZnQgaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZVxuXAotdGhlIHNoaWZ0IGlzIHRvIHRoZSByaWdodC4gRGlnaXRzIHNoaWZ0ZWQgaW50byB0aGUgY29lZmZpY2llbnQgYXJlIHplcm9zLlxuXAotVGhlIHNpZ24gYW5kIGV4cG9uZW50IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGFyZSB1bmNoYW5nZWQuXG5cCitQeURvY19TVFJWQVIoZG9jX3NoaWZ0LAorInNoaWZ0KCRzZWxmLCAvLCBvdGhlciwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSByZXN1bHQgb2Ygc2hpZnRpbmcgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnRcblwKK3NwZWNpZmllZCBieSB0aGUgc2Vjb25kIG9wZXJhbmQuICBUaGUgc2Vjb25kIG9wZXJhbmQgbXVzdCBiZSBhbiBpbnRlZ2VyIGluXG5cCit0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcblwKK29wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gc2hpZnQuIElmIHRoZSBzZWNvbmQgb3BlcmFuZCBpc1xuXAorcG9zaXRpdmUsIHRoZW4gdGhlIHNoaWZ0IGlzIHRvIHRoZSBsZWZ0OyBvdGhlcndpc2UgdGhlIHNoaWZ0IGlzIHRvIHRoZVxuXAorcmlnaHQuIERpZ2l0cyBzaGlmdGVkIGludG8gdGhlIGNvZWZmaWNpZW50IGFyZSB6ZXJvcy4gVGhlIHNpZ24gYW5kIGV4cG9uZW50XG5cCitvZiB0aGUgZmlyc3Qgb3BlcmFuZCBhcmUgdW5jaGFuZ2VkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19zcXJ0LCJcblwKLXNxcnQoY29udGV4dD1Ob25lKSAtIFJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIGFyZ3VtZW50IHRvIGZ1bGwgcHJlY2lzaW9uLlxuXAotVGhlIHJlc3VsdCBpcyBjb3JyZWN0bHkgcm91bmRlZCB1c2luZyB0aGUgUk9VTkRfSEFMRl9FVkVOIHJvdW5kaW5nIG1vZGUuXG5cCitQeURvY19TVFJWQVIoZG9jX3NxcnQsCisic3FydCgkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgdG8gZnVsbCBwcmVjaXNpb24uIFRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkIHVzaW5nIHRoZSBST1VORF9IQUxGX0VWRU4gcm91bmRpbmcgbW9kZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9fZW5nX3N0cmluZywiXG5cCi10b19lbmdfc3RyaW5nKGNvbnRleHQ9Tm9uZSkgLSBDb252ZXJ0IHRvIGFuIGVuZ2luZWVyaW5nLXR5cGUgc3RyaW5nLlxuXAotRW5naW5lZXJpbmcgbm90YXRpb24gaGFzIGFuIGV4cG9uZW50IHdoaWNoIGlzIGEgbXVsdGlwbGUgb2YgMywgc28gdGhlcmVcblwKLWFyZSB1cCB0byAzIGRpZ2l0cyBsZWZ0IG9mIHRoZSBkZWNpbWFsIHBsYWNlLiBGb3IgZXhhbXBsZSwgRGVjaW1hbCgnMTIzRSsxJylcblwKLWlzIGNvbnZlcnRlZCB0byBEZWNpbWFsKCcxLjIzRSszJykuXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2VuZ19zdHJpbmcsCisidG9fZW5nX3N0cmluZygkc2VsZiwgLywgY29udGV4dD1Ob25lKVxuLS1cblxuXAorQ29udmVydCB0byBhbiBlbmdpbmVlcmluZy10eXBlIHN0cmluZy4gIEVuZ2luZWVyaW5nIG5vdGF0aW9uIGhhcyBhbiBleHBvbmVudFxuXAord2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzbyB0aGVyZSBhcmUgdXAgdG8gMyBkaWdpdHMgbGVmdCBvZiB0aGUgZGVjaW1hbFxuXAorcGxhY2UuIEZvciBleGFtcGxlLCBEZWNpbWFsKCcxMjNFKzEnKSBpcyBjb252ZXJ0ZWQgdG8gRGVjaW1hbCgnMS4yM0UrMycpLlxuXAogXG5cCiBUaGUgdmFsdWUgb2YgY29udGV4dC5jYXBpdGFscyBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGV4cG9uZW50IHNpZ24gaXMgbG93ZXJcblwKIG9yIHVwcGVyIGNhc2UuIE90aGVyd2lzZSwgdGhlIGNvbnRleHQgZG9lcyBub3QgYWZmZWN0IHRoZSBvcGVyYXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsLCJcblwKLXRvX2ludGVncmFsKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBJZGVudGljYWwgdG8gdGhlXG5cCi10b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gVGhlIHRvX2ludGVncmFsKCkgbmFtZSBoYXMgYmVlbiBrZXB0XG5cCi1mb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLlxuXAorUHlEb2NfU1RSVkFSKGRvY190b19pbnRlZ3JhbCwKKyJ0b19pbnRlZ3JhbCgkc2VsZiwgLywgcm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRoZSB0b19pbnRlZ3JhbF92YWx1ZSgpIG1ldGhvZC4gIFRoZSB0b19pbnRlZ3JhbCgpIG5hbWUgaGFzIGJlZW5cblwKK2tlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3Qocm91bmRpbmc9Tm9uZSwgY29udGV4dD1Ob25lKSAtIFJvdW5kIHRvIHRoZSBuZWFyZXN0XG5cCi1pbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmIHJvdW5kaW5nIG9jY3Vycy5cblwKLVRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nIHBhcmFtZXRlciBpZiBnaXZlbiwgZWxzZVxuXAotYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGVuIHRoZSByb3VuZGluZyBtb2RlXG5cCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX2V4YWN0LAorInRvX2ludGVncmFsX2V4YWN0KCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLCBzaWduYWxpbmcgSW5leGFjdCBvciBSb3VuZGVkIGFzIGFwcHJvcHJpYXRlIGlmXG5cCityb3VuZGluZyBvY2N1cnMuICBUaGUgcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXJcblwKK2lmIGdpdmVuLCBlbHNlIGJ5IHRoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGVcblwKK3JvdW5kaW5nIG1vZGUgb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLAorInRvX2ludGVncmFsX3ZhbHVlKCRzZWxmLCAvLCByb3VuZGluZz1Ob25lLCBjb250ZXh0PU5vbmUpXG4tLVxuXG5cCitSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHdpdGhvdXQgc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZC4gIFRoZVxuXAorcm91bmRpbmcgbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnlcblwKK3RoZSBnaXZlbiBjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZVxuXAogb2YgdGhlIGN1cnJlbnQgZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLCJcblwKLXRvX2ludGVncmFsX3ZhbHVlKHJvdW5kaW5nPU5vbmUsIGNvbnRleHQ9Tm9uZSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdFxuXAotaW50ZWdlciB3aXRob3V0IHNpZ25hbGluZyBJbmV4YWN0IG9yIFJvdW5kZWQuIFRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWRcblwKLWJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXJcblwKLXBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXNcblwKLXVzZWQuXG5cCi1cbiIpOwotCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotUHlEb2NfU1RSVkFSKGRvY19jb250ZXh0LCJcblwKK1B5RG9jX1NUUlZBUihkb2NfY29udGV4dCwKKyJDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpXG4tLVxuXG5cCiBUaGUgY29udGV4dCBhZmZlY3RzIGFsbW9zdCBhbGwgb3BlcmF0aW9ucyBhbmQgY29udHJvbHMgcm91bmRpbmcsXG5cCi1PdmVyL1VuZGVyZmxvdywgcmFpc2luZyBvZiBleGNlcHRpb25zIGFuZCBtdWNoIG1vcmUuIEEgbmV3IGNvbnRleHRcblwKK092ZXIvVW5kZXJmbG93LCByYWlzaW5nIG9mIGV4Y2VwdGlvbnMgYW5kIG11Y2ggbW9yZS4gIEEgbmV3IGNvbnRleHRcblwKIGNhbiBiZSBjb25zdHJ1Y3RlZCBhcyBmb2xsb3dzOlxuXAogXG5cCiAgICAgPj4+IGMgPSBDb250ZXh0KHByZWM9MjgsIEVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsXG5cCkBAIC00NjAsMzA4ICs1MDAsMzcyIEBACiBcbiIpOwogCiAjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQotUHlEb2NfU1RSVkFSKGRvY19jdHhfYXBwbHksIlxuXAotYXBwbHkoeCkgLSBBcHBseSBzZWxmIHRvIERlY2ltYWwgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FwcGx5LAorImFwcGx5KCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQXBwbHkgc2VsZiB0byBEZWNpbWFsIHguXG5cCiBcbiIpOwogI2VuZGlmCiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX2ZsYWdzLCJcblwKLWNsZWFyX2ZsYWdzKCkgLSBSZXNldCBhbGwgZmxhZ3MgdG8gRmFsc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl9mbGFncywKKyJjbGVhcl9mbGFncygkc2VsZiwgLylcbi0tXG5cblwKK1Jlc2V0IGFsbCBmbGFncyB0byBGYWxzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX3RyYXBzLCJcblwKLWNsZWFyX3RyYXBzKCkgLSBTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY2xlYXJfdHJhcHMsCisiY2xlYXJfdHJhcHMoJHNlbGYsIC8pXG4tLVxuXG5cCitTZXQgYWxsIHRyYXBzIHRvIEZhbHNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weSwiXG5cCi1jb3B5KCkgLSBSZXR1cm4gYSBkdXBsaWNhdGUgb2YgdGhlIGNvbnRleHQgd2l0aCBhbGwgZmxhZ3MgY2xlYXJlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHksCisiY29weSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIGR1cGxpY2F0ZSBvZiB0aGUgY29udGV4dCB3aXRoIGFsbCBmbGFncyBjbGVhcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLCJcblwKLWNvcHlfZGVjaW1hbCh4KSAtIFJldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9kZWNpbWFsLAorImNvcHlfZGVjaW1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgRGVjaW1hbCB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWwsIlxuXAotY3JlYXRlX2RlY2ltYWwoeCkgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIHgsIHVzaW5nIHNlbGYgYXMgdGhlXG5cCi1jb250ZXh0LiBVbmxpa2UgdGhlIERlY2ltYWwgY29uc3RydWN0b3IsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlIGNvbnRleHRcblwKLWxpbWl0cy5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsLAorImNyZWF0ZV9kZWNpbWFsKCRzZWxmLCBudW09XCIwXCIsIC8pXG4tLVxuXG5cCitDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIG51bSwgdXNpbmcgc2VsZiBhcyB0aGUgY29udGV4dC4gVW5saWtlIHRoZVxuXAorRGVjaW1hbCBjb25zdHJ1Y3RvciwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGUgY29udGV4dCBsaW1pdHMuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0LCJcblwKLWNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikgLSBDcmVhdGUgYSBuZXcgRGVjaW1hbCBpbnN0YW5jZSBmcm9tIGZsb2F0IGYuXG5cCi1Vbmxpa2UgdGhlIERlY2ltYWwuZnJvbV9mbG9hdCgpIGNsYXNzIG1ldGhvZCwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGVcblwKLWNvbnRleHQgbGltaXRzLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKKyJjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCRzZWxmLCBmLCAvKVxuLS1cblxuXAorQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBmbG9hdCBmLiAgVW5saWtlIHRoZSBEZWNpbWFsLmZyb21fZmxvYXQoKVxuXAorY2xhc3MgbWV0aG9kLCB0aGlzIGZ1bmN0aW9uIG9ic2VydmVzIHRoZSBjb250ZXh0IGxpbWl0cy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0aW55LCJcblwKLUV0aW55KCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWluIC0gcHJlYyArIDEsIHdoaWNoIGlzIHRoZSBtaW5pbXVtXG5cCi1leHBvbmVudCB2YWx1ZSBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50XG5cCi1pcyBzZXQgdG8gRXRpbnkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdGlueSwKKyJFdGlueSgkc2VsZiwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtaW4gLSBwcmVjICsgMSwgd2hpY2ggaXMgdGhlIG1pbmltdW0gZXhwb25lbnQgdmFsdWVcblwKK2ZvciBzdWJub3JtYWwgcmVzdWx0cy4gIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50IGlzIHNldCB0byBFdGlueS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X0V0b3AsIlxuXAotRXRvcCgpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiBUaGlzIGlzIHRoZSBtYXhpbXVtIGV4cG9uZW50XG5cCi1pZiB0aGUgX2NsYW1wIGZpZWxkIG9mIHRoZSBjb250ZXh0IGlzIHNldCB0byAxIChJRUVFIGNsYW1wIG1vZGUpLiBFdG9wKCkgbXVzdFxuXAotbm90IGJlIG5lZ2F0aXZlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfRXRvcCwKKyJFdG9wKCRzZWxmLCAvKVxuLS1cblxuXAorUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gRW1heCAtIHByZWMgKyAxLiAgVGhpcyBpcyB0aGUgbWF4aW11bSBleHBvbmVudFxuXAoraWYgdGhlIF9jbGFtcCBmaWVsZCBvZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gMSAoSUVFRSBjbGFtcCBtb2RlKS4gIEV0b3AoKVxuXAorbXVzdCBub3QgYmUgbmVnYXRpdmUuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9hYnMsIlxuXAotYWJzKHgpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWJzLAorImFicygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2FkZCwiXG5cCi1hZGQoeCwgeSkgLSBSZXR1cm4gdGhlIHN1bSBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfYWRkLAorImFkZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgc3VtIG9mIHggYW5kIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsIlxuXAotY2Fub25pY2FsKHgpIC0gUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jYW5vbmljYWwsCisiY2Fub25pY2FsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLCJcblwKLWNvbXBhcmUoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlLAorImNvbXBhcmUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3NpZ25hbCwiXG5cCi1jb21wYXJlX3NpZ25hbCh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS4gQWxsIE5hTnMgc2lnbmFsLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfY29tcGFyZV9zaWduYWwsCisiY29tcGFyZV9zaWduYWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgbnVtZXJpY2FsbHkuICBBbGwgTmFOcyBzaWduYWwuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLCJcblwKLWNvbXBhcmVfdG90YWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLAorImNvbXBhcmVfdG90YWwoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywiXG5cCi1jb21wYXJlX3RvdGFsX21hZyh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbixcblwKLWlnbm9yaW5nIHNpZ24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywKKyJjb21wYXJlX3RvdGFsX21hZygkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbiwgaWdub3Jpbmcgc2lnbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfYWJzLCJcblwKLWNvcHlfYWJzKHgpIC0gUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2FicywKKyJjb3B5X2Ficygkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIHNldCB0byAwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9uZWdhdGUsIlxuXAotY29weV9uZWdhdGUoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfbmVnYXRlLAorImNvcHlfbmVnYXRlKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4IHdpdGggdGhlIHNpZ24gaW52ZXJ0ZWQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X3NpZ24sIlxuXAotY29weV9zaWduKHgsIHkpIC0gQ29weSB0aGUgc2lnbiBmcm9tIHkgdG8geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfc2lnbiwKKyJjb3B5X3NpZ24oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitDb3B5IHRoZSBzaWduIGZyb20geSB0byB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlLCJcblwKLWRpdmlkZSh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZSwKKyJkaXZpZGUoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCBkaXZpZGVkIGJ5IHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9kaXZpZGVfaW50LCJcblwKLWRpdmlkZV9pbnQoeCwgeSkgLSBSZXR1cm4geCBkaXZpZGVkIGJ5IHksIHRydW5jYXRlZCB0byBhbiBpbnRlZ2VyLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlX2ludCwKKyJkaXZpZGVfaW50KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHggZGl2aWRlZCBieSB5LCB0cnVuY2F0ZWQgdG8gYW4gaW50ZWdlci5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2Rpdm1vZCwiXG5cCi1kaXZtb2QoeCwgeSkgLSBSZXR1cm4gcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24geCAvIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZtb2QsCisiZGl2bW9kKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIHggLyB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfZXhwLCJcblwKLWV4cCh4KSAtIFJldHVybiBlICoqIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9leHAsCisiZXhwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGUgKiogeC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwiXG5cCi1mbWEoeCwgeSwgeikgLSBSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2ZtYSwKKyJmbWEoJHNlbGYsIHgsIHksIHosIC8pXG4tLVxuXG5cCitSZXR1cm4geCBtdWx0aXBsaWVkIGJ5IHksIHBsdXMgei5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Nhbm9uaWNhbCwiXG5cCi1pc19jYW5vbmljYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGNhbm9uaWNhbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfY2Fub25pY2FsLAorImlzX2Nhbm9uaWNhbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgY2Fub25pY2FsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc19maW5pdGUsIlxuXAotaXNfZmluaXRlKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBmaW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Zpbml0ZSwKKyJpc19maW5pdGUoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB4IGlzIGZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfaW5maW5pdGUsIlxuXAotaXNfaW5maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGluZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19pbmZpbml0ZSwKKyJpc19pbmZpbml0ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgaW5maW5pdGUsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX25hbiwiXG5cCi1pc19uYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcU5hTiBvciBzTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19uYW4sCisiaXNfbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHFOYU4gb3Igc05hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbm9ybWFsLCJcblwKLWlzX25vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBub3JtYWwgbnVtYmVyLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19ub3JtYWwsCisiaXNfbm9ybWFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIG5vcm1hbCBudW1iZXIsIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sIlxuXAotaXNfcW5hbih4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3FuYW4sCisiaXNfcW5hbigkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgYSBxdWlldCBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3NpZ25lZCwiXG5cCi1pc19zaWduZWQoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIG5lZ2F0aXZlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zaWduZWQsCisiaXNfc2lnbmVkKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBuZWdhdGl2ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwiXG5cCi1pc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwKKyJpc19zbmFuKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHNpZ25hbGluZyBOYU4sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2lzX3N1Ym5vcm1hbCwiXG5cCi1pc19zdWJub3JtYWwoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIHN1Ym5vcm1hbCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc3Vibm9ybWFsLAorImlzX3N1Ym5vcm1hbCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9pc196ZXJvLCJcblwKLWlzX3plcm8oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgemVybywgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfemVybywKKyJpc196ZXJvKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIFRydWUgaWYgeCBpcyBhIHplcm8sIEZhbHNlIG90aGVyd2lzZS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X2xuLCJcblwKLWxuKHgpIC0gUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG4sCisibG4oJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9sb2cxMCwiXG5cCi1sb2cxMCh4KSAtIFJldHVybiB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgeC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZzEwLAorImxvZzEwKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBiYXNlIDEwIGxvZ2FyaXRobSBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwiXG5cCi1sb2diKHgpIC0gUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9nYiwKKyJsb2diKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBleHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBvcGVyYW5kJ3MgTVNELlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsIlxuXAotbG9naWNhbF9hbmQoeCwgeSkgLSBEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9hbmQsCisibG9naWNhbF9hbmQoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIGFuZCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsIlxuXAotbG9naWNhbF9pbnZlcnQoeCkgLSBJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9pbnZlcnQsCisibG9naWNhbF9pbnZlcnQoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitJbnZlcnQgYWxsIGRpZ2l0cyBvZiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwiXG5cCi1sb2dpY2FsX29yKHgsIHkpIC0gRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF9vciwKKyJsb2dpY2FsX29yKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorRGlnaXQtd2lzZSBvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsIlxuXAotbG9naWNhbF94b3IoeCwgeSkgLSBEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbG9naWNhbF94b3IsCisibG9naWNhbF94b3IoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitEaWdpdC13aXNlIHhvciBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LCJcblwKLW1heCh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4LAorIm1heCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtYXhpbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywiXG5cCi1tYXhfbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWF4X21hZywKKyJtYXhfbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLCJcblwKLW1pbih4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluLAorIm1pbigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK0NvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJuIHRoZSBtaW5pbXVtLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywiXG5cCi1taW5fbWFnKHgsIHkpIC0gQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbWluX21hZywKKyJtaW5fbWFnKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorQ29tcGFyZSB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbWludXMsIlxuXAotbWludXMoeCkgLSBNaW51cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IG1pbnVzIG9wZXJhdG9yIGluIFB5dGhvbixcblwKLWJ1dCBhcHBsaWVzIHRoZSBjb250ZXh0IHRvIHRoZSByZXN1bHQuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9taW51cywKKyJtaW51cygkc2VsZiwgeCwgLylcbi0tXG5cblwKK01pbnVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggbWludXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X211bHRpcGx5LCJcblwKLW11bHRpcGx5KHgsIHkpIC0gUmV0dXJuIHRoZSBwcm9kdWN0IG9mIHggYW5kIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9tdWx0aXBseSwKKyJtdWx0aXBseSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcHJvZHVjdCBvZiB4IGFuZCB5LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywiXG5cCi1uZXh0X21pbnVzKHgpIC0gUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9taW51cywKKyJuZXh0X21pbnVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiB4LlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfbmV4dF9wbHVzLCJcblwKLW5leHRfcGx1cyh4KSAtIFJldHVybiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgbGFyZ2VyIHRoYW4geC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfcGx1cywKKyJuZXh0X3BsdXMoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSZXR1cm4gdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwiXG5cCi1uZXh0X3Rvd2FyZCh4KSAtIFJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwKKyJuZXh0X3Rvd2FyZCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsIlxuXAotbm9ybWFsaXplKHgpIC0gUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsCisibm9ybWFsaXplKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsIlxuXAotbnVtYmVyX2NsYXNzKHgpIC0gUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsCisibnVtYmVyX2NsYXNzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9wbHVzLCJcblwKLXBsdXMoeCkgLSBQbHVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggcGx1cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCi1idXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcGx1cywKKyJwbHVzKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorUGx1cyBjb3JyZXNwb25kcyB0byB0aGUgdW5hcnkgcHJlZml4IHBsdXMgb3BlcmF0b3IgaW4gUHl0aG9uLCBidXQgYXBwbGllc1xuXAordGhlIGNvbnRleHQgdG8gdGhlIHJlc3VsdC5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLCJcblwKLXBvd2VyKHgsIHkpIC0gQ29tcHV0ZSB4Kip5LiBJZiB4IGlzIG5lZ2F0aXZlLCB0aGVuIHkgbXVzdCBiZSBpbnRlZ3JhbC5cblwKLVRoZSByZXN1bHQgd2lsbCBiZSBpbmV4YWN0IHVubGVzcyB5IGlzIGludGVncmFsIGFuZCB0aGUgcmVzdWx0IGlzIGZpbml0ZVxuXAotYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuIEluIHRoZSBQeXRob24gdmVyc2lvblxuXAotdGhlIHJlc3VsdCBpcyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGluIHRoZSBDIHZlcnNpb24gdGhlIHJlc3VsdCBpc1xuXAotYWxtb3N0IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3Bvd2VyLAorInBvd2VyKCRzZWxmLCAvLCBhLCBiLCBtb2R1bG89Tm9uZSlcbi0tXG5cblwKK0NvbXB1dGUgYSoqYi4gSWYgJ2EnIGlzIG5lZ2F0aXZlLCB0aGVuICdiJyBtdXN0IGJlIGludGVncmFsLiBUaGUgcmVzdWx0XG5cCit3aWxsIGJlIGluZXhhY3QgdW5sZXNzICdhJyBpcyBpbnRlZ3JhbCBhbmQgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhblxuXAorYmUgZXhwcmVzc2VkIGV4YWN0bHkgaW4gJ3ByZWNpc2lvbicgZGlnaXRzLiAgSW4gdGhlIFB5dGhvbiB2ZXJzaW9uIHRoZVxuXAorcmVzdWx0IGlzIGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgaW4gdGhlIEMgdmVyc2lvbiB0aGUgcmVzdWx0IGlzIGFsbW9zdFxuXAorYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAogXG5cCi1wb3dlcih4LCB5LCBtKSAtIENvbXB1dGUgKHgqKnkpICUgbS4gVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgaG9sZDpcblwKK0lmIG1vZHVsbyBpcyBnaXZlbiwgY29tcHV0ZSAoYSoqYikgJSBtb2R1bG8uIFRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zXG5cCitob2xkOlxuXAogXG5cCiAgICAgKiBhbGwgdGhyZWUgYXJndW1lbnRzIG11c3QgYmUgaW50ZWdyYWxcblwKLSAgICAqIHkgbXVzdCBiZSBub25uZWdhdGl2ZVxuXAotICAgICogYXQgbGVhc3Qgb25lIG9mIHggb3IgeSBtdXN0IGJlIG5vbnplcm9cblwKLSAgICAqIG0gbXVzdCBiZSBub256ZXJvIGFuZCBsZXNzIHRoYW4gMTAqKnByZWMgaW4gYWJzb2x1dGUgdmFsdWVcblwKKyAgICAqICdiJyBtdXN0IGJlIG5vbm5lZ2F0aXZlXG5cCisgICAgKiBhdCBsZWFzdCBvbmUgb2YgJ2EnIG9yICdiJyBtdXN0IGJlIG5vbnplcm9cblwKKyAgICAqIG1vZHVsbyBtdXN0IGJlIG5vbnplcm8gYW5kIGxlc3MgdGhhbiAxMCoqcHJlYyBpbiBhYnNvbHV0ZSB2YWx1ZVxuXAogXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwiXG5cCi1xdWFudGl6ZSh4LCB5KSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9xdWFudGl6ZSwKKyJxdWFudGl6ZSgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIHZhbHVlIGVxdWFsIHRvIHggKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHkuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yYWRpeCwiXG5cCi1yYWRpeCgpIC0gUmV0dXJuIDEwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmFkaXgsCisicmFkaXgoJHNlbGYsIC8pXG4tLVxuXG5cCitSZXR1cm4gMTAuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXIsIlxuXAotcmVtYWluZGVyKHgsIHkpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLiBUaGUgc2lnbiBvZlxuXAotdGhlIHJlc3VsdCwgaWYgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyLAorInJlbWFpbmRlcigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgcmVtYWluZGVyIGZyb20gaW50ZWdlciBkaXZpc2lvbi4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsXG5cCitpZiBub24temVybywgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3JpZ2luYWwgZGl2aWRlbmQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXJfbmVhciwiXG5cCi1yZW1haW5kZXJfbmVhcih4LCB5KSAtIFJldHVybiB4IC0geSAqIG4sIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGVcblwKLWV4YWN0IHZhbHVlIG9mIHggLyB5IChpZiB0aGUgcmVzdWx0IGlzIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZSBzaWduIG9mIHgpLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyX25lYXIsCisicmVtYWluZGVyX25lYXIoJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4geCAtIHkgKiBuLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlIGV4YWN0IHZhbHVlIG9mIHggLyB5XG5cCisoaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiB4KS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3JvdGF0ZSwiXG5cCi1yb3RhdGUoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHJvdGF0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9yb3RhdGUsCisicm90YXRlKCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIGEgY29weSBvZiB4LCByb3RhdGVkIGJ5IHkgcGxhY2VzLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2FtZV9xdWFudHVtLCJcblwKLXNhbWVfcXVhbnR1bSh4LCB5KSAtIFJldHVybiBUcnVlIGlmIHRoZSB0d28gb3BlcmFuZHMgaGF2ZSB0aGUgc2FtZSBleHBvbmVudC5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NhbWVfcXVhbnR1bSwKKyJzYW1lX3F1YW50dW0oJHNlbGYsIHgsIHksIC8pXG4tLVxuXG5cCitSZXR1cm4gVHJ1ZSBpZiB0aGUgdHdvIG9wZXJhbmRzIGhhdmUgdGhlIHNhbWUgZXhwb25lbnQuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF9zY2FsZWIsIlxuXAotc2NhbGViKHgsIHkpIC0gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIGFmdGVyIGFkZGluZyB0aGUgc2Vjb25kIHZhbHVlXG5cCi10byBpdHMgZXhwLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfc2NhbGViLAorInNjYWxlYigkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfc2hpZnQsIlxuXAotc2hpZnQoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHNoaWZ0ZWQgYnkgeSBwbGFjZXMuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF9zaGlmdCwKKyJzaGlmdCgkc2VsZiwgeCwgeSwgLylcbi0tXG5cblwKK1JldHVybiBhIGNvcHkgb2YgeCwgc2hpZnRlZCBieSB5IHBsYWNlcy5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsIlxuXAotc3FydCh4KSAtIFNxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NxcnQsCisic3FydCgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1NxdWFyZSByb290IG9mIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBjb250ZXh0IHByZWNpc2lvbi5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LCJcblwKLXN1YnRyYWN0KHgsIHkpIC0gUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3N1YnRyYWN0LAorInN1YnRyYWN0KCRzZWxmLCB4LCB5LCAvKVxuLS1cblxuXAorUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4geCBhbmQgeS5cblwKIFxuIik7CiAKLVB5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2VuZ19zdHJpbmcsIlxuXAotdG9fZW5nX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcsIHVzaW5nIGVuZ2luZWVyaW5nIG5vdGF0aW9uLlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fZW5nX3N0cmluZywKKyJ0b19lbmdfc3RyaW5nKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbCwiXG5cCi10b19pbnRlZ3JhbCh4KSAtIElkZW50aWNhbCB0byB0b19pbnRlZ3JhbF92YWx1ZSh4KS5cblwKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsLAorInRvX2ludGVncmFsKCRzZWxmLCB4LCAvKVxuLS1cblxuXAorSWRlbnRpY2FsIHRvIHRvX2ludGVncmFsX3ZhbHVlKHgpLlxuXAogXG4iKTsKIAotUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsIlxuXAotdG9faW50ZWdyYWxfZXhhY3QoeCkgLSBSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpc1xuXAotcm91bmRlZCBvciBpbmV4YWN0LlxuXAorUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9faW50ZWdyYWxfZXhhY3QsCisidG9faW50ZWdyYWxfZXhhY3QoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitSb3VuZCB0byBhbiBpbnRlZ2VyLiBTaWduYWwgaWYgdGhlIHJlc3VsdCBpcyByb3VuZGVkIG9yIGluZXhhY3QuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwiXG5cCi10b19pbnRlZ3JhbF92YWx1ZSh4KSAtIFJvdW5kIHRvIGFuIGludGVnZXIuXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbF92YWx1ZSwKKyJ0b19pbnRlZ3JhbF92YWx1ZSgkc2VsZiwgeCwgLylcbi0tXG5cblwKK1JvdW5kIHRvIGFuIGludGVnZXIuXG5cCiBcbiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLCJcblwKLXRvX3NjaV9zdHJpbmcoeCkgLSBDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19zY2lfc3RyaW5nLAorInRvX3NjaV9zdHJpbmcoJHNlbGYsIHgsIC8pXG4tLVxuXG5cCitDb252ZXJ0IGEgbnVtYmVyIHRvIGEgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24uXG5cCiBcbiIpOwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCmluZGV4IDIxZDIyMjIuLjU5M2Y5ZjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwpAQCAtNDMsNiArNDMsNyBAQAogI2lmZGVmIFBQUk8KICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCiAgICAgI2luY2x1ZGUgPGZsb2F0Lmg+CisgICAgI3ByYWdtYSBmbG9hdF9jb250cm9sKHByZWNpc2UsIG9uKQogICAgICNwcmFnbWEgZmVudl9hY2Nlc3Mob24pCiAgICNlbGlmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKQogICAgIC8qIEM5OSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKaW5kZXggMjcxMzdiMi4uYWI3ZDViZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC0zNiw2ICszNiw3IEBACiBmcm9tIHJhbmRkZWMgaW1wb3J0IHJhbmRmbG9hdCwgYWxsX3VuYXJ5LCBhbGxfYmluYXJ5LCBhbGxfdGVybmFyeQogZnJvbSByYW5kZGVjIGltcG9ydCB1bmFyeV9vcHRhcmcsIGJpbmFyeV9vcHRhcmcsIHRlcm5hcnlfb3B0YXJnCiBmcm9tIGZvcm1hdGhlbHBlciBpbXBvcnQgcmFuZF9mb3JtYXQsIHJhbmRfbG9jYWxlCitmcm9tIF9weWRlY2ltYWwgaW1wb3J0IF9kZWNfZnJvbV90cmlwbGUKIAogQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCiBQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQpAQCAtMzcwLDcgKzM3MSw3IEBACiAgICAgICAgIHJldHVybiBhYnMoYSAtIGIpCiAKICAgICBkZWYgc3RhbmRhcmRfdWxwKHNlbGYsIGRlYywgcHJlYyk6Ci0gICAgICAgIHJldHVybiBQLl9kZWNfZnJvbV90cmlwbGUoMCwgJzEnLCBkZWMuX2V4cCtsZW4oZGVjLl9pbnQpLXByZWMpCisgICAgICAgIHJldHVybiBfZGVjX2Zyb21fdHJpcGxlKDAsICcxJywgZGVjLl9leHArbGVuKGRlYy5faW50KS1wcmVjKQogCiAgICAgZGVmIHJvdW5kaW5nX2RpcmVjdGlvbihzZWxmLCB4LCBtb2RlKToKICAgICAgICAgIiIiRGV0ZXJtaW5lIHRoZSBlZmZlY3RpdmUgZGlyZWN0aW9uIG9mIHRoZSByb3VuZGluZyB3aGVuCkBAIC00MDEsMTAgKzQwMiwxMCBAQAogICAgICAgICAjIENvbnZlcnQgaW5maW5pdGllcyB0byB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciArIDEuCiAgICAgICAgIHggPSBleGFjdAogICAgICAgICBpZiBleGFjdC5pc19pbmZpbml0ZSgpOgotICAgICAgICAgICAgeCA9IFAuX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgICAgICB4ID0gX2RlY19mcm9tX3RyaXBsZShleGFjdC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCiAgICAgICAgIHkgPSByb3VuZGVkCiAgICAgICAgIGlmIHJvdW5kZWQuaXNfaW5maW5pdGUoKToKLSAgICAgICAgICAgIHkgPSBQLl9kZWNfZnJvbV90cmlwbGUocm91bmRlZC5fc2lnbiwgJzEwJywgY29udGV4dC5wLkVtYXgpCisgICAgICAgICAgICB5ID0gX2RlY19mcm9tX3RyaXBsZShyb3VuZGVkLl9zaWduLCAnMTAnLCBjb250ZXh0LnAuRW1heCkKIAogICAgICAgICAjIGVyciA9IChyb3VuZGVkIC0gZXhhY3QpIC8gdWxwKHJvdW5kZWQpCiAgICAgICAgIHNlbGYubWF4Y3R4LnByZWMgPSBwICogMgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKaW5kZXggODI2MzQyYS4uOTExYjVhYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYworKysgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCkBAIC0xMSw2ICsxMSw4IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIApAQCAtMTg1LDggKzE4Nyw4IEBACiAgICAgUHlPYmplY3QqIGF0dHJpYjsKIAogICAgIC8qIGNoaWxkIGVsZW1lbnRzICovCi0gICAgaW50IGxlbmd0aDsgLyogYWN0dWFsIG51bWJlciBvZiBpdGVtcyAqLwotICAgIGludCBhbGxvY2F0ZWQ7IC8qIGFsbG9jYXRlZCBpdGVtcyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAvKiBhY3R1YWwgbnVtYmVyIG9mIGl0ZW1zICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7IC8qIGFsbG9jYXRlZCBpdGVtcyAqLwogCiAgICAgLyogdGhpcyBlaXRoZXIgcG9pbnRzIHRvIF9jaGlsZHJlbiBvciB0byBhIG1hbGxvY2VkIGJ1ZmZlciAqLwogICAgIFB5T2JqZWN0KiAqY2hpbGRyZW47CkBAIC0yNTEsNyArMjUzLDcgQEAKIGRlYWxsb2NfZXh0cmEoRWxlbWVudE9iamVjdCogc2VsZikKIHsKICAgICBFbGVtZW50T2JqZWN0RXh0cmEgKm15ZXh0cmE7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY4LDYgKzM3MCwxNCBAQAogICAgIHJldHVybiBhdHRyaWI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfZWxlbWVudHRyZWUKK2NsYXNzIF9lbGVtZW50dHJlZS5FbGVtZW50ICJFbGVtZW50T2JqZWN0ICoiICImRWxlbWVudF9UeXBlIgorY2xhc3MgX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyICJUcmVlQnVpbGRlck9iamVjdCAqIiAiJlRyZWVCdWlsZGVyX1R5cGUiCitjbGFzcyBfZWxlbWVudHRyZWUuWE1MUGFyc2VyICJYTUxQYXJzZXJPYmplY3QgKiIgIiZYTUxQYXJzZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTE1OWFhNTBhNTQwNjFjMjJdKi8KKwogc3RhdGljIGludAogZWxlbWVudF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC00MjksOSArNDM5LDkgQEAKIH0KIAogTE9DQUwoaW50KQotZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgaW50IGV4dHJhKQorZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgUHlfc3NpemVfdCBleHRyYSkKIHsKLSAgICBpbnQgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgUHlPYmplY3QqICpjaGlsZHJlbjsKIAogICAgIC8qIG1ha2Ugc3VyZSBzZWxmLT5jaGlsZHJlbiBjYW4gaG9sZCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGV4dHJhCkBAIC00NDIsNyArNDUyLDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOworICAgIHNpemUgPSBzZWxmLT5leHRyYS0+bGVuZ3RoICsgZXh0cmE7ICAvKiBuZXZlciBvdmVyZmxvd3MgKi8KIAogICAgIGlmIChzaXplID4gc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZCkgewogICAgICAgICAvKiB1c2UgUHl0aG9uIDIuNCdzIGxpc3QgZ3Jvd3RoIHN0cmF0ZWd5ICovCkBAIC00NTMsNiArNDYzLDggQEAKICAgICAgICAgICogYmUgc2FmZS4KICAgICAgICAgICovCiAgICAgICAgIHNpemUgPSBzaXplID8gc2l6ZSA6IDE7CisgICAgICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TU0laRV9UX01BWC9zaXplb2YoUHlPYmplY3QqKSkKKyAgICAgICAgICAgIGdvdG8gbm9tZW1vcnk7CiAgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW4gIT0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbikgewogICAgICAgICAgICAgLyogQ292ZXJpdHkgQ0lEICMxODIgc2l6ZV9lcnJvcjogQWxsb2NhdGluZyAxIGJ5dGVzIHRvIHBvaW50ZXIKICAgICAgICAgICAgICAqICJjaGlsZHJlbiIsIHdoaWNoIG5lZWRzIGF0IGxlYXN0IDQgYnl0ZXMuIEFsdGhvdWdoIGl0J3MgYQpAQCAtNjEzLDcgKzYyNSw3IEBACiAgICAgUHlfVklTSVQoSk9JTl9PQkooc2VsZi0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIGludCBpOworICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X1ZJU0lUKHNlbGYtPmV4dHJhLT5hdHRyaWIpOwogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyArK2kpCkBAIC02NTQsMjUgKzY2NiwzMyBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2FwcGVuZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBQeU9iamVjdCogZWxlbWVudDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5hcHBlbmQKIAotICAgIGlmIChlbGVtZW50X2FkZF9zdWJlbGVtZW50KHNlbGYsIGVsZW1lbnQpIDwgMCkKKyAgICBzdWJlbGVtZW50OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZFbGVtZW50X1R5cGUnKQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRhODg0YjdjZjIyOTVmNCBpbnB1dD0zZWQ2NDhiZWI1YmZhMjJhXSovCit7CisgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoc2VsZiwgc3ViZWxlbWVudCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NsZWFybWV0aG9kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmNsZWFyIikpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuY2xlYXIKIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiY2Q3YTUxZjk0Y2ZmZjYgaW5wdXQ9M2M3MTlmZjk0YmY0NWRkNl0qLworewogICAgIGRlYWxsb2NfZXh0cmEoc2VsZik7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC02ODYsMTQgKzcwNiwxNyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NvcHkoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaW50IGk7Ci0gICAgRWxlbWVudE9iamVjdCogZWxlbWVudDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Ll9fY29weV9fCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpfX2NvcHlfXyIpKQotICAgICAgICByZXR1cm4gTlVMTDsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYzcwMWViZmY3MjQ3NzgxIGlucHV0PWFkODdhYWViZTk1Njc1YmZdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgRWxlbWVudE9iamVjdCogZWxlbWVudDsKIAogICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGNyZWF0ZV9uZXdfZWxlbWVudCgKICAgICAgICAgc2VsZi0+dGFnLCAoc2VsZi0+ZXh0cmEpID8gc2VsZi0+ZXh0cmEtPmF0dHJpYiA6IFB5X05vbmUpOwpAQCAtNzI1LDEwICs3NDgsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KikgZWxlbWVudDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9kZWVwY29weShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Ll9fZGVlcGNvcHlfXworCisgICAgbWVtbzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDFmMTk4NTFkMTdiZjIzOSBpbnB1dD1kZjI0YzJiNjAyNDMwYjc3XSovCiB7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogICAgIEVsZW1lbnRPYmplY3QqIGVsZW1lbnQ7CiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogYXR0cmliOwpAQCAtNzM2LDEwICs3NjgsNiBAQAogICAgIFB5T2JqZWN0KiB0YWlsOwogICAgIFB5T2JqZWN0KiBpZDsKIAotICAgIFB5T2JqZWN0KiBtZW1vOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCAmbWVtbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgdGFnID0gZGVlcGNvcHkoc2VsZi0+dGFnLCBtZW1vKTsKICAgICBpZiAoIXRhZykKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04MTAsMTcgKzgzOCwyMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X3NpemVvZihQeU9iamVjdCogbXlzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Ll9fc2l6ZW9mX18gLT4gUHlfc3NpemVfdAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90CitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjczODY3NzIxMDA4MDAwIGlucHV0PTcwZjRiMzIzZDU1YTE3YzFdKi8KIHsKLSAgICBFbGVtZW50T2JqZWN0ICpzZWxmID0gKEVsZW1lbnRPYmplY3QqKW15c2VsZjsKICAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IHNpemVvZihFbGVtZW50T2JqZWN0KTsKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgcmVzdWx0ICs9IHNpemVvZihFbGVtZW50T2JqZWN0RXh0cmEpOwogICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pCiAgICAgICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKFB5T2JqZWN0KikgKiBzZWxmLT5leHRyYS0+YWxsb2NhdGVkOwogICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogZGljdCBrZXlzIGZvciBnZXRzdGF0ZS9zZXRzdGF0ZS4gKi8KQEAgLTgzNiwxMCArODY5LDE2IEBACiAgKiBhbnkgdW5uZWNlc3Nhcnkgc3RydWN0dXJlcyB0aGVyZTsgYW5kIChiKSBpdCBidXlzIGNvbXBhdGliaWxpdHkgd2l0aCAzLjIKICAqIHBpY2tsZXMuICBTZWUgaXNzdWUgIzE2MDc2LgogICovCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX2dldHN0YXRlX18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZWxlbWVudF9nZXRzdGF0ZShFbGVtZW50T2JqZWN0ICpzZWxmKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNzI3OWFlZWI2YmI1YjA0IGlucHV0PWYwZDE2ZDdlYzJmN2FkYzFdKi8KIHsKLSAgICBpbnQgaSwgbm9hdHRyaWI7CisgICAgUHlfc3NpemVfdCBpLCBub2F0dHJpYjsKICAgICBQeU9iamVjdCAqaW5zdGFuY2VkaWN0ID0gTlVMTCwgKmNoaWxkcmVuOwogCiAgICAgLyogQnVpbGQgYSBsaXN0IG9mIGNoaWxkcmVuLiAqLwpAQCAtOTUyLDYgKzk5MSw3IEBACiAvKiBfX3NldHN0YXRlX18gZm9yIEVsZW1lbnQgaW5zdGFuY2UgZnJvbSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgogICogJ3N0YXRlJyBzaG91bGQgYmUgdGhlIGluc3RhbmNlIGRpY3QuCiAgKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKIGVsZW1lbnRfc2V0c3RhdGVfZnJvbV9QeXRob24oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQogewpAQCAtOTc3LDggKzEwMTcsMTcgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5fX3NldHN0YXRlX18KKworICAgIHN0YXRlOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWVsZW1lbnRfc2V0c3RhdGUoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdGF0ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYTI4YmYzNDkxYjFmNzVlIGlucHV0PWFhZjgwYWJlYTdjMWUzYjldKi8KIHsKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KHN0YXRlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMTAzMiwyMSArMTA4MSwyNiBAQAogICAgIHJldHVybiAxOyAvKiB1bmtub3duIHR5cGU7IG1pZ2h0IGJlIHBhdGggZXhwcmVzc2lvbiAqLwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2V4dGVuZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmV4dGVuZAorCisgICAgZWxlbWVudHM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZXh0ZW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICplbGVtZW50cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNmU2N2ZjMmZmNTI5MTkxIGlucHV0PTgwN2JjNGYzMWM2OWY3YzBdKi8KIHsKICAgICBQeU9iamVjdCogc2VxOwogICAgIFB5X3NzaXplX3QgaTsKIAotICAgIFB5T2JqZWN0KiBzZXFfaW47Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmV4dGVuZCIsICZzZXFfaW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlcSA9IFB5U2VxdWVuY2VfRmFzdChzZXFfaW4sICIiKTsKKyAgICBzZXEgPSBQeVNlcXVlbmNlX0Zhc3QoZWxlbWVudHMsICIiKTsKICAgICBpZiAoIXNlcSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoCiAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiZXhwZWN0ZWQgc2VxdWVuY2UsIG5vdCBcIiUuMjAwc1wiIiwgUHlfVFlQRShzZXFfaW4pLT50cF9uYW1lCisgICAgICAgICAgICAiZXhwZWN0ZWQgc2VxdWVuY2UsIG5vdCBcIiUuMjAwc1wiIiwgUHlfVFlQRShlbGVtZW50cyktPnRwX25hbWUKICAgICAgICAgICAgICk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNzcsMjMgKzExMzEsMjYgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmZpbmQKKworICAgIHBhdGg6IG9iamVjdAorICAgIG5hbWVzcGFjZXM6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQxYjQzZjBmMGJlY2FmYWUgaW5wdXQ9MzU5YjY5ODVmNjQ4OWQyZV0qLwogewotICAgIGludCBpOwotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisgICAgUHlfc3NpemVfdCBpOwogICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CisgICAgaWYgKGNoZWNrcGF0aChwYXRoKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZCk7CiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAotICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgICAgICAgICAgc3QtPmVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZCwgIk9PTyIsIHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAgICAgfQogCkBAIC0xMTA2LDcgKzExNjMsNyBAQAogICAgICAgICBpZiAoIUVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCgoRWxlbWVudE9iamVjdCopaXRlbSktPnRhZywgdGFnLCBQeV9FUSk7CisgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCgoRWxlbWVudE9iamVjdCopaXRlbSktPnRhZywgcGF0aCwgUHlfRVEpOwogICAgICAgICBpZiAocmMgPiAwKQogICAgICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKQEAgLTExMTcsMjQgKzExNzQsMjggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5maW5kdGV4dAorCisgICAgcGF0aDogb2JqZWN0CisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgIG5hbWVzcGFjZXM6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzYjNiYTQ1MzVkMzA4ZDIgaW5wdXQ9YjUzYTg1YWE1YWEyYTkxNl0qLwogewotICAgIGludCBpOwotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgX1B5X0lERU5USUZJRVIoZmluZHRleHQpOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCAwfTsKICAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POmZpbmR0ZXh0Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKKyAgICBpZiAoY2hlY2twYXRoKHBhdGgpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCi0gICAgICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kdGV4dCwgIk9PT08iLCBzZWxmLCB0YWcsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKKyAgICAgICAgICAgIHN0LT5lbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmR0ZXh0LCAiT09PTyIsIHNlbGYsIHBhdGgsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CkBAIC0xMTQ4LDcgKzEyMDksNyBAQAogICAgICAgICBpZiAoIUVsZW1lbnRfQ2hlY2tFeGFjdChpdGVtKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0tPnRhZywgdGFnLCBQeV9FUSk7CisgICAgICAgIHJjID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0tPnRhZywgcGF0aCwgUHlfRVEpOwogICAgICAgICBpZiAocmMgPiAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoaXRlbSk7CiAgICAgICAgICAgICBpZiAodGV4dCA9PSBQeV9Ob25lKSB7CkBAIC0xMTY4LDE5ICsxMjI5LDIzIEBACiAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgaW50IGk7Ci0gICAgUHlPYmplY3QqIG91dDsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OwotICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuZmluZGFsbAogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kYWxsIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcGF0aDogb2JqZWN0CisgICAgbmFtZXNwYWNlczogb2JqZWN0ID0gTm9uZQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWEwYmQ5ZjU1NDFiNzExZCBpbnB1dD00ZDllNjUwNWE2Mzg1NTBjXSovCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0KiBvdXQ7CisgICAgUHlPYmplY3QqIHRhZyA9IHBhdGg7CisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7CiAKICAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKGZpbmRhbGwpOwpAQCAtMTIxNCwzNiArMTI3OSw0MSBAQAogICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIF9QeV9JREVOVElGSUVSKGl0ZXJmaW5kKTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OwotICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQuaXRlcmZpbmQKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86aXRlcmZpbmQiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhZywgJm5hbWVzcGFjZXMpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBwYXRoOiBvYmplY3QKKyAgICBuYW1lc3BhY2VzOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjZGQ1NmQ2M2IxOWQ0MGYgaW5wdXQ9YWJiOTc0ZTM1MGZiNjVjN10qLworeworICAgIFB5T2JqZWN0KiB0YWcgPSBwYXRoOworICAgIF9QeV9JREVOVElGSUVSKGl0ZXJmaW5kKTsKKyAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKIAogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAogICAgICAgICBzdC0+ZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9pdGVyZmluZCwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcyk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dkcykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50LmdldAorCisgICAga2V5OiBvYmplY3QKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjNjNjE0MTQyNTk1ZDc1IGlucHV0PWVlMTUzYmJmOGNkYjI0NmVdKi8KIHsKICAgICBQeU9iamVjdCogdmFsdWU7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OwotCi0gICAgUHlPYmplY3QqIGtleTsKLSAgICBQeU9iamVjdCogZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmdldCIsIGt3bGlzdCwgJmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSB8fCBzZWxmLT5leHRyYS0+YXR0cmliID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gZGVmYXVsdF92YWx1ZTsKQEAgLTEyNTcsMTcgKzEzMjcsMjAgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0Y2hpbGRyZW4oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5nZXRjaGlsZHJlbgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTUwZmZlMTE4NjM3YjE0ZiBpbnB1dD0wZjc1NGRmZGVkMTUwZDVmXSovCiB7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0KiBsaXN0OwogCiAgICAgLyogRklYTUU6IHJlcG9ydCBhcyBkZXByZWNhdGVkPyAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0Y2hpbGRyZW4iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIXNlbGYtPmV4dHJhKQogICAgICAgICByZXR1cm4gUHlMaXN0X05ldygwKTsKIApAQCAtMTI4OSwyNSArMTM2MiwzMCBAQAogY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KTsKIAogCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pdGVyCisKKyAgICB0YWc6IG9iamVjdCA9IE5vbmUKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmNDlmOWE4NjI5NDFjYzUgaW5wdXQ9Nzc0ZDViMTJlNTczYWVkZF0qLwogewotICAgIFB5T2JqZWN0KiB0YWcgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsidGFnIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86aXRlciIsIGt3bGlzdCwgJnRhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCB0YWcsIDApOwogfQogCiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcnRleHQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlcnRleHQiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pdGVydGV4dAogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZhMzRiMmZiY2I2NWRmNiBpbnB1dD1hZjhmMGU0MmNiMjM5Yzg5XSovCit7CiAgICAgcmV0dXJuIGNyZWF0ZV9lbGVtZW50aXRlcihzZWxmLCBQeV9Ob25lLCAxKTsKIH0KIApAQCAtMTMyOSwxNiArMTQwNywyMSBAQAogICAgIHJldHVybiBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baW5kZXhdOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2luc2VydChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpbnQgaTsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5FbGVtZW50Lmluc2VydAogCi0gICAgaW50IGluZGV4OwotICAgIFB5T2JqZWN0KiBlbGVtZW50OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8hOmluc2VydCIsICZpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJkVsZW1lbnRfVHlwZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbmRleDogUHlfc3NpemVfdAorICAgIHN1YmVsZW1lbnQ6IG9iamVjdChzdWJjbGFzc19vZj0nJkVsZW1lbnRfVHlwZScpCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTkwYWRmZWY0ZDQyNGMwYiBpbnB1dD1jZDZmYmZjZGFiNTJkN2E4XSovCit7CisgICAgUHlfc3NpemVfdCBpOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewogICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKQEAgLTEzNTksMzIgKzE0NDIsMzggQEAKICAgICBmb3IgKGkgPSBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpID4gaW5kZXg7IGktLSkKICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldID0gc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ktMV07CiAKLSAgICBQeV9JTkNSRUYoZWxlbWVudCk7Ci0gICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2luZGV4XSA9IGVsZW1lbnQ7CisgICAgUHlfSU5DUkVGKHN1YmVsZW1lbnQpOworICAgIHNlbGYtPmV4dHJhLT5jaGlsZHJlbltpbmRleF0gPSBzdWJlbGVtZW50OwogCiAgICAgc2VsZi0+ZXh0cmEtPmxlbmd0aCsrOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlbXMoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlbXMiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5pdGVtcwogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmRiMmM3NzhjZTNmNWE0ZCBpbnB1dD1hZGJlMDlhYWVhNDc0NDQ3XSovCit7CiAgICAgaWYgKCFzZWxmLT5leHRyYSB8fCBzZWxmLT5leHRyYS0+YXR0cmliID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBQeUxpc3RfTmV3KDApOwogCiAgICAgcmV0dXJuIFB5RGljdF9JdGVtcyhzZWxmLT5leHRyYS0+YXR0cmliKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9rZXlzKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmtleXMiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5rZXlzCiAKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjNWJmYWJiZjIwZWViM2MgaW5wdXQ9ZjAyY2FmNWI0OTZiNWIwYl0qLworewogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gUHlMaXN0X05ldygwKTsKIApAQCAtMTQwMCwxNiArMTQ4OSwyMiBAQAogICAgIHJldHVybiBzZWxmLT5leHRyYS0+bGVuZ3RoOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X21ha2VlbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLkVsZW1lbnQubWFrZWVsZW1lbnQKKworICAgIHRhZzogb2JqZWN0CisgICAgYXR0cmliOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJpYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MTA5ODMyZDViYjc4OWVmIGlucHV0PTk0ODBkMWQyZTNlNjgyMzVdKi8KIHsKICAgICBQeU9iamVjdCogZWxlbTsKIAotICAgIFB5T2JqZWN0KiB0YWc7Ci0gICAgUHlPYmplY3QqIGF0dHJpYjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POm1ha2VlbGVtZW50IiwgJnRhZywgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDIxLDE2ICsxNTE2LDIxIEBACiAgICAgcmV0dXJuIGVsZW07CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGludCBpOwotICAgIGludCByYzsKLSAgICBQeU9iamVjdCogZWxlbWVudDsKLSAgICBQeU9iamVjdCogZm91bmQ7CisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5yZW1vdmUKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6cmVtb3ZlIiwgJkVsZW1lbnRfVHlwZSwgJmVsZW1lbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdWJlbGVtZW50OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZFbGVtZW50X1R5cGUnKQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzhmZTZjMDdkNmQ4N2QxZiBpbnB1dD1kNTJmYzI4ZWRlZGMwYmQ4XSovCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCByYzsKKyAgICBQeU9iamVjdCAqZm91bmQ7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CiAgICAgICAgIC8qIGVsZW1lbnQgaGFzIG5vIGNoaWxkcmVuLCBzbyByYWlzZSBleGNlcHRpb24gKi8KQEAgLTE0NDIsOSArMTU0Miw5IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPmV4dHJhLT5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldID09IGVsZW1lbnQpCisgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0gPT0gc3ViZWxlbWVudCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0sIGVsZW1lbnQsIFB5X0VRKTsKKyAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldLCBzdWJlbGVtZW50LCBQeV9FUSk7CiAgICAgICAgIGlmIChyYyA+IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKHJjIDwgMCkKQEAgLTE0NTIsNyArMTU1Miw3IEBACiAgICAgfQogCiAgICAgaWYgKGkgPj0gc2VsZi0+ZXh0cmEtPmxlbmd0aCkgewotICAgICAgICAvKiBlbGVtZW50IGlzIG5vdCBpbiBjaGlsZHJlbiwgc28gcmFpc2UgZXhjZXB0aW9uICovCisgICAgICAgIC8qIHN1YmVsZW1lbnQgaXMgbm90IGluIGNoaWxkcmVuLCBzbyByYWlzZSBleGNlcHRpb24gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICJsaXN0LnJlbW92ZSh4KTogeCBub3QgaW4gbGlzdCIKQEAgLTE0NzksMTYgKzE1NzksMjIgQEAKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCBhdCAlcD4iLCBzZWxmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9zZXQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuRWxlbWVudC5zZXQKKworICAgIGtleTogb2JqZWN0CisgICAgdmFsdWU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYjkzODgwNmJlM2M1NjU2IGlucHV0PTFlZmU5MGY3ZDgyYjNmZTldKi8KIHsKICAgICBQeU9iamVjdCogYXR0cmliOwogCi0gICAgUHlPYmplY3QqIGtleTsKLSAgICBQeU9iamVjdCogdmFsdWU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpzZXQiLCAma2V5LCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE1MDgsNyArMTYxNCw3IEBACiBlbGVtZW50X3NldGl0ZW0oUHlPYmplY3QqIHNlbGZfLCBQeV9zc2l6ZV90IGluZGV4LCBQeU9iamVjdCogaXRlbSkKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QqIG9sZDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEgfHwgaW5kZXggPCAwIHx8IGluZGV4ID49IHNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKQEAgLTE3NjksNDMgKzE4NzUsNiBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIGVsZW1lbnRfbWV0aG9kc1tdID0gewotCi0gICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jbGVhcm1ldGhvZCwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCi0gICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kYWxsLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLQotICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2FwcGVuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV4dGVuZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9leHRlbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaW5zZXJ0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3JlbW92ZSwgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7Iml0ZXJ0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJ0ZXh0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAotCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTfSwKLSAgICB7ImdldGNoaWxkcmVuIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2dldGNoaWxkcmVuLCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgeyJpdGVtcyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVtcywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImtleXMiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfa2V5cywgTUVUSF9WQVJBUkdTfSwKLQotICAgIHsibWFrZWVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfbWFrZWVsZW1lbnQsIE1FVEhfVkFSQVJHU30sCi0KLSAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NvcHksIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZGVlcGNvcHksIE1FVEhfVkFSQVJHU30sCi0gICAgeyJfX3NpemVvZl9fIiwgZWxlbWVudF9zaXplb2YsIE1FVEhfTk9BUkdTfSwKLSAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbillbGVtZW50X2dldHN0YXRlLCBNRVRIX05PQVJHU30sCi0gICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pZWxlbWVudF9zZXRzdGF0ZSwgTUVUSF9PfSwKLQotICAgIHtOVUxMLCBOVUxMfQotfTsKLQogc3RhdGljIFB5T2JqZWN0KgogZWxlbWVudF9nZXRhdHRybyhFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbmFtZW9iaikKIHsKQEAgLTE5MDIsNTQgKzE5NzEsNiBAQAogICAgIDAsCiB9OwogCi1zdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBlbGVtZW50X2FzX21hcHBpbmcgPSB7Ci0gICAgKGxlbmZ1bmMpIGVsZW1lbnRfbGVuZ3RoLAotICAgIChiaW5hcnlmdW5jKSBlbGVtZW50X3N1YnNjciwKLSAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAotfTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAotICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJmVsZW1lbnRfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIChpbnF1aXJ5KWVsZW1lbnRfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICBvZmZzZXRvZihFbGVtZW50T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWVsZW1lbnRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwotICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgZWxlbWVudF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwotfTsKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogRWxlbWVudCBpdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBFbGVtZW50SXRlck9iamVjdCByZXByZXNlbnRzIHRoZSBpdGVyYXRpb24gc3RhdGUgb3ZlciBhbiBYTUwgZWxlbWVudCBpbgpAQCAtMjMxMiwyMyArMjMzMywyNCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKil0OwogfQogCi1zdGF0aWMgaW50Ci10cmVlYnVpbGRlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbGVtZW50X2ZhY3RvcnkiLCAwfTsKLSAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKLSAgICBUcmVlQnVpbGRlck9iamVjdCAqc2VsZl90YiA9IChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGY7Ci0gICAgUHlPYmplY3QgKnRtcDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5fX2luaXRfXwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPOlRyZWVCdWlsZGVyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgZWxlbWVudF9mYWN0b3J5OiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxY2ZhNzU1ODk3MGVlOTYgaW5wdXQ9MWI0MjRlZWVmYzM1MjQ5Y10qLworeworICAgIFB5T2JqZWN0ICp0bXA7CiAKICAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CiAgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOwotICAgICAgICB0bXAgPSBzZWxmX3RiLT5lbGVtZW50X2ZhY3Rvcnk7Ci0gICAgICAgIHNlbGZfdGItPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKKyAgICAgICAgdG1wID0gc2VsZi0+ZWxlbWVudF9mYWN0b3J5OworICAgICAgICBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3Rvcnk7CiAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICB9CiAKQEAgLTI2NDgsMjMgKzI2NzAsMzMgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBtZXRob2RzIChpbiBhbHBoYWJldGljYWwgb3JkZXIpICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2RhdGEoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBkYXRhOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpkYXRhIiwgJmRhdGEpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5kYXRhCiAKKyAgICBkYXRhOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTE0NGM3MTAwNzk1YmIyIGlucHV0PWEwNTQwYzUzMmIyODRkMjldKi8KK3sKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfaGFuZGxlX2RhdGEoc2VsZiwgZGF0YSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2VuZChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZW5kIiwgJnRhZykpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLmVuZAogCisgICAgdGFnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmQoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWE5ODcyN2NjNjkxY2Q5ZCBpbnB1dD0yMmRjMzY3NDIzNmY1NzQ1XSovCit7CiAgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9lbmQoc2VsZiwgdGFnKTsKIH0KIApAQCAtMjY4NCw3NiArMjcxNiwzNSBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXRyZWVidWlsZGVyX2Nsb3NlKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbG9zZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5UcmVlQnVpbGRlci5jbG9zZQogCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDQxZmVlMzIwMmY2MWVlIGlucHV0PWY3YzljNjVkYzcxOGRlMTRdKi8KK3sKICAgICByZXR1cm4gdHJlZWJ1aWxkZXJfZG9uZShzZWxmKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXJfc3RhcnQoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlRyZWVCdWlsZGVyLnN0YXJ0CisKKyAgICB0YWc6IG9iamVjdAorICAgIGF0dHJzOiBvYmplY3QgPSBOb25lCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2U5ZGMyODYxMzQ5NDExIGlucHV0PTk1ZmMxNzU4ZGQwNDJjNjVdKi8KIHsKLSAgICBQeU9iamVjdCogdGFnOwotICAgIFB5T2JqZWN0KiBhdHRyaWIgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOnN0YXJ0IiwgJnRhZywgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJpYik7CisgICAgcmV0dXJuIHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydChzZWxmLCB0YWcsIGF0dHJzKTsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRhdGEiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2RhdGEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfc3RhcnQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2VuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlRyZWVCdWlsZGVyIiwgc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgMCwKLSAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpdHJlZWJ1aWxkZXJfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl0cmVlYnVpbGRlcl9nY190cmF2ZXJzZSwgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAoaW5xdWlyeSl0cmVlYnVpbGRlcl9nY19jbGVhciwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICB0cmVlYnVpbGRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIChpbml0cHJvYyl0cmVlYnVpbGRlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIHRyZWVidWlsZGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KLX07Ci0KIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiB0aGUgZXhwYXQgaW50ZXJmYWNlICovCiAKQEAgLTI3OTEsNyArMjc4MiwxMSBAQAogCiB9IFhNTFBhcnNlck9iamVjdDsKIAotc3RhdGljIFB5T2JqZWN0KiB4bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKK3N0YXRpYyBQeU9iamVjdCoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnB1YmlkLCBQeU9iamVjdCAqc3lzdGVtKTsKIAogLyogaGVscGVycyAqLwogCkBAIC0yODY5LDEyICsyODY0LDEzIEBACiAgKiBtZXNzYWdlIHN0cmluZyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGVycm9yX2NvZGUuCiAqLwogc3RhdGljIHZvaWQKLWV4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgY2hhciAqbWVzc2FnZSkKK2V4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBQeV9zc2l6ZV90IGxpbmUsIFB5X3NzaXplX3QgY29sdW1uLAorICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgUHlPYmplY3QgKmVycm1zZywgKmVycm9yLCAqcG9zaXRpb24sICpjb2RlOwogICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0ID0gRVRfU1RBVEVfR0xPQkFMOwogCi0gICAgZXJybXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVkLCBjb2x1bW4gJWQiLAorICAgIGVycm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlemQsIGNvbHVtbiAlemQiLAogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPyBtZXNzYWdlIDogRVhQQVQoRXJyb3JTdHJpbmcpKGVycm9yX2NvZGUpLAogICAgICAgICAgICAgICAgIGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKGVycm1zZyA9PSBOVUxMKQpAQCAtMjg5OCw3ICsyODk0LDcgQEAKICAgICB9CiAgICAgUHlfREVDUkVGKGNvZGUpOwogCi0gICAgcG9zaXRpb24gPSBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgbGluZSwgY29sdW1uKTsKKyAgICBwb3NpdGlvbiA9IFB5X0J1aWxkVmFsdWUoIihubikiLCBsaW5lLCBjb2x1bW4pOwogICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzIwMCw4ICszMTk2LDkgQEAKICAgICAgICAgICAgICEoUHlDRnVuY3Rpb25fQ2hlY2socGFyc2VyX2RvY3R5cGUpICYmCiAgICAgICAgICAgICAgIFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKHBhcnNlcl9kb2N0eXBlKSA9PSBzZWxmX3B5b2JqICYmCiAgICAgICAgICAgICAgIFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihwYXJzZXJfZG9jdHlwZSkgPT0KLSAgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSkpIHsKLSAgICAgICAgICAgIHJlcyA9IHhtbHBhcnNlcl9kb2N0eXBlKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKHNlbGYsIGRvY3R5cGVfbmFtZV9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJpZF9vYmosIHN5c2lkX29iaik7CiAgICAgICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFyOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0zMjYwLDMzICszMjU3LDM0IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX19pbml0X18KKworICAgIGh0bWw6IG9iamVjdCA9IE5VTEwKKyAgICB0YXJnZXQ6IG9iamVjdCA9IE5VTEwKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLXhtbHBhcnNlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaHRtbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFyZ2V0LCBjb25zdCBjaGFyICplbmNvZGluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNmExNmM2M2RkYTU0NDQxIGlucHV0PTE1NWJjNTY5NWJhYWZmZmRdKi8KIHsKLSAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGZfeHAgPSAoWE1MUGFyc2VyT2JqZWN0ICopc2VsZjsKLSAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTCwgKmh0bWwgPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgMH07CisgICAgc2VsZi0+ZW50aXR5ID0gUHlEaWN0X05ldygpOworICAgIGlmICghc2VsZi0+ZW50aXR5KQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PejpYTUxQYXJzZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpIHsKKyAgICBzZWxmLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGYtPm5hbWVzKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBzZWxmX3hwLT5lbnRpdHkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFzZWxmX3hwLT5lbnRpdHkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHNlbGZfeHAtPm5hbWVzID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZl94cC0+bmFtZXMpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHNlbGZfeHAtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZFeHBhdE1lbW9yeUhhbmRsZXIsICJ9Iik7Ci0gICAgaWYgKCFzZWxmX3hwLT5wYXJzZXIpIHsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+ZW50aXR5KTsKLSAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOworICAgIHNlbGYtPnBhcnNlciA9IEVYUEFUKFBhcnNlckNyZWF0ZV9NTSkoZW5jb2RpbmcsICZFeHBhdE1lbW9yeUhhbmRsZXIsICJ9Iik7CisgICAgaWYgKCFzZWxmLT5wYXJzZXIpIHsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZi0+ZW50aXR5KTsKKyAgICAgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZXMpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzI5Niw1NSArMzI5NCw1NSBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygmVHJlZUJ1aWxkZXJfVHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghdGFyZ2V0KSB7Ci0gICAgICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5lbnRpdHkpOwotICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOwotICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZl94cC0+cGFyc2VyKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5uYW1lcyk7CisgICAgICAgICAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIHNlbGZfeHAtPnRhcmdldCA9IHRhcmdldDsKKyAgICBzZWxmLT50YXJnZXQgPSB0YXJnZXQ7CiAKLSAgICBzZWxmX3hwLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOwotICAgIHNlbGZfeHAtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKLSAgICBzZWxmX3hwLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7Ci0gICAgc2VsZl94cC0+aGFuZGxlX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRvY3R5cGUiKTsKKyAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7CisgICAgc2VsZi0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKKyAgICBzZWxmLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKKyAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOworICAgIHNlbGYtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKKyAgICBzZWxmLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7CisgICAgc2VsZi0+aGFuZGxlX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRvY3R5cGUiKTsKIAogICAgIFB5RXJyX0NsZWFyKCk7CiAKICAgICAvKiBjb25maWd1cmUgcGFyc2VyICovCi0gICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGZfeHAtPnBhcnNlciwgc2VsZl94cCk7CisgICAgRVhQQVQoU2V0VXNlckRhdGEpKHNlbGYtPnBhcnNlciwgc2VsZik7CiAgICAgRVhQQVQoU2V0RWxlbWVudEhhbmRsZXIpKAotICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgKFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyKSBleHBhdF9zdGFydF9oYW5kbGVyLAogICAgICAgICAoWE1MX0VuZEVsZW1lbnRIYW5kbGVyKSBleHBhdF9lbmRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldERlZmF1bHRIYW5kbGVyRXhwYW5kKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfRGVmYXVsdEhhbmRsZXIpIGV4cGF0X2RlZmF1bHRfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldENoYXJhY3RlckRhdGFIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIpIGV4cGF0X2RhdGFfaGFuZGxlcgogICAgICAgICApOwotICAgIGlmIChzZWxmX3hwLT5oYW5kbGVfY29tbWVudCkKKyAgICBpZiAoc2VsZi0+aGFuZGxlX2NvbW1lbnQpCiAgICAgICAgIEVYUEFUKFNldENvbW1lbnRIYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfQ29tbWVudEhhbmRsZXIpIGV4cGF0X2NvbW1lbnRfaGFuZGxlcgogICAgICAgICAgICAgKTsKLSAgICBpZiAoc2VsZl94cC0+aGFuZGxlX3BpKQorICAgIGlmIChzZWxmLT5oYW5kbGVfcGkpCiAgICAgICAgIEVYUEFUKFNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIpKAotICAgICAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICAgICAgc2VsZi0+cGFyc2VyLAogICAgICAgICAgICAgKFhNTF9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSBleHBhdF9waV9oYW5kbGVyCiAgICAgICAgICAgICApOwogICAgIEVYUEFUKFNldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSgKLSAgICAgICAgc2VsZl94cC0+cGFyc2VyLAorICAgICAgICBzZWxmLT5wYXJzZXIsCiAgICAgICAgIChYTUxfU3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIGV4cGF0X3N0YXJ0X2RvY3R5cGVfaGFuZGxlcgogICAgICAgICApOwogICAgIEVYUEFUKFNldFVua25vd25FbmNvZGluZ0hhbmRsZXIpKAotICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCisgICAgICAgIHNlbGYtPnBhcnNlciwKICAgICAgICAgRVhQQVQoRGVmYXVsdFVua25vd25FbmNvZGluZ0hhbmRsZXIpLCBOVUxMCiAgICAgICAgICk7CiAKQEAgLTM0MjAsMTUgKzM0MTgsMTggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX2Nsb3NlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfZWxlbWVudHRyZWUuWE1MUGFyc2VyLmNsb3NlCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY4ZDM3NWRkMjNiYzdmYiBpbnB1dD1jYTc5MDljYTc4YzNhYmZlXSovCiB7CiAgICAgLyogZW5kIGZlZWRpbmcgZGF0YSB0byBwYXJzZXIgKi8KIAogICAgIFB5T2JqZWN0KiByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Y2xvc2UiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXMgPSBleHBhdF9wYXJzZShzZWxmLCAiIiwgMCwgMSk7CiAgICAgaWYgKCFyZXMpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzQ0NiwxNSArMzQ0NywyNCBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5T2JqZWN0KgoteG1scGFyc2VyX2ZlZWQoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJnKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5mZWVkCisKKyAgICBkYXRhOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZChYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0MmI2YTc4ZWVjNzQ0NmQgaW5wdXQ9ZmUyMzFiNmI4ZGUzY2UxZl0qLwogewogICAgIC8qIGZlZWQgZGF0YSB0byBwYXJzZXIgKi8KIAotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgeworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZGF0YSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBkYXRhX2xlbjsKLSAgICAgICAgY29uc3QgY2hhciAqZGF0YSA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmRhdGFfbGVuKTsKLSAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKyAgICAgICAgY29uc3QgY2hhciAqZGF0YV9wdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShkYXRhLCAmZGF0YV9sZW4pOworICAgICAgICBpZiAoZGF0YV9wdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoZGF0YV9sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInNpemUgZG9lcyBub3QgZml0IGluIGFuIGludCIpOwpAQCAtMzQ2MiwxMiArMzQ3MiwxMiBAQAogICAgICAgICB9CiAgICAgICAgIC8qIEV4cGxpY2l0bHkgc2V0IFVURi04IGVuY29kaW5nLiBSZXR1cm4gY29kZSBpZ25vcmVkLiAqLwogICAgICAgICAodm9pZClFWFBBVChTZXRFbmNvZGluZykoc2VsZi0+cGFyc2VyLCAidXRmLTgiKTsKLSAgICAgICAgcmV0dXJuIGV4cGF0X3BhcnNlKHNlbGYsIGRhdGEsIChpbnQpZGF0YV9sZW4sIDApOworICAgICAgICByZXR1cm4gZXhwYXRfcGFyc2Uoc2VsZiwgZGF0YV9wdHIsIChpbnQpZGF0YV9sZW4sIDApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmlldywgUHlCVUZfU0lNUExFKSA8IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGF0YSwgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICh2aWV3LmxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwpAQCAtMzQ4MCw4ICszNDkwLDE3IEBACiAgICAgfQogfQogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfcGFyc2Vfd2hvbGUoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX3BhcnNlX3dob2xlCisKKyAgICBmaWxlOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3BhcnNlX3dob2xlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Zjc5NzE5N2JiODE4ZGRhMyBpbnB1dD0xOWVjYzg5M2I2ZjNlNzUyXSovCiB7CiAgICAgLyogKGludGVybmFsKSBwYXJzZSB0aGUgd2hvbGUgaW5wdXQsIHVudGlsIGVuZCBvZiBzdHJlYW0gKi8KICAgICBQeU9iamVjdCogcmVhZGVyOwpAQCAtMzQ4OSwxMSArMzUwOCw3IEBACiAgICAgUHlPYmplY3QqIHRlbXA7CiAgICAgUHlPYmplY3QqIHJlczsKIAotICAgIFB5T2JqZWN0KiBmaWxlb2JqOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpfcGFyc2UiLCAmZmlsZW9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVhZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlb2JqLCAicmVhZCIpOworICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZmlsZSwgInJlYWQiKTsKICAgICBpZiAoIXJlYWRlcikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM1MjgsOCArMzU0MywxNCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShidWZmZXIpID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVhZGVyKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic2l6ZSBkb2VzIG5vdCBmaXQgaW4gYW4gaW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICByZXMgPSBleHBhdF9wYXJzZSgKLSAgICAgICAgICAgIHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIFB5Qnl0ZXNfR0VUX1NJWkUoYnVmZmVyKSwgMAorICAgICAgICAgICAgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgKGludClQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlciksIDAKICAgICAgICAgICAgICk7CiAKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CkBAIC0zNTU0LDggKzM1NzUsMjAgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZXJfZG9jdHlwZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5kb2N0eXBlCisKKyAgICBuYW1lOiBvYmplY3QKKyAgICBwdWJpZDogb2JqZWN0CisgICAgc3lzdGVtOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHViaWQsIFB5T2JqZWN0ICpzeXN0ZW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTBmYjUwYzJhZmRlZDg4ZCBpbnB1dD04NDA1MDI3NmNjYTA0NWUxXSovCiB7CiAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUiCkBAIC0zNTY2LDE5ICszNTk5LDI1IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCogYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK19lbGVtZW50dHJlZS5YTUxQYXJzZXIuX3NldGV2ZW50cworCisgICAgZXZlbnRzX3F1ZXVlOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxpc3RfVHlwZScpCisgICAgZXZlbnRzX3RvX3JlcG9ydDogb2JqZWN0ID0gTm9uZQorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9NTlkYjk3NDI5MTBjNjE3NF0qLwogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAgICAgUHlfc3NpemVfdCBpLCBzZXFsZW47CiAgICAgVHJlZUJ1aWxkZXJPYmplY3QgKnRhcmdldDsKLQotICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWU7Ci0gICAgUHlPYmplY3QgKmV2ZW50c190b19yZXBvcnQgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpldmVudHNfc2VxOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwgICZQeUxpc3RfVHlwZSwgJmV2ZW50c19xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50c190b19yZXBvcnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM2NjIsMTUgKzM3MDEsNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlNZXRob2REZWYgeG1scGFyc2VyX21ldGhvZHNbXSA9IHsKLSAgICB7ImZlZWQiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9mZWVkLCBNRVRIX099LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9jbG9zZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Il9wYXJzZV93aG9sZSIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3BhcnNlX3dob2xlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiX3NldGV2ZW50cyIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImRvY3R5cGUiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9kb2N0eXBlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQogc3RhdGljIFB5T2JqZWN0KgogeG1scGFyc2VyX2dldGF0dHJvKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CkBAIC0zNjk1LDYgKzM3MjUsMTUyIEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopIHNlbGYsIG5hbWVvYmopOwogfQogCisjaW5jbHVkZSAiY2xpbmljL19lbGVtZW50dHJlZS5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiBlbGVtZW50X21ldGhvZHNbXSA9IHsKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0NMRUFSX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfR0VUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX1NFVF9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklOREFMTF9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0FQUEVORF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9FWFRFTkRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSU5TRVJUX01FVEhPRERFRgorICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX1JFTU9WRV9NRVRIT0RERUYKKworICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUlRFWFRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGCisKKyAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfX30sCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfR0VUQ0hJTERSRU5fTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVNU19NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9LRVlTX01FVEhPRERFRgorCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfTUFLRUVMRU1FTlRfTUVUSE9EREVGCisKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0NPUFlfX19NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0RFRVBDT1BZX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19TSVpFT0ZfX19NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0dFVFNUQVRFX19fTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfX19TRVRTVEFURV9fX01FVEhPRERFRgorCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBlbGVtZW50X2FzX21hcHBpbmcgPSB7CisgICAgKGxlbmZ1bmMpIGVsZW1lbnRfbGVuZ3RoLAorICAgIChiaW5hcnlmdW5jKSBlbGVtZW50X3N1YnNjciwKKyAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAorICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKWVsZW1lbnRfcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZlbGVtZW50X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJmVsZW1lbnRfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKWVsZW1lbnRfc2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRfZ2NfdHJhdmVyc2UsICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWVsZW1lbnRfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihFbGVtZW50T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKWVsZW1lbnRfaW5pdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZWxlbWVudF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKKyAgICBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfREFUQV9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfU1RBUlRfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1RSRUVCVUlMREVSX0VORF9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfQ0xPU0VfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRyZWVCdWlsZGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5UcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpdHJlZWJ1aWxkZXJfZ2NfdHJhdmVyc2UsICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpdHJlZWJ1aWxkZXJfZ2NfY2xlYXIsICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgdHJlZWJ1aWxkZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X18sICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB0cmVlYnVpbGRlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgeG1scGFyc2VyX21ldGhvZHNbXSA9IHsKKyAgICBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX0ZFRURfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9DTE9TRV9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX19QQVJTRV9XSE9MRV9NRVRIT0RERUYKKyAgICBfRUxFTUVOVFRSRUVfWE1MUEFSU0VSX19TRVRFVkVOVFNfTUVUSE9EREVGCisgICAgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9ET0NUWVBFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAieG1sLmV0cmVlLkVsZW1lbnRUcmVlLlhNTFBhcnNlciIsIHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAwLApAQCAtMzczMSw3ICszOTA3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKXhtbHBhcnNlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X18sICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIHhtbHBhcnNlcl9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KQEAgLTM3OTgsNyArMzk3NCw3IEBACiAgICAgaWYgKGV4cGF0X2NhcGkpIHsKICAgICAgICAgLyogY2hlY2sgdGhhdCBpdCdzIHVzYWJsZSAqLwogICAgICAgICBpZiAoc3RyY21wKGV4cGF0X2NhcGktPm1hZ2ljLCBQeUV4cGF0X0NBUElfTUFHSUMpICE9IDAgfHwKLSAgICAgICAgICAgIGV4cGF0X2NhcGktPnNpemUgPCBzaXplb2Yoc3RydWN0IFB5RXhwYXRfQ0FQSSkgfHwKKyAgICAgICAgICAgIChzaXplX3QpZXhwYXRfY2FwaS0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgUHlFeHBhdF9DQVBJKSB8fAogICAgICAgICAgICAgZXhwYXRfY2FwaS0+TUFKT1JfVkVSU0lPTiAhPSBYTUxfTUFKT1JfVkVSU0lPTiB8fAogICAgICAgICAgICAgZXhwYXRfY2FwaS0+TUlOT1JfVkVSU0lPTiAhPSBYTUxfTUlOT1JfVkVSU0lPTiB8fAogICAgICAgICAgICAgZXhwYXRfY2FwaS0+TUlDUk9fVkVSU0lPTiAhPSBYTUxfTUlDUk9fVkVSU0lPTikgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwppbmRleCAyNGRhNjc3Li5kYzY0Y2ZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYwpAQCAtMjUsNyArMjUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBhcnRpYWxfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqZnVuYzsKKyAgICBQeU9iamVjdCAqZnVuYywgKnBhcmdzLCAqbmFyZ3MsICpwa3c7CiAgICAgcGFydGlhbG9iamVjdCAqcHRvOwogCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPCAxKSB7CkBAIC0zNCw3ICszNCwxNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBwYXJncyA9IHBrdyA9IFB5X05vbmU7CiAgICAgZnVuYyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgaWYgKFB5X1RZUEUoZnVuYykgPT0gJnBhcnRpYWxfdHlwZSAmJiB0eXBlID09ICZwYXJ0aWFsX3R5cGUpIHsKKyAgICAgICAgcGFydGlhbG9iamVjdCAqcGFydCA9IChwYXJ0aWFsb2JqZWN0ICopZnVuYzsKKyAgICAgICAgaWYgKHBhcnQtPmRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcGFyZ3MgPSBwYXJ0LT5hcmdzOworICAgICAgICAgICAgcGt3ID0gcGFydC0+a3c7CisgICAgICAgICAgICBmdW5jID0gcGFydC0+Zm47CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgY2FsbGFibGUiKTsKQEAgLTQ4LDE4ICs1Nyw2MyBAQAogCiAgICAgcHRvLT5mbiA9IGZ1bmM7CiAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgIHB0by0+YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgUFlfU1NJWkVfVF9NQVgpOwotICAgIGlmIChwdG8tPmFyZ3MgPT0gTlVMTCkgeworCisgICAgbmFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIFBZX1NTSVpFX1RfTUFYKTsKKyAgICBpZiAobmFyZ3MgPT0gTlVMTCkgeworICAgICAgICBwdG8tPmFyZ3MgPSBOVUxMOwogICAgICAgICBwdG8tPmt3ID0gTlVMTDsKICAgICAgICAgUHlfREVDUkVGKHB0byk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBwdG8tPmt3ID0gKGt3ICE9IE5VTEwpID8gUHlEaWN0X0NvcHkoa3cpIDogUHlEaWN0X05ldygpOwotICAgIGlmIChwdG8tPmt3ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHB0byk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChwYXJncyA9PSBQeV9Ob25lIHx8IFB5VHVwbGVfR0VUX1NJWkUocGFyZ3MpID09IDApIHsKKyAgICAgICAgcHRvLT5hcmdzID0gbmFyZ3M7CisgICAgICAgIFB5X0lOQ1JFRihuYXJncyk7CiAgICAgfQorICAgIGVsc2UgaWYgKFB5VHVwbGVfR0VUX1NJWkUobmFyZ3MpID09IDApIHsKKyAgICAgICAgcHRvLT5hcmdzID0gcGFyZ3M7CisgICAgICAgIFB5X0lOQ1JFRihwYXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwdG8tPmFyZ3MgPSBQeVNlcXVlbmNlX0NvbmNhdChwYXJncywgbmFyZ3MpOworICAgICAgICBpZiAocHRvLT5hcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBOVUxMOworICAgICAgICAgICAgUHlfREVDUkVGKHB0byk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYobmFyZ3MpOwogCisgICAgaWYgKGt3ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHBrdyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBwdG8tPmt3ID0gUHlEaWN0X0NvcHkoa3cpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHRvLT5rdyA9IFB5RGljdF9Db3B5KHBrdyk7CisgICAgICAgICAgICBpZiAocHRvLT5rdyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9NZXJnZShwdG8tPmt3LCBrdywgMSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocHRvKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwdG8tPmt3ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwdG8pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChwa3cgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgcHRvLT5rdyA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChwdG8tPmt3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocHRvKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHB0by0+a3cgPSBwa3c7CisgICAgICAgICAgICBQeV9JTkNSRUYocGt3KTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHB0by0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIHB0by0+ZGljdCA9IE5VTEw7CkBAIC01MzYsNiArNTkwLDU1MCBAQAogb2YgdGhlIHNlcXVlbmNlIGluIHRoZSBjYWxjdWxhdGlvbiwgYW5kIHNlcnZlcyBhcyBhIGRlZmF1bHQgd2hlbiB0aGVcblwKIHNlcXVlbmNlIGlzIGVtcHR5LiIpOwogCisvKiBscnVfY2FjaGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIHRoaXMgb2JqZWN0IGlzIHVzZWQgZGVsaW1pdCBhcmdzIGFuZCBrZXl3b3JkcyBpbiB0aGUgY2FjaGUga2V5cyAqLworc3RhdGljIFB5T2JqZWN0ICprd2RfbWFyayA9IE5VTEw7CisKK3N0cnVjdCBscnVfbGlzdF9lbGVtOworc3RydWN0IGxydV9jYWNoZV9vYmplY3Q7CisKK3R5cGVkZWYgc3RydWN0IGxydV9saXN0X2VsZW0geworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBzdHJ1Y3QgbHJ1X2xpc3RfZWxlbSAqcHJldiwgKm5leHQ7ICAvKiBib3Jyb3dlZCBsaW5rcyAqLworICAgIFB5T2JqZWN0ICprZXksICpyZXN1bHQ7Cit9IGxydV9saXN0X2VsZW07CisKK3N0YXRpYyB2b2lkCitscnVfbGlzdF9lbGVtX2RlYWxsb2MobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhsaW5rKTsKKyAgICBQeV9YREVDUkVGKGxpbmstPmtleSk7CisgICAgUHlfWERFQ1JFRihsaW5rLT5yZXN1bHQpOworICAgIFB5T2JqZWN0X0dDX0RlbChsaW5rKTsKK30KKworc3RhdGljIGludAorbHJ1X2xpc3RfZWxlbV90cmF2ZXJzZShscnVfbGlzdF9lbGVtICpsaW5rLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChsaW5rLT5rZXkpOworICAgIFB5X1ZJU0lUKGxpbmstPnJlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2xydV9saXN0X2VsZW1fY2xlYXIobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBQeV9DTEVBUihsaW5rLT5rZXkpOworICAgIFB5X0NMRUFSKGxpbmstPnJlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2xpc3RfZWxlbV90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImZ1bmN0b29scy5fbHJ1X2xpc3RfZWxlbSIsICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihscnVfbGlzdF9lbGVtKSwgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWxydV9saXN0X2VsZW1fZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWxydV9saXN0X2VsZW1fdHJhdmVyc2UsICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWxydV9saXN0X2VsZW1fY2xlYXIsICAgICAgIC8qIHRwX2NsZWFyICovCit9OworCisKK3R5cGVkZWYgUHlPYmplY3QgKigqbHJ1X2NhY2hlX3Rlcm5hcnlmdW5jKShzdHJ1Y3QgbHJ1X2NhY2hlX29iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwordHlwZWRlZiBzdHJ1Y3QgbHJ1X2NhY2hlX29iamVjdCB7CisgICAgbHJ1X2xpc3RfZWxlbSByb290OyAgLyogaW5jbHVkZXMgUHlPYmplY3RfSEVBRCAqLworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsKKyAgICBQeU9iamVjdCAqbWF4c2l6ZV9POworICAgIFB5T2JqZWN0ICpmdW5jOworICAgIGxydV9jYWNoZV90ZXJuYXJ5ZnVuYyB3cmFwcGVyOworICAgIFB5T2JqZWN0ICpjYWNoZTsKKyAgICBQeU9iamVjdCAqY2FjaGVfaW5mb190eXBlOworICAgIFB5X3NzaXplX3QgbWlzc2VzLCBoaXRzOworICAgIGludCB0eXBlZDsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBpbnQgZnVsbDsKK30gbHJ1X2NhY2hlX29iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBscnVfY2FjaGVfdHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9tYWtlX2tleShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsIGludCB0eXBlZCkKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqc29ydGVkX2l0ZW1zOworICAgIFB5X3NzaXplX3Qga2V5X3NpemUsIHBvcywga2V5X3BvczsKKworICAgIC8qIHNob3J0IHBhdGgsIGtleSB3aWxsIG1hdGNoIGFyZ3MgYW55d2F5LCB3aGljaCBpcyBhIHR1cGxlICovCisgICAgaWYgKCF0eXBlZCAmJiAha3dkcykgeworICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgICAgIHJldHVybiBhcmdzOworICAgIH0KKworICAgIGlmIChrd2RzICYmIFB5RGljdF9TaXplKGt3ZHMpID4gMCkgeworICAgICAgICBzb3J0ZWRfaXRlbXMgPSBQeURpY3RfSXRlbXMoa3dkcyk7CisgICAgICAgIGlmICghc29ydGVkX2l0ZW1zKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeUxpc3RfU29ydChzb3J0ZWRfaXRlbXMpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNvcnRlZF9pdGVtcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBzb3J0ZWRfaXRlbXMgPSBOVUxMOworCisgICAga2V5X3NpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIGlmIChzb3J0ZWRfaXRlbXMpCisgICAgICAgIGtleV9zaXplICs9IFB5TGlzdF9HRVRfU0laRShzb3J0ZWRfaXRlbXMpOworICAgIGlmICh0eXBlZCkKKyAgICAgICAga2V5X3NpemUgKj0gMjsKKyAgICBpZiAoc29ydGVkX2l0ZW1zKQorICAgICAgICBrZXlfc2l6ZSsrOworCisgICAga2V5ID0gUHlUdXBsZV9OZXcoa2V5X3NpemUpOworICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworCisgICAga2V5X3BvcyA9IDA7CisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOyArK3BvcykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgcG9zKTsKKyAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICB9CisgICAgaWYgKHNvcnRlZF9pdGVtcykgeworICAgICAgICBQeV9JTkNSRUYoa3dkX21hcmspOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBrd2RfbWFyayk7CisgICAgICAgIGZvciAocG9zID0gMDsgcG9zIDwgUHlMaXN0X0dFVF9TSVpFKHNvcnRlZF9pdGVtcyk7ICsrcG9zKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShzb3J0ZWRfaXRlbXMsIHBvcyk7CisgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodHlwZWQpIHsKKyAgICAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOyArK3BvcykgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSAoUHlPYmplY3QgKilQeV9UWVBFKFB5VHVwbGVfR0VUX0lURU0oYXJncywgcG9zKSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleSwga2V5X3BvcysrLCBpdGVtKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc29ydGVkX2l0ZW1zKSB7CisgICAgICAgICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IFB5TGlzdF9HRVRfU0laRShzb3J0ZWRfaXRlbXMpOyArK3BvcykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0cF9pdGVtcyA9IFB5TGlzdF9HRVRfSVRFTShzb3J0ZWRfaXRlbXMsIHBvcyk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSAoUHlPYmplY3QgKilQeV9UWVBFKFB5VHVwbGVfR0VUX0lURU0odHBfaXRlbXMsIDEpKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXksIGtleV9wb3MrKywgaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGtleV9wb3MgPT0ga2V5X3NpemUpOworCitkb25lOgorICAgIGlmIChzb3J0ZWRfaXRlbXMpCisgICAgICAgIFB5X0RFQ1JFRihzb3J0ZWRfaXRlbXMpOworICAgIHJldHVybiBrZXk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmNhY2hlZF9scnVfY2FjaGVfd3JhcHBlcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoc2VsZi0+ZnVuYywgYXJncywga3dkcyk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpbmZpbml0ZV9scnVfY2FjaGVfd3JhcHBlcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqa2V5ID0gbHJ1X2NhY2hlX21ha2Vfa2V5KGFyZ3MsIGt3ZHMsIHNlbGYtPnR5cGVkKTsKKyAgICBpZiAoIWtleSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3Ioc2VsZi0+Y2FjaGUsIGtleSk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgc2VsZi0+aGl0cysrOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKHNlbGYtPmZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmNhY2hlLCBrZXksIHJlc3VsdCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitscnVfY2FjaGVfZXh0cmljYXRlX2xpbmsobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICBsaW5rLT5wcmV2LT5uZXh0ID0gbGluay0+bmV4dDsKKyAgICBsaW5rLT5uZXh0LT5wcmV2ID0gbGluay0+cHJldjsKK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9hcHBlbmRfbGluayhscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBscnVfbGlzdF9lbGVtICpsaW5rKQoreworICAgIGxydV9saXN0X2VsZW0gKnJvb3QgPSAmc2VsZi0+cm9vdDsKKyAgICBscnVfbGlzdF9lbGVtICpsYXN0ID0gcm9vdC0+cHJldjsKKyAgICBsYXN0LT5uZXh0ID0gcm9vdC0+cHJldiA9IGxpbms7CisgICAgbGluay0+cHJldiA9IGxhc3Q7CisgICAgbGluay0+bmV4dCA9IHJvb3Q7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitib3VuZGVkX2xydV9jYWNoZV93cmFwcGVyKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBscnVfbGlzdF9lbGVtICpsaW5rOworICAgIFB5T2JqZWN0ICprZXksICpyZXN1bHQ7CisKKyAgICBrZXkgPSBscnVfY2FjaGVfbWFrZV9rZXkoYXJncywga3dkcywgc2VsZi0+dHlwZWQpOworICAgIGlmICgha2V5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsaW5rICA9IChscnVfbGlzdF9lbGVtICopUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3Ioc2VsZi0+Y2FjaGUsIGtleSk7CisgICAgaWYgKGxpbmspIHsKKyAgICAgICAgbHJ1X2NhY2hlX2V4dHJpY2F0ZV9saW5rKGxpbmspOworICAgICAgICBscnVfY2FjaGVfYXBwZW5kX2xpbmsoc2VsZiwgbGluayk7CisgICAgICAgIHNlbGYtPmhpdHMrKzsKKyAgICAgICAgcmVzdWx0ID0gbGluay0+cmVzdWx0OworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChzZWxmLT5mdW5jLCBhcmdzLCBrd2RzKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzZWxmLT5mdWxsICYmIHNlbGYtPnJvb3QubmV4dCAhPSAmc2VsZi0+cm9vdCkgeworICAgICAgICAvKiBVc2UgdGhlIG9sZGVzdCBpdGVtIHRvIHN0b3JlIHRoZSBuZXcga2V5IGFuZCByZXN1bHQuICovCisgICAgICAgIFB5T2JqZWN0ICpvbGRrZXksICpvbGRyZXN1bHQ7CisgICAgICAgIC8qIEV4dHJpY2F0ZSB0aGUgb2xkZXN0IGl0ZW0uICovCisgICAgICAgIGxpbmsgPSBzZWxmLT5yb290Lm5leHQ7CisgICAgICAgIGxydV9jYWNoZV9leHRyaWNhdGVfbGluayhsaW5rKTsKKyAgICAgICAgLyogUmVtb3ZlIGl0IGZyb20gdGhlIGNhY2hlLgorICAgICAgICAgICBUaGUgY2FjaGUgZGljdCBob2xkcyBvbmUgcmVmZXJlbmNlIHRvIHRoZSBsaW5rLAorICAgICAgICAgICBhbmQgdGhlIGxpbmtlZCBsaXN0IGhvbGRzIHlldCBvbmUgcmVmZXJlbmNlIHRvIGl0LiAqLworICAgICAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oc2VsZi0+Y2FjaGUsIGxpbmstPmtleSkgPCAwKSB7CisgICAgICAgICAgICBscnVfY2FjaGVfYXBwZW5kX2xpbmsoc2VsZiwgbGluayk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgb2xkIGtleSBhbmQgb2xkIHJlc3VsdCB0bworICAgICAgICAgICBwcmV2ZW50IHRoZWlyIHJlZiBjb3VudHMgZnJvbSBnb2luZyB0byB6ZXJvIGR1cmluZyB0aGUKKyAgICAgICAgICAgdXBkYXRlLiBUaGF0IHdpbGwgcHJldmVudCBwb3RlbnRpYWxseSBhcmJpdHJhcnkgb2JqZWN0CisgICAgICAgICAgIGNsZWFuLXVwIGNvZGUgKGkuZS4gX19kZWxfXykgZnJvbSBydW5uaW5nIHdoaWxlIHdlJ3JlCisgICAgICAgICAgIHN0aWxsIGFkanVzdGluZyB0aGUgbGlua3MuICovCisgICAgICAgIG9sZGtleSA9IGxpbmstPmtleTsKKyAgICAgICAgb2xkcmVzdWx0ID0gbGluay0+cmVzdWx0OworCisgICAgICAgIGxpbmstPmtleSA9IGtleTsKKyAgICAgICAgbGluay0+cmVzdWx0ID0gcmVzdWx0OworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+Y2FjaGUsIGtleSwgKFB5T2JqZWN0ICopbGluaykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xka2V5KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbHJ1X2NhY2hlX2FwcGVuZF9saW5rKHNlbGYsIGxpbmspOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsgLyogZm9yIHJldHVybiAqLworICAgICAgICBQeV9ERUNSRUYob2xka2V5KTsKKyAgICAgICAgUHlfREVDUkVGKG9sZHJlc3VsdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogUHV0IHJlc3VsdCBpbiBhIG5ldyBsaW5rIGF0IHRoZSBmcm9udCBvZiB0aGUgcXVldWUuICovCisgICAgICAgIGxpbmsgPSAobHJ1X2xpc3RfZWxlbSAqKVB5T2JqZWN0X0dDX05ldyhscnVfbGlzdF9lbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxydV9saXN0X2VsZW1fdHlwZSk7CisgICAgICAgIGlmIChsaW5rID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmstPmtleSA9IGtleTsKKyAgICAgICAgbGluay0+cmVzdWx0ID0gcmVzdWx0OworICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0sobGluayk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5jYWNoZSwga2V5LCAoUHlPYmplY3QgKilsaW5rKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5rKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGxydV9jYWNoZV9hcHBlbmRfbGluayhzZWxmLCBsaW5rKTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7IC8qIGZvciByZXR1cm4gKi8KKyAgICAgICAgc2VsZi0+ZnVsbCA9IChQeURpY3RfU2l6ZShzZWxmLT5jYWNoZSkgPj0gc2VsZi0+bWF4c2l6ZSk7CisgICAgfQorICAgIHNlbGYtPm1pc3NlcysrOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitscnVfY2FjaGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKm1heHNpemVfTywgKmNhY2hlX2luZm9fdHlwZSwgKmNhY2hlZGljdDsKKyAgICBpbnQgdHlwZWQ7CisgICAgbHJ1X2NhY2hlX29iamVjdCAqb2JqOworICAgIFB5X3NzaXplX3QgbWF4c2l6ZTsKKyAgICBQeU9iamVjdCAqKCp3cmFwcGVyKShscnVfY2FjaGVfb2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ1c2VyX2Z1bmN0aW9uIiwgIm1heHNpemUiLCAidHlwZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWNoZV9pbmZvX3R5cGUiLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT09wTzpscnVfY2FjaGUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnVuYywgJm1heHNpemVfTywgJnR5cGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZV9pbmZvX3R5cGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHNlbGVjdCB0aGUgY2FjaGluZyBmdW5jdGlvbiwgYW5kIG1ha2UvaW5jIG1heHNpemVfTyAqLworICAgIGlmIChtYXhzaXplX08gPT0gUHlfTm9uZSkgeworICAgICAgICB3cmFwcGVyID0gaW5maW5pdGVfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgICAgIC8qIHVzZSB0aGlzIG9ubHkgdG8gaW5pdGlhbGl6ZSBscnVfY2FjaGVfb2JqZWN0IGF0dHJpYnV0ZSBtYXhzaXplICovCisgICAgICAgIG1heHNpemUgPSAtMTsKKyAgICB9IGVsc2UgaWYgKFB5SW5kZXhfQ2hlY2sobWF4c2l6ZV9PKSkgeworICAgICAgICBtYXhzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KG1heHNpemVfTywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChtYXhzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG1heHNpemUgPT0gMCkKKyAgICAgICAgICAgIHdyYXBwZXIgPSB1bmNhY2hlZF9scnVfY2FjaGVfd3JhcHBlcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd3JhcHBlciA9IGJvdW5kZWRfbHJ1X2NhY2hlX3dyYXBwZXI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1heHNpemUgc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIShjYWNoZWRpY3QgPSBQeURpY3RfTmV3KCkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG9iaiA9IChscnVfY2FjaGVfb2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihjYWNoZWRpY3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvYmotPmNhY2hlID0gY2FjaGVkaWN0OworICAgIG9iai0+cm9vdC5wcmV2ID0gJm9iai0+cm9vdDsKKyAgICBvYmotPnJvb3QubmV4dCA9ICZvYmotPnJvb3Q7CisgICAgb2JqLT5tYXhzaXplID0gbWF4c2l6ZTsKKyAgICBQeV9JTkNSRUYobWF4c2l6ZV9PKTsKKyAgICBvYmotPm1heHNpemVfTyA9IG1heHNpemVfTzsKKyAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgb2JqLT5mdW5jID0gZnVuYzsKKyAgICBvYmotPndyYXBwZXIgPSB3cmFwcGVyOworICAgIG9iai0+bWlzc2VzID0gb2JqLT5oaXRzID0gMDsKKyAgICBvYmotPnR5cGVkID0gdHlwZWQ7CisgICAgUHlfSU5DUkVGKGNhY2hlX2luZm9fdHlwZSk7CisgICAgb2JqLT5jYWNoZV9pbmZvX3R5cGUgPSBjYWNoZV9pbmZvX3R5cGU7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopb2JqOworfQorCitzdGF0aWMgbHJ1X2xpc3RfZWxlbSAqCitscnVfY2FjaGVfdW5saW5rX2xpc3QobHJ1X2NhY2hlX29iamVjdCAqc2VsZikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpyb290ID0gJnNlbGYtPnJvb3Q7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGluayA9IHJvb3QtPm5leHQ7CisgICAgaWYgKGxpbmsgPT0gcm9vdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcm9vdC0+cHJldi0+bmV4dCA9IE5VTEw7CisgICAgcm9vdC0+bmV4dCA9IHJvb3QtPnByZXYgPSByb290OworICAgIHJldHVybiBsaW5rOworfQorCitzdGF0aWMgdm9pZAorbHJ1X2NhY2hlX2NsZWFyX2xpc3QobHJ1X2xpc3RfZWxlbSAqbGluaykKK3sKKyAgICB3aGlsZSAobGluayAhPSBOVUxMKSB7CisgICAgICAgIGxydV9saXN0X2VsZW0gKm5leHQgPSBsaW5rLT5uZXh0OworICAgICAgICBQeV9ERUNSRUYobGluayk7CisgICAgICAgIGxpbmsgPSBuZXh0OworICAgIH0KK30KKworc3RhdGljIHZvaWQKK2xydV9jYWNoZV9kZWFsbG9jKGxydV9jYWNoZV9vYmplY3QgKm9iaikKK3sKKyAgICBscnVfbGlzdF9lbGVtICpsaXN0ID0gbHJ1X2NhY2hlX3VubGlua19saXN0KG9iaik7CisgICAgUHlfWERFQ1JFRihvYmotPm1heHNpemVfTyk7CisgICAgUHlfWERFQ1JFRihvYmotPmZ1bmMpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZSk7CisgICAgUHlfWERFQ1JFRihvYmotPmRpY3QpOworICAgIFB5X1hERUNSRUYob2JqLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIFB5X1RZUEUob2JqKS0+dHBfZnJlZShvYmopOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2NhbGwobHJ1X2NhY2hlX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHJldHVybiBzZWxmLT53cmFwcGVyKHNlbGYsIGFyZ3MsIGt3ZHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHJ1X2NhY2hlX2Rlc2NyX2dldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnR5cGUpCit7CisgICAgaWYgKG9iaiA9PSBQeV9Ob25lIHx8IG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgfQorICAgIHJldHVybiBQeU1ldGhvZF9OZXcoc2VsZiwgb2JqKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9pbmZvKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5jYWNoZV9pbmZvX3R5cGUsICJubk9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhpdHMsIHNlbGYtPm1pc3Nlcywgc2VsZi0+bWF4c2l6ZV9PLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X1NpemUoc2VsZi0+Y2FjaGUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xydV9jYWNoZV9jYWNoZV9jbGVhcihscnVfY2FjaGVfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpc3QgPSBscnVfY2FjaGVfdW5saW5rX2xpc3Qoc2VsZik7CisgICAgc2VsZi0+aGl0cyA9IHNlbGYtPm1pc3NlcyA9IDA7CisgICAgc2VsZi0+ZnVsbCA9IDA7CisgICAgUHlEaWN0X0NsZWFyKHNlbGYtPmNhY2hlKTsKKyAgICBscnVfY2FjaGVfY2xlYXJfbGlzdChsaXN0KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX3RyYXZlcnNlKGxydV9jYWNoZV9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIGxydV9saXN0X2VsZW0gKmxpbmsgPSBzZWxmLT5yb290Lm5leHQ7CisgICAgd2hpbGUgKGxpbmsgIT0gJnNlbGYtPnJvb3QpIHsKKyAgICAgICAgbHJ1X2xpc3RfZWxlbSAqbmV4dCA9IGxpbmstPm5leHQ7CisgICAgICAgIFB5X1ZJU0lUKGxpbmspOworICAgICAgICBsaW5rID0gbmV4dDsKKyAgICB9CisgICAgUHlfVklTSVQoc2VsZi0+bWF4c2l6ZV9PKTsKKyAgICBQeV9WSVNJVChzZWxmLT5mdW5jKTsKKyAgICBQeV9WSVNJVChzZWxmLT5jYWNoZSk7CisgICAgUHlfVklTSVQoc2VsZi0+Y2FjaGVfaW5mb190eXBlKTsKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorbHJ1X2NhY2hlX3RwX2NsZWFyKGxydV9jYWNoZV9vYmplY3QgKnNlbGYpCit7CisgICAgbHJ1X2xpc3RfZWxlbSAqbGlzdCA9IGxydV9jYWNoZV91bmxpbmtfbGlzdChzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYXhzaXplX08pOworICAgIFB5X0NMRUFSKHNlbGYtPmZ1bmMpOworICAgIFB5X0NMRUFSKHNlbGYtPmNhY2hlKTsKKyAgICBQeV9DTEVBUihzZWxmLT5jYWNoZV9pbmZvX3R5cGUpOworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIGxydV9jYWNoZV9jbGVhcl9saXN0KGxpc3QpOworICAgIHJldHVybiAwOworfQorCisKK1B5RG9jX1NUUlZBUihscnVfY2FjaGVfZG9jLAorIkNyZWF0ZSBhIGNhY2hlZCBjYWxsYWJsZSB0aGF0IHdyYXBzIGFub3RoZXIgZnVuY3Rpb24uXG5cCitcblwKK3VzZXJfZnVuY3Rpb246ICAgICAgdGhlIGZ1bmN0aW9uIGJlaW5nIGNhY2hlZFxuXAorXG5cCittYXhzaXplOiAgMCAgICAgICAgIGZvciBubyBjYWNoaW5nXG5cCisgICAgICAgICAgTm9uZSAgICAgIGZvciB1bmxpbWl0ZWQgY2FjaGUgc2l6ZVxuXAorICAgICAgICAgIG4gICAgICAgICBmb3IgYSBib3VuZGVkIGNhY2hlXG5cCitcblwKK3R5cGVkOiAgICBGYWxzZSAgICAgY2FjaGUgZigzKSBhbmQgZigzLjApIGFzIGlkZW50aWNhbCBjYWxsc1xuXAorICAgICAgICAgIFRydWUgICAgICBjYWNoZSBmKDMpIGFuZCBmKDMuMCkgYXMgZGlzdGluY3QgY2FsbHNcblwKK1xuXAorY2FjaGVfaW5mb190eXBlOiAgICBuYW1lZHR1cGxlIGNsYXNzIHdpdGggdGhlIGZpZWxkczpcblwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpdHMgbWlzc2VzIGN1cnJzaXplIG1heHNpemVcbiIKKyk7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBscnVfY2FjaGVfbWV0aG9kc1tdID0geworICAgIHsiY2FjaGVfaW5mbyIsIChQeUNGdW5jdGlvbilscnVfY2FjaGVfY2FjaGVfaW5mbywgTUVUSF9OT0FSR1N9LAorICAgIHsiY2FjaGVfY2xlYXIiLCAoUHlDRnVuY3Rpb24pbHJ1X2NhY2hlX2NhY2hlX2NsZWFyLCBNRVRIX05PQVJHU30sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgbHJ1X2NhY2hlX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgbHJ1X2NhY2hlX3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImZ1bmN0b29scy5fbHJ1X2NhY2hlX3dyYXBwZXIiLCAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihscnVfY2FjaGVfb2JqZWN0KSwgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWxydV9jYWNoZV9kZWFsbG9jLCAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICh0ZXJuYXJ5ZnVuYylscnVfY2FjaGVfY2FsbCwgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEV8UHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbHJ1X2NhY2hlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylscnVfY2FjaGVfdHBfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlscnVfY2FjaGVfdHBfY2xlYXIsICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBscnVfY2FjaGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGxydV9jYWNoZV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgbHJ1X2NhY2hlX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2YobHJ1X2NhY2hlX29iamVjdCwgZGljdCksICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGxydV9jYWNoZV9uZXcsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKwogLyogbW9kdWxlIGxldmVsIGNvZGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLApAQCAtNTQ4LDYgKzExNDYsMTEgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAorc3RhdGljIHZvaWQKK21vZHVsZV9mcmVlKHZvaWQgKm0pCit7CisgICAgUHlfQ0xFQVIoa3dkX21hcmspOworfQogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9mdW5jdG9vbHNtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULApAQCAtNTU4LDcgKzExNjEsNyBAQAogICAgIE5VTEwsCiAgICAgTlVMTCwKICAgICBOVUxMLAotICAgIE5VTEwKKyAgICBtb2R1bGVfZnJlZSwKIH07CiAKIFB5TU9ESU5JVF9GVU5DCkBAIC01NjksNiArMTE3Miw3IEBACiAgICAgY2hhciAqbmFtZTsKICAgICBQeVR5cGVPYmplY3QgKnR5cGVsaXN0W10gPSB7CiAgICAgICAgICZwYXJ0aWFsX3R5cGUsCisgICAgICAgICZscnVfY2FjaGVfdHlwZSwKICAgICAgICAgTlVMTAogICAgIH07CiAKQEAgLTU3Niw2ICsxMTgwLDEyIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBrd2RfbWFyayA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5QmFzZU9iamVjdF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoIWt3ZF9tYXJrKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgZm9yIChpPTAgOyB0eXBlbGlzdFtpXSAhPSBOVUxMIDsgaSsrKSB7CiAgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZWxpc3RbaV0pIDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCmluZGV4IDIyOWUxNmUuLmYwNzBhMTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKQEAgLTE2LDE3ICsxNiwyMyBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJtX3N0cmVycm9yKGdkYm1fZXJyb3IpOwogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfZ2RibQorY2xhc3MgX2dkYm0uZ2RibSAiZGJtb2JqZWN0ICoiICImRGJtdHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTExMzkyN2M2MTcwNzI5YjJdKi8KKwogUHlEb2NfU1RSVkFSKGdkYm1tb2R1bGVfX2RvY19fLAogIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgR05VIERCTSAoR0RCTSkgbGlicmFyeS5cblwKIFxuXAogVGhpcyBtb2R1bGUgaXMgcXVpdGUgc2ltaWxhciB0byB0aGUgZGJtIG1vZHVsZSwgYnV0IHVzZXMgR0RCTSBpbnN0ZWFkIHRvXG5cCi1wcm92aWRlIHNvbWUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5LiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBmaWxlIGZvcm1hdHNcblwKLWNyZWF0ZWQgYnkgR0RCTSBhbmQgZGJtIGFyZSBpbmNvbXBhdGlibGUuIFxuXAorcHJvdmlkZSBzb21lIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eS4gIFBsZWFzZSBub3RlIHRoYXQgdGhlIGZpbGUgZm9ybWF0c1xuXAorY3JlYXRlZCBieSBHREJNIGFuZCBkYm0gYXJlIGluY29tcGF0aWJsZS5cblwKIFxuXAogR0RCTSBvYmplY3RzIGJlaGF2ZSBsaWtlIG1hcHBpbmdzIChkaWN0aW9uYXJpZXMpLCBleGNlcHQgdGhhdCBrZXlzIGFuZFxuXAotdmFsdWVzIGFyZSBhbHdheXMgc3RyaW5ncy4gUHJpbnRpbmcgYSBHREJNIG9iamVjdCBkb2Vzbid0IHByaW50IHRoZVxuXAota2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kIHZhbHVlcygpIG1ldGhvZHMgYXJlIG5vdFxuXAotc3VwcG9ydGVkLiIpOwordmFsdWVzIGFyZSBhbHdheXMgaW1tdXRhYmxlIGJ5dGVzLWxpa2Ugb2JqZWN0cyBvciBzdHJpbmdzLiAgUHJpbnRpbmdcblwKK2EgR0RCTSBvYmplY3QgZG9lc24ndCBwcmludCB0aGUga2V5cyBhbmQgdmFsdWVzLCBhbmQgdGhlIGl0ZW1zKCkgYW5kXG5cCit2YWx1ZXMoKSBtZXRob2RzIGFyZSBub3Qgc3VwcG9ydGVkLiIpOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMzYsNiArNDIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IERibXR5cGU7CiAKKyNpbmNsdWRlICJjbGluaWMvX2dkYm1tb2R1bGUuYy5oIgorCiAjZGVmaW5lIGlzX2RibW9iamVjdCh2KSAoUHlfVFlQRSh2KSA9PSAmRGJtdHlwZSkKICNkZWZpbmUgY2hlY2tfZGJtb2JqZWN0X29wZW4odikgaWYgKCh2KS0+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+b2sgPSAwOwotICAgIHNlbGYtPmRldGFjaGVkID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSYW5kb20iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaWYgKF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUocmF3LCBQeV9UcnVlKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT5yYXcpOwotICAgIFB5X0lOQ1JFRihyYXcpOwotICAgIHNlbGYtPnJhdyA9IHJhdzsKLSAgICBzZWxmLT5idWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplOwotICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKLSAgICBzZWxmLT53cml0YWJsZSA9IDE7Ci0KLSAgICBpZiAoX2J1ZmZlcmVkX2luaXQoc2VsZikgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgX2J1ZmZlcmVkcmVhZGVyX3Jlc2V0X2J1ZihzZWxmKTsKLSAgICBfYnVmZmVyZWR3cml0ZXJfcmVzZXRfYnVmKHNlbGYpOwotICAgIHNlbGYtPnBvcyA9IDA7Ci0KLSAgICBzZWxmLT5mYXN0X2Nsb3NlZF9jaGVja3MgPSAoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJhbmRvbV9UeXBlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmF3KSA9PSAmUHlGaWxlSU9fVHlwZSk7Ci0KLSAgICBzZWxmLT5vayA9IDE7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU1ldGhvZERlZiBidWZmZXJlZHJhbmRvbV9tZXRob2RzW10gPSB7CiAgICAgLyogQnVmZmVyZWRJT01peGluIG1ldGhvZHMgKi8KICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2Nsb3NlLCBNRVRIX05PQVJHU30sCkBAIC0yNTc3LDE1ICsyNjY5LDE2IEBACiAKICAgICB7ImZsdXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX2ZsdXNoLCBNRVRIX05PQVJHU30sCiAKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2VlaywgTUVUSF9WQVJBUkdTfSwKKyAgICBfSU9fX0JVRkZFUkVEX1NFRUtfTUVUSE9EREVGCiAgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZDEiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZDEsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicGVlayIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWR3cml0ZXJfd3JpdGUsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9SRUFEMV9NRVRIT0RERUYKKyAgICBfSU9fX0JVRkZFUkVEX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRgorICAgIF9JT19fQlVGRkVSRURfUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX19CVUZGRVJFRF9QRUVLX01FVEhPRERFRgorICAgIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYKICAgICB7Il9fc2l6ZW9mX18iLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfc2l6ZW9mLCBNRVRIX05PQVJHU30sCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMjYyNiw3ICsyNzE5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgLyp0cF9mbGFncyovCi0gICAgYnVmZmVyZWRyYW5kb21fZG9jLCAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpYnVmZmVyZWRfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpYnVmZmVyZWRfY2xlYXIsICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCkBAIC0yNjQxLDcgKzI3MzQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgb2Zmc2V0b2YoYnVmZmVyZWQsIGRpY3QpLCAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylidWZmZXJlZHJhbmRvbV9pbml0LCAvKiB0cF9pbml0ICovCisgICAgX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fLCAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKaW5kZXggYjU1YWI3Mi4uMzFjYzFmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jCisrKyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwpAQCAtMiwxMiArMiwxNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIiAgICAgICAvKiBmb3Igb2Zmc2V0b2YoKSAqLwogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uQnl0ZXNJTyAiYnl0ZXNpbyAqIiAiJlB5Qnl0ZXNJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2Y1MGVjMDM0ZjVjMGIyNl0qLworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIGNoYXIgKmJ1ZjsKKyAgICBQeU9iamVjdCAqYnVmOwogICAgIFB5X3NzaXplX3QgcG9zOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX3NpemU7Ci0gICAgc2l6ZV90IGJ1Zl9zaXplOwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKICAgICBQeV9zc2l6ZV90IGV4cG9ydHM7CkBAIC0xOCw2ICsyMywxMiBAQAogICAgIGJ5dGVzaW8gKnNvdXJjZTsKIH0gYnl0ZXNpb2J1ZjsKIAorLyogVGhlIGJ5dGVzaW8gb2JqZWN0IGNhbiBiZSBpbiB0aHJlZSBzdGF0ZXM6CisgICogUHlfUkVGQ05UKGJ1ZikgPT0gMSwgZXhwb3J0cyA9PSAwLgorICAqIFB5X1JFRkNOVChidWYpID4gMS4gIGV4cG9ydHMgPT0gMCwKKyAgICBmaXJzdCBtb2RpZmljYXRpb24gb3IgZXhwb3J0IGNhdXNlcyB0aGUgaW50ZXJuYWwgYnVmZmVyIGNvcHlpbmcuCisgICogZXhwb3J0cyA+IDAuICBQeV9SRUZDTlQoYnVmKSA9PSAxLCBhbnkgbW9kaWZpY2F0aW9ucyBhcmUgZm9yYmlkZGVuLgorKi8KIAogI2RlZmluZSBDSEVDS19DTE9TRUQoc2VsZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGlmICgoc2VsZiktPmJ1ZiA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMzMsNDAgKzQ0LDY0IEBACiAgICAgICAgIHJldHVybiBOVUxMOyBcCiAgICAgfQogCisjZGVmaW5lIFNIQVJFRF9CVUYoc2VsZikgKFB5X1JFRkNOVCgoc2VsZiktPmJ1ZikgPiAxKQorCiAKIC8qIEludGVybmFsIHJvdXRpbmUgdG8gZ2V0IGEgbGluZSBmcm9tIHRoZSBidWZmZXIgb2YgYSBCeXRlc0lPCiAgICBvYmplY3QuIFJldHVybnMgdGhlIGxlbmd0aCBiZXR3ZWVuIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvIHRoZQogICAgbmV4dCBuZXdsaW5lIGNoYXJhY3Rlci4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfbGluZShieXRlc2lvICpzZWxmLCBjaGFyICoqb3V0cHV0KQorc2Nhbl9lb2woYnl0ZXNpbyAqc2VsZiwgUHlfc3NpemVfdCBsZW4pCiB7Ci0gICAgY2hhciAqbjsKLSAgICBjb25zdCBjaGFyICpzdHJfZW5kOwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCAqbjsKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKIAogICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHNlbGYtPnBvcyA+PSAwKTsKKworICAgIGlmIChzZWxmLT5wb3MgPj0gc2VsZi0+c3RyaW5nX3NpemUpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogTW92ZSB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLCB1cCB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHMuICovCi0gICAgc3RyX2VuZCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnN0cmluZ19zaXplOwotICAgIGZvciAobiA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKLSAgICAgICAgIG4gPCBzdHJfZW5kICYmICpuICE9ICdcbic7Ci0gICAgICAgICBuKyspOworICAgIG1heGxlbiA9IHNlbGYtPnN0cmluZ19zaXplIC0gc2VsZi0+cG9zOworICAgIGlmIChsZW4gPCAwIHx8IGxlbiA+IG1heGxlbikKKyAgICAgICAgbGVuID0gbWF4bGVuOwogCi0gICAgLyogU2tpcCB0aGUgbmV3bGluZSBjaGFyYWN0ZXIgKi8KLSAgICBpZiAobiA8IHN0cl9lbmQpCi0gICAgICAgIG4rKzsKLQotICAgIC8qIEdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4gKi8KLSAgICBsZW4gPSBuIC0gKHNlbGYtPmJ1ZiArIHNlbGYtPnBvcyk7Ci0gICAgKm91dHB1dCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKLQorICAgIGlmIChsZW4pIHsKKyAgICAgICAgc3RhcnQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgICAgICBuID0gbWVtY2hyKHN0YXJ0LCAnXG4nLCBsZW4pOworICAgICAgICBpZiAobikKKyAgICAgICAgICAgIC8qIEdldCB0aGUgbGVuZ3RoIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8gdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgdGhlIGxpbmUuICovCisgICAgICAgICAgICBsZW4gPSBuIC0gc3RhcnQgKyAxOworICAgIH0KICAgICBhc3NlcnQobGVuID49IDApOwogICAgIGFzc2VydChzZWxmLT5wb3MgPCBQWV9TU0laRV9UX01BWCAtIGxlbik7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKIAogICAgIHJldHVybiBsZW47CiB9CiAKKy8qIEludGVybmFsIHJvdXRpbmUgZm9yIGRldGFjaGluZyB0aGUgc2hhcmVkIGJ1ZmZlciBvZiBCeXRlc0lPIG9iamVjdHMuCisgICBUaGUgY2FsbGVyIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgJ3NpemUnIGFyZ3VtZW50IGlzIG5vbi1uZWdhdGl2ZSBhbmQKKyAgIG5vdCBsZXNzZXIgdGhhbiBzZWxmLT5zdHJpbmdfc2l6ZS4gIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSBvdGhlcndpc2UuICovCitzdGF0aWMgaW50Cit1bnNoYXJlX2J1ZmZlcihieXRlc2lvICpzZWxmLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqbmV3X2J1ZiwgKm9sZF9idWY7CisgICAgYXNzZXJ0KFNIQVJFRF9CVUYoc2VsZikpOworICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOworICAgIGFzc2VydChzaXplID49IChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpOworICAgIG5ld19idWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmIChuZXdfYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2J1ZiksIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZiksCisgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBvbGRfYnVmID0gc2VsZi0+YnVmOworICAgIHNlbGYtPmJ1ZiA9IG5ld19idWY7CisgICAgUHlfREVDUkVGKG9sZF9idWYpOworICAgIHJldHVybiAwOworfQorCiAvKiBJbnRlcm5hbCByb3V0aW5lIGZvciBjaGFuZ2luZyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIG9mIEJ5dGVzSU8gb2JqZWN0cy4KICAgIFRoZSBjYWxsZXIgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSAnc2l6ZScgYXJndW1lbnQgaXMgbm9uLW5lZ2F0aXZlLiAgUmV0dXJucwogICAgMCBvbiBzdWNjZXNzLCAtMSBvdGhlcndpc2UuICovCkBAIC03NSw4ICsxMTAsNyBAQAogewogICAgIC8qIEhlcmUsIHVuc2lnbmVkIHR5cGVzIGFyZSB1c2VkIHRvIGF2b2lkIGRlYWxpbmcgd2l0aCBzaWduZWQgaW50ZWdlcgogICAgICAgIG92ZXJmbG93LCB3aGljaCBpcyB1bmRlZmluZWQgaW4gQy4gKi8KLSAgICBzaXplX3QgYWxsb2MgPSBzZWxmLT5idWZfc2l6ZTsKLSAgICBjaGFyICpuZXdfYnVmID0gTlVMTDsKKyAgICBzaXplX3QgYWxsb2MgPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmJ1Zik7CiAKICAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOwogCkBAIC0xMDQsMTMgKzEzOCwxNSBAQAogCiAgICAgaWYgKGFsbG9jID4gKChzaXplX3QpLTEpIC8gc2l6ZW9mKGNoYXIpKQogICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgIG5ld19idWYgPSAoY2hhciAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+YnVmLCBhbGxvYyAqIHNpemVvZihjaGFyKSk7Ci0gICAgaWYgKG5ld19idWYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoU0hBUkVEX0JVRihzZWxmKSkgeworICAgICAgICBpZiAodW5zaGFyZV9idWZmZXIoc2VsZiwgYWxsb2MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgc2VsZi0+YnVmX3NpemUgPSBhbGxvYzsKLSAgICBzZWxmLT5idWYgPSBuZXdfYnVmOworICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZzZWxmLT5idWYsIGFsbG9jKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTEyNSwxMiArMTYxLDE4IEBACiBzdGF0aWMgUHlfc3NpemVfdAogd3JpdGVfYnl0ZXMoYnl0ZXNpbyAqc2VsZiwgY29uc3QgY2hhciAqYnl0ZXMsIFB5X3NzaXplX3QgbGVuKQogeworICAgIHNpemVfdCBlbmRwb3M7CiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKICAgICBhc3NlcnQoc2VsZi0+cG9zID49IDApOwogICAgIGFzc2VydChsZW4gPj0gMCk7CiAKLSAgICBpZiAoKHNpemVfdClzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5idWZfc2l6ZSkgewotICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCAoc2l6ZV90KXNlbGYtPnBvcyArIGxlbikgPCAwKQorICAgIGVuZHBvcyA9IChzaXplX3Qpc2VsZi0+cG9zICsgbGVuOworICAgIGlmIChlbmRwb3MgPiAoc2l6ZV90KVB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+YnVmKSkgeworICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBlbmRwb3MpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSBpZiAoU0hBUkVEX0JVRihzZWxmKSkgeworICAgICAgICBpZiAodW5zaGFyZV9idWZmZXIoc2VsZiwgUHlfTUFYKGVuZHBvcywgKHNpemVfdClzZWxmLT5zdHJpbmdfc2l6ZSkpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTE0MywxOCArMTg1LDE4IEBACiAgICAgICAgICAgfCAgIHwgICAgICAgICAgICA8LS10byBwYWQtLT58PC0tLXRvIHdyaXRlLS0tPiAgICB8CiAgICAgICAgICAgMCAgIGJ1ZiAgICAgICAgICAgICAgICAgICBwb3NpdGlvbgogICAgICAgICAqLwotICAgICAgICBtZW1zZXQoc2VsZi0+YnVmICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCisgICAgICAgIG1lbXNldChQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+c3RyaW5nX3NpemUsICdcMCcsCiAgICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKGNoYXIpKTsKICAgICB9CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsIG92ZXJ3cml0aW5nIHNvbWUgb2YgdGhlIGV4aXN0aW5nCiAgICAgICAgZGF0YSBpZiBzZWxmLT5wb3MgPCBzZWxmLT5zdHJpbmdfc2l6ZS4gKi8KLSAgICBtZW1jcHkoc2VsZi0+YnVmICsgc2VsZi0+cG9zLCBieXRlcywgbGVuKTsKLSAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zLCBieXRlcywgbGVuKTsKKyAgICBzZWxmLT5wb3MgPSBlbmRwb3M7CiAKICAgICAvKiBTZXQgdGhlIG5ldyBsZW5ndGggb2YgdGhlIGludGVybmFsIHN0cmluZyBpZiBpdCBoYXMgY2hhbmdlZC4gKi8KLSAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPCBzZWxmLT5wb3MpIHsKLSAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzZWxmLT5wb3M7CisgICAgaWYgKChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUgPCBlbmRwb3MpIHsKKyAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBlbmRwb3M7CiAgICAgfQogCiAgICAgcmV0dXJuIGxlbjsKQEAgLTE3MSw0MCArMjEzLDcxIEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIocmVhZGFibGVfZG9jLAotInJlYWRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkYWJsZQogCi1QeURvY19TVFJWQVIod3JpdGFibGVfZG9jLAotIndyaXRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7CitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgcmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKHNlZWthYmxlX2RvYywKLSJzZWVrYWJsZSgpIC0+IGJvb2wuIFJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuIik7Ci0KLS8qIEdlbmVyaWMgZ2V0dGVyIGZvciB0aGUgd3JpdGFibGUsIHJlYWRhYmxlIGFuZCBzZWVrYWJsZSBwcm9wZXJ0aWVzICovCiBzdGF0aWMgUHlPYmplY3QgKgotcmV0dXJuX25vdF9jbG9zZWQoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX3JlYWRhYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZTkzODIyYWQ1YjYyMjYzIGlucHV0PTk2YzVkMGNjY2ZiMjlmNWNdKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihmbHVzaF9kb2MsCi0iZmx1c2goKSAtPiBOb25lLiAgRG9lcyBub3RoaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ud3JpdGFibGUKKworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX2ZsdXNoKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT193cml0YWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjRmZjZhMjU0YjExNTBiOCBpbnB1dD03MDBlZWQ4MDgyNzc1NjBhXSovCit7CisgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5zZWVrYWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fc2Vla2FibGVfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiNDE3ZjQ2ZGNjMDliNTYgaW5wdXQ9OTQyMWY2NTYyN2EzNDRkZF0qLworeworICAgIENIRUNLX0NMT1NFRChzZWxmKTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uZmx1c2gKKworRG9lcyBub3RoaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZmx1c2hfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4N2UzZDc4MWNhMTM0YTAgaW5wdXQ9NTYxZWE0OTBiZTQ1ODFhN10qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldGJ1ZmZlcl9kb2MsCi0iZ2V0YnVmZmVyKCkgLT4gYnl0ZXMuXG4iCi0iXG4iCi0iR2V0IGEgcmVhZC13cml0ZSB2aWV3IG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmdldGJ1ZmZlcgorCitHZXQgYSByZWFkLXdyaXRlIHZpZXcgb3ZlciB0aGUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19nZXRidWZmZXIoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKGJ5dGVzaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzJjZDdjNmUxM2FhMDllZCBpbnB1dD04ZjczOGVmNjE1ODY1MTc2XSovCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gJl9QeUJ5dGVzSU9CdWZmZXJfVHlwZTsKICAgICBieXRlc2lvYnVmICpidWY7CkBAIC0yMjIsNTkgKzI5NSwxMDQgQEAKICAgICByZXR1cm4gdmlldzsKIH0KIAotUHlEb2NfU1RSVkFSKGdldHZhbF9kb2MsCi0iZ2V0dmFsdWUoKSAtPiBieXRlcy5cbiIKLSJcbiIKLSJSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLmdldHZhbHVlCisKK1JldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIEJ5dGVzSU8gb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19nZXR2YWx1ZShieXRlc2lvICpzZWxmKQorX2lvX0J5dGVzSU9fZ2V0dmFsdWVfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIzZjZhMzIzM2M4ZmQ2MjggaW5wdXQ9NGI0MDNhYzBhZjM5NzNlZF0qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5idWYsIHNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPD0gMSB8fCBzZWxmLT5leHBvcnRzID4gMCkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUpOworCisgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+YnVmKSkgeworICAgICAgICBpZiAoU0hBUkVEX0JVRihzZWxmKSkgeworICAgICAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKHNlbGYsIHNlbGYtPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZzZWxmLT5idWYsIHNlbGYtPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfSU5DUkVGKHNlbGYtPmJ1Zik7CisgICAgcmV0dXJuIHNlbGYtPmJ1ZjsKIH0KIAotUHlEb2NfU1RSVkFSKGlzYXR0eV9kb2MsCi0iaXNhdHR5KCkgLT4gRmFsc2UuXG4iCi0iXG4iCi0iQWx3YXlzIHJldHVybnMgRmFsc2Ugc2luY2UgQnl0ZXNJTyBvYmplY3RzIGFyZSBub3QgY29ubmVjdGVkXG4iCi0idG8gYSB0dHktbGlrZSBkZXZpY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5pc2F0dHkKKworQWx3YXlzIHJldHVybnMgRmFsc2UuCisKK0J5dGVzSU8gb2JqZWN0cyBhcmUgbm90IGNvbm5lY3RlZCB0byBhIFRUWS1saWtlIGRldmljZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9faXNhdHR5KGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChieXRlc2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmNjc3MTJlNjY5ZjZjOGYgaW5wdXQ9NmY5N2YwOTg1ZDEzZjgyN10qLwogewogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLVB5RG9jX1NUUlZBUih0ZWxsX2RvYywKLSJ0ZWxsKCkgLT4gY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnRlbGwKKworQ3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb190ZWxsKGJ5dGVzaW8gKnNlbGYpCitfaW9fQnl0ZXNJT190ZWxsX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNTRiMGY5M2NkMGU1ZTFkIGlucHV0PWIxMDZhZGYwOTljYjM2NTddKi8KIHsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MpOwogfQogCi1QeURvY19TVFJWQVIocmVhZF9kb2MsCi0icmVhZChbc2l6ZV0pIC0+IHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKLSJcbiIKLSJJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC5cbiIKLSJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKK3N0YXRpYyBQeU9iamVjdCAqCityZWFkX2J5dGVzKGJ5dGVzaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpvdXRwdXQ7CisKKyAgICBhc3NlcnQoc2VsZi0+YnVmICE9IE5VTEwpOworICAgIGFzc2VydChzaXplIDw9IHNlbGYtPnN0cmluZ19zaXplKTsKKyAgICBpZiAoc2l6ZSA+IDEgJiYKKyAgICAgICAgc2VsZi0+cG9zID09IDAgJiYgc2l6ZSA9PSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPmJ1ZikgJiYKKyAgICAgICAgc2VsZi0+ZXhwb3J0cyA9PSAwKSB7CisgICAgICAgIHNlbGYtPnBvcyArPSBzaXplOworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+YnVmKTsKKyAgICAgICAgcmV0dXJuIHNlbGYtPmJ1ZjsKKyAgICB9CisKKyAgICBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgIHNlbGYtPnBvcyArPSBzaXplOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKG91dHB1dCwgc2l6ZSk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5CeXRlc0lPLnJlYWQKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LgorCitJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fcmVhZF9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVkYWNiNTM1YzFlMTc4MSBpbnB1dD1jYzdiYTRhNzk3YmIxNTU1XSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuOwotICAgIGNoYXIgKm91dHB1dDsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMjk4LDUyICs0MTYsNDggQEAKICAgICAgICAgICAgIHNpemUgPSAwOwogICAgIH0KIAotICAgIGFzc2VydChzZWxmLT5idWYgIT0gTlVMTCk7Ci0gICAgb3V0cHV0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwotICAgIHNlbGYtPnBvcyArPSBzaXplOwotCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3V0cHV0LCBzaXplKTsKKyAgICByZXR1cm4gcmVhZF9ieXRlcyhzZWxmLCBzaXplKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmVhZDFfZG9jLAotInJlYWQxKHNpemUpIC0+IHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKLSJcbiIKLSJJZiB0aGUgc2l6ZSBhcmd1bWVudCBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZDEKKyAgICBzaXplOiBvYmplY3QKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBhIGJ5dGVzIG9iamVjdC4KKworSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkMShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqbikKK19pb19CeXRlc0lPX3JlYWQxKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE2MDIxZjVkMGFjM2Q0ZTIgaW5wdXQ9ZDRmNDBiYjhmMmY5OTQxOF0qLwogewotICAgIFB5T2JqZWN0ICphcmcsICpyZXM7Ci0KLSAgICBhcmcgPSBQeVR1cGxlX1BhY2soMSwgbik7Ci0gICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgID0gYnl0ZXNpb19yZWFkKHNlbGYsIGFyZyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOwogfQogCi1QeURvY19TVFJWQVIocmVhZGxpbmVfZG9jLAotInJlYWRsaW5lKFtzaXplXSkgLT4gbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgotIlxuIgotIlJldGFpbiBuZXdsaW5lLiAgQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCBsaW1pdHMgdGhlIG1heGltdW1cbiIKLSJudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIChhbiBpbmNvbXBsZXRlIGxpbmUgbWF5IGJlIHJldHVybmVkIHRoZW4pLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkbGluZQorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitOZXh0IGxpbmUgZnJvbSB0aGUgZmlsZSwgYXMgYSBieXRlcyBvYmplY3QuCisKK1JldGFpbiBuZXdsaW5lLiAgQSBub24tbmVnYXRpdmUgc2l6ZSBhcmd1bWVudCBsaW1pdHMgdGhlIG1heGltdW0KK251bWJlciBvZiBieXRlcyB0byByZXR1cm4gKGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQgdGhlbikuCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fcmVhZGxpbmUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWMyMTE1NTM0YTRmOTI3NiBpbnB1dD1jYTMxZjA2ZGU2ZWFiMjU3XSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuOwotICAgIGNoYXIgKm91dHB1dDsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZGxpbmUiLCAmYXJnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3QoYXJnKTsKICAgICAgICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTM1OSwzNyArNDczLDMzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG4gPSBnZXRfbGluZShzZWxmLCAmb3V0cHV0KTsKKyAgICBuID0gc2Nhbl9lb2woc2VsZiwgc2l6ZSk7CiAKLSAgICBpZiAoc2l6ZSA+PSAwICYmIHNpemUgPCBuKSB7Ci0gICAgICAgIHNpemUgPSBuIC0gc2l6ZTsKLSAgICAgICAgbiAtPSBzaXplOwotICAgICAgICBzZWxmLT5wb3MgLT0gc2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShvdXRwdXQsIG4pOworICAgIHJldHVybiByZWFkX2J5dGVzKHNlbGYsIG4pOwogfQogCi1QeURvY19TVFJWQVIocmVhZGxpbmVzX2RvYywKLSJyZWFkbGluZXMoW3NpemVdKSAtPiBsaXN0IG9mIHN0cmluZ3MsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuXG4iCi0iXG4iCi0iQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIHNvIHJlYWQuXG4iCi0iVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcbiIKLSJ0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5yZWFkbGluZXMKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworTGlzdCBvZiBieXRlcyBvYmplY3RzLCBlYWNoIGEgbGluZSBmcm9tIHRoZSBmaWxlLgorCitDYWxsIHJlYWRsaW5lKCkgcmVwZWF0ZWRseSBhbmQgcmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgc28gcmVhZC4KK1RoZSBvcHRpb25hbCBzaXplIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4gYXBwcm94aW1hdGUgYm91bmQgb24gdGhlCit0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkbGluZXMoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5YjhlMzRjODgwODA4ZmYgaW5wdXQ9NjkxYWExMzE0ZjJjMmE4N10qLwogewogICAgIFB5X3NzaXplX3QgbWF4c2l6ZSwgc2l6ZSwgbjsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqbGluZTsKICAgICBjaGFyICpvdXRwdXQ7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJlYWRsaW5lcyIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBtYXhzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAobWF4c2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtNDEwLDcgKzUyMCw5IEBACiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgd2hpbGUgKChuID0gZ2V0X2xpbmUoc2VsZiwgJm91dHB1dCkpICE9IDApIHsKKyAgICBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zOworICAgIHdoaWxlICgobiA9IHNjYW5fZW9sKHNlbGYsIC0xKSkgIT0gMCkgeworICAgICAgICBzZWxmLT5wb3MgKz0gbjsKICAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3V0cHV0LCBuKTsKICAgICAgICAgaWYgKCFsaW5lKQogICAgICAgICAgICAgZ290byBvbl9lcnJvcjsKQEAgLTQyMiw2ICs1MzQsNyBAQAogICAgICAgICBzaXplICs9IG47CiAgICAgICAgIGlmIChtYXhzaXplID4gMCAmJiBzaXplID49IG1heHNpemUpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgb3V0cHV0ICs9IG47CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiAKQEAgLTQzMCwyNSArNTQzLDI3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWFkaW50b19kb2MsCi0icmVhZGludG8oYnl0ZWFycmF5KSAtPiBpbnQuICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGIuXG4iCi0iXG4iCi0iUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKSwgb3IgTm9uZSBpZiB0aGUgb2JqZWN0XG4iCi0iaXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCisKK1JlYWQgdXAgdG8gbGVuKGJ1ZmZlcikgYnl0ZXMgaW50byBidWZmZXIuCisKK1JldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKDAgZm9yIEVPRiksIG9yIE5vbmUgaWYgdGhlIG9iamVjdAoraXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb19yZWFkaW50byhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChieXRlc2lvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNWQ0MDcyMTdkY2YwNjM5IGlucHV0PTcxNTgxZjMyNjM1YzNhMzFdKi8KIHsKLSAgICBQeV9idWZmZXIgYnVmZmVyOwogICAgIFB5X3NzaXplX3QgbGVuLCBuOwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KiIsICZidWZmZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIGFkanVzdCBpbnZhbGlkIHNpemVzICovCi0gICAgbGVuID0gYnVmZmVyLmxlbjsKKyAgICBsZW4gPSBidWZmZXItPmxlbjsKICAgICBuID0gc2VsZi0+c3RyaW5nX3NpemUgLSBzZWxmLT5wb3M7CiAgICAgaWYgKGxlbiA+IG4pIHsKICAgICAgICAgbGVuID0gbjsKQEAgLTQ1NiwzMyArNTcxLDM0IEBACiAgICAgICAgICAgICBsZW4gPSAwOwogICAgIH0KIAotICAgIG1lbWNweShidWZmZXIuYnVmLCBzZWxmLT5idWYgKyBzZWxmLT5wb3MsIGxlbik7CisgICAgbWVtY3B5KGJ1ZmZlci0+YnVmLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpICsgc2VsZi0+cG9zLCBsZW4pOwogICAgIGFzc2VydChzZWxmLT5wb3MgKyBsZW4gPCBQWV9TU0laRV9UX01BWCk7CiAgICAgYXNzZXJ0KGxlbiA+PSAwKTsKICAgICBzZWxmLT5wb3MgKz0gbGVuOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7CiB9CiAKLVB5RG9jX1NUUlZBUih0cnVuY2F0ZV9kb2MsCi0idHJ1bmNhdGUoW3NpemVdKSAtPiBpbnQuICBUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuXG4iCi0iXG4iCi0iU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuXG4iCi0iVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuICBSZXR1cm5zIHRoZSBuZXcgc2l6ZS5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8udHJ1bmNhdGUKKyAgICBzaXplIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzLgorCitTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS4KK1RoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLiAgUmV0dXJucyB0aGUgbmV3IHNpemUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3RydW5jYXRlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0J5dGVzSU9fdHJ1bmNhdGVfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZTZiZTYwZTY3ZGRkNjYgaW5wdXQ9MTFlZDE5NjY4MzU0NjJiYV0qLwogewogICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBDSEVDS19FWFBPUlRTKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgewogICAgICAgICBzaXplID0gUHlMb25nX0FzU3NpemVfdChhcmcpOwogICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtNTE2LDQ5ICs2MzIsNDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc2lvX2l0ZXJuZXh0KGJ5dGVzaW8gKnNlbGYpCiB7Ci0gICAgY2hhciAqbmV4dDsKICAgICBQeV9zc2l6ZV90IG47CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKLSAgICBuID0gZ2V0X2xpbmUoc2VsZiwgJm5leHQpOworICAgIG4gPSBzY2FuX2VvbChzZWxmLCAtMSk7CiAKLSAgICBpZiAoIW5leHQgfHwgbiA9PSAwKQorICAgIGlmIChuID09IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUobmV4dCwgbik7CisgICAgcmV0dXJuIHJlYWRfYnl0ZXMoc2VsZiwgbik7CiB9CiAKLVB5RG9jX1NUUlZBUihzZWVrX2RvYywKLSJzZWVrKHBvc1ssIHdoZW5jZV0pIC0+IGludC4gIENoYW5nZSBzdHJlYW0gcG9zaXRpb24uXG4iCi0iXG4iCi0iU2VlayB0byBieXRlIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZTpcbiIKLSIgICAgIDAgIFN0YXJ0IG9mIHN0cmVhbSAodGhlIGRlZmF1bHQpLiAgcG9zIHNob3VsZCBiZSA+PSAwO1xuIgotIiAgICAgMSAgQ3VycmVudCBwb3NpdGlvbiAtIHBvcyBtYXkgYmUgbmVnYXRpdmU7XG4iCi0iICAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIHVzdWFsbHkgbmVnYXRpdmUuXG4iCi0iUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uc2VlaworICAgIHBvczogUHlfc3NpemVfdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KKworQ2hhbmdlIHN0cmVhbSBwb3NpdGlvbi4KKworU2VlayB0byBieXRlIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZToKKyAgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7CisgICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbWF5IGJlIG5lZ2F0aXZlOworICAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIHVzdWFsbHkgbmVnYXRpdmUuCitSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3NlZWsoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fQnl0ZXNJT19zZWVrX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlfc3NpemVfdCBwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzI2MjA0YTY4ZTkxOTBlNCBpbnB1dD0xZTg3NWU2ZWJjNjUyOTQ4XSovCiB7Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgaW50IG1vZGUgPSAwOwotCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsICZwb3MsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocG9zIDwgMCAmJiBtb2RlID09IDApIHsKKyAgICBpZiAocG9zIDwgMCAmJiB3aGVuY2UgPT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBzZWVrIHZhbHVlICV6ZCIsIHBvcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIG1vZGUgMDogb2Zmc2V0IHJlbGF0aXZlIHRvIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgotICAgICAgIG1vZGUgMTogb2Zmc2V0IHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24uCi0gICAgICAgbW9kZSAyOiBvZmZzZXQgcmVsYXRpdmUgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLwotICAgIGlmIChtb2RlID09IDEpIHsKKyAgICAvKiB3aGVuY2UgPSAwOiBvZmZzZXQgcmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICAgd2hlbmNlID0gMTogb2Zmc2V0IHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICAgd2hlbmNlID0gMjogb2Zmc2V0IHJlbGF0aXZlIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKyAgICBpZiAod2hlbmNlID09IDEpIHsKICAgICAgICAgaWYgKHBvcyA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+cG9zKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IHBvc2l0aW9uIHRvbyBsYXJnZSIpOwpAQCAtNTY2LDcgKzY4Miw3IEBACiAgICAgICAgIH0KICAgICAgICAgcG9zICs9IHNlbGYtPnBvczsKICAgICB9Ci0gICAgZWxzZSBpZiAobW9kZSA9PSAyKSB7CisgICAgZWxzZSBpZiAod2hlbmNlID09IDIpIHsKICAgICAgICAgaWYgKHBvcyA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+c3RyaW5nX3NpemUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZXcgcG9zaXRpb24gdG9vIGxhcmdlIik7CkBAIC01NzQsOSArNjkwLDkgQEAKICAgICAgICAgfQogICAgICAgICBwb3MgKz0gc2VsZi0+c3RyaW5nX3NpemU7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgIT0gMCkgeworICAgIGVsc2UgaWYgKHdoZW5jZSAhPSAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgd2hlbmNlICglaSwgc2hvdWxkIGJlIDAsIDEgb3IgMikiLCBtb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpIiwgd2hlbmNlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC01ODcsNTQgKzcwMyw2MyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+cG9zKTsKIH0KIAotUHlEb2NfU1RSVkFSKHdyaXRlX2RvYywKLSJ3cml0ZShieXRlcykgLT4gaW50LiAgV3JpdGUgYnl0ZXMgdG8gZmlsZS5cbiIKLSJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ud3JpdGUKKyAgICBiOiBvYmplY3QKKyAgICAvCisKK1dyaXRlIGJ5dGVzIHRvIGZpbGUuCisKK1JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc2lvX3dyaXRlKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpvYmopCitfaW9fQnl0ZXNJT193cml0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzMxNmQ5OTgwMGEwYjk1IGlucHV0PWY1ZWM3YzhjNjRlZDcyMGFdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSAwOwogICAgIFB5X2J1ZmZlciBidWY7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgQ0hFQ0tfRVhQT1JUUyhzZWxmKTsKIAotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmYnVmLCBQeUJVRl9DT05USUdfUk8pIDwgMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIsICZidWYsIFB5QlVGX0NPTlRJR19STykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChidWYubGVuICE9IDApCiAgICAgICAgIG4gPSB3cml0ZV9ieXRlcyhzZWxmLCBidWYuYnVmLCBidWYubGVuKTsKLSAgICBpZiAobiA+PSAwKQotICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3Qobik7CiAKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIG4gPj0gMCA/IFB5TG9uZ19Gcm9tU3NpemVfdChuKSA6IE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUih3cml0ZWxpbmVzX2RvYywKLSJ3cml0ZWxpbmVzKGxpbmVzKSAtPiBOb25lLiAgV3JpdGUgYnl0ZXMgb2JqZWN0cyB0byB0aGUgZmlsZS5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdCBhZGRlZC4gIFRoZSBhcmd1bWVudCBjYW4gYmUgYW55IGl0ZXJhYmxlXG4iCi0ib2JqZWN0IHByb2R1Y2luZyBieXRlcyBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvclxuIgotImVhY2ggYnl0ZXMgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8ud3JpdGVsaW5lcworICAgIGxpbmVzOiBvYmplY3QKKyAgICAvCisKK1dyaXRlIGxpbmVzIHRvIHRoZSBmaWxlLgorCitOb3RlIHRoYXQgbmV3bGluZXMgYXJlIG5vdCBhZGRlZC4gIGxpbmVzIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0Citwcm9kdWNpbmcgYnl0ZXMtbGlrZSBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvcgorZWFjaCBlbGVtZW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNpb193cml0ZWxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICp2KQorX2lvX0J5dGVzSU9fd3JpdGVsaW5lcyhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqbGluZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2YzM2FhMzI3MWM5MTc1MiBpbnB1dD1lOTcyNTM5MTc2ZmM4ZmMxXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKICAgICBQeU9iamVjdCAqcmV0OwogCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHYpOworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihsaW5lcyk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIHJldCA9IGJ5dGVzaW9fd3JpdGUoc2VsZiwgaXRlbSk7CisgICAgICAgIHJldCA9IF9pb19CeXRlc0lPX3dyaXRlKHNlbGYsIGl0ZW0pOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmIChyZXQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKQEAgLTY1MSwxNyArNzc2LDE4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCi0iY2xvc2UoKSAtPiBOb25lLiAgRGlzYWJsZSBhbGwgSS9PIG9wZXJhdGlvbnMuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uQnl0ZXNJTy5jbG9zZQorCitEaXNhYmxlIGFsbCBJL08gb3BlcmF0aW9ucy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzaW9fY2xvc2UoYnl0ZXNpbyAqc2VsZikKK19pb19CeXRlc0lPX2Nsb3NlX2ltcGwoYnl0ZXNpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDcxYmI5NDExYWY4NGEwIGlucHV0PTM3ZTFmNTU1NTZlNjFmNjBdKi8KIHsKICAgICBDSEVDS19FWFBPUlRTKHNlbGYpOwotICAgIGlmIChzZWxmLT5idWYgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1Zik7Ci0gICAgICAgIHNlbGYtPmJ1ZiA9IE5VTEw7Ci0gICAgfQorICAgIFB5X0NMRUFSKHNlbGYtPmJ1Zik7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTY4Myw3ICs4MDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzaW9fZ2V0c3RhdGUoYnl0ZXNpbyAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gYnl0ZXNpb19nZXR2YWx1ZShzZWxmKTsKKyAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gX2lvX0J5dGVzSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKQEAgLTczMyw3ICs4NTksNyBAQAogCiAgICAgLyogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJuYWwgYnVmZmVyLiBJZiBzdGF0ZVswXSBkb2VzIG5vdCBzdXBwb3J0IHRoZQogICAgICAgIGJ1ZmZlciBwcm90b2NvbCwgYnl0ZXNpb193cml0ZSB3aWxsIHJhaXNlIHRoZSBhcHByb3ByaWF0ZSBUeXBlRXJyb3IuICovCi0gICAgcmVzdWx0ID0gYnl0ZXNpb193cml0ZShzZWxmLCBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCAwKSk7CisgICAgcmVzdWx0ID0gX2lvX0J5dGVzSU9fd3JpdGUoc2VsZiwgUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgMCkpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC03OTEsMTAgKzkxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZGVhbGxvY2F0ZWQgQnl0ZXNJTyBvYmplY3QgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMiKTsKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICB9Ci0gICAgaWYgKHNlbGYtPmJ1ZiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+YnVmKTsKLSAgICAgICAgc2VsZi0+YnVmID0gTlVMTDsKLSAgICB9CisgICAgUHlfQ0xFQVIoc2VsZi0+YnVmKTsKICAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKICAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKICAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CkBAIC04MTQsNyArOTM3LDcgQEAKICAgICAvKiB0cF9hbGxvYyBpbml0aWFsaXplcyBhbGwgdGhlIGZpZWxkcyB0byB6ZXJvLiBTbyB3ZSBkb24ndCBoYXZlIHRvCiAgICAgICAgaW5pdGlhbGl6ZSB0aGVtIGhlcmUuICovCiAKLSAgICBzZWxmLT5idWYgPSAoY2hhciAqKVB5TWVtX01hbGxvYygwKTsKKyAgICBzZWxmLT5idWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgIGlmIChzZWxmLT5idWYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtODIzLDI3ICs5NDYsNDEgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkJ5dGVzSU8uX19pbml0X18KKyAgICBpbml0aWFsX2J5dGVzIGFzIGluaXR2YWx1ZTogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCisKK0J1ZmZlcmVkIEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnl0ZXMgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1ieXRlc2lvX2luaXQoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX2lvX0J5dGVzSU9fX19pbml0X19faW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqaW5pdHZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1YzBjNTFlMjRjNWI2MjEgaW5wdXQ9YWFjN2YzMWI2N2JmMGZiNl0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE86Qnl0ZXNJTyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5pdHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgLyogSW4gY2FzZSwgX19pbml0X18gaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiAqLwogICAgIHNlbGYtPnN0cmluZ19zaXplID0gMDsKICAgICBzZWxmLT5wb3MgPSAwOwogCisgICAgaWYgKHNlbGYtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJFeGlzdGluZyBleHBvcnRzIG9mIGRhdGE6IG9iamVjdCBjYW5ub3QgYmUgcmUtc2l6ZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAoaW5pdHZhbHVlICYmIGluaXR2YWx1ZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgIHJlcyA9IGJ5dGVzaW9fd3JpdGUoc2VsZiwgaW5pdHZhbHVlKTsKLSAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgc2VsZi0+cG9zID0gMDsKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdChpbml0dmFsdWUpKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoaW5pdHZhbHVlKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoc2VsZi0+YnVmKTsKKyAgICAgICAgICAgIHNlbGYtPmJ1ZiA9IGluaXR2YWx1ZTsKKyAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gUHlCeXRlc19HRVRfU0laRShpbml0dmFsdWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgICAgIHJlcyA9IF9pb19CeXRlc0lPX3dyaXRlKHNlbGYsIGluaXR2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBzZWxmLT5wb3MgPSAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC04NTUsOCArOTkyLDggQEAKICAgICBQeV9zc2l6ZV90IHJlczsKIAogICAgIHJlcyA9IHNpemVvZihieXRlc2lvKTsKLSAgICBpZiAoc2VsZi0+YnVmKQotICAgICAgICByZXMgKz0gc2VsZi0+YnVmX3NpemU7CisgICAgaWYgKHNlbGYtPmJ1ZiAmJiAhU0hBUkVEX0JVRihzZWxmKSkKKyAgICAgICAgcmVzICs9IF9QeVN5c19HZXRTaXplT2Yoc2VsZi0+YnVmKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTg3NSw2ICsxMDEyLDggQEAKIH0KIAogCisjaW5jbHVkZSAiY2xpbmljL2J5dGVzaW8uYy5oIgorCiBzdGF0aWMgUHlHZXRTZXREZWYgYnl0ZXNpb19nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJjbG9zZWQiLCAgKGdldHRlcilieXRlc2lvX2dldF9jbG9zZWQsIE5VTEwsCiAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4ifSwKQEAgLTg4MiwzNiArMTAyMSwzMCBAQAogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBieXRlc2lvX21ldGhvZHNbXSA9IHsKLSAgICB7InJlYWRhYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgcmVhZGFibGVfZG9jfSwKLSAgICB7InNlZWthYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgc2Vla2FibGVfZG9jfSwKLSAgICB7IndyaXRhYmxlIiwgICAoUHlDRnVuY3Rpb24pcmV0dXJuX25vdF9jbG9zZWQsICBNRVRIX05PQVJHUywgd3JpdGFibGVfZG9jfSwKLSAgICB7ImNsb3NlIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19jbG9zZSwgICAgICBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKLSAgICB7ImZsdXNoIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19mbHVzaCwgICAgICBNRVRIX05PQVJHUywgZmx1c2hfZG9jfSwKLSAgICB7ImlzYXR0eSIsICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19pc2F0dHksICAgICBNRVRIX05PQVJHUywgaXNhdHR5X2RvY30sCi0gICAgeyJ0ZWxsIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fdGVsbCwgICAgICAgTUVUSF9OT0FSR1MsIHRlbGxfZG9jfSwKLSAgICB7IndyaXRlIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb193cml0ZSwgICAgICBNRVRIX08sIHdyaXRlX2RvY30sCi0gICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fd3JpdGVsaW5lcywgTUVUSF9PLCB3cml0ZWxpbmVzX2RvY30sCi0gICAgeyJyZWFkMSIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZDEsICAgICAgTUVUSF9PLCByZWFkMV9kb2N9LAotICAgIHsicmVhZGludG8iLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX3JlYWRpbnRvLCAgIE1FVEhfTywgcmVhZGludG9fZG9jfSwKLSAgICB7InJlYWRsaW5lIiwgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkbGluZSwgICBNRVRIX1ZBUkFSR1MsIHJlYWRsaW5lX2RvY30sCi0gICAgeyJyZWFkbGluZXMiLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fcmVhZGxpbmVzLCAgTUVUSF9WQVJBUkdTLCByZWFkbGluZXNfZG9jfSwKLSAgICB7InJlYWQiLCAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19yZWFkLCAgICAgICBNRVRIX1ZBUkFSR1MsIHJlYWRfZG9jfSwKLSAgICB7ImdldGJ1ZmZlciIsICAoUHlDRnVuY3Rpb24pYnl0ZXNpb19nZXRidWZmZXIsICBNRVRIX05PQVJHUywgIGdldGJ1ZmZlcl9kb2N9LAotICAgIHsiZ2V0dmFsdWUiLCAgIChQeUNGdW5jdGlvbilieXRlc2lvX2dldHZhbHVlLCAgIE1FVEhfTk9BUkdTLCAgZ2V0dmFsX2RvY30sCi0gICAgeyJzZWVrIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fc2VlaywgICAgICAgTUVUSF9WQVJBUkdTLCBzZWVrX2RvY30sCi0gICAgeyJ0cnVuY2F0ZSIsICAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fdHJ1bmNhdGUsICAgTUVUSF9WQVJBUkdTLCB0cnVuY2F0ZV9kb2N9LAorICAgIF9JT19CWVRFU0lPX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0lTQVRUWV9NRVRIT0RERUYKKyAgICBfSU9fQllURVNJT19URUxMX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1dSSVRFTElORVNfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRDFfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRExJTkVfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fUkVBRExJTkVTX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fR0VUQlVGRkVSX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX0dFVFZBTFVFX01FVEhPRERFRgorICAgIF9JT19CWVRFU0lPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX0JZVEVTSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgeyJfX2dldHN0YXRlX18iLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fZ2V0c3RhdGUsICBNRVRIX05PQVJHUywgTlVMTH0sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgKFB5Q0Z1bmN0aW9uKWJ5dGVzaW9fc2V0c3RhdGUsICBNRVRIX08sIE5VTEx9LAogICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilieXRlc2lvX3NpemVvZiwgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCi1QeURvY19TVFJWQVIoYnl0ZXNpb19kb2MsCi0iQnl0ZXNJTyhbYnVmZmVyXSkgLT4gb2JqZWN0XG4iCi0iXG4iCi0iQ3JlYXRlIGEgYnVmZmVyZWQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBieXRlc1xuIgotImJ1ZmZlciwgcmVhZHkgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuIik7Ci0KIFB5VHlwZU9iamVjdCBQeUJ5dGVzSU9fVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiX2lvLkJ5dGVzSU8iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KQEAgLTkzNCw3ICsxMDY3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfAogICAgIFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KLSAgICBieXRlc2lvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgIF9pb19CeXRlc0lPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgICAvKnRwX2RvYyovCiAgICAgKHRyYXZlcnNlcHJvYylieXRlc2lvX3RyYXZlcnNlLCAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UqLwogICAgIChpbnF1aXJ5KWJ5dGVzaW9fY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCkBAIC05NDksNyArMTA4Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwogICAgIG9mZnNldG9mKGJ5dGVzaW8sIGRpY3QpLCAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQqLwotICAgIChpbml0cHJvYylieXRlc2lvX2luaXQsICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLworICAgIF9pb19CeXRlc0lPX19faW5pdF9fLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2luaXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jKi8KICAgICBieXRlc2lvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uZXcqLwogfTsKQEAgLTk2NCwxOCArMTA5NywyNCBAQAogc3RhdGljIGludAogYnl0ZXNpb2J1Zl9nZXRidWZmZXIoYnl0ZXNpb2J1ZiAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpbnQgcmV0OwogICAgIGJ5dGVzaW8gKmIgPSAoYnl0ZXNpbyAqKSBvYmotPnNvdXJjZTsKKwogICAgIGlmICh2aWV3ID09IE5VTEwpIHsKLSAgICAgICAgYi0+ZXhwb3J0cysrOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImJ5dGVzaW9idWZfZ2V0YnVmZmVyOiB2aWV3PT1OVUxMIGFyZ3VtZW50IGlzIG9ic29sZXRlIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0ID0gUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIGItPmJ1ZiwgYi0+c3RyaW5nX3NpemUsCisgICAgaWYgKFNIQVJFRF9CVUYoYikpIHsKKyAgICAgICAgaWYgKHVuc2hhcmVfYnVmZmVyKGIsIGItPnN0cmluZ19zaXplKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogY2Fubm90IGZhaWwgaWYgdmlldyAhPSBOVUxMIGFuZCByZWFkb25seSA9PSAwICovCisgICAgKHZvaWQpUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYi0+YnVmKSwgYi0+c3RyaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmxhZ3MpOwotICAgIGlmIChyZXQgPj0gMCkgewotICAgICAgICBiLT5leHBvcnRzKys7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgYi0+ZXhwb3J0cysrOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2FiYjkzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmgKQEAgLTAsMCArMSwxNTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fb3Blbl9fZG9jX18sCisib3BlbigkbW9kdWxlLCAvLCBmaWxlLCBtb2RlPVwnclwnLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCisiICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS5cbiIKKyJcbiIKKyJmaWxlIGlzIGVpdGhlciBhIHRleHQgb3IgYnl0ZSBzdHJpbmcgZ2l2aW5nIHRoZSBuYW1lIChhbmQgdGhlIHBhdGhcbiIKKyJpZiB0aGUgZmlsZSBpc25cJ3QgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvXG4iCisiYmUgb3BlbmVkIG9yIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlXG4iCisid3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGVcbiIKKyJyZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLilcbiIKKyJcbiIKKyJtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZVxuIgorImlzIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gXCdyXCcgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0XG4iCisibW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlIFwnd1wnIGZvciB3cml0aW5nICh0cnVuY2F0aW5nIHRoZSBmaWxlIGlmXG4iCisiaXQgYWxyZWFkeSBleGlzdHMpLCBcJ3hcJyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCisiXCdhXCcgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gc29tZSBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgYWxsIHdyaXRlc1xuIgorImFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgc2VlayBwb3NpdGlvbikuXG4iCisiSW4gdGV4dCBtb2RlLCBpZiBlbmNvZGluZyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtXG4iCisiZGVwZW5kZW50OiBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIGlzIGNhbGxlZCB0byBnZXQgdGhlXG4iCisiY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcgYnl0ZXMgdXNlIGJpbmFyeVxuIgorIm1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZSBtb2RlcyBhcmU6XG4iCisiXG4iCisiPT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIgorIkNoYXJhY3RlciBNZWFuaW5nXG4iCisiLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgorIlwnclwnICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpXG4iCisiXCd3XCcgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgorIlwneFwnICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIGFuZCBvcGVuIGl0IGZvciB3cml0aW5nXG4iCisiXCdhXCcgICAgICAgb3BlbiBmb3Igd3JpdGluZywgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgaWYgaXQgZXhpc3RzXG4iCisiXCdiXCcgICAgICAgYmluYXJ5IG1vZGVcbiIKKyJcJ3RcJyAgICAgICB0ZXh0IG1vZGUgKGRlZmF1bHQpXG4iCisiXCcrXCcgICAgICAgb3BlbiBhIGRpc2sgZmlsZSBmb3IgdXBkYXRpbmcgKHJlYWRpbmcgYW5kIHdyaXRpbmcpXG4iCisiXCdVXCcgICAgICAgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSAoZGVwcmVjYXRlZClcbiIKKyI9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iCisiXG4iCisiVGhlIGRlZmF1bHQgbW9kZSBpcyBcJ3J0XCcgKG9wZW4gZm9yIHJlYWRpbmcgdGV4dCkuIEZvciBiaW5hcnkgcmFuZG9tXG4iCisiYWNjZXNzLCB0aGUgbW9kZSBcJ3crYlwnIG9wZW5zIGFuZCB0cnVuY2F0ZXMgdGhlIGZpbGUgdG8gMCBieXRlcywgd2hpbGVcbiIKKyJcJ3IrYlwnIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4gVGhlIFwneFwnIG1vZGUgaW1wbGllcyBcJ3dcJyBhbmRcbiIKKyJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCisiXG4iCisiUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgorImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuXCd0LiBGaWxlcyBvcGVuZWQgaW5cbiIKKyJiaW5hcnkgbW9kZSAoYXBwZW5kaW5nIFwnYlwnIHRvIHRoZSBtb2RlIGFyZ3VtZW50KSByZXR1cm4gY29udGVudHMgYXNcbiIKKyJieXRlcyBvYmplY3RzIHdpdGhvdXQgYW55IGRlY29kaW5nLiBJbiB0ZXh0IG1vZGUgKHRoZSBkZWZhdWx0LCBvciB3aGVuXG4iCisiXCd0XCcgaXMgYXBwZW5kZWQgdG8gdGhlIG1vZGUgYXJndW1lbnQpLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgYXJlXG4iCisicmV0dXJuZWQgYXMgc3RyaW5ncywgdGhlIGJ5dGVzIGhhdmluZyBiZWVuIGZpcnN0IGRlY29kZWQgdXNpbmcgYVxuIgorInBsYXRmb3JtLWRlcGVuZGVudCBlbmNvZGluZyBvciB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGlmIGdpdmVuLlxuIgorIlxuIgorIlwnVVwnIG1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4gZnV0dXJlIHZlcnNpb25zXG4iCisib2YgUHl0aG9uLiAgSXQgaGFzIG5vIGVmZmVjdCBpbiBQeXRob24gMy4gIFVzZSBuZXdsaW5lIHRvIGNvbnRyb2xcbiIKKyJ1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS5cbiIKKyJcbiIKKyJidWZmZXJpbmcgaXMgYW4gb3B0aW9uYWwgaW50ZWdlciB1c2VkIHRvIHNldCB0aGUgYnVmZmVyaW5nIHBvbGljeS5cbiIKKyJQYXNzIDAgdG8gc3dpdGNoIGJ1ZmZlcmluZyBvZmYgKG9ubHkgYWxsb3dlZCBpbiBiaW5hcnkgbW9kZSksIDEgdG8gc2VsZWN0XG4iCisibGluZSBidWZmZXJpbmcgKG9ubHkgdXNhYmxlIGluIHRleHQgbW9kZSksIGFuZCBhbiBpbnRlZ2VyID4gMSB0byBpbmRpY2F0ZVxuIgorInRoZSBzaXplIG9mIGEgZml4ZWQtc2l6ZSBjaHVuayBidWZmZXIuICBXaGVuIG5vIGJ1ZmZlcmluZyBhcmd1bWVudCBpc1xuIgorImdpdmVuLCB0aGUgZGVmYXVsdCBidWZmZXJpbmcgcG9saWN5IHdvcmtzIGFzIGZvbGxvd3M6XG4iCisiXG4iCisiKiBCaW5hcnkgZmlsZXMgYXJlIGJ1ZmZlcmVkIGluIGZpeGVkLXNpemUgY2h1bmtzOyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyXG4iCisiICBpcyBjaG9zZW4gdXNpbmcgYSBoZXVyaXN0aWMgdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgdW5kZXJseWluZyBkZXZpY2VcJ3NcbiIKKyIgIFwiYmxvY2sgc2l6ZVwiIGFuZCBmYWxsaW5nIGJhY2sgb24gYGlvLkRFRkFVTFRfQlVGRkVSX1NJWkVgLlxuIgorIiAgT24gbWFueSBzeXN0ZW1zLCB0aGUgYnVmZmVyIHdpbGwgdHlwaWNhbGx5IGJlIDQwOTYgb3IgODE5MiBieXRlcyBsb25nLlxuIgorIlxuIgorIiogXCJJbnRlcmFjdGl2ZVwiIHRleHQgZmlsZXMgKGZpbGVzIGZvciB3aGljaCBpc2F0dHkoKSByZXR1cm5zIFRydWUpXG4iCisiICB1c2UgbGluZSBidWZmZXJpbmcuICBPdGhlciB0ZXh0IGZpbGVzIHVzZSB0aGUgcG9saWN5IGRlc2NyaWJlZCBhYm92ZVxuIgorIiAgZm9yIGJpbmFyeSBmaWxlcy5cbiIKKyJcbiIKKyJlbmNvZGluZyBpcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBkZWNvZGUgb3IgZW5jb2RlIHRoZVxuIgorImZpbGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzXG4iCisicGxhdGZvcm0gZGVwZW5kZW50LCBidXQgYW55IGVuY29kaW5nIHN1cHBvcnRlZCBieSBQeXRob24gY2FuIGJlXG4iCisicGFzc2VkLiAgU2VlIHRoZSBjb2RlY3MgbW9kdWxlIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZW5jb2RpbmdzLlxuIgorIlxuIgorImVycm9ycyBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGVycm9ycyBhcmUgdG9cbiIKKyJiZSBoYW5kbGVkLS0tdGhpcyBhcmd1bWVudCBzaG91bGQgbm90IGJlIHVzZWQgaW4gYmluYXJ5IG1vZGUuIFBhc3NcbiIKKyJcJ3N0cmljdFwnIHRvIHJhaXNlIGEgVmFsdWVFcnJvciBleGNlcHRpb24gaWYgdGhlcmUgaXMgYW4gZW5jb2RpbmcgZXJyb3JcbiIKKyIodGhlIGRlZmF1bHQgb2YgTm9uZSBoYXMgdGhlIHNhbWUgZWZmZWN0KSwgb3IgcGFzcyBcJ2lnbm9yZVwnIHRvIGlnbm9yZVxuIgorImVycm9ycy4gKE5vdGUgdGhhdCBpZ25vcmluZyBlbmNvZGluZyBlcnJvcnMgY2FuIGxlYWQgdG8gZGF0YSBsb3NzLilcbiIKKyJTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlciBvciBydW4gXCdoZWxwKGNvZGVjcy5Db2RlYylcJ1xuIgorImZvciBhIGxpc3Qgb2YgdGhlIHBlcm1pdHRlZCBlbmNvZGluZyBlcnJvciBzdHJpbmdzLlxuIgorIlxuIgorIm5ld2xpbmUgY29udHJvbHMgaG93IHVuaXZlcnNhbCBuZXdsaW5lcyB3b3JrcyAoaXQgb25seSBhcHBsaWVzIHRvIHRleHRcbiIKKyJtb2RlKS4gSXQgY2FuIGJlIE5vbmUsIFwnXCcsIFwnXFxuXCcsIFwnXFxyXCcsIGFuZCBcJ1xcclxcblwnLiAgSXQgd29ya3MgYXNcbiIKKyJmb2xsb3dzOlxuIgorIlxuIgorIiogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXNcbiIKKyIgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluIFwnXFxuXCcsIFwnXFxyXCcsIG9yIFwnXFxyXFxuXCcsIGFuZFxuIgorIiAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byBcJ1xcblwnIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGVcbiIKKyIgIGNhbGxlci4gSWYgaXQgaXMgXCdcJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZVxuIgorIiAgZW5kaW5ncyBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuIElmIGl0IGhhcyBhbnkgb2ZcbiIKKyIgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuXG4iCisiICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuXG4iCisiXG4iCisiKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZVxuIgorIiAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmXG4iCisiICBuZXdsaW5lIGlzIFwnXCcgb3IgXCdcXG5cJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55XG4iCisiICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgXCdcXG5cJyBjaGFyYWN0ZXJzIHdyaXR0ZW4gYXJlIHRyYW5zbGF0ZWRcbiIKKyIgIHRvIHRoZSBnaXZlbiBzdHJpbmcuXG4iCisiXG4iCisiSWYgY2xvc2VmZCBpcyBGYWxzZSwgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUga2VwdCBvcGVuXG4iCisid2hlbiB0aGUgZmlsZSBpcyBjbG9zZWQuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuIGEgZmlsZSBuYW1lIGlzIGdpdmVuXG4iCisiYW5kIG11c3QgYmUgVHJ1ZSBpbiB0aGF0IGNhc2UuXG4iCisiXG4iCisiQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlXG4iCisidW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5XG4iCisiY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuXG4iCisiZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5XG4iCisic2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLlxuIgorIlxuIgorIm9wZW4oKSByZXR1cm5zIGEgZmlsZSBvYmplY3Qgd2hvc2UgdHlwZSBkZXBlbmRzIG9uIHRoZSBtb2RlLCBhbmRcbiIKKyJ0aHJvdWdoIHdoaWNoIHRoZSBzdGFuZGFyZCBmaWxlIG9wZXJhdGlvbnMgc3VjaCBhcyByZWFkaW5nIGFuZCB3cml0aW5nXG4iCisiYXJlIHBlcmZvcm1lZC4gV2hlbiBvcGVuKCkgaXMgdXNlZCB0byBvcGVuIGEgZmlsZSBpbiBhIHRleHQgbW9kZSAoXCd3XCcsXG4iCisiXCdyXCcsIFwnd3RcJywgXCdydFwnLCBldGMuKSwgaXQgcmV0dXJucyBhIFRleHRJT1dyYXBwZXIuIFdoZW4gdXNlZCB0byBvcGVuXG4iCisiYSBmaWxlIGluIGEgYmluYXJ5IG1vZGUsIHRoZSByZXR1cm5lZCBjbGFzcyB2YXJpZXM6IGluIHJlYWQgYmluYXJ5XG4iCisibW9kZSwgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkUmVhZGVyOyBpbiB3cml0ZSBiaW5hcnkgYW5kIGFwcGVuZCBiaW5hcnlcbiIKKyJtb2RlcywgaXQgcmV0dXJucyBhIEJ1ZmZlcmVkV3JpdGVyLCBhbmQgaW4gcmVhZC93cml0ZSBtb2RlLCBpdCByZXR1cm5zXG4iCisiYSBCdWZmZXJlZFJhbmRvbS5cbiIKKyJcbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHVzZSBhIHN0cmluZyBvciBieXRlYXJyYXkgYXMgYSBmaWxlIGZvciBib3RoXG4iCisicmVhZGluZyBhbmQgd3JpdGluZy4gRm9yIHN0cmluZ3MgU3RyaW5nSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGVcbiIKKyJvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlXG4iCisib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CisKKyNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX29wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgY29uc3QgY2hhciAqbW9kZSwKKyAgICAgICAgICAgICAgaW50IGJ1ZmZlcmluZywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3bGluZSwgaW50IGNsb3NlZmQsIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX29wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgYnVmZmVyaW5nID0gLTE7CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmV3bGluZSA9IE5VTEw7CisgICAgaW50IGNsb3NlZmQgPSAxOworICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCisgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX29wZW5faW1wbChtb2R1bGUsIGZpbGUsIG1vZGUsIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgY2xvc2VmZCwgb3BlbmVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3Y2RjMDliZjY4YTgwNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzN2UyNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKQEAgLTAsMCArMSw0NTQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvX19kb2NfXywKKyJyZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvLCBNRVRIX08sIF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChQeU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50byhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50bzFfX2RvY19fLAorInJlYWRpbnRvMSgkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVESU9CQVNFX1JFQURJTlRPMV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8xIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xLCBNRVRIX08sIF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9fZG9jX18sCisiZGV0YWNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGlzY29ubmVjdCB0aGlzIGJ1ZmZlciBmcm9tIGl0cyB1bmRlcmx5aW5nIHJhdyBzdHJlYW0gYW5kIHJldHVybiBpdC5cbiIKKyJcbiIKKyJBZnRlciB0aGUgcmF3IHN0cmVhbSBoYXMgYmVlbiBkZXRhY2hlZCwgdGhlIGJ1ZmZlciBpcyBpbiBhbiB1bnVzYWJsZVxuIgorInN0YXRlLiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURJT0JBU0VfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2gsIE1FVEhfTk9BUkdTLCBfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkSU9CYXNlX2RldGFjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19CdWZmZXJlZElPQmFzZV9kZXRhY2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcGVla19fZG9jX18sCisicGVlaygkc2VsZiwgc2l6ZT0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1BFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InBlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9wZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcGVla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9wZWVrX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3BlZWsoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBlZWsiLAorICAgICAgICAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X3NzaXplX3Qgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19CdWZmZXJlZF9yZWFkMV9fZG9jX18sCisicmVhZDEoJHNlbGYsIHNpemUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRDFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZDEsIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkMV9pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkMShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZGludG9fX2RvY19fLAorInJlYWRpbnRvKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRElOVE9fTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKV9pb19fQnVmZmVyZWRfcmVhZGludG8sIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMV9fZG9jX18sCisicmVhZGludG8xKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfUkVBRElOVE8xX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50bzEiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF9yZWFkaW50bzEsIE1FVEhfTywgX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGludG8xKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX0JVRkZFUkVEX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19fQnVmZmVyZWRfcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGxpbmVfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fQnVmZmVyZWRfcmVhZGxpbmUoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0J1ZmZlcmVkX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHRhcmdldCwgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fQlVGRkVSRURfU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fX0J1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX19CdWZmZXJlZF9zZWVrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldG9iaiwgaW50IHdoZW5jZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3NlZWsoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0YXJnZXRvYmo7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChzZWxmLCB0YXJnZXRvYmosIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBwb3M9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX19CVUZGRVJFRF9UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX19CdWZmZXJlZF90cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0J1ZmZlcmVkX3RydW5jYXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19CdWZmZXJlZF90cnVuY2F0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRSZWFkZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgbmV3IGJ1ZmZlcmVkIHJlYWRlciB1c2luZyB0aGUgZ2l2ZW4gcmVhZGFibGUgcmF3IElPIG9iamVjdC4iKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICpyYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplKTsKKworc3RhdGljIGludAorX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmF3OworICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRXcml0ZXIocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXIgZm9yIGEgd3JpdGVhYmxlIHNlcXVlbnRpYWwgUmF3SU8gb2JqZWN0LlxuIgorIlxuIgorIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgQnVmZmVyZWRXcml0ZXIgZm9yIHRoZSBnaXZlbiB3cml0ZWFibGUgcmF3XG4iCisic3RyZWFtLiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0b1xuIgorIkRFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFdyaXRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRXcml0ZXJfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19CVUZGRVJFRFdSSVRFUl9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlLCBNRVRIX08sIF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoYnVmZmVyZWQgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CdWZmZXJlZFdyaXRlcl93cml0ZShidWZmZXJlZCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19fX2RvY19fLAorIkJ1ZmZlcmVkUldQYWlyKHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXJlZCByZWFkZXIgYW5kIHdyaXRlciBvYmplY3QgdG9nZXRoZXIuXG4iCisiXG4iCisiQSBidWZmZXJlZCByZWFkZXIgb2JqZWN0IGFuZCBidWZmZXJlZCB3cml0ZXIgb2JqZWN0IHB1dCB0b2dldGhlciB0b1xuIgorImZvcm0gYSBzZXF1ZW50aWFsIElPIG9iamVjdCB0aGF0IGNhbiByZWFkIGFuZCB3cml0ZS4gVGhpcyBpcyB0eXBpY2FsbHlcbiIKKyJ1c2VkIHdpdGggYSBzb2NrZXQgb3IgdHdvLXdheSBwaXBlLlxuIgorIlxuIgorInJlYWRlciBhbmQgd3JpdGVyIGFyZSBSYXdJT0Jhc2Ugb2JqZWN0cyB0aGF0IGFyZSByZWFkYWJsZSBhbmRcbiIKKyJ3cml0ZWFibGUgcmVzcGVjdGl2ZWx5LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0b1xuIgorIkRFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJXUGFpcl9fX2luaXRfX19pbXBsKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3cml0ZXIsIFB5X3NzaXplX3QgYnVmZmVyX3NpemUpOworCitzdGF0aWMgaW50CitfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBQeU9iamVjdCAqcmVhZGVyOworICAgIFB5T2JqZWN0ICp3cml0ZXI7CisgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisKKyAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJlB5QnVmZmVyZWRSV1BhaXJfVHlwZSkgJiYKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19fZG9jX18sCisiQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKVxuIgorIi0tXG4iCisiXG4iCisiQSBidWZmZXJlZCBpbnRlcmZhY2UgdG8gcmFuZG9tIGFjY2VzcyBzdHJlYW1zLlxuIgorIlxuIgorIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLFxuIgorInJhdywgZ2l2ZW4gaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiBJZiB0aGUgYnVmZmVyX3NpemUgaXMgb21pdHRlZCBpdFxuIgorImRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuIik7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSk7CisKK3N0YXRpYyBpbnQKK19pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJhdzsKKyAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJhbmRvbV9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJiYjVlMjM5YjRmZmU2ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiMWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaApAQCAtMCwwICsxLDQyMiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSByZWFkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkYWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGFibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fcmVhZGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSB3cml0dGVuLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT193cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT193cml0YWJsZV9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fd3JpdGFibGUoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3NlZWthYmxlX19kb2NfXywKKyJzZWVrYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fU0VFS0FCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3NlZWthYmxlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fc2Vla2FibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWthYmxlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19zZWVrYWJsZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX0ZMVVNIX01FVEhPRERFRiAgICBcCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19mbHVzaCwgTUVUSF9OT0FSR1MsIF9pb19CeXRlc0lPX2ZsdXNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19mbHVzaF9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZmx1c2goYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0J5dGVzSU9fZmx1c2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX2dldGJ1ZmZlcl9fZG9jX18sCisiZ2V0YnVmZmVyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IGEgcmVhZC13cml0ZSB2aWV3IG92ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBCeXRlc0lPIG9iamVjdC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19HRVRCVUZGRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19nZXRidWZmZXIsIE1FVEhfTk9BUkdTLCBfaW9fQnl0ZXNJT19nZXRidWZmZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fZ2V0YnVmZmVyKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19CeXRlc0lPX2dldGJ1ZmZlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fZ2V0dmFsdWVfX2RvY19fLAorImdldHZhbHVlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgQnl0ZXNJTyBvYmplY3QuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fR0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2dldHZhbHVlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fZ2V0dmFsdWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2dldHZhbHVlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19nZXR2YWx1ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19nZXR2YWx1ZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9faXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbHdheXMgcmV0dXJucyBGYWxzZS5cbiIKKyJcbiIKKyJCeXRlc0lPIG9iamVjdHMgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYSBUVFktbGlrZSBkZXZpY2UuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChieXRlc2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2lzYXR0eShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3RlbGxfX2RvY19fLAorInRlbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fdGVsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdGVsbF9pbXBsKGJ5dGVzaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fdGVsbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlcyBvYmplY3QuXG4iCisiXG4iCisiSWYgdGhlIHNpemUgYXJndW1lbnQgaXMgbmVnYXRpdmUsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19CeXRlc0lPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRfaW1wbChieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWQoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fcmVhZDFfX2RvY19fLAorInJlYWQxKCRzZWxmLCBzaXplLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGEgYnl0ZXMgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBzaXplIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fUkVBRDFfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQxIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWQxLCBNRVRIX08sIF9pb19CeXRlc0lPX3JlYWQxX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIk5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJSZXRhaW4gbmV3bGluZS4gIEEgbm9uLW5lZ2F0aXZlIHNpemUgYXJndW1lbnQgbGltaXRzIHRoZSBtYXhpbXVtXG4iCisibnVtYmVyIG9mIGJ5dGVzIHRvIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19SRUFETElORV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fcmVhZGxpbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkbGluZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMaXN0IG9mIGJ5dGVzIG9iamVjdHMsIGVhY2ggYSBsaW5lIGZyb20gdGhlIGZpbGUuXG4iCisiXG4iCisiQ2FsbCByZWFkbGluZSgpIHJlcGVhdGVkbHkgYW5kIHJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIHNvIHJlYWQuXG4iCisiVGhlIG9wdGlvbmFsIHNpemUgYXJndW1lbnQsIGlmIGdpdmVuLCBpcyBhbiBhcHByb3hpbWF0ZSBib3VuZCBvbiB0aGVcbiIKKyJ0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBfaW9fQnl0ZXNJT19yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGxpbmVzKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZXNfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgdXAgdG8gbGVuKGJ1ZmZlcikgYnl0ZXMgaW50byBidWZmZXIuXG4iCisiXG4iCisiUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKSwgb3IgTm9uZSBpZiB0aGUgb2JqZWN0XG4iCisiaXMgc2V0IG5vdCB0byBibG9jayBhcyBoYXMgbm8gZGF0YSB0byByZWFkLiIpOworCisjZGVmaW5lIF9JT19CWVRFU0lPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fQnl0ZXNJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fQnl0ZXNJT19yZWFkaW50b19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChieXRlc2lvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19yZWFkaW50byhieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSB0aGUgZmlsZSB0byBhdCBtb3N0IHNpemUgYnl0ZXMuXG4iCisiXG4iCisiU2l6ZSBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhcyByZXR1cm5lZCBieSB0ZWxsKCkuXG4iCisiVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuICBSZXR1cm5zIHRoZSBuZXcgc2l6ZS4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX0J5dGVzSU9fdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3RydW5jYXRlX2ltcGwoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT190cnVuY2F0ZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19CeXRlc0lPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgorIlxuIgorIlNlZWsgdG8gYnl0ZSBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCisiICAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDtcbiIKKyIgICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbWF5IGJlIG5lZ2F0aXZlO1xuIgorIiAgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyB1c3VhbGx5IG5lZ2F0aXZlLlxuIgorIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19TRUVLX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX0J5dGVzSU9fc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0J5dGVzSU9fc2Vla19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX3NlZWsoYnl0ZXNpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyB0byBmaWxlLlxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3dyaXRlLCBNRVRIX08sIF9pb19CeXRlc0lPX3dyaXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fQnl0ZXNJT193cml0ZWxpbmVzX19kb2NfXywKKyJ3cml0ZWxpbmVzKCRzZWxmLCBsaW5lcywgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGxpbmVzIHRvIHRoZSBmaWxlLlxuIgorIlxuIgorIk5vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90IGFkZGVkLiAgbGluZXMgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3RcbiIKKyJwcm9kdWNpbmcgYnl0ZXMtbGlrZSBvYmplY3RzLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB3cml0ZSgpIGZvclxuIgorImVhY2ggZWxlbWVudC4iKTsKKworI2RlZmluZSBfSU9fQllURVNJT19XUklURUxJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX3dyaXRlbGluZXMsIE1FVEhfTywgX2lvX0J5dGVzSU9fd3JpdGVsaW5lc19fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fY2xvc2VfX2RvY19fLAorImNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGlzYWJsZSBhbGwgSS9PIG9wZXJhdGlvbnMuIik7CisKKyNkZWZpbmUgX0lPX0JZVEVTSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19CeXRlc0lPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX0J5dGVzSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19CeXRlc0lPX2Nsb3NlX2ltcGwoYnl0ZXNpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fQnl0ZXNJT19jbG9zZShieXRlc2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fQnl0ZXNJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0J5dGVzSU9fX19pbml0X19fX2RvY19fLAorIkJ5dGVzSU8oaW5pdGlhbF9ieXRlcz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIkJ1ZmZlcmVkIEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnl0ZXMgYnVmZmVyLiIpOworCitzdGF0aWMgaW50CitfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKGJ5dGVzaW8gKnNlbGYsIFB5T2JqZWN0ICppbml0dmFsdWUpOworCitzdGF0aWMgaW50CitfaW9fQnl0ZXNJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19fX2luaXRfX19pbXBsKChieXRlc2lvICopc2VsZiwgaW5pdHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwMGNjYzE0OTU4N2ZhYzQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTEyMDVlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKQEAgLTAsMCArMSwzNjcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBmaWxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZVxuIgorImNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2Nsb3NlX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fY2xvc2UoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX19faW5pdF9fX19kb2NfXywKKyJGaWxlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBmaWxlLlxuIgorIlxuIgorIlRoZSBtb2RlIGNhbiBiZSBcJ3JcJyAoZGVmYXVsdCksIFwnd1wnLCBcJ3hcJyBvciBcJ2FcJyBmb3IgcmVhZGluZyxcbiIKKyJ3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0XG4iCisiZG9lc25cJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZFxuIgorIndoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeVxuIgorImV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzXG4iCisid3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvIFwnd1wnLkFkZCBhIFwnK1wnIHRvIHRoZSBtb2RlXG4iCisidG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieVxuIgorInBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZVxuIgorIm9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuXG4iCisiKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKlxuIgorInJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuIik7CisKK3N0YXRpYyBpbnQKK19pb19GaWxlSU9fX19pbml0X19faW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLCBjb25zdCBjaGFyICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKTsKKworc3RhdGljIGludAorX2lvX0ZpbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19fX2luaXRfX19pbXBsKChmaWxlaW8gKilzZWxmLCBuYW1lb2JqLCBtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19GSUxFTk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2ZpbGVub19pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX2ZpbGVubyhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fUkVBREFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRhYmxlX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFibGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3dyaXRhYmxlX19kb2NfXywKKyJ3cml0YWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgd3JpdGUgbW9kZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3dyaXRhYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT193cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3dyaXRhYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3NlZWthYmxlLCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWthYmxlKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFESU5UT19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGludG8iLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fRmlsZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRpbnRvX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3JlYWRpbnRvKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkYWxsX19kb2NfXywKKyJyZWFkYWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBmaWxlLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKKyJcbiIKKyJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSxcbiIKKyJvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZGFsbCwgTUVUSF9OT0FSR1MsIF9pb19GaWxlSU9fcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19yZWFkYWxsX2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZGFsbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19GaWxlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLlxuIgorIkluIG5vbi1ibG9ja2luZyBtb2RlLCByZXR1cm5zIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX0ZJTEVJT19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fRmlsZUlPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZF9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fcmVhZChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3JlYWRfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi5cbiIKKyJcbiIKKyJPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi5cbiIKKyJUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSxcbiIKKyJyZXR1cm5zIE5vbmUgaWYgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9fd3JpdGUsIE1FVEhfTywgX2lvX0ZpbGVJT193cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT193cml0ZV9pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fd3JpdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZCByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uXG4iCisiXG4iCisiQXJndW1lbnQgb2Zmc2V0IGlzIGEgYnl0ZSBjb3VudC4gIE9wdGlvbmFsIGFyZ3VtZW50IHdoZW5jZSBkZWZhdWx0cyB0b1xuIgorIlNFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlc1xuIgorImFyZSBTRUVLX0NVUiBvciAxIChtb3ZlIHJlbGF0aXZlIHRvIGN1cnJlbnQgcG9zaXRpb24sIHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSxcbiIKKyJhbmQgU0VFS19FTkQgb3IgMiAobW92ZSByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSwgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2hcbiIKKyJtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuXG4iCisiXG4iCisiTm90ZSB0aGF0IG5vdCBhbGwgZmlsZSBvYmplY3RzIGFyZSBzZWVrYWJsZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX0ZpbGVJT19zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19GaWxlSU9fc2Vla19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT19zZWVrX2ltcGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fc2VlayhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3M7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19GaWxlSU9fdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkN1cnJlbnQgZmlsZSBwb3NpdGlvbi5cbiIKKyJcbiIKKyJDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLiIpOworCisjZGVmaW5lIF9JT19GSUxFSU9fVEVMTF9NRVRIT0RERUYgICAgXAorICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fRmlsZUlPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdGVsbF9pbXBsKGZpbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3RlbGwoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fRmlsZUlPX3RlbGxfaW1wbChzZWxmKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GVFJVTkNBVEUpCisKK1B5RG9jX1NUUlZBUihfaW9fRmlsZUlPX3RydW5jYXRlX19kb2NfXywKKyJ0cnVuY2F0ZSgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzIGFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLlxuIgorIlxuIgorIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgorIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilfaW9fRmlsZUlPX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIF9pb19GaWxlSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3NvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0ZpbGVJT190cnVuY2F0ZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwb3NvYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcG9zb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRlRSVU5DQVRFKSAqLworCitQeURvY19TVFJWQVIoX2lvX0ZpbGVJT19pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgVFRZIGRldmljZS4iKTsKKworI2RlZmluZSBfSU9fRklMRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19GaWxlSU9faXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX0ZpbGVJT19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9faXNhdHR5X2ltcGwoZmlsZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19GaWxlSU9faXNhdHR5KGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0ZpbGVJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworI2lmbmRlZiBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWEyMGIxMGM4MWFkZDY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlYTA3OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCkBAIC0wLDAgKzEsMjc5IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfdGVsbF9fZG9jX18sCisidGVsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV90ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV90ZWxsX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfdGVsbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfZmx1c2hfX2RvY19fLAorImZsdXNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRmx1c2ggd3JpdGUgYnVmZmVycywgaWYgYXBwbGljYWJsZS5cbiIKKyJcbiIKKyJUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3IgcmVhZC1vbmx5IGFuZCBub24tYmxvY2tpbmcgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9GTFVTSF9NRVRIT0RERUYgICAgXAorICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2VfZmx1c2gsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9mbHVzaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9mbHVzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfZmx1c2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX19JT0Jhc2VfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2Nsb3NlX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fSU9CYXNlX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy5cbiIKKyJcbiIKKyJJZiBGYWxzZSwgc2VlaygpLCB0ZWxsKCkgYW5kIHRydW5jYXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi5cbiIKKyJUaGlzIG1ldGhvZCBtYXkgbmVlZCB0byBkbyBhIHRlc3Qgc2VlaygpLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3NlZWthYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2VfcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuXG4iCisiXG4iCisiSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuXG4iCisiXG4iCisiSWYgRmFsc2UsIHdyaXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9XUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV93cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV93cml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2Vfd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBpZiBvbmUgZXhpc3RzLlxuIgorIlxuIgorIkFuIElPRXJyb3IgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX0ZJTEVOT19NRVRIT0RERUYgICAgXAorICAgIHsiZmlsZW5vIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fSU9CYXNlX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmlsZW5vX2ltcGwoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfZmlsZW5vKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX0lPQmFzZV9maWxlbm9faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhbiBcJ2ludGVyYWN0aXZlXCcgc3RyZWFtLlxuIgorIlxuIgorIlJldHVybiBGYWxzZSBpZiBpdCBjYW5cJ3QgYmUgZGV0ZXJtaW5lZC4iKTsKKworI2RlZmluZSBfSU9fX0lPQkFTRV9JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilfaW9fX0lPQmFzZV9pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX0lPQmFzZV9pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2lzYXR0eV9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX2lzYXR0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19JT0Jhc2VfaXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fX0lPQmFzZV9yZWFkbGluZV9fZG9jX18sCisicmVhZGxpbmUoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS5cbiIKKyJcbiIKKyJJZiBzaXplIGlzIHNwZWNpZmllZCwgYXQgbW9zdCBzaXplIGJ5dGVzIHdpbGwgYmUgcmVhZC5cbiIKKyJcbiIKKyJUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiXCdcXG5cJyBmb3IgYmluYXJ5IGZpbGVzOyBmb3IgdGV4dFxuIgorImZpbGVzLCB0aGUgbmV3bGluZXMgYXJndW1lbnQgdG8gb3BlbiBjYW4gYmUgdXNlZCB0byBzZWxlY3QgdGhlIGxpbmVcbiIKKyJ0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuIik7CisKKyNkZWZpbmUgX0lPX19JT0JBU0VfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19fSU9CYXNlX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGxpbWl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChzZWxmLCBsaW1pdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fSU9CYXNlX3JlYWRsaW5lc19fZG9jX18sCisicmVhZGxpbmVzKCRzZWxmLCBoaW50PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uXG4iCisiXG4iCisiaGludCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubyBtb3JlXG4iCisibGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGxcbiIKKyJsaW5lcyBzbyBmYXIgZXhjZWVkcyBoaW50LiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1JFQURMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9pb19fSU9CYXNlX3JlYWRsaW5lcywgTUVUSF9WQVJBUkdTLCBfaW9fX0lPQmFzZV9yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGhpbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19JT0Jhc2VfcmVhZGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGhpbnQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lcyIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmaGludCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZXNfaW1wbChzZWxmLCBoaW50KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX19JT0Jhc2Vfd3JpdGVsaW5lc19fZG9jX18sCisid3JpdGVsaW5lcygkc2VsZiwgbGluZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19fSU9CQVNFX1dSSVRFTElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlbGluZXMiLCAoUHlDRnVuY3Rpb24pX2lvX19JT0Jhc2Vfd3JpdGVsaW5lcywgTUVUSF9PLCBfaW9fX0lPQmFzZV93cml0ZWxpbmVzX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW9fX1Jhd0lPQmFzZV9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fX1JBV0lPQkFTRV9SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19fUmF3SU9CYXNlX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX19SYXdJT0Jhc2VfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAorICAgICAgICAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1Jhd0lPQmFzZV9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVudGlsIEVPRiwgdXNpbmcgbXVsdGlwbGUgcmVhZCgpIGNhbGwuIik7CisKKyNkZWZpbmUgX0lPX19SQVdJT0JBU0VfUkVBREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFsbCIsIChQeUNGdW5jdGlvbilfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fUmF3SU9CYXNlX3JlYWRhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTAzNDE1MmI2ODg0ZTY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTMyYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCkBAIC0wLDAgKzEsMjg2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX2dldHZhbHVlX19kb2NfXywKKyJnZXR2YWx1ZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHJpZXZlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIG9iamVjdC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fR0VUVkFMVUVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHZhbHVlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19nZXR2YWx1ZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19nZXR2YWx1ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2dldHZhbHVlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX2dldHZhbHVlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT190ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVGVsbCB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT190ZWxsLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX3RlbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190ZWxsX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3RlbGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT190ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZF9fZG9jX18sCisicmVhZCgkc2VsZiwgc2l6ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgY2hhcmFjdGVycywgcmV0dXJuZWQgYXMgYSBzdHJpbmcuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GXG4iCisiaXMgcmVhY2hlZC4gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3JlYWQsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3JlYWRfaW1wbChzZWxmLCBhcmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLlxuIgorIlxuIgorIlJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIEVPRiBpcyBoaXQgaW1tZWRpYXRlbHkuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURMSU5FX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGxpbmVfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fcmVhZGxpbmUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19TdHJpbmdJT190cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHBvcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgc2l6ZSB0byBwb3MuXG4iCisiXG4iCisiVGhlIHBvcyBhcmd1bWVudCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhc1xuIgorInJldHVybmVkIGJ5IHRlbGwoKS4gIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLlxuIgorIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190cnVuY2F0ZV9pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT190cnVuY2F0ZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZhcmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX3NlZWtfX2RvY19fLAorInNlZWsoJHNlbGYsIHBvcywgd2hlbmNlPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3RyZWFtIHBvc2l0aW9uLlxuIgorIlxuIgorIlNlZWsgdG8gY2hhcmFjdGVyIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZTpcbiIKKyIgICAgMCAgU3RhcnQgb2Ygc3RyZWFtICh0aGUgZGVmYXVsdCkuICBwb3Mgc2hvdWxkIGJlID49IDA7XG4iCisiICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbXVzdCBiZSAwO1xuIgorIiAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIG11c3QgYmUgMC5cbiIKKyJSZXR1cm5zIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1NFRUtfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3NlZWssIE1FVEhfVkFSQVJHUywgX2lvX1N0cmluZ0lPX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5X3NzaXplX3QgcG9zLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19zZWVrKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvczsKKyAgICBpbnQgd2hlbmNlID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAorICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgc3RyaW5nIHRvIGZpbGUuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvXG4iCisidGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX3dyaXRlLCBNRVRIX08sIF9pb19TdHJpbmdJT193cml0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBJTyBvYmplY3QuXG4iCisiXG4iCisiQXR0ZW1wdGluZyBhbnkgZnVydGhlciBvcGVyYXRpb24gYWZ0ZXIgdGhlIG9iamVjdCBpcyBjbG9zZWRcbiIKKyJ3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLiIpOworCisjZGVmaW5lIF9JT19TVFJJTkdJT19DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2lvX1N0cmluZ0lPX2Nsb3NlLCBNRVRIX05PQVJHUywgX2lvX1N0cmluZ0lPX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fY2xvc2VfaW1wbChzdHJpbmdpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fU3RyaW5nSU9fY2xvc2Uoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19TdHJpbmdJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2lvX1N0cmluZ0lPX19faW5pdF9fX19kb2NfXywKKyJTdHJpbmdJTyhpbml0aWFsX3ZhbHVlPVwnXCcsIG5ld2xpbmU9XCdcXG5cJylcbiIKKyItLVxuIgorIlxuIgorIlRleHQgSS9PIGltcGxlbWVudGF0aW9uIHVzaW5nIGFuIGluLW1lbW9yeSBidWZmZXIuXG4iCisiXG4iCisiVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmVcbiIKKyJhcmd1bWVudCBpcyBsaWtlIHRoZSBvbmUgb2YgVGV4dElPV3JhcHBlclwncyBjb25zdHJ1Y3Rvci4iKTsKKworc3RhdGljIGludAorX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaik7CisKK3N0YXRpYyBpbnQKK19pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLAorICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fX19pbml0X19faW1wbCgoc3RyaW5naW8gKilzZWxmLCB2YWx1ZSwgbmV3bGluZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fcmVhZGFibGVfX2RvY19fLAorInJlYWRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fcmVhZGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkYWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT19yZWFkYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX0lPX1NUUklOR0lPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fU3RyaW5nSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fU3RyaW5nSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT193cml0YWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19TdHJpbmdJT193cml0YWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fU3RyaW5nSU9fc2Vla2FibGVfX2RvY19fLAorInNlZWthYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHNlZWtlZC4iKTsKKworI2RlZmluZSBfSU9fU1RSSU5HSU9fU0VFS0FCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19TdHJpbmdJT19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19TdHJpbmdJT19zZWVrYWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc3RyaW5naW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1N0cmluZ0lPX3NlZWthYmxlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDYxY2YzYTIwY2QxNGVkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3ZThjNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0wLDAgKzEsNDU2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19fX2RvY19fLAorIkluY3JlbWVudGFsTmV3bGluZURlY29kZXIoZGVjb2RlciwgdHJhbnNsYXRlLCBlcnJvcnM9XCdzdHJpY3RcJylcbiIKKyItLVxuIgorIlxuIgorIkNvZGVjIHVzZWQgd2hlbiByZWFkaW5nIGEgZmlsZSBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZS5cbiIKKyJcbiIKKyJJdCB3cmFwcyBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxcclxcbiBhbmQgXFxyIGludG8gXFxuLlxuIgorIkl0IGFsc28gcmVjb3JkcyB0aGUgdHlwZXMgb2YgbmV3bGluZXMgZW5jb3VudGVyZWQuICBXaGVuIHVzZWQgd2l0aFxuIgorInRyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluXG4iCisib25lIHBpZWNlLiBXaGVuIHVzZWQgd2l0aCBkZWNvZGVyPU5vbmUsIGl0IGV4cGVjdHMgdW5pY29kZSBzdHJpbmdzIGFzXG4iCisiZGVjb2RlIGlucHV0IGFuZCB0cmFuc2xhdGVzIG5ld2xpbmVzIHdpdGhvdXQgZmlyc3QgaW52b2tpbmcgYW4gZXh0ZXJuYWxcbiIKKyJkZWNvZGVyLiIpOworCitzdGF0aWMgaW50CitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyLCBpbnQgdHJhbnNsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXJyb3JzKTsKKworc3RhdGljIGludAorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkZWNvZGVyOworICAgIGludCB0cmFuc2xhdGU7CisgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBpbnB1dCwgZmluYWw9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlucHV0OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZmluYWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9fZG9jX18sCisiZ2V0c3RhdGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0dFVFNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9nZXRzdGF0ZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZ2V0c3RhdGVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3NldHN0YXRlX19kb2NfXywKKyJzZXRzdGF0ZSgkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX1NFVFNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZSwgTUVUSF9PLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXQsIE1FVEhfTk9BUkdTLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfcmVzZXRfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0KG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX3Jlc2V0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19fZG9jX18sCisiVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsXG4iCisiICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz1GYWxzZSwgd3JpdGVfdGhyb3VnaD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuXG4iCisiXG4iCisiZW5jb2RpbmcgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHRoYXQgdGhlIHN0cmVhbSB3aWxsIGJlXG4iCisiZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuXG4iCisiXG4iCisiZXJyb3JzIGRldGVybWluZXMgdGhlIHN0cmljdG5lc3Mgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIChzZWVcbiIKKyJoZWxwKGNvZGVjcy5Db2RlYykgb3IgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlcikgYW5kXG4iCisiZGVmYXVsdHMgdG8gXCJzdHJpY3RcIi5cbiIKKyJcbiIKKyJuZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCBcJ1wnLFxuIgorIlwnXFxuXCcsIFwnXFxyXCcsIGFuZCBcJ1xcclxcblwnLiAgSXQgd29ya3MgYXMgZm9sbG93czpcbiIKKyJcbiIKKyIqIE9uIGlucHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzXG4iCisiICBlbmFibGVkLiBMaW5lcyBpbiB0aGUgaW5wdXQgY2FuIGVuZCBpbiBcJ1xcblwnLCBcJ1xcclwnLCBvciBcJ1xcclxcblwnLCBhbmRcbiIKKyIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gXCdcXG5cJyBiZWZvcmUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlXG4iCisiICBjYWxsZXIuIElmIGl0IGlzIFwnXCcsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKKyIgIGVuZGluZ3MgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLiBJZiBpdCBoYXMgYW55IG9mXG4iCisiICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlblxuIgorIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgorIlxuIgorIiogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSBcJ1xcblwnIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKKyIgIHRyYW5zbGF0ZWQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yLCBvcy5saW5lc2VwLiBJZlxuIgorIiAgbmV3bGluZSBpcyBcJ1wnIG9yIFwnXFxuXCcsIG5vIHRyYW5zbGF0aW9uIHRha2VzIHBsYWNlLiBJZiBuZXdsaW5lIGlzIGFueVxuIgorIiAgb2YgdGhlIG90aGVyIGxlZ2FsIHZhbHVlcywgYW55IFwnXFxuXCcgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCisiICB0byB0aGUgZ2l2ZW4gc3RyaW5nLlxuIgorIlxuIgorIklmIGxpbmVfYnVmZmVyaW5nIGlzIFRydWUsIGEgY2FsbCB0byBmbHVzaCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvXG4iCisid3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4iKTsKKworc3RhdGljIGludAorX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBsaW5lX2J1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRlX3Rocm91Z2gpOworCitzdGF0aWMgaW50CitfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImxpbmVfYnVmZmVyaW5nIiwgIndyaXRlX3Rocm91Z2giLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUgPSBOVUxMOworICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CisgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fX2ltcGwoKHRleHRpbyAqKXNlbGYsIGJ1ZmZlciwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgbGluZV9idWZmZXJpbmcsIHdyaXRlX3Rocm91Z2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfX2RvY19fLAorImRldGFjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJkZXRhY2giLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfZGV0YWNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIHRleHQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1dSSVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl93cml0ZSwgTUVUSF9PLCBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3dyaXRlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGV4dDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwoc2VsZiwgdGV4dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwoc2VsZiwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX19kb2NfXywKKyJyZWFkbGluZSgkc2VsZiwgc2l6ZT0tMSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9pbXBsKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRsaW5lKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwKKyAgICAgICAgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2lvX1RleHRJT1dyYXBwZXJfc2Vla19fZG9jX18sCisic2Vlaygkc2VsZiwgY29va2llLCB3aGVuY2U9MCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9zZWVrLCBNRVRIX1ZBUkFSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpjb29raWVPYmosIGludCB3aGVuY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfc2Vlayh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb29raWVPYmo7CisgICAgaW50IHdoZW5jZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKKyAgICAgICAgJmNvb2tpZU9iaiwgJndoZW5jZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9zZWVrX2ltcGwoc2VsZiwgY29va2llT2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl90ZWxsX19kb2NfXywKKyJ0ZWxsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9URUxMX01FVEhPRERFRiAgICBcCisgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19UZXh0SU9XcmFwcGVyX3RlbGwsIE1FVEhfTk9BUkdTLCBfaW9fVGV4dElPV3JhcHBlcl90ZWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl90ZWxsX2ltcGwodGV4dGlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RlbGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fVGV4dElPV3JhcHBlcl90ZWxsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJHNlbGYsIHBvcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfSU9fVEVYVElPV1JBUFBFUl9UUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsidHJ1bmNhdGUiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlX2ltcGwodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19UZXh0SU9XcmFwcGVyX3RydW5jYXRlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZwb3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vLCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9maWxlbm9faW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfZmlsZW5vX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9fZG9jX18sCisic2Vla2FibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1NFRUtBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3NlZWthYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3NlZWthYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX3dyaXRhYmxlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0lPX1RFWFRJT1dSQVBQRVJfSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5LCBNRVRIX05PQVJHUywgX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9pc2F0dHlfaW1wbCh0ZXh0aW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5KHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfaXNhdHR5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9fZG9jX18sCisiZmx1c2goJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0ZMVVNIX01FVEhPRERFRiAgICBcCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9mbHVzaCwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaF9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9mbHVzaCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9JT19URVhUSU9XUkFQUEVSX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fVGV4dElPV3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9jbG9zZV9pbXBsKHRleHRpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fVGV4dElPV3JhcHBlcl9jbG9zZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDc0NTA4YTcuLjEyZTM3YmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC00Myw2ICs0MywxOSBAQAogI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5GaWxlSU8gImZpbGVpbyAqIiAiJlB5RmlsZUlPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYzc3NzA4YjQxZmRhNzBjXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGZkOwpAQCAtNTMsNiArNjYsNyBAQAogICAgIHNpZ25lZCBpbnQgc2Vla2FibGUgOiAyOyAvKiAtMSBtZWFucyB1bmtub3duICovCiAgICAgdW5zaWduZWQgaW50IGNsb3NlZmQgOiAxOwogICAgIGNoYXIgZmluYWxpemluZzsKKyAgICB1bnNpZ25lZCBpbnQgYmxrc2l6ZTsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiB9IGZpbGVpbzsKQEAgLTEwNiw5ICsxMjAsMTEgQEAKICAgICAgICAgLyogZmQgaXMgYWNjZXNzaWJsZSBhbmQgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNsb3NlZCBpdCAqLwogICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICAgICAgZXJyID0gY2xvc2UoZmQpOwogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzYXZlX2Vycm5vID0gZXJybm87CkBAIC0xMjMsOCArMTM5LDE4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uY2xvc2UKKworQ2xvc2UgdGhlIGZpbGUuCisKK0EgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fY2xvc2UoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19jbG9zZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzM3YTMxOWVmM2JhZDBiIGlucHV0PWYzNTIzMTc2MGQ1NGE1MjJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKQEAgLTE2OCw2ICsxOTQsNyBAQAogICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CiAgICAgICAgIHNlbGYtPmFwcGVuZGluZyA9IDA7CiAgICAgICAgIHNlbGYtPnNlZWthYmxlID0gLTE7CisgICAgICAgIHNlbGYtPmJsa3NpemUgPSAwOwogICAgICAgICBzZWxmLT5jbG9zZWZkID0gMTsKICAgICAgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIH0KQEAgLTE3NSw1NyArMjAyLDQwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOwogfQogCi0vKiBPbiBVbml4LCBvcGVuIHdpbGwgc3VjY2VlZCBmb3IgZGlyZWN0b3JpZXMuCi0gICBJbiBQeXRob24sIHRoZXJlIHNob3VsZCBiZSBubyBmaWxlIG9iamVjdHMgcmVmZXJyaW5nIHRvCi0gICBkaXJlY3Rvcmllcywgc28gd2UgbmVlZCBhIGNoZWNrLiAgKi8KLQotc3RhdGljIGludAotZGlyY2hlY2soZmlsZWlvKiBzZWxmLCBQeU9iamVjdCAqbmFtZW9iaikKLXsKLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVQpICYmIGRlZmluZWQoU19JU0RJUikgJiYgZGVmaW5lZChFSVNESVIpCi0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIGlmIChzZWxmLT5mZCA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJmJ1ZikgPT0gMCAmJiBTX0lTRElSKGJ1Zi5zdF9tb2RlKSkgewotICAgICAgICBlcnJubyA9IEVJU0RJUjsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotI2VuZGlmCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLWNoZWNrX2ZkKGludCBmZCkKLXsKLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVQpCi0gICAgc3RydWN0IHN0YXQgYnVmOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAoZnN0YXQoZmQsICZidWYpIDwgMCAmJiBlcnJubyA9PSBFQkFERikpIHsKLSAgICAgICAgUHlPYmplY3QgKmV4YzsKLSAgICAgICAgY2hhciAqbXNnID0gc3RyZXJyb3IoRUJBREYpOwotICAgICAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfT1NFcnJvciwgIihpcykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUJBREYsIG1zZyk7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19PU0Vycm9yLCBleGMpOwotICAgICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQogI2lmZGVmIE9fQ0xPRVhFQwogZXh0ZXJuIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uX19pbml0X18KKyAgICBmaWxlIGFzIG5hbWVvYmo6IG9iamVjdAorICAgIG1vZGU6IHN0ciA9ICJyIgorICAgIGNsb3NlZmQ6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICBvcGVuZXI6IG9iamVjdCA9IE5vbmUKKworT3BlbiBhIGZpbGUuCisKK1RoZSBtb2RlIGNhbiBiZSAncicgKGRlZmF1bHQpLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcsCit3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiAgVGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0Citkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWQKK3doZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQSBGaWxlRXhpc3RzRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeQorZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nIGltcGxpZXMKK3dyaXRpbmcgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byAndycuQWRkIGEgJysnIHRvIHRoZSBtb2RlCit0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4gQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5CitwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUKK29iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuCisqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqCityZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nIE5vbmUpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1maWxlaW9faW5pdChQeU9iamVjdCAqb3NlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19GaWxlSU9fX19pbml0X19faW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLCBjb25zdCBjaGFyICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNDEzZjY4ZTY0ODRiYmQgaW5wdXQ9MTkzMTY0ZTI5M2Q2YzA5N10qLwogewotICAgIGZpbGVpbyAqc2VsZiA9IChmaWxlaW8gKikgb3NlbGY7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnN0cmluZ29iaiA9IE5VTEwsICpvcGVuZXIgPSBQeV9Ob25lOwotICAgIGNoYXIgKm1vZGUgPSAiciI7Ci0gICAgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc3RyaW5nb2JqID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9VTklDT0RFICp3aWRlbmFtZSA9IE5VTEw7CiAjZW5kaWYKQEAgLTIzMywxNSArMjQzLDE2IEBACiAgICAgaW50IHJ3YSA9IDAsIHBsdXMgPSAwOwogICAgIGludCBmbGFncyA9IDA7CiAgICAgaW50IGZkID0gLTE7Ci0gICAgaW50IGNsb3NlZmQgPSAxOwogICAgIGludCBmZF9pc19vd24gPSAwOwogI2lmZGVmIE9fQ0xPRVhFQwogICAgIGludCAqYXRvbWljX2ZsYWdfd29ya3MgPSAmX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbGlmICFkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrcyA9IE5VTEw7CiAjZW5kaWYKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IGZkZnN0YXQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBhc3NlcnQoUHlGaWxlSU9fQ2hlY2sob3NlbGYpKTsKKyAgICBhc3NlcnQoUHlGaWxlSU9fQ2hlY2soc2VsZikpOwogICAgIGlmIChzZWxmLT5mZCA+PSAwKSB7CiAgICAgICAgIGlmIChzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgICAgICAvKiBIYXZlIHRvIGNsb3NlIHRoZSBleGlzdGluZyBmaWxlIGZpcnN0LiAqLwpAQCAtMjUyLDExICsyNjMsNiBAQAogICAgICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xzaU86ZmlsZWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZW5lcikpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIGlmIChQeUZsb2F0X0NoZWNrKG5hbWVvYmopKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0Iik7CkBAIC0yODAsNyArMjg2LDcgQEAKICAgICAgICAgaWYgKHdpZGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICh3Y3NsZW4od2lkZW5hbWUpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0gZWxzZQpAQCAtMzY2LDggKzM3Miw2IEBACiAjZW5kaWYKIAogICAgIGlmIChmZCA+PSAwKSB7Ci0gICAgICAgIGlmIChjaGVja19mZChmZCkpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBzZWxmLT5mZCA9IGZkOwogICAgICAgICBzZWxmLT5jbG9zZWZkID0gY2xvc2VmZDsKICAgICB9CkBAIC0zODEsMTUgKzM4NSwyMCBAQAogCiAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgaWYgKG9wZW5lciA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgfSB3aGlsZSAoc2VsZi0+ZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBpZiAoYXN5bmNfZXJyKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZmRvYmo7CkBAIC00MjcsOCArNDM2LDI0IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOwogI2VuZGlmCiAgICAgfQotICAgIGlmIChkaXJjaGVjayhzZWxmLCBuYW1lb2JqKSA8IDApCisKKyAgICBzZWxmLT5ibGtzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKyAgICBpZiAoX1B5X2ZzdGF0KHNlbGYtPmZkLCAmZmRmc3RhdCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOworI2lmIGRlZmluZWQoU19JU0RJUikgJiYgZGVmaW5lZChFSVNESVIpCisgICAgLyogT24gVW5peCwgb3BlbiB3aWxsIHN1Y2NlZWQgZm9yIGRpcmVjdG9yaWVzLgorICAgICAgIEluIFB5dGhvbiwgdGhlcmUgc2hvdWxkIGJlIG5vIGZpbGUgb2JqZWN0cyByZWZlcnJpbmcgdG8KKyAgICAgICBkaXJlY3Rvcmllcywgc28gd2UgbmVlZCBhIGNoZWNrLiAgKi8KKyAgICBpZiAoU19JU0RJUihmZGZzdGF0LnN0X21vZGUpKSB7CisgICAgICAgIGVycm5vID0gRUlTRElSOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgbmFtZW9iaik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorI2VuZGlmIC8qIGRlZmluZWQoU19JU0RJUikgKi8KKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKKyAgICBpZiAoZmRmc3RhdC5zdF9ibGtzaXplID4gMSkKKyAgICAgICAgc2VsZi0+Ymxrc2l6ZSA9IGZkZnN0YXQuc3RfYmxrc2l6ZTsKKyNlbmRpZiAvKiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUgKi8KIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQogICAgIC8qIGRvbid0IHRyYW5zbGF0ZSBuZXdsaW5lcyAoXHJcbiA8PT4gXG4pICovCkBAIC01MDYsMzIgKzUzMSw2MCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLmZpbGVubworCitSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19maWxlbm8oZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19maWxlbm9faW1wbChmaWxlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTk2MjZjZTUzOThlY2U5MCBpbnB1dD0wYjliMmRlNjczMzVhZGEzXSovCiB7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKSBzZWxmLT5mZCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGFibGUKKworVHJ1ZSBpZiBmaWxlIHdhcyBvcGVuZWQgaW4gYSByZWFkIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZGFibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT19yZWFkYWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NDA3NDRhNjE1MGZlOWJhIGlucHV0PWEzZmRmZWQ2ZWVhNzIxYzVdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnJlYWRhYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy53cml0YWJsZQorCitUcnVlIGlmIGZpbGUgd2FzIG9wZW5lZCBpbiBhIHdyaXRlIG1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fd3JpdGFibGUoZmlsZWlvICpzZWxmKQorX2lvX0ZpbGVJT193cml0YWJsZV9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NmNlZmM1NDQ2ZTg5OTc3IGlucHV0PWMyMDRhODA4Y2EyZTE3NDhdKi8KIHsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPndyaXRhYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5zZWVrYWJsZQorCitUcnVlIGlmIGZpbGUgc3VwcG9ydHMgcmFuZG9tLWFjY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19zZWVrYWJsZShmaWxlaW8gKnNlbGYpCitfaW9fRmlsZUlPX3NlZWthYmxlX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3OTA5Y2EwYTQyZTkyODcgaW5wdXQ9YzhlNTU1NGQyZmQ2M2M3Zl0qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC01NDgsMTEgKzYwMSwxOSBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnNlZWthYmxlKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkZpbGVJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkaW50byhmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKGZpbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjAxYTVhMjJjODQxNWNiNCBpbnB1dD00NzIxZDdiNjhiMTU0ZWFmXSovCiB7Ci0gICAgUHlfYnVmZmVyIHBidWY7Ci0gICAgUHlfc3NpemVfdCBuLCBsZW47CisgICAgUHlfc3NpemVfdCBuOwogICAgIGludCBlcnI7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNTYwLDQ4ICs2MjEsMjEgQEAKICAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidyoiLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpIHsKLSAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZXJybm8gPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcGJ1Zi5idWYsIChpbnQpbGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgbGVuKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7CisgICAgbiA9IF9QeV9yZWFkKHNlbGYtPmZkLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeUJ1ZmZlcl9SZWxlYXNlKCkgY2FuIGluZGlyZWN0bHkgbW9kaWZ5IGl0ICovCiAgICAgZXJyID0gZXJybm87Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorCisgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG4pOwogfQogCi0jaWZuZGVmIEhBVkVfRlNUQVQKLQotc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKLXsKLSAgICBfUHlfSURFTlRJRklFUihyZWFkYWxsKTsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3JlYWRhbGwsICJPIiwgc2VsZik7Ci19Ci0KLSNlbHNlCi0KIHN0YXRpYyBzaXplX3QKIG5ld19idWZmZXJzaXplKGZpbGVpbyAqc2VsZiwgc2l6ZV90IGN1cnJlbnRzaXplKQogewpAQCAtNjIxLDEwICs2NTUsMjAgQEAKICAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8ucmVhZGFsbAorCitSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGZpbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCitJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwKK29yIE5vbmUgaWYgbm8gZGF0YSBpcyBhdmFpbGFibGUuICBSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19yZWFkYWxsKGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9fcmVhZGFsbF9pbXBsKGZpbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYWEwMjkyYjIxM2I0MDIyIGlucHV0PWRiZGMxMzdmNTU2MDI4MzRdKi8KIHsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKICAgICBQeV9vZmZfdCBwb3MsIGVuZDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgYnl0ZXNfcmVhZCA9IDA7CkBAIC02MzYsMTMgKzY4MCwxNiBAQAogICAgIGlmICghX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgcG9zID0gX2xzZWVraTY0KHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOwogI2Vsc2UKICAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKICNlbmRpZgotICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKQotICAgICAgICBlbmQgPSBzdC5zdF9zaXplOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2Uoc2VsZi0+ZmQsICZzdGF0dXMpID09IDApCisgICAgICAgIGVuZCA9IHN0YXR1cy5zdF9zaXplOwogICAgIGVsc2UKICAgICAgICAgZW5kID0gKFB5X29mZl90KS0xOwogCkBAIC02NzYsMzUgKzcyMywyMiBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbiA9IGJ1ZnNpemUgLSBieXRlc19yZWFkOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKG4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbiA9IElOVF9NQVg7Ci0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgKGludCluKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwgbik7Ci0jZW5kaWYKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBuID0gX1B5X3JlYWQoc2VsZi0+ZmQsCisgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgYnl0ZXNfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemUgLSBieXRlc19yZWFkKTsKKwogICAgICAgICBpZiAobiA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChuIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChuID09IC0xKSB7CiAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBpZiAoYnl0ZXNfcmVhZCA+IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBieXRlc19yZWFkICs9IG47CkBAIC03MTgsMTQgKzc1MiwyNCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0ZTVEFUICovCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLnJlYWQKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQuCitJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fcmVhZChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT19yZWFkX2ltcGwoZmlsZWlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDI1MjhkMzlkZDBjYTY0MSBpbnB1dD01YzZjYWE1NDkwYzEzYTliXSovCiB7CiAgICAgY2hhciAqcHRyOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKICAgICBQeU9iamVjdCAqYnl0ZXM7CiAKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQpAQCAtNzMzLDQxICs3NzcsMjkgQEAKICAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIHJldHVybiBmaWxlaW9fcmVhZGFsbChzZWxmKTsKLSAgICB9CisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gX2lvX0ZpbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CiAKICNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCiAgICAgaWYgKHNpemUgPiBJTlRfTUFYKQogICAgICAgICBzaXplID0gSU5UX01BWDsKICNlbmRpZgorCiAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIG4gPSByZWFkKHNlbGYtPmZkLCBwdHIsIChpbnQpc2l6ZSk7Ci0jZWxzZQotICAgICAgICBuID0gcmVhZChzZWxmLT5mZCwgcHRyLCBzaXplKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7Ci0KLSAgICBpZiAobiA8IDApIHsKKyAgICBuID0gX1B5X3JlYWQoc2VsZi0+ZmQsIHB0ciwgc2l6ZSk7CisgICAgaWYgKG4gPT0gLTEpIHsKKyAgICAgICAgLyogY29weSBlcnJubyBiZWNhdXNlIFB5X0RFQ1JFRigpIGNhbiBpbmRpcmVjdGx5IG1vZGlmeSBpdCAqLwogICAgICAgICBpbnQgZXJyID0gZXJybm87CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIGlmIChlcnIgPT0gRUFHQUlOKQorICAgICAgICBpZiAoZXJyID09IEVBR0FJTikgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzgxLDExICs4MTMsMjMgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIGJ5dGVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBieXRlcyBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgd3JpdHRlbi4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uCitUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuICBJbiBub24tYmxvY2tpbmcgbW9kZSwKK3JldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fd3JpdGUoZmlsZWlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19GaWxlSU9fd3JpdGVfaW1wbChmaWxlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDA1OWRiM2QzNjNhMmY3IGlucHV0PWZmYmQ4ODM0ZjQ0N2FjMzFdKi8KIHsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBQeV9zc2l6ZV90IG4sIGxlbjsKKyAgICBQeV9zc2l6ZV90IG47CiAgICAgaW50IGVycjsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCkBAIC03OTMsMzkgKzgzNywxNSBAQAogICAgIGlmICghc2VsZi0+d3JpdGFibGUpCiAgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KiIsICZwYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbGVuID0gcGJ1Zi5sZW47Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAobGVuID4gMzI3NjcgJiYgaXNhdHR5KHNlbGYtPmZkKSkgewotICAgICAgICAgICAgLyogSXNzdWUgIzExMzk1OiB0aGUgV2luZG93cyBjb25zb2xlIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QKLSAgICAgICAgICAgICAgIGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQgbW9kZSBpcwotICAgICAgICAgICAgICAgYmluYXJ5IGFuZCB0aGUgbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiA2NiwwMDAgYnl0ZXMgKG9yIGxlc3MsCi0gICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuICovCi0gICAgICAgICAgICBsZW4gPSAzMjc2NzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgKGludClsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBwYnVmLmJ1ZiwgbGVuKTsKLSNlbmRpZgotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICBuID0gLTE7CisgICAgbiA9IF9QeV93cml0ZShzZWxmLT5mZCwgYi0+YnVmLCBiLT5sZW4pOworICAgIC8qIGNvcHkgZXJybm8gYmVjYXVzZSBQeUJ1ZmZlcl9SZWxlYXNlKCkgY2FuIGluZGlyZWN0bHkgbW9kaWZ5IGl0ICovCiAgICAgZXJyID0gZXJybm87CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLQogICAgIGlmIChuIDwgMCkgewotICAgICAgICBpZiAoZXJyID09IEVBR0FJTikKKyAgICAgICAgaWYgKGVyciA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTg3MywxMSArODkzLDEzIEBACiAKICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJlcyA9IF9sc2Vla2k2NChmZCwgcG9zLCB3aGVuY2UpOwogI2Vsc2UKICAgICAgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKICNlbmRpZgorICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0gZWxzZQogICAgICAgICByZXMgPSAtMTsKQEAgLTg5MSwyMyArOTEzLDQ0IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb19zZWVrKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnBvc29iajsKLSAgICBpbnQgd2hlbmNlID0gMDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8uc2VlaworICAgIHBvczogb2JqZWN0CisgICAgd2hlbmNlOiBpbnQgPSAwCisgICAgLwogCitNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZCByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24uCisKK0FyZ3VtZW50IG9mZnNldCBpcyBhIGJ5dGUgY291bnQuICBPcHRpb25hbCBhcmd1bWVudCB3aGVuY2UgZGVmYXVsdHMgdG8KK1NFRUtfU0VUIG9yIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldCBzaG91bGQgYmUgPj0gMCk7IG90aGVyIHZhbHVlcworYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLAorYW5kIFNFRUtfRU5EIG9yIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHkgbmVnYXRpdmUsIGFsdGhvdWdoCittYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuCisKK05vdGUgdGhhdCBub3QgYWxsIGZpbGUgb2JqZWN0cyBhcmUgc2Vla2FibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fRmlsZUlPX3NlZWtfaW1wbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICpwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzk3NmFjZGYwNTRlNjY1NSBpbnB1dD0wNDM5MTk0YjA3NzRkNDU0XSovCit7CiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpIiwgJnBvc29iaiwgJndoZW5jZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIHBvcnRhYmxlX2xzZWVrKHNlbGYtPmZkLCBwb3NvYmosIHdoZW5jZSk7CisgICAgcmV0dXJuIHBvcnRhYmxlX2xzZWVrKHNlbGYtPmZkLCBwb3MsIHdoZW5jZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8udGVsbAorCitDdXJyZW50IGZpbGUgcG9zaXRpb24uCisKK0NhbiByYWlzZSBPU0Vycm9yIGZvciBub24gc2Vla2FibGUgZmlsZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9fdGVsbChmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT190ZWxsX2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmZTIxNDcwNTg4MDlkMGIgaW5wdXQ9ODA3ZTI0ZWFkNGNlYzJmOV0qLwogewogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC05MTYsMTMgKzk1OSwyMiBAQAogfQogCiAjaWZkZWYgSEFWRV9GVFJVTkNBVEUKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5GaWxlSU8udHJ1bmNhdGUKKyAgICBzaXplIGFzIHBvc29iajogb2JqZWN0ID0gTlVMTAorICAgIC8KKworVHJ1bmNhdGUgdGhlIGZpbGUgdG8gYXQgbW9zdCBzaXplIGJ5dGVzIGFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLgorCitTaXplIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFzIHJldHVybmVkIGJ5IHRlbGwoKS4KK1RoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZpbGVpb190cnVuY2F0ZShmaWxlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX0ZpbGVJT190cnVuY2F0ZV9pbXBsKGZpbGVpbyAqc2VsZiwgUHlPYmplY3QgKnBvc29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDljYTdhOTE2YzE3NmZhIGlucHV0PTkwMjZhZjQ0Njg2YjczMThdKi8KIHsKLSAgICBQeU9iamVjdCAqcG9zb2JqID0gTlVMTDsgLyogdGhlIG5ldyBzaXplIHdhbnRlZCBieSB0aGUgdXNlciAqLwotI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgUHlfb2ZmX3QgcG9zOwotI2VuZGlmCiAgICAgaW50IHJldDsKICAgICBpbnQgZmQ7CiAKQEAgLTkzMiw5ICs5ODQsNiBAQAogICAgIGlmICghc2VsZi0+d3JpdGFibGUpCiAgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZwb3NvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChwb3NvYmogPT0gUHlfTm9uZSB8fCBwb3NvYmogPT0gTlVMTCkgewogICAgICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uICovCiAgICAgICAgIHBvc29iaiA9IHBvcnRhYmxlX2xzZWVrKGZkLCBOVUxMLCAxKTsKQEAgLTk0NSw1MiArOTk0LDYgQEAKICAgICAgICAgUHlfSU5DUkVGKHBvc29iaik7CiAgICAgfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIE1TIF9jaHNpemUgZG9lc24ndCB3b3JrIGlmIG5ld3NpemUgZG9lc24ndCBmaXQgaW4gMzIgYml0cywKLSAgICAgICBzbyBkb24ndCBldmVuIHRyeSB1c2luZyBpdC4gKi8KLSAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpvbGRwb3NvYmosICp0ZW1wcG9zb2JqOwotICAgICAgICBIQU5ETEUgaEZpbGU7Ci0KLSAgICAgICAgLyogd2Ugc2F2ZSB0aGUgZmlsZSBwb2ludGVyIHBvc2l0aW9uICovCi0gICAgICAgIG9sZHBvc29iaiA9IHBvcnRhYmxlX2xzZWVrKGZkLCBOVUxMLCAxKTsKLSAgICAgICAgaWYgKG9sZHBvc29iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogd2UgdGhlbiBtb3ZlIHRvIHRoZSB0cnVuY2F0aW9uIHBvc2l0aW9uICovCi0gICAgICAgIHRlbXBwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgcG9zb2JqLCAwKTsKLSAgICAgICAgaWYgKHRlbXBwb3NvYmogPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9sZHBvc29iaik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wcG9zb2JqKTsKLQotICAgICAgICAvKiBUcnVuY2F0ZS4gIE5vdGUgdGhhdCB0aGlzIG1heSBncm93IHRoZSBmaWxlISAqLwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgaEZpbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKLSAgICAgICAgcmV0ID0gaEZpbGUgPT0gKEhBTkRMRSktMTsgLyogdGVzdGluZyBmb3IgSU5WQUxJRF9IQU5ETEUgdmFsdWUgKi8KLSAgICAgICAgaWYgKHJldCA9PSAwKSB7Ci0gICAgICAgICAgICByZXQgPSBTZXRFbmRPZkZpbGUoaEZpbGUpID09IDA7Ci0gICAgICAgICAgICBpZiAocmV0KQotICAgICAgICAgICAgICAgIGVycm5vID0gRUFDQ0VTOwotICAgICAgICB9Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgLyogd2UgcmVzdG9yZSB0aGUgZmlsZSBwb2ludGVyIHBvc2l0aW9uIGluIGFueSBjYXNlICovCi0gICAgICAgIHRlbXBwb3NvYmogPSBwb3J0YWJsZV9sc2VlayhmZCwgb2xkcG9zb2JqLCAwKTsKLSAgICAgICAgUHlfREVDUkVGKG9sZHBvc29iaik7Ci0gICAgICAgIGlmICh0ZW1wcG9zb2JqID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwb3NvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHRlbXBwb3NvYmopOwotICAgIH0KLSNlbHNlCi0KICNpZiBkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCiAgICAgcG9zID0gUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKTsKICNlbHNlCkBAIC0xMDAyLDEyICsxMDA1LDE2IEBACiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHJldCA9IF9jaHNpemVfcyhmZCwgcG9zKTsKKyNlbHNlCiAgICAgcmV0ID0gZnRydW5jYXRlKGZkLCBwb3MpOworI2VuZGlmCisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0jZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KLQogICAgIGlmIChyZXQgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYocG9zb2JqKTsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtMTA1NywyNiArMTA2NCw0MCBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLkZpbGVJTyBmZD0lZCBtb2RlPSclcyc+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmQsIG1vZGVfc3RyaW5nKHNlbGYpKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAiPF9pby5GaWxlSU8gZmQ9JWQgbW9kZT0nJXMnIGNsb3NlZmQ9JXM+IiwKKyAgICAgICAgICAgIHNlbGYtPmZkLCBtb2RlX3N0cmluZyhzZWxmKSwgc2VsZi0+Y2xvc2VmZCA/ICJUcnVlIiA6ICJGYWxzZSIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uRmlsZUlPIG5hbWU9JVIgbW9kZT0nJXMnPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVvYmosIG1vZGVfc3RyaW5nKHNlbGYpKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAiPF9pby5GaWxlSU8gbmFtZT0lUiBtb2RlPSclcycgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgbmFtZW9iaiwgbW9kZV9zdHJpbmcoc2VsZiksIHNlbGYtPmNsb3NlZmQgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKICAgICAgICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIH0KICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uRmlsZUlPLmlzYXR0eQorCitUcnVlIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIFRUWSBkZXZpY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1maWxlaW9faXNhdHR5KGZpbGVpbyAqc2VsZikKK19pb19GaWxlSU9faXNhdHR5X2ltcGwoZmlsZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzMmMzOTkyNGU5YTgwNzAgaW5wdXQ9Y2Q5NGNhMWY1ZTk1ZTg0M10qLwogewogICAgIGxvbmcgcmVzOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgaWYgKF9QeVZlcmlmeV9mZChzZWxmLT5mZCkpCisgICAgICAgIHJlcyA9IGlzYXR0eShzZWxmLT5mZCk7CisgICAgZWxzZQorICAgICAgICByZXMgPSAwOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyk7CiB9CkBAIC0xMDg5LDExMCArMTExMCwyMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0KLVB5RG9jX1NUUlZBUihmaWxlaW9fZG9jLAotImZpbGUobmFtZTogc3RyWywgbW9kZTogc3RyXVssIG9wZW5lcjogTm9uZV0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCi0iXG4iCi0iT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InIChkZWZhdWx0KSwgJ3cnLCAneCcgb3IgJ2EnIGZvciByZWFkaW5nLFxuIgotIndyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXRcbiIKLSJkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWRcbiIKLSJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgRmlsZUV4aXN0c0Vycm9yIHdpbGwgYmUgcmFpc2VkIGlmIGl0IGFscmVhZHlcbiIKLSJleGlzdHMgd2hlbiBvcGVuZWQgZm9yIGNyZWF0aW5nLiBPcGVuaW5nIGEgZmlsZSBmb3IgY3JlYXRpbmcgaW1wbGllc1xuIgotIndyaXRpbmcgc28gdGhpcyBtb2RlIGJlaGF2ZXMgaW4gYSBzaW1pbGFyIHdheSB0byAndycuQWRkIGEgJysnIHRvIHRoZSBtb2RlXG4iCi0idG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieVxuIgotInBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZVxuIgotIm9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgb3BlbmVyIHdpdGggKCpuYW1lKiwgKmZsYWdzKikuXG4iCi0iKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3Npbmcgb3Mub3BlbiBhcyAqb3BlbmVyKlxuIgotInJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcgTm9uZSkuIik7Ci0KLVB5RG9jX1NUUlZBUihyZWFkX2RvYywKLSJyZWFkKHNpemU6IGludCkgLT4gYnl0ZXMuICByZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCi0iXG4iCi0iT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWRcbiIKLSJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLlxuIgotIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOwotCi1QeURvY19TVFJWQVIocmVhZGFsbF9kb2MsCi0icmVhZGFsbCgpIC0+IGJ5dGVzLiAgcmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBmaWxlLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKLSJcbiIKLSJJbiBub24tYmxvY2tpbmcgbW9kZSwgcmV0dXJucyBhcyBtdWNoIGFzIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSxcbiIKLSJvciBOb25lIGlmIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiAgUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7Ci0KLVB5RG9jX1NUUlZBUih3cml0ZV9kb2MsCi0id3JpdGUoYjogYnl0ZXMpIC0+IGludC4gIFdyaXRlIGJ5dGVzIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciB3cml0dGVuLlxuIgotIlxuIgotIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLlxuIgotIlRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4gIEluIG5vbi1ibG9ja2luZyBtb2RlLFxuIgotInJldHVybnMgTm9uZSBpZiB0aGUgd3JpdGUgd291bGQgYmxvY2suIgotKTsKLQotUHlEb2NfU1RSVkFSKGZpbGVub19kb2MsCi0iZmlsZW5vKCkgLT4gaW50LiAgUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuIik7Ci0KLVB5RG9jX1NUUlZBUihzZWVrX2RvYywKLSJzZWVrKG9mZnNldDogaW50Wywgd2hlbmNlOiBpbnRdKSAtPiBpbnQuICBNb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uIGFuZFxuIgotInJldHVybiB0aGUgZmlsZSBwb3NpdGlvbi5cbiIKLSJcbiIKLSJBcmd1bWVudCBvZmZzZXQgaXMgYSBieXRlIGNvdW50LiAgT3B0aW9uYWwgYXJndW1lbnQgd2hlbmNlIGRlZmF1bHRzIHRvXG4iCi0iU0VFS19TRVQgb3IgMCAob2Zmc2V0IGZyb20gc3RhcnQgb2YgZmlsZSwgb2Zmc2V0IHNob3VsZCBiZSA+PSAwKTsgb3RoZXIgdmFsdWVzXG4iCi0iYXJlIFNFRUtfQ1VSIG9yIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbiwgcG9zaXRpdmUgb3IgbmVnYXRpdmUpLFxuIgotImFuZCBTRUVLX0VORCBvciAyIChtb3ZlIHJlbGF0aXZlIHRvIGVuZCBvZiBmaWxlLCB1c3VhbGx5IG5lZ2F0aXZlLCBhbHRob3VnaFxuIgotIm1hbnkgcGxhdGZvcm1zIGFsbG93IHNlZWtpbmcgYmV5b25kIHRoZSBlbmQgb2YgYSBmaWxlKS5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLiIpOwotCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLVB5RG9jX1NUUlZBUih0cnVuY2F0ZV9kb2MsCi0idHJ1bmNhdGUoW3NpemU6IGludF0pIC0+IGludC4gIFRydW5jYXRlIHRoZSBmaWxlIHRvIGF0IG1vc3Qgc2l6ZSBieXRlc1xuIgotImFuZCByZXR1cm4gdGhlIHRydW5jYXRlZCBzaXplLlxuIgotIlxuIgotIlNpemUgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMgcmV0dXJuZWQgYnkgdGVsbCgpLlxuIgotIlRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgY2hhbmdlZCB0byB0aGUgdmFsdWUgb2Ygc2l6ZS4iKTsKLSNlbmRpZgotCi1QeURvY19TVFJWQVIodGVsbF9kb2MsCi0idGVsbCgpIC0+IGludC4gIEN1cnJlbnQgZmlsZSBwb3NpdGlvbi5cbiIKLSJcbiIKLSJDYW4gcmFpc2UgT1NFcnJvciBmb3Igbm9uIHNlZWthYmxlIGZpbGVzLiIKLSk7Ci0KLVB5RG9jX1NUUlZBUihyZWFkaW50b19kb2MsCi0icmVhZGludG8oKSAtPiBTYW1lIGFzIFJhd0lPQmFzZS5yZWFkaW50bygpLiIpOwotCi1QeURvY19TVFJWQVIoY2xvc2VfZG9jLAotImNsb3NlKCkgLT4gTm9uZS4gIENsb3NlIHRoZSBmaWxlLlxuIgotIlxuIgotIkEgY2xvc2VkIGZpbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZVxuIgotImNhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLiIpOwotCi1QeURvY19TVFJWQVIoaXNhdHR5X2RvYywKLSJpc2F0dHkoKSAtPiBib29sLiAgVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjb25uZWN0ZWQgdG8gYSBUVFkgZGV2aWNlLiIpOwotCi1QeURvY19TVFJWQVIoc2Vla2FibGVfZG9jLAotInNlZWthYmxlKCkgLT4gYm9vbC4gIFRydWUgaWYgZmlsZSBzdXBwb3J0cyByYW5kb20tYWNjZXNzLiIpOwotCi1QeURvY19TVFJWQVIocmVhZGFibGVfZG9jLAotInJlYWRhYmxlKCkgLT4gYm9vbC4gIFRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgcmVhZCBtb2RlLiIpOwotCi1QeURvY19TVFJWQVIod3JpdGFibGVfZG9jLAotIndyaXRhYmxlKCkgLT4gYm9vbC4gIFRydWUgaWYgZmlsZSB3YXMgb3BlbmVkIGluIGEgd3JpdGUgbW9kZS4iKTsKKyNpbmNsdWRlICJjbGluaWMvZmlsZWlvLmMuaCIKIAogc3RhdGljIFB5TWV0aG9kRGVmIGZpbGVpb19tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkIiwgICAgIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZCwgICAgICAgICBNRVRIX1ZBUkFSR1MsIHJlYWRfZG9jfSwKLSAgICB7InJlYWRhbGwiLCAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19yZWFkYWxsLCAgTUVUSF9OT0FSR1MsICByZWFkYWxsX2RvY30sCi0gICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZGludG8sIE1FVEhfVkFSQVJHUywgcmVhZGludG9fZG9jfSwKLSAgICB7IndyaXRlIiwgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb193cml0ZSwgICAgICAgIE1FVEhfVkFSQVJHUywgd3JpdGVfZG9jfSwKLSAgICB7InNlZWsiLCAgICAgKFB5Q0Z1bmN0aW9uKWZpbGVpb19zZWVrLCAgICAgICAgIE1FVEhfVkFSQVJHUywgc2Vla19kb2N9LAotICAgIHsidGVsbCIsICAgICAoUHlDRnVuY3Rpb24pZmlsZWlvX3RlbGwsICAgICAgICAgTUVUSF9WQVJBUkdTLCB0ZWxsX2RvY30sCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKWZpbGVpb190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCB0cnVuY2F0ZV9kb2N9LAotI2VuZGlmCi0gICAgeyJjbG9zZSIsICAgIChQeUNGdW5jdGlvbilmaWxlaW9fY2xvc2UsICAgICAgICBNRVRIX05PQVJHUywgIGNsb3NlX2RvY30sCi0gICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fc2Vla2FibGUsIE1FVEhfTk9BUkdTLCAgICAgIHNlZWthYmxlX2RvY30sCi0gICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCAgICAgIHJlYWRhYmxlX2RvY30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilmaWxlaW9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCAgICAgIHdyaXRhYmxlX2RvY30sCi0gICAgeyJmaWxlbm8iLCAgIChQeUNGdW5jdGlvbilmaWxlaW9fZmlsZW5vLCAgIE1FVEhfTk9BUkdTLCAgICAgIGZpbGVub19kb2N9LAotICAgIHsiaXNhdHR5IiwgICAoUHlDRnVuY3Rpb24pZmlsZWlvX2lzYXR0eSwgICBNRVRIX05PQVJHUywgICAgICBpc2F0dHlfZG9jfSwKKyAgICBfSU9fRklMRUlPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19XUklURV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19URUxMX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19DTE9TRV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19GSUxFSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgX0lPX0ZJTEVJT19XUklUQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fRklMRUlPX0lTQVRUWV9NRVRIT0RERUYKICAgICB7Il9kZWFsbG9jX3dhcm4iLCAoUHlDRnVuY3Rpb24pZmlsZWlvX2RlYWxsb2Nfd2FybiwgTUVUSF9PLCBOVUxMfSwKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilmaWxlaW9fZ2V0c3RhdGUsIE1FVEhfTk9BUkdTLCBOVUxMfSwKICAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCkBAIC0xMjI3LDYgKzExNjAsNyBAQAogfTsKIAogc3RhdGljIFB5TWVtYmVyRGVmIGZpbGVpb19tZW1iZXJzW10gPSB7CisgICAgeyJfYmxrc2l6ZSIsIFRfVUlOVCwgb2Zmc2V0b2YoZmlsZWlvLCBibGtzaXplKSwgMH0sCiAgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2YoZmlsZWlvLCBmaW5hbGl6aW5nKSwgMH0sCiAgICAge05VTEx9CiB9OwpAQCAtMTI1Myw3ICsxMTg3LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgZmlsZWlvX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fRmlsZUlPX19faW5pdF9fX19kb2NfXywgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZmlsZWlvX3RyYXZlcnNlLCAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlmaWxlaW9fY2xlYXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMTI2OCw3ICsxMjAyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgb2Zmc2V0b2YoZmlsZWlvLCBkaWN0KSwgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgZmlsZWlvX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgX2lvX0ZpbGVJT19fX2luaXRfXywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIGZpbGVpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9pb2Jhc2UuYyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCmluZGV4IGVmMDZiNDMuLjAyNTAwN2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2lvYmFzZS5jCisrKyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCkBAIC0xMyw2ICsxMywyMCBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIl9pb21vZHVsZS5oIgogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uX0lPQmFzZSAiUHlPYmplY3QgKiIgIiZQeUlPQmFzZV9UeXBlIgorY2xhc3MgX2lvLl9SYXdJT0Jhc2UgIlB5T2JqZWN0ICoiICImUHlSYXdJT0Jhc2VfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQyOWE0ZDA3NmMyYjIxMWNdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgaW9fc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9zc2l6ZV90JworICAgIGNvbnZlcnRlciA9ICdfUHlJT19Db252ZXJ0U3NpemVfdCcKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQwYTgxMWQzY2JmZDFiMzNdKi8KKwogLyoKICAqIElPQmFzZSBjbGFzcywgYW4gYWJzdHJhY3QgY2xhc3MKICAqLwpAQCAtOTYsMTEgKzExMCwxNSBAQAogICAgIHJldHVybiBpb2Jhc2VfdW5zdXBwb3J0ZWQoInNlZWsiKTsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV90ZWxsX2RvYywKLSAgICAgICAgICAgICAiUmV0dXJuIGN1cnJlbnQgc3RyZWFtIHBvc2l0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UudGVsbAorCitSZXR1cm4gY3VycmVudCBzdHJlYW0gcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV90ZWxsX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODlhMWMwODA3OTM1YWJlMiBpbnB1dD0wNGU2MTVmZWMxMjg4MDFmXSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIoc2Vlayk7CiAKQEAgLTEyMSwxMyArMTM5LDE3IEBACiAKIC8qIEZsdXNoIGFuZCBjbG9zZSBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfZmx1c2hfZG9jLAotICAgICJGbHVzaCB3cml0ZSBidWZmZXJzLCBpZiBhcHBsaWNhYmxlLlxuIgotICAgICJcbiIKLSAgICAiVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHJlYWQtb25seSBhbmQgbm9uLWJsb2NraW5nIHN0cmVhbXMuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLmZsdXNoCisKK0ZsdXNoIHdyaXRlIGJ1ZmZlcnMsIGlmIGFwcGxpY2FibGUuCisKK1RoaXMgaXMgbm90IGltcGxlbWVudGVkIGZvciByZWFkLW9ubHkgYW5kIG5vbi1ibG9ja2luZyBzdHJlYW1zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2ZsdXNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2ZsdXNoX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2NlZjRiNGQ1NDY1NmEzYiBpbnB1dD03NzNiZTEyMWFiZTI3MGFhXSovCiB7CiAgICAgLyogWFhYIFNob3VsZCB0aGlzIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4/Pz8gKi8KICAgICBpZiAoSVNfQ0xPU0VEKHNlbGYpKSB7CkBAIC0xMzcsMTEgKzE1OSw2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfY2xvc2VfZG9jLAotICAgICJGbHVzaCBhbmQgY2xvc2UgdGhlIElPIG9iamVjdC5cbiIKLSAgICAiXG4iCi0gICAgIlRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBjbG9zZWQuXG4iKTsKLQogc3RhdGljIGludAogaW9iYXNlX2Nsb3NlZChQeU9iamVjdCAqc2VsZikKIHsKQEAgLTE4MCw4ICsxOTcsMTcgQEAKICAgIGBfX0lPQmFzZV9jbG9zZWRgIGFuZCBjYWxsIGZsdXNoKCkgYnkgaXRzZWxmLCBidXQgaXQgaXMgcmVkdW5kYW50IHdpdGgKICAgIHdoYXRldmVyIGJlaGF2aW91ciBhIG5vbi10cml2aWFsIGRlcml2ZWQgY2xhc3Mgd2lsbCBpbXBsZW1lbnQuICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLmNsb3NlCisKK0ZsdXNoIGFuZCBjbG9zZSB0aGUgSU8gb2JqZWN0LgorCitUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgY2xvc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2Nsb3NlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2Nsb3NlX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjNjNmE2ZjU3ZDc4M2Q2ZCBpbnB1dD1mNDQ5NGQ1YzMxZGJjNmI3XSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIApAQCAtMzA0LDE0ICszMzAsMTggQEAKIAogLyogSW5xdWlyeSBtZXRob2RzICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2Vfc2Vla2FibGVfZG9jLAotICAgICJSZXR1cm4gd2hldGhlciBvYmplY3Qgc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy5cbiIKLSAgICAiXG4iCi0gICAgIklmIEZhbHNlLCBzZWVrKCksIHRlbGwoKSBhbmQgdHJ1bmNhdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLlxuIgotICAgICJUaGlzIG1ldGhvZCBtYXkgbmVlZCB0byBkbyBhIHRlc3Qgc2VlaygpLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2Uuc2Vla2FibGUKKworUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHN1cHBvcnRzIHJhbmRvbSBhY2Nlc3MuCisKK0lmIEZhbHNlLCBzZWVrKCksIHRlbGwoKSBhbmQgdHJ1bmNhdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLgorVGhpcyBtZXRob2QgbWF5IG5lZWQgdG8gZG8gYSB0ZXN0IHNlZWsoKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9zZWVrYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9zZWVrYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRjMjRjNjdmNWYzMmE0M2QgaW5wdXQ9MjI2NzZlZWJiODFkY2YxZV0qLwogewogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KQEAgLTMzMywxMyArMzYzLDE3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9yZWFkYWJsZV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciByZWFkaW5nLlxuIgotICAgICJcbiIKLSAgICAiSWYgRmFsc2UsIHJlYWQoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UucmVhZGFibGUKKworUmV0dXJuIHdoZXRoZXIgb2JqZWN0IHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuCisKK0lmIEZhbHNlLCByZWFkKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWlvYmFzZV9yZWFkYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9yZWFkYWJsZV9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0ODA4OTI1MDY4NjM4OGIgaW5wdXQ9MTJmYzNkOGY2YmU0NjQzNF0qLwogewogICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KQEAgLTM2MiwxMyArMzk2LDE3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV93cml0YWJsZV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciB3cml0aW5nLlxuIgotICAgICJcbiIKLSAgICAiSWYgRmFsc2UsIHdyaXRlKCkgd2lsbCByYWlzZSBVbnN1cHBvcnRlZE9wZXJhdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLndyaXRhYmxlCisKK1JldHVybiB3aGV0aGVyIG9iamVjdCB3YXMgb3BlbmVkIGZvciB3cml0aW5nLgorCitJZiBGYWxzZSwgd3JpdGUoKSB3aWxsIHJhaXNlIFVuc3VwcG9ydGVkT3BlcmF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX3dyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3dyaXRhYmxlX2ltcGwoUHlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDA2MDAxZDA5ODViZTE0ZiBpbnB1dD1jMTdhMGJiNmE4ZGZjNTkwXSovCiB7CiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQpAQCAtNDEzLDI0ICs0NTEsMzIgQEAKIAogLyogWFhYIFNob3VsZCB0aGVzZSBiZSBwcmVzZW50IGV2ZW4gaWYgdW5pbXBsZW1lbnRlZD8gKi8KIAotUHlEb2NfU1RSVkFSKGlvYmFzZV9maWxlbm9fZG9jLAotICAgICJSZXR1cm5zIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGlmIG9uZSBleGlzdHMuXG4iCi0gICAgIlxuIgotICAgICJBbiBJT0Vycm9yIGlzIHJhaXNlZCBpZiB0aGUgSU8gb2JqZWN0IGRvZXMgbm90IHVzZSBhIGZpbGUgZGVzY3JpcHRvci5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UuZmlsZW5vCisKK1JldHVybnMgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgaWYgb25lIGV4aXN0cy4KKworQW4gSU9FcnJvciBpcyByYWlzZWQgaWYgdGhlIElPIG9iamVjdCBkb2VzIG5vdCB1c2UgYSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfZmlsZW5vKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX2ZpbGVub19pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjYzA5NzNmMGY1ZjNiNzMgaW5wdXQ9MzI3NzNjNWRmNGI3ZWVkZV0qLwogewogICAgIHJldHVybiBpb2Jhc2VfdW5zdXBwb3J0ZWQoImZpbGVubyIpOwogfQogCi1QeURvY19TVFJWQVIoaW9iYXNlX2lzYXR0eV9kb2MsCi0gICAgIlJldHVybiB3aGV0aGVyIHRoaXMgaXMgYW4gJ2ludGVyYWN0aXZlJyBzdHJlYW0uXG4iCi0gICAgIlxuIgotICAgICJSZXR1cm4gRmFsc2UgaWYgaXQgY2FuJ3QgYmUgZGV0ZXJtaW5lZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLl9JT0Jhc2UuaXNhdHR5CisKK1JldHVybiB3aGV0aGVyIHRoaXMgaXMgYW4gJ2ludGVyYWN0aXZlJyBzdHJlYW0uCisKK1JldHVybiBGYWxzZSBpZiBpdCBjYW4ndCBiZSBkZXRlcm1pbmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotaW9iYXNlX2lzYXR0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fX0lPQmFzZV9pc2F0dHlfaW1wbChQeU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MGNhYjc3Y2VkZTQxY2RkIGlucHV0PTllZjc2NTMwZDM2ODQ1OGJdKi8KIHsKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZChzZWxmLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQzOSwzMCArNDg1LDMxIEBACiAKIC8qIFJlYWRsaW5lKHMpIGFuZCB3cml0ZWxpbmVzICovCiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfcmVhZGxpbmVfZG9jLAotICAgICJSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS5cbiIKLSAgICAiXG4iCi0gICAgIklmIGxpbWl0IGlzIHNwZWNpZmllZCwgYXQgbW9zdCBsaW1pdCBieXRlcyB3aWxsIGJlIHJlYWQuXG4iCi0gICAgIlxuIgotICAgICJUaGUgbGluZSB0ZXJtaW5hdG9yIGlzIGFsd2F5cyBiJ1xcbicgZm9yIGJpbmFyeSBmaWxlczsgZm9yIHRleHRcbiIKLSAgICAiZmlsZXMsIHRoZSBuZXdsaW5lcyBhcmd1bWVudCB0byBvcGVuIGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgbGluZVxuIgotICAgICJ0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnJlYWRsaW5lCisgICAgc2l6ZSBhcyBsaW1pdDogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZWFkIGFuZCByZXR1cm4gYSBsaW5lIGZyb20gdGhlIHN0cmVhbS4KKworSWYgc2l6ZSBpcyBzcGVjaWZpZWQsIGF0IG1vc3Qgc2l6ZSBieXRlcyB3aWxsIGJlIHJlYWQuCisKK1RoZSBsaW5lIHRlcm1pbmF0b3IgaXMgYWx3YXlzIGInXG4nIGZvciBiaW5hcnkgZmlsZXM7IGZvciB0ZXh0CitmaWxlcywgdGhlIG5ld2xpbmVzIGFyZ3VtZW50IHRvIG9wZW4gY2FuIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBsaW5lCit0ZXJtaW5hdG9yKHMpIHJlY29nbml6ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfcmVhZGxpbmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19JT0Jhc2VfcmVhZGxpbmVfaW1wbChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDc5Zjc5YjU4MTg3ODQwIGlucHV0PWRmNGNjODg4NGY1NTNjYWJdKi8KIHsKICAgICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGEgKHNsb3dpc2gpIHJlYWRsaW5lKCkuICovCiAKLSAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CiAgICAgaW50IGhhc19wZWVrID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3Qgb2xkX3NpemUgPSAtMTsKICAgICBfUHlfSURFTlRJRklFUihwZWVrKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKHNlbGYsICZQeUlkX3BlZWspKQogICAgICAgICBoYXNfcGVlayA9IDE7CiAKQEAgLTU4NSwyMyArNjMyLDI1IEBACiAgICAgcmV0dXJuIGxpbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihpb2Jhc2VfcmVhZGxpbmVzX2RvYywKLSAgICAiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uXG4iCi0gICAgIlxuIgotICAgICJoaW50IGNhbiBiZSBzcGVjaWZpZWQgdG8gY29udHJvbCB0aGUgbnVtYmVyIG9mIGxpbmVzIHJlYWQ6IG5vIG1vcmVcbiIKLSAgICAibGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGxcbiIKLSAgICAibGluZXMgc28gZmFyIGV4Y2VlZHMgaGludC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLnJlYWRsaW5lcworICAgIGhpbnQ6IGlvX3NzaXplX3QgPSAtMQorICAgIC8KKworUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzdHJlYW0uCisKK2hpbnQgY2FuIGJlIHNwZWNpZmllZCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgbGluZXMgcmVhZDogbm8gbW9yZQorbGluZXMgd2lsbCBiZSByZWFkIGlmIHRoZSB0b3RhbCBzaXplIChpbiBieXRlcy9jaGFyYWN0ZXJzKSBvZiBhbGwKK2xpbmVzIHNvIGZhciBleGNlZWRzIGhpbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfcmVhZGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGhpbnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmY1MDQyMTY3N2ZhM2RlYSBpbnB1dD0xOTYxYzRhOTVlOTZlNjYxXSovCiB7Ci0gICAgUHlfc3NpemVfdCBoaW50ID0gLTEsIGxlbmd0aCA9IDA7CisgICAgUHlfc3NpemVfdCBsZW5ndGggPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZXMiLCAmX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDYsMTQgKzY5NSwxNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2Vfd3JpdGVsaW5lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmxpbmVzLCAqaXRlciwgKnJlczsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fSU9CYXNlLndyaXRlbGluZXMKKyAgICBsaW5lczogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOndyaXRlbGluZXMiLCAmbGluZXMpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX0lPQmFzZV93cml0ZWxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbGluZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTc2ZWIwYTliNjBhNjYyOCBpbnB1dD00MzJlNzI5YTg0NTBiM2NiXSovCit7CisgICAgUHlPYmplY3QgKml0ZXIsICpyZXM7CiAKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZChzZWxmLCBQeV9UcnVlKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY4OCwzMSArNzQwLDMzIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpbmNsdWRlICJjbGluaWMvaW9iYXNlLmMuaCIKKwogc3RhdGljIFB5TWV0aG9kRGVmIGlvYmFzZV9tZXRob2RzW10gPSB7CiAgICAgeyJzZWVrIiwgaW9iYXNlX3NlZWssIE1FVEhfVkFSQVJHUywgaW9iYXNlX3NlZWtfZG9jfSwKLSAgICB7InRlbGwiLCBpb2Jhc2VfdGVsbCwgTUVUSF9OT0FSR1MsIGlvYmFzZV90ZWxsX2RvY30sCisgICAgX0lPX19JT0JBU0VfVEVMTF9NRVRIT0RERUYKICAgICB7InRydW5jYXRlIiwgaW9iYXNlX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIGlvYmFzZV90cnVuY2F0ZV9kb2N9LAotICAgIHsiZmx1c2giLCBpb2Jhc2VfZmx1c2gsIE1FVEhfTk9BUkdTLCBpb2Jhc2VfZmx1c2hfZG9jfSwKLSAgICB7ImNsb3NlIiwgaW9iYXNlX2Nsb3NlLCBNRVRIX05PQVJHUywgaW9iYXNlX2Nsb3NlX2RvY30sCisgICAgX0lPX19JT0JBU0VfRkxVU0hfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfQ0xPU0VfTUVUSE9EREVGCiAKLSAgICB7InNlZWthYmxlIiwgaW9iYXNlX3NlZWthYmxlLCBNRVRIX05PQVJHUywgaW9iYXNlX3NlZWthYmxlX2RvY30sCi0gICAgeyJyZWFkYWJsZSIsIGlvYmFzZV9yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIGlvYmFzZV9yZWFkYWJsZV9kb2N9LAotICAgIHsid3JpdGFibGUiLCBpb2Jhc2Vfd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBpb2Jhc2Vfd3JpdGFibGVfZG9jfSwKKyAgICBfSU9fX0lPQkFTRV9TRUVLQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9XUklUQUJMRV9NRVRIT0RERUYKIAogICAgIHsiX2NoZWNrQ2xvc2VkIiwgICBfUHlJT0Jhc2VfY2hlY2tfY2xvc2VkLCBNRVRIX05PQVJHU30sCiAgICAgeyJfY2hlY2tTZWVrYWJsZSIsIF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX2NoZWNrUmVhZGFibGUiLCBfUHlJT0Jhc2VfY2hlY2tfcmVhZGFibGUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9jaGVja1dyaXRhYmxlIiwgX1B5SU9CYXNlX2NoZWNrX3dyaXRhYmxlLCBNRVRIX05PQVJHU30sCiAKLSAgICB7ImZpbGVubyIsIGlvYmFzZV9maWxlbm8sIE1FVEhfTk9BUkdTLCBpb2Jhc2VfZmlsZW5vX2RvY30sCi0gICAgeyJpc2F0dHkiLCBpb2Jhc2VfaXNhdHR5LCBNRVRIX05PQVJHUywgaW9iYXNlX2lzYXR0eV9kb2N9LAorICAgIF9JT19fSU9CQVNFX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9JU0FUVFlfTUVUSE9EREVGCiAKICAgICB7Il9fZW50ZXJfXyIsIGlvYmFzZV9lbnRlciwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19leGl0X18iLCBpb2Jhc2VfZXhpdCwgTUVUSF9WQVJBUkdTfSwKIAotICAgIHsicmVhZGxpbmUiLCBpb2Jhc2VfcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgaW9iYXNlX3JlYWRsaW5lX2RvY30sCi0gICAgeyJyZWFkbGluZXMiLCBpb2Jhc2VfcmVhZGxpbmVzLCBNRVRIX1ZBUkFSR1MsIGlvYmFzZV9yZWFkbGluZXNfZG9jfSwKLSAgICB7IndyaXRlbGluZXMiLCBpb2Jhc2Vfd3JpdGVsaW5lcywgTUVUSF9WQVJBUkdTfSwKKyAgICBfSU9fX0lPQkFTRV9SRUFETElORV9NRVRIT0RERUYKKyAgICBfSU9fX0lPQkFTRV9SRUFETElORVNfTUVUSE9EREVGCisgICAgX0lPX19JT0JBU0VfV1JJVEVMSU5FU19NRVRIT0RERUYKIAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTc5NSwxNSArODQ5LDE3IEBACiAgKiBlaXRoZXIuKQogKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLXJhd2lvYmFzZV9yZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKLSAgICBQeU9iamVjdCAqYiwgKnJlczsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fUmF3SU9CYXNlLnJlYWQKKyAgICBzaXplIGFzIG46IFB5X3NzaXplX3QgPSAtMQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cmVhZCIsICZuKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmNkZWI3MzFlM2M5ZjEzYyBpbnB1dD1iNmQwZGNmNjQxN2QxMzc0XSovCit7CisgICAgUHlPYmplY3QgKmIsICpyZXM7CiAKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGFsbCk7CkBAIC04MzYsMTEgKzg5MiwxNSBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihyYXdpb2Jhc2VfcmVhZGFsbF9kb2MsCi0gICAgICAgICAgICAgIlJlYWQgdW50aWwgRU9GLCB1c2luZyBtdWx0aXBsZSByZWFkKCkgY2FsbC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fUmF3SU9CYXNlLnJlYWRhbGwKKworUmVhZCB1bnRpbCBFT0YsIHVzaW5nIG11bHRpcGxlIHJlYWQoKSBjYWxsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcmF3aW9iYXNlX3JlYWRhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX19SYXdJT0Jhc2VfcmVhZGFsbF9pbXBsKFB5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5ODdiOWNlOTI5NDI1YTAgaW5wdXQ9Njg4ODc0MTQxMjEzNjIyYV0qLwogewogICAgIGludCByOwogICAgIFB5T2JqZWN0ICpjaHVua3MgPSBQeUxpc3RfTmV3KDApOwpAQCAtODkyLDkgKzk1MiwyNSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCityYXdpb2Jhc2VfcmVhZGludG8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYXdpb2Jhc2Vfd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyBQeU1ldGhvZERlZiByYXdpb2Jhc2VfbWV0aG9kc1tdID0gewotICAgIHsicmVhZCIsIHJhd2lvYmFzZV9yZWFkLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZGFsbCIsIHJhd2lvYmFzZV9yZWFkYWxsLCBNRVRIX05PQVJHUywgcmF3aW9iYXNlX3JlYWRhbGxfZG9jfSwKKyAgICBfSU9fX1JBV0lPQkFTRV9SRUFEX01FVEhPRERFRgorICAgIF9JT19fUkFXSU9CQVNFX1JFQURBTExfTUVUSE9EREVGCisgICAgeyJyZWFkaW50byIsIHJhd2lvYmFzZV9yZWFkaW50bywgTUVUSF9WQVJBUkdTfSwKKyAgICB7IndyaXRlIiwgcmF3aW9iYXNlX3dyaXRlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggOWQ3Mzg4NC4uODMxNWFiOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC0xMSw2ICsxMSwxMiBAQAogI2RlZmluZSBTVEFURV9SRUFMSVpFRCAxCiAjZGVmaW5lIFNUQVRFX0FDQ1VNVUxBVElORyAyCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5TdHJpbmdJTyAic3RyaW5naW8gKiIgIiZQeVN0cmluZ0lPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jMTdiYzBmNDIxNjVjZDdkXSovCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlfVUNTNCAqYnVmOwpAQCAtMzksNiArNDUsOCBAQAogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gc3RyaW5naW87CiAKK3N0YXRpYyBpbnQgX2lvX1N0cmluZ0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CisKICNkZWZpbmUgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikgXAogICAgIGlmIChzZWxmLT5vayA8PSAwKSB7IFwKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIFwKQEAgLTU4LDEyICs2Niw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOyBcCiAgICAgfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fZG9jLAotICAgICJUZXh0IEkvTyBpbXBsZW1lbnRhdGlvbiB1c2luZyBhbiBpbi1tZW1vcnkgYnVmZmVyLlxuIgotICAgICJcbiIKLSAgICAiVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmVcbiIKLSAgICAiYXJndW1lbnQgaXMgbGlrZSB0aGUgb25lIG9mIFRleHRJT1dyYXBwZXIncyBjb25zdHJ1Y3Rvci4iKTsKLQogCiAvKiBJbnRlcm5hbCByb3V0aW5lIGZvciBjaGFuZ2luZyB0aGUgc2l6ZSwgaW4gdGVybXMgb2YgY2hhcmFjdGVycywgb2YgdGhlCiAgICBidWZmZXIgb2YgU3RyaW5nSU8gb2JqZWN0cy4gIFRoZSBjYWxsZXIgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSAnc2l6ZScKQEAgLTI2NCwxMSArMjY2LDE1IEBACiAgICAgcmV0dXJuIC0xOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fZ2V0dmFsdWVfZG9jLAotICAgICJSZXRyaWV2ZSB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3QuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8uZ2V0dmFsdWUKKworUmV0cmlldmUgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fZ2V0dmFsdWUoc3RyaW5naW8gKnNlbGYpCitfaW9fU3RyaW5nSU9fZ2V0dmFsdWVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yN2I2YTdiZmVhZWJjZTAxIGlucHV0PWQyM2NiODFkNjc5MWNmODhdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC0yNzgsMzMgKzI4NCw0MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3RlbGxfZG9jLAotICAgICJUZWxsIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8udGVsbAorCitUZWxsIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb190ZWxsKHN0cmluZ2lvICpzZWxmKQorX2lvX1N0cmluZ0lPX3RlbGxfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZTg3YWM2N2IxMTZjNzdiIGlucHV0PWVjODY2ZWJhZmYwMmY0MDVdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5wb3MpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fcmVhZF9kb2MsCi0gICAgIlJlYWQgYXQgbW9zdCBuIGNoYXJhY3RlcnMsIHJldHVybmVkIGFzIGEgc3RyaW5nLlxuIgotICAgICJcbiIKLSAgICAiSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GXG4iCi0gICAgImlzIHJlYWNoZWQuIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgYXQgRU9GLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8ucmVhZAorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBjaGFyYWN0ZXJzLCByZXR1cm5lZCBhcyBhIHN0cmluZy4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GCitpcyByZWFjaGVkLiBSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3JlYWQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3JlYWRfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjc2ODY0NzczNzQ2ZjY4IGlucHV0PTlhMzE5MDE1ZjZmMzk2NWNdKi8KIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIG47CiAgICAgUHlfVUNTNCAqb3V0cHV0OwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CkBAIC0zNzMsMjAgKzM4NiwyMyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzdGFydCwgbGVuKTsKIH0KIAotUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3JlYWRsaW5lX2RvYywKLSAgICAiUmVhZCB1bnRpbCBuZXdsaW5lIG9yIEVPRi5cbiIKLSAgICAiXG4iCi0gICAgIlJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGlmIEVPRiBpcyBoaXQgaW1tZWRpYXRlbHkuXG4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5yZWFkbGluZQorICAgIHNpemUgYXMgYXJnOiBvYmplY3QgPSBOb25lCisgICAgLworCitSZWFkIHVudGlsIG5ld2xpbmUgb3IgRU9GLgorCitSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBpZiBFT0YgaXMgaGl0IGltbWVkaWF0ZWx5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fcmVhZGxpbmUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3JlYWRsaW5lX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTlmZGNhYzAzYTNkZWU4MSBpbnB1dD1lMGUwZWQ0MDQyMDQwMTc2XSovCiB7Ci0gICAgUHlPYmplY3QgKmFyZyA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpyZWFkbGluZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgRU5TVVJFX1JFQUxJWkVEKHNlbGYpOwogCkBAIC00NDEsMjIgKzQ1NywyNSBAQAogICAgIHJldHVybiBsaW5lOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fdHJ1bmNhdGVfZG9jLAotICAgICJUcnVuY2F0ZSBzaXplIHRvIHBvcy5cbiIKLSAgICAiXG4iCi0gICAgIlRoZSBwb3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXNcbiIKLSAgICAicmV0dXJuZWQgYnkgdGVsbCgpLiAgVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyB1bmNoYW5nZWQuXG4iCi0gICAgIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnRydW5jYXRlCisgICAgcG9zIGFzIGFyZzogb2JqZWN0ID0gTm9uZQorICAgIC8KKworVHJ1bmNhdGUgc2l6ZSB0byBwb3MuCisKK1RoZSBwb3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiwgYXMKK3JldHVybmVkIGJ5IHRlbGwoKS4gIFRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLgorUmV0dXJucyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fdHJ1bmNhdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjA3MjQzOWMyYjAxZDMwNiBpbnB1dD03NDg2MTlhNDk0YmE1M2FkXSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBpZiAoUHlOdW1iZXJfQ2hlY2soYXJnKSkgewpAQCAtNDkwLDQ5ICs1MDksNTEgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fc2Vla19kb2MsCi0gICAgIkNoYW5nZSBzdHJlYW0gcG9zaXRpb24uXG4iCi0gICAgIlxuIgotICAgICJTZWVrIHRvIGNoYXJhY3RlciBvZmZzZXQgcG9zIHJlbGF0aXZlIHRvIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2U6XG4iCi0gICAgIiAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDtcbiIKLSAgICAiICAgIDEgIEN1cnJlbnQgcG9zaXRpb24gLSBwb3MgbXVzdCBiZSAwO1xuIgotICAgICIgICAgMiAgRW5kIG9mIHN0cmVhbSAtIHBvcyBtdXN0IGJlIDAuXG4iCi0gICAgIlJldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnNlZWsKKyAgICBwb3M6IFB5X3NzaXplX3QKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCisKK0NoYW5nZSBzdHJlYW0gcG9zaXRpb24uCisKK1NlZWsgdG8gY2hhcmFjdGVyIG9mZnNldCBwb3MgcmVsYXRpdmUgdG8gcG9zaXRpb24gaW5kaWNhdGVkIGJ5IHdoZW5jZToKKyAgICAwICBTdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KS4gIHBvcyBzaG91bGQgYmUgPj0gMDsKKyAgICAxICBDdXJyZW50IHBvc2l0aW9uIC0gcG9zIG11c3QgYmUgMDsKKyAgICAyICBFbmQgb2Ygc3RyZWFtIC0gcG9zIG11c3QgYmUgMC4KK1JldHVybnMgdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3NlZWsoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1N0cmluZ0lPX3NlZWtfaW1wbChzdHJpbmdpbyAqc2VsZiwgUHlfc3NpemVfdCBwb3MsIGludCB3aGVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTllMGFjOWE4YWU3MWMyNSBpbnB1dD1lMzg1NWIyNGU3Y2FlMDZhXSovCiB7Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgaW50IG1vZGUgPSAwOwotCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsICZwb3MsICZtb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCi0gICAgaWYgKG1vZGUgIT0gMCAmJiBtb2RlICE9IDEgJiYgbW9kZSAhPSAyKSB7CisgICAgaWYgKHdoZW5jZSAhPSAwICYmIHdoZW5jZSAhPSAxICYmIHdoZW5jZSAhPSAyKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgd2hlbmNlICglaSwgc2hvdWxkIGJlIDAsIDEgb3IgMikiLCBtb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHdoZW5jZSAoJWksIHNob3VsZCBiZSAwLCAxIG9yIDIpIiwgd2hlbmNlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgaWYgKHBvcyA8IDAgJiYgbW9kZSA9PSAwKSB7CisgICAgZWxzZSBpZiAocG9zIDwgMCAmJiB3aGVuY2UgPT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzZWVrIHBvc2l0aW9uICV6ZCIsIHBvcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIGlmIChtb2RlICE9IDAgJiYgcG9zICE9IDApIHsKKyAgICBlbHNlIGlmICh3aGVuY2UgIT0gMCAmJiBwb3MgIT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBkbyBub256ZXJvIGN1ci1yZWxhdGl2ZSBzZWVrcyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICAvKiBtb2RlIDA6IG9mZnNldCByZWxhdGl2ZSB0byBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KLSAgICAgICBtb2RlIDE6IG5vIGNoYW5nZSB0byBjdXJyZW50IHBvc2l0aW9uLgotICAgICAgIG1vZGUgMjogY2hhbmdlIHBvc2l0aW9uIHRvIGVuZCBvZiBmaWxlLiAqLwotICAgIGlmIChtb2RlID09IDEpIHsKKyAgICAvKiB3aGVuY2UgPSAwOiBvZmZzZXQgcmVsYXRpdmUgdG8gYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICAgd2hlbmNlID0gMTogbm8gY2hhbmdlIHRvIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICAgd2hlbmNlID0gMjogY2hhbmdlIHBvc2l0aW9uIHRvIGVuZCBvZiBmaWxlLiAqLworICAgIGlmICh3aGVuY2UgPT0gMSkgewogICAgICAgICBwb3MgPSBzZWxmLT5wb3M7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgPT0gMikgeworICAgIGVsc2UgaWYgKHdoZW5jZSA9PSAyKSB7CiAgICAgICAgIHBvcyA9IHNlbGYtPnN0cmluZ19zaXplOwogICAgIH0KIApAQCAtNTQxLDE0ICs1NjIsMjAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNlbGYtPnBvcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb193cml0ZV9kb2MsCi0gICAgIldyaXRlIHN0cmluZyB0byBmaWxlLlxuIgotICAgICJcbiIKLSAgICAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiwgd2hpY2ggaXMgYWx3YXlzIGVxdWFsIHRvXG4iCi0gICAgInRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLndyaXRlCisgICAgcyBhcyBvYmo6IG9iamVjdAorICAgIC8KKworV3JpdGUgc3RyaW5nIHRvIGZpbGUuCisKK1JldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4sIHdoaWNoIGlzIGFsd2F5cyBlcXVhbCB0bwordGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc3RyaW5naW9fd3JpdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpvYmopCitfaW9fU3RyaW5nSU9fd3JpdGUoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGRlYWJhOTFhMTViOTRkYSBpbnB1dD1jZjk2ZjNiMTY1ODZlNjY5XSovCiB7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCkBAIC01NjksMTQgKzU5NiwyMCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19jbG9zZV9kb2MsCi0gICAgIkNsb3NlIHRoZSBJTyBvYmplY3QuIEF0dGVtcHRpbmcgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIGFmdGVyIHRoZVxuIgotICAgICJvYmplY3QgaXMgY2xvc2VkIHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLlxuIgotICAgICJcbiIKLSAgICAiVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLmNsb3NlCisKK0Nsb3NlIHRoZSBJTyBvYmplY3QuCisKK0F0dGVtcHRpbmcgYW55IGZ1cnRoZXIgb3BlcmF0aW9uIGFmdGVyIHRoZSBvYmplY3QgaXMgY2xvc2VkCit3aWxsIHJhaXNlIGEgVmFsdWVFcnJvci4KKworVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGNsb3NlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX2Nsb3NlKHN0cmluZ2lvICpzZWxmKQorX2lvX1N0cmluZ0lPX2Nsb3NlX2ltcGwoc3RyaW5naW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQzOTkzNTVjYmU1MThmMSBpbnB1dD1jYmMxMGI0NWYzNWQ2ZDQ2XSovCiB7CiAgICAgc2VsZi0+Y2xvc2VkID0gMTsKICAgICAvKiBGcmVlIHVwIHNvbWUgbWVtb3J5ICovCkBAIC02NDQsMTkgKzY3NywyNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uU3RyaW5nSU8uX19pbml0X18KKyAgICBpbml0aWFsX3ZhbHVlIGFzIHZhbHVlOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAnJworICAgIG5ld2xpbmUgYXMgbmV3bGluZV9vYmo6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9ICdcbicKKworVGV4dCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ1ZmZlci4KKworVGhlIGluaXRpYWxfdmFsdWUgYXJndW1lbnQgc2V0cyB0aGUgdmFsdWUgb2Ygb2JqZWN0LiAgVGhlIG5ld2xpbmUKK2FyZ3VtZW50IGlzIGxpa2UgdGhlIG9uZSBvZiBUZXh0SU9XcmFwcGVyJ3MgY29uc3RydWN0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBpbnQKLXN0cmluZ2lvX2luaXQoc3RyaW5naW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3bGluZV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTQyMWVhMDIzYjIyZWY0ZSBpbnB1dD1jZWUyZDkxODFiMjU3N2EzXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImluaXRpYWxfdmFsdWUiLCAibmV3bGluZSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5ld2xpbmVfb2JqID0gTlVMTDsKICAgICBjaGFyICpuZXdsaW5lID0gIlxuIjsKICAgICBQeV9zc2l6ZV90IHZhbHVlX2xlbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T086X19pbml0X18iLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICAvKiBQYXJzZSB0aGUgbmV3bGluZSBhcmd1bWVudC4gVGhpcyB1c2VkIHRvIGJlIGRvbmUgd2l0aCB0aGUgJ3onCiAgICAgICAgc3BlY2lmaWVyLCBob3dldmVyIHRoaXMgYWxsb3dlZCBhbnkgb2JqZWN0IHdpdGggdGhlIGJ1ZmZlciBpbnRlcmZhY2UgdG8KICAgICAgICBiZSBjb252ZXJ0ZWQuIFRodXMgd2UgaGF2ZSB0byBwYXJzZSBpdCBtYW51YWxseSBzaW5jZSB3ZSBvbmx5IHdhbnQgdG8KQEAgLTc2MSwzMyArODAwLDQ1IEBACiAKIC8qIFByb3BlcnRpZXMgYW5kIHBzZXVkby1wcm9wZXJ0aWVzICovCiAKLVB5RG9jX1NUUlZBUihzdHJpbmdpb19yZWFkYWJsZV9kb2MsCi0icmVhZGFibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgcmVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy5yZWFkYWJsZQogCi1QeURvY19TVFJWQVIoc3RyaW5naW9fd3JpdGFibGVfZG9jLAotIndyaXRhYmxlKCkgLT4gYm9vbC4gUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHdyaXR0ZW4uIik7Ci0KLVB5RG9jX1NUUlZBUihzdHJpbmdpb19zZWVrYWJsZV9kb2MsCi0ic2Vla2FibGUoKSAtPiBib29sLiBSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgc2Vla2VkLiIpOworUmV0dXJucyBUcnVlIGlmIHRoZSBJTyBvYmplY3QgY2FuIGJlIHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb19zZWVrYWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fcmVhZGFibGVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMTlkNDRkZDhiMWNlYjk5IGlucHV0PTM5Y2UwNjhiMjI0YzIxYWRdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5TdHJpbmdJTy53cml0YWJsZQorCitSZXR1cm5zIFRydWUgaWYgdGhlIElPIG9iamVjdCBjYW4gYmUgd3JpdHRlbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXN0cmluZ2lvX3JlYWRhYmxlKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19TdHJpbmdJT193cml0YWJsZV9pbXBsKHN0cmluZ2lvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzZTRkZDc3MTg3MDc0Y2EgaW5wdXQ9N2E2OTEzNTNhYWMzODgzNV0qLwogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKICAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlN0cmluZ0lPLnNlZWthYmxlCisKK1JldHVybnMgVHJ1ZSBpZiB0aGUgSU8gb2JqZWN0IGNhbiBiZSBzZWVrZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zdHJpbmdpb193cml0YWJsZShzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzdHJpbmdpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDIwYjQ2NDFjNzU2ODc5IGlucHV0PTRjNjA2ZDA1YjMyOTUyZTZdKi8KIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CkBAIC04MDksNyArODYwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdpb19nZXRzdGF0ZShzdHJpbmdpbyAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqaW5pdHZhbHVlID0gc3RyaW5naW9fZ2V0dmFsdWUoc2VsZik7CisgICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IF9pb19TdHJpbmdJT19nZXR2YWx1ZV9pbXBsKHNlbGYpOwogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T2JqZWN0ICpzdGF0ZTsKIApAQCAtODU3LDcgKzkwOCw3IEBACiAgICAgaW5pdGFyZyA9IFB5VHVwbGVfR2V0U2xpY2Uoc3RhdGUsIDAsIDIpOwogICAgIGlmIChpbml0YXJnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzdHJpbmdpb19pbml0KHNlbGYsIGluaXRhcmcsIE5VTEwpIDwgMCkgeworICAgIGlmIChfaW9fU3RyaW5nSU9fX19pbml0X18oKFB5T2JqZWN0ICopc2VsZiwgaW5pdGFyZywgTlVMTCkgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpbml0YXJnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtOTU5LDE5ICsxMDEwLDIxIEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHIoc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX25ld2xpbmVzKTsKIH0KIAotc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBzdHJpbmdpb19tZXRob2RzW10gPSB7Ci0gICAgeyJjbG9zZSIsICAgIChQeUNGdW5jdGlvbilzdHJpbmdpb19jbG9zZSwgICAgTUVUSF9OT0FSR1MsICBzdHJpbmdpb19jbG9zZV9kb2N9LAotICAgIHsiZ2V0dmFsdWUiLCAoUHlDRnVuY3Rpb24pc3RyaW5naW9fZ2V0dmFsdWUsIE1FVEhfTk9BUkdTLCAgc3RyaW5naW9fZ2V0dmFsdWVfZG9jfSwKLSAgICB7InJlYWQiLCAgICAgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3JlYWQsICAgICBNRVRIX1ZBUkFSR1MsIHN0cmluZ2lvX3JlYWRfZG9jfSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1MsIHN0cmluZ2lvX3JlYWRsaW5lX2RvY30sCi0gICAgeyJ0ZWxsIiwgICAgIChQeUNGdW5jdGlvbilzdHJpbmdpb190ZWxsLCAgICAgTUVUSF9OT0FSR1MsICBzdHJpbmdpb190ZWxsX2RvY30sCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBzdHJpbmdpb190cnVuY2F0ZV9kb2N9LAotICAgIHsic2VlayIsICAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fc2VlaywgICAgIE1FVEhfVkFSQVJHUywgc3RyaW5naW9fc2Vla19kb2N9LAotICAgIHsid3JpdGUiLCAgICAoUHlDRnVuY3Rpb24pc3RyaW5naW9fd3JpdGUsICAgIE1FVEhfTywgICAgICAgc3RyaW5naW9fd3JpdGVfZG9jfSwKKyNpbmNsdWRlICJjbGluaWMvc3RyaW5naW8uYy5oIgogCi0gICAgeyJzZWVrYWJsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19zZWVrYWJsZSwgTUVUSF9OT0FSR1MsIHN0cmluZ2lvX3NlZWthYmxlX2RvY30sCi0gICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19yZWFkYWJsZSwgTUVUSF9OT0FSR1MsIHN0cmluZ2lvX3JlYWRhYmxlX2RvY30sCi0gICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdpb193cml0YWJsZSwgTUVUSF9OT0FSR1MsIHN0cmluZ2lvX3dyaXRhYmxlX2RvY30sCitzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIHN0cmluZ2lvX21ldGhvZHNbXSA9IHsKKyAgICBfSU9fU1RSSU5HSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX0dFVFZBTFVFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19SRUFETElORV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fVEVMTF9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fVFJVTkNBVEVfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1NFRUtfTUVUSE9EREVGCisgICAgX0lPX1NUUklOR0lPX1dSSVRFX01FVEhPRERFRgorCisgICAgX0lPX1NUUklOR0lPX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19TVFJJTkdJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fU1RSSU5HSU9fV1JJVEFCTEVfTUVUSE9EREVGCiAKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilzdHJpbmdpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1N9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2lvX3NldHN0YXRlLCBNRVRIX099LApAQCAtMTAxMyw3ICsxMDY2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgICAgICAgICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgLyp0cF9mbGFncyovCi0gICAgc3RyaW5naW9fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICBfaW9fU3RyaW5nSU9fX19pbml0X19fX2RvY19fLCAgICAgICAgICAgICAgLyp0cF9kb2MqLwogICAgICh0cmF2ZXJzZXByb2Mpc3RyaW5naW9fdHJhdmVyc2UsICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KICAgICAoaW5xdWlyeSlzdHJpbmdpb19jbGVhciwgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLwpAQCAtMTAyOCw3ICsxMDgxLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCiAgICAgb2Zmc2V0b2Yoc3RyaW5naW8sIGRpY3QpLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKXN0cmluZ2lvX2luaXQsICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCisgICAgX2lvX1N0cmluZ0lPX19faW5pdF9fLCAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MqLwogICAgIHN0cmluZ2lvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCBiNDE5Mjc1Li5jOTYyYzBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtMTEsNiArMTEsMjAgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIgIm5sZGVjb2Rlcl9vYmplY3QgKiIgIiZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSIKK2NsYXNzIF9pby5UZXh0SU9XcmFwcGVyICJ0ZXh0aW8gKiIgIiZUZXh0SU9XcmFwcGVyX1RZcGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yMDk3YTRmYzg1NjcwYzI2XSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIF9QeV9JREVOVElGSUVSKF9kZWFsbG9jX3dhcm4pOwogX1B5X0lERU5USUZJRVIoZGVjb2RlKTsKQEAgLTIxMCwzOCArMjI0LDM3IEBACiAKIC8qIEluY3JlbWVudGFsTmV3bGluZURlY29kZXIgKi8KIAotUHlEb2NfU1RSVkFSKGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZG9jLAotICAgICJDb2RlYyB1c2VkIHdoZW4gcmVhZGluZyBhIGZpbGUgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUuICBJdCB3cmFwc1xuIgotICAgICJhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxcclxcbiBhbmQgXFxyIGludG8gXFxuLiAgSXQgYWxzb1xuIgotICAgICJyZWNvcmRzIHRoZSB0eXBlcyBvZiBuZXdsaW5lcyBlbmNvdW50ZXJlZC4gIFdoZW4gdXNlZCB3aXRoXG4iCi0gICAgInRyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluXG4iCi0gICAgIm9uZSBwaWVjZS4gV2hlbiB1c2VkIHdpdGggZGVjb2Rlcj1Ob25lLCBpdCBleHBlY3RzIHVuaWNvZGUgc3RyaW5ncyBhc1xuIgotICAgICJkZWNvZGUgaW5wdXQgYW5kIHRyYW5zbGF0ZXMgbmV3bGluZXMgd2l0aG91dCBmaXJzdCBpbnZva2luZyBhbiBleHRlcm5hbFxuIgotICAgICJkZWNvZGVyLlxuIgotICAgICk7Ci0KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgUHlPYmplY3QgKmVycm9yczsKLSAgICBzaWduZWQgaW50IHBlbmRpbmdjcjogMTsKLSAgICBzaWduZWQgaW50IHRyYW5zbGF0ZTogMTsKKyAgICB1bnNpZ25lZCBpbnQgcGVuZGluZ2NyOiAxOworICAgIHVuc2lnbmVkIGludCB0cmFuc2xhdGU6IDE7CiAgICAgdW5zaWduZWQgaW50IHNlZW5ubDogMzsKIH0gbmxkZWNvZGVyX29iamVjdDsKIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuX19pbml0X18KKyAgICBkZWNvZGVyOiBvYmplY3QKKyAgICB0cmFuc2xhdGU6IGludAorICAgIGVycm9yczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gInN0cmljdCIKKworQ29kZWMgdXNlZCB3aGVuIHJlYWRpbmcgYSBmaWxlIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLgorCitJdCB3cmFwcyBhbm90aGVyIGluY3JlbWVudGFsIGRlY29kZXIsIHRyYW5zbGF0aW5nIFxyXG4gYW5kIFxyIGludG8gXG4uCitJdCBhbHNvIHJlY29yZHMgdGhlIHR5cGVzIG9mIG5ld2xpbmVzIGVuY291bnRlcmVkLiAgV2hlbiB1c2VkIHdpdGgKK3RyYW5zbGF0ZT1GYWxzZSwgaXQgZW5zdXJlcyB0aGF0IHRoZSBuZXdsaW5lIHNlcXVlbmNlIGlzIHJldHVybmVkIGluCitvbmUgcGllY2UuIFdoZW4gdXNlZCB3aXRoIGRlY29kZXI9Tm9uZSwgaXQgZXhwZWN0cyB1bmljb2RlIHN0cmluZ3MgYXMKK2RlY29kZSBpbnB1dCBhbmQgdHJhbnNsYXRlcyBuZXdsaW5lcyB3aXRob3V0IGZpcnN0IGludm9raW5nIGFuIGV4dGVybmFsCitkZWNvZGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgaW50Ci1pbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2luaXQobmxkZWNvZGVyX29iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfX19pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyLCBpbnQgdHJhbnNsYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZiZDA0ZDQ0M2U3NjRlYzIgaW5wdXQ9ODlkYjZiMTljNmIxMjZiZl0qLwogewotICAgIFB5T2JqZWN0ICpkZWNvZGVyOwotICAgIGludCB0cmFuc2xhdGU7Ci0gICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9pfE86SW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmZGVjb2RlciwgJnRyYW5zbGF0ZSwgJmVycm9ycykpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIHNlbGYtPmRlY29kZXIgPSBkZWNvZGVyOwogICAgIFB5X0lOQ1JFRihkZWNvZGVyKTsKIApAQCAtNDk1LDIyICs1MDgsMjcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmlucHV0OwotICAgIGludCBmaW5hbCA9IDA7CisvKltjbGluaWMgaW5wdXRdCitfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci5kZWNvZGUKKyAgICBpbnB1dDogb2JqZWN0CisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xpOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmlucHV0LCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGQ0ODY3NTViYjM3YTY2ZSBpbnB1dD1kNjU2NzczODViZmQ2ODI3XSovCit7CiAgICAgcmV0dXJuIF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKChQeU9iamVjdCAqKSBzZWxmLCBpbnB1dCwgZmluYWwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlci5nZXRzdGF0ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzdGF0ZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2dldHN0YXRlX2ltcGwobmxkZWNvZGVyX29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGQyYzljMTM2ZjRlMGQwIGlucHV0PWY4ZmYxMDE4MjVlMzJlN2ZdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOwpAQCAtNTIwLDcgKzUzOCw3IEBACiAgICAgICAgICAgIF9QeUlPX3N0cl9nZXRzdGF0ZSwgTlVMTCk7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2Uoc3RhdGUsICIoT0spIiwgJmJ1ZmZlciwgJmZsYWcpKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9LIiwgJmJ1ZmZlciwgJmZsYWcpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTUzNywxNiArNTU1LDI0IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5LIiwgYnVmZmVyLCBmbGFnKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuc2V0c3RhdGUKKyAgICBzdGF0ZTogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9zZXRzdGF0ZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RhdGUpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9zZXRzdGF0ZShubGRlY29kZXJfb2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMxMGM2MjI1MDhiNTc2Y2IgaW5wdXQ9YzUzZmI1MDVhNzZkYmJlMl0qLwogewogICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZsYWc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKHN0YXRlLCAiKE9LKSIsICZidWZmZXIsICZmbGFnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPSyIsICZidWZmZXIsICZmbGFnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzZWxmLT5wZW5kaW5nY3IgPSAoaW50KSBmbGFnICYgMTsKKyAgICBzZWxmLT5wZW5kaW5nY3IgPSAoaW50KSAoZmxhZyAmIDEpOwogICAgIGZsYWcgPj49IDE7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciAhPSBQeV9Ob25lKQpAQCAtNTU2LDggKzU4MiwxMyBAQAogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfcmVzZXQobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9yZXNldF9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzJmYTQwYzc0NjJhYThmZiBpbnB1dD03Mjg2NzhkZGFlYTc3NmRmXSovCiB7CiAgICAgc2VsZi0+c2Vlbm5sID0gMDsKICAgICBzZWxmLT5wZW5kaW5nY3IgPSAwOwpAQCAtNTkxLDk1ICs2MjIsOCBAQAogCiB9CiAKLQotc3RhdGljIFB5TWV0aG9kRGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0gICAgeyJnZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCi0gICAgeyJzZXRzdGF0ZSIsIChQeUNGdW5jdGlvbilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX3NldHN0YXRlLCBNRVRIX099LAotICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24paW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9yZXNldCwgTUVUSF9OT0FSR1N9LAotICAgIHtOVUxMfQotfTsKLQotc3RhdGljIFB5R2V0U2V0RGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZ2V0c2V0W10gPSB7Ci0gICAgeyJuZXdsaW5lcyIsIChnZXR0ZXIpaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9uZXdsaW5lc19nZXQsIE5VTEwsIE5VTEx9LAotICAgIHtOVUxMfQotfTsKLQotUHlUeXBlT2JqZWN0IFB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKG5sZGVjb2Rlcl9vYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgLyp0cF9mbGFncyovCi0gICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9kb2MsICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kcywgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9nZXRzZXQsIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfaW5pdCwgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KLX07Ci0KLQogLyogVGV4dElPV3JhcHBlciAqLwogCi1QeURvY19TVFJWQVIodGV4dGlvd3JhcHBlcl9kb2MsCi0gICAgIkNoYXJhY3RlciBhbmQgbGluZSBiYXNlZCBsYXllciBvdmVyIGEgQnVmZmVyZWRJT0Jhc2Ugb2JqZWN0LCBidWZmZXIuXG4iCi0gICAgIlxuIgotICAgICJlbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmVcbiIKLSAgICAiZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuXG4iCi0gICAgIlxuIgotICAgICJlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZVxuIgotICAgICJoZWxwKGNvZGVjcy5Db2RlYykgb3IgdGhlIGRvY3VtZW50YXRpb24gZm9yIGNvZGVjcy5yZWdpc3RlcikgYW5kXG4iCi0gICAgImRlZmF1bHRzIHRvIFwic3RyaWN0XCIuXG4iCi0gICAgIlxuIgotICAgICJuZXdsaW5lIGNvbnRyb2xzIGhvdyBsaW5lIGVuZGluZ3MgYXJlIGhhbmRsZWQuIEl0IGNhbiBiZSBOb25lLCAnJyxcbiIKLSAgICAiJ1xcbicsICdcXHInLCBhbmQgJ1xcclxcbicuICBJdCB3b3JrcyBhcyBmb2xsb3dzOlxuIgotICAgICJcbiIKLSAgICAiKiBPbiBpbnB1dCwgaWYgbmV3bGluZSBpcyBOb25lLCB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpc1xuIgotICAgICIgIGVuYWJsZWQuIExpbmVzIGluIHRoZSBpbnB1dCBjYW4gZW5kIGluICdcXG4nLCAnXFxyJywgb3IgJ1xcclxcbicsIGFuZFxuIgotICAgICIgIHRoZXNlIGFyZSB0cmFuc2xhdGVkIGludG8gJ1xcbicgYmVmb3JlIGJlaW5nIHJldHVybmVkIHRvIHRoZVxuIgotICAgICIgIGNhbGxlci4gSWYgaXQgaXMgJycsIHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgaXMgZW5hYmxlZCwgYnV0IGxpbmVcbiIKLSAgICAiICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZlxuIgotICAgICIgIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGlucHV0IGxpbmVzIGFyZSBvbmx5IHRlcm1pbmF0ZWQgYnkgdGhlIGdpdmVuXG4iCi0gICAgIiAgc3RyaW5nLCBhbmQgdGhlIGxpbmUgZW5kaW5nIGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgdW50cmFuc2xhdGVkLlxuIgotICAgICJcbiIKLSAgICAiKiBPbiBvdXRwdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgYW55ICdcXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmVcbiIKLSAgICAiICB0cmFuc2xhdGVkIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBsaW5lIHNlcGFyYXRvciwgb3MubGluZXNlcC4gSWZcbiIKLSAgICAiICBuZXdsaW5lIGlzICcnIG9yICdcXG4nLCBubyB0cmFuc2xhdGlvbiB0YWtlcyBwbGFjZS4gSWYgbmV3bGluZSBpcyBhbnlcbiIKLSAgICAiICBvZiB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBhbnkgJ1xcbicgY2hhcmFjdGVycyB3cml0dGVuIGFyZSB0cmFuc2xhdGVkXG4iCi0gICAgIiAgdG8gdGhlIGdpdmVuIHN0cmluZy5cbiIKLSAgICAiXG4iCi0gICAgIklmIGxpbmVfYnVmZmVyaW5nIGlzIFRydWUsIGEgY2FsbCB0byBmbHVzaCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvXG4iCi0gICAgIndyaXRlIGNvbnRhaW5zIGEgbmV3bGluZSBjaGFyYWN0ZXIuIgotICAgICk7Ci0KIHR5cGVkZWYgUHlPYmplY3QgKgogICAgICAgICAoKmVuY29kZWZ1bmNfdCkoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKQEAgLTc0Miw3ICs2ODYsNiBAQAogICAgIFB5T2JqZWN0ICpkaWN0OwogfSB0ZXh0aW87CiAKLQogLyogQSBjb3VwbGUgb2Ygc3BlY2lhbGl6ZWQgY2FzZXMgaW4gb3JkZXIgdG8gYnlwYXNzIHRoZSBzbG93IGluY3JlbWVudGFsCiAgICBlbmNvZGluZyBtZXRob2RzIGZvciB0aGUgbW9zdCBwb3B1bGFyIGVuY29kaW5ncy4gKi8KIApAQCAtODQzLDI4ICs3ODYsNTkgQEAKIH07CiAKIAotc3RhdGljIGludAotdGV4dGlvd3JhcHBlcl9pbml0KHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgICAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwKLSAgICAgICAgICAgICAgICAgICAgICBOVUxMfTsKLSAgICBQeU9iamVjdCAqYnVmZmVyLCAqcmF3LCAqY29kZWNfaW5mbyA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgY2hhciAqbmV3bGluZSA9IE5VTEw7Ci0gICAgaW50IGxpbmVfYnVmZmVyaW5nID0gMCwgd3JpdGVfdGhyb3VnaCA9IDA7Ci0gICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLl9faW5pdF9fCisgICAgYnVmZmVyOiBvYmplY3QKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIG5ld2xpbmU6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBsaW5lX2J1ZmZlcmluZzogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICB3cml0ZV90aHJvdWdoOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQogCitDaGFyYWN0ZXIgYW5kIGxpbmUgYmFzZWQgbGF5ZXIgb3ZlciBhIEJ1ZmZlcmVkSU9CYXNlIG9iamVjdCwgYnVmZmVyLgorCitlbmNvZGluZyBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUKK2RlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLgorCitlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZQoraGVscChjb2RlY3MuQ29kZWMpIG9yIHRoZSBkb2N1bWVudGF0aW9uIGZvciBjb2RlY3MucmVnaXN0ZXIpIGFuZAorZGVmYXVsdHMgdG8gInN0cmljdCIuCisKK25ld2xpbmUgY29udHJvbHMgaG93IGxpbmUgZW5kaW5ncyBhcmUgaGFuZGxlZC4gSXQgY2FuIGJlIE5vbmUsICcnLAorJ1xuJywgJ1xyJywgYW5kICdcclxuJy4gIEl0IHdvcmtzIGFzIGZvbGxvd3M6CisKKyogT24gaW5wdXQsIGlmIG5ld2xpbmUgaXMgTm9uZSwgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMKKyAgZW5hYmxlZC4gTGluZXMgaW4gdGhlIGlucHV0IGNhbiBlbmQgaW4gJ1xuJywgJ1xyJywgb3IgJ1xyXG4nLCBhbmQKKyAgdGhlc2UgYXJlIHRyYW5zbGF0ZWQgaW50byAnXG4nIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGUKKyAgY2FsbGVyLiBJZiBpdCBpcyAnJywgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBpcyBlbmFibGVkLCBidXQgbGluZQorICBlbmRpbmdzIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIHVudHJhbnNsYXRlZC4gSWYgaXQgaGFzIGFueSBvZgorICB0aGUgb3RoZXIgbGVnYWwgdmFsdWVzLCBpbnB1dCBsaW5lcyBhcmUgb25seSB0ZXJtaW5hdGVkIGJ5IHRoZSBnaXZlbgorICBzdHJpbmcsIGFuZCB0aGUgbGluZSBlbmRpbmcgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciB1bnRyYW5zbGF0ZWQuCisKKyogT24gb3V0cHV0LCBpZiBuZXdsaW5lIGlzIE5vbmUsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUKKyAgdHJhbnNsYXRlZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IsIG9zLmxpbmVzZXAuIElmCisgIG5ld2xpbmUgaXMgJycgb3IgJ1xuJywgbm8gdHJhbnNsYXRpb24gdGFrZXMgcGxhY2UuIElmIG5ld2xpbmUgaXMgYW55CisgIG9mIHRoZSBvdGhlciBsZWdhbCB2YWx1ZXMsIGFueSAnXG4nIGNoYXJhY3RlcnMgd3JpdHRlbiBhcmUgdHJhbnNsYXRlZAorICB0byB0aGUgZ2l2ZW4gc3RyaW5nLgorCitJZiBsaW5lX2J1ZmZlcmluZyBpcyBUcnVlLCBhIGNhbGwgdG8gZmx1c2ggaXMgaW1wbGllZCB3aGVuIGEgY2FsbCB0bword3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3Rlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBsaW5lX2J1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdyaXRlX3Rocm91Z2gpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTZhODM0MDJjZTJhODM4MSBpbnB1dD0zMTI2Y2IzMTAxYTJjOTliXSovCit7CisgICAgUHlPYmplY3QgKnJhdywgKmNvZGVjX2luZm8gPSBOVUxMOworICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpbnQgcjsKIAogICAgIHNlbGYtPm9rID0gMDsKICAgICBzZWxmLT5kZXRhY2hlZCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98enp6aWk6ZmlsZWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3bGluZSwgJmxpbmVfYnVmZmVyaW5nLCAmd3JpdGVfdGhyb3VnaCkpCi0gICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChuZXdsaW5lICYmIG5ld2xpbmVbMF0gIT0gJ1wwJwogICAgICAgICAmJiAhKG5ld2xpbmVbMF0gPT0gJ1xuJyAmJiBuZXdsaW5lWzFdID09ICdcMCcpCkBAIC0xMjQ0LDggKzEyMTgsMTMgQEAKICAgICB9CiAKIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuZGV0YWNoCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX2RldGFjaCh0ZXh0aW8gKnNlbGYpCitfaW9fVGV4dElPV3JhcHBlcl9kZXRhY2hfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2JhMzcxNWNkMDMyZDVmMiBpbnB1dD1lNWE3MWZiZGE5ZTFkOWY5XSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJlczsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKQEAgLTEyOTAsMjUgKzEyNjksMjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIud3JpdGUKKyAgICB0ZXh0OiB1bmljb2RlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl93cml0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZGViMGQ1MDc3MWZjZWMgaW5wdXQ9ZmRmMTkxNTM1ODRhMGU0NF0qLwogewogICAgIFB5T2JqZWN0ICpyZXQ7Ci0gICAgUHlPYmplY3QgKnRleHQ7IC8qIG93bmVkIHJlZmVyZW5jZSAqLwogICAgIFB5T2JqZWN0ICpiOwogICAgIFB5X3NzaXplX3QgdGV4dGxlbjsKICAgICBpbnQgaGFzbGYgPSAwOwogICAgIGludCBuZWVkZmx1c2ggPSAwLCB0ZXh0X25lZWRmbHVzaCA9IDA7CiAKLSAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp3cml0ZSIsICZ0ZXh0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRleHQpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5lbmNvZGVyID09IE5VTEwpCkBAIC0xNDQxLDYgKzE0MjEsNyBAQAogICAgIFB5T2JqZWN0ICpkZWNfYnVmZmVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVjX2ZsYWdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqaW5wdXRfY2h1bmsgPSBOVUxMOworICAgIFB5X2J1ZmZlciBpbnB1dF9jaHVua19idWY7CiAgICAgUHlPYmplY3QgKmRlY29kZWRfY2hhcnMsICpjaHVua19zaXplOwogICAgIFB5X3NzaXplX3QgbmJ5dGVzLCBuY2hhcnM7CiAgICAgaW50IGVvZjsKQEAgLTE0NjgsNyArMTQ0OSwxNiBAQAogICAgICAgICAvKiBHaXZlbiB0aGlzLCB3ZSBrbm93IHRoZXJlIHdhcyBhIHZhbGlkIHNuYXBzaG90IHBvaW50CiAgICAgICAgICAqIGxlbihkZWNfYnVmZmVyKSBieXRlcyBhZ28gd2l0aCBkZWNvZGVyIHN0YXRlIChiJycsIGRlY19mbGFncykuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoUHlBcmdfUGFyc2Uoc3RhdGUsICIoT08pIiwgJmRlY19idWZmZXIsICZkZWNfZmxhZ3MpIDwgMCkgeworICAgICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9PIiwgJmRlY19idWZmZXIsICZkZWNfZmxhZ3MpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhkZWNfYnVmZmVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QsIG5vdCAnJS4yMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShkZWNfYnVmZmVyKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC0xNDg0LDIzICsxNDc0LDI0IEBACiAgICAgY2h1bmtfc2l6ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChQeV9NQVgoc2VsZi0+Y2h1bmtfc2l6ZSwgc2l6ZV9oaW50KSk7CiAgICAgaWYgKGNodW5rX3NpemUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOworCiAgICAgaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5idWZmZXIsCiAgICAgICAgIChzZWxmLT5oYXNfcmVhZDEgPyBfUHlJT19zdHJfcmVhZDE6IF9QeUlPX3N0cl9yZWFkKSwKICAgICAgICAgY2h1bmtfc2l6ZSwgTlVMTCk7CiAgICAgUHlfREVDUkVGKGNodW5rX3NpemUpOwogICAgIGlmIChpbnB1dF9jaHVuayA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGlucHV0X2NodW5rKSkgeworCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihpbnB1dF9jaHVuaywgJmlucHV0X2NodW5rX2J1ZiwgMCkgIT0gMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVuZGVybHlpbmcgJXMoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgInVuZGVybHlpbmcgJXMoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgKHNlbGYtPmhhc19yZWFkMSA/ICJyZWFkMSI6ICJyZWFkIiksCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGlucHV0X2NodW5rKS0+dHBfbmFtZSk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBuYnl0ZXMgPSBQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspOworICAgIG5ieXRlcyA9IGlucHV0X2NodW5rX2J1Zi5sZW47CiAgICAgZW9mID0gKG5ieXRlcyA9PSAwKTsKLQogICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkgewogICAgICAgICBkZWNvZGVkX2NoYXJzID0gX1B5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUoCiAgICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCBpbnB1dF9jaHVuaywgZW9mKTsKQEAgLTE1MDksNiArMTUwMCw3IEBACiAgICAgICAgIGRlY29kZWRfY2hhcnMgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLAogICAgICAgICAgICAgX1B5SU9fc3RyX2RlY29kZSwgaW5wdXRfY2h1bmssIGVvZiA/IFB5X1RydWUgOiBQeV9GYWxzZSwgTlVMTCk7CiAgICAgfQorICAgIFB5QnVmZmVyX1JlbGVhc2UoJmlucHV0X2NodW5rX2J1Zik7CiAKICAgICBpZiAoY2hlY2tfZGVjb2RlZChkZWNvZGVkX2NoYXJzKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTE1MjUsMTggKzE1MTcsMTIgQEAKICAgICAgICAgLyogQXQgdGhlIHNuYXBzaG90IHBvaW50LCBsZW4oZGVjX2J1ZmZlcikgYnl0ZXMgYmVmb3JlIHRoZSByZWFkLCB0aGUKICAgICAgICAgICogbmV4dCBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIGRlY19idWZmZXIgKyBpbnB1dF9jaHVuay4KICAgICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpuZXh0X2lucHV0ID0gUHlOdW1iZXJfQWRkKGRlY19idWZmZXIsIGlucHV0X2NodW5rKTsKLSAgICAgICAgaWYgKG5leHRfaW5wdXQgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG5leHRfaW5wdXQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvZGVyIGdldHN0YXRlKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCwgbm90ICclLjIwMHMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaW5wdXQpLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2lucHV0KTsKKyAgICAgICAgUHlPYmplY3QgKm5leHRfaW5wdXQgPSBkZWNfYnVmZmVyOworICAgICAgICBQeUJ5dGVzX0NvbmNhdCgmbmV4dF9pbnB1dCwgaW5wdXRfY2h1bmspOworICAgICAgICBpZiAobmV4dF9pbnB1dCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkZWNfYnVmZmVyID0gTlVMTDsgLyogUmVmZXJlbmNlIGxvc3QgdG8gUHlCeXRlc19Db25jYXQgKi8KICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZGVjX2J1ZmZlcik7CiAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKICAgICAgICAgc2VsZi0+c25hcHNob3QgPSBQeV9CdWlsZFZhbHVlKCJOTiIsIGRlY19mbGFncywgbmV4dF9pbnB1dCk7CiAgICAgfQpAQCAtMTU1MSwxNyArMTUzNywxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIucmVhZAorICAgIHNpemUgYXMgbjogaW9fc3NpemVfdCA9IC0xCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9yZWFkKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9yZWFkX2ltcGwodGV4dGlvICpzZWxmLCBQeV9zc2l6ZV90IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2U2NTFjZTZjYzZhMjVhNiBpbnB1dD04YzA5Mzk4NDI0MDg1Y2NhXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEwsICpjaHVua3MgPSBOVUxMOwogCiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwgJl9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgPT0gTlVMTCkKQEAgLTE3MjUsNyArMTcxMyw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIC8qIE5vbi11bml2ZXJzYWwgbW9kZS4gKi8KICAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVhZG5sKTsKLSAgICAgICAgY2hhciAqbmwgPSBQeVVuaWNvZGVfREFUQShyZWFkbmwpOworICAgICAgICBQeV9VQ1MxICpubCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlYWRubCk7CiAgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewpAQCAtMTkyNywxNiArMTkxNSwxOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9yZWFkbGluZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X3NzaXplX3QgbGltaXQgPSAtMTsKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnJlYWRsaW5lCisgICAgc2l6ZTogUHlfc3NpemVfdCA9IC0xCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNDRhZmE5ODgwNGU4YjI1IGlucHV0PTU2YzcxNzI0ODNiMzZkYjZdKi8KK3sKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwgJmxpbWl0KSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIF90ZXh0aW93cmFwcGVyX3JlYWRsaW5lKHNlbGYsIGxpbWl0KTsKKyAgICByZXR1cm4gX3RleHRpb3dyYXBwZXJfcmVhZGxpbmUoc2VsZiwgc2l6ZSk7CiB9CiAKIC8qIFNlZWsgYW5kIFRlbGwgKi8KQEAgLTIwNjgsMTkgKzIwNTgsMjMgQEAKICAgICAgICAgc2VsZiwgY29va2llLT5zdGFydF9wb3MgPT0gMCAmJiBjb29raWUtPmRlY19mbGFncyA9PSAwKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuc2VlaworICAgIGNvb2tpZSBhcyBjb29raWVPYmo6IG9iamVjdAorICAgIHdoZW5jZTogaW50ID0gMAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfc2Vlayh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfc2Vla19pbXBsKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmNvb2tpZU9iaiwgaW50IHdoZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYTE1Njc5NzY0ZTJkMDRkIGlucHV0PTA0NThhYmViM2Q3ODQyYmVdKi8KIHsKLSAgICBQeU9iamVjdCAqY29va2llT2JqLCAqcG9zb2JqOworICAgIFB5T2JqZWN0ICpwb3NvYmo7CiAgICAgY29va2llX3R5cGUgY29va2llOwotICAgIGludCB3aGVuY2UgPSAwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaW50IGNtcDsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsICZjb29raWVPYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19DTE9TRUQoc2VsZik7CiAKICAgICBQeV9JTkNSRUYoY29va2llT2JqKTsKQEAgLTIyNTIsOCArMjI0NiwxMyBAQAogCiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnRlbGwKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfdGVsbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfdGVsbF9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjE2OGMwOGJmMzRhZDVmIGlucHV0PTlhMmNhZjg4YzI0ZjlkZGZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICpwb3NvYmogPSBOVUxMOwpAQCAtMjI2Myw3ICsyMjYyLDYgQEAKICAgICBQeV9zc2l6ZV90IHNraXBfYnl0ZXMsIHNraXBfYmFjazsKICAgICBQeU9iamVjdCAqc2F2ZWRfc3RhdGUgPSBOVUxMOwogICAgIGNoYXIgKmlucHV0LCAqaW5wdXRfZW5kOwotICAgIGNoYXIgKmRlY19idWZmZXI7CiAgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKICAgICBpbnQgZGVjX2ZsYWdzOwogCkBAIC0yMzA2LDcgKzIzMDQsNyBAQAogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICAvKiBTa2lwIGJhY2t3YXJkIHRvIHRoZSBzbmFwc2hvdCBwb2ludCAoc2VlIF9yZWFkX2NodW5rKS4gKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlKHNlbGYtPnNuYXBzaG90LCAiKGlPKSIsICZjb29raWUuZGVjX2ZsYWdzLCAmbmV4dF9pbnB1dCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHNlbGYtPnNuYXBzaG90LCAiaU8iLCAmY29va2llLmRlY19mbGFncywgJm5leHRfaW5wdXQpKQogICAgICAgICBnb3RvIGZhaWw7CiAKICAgICBhc3NlcnQgKFB5Qnl0ZXNfQ2hlY2sobmV4dF9pbnB1dCkpOwpAQCAtMjMyOCwxNCArMjMyNiwyNCBAQAogICAgICAgICBnb3RvIGZhaWw7CiAKICNkZWZpbmUgREVDT0RFUl9HRVRTVEFURSgpIGRvIHsgXAorICAgICAgICBQeU9iamVjdCAqZGVjX2J1ZmZlcjsgXAogICAgICAgICBQeU9iamVjdCAqX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgXAogICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsgXAogICAgICAgICBpZiAoX3N0YXRlID09IE5VTEwpIFwKICAgICAgICAgICAgIGdvdG8gZmFpbDsgXAotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKF9zdGF0ZSwgIih5I2kpIiwgJmRlY19idWZmZXIsICZkZWNfYnVmZmVyX2xlbiwgJmRlY19mbGFncykpIHsgXAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoX3N0YXRlLCAiT2kiLCAmZGVjX2J1ZmZlciwgJmRlY19mbGFncykpIHsgXAogICAgICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKICAgICAgICAgICAgIGdvdG8gZmFpbDsgXAogICAgICAgICB9IFwKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRlY19idWZmZXIpKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb2RlciBnZXRzdGF0ZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgYnl0ZXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCwgbm90ICclLjIwMHMnIiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZGVjX2J1ZmZlciktPnRwX25hbWUpOyBcCisgICAgICAgICAgICBQeV9ERUNSRUYoX3N0YXRlKTsgXAorICAgICAgICAgICAgZ290byBmYWlsOyBcCisgICAgICAgIH0gXAorICAgICAgICBkZWNfYnVmZmVyX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoZGVjX2J1ZmZlcik7IFwKICAgICAgICAgUHlfREVDUkVGKF9zdGF0ZSk7IFwKICAgICB9IHdoaWxlICgwKQogCkBAIC0yNDYwLDE2ICsyNDY4LDE5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnRydW5jYXRlCisgICAgcG9zOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl90cnVuY2F0ZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbCh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICpwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTBlYzJhZmI5YmI3NzQ1ZiBpbnB1dD01NmVjOGJhYTY1YWVhMzc3XSovCiB7Ci0gICAgUHlPYmplY3QgKnBvcyA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8Tzp0cnVuY2F0ZSIsICZwb3MpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKChQeU9iamVjdCAqKSBzZWxmLCBfUHlJT19zdHJfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTI1MzQsMzYgKzI1NDUsNjEgQEAKIAogLyogSW5xdWlyaWVzICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmZpbGVubworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9maWxlbm8odGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2ZpbGVub19pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMTQ5MGE0YzNkYTEzZTZjIGlucHV0PWM0ODhjYTgzZDAwNjlmOWJdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLnNlZWthYmxlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi10ZXh0aW93cmFwcGVyX3NlZWthYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfaW9fVGV4dElPV3JhcHBlcl9zZWVrYWJsZV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hYjIyM2RiYmNmZmMwZjAwIGlucHV0PThiMDA1Y2EwNmUxZmNhMTNdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIucmVhZGFibGUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfcmVhZGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX3JlYWRhYmxlX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcyZmY3YmEyODlhOGE5MWIgaW5wdXQ9MDcwNGVhN2UwMWIwZDNlYl0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfcmVhZGFibGUsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci53cml0YWJsZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl93cml0YWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfd3JpdGFibGVfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTcyOGM3MTc5MGQwMzIwMCBpbnB1dD1jNDE3NDBiYzlkODYzNmU4XSovCiB7CiAgICAgQ0hFQ0tfQVRUQUNIRUQoc2VsZik7CiAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5UZXh0SU9XcmFwcGVyLmlzYXR0eQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9pc2F0dHkodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2lzYXR0eV9pbXBsKHRleHRpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMmJlMWEzNWJhY2U4ODJlIGlucHV0PWZiNjhkOWYyYzk5YmJmZmZdKi8KIHsKICAgICBDSEVDS19BVFRBQ0hFRChzZWxmKTsKICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2lzYXR0eSwgTlVMTCk7CkBAIC0yNTc3LDggKzI2MTMsMTMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2lvLlRleHRJT1dyYXBwZXIuZmx1c2gKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXRleHRpb3dyYXBwZXJfZmx1c2godGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19pb19UZXh0SU9XcmFwcGVyX2ZsdXNoX2ltcGwodGV4dGlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5ZGU5MTY1ZjljMmU0ZDIgaW5wdXQ9OTI4YzYwNTkwNjk0YWI4NV0qLwogewogICAgIENIRUNLX0FUVEFDSEVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKQEAgLTI1ODgsOCArMjYyOSwxMyBAQAogICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfaW8uVGV4dElPV3JhcHBlci5jbG9zZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotdGV4dGlvd3JhcHBlcl9jbG9zZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfaW1wbCh0ZXh0aW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDU2Y2NmOGI0ODc2ZTRmNCBpbnB1dD05YzIxMTQzMTVlYWUxOTQ4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpbnQgcjsKQEAgLTI3MzMsMjQgKzI3NzksODEgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5TWV0aG9kRGVmIHRleHRpb3dyYXBwZXJfbWV0aG9kc1tdID0gewotICAgIHsiZGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfZGV0YWNoLCBNRVRIX05PQVJHU30sCi0gICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3dyaXRlLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJyZWFkbGluZSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3JlYWRsaW5lLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9mbHVzaCwgTUVUSF9OT0FSR1N9LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorI2luY2x1ZGUgImNsaW5pYy90ZXh0aW8uYy5oIgogCi0gICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9maWxlbm8sIE1FVEhfTk9BUkdTfSwKLSAgICB7InNlZWthYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfc2Vla2FibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7InJlYWRhYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfcmVhZGFibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfd3JpdGFibGUsIE1FVEhfTk9BUkdTfSwKLSAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2lzYXR0eSwgTUVUSF9OT0FSR1N9LAorc3RhdGljIFB5TWV0aG9kRGVmIGluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbWV0aG9kc1tdID0geworICAgIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9HRVRTVEFURV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9TRVRTVEFURV9NRVRIT0RERUYKKyAgICBfSU9fSU5DUkVNRU5UQUxORVdMSU5FREVDT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldFtdID0geworICAgIHsibmV3bGluZXMiLCAoZ2V0dGVyKWluY3JlbWVudGFsbmV3bGluZWRlY29kZXJfbmV3bGluZXNfZ2V0LCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2lvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCAvKnRwX25hbWUqLworICAgIHNpemVvZihubGRlY29kZXJfb2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgIC8qdHBfZmxhZ3MqLworICAgIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX19kb2NfXywgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgaW5jcmVtZW50YWxuZXdsaW5lZGVjb2Rlcl9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBpbmNyZW1lbnRhbG5ld2xpbmVkZWNvZGVyX2dldHNldCwgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9fX2luaXRfXywgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHRleHRpb3dyYXBwZXJfbWV0aG9kc1tdID0geworICAgIF9JT19URVhUSU9XUkFQUEVSX0RFVEFDSF9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9XUklURV9NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9SRUFEX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1JFQURMSU5FX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0ZMVVNIX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0NMT1NFX01FVEhPRERFRgorCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfRklMRU5PX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1NFRUtBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX0lTQVRUWV9NRVRIT0RERUYKICAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX2dldHN0YXRlLCBNRVRIX05PQVJHU30sCiAKLSAgICB7InNlZWsiLCAoUHlDRnVuY3Rpb24pdGV4dGlvd3JhcHBlcl9zZWVrLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsidGVsbCIsIChQeUNGdW5jdGlvbil0ZXh0aW93cmFwcGVyX3RlbGwsIE1FVEhfTk9BUkdTfSwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKXRleHRpb3dyYXBwZXJfdHJ1bmNhdGUsIE1FVEhfVkFSQVJHU30sCisgICAgX0lPX1RFWFRJT1dSQVBQRVJfU0VFS19NRVRIT0RERUYKKyAgICBfSU9fVEVYVElPV1JBUFBFUl9URUxMX01FVEhPRERFRgorICAgIF9JT19URVhUSU9XUkFQUEVSX1RSVU5DQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjc5Niw3ICsyODk5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKICAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsIC8qdHBfZmxhZ3MqLwotICAgIHRleHRpb3dyYXBwZXJfZG9jLCAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19fZG9jX18sIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpdGV4dGlvd3JhcHBlcl90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZXh0aW93cmFwcGVyX2NsZWFyLCAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwpAQCAtMjgxMSw3ICsyOTE0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwogICAgIG9mZnNldG9mKHRleHRpbywgZGljdCksIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKXRleHRpb3dyYXBwZXJfaW5pdCwgLyogdHBfaW5pdCAqLworICAgIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fLCAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggZGRlZDJjOS4uZjYzZDc1OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtNDcsNyArNDcsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtX3NlcGFyYXRvcjsKICAgICBQeU9iamVjdCAqc29ydF9rZXlzOwogICAgIFB5T2JqZWN0ICpza2lwa2V5czsKLSAgICBpbnQgZmFzdF9lbmNvZGU7CisgICAgUHlDRnVuY3Rpb24gZmFzdF9lbmNvZGU7CiAgICAgaW50IGFsbG93X25hbjsKIH0gUHlFbmNvZGVyT2JqZWN0OwogCkBAIC0yMjUsMjYgKzIyNSwxMjIgQEAKICAgICByZXR1cm4gcnZhbDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VzY2FwZV91bmljb2RlKFB5T2JqZWN0ICpweXN0cikKK3sKKyAgICAvKiBUYWtlIGEgUHlVbmljb2RlIHB5c3RyIGFuZCByZXR1cm4gYSBuZXcgZXNjYXBlZCBQeVVuaWNvZGUgKi8KKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBpbnB1dF9jaGFyczsKKyAgICBQeV9zc2l6ZV90IG91dHB1dF9zaXplOworICAgIFB5X3NzaXplX3QgY2hhcnM7CisgICAgUHlPYmplY3QgKnJ2YWw7CisgICAgdm9pZCAqaW5wdXQ7CisgICAgaW50IGtpbmQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShweXN0cik7CisgICAgaW5wdXRfY2hhcnMgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cik7CisgICAgaW5wdXQgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKworICAgIC8qIENvbXB1dGUgdGhlIG91dHB1dCBzaXplICovCisgICAgZm9yIChpID0gMCwgb3V0cHV0X3NpemUgPSAyOyBpIDwgaW5wdXRfY2hhcnM7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbnB1dCwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgZDsKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnIic6IGNhc2UgJ1xiJzogY2FzZSAnXGYnOgorICAgICAgICBjYXNlICdcbic6IGNhc2UgJ1xyJzogY2FzZSAnXHQnOgorICAgICAgICAgICAgZCA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChjIDw9IDB4MWYpCisgICAgICAgICAgICAgICAgZCA9IDY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG91dHB1dF9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBkKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyB0byBlc2NhcGUiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG91dHB1dF9zaXplICs9IGQ7CisgICAgfQorCisgICAgcnZhbCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X3NpemUsIG1heGNoYXIpOworICAgIGlmIChydmFsID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJ2YWwpOworCisjZGVmaW5lIEVOQ09ERV9PVVRQVVQgZG8geyBcCisgICAgICAgIGNoYXJzID0gMDsgXAorICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAnIic7IFwKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGlucHV0X2NoYXJzOyBpKyspIHsgXAorICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgaW5wdXQsIGkpOyBcCisgICAgICAgICAgICBzd2l0Y2ggKGMpIHsgXAorICAgICAgICAgICAgY2FzZSAnXFwnOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSBjOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnIic6ICBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSBjOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXGInOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAnYic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcZic6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICdmJzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGNhc2UgJ1xuJzogb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgb3V0cHV0W2NoYXJzKytdID0gJ24nOyBicmVhazsgXAorICAgICAgICAgICAgY2FzZSAnXHInOiBvdXRwdXRbY2hhcnMrK10gPSAnXFwnOyBvdXRwdXRbY2hhcnMrK10gPSAncic7IGJyZWFrOyBcCisgICAgICAgICAgICBjYXNlICdcdCc6IG91dHB1dFtjaGFycysrXSA9ICdcXCc7IG91dHB1dFtjaGFycysrXSA9ICd0JzsgYnJlYWs7IFwKKyAgICAgICAgICAgIGRlZmF1bHQ6IFwKKyAgICAgICAgICAgICAgICBpZiAoYyA8PSAweDFmKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAndSc7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJzAnOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICcwJzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gNCkgJiAweGZdOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyAgICAgKSAmIDB4Zl07IFwKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IGM7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJyInOyBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKm91dHB1dCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJ2YWwpOworICAgICAgICBFTkNPREVfT1VUUFVUOworICAgIH0gZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpvdXRwdXQgPSBQeVVuaWNvZGVfMkJZVEVfREFUQShydmFsKTsKKyAgICAgICAgRU5DT0RFX09VVFBVVDsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpvdXRwdXQgPSBQeVVuaWNvZGVfNEJZVEVfREFUQShydmFsKTsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBFTkNPREVfT1VUUFVUOworICAgIH0KKyN1bmRlZiBFTkNPREVfT1VUUFVUCisKKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocnZhbCwgMSkpOworI2VuZGlmCisgICAgcmV0dXJuIHJ2YWw7Cit9CisKIHN0YXRpYyB2b2lkCiByYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgLyogVXNlIHRoZSBQeXRob24gZnVuY3Rpb24ganNvbi5kZWNvZGVyLmVycm1zZyB0byByYWlzZSBhIG5pY2UKLSAgICBsb29raW5nIFZhbHVlRXJyb3IgZXhjZXB0aW9uICovCi0gICAgc3RhdGljIFB5T2JqZWN0ICplcnJtc2dfZm4gPSBOVUxMOwotICAgIFB5T2JqZWN0ICpweW1zZzsKLSAgICBpZiAoZXJybXNnX2ZuID09IE5VTEwpIHsKKyAgICAvKiBVc2UgSlNPTkRlY29kZUVycm9yIGV4Y2VwdGlvbiB0byByYWlzZSBhIG5pY2UgbG9va2luZyBWYWx1ZUVycm9yIHN1YmNsYXNzICovCisgICAgc3RhdGljIFB5T2JqZWN0ICpKU09ORGVjb2RlRXJyb3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGM7CisgICAgaWYgKEpTT05EZWNvZGVFcnJvciA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVyID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJqc29uLmRlY29kZXIiKTsKICAgICAgICAgaWYgKGRlY29kZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZXJybXNnX2ZuID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhkZWNvZGVyLCAiZXJybXNnIik7CisgICAgICAgIEpTT05EZWNvZGVFcnJvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZGVjb2RlciwgIkpTT05EZWNvZGVFcnJvciIpOwogICAgICAgICBQeV9ERUNSRUYoZGVjb2Rlcik7Ci0gICAgICAgIGlmIChlcnJtc2dfZm4gPT0gTlVMTCkKKyAgICAgICAgaWYgKEpTT05EZWNvZGVFcnJvciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBweW1zZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlcnJtc2dfZm4sICIoek9uKSIsIG1zZywgcywgZW5kKTsKLSAgICBpZiAocHltc2cpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1ZhbHVlRXJyb3IsIHB5bXNnKTsKLSAgICAgICAgUHlfREVDUkVGKHB5bXNnKTsKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oSlNPTkRlY29kZUVycm9yLCAiKHpPbikiLCBtc2csIHMsIGVuZCk7CisgICAgaWYgKGV4YykgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoSlNPTkRlY29kZUVycm9yLCBleGMpOworICAgICAgICBQeV9ERUNSRUYoZXhjKTsKICAgICB9CiB9CiAKQEAgLTUzNyw2ICs2MzMsMzEgQEAKICAgICByZXR1cm4gcnZhbDsKIH0KIAorCitQeURvY19TVFJWQVIocHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmcsCisgICAgImVuY29kZV9iYXNlc3RyaW5nKHN0cmluZykgLT4gc3RyaW5nXG4iCisgICAgIlxuIgorICAgICJSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZyIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9lbmNvZGVfYmFzZXN0cmluZyhQeU9iamVjdCogc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICpweXN0cikKK3sKKyAgICBQeU9iamVjdCAqcnZhbDsKKyAgICAvKiBSZXR1cm4gYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIHN0cmluZyAqLworICAgIC8qIE1FVEhfTyAqLworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socHlzdHIpKSB7CisgICAgICAgIHJ2YWwgPSBlc2NhcGVfdW5pY29kZShweXN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjgwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHB5c3RyKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcnZhbDsKK30KKwogc3RhdGljIHZvaWQKIHNjYW5uZXJfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTcxNSw3ICs4MzYsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BhcnNlX2FycmF5X3VuaWNvZGUoUHlTY2FubmVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcHlzdHIsIFB5X3NzaXplX3QgaWR4LCBQeV9zc2l6ZV90ICpuZXh0X2lkeF9wdHIpIHsKLSAgICAvKiBSZWFkIGEgSlNPTiBhcnJheSBmcm9tIFB5U3RyaW5nIHB5c3RyLgorICAgIC8qIFJlYWQgYSBKU09OIGFycmF5IGZyb20gUHlVbmljb2RlIHB5c3RyLgogICAgIGlkeCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgb3BlbmluZyBicmFjZS4KICAgICAqbmV4dF9pZHhfcHRyIGlzIGEgcmV0dXJuLWJ5LXJlZmVyZW5jZSBpbmRleCB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyCiAgICAgICAgIHRoZSBjbG9zaW5nIGJyYWNlLgpAQCAtNzg3LDggKzkwOCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGFyc2VfY29uc3RhbnQoUHlTY2FubmVyT2JqZWN0ICpzLCBjaGFyICpjb25zdGFudCwgUHlfc3NpemVfdCBpZHgsIFB5X3NzaXplX3QgKm5leHRfaWR4X3B0cikgewotICAgIC8qIFJlYWQgYSBKU09OIGNvbnN0YW50IGZyb20gUHlTdHJpbmcgcHlzdHIuCitfcGFyc2VfY29uc3RhbnQoUHlTY2FubmVyT2JqZWN0ICpzLCBjb25zdCBjaGFyICpjb25zdGFudCwgUHlfc3NpemVfdCBpZHgsIFB5X3NzaXplX3QgKm5leHRfaWR4X3B0cikgeworICAgIC8qIFJlYWQgYSBKU09OIGNvbnN0YW50LgogICAgIGNvbnN0YW50IGlzIHRoZSBjb25zdGFudCBzdHJpbmcgdGhhdCB3YXMgZm91bmQKICAgICAgICAgKCJOYU4iLCAiSW5maW5pdHkiLCAiLUluZmluaXR5IikuCiAgICAgaWR4IGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjb25zdGFudApAQCAtODIwLDcgKzk0MSw3IEBACiAgICAgICAgIHRoZSBudW1iZXIuCiAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoYXQgbnVtYmVyOgotICAgICAgICBQeUludCwgUHlMb25nLCBvciBQeUZsb2F0LgorICAgICAgICBQeUxvbmcsIG9yIFB5RmxvYXQuCiAgICAgICAgIE1heSByZXR1cm4gb3RoZXIgdHlwZXMgaWYgcGFyc2VfaW50IG9yIHBhcnNlX2Zsb2F0IGFyZSBzZXQKICAgICAqLwogICAgIHZvaWQgKnN0cjsKQEAgLTEyNDQsNyArMTM2NSwxNCBAQAogICAgIHMtPml0ZW1fc2VwYXJhdG9yID0gaXRlbV9zZXBhcmF0b3I7CiAgICAgcy0+c29ydF9rZXlzID0gc29ydF9rZXlzOwogICAgIHMtPnNraXBrZXlzID0gc2tpcGtleXM7Ci0gICAgcy0+ZmFzdF9lbmNvZGUgPSAoUHlDRnVuY3Rpb25fQ2hlY2socy0+ZW5jb2RlcikgJiYgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24ocy0+ZW5jb2RlcikgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKTsKKyAgICBzLT5mYXN0X2VuY29kZSA9IE5VTEw7CisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKHMtPmVuY29kZXIpKSB7CisgICAgICAgIFB5Q0Z1bmN0aW9uIGYgPSBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbihzLT5lbmNvZGVyKTsKKyAgICAgICAgaWYgKGYgPT0gKFB5Q0Z1bmN0aW9uKXB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpIHx8CisgICAgICAgICAgICAgICAgZiA9PSAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmcpIHsKKyAgICAgICAgICAgIHMtPmZhc3RfZW5jb2RlID0gZjsKKyAgICAgICAgfQorICAgIH0KICAgICBzLT5hbGxvd19uYW4gPSBhbGxvd19uYW47CiAKICAgICBQeV9JTkNSRUYocy0+bWFya2Vycyk7CkBAIC0xMzkzLDcgKzE1MjEsNyBAQAogewogICAgIC8qIFJldHVybiB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiBhIHN0cmluZyAqLwogICAgIGlmIChzLT5mYXN0X2VuY29kZSkKLSAgICAgICAgcmV0dXJuIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKE5VTEwsIG9iaik7CisgICAgICAgIHJldHVybiBzLT5mYXN0X2VuY29kZShOVUxMLCBvYmopOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+ZW5jb2Rlciwgb2JqLCBOVUxMKTsKIH0KQEAgLTE4NDAsNiArMTk2OCwxMCBAQAogICAgICAgICAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWksCiAgICAgICAgIE1FVEhfTywKICAgICAgICAgcHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWl9LAorICAgIHsiZW5jb2RlX2Jhc2VzdHJpbmciLAorICAgICAgICAoUHlDRnVuY3Rpb24pcHlfZW5jb2RlX2Jhc2VzdHJpbmcsCisgICAgICAgIE1FVEhfTywKKyAgICAgICAgcHlkb2NfZW5jb2RlX2Jhc2VzdHJpbmd9LAogICAgIHsic2NhbnN0cmluZyIsCiAgICAgICAgIChQeUNGdW5jdGlvbilweV9zY2Fuc3RyaW5nLAogICAgICAgICBNRVRIX1ZBUkFSR1MsCkBAIC0xODYyLDcgKzE5OTQsNyBAQAogICAgICAgICBOVUxMCiB9OwogCi1QeU9iamVjdCoKK1B5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2pzb24odm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmanNvbm1vZHVsZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IDAxMzdkOTUuLjY2ZTUzNGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0yMDIsNiArMjAyLDggQEAKICAgICAgICAgKi8KICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBmbi0+bV9zZWxmOwogICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKm1vZG5hbWUgPSBmbi0+bV9tb2R1bGU7CisKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1vID0gX1B5VHlwZV9Mb29rdXAoUHlfVFlQRShzZWxmKSwgbmFtZSk7CiAgICAgICAgICAgICBQeV9YSU5DUkVGKG1vKTsKQEAgLTIxMyw5ICsyMTUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvKiBPdGhlcndpc2UsIHVzZSBfX21vZHVsZV9fICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlcz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOworICAgICAgICBpZiAobW9kbmFtZSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhtb2RuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlUy4lcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsICBmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGJ1aWx0LWluIG1ldGhvZCAlcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBjNDM2NzZhLi43ZTRlMmRmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC02Niw2ICs2Niw5IEBACiAgICAgaW50IGNoZWNrOwogICAgIGNoYXIgZW9mOwogICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKKyAgICBjaGFyIG5lZWRzX2lucHV0OworICAgIHVpbnQ4X3QgKmlucHV0X2J1ZmZlcjsKKyAgICBzaXplX3QgaW5wdXRfYnVmZmVyX3NpemU7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKICNlbmRpZgpAQCAtMTQyLDEwICsxNDUsMTUgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50Ci1ncm93X2J1ZmZlcihQeU9iamVjdCAqKmJ1ZikKK2dyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOwotICAgIHJldHVybiBfUHlCeXRlc19SZXNpemUoYnVmLCBzaXplICsgKHNpemUgPj4gMykgKyA2KTsKKyAgICBQeV9zc2l6ZV90IHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpOworICAgIFB5X3NzaXplX3QgbmV3c2l6ZSA9IHNpemUgKyAoc2l6ZSA+PiAzKSArIDY7CisKKyAgICBpZiAobWF4X2xlbmd0aCA+IDAgJiYgbmV3c2l6ZSA+IG1heF9sZW5ndGgpCisgICAgICAgIG5ld3NpemUgPSBtYXhfbGVuZ3RoOworCisgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld3NpemUpOwogfQogCiAKQEAgLTQ3MCwxMiArNDc4LDExIEBACiAKIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgX2x6bWEKIGNsYXNzIF9sem1hLkxaTUFDb21wcmVzc29yICJDb21wcmVzc29yICoiICImQ29tcHJlc3Nvcl90eXBlIgogY2xhc3MgX2x6bWEuTFpNQURlY29tcHJlc3NvciAiRGVjb21wcmVzc29yICoiICImRGVjb21wcmVzc29yX3R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1mMTdhZmM3ODY1MjVkNmMyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0yYzE0YmJlMDVmZjBjMTQ3XSovCiAKICNpbmNsdWRlICJjbGluaWMvX2x6bWFtb2R1bGUuYy5oIgogCkBAIC01MDQsNyArNTExLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjb21wcmVzcyhDb21wcmVzc29yICpjLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBsem1hX2FjdGlvbiBhY3Rpb24pCiB7Ci0gICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBkYXRhX3NpemUgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOwpAQCAtNTI3LDcgKzUzNCw3IEBACiAgICAgICAgICAgICAoYWN0aW9uID09IExaTUFfRklOSVNIICYmIGx6cmV0ID09IExaTUFfU1RSRUFNX0VORCkpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2UgaWYgKGMtPmx6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQsIC0xKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgYy0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwogICAgICAgICAgICAgYy0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKQEAgLTg4OCwyNSArODk1LDMzIEBACiAKIC8qIExaTUFEZWNvbXByZXNzb3IgY2xhc3MuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kZWNvbXByZXNzKERlY29tcHJlc3NvciAqZCwgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbikKKy8qIERlY29tcHJlc3MgZGF0YSBvZiBsZW5ndGggZC0+bHpzLmF2YWlsX2luIGluIGQtPmx6cy5uZXh0X2luLiAgVGhlIG91dHB1dAorICAgYnVmZmVyIGlzIGFsbG9jYXRlZCBkeW5hbWljYWxseSBhbmQgcmV0dXJuZWQuICBBdCBtb3N0IG1heF9sZW5ndGggYnl0ZXMgYXJlCisgICByZXR1cm5lZCwgc28gc29tZSBvZiB0aGUgaW5wdXQgbWF5IG5vdCBiZSBjb25zdW1lZC4gZC0+bHpzLm5leHRfaW4gYW5kCisgICBkLT5senMuYXZhaWxfaW4gYXJlIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgY29uc3VtZWQgaW5wdXQuICovCitzdGF0aWMgUHlPYmplY3QqCitkZWNvbXByZXNzX2J1ZihEZWNvbXByZXNzb3IgKmQsIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKIHsKLSAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeV9zc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBsem1hX3N0cmVhbSAqbHpzID0gJmQtPmx6czsKIAotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgSU5JVElBTF9CVUZGRVJfU0laRSk7CisgICAgaWYgKG1heF9sZW5ndGggPCAwIHx8IG1heF9sZW5ndGggPj0gSU5JVElBTF9CVUZGRVJfU0laRSkKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBJTklUSUFMX0JVRkZFUl9TSVpFKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWF4X2xlbmd0aCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkLT5senMubmV4dF9pbiA9IGRhdGE7Ci0gICAgZC0+bHpzLmF2YWlsX2luID0gbGVuOwotICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBkLT5senMuYXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworCisgICAgbHpzLT5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICBsenMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgbHptYV9yZXQgbHpyZXQ7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBsenJldCA9IGx6bWFfY29kZSgmZC0+bHpzLCBMWk1BX1JVTik7Ci0gICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopZC0+bHpzLm5leHRfb3V0IC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKyAgICAgICAgbHpyZXQgPSBsem1hX2NvZGUobHpzLCBMWk1BX1JVTik7CisgICAgICAgIGRhdGFfc2l6ZSA9IChjaGFyICopbHpzLT5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC05MTQsMjYgKzkyOSwxMzEgQEAKICAgICAgICAgICAgIGQtPmNoZWNrID0gbHptYV9nZXRfY2hlY2soJmQtPmx6cyk7CiAgICAgICAgIGlmIChsenJldCA9PSBMWk1BX1NUUkVBTV9FTkQpIHsKICAgICAgICAgICAgIGQtPmVvZiA9IDE7Ci0gICAgICAgICAgICBpZiAoZC0+bHpzLmF2YWlsX2luID4gMCkgewotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGQtPnVudXNlZF9kYXRhKTsKLSAgICAgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKWQtPmx6cy5uZXh0X2luLCBkLT5senMuYXZhaWxfaW4pOwotICAgICAgICAgICAgICAgIGlmIChkLT51bnVzZWRfZGF0YSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoZC0+bHpzLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgfSBlbHNlIGlmIChsenMtPmF2YWlsX2luID09IDApIHsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGQtPmx6cy5hdmFpbF9vdXQgPT0gMCkgewotICAgICAgICAgICAgaWYgKGdyb3dfYnVmZmVyKCZyZXN1bHQpID09IC0xKQorICAgICAgICB9IGVsc2UgaWYgKGx6cy0+YXZhaWxfb3V0ID09IDApIHsKKyAgICAgICAgICAgIGlmIChkYXRhX3NpemUgPT0gbWF4X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0LCBtYXhfbGVuZ3RoKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgZC0+bHpzLm5leHRfb3V0ID0gKHVpbnQ4X3QgKilQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgZGF0YV9zaXplOwotICAgICAgICAgICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGx6cy0+bmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBkYXRhX3NpemU7CisgICAgICAgICAgICBsenMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpID09IC0xKQogICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpkLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCit7CisgICAgY2hhciBpbnB1dF9idWZmZXJfaW5fdXNlOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgbHptYV9zdHJlYW0gKmx6cyA9ICZkLT5senM7CisKKyAgICAvKiBQcmVwZW5kIHVuY29uc3VtZWQgaW5wdXQgaWYgbmVjZXNzYXJ5ICovCisgICAgaWYgKGx6cy0+bmV4dF9pbiAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBhdmFpbF9ub3csIGF2YWlsX3RvdGFsOworCisgICAgICAgIC8qIE51bWJlciBvZiBieXRlcyB3ZSBjYW4gYXBwZW5kIHRvIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBhdmFpbF9ub3cgPSAoZC0+aW5wdXRfYnVmZmVyICsgZC0+aW5wdXRfYnVmZmVyX3NpemUpCisgICAgICAgICAgICAtIChsenMtPm5leHRfaW4gKyBsenMtPmF2YWlsX2luKTsKKworICAgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgd2UgY2FuIGFwcGVuZCBpZiB3ZSBtb3ZlIGV4aXN0aW5nCisgICAgICAgICAgIGNvbnRlbnRzIHRvIGJlZ2lubmluZyBvZiBidWZmZXIgKG92ZXJ3cml0aW5nCisgICAgICAgICAgIGNvbnN1bWVkIGlucHV0KSAqLworICAgICAgICBhdmFpbF90b3RhbCA9IGQtPmlucHV0X2J1ZmZlcl9zaXplIC0gbHpzLT5hdmFpbF9pbjsKKworICAgICAgICBpZiAoYXZhaWxfdG90YWwgPCBsZW4pIHsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBsenMtPm5leHRfaW4gLSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgICAgICB1aW50OF90ICp0bXA7CisgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBkLT5pbnB1dF9idWZmZXJfc2l6ZSArIGxlbiAtIGF2YWlsX25vdzsKKworICAgICAgICAgICAgLyogQXNzaWduIHRvIHRlbXBvcmFyeSB2YXJpYWJsZSBmaXJzdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAgICAgIGxvc2UgYWRkcmVzcyBvZiBhbGxvY2F0ZWQgYnVmZmVyIGlmIHJlYWxsb2MgZmFpbHMgKi8KKyAgICAgICAgICAgIHRtcCA9IFB5TWVtX1JlYWxsb2MoZC0+aW5wdXRfYnVmZmVyLCBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IHRtcDsKKyAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlcl9zaXplID0gbmV3X3NpemU7CisKKyAgICAgICAgICAgIGx6cy0+bmV4dF9pbiA9IGQtPmlucHV0X2J1ZmZlciArIG9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhdmFpbF9ub3cgPCBsZW4pIHsKKyAgICAgICAgICAgIG1lbW1vdmUoZC0+aW5wdXRfYnVmZmVyLCBsenMtPm5leHRfaW4sCisgICAgICAgICAgICAgICAgICAgIGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgbHpzLT5uZXh0X2luID0gZC0+aW5wdXRfYnVmZmVyOworICAgICAgICB9CisgICAgICAgIG1lbWNweSgodm9pZCopKGx6cy0+bmV4dF9pbiArIGx6cy0+YXZhaWxfaW4pLCBkYXRhLCBsZW4pOworICAgICAgICBsenMtPmF2YWlsX2luICs9IGxlbjsKKyAgICAgICAgaW5wdXRfYnVmZmVyX2luX3VzZSA9IDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsenMtPm5leHRfaW4gPSBkYXRhOworICAgICAgICBsenMtPmF2YWlsX2luID0gbGVuOworICAgICAgICBpbnB1dF9idWZmZXJfaW5fdXNlID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNvbXByZXNzX2J1ZihkLCBtYXhfbGVuZ3RoKTsKKyAgICBpZihyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZC0+ZW9mKSB7CisgICAgICAgIGQtPm5lZWRzX2lucHV0ID0gMDsKKyAgICAgICAgaWYgKGx6cy0+YXZhaWxfaW4gPiAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihkLT51bnVzZWRfZGF0YSk7CisgICAgICAgICAgICBkLT51bnVzZWRfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgKGNoYXIgKilsenMtPm5leHRfaW4sIGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChsenMtPmF2YWlsX2luID09IDApIHsKKyAgICAgICAgbHpzLT5uZXh0X2luID0gTlVMTDsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZC0+bmVlZHNfaW5wdXQgPSAwOworCisgICAgICAgIC8qIElmIHdlIGRpZCBub3QgdXNlIHRoZSBpbnB1dCBidWZmZXIsIHdlIG5vdyBoYXZlCisgICAgICAgICAgIHRvIGNvcHkgdGhlIHRhaWwgZnJvbSB0aGUgY2FsbGVyJ3MgYnVmZmVyIGludG8gdGhlCisgICAgICAgICAgIGlucHV0IGJ1ZmZlciAqLworICAgICAgICBpZiAoIWlucHV0X2J1ZmZlcl9pbl91c2UpIHsKKworICAgICAgICAgICAgLyogRGlzY2FyZCBidWZmZXIgaWYgaXQncyB0b28gc21hbGwKKyAgICAgICAgICAgICAgIChyZXNpemluZyBpdCBtYXkgbmVlZGxlc3NseSBjb3B5IHRoZSBjdXJyZW50IGNvbnRlbnRzKSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPCBsenMtPmF2YWlsX2luKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShkLT5pbnB1dF9idWZmZXIpOworICAgICAgICAgICAgICAgIGQtPmlucHV0X2J1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEFsbG9jYXRlIGlmIG5lY2Vzc2FyeSAqLworICAgICAgICAgICAgaWYgKGQtPmlucHV0X2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyID0gUHlNZW1fTWFsbG9jKGx6cy0+YXZhaWxfaW4pOworICAgICAgICAgICAgICAgIGlmIChkLT5pbnB1dF9idWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX01lbW9yeUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZC0+aW5wdXRfYnVmZmVyX3NpemUgPSBsenMtPmF2YWlsX2luOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb3B5IHRhaWwgKi8KKyAgICAgICAgICAgIG1lbWNweShkLT5pbnB1dF9idWZmZXIsIGx6cy0+bmV4dF9pbiwgbHpzLT5hdmFpbF9pbik7CisgICAgICAgICAgICBsenMtPm5leHRfaW4gPSBkLT5pbnB1dF9idWZmZXI7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogCiBlcnJvcjoKQEAgLTk0NiwyMCArMTA2NiwyOCBAQAogCiAgICAgc2VsZjogc2VsZih0eXBlPSJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCi0gICAgLworICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIAotUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LgorRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyB1bmNvbXByZXNzZWQgZGF0YSBhcyBieXRlcy4KIAotUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLgorSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mCitkZWNvbXByZXNzZWQgZGF0YS4gSWYgdGhpcyBsaW1pdCBpcyByZWFjaGVkIGFuZCBmdXJ0aGVyIG91dHB1dCBjYW4gYmUKK3Byb2R1Y2VkLCAqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gYGBGYWxzZWBgLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXh0CitjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiJycgdG8gb2J0YWluIG1vcmUgb2YgdGhlIG91dHB1dC4KIAotQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgcmVhY2hlZAotcmFpc2VzIGFuIEVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtCi1pcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLgorSWYgYWxsIG9mIHRoZSBpbnB1dCBkYXRhIHdhcyBkZWNvbXByZXNzZWQgYW5kIHJldHVybmVkIChlaXRoZXIgYmVjYXVzZSB0aGlzCit3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZSAqbWF4X2xlbmd0aCogd2FzIG5lZ2F0aXZlKSwKKypzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLgorCitBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIHJhaXNlcyBhbgorRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4KK3RoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kODZlNzhkYTdmZjBmZjIxIGlucHV0PTUwYzQ3NjhiODIxYmYwZWZdKi8KK19sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVmNGUyMGVjNzEyMjI0MWQgaW5wdXQ9ZjJiYjkwMmNjMWNhZjIwM10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC05NjcsNyArMTA5NSw3IEBACiAgICAgaWYgKHNlbGYtPmVvZikKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiQWxyZWFkeSBhdCBlbmQgb2Ygc3RyZWFtIik7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGRhdGEtPmJ1ZiwgZGF0YS0+bGVuKTsKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBkYXRhLT5idWYsIGRhdGEtPmxlbiwgbWF4X2xlbmd0aCk7CiAgICAgUkVMRUFTRV9MT0NLKHNlbGYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMDIzLDggKzExNTEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1fbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBpbnQgZm9ybWF0LCBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTliMTE5ZjZmMmNjMmQ3YTggaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xMDU1LDYgKzExODQsNyBAQAogICAgIHNlbGYtPmFsbG9jLmFsbG9jID0gUHlMem1hX01hbGxvYzsKICAgICBzZWxmLT5hbGxvYy5mcmVlID0gUHlMem1hX0ZyZWU7CiAgICAgc2VsZi0+bHpzLmFsbG9jYXRvciA9ICZzZWxmLT5hbGxvYzsKKyAgICBzZWxmLT5senMubmV4dF9pbiA9IE5VTEw7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CkBAIC0xMDY1LDYgKzExOTUsOSBAQAogI2VuZGlmCiAKICAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfVU5LTk9XTjsKKyAgICBzZWxmLT5uZWVkc19pbnB1dCA9IDE7CisgICAgc2VsZi0+aW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgICBzZWxmLT5pbnB1dF9idWZmZXJfc2l6ZSA9IDA7CiAgICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgIGlmIChzZWxmLT51bnVzZWRfZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTExMyw2ICsxMjQ2LDkgQEAKIHN0YXRpYyB2b2lkCiBEZWNvbXByZXNzb3JfZGVhbGxvYyhEZWNvbXByZXNzb3IgKnNlbGYpCiB7CisgICAgaWYoc2VsZi0+aW5wdXRfYnVmZmVyICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+aW5wdXRfYnVmZmVyKTsKKwogICAgIGx6bWFfZW5kKCZzZWxmLT5senMpOwogICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMTEzNCw2ICsxMjcwLDkgQEAKIFB5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZW9mX2RvYywKICJUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLiIpOwogCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX25lZWRzX2lucHV0X2RvYywKKyJUcnVlIGlmIG1vcmUgaW5wdXQgaXMgbmVlZGVkIGJlZm9yZSBtb3JlIGRlY29tcHJlc3NlZCBkYXRhIGNhbiBiZSBwcm9kdWNlZC4iKTsKKwogUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl91bnVzZWRfZGF0YV9kb2MsCiAiRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4iKTsKIApAQCAtMTE0Miw2ICsxMjgxLDggQEAKICAgICAgRGVjb21wcmVzc29yX2NoZWNrX2RvY30sCiAgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKERlY29tcHJlc3NvciwgZW9mKSwgUkVBRE9OTFksCiAgICAgIERlY29tcHJlc3Nvcl9lb2ZfZG9jfSwKKyAgICB7Im5lZWRzX2lucHV0IiwgVF9CT09MLCBvZmZzZXRvZihEZWNvbXByZXNzb3IsIG5lZWRzX2lucHV0KSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl9uZWVkc19pbnB1dF9kb2N9LAogICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksIFJFQURPTkxZLAogICAgICBEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfZG9jfSwKICAgICB7TlVMTH0KQEAgLTEyNjAsOCArMTQwMSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLCBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjM1ZjdmNTM0NWQ0ODc0NCBpbnB1dD0yNDY0MTA4MDA3ODIxNjBjXSovCitfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZW5jb2RlZF9wcm9wcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZjI0OGY1NzA3NDY2NjhiIGlucHV0PTI0NjQxMDgwMDc4MjE2MGNdKi8KIHsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXI7CiAgICAgbHptYV9yZXQgbHpyZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19vcGNvZGUuYyBiL01vZHVsZXMvX29wY29kZS5jCmluZGV4IGZlZTM4OGYuLjY2M2JiMjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wY29kZS5jCisrKyBiL01vZHVsZXMvX29wY29kZS5jCkBAIC02LDYgKzYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTE3NDQyZTY2ZWIzNzZlNl0qLwogCisjaW5jbHVkZSAiY2xpbmljL19vcGNvZGUuYy5oIgorCiAvKltjbGluaWMgaW5wdXRdCiAKIF9vcGNvZGUuc3RhY2tfZWZmZWN0IC0+IGludApAQCAtMTcsNDIgKzE5LDkgQEAKIENvbXB1dGUgdGhlIHN0YWNrIGVmZmVjdCBvZiB0aGUgb3Bjb2RlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19fLAotInN0YWNrX2VmZmVjdCgkbW9kdWxlLCBvcGNvZGUsIG9wYXJnPU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4iKTsKLQotI2RlZmluZSBfT1BDT0RFX1NUQUNLX0VGRkVDVF9NRVRIT0RERUYgICAgXAotICAgIHsic3RhY2tfZWZmZWN0IiwgKFB5Q0Z1bmN0aW9uKV9vcGNvZGVfc3RhY2tfZWZmZWN0LCBNRVRIX1ZBUkFSR1MsIF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfX30sCi0KLXN0YXRpYyBpbnQKLV9vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wY29kZSwgUHlPYmplY3QgKm9wYXJnKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9vcGNvZGVfc3RhY2tfZWZmZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCBvcGNvZGU7Ci0gICAgUHlPYmplY3QgKm9wYXJnID0gUHlfTm9uZTsKLSAgICBpbnQgX3JldHVybl92YWx1ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiaXxPOnN0YWNrX2VmZmVjdCIsCi0gICAgICAgICZvcGNvZGUsICZvcGFyZykpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgaW50CiBfb3Bjb2RlX3N0YWNrX2VmZmVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcGNvZGUsIFB5T2JqZWN0ICpvcGFyZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTExMzNmOGQ1ODdiYzY3IGlucHV0PTJkMGE5ZWU1M2MwNDE4ZjVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZmNhZmQ1NTk2YzZiMDUwIGlucHV0PTJkMGE5ZWU1M2MwNDE4ZjVdKi8KIHsKICAgICBpbnQgZWZmZWN0OwogICAgIGludCBvcGFyZ19pbnQgPSAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fb3BlcmF0b3IuYyBiL01vZHVsZXMvX29wZXJhdG9yLmMKaW5kZXggYWRlYjk5ZS4uNzM1YWZmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL19vcGVyYXRvci5jCkBAIC02OSw2ICs2OSw3IEBACiBzcGFtMihvcF9hZGQgICAgICAgICAgICwgUHlOdW1iZXJfQWRkKQogc3BhbTIob3Bfc3ViICAgICAgICAgICAsIFB5TnVtYmVyX1N1YnRyYWN0KQogc3BhbTIob3BfbXVsICAgICAgICAgICAsIFB5TnVtYmVyX011bHRpcGx5KQorc3BhbTIob3BfbWF0bXVsICAgICAgICAsIFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KQogc3BhbTIob3BfZmxvb3JkaXYgICAgICAsIFB5TnVtYmVyX0Zsb29yRGl2aWRlKQogc3BhbTIob3BfdHJ1ZWRpdiAgICAgICAsIFB5TnVtYmVyX1RydWVEaXZpZGUpCiBzcGFtMihvcF9tb2QgICAgICAgICAgICwgUHlOdW1iZXJfUmVtYWluZGVyKQpAQCAtODYsNiArODcsNyBAQAogc3BhbTIob3BfaWFkZCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VBZGQpCiBzcGFtMihvcF9pc3ViICAgICAgICAgICwgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0KQogc3BhbTIob3BfaW11bCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseSkKK3NwYW0yKG9wX2ltYXRtdWwgICAgICAgLCBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkpCiBzcGFtMihvcF9pZmxvb3JkaXYgICAgICwgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlKQogc3BhbTIob3BfaXRydWVkaXYgICAgICAsIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlKQogc3BhbTIob3BfaW1vZCAgICAgICAgICAsIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIpCkBAIC0yMzksNyArMjQxLDcgQEAKICJSZXR1cm4gJ2EgPT0gYicuICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gYXBwcm9hY2ggZGVzaWduZWQgdG8gcHJldmVudFxuIgogInRpbWluZyBhbmFseXNpcywgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuXG4iCiAiYSBhbmQgYiBtdXN0IGJvdGggYmUgb2YgdGhlIHNhbWUgdHlwZTogZWl0aGVyIHN0ciAoQVNDSUkgb25seSksXG4iCi0ib3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIChlLmcuIGJ5dGVzKS5cbiIKKyJvciBhbnkgYnl0ZXMtbGlrZSBvYmplY3QuXG4iCiAiXG4iCiAiTm90ZTogSWYgYSBhbmQgYiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycyxcbiIKICJhIHRpbWluZyBhdHRhY2sgY291bGQgdGhlb3JldGljYWxseSByZXZlYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4iCkBAIC0zNDMsNiArMzQ1LDcgQEAKIHNwYW0yKGFkZCwgImFkZChhLCBiKSAtLSBTYW1lIGFzIGEgKyBiLiIpCiBzcGFtMihzdWIsICJzdWIoYSwgYikgLS0gU2FtZSBhcyBhIC0gYi4iKQogc3BhbTIobXVsLCAibXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqIGIuIikKK3NwYW0yKG1hdG11bCwgIm1hdG11bChhLCBiKSAtLSBTYW1lIGFzIGEgQCBiLiIpCiBzcGFtMihmbG9vcmRpdiwgImZsb29yZGl2KGEsIGIpIC0tIFNhbWUgYXMgYSAvLyBiLiIpCiBzcGFtMih0cnVlZGl2LCAidHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLyBiLiIpCiBzcGFtMihtb2QsICJtb2QoYSwgYikgLS0gU2FtZSBhcyBhICUgYi4iKQpAQCAtMzYwLDYgKzM2Myw3IEBACiBzcGFtMihpYWRkLCAiYSA9IGlhZGQoYSwgYikgLS0gU2FtZSBhcyBhICs9IGIuIikKIHNwYW0yKGlzdWIsICJhID0gaXN1YihhLCBiKSAtLSBTYW1lIGFzIGEgLT0gYi4iKQogc3BhbTIoaW11bCwgImEgPSBpbXVsKGEsIGIpIC0tIFNhbWUgYXMgYSAqPSBiLiIpCitzcGFtMihpbWF0bXVsLCAiYSA9IGltYXRtdWwoYSwgYikgLS0gU2FtZSBhcyBhIEA9IGIuIikKIHNwYW0yKGlmbG9vcmRpdiwgImEgPSBpZmxvb3JkaXYoYSwgYikgLS0gU2FtZSBhcyBhIC8vPSBiLiIpCiBzcGFtMihpdHJ1ZWRpdiwgImEgPSBpdHJ1ZWRpdihhLCBiKSAtLSBTYW1lIGFzIGEgLz0gYiIpCiBzcGFtMihpbW9kLCAiYSA9IGltb2QoYSwgYikgLS0gU2FtZSBhcyBhICU9IGIuIikKQEAgLTQ4MSw2ICs0ODUsNDEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoraXRlbWdldHRlcl9yZXByKGl0ZW1nZXR0ZXJvYmplY3QgKmlnKQoreworICAgIFB5T2JqZWN0ICpyZXByOworICAgIGNvbnN0IGNoYXIgKnJlcHJmbXQ7CisKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKWlnKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShpZyktPnRwX25hbWUpOworICAgIH0KKworICAgIHJlcHJmbXQgPSBpZy0+bml0ZW1zID09IDEgPyAiJXMoJVIpIiA6ICIlcyVSIjsKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQocmVwcmZtdCwgUHlfVFlQRShpZyktPnRwX25hbWUsIGlnLT5pdGVtKTsKKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopaWcpOworICAgIHJldHVybiByZXByOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraXRlbWdldHRlcl9yZWR1Y2UoaXRlbWdldHRlcm9iamVjdCAqaWcpCit7CisgICAgaWYgKGlnLT5uaXRlbXMgPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKGlnKSwgaWctPml0ZW0pOworICAgIHJldHVybiBQeVR1cGxlX1BhY2soMiwgUHlfVFlQRShpZyksIGlnLT5pdGVtKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBpdGVtZ2V0dGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24paXRlbWdldHRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTH0KK307CisKIFB5RG9jX1NUUlZBUihpdGVtZ2V0dGVyX2RvYywKICJpdGVtZ2V0dGVyKGl0ZW0sIC4uLikgLS0+IGl0ZW1nZXR0ZXIgb2JqZWN0XG5cCiBcblwKQEAgLTQ5OSw3ICs1MzgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgKHJlcHJmdW5jKWl0ZW1nZXR0ZXJfcmVwciwgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwpAQCAtNTE3LDcgKzU1Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgaXRlbWdldHRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC03MzMsNiArNzcyLDkzIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RvdGpvaW5hdHRyKFB5T2JqZWN0ICphdHRyLCBQeU9iamVjdCAqKmF0dHJzZXApCit7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChhdHRyKSkgeworICAgICAgICBpZiAoKmF0dHJzZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgKmF0dHJzZXAgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLiIpOworICAgICAgICAgICAgaWYgKCphdHRyc2VwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Kb2luKCphdHRyc2VwLCBhdHRyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoYXR0cik7CisgICAgICAgIHJldHVybiBhdHRyOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2F0dHJnZXR0ZXJfYXJncyhhdHRyZ2V0dGVyb2JqZWN0ICphZykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKmF0dHJzZXAgPSBOVUxMOworICAgIFB5T2JqZWN0ICphdHRyc3RyaW5ncyA9IFB5VHVwbGVfTmV3KGFnLT5uYXR0cnMpOworICAgIGlmIChhdHRyc3RyaW5ncyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBhZy0+bmF0dHJzOyArK2kpIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHIgPSBQeVR1cGxlX0dFVF9JVEVNKGFnLT5hdHRyLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzdHIgPSBkb3Rqb2luYXR0cihhdHRyLCAmYXR0cnNlcCk7CisgICAgICAgIGlmIChhdHRyc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cnN0cmluZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhdHRyc3RyaW5ncywgaSwgYXR0cnN0cik7CisgICAgfQorICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgcmV0dXJuIGF0dHJzdHJpbmdzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXR0cmdldHRlcl9yZXByKGF0dHJnZXR0ZXJvYmplY3QgKmFnKQoreworICAgIFB5T2JqZWN0ICpyZXByID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCAqKWFnKTsKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShhZyktPnRwX25hbWUpOworICAgIH0KKworICAgIGlmIChhZy0+bmF0dHJzID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmF0dHJzZXAgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqYXR0ciA9IGRvdGpvaW5hdHRyKFB5VHVwbGVfR0VUX0lURU0oYWctPmF0dHIsIDApLCAmYXR0cnNlcCk7CisgICAgICAgIGlmIChhdHRyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwgUHlfVFlQRShhZyktPnRwX25hbWUsIGF0dHIpOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOworICAgICAgICB9CisgICAgICAgIFB5X1hERUNSRUYoYXR0cnNlcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqYXR0cnN0cmluZ3MgPSBhdHRyZ2V0dGVyX2FyZ3MoYWcpOworICAgICAgICBpZiAoYXR0cnN0cmluZ3MgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGFnKS0+dHBfbmFtZSwgYXR0cnN0cmluZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJzdHJpbmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopYWcpOworICAgIHJldHVybiByZXByOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXR0cmdldHRlcl9yZWR1Y2UoYXR0cmdldHRlcm9iamVjdCAqYWcpCit7CisgICAgUHlPYmplY3QgKmF0dHJzdHJpbmdzID0gYXR0cmdldHRlcl9hcmdzKGFnKTsKKyAgICBpZiAoYXR0cnN0cmluZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKGFnKSwgYXR0cnN0cmluZ3MpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgYXR0cmdldHRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWF0dHJnZXR0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEx9Cit9OworCiBQeURvY19TVFJWQVIoYXR0cmdldHRlcl9kb2MsCiAiYXR0cmdldHRlcihhdHRyLCAuLi4pIC0tPiBhdHRyZ2V0dGVyIG9iamVjdFxuXAogXG5cCkBAIC03NTMsNyArODc5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYylhdHRyZ2V0dGVyX3JlcHIsICAgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTc3MSw3ICs4OTcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGF0dHJnZXR0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtODA5LDYgKzkzNSwxMyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZCBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgLyogY3JlYXRlIG1ldGhvZGNhbGxlcm9iamVjdCBzdHJ1Y3R1cmUgKi8KICAgICBtYyA9IFB5T2JqZWN0X0dDX05ldyhtZXRob2RjYWxsZXJvYmplY3QsICZtZXRob2RjYWxsZXJfdHlwZSk7CiAgICAgaWYgKG1jID09IE5VTEwpCkBAIC04MjEsOCArOTU0LDggQEAKICAgICB9CiAgICAgbWMtPmFyZ3MgPSBuZXdhcmdzOwogCi0gICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CiAgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZuYW1lKTsKICAgICBtYy0+bmFtZSA9IG5hbWU7CiAKICAgICBQeV9YSU5DUkVGKGt3ZHMpOwpAQCAtODY1LDYgKzk5OCwxNDIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWV0aG9kY2FsbGVyX3JlcHIobWV0aG9kY2FsbGVyb2JqZWN0ICptYykKK3sKKyAgICBQeU9iamVjdCAqYXJncmVwcnMsICpyZXByID0gTlVMTCwgKnNlcCwgKmpvaW5lZGFyZ3JlcHJzOworICAgIFB5X3NzaXplX3QgbnVtdG90YWxhcmdzLCBudW1wb3NhcmdzLCBudW1rd2RhcmdzLCBpOworICAgIGludCBzdGF0dXMgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0ICopbWMpOworICAgIGlmIChzdGF0dXMgIT0gMCkgeworICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSk7CisgICAgfQorCisgICAgaWYgKG1jLT5rd2RzICE9IE5VTEwpIHsKKyAgICAgICAgbnVta3dkYXJncyA9IFB5RGljdF9TaXplKG1jLT5rd2RzKTsKKyAgICAgICAgaWYgKG51bWt3ZGFyZ3MgPCAwKSB7CisgICAgICAgICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbWMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBudW1rd2RhcmdzID0gMDsKKyAgICB9CisKKyAgICBudW1wb3NhcmdzID0gUHlUdXBsZV9HRVRfU0laRShtYy0+YXJncyk7CisgICAgbnVtdG90YWxhcmdzID0gbnVtcG9zYXJncyArIG51bWt3ZGFyZ3M7CisKKyAgICBpZiAobnVtdG90YWxhcmdzID09IDApIHsKKyAgICAgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglUikiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSwgbWMtPm5hbWUpOworICAgICAgICBQeV9SZXByTGVhdmUoKFB5T2JqZWN0ICopbWMpOworICAgICAgICByZXR1cm4gcmVwcjsKKyAgICB9CisKKyAgICBhcmdyZXBycyA9IFB5VHVwbGVfTmV3KG51bXRvdGFsYXJncyk7CisgICAgaWYgKGFyZ3JlcHJzID09IE5VTEwpIHsKKyAgICAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG51bXBvc2FyZ3M7ICsraSkgeworICAgICAgICBQeU9iamVjdCAqb25lcmVwciA9IFB5T2JqZWN0X1JlcHIoUHlUdXBsZV9HRVRfSVRFTShtYy0+YXJncywgaSkpOworICAgICAgICBpZiAob25lcmVwciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3JlcHJzLCBpLCBvbmVyZXByKTsKKyAgICB9CisKKyAgICBpZiAobnVta3dkYXJncyAhPSAwKSB7CisgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQobWMtPmt3ZHMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbmVyZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVPSVSIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAob25lcmVwciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIGlmIChpID49IG51bXRvdGFsYXJncykgeworICAgICAgICAgICAgICAgIGkgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncmVwcnMsIGksIG9uZXJlcHIpOworICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgICAgIGlmIChpICE9IG51bXRvdGFsYXJncykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgZGljdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgfQorCisgICAgc2VwID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiwgIik7CisgICAgaWYgKHNlcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBqb2luZWRhcmdyZXBycyA9IFB5VW5pY29kZV9Kb2luKHNlcCwgYXJncmVwcnMpOworICAgIFB5X0RFQ1JFRihzZXApOworICAgIGlmIChqb2luZWRhcmdyZXBycyA9PSBOVUxMKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVSLCAlVSkiLCBQeV9UWVBFKG1jKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWMtPm5hbWUsIGpvaW5lZGFyZ3JlcHJzKTsKKyAgICBQeV9ERUNSRUYoam9pbmVkYXJncmVwcnMpOworCitkb25lOgorICAgIFB5X0RFQ1JFRihhcmdyZXBycyk7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW1jKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21ldGhvZGNhbGxlcl9yZWR1Y2UobWV0aG9kY2FsbGVyb2JqZWN0ICptYykKK3sKKyAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICBpZiAoIW1jLT5rd2RzIHx8IFB5RGljdF9TaXplKG1jLT5rd2RzKSA9PSAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgUHlfc3NpemVfdCBjYWxsYXJnY291bnQgPSBQeVR1cGxlX0dFVF9TSVpFKG1jLT5hcmdzKTsKKyAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDEgKyBjYWxsYXJnY291bnQpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgbWMtPm5hbWUpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2FsbGFyZ2NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKG1jLT5hcmdzLCBpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpICsgMSwgYXJnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT04iLCBQeV9UWVBFKG1jKSwgbmV3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZnVuY3Rvb2xzOworICAgICAgICBQeU9iamVjdCAqcGFydGlhbDsKKyAgICAgICAgUHlPYmplY3QgKmNvbnN0cnVjdG9yOworICAgICAgICBfUHlfSURFTlRJRklFUihwYXJ0aWFsKTsKKyAgICAgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICAgICAgaWYgKCFmdW5jdG9vbHMpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGFydGlhbCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuY3Rvb2xzLCAmUHlJZF9wYXJ0aWFsKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmN0b29scyk7CisgICAgICAgIGlmICghcGFydGlhbCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aWFsKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKG1jKSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgKFB5T2JqZWN0ICopUHlfVFlQRShtYykpOworICAgICAgICBQeV9JTkNSRUYobWMtPm5hbWUpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIG1jLT5uYW1lKTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBQeU9iamVjdF9DYWxsKHBhcnRpYWwsIG5ld2FyZ3MsIG1jLT5rd2RzKTsKKyAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTyIsIGNvbnN0cnVjdG9yLCBtYy0+YXJncyk7CisgICAgfQorfQorCitzdGF0aWMgUHlNZXRob2REZWYgbWV0aG9kY2FsbGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbWV0aG9kY2FsbGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMfQorfTsKIFB5RG9jX1NUUlZBUihtZXRob2RjYWxsZXJfZG9jLAogIm1ldGhvZGNhbGxlcihuYW1lLCAuLi4pIC0tPiBtZXRob2RjYWxsZXIgb2JqZWN0XG5cCiBcblwKQEAgLTg4NCw3ICsxMTUzLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYyltZXRob2RjYWxsZXJfcmVwciwgICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KQEAgLTkwMiw3ICsxMTcxLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtZXRob2RjYWxsZXJfbWV0aG9kcywgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggOWYxNmI0ZC4uM2FkOWE5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTUsMTQgKzUsMTMgQEAKICJPcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFB5dGhvbiBwaWNrbGUgbW9kdWxlLiIpOwogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSBfcGlja2xlCiBjbGFzcyBfcGlja2xlLlBpY2tsZXIgIlBpY2tsZXJPYmplY3QgKiIgIiZQaWNrbGVyX1R5cGUiCiBjbGFzcyBfcGlja2xlLlBpY2tsZXJNZW1vUHJveHkgIlBpY2tsZXJNZW1vUHJveHlPYmplY3QgKiIgIiZQaWNrbGVyTWVtb1Byb3h5VHlwZSIKIGNsYXNzIF9waWNrbGUuVW5waWNrbGVyICJVbnBpY2tsZXJPYmplY3QgKiIgIiZVbnBpY2tsZXJfVHlwZSIKIGNsYXNzIF9waWNrbGUuVW5waWNrbGVyTWVtb1Byb3h5ICJVbnBpY2tsZXJNZW1vUHJveHlPYmplY3QgKiIgIiZVbnBpY2tsZXJNZW1vUHJveHlUeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTFjNDUyNDhhNDFkZDNmY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NGIzZTExMzQ2OGE1OGU2Y10qLwogCiAvKiBCdW1wIHRoaXMgd2hlbiBuZXcgb3Bjb2RlcyBhcmUgYWRkZWQgdG8gdGhlIHBpY2tsZSBwcm90b2NvbC4gKi8KIGVudW0gewpAQCAtMTUyLDYgKzE1MSw4IEBACiAKICAgICAvKiBjb2RlY3MuZW5jb2RlLCB1c2VkIGZvciBzYXZpbmcgYnl0ZXMgaW4gb2xkZXIgcHJvdG9jb2xzICovCiAgICAgUHlPYmplY3QgKmNvZGVjc19lbmNvZGU7CisgICAgLyogYnVpbHRpbnMuZ2V0YXR0ciwgdXNlZCBmb3Igc2F2aW5nIG5lc3RlZCBuYW1lcyB3aXRoIHByb3RvY29sIDwgNCAqLworICAgIFB5T2JqZWN0ICpnZXRhdHRyOwogfSBQaWNrbGVTdGF0ZTsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgZGVmaW5pdGlvbi4gKi8KQEAgLTE4OCwxNiArMTg5LDI2IEBACiAgICAgUHlfQ0xFQVIoc3QtPm5hbWVfbWFwcGluZ18zdG8yKTsKICAgICBQeV9DTEVBUihzdC0+aW1wb3J0X21hcHBpbmdfM3RvMik7CiAgICAgUHlfQ0xFQVIoc3QtPmNvZGVjc19lbmNvZGUpOworICAgIFB5X0NMRUFSKHN0LT5nZXRhdHRyKTsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgZ2l2ZW4gcGlja2xlIG1vZHVsZSBzdGF0ZS4gKi8KIHN0YXRpYyBpbnQKIF9QaWNrbGVfSW5pdFN0YXRlKFBpY2tsZVN0YXRlICpzdCkKIHsKKyAgICBQeU9iamVjdCAqYnVpbHRpbnM7CiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKIAorICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CisgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgc3QtPmdldGF0dHIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhidWlsdGlucywgImdldGF0dHIiKTsKKyAgICBpZiAoc3QtPmdldGF0dHIgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9JTkNSRUYoc3QtPmdldGF0dHIpOworCiAgICAgY29weXJlZyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiY29weXJlZyIpOwogICAgIGlmICghY29weXJlZykKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQyMCwxMiArNDMxLDEyIEBACiBQZGF0YV9ncm93KFBkYXRhICpzZWxmKQogewogICAgIFB5T2JqZWN0ICoqZGF0YSA9IHNlbGYtPmRhdGE7Ci0gICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQgPSBzZWxmLT5hbGxvY2F0ZWQ7Ci0gICAgUHlfc3NpemVfdCBuZXdfYWxsb2NhdGVkOworICAgIHNpemVfdCBhbGxvY2F0ZWQgPSAoc2l6ZV90KXNlbGYtPmFsbG9jYXRlZDsKKyAgICBzaXplX3QgbmV3X2FsbG9jYXRlZDsKIAogICAgIG5ld19hbGxvY2F0ZWQgPSAoYWxsb2NhdGVkID4+IDMpICsgNjsKICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgIGlmIChuZXdfYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQpCisgICAgaWYgKG5ld19hbGxvY2F0ZWQgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC0gYWxsb2NhdGVkKQogICAgICAgICBnb3RvIG5vbWVtb3J5OwogICAgIG5ld19hbGxvY2F0ZWQgKz0gYWxsb2NhdGVkOwogICAgIFB5TWVtX1JFU0laRShkYXRhLCBQeU9iamVjdCAqLCBuZXdfYWxsb2NhdGVkKTsKQEAgLTQzMyw3ICs0NDQsNyBAQAogICAgICAgICBnb3RvIG5vbWVtb3J5OwogCiAgICAgc2VsZi0+ZGF0YSA9IGRhdGE7Ci0gICAgc2VsZi0+YWxsb2NhdGVkID0gbmV3X2FsbG9jYXRlZDsKKyAgICBzZWxmLT5hbGxvY2F0ZWQgPSAoUHlfc3NpemVfdCluZXdfYWxsb2NhdGVkOwogICAgIHJldHVybiAwOwogCiAgIG5vbWVtb3J5OgpAQCAtODQ4LDcgKzg1OSw3IEBACiBzdGF0aWMgdm9pZAogX3dyaXRlX3NpemU2NChjaGFyICpvdXQsIHNpemVfdCB2YWx1ZSkKIHsKLSAgICBpbnQgaTsKKyAgICBzaXplX3QgaTsKIAogICAgIGFzc2VydChzaXplb2Yoc2l6ZV90KSA8PSA4KTsKIApAQCAtMTQ1Miw3ICsxNDYzLDcgQEAKICAgICAgICAgICAgIHBkYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpKCp2YWx1ZSAmIDB4ZmYpOwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqdmFsdWUgPD0gMHhmZmZmZmZmZkwpIHsKKyAgICAgICAgZWxzZSBpZiAoKHNpemVfdCkqdmFsdWUgPD0gMHhmZmZmZmZmZlVMKSB7CiAgICAgICAgICAgICBwZGF0YVswXSA9IExPTkdfQklOR0VUOwogICAgICAgICAgICAgcGRhdGFbMV0gPSAodW5zaWduZWQgY2hhcikoKnZhbHVlICYgMHhmZik7CiAgICAgICAgICAgICBwZGF0YVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKnZhbHVlID4+IDgpICYgMHhmZik7CkBAIC0xNTA5LDcgKzE1MjAsNyBAQAogICAgICAgICAgICAgcGRhdGFbMV0gPSAodW5zaWduZWQgY2hhcilpZHg7CiAgICAgICAgICAgICBsZW4gPSAyOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlkeCA8PSAweGZmZmZmZmZmTCkgeworICAgICAgICBlbHNlIGlmICgoc2l6ZV90KWlkeCA8PSAweGZmZmZmZmZmVUwpIHsKICAgICAgICAgICAgIHBkYXRhWzBdID0gTE9OR19CSU5QVVQ7CiAgICAgICAgICAgICBwZGF0YVsxXSA9ICh1bnNpZ25lZCBjaGFyKShpZHggJiAweGZmKTsKICAgICAgICAgICAgIHBkYXRhWzJdID0gKHVuc2lnbmVkIGNoYXIpKChpZHggPj4gOCkgJiAweGZmKTsKQEAgLTE1MzEsNjYgKzE1NDIsMTAxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRhdHRyaWJ1dGUoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUsIGludCBhbGxvd19xdWFsbmFtZSkgewotICAgIFB5T2JqZWN0ICpkb3R0ZWRfcGF0aDsKLSAgICBQeV9zc2l6ZV90IGk7CitnZXRfZG90dGVkX3BhdGgoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpIHsKICAgICBfUHlfc3RhdGljX3N0cmluZyhQeUlkX2RvdCwgIi4iKTsKICAgICBfUHlfc3RhdGljX3N0cmluZyhQeUlkX2xvY2FscywgIjxsb2NhbHM+Iik7CisgICAgUHlPYmplY3QgKmRvdHRlZF9wYXRoOworICAgIFB5X3NzaXplX3QgaSwgbjsKIAogICAgIGRvdHRlZF9wYXRoID0gUHlVbmljb2RlX1NwbGl0KG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2RvdCksIC0xKTsKLSAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkgeworICAgIGlmIChkb3R0ZWRfcGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgYXNzZXJ0KFB5X1NJWkUoZG90dGVkX3BhdGgpID49IDEpOwotICAgIGlmICghYWxsb3dfcXVhbG5hbWUgJiYgUHlfU0laRShkb3R0ZWRfcGF0aCkgPiAxKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBnZXQgcXVhbGlmaWVkIGF0dHJpYnV0ZSAlUiBvbiAlUjsiCi0gICAgICAgICAgICAgICAgICAgICAidXNlIHByb3RvY29scyA+PSA0IHRvIGVuYWJsZSBzdXBwb3J0IiwKLSAgICAgICAgICAgICAgICAgICAgIG5hbWUsIG9iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihkb3R0ZWRfcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYob2JqKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShkb3R0ZWRfcGF0aCk7IGkrKykgeworICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUoZG90dGVkX3BhdGgpOworICAgIGFzc2VydChuID49IDEpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnN1YnBhdGggPSBQeUxpc3RfR0VUX0lURU0oZG90dGVkX3BhdGgsIGkpOwotICAgICAgICBQeU9iamVjdCAqdG1wOwogICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlVbmljb2RlX1JpY2hDb21wYXJlKAogICAgICAgICAgICAgc3VicGF0aCwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfbG9jYWxzKSwgUHlfRVEpOwogICAgICAgICBpbnQgaXNfZXF1YWwgPSAocmVzdWx0ID09IFB5X1RydWUpOwogICAgICAgICBhc3NlcnQoUHlCb29sX0NoZWNrKHJlc3VsdCkpOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgaWYgKGlzX2VxdWFsKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGdldCBsb2NhbCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOwotICAgICAgICAgICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0cihvYmosIHN1YnBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgaWYgKG9iaiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGdldCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgcGlja2xlIGxvY2FsIG9iamVjdCAlUiIsIG5hbWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IHBpY2tsZSBsb2NhbCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOwogICAgICAgICAgICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG9iaiA9IHRtcDsKICAgICB9Ci0gICAgUHlfREVDUkVGKGRvdHRlZF9wYXRoKTsKLSAgICByZXR1cm4gb2JqOworICAgIHJldHVybiBkb3R0ZWRfcGF0aDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdoaWNobW9kdWxlKFB5T2JqZWN0ICpnbG9iYWwsIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSwgaW50IGFsbG93X3F1YWxuYW1lKQorZ2V0X2RlZXBfYXR0cmlidXRlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKipwcGFyZW50KQoreworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeU9iamVjdCAqcGFyZW50ID0gTlVMTDsKKworICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChuYW1lcykpOworICAgIFB5X0lOQ1JFRihvYmopOworICAgIG4gPSBQeUxpc3RfR0VUX1NJWkUobmFtZXMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGkpOworICAgICAgICBQeV9YREVDUkVGKHBhcmVudCk7CisgICAgICAgIHBhcmVudCA9IG9iajsKKyAgICAgICAgb2JqID0gUHlPYmplY3RfR2V0QXR0cihwYXJlbnQsIG5hbWUpOworICAgICAgICBpZiAob2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBwYXJlbnQgIT0gTlVMTCkKKyAgICAgICAgKnBwYXJlbnQgPSBwYXJlbnQ7CisgICAgZWxzZQorICAgICAgICBQeV9YREVDUkVGKHBhcmVudCk7CisgICAgcmV0dXJuIG9iajsKK30KKworc3RhdGljIHZvaWQKK3JlZm9ybWF0X2F0dHJpYnV0ZV9lcnJvcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGdldCBhdHRyaWJ1dGUgJVIgb24gJVIiLCBuYW1lLCBvYmopOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXR0cmlidXRlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLCBpbnQgYWxsb3dfcXVhbG5hbWUpCit7CisgICAgUHlPYmplY3QgKmRvdHRlZF9wYXRoLCAqYXR0cjsKKworICAgIGlmIChhbGxvd19xdWFsbmFtZSkgeworICAgICAgICBkb3R0ZWRfcGF0aCA9IGdldF9kb3R0ZWRfcGF0aChvYmosIG5hbWUpOworICAgICAgICBpZiAoZG90dGVkX3BhdGggPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhdHRyID0gZ2V0X2RlZXBfYXR0cmlidXRlKG9iaiwgZG90dGVkX3BhdGgsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZG90dGVkX3BhdGgpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBQeU9iamVjdF9HZXRBdHRyKG9iaiwgbmFtZSk7CisgICAgaWYgKGF0dHIgPT0gTlVMTCkKKyAgICAgICAgcmVmb3JtYXRfYXR0cmlidXRlX2Vycm9yKG9iaiwgbmFtZSk7CisgICAgcmV0dXJuIGF0dHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aGljaG1vZHVsZShQeU9iamVjdCAqZ2xvYmFsLCBQeU9iamVjdCAqZG90dGVkX3BhdGgpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lOwogICAgIFB5T2JqZWN0ICptb2R1bGVzX2RpY3Q7CiAgICAgUHlPYmplY3QgKm1vZHVsZTsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiAgICAgX1B5X0lERU5USUZJRVIobW9kdWxlcyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19tYWluX18pOwpAQCAtMTYxMiw2ICsxNjU4LDcgQEAKICAgICB9CiAgICAgYXNzZXJ0KG1vZHVsZV9uYW1lID09IE5VTEwpOwogCisgICAgLyogRmFsbGJhY2sgb24gd2Fsa2luZyBzeXMubW9kdWxlcyAqLwogICAgIG1vZHVsZXNfZGljdCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9tb2R1bGVzKTsKICAgICBpZiAobW9kdWxlc19kaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBnZXQgc3lzLm1vZHVsZXMiKTsKQEAgLTE2MTksMzEgKzE2NjYsMjggQEAKICAgICB9CiAKICAgICBpID0gMDsKLSAgICB3aGlsZSAoKGogPSBQeURpY3RfTmV4dChtb2R1bGVzX2RpY3QsICZpLCAmbW9kdWxlX25hbWUsICZtb2R1bGUpKSkgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlVbmljb2RlX1JpY2hDb21wYXJlKAotICAgICAgICAgICAgbW9kdWxlX25hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbWFpbl9fKSwgUHlfRVEpOwotICAgICAgICBpbnQgaXNfZXF1YWwgPSAocmVzdWx0ID09IFB5X1RydWUpOwotICAgICAgICBhc3NlcnQoUHlCb29sX0NoZWNrKHJlc3VsdCkpOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgaWYgKGlzX2VxdWFsKQorICAgIHdoaWxlIChQeURpY3RfTmV4dChtb2R1bGVzX2RpY3QsICZpLCAmbW9kdWxlX25hbWUsICZtb2R1bGUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpjYW5kaWRhdGU7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobW9kdWxlX25hbWUpICYmCisgICAgICAgICAgICAhUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobW9kdWxlX25hbWUsICJfX21haW5fXyIpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChtb2R1bGUgPT0gUHlfTm9uZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG9iaiA9IGdldGF0dHJpYnV0ZShtb2R1bGUsIGdsb2JhbF9uYW1lLCBhbGxvd19xdWFsbmFtZSk7Ci0gICAgICAgIGlmIChvYmogPT0gTlVMTCkgeworICAgICAgICBjYW5kaWRhdGUgPSBnZXRfZGVlcF9hdHRyaWJ1dGUobW9kdWxlLCBkb3R0ZWRfcGF0aCwgTlVMTCk7CisgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvYmogPT0gZ2xvYmFsKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqKTsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBnbG9iYWwpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2R1bGVfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FuZGlkYXRlKTsKICAgICAgICAgICAgIHJldHVybiBtb2R1bGVfbmFtZTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYob2JqKTsKKyAgICAgICAgUHlfREVDUkVGKGNhbmRpZGF0ZSk7CiAgICAgfQogCiAgICAgLyogSWYgbm8gbW9kdWxlIGlzIGZvdW5kLCB1c2UgX19tYWluX18uICovCkBAIC0xOTI5LDcgKzE5NzMsNyBAQAogICAgICAgICBpZiAoX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm9wLCAxKSA8IDApCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICAgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHgsICdnJywgMTcsIDAsIE5VTEwpOworICAgICAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoeCwgJ3InLCAwLCBQeV9EVFNGX0FERF9ET1RfMCwgTlVMTCk7CiAgICAgICAgIGlmICghYnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBkb25lOwpAQCAtMjAwOSw3ICsyMDUzLDcgQEAKICAgICAgICAgICAgIGhlYWRlclsxXSA9ICh1bnNpZ25lZCBjaGFyKXNpemU7CiAgICAgICAgICAgICBsZW4gPSAyOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmZmZmZkwpIHsKKyAgICAgICAgZWxzZSBpZiAoKHNpemVfdClzaXplIDw9IDB4ZmZmZmZmZmZVTCkgewogICAgICAgICAgICAgaGVhZGVyWzBdID0gQklOQllURVM7CiAgICAgICAgICAgICBoZWFkZXJbMV0gPSAodW5zaWduZWQgY2hhcikoc2l6ZSAmIDB4ZmYpOwogICAgICAgICAgICAgaGVhZGVyWzJdID0gKHVuc2lnbmVkIGNoYXIpKChzaXplID4+IDgpICYgMHhmZik7CkBAIC0yMDQ2LDkgKzIwOTAsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiByYXdfdW5pY29kZV9lc2NhcGUoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqcmVwciwgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgaSwgc2l6ZSwgZXhwYW5kc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgc2l6ZV90IGV4cGFuZHNpemU7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKIApAQCAtMjA2MywxNSArMjEwOCwxNiBAQAogICAgIGVsc2UKICAgICAgICAgZXhwYW5kc2l6ZSA9IDY7CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlcHIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogc2l6ZSk7CisgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgYXNzZXJ0KFB5X1JFRkNOVChyZXByKSA9PSAxKTsKIAotICAgIHAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7CisgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwpAQCAtMjEwMCwxMiArMjE0NiwxMCBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgIH0KLSAgICBzaXplID0gcCAtIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKLQotZG9uZToKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKSwgc2l6ZSk7Ci0gICAgUHlfREVDUkVGKHJlcHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgc2l6ZSA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXByOwogfQogCiBzdGF0aWMgaW50CkBAIC0yMTE0LDEyICsyMTU4LDEzIEBACiAgICAgY2hhciBoZWFkZXJbOV07CiAgICAgUHlfc3NpemVfdCBsZW47CiAKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKICAgICBpZiAoc2l6ZSA8PSAweGZmICYmIHNlbGYtPnByb3RvID49IDQpIHsKICAgICAgICAgaGVhZGVyWzBdID0gU0hPUlRfQklOVU5JQ09ERTsKICAgICAgICAgaGVhZGVyWzFdID0gKHVuc2lnbmVkIGNoYXIpKHNpemUgJiAweGZmKTsKICAgICAgICAgbGVuID0gMjsKICAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8PSAweGZmZmZmZmZmVUwpIHsKKyAgICBlbHNlIGlmICgoc2l6ZV90KXNpemUgPD0gMHhmZmZmZmZmZlVMKSB7CiAgICAgICAgIGhlYWRlclswXSA9IEJJTlVOSUNPREU7CiAgICAgICAgIGhlYWRlclsxXSA9ICh1bnNpZ25lZCBjaGFyKShzaXplICYgMHhmZik7CiAgICAgICAgIGhlYWRlclsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoc2l6ZSA+PiA4KSAmIDB4ZmYpOwpAQCAtMzA1NCw2ICszMDk5LDkgQEAKICAgICBQeU9iamVjdCAqZ2xvYmFsX25hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVfbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhcmVudCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRvdHRlZF9wYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGFzdG5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjbHM7CiAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwogICAgIGludCBzdGF0dXMgPSAwOwpAQCAtMzA2NywxMyArMzExNSwxMSBAQAogICAgICAgICBnbG9iYWxfbmFtZSA9IG5hbWU7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewotICAgICAgICAgICAgZ2xvYmFsX25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19xdWFsbmFtZV9fKTsKLSAgICAgICAgICAgIGlmIChnbG9iYWxfbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgfQorICAgICAgICBnbG9iYWxfbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgICAgICBpZiAoZ2xvYmFsX25hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZ2xvYmFsX25hbWUgPT0gTlVMTCkgewogICAgICAgICAgICAgZ2xvYmFsX25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19uYW1lX18pOwpAQCAtMzA4Miw3ICszMTI4LDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtb2R1bGVfbmFtZSA9IHdoaWNobW9kdWxlKG9iaiwgZ2xvYmFsX25hbWUsIHNlbGYtPnByb3RvID49IDQpOworICAgIGRvdHRlZF9wYXRoID0gZ2V0X2RvdHRlZF9wYXRoKG1vZHVsZSwgZ2xvYmFsX25hbWUpOworICAgIGlmIChkb3R0ZWRfcGF0aCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIG1vZHVsZV9uYW1lID0gd2hpY2htb2R1bGUob2JqLCBkb3R0ZWRfcGF0aCk7CiAgICAgaWYgKG1vZHVsZV9uYW1lID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTMxMDEsNyArMzE1MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgb2JqLCBtb2R1bGVfbmFtZSk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGNscyA9IGdldGF0dHJpYnV0ZShtb2R1bGUsIGdsb2JhbF9uYW1lLCBzZWxmLT5wcm90byA+PSA0KTsKKyAgICBsYXN0bmFtZSA9IFB5TGlzdF9HRVRfSVRFTShkb3R0ZWRfcGF0aCwgUHlMaXN0X0dFVF9TSVpFKGRvdHRlZF9wYXRoKS0xKTsKKyAgICBQeV9JTkNSRUYobGFzdG5hbWUpOworICAgIGNscyA9IGdldF9kZWVwX2F0dHJpYnV0ZShtb2R1bGUsIGRvdHRlZF9wYXRoLCAmcGFyZW50KTsKKyAgICBQeV9DTEVBUihkb3R0ZWRfcGF0aCk7CiAgICAgaWYgKGNscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+UGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBwaWNrbGUgJVI6IGF0dHJpYnV0ZSBsb29rdXAgJVMgb24gJVMgZmFpbGVkIiwKQEAgLTMxODgsNiArMzI0MCwxMSBAQAogICAgIH0KICAgICBlbHNlIHsKICAgZ2VuX2dsb2JhbDoKKyAgICAgICAgaWYgKHBhcmVudCA9PSBtb2R1bGUpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihsYXN0bmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZ2xvYmFsX25hbWUpOworICAgICAgICAgICAgZ2xvYmFsX25hbWUgPSBsYXN0bmFtZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewogICAgICAgICAgICAgY29uc3QgY2hhciBzdGFja19nbG9iYWxfb3AgPSBTVEFDS19HTE9CQUw7CiAKQEAgLTMxOTksNiArMzI1NiwxNSBAQAogICAgICAgICAgICAgaWYgKF9QaWNrbGVyX1dyaXRlKHNlbGYsICZzdGFja19nbG9iYWxfb3AsIDEpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHBhcmVudCAhPSBtb2R1bGUpIHsKKyAgICAgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWR1Y2VfdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCIoTyhPTykpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+Z2V0YXR0ciwgcGFyZW50LCBsYXN0bmFtZSk7CisgICAgICAgICAgICBzdGF0dXMgPSBzYXZlX3JlZHVjZShzZWxmLCByZWR1Y2VfdmFsdWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlZHVjZV92YWx1ZSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR2VuZXJhdGUgYSBub3JtYWwgZ2xvYmFsIG9wY29kZSBpZiB3ZSBhcmUgdXNpbmcgYSBwaWNrbGUKICAgICAgICAgICAgICAgIHByb3RvY29sIDwgNCwgb3IgaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZCBpbiB0aGUKQEAgLTMyNzcsNiArMzM0Myw5IEBACiAgICAgUHlfWERFQ1JFRihtb2R1bGVfbmFtZSk7CiAgICAgUHlfWERFQ1JFRihnbG9iYWxfbmFtZSk7CiAgICAgUHlfWERFQ1JFRihtb2R1bGUpOworICAgIFB5X1hERUNSRUYocGFyZW50KTsKKyAgICBQeV9YREVDUkVGKGRvdHRlZF9wYXRoKTsKKyAgICBQeV9YREVDUkVGKGxhc3RuYW1lKTsKIAogICAgIHJldHVybiBzdGF0dXM7CiB9CkBAIC0zNDU2LDIwICszNTI1LDE5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKLSAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwotICAgICAgICAgICAgdXNlX25ld29ial9leCA9IFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKAotICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgeworICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgICAgICAgICAgICAgIHVzZV9uZXdvYmpfZXggPSBQeVVuaWNvZGVfQ29tcGFyZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF1c2VfbmV3b2JqX2V4KSB7CisgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CisgICAgICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9Db21wYXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19uZXdvYmpfXykpID09IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKLSAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZSgKLSAgICAgICAgICAgICAgICAgICAgbmFtZSwgX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19uZXdvYmpfXykpID09IDA7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7Ci0gICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihuYW1lKTsKICAgICB9CiAKICAgICBpZiAodXNlX25ld29ial9leCkgewpAQCAtMzU1NCw3ICszNjIyLDcgQEAKICAgICAgICAgICAgICA+Pj4gcGlja2xlLmR1bXBzKDErMmopCiAgICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgICAgICAgLi4uCi0gICAgICAgICAgICAgUnVudGltZUVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZAorICAgICAgICAgICAgIFJlY3Vyc2lvbkVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZAogCiAgICAgICAgICAgIFJlbW92aW5nIHRoZSBjb21wbGV4IGNsYXNzIGZyb20gY29weXJlZy5kaXNwYXRjaF90YWJsZSBtYWRlIHRoZQogICAgICAgICAgICBfX3JlZHVjZV9leF9fKCkgbWV0aG9kIGVtaXQgYW5vdGhlciBjb21wbGV4IG9iamVjdDoKQEAgLTQwMzQsOCArNDEwMiw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NmUyMjlmM2IxZjQzMzJmIGlucHV0PWI4Y2RlYjdlM2Y1ZWU2NzRdKi8KK19waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjVmMzEwNzhkYWIxN2ZiMCBpbnB1dD1iOGNkZWI3ZTNmNWVlNjc0XSovCiB7CiAgICAgX1B5X0lERU5USUZJRVIocGVyc2lzdGVudF9pZCk7CiAgICAgX1B5X0lERU5USUZJRVIoZGlzcGF0Y2hfdGFibGUpOwpAQCAtNDUzMCwxMCArNDU5OSwxMCBAQAogY2FsY19iaW5zaXplKGNoYXIgKmJ5dGVzLCBpbnQgbmJ5dGVzKQogewogICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciAqKWJ5dGVzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBzaXplX3QgeCA9IDA7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmJ5dGVzICYmIGkgPCBzaXplb2Yoc2l6ZV90KTsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IG5ieXRlcyAmJiAoc2l6ZV90KWkgPCBzaXplb2Yoc2l6ZV90KTsgaSsrKSB7CiAgICAgICAgIHggfD0gKHNpemVfdCkgc1tpXSA8PCAoOCAqIGkpOwogICAgIH0KIApAQCAtNDU1Miw3ICs0NjIxLDcgQEAKIGNhbGNfYmluaW50KGNoYXIgKmJ5dGVzLCBpbnQgbmJ5dGVzKQogewogICAgIHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciAqKWJ5dGVzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3QgaTsKICAgICBsb25nIHggPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG5ieXRlczsgaSsrKSB7CkBAIC02MjI4LDggKzYyOTcsMTAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0Yzc3NDM3ZTA4OGUxODggaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLworX3BpY2tsZV9VbnBpY2tsZXJfZmluZF9jbGFzc19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmdsb2JhbF9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlY2MwOGQ3ZjllZDQxZTMgaW5wdXQ9ZTJlNmE4NjVkZTA5M2VmNF0qLwogewogICAgIFB5T2JqZWN0ICpnbG9iYWw7CiAgICAgUHlPYmplY3QgKm1vZHVsZXNfZGljdDsKQEAgLTY0NDAsOCArNjUxMSwxMCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgaW50Ci1fcGlja2xlX1VucGlja2xlcl9fX2luaXRfX19pbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWVkMWQ4NGQzMTVmM2I1IGlucHV0PTMwYjRkYzllOTc2Yjg5MGNdKi8KK19waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUyYzhjZTc0OGVkYzU3YjAgaW5wdXQ9MzBiNGRjOWU5NzZiODkwY10qLwogewogICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfbG9hZCk7CiAKQEAgLTY4NjksOCArNjk0Miw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTYwNmU2MjZkNTUzODUwZCBpbnB1dD1lOWU1ZmRkNDhkZTkyZWFlXSovCitfcGlja2xlX2R1bXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkZTdkZmY4OWM0MDY4MTYgaW5wdXQ9ZTllNWZkZDQ4ZGU5MmVhZV0qLwogewogICAgIFBpY2tsZXJPYmplY3QgKnBpY2tsZXIgPSBfUGlja2xlcl9OZXcoKTsKIApAQCAtNjkyMiw4ICs2OTk2LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzdmMGRlZWZlNWI4OGVlIGlucHV0PTI5M2RiZWRhMTgxNTgwYjddKi8KK19waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhYTM4MGRiNTZmZTA3YjkgaW5wdXQ9MjkzZGJlZGExODE1ODBiN10qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUGlja2xlck9iamVjdCAqcGlja2xlciA9IF9QaWNrbGVyX05ldygpOwpAQCAtNjk4Miw4ICs3MDU3LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTY4YzYxMzU2YzE3MjY1NCBpbnB1dD1kYTk3MzcyZTM4ZTUxMGE2XSovCitfcGlja2xlX2xvYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OThmMWM1N2NiMmI0ZWIxIGlucHV0PWRhOTczNzJlMzhlNTEwYTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFVucGlja2xlck9iamVjdCAqdW5waWNrbGVyID0gX1VucGlja2xlcl9OZXcoKTsKQEAgLTcwMzUsOCArNzExMSw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWRzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsIGludCBmaXhfaW1wb3J0cywgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjM4NDVhZDExMGIyNTIyIGlucHV0PWY1N2YwZmRhYTJiNGNiOGJdKi8KK19waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjFlOWNkYjAxZTM2YTczNiBpbnB1dD1mNTdmMGZkYWEyYjRjYjhiXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBVbnBpY2tsZXJPYmplY3QgKnVucGlja2xlciA9IF9VbnBpY2tsZXJfTmV3KCk7CkBAIC03MDk4LDYgKzcxNzUsNyBAQAogICAgIFB5X1ZJU0lUKHN0LT5uYW1lX21hcHBpbmdfM3RvMik7CiAgICAgUHlfVklTSVQoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X1ZJU0lUKHN0LT5jb2RlY3NfZW5jb2RlKTsKKyAgICBQeV9WSVNJVChzdC0+Z2V0YXR0cik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggNDUyZDU5Mi4uYTMyN2ZjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTI2NCw3ICsyNjQsNyBAQAogewogICAgIGludCBmZF9kaXJfZmQ7CiAKLSAgICBmZF9kaXJfZmQgPSBfUHlfb3BlbihGRF9ESVIsIE9fUkRPTkxZKTsKKyAgICBmZF9kaXJfZmQgPSBfUHlfb3Blbl9ub3JhaXNlKEZEX0RJUiwgT19SRE9OTFkpOwogICAgIGlmIChmZF9kaXJfZmQgPT0gLTEpIHsKICAgICAgICAgLyogTm8gd2F5IHRvIGdldCBhIGxpc3Qgb2Ygb3BlbiBmZHMuICovCiAgICAgICAgIF9jbG9zZV9mZHNfYnlfYnJ1dGVfZm9yY2Uoc3RhcnRfZmQsIHB5X2Zkc190b19rZWVwKTsKQEAgLTM5Miw3ICszOTIsNyBAQAogICAgICAgICAgICBQeU9iamVjdCAqcHJlZXhlY19mbiwKICAgICAgICAgICAgUHlPYmplY3QgKnByZWV4ZWNfZm5fYXJnc190dXBsZSkKIHsKLSAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHVudXNlZCwgcmVhY2hlZF9wcmVleGVjID0gMDsKKyAgICBpbnQgaSwgc2F2ZWRfZXJybm8sIHJlYWNoZWRfcHJlZXhlYyA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBjb25zdCBjaGFyKiBlcnJfbXNnID0gIiI7CiAgICAgLyogQnVmZmVyIGxhcmdlIGVub3VnaCB0byBob2xkIGEgaGV4IGludGVnZXIuICBXZSBjYW4ndCBtYWxsb2MuICovCkBAIC01MDYsMjggKzUwNiwyOSBAQAogICAgIHNhdmVkX2Vycm5vID0gZXJybm87CiAgICAgLyogUmVwb3J0IHRoZSBwb3NpeCBlcnJvciB0byBvdXIgcGFyZW50IHByb2Nlc3MuICovCiAgICAgLyogV2UgaWdub3JlIGFsbCB3cml0ZSgpIHJldHVybiB2YWx1ZXMgYXMgdGhlIHRvdGFsIHNpemUgb2Ygb3VyIHdyaXRlcyBpcwotICAgICAqIGxlc3MgdGhhbiBQSVBFQlVGIGFuZCB3ZSBjYW5ub3QgZG8gYW55dGhpbmcgYWJvdXQgYW4gZXJyb3IgYW55d2F5cy4gKi8KKyAgICAgICBsZXNzIHRoYW4gUElQRUJVRiBhbmQgd2UgY2Fubm90IGRvIGFueXRoaW5nIGFib3V0IGFuIGVycm9yIGFueXdheXMuCisgICAgICAgVXNlIF9QeV93cml0ZV9ub3JhaXNlKCkgdG8gcmV0cnkgd3JpdGUoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhCisgICAgICAgc2lnbmFsIChmYWlscyB3aXRoIEVJTlRSKS4gKi8KICAgICBpZiAoc2F2ZWRfZXJybm8pIHsKICAgICAgICAgY2hhciAqY3VyOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiT1NFcnJvcjoiLCA4KTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIk9TRXJyb3I6IiwgOCk7CiAgICAgICAgIGN1ciA9IGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pOwogICAgICAgICB3aGlsZSAoc2F2ZWRfZXJybm8gIT0gMCAmJiBjdXIgPiBoZXhfZXJybm8pIHsKLSAgICAgICAgICAgICotLWN1ciA9ICIwMTIzNDU2Nzg5QUJDREVGIltzYXZlZF9lcnJubyAlIDE2XTsKKyAgICAgICAgICAgICotLWN1ciA9IFB5X2hleGRpZ2l0c1tzYXZlZF9lcnJubyAlIDE2XTsKICAgICAgICAgICAgIHNhdmVkX2Vycm5vIC89IDE2OwogICAgICAgICB9Ci0gICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsIGN1ciwgaGV4X2Vycm5vICsgc2l6ZW9mKGhleF9lcnJubykgLSBjdXIpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiOiIsIDEpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBjdXIsIGhleF9lcnJubyArIHNpemVvZihoZXhfZXJybm8pIC0gY3VyKTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UoZXJycGlwZV93cml0ZSwgIjoiLCAxKTsKICAgICAgICAgaWYgKCFyZWFjaGVkX3ByZWV4ZWMpIHsKICAgICAgICAgICAgIC8qIEluZGljYXRlIHRvIHRoZSBwYXJlbnQgdGhhdCB0aGUgZXJyb3IgaGFwcGVuZWQgYmVmb3JlIGV4ZWMoKS4gKi8KLSAgICAgICAgICAgIHVudXNlZCA9IHdyaXRlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKKyAgICAgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKGVycnBpcGVfd3JpdGUsICJub2V4ZWMiLCA2KTsKICAgICAgICAgfQogICAgICAgICAvKiBXZSBjYW4ndCBjYWxsIHN0cmVycm9yKHNhdmVkX2Vycm5vKS4gIEl0IGlzIG5vdCBhc3luYyBzaWduYWwgc2FmZS4KICAgICAgICAgICogVGhlIHBhcmVudCBwcm9jZXNzIHdpbGwgbG9vayB0aGUgZXJyb3IgbWVzc2FnZSB1cC4gKi8KICAgICB9IGVsc2UgewotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOwotICAgICAgICB1bnVzZWQgPSB3cml0ZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCAiU3VicHJvY2Vzc0Vycm9yOjA6IiwgMTgpOworICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShlcnJwaXBlX3dyaXRlLCBlcnJfbXNnLCBzdHJsZW4oZXJyX21zZykpOwogICAgIH0KLSAgICBpZiAodW51c2VkKSByZXR1cm47ICAvKiBzaWxseT8geWVzISBhdm9pZHMgZ2NjIGNvbXBpbGVyIHdhcm5pbmcuICovCiB9CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCA0MTZlMjY2Li45NWFkNGE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtNjksMTcgKzY5LDIxIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgIC8qIGZvciBzZWVkaW5nIHRvIGN1cnJlbnQgdGltZSAqLwogCisjaWZuZGVmIFBZX1VJTlQzMl9UCisjICBlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKKyNlbmRpZgorCiAvKiBQZXJpb2QgcGFyYW1ldGVycyAtLSBUaGVzZSBhcmUgYWxsIG1hZ2ljLiAgRG9uJ3QgY2hhbmdlLiAqLwogI2RlZmluZSBOIDYyNAogI2RlZmluZSBNIDM5NwotI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVUwgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqLwotI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVTCAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovCi0jZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlVMIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLworI2RlZmluZSBNQVRSSVhfQSAweDk5MDhiMGRmVSAgICAvKiBjb25zdGFudCB2ZWN0b3IgYSAqLworI2RlZmluZSBVUFBFUl9NQVNLIDB4ODAwMDAwMDBVICAvKiBtb3N0IHNpZ25pZmljYW50IHctciBiaXRzICovCisjZGVmaW5lIExPV0VSX01BU0sgMHg3ZmZmZmZmZlUgIC8qIGxlYXN0IHNpZ25pZmljYW50IHIgYml0cyAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIHVuc2lnbmVkIGxvbmcgc3RhdGVbTl07CiAgICAgaW50IGluZGV4OworICAgIFBZX1VJTlQzMl9UIHN0YXRlW05dOwogfSBSYW5kb21PYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUmFuZG9tX1R5cGU7CkBAIC05MSwxMyArOTUsMTMgQEAKIAogCiAvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi1zdGF0aWMgdW5zaWduZWQgbG9uZworc3RhdGljIFBZX1VJTlQzMl9UCiBnZW5yYW5kX2ludDMyKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICB1bnNpZ25lZCBsb25nIHk7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbWFnMDFbMl09ezB4MFVMLCBNQVRSSVhfQX07CisgICAgUFlfVUlOVDMyX1QgeTsKKyAgICBzdGF0aWMgUFlfVUlOVDMyX1QgbWFnMDFbMl09ezB4MFUsIE1BVFJJWF9BfTsKICAgICAvKiBtYWcwMVt4XSA9IHggKiBNQVRSSVhfQSAgZm9yIHg9MCwxICovCi0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpZiAoc2VsZi0+aW5kZXggPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCkBAIC0xMDUsMjIgKzEwOSwyMiBAQAogCiAgICAgICAgIGZvciAoa2s9MDtrazxOLU07a2srKykgewogICAgICAgICAgICAgeSA9IChtdFtra10mVVBQRVJfTUFTSyl8KG10W2trKzFdJkxPV0VSX01BU0spOwotICAgICAgICAgICAgbXRba2tdID0gbXRba2srTV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgICAgICBtdFtra10gPSBtdFtraytNXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVdOwogICAgICAgICB9CiAgICAgICAgIGZvciAoO2trPE4tMTtraysrKSB7CiAgICAgICAgICAgICB5ID0gKG10W2trXSZVUFBFUl9NQVNLKXwobXRba2srMV0mTE9XRVJfTUFTSyk7Ci0gICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVTF07CisgICAgICAgICAgICBtdFtra10gPSBtdFtraysoTS1OKV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVXTsKICAgICAgICAgfQogICAgICAgICB5ID0gKG10W04tMV0mVVBQRVJfTUFTSyl8KG10WzBdJkxPV0VSX01BU0spOwotICAgICAgICBtdFtOLTFdID0gbXRbTS0xXSBeICh5ID4+IDEpIF4gbWFnMDFbeSAmIDB4MVVMXTsKKyAgICAgICAgbXRbTi0xXSA9IG10W00tMV0gXiAoeSA+PiAxKSBeIG1hZzAxW3kgJiAweDFVXTsKIAogICAgICAgICBzZWxmLT5pbmRleCA9IDA7CiAgICAgfQogCiAgICAgeSA9IG10W3NlbGYtPmluZGV4KytdOwogICAgIHkgXj0gKHkgPj4gMTEpOwotICAgIHkgXj0gKHkgPDwgNykgJiAweDlkMmM1NjgwVUw7Ci0gICAgeSBePSAoeSA8PCAxNSkgJiAweGVmYzYwMDAwVUw7CisgICAgeSBePSAoeSA8PCA3KSAmIDB4OWQyYzU2ODBVOworICAgIHkgXj0gKHkgPDwgMTUpICYgMHhlZmM2MDAwMFU7CiAgICAgeSBePSAoeSA+PiAxOCk7CiAgICAgcmV0dXJuIHk7CiB9CkBAIC0xMzcsMjggKzE0MSwyNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9yYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIHVuc2lnbmVkIGxvbmcgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CisgICAgUFlfVUlOVDMyX1QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKSk7CiB9CiAKIC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovCiBzdGF0aWMgdm9pZAotaW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBzKQoraW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgcykKIHsKICAgICBpbnQgbXRpOwotICAgIHVuc2lnbmVkIGxvbmcgKm10OworICAgIFBZX1VJTlQzMl9UICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7Ci0gICAgbXRbMF09IHMgJiAweGZmZmZmZmZmVUw7CisgICAgbXRbMF09IHM7CiAgICAgZm9yIChtdGk9MTsgbXRpPE47IG10aSsrKSB7CiAgICAgICAgIG10W210aV0gPQotICAgICAgICAoMTgxMjQzMzI1M1VMICogKG10W210aS0xXSBeIChtdFttdGktMV0gPj4gMzApKSArIG10aSk7CisgICAgICAgICgxODEyNDMzMjUzVSAqIChtdFttdGktMV0gXiAobXRbbXRpLTFdID4+IDMwKSkgKyBtdGkpOwogICAgICAgICAvKiBTZWUgS251dGggVEFPQ1AgVm9sMi4gM3JkIEVkLiBQLjEwNiBmb3IgbXVsdGlwbGllci4gKi8KICAgICAgICAgLyogSW4gdGhlIHByZXZpb3VzIHZlcnNpb25zLCBNU0JzIG9mIHRoZSBzZWVkIGFmZmVjdCAgICovCiAgICAgICAgIC8qIG9ubHkgTVNCcyBvZiB0aGUgYXJyYXkgbXRbXS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgIC8qIDIwMDIvMDEvMDkgbW9kaWZpZWQgYnkgTWFrb3RvIE1hdHN1bW90byAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIG10W210aV0gJj0gMHhmZmZmZmZmZlVMOwotICAgICAgICAvKiBmb3IgPjMyIGJpdCBtYWNoaW5lcyAqLwogICAgIH0KICAgICBzZWxmLT5pbmRleCA9IG10aTsKICAgICByZXR1cm47CkBAIC0xNjgsMzIgKzE3MCwzMCBAQAogLyogaW5pdF9rZXkgaXMgdGhlIGFycmF5IGZvciBpbml0aWFsaXppbmcga2V5cyAqLwogLyoga2V5X2xlbmd0aCBpcyBpdHMgbGVuZ3RoICovCiBzdGF0aWMgUHlPYmplY3QgKgotaW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCitpbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCiB7CiAgICAgc2l6ZV90IGksIGosIGs7ICAgICAgIC8qIHdhcyBzaWduZWQgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIFJESCAxMi8xNi8yMDAyICovCi0gICAgdW5zaWduZWQgbG9uZyAqbXQ7CisgICAgUFlfVUlOVDMyX1QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKLSAgICBpbml0X2dlbnJhbmQoc2VsZiwgMTk2NTAyMThVTCk7CisgICAgaW5pdF9nZW5yYW5kKHNlbGYsIDE5NjUwMjE4VSk7CiAgICAgaT0xOyBqPTA7CiAgICAgayA9IChOPmtleV9sZW5ndGggPyBOIDoga2V5X2xlbmd0aCk7CiAgICAgZm9yICg7IGs7IGstLSkgewotICAgICAgICBtdFtpXSA9IChtdFtpXSBeICgobXRbaS0xXSBeIChtdFtpLTFdID4+IDMwKSkgKiAxNjY0NTI1VUwpKQotICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKHVuc2lnbmVkIGxvbmcpajsgLyogbm9uIGxpbmVhciAqLwotICAgICAgICBtdFtpXSAmPSAweGZmZmZmZmZmVUw7IC8qIGZvciBXT1JEU0laRSA+IDMyIG1hY2hpbmVzICovCisgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVKSkKKyAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArIChQWV9VSU5UMzJfVClqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsgaisrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOwogICAgIH0KICAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKLSAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVVMKSkKLSAgICAgICAgICAgICAgICAgLSAodW5zaWduZWQgbG9uZylpOyAvKiBub24gbGluZWFyICovCi0gICAgICAgIG10W2ldICY9IDB4ZmZmZmZmZmZVTDsgLyogZm9yIFdPUkRTSVpFID4gMzIgbWFjaGluZXMgKi8KKyAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVUpKQorICAgICAgICAgICAgICAgICAtIChQWV9VSU5UMzJfVClpOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICB9CiAKLSAgICBtdFswXSA9IDB4ODAwMDAwMDBVTDsgLyogTVNCIGlzIDE7IGFzc3VyaW5nIG5vbi16ZXJvIGluaXRpYWwgYXJyYXkgKi8KKyAgICBtdFswXSA9IDB4ODAwMDAwMDBVOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTIwOCw5ICsyMDgsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOyAgICAgICAgICAgIC8qIGd1aWx0eSB1bnRpbCBwcm92ZWQgaW5ub2NlbnQgKi8KICAgICBQeU9iamVjdCAqbiA9IE5VTEw7Ci0gICAgdW5zaWduZWQgbG9uZyAqa2V5ID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICprZXlfYXNfYnl0ZXMgPSBOVUxMOwotICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkLCBpOworICAgIFBZX1VJTlQzMl9UICprZXkgPSBOVUxMOworICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkOwogICAgIGludCByZXM7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAKQEAgLTIyMSw3ICsyMjAsNyBAQAogICAgICAgICB0aW1lX3Qgbm93OwogCiAgICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAodW5zaWduZWQgbG9uZylub3cpOworICAgICAgICBpbml0X2dlbnJhbmQoc2VsZiwgKFBZX1VJTlQzMl9UKW5vdyk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQpAQCAtMjQ5LDM1ICsyNDgsMzEgQEAKICAgICBrZXl1c2VkID0gYml0cyA9PSAwID8gMSA6IChiaXRzIC0gMSkgLyAzMiArIDE7CiAKICAgICAvKiBDb252ZXJ0IHNlZWQgdG8gYnl0ZSBzZXF1ZW5jZS4gKi8KLSAgICBrZXlfYXNfYnl0ZXMgPSAodW5zaWduZWQgY2hhciAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKLSAgICBpZiAoa2V5X2FzX2J5dGVzID09IE5VTEwpIHsKKyAgICBrZXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CisgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9hc19ieXRlcywga2V5dXNlZCAqIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAgLyogbGl0dGxlLWVuZGlhbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilrZXksIGtleXVzZWQgKiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTElUVExFX0VORElBTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOyAvKiB1bnNpZ25lZCAqLwogICAgIGlmIChyZXMgPT0gLTEpIHsKLSAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOworICAgICAgICBQeU1lbV9GcmVlKGtleSk7CiAgICAgICAgIGdvdG8gRG9uZTsKICAgICB9CiAKLSAgICAvKiBGaWxsIGFycmF5IG9mIHVuc2lnbmVkIGxvbmdzIGZyb20gYnl0ZSBzZXF1ZW5jZS4gKi8KLSAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX01hbGxvYyhzaXplb2YodW5zaWduZWQgbG9uZykgKiBrZXl1c2VkKTsKLSAgICBpZiAoa2V5ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgUHlNZW1fRnJlZShrZXlfYXNfYnl0ZXMpOwotICAgICAgICBnb3RvIERvbmU7CisjaWYgUFlfQklHX0VORElBTgorICAgIHsKKyAgICAgICAgc2l6ZV90IGksIGo7CisgICAgICAgIC8qIFJldmVyc2UgYW4gYXJyYXkuICovCisgICAgICAgIGZvciAoaSA9IDAsIGogPSBrZXl1c2VkIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7CisgICAgICAgICAgICBQWV9VSU5UMzJfVCB0bXAgPSBrZXlbaV07CisgICAgICAgICAgICBrZXlbaV0gPSBrZXlbal07CisgICAgICAgICAgICBrZXlbal0gPSB0bXA7CisgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGtleXVzZWQ7IGkrKykgewotICAgICAgICBrZXlbaV0gPQotICAgICAgICAgICAgKCh1bnNpZ25lZCBsb25nKWtleV9hc19ieXRlc1s0KmkgKyAwXSA8PCAwKSArCi0gICAgICAgICAgICAoKHVuc2lnbmVkIGxvbmcpa2V5X2FzX2J5dGVzWzQqaSArIDFdIDw8IDgpICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgMl0gPDwgMTYpICsKLSAgICAgICAgICAgICgodW5zaWduZWQgbG9uZylrZXlfYXNfYnl0ZXNbNCppICsgM10gPDwgMjQpOwotICAgIH0KLSAgICBQeU1lbV9GcmVlKGtleV9hc19ieXRlcyk7CisjZW5kaWYKICAgICByZXN1bHQgPSBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwga2V5dXNlZCk7CiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CkBAIC0zMzQsNyArMzI5LDcgQEAKICAgICAgICAgZWxlbWVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CiAgICAgICAgIGlmIChlbGVtZW50ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSBlbGVtZW50ICYgMHhmZmZmZmZmZlVMOyAvKiBNYWtlIHN1cmUgd2UgZ2V0IHNhbmUgc3RhdGUgKi8KKyAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAoUFlfVUlOVDMyX1QpZWxlbWVudDsKICAgICB9CiAKICAgICBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwpAQCAtMzUzLDkgKzM0OCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGssIGksIGJ5dGVzOwotICAgIHVuc2lnbmVkIGxvbmcgcjsKLSAgICB1bnNpZ25lZCBjaGFyICpieXRlYXJyYXk7CisgICAgaW50IGssIGksIHdvcmRzOworICAgIFBZX1VJTlQzMl9UIHI7CisgICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldHJhbmRiaXRzIiwgJmspKQpAQCAtMzcwLDI3ICszNjUsMzAgQEAKICAgICBpZiAoayA8PSAzMikgIC8qIEZhc3QgcGF0aCAqLwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKLSAgICBieXRlcyA9ICgoayAtIDEpIC8gMzIgKyAxKSAqIDQ7Ci0gICAgYnl0ZWFycmF5ID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoYnl0ZXMpOwotICAgIGlmIChieXRlYXJyYXkgPT0gTlVMTCkgeworICAgIHdvcmRzID0gKGsgLSAxKSAvIDMyICsgMTsKKyAgICB3b3JkYXJyYXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKKyAgICBpZiAod29yZGFycmF5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogRmlsbC1vdXQgd2hvbGUgd29yZHMsIGJ5dGUtYnktYnl0ZSB0byBhdm9pZCBlbmRpYW5uZXNzIGlzc3VlcyAqLwotICAgIGZvciAoaT0wIDsgaTxieXRlcyA7IGkrPTQsIGstPTMyKSB7CisgICAgLyogRmlsbC1vdXQgYml0cyBvZiBsb25nIGludGVnZXIsIGJ5IDMyLWJpdCB3b3JkcywgZnJvbSBsZWFzdCBzaWduaWZpY2FudAorICAgICAgIHRvIG1vc3Qgc2lnbmlmaWNhbnQuICovCisjaWYgUFlfTElUVExFX0VORElBTgorICAgIGZvciAoaSA9IDA7IGkgPCB3b3JkczsgaSsrLCBrIC09IDMyKQorI2Vsc2UKKyAgICBmb3IgKGkgPSB3b3JkcyAtIDE7IGkgPj0gMDsgaS0tLCBrIC09IDMyKQorI2VuZGlmCisgICAgewogICAgICAgICByID0gZ2VucmFuZF9pbnQzMihzZWxmKTsKICAgICAgICAgaWYgKGsgPCAzMikKLSAgICAgICAgICAgIHIgPj49ICgzMiAtIGspOwotICAgICAgICBieXRlYXJyYXlbaSswXSA9ICh1bnNpZ25lZCBjaGFyKXI7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzFdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gOCk7Ci0gICAgICAgIGJ5dGVhcnJheVtpKzJdID0gKHVuc2lnbmVkIGNoYXIpKHIgPj4gMTYpOwotICAgICAgICBieXRlYXJyYXlbaSszXSA9ICh1bnNpZ25lZCBjaGFyKShyID4+IDI0KTsKKyAgICAgICAgICAgIHIgPj49ICgzMiAtIGspOyAgLyogRHJvcCBsZWFzdCBzaWduaWZpY2FudCBiaXRzICovCisgICAgICAgIHdvcmRhcnJheVtpXSA9IHI7CiAgICAgfQogCi0gICAgLyogbGl0dGxlIGVuZGlhbiBvcmRlciB0byBtYXRjaCBieXRlYXJyYXkgYXNzaWdubWVudCBvcmRlciAqLwotICAgIHJlc3VsdCA9IF9QeUxvbmdfRnJvbUJ5dGVBcnJheShieXRlYXJyYXksIGJ5dGVzLCAxLCAwKTsKLSAgICBQeU1lbV9GcmVlKGJ5dGVhcnJheSk7CisgICAgcmVzdWx0ID0gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCh1bnNpZ25lZCBjaGFyICopd29yZGFycmF5LCB3b3JkcyAqIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sIDAgLyogdW5zaWduZWQgKi8pOworICAgIFB5TWVtX0ZyZWUod29yZGFycmF5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zY3Byb3h5LmMgYi9Nb2R1bGVzL19zY3Byb3h5LmMKaW5kZXggM2IyYTM4ZS4uNjZiNmUzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc2Nwcm94eS5jCisrKyBiL01vZHVsZXMvX3NjcHJveHkuYwpAQCAtMjQ5LDcgKzI0OSw3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1QeU9iamVjdCoKK1B5TU9ESU5JVF9GVU5DCiBQeUluaXRfX3NjcHJveHkodm9pZCkKIHsKICAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2RfbW9kdWxlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCmluZGV4IGQzOTAzMjguLmEwOGViZmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwpAQCAtMTI0MSw2ICsxMjQxLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhNT0RVTEVfTkFNRSAiLkNvbm5lY3Rpb24oKSIsIGt3YXJncykpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiwgJnNxbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCAwYzk3MzRjLi5mYmQ5MDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAKICAgICAgKiBmaXJzdCBnZXQgY2FsbGVkIHdpdGggY291bnQ9MD8gKi8KICAgICBkb3VibGUgdGltZW91dF9zdGFydGVkOwogCi0gICAgLyogTm9uZSBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgUHlTdHJpbmcgd2l0aCB0aGUgaXNvbGF0aW9uIGxldmVsICovCisgICAgLyogTm9uZSBmb3IgYXV0b2NvbW1pdCwgb3RoZXJ3aXNlIGEgUHlVbmljb2RlIHdpdGggdGhlIGlzb2xhdGlvbiBsZXZlbCAqLwogICAgIFB5T2JqZWN0KiBpc29sYXRpb25fbGV2ZWw7CiAKICAgICAvKiBOVUxMIGZvciBhdXRvY29tbWl0LCBvdGhlcndpc2UgYSBzdHJpbmcgd2l0aCB0aGUgQkVHSU4gc3RhdGVtZW50OyB3aWxsIGJlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZGI5NmIwMi4uYzE1OTljMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtNDYsNyArNDYsNyBAQAogCiAgICAgZHN0ID0gYnVmOwogICAgICpkc3QgPSAwOwotICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIGRzdCAtIGJ1ZiA8IHNpemVvZihidWYpIC0gMikgeworICAgIHdoaWxlIChQeV9JU0FMUEhBKCpzcmMpICYmIChkc3QgLSBidWYpIDwgKChQeV9zc2l6ZV90KXNpemVvZihidWYpIC0gMikpIHsKICAgICAgICAgKmRzdCsrID0gUHlfVE9MT1dFUigqc3JjKyspOwogICAgIH0KIApAQCAtMzM0LDExICszMzQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluIGRlYnVnIG1vZGUsIHR5cGVfY2FsbCgpIGZhaWxzIHdpdGggYW4gYXNzZXJ0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBpZiBhbiBleGNlcHRpb24gaXMgc2V0IHdoZW4gaXQgaXMgY2FsbGVkICovCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG5hbWUgPSAiPHVua25vd24gY29sdW1uIG5hbWU+IjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5oIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKaW5kZXggM2E5OTQ0Zi4uNjk0MTcxNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21pY3JvcHJvdG9jb2xzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG8sIFB5T2JqZWN0ICphbHQpOwogCiBleHRlcm4gUHlPYmplY3QgKgotICAgIHB5c3FsaXRlX2FkYXB0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QgKmFyZ3MpOyAgIAorICAgIHB5c3FsaXRlX2FkYXB0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwogI2RlZmluZSBweXNxbGl0ZV9hZGFwdF9kb2MgXAogICAgICJhZGFwdChvYmosIHByb3RvY29sLCBhbHRlcm5hdGUpIC0+IGFkYXB0IG9iaiB0byBnaXZlbiBwcm90b2NvbC4gTm9uLXN0YW5kYXJkLiIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCmluZGV4IGVlNzM0NDYuLjA3NTg0ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKQEAgLTE0Miw4ICsxNDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpZHgpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2xpY2VzIG5vdCBpbXBsZW1lbnRlZCwgeWV0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlbShzZWxmLT5kYXRhLCBpZHgpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJJbmRleCBtdXN0IGJlIGludCBvciBzdHJpbmciKTsKQEAgLTE1OSw3ICsxNTgsNyBAQAogUHlPYmplY3QqIHB5c3FsaXRlX3Jvd19rZXlzKHB5c3FsaXRlX1Jvdyogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QqIGxpc3Q7Ci0gICAgaW50IG5pdGVtcywgaTsKKyAgICBQeV9zc2l6ZV90IG5pdGVtcywgaTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmICghbGlzdCkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCBkNmZjZGExLi45NTdjY2JjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtOTcsNDggKzk3LDI1IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogc2VhcmNoIGVuZ2luZSBzdGF0ZSAqLwogCi0vKiBkZWZhdWx0IGNoYXJhY3RlciBwcmVkaWNhdGVzIChydW4gc3JlX2NoYXJzLnB5IHRvIHJlZ2VuZXJhdGUgdGFibGVzKSAqLwotCi0jZGVmaW5lIFNSRV9ESUdJVF9NQVNLIDEKLSNkZWZpbmUgU1JFX1NQQUNFX01BU0sgMgotI2RlZmluZSBTUkVfTElORUJSRUFLX01BU0sgNAotI2RlZmluZSBTUkVfQUxOVU1fTUFTSyA4Ci0jZGVmaW5lIFNSRV9XT1JEX01BU0sgMTYKLQotLyogRklYTUU6IHRoaXMgYXNzdW1lcyBBU0NJSS4gIGNyZWF0ZSB0YWJsZXMgaW4gaW5pdF9zcmUoKSBpbnN0ZWFkICovCi0KLXN0YXRpYyBjaGFyIHNyZV9jaGFyX2luZm9bMTI4XSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMiwgNiwgMiwKLTIsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsCi0wLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsCi0yNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAotMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsCi0wLCAwLCAxNiwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAotMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgMCwgMCB9OwotCi1zdGF0aWMgY2hhciBzcmVfY2hhcl9sb3dlclsxMjhdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LAotMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LAotMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLAotNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLAotNjEsIDYyLCA2MywgNjQsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LAotMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsCi0xMjIsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsCi0xMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKLTEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3IH07Ci0KICNkZWZpbmUgU1JFX0lTX0RJR0lUKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX0RJR0lUX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiBQeV9JU0RJR0lUKGNoKSkKICNkZWZpbmUgU1JFX0lTX1NQQUNFKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX1NQQUNFX01BU0spIDogMCkKKyAgICAoKGNoKSA8IDEyOCAmJiBQeV9JU1NQQUNFKGNoKSkKICNkZWZpbmUgU1JFX0lTX0xJTkVCUkVBSyhjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9MSU5FQlJFQUtfTUFTSykgOiAwKQorICAgICgoY2gpID09ICdcbicpCiAjZGVmaW5lIFNSRV9JU19BTE5VTShjaClcCi0gICAgKChjaCkgPCAxMjggPyAoc3JlX2NoYXJfaW5mb1soY2gpXSAmIFNSRV9BTE5VTV9NQVNLKSA6IDApCisgICAgKChjaCkgPCAxMjggJiYgUHlfSVNBTE5VTShjaCkpCiAjZGVmaW5lIFNSRV9JU19XT1JEKGNoKVwKLSAgICAoKGNoKSA8IDEyOCA/IChzcmVfY2hhcl9pbmZvWyhjaCldICYgU1JFX1dPUkRfTUFTSykgOiAwKQorICAgICgoY2gpIDwgMTI4ICYmIChQeV9JU0FMTlVNKGNoKSB8fCAoY2gpID09ICdfJykpCiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX2xvd2VyKHVuc2lnbmVkIGludCBjaCkKIHsKLSAgICByZXR1cm4gKChjaCkgPCAxMjggPyAodW5zaWduZWQgaW50KXNyZV9jaGFyX2xvd2VyW2NoXSA6IGNoKTsKKyAgICByZXR1cm4gKChjaCkgPCAxMjggPyBQeV9UT0xPV0VSKGNoKSA6IGNoKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBzcmVfdXBwZXIodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAoKGNoKSA8IDEyOCA/IFB5X1RPVVBQRVIoY2gpIDogY2gpOwogfQogCiAvKiBsb2NhbGUtc3BlY2lmaWMgY2hhcmFjdGVyIHByZWRpY2F0ZXMgKi8KQEAgLTE1Miw2ICsxMjksMTEgQEAKICAgICByZXR1cm4gKChjaCkgPCAyNTYgPyAodW5zaWduZWQgaW50KXRvbG93ZXIoKGNoKSkgOiBjaCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyX2xvY2FsZSh1bnNpZ25lZCBpbnQgY2gpCit7CisgICAgcmV0dXJuICgoY2gpIDwgMjU2ID8gKHVuc2lnbmVkIGludCl0b3VwcGVyKChjaCkpIDogY2gpOworfQorCiAvKiB1bmljb2RlLXNwZWNpZmljIGNoYXJhY3RlciBwcmVkaWNhdGVzICovCiAKICNkZWZpbmUgU1JFX1VOSV9JU19ESUdJVChjaCkgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoY2gpCkBAIC0xNjUsNiArMTQ3LDExIEBACiAgICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIFB5X1VOSUNPREVfVE9MT1dFUihjaCk7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JlX3VwcGVyX3VuaWNvZGUodW5zaWduZWQgaW50IGNoKQoreworICAgIHJldHVybiAodW5zaWduZWQgaW50KSBQeV9VTklDT0RFX1RPVVBQRVIoY2gpOworfQorCiBMT0NBTChpbnQpCiBzcmVfY2F0ZWdvcnkoU1JFX0NPREUgY2F0ZWdvcnksIHVuc2lnbmVkIGludCBjaCkKIHsKQEAgLTI3MSwyNSArMjU4LDUwIEBACiAKIC8qIHNlZSBzcmUuaCBmb3Igb2JqZWN0IGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqLCBTUkVfU1RBVEUqLCBQeV9zc2l6ZV90KTsKLXN0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqIGt3KTsKK3N0YXRpYyBQeU9iamVjdCAqcGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKiwgUHlPYmplY3QgKiwgUHlfc3NpemVfdCwgUHlfc3NpemVfdCk7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zcmVfY29kZXNpemUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfc3JlCitjbGFzcyBfc3JlLlNSRV9QYXR0ZXJuICJQYXR0ZXJuT2JqZWN0ICoiICImUGF0dGVybl9UeXBlIgorY2xhc3MgX3NyZS5TUkVfTWF0Y2ggIk1hdGNoT2JqZWN0ICoiICImTWF0Y2hfVHlwZSIKK2NsYXNzIF9zcmUuU1JFX1NjYW5uZXIgIlNjYW5uZXJPYmplY3QgKiIgIiZTY2FubmVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMDIzMGVjMTlhMGRlYWM4XSovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUGF0dGVybl9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBNYXRjaF9UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTY2FubmVyX1R5cGU7CisKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuZ2V0Y29kZXNpemUgLT4gaW50CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0Y29kZXNpemVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc5NGYxZjk4ZWY0ODgzZTUgaW5wdXQ9YmQ2ZjZlY2Y0OTE2YmIyYl0qLwogewotICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChzaXplb2YoU1JFX0NPREUpKTsKKyAgICByZXR1cm4gc2l6ZW9mKFNSRV9DT0RFKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXNyZV9nZXRsb3dlcihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLmdldGxvd2VyIC0+IGludAorCisgICAgY2hhcmFjdGVyOiBpbnQKKyAgICBmbGFnczogaW50CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0bG93ZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY2hhcmFjdGVyLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMzYxNmFlMmE0YzMwNiBpbnB1dD0wODdkMmYxYzQ0YmJjYTZmXSovCiB7Ci0gICAgaW50IGNoYXJhY3RlciwgZmxhZ3M7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZjaGFyYWN0ZXIsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfbG9jYWxlKGNoYXJhY3RlcikpOworICAgICAgICByZXR1cm4gc3JlX2xvd2VyX2xvY2FsZShjaGFyYWN0ZXIpOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX3VuaWNvZGUoY2hhcmFjdGVyKSk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXIoY2hhcmFjdGVyKSk7CisgICAgICAgIHJldHVybiBzcmVfbG93ZXJfdW5pY29kZShjaGFyYWN0ZXIpOworICAgIHJldHVybiBzcmVfbG93ZXIoY2hhcmFjdGVyKTsKIH0KIAogTE9DQUwodm9pZCkKQEAgLTMyOCw3ICszNDAsNyBAQAogCiAgICAgLyogZ2V0IHBvaW50ZXIgdG8gYnl0ZSBzdHJpbmcgYnVmZmVyICovCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdHJpbmcsIHZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgc3RyaW5nIG9yIGJ1ZmZlciIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgc3RyaW5nIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMzU3LDYgKzM2OSwxMSBAQAogCiAgICAgbWVtc2V0KHN0YXRlLCAwLCBzaXplb2YoU1JFX1NUQVRFKSk7CiAKKyAgICBzdGF0ZS0+bWFyayA9IFB5TWVtX05ldyh2b2lkICosIHBhdHRlcm4tPmdyb3VwcyAqIDIpOworICAgIGlmICghc3RhdGUtPm1hcmspIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQogICAgIHN0YXRlLT5sYXN0bWFyayA9IC0xOwogICAgIHN0YXRlLT5sYXN0aW5kZXggPSAtMTsKIApAQCAtMzY3LDEyICszODQsMTIgQEAKIAogICAgIGlmIChpc2J5dGVzICYmIHBhdHRlcm4tPmlzYnl0ZXMgPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBhIHN0cmluZyBwYXR0ZXJuIG9uIGEgYnl0ZXMtbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9CiAgICAgaWYgKCFpc2J5dGVzICYmIHBhdHRlcm4tPmlzYnl0ZXMgPiAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGEgYnl0ZXMgcGF0dGVybiBvbiBhIHN0cmluZy1saWtlIG9iamVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCB1c2UgYSBieXRlcyBwYXR0ZXJuIG9uIGEgc3RyaW5nLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIApAQCAtNDAwLDE1ICs0MTcsMjMgQEAKICAgICBzdGF0ZS0+cG9zID0gc3RhcnQ7CiAgICAgc3RhdGUtPmVuZHBvcyA9IGVuZDsKIAotICAgIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKKyAgICBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyX2xvY2FsZTsKLSAgICBlbHNlIGlmIChwYXR0ZXJuLT5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCisgICAgICAgIHN0YXRlLT51cHBlciA9IHNyZV91cHBlcl9sb2NhbGU7CisgICAgfQorICAgIGVsc2UgaWYgKHBhdHRlcm4tPmZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgewogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfdW5pY29kZTsKLSAgICBlbHNlCisgICAgICAgIHN0YXRlLT51cHBlciA9IHNyZV91cHBlcl91bmljb2RlOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgc3RhdGUtPmxvd2VyID0gc3JlX2xvd2VyOworICAgICAgICBzdGF0ZS0+dXBwZXIgPSBzcmVfdXBwZXI7CisgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZzsKICAgZXJyOgorICAgIFB5TWVtX0RlbChzdGF0ZS0+bWFyayk7CisgICAgc3RhdGUtPm1hcmsgPSBOVUxMOwogICAgIGlmIChzdGF0ZS0+YnVmZmVyLmJ1ZikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3RhdGUtPmJ1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC00MjEsNiArNDQ2LDggQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3RhdGUtPmJ1ZmZlcik7CiAgICAgUHlfWERFQ1JFRihzdGF0ZS0+c3RyaW5nKTsKICAgICBkYXRhX3N0YWNrX2RlYWxsb2Moc3RhdGUpOworICAgIFB5TWVtX0RlbChzdGF0ZS0+bWFyayk7CisgICAgc3RhdGUtPm1hcmsgPSBOVUxMOwogfQogCiAvKiBjYWxjdWxhdGUgb2Zmc2V0IGZyb20gc3RhcnQgb2Ygc3RyaW5nICovCkBAIC00NzMsOCArNTAwLDkgQEAKIHsKICAgICBzd2l0Y2ggKHN0YXR1cykgewogICAgIGNhc2UgU1JFX0VSUk9SX1JFQ1VSU0lPTl9MSU1JVDoKKyAgICAgICAgLyogVGhpcyBlcnJvciBjb2RlIHNlZW1zIHRvIGJlIHVudXNlZC4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgUHlFeGNfUmVjdXJzaW9uRXJyb3IsCiAgICAgICAgICAgICAibWF4aW11bSByZWN1cnNpb24gbGltaXQgZXhjZWVkZWQiCiAgICAgICAgICAgICApOwogICAgICAgICBicmVhazsKQEAgLTU1MCwyNiArNTc4LDMyIEBACiAgICAgcmV0dXJuIHN0cmluZzsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5tYXRjaAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorICAgICoKKyAgICBwYXR0ZXJuOiBvYmplY3QgPSBOVUxMCisKK01hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcGF0dGVybl9tYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NGI0YjFkYTNiYjJkODRlIGlucHV0PTNkMDc5YWE5OTk3OWI4MWRdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHBvcyA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOworICAgIFB5T2JqZWN0ICptYXRjaDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxPbm4kTzptYXRjaCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgcGF0dGVybiwgInBhdHRlcm4iKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIChQYXR0ZXJuT2JqZWN0ICopc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgKFBhdHRlcm5PYmplY3QgKilzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKQEAgLTU3OSwzNCArNjEzLDQzIEBACiAgICAgc3RhdHVzID0gc3JlX21hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCAwKTsKIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBzdGF0ZV9maW5pKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAorICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOwogICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QgKilwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIHN0YXR1cyk7CisgICAgcmV0dXJuIG1hdGNoOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5mdWxsbWF0Y2gKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgcGF0dGVybjogb2JqZWN0ID0gTlVMTAorCitNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmcKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYzk4YmM1ZGE3NDRlYTk0IGlucHV0PWQ0MjI4NjA2Y2MxMjU4MGZdKi8KIHsKICAgICBTUkVfU1RBVEUgc3RhdGU7CiAgICAgUHlfc3NpemVfdCBzdGF0dXM7CisgICAgUHlPYmplY3QgKm1hdGNoOwogCi0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEwsICpzdHJpbmcyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T25uJE86ZnVsbG1hdGNoIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZzdGFydCwgJmVuZCwgJnN0cmluZzIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzdHJpbmcyLCAicGF0dGVybiIpOworICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBwYXR0ZXJuLCAicGF0dGVybiIpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHN0cmluZyA9IHN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHN0YXJ0LCBlbmQpOwotICAgIGlmICghc3RyaW5nKQorICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwpAQCAtNjE2LDM0ICs2NTksNDUgQEAKICAgICBzdGF0dXMgPSBzcmVfbWF0Y2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIDEpOwogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCisgICAgbWF0Y2ggPSBwYXR0ZXJuX25ld19tYXRjaChzZWxmLCAmc3RhdGUsIHN0YXR1cyk7CiAgICAgc3RhdGVfZmluaSgmc3RhdGUpOwotCi0gICAgcmV0dXJuIHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgc3RhdHVzKTsKKyAgICByZXR1cm4gbWF0Y2g7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLnNlYXJjaAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgcG9zOiBQeV9zc2l6ZV90ID0gMAorICAgIGVuZHBvczogUHlfc3NpemVfdChjX2RlZmF1bHQ9IlBZX1NTSVpFX1RfTUFYIikgPSBzeXMubWF4c2l6ZQorICAgICoKKyAgICBwYXR0ZXJuOiBvYmplY3QgPSBOVUxMCisKK1NjYW4gdGhyb3VnaCBzdHJpbmcgbG9va2luZyBmb3IgYSBtYXRjaCwgYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgbWF0Y2ggb2JqZWN0IGluc3RhbmNlLgorCitSZXR1cm4gTm9uZSBpZiBubyBwb3NpdGlvbiBpbiB0aGUgc3RyaW5nIG1hdGNoZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzgzOTM5NGExOGU1ZWE0ZiBpbnB1dD1kYWI0MjcyMGY0YmUzYTRiXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOworICAgIFB5T2JqZWN0ICptYXRjaDsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9ubiRPOnNlYXJjaCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInBhdHRlcm4iKTsKKyAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgcGF0dGVybiwgInBhdHRlcm4iKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0hcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CkBAIC02NTIsMTIgKzcwNiwxNCBAQAogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8RU5EXG4iLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZiksIHN0YXRlLnB0cikpOwogCi0gICAgc3RhdGVfZmluaSgmc3RhdGUpOwotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgc3RhdGVfZmluaSgmc3RhdGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICByZXR1cm4gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOworICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCBzdGF0dXMpOworICAgIHN0YXRlX2ZpbmkoJnN0YXRlKTsKKyAgICByZXR1cm4gbWF0Y2g7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTcwNywyOCArNzYzLDM0IEBACiB9CiAjZW5kaWYKIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9maW5kYWxsKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLmZpbmRhbGwKKworICAgIHN0cmluZzogb2JqZWN0ID0gTlVMTAorICAgIHBvczogUHlfc3NpemVfdCA9IDAKKyAgICBlbmRwb3M6IFB5X3NzaXplX3QoY19kZWZhdWx0PSJQWV9TU0laRV9UX01BWCIpID0gc3lzLm1heHNpemUKKyAgICAqCisgICAgc291cmNlOiBvYmplY3QgPSBOVUxMCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTEyOTU0OThiMzAwNjM5ZCBpbnB1dD1kZjY4ODM1NWMwNTZiOWRlXSovCiB7CiAgICAgU1JFX1NUQVRFIHN0YXRlOwogICAgIFB5T2JqZWN0KiBsaXN0OwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgaSwgYiwgZTsKIAotICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMLCAqc3RyaW5nMiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJzb3VyY2UiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T25uJE86ZmluZGFsbCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmc3RhcnQsICZlbmQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInNvdXJjZSIpOworICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzb3VyY2UsICJzb3VyY2UiKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCBzdGFydCwgZW5kKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBpZiAoIXN0YXRlX2luaXQoJnN0YXRlLCBzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKQEAgLTgwOCwxNCArODcwLDI4IEBACiAKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5maW5kaXRlcgorCisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisKK1JldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFJFIHBhdHRlcm4gaW4gc3RyaW5nLgorCitGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYSBtYXRjaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJiYjFhMGFlYjM4YmIxNCBpbnB1dD02MTJhYWI2OWU5ZmUwOGU0XSovCiB7CiAgICAgUHlPYmplY3QqIHNjYW5uZXI7CiAgICAgUHlPYmplY3QqIHNlYXJjaDsKICAgICBQeU9iamVjdCogaXRlcmF0b3I7CiAKLSAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHBhdHRlcm4sIGFyZ3MsIGt3KTsKKyAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwogICAgIGlmICghc2Nhbm5lcikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTgzMCw4ICs5MDYsMzggQEAKICAgICByZXR1cm4gaXRlcmF0b3I7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1BhdHRlcm4uc2Nhbm5lcgorCisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBwb3M6IFB5X3NzaXplX3QgPSAwCisgICAgZW5kcG9zOiBQeV9zc2l6ZV90KGNfZGVmYXVsdD0iUFlfU1NJWkVfVF9NQVgiKSA9IHN5cy5tYXhzaXplCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTRlYTU0OGFlZDMzODkwYiBpbnB1dD0zYWFjZGJkZTc3YTNhNjM3XSovCit7CisgICAgcmV0dXJuIHBhdHRlcm5fc2Nhbm5lcihzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zcGxpdAorCisgICAgc3RyaW5nOiBvYmplY3QgPSBOVUxMCisgICAgbWF4c3BsaXQ6IFB5X3NzaXplX3QgPSAwCisgICAgKgorICAgIHNvdXJjZTogb2JqZWN0ID0gTlVMTAorCitTcGxpdCBzdHJpbmcgYnkgdGhlIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0LCBQeU9iamVjdCAqc291cmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIwYmFjMmZmNTViOWY4NGMgaW5wdXQ9NDFlMGIyZTM1ZTU5OWQ3Yl0qLwogewogICAgIFNSRV9TVEFURSBzdGF0ZTsKICAgICBQeU9iamVjdCogbGlzdDsKQEAgLTg0MSwxOSArOTQ3LDI0IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIHZvaWQqIGxhc3Q7CiAKLSAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTCwgKnN0cmluZzIgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAwOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T24kTzpzcGxpdCIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaW5nLCAmbWF4c3BsaXQsICZzdHJpbmcyKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzdHJpbmcgPSBmaXhfc3RyaW5nX3BhcmFtKHN0cmluZywgc3RyaW5nMiwgInNvdXJjZSIpOworICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzb3VyY2UsICJzb3VyY2UiKTsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCk7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgYXNzZXJ0KHNlbGYtPmNvZGVzaXplICE9IDApOworICAgIGlmIChzZWxmLT5jb2RlWzBdICE9IFNSRV9PUF9JTkZPIHx8IHNlbGYtPmNvZGVbM10gPT0gMCkgeworICAgICAgICBpZiAoc2VsZi0+Y29kZVswXSA9PSBTUkVfT1BfSU5GTyAmJiBzZWxmLT5jb2RlWzRdID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGxpdCgpIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHBhdHRlcm4gbWF0Y2guIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0Z1dHVyZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInNwbGl0KCkgcmVxdWlyZXMgYSBub24tZW1wdHkgcGF0dGVybiBtYXRjaC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgMCwgUFlfU1NJWkVfVF9NQVgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwpAQCAtOTk3LDggKzExMDgsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc3RhdGUsIHNlbGYsIHN0cmluZywgMCwgUFlfU1NJWkVfVF9NQVgpOwotICAgIGlmICghc3RyaW5nKSB7CisgICAgaWYgKCFzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCkpIHsKICAgICAgICAgUHlfREVDUkVGKGZpbHRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTExNDAsMzYgKzEyNTAsNTAgQEAKIAogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3N1YihQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIFB5T2JqZWN0KiBwdGVtcGxhdGU7Ci0gICAgUHlPYmplY3QqIHN0cmluZzsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk9PfG46c3ViIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdGVtcGxhdGUsICZzdHJpbmcsICZjb3VudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zdWIKIAotICAgIHJldHVybiBwYXR0ZXJuX3N1Yngoc2VsZiwgcHRlbXBsYXRlLCBzdHJpbmcsIGNvdW50LCAwKTsKKyAgICByZXBsOiBvYmplY3QKKyAgICBzdHJpbmc6IG9iamVjdAorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gMAorCitSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWRiZjJlYzM0NzljYmEwMCBpbnB1dD1jNTNkNzBiZTBiM2NhZjg2XSovCit7CisgICAgcmV0dXJuIHBhdHRlcm5fc3VieChzZWxmLCByZXBsLCBzdHJpbmcsIGNvdW50LCAwKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotcGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCi17Ci0gICAgUHlPYmplY3QqIHB0ZW1wbGF0ZTsKLSAgICBQeU9iamVjdCogc3RyaW5nOwotICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTCB9OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT098bjpzdWJuIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdGVtcGxhdGUsICZzdHJpbmcsICZjb3VudCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5zdWJuCiAKLSAgICByZXR1cm4gcGF0dGVybl9zdWJ4KHNlbGYsIHB0ZW1wbGF0ZSwgc3RyaW5nLCBjb3VudCwgMSk7CisgICAgcmVwbDogb2JqZWN0CisgICAgc3RyaW5nOiBvYmplY3QKKyAgICBjb3VudDogUHlfc3NpemVfdCA9IDAKKworUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiB3aXRoIHRoZSByZXBsYWNlbWVudCByZXBsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJuX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5nLCBQeV9zc2l6ZV90IGNvdW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkOTUyMmNkNTI5ZTk3MjggaW5wdXQ9ZTczNDJkN2NlNjA4MzU3N10qLworeworICAgIHJldHVybiBwYXR0ZXJuX3N1Yngoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCwgMSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fY29weShQYXR0ZXJuT2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfUGF0dGVybi5fX2NvcHlfXworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWRlZGMyZGIxYmQ4Njk0IGlucHV0PWE3MzBhNTlkODYzYmM5ZjVdKi8KIHsKICNpZmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAgICAgUGF0dGVybk9iamVjdCogY29weTsKQEAgLTExOTYsOCArMTMyMCwxNiBAQAogI2VuZGlmCiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fZGVlcGNvcHkoUGF0dGVybk9iamVjdCogc2VsZiwgUHlPYmplY3QqIG1lbW8pCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9QYXR0ZXJuLl9fZGVlcGNvcHlfXworCisgICAgbWVtbzogb2JqZWN0CisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzVlZmU2OWJkMTJjNWQ3ZCBpbnB1dD0zOTU5NzE5NDgyYzA3ZjcwXSovCiB7CiAjaWZkZWYgVVNFX0JVSUxUSU5fQ09QWQogICAgIFBhdHRlcm5PYmplY3QqIGNvcHk7CkBAIC0xMjM4LDcgKzEzNzAsNyBAQAogICAgIH07CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZsYWdfaXRlbXM7Ci0gICAgaW50IGk7CisgICAgc2l6ZV90IGk7CiAgICAgaW50IGZsYWdzID0gb2JqLT5mbGFnczsKIAogICAgIC8qIE9taXQgcmUuVU5JQ09ERSBmb3IgdmFsaWQgc3RyaW5nIHBhdHRlcm5zLiAqLwpAQCAtMTI5OSwxMzEgKzE0MzEsNDAgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocGF0dGVybl9tYXRjaF9kb2MsCi0ibWF0Y2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXAotICAgIE1hdGNoZXMgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX2Z1bGxtYXRjaF9kb2MsCi0iZnVsbG1hdGNoKHN0cmluZ1ssIHBvc1ssIGVuZHBvc11dKSAtPiBtYXRjaCBvYmplY3Qgb3IgTm9uZS5cblwKLSAgICBNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmciKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc2VhcmNoX2RvYywKLSJzZWFyY2goc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IG1hdGNoIG9iamVjdCBvciBOb25lLlxuXAotICAgIFNjYW4gdGhyb3VnaCBzdHJpbmcgbG9va2luZyBmb3IgYSBtYXRjaCwgYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmdcblwKLSAgICBtYXRjaCBvYmplY3QgaW5zdGFuY2UuIFJldHVybiBOb25lIGlmIG5vIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcgbWF0Y2hlcy4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc3BsaXRfZG9jLAotInNwbGl0KHN0cmluZ1ssIG1heHNwbGl0ID0gMF0pICAtPiBsaXN0LlxuXAotICAgIFNwbGl0IHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgcGF0dGVybi4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fZmluZGFsbF9kb2MsCi0iZmluZGFsbChzdHJpbmdbLCBwb3NbLCBlbmRwb3NdXSkgLT4gbGlzdC5cblwKLSAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOwotCi1QeURvY19TVFJWQVIocGF0dGVybl9maW5kaXRlcl9kb2MsCi0iZmluZGl0ZXIoc3RyaW5nWywgcG9zWywgZW5kcG9zXV0pIC0+IGl0ZXJhdG9yLlxuXAotICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFxuXAotICAgIFJFIHBhdHRlcm4gaW4gc3RyaW5nLiBGb3IgZWFjaCBtYXRjaCwgdGhlIGl0ZXJhdG9yIHJldHVybnMgYVxuXAotICAgIG1hdGNoIG9iamVjdC4iKTsKLQotUHlEb2NfU1RSVkFSKHBhdHRlcm5fc3ViX2RvYywKLSJzdWIocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gbmV3c3RyaW5nLlxuXAotICAgIFJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nXG5cCi0gICAgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcgYnkgdGhlIHJlcGxhY2VtZW50IHJlcGwuIik7Ci0KLVB5RG9jX1NUUlZBUihwYXR0ZXJuX3N1Ym5fZG9jLAotInN1Ym4ocmVwbCwgc3RyaW5nWywgY291bnQgPSAwXSkgLT4gKG5ld3N0cmluZywgbnVtYmVyIG9mIHN1YnMpXG5cCi0gICAgUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nXG5cCi0gICAgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIHdpdGggdGhlXG5cCi0gICAgcmVwbGFjZW1lbnQgcmVwbC4iKTsKLQogUHlEb2NfU1RSVkFSKHBhdHRlcm5fZG9jLCAiQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIG9iamVjdHMiKTsKIAotc3RhdGljIFB5TWV0aG9kRGVmIHBhdHRlcm5fbWV0aG9kc1tdID0gewotICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fbWF0Y2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX21hdGNoX2RvY30sCi0gICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9mdWxsbWF0Y2hfZG9jfSwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX3NlYXJjaF9kb2N9LAotICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1YiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fc3ViX2RvY30sCi0gICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotICAgICAgICBwYXR0ZXJuX3N1Ym5fZG9jfSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9zcGxpdF9kb2N9LAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9maW5kYWxsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgcGF0dGVybl9maW5kYWxsX2RvY30sCi0gICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIHBhdHRlcm5fZmluZGl0ZXJfZG9jfSwKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc2Nhbm5lciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAotICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fY29weSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2RlZXBjb3B5LCBNRVRIX099LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQotI2RlZmluZSBQQVRfT0ZGKHgpIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHgpCi1zdGF0aWMgUHlNZW1iZXJEZWYgcGF0dGVybl9tZW1iZXJzW10gPSB7Ci0gICAgeyJwYXR0ZXJuIiwgICAgVF9PQkpFQ1QsICAgIFBBVF9PRkYocGF0dGVybiksICAgICAgIFJFQURPTkxZfSwKLSAgICB7ImZsYWdzIiwgICAgICBUX0lOVCwgICAgICAgUEFUX09GRihmbGFncyksICAgICAgICAgUkVBRE9OTFl9LAotICAgIHsiZ3JvdXBzIiwgICAgIFRfUFlTU0laRVQsICBQQVRfT0ZGKGdyb3VwcyksICAgICAgICBSRUFET05MWX0sCi0gICAgeyJncm91cGluZGV4IiwgVF9PQkpFQ1QsICAgIFBBVF9PRkYoZ3JvdXBpbmRleCksICAgIFJFQURPTkxZfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IFBhdHRlcm5fVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKLSAgICBzaXplb2YoUGF0dGVybk9iamVjdCksIHNpemVvZihTUkVfQ09ERSksCi0gICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYylwYXR0ZXJuX3JlcHIsICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIHBhdHRlcm5fZG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKFBhdHRlcm5PYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBwYXR0ZXJuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgcGF0dGVybl9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotfTsKKy8qIFBhdHRlcm5PYmplY3QncyAnZ3JvdXBpbmRleCcgbWV0aG9kLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3BhdHRlcm5fZ3JvdXBpbmRleChQYXR0ZXJuT2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeURpY3RQcm94eV9OZXcoc2VsZi0+Z3JvdXBpbmRleCk7Cit9CiAKIHN0YXRpYyBpbnQgX3ZhbGlkYXRlKFBhdHRlcm5PYmplY3QgKnNlbGYpOyAvKiBGb3J3YXJkICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuY29tcGlsZQorCisgICAgcGF0dGVybjogb2JqZWN0CisgICAgZmxhZ3M6IGludAorICAgIGNvZGU6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TGlzdF9UeXBlJykKKyAgICBncm91cHM6IFB5X3NzaXplX3QKKyAgICBncm91cGluZGV4OiBvYmplY3QKKyAgICBpbmRleGdyb3VwOiBvYmplY3QKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotX2NvbXBpbGUoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncykKK19zcmVfY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXR0ZXJuLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBncm91cHMsIFB5T2JqZWN0ICpncm91cGluZGV4LAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmluZGV4Z3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzAwNGIyOTM3MzBiZjMwOSBpbnB1dD03ZDA1OWVjOGFlMWVkYjg1XSovCiB7CiAgICAgLyogImNvbXBpbGUiIHBhdHRlcm4gZGVzY3JpcHRvciB0byBwYXR0ZXJuIG9iamVjdCAqLwogCiAgICAgUGF0dGVybk9iamVjdCogc2VsZjsKICAgICBQeV9zc2l6ZV90IGksIG47CiAKLSAgICBQeU9iamVjdCogcGF0dGVybjsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0KiBjb2RlOwotICAgIFB5X3NzaXplX3QgZ3JvdXBzID0gMDsKLSAgICBQeU9iamVjdCogZ3JvdXBpbmRleCA9IE5VTEw7Ci0gICAgUHlPYmplY3QqIGluZGV4Z3JvdXAgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaU8hfG5PTyIsICZwYXR0ZXJuLCAmZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxpc3RfVHlwZSwgJmNvZGUsICZncm91cHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZncm91cGluZGV4LCAmaW5kZXhncm91cCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgbiA9IFB5TGlzdF9HRVRfU0laRShjb2RlKTsKICAgICAvKiBjb3Zlcml0eVthbXBlcnNhbmRfaW5fc2l6ZV0gKi8KICAgICBzZWxmID0gUHlPYmplY3RfTkVXX1ZBUihQYXR0ZXJuT2JqZWN0LCAmUGF0dGVybl9UeXBlLCBuKTsKQEAgLTE1NzksNiArMTYyMCw3IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9SQU5HRToKKyAgICAgICAgY2FzZSBTUkVfT1BfUkFOR0VfSUdOT1JFOgogICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5MzUsMTAgKzE5NzcsOSBAQAogc3RhdGljIGludAogX3ZhbGlkYXRlX291dGVyKFNSRV9DT0RFICpjb2RlLCBTUkVfQ09ERSAqZW5kLCBQeV9zc2l6ZV90IGdyb3VwcykKIHsKLSAgICBpZiAoZ3JvdXBzIDwgMCB8fCBncm91cHMgPiAxMDAgfHwgY29kZSA+PSBlbmQgfHwgZW5kWy0xXSAhPSBTUkVfT1BfU1VDQ0VTUykKKyAgICBpZiAoZ3JvdXBzIDwgMCB8fCAoc2l6ZV90KWdyb3VwcyA+IFNSRV9NQVhHUk9VUFMgfHwKKyAgICAgICAgY29kZSA+PSBlbmQgfHwgZW5kWy0xXSAhPSBTUkVfT1BfU1VDQ0VTUykKICAgICAgICAgRkFJTDsKLSAgICBpZiAoZ3JvdXBzID09IDApICAvKiBmaXggZm9yIHNpbXBsZWpzb24gKi8KLSAgICAgICAgZ3JvdXBzID0gMTAwOyAvKiAxMDAgZ3JvdXBzIHNob3VsZCBhbHdheXMgYmUgc2FmZSAqLwogICAgIHJldHVybiBfdmFsaWRhdGVfaW5uZXIoY29kZSwgZW5kLTEsIGdyb3Vwcyk7CiB9CiAKQEAgLTIwMzYsMTMgKzIwNzcsMjIgQEAKICAgICByZXR1cm4gbWF0Y2hfZ2V0c2xpY2VfYnlfaW5kZXgoc2VsZiwgbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXgpLCBkZWYpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBwdGVtcGxhdGUpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5leHBhbmQKKworICAgIHRlbXBsYXRlOiBvYmplY3QKKworUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvbiBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRlbXBsYXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzMWI1OGNjYzMyM2MzYTEgaW5wdXQ9NGJmZGIyMmMyZjhiMTQ2YV0qLwogewogICAgIC8qIGRlbGVnYXRlIHRvIFB5dGhvbiBjb2RlICovCiAgICAgcmV0dXJuIGNhbGwoCiAgICAgICAgIFNSRV9QWV9NT0RVTEUsICJfZXhwYW5kIiwKLSAgICAgICAgUHlUdXBsZV9QYWNrKDMsIHNlbGYtPnBhdHRlcm4sIHNlbGYsIHB0ZW1wbGF0ZSkKKyAgICAgICAgUHlUdXBsZV9QYWNrKDMsIHNlbGYtPnBhdHRlcm4sIHNlbGYsIHRlbXBsYXRlKQogICAgICAgICApOwogfQogCkBAIC0yMDgxLDI0ICsyMTMxLDI5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guZ3JvdXBzCisKKyAgICBkZWZhdWx0OiBvYmplY3QgPSBOb25lCisgICAgICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLgorCitSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZjhlMjY0MTUzNzIzOGEgaW5wdXQ9YmIwNjllZjU1ZGFiY2E5MV0qLwogewogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAotICAgIFB5T2JqZWN0KiBkZWYgPSBQeV9Ob25lOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgImRlZmF1bHQiLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Tzpncm91cHMiLCBrd2xpc3QsICZkZWYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KHNlbGYtPmdyb3Vwcy0xKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGluZGV4ID0gMTsgaW5kZXggPCBzZWxmLT5ncm91cHM7IGluZGV4KyspIHsKICAgICAgICAgUHlPYmplY3QqIGl0ZW07Ci0gICAgICAgIGl0ZW0gPSBtYXRjaF9nZXRzbGljZV9ieV9pbmRleChzZWxmLCBpbmRleCwgZGVmKTsKKyAgICAgICAgaXRlbSA9IG1hdGNoX2dldHNsaWNlX2J5X2luZGV4KHNlbGYsIGluZGV4LCBkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjEwOSwxOCArMjE2NCwyMyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX01hdGNoLmdyb3VwZGljdAorCisgICAgZGVmYXVsdDogb2JqZWN0ID0gTm9uZQorICAgICAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4KKworUmV0dXJuIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFsbCB0aGUgbmFtZWQgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwga2V5ZWQgYnkgdGhlIHN1Ymdyb3VwIG5hbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjk5MTdjOTA3M2U0MTc1NyBpbnB1dD0wZGVkNzk2MGIyMzc4MGFhXSovCiB7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKICAgICBQeU9iamVjdCoga2V5czsKICAgICBQeV9zc2l6ZV90IGluZGV4OwogCi0gICAgUHlPYmplY3QqIGRlZiA9IFB5X05vbmU7Ci0gICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAiZGVmYXVsdCIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPOmdyb3VwZGljdCIsIGt3bGlzdCwgJmRlZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmVzdWx0ID0gUHlEaWN0X05ldygpOwogICAgIGlmICghcmVzdWx0IHx8ICFzZWxmLT5wYXR0ZXJuLT5ncm91cGluZGV4KQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjEzNiw3ICsyMTk2LDcgQEAKICAgICAgICAga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGluZGV4KTsKICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgdmFsdWUgPSBtYXRjaF9nZXRzbGljZShzZWxmLCBrZXksIGRlZik7CisgICAgICAgIHZhbHVlID0gbWF0Y2hfZ2V0c2xpY2Uoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKQEAgLTIxNTcsNTAgKzIyMTcsNTggQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbWF0Y2hfc3RhcnQoTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guc3RhcnQgLT4gUHlfc3NpemVfdAorCisgICAgZ3JvdXA6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IDAKKyAgICAvCisKK1JldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmNmU3ZjlkZjJmYjUyMDEgaW5wdXQ9Y2VkOGU0ZWQ0YjMzZWU2Y10qLwogewotICAgIFB5X3NzaXplX3QgaW5kZXg7Ci0KLSAgICBQeU9iamVjdCogaW5kZXhfID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsIDAsIDEsICZpbmRleF8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXhfKTsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgZ3JvdXApOwogCiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5ncm91cHMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICJubyBzdWNoIGdyb3VwIgogICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBtYXJrIGlzIC0xIGlmIGdyb3VwIGlzIHVuZGVmaW5lZCAqLwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+bWFya1tpbmRleCoyXSk7CisgICAgcmV0dXJuIHNlbGYtPm1hcmtbaW5kZXgqMl07CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX2VuZChNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5lbmQgLT4gUHlfc3NpemVfdAorCisgICAgZ3JvdXA6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IDAKKyAgICAvCisKK1JldHVybiBpbmRleCBvZiB0aGUgZW5kIG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK19zcmVfU1JFX01hdGNoX2VuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjQyNDBiMDk5MTFmNzY5MiBpbnB1dD0xYjc5OTU2MGM3ZjNkN2U2XSovCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleDsKLQotICAgIFB5T2JqZWN0KiBpbmRleF8gPSBOVUxMOwotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImVuZCIsIDAsIDEsICZpbmRleF8pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgaW5kZXhfKTsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbWF0Y2hfZ2V0aW5kZXgoc2VsZiwgZ3JvdXApOwogCiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzZWxmLT5ncm91cHMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICJubyBzdWNoIGdyb3VwIgogICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBtYXJrIGlzIC0xIGlmIGdyb3VwIGlzIHVuZGVmaW5lZCAqLwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+bWFya1tpbmRleCoyKzFdKTsKKyAgICByZXR1cm4gc2VsZi0+bWFya1tpbmRleCoyKzFdOwogfQogCiBMT0NBTChQeU9iamVjdCopCkBAIC0yMjMwLDE2ICsyMjk4LDIwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLW1hdGNoX3NwYW4oTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guc3BhbgorCisgICAgZ3JvdXA6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IDAKKyAgICAvCisKK0ZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfc3Bhbl9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjAyYWU0MDU5NGQxNGZlNiBpbnB1dD00OTA5MmI2MDA4ZDE3NmQzXSovCiB7Ci0gICAgUHlfc3NpemVfdCBpbmRleDsKLQotICAgIFB5T2JqZWN0KiBpbmRleF8gPSBOVUxMOwotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNwYW4iLCAwLCAxLCAmaW5kZXhfKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGluZGV4Xyk7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IG1hdGNoX2dldGluZGV4KHNlbGYsIGdyb3VwKTsKIAogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc2VsZi0+Z3JvdXBzKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTIyNzksOCArMjM1MSwxNCBAQAogICAgIHJldHVybiByZWdzOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9jb3B5KE1hdGNoT2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorLypbY2xpbmljIGlucHV0XQorX3NyZS5TUkVfTWF0Y2guX19jb3B5X18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19jb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNzc5YzVmYzhiNWI0ZWI0IGlucHV0PTNiYjRkMzBiNmJhZGRiNWJdKi8KIHsKICNpZmRlZiBVU0VfQlVJTFRJTl9DT1BZCiAgICAgTWF0Y2hPYmplY3QqIGNvcHk7CkBAIC0yMzEwLDggKzIzODgsMTYgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tYXRjaF9kZWVwY29weShNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG1lbW8pCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9NYXRjaC5fX2RlZXBjb3B5X18KKworICAgIG1lbW86IG9iamVjdAorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmI2NTc1NzhlYjAzZjRhMyBpbnB1dD1iNjViNzI0ODllYWM2NGNjXSovCiB7CiAjaWZkZWYgVVNFX0JVSUxUSU5fQ09QWQogICAgIE1hdGNoT2JqZWN0KiBjb3B5OwpAQCAtMjM0Miw1MCArMjQyOCw2IEBACiAgICAgUmV0dXJuIHN1Ymdyb3VwKHMpIG9mIHRoZSBtYXRjaCBieSBpbmRpY2VzIG9yIG5hbWVzLlxuXAogICAgIEZvciAwIHJldHVybnMgdGhlIGVudGlyZSBtYXRjaC4iKTsKIAotUHlEb2NfU1RSVkFSKG1hdGNoX3N0YXJ0X2RvYywKLSJzdGFydChbZ3JvdXA9MF0pIC0+IGludC5cblwKLSAgICBSZXR1cm4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4iKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX2VuZF9kb2MsCi0iZW5kKFtncm91cD0wXSkgLT4gaW50LlxuXAotICAgIFJldHVybiBpbmRleCBvZiB0aGUgZW5kIG9mIHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSBncm91cC4iKTsKLQotUHlEb2NfU1RSVkFSKG1hdGNoX3NwYW5fZG9jLAotInNwYW4oW2dyb3VwXSkgLT4gdHVwbGUuXG5cCi0gICAgRm9yIE1hdGNoT2JqZWN0IG0sIHJldHVybiB0aGUgMi10dXBsZSAobS5zdGFydChncm91cCksIG0uZW5kKGdyb3VwKSkuIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9ncm91cHNfZG9jLAotImdyb3VwcyhbZGVmYXVsdD1Ob25lXSkgLT4gdHVwbGUuXG5cCi0gICAgUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMS5cblwKLSAgICBUaGUgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGZvciBncm91cHNcblwKLSAgICB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9ncm91cGRpY3RfZG9jLAotImdyb3VwZGljdChbZGVmYXVsdD1Ob25lXSkgLT4gZGljdC5cblwKLSAgICBSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWxsIHRoZSBuYW1lZCBzdWJncm91cHMgb2YgdGhlIG1hdGNoLFxuXAotICAgIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLiBUaGUgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGZvciBncm91cHNcblwKLSAgICB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoIik7Ci0KLVB5RG9jX1NUUlZBUihtYXRjaF9leHBhbmRfZG9jLAotImV4cGFuZCh0ZW1wbGF0ZSkgLT4gc3RyLlxuXAotICAgIFJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb25cblwKLSAgICBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuIik7Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBtYXRjaF9tZXRob2RzW10gPSB7Ci0gICAgeyJncm91cCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXAsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZ3JvdXBfZG9jfSwKLSAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9zdGFydCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9zdGFydF9kb2N9LAotICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9lbmQsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZW5kX2RvY30sCi0gICAgeyJzcGFuIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9zcGFuLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX3NwYW5fZG9jfSwKLSAgICB7Imdyb3VwcyIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXBzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgbWF0Y2hfZ3JvdXBzX2RvY30sCi0gICAgeyJncm91cGRpY3QiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwZGljdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0gICAgICAgIG1hdGNoX2dyb3VwZGljdF9kb2N9LAotICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9leHBhbmQsIE1FVEhfTywgbWF0Y2hfZXhwYW5kX2RvY30sCi0gICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgbWF0Y2hfY29weSwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9kZWVwY29weSwgTUVUSF9PfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBtYXRjaF9sYXN0aW5kZXhfZ2V0KE1hdGNoT2JqZWN0ICpzZWxmKQogewpAQCAtMjQzNiw1NyArMjQ3OCw2IEBACiB9CiAKIAotc3RhdGljIFB5R2V0U2V0RGVmIG1hdGNoX2dldHNldFtdID0gewotICAgIHsibGFzdGluZGV4IiwgKGdldHRlciltYXRjaF9sYXN0aW5kZXhfZ2V0LCAoc2V0dGVyKU5VTEx9LAotICAgIHsibGFzdGdyb3VwIiwgKGdldHRlciltYXRjaF9sYXN0Z3JvdXBfZ2V0LCAoc2V0dGVyKU5VTEx9LAotICAgIHsicmVncyIsICAgICAgKGdldHRlciltYXRjaF9yZWdzX2dldCwgICAgICAoc2V0dGVyKU5VTEx9LAotICAgIHtOVUxMfQotfTsKLQotI2RlZmluZSBNQVRDSF9PRkYoeCkgb2Zmc2V0b2YoTWF0Y2hPYmplY3QsIHgpCi1zdGF0aWMgUHlNZW1iZXJEZWYgbWF0Y2hfbWVtYmVyc1tdID0gewotICAgIHsic3RyaW5nIiwgIFRfT0JKRUNULCAgIE1BVENIX09GRihzdHJpbmcpLCAgUkVBRE9OTFl9LAotICAgIHsicmUiLCAgICAgIFRfT0JKRUNULCAgIE1BVENIX09GRihwYXR0ZXJuKSwgUkVBRE9OTFl9LAotICAgIHsicG9zIiwgICAgIFRfUFlTU0laRVQsIE1BVENIX09GRihwb3MpLCAgICAgUkVBRE9OTFl9LAotICAgIHsiZW5kcG9zIiwgIFRfUFlTU0laRVQsIE1BVENIX09GRihlbmRwb3MpLCAgUkVBRE9OTFl9LAotICAgIHtOVUxMfQotfTsKLQotLyogRklYTUU6IGltcGxlbWVudCBzZXRhdHRyKCJzdHJpbmciLCBOb25lKSBhcyBhIHNwZWNpYWwgY2FzZSAodG8KLSAgIGRldGFjaCB0aGUgYXNzb2NpYXRlZCBzdHJpbmcsIGlmIGFueSAqLwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IE1hdGNoX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsMCkKLSAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9NYXRjaCIsCi0gICAgc2l6ZW9mKE1hdGNoT2JqZWN0KSwgc2l6ZW9mKFB5X3NzaXplX3QpLAotICAgIChkZXN0cnVjdG9yKW1hdGNoX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYyltYXRjaF9yZXByLCAgICAgICAvKiB0cF9yZXByICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgbWF0Y2hfZG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgbWF0Y2hfbWV0aG9kcywgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICBtYXRjaF9tZW1iZXJzLCAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIG1hdGNoX2dldHNldCwgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLX07Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFNSRV9TVEFURSogc3RhdGUsIFB5X3NzaXplX3Qgc3RhdHVzKQogewpAQCAtMjU2Miw4ICsyNTUzLDE0IEBACiAgICAgUHlPYmplY3RfREVMKHNlbGYpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1zY2FubmVyX21hdGNoKFNjYW5uZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCisvKltjbGluaWMgaW5wdXRdCitfc3JlLlNSRV9TY2FubmVyLm1hdGNoCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfbWF0Y2hfaW1wbChTY2FubmVyT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzNmIzMGM2M2Q0YjgxZWIgaW5wdXQ9ODgxYTAxNTRmOGMxM2Q5YV0qLwogewogICAgIFNSRV9TVEFURSogc3RhdGUgPSAmc2VsZi0+c3RhdGU7CiAgICAgUHlPYmplY3QqIG1hdGNoOwpAQCAtMjU5Niw4ICsyNTkzLDE0IEBACiB9CiAKIAotc3RhdGljIFB5T2JqZWN0Kgotc2Nhbm5lcl9zZWFyY2goU2Nhbm5lck9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBpbnB1dF0KK19zcmUuU1JFX1NjYW5uZXIuc2VhcmNoCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZGMyMTE5ODYwODhmMDI1IGlucHV0PTE2MTIyM2VlOTJlZjkyNzBdKi8KIHsKICAgICBTUkVfU1RBVEUqIHN0YXRlID0gJnNlbGYtPnN0YXRlOwogICAgIFB5T2JqZWN0KiBtYXRjaDsKQEAgLTI2MjksOSArMjYzMiwxNjAgQEAKICAgICByZXR1cm4gbWF0Y2g7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKQoreworICAgIFNjYW5uZXJPYmplY3QqIHNjYW5uZXI7CisKKyAgICAvKiBjcmVhdGUgc2Nhbm5lciBvYmplY3QgKi8KKyAgICBzY2FubmVyID0gUHlPYmplY3RfTkVXKFNjYW5uZXJPYmplY3QsICZTY2FubmVyX1R5cGUpOworICAgIGlmICghc2Nhbm5lcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2Nhbm5lci0+cGF0dGVybiA9IE5VTEw7CisKKyAgICAvKiBjcmVhdGUgc2VhcmNoIHN0YXRlIG9iamVjdCAqLworICAgIGlmICghc3RhdGVfaW5pdCgmc2Nhbm5lci0+c3RhdGUsIHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpKSB7CisgICAgICAgIFB5X0RFQ1JFRihzY2FubmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHNjYW5uZXItPnBhdHRlcm4gPSAoUHlPYmplY3QqKSBzZWxmOworCisgICAgcmV0dXJuIChQeU9iamVjdCopIHNjYW5uZXI7Cit9CisKKyNpbmNsdWRlICJjbGluaWMvX3NyZS5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiBwYXR0ZXJuX21ldGhvZHNbXSA9IHsKKyAgICBfU1JFX1NSRV9QQVRURVJOX01BVENIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fRlVMTE1BVENIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU0VBUkNIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU1VCX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU1VCTl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX0ZJTkRBTExfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfUEFUVEVSTl9TUExJVF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fU0NBTk5FUl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9QQVRURVJOX19fQ09QWV9fX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1BBVFRFUk5fX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5R2V0U2V0RGVmIHBhdHRlcm5fZ2V0c2V0W10gPSB7CisgICAgeyJncm91cGluZGV4IiwgKGdldHRlcilwYXR0ZXJuX2dyb3VwaW5kZXgsIChzZXR0ZXIpTlVMTCwKKyAgICAgICJBIGRpY3Rpb25hcnkgbWFwcGluZyBncm91cCBuYW1lcyB0byBncm91cCBudW1iZXJzLiJ9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKKyNkZWZpbmUgUEFUX09GRih4KSBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB4KQorc3RhdGljIFB5TWVtYmVyRGVmIHBhdHRlcm5fbWVtYmVyc1tdID0geworICAgIHsicGF0dGVybiIsICAgIFRfT0JKRUNULCAgICBQQVRfT0ZGKHBhdHRlcm4pLCAgICAgICBSRUFET05MWX0sCisgICAgeyJmbGFncyIsICAgICAgVF9JTlQsICAgICAgIFBBVF9PRkYoZmxhZ3MpLCAgICAgICAgIFJFQURPTkxZfSwKKyAgICB7Imdyb3VwcyIsICAgICBUX1BZU1NJWkVULCAgUEFUX09GRihncm91cHMpLCAgICAgICAgUkVBRE9OTFl9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUGF0dGVybl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1BhdHRlcm4iLAorICAgIHNpemVvZihQYXR0ZXJuT2JqZWN0KSwgc2l6ZW9mKFNSRV9DT0RFKSwKKyAgICAoZGVzdHJ1Y3RvcilwYXR0ZXJuX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKXBhdHRlcm5fcmVwciwgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgcGF0dGVybl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHBhdHRlcm5fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBwYXR0ZXJuX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgcGF0dGVybl9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCit9OworCisKK3N0YXRpYyBQeU1ldGhvZERlZiBtYXRjaF9tZXRob2RzW10gPSB7CisgICAgeyJncm91cCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXAsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZ3JvdXBfZG9jfSwKKyAgICBfU1JFX1NSRV9NQVRDSF9TVEFSVF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9FTkRfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfU1BBTl9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9HUk9VUFNfTUVUSE9EREVGCisgICAgX1NSRV9TUkVfTUFUQ0hfR1JPVVBESUNUX01FVEhPRERFRgorICAgIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9fX0NPUFlfX19NRVRIT0RERUYKKyAgICBfU1JFX1NSRV9NQVRDSF9fX0RFRVBDT1BZX19fTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgbWF0Y2hfZ2V0c2V0W10gPSB7CisgICAgeyJsYXN0aW5kZXgiLCAoZ2V0dGVyKW1hdGNoX2xhc3RpbmRleF9nZXQsIChzZXR0ZXIpTlVMTH0sCisgICAgeyJsYXN0Z3JvdXAiLCAoZ2V0dGVyKW1hdGNoX2xhc3Rncm91cF9nZXQsIChzZXR0ZXIpTlVMTH0sCisgICAgeyJyZWdzIiwgICAgICAoZ2V0dGVyKW1hdGNoX3JlZ3NfZ2V0LCAgICAgIChzZXR0ZXIpTlVMTH0sCisgICAge05VTEx9Cit9OworCisjZGVmaW5lIE1BVENIX09GRih4KSBvZmZzZXRvZihNYXRjaE9iamVjdCwgeCkKK3N0YXRpYyBQeU1lbWJlckRlZiBtYXRjaF9tZW1iZXJzW10gPSB7CisgICAgeyJzdHJpbmciLCAgVF9PQkpFQ1QsICAgTUFUQ0hfT0ZGKHN0cmluZyksICBSRUFET05MWX0sCisgICAgeyJyZSIsICAgICAgVF9PQkpFQ1QsICAgTUFUQ0hfT0ZGKHBhdHRlcm4pLCBSRUFET05MWX0sCisgICAgeyJwb3MiLCAgICAgVF9QWVNTSVpFVCwgTUFUQ0hfT0ZGKHBvcyksICAgICBSRUFET05MWX0sCisgICAgeyJlbmRwb3MiLCAgVF9QWVNTSVpFVCwgTUFUQ0hfT0ZGKGVuZHBvcyksICBSRUFET05MWX0sCisgICAge05VTEx9Cit9OworCisvKiBGSVhNRTogaW1wbGVtZW50IHNldGF0dHIoInN0cmluZyIsIE5vbmUpIGFzIGEgc3BlY2lhbCBjYXNlICh0bworICAgZGV0YWNoIHRoZSBhc3NvY2lhdGVkIHN0cmluZywgaWYgYW55ICovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgTWF0Y2hfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwwKQorICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX01hdGNoIiwKKyAgICBzaXplb2YoTWF0Y2hPYmplY3QpLCBzaXplb2YoUHlfc3NpemVfdCksCisgICAgKGRlc3RydWN0b3IpbWF0Y2hfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKW1hdGNoX3JlcHIsICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBtYXRjaF9kb2MsICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBtYXRjaF9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hdGNoX21lbWJlcnMsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbWF0Y2hfZ2V0c2V0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworfTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHNjYW5uZXJfbWV0aG9kc1tdID0gewotICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pIHNjYW5uZXJfbWF0Y2gsIE1FVEhfTk9BUkdTfSwKLSAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbikgc2Nhbm5lcl9zZWFyY2gsIE1FVEhfTk9BUkdTfSwKKyAgICBfU1JFX1NSRV9TQ0FOTkVSX01BVENIX01FVEhPRERFRgorICAgIF9TUkVfU1JFX1NDQU5ORVJfU0VBUkNIX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjY3Myw0NyArMjgyNywxMCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiBwYXR0ZXJuLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIC8qIGNyZWF0ZSBzZWFyY2ggc3RhdGUgb2JqZWN0ICovCi0KLSAgICBTY2FubmVyT2JqZWN0KiBzZWxmOwotCi0gICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEwsICpzdHJpbmcyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIHN0YXRpYyBjaGFyKiBrd2xpc3RbXSA9IHsgInN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEwgfTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPbm4kTzpzY2FubmVyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJpbmcsICZzdGFydCwgJmVuZCwgJnN0cmluZzIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN0cmluZyA9IGZpeF9zdHJpbmdfcGFyYW0oc3RyaW5nLCBzdHJpbmcyLCAic291cmNlIik7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogY3JlYXRlIHNjYW5uZXIgb2JqZWN0ICovCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhTY2FubmVyT2JqZWN0LCAmU2Nhbm5lcl9UeXBlKTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlbGYtPnBhdHRlcm4gPSBOVUxMOwotCi0gICAgc3RyaW5nID0gc3RhdGVfaW5pdCgmc2VsZi0+c3RhdGUsIHBhdHRlcm4sIHN0cmluZywgc3RhcnQsIGVuZCk7Ci0gICAgaWYgKCFzdHJpbmcpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBQeV9JTkNSRUYocGF0dGVybik7Ci0gICAgc2VsZi0+cGF0dGVybiA9IChQeU9iamVjdCopIHBhdHRlcm47Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7ImNvbXBpbGUiLCBfY29tcGlsZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldGNvZGVzaXplIiwgc3JlX2NvZGVzaXplLCBNRVRIX05PQVJHU30sCi0gICAgeyJnZXRsb3dlciIsIHNyZV9nZXRsb3dlciwgTUVUSF9WQVJBUkdTfSwKKyAgICBfU1JFX0NPTVBJTEVfTUVUSE9EREVGCisgICAgX1NSRV9HRVRDT0RFU0laRV9NRVRIT0RERUYKKyAgICBfU1JFX0dFVExPV0VSX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMjc2Myw2ICsyODgwLDEyIEBACiAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICB9CiAKKyAgICB4ID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoU1JFX01BWEdST1VQUyk7CisgICAgaWYgKHgpIHsKKyAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1BWEdST1VQUyIsIHgpOworICAgICAgICBQeV9ERUNSRUYoeCk7CisgICAgfQorCiAgICAgeCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNvcHlyaWdodCk7CiAgICAgaWYgKHgpIHsKICAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgImNvcHlyaWdodCIsIHgpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCA0ZGMxNTM0Li5jYTM1NDljIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIm9wZW5zc2wvc3NsLmgiCiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKICNpbmNsdWRlICJvcGVuc3NsL3JhbmQuaCIKKyNpbmNsdWRlICJvcGVuc3NsL2Jpby5oIgogCiAvKiBTU0wgZXJyb3Igb2JqZWN0ICovCiBzdGF0aWMgUHlPYmplY3QgKlB5U1NMRXJyb3JPYmplY3Q7CkBAIC0xMDgsNiArMTA5LDExIEBACiAjIGRlZmluZSBIQVZFX1NOSSAwCiAjZW5kaWYKIAorLyogQUxQTiBhZGRlZCBpbiBPcGVuU1NMIDEuMC4yICovCisjaWYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpICYmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCisjIGRlZmluZSBIQVZFX0FMUE4KKyNlbmRpZgorCiBlbnVtIHB5X3NzbF9lcnJvciB7CiAgICAgLyogdGhlc2UgbWlycm9yIHNzbC5oICovCiAgICAgUFlfU1NMX0VSUk9SX05PTkUsCkBAIC0xNjEsMTMgKzE2Nyw2IEBACiAKICNkZWZpbmUgWDUwOV9OQU1FX01BWExFTiAyNTYKIAotLyogUkFORF8qIEFQSXMgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjUgKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDUwMGZMCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfUkFORCAxCi0jZWxzZQotIyB1bmRlZiBIQVZFX09QRU5TU0xfUkFORAotI2VuZGlmCi0KIC8qIFNTTF9DVFhfY2xlYXJfb3B0aW9ucygpIGFuZCBTU0xfY2xlYXJfb3B0aW9ucygpIHdlcmUgZmlyc3QgYWRkZWQgaW4KICAqIE9wZW5TU0wgMC45LjhtIGJ1dCBkbyBub3QgYXBwZWFyIGluIHNvbWUgMC45LjktZGV2IHZlcnNpb25zIHN1Y2ggdGhlCiAgKiAwLjkuOSBmcm9tICJNYXkgMjAwOCIgdGhhdCBOZXRCU0QgNS4wIHVzZXMuICovCkBAIC0xODEsMzYgKzE4MCwxOCBAQAogICogb2xkZXIgU1NMLCBidXQgbGV0J3MgYmUgc2FmZSAqLwogI2RlZmluZSBQeVNTTF9DQl9NQVhMRU4gMTI4CiAKLS8qIFNTTF9nZXRfZmluaXNoZWQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjUgKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDUwMGZMCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfRklOSVNIRUQgMQotI2Vsc2UKLSMgZGVmaW5lIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAwCi0jZW5kaWYKLQotLyogRUNESCBzdXBwb3J0IGdvdCBhZGRlZCB0byBPcGVuU1NMIGluIDAuOS44ICovCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MDA5MDgwMGZMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkKLSMgZGVmaW5lIE9QRU5TU0xfTk9fRUNESAotI2VuZGlmCi0KLS8qIGNvbXByZXNzaW9uIHN1cHBvcnQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19DT01QKQotIyBkZWZpbmUgT1BFTlNTTF9OT19DT01QCi0jZW5kaWYKLQotLyogWDUwOV9WRVJJRllfUEFSQU0gZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwMGZMCi0jIGRlZmluZSBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCi0jZW5kaWYKLQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFNTTF9DVFggKmN0eDsKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECi0gICAgY2hhciAqbnBuX3Byb3RvY29sczsKKyAgICB1bnNpZ25lZCBjaGFyICpucG5fcHJvdG9jb2xzOwogICAgIGludCBucG5fcHJvdG9jb2xzX2xlbjsKICNlbmRpZgorI2lmZGVmIEhBVkVfQUxQTgorICAgIHVuc2lnbmVkIGNoYXIgKmFscG5fcHJvdG9jb2xzOworICAgIGludCBhbHBuX3Byb3RvY29sc19sZW47CisjZW5kaWYKICNpZm5kZWYgT1BFTlNTTF9OT19UTFNFWFQKICAgICBQeU9iamVjdCAqc2V0X2hvc3RuYW1lOwogI2VuZGlmCkBAIC0yMjYsMjAgKzIwNywzNSBAQAogICAgIGNoYXIgc2h1dGRvd25fc2Vlbl96ZXJvOwogICAgIGNoYXIgaGFuZHNoYWtlX2RvbmU7CiAgICAgZW51bSBweV9zc2xfc2VydmVyX29yX2NsaWVudCBzb2NrZXRfdHlwZTsKKyAgICBQeU9iamVjdCAqb3duZXI7IC8qIFB5dGhvbiBsZXZlbCAib3duZXIiIHBhc3NlZCB0byBzZXJ2ZXJuYW1lIGNhbGxiYWNrICovCisgICAgUHlPYmplY3QgKnNlcnZlcl9ob3N0bmFtZTsKIH0gUHlTU0xTb2NrZXQ7CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgQklPICpiaW87CisgICAgaW50IGVvZl93cml0dGVuOworfSBQeVNTTE1lbW9yeUJJTzsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTENvbnRleHRfVHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xTb2NrZXRfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xNZW1vcnlCSU9fVHlwZTsKIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0x3cml0ZShQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOwotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xyZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgaW50IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChQeVNvY2tldFNvY2tPYmplY3QgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd3JpdGluZyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX3BlZXJjZXJ0KFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NpcGhlcihQeVNTTFNvY2tldCAqc2VsZik7CisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NzbAorY2xhc3MgX3NzbC5fU1NMQ29udGV4dCAiUHlTU0xDb250ZXh0ICoiICImUHlTU0xDb250ZXh0X1R5cGUiCitjbGFzcyBfc3NsLl9TU0xTb2NrZXQgIlB5U1NMU29ja2V0ICoiICImUHlTU0xTb2NrZXRfVHlwZSIKK2NsYXNzIF9zc2wuTWVtb3J5QklPICJQeVNTTE1lbW9yeUJJTyAqIiAiJlB5U1NMTWVtb3J5QklPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03YmY3Y2I4MzI2MzhlMmUxXSovCisKKyNpbmNsdWRlICJjbGluaWMvX3NzbC5jLmgiCisKK3N0YXRpYyBpbnQgUHlTU0xfc2VsZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcsIF9QeVRpbWVfdCB0aW1lb3V0KTsKIAogI2RlZmluZSBQeVNTTENvbnRleHRfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpCiAjZGVmaW5lIFB5U1NMU29ja2V0X0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNvY2tldF9UeXBlKQorI2RlZmluZSBQeVNTTE1lbW9yeUJJT19DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTT0NLRVRfSVNfTk9OQkxPQ0tJTkcsCkBAIC0yNTEsMTEgKzI0NywxNiBAQAogfSB0aW1lb3V0X3N0YXRlOwogCiAvKiBXcmFwIGVycm9yIHN0cmluZ3Mgd2l0aCBmaWxlbmFtZSBhbmQgbGluZSAjICovCi0jZGVmaW5lIFNUUklOR0lGWTEoeCkgI3gKLSNkZWZpbmUgU1RSSU5HSUZZMih4KSBTVFJJTkdJRlkxKHgpCiAjZGVmaW5lIEVSUlNUUjEoeCx5LHopICh4ICI6IiB5ICI6ICIgeikKLSNkZWZpbmUgRVJSU1RSKHgpIEVSUlNUUjEoIl9zc2wuYyIsIFNUUklOR0lGWTIoX19MSU5FX18pLCB4KQorI2RlZmluZSBFUlJTVFIoeCkgRVJSU1RSMSgiX3NzbC5jIiwgUHlfU1RSSU5HSUZZKF9fTElORV9fKSwgeCkKIAorLyogR2V0IHRoZSBzb2NrZXQgZnJvbSBhIFB5U1NMU29ja2V0LCBpZiBpdCBoYXMgb25lICovCisjZGVmaW5lIEdFVF9TT0NLRVQob2JqKSAoKG9iaiktPlNvY2tldCA/IFwKKyAgICAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3QoKG9iaiktPlNvY2tldCkgOiBOVUxMKQorCisvKiBJZiBzb2NrIGlzIE5VTEwsIHVzZSBhIHRpbWVvdXQgb2YgMCBzZWNvbmQgKi8KKyNkZWZpbmUgR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spIFwKKyAgICAoKHNvY2sgIT0gTlVMTCkgPyAoc29jayktPnNvY2tfdGltZW91dCA6IDApCiAKIC8qCiAgKiBTU0wgZXJyb3JzLgpAQCAtNDE5LDEzICs0MjAsMTIgQEAKICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1lTQ0FMTDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGUgPT0gMCkgewotICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcwotICAgICAgICAgICAgICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qob2JqLT5Tb2NrZXQpOworICAgICAgICAgICAgICAgIFB5U29ja2V0U29ja09iamVjdCAqcyA9IEdFVF9TT0NLRVQob2JqKTsKICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDAgfHwgKCgoUHlPYmplY3QgKilzKSA9PSBQeV9Ob25lKSkgewogICAgICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0VPRjsKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5U1NMRU9GRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJFT0Ygb2NjdXJyZWQgaW4gdmlvbGF0aW9uIG9mIHByb3RvY29sIjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA9PSAtMSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocyAmJiByZXQgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogdW5kZXJseWluZyBCSU8gcmVwb3J0ZWQgYW4gSS9PIGVycm9yICovCiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzKTsKICAgICAgICAgICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CkBAIC00NzksMTAgKzQ3OSwxMiBAQAogc3RhdGljIFB5U1NMU29ja2V0ICoKIG5ld1B5U1NMU29ja2V0KFB5U1NMQ29udGV4dCAqc3NsY3R4LCBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2ssCiAgICAgICAgICAgICAgICBlbnVtIHB5X3NzbF9zZXJ2ZXJfb3JfY2xpZW50IHNvY2tldF90eXBlLAotICAgICAgICAgICAgICAgY2hhciAqc2VydmVyX2hvc3RuYW1lKQorICAgICAgICAgICAgICAgY2hhciAqc2VydmVyX2hvc3RuYW1lLAorICAgICAgICAgICAgICAgUHlTU0xNZW1vcnlCSU8gKmluYmlvLCBQeVNTTE1lbW9yeUJJTyAqb3V0YmlvKQogewogICAgIFB5U1NMU29ja2V0ICpzZWxmOwogICAgIFNTTF9DVFggKmN0eCA9IHNzbGN0eC0+Y3R4OworICAgIFB5T2JqZWN0ICpob3N0bmFtZTsKICAgICBsb25nIG1vZGU7CiAKICAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5U1NMU29ja2V0LCAmUHlTU0xTb2NrZXRfVHlwZSk7CkBAIC00OTUsNiArNDk3LDE4IEBACiAgICAgc2VsZi0+Y3R4ID0gc3NsY3R4OwogICAgIHNlbGYtPnNodXRkb3duX3NlZW5femVybyA9IDA7CiAgICAgc2VsZi0+aGFuZHNoYWtlX2RvbmUgPSAwOworICAgIHNlbGYtPm93bmVyID0gTlVMTDsKKyAgICBpZiAoc2VydmVyX2hvc3RuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgaG9zdG5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlKHNlcnZlcl9ob3N0bmFtZSwgc3RybGVuKHNlcnZlcl9ob3N0bmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZG5hIiwgInN0cmljdCIpOworICAgICAgICBpZiAoaG9zdG5hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+c2VydmVyX2hvc3RuYW1lID0gaG9zdG5hbWU7CisgICAgfSBlbHNlCisgICAgICAgIHNlbGYtPnNlcnZlcl9ob3N0bmFtZSA9IE5VTEw7CisKICAgICBQeV9JTkNSRUYoc3NsY3R4KTsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGUgU1NMIGVycm9yIHN0YXRlIGlzIGluaXRpYWxpemVkICovCkBAIC01MDQsOCArNTE4LDE3IEBACiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHNlbGYtPnNzbCA9IFNTTF9uZXcoY3R4KTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFNTTF9zZXRfYXBwX2RhdGEoc2VsZi0+c3NsLHNlbGYpOwotICAgIFNTTF9zZXRfZmQoc2VsZi0+c3NsLCBQeV9TQUZFX0RPV05DQVNUKHNvY2stPnNvY2tfZmQsIFNPQ0tFVF9ULCBpbnQpKTsKKyAgICBTU0xfc2V0X2FwcF9kYXRhKHNlbGYtPnNzbCwgc2VsZik7CisgICAgaWYgKHNvY2spIHsKKyAgICAgICAgU1NMX3NldF9mZChzZWxmLT5zc2wsIFB5X1NBRkVfRE9XTkNBU1Qoc29jay0+c29ja19mZCwgU09DS0VUX1QsIGludCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIEJJT3MgYXJlIHJlZmVyZW5jZSBjb3VudGVkIGFuZCBTU0xfc2V0X2JpbyBib3Jyb3dzIG91ciByZWZlcmVuY2UuCisgICAgICAgICAqIFRvIHByZXZlbnQgYSBkb3VibGUgZnJlZSBpbiBtZW1vcnlfYmlvX2RlYWxsb2MoKSB3ZSBuZWVkIHRvIHRha2UgYW4KKyAgICAgICAgICogZXh0cmEgcmVmZXJlbmNlIGhlcmUuICovCisgICAgICAgIENSWVBUT19hZGQoJmluYmlvLT5iaW8tPnJlZmVyZW5jZXMsIDEsIENSWVBUT19MT0NLX0JJTyk7CisgICAgICAgIENSWVBUT19hZGQoJm91dGJpby0+YmlvLT5yZWZlcmVuY2VzLCAxLCBDUllQVE9fTE9DS19CSU8pOworICAgICAgICBTU0xfc2V0X2JpbyhzZWxmLT5zc2wsIGluYmlvLT5iaW8sIG91dGJpby0+YmlvKTsKKyAgICB9CiAgICAgbW9kZSA9IFNTTF9NT0RFX0FDQ0VQVF9NT1ZJTkdfV1JJVEVfQlVGRkVSOwogI2lmZGVmIFNTTF9NT0RFX0FVVE9fUkVUUlkKICAgICBtb2RlIHw9IFNTTF9NT0RFX0FVVE9fUkVUUlk7CkBAIC01MjAsNyArNTQzLDcgQEAKICAgICAvKiBJZiB0aGUgc29ja2V0IGlzIGluIG5vbi1ibG9ja2luZyBtb2RlIG9yIHRpbWVvdXQgbW9kZSwgc2V0IHRoZSBCSU8KICAgICAgKiB0byBub24tYmxvY2tpbmcgbW9kZSAoYmxvY2tpbmcgaXMgdGhlIGRlZmF1bHQpCiAgICAgICovCi0gICAgaWYgKHNvY2stPnNvY2tfdGltZW91dCA+PSAwLjApIHsKKyAgICBpZiAoc29jayAmJiBzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCkgewogICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIDEpOwogICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIDEpOwogICAgIH0KQEAgLTUzMywzNSArNTU2LDUyIEBACiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIHNlbGYtPnNvY2tldF90eXBlID0gc29ja2V0X3R5cGU7Ci0gICAgc2VsZi0+U29ja2V0ID0gUHlXZWFrcmVmX05ld1JlZigoUHlPYmplY3QgKikgc29jaywgTlVMTCk7Ci0gICAgaWYgKHNlbGYtPlNvY2tldCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5Tb2NrZXQgPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKSBzb2NrLCBOVUxMKTsKKyAgICAgICAgaWYgKHNlbGYtPlNvY2tldCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICBQeV9YREVDUkVGKHNlbGYtPnNlcnZlcl9ob3N0bmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAogLyogU1NMIG9iamVjdCBtZXRob2RzICovCiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMZG9faGFuZHNoYWtlKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LmRvX2hhbmRzaGFrZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjMDg5OGE4OTM2NTQ4ZjYgaW5wdXQ9ZDJkNzM3ZGUzZGYwMThjOF0qLwogewogICAgIGludCByZXQ7CiAgICAgaW50IGVycjsKICAgICBpbnQgc29ja3N0YXRlLCBub25ibG9ja2luZzsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sKLSAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KHNlbGYtPlNvY2tldCk7CisgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrID0gR0VUX1NPQ0tFVChzZWxmKTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgZGVhZGxpbmUgPSAwOworICAgIGludCBoYXNfdGltZW91dDsKIAotICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKLSAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9OT19TT0NLRVQsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrKSB7CisgICAgICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKKworICAgICAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwogCi0gICAgLyoganVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KLSAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIC8qIEFjdHVhbGx5IG5lZ290aWF0ZSBTU0wgY29ubmVjdGlvbiAqLwogICAgIC8qIFhYWCBJZiBTU0xfZG9faGFuZHNoYWtlKCkgcmV0dXJucyAwLCBpdCdzIGFsc28gYSBmYWlsdXJlLiAqLwpAQCAtNTcwLDE1ICs2MTAsMjEgQEAKICAgICAgICAgcmV0ID0gU1NMX2RvX2hhbmRzaGFrZShzZWxmLT5zc2wpOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgcmV0KTsKICAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKwogICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAwKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAwLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlJTVFIoIlRoZSBoYW5kc2hha2Ugb3BlcmF0aW9uIHRpbWVkIG91dCIpKTsKQEAgLTU5NSw3ICs2NDEsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCB8fCBlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpOwotICAgIFB5X0RFQ1JFRihzb2NrKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIGlmIChyZXQgPCAxKQogICAgICAgICByZXR1cm4gUHlTU0xfU2V0RXJyb3Ioc2VsZiwgcmV0LCBfX0ZJTEVfXywgX19MSU5FX18pOwogCkBAIC02MTAsNyArNjU2LDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKHNvY2spOworICAgIFB5X1hERUNSRUYoc29jayk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTc3OSwxMiArODI1LDcgQEAKICAgICBjaGFyIGJ1ZlsyMDQ4XTsKICAgICBjaGFyICp2cHRyOwogICAgIGludCBsZW47Ci0gICAgLyogSXNzdWUgIzI5NzM6IEFTTjFfaXRlbV9kMmkoKSBBUEkgY2hhbmdlZCBpbiBPcGVuU1NMIDAuOS42bSAqLwotI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNjBkZkwKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwOwotI2Vsc2UKLSAgICB1bnNpZ25lZCBjaGFyICpwOwotI2VuZGlmCiAKICAgICBpZiAoY2VydGlmaWNhdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIHBlZXJfYWx0X25hbWVzOwpAQCAtMTI3NCwyNSArMTMxNSwyOCBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF90ZXN0X2RlY29kZV9jZXJ0aWZpY2F0ZSAoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKmFyZ3MpIHsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX3Rlc3RfZGVjb2RlX2NlcnQKKyAgICBwYXRoOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNDb252ZXJ0ZXIiKQorICAgIC8KIAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fdGVzdF9kZWNvZGVfY2VydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY3OWUwMWRiMjgyODA0ZTkgaW5wdXQ9Y2RlYWFmMDJkNDM0NjYyOF0qLworewogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBYNTA5ICp4PU5VTEw7CiAgICAgQklPICpjZXJ0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp0ZXN0X2RlY29kZV9jZXJ0aWZpY2F0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmZpbGVuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoKGNlcnQ9QklPX25ldyhCSU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IG1hbGxvYyBtZW1vcnkgdG8gcmVhZCBmaWxlIik7CiAgICAgICAgIGdvdG8gZmFpbDA7CiAgICAgfQogCi0gICAgaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGNlcnQsIFB5Qnl0ZXNfQXNTdHJpbmcoZmlsZW5hbWUpKSA8PSAwKSB7CisgICAgaWYgKEJJT19yZWFkX2ZpbGVuYW1lKGNlcnQsIFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCkpIDw9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3Qgb3BlbiBmaWxlIik7CiAgICAgICAgIGdvdG8gZmFpbDA7CkBAIC0xMzA5LDIwICsxMzUzLDMzIEBACiAgICAgWDUwOV9mcmVlKHgpOwogCiAgIGZhaWwwOgotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChjZXJ0ICE9IE5VTEwpIEJJT19mcmVlKGNlcnQpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnBlZXJfY2VydGlmaWNhdGUKKyAgICBkZXIgYXMgYmluYXJ5X21vZGU6IGJvb2wgPSBGYWxzZQorICAgIC8KKworUmV0dXJucyB0aGUgY2VydGlmaWNhdGUgZm9yIHRoZSBwZWVyLgorCitJZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzCitwcm92aWRlZCwgYnV0IG5vdCB2YWxpZGF0ZWQsIHJldHVybnMgYW4gZW1wdHkgZGljdGlvbmFyeS4gIE90aGVyd2lzZQorcmV0dXJucyBhIGRpY3QgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGVlciBjZXJ0aWZpY2F0ZS4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGlzIFRydWUsIHJldHVybnMgYSBERVItZW5jb2RlZCBjb3B5IG9mIHRoZQorcGVlciBjZXJ0aWZpY2F0ZSwgb3IgTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQuICBUaGlzIHdpbGwKK3JldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuJ3QgdmFsaWRhdGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfcGVlcmNlcnQoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGJpbmFyeV9tb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwZGMzZTRkMWQ4MThhMWQgaW5wdXQ9ODI4MWJkMWQxOTNkYjg0M10qLwogewogICAgIGludCB2ZXJpZmljYXRpb247Ci0gICAgaW50IGJpbmFyeV9tb2RlID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6cGVlcl9jZXJ0aWZpY2F0ZSIsICZiaW5hcnlfbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFzZWxmLT5oYW5kc2hha2VfZG9uZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTEzNDQsNjggKzE0MDEsMTIzIEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfcGVlcmNlcnRfZG9jLAotInBlZXJfY2VydGlmaWNhdGUoW2Rlcj1GYWxzZV0pIC0+IGNlcnRpZmljYXRlXG5cCi1cblwKLVJldHVybnMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgcGVlci4gIElmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZCxcblwKLXJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkLCBidXQgbm90IHZhbGlkYXRlZCwgcmV0dXJuc1xuXAotYW4gZW1wdHkgZGljdGlvbmFyeS4gIE90aGVyd2lzZSByZXR1cm5zIGEgZGljdCBjb250YWluaW5nIGluZm9ybWF0aW9uXG5cCi1hYm91dCB0aGUgcGVlciBjZXJ0aWZpY2F0ZS5cblwKLVxuXAotSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGlzIFRydWUsIHJldHVybnMgYSBERVItZW5jb2RlZCBjb3B5IG9mIHRoZVxuXAotcGVlciBjZXJ0aWZpY2F0ZSwgb3IgTm9uZSBpZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQuICBUaGlzIHdpbGxcblwKLXJldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuJ3QgdmFsaWRhdGVkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NpcGhlciAoUHlTU0xTb2NrZXQgKnNlbGYpIHsKLQotICAgIFB5T2JqZWN0ICpyZXR2YWwsICp2OwotICAgIGNvbnN0IFNTTF9DSVBIRVIgKmN1cnJlbnQ7Ci0gICAgY2hhciAqY2lwaGVyX25hbWU7Ci0gICAgY2hhciAqY2lwaGVyX3Byb3RvY29sOwotCi0gICAgaWYgKHNlbGYtPnNzbCA9PSBOVUxMKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICBjdXJyZW50ID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzZWxmLT5zc2wpOwotICAgIGlmIChjdXJyZW50ID09IE5VTEwpCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotCi0gICAgcmV0dmFsID0gUHlUdXBsZV9OZXcoMyk7CitzdGF0aWMgUHlPYmplY3QgKgorY2lwaGVyX3RvX3R1cGxlKGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcikKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZSwgKmNpcGhlcl9wcm90b2NvbDsKKyAgICBQeU9iamVjdCAqdiwgKnJldHZhbCA9IFB5VHVwbGVfTmV3KDMpOwogICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjaXBoZXJfbmFtZSA9IChjaGFyICopIFNTTF9DSVBIRVJfZ2V0X25hbWUoY3VycmVudCk7CisgICAgY2lwaGVyX25hbWUgPSBTU0xfQ0lQSEVSX2dldF9uYW1lKGNpcGhlcik7CiAgICAgaWYgKGNpcGhlcl9uYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMCwgUHlfTm9uZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNpcGhlcl9uYW1lKTsKICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDA7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAwLCB2KTsKICAgICB9Ci0gICAgY2lwaGVyX3Byb3RvY29sID0gKGNoYXIgKikgU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjdXJyZW50KTsKKworICAgIGNpcGhlcl9wcm90b2NvbCA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY2lwaGVyKTsKICAgICBpZiAoY2lwaGVyX3Byb3RvY29sID09IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMSwgUHlfTm9uZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGNpcGhlcl9wcm90b2NvbCk7CiAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWwwOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJldHZhbCwgMSwgdik7CiAgICAgfQotICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoU1NMX0NJUEhFUl9nZXRfYml0cyhjdXJyZW50LCBOVUxMKSk7CisKKyAgICB2ID0gUHlMb25nX0Zyb21Mb25nKFNTTF9DSVBIRVJfZ2V0X2JpdHMoY2lwaGVyLCBOVUxMKSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsMDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0dmFsLCAyLCB2KTsKKwogICAgIHJldHVybiByZXR2YWw7CiAKLSAgZmFpbDA6CisgIGZhaWw6CiAgICAgUHlfREVDUkVGKHJldHZhbCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5zaGFyZWRfY2lwaGVycworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2QxNzRlYWQyZTQyYzRmZCBpbnB1dD0wYmZlMTQ5ZGE4ZmU2MzA2XSovCit7CisgICAgU1NMX1NFU1NJT04gKnNlc3MgPSBTU0xfZ2V0X3Nlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqY2lwaGVyczsKKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKCFzZXNzIHx8ICFzZXNzLT5jaXBoZXJzKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICBjaXBoZXJzID0gc2Vzcy0+Y2lwaGVyczsKKyAgICByZXMgPSBQeUxpc3RfTmV3KHNrX1NTTF9DSVBIRVJfbnVtKGNpcGhlcnMpKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IHNrX1NTTF9DSVBIRVJfbnVtKGNpcGhlcnMpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnR1cCA9IGNpcGhlcl90b190dXBsZShza19TU0xfQ0lQSEVSX3ZhbHVlKGNpcGhlcnMsIGkpKTsKKyAgICAgICAgaWYgKCF0dXApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlcywgaSwgdHVwKTsKKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LmNpcGhlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2NpcGhlcl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3NjQxN2MxNmQwZTU4MTUgaW5wdXQ9NTQ4ZmIwZTI3MjQzNzk2ZF0qLworeworICAgIGNvbnN0IFNTTF9DSVBIRVIgKmN1cnJlbnQ7CisKKyAgICBpZiAoc2VsZi0+c3NsID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIGN1cnJlbnQgPSBTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNlbGYtPnNzbCk7CisgICAgaWYgKGN1cnJlbnQgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIGNpcGhlcl90b190dXBsZShjdXJyZW50KTsKK30KKworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnZlcnNpb24KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTc4YWVkMzMxOTNiMmNkYiBpbnB1dD05MDAxODZhNTAzNDM2ZmQ2XSovCit7CisgICAgY29uc3QgY2hhciAqdmVyc2lvbjsKKworICAgIGlmIChzZWxmLT5zc2wgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgdmVyc2lvbiA9IFNTTF9nZXRfdmVyc2lvbihzZWxmLT5zc2wpOworICAgIGlmICghc3RyY21wKHZlcnNpb24sICJ1bmtub3duIikpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyh2ZXJzaW9uKTsKK30KKwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sKFB5U1NMU29ja2V0ICpzZWxmKSB7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjkxZDQ5NGNkMjA3ZWNmNiBpbnB1dD1jMjhmZGUxMzkyMDRiODI2XSovCit7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb3V0OwogICAgIHVuc2lnbmVkIGludCBvdXRsZW47CiAKQEAgLTE0MTQsMTEgKzE1MjYsMzggQEAKIAogICAgIGlmIChvdXQgPT0gTlVMTCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKSBvdXQsIG91dGxlbik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKW91dCwgb3V0bGVuKTsKIH0KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX2NvbXByZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmKSB7CisjaWZkZWYgSEFWRV9BTFBOCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzMzNjg4YjMwM2QyNTBmIGlucHV0PTQ0MmRlMzBlMzViYzI5MTNdKi8KK3sKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQ7CisgICAgdW5zaWduZWQgaW50IG91dGxlbjsKKworICAgIFNTTF9nZXQwX2FscG5fc2VsZWN0ZWQoc2VsZi0+c3NsLCAmb3V0LCAmb3V0bGVuKTsKKworICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKW91dCwgb3V0bGVuKTsKK30KKyNlbmRpZgorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQuY29tcHJlc3Npb24KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJkMTZjYjFiYjQ2NDZhZTcgaW5wdXQ9NWQwNTlkMGEyYmJjMzJjOF0qLworewogI2lmZGVmIE9QRU5TU0xfTk9fQ09NUAogICAgIFB5X1JFVFVSTl9OT05FOwogI2Vsc2UKQEAgLTE0NzMsNiArMTYxMiw1NCBAQAogU1NMU29ja2V0IGJlZm9yZSB0aGUgY3J5cHRvZ3JhcGhpYyBleGNoYW5nZSBoYW5kc2hha2UgbWVzc2FnZXNcbiIpOwogCiAKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9nZXRfc2VydmVyX3NpZGUoUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmMpCit7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhzZWxmLT5zb2NrZXRfdHlwZSA9PSBQWV9TU0xfU0VSVkVSKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zZXJ2ZXJfc2lkZV9kb2MsCisiV2hldGhlciB0aGlzIGlzIGEgc2VydmVyLXNpZGUgc29ja2V0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZShQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqYykKK3sKKyAgICBpZiAoc2VsZi0+c2VydmVyX2hvc3RuYW1lID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIFB5X0lOQ1JFRihzZWxmLT5zZXJ2ZXJfaG9zdG5hbWUpOworICAgIHJldHVybiBzZWxmLT5zZXJ2ZXJfaG9zdG5hbWU7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfc2VydmVyX2hvc3RuYW1lX2RvYywKKyJUaGUgY3VycmVudGx5IHNldCBzZXJ2ZXIgaG9zdG5hbWUgKGZvciBTTkkpLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X293bmVyKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjKQoreworICAgIFB5T2JqZWN0ICpvd25lcjsKKworICAgIGlmIChzZWxmLT5vd25lciA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKworICAgIG93bmVyID0gUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5vd25lcik7CisgICAgUHlfSU5DUkVGKG93bmVyKTsKKyAgICByZXR1cm4gb3duZXI7Cit9CisKK3N0YXRpYyBpbnQKK1B5U1NMX3NldF9vd25lcihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjKQoreworICAgIFB5X1hERUNSRUYoc2VsZi0+b3duZXIpOworICAgIHNlbGYtPm93bmVyID0gUHlXZWFrcmVmX05ld1JlZih2YWx1ZSwgTlVMTCk7CisgICAgaWYgKHNlbGYtPm93bmVyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9vd25lcl9kb2MsCisiVGhlIFB5dGhvbi1sZXZlbCBvd25lciBvZiB0aGlzIG9iamVjdC5cCitQYXNzZWQgYXMgXCJzZWxmXCIgaW4gc2VydmVybmFtZSBjYWxsYmFjay4iKTsKKwogCiBzdGF0aWMgdm9pZCBQeVNTTF9kZWFsbG9jKFB5U1NMU29ja2V0ICpzZWxmKQogewpAQCAtMTQ4Miw2ICsxNjY5LDggQEAKICAgICAgICAgU1NMX2ZyZWUoc2VsZi0+c3NsKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPlNvY2tldCk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5jdHgpOworICAgIFB5X1hERUNSRUYoc2VsZi0+c2VydmVyX2hvc3RuYW1lKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPm93bmVyKTsKICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKQEAgLTE0OTEsMTcgKzE2ODAsMjcgQEAKICAqLwogCiBzdGF0aWMgaW50Ci1jaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZykKK1B5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCkKIHsKKyAgICBpbnQgcmM7CisjaWZkZWYgSEFWRV9QT0xMCisgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7CisgICAgX1B5VGltZV90IG1zOworI2Vsc2UKKyAgICBpbnQgbmZkczsKICAgICBmZF9zZXQgZmRzOwogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgIGludCByYzsKKyNlbmRpZgogCiAgICAgLyogTm90aGluZyB0byBkbyB1bmxlc3Mgd2UncmUgaW4gdGltZW91dCBtb2RlIChub3Qgbm9uLWJsb2NraW5nKSAqLwotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPCAwLjApCi0gICAgICAgIHJldHVybiBTT0NLRVRfSVNfQkxPQ0tJTkc7Ci0gICAgZWxzZSBpZiAocy0+c29ja190aW1lb3V0ID09IDAuMCkKKyAgICBpZiAoKHMgPT0gTlVMTCkgfHwgKHRpbWVvdXQgPT0gMCkpCiAgICAgICAgIHJldHVybiBTT0NLRVRfSVNfTk9OQkxPQ0tJTkc7CisgICAgZWxzZSBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDApCisgICAgICAgICAgICByZXR1cm4gU09DS0VUX0hBU19USU1FRF9PVVQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBTT0NLRVRfSVNfQkxPQ0tJTkc7CisgICAgfQogCiAgICAgLyogR3VhcmQgYWdhaW5zdCBjbG9zZWQgc29ja2V0ICovCiAgICAgaWYgKHMtPnNvY2tfZmQgPCAwKQpAQCAtMTUxMCw4NSArMTcwOSw5MSBAQAogICAgIC8qIFByZWZlciBwb2xsLCBpZiBhdmFpbGFibGUsIHNpbmNlIHlvdSBjYW4gcG9sbCgpIGFueSBmZAogICAgICAqIHdoaWNoIGNhbid0IGJlIGRvbmUgd2l0aCBzZWxlY3QoKS4gKi8KICNpZmRlZiBIQVZFX1BPTEwKLSAgICB7Ci0gICAgICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOwotICAgICAgICBpbnQgdGltZW91dDsKKyAgICBwb2xsZmQuZmQgPSBzLT5zb2NrX2ZkOworICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKIAotICAgICAgICBwb2xsZmQuZmQgPSBzLT5zb2NrX2ZkOwotICAgICAgICBwb2xsZmQuZXZlbnRzID0gd3JpdGluZyA/IFBPTExPVVQgOiBQT0xMSU47CisgICAgLyogdGltZW91dCBpcyBpbiBzZWNvbmRzLCBwb2xsKCkgdXNlcyBtaWxsaXNlY29uZHMgKi8KKyAgICBtcyA9IChpbnQpX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgIGFzc2VydChtcyA8PSBJTlRfTUFYKTsKIAotICAgICAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCkocy0+c29ja190aW1lb3V0ICogMTAwMCArIDAuNSk7Ci0gICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmMgPSBwb2xsKCZwb2xsZmQsIDEsIHRpbWVvdXQpOwotICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGdvdG8gbm9ybWFsX3JldHVybjsKLSAgICB9Ci0jZW5kaWYKLQorICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByYyA9IHBvbGwoJnBvbGxmZCwgMSwgKGludCltcyk7CisgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyNlbHNlCiAgICAgLyogR3VhcmQgYWdhaW5zdCBzb2NrZXQgdG9vIGxhcmdlIGZvciBzZWxlY3QqLwogICAgIGlmICghX1B5SXNTZWxlY3RhYmxlX2ZkKHMtPnNvY2tfZmQpKQogICAgICAgICByZXR1cm4gU09DS0VUX1RPT19MQVJHRV9GT1JfU0VMRUNUOwogCi0gICAgLyogQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgdG8gc2VsZWN0ICovCi0gICAgdHYudHZfc2VjID0gKGludClzLT5zb2NrX3RpbWVvdXQ7Ci0gICAgdHYudHZfdXNlYyA9IChpbnQpKChzLT5zb2NrX3RpbWVvdXQgLSB0di50dl9zZWMpICogMWU2KTsKKyAgICBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKHRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKwogICAgIEZEX1pFUk8oJmZkcyk7CiAgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHMpOwogCi0gICAgLyogU2VlIGlmIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KKyAgICAvKiBXYWl0IHVudGlsIHRoZSBzb2NrZXQgYmVjb21lcyByZWFkeSAqLwogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuZmRzID0gUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpOwogICAgIGlmICh3cml0aW5nKQotICAgICAgICByYyA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgIE5VTEwsICZmZHMsIE5VTEwsICZ0dik7CisgICAgICAgIHJjID0gc2VsZWN0KG5mZHMsIE5VTEwsICZmZHMsIE5VTEwsICZ0dik7CiAgICAgZWxzZQotICAgICAgICByYyA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CisgICAgICAgIHJjID0gc2VsZWN0KG5mZHMsICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLQotI2lmZGVmIEhBVkVfUE9MTAotbm9ybWFsX3JldHVybjoKICNlbmRpZgorCiAgICAgLyogUmV0dXJuIFNPQ0tFVF9USU1FRF9PVVQgb24gdGltZW91dCwgU09DS0VUX09QRVJBVElPTl9PSyBvdGhlcndpc2UKICAgICAgICAod2hlbiB3ZSBhcmUgYWJsZSB0byB3cml0ZSBvciB3aGVuIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIHJlYWQpICovCiAgICAgcmV0dXJuIHJjID09IDAgPyBTT0NLRVRfSEFTX1RJTUVEX09VVCA6IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqUHlTU0xfU1NMd3JpdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZXMgdGhlIGJ5dGVzLWxpa2Ugb2JqZWN0IGIgaW50byB0aGUgU1NMIG9iamVjdC4KKworUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfd3JpdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFhN2E2YmU1NTI3MzU4ZDggaW5wdXQ9NzcyNjJkOTk0ZmU1MTAwYV0qLwogewotICAgIFB5X2J1ZmZlciBidWY7CiAgICAgaW50IGxlbjsKICAgICBpbnQgc29ja3N0YXRlOwogICAgIGludCBlcnI7CiAgICAgaW50IG5vbmJsb2NraW5nOwotICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jawotICAgICAgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopIFB5V2Vha3JlZl9HZXRPYmplY3Qoc2VsZi0+U29ja2V0KTsKKyAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2sgPSBHRVRfU09DS0VUKHNlbGYpOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CisgICAgaW50IGhhc190aW1lb3V0OwogCi0gICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKLSAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAotICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihzb2NrKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGUiLCAmYnVmKSkgewotICAgICAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb2NrICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcigiVW5kZXJseWluZyBzb2NrZXQgY29ubmVjdGlvbiBnb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHNvY2spOwogICAgIH0KIAotICAgIGlmIChidWYubGVuID4gSU5UX01BWCkgeworICAgIGlmIChiLT5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgInN0cmluZyBsb25nZXIgdGhhbiAlZCBieXRlcyIsIElOVF9NQVgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCi0gICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB9CiAKLSAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7CisgICAgdGltZW91dCA9IEdFVF9TT0NLRVRfVElNRU9VVChzb2NrKTsKKyAgICBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisKKyAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CiAgICAgaWYgKHNvY2tzdGF0ZSA9PSBTT0NLRVRfSEFTX1RJTUVEX09VVCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgd3JpdGUgb3BlcmF0aW9uIHRpbWVkIG91dCIpOwpAQCAtMTYwMiwyMSArMTgwNywyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIlVuZGVybHlpbmcgc29ja2V0IHRvbyBsYXJnZSBmb3Igc2VsZWN0KCkuIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCiAgICAgZG8gewogICAgICAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGxlbiA9IFNTTF93cml0ZShzZWxmLT5zc2wsIGJ1Zi5idWYsIChpbnQpYnVmLmxlbik7CisgICAgICAgIGxlbiA9IFNTTF93cml0ZShzZWxmLT5zc2wsIGItPmJ1ZiwgKGludCliLT5sZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgbGVuKTsKICAgICAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisKKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQorCisgICAgICAgIGlmIChoYXNfdGltZW91dCkKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKwogICAgICAgICBpZiAoZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAwKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAwLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpIHsKLSAgICAgICAgICAgIHNvY2tzdGF0ZSA9IGNoZWNrX3NvY2tldF9hbmRfd2FpdF9mb3JfdGltZW91dChzb2NrLCAxKTsKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFNPQ0tFVF9PUEVSQVRJT05fT0s7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoc29ja3N0YXRlID09IFNPQ0tFVF9IQVNfVElNRURfT1VUKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTb2NrZXRNb2R1bGUudGltZW91dF9lcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHdyaXRlIG9wZXJhdGlvbiB0aW1lZCBvdXQiKTsKQEAgLTE2MzAsMjYgKzE4NDEsMjYgQEAKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEIHx8IGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSk7CiAKLSAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIGlmIChsZW4gPiAwKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGxlbik7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gUHlTU0xfU2V0RXJyb3Ioc2VsZiwgbGVuLCBfX0ZJTEVfXywgX19MSU5FX18pOwogCiBlcnJvcjoKLSAgICBQeV9ERUNSRUYoc29jayk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMd3JpdGVfZG9jLAotIndyaXRlKHMpIC0+IGxlblxuXAotXG5cCi1Xcml0ZXMgdGhlIHN0cmluZyBzIGludG8gdGhlIFNTTCBvYmplY3QuICBSZXR1cm5zIHRoZSBudW1iZXJcblwKLW9mIGJ5dGVzIHdyaXR0ZW4uIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQucGVuZGluZwogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHBlbmRpbmcoUHlTU0xTb2NrZXQgKnNlbGYpCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBkZWNyeXB0ZWQgYnl0ZXMgYXZhaWxhYmxlIGZvciByZWFkLCBwZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfaW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODNkOWZlY2RjMzA4YTgzIGlucHV0PTJiNzc0ODdkNmRmZDU5N2ZdKi8KIHsKICAgICBpbnQgY291bnQgPSAwOwogCkBAIC0xNjYyLDQ5ICsxODczLDUyIEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY291bnQpOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMcGVuZGluZ19kb2MsCi0icGVuZGluZygpIC0+IGNvdW50XG5cCi1cblwKLVJldHVybnMgdGhlIG51bWJlciBvZiBhbHJlYWR5IGRlY3J5cHRlZCBieXRlcyBhdmFpbGFibGUgZm9yIHJlYWQsXG5cCi1wZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xTb2NrZXQucmVhZAorICAgIHNpemUgYXMgbGVuOiBpbnQKKyAgICBbCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgXQorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9TU0xyZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1JlYWQgdXAgdG8gc2l6ZSBieXRlcyBmcm9tIHRoZSBTU0wgc29ja2V0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGxlbiwgaW50IGdyb3VwX3JpZ2h0XzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwMDk3Nzc2Y2VjMmEwYWYgaW5wdXQ9ZmYxNTdlYjkxOGQwOTA1Yl0qLwogewogICAgIFB5T2JqZWN0ICpkZXN0ID0gTlVMTDsKLSAgICBQeV9idWZmZXIgYnVmOwogICAgIGNoYXIgKm1lbTsKLSAgICBpbnQgbGVuLCBjb3VudDsKLSAgICBpbnQgYnVmX3Bhc3NlZCA9IDA7CisgICAgaW50IGNvdW50OwogICAgIGludCBzb2Nrc3RhdGU7CiAgICAgaW50IGVycjsKICAgICBpbnQgbm9uYmxvY2tpbmc7Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrCi0gICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5Tb2NrZXQpOworICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jayA9IEdFVF9TT0NLRVQoc2VsZik7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKKyAgICBpbnQgaGFzX3RpbWVvdXQ7CiAKLSAgICBpZiAoKChQeU9iamVjdCopc29jaykgPT0gUHlfTm9uZSkgewotICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCi0gICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfTk9fU09DS0VULCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc29jayAhPSBOVUxMKSB7CisgICAgICAgIGlmICgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwogCi0gICAgYnVmLm9iaiA9IE5VTEw7Ci0gICAgYnVmLmJ1ZiA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpfHcqOnJlYWQiLCAmbGVuLCAmYnVmKSkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmICgoYnVmLmJ1ZiA9PSBOVUxMKSAmJiAoYnVmLm9iaiA9PSBOVUxMKSkgeworICAgIGlmICghZ3JvdXBfcmlnaHRfMSkgewogICAgICAgICBkZXN0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOwogICAgICAgICBpZiAoZGVzdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgbWVtID0gUHlCeXRlc19BU19TVFJJTkcoZGVzdCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBidWZfcGFzc2VkID0gMTsKLSAgICAgICAgbWVtID0gYnVmLmJ1ZjsKLSAgICAgICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+IGJ1Zi5sZW4pIHsKLSAgICAgICAgICAgIGxlbiA9IChpbnQpIGJ1Zi5sZW47Ci0gICAgICAgICAgICBpZiAoYnVmLmxlbiAhPSBsZW4pIHsKKyAgICAgICAgbWVtID0gYnVmZmVyLT5idWY7CisgICAgICAgIGlmIChsZW4gPD0gMCB8fCBsZW4gPiBidWZmZXItPmxlbikgeworICAgICAgICAgICAgbGVuID0gKGludCkgYnVmZmVyLT5sZW47CisgICAgICAgICAgICBpZiAoYnVmZmVyLT5sZW4gIT0gbGVuKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXhpbXVtIGxlbmd0aCBjYW4ndCBmaXQgaW4gYSBDICdpbnQnIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE3MTIsMzEgKzE5MjYsNDMgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIGp1c3QgaW4gY2FzZSB0aGUgYmxvY2tpbmcgc3RhdGUgb2YgdGhlIHNvY2tldCBoYXMgYmVlbiBjaGFuZ2VkICovCi0gICAgbm9uYmxvY2tpbmcgPSAoc29jay0+c29ja190aW1lb3V0ID49IDAuMCk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfcmJpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7Ci0gICAgQklPX3NldF9uYmlvKFNTTF9nZXRfd2JpbyhzZWxmLT5zc2wpLCBub25ibG9ja2luZyk7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICAvKiBqdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB9CisKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIGRvIHsKICAgICAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBjb3VudCA9IFNTTF9yZWFkKHNlbGYtPnNzbCwgbWVtLCBsZW4pOwogICAgICAgICBlcnIgPSBTU0xfZ2V0X2Vycm9yKHNlbGYtPnNzbCwgY291bnQpOwogICAgICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChlcnIgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDApOworICAgICAgICAgICAgc29ja3N0YXRlID0gUHlTU0xfc2VsZWN0KHNvY2ssIDAsIHRpbWVvdXQpOwogICAgICAgICB9IGVsc2UgaWYgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSkgewotICAgICAgICAgICAgc29ja3N0YXRlID0gY2hlY2tfc29ja2V0X2FuZF93YWl0X2Zvcl90aW1lb3V0KHNvY2ssIDEpOwotICAgICAgICB9IGVsc2UgaWYgKChlcnIgPT0gU1NMX0VSUk9SX1pFUk9fUkVUVVJOKSAmJgotICAgICAgICAgICAgICAgICAgIChTU0xfZ2V0X3NodXRkb3duKHNlbGYtPnNzbCkgPT0KLSAgICAgICAgICAgICAgICAgICAgU1NMX1JFQ0VJVkVEX1NIVVRET1dOKSkKKyAgICAgICAgICAgIHNvY2tzdGF0ZSA9IFB5U1NMX3NlbGVjdChzb2NrLCAxLCB0aW1lb3V0KTsKKyAgICAgICAgfSBlbHNlIGlmIChlcnIgPT0gU1NMX0VSUk9SX1pFUk9fUkVUVVJOICYmCisgICAgICAgICAgICAgICAgICAgU1NMX2dldF9zaHV0ZG93bihzZWxmLT5zc2wpID09IFNTTF9SRUNFSVZFRF9TSFVURE9XTikKICAgICAgICAgewogICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc29ja3N0YXRlID0gU09DS0VUX09QRVJBVElPTl9PSzsKICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBTT0NLRVRfT1BFUkFUSU9OX09LOworCiAgICAgICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNvY2tldE1vZHVsZS50aW1lb3V0X2Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgcmVhZCBvcGVyYXRpb24gdGltZWQgb3V0Iik7CkBAIC0xNzQ1LDU1ICsxOTcxLDY2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGVyciA9PSBTU0xfRVJST1JfV0FOVF9SRUFEIHx8IGVyciA9PSBTU0xfRVJST1JfV0FOVF9XUklURSk7CisKICAgICBpZiAoY291bnQgPD0gMCkgewogICAgICAgICBQeVNTTF9TZXRFcnJvcihzZWxmLCBjb3VudCwgX19GSUxFX18sIF9fTElORV9fKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKIGRvbmU6Ci0gICAgUHlfREVDUkVGKHNvY2spOwotICAgIGlmICghYnVmX3Bhc3NlZCkgeworICAgIFB5X1hERUNSRUYoc29jayk7CisgICAgaWYgKCFncm91cF9yaWdodF8xKSB7CiAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmZGVzdCwgY291bnQpOwogICAgICAgICByZXR1cm4gZGVzdDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY291bnQpOwogICAgIH0KIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKHNvY2spOwotICAgIGlmICghYnVmX3Bhc3NlZCkKKyAgICBQeV9YREVDUkVGKHNvY2spOworICAgIGlmICghZ3JvdXBfcmlnaHRfMSkKICAgICAgICAgUHlfWERFQ1JFRihkZXN0KTsKLSAgICBlbHNlCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9TU0xyZWFkX2RvYywKLSJyZWFkKFtsZW5dKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCB1cCB0byBsZW4gYnl0ZXMgZnJvbSB0aGUgU1NMIHNvY2tldC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTFNvY2tldC5zaHV0ZG93bgogCi1zdGF0aWMgUHlPYmplY3QgKlB5U1NMX1NTTHNodXRkb3duKFB5U1NMU29ja2V0ICpzZWxmKQorRG9lcyB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZSB3aXRoIHRoZSByZW1vdGUgZW5kLgorCitSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25faW1wbChQeVNTTFNvY2tldCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYTFhYTdlZDlkMjVjYTQyIGlucHV0PWVkZTJjYzFhMmRkZjBlZTRdKi8KIHsKICAgICBpbnQgZXJyLCBzc2xfZXJyLCBzb2Nrc3RhdGUsIG5vbmJsb2NraW5nOwogICAgIGludCB6ZXJvcyA9IDA7Ci0gICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzb2NrCi0gICAgICA9IChQeVNvY2tldFNvY2tPYmplY3QgKikgUHlXZWFrcmVmX0dldE9iamVjdChzZWxmLT5Tb2NrZXQpOworICAgIFB5U29ja2V0U29ja09iamVjdCAqc29jayA9IEdFVF9TT0NLRVQoc2VsZik7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKKyAgICBpbnQgaGFzX3RpbWVvdXQ7CiAKLSAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KLSAgICBpZiAoKCgoUHlPYmplY3QqKXNvY2spID09IFB5X05vbmUpIHx8IChzb2NrLT5zb2NrX2ZkIDwgMCkpIHsKLSAgICAgICAgX3NldFNTTEVycm9yKCJVbmRlcmx5aW5nIHNvY2tldCBjb25uZWN0aW9uIGdvbmUiLAotICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvY2sgIT0gTlVMTCkgeworICAgICAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KKyAgICAgICAgaWYgKCgoKFB5T2JqZWN0Kilzb2NrKSA9PSBQeV9Ob25lKSB8fCAoc29jay0+c29ja19mZCA8IDApKSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoIlVuZGVybHlpbmcgc29ja2V0IGNvbm5lY3Rpb24gZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX05PX1NPQ0tFVCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzb2NrKTsKKworICAgICAgICAvKiBKdXN0IGluIGNhc2UgdGhlIGJsb2NraW5nIHN0YXRlIG9mIHRoZSBzb2NrZXQgaGFzIGJlZW4gY2hhbmdlZCAqLworICAgICAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMCk7CisgICAgICAgIEJJT19zZXRfbmJpbyhTU0xfZ2V0X3JiaW8oc2VsZi0+c3NsKSwgbm9uYmxvY2tpbmcpOworICAgICAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNvY2spOwogCi0gICAgLyogSnVzdCBpbiBjYXNlIHRoZSBibG9ja2luZyBzdGF0ZSBvZiB0aGUgc29ja2V0IGhhcyBiZWVuIGNoYW5nZWQgKi8KLSAgICBub25ibG9ja2luZyA9IChzb2NrLT5zb2NrX3RpbWVvdXQgPj0gMC4wKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF9yYmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKLSAgICBCSU9fc2V0X25iaW8oU1NMX2dldF93YmlvKHNlbGYtPnNzbCksIG5vbmJsb2NraW5nKTsKKyAgICB0aW1lb3V0ID0gR0VUX1NPQ0tFVF9USU1FT1VUKHNvY2spOworICAgIGhhc190aW1lb3V0ID0gKHRpbWVvdXQgPiAwKTsKKyAgICBpZiAoaGFzX3RpbWVvdXQpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTE4MDksNiArMjA0Niw3IEBACiAgICAgICAgICAgICBTU0xfc2V0X3JlYWRfYWhlYWQoc2VsZi0+c3NsLCAwKTsKICAgICAgICAgZXJyID0gU1NMX3NodXRkb3duKHNlbGYtPnNzbCk7CiAgICAgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCisKICAgICAgICAgLyogSWYgZXJyID09IDEsIGEgc2VjdXJlIHNodXRkb3duIHdpdGggU1NMX3NodXRkb3duKCkgaXMgY29tcGxldGUgKi8KICAgICAgICAgaWYgKGVyciA+IDApCiAgICAgICAgICAgICBicmVhazsKQEAgLTE4MjMsMTQgKzIwNjEsMTggQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIC8qIFBvc3NpYmx5IHJldHJ5IHNodXRkb3duIHVudGlsIHRpbWVvdXQgb3IgZmFpbHVyZSAqLwogICAgICAgICBzc2xfZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGVycik7CiAgICAgICAgIGlmIChzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpCi0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMCk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMCwgdGltZW91dCk7CiAgICAgICAgIGVsc2UgaWYgKHNzbF9lcnIgPT0gU1NMX0VSUk9SX1dBTlRfV1JJVEUpCi0gICAgICAgICAgICBzb2Nrc3RhdGUgPSBjaGVja19zb2NrZXRfYW5kX3dhaXRfZm9yX3RpbWVvdXQoc29jaywgMSk7CisgICAgICAgICAgICBzb2Nrc3RhdGUgPSBQeVNTTF9zZWxlY3Qoc29jaywgMSwgdGltZW91dCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGlmIChzb2Nrc3RhdGUgPT0gU09DS0VUX0hBU19USU1FRF9PVVQpIHsKICAgICAgICAgICAgIGlmIChzc2xfZXJyID09IFNTTF9FUlJPUl9XQU5UX1JFQUQpCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U29ja2V0TW9kdWxlLnRpbWVvdXRfZXJyb3IsCkBAIC0xODUxLDI3ICsyMDkzLDMxIEBACiAgICAgfQogCiAgICAgaWYgKGVyciA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHNvY2spOworICAgICAgICBQeV9YREVDUkVGKHNvY2spOwogICAgICAgICByZXR1cm4gUHlTU0xfU2V0RXJyb3Ioc2VsZiwgZXJyLCBfX0ZJTEVfXywgX19MSU5FX18pOwogICAgIH0KLSAgICBlbHNlCisgICAgaWYgKHNvY2spCiAgICAgICAgIC8qIEl0J3MgYWxyZWFkeSBJTkNSRUYnZWQgKi8KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzb2NrOworICAgIGVsc2UKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKIGVycm9yOgotICAgIFB5X0RFQ1JFRihzb2NrKTsKKyAgICBQeV9YREVDUkVGKHNvY2spOwogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfU1NMc2h1dGRvd25fZG9jLAotInNodXRkb3duKHMpIC0+IHNvY2tldFxuXAotXG5cCi1Eb2VzIHRoZSBTU0wgc2h1dGRvd24gaGFuZHNoYWtlIHdpdGggdGhlIHJlbW90ZSBlbmQsIGFuZCByZXR1cm5zXG5cCi10aGUgdW5kZXJseWluZyBzb2NrZXQgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMU29ja2V0LnRsc191bmlxdWVfY2IKIAotI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorUmV0dXJucyB0aGUgJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LgorCitJZiB0aGUgVExTIGhhbmRzaGFrZSBpcyBub3QgeWV0IGNvbXBsZXRlLCBOb25lIGlzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZikKK19zc2xfX1NTTFNvY2tldF90bHNfdW5pcXVlX2NiX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjNhODMyZDYwM2Y1ODZhZiBpbnB1dD00Mzk1MjVjN2IzZDhkMzRkXSovCiB7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgY2hhciBidWZbUHlTU0xfQ0JfTUFYTEVOXTsKQEAgLTE4OTUsNDIgKzIxNDEsMzIgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2MsCi0idGxzX3VuaXF1ZV9jYigpIC0+IGJ5dGVzXG5cCi1cblwKLVJldHVybnMgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgZGF0YSwgYXMgZGVmaW5lZCBieSBSRkMgNTkyOS5cblwKLVxuXAotSWYgdGhlIFRMUyBoYW5kc2hha2UgaXMgbm90IHlldCBjb21wbGV0ZSwgTm9uZSBpcyByZXR1cm5lZCIpOwotCi0jZW5kaWYgLyogSEFWRV9PUEVOU1NMX0ZJTklTSEVEICovCi0KIHN0YXRpYyBQeUdldFNldERlZiBzc2xfZ2V0c2V0bGlzdFtdID0gewogICAgIHsiY29udGV4dCIsIChnZXR0ZXIpIFB5U1NMX2dldF9jb250ZXh0LAogICAgICAgICAgICAgICAgIChzZXR0ZXIpIFB5U1NMX3NldF9jb250ZXh0LCBQeVNTTF9zZXRfY29udGV4dF9kb2N9LAorICAgIHsic2VydmVyX3NpZGUiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfc2VydmVyX3NpZGUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXJ2ZXJfc2lkZV9kb2N9LAorICAgIHsic2VydmVyX2hvc3RuYW1lIiwgKGdldHRlcikgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWVfZG9jfSwKKyAgICB7Im93bmVyIiwgKGdldHRlcikgUHlTU0xfZ2V0X293bmVyLCAoc2V0dGVyKSBQeVNTTF9zZXRfb3duZXIsCisgICAgICAgICAgICAgIFB5U1NMX2dldF9vd25lcl9kb2N9LAogICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIFB5U1NMTWV0aG9kc1tdID0gewotICAgIHsiZG9faGFuZHNoYWtlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTGRvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1N9LAotICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMd3JpdGUsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfU1NMd3JpdGVfZG9jfSwKLSAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMcmVhZCwgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9TU0xyZWFkX2RvY30sCi0gICAgeyJwZW5kaW5nIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHBlbmRpbmcsIE1FVEhfTk9BUkdTLAotICAgICBQeVNTTF9TU0xwZW5kaW5nX2RvY30sCi0gICAgeyJwZWVyX2NlcnRpZmljYXRlIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3BlZXJjZXJ0LCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX3BlZXJjZXJ0X2RvY30sCi0gICAgeyJjaXBoZXIiLCAoUHlDRnVuY3Rpb24pUHlTU0xfY2lwaGVyLCBNRVRIX05PQVJHU30sCi0jaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotICAgIHsic2VsZWN0ZWRfbnBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3NlbGVjdGVkX25wbl9wcm90b2NvbCwgTUVUSF9OT0FSR1N9LAotI2VuZGlmCi0gICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilQeVNTTF9jb21wcmVzc2lvbiwgTUVUSF9OT0FSR1N9LAotICAgIHsic2h1dGRvd24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfU1NMc2h1dGRvd24sIE1FVEhfTk9BUkdTLAotICAgICBQeVNTTF9TU0xzaHV0ZG93bl9kb2N9LAotI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAotICAgIHsidGxzX3VuaXF1ZV9jYiIsIChQeUNGdW5jdGlvbilQeVNTTF90bHNfdW5pcXVlX2NiLCBNRVRIX05PQVJHUywKLSAgICAgUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2N9LAotI2VuZGlmCisgICAgX1NTTF9fU1NMU09DS0VUX0RPX0hBTkRTSEFLRV9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfV1JJVEVfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1JFQURfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1BFTkRJTkdfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1BFRVJfQ0VSVElGSUNBVEVfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX0NJUEhFUl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfU0hBUkVEX0NJUEhFUlNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1ZFUlNJT05fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xTT0NLRVRfQ09NUFJFU1NJT05fTUVUSE9EREVGCisgICAgX1NTTF9fU1NMU09DS0VUX1NIVVRET1dOX01FVEhPRERFRgorICAgIF9TU0xfX1NTTFNPQ0tFVF9UTFNfVU5JUVVFX0NCX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMTk3MywyMCArMjIwOSwyMSBAQAogICogX1NTTENvbnRleHQgb2JqZWN0cwogICovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX3NzbC5fU1NMQ29udGV4dC5fX25ld19fCisgICAgcHJvdG9jb2wgYXMgcHJvdG9fdmVyc2lvbjogaW50CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotY29udGV4dF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgcHJvdG9fdmVyc2lvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yY2YwZDdhMDc0MWI2YmQxIGlucHV0PThkNThhODA1Yjk1ZmM1MzRdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsicHJvdG9jb2wiLCBOVUxMfTsKICAgICBQeVNTTENvbnRleHQgKnNlbGY7Ci0gICAgaW50IHByb3RvX3ZlcnNpb24gPSBQWV9TU0xfVkVSU0lPTl9TU0wyMzsKICAgICBsb25nIG9wdGlvbnM7CiAgICAgU1NMX0NUWCAqY3R4ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAotICAgICAgICBhcmdzLCBrd2RzLCAiaTpfU1NMQ29udGV4dCIsIGt3bGlzdCwKLSAgICAgICAgJnByb3RvX3ZlcnNpb24pKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMxKQogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFN2MV9tZXRob2QoKSk7CkBAIC0yMDMxLDYgKzIyNjgsOSBAQAogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKICAgICBzZWxmLT5ucG5fcHJvdG9jb2xzID0gTlVMTDsKICNlbmRpZgorI2lmZGVmIEhBVkVfQUxQTgorICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzID0gTlVMTDsKKyNlbmRpZgogI2lmbmRlZiBPUEVOU1NMX05PX1RMU0VYVAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKQEAgLTIwOTksMjAgKzIzMzksMjUgQEAKICAgICBjb250ZXh0X2NsZWFyKHNlbGYpOwogICAgIFNTTF9DVFhfZnJlZShzZWxmLT5jdHgpOwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKLSAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworICAgIFB5TWVtX0ZSRUUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0FMUE4KKyAgICBQeU1lbV9GUkVFKHNlbGYtPmFscG5fcHJvdG9jb2xzKTsKICNlbmRpZgogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1zZXRfY2lwaGVycyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCByZXQ7Ci0gICAgY29uc3QgY2hhciAqY2lwaGVybGlzdDsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuc2V0X2NpcGhlcnMKKyAgICBjaXBoZXJsaXN0OiBzdHIKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KHNlbGYtPmN0eCwgY2lwaGVybGlzdCk7CitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgY29uc3QgY2hhciAqY2lwaGVybGlzdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYTMxNjJmMzU1N2MwZjNmIGlucHV0PWE3YWM5MzFiOWYzY2E3ZmNdKi8KK3sKKyAgICBpbnQgcmV0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Qoc2VsZi0+Y3R4LCBjaXBoZXJsaXN0KTsKICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgLyogQ2xlYXJpbmcgdGhlIGVycm9yIHF1ZXVlIGlzIG5lY2Vzc2FyeSBvbiBzb21lIE9wZW5TU0wgdmVyc2lvbnMsCiAgICAgICAgICAgIG90aGVyd2lzZSB0aGUgZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhZ2FpbiB3aGVuIGFub3RoZXIgU1NMIGNhbGwKQEAgLTIxMjYsNiArMjM3MSwzMCBAQAogfQogCiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorc3RhdGljIGludAorZG9fcHJvdG9jb2xfc2VsZWN0aW9uKGludCBhbHBuLCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2VydmVyX3Byb3RvY29scywgdW5zaWduZWQgaW50IHNlcnZlcl9wcm90b2NvbHNfbGVuLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNsaWVudF9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBjbGllbnRfcHJvdG9jb2xzX2xlbikKK3sKKyAgICBpbnQgcmV0OworICAgIGlmIChjbGllbnRfcHJvdG9jb2xzID09IE5VTEwpIHsKKyAgICAgICAgY2xpZW50X3Byb3RvY29scyA9ICh1bnNpZ25lZCBjaGFyICopIiI7CisgICAgICAgIGNsaWVudF9wcm90b2NvbHNfbGVuID0gMDsKKyAgICB9CisgICAgaWYgKHNlcnZlcl9wcm90b2NvbHMgPT0gTlVMTCkgeworICAgICAgICBzZXJ2ZXJfcHJvdG9jb2xzID0gKHVuc2lnbmVkIGNoYXIgKikiIjsKKyAgICAgICAgc2VydmVyX3Byb3RvY29sc19sZW4gPSAwOworICAgIH0KKworICAgIHJldCA9IFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3Byb3RvY29scywgc2VydmVyX3Byb3RvY29sc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcm90b2NvbHMsIGNsaWVudF9wcm90b2NvbHNfbGVuKTsKKyAgICBpZiAoYWxwbiAmJiByZXQgIT0gT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkKKyAgICAgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX05PQUNLOworCisgICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworfQorCiAvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZV9jYiAqLwogc3RhdGljIGludAogX2FkdmVydGlzZU5QTl9jYihTU0wgKnMsCkBAIC0yMTM1LDEwICsyNDA0LDEwIEBACiAgICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOwogCiAgICAgaWYgKHNzbF9jdHgtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgewotICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopICIiOworICAgICAgICAqZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIiI7CiAgICAgICAgICpsZW4gPSAwOwogICAgIH0gZWxzZSB7Ci0gICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICAgICAgKmRhdGEgPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzOwogICAgICAgICAqbGVuID0gc3NsX2N0eC0+bnBuX3Byb3RvY29sc19sZW47CiAgICAgfQogCkBAIC0yMTUxLDQ2ICsyNDIwLDMwIEBACiAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlciwgdW5zaWduZWQgaW50IHNlcnZlcl9sZW4sCiAgICAgICAgICAgICAgIHZvaWQgKmFyZ3MpCiB7Ci0gICAgUHlTU0xDb250ZXh0ICpzc2xfY3R4ID0gKFB5U1NMQ29udGV4dCAqKSBhcmdzOwotCi0gICAgdW5zaWduZWQgY2hhciAqY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKLSAgICBpbnQgY2xpZW50X2xlbjsKLQotICAgIGlmIChjbGllbnQgPT0gTlVMTCkgewotICAgICAgICBjbGllbnQgPSAodW5zaWduZWQgY2hhciAqKSAiIjsKLSAgICAgICAgY2xpZW50X2xlbiA9IDA7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2xpZW50X2xlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOwotICAgIH0KLQotICAgIFNTTF9zZWxlY3RfbmV4dF9wcm90byhvdXQsIG91dGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyLCBzZXJ2ZXJfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIGNsaWVudF9sZW4pOwotCi0gICAgcmV0dXJuIFNTTF9UTFNFWFRfRVJSX09LOworICAgIFB5U1NMQ29udGV4dCAqY3R4ID0gKFB5U1NMQ29udGV4dCAqKWFyZ3M7CisgICAgcmV0dXJuIGRvX3Byb3RvY29sX3NlbGVjdGlvbigwLCBvdXQsIG91dGxlbiwgc2VydmVyLCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5ucG5fcHJvdG9jb2xzLCBjdHgtPm5wbl9wcm90b2NvbHNfbGVuKTsKIH0KICNlbmRpZgogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll9zZXRfbnBuX3Byb3RvY29scworICAgIHByb3RvczogUHlfYnVmZmVyCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpwcm90b3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzJiMDAyYzMzMjQzOTBjNiBpbnB1dD0zMTlmY2I2NmFiZjk1YmQ3XSovCiB7CiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAotICAgIFB5X2J1ZmZlciBwcm90b3M7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgIT0gTlVMTCkgewotICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOwotICAgIH0KLQotICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBQeU1lbV9NYWxsb2MocHJvdG9zLmxlbik7Ci0gICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIFB5TWVtX0ZyZWUoc2VsZi0+bnBuX3Byb3RvY29scyk7CisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IFB5TWVtX01hbGxvYyhwcm90b3MtPmxlbik7CisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIG1lbWNweShzZWxmLT5ucG5fcHJvdG9jb2xzLCBwcm90b3MuYnVmLCBwcm90b3MubGVuKTsKLSAgICBzZWxmLT5ucG5fcHJvdG9jb2xzX2xlbiA9IChpbnQpIHByb3Rvcy5sZW47CisgICAgbWVtY3B5KHNlbGYtPm5wbl9wcm90b2NvbHMsIHByb3Rvcy0+YnVmLCBwcm90b3MtPmxlbik7CisgICAgc2VsZi0+bnBuX3Byb3RvY29sc19sZW4gPSAoaW50KSBwcm90b3MtPmxlbjsKIAogICAgIC8qIHNldCBib3RoIHNlcnZlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYmVjYXVzZSB0aGUgY29udGV4dCBjYW4KICAgICAgKiBiZSB1c2VkIHRvIGNyZWF0ZSBib3RoIHR5cGVzIG9mIHNvY2tldHMgKi8KQEAgLTIyMDEsNyArMjQ1NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGVjdE5QTl9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKIAotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAjZWxzZQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLApAQCAtMjIxMCw2ICsyNDYyLDUxIEBACiAjZW5kaWYKIH0KIAorI2lmZGVmIEhBVkVfQUxQTgorc3RhdGljIGludAorX3NlbGVjdEFMUE5fY2IoU1NMICpzLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCisgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNsaWVudF9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBjbGllbnRfcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKmN0eCA9IChQeVNTTENvbnRleHQgKilhcmdzOworICAgIHJldHVybiBkb19wcm90b2NvbF9zZWxlY3Rpb24oMSwgKHVuc2lnbmVkIGNoYXIgKiopb3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmFscG5fcHJvdG9jb2xzLCBjdHgtPmFscG5fcHJvdG9jb2xzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9wcm90b2NvbHMsIGNsaWVudF9wcm90b2NvbHNfbGVuKTsKK30KKyNlbmRpZgorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0Ll9zZXRfYWxwbl9wcm90b2NvbHMKKyAgICBwcm90b3M6IFB5X2J1ZmZlcgorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3NTk5YTdmNzY2NTFhOWIgaW5wdXQ9OWJiYTk2NDU5NWQ1MTliZV0qLworeworI2lmZGVmIEhBVkVfQUxQTgorICAgIFB5TWVtX0ZSRUUoc2VsZi0+YWxwbl9wcm90b2NvbHMpOworICAgIHNlbGYtPmFscG5fcHJvdG9jb2xzID0gUHlNZW1fTWFsbG9jKHByb3Rvcy0+bGVuKTsKKyAgICBpZiAoIXNlbGYtPmFscG5fcHJvdG9jb2xzKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1jcHkoc2VsZi0+YWxwbl9wcm90b2NvbHMsIHByb3Rvcy0+YnVmLCBwcm90b3MtPmxlbik7CisgICAgc2VsZi0+YWxwbl9wcm90b2NvbHNfbGVuID0gcHJvdG9zLT5sZW47CisKKyAgICBpZiAoU1NMX0NUWF9zZXRfYWxwbl9wcm90b3Moc2VsZi0+Y3R4LCBzZWxmLT5hbHBuX3Byb3RvY29scywgc2VsZi0+YWxwbl9wcm90b2NvbHNfbGVuKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2Ioc2VsZi0+Y3R4LCBfc2VsZWN0QUxQTl9jYiwgc2VsZik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKKyNlbHNlCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJUaGUgQUxQTiBleHRlbnNpb24gcmVxdWlyZXMgT3BlblNTTCAxLjAuMiBvciBsYXRlci4iKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgdm9pZCAqYykKIHsKQEAgLTIyNTMsNyArMjU1MCw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9mbGFncyhQeVNTTENvbnRleHQgKnNlbGYsIHZvaWQgKmMpCiB7CkBAIC0yMjkxLDcgKzI1ODcsNiBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X29wdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCB2b2lkICpjKQpAQCAtMjQ0OCwxMSArMjc0MywxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4KKyAgICBjZXJ0ZmlsZTogb2JqZWN0CisgICAga2V5ZmlsZTogb2JqZWN0ID0gTlVMTAorICAgIHBhc3N3b3JkOiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTQ4MGJjMWMzODBlMjA5NSBpbnB1dD03Y2Y5YWM2NzNjYmVlNmZjXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTCwgKnBhc3N3b3JkID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VydGZpbGVfYnl0ZXMgPSBOVUxMLCAqa2V5ZmlsZV9ieXRlcyA9IE5VTEw7CiAgICAgcGVtX3Bhc3N3b3JkX2NiICpvcmlnX3Bhc3N3ZF9jYiA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2s7CiAgICAgdm9pZCAqb3JpZ19wYXNzd2RfdXNlcmRhdGEgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrX3VzZXJkYXRhOwpAQCAtMjQ2MSwxMCArMjc2NCw2IEBACiAKICAgICBlcnJubyA9IDA7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgIk98T086bG9hZF9jZXJ0X2NoYWluIiwga3dsaXN0LAotICAgICAgICAmY2VydGZpbGUsICZrZXlmaWxlLCAmcGFzc3dvcmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoa2V5ZmlsZSA9PSBQeV9Ob25lKQogICAgICAgICBrZXlmaWxlID0gTlVMTDsKICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihjZXJ0ZmlsZSwgJmNlcnRmaWxlX2J5dGVzKSkgewpAQCAtMjYzMiwyMSArMjkzMSwyNiBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zCisgICAgY2FmaWxlOiBvYmplY3QgPSBOVUxMCisgICAgY2FwYXRoOiBvYmplY3QgPSBOVUxMCisgICAgY2FkYXRhOiBvYmplY3QgPSBOVUxMCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK19zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NGM3ZTQxMjMwY2E1NTEgaW5wdXQ9OTk3ZjFmYjNhNzg0ZWY4OF0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMLCAqY2FwYXRoID0gTlVMTCwgKmNhZGF0YSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNhZmlsZV9ieXRlcyA9IE5VTEwsICpjYXBhdGhfYnl0ZXMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmNhZmlsZV9idWYgPSBOVUxMLCAqY2FwYXRoX2J1ZiA9IE5VTEw7CiAgICAgaW50IHIgPSAwLCBvayA9IDE7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwga3dsaXN0LAotICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoY2FmaWxlID09IFB5X05vbmUpCiAgICAgICAgIGNhZmlsZSA9IE5VTEw7CiAgICAgaWYgKGNhcGF0aCA9PSBQeV9Ob25lKQpAQCAtMjc0MywxOCArMzA0NywyNCBAQAogICAgIH0KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcworICAgIHBhdGggYXMgZmlsZXBhdGg6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbG9hZF9kaF9wYXJhbXMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqZmlsZXBhdGgpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfZGhfcGFyYW1zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmZpbGVwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjOGU1N2EzOGUwNTVhZjAgaW5wdXQ9Yzg4NzFmM2M3OTZhZTFkNl0qLwogewogICAgIEZJTEUgKmY7CiAgICAgREggKmRoOwogCiAgICAgZiA9IF9QeV9mb3Blbl9vYmooZmlsZXBhdGgsICJyYiIpOwotICAgIGlmIChmID09IE5VTEwpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICBpZiAoZiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKICAgICBlcnJubyA9IDA7CiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRoID0gUEVNX3JlYWRfREhwYXJhbXMoZiwgTlVMTCwgTlVMTCwgTlVMTCk7CkBAIC0yNzc2LDM4ICszMDg2LDc2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuX3dyYXBfc29ja2V0CisgICAgc29jazogb2JqZWN0KHN1YmNsYXNzX29mPSJQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUiKQorICAgIHNlcnZlcl9zaWRlOiBpbnQKKyAgICBzZXJ2ZXJfaG9zdG5hbWUgYXMgaG9zdG5hbWVfb2JqOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWNvbnRleHRfd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTczZTRiNjA5OTVlOTMzIGlucHV0PTgzODU5YjkxNTZkZGZjNjNdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKLSAgICBQeVNvY2tldFNvY2tPYmplY3QgKnNvY2s7Ci0gICAgaW50IHNlcnZlcl9zaWRlID0gMDsKICAgICBjaGFyICpob3N0bmFtZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiwgKnJlczsKKyAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgLyogc2VydmVyX2hvc3RuYW1lIGlzIGVpdGhlciBOb25lIChvciBhYnNlbnQpLCBvciB0byBiZSBlbmNvZGVkCiAgICAgICAgdXNpbmcgdGhlIGlkbmEgZW5jb2RpbmcuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk8haXxPITpfd3JhcF9zb2NrZXQiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTb2NrZXRNb2R1bGUuU29ja19UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShQeV9Ob25lKSwgJmhvc3RuYW1lX29iaikpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk8haWV0Ol93cmFwX3NvY2tldCIsIGt3bGlzdCwKLSAgICAgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwKLSAgICAgICAgICAgICZzb2NrLCAmc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAiaWRuYSIsICZob3N0bmFtZSkpCisgICAgaWYgKGhvc3RuYW1lX29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoaG9zdG5hbWVfb2JqLCAiZXQiLCAiaWRuYSIsICZob3N0bmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgc29jaywgc2VydmVyX3NpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lKTsKKyAgICByZXMgPSAoUHlPYmplY3QgKikgbmV3UHlTU0xTb2NrZXQoc2VsZiwgKFB5U29ja2V0U29ja09iamVjdCAqKXNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlLCBob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiAgICAgaWYgKGhvc3RuYW1lICE9IE5VTEwpCiAgICAgICAgIFB5TWVtX0ZyZWUoaG9zdG5hbWUpOwogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuX3dyYXBfYmlvCisgICAgaW5jb21pbmc6IG9iamVjdChzdWJjbGFzc19vZj0iJlB5U1NMTWVtb3J5QklPX1R5cGUiLCB0eXBlPSJQeVNTTE1lbW9yeUJJTyAqIikKKyAgICBvdXRnb2luZzogb2JqZWN0KHN1YmNsYXNzX29mPSImUHlTU0xNZW1vcnlCSU9fVHlwZSIsIHR5cGU9IlB5U1NMTWVtb3J5QklPICoiKQorICAgIHNlcnZlcl9zaWRlOiBpbnQKKyAgICBzZXJ2ZXJfaG9zdG5hbWUgYXMgaG9zdG5hbWVfb2JqOiBvYmplY3QgPSBOb25lCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNlc3Npb25fc3RhdHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5U1NMTWVtb3J5QklPICppbmNvbWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xNZW1vcnlCSU8gKm91dGdvaW5nLCBpbnQgc2VydmVyX3NpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGZlNGJhNzVhZDk1OTQwZCBpbnB1dD0xNzcyNWVjZGFjMGJmMjIwXSovCit7CisgICAgY2hhciAqaG9zdG5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICAvKiBzZXJ2ZXJfaG9zdG5hbWUgaXMgZWl0aGVyIE5vbmUgKG9yIGFic2VudCksIG9yIHRvIGJlIGVuY29kZWQKKyAgICAgICB1c2luZyB0aGUgaWRuYSBlbmNvZGluZy4gKi8KKyAgICBpZiAoaG9zdG5hbWVfb2JqICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShob3N0bmFtZV9vYmosICJldCIsICJpZG5hIiwgJmhvc3RuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IChQeU9iamVjdCAqKSBuZXdQeVNTTFNvY2tldChzZWxmLCBOVUxMLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nLCBvdXRnb2luZyk7CisKKyAgICBQeU1lbV9GcmVlKGhvc3RuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNlc3Npb25fc3RhdHMKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2Vzc2lvbl9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZDk2NDExYzQyODkzYmZiIGlucHV0PTdlMGE4MWZiMTExMDJjOGJdKi8KIHsKICAgICBpbnQgcjsKICAgICBQeU9iamVjdCAqdmFsdWUsICpzdGF0cyA9IFB5RGljdF9OZXcoKTsKQEAgLTI4NDUsOCArMzE5MywxMyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiZWU3NGU2ZTA5ZGVhYWEgaW5wdXQ9MzVmMzQwODAyMTQ2M2Q3NF0qLwogewogICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoc2VsZi0+Y3R4KSkgewogICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKQEAgLTI4NTYsOCArMzIwOSwxNiBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZQorICAgIG5hbWU6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK19zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzAyMmMxOTZlNDBkN2QyIGlucHV0PWMyYmFmYjZmNmUzNDcyNmJdKi8KIHsKICAgICBQeU9iamVjdCAqbmFtZV9ieXRlczsKICAgICBpbnQgbmlkOwpAQCAtMjkxMiwxMSArMzI3MywyNSBAQAogCiAgICAgc3NsID0gU1NMX2dldF9hcHBfZGF0YShzKTsKICAgICBhc3NlcnQoUHlTU0xTb2NrZXRfQ2hlY2soc3NsKSk7Ci0gICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5Tb2NrZXQpOworCisgICAgLyogVGhlIHNlcnZlcm5hbWUgY2FsbGJhY2sgZXhwZWN0cyBhIGFyZ3VtZW50IHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudAorICAgICAqIFNTTCBjb25uZWN0aW9uIGFuZCB0aGF0IGhhcyBhIC5jb250ZXh0IGF0dHJpYnV0ZSB0aGF0IGNhbiBiZSBjaGFuZ2VkIHRvCisgICAgICogaWRlbnRpZnkgdGhlIHJlcXVlc3RlZCBob3N0bmFtZS4gU2luY2UgdGhlIG9mZmljaWFsIEFQSSBpcyB0aGUgUHl0aG9uCisgICAgICogbGV2ZWwgQVBJIHdlIHdhbnQgdG8gcGFzcyB0aGUgY2FsbGJhY2sgYSBQeXRob24gbGV2ZWwgb2JqZWN0IHJhdGhlciB0aGFuCisgICAgICogYSBfc3NsLlNTTFNvY2tldCBpbnN0YW5jZS4gSWYgdGhlcmUncyBhbiAib3duZXIiICh0eXBpY2FsbHkgYW4KKyAgICAgKiBTU0xPYmplY3QpIHRoYXQgd2lsbCBiZSBwYXNzZWQuIE90aGVyd2lzZSBpZiB0aGVyZSdzIGEgc29ja2V0IHRoZW4gdGhhdAorICAgICAqIHdpbGwgYmUgcGFzc2VkLiBJZiBib3RoIGRvIG5vdCBleGlzdCBvbmx5IHRoZW4gdGhlIEMtbGV2ZWwgb2JqZWN0IGlzCisgICAgICogcGFzc2VkLiAqLworICAgIGlmIChzc2wtPm93bmVyKQorICAgICAgICBzc2xfc29ja2V0ID0gUHlXZWFrcmVmX0dldE9iamVjdChzc2wtPm93bmVyKTsKKyAgICBlbHNlIGlmIChzc2wtPlNvY2tldCkKKyAgICAgICAgc3NsX3NvY2tldCA9IFB5V2Vha3JlZl9HZXRPYmplY3Qoc3NsLT5Tb2NrZXQpOworICAgIGVsc2UKKyAgICAgICAgc3NsX3NvY2tldCA9IChQeU9iamVjdCAqKSBzc2w7CisKICAgICBQeV9JTkNSRUYoc3NsX3NvY2tldCk7Ci0gICAgaWYgKHNzbF9zb2NrZXQgPT0gUHlfTm9uZSkgeworICAgIGlmIChzc2xfc29ja2V0ID09IFB5X05vbmUpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQogCiAgICAgaWYgKHNlcnZlcm5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNzbF9jdHgtPnNldF9ob3N0bmFtZSwgc3NsX3NvY2tldCwKQEAgLTI5NzcsMjUgKzMzNTIsMjMgQEAKIH0KICNlbmRpZgogCi1QeURvY19TVFJWQVIoUHlTU0xfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfZG9jLAotInNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKG1ldGhvZClcblwKLVxuXAotVGhpcyBzZXRzIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgc2VydmVyIG5hbWUgaXMgcHJvdmlkZWQgYnlcblwKLXRoZSBTU0wvVExTIGNsaWVudCBpbiB0aGUgU05JIGV4dGVuc2lvbi5cblwKLVxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkXG5cCi13aXRoIHRoZSBTU0xTb2NrZXQsIHRoZSBzZXJ2ZXIgbmFtZSBhcyBhIHN0cmluZywgYW5kIHRoZSBTU0xDb250ZXh0IG9iamVjdC5cblwKLVNlZSBSRkMgNjA2NiBmb3IgZGV0YWlscyBvZiB0aGUgU05JIGV4dGVuc2lvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2sKKyAgICBtZXRob2QgYXMgY2I6IG9iamVjdAorICAgIC8KKworU2V0IGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgc2VydmVyIG5hbWUgaXMgcHJvdmlkZWQgYnkgdGhlIFNTTC9UTFMgY2xpZW50IGluIHRoZSBTTkkgZXh0ZW5zaW9uLgorCitJZiB0aGUgYXJndW1lbnQgaXMgTm9uZSB0aGVuIHRoZSBjYWxsYmFjayBpcyBkaXNhYmxlZC4gVGhlIG1ldGhvZCBpcyBjYWxsZWQKK3dpdGggdGhlIFNTTFNvY2tldCwgdGhlIHNlcnZlciBuYW1lIGFzIGEgc3RyaW5nLCBhbmQgdGhlIFNTTENvbnRleHQgb2JqZWN0LgorU2VlIFJGQyA2MDY2IGZvciBkZXRhaWxzIG9mIHRoZSBTTkkgZXh0ZW5zaW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQzOWExYjJkNWQzYjdlYSBpbnB1dD1hMmE4MzYyMDE5N2Q2MDJiXSovCiB7CiAjaWYgSEFWRV9TTkkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFNFWFQpCi0gICAgUHlPYmplY3QgKmNiOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiwgJmNiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9DTEVBUihzZWxmLT5zZXRfaG9zdG5hbWUpOwogICAgIGlmIChjYiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFNTTF9DVFhfc2V0X3Rsc2V4dF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKHNlbGYtPmN0eCwgTlVMTCk7CkBAIC0zMDIyLDE3ICszMzk1LDIxIEBACiAjZW5kaWYKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zdGF0c19kb2MsCi0iY2VydF9zdG9yZV9zdGF0cygpIC0+IHsnY3JsJzogaW50LCAneDUwOV9jYSc6IGludCwgJ3g1MDknOiBpbnR9XG5cCi1cblwKLVJldHVybnMgcXVhbnRpdGllcyBvZiBsb2FkZWQgWC41MDkgY2VydGlmaWNhdGVzLiBYLjUwOSBjZXJ0aWZpY2F0ZXMgd2l0aCBhXG5cCi1DQSBleHRlbnNpb24gYW5kIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdHMgaW5zaWRlIHRoZSBjb250ZXh0J3MgY2VydFxuXAotc3RvcmUuXG5cCi1OT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuXAotYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmNlcnRfc3RvcmVfc3RhdHMKKworUmV0dXJucyBxdWFudGl0aWVzIG9mIGxvYWRlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMuCisKK1guNTA5IGNlcnRpZmljYXRlcyB3aXRoIGEgQ0EgZXh0ZW5zaW9uIGFuZCBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzCitpbnNpZGUgdGhlIGNvbnRleHQncyBjZXJ0IHN0b3JlLgorCitOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZQorYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jZXJ0X3N0b3JlX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZikKK19zc2xfX1NTTENvbnRleHRfY2VydF9zdG9yZV9zdGF0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZjM1NmY0ZDljY2E4NzRkIGlucHV0PWViNDBkZDBmNmQwZTQwY2ZdKi8KIHsKICAgICBYNTA5X1NUT1JFICpzdG9yZTsKICAgICBYNTA5X09CSkVDVCAqb2JqOwpAQCAtMzA2NSwyNyArMzQ0MiwyNiBAQAogICAgICAgICAieDUwOV9jYSIsIGNhKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9jYV9jZXJ0c19kb2MsCi0iZ2V0X2NhX2NlcnRzKGJpbmFyeV9mb3JtPUZhbHNlKSAtPiBsaXN0IG9mIGxvYWRlZCBjZXJ0aWZpY2F0ZVxuXAotXG5cCi1SZXR1cm5zIGEgbGlzdCBvZiBkaWN0cyB3aXRoIGluZm9ybWF0aW9uIG9mIGxvYWRlZCBDQSBjZXJ0cy4gSWYgdGhlXG5cCi1vcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0EgY2VydGlmaWNhdGUuXG5cCi1OT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZVxuXAotYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmdldF9jYV9jZXJ0cworICAgIGJpbmFyeV9mb3JtOiBib29sID0gRmFsc2UKKworUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0EKK2NlcnRpZmljYXRlLgorCitOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZQorYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgaW50IGJpbmFyeV9mb3JtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBkNThmMTQ4ZjM3ZTI5MzggaW5wdXQ9Njg4N2I1YTA5YjdmOTA3Nl0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJiaW5hcnlfZm9ybSIsIE5VTEx9OwogICAgIFg1MDlfU1RPUkUgKnN0b3JlOwogICAgIFB5T2JqZWN0ICpjaSA9IE5VTEwsICpybGlzdCA9IE5VTEw7CiAgICAgaW50IGk7Ci0gICAgaW50IGJpbmFyeV9tb2RlID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8cDpnZXRfY2FfY2VydHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmJpbmFyeV9tb2RlKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBpZiAoKHJsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMxMDYsNyArMzQ4Miw3IEBACiAgICAgICAgIGlmICghWDUwOV9jaGVja19jYShjZXJ0KSkgewogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGJpbmFyeV9tb2RlKSB7CisgICAgICAgIGlmIChiaW5hcnlfZm9ybSkgewogICAgICAgICAgICAgY2kgPSBfY2VydGlmaWNhdGVfdG9fZGVyKGNlcnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2kgPSBfZGVjb2RlX2NlcnRpZmljYXRlKGNlcnQpOwpAQCAtMzEzMyw0MiArMzUwOSwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfY2hlY2tfaG9zdG5hbWUsIE5VTEx9LAogICAgIHsib3B0aW9ucyIsIChnZXR0ZXIpIGdldF9vcHRpb25zLAogICAgICAgICAgICAgICAgIChzZXR0ZXIpIHNldF9vcHRpb25zLCBOVUxMfSwKLSNpZmRlZiBIQVZFX09QRU5TU0xfVkVSSUZZX1BBUkFNCiAgICAgeyJ2ZXJpZnlfZmxhZ3MiLCAoZ2V0dGVyKSBnZXRfdmVyaWZ5X2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgKHNldHRlcikgc2V0X3ZlcmlmeV9mbGFncywgTlVMTH0sCi0jZW5kaWYKICAgICB7InZlcmlmeV9tb2RlIiwgKGdldHRlcikgZ2V0X3ZlcmlmeV9tb2RlLAogICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKSBzZXRfdmVyaWZ5X21vZGUsIE5VTEx9LAogICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBjb250ZXh0X21ldGhvZHNbXSA9IHsKLSAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbikgY29udGV4dF93cmFwX3NvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJzZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbikgc2V0X2NpcGhlcnMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJfc2V0X25wbl9wcm90b2NvbHMiLCAoUHlDRnVuY3Rpb24pIF9zZXRfbnBuX3Byb3RvY29scywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pIGxvYWRfY2VydF9jaGFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAotICAgIHsibG9hZF9kaF9wYXJhbXMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfZGhfcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX3ZlcmlmeV9sb2NhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKLSAgICB7InNlc3Npb25fc3RhdHMiLCAoUHlDRnVuY3Rpb24pIHNlc3Npb25fc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHsic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCi0jaWZuZGVmIE9QRU5TU0xfTk9fRUNESAotICAgIHsic2V0X2VjZGhfY3VydmUiLCAoUHlDRnVuY3Rpb24pIHNldF9lY2RoX2N1cnZlLAotICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAotI2VuZGlmCi0gICAgeyJzZXRfc2VydmVybmFtZV9jYWxsYmFjayIsIChQeUNGdW5jdGlvbikgc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgUHlTU0xfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfZG9jfSwKLSAgICB7ImNlcnRfc3RvcmVfc3RhdHMiLCAoUHlDRnVuY3Rpb24pIGNlcnRfc3RvcmVfc3RhdHMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBQeVNTTF9nZXRfc3RhdHNfZG9jfSwKLSAgICB7ImdldF9jYV9jZXJ0cyIsIChQeUNGdW5jdGlvbikgZ2V0X2NhX2NlcnRzLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBQeVNTTF9nZXRfY2FfY2VydHNfZG9jfSwKKyAgICBfU1NMX19TU0xDT05URVhUX19XUkFQX1NPQ0tFVF9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX19XUkFQX0JJT19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9DSVBIRVJTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfX1NFVF9BTFBOX1BST1RPQ09MU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX19TRVRfTlBOX1BST1RPQ09MU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0xPQURfREhfUEFSQU1TX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9WRVJJRllfTE9DQVRJT05TX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfU0VTU0lPTl9TVEFUU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9DRVJUX1NUT1JFX1NUQVRTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTMyMTAsMjMgKzM1NzIsMjUyIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MqLwotICAgIGNvbnRleHRfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCisgICAgX3NzbF9fU1NMQ29udGV4dCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmV3Ki8KIH07CiAKIAorLyoKKyAqIE1lbW9yeUJJTyBvYmplY3RzCisgKi8KIAotI2lmZGVmIEhBVkVfT1BFTlNTTF9SQU5ECisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19zc2wuTWVtb3J5QklPLl9fbmV3X18KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9faW1wbChQeVR5cGVPYmplY3QgKnR5cGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODgyMGE1OGRiNzgzMzBhYyBpbnB1dD0yNmQyMmU0OTA5ZWNiMWI1XSovCit7CisgICAgQklPICpiaW87CisgICAgUHlTU0xNZW1vcnlCSU8gKnNlbGY7CisKKyAgICBiaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsKKyAgICBpZiAoYmlvID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGFsbG9jYXRlIEJJTyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogU2luY2Ugb3VyIEJJTyBpcyBub24tYmxvY2tpbmcgYW4gZW1wdHkgcmVhZCgpIGRvZXMgbm90IGluZGljYXRlIEVPRiwKKyAgICAgKiBqdXN0IHRoYXQgbm8gZGF0YSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLiBUaGUgU1NMIHJvdXRpbmVzIHNob3VsZCByZXRyeQorICAgICAqIHRoZSByZWFkLCB3aGljaCB3ZSBjYW4gYWNoaWV2ZSBieSBjYWxsaW5nIEJJT19zZXRfcmV0cnlfcmVhZCgpLiAqLworICAgIEJJT19zZXRfcmV0cnlfcmVhZChiaW8pOworICAgIEJJT19zZXRfbWVtX2VvZl9yZXR1cm4oYmlvLCAtMSk7CisKKyAgICBhc3NlcnQodHlwZSAhPSBOVUxMICYmIHR5cGUtPnRwX2FsbG9jICE9IE5VTEwpOworICAgIHNlbGYgPSAoUHlTU0xNZW1vcnlCSU8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBCSU9fZnJlZShiaW8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc2VsZi0+YmlvID0gYmlvOworICAgIHNlbGYtPmVvZl93cml0dGVuID0gMDsKKworICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKK30KKworc3RhdGljIHZvaWQKK21lbW9yeV9iaW9fZGVhbGxvYyhQeVNTTE1lbW9yeUJJTyAqc2VsZikKK3sKKyAgICBCSU9fZnJlZShzZWxmLT5iaW8pOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfYmlvX2dldF9wZW5kaW5nKFB5U1NMTWVtb3J5QklPICpzZWxmLCB2b2lkICpjKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoQklPX2N0cmxfcGVuZGluZyhzZWxmLT5iaW8pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX21lbW9yeV9iaW9fcGVuZGluZ19kb2MsCisiVGhlIG51bWJlciBvZiBieXRlcyBwZW5kaW5nIGluIHRoZSBtZW1vcnkgQklPLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Jpb19nZXRfZW9mKFB5U1NMTWVtb3J5QklPICpzZWxmLCB2b2lkICpjKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKEJJT19jdHJsX3BlbmRpbmcoc2VsZi0+YmlvKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgc2VsZi0+ZW9mX3dyaXR0ZW4pOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfbWVtb3J5X2Jpb19lb2ZfZG9jLAorIldoZXRoZXIgdGhlIG1lbW9yeSBCSU8gaXMgYXQgRU9GLiIpOworCisvKltjbGluaWMgaW5wdXRdCitfc3NsLk1lbW9yeUJJTy5yZWFkCisgICAgc2l6ZSBhcyBsZW46IGludCA9IC0xCisgICAgLworCitSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IEJJTy4KKworSWYgc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCByZWFkIHRoZSBlbnRpcmUgYnVmZmVyLgorSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlbXB0eSBieXRlcyBpbnN0YW5jZSwgdGhpcyBtZWFucyBlaXRoZXIKK0VPRiBvciB0aGF0IG5vIGRhdGEgaXMgYXZhaWxhYmxlLiBVc2UgdGhlICJlb2YiIHByb3BlcnR5IHRvCitkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIGludCBsZW4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY1N2FhMWU3OWNkMDFiMyBpbnB1dD01NzRkN2JlMDZhOTAyMzY2XSovCit7CisgICAgaW50IGF2YWlsLCBuYnl0ZXM7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGF2YWlsID0gQklPX2N0cmxfcGVuZGluZyhzZWxmLT5iaW8pOworICAgIGlmICgobGVuIDwgMCkgfHwgKGxlbiA+IGF2YWlsKSkKKyAgICAgICAgbGVuID0gYXZhaWw7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CisgICAgaWYgKChyZXN1bHQgPT0gTlVMTCkgfHwgKGxlbiA9PSAwKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKworICAgIG5ieXRlcyA9IEJJT19yZWFkKHNlbGYtPmJpbywgUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwgbGVuKTsKKyAgICAvKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgYW55IHNob3J0IHJlYWRzIGJ1dCBjaGVjayBhbnl3YXkuICovCisgICAgaWYgKChuYnl0ZXMgPCBsZW4pICYmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbGVuKSA8IDApKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLk1lbW9yeUJJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGVzIHRoZSBieXRlcyBiIGludG8gdGhlIG1lbW9yeSBCSU8uCisKK1JldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGVfaW1wbChQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE1NmVjNTkxMTBkNzU5MzUgaW5wdXQ9ZTQ1NzU3YjNlMTdjNDgwOF0qLworeworICAgIGludCBuYnl0ZXM7CisKKyAgICBpZiAoYi0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgbG9uZ2VyIHRoYW4gJWQgYnl0ZXMiLCBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNlbGYtPmVvZl93cml0dGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCB3cml0ZSgpIGFmdGVyIHdyaXRlX2VvZigpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5ieXRlcyA9IEJJT193cml0ZShzZWxmLT5iaW8sIGItPmJ1ZiwgYi0+bGVuKTsKKyAgICBpZiAobmJ5dGVzIDwgMCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhuYnl0ZXMpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfc3NsLk1lbW9yeUJJTy53cml0ZV9lb2YKKworV3JpdGUgYW4gRU9GIG1hcmtlciB0byB0aGUgbWVtb3J5IEJJTy4KKworV2hlbiBhbGwgZGF0YSBoYXMgYmVlbiByZWFkLCB0aGUgImVvZiIgcHJvcGVydHkgd2lsbCBiZSBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQxMDYyNzZjY2QxZWQzNCBpbnB1dD01NmE5NDVmMWQyOWU4YmQ2XSovCit7CisgICAgc2VsZi0+ZW9mX3dyaXR0ZW4gPSAxOworICAgIC8qIEFmdGVyIGFuIEVPRiBpcyB3cml0dGVuLCBhIHplcm8gcmV0dXJuIGZyb20gcmVhZCgpIHNob3VsZCBiZSBhIHJlYWwgRU9GCisgICAgICogaS5lLiBpdCBzaG91bGQgbm90IGJlIHJldHJpZWQuIENsZWFyIHRoZSBTSE9VTERfUkVUUlkgZmxhZy4gKi8KKyAgICBCSU9fY2xlYXJfcmV0cnlfZmxhZ3Moc2VsZi0+YmlvKTsKKyAgICBCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKHNlbGYtPmJpbywgMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIG1lbW9yeV9iaW9fZ2V0c2V0bGlzdFtdID0geworICAgIHsicGVuZGluZyIsIChnZXR0ZXIpIG1lbW9yeV9iaW9fZ2V0X3BlbmRpbmcsIE5VTEwsCisgICAgICAgICAgICAgICAgUHlTU0xfbWVtb3J5X2Jpb19wZW5kaW5nX2RvY30sCisgICAgeyJlb2YiLCAoZ2V0dGVyKSBtZW1vcnlfYmlvX2dldF9lb2YsIE5VTEwsCisgICAgICAgICAgICBQeVNTTF9tZW1vcnlfYmlvX2VvZl9kb2N9LAorICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtZW1vcnlfYmlvX21ldGhvZHNbXSA9IHsKKyAgICBfU1NMX01FTU9SWUJJT19SRUFEX01FVEhPRERFRgorICAgIF9TU0xfTUVNT1JZQklPX1dSSVRFX01FVEhPRERFRgorICAgIF9TU0xfTUVNT1JZQklPX1dSSVRFX0VPRl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9zc2wuTWVtb3J5QklPIiwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoUHlTU0xNZW1vcnlCSU8pLCAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvciltZW1vcnlfYmlvX2RlYWxsb2MsICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCisgICAgbWVtb3J5X2Jpb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCisgICAgbWVtb3J5X2Jpb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYWxsb2MqLworICAgIF9zc2xfTWVtb3J5QklPLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25ldyovCit9OworCiAKIC8qIGhlbHBlciByb3V0aW5lcyBmb3Igc2VlZGluZyB0aGUgU1NMIFBSTkcgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX2FkZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgbGVuLCB3cml0dGVuOwotICAgIGRvdWJsZSBlbnRyb3B5OworLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX2FkZAorICAgIHN0cmluZyBhcyB2aWV3OiBQeV9idWZmZXIoYWNjZXB0PXtzdHIsIGJ1ZmZlcn0pCisgICAgZW50cm9weTogZG91YmxlCisgICAgLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI2Q6UkFORF9hZGQiLCAmYnVmLCAmbGVuLCAmZW50cm9weSkpCi0gICAgICAgIHJldHVybiBOVUxMOworTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuCisKK2VudHJvcHkgKGEgZmxvYXQpIGlzIGEgbG93ZXIgYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluCitzdHJpbmcuICBTZWUgUkZDIDE3NTAuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICp2aWV3LCBkb3VibGUgZW50cm9weSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZjhkNWM4Y2NlMzI4OTU4IGlucHV0PTU4MGM4NWU2YTNhNGZlMjldKi8KK3sKKyAgICBjb25zdCBjaGFyICpidWY7CisgICAgUHlfc3NpemVfdCBsZW4sIHdyaXR0ZW47CisKKyAgICBidWYgPSAoY29uc3QgY2hhciAqKXZpZXctPmJ1ZjsKKyAgICBsZW4gPSB2aWV3LT5sZW47CiAgICAgZG8gewogICAgICAgICB3cml0dGVuID0gUHlfTUlOKGxlbiwgSU5UX01BWCk7CiAgICAgICAgIFJBTkRfYWRkKGJ1ZiwgKGludCl3cml0dGVuLCBlbnRyb3B5KTsKQEAgLTMyMzcsMTIgKzM4MjgsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfUkFORF9hZGRfZG9jLAotIlJBTkRfYWRkKHN0cmluZywgZW50cm9weSlcblwKLVxuXAotTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuICBlbnRyb3B5IChhIGZsb2F0KSBpcyBhIGxvd2VyXG5cCi1ib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4gc3RyaW5nLiAgU2VlIFJGQyAxNzUwLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogUHlTU0xfUkFORChpbnQgbGVuLCBpbnQgcHNldWRvKQogewpAQCAtMzI4Miw2MCArMzg2Nyw3MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfc3NsLlJBTkRfYnl0ZXMKKyAgICBuOiBpbnQKKyAgICAvCisKK0dlbmVyYXRlIG4gY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19zc2xfUkFORF9ieXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkODc0MWJkYzFkNDM1ZjMgaW5wdXQ9Njc4ZGRmMjg3MmRmZWJmY10qLwogewotICAgIGludCBsZW47Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOlJBTkRfYnl0ZXMiLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAwKTsKKyAgICByZXR1cm4gUHlTU0xfUkFORChuLCAwKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfYnl0ZXNfZG9jLAotIlJBTkRfYnl0ZXMobikgLT4gYnl0ZXNcblwKLVxuXAotR2VuZXJhdGUgbiBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBieXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuUkFORF9wc2V1ZG9fYnl0ZXMKKyAgICBuOiBpbnQKKyAgICAvCisKK0dlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy4KKworUmV0dXJuIGEgcGFpciAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpLiAgaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlCitpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX3BzZXVkb19ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGQ2NzM4MTMxMDdmMzg3NSBpbnB1dD01ODMxMmJkNTNmOWJiZGQwXSovCiB7Ci0gICAgaW50IGxlbjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAxKTsKKyAgICByZXR1cm4gUHlTU0xfUkFORChuLCAxKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvYywKLSJSQU5EX3BzZXVkb19ieXRlcyhuKSAtPiAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpXG5cCi1cblwKLUdlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy4gaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlIGlmIHRoZSBieXRlc1wKLWdlbmVyYXRlZCBhcmUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5SQU5EX3N0YXR1cworCitSZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuCisKK0l0IGlzIG5lY2Vzc2FyeSB0byBzZWVkIHRoZSBQUk5HIHdpdGggUkFORF9hZGQoKSBvbiBzb21lIHBsYXRmb3JtcyBiZWZvcmUKK3VzaW5nIHRoZSBzc2woKSBmdW5jdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX1JBTkRfc3RhdHVzKFB5T2JqZWN0ICpzZWxmKQorX3NzbF9SQU5EX3N0YXR1c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2Y3ZWY1N2JjN2RkMWQxYyBpbnB1dD04YTc3NGIwMmQxZGM4MWYzXSovCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhSQU5EX3N0YXR1cygpKTsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfc3RhdHVzX2RvYywKLSJSQU5EX3N0YXR1cygpIC0+IDAgb3IgMVxuXAotXG5cCi1SZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuXG5cCi1JdCBpcyBuZWNlc3NhcnkgdG8gc2VlZCB0aGUgUFJORyB3aXRoIFJBTkRfYWRkKCkgb24gc29tZSBwbGF0Zm9ybXMgYmVmb3JlXG5cCi11c2luZyB0aGUgc3NsKCkgZnVuY3Rpb24uIik7Ci0KICNpZmRlZiBIQVZFX1JBTkRfRUdECisvKltjbGluaWMgaW5wdXRdCitfc3NsLlJBTkRfZWdkCisgICAgcGF0aDogb2JqZWN0KGNvbnZlcnRlcj0iUHlVbmljb2RlX0ZTQ29udmVydGVyIikKKyAgICAvCisKK1F1ZXJpZXMgdGhlIGVudHJvcHkgZ2F0aGVyIGRhZW1vbiAoRUdEKSBvbiB0aGUgc29ja2V0IG5hbWVkIGJ5ICdwYXRoJy4KKworUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIFJhaXNlcyBTU0xFcnJvciBpZiBjb25uZWN0aW9uIHRvIEVHRAorZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9SQU5EX2VnZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfc3NsX1JBTkRfZWdkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGU3MjhlNTAxZTI4NTQxYiBpbnB1dD0xYWViN2ViOTQ4MzEyMTk1XSovCiB7Ci0gICAgUHlPYmplY3QgKnBhdGg7Ci0gICAgaW50IGJ5dGVzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpSQU5EX2VnZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ5dGVzID0gUkFORF9lZ2QoUHlCeXRlc19Bc1N0cmluZyhwYXRoKSk7CisgICAgaW50IGJ5dGVzID0gUkFORF9lZ2QoUHlCeXRlc19Bc1N0cmluZyhwYXRoKSk7CiAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgIGlmIChieXRlcyA9PSAtMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKQEAgLTMzNDUsMjcgKzM5NDIsMjEgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhieXRlcyk7CiB9Ci0KLVB5RG9jX1NUUlZBUihQeVNTTF9SQU5EX2VnZF9kb2MsCi0iUkFORF9lZ2QocGF0aCkgLT4gYnl0ZXNcblwKLVxuXAotUXVlcmllcyB0aGUgZW50cm9weSBnYXRoZXIgZGFlbW9uIChFR0QpIG9uIHRoZSBzb2NrZXQgbmFtZWQgYnkgJ3BhdGgnLlxuXAotUmV0dXJucyBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIFJhaXNlcyBTU0xFcnJvciBpZiBjb25uZWN0aW9uIHRvIEVHRFxuXAotZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuIik7CiAjZW5kaWYgLyogSEFWRV9SQU5EX0VHRCAqLwogCi0jZW5kaWYgLyogSEFWRV9PUEVOU1NMX1JBTkQgKi8KIAogCi1QeURvY19TVFJWQVIoUHlTU0xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2RvYywKLSJnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSAtPiB0dXBsZVxuXAotXG5cCi1SZXR1cm4gc2VhcmNoIHBhdGhzIGFuZCBlbnZpcm9ubWVudCB2YXJzIHRoYXQgYXJlIHVzZWQgYnkgU1NMQ29udGV4dCdzXG5cCi1zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKSB0byBsb2FkIGRlZmF1bHQgQ0FzLiBUaGUgdmFsdWVzIGFyZVxuXAotJ2NlcnRfZmlsZV9lbnYnLCAnY2VydF9maWxlJywgJ2NlcnRfZGlyX2VudicsICdjZXJ0X2RpcicuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocworCitSZXR1cm4gc2VhcmNoIHBhdGhzIGFuZCBlbnZpcm9ubWVudCB2YXJzIHRoYXQgYXJlIHVzZWQgYnkgU1NMQ29udGV4dCdzIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIHRvIGxvYWQgZGVmYXVsdCBDQXMuCisKK1RoZSB2YWx1ZXMgYXJlICdjZXJ0X2ZpbGVfZW52JywgJ2NlcnRfZmlsZScsICdjZXJ0X2Rpcl9lbnYnLCAnY2VydF9kaXInLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5T2JqZWN0ICpzZWxmKQorX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMjgyMGNlN2UzMzA0ZDMgaW5wdXQ9NTIxMGM5NTNkOThjM2ViNV0qLwogewogICAgIFB5T2JqZWN0ICpvZmlsZV9lbnYgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvZmlsZSA9IE5VTEw7CkBAIC0zNDI0LDI2ICs0MDE1LDI0IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIoUHlTU0xfdHh0Mm9ial9kb2MsCi0idHh0Mm9iaih0eHQsIG5hbWU9RmFsc2UpIC0+IChuaWQsIHNob3J0bmFtZSwgbG9uZ25hbWUsIG9pZClcblwKLVxuXAotTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuIEJ5IGRlZmF1bHRcblwKLW9iamVjdHMgYXJlIGxvb2tlZCB1cCBieSBPSUQuIFdpdGggbmFtZT1UcnVlIHNob3J0IGFuZCBsb25nIG5hbWUgYXJlIGFsc29cblwKLW1hdGNoZWQuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLnR4dDJvYmoKKyAgICB0eHQ6IHN0cgorICAgIG5hbWU6IGJvb2wgPSBGYWxzZQogCi1zdGF0aWMgUHlPYmplY3QqCi1QeVNTTF90eHQyb2JqKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVC4KKworQnkgZGVmYXVsdCBvYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmQKK2xvbmcgbmFtZSBhcmUgYWxzbyBtYXRjaGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF90eHQyb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqdHh0LCBpbnQgbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYWUyYzMwNTMxYjg4MDlmIGlucHV0PTFjMWU3ZDBhYTdjNDg2MDJdKi8KIHsKLSAgICBjaGFyICprd2xpc3RbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBjaGFyICp0eHQ7Ci0gICAgaW50IG5hbWUgPSAwOwogICAgIEFTTjFfT0JKRUNUICpvYmo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAic3xwOnR4dDJvYmoiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnR4dCwgJm5hbWUpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBvYmogPSBPQkpfdHh0Mm9iaih0eHQsIG5hbWUgPyAwIDogMSk7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAidW5rbm93biBvYmplY3QgJyUuMTAwcyciLCB0eHQpOwpAQCAtMzQ1NCwyMSArNDA0MywyMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9uaWQyb2JqX2RvYywKLSJuaWQyb2JqKG5pZCkgLT4gKG5pZCwgc2hvcnRuYW1lLCBsb25nbmFtZSwgb2lkKVxuXAotXG5cCi1Mb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLm5pZDJvYmoKKyAgICBuaWQ6IGludAorICAgIC8KIAotc3RhdGljIFB5T2JqZWN0KgotUHlTU0xfbmlkMm9iaihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX25pZDJvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkYjFkZjg5ZTQ0YmFkYjggaW5wdXQ9NTE3ODdhM2JlZTdkOGY5OF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCBuaWQ7CiAgICAgQVNOMV9PQkpFQ1QgKm9iajsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpuaWQyb2JqIiwgJm5pZCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGlmIChuaWQgPCBOSURfdW5kZWYpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJOSUQgbXVzdCBiZSBwb3NpdGl2ZS4iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNTY4LDMwICs0MTU3LDI4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotUHlEb2NfU1RSVkFSKFB5U1NMX2VudW1fY2VydGlmaWNhdGVzX2RvYywKLSJlbnVtX2NlcnRpZmljYXRlcyhzdG9yZV9uYW1lKSAtPiBbXVxuXAotXG5cCi1SZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSBXaW5kb3dzJyBjZXJ0IHN0b3JlLiBzdG9yZV9uYW1lIG1heSBiZSBvbmUgb2ZcblwKLSdDQScsICdST09UJyBvciAnTVknLiBUaGUgc3lzdGVtIG1heSBwcm92aWRlIG1vcmUgY2VydCBzdG9yYWdlcywgdG9vLlxuXAotVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcywgZW5jb2RpbmdfdHlwZSwgdHJ1c3QpIHR1cGxlcy4gVGhlXG5cCi1lbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkIHdpdGggWDUwOV9BU05fRU5DT0RJTkcgb3JcblwKLVBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlciBhIHNldCBvZiBPSURzIG9yIHRoZVxuXAotYm9vbGVhbiBUcnVlLiIpOworLypbY2xpbmljIGlucHV0XQorX3NzbC5lbnVtX2NlcnRpZmljYXRlcworICAgIHN0b3JlX25hbWU6IHN0cgorCitSZXRyaWV2ZSBjZXJ0aWZpY2F0ZXMgZnJvbSBXaW5kb3dzJyBjZXJ0IHN0b3JlLgorCitzdG9yZV9uYW1lIG1heSBiZSBvbmUgb2YgJ0NBJywgJ1JPT1QnIG9yICdNWScuICBUaGUgc3lzdGVtIG1heSBwcm92aWRlCittb3JlIGNlcnQgc3RvcmFnZXMsIHRvby4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsCitlbmNvZGluZ190eXBlLCB0cnVzdCkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQKK3dpdGggWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4gVGhlIHRydXN0IHNldHRpbmcgaXMgZWl0aGVyCithIHNldCBvZiBPSURzIG9yIHRoZSBib29sZWFuIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9lbnVtX2NlcnRpZmljYXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2M0ZWJjMTBiOGFkYWNmYyBpbnB1dD05MTVmNjBkNzA0NjFlYTRlXSovCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKLSAgICBjaGFyICpzdG9yZV9uYW1lOwogICAgIEhDRVJUU1RPUkUgaFN0b3JlID0gTlVMTDsKICAgICBQQ0NFUlRfQ09OVEVYVCBwQ2VydEN0eCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmtleXVzYWdlID0gTlVMTCwgKmNlcnQgPSBOVUxMLCAqZW5jID0gTlVMTCwgKnR1cCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiczplbnVtX2NlcnRpZmljYXRlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3RvcmVfbmFtZSkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzY1NywyOSArNDI0NCwyNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihQeVNTTF9lbnVtX2NybHNfZG9jLAotImVudW1fY3JscyhzdG9yZV9uYW1lKSAtPiBbXVxuXAotXG5cCi1SZXRyaWV2ZSBDUkxzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4gc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mXG5cCi0nQ0EnLCAnUk9PVCcgb3IgJ01ZJy4gVGhlIHN5c3RlbSBtYXkgcHJvdmlkZSBtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby5cblwKLVRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsIGVuY29kaW5nX3R5cGUpIHR1cGxlcy4gVGhlXG5cCi1lbmNvZGluZ190eXBlIGZsYWcgY2FuIGJlIGludGVycHJldGVkIHdpdGggWDUwOV9BU05fRU5DT0RJTkcgb3JcblwKLVBLQ1NfN19BU05fRU5DT0RJTkcuIik7CisvKltjbGluaWMgaW5wdXRdCitfc3NsLmVudW1fY3JscworICAgIHN0b3JlX25hbWU6IHN0cgorCitSZXRyaWV2ZSBDUkxzIGZyb20gV2luZG93cycgY2VydCBzdG9yZS4KKworc3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mICdDQScsICdST09UJyBvciAnTVknLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZQorbW9yZSBjZXJ0IHN0b3JhZ2VzLCB0b28uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgKGJ5dGVzLAorZW5jb2RpbmdfdHlwZSkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQgd2l0aAorWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX2VudW1fY3JscyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3NzbF9lbnVtX2NybHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2MzQ5MGEyYWExYzUwZDUgaW5wdXQ9YTFmMWQ3NjI5ZjFjNWQzZF0qLwogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07Ci0gICAgY2hhciAqc3RvcmVfbmFtZTsKICAgICBIQ0VSVFNUT1JFIGhTdG9yZSA9IE5VTEw7CiAgICAgUENDUkxfQ09OVEVYVCBwQ3JsQ3R4ID0gTlVMTDsKICAgICBQeU9iamVjdCAqY3JsID0gTlVMTCwgKmVuYyA9IE5VTEwsICp0dXAgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInM6ZW51bV9jcmxzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdG9yZV9uYW1lKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzM3LDM2ICs0MzIyLDE4IEBACiAjZW5kaWYgLyogX01TQ19WRVIgKi8KIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICovCi0KIHN0YXRpYyBQeU1ldGhvZERlZiBQeVNTTF9tZXRob2RzW10gPSB7Ci0gICAgeyJfdGVzdF9kZWNvZGVfY2VydCIsICAgICAgIFB5U1NMX3Rlc3RfZGVjb2RlX2NlcnRpZmljYXRlLAotICAgICBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIEhBVkVfT1BFTlNTTF9SQU5ECi0gICAgeyJSQU5EX2FkZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9hZGQsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlTU0xfUkFORF9hZGRfZG9jfSwKLSAgICB7IlJBTkRfYnl0ZXMiLCAgICAgICAgICBQeVNTTF9SQU5EX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCi0gICAgIFB5U1NMX1JBTkRfYnl0ZXNfZG9jfSwKLSAgICB7IlJBTkRfcHNldWRvX2J5dGVzIiwgICBQeVNTTF9SQU5EX3BzZXVkb19ieXRlcywgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9SQU5EX3BzZXVkb19ieXRlc19kb2N9LAotI2lmZGVmIEhBVkVfUkFORF9FR0QKLSAgICB7IlJBTkRfZWdkIiwgICAgICAgICAgICBQeVNTTF9SQU5EX2VnZCwgTUVUSF9WQVJBUkdTLAotICAgICBQeVNTTF9SQU5EX2VnZF9kb2N9LAotI2VuZGlmCi0gICAgeyJSQU5EX3N0YXR1cyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5U1NMX1JBTkRfc3RhdHVzLCBNRVRIX05PQVJHUywKLSAgICAgUHlTU0xfUkFORF9zdGF0dXNfZG9jfSwKLSNlbmRpZgotICAgIHsiZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocywKLSAgICAgTUVUSF9OT0FSR1MsIFB5U1NMX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19kb2N9LAotI2lmZGVmIF9NU0NfVkVSCi0gICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilQeVNTTF9lbnVtX2NlcnRpZmljYXRlcywKLSAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgUHlTU0xfZW51bV9jZXJ0aWZpY2F0ZXNfZG9jfSwKLSAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilQeVNTTF9lbnVtX2NybHMsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIFB5U1NMX2VudW1fY3Jsc19kb2N9LAotI2VuZGlmCi0gICAgeyJ0eHQyb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX3R4dDJvYmosCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIFB5U1NMX3R4dDJvYmpfZG9jfSwKLSAgICB7Im5pZDJvYmoiLCAoUHlDRnVuY3Rpb24pUHlTU0xfbmlkMm9iaiwKLSAgICAgTUVUSF9WQVJBUkdTLCBQeVNTTF9uaWQyb2JqX2RvY30sCisgICAgX1NTTF9fVEVTVF9ERUNPREVfQ0VSVF9NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfQUREX01FVEhPRERFRgorICAgIF9TU0xfUkFORF9CWVRFU19NRVRIT0RERUYKKyAgICBfU1NMX1JBTkRfUFNFVURPX0JZVEVTX01FVEhPRERFRgorICAgIF9TU0xfUkFORF9FR0RfTUVUSE9EREVGCisgICAgX1NTTF9SQU5EX1NUQVRVU19NRVRIT0RERUYKKyAgICBfU1NMX0dFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYKKyAgICBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRgorICAgIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgorICAgIF9TU0xfVFhUMk9CSl9NRVRIT0RERUYKKyAgICBfU1NMX05JRDJPQkpfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMzkwNiw2ICs0NDczLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xTb2NrZXRfVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNTTE1lbW9yeUJJT19UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3NzbG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKQEAgLTM5NjksNiArNDUzOCw5IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfU1NMU29ja2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMU29ja2V0X1R5cGUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTWVtb3J5QklPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMTWVtb3J5QklPX1R5cGUpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfWkVST19SRVRVUk4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9aRVJPX1JFVFVSTik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9XQU5UX1JFQUQiLApAQCAtNDEwOSwxMSArNDY4MSw3IEBACiAgICAgUHlfSU5DUkVGKHIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1NOSSIsIHIpOwogCi0jaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECiAgICAgciA9IFB5X1RydWU7Ci0jZWxzZQotICAgIHIgPSBQeV9GYWxzZTsKLSNlbmRpZgogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19UTFNfVU5JUVVFIiwgcik7CiAKQEAgLTQxMzMsNiArNDcwMSwxNCBAQAogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19OUE4iLCByKTsKIAorI2lmZGVmIEhBVkVfQUxQTgorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfQUxQTiIsIHIpOworCiAgICAgLyogTWFwcGluZ3MgZm9yIGVycm9yIGNvZGVzICovCiAgICAgZXJyX2NvZGVzX3RvX25hbWVzID0gUHlEaWN0X05ldygpOwogICAgIGVycl9uYW1lc190b19jb2RlcyA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0YXQuYyBiL01vZHVsZXMvX3N0YXQuYwppbmRleCBhMzAxZmE4Li5mNmNiMzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdGF0LmMKKysrIGIvTW9kdWxlcy9fc3RhdC5jCkBAIC0yNyw5ICsyNywyMSBAQAogI2VuZGlmIC8qIEhBVkVfU1lTX1NUQVRfSCAqLwogCiAjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHdpbmRvd3MuaD4KIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbW9kZV90OworCisvKiBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNIGFuZCBGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBCisgICBhcmUgbm90IHByZXNlbnQgaW4gVkMyMDEwLCBzbyBkZWZpbmUgdGhlbSBtYW51YWxseSAqLworI2lmbmRlZiBGSUxFX0FUVFJJQlVURV9JTlRFR1JJVFlfU1RSRUFNCisjICBkZWZpbmUgRklMRV9BVFRSSUJVVEVfSU5URUdSSVRZX1NUUkVBTSAweDgwMDAKICNlbmRpZgogCisjaWZuZGVmIEZJTEVfQVRUUklCVVRFX05PX1NDUlVCX0RBVEEKKyMgIGRlZmluZSBGSUxFX0FUVFJJQlVURV9OT19TQ1JVQl9EQVRBIDB4MjAwMDAKKyNlbmRpZgorCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCiAvKiBGcm9tIFB5dGhvbidzIHN0YXQucHkgKi8KICNpZm5kZWYgU19JTU9ERQogIyAgZGVmaW5lIFNfSU1PREUgMDc3NzcKQEAgLTQ3Myw2ICs0ODUsMTAgQEAKIFNUX0FUSU1FXG5cCiBTVF9NVElNRVxuXAogU1RfQ1RJTUVcblwKK1xuIgorCisiRklMRV9BVFRSSUJVVEVfKjogV2luZG93cyBmaWxlIGF0dHJpYnV0ZSBjb25zdGFudHNcblwKKyAgICAgICAgICAgICAgICAgICAob25seSBwcmVzZW50IG9uIFdpbmRvd3MpXG5cCiAiKTsKIAogCkBAIC01NTUsNiArNTcxLDI2IEBACiAgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTVF9NVElNRSIsIDgpKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNUX0NUSU1FIiwgOSkpIHJldHVybiBOVUxMOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9BUkNISVZFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0NPTVBSRVNTRUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfREVWSUNFKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9FTkNSWVBURUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfSElEREVOKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX0lOVEVHUklUWV9TVFJFQU0pKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfTk9STUFMKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX05PVF9DT05URU5UX0lOREVYRUQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfTk9fU0NSVUJfREFUQSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9PRkZMSU5FKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1JFQURPTkxZKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfU1BBUlNFX0ZJTEUpKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRklMRV9BVFRSSUJVVEVfU1lTVEVNKSkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZJTEVfQVRUUklCVVRFX1RFTVBPUkFSWSkpIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGSUxFX0FUVFJJQlVURV9WSVJUVUFMKSkgcmV0dXJuIE5VTEw7CisjZW5kaWYKKwogICAgIHJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdHJ1Y3QuYyBiL01vZHVsZXMvX3N0cnVjdC5jCmluZGV4IGFkOTk1OWUuLjA2OGM1ZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX3N0cnVjdC5jCkBAIC04NSw4ICs4NSw2IEBACiAjZGVmaW5lIEJPT0xfQUxJR04gMAogI2VuZGlmCiAKLSNkZWZpbmUgU1RSSU5HSUZZKHgpICAgICN4Ci0KICNpZmRlZiBfX3Bvd2VyYwogI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CiAjZW5kaWYKQEAgLTU0Niw4ICs1NDQsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKHggPCBTSFJUX01JTiB8fCB4ID4gU0hSVF9NQVgpewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2hvcnQgZm9ybWF0IHJlcXVpcmVzICIgU1RSSU5HSUZZKFNIUlRfTUlOKQotICAgICAgICAgICAgICAgICAgICAgICAgIiA8PSBudW1iZXIgPD0gIiBTVFJJTkdJRlkoU0hSVF9NQVgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaG9ydCBmb3JtYXQgcmVxdWlyZXMgIiBQeV9TVFJJTkdJRlkoU0hSVF9NSU4pCisgICAgICAgICAgICAgICAgICAgICAgICAiIDw9IG51bWJlciA8PSAiIFB5X1NUUklOR0lGWShTSFJUX01BWCkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHkgPSAoc2hvcnQpeDsKQEAgLTU2NCw3ICs1NjIsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKHggPCAwIHx8IHggPiBVU0hSVF9NQVgpewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNob3J0IGZvcm1hdCByZXF1aXJlcyAwIDw9IG51bWJlciA8PSAiIFNUUklOR0lGWShVU0hSVF9NQVgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1c2hvcnQgZm9ybWF0IHJlcXVpcmVzIDAgPD0gbnVtYmVyIDw9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NUUklOR0lGWShVU0hSVF9NQVgpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB5ID0gKHVuc2lnbmVkIHNob3J0KXg7CkBAIC0xMjY0LDcgKzEyNjMsOCBAQAogICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgY29uc3QgY2hhciAqZm10OwogICAgIGNoYXIgYzsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGxlbiwgbmNvZGVzLCBudW0sIGl0ZW1zaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgbGVuLCBudW0sIGl0ZW1zaXplOworICAgIHNpemVfdCBuY29kZXM7CiAKICAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5zX2Zvcm1hdCk7CiAKQEAgLTEzMjAsNyArMTMyMCw3IEBACiAgICAgfQogCiAgICAgLyogY2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgaWYgKChuY29kZXMgKyAxKSA+IChQWV9TU0laRV9UX01BWCAvIHNpemVvZihmb3JtYXRjb2RlKSkpIHsKKyAgICBpZiAoKG5jb2RlcyArIDEpID4gKChzaXplX3QpUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoZm9ybWF0Y29kZSkpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKaW5kZXggMTc2ZGY3Yy4uNDNkYjhhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMTkwLDcgKzE5MCw3IEBACiAgICAgICAgIGVsdC0+cHJldi0+bmV4dCA9IGVsdC0+bmV4dDsKICAgICBlbHNlCiAgICAgICAgIG5kLT5oZWFkID0gZWx0LT5uZXh0OwotICAgIAorCiAgICAgaWYgKGVsdC0+bmV4dCkKICAgICAgICAgZWx0LT5uZXh0LT5wcmV2ID0gZWx0LT5wcmV2OwogCkBAIC03NjcsNyArNzY3LDcgQEAKICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBiYXNlLnJlYWRvbmx5ICAgfCAgICAgMCAgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKLSAgfCBiYXNlLmZvcm1hdCAgICAgfCAgICBOVUxMICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwgIAorICB8IGJhc2UuZm9ybWF0ICAgICB8ICAgIE5VTEwgICB8ICAgICBPSyAgICAgIHwgICAgICAgT0sgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwogICB8IGJhc2UubmRpbSAgICAgICB8ICAgICAxICAgICB8ICAgICAgMSAgICAgIHwgICAgICAgT0sgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTUxMCw2ICsxNTEwLDE5IEBACiAgICAgICAgIHZpZXctPnNoYXBlID0gTlVMTDsKICAgICB9CiAKKyAgICAvKiBBc2NlcnRhaW4gdGhhdCB0aGUgbmV3IGJ1ZmZlciBoYXMgdGhlIHNhbWUgY29udGlndWl0eSBhcyB0aGUgZXhwb3J0ZXIgKi8KKyAgICBpZiAoTkRfQ19DT05USUdVT1VTKGJhc2VmbGFncykgIT0gUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdDJykgfHwKKyAgICAgICAgLyogc2tpcCBjYXN0IHRvIDEtZCAqLworICAgICAgICAodmlldy0+Zm9ybWF0ICE9IE5VTEwgJiYgdmlldy0+c2hhcGUgIT0gTlVMTCAmJgorICAgICAgICAgTkRfRk9SVFJBTl9DT05USUdVT1VTKGJhc2VmbGFncykgIT0gUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdGJykpIHx8CisgICAgICAgIC8qIGNhc3QgdG8gMS1kICovCisgICAgICAgICh2aWV3LT5mb3JtYXQgPT0gTlVMTCAmJiB2aWV3LT5zaGFwZSA9PSBOVUxMICYmCisgICAgICAgICAhUHlCdWZmZXJfSXNDb250aWd1b3VzKHZpZXcsICdGJykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJuZGFycmF5OiBjb250aWd1aXR5IG1pc21hdGNoIGluIGdldGJ1ZigpIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopc2VsZjsKICAgICBQeV9JTkNSRUYodmlldy0+b2JqKTsKICAgICBzZWxmLT5oZWFkLT5leHBvcnRzKys7CkBAIC0yMDA1LDcgKzIwMTgsNyBAQAogewogICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOwogCi0gICAgaWYgKGJhc2UtPm9iaiA9PSBOVUxMKSB7IAorICAgIGlmIChiYXNlLT5vYmogPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAgICAgUHlfSU5DUkVGKGJhc2UtPm9iaik7CkBAIC0yMjA2LDYgKzIyMTksOCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspCiAgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbaV0gPSAtMTsKIAorICAgIG5kLT5oZWFkLT5mbGFncyAmPSB+KE5EX0N8TkRfRk9SVFJBTik7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMjQ2OSwxMyArMjQ4NCwxMiBAQAogewogICAgIFB5X3NzaXplX3QgaTsKIAotICAgIGlmIChuZGltID09IDEgJiYgc2hhcGUgJiYgc2hhcGVbMF0gPT0gMSkgewotICAgICAgICAvKiBUaGlzIGlzIGZvciBjb21wYXJpbmcgc3RyaWRlczogRm9yIGV4YW1wbGUsIHRoZSBhcnJheQotICAgICAgICAgICBbMTc1XSwgc2hhcGU9WzFdLCBzdHJpZGVzPVstNV0gaXMgY29uc2lkZXJlZCBjb250aWd1b3VzLiAqLwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChzaGFwZSAmJiBzaGFwZVtpXSA8PSAxKSB7CisgICAgICAgICAgICAvKiBzdHJpZGVzIGNhbiBkaWZmZXIgaWYgdGhlIGRpbWVuc2lvbiBpcyBsZXNzIHRoYW4gMiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKGExW2ldICE9IGEyW2ldKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjU0NCw3ICsyNTU4LDcgQEAKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2MSk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjIpOwogCi0gICAgcmV0ID0gZXF1YWwgPyBQeV9UcnVlIDogUHlfRmFsc2U7IAorICAgIHJldCA9IGVxdWFsID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOwogICAgIFB5X0lOQ1JFRihyZXQpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0yNTU1LDMwICsyNTY5LDM1IEBACiAgICAgUHlPYmplY3QgKm9iajsKICAgICBQeU9iamVjdCAqb3JkZXI7CiAgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfYnVmZmVyIHZpZXcsICpiYXNlOwogICAgIGNoYXIgb3JkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZvYmosICZvcmRlcikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgotICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgb3JkID0gZ2V0X2FzY2lpX29yZGVyKG9yZGVyKTsKKyAgICBpZiAob3JkID09IENIQVJfTUFYKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7Ci0gICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgewotICAgICAgICBnb3RvIHJlbGVhc2U7CisgICAgaWYgKE5EQXJyYXlfQ2hlY2sob2JqKSkgeworICAgICAgICAvKiBTa2lwIHRoZSBidWZmZXIgcHJvdG9jb2wgdG8gY2hlY2sgc2ltcGxlIGV0Yy4gYnVmZmVycyBkaXJlY3RseS4gKi8KKyAgICAgICAgYmFzZSA9ICYoKE5EQXJyYXlPYmplY3QgKilvYmopLT5oZWFkLT5iYXNlOworICAgICAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoYmFzZSwgb3JkKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJpc19jb250aWd1b3VzOiBvYmplY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZ2aWV3LCBvcmQpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICB9CiAKLSAgICByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnZpZXcsIG9yZCkgPyBQeV9UcnVlIDogUHlfRmFsc2U7CiAgICAgUHlfSU5DUkVGKHJldCk7Ci0KLXJlbGVhc2U6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggOGViZTk3MC4uYmEwYTI0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC0xMiw2ICsxMiwxMSBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImRhdGV0aW1lLmgiCiAjaW5jbHVkZSAibWFyc2hhbC5oIgorI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaWZkZWYgTVNfV0lORE9XUworIyAgaW5jbHVkZSA8d2luc29jazIuaD4gICAgICAgICAvKiBzdHJ1Y3QgdGltZXZhbCAqLworI2VuZGlmCiAKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCkBAIC02OCw2ICs3MywxMCBAQAogc3RhdGljIFB5T2JqZWN0KgogdGVzdF9zaXplb2ZfY190eXBlcyhQeU9iamVjdCAqc2VsZikKIHsKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA1KSkpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd0eXBlLWxpbWl0cyIKKyNlbmRpZgogI2RlZmluZSBDSEVDS19TSVpFT0YoVFlQRSwgRVhQRUNURUQpICAgICAgICAgXAogICAgIGlmIChFWFBFQ1RFRCAhPSBzaXplb2YoVFlQRSkpICB7ICAgICAgICAgXAogICAgICAgICBQeUVycl9Gb3JtYXQoVGVzdEVycm9yLCAgICAgICAgICAgICAgXApAQCAtMTI1LDYgKzEzNCw5IEBACiAjdW5kZWYgSVNfU0lHTkVECiAjdW5kZWYgQ0hFQ0tfU0lHTkVTUwogI3VuZGVmIENIRUNLX1NJWkVPRgorI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDUpKSkKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKIH0KIAogCkBAIC0xNzE5LDcgKzE3MzEsNyBAQAogICAgICAgICAgICAgIHstMHhmZmZmTCwgMTYsIC0xfSwKICAgICAgICAgICAgICB7MHhmZmZmZmZmTCwgMjgsIDF9LAogICAgICAgICAgICAgIHstMHhmZmZmZmZmTCwgMjgsIC0xfX07Ci0gICAgaW50IGk7CisgICAgc2l6ZV90IGk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfQVJSQVlfTEVOR1RIKHRlc3RjYXNlcyk7ICsraSkgewogICAgICAgICBzaXplX3QgbmJpdHM7CkBAIC0yNDgwLDcgKzI0OTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJmluZm8pOwogfQotIAorCiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9mcm9tX2NvbnRpZ3VvdXMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CkBAIC0yNTMxLDYgKzI1NDMsNTggQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmIChkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpICYmIGRlZmluZWQoX19HTlVDX18pCitleHRlcm4gUHlUeXBlT2JqZWN0IF9QeUJ5dGVzSU9CdWZmZXJfVHlwZTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcGVwMzExOF9vYnNvbGV0ZV93cml0ZV9sb2NrcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSAmX1B5Qnl0ZXNJT0J1ZmZlcl9UeXBlOworICAgIFB5T2JqZWN0ICpiOworICAgIGNoYXIgKmR1bW15WzFdOworICAgIGludCByZXQsIG1hdGNoOworCisgICAgLyogUHlCdWZmZXJfRmlsbEluZm8oKSAqLworICAgIHJldCA9IFB5QnVmZmVyX0ZpbGxJbmZvKE5VTEwsIE5VTEwsIGR1bW15LCAxLCAwLCBQeUJVRl9TSU1QTEUpOworICAgIG1hdGNoID0gUHlFcnJfT2NjdXJyZWQoKSAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0J1ZmZlckVycm9yKTsKKyAgICBQeUVycl9DbGVhcigpOworICAgIGlmIChyZXQgIT0gLTEgfHwgbWF0Y2ggPT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIGJ5dGVzaW9idWZfZ2V0YnVmZmVyKCkgKi8KKyAgICBiID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeU9iamVjdF9HZXRCdWZmZXIoYiwgTlVMTCwgUHlCVUZfU0lNUExFKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgbWF0Y2ggPSBQeUVycl9PY2N1cnJlZCgpICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQnVmZmVyRXJyb3IpOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKHJldCAhPSAtMSB8fCBtYXRjaCA9PSAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgUHlfUkVUVVJOX05PTkU7CisKK2Vycm9yOgorICAgIFB5RXJyX1NldFN0cmluZyhUZXN0RXJyb3IsCisgICAgICAgICJ0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3M6IGZhaWx1cmUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCisvKiBUaGlzIHRlc3RzIGZ1bmN0aW9ucyB0aGF0IGhpc3RvcmljYWxseSBzdXBwb3J0ZWQgd3JpdGUgbG9ja3MuICBJdCBpcworICAgd3JvbmcgdG8gY2FsbCBnZXRidWZmZXIoKSB3aXRoIHZpZXc9PU5VTEwgYW5kIGEgY29tcGxpYW50IGdldGJ1ZmZlcnByb2MKKyAgIGlzIGVudGl0bGVkIHRvIHNlZ2ZhdWx0IGluIHRoYXQgY2FzZS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosIE5VTEwsIFB5QlVGX1NJTVBMRSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKiBUZXN0IHRoYXQgdGhlIGZhdGFsIGVycm9yIGZyb20gbm90IGhhdmluZyBhIGN1cnJlbnQgdGhyZWFkIGRvZXNuJ3QKICAgIGNhdXNlIGFuIGluZmluaXRlIGxvb3AuICBSdW4gdmlhIExpYi90ZXN0L3Rlc3RfY2FwaS5weSAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI1ODIsNyArMjY0Niw3IEBACiBzdGF0aWMgaW50CiBjaGVja190aW1lX3JvdW5kaW5nKGludCByb3VuZCkKIHsKLSAgICBpZiAocm91bmQgIT0gX1B5VGltZV9ST1VORF9ET1dOICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfVVApIHsKKyAgICBpZiAocm91bmQgIT0gX1B5VGltZV9ST1VORF9GTE9PUiAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIHJvdW5kaW5nIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yNzE1LDYgKzI3NzksMjEgQEAKICAgICByZXR1cm4gb2JqOwogfQogCitzdGF0aWMgUHlNZXRob2REZWYgbWw7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjcmVhdGVfY2Z1bmN0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gUHlDRnVuY3Rpb25fTmV3RXgoJm1sLCBzZWxmLCBOVUxMKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG1sID0geworICAgICJjcmVhdGVfY2Z1bmN0aW9uIiwKKyAgICBjcmVhdGVfY2Z1bmN0aW9uLAorICAgIE1FVEhfTk9BUkdTLAorICAgIE5VTEwKK307CisKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGVzdF9pbmNyZWYoUHlPYmplY3QgKm9iKQogewpAQCAtMjc3Myw2ICsyODUyLDIwIEBACiB7CiAgICAgdm9pZCAqcHRyOwogCisgICAgcHRyID0gUHlNZW1fUmF3TWFsbG9jKDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fUmF3TWFsbG9jKDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fUmF3RnJlZShwdHIpOworCisgICAgcHRyID0gUHlNZW1fUmF3Q2FsbG9jKDAsIDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fUmF3Q2FsbG9jKDAsIDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fUmF3RnJlZShwdHIpOworCiAgICAgcHRyID0gUHlNZW1fTWFsbG9jKDApOwogICAgIGlmIChwdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlNZW1fTWFsbG9jKDApIHJldHVybnMgTlVMTCIpOwpAQCAtMjc4MCw2ICsyODczLDEzIEBACiAgICAgfQogICAgIFB5TWVtX0ZyZWUocHRyKTsKIAorICAgIHB0ciA9IFB5TWVtX0NhbGxvYygwLCAwKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5TWVtX0NhbGxvYygwLCAwKSByZXR1cm5zIE5VTEwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TWVtX0ZyZWUocHRyKTsKKwogICAgIHB0ciA9IFB5T2JqZWN0X01hbGxvYygwKTsKICAgICBpZiAocHRyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlB5T2JqZWN0X01hbGxvYygwKSByZXR1cm5zIE5VTEwiKTsKQEAgLTI3ODcsMTMgKzI4ODcsMjIgQEAKICAgICB9CiAgICAgUHlPYmplY3RfRnJlZShwdHIpOwogCisgICAgcHRyID0gUHlPYmplY3RfQ2FsbG9jKDAsIDApOworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiUHlPYmplY3RfQ2FsbG9jKDAsIDApIHJldHVybnMgTlVMTCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlPYmplY3RfRnJlZShwdHIpOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCiAgICAgc2l6ZV90IG1hbGxvY19zaXplOworICAgIHNpemVfdCBjYWxsb2NfbmVsZW07CisgICAgc2l6ZV90IGNhbGxvY19lbHNpemU7CiAgICAgdm9pZCAqcmVhbGxvY19wdHI7CiAgICAgc2l6ZV90IHJlYWxsb2NfbmV3X3NpemU7CiAgICAgdm9pZCAqZnJlZV9wdHI7CkBAIC0yODA2LDYgKzI5MTUsMTQgQEAKICAgICByZXR1cm4gaG9vay0+YWxsb2MubWFsbG9jKGhvb2stPmFsbG9jLmN0eCwgc2l6ZSk7CiB9CiAKK3N0YXRpYyB2b2lkKiBob29rX2NhbGxvYyAodm9pZCogY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgYWxsb2NfaG9va190ICpob29rID0gKGFsbG9jX2hvb2tfdCAqKWN0eDsKKyAgICBob29rLT5jYWxsb2NfbmVsZW0gPSBuZWxlbTsKKyAgICBob29rLT5jYWxsb2NfZWxzaXplID0gZWxzaXplOworICAgIHJldHVybiBob29rLT5hbGxvYy5jYWxsb2MoaG9vay0+YWxsb2MuY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwogc3RhdGljIHZvaWQqIGhvb2tfcmVhbGxvYyAodm9pZCogY3R4LCB2b2lkKiBwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICBhbGxvY19ob29rX3QgKmhvb2sgPSAoYWxsb2NfaG9va190ICopY3R4OwpAQCAtMjgyNywxNyArMjk0NCwxNSBAQAogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9yX21zZzsKICAgICBhbGxvY19ob29rX3QgaG9vazsKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKLSAgICBzaXplX3Qgc2l6ZSwgc2l6ZTI7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYzsKKyAgICBzaXplX3Qgc2l6ZSwgc2l6ZTIsIG5lbGVtLCBlbHNpemU7CiAgICAgdm9pZCAqcHRyLCAqcHRyMjsKIAotICAgIGhvb2subWFsbG9jX3NpemUgPSAwOwotICAgIGhvb2sucmVhbGxvY19wdHIgPSBOVUxMOwotICAgIGhvb2sucmVhbGxvY19uZXdfc2l6ZSA9IDA7Ci0gICAgaG9vay5mcmVlX3B0ciA9IE5VTEw7CisgICAgbWVtc2V0KCZob29rLCAwLCBzaXplb2YoaG9vaykpOwogCiAgICAgYWxsb2MuY3R4ID0gJmhvb2s7CiAgICAgYWxsb2MubWFsbG9jID0gJmhvb2tfbWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9ICZob29rX2NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gJmhvb2tfcmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gJmhvb2tfZnJlZTsKICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoZG9tYWluLCAmaG9vay5hbGxvYyk7CkBAIC0yODk0LDYgKzMwMDksMzMgQEAKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KIAorICAgIG5lbGVtID0gMjsKKyAgICBlbHNpemUgPSA1OworICAgIHN3aXRjaChkb21haW4pCisgICAgeworICAgIGNhc2UgUFlNRU1fRE9NQUlOX1JBVzogcHRyID0gUHlNZW1fUmF3Q2FsbG9jKG5lbGVtLCBlbHNpemUpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9NRU06IHB0ciA9IFB5TWVtX0NhbGxvYyhuZWxlbSwgZWxzaXplKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBwdHIgPSBQeU9iamVjdF9DYWxsb2MobmVsZW0sIGVsc2l6ZSk7IGJyZWFrOworICAgIGRlZmF1bHQ6IHB0ciA9IE5VTEw7IGJyZWFrOworICAgIH0KKworICAgIGlmIChwdHIgPT0gTlVMTCkgeworICAgICAgICBlcnJvcl9tc2cgPSAiY2FsbG9jIGZhaWxlZCI7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAoaG9vay5jYWxsb2NfbmVsZW0gIT0gbmVsZW0gfHwgaG9vay5jYWxsb2NfZWxzaXplICE9IGVsc2l6ZSkgeworICAgICAgICBlcnJvcl9tc2cgPSAiY2FsbG9jIGludmFsaWQgbmVsZW0gb3IgZWxzaXplIjsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIHN3aXRjaChkb21haW4pCisgICAgeworICAgIGNhc2UgUFlNRU1fRE9NQUlOX1JBVzogUHlNZW1fUmF3RnJlZShwdHIpOyBicmVhazsKKyAgICBjYXNlIFBZTUVNX0RPTUFJTl9NRU06IFB5TWVtX0ZyZWUocHRyKTsgYnJlYWs7CisgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBQeU9iamVjdF9GcmVlKHB0cik7IGJyZWFrOworICAgIH0KKwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXMgPSBQeV9Ob25lOwogICAgIGdvdG8gZmluYWxseTsKQEAgLTI5NTMsNiArMzA5NSwxMiBAQAogIlRoaXMgZG9jc3RyaW5nIGhhcyBhIHZhbGlkIHNpZ25hdHVyZS4iCiApOwogCitQeURvY19TVFJWQVIoZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2J1dF9ub19kb2MsCisiZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2J1dF9ub19kb2MoJG1vZHVsZSwgLywgc2lnKVxuIgorIi0tXG4iCisiXG4iCispOworCiBQeURvY19TVFJWQVIoZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlX2FuZF9leHRyYV9uZXdsaW5lcywKICJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzKCRtb2R1bGUsIC8sIHBhcmFtZXRlcilcbiIKICItLVxuIgpAQCAtMzA2Myw2ICszMjExLDI0IEBACiB9CiAjZW5kaWYgICAvKiBXSVRIX1RIUkVBRCAqLwogCitzdGF0aWMgUHlPYmplY3QqCit0ZXN0X3JhaXNlX3NpZ25hbChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHNpZ251bSwgZXJyOworCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmFpc2Vfc2lnbmFsIiwgJnNpZ251bSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVyciA9IHJhaXNlKHNpZ251bSk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKIC8qIG1hcnNoYWwgKi8KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMzIxNiw2ICszMzgyLDE0MiBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIG9iaiwgcG9zKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcmV0dXJuX251bGxfd2l0aG91dF9lcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogaW52YWxpZCBjYWxsOiByZXR1cm4gTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IsCisgICAgICogX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKSBtdXN0IGRldGVjdCBzdWNoIGJ1ZyBhdCBydW50aW1lLiAqLworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3JldHVybl9yZXN1bHRfd2l0aF9lcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgLyogaW52YWxpZCBjYWxsOiByZXR1cm4gYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQsCisgICAgICogX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKSBtdXN0IGRldGVjdCBzdWNoIGJ1ZyBhdCBydW50aW1lLiAqLworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfVmFsdWVFcnJvcik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9mcm9tc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHNlY29uZHM7CisgICAgX1B5VGltZV90IHRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJnNlY29uZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0cyA9IF9QeVRpbWVfRnJvbVNlY29uZHMoc2Vjb25kcyk7CisgICAgcmV0dXJuIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdCh0cyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X3B5dGltZV9mcm9tc2Vjb25kc29iamVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBpbnQgcm91bmQ7CisgICAgX1B5VGltZV90IHRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaSIsICZvYmosICZyb3VuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChjaGVja190aW1lX3JvdW5kaW5nKHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0cywgb2JqLCByb3VuZCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QodHMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfYXNzZWNvbmRzZG91YmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgX1B5VGltZV90IHRzOworICAgIGRvdWJsZSBkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMIiwgJm5zKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdHMgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgZCA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHRzKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9QeVRpbWVfQXNUaW1ldmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgaW50IHJvdW5kOworICAgIF9QeVRpbWVfdCB0OworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIFB5T2JqZWN0ICpzZWNvbmRzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMaSIsICZucywgJnJvdW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGNoZWNrX3RpbWVfcm91bmRpbmcocm91bmQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdCA9IF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKG5zKTsKKyAgICBpZiAoX1B5VGltZV9Bc1RpbWV2YWwodCwgJnR2LCByb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNlY29uZHMgPSBQeUxvbmdfRnJvbUxvbmcoKFBZX0xPTkdfTE9ORyl0di50dl9zZWMpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIHNlY29uZHMsIHR2LnR2X3VzZWMpOworfQorCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9QeVRpbWVfQXNUaW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIF9QeVRpbWVfdCB0OworICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTCIsICZucykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHQgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgaWYgKF9QeVRpbWVfQXNUaW1lc3BlYyh0LCAmdHMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBfUHlMb25nX0Zyb21UaW1lX3QodHMudHZfc2VjKSwgdHMudHZfbnNlYyk7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgaW50IHJvdW5kOworICAgIF9QeVRpbWVfdCB0LCBtczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTGkiLCAmbnMsICZyb3VuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChjaGVja190aW1lX3JvdW5kaW5nKHJvdW5kKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHQgPSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhucyk7CisgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHQsIHJvdW5kKTsKKyAgICAvKiBUaGlzIGNvbnZlcnNpb24gcmVseSBvbiB0aGUgZmFjdCB0aGF0IF9QeVRpbWVfdCBpcyBhIG51bWJlciBvZgorICAgICAgIG5hbm9zZWNvbmRzICovCisgICAgcmV0dXJuIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChtcyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUFlfTE9OR19MT05HIG5zOworICAgIGludCByb3VuZDsKKyAgICBfUHlUaW1lX3QgdCwgbXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkxpIiwgJm5zLCAmcm91bmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoY2hlY2tfdGltZV9yb3VuZGluZyhyb3VuZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0ID0gX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobnMpOworICAgIG1zID0gX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyh0LCByb3VuZCk7CisgICAgLyogVGhpcyBjb252ZXJzaW9uIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBfUHlUaW1lX3QgaXMgYSBudW1iZXIgb2YKKyAgICAgICBuYW5vc2Vjb25kcyAqLworICAgIHJldHVybiBfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QobXMpOworfQorCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzI0OSw2ICszNTUxLDEwIEBACiAgICAgeyJ0ZXN0X3VuaWNvZGVfY29tcGFyZV93aXRoX2FzY2lpIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfdW5pY29kZV9jb21wYXJlX3dpdGhfYXNjaWksIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfY2Fwc3VsZSIsIChQeUNGdW5jdGlvbil0ZXN0X2NhcHN1bGUsIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZnJvbV9jb250aWd1b3VzIiwgKFB5Q0Z1bmN0aW9uKXRlc3RfZnJvbV9jb250aWd1b3VzLCBNRVRIX05PQVJHU30sCisjaWYgKGRlZmluZWQoX19saW51eF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSkgJiYgZGVmaW5lZChfX0dOVUNfXykKKyAgICB7InRlc3RfcGVwMzExOF9vYnNvbGV0ZV93cml0ZV9sb2NrcyIsIChQeUNGdW5jdGlvbil0ZXN0X3BlcDMxMThfb2Jzb2xldGVfd3JpdGVfbG9ja3MsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgorICAgIHsiZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3IiwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBNRVRIX099LAogICAgIHsiZ2V0YXJnc190dXBsZSIsICAgICAgICAgICBnZXRhcmdzX3R1cGxlLCAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0YXJnc19rZXl3b3JkcyIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRzLAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LApAQCAtMzMyMiw2ICszNjI4LDcgQEAKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1ldmFsLCAgTUVUSF9WQVJBUkdTfSwKICAgICB7InB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMiLCB0ZXN0X3B5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsICBNRVRIX1ZBUkFSR1N9LAogICAgIHsid2l0aF90cF9kZWwiLCAgICAgICAgICAgICB3aXRoX3RwX2RlbCwgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY3JlYXRlX2NmdW5jdGlvbiIsICAgICAgICBjcmVhdGVfY2Z1bmN0aW9uLCAgICAgICAgICAgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3B5bWVtX2FsbG9jMCIsCiAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3B5bWVtX2FsbG9jMCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9weW1lbV9zZXRyYXdhbGxvY2F0b3JzIiwKQEAgLTMzNDcsMTIgKzM2NTQsMTcgQEAKICAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZSIsCiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKICAgICAgICAgZG9jc3RyaW5nX3dpdGhfc2lnbmF0dXJlfSwKKyAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV9idXRfbm9fZG9jIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAorICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYnV0X25vX2RvY30sCiAgICAgeyJkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzIiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAogICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfYW5kX2V4dHJhX25ld2xpbmVzfSwKICAgICB7ImRvY3N0cmluZ193aXRoX3NpZ25hdHVyZV93aXRoX2RlZmF1bHRzIiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfd2l0aF9kb2NzdHJpbmcsIE1FVEhfTk9BUkdTLAogICAgICAgICBkb2NzdHJpbmdfd2l0aF9zaWduYXR1cmVfd2l0aF9kZWZhdWx0c30sCisgICAgeyJyYWlzZV9zaWduYWwiLAorICAgICAoUHlDRnVuY3Rpb24pdGVzdF9yYWlzZV9zaWduYWwsIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7ImNhbGxfaW5fdGVtcG9yYXJ5X2NfdGhyZWFkIiwgY2FsbF9pbl90ZW1wb3JhcnlfY190aHJlYWQsIE1FVEhfTywKICAgICAgUHlEb2NfU1RSKCJzZXRfZXJyb3JfY2xhc3MoZXJyb3JfY2xhc3MpIC0+IE5vbmUiKX0sCkBAIC0zMzY5LDYgKzM2ODEsMTkgQEAKICAgICAgICAgcHltYXJzaGFsX3JlYWRfbGFzdF9vYmplY3RfZnJvbV9maWxlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicHltYXJzaGFsX3JlYWRfb2JqZWN0X2Zyb21fZmlsZSIsCiAgICAgICAgIHB5bWFyc2hhbF9yZWFkX29iamVjdF9mcm9tX2ZpbGUsIE1FVEhfVkFSQVJHU30sCisgICAgeyJyZXR1cm5fbnVsbF93aXRob3V0X2Vycm9yIiwKKyAgICAgICAgcmV0dXJuX251bGxfd2l0aG91dF9lcnJvciwgTUVUSF9OT0FSR1N9LAorICAgIHsicmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yIiwKKyAgICAgICAgcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yLCBNRVRIX05PQVJHU30sCisgICAgeyJQeVRpbWVfRnJvbVNlY29uZHMiLCB0ZXN0X3B5dGltZV9mcm9tc2Vjb25kcywgIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QiLCB0ZXN0X3B5dGltZV9mcm9tc2Vjb25kc29iamVjdCwgIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfQXNTZWNvbmRzRG91YmxlIiwgdGVzdF9weXRpbWVfYXNzZWNvbmRzZG91YmxlLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiUHlUaW1lX0FzVGltZXZhbCIsIHRlc3RfUHlUaW1lX0FzVGltZXZhbCwgTUVUSF9WQVJBUkdTfSwKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICB7IlB5VGltZV9Bc1RpbWVzcGVjIiwgdGVzdF9QeVRpbWVfQXNUaW1lc3BlYywgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgorICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTM1MjgsNiArMzg1MywyMDEgQEAKIH07CiAKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKK30gbWF0bXVsT2JqZWN0OworCitzdGF0aWMgUHlPYmplY3QgKgorbWF0bXVsVHlwZV9tYXRtdWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlcikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHNPTykiLCAibWF0bXVsIiwgc2VsZiwgb3RoZXIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWF0bXVsVHlwZV9pbWF0bXVsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIpCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihzT08pIiwgImltYXRtdWwiLCBzZWxmLCBvdGhlcik7Cit9CisKK3N0YXRpYyB2b2lkCittYXRtdWxUeXBlX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBtYXRtdWxUeXBlX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlIHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcG9zaXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWJzb2x1dGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnZlcnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9hdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yZW1haW5kZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2luZGV4ICovCisgICAgbWF0bXVsVHlwZV9tYXRtdWwsICAgICAgICAvKiBuYl9tYXRyaXhfbXVsdGlwbHkgKi8KKyAgICBtYXRtdWxUeXBlX2ltYXRtdWwgICAgICAgIC8qIG5iX21hdHJpeF9pbnBsYWNlX211bHRpcGx5ICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IG1hdG11bFR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIm1hdG11bFR5cGUiLAorICAgIHNpemVvZihtYXRtdWxPYmplY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgbWF0bXVsVHlwZV9kZWFsbG9jLCAgICAgICAgICAgICAgICAgLyogZGVzdHJ1Y3RvciB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgICZtYXRtdWxUeXBlX2FzX251bWJlciwgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgIkMgbGV2ZWwgdHlwZSB3aXRoIG1hdHJpeCBvcGVyYXRpb25zIGRlZmluZWQiLAorICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRyYXZlcnNlcHJvYyB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqYW9faXRlcmF0b3I7Cit9IGF3YWl0T2JqZWN0OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithd2FpdE9iamVjdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnY7CisgICAgYXdhaXRPYmplY3QgKmFvOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiYXdhaXRPYmplY3QiLCAxLCAxLCAmdikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYW8gPSAoYXdhaXRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoYW8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYodik7CisgICAgYW8tPmFvX2l0ZXJhdG9yID0gdjsKKworICAgIHJldHVybiAoUHlPYmplY3QgKilhbzsKK30KKworCitzdGF0aWMgdm9pZAorYXdhaXRPYmplY3RfZGVhbGxvYyhhd2FpdE9iamVjdCAqYW8pCit7CisgICAgUHlfQ0xFQVIoYW8tPmFvX2l0ZXJhdG9yKTsKKyAgICBQeV9UWVBFKGFvKS0+dHBfZnJlZShhbyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2F3YWl0T2JqZWN0X2F3YWl0KGF3YWl0T2JqZWN0ICphbykKK3sKKyAgICBQeV9JTkNSRUYoYW8tPmFvX2l0ZXJhdG9yKTsKKyAgICByZXR1cm4gYW8tPmFvX2l0ZXJhdG9yOworfQorCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXdhaXRUeXBlX2FzX2FzeW5jID0geworICAgICh1bmFyeWZ1bmMpYXdhaXRPYmplY3RfYXdhaXQsICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitzdGF0aWMgUHlUeXBlT2JqZWN0IGF3YWl0VHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiYXdhaXRUeXBlIiwKKyAgICBzaXplb2YoYXdhaXRPYmplY3QpLCAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKWF3YWl0T2JqZWN0X2RlYWxsb2MsICAgIC8qIGRlc3RydWN0b3IgdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXdhaXRUeXBlX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgICJDIGxldmVsIHR5cGUgd2l0aCB0cF9hc19hc3luYyIsCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHJhdmVyc2Vwcm9jIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgYXdhaXRPYmplY3RfbmV3LCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF90ZXN0Y2FwaW1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCkBAIC0zNTQxLDYgKzQwNjEsOSBAQAogICAgIE5VTEwKIH07CiAKKy8qIFBlciBQRVAgNDg5LCB0aGlzIG1vZHVsZSB3aWxsIG5vdCBiZSBjb252ZXJ0ZWQgdG8gbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24KKyAqLworCiBQeU1PRElOSVRfRlVOQwogUHlJbml0X190ZXN0Y2FwaSh2b2lkKQogewpAQCAtMzU1Nyw2ICs0MDgwLDE1IEBACiAgICAgLyogZG9uJ3QgdXNlIGEgbmFtZSBzdGFydGluZyB3aXRoICJ0ZXN0Iiwgc2luY2Ugd2UgZG9uJ3Qgd2FudAogICAgICAgIHRlc3RfY2FwaSB0byBhdXRvbWF0aWNhbGx5IGNhbGwgdGhpcyAqLwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX3Rlc3Rfc3RydWN0bWVtYmVyc1R5cGUiLCAoUHlPYmplY3QgKikmdGVzdF9zdHJ1Y3RtZW1iZXJzVHlwZSk7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmbWF0bXVsVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJm1hdG11bFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibWF0bXVsVHlwZSIsIChQeU9iamVjdCAqKSZtYXRtdWxUeXBlKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJmF3YWl0VHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoJmF3YWl0VHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJhd2FpdFR5cGUiLCAoUHlPYmplY3QgKikmYXdhaXRUeXBlKTsKIAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ0hBUl9NQVgiLCBQeUxvbmdfRnJvbUxvbmcoQ0hBUl9NQVgpKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNIQVJfTUlOIiwgUHlMb25nX0Zyb21Mb25nKENIQVJfTUlOKSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDA1MjA1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwpAQCAtMCwwICsxLDU5NCBAQAorCisvKiBUZXN0aW5nIG1vZHVsZSBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24gb2YgZXh0ZW5zaW9uIG1vZHVsZXMgKFBFUCA0ODkpCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisvKiBFeGFtcGxlIG9iamVjdHMgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgICAgICAgICAgICAqeF9hdHRyOyAgICAgICAgLyogQXR0cmlidXRlcyBkaWN0aW9uYXJ5ICovCit9IEV4YW1wbGVPYmplY3Q7CisKKy8qIEV4YW1wbGUgbWV0aG9kcyAqLworCitzdGF0aWMgaW50CitFeGFtcGxlX3RyYXZlcnNlKEV4YW1wbGVPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnhfYXR0cik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0V4YW1wbGVfZmluYWxpemUoRXhhbXBsZU9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRXhhbXBsZV9kZW1vKEV4YW1wbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvID0gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOmRlbW8iLCAmbykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChvICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKG8pKSB7CisgICAgICAgIFB5X0lOQ1JFRihvKTsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQorICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgRXhhbXBsZV9tZXRob2RzW10gPSB7CisgICAgeyJkZW1vIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pRXhhbXBsZV9kZW1vLCAgTUVUSF9WQVJBUkdTLAorICAgICAgICBQeURvY19TVFIoImRlbW8oKSAtPiBOb25lIil9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorRXhhbXBsZV9nZXRhdHRybyhFeGFtcGxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBpZiAoc2VsZi0+eF9hdHRyICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKnYgPSBQeURpY3RfR2V0SXRlbShzZWxmLT54X2F0dHIsIG5hbWUpOworICAgICAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0ICopc2VsZiwgbmFtZSk7Cit9CisKK3N0YXRpYyBpbnQKK0V4YW1wbGVfc2V0YXR0cihFeGFtcGxlT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK3sKKyAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgaW50IHJ2ID0gUHlEaWN0X0RlbEl0ZW1TdHJpbmcoc2VsZi0+eF9hdHRyLCBuYW1lKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVsZXRlIG5vbi1leGlzdGluZyBFeGFtcGxlIGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gcnY7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtU3RyaW5nKHNlbGYtPnhfYXR0ciwgbmFtZSwgdik7Cit9CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBFeGFtcGxlX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZG9jLCAiVGhlIEV4YW1wbGUgdHlwZSJ9LAorICAgIHtQeV90cF9maW5hbGl6ZSwgRXhhbXBsZV9maW5hbGl6ZX0sCisgICAge1B5X3RwX3RyYXZlcnNlLCBFeGFtcGxlX3RyYXZlcnNlfSwKKyAgICB7UHlfdHBfZ2V0YXR0cm8sIEV4YW1wbGVfZ2V0YXR0cm99LAorICAgIHtQeV90cF9zZXRhdHRyLCBFeGFtcGxlX3NldGF0dHJ9LAorICAgIHtQeV90cF9tZXRob2RzLCBFeGFtcGxlX21ldGhvZHN9LAorICAgIHswLCAwfSwKK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBFeGFtcGxlX1R5cGVfc3BlYyA9IHsKKyAgICAiX3Rlc3RpbXBvcnRleGVjLkV4YW1wbGUiLAorICAgIHNpemVvZihFeGFtcGxlT2JqZWN0KSwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwKKyAgICBFeGFtcGxlX1R5cGVfc2xvdHMKK307CisKKy8qIEZ1bmN0aW9uIG9mIHR3byBpbnRlZ2VycyByZXR1cm5pbmcgaW50ZWdlciAqLworCitQeURvY19TVFJWQVIodGVzdGV4cG9ydF9mb29fZG9jLAorImZvbyhpLGopXG5cCitcblwKK1JldHVybiB0aGUgc3VtIG9mIGkgYW5kIGouIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0ZXhwb3J0X2ZvbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgbG9uZyBpLCBqOworICAgIGxvbmcgcmVzOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGw6Zm9vIiwgJmksICZqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gaSArIGo7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOworfQorCisvKiBUZXN0IHRoYXQgUHlTdGF0ZSByZWdpc3RyYXRpb24gZmFpbHMgICovCisKK1B5RG9jX1NUUlZBUihjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jX2RvYywKKyJyZWdpc3Rlcl9zdGF0ZSgwKTogY2FsbCBQeVN0YXRlX0ZpbmRNb2R1bGUoKVxuXAorcmVnaXN0ZXJfc3RhdGUoMSk6IGNhbGwgUHlTdGF0ZV9BZGRNb2R1bGUoKVxuXAorcmVnaXN0ZXJfc3RhdGUoMik6IGNhbGwgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoKSIpOworCitzdGF0aWMgUHlPYmplY3QgKgorY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYyhQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgaSwgcmV0OworICAgIFB5TW9kdWxlRGVmICpkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICBpZiAoZGVmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jIiwgJmkpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgbW9kID0gUHlTdGF0ZV9GaW5kTW9kdWxlKGRlZik7CisgICAgICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHJldCA9IFB5U3RhdGVfQWRkTW9kdWxlKG1vZCwgZGVmKTsKKyAgICAgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIHJldCA9IFB5U3RhdGVfUmVtb3ZlTW9kdWxlKGRlZik7CisgICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlUeXBlX1Nsb3QgU3RyX1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfYmFzZSwgTlVMTH0sIC8qIGZpbGxlZCBvdXQgaW4gbW9kdWxlIGV4ZWMgZnVuY3Rpb24gKi8KKyAgICB7MCwgMH0sCit9OworCitzdGF0aWMgUHlUeXBlX1NwZWMgU3RyX1R5cGVfc3BlYyA9IHsKKyAgICAiX3Rlc3RpbXBvcnRleGVjLlN0ciIsCisgICAgMCwKKyAgICAwLAorICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsCisgICAgU3RyX1R5cGVfc2xvdHMKK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiB0ZXN0ZXhwb3J0X21ldGhvZHNbXSA9IHsKKyAgICB7ImZvbyIsICAgICAgICAgICAgIHRlc3RleHBvcnRfZm9vLCAgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgICAgdGVzdGV4cG9ydF9mb29fZG9jfSwKKyAgICB7ImNhbGxfc3RhdGVfcmVnaXN0cmF0aW9uX2Z1bmMiLCAgY2FsbF9zdGF0ZV9yZWdpc3RyYXRpb25fZnVuYywKKyAgICAgICAgTUVUSF9WQVJBUkdTLCBjYWxsX3N0YXRlX3JlZ2lzdHJhdGlvbl9mdW5jX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBpbnQgZXhlY2Z1bmMoUHlPYmplY3QgKm0pCit7CisgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOworCisgICAgLyogRHVlIHRvIGNyb3NzIHBsYXRmb3JtIGNvbXBpbGVyIGlzc3VlcyB0aGUgc2xvdHMgbXVzdCBiZSBmaWxsZWQKKyAgICAgKiBoZXJlLiBJdCdzIHJlcXVpcmVkIGZvciBwb3J0YWJpbGl0eSB0byBXaW5kb3dzIHdpdGhvdXQgcmVxdWlyaW5nCisgICAgICogQysrLiAqLworICAgIFN0cl9UeXBlX3Nsb3RzWzBdLnBmdW5jID0gJlB5VW5pY29kZV9UeXBlOworCisgICAgLyogQWRkIGEgY3VzdG9tIHR5cGUgKi8KKyAgICB0ZW1wID0gUHlUeXBlX0Zyb21TcGVjKCZFeGFtcGxlX1R5cGVfc3BlYyk7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkV4YW1wbGUiLCB0ZW1wKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICAvKiBBZGQgYW4gZXhjZXB0aW9uIHR5cGUgKi8KKyAgICB0ZW1wID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJfdGVzdGltcG9ydGV4ZWMuZXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCB0ZW1wKSAhPSAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICAvKiBBZGQgU3RyICovCisgICAgdGVtcCA9IFB5VHlwZV9Gcm9tU3BlYygmU3RyX1R5cGVfc3BlYyk7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlN0ciIsIHRlbXApICE9IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiaW50X2NvbnN0IiwgMTk2OSkgIT0gMCkKKyAgICAgICAgZ290byBmYWlsOworCisgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJzdHJfY29uc3QiLCAic29tZXRoaW5nIGRpZmZlcmVudCIpICE9IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIHJldHVybiAwOworIGZhaWw6CisgICAgcmV0dXJuIC0xOworfQorCisvKiBIZWxwZXIgZm9yIG1vZHVsZSBkZWZpbml0aW9uczsgdGhlcmUnbGwgYmUgYSBsb3Qgb2YgdGhlbSAqLworI2RlZmluZSBURVNUX01PRFVMRV9ERUYobmFtZSwgc2xvdHMsIG1ldGhvZHMpIHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovIFwKKyAgICBuYW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLyBcCisgICAgUHlEb2NfU1RSKCJUZXN0IG1vZHVsZSAiIG5hbWUpLCAgICAgICAgICAgICAvKiBtX2RvYyAqLyBcCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8gXAorICAgIG1ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovIFwKKyAgICBzbG90cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8gXAorICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLyBcCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovIFwKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLyBcCit9CisKK1B5TW9kdWxlRGVmX1Nsb3QgbWFpbl9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBtYWluX2RlZiA9IFRFU1RfTU9EVUxFX0RFRigibWFpbiIsIG1haW5fc2xvdHMsIHRlc3RleHBvcnRfbWV0aG9kcyk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZtYWluX2RlZik7Cit9CisKKworLyoqKiogSW1wb3J0aW5nIGEgbm9uLW1vZHVsZSBvYmplY3QgKioqKi8KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25tb2R1bGU7CisKKy8qIENyZWF0ZSBhIFNpbXBsZU5hbWVzcGFjZSh0aHJlZT0zKSAqLworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY19ub25tb2R1bGUoUHlPYmplY3QgKnNwZWMsIFB5TW9kdWxlRGVmICpkZWYpCit7CisgICAgUHlPYmplY3QgKmRjdCwgKm5zLCAqdGhyZWU7CisKKyAgICBpZiAoZGVmICE9ICZkZWZfbm9ubW9kdWxlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImRlZiBkb2VzIG5vdCBtYXRjaCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGRjdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHRocmVlID0gUHlMb25nX0Zyb21Mb25nKDMpOworICAgIGlmICh0aHJlZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkY3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGN0LCAidGhyZWUiLCB0aHJlZSk7CisgICAgUHlfREVDUkVGKHRocmVlKTsKKworICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhkY3QpOworICAgIFB5X0RFQ1JFRihkY3QpOworICAgIHJldHVybiBuczsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3Qgc2xvdHNfY3JlYXRlX25vbm1vZHVsZVtdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX25vbm1vZHVsZX0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25tb2R1bGUgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25tb2R1bGUiLCBzbG90c19jcmVhdGVfbm9ubW9kdWxlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2Vfbm9ubW9kdWxlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfbm9ubW9kdWxlKTsKK30KKworLyoqKiogTm9uLUFTQ0lJLW5hbWVkIG1vZHVsZXMgKioqKi8KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25hc2NpaV9sYXRpbiA9IHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIl90ZXN0bXVsdGlwaGFzZV9ub25hc2NpaV9sYXRpbiIsICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIk1vZHVsZSBuYW1lZCBpbiBDemVjaCIpLCAgICAgICAgIC8qIG1fZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0VV9fdGVzdG11bHRpcGhhc2VfemtvdWthX25hdGVuX2V2YzA3Z2k4ZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbmFzY2lpX2xhdGluKTsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9ub25hc2NpaV9rYW5hID0geyBcCisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX3Rlc3RtdWx0aXBoYXNlX25vbmFzY2lpX2thbmEiLCAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiTW9kdWxlIG5hbWVkIGluIEphcGFuZXNlIiksICAgICAgLyogbV9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRVX2Vja3pid2JoYzZqcGd6Y3g0MTV4KFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfbm9uYXNjaWlfa2FuYSk7Cit9CisKKy8qKiogTW9kdWxlIHdpdGggYSBzaW5nbGUtY2hhcmFjdGVyIG5hbWUgKioqLworCitQeU1PRElOSVRfRlVOQworUHlJbml0X3goUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJm1haW5fZGVmKTsKK30KKworLyoqKiogVGVzdGluZyBOVUxMIHNsb3RzICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBudWxsX3Nsb3RzX2RlZiA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX251bGxfc2xvdHMiLCBOVUxMLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfbnVsbF9zbG90cyhQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmbnVsbF9zbG90c19kZWYpOworfQorCisvKioqKiBQcm9ibGVtYXRpYyBtb2R1bGVzICoqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2JhZF9sYXJnZVtdID0geworICAgIHtfUHlfbW9kX0xBU1RfU0xPVCArIDEsIE5VTEx9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfYmFkX2xhcmdlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfYmFkX3Nsb3RfbGFyZ2UiLCBzbG90c19iYWRfbGFyZ2UsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9iYWRfc2xvdF9sYXJnZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2JhZF9sYXJnZSk7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2JhZF9uZWdhdGl2ZVtdID0geworICAgIHstMSwgTlVMTH0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9iYWRfbmVnYXRpdmUgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9iYWRfc2xvdF9uZWdhdGl2ZSIsIHNsb3RzX2JhZF9uZWdhdGl2ZSwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2JhZF9zbG90X25lZ2F0aXZlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfYmFkX25lZ2F0aXZlKTsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfaW50X3dpdGhfc3RhdGUgPSB7IFwKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJjcmVhdGVfd2l0aF9zdGF0ZSIsICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJOb3QgYSBQeU1vZHVsZU9iamVjdCBvYmplY3QsIGJ1dCByZXF1ZXN0cyBwZXItbW9kdWxlIHN0YXRlIiksCisgICAgMTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIHNsb3RzX2NyZWF0ZV9ub25tb2R1bGUsICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9jcmVhdGVfaW50X3dpdGhfc3RhdGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9jcmVhdGVfaW50X3dpdGhfc3RhdGUpOworfQorCisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbmVnYXRpdmVfc2l6ZSA9IHsgXAorICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIm5lZ2F0aXZlX3NpemUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIlB5TW9kdWxlRGVmIHdpdGggbmVnYXRpdmUgbV9zaXplIiksCisgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIHNsb3RzX2NyZWF0ZV9ub25tb2R1bGUsICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9uZWdhdGl2ZV9zaXplKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfbmVnYXRpdmVfc2l6ZSk7Cit9CisKKworc3RhdGljIFB5TW9kdWxlRGVmIHVuaW5pdGlhbGl6ZWRfZGVmID0gVEVTVF9NT0RVTEVfREVGKCJtYWluIiwgbWFpbl9zbG90cywgdGVzdGV4cG9ydF9tZXRob2RzKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhwb3J0X3VuaW5pdGlhbGl6ZWQoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIChQeU9iamVjdCopICZ1bmluaXRpYWxpemVkX2RlZjsKK30KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhwb3J0X251bGwoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF9yYWlzZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhwb3J0IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2V4cG9ydF91bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhwb3J0IGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJm1haW5fZGVmKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY19udWxsKFB5T2JqZWN0ICpzcGVjLCBQeU1vZHVsZURlZiAqZGVmKQoreworICAgIHJldHVybiBOVUxMOworfQorCitQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV9udWxsW10gPSB7CisgICAge1B5X21vZF9jcmVhdGUsIGNyZWF0ZWZ1bmNfbnVsbH0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9jcmVhdGVfbnVsbCA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV9udWxsIiwgc2xvdHNfY3JlYXRlX251bGwsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9jcmVhdGVfbnVsbChQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2NyZWF0ZV9udWxsKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY19yYWlzZShQeU9iamVjdCAqc3BlYywgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgY3JlYXRlIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV9yYWlzZVtdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX3JhaXNlfSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2NyZWF0ZV9yYWlzZSA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV9udWxsIiwgc2xvdHNfY3JlYXRlX3JhaXNlLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfY3JlYXRlX3JhaXNlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfY3JlYXRlX3JhaXNlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorY3JlYXRlZnVuY191bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYywgUHlNb2R1bGVEZWYgKmRlZikKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgY3JlYXRlIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIFB5TW9kdWxlX05ldygiZm9vIik7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbltdID0geworICAgIHtQeV9tb2RfY3JlYXRlLCBjcmVhdGVmdW5jX3VucmVwb3J0ZWRfZXhjZXB0aW9ufSwKKyAgICB7MCwgTlVMTH0sCit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgZGVmX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbiA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbiIsIHNsb3RzX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbiwgTlVMTCk7CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3RtdWx0aXBoYXNlX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbihQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX2NyZWF0ZV91bnJlcG9ydGVkX2V4Y2VwdGlvbik7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2NyZWF0ZSwgY3JlYXRlZnVuY19ub25tb2R1bGV9LAorICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cyA9IFRFU1RfTU9EVUxFX0RFRigKKyAgICAiX3Rlc3RtdWx0aXBoYXNlX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMiLCBzbG90c19ub25tb2R1bGVfd2l0aF9leGVjX3Nsb3RzLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2Vfbm9ubW9kdWxlX3dpdGhfZXhlY19zbG90cyhQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmZGVmX25vbm1vZHVsZV93aXRoX2V4ZWNfc2xvdHMpOworfQorCitzdGF0aWMgaW50CitleGVjZnVuY19lcnIoUHlPYmplY3QgKm1vZCkKK3sKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeU1vZHVsZURlZl9TbG90IHNsb3RzX2V4ZWNfZXJyW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY19lcnJ9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiBkZWZfZXhlY19lcnIgPSBURVNUX01PRFVMRV9ERUYoCisgICAgIl90ZXN0bXVsdGlwaGFzZV9leGVjX2VyciIsIHNsb3RzX2V4ZWNfZXJyLCBOVUxMKTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdG11bHRpcGhhc2VfZXhlY19lcnIoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9leGVjX2Vycik7Cit9CisKK3N0YXRpYyBpbnQKK2V4ZWNmdW5jX3JhaXNlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBleGVjIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19leGVjX3JhaXNlW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY19yYWlzZX0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9leGVjX3JhaXNlID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfZXhlY19yYWlzZSIsIHNsb3RzX2V4ZWNfcmFpc2UsIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leGVjX3JhaXNlKFB5T2JqZWN0ICptb2QpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJmRlZl9leGVjX3JhaXNlKTsKK30KKworc3RhdGljIGludAorZXhlY2Z1bmNfdW5yZXBvcnRlZF9leGNlcHRpb24oUHlPYmplY3QgKm1vZCkKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJiYWQgZXhlYyBmdW5jdGlvbiIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCBzbG90c19leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY191bnJlcG9ydGVkX2V4Y2VwdGlvbn0sCisgICAgezAsIE5VTEx9LAorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIGRlZl9leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uID0gVEVTVF9NT0RVTEVfREVGKAorICAgICJfdGVzdG11bHRpcGhhc2VfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbiIsIHNsb3RzX2V4ZWNfdW5yZXBvcnRlZF9leGNlcHRpb24sIE5VTEwpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0bXVsdGlwaGFzZV9leGVjX3VucmVwb3J0ZWRfZXhjZXB0aW9uKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZkZWZfZXhlY191bnJlcG9ydGVkX2V4Y2VwdGlvbik7Cit9CisKKy8qKiogSGVscGVyIGZvciBpbXAgdGVzdCAqKiovCisKK3N0YXRpYyBQeU1vZHVsZURlZiBpbXBfZHVtbXlfZGVmID0gVEVTVF9NT0RVTEVfREVGKCJpbXBfZHVtbXkiLCBtYWluX3Nsb3RzLCB0ZXN0ZXhwb3J0X21ldGhvZHMpOworCitQeU1PRElOSVRfRlVOQworUHlJbml0X2ltcF9kdW1teShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmaW1wX2R1bW15X2RlZik7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCmluZGV4IGY4MGY3NmEuLmJjYjNhZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3RocmVhZG1vZHVsZS5jCkBAIC00OSwyMSArNDksMTggQEAKICAqIHRpbWVvdXQuCiAgKi8KIHN0YXRpYyBQeUxvY2tTdGF0dXMKLWFjcXVpcmVfdGltZWQoUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2ssIFBZX1RJTUVPVVRfVCBtaWNyb3NlY29uZHMpCithY3F1aXJlX3RpbWVkKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBfUHlUaW1lX3QgdGltZW91dCkKIHsKICAgICBQeUxvY2tTdGF0dXMgcjsKLSAgICBfUHlUaW1lX3RpbWV2YWwgY3VydGltZTsKLSAgICBfUHlUaW1lX3RpbWV2YWwgZW5kdGltZTsKKyAgICBfUHlUaW1lX3QgZW5kdGltZSA9IDA7CisgICAgX1B5VGltZV90IG1pY3Jvc2Vjb25kczsKIAotCi0gICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKLSAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmVuZHRpbWUpOwotICAgICAgICBlbmR0aW1lLnR2X3NlYyArPSBtaWNyb3NlY29uZHMgLyAoMTAwMCAqIDEwMDApOwotICAgICAgICBlbmR0aW1lLnR2X3VzZWMgKz0gbWljcm9zZWNvbmRzICUgKDEwMDAgKiAxMDAwKTsKLSAgICB9Ci0KKyAgICBpZiAodGltZW91dCA+IDApCisgICAgICAgIGVuZHRpbWUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogCiAgICAgZG8geworICAgICAgICBtaWNyb3NlY29uZHMgPSBfUHlUaW1lX0FzTWljcm9zZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisKICAgICAgICAgLyogZmlyc3QgYSBzaW1wbGUgbm9uLWJsb2NraW5nIHRyeSB3aXRob3V0IHJlbGVhc2luZyB0aGUgR0lMICovCiAgICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgMCwgMCk7CiAgICAgICAgIGlmIChyID09IFBZX0xPQ0tfRkFJTFVSRSAmJiBtaWNyb3NlY29uZHMgIT0gMCkgewpAQCAtODIsMTQgKzc5LDEyIEBACiAKICAgICAgICAgICAgIC8qIElmIHdlJ3JlIHVzaW5nIGEgdGltZW91dCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IGFmdGVyIHByb2Nlc3NpbmcKICAgICAgICAgICAgICAqIHNpZ25hbHMsIHNpbmNlIHRob3NlIGNhbiB0YWtlIHRpbWUuICAqLwotICAgICAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+IDApIHsKLSAgICAgICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmY3VydGltZSk7Ci0gICAgICAgICAgICAgICAgbWljcm9zZWNvbmRzID0gKChlbmR0aW1lLnR2X3NlYyAtIGN1cnRpbWUudHZfc2VjKSAqIDEwMDAwMDAgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW5kdGltZS50dl91c2VjIC0gY3VydGltZS50dl91c2VjKSk7CisgICAgICAgICAgICBpZiAodGltZW91dCA+IDApIHsKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZW5kdGltZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKIAogICAgICAgICAgICAgICAgIC8qIENoZWNrIGZvciBuZWdhdGl2ZSB2YWx1ZXMsIHNpbmNlIHRob3NlIG1lYW4gYmxvY2sgZm9yZXZlci4KICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAobWljcm9zZWNvbmRzIDw9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgciA9IFBZX0xPQ0tfRkFJTFVSRTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC05OSw0NCArOTQsNjEgQEAKICAgICByZXR1cm4gcjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWxvY2tfUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGxvY2tvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3N0YXRpYyBpbnQKK2xvY2tfYWNxdWlyZV9wYXJzZV9hcmdzKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfdCAqdGltZW91dCkKIHsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiYmxvY2tpbmciLCAidGltZW91dCIsIE5VTEx9OwogICAgIGludCBibG9ja2luZyA9IDE7Ci0gICAgZG91YmxlIHRpbWVvdXQgPSAtMTsKLSAgICBQWV9USU1FT1VUX1QgbWljcm9zZWNvbmRzOwotICAgIFB5TG9ja1N0YXR1cyByOworICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaiA9IE5VTEw7CisgICAgY29uc3QgX1B5VGltZV90IHVuc2V0X3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKC0xKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aWQ6YWNxdWlyZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tpbmcsICZ0aW1lb3V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgKnRpbWVvdXQgPSB1bnNldF90aW1lb3V0IDsKIAotICAgIGlmICghYmxvY2tpbmcgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNhbid0IHNwZWNpZnkgYSB0aW1lb3V0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgYSBub24tYmxvY2tpbmcgY2FsbCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlPOmFjcXVpcmUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NraW5nLCAmdGltZW91dF9vYmopKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAodGltZW91dF9vYmoKKyAgICAgICAgJiYgX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCh0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCFibG9ja2luZyAmJiAqdGltZW91dCAhPSB1bnNldF90aW1lb3V0ICkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzcGVjaWZ5IGEgdGltZW91dCBmb3IgYSBub24tYmxvY2tpbmcgY2FsbCIpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmICh0aW1lb3V0IDwgMCAmJiB0aW1lb3V0ICE9IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCB2YWx1ZSBtdXN0IGJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpY3RseSBwb3NpdGl2ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoKnRpbWVvdXQgPCAwICYmICp0aW1lb3V0ICE9IHVuc2V0X3RpbWVvdXQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCB2YWx1ZSBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCFibG9ja2luZykKLSAgICAgICAgbWljcm9zZWNvbmRzID0gMDsKLSAgICBlbHNlIGlmICh0aW1lb3V0ID09IC0xKQotICAgICAgICBtaWNyb3NlY29uZHMgPSAtMTsKLSAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCAqPSAxZTY7Ci0gICAgICAgIGlmICh0aW1lb3V0ID49IChkb3VibGUpIFBZX1RJTUVPVVRfTUFYKSB7CisgICAgICAgICp0aW1lb3V0ID0gMDsKKyAgICBlbHNlIGlmICgqdGltZW91dCAhPSB1bnNldF90aW1lb3V0KSB7CisgICAgICAgIF9QeVRpbWVfdCBtaWNyb3NlY29uZHM7CisKKyAgICAgICAgbWljcm9zZWNvbmRzID0gX1B5VGltZV9Bc01pY3Jvc2Vjb25kcygqdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1pY3Jvc2Vjb25kcyA+PSBQWV9USU1FT1VUX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgdmFsdWUgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBtaWNyb3NlY29uZHMgPSAoUFlfVElNRU9VVF9UKSB0aW1lb3V0OwogICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAotICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPmxvY2tfbG9jaywgbWljcm9zZWNvbmRzKTsKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NrX1B5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2Nrb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CisgICAgUHlMb2NrU3RhdHVzIHI7CisKKyAgICBpZiAobG9ja19hY3F1aXJlX3BhcnNlX2FyZ3MoYXJncywga3dkcywgJnRpbWVvdXQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5sb2NrX2xvY2ssIHRpbWVvdXQpOwogICAgIGlmIChyID09IFBZX0xPQ0tfSU5UUikgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xOTIsNiArMjA0LDEzIEBACiBcblwKIFJldHVybiB3aGV0aGVyIHRoZSBsb2NrIGlzIGluIHRoZSBsb2NrZWQgc3RhdGUuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NrX3JlcHIobG9ja29iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyAlcyBvYmplY3QgYXQgJXA+IiwKKyAgICAgICAgc2VsZi0+bG9ja2VkID8gImxvY2tlZCIgOiAidW5sb2NrZWQiLCBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBzZWxmKTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIGxvY2tfbWV0aG9kc1tdID0gewogICAgIHsiYWNxdWlyZV9sb2NrIiwgKFB5Q0Z1bmN0aW9uKWxvY2tfUHlUaHJlYWRfYWNxdWlyZV9sb2NrLAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBhY3F1aXJlX2RvY30sCkBAIC0yMjMsNyArMjQyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAocmVwcmZ1bmMpbG9ja19yZXByLCAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwpAQCAtMjc0LDQxICsyOTMsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBybG9ja19hY3F1aXJlKHJsb2Nrb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImJsb2NraW5nIiwgInRpbWVvdXQiLCBOVUxMfTsKLSAgICBpbnQgYmxvY2tpbmcgPSAxOwotICAgIGRvdWJsZSB0aW1lb3V0ID0gLTE7Ci0gICAgUFlfVElNRU9VVF9UIG1pY3Jvc2Vjb25kczsKKyAgICBfUHlUaW1lX3QgdGltZW91dDsKICAgICBsb25nIHRpZDsKICAgICBQeUxvY2tTdGF0dXMgciA9IFBZX0xPQ0tfQUNRVUlSRUQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlkOmFjcXVpcmUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJsb2NraW5nLCAmdGltZW91dCkpCisgICAgaWYgKGxvY2tfYWNxdWlyZV9wYXJzZV9hcmdzKGFyZ3MsIGt3ZHMsICZ0aW1lb3V0KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFibG9ja2luZyAmJiB0aW1lb3V0ICE9IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiY2FuJ3Qgc3BlY2lmeSBhIHRpbWVvdXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvciBhIG5vbi1ibG9ja2luZyBjYWxsIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAodGltZW91dCA8IDAgJiYgdGltZW91dCAhPSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRpbWVvdXQgdmFsdWUgbXVzdCBiZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaWN0bHkgcG9zaXRpdmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICghYmxvY2tpbmcpCi0gICAgICAgIG1pY3Jvc2Vjb25kcyA9IDA7Ci0gICAgZWxzZSBpZiAodGltZW91dCA9PSAtMSkKLSAgICAgICAgbWljcm9zZWNvbmRzID0gLTE7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgKj0gMWU2OwotICAgICAgICBpZiAodGltZW91dCA+PSAoZG91YmxlKSBQWV9USU1FT1VUX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgdmFsdWUgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBtaWNyb3NlY29uZHMgPSAoUFlfVElNRU9VVF9UKSB0aW1lb3V0OwotICAgIH0KLQogICAgIHRpZCA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKICAgICBpZiAoc2VsZi0+cmxvY2tfY291bnQgPiAwICYmIHRpZCA9PSBzZWxmLT5ybG9ja19vd25lcikgewogICAgICAgICB1bnNpZ25lZCBsb25nIGNvdW50ID0gc2VsZi0+cmxvY2tfY291bnQgKyAxOwpAQCAtMzIwLDcgKzMxMSw3IEBACiAgICAgICAgIHNlbGYtPnJsb2NrX2NvdW50ID0gY291bnQ7CiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KLSAgICByID0gYWNxdWlyZV90aW1lZChzZWxmLT5ybG9ja19sb2NrLCBtaWNyb3NlY29uZHMpOworICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPnJsb2NrX2xvY2ssIHRpbWVvdXQpOwogICAgIGlmIChyID09IFBZX0xPQ0tfQUNRVUlSRUQpIHsKICAgICAgICAgYXNzZXJ0KHNlbGYtPnJsb2NrX2NvdW50ID09IDApOwogICAgICAgICBzZWxmLT5ybG9ja19vd25lciA9IHRpZDsKQEAgLTQ3NSw4ICs0NjYsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBybG9ja19yZXByKHJsb2Nrb2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzIG93bmVyPSVsZCBjb3VudD0lbHU+IiwKLSAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZi0+cmxvY2tfb3duZXIsIHNlbGYtPnJsb2NrX2NvdW50KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcyAlcyBvYmplY3Qgb3duZXI9JWxkIGNvdW50PSVsdSBhdCAlcD4iLAorICAgICAgICBzZWxmLT5ybG9ja19jb3VudCA/ICJsb2NrZWQiIDogInVubG9ja2VkIiwKKyAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSwgc2VsZi0+cmxvY2tfb3duZXIsCisgICAgICAgIHNlbGYtPnJsb2NrX2NvdW50LCBzZWxmKTsKIH0KIAogCkBAIC0xMzU5LDcgKzEzNTIsOSBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fdGhyZWFkKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqdGltZW91dF9tYXg7CisgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKKyAgICBkb3VibGUgdGltZV9tYXg7CisgICAgZG91YmxlIHRpbWVvdXRfbWF4OwogCiAgICAgLyogSW5pdGlhbGl6ZSB0eXBlczogKi8KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZsb2NhbGR1bW15dHlwZSkgPCAwKQpAQCAtMTM3NiwxMCArMTM3MSwxNCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdGltZW91dF9tYXggPSBQeUZsb2F0X0Zyb21Eb3VibGUoUFlfVElNRU9VVF9NQVggLyAxMDAwMDAwKTsKLSAgICBpZiAoIXRpbWVvdXRfbWF4KQorICAgIHRpbWVvdXRfbWF4ID0gUFlfVElNRU9VVF9NQVggLyAxMDAwMDAwOworICAgIHRpbWVfbWF4ID0gZmxvb3IoX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoX1B5VGltZV9NQVgpKTsKKyAgICB0aW1lb3V0X21heCA9IFB5X01JTih0aW1lb3V0X21heCwgdGltZV9tYXgpOworCisgICAgdiA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lb3V0X21heCk7CisgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJUSU1FT1VUX01BWCIsIHRpbWVvdXRfbWF4KSA8IDApCisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVElNRU9VVF9NQVgiLCB2KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIGEgc3ltYm9saWMgY29uc3RhbnQgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RraW50ZXIuYyBiL01vZHVsZXMvX3RraW50ZXIuYwppbmRleCA1MjAyNWJiLi40MWFkNWY5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL190a2ludGVyLmMKKysrIGIvTW9kdWxlcy9fdGtpbnRlci5jCkBAIC05LDggKzksOCBAQAogCiAvKiBUQ0wvVEsgVkVSU0lPTiBJTkZPOgogCi0gICAgT25seSBUY2wvVGsgOC4zLjEgYW5kIGxhdGVyIGFyZSBzdXBwb3J0ZWQuICBPbGRlciB2ZXJzaW9ucyBhcmUgbm90Ci0gICAgc3VwcG9ydGVkLiBVc2UgUHl0aG9uIDIuNiBvciBvbGRlciBpZiB5b3UgY2Fubm90IHVwZ3JhZGUgeW91cgorICAgIE9ubHkgVGNsL1RrIDguNCBhbmQgbGF0ZXIgYXJlIHN1cHBvcnRlZC4gIE9sZGVyIHZlcnNpb25zIGFyZSBub3QKKyAgICBzdXBwb3J0ZWQuIFVzZSBQeXRob24gMy40IG9yIG9sZGVyIGlmIHlvdSBjYW5ub3QgdXBncmFkZSB5b3VyCiAgICAgVGNsL1RrIGxpYnJhcmllcy4KICovCiAKQEAgLTIxLDYgKzIxLDcgQEAKIAogKi8KIAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMzYsMTMgKzM3LDYgQEAKICNkZWZpbmUgQ0hFQ0tfU0laRShzaXplLCBlbGVtc2l6ZSkgXAogICAgICgoc2l6ZV90KShzaXplKSA8PSBQeV9NSU4oKHNpemVfdClJTlRfTUFYLCBVSU5UX01BWCAvIChzaXplX3QpKGVsZW1zaXplKSkpCiAKLS8qIFN0YXJ0aW5nIHdpdGggVGNsIDguNCwgbWFueSBBUElzIG9mZmVyIGNvbnN0LWNvcnJlY3RuZXNzLiAgVW5mb3J0dW5hdGVseSwKLSAgIG1ha2luZyBfdGtpbnRlciBjb3JyZWN0IGZvciB0aGlzIEFQSSBtZWFucyB0byBicmVhayBlYXJsaWVyCi0gICB2ZXJzaW9ucy4gVVNFX0NPTVBBVF9DT05TVCBhbGxvd3MgdG8gbWFrZSBfdGtpbnRlciB3b3JrIHdpdGggYm90aCA4LjQgYW5kCi0gICBlYXJsaWVyIHZlcnNpb25zLiBPbmNlIFRjbCByZWxlYXNlcyBiZWZvcmUgOC40IGRvbid0IG5lZWQgdG8gYmUgc3VwcG9ydGVkCi0gICBhbnltb3JlLCB0aGlzIHNob3VsZCBnby4gKi8KLSNkZWZpbmUgVVNFX0NPTVBBVF9DT05TVAotCiAvKiBJZiBUY2wgaXMgY29tcGlsZWQgZm9yIHRocmVhZHMsIHdlIG11c3QgYWxzbyBkZWZpbmUgVENMX1RIUkVBRC4gV2UgZGVmaW5lCiAgICBpdCBhbHdheXM7IGlmIFRjbCBpcyBub3QgdGhyZWFkZWQsIHRoZSB0aHJlYWQgZnVuY3Rpb25zIGluCiAgICBUY2wgYXJlIGVtcHR5LiAgKi8KQEAgLTU4LDE1ICs1Miw4IEBACiAKICNpbmNsdWRlICJ0a2ludGVyLmgiCiAKLS8qIEZvciBUY2wgOC4yIGFuZCA4LjMsIENPTlNUKiBpcyBub3QgZGVmaW5lZCAoZXhjZXB0IG9uIEN5Z3dpbikuICovCi0jaWZuZGVmIENPTlNUODRfUkVUVVJOCi0jZGVmaW5lIENPTlNUODRfUkVUVVJOCi0jdW5kZWYgQ09OU1QKLSNkZWZpbmUgQ09OU1QKLSNlbmRpZgotCi0jaWYgVEtfSEVYX1ZFUlNJT04gPCAweDA4MDMwMjAxCi0jZXJyb3IgIlRrIG9sZGVyIHRoYW4gOC4zLjEgbm90IHN1cHBvcnRlZCIKKyNpZiBUS19IRVhfVkVSU0lPTiA8IDB4MDgwNDAyMDAKKyNlcnJvciAiVGsgb2xkZXIgdGhhbiA4LjQgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCiAjaWYgVEtfSEVYX1ZFUlNJT04gPj0gMHgwODA1MDIwOCAmJiBUS19IRVhfVkVSU0lPTiA8IDB4MDgwNjAwMDAgfHwgXApAQCAtMTE0LDcgKzEwMSw2NSBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDxjb25pby5oPgogI2RlZmluZSBXQUlUX0ZPUl9TVERJTgorCitzdGF0aWMgUHlPYmplY3QgKgorX2dldF90Y2xfbGliX3BhdGgoKQoreworICAgIHN0YXRpYyBQeU9iamVjdCAqdGNsX2xpYnJhcnlfcGF0aCA9IE5VTEw7CisgICAgc3RhdGljIGludCBhbHJlYWR5X2NoZWNrZWQgPSAwOworCisgICAgaWYgKGFscmVhZHlfY2hlY2tlZCA9PSAwKSB7CisgICAgICAgIFB5T2JqZWN0ICpwcmVmaXg7CisgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRfYnVmOworICAgICAgICBpbnQgc3RhdF9yZXR1cm5fdmFsdWU7CisKKyAgICAgICAgcHJlZml4ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRQcmVmaXgoKSwgLTEpOworICAgICAgICBpZiAocHJlZml4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogQ2hlY2sgZXhwZWN0ZWQgbG9jYXRpb24gZm9yIGFuIGluc3RhbGxlZCBQeXRob24gZmlyc3QgKi8KKyAgICAgICAgdGNsX2xpYnJhcnlfcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJcXHRjbFxcdGNsIiBUQ0xfVkVSU0lPTik7CisgICAgICAgIGlmICh0Y2xfbGlicmFyeV9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHRjbF9saWJyYXJ5X3BhdGggPSBQeVVuaWNvZGVfQ29uY2F0KHByZWZpeCwgdGNsX2xpYnJhcnlfcGF0aCk7CisgICAgICAgIGlmICh0Y2xfbGlicmFyeV9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN0YXRfcmV0dXJuX3ZhbHVlID0gX1B5X3N0YXQodGNsX2xpYnJhcnlfcGF0aCwgJnN0YXRfYnVmKTsKKyAgICAgICAgaWYgKHN0YXRfcmV0dXJuX3ZhbHVlID09IC0yKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhdF9yZXR1cm5fdmFsdWUgPT0gLTEpIHsKKyAgICAgICAgICAgIC8qIGluc3RhbGwgbG9jYXRpb24gZG9lc24ndCBleGlzdCwgcmVzZXQgZXJybm8gYW5kIHNlZSBpZgorICAgICAgICAgICAgICAgd2UncmUgYSByZXBvc2l0b3J5IGJ1aWxkICovCisgICAgICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgUHlfVENMVEtfRElSCisgICAgICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UQ0xUS19ESVIgIlxcbGliXFx0Y2wiIFRDTF9WRVJTSU9OKTsKKyAgICAgICAgICAgIGlmICh0Y2xfbGlicmFyeV9wYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRfcmV0dXJuX3ZhbHVlID0gX1B5X3N0YXQodGNsX2xpYnJhcnlfcGF0aCwgJnN0YXRfYnVmKTsKKyAgICAgICAgICAgIGlmIChzdGF0X3JldHVybl92YWx1ZSA9PSAtMikgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0YXRfcmV0dXJuX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICAgICAgLyogdGNsdGtEaXIgZm9yIGEgcmVwb3NpdG9yeSBidWlsZCBkb2Vzbid0IGV4aXN0IGVpdGhlciwKKyAgICAgICAgICAgICAgICAgICByZXNldCBlcnJubyBhbmQgbGVhdmUgVGNsIHRvIGl0cyBvd24gZGV2aWNlcyAqLworICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyNlbHNlCisgICAgICAgICAgICB0Y2xfbGlicmFyeV9wYXRoID0gTlVMTDsKICNlbmRpZgorICAgICAgICB9CisgICAgICAgIGFscmVhZHlfY2hlY2tlZCA9IDE7CisgICAgfQorICAgIHJldHVybiB0Y2xfbGlicmFyeV9wYXRoOworfQorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmZGVmIFdJVEhfVEhSRUFECiAKQEAgLTM4NSwxMCArNDMwLDEwIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLVNwbGl0KGNoYXIgKmxpc3QpCitTcGxpdChjb25zdCBjaGFyICpsaXN0KQogewogICAgIGludCBhcmdjOwotICAgIGNoYXIgKiphcmd2OworICAgIGNvbnN0IGNoYXIgKiphcmd2OwogICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKGxpc3QgPT0gTlVMTCkgewpAQCAtNDMyLDcgKzQ3Nyw3IEBACiBTcGxpdE9iaihQeU9iamVjdCAqYXJnKQogewogICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgaW50IGksIHNpemU7CisgICAgICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKICAgICAgICAgUHlPYmplY3QgKmVsZW0sICpuZXdlbGVtLCAqcmVzdWx0OwogCiAgICAgICAgIHNpemUgPSBQeVR1cGxlX1NpemUoYXJnKTsKQEAgLTQ0OCw3ICs0OTMsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBpbnQgazsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CiAgICAgICAgICAgICAgICAgaWYgKG5ld2VsZW0gPT0gZWxlbSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3ZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDY4LDkgKzUxMywyOSBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgLyogRmFsbCB0aHJvdWdoLCByZXR1cm5pbmcgYXJnLiAqLwogICAgIH0KKyAgICBlbHNlIGlmIChQeUxpc3RfQ2hlY2soYXJnKSkgeworICAgICAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgICAgIFB5T2JqZWN0ICplbGVtLCAqbmV3ZWxlbSwgKnJlc3VsdDsKKworICAgICAgICBzaXplID0gUHlMaXN0X0dFVF9TSVpFKGFyZyk7CisgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KHNpemUpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAvKiBSZWN1cnNpdmVseSBpbnZva2UgU3BsaXRPYmogZm9yIGFsbCBsaXN0IGl0ZW1zLiAqLworICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGVsZW0gPSBQeUxpc3RfR0VUX0lURU0oYXJnLCBpKTsKKyAgICAgICAgICAgIG5ld2VsZW0gPSBTcGxpdE9iaihlbGVtKTsKKyAgICAgICAgICAgIGlmICghbmV3ZWxlbSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGksIG5ld2VsZW0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CiAgICAgICAgIGludCBhcmdjOwotICAgICAgICBjaGFyICoqYXJndjsKKyAgICAgICAgY29uc3QgY2hhciAqKmFyZ3Y7CiAgICAgICAgIGNoYXIgKmxpc3QgPSBQeVVuaWNvZGVfQXNVVEY4KGFyZyk7CiAKICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCB8fApAQCAtNDg1LDcgKzU1MCw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKLSAgICAgICAgY2hhciAqKmFyZ3Y7CisgICAgICAgIGNvbnN0IGNoYXIgKiphcmd2OwogICAgICAgICBjaGFyICpsaXN0ID0gUHlCeXRlc19Bc1N0cmluZyhhcmcpOwogCiAgICAgICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKQEAgLTUwMiw2ICs1NjcsMTQgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3RraW50ZXIKK2NsYXNzIF90a2ludGVyLnRrYXBwICJUa2FwcE9iamVjdCAqIiAiJlRrYXBwX1R5cGVfc3BlYyIKK2NsYXNzIF90a2ludGVyLlRjbF9PYmogIlB5VGNsT2JqZWN0ICoiICImUHlUY2xPYmplY3RfVHlwZV9zcGVjIgorY2xhc3MgX3RraW50ZXIudGt0aW1lcnRva2VuICJUa3R0T2JqZWN0ICoiICImVGt0dF9UeXBlX3NwZWMiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iMWViZjE1YzE2MmVlMjI5XSovCisKIC8qKioqIFRrYXBwIE9iamVjdCAqKioqLwogCiAjaWZuZGVmIFdJVEhfQVBQSU5JVApAQCAtNTUyLDggKzYyNSw5IEBACiBzdGF0aWMgdm9pZCBEaXNhYmxlRXZlbnRIb29rKHZvaWQpOyAvKiBGb3J3YXJkICovCiAKIHN0YXRpYyBUa2FwcE9iamVjdCAqCi1Ua2FwcF9OZXcoY2hhciAqc2NyZWVuTmFtZSwgY2hhciAqY2xhc3NOYW1lLAotICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywgY2hhciAqdXNlKQorVGthcHBfTmV3KGNvbnN0IGNoYXIgKnNjcmVlbk5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICBpbnQgaW50ZXJhY3RpdmUsIGludCB3YW50b2JqZWN0cywgaW50IHdhbnRUaywgaW50IHN5bmMsCisgICAgICAgICAgY29uc3QgY2hhciAqdXNlKQogewogICAgIFRrYXBwT2JqZWN0ICp2OwogICAgIGNoYXIgKmFyZ3YwOwpAQCAtNjEwLDcgKzY4NCw3IEBACiAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLCAidGNsX2ludGVyYWN0aXZlIiwgIjAiLCBUQ0xfR0xPQkFMX09OTFkpOwogCiAgICAgLyogVGhpcyBpcyB1c2VkIHRvIGdldCB0aGUgYXBwbGljYXRpb24gY2xhc3MgZm9yIFRrIDQuMSBhbmQgdXAgKi8KLSAgICBhcmd2MCA9IChjaGFyKilhdHRlbXB0Y2thbGxvYyhzdHJsZW4oY2xhc3NOYW1lKSArIDEpOworICAgIGFyZ3YwID0gKGNoYXIqKVB5TWVtX01hbGxvYyhzdHJsZW4oY2xhc3NOYW1lKSArIDEpOwogICAgIGlmICghYXJndjApIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtNjIxLDcgKzY5NSw3IEBACiAgICAgaWYgKFB5X0lTVVBQRVIoUHlfQ0hBUk1BU0soYXJndjBbMF0pKSkKICAgICAgICAgYXJndjBbMF0gPSBQeV9UT0xPV0VSKFB5X0NIQVJNQVNLKGFyZ3YwWzBdKSk7CiAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsICJhcmd2MCIsIGFyZ3YwLCBUQ0xfR0xPQkFMX09OTFkpOwotICAgIGNrZnJlZShhcmd2MCk7CisgICAgUHlNZW1fRnJlZShhcmd2MCk7CiAKICAgICBpZiAoISB3YW50VGspIHsKICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsCkBAIC02MzcsMTQgKzcxMSwxNCBAQAogICAgIC8qIHNvbWUgaW5pdGlhbCBhcmd1bWVudHMgbmVlZCB0byBiZSBpbiBhcmd2ICovCiAgICAgaWYgKHN5bmMgfHwgdXNlKSB7CiAgICAgICAgIGNoYXIgKmFyZ3M7Ci0gICAgICAgIGludCBsZW4gPSAwOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAKICAgICAgICAgaWYgKHN5bmMpCiAgICAgICAgICAgICBsZW4gKz0gc2l6ZW9mICItc3luYyI7CiAgICAgICAgIGlmICh1c2UpCi0gICAgICAgICAgICBsZW4gKz0gc3RybGVuKHVzZSkgKyBzaXplb2YgIi11c2UgIjsKKyAgICAgICAgICAgIGxlbiArPSBzdHJsZW4odXNlKSArIHNpemVvZiAiLXVzZSAiOyAgLyogbmV2ZXIgb3ZlcmZsb3dzICovCiAKLSAgICAgICAgYXJncyA9IChjaGFyKilhdHRlbXB0Y2thbGxvYyhsZW4pOworICAgICAgICBhcmdzID0gKGNoYXIqKVB5TWVtX01hbGxvYyhsZW4pOwogICAgICAgICBpZiAoIWFyZ3MpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CkBAIC02NjIsOSArNzM2LDM2IEBACiAgICAgICAgIH0KIAogICAgICAgICBUY2xfU2V0VmFyKHYtPmludGVycCwgImFyZ3YiLCBhcmdzLCBUQ0xfR0xPQkFMX09OTFkpOwotICAgICAgICBja2ZyZWUoYXJncyk7CisgICAgICAgIFB5TWVtX0ZyZWUoYXJncyk7CiAgICAgfQogCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsKKyAgICAgICAgUHlPYmplY3QgKnN0cl9wYXRoOworICAgICAgICBQeU9iamVjdCAqdXRmOF9wYXRoOworICAgICAgICBEV09SRCByZXQ7CisKKyAgICAgICAgcmV0ID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwsIDApOworICAgICAgICBpZiAoIXJldCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBzdHJfcGF0aCA9IF9nZXRfdGNsX2xpYl9wYXRoKCk7CisgICAgICAgICAgICBpZiAoc3RyX3BhdGggPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RyX3BhdGggIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHV0ZjhfcGF0aCA9IFB5VW5pY29kZV9Bc1VURjhTdHJpbmcoc3RyX3BhdGgpOworICAgICAgICAgICAgICAgIGlmICh1dGY4X3BhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVGNsX1NldFZhcih2LT5pbnRlcnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAidGNsX2xpYnJhcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyh1dGY4X3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodXRmOF9wYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKFRjbF9BcHBJbml0KHYtPmludGVycCkgIT0gVENMX09LKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXYpOwogI2lmZGVmIFRLSU5URVJfUFJPVEVDVF9MT0FEVEsKQEAgLTkyOSw5ICsxMDMwLDE0IEBACiB7CiAgICAgVGNsX09iaiAqcmVzdWx0OwogCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodmFsdWUpKQorICAgIGlmIChQeUJ5dGVzX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh2YWx1ZSkgPj0gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJieXRlcyBvYmplY3QgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBUY2xfTmV3Qnl0ZUFycmF5T2JqKCh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpUHlCeXRlc19HRVRfU0laRSh2YWx1ZSkpOworICAgIH0KIAogICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsdWUpKQogICAgICAgICByZXR1cm4gVGNsX05ld0Jvb2xlYW5PYmooUHlPYmplY3RfSXNUcnVlKHZhbHVlKSk7CkBAIC05NzAsMjQgKzEwNzYsMjggQEAKICAgICBpZiAoUHlGbG9hdF9DaGVjayh2YWx1ZSkpCiAgICAgICAgIHJldHVybiBUY2xfTmV3RG91YmxlT2JqKFB5RmxvYXRfQVNfRE9VQkxFKHZhbHVlKSk7CiAKLSAgICBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKKyAgICBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkgfHwgUHlMaXN0X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBUY2xfT2JqICoqYXJndjsKICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBpOwogCi0gICAgICAgIHNpemUgPSBQeVR1cGxlX1NpemUodmFsdWUpOworICAgICAgICBzaXplID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHZhbHVlKTsKICAgICAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBUY2xfTmV3TGlzdE9iaigwLCBOVUxMKTsKICAgICAgICAgaWYgKCFDSEVDS19TSVpFKHNpemUsIHNpemVvZihUY2xfT2JqICopKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0dXBsZSBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9DaGVjayh2YWx1ZSkgPyAidHVwbGUgaXMgdG9vIGxvbmciIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBhcmd2ID0gKFRjbF9PYmogKiopIGF0dGVtcHRja2FsbG9jKCgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9PYmogKikpOwotICAgICAgICBpZighYXJndikKLSAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYXJndiA9IChUY2xfT2JqICoqKSBQeU1lbV9NYWxsb2MoKChzaXplX3Qpc2l6ZSkgKiBzaXplb2YoVGNsX09iaiAqKSk7CisgICAgICAgIGlmICghYXJndikgeworICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgICBhcmd2W2ldID0gQXNPYmooUHlUdXBsZV9HZXRJdGVtKHZhbHVlLGkpKTsKLSAgICAgICAgcmVzdWx0ID0gVGNsX05ld0xpc3RPYmooUHlUdXBsZV9TaXplKHZhbHVlKSwgYXJndik7Ci0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBhcmd2KTsKKyAgICAgICAgICBhcmd2W2ldID0gQXNPYmooUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHZhbHVlLGkpKTsKKyAgICAgICAgcmVzdWx0ID0gVGNsX05ld0xpc3RPYmooKGludClzaXplLCBhcmd2KTsKKyAgICAgICAgUHlNZW1fRnJlZShhcmd2KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwMTIsOSArMTEyMiw5IEBACiAgICAgICAgIH0KICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHZhbHVlKTsKICAgICAgICAgaWYgKGtpbmQgPT0gc2l6ZW9mKFRjbF9VbmlDaGFyKSkKLSAgICAgICAgICAgIHJldHVybiBUY2xfTmV3VW5pY29kZU9iaihpbmJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gVGNsX05ld1VuaWNvZGVPYmooaW5idWYsIChpbnQpc2l6ZSk7CiAgICAgICAgIGFsbG9jc2l6ZSA9ICgoc2l6ZV90KXNpemUpICogc2l6ZW9mKFRjbF9VbmlDaGFyKTsKLSAgICAgICAgb3V0YnVmID0gKFRjbF9VbmlDaGFyKilhdHRlbXB0Y2thbGxvYyhhbGxvY3NpemUpOworICAgICAgICBvdXRidWYgPSAoVGNsX1VuaUNoYXIqKVB5TWVtX01hbGxvYyhhbGxvY3NpemUpOwogICAgICAgICAvKiBFbHNlIG92ZXJmbG93IG9jY3VycmVkLCBhbmQgd2UgdGFrZSB0aGUgbmV4dCBleGl0ICovCiAgICAgICAgIGlmICghb3V0YnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTAzMSwxNCArMTE0MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIFUrJXggaXMgYWJvdmUgdGhlIHJhbmdlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihVKzAwMDAtVStGRkZGKSBhbGxvd2VkIGJ5IFRjbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKLSAgICAgICAgICAgICAgICBja2ZyZWUoRlJFRUNBU1Qgb3V0YnVmKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG91dGJ1Zik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIG91dGJ1ZltpXSA9IGNoOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IFRjbF9OZXdVbmljb2RlT2JqKG91dGJ1Ziwgc2l6ZSk7Ci0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvdXRidWYpOworICAgICAgICByZXN1bHQgPSBUY2xfTmV3VW5pY29kZU9iaihvdXRidWYsIChpbnQpc2l6ZSk7CisgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTEwNjcsNyArMTE3Nyw2IEBACiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhib29sVmFsdWUpOwogfQogCi0jaWZkZWYgVENMX1dJREVfSU5UX1RZUEUKIHN0YXRpYyBQeU9iamVjdCoKIGZyb21XaWRlSW50T2JqKFB5T2JqZWN0KiB0a2FwcCwgVGNsX09iaiAqdmFsdWUpCiB7CkBAIC0xMDg0LDcgKzExOTMsNiBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogfQotI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xJQlRPTU1BTVRICiBzdGF0aWMgUHlPYmplY3QqCkBAIC0xMTU3LDcgKzEyNjUsNiBAQAogICAgICAgICAgICBmYWxsIHRocm91Z2ggdG8gd2lkZUludCBoYW5kbGluZy4gKi8KICAgICB9CiAKLSNpZmRlZiBUQ0xfV0lERV9JTlRfVFlQRQogICAgIGlmICh2YWx1ZS0+dHlwZVB0ciA9PSBhcHAtPkludFR5cGUgfHwKICAgICAgICAgdmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5XaWRlSW50VHlwZSkgewogICAgICAgICByZXN1bHQgPSBmcm9tV2lkZUludE9iaih0a2FwcCwgdmFsdWUpOwpAQCAtMTE2Nyw3ICsxMjc0LDYgQEAKICAgICAgICAgLyogSWYgdGhlcmUgaXMgYW4gZXJyb3IgaW4gdGhlIHdpZGVJbnQgY29udmVyc2lvbiwKICAgICAgICAgICAgZmFsbCB0aHJvdWdoIHRvIGJpZ251bSBoYW5kbGluZy4gKi8KICAgICB9Ci0jZW5kaWYKIAogI2lmZGVmIEhBVkVfTElCVE9NTUFNVEgKICAgICBpZiAodmFsdWUtPnR5cGVQdHIgPT0gYXBwLT5JbnRUeXBlIHx8CkBAIC0xMjU4LDcgKzEzNjQsNyBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspCiAgICAgICAgIFRjbF9EZWNyUmVmQ291bnQob2JqdltpXSk7CiAgICAgaWYgKG9ianYgIT0gb2JqU3RvcmUpCi0gICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvYmp2KTsKKyAgICAgICAgUHlNZW1fRnJlZShvYmp2KTsKIH0KIAogLyogQ29udmVydCBQeXRob24gb2JqZWN0cyB0byBUY2wgb2JqZWN0cy4gVGhpcyBtdXN0IGhhcHBlbiBpbiB0aGUKQEAgLTEyNzIsNyArMTM3OCw3IEBACiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgLyogZG8gbm90aGluZyAqLzsKIAotICAgIGVsc2UgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CisgICAgZWxzZSBpZiAoIShQeVR1cGxlX0NoZWNrKGFyZ3MpIHx8IFB5TGlzdF9DaGVjayhhcmdzKSkpIHsKICAgICAgICAgb2JqdlswXSA9IEFzT2JqKGFyZ3MpOwogICAgICAgICBpZiAob2JqdlswXSA9PSAwKQogICAgICAgICAgICAgZ290byBmaW5hbGx5OwpAQCAtMTI4MCwxNCArMTM4NiwxNiBAQAogICAgICAgICBUY2xfSW5jclJlZkNvdW50KG9ianZbMF0pOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgb2JqYyA9IFB5VHVwbGVfU2l6ZShhcmdzKTsKKyAgICAgICAgb2JqYyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShhcmdzKTsKIAogICAgICAgICBpZiAob2JqYyA+IEFSR1NaKSB7CiAgICAgICAgICAgICBpZiAoIUNIRUNLX1NJWkUob2JqYywgc2l6ZW9mKFRjbF9PYmogKikpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0dXBsZSBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpID8gInR1cGxlIGlzIHRvbyBsb25nIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgb2JqdiA9IChUY2xfT2JqICoqKWF0dGVtcHRja2FsbG9jKCgoc2l6ZV90KW9iamMpICogc2l6ZW9mKFRjbF9PYmogKikpOworICAgICAgICAgICAgb2JqdiA9IChUY2xfT2JqICoqKVB5TWVtX01hbGxvYygoKHNpemVfdClvYmpjKSAqIHNpemVvZihUY2xfT2JqICopKTsKICAgICAgICAgICAgIGlmIChvYmp2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIG9iamMgPSAwOwpAQCAtMTI5Niw3ICsxNDA0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvYmpjOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIGkpOworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgb2JqYyA9IGk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzExLDEwICsxNDE5LDEwIEBACiAgICAgICAgICAgICBUY2xfSW5jclJlZkNvdW50KG9ianZbaV0pOwogICAgICAgICB9CiAgICAgfQotICAgICpwb2JqYyA9IG9iamM7CisgICAgKnBvYmpjID0gKGludClvYmpjOwogICAgIHJldHVybiBvYmp2OwogZmluYWxseToKLSAgICBUa2FwcF9DYWxsRGVhbGxvY0FyZ3Mob2Jqdiwgb2JqU3RvcmUsIG9iamMpOworICAgIFRrYXBwX0NhbGxEZWFsbG9jQXJncyhvYmp2LCBvYmpTdG9yZSwgKGludClvYmpjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTQ3NCwxNiArMTU4MiwyMSBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV2YWwKKworICAgIHNjcmlwdDogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FdmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2V2YWxfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI0Yjc5ODMxZjcwMGRlYTAgaW5wdXQ9NDgxNDg0MTIzYTQ1NWYyMl0qLwogewotICAgIGNoYXIgKnNjcmlwdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV2YWwiLCAmc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHNjcmlwdCk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE0OTEsMjMgKzE2MDQsMjggQEAKICAgICBlcnIgPSBUY2xfRXZhbChUa2FwcF9JbnRlcnAoc2VsZiksIHNjcmlwdCk7CiAgICAgRU5URVJfT1ZFUkxBUAogICAgIGlmIChlcnIgPT0gVENMX0VSUk9SKQotICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXMgPSBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIGVsc2UKICAgICAgICAgcmVzID0gdW5pY29kZUZyb21UY2xTdHJpbmcoVGthcHBfUmVzdWx0KHNlbGYpKTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV2YWxmaWxlCisKKyAgICBmaWxlTmFtZTogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FdmFsRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpmaWxlTmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02M2JlODhkY2VlNGYxMWQzIGlucHV0PTg3M2FiNzA3ZTVlOTQ3ZTFdKi8KIHsKLSAgICBjaGFyICpmaWxlTmFtZTsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgZXJyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGZpbGVOYW1lKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTUxNSwyMyArMTYzMywyOCBAQAogICAgIGVyciA9IFRjbF9FdmFsRmlsZShUa2FwcF9JbnRlcnAoc2VsZiksIGZpbGVOYW1lKTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQogICAgICAgICByZXMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwogICAgIExFQVZFX09WRVJMQVBfVENMCiAgICAgcmV0dXJuIHJlczsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAucmVjb3JkCisKKyAgICBzY3JpcHQ6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfUmVjb3JkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX3JlY29yZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzY3JpcHQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZmZTA4YTAwNjE3MzBkZiBpbnB1dD1jMGIwZGI1YTIxNDEyY2FjXSovCiB7Ci0gICAgY2hhciAqc2NyaXB0OwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzY3JpcHQpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xNTM5LDIwICsxNjYyLDI1IEBACiAgICAgZXJyID0gVGNsX1JlY29yZEFuZEV2YWwoVGthcHBfSW50ZXJwKHNlbGYpLCBzY3JpcHQsIFRDTF9OT19FVkFMKTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKGVyciA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQogICAgICAgICByZXMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhUa2FwcF9SZXN1bHQoc2VsZikpOwogICAgIExFQVZFX09WRVJMQVBfVENMCiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0FkZEVycm9ySW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbXNnOworLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuYWRkZXJyaW5mbwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmFkZGVycm9yaW5mbyIsICZtc2cpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtc2c6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mb19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICptc2cpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGUyMjJlZTIwNTBlYjM1NyBpbnB1dD00OTcxMzk5MzE3ZDRjMTM2XSovCit7CiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChtc2cpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0xNTg1LDYgKzE3MTMsMTUgQEAKIH0gVmFyRXZlbnQ7CiAjZW5kaWYKIAorLypbcHl0aG9uXQorCitjbGFzcyB2YXJuYW1lX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2NvbnN0IGNoYXIgKicKKyAgICBjb252ZXJ0ZXIgPSAndmFybmFtZV9jb252ZXJ0ZXInCisKK1tweXRob25dKi8KKy8qW3B5dGhvbiBjaGVja3N1bTogZGEzOWEzZWU1ZTZiNGIwZDMyNTViZmVmOTU2MDE4OTBhZmQ4MDcwOV0qLworCiBzdGF0aWMgaW50CiB2YXJuYW1lX2NvbnZlcnRlcihQeU9iamVjdCAqaW4sIHZvaWQgKl9vdXQpCiB7CkBAIC0xNTk2LDggKzE3MzMsOCBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoaW4pOwotICAgICAgICBpZiAoc3RybGVuKHMpICE9IFB5Qnl0ZXNfU2l6ZShpbikpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibnVsbCBieXRlIGluIGJ5dGVzIG9iamVjdCIpOworICAgICAgICBpZiAoc3RybGVuKHMpICE9IChzaXplX3QpUHlCeXRlc19TaXplKGluKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgICpvdXQgPSBzOwpAQCAtMTYxMyw4ICsxNzUwLDggQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoc3RybGVuKHMpICE9IHNpemUpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibnVsbCBjaGFyYWN0ZXIgaW4gc3RyaW5nIik7CisgICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClzaXplKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICAqb3V0ID0gczsKQEAgLTE2NjcsNyArMTgwNCw2IEBACiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBUa2FwcE9iamVjdCAqc2VsZiA9IChUa2FwcE9iamVjdCopc2VsZnB0cjsKICAgICBpZiAoc2VsZi0+dGhyZWFkZWQgJiYgc2VsZi0+dGhyZWFkX2lkICE9IFRjbF9HZXRDdXJyZW50VGhyZWFkKCkpIHsKLSAgICAgICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAgICAgICAgIFZhckV2ZW50ICpldjsKICAgICAgICAgUHlPYmplY3QgKnJlcywgKmV4Y190eXBlLCAqZXhjX3ZhbDsKICAgICAgICAgVGNsX0NvbmRpdGlvbiBjb25kID0gTlVMTDsKQEAgLTE4NjIsMzEgKzE5OTgsMzkgQEAKIAogLyoqIFRjbCB0byBQeXRob24gKiovCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmdldGludAorCisgICAgYXJnOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0dldEludChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9nZXRpbnQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODhjZjI5M2ZhZTMwN2NmZSBpbnB1dD0wMzQwMjY5OTdjNWI5MWY4XSovCiB7CiAgICAgY2hhciAqczsKLSNpZiBkZWZpbmVkKFRDTF9XSURFX0lOVF9UWVBFKSB8fCBkZWZpbmVkKEhBVkVfTElCVE9NTUFNVEgpCiAgICAgVGNsX09iaiAqdmFsdWU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSNlbHNlCi0gICAgaW50IGludFZhbHVlOwotI2VuZGlmCiAKLSAgICBpZiAoUHlUdXBsZV9TaXplKGFyZ3MpID09IDEpIHsKLSAgICAgICAgUHlPYmplY3QqIG8gPSBQeVR1cGxlX0dldEl0ZW0oYXJncywgMCk7Ci0gICAgICAgIGlmIChQeUxvbmdfQ2hlY2sobykpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihvKTsKLSAgICAgICAgICAgIHJldHVybiBvOwotICAgICAgICB9CisgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CisgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0aW50IiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwotI2lmIGRlZmluZWQoVENMX1dJREVfSU5UX1RZUEUpIHx8IGRlZmluZWQoSEFWRV9MSUJUT01NQU1USCkKLSAgICB2YWx1ZSA9IFRjbF9OZXdTdHJpbmdPYmoocywgLTEpOwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKworICAgIGlmIChQeVRjbE9iamVjdF9DaGVjayhhcmcpKSB7CisgICAgICAgIHZhbHVlID0gKChQeVRjbE9iamVjdCopYXJnKS0+dmFsdWU7CisgICAgICAgIFRjbF9JbmNyUmVmQ291bnQodmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmdldGludCIsICZzKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOworICAgICAgICB2YWx1ZSA9IFRjbF9OZXdTdHJpbmdPYmoocywgLTEpOworICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOworICAgIH0KICAgICAvKiBEb24ndCB1c2UgVGNsX0dldEludCgpIGJlY2F1c2UgaXQgcmV0dXJucyBhbWJpZ3VvdXMgcmVzdWx0IGZvciB2YWx1ZQogICAgICAgIGluIHJhbmdlcyAtMioqMzIuLi0yKiozMS0xIGFuZCAyKiozMS4uMioqMzItMSAob24gMzItYml0IHBsYXRmb3JtKS4KIApAQCAtMTg5NCw0MyArMjAzOCw2NyBAQAogICAgICAgIHZhbHVlIGluIHJhbmdlcyAtMioqNjQuLi0yKio2My0xIGFuZCAyKio2My4uMioqNjQtMSAob24gMzItYml0IHBsYXRmb3JtKS4KICAgICAgKi8KICNpZmRlZiBIQVZFX0xJQlRPTU1BTVRICi0gICAgcmVzdWx0ID0gZnJvbUJpZ251bU9iaihzZWxmLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gZnJvbUJpZ251bU9iaigoUHlPYmplY3QgKilzZWxmLCB2YWx1ZSk7CiAjZWxzZQotICAgIHJlc3VsdCA9IGZyb21XaWRlSW50T2JqKHNlbGYsIHZhbHVlKTsKKyAgICByZXN1bHQgPSBmcm9tV2lkZUludE9iaigoUHlPYmplY3QgKilzZWxmLCB2YWx1ZSk7CiAjZW5kaWYKICAgICBUY2xfRGVjclJlZkNvdW50KHZhbHVlKTsKICAgICBpZiAocmVzdWx0ICE9IE5VTEwgfHwgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlCi0gICAgaWYgKFRjbF9HZXRJbnQoVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmaW50VmFsdWUpID09IFRDTF9PSykKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhpbnRWYWx1ZSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZ2V0ZG91YmxlCisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfR2V0RG91YmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2dldGRvdWJsZShUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNTJiMTM4YmQ4Yjk1NmI5IGlucHV0PTIyMDE1NzI5Y2U5ZWY3ZjhdKi8KIHsKICAgICBjaGFyICpzOwogICAgIGRvdWJsZSB2OwogCi0gICAgaWYgKFB5VHVwbGVfU2l6ZShhcmdzKSA9PSAxKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgICAgICBpZiAoUHlGbG9hdF9DaGVjayhvKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKG8pOwotICAgICAgICAgICAgcmV0dXJuIG87Ci0gICAgICAgIH0KKyAgICBpZiAoUHlGbG9hdF9DaGVjayhhcmcpKSB7CisgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0ZG91YmxlIiwgJnMpKQorCisgICAgaWYgKFB5TnVtYmVyX0NoZWNrKGFyZykpIHsKKyAgICAgICAgcmV0dXJuIFB5TnVtYmVyX0Zsb2F0KGFyZyk7CisgICAgfQorCisgICAgaWYgKFB5VGNsT2JqZWN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgaWYgKFRjbF9HZXREb3VibGVGcm9tT2JqKFRrYXBwX0ludGVycChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnYpID09IFRDTF9FUlJPUikKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHYpOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpnZXRkb3VibGUiLCAmcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgaWYgKFRjbF9HZXREb3VibGUoVGthcHBfSW50ZXJwKHNlbGYpLCBzLCAmdikgPT0gVENMX0VSUk9SKQotICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZCIsIHYpOworICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHYpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5nZXRib29sZWFuCisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfR2V0Qm9vbGVhbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK190a2ludGVyX3RrYXBwX2dldGJvb2xlYW4oVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI2YTlhZTQ0NTgyMWQ5MSBpbnB1dD03ZjExMjQ4ZWY4Zjg3NzZlXSovCiB7CiAgICAgY2hhciAqczsKICAgICBpbnQgdjsKQEAgLTE5NDMsNyArMjExMSw3IEBACiAgICAgICAgIGlmIChUY2xfR2V0Qm9vbGVhbkZyb21PYmooVGthcHBfSW50ZXJwKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2KSA9PSBUQ0xfRVJST1IpCi0gICAgICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHYpOwogICAgIH0KIApAQCAtMTk1MSwyMCArMjExOSwyNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIGlmIChUY2xfR2V0Qm9vbGVhbihUa2FwcF9JbnRlcnAoc2VsZiksIHMsICZ2KSA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICByZXR1cm4gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHYpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHByc3RyaW5nCisKKyAgICBzOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0V4cHJTdHJpbmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZGEzMjNkM2VkMGFiYjEgaW5wdXQ9ZmE3OGY3NTFhZmIyZjIxYl0qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpleHByc3RyaW5nIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTE5NzIsMjQgKzIxNDUsMjkgQEAKICAgICByZXR2YWwgPSBUY2xfRXhwclN0cmluZyhUa2FwcF9JbnRlcnAoc2VsZiksIHMpOwogICAgIEVOVEVSX09WRVJMQVAKICAgICBpZiAocmV0dmFsID09IFRDTF9FUlJPUikKLSAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcihzZWxmKTsKKyAgICAgICAgcmVzID0gVGtpbnRlcl9FcnJvcigoUHlPYmplY3QgKilzZWxmKTsKICAgICBlbHNlCiAgICAgICAgIHJlcyA9IHVuaWNvZGVGcm9tVGNsU3RyaW5nKFRrYXBwX1Jlc3VsdChzZWxmKSk7CiAgICAgTEVBVkVfT1ZFUkxBUF9UQ0wKICAgICByZXR1cm4gcmVzOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5leHBybG9uZworCisgICAgczogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9FeHByTG9uZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9leHBybG9uZ19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVkNmE0NmI2M2M2ZWJjZjkgaW5wdXQ9MTFiZDdlZWUwYzU3YjRkY10qLwogewotICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgaW50IHJldHZhbDsKICAgICBsb25nIHY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6ZXhwcmxvbmciLCAmcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChzKTsKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIApAQCAtMTk5NywyMyArMjE3NSwyOSBAQAogICAgIHJldHZhbCA9IFRjbF9FeHByTG9uZyhUa2FwcF9JbnRlcnAoc2VsZiksIHMsICZ2KTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJsIiwgdik7CisgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tTG9uZyh2KTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV4cHJkb3VibGUKKworICAgIHM6IHN0cgorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfRXhwckRvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmY3OGRmMTA4MWVhNDE1OCBpbnB1dD1mZjAyYmMxMTc5ODgzMmQ1XSovCiB7Ci0gICAgY2hhciAqczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBkb3VibGUgdjsKICAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV4cHJkb3VibGUiLCAmcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgocyk7CiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiVGthcHBfRXhwckRvdWJsZSIsIHJldHVybiAwKQpAQCAtMjAyMiw2MSArMjIwNiw3NCBAQAogICAgIEVOVEVSX09WRVJMQVAKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXR2YWwpCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJkIiwgdik7CisgICAgICAgIHJlcyA9IFB5RmxvYXRfRnJvbURvdWJsZSh2KTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmV4cHJib29sZWFuCisKKyAgICBzOiBzdHIKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX0V4cHJCb29sZWFuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGIyODAzOGMyMjg4NzMxMSBpbnB1dD1jOGM2NjAyMmJkYjhkNWQzXSovCiB7Ci0gICAgY2hhciAqczsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBpbnQgcmV0dmFsOwogICAgIGludCB2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmV4cHJib29sZWFuIiwgJnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHMpOwogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogICAgIEVOVEVSX1RDTAogICAgIHJldHZhbCA9IFRjbF9FeHByQm9vbGVhbihUa2FwcF9JbnRlcnAoc2VsZiksIHMsICZ2KTsKICAgICBFTlRFUl9PVkVSTEFQCiAgICAgaWYgKHJldHZhbCA9PSBUQ0xfRVJST1IpCi0gICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJlcyA9IFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpIiwgdik7CisgICAgICAgIHJlcyA9IFB5TG9uZ19Gcm9tTG9uZyh2KTsKICAgICBMRUFWRV9PVkVSTEFQX1RDTAogICAgIHJldHVybiByZXM7CiB9CiAKIAogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5zcGxpdGxpc3QKKworICAgIGFyZzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9TcGxpdExpc3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfc3BsaXRsaXN0KFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzYjUxZDM0Mzg2ZDM2ZmIgaW5wdXQ9MmIyZTEzMzUxZTNjMGI1M10qLwogewogICAgIGNoYXIgKmxpc3Q7CiAgICAgaW50IGFyZ2M7Ci0gICAgY2hhciAqKmFyZ3Y7Ci0gICAgUHlPYmplY3QgKmFyZywgKnY7CisgICAgY29uc3QgY2hhciAqKmFyZ3Y7CisgICAgUHlPYmplY3QgKnY7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c3BsaXRsaXN0IiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVRjbE9iamVjdF9DaGVjayhhcmcpKSB7CiAgICAgICAgIGludCBvYmpjOwogICAgICAgICBUY2xfT2JqICoqb2JqdjsKICAgICAgICAgaWYgKFRjbF9MaXN0T2JqR2V0RWxlbWVudHMoVGthcHBfSW50ZXJwKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFB5VGNsT2JqZWN0KilhcmcpLT52YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iamMsICZvYmp2KSA9PSBUQ0xfRVJST1IpIHsKLSAgICAgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3IoKFB5T2JqZWN0ICopc2VsZik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCEodiA9IFB5VHVwbGVfTmV3KG9iamMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooc2VsZiwgb2JqdltpXSk7CisgICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2W2ldKTsKICAgICAgICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDg4LDE1ICsyMjg1LDE4IEBACiAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwogICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KKyAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZykpIHsKKyAgICAgICAgcmV0dXJuIFB5U2VxdWVuY2VfVHVwbGUoYXJnKTsKKyAgICB9CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OnNwbGl0bGlzdCIsICJ1dGYtOCIsICZsaXN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImV0OnNwbGl0bGlzdCIsICJ1dGYtOCIsICZsaXN0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGxpc3QpOwogICAgIGlmIChUY2xfU3BsaXRMaXN0KFRrYXBwX0ludGVycChzZWxmKSwgbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAmYXJnYywgJmFyZ3YpID09IFRDTF9FUlJPUikgIHsKICAgICAgICAgUHlNZW1fRnJlZShsaXN0KTsKLSAgICAgICAgcmV0dXJuIFRraW50ZXJfRXJyb3Ioc2VsZik7CisgICAgICAgIHJldHVybiBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIH0KIAogICAgIGlmICghKHYgPSBQeVR1cGxlX05ldyhhcmdjKSkpCkBAIC0yMTE3LDE0ICsyMzE3LDIxIEBACiAgICAgcmV0dXJuIHY7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLnNwbGl0CisKKyAgICBhcmc6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfU3BsaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3RraW50ZXJfdGthcHBfc3BsaXQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA4YWQ4MzIzNjNmYWNmZCBpbnB1dD1hMWM3ODM0OWVhY2FhMTQwXSovCiB7Ci0gICAgUHlPYmplY3QgKmFyZywgKnY7CisgICAgUHlPYmplY3QgKnY7CiAgICAgY2hhciAqbGlzdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzcGxpdCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlUY2xPYmplY3RfQ2hlY2soYXJnKSkgewogICAgICAgICBUY2xfT2JqICp2YWx1ZSA9ICgoUHlUY2xPYmplY3QqKWFyZyktPnZhbHVlOwogICAgICAgICBpbnQgb2JqYzsKQEAgLTIxMzIsMTYgKzIzMzksMTYgQEAKICAgICAgICAgaW50IGk7CiAgICAgICAgIGlmIChUY2xfTGlzdE9iakdldEVsZW1lbnRzKFRrYXBwX0ludGVycChzZWxmKSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmpjLCAmb2JqdikgPT0gVENMX0VSUk9SKSB7Ci0gICAgICAgICAgICByZXR1cm4gRnJvbU9iaihzZWxmLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gRnJvbU9iaigoUHlPYmplY3QqKXNlbGYsIHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBpZiAob2JqYyA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKICAgICAgICAgaWYgKG9iamMgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiBGcm9tT2JqKHNlbGYsIG9ianZbMF0pOworICAgICAgICAgICAgcmV0dXJuIEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2WzBdKTsKICAgICAgICAgaWYgKCEodiA9IFB5VHVwbGVfTmV3KG9iamMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2JqYzsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooc2VsZiwgb2JqdltpXSk7CisgICAgICAgICAgICBQeU9iamVjdCAqcyA9IEZyb21PYmooKFB5T2JqZWN0KilzZWxmLCBvYmp2W2ldKTsKICAgICAgICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0odiwgaSwgcykpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMTQ5LDEwICsyMzU2LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZykpCisgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJnKSB8fCBQeUxpc3RfQ2hlY2soYXJnKSkKICAgICAgICAgcmV0dXJuIFNwbGl0T2JqKGFyZyk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0OnNwbGl0IiwgInV0Zi04IiwgJmxpc3QpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiZXQ6c3BsaXQiLCAidXRmLTgiLCAmbGlzdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgobGlzdCk7CiAgICAgdiA9IFNwbGl0KGxpc3QpOwpAQCAtMjE4Myw3ICsyMzkwLDcgQEAKICAqIGZ1bmN0aW9uIG9yIG1ldGhvZC4KICAqLwogc3RhdGljIGludAotUHl0aG9uQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQorUHl0aG9uQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhID0gKFB5dGhvbkNtZF9DbGllbnREYXRhICopY2xpZW50RGF0YTsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZywgKnJlczsKQEAgLTIyNTIsNyArMjQ1OSw3IEBACiB0eXBlZGVmIHN0cnVjdCBDb21tYW5kRXZlbnR7CiAgICAgVGNsX0V2ZW50IGV2OwogICAgIFRjbF9JbnRlcnAqIGludGVycDsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgaW50IGNyZWF0ZTsKICAgICBpbnQgKnN0YXR1czsKICAgICBDbGllbnREYXRhICpkYXRhOwpAQCAtMjI3NSwxOCArMjQ4MiwyNSBAQAogfQogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmNyZWF0ZWNvbW1hbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCisgICAgbmFtZTogc3RyCisgICAgZnVuYzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9DcmVhdGVDb21tYW5kKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTFjNzlhNGVlMmFmNDEwIGlucHV0PTJiYzJjMDQ2YTA5MTQyMzRdKi8KIHsKLSAgICBUa2FwcE9iamVjdCAqc2VsZiA9IChUa2FwcE9iamVjdCopc2VsZnB0cjsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YTsKLSAgICBjaGFyICpjbWROYW1lOwotICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOmNyZWF0ZWNvbW1hbmQiLCAmY21kTmFtZSwgJmZ1bmMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBDSEVDS19TVFJJTkdfTEVOR1RIKGNtZE5hbWUpOworICAgIENIRUNLX1NUUklOR19MRU5HVEgobmFtZSk7CiAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJjb21tYW5kIG5vdCBjYWxsYWJsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzMDMsNyArMjUxNyw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIFB5X0lOQ1JFRihzZWxmKTsKICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgZGF0YS0+c2VsZiA9IHNlbGZwdHI7CisgICAgZGF0YS0+c2VsZiA9IChQeU9iamVjdCAqKSBzZWxmOwogICAgIGRhdGEtPmZ1bmMgPSBmdW5jOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKHNlbGYtPnRocmVhZGVkICYmIHNlbGYtPnRocmVhZF9pZCAhPSBUY2xfR2V0Q3VycmVudFRocmVhZCgpKSB7CkBAIC0yMzE3LDcgKzI1MzEsNyBAQAogICAgICAgICBldi0+ZXYucHJvYyA9IChUY2xfRXZlbnRQcm9jKilUa2FwcF9Db21tYW5kUHJvYzsKICAgICAgICAgZXYtPmludGVycCA9IHNlbGYtPmludGVycDsKICAgICAgICAgZXYtPmNyZWF0ZSA9IDE7Ci0gICAgICAgIGV2LT5uYW1lID0gY21kTmFtZTsKKyAgICAgICAgZXYtPm5hbWUgPSBuYW1lOwogICAgICAgICBldi0+ZGF0YSA9IChDbGllbnREYXRhKWRhdGE7CiAgICAgICAgIGV2LT5zdGF0dXMgPSAmZXJyOwogICAgICAgICBldi0+ZG9uZSA9ICZjb25kOwpAQCAtMjMyOSw3ICsyNTQzLDcgQEAKICAgICB7CiAgICAgICAgIEVOVEVSX1RDTAogICAgICAgICBlcnIgPSBUY2xfQ3JlYXRlQ29tbWFuZCgKLSAgICAgICAgICAgIFRrYXBwX0ludGVycChzZWxmKSwgY21kTmFtZSwgUHl0aG9uQ21kLAorICAgICAgICAgICAgVGthcHBfSW50ZXJwKHNlbGYpLCBuYW1lLCBQeXRob25DbWQsCiAgICAgICAgICAgICAoQ2xpZW50RGF0YSlkYXRhLCBQeXRob25DbWREZWxldGUpID09IE5VTEw7CiAgICAgICAgIExFQVZFX1RDTAogICAgIH0KQEAgLTIzNDQsMTYgKzI1NTgsMjIgQEAKIAogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmRlbGV0ZWNvbW1hbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCisgICAgbmFtZTogc3RyCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9EZWxldGVDb21tYW5kKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjdlOGNiNTg0NWUwZDJkIGlucHV0PWI2MzA2NDY4ZjEwYjIxOWNdKi8KIHsKLSAgICBUa2FwcE9iamVjdCAqc2VsZiA9IChUa2FwcE9iamVjdCopc2VsZnB0cjsKLSAgICBjaGFyICpjbWROYW1lOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6ZGVsZXRlY29tbWFuZCIsICZjbWROYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgQ0hFQ0tfU1RSSU5HX0xFTkdUSChjbWROYW1lKTsKKyAgICBDSEVDS19TVFJJTkdfTEVOR1RIKG5hbWUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoc2VsZi0+dGhyZWFkZWQgJiYgc2VsZi0+dGhyZWFkX2lkICE9IFRjbF9HZXRDdXJyZW50VGhyZWFkKCkpIHsKQEAgLTIzNjcsNyArMjU4Nyw3IEBACiAgICAgICAgIGV2LT5ldi5wcm9jID0gKFRjbF9FdmVudFByb2MqKVRrYXBwX0NvbW1hbmRQcm9jOwogICAgICAgICBldi0+aW50ZXJwID0gc2VsZi0+aW50ZXJwOwogICAgICAgICBldi0+Y3JlYXRlID0gMDsKLSAgICAgICAgZXYtPm5hbWUgPSBjbWROYW1lOworICAgICAgICBldi0+bmFtZSA9IG5hbWU7CiAgICAgICAgIGV2LT5zdGF0dXMgPSAmZXJyOwogICAgICAgICBldi0+ZG9uZSA9ICZjb25kOwogICAgICAgICBUa2FwcF9UaHJlYWRTZW5kKHNlbGYsIChUY2xfRXZlbnQqKWV2LCAmY29uZCwKQEAgLTIzNzgsNyArMjU5OCw3IEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIEVOVEVSX1RDTAotICAgICAgICBlcnIgPSBUY2xfRGVsZXRlQ29tbWFuZChzZWxmLT5pbnRlcnAsIGNtZE5hbWUpOworICAgICAgICBlcnIgPSBUY2xfRGVsZXRlQ29tbWFuZChzZWxmLT5pbnRlcnAsIG5hbWUpOwogICAgICAgICBMRUFWRV9UQ0wKICAgICB9CiAgICAgaWYgKGVyciA9PSAtMSkgewpAQCAtMjQ1OSwxNyArMjY3OSwyMyBAQAogICAgIExFQVZFX1BZVEhPTgogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5jcmVhdGVmaWxlaGFuZGxlcgorCisgICAgZmlsZTogb2JqZWN0CisgICAgbWFzazogaW50CisgICAgZnVuYzogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9DcmVhdGVGaWxlSGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0gICAgIC8qIGFyZ3MgaXMgKGZpbGUsIG1hc2ssIGZ1bmMpICovCitfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hc2ssIFB5T2JqZWN0ICpmdW5jKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY3M2NlODJkZTgwMWMzNTMgaW5wdXQ9ODQ5NDNhNTI4NmU0Nzk0N10qLwogewogICAgIEZpbGVIYW5kbGVyX0NsaWVudERhdGEgKmRhdGE7Ci0gICAgUHlPYmplY3QgKmZpbGUsICpmdW5jOwotICAgIGludCBtYXNrLCB0ZmlsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2lPOmNyZWF0ZWZpbGVoYW5kbGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGludCB0ZmlsZTsKIAogICAgIENIRUNLX1RDTF9BUFBBUlRNRU5UOwogCkBAIC0yNDkyLDE0ICsyNzE4LDE5IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9EZWxldGVGaWxlSGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmZpbGU7Ci0gICAgaW50IHRmaWxlOworLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuZGVsZXRlZmlsZWhhbmRsZXIKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpkZWxldGVmaWxlaGFuZGxlciIsICZmaWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZmlsZTogb2JqZWN0CisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kZWxldGVmaWxlaGFuZGxlcihUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjUzY2M5NmViZjk0NzZmZCBpbnB1dD1hYmJlYzE5ZDY2MzEyZTJhXSovCit7CisgICAgaW50IHRmaWxlOwogCiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAKQEAgLTI1MjgsMTQgKzI3NTksMjAgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIH0gVGt0dE9iamVjdDsKIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGt0aW1lcnRva2VuLmRlbGV0ZXRpbWVyaGFuZGxlcgorCisgICAgc2VsZjogc2VsZih0eXBlPSJUa3R0T2JqZWN0ICoiKQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua3R0X0RlbGV0ZVRpbWVySGFuZGxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTI1YmE1ZGQ1OTRlNTIwODRdKi8KIHsKLSAgICBUa3R0T2JqZWN0ICp2ID0gKFRrdHRPYmplY3QgKilzZWxmOworICAgIFRrdHRPYmplY3QgKnYgPSBzZWxmOwogICAgIFB5T2JqZWN0ICpmdW5jID0gdi0+ZnVuYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmRlbGV0ZXRpbWVyaGFuZGxlciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodi0+dG9rZW4gIT0gTlVMTCkgewogICAgICAgICBUY2xfRGVsZXRlVGltZXJIYW5kbGVyKHYtPnRva2VuKTsKICAgICAgICAgdi0+dG9rZW4gPSBOVUxMOwpAQCAtMjU0OCwxMiArMjc4NSw2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBUa3R0X21ldGhvZHNbXSA9Ci17Ci0gICAgeyJkZWxldGV0aW1lcmhhbmRsZXIiLCBUa3R0X0RlbGV0ZVRpbWVySGFuZGxlciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KIHN0YXRpYyBUa3R0T2JqZWN0ICoKIFRrdHRfTmV3KFB5T2JqZWN0ICpmdW5jKQogewpAQCAtMjU5NSwyMiArMjgyNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmZ1bmMgPT0gTlVMTCA/ICIsIGhhbmRsZXIgZGVsZXRlZCIgOiAiIik7CiB9CiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBUa3R0X1R5cGVfc2xvdHNbXSA9IHsKLSAgICB7UHlfdHBfZGVhbGxvYywgVGt0dF9EZWFsbG9jfSwKLSAgICB7UHlfdHBfcmVwciwgVGt0dF9SZXByfSwKLSAgICB7UHlfdHBfbWV0aG9kcywgVGt0dF9tZXRob2RzfSwKLSAgICB7MCwgMH0KLX07Ci0KLXN0YXRpYyBQeVR5cGVfU3BlYyBUa3R0X1R5cGVfc3BlYyA9IHsKLSAgICAiX3RraW50ZXIudGt0aW1lcnRva2VuIiwKLSAgICBzaXplb2YoVGt0dE9iamVjdCksCi0gICAgMCwKLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCi0gICAgVGt0dF9UeXBlX3Nsb3RzLAotfTsKLQotCiAvKiogVGltZXIgSGFuZGxlciAqKi8KIAogc3RhdGljIHZvaWQKQEAgLTI2NDEsMTYgKzI4NTYsMjIgQEAKICAgICBMRUFWRV9QWVRIT04KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuY3JlYXRldGltZXJoYW5kbGVyCisKKyAgICBtaWxsaXNlY29uZHM6IGludAorICAgIGZ1bmM6IG9iamVjdAorICAgIC8KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfQ3JlYXRlVGltZXJIYW5kbGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgbWlsbGlzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmRhNTk1OWI5ZDAzMTkxMSBpbnB1dD1iYTY3MjlmMzJmMDI3N2E1XSovCiB7Ci0gICAgaW50IG1pbGxpc2Vjb25kczsKLSAgICBQeU9iamVjdCAqZnVuYzsKICAgICBUa3R0T2JqZWN0ICp2OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYmFkIGFyZ3VtZW50IGxpc3QiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNjcwLDE4ICsyODkxLDIzIEBACiAKIC8qKiBFdmVudCBMb29wICoqLwogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5tYWlubG9vcAorCisgICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKKyAgICB0aHJlc2hvbGQ6IGludCA9IDAKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX01haW5Mb29wKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGJhOGVhYmJlNTc4NDFiMCBpbnB1dD1hZDU3YzljMWRkMmI5NDcwXSovCiB7Ci0gICAgaW50IHRocmVzaG9sZCA9IDA7Ci0gICAgVGthcHBPYmplY3QgKnNlbGYgPSAoVGthcHBPYmplY3QqKXNlbGZwdHI7CiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwogI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOm1haW5sb29wIiwgJnRocmVzaG9sZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgQ0hFQ0tfVENMX0FQUEFSVE1FTlQ7CiAgICAgc2VsZi0+ZGlzcGF0Y2hpbmcgPSAxOwogCkBAIC0yNzMzLDQ0ICsyOTU5LDU2IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2FwcF9Eb09uZUV2ZW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIGludCBydjsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLmRvb25lZXZlbnQKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZG9vbmVldmVudCIsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGZsYWdzOiBpbnQgPSAwCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yN2M2YjJhYTQ2NGNhYzI5IGlucHV0PTY1NDJiOTI4ZTM2NGI3OTNdKi8KK3sKKyAgICBpbnQgcnY7CiAKICAgICBFTlRFUl9UQ0wKICAgICBydiA9IFRjbF9Eb09uZUV2ZW50KGZsYWdzKTsKICAgICBMRUFWRV9UQ0wKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHJ2KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJ2KTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAucXVpdAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfUXVpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9xdWl0X2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2YyMWVlZmY0ODFmNzU0ZiBpbnB1dD1lMDMwMjBkYzM4YWZmMjNjXSovCiB7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpxdWl0IikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcXVpdE1haW5Mb29wID0gMTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIudGthcHAuaW50ZXJwYWRkcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGthcHBfSW50ZXJwQWRkcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyX2ltcGwoVGthcHBPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmNhYWFlMzI3M2IzYzk1YSBpbnB1dD0yZGQzMmNiZGRiNTVhMTExXSovCiB7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjppbnRlcnBhZGRyIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cihUa2FwcF9JbnRlcnAoc2VsZikpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci50a2FwcC5sb2FkdGsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRrYXBwX1RrSW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl90a2FwcF9sb2FkdGtfaW1wbChUa2FwcE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lOWUxMGE5NTRjZTQ2ZDJhIGlucHV0PWI1ZTgyYWZlZGQ2MzU0ZjBdKi8KIHsKICAgICBUY2xfSW50ZXJwICppbnRlcnAgPSBUa2FwcF9JbnRlcnAoc2VsZik7CiAgICAgY29uc3QgY2hhciAqIF90a19leGlzdHMgPSBOVUxMOwpAQCAtMjc5Niw3ICszMDM0LDcgQEAKICAgICBpZiAoZXJyID09IFRDTF9FUlJPUikgewogICAgICAgICAvKiBUaGlzIHNldHMgYW4gZXhjZXB0aW9uLCBidXQgd2UgY2Fubm90IHJldHVybiByaWdodAogICAgICAgICAgICBhd2F5IGJlY2F1c2Ugd2UgbmVlZCB0byBleGl0IHRoZSBvdmVybGFwIGZpcnN0LiAqLwotICAgICAgICBUa2ludGVyX0Vycm9yKHNlbGYpOworICAgICAgICBUa2ludGVyX0Vycm9yKChQeU9iamVjdCAqKXNlbGYpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIF90a19leGlzdHMgPSBUa2FwcF9SZXN1bHQoc2VsZik7CiAgICAgfQpAQCAtMjgzMSw1OSArMzA2OSwyMyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotVGthcHBfV2lsbERpc3BhdGNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLnRrYXBwLndpbGxkaXNwYXRjaAogCi0gICAgKChUa2FwcE9iamVjdCopc2VsZiktPmRpc3BhdGNoaW5nID0gMTsKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZTNmNDZkMjQ0NjQyMTU1IGlucHV0PTI2MzA2OTk3Njc4MDg5NzBdKi8KK3sKKyAgICBzZWxmLT5kaXNwYXRjaGluZyA9IDE7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi0vKioqKiBUa2FwcCBNZXRob2QgTGlzdCAqKioqLwotCi1zdGF0aWMgUHlNZXRob2REZWYgVGthcHBfbWV0aG9kc1tdID0KLXsKLSAgICB7IndpbGxkaXNwYXRjaCIsICAgICAgIFRrYXBwX1dpbGxEaXNwYXRjaCwgTUVUSF9OT0FSR1N9LAotICAgIHsid2FudG9iamVjdHMiLCAgICAgICAgICAgIFRrYXBwX1dhbnRPYmplY3RzLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY2FsbCIsICAgICAgICAgICAgICAgICAgIFRrYXBwX0NhbGwsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJldmFsIiwgICAgICAgICAgICAgICAgICAgVGthcHBfRXZhbCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImV2YWxmaWxlIiwgICAgICAgICAgICAgICBUa2FwcF9FdmFsRmlsZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InJlY29yZCIsICAgICAgICAgICAgICAgICBUa2FwcF9SZWNvcmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJhZGRlcnJvcmluZm8iLCAgICAgICBUa2FwcF9BZGRFcnJvckluZm8sIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzZXR2YXIiLCAgICAgICAgICAgICAgICAgVGthcHBfU2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2xvYmFsc2V0dmFyIiwgICAgICAgVGthcHBfR2xvYmFsU2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0dmFyIiwgICAgICAgICAgICAgICAgIFRrYXBwX0dldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbGdldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbEdldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InVuc2V0dmFyIiwgICAgICAgICAgICAgICBUa2FwcF9VbnNldFZhciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7Imdsb2JhbHVuc2V0dmFyIiwgICAgIFRrYXBwX0dsb2JhbFVuc2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZ2V0aW50IiwgICAgICAgICAgICAgICAgIFRrYXBwX0dldEludCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImdldGRvdWJsZSIsICAgICAgICAgICAgICBUa2FwcF9HZXREb3VibGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJnZXRib29sZWFuIiwgICAgICAgICAgICAgVGthcHBfR2V0Qm9vbGVhbiwgTUVUSF9PfSwKLSAgICB7ImV4cHJzdHJpbmciLCAgICAgICAgICAgICBUa2FwcF9FeHByU3RyaW5nLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXhwcmxvbmciLCAgICAgICAgICAgICAgIFRrYXBwX0V4cHJMb25nLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZXhwcmRvdWJsZSIsICAgICAgICAgICAgIFRrYXBwX0V4cHJEb3VibGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJleHByYm9vbGVhbiIsICAgICAgICBUa2FwcF9FeHByQm9vbGVhbiwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InNwbGl0bGlzdCIsICAgICAgICAgICAgICBUa2FwcF9TcGxpdExpc3QsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzcGxpdCIsICAgICAgICAgICAgICAgICAgVGthcHBfU3BsaXQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJjcmVhdGVjb21tYW5kIiwgICAgICBUa2FwcF9DcmVhdGVDb21tYW5kLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiZGVsZXRlY29tbWFuZCIsICAgICAgVGthcHBfRGVsZXRlQ29tbWFuZCwgTUVUSF9WQVJBUkdTfSwKLSNpZmRlZiBIQVZFX0NSRUFURUZJTEVIQU5ETEVSCi0gICAgeyJjcmVhdGVmaWxlaGFuZGxlciIsICBUa2FwcF9DcmVhdGVGaWxlSGFuZGxlciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImRlbGV0ZWZpbGVoYW5kbGVyIiwgIFRrYXBwX0RlbGV0ZUZpbGVIYW5kbGVyLCBNRVRIX1ZBUkFSR1N9LAotI2VuZGlmCi0gICAgeyJjcmVhdGV0aW1lcmhhbmRsZXIiLCBUa2FwcF9DcmVhdGVUaW1lckhhbmRsZXIsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJtYWlubG9vcCIsICAgICAgICAgICAgICAgVGthcHBfTWFpbkxvb3AsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJkb29uZWV2ZW50IiwgICAgICAgICAgICAgVGthcHBfRG9PbmVFdmVudCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InF1aXQiLCAgICAgICAgICAgICAgICAgICBUa2FwcF9RdWl0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaW50ZXJwYWRkciIsICAgICAgICAgVGthcHBfSW50ZXJwQWRkciwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImxvYWR0ayIsICAgICAgICAgICAgICAgICBUa2FwcF9Ua0luaXQsIE1FVEhfTk9BUkdTfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICBOVUxMfQotfTsKLQotCi0KIC8qKioqIFRrYXBwIFR5cGUgTWV0aG9kcyAqKioqLwogCiBzdGF0aWMgdm9pZApAQCAtMjg5OSw0MSArMzEwMSwyNiBAQAogICAgIERpc2FibGVFdmVudEhvb2soKTsKIH0KIAotc3RhdGljIFB5VHlwZV9TbG90IFRrYXBwX1R5cGVfc2xvdHNbXSA9IHsKLSAgICB7UHlfdHBfZGVhbGxvYywgVGthcHBfRGVhbGxvY30sCi0gICAge1B5X3RwX21ldGhvZHMsIFRrYXBwX21ldGhvZHN9LAotICAgIHswLCAwfQotfTsKLQotCi1zdGF0aWMgUHlUeXBlX1NwZWMgVGthcHBfVHlwZV9zcGVjID0gewotICAgICJfdGtpbnRlci50a2FwcCIsCi0gICAgc2l6ZW9mKFRrYXBwT2JqZWN0KSwKLSAgICAwLAotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKLSAgICBUa2FwcF9UeXBlX3Nsb3RzLAotfTsKLQogCiAKIC8qKioqIFRraW50ZXIgTW9kdWxlICoqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdCogdHVwbGU7Ci0gICAgaW50IHNpemU7IC8qIGN1cnJlbnQgc2l6ZSAqLwotICAgIGludCBtYXhzaXplOyAvKiBhbGxvY2F0ZWQgc2l6ZSAqLworICAgIFB5X3NzaXplX3Qgc2l6ZTsgLyogY3VycmVudCBzaXplICovCisgICAgUHlfc3NpemVfdCBtYXhzaXplOyAvKiBhbGxvY2F0ZWQgc2l6ZSAqLwogfSBGbGF0dGVuQ29udGV4dDsKIAogc3RhdGljIGludAotX2J1bXAoRmxhdHRlbkNvbnRleHQqIGNvbnRleHQsIGludCBzaXplKQorX2J1bXAoRmxhdHRlbkNvbnRleHQqIGNvbnRleHQsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICAvKiBleHBhbmQgdHVwbGUgdG8gaG9sZCAoYXQgbGVhc3QpIHNpemUgbmV3IGl0ZW1zLgogICAgICAgIHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkICovCiAKLSAgICBpbnQgbWF4c2l6ZSA9IGNvbnRleHQtPm1heHNpemUgKiAyOworICAgIFB5X3NzaXplX3QgbWF4c2l6ZSA9IGNvbnRleHQtPm1heHNpemUgKiAyOyAgLyogbmV2ZXIgb3ZlcmZsb3dzICovCiAKICAgICBpZiAobWF4c2l6ZSA8IGNvbnRleHQtPnNpemUgKyBzaXplKQotICAgICAgICBtYXhzaXplID0gY29udGV4dC0+c2l6ZSArIHNpemU7CisgICAgICAgIG1heHNpemUgPSBjb250ZXh0LT5zaXplICsgc2l6ZTsgIC8qIG5ldmVyIG92ZXJmbG93cyAqLwogCiAgICAgY29udGV4dC0+bWF4c2l6ZSA9IG1heHNpemU7CiAKQEAgLTI5NDUsNDEgKzMxMzIsMjEgQEAKIHsKICAgICAvKiBhZGQgdHVwbGUgb3IgbGlzdCB0byBhcmd1bWVudCB0dXBsZSAocmVjdXJzaXZlbHkpICovCiAKLSAgICBpbnQgaSwgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKICAgICBpZiAoZGVwdGggPiAxMDAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5lc3RpbmcgdG9vIGRlZXAgaW4gX2ZsYXR0ZW4iKTsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBlbHNlIGlmIChQeUxpc3RfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShpdGVtKTsKKyAgICB9IGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soaXRlbSkgfHwgUHlMaXN0X0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIHNpemUgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoaXRlbSk7CiAgICAgICAgIC8qIHByZWFsbG9jYXRlIChhc3N1bWUgbm8gbmVzdGluZykgKi8KICAgICAgICAgaWYgKGNvbnRleHQtPnNpemUgKyBzaXplID4gY29udGV4dC0+bWF4c2l6ZSAmJgogICAgICAgICAgICAgIV9idW1wKGNvbnRleHQsIHNpemUpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIC8qIGNvcHkgaXRlbXMgdG8gb3V0cHV0IHR1cGxlICovCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlMaXN0X0dFVF9JVEVNKGl0ZW0sIGkpOwotICAgICAgICAgICAgaWYgKFB5TGlzdF9DaGVjayhvKSB8fCBQeVR1cGxlX0NoZWNrKG8pKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFfZmxhdHRlbjEoY29udGV4dCwgbywgZGVwdGggKyAxKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG8gIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5zaXplICsgMSA+IGNvbnRleHQtPm1heHNpemUgJiYKLSAgICAgICAgICAgICAgICAgICAgIV9idW1wKGNvbnRleHQsIDEpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYobyk7Ci0gICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjb250ZXh0LT50dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnNpemUrKywgbyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgLyogc2FtZSwgZm9yIHR1cGxlcyAqLwotICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShpdGVtKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnNpemUgKyBzaXplID4gY29udGV4dC0+bWF4c2l6ZSAmJgotICAgICAgICAgICAgIV9idW1wKGNvbnRleHQsIHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShpdGVtLCBpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW0sIGkpOwogICAgICAgICAgICAgaWYgKFB5TGlzdF9DaGVjayhvKSB8fCBQeVR1cGxlX0NoZWNrKG8pKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFfZmxhdHRlbjEoY29udGV4dCwgbywgZGVwdGggKyAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0yOTk5LDE0ICszMTY2LDE5IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLl9mbGF0dGVuCisKKyAgICBpdGVtOiBvYmplY3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLVRraW50ZXJfRmxhdHRlbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfdGtpbnRlcl9fZmxhdHRlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlbSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NTA1MDQ5ZWM3NGMzNDgwIGlucHV0PTZiOWMxMjI2MGFhMTE1N2ZdKi8KIHsKICAgICBGbGF0dGVuQ29udGV4dCBjb250ZXh0OwotICAgIFB5T2JqZWN0KiBpdGVtOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOl9mbGF0dGVuIiwgJml0ZW0pKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGNvbnRleHQubWF4c2l6ZSA9IFB5U2VxdWVuY2VfU2l6ZShpdGVtKTsKICAgICBpZiAoY29udGV4dC5tYXhzaXplIDwgMCkKQEAgLTMwMjksMjYgKzMyMDEsMzMgQEAKICAgICByZXR1cm4gY29udGV4dC50dXBsZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3RraW50ZXIuY3JlYXRlCisKKyAgICBzY3JlZW5OYW1lOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgYmFzZU5hbWU6IHN0ciA9IE5VTEwKKyAgICBjbGFzc05hbWU6IHN0ciA9ICJUayIKKyAgICBpbnRlcmFjdGl2ZTogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICB3YW50b2JqZWN0czogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICB3YW50VGs6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICAgICAgaWYgZmFsc2UsIHRoZW4gVGtfSW5pdCgpIGRvZXNuJ3QgZ2V0IGNhbGxlZAorICAgIHN5bmM6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgICAgIGlmIHRydWUsIHRoZW4gcGFzcyAtc3luYyB0byB3aXNoCisgICAgdXNlOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgICAgIGlmIG5vdCBOb25lLCB0aGVuIHBhc3MgLXVzZSB0byB3aXNoCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1Ua2ludGVyX0NyZWF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfdGtpbnRlcl9jcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzY3JlZW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFzZU5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iODg0NzgwMGZjM2IyN2ViIGlucHV0PTBkNTIyYWFkMWNiMGNhMGVdKi8KIHsKLSAgICBjaGFyICpzY3JlZW5OYW1lID0gTlVMTDsKLSAgICBjaGFyICpiYXNlTmFtZSA9IE5VTEw7IC8qIFhYWCB0aGlzIGlzIG5vdCB1c2VkIGFueW1vcmU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgZ2V0dGluZyByaWQgb2YgaXQuICovCi0gICAgY2hhciAqY2xhc3NOYW1lID0gTlVMTDsKLSAgICBpbnQgaW50ZXJhY3RpdmUgPSAwOwotICAgIGludCB3YW50b2JqZWN0cyA9IDA7Ci0gICAgaW50IHdhbnRUayA9IDE7ICAgICAvKiBJZiBmYWxzZSwgdGhlbiBUa19Jbml0KCkgZG9lc24ndCBnZXQgY2FsbGVkICovCi0gICAgaW50IHN5bmMgPSAwOyAvKiBwYXNzIC1zeW5jIHRvIHdpc2ggKi8KLSAgICBjaGFyICp1c2UgPSBOVUxMOyAvKiBwYXNzIC11c2UgdG8gd2lzaCAqLwotCi0gICAgY2xhc3NOYW1lID0gIlRrIjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHpzc2lpaWl6OmNyZWF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZzY3JlZW5OYW1lLCAmYmFzZU5hbWUsICZjbGFzc05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZpbnRlcmFjdGl2ZSwgJndhbnRvYmplY3RzLCAmd2FudFRrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc3luYywgJnVzZSkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIFhYWCBiYXNlTmFtZSBpcyBub3QgdXNlZCBhbnltb3JlOworICAgICAqIHRyeSBnZXR0aW5nIHJpZCBvZiBpdC4gKi8KICAgICBDSEVDS19TVFJJTkdfTEVOR1RIKHNjcmVlbk5hbWUpOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgoYmFzZU5hbWUpOwogICAgIENIRUNLX1NUUklOR19MRU5HVEgoY2xhc3NOYW1lKTsKQEAgLTMwNTksMTIgKzMyMzgsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jLCB1c2UpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfdGtpbnRlci5zZXRidXN5d2FpdGludGVydmFsCisKKyAgICBuZXdfdmFsOiBpbnQKKyAgICAvCisKK1NldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuCisKK0l0IHNob3VsZCBiZSBzZXQgdG8gYSBkaXZpc29yIG9mIHRoZSBtYXhpbXVtIHRpbWUgYmV0d2VlbiBmcmFtZXMgaW4gYW4gYW5pbWF0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotVGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK190a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmV3X3ZhbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjlkN2VmNzk0MDQ2MWVhIGlucHV0PWRlY2ExZDZmOWU2ZGFlNDddKi8KIHsKLSAgICBpbnQgbmV3X3ZhbDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG5ld192YWwgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJ1c3l3YWl0aW50ZXJ2YWwgbXVzdCBiZSA+PSAwIik7CkBAIC0zMDc0LDM0ICszMjYyLDEwMyBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1zdGF0aWMgY2hhciBzZXRidXN5d2FpdGludGVydmFsX2RvY1tdID0KLSJzZXRidXN5d2FpdGludGVydmFsKG4pIC0+IE5vbmVcblwKLVxuXAotU2V0IHRoZSBidXN5LXdhaXQgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gc3VjY2Vzc2l2ZVxuXAotY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuXG5cCi1JdCBzaG91bGQgYmUgc2V0IHRvIGEgZGl2aXNvciBvZiB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW5cblwKLWZyYW1lcyBpbiBhbiBhbmltYXRpb24uIjsKKy8qW2NsaW5pYyBpbnB1dF0KK190a2ludGVyLmdldGJ1c3l3YWl0aW50ZXJ2YWwgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1Ua2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmV0dXJuIHRoZSBjdXJyZW50IGJ1c3ktd2FpdCBpbnRlcnZhbCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlkMDllZWUwMjZlOTY5NzEgaW5wdXQ9YTY5NTg3OGQyZDU3NmE4NF0qLwogewotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoVGtpbnRlcl9idXN5d2FpdGludGVydmFsKTsKKyAgICByZXR1cm4gVGtpbnRlcl9idXN5d2FpdGludGVydmFsOwogfQogCi1zdGF0aWMgY2hhciBnZXRidXN5d2FpdGludGVydmFsX2RvY1tdID0KLSJnZXRidXN5d2FpdGludGVydmFsKCkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgY3VycmVudCBidXN5LXdhaXQgaW50ZXJ2YWwgYmV0d2VlbiBzdWNjZXNzaXZlXG5cCi1jYWxscyB0byBUY2xfRG9PbmVFdmVudCBpbiBhIHRocmVhZGVkIFB5dGhvbiBpbnRlcnByZXRlci4iOworI2luY2x1ZGUgImNsaW5pYy9fdGtpbnRlci5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiBUa3R0X21ldGhvZHNbXSA9Cit7CisgICAgX1RLSU5URVJfVEtUSU1FUlRPS0VOX0RFTEVURVRJTUVSSEFORExFUl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBUa3R0X1R5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfdHBfZGVhbGxvYywgVGt0dF9EZWFsbG9jfSwKKyAgICB7UHlfdHBfcmVwciwgVGt0dF9SZXByfSwKKyAgICB7UHlfdHBfbWV0aG9kcywgVGt0dF9tZXRob2RzfSwKKyAgICB7MCwgMH0KK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBUa3R0X1R5cGVfc3BlYyA9IHsKKyAgICAiX3RraW50ZXIudGt0aW1lcnRva2VuIiwKKyAgICBzaXplb2YoVGt0dE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgVGt0dF9UeXBlX3Nsb3RzLAorfTsKKworCisvKioqKiBUa2FwcCBNZXRob2QgTGlzdCAqKioqLworCitzdGF0aWMgUHlNZXRob2REZWYgVGthcHBfbWV0aG9kc1tdID0KK3sKKyAgICBfVEtJTlRFUl9US0FQUF9XSUxMRElTUEFUQ0hfTUVUSE9EREVGCisgICAgeyJ3YW50b2JqZWN0cyIsICAgICAgICAgICAgVGthcHBfV2FudE9iamVjdHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJjYWxsIiwgICAgICAgICAgICAgICAgICAgVGthcHBfQ2FsbCwgTUVUSF9WQVJBUkdTfSwKKyAgICBfVEtJTlRFUl9US0FQUF9FVkFMX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VWQUxGSUxFX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX1JFQ09SRF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9BRERFUlJJTkZPX01FVEhPRERFRgorICAgIHsic2V0dmFyIiwgICAgICAgICAgICAgICAgIFRrYXBwX1NldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Imdsb2JhbHNldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbFNldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImdldHZhciIsICAgICAgIFRrYXBwX0dldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Imdsb2JhbGdldHZhciIsICAgICAgIFRrYXBwX0dsb2JhbEdldFZhciwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InVuc2V0dmFyIiwgICAgIFRrYXBwX1Vuc2V0VmFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZ2xvYmFsdW5zZXR2YXIiLCAgICAgVGthcHBfR2xvYmFsVW5zZXRWYXIsIE1FVEhfVkFSQVJHU30sCisgICAgX1RLSU5URVJfVEtBUFBfR0VUSU5UX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0dFVERPVUJMRV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9HRVRCT09MRUFOX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0VYUFJTVFJJTkdfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRVhQUkxPTkdfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfRVhQUkRPVUJMRV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9FWFBSQk9PTEVBTl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9TUExJVExJU1RfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfU1BMSVRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfQ1JFQVRFQ09NTUFORF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9ERUxFVEVDT01NQU5EX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX0NSRUFURVRJTUVSSEFORExFUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9NQUlOTE9PUF9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9ET09ORUVWRU5UX01FVEhPRERFRgorICAgIF9US0lOVEVSX1RLQVBQX1FVSVRfTUVUSE9EREVGCisgICAgX1RLSU5URVJfVEtBUFBfSU5URVJQQUREUl9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9US0FQUF9MT0FEVEtfTUVUSE9EREVGCisgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgTlVMTH0KK307CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBUa2FwcF9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RlYWxsb2MsIFRrYXBwX0RlYWxsb2N9LAorICAgIHtQeV90cF9tZXRob2RzLCBUa2FwcF9tZXRob2RzfSwKKyAgICB7MCwgMH0KK307CisKKworc3RhdGljIFB5VHlwZV9TcGVjIFRrYXBwX1R5cGVfc3BlYyA9IHsKKyAgICAiX3RraW50ZXIudGthcHAiLAorICAgIHNpemVvZihUa2FwcE9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgVGthcHBfVHlwZV9zbG90cywKK307CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVNZXRob2RzW10gPQogewotICAgIHsiX2ZsYXR0ZW4iLCAgICAgICAgICAgVGtpbnRlcl9GbGF0dGVuLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiY3JlYXRlIiwgICAgICAgICAgICAgVGtpbnRlcl9DcmVhdGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzZXRidXN5d2FpdGludGVydmFsIixUa2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWwsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldGJ1c3l3YWl0aW50ZXJ2YWxfZG9jfSwKLSAgICB7ImdldGJ1c3l3YWl0aW50ZXJ2YWwiLChQeUNGdW5jdGlvbilUa2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgZ2V0YnVzeXdhaXRpbnRlcnZhbF9kb2N9LAorICAgIF9US0lOVEVSX19GTEFUVEVOX01FVEhPRERFRgorICAgIF9US0lOVEVSX0NSRUFURV9NRVRIT0RERUYKKyAgICBfVEtJTlRFUl9TRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRgorICAgIF9US0lOVEVSX0dFVEJVU1lXQUlUSU5URVJWQUxfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICAgICBOVUxMfQogfTsKIApAQCAtMzM0NSw4ICszNjAyLDQwIEBACiAgICAgdWV4ZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgLTEpOwogICAgIGlmICh1ZXhlKSB7CiAgICAgICAgIGNleGUgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHVleGUpOwotICAgICAgICBpZiAoY2V4ZSkKKyAgICAgICAgaWYgKGNleGUpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBpbnQgc2V0X3ZhciA9IDA7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyX3BhdGg7CisgICAgICAgICAgICB3Y2hhcl90ICp3Y3NfcGF0aDsKKyAgICAgICAgICAgIERXT1JEIHJldDsKKworICAgICAgICAgICAgcmV0ID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwsIDApOworCisgICAgICAgICAgICBpZiAoIXJldCAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9FTlZWQVJfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICAgICAgc3RyX3BhdGggPSBfZ2V0X3RjbF9saWJfcGF0aCgpOworICAgICAgICAgICAgICAgIGlmIChzdHJfcGF0aCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdHJfcGF0aCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHdjc19wYXRoID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoc3RyX3BhdGgsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBpZiAod2NzX3BhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIHdjc19wYXRoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0X3ZhciA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBUY2xfRmluZEV4ZWN1dGFibGUoUHlCeXRlc19Bc1N0cmluZyhjZXhlKSk7CisKKyAgICAgICAgICAgIGlmIChzZXRfdmFyKSB7CisgICAgICAgICAgICAgICAgU2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoTCJUQ0xfTElCUkFSWSIsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod2NzX3BhdGgpOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIFRjbF9GaW5kRXhlY3V0YWJsZShQeUJ5dGVzX0FzU3RyaW5nKGNleGUpKTsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihjZXhlKTsKICAgICAgICAgUHlfREVDUkVGKHVleGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMgYi9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCmluZGV4IDQwOWY0ZGIuLjIyNmE0NzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwpAQCAtMTYsMTQgKzE2LDExIEBACiAjICBkZWZpbmUgVFJBQ0VfREVCVUcKICNlbmRpZgogCi0jZGVmaW5lIF9TVFIoVkFMKSAjVkFMCi0jZGVmaW5lIFNUUihWQUwpIF9TVFIoVkFMKQotCiAvKiBQcm90ZWN0ZWQgYnkgdGhlIEdJTCAqLwogc3RhdGljIHN0cnVjdCB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgbWVtOwotICAgIFB5TWVtQWxsb2NhdG9yIHJhdzsKLSAgICBQeU1lbUFsbG9jYXRvciBvYmo7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBtZW07CisgICAgUHlNZW1BbGxvY2F0b3JFeCByYXc7CisgICAgUHlNZW1BbGxvY2F0b3JFeCBvYmo7CiB9IGFsbG9jYXRvcnM7CiAKIHN0YXRpYyBzdHJ1Y3QgewpAQCAtODIsNyArNzksNyBAQAogICAgICAgICAoc2l6ZW9mKHRyYWNlYmFja190KSArIHNpemVvZihmcmFtZV90KSAqIChORlJBTUUgLSAxKSkKIAogI2RlZmluZSBNQVhfTkZSQU1FIFwKLSAgICAgICAgKChJTlRfTUFYIC0gc2l6ZW9mKHRyYWNlYmFja190KSkgLyBzaXplb2YoZnJhbWVfdCkgKyAxKQorICAgICAgICAoKElOVF9NQVggLSAoaW50KXNpemVvZih0cmFjZWJhY2tfdCkpIC8gKGludClzaXplb2YoZnJhbWVfdCkgKyAxKQogCiBzdGF0aWMgUHlPYmplY3QgKnVua25vd25fZmlsZW5hbWUgPSBOVUxMOwogc3RhdGljIHRyYWNlYmFja190IHRyYWNlbWFsbG9jX2VtcHR5X3RyYWNlYmFjazsKQEAgLTQ3NiwxNyArNDczLDIyIEBACiB9CiAKIHN0YXRpYyB2b2lkKgotdHJhY2VtYWxsb2NfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCit0cmFjZW1hbGxvY19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAgICAgdm9pZCAqcHRyOwogCi0gICAgcHRyID0gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBzaXplKTsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU0laRV9NQVggLyBlbHNpemUpOworCisgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgIHB0ciA9IGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CisgICAgZWxzZQorICAgICAgICBwdHIgPSBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIG5lbGVtICogZWxzaXplKTsKICAgICBpZiAocHRyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0ciwgc2l6ZSkgPCAwKSB7CisgICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKICAgICAgICAgLyogRmFpbGVkIHRvIGFsbG9jYXRlIGEgdHJhY2UgZm9yIHRoZSBuZXcgbWVtb3J5IGJsb2NrICovCiAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKQEAgLTQ5OSw3ICs1MDEsNyBAQAogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAgICAgdm9pZCAqcHRyMjsKIAogICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKQEAgLTU0NCw3ICs1NDYsNyBAQAogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2ZyZWUodm9pZCAqY3R4LCB2b2lkICpwdHIpCiB7Ci0gICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAKICAgICBpZiAocHRyID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKQEAgLTU2MCwxMyArNTYyLDE2IEBACiB9CiAKIHN0YXRpYyB2b2lkKgotdHJhY2VtYWxsb2NfbWFsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfYWxsb2NfZ2lsKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICB2b2lkICpwdHI7CiAKICAgICBpZiAoZ2V0X3JlZW50cmFudCgpKSB7Ci0gICAgICAgIFB5TWVtQWxsb2NhdG9yICphbGxvYyA9IChQeU1lbUFsbG9jYXRvciAqKWN0eDsKLSAgICAgICAgcmV0dXJuIGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgc2l6ZSk7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jLT5jYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0sIGVsc2l6ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBhbGxvYy0+bWFsbG9jKGFsbG9jLT5jdHgsIG5lbGVtICogZWxzaXplKTsKICAgICB9CiAKICAgICAvKiBJZ25vcmUgcmVlbnRyYW50IGNhbGwuIFB5T2JqZXRfTWFsbG9jKCkgY2FsbHMgUHlNZW1fTWFsbG9jKCkgZm9yCkBAIC01NzQsMTMgKzU3OSwyNSBAQAogICAgICAgIGFsbG9jYXRpb24gdHdpY2UuICovCiAgICAgc2V0X3JlZW50cmFudCgxKTsKIAotICAgIHB0ciA9IHRyYWNlbWFsbG9jX21hbGxvYyhjdHgsIHNpemUpOworICAgIHB0ciA9IHRyYWNlbWFsbG9jX2FsbG9jKHVzZV9jYWxsb2MsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiAKICAgICBzZXRfcmVlbnRyYW50KDApOwogICAgIHJldHVybiBwdHI7CiB9CiAKIHN0YXRpYyB2b2lkKgordHJhY2VtYWxsb2NfbWFsbG9jX2dpbCh2b2lkICpjdHgsIHNpemVfdCBzaXplKQoreworICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMCwgY3R4LCAxLCBzaXplKTsKK30KKworc3RhdGljIHZvaWQqCit0cmFjZW1hbGxvY19jYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKworc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yZWFsbG9jX2dpbCh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIHZvaWQgKnB0cjI7CkBAIC01OTAsNyArNjA3LDcgQEAKICAgICAgICAgICAgRXhhbXBsZTogUHlNZW1fUmF3UmVhbGxvYygpIGlzIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHB5bWFsbG9jCiAgICAgICAgICAgIChfUHlPYmplY3RfTWFsbG9jKCkgYW5kICBfUHlPYmplY3RfUmVhbGxvYygpKSB0byBhbGxvY2F0ZSBhIG5ldwogICAgICAgICAgICBhcmVuYSAobmV3X2FyZW5hKCkpLiAqLwotICAgICAgICBQeU1lbUFsbG9jYXRvciAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3IgKiljdHg7CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yRXggKiljdHg7CiAKICAgICAgICAgcHRyMiA9IGFsbG9jLT5yZWFsbG9jKGFsbG9jLT5jdHgsIHB0ciwgbmV3X3NpemUpOwogICAgICAgICBpZiAocHRyMiAhPSBOVUxMICYmIHB0ciAhPSBOVUxMKSB7CkBAIC02MTQsNyArNjMxLDcgQEAKIAogI2lmZGVmIFRSQUNFX1JBV19NQUxMT0MKIHN0YXRpYyB2b2lkKgotdHJhY2VtYWxsb2NfcmF3X21hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKQordHJhY2VtYWxsb2NfcmF3X2FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsX3N0YXRlOwpAQCAtNjIyLDggKzYzOSwxMSBAQAogICAgIHZvaWQgKnB0cjsKIAogICAgIGlmIChnZXRfcmVlbnRyYW50KCkpIHsKLSAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OwotICAgICAgICByZXR1cm4gYWxsb2MtPm1hbGxvYyhhbGxvYy0+Y3R4LCBzaXplKTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKKyAgICAgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgICAgICByZXR1cm4gYWxsb2MtPmNhbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSwgZWxzaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGFsbG9jLT5tYWxsb2MoYWxsb2MtPmN0eCwgbmVsZW0gKiBlbHNpemUpOwogICAgIH0KIAogICAgIC8qIElnbm9yZSByZWVudHJhbnQgY2FsbC4gUHlHSUxTdGF0ZV9FbnN1cmUoKSBtYXkgY2FsbCBQeU1lbV9SYXdNYWxsb2MoKQpAQCAtNjMzLDEwICs2NTMsMTAgQEAKIAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgZ2lsX3N0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKLSAgICBwdHIgPSB0cmFjZW1hbGxvY19tYWxsb2MoY3R4LCBzaXplKTsKKyAgICBwdHIgPSB0cmFjZW1hbGxvY19hbGxvYyh1c2VfY2FsbG9jLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxfc3RhdGUpOwogI2Vsc2UKLSAgICBwdHIgPSB0cmFjZW1hbGxvY19tYWxsb2MoY3R4LCBzaXplKTsKKyAgICBwdHIgPSB0cmFjZW1hbGxvY19hbGxvYyh1c2VfY2FsbG9jLCBjdHgsIG5lbGVtLCBlbHNpemUpOwogI2VuZGlmCiAKICAgICBzZXRfcmVlbnRyYW50KDApOwpAQCAtNjQ0LDYgKzY2NCwxOCBAQAogfQogCiBzdGF0aWMgdm9pZCoKK3RyYWNlbWFsbG9jX3Jhd19tYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDAsIGN0eCwgMSwgc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgordHJhY2VtYWxsb2NfcmF3X2NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtNjUzLDcgKzY4NSw3IEBACiAKICAgICBpZiAoZ2V0X3JlZW50cmFudCgpKSB7CiAgICAgICAgIC8qIFJlZW50cmFudCBjYWxsIHRvIFB5TWVtX1Jhd1JlYWxsb2MoKS4gKi8KLSAgICAgICAgUHlNZW1BbGxvY2F0b3IgKmFsbG9jID0gKFB5TWVtQWxsb2NhdG9yICopY3R4OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4ICphbGxvYyA9IChQeU1lbUFsbG9jYXRvckV4ICopY3R4OwogCiAgICAgICAgIHB0cjIgPSBhbGxvYy0+cmVhbGxvYyhhbGxvYy0+Y3R4LCBwdHIsIG5ld19zaXplKTsKIApAQCAtODMxLDcgKzg2Myw3IEBACiBzdGF0aWMgaW50CiB0cmFjZW1hbGxvY19zdGFydChpbnQgbWF4X25mcmFtZSkKIHsKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogICAgIHNpemVfdCBzaXplOwogCiAgICAgaWYgKHRyYWNlbWFsbG9jX2luaXQoKSA8IDApCkBAIC04NTYsNiArODg4LDcgQEAKIAogI2lmZGVmIFRSQUNFX1JBV19NQUxMT0MKICAgICBhbGxvYy5tYWxsb2MgPSB0cmFjZW1hbGxvY19yYXdfbWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IHRyYWNlbWFsbG9jX3Jhd19jYWxsb2M7CiAgICAgYWxsb2MucmVhbGxvYyA9IHRyYWNlbWFsbG9jX3Jhd19yZWFsbG9jOwogICAgIGFsbG9jLmZyZWUgPSB0cmFjZW1hbGxvY19mcmVlOwogCkBAIC04NjUsNiArODk4LDcgQEAKICNlbmRpZgogCiAgICAgYWxsb2MubWFsbG9jID0gdHJhY2VtYWxsb2NfbWFsbG9jX2dpbDsKKyAgICBhbGxvYy5jYWxsb2MgPSB0cmFjZW1hbGxvY19jYWxsb2NfZ2lsOwogICAgIGFsbG9jLnJlYWxsb2MgPSB0cmFjZW1hbGxvY19yZWFsbG9jX2dpbDsKICAgICBhbGxvYy5mcmVlID0gdHJhY2VtYWxsb2NfZnJlZTsKIApAQCAtMTE5NSw3ICsxMjI5LDcgQEAKICAgICBpZiAobmZyYW1lIDwgMSB8fCBuZnJhbWUgPiBNQVhfTkZSQU1FKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInRoZSBudW1iZXIgb2YgZnJhbWVzIG11c3QgYmUgaW4gcmFuZ2UgWzE7ICVpXSIsCi0gICAgICAgICAgICAgICAgICAgICAoaW50KU1BWF9ORlJBTUUpOworICAgICAgICAgICAgICAgICAgICAgTUFYX05GUkFNRSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBuZnJhbWVfaW50ID0gUHlfU0FGRV9ET1dOQ0FTVChuZnJhbWUsIFB5X3NzaXplX3QsIGludCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193ZWFrcmVmLmMgYi9Nb2R1bGVzL193ZWFrcmVmLmMKaW5kZXggZGE1ODkzMS4uN2M5OWQ3ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fd2Vha3JlZi5jCisrKyBiL01vZHVsZXMvX3dlYWtyZWYuYwpAQCAtOSw2ICs5LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWZmZWM3M2I4NTg0NjU5NmRdKi8KIAorI2luY2x1ZGUgImNsaW5pYy9fd2Vha3JlZi5jLmgiCisKIC8qW2NsaW5pYyBpbnB1dF0KIAogX3dlYWtyZWYuZ2V0d2Vha3JlZmNvdW50IC0+IFB5X3NzaXplX3QKQEAgLTE5LDM2ICsyMSw5IEBACiBSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gJ29iamVjdCcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19fLAotImdldHdlYWtyZWZjb3VudCgkbW9kdWxlLCBvYmplY3QsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gXCdvYmplY3RcJy4iKTsKLQotI2RlZmluZSBfV0VBS1JFRl9HRVRXRUFLUkVGQ09VTlRfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHdlYWtyZWZjb3VudCIsIChQeUNGdW5jdGlvbilfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQsIE1FVEhfTywgX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfX30sCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV93ZWFrcmVmX2dldHdlYWtyZWZjb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKLQotICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeV9zc2l6ZV90CiBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzMmVlZGJmZDdkNjllMTAgaW5wdXQ9Y2VkYjY5NzExYjZhMjUwN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZhNmFkMGI5ODI4NWU0NjggaW5wdXQ9Y2VkYjY5NzExYjZhMjUwN10qLwogewogICAgIFB5V2Vha1JlZmVyZW5jZSAqKmxpc3Q7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3dpbmFwaS5jIGIvTW9kdWxlcy9fd2luYXBpLmMKaW5kZXggZDQ3MmM5ZS4uM2U3ZjE4NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fd2luYXBpLmMKKysrIGIvTW9kdWxlcy9fd2luYXBpLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNkZWZpbmUgV0lORE9XU19MRUFOX0FORF9NRUFOCiAjaW5jbHVkZSAid2luZG93cy5oIgogI2luY2x1ZGUgPGNydGRiZy5oPgorI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKIAogI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQogI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBcCkBAIC01Nyw4ICs1OCw2IEBACiAKICNkZWZpbmUgRl9IQU5ETEUgRl9QT0lOVEVSCiAjZGVmaW5lIEZfRFdPUkQgImsiCi0jZGVmaW5lIEZfQk9PTCAiaSIKLSNkZWZpbmUgRl9VSU5UICJJIgogCiAjZGVmaW5lIFRfSEFORExFIFRfUE9JTlRFUgogCkBAIC0xNDYsMTcgKzE0NSw2OCBAQAogICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF93aW5hcGkKK2NsYXNzIF93aW5hcGkuT3ZlcmxhcHBlZCAiT3ZlcmxhcHBlZE9iamVjdCAqIiAiJk92ZXJsYXBwZWRUeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzEzZDNmNWZkMWRhYmI4NF0qLworCisvKltweXRob24gaW5wdXRdCitkZWYgY3JlYXRlX2NvbnZlcnRlcih0eXBlXywgZm9ybWF0X3VuaXQpOgorICAgIG5hbWUgPSB0eXBlXyArICdfY29udmVydGVyJworICAgICMgcmVnaXN0ZXJlZCB1cG9uIGNyZWF0aW9uIGJ5IENDb252ZXJ0ZXIncyBtZXRhY2xhc3MKKyAgICB0eXBlKG5hbWUsIChDQ29udmVydGVyLCksIHsndHlwZSc6IHR5cGVfLCAnZm9ybWF0X3VuaXQnOiBmb3JtYXRfdW5pdH0pCisKKyMgZm9ybWF0IHVuaXQgZGlmZmVycyBiZXR3ZWVuIHBsYXRmb3JtcyBmb3IgdGhlc2UKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0hBTkRMRScsICciIEZfSEFORExFICInKQorY3JlYXRlX2NvbnZlcnRlcignSE1PRFVMRScsICciIEZfSEFORExFICInKQorY3JlYXRlX2NvbnZlcnRlcignTFBTRUNVUklUWV9BVFRSSUJVVEVTJywgJyIgRl9QT0lOVEVSICInKQorCitjcmVhdGVfY29udmVydGVyKCdCT09MJywgJ2knKSAjIEZfQk9PTCB1c2VkIHByZXZpb3VzbHkgKGFsd2F5cyAnaScpCitjcmVhdGVfY29udmVydGVyKCdEV09SRCcsICdrJykgIyBGX0RXT1JEIGlzIGFsd2F5cyAiayIgKHdoaWNoIGlzIG11Y2ggc2hvcnRlcikKK2NyZWF0ZV9jb252ZXJ0ZXIoJ0xQQ1RTVFInLCAncycpCitjcmVhdGVfY29udmVydGVyKCdMUFdTVFInLCAndScpCitjcmVhdGVfY29udmVydGVyKCdVSU5UJywgJ0knKSAjIEZfVUlOVCB1c2VkIHByZXZpb3VzbHkgKGFsd2F5cyAnSScpCisKK2NsYXNzIEhBTkRMRV9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnSEFORExFJworCisgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CisgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSIsIGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ2lmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpXG4gICAgUHlfUkVUVVJOX05PTkU7XG4nKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7XG4nKQorCitjbGFzcyBEV09SRF9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnRFdPUkQnCisKKyAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKKyAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCisgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCIsIGRhdGEpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAorICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTtcbicpCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zNzQwNzY5Nzk1OTZlYmJhXSovCisKKyNpbmNsdWRlICJjbGluaWMvX3dpbmFwaS5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuT3ZlcmxhcHBlZC5HZXRPdmVybGFwcGVkUmVzdWx0CisKKyAgICB3YWl0OiBib29sCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0KE92ZXJsYXBwZWRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp3YWl0b2JqKQorX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBpbnQgd2FpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZGQwYzFlZDY1MThjZDAzIGlucHV0PTE5NDUwNWVlOGUwZTM1NjVdKi8KIHsKLSAgICBpbnQgd2FpdDsKICAgICBCT09MIHJlczsKICAgICBEV09SRCB0cmFuc2ZlcnJlZCA9IDA7CiAgICAgRFdPUkQgZXJyOwogCi0gICAgd2FpdCA9IFB5T2JqZWN0X0lzVHJ1ZSh3YWl0b2JqKTsKLSAgICBpZiAod2FpdCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBHZXRPdmVybGFwcGVkUmVzdWx0KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQsICZ0cmFuc2ZlcnJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQgIT0gMCk7CkBAIC0xODUsOCArMjM1LDEzIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIklJIiwgKHVuc2lnbmVkKSB0cmFuc2ZlcnJlZCwgKHVuc2lnbmVkKSBlcnIpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLk92ZXJsYXBwZWQuZ2V0YnVmZmVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1vdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmKQorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTVhM2VjZWVmYWUwZjc0OCBpbnB1dD0zNDdmY2ZkNTZiNGNlYWJkXSovCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoIXNlbGYtPmNvbXBsZXRlZCkgewpAQCAtMjAwLDggKzI1NSwxMyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuT3ZlcmxhcHBlZC5jYW5jZWwKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW92ZXJsYXBwZWRfY2FuY2VsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCitfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX2ltcGwoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mY2I5YWI1ZGY0ZWJkYWU1IGlucHV0PWNiZjNkYTE0MjI5MDAzOWZdKi8KIHsKICAgICBCT09MIHJlcyA9IFRSVUU7CiAKQEAgLTIyMiwxMCArMjgyLDkgQEAKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIG92ZXJsYXBwZWRfbWV0aG9kc1tdID0gewotICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCi0gICAgeyJnZXRidWZmZXIiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgTlVMTH0sCi0gICAgeyJjYW5jZWwiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgX1dJTkFQSV9PVkVSTEFQUEVEX0dFVE9WRVJMQVBQRURSRVNVTFRfTUVUSE9EREVGCisgICAgX1dJTkFQSV9PVkVSTEFQUEVEX0dFVEJVRkZFUl9NRVRIT0RERUYKKyAgICBfV0lOQVBJX09WRVJMQVBQRURfQ0FOQ0VMX01FVEhPRERFRgogICAgIHtOVUxMfQogfTsKIApAQCAtMjk5LDIyICszNTgsMjMgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiB3aW5kb3dzIEFQSSBmdW5jdGlvbnMgKi8KIAotUHlEb2NfU1RSVkFSKENsb3NlSGFuZGxlX2RvYywKLSJDbG9zZUhhbmRsZShoYW5kbGUpIC0+IE5vbmVcblwKLVxuXAotQ2xvc2UgaGFuZGxlLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DbG9zZUhhbmRsZQorCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICAvCisKK0Nsb3NlIGhhbmRsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNTQ4NTk1YzcxY2I0YmY3IGlucHV0PTdmMGU0YWMzNmUwMzUyYjhdKi8KIHsKLSAgICBIQU5ETEUgaE9iamVjdDsKICAgICBCT09MIHN1Y2Nlc3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3VjY2VzcyA9IENsb3NlSGFuZGxlKGhPYmplY3QpOworICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoYW5kbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXN1Y2Nlc3MpCkBAIC0zMjMsMjggKzM4MywyOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgb3ZlcmxhcHBlZCBhcyB1c2Vfb3ZlcmxhcHBlZDogaW50KGNfZGVmYXVsdD0nMCcpID0gRmFsc2UKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZDNiMTY1ZDFiY2E5NWEgaW5wdXQ9ZWRjODNkYTAwN2ViZjNiZV0qLwogewotICAgIEhBTkRMRSBoTmFtZWRQaXBlOwotICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAgICAgQk9PTCBzdWNjZXNzOwogICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgInwiIEZfQk9PTCwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmdXNlX292ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgewotICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaE5hbWVkUGlwZSk7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoYW5kbGUpOwogICAgICAgICBpZiAoIW92ZXJsYXBwZWQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3VjY2VzcyA9IENvbm5lY3ROYW1lZFBpcGUoaE5hbWVkUGlwZSwKKyAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtMzY4LDk0ICs0MjksMjM4IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZUZpbGUgLT4gSEFORExFCisKKyAgICBmaWxlX25hbWU6IExQQ1RTVFIKKyAgICBkZXNpcmVkX2FjY2VzczogRFdPUkQKKyAgICBzaGFyZV9tb2RlOiBEV09SRAorICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXM6IExQU0VDVVJJVFlfQVRUUklCVVRFUworICAgIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uOiBEV09SRAorICAgIGZsYWdzX2FuZF9hdHRyaWJ1dGVzOiBEV09SRAorICAgIHRlbXBsYXRlX2ZpbGU6IEhBTkRMRQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgRFdPUkQgc2hhcmVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBmbGFnc19hbmRfYXR0cmlidXRlcywgSEFORExFIHRlbXBsYXRlX2ZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzZlMWQ3OGY4YWZmZDEwYyBpbnB1dD02NDIzYzNlNDAzNzJkYmQ1XSovCiB7Ci0gICAgTFBDVFNUUiBscEZpbGVOYW1lOwotICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKLSAgICBEV09SRCBkd1NoYXJlTW9kZTsKLSAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7Ci0gICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOwotICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKKyAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkNyZWF0ZUp1bmN0aW9uCisKKyAgICBzcmNfcGF0aDogTFBXU1RSCisgICAgZHN0X3BhdGg6IExQV1NUUgorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQV1NUUiBzcmNfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZHN0X3BhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWNjYWU5MzY0ZTQ2ZjZkYSBpbnB1dD04Y2QxZjk5NjRiNmUzZDM2XSovCiB7Ci0gICAgTFBDVFNUUiBscE5hbWU7Ci0gICAgRFdPUkQgZHdPcGVuTW9kZTsKLSAgICBEV09SRCBkd1BpcGVNb2RlOwotICAgIERXT1JEIG5NYXhJbnN0YW5jZXM7Ci0gICAgRFdPUkQgbk91dEJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkluQnVmZmVyU2l6ZTsKLSAgICBEV09SRCBuRGVmYXVsdFRpbWVPdXQ7Ci0gICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOworICAgIC8qIFByaXZpbGVnZSBhZGp1c3RtZW50ICovCisgICAgSEFORExFIHRva2VuID0gTlVMTDsKKyAgICBUT0tFTl9QUklWSUxFR0VTIHRwOworCisgICAgLyogUmVwYXJzZSBkYXRhIGJ1ZmZlciAqLworICAgIGNvbnN0IFVTSE9SVCBwcmVmaXhfbGVuID0gNDsKKyAgICBVU0hPUlQgcHJpbnRfbGVuID0gMDsKKyAgICBVU0hPUlQgcmRiX3NpemUgPSAwOworICAgIFBSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CisKKyAgICAvKiBKdW5jdGlvbiBwb2ludCBjcmVhdGlvbiAqLworICAgIEhBTkRMRSBqdW5jdGlvbiA9IE5VTEw7CisgICAgRFdPUkQgcmV0ID0gMDsKKworICAgIGlmIChzcmNfcGF0aCA9PSBOVUxMIHx8IGRzdF9wYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihFUlJPUl9JTlZBTElEX1BBUkFNRVRFUik7CisKKyAgICBpZiAod2NzbmNtcChzcmNfcGF0aCwgTCJcXD8/XFwiLCBwcmVmaXhfbGVuKSA9PSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpOworCisgICAgLyogQWRqdXN0IHByaXZpbGVnZXMgdG8gYWxsb3cgcmV3cml0aW5nIGRpcmVjdG9yeSBlbnRyeSBhcyBhCisgICAgICAganVuY3Rpb24gcG9pbnQuICovCisgICAgaWYgKCFPcGVuUHJvY2Vzc1Rva2VuKEdldEN1cnJlbnRQcm9jZXNzKCksIFRPS0VOX0FESlVTVF9QUklWSUxFR0VTLCAmdG9rZW4pKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBpZiAoIUxvb2t1cFByaXZpbGVnZVZhbHVlKE5VTEwsIFNFX1JFU1RPUkVfTkFNRSwgJnRwLlByaXZpbGVnZXNbMF0uTHVpZCkpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIHRwLlByaXZpbGVnZUNvdW50ID0gMTsKKyAgICB0cC5Qcml2aWxlZ2VzWzBdLkF0dHJpYnV0ZXMgPSBTRV9QUklWSUxFR0VfRU5BQkxFRDsKKyAgICBpZiAoIUFkanVzdFRva2VuUHJpdmlsZWdlcyh0b2tlbiwgRkFMU0UsICZ0cCwgc2l6ZW9mKFRPS0VOX1BSSVZJTEVHRVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKQorICAgICAgICBnb3RvIGNsZWFudXA7CisKKyAgICBpZiAoR2V0RmlsZUF0dHJpYnV0ZXNXKHNyY19wYXRoKSA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgLyogU3RvcmUgdGhlIGFic29sdXRlIGxpbmsgdGFyZ2V0IHBhdGggbGVuZ3RoIGluIHByaW50X2xlbi4gKi8KKyAgICBwcmludF9sZW4gPSAoVVNIT1JUKUdldEZ1bGxQYXRoTmFtZVcoc3JjX3BhdGgsIDAsIE5VTEwsIE5VTEwpOworICAgIGlmIChwcmludF9sZW4gPT0gMCkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAgLyogTlVMIHRlcm1pbmF0b3Igc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHByaW50X2xlbi4gKi8KKyAgICAtLXByaW50X2xlbjsKKworICAgIC8qIFJFUEFSU0VfREFUQV9CVUZGRVIgdXNhZ2UgaXMgaGVhdmlseSB1bmRlci1kb2N1bWVudGVkLCBlc3BlY2lhbGx5IGZvcgorICAgICAgIGp1bmN0aW9uIHBvaW50cy4gSGVyZSdzIHdoYXQgSSd2ZSBsZWFybmVkIGFsb25nIHRoZSB3YXk6CisgICAgICAgLSBBIGp1bmN0aW9uIHBvaW50IGhhcyB0d28gY29tcG9uZW50czogYSBwcmludCBuYW1lIGFuZCBhIHN1YnN0aXR1dGUKKyAgICAgICAgIG5hbWUuIFRoZXkgYm90aCBkZXNjcmliZSB0aGUgbGluayB0YXJnZXQsIGJ1dCB0aGUgc3Vic3RpdHV0ZSBuYW1lIGlzCisgICAgICAgICB0aGUgcGh5c2ljYWwgdGFyZ2V0IGFuZCB0aGUgcHJpbnQgbmFtZSBpcyBzaG93biBpbiBkaXJlY3RvcnkgbGlzdGluZ3MuCisgICAgICAgLSBUaGUgcHJpbnQgbmFtZSBtdXN0IGJlIGEgbmF0aXZlIG5hbWUsIHByZWZpeGVkIHdpdGggIlw/P1wiLgorICAgICAgIC0gQm90aCBuYW1lcyBhcmUgc3RvcmVkIGFmdGVyIGVhY2ggb3RoZXIgaW4gdGhlIHNhbWUgYnVmZmVyICh0aGUKKyAgICAgICAgIFBhdGhCdWZmZXIpIGFuZCBib3RoIG11c3QgYmUgTlVMLXRlcm1pbmF0ZWQuCisgICAgICAgLSBUaGVyZSBhcmUgZm91ciBtZW1iZXJzIGRlZmluaW5nIHRoZWlyIHJlc3BlY3RpdmUgb2Zmc2V0IGFuZCBsZW5ndGgKKyAgICAgICAgIGluc2lkZSBQYXRoQnVmZmVyOiBTdWJzdGl0dXRlTmFtZU9mZnNldCwgU3Vic3RpdHV0ZU5hbWVMZW5ndGgsCisgICAgICAgICBQcmludE5hbWVPZmZzZXQgYW5kIFByaW50TmFtZUxlbmd0aC4KKyAgICAgICAtIFRoZSB0b3RhbCBzaXplIHdlIG5lZWQgdG8gYWxsb2NhdGUgZm9yIHRoZSBSRVBBUlNFX0RBVEFfQlVGRkVSLCB0aHVzLAorICAgICAgICAgaXMgdGhlIHN1bSBvZjoKKyAgICAgICAgIC0gdGhlIGZpeGVkIGhlYWRlciBzaXplIChSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFKQorICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgTW91bnRQb2ludFJlcGFyc2VCdWZmZXIgbWVtYmVyIHdpdGhvdXQgdGhlIFBhdGhCdWZmZXIKKyAgICAgICAgIC0gdGhlIHNpemUgb2YgdGhlIHByZWZpeCAoIlw/P1wiKSBpbiBieXRlcworICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgcHJpbnQgbmFtZSBpbiBieXRlcworICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgc3Vic3RpdHV0ZSBuYW1lIGluIGJ5dGVzCisgICAgICAgICAtIHRoZSBzaXplIG9mIHR3byBOVUwgdGVybWluYXRvcnMgaW4gYnl0ZXMgKi8KKyAgICByZGJfc2l6ZSA9IFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKworICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlcikgLQorICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyKSArCisgICAgICAgIC8qIFR3byArMSdzIGZvciBOVUwgdGVybWluYXRvcnMuICovCisgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSArIHByaW50X2xlbiArIDEpICogc2l6ZW9mKFdDSEFSKTsKKyAgICByZGIgPSAoUFJFUEFSU0VfREFUQV9CVUZGRVIpUHlNZW1fUmF3TWFsbG9jKHJkYl9zaXplKTsKKyAgICBpZiAocmRiID09IE5VTEwpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIG1lbXNldChyZGIsIDAsIHJkYl9zaXplKTsKKyAgICByZGItPlJlcGFyc2VUYWcgPSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVDsKKyAgICByZGItPlJlcGFyc2VEYXRhTGVuZ3RoID0gcmRiX3NpemUgLSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVPZmZzZXQgPSAwOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuU3Vic3RpdHV0ZU5hbWVMZW5ndGggPQorICAgICAgICAocHJlZml4X2xlbiArIHByaW50X2xlbikgKiBzaXplb2YoV0NIQVIpOworICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUHJpbnROYW1lT2Zmc2V0ID0KKyAgICAgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5TdWJzdGl0dXRlTmFtZUxlbmd0aCArIHNpemVvZihXQ0hBUik7CisgICAgcmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QcmludE5hbWVMZW5ndGggPSBwcmludF9sZW4gKiBzaXplb2YoV0NIQVIpOworCisgICAgLyogU3RvcmUgdGhlIGZ1bGwgbmF0aXZlIHBhdGggb2YgbGluayB0YXJnZXQgYXQgdGhlIHN1YnN0aXR1dGUgbmFtZQorICAgICAgIG9mZnNldCAoMCkuICovCisgICAgd2NzY3B5KHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlciwgTCJcXD8/XFwiKTsKKyAgICBpZiAoR2V0RnVsbFBhdGhOYW1lVyhzcmNfcGF0aCwgcHJpbnRfbGVuICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKyBwcmVmaXhfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpID09IDApCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIENvcHkgZXZlcnl0aGluZyBidXQgdGhlIG5hdGl2ZSBwcmVmaXggdG8gdGhlIHByaW50IG5hbWUgb2Zmc2V0LiAqLworICAgIHdjc2NweShyZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKworICAgICAgICAgICAgIHByZWZpeF9sZW4gKyBwcmludF9sZW4gKyAxLAorICAgICAgICAgICAgIHJkYi0+TW91bnRQb2ludFJlcGFyc2VCdWZmZXIuUGF0aEJ1ZmZlciArIHByZWZpeF9sZW4pOworCisgICAgLyogQ3JlYXRlIGEgZGlyZWN0b3J5IGZvciB0aGUganVuY3Rpb24gcG9pbnQuICovCisgICAgaWYgKCFDcmVhdGVEaXJlY3RvcnlXKGRzdF9wYXRoLCBOVUxMKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCisgICAganVuY3Rpb24gPSBDcmVhdGVGaWxlVyhkc3RfcGF0aCwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgTlVMTCwKKyAgICAgICAgT1BFTl9FWElTVElORywKKyAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVCB8IEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBpZiAoanVuY3Rpb24gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIGdvdG8gY2xlYW51cDsKKworICAgIC8qIE1ha2UgdGhlIGRpcmVjdG9yeSBlbnRyeSBhIGp1bmN0aW9uIHBvaW50LiAqLworICAgIGlmICghRGV2aWNlSW9Db250cm9sKGp1bmN0aW9uLCBGU0NUTF9TRVRfUkVQQVJTRV9QT0lOVCwgcmRiLCByZGJfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmcmV0LCBOVUxMKSkKKyAgICAgICAgZ290byBjbGVhbnVwOworCitjbGVhbnVwOgorICAgIHJldCA9IEdldExhc3RFcnJvcigpOworCisgICAgQ2xvc2VIYW5kbGUodG9rZW4pOworICAgIENsb3NlSGFuZGxlKGp1bmN0aW9uKTsKKyAgICBQeU1lbV9SYXdGcmVlKHJkYik7CisKKyAgICBpZiAocmV0ICE9IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihyZXQpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ3JlYXRlTmFtZWRQaXBlIC0+IEhBTkRMRQorCisgICAgbmFtZTogTFBDVFNUUgorICAgIG9wZW5fbW9kZTogRFdPUkQKKyAgICBwaXBlX21vZGU6IERXT1JECisgICAgbWF4X2luc3RhbmNlczogRFdPUkQKKyAgICBvdXRfYnVmZmVyX3NpemU6IERXT1JECisgICAgaW5fYnVmZmVyX3NpemU6IERXT1JECisgICAgZGVmYXVsdF90aW1lb3V0OiBEV09SRAorICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXM6IExQU0VDVVJJVFlfQVRUUklCVVRFUworICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wZW5fbW9kZSwgRFdPUkQgcGlwZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtYXhfaW5zdGFuY2VzLCBEV09SRCBvdXRfYnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGluX2J1ZmZlcl9zaXplLCBEV09SRCBkZWZhdWx0X3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0Y2EyYTA2YTIxOWI1MjMgaW5wdXQ9NWE3MzUzMGI4NGQ4YmMzN10qLworewogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JECi0gICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwTmFtZSwgJmR3T3Blbk1vZGUsICZkd1BpcGVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbk1heEluc3RhbmNlcywgJm5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbkluQnVmZmVyU2l6ZSwgJm5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaGFuZGxlID0gQ3JlYXRlTmFtZWRQaXBlKGxwTmFtZSwgZHdPcGVuTW9kZSwgZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbk1heEluc3RhbmNlcywgbk91dEJ1ZmZlclNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbkJ1ZmZlclNpemUsIG5EZWZhdWx0VGltZU91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMpOworICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShuYW1lLCBvcGVuX21vZGUsIHBpcGVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2luc3RhbmNlcywgb3V0X2J1ZmZlcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9idWZmZXJfc2l6ZSwgZGVmYXVsdF90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworICAgIHJldHVybiBoYW5kbGU7CiB9CiAKLVB5RG9jX1NUUlZBUihDcmVhdGVQaXBlX2RvYywKLSJDcmVhdGVQaXBlKHBpcGVfYXR0cnMsIHNpemUpIC0+IChyZWFkX2hhbmRsZSwgd3JpdGVfaGFuZGxlKVxuXAotXG5cCi1DcmVhdGUgYW4gYW5vbnltb3VzIHBpcGUsIGFuZCByZXR1cm4gaGFuZGxlcyB0byB0aGUgcmVhZCBhbmRcblwKLXdyaXRlIGVuZHMgb2YgdGhlIHBpcGUuXG5cCi1cblwKLXBpcGVfYXR0cnMgaXMgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuQ3JlYXRlUGlwZQorCisgICAgcGlwZV9hdHRyczogb2JqZWN0CisgICAgICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuCisgICAgc2l6ZTogRFdPUkQKKyAgICAvCisKK0NyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZS4KKworUmV0dXJucyBhIDItdHVwbGUgb2YgaGFuZGxlcywgdG8gdGhlIHJlYWQgYW5kIHdyaXRlIGVuZHMgb2YgdGhlIHBpcGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlUGlwZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX0NyZWF0ZVBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGlwZV9hdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVmOTlmM2I0MjIyYmM3OCBpbnB1dD1jNGYyY2ZhNTZlZjY4ZDkwXSovCiB7CiAgICAgSEFORExFIHJlYWRfcGlwZTsKICAgICBIQU5ETEUgd3JpdGVfcGlwZTsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIFB5T2JqZWN0KiBwaXBlX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KLSAgICBEV09SRCBzaXplOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyIgRl9EV09SRCAiOkNyZWF0ZVBpcGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpcGVfYXR0cmlidXRlcywgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBDcmVhdGVQaXBlKCZyZWFkX3BpcGUsICZ3cml0ZV9waXBlLCBOVUxMLCBzaXplKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNTg2LDIwICs3OTEsMzYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKENyZWF0ZVByb2Nlc3NfZG9jLAotIkNyZWF0ZVByb2Nlc3MoYXBwX25hbWUsIGNtZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsXG5cCi0gICAgICAgICAgICAgICBpbmhlcml0LCBmbGFncywgZW52X21hcHBpbmcsIGN1cmRpcixcblwKLSAgICAgICAgICAgICAgIHN0YXJ0dXBfaW5mbykgLT4gKHByb2NfaGFuZGxlLCB0aHJlYWRfaGFuZGxlLFxuXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB0aWQpXG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuIFRoZSByZXR1cm5cblwKLXZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuXAotcHJvY2VzcyBJRCwgYW5kIHRocmVhZCBJRC5cblwKLVxuXAotcHJvY19hdHRycyBhbmQgdGhyZWFkX2F0dHJzIGFyZSBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5DcmVhdGVQcm9jZXNzCisKKyAgICBhcHBsaWNhdGlvbl9uYW1lOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgY29tbWFuZF9saW5lOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgcHJvY19hdHRyczogb2JqZWN0CisgICAgICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuCisgICAgdGhyZWFkX2F0dHJzOiBvYmplY3QKKyAgICAgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS4KKyAgICBpbmhlcml0X2hhbmRsZXM6IEJPT0wKKyAgICBjcmVhdGlvbl9mbGFnczogRFdPUkQKKyAgICBlbnZfbWFwcGluZzogb2JqZWN0CisgICAgY3VycmVudF9kaXJlY3Rvcnk6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICBzdGFydHVwX2luZm86IG9iamVjdAorICAgIC8KKworQ3JlYXRlIGEgbmV3IHByb2Nlc3MgYW5kIGl0cyBwcmltYXJ5IHRocmVhZC4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSwKK3Byb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICphcHBsaWNhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqY29tbWFuZF9saW5lLCBQeU9iamVjdCAqcHJvY19hdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0aHJlYWRfYXR0cnMsIEJPT0wgaW5oZXJpdF9oYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZmxhZ3MsIFB5T2JqZWN0ICplbnZfbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmN1cnJlbnRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0dXBfaW5mbykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzRiYjM1MGZmOWVkNGVmIGlucHV0PTRhNDNiMDUwMzhkNjM5YmJdKi8KIHsKICAgICBCT09MIHJlc3VsdDsKICAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOwpAQCAtNjA3LDI4ICs4MjgsNiBAQAogICAgIFB5T2JqZWN0KiBlbnZpcm9ubWVudDsKICAgICB3Y2hhcl90ICp3ZW52aXJvbm1lbnQ7CiAKLSAgICB3Y2hhcl90KiBhcHBsaWNhdGlvbl9uYW1lOwotICAgIHdjaGFyX3QqIGNvbW1hbmRfbGluZTsKLSAgICBQeU9iamVjdCogcHJvY2Vzc19hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgUHlPYmplY3QqIHRocmVhZF9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCi0gICAgQk9PTCBpbmhlcml0X2hhbmRsZXM7Ci0gICAgRFdPUkQgY3JlYXRpb25fZmxhZ3M7Ci0gICAgUHlPYmplY3QqIGVudl9tYXBwaW5nOwotICAgIHdjaGFyX3QqIGN1cnJlbnRfZGlyZWN0b3J5OwotICAgIFB5T2JqZWN0KiBzdGFydHVwX2luZm87Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PIiBGX0JPT0wgRl9EV09SRCAiT1pPOkNyZWF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWFuZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3NfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlYXRpb25fZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZW52X21hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnR1cF9pbmZvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mKHNpKSk7CiAgICAgc2kuY2IgPSBzaXplb2Yoc2kpOwogCkBAIC02ODIsNDEgKzg4MSwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHBpLmR3VGhyZWFkSWQpOwogfQogCi1QeURvY19TVFJWQVIoRHVwbGljYXRlSGFuZGxlX2RvYywKLSJEdXBsaWNhdGVIYW5kbGUoc291cmNlX3Byb2NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuXAotICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY19oYW5kbGUsIHRhcmdldF9oYW5kbGUsIGFjY2VzcyxcblwKLSAgICAgICAgICAgICAgICAgaW5oZXJpdFssIG9wdGlvbnNdKSAtPiBoYW5kbGVcblwKLVxuXAotUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG5cCi1cblwKLVRoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsXG5cCi1oYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG5cCi10aHJvdWdoIGJvdGggaGFuZGxlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuRHVwbGljYXRlSGFuZGxlIC0+IEhBTkRMRQogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCisgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlOiBIQU5ETEUKKyAgICBzb3VyY2VfaGFuZGxlOiBIQU5ETEUKKyAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGU6IEhBTkRMRQorICAgIGRlc2lyZWRfYWNjZXNzOiBEV09SRAorICAgIGluaGVyaXRfaGFuZGxlOiBCT09MCisgICAgb3B0aW9uczogRFdPUkQgPSAwCisgICAgLworCitSZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC4KKworVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWwKK2hhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWQKK3Rocm91Z2ggYm90aCBoYW5kbGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEFORExFCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgQk9PTCBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNzk5NTE1YjY4YjUyMzdiIGlucHV0PWI5MzNlM2YyMzU2YThjMTJdKi8KIHsKICAgICBIQU5ETEUgdGFyZ2V0X2hhbmRsZTsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGU7Ci0gICAgSEFORExFIHNvdXJjZV9oYW5kbGU7Ci0gICAgSEFORExFIHRhcmdldF9wcm9jZXNzX2hhbmRsZTsKLSAgICBEV09SRCBkZXNpcmVkX2FjY2VzczsKLSAgICBCT09MIGluaGVyaXRfaGFuZGxlOwotICAgIERXT1JEIG9wdGlvbnMgPSAwOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgRl9IQU5ETEUgRl9IQU5ETEUgRl9EV09SRCBGX0JPT0wgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIjpEdXBsaWNhdGVIYW5kbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXNpcmVkX2FjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzdWx0ID0gRHVwbGljYXRlSGFuZGxlKAogICAgICAgICBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCkBAIC03MjksOTggKzkyMywxMTEgQEAKICAgICApOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgaWYgKCEgcmVzdWx0KSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIH0KIAotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0odGFyZ2V0X2hhbmRsZSk7CisgICAgcmV0dXJuIHRhcmdldF9oYW5kbGU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuRXhpdFByb2Nlc3MKKworICAgIEV4aXRDb2RlOiBVSU5UCisgICAgLworCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfRXhpdFByb2Nlc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX3dpbmFwaV9FeGl0UHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFVJTlQgRXhpdENvZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjVmM2I0OTljMjRjZWRjOCBpbnB1dD00ZjA1NDY2YTk0MDZjNTU4XSovCiB7Ci0gICAgVUlOVCB1RXhpdENvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9VSU5ULCAmdUV4aXRDb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKICAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8CiAgICAgICAgICAgICAgICAgICAgICBTRU1fTk9HUEZBVUxURVJST1JCT1h8U0VNX05PT1BFTkZJTEVFUlJPUkJPWCk7CiAgICAgICAgIF9DcnRTZXRSZXBvcnRNb2RlKF9DUlRfQVNTRVJULCBfQ1JUREJHX01PREVfREVCVUcpOwogICAgICNlbmRpZgogCi0gICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKKyAgICBFeGl0UHJvY2VzcyhFeGl0Q29kZSk7CiAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKEdldEN1cnJlbnRQcm9jZXNzX2RvYywKLSJHZXRDdXJyZW50UHJvY2VzcygpIC0+IGhhbmRsZVxuXAotXG5cCi1SZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcyAtPiBIQU5ETEUKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9HZXRDdXJyZW50UHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgSEFORExFCitfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTI5YWMzYWQ1ZjgyOTFlIGlucHV0PWIyMTM0MDNmZDRiOTZiNDFdKi8KIHsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0Q3VycmVudFByb2Nlc3MiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKEdldEN1cnJlbnRQcm9jZXNzKCkpOworICAgIHJldHVybiBHZXRDdXJyZW50UHJvY2VzcygpOwogfQogCi1QeURvY19TVFJWQVIoR2V0RXhpdENvZGVQcm9jZXNzX2RvYywKLSJHZXRFeGl0Q29kZVByb2Nlc3MoaGFuZGxlKSAtPiBFeGl0IGNvZGVcblwKLVxuXAotUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3MgLT4gRFdPUkQKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorICAgIHByb2Nlc3M6IEhBTkRMRQorICAgIC8KKworUmV0dXJuIHRoZSB0ZXJtaW5hdGlvbiBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgRFdPUkQKK193aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIHByb2Nlc3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGIxMGYwODQ4YTQxMGY2NSBpbnB1dD02MWI2YmZjN2RjMmVlMzc0XSovCiB7CiAgICAgRFdPUkQgZXhpdF9jb2RlOwogICAgIEJPT0wgcmVzdWx0OwogCi0gICAgSEFORExFIHByb2Nlc3M7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXN1bHQgPSBHZXRFeGl0Q29kZVByb2Nlc3MocHJvY2VzcywgJmV4aXRfY29kZSk7CiAKLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisgICAgaWYgKCEgcmVzdWx0KSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgZXhpdF9jb2RlID0gRFdPUkRfTUFYOworICAgIH0KIAotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhleGl0X2NvZGUpOworICAgIHJldHVybiBleGl0X2NvZGU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0TGFzdEVycm9yIC0+IERXT1JECitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRMYXN0RXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlYTAwZDhlNjdiZGQwNTYgaW5wdXQ9NjJkNDdmYjliY2UwMzhiYV0qLwogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfRFdPUkQsIEdldExhc3RFcnJvcigpKTsKKyAgICByZXR1cm4gR2V0TGFzdEVycm9yKCk7CiB9CiAKLVB5RG9jX1NUUlZBUihHZXRNb2R1bGVGaWxlTmFtZV9kb2MsCi0iR2V0TW9kdWxlRmlsZU5hbWUobW9kdWxlKSAtPiBwYXRoXG5cCi1cblwKLVJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnNcblwKLXRoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGVcblwKLWN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG5cCi13aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwgXG5cCi1HZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuXAotb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuR2V0TW9kdWxlRmlsZU5hbWUKKworICAgIG1vZHVsZV9oYW5kbGU6IEhNT0RVTEUKKyAgICAvCisKK1JldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgbW9kdWxlLgorCitUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLgorCitUaGUgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBoYW5kbGUgdG8gdGhlIGxvYWRlZCBtb2R1bGUKK3dob3NlIHBhdGggaXMgYmVpbmcgcmVxdWVzdGVkLiBJZiB0aGlzIHBhcmFtZXRlciBpcyAwLAorR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGUKK29mIHRoZSBjdXJyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhNT0RVTEUgbW9kdWxlX2hhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MDA2M2RjNjNiZGJmYTE4IGlucHV0PTZkNjZmZjdkZWNhNWQxMWZdKi8KIHsKICAgICBCT09MIHJlc3VsdDsKLSAgICBITU9EVUxFIG1vZHVsZTsKICAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZHVsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gR2V0TW9kdWxlRmlsZU5hbWVXKG1vZHVsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKKyAgICByZXN1bHQgPSBHZXRNb2R1bGVGaWxlTmFtZVcobW9kdWxlX2hhbmRsZSwgZmlsZW5hbWUsIE1BWF9QQVRIKTsKICAgICBmaWxlbmFtZVtNQVhfUEFUSC0xXSA9ICdcMCc7CiAKICAgICBpZiAoISByZXN1bHQpCkBAIC04MjksODMgKzEwMzYsOTYgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihmaWxlbmFtZSwgd2NzbGVuKGZpbGVuYW1lKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihHZXRTdGRIYW5kbGVfZG9jLAotIkdldFN0ZEhhbmRsZShoYW5kbGUpIC0+IGludGVnZXJcblwKLVxuXAotUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlXG5cCi0oU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIFNURF9FUlJPUl9IQU5ETEUpLlxuXAotVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5HZXRTdGRIYW5kbGUgLT4gSEFORExFCiAKLXN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0U3RkSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKyAgICBzdGRfaGFuZGxlOiBEV09SRAorICAgICAgICBPbmUgb2YgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIG9yIFNURF9FUlJPUl9IQU5ETEUuCisgICAgLworCitSZXR1cm4gYSBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBzdGFuZGFyZCBkZXZpY2UuCisKK1RoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBzdGRfaGFuZGxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmNWNhMjhiMjhjNmZhZDIgaW5wdXQ9MDcwMTZiMDZhMmZjODgyNl0qLwogewogICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgRFdPUkQgc3RkX2hhbmRsZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9EV09SRCAiOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKHN0ZF9oYW5kbGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CiAKLSAgICBpZiAoISBoYW5kbGUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXR1cm4gaGFuZGxlOworfQorCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLkdldFZlcnNpb24gLT4gbG9uZworCitSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitfd2luYXBpX0dldFZlcnNpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk1YTJmOGFkM2I5NDhjYTggaW5wdXQ9ZTIxZGZmOGQwYmFlZGVkMl0qLworLyogRGlzYWJsZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBhYm91dCBHZXRWZXJzaW9uRXggYXMgdGhlIHJlc3VsdCBpcworICAgYmVpbmcgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGNhbGxlciwgd2hvIGlzIHJlc3BvbnNpYmxlIGZvcgorICAgdXNpbmcgaXQgY29ycmVjdGx5LiAqLworI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0OTk2KQorCit7CisgICAgcmV0dXJuIEdldFZlcnNpb24oKTsKK30KKworI3ByYWdtYSB3YXJuaW5nKHBvcCkKKworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5PcGVuUHJvY2VzcyAtPiBIQU5ETEUKKworICAgIGRlc2lyZWRfYWNjZXNzOiBEV09SRAorICAgIGluaGVyaXRfaGFuZGxlOiBCT09MCisgICAgcHJvY2Vzc19pZDogRFdPUkQKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfT3BlblByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGluaGVyaXRfaGFuZGxlLCBEV09SRCBwcm9jZXNzX2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiYzUyZWRhODJhM2QyMjYgaW5wdXQ9ZWM5OGM0Y2Y0ZWEyZWMzNl0qLworeworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBoYW5kbGUgPSBPcGVuUHJvY2VzcyhkZXNpcmVkX2FjY2VzcywgaW5oZXJpdF9oYW5kbGUsIHByb2Nlc3NfaWQpOworICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAgICAgfQogCi0gICAgLyogbm90ZTogcmV0dXJucyBpbnRlZ2VyLCBub3QgaGFuZGxlIG9iamVjdCAqLwotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCi1QeURvY19TVFJWQVIoR2V0VmVyc2lvbl9kb2MsCi0iR2V0VmVyc2lvbigpIC0+IHZlcnNpb25cblwKLVxuXAotUmV0dXJuIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5QZWVrTmFtZWRQaXBlCisKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIHNpemU6IGludCA9IDAKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5hcGlfR2V0VmVyc2lvbihQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNmM5MDhlMmZiNjNjNzk4IGlucHV0PWM3YWE1M2JmYmNlNjlkNzBdKi8KIHsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0VmVyc2lvbiIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhHZXRWZXJzaW9uKCkpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX09wZW5Qcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7Ci0gICAgQk9PTCBiSW5oZXJpdEhhbmRsZTsKLSAgICBEV09SRCBkd1Byb2Nlc3NJZDsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0Rlc2lyZWRBY2Nlc3MsICZiSW5oZXJpdEhhbmRsZSwgJmR3UHJvY2Vzc0lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBoYW5kbGUgPSBPcGVuUHJvY2Vzcyhkd0Rlc2lyZWRBY2Nlc3MsIGJJbmhlcml0SGFuZGxlLCBkd1Byb2Nlc3NJZCk7Ci0gICAgaWYgKGhhbmRsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9QZWVrTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBzaXplID0gMDsKICAgICBQeU9iamVjdCAqYnVmID0gTlVMTDsKICAgICBEV09SRCBucmVhZCwgbmF2YWlsLCBubGVmdDsKICAgICBCT09MIHJldDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIgLCAmaGFuZGxlLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKHNpemUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkzOCwyMyArMTE1OCwyNCBAQAogICAgIH0KIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5SZWFkRmlsZQorCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBzaXplOiBpbnQKKyAgICBvdmVybGFwcGVkIGFzIHVzZV9vdmVybGFwcGVkOiBpbnQoY19kZWZhdWx0PScwJykgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitfd2luYXBpX1JlYWRGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3Njk1ZGI0ZGI5N2IxMzUgaW5wdXQ9OGRkODEwMTk0ZTg2YWM3ZF0qLwogewotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgaW50IHNpemU7CiAgICAgRFdPUkQgbnJlYWQ7CiAgICAgUHlPYmplY3QgKmJ1ZjsKICAgICBCT09MIHJldDsKLSAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIERXT1JEIGVycjsKICAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmICghYnVmKQpAQCAtOTk3LDE4ICsxMjE4LDI3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgYnVmLCBlcnIpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlCisKKyAgICBuYW1lZF9waXBlOiBIQU5ETEUKKyAgICBtb2RlOiBvYmplY3QKKyAgICBtYXhfY29sbGVjdGlvbl9jb3VudDogb2JqZWN0CisgICAgY29sbGVjdF9kYXRhX3RpbWVvdXQ6IG9iamVjdAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIG5hbWVkX3BpcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1heF9jb2xsZWN0aW9uX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWFhM2MyOGRlZTIyM2NlIGlucHV0PTkxNDJkNzIxNjNkMGZhYTZdKi8KIHsKLSAgICBIQU5ETEUgaE5hbWVkUGlwZTsKLSAgICBQeU9iamVjdCAqb0FyZ3NbM107CisgICAgUHlPYmplY3QgKm9BcmdzWzNdID0ge21vZGUsIG1heF9jb2xsZWN0aW9uX2NvdW50LCBjb2xsZWN0X2RhdGFfdGltZW91dH07CiAgICAgRFdPUkQgZHdBcmdzWzNdLCAqcEFyZ3NbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIk9PTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmb0FyZ3NbMF0sICZvQXJnc1sxXSwgJm9BcmdzWzJdKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeUVycl9DbGVhcigpOwogCiAgICAgZm9yIChpID0gMCA7IGkgPCAzIDsgaSsrKSB7CkBAIC0xMDIwLDQ5ICsxMjUwLDU0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIVNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKGhOYW1lZFBpcGUsIHBBcmdzWzBdLCBwQXJnc1sxXSwgcEFyZ3NbMl0pKQorICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUobmFtZWRfcGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoVGVybWluYXRlUHJvY2Vzc19kb2MsCi0iVGVybWluYXRlUHJvY2VzcyhoYW5kbGUsIGV4aXRfY29kZSkgLT4gTm9uZVxuXAotXG5cCi1UZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuVGVybWluYXRlUHJvY2VzcworCisgICAgaGFuZGxlOiBIQU5ETEUKKyAgICBleGl0X2NvZGU6IFVJTlQKKyAgICAvCisKK1Rlcm1pbmF0ZSB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgYW5kIGFsbCBvZiBpdHMgdGhyZWFkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9UZXJtaW5hdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK193aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGV4aXRfY29kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzdjMWJiNjIxOWFjYThiIGlucHV0PWQ2YmMwYWExZWUzYmI0ZGZdKi8KIHsKICAgICBCT09MIHJlc3VsdDsKIAotICAgIEhBTkRMRSBwcm9jZXNzOwotICAgIFVJTlQgZXhpdF9jb2RlOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9VSU5UICI6VGVybWluYXRlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2VzcywgJmV4aXRfY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gVGVybWluYXRlUHJvY2Vzcyhwcm9jZXNzLCBleGl0X2NvZGUpOworICAgIHJlc3VsdCA9IFRlcm1pbmF0ZVByb2Nlc3MoaGFuZGxlLCBleGl0X2NvZGUpOwogCiAgICAgaWYgKCEgcmVzdWx0KQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfd2luYXBpLldhaXROYW1lZFBpcGUKKworICAgIG5hbWU6IExQQ1RTVFIKKyAgICB0aW1lb3V0OiBEV09SRAorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9XYWl0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK193aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIExQQ1RTVFIgbmFtZSwgRFdPUkQgdGltZW91dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YmNhNWUwMmY0NDhjOWQ3IGlucHV0PTM2ZmM3ODEyOTFiMTg2MmNdKi8KIHsKLSAgICBMUENUU1RSIGxwTmFtZWRQaXBlTmFtZTsKLSAgICBEV09SRCBuVGltZU91dDsKICAgICBCT09MIHN1Y2Nlc3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQsICZscE5hbWVkUGlwZU5hbWUsICZuVGltZU91dCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKGxwTmFtZWRQaXBlTmFtZSwgblRpbWVPdXQpOworICAgIHN1Y2Nlc3MgPSBXYWl0TmFtZWRQaXBlKG5hbWUsIHRpbWVvdXQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXN1Y2Nlc3MpCkBAIC0xMDcxLDIxICsxMzA2LDI1IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK193aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cworCisgICAgaGFuZGxlX3NlcTogb2JqZWN0CisgICAgd2FpdF9mbGFnOiBCT09MCisgICAgbWlsbGlzZWNvbmRzOiBEV09SRChjX2RlZmF1bHQ9J0lORklOSVRFJykgPSBfd2luYXBpLklORklOSVRFCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxLCBCT09MIHdhaXRfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1pbGxpc2Vjb25kcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hY2I0NDA3MjhkMDZkMTMwIGlucHV0PTM2Zjc2Y2EwNTdjZDI4YTBdKi8KIHsKICAgICBEV09SRCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKmhhbmRsZV9zZXE7CiAgICAgSEFORExFIGhhbmRsZXNbTUFYSU1VTV9XQUlUX09CSkVDVFNdOwogICAgIEhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmhhbmRsZXMsIGk7Ci0gICAgQk9PTCB3YWl0X2ZsYWc7Ci0gICAgRFdPUkQgbWlsbGlzZWNvbmRzID0gSU5GSU5JVEU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfQk9PTCAifCIgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICAiOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKGhhbmRsZV9zZXEpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0xMTM5LDUzICsxMzc4LDU3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSByZXN1bHQpOwogfQogCi1QeURvY19TVFJWQVIoV2FpdEZvclNpbmdsZU9iamVjdF9kb2MsCi0iV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIHRpbWVvdXQpIC0+IHJlc3VsdFxuXAotXG5cCi1XYWl0IHVudGlsIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZSBvclxuXAotdGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuXAotaW4gbWlsbGlzZWNvbmRzLiIpOworLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5XYWl0Rm9yU2luZ2xlT2JqZWN0IC0+IGxvbmcKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKyAgICBoYW5kbGU6IEhBTkRMRQorICAgIG1pbGxpc2Vjb25kczogRFdPUkQKKyAgICAvCisKK1dhaXQgZm9yIGEgc2luZ2xlIG9iamVjdC4KKworV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3IKK3RoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWQKK2luIG1pbGxpc2Vjb25kcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK193aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzRhZTQwYzI2OTc0OWM0OCBpbnB1dD00NDNkMWFiMDc2ZWRjN2IxXSovCiB7CiAgICAgRFdPUkQgcmVzdWx0OwogCi0gICAgSEFORExFIGhhbmRsZTsKLSAgICBEV09SRCBtaWxsaXNlY29uZHM7Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSBGX0RXT1JEICI6V2FpdEZvclNpbmdsZU9iamVjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCBtaWxsaXNlY29uZHMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0ID09IFdBSVRfRkFJTEVEKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgIGlmIChyZXN1bHQgPT0gV0FJVF9GQUlMRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX3dpbmFwaS5Xcml0ZUZpbGUKKworICAgIGhhbmRsZTogSEFORExFCisgICAgYnVmZmVyOiBvYmplY3QKKyAgICBvdmVybGFwcGVkIGFzIHVzZV9vdmVybGFwcGVkOiBpbnQoY19kZWZhdWx0PScwJykgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotd2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVlNzBlYTQxZjRkMmExZCBpbnB1dD01MTg0NmE1YWY1MjA1M2ZkXSovCiB7Ci0gICAgSEFORExFIGhhbmRsZTsKICAgICBQeV9idWZmZXIgX2J1ZiwgKmJ1ZjsKLSAgICBQeU9iamVjdCAqYnVmb2JqOwogICAgIERXT1JEIGxlbiwgd3JpdHRlbjsKICAgICBCT09MIHJldDsKLSAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogICAgIERXT1JEIGVycjsKICAgICBPdmVybGFwcGVkT2JqZWN0ICpvdmVybGFwcGVkID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImhhbmRsZSIsICJidWZmZXIiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OwotCi0gICAgLyogRmlyc3QgZ2V0IGhhbmRsZSBhbmQgdXNlX292ZXJsYXBwZWQgdG8ga25vdyB3aGljaCBQeV9idWZmZXIgdG8gdXNlICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmYnVmb2JqLCAmdXNlX292ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2Vfb3ZlcmxhcHBlZCkgewogICAgICAgICBvdmVybGFwcGVkID0gbmV3X292ZXJsYXBwZWQoaGFuZGxlKTsKQEAgLTExOTYsNyArMTQzOSw3IEBACiAgICAgZWxzZQogICAgICAgICBidWYgPSAmX2J1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYnVmb2JqLCAieSoiLCBidWYpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZShidWZmZXIsICJ5KiIsIGJ1ZikpIHsKICAgICAgICAgUHlfWERFQ1JFRihvdmVybGFwcGVkKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTIyOSw1MiArMTQ3MiwzMCBAQAogCiAKIHN0YXRpYyBQeU1ldGhvZERlZiB3aW5hcGlfZnVuY3Rpb25zW10gPSB7Ci0gICAgeyJDbG9zZUhhbmRsZSIsIHdpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAotICAgICBDbG9zZUhhbmRsZV9kb2N9LAotICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwKLSAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgIiJ9LAotICAgIHsiQ3JlYXRlRmlsZSIsIHdpbmFwaV9DcmVhdGVGaWxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IkNyZWF0ZU5hbWVkUGlwZSIsIHdpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiQ3JlYXRlUGlwZSIsIHdpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIENyZWF0ZVBpcGVfZG9jfSwKLSAgICB7IkNyZWF0ZVByb2Nlc3MiLCB3aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICBDcmVhdGVQcm9jZXNzX2RvY30sCi0gICAgeyJEdXBsaWNhdGVIYW5kbGUiLCB3aW5hcGlfRHVwbGljYXRlSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIER1cGxpY2F0ZUhhbmRsZV9kb2N9LAotICAgIHsiRXhpdFByb2Nlc3MiLCB3aW5hcGlfRXhpdFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiR2V0Q3VycmVudFByb2Nlc3MiLCB3aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKLSAgICB7IkdldEV4aXRDb2RlUHJvY2VzcyIsIHdpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgR2V0RXhpdENvZGVQcm9jZXNzX2RvY30sCi0gICAgeyJHZXRMYXN0RXJyb3IiLCB3aW5hcGlfR2V0TGFzdEVycm9yLCBNRVRIX05PQVJHUywKLSAgICAgR2V0Q3VycmVudFByb2Nlc3NfZG9jfSwKLSAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldE1vZHVsZUZpbGVOYW1lX2RvY30sCi0gICAgeyJHZXRTdGRIYW5kbGUiLCB3aW5hcGlfR2V0U3RkSGFuZGxlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldFN0ZEhhbmRsZV9kb2N9LAotICAgIHsiR2V0VmVyc2lvbiIsIHdpbmFwaV9HZXRWZXJzaW9uLCBNRVRIX1ZBUkFSR1MsCi0gICAgIEdldFZlcnNpb25fZG9jfSwKLSAgICB7Ik9wZW5Qcm9jZXNzIiwgd2luYXBpX09wZW5Qcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IlBlZWtOYW1lZFBpcGUiLCB3aW5hcGlfUGVla05hbWVkUGlwZSwgTUVUSF9WQVJBUkdTLAotICAgICAiIn0sCi0gICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbil3aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICIifSwKLSAgICB7IlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwgd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IlRlcm1pbmF0ZVByb2Nlc3MiLCB3aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICBUZXJtaW5hdGVQcm9jZXNzX2RvY30sCi0gICAgeyJXYWl0TmFtZWRQaXBlIiwgd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKLSAgICAgIiJ9LAotICAgIHsiV2FpdEZvck11bHRpcGxlT2JqZWN0cyIsIHdpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICIifSwKLSAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCB3aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdCwgTUVUSF9WQVJBUkdTLAotICAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvY30sCi0gICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgIiJ9LAorICAgIF9XSU5BUElfQ0xPU0VIQU5ETEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DT05ORUNUTkFNRURQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfQ1JFQVRFRklMRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURU5BTUVEUElQRV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX0NSRUFURVBJUEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9DUkVBVEVQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfQ1JFQVRFSlVOQ1RJT05fTUVUSE9EREVGCisgICAgX1dJTkFQSV9EVVBMSUNBVEVIQU5ETEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9FWElUUFJPQ0VTU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX0dFVENVUlJFTlRQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VURVhJVENPREVQUk9DRVNTX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUTEFTVEVSUk9SX01FVEhPRERFRgorICAgIF9XSU5BUElfR0VUTU9EVUxFRklMRU5BTUVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9HRVRTVERIQU5ETEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9HRVRWRVJTSU9OX01FVEhPRERFRgorICAgIF9XSU5BUElfT1BFTlBST0NFU1NfTUVUSE9EREVGCisgICAgX1dJTkFQSV9QRUVLTkFNRURQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfUkVBREZJTEVfTUVUSE9EREVGCisgICAgX1dJTkFQSV9TRVROQU1FRFBJUEVIQU5ETEVTVEFURV9NRVRIT0RERUYKKyAgICBfV0lOQVBJX1RFUk1JTkFURVBST0NFU1NfTUVUSE9EREVGCisgICAgX1dJTkFQSV9XQUlUTkFNRURQSVBFX01FVEhPRERFRgorICAgIF9XSU5BUElfV0FJVEZPUk1VTFRJUExFT0JKRUNUU19NRVRIT0RERUYKKyAgICBfV0lOQVBJX1dBSVRGT1JTSU5HTEVPQkpFQ1RfTUVUSE9EREVGCisgICAgX1dJTkFQSV9XUklURUZJTEVfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKaW5kZXggNWFiMWFiNi4uYTNjY2Y5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwpAQCAtMTUsNiArMTUsMTEgQEAKICNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCiAjZW5kaWYgLyogIVNURENfSEVBREVSUyAqLwogCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgYXJyYXkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdkMWI4ZDdmNTk1OGZkODNdKi8KKwogc3RydWN0IGFycmF5b2JqZWN0OyAvKiBGb3J3YXJkICovCiAKIC8qIEFsbCBwb3NzaWJsZSBhcnJheWRlc2NyIHZhbHVlcyBhcmUgZGVmaW5lZCBpbiB0aGUgdmVjdG9yICJkZXNjcmlwdG9ycyIKQEAgLTQyLDYgKzQ3LDYzIEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgQXJyYXl0eXBlOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgYXJyYXlvYmplY3QgKmFvOworICAgIFB5T2JqZWN0KiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKK30gYXJyYXlpdGVyb2JqZWN0OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5QXJyYXlJdGVyX1R5cGU7CisKKyNkZWZpbmUgUHlBcnJheUl0ZXJfQ2hlY2sob3ApIFB5T2JqZWN0X1R5cGVDaGVjayhvcCwgJlB5QXJyYXlJdGVyX1R5cGUpCisKK2VudW0gbWFjaGluZV9mb3JtYXRfY29kZSB7CisgICAgVU5LTk9XTl9GT1JNQVQgPSAtMSwKKyAgICAvKiBVTktOT1dOX0ZPUk1BVCBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIG1hY2hpbmUgZm9ybWF0IGZvciBhbgorICAgICAqIGFycmF5IHR5cGUgY29kZSBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQuIFdoZW4gdGhpcyBvY2N1cnMsIGEgbGlzdCBvZgorICAgICAqIFB5dGhvbiBvYmplY3RzIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBjb250ZW50IG9mIHRoZSBhcnJheQorICAgICAqIGluc3RlYWQgb2YgdXNpbmcgdGhlIG1lbW9yeSBjb250ZW50IG9mIHRoZSBhcnJheSBkaXJlY3RseS4gSW4gdGhhdAorICAgICAqIGNhc2UsIHRoZSBhcnJheV9yZWNvbnN0cnVjdG9yIG1lY2hhbmlzbSBpcyBieXBhc3NlZCBjb21wbGV0ZWx5LCBhbmQKKyAgICAgKiB0aGUgc3RhbmRhcmQgYXJyYXkgY29uc3RydWN0b3IgaXMgdXNlZCBpbnN0ZWFkLgorICAgICAqCisgICAgICogVGhpcyBpcyB3aWxsIG1vc3QgbGlrZWx5IG9jY3VyIHdoZW4gdGhlIG1hY2hpbmUgZG9lc24ndCB1c2UgSUVFRQorICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuCisgICAgICovCisKKyAgICBVTlNJR05FRF9JTlQ4ID0gMCwKKyAgICBTSUdORURfSU5UOCA9IDEsCisgICAgVU5TSUdORURfSU5UMTZfTEUgPSAyLAorICAgIFVOU0lHTkVEX0lOVDE2X0JFID0gMywKKyAgICBTSUdORURfSU5UMTZfTEUgPSA0LAorICAgIFNJR05FRF9JTlQxNl9CRSA9IDUsCisgICAgVU5TSUdORURfSU5UMzJfTEUgPSA2LAorICAgIFVOU0lHTkVEX0lOVDMyX0JFID0gNywKKyAgICBTSUdORURfSU5UMzJfTEUgPSA4LAorICAgIFNJR05FRF9JTlQzMl9CRSA9IDksCisgICAgVU5TSUdORURfSU5UNjRfTEUgPSAxMCwKKyAgICBVTlNJR05FRF9JTlQ2NF9CRSA9IDExLAorICAgIFNJR05FRF9JTlQ2NF9MRSA9IDEyLAorICAgIFNJR05FRF9JTlQ2NF9CRSA9IDEzLAorICAgIElFRUVfNzU0X0ZMT0FUX0xFID0gMTQsCisgICAgSUVFRV83NTRfRkxPQVRfQkUgPSAxNSwKKyAgICBJRUVFXzc1NF9ET1VCTEVfTEUgPSAxNiwKKyAgICBJRUVFXzc1NF9ET1VCTEVfQkUgPSAxNywKKyAgICBVVEYxNl9MRSA9IDE4LAorICAgIFVURjE2X0JFID0gMTksCisgICAgVVRGMzJfTEUgPSAyMCwKKyAgICBVVEYzMl9CRSA9IDIxCit9OworI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01JTiAwCisjZGVmaW5lIE1BQ0hJTkVfRk9STUFUX0NPREVfTUFYIDIxCisKKworLyoKKyAqIE11c3QgY29tZSBhZnRlciBhcnJheW9iamVjdCwgYXJyYXlpdGVyb2JqZWN0LAorICogYW5kIGVudW0gbWFjaGluZV9jb2RlX3R5cGUgZGVmaW5pdGlvbnMuCisgKi8KKyNpbmNsdWRlICJjbGluaWMvYXJyYXltb2R1bGUuYy5oIgorCiAjZGVmaW5lIGFycmF5X0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZBcnJheXR5cGUpCiAjZGVmaW5lIGFycmF5X0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmQXJyYXl0eXBlKQogCkBAIC00NzEsNiArNTMzLDEwIEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogSW1wbGVtZW50YXRpb25zIG9mIGFycmF5IG9iamVjdCBtZXRob2RzLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGFycmF5LmFycmF5ICJhcnJheW9iamVjdCAqIiAiJkFycmF5dHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFkNDNkMzdlOTQyYTg4NTRdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG5ld2FycmF5b2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBzaXplLCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3IpCkBAIC02ODQsMTYgKzc1MCwzNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilucDsKIH0KIAorCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX2NvcHlfXworCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2NvcHkoYXJyYXlvYmplY3QgKmEsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV9fX2NvcHlfX19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRlYzdjM2Y5MjVkOTYxOWUgaW5wdXQ9YWQxZWU1YjA4Njk2NWYwOV0qLwogewotICAgIHJldHVybiBhcnJheV9zbGljZShhLCAwLCBQeV9TSVpFKGEpKTsKKyAgICByZXR1cm4gYXJyYXlfc2xpY2Uoc2VsZiwgMCwgUHlfU0laRShzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3B5X2RvYywKLSJjb3B5KGFycmF5KVxuXAotXG5cCi0gUmV0dXJuIGEgY29weSBvZiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX2RlZXBjb3B5X18KKworICAgIHVudXNlZDogb2JqZWN0CisgICAgLworCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X19fZGVlcGNvcHlfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZWM3NDhkOGUxNGE5ZmFhIGlucHV0PTI0MDVlY2I0OTMzNzQ4YzRdKi8KK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChzZWxmKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2NvbmNhdChhcnJheW9iamVjdCAqYSwgUHlPYmplY3QgKmJiKQpAQCAtOTYxLDggKzEwNDYsMTggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuY291bnQKKworICAgIHY6IG9iamVjdAorICAgIC8KKworUmV0dXJuIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiB2IGluIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2NvdW50KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X2NvdW50KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZGQzNjI0YmY3MTM1YTNhIGlucHV0PWQ5YmNlOWQ2NWUzOWQxZjVdKi8KIHsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC05ODQsMTMgKzEwNzksMTkgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGNvdW50KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X2RvYywKLSJjb3VudCh4KVxuXAotXG5cCi1SZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHggaW4gdGhlIGFycmF5LiIpOworCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5pbmRleAorCisgICAgdjogb2JqZWN0CisgICAgLworCitSZXR1cm4gaW5kZXggb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2luZGV4KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X2luZGV4KGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDg0OThkMzI1NjAyMTY3IGlucHV0PWNmNjE5ODk4YzY2NDlkMDhdKi8KIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTEwMTMsMTEgKzExMTQsNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIoaW5kZXhfZG9jLAotImluZGV4KHgpXG5cCi1cblwKLVJldHVybiBpbmRleCBvZiBmaXJzdCBvY2N1cnJlbmNlIG9mIHggaW4gdGhlIGFycmF5LiIpOwotCiBzdGF0aWMgaW50CiBhcnJheV9jb250YWlucyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCiB7CkBAIC0xMDM0LDggKzExMzAsMTggQEAKICAgICByZXR1cm4gY21wOwogfQogCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5yZW1vdmUKKworICAgIHY6IG9iamVjdAorICAgIC8KKworUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHYgaW4gdGhlIGFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcmVtb3ZlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2FycmF5X2FycmF5X3JlbW92ZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmVmMDZiZTlmZGY5ZGNlYiBpbnB1dD0wYjFlNWFlZDI1NTkwMDI3XSovCiB7CiAgICAgaW50IGk7CiAKQEAgLTEwNjIsMTggKzExNjgsMjMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfU1RSVkFSKHJlbW92ZV9kb2MsCi0icmVtb3ZlKHgpXG5cCi1cblwKLVJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB4IGluIHRoZSBhcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnBvcAorCisgICAgaTogUHlfc3NpemVfdCA9IC0xCisgICAgLworCitSZXR1cm4gdGhlIGktdGggZWxlbWVudCBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGFycmF5LgorCitpIGRlZmF1bHRzIHRvIC0xLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfcG9wKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X2FycmF5X3BvcF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmMxZjBjNTRmZTUzMDhlNCBpbnB1dD04ZTVmZWI0YzFhMTFjZDQ0XSovCiB7Ci0gICAgUHlfc3NpemVfdCBpID0gLTE7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLCAmaSkpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKFB5X1NJWkUoc2VsZikgPT0gMCkgewogICAgICAgICAvKiBTcGVjaWFsLWNhc2UgbW9zdCBjb21tb24gZmFpbHVyZSBjYXVzZSAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInBvcCBmcm9tIGVtcHR5IGFycmF5Iik7CkBAIC0xMDk1LDEzICsxMjA2LDE4IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3BfZG9jLAotInBvcChbaV0pXG5cCi1cblwKLVJldHVybiB0aGUgaS10aCBlbGVtZW50IGFuZCBkZWxldGUgaXQgZnJvbSB0aGUgYXJyYXkuIGkgZGVmYXVsdHMgdG8gLTEuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5leHRlbmQKKworICAgIGJiOiBvYmplY3QKKyAgICAvCisKK0FwcGVuZCBpdGVtcyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2V4dGVuZChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJiKQorYXJyYXlfYXJyYXlfZXh0ZW5kKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmJkZGJjOGU4YmVmODcxZCBpbnB1dD00M2JlODZhYmE1YzMxZTQ0XSovCiB7CiAgICAgaWYgKGFycmF5X2RvX2V4dGVuZChzZWxmLCBiYikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTEwOSwyOSArMTIyNSwzNSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoZXh0ZW5kX2RvYywKLSJleHRlbmQoYXJyYXkgb3IgaXRlcmFibGUpXG5cCi1cblwKLSBBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5pbnNlcnQKKworICAgIGk6IFB5X3NzaXplX3QKKyAgICB2OiBvYmplY3QKKyAgICAvCisKK0luc2VydCBhIG5ldyBpdGVtIHYgaW50byB0aGUgYXJyYXkgYmVmb3JlIHBvc2l0aW9uIGkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9pbnNlcnQoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWEzNjQ4ZTI3ODM0ODU2NCBpbnB1dD01NTc3ZDFiNDM4M2U5MzEzXSovCiB7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5T2JqZWN0ICp2OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwgJmksICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIGlucyhzZWxmLCBpLCB2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGluc2VydF9kb2MsCi0iaW5zZXJ0KGkseClcblwKLVxuXAotSW5zZXJ0IGEgbmV3IGl0ZW0geCBpbnRvIHRoZSBhcnJheSBiZWZvcmUgcG9zaXRpb24gaS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmJ1ZmZlcl9pbmZvCiAKK1JldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheSdzIGNvbnRlbnRzLgorCitUaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlCit0aGUgYnVmZmVyIGxlbmd0aCBpbiBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2J1ZmZlcl9pbmZvKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9faW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YjJhNGVjM2FlN2U5OGU3IGlucHV0PWE1OGJhZTVjNmUxYWM2YTZdKi8KIHsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTCwgKnY7CiAKQEAgLTExNTYsMjkgKzEyNzgsMzQgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1QeURvY19TVFJWQVIoYnVmZmVyX2luZm9fZG9jLAotImJ1ZmZlcl9pbmZvKCkgLT4gKGFkZHJlc3MsIGxlbmd0aClcblwKLVxuXAotUmV0dXJuIGEgdHVwbGUgKGFkZHJlc3MsIGxlbmd0aCkgZ2l2aW5nIHRoZSBjdXJyZW50IG1lbW9yeSBhZGRyZXNzIGFuZFxuXAotdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheSdzIGNvbnRlbnRzXG5cCi1UaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlXG5cCi10aGUgYnVmZmVyIGxlbmd0aCBpbiBieXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmFwcGVuZAogCisgICAgdjogb2JqZWN0CisgICAgLworCitBcHBlbmQgbmV3IHZhbHVlIHYgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9hcHBlbmQoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYXJyYXlfYXJyYXlfYXBwZW5kKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NDVhMDY2OWJmOGRiMGUyIGlucHV0PTBiOThkOWQ3OGU3OGYwZmFdKi8KIHsKICAgICByZXR1cm4gaW5zKHNlbGYsIFB5X1NJWkUoc2VsZiksIHYpOwogfQogCi1QeURvY19TVFJWQVIoYXBwZW5kX2RvYywKLSJhcHBlbmQoeClcblwKLVxuXAotQXBwZW5kIG5ldyB2YWx1ZSB4IHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXkuYnl0ZXN3YXAKIAorQnl0ZXN3YXAgYWxsIGl0ZW1zIG9mIHRoZSBhcnJheS4KKworSWYgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBhcmUgbm90IDEsIDIsIDQsIG9yIDggYnl0ZXMgaW4gc2l6ZSwgUnVudGltZUVycm9yIGlzCityYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9ieXRlc3dhcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK2FycmF5X2FycmF5X2J5dGVzd2FwX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWY4MjM2Y2JkZjBkOTBiNSBpbnB1dD02YTg1NTkxYjk1MGEwMTg2XSovCiB7CiAgICAgY2hhciAqcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMjI4LDE0ICsxMzU1LDE1IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihieXRlc3dhcF9kb2MsCi0iYnl0ZXN3YXAoKVxuXAotXG5cCi1CeXRlc3dhcCBhbGwgaXRlbXMgb2YgdGhlIGFycmF5LiAgSWYgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBhcmUgbm90IDEsIDIsXG5cCi00LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpcyByYWlzZWQuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5yZXZlcnNlCisKK1JldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9yZXZlcnNlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfcmV2ZXJzZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwNDg2OGIzNmY2ZjQwODkgaW5wdXQ9Y2Q5MDRmMDFiMjdkOTY2YV0qLwogewogICAgIFB5X3NzaXplX3QgaXRlbXNpemUgPSBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgY2hhciAqcCwgKnE7CkBAIC0xMjYxLDI3ICsxMzg5LDI2IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLVB5RG9jX1NUUlZBUihyZXZlcnNlX2RvYywKLSJyZXZlcnNlKClcblwKLVxuXAotUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIGl0ZW1zIGluIHRoZSBhcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmZyb21maWxlCiAKKyAgICBmOiBvYmplY3QKKyAgICBuOiBQeV9zc2l6ZV90CisgICAgLwogCi0vKiBGb3J3YXJkICovCi1zdGF0aWMgUHlPYmplY3QgKmFycmF5X2Zyb21ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpOworUmVhZCBuIG9iamVjdHMgZnJvbSB0aGUgZmlsZSBvYmplY3QgZiBhbmQgYXBwZW5kIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9mcm9tZmlsZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tZmlsZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZiwgUHlfc3NpemVfdCBuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjOWY2MDBlMTBmNTM1MTAgaW5wdXQ9ZTE4OGFmZThlNThhZGY0MF0qLwogewotICAgIFB5T2JqZWN0ICpmLCAqYiwgKnJlczsKKyAgICBQeU9iamVjdCAqYiwgKnJlczsKICAgICBQeV9zc2l6ZV90IGl0ZW1zaXplID0gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplOwotICAgIFB5X3NzaXplX3QgbiwgbmJ5dGVzOworICAgIFB5X3NzaXplX3QgbmJ5dGVzOwogICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogICAgIGludCBub3RfZW5vdWdoX2J5dGVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsICZmLCAmbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzA1LDEzICsxNDMyLDggQEAKIAogICAgIG5vdF9lbm91Z2hfYnl0ZXMgPSAoUHlCeXRlc19HRVRfU0laRShiKSAhPSBuYnl0ZXMpOwogCi0gICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihPKSIsIGIpOworICAgIHJlcyA9IGFycmF5X2FycmF5X2Zyb21ieXRlcyhzZWxmLCBiKTsKICAgICBQeV9ERUNSRUYoYik7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSBhcnJheV9mcm9tYnl0ZXMoc2VsZiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEzMjUsMTUgKzE0NDcsMTggQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIoZnJvbWZpbGVfZG9jLAotImZyb21maWxlKGYsIG4pXG5cCi1cblwKLVJlYWQgbiBvYmplY3RzIGZyb20gdGhlIGZpbGUgb2JqZWN0IGYgYW5kIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlXG5cCi1hcnJheS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvZmlsZQogCisgICAgZjogb2JqZWN0CisgICAgLworCitXcml0ZSBhbGwgaXRlbXMgKGFzIG1hY2hpbmUgdmFsdWVzKSB0byB0aGUgZmlsZSBvYmplY3QgZi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3RvZmlsZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYpCithcnJheV9hcnJheV90b2ZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhMmNmYTgxMjhkZjA3NzcgaW5wdXQ9YjA2NjlhNDg0YWFiMDgzMV0qLwogewogICAgIFB5X3NzaXplX3QgbmJ5dGVzID0gUHlfU0laRShzZWxmKSAqIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICAvKiBXcml0ZSA2NEsgYmxvY2tzIGF0IGEgdGltZSAqLwpAQCAtMTM2OCwxNCArMTQ5MywxOCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIodG9maWxlX2RvYywKLSJ0b2ZpbGUoZilcblwKLVxuXAotV3JpdGUgYWxsIGl0ZW1zIChhcyBtYWNoaW5lIHZhbHVlcykgdG8gdGhlIGZpbGUgb2JqZWN0IGYuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tbGlzdAogCisgICAgbGlzdDogb2JqZWN0CisgICAgLworCitBcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfZnJvbWxpc3QoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaXN0KQorYXJyYXlfYXJyYXlfZnJvbWxpc3QoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaXN0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI2NDExYzJkMjI4YTNlM2YgaW5wdXQ9YmUyNjA1YTk2YzQ5NjgwZl0qLwogewogICAgIFB5X3NzaXplX3QgbjsKIApAQCAtMTQwMiwxMyArMTUzMSwxNSBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1QeURvY19TVFJWQVIoZnJvbWxpc3RfZG9jLAotImZyb21saXN0KGxpc3QpXG5cCi1cblwKLUFwcGVuZCBpdGVtcyB0byBhcnJheSBmcm9tIGxpc3QuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS50b2xpc3QKKworQ29udmVydCBhcnJheSB0byBhbiBvcmRpbmFyeSBsaXN0IHdpdGggdGhlIHNhbWUgaXRlbXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b2xpc3QoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV90b2xpc3RfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMGI2MGNjOWVhYjhlZjg5IGlucHV0PWE4ZDc3ODRhOTRmODZiNTNdKi8KIHsKICAgICBQeU9iamVjdCAqbGlzdCA9IFB5TGlzdF9OZXcoUHlfU0laRShzZWxmKSk7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTQyOSwxMSArMTU2MCw2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUih0b2xpc3RfZG9jLAotInRvbGlzdCgpIC0+IGxpc3RcblwKLVxuXAotQ29udmVydCBhcnJheSB0byBhbiBvcmRpbmFyeSBsaXN0IHdpdGggdGhlIHNhbWUgaXRlbXMuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBmcm9tYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQogewpAQCAtMTQ3MSw0NyArMTU5Nyw1MiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5mcm9tc3RyaW5nCisKKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3N0ciwgYnVmZmVyfSkKKyAgICAvCisKK0FwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4KKworVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIGZyb21ieXRlcyBpbnN0ZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfZnJvbXN0cmluZyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxYzRiYWE3NzlkZjg0Y2UgaW5wdXQ9YTMzNDFhNTEyZTExZDc3M10qLwogewotICAgIFB5X2J1ZmZlciBidWZmZXI7CiAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAiZnJvbXN0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFVzZSBmcm9tYnl0ZXMoKSBpbnN0ZWFkLiIsIDIpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgJmJ1ZmZlcik7CisgICAgcmV0dXJuIGZyb21ieXRlcyhzZWxmLCBidWZmZXIpOwogfQogCi1QeURvY19TVFJWQVIoZnJvbXN0cmluZ19kb2MsCi0iZnJvbXN0cmluZyhzdHJpbmcpXG5cCi1cblwKLUFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZVxuXAotdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuXG5cCi1cblwKLVRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSBmcm9tYnl0ZXMgaW5zdGVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmZyb21ieXRlcwogCisgICAgYnVmZmVyOiBQeV9idWZmZXIKKyAgICAvCisKK0FwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb21ieXRlcyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCithcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk4NDJjOGY3NTEwYTUxNiBpbnB1dD0yYmJmMmI1M2ViZmNjOTg4XSovCiB7Ci0gICAgUHlfYnVmZmVyIGJ1ZmZlcjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBmcm9tYnl0ZXMoc2VsZiwgJmJ1ZmZlcik7CisgICAgcmV0dXJuIGZyb21ieXRlcyhzZWxmLCBidWZmZXIpOwogfQogCi1QeURvY19TVFJWQVIoZnJvbWJ5dGVzX2RvYywKLSJmcm9tYnl0ZXMoYnl0ZXN0cmluZylcblwKLVxuXAotQXBwZW5kcyBpdGVtcyBmcm9tIHRoZSBzdHJpbmcsIGludGVycHJldGluZyBpdCBhcyBhbiBhcnJheSBvZiBtYWNoaW5lXG5cCi12YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvYnl0ZXMKIAorQ29udmVydCB0aGUgYXJyYXkgdG8gYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMgYW5kIHJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b2J5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3MzE4ZTRlZGNkYzJiYjYgaW5wdXQ9OTBlZTQ5NWY5NmRlMzRmNV0qLwogewogICAgIGlmIChQeV9TSVpFKHNlbGYpIDw9IFBZX1NTSVpFX1RfTUFYIC8gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplKSB7CiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPm9iX2l0ZW0sCkBAIC0xNTIxLDQwICsxNjUyLDQ0IEBACiAgICAgfQogfQogCi1QeURvY19TVFJWQVIodG9ieXRlc19kb2MsCi0idG9ieXRlcygpIC0+IGJ5dGVzXG5cCi1cblwKLUNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzXG5cCi1yZXByZXNlbnRhdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvc3RyaW5nCiAKK0NvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLgorCitUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2UgdG9ieXRlcyBpbnN0ZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXJyYXlfdG9zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV90b3N0cmluZ19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdkNmJkOTI3NDVhMmM4ZjMgaW5wdXQ9YjZjMGRkZWU3YjMwNDU3ZV0qLwogewogICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgInRvc3RyaW5nKCkgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMoKSBpbnN0ZWFkLiIsIDIpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBhcnJheV90b2J5dGVzKHNlbGYsIHVudXNlZCk7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKIH0KIAotUHlEb2NfU1RSVkFSKHRvc3RyaW5nX2RvYywKLSJ0b3N0cmluZygpIC0+IGJ5dGVzXG5cCi1cblwKLUNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzXG5cCi1yZXByZXNlbnRhdGlvbi5cblwKLVxuXAotVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIHRvYnl0ZXMgaW5zdGVhZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LmZyb211bmljb2RlCiAKKyAgICB1c3RyOiBQeV9VTklDT0RFKHplcm9lcz1UcnVlKQorICAgIC8KKworRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLgorCitUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuCitVc2UgYXJyYXkuZnJvbWJ5dGVzKHVzdHIuZW5jb2RlKC4uLikpIHRvIGFwcGVuZCBVbmljb2RlIGRhdGEgdG8gYW4gYXJyYXkgb2YKK3NvbWUgb3RoZXIgdHlwZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X2Zyb211bmljb2RlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2FycmF5X2FycmF5X2Zyb211bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X1VOSUNPREUgKnVzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWJiNzJmYzE2OTc1ZTA2ZCBpbnB1dD0xNTBmMDA1NjZmZmJjYTZlXSovCiB7Ci0gICAgUHlfVU5JQ09ERSAqdXN0cjsKLSAgICBQeV9zc2l6ZV90IG47CiAgICAgY2hhciB0eXBlY29kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKICAgICBpZiAodHlwZWNvZGUgIT0gJ3UnKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtMTU2MiwyOSArMTY5NywzMCBAQAogICAgICAgICAgICAgInVuaWNvZGUgdHlwZSBhcnJheXMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChuID4gMCkgeworICAgIGlmICh1c3RyX2xlbmd0aCA+IDApIHsKICAgICAgICAgUHlfc3NpemVfdCBvbGRfc2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgICAgIGlmIChhcnJheV9yZXNpemUoc2VsZiwgb2xkX3NpemUgKyBuKSA9PSAtMSkKKyAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShzZWxmLCBvbGRfc2l6ZSArIHVzdHJfbGVuZ3RoKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBtZW1jcHkoc2VsZi0+b2JfaXRlbSArIG9sZF9zaXplICogc2l6ZW9mKFB5X1VOSUNPREUpLAotICAgICAgICAgICAgICAgdXN0ciwgbiAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgICAgICAgICB1c3RyLCB1c3RyX2xlbmd0aCAqIHNpemVvZihQeV9VTklDT0RFKSk7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZnJvbXVuaWNvZGVfZG9jLAotImZyb211bmljb2RlKHVzdHIpXG5cCi1cblwKLUV4dGVuZHMgdGhpcyBhcnJheSB3aXRoIGRhdGEgZnJvbSB0aGUgdW5pY29kZSBzdHJpbmcgdXN0ci5cblwKLVRoZSBhcnJheSBtdXN0IGJlIGEgdW5pY29kZSB0eXBlIGFycmF5OyBvdGhlcndpc2UgYSBWYWx1ZUVycm9yXG5cCi1pcyByYWlzZWQuICBVc2UgYXJyYXkuZnJvbWJ5dGVzKHVzdHIuZW5jb2RlKC4uLikpIHRvXG5cCi1hcHBlbmQgVW5pY29kZSBkYXRhIHRvIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5LnRvdW5pY29kZQogCitFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuCisKK0NvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTsKK290aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLiAgVXNlIGFycmF5LnRvYnl0ZXMoKS5kZWNvZGUoKSB0byBvYnRhaW4gYQordW5pY29kZSBzdHJpbmcgZnJvbSBhbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV90b3VuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV90b3VuaWNvZGVfaW1wbChhcnJheW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOGU0NDIzNzgzMzZlMWVmIGlucHV0PTEyNzI0MmVlYmU3MGI2NmRdKi8KIHsKICAgICBjaGFyIHR5cGVjb2RlOwogICAgIHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwpAQCAtMTU5Niw3MCArMTczMiwyNCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKFB5X1VOSUNPREUgKikgc2VsZi0+b2JfaXRlbSwgUHlfU0laRShzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUih0b3VuaWNvZGVfZG9jLAotInRvdW5pY29kZSgpIC0+IHVuaWNvZGVcblwKLVxuXAotQ29udmVydCB0aGUgYXJyYXkgdG8gYSB1bmljb2RlIHN0cmluZy4gIFRoZSBhcnJheSBtdXN0IGJlXG5cCi1hIHVuaWNvZGUgdHlwZSBhcnJheTsgb3RoZXJ3aXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQuICBVc2VcblwKLWFycmF5LnRvYnl0ZXMoKS5kZWNvZGUoKSB0byBvYnRhaW4gYSB1bmljb2RlIHN0cmluZyBmcm9tXG5cCi1hbiBhcnJheSBvZiBzb21lIG90aGVyIHR5cGUuIik7CisvKltjbGluaWMgaW5wdXRdCithcnJheS5hcnJheS5fX3NpemVvZl9fCiAKK1NpemUgb2YgdGhlIGFycmF5IGluIG1lbW9yeSwgaW4gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9zaXplb2YoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCithcnJheV9hcnJheV9fX3NpemVvZl9fX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDhlMWM2MWViYmUzZWFlZCBpbnB1dD04MDU1ODY1NjViZjJiM2M2XSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAgICAgcmVzID0gc2l6ZW9mKGFycmF5b2JqZWN0KSArIHNlbGYtPmFsbG9jYXRlZCAqIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaXplb2ZfZG9jLAotIl9fc2l6ZW9mX18oKSAtPiBpbnRcblwKLVxuXAotU2l6ZSBvZiB0aGUgYXJyYXkgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKLQogCiAvKioqKioqKioqKioqKioqKioqKioqKiogUGlja2xpbmcgc3VwcG9ydCAqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLWVudW0gbWFjaGluZV9mb3JtYXRfY29kZSB7Ci0gICAgVU5LTk9XTl9GT1JNQVQgPSAtMSwKLSAgICAvKiBVTktOT1dOX0ZPUk1BVCBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdGhlIG1hY2hpbmUgZm9ybWF0IGZvciBhbgotICAgICAqIGFycmF5IHR5cGUgY29kZSBjYW5ub3QgYmUgaW50ZXJwcmV0ZWQuIFdoZW4gdGhpcyBvY2N1cnMsIGEgbGlzdCBvZgotICAgICAqIFB5dGhvbiBvYmplY3RzIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBjb250ZW50IG9mIHRoZSBhcnJheQotICAgICAqIGluc3RlYWQgb2YgdXNpbmcgdGhlIG1lbW9yeSBjb250ZW50IG9mIHRoZSBhcnJheSBkaXJlY3RseS4gSW4gdGhhdAotICAgICAqIGNhc2UsIHRoZSBhcnJheV9yZWNvbnN0cnVjdG9yIG1lY2hhbmlzbSBpcyBieXBhc3NlZCBjb21wbGV0ZWx5LCBhbmQKLSAgICAgKiB0aGUgc3RhbmRhcmQgYXJyYXkgY29uc3RydWN0b3IgaXMgdXNlZCBpbnN0ZWFkLgotICAgICAqCi0gICAgICogVGhpcyBpcyB3aWxsIG1vc3QgbGlrZWx5IG9jY3VyIHdoZW4gdGhlIG1hY2hpbmUgZG9lc24ndCB1c2UgSUVFRQotICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuCi0gICAgICovCi0KLSAgICBVTlNJR05FRF9JTlQ4ID0gMCwKLSAgICBTSUdORURfSU5UOCA9IDEsCi0gICAgVU5TSUdORURfSU5UMTZfTEUgPSAyLAotICAgIFVOU0lHTkVEX0lOVDE2X0JFID0gMywKLSAgICBTSUdORURfSU5UMTZfTEUgPSA0LAotICAgIFNJR05FRF9JTlQxNl9CRSA9IDUsCi0gICAgVU5TSUdORURfSU5UMzJfTEUgPSA2LAotICAgIFVOU0lHTkVEX0lOVDMyX0JFID0gNywKLSAgICBTSUdORURfSU5UMzJfTEUgPSA4LAotICAgIFNJR05FRF9JTlQzMl9CRSA9IDksCi0gICAgVU5TSUdORURfSU5UNjRfTEUgPSAxMCwKLSAgICBVTlNJR05FRF9JTlQ2NF9CRSA9IDExLAotICAgIFNJR05FRF9JTlQ2NF9MRSA9IDEyLAotICAgIFNJR05FRF9JTlQ2NF9CRSA9IDEzLAotICAgIElFRUVfNzU0X0ZMT0FUX0xFID0gMTQsCi0gICAgSUVFRV83NTRfRkxPQVRfQkUgPSAxNSwKLSAgICBJRUVFXzc1NF9ET1VCTEVfTEUgPSAxNiwKLSAgICBJRUVFXzc1NF9ET1VCTEVfQkUgPSAxNywKLSAgICBVVEYxNl9MRSA9IDE4LAotICAgIFVURjE2X0JFID0gMTksCi0gICAgVVRGMzJfTEUgPSAyMCwKLSAgICBVVEYzMl9CRSA9IDIxCi19OwotI2RlZmluZSBNQUNISU5FX0ZPUk1BVF9DT0RFX01JTiAwCi0jZGVmaW5lIE1BQ0hJTkVfRk9STUFUX0NPREVfTUFYIDIxCi0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWZvcm1hdGRlc2NyIHsKICAgICBzaXplX3Qgc2l6ZTsKICAgICBpbnQgaXNfc2lnbmVkOwpAQCAtMTgzNSwyMSArMTkyNSwyOSBAQAogICogVGhpcyBmdW5jdGlvbnMgaXMgYSBzcGVjaWFsIGNvbnN0cnVjdG9yIHVzZWQgd2hlbiB1bnBpY2tsaW5nIGFuIGFycmF5LiBJdAogICogcHJvdmlkZXMgYSBwb3J0YWJsZSB3YXkgdG8gcmVidWlsZCBhbiBhcnJheSBmcm9tIGl0cyBtZW1vcnkgcmVwcmVzZW50YXRpb24uCiAgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5Ll9hcnJheV9yZWNvbnN0cnVjdG9yCisKKyAgICBhcnJheXR5cGU6IG9iamVjdCh0eXBlPSJQeVR5cGVPYmplY3QgKiIpCisgICAgdHlwZWNvZGU6IGludChhY2NlcHQ9e3N0cn0pCisgICAgbWZvcm1hdF9jb2RlOiBpbnQodHlwZT0iZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIikKKyAgICBpdGVtczogb2JqZWN0CisgICAgLworCitJbnRlcm5hbC4gVXNlZCBmb3IgcGlja2xpbmcgc3VwcG9ydC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWFycmF5X3JlY29uc3RydWN0b3IoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgbWZvcm1hdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmVjYmYwZThlNGQ5MmFiOSBpbnB1dD0yNDY0ZGM4ZjRjNzczNmI1XSovCiB7Ci0gICAgUHlUeXBlT2JqZWN0ICphcnJheXR5cGU7Ci0gICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgdHlwZWNvZGU7Ci0gICAgZW51bSBtYWNoaW5lX2Zvcm1hdF9jb2RlIG1mb3JtYXRfY29kZTsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9DaU86YXJyYXkuX2FycmF5X3JlY29uc3RydWN0b3IiLAotICAgICAgICAgICAgICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYSB0eXBlIG9iamVjdCwgbm90ICUuMjAwcyIsCkBAIC0yMDAwLDcgKzIwOTgsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgZm9yIChkZXNjciA9IGRlc2NyaXB0b3JzOyBkZXNjci0+dHlwZWNvZGUgIT0gJ1wwJzsgZGVzY3IrKykgewogICAgICAgICAgICAgaWYgKGRlc2NyLT5pc19pbnRlZ2VyX3R5cGUgJiYKLSAgICAgICAgICAgICAgICBkZXNjci0+aXRlbXNpemUgPT0gbWZfZGVzY3Iuc2l6ZSAmJgorICAgICAgICAgICAgICAgIChzaXplX3QpZGVzY3ItPml0ZW1zaXplID09IG1mX2Rlc2NyLnNpemUgJiYKICAgICAgICAgICAgICAgICBkZXNjci0+aXNfc2lnbmVkID09IG1mX2Rlc2NyLmlzX3NpZ25lZCkKICAgICAgICAgICAgICAgICB0eXBlY29kZSA9IGRlc2NyLT50eXBlY29kZTsKICAgICAgICAgfQpAQCAtMjAzOCwxMyArMjEzNiwyMyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2FycmF5LmFycmF5Ll9fcmVkdWNlX2V4X18KKworICAgIHZhbHVlOiBvYmplY3QKKyAgICAvCisKK1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheV9yZWR1Y2VfZXgoYXJyYXlvYmplY3QgKmFycmF5LCBQeU9iamVjdCAqdmFsdWUpCithcnJheV9hcnJheV9fX3JlZHVjZV9leF9fKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDUxZTBhNjE3NWQwZWRkYiBpbnB1dD1jMzZjM2Y4NWRlN2RmNmNkXSovCiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqYXJyYXlfc3RyOwotICAgIGludCB0eXBlY29kZSA9IGFycmF5LT5vYl9kZXNjci0+dHlwZWNvZGU7CisgICAgaW50IHR5cGVjb2RlID0gc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlOwogICAgIGludCBtZm9ybWF0X2NvZGU7CiAgICAgc3RhdGljIFB5T2JqZWN0ICphcnJheV9yZWNvbnN0cnVjdG9yID0gTlVMTDsKICAgICBsb25nIHByb3RvY29sOwpAQCAtMjA3Miw3ICsyMTgwLDcgQEAKICAgICBpZiAocHJvdG9jb2wgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilhcnJheSwgJlB5SWRfX19kaWN0X18pOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwOTUsMzIgKzIyMDMsMzAgQEAKICAgICAgICAgICogY29lcmNpbmcgdW5pY29kZSBvYmplY3RzIHRvIGJ5dGVzIGluIGFycmF5X3JlY29uc3RydWN0b3IuCiAgICAgICAgICAqLwogICAgICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICAgICAgbGlzdCA9IGFycmF5X3RvbGlzdChhcnJheSwgTlVMTCk7CisgICAgICAgIGxpc3QgPSBhcnJheV9hcnJheV90b2xpc3RfaW1wbChzZWxmKTsKICAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgICAgICJPKENPKU8iLCBQeV9UWVBFKGFycmF5KSwgdHlwZWNvZGUsIGxpc3QsIGRpY3QpOworICAgICAgICAgICAgIk8oQ08pTyIsIFB5X1RZUEUoc2VsZiksIHR5cGVjb2RlLCBsaXN0LCBkaWN0KTsKICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwogICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgYXJyYXlfc3RyID0gYXJyYXlfdG9ieXRlcyhhcnJheSwgTlVMTCk7CisgICAgYXJyYXlfc3RyID0gYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKHNlbGYpOwogICAgIGlmIChhcnJheV9zdHIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTyhPQ2lOKU8iLCBhcnJheV9yZWNvbnN0cnVjdG9yLCBQeV9UWVBFKGFycmF5KSwgdHlwZWNvZGUsCisgICAgICAgICJPKE9DaU4pTyIsIGFycmF5X3JlY29uc3RydWN0b3IsIFB5X1RZUEUoc2VsZiksIHR5cGVjb2RlLAogICAgICAgICBtZm9ybWF0X2NvZGUsIGFycmF5X3N0ciwgZGljdCk7CiAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2dldF90eXBlY29kZShhcnJheW9iamVjdCAqYSwgdm9pZCAqY2xvc3VyZSkKIHsKQEAgLTIxNDMsNTUgKzIyNDksMzEgQEAKIH07CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBhcnJheV9tZXRob2RzW10gPSB7Ci0gICAgeyJhcHBlbmQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfYXBwZW5kLCAgICAgIE1FVEhfTywKLSAgICAgYXBwZW5kX2RvY30sCi0gICAgeyJidWZmZXJfaW5mbyIsICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfYnVmZmVyX2luZm8sIE1FVEhfTk9BUkdTLAotICAgICBidWZmZXJfaW5mb19kb2N9LAotICAgIHsiYnl0ZXN3YXAiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2J5dGVzd2FwLCAgICBNRVRIX05PQVJHUywKLSAgICAgYnl0ZXN3YXBfZG9jfSwKLSAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3B5LCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIGNvcHlfZG9jfSwKLSAgICB7ImNvdW50IiwgICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9jb3VudCwgICAgICAgTUVUSF9PLAotICAgICBjb3VudF9kb2N9LAotICAgIHsiX19kZWVwY29weV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2NvcHksICAgICAgICBNRVRIX08sCi0gICAgIGNvcHlfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9leHRlbmQsICAgICAgTUVUSF9PLAotICAgICBleHRlbmRfZG9jfSwKLSAgICB7ImZyb21maWxlIiwgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9mcm9tZmlsZSwgICAgTUVUSF9WQVJBUkdTLAotICAgICBmcm9tZmlsZV9kb2N9LAotICAgIHsiZnJvbWxpc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21saXN0LCAgICBNRVRIX08sCi0gICAgIGZyb21saXN0X2RvY30sCi0gICAgeyJmcm9tc3RyaW5nIiwgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfZnJvbXN0cmluZywgIE1FVEhfVkFSQVJHUywKLSAgICAgZnJvbXN0cmluZ19kb2N9LAotICAgIHsiZnJvbWJ5dGVzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb21ieXRlcywgICBNRVRIX1ZBUkFSR1MsCi0gICAgIGZyb21ieXRlc19kb2N9LAotICAgIHsiZnJvbXVuaWNvZGUiLCAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X2Zyb211bmljb2RlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIGZyb211bmljb2RlX2RvY30sCi0gICAgeyJpbmRleCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pYXJyYXlfaW5kZXgsICAgICAgIE1FVEhfTywKLSAgICAgaW5kZXhfZG9jfSwKLSAgICB7Imluc2VydCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9pbnNlcnQsICAgICAgTUVUSF9WQVJBUkdTLAotICAgICBpbnNlcnRfZG9jfSwKLSAgICB7InBvcCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9wb3AsICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICBwb3BfZG9jfSwKLSAgICB7Il9fcmVkdWNlX2V4X18iLCAgIChQeUNGdW5jdGlvbilhcnJheV9yZWR1Y2VfZXgsICAgTUVUSF9PLAotICAgICByZWR1Y2VfZG9jfSwKLSAgICB7InJlbW92ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9yZW1vdmUsICAgICAgTUVUSF9PLAotICAgICByZW1vdmVfZG9jfSwKLSAgICB7InJldmVyc2UiLCAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV9yZXZlcnNlLCAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHJldmVyc2VfZG9jfSwKLSAgICB7InRvZmlsZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2ZpbGUsICAgICAgTUVUSF9PLAotICAgICB0b2ZpbGVfZG9jfSwKLSAgICB7InRvbGlzdCIsICAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2xpc3QsICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvbGlzdF9kb2N9LAotICAgIHsidG9zdHJpbmciLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3Rvc3RyaW5nLCAgICBNRVRIX05PQVJHUywKLSAgICAgdG9zdHJpbmdfZG9jfSwKLSAgICB7InRvYnl0ZXMiLCAgICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b2J5dGVzLCAgICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvYnl0ZXNfZG9jfSwKLSAgICB7InRvdW5pY29kZSIsICAgICAgIChQeUNGdW5jdGlvbilhcnJheV90b3VuaWNvZGUsICAgTUVUSF9OT0FSR1MsCi0gICAgIHRvdW5pY29kZV9kb2N9LAotICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5X3NpemVvZiwgICAgICBNRVRIX05PQVJHUywKLSAgICAgc2l6ZW9mX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBBUlJBWV9BUlJBWV9BUFBFTkRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfQlVGRkVSX0lORk9fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfQllURVNXQVBfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfX19DT1BZX19fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfQ09VTlRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfX19ERUVQQ09QWV9fX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0VYVEVORF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NRklMRV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NTElTVF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NU1RSSU5HX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX0ZST01CWVRFU19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9GUk9NVU5JQ09ERV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9JTkRFWF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9JTlNFUlRfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfUE9QX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX19fUkVEVUNFX0VYX19fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfUkVNT1ZFX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1JFVkVSU0VfTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlfVE9GSUxFX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1RPTElTVF9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT1NUUklOR19NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9UT0JZVEVTX01FVEhPRERFRgorICAgIEFSUkFZX0FSUkFZX1RPVU5JQ09ERV9NRVRIT0RERUYKKyAgICBBUlJBWV9BUlJBWV9fX1NJWkVPRl9fX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMjA3LDkgKzIyODksOSBAQAogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImFycmF5KCclYycpIiwgKGludCl0eXBlY29kZSk7CiAgICAgfQogICAgIGlmICh0eXBlY29kZSA9PSAndScpIHsKLSAgICAgICAgdiA9IGFycmF5X3RvdW5pY29kZShhLCBOVUxMKTsKKyAgICAgICAgdiA9IGFycmF5X2FycmF5X3RvdW5pY29kZV9pbXBsKGEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHYgPSBhcnJheV90b2xpc3QoYSwgTlVMTCk7CisgICAgICAgIHYgPSBhcnJheV9hcnJheV90b2xpc3RfaW1wbChhKTsKICAgICB9CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDQ2LDcgKzI1MjgsMTEgQEAKIHN0YXRpYyBpbnQKIGFycmF5X2J1ZmZlcl9nZXRidWYoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQogewotICAgIGlmICh2aWV3PT1OVUxMKSBnb3RvIGZpbmlzaDsKKyAgICBpZiAodmlldyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJhcnJheV9idWZmZXJfZ2V0YnVmOiB2aWV3PT1OVUxMIGFyZ3VtZW50IGlzIG9ic29sZXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICB2aWV3LT5idWYgPSAodm9pZCAqKXNlbGYtPm9iX2l0ZW07CiAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0KilzZWxmOwpAQCAtMjQ3Niw3ICsyNTYyLDYgQEAKICNlbmRpZgogICAgIH0KIAotIGZpbmlzaDoKICAgICBzZWxmLT5vYl9leHBvcnRzKys7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yNTg2LDE1ICsyNjcxLDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGluaXRpYWwgIT0gTlVMTCAmJiAoUHlCeXRlQXJyYXlfQ2hlY2soaW5pdGlhbCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0NoZWNrKGluaXRpYWwpKSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0X2luaXRpYWwsICp2OwotICAgICAgICAgICAgICAgIHRfaW5pdGlhbCA9IFB5VHVwbGVfUGFjaygxLCBpbml0aWFsKTsKLSAgICAgICAgICAgICAgICBpZiAodF9pbml0aWFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdiA9IGFycmF5X2Zyb21ieXRlcygoYXJyYXlvYmplY3QgKilhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0X2luaXRpYWwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0X2luaXRpYWwpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2OworICAgICAgICAgICAgICAgIHYgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXMoKGFycmF5b2JqZWN0ICopYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGEpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3NjYsMTYgKzI4NDUsMTAgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqIEFycmF5IEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OwotICAgIGFycmF5b2JqZWN0ICAgICAgICAgICAgICAgICAqYW87Ci0gICAgUHlPYmplY3QgICAgICAgICAgICAgICAgICAgICogKCpnZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCk7Ci19IGFycmF5aXRlcm9iamVjdDsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBQeUFycmF5SXRlcl9UeXBlOwotCi0jZGVmaW5lIFB5QXJyYXlJdGVyX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeUFycmF5SXRlcl9UeXBlKQorLypbY2xpbmljIGlucHV0XQorY2xhc3MgYXJyYXkuYXJyYXlpdGVyYXRvciAiYXJyYXlpdGVyb2JqZWN0ICoiICImUHlBcnJheUl0ZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTVhZWZkMmQ3NGQ4YzhlMzBdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X2l0ZXIoYXJyYXlvYmplY3QgKmFvKQpAQCAtMjgyMywzMyArMjg5Niw0NyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYXJyYXlpdGVyX3JlZHVjZShhcnJheWl0ZXJvYmplY3QgKml0KQotewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgaXQtPmFvLCBpdC0+aW5kZXgpOwotfQorLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXlpdGVyYXRvci5fX3JlZHVjZV9fCisKK1JldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hcnJheWl0ZXJfc2V0c3RhdGUoYXJyYXlpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQorYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoYXJyYXlpdGVyb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc4OThhNTJlOGU2NmUwMTYgaW5wdXQ9YTA2MmVhMWU5OTUxNDE3YV0qLworeworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YW8sIHNlbGYtPmluZGV4KTsKK30KKworLypbY2xpbmljIGlucHV0XQorYXJyYXkuYXJyYXlpdGVyYXRvci5fX3NldHN0YXRlX18KKworICAgIHN0YXRlOiBvYmplY3QKKyAgICAvCisKK1NldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5aXRlcmF0b3JfX19zZXRzdGF0ZV9fKGFycmF5aXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM5N2RhOTkwNGU0NDNjYmUgaW5wdXQ9ZjQ3ZDVjZWRhMTllNzg3Yl0qLwogewogICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgaW5kZXggPSAwOwotICAgIGVsc2UgaWYgKGluZGV4ID4gUHlfU0laRShpdC0+YW8pKQotICAgICAgICBpbmRleCA9IFB5X1NJWkUoaXQtPmFvKTsgLyogaXRlcmF0b3IgZXhoYXVzdGVkICovCi0gICAgaXQtPmluZGV4ID0gaW5kZXg7CisgICAgZWxzZSBpZiAoaW5kZXggPiBQeV9TSVpFKHNlbGYtPmFvKSkKKyAgICAgICAgaW5kZXggPSBQeV9TSVpFKHNlbGYtPmFvKTsgLyogaXRlcmF0b3IgZXhoYXVzdGVkICovCisgICAgc2VsZi0+aW5kZXggPSBpbmRleDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKIHN0YXRpYyBQeU1ldGhvZERlZiBhcnJheWl0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAotICAgICByZWR1Y2VfZG9jfSwKLSAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKLSAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICBBUlJBWV9BUlJBWUlURVJBVE9SX19fUkVEVUNFX19fTUVUSE9EREVGCisgICAgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yODkwLDM5ICsyOTc3LDIxIEBACiAKIC8qIE5vIGZ1bmN0aW9ucyBpbiBhcnJheSBtb2R1bGUuICovCiBzdGF0aWMgUHlNZXRob2REZWYgYV9tZXRob2RzW10gPSB7Ci0gICAgeyJfYXJyYXlfcmVjb25zdHJ1Y3RvciIsIGFycmF5X3JlY29uc3RydWN0b3IsIE1FVEhfVkFSQVJHUywKLSAgICAgUHlEb2NfU1RSKCJJbnRlcm5hbC4gVXNlZCBmb3IgcGlja2xpbmcgc3VwcG9ydC4iKX0sCisgICAgQVJSQVlfX0FSUkFZX1JFQ09OU1RSVUNUT1JfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEwsIDAsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIAotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBhcnJheW1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImFycmF5IiwKLSAgICBtb2R1bGVfZG9jLAotICAgIC0xLAotICAgIGFfbWV0aG9kcywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfYXJyYXkodm9pZCkKK3N0YXRpYyBpbnQKK2FycmF5X21vZGV4ZWMoUHlPYmplY3QgKm0pCiB7Ci0gICAgUHlPYmplY3QgKm07CiAgICAgY2hhciBidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGRlc2NyaXB0b3JzKV0sICpwOwogICAgIFB5T2JqZWN0ICp0eXBlY29kZXM7CiAgICAgUHlfc3NpemVfdCBzaXplID0gMDsKICAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZBcnJheXR5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9UWVBFKCZQeUFycmF5SXRlcl9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKLSAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZhcnJheW1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJkFycmF5dHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJBcnJheVR5cGUiLCAoUHlPYmplY3QgKikmQXJyYXl0eXBlKTsKQEAgLTI5NDUsNSArMzAxNCwzMCBAQAogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIG0gPSBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TW9kdWxlRGVmX1Nsb3QgYXJyYXlzbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgYXJyYXlfbW9kZXhlY30sCisgICAgezAsIE5VTEx9Cit9OworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgYXJyYXltb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJhcnJheSIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLAorICAgIGFfbWV0aG9kcywKKyAgICBhcnJheXNsb3RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfYXJyYXkodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmYXJyYXltb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYyBiL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKaW5kZXggOTg4NzAxNC4uNzM5YzE4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCkBAIC02MCw3ICs2MCw3IEBACiAgICAgbW9kc3RhdGUtPm5jYWxsYmFja3MgPSAwOwogfQogCi0vKiBJbnN0YWxsZWQgaW50byBweXRob25ydW4uYydzIGF0ZXhpdCBtZWNoYW5pc20gKi8KKy8qIEluc3RhbGxlZCBpbnRvIHB5bGlmZWN5Y2xlLmMncyBhdGV4aXQgbWVjaGFuaXNtICovCiAKIHN0YXRpYyB2b2lkCiBhdGV4aXRfY2FsbGZ1bmNzKHZvaWQpCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICAgICBpZiAoZXhjX3R5cGUpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXhjX3R5cGUpOwogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Y190Yik7ICAgIAorICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjX3RiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJmV4Y190Yik7CiAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3lzdGVtRXhpdCkpIHsKQEAgLTE0Nyw3ICsxNDcsNyBAQAogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAicmVnaXN0ZXIoKSB0YWtlcyBhdCBsZWFzdCAxIGFyZ3VtZW50ICgwIGdpdmVuKSIpOwotICAgICAgICByZXR1cm4gTlVMTDsgCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGZ1bmMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwpAQCAtMTU5LDcgKzE1OSw3IEBACiAKICAgICBuZXdfY2FsbGJhY2sgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKGF0ZXhpdF9jYWxsYmFjaykpOwogICAgIGlmIChuZXdfY2FsbGJhY2sgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7ICAgCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogCiAgICAgbmV3X2NhbGxiYWNrLT5hcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKTsKICAgICBpZiAobmV3X2NhbGxiYWNrLT5hcmdzID09IE5VTEwpIHsKQEAgLTMzNiw3ICszMzYsNyBAQAogICAgIG1vZHN0YXRlID0gR0VUX0FURVhJVF9TVEFURShtKTsKICAgICBtb2RzdGF0ZS0+Y2FsbGJhY2tfbGVuID0gMzI7CiAgICAgbW9kc3RhdGUtPm5jYWxsYmFja3MgPSAwOwotICAgIG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzID0gUHlNZW1fTmV3KGF0ZXhpdF9jYWxsYmFjayosIAorICAgIG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzID0gUHlNZW1fTmV3KGF0ZXhpdF9jYWxsYmFjayosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc3RhdGUtPmNhbGxiYWNrX2xlbik7CiAgICAgaWYgKG1vZHN0YXRlLT5hdGV4aXRfY2FsbGJhY2tzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hdWRpb29wLmMgYi9Nb2R1bGVzL2F1ZGlvb3AuYwppbmRleCA1ZWZlZDBjLi5iYmM0NThmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2F1ZGlvb3AuYworKysgYi9Nb2R1bGVzL2F1ZGlvb3AuYwpAQCAtMzkxLDEwICszOTEsOSBAQAogfQogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSBhdWRpb29wCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01NjE5ZjkzNWYyNjkxOTlhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04ZmE4ZjY2MTFiZTM1OTFhXSovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGF1ZGlvb3AuZ2V0c2FtcGxlCkBAIC00MDgsOCArNDA3LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeV9zc2l6ZV90IGluZGV4KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0NDgyNDk3ZTZmNmU3OGYgaW5wdXQ9ODhlZGJlMjg3MTM5MzU0OV0qLworYXVkaW9vcF9nZXRzYW1wbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5kZXgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzk5NWUxODlmZGM4ZWMxNiBpbnB1dD04OGVkYmUyODcxMzkzNTQ5XSovCiB7CiAgICAgaW50IHZhbDsKIApAQCAtNTk0LDggKzU5NCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBQeV9idWZmZXIgKnJlZmVyZW5jZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MDVmZDA0ZDQyNDRkYjMxIGlucHV0PTYyYzMwNTYwNWUxODNjOWFdKi8KK2F1ZGlvb3BfZmluZGZpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MDllZWRmNWQ4MjNkNmRkIGlucHV0PTYyYzMwNTYwNWUxODNjOWFdKi8KIHsKICAgICBjb25zdCBzaG9ydCAqY3AxLCAqY3AyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKQEAgLTY2Miw4ICs2NjMsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfYnVmZmVyICpyZWZlcmVuY2UpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGRmMzVhMWU1NzU3NWNlNCBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCithdWRpb29wX2ZpbmRmYWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTU2NmE4YzU1ZGU1NGY5OSBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCiB7CiAgICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTcwMyw4ICs3MDUsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfc3NpemVfdCBsZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjFkMGMyYTFlNTY1NTEzNCBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCithdWRpb29wX2ZpbmRtYXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDFmZTc5NmZhZDI1NzNiYiBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCiB7CiAgICAgY29uc3Qgc2hvcnQgKmNwMTsKICAgICBQeV9zc2l6ZV90IGxlbjE7CkBAIC04OTcsOCArOTAwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbXVsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBkb3VibGUgZmFjdG9yKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2OTdlYmJkNTg1MmQzOGYgaW5wdXQ9YzcyNjY2N2JhYTE1N2QzY10qLworYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgIGRvdWJsZSBmYWN0b3IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWM3YzMxMTkxYWM4NmIxMCBpbnB1dD1jNzI2NjY3YmFhMTU3ZDNjXSovCiB7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC05MzgsOCArOTQyLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9tb25vX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM2ZTc3MTA1MjE2NjFkZCBpbnB1dD1jNGVjOTQ5YjNmNGRkZGZhXSovCithdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU1M2Y1NDdjNWUyOWUzYjYgaW5wdXQ9YzRlYzk0OWIzZjRkZGRmYV0qLwogewogICAgIHNpZ25lZCBjaGFyICpjcCwgKm5jcDsKICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKQEAgLTk4Niw4ICs5OTEsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF90b3N0ZXJlb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZmZjUwNjgxYzg3ZjRjMWMgaW5wdXQ9MjdiNjM5NWViZmRmZjM3YV0qLworYXVkaW9vcF90b3N0ZXJlb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Njk3YmI2YmE0MWU5ZGQyYyBpbnB1dD0yN2I2Mzk1ZWJmZGZmMzdhXSovCiB7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMDMzLDggKzEwMzksOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9hZGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50MSwgUHlfYnVmZmVyICpmcmFnbWVudDIsIGludCB3aWR0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mOTIxOGJmOWVhNzVjM2YxIGlucHV0PTRhOGQ0YmFlNGMxNjA1YzddKi8KK2F1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmU2YzEyZjE0M2UwYjAyNyBpbnB1dD00YThkNGJhZTRjMTYwNWM3XSovCiB7CiAgICAgc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMDkxLDggKzEwOTgsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9iaWFzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgYmlhcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZWM4MGIzZjVkNTEwYTUxIGlucHV0PTJiNWNjZTVjM2JiNDgzOGNdKi8KK2F1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgIGludCBiaWFzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFjMWY0ZGRhMjBhMDFjMjYgaW5wdXQ9MmI1Y2NlNWMzYmI0ODM4Y10qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTIxOCw4ICsxMjI2LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbGluMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IG5ld3dpZHRoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmOTQ2OGE3NDQ3MmE5M2UgaW5wdXQ9NWNlMDhjOGFhMmYyNGQ5Nl0qLworYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgaW50IG5ld3dpZHRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNiNmNhOTUwZDFkZjk4OTggaW5wdXQ9NWNlMDhjOGFhMmYyNGQ5Nl0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgKm5jcDsKICAgICBQeV9zc2l6ZV90IGksIGo7CkBAIC0xMjc1LDggKzEyODQsMTAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfcmF0ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmNoYW5uZWxzLCBpbnQgaW5yYXRlLCBpbnQgb3V0cmF0ZSwgUHlPYmplY3QgKnN0YXRlLCBpbnQgd2VpZ2h0QSwgaW50IHdlaWdodEIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTU4NWRkZGM0YjVmZjIzNiBpbnB1dD1hZmYzYWNkYzk0NDc2MTkxXSovCithdWRpb29wX3JhdGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IG5jaGFubmVscywgaW50IGlucmF0ZSwgaW50IG91dHJhdGUsIFB5T2JqZWN0ICpzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHdlaWdodEEsIGludCB3ZWlnaHRCKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5ZTE3ODdiZmE0OWI5ZDkgaW5wdXQ9YWZmM2FjZGM5NDQ3NjE5MV0qLwogewogICAgIGNoYXIgKmNwLCAqbmNwOwogICAgIFB5X3NzaXplX3QgbGVuOwpAQCAtMTYwMiw4ICsxNjEzLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfbGluMmFkcGNtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeU9iamVjdCAqc3RhdGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDY1NGMyOWQyNzMxZmFmZSBpbnB1dD0xMjkxOWQ1NDliOTBjOTBhXSovCithdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzZjA5OTZmNTkyYjVjZTUgaW5wdXQ9MTI5MTlkNTQ5YjkwYzkwYV0qLwogewogICAgIHNpZ25lZCBjaGFyICpuY3A7CiAgICAgUHlfc3NpemVfdCBpOwpAQCAtMTcyOSw4ICsxNzQxLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYWRwY20ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBQeU9iamVjdCAqc3RhdGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzcxOTY1Y2RjYzBhYTY5YiBpbnB1dD1mNTIyMTE0NGY1Y2E5ZWYwXSovCithdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzNmNmNmRjMmM4MjkxODEgaW5wdXQ9ZjUyMjExNDRmNWNhOWVmMF0qLwogewogICAgIHNpZ25lZCBjaGFyICpjcDsKICAgICBzaWduZWQgY2hhciAqbmNwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IGVhMTRkM2MuLmQ5MjBkMjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTU2LDYgKzU2LDcgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKICNpZmRlZiBVU0VfWkxJQl9DUkMzMgogI2luY2x1ZGUgInpsaWIuaCIKICNlbmRpZgpAQCAtMTg0LDEwICsxODUsOSBAQAogfTsKIAogLypbY2xpbmljIGlucHV0XQotb3V0cHV0IHByZXNldCBmaWxlCiBtb2R1bGUgYmluYXNjaWkKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTQ0YzZmODQwY2U3MDhmMGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWRlODlmYjQ2YmNhZjNmZWNdKi8KIAogLypbcHl0aG9uIGlucHV0XQogCkBAIC0xMTE4LDMzICsxMTE4LDcgQEAKIGJpbmFzY2lpX2IyYV9oZXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTc5MzE4OTIyYzJmOGZkYSBpbnB1dD05NjQyM2NmYTI5OWZmM2IxXSovCiB7Ci0gICAgY2hhciogYXJnYnVmOwotICAgIFB5X3NzaXplX3QgYXJnbGVuOwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgY2hhciogcmV0YnVmOwotICAgIFB5X3NzaXplX3QgaSwgajsKLQotICAgIGFyZ2J1ZiA9IGRhdGEtPmJ1ZjsKLSAgICBhcmdsZW4gPSBkYXRhLT5sZW47Ci0KLSAgICBhc3NlcnQoYXJnbGVuID49IDApOwotICAgIGlmIChhcmdsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgcmV0dmFsID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhcmdsZW4qMik7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJldHZhbCk7Ci0KLSAgICAvKiBtYWtlIGhleCB2ZXJzaW9uIG9mIHN0cmluZywgdGFrZW4gZnJvbSBzaGFtb2R1bGUuYyAqLwotICAgIGZvciAoaT1qPTA7IGkgPCBhcmdsZW47IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIGMgPSAoYXJnYnVmW2ldID4+IDQpICYgMHhmOwotICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IGFyZ2J1ZltpXSAmIDB4ZjsKLSAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXhfYnl0ZXMoKGNvbnN0IGNoYXIgKilkYXRhLT5idWYsIGRhdGEtPmxlbik7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTExNTksNyArMTEzMyw3IEBACiBiaW5hc2NpaV9oZXhsaWZ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYwOTg0NDAwOTFmYjYxZGMgaW5wdXQ9MmUzYWZhZTdmMDgzZjA2MV0qLwogewotICAgIHJldHVybiBiaW5hc2NpaV9iMmFfaGV4X2ltcGwobW9kdWxlLCBkYXRhKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleF9ieXRlcygoY29uc3QgY2hhciAqKWRhdGEtPmJ1ZiwgZGF0YS0+bGVuKTsKIH0KIAogc3RhdGljIGludApAQCAtMTM4Miw4ICsxMzU2LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9xcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywgaW50IGlzdGV4dCwgaW50IGhlYWRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjI5OTFiYTY0MGZmZjNlIGlucHV0PTdmMmE5YWFhMDA4ZTkyYjJdKi8KK2JpbmFzY2lpX2IyYV9xcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywKKyAgICAgICAgICAgICAgICAgICAgIGludCBpc3RleHQsIGludCBoZWFkZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg3Y2E5Y2NiOTRlMmE5ZiBpbnB1dD03ZjJhOWFhYTAwOGU5MmIyXSovCiB7CiAgICAgUHlfc3NpemVfdCBpbiwgb3V0OwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGFidWYsICpvZGF0YTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaXNvMjAyMi5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKaW5kZXggNWM0MDFhYS4uMWNlNDIxOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMKQEAgLTI5Miw3ICsyOTIsNyBAQAogICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmluYnVmLCBQeV9zc2l6ZV90ICppbmxlZnQpCiB7CiAgICAgdW5zaWduZWQgY2hhciBjaGFyc2V0LCBkZXNpZ25hdGlvbjsKLSAgICBQeV9zc2l6ZV90IGksIGVzY2xlbjsKKyAgICBQeV9zc2l6ZV90IGksIGVzY2xlbiA9IDA7CiAKICAgICBmb3IgKGkgPSAxO2kgPCBNQVhfRVNDU0VRTEVOO2krKykgewogICAgICAgICBpZiAoaSA+PSAqaW5sZWZ0KQpAQCAtMzA3LDEwICszMDcsOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGkgPj0gTUFYX0VTQ1NFUUxFTikKLSAgICAgICAgcmV0dXJuIDE7IC8qIHVudGVybWluYXRlZCBlc2NhcGUgc2VxdWVuY2UgKi8KLQogICAgIHN3aXRjaCAoZXNjbGVuKSB7CisgICAgY2FzZSAwOgorICAgICAgICByZXR1cm4gMTsgLyogdW50ZXJtaW5hdGVkIGVzY2FwZSBzZXF1ZW5jZSAqLwogICAgIGNhc2UgMzoKICAgICAgICAgaWYgKElOQllURTIgPT0gJyQnKSB7CiAgICAgICAgICAgICBjaGFyc2V0ID0gSU5CWVRFMyB8IENIQVJTRVRfREJDUzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKaW5kZXggZDE1Y2NmYi4uMjM2NDJkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvY2prY29kZWNzLmgKQEAgLTM2Miw3ICszNjIsNyBAQAogICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgbyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCAoY2hhciopc3ltYm9sKTsKKyAgICBvID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsIHN5bWJvbCk7CiAgICAgaWYgKG8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgZWxzZSBpZiAoIVB5Q2Fwc3VsZV9Jc1ZhbGlkKG8sIFB5TXVsdGlieXRlQ29kZWNfQ0FQU1VMRV9OQU1FKSkgewpAQCAtNDAxLDcgKzQwMSw3IEBACiAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgUHlPYmplY3QqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlNT0RJTklUX0ZVTkMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgUHlJbml0X19jb2RlY3NfIyNsb2Modm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFB5T2JqZWN0ICptID0gUHlNb2R1bGVfQ3JlYXRlKCZfX21vZHVsZSk7ICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTQ3ZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaApAQCAtMCwwICsxLDMyMCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19fLAorImVuY29kZSgkc2VsZiwgLywgaW5wdXQsIGVycm9ycz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIGVuY29kZWQgc3RyaW5nIHZlcnNpb24gb2YgYGlucHV0XCcuXG4iCisiXG4iCisiXCdlcnJvcnNcJyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpc1xuIgorIlwnc3RyaWN0XCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gT3RoZXIgcG9zc2libGVcbiIKKyJ2YWx1ZXMgYXJlIFwnaWdub3JlXCcsIFwncmVwbGFjZVwnIGFuZCBcJ3htbGNoYXJyZWZyZXBsYWNlXCcgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZVxuIgorInJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFVuaWNvZGVFbmNvZGVFcnJvcnMuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImVycm9ycyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppbnB1dDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6OmVuY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChzZWxmLCBpbnB1dCwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBpbnB1dCwgZXJyb3JzPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGVzIFwnaW5wdXRcJy5cbiIKKyJcbiIKKyJcJ2Vycm9yc1wnIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzXG4iCisiXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZVxuIgorInZhbHVlcyBhcmUgXCdpZ25vcmVcJyBhbmQgXCdyZXBsYWNlXCcgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGhcbiIKKyJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLlwiIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlX2ltcGwoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZShNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgaW5wdXQgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfHo6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKHNlbGYsICZpbnB1dCwgZXJyb3JzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBpbnB1dCAqLworICAgIGlmIChpbnB1dC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX19kb2NfXywKKyJlbmNvZGUoJHNlbGYsIC8sIGlucHV0LCBmaW5hbD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlucHV0OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZW5jb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxFTkNPREVSX1JFU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXNldCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfX2RvY19fLAorImRlY29kZSgkc2VsZiwgLywgaW5wdXQsIGZpbmFsPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpOmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBpbnB1dCAqLworICAgIGlmIChpbnB1dC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaW5wdXQpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFSU5DUkVNRU5UQUxERUNPREVSX1JFU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXNldCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplb2JqPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWQsIE1FVEhfVkFSQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZW9iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2l6ZW9iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnNpemVvYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoc2VsZiwgc2l6ZW9iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfX2RvY19fLAorInJlYWRsaW5lKCRzZWxmLCBzaXplb2JqPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRExJTkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZV9pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZW9iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpemVvYmogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAorICAgICAgICAwLCAxLAorICAgICAgICAmc2l6ZW9iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZW9iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX19kb2NfXywKKyJyZWFkbGluZXMoJHNlbGYsIHNpemVoaW50b2JqPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1SRUFERVJfUkVBRExJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkbGluZXMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXMsIE1FVEhfVkFSQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmopOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXMoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmogPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJnNpemVoaW50b2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVzX2ltcGwoc2VsZiwgc2l6ZWhpbnRvYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3Jlc2V0X19kb2NfXywKKyJyZXNldCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRVNFVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVzZXQiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldCwgTUVUSF9OT0FSR1MsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVzZXRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBzdHJvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVTVFJFQU1XUklURVJfV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGUsIE1FVEhfTywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl93cml0ZWxpbmVzX19kb2NfXywKKyJ3cml0ZWxpbmVzKCRzZWxmLCBsaW5lcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9XUklURUxJTkVTX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZWxpbmVzIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVsaW5lcywgTUVUSF9PLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlbGluZXNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfX2RvY19fLAorInJlc2V0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1JFU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXNldCIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0LCBNRVRIX05PQVJHUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9pbXBsKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3Jlc2V0KE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVdyaXRlcl9yZXNldF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjX19kb2NfXywKKyJfX2NyZWF0ZV9jb2RlYygkbW9kdWxlLCBhcmcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19fX0NSRUFURV9DT0RFQ19NRVRIT0RERUYgICAgXAorICAgIHsiX19jcmVhdGVfY29kZWMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVlYmIyMWUxOGMzMDQzZDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKaW5kZXggZTBkOWI2Ny4uZTQ1NDdmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC04LDYgKzgsMTMgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJtdWx0aWJ5dGVjb2RlYy5oIgorI2luY2x1ZGUgImNsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfbXVsdGlieXRlY29kZWMKK2NsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVDb2RlYyAiTXVsdGlieXRlQ29kZWNPYmplY3QgKiIgIiZNdWx0aWJ5dGVDb2RlY19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmFkNjg5NTQ2Y2JiNTQ1MF0qLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3QgICAgICAgICAgICAqaW5vYmo7CkBAIC0yMiwyNyArMjksNyBAQAogICAgIF9QeVVuaWNvZGVXcml0ZXIgICAgd3JpdGVyOwogfSBNdWx0aWJ5dGVEZWNvZGVCdWZmZXI7CiAKLVB5RG9jX1NUUlZBUihNdWx0aWJ5dGVDb2RlY19FbmNvZGVfX2RvY19fLAotIkkuZW5jb2RlKHVuaWNvZGVbLCBlcnJvcnNdKSAtPiAoc3RyaW5nLCBsZW5ndGggY29uc3VtZWQpXG5cCi1cblwKLVJldHVybiBhbiBlbmNvZGVkIHN0cmluZyB2ZXJzaW9uIG9mIGB1bmljb2RlJy4gZXJyb3JzIG1heSBiZSBnaXZlbiB0b1xuXAotc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXRcblwKLWVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZVxuXAotJ2lnbm9yZScsICdyZXBsYWNlJyBhbmQgJ3htbGNoYXJyZWZyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lXG5cCi1yZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwotCi1QeURvY19TVFJWQVIoTXVsdGlieXRlQ29kZWNfRGVjb2RlX19kb2NfXywKLSJJLmRlY29kZShzdHJpbmdbLCBlcnJvcnNdKSAtPiAodW5pY29kZW9iamVjdCwgbGVuZ3RoIGNvbnN1bWVkKVxuXAotXG5cCi1EZWNvZGVzIGBzdHJpbmcnIHVzaW5nIEksIGFuIE11bHRpYnl0ZUNvZGVjIGluc3RhbmNlLiBlcnJvcnMgbWF5IGJlIGdpdmVuXG5cCi10byBzZXQgYSBkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmdcblwKLXRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXNcblwKLWFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG5cCi1jb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBpcyBhYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOwotCi1zdGF0aWMgY2hhciAqY29kZWNrd2FyZ2xpc3RbXSA9IHsiaW5wdXQiLCAiZXJyb3JzIiwgTlVMTH07CiBzdGF0aWMgY2hhciAqaW5jbmV3a3dhcmdsaXN0W10gPSB7ImVycm9ycyIsIE5VTEx9Owotc3RhdGljIGNoYXIgKmluY3JlbWVudGFsa3dhcmdsaXN0W10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CiBzdGF0aWMgY2hhciAqc3RyZWFta3dhcmdsaXN0W10gPSB7InN0cmVhbSIsICJlcnJvcnMiLCBOVUxMfTsKIAogc3RhdGljIFB5T2JqZWN0ICptdWx0aWJ5dGVjb2RlY19lbmNvZGUoTXVsdGlieXRlQ29kZWMgKiwKQEAgLTU1MywyNiArNTQwLDM3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVDb2RlYy5lbmNvZGUKKworICBpbnB1dDogb2JqZWN0CisgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorCitSZXR1cm4gYW4gZW5jb2RlZCBzdHJpbmcgdmVyc2lvbiBvZiBgaW5wdXQnLgorCisnZXJyb3JzJyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gRGVmYXVsdCBpcworJ3N0cmljdCcgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIFVuaWNvZGVFbmNvZGVFcnJvci4gT3RoZXIgcG9zc2libGUKK3ZhbHVlcyBhcmUgJ2lnbm9yZScsICdyZXBsYWNlJyBhbmQgJ3htbGNoYXJyZWZyZXBsYWNlJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lCityZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotTXVsdGlieXRlQ29kZWNfRW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2IyNjY1MjA0NWJhNTZhOSBpbnB1dD0wNWY2Y2VkM2M4ZGQwNTgyXSovCiB7CiAgICAgTXVsdGlieXRlQ29kZWNfU3RhdGUgc3RhdGU7Ci0gICAgUHlPYmplY3QgKmVycm9yY2IsICpyLCAqYXJnLCAqdWN2dDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcmNiLCAqciwgKnVjdnQ7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6OmVuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNrd2FyZ2xpc3QsICZhcmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGlucHV0KSkKICAgICAgICAgdWN2dCA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIGFyZyA9IHVjdnQgPSBQeU9iamVjdF9TdHIoYXJnKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQorICAgICAgICBpbnB1dCA9IHVjdnQgPSBQeU9iamVjdF9TdHIoaW5wdXQpOworICAgICAgICBpZiAoaW5wdXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhpbnB1dCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgImNvdWxkbid0IGNvbnZlcnQgdGhlIG9iamVjdCB0byB1bmljb2RlLiIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVjdnQpOwpAQCAtNTgwLDExICs1NzgsMTEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA8IDApIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA8IDApIHsKICAgICAgICAgUHlfWERFQ1JFRih1Y3Z0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhcmcpOworICAgIGRhdGFsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAKICAgICBlcnJvcmNiID0gaW50ZXJuYWxfZXJyb3JfY2FsbGJhY2soZXJyb3JzKTsKICAgICBpZiAoZXJyb3JjYiA9PSBOVUxMKSB7CkBAIC01OTYsNyArNTk0LDcgQEAKICAgICAgICAgc2VsZi0+Y29kZWMtPmVuY2luaXQoJnN0YXRlLCBzZWxmLT5jb2RlYy0+Y29uZmlnKSAhPSAwKQogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICByID0gbXVsdGlieXRlY29kZWNfZW5jb2RlKHNlbGYtPmNvZGVjLCAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgTlVMTCwgZXJyb3JjYiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXQsIE5VTEwsIGVycm9yY2IsCiAgICAgICAgICAgICAgICAgICAgIE1CRU5DX0ZMVVNIIHwgTUJFTkNfUkVTRVQpOwogICAgIGlmIChyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwpAQCAtNjExLDMxICs2MDksNDEgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUNvZGVjLmRlY29kZQorCisgIGlucHV0OiBQeV9idWZmZXIKKyAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisKK0RlY29kZXMgJ2lucHV0Jy4KKworJ2Vycm9ycycgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuIERlZmF1bHQgaXMKKydzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlCit2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZScgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGgKK2NvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzIGFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotTXVsdGlieXRlQ29kZWNfRGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9pbXBsKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmNDE5ZjY1YmFkNmNjNzcgaW5wdXQ9YTdkNDVmODdmNzVlNWUwMl0qLwogewogICAgIE11bHRpYnl0ZUNvZGVjX1N0YXRlIHN0YXRlOwogICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciBidWY7CiAgICAgUHlPYmplY3QgKmVycm9yY2IsICpyZXM7Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIGNvbnN0IGNoYXIgKmRhdGEsICplcnJvcnMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBkYXRhbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8ejpkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVja3dhcmdsaXN0LCAmcGRhdGEsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIGRhdGFsZW4gPSBwZGF0YS5sZW47CisgICAgZGF0YSA9IGlucHV0LT5idWY7CisgICAgZGF0YWxlbiA9IGlucHV0LT5sZW47CiAKICAgICBlcnJvcmNiID0gaW50ZXJuYWxfZXJyb3JfY2FsbGJhY2soZXJyb3JzKTsKICAgICBpZiAoZXJyb3JjYiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGRhdGFsZW4gPT0gMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgICAgIEVSUk9SX0RFQ1JFRihlcnJvcmNiKTsKICAgICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoUHlVbmljb2RlX05ldygwLCAwKSwgMCk7CiAgICAgfQpAQCAtNjY4LDEzICs2NzYsMTEgQEAKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3JleGl0OwogCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CiAgICAgRVJST1JfREVDUkVGKGVycm9yY2IpOwogICAgIHJldHVybiBtYWtlX3R1cGxlKHJlcywgZGF0YWxlbik7CiAKIGVycm9yZXhpdDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgRVJST1JfREVDUkVGKGVycm9yY2IpOwogICAgIFB5X1hERUNSRUYoYnVmLmV4Y29iaik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZidWYud3JpdGVyKTsKQEAgLTY4MywxMyArNjg5LDkgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtdWx0aWJ5dGVjb2RlY19tZXRob2RzW10gPSB7Ci0gICAgeyJlbmNvZGUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pTXVsdGlieXRlQ29kZWNfRW5jb2RlLAotICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICBNdWx0aWJ5dGVDb2RlY19FbmNvZGVfX2RvY19ffSwKLSAgICB7ImRlY29kZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilNdWx0aWJ5dGVDb2RlY19EZWNvZGUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgIE11bHRpYnl0ZUNvZGVjX0RlY29kZV9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUNPREVDX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFQ09ERUNfREVDT0RFX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSwKIH07CiAKIHN0YXRpYyB2b2lkCkBAIC04NzMsMjYgKzg3NSwzNCBAQAogfQogCiAKLS8qKgotICogTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyIG9iamVjdAotICovCisvKltjbGluaWMgaW5wdXRdCisgY2xhc3MgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2RlciAiTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICoiICImTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zYmU4MjkwOWNkMDg5MjRkXSovCisKKy8qW2NsaW5pYyBpbnB1dF0KK19tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXIuZW5jb2RlCisKKyAgICBpbnB1dDogb2JqZWN0CisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmllbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMjMzNjFiNmM1MDVlMmMxIGlucHV0PWEzNDVjNjg4ZmE2NjRmOTJdKi8KIHsKLSAgICBQeU9iamVjdCAqZGF0YTsKLSAgICBpbnQgZmluYWwgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xpOmVuY29kZSIsCi0gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsa3dhcmdsaXN0LCAmZGF0YSwgJmZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gZW5jb2Rlcl9lbmNvZGVfc3RhdGVmdWwoU1RBVEVGVUxfRUNUWChzZWxmKSwgZGF0YSwgZmluYWwpOworICAgIHJldHVybiBlbmNvZGVyX2VuY29kZV9zdGF0ZWZ1bChTVEFURUZVTF9FQ1RYKHNlbGYpLCBpbnB1dCwgZmluYWwpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmllbmNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjQxMjVkOGY1MzdhMjUzZiBpbnB1dD05MzBmMDY3NjA3MDdiNmVhXSovCiB7CiAgICAgLyogTG9uZ2VzdCBvdXRwdXQ6IDQgYnl0ZXMgKGInXHgwRlx4MUYoQicpIHdpdGggSVNPIDIwMjIgKi8KICAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls0XSwgKm91dGJ1ZjsKQEAgLTkwOSwxMSArOTE5LDkgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYmllbmNvZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImVuY29kZSIsICAgICAgICAgIChQeUNGdW5jdGlvbiltYmllbmNvZGVyX2VuY29kZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJpZW5jb2Rlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9FTkNPREVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMRU5DT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAyNCwyNiArMTAzMiwzMSBAQAogfTsKIAogCi0vKioKLSAqIE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2RlciBvYmplY3QKLSAqLworLypbY2xpbmljIGlucHV0XQorIGNsYXNzIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXIgIk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqIiAiJk11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjYwMDNmYWFmMmNlYTY5Ml0qLworCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLmRlY29kZQorCisgICAgaW5wdXQ6IFB5X2J1ZmZlcgorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbWJpZGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI5YjkwOTBlOGE5Y2UyYmEgaW5wdXQ9NTc2NjMxYzYxOTA2ZDM5ZF0qLwogewogICAgIE11bHRpYnl0ZURlY29kZUJ1ZmZlciBidWY7CiAgICAgY2hhciAqZGF0YSwgKndkYXRhID0gTlVMTDsKLSAgICBQeV9idWZmZXIgcGRhdGE7CiAgICAgUHlfc3NpemVfdCB3c2l6ZSwgc2l6ZSwgb3JpZ3BlbmRpbmc7Ci0gICAgaW50IGZpbmFsID0gMDsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aTpkZWNvZGUiLAotICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbGt3YXJnbGlzdCwgJnBkYXRhLCAmZmluYWwpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBkYXRhID0gcGRhdGEuYnVmOwotICAgIHNpemUgPSBwZGF0YS5sZW47CisgICAgZGF0YSA9IGlucHV0LT5idWY7CisgICAgc2l6ZSA9IGlucHV0LT5sZW47CiAKICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJmJ1Zi53cml0ZXIpOwogICAgIGJ1Zi5leGNvYmogPSBOVUxMOwpAQCAtMTA5NCwxNCArMTEwNywxMiBAQAogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7CiAgICAgaWYgKHdkYXRhICE9IGRhdGEpCiAgICAgICAgIFB5TWVtX0RlbCh3ZGF0YSk7CiAgICAgUHlfWERFQ1JFRihidWYuZXhjb2JqKTsKICAgICByZXR1cm4gcmVzOwogCiBlcnJvcmV4aXQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgIGlmICh3ZGF0YSAhPSBOVUxMICYmIHdkYXRhICE9IGRhdGEpCiAgICAgICAgIFB5TWVtX0RlbCh3ZGF0YSk7CiAgICAgUHlfWERFQ1JFRihidWYuZXhjb2JqKTsKQEAgLTExMDksOCArMTEyMCwxMyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyLnJlc2V0CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYmlkZWNvZGVyX3Jlc2V0KE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGE0MjNiMTc4MmMyM2VkMSBpbnB1dD0zYjYzYjNiZTg1YjJmYjQ1XSovCiB7CiAgICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNyZXNldCAhPSBOVUxMICYmCiAgICAgICAgIHNlbGYtPmNvZGVjLT5kZWNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCkBAIC0xMTIxLDExICsxMTM3LDkgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYmlkZWNvZGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImRlY29kZSIsICAgICAgICAgIChQeUNGdW5jdGlvbiltYmlkZWNvZGVyX2RlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJpZGVjb2Rlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIzNiw5ICsxMjUwLDEwIEBACiB9OwogCiAKLS8qKgotICogTXVsdGlieXRlU3RyZWFtUmVhZGVyIG9iamVjdAotICovCisvKltjbGluaWMgaW5wdXRdCisgY2xhc3MgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlciAiTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICoiICJNdWx0aWJ5dGVTdHJlYW1SZWFkZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQzMjM2MzRiNzQ5NzZmMDldKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG1ic3RyZWFtcmVhZGVyX2lyZWFkKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZiwKQEAgLTEyNjAsMTAgKzEyNzUsMTAgQEAKIAogICAgICAgICBpZiAoc2l6ZWhpbnQgPCAwKQogICAgICAgICAgICAgY3JlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopbWV0aG9kLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QsIE5VTEwpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5zdHJlYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKiltZXRob2QsICJpIiwgc2l6ZWhpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgImkiLCBzaXplaGludCk7CiAgICAgICAgIGlmIChjcmVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yZXhpdDsKIApAQCAtMTM0NSwxNiArMTM2MCwyMSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlci5yZWFkCisKKyAgICBzaXplb2JqOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVhZChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU2MjFlYjc1MzU1ZDViOCBpbnB1dD0wMTViMGQzZmYyZmNhNDg1XSovCiB7Ci0gICAgUHlPYmplY3QgKnNpemVvYmogPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLCAwLCAxLCAmc2l6ZW9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemVvYmogPT0gUHlfTm9uZSB8fCBzaXplb2JqID09IE5VTEwpCisgICAgaWYgKHNpemVvYmogPT0gUHlfTm9uZSkKICAgICAgICAgc2l6ZSA9IC0xOwogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhzaXplb2JqKSkKICAgICAgICAgc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3Qoc2l6ZW9iaik7CkBAIC0xMzY5LDE2ICsxMzg5LDIxIEBACiAgICAgcmV0dXJuIG1ic3RyZWFtcmVhZGVyX2lyZWFkKHNlbGYsICJyZWFkIiwgc2l6ZSk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KKyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtUmVhZGVyLnJlYWRsaW5lCisKKyAgICBzaXplb2JqOiBvYmplY3QgPSBOb25lCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVhZGxpbmUoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1SZWFkZXJfcmVhZGxpbmVfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNpemVvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGZiZmFhZTFlZDQ1N2ExMSBpbnB1dD00MWNjYzY0ZjliYjBjZWMzXSovCiB7Ci0gICAgUHlPYmplY3QgKnNpemVvYmogPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwgMCwgMSwgJnNpemVvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzaXplb2JqID09IFB5X05vbmUgfHwgc2l6ZW9iaiA9PSBOVUxMKQorICAgIGlmIChzaXplb2JqID09IFB5X05vbmUpCiAgICAgICAgIHNpemUgPSAtMTsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc2l6ZW9iaikpCiAgICAgICAgIHNpemUgPSBQeUxvbmdfQXNTc2l6ZV90KHNpemVvYmopOwpAQCAtMTM5MywxNiArMTQxOCwyMiBAQAogICAgIHJldHVybiBtYnN0cmVhbXJlYWRlcl9pcmVhZChzZWxmLCAicmVhZGxpbmUiLCBzaXplKTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1SZWFkZXIucmVhZGxpbmVzCisKKyAgICBzaXplaGludG9iajogb2JqZWN0ID0gTm9uZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtcmVhZGVyX3JlYWRsaW5lcyhNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkbGluZXNfaW1wbChNdWx0aWJ5dGVTdHJlYW1SZWFkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzaXplaGludG9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2M0MzEwNzY4ZWQyYWQ0IGlucHV0PTU0OTMyZjVkNGQ4OGU4ODBdKi8KIHsKLSAgICBQeU9iamVjdCAqc2l6ZWhpbnRvYmogPSBOVUxMLCAqciwgKnNyOworICAgIFB5T2JqZWN0ICpyLCAqc3I7CiAgICAgUHlfc3NpemVfdCBzaXplaGludDsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsIDAsIDEsICZzaXplaGludG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNpemVoaW50b2JqID09IFB5X05vbmUgfHwgc2l6ZWhpbnRvYmogPT0gTlVMTCkKKyAgICBpZiAoc2l6ZWhpbnRvYmogPT0gUHlfTm9uZSkKICAgICAgICAgc2l6ZWhpbnQgPSAtMTsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soc2l6ZWhpbnRvYmopKQogICAgICAgICBzaXplaGludCA9IFB5TG9uZ19Bc1NzaXplX3Qoc2l6ZWhpbnRvYmopOwpAQCAtMTQyMyw4ICsxNDU0LDEzIEBACiAgICAgcmV0dXJuIHNyOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVJlYWRlci5yZXNldAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW1yZWFkZXJfcmVzZXQoTXVsdGlieXRlU3RyZWFtUmVhZGVyT2JqZWN0ICpzZWxmKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZXNldF9pbXBsKE11bHRpYnl0ZVN0cmVhbVJlYWRlck9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzg0OTAzNzBhNjgwYWJjIGlucHV0PTVkNDE0MGRiODRiNWUxZTJdKi8KIHsKICAgICBpZiAoc2VsZi0+Y29kZWMtPmRlY3Jlc2V0ICE9IE5VTEwgJiYKICAgICAgICAgc2VsZi0+Y29kZWMtPmRlY3Jlc2V0KCZzZWxmLT5zdGF0ZSwgc2VsZi0+Y29kZWMtPmNvbmZpZykgIT0gMCkKQEAgLTE0MzUsMTQgKzE0NzEsMTAgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYnN0cmVhbXJlYWRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW1yZWFkZXJfcmVhZCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7InJlYWRsaW5lIiwgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXJlYWRlcl9yZWFkbGluZSwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7InJlYWRsaW5lcyIsICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXJlYWRlcl9yZWFkbGluZXMsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCi0gICAgeyJyZXNldCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW1yZWFkZXJfcmVzZXQsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVJFQURFUl9SRUFETElORV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFQURMSU5FU19NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNUkVBREVSX1JFU0VUX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCiB9OwogCkBAIC0xNTY1LDkgKzE1OTcsMTAgQEAKIH07CiAKIAotLyoqCi0gKiBNdWx0aWJ5dGVTdHJlYW1Xcml0ZXIgb2JqZWN0Ci0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KKyBjbGFzcyBfbXVsdGlieXRlY29kZWMuTXVsdGlieXRlU3RyZWFtV3JpdGVyICJNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKiIgIiZNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWNkZTIyNzgwYTIxNWQ2YWNdKi8KIAogc3RhdGljIGludAogbWJzdHJlYW13cml0ZXJfaXdyaXRlKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwKQEAgLTE1ODgsOCArMTYyMSwxNyBAQAogICAgIHJldHVybiAwOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlci53cml0ZQorCisgICAgc3Ryb2JqOiBvYmplY3QKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tYnN0cmVhbXdyaXRlcl93cml0ZShNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJvYmopCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtV3JpdGVyX3dyaXRlKE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMTNhZTg0MWM4OTUyNTFlIGlucHV0PTU1MWRjNGMwMThjMTBhMmJdKi8KIHsKICAgICBpZiAobWJzdHJlYW13cml0ZXJfaXdyaXRlKHNlbGYsIHN0cm9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTU5Nyw4ICsxNjM5LDE3IEBACiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisvKltjbGluaWMgaW5wdXRdCisgX211bHRpYnl0ZWNvZGVjLk11bHRpYnl0ZVN0cmVhbVdyaXRlci53cml0ZWxpbmVzCisKKyAgICBsaW5lczogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotbWJzdHJlYW13cml0ZXJfd3JpdGVsaW5lcyhNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpsaW5lcykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfd3JpdGVsaW5lcyhNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxpbmVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU1YzQyODVhYzhlN2Q1MjIgaW5wdXQ9NTc3OTdmZTcwMDhkNGU5Nl0qLwogewogICAgIFB5T2JqZWN0ICpzdHJvYmo7CiAgICAgaW50IGksIHI7CkBAIC0xNjI0LDggKzE2NzUsMTMgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorIF9tdWx0aWJ5dGVjb2RlYy5NdWx0aWJ5dGVTdHJlYW1Xcml0ZXIucmVzZXQKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1ic3RyZWFtd3JpdGVyX3Jlc2V0KE11bHRpYnl0ZVN0cmVhbVdyaXRlck9iamVjdCAqc2VsZikKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVTdHJlYW1Xcml0ZXJfcmVzZXRfaW1wbChNdWx0aWJ5dGVTdHJlYW1Xcml0ZXJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGY1NGE0ZDliMDNkYjVmZiBpbnB1dD1iNTZkYmNiYWYzNWNjMTBjXSovCiB7CiAgICAgUHlPYmplY3QgKnB3cnQ7CiAKQEAgLTE3MjcsMTMgKzE3ODMsMTAgQEAKIH0KIAogc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBtYnN0cmVhbXdyaXRlcl9tZXRob2RzW10gPSB7Ci0gICAgeyJ3cml0ZSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW13cml0ZXJfd3JpdGUsCi0gICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCi0gICAgeyJ3cml0ZWxpbmVzIiwgICAgICAoUHlDRnVuY3Rpb24pbWJzdHJlYW13cml0ZXJfd3JpdGVsaW5lcywKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9PLCBOVUxMfSwKLSAgICB7InJlc2V0IiwgICAgICAgICAgIChQeUNGdW5jdGlvbiltYnN0cmVhbXdyaXRlcl9yZXNldCwKLSAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9XUklURV9NRVRIT0RERUYKKyAgICBfTVVMVElCWVRFQ09ERUNfTVVMVElCWVRFU1RSRUFNV1JJVEVSX1dSSVRFTElORVNfTUVUSE9EREVGCisgICAgX01VTFRJQllURUNPREVDX01VTFRJQllURVNUUkVBTVdSSVRFUl9SRVNFVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0sCiB9OwogCiBzdGF0aWMgUHlNZW1iZXJEZWYgbWJzdHJlYW13cml0ZXJfbWVtYmVyc1tdID0gewpAQCAtMTc4NywxMiArMTg0MCwxNiBAQAogfTsKIAogCi0vKioKLSAqIEV4cG9zZWQgZmFjdG9yeSBmdW5jdGlvbgotICovCisvKltjbGluaWMgaW5wdXRdCitfbXVsdGlieXRlY29kZWMuX19jcmVhdGVfY29kZWMKKworICAgIGFyZzogb2JqZWN0CisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotX19jcmVhdGVfY29kZWMoUHlPYmplY3QgKmlnbm9yZSwgUHlPYmplY3QgKmFyZykKK19tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZiZTc0ZjY1MTA2NDAxNjMgaW5wdXQ9Njg0MGIyYTZiMTgzZmNmYV0qLwogewogICAgIE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmOwogICAgIE11bHRpYnl0ZUNvZGVjICpjb2RlYzsKQEAgLTE4MTUsNyArMTg3Miw3IEBACiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgX19tZXRob2RzW10gPSB7Ci0gICAgeyJfX2NyZWF0ZV9jb2RlYyIsIChQeUNGdW5jdGlvbilfX2NyZWF0ZV9jb2RlYywgTUVUSF9PfSwKKyAgICBfTVVMVElCWVRFQ09ERUNfX19DUkVBVEVfQ09ERUNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9LAogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAppbmRleCA4YTIwMWEwLi4zZWQ4MzAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaApAQCAtMTQsMjAgKzE0LDE4IEBACiAiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiIpOwogCiAjZGVmaW5lIF9CWjJfQloyQ09NUFJFU1NPUl9DT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX08sIF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzcyhCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK19iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzcyhCWjJDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kjpjb21wcmVzcyIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC04NCw4ICs4Miw3IEBACiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJDb21wcmVzc29yX1R5cGUpICYmCiAgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyQ29tcHJlc3NvciIsIGt3YXJncykpCiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInxpOkJaMkNvbXByZXNzb3IiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsCiAgICAgICAgICZjb21wcmVzc2xldmVsKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyQ29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChCWjJDb21wcmVzc29yICopc2VsZiwgY29tcHJlc3NsZXZlbCk7CkBAIC05NSwzNCArOTIsNDMgQEAKIH0KIAogUHlEb2NfU1RSVkFSKF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIC8pXG4iCisiZGVjb21wcmVzcygkc2VsZiwgLywgZGF0YSwgbWF4X2xlbmd0aD0tMSlcbiIKICItLVxuIgogIlxuIgotIlByb3ZpZGUgZGF0YSB0byB0aGUgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKKyJEZWNvbXByZXNzICpkYXRhKiwgcmV0dXJuaW5nIHVuY29tcHJlc3NlZCBkYXRhIGFzIGJ5dGVzLlxuIgogIlxuIgotIlJldHVybnMgYSBjaHVuayBvZiBkZWNvbXByZXNzZWQgZGF0YSBpZiBwb3NzaWJsZSwgb3IgYlwnXCcgb3RoZXJ3aXNlLlxuIgorIklmICptYXhfbGVuZ3RoKiBpcyBub25uZWdhdGl2ZSwgcmV0dXJucyBhdCBtb3N0ICptYXhfbGVuZ3RoKiBieXRlcyBvZlxuIgorImRlY29tcHJlc3NlZCBkYXRhLiBJZiB0aGlzIGxpbWl0IGlzIHJlYWNoZWQgYW5kIGZ1cnRoZXIgb3V0cHV0IGNhbiBiZVxuIgorInByb2R1Y2VkLCAqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gYGBGYWxzZWBgLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXh0XG4iCisiY2FsbCB0byAqZGVjb21wcmVzcygpKiBtYXkgcHJvdmlkZSAqZGF0YSogYXMgYlwnXCcgdG8gb2J0YWluIG1vcmUgb2YgdGhlIG91dHB1dC5cbiIKICJcbiIKLSJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkXG4iCi0icmFpc2VzIGFuIEVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtXG4iCi0iaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW4gdGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKKyJJZiBhbGwgb2YgdGhlIGlucHV0IGRhdGEgd2FzIGRlY29tcHJlc3NlZCBhbmQgcmV0dXJuZWQgKGVpdGhlciBiZWNhdXNlIHRoaXNcbiIKKyJ3YXMgbGVzcyB0aGFuICptYXhfbGVuZ3RoKiBieXRlcywgb3IgYmVjYXVzZSAqbWF4X2xlbmd0aCogd2FzIG5lZ2F0aXZlKSxcbiIKKyIqc2VsZi5uZWVkc19pbnB1dCogd2lsbCBiZSBzZXQgdG8gVHJ1ZS5cbiIKKyJcbiIKKyJBdHRlbXB0aW5nIHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIHJhaXNlcyBhblxuIgorIkVPRkVycm9yLiAgQW55IGRhdGEgZm91bmQgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluXG4iCisidGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKIAogI2RlZmluZSBfQloyX0JaMkRFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKK19iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLAorICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKKyAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KQEAgLTE1OSw0ICsxNjUsNCBAQAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIxY2E0NDA1NTE5YTA5MzEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZjI5Yjc2YjMzMTRmYzcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTRiZTExCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKQEAgLTAsMCArMSwxMzk2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2NvZGVjc19yZWdpc3Rlcl9fZG9jX18sCisicmVnaXN0ZXIoJG1vZHVsZSwgc2VhcmNoX2Z1bmN0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVnaXN0ZXIgYSBjb2RlYyBzZWFyY2ggZnVuY3Rpb24uXG4iCisiXG4iCisiU2VhcmNoIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBlbmNvZGluZyBuYW1lIGluXG4iCisiYWxsIGxvd2VyIGNhc2UgbGV0dGVycywgYW5kIGVpdGhlciByZXR1cm4gTm9uZSwgb3IgYSB0dXBsZSBvZiBmdW5jdGlvbnNcbiIKKyIoZW5jb2RlciwgZGVjb2Rlciwgc3RyZWFtX3JlYWRlciwgc3RyZWFtX3dyaXRlcikgKG9yIGEgQ29kZWNJbmZvIG9iamVjdCkuIik7CisKKyNkZWZpbmUgX0NPREVDU19SRUdJU1RFUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVnaXN0ZXIiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yZWdpc3RlciwgTUVUSF9PLCBfY29kZWNzX3JlZ2lzdGVyX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xvb2t1cF9fZG9jX18sCisibG9va3VwKCRtb2R1bGUsIGVuY29kaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTG9va3MgdXAgYSBjb2RlYyB0dXBsZSBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5IGFuZCByZXR1cm5zIGEgQ29kZWNJbmZvIG9iamVjdC4iKTsKKworI2RlZmluZSBfQ09ERUNTX0xPT0tVUF9NRVRIT0RERUYgICAgXAorICAgIHsibG9va3VwIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbG9va3VwLCBNRVRIX08sIF9jb2RlY3NfbG9va3VwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xvb2t1cF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwIiwgJmVuY29kaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbG9va3VwX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfZW5jb2RlX19kb2NfXywKKyJlbmNvZGUoJG1vZHVsZSwgLywgb2JqLCBlbmNvZGluZz1cJ3V0Zi04XCcsIGVycm9ycz1cJ3N0cmljdFwnKVxuIgorIi0tXG4iCisiXG4iCisiRW5jb2RlcyBvYmogdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLlxuIgorIlxuIgorIlRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIFwndXRmLThcJy4gIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGFcbiIKKyJkaWZmZXJlbnQgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBlbmNvZGluZ1xuIgorImVycm9ycyByYWlzZSBhIFZhbHVlRXJyb3IuICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcsIFwncmVwbGFjZVwnXG4iCisiYW5kIFwnYmFja3NsYXNocmVwbGFjZVwnIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoXG4iCisiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VuY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19kZWNvZGVfX2RvY19fLAorImRlY29kZSgkbW9kdWxlLCAvLCBvYmosIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGVzIG9iaiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiRGVmYXVsdCBlbmNvZGluZyBpcyBcJ3V0Zi04XCcuICBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhXG4iCisiZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIERlZmF1bHQgaXMgXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZW5jb2RpbmdcbiIKKyJlcnJvcnMgcmFpc2UgYSBWYWx1ZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSBcJ2lnbm9yZVwnLCBcJ3JlcGxhY2VcJ1xuIgorImFuZCBcJ2JhY2tzbGFzaHJlcGxhY2VcJyBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aFxuIgorImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CisKKyNkZWZpbmUgX0NPREVDU19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9jb2RlY3NfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19kZWNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX18sCisiX2ZvcmdldF9jb2RlYygkbW9kdWxlLCBlbmNvZGluZywgLylcbiIKKyItLVxuIgorIlxuIgorIlB1cmdlIHRoZSBuYW1lZCBjb2RlYyBmcm9tIHRoZSBpbnRlcm5hbCBjb2RlYyBsb29rdXAgY2FjaGUiKTsKKworI2RlZmluZSBfQ09ERUNTX19GT1JHRVRfQ09ERUNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9mb3JnZXRfY29kZWMiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19fZm9yZ2V0X2NvZGVjLCBNRVRIX08sIF9jb2RlY3NfX2ZvcmdldF9jb2RlY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19fZm9yZ2V0X2NvZGVjKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6X2ZvcmdldF9jb2RlYyIsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJlc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfZXNjYXBlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfZXNjYXBlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OmVzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19lc2NhcGVfZW5jb2RlX19kb2NfXywKKyJlc2NhcGVfZW5jb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImVzY2FwZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lc2NhcGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19lc2NhcGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfHo6ZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZQeUJ5dGVzX1R5cGUsICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9fZG9jX18sCisidW5pY29kZV9pbnRlcm5hbF9kZWNvZGUoJG1vZHVsZSwgb2JqLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0lOVEVSTkFMX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9pbnRlcm5hbF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfaW50ZXJuYWxfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCisgICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl83X2RlY29kZV9fZG9jX18sCisidXRmXzdfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfN19ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl83X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl83X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl83X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfN19kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzdfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzdfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfOF9kZWNvZGVfX2RvY19fLAorInV0Zl84X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzhfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfOF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfOF9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfOF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl84X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl84X2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2RlY29kZV9fZG9jX18sCisidXRmXzE2X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2xlX2RlY29kZV9fZG9jX18sCisidXRmXzE2X2xlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0xFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2xlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfbGVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2JlX2RlY29kZV9fZG9jX18sCisidXRmXzE2X2JlX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0JFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2JlX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfYmVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfYmVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9fZG9jX18sCisidXRmXzE2X2V4X2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIGZpbmFsPUZhbHNlLFxuIgorIiAgICAgICAgICAgICAgICAgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMTZfRVhfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMTZfZXhfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlciwgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2V4X2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBieXRlb3JkZXIgPSAwOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMTZfZXhfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9leF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGJ5dGVvcmRlciwgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfbGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfTEVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfbGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9sZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2xlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9sZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfYmVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfMzJfQkVfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGZfMzJfYmVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzMyX2JlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9iZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX19kb2NfXywKKyJ1dGZfMzJfZXhfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBieXRlb3JkZXI9MCwgZmluYWw9RmFsc2UsXG4iCisiICAgICAgICAgICAgICAgICAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9FWF9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9leF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyLCBpbnQgZmluYWwpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emlpOnV0Zl8zMl9leF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9fZG9jX18sCisidW5pY29kZV9lc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VOSUNPREVfRVNDQVBFX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidW5pY29kZV9lc2NhcGVfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9lc2NhcGVfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6dW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX19kb2NfXywKKyJyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1JBV19VTklDT0RFX0VTQ0FQRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19sYXRpbl8xX2RlY29kZV9fZG9jX18sCisibGF0aW5fMV9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTEFUSU5fMV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImxhdGluXzFfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbGF0aW5fMV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19sYXRpbl8xX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sYXRpbl8xX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmxhdGluXzFfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2FzY2lpX2RlY29kZV9fZG9jX18sCisiYXNjaWlfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0FTQ0lJX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiYXNjaWlfZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfYXNjaWlfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfYXNjaWlfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2FzY2lpX2RlY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfYXNjaWlfZGVjb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6YXNjaWlfZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc19jaGFybWFwX2RlY29kZV9fZG9jX18sCisiY2hhcm1hcF9kZWNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIG1hcHBpbmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19DSEFSTUFQX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jaGFybWFwX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2NoYXJtYXBfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlPYmplY3QgKm1hcHBpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2RlY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXBwaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ek86Y2hhcm1hcF9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgbWFwcGluZyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19kZWNvZGVfX2RvY19fLAorIm1iY3NfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsibWJjc19kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19tYmNzX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX21iY3NfZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX21iY3NfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTptYmNzX2RlY29kZSIsCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX18sCisiY29kZV9wYWdlX2RlY29kZSgkbW9kdWxlLCBjb2RlcGFnZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvZGVfcGFnZV9kZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGNvZGVwYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpkYXRhLCBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNvZGVwYWdlOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGZpbmFsID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAorICAgICAgICAmY29kZXBhZ2UsICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX2ltcGwobW9kdWxlLCBjb2RlcGFnZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfXywKKyJyZWFkYnVmZmVyX2VuY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19SRUFEQlVGRkVSX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGJ1ZmZlcl9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19yZWFkYnVmZmVyX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmVhZGJ1ZmZlcl9lbmNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfX2RvY19fLAorInVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlKCRtb2R1bGUsIG9iaiwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVU5JQ09ERV9JTlRFUk5BTF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9pbnRlcm5hbF9lbmNvZGUiLAorICAgICAgICAmb2JqLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfN19lbmNvZGVfX2RvY19fLAorInV0Zl83X2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl83X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzdfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfdXRmXzdfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzdfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl83X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzhfZW5jb2RlX19kb2NfXywKKyJ1dGZfOF9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VVEZfOF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl84X2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl84X2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3V0Zl84X2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfOF9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzhfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3V0Zl8xNl9lbmNvZGVfX2RvY19fLAorInV0Zl8xNl9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgYnl0ZW9yZGVyPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisgICAgaW50IGJ5dGVvcmRlciA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzE2X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMTZfbGVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0xFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2xlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2xlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX19kb2NfXywKKyJ1dGZfMTZfYmVfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfVVRGXzE2X0JFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsidXRmXzE2X2JlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfdXRmXzE2X2JlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2NvZGVjc191dGZfMzJfZW5jb2RlX19kb2NfXywKKyJ1dGZfMzJfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIGJ5dGVvcmRlcj0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBieXRlb3JkZXIgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8zMl9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIGJ5dGVvcmRlcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9fZG9jX18sCisidXRmXzMyX2xlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9MRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9sZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9fZG9jX18sCisidXRmXzMyX2JlX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX1VURl8zMl9CRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InV0Zl8zMl9iZV9lbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfdW5pY29kZV9lc2NhcGVfZW5jb2RlX19kb2NfXywKKyJ1bmljb2RlX2VzY2FwZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19VTklDT0RFX0VTQ0FQRV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InVuaWNvZGVfZXNjYXBlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19fLAorInJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19SQVdfVU5JQ09ERV9FU0NBUEVfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xhdGluXzFfZW5jb2RlX19kb2NfXywKKyJsYXRpbl8xX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQ09ERUNTX0xBVElOXzFfRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJsYXRpbl8xX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xhdGluXzFfZW5jb2RlLCBNRVRIX1ZBUkFSR1MsIF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2xhdGluXzFfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmxhdGluXzFfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfYXNjaWlfZW5jb2RlX19kb2NfXywKKyJhc2NpaV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19BU0NJSV9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzY2lpX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2FzY2lpX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX2FzY2lpX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19hc2NpaV9lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6YXNjaWlfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2NoYXJtYXBfZW5jb2RlX19kb2NfXywKKyJjaGFybWFwX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCBtYXBwaW5nPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ0hBUk1BUF9FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoYXJtYXBfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfY2hhcm1hcF9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jaGFybWFwX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfZW5jb2RlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbWFwcGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ek86Y2hhcm1hcF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgbWFwcGluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY2hhcm1hcF9idWlsZF9fZG9jX18sCisiY2hhcm1hcF9idWlsZCgkbW9kdWxlLCBtYXAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ0hBUk1BUF9CVUlMRF9NRVRIT0RERUYgICAgXAorICAgIHsiY2hhcm1hcF9idWlsZCIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NoYXJtYXBfYnVpbGQsIE1FVEhfTywgX2NvZGVjc19jaGFybWFwX2J1aWxkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NoYXJtYXBfYnVpbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbWFwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY2hhcm1hcF9idWlsZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICptYXA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Y2hhcm1hcF9idWlsZCIsICZtYXApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwobW9kdWxlLCBtYXApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19lbmNvZGVfX2RvY19fLAorIm1iY3NfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7Im1iY3NfZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfbWJjc19lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19tYmNzX2VuY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19tYmNzX2VuY29kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbWJjc19lbmNvZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bWJjc19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9fZG9jX18sCisiY29kZV9wYWdlX2VuY29kZSgkbW9kdWxlLCBjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiY29kZV9wYWdlX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfY29kZV9wYWdlX2VuY29kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY29kZV9wYWdlOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKKyAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChtb2R1bGUsIGNvZGVfcGFnZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKworUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfX2RvY19fLAorInJlZ2lzdGVyX2Vycm9yKCRtb2R1bGUsIGVycm9ycywgaGFuZGxlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZXJyb3IgaGFuZGxlciB1bmRlciB0aGUgbmFtZSBlcnJvcnMuXG4iCisiXG4iCisiaGFuZGxlciBtdXN0IGJlIGEgY2FsbGFibGUgb2JqZWN0LCB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uXG4iCisiaW5zdGFuY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlIGVuY29kaW5nL2RlY29kaW5nXG4iCisiZXJyb3IgYW5kIG11c3QgcmV0dXJuIGEgKHJlcGxhY2VtZW50LCBuZXcgcG9zaXRpb24pIHR1cGxlLiIpOworCisjZGVmaW5lIF9DT0RFQ1NfUkVHSVNURVJfRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7InJlZ2lzdGVyX2Vycm9yIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfcmVnaXN0ZXJfZXJyb3IsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX3JlZ2lzdGVyX2Vycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9yczsKKyAgICBQeU9iamVjdCAqaGFuZGxlcjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086cmVnaXN0ZXJfZXJyb3IiLAorICAgICAgICAmZXJyb3JzLCAmaGFuZGxlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwobW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfY29kZWNzX2xvb2t1cF9lcnJvcl9fZG9jX18sCisibG9va3VwX2Vycm9yKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJsb29rdXBfZXJyb3IoZXJyb3JzKSAtPiBoYW5kbGVyXG4iCisiXG4iCisiUmV0dXJuIHRoZSBlcnJvciBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGVycm9yIGhhbmRsaW5nIG5hbWUgb3IgcmFpc2UgYVxuIgorIkxvb2t1cEVycm9yLCBpZiBubyBoYW5kbGVyIGV4aXN0cyB1bmRlciB0aGlzIG5hbWUuIik7CisKKyNkZWZpbmUgX0NPREVDU19MT09LVVBfRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7Imxvb2t1cF9lcnJvciIsIChQeUNGdW5jdGlvbilfY29kZWNzX2xvb2t1cF9lcnJvciwgTUVUSF9PLCBfY29kZWNzX2xvb2t1cF9lcnJvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3NfbG9va3VwX2Vycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKG1vZHVsZSwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Yzk5NjcwNDgwMjdjMWM3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZWMzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihjcnlwdF9jcnlwdF9fZG9jX18sCisiY3J5cHQoJG1vZHVsZSwgd29yZCwgc2FsdCwgLylcbiIKKyItLVxuIgorIlxuIgorIkhhc2ggYSAqd29yZCogd2l0aCB0aGUgZ2l2ZW4gKnNhbHQqIGFuZCByZXR1cm4gdGhlIGhhc2hlZCBwYXNzd29yZC5cbiIKKyJcbiIKKyIqd29yZCogd2lsbCB1c3VhbGx5IGJlIGEgdXNlclwncyBwYXNzd29yZC4gICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTZcbiIKKyJjaGFyYWN0ZXIgc3RyaW5nLCBwb3NzaWJseSBwcmVmaXhlZCB3aXRoICRkaWdpdCQgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZClcbiIKKyJ3aWxsIGJlIHVzZWQgdG8gcGVydHVyYiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gYW5kIHByb2R1Y2UgZGlzdGluY3RcbiIKKyJyZXN1bHRzIGZvciBhIGdpdmVuICp3b3JkKi4iKTsKKworI2RlZmluZSBDUllQVF9DUllQVF9NRVRIT0RERUYgICAgXAorICAgIHsiY3J5cHQiLCAoUHlDRnVuY3Rpb24pY3J5cHRfY3J5cHQsIE1FVEhfVkFSQVJHUywgY3J5cHRfY3J5cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyeXB0X2NyeXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY29uc3QgY2hhciAqd29yZCwgY29uc3QgY2hhciAqc2FsdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjcnlwdF9jcnlwdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp3b3JkOworICAgIGNvbnN0IGNoYXIgKnNhbHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOmNyeXB0IiwKKyAgICAgICAgJndvcmQsICZzYWx0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNyeXB0X2NyeXB0X2ltcGwobW9kdWxlLCB3b3JkLCBzYWx0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIyYzI5NWM5YmNlMDE4YzQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTExNzQyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKQEAgLTAsMCArMSw3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGN1cnNlc193aW5kb3dfYWRkY2hfX2RvY19fLAorImFkZGNoKFt5LCB4LF0gY2gsIFthdHRyXSlcbiIKKyJQYWludCBjaGFyYWN0ZXIgY2ggYXQgKHksIHgpIHdpdGggYXR0cmlidXRlcyBhdHRyLlxuIgorIlxuIgorIiAgeVxuIgorIiAgICBZLWNvb3JkaW5hdGUuXG4iCisiICB4XG4iCisiICAgIFgtY29vcmRpbmF0ZS5cbiIKKyIgIGNoXG4iCisiICAgIENoYXJhY3RlciB0byBhZGQuXG4iCisiICBhdHRyXG4iCisiICAgIEF0dHJpYnV0ZXMgZm9yIHRoZSBjaGFyYWN0ZXIuXG4iCisiXG4iCisiUGFpbnQgY2hhcmFjdGVyIGNoIGF0ICh5LCB4KSB3aXRoIGF0dHJpYnV0ZXMgYXR0cixcbiIKKyJvdmVyd3JpdGluZyBhbnkgY2hhcmFjdGVyIHByZXZpb3VzbHkgcGFpbnRlZCBhdCB0aGF0IGxvY2F0aW9uLlxuIgorIkJ5IGRlZmF1bHQsIHRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gYW5kIGF0dHJpYnV0ZXMgYXJlIHRoZVxuIgorImN1cnJlbnQgc2V0dGluZ3MgZm9yIHRoZSB3aW5kb3cgb2JqZWN0LiIpOworCisjZGVmaW5lIENVUlNFU19XSU5ET1dfQUREQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZGNoIiwgKFB5Q0Z1bmN0aW9uKWN1cnNlc193aW5kb3dfYWRkY2gsIE1FVEhfVkFSQVJHUywgY3Vyc2VzX3dpbmRvd19hZGRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY3Vyc2VzX3dpbmRvd19hZGRjaF9pbXBsKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBpbnQgZ3JvdXBfbGVmdF8xLCBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwgUHlPYmplY3QgKmNoLCBpbnQgZ3JvdXBfcmlnaHRfMSwgbG9uZyBhdHRyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnNlc193aW5kb3dfYWRkY2goUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBncm91cF9sZWZ0XzEgPSAwOworICAgIGludCB5ID0gMDsKKyAgICBpbnQgeCA9IDA7CisgICAgUHlPYmplY3QgKmNoOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBsb25nIGF0dHIgPSAwOworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzphZGRjaCIsICZjaCkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPbDphZGRjaCIsICZ5LCAmeCwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CisgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY3Vyc2VzLndpbmRvdy5hZGRjaCByZXF1aXJlcyAxIHRvIDQgYXJndW1lbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGN1cnNlc193aW5kb3dfYWRkY2hfaW1wbChzZWxmLCBncm91cF9sZWZ0XzEsIHksIHgsIGNoLCBncm91cF9yaWdodF8xLCBhdHRyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MmIxZTcwOTU3N2YzZWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4YzkwMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKQEAgLTAsMCArMSwzNyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX18sCisibm93KCR0eXBlLCAvLCB0ej1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBuZXcgZGF0ZXRpbWUgb2JqZWN0IHJlcHJlc2VudGluZyBjdXJyZW50IHRpbWUgbG9jYWwgdG8gdHouXG4iCisiXG4iCisiICB0elxuIgorIiAgICBUaW1lem9uZSBvYmplY3QuXG4iCisiXG4iCisiSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLiIpOworCisjZGVmaW5lIERBVEVUSU1FX0RBVEVUSU1FX05PV19NRVRIT0RERUYgICAgXAorICAgIHsibm93IiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2RhdGV0aW1lX25vdywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp0eik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnR6ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm5vdyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnR6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKHR5cGUsIHR6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmNDVjNjcwZDZlNDk1M2EgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDc0ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKQEAgLTAsMCArMSwxNDEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0RCTV9EQk1fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2Nsb3NlLCBNRVRIX05PQVJHUywgX2RibV9kYm1fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2Nsb3NlX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2Nsb3NlKGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2RibV9kYm1fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9kYm1fZGJtX2tleXNfX2RvY19fLAorImtleXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBrZXlzIGluIHRoZSBkYXRhYmFzZS4iKTsKKworI2RlZmluZSBfREJNX0RCTV9LRVlTX01FVEhPRERFRiAgICBcCisgICAgeyJrZXlzIiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2tleXMsIE1FVEhfTk9BUkdTLCBfZGJtX2RibV9rZXlzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9rZXlzX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2tleXMoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZGJtX2RibV9rZXlzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZGJtX2RibV9nZXRfX2RvY19fLAorImdldCgkc2VsZiwga2V5LCBkZWZhdWx0PWJcJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LiIpOworCisjZGVmaW5lIF9EQk1fREJNX0dFVF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9kYm1fZGJtX2dldCwgTUVUSF9WQVJBUkdTLCBfZGJtX2RibV9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX2dldF9pbXBsKGRibW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9nZXQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpnZXQiLAorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fZ2V0X2ltcGwoc2VsZiwga2V5LCBrZXlfbGVuZ3RoLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2RibV9kYm1fc2V0ZGVmYXVsdF9fZG9jX18sCisic2V0ZGVmYXVsdCgkc2VsZiwga2V5LCBkZWZhdWx0PWJcJ1wnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB2YWx1ZSBmb3Iga2V5IGlmIHByZXNlbnQsIG90aGVyd2lzZSBkZWZhdWx0LlxuIgorIlxuIgorIklmIGtleSBpcyBub3QgaW4gdGhlIGRhdGFiYXNlLCBpdCBpcyBpbnNlcnRlZCB3aXRoIGRlZmF1bHQgYXMgdGhlIHZhbHVlLiIpOworCisjZGVmaW5lIF9EQk1fREJNX1NFVERFRkFVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGRlZmF1bHQiLCAoUHlDRnVuY3Rpb24pX2RibV9kYm1fc2V0ZGVmYXVsdCwgTUVUSF9WQVJBUkdTLCBfZGJtX2RibV9zZXRkZWZhdWx0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGJtX2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19kYm1fZGJtX3NldGRlZmF1bHQoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpzZXRkZWZhdWx0IiwKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX3NldGRlZmF1bHRfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihkYm1vcGVuX19kb2NfXywKKyJvcGVuKCRtb2R1bGUsIGZpbGVuYW1lLCBmbGFncz1cJ3JcJywgbW9kZT0wbzY2NiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRhdGFiYXNlIG9iamVjdC5cbiIKKyJcbiIKKyIgIGZpbGVuYW1lXG4iCisiICAgIFRoZSBmaWxlbmFtZSB0byBvcGVuLlxuIgorIiAgZmxhZ3NcbiIKKyIgICAgSG93IHRvIG9wZW4gdGhlIGZpbGUuICBcInJcIiBmb3IgcmVhZGluZywgXCJ3XCIgZm9yIHdyaXRpbmcsIGV0Yy5cbiIKKyIgIG1vZGVcbiIKKyIgICAgSWYgY3JlYXRpbmcgYSBuZXcgZmlsZSwgdGhlIG1vZGUgYml0cyBmb3IgdGhlIG5ldyBmaWxlXG4iCisiICAgIChlLmcuIG9zLk9fUkRXUikuIik7CisKKyNkZWZpbmUgREJNT1BFTl9NRVRIT0RERUYgICAgXAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilkYm1vcGVuLCBNRVRIX1ZBUkFSR1MsIGRibW9wZW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RibW9wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZmxhZ3MsCisgICAgICAgICAgICAgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3BlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsKKyAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKKyAgICBpbnQgbW9kZSA9IDQzODsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKKyAgICAgICAgJmZpbGVuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIGZpbGVuYW1lLCBmbGFncywgbW9kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDkyZTgxYjI4YzU1OGQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YjRjNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCkBAIC0wLDAgKzEsNjc5IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX19kb2NfXywKKyJhcHBlbmQoJHNlbGYsIHN1YmVsZW1lbnQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0FQUEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiYXBwZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJlbGVtZW50KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPITphcHBlbmQiLCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9hcHBlbmRfaW1wbChzZWxmLCBzdWJlbGVtZW50KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfX2RvY19fLAorImNsZWFyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9DTEVBUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXIsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9jbGVhcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfY2xlYXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2NsZWFyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX2NvcHlfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X18oRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19jb3B5X19faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCBtZW1vLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2RlZXBjb3B5X18sIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX1NJWkVPRl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90CitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19faW1wbChzZWxmKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19fZG9jX18sCisiX19nZXRzdGF0ZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX0dFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX18sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9fX2dldHN0YXRlX19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19nZXRzdGF0ZV9fKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZ2V0c3RhdGVfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fX19kb2NfXywKKyJfX3NldHN0YXRlX18oJHNlbGYsIHN0YXRlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NldHN0YXRlX18sIE1FVEhfTywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19zZXRzdGF0ZV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgZWxlbWVudHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0VYVEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2V4dGVuZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfRWxlbWVudF9leHRlbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfX2RvY19fLAorImZpbmQoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKyAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19fLAorImZpbmR0ZXh0KCRzZWxmLCAvLCBwYXRoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklORFRFWFRfTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbmR0ZXh0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086ZmluZHRleHQiLCBfa2V5d29yZHMsCisgICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfaW1wbChzZWxmLCBwYXRoLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9fZG9jX18sCisiZmluZGFsbCgkc2VsZiwgLywgcGF0aCwgbmFtZXNwYWNlcz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXRoOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kYWxsIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX18sCisiaXRlcmZpbmQoJHNlbGYsIC8sIHBhdGgsIG5hbWVzcGFjZXM9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGICAgIFwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X19kb2NfXywKKyJnZXQoJHNlbGYsIC8sIGtleSwgZGVmYXVsdD1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmdldCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5fX2RvY19fLAorImdldGNoaWxkcmVuKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRDSElMRFJFTl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y2hpbGRyZW4iLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW4sIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRjaGlsZHJlbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0Y2hpbGRyZW5faW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldGNoaWxkcmVuX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfXywKKyJpdGVyKCRzZWxmLCAvLCB0YWc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUl9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRhZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICp0YWcgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86aXRlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJnRhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoc2VsZiwgdGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfX2RvY19fLAorIml0ZXJ0ZXh0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSVEVYVF9NRVRIT0RERUYgICAgXAorICAgIHsiaXRlcnRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHQsIE1FVEhfTk9BUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVydGV4dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcnRleHRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJ0ZXh0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfX2RvY19fLAorImluc2VydCgkc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydCwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2luc2VydF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3ViZWxlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8hOmluc2VydCIsCisgICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19fZG9jX18sCisiaXRlbXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURU1TX01FVEhPRERFRiAgICBcCisgICAgeyJpdGVtcyIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtcywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZW1zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVtc19pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXMoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlbXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfX2RvY19fLAorImtleXMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0tFWVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImtleXMiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5cywgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXNfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9FbGVtZW50X2tleXMoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfa2V5c19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfX2RvY19fLAorIm1ha2VlbGVtZW50KCRzZWxmLCB0YWcsIGF0dHJpYiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfTUFLRUVMRU1FTlRfTUVUSE9EREVGICAgIFwKKyAgICB7Im1ha2VlbGVtZW50IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9tYWtlZWxlbWVudF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphdHRyaWIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqYXR0cmliOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibWFrZWVsZW1lbnQiLAorICAgICAgICAyLCAyLAorICAgICAgICAmdGFnLCAmYXR0cmliKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoc2VsZiwgdGFnLCBhdHRyaWIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgc3ViZWxlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlLCBNRVRIX08sIF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YmVsZW1lbnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfX2RvY19fLAorInNldCgkc2VsZiwga2V5LCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfU0VUX01FVEhPRERFRiAgICBcCisgICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1MsIF9lbGVtZW50dHJlZV9FbGVtZW50X3NldF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfRWxlbWVudF9zZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXQiLAorICAgICAgICAyLCAyLAorICAgICAgICAma2V5LCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoc2VsZiwga2V5LCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KTsKKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOlRyZWVCdWlsZGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfX19pbXBsKChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGYsIGVsZW1lbnRfZmFjdG9yeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9kYXRhX19kb2NfXywKKyJkYXRhKCRzZWxmLCBkYXRhLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfREFUQV9NRVRIT0RERUYgICAgXAorICAgIHsiZGF0YSIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YSwgTUVUSF9PLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZGF0YV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2VuZF9fZG9jX18sCisiZW5kKCRzZWxmLCB0YWcsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9FTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImVuZCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfZW5kLCBNRVRIX08sIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9lbmRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9UUkVFQlVJTERFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlLCBNRVRIX05PQVJHUywgX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2VfaW1wbChUcmVlQnVpbGRlck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfY2xvc2UoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9jbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X19kb2NfXywKKyJzdGFydCgkc2VsZiwgdGFnLCBhdHRycz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfRUxFTUVOVFRSRUVfVFJFRUJVSUxERVJfU1RBUlRfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydCwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfc3RhcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydF9pbXBsKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmF0dHJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydChUcmVlQnVpbGRlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhZzsKKyAgICBQeU9iamVjdCAqYXR0cnMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAorICAgICAgICAxLCAyLAorICAgICAgICAmdGFnLCAmYXR0cnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X2ltcGwoc2VsZiwgdGFnLCBhdHRycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworc3RhdGljIGludAorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmh0bWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRhcmdldCwgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgaW50CitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpodG1sID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywKKyAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoKFhNTFBhcnNlck9iamVjdCAqKXNlbGYsIGh0bWwsIHRhcmdldCwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChYTUxQYXJzZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9jbG9zZShYTUxQYXJzZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZF9fZG9jX18sCisiZmVlZCgkc2VsZiwgZGF0YSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9GRUVEX01FVEhPRERFRiAgICBcCisgICAgeyJmZWVkIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZmVlZCwgTUVUSF9PLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2ZlZWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3BhcnNlX3dob2xlX19kb2NfXywKKyJfcGFyc2Vfd2hvbGUoJHNlbGYsIGZpbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9FTEVNRU5UVFJFRV9YTUxQQVJTRVJfX1BBUlNFX1dIT0xFX01FVEhPRERFRiAgICBcCisgICAgeyJfcGFyc2Vfd2hvbGUiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGUsIE1FVEhfTywgX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fcGFyc2Vfd2hvbGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9fZG9jX18sCisiZG9jdHlwZSgkc2VsZiwgbmFtZSwgcHViaWQsIHN5c3RlbSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9ET0NUWVBFX01FVEhPRERFRiAgICBcCisgICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHViaWQsIFB5T2JqZWN0ICpzeXN0ZW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnB1YmlkOworICAgIFB5T2JqZWN0ICpzeXN0ZW07CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkb2N0eXBlIiwKKyAgICAgICAgMywgMywKKyAgICAgICAgJm5hbWUsICZwdWJpZCwgJnN5c3RlbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX2RvY3R5cGVfaW1wbChzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX19kb2NfXywKKyJfc2V0ZXZlbnRzKCRzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0VMRU1FTlRUUkVFX1hNTFBBUlNFUl9fU0VURVZFTlRTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2V0ZXZlbnRzIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50cywgTUVUSF9WQVJBUkdTLCBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOworICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwKKyAgICAgICAgJlB5TGlzdF9UeXBlLCAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19zZXRldmVudHNfaW1wbChzZWxmLCBldmVudHNfcXVldWUsIGV2ZW50c190b19yZXBvcnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjViOGJmN2U3ZjIxNTFjYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEwYWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaApAQCAtMCwwICsxLDI1MyBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fZ2V0X19kb2NfXywKKyJnZXQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSB2YWx1ZSBmb3Iga2V5LCBvciBkZWZhdWx0IGlmIG5vdCBwcmVzZW50LiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fR0VUX01FVEhPRERFRiAgICBcCisgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9nZXQsIE1FVEhfVkFSQVJHUywgX2dkYm1fZ2RibV9nZXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fZ2V0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2dldChkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3NldGRlZmF1bHRfX2RvY19fLAorInNldGRlZmF1bHQoJHNlbGYsIGtleSwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHZhbHVlIGZvciBrZXksIG9yIHNldCBpdCB0byBkZWZhdWx0IGFuZCByZXR1cm4gZGVmYXVsdCBpZiBub3QgcHJlc2VudC4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX1NFVERFRkFVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGRlZmF1bHQiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9zZXRkZWZhdWx0LCBNRVRIX1ZBUkFSR1MsIF9nZGJtX2dkYm1fc2V0ZGVmYXVsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zZXRkZWZhdWx0KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmtleTsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgZGF0YWJhc2UuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9DTE9TRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pX2dkYm1fZ2RibV9jbG9zZSwgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fY2xvc2VfaW1wbChkYm1vYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9jbG9zZShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fY2xvc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fa2V5c19fZG9jX18sCisia2V5cygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCBhIGxpc3Qgb2YgYWxsIGtleXMgaW4gdGhlIGRhdGFiYXNlLiIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsia2V5cyIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2tleXMsIE1FVEhfTk9BUkdTLCBfZ2RibV9nZGJtX2tleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fa2V5c19pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2tleXMoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfZ2RibV9nZGJtX2tleXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9nZGJtX2dkYm1fZmlyc3RrZXlfX2RvY19fLAorImZpcnN0a2V5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzdGFydGluZyBrZXkgZm9yIHRoZSB0cmF2ZXJzYWwuXG4iCisiXG4iCisiSXRcJ3MgcG9zc2libGUgdG8gbG9vcCBvdmVyIGV2ZXJ5IGtleSBpbiB0aGUgZGF0YWJhc2UgdXNpbmcgdGhpcyBtZXRob2RcbiIKKyJhbmQgdGhlIG5leHRrZXkoKSBtZXRob2QuICBUaGUgdHJhdmVyc2FsIGlzIG9yZGVyZWQgYnkgR0RCTVwncyBpbnRlcm5hbFxuIgorImhhc2ggdmFsdWVzLCBhbmQgd29uXCd0IGJlIHNvcnRlZCBieSB0aGUga2V5IHZhbHVlcy4iKTsKKworI2RlZmluZSBfR0RCTV9HREJNX0ZJUlNUS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJmaXJzdGtleSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX2ZpcnN0a2V5LCBNRVRIX05PQVJHUywgX2dkYm1fZ2RibV9maXJzdGtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKGRibW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX2ZpcnN0a2V5KGRibW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2dkYm1fZ2RibV9maXJzdGtleV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9uZXh0a2V5X19kb2NfXywKKyJuZXh0a2V5KCRzZWxmLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBrZXkgdGhhdCBmb2xsb3dzIGtleSBpbiB0aGUgdHJhdmVyc2FsLlxuIgorIlxuIgorIlRoZSBmb2xsb3dpbmcgY29kZSBwcmludHMgZXZlcnkga2V5IGluIHRoZSBkYXRhYmFzZSBkYiwgd2l0aG91dCBoYXZpbmdcbiIKKyJ0byBjcmVhdGUgYSBsaXN0IGluIG1lbW9yeSB0aGF0IGNvbnRhaW5zIHRoZW0gYWxsOlxuIgorIlxuIgorIiAgICAgIGsgPSBkYi5maXJzdGtleSgpXG4iCisiICAgICAgd2hpbGUgayAhPSBOb25lOlxuIgorIiAgICAgICAgICBwcmludChrKVxuIgorIiAgICAgICAgICBrID0gZGIubmV4dGtleShrKSIpOworCisjZGVmaW5lIF9HREJNX0dEQk1fTkVYVEtFWV9NRVRIT0RERUYgICAgXAorICAgIHsibmV4dGtleSIsIChQeUNGdW5jdGlvbilfZ2RibV9nZGJtX25leHRrZXksIE1FVEhfTywgX2dkYm1fZ2RibV9uZXh0a2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX25leHRrZXlfaW1wbChkYm1vYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3Qga2V5X2xlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZ2RibV9nZGJtX25leHRrZXkoZGJtb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmtleTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfZ2RibV9nZGJtX25leHRrZXlfaW1wbChzZWxmLCBrZXksIGtleV9sZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfZ2RibV9nZGJtX3Jlb3JnYW5pemVfX2RvY19fLAorInJlb3JnYW5pemUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW9yZ2FuaXplIHRoZSBkYXRhYmFzZS5cbiIKKyJcbiIKKyJJZiB5b3UgaGF2ZSBjYXJyaWVkIG91dCBhIGxvdCBvZiBkZWxldGlvbnMgYW5kIHdvdWxkIGxpa2UgdG8gc2hyaW5rXG4iCisidGhlIHNwYWNlIHVzZWQgYnkgdGhlIEdEQk0gZmlsZSwgdGhpcyByb3V0aW5lIHdpbGwgcmVvcmdhbml6ZSB0aGVcbiIKKyJkYXRhYmFzZS4gIEdEQk0gd2lsbCBub3Qgc2hvcnRlbiB0aGUgbGVuZ3RoIG9mIGEgZGF0YWJhc2UgZmlsZSBleGNlcHRcbiIKKyJieSB1c2luZyB0aGlzIHJlb3JnYW5pemF0aW9uOyBvdGhlcndpc2UsIGRlbGV0ZWQgZmlsZSBzcGFjZSB3aWxsIGJlXG4iCisia2VwdCBhbmQgcmV1c2VkIGFzIG5ldyAoa2V5LHZhbHVlKSBwYWlycyBhcmUgYWRkZWQuIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9SRU9SR0FOSVpFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW9yZ2FuaXplIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fcmVvcmdhbml6ZSwgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9yZW9yZ2FuaXplX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fcmVvcmdhbml6ZShkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fcmVvcmdhbml6ZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2dkYm1fZ2RibV9zeW5jX19kb2NfXywKKyJzeW5jKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRmx1c2ggdGhlIGRhdGFiYXNlIHRvIHRoZSBkaXNrIGZpbGUuXG4iCisiXG4iCisiV2hlbiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gb3BlbmVkIGluIGZhc3QgbW9kZSwgdGhpcyBtZXRob2QgZm9yY2VzXG4iCisiYW55IHVud3JpdHRlbiBkYXRhIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGRpc2suIik7CisKKyNkZWZpbmUgX0dEQk1fR0RCTV9TWU5DX01FVEhPRERFRiAgICBcCisgICAgeyJzeW5jIiwgKFB5Q0Z1bmN0aW9uKV9nZGJtX2dkYm1fc3luYywgTUVUSF9OT0FSR1MsIF9nZGJtX2dkYm1fc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2dkYm1fZ2RibV9zeW5jX2ltcGwoZGJtb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19nZGJtX2dkYm1fc3luYyhkYm1vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9nZGJtX2dkYm1fc3luY19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoZGJtb3Blbl9fZG9jX18sCisib3BlbigkbW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3M9XCdyXCcsIG1vZGU9MG82NjYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgZGJtIGRhdGFiYXNlIGFuZCByZXR1cm4gYSBkYm0gb2JqZWN0LlxuIgorIlxuIgorIlRoZSBmaWxlbmFtZSBhcmd1bWVudCBpcyB0aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgZmlsZS5cbiIKKyJcbiIKKyJUaGUgb3B0aW9uYWwgZmxhZ3MgYXJndW1lbnQgY2FuIGJlIFwnclwnICh0byBvcGVuIGFuIGV4aXN0aW5nIGRhdGFiYXNlXG4iCisiZm9yIHJlYWRpbmcgb25seSAtLSBkZWZhdWx0KSwgXCd3XCcgKHRvIG9wZW4gYW4gZXhpc3RpbmcgZGF0YWJhc2UgZm9yXG4iCisicmVhZGluZyBhbmQgd3JpdGluZyksIFwnY1wnICh3aGljaCBjcmVhdGVzIHRoZSBkYXRhYmFzZSBpZiBpdCBkb2VzblwndFxuIgorImV4aXN0KSwgb3IgXCduXCcgKHdoaWNoIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGVtcHR5IGRhdGFiYXNlKS5cbiIKKyJcbiIKKyJTb21lIHZlcnNpb25zIG9mIGdkYm0gc3VwcG9ydCBhZGRpdGlvbmFsIGZsYWdzIHdoaWNoIG11c3QgYmVcbiIKKyJhcHBlbmRlZCB0byBvbmUgb2YgdGhlIGZsYWdzIGRlc2NyaWJlZCBhYm92ZS4gIFRoZSBtb2R1bGUgY29uc3RhbnRcbiIKKyJcJ29wZW5fZmxhZ3NcJyBpcyBhIHN0cmluZyBvZiB2YWxpZCBhZGRpdGlvbmFsIGZsYWdzLiAgVGhlIFwnZlwnIGZsYWdcbiIKKyJvcGVucyB0aGUgZGF0YWJhc2UgaW4gZmFzdCBtb2RlOyBhbHRlcmVkIGRhdGEgd2lsbCBub3QgYXV0b21hdGljYWxseVxuIgorImJlIHdyaXR0ZW4gdG8gdGhlIGRpc2sgYWZ0ZXIgZXZlcnkgY2hhbmdlLiAgVGhpcyByZXN1bHRzIGluIGZhc3RlclxuIgorIndyaXRlcyB0byB0aGUgZGF0YWJhc2UsIGJ1dCBtYXkgcmVzdWx0IGluIGFuIGluY29uc2lzdGVudCBkYXRhYmFzZVxuIgorImlmIHRoZSBwcm9ncmFtIGNyYXNoZXMgd2hpbGUgdGhlIGRhdGFiYXNlIGlzIHN0aWxsIG9wZW4uICBVc2UgdGhlXG4iCisic3luYygpIG1ldGhvZCB0byBmb3JjZSBhbnkgdW53cml0dGVuIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZGlzay5cbiIKKyJUaGUgXCdzXCcgZmxhZyBjYXVzZXMgYWxsIGRhdGFiYXNlIG9wZXJhdGlvbnMgdG8gYmUgc3luY2hyb25pemVkIHRvXG4iCisiZGlzay4gIFRoZSBcJ3VcJyBmbGFnIGRpc2FibGVzIGxvY2tpbmcgb2YgdGhlIGRhdGFiYXNlIGZpbGUuXG4iCisiXG4iCisiVGhlIG9wdGlvbmFsIG1vZGUgYXJndW1lbnQgaXMgdGhlIFVuaXggbW9kZSBvZiB0aGUgZmlsZSwgdXNlZCBvbmx5XG4iCisid2hlbiB0aGUgZGF0YWJhc2UgaGFzIHRvIGJlIGNyZWF0ZWQuICBJdCBkZWZhdWx0cyB0byBvY3RhbCAwbzY2Ni4iKTsKKworI2RlZmluZSBEQk1PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKWRibW9wZW4sIE1FVEhfVkFSQVJHUywgZGJtb3Blbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorZGJtb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZsYWdzLAorICAgICAgICAgICAgIGludCBtb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RibW9wZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpmbGFncyA9ICJyIjsKKyAgICBpbnQgbW9kZSA9IDQzODsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3xzaTpvcGVuIiwKKyAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgbmFtZSwgZmxhZ3MsIG1vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDNkOGQ4NzFiY2NjYjY4YSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKaW5kZXggYzFhZDg4Mi4uNTlkOWQ1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaApAQCAtMTQsMjAgKzE0LDE4IEBACiAiZmx1c2goKSBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFDT01QUkVTU09SX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLCBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MsIE1FVEhfTywgX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoQ29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzKENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3MoQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6Y29tcHJlc3MiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC02MiwzNCArNjAsNDMgQEAKIH0KIAogUHlEb2NfU1RSVkFSKF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgLylcbiIKKyJkZWNvbXByZXNzKCRzZWxmLCAvLCBkYXRhLCBtYXhfbGVuZ3RoPS0xKVxuIgogIi0tXG4iCiAiXG4iCi0iUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgorIkRlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgdW5jb21wcmVzc2VkIGRhdGEgYXMgYnl0ZXMuXG4iCiAiXG4iCi0iUmV0dXJucyBhIGNodW5rIG9mIGRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCdcJyBvdGhlcndpc2UuXG4iCisiSWYgKm1heF9sZW5ndGgqIGlzIG5vbm5lZ2F0aXZlLCByZXR1cm5zIGF0IG1vc3QgKm1heF9sZW5ndGgqIGJ5dGVzIG9mXG4iCisiZGVjb21wcmVzc2VkIGRhdGEuIElmIHRoaXMgbGltaXQgaXMgcmVhY2hlZCBhbmQgZnVydGhlciBvdXRwdXQgY2FuIGJlXG4iCisicHJvZHVjZWQsICpzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBgYEZhbHNlYGAuIEluIHRoaXMgY2FzZSwgdGhlIG5leHRcbiIKKyJjYWxsIHRvICpkZWNvbXByZXNzKCkqIG1heSBwcm92aWRlICpkYXRhKiBhcyBiXCdcJyB0byBvYnRhaW4gbW9yZSBvZiB0aGUgb3V0cHV0LlxuIgogIlxuIgotIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWRcbiIKLSJyYWlzZXMgYW4gRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW1cbiIKLSJpcyBpZ25vcmVkIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOworIklmIGFsbCBvZiB0aGUgaW5wdXQgZGF0YSB3YXMgZGVjb21wcmVzc2VkIGFuZCByZXR1cm5lZCAoZWl0aGVyIGJlY2F1c2UgdGhpc1xuIgorIndhcyBsZXNzIHRoYW4gKm1heF9sZW5ndGgqIGJ5dGVzLCBvciBiZWNhdXNlICptYXhfbGVuZ3RoKiB3YXMgbmVnYXRpdmUpLFxuIgorIipzZWxmLm5lZWRzX2lucHV0KiB3aWxsIGJlIHNldCB0byBUcnVlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWQgcmFpc2VzIGFuXG4iCisiRU9GRXJyb3IuICBBbnkgZGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gaXMgaWdub3JlZCBhbmQgc2F2ZWQgaW5cbiIKKyJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpOworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKKyAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwpAQCAtMTIzLDcgKzEzMCw4IEBACiAiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuIik7CiAKIHN0YXRpYyBpbnQKLV9sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X19faW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIGludCBmb3JtYXQsIFB5T2JqZWN0ICptZW1saW1pdCwgUHlPYmplY3QgKmZpbHRlcnMpOworX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKTsKIAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0xMzQsOCArMTQyLDcgQEAKICAgICBQeU9iamVjdCAqbWVtbGltaXQgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpmaWx0ZXJzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBfa2V5d29yZHMsCiAgICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChEZWNvbXByZXNzb3IgKilzZWxmLCBmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKTsKQEAgLTE1MywyMCArMTYwLDE4IEBACiAiQWx3YXlzIHJldHVybnMgVHJ1ZSBmb3IgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIuIik7CiAKICNkZWZpbmUgX0xaTUFfSVNfQ0hFQ0tfU1VQUE9SVEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJpc19jaGVja19zdXBwb3J0ZWQiLCAoUHlDRnVuY3Rpb24pX2x6bWFfaXNfY2hlY2tfc3VwcG9ydGVkLCBNRVRIX1ZBUkFSR1MsIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9fZG9jX199LAorICAgIHsiaXNfY2hlY2tfc3VwcG9ydGVkIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZCwgTUVUSF9PLCBfbHptYV9pc19jaGVja19zdXBwb3J0ZWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjaGVja19pZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9pc19jaGVja19zdXBwb3J0ZWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitfbHptYV9pc19jaGVja19zdXBwb3J0ZWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hlY2tfaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwKLSAgICAgICAgJmNoZWNrX2lkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwgJmNoZWNrX2lkKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKG1vZHVsZSwgY2hlY2tfaWQpOwogCkBAIC0xODMsMjAgKzE4OCwxOCBAQAogIlRoZSByZXN1bHQgZG9lcyBub3QgaW5jbHVkZSB0aGUgZmlsdGVyIElEIGl0c2VsZiwgb25seSB0aGUgb3B0aW9ucy4iKTsKIAogI2RlZmluZSBfTFpNQV9fRU5DT0RFX0ZJTFRFUl9QUk9QRVJUSUVTX01FVEhPRERFRiAgICBcCi0gICAgeyJfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIE1FVEhfVkFSQVJHUywgX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19fZG9jX199LAorICAgIHsiX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBNRVRIX08sIF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsem1hX2ZpbHRlciBmaWx0ZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK19sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsem1hX2ZpbHRlciBmaWx0ZXIgPSB7TFpNQV9WTElfVU5LTk9XTiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAotICAgICAgICBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXIpOwogCkBAIC0yMjAsNyArMjIzLDggQEAKICAgICB7Il9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcywgTUVUSF9WQVJBUkdTLCBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbHptYV92bGkgZmlsdGVyX2lkLCBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpOworX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGx6bWFfdmxpIGZpbHRlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmVuY29kZWRfcHJvcHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyOSw4ICsyMzMsNyBAQAogICAgIGx6bWFfdmxpIGZpbHRlcl9pZDsKICAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyZ5KjpfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8meSo6X2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsCiAgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcyk7CkBAIC0yNDIsNCArMjQ1LDQgQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODA4ZmVjODIxNmFjNzEyYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQzZTA4NDJiZTNkM2ZlMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaCBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NmEyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaApAQCAtMCwwICsxLDM2IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX29wY29kZV9zdGFja19lZmZlY3RfX2RvY19fLAorInN0YWNrX2VmZmVjdCgkbW9kdWxlLCBvcGNvZGUsIG9wYXJnPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb21wdXRlIHRoZSBzdGFjayBlZmZlY3Qgb2YgdGhlIG9wY29kZS4iKTsKKworI2RlZmluZSBfT1BDT0RFX1NUQUNLX0VGRkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhY2tfZWZmZWN0IiwgKFB5Q0Z1bmN0aW9uKV9vcGNvZGVfc3RhY2tfZWZmZWN0LCBNRVRIX1ZBUkFSR1MsIF9vcGNvZGVfc3RhY2tfZWZmZWN0X19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19vcGNvZGVfc3RhY2tfZWZmZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wY29kZSwgUHlPYmplY3QgKm9wYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19vcGNvZGVfc3RhY2tfZWZmZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBvcGNvZGU7CisgICAgUHlPYmplY3QgKm9wYXJnID0gUHlfTm9uZTsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOnN0YWNrX2VmZmVjdCIsCisgICAgICAgICZvcGNvZGUsICZvcGFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlZTdjYjczNTcwNWU4YjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAppbmRleCA5NzUyOThjLi5iNjk4Y2U4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaApAQCAtODUsNyArODUsOCBAQAogIjIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiBzdGF0aWMgaW50Ci1fcGlja2xlX1BpY2tsZXJfX19pbml0X19faW1wbChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOworX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fX2ltcGwoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBpbnQKIF9waWNrbGVfUGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC05Niw4ICs5Nyw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T3A6UGlja2xlciIsIF9rZXl3b3JkcywKICAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfUGlja2xlcl9fX2luaXRfX19pbXBsKChQaWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTE5OSw3ICsxOTksOSBAQAogICAgIHsiZmluZF9jbGFzcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzLCBNRVRIX1ZBUkFSR1MsIF9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptb2R1bGVfbmFtZSwgUHlPYmplY3QgKmdsb2JhbF9uYW1lKTsKK19waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpnbG9iYWxfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNzEsNyArMjczLDkgQEAKICJzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuIik7CiAKIHN0YXRpYyBpbnQKLV9waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKK19waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIGludAogX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMjgzLDggKzI4Nyw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOlVucGlja2xlciIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLAogICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9VbnBpY2tsZXJfX19pbml0X19faW1wbCgoVW5waWNrbGVyT2JqZWN0ICopc2VsZiwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwpAQCAtMzc3LDcgKzM4MCw4IEBACiAgICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmZpbGUsIFB5T2JqZWN0ICpwcm90b2NvbCwgaW50IGZpeF9pbXBvcnRzKTsKK19waWNrbGVfZHVtcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMzg5LDggKzM5Myw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCiAgICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2R1bXBfaW1wbChtb2R1bGUsIG9iaiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTQyMSw3ICs0MjQsOCBAQAogICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CitfcGlja2xlX2R1bXBzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnByb3RvY29sLAorICAgICAgICAgICAgICAgICAgIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNDMyLDggKzQzNiw3IEBACiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCiAgICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcHNfaW1wbChtb2R1bGUsIG9iaiwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKQEAgLTQ3NSw3ICs0NzgsOCBAQAogICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLCBpbnQgZml4X2ltcG9ydHMsIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOworX3BpY2tsZV9sb2FkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtNDg3LDggKzQ5MSw3IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAotICAgICAgICAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCiAgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRfaW1wbChtb2R1bGUsIGZpbGUsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTUyMSw3ICs1MjQsOCBAQAogICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKK19waWNrbGVfbG9hZHNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTUzMyw4ICs1MzcsNyBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsCiAgICAgICAgICZkYXRhLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRzX2ltcGwobW9kdWxlLCBkYXRhLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CkBAIC01NDIsNCArNTQ1LDQgQEAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYWJhNzk1NzZlMjQwYzYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNmYzYTUyMzMyOTg0NDhlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRlNDcwOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19zcmUuYy5oCkBAIC0wLDAgKzEsNjkzIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3NyZV9nZXRjb2Rlc2l6ZV9fZG9jX18sCisiZ2V0Y29kZXNpemUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9HRVRDT0RFU0laRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y29kZXNpemUiLCAoUHlDRnVuY3Rpb24pX3NyZV9nZXRjb2Rlc2l6ZSwgTUVUSF9OT0FSR1MsIF9zcmVfZ2V0Y29kZXNpemVfX2RvY19ffSwKKworc3RhdGljIGludAorX3NyZV9nZXRjb2Rlc2l6ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9nZXRjb2Rlc2l6ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0Y29kZXNpemVfaW1wbChtb2R1bGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9nZXRsb3dlcl9fZG9jX18sCisiZ2V0bG93ZXIoJG1vZHVsZSwgY2hhcmFjdGVyLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9HRVRMT1dFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0bG93ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9nZXRsb3dlciwgTUVUSF9WQVJBUkdTLCBfc3JlX2dldGxvd2VyX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK19zcmVfZ2V0bG93ZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgY2hhcmFjdGVyLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9nZXRsb3dlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hhcmFjdGVyOworICAgIGludCBmbGFnczsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Z2V0bG93ZXIiLAorICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0bG93ZXJfaW1wbChtb2R1bGUsIGNoYXJhY3RlciwgZmxhZ3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX18sCisibWF0Y2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLCBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX01BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfXywKKyJmdWxsbWF0Y2goJHNlbGYsIC8sIHN0cmluZz1Ob25lLCBwb3M9MCwgZW5kcG9zPXN5cy5tYXhzaXplLCAqLFxuIgorIiAgICAgICAgICBwYXR0ZXJuPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmciKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZVTExNQVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZnVsbG1hdGNoIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX18sCisic2VhcmNoKCRzZWxmLCAvLCBzdHJpbmc9Tm9uZSwgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSwgKixcbiIKKyIgICAgICAgcGF0dGVybj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiU2NhbiB0aHJvdWdoIHN0cmluZyBsb29raW5nIGZvciBhIG1hdGNoLCBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyBtYXRjaCBvYmplY3QgaW5zdGFuY2UuXG4iCisiXG4iCisiUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0VBUkNIX01FVEhPRERFRiAgICBcCisgICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpzZWFyY2giLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX18sCisiZmluZGFsbCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUsICosXG4iCisiICAgICAgICBzb3VyY2U9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIG9mIHBhdHRlcm4gaW4gc3RyaW5nLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklOREFMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZzb3VyY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgc291cmNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX18sCisiZmluZGl0ZXIoJHNlbGYsIC8sIHN0cmluZywgcG9zPTAsIGVuZHBvcz1zeXMubWF4c2l6ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBmb3IgdGhlIFJFIHBhdHRlcm4gaW4gc3RyaW5nLlxuIgorIlxuIgorIkZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRiAgICBcCisgICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfXywKKyJzY2FubmVyKCRzZWxmLCAvLCBzdHJpbmcsIHBvcz0wLCBlbmRwb3M9c3lzLm1heHNpemUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0NBTk5FUl9NRVRIT0RERUYgICAgXAorICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xubjpzY2FubmVyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfXywKKyJzcGxpdCgkc2VsZiwgLywgc3RyaW5nPU5vbmUsIG1heHNwbGl0PTAsICosIHNvdXJjZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiU3BsaXQgc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0LCBQeU9iamVjdCAqc291cmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IDA7CisgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChzZWxmLCBzdHJpbmcsIG1heHNwbGl0LCBzb3VyY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9fZG9jX18sCisic3ViKCRzZWxmLCAvLCByZXBsLCBzdHJpbmcsIGNvdW50PTApXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQl9NRVRIT0RERUYgICAgXAorICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXBsOworICAgIFB5T2JqZWN0ICpzdHJpbmc7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xuOnN1YiIsIF9rZXl3b3JkcywKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5fX2RvY19fLAorInN1Ym4oJHNlbGYsIC8sIHJlcGwsIHN0cmluZywgY291bnQ9MClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQk5fTUVUSE9EREVGICAgIFwKKyAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcmVwbDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworICAgIFB5X3NzaXplX3QgY291bnQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWJuIiwgX2tleXdvcmRzLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9QYXR0ZXJuX19fY29weV9fX19kb2NfXywKKyJfX2NvcHlfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0NPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X19faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19jb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NyZV9TUkVfUGF0dGVybl9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19fLAorIl9fZGVlcGNvcHlfXygkc2VsZiwgLywgbWVtbylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZW1vOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpfX2RlZXBjb3B5X18iLCBfa2V5d29yZHMsCisgICAgICAgICZtZW1vKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfY29tcGlsZV9fZG9jX18sCisiY29tcGlsZSgkbW9kdWxlLCAvLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LFxuIgorIiAgICAgICAgaW5kZXhncm91cClcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NSRV9DT01QSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfY29tcGlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9jb21waWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdHRlcm4sIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGdyb3VwcywgUHlPYmplY3QgKmdyb3VwaW5kZXgsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5kZXhncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX2NvbXBpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXR0ZXJuIiwgImZsYWdzIiwgImNvZGUiLCAiZ3JvdXBzIiwgImdyb3VwaW5kZXgiLCAiaW5kZXhncm91cCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpwYXR0ZXJuOworICAgIGludCBmbGFnczsKKyAgICBQeU9iamVjdCAqY29kZTsKKyAgICBQeV9zc2l6ZV90IGdyb3VwczsKKyAgICBQeU9iamVjdCAqZ3JvdXBpbmRleDsKKyAgICBQeU9iamVjdCAqaW5kZXhncm91cDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBhdHRlcm4sICZmbGFncywgJlB5TGlzdF9UeXBlLCAmY29kZSwgJmdyb3VwcywgJmdyb3VwaW5kZXgsICZpbmRleGdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfY29tcGlsZV9pbXBsKG1vZHVsZSwgcGF0dGVybiwgZmxhZ3MsIGNvZGUsIGdyb3VwcywgZ3JvdXBpbmRleCwgaW5kZXhncm91cCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX18sCisiZXhwYW5kKCRzZWxmLCAvLCB0ZW1wbGF0ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGRvaW5nIGJhY2tzbGFzaCBzdWJzdGl0dXRpb24gb24gdGhlIHN0cmluZyB0ZW1wbGF0ZSwgYXMgZG9uZSBieSB0aGUgc3ViKCkgbWV0aG9kLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VYUEFORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXhwYW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2V4cGFuZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0ZW1wbGF0ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGVtcGxhdGUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdGVtcGxhdGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOmV4cGFuZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnRlbXBsYXRlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKHNlbGYsIHRlbXBsYXRlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfXywKKyJncm91cHMoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEuXG4iCisiXG4iCisiICBkZWZhdWx0XG4iCisiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQU19NRVRIT0RERUYgICAgXAorICAgIHsiZ3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBzIiwgX2tleXdvcmRzLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfXywKKyJncm91cGRpY3QoJHNlbGYsIC8sIGRlZmF1bHQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhbGwgdGhlIG5hbWVkIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGtleWVkIGJ5IHRoZSBzdWJncm91cCBuYW1lLlxuIgorIlxuIgorIiAgZGVmYXVsdFxuIgorIiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9HUk9VUERJQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7Imdyb3VwZGljdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwZGljdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX3N0YXJ0X19kb2NfXywKKyJzdGFydCgkc2VsZiwgZ3JvdXA9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX1NUQVJUX01FVEhPRERFRiAgICBcCisgICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9zdGFydCwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9zdGFydF9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX3N0YXJ0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwKKyAgICAgICAgMCwgMSwKKyAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zdGFydF9pbXBsKHNlbGYsIGdyb3VwKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX01hdGNoX2VuZF9fZG9jX18sCisiZW5kKCRzZWxmLCBncm91cD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIHRoZSBlbmQgb2YgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IGdyb3VwLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX0VORF9NRVRIT0RERUYgICAgXAorICAgIHsiZW5kIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2VuZCwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9lbmRfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK19zcmVfU1JFX01hdGNoX2VuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZ3JvdXApOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfZW5kKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImVuZCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZncm91cCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZW5kX2ltcGwoc2VsZiwgZ3JvdXApOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfc3Bhbl9fZG9jX18sCisic3Bhbigkc2VsZiwgZ3JvdXA9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvciBNYXRjaE9iamVjdCBtLCByZXR1cm4gdGhlIDItdHVwbGUgKG0uc3RhcnQoZ3JvdXApLCBtLmVuZChncm91cCkpLiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX1NQQU5fTUVUSE9EREVGICAgIFwKKyAgICB7InNwYW4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfc3BhbiwgTUVUSF9WQVJBUkdTLCBfc3JlX1NSRV9NYXRjaF9zcGFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9zcGFuKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZ3JvdXAgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3BhbiIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZncm91cCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zcGFuX2ltcGwoc2VsZiwgZ3JvdXApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fQ09QWV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9fX2NvcHlfXywgTUVUSF9OT0FSR1MsIF9zcmVfU1JFX01hdGNoX19fY29weV9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9NYXRjaF9fX2NvcHlfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfXywKKyJfX2RlZXBjb3B5X18oJHNlbGYsIC8sIG1lbW8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TUkVfU1JFX01BVENIX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lbW87CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKKyAgICAgICAgJm1lbW8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zcmVfU1JFX1NjYW5uZXJfbWF0Y2hfX2RvY19fLAorIm1hdGNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9TQ0FOTkVSX01BVENIX01FVEhPRERFRiAgICBcCisgICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9TY2FubmVyX21hdGNoLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaF9pbXBsKFNjYW5uZXJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NyZV9TUkVfU2Nhbm5lcl9tYXRjaChTY2FubmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX21hdGNoX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9fZG9jX18sCisic2VhcmNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1JFX1NSRV9TQ0FOTkVSX1NFQVJDSF9NRVRIT0RERUYgICAgXAorICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1NjYW5uZXJfc2VhcmNoLCBNRVRIX05PQVJHUywgX3NyZV9TUkVfU2Nhbm5lcl9zZWFyY2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoU2Nhbm5lck9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3JlX1NSRV9TY2FubmVyX3NlYXJjaChTY2FubmVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQxZDczYWIyYzUwMDhiZDQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGJjNWQwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmgKQEAgLTAsMCArMSwxMTA1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZV9fZG9jX18sCisiZG9faGFuZHNoYWtlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfRE9fSEFORFNIQUtFX01FVEhPRERFRiAgICBcCisgICAgeyJkb19oYW5kc2hha2UiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2RvX2hhbmRzaGFrZSwgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9kb19oYW5kc2hha2VfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfZG9faGFuZHNoYWtlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX190ZXN0X2RlY29kZV9jZXJ0X19kb2NfXywKKyJfdGVzdF9kZWNvZGVfY2VydCgkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19URVNUX0RFQ09ERV9DRVJUX01FVEhPRERFRiAgICBcCisgICAgeyJfdGVzdF9kZWNvZGVfY2VydCIsIChQeUNGdW5jdGlvbilfc3NsX190ZXN0X2RlY29kZV9jZXJ0LCBNRVRIX08sIF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX190ZXN0X2RlY29kZV9jZXJ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX190ZXN0X2RlY29kZV9jZXJ0X2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfX2RvY19fLAorInBlZXJfY2VydGlmaWNhdGUoJHNlbGYsIGRlcj1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgcGVlci5cbiIKKyJcbiIKKyJJZiBubyBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQsIHJldHVybnMgTm9uZS4gIElmIGEgY2VydGlmaWNhdGUgd2FzXG4iCisicHJvdmlkZWQsIGJ1dCBub3QgdmFsaWRhdGVkLCByZXR1cm5zIGFuIGVtcHR5IGRpY3Rpb25hcnkuICBPdGhlcndpc2VcbiIKKyJyZXR1cm5zIGEgZGljdCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZWVyIGNlcnRpZmljYXRlLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGVcbiIKKyJwZWVyIGNlcnRpZmljYXRlLCBvciBOb25lIGlmIG5vIGNlcnRpZmljYXRlIHdhcyBwcm92aWRlZC4gIFRoaXMgd2lsbFxuIgorInJldHVybiB0aGUgY2VydGlmaWNhdGUgZXZlbiBpZiBpdCB3YXNuXCd0IHZhbGlkYXRlZC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfUEVFUl9DRVJUSUZJQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsicGVlcl9jZXJ0aWZpY2F0ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZSwgTUVUSF9WQVJBUkdTLCBfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGJpbmFyeV9tb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgYmluYXJ5X21vZGUgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwKKyAgICAgICAgJmJpbmFyeV9tb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTFNvY2tldF9wZWVyX2NlcnRpZmljYXRlX2ltcGwoc2VsZiwgYmluYXJ5X21vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfX2RvY19fLAorInNoYXJlZF9jaXBoZXJzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0hBUkVEX0NJUEhFUlNfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYXJlZF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVycywgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTFNvY2tldF9zaGFyZWRfY2lwaGVyc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NoYXJlZF9jaXBoZXJzKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xTb2NrZXRfc2hhcmVkX2NpcGhlcnNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9jaXBoZXJfX2RvY19fLAorImNpcGhlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX0NJUEhFUl9NRVRIT0RERUYgICAgXAorICAgIHsiY2lwaGVyIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9jaXBoZXIsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfY2lwaGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY2lwaGVyX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X2NpcGhlcihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X2NpcGhlcl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25fX2RvY19fLAorInZlcnNpb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9WRVJTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJ2ZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF92ZXJzaW9uLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3ZlcnNpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3ZlcnNpb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF92ZXJzaW9uX2ltcGwoc2VsZik7Cit9CisKKyNpZiBkZWZpbmVkKE9QRU5TU0xfTlBOX05FR09USUFURUQpCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sX19kb2NfXywKKyJzZWxlY3RlZF9ucG5fcHJvdG9jb2woJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGICAgIFwKKyAgICB7InNlbGVjdGVkX25wbl9wcm90b2NvbCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfc2VsZWN0ZWRfbnBuX3Byb3RvY29sLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX25wbl9wcm90b2NvbF9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9ucG5fcHJvdG9jb2xfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoT1BFTlNTTF9OUE5fTkVHT1RJQVRFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9BTFBOKQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfX2RvY19fLAorInNlbGVjdGVkX2FscG5fcHJvdG9jb2woJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRiAgICBcCisgICAgeyJzZWxlY3RlZF9hbHBuX3Byb3RvY29sIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2xfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3NlbGVjdGVkX2FscG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9zZWxlY3RlZF9hbHBuX3Byb3RvY29sX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQUxQTikgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9fZG9jX18sCisiY29tcHJlc3Npb24oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9DT01QUkVTU0lPTl9NRVRIT0RERUYgICAgXAorICAgIHsiY29tcHJlc3Npb24iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X2NvbXByZXNzaW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb25faW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfY29tcHJlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9jb21wcmVzc2lvbl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3dyaXRlX19kb2NfXywKKyJ3cml0ZSgkc2VsZiwgYiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlcyB0aGUgYnl0ZXMtbGlrZSBvYmplY3QgYiBpbnRvIHRoZSBTU0wgb2JqZWN0LlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3dyaXRlLCBNRVRIX08sIF9zc2xfX1NTTFNvY2tldF93cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYsIFB5X2J1ZmZlciAqYik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfd3JpdGUoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfX2RvY19fLAorInBlbmRpbmcoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxyZWFkeSBkZWNyeXB0ZWQgYnl0ZXMgYXZhaWxhYmxlIGZvciByZWFkLCBwZW5kaW5nIG9uIHRoZSBjb25uZWN0aW9uLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9QRU5ESU5HX01FVEhPRERFRiAgICBcCisgICAgeyJwZW5kaW5nIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTFNvY2tldF9wZW5kaW5nLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMU29ja2V0X3BlbmRpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoUHlTU0xTb2NrZXQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3BlbmRpbmcoUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTFNvY2tldF9wZW5kaW5nX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfcmVhZF9fZG9jX18sCisicmVhZChzaXplLCBbYnVmZmVyXSlcbiIKKyJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgU1NMIHNvY2tldC4iKTsKKworI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfcmVhZCwgTUVUSF9WQVJBUkdTLCBfc3NsX19TU0xTb2NrZXRfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChQeVNTTFNvY2tldCAqc2VsZiwgaW50IGxlbiwgaW50IGdyb3VwX3JpZ2h0XzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9yZWFkKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbGVuOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXcqOnJlYWQiLCAmbGVuLCAmYnVmZmVyKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9zc2wuX1NTTFNvY2tldC5yZWFkIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3JlYWRfaW1wbChzZWxmLCBsZW4sIGdyb3VwX3JpZ2h0XzEsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX19kb2NfXywKKyJzaHV0ZG93bigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkRvZXMgdGhlIFNTTCBzaHV0ZG93biBoYW5kc2hha2Ugd2l0aCB0aGUgcmVtb3RlIGVuZC5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1NIVVRET1dOX01FVEhPRERFRiAgICBcCisgICAgeyJzaHV0ZG93biIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xTb2NrZXRfc2h1dGRvd24sIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfc2h1dGRvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bl9pbXBsKFB5U1NMU29ja2V0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTFNvY2tldF9zaHV0ZG93bihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3NodXRkb3duX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9fZG9jX18sCisidGxzX3VuaXF1ZV9jYigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIFwndGxzLXVuaXF1ZVwnIGNoYW5uZWwgYmluZGluZyBkYXRhLCBhcyBkZWZpbmVkIGJ5IFJGQyA1OTI5LlxuIgorIlxuIgorIklmIHRoZSBUTFMgaGFuZHNoYWtlIGlzIG5vdCB5ZXQgY29tcGxldGUsIE5vbmUgaXMgcmV0dXJuZWQuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMU09DS0VUX1RMU19VTklRVUVfQ0JfTUVUSE9EREVGICAgIFwKKyAgICB7InRsc191bmlxdWVfY2IiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2IsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChQeVNTTFNvY2tldCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xTb2NrZXRfdGxzX3VuaXF1ZV9jYihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMU29ja2V0X3Rsc191bmlxdWVfY2JfaW1wbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBwcm90b192ZXJzaW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcHJvdG9fdmVyc2lvbjsKKworICAgIGlmICgodHlwZSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiX1NTTENvbnRleHQiLCBrd2FyZ3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9TU0xDb250ZXh0IiwKKyAgICAgICAgJnByb3RvX3ZlcnNpb24pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9pbXBsKHR5cGUsIHByb3RvX3ZlcnNpb24pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX19kb2NfXywKKyJzZXRfY2lwaGVycygkc2VsZiwgY2lwaGVybGlzdCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9TRVRfQ0lQSEVSU19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVycywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBjb25zdCBjaGFyICpjaXBoZXJsaXN0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3Q7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X3NldF9jaXBoZXJzX2ltcGwoc2VsZiwgY2lwaGVybGlzdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX19kb2NfXywKKyJfc2V0X25wbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX05QTl9QUk9UT0NPTFNfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zZXRfbnBuX3Byb3RvY29scyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29scywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCisgICAgaWYgKHByb3Rvcy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfX2RvY19fLAorIl9zZXRfYWxwbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fU0VUX0FMUE5fUFJPVE9DT0xTX01FVEhPRERFRiAgICBcCisgICAgeyJfc2V0X2FscG5fcHJvdG9jb2xzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29scywgTUVUSF9PLCBfc3NsX19TU0xDb250ZXh0X19zZXRfYWxwbl9wcm90b2NvbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqcHJvdG9zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29scyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9hbHBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCisgICAgaWYgKHByb3Rvcy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX18sCisibG9hZF9jZXJ0X2NoYWluKCRzZWxmLCAvLCBjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lLCBwYXNzd29yZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfQ0VSVF9DSEFJTl9NRVRIT0RERUYgICAgXAorICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXlmaWxlLCBQeU9iamVjdCAqcGFzc3dvcmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2VydGZpbGU7CisgICAgUHlPYmplY3QgKmtleWZpbGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXNzd29yZCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoc2VsZiwgY2VydGZpbGUsIGtleWZpbGUsIHBhc3N3b3JkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfX2RvY19fLAorImxvYWRfdmVyaWZ5X2xvY2F0aW9ucygkc2VsZiwgLywgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRhdGE9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX1ZFUklGWV9MT0NBVElPTlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2FmaWxlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2FwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2FkYXRhID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT086bG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgX2tleXdvcmRzLAorICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoc2VsZiwgY2FmaWxlLCBjYXBhdGgsIGNhZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXNfX2RvY19fLAorImxvYWRfZGhfcGFyYW1zKCRzZWxmLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0xPQURfREhfUEFSQU1TX01FVEhPRERFRiAgICBcCisgICAgeyJsb2FkX2RoX3BhcmFtcyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfZGhfcGFyYW1zLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfbG9hZF9kaF9wYXJhbXNfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfXywKKyJfd3JhcF9zb2NrZXQoJHNlbGYsIC8sIHNvY2ssIHNlcnZlcl9zaWRlLCBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGICAgIFwKKyAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc29jazsKKyAgICBpbnQgc2VydmVyX3NpZGU7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsCisgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwgJnNvY2ssICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19fZG9jX18sCisiX3dyYXBfYmlvKCRzZWxmLCAvLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlLFxuIgorIiAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGICAgIFwKKyAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNTTE1lbW9yeUJJTyAqb3V0Z29pbmcsIGludCBzZXJ2ZXJfc2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nOworICAgIFB5U1NMTWVtb3J5QklPICpvdXRnb2luZzsKKyAgICBpbnQgc2VydmVyX3NpZGU7CisgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIU8haXxPOl93cmFwX2JpbyIsIF9rZXl3b3JkcywKKyAgICAgICAgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZpbmNvbWluZywgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZvdXRnb2luZywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX19kb2NfXywKKyJzZXNzaW9uX3N0YXRzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFU1NJT05fU1RBVFNfTUVUSE9EREVGICAgIFwKKyAgICB7InNlc3Npb25fc3RhdHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X3Nlc3Npb25fc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9zZXNzaW9uX3N0YXRzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19fZG9jX18sCisic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfaW1wbChzZWxmKTsKK30KKworI2lmICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkKKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmVfX2RvY19fLAorInNldF9lY2RoX2N1cnZlKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfZWNkaF9jdXJ2ZSIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X3NldF9lY2RoX2N1cnZlLCBNRVRIX08sIF9zc2xfX1NTTENvbnRleHRfc2V0X2VjZGhfY3VydmVfX2RvY19ffSwKKworI2VuZGlmIC8qICFkZWZpbmVkKE9QRU5TU0xfTk9fRUNESCkgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2tfX2RvY19fLAorInNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrKCRzZWxmLCBtZXRob2QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBzZXJ2ZXIgbmFtZSBpcyBwcm92aWRlZCBieSB0aGUgU1NML1RMUyBjbGllbnQgaW4gdGhlIFNOSSBleHRlbnNpb24uXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIE5vbmUgdGhlbiB0aGUgY2FsbGJhY2sgaXMgZGlzYWJsZWQuIFRoZSBtZXRob2QgaXMgY2FsbGVkXG4iCisid2l0aCB0aGUgU1NMU29ja2V0LCB0aGUgc2VydmVyIG5hbWUgYXMgYSBzdHJpbmcsIGFuZCB0aGUgU1NMQ29udGV4dCBvYmplY3QuXG4iCisiU2VlIFJGQyA2MDY2IGZvciBkZXRhaWxzIG9mIHRoZSBTTkkgZXh0ZW5zaW9uLiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9zZXJ2ZXJuYW1lX2NhbGxiYWNrIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2ssIE1FVEhfTywgX3NzbF9fU1NMQ29udGV4dF9zZXRfc2VydmVybmFtZV9jYWxsYmFja19fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX19kb2NfXywKKyJjZXJ0X3N0b3JlX3N0YXRzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBxdWFudGl0aWVzIG9mIGxvYWRlZCBYLjUwOSBjZXJ0aWZpY2F0ZXMuXG4iCisiXG4iCisiWC41MDkgY2VydGlmaWNhdGVzIHdpdGggYSBDQSBleHRlbnNpb24gYW5kIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdHNcbiIKKyJpbnNpZGUgdGhlIGNvbnRleHRcJ3MgY2VydCBzdG9yZS5cbiIKKyJcbiIKKyJOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW5cJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcbiIKKyJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0NFUlRfU1RPUkVfU1RBVFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImNlcnRfc3RvcmVfc3RhdHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzLCBNRVRIX05PQVJHUywgX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2NlcnRfc3RvcmVfc3RhdHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NzbF9fU1NMQ29udGV4dF9jZXJ0X3N0b3JlX3N0YXRzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX18sCisiZ2V0X2NhX2NlcnRzKCRzZWxmLCAvLCBiaW5hcnlfZm9ybT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgYSBsaXN0IG9mIGRpY3RzIHdpdGggaW5mb3JtYXRpb24gb2YgbG9hZGVkIENBIGNlcnRzLlxuIgorIlxuIgorIklmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBpcyBUcnVlLCByZXR1cm5zIGEgREVSLWVuY29kZWQgY29weSBvZiB0aGUgQ0FcbiIKKyJjZXJ0aWZpY2F0ZS5cbiIKKyJcbiIKKyJOT1RFOiBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW5cJ3QgbG9hZGVkIHVubGVzcyB0aGV5IGhhdmVcbiIKKyJiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4iKTsKKworI2RlZmluZSBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBpbnQgYmluYXJ5X2Zvcm0pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgaW50IGJpbmFyeV9mb3JtID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmJpbmFyeV9mb3JtKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoc2VsZiwgYmluYXJ5X2Zvcm0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJTyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX2ltcGwodHlwZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfTWVtb3J5QklPX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIHVwIHRvIHNpemUgYnl0ZXMgZnJvbSB0aGUgbWVtb3J5IEJJTy5cbiIKKyJcbiIKKyJJZiBzaXplIGlzIG5vdCBzcGVjaWZpZWQsIHJlYWQgdGhlIGVudGlyZSBidWZmZXIuXG4iCisiSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlbXB0eSBieXRlcyBpbnN0YW5jZSwgdGhpcyBtZWFucyBlaXRoZXJcbiIKKyJFT0Ygb3IgdGhhdCBubyBkYXRhIGlzIGF2YWlsYWJsZS4gVXNlIHRoZSBcImVvZlwiIHByb3BlcnR5IHRvXG4iCisiZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvLiIpOworCisjZGVmaW5lIF9TU0xfTUVNT1JZQklPX1JFQURfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWQiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfc3NsX01lbW9yeUJJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIGludCBsZW4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fcmVhZChQeVNTTE1lbW9yeUJJTyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGxlbiA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkIiwKKyAgICAgICAgJmxlbikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19yZWFkX2ltcGwoc2VsZiwgbGVuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9NZW1vcnlCSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIHRoZSBieXRlcyBiIGludG8gdGhlIG1lbW9yeSBCSU8uXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfTWVtb3J5QklPX3dyaXRlLCBNRVRIX08sIF9zc2xfTWVtb3J5QklPX3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9pbXBsKFB5U1NMTWVtb3J5QklPICpzZWxmLCBQeV9idWZmZXIgKmIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9NZW1vcnlCSU9fd3JpdGUoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfX2RvY19fLAorIndyaXRlX2VvZigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlIGFuIEVPRiBtYXJrZXIgdG8gdGhlIG1lbW9yeSBCSU8uXG4iCisiXG4iCisiV2hlbiBhbGwgZGF0YSBoYXMgYmVlbiByZWFkLCB0aGUgXCJlb2ZcIiBwcm9wZXJ0eSB3aWxsIGJlIFRydWUuIik7CisKKyNkZWZpbmUgX1NTTF9NRU1PUllCSU9fV1JJVEVfRU9GX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZV9lb2YiLCAoUHlDRnVuY3Rpb24pX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mLCBNRVRIX05PQVJHUywgX3NzbF9NZW1vcnlCSU9fd3JpdGVfZW9mX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9lb2ZfaW1wbChQeVNTTE1lbW9yeUJJTyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX01lbW9yeUJJT193cml0ZV9lb2YoUHlTU0xNZW1vcnlCSU8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfTWVtb3J5QklPX3dyaXRlX2VvZl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2FkZF9fZG9jX18sCisiUkFORF9hZGQoJG1vZHVsZSwgc3RyaW5nLCBlbnRyb3B5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWl4IHN0cmluZyBpbnRvIHRoZSBPcGVuU1NMIFBSTkcgc3RhdGUuXG4iCisiXG4iCisiZW50cm9weSAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW5cbiIKKyJzdHJpbmcuICBTZWUgUkZDIDE3NTAuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0FERF9NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9hZGQiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX2FkZCwgTUVUSF9WQVJBUkdTLCBfc3NsX1JBTkRfYWRkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICp2aWV3LCBkb3VibGUgZW50cm9weSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYWRkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGRvdWJsZSBlbnRyb3B5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKmQ6UkFORF9hZGQiLAorICAgICAgICAmdmlldywgJmVudHJvcHkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2FkZF9pbXBsKG1vZHVsZSwgJnZpZXcsIGVudHJvcHkpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHZpZXcgKi8KKyAgICBpZiAodmlldy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX2J5dGVzX19kb2NfXywKKyJSQU5EX2J5dGVzKCRtb2R1bGUsIG4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZW5lcmF0ZSBuIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIGJ5dGVzLiIpOworCisjZGVmaW5lIF9TU0xfUkFORF9CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9ieXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfYnl0ZXMsIE1FVEhfTywgX3NzbF9SQU5EX2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYnl0ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfYnl0ZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX2J5dGVzIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NzbF9SQU5EX3BzZXVkb19ieXRlc19fZG9jX18sCisiUkFORF9wc2V1ZG9fYnl0ZXMoJG1vZHVsZSwgbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkdlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy5cbiIKKyJcbiIKKyJSZXR1cm4gYSBwYWlyIChieXRlcywgaXNfY3J5cHRvZ3JhcGhpYykuICBpc19jcnlwdG9ncmFwaGljIGlzIFRydWVcbiIKKyJpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX1BTRVVET19CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9wc2V1ZG9fYnl0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX3BzZXVkb19ieXRlcywgTUVUSF9PLCBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3BzZXVkb19ieXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX3BzZXVkb19ieXRlc19pbXBsKG1vZHVsZSwgbik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfUkFORF9zdGF0dXNfX2RvY19fLAorIlJBTkRfc3RhdHVzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIDEgaWYgdGhlIE9wZW5TU0wgUFJORyBoYXMgYmVlbiBzZWVkZWQgd2l0aCBlbm91Z2ggZGF0YSBhbmQgMCBpZiBub3QuXG4iCisiXG4iCisiSXQgaXMgbmVjZXNzYXJ5IHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBSQU5EX2FkZCgpIG9uIHNvbWUgcGxhdGZvcm1zIGJlZm9yZVxuIgorInVzaW5nIHRoZSBzc2woKSBmdW5jdGlvbi4iKTsKKworI2RlZmluZSBfU1NMX1JBTkRfU1RBVFVTX01FVEhPRERFRiAgICBcCisgICAgeyJSQU5EX3N0YXR1cyIsIChQeUNGdW5jdGlvbilfc3NsX1JBTkRfc3RhdHVzLCBNRVRIX05PQVJHUywgX3NzbF9SQU5EX3N0YXR1c19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3N0YXR1c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX3N0YXR1cyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX1JBTkRfc3RhdHVzX2ltcGwobW9kdWxlKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9SQU5EX0VHRCkKKworUHlEb2NfU1RSVkFSKF9zc2xfUkFORF9lZ2RfX2RvY19fLAorIlJBTkRfZWdkKCRtb2R1bGUsIHBhdGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJRdWVyaWVzIHRoZSBlbnRyb3B5IGdhdGhlciBkYWVtb24gKEVHRCkgb24gdGhlIHNvY2tldCBuYW1lZCBieSBcJ3BhdGhcJy5cbiIKKyJcbiIKKyJSZXR1cm5zIG51bWJlciBvZiBieXRlcyByZWFkLiAgUmFpc2VzIFNTTEVycm9yIGlmIGNvbm5lY3Rpb24gdG8gRUdEXG4iCisiZmFpbHMgb3IgaWYgaXQgZG9lcyBub3QgcHJvdmlkZSBlbm91Z2ggZGF0YSB0byBzZWVkIFBSTkcuIik7CisKKyNkZWZpbmUgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYgICAgXAorICAgIHsiUkFORF9lZ2QiLCAoUHlDRnVuY3Rpb24pX3NzbF9SQU5EX2VnZCwgTUVUSF9PLCBfc3NsX1JBTkRfZWdkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX1JBTkRfZWdkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9SQU5EX2VnZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2VnZF9pbXBsKG1vZHVsZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9SQU5EX0VHRCkgKi8KKworUHlEb2NfU1RSVkFSKF9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX19kb2NfXywKKyJnZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzZWFyY2ggcGF0aHMgYW5kIGVudmlyb25tZW50IHZhcnMgdGhhdCBhcmUgdXNlZCBieSBTU0xDb250ZXh0XCdzIHNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIHRvIGxvYWQgZGVmYXVsdCBDQXMuXG4iCisiXG4iCisiVGhlIHZhbHVlcyBhcmUgXCdjZXJ0X2ZpbGVfZW52XCcsIFwnY2VydF9maWxlXCcsIFwnY2VydF9kaXJfZW52XCcsIFwnY2VydF9kaXJcJy4iKTsKKworI2RlZmluZSBfU1NMX0dFVF9ERUZBVUxUX1ZFUklGWV9QQVRIU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzLCBNRVRIX05PQVJHUywgX3NzbF9nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRocyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX2dldF9kZWZhdWx0X3ZlcmlmeV9wYXRoc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfc3NsX3R4dDJvYmpfX2RvY19fLAorInR4dDJvYmooJG1vZHVsZSwgLywgdHh0LCBuYW1lPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiTG9va3VwIE5JRCwgc2hvcnQgbmFtZSwgbG9uZyBuYW1lIGFuZCBPSUQgb2YgYW4gQVNOMV9PQkpFQ1QuXG4iCisiXG4iCisiQnkgZGVmYXVsdCBvYmplY3RzIGFyZSBsb29rZWQgdXAgYnkgT0lELiBXaXRoIG5hbWU9VHJ1ZSBzaG9ydCBhbmRcbiIKKyJsb25nIG5hbWUgYXJlIGFsc28gbWF0Y2hlZC4iKTsKKworI2RlZmluZSBfU1NMX1RYVDJPQkpfTUVUSE9EREVGICAgIFwKKyAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF90eHQyb2JqX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX3R4dDJvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICp0eHQsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfdHh0Mm9iaihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqdHh0OworICAgIGludCBuYW1lID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLAorICAgICAgICAmdHh0LCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX3R4dDJvYmpfaW1wbChtb2R1bGUsIHR4dCwgbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zc2xfbmlkMm9ial9fZG9jX18sCisibmlkMm9iaigkbW9kdWxlLCBuaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb29rdXAgTklELCBzaG9ydCBuYW1lLCBsb25nIG5hbWUgYW5kIE9JRCBvZiBhbiBBU04xX09CSkVDVCBieSBOSUQuIik7CisKKyNkZWZpbmUgX1NTTF9OSUQyT0JKX01FVEhPRERFRiAgICBcCisgICAgeyJuaWQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfbmlkMm9iaiwgTUVUSF9PLCBfc3NsX25pZDJvYmpfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfbmlkMm9ial9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9uaWQyb2JqKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5pZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX25pZDJvYmpfaW1wbChtb2R1bGUsIG5pZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisKK1B5RG9jX1NUUlZBUihfc3NsX2VudW1fY2VydGlmaWNhdGVzX19kb2NfXywKKyJlbnVtX2NlcnRpZmljYXRlcygkbW9kdWxlLCAvLCBzdG9yZV9uYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgY2VydGlmaWNhdGVzIGZyb20gV2luZG93c1wnIGNlcnQgc3RvcmUuXG4iCisiXG4iCisic3RvcmVfbmFtZSBtYXkgYmUgb25lIG9mIFwnQ0FcJywgXCdST09UXCcgb3IgXCdNWVwnLiAgVGhlIHN5c3RlbSBtYXkgcHJvdmlkZVxuIgorIm1vcmUgY2VydCBzdG9yYWdlcywgdG9vLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBsaXN0IG9mIChieXRlcyxcbiIKKyJlbmNvZGluZ190eXBlLCB0cnVzdCkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWRcbiIKKyJ3aXRoIFg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIFRoZSB0cnVzdCBzZXR0aW5nIGlzIGVpdGhlclxuIgorImEgc2V0IG9mIE9JRHMgb3IgdGhlIGJvb2xlYW4gVHJ1ZS4iKTsKKworI2RlZmluZSBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRiAgICBcCisgICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0b3JlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX01TQ19WRVIpICovCisKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorCitQeURvY19TVFJWQVIoX3NzbF9lbnVtX2NybHNfX2RvY19fLAorImVudW1fY3JscygkbW9kdWxlLCAvLCBzdG9yZV9uYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmUgQ1JMcyBmcm9tIFdpbmRvd3NcJyBjZXJ0IHN0b3JlLlxuIgorIlxuIgorInN0b3JlX25hbWUgbWF5IGJlIG9uZSBvZiBcJ0NBXCcsIFwnUk9PVFwnIG9yIFwnTVlcJy4gIFRoZSBzeXN0ZW0gbWF5IHByb3ZpZGVcbiIKKyJtb3JlIGNlcnQgc3RvcmFnZXMsIHRvby4gIFRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiAoYnl0ZXMsXG4iCisiZW5jb2RpbmdfdHlwZSkgdHVwbGVzLiAgVGhlIGVuY29kaW5nX3R5cGUgZmxhZyBjYW4gYmUgaW50ZXJwcmV0ZWQgd2l0aFxuIgorIlg1MDlfQVNOX0VOQ09ESU5HIG9yIFBLQ1NfN19BU05fRU5DT0RJTkcuIik7CisKKyNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfZW51bV9jcmxzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX2VudW1fY3Jsc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9lbnVtX2NybHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RvcmVfbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc3NsX2VudW1fY3Jsc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoX01TQ19WRVIpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9OUE5fUFJPVE9DT0xfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX05QTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMU09DS0VUX1NFTEVDVEVEX0FMUE5fUFJPVE9DT0xfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfUkFORF9FR0RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9SQU5EX0VHRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfRU5VTV9DRVJUSUZJQ0FURVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9FTlVNX0NFUlRJRklDQVRFU19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE0OTk5Y2I1NjVhNjlhMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkxN2RlYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaApAQCAtMCwwICsxLDYyNCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V2YWxfX2RvY19fLAorImV2YWwoJHNlbGYsIHNjcmlwdCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVZBTF9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9ldmFsLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWwoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqc2NyaXB0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxfaW1wbChzZWxmLCBzY3JpcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9fZG9jX18sCisiZXZhbGZpbGUoJHNlbGYsIGZpbGVOYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FVkFMRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbGZpbGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXZhbGZpbGUsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXZhbGZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmZpbGVOYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V2YWxmaWxlKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmZpbGVOYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoc2VsZiwgZmlsZU5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9yZWNvcmRfX2RvY19fLAorInJlY29yZCgkc2VsZiwgc2NyaXB0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9SRUNPUkRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlY29yZCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9yZWNvcmQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfcmVjb3JkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqc2NyaXB0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX3JlY29yZChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzY3JpcHQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChzZWxmLCBzY3JpcHQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX19kb2NfXywKKyJhZGRlcnJpbmZvKCRzZWxmLCBtc2csIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0FEREVSUklORk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImFkZGVycmluZm8iLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfYWRkZXJyaW5mbywgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm1zZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm1zZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoc2VsZiwgbXNnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0aW50X19kb2NfXywKKyJnZXRpbnQoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfR0VUSU5UX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRpbnQiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0aW50LCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2dldGludF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlX19kb2NfXywKKyJnZXRkb3VibGUoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfR0VURE9VQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRkb3VibGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZ2V0ZG91YmxlLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2dldGRvdWJsZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbl9fZG9jX18sCisiZ2V0Ym9vbGVhbigkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9HRVRCT09MRUFOX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRib29sZWFuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2dldGJvb2xlYW4sIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZ2V0Ym9vbGVhbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19fZG9jX18sCisiZXhwcnN0cmluZygkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUlNUUklOR19NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcnN0cmluZyIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByc3RyaW5nKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChzZWxmLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfX2RvY19fLAorImV4cHJsb25nKCRzZWxmLCBzLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9FWFBSTE9OR19NRVRIT0RERUYgICAgXAorICAgIHsiZXhwcmxvbmciLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmxvbmcsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmxvbmcoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqczsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJsb25nX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfX2RvY19fLAorImV4cHJkb3VibGUoJHNlbGYsIHMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0VYUFJET1VCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cHJkb3VibGUiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZSwgTUVUSF9PLCBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZShUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJkb3VibGUiLCAmcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByZG91YmxlX2ltcGwoc2VsZiwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX19kb2NfXywKKyJleHByYm9vbGVhbigkc2VsZiwgcywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfRVhQUkJPT0xFQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImV4cHJib29sZWFuIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuLCBNRVRIX08sIF90a2ludGVyX3RrYXBwX2V4cHJib29sZWFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2V4cHJib29sZWFuKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKHNlbGYsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3RfX2RvY19fLAorInNwbGl0bGlzdCgkc2VsZiwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9TUExJVExJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0bGlzdCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9zcGxpdGxpc3QsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfc3BsaXRsaXN0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIGFyZywgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3NwbGl0LCBNRVRIX08sIF90a2ludGVyX3RrYXBwX3NwbGl0X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9jcmVhdGVjb21tYW5kX19kb2NfXywKKyJjcmVhdGVjb21tYW5kKCRzZWxmLCBuYW1lLCBmdW5jLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9DUkVBVEVDT01NQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVjb21tYW5kIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmQsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOmNyZWF0ZWNvbW1hbmQiLAorICAgICAgICAmbmFtZSwgJmZ1bmMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUsIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX19kb2NfXywKKyJkZWxldGVjb21tYW5kKCRzZWxmLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVDT01NQU5EX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxldGVjb21tYW5kIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmQsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmQoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpkZWxldGVjb21tYW5kIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfQ1JFQVRFRklMRUhBTkRMRVIpCisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9fZG9jX18sCisiY3JlYXRlZmlsZWhhbmRsZXIoJHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRiAgICBcCisgICAgeyJjcmVhdGVmaWxlaGFuZGxlciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXNrLCBQeU9iamVjdCAqZnVuYyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcihUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgaW50IG1hc2s7CisgICAgUHlPYmplY3QgKmZ1bmM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTzpjcmVhdGVmaWxlaGFuZGxlciIsCisgICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlZmlsZWhhbmRsZXJfaW1wbChzZWxmLCBmaWxlLCBtYXNrLCBmdW5jKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NSRUFURUZJTEVIQU5ETEVSKQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXJfX2RvY19fLAorImRlbGV0ZWZpbGVoYW5kbGVyKCRzZWxmLCBmaWxlLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsZXRlZmlsZWhhbmRsZXIiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXIsIE1FVEhfTywgX3RraW50ZXJfdGthcHBfZGVsZXRlZmlsZWhhbmRsZXJfX2RvY19ffSwKKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9DUkVBVEVGSUxFSEFORExFUikgKi8KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfX2RvY19fLAorImRlbGV0ZXRpbWVyaGFuZGxlcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtUSU1FUlRPS0VOX0RFTEVURVRJTUVSSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiZGVsZXRldGltZXJoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXIsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyKFRrdHRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrdGltZXJ0b2tlbl9kZWxldGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9fZG9jX18sCisiY3JlYXRldGltZXJoYW5kbGVyKCRzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURVRJTUVSSEFORExFUl9NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRldGltZXJoYW5kbGVyIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlciwgTUVUSF9WQVJBUkdTLCBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2NyZWF0ZXRpbWVyaGFuZGxlcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgbWlsbGlzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyKFRrYXBwT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWlsbGlzZWNvbmRzOworICAgIFB5T2JqZWN0ICpmdW5jOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjcmVhdGV0aW1lcmhhbmRsZXIiLAorICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9tYWlubG9vcF9fZG9jX18sCisibWFpbmxvb3AoJHNlbGYsIHRocmVzaG9sZD0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9NQUlOTE9PUF9NRVRIT0RERUYgICAgXAorICAgIHsibWFpbmxvb3AiLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfbWFpbmxvb3AsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGludCB0aHJlc2hvbGQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfbWFpbmxvb3AoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB0aHJlc2hvbGQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsCisgICAgICAgICZ0aHJlc2hvbGQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChzZWxmLCB0aHJlc2hvbGQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X19kb2NfXywKKyJkb29uZWV2ZW50KCRzZWxmLCBmbGFncz0wLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ET09ORUVWRU5UX01FVEhPRERFRiAgICBcCisgICAgeyJkb29uZWV2ZW50IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX2Rvb25lZXZlbnQsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfZG9vbmVldmVudChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZG9vbmVldmVudCIsCisgICAgICAgICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoc2VsZiwgZmxhZ3MpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF9xdWl0X19kb2NfXywKKyJxdWl0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9RVUlUX01FVEhPRERFRiAgICBcCisgICAgeyJxdWl0IiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX3RrYXBwX3F1aXQsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9xdWl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF9xdWl0X2ltcGwoVGthcHBPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfcXVpdChUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfcXVpdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9fZG9jX18sCisiaW50ZXJwYWRkcigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfSU5URVJQQUREUl9NRVRIT0RERUYgICAgXAorICAgIHsiaW50ZXJwYWRkciIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9pbnRlcnBhZGRyLCBNRVRIX05PQVJHUywgX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3RraW50ZXJfdGthcHBfaW50ZXJwYWRkcl9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2ludGVycGFkZHIoVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrYXBwX2ludGVycGFkZHJfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3RrYXBwX2xvYWR0a19fZG9jX18sCisibG9hZHRrKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9US0FQUF9MT0FEVEtfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvYWR0ayIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl90a2FwcF9sb2FkdGssIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl90a2FwcF9sb2FkdGtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2xvYWR0a19pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3RrYXBwX2xvYWR0ayhUa2FwcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3RraW50ZXJfdGthcHBfbG9hZHRrX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfX2RvY19fLAorIndpbGxkaXNwYXRjaCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1RLSU5URVJfVEtBUFBfV0lMTERJU1BBVENIX01FVEhPRERFRiAgICBcCisgICAgeyJ3aWxsZGlzcGF0Y2giLCAoUHlDRnVuY3Rpb24pX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoLCBNRVRIX05PQVJHUywgX3RraW50ZXJfdGthcHBfd2lsbGRpc3BhdGNoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2hfaW1wbChUa2FwcE9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl90a2FwcF93aWxsZGlzcGF0Y2goVGthcHBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3RraW50ZXJfX2ZsYXR0ZW5fX2RvY19fLAorIl9mbGF0dGVuKCRtb2R1bGUsIGl0ZW0sIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9US0lOVEVSX19GTEFUVEVOX01FVEhPRERFRiAgICBcCisgICAgeyJfZmxhdHRlbiIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9fZmxhdHRlbiwgTUVUSF9PLCBfdGtpbnRlcl9fZmxhdHRlbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3RraW50ZXJfY3JlYXRlX19kb2NfXywKKyJjcmVhdGUoJG1vZHVsZSwgc2NyZWVuTmFtZT1Ob25lLCBiYXNlTmFtZT1Ob25lLCBjbGFzc05hbWU9XCdUa1wnLFxuIgorIiAgICAgICBpbnRlcmFjdGl2ZT1GYWxzZSwgd2FudG9iamVjdHM9RmFsc2UsIHdhbnRUaz1UcnVlLCBzeW5jPUZhbHNlLFxuIgorIiAgICAgICB1c2U9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlxuIgorIlxuIgorIiAgd2FudFRrXG4iCisiICAgIGlmIGZhbHNlLCB0aGVuIFRrX0luaXQoKSBkb2VzblwndCBnZXQgY2FsbGVkXG4iCisiICBzeW5jXG4iCisiICAgIGlmIHRydWUsIHRoZW4gcGFzcyAtc3luYyB0byB3aXNoXG4iCisiICB1c2VcbiIKKyIgICAgaWYgbm90IE5vbmUsIHRoZW4gcGFzcyAtdXNlIHRvIHdpc2giKTsKKworI2RlZmluZSBfVEtJTlRFUl9DUkVBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZSIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9jcmVhdGUsIE1FVEhfVkFSQVJHUywgX3RraW50ZXJfY3JlYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9jcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICpzY3JlZW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYmFzZU5hbWUsIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbnRlcmFjdGl2ZSwgaW50IHdhbnRvYmplY3RzLCBpbnQgd2FudFRrLCBpbnQgc3luYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9jcmVhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqc2NyZWVuTmFtZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqYmFzZU5hbWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNsYXNzTmFtZSA9ICJUayI7CisgICAgaW50IGludGVyYWN0aXZlID0gMDsKKyAgICBpbnQgd2FudG9iamVjdHMgPSAwOworICAgIGludCB3YW50VGsgPSAxOworICAgIGludCBzeW5jID0gMDsKKyAgICBjb25zdCBjaGFyICp1c2UgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8enNzaWlpaXo6Y3JlYXRlIiwKKyAgICAgICAgJnNjcmVlbk5hbWUsICZiYXNlTmFtZSwgJmNsYXNzTmFtZSwgJmludGVyYWN0aXZlLCAmd2FudG9iamVjdHMsICZ3YW50VGssICZzeW5jLCAmdXNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX2NyZWF0ZV9pbXBsKG1vZHVsZSwgc2NyZWVuTmFtZSwgYmFzZU5hbWUsIGNsYXNzTmFtZSwgaW50ZXJhY3RpdmUsIHdhbnRvYmplY3RzLCB3YW50VGssIHN5bmMsIHVzZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19fLAorInNldGJ1c3l3YWl0aW50ZXJ2YWwoJG1vZHVsZSwgbmV3X3ZhbCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYnVzeS13YWl0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gVGNsX0RvT25lRXZlbnQgaW4gYSB0aHJlYWRlZCBQeXRob24gaW50ZXJwcmV0ZXIuXG4iCisiXG4iCisiSXQgc2hvdWxkIGJlIHNldCB0byBhIGRpdmlzb3Igb2YgdGhlIG1heGltdW0gdGltZSBiZXR3ZWVuIGZyYW1lcyBpbiBhbiBhbmltYXRpb24uIik7CisKKyNkZWZpbmUgX1RLSU5URVJfU0VUQlVTWVdBSVRJTlRFUlZBTF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0YnVzeXdhaXRpbnRlcnZhbCIsIChQeUNGdW5jdGlvbilfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsLCBNRVRIX08sIF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbmV3X3ZhbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IG5ld192YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUsIG5ld192YWwpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX19kb2NfXywKKyJnZXRidXN5d2FpdGludGVydmFsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgYnVzeS13YWl0IGludGVydmFsIGJldHdlZW4gc3VjY2Vzc2l2ZSBjYWxscyB0byBUY2xfRG9PbmVFdmVudCBpbiBhIHRocmVhZGVkIFB5dGhvbiBpbnRlcnByZXRlci4iKTsKKworI2RlZmluZSBfVEtJTlRFUl9HRVRCVVNZV0FJVElOVEVSVkFMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRidXN5d2FpdGludGVydmFsIiwgKFB5Q0Z1bmN0aW9uKV90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwsIE1FVEhfTk9BUkdTLCBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9nZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9DUkVBVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0NSRUFURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZGQ2NjdiOTFjZjhhZGRkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaCBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2M3MDFjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19fLAorImdldHdlYWtyZWZjb3VudCgkbW9kdWxlLCBvYmplY3QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gXCdvYmplY3RcJy4iKTsKKworI2RlZmluZSBfV0VBS1JFRl9HRVRXRUFLUkVGQ09VTlRfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHdlYWtyZWZjb3VudCIsIChQeUNGdW5jdGlvbilfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnQsIE1FVEhfTywgX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193ZWFrcmVmX2dldHdlYWtyZWZjb3VudChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqZWN0KQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfaW1wbChtb2R1bGUsIG9iamVjdCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGRhOWFhZGU2M2VlZDc3ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaCBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NTE4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaApAQCAtMCwwICsxLDg1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X19kb2NfXywKKyJHZXRPdmVybGFwcGVkUmVzdWx0KCRzZWxmLCB3YWl0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX09WRVJMQVBQRURfR0VUT1ZFUkxBUFBFRFJFU1VMVF9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdCwgTUVUSF9PLCBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfaW1wbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBpbnQgd2FpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB3YWl0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJwOkdldE92ZXJsYXBwZWRSZXN1bHQiLCAmd2FpdCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX092ZXJsYXBwZWRfR2V0T3ZlcmxhcHBlZFJlc3VsdF9pbXBsKHNlbGYsIHdhaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX19kb2NfXywKKyJnZXRidWZmZXIoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9HRVRCVUZGRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGJ1ZmZlciIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcl9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2dldGJ1ZmZlcihPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfd2luYXBpX092ZXJsYXBwZWRfZ2V0YnVmZmVyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX19kb2NfXywKKyJjYW5jZWwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfT1ZFUkxBUFBFRF9DQU5DRUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbilfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbF9pbXBsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9PdmVybGFwcGVkX2NhbmNlbChPdmVybGFwcGVkT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfd2luYXBpX092ZXJsYXBwZWRfY2FuY2VsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0Nsb3NlSGFuZGxlX19kb2NfXywKKyJDbG9zZUhhbmRsZSgkbW9kdWxlLCBoYW5kbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSBoYW5kbGUuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DTE9TRUhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ2xvc2VIYW5kbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DbG9zZUhhbmRsZSwgTUVUSF9PLCBfd2luYXBpX0Nsb3NlSGFuZGxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nsb3NlSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0Nsb3NlSGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19fLAorIkNvbm5lY3ROYW1lZFBpcGUoJG1vZHVsZSwgLywgaGFuZGxlLCBvdmVybGFwcGVkPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NPTk5FQ1ROQU1FRFBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ29ubmVjdE5hbWVkUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCB1c2Vfb3ZlcmxhcHBlZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlRmlsZV9fZG9jX18sCisiQ3JlYXRlRmlsZSgkbW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLFxuIgorIiAgICAgICAgICAgc2VjdXJpdHlfYXR0cmlidXRlcywgY3JlYXRpb25fZGlzcG9zaXRpb24sXG4iCisiICAgICAgICAgICBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZUZpbGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgTFBDVFNUUiBmaWxlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgRFdPUkQgc2hhcmVfbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBmbGFnc19hbmRfYXR0cmlidXRlcywgSEFORExFIHRlbXBsYXRlX2ZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVGaWxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgZmlsZV9uYW1lOworICAgIERXT1JEIGRlc2lyZWRfYWNjZXNzOworICAgIERXT1JEIHNoYXJlX21vZGU7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIHNlY3VyaXR5X2F0dHJpYnV0ZXM7CisgICAgRFdPUkQgY3JlYXRpb25fZGlzcG9zaXRpb247CisgICAgRFdPUkQgZmxhZ3NfYW5kX2F0dHJpYnV0ZXM7CisgICAgSEFORExFIHRlbXBsYXRlX2ZpbGU7CisgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrayIgRl9QT0lOVEVSICJrayIgRl9IQU5ETEUgIjpDcmVhdGVGaWxlIiwKKyAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVGaWxlX2ltcGwobW9kdWxlLCBmaWxlX25hbWUsIGRlc2lyZWRfYWNjZXNzLCBzaGFyZV9tb2RlLCBzZWN1cml0eV9hdHRyaWJ1dGVzLCBjcmVhdGlvbl9kaXNwb3NpdGlvbiwgZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsIHRlbXBsYXRlX2ZpbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9fZG9jX18sCisiQ3JlYXRlSnVuY3Rpb24oJG1vZHVsZSwgc3JjX3BhdGgsIGRzdF9wYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURUpVTkNUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVKdW5jdGlvbiIsIChQeUNGdW5jdGlvbilfd2luYXBpX0NyZWF0ZUp1bmN0aW9uLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlSnVuY3Rpb25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUFdTVFIgc3JjX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGRzdF9wYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlSnVuY3Rpb24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgTFBXU1RSIHNyY19wYXRoOworICAgIExQV1NUUiBkc3RfcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXU6Q3JlYXRlSnVuY3Rpb24iLAorICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUp1bmN0aW9uX2ltcGwobW9kdWxlLCBzcmNfcGF0aCwgZHN0X3BhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9fZG9jX18sCisiQ3JlYXRlTmFtZWRQaXBlKCRtb2R1bGUsIG5hbWUsIG9wZW5fbW9kZSwgcGlwZV9tb2RlLCBtYXhfaW5zdGFuY2VzLFxuIgorIiAgICAgICAgICAgICAgICBvdXRfYnVmZmVyX3NpemUsIGluX2J1ZmZlcl9zaXplLCBkZWZhdWx0X3RpbWVvdXQsXG4iCisiICAgICAgICAgICAgICAgIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfQ1JFQVRFTkFNRURQSVBFX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVOYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG9wZW5fbW9kZSwgRFdPUkQgcGlwZV9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtYXhfaW5zdGFuY2VzLCBEV09SRCBvdXRfYnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGluX2J1ZmZlcl9zaXplLCBEV09SRCBkZWZhdWx0X3RpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBzZWN1cml0eV9hdHRyaWJ1dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlTmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgbmFtZTsKKyAgICBEV09SRCBvcGVuX21vZGU7CisgICAgRFdPUkQgcGlwZV9tb2RlOworICAgIERXT1JEIG1heF9pbnN0YW5jZXM7CisgICAgRFdPUkQgb3V0X2J1ZmZlcl9zaXplOworICAgIERXT1JEIGluX2J1ZmZlcl9zaXplOworICAgIERXT1JEIGRlZmF1bHRfdGltZW91dDsKKyAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgc2VjdXJpdHlfYXR0cmlidXRlczsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2tra2trayIgRl9QT0lOVEVSICI6Q3JlYXRlTmFtZWRQaXBlIiwKKyAgICAgICAgJm5hbWUsICZvcGVuX21vZGUsICZwaXBlX21vZGUsICZtYXhfaW5zdGFuY2VzLCAmb3V0X2J1ZmZlcl9zaXplLCAmaW5fYnVmZmVyX3NpemUsICZkZWZhdWx0X3RpbWVvdXQsICZzZWN1cml0eV9hdHRyaWJ1dGVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsIG1heF9pbnN0YW5jZXMsIG91dF9idWZmZXJfc2l6ZSwgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCwgc2VjdXJpdHlfYXR0cmlidXRlcyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0NyZWF0ZVBpcGVfX2RvY19fLAorIkNyZWF0ZVBpcGUoJG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZS5cbiIKKyJcbiIKKyIgIHBpcGVfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgMi10dXBsZSBvZiBoYW5kbGVzLCB0byB0aGUgcmVhZCBhbmQgd3JpdGUgZW5kcyBvZiB0aGUgcGlwZS4iKTsKKworI2RlZmluZSBfV0lOQVBJX0NSRUFURVBJUEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkNyZWF0ZVBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9DcmVhdGVQaXBlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfQ3JlYXRlUGlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBpcGVfYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGlwZV9hdHRyczsKKyAgICBEV09SRCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPazpDcmVhdGVQaXBlIiwKKyAgICAgICAgJnBpcGVfYXR0cnMsICZzaXplKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUGlwZV9pbXBsKG1vZHVsZSwgcGlwZV9hdHRycywgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19fZG9jX18sCisiQ3JlYXRlUHJvY2VzcygkbW9kdWxlLCBhcHBsaWNhdGlvbl9uYW1lLCBjb21tYW5kX2xpbmUsIHByb2NfYXR0cnMsXG4iCisiICAgICAgICAgICAgICB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsXG4iCisiICAgICAgICAgICAgICBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbywgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuXG4iCisiXG4iCisiICBwcm9jX2F0dHJzXG4iCisiICAgIElnbm9yZWQgaW50ZXJuYWxseSwgY2FuIGJlIE5vbmUuXG4iCisiICB0aHJlYWRfYXR0cnNcbiIKKyIgICAgSWdub3JlZCBpbnRlcm5hbGx5LCBjYW4gYmUgTm9uZS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuIgorInByb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9DUkVBVEVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKmFwcGxpY2F0aW9uX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpjb21tYW5kX2xpbmUsIFB5T2JqZWN0ICpwcm9jX2F0dHJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRocmVhZF9hdHRycywgQk9PTCBpbmhlcml0X2hhbmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBjcmVhdGlvbl9mbGFncywgUHlPYmplY3QgKmVudl9tYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqY3VycmVudF9kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfQ3JlYXRlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9VTklDT0RFICphcHBsaWNhdGlvbl9uYW1lOworICAgIFB5X1VOSUNPREUgKmNvbW1hbmRfbGluZTsKKyAgICBQeU9iamVjdCAqcHJvY19hdHRyczsKKyAgICBQeU9iamVjdCAqdGhyZWFkX2F0dHJzOworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOworICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOworICAgIFB5T2JqZWN0ICplbnZfbWFwcGluZzsKKyAgICBQeV9VTklDT0RFICpjdXJyZW50X2RpcmVjdG9yeTsKKyAgICBQeU9iamVjdCAqc3RhcnR1cF9pbmZvOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaWk9PaWtPWk86Q3JlYXRlUHJvY2VzcyIsCisgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLCAmY29tbWFuZF9saW5lLCAmcHJvY19hdHRycywgJnRocmVhZF9hdHRycywgJmluaGVyaXRfaGFuZGxlcywgJmNyZWF0aW9uX2ZsYWdzLCAmZW52X21hcHBpbmcsICZjdXJyZW50X2RpcmVjdG9yeSwgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGFwcGxpY2F0aW9uX25hbWUsIGNvbW1hbmRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLCBpbmhlcml0X2hhbmRsZXMsIGNyZWF0aW9uX2ZsYWdzLCBlbnZfbWFwcGluZywgY3VycmVudF9kaXJlY3RvcnksIHN0YXJ0dXBfaW5mbyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX19kb2NfXywKKyJEdXBsaWNhdGVIYW5kbGUoJG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuIgorIiAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSxcbiIKKyIgICAgICAgICAgICAgICAgb3B0aW9ucz0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG4iCisiXG4iCisiVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcbiIKKyJoYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG4iCisidGhyb3VnaCBib3RoIGhhbmRsZXMuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9EVVBMSUNBVEVIQU5ETEVfTUVUSE9EREVGICAgIFwKKyAgICB7IkR1cGxpY2F0ZUhhbmRsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLCBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgSEFORExFCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBkZXNpcmVkX2FjY2VzcywgQk9PTCBpbmhlcml0X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOworICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOworICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBvcHRpb25zID0gMDsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAia2l8azpEdXBsaWNhdGVIYW5kbGUiLAorICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0R1cGxpY2F0ZUhhbmRsZV9pbXBsKG1vZHVsZSwgc291cmNlX3Byb2Nlc3NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLCB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgb3B0aW9ucyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX0V4aXRQcm9jZXNzX19kb2NfXywKKyJFeGl0UHJvY2VzcygkbW9kdWxlLCBFeGl0Q29kZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9FWElUUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiRXhpdFByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9FeGl0UHJvY2VzcywgTUVUSF9PLCBfd2luYXBpX0V4aXRQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgVUlOVCBFeGl0Q29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0V4aXRQcm9jZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgVUlOVCBFeGl0Q29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwobW9kdWxlLCBFeGl0Q29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfX2RvY19fLAorIkdldEN1cnJlbnRQcm9jZXNzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUQ1VSUkVOVFBST0NFU1NfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MsIE1FVEhfTk9BUkdTLCBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0Q3VycmVudFByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX19kb2NfXywKKyJHZXRFeGl0Q29kZVByb2Nlc3MoJG1vZHVsZSwgcHJvY2VzcywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX0dFVEVYSVRDT0RFUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiR2V0RXhpdENvZGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX08sIF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgcHJvY2Vzcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldEV4aXRDb2RlUHJvY2VzcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChtb2R1bGUsIHByb2Nlc3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfR2V0TGFzdEVycm9yX19kb2NfXywKKyJHZXRMYXN0RXJyb3IoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRMQVNURVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldExhc3RFcnJvciIsIChQeUNGdW5jdGlvbilfd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0TGFzdEVycm9yX19kb2NfX30sCisKK3N0YXRpYyBEV09SRAorX3dpbmFwaV9HZXRMYXN0RXJyb3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0TGFzdEVycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKKworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldExhc3RFcnJvcl9pbXBsKG1vZHVsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9fZG9jX18sCisiR2V0TW9kdWxlRmlsZU5hbWUoJG1vZHVsZSwgbW9kdWxlX2hhbmRsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgbW9kdWxlLlxuIgorIlxuIgorIlRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZSBjdXJyZW50IHByb2Nlc3MuXG4iCisiXG4iCisiVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG4iCisid2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsXG4iCisiR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcbiIKKyJvZiB0aGUgY3VycmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUTU9EVUxFRklMRU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7IkdldE1vZHVsZUZpbGVOYW1lIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWUsIE1FVEhfTywgX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhNT0RVTEUgbW9kdWxlX2hhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSE1PRFVMRSBtb2R1bGVfaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0TW9kdWxlRmlsZU5hbWUiLCAmbW9kdWxlX2hhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldE1vZHVsZUZpbGVOYW1lX2ltcGwobW9kdWxlLCBtb2R1bGVfaGFuZGxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRTdGRIYW5kbGVfX2RvY19fLAorIkdldFN0ZEhhbmRsZSgkbW9kdWxlLCBzdGRfaGFuZGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlLlxuIgorIlxuIgorIiAgc3RkX2hhbmRsZVxuIgorIiAgICBPbmUgb2YgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIG9yIFNURF9FUlJPUl9IQU5ETEUuXG4iCisiXG4iCisiVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9XSU5BUElfR0VUU1RESEFORExFX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRTdGRIYW5kbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9HZXRTdGRIYW5kbGUsIE1FVEhfTywgX3dpbmFwaV9HZXRTdGRIYW5kbGVfX2RvY19ffSwKKworc3RhdGljIEhBTkRMRQorX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBzdGRfaGFuZGxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfR2V0U3RkSGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgc3RkX2hhbmRsZTsKKyAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChtb2R1bGUsIHN0ZF9oYW5kbGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9HZXRWZXJzaW9uX19kb2NfXywKKyJHZXRWZXJzaW9uKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0uIik7CisKKyNkZWZpbmUgX1dJTkFQSV9HRVRWRVJTSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJHZXRWZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9OT0FSR1MsIF93aW5hcGlfR2V0VmVyc2lvbl9fZG9jX199LAorCitzdGF0aWMgbG9uZworX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX0dldFZlcnNpb24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwobW9kdWxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfT3BlblByb2Nlc3NfX2RvY19fLAorIk9wZW5Qcm9jZXNzKCRtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9PUEVOUFJPQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiT3BlblByb2Nlc3MiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX09wZW5Qcm9jZXNzX19kb2NfX30sCisKK3N0YXRpYyBIQU5ETEUKK193aW5hcGlfT3BlblByb2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBEV09SRCBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBCT09MIGluaGVyaXRfaGFuZGxlLCBEV09SRCBwcm9jZXNzX2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfT3BlblByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBwcm9jZXNzX2lkOworICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJraWs6T3BlblByb2Nlc3MiLAorICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJnByb2Nlc3NfaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfT3BlblByb2Nlc3NfaW1wbChtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1BlZWtOYW1lZFBpcGVfX2RvY19fLAorIlBlZWtOYW1lZFBpcGUoJG1vZHVsZSwgaGFuZGxlLCBzaXplPTAsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfUEVFS05BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiUGVla05hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9QZWVrTmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1BlZWtOYW1lZFBpcGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgc2l6ZSA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgInxpOlBlZWtOYW1lZFBpcGUiLAorICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfUmVhZEZpbGVfX2RvY19fLAorIlJlYWRGaWxlKCRtb2R1bGUsIC8sIGhhbmRsZSwgc2l6ZSwgb3ZlcmxhcHBlZD1GYWxzZSlcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9SRUFERklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfUmVhZEZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfUmVhZEZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9SZWFkRmlsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplOworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9SZWFkRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBzaXplLCB1c2Vfb3ZlcmxhcHBlZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfX2RvY19fLAorIlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKCRtb2R1bGUsIG5hbWVkX3BpcGUsIG1vZGUsXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2NvbGxlY3Rpb25fY291bnQsIGNvbGxlY3RfZGF0YV90aW1lb3V0LCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfV0lOQVBJX1NFVE5BTUVEUElQRUhBTkRMRVNUQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlLCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgbmFtZWRfcGlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWF4X2NvbGxlY3Rpb25fY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbGxlY3RfZGF0YV90aW1lb3V0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIG5hbWVkX3BpcGU7CisgICAgUHlPYmplY3QgKm1vZGU7CisgICAgUHlPYmplY3QgKm1heF9jb2xsZWN0aW9uX2NvdW50OworICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiT09POlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwKKyAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlX2ltcGwobW9kdWxlLCBuYW1lZF9waXBlLCBtb2RlLCBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfX2RvY19fLAorIlRlcm1pbmF0ZVByb2Nlc3MoJG1vZHVsZSwgaGFuZGxlLCBleGl0X2NvZGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUZXJtaW5hdGUgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIHRocmVhZHMuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9URVJNSU5BVEVQUk9DRVNTX01FVEhPRERFRiAgICBcCisgICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UIGV4aXRfY29kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBVSU5UIGV4aXRfY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiSTpUZXJtaW5hdGVQcm9jZXNzIiwKKyAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGhhbmRsZSwgZXhpdF9jb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0TmFtZWRQaXBlX19kb2NfXywKKyJXYWl0TmFtZWRQaXBlKCRtb2R1bGUsIG5hbWUsIHRpbWVvdXQsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfV0FJVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsiV2FpdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dhaXROYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywgX3dpbmFwaV9XYWl0TmFtZWRQaXBlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXROYW1lZFBpcGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBMUENUU1RSIG5hbWUsIERXT1JEIHRpbWVvdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0TmFtZWRQaXBlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIExQQ1RTVFIgbmFtZTsKKyAgICBEV09SRCB0aW1lb3V0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzazpXYWl0TmFtZWRQaXBlIiwKKyAgICAgICAgJm5hbWUsICZ0aW1lb3V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgdGltZW91dCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19fZG9jX18sCisiV2FpdEZvck11bHRpcGxlT2JqZWN0cygkbW9kdWxlLCBoYW5kbGVfc2VxLCB3YWl0X2ZsYWcsXG4iCisiICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM9X3dpbmFwaS5JTkZJTklURSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1dJTkFQSV9XQUlURk9STVVMVElQTEVPQkpFQ1RTX01FVEhPRERFRiAgICBcCisgICAgeyJXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLCBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK193aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaGFuZGxlX3NlcSwgQk9PTCB3YWl0X2ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBtaWxsaXNlY29uZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOworICAgIEJPT0wgd2FpdF9mbGFnOworICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaXxrOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAorICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JNdWx0aXBsZU9iamVjdHNfaW1wbChtb2R1bGUsIGhhbmRsZV9zZXEsIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X19kb2NfXywKKyJXYWl0Rm9yU2luZ2xlT2JqZWN0KCRtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgYSBzaW5nbGUgb2JqZWN0LlxuIgorIlxuIgorIldhaXQgdW50aWwgdGhlIHNwZWNpZmllZCBvYmplY3QgaXMgaW4gdGhlIHNpZ25hbGVkIHN0YXRlIG9yXG4iCisidGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuIgorImluIG1pbGxpc2Vjb25kcy4iKTsKKworI2RlZmluZSBfV0lOQVBJX1dBSVRGT1JTSU5HTEVPQkpFQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7IldhaXRGb3JTaW5nbGVPYmplY3QiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0LCBNRVRIX1ZBUkFSR1MsIF93aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9fZG9jX199LAorCitzdGF0aWMgbG9uZworX3dpbmFwaV9XYWl0Rm9yU2luZ2xlT2JqZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG1pbGxpc2Vjb25kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBEV09SRCBtaWxsaXNlY29uZHM7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJrOldhaXRGb3JTaW5nbGVPYmplY3QiLAorICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF93aW5hcGlfV3JpdGVGaWxlX19kb2NfXywKKyJXcml0ZUZpbGUoJG1vZHVsZSwgLywgaGFuZGxlLCBidWZmZXIsIG92ZXJsYXBwZWQ9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3dpbmFwaV9Xcml0ZUZpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIFB5T2JqZWN0ICpidWZmZXI7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsCisgICAgICAgICZoYW5kbGUsICZidWZmZXIsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dyaXRlRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBidWZmZXIsIHVzZV9vdmVybGFwcGVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4NzcxYzY1ODQwNTZkMTkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjI0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKQEAgLTAsMCArMSw0OTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX2NvcHlfX19fZG9jX18sCisiX19jb3B5X18oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX0NPUFlfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb3B5X18iLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfX19jb3B5X18sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9fX2NvcHlfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX2NvcHlfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19jb3B5X19faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X19fZGVlcGNvcHlfX19fZG9jX18sCisiX19kZWVwY29weV9fKCRzZWxmLCB1bnVzZWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX2RlZXBjb3B5X18sIE1FVEhfTywgYXJyYXlfYXJyYXlfX19kZWVwY29weV9fX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9jb3VudF9fZG9jX18sCisiY291bnQoJHNlbGYsIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHYgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0NPVU5UX01FVEhPRERFRiAgICBcCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9jb3VudCwgTUVUSF9PLCBhcnJheV9hcnJheV9jb3VudF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfaW5kZXhfX2RvY19fLAorImluZGV4KCRzZWxmLCB2LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGluZGV4IG9mIGZpcnN0IG9jY3VycmVuY2Ugb2YgdiBpbiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfSU5ERVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2luZGV4LCBNRVRIX08sIGFycmF5X2FycmF5X2luZGV4X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2IGluIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9SRU1PVkVfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbW92ZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9yZW1vdmUsIE1FVEhfTywgYXJyYXlfYXJyYXlfcmVtb3ZlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9wb3BfX2RvY19fLAorInBvcCgkc2VsZiwgaT0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaS10aCBlbGVtZW50IGFuZCBkZWxldGUgaXQgZnJvbSB0aGUgYXJyYXkuXG4iCisiXG4iCisiaSBkZWZhdWx0cyB0byAtMS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9QT1BfTUVUSE9EREVGICAgIFwKKyAgICB7InBvcCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9wb3AsIE1FVEhfVkFSQVJHUywgYXJyYXlfYXJyYXlfcG9wX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9wb3BfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3BvcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCisgICAgICAgICZpKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X3BvcF9pbXBsKHNlbGYsIGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9leHRlbmRfX2RvY19fLAorImV4dGVuZCgkc2VsZiwgYmIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgaXRlbXMgdG8gdGhlIGVuZCBvZiB0aGUgYXJyYXkuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfRVhURU5EX01FVEhPRERFRiAgICBcCisgICAgeyJleHRlbmQiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZXh0ZW5kLCBNRVRIX08sIGFycmF5X2FycmF5X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfaW5zZXJ0X19kb2NfXywKKyJpbnNlcnQoJHNlbGYsIGksIHYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbnNlcnQgYSBuZXcgaXRlbSB2IGludG8gdGhlIGFycmF5IGJlZm9yZSBwb3NpdGlvbiBpLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2luc2VydCwgTUVUSF9WQVJBUkdTLCBhcnJheV9hcnJheV9pbnNlcnRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2luc2VydF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2luc2VydChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICp2OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLAorICAgICAgICAmaSwgJnYpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaSwgdik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X2J1ZmZlcl9pbmZvX19kb2NfXywKKyJidWZmZXJfaW5mbygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIChhZGRyZXNzLCBsZW5ndGgpIGdpdmluZyB0aGUgY3VycmVudCBtZW1vcnkgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBpbiBpdGVtcyBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBhcnJheVwncyBjb250ZW50cy5cbiIKKyJcbiIKKyJUaGUgbGVuZ3RoIHNob3VsZCBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBpdGVtc2l6ZSBhdHRyaWJ1dGUgdG8gY2FsY3VsYXRlXG4iCisidGhlIGJ1ZmZlciBsZW5ndGggaW4gYnl0ZXMuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfQlVGRkVSX0lORk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImJ1ZmZlcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X2J1ZmZlcl9pbmZvLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfYnVmZmVyX2luZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnVmZmVyX2luZm8oYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X2J1ZmZlcl9pbmZvX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9hcHBlbmRfX2RvY19fLAorImFwcGVuZCgkc2VsZiwgdiwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZCBuZXcgdmFsdWUgdiB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9BUFBFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9hcHBlbmQsIE1FVEhfTywgYXJyYXlfYXJyYXlfYXBwZW5kX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9ieXRlc3dhcF9fZG9jX18sCisiYnl0ZXN3YXAoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJCeXRlc3dhcCBhbGwgaXRlbXMgb2YgdGhlIGFycmF5LlxuIgorIlxuIgorIklmIHRoZSBpdGVtcyBpbiB0aGUgYXJyYXkgYXJlIG5vdCAxLCAyLCA0LCBvciA4IGJ5dGVzIGluIHNpemUsIFJ1bnRpbWVFcnJvciBpc1xuIgorInJhaXNlZC4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9CWVRFU1dBUF9NRVRIT0RERUYgICAgXAorICAgIHsiYnl0ZXN3YXAiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfYnl0ZXN3YXAsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9ieXRlc3dhcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfYnl0ZXN3YXBfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9ieXRlc3dhcChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfYnl0ZXN3YXBfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3JldmVyc2VfX2RvY19fLAorInJldmVyc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX1JFVkVSU0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJldmVyc2UiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5X3JldmVyc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3JldmVyc2VfaW1wbChhcnJheW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9yZXZlcnNlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBhcnJheV9hcnJheV9yZXZlcnNlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tZmlsZV9fZG9jX18sCisiZnJvbWZpbGUoJHNlbGYsIGYsIG4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIG4gb2JqZWN0cyBmcm9tIHRoZSBmaWxlIG9iamVjdCBmIGFuZCBhcHBlbmQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NRklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWZpbGUiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbWZpbGUsIE1FVEhfVkFSQVJHUywgYXJyYXlfYXJyYXlfZnJvbWZpbGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21maWxlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmLCBQeV9zc2l6ZV90IG4pOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWZpbGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmOworICAgIFB5X3NzaXplX3QgbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT246ZnJvbWZpbGUiLAorICAgICAgICAmZiwgJm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWZpbGVfaW1wbChzZWxmLCBmLCBuKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9maWxlX19kb2NfXywKKyJ0b2ZpbGUoJHNlbGYsIGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBhbGwgaXRlbXMgKGFzIG1hY2hpbmUgdmFsdWVzKSB0byB0aGUgZmlsZSBvYmplY3QgZi4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0ZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRvZmlsZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2ZpbGUsIE1FVEhfTywgYXJyYXlfYXJyYXlfdG9maWxlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tbGlzdF9fZG9jX18sCisiZnJvbWxpc3QoJHNlbGYsIGxpc3QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgaXRlbXMgdG8gYXJyYXkgZnJvbSBsaXN0LiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01MSVNUX01FVEhPRERFRiAgICBcCisgICAgeyJmcm9tbGlzdCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tbGlzdCwgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tbGlzdF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfdG9saXN0X19kb2NfXywKKyJ0b2xpc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGFycmF5IHRvIGFuIG9yZGluYXJ5IGxpc3Qgd2l0aCB0aGUgc2FtZSBpdGVtcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT0xJU1RfTUVUSE9EREVGICAgIFwKKyAgICB7InRvbGlzdCIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2xpc3QsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b2xpc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvbGlzdF9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvbGlzdChhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG9saXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tc3RyaW5nX19kb2NfXywKKyJmcm9tc3RyaW5nKCRzZWxmLCBidWZmZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmRzIGl0ZW1zIGZyb20gdGhlIHN0cmluZywgaW50ZXJwcmV0aW5nIGl0IGFzIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzLCBhcyBpZiBpdCBoYWQgYmVlbiByZWFkIGZyb20gYSBmaWxlIHVzaW5nIHRoZSBmcm9tZmlsZSgpIG1ldGhvZCkuXG4iCisiXG4iCisiVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIGZyb21ieXRlcyBpbnN0ZWFkLiIpOworCisjZGVmaW5lIEFSUkFZX0FSUkFZX0ZST01TVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21zdHJpbmciLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbXN0cmluZywgTUVUSF9PLCBhcnJheV9hcnJheV9mcm9tc3RyaW5nX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb21zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyo6ZnJvbXN0cmluZyIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXN0cmluZ19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX19kb2NfXywKKyJmcm9tYnl0ZXMoJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIkFwcGVuZHMgaXRlbXMgZnJvbSB0aGUgc3RyaW5nLCBpbnRlcnByZXRpbmcgaXQgYXMgYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMsIGFzIGlmIGl0IGhhZCBiZWVuIHJlYWQgZnJvbSBhIGZpbGUgdXNpbmcgdGhlIGZyb21maWxlKCkgbWV0aG9kKS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NQllURVNfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21ieXRlcyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9mcm9tYnl0ZXMsIE1FVEhfTywgYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChhcnJheW9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbWJ5dGVzKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbWJ5dGVzX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV90b2J5dGVzX19kb2NfXywKKyJ0b2J5dGVzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCB0aGUgYXJyYXkgdG8gYW4gYXJyYXkgb2YgbWFjaGluZSB2YWx1ZXMgYW5kIHJldHVybiB0aGUgYnl0ZXMgcmVwcmVzZW50YXRpb24uIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfVE9CWVRFU19NRVRIT0RERUYgICAgXAorICAgIHsidG9ieXRlcyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b2J5dGVzLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfdG9ieXRlc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9ieXRlc19pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvYnl0ZXMoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3RvYnl0ZXNfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3Rvc3RyaW5nX19kb2NfXywKKyJ0b3N0cmluZygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnQgdGhlIGFycmF5IHRvIGFuIGFycmF5IG9mIG1hY2hpbmUgdmFsdWVzIGFuZCByZXR1cm4gdGhlIGJ5dGVzIHJlcHJlc2VudGF0aW9uLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSB0b2J5dGVzIGluc3RlYWQuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfVE9TVFJJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7InRvc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X3Rvc3RyaW5nLCBNRVRIX05PQVJHUywgYXJyYXlfYXJyYXlfdG9zdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3Rvc3RyaW5nX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfdG9zdHJpbmcoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5X3Rvc3RyaW5nX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9mcm9tdW5pY29kZV9fZG9jX18sCisiZnJvbXVuaWNvZGUoJHNlbGYsIHVzdHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRlbmRzIHRoaXMgYXJyYXkgd2l0aCBkYXRhIGZyb20gdGhlIHVuaWNvZGUgc3RyaW5nIHVzdHIuXG4iCisiXG4iCisiVGhlIGFycmF5IG11c3QgYmUgYSB1bmljb2RlIHR5cGUgYXJyYXk7IG90aGVyd2lzZSBhIFZhbHVlRXJyb3IgaXMgcmFpc2VkLlxuIgorIlVzZSBhcnJheS5mcm9tYnl0ZXModXN0ci5lbmNvZGUoLi4uKSkgdG8gYXBwZW5kIFVuaWNvZGUgZGF0YSB0byBhbiBhcnJheSBvZlxuIgorInNvbWUgb3RoZXIgdHlwZS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9GUk9NVU5JQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbXVuaWNvZGUiLCAoUHlDRnVuY3Rpb24pYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGUsIE1FVEhfTywgYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X2Zyb211bmljb2RlX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYsIFB5X1VOSUNPREUgKnVzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgdXN0cl9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGUoYXJyYXlvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqdXN0cjsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IHVzdHJfbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfZnJvbXVuaWNvZGVfaW1wbChzZWxmLCB1c3RyLCB1c3RyX2xlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5X3RvdW5pY29kZV9fZG9jX18sCisidG91bmljb2RlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXh0ZW5kcyB0aGlzIGFycmF5IHdpdGggZGF0YSBmcm9tIHRoZSB1bmljb2RlIHN0cmluZyB1c3RyLlxuIgorIlxuIgorIkNvbnZlcnQgdGhlIGFycmF5IHRvIGEgdW5pY29kZSBzdHJpbmcuICBUaGUgYXJyYXkgbXVzdCBiZSBhIHVuaWNvZGUgdHlwZSBhcnJheTtcbiIKKyJvdGhlcndpc2UgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gIFVzZSBhcnJheS50b2J5dGVzKCkuZGVjb2RlKCkgdG8gb2J0YWluIGFcbiIKKyJ1bmljb2RlIHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIHNvbWUgb3RoZXIgdHlwZS4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9UT1VOSUNPREVfTUVUSE9EREVGICAgIFwKKyAgICB7InRvdW5pY29kZSIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV90b3VuaWNvZGUsIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV90b3VuaWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvdW5pY29kZV9pbXBsKGFycmF5b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5X3RvdW5pY29kZShhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfdG91bmljb2RlX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX3NpemVvZl9fX19kb2NfXywKKyJfX3NpemVvZl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2l6ZSBvZiB0aGUgYXJyYXkgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBBUlJBWV9BUlJBWV9fX1NJWkVPRl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5X19fc2l6ZW9mX18sIE1FVEhfTk9BUkdTLCBhcnJheV9hcnJheV9fX3NpemVvZl9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCithcnJheV9hcnJheV9fX3NpemVvZl9fX2ltcGwoYXJyYXlvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlfX19zaXplb2ZfXyhhcnJheW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYXJyYXlfYXJyYXlfX19zaXplb2ZfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfX2RvY19fLAorIl9hcnJheV9yZWNvbnN0cnVjdG9yKCRtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMsXG4iCisiICAgICAgICAgICAgICAgICAgICAgLylcbiIKKyItLVxuIgorIlxuIgorIkludGVybmFsLiBVc2VkIGZvciBwaWNrbGluZyBzdXBwb3J0LiIpOworCisjZGVmaW5lIEFSUkFZX19BUlJBWV9SRUNPTlNUUlVDVE9SX01FVEhPRERFRiAgICBcCisgICAgeyJfYXJyYXlfcmVjb25zdHJ1Y3RvciIsIChQeUNGdW5jdGlvbilhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3RvciwgTUVUSF9WQVJBUkdTLCBhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeVR5cGVPYmplY3QgKmFycmF5dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUgbWZvcm1hdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlUeXBlT2JqZWN0ICphcnJheXR5cGU7CisgICAgaW50IHR5cGVjb2RlOworICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CisgICAgUHlPYmplY3QgKml0ZW1zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOl9hcnJheV9yZWNvbnN0cnVjdG9yIiwKKyAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihhcnJheV9hcnJheV9fX3JlZHVjZV9leF9fX19kb2NfXywKKyJfX3JlZHVjZV9leF9fKCRzZWxmLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlfX19SRURVQ0VfRVhfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheV9fX3JlZHVjZV9leF9fLCBNRVRIX08sIGFycmF5X2FycmF5X19fcmVkdWNlX2V4X19fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19fZG9jX18sCisiX19yZWR1Y2VfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1JFRFVDRV9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfXywgTUVUSF9OT0FSR1MsIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3JlZHVjZV9fX2ltcGwoYXJyYXlpdGVyb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfXyhhcnJheWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYXJyYXlfYXJyYXlpdGVyYXRvcl9fX3NldHN0YXRlX19fX2RvY19fLAorIl9fc2V0c3RhdGVfXygkc2VsZiwgc3RhdGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKKyNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXywgTUVUSF9PLCBhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyZTgyYzY1ZWE4NDFjZmMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAppbmRleCA0MGVmNWUyLi4zZWUyOTY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaApAQCAtMTIsNyArMTIsOCBAQAogICAgIHsiZ2V0c2FtcGxlIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZ2V0c2FtcGxlLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZ2V0c2FtcGxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlfc3NpemVfdCBpbmRleCk7CithdWRpb29wX2dldHNhbXBsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2dldHNhbXBsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTIyLDggKzIzLDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppbjpnZXRzYW1wbGUiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppbjpnZXRzYW1wbGUiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZ2V0c2FtcGxlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBpbmRleCk7CkBAIC01NSw4ICs1NSw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppOm1heCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwpAQCAtODgsOCArODcsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTptaW5tYXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1pbm1heCIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWlubWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTEyMSw4ICsxMTksNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphdmciLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2ZyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZnX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTE1NCw4ICsxNTEsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpybXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJtcyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3Bfcm1zX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTE3OCw3ICsxNzQsOCBAQAogICAgIHsiZmluZGZpdCIsIChQeUNGdW5jdGlvbilhdWRpb29wX2ZpbmRmaXQsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9maW5kZml0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CithdWRpb29wX2ZpbmRmaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9maW5kZml0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTg3LDggKzE4NCw3IEBACiAgICAgUHlfYnVmZmVyIGZyYWdtZW50ID0ge05VTEwsIE5VTEx9OwogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqeSo6ZmluZGZpdCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmaXQiLAogICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZml0X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwpAQCAtMjE0LDcgKzIxMCw4IEBACiAgICAgeyJmaW5kZmFjdG9yIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfZmluZGZhY3RvciwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2ZpbmRmYWN0b3JfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIFB5X2J1ZmZlciAqcmVmZXJlbmNlKTsKK2F1ZGlvb3BfZmluZGZhY3Rvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnJlZmVyZW5jZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX2ZpbmRmYWN0b3IoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yMjMsOCArMjIwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5KjpmaW5kZmFjdG9yIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZhY3RvciIsCiAgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmYWN0b3JfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CkBAIC0yNTAsNyArMjQ2LDggQEAKICAgICB7ImZpbmRtYXgiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9maW5kbWF4LCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfZmluZG1heF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgUHlfc3NpemVfdCBsZW5ndGgpOworYXVkaW9vcF9maW5kbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfZmluZG1heChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTI1OSw4ICsyNTYsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSpuOmZpbmRtYXgiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpuOmZpbmRtYXgiLAogICAgICAgICAmZnJhZ21lbnQsICZsZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kbWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIGxlbmd0aCk7CkBAIC0yOTIsOCArMjg4LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6YXZncHAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2Z3BwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zMjUsOCArMzIwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6bWF4cHAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heHBwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zNTgsOCArMzUyLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6Y3Jvc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmNyb3NzIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9jcm9zc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC0zODIsNyArMzc1LDggQEAKICAgICB7Im11bCIsIChQeUNGdW5jdGlvbilhdWRpb29wX211bCwgTUVUSF9WQVJBUkdTLCBhdWRpb29wX211bF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBmYWN0b3IpOworYXVkaW9vcF9tdWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgIGRvdWJsZSBmYWN0b3IpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9tdWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC0zOTIsOCArMzg2LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgZG91YmxlIGZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZDptdWwiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZDptdWwiLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX211bF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgZmFjdG9yKTsKQEAgLTQxNiw3ICs0MDksOCBAQAogICAgIHsidG9tb25vIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfdG9tb25vLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfdG9tb25vX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX3RvbW9ub19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgZG91YmxlIGxmYWN0b3IsIGRvdWJsZSByZmFjdG9yKTsKK2F1ZGlvb3BfdG9tb25vX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBkb3VibGUgbGZhY3RvciwgZG91YmxlIHJmYWN0b3IpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF90b21vbm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00MjcsOCArNDIxLDcgQEAKICAgICBkb3VibGUgbGZhY3RvcjsKICAgICBkb3VibGUgcmZhY3RvcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSppZGQ6dG9tb25vIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvbW9ubyIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b21vbm9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwpAQCAtNDUxLDcgKzQ0NCw4IEBACiAgICAgeyJ0b3N0ZXJlbyIsIChQeUNGdW5jdGlvbilhdWRpb29wX3Rvc3RlcmVvLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfdG9zdGVyZW9fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfdG9zdGVyZW9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CithdWRpb29wX3Rvc3RlcmVvX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBsZmFjdG9yLCBkb3VibGUgcmZhY3Rvcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3Rvc3RlcmVvKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNDYyLDggKzQ1Niw3IEBACiAgICAgZG91YmxlIGxmYWN0b3I7CiAgICAgZG91YmxlIHJmYWN0b3I7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWRkOnRvc3RlcmVvIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvc3RlcmVvIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Rvc3RlcmVvX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBsZmFjdG9yLCByZmFjdG9yKTsKQEAgLTQ4Niw3ICs0NzksOCBAQAogICAgIHsiYWRkIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYWRkLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYWRkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQxLCBQeV9idWZmZXIgKmZyYWdtZW50MiwgaW50IHdpZHRoKTsKK2F1ZGlvb3BfYWRkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudDEsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqZnJhZ21lbnQyLCBpbnQgd2lkdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9hZGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC00OTYsOCArNDkwLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQyID0ge05VTEwsIE5VTEx9OwogICAgIGludCB3aWR0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSp5Kmk6YWRkIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSppOmFkZCIsCiAgICAgICAgICZmcmFnbWVudDEsICZmcmFnbWVudDIsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkZF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50MSwgJmZyYWdtZW50Miwgd2lkdGgpOwpAQCAtNTIzLDcgKzUxNiw4IEBACiAgICAgeyJiaWFzIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYmlhcywgTUVUSF9WQVJBUkdTLCBhdWRpb29wX2JpYXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfYmlhc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgaW50IGJpYXMpOworYXVkaW9vcF9iaWFzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgaW50IGJpYXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9iaWFzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQpAQCAtNTMzLDggKzUyNyw3IEBACiAgICAgaW50IHdpZHRoOwogICAgIGludCBiaWFzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlpOmJpYXMiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpiaWFzIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZiaWFzKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYmlhc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgYmlhcyk7CkBAIC01NjYsOCArNTU5LDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6cmV2ZXJzZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6cmV2ZXJzZSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmV2ZXJzZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC01OTksOCArNTkxLDcgQEAKICAgICBQeV9idWZmZXIgZnJhZ21lbnQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdpZHRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5Kmk6Ynl0ZXN3YXAiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmJ5dGVzd2FwIiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ieXRlc3dhcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CkBAIC02MjMsNyArNjE0LDggQEAKICAgICB7ImxpbjJsaW4iLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9saW4ybGluLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbGluMmxpbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmV3d2lkdGgpOworYXVkaW9vcF9saW4ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgaW50IG5ld3dpZHRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGF1ZGlvb3BfbGluMmxpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTYzMyw4ICs2MjUsNyBAQAogICAgIGludCB3aWR0aDsKICAgICBpbnQgbmV3d2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWk6bGluMmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmxpbjJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmV3d2lkdGgpOwpAQCAtNjU4LDcgKzY0OSw5IEBACiAgICAgeyJyYXRlY3YiLCAoUHlDRnVuY3Rpb24pYXVkaW9vcF9yYXRlY3YsIE1FVEhfVkFSQVJHUywgYXVkaW9vcF9yYXRlY3ZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWF1ZGlvb3BfcmF0ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLCBpbnQgbmNoYW5uZWxzLCBpbnQgaW5yYXRlLCBpbnQgb3V0cmF0ZSwgUHlPYmplY3QgKnN0YXRlLCBpbnQgd2VpZ2h0QSwgaW50IHdlaWdodEIpOworYXVkaW9vcF9yYXRlY3ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmZyYWdtZW50LCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBuY2hhbm5lbHMsIGludCBpbnJhdGUsIGludCBvdXRyYXRlLCBQeU9iamVjdCAqc3RhdGUsCisgICAgICAgICAgICAgICAgICAgIGludCB3ZWlnaHRBLCBpbnQgd2VpZ2h0Qik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhdWRpb29wX3JhdGVjdihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKQEAgLTY3Myw4ICs2NjYsNyBAQAogICAgIGludCB3ZWlnaHRBID0gMTsKICAgICBpbnQgd2VpZ2h0QiA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaWlpaU98aWk6cmF0ZWN2IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWlpaU98aWk6cmF0ZWN2IiwKICAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3JhdGVjdl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHN0YXRlLCB3ZWlnaHRBLCB3ZWlnaHRCKTsKQEAgLTcwNiw4ICs2OTgsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpsaW4ydWxhdyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMnVsYXciLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJ1bGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTczOSw4ICs3MzAsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTp1bGF3MmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6dWxhdzJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3VsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTc3Miw4ICs3NjIsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTpsaW4yYWxhdyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMmFsYXciLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhbGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTgwNSw4ICs3OTQsNyBAQAogICAgIFB5X2J1ZmZlciBmcmFnbWVudCA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2lkdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqaTphbGF3MmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YWxhdzJsaW4iLAogICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKQEAgLTgyOSw3ICs4MTcsOCBAQAogICAgIHsibGluMmFkcGNtIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfbGluMmFkcGNtLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfbGluMmFkcGNtX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2xpbjJhZHBjbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKTsKK2F1ZGlvb3BfbGluMmFkcGNtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9saW4yYWRwY20oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC04MzksOCArODI4LDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlPOmxpbjJhZHBjbSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmxpbjJhZHBjbSIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWRwY21faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKQEAgLTg2Myw3ICs4NTEsOCBAQAogICAgIHsiYWRwY20ybGluIiwgKFB5Q0Z1bmN0aW9uKWF1ZGlvb3BfYWRwY20ybGluLCBNRVRIX1ZBUkFSR1MsIGF1ZGlvb3BfYWRwY20ybGluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1hdWRpb29wX2FkcGNtMmxpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZnJhZ21lbnQsIGludCB3aWR0aCwgUHlPYmplY3QgKnN0YXRlKTsKK2F1ZGlvb3BfYWRwY20ybGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpmcmFnbWVudCwgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYXVkaW9vcF9hZHBjbTJsaW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC04NzMsOCArODYyLDcgQEAKICAgICBpbnQgd2lkdGg7CiAgICAgUHlPYmplY3QgKnN0YXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KmlPOmFkcGNtMmxpbiIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlPOmFkcGNtMmxpbiIsCiAgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZHBjbTJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKQEAgLTg4Niw0ICs4NzQsNCBAQAogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTg0MGJiYTVkNDBjMmNlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDc2ZTFiMjEzYTg3MjdiIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaCBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAppbmRleCBlZjY0NmRkLi5lMzQ4YmVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCkBAIC05LDIwICs5LDE4IEBACiAiRGVjb2RlIGEgbGluZSBvZiB1dWVuY29kZWQgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfVVVfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfdXUsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYTJiX3V1X19kb2NfX30sCisgICAgeyJhMmJfdXUiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX3V1LCBNRVRIX08sIGJpbmFzY2lpX2EyYl91dV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX3V1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2EyYl91dShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX2EyYl91dShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfdXUiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfdXUiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfdXVfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtNDEsMjAgKzM5LDE4IEBACiAiVXVlbmNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9VVV9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX3V1IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV91dSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfdXVfX2RvY19ffSwKKyAgICB7ImIyYV91dSIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfdXUsIE1FVEhfTywgYmluYXNjaWlfYjJhX3V1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfdXVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX3V1KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmIyYV91dSIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV91dSIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV91dV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC03MywyMCArNjksMTggQEAKICJEZWNvZGUgYSBsaW5lIG9mIGJhc2U2NCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2Jhc2U2NCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfYmFzZTY0X19kb2NfX30sCisgICAgeyJhMmJfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9iYXNlNjQsIE1FVEhfTywgYmluYXNjaWlfYTJiX2Jhc2U2NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfYmFzZTY0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfYmFzZTY0IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTA1LDIwICs5OSwxOCBAQAogIkJhc2U2NC1jb2RlIGxpbmUgb2YgZGF0YS4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfQkFTRTY0X01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAorICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX08sIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX2IyYV9iYXNlNjQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAieSo6YjJhX2Jhc2U2NCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9iYXNlNjQiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKQEAgLTEzNywyMCArMTI5LDE4IEBACiAiRGVjb2RlIC5ocXggY29kaW5nLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImEyYl9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX2hxeCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9hMmJfaHF4X19kb2NfX30sCisgICAgeyJhMmJfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9ocXgsIE1FVEhfTywgYmluYXNjaWlfYTJiX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYTJiX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPJjphMmJfaHF4IiwKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMTY5LDIwICsxNTksMTggQEAKICJCaW5oZXggUkxFLWNvZGUgYmluYXJ5IGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfUkxFQ09ERV9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7InJsZWNvZGVfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3JsZWNvZGVfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3JsZWNvZGVfaHF4X19kb2NfX30sCisgICAgeyJybGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVjb2RlX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9ybGVjb2RlX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfcmxlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9ybGVjb2RlX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpybGVjb2RlX2hxeCIsCi0gICAgICAgICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMjAxLDIwICsxODksMTggQEAKICJFbmNvZGUgLmhxeCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9IUVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hxeCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfaHF4X19kb2NfX30sCisgICAgeyJiMmFfaHF4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9ocXgsIE1FVEhfTywgYmluYXNjaWlfYjJhX2hxeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2hxeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2hxeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfaHF4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMjMzLDIwICsyMTksMTggQEAKICJEZWNvZGUgaGV4YmluIFJMRS1jb2RlZCBzdHJpbmcuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfUkxFREVDT0RFX0hRWF9NRVRIT0RERUYgICAgXAotICAgIHsicmxlZGVjb2RlX2hxeCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9ybGVkZWNvZGVfaHF4LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfX2RvY19ffSwKKyAgICB7InJsZWRlY29kZV9ocXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfcmxlZGVjb2RlX2hxeCwgTUVUSF9PLCBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX3JsZWRlY29kZV9ocXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCitiaW5hc2NpaV9ybGVkZWNvZGVfaHF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOnJsZWRlY29kZV9ocXgiLAotICAgICAgICAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlZGVjb2RlX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCkBAIC0yNzgsMTIgKzI2MiwxMSBAQAogICAgIHVuc2lnbmVkIGludCBjcmM7CiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqSTpjcmNfaHF4IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqSTpjcmNfaHF4IiwKICAgICAgICAgJmRhdGEsICZjcmMpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgX3JldHVybl92YWx1ZSA9IGJpbmFzY2lpX2NyY19ocXhfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCkBAIC0zMTUsMTIgKzI5OCwxMSBAQAogICAgIHVuc2lnbmVkIGludCBjcmMgPSAwOwogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmNyYzMyIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAogICAgICAgICAmZGF0YSwgJmNyYykpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICBfcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCkBAIC0zNDIsMjAgKzMyNCwxOCBAQAogImF2YWlsYWJsZSBhcyBcImhleGxpZnkoKVwiLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9IRVhfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9oZXgiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2hleCwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9iMmFfaGV4X19kb2NfX30sCisgICAgeyJiMmFfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9oZXgsIE1FVEhfTywgYmluYXNjaWlfYjJhX2hleF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX2hleF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYjJhX2hleChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpiMmFfaGV4IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9oZXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtMzc2LDIwICszNTYsMTggQEAKICJUaGUgcmV0dXJuIHZhbHVlIGlzIGEgYnl0ZXMgb2JqZWN0LiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0hFWExJRllfTUVUSE9EREVGICAgIFwKLSAgICB7ImhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfaGV4bGlmeSwgTUVUSF9WQVJBUkdTLCBiaW5hc2NpaV9oZXhsaWZ5X19kb2NfX30sCisgICAgeyJoZXhsaWZ5IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2hleGxpZnksIE1FVEhfTywgYmluYXNjaWlfaGV4bGlmeV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9oZXhsaWZ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KjpoZXhsaWZ5IiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2hleGxpZnlfaW1wbChtb2R1bGUsICZkYXRhKTsKIApAQCAtNDExLDIwICszODksMTggQEAKICJUaGlzIGZ1bmN0aW9uIGlzIGFsc28gYXZhaWxhYmxlIGFzIFwidW5oZXhsaWZ5KClcIi4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9BMkJfSEVYX01FVEhPRERFRiAgICBcCi0gICAgeyJhMmJfaGV4IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9oZXgsIE1FVEhfVkFSQVJHUywgYmluYXNjaWlfYTJiX2hleF9fZG9jX199LAorICAgIHsiYTJiX2hleCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9hMmJfaGV4LCBNRVRIX08sIGJpbmFzY2lpX2EyYl9oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmhleHN0cik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfaGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorYmluYXNjaWlfYTJiX2hleChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOmEyYl9oZXgiLAotICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9oZXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCkBAIC00NDUsMjAgKzQyMSwxOCBAQAogImhleHN0ciBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YgaGV4IGRpZ2l0cyAodXBwZXIgb3IgbG93ZXIgY2FzZSkuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfVU5IRVhMSUZZX01FVEhPRERFRiAgICBcCi0gICAgeyJ1bmhleGxpZnkiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfdW5oZXhsaWZ5LCBNRVRIX1ZBUkFSR1MsIGJpbmFzY2lpX3VuaGV4bGlmeV9fZG9jX199LAorICAgIHsidW5oZXhsaWZ5IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX3VuaGV4bGlmeSwgTUVUSF9PLCBiaW5hc2NpaV91bmhleGxpZnlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX3VuaGV4bGlmeV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2J1ZmZlciAqaGV4c3RyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX3VuaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK2JpbmFzY2lpX3VuaGV4bGlmeShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIk8mOnVuaGV4bGlmeSIsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV91bmhleGxpZnlfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCkBAIC00OTAsOCArNDY0LDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGk6YTJiX3FwIiwgX2tleXdvcmRzLAogICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBoZWFkZXIpOwpAQCAtNTE4LDcgKzQ5MSw4IEBACiAgICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfcXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBxdW90ZXRhYnMsIGludCBpc3RleHQsIGludCBoZWFkZXIpOworYmluYXNjaWlfYjJhX3FwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgcXVvdGV0YWJzLAorICAgICAgICAgICAgICAgICAgICAgaW50IGlzdGV4dCwgaW50IGhlYWRlcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9iMmFfcXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC01MzAsOCArNTA0LDcgQEAKICAgICBpbnQgaXN0ZXh0ID0gMTsKICAgICBpbnQgaGVhZGVyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKICAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgcXVvdGV0YWJzLCBpc3RleHQsIGhlYWRlcik7CkBAIC01NDMsNCArNTE2LDQgQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI3NjFiMzZmNGY5ZTViYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjFhM2NiZjc2NjBlYmFhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2MTY0OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApAQCAtMCwwICsxLDg2MCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Fjb3NfX2RvY19fLAorImFjb3MoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYXJjIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0FDT1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjb3MiLCAoUHlDRnVuY3Rpb24pY21hdGhfYWNvcywgTUVUSF9PLCBjbWF0aF9hY29zX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hY29zX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Fjb3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3MiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc19pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2Fjb3NoX19kb2NfXywKKyJhY29zaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQUNPU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImFjb3NoIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2Fjb3NoLCBNRVRIX08sIGNtYXRoX2Fjb3NoX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hY29zaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hY29zaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYWNvc2hfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hc2luX19kb2NfXywKKyJhc2luKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFyYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVNJTl9NRVRIT0RERUYgICAgXAorICAgIHsiYXNpbiIsIChQeUNGdW5jdGlvbiljbWF0aF9hc2luLCBNRVRIX08sIGNtYXRoX2FzaW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2FzaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYXNpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYXNpbmhfX2RvY19fLAorImFzaW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVNJTkhfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzaW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2FzaW5oLCBNRVRIX08sIGNtYXRoX2FzaW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hc2luaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9hdGFuX19kb2NfXywKKyJhdGFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFyYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVRBTl9NRVRIT0RERUYgICAgXAorICAgIHsiYXRhbiIsIChQeUNGdW5jdGlvbiljbWF0aF9hdGFuLCBNRVRIX08sIGNtYXRoX2F0YW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX2F0YW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfYXRhbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfYXRhbmhfX2RvY19fLAorImF0YW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfQVRBTkhfTUVUSE9EREVGICAgIFwKKyAgICB7ImF0YW5oIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2F0YW5oLCBNRVRIX08sIGNtYXRoX2F0YW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9hdGFuaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9hdGFuaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9jb3NfX2RvY19fLAorImNvcygkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb3NpbmUgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9DT1NfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcyIsIChQeUNGdW5jdGlvbiljbWF0aF9jb3MsIE1FVEhfTywgY21hdGhfY29zX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9jb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfY29zKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfY29zaF9fZG9jX18sCisiY29zaCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0NPU0hfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvc2giLCAoUHlDRnVuY3Rpb24pY21hdGhfY29zaCwgTUVUSF9PLCBjbWF0aF9jb3NoX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9jb3NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2Nvc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2V4cF9fZG9jX18sCisiZXhwKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnouIik7CisKKyNkZWZpbmUgQ01BVEhfRVhQX01FVEhPRERFRiAgICBcCisgICAgeyJleHAiLCAoUHlDRnVuY3Rpb24pY21hdGhfZXhwLCBNRVRIX08sIGNtYXRoX2V4cF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfZXhwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2V4cChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2V4cF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX2xvZzEwX19kb2NfXywKKyJsb2cxMCgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBiYXNlLTEwIGxvZ2FyaXRobSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0xPRzEwX01FVEhPRERFRiAgICBcCisgICAgeyJsb2cxMCIsIChQeUNGdW5jdGlvbiljbWF0aF9sb2cxMCwgTUVUSF9PLCBjbWF0aF9sb2cxMF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfbG9nMTBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfbG9nMTAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2xvZzEwX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfc2luX19kb2NfXywKKyJzaW4oJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NJTl9NRVRIT0RERUYgICAgXAorICAgIHsic2luIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3NpbiwgTUVUSF9PLCBjbWF0aF9zaW5fX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3Npbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9zaW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5faW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9zaW5oX19kb2NfXywKKyJzaW5oKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX1NJTkhfTUVUSE9EREVGICAgIFwKKyAgICB7InNpbmgiLCAoUHlDRnVuY3Rpb24pY21hdGhfc2luaCwgTUVUSF9PLCBjbWF0aF9zaW5oX19kb2NfX30sCisKK3N0YXRpYyBQeV9jb21wbGV4CitjbWF0aF9zaW5oX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3NpbmgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCisgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3NxcnRfX2RvY19fLAorInNxcnQoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygei4iKTsKKworI2RlZmluZSBDTUFUSF9TUVJUX01FVEhPRERFRiAgICBcCisgICAgeyJzcXJ0IiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3NxcnQsIE1FVEhfTywgY21hdGhfc3FydF9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfc3FydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9zcXJ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzcXJ0IiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHopOworICAgIFB5RlBFX0VORF9QUk9URUNUKF9yZXR1cm5fdmFsdWUpOworICAgIGlmIChlcnJubyA9PSBFRE9NKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJtYXRoIHJhbmdlIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoX3JldHVybl92YWx1ZSk7CisgICAgfQorCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF90YW5fX2RvY19fLAorInRhbigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfVEFOX01FVEhPRERFRiAgICBcCisgICAgeyJ0YW4iLCAoUHlDRnVuY3Rpb24pY21hdGhfdGFuLCBNRVRIX08sIGNtYXRoX3Rhbl9fZG9jX199LAorCitzdGF0aWMgUHlfY29tcGxleAorY21hdGhfdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3RhbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLworICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CisgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Rhbl9pbXBsKG1vZHVsZSwgeik7CisgICAgUHlGUEVfRU5EX1BST1RFQ1QoX3JldHVybl92YWx1ZSk7CisgICAgaWYgKGVycm5vID09IEVET00pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgaWYgKGVycm5vID09IEVSQU5HRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm1hdGggcmFuZ2UgZXJyb3IiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKKyAgICB9CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3RhbmhfX2RvY19fLAorInRhbmgoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHouIik7CisKKyNkZWZpbmUgQ01BVEhfVEFOSF9NRVRIT0RERUYgICAgXAorICAgIHsidGFuaCIsIChQeUNGdW5jdGlvbiljbWF0aF90YW5oLCBNRVRIX08sIGNtYXRoX3RhbmhfX2RvY19ffSwKKworc3RhdGljIFB5X2NvbXBsZXgKK2NtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfdGFuaChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKyAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuaCIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KKyAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOworICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5oX2ltcGwobW9kdWxlLCB6KTsKKyAgICBQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKKyAgICBpZiAoZXJybm8gPT0gRURPTSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1hdGggZG9tYWluIGVycm9yIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KF9yZXR1cm5fdmFsdWUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfbG9nX19kb2NfXywKKyJsb2coJG1vZHVsZSwgeCwgeV9vYmo9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRoZSBsb2dhcml0aG0gb2YgeiB0byB0aGUgZ2l2ZW4gYmFzZS5cbiIKKyJcbiIKKyJJZiB0aGUgYmFzZSBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSAoYmFzZSBlKSBvZiB6LiIpOworCisjZGVmaW5lIENNQVRIX0xPR19NRVRIT0RERUYgICAgXAorICAgIHsibG9nIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2xvZywgTUVUSF9WQVJBUkdTLCBjbWF0aF9sb2dfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2xvZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeCwgUHlPYmplY3QgKnlfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2xvZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHg7CisgICAgUHlPYmplY3QgKnlfb2JqID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxPOmxvZyIsCisgICAgICAgICZ4LCAmeV9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nX2ltcGwobW9kdWxlLCB4LCB5X29iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3BoYXNlX19kb2NfXywKKyJwaGFzZSgkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LiIpOworCisjZGVmaW5lIENNQVRIX1BIQVNFX01FVEhPRERFRiAgICBcCisgICAgeyJwaGFzZSIsIChQeUNGdW5jdGlvbiljbWF0aF9waGFzZSwgTUVUSF9PLCBjbWF0aF9waGFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcGhhc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopOworCitzdGF0aWMgUHlPYmplY3QgKgorY21hdGhfcGhhc2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9jb21wbGV4IHo7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9waGFzZV9pbXBsKG1vZHVsZSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGNtYXRoX3BvbGFyX19kb2NfXywKKyJwb2xhcigkbW9kdWxlLCB6LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29udmVydCBhIGNvbXBsZXggZnJvbSByZWN0YW5ndWxhciBjb29yZGluYXRlcyB0byBwb2xhciBjb29yZGluYXRlcy5cbiIKKyJcbiIKKyJyIGlzIHRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuIik7CisKKyNkZWZpbmUgQ01BVEhfUE9MQVJfTUVUSE9EREVGICAgIFwKKyAgICB7InBvbGFyIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX3BvbGFyLCBNRVRIX08sIGNtYXRoX3BvbGFyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9wb2xhcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9wb2xhcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BvbGFyX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfcmVjdF9fZG9jX18sCisicmVjdCgkbW9kdWxlLCByLCBwaGksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0IGZyb20gcG9sYXIgY29vcmRpbmF0ZXMgdG8gcmVjdGFuZ3VsYXIgY29vcmRpbmF0ZXMuIik7CisKKyNkZWZpbmUgQ01BVEhfUkVDVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVjdCIsIChQeUNGdW5jdGlvbiljbWF0aF9yZWN0LCBNRVRIX1ZBUkFSR1MsIGNtYXRoX3JlY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX3JlY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBkb3VibGUgciwgZG91YmxlIHBoaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9yZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRvdWJsZSByOworICAgIGRvdWJsZSBwaGk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLAorICAgICAgICAmciwgJnBoaSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9yZWN0X2ltcGwobW9kdWxlLCByLCBwaGkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2Zpbml0ZV9fZG9jX18sCisiaXNmaW5pdGUoJG1vZHVsZSwgeiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGJvdGggdGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiB6IGFyZSBmaW5pdGUsIGVsc2UgRmFsc2UuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNGSU5JVEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzZmluaXRlIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzZmluaXRlLCBNRVRIX08sIGNtYXRoX2lzZmluaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Zpbml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Zpbml0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzZmluaXRlX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfaXNuYW5fX2RvY19fLAorImlzbmFuKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBub3QgYSBudW1iZXIgKE5hTikuIik7CisKKyNkZWZpbmUgQ01BVEhfSVNOQU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImlzbmFuIiwgKFB5Q0Z1bmN0aW9uKWNtYXRoX2lzbmFuLCBNRVRIX08sIGNtYXRoX2lzbmFuX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc25hbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc25hbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2NvbXBsZXggejsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzbmFuX2ltcGwobW9kdWxlLCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoY21hdGhfaXNpbmZfX2RvY19fLAorImlzaW5mKCRtb2R1bGUsIHosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4iKTsKKworI2RlZmluZSBDTUFUSF9JU0lORl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNpbmYiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNpbmYsIE1FVEhfTywgY21hdGhfaXNpbmZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzaW5mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2NtYXRoX2lzaW5mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfY29tcGxleCB6OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNpbmZfaW1wbChtb2R1bGUsIHopOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihjbWF0aF9pc2Nsb3NlX19kb2NfXywKKyJpc2Nsb3NlKCRtb2R1bGUsIC8sIGEsIGIsICosIHJlbF90b2w9MWUtMDksIGFic190b2w9MC4wKVxuIgorIi0tXG4iCisiXG4iCisiRGV0ZXJtaW5lIHdoZXRoZXIgdHdvIGNvbXBsZXggbnVtYmVycyBhcmUgY2xvc2UgaW4gdmFsdWUuXG4iCisiXG4iCisiICByZWxfdG9sXG4iCisiICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlbGF0aXZlIHRvIHRoZVxuIgorIiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIiAgYWJzX3RvbFxuIgorIiAgICBtYXhpbXVtIGRpZmZlcmVuY2UgZm9yIGJlaW5nIGNvbnNpZGVyZWQgXCJjbG9zZVwiLCByZWdhcmRsZXNzIG9mIHRoZVxuIgorIiAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGEgaXMgY2xvc2UgaW4gdmFsdWUgdG8gYiwgYW5kIEZhbHNlIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJGb3IgdGhlIHZhbHVlcyB0byBiZSBjb25zaWRlcmVkIGNsb3NlLCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gbXVzdCBiZVxuIgorInNtYWxsZXIgdGhhbiBhdCBsZWFzdCBvbmUgb2YgdGhlIHRvbGVyYW5jZXMuXG4iCisiXG4iCisiLWluZiwgaW5mIGFuZCBOYU4gYmVoYXZlIHNpbWlsYXJseSB0byB0aGUgSUVFRSA3NTQgU3RhbmRhcmQuIFRoYXQgaXMsIE5hTiBpc1xuIgorIm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOworCisjZGVmaW5lIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKKworc3RhdGljIGludAorY21hdGhfaXNjbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAorICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitjbWF0aF9pc2Nsb3NlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIFB5X2NvbXBsZXggYTsKKyAgICBQeV9jb21wbGV4IGI7CisgICAgZG91YmxlIHJlbF90b2wgPSAxZS0wOTsKKyAgICBkb3VibGUgYWJzX3RvbCA9IDAuMDsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLAorICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNjbG9zZV9pbXBsKG1vZHVsZSwgYSwgYiwgcmVsX3RvbCwgYWJzX3RvbCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjI5ZTljNDhjOWQyNzM2MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUzYjFjMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaApAQCAtMCwwICsxLDE4NSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKGZjbnRsX2ZjbnRsX19kb2NfXywKKyJmY250bCgkbW9kdWxlLCBmZCwgY21kLCBhcmc9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gdGhlIG9wZXJhdGlvbiBgY21kYCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiVGhlIHZhbHVlcyB1c2VkIGZvciBgY21kYCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlXG4iCisiYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW5cbiIKKyJ0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuICBUaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmRcbiIKKyJkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLFxuIgorInRoZSByZXR1cm4gdmFsdWUgb2YgZmNudGwgaXMgYSBzdHJpbmcgb2YgdGhhdCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlXG4iCisicmVzdWx0aW5nIHZhbHVlIHB1dCBpbiB0aGUgYXJnIGJ1ZmZlciBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBsZW5ndGhcbiIKKyJvZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW5cbiIKKyJpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzIGFuIGludGVnZXJcbiIKKyJjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZjbnRsIGNhbGwgaW4gdGhlIEMgY29kZS4iKTsKKworI2RlZmluZSBGQ05UTF9GQ05UTF9NRVRIT0RERUYgICAgXAorICAgIHsiZmNudGwiLCAoUHlDRnVuY3Rpb24pZmNudGxfZmNudGwsIE1FVEhfVkFSQVJHUywgZmNudGxfZmNudGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2ZjbnRsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmFyZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mY250bChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGNvZGU7CisgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXxPOmZjbnRsIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2ZjbnRsX2ltcGwobW9kdWxlLCBmZCwgY29kZSwgYXJnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfaW9jdGxfX2RvY19fLAorImlvY3RsKCRtb2R1bGUsIGZkLCByZXF1ZXN0LCBhcmc9MCwgbXV0YXRlX2ZsYWc9VHJ1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gdGhlIG9wZXJhdGlvbiBgcmVxdWVzdGAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuXG4iCisiXG4iCisiVGhlIHZhbHVlcyB1c2VkIGZvciBgcmVxdWVzdGAgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZVxuIgorImFzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgb3IgdGVybWlvcyBsaWJyYXJ5IG1vZHVsZXMsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzXG4iCisidXNlZCBpbiB0aGUgcmVsZXZhbnQgQyBoZWFkZXIgZmlsZXMuXG4iCisiXG4iCisiVGhlIGFyZ3VtZW50IGBhcmdgIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhXG4iCisiYnVmZmVyIGNvbnRhaW5pbmcgY2hhcmFjdGVyIGRhdGEgKG1vc3QgbGlrZWx5IGEgc3RyaW5nIG9yIGFuIGFycmF5KS5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZVxuIgorIm11dGF0ZV9mbGFnIGFyZ3VtZW50ICh3aGljaCBpcyBvbmx5IGFsbG93ZWQgaW4gdGhpcyBjYXNlKSBpcyB0cnVlIHRoZW4gdGhlXG4iCisiYnVmZmVyIGlzIChpbiBlZmZlY3QpIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgY2hhbmdlcyBtYWRlIGJ5XG4iCisidGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhc1xuIgorInJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW50ZWdlciByZXR1cm5lZCBieSB0aGUgaW9jdGwgc3lzdGVtXG4iCisiY2FsbC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciBhbmQgdGhlIG11dGFibGVfZmxhZyBhcmd1bWVudCBpcyBmYWxzZSxcbiIKKyJ0aGUgYmVoYXZpb3IgaXMgYXMgaWYgYSBzdHJpbmcgaGFkIGJlZW4gcGFzc2VkLlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBhbiBpbW11dGFibGUgYnVmZmVyIChtb3N0IGxpa2VseSBhIHN0cmluZykgdGhlbiBhIGNvcHlcbiIKKyJvZiB0aGUgYnVmZmVyIGlzIHBhc3NlZCB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyBhXG4iCisic3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpblxuIgorInRoZSBidWZmZXIuICBUaGUgbGVuZ3RoIG9mIHRoZSBhcmcgYnVmZmVyIGluIHRoaXMgY2FzZSBpcyBub3QgYWxsb3dlZCB0b1xuIgorImV4Y2VlZCAxMDI0IGJ5dGVzLlxuIgorIlxuIgorIklmIHRoZSBhcmcgZ2l2ZW4gaXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpc1xuIgorImFuIGludGVnZXIgY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBpb2N0bCBjYWxsIGluIHRoZSBDXG4iCisiY29kZS4iKTsKKworI2RlZmluZSBGQ05UTF9JT0NUTF9NRVRIT0RERUYgICAgXAorICAgIHsiaW9jdGwiLCAoUHlDRnVuY3Rpb24pZmNudGxfaW9jdGwsIE1FVEhfVkFSQVJHUywgZmNudGxfaW9jdGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2lvY3RsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1bnNpZ25lZCBpbnQgY29kZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iX2FyZywgaW50IG11dGF0ZV9hcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfaW9jdGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjb2RlOworICAgIFB5T2JqZWN0ICpvYl9hcmcgPSBOVUxMOworICAgIGludCBtdXRhdGVfYXJnID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJfE9wOmlvY3RsIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBmY250bF9pb2N0bF9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIG9iX2FyZywgbXV0YXRlX2FyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGZjbnRsX2Zsb2NrX19kb2NfXywKKyJmbG9jaygkbW9kdWxlLCBmZCwgb3BlcmF0aW9uLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSB0aGUgbG9jayBvcGVyYXRpb24gYG9wZXJhdGlvbmAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuXG4iCisiXG4iCisiU2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlIGZvciBmbG9jaygyKSBmb3IgZGV0YWlscyAoT24gc29tZSBzeXN0ZW1zLCB0aGlzXG4iCisiZnVuY3Rpb24gaXMgZW11bGF0ZWQgdXNpbmcgZmNudGwoKSkuIik7CisKKyNkZWZpbmUgRkNOVExfRkxPQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7ImZsb2NrIiwgKFB5Q0Z1bmN0aW9uKWZjbnRsX2Zsb2NrLCBNRVRIX1ZBUkFSR1MsIGZjbnRsX2Zsb2NrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitmY250bF9mbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZmNudGxfZmxvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBjb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmxvY2tfaW1wbChtb2R1bGUsIGZkLCBjb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZmNudGxfbG9ja2ZfX2RvY19fLAorImxvY2tmKCRtb2R1bGUsIGZkLCBjbWQsIGxlbj0wLCBzdGFydD0wLCB3aGVuY2U9MCwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy5cbiIKKyJcbiIKKyJgZmRgIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gbG9jayBvciB1bmxvY2ssIGFuZCBvcGVyYXRpb24gaXMgb25lXG4iCisib2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XG4iCisiXG4iCisiICAgIExPQ0tfVU4gLSB1bmxvY2tcbiIKKyIgICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9ja1xuIgorIiAgICBMT0NLX0VYIC0gYWNxdWlyZSBhbiBleGNsdXNpdmUgbG9ja1xuIgorIlxuIgorIldoZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGhcbiIKKyJMT0NLX05CIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uICBJZiBMT0NLX05CIGlzIHVzZWQgYW5kIHRoZVxuIgorImxvY2sgY2Fubm90IGJlIGFjcXVpcmVkLCBhbiBJT0Vycm9yIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGxcbiIKKyJoYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmdcbiIKKyJzeXN0ZW0gLS0gZm9yIHBvcnRhYmlsaXR5LCBjaGVjayBmb3IgZWl0aGVyIHZhbHVlKS5cbiIKKyJcbiIKKyJgbGVuYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvXG4iCisiRU9GLiAgYHN0YXJ0YCBpcyB0aGUgYnl0ZSBvZmZzZXQsIHJlbGF0aXZlIHRvIGB3aGVuY2VgLCB0byB0aGF0IHRoZSBsb2NrXG4iCisic3RhcnRzLiAgYHdoZW5jZWAgaXMgYXMgd2l0aCBmaWxlb2JqLnNlZWsoKSwgc3BlY2lmaWNhbGx5OlxuIgorIlxuIgorIiAgICAwIC0gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIChTRUVLX1NFVClcbiIKKyIgICAgMSAtIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBwb3NpdGlvbiAoU0VFS19DVVIpXG4iCisiICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkiKTsKKworI2RlZmluZSBGQ05UTF9MT0NLRl9NRVRIT0RERUYgICAgXAorICAgIHsibG9ja2YiLCAoUHlDRnVuY3Rpb24pZmNudGxfbG9ja2YsIE1FVEhfVkFSQVJHUywgZmNudGxfbG9ja2ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmxlbm9iaiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0b2JqLCBpbnQgd2hlbmNlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2ZjbnRsX2xvY2tmKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBpbnQgY29kZTsKKyAgICBQeU9iamVjdCAqbGVub2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RhcnRvYmogPSBOVUxMOworICAgIGludCB3aGVuY2UgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBsZW5vYmosIHN0YXJ0b2JqLCB3aGVuY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTI5NjNiNjMxZDAwZjBmZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjViNTlkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApAQCAtMCwwICsxLDg1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZ3JwX2dldGdyZ2lkX19kb2NfXywKKyJnZXRncmdpZCgkbW9kdWxlLCAvLCBpZClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELlxuIgorIlxuIgorIklmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICppZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86Z2V0Z3JnaWQiLCBfa2V5d29yZHMsCisgICAgICAgICZpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JnaWRfaW1wbChtb2R1bGUsIGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoZ3JwX2dldGdybmFtX19kb2NfXywKKyJnZXRncm5hbSgkbW9kdWxlLCAvLCBuYW1lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGdyb3VwIG5hbWUuXG4iCisiXG4iCisiSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOworCisjZGVmaW5lIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdybmFtX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitncnBfZ2V0Z3JuYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOmdldGdybmFtIiwgX2tleXdvcmRzLAorICAgICAgICAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JuYW1faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihncnBfZ2V0Z3JhbGxfX2RvY19fLAorImdldGdyYWxsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgZ3JvdXAgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLlxuIgorIlxuIgorIkFuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggXCcrXCcgb3IgXCctXCcgcmVwcmVzZW50cyBhbiBpbnN0cnVjdGlvblxuIgorInRvIHVzZSBZUC9OSVMgYW5kIG1heSBub3QgYmUgYWNjZXNzaWJsZSB2aWEgZ2V0Z3JuYW0gb3IgZ2V0Z3JnaWQuIik7CisKKyNkZWZpbmUgR1JQX0dFVEdSQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRncmFsbCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JhbGwsIE1FVEhfTk9BUkdTLCBncnBfZ2V0Z3JhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2dycF9nZXRncmFsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdyYWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGdycF9nZXRncmFsbF9pbXBsKG1vZHVsZSk7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTE5MWMyNTYwMGFmYjFiZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWEzMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaApAQCAtMCwwICsxLDk1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoTUQ1VHlwZV9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgTUQ1VFlQRV9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfY29weSwgTUVUSF9OT0FSR1MsIE1ENVR5cGVfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9jb3B5X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfY29weShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIE1ENVR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIE1ENVRZUEVfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pTUQ1VHlwZV9kaWdlc3QsIE1FVEhfTk9BUkdTLCBNRDVUeXBlX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9kaWdlc3RfaW1wbChNRDVvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorTUQ1VHlwZV9kaWdlc3QoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBNRDVUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoTUQ1VHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBNRDVUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgTUQ1VHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfaGV4ZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK01ENVR5cGVfaGV4ZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gTUQ1VHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKE1ENVR5cGVfdXBkYXRlX19kb2NfXywKKyJ1cGRhdGUoJHNlbGYsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0XCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4iKTsKKworI2RlZmluZSBNRDVUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKU1ENVR5cGVfdXBkYXRlLCBNRVRIX08sIE1ENVR5cGVfdXBkYXRlX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfbWQ1X21kNV9fZG9jX18sCisibWQ1KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBNRDUgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfTUQ1X01ENV9NRVRIT0RERUYgICAgXAorICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX21kNV9tZDVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19tZDVfbWQ1X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfbWQ1X21kNShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bWQ1IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9tZDVfbWQ1X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY4MDNkZWQ3MDFhY2E1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmNzAyYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaApAQCAtMCwwICsxLDU3OTEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihvc19zdGF0X19kb2NfXywKKyJzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LlxuIgorIiAgZGlyX2ZkXG4iCisiICAgIElmIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgICAgYW5kIHBhdGggc2hvdWxkIGJlIGEgcmVsYXRpdmUgc3RyaW5nOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0b1xuIgorIiAgICB0aGF0IGRpcmVjdG9yeS5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgICB0aGUgbGluayBwb2ludHMgdG8uXG4iCisiXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgorIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgorIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJJdFwncyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsic3RhdCIsIChQeUNGdW5jdGlvbilvc19zdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgInBhdGgiLCAwLCAxKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfbHN0YXRfX2RvY19fLAorImxzdGF0KCRtb2R1bGUsIC8sIHBhdGgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGgsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLlxuIgorIlxuIgorIkxpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworI2RlZmluZSBPU19MU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfbHN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHN0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxzdGF0IiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xzdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19hY2Nlc3NfX2RvY19fLAorImFjY2VzcygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSxcbiIKKyIgICAgICAgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCisiLS1cbiIKKyJcbiIKKyJVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKKyIgIG1vZGVcbiIKKyIgICAgT3BlcmF0aW5nLXN5c3RlbSBtb2RlIGJpdGZpZWxkLiAgQ2FuIGJlIEZfT0sgdG8gdGVzdCBleGlzdGVuY2UsXG4iCisiICAgIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKKyIgICAgZGlyZWN0b3J5LlxuIgorIiAgZWZmZWN0aXZlX2lkc1xuIgorIiAgICBJZiBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcbiIKKyIgICAgdGhlIHJlYWwgdWlkL2dpZC5cbiIKKyIgIGZvbGxvd19zeW1saW5rc1xuIgorIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgorIiAgICBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgorIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgorIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcbiIKKyIgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuIgorIiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiIpOworCisjZGVmaW5lIE9TX0FDQ0VTU19NRVRIT0RERUYgICAgXAorICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2FjY2Vzc19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWNjZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsICJwYXRoIiwgMCwgMSk7CisgICAgaW50IG1vZGU7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBlZmZlY3RpdmVfaWRzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfVFRZTkFNRSkKKworUHlEb2NfU1RSVkFSKG9zX3R0eW5hbWVfX2RvY19fLAorInR0eW5hbWUoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHRlcm1pbmFsIGRldmljZSBjb25uZWN0ZWQgdG8gXCdmZFwnLlxuIgorIlxuIgorIiAgZmRcbiIKKyIgICAgSW50ZWdlciBmaWxlIGRlc2NyaXB0b3IgaGFuZGxlLiIpOworCisjZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7InR0eW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdHR5bmFtZSwgTUVUSF9PLCBvc190dHluYW1lX19kb2NfX30sCisKK3N0YXRpYyBjaGFyICoKK29zX3R0eW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdHR5bmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3R0eW5hbWVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RUWU5BTUUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ1RFUk1JRCkKKworUHlEb2NfU1RSVkFSKG9zX2N0ZXJtaWRfX2RvY19fLAorImN0ZXJtaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgZm9yIHRoaXMgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19DVEVSTUlEX01FVEhPRERFRiAgICBcCisgICAgeyJjdGVybWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2N0ZXJtaWQsIE1FVEhfTk9BUkdTLCBvc19jdGVybWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jdGVybWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jdGVybWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2N0ZXJtaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NURVJNSUQpICovCisKK1B5RG9jX1NUUlZBUihvc19jaGRpcl9fZG9jX18sCisiY2hkaXIoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfQ0hESVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NoZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZGlyIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkNIRElSKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmNoZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfRkNIRElSKQorCitQeURvY19TVFJWQVIob3NfZmNoZGlyX19kb2NfXywKKyJmY2hkaXIoJG1vZHVsZSwgLywgZmQpXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorImZkIG11c3QgYmUgb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLlxuIgorIkVxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLiIpOworCisjZGVmaW5lIE9TX0ZDSERJUl9NRVRIT0RERUYgICAgXAorICAgIHsiZmNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaGRpcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaGRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNoZGlyX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GQ0hESVIpICovCisKK1B5RG9jX1NUUlZBUihvc19jaG1vZF9fZG9jX18sCisiY2htb2QoJG1vZHVsZSwgLywgcGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIHRvIGJlIG1vZGlmaWVkLiAgTWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHIgb3IgYnl0ZXMuXG4iCisiICAgIE9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgICAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuIgorIiAgbW9kZVxuIgorIiAgICBPcGVyYXRpbmctc3lzdGVtIG1vZGUgYml0ZmllbGQuXG4iCisiICBkaXJfZmRcbiIKKyIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKKyIgICAgZGlyZWN0b3J5LlxuIgorIiAgZm9sbG93X3N5bWxpbmtzXG4iCisiICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssXG4iCisiICAgIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCisiICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKKyJcbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfQ0hNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2htb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2NobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaG1vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2htb2QiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hNT0QpOworICAgIGludCBtb2RlOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9GQ0hNT0QpCisKK1B5RG9jX1NUUlZBUihvc19mY2htb2RfX2RvY19fLAorImZjaG1vZCgkbW9kdWxlLCAvLCBmZCwgbW9kZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIHRoZSBmaWxlIGdpdmVuIGJ5IGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4iKTsKKworI2RlZmluZSBPU19GQ0hNT0RfTUVUSE9EREVGICAgIFwKKyAgICB7ImZjaG1vZCIsIChQeUNGdW5jdGlvbilvc19mY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2htb2RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmNobW9kKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIGludCBmZDsKKyAgICBpbnQgbW9kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmZjaG1vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mY2htb2RfaW1wbChtb2R1bGUsIGZkLCBtb2RlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZDSE1PRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9MQ0hNT0QpCisKK1B5RG9jX1NUUlZBUihvc19sY2htb2RfX2RvY19fLAorImxjaG1vZCgkbW9kdWxlLCAvLCBwYXRoLCBtb2RlKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLCB3aXRob3V0IGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJcbiIKKyJJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcyBhZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LlxuIgorIkVxdWl2YWxlbnQgdG8gY2htb2QocGF0aCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5cIiIpOworCisjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYgICAgXAorICAgIHsibGNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG1vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG1vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNobW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2htb2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2htb2QiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTENITU9EKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NIRkxBR1MpCisKK1B5RG9jX1NUUlZBUihvc19jaGZsYWdzX19kb2NfXywKKyJjaGZsYWdzKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCBmaWxlIGZsYWdzLlxuIgorIlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcbiIKKyIgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorImZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuIgorInVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRiAgICBcCisgICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGZsYWdzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaGZsYWdzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hmbGFncyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CisgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hGTEFHUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9MQ0hGTEFHUykKKworUHlEb2NfU1RSVkFSKG9zX2xjaGZsYWdzX19kb2NfXywKKyJsY2hmbGFncygkbW9kdWxlLCAvLCBwYXRoLCBmbGFncylcbiIKKyItLVxuIgorIlxuIgorIlNldCBmaWxlIGZsYWdzLlxuIgorIlxuIgorIlRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuIgorIkVxdWl2YWxlbnQgdG8gY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKworI2RlZmluZSBPU19MQ0hGTEFHU19NRVRIT0RERUYgICAgXAorICAgIHsibGNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfbGNoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2hmbGFnc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNoZmxhZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNoZmxhZ3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOworICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MQ0hGTEFHUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DSFJPT1QpCisKK1B5RG9jX1NUUlZBUihvc19jaHJvb3RfX2RvY19fLAorImNocm9vdCgkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CisKKyNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRiAgICBcCisgICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hyb290X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaHJvb3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY2hyb290KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNocm9vdCIsICJwYXRoIiwgMCwgMCk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaHJvb3QiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jaHJvb3RfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hST09UKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZTWU5DKQorCitQeURvY19TVFJWQVIob3NfZnN5bmNfX2RvY19fLAorImZzeW5jKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzay4iKTsKKworI2RlZmluZSBPU19GU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsiZnN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZnN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN5bmMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZzeW5jIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN5bmNfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0ZTWU5DKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZTkMpCisKK1B5RG9jX1NUUlZBUihvc19zeW5jX19kb2NfXywKKyJzeW5jKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JjZSB3cml0ZSBvZiBldmVyeXRoaW5nIHRvIGRpc2suIik7CisKKyNkZWZpbmUgT1NfU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsic3luYyIsIChQeUNGdW5jdGlvbilvc19zeW5jLCBNRVRIX05PQVJHUywgb3Nfc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zeW5jX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU5DKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZEQVRBU1lOQykKKworUHlEb2NfU1RSVkFSKG9zX2ZkYXRhc3luY19fZG9jX18sCisiZmRhdGFzeW5jKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzayB3aXRob3V0IGZvcmNpbmcgdXBkYXRlIG9mIG1ldGFkYXRhLiIpOworCisjZGVmaW5lIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYgICAgXAorICAgIHsiZmRhdGFzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZkYXRhc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZkYXRhc3luY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZmRhdGFzeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZkYXRhc3luYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmRhdGFzeW5jX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GREFUQVNZTkMpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0hPV04pCisKK1B5RG9jX1NUUlZBUihvc19jaG93bl9fZG9jX18sCisiY2hvd24oJG1vZHVsZSwgLywgcGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXFxcbiIKKyJcbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCB0byBiZSBleGFtaW5lZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKKyIgIGRpcl9mZFxuIgorIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdFxuIgorIiAgICBkaXJlY3RvcnkuXG4iCisiICBmb2xsb3dfc3ltbGlua3NcbiIKKyIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKKyIgICAgc3RhdCB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgorIlxuIgorInBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG4iCisiICBsaW5rIHBvaW50cyB0by5cbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuIgorIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGICAgIFwKKyAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hvd25fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hvd24iLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hPV04pOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nob3duX2ltcGwobW9kdWxlLCAmcGF0aCwgdWlkLCBnaWQsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ0hPV04pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRkNIT1dOKQorCitQeURvY19TVFJWQVIob3NfZmNob3duX19kb2NfXywKKyJmY2hvd24oJG1vZHVsZSwgLywgZmQsIHVpZCwgZ2lkKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CisKKyNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRiAgICBcCisgICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNob3duX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZjaG93bihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisgICAgdWlkX3QgdWlkOworICAgIGdpZF90IGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNob3duX2ltcGwobW9kdWxlLCBmZCwgdWlkLCBnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRkNIT1dOKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0xDSE9XTikKKworUHlEb2NfU1RSVkFSKG9zX2xjaG93bl9fZG9jX18sCisibGNob3duKCRtb2R1bGUsIC8sIHBhdGgsIHVpZCwgZ2lkKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cbiIKKyJcbiIKKyJUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cbiIKKyJFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCisjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYgICAgXAorICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG93bl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGNob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19sY2hvd24oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hvd24iLCAicGF0aCIsIDAsIDApOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyY6bGNob3duIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0xDSE9XTikgKi8KKworUHlEb2NfU1RSVkFSKG9zX2dldGN3ZF9fZG9jX18sCisiZ2V0Y3dkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKyNkZWZpbmUgT1NfR0VUQ1dEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjd2QiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0Y3dkLCBNRVRIX05PQVJHUywgb3NfZ2V0Y3dkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGN3ZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRjd2RfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIob3NfZ2V0Y3dkYl9fZG9jX18sCisiZ2V0Y3dkYigkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgYnl0ZXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iKTsKKworI2RlZmluZSBPU19HRVRDV0RCX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjd2RiIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGN3ZGIsIE1FVEhfTk9BUkdTLCBvc19nZXRjd2RiX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RiX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRjd2RiKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGN3ZGJfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0xJTkspCisKK1B5RG9jX1NUUlZBUihvc19saW5rX19kb2NfXywKKyJsaW5rKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSxcbiIKKyIgICAgIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGxpbmsgd2lsbCBjcmVhdGUgYSBsaW5rIHRvIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuIgorIiAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG4iCisic3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcbiIKKyIgIHBsYXRmb3JtLiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhXG4iCisiICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX0xJTktfTUVUSE9EREVGICAgIFwKKyAgICB7ImxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpbmtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpbmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAic3JjIiwgMCwgMCk7CisgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgImRzdCIsIDAsIDApOworICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2xpbmtfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTElOSykgKi8KKworUHlEb2NfU1RSVkFSKG9zX2xpc3RkaXJfX2RvY19fLAorImxpc3RkaXIoJG1vZHVsZSwgLywgcGF0aD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG4iCisiICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBieXRlczsgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXNcbiIKKyIgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBiZSBzdHIuXG4iCisiSWYgcGF0aCBpcyBOb25lLCB1c2VzIHRoZSBwYXRoPVwnLlwnLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcjtcXFxuIgorIiAgdGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGEgZGlyZWN0b3J5LlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKKyJcbiIKKyJUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG4iCisiZW50cmllcyBcJy5cJyBhbmQgXCcuLlwnIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOworCisjZGVmaW5lIE9TX0xJU1RESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3RkaXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3RkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbGlzdGRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaXN0ZGlyIiwgInBhdGgiLCAxLCBQQVRIX0hBVkVfRkRPUEVORElSKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlzdGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXRmdWxscGF0aG5hbWVfX2RvY19fLAorIl9nZXRmdWxscGF0aG5hbWUoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2dldGZ1bGxwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZnVsbHBhdGhuYW1lLCBNRVRIX08sIG9zX19nZXRmdWxscGF0aG5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXRmdWxscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZ1bGxwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9nZXRmdWxscGF0aG5hbWUiLCAicGF0aCIsIDAsIDApOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRmdWxscGF0aG5hbWVfaW1wbChtb2R1bGUsICZwYXRoKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19fZ2V0ZmluYWxwYXRobmFtZV9fZG9jX18sCisiX2dldGZpbmFscGF0aG5hbWUoJG1vZHVsZSwgcGF0aCwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgaGVscGVyIGZ1bmN0aW9uIGZvciBzYW1lcGF0aCBvbiB3aW5kb3dzLiIpOworCisjZGVmaW5lIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRiAgICBcCisgICAgeyJfZ2V0ZmluYWxwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9PLCBvc19fZ2V0ZmluYWxwYXRobmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZ2V0ZmluYWxwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19faXNkaXJfX2RvY19fLAorIl9pc2RpcigkbW9kdWxlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBPU19fSVNESVJfTUVUSE9EREVGICAgIFwKKyAgICB7Il9pc2RpciIsIChQeUNGdW5jdGlvbilvc19faXNkaXIsIE1FVEhfTywgb3NfX2lzZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19faXNkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2lzZGlyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiX2lzZGlyIiwgInBhdGgiLCAwLCAwKTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX19pc2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX18sCisiX2dldHZvbHVtZXBhdGhuYW1lKCRtb2R1bGUsIC8sIHBhdGgpXG4iCisiLS1cbiIKKyJcbiIKKyJBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4iKTsKKworI2RlZmluZSBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXR2b2x1bWVwYXRobmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKK1B5RG9jX1NUUlZBUihvc19ta2Rpcl9fZG9jX18sCisibWtkaXIoJG1vZHVsZSwgLywgcGF0aCwgbW9kZT01MTEsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgZGlyZWN0b3J5LlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG4iCisiXG4iCisiVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX01LRElSX01FVEhPRERFRiAgICBcCisgICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtkaXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtkaXIiLCAicGF0aCIsIDAsIDApOworICAgIGludCBtb2RlID0gNTExOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX05JQ0UpCisKK1B5RG9jX1NUUlZBUihvc19uaWNlX19kb2NfXywKKyJuaWNlKCRtb2R1bGUsIGluY3JlbWVudCwgLylcbiIKKyItLVxuIgorIlxuIgorIkFkZCBpbmNyZW1lbnQgdG8gdGhlIHByaW9yaXR5IG9mIHByb2Nlc3MgYW5kIHJldHVybiB0aGUgbmV3IHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX05JQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7Im5pY2UiLCAoUHlDRnVuY3Rpb24pb3NfbmljZSwgTUVUSF9PLCBvc19uaWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19uaWNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGluY3JlbWVudCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19uaWNlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGluY3JlbWVudDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19uaWNlX2ltcGwobW9kdWxlLCBpbmNyZW1lbnQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTklDRSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQUklPUklUWSkKKworUHlEb2NfU1RSVkFSKG9zX2dldHByaW9yaXR5X19kb2NfXywKKyJnZXRwcmlvcml0eSgkbW9kdWxlLCAvLCB3aGljaCwgd2hvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKKworI2RlZmluZSBPU19HRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHJpb3JpdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHJpb3JpdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCBOVUxMfTsKKyAgICBpbnQgd2hpY2g7CisgICAgaW50IHdobzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLAorICAgICAgICAmd2hpY2gsICZ3aG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUFJJT1JJVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUUFJJT1JJVFkpCisKK1B5RG9jX1NUUlZBUihvc19zZXRwcmlvcml0eV9fZG9jX18sCisic2V0cHJpb3JpdHkoJG1vZHVsZSwgLywgd2hpY2gsIHdobywgcHJpb3JpdHkpXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCisjZGVmaW5lIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19zZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobywgaW50IHByaW9yaXR5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHByaW9yaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgInByaW9yaXR5IiwgTlVMTH07CisgICAgaW50IHdoaWNoOworICAgIGludCB3aG87CisgICAgaW50IHByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLAorICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobywgcHJpb3JpdHkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUFJJT1JJVFkpICovCisKK1B5RG9jX1NUUlZBUihvc19yZW5hbWVfX2RvY19fLAorInJlbmFtZSgkbW9kdWxlLCAvLCBzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG4iCisiICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcbiIKKyIgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1JFTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbmFtZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAic3JjIiwgMCwgMCk7CisgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbmFtZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc3JjICovCisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIC8qIENsZWFudXAgZm9yIGRzdCAqLworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRtb2R1bGUsIC8sIHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uXG4iCisiXG4iCisiSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuIgorIiAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG4iCisiICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cIiIpOworCisjZGVmaW5lIE9TX1JFUExBQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pb3NfcmVwbGFjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlcGxhY2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlcGxhY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlcGxhY2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZXBsYWNlX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBzcmMgKi8KKyAgICBwYXRoX2NsZWFudXAoJnNyYyk7CisgICAgLyogQ2xlYW51cCBmb3IgZHN0ICovCisgICAgcGF0aF9jbGVhbnVwKCZkc3QpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3JtZGlyX19kb2NfXywKKyJybWRpcigkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGRpcmVjdG9yeS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1JNRElSX01FVEhPRERFRiAgICBcCisgICAgeyJybWRpciIsIChQeUNGdW5jdGlvbilvc19ybWRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JtZGlyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ybWRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ybWRpcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicm1kaXIiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JtZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zeXN0ZW1fX2RvY19fLAorInN5c3RlbSgkbW9kdWxlLCAvLCBjb21tYW5kKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOworCisjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tbWFuZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeXN0ZW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgUHlfVU5JQ09ERSAqY29tbWFuZDsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1OnN5c3RlbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmNvbW1hbmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3Nfc3lzdGVtX19kb2NfXywKKyJzeXN0ZW0oJG1vZHVsZSwgLywgY29tbWFuZClcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKKworI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKworc3RhdGljIGxvbmcKK29zX3N5c3RlbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjb21tYW5kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5c3RlbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY29tbWFuZCA9IE5VTEw7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3lzdGVtIiwgX2tleXdvcmRzLAorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBjb21tYW5kICovCisgICAgUHlfWERFQ1JFRihjb21tYW5kKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTVEVNKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKSAqLworCitQeURvY19TVFJWQVIob3NfdW1hc2tfX2RvY19fLAorInVtYXNrKCRtb2R1bGUsIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgbnVtZXJpYyB1bWFzayBhbmQgcmV0dXJuIHRoZSBwcmV2aW91cyB1bWFzay4iKTsKKworI2RlZmluZSBPU19VTUFTS19NRVRIT0RERUYgICAgXAorICAgIHsidW1hc2siLCAoUHlDRnVuY3Rpb24pb3NfdW1hc2ssIE1FVEhfTywgb3NfdW1hc2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VtYXNrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1hc2spOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW1hc2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3VtYXNrX2ltcGwobW9kdWxlLCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfdW5saW5rX19kb2NfXywKKyJ1bmxpbmsoJG1vZHVsZSwgLywgcGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHJlbW92ZSgpKS5cbiIKKyJcbiIKKyJJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgorIiAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cbiIKKyJkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuIgorIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1VOTElOS19NRVRIT0RERUYgICAgXAorICAgIHsidW5saW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX3VubGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3VubGlua19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VubGluayhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidW5saW5rIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdW5saW5rX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19yZW1vdmVfX2RvY19fLAorInJlbW92ZSgkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhIGZpbGUgKHNhbWUgYXMgdW5saW5rKCkpLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfUkVNT1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVtb3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmUiLCAicGF0aCIsIDAsIDApOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmVfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9VTkFNRSkKKworUHlEb2NfU1RSVkFSKG9zX3VuYW1lX19kb2NfXywKKyJ1bmFtZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuIgorIlxuIgorIlRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcbiIKKyIgIChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwgbWFjaGluZSkiKTsKKworI2RlZmluZSBPU19VTkFNRV9NRVRIT0RERUYgICAgXAorICAgIHsidW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfdW5hbWUsIE1FVEhfTk9BUkdTLCBvc191bmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX3VuYW1lX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9VTkFNRSkgKi8KKworUHlEb2NfU1RSVkFSKG9zX3V0aW1lX19kb2NfXywKKyJ1dGltZSgkbW9kdWxlLCAvLCBwYXRoLCB0aW1lcz1Ob25lLCAqLCBucz1Ob25lLCBkaXJfZmQ9Tm9uZSxcbiIKKyIgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG4iCisiXG4iCisiSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcbiIKKyIgICAgYXRpbWUgYW5kIG10aW1lIHNob3VsZCBiZSBleHByZXNzZWQgYXMgZmxvYXQgc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guXG4iCisiSWYgbnMgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7XG4iCisiICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHNcbiIKKyIgICAgc2luY2UgdGhlIGVwb2NoLlxuIgorIklmIHRpbWVzIGlzIE5vbmUgYW5kIG5zIGlzIHVuc3BlY2lmaWVkLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuXG4iCisiU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG4iCisiICBsaW5rIHBvaW50cyB0by5cbiIKKyJJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aFxuIgorIiAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisjZGVmaW5lIE9TX1VUSU1FX01FVEhPRERFRiAgICBcCisgICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3V0aW1lX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191dGltZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLAorICAgICAgICAgICAgICBQeU9iamVjdCAqbnMsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdXRpbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1dGltZSIsICJwYXRoIiwgMCwgUEFUSF9VVElNRV9IQVZFX0ZEKTsKKyAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8TyRPTyZwOnV0aW1lIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZ0aW1lcywgJm5zLCBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXRpbWVfaW1wbChtb2R1bGUsICZwYXRoLCB0aW1lcywgbnMsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19fZXhpdF9fZG9jX18sCisiX2V4aXQoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLiIpOworCisjZGVmaW5lIE9TX19FWElUX01FVEhPRERFRiAgICBcCisgICAgeyJfZXhpdCIsIChQeUNGdW5jdGlvbilvc19fZXhpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19leGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19fZXhpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2V4aXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpfZXhpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZXhpdF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0VYRUNWKQorCitQeURvY19TVFJWQVIob3NfZXhlY3ZfX2RvY19fLAorImV4ZWN2KCRtb2R1bGUsIHBhdGgsIGFyZ3YsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cbiIKKyJcbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuXG4iCisiICBhcmd2XG4iCisiICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19FWEVDVl9NRVRIT0RERUYgICAgXAorICAgIHsiZXhlY3YiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3YsIE1FVEhfVkFSQVJHUywgb3NfZXhlY3ZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2V4ZWN2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJndjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZfaW1wbChtb2R1bGUsIHBhdGgsIGFyZ3YpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBQeV9YREVDUkVGKHBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9FWEVDVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9FWEVDVikKKworUHlEb2NfU1RSVkFSKG9zX2V4ZWN2ZV9fZG9jX18sCisiZXhlY3ZlKCRtb2R1bGUsIC8sIHBhdGgsIGFyZ3YsIGVudilcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuIgorIlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLlxuIgorIiAgZW52XG4iCisiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CisKKyNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZXhlY3ZlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19leGVjdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAorICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19leGVjdmUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52IiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3ZlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRkVYRUNWRSk7CisgICAgUHlPYmplY3QgKmFyZ3Y7CisgICAgUHlPYmplY3QgKmVudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YsIGVudik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKworUHlEb2NfU1RSVkFSKG9zX3NwYXdudl9fZG9jX18sCisic3Bhd252KCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeGVjdXRlIHRoZSBwcm9ncmFtIHNwZWNpZmllZCBieSBwYXRoIGluIGEgbmV3IHByb2Nlc3MuXG4iCisiXG4iCisiICBtb2RlXG4iCisiICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi5cbiIKKyIgIHBhdGhcbiIKKyIgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuXG4iCisiICBhcmd2XG4iCisiICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4iKTsKKworI2RlZmluZSBPU19TUEFXTlZfTUVUSE9EREVGICAgIFwKKyAgICB7InNwYXdudiIsIChQeUNGdW5jdGlvbilvc19zcGF3bnYsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zcGF3bnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NwYXdudihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbW9kZTsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZ3Y7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwKKyAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIFB5X1hERUNSRUYocGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TUEFXTlYpCisKK1B5RG9jX1NUUlZBUihvc19zcGF3bnZlX19kb2NfXywKKyJzcGF3bnZlKCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIGVudiwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4ZWN1dGUgdGhlIHByb2dyYW0gc3BlY2lmaWVkIGJ5IHBhdGggaW4gYSBuZXcgcHJvY2Vzcy5cbiIKKyJcbiIKKyIgIG1vZGVcbiIKKyIgICAgTW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uLlxuIgorIiAgcGF0aFxuIgorIiAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS5cbiIKKyIgIGFyZ3ZcbiIKKyIgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLlxuIgorIiAgZW52XG4iCisiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CisKKyNkZWZpbmUgT1NfU1BBV05WRV9NRVRIT0RERUYgICAgXAorICAgIHsic3Bhd252ZSIsIChQeUNGdW5jdGlvbilvc19zcGF3bnZlLCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NwYXdudmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3Bhd252ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbW9kZTsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZ3Y7CisgICAgUHlPYmplY3QgKmVudjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsCisgICAgICAgICZtb2RlLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBQeV9YREVDUkVGKHBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfRk9SSzEpCisKK1B5RG9jX1NUUlZBUihvc19mb3JrMV9fZG9jX18sCisiZm9yazEoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkZvcmsgYSBjaGlsZCBwcm9jZXNzIHdpdGggYSBzaW5nbGUgbXVsdGlwbGV4ZWQgKGkuZS4sIG5vdCBib3VuZCkgdGhyZWFkLlxuIgorIlxuIgorIlJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19GT1JLMV9NRVRIT0RERUYgICAgXAorICAgIHsiZm9yazEiLCAoUHlDRnVuY3Rpb24pb3NfZm9yazEsIE1FVEhfTk9BUkdTLCBvc19mb3JrMV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9yazFfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZvcmsxKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2ZvcmsxX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GT1JLMSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9GT1JLKQorCitQeURvY19TVFJWQVIob3NfZm9ya19fZG9jX18sCisiZm9yaygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRm9yayBhIGNoaWxkIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLiIpOworCisjZGVmaW5lIE9TX0ZPUktfTUVUSE9EREVGICAgIFwKKyAgICB7ImZvcmsiLCAoUHlDRnVuY3Rpb24pb3NfZm9yaywgTUVUSF9OT0FSR1MsIG9zX2ZvcmtfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZvcmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZvcmsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZm9ya19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRk9SSykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCkKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19fLAorInNjaGVkX2dldF9wcmlvcml0eV9tYXgoJG1vZHVsZSwgLywgcG9saWN5KVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgaW50IHBvbGljeTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6c2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnBvbGljeSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwobW9kdWxlLCBwb2xpY3kpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKCRtb2R1bGUsIC8sIHBvbGljeSlcbiIKKyItLVxuIgorIlxuIgorIkdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBwb2xpY3kpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBvbGljeSIsIE5VTEx9OworICAgIGludCBwb2xpY3k7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBfa2V5d29yZHMsCisgICAgICAgICZwb2xpY3kpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKG1vZHVsZSwgcG9saWN5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX2dldHNjaGVkdWxlcigkbW9kdWxlLCBwaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJHZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkeSBieSBwaWQuXG4iCisiXG4iCisiUGFzc2luZyAwIGZvciBwaWQgcmV0dXJucyB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfR0VUU0NIRURVTEVSX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9nZXRzY2hlZHVsZXIiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyLCBNRVRIX08sIG9zX3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfZ2V0c2NoZWR1bGVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldHNjaGVkdWxlcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIChkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfcGFyYW1fX2RvY19fLAorInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KVxuIgorIi0tXG4iCisiXG4iCisiQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5XCIpO1xuIgorIlxuIgorIiAgc2NoZWRfcHJpb3JpdHlcbiIKKyIgICAgQSBzY2hlZHVsaW5nIHBhcmFtZXRlci4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3BhcmFtX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc2NoZWRfcHJpb3JpdHkpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfcGFyYW0oUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNjaGVkX3ByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzY2hlZF9wYXJhbSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNjaGVkX3ByaW9yaXR5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3BhcmFtX2ltcGwodHlwZSwgc2NoZWRfcHJpb3JpdHkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgKGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKworUHlEb2NfU1RSVkFSKG9zX3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX18sCisic2NoZWRfc2V0c2NoZWR1bGVyKCRtb2R1bGUsIHBpZCwgcG9saWN5LCBwYXJhbSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLlxuIgorIlxuIgorIklmIHBpZCBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG4iCisicGFyYW0gaXMgYW4gaW5zdGFuY2Ugb2Ygc2NoZWRfcGFyYW0uIik7CisKKyNkZWZpbmUgT1NfU0NIRURfU0VUU0NIRURVTEVSX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9zZXRzY2hlZHVsZXIiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfc2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIG9zX3NjaGVkX3NldHNjaGVkdWxlcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgcG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNjaGVkX3BhcmFtICpwYXJhbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF9zZXRzY2hlZHVsZXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAorICAgICAgICAmcGlkLCAmcG9saWN5LCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX2ltcGwobW9kdWxlLCBwaWQsIHBvbGljeSwgJnBhcmFtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAorInNjaGVkX2dldHBhcmFtKCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJcbiIKKyJJZiBwaWQgaXMgMCwgcmV0dXJucyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLlxuIgorIlJldHVybiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfZ2V0cGFyYW0iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0cGFyYW0sIE1FVEhfTywgb3Nfc2NoZWRfZ2V0cGFyYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldHBhcmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldHBhcmFtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfc2V0cGFyYW1fX2RvY19fLAorInNjaGVkX3NldHBhcmFtKCRtb2R1bGUsIHBpZCwgcGFyYW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJcbiIKKyJJZiBwaWQgaXMgMCwgc2V0cyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLlxuIgorInBhcmFtIHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9TRVRQQVJBTV9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfc2V0cGFyYW0iLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfc2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgb3Nfc2NoZWRfc2V0cGFyYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldHBhcmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldHBhcmFtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiTyY6c2NoZWRfc2V0cGFyYW0iLAorICAgICAgICAmcGlkLCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCwgJnBhcmFtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NDSEVEX0gpICYmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKKyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoJG1vZHVsZSwgcGlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCwgaW4gc2Vjb25kcy5cbiIKKyJcbiIKKyJWYWx1ZSByZXR1cm5lZCBpcyBhIGZsb2F0LiIpOworCisjZGVmaW5lIE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbCwgTUVUSF9PLCBvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19ffSwKKworc3RhdGljIGRvdWJsZQorb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBkb3VibGUgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX2ltcGwobW9kdWxlLCBwaWQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMS4wKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlGbG9hdF9Gcm9tRG91YmxlKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfeWllbGRfX2RvY19fLAorInNjaGVkX3lpZWxkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJWb2x1bnRhcmlseSByZWxpbnF1aXNoIHRoZSBDUFUuIik7CisKKyNkZWZpbmUgT1NfU0NIRURfWUlFTERfTUVUSE9EREVGICAgIFwKKyAgICB7InNjaGVkX3lpZWxkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX3lpZWxkLCBNRVRIX05PQVJHUywgb3Nfc2NoZWRfeWllbGRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3lpZWxkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zY2hlZF95aWVsZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zY2hlZF95aWVsZF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpCisKK1B5RG9jX1NUUlZBUihvc19zY2hlZF9zZXRhZmZpbml0eV9fZG9jX18sCisic2NoZWRfc2V0YWZmaW5pdHkoJG1vZHVsZSwgcGlkLCBtYXNrLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBDUFUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgdG8gbWFzay5cbiIKKyJcbiIKKyJtYXNrIHNob3VsZCBiZSBhbiBpdGVyYWJsZSBvZiBpbnRlZ2VycyBpZGVudGlmeWluZyBDUFVzLiIpOworCisjZGVmaW5lIE9TX1NDSEVEX1NFVEFGRklOSVRZX01FVEhPRERFRiAgICBcCisgICAgeyJzY2hlZF9zZXRhZmZpbml0eSIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9zZXRhZmZpbml0eSwgTUVUSF9WQVJBUkdTLCBvc19zY2hlZF9zZXRhZmZpbml0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIFB5T2JqZWN0ICptYXNrKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX3NldGFmZmluaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBQeU9iamVjdCAqbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPOnNjaGVkX3NldGFmZmluaXR5IiwKKyAgICAgICAgJnBpZCwgJm1hc2spKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCwgbWFzayk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfSCkgJiYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVEFGRklOSVRZKQorCitQeURvY19TVFJWQVIob3Nfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX2dldGFmZmluaXR5KCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiXG4iCisiVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4iKTsKKworI2RlZmluZSBPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYgICAgXAorICAgIHsic2NoZWRfZ2V0YWZmaW5pdHkiLCAoUHlDRnVuY3Rpb24pb3Nfc2NoZWRfZ2V0YWZmaW5pdHksIE1FVEhfTywgb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldGFmZmluaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NjaGVkX2dldGFmZmluaXR5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9IKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpKQorCitQeURvY19TVFJWQVIob3Nfb3BlbnB0eV9fZG9jX18sCisib3BlbnB0eSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBhIHBzZXVkby10ZXJtaW5hbC5cbiIKKyJcbiIKKyJSZXR1cm4gYSB0dXBsZSBvZiAobWFzdGVyX2ZkLCBzbGF2ZV9mZCkgY29udGFpbmluZyBvcGVuIGZpbGUgZGVzY3JpcHRvcnNcbiIKKyJmb3IgYm90aCB0aGUgbWFzdGVyIGFuZCBzbGF2ZSBlbmRzLiIpOworCisjZGVmaW5lIE9TX09QRU5QVFlfTUVUSE9EREVGICAgIFwKKyAgICB7Im9wZW5wdHkiLCAoUHlDRnVuY3Rpb24pb3Nfb3BlbnB0eSwgTUVUSF9OT0FSR1MsIG9zX29wZW5wdHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX29wZW5wdHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX29wZW5wdHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3Nfb3BlbnB0eV9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZPUktQVFkpCisKK1B5RG9jX1NUUlZBUihvc19mb3JrcHR5X19kb2NfXywKKyJmb3JrcHR5KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGb3JrIGEgbmV3IHByb2Nlc3Mgd2l0aCBhIG5ldyBwc2V1ZG8tdGVybWluYWwgYXMgY29udHJvbGxpbmcgdHR5LlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiAocGlkLCBtYXN0ZXJfZmQpLlxuIgorIkxpa2UgZm9yaygpLCByZXR1cm4gcGlkIG9mIDAgdG8gdGhlIGNoaWxkIHByb2Nlc3MsXG4iCisiYW5kIHBpZCBvZiBjaGlsZCB0byB0aGUgcGFyZW50IHByb2Nlc3MuXG4iCisiVG8gYm90aCwgcmV0dXJuIGZkIG9mIG5ld2x5IG9wZW5lZCBwc2V1ZG8tdGVybWluYWwuIik7CisKKyNkZWZpbmUgT1NfRk9SS1BUWV9NRVRIT0RERUYgICAgXAorICAgIHsiZm9ya3B0eSIsIChQeUNGdW5jdGlvbilvc19mb3JrcHR5LCBNRVRIX05PQVJHUywgb3NfZm9ya3B0eV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9ya3B0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZm9ya3B0eShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19mb3JrcHR5X2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GT1JLUFRZKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVEVHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRlZ2lkX19kb2NfXywKKyJnZXRlZ2lkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VURUdJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0ZWdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRlZ2lkLCBNRVRIX05PQVJHUywgb3NfZ2V0ZWdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0ZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0ZWdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRlZ2lkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRFR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVEVVSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRldWlkX19kb2NfXywKKyJnZXRldWlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgdXNlciBpZC4iKTsKKworI2RlZmluZSBPU19HRVRFVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRldWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGV1aWQsIE1FVEhfTk9BUkdTLCBvc19nZXRldWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRldWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGV1aWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVEVVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUR0lEKQorCitQeURvY19TVFJWQVIob3NfZ2V0Z2lkX19kb2NfXywKKyJnZXRnaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGdyb3VwIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Z2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldGdpZCwgTUVUSF9OT0FSR1MsIG9zX2dldGdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Z2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0Z2lkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRHSUQpICovCisKK1B5RG9jX1NUUlZBUihvc19nZXRwaWRfX2RvY19fLAorImdldHBpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgaWQuIik7CisKKyNkZWZpbmUgT1NfR0VUUElEX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRwaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGlkLCBNRVRIX05PQVJHUywgb3NfZ2V0cGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRwaWRfaW1wbChtb2R1bGUpOworfQorCisjaWYgZGVmaW5lZChIQVZFX0dFVEdST1VQUykKKworUHlEb2NfU1RSVkFSKG9zX2dldGdyb3Vwc19fZG9jX18sCisiZ2V0Z3JvdXBzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgSURzIGZvciB0aGUgcHJvY2Vzcy4iKTsKKworI2RlZmluZSBPU19HRVRHUk9VUFNfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGdyb3VwcyIsIChQeUNGdW5jdGlvbilvc19nZXRncm91cHMsIE1FVEhfTk9BUkdTLCBvc19nZXRncm91cHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGdyb3Vwc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0Z3JvdXBzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2dldGdyb3Vwc19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUR1JPVVBTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFBHSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRwZ2lkX19kb2NfXywKKyJnZXRwZ2lkKCRtb2R1bGUsIC8sIHBpZClcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIpOworCisjZGVmaW5lIE9TX0dFVFBHSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHBnaWQiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHBnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBpZCIsIE5VTEx9OworICAgIHBpZF90IHBpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHBnaWQiLCBfa2V5d29yZHMsCisgICAgICAgICZwaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUEdSUCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHBncnBfX2RvY19fLAorImdldHBncnAoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzIGdyb3VwIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVFBHUlBfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHBncnAiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0cGdycCwgTUVUSF9OT0FSR1MsIG9zX2dldHBncnBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBncnBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldHBncnAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0cGdycF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUEdSUCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRQR1JQKQorCitQeURvY19TVFJWQVIob3Nfc2V0cGdycF9fZG9jX18sCisic2V0cGdycCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWFrZSB0aGUgY3VycmVudCBwcm9jZXNzIHRoZSBsZWFkZXIgb2YgaXRzIHByb2Nlc3MgZ3JvdXAuIik7CisKKyNkZWZpbmUgT1NfU0VUUEdSUF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cGdycCIsIChQeUNGdW5jdGlvbilvc19zZXRwZ3JwLCBNRVRIX05PQVJHUywgb3Nfc2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zZXRwZ3JwX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRQR1JQKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFBQSUQpCisKK1B5RG9jX1NUUlZBUihvc19nZXRwcGlkX19kb2NfXywKKyJnZXRwcGlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHBhcmVudFwncyBwcm9jZXNzIGlkLlxuIgorIlxuIgorIklmIHRoZSBwYXJlbnQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQsIFdpbmRvd3MgbWFjaGluZXMgd2lsbCBzdGlsbFxuIgorInJldHVybiBpdHMgaWQ7IG90aGVycyBzeXN0ZW1zIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgXCdpbml0XCcgcHJvY2VzcyAoMSkuIik7CisKKyNkZWZpbmUgT1NfR0VUUFBJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHBpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwcGlkLCBNRVRIX05PQVJHUywgb3NfZ2V0cHBpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cHBpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19nZXRwcGlkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRQUElEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVExPR0lOKQorCitQeURvY19TVFJWQVIob3NfZ2V0bG9naW5fX2RvY19fLAorImdldGxvZ2luKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGFjdHVhbCBsb2dpbiBuYW1lLiIpOworCisjZGVmaW5lIE9TX0dFVExPR0lOX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRsb2dpbiIsIChQeUNGdW5jdGlvbilvc19nZXRsb2dpbiwgTUVUSF9OT0FSR1MsIG9zX2dldGxvZ2luX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRsb2dpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0bG9naW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0bG9naW5faW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVExPR0lOKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFVJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHVpZF9fZG9jX18sCisiZ2V0dWlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyB1c2VyIGlkLiIpOworCisjZGVmaW5lIE9TX0dFVFVJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0dWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHVpZCwgTUVUSF9OT0FSR1MsIG9zX2dldHVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0dWlkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfS0lMTCkKKworUHlEb2NfU1RSVkFSKG9zX2tpbGxfX2RvY19fLAorImtpbGwoJG1vZHVsZSwgcGlkLCBzaWduYWwsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJLaWxsIGEgcHJvY2VzcyB3aXRoIGEgc2lnbmFsLiIpOworCisjZGVmaW5lIE9TX0tJTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImtpbGwiLCAoUHlDRnVuY3Rpb24pb3Nfa2lsbCwgTUVUSF9WQVJBUkdTLCBvc19raWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19raWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBQeV9zc2l6ZV90IHNpZ25hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19raWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBQeV9zc2l6ZV90IHNpZ25hbDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJuOmtpbGwiLAorICAgICAgICAmcGlkLCAmc2lnbmFsKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxfaW1wbChtb2R1bGUsIHBpZCwgc2lnbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0tJTEwpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfS0lMTFBHKQorCitQeURvY19TVFJWQVIob3Nfa2lsbHBnX19kb2NfXywKKyJraWxscGcoJG1vZHVsZSwgcGdpZCwgc2lnbmFsLCAvKVxuIgorIi0tXG4iCisiXG4iCisiS2lsbCBhIHByb2Nlc3MgZ3JvdXAgd2l0aCBhIHNpZ25hbC4iKTsKKworI2RlZmluZSBPU19LSUxMUEdfTUVUSE9EREVGICAgIFwKKyAgICB7ImtpbGxwZyIsIChQeUNGdW5jdGlvbilvc19raWxscGcsIE1FVEhfVkFSQVJHUywgb3Nfa2lsbHBnX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19raWxscGdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwZ2lkLCBpbnQgc2lnbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxwZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwZ2lkOworICAgIGludCBzaWduYWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLAorICAgICAgICAmcGdpZCwgJnNpZ25hbCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19raWxscGdfaW1wbChtb2R1bGUsIHBnaWQsIHNpZ25hbCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9LSUxMUEcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUExPQ0spCisKK1B5RG9jX1NUUlZBUihvc19wbG9ja19fZG9jX18sCisicGxvY2soJG1vZHVsZSwgb3AsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMb2NrIHByb2dyYW0gc2VnbWVudHMgaW50byBtZW1vcnkuXCIpOyIpOworCisjZGVmaW5lIE9TX1BMT0NLX01FVEhPRERFRiAgICBcCisgICAgeyJwbG9jayIsIChQeUNGdW5jdGlvbilvc19wbG9jaywgTUVUSF9PLCBvc19wbG9ja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGxvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgb3ApOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGxvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgb3A7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGxvY2siLCAmb3ApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGxvY2tfaW1wbChtb2R1bGUsIG9wKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BMT0NLKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFVJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHVpZF9fZG9jX18sCisic2V0dWlkKCRtb2R1bGUsIHVpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHVzZXIgaWQuIik7CisKKyNkZWZpbmUgT1NfU0VUVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXR1aWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0dWlkLCBNRVRIX08sIG9zX3NldHVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgdWlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHVpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IHVpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0dWlkX2ltcGwobW9kdWxlLCB1aWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEVVSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRldWlkX19kb2NfXywKKyJzZXRldWlkKCRtb2R1bGUsIGV1aWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgdXNlciBpZC4iKTsKKworI2RlZmluZSBPU19TRVRFVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRldWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldGV1aWQsIE1FVEhfTywgb3Nfc2V0ZXVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZXVpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IGV1aWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0ZXVpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IGV1aWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZXVpZF9pbXBsKG1vZHVsZSwgZXVpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TRVRFVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEVHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRlZ2lkX19kb2NfXywKKyJzZXRlZ2lkKCRtb2R1bGUsIGVnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyBlZmZlY3RpdmUgZ3JvdXAgaWQuIik7CisKKyNkZWZpbmUgT1NfU0VURUdJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0ZWdpZCIsIChQeUNGdW5jdGlvbilvc19zZXRlZ2lkLCBNRVRIX08sIG9zX3NldGVnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCBlZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGVnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBnaWRfdCBlZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGVnaWRfaW1wbChtb2R1bGUsIGVnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VURUdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRSRVVJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHJldWlkX19kb2NfXywKKyJzZXRyZXVpZCgkbW9kdWxlLCBydWlkLCBldWlkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIHVzZXIgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFVUlEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRyZXVpZCIsIChQeUNGdW5jdGlvbilvc19zZXRyZXVpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZXVpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmV1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCBydWlkLCB1aWRfdCBldWlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJldWlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVpZF90IHJ1aWQ7CisgICAgdWlkX3QgZXVpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZXVpZCIsCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJldWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFJFVUlEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFR0lEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cmVnaWRfX2RvY19fLAorInNldHJlZ2lkKCRtb2R1bGUsIHJnaWQsIGVnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFR0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRyZWdpZCIsIChQeUNGdW5jdGlvbilvc19zZXRyZWdpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZWdpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCByZ2lkLCBnaWRfdCBlZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IHJnaWQ7CisgICAgZ2lkX3QgZWdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZWdpZCIsCisgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlZ2lkX2ltcGwobW9kdWxlLCByZ2lkLCBlZ2lkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFJFR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NFVEdJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldGdpZF9fZG9jX18sCisic2V0Z2lkKCRtb2R1bGUsIGdpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgY3VycmVudCBwcm9jZXNzXCdzIGdyb3VwIGlkLiIpOworCisjZGVmaW5lIE9TX1NFVEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0Z2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldGdpZCwgTUVUSF9PLCBvc19zZXRnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IGdpZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBnaWRfdCBnaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGdpZF9pbXBsKG1vZHVsZSwgZ2lkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVEdJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRHUk9VUFMpCisKK1B5RG9jX1NUUlZBUihvc19zZXRncm91cHNfX2RvY19fLAorInNldGdyb3VwcygkbW9kdWxlLCBncm91cHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvIGxpc3QuIik7CisKKyNkZWZpbmUgT1NfU0VUR1JPVVBTX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRncm91cHMiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0Z3JvdXBzLCBNRVRIX08sIG9zX3NldGdyb3Vwc19fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVEdST1VQUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUMykKKworUHlEb2NfU1RSVkFSKG9zX3dhaXQzX19kb2NfXywKKyJ3YWl0MygkbW9kdWxlLCAvLCBvcHRpb25zKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOlxuIgorIiAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpIik7CisKKyNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXQzIiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfd2FpdDNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXQzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG9wdGlvbnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgaW50IG9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOndhaXQzIiwgX2tleXdvcmRzLAorICAgICAgICAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0M19pbXBsKG1vZHVsZSwgb3B0aW9ucyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9XQUlUMykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUNCkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXQ0X19kb2NfXywKKyJ3YWl0NCgkbW9kdWxlLCAvLCBwaWQsIG9wdGlvbnMpXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgc3BlY2lmaWMgY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNoaWxkIHByb2Nlc3M6XG4iCisiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKKworI2RlZmluZSBPU19XQUlUNF9NRVRIT0RERUYgICAgXAorICAgIHsid2FpdDQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0NF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdDRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBvcHRpb25zKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXQ0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGlkIiwgIm9wdGlvbnMiLCBOVUxMfTsKKyAgICBwaWRfdCBwaWQ7CisgICAgaW50IG9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCBfa2V5d29yZHMsCisgICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQ0X2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVDQpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXRpZF9fZG9jX18sCisid2FpdGlkKCRtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSByZXN1bHQgb2Ygd2FpdGluZyBmb3IgYSBwcm9jZXNzIG9yIHByb2Nlc3Nlcy5cbiIKKyJcbiIKKyIgIGlkdHlwZVxuIgorIiAgICBNdXN0IGJlIG9uZSBvZiBiZSBQX1BJRCwgUF9QR0lEIG9yIFBfQUxMLlxuIgorIiAgaWRcbiIKKyIgICAgVGhlIGlkIHRvIHdhaXQgb24uXG4iCisiICBvcHRpb25zXG4iCisiICAgIENvbnN0cnVjdGVkIGZyb20gdGhlIE9SaW5nIG9mIG9uZSBvciBtb3JlIG9mIFdFWElURUQsIFdTVE9QUEVEXG4iCisiICAgIG9yIFdDT05USU5VRUQgYW5kIGFkZGl0aW9uYWxseSBtYXkgYmUgT1JlZCB3aXRoIFdOT0hBTkcgb3IgV05PV0FJVC5cbiIKKyJcbiIKKyJSZXR1cm5zIGVpdGhlciB3YWl0aWRfcmVzdWx0IG9yIE5vbmUgaWYgV05PSEFORyBpcyBzcGVjaWZpZWQgYW5kIHRoZXJlIGFyZVxuIgorIm5vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisKKyNkZWZpbmUgT1NfV0FJVElEX01FVEhPRERFRiAgICBcCisgICAgeyJ3YWl0aWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd2FpdGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaWR0eXBlX3QgaWR0eXBlLCBpZF90IGlkLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaWR0eXBlX3QgaWR0eXBlOworICAgIGlkX3QgaWQ7CisgICAgaW50IG9wdGlvbnM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwKKyAgICAgICAgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0aWRfaW1wbChtb2R1bGUsIGlkdHlwZSwgaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKQorCitQeURvY19TVFJWQVIob3Nfd2FpdHBpZF9fZG9jX18sCisid2FpdHBpZCgkbW9kdWxlLCBwaWQsIG9wdGlvbnMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBjaGlsZCBwcm9jZXNzOlxuIgorIiAgICAocGlkLCBzdGF0dXMpXG4iCisiXG4iCisiVGhlIG9wdGlvbnMgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX1dBSVRQSURfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLAorICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVFBJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DV0FJVCkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXRwaWRfX2RvY19fLAorIndhaXRwaWQoJG1vZHVsZSwgcGlkLCBvcHRpb25zLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGdpdmVuIHByb2Nlc3MuXG4iCisiXG4iCisiUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgcHJvY2VzczpcbiIKKyIgICAgKHBpZCwgc3RhdHVzIDw8IDgpXG4iCisiXG4iCisiVGhlIG9wdGlvbnMgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworCisjZGVmaW5lIE9TX1dBSVRQSURfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc193YWl0cGlkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2ludHB0cl90IHBpZDsKKyAgICBpbnQgb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfSU5UUFRSICJpOndhaXRwaWQiLAorICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfQ1dBSVQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfV0FJVCkKKworUHlEb2NfU1RSVkFSKG9zX3dhaXRfX2RvY19fLAorIndhaXQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczpcbiIKKyIgICAgKHBpZCwgc3RhdHVzKSIpOworCisjZGVmaW5lIE9TX1dBSVRfTUVUSE9EREVGICAgIFwKKyAgICB7IndhaXQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdCwgTUVUSF9OT0FSR1MsIG9zX3dhaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dhaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3Nfd2FpdF9pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfV0FJVCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKQorCitQeURvY19TVFJWQVIob3Nfc3ltbGlua19fZG9jX18sCisic3ltbGluaygkbW9kdWxlLCAvLCBzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuXG4iCisiXG4iCisidGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcbiIKKyIgIGludGVycHJldGVkIGFzIGEgZGlyZWN0b3J5LiAgKE9uIFdpbmRvd3MsIHN5bWxpbmsgcmVxdWlyZXNcbiIKKyIgIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYSBOb3RJbXBsZW1lbnRlZEVycm9yIG90aGVyd2lzZS4pXG4iCisiICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuIgorIlxuIgorIklmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCisiICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuIgorImRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG4iCisiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKyNkZWZpbmUgT1NfU1lNTElOS19NRVRIT0RERUYgICAgXAorICAgIHsic3ltbGluayIsIChQeUNGdW5jdGlvbilvc19zeW1saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3ltbGlua19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3ltbGlua19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKKyAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zeW1saW5rKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJzcmMiLCAwLCAwKTsKKyAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInN5bWxpbmsiLCAiZHN0IiwgMCwgMCk7CisgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnkgPSAwOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8cCRPJjpzeW1saW5rIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5LCBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zeW1saW5rX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5LCBkaXJfZmQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHNyYyAqLworICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKKyAgICAvKiBDbGVhbnVwIGZvciBkc3QgKi8KKyAgICBwYXRoX2NsZWFudXAoJmRzdCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZTUxJTkspICovCisKKyNpZiBkZWZpbmVkKEhBVkVfVElNRVMpCisKK1B5RG9jX1NUUlZBUihvc190aW1lc19fZG9jX18sCisidGltZXMoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvbGxlY3Rpb24gY29udGFpbmluZyBwcm9jZXNzIHRpbWluZyBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKKyJUaGUgb2JqZWN0IHJldHVybmVkIGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlc2UgZmllbGRzOlxuIgorIiAgKHV0aW1lLCBzdGltZSwgY3V0aW1lLCBjc3RpbWUsIGVsYXBzZWRfdGltZSlcbiIKKyJBbGwgZmllbGRzIGFyZSBmbG9hdGluZyBwb2ludCBudW1iZXJzLiIpOworCisjZGVmaW5lIE9TX1RJTUVTX01FVEhPRERFRiAgICBcCisgICAgeyJ0aW1lcyIsIChQeUNGdW5jdGlvbilvc190aW1lcywgTUVUSF9OT0FSR1MsIG9zX3RpbWVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190aW1lc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGltZXMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfdGltZXNfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1RJTUVTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFNJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHNpZF9fZG9jX18sCisiZ2V0c2lkKCRtb2R1bGUsIHBpZCwgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHNpZChwaWQpIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4iKTsKKworI2RlZmluZSBPU19HRVRTSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNpZCIsIChQeUNGdW5jdGlvbilvc19nZXRzaWQsIE1FVEhfTywgb3NfZ2V0c2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRzaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0c2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgcGlkX3QgcGlkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHNpZF9pbXBsKG1vZHVsZSwgcGlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFNJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRTSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRzaWRfX2RvY19fLAorInNldHNpZCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgc2V0c2lkKCkuIik7CisKKyNkZWZpbmUgT1NfU0VUU0lEX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRzaWQiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0c2lkLCBNRVRIX05PQVJHUywgb3Nfc2V0c2lkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRzaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHNpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19zZXRzaWRfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFNJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRQR0lEKQorCitQeURvY19TVFJWQVIob3Nfc2V0cGdpZF9fZG9jX18sCisic2V0cGdpZCgkbW9kdWxlLCBwaWQsIHBncnAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRwZ2lkKHBpZCwgcGdycCkuIik7CisKKyNkZWZpbmUgT1NfU0VUUEdJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19zZXRwZ2lkLCBNRVRIX1ZBUkFSR1MsIG9zX3NldHBnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHBnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIHBpZF90IHBncnApOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cGdpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBwaWRfdCBwaWQ7CisgICAgcGlkX3QgcGdycDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICIiIF9QeV9QQVJTRV9QSUQgIjpzZXRwZ2lkIiwKKyAgICAgICAgJnBpZCwgJnBncnApKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkLCBwZ3JwKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFBHSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfVENHRVRQR1JQKQorCitQeURvY19TVFJWQVIob3NfdGNnZXRwZ3JwX19kb2NfXywKKyJ0Y2dldHBncnAoJG1vZHVsZSwgZmQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuIik7CisKKyNkZWZpbmUgT1NfVENHRVRQR1JQX01FVEhPRERFRiAgICBcCisgICAgeyJ0Y2dldHBncnAiLCAoUHlDRnVuY3Rpb24pb3NfdGNnZXRwZ3JwLCBNRVRIX08sIG9zX3RjZ2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNnZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RjZ2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNnZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9UQ0dFVFBHUlApICovCisKKyNpZiBkZWZpbmVkKEhBVkVfVENTRVRQR1JQKQorCitQeURvY19TVFJWQVIob3NfdGNzZXRwZ3JwX19kb2NfXywKKyJ0Y3NldHBncnAoJG1vZHVsZSwgZmQsIHBnaWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuIik7CisKKyNkZWZpbmUgT1NfVENTRVRQR1JQX01FVEhPRERFRiAgICBcCisgICAgeyJ0Y3NldHBncnAiLCAoUHlDRnVuY3Rpb24pb3NfdGNzZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIG9zX3Rjc2V0cGdycF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdGNzZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBwaWRfdCBwZ2lkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Rjc2V0cGdycChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgcGlkX3QgcGdpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiOnRjc2V0cGdycCIsCisgICAgICAgICZmZCwgJnBnaWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNzZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCwgcGdpZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9UQ1NFVFBHUlApICovCisKK1B5RG9jX1NUUlZBUihvc19vcGVuX19kb2NfXywKKyJvcGVuKCRtb2R1bGUsIC8sIHBhdGgsIGZsYWdzLCBtb2RlPTUxMSwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJPcGVuIGEgZmlsZSBmb3IgbG93IGxldmVsIElPLiAgUmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciAoaW50ZWdlcikuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19PUEVOX01FVEhPRERFRiAgICBcCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19vcGVuX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX29wZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmbGFncywgaW50IG1vZGUsCisgICAgICAgICAgICAgaW50IGRpcl9mZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19vcGVuKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm9wZW4iLCAicGF0aCIsIDAsIDApOworICAgIGludCBmbGFnczsKKyAgICBpbnQgbW9kZSA9IDUxMTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJm1vZGUsIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19vcGVuX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MsIG1vZGUsIGRpcl9mZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkbW9kdWxlLCAvLCBmZClcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOworCisjZGVmaW5lIE9TX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nsb3NlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jbG9zZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpjbG9zZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2Nsb3NlcmFuZ2VfX2RvY19fLAorImNsb3NlcmFuZ2UoJG1vZHVsZSwgZmRfbG93LCBmZF9oaWdoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2VzIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGluIFtmZF9sb3csIGZkX2hpZ2gpLCBpZ25vcmluZyBlcnJvcnMuIik7CisKKyNkZWZpbmUgT1NfQ0xPU0VSQU5HRV9NRVRIT0RERUYgICAgXAorICAgIHsiY2xvc2VyYW5nZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZXJhbmdlLCBNRVRIX1ZBUkFSR1MsIG9zX2Nsb3NlcmFuZ2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Nsb3NlcmFuZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmRfbG93LCBpbnQgZmRfaGlnaCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jbG9zZXJhbmdlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZF9sb3c7CisgICAgaW50IGZkX2hpZ2g7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmNsb3NlcmFuZ2UiLAorICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jbG9zZXJhbmdlX2ltcGwobW9kdWxlLCBmZF9sb3csIGZkX2hpZ2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19kdXBfX2RvY19fLAorImR1cCgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGR1cGxpY2F0ZSBvZiBhIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19EVVBfTUVUSE9EREVGICAgIFwKKyAgICB7ImR1cCIsIChQeUNGdW5jdGlvbilvc19kdXAsIE1FVEhfTywgb3NfZHVwX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2R1cF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19kdXAoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZHVwIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19kdXBfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2R1cDJfX2RvY19fLAorImR1cDIoJG1vZHVsZSwgLywgZmQsIGZkMiwgaW5oZXJpdGFibGU9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIkR1cGxpY2F0ZSBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfRFVQMl9NRVRIT0RERUYgICAgXAorICAgIHsiZHVwMiIsIChQeUNGdW5jdGlvbilvc19kdXAyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZHVwMl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZHVwMl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2R1cDIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBpbnQgZmQ7CisgICAgaW50IGZkMjsKKyAgICBpbnQgaW5oZXJpdGFibGUgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWl8cDpkdXAyIiwgX2tleXdvcmRzLAorICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19kdXAyX2ltcGwobW9kdWxlLCBmZCwgZmQyLCBpbmhlcml0YWJsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9MT0NLRikKKworUHlEb2NfU1RSVkFSKG9zX2xvY2tmX19kb2NfXywKKyJsb2NrZigkbW9kdWxlLCBmZCwgY29tbWFuZCwgbGVuZ3RoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyIgIGZkXG4iCisiICAgIEFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgY29tbWFuZFxuIgorIiAgICBPbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yIEZfVEVTVC5cbiIKKyIgIGxlbmd0aFxuIgorIiAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLiIpOworCisjZGVmaW5lIE9TX0xPQ0tGX01FVEhPRERFRiAgICBcCisgICAgeyJsb2NrZiIsIChQeUNGdW5jdGlvbilvc19sb2NrZiwgTUVUSF9WQVJBUkdTLCBvc19sb2NrZl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbG9ja2ZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb21tYW5kLCBQeV9vZmZfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbG9ja2YoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBjb21tYW5kOworICAgIFB5X29mZl90IGxlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCisgICAgICAgICZmZCwgJmNvbW1hbmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19sb2NrZl9pbXBsKG1vZHVsZSwgZmQsIGNvbW1hbmQsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9MT0NLRikgKi8KKworUHlEb2NfU1RSVkFSKG9zX2xzZWVrX19kb2NfXywKKyJsc2VlaygkbW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdywgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgcG9zaXRpb24gb2YgYSBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm4gdGhlIG5ldyBwb3NpdGlvbi5cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gaW4gbnVtYmVyIG9mIGJ5dGVzXG4iCisicmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4iKTsKKworI2RlZmluZSBPU19MU0VFS19NRVRIT0RERUYgICAgXAorICAgIHsibHNlZWsiLCAoUHlDRnVuY3Rpb24pb3NfbHNlZWssIE1FVEhfVkFSQVJHUywgb3NfbHNlZWtfX2RvY19ffSwKKworc3RhdGljIFB5X29mZl90Citvc19sc2Vla19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3QgcG9zaXRpb24sIGludCBob3cpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbHNlZWsoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X29mZl90IHBvc2l0aW9uOworICAgIGludCBob3c7CisgICAgUHlfb2ZmX3QgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8maTpsc2VlayIsCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmcG9zaXRpb24sICZob3cpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX2xzZWVrX2ltcGwobW9kdWxlLCBmZCwgcG9zaXRpb24sIGhvdyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21QeV9vZmZfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIob3NfcmVhZF9fZG9jX18sCisicmVhZCgkbW9kdWxlLCBmZCwgbGVuZ3RoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLiAgUmV0dXJucyBhIGJ5dGVzIG9iamVjdC4iKTsKKworI2RlZmluZSBPU19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlYWQsIE1FVEhfVkFSQVJHUywgb3NfcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfc3NpemVfdCBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVhZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImluOnJlYWQiLAorICAgICAgICAmZmQsICZsZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9SRUFEVikKKworUHlEb2NfU1RSVkFSKG9zX3JlYWR2X19kb2NfXywKKyJyZWFkdigkbW9kdWxlLCBmZCwgYnVmZmVycywgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBmZCBpbnRvIGFuIGl0ZXJhYmxlIG9mIGJ1ZmZlcnMuXG4iCisiXG4iCisiVGhlIGJ1ZmZlcnMgc2hvdWxkIGJlIG11dGFibGUgYnVmZmVycyBhY2NlcHRpbmcgYnl0ZXMuXG4iCisicmVhZHYgd2lsbCB0cmFuc2ZlciBkYXRhIGludG8gZWFjaCBidWZmZXIgdW50aWwgaXQgaXMgZnVsbFxuIgorImFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgYnVmZmVyIGluIHRoZSBzZXF1ZW5jZSB0byBob2xkXG4iCisidGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4iCisiXG4iCisicmVhZHYgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQsXG4iCisid2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGUgdG90YWwgY2FwYWNpdHkgb2YgYWxsIHRoZSBidWZmZXJzLiIpOworCisjZGVmaW5lIE9TX1JFQURWX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkdiIsIChQeUNGdW5jdGlvbilvc19yZWFkdiwgTUVUSF9WQVJBUkdTLCBvc19yZWFkdl9fZG9jX199LAorCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcmVhZHZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5T2JqZWN0ICpidWZmZXJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlYWR2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqYnVmZmVyczsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwKKyAgICAgICAgJmZkLCAmYnVmZmVycykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcmVhZHZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9SRUFEVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QUkVBRCkKKworUHlEb2NfU1RSVkFSKG9zX3ByZWFkX19kb2NfXywKKyJwcmVhZCgkbW9kdWxlLCBmZCwgbGVuZ3RoLCBvZmZzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGEgbnVtYmVyIG9mIGJ5dGVzIGZyb20gYSBmaWxlIGRlc2NyaXB0b3Igc3RhcnRpbmcgYXQgYSBwYXJ0aWN1bGFyIG9mZnNldC5cbiIKKyJcbiIKKyJSZWFkIGxlbmd0aCBieXRlcyBmcm9tIGZpbGUgZGVzY3JpcHRvciBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb21cbiIKKyJ0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLiIpOworCisjZGVmaW5lIE9TX1BSRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJwcmVhZCIsIChQeUNGdW5jdGlvbilvc19wcmVhZCwgTUVUSF9WQVJBUkdTLCBvc19wcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHJlYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBsZW5ndGgsIFB5X29mZl90IG9mZnNldCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wcmVhZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGxlbmd0aDsKKyAgICBQeV9vZmZfdCBvZmZzZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLAorICAgICAgICAmZmQsICZsZW5ndGgsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCwgb2Zmc2V0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BSRUFEKSAqLworCitQeURvY19TVFJWQVIob3Nfd3JpdGVfX2RvY19fLAorIndyaXRlKCRtb2R1bGUsIGZkLCBkYXRhLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gYSBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIG9zX3dyaXRlX19kb2NfX30sCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc193cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpkYXRhKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3dyaXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kjp3cml0ZSIsCisgICAgICAgICZmZCwgJmRhdGEpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmRhdGEpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2ZzdGF0X19kb2NfXywKKyJmc3RhdCgkbW9kdWxlLCAvLCBmZClcbiIKKyItLVxuIgorIlxuIgorIlBlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4iKTsKKworI2RlZmluZSBPU19GU1RBVF9NRVRIT0RERUYgICAgXAorICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3RhdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnN0YXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIGludCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6ZnN0YXQiLCBfa2V5d29yZHMsCisgICAgICAgICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19mc3RhdF9pbXBsKG1vZHVsZSwgZmQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihvc19pc2F0dHlfX2RvY19fLAorImlzYXR0eSgkbW9kdWxlLCBmZCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBmZCBpcyBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbC5cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yXG4iCisiY29ubmVjdGVkIHRvIHRoZSBzbGF2ZSBlbmQgb2YgYSB0ZXJtaW5hbC4iKTsKKworI2RlZmluZSBPU19JU0FUVFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzYXR0eSIsIChQeUNGdW5jdGlvbilvc19pc2F0dHksIE1FVEhfTywgb3NfaXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2lzYXR0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19pc2F0dHkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNhdHR5IiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19pc2F0dHlfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9QSVBFKQorCitQeURvY19TVFJWQVIob3NfcGlwZV9fZG9jX18sCisicGlwZSgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgcGlwZS5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgdHVwbGUgb2YgdHdvIGZpbGUgZGVzY3JpcHRvcnM6XG4iCisiICAocmVhZF9mZCwgd3JpdGVfZmQpIik7CisKKyNkZWZpbmUgT1NfUElQRV9NRVRIT0RERUYgICAgXAorICAgIHsicGlwZSIsIChQeUNGdW5jdGlvbilvc19waXBlLCBNRVRIX05PQVJHUywgb3NfcGlwZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcGlwZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBvc19waXBlX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QSVBFKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1BJUEUyKQorCitQeURvY19TVFJWQVIob3NfcGlwZTJfX2RvY19fLAorInBpcGUyKCRtb2R1bGUsIGZsYWdzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LlxuIgorIlxuIgorIlJldHVybnMgYSB0dXBsZSBvZiB0d28gZmlsZSBkZXNjcmlwdG9yczpcbiIKKyIgIChyZWFkX2ZkLCB3cml0ZV9mZClcbiIKKyJcbiIKKyJmbGFncyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgT1JpbmcgdG9nZXRoZXIgb25lIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzOlxuIgorIk9fTk9OQkxPQ0ssIE9fQ0xPRVhFQy4iKTsKKworI2RlZmluZSBPU19QSVBFMl9NRVRIT0RERUYgICAgXAorICAgIHsicGlwZTIiLCAoUHlDRnVuY3Rpb24pb3NfcGlwZTIsIE1FVEhfTywgb3NfcGlwZTJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3BpcGUyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3BpcGUyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWdzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3BpcGUyX2ltcGwobW9kdWxlLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QSVBFMikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9XUklURVYpCisKK1B5RG9jX1NUUlZBUihvc193cml0ZXZfX2RvY19fLAorIndyaXRldigkbW9kdWxlLCBmZCwgYnVmZmVycywgLylcbiIKKyItLVxuIgorIlxuIgorIkl0ZXJhdGUgb3ZlciBidWZmZXJzLCBhbmQgd3JpdGUgdGhlIGNvbnRlbnRzIG9mIGVhY2ggdG8gYSBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4iCisiYnVmZmVycyBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgYnl0ZXMtbGlrZSBvYmplY3RzLiIpOworCisjZGVmaW5lIE9TX1dSSVRFVl9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGV2IiwgKFB5Q0Z1bmN0aW9uKW9zX3dyaXRldiwgTUVUSF9WQVJBUkdTLCBvc193cml0ZXZfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRldl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfd3JpdGV2KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeU9iamVjdCAqYnVmZmVyczsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOndyaXRldiIsCisgICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRldl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dSSVRFVikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QV1JJVEUpCisKK1B5RG9jX1NUUlZBUihvc19wd3JpdGVfX2RvY19fLAorInB3cml0ZSgkbW9kdWxlLCBmZCwgYnVmZmVyLCBvZmZzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBieXRlcyB0byBhIGZpbGUgZGVzY3JpcHRvciBzdGFydGluZyBhdCBhIHBhcnRpY3VsYXIgb2Zmc2V0LlxuIgorIlxuIgorIldyaXRlIGJ1ZmZlciB0byBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZlxuIgorInRoZSBmaWxlLiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZS4gIERvZXMgbm90IGNoYW5nZSB0aGVcbiIKKyJjdXJyZW50IGZpbGUgb2Zmc2V0LiIpOworCisjZGVmaW5lIE9TX1BXUklURV9NRVRIT0RERUYgICAgXAorICAgIHsicHdyaXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3B3cml0ZSwgTUVUSF9WQVJBUkdTLCBvc19wd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5X3NzaXplX3QKK29zX3B3cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpidWZmZXIsCisgICAgICAgICAgICAgICBQeV9vZmZfdCBvZmZzZXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHdyaXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmZDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworICAgIFB5X29mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kk8mOnB3cml0ZSIsCisgICAgICAgICZmZCwgJmJ1ZmZlciwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19wd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmYnVmZmVyLCBvZmZzZXQpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KKyAgICBpZiAoYnVmZmVyLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QV1JJVEUpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfTUtGSUZPKQorCitQeURvY19TVFJWQVIob3NfbWtmaWZvX19kb2NfXywKKyJta2ZpZm8oJG1vZHVsZSwgLywgcGF0aCwgbW9kZT00MzgsICosIGRpcl9mZD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgXCJmaWZvXCIgKGEgUE9TSVggbmFtZWQgcGlwZSkuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19NS0ZJRk9fTUVUSE9EREVGICAgIFwKKyAgICB7Im1rZmlmbyIsIChQeUNGdW5jdGlvbilvc19ta2ZpZm8sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta2ZpZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX21rZmlmb19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtmaWZvKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZmlmbyIsICJwYXRoIiwgMCwgMCk7CisgICAgaW50IG1vZGUgPSA0Mzg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtmaWZvX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUtGSUZPKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpKQorCitQeURvY19TVFJWQVIob3NfbWtub2RfX2RvY19fLAorIm1rbm9kKCRtb2R1bGUsIC8sIHBhdGgsIG1vZGU9Mzg0LCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJDcmVhdGUgYSBub2RlIGluIHRoZSBmaWxlIHN5c3RlbS5cbiIKKyJcbiIKKyJDcmVhdGUgYSBub2RlIGluIHRoZSBmaWxlIHN5c3RlbSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKVxuIgorImF0IHBhdGguICBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuIgorInR5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2ZcbiIKKyJTX0lGUkVHLCBTX0lGQ0hSLCBTX0lGQkxLLCBhbmQgU19JRklGTy4gIElmIFNfSUZDSFIgb3IgU19JRkJMSyBpcyBzZXQgb24gbW9kZSxcbiIKKyJkZXZpY2UgZGVmaW5lcyB0aGUgbmV3bHkgY3JlYXRlZCBkZXZpY2Ugc3BlY2lhbCBmaWxlIChwcm9iYWJseSB1c2luZ1xuIgorIm9zLm1ha2VkZXYoKSkuICBPdGhlcndpc2UgZGV2aWNlIGlzIGlnbm9yZWQuXG4iCisiXG4iCisiSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcbiIKKyIgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG4iCisiZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cbiIKKyIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYgICAgXAorICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta25vZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtub2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBkZXZfdCBkZXZpY2UsCisgICAgICAgICAgICAgIGludCBkaXJfZmQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWtub2QoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rbm9kIiwgInBhdGgiLCAwLCAwKTsKKyAgICBpbnQgbW9kZSA9IDM4NDsKKyAgICBkZXZfdCBkZXZpY2UgPSAwOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGlPJiRPJjpta25vZCIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19ta25vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRldmljZSwgZGlyX2ZkKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykKKworUHlEb2NfU1RSVkFSKG9zX21ham9yX19kb2NfXywKKyJtYWpvcigkbW9kdWxlLCBkZXZpY2UsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRyYWN0cyBhIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyLiIpOworCisjZGVmaW5lIE9TX01BSk9SX01FVEhPRERFRiAgICBcCisgICAgeyJtYWpvciIsIChQeUNGdW5jdGlvbilvc19tYWpvciwgTUVUSF9PLCBvc19tYWpvcl9fZG9jX199LAorCitzdGF0aWMgdW5zaWduZWQgaW50Citvc19tYWpvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRldl90IGRldmljZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19tYWpvcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRldl90IGRldmljZTsKKyAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFqb3JfaW1wbChtb2R1bGUsIGRldmljZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0RFVklDRV9NQUNST1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykKKworUHlEb2NfU1RSVkFSKG9zX21pbm9yX19kb2NfXywKKyJtaW5vcigkbW9kdWxlLCBkZXZpY2UsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFeHRyYWN0cyBhIGRldmljZSBtaW5vciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyLiIpOworCisjZGVmaW5lIE9TX01JTk9SX01FVEhPRERFRiAgICBcCisgICAgeyJtaW5vciIsIChQeUNGdW5jdGlvbilvc19taW5vciwgTUVUSF9PLCBvc19taW5vcl9fZG9jX199LAorCitzdGF0aWMgdW5zaWduZWQgaW50Citvc19taW5vcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRldl90IGRldmljZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19taW5vcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGRldl90IGRldmljZTsKKyAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWlub3JfaW1wbChtb2R1bGUsIGRldmljZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0RFVklDRV9NQUNST1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykKKworUHlEb2NfU1RSVkFSKG9zX21ha2VkZXZfX2RvY19fLAorIm1ha2VkZXYoJG1vZHVsZSwgbWFqb3IsIG1pbm9yLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ29tcG9zZXMgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuIik7CisKKyNkZWZpbmUgT1NfTUFLRURFVl9NRVRIT0RERUYgICAgXAorICAgIHsibWFrZWRldiIsIChQeUNGdW5jdGlvbilvc19tYWtlZGV2LCBNRVRIX1ZBUkFSR1MsIG9zX21ha2VkZXZfX2RvY19ffSwKKworc3RhdGljIGRldl90Citvc19tYWtlZGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1ham9yLCBpbnQgbWlub3IpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfbWFrZWRldihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbWFqb3I7CisgICAgaW50IG1pbm9yOworICAgIGRldl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOm1ha2VkZXYiLAorICAgICAgICAmbWFqb3IsICZtaW5vcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbWFrZWRldl9pbXBsKG1vZHVsZSwgbWFqb3IsIG1pbm9yKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKGRldl90KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX1B5TG9uZ19Gcm9tRGV2KF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfREVWSUNFX01BQ1JPUykgKi8KKworI2lmIChkZWZpbmVkIEhBVkVfRlRSVU5DQVRFIHx8IGRlZmluZWQgTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX2Z0cnVuY2F0ZV9fZG9jX18sCisiZnRydW5jYXRlKCRtb2R1bGUsIGZkLCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVuY2F0ZSBhIGZpbGUsIHNwZWNpZmllZCBieSBmaWxlIGRlc2NyaXB0b3IsIHRvIGEgc3BlY2lmaWMgbGVuZ3RoLiIpOworCisjZGVmaW5lIE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsiZnRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Z0cnVuY2F0ZSwgTUVUSF9WQVJBUkdTLCBvc19mdHJ1bmNhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Z0cnVuY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3QgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Z0cnVuY2F0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnRydW5jYXRlIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnRydW5jYXRlX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKGRlZmluZWQgSEFWRV9GVFJVTkNBVEUgfHwgZGVmaW5lZCBNU19XSU5ET1dTKSAqLworCisjaWYgKGRlZmluZWQgSEFWRV9UUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc190cnVuY2F0ZV9fZG9jX18sCisidHJ1bmNhdGUoJG1vZHVsZSwgLywgcGF0aCwgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1bmNhdGUgYSBmaWxlLCBzcGVjaWZpZWQgYnkgcGF0aCwgdG8gYSBzcGVjaWZpYyBsZW5ndGguXG4iCisiXG4iCisiT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOworCisjZGVmaW5lIE9TX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3RydW5jYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc190cnVuY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlfb2ZmX3QgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RydW5jYXRlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ0cnVuY2F0ZSIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZUUlVOQ0FURSk7CisgICAgUHlfb2ZmX3QgbGVuZ3RoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIF9rZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdHJ1bmNhdGVfaW1wbChtb2R1bGUsICZwYXRoLCBsZW5ndGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkIEhBVkVfVFJVTkNBVEUgfHwgZGVmaW5lZCBNU19XSU5ET1dTKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpCisKK1B5RG9jX1NUUlZBUihvc19wb3NpeF9mYWxsb2NhdGVfX2RvY19fLAorInBvc2l4X2ZhbGxvY2F0ZSgkbW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFbnN1cmUgYSBmaWxlIGhhcyBhbGxvY2F0ZWQgYXQgbGVhc3QgYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBieXRlcyBvbiBkaXNrLlxuIgorIlxuIgorIkVuc3VyZSB0aGF0IHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBlbmNvbXBhc3NlcyBhIHJhbmdlIG9mIGJ5dGVzXG4iCisic3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLiIpOworCisjZGVmaW5lIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYgICAgXAorICAgIHsicG9zaXhfZmFsbG9jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3Bvc2l4X2ZhbGxvY2F0ZSwgTUVUSF9WQVJBUkdTLCBvc19wb3NpeF9mYWxsb2NhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfb2ZmX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Bvc2l4X2ZhbGxvY2F0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3Qgb2Zmc2V0OworICAgIFB5X29mZl90IGxlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9QT1NJWF9GQURWSVNFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpKQorCitQeURvY19TVFJWQVIob3NfcG9zaXhfZmFkdmlzZV9fZG9jX18sCisicG9zaXhfZmFkdmlzZSgkbW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkFubm91bmNlIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4uXG4iCisiXG4iCisiQW5ub3VuY2UgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiwgdGh1cyBhbGxvd2luZ1xuIgorInRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLlxuIgorIlRoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBzdGFydGluZyBhdFxuIgorIm9mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuZ3RoIGJ5dGVzLlxuIgorImFkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCxcbiIKKyJQT1NJWF9GQURWX1JBTkRPTSwgUE9TSVhfRkFEVl9OT1JFVVNFLCBQT1NJWF9GQURWX1dJTExORUVELCBvclxuIgorIlBPU0lYX0ZBRFZfRE9OVE5FRUQuIik7CisKKyNkZWZpbmUgT1NfUE9TSVhfRkFEVklTRV9NRVRIT0RERUYgICAgXAorICAgIHsicG9zaXhfZmFkdmlzZSIsIChQeUNGdW5jdGlvbilvc19wb3NpeF9mYWR2aXNlLCBNRVRIX1ZBUkFSR1MsIG9zX3Bvc2l4X2ZhZHZpc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Bvc2l4X2ZhZHZpc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9vZmZfdCBsZW5ndGgsIGludCBhZHZpY2UpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcG9zaXhfZmFkdmlzZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgUHlfb2ZmX3Qgb2Zmc2V0OworICAgIFB5X29mZl90IGxlbmd0aDsKKyAgICBpbnQgYWR2aWNlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJmk6cG9zaXhfZmFkdmlzZSIsCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFkdmlzZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19wdXRlbnZfX2RvY19fLAorInB1dGVudigkbW9kdWxlLCBuYW1lLCB2YWx1ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisKKyNkZWZpbmUgT1NfUFVURU5WX01FVEhPRERFRiAgICBcCisgICAgeyJwdXRlbnYiLCAoUHlDRnVuY3Rpb24pb3NfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIG9zX3B1dGVudl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19wdXRlbnYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpwdXRlbnYiLAorICAgICAgICAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUFVURU5WKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfcHV0ZW52X19kb2NfXywKKyJwdXRlbnYoJG1vZHVsZSwgbmFtZSwgdmFsdWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX1BVVEVOVl9NRVRIT0RERUYgICAgXAorICAgIHsicHV0ZW52IiwgKFB5Q0Z1bmN0aW9uKW9zX3B1dGVudiwgTUVUSF9WQVJBUkdTLCBvc19wdXRlbnZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3B1dGVudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnB1dGVudiIsCisgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG5hbWUgKi8KKyAgICBQeV9YREVDUkVGKG5hbWUpOworICAgIC8qIENsZWFudXAgZm9yIHZhbHVlICovCisgICAgUHlfWERFQ1JFRih2YWx1ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BVVEVOVikgJiYgIWRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9VTlNFVEVOVikKKworUHlEb2NfU1RSVkFSKG9zX3Vuc2V0ZW52X19kb2NfXywKKyJ1bnNldGVudigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGVsZXRlIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX1VOU0VURU5WX01FVEhPRERFRiAgICBcCisgICAgeyJ1bnNldGVudiIsIChQeUNGdW5jdGlvbilvc191bnNldGVudiwgTUVUSF9PLCBvc191bnNldGVudl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdW5zZXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc191bnNldGVudihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5zZXRlbnYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3Vuc2V0ZW52X2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBuYW1lICovCisgICAgUHlfWERFQ1JFRihuYW1lKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfVU5TRVRFTlYpICovCisKK1B5RG9jX1NUUlZBUihvc19zdHJlcnJvcl9fZG9jX18sCisic3RyZXJyb3IoJG1vZHVsZSwgY29kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRyYW5zbGF0ZSBhbiBlcnJvciBjb2RlIHRvIGEgbWVzc2FnZSBzdHJpbmcuIik7CisKKyNkZWZpbmUgT1NfU1RSRVJST1JfTUVUSE9EREVGICAgIFwKKyAgICB7InN0cmVycm9yIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0cmVycm9yLCBNRVRIX08sIG9zX3N0cmVycm9yX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdHJlcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0cmVycm9yKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNvZGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c3RyZXJyb3IiLCAmY29kZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zdHJlcnJvcl9pbXBsKG1vZHVsZSwgY29kZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdDT1JFRFVNUCkKKworUHlEb2NfU1RSVkFSKG9zX1dDT1JFRFVNUF9fZG9jX18sCisiV0NPUkVEVU1QKCRtb2R1bGUsIHN0YXR1cywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGR1bXBlZCB0byBhIGNvcmUgZmlsZS4iKTsKKworI2RlZmluZSBPU19XQ09SRURVTVBfTUVUSE9EREVGICAgIFwKKyAgICB7IldDT1JFRFVNUCIsIChQeUNGdW5jdGlvbilvc19XQ09SRURVTVAsIE1FVEhfTywgb3NfV0NPUkVEVU1QX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dDT1JFRFVNUF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0NPUkVEVU1QKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XQ09SRURVTVBfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXQ09SRURVTVApICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZDT05USU5VRUQpCisKK1B5RG9jX1NUUlZBUihvc19XSUZDT05USU5VRURfX2RvY19fLAorIldJRkNPTlRJTlVFRCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBhIHBhcnRpY3VsYXIgcHJvY2VzcyB3YXMgY29udGludWVkIGZyb20gYSBqb2IgY29udHJvbCBzdG9wLlxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGNvbnRpbnVlZCBmcm9tIGFcbiIKKyJqb2IgY29udHJvbCBzdG9wLiIpOworCisjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYgICAgXAorICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XSUZDT05USU5VRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRkNPTlRJTlVFRChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGQ09OVElOVUVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGQ09OVElOVUVEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU1RPUFBFRCkKKworUHlEb2NfU1RSVkFSKG9zX1dJRlNUT1BQRURfX2RvY19fLAorIldJRlNUT1BQRUQoJG1vZHVsZSwgLywgc3RhdHVzKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4iKTsKKworI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRiAgICBcCisgICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dJRlNUT1BQRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRlNUT1BQRUQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTVE9QUEVEIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZTVE9QUEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU1RPUFBFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRlNJR05BTEVEKQorCitQeURvY19TVFJWQVIob3NfV0lGU0lHTkFMRURfX2RvY19fLAorIldJRlNJR05BTEVEKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuIik7CisKKyNkZWZpbmUgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGICAgIFwKKyAgICB7IldJRlNJR05BTEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNJR05BTEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGU0lHTkFMRURfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0lGU0lHTkFMRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dJRlNJR05BTEVEKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGU0lHTkFMRUQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNJR05BTEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV0lGU0lHTkFMRUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXSUZFWElURUQpCisKK1B5RG9jX1NUUlZBUihvc19XSUZFWElURURfX2RvY19fLAorIldJRkVYSVRFRCgkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4iKTsKKworI2RlZmluZSBPU19XSUZFWElURURfTUVUSE9EREVGICAgIFwKKyAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZFWElURURfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV0lGRVhJVEVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XSUZFWElURUQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkVYSVRFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdJRkVYSVRFRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdFWElUU1RBVFVTKQorCitQeURvY19TVFJWQVIob3NfV0VYSVRTVEFUVVNfX2RvY19fLAorIldFWElUU1RBVFVTKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tIHN0YXR1cy4iKTsKKworI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYgICAgXAorICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAorCitzdGF0aWMgaW50Citvc19XRVhJVFNUQVRVU19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfV0VYSVRTVEFUVVMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBpbnQgc3RhdHVzOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0YXR1cykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0VYSVRTVEFUVVNfaW1wbChtb2R1bGUsIHN0YXR1cyk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXRVhJVFNUQVRVUykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdURVJNU0lHKQorCitQeURvY19TVFJWQVIob3NfV1RFUk1TSUdfX2RvY19fLAorIldURVJNU0lHKCRtb2R1bGUsIC8sIHN0YXR1cylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuIik7CisKKyNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGICAgIFwKKyAgICB7IldURVJNU0lHIiwgKFB5Q0Z1bmN0aW9uKW9zX1dURVJNU0lHLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV1RFUk1TSUdfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfV1RFUk1TSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX1dURVJNU0lHKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgaW50IHN0YXR1czsKKyAgICBpbnQgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V1RFUk1TSUciLCBfa2V5d29yZHMsCisgICAgICAgICZzdGF0dXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IG9zX1dURVJNU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NZU19XQUlUX0gpICYmIGRlZmluZWQoV1RFUk1TSUcpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1dBSVRfSCkgJiYgZGVmaW5lZChXU1RPUFNJRykKKworUHlEb2NfU1RSVkFSKG9zX1dTVE9QU0lHX19kb2NfXywKKyJXU1RPUFNJRygkbW9kdWxlLCAvLCBzdGF0dXMpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLiIpOworCisjZGVmaW5lIE9TX1dTVE9QU0lHX01FVEhPRERFRiAgICBcCisgICAgeyJXU1RPUFNJRyIsIChQeUNGdW5jdGlvbilvc19XU1RPUFNJRywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dTVE9QU0lHX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX1dTVE9QU0lHX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19XU1RPUFNJRyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIGludCBzdGF0dXM7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldTVE9QU0lHIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RhdHVzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XU1RPUFNJR19pbXBsKG1vZHVsZSwgc3RhdHVzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKFdTVE9QU0lHKSAqLworCisjaWYgKGRlZmluZWQoSEFWRV9GU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKQorCitQeURvY19TVFJWQVIob3NfZnN0YXR2ZnNfX2RvY19fLAorImZzdGF0dmZzKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuXG4iCisiXG4iCisiRXF1aXZhbGVudCB0byBzdGF0dmZzKGZkKS4iKTsKKworI2RlZmluZSBPU19GU1RBVFZGU19NRVRIT0RERUYgICAgXAorICAgIHsiZnN0YXR2ZnMiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXR2ZnMsIE1FVEhfTywgb3NfZnN0YXR2ZnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzdGF0dmZzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzdGF0dmZzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmZzdGF0dmZzIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0dmZzX2ltcGwobW9kdWxlLCBmZCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfRlNUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSkgKi8KKworI2lmIChkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKQorCitQeURvY19TVFJWQVIob3Nfc3RhdHZmc19fZG9jX18sCisic3RhdHZmcygkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cbiIKKyJPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CisKKyNkZWZpbmUgT1NfU1RBVFZGU19NRVRIT0RERUYgICAgXAorICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdHZmc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhdHZmc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGF0dmZzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXR2ZnMiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GU1RBVFZGUyk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdHZmc19pbXBsKG1vZHVsZSwgJnBhdGgpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIob3NfX2dldGRpc2t1c2FnZV9fZG9jX18sCisiX2dldGRpc2t1c2FnZSgkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CisKKyNkZWZpbmUgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYgICAgXAorICAgIHsiX2dldGRpc2t1c2FnZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2dldGRpc2t1c2FnZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGRpc2t1c2FnZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X1VOSUNPREUgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfX2dldGRpc2t1c2FnZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBQeV9VTklDT0RFICpwYXRoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLAorICAgICAgICAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZGlza3VzYWdlX2ltcGwobW9kdWxlLCBwYXRoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0ZQQVRIQ09ORikKKworUHlEb2NfU1RSVkFSKG9zX2ZwYXRoY29uZl9fZG9jX18sCisiZnBhdGhjb25mKCRtb2R1bGUsIGZkLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuXG4iCisiXG4iCisiSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4iKTsKKworI2RlZmluZSBPU19GUEFUSENPTkZfTUVUSE9EREVGICAgIFwKKyAgICB7ImZwYXRoY29uZiIsIChQeUNGdW5jdGlvbilvc19mcGF0aGNvbmYsIE1FVEhfVkFSQVJHUywgb3NfZnBhdGhjb25mX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitvc19mcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZwYXRoY29uZihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IG5hbWU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnBhdGhjb25mIiwKKyAgICAgICAgJmZkLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19mcGF0aGNvbmZfaW1wbChtb2R1bGUsIGZkLCBuYW1lKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9GUEFUSENPTkYpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfUEFUSENPTkYpCisKK1B5RG9jX1NUUlZBUihvc19wYXRoY29uZl9fZG9jX18sCisicGF0aGNvbmYoJG1vZHVsZSwgLywgcGF0aCwgbmFtZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBubyBsaW1pdCwgcmV0dXJuIC0xLlxuIgorIk9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYgICAgXAorICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19wYXRoY29uZl9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3NfcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3BhdGhjb25mKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicGF0aGNvbmYiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GUEFUSENPTkYpOworICAgIGludCBuYW1lOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcGF0aGNvbmZfaW1wbChtb2R1bGUsICZwYXRoLCBuYW1lKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1BBVEhDT05GKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZTVFIpCisKK1B5RG9jX1NUUlZBUihvc19jb25mc3RyX19kb2NfXywKKyJjb25mc3RyKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBzdHJpbmctdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOworCisjZGVmaW5lIE9TX0NPTkZTVFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvbmZzdHIiLCAoUHlDRnVuY3Rpb24pb3NfY29uZnN0ciwgTUVUSF9PLCBvc19jb25mc3RyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jb25mc3RyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY29uZnN0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpjb25mc3RyIiwgY29udl9jb25mc3RyX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19jb25mc3RyX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0NPTkZTVFIpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTQ09ORikKKworUHlEb2NfU1RSVkFSKG9zX3N5c2NvbmZfX2RvY19fLAorInN5c2NvbmYoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhbiBpbnRlZ2VyLXZhbHVlZCBzeXN0ZW0gY29uZmlndXJhdGlvbiB2YXJpYWJsZS4iKTsKKworI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRiAgICBcCisgICAgeyJzeXNjb25mIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c2NvbmYsIE1FVEhfTywgb3Nfc3lzY29uZl9fZG9jX199LAorCitzdGF0aWMgbG9uZworb3Nfc3lzY29uZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N5c2NvbmYoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgbmFtZTsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXNjb25mX2ltcGwobW9kdWxlLCBuYW1lKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWVNDT05GKSAqLworCitQeURvY19TVFJWQVIob3NfYWJvcnRfX2RvY19fLAorImFib3J0KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuXG4iCisiXG4iCisiVGhpcyBmdW5jdGlvbiBcJ2R1bXBzIGNvcmVcJyBvciBvdGhlcndpc2UgZmFpbHMgaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlXG4iCisib24gdGhlIGhvc3Rpbmcgb3BlcmF0aW5nIHN5c3RlbS4gIFRoaXMgZnVuY3Rpb24gbmV2ZXIgcmV0dXJucy4iKTsKKworI2RlZmluZSBPU19BQk9SVF9NRVRIT0RERUYgICAgXAorICAgIHsiYWJvcnQiLCAoUHlDRnVuY3Rpb24pb3NfYWJvcnQsIE1FVEhfTk9BUkdTLCBvc19hYm9ydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfYWJvcnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2Fib3J0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIG9zX2Fib3J0X2ltcGwobW9kdWxlKTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9HRVRMT0FEQVZHKQorCitQeURvY19TVFJWQVIob3NfZ2V0bG9hZGF2Z19fZG9jX18sCisiZ2V0bG9hZGF2ZygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGF2ZXJhZ2UgcmVjZW50IHN5c3RlbSBsb2FkIGluZm9ybWF0aW9uLlxuIgorIlxuIgorIlJldHVybiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiB0aGUgc3lzdGVtIHJ1biBxdWV1ZSBhdmVyYWdlZCBvdmVyXG4iCisidGhlIGxhc3QgMSwgNSwgYW5kIDE1IG1pbnV0ZXMgYXMgYSB0dXBsZSBvZiB0aHJlZSBmbG9hdHMuXG4iCisiUmFpc2VzIE9TRXJyb3IgaWYgdGhlIGxvYWQgYXZlcmFnZSB3YXMgdW5vYnRhaW5hYmxlLiIpOworCisjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGxvYWRhdmciLCAoUHlDRnVuY3Rpb24pb3NfZ2V0bG9hZGF2ZywgTUVUSF9OT0FSR1MsIG9zX2dldGxvYWRhdmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGxvYWRhdmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2dldGxvYWRhdmcoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0bG9hZGF2Z19pbXBsKG1vZHVsZSk7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUTE9BREFWRykgKi8KKworUHlEb2NfU1RSVkFSKG9zX2RldmljZV9lbmNvZGluZ19fZG9jX18sCisiZGV2aWNlX2VuY29kaW5nKCRtb2R1bGUsIC8sIGZkKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGVuY29kaW5nIG9mIGEgdGVybWluYWxcJ3MgZmlsZSBkZXNjcmlwdG9yLlxuIgorIlxuIgorIlRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCBiZSBhdHRhY2hlZCB0byBhIHRlcm1pbmFsLlxuIgorIklmIHRoZSBkZXZpY2UgaXMgbm90IGEgdGVybWluYWwsIHJldHVybiBOb25lLiIpOworCisjZGVmaW5lIE9TX0RFVklDRV9FTkNPRElOR19NRVRIT0RERUYgICAgXAorICAgIHsiZGV2aWNlX2VuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKW9zX2RldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2RldmljZV9lbmNvZGluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2RldmljZV9lbmNvZGluZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgaW50IGZkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpkZXZpY2VfZW5jb2RpbmciLCBfa2V5d29yZHMsCisgICAgICAgICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChtb2R1bGUsIGZkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NFVFJFU1VJRCkKKworUHlEb2NfU1RSVkFSKG9zX3NldHJlc3VpZF9fZG9jX18sCisic2V0cmVzdWlkKCRtb2R1bGUsIHJ1aWQsIGV1aWQsIHN1aWQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGN1cnJlbnQgcHJvY2Vzc1wncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4iKTsKKworI2RlZmluZSBPU19TRVRSRVNVSURfTUVUSE9EREVGICAgIFwKKyAgICB7InNldHJlc3VpZCIsIChQeUNGdW5jdGlvbilvc19zZXRyZXN1aWQsIE1FVEhfVkFSQVJHUywgb3Nfc2V0cmVzdWlkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXN1aWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCB1aWRfdCBydWlkLCB1aWRfdCBldWlkLCB1aWRfdCBzdWlkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc3VpZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB1aWRfdCBydWlkOworICAgIHVpZF90IGV1aWQ7CisgICAgdWlkX3Qgc3VpZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVzdWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkLCBzdWlkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVFJFU1VJRCkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TRVRSRVNHSUQpCisKK1B5RG9jX1NUUlZBUihvc19zZXRyZXNnaWRfX2RvY19fLAorInNldHJlc2dpZCgkbW9kdWxlLCByZ2lkLCBlZ2lkLCBzZ2lkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworCisjZGVmaW5lIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0cmVzZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHJlc2dpZCwgTUVUSF9WQVJBUkdTLCBvc19zZXRyZXNnaWRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc2dpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQsIGdpZF90IHNnaWQpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0cmVzZ2lkKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGdpZF90IHJnaWQ7CisgICAgZ2lkX3QgZWdpZDsKKyAgICBnaWRfdCBzZ2lkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzZ2lkIiwKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXNnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQsIHNnaWQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU0VUUkVTR0lEKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFJFU1VJRCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHJlc3VpZF9fZG9jX18sCisiZ2V0cmVzdWlkKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzXCdzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLiIpOworCisjZGVmaW5lIE9TX0dFVFJFU1VJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cmVzdWlkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHJlc3VpZCwgTUVUSF9OT0FSR1MsIG9zX2dldHJlc3VpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzdWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXN1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0cmVzdWlkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSRVNVSUQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkVTR0lEKQorCitQeURvY19TVFJWQVIob3NfZ2V0cmVzZ2lkX19kb2NfXywKKyJnZXRyZXNnaWQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3NcJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworCisjZGVmaW5lIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cmVzZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHJlc2dpZCwgTUVUSF9OT0FSR1MsIG9zX2dldHJlc2dpZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyZXNnaWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfZ2V0cmVzZ2lkX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSRVNHSUQpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19nZXR4YXR0cl9fZG9jX18sCisiZ2V0eGF0dHIoJG1vZHVsZSwgLywgcGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdmFsdWUgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuIgorIlxuIgorInBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cbiIKKyJJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGdldHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuIgorIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisjZGVmaW5lIE9TX0dFVFhBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJnZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19nZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHhhdHRyX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0eGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CisgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJnZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFVTRV9YQVRUUlMpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19zZXR4YXR0cl9fZG9jX18sCisic2V0eGF0dHIoJG1vZHVsZSwgLywgcGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKixcbiIKKyIgICAgICAgICBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlNldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworI2RlZmluZSBPU19TRVRYQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsic2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zZXR4YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0eGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnZhbHVlLCBpbnQgZmxhZ3MsIGludCBmb2xsb3dfc3ltbGlua3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0eGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJ2YWx1ZSIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJwYXRoIiwgMCwgMSk7CisgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJzZXR4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKKyAgICBQeV9idWZmZXIgdmFsdWUgPSB7TlVMTCwgTlVMTH07CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgJnZhbHVlLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisgICAgLyogQ2xlYW51cCBmb3IgdmFsdWUgKi8KKyAgICBpZiAodmFsdWUub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFVTRV9YQVRUUlMpICovCisKKyNpZiBkZWZpbmVkKFVTRV9YQVRUUlMpCisKK1B5RG9jX1NUUlZBUihvc19yZW1vdmV4YXR0cl9fZG9jX18sCisicmVtb3ZleGF0dHIoJG1vZHVsZSwgLywgcGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG4iCisiXG4iCisicGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuIgorIklmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuIgorIiAgbGluaywgcmVtb3ZleGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworI2RlZmluZSBPU19SRU1PVkVYQVRUUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZleGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZleGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW1vdmV4YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcmVtb3ZleGF0dHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3JlbW92ZXhhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAicGF0aCIsIDAsIDEpOworICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZleGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZXhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICAvKiBDbGVhbnVwIGZvciBhdHRyaWJ1dGUgKi8KKyAgICBwYXRoX2NsZWFudXAoJmF0dHJpYnV0ZSk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChVU0VfWEFUVFJTKSAqLworCisjaWYgZGVmaW5lZChVU0VfWEFUVFJTKQorCitQeURvY19TVFJWQVIob3NfbGlzdHhhdHRyX19kb2NfXywKKyJsaXN0eGF0dHIoJG1vZHVsZSwgLywgcGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBvbiBwYXRoLlxuIgorIlxuIgorInBhdGggbWF5IGJlIGVpdGhlciBOb25lLCBhIHN0cmluZywgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG4iCisiaWYgcGF0aCBpcyBOb25lLCBsaXN0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50IGRpcmVjdG9yeS5cbiIKKyJJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcbiIKKyIgIGxpbmssIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKKyIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworI2RlZmluZSBPU19MSVNUWEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0eGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2xpc3R4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19saXN0eGF0dHIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpc3R4YXR0ciIsICJwYXRoIiwgMSwgMSk7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBfa2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19saXN0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCBmb2xsb3dfc3ltbGlua3MpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoVVNFX1hBVFRSUykgKi8KKworUHlEb2NfU1RSVkFSKG9zX3VyYW5kb21fX2RvY19fLAorInVyYW5kb20oJG1vZHVsZSwgc2l6ZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuIik7CisKKyNkZWZpbmUgT1NfVVJBTkRPTV9NRVRIT0RERUYgICAgXAorICAgIHsidXJhbmRvbSIsIChQeUNGdW5jdGlvbilvc191cmFuZG9tLCBNRVRIX08sIG9zX3VyYW5kb21fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3VyYW5kb21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfdXJhbmRvbShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2NwdV9jb3VudF9fZG9jX18sCisiY3B1X2NvdW50KCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLiIpOworCisjZGVmaW5lIE9TX0NQVV9DT1VOVF9NRVRIT0RERUYgICAgXAorICAgIHsiY3B1X2NvdW50IiwgKFB5Q0Z1bmN0aW9uKW9zX2NwdV9jb3VudCwgTUVUSF9OT0FSR1MsIG9zX2NwdV9jb3VudF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfY3B1X2NvdW50X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19jcHVfY291bnQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gb3NfY3B1X2NvdW50X2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKG9zX2dldF9pbmhlcml0YWJsZV9fZG9jX18sCisiZ2V0X2luaGVyaXRhYmxlKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19HRVRfSU5IRVJJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldF9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaW5oZXJpdGFibGUsIE1FVEhfTywgb3NfZ2V0X2luaGVyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK29zX2dldF9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRfaW5oZXJpdGFibGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG9zX3NldF9pbmhlcml0YWJsZV9fZG9jX18sCisic2V0X2luaGVyaXRhYmxlKCRtb2R1bGUsIGZkLCBpbmhlcml0YWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKworI2RlZmluZSBPU19TRVRfSU5IRVJJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19zZXRfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgb3Nfc2V0X2luaGVyaXRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBpbmhlcml0YWJsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaW5oZXJpdGFibGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIGludCBpbmhlcml0YWJsZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0X2luaGVyaXRhYmxlIiwKKyAgICAgICAgJmZkLCAmaW5oZXJpdGFibGUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCwgaW5oZXJpdGFibGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX19kb2NfXywKKyJnZXRfaGFuZGxlX2luaGVyaXRhYmxlKCRtb2R1bGUsIGhhbmRsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkdldCB0aGUgY2xvc2Utb24tZXhlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuIik7CisKKyNkZWZpbmUgT1NfR0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX08sIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKKworc3RhdGljIGludAorb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19fLAorInNldF9oYW5kbGVfaW5oZXJpdGFibGUoJG1vZHVsZSwgaGFuZGxlLCBpbmhlcml0YWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGhhbmRsZS4iKTsKKworI2RlZmluZSBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJzZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5oZXJpdGFibGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50IGluaGVyaXRhYmxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgInA6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCisgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWZuZGVmIE9TX1RUWU5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RUWU5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NURVJNSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DVEVSTUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NURVJNSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZDSERJUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZDSERJUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GQ0hESVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZDSE1PRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZDSE1PRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GQ0hNT0RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xDSE1PRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xDSE1PRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MQ0hNT0RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NIRkxBR1NfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NIRkxBR1NfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xDSEZMQUdTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTENIRkxBR1NfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTENIRkxBR1NfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NIUk9PVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0NIUk9PVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19DSFJPT1RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZTWU5DX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlNZTkNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRlNZTkNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZTkNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TWU5DX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZTkNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GREFUQVNZTkNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NIT1dOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfQ0hPV05fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZDSE9XTl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZDSE9XTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GQ0hPV05fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xDSE9XTl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MQ0hPV05fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xJTktfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19MSU5LX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0xJTktfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRGVUxMUEFUSE5BTUVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19fR0VURlVMTFBBVEhOQU1FX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19HRVRGVUxMUEFUSE5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRGSU5BTFBBVEhOQU1FX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfX0dFVEZJTkFMUEFUSE5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19JU0RJUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19JU0RJUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19fSVNESVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX05JQ0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19OSUNFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX05JQ0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZU1RFTV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TWVNURU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1VOQU1FX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVU5BTUVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVU5BTUVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0VYRUNWX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRVhFQ1ZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRVhFQ1ZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0VYRUNWRV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0VYRUNWRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19FWEVDVkVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NQQVdOVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NQQVdOVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TUEFXTlZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NQQVdOVkVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TUEFXTlZFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NQQVdOVkVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZPUksxX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRk9SSzFfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRk9SSzFfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZPUktfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GT1JLX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZPUktfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NDSEVEX0dFVF9QUklPUklUWV9NSU5fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX0dFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9HRVRTQ0hFRFVMRVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9TRVRTQ0hFRFVMRVJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVFBBUkFNX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfR0VUUEFSQU1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUUEFSQU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1NFVFBBUkFNX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfU0VUUEFSQU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NDSEVEX1JSX0dFVF9JTlRFUlZBTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TQ0hFRF9SUl9HRVRfSU5URVJWQUxfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1lJRUxEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfWUlFTERfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfWUlFTERfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX1NFVEFGRklOSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfU0VUQUZGSU5JVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NDSEVEX0dFVEFGRklOSVRZX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0NIRURfR0VUQUZGSU5JVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0NIRURfR0VUQUZGSU5JVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX09QRU5QVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19PUEVOUFRZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX09QRU5QVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZPUktQVFlfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19GT1JLUFRZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0ZPUktQVFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEVHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRFR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEVHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEVVSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRFVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEVVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEdJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVEdST1VQU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVEdST1VQU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRHUk9VUFNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBHUlBfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFBHUlBfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRQR1JQX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFBQSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBQSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVExPR0lOX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUTE9HSU5fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9HSU5fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFVJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0tJTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19LSUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0tJTExfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0tJTExQR19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0tJTExQR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19LSUxMUEdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BMT0NLX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUExPQ0tfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUExPQ0tfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFVJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFVJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEVVSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRFVUlEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEVVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEVHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRFR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVEVHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFVUlEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVVSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUkVVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFR0lEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUUkVHSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUUkVHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEdJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEdJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVEdST1VQU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVEdST1VQU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRHUk9VUFNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVQzX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0FJVDNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVDNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVQ0X01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0FJVDRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0FJVDRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVRJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dBSVRJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQUlUSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVRQSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dBSVRQSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dBSVRfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XQUlUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dBSVRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZTUxJTktfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TWU1MSU5LX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZTUxJTktfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RJTUVTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVElNRVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVElNRVNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFNJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFNJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRTSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFNJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFNJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRTSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFBHSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRQR0lEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVFBHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RDR0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1RDR0VUUEdSUF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19UQ0dFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RDU0VUUEdSUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1RDU0VUUEdSUF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19UQ1NFVFBHUlBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xPQ0tGX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTE9DS0ZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTE9DS0ZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1JFQURWX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUkVBRFZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUkVBRFZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BSRUFEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUFJFQURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUFJFQURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BJUEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QSVBFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BJUEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BJUEUyX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUElQRTJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUElQRTJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dSSVRFVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dSSVRFVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XUklURVZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BXUklURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BXUklURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QV1JJVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01LRklGT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19NS0ZJRk9fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01LTk9EX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUtOT0RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUtOT0RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01BSk9SX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUFKT1JfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUFKT1JfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01JTk9SX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfTUlOT1JfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfTUlOT1JfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX01BS0VERVZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19NQUtFREVWX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX01BS0VERVZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZUUlVOQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GVFJVTkNBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1RSVU5DQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVFJVTkNBVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVFJVTkNBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QT1NJWF9GQUxMT0NBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19QT1NJWF9GQURWSVNFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1BPU0lYX0ZBRFZJU0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BVVEVOVl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1BVVEVOVl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19QVVRFTlZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1VOU0VURU5WX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfVU5TRVRFTlZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfVU5TRVRFTlZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dDT1JFRFVNUF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dDT1JFRFVNUF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XQ09SRURVTVBfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XSUZDT05USU5VRURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1dJRlNUT1BQRURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19XSUZFWElURURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV0VYSVRTVEFUVVNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dURVJNU0lHX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV1RFUk1TSUdfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV1RFUk1TSUdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1dTVE9QU0lHX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfV1NUT1BTSUdfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfV1NUT1BTSUdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZTVEFUVkZTX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfRlNUQVRWRlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfRlNUQVRWRlNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NUQVRWRlNfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TVEFUVkZTX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NUQVRWRlNfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19fR0VURElTS1VTQUdFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0ZQQVRIQ09ORl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19GUEFUSENPTkZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1BBVEhDT05GX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUEFUSENPTkZfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUEFUSENPTkZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0NPTkZTVFJfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19DT05GU1RSX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0NPTkZTVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NZU0NPTkZfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TWVNDT05GX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NZU0NPTkZfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRMT0FEQVZHX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVExPQURBVkdfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRVNVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX1NFVFJFU0dJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRSRVNHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFJFU1VJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFJFU1VJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRSRVNVSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRSRVNHSURfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVFhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVFhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU0VUWEFUVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU0VUWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19MSVNUWEFUVFJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk1ODI0YzUyZmQwMzQ2NTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlMmU0ZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKQEAgLTAsMCArMSw3MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd3VpZF9fZG9jX18sCisiZ2V0cHd1aWQoJG1vZHVsZSwgdWlkb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgdXNlciBJRC5cbiIKKyJcbiIKKyJTZWUgYGhlbHAocHdkKWAgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKworI2RlZmluZSBQV0RfR0VUUFdVSURfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHB3dWlkIiwgKFB5Q0Z1bmN0aW9uKXB3ZF9nZXRwd3VpZCwgTUVUSF9PLCBwd2RfZ2V0cHd1aWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd25hbV9fZG9jX18sCisiZ2V0cHduYW0oJG1vZHVsZSwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS5cbiIKKyJcbiIKKyJTZWUgYGhlbHAocHdkKWAgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKworI2RlZmluZSBQV0RfR0VUUFdOQU1fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHB3bmFtIiwgKFB5Q0Z1bmN0aW9uKXB3ZF9nZXRwd25hbSwgTUVUSF9PLCBwd2RfZ2V0cHduYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B3ZF9nZXRwd25hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHdkX2dldHB3bmFtKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdfKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICphcmc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHB3bmFtIiwgJmFyZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBwd2RfZ2V0cHduYW1faW1wbChtb2R1bGUsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9HRVRQV0VOVCkKKworUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd2FsbF9fZG9jX18sCisiZ2V0cHdhbGwoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuXG4iCisiXG4iCisiU2VlIGhlbHAocHdkKSBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cHdhbGwiLCAoUHlDRnVuY3Rpb24pcHdkX2dldHB3YWxsLCBNRVRIX05PQVJHUywgcHdkX2dldHB3YWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitwd2RfZ2V0cHdhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B3ZF9nZXRwd2FsbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBwd2RfZ2V0cHdhbGxfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFBXRU5UKSAqLworCisjaWZuZGVmIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChQV0RfR0VUUFdBTExfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJlZDBlY2YzNGZkM2Y5OGYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzljNWRiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKQEAgLTAsMCArMSwyODQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9fZG9jX18sCisiUGFyc2UoJHNlbGYsIGRhdGEsIGlzZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQYXJzZSBYTUwgZGF0YS5cbiIKKyJcbiIKKyJgaXNmaW5hbFwnIHNob3VsZCBiZSB0cnVlIGF0IGVuZCBvZiBpbnB1dC4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9QQVJTRV9NRVRIT0RERUYgICAgXAorICAgIHsiUGFyc2UiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfUGFyc2UsIE1FVEhfVkFSQVJHUywgcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXNmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9QYXJzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGE7CisgICAgaW50IGlzZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6UGFyc2UiLAorICAgICAgICAmZGF0YSwgJmlzZmluYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfUGFyc2VfaW1wbChzZWxmLCBkYXRhLCBpc2ZpbmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfUGFyc2VGaWxlX19kb2NfXywKKyJQYXJzZUZpbGUoJHNlbGYsIGZpbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQYXJzZSBYTUwgZGF0YSBmcm9tIGZpbGUtbGlrZSBvYmplY3QuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfUEFSU0VGSUxFX01FVEhPRERFRiAgICBcCisgICAgeyJQYXJzZUZpbGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfUGFyc2VGaWxlLCBNRVRIX08sIHB5ZXhwYXRfeG1scGFyc2VyX1BhcnNlRmlsZV9fZG9jX199LAorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9fZG9jX18sCisiU2V0QmFzZSgkc2VsZiwgYmFzZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNldCB0aGUgYmFzZSBVUkwgZm9yIHRoZSBwYXJzZXIuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfU0VUQkFTRV9NRVRIT0RERUYgICAgXAorICAgIHsiU2V0QmFzZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlLCBNRVRIX08sIHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqYmFzZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmJhc2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbChzZWxmLCBiYXNlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9fZG9jX18sCisiR2V0QmFzZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBiYXNlIFVSTCBzdHJpbmcgZm9yIHRoZSBwYXJzZXIuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfR0VUQkFTRV9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0QmFzZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9HZXRCYXNlLCBNRVRIX05PQVJHUywgcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX0dldEJhc2UoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHB5ZXhwYXRfeG1scGFyc2VyX0dldEJhc2VfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9fZG9jX18sCisiR2V0SW5wdXRDb250ZXh0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bnRyYW5zbGF0ZWQgdGV4dCBvZiB0aGUgaW5wdXQgdGhhdCBjYXVzZWQgdGhlIGN1cnJlbnQgZXZlbnQuXG4iCisiXG4iCisiSWYgdGhlIGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgYSBsYXJnZSBhbW91bnQgb2YgdGV4dCAoc3VjaCBhcyBhIHN0YXJ0IHRhZ1xuIgorImZvciBhbiBlbGVtZW50IHdpdGggbWFueSBhdHRyaWJ1dGVzKSwgbm90IGFsbCBvZiB0aGUgdGV4dCBtYXkgYmUgYXZhaWxhYmxlLiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX0dFVElOUFVUQ09OVEVYVF9NRVRIT0RERUYgICAgXAorICAgIHsiR2V0SW5wdXRDb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dCwgTUVUSF9OT0FSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX0dldElucHV0Q29udGV4dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0X2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfR2V0SW5wdXRDb250ZXh0KHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX19kb2NfXywKKyJFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSgkc2VsZiwgY29udGV4dCwgZW5jb2Rpbmc9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyLiIpOworCisjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX0VYVEVSTkFMRU5USVRZUEFSU0VSQ1JFQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSwgTUVUSF9WQVJBUkdTLCBweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmNvbnRleHQ7CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ6fHM6RXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUiLAorICAgICAgICAmY29udGV4dCwgJmVuY29kaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX2ltcGwoc2VsZiwgY29udGV4dCwgZW5jb2RpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfX2RvY19fLAorIlNldFBhcmFtRW50aXR5UGFyc2luZygkc2VsZiwgZmxhZywgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnRyb2xzIHBhcnNpbmcgb2YgcGFyYW1ldGVyIGVudGl0aWVzIChpbmNsdWRpbmcgdGhlIGV4dGVybmFsIERURCBzdWJzZXQpLlxuIgorIlxuIgorIlBvc3NpYmxlIGZsYWcgdmFsdWVzIGFyZSBYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfTkVWRVIsXG4iCisiWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX1VOTEVTU19TVEFOREFMT05FIGFuZFxuIgorIlhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnXG4iCisid2FzIHN1Y2Nlc3NmdWwuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfU0VUUEFSQU1FTlRJVFlQQVJTSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAoUHlDRnVuY3Rpb24pcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nLCBNRVRIX08sIHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIGludCBmbGFnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmxhZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbChzZWxmLCBmbGFnKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgKFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDE5NTA1KQorCitQeURvY19TVFJWQVIocHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9fZG9jX18sCisiVXNlRm9yZWlnbkRURCgkc2VsZiwgZmxhZz1UcnVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBwcm92aWRlIGFuIGFydGlmaWNpYWwgZXh0ZXJuYWwgc3Vic2V0IGlmIG9uZSBpcyBub3Qgc3BlY2lmaWVkIGFzIHBhcnQgb2YgdGhlIGRvY3VtZW50IGluc3RhbmNlLlxuIgorIlxuIgorIlRoaXMgcmVhZGlseSBhbGxvd3MgdGhlIHVzZSBvZiBhIFwnZGVmYXVsdFwnIGRvY3VtZW50IHR5cGUgY29udHJvbGxlZCBieSB0aGVcbiIKKyJhcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGwgZ2V0dGluZyB0aGUgYWR2YW50YWdlIG9mIHByb3ZpZGluZyBkb2N1bWVudCB0eXBlXG4iCisiaW5mb3JtYXRpb24gdG8gdGhlIHBhcnNlci4gXCdmbGFnXCcgZGVmYXVsdHMgdG8gVHJ1ZSBpZiBub3QgcHJvdmlkZWQuIik7CisKKyNkZWZpbmUgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYgICAgXAorICAgIHsiVXNlRm9yZWlnbkRURCIsIChQeUNGdW5jdGlvbilweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFRELCBNRVRIX1ZBUkFSR1MsIHB5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZsYWcgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwKKyAgICAgICAgJmZsYWcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfVXNlRm9yZWlnbkRURF9pbXBsKHNlbGYsIGZsYWcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUpICovCisKK1B5RG9jX1NUUlZBUihweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX19kb2NfXywKKyJfX2Rpcl9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9fX0RJUl9fX01FVEhPRERFRiAgICBcCisgICAgeyJfX2Rpcl9fIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfeG1scGFyc2VyX19fZGlyX18sIE1FVEhfTk9BUkdTLCBweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF94bWxwYXJzZXJfX19kaXJfXyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gcHlleHBhdF94bWxwYXJzZXJfX19kaXJfX19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIocHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19fLAorIlBhcnNlckNyZWF0ZSgkbW9kdWxlLCAvLCBlbmNvZGluZz1Ob25lLCBuYW1lc3BhY2Vfc2VwYXJhdG9yPU5vbmUsXG4iCisiICAgICAgICAgICAgIGludGVybj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LiIpOworCisjZGVmaW5lIFBZRVhQQVRfUEFSU0VSQ1JFQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciwgUHlPYmplY3QgKmludGVybik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X1BhcnNlckNyZWF0ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLCAiaW50ZXJuIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICppbnRlcm4gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHp6TzpQYXJzZXJDcmVhdGUiLCBfa2V5d29yZHMsCisgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChtb2R1bGUsIGVuY29kaW5nLCBuYW1lc3BhY2Vfc2VwYXJhdG9yLCBpbnRlcm4pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihweWV4cGF0X0Vycm9yU3RyaW5nX19kb2NfXywKKyJFcnJvclN0cmluZygkbW9kdWxlLCBjb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBzdHJpbmcgZXJyb3IgZm9yIGdpdmVuIG51bWJlci4iKTsKKworI2RlZmluZSBQWUVYUEFUX0VSUk9SU1RSSU5HX01FVEhPRERFRiAgICBcCisgICAgeyJFcnJvclN0cmluZyIsIChQeUNGdW5jdGlvbilweWV4cGF0X0Vycm9yU3RyaW5nLCBNRVRIX08sIHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsb25nIGNvZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlleHBhdF9FcnJvclN0cmluZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGxvbmcgY29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChtb2R1bGUsIGNvZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZm5kZWYgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY0ZDk5Yzk3MDJkOGE2YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhODY1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaApAQCAtMCwwICsxLDk1IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoU0hBMVR5cGVfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIFNIQTFUWVBFX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pU0hBMVR5cGVfY29weSwgTUVUSF9OT0FSR1MsIFNIQTFUeXBlX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2NvcHlfaW1wbChTSEExb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2NvcHkoU0hBMW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMVR5cGVfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMVR5cGVfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBTSEExVFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEExVHlwZV9kaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEExVHlwZV9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2RpZ2VzdF9pbXBsKFNIQTFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMVR5cGVfZGlnZXN0KFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTFUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMVR5cGVfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgU0hBMVRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBMVR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBMVR5cGVfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEExVHlwZV9oZXhkaWdlc3RfaW1wbChTSEExb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTFUeXBlX2hleGRpZ2VzdChTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEExVHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKFNIQTFUeXBlX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgU0hBMVRZUEVfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pU0hBMVR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTFUeXBlX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTFfc2hhMV9fZG9jX18sCisic2hhMSgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBMSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEExX1NIQTFfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYTEiLCAoUHlDRnVuY3Rpb24pX3NoYTFfc2hhMSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGExX3NoYTFfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGExX3NoYTFfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGExX3NoYTEoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTEiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTFfc2hhMV9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlMTkxMDJmMzEyMDQ5MGEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmZTE4OAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBTSEEyNTZUWVBFX0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pU0hBMjU2VHlwZV9jb3B5LCBNRVRIX05PQVJHUywgU0hBMjU2VHlwZV9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2NvcHlfaW1wbChTSEFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMjU2VHlwZV9jb3B5KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBMjU2VHlwZV9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgU0hBMjU2VFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEEyNTZUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTI1NlR5cGVfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEyNTZUeXBlX2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTI1NlR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihTSEEyNTZUeXBlX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIFNIQTI1NlRZUEVfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pU0hBMjU2VHlwZV9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBTSEEyNTZUeXBlX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMjU2VHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBMjU2VHlwZV9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEEyNTZUeXBlX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoU0hBMjU2VHlwZV91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIFNIQTI1NlRZUEVfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pU0hBMjU2VHlwZV91cGRhdGUsIE1FVEhfTywgU0hBMjU2VHlwZV91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zaGEyNTZfc2hhMjU2X19kb2NfXywKKyJzaGEyNTYoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYgICAgXAorICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjU2LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEyNTZfc2hhMjU2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhMjU2X3NoYTI1NihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjU2IiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zaGEyNTZfc2hhMjU2X2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfc2hhMjU2X3NoYTIyNF9fZG9jX18sCisic2hhMjI0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEtMjI0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGICAgIFwKKyAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGEyNTZfc2hhMjI0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhMjU2X3NoYTIyNF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTI1Nl9zaGEyMjQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTIyNCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTIyNF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1NGNlZGYzYjYzMmM3YjIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMwODczOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKQEAgLTAsMCArMSwxNzEgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX2NvcHksIE1FVEhfTk9BUkdTLCBTSEE1MTJUeXBlX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfY29weV9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEE1MTJUeXBlX2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBTSEE1MTJUeXBlX2NvcHlfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX2RpZ2VzdCwgTUVUSF9OT0FSR1MsIFNIQTUxMlR5cGVfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEE1MTJUeXBlX2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIFNIQTUxMlR5cGVfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBNTEyVHlwZV9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfaGV4ZGlnZXN0X2ltcGwoU0hBb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTUxMlR5cGVfaGV4ZGlnZXN0KFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCisKK1B5RG9jX1NUUlZBUihTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilTSEE1MTJUeXBlX3VwZGF0ZSwgTUVUSF9PLCBTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCisKKyNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKKworUHlEb2NfU1RSVkFSKF9zaGE1MTJfc2hhNTEyX19kb2NfXywKKyJzaGE1MTIoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQS01MTIgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKworI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYgICAgXAorICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhNTEyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTUxMl9zaGE1MTJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGE1MTJfc2hhNTEyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhNTEyX3NoYTUxMihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhNTEyIiwgX2tleXdvcmRzLAorICAgICAgICAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhNTEyX2ltcGwobW9kdWxlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KKworI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQorCitQeURvY19TVFJWQVIoX3NoYTUxMl9zaGEzODRfX2RvY19fLAorInNoYTM4NCgkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRiAgICBcCisgICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGEzODQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTUxMl9zaGEzODRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGE1MTJfc2hhMzg0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEzODQiLCBfa2V5d29yZHMsCisgICAgICAgICZzdHJpbmcpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGEzODRfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRgorICAgICNkZWZpbmUgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFjN2QzODU3MzFmZWU3YzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMwN2VmMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKQEAgLTAsMCArMSw0MzIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKEhBVkVfQUxBUk0pCisKK1B5RG9jX1NUUlZBUihzaWduYWxfYWxhcm1fX2RvY19fLAorImFsYXJtKCRtb2R1bGUsIHNlY29uZHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcnJhbmdlIGZvciBTSUdBTFJNIHRvIGFycml2ZSBhZnRlciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMuIik7CisKKyNkZWZpbmUgU0lHTkFMX0FMQVJNX01FVEhPRERFRiAgICBcCisgICAgeyJhbGFybSIsIChQeUNGdW5jdGlvbilzaWduYWxfYWxhcm0sIE1FVEhfTywgc2lnbmFsX2FsYXJtX19kb2NfX30sCisKK3N0YXRpYyBsb25nCitzaWduYWxfYWxhcm1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2Vjb25kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfYWxhcm0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc2Vjb25kczsKKyAgICBsb25nIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6YWxhcm0iLCAmc2Vjb25kcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2FsYXJtX2ltcGwobW9kdWxlLCBzZWNvbmRzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9BTEFSTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9QQVVTRSkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wYXVzZV9fZG9jX18sCisicGF1c2UoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldhaXQgdW50aWwgYSBzaWduYWwgYXJyaXZlcy4iKTsKKworI2RlZmluZSBTSUdOQUxfUEFVU0VfTUVUSE9EREVGICAgIFwKKyAgICB7InBhdXNlIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wYXVzZSwgTUVUSF9OT0FSR1MsIHNpZ25hbF9wYXVzZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3BhdXNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcGF1c2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gc2lnbmFsX3BhdXNlX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9QQVVTRSkgKi8KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWduYWxfX2RvY19fLAorInNpZ25hbCgkbW9kdWxlLCBzaWduYWxudW0sIGhhbmRsZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXQgdGhlIGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC5cbiIKKyJcbiIKKyJUaGUgYWN0aW9uIGNhbiBiZSBTSUdfREZMLCBTSUdfSUdOLCBvciBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QuXG4iCisiVGhlIHByZXZpb3VzIGFjdGlvbiBpcyByZXR1cm5lZC4gIFNlZSBnZXRzaWduYWwoKSBmb3IgcG9zc2libGUgcmV0dXJuIHZhbHVlcy5cbiIKKyJcbiIKKyIqKiogSU1QT1JUQU5UIE5PVElDRSAqKipcbiIKKyJBIHNpZ25hbCBoYW5kbGVyIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6XG4iCisidGhlIGZpcnN0IGlzIHRoZSBzaWduYWwgbnVtYmVyLCB0aGUgc2Vjb25kIGlzIHRoZSBpbnRlcnJ1cHRlZCBzdGFjayBmcmFtZS4iKTsKKworI2RlZmluZSBTSUdOQUxfU0lHTkFMX01FVEhPRERFRiAgICBcCisgICAgeyJzaWduYWwiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ25hbCwgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnbmFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnbmFsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHNpZ25hbG51bSwgUHlPYmplY3QgKmhhbmRsZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ25hbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc2lnbmFsbnVtOworICAgIFB5T2JqZWN0ICpoYW5kbGVyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpzaWduYWwiLAorICAgICAgICAmc2lnbmFsbnVtLCAmaGFuZGxlcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lnbmFsX2ltcGwobW9kdWxlLCBzaWduYWxudW0sIGhhbmRsZXIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfZ2V0c2lnbmFsX19kb2NfXywKKyJnZXRzaWduYWwoJG1vZHVsZSwgc2lnbmFsbnVtLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50IGFjdGlvbiBmb3IgdGhlIGdpdmVuIHNpZ25hbC5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZTpcbiIKKyIgIFNJR19JR04gLS0gaWYgdGhlIHNpZ25hbCBpcyBiZWluZyBpZ25vcmVkXG4iCisiICBTSUdfREZMIC0tIGlmIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIHNpZ25hbCBpcyBpbiBlZmZlY3RcbiIKKyIgIE5vbmUgICAgLS0gaWYgYW4gdW5rbm93biBoYW5kbGVyIGlzIGluIGVmZmVjdFxuIgorIiAgYW55dGhpbmcgZWxzZSAtLSB0aGUgY2FsbGFibGUgUHl0aG9uIG9iamVjdCB1c2VkIGFzIGEgaGFuZGxlciIpOworCisjZGVmaW5lIFNJR05BTF9HRVRTSUdOQUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNpZ25hbCIsIChQeUNGdW5jdGlvbilzaWduYWxfZ2V0c2lnbmFsLCBNRVRIX08sIHNpZ25hbF9nZXRzaWduYWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9nZXRzaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9nZXRzaWduYWwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgc2lnbmFsbnVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldHNpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX1NJR0lOVEVSUlVQVCkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWdpbnRlcnJ1cHRfX2RvY19fLAorInNpZ2ludGVycnVwdCgkbW9kdWxlLCBzaWduYWxudW0sIGZsYWcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDaGFuZ2Ugc3lzdGVtIGNhbGwgcmVzdGFydCBiZWhhdmlvdXIuXG4iCisiXG4iCisiSWYgZmxhZyBpcyBGYWxzZSwgc3lzdGVtIGNhbGxzIHdpbGwgYmUgcmVzdGFydGVkIHdoZW4gaW50ZXJydXB0ZWQgYnlcbiIKKyJzaWduYWwgc2lnLCBlbHNlIHN5c3RlbSBjYWxscyB3aWxsIGJlIGludGVycnVwdGVkLiIpOworCisjZGVmaW5lIFNJR05BTF9TSUdJTlRFUlJVUFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ2ludGVycnVwdCIsIChQeUNGdW5jdGlvbilzaWduYWxfc2lnaW50ZXJydXB0LCBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWdpbnRlcnJ1cHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBpbnQgZmxhZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnaW50ZXJydXB0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBzaWduYWxudW07CisgICAgaW50IGZsYWc7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNpZ2ludGVycnVwdCIsCisgICAgICAgICZzaWduYWxudW0sICZmbGFnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgZmxhZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdJTlRFUlJVUFQpICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VUSVRJTUVSKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NldGl0aW1lcl9fZG9jX18sCisic2V0aXRpbWVyKCRtb2R1bGUsIHdoaWNoLCBzZWNvbmRzLCBpbnRlcnZhbD0wLjAsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZXRzIGdpdmVuIGl0aW1lciAob25lIG9mIElUSU1FUl9SRUFMLCBJVElNRVJfVklSVFVBTCBvciBJVElNRVJfUFJPRikuXG4iCisiXG4iCisiVGhlIHRpbWVyIHdpbGwgZmlyZSBhZnRlciB2YWx1ZSBzZWNvbmRzIGFuZCBhZnRlciB0aGF0IGV2ZXJ5IGludGVydmFsIHNlY29uZHMuXG4iCisiVGhlIGl0aW1lciBjYW4gYmUgY2xlYXJlZCBieSBzZXR0aW5nIHNlY29uZHMgdG8gemVyby5cbiIKKyJcbiIKKyJSZXR1cm5zIG9sZCB2YWx1ZXMgYXMgYSB0dXBsZTogKGRlbGF5LCBpbnRlcnZhbCkuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYgICAgXAorICAgIHsic2V0aXRpbWVyIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zZXRpdGltZXIsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NldGl0aW1lcl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NldGl0aW1lcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgZG91YmxlIHNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGludGVydmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zZXRpdGltZXIoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHdoaWNoOworICAgIGRvdWJsZSBzZWNvbmRzOworICAgIGRvdWJsZSBpbnRlcnZhbCA9IDAuMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWR8ZDpzZXRpdGltZXIiLAorICAgICAgICAmd2hpY2gsICZzZWNvbmRzLCAmaW50ZXJ2YWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NldGl0aW1lcl9pbXBsKG1vZHVsZSwgd2hpY2gsIHNlY29uZHMsIGludGVydmFsKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NFVElUSU1FUikgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRJVElNRVIpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfZ2V0aXRpbWVyX19kb2NfXywKKyJnZXRpdGltZXIoJG1vZHVsZSwgd2hpY2gsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLiIpOworCisjZGVmaW5lIFNJR05BTF9HRVRJVElNRVJfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldGl0aW1lciIsIChQeUNGdW5jdGlvbilzaWduYWxfZ2V0aXRpbWVyLCBNRVRIX08sIHNpZ25hbF9nZXRpdGltZXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9nZXRpdGltZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgd2hpY2gpOworCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX2dldGl0aW1lcihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCB3aGljaDsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRpdGltZXIiLCAmd2hpY2gpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldGl0aW1lcl9pbXBsKG1vZHVsZSwgd2hpY2gpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUSVRJTUVSKSAqLworCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfX2RvY19fLAorInB0aHJlYWRfc2lnbWFzaygkbW9kdWxlLCBob3csIG1hc2ssIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYgICAgXAorICAgIHsicHRocmVhZF9zaWdtYXNrIiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX3NpZ21hc2ssIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfc2lnbWFza19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBob3csIFB5T2JqZWN0ICptYXNrKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX3NpZ21hc2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGhvdzsKKyAgICBQeU9iamVjdCAqbWFzazsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86cHRocmVhZF9zaWdtYXNrIiwKKyAgICAgICAgJmhvdywgJm1hc2spKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKG1vZHVsZSwgaG93LCBtYXNrKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgKi8KKworI2lmIGRlZmluZWQoSEFWRV9TSUdQRU5ESU5HKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3BlbmRpbmdfX2RvY19fLAorInNpZ3BlbmRpbmcoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkV4YW1pbmUgcGVuZGluZyBzaWduYWxzLlxuIgorIlxuIgorIlJldHVybnMgYSBzZXQgb2Ygc2lnbmFsIG51bWJlcnMgdGhhdCBhcmUgcGVuZGluZyBmb3IgZGVsaXZlcnkgdG9cbiIKKyJ0aGUgY2FsbGluZyB0aHJlYWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1BFTkRJTkdfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ3BlbmRpbmciLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3BlbmRpbmcsIE1FVEhfTk9BUkdTLCBzaWduYWxfc2lncGVuZGluZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3BlbmRpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdwZW5kaW5nKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHNpZ25hbF9zaWdwZW5kaW5nX2ltcGwobW9kdWxlKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdQRU5ESU5HKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVQpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdF9fZG9jX18sCisic2lnd2FpdCgkbW9kdWxlLCBzaWdzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IGZvciBhIHNpZ25hbC5cbiIKKyJcbiIKKyJTdXNwZW5kIGV4ZWN1dGlvbiBvZiB0aGUgY2FsbGluZyB0aHJlYWQgdW50aWwgdGhlIGRlbGl2ZXJ5IG9mIG9uZSBvZiB0aGVcbiIKKyJzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCBzaWdzZXQuICBUaGUgZnVuY3Rpb24gYWNjZXB0cyB0aGUgc2lnbmFsXG4iCisiYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1dBSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InNpZ3dhaXQiLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXQsIE1FVEhfTywgc2lnbmFsX3NpZ3dhaXRfX2RvY19ffSwKKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdXQUlUKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRpbmZvX19kb2NfXywKKyJzaWd3YWl0aW5mbygkbW9kdWxlLCBzaWdzZXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXYWl0IHN5bmNocm9ub3VzbHkgdW50aWwgb25lIG9mIHRoZSBzaWduYWxzIGluICpzaWdzZXQqIGlzIGRlbGl2ZXJlZC5cbiIKKyJcbiIKKyJSZXR1cm5zIGEgc3RydWN0X3NpZ2luZm8gY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsLiIpOworCisjZGVmaW5lIFNJR05BTF9TSUdXQUlUSU5GT19NRVRIT0RERUYgICAgXAorICAgIHsic2lnd2FpdGluZm8iLCAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXRpbmZvLCBNRVRIX08sIHNpZ25hbF9zaWd3YWl0aW5mb19fZG9jX199LAorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSAqLworCisjaWYgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd0aW1lZHdhaXRfX2RvY19fLAorInNpZ3RpbWVkd2FpdCgkbW9kdWxlLCBzaWdzZXQsIHRpbWVvdXQsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJMaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dC5cbiIKKyJcbiIKKyJUaGUgdGltZW91dCBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcywgd2l0aCBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFsbG93ZWQuIik7CisKKyNkZWZpbmUgU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYgICAgXAorICAgIHsic2lndGltZWR3YWl0IiwgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd0aW1lZHdhaXQsIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3RpbWVkd2FpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzaWdzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd0aW1lZHdhaXQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNpZ3NldDsKKyAgICBQeU9iamVjdCAqdGltZW91dF9vYmo7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzaWd0aW1lZHdhaXQiLAorICAgICAgICAyLCAyLAorICAgICAgICAmc2lnc2V0LCAmdGltZW91dF9vYmopKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ3RpbWVkd2FpdF9pbXBsKG1vZHVsZSwgc2lnc2V0LCB0aW1lb3V0X29iaik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpICovCisKKyNpZiAoZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkpCisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9raWxsX19kb2NfXywKKyJwdGhyZWFkX2tpbGwoJG1vZHVsZSwgdGhyZWFkX2lkLCBzaWduYWxudW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLiIpOworCisjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGICAgIFwKKyAgICB7InB0aHJlYWRfa2lsbCIsIChQeUNGdW5jdGlvbilzaWduYWxfcHRocmVhZF9raWxsLCBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9wdGhyZWFkX2tpbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX2tpbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBsb25nIHRocmVhZF9pZCwgaW50IHNpZ25hbG51bSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfcHRocmVhZF9raWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGxvbmcgdGhyZWFkX2lkOworICAgIGludCBzaWduYWxudW07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsCisgICAgICAgICZ0aHJlYWRfaWQsICZzaWduYWxudW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKG1vZHVsZSwgdGhyZWFkX2lkLCBzaWduYWxudW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkpICovCisKKyNpZm5kZWYgU0lHTkFMX0FMQVJNX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX0FMQVJNX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9BTEFSTV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1BBVVNFX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1BBVVNFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9QQVVTRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdJTlRFUlJVUFRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TRVRJVElNRVJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NFVElUSU1FUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9HRVRJVElNRVJfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX0dFVElUSU1FUl9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX1NJR01BU0tfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfU0lHTUFTS19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1BFTkRJTkdfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHUEVORElOR19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1dBSVRfTUVUSE9EREVGCisgICAgI2RlZmluZSBTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfU0lHV0FJVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRgorICAgICNkZWZpbmUgU0lHTkFMX1NJR1dBSVRJTkZPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9TSUdXQUlUSU5GT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9TSUdUSU1FRFdBSVRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1NJR1RJTUVEV0FJVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjk5Mjc4YzE2YzQwZWE0MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZDE4ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaApAQCAtMCwwICsxLDY4IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWYgZGVmaW5lZChIQVZFX0dFVFNQTkFNKQorCitQeURvY19TVFJWQVIoc3B3ZF9nZXRzcG5hbV9fZG9jX18sCisiZ2V0c3BuYW0oJG1vZHVsZSwgYXJnLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuXG4iCisiXG4iCisiU2VlIGBoZWxwKHNwd2QpYCBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKworI2RlZmluZSBTUFdEX0dFVFNQTkFNX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRzcG5hbSIsIChQeUNGdW5jdGlvbilzcHdkX2dldHNwbmFtLCBNRVRIX08sIHNwd2RfZ2V0c3BuYW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BuYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Nwd2RfZ2V0c3BuYW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ18pCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmFyZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHNwd2RfZ2V0c3BuYW1faW1wbChtb2R1bGUsIGFyZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRTUE5BTSkgKi8KKworI2lmIGRlZmluZWQoSEFWRV9HRVRTUEVOVCkKKworUHlEb2NfU1RSVkFSKHNwd2RfZ2V0c3BhbGxfX2RvY19fLAorImdldHNwYWxsKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cbiIKKyJcbiIKKyJTZWUgYGhlbHAoc3B3ZClgIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworCisjZGVmaW5lIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHNwYWxsIiwgKFB5Q0Z1bmN0aW9uKXNwd2RfZ2V0c3BhbGwsIE1FVEhfTk9BUkdTLCBzcHdkX2dldHNwYWxsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitzcHdkX2dldHNwYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzcHdkX2dldHNwYWxsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHNwd2RfZ2V0c3BhbGxfaW1wbChtb2R1bGUpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFNQRU5UKSAqLworCisjaWZuZGVmIFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGCisgICAgI2RlZmluZSBTUFdEX0dFVFNQTkFNX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BOQU1fTUVUSE9EREVGKSAqLworCisjaWZuZGVmIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BBTExfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjMTc4ODMwNDEzZjc3NjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjBjMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKQEAgLTAsMCArMSwzNjggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9fZG9jX18sCisiZGVjaW1hbCgkc2VsZiwgY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGVjaW1hbCB2YWx1ZS5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGludGVnZXIuXG4iCisiSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLFxuIgorIlZhbHVlRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9ERUNJTUFMX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNpbWFsIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKyAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkZWNpbWFsIiwKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGlnaXRfX2RvY19fLAorImRpZ2l0KCRzZWxmLCBjaHIsIGRlZmF1bHQ9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkaWdpdCB2YWx1ZS5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLlxuIgorIklmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbixcbiIKKyJWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfRElHSVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2l0IiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9kaWdpdCwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGlnaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGlnaXQiLAorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19fZG9jX18sCisibnVtZXJpYygkc2VsZiwgY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgbnVtZXJpYyB2YWx1ZS5cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGZsb2F0LlxuIgorIklmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbixcbiIKKyJWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfTlVNRVJJQ19NRVRIT0RERUYgICAgXAorICAgIHsibnVtZXJpYyIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfbnVtZXJpYywgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX251bWVyaWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bnVtZXJpYyIsCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9udW1lcmljX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X19kb2NfXywKKyJjYXRlZ29yeSgkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0NBVEVHT1JZX01FVEhPRERFRiAgICBcCisgICAgeyJjYXRlZ29yeSIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnksIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGNocjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoc2VsZiwgY2hyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfX2RvY19fLAorImJpZGlyZWN0aW9uYWwoJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGJpZGlyZWN0aW9uYWwgY2xhc3MgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLlxuIgorIlxuIgorIklmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9CSURJUkVDVElPTkFMX01FVEhPRERFRiAgICBcCisgICAgeyJiaWRpcmVjdGlvbmFsIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsLCBNRVRIX08sIHVuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2JpZGlyZWN0aW9uYWxfaW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX19kb2NfXywKKyJjb21iaW5pbmcoJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgaW50ZWdlci5cbiIKKyJcbiIKKyJSZXR1cm5zIDAgaWYgbm8gY29tYmluaW5nIGNsYXNzIGlzIGRlZmluZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0NPTUJJTklOR19NRVRIT0RERUYgICAgXAorICAgIHsiY29tYmluaW5nIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmcsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19fZG9jX199LAorCitzdGF0aWMgaW50Cit1bmljb2RlZGF0YV9VQ0RfY29tYmluaW5nX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgX3JldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChzZWxmLCBjaHIpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX19kb2NfXywKKyJtaXJyb3JlZCgkc2VsZiwgY2hyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbWlycm9yZWQgcHJvcGVydHkgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgaW50ZWdlci5cbiIKKyJcbiIKKyJSZXR1cm5zIDEgaWYgdGhlIGNoYXJhY3RlciBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIGEgXCJtaXJyb3JlZFwiXG4iCisiY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX01JUlJPUkVEX01FVEhPRERFRiAgICBcCisgICAgeyJtaXJyb3JlZCIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWQsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9taXJyb3JlZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9taXJyb3JlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIGludCBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOm1pcnJvcmVkIiwgJmNocikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX21pcnJvcmVkX2ltcGwoc2VsZiwgY2hyKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX19kb2NfXywKKyJlYXN0X2FzaWFuX3dpZHRoKCRzZWxmLCBjaHIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBlYXN0IGFzaWFuIHdpZHRoIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIHN0cmluZy4iKTsKKworI2RlZmluZSBVTklDT0RFREFUQV9VQ0RfRUFTVF9BU0lBTl9XSURUSF9NRVRIT0RERUYgICAgXAorICAgIHsiZWFzdF9hc2lhbl93aWR0aCIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aCwgTUVUSF9PLCB1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoc2VsZiwgY2hyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25fX2RvY19fLAorImRlY29tcG9zaXRpb24oJHNlbGYsIGNociwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLlxuIgorIlxuIgorIkFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiBjYXNlIG5vIHN1Y2ggbWFwcGluZyBpcyBkZWZpbmVkLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9ERUNPTVBPU0lUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNvbXBvc2l0aW9uIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uLCBNRVRIX08sIHVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlZGF0YV9VQ0RfZGVjb21wb3NpdGlvbl9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBjaHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZGVjb21wb3NpdGlvbiIsICZjaHIpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25faW1wbChzZWxmLCBjaHIpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX19kb2NfXywKKyJub3JtYWxpemUoJHNlbGYsIGZvcm0sIHVuaXN0ciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbm9ybWFsIGZvcm0gXCdmb3JtXCcgZm9yIHRoZSBVbmljb2RlIHN0cmluZyB1bmlzdHIuXG4iCisiXG4iCisiVmFsaWQgdmFsdWVzIGZvciBmb3JtIGFyZSBcJ05GQ1wnLCBcJ05GS0NcJywgXCdORkRcJywgYW5kIFwnTkZLRFwnLiIpOworCisjZGVmaW5lIFVOSUNPREVEQVRBX1VDRF9OT1JNQUxJWkVfTUVUSE9EREVGICAgIFwKKyAgICB7Im5vcm1hbGl6ZSIsIChQeUNGdW5jdGlvbil1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfaW1wbChQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqZm9ybTsKKyAgICBQeU9iamVjdCAqaW5wdXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPITpub3JtYWxpemUiLAorICAgICAgICAmZm9ybSwgJlB5VW5pY29kZV9UeXBlLCAmaW5wdXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25vcm1hbGl6ZV9pbXBsKHNlbGYsIGZvcm0sIGlucHV0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIodW5pY29kZWRhdGFfVUNEX25hbWVfX2RvY19fLAorIm5hbWUoJHNlbGYsIGNociwgZGVmYXVsdD1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbmFtZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBhIHN0cmluZy5cbiIKKyJcbiIKKyJJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sXG4iCisiVmFsdWVFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX05BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Im5hbWUiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX25hbWUsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX25hbWVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9uYW1lX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9uYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgY2hyOworICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOm5hbWUiLAorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbmFtZV9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX1VDRF9sb29rdXBfX2RvY19fLAorImxvb2t1cCgkc2VsZiwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkxvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuXG4iCisiXG4iCisiSWYgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZVxuIgorImNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCBLZXlFcnJvciBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0xPT0tVUF9NRVRIT0RERUYgICAgXAorICAgIHsibG9va3VwIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVkYXRhX1VDRF9sb29rdXAsIE1FVEhfTywgdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWRhdGFfVUNEX2xvb2t1cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOworICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKHNlbGYsIG5hbWUsIG5hbWVfbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRmOGRhMzNjNmJjNmVmYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAppbmRleCBmNTRhODA1Li4zNTY2MWE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaApAQCAtMjYsOCArMjYsNyBAQAogICAgIFB5X2J1ZmZlciBieXRlcyA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfGk6Y29tcHJlc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpjb21wcmVzcyIsCiAgICAgICAgICZieXRlcywgJmxldmVsKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NfaW1wbChtb2R1bGUsICZieXRlcywgbGV2ZWwpOwpAQCAtNTcsNyArNTYsOCBAQAogICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywgdW5zaWduZWQgaW50IGJ1ZnNpemUpOworemxpYl9kZWNvbXByZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmc2l6ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3MoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCkBAIC02Nyw4ICs2Nyw3IEBACiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIHVuc2lnbmVkIGludCBidWZzaXplID0gREVGX0JVRl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxpTyY6ZGVjb21wcmVzcyIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpTyY6ZGVjb21wcmVzcyIsCiAgICAgICAgICZkYXRhLCAmd2JpdHMsIHVpbnRfY29udmVydGVyLCAmYnVmc2l6ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NfaW1wbChtb2R1bGUsICZkYXRhLCB3Yml0cywgYnVmc2l6ZSk7CkBAIC0xMTEsNyArMTEwLDggQEAKICAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB6bGliX2NvbXByZXNzb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGxldmVsLCBpbnQgbWV0aG9kLCBpbnQgd2JpdHMsIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKK3psaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbWVtTGV2ZWwsIGludCBzdHJhdGVneSwgUHlfYnVmZmVyICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2NvbXByZXNzb2JqKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtMTI1LDggKzEyNSw3IEBACiAgICAgaW50IHN0cmF0ZWd5ID0gWl9ERUZBVUxUX1NUUkFURUdZOwogICAgIFB5X2J1ZmZlciB6ZGljdCA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgInxpaWlpaXkqOmNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpaWlpaXkqOmNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAogICAgICAgICAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzb2JqX2ltcGwobW9kdWxlLCBsZXZlbCwgbWV0aG9kLCB3Yml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCAmemRpY3QpOwpAQCAtMTY1LDggKzE2NCw3IEBACiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5T2JqZWN0ICp6ZGljdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKICAgICAgICAgJndiaXRzLCAmemRpY3QpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzb2JqX2ltcGwobW9kdWxlLCB3Yml0cywgemRpY3QpOwpAQCAtMTg5LDIwICsxODcsMTggQEAKICJDYWxsIHRoZSBmbHVzaCgpIG1ldGhvZCB0byBjbGVhciB0aGVzZSBidWZmZXJzLiIpOwogCiAjZGVmaW5lIFpMSUJfQ09NUFJFU1NfQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfQ29tcHJlc3NfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9Db21wcmVzc19jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9Db21wcmVzc19jb21wcmVzcywgTUVUSF9PLCB6bGliX0NvbXByZXNzX2NvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0NvbXByZXNzX2NvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfQ29tcHJlc3NfY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit6bGliX0NvbXByZXNzX2NvbXByZXNzKGNvbXBvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqOmNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0NvbXByZXNzX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCkBAIC0yMzUsNyArMjMxLDggQEAKICAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLCB1bnNpZ25lZCBpbnQgbWF4X2xlbmd0aCk7Cit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNDQsOCArMjQxLDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICB1bnNpZ25lZCBpbnQgbWF4X2xlbmd0aCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgInkqfE8mOmRlY29tcHJlc3MiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8TyY6ZGVjb21wcmVzcyIsCiAgICAgICAgICZkYXRhLCB1aW50X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKQogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CkBAIC0yODIsOCArMjc4LDcgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZSA9IFpfRklOSVNIOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ8aTpmbHVzaCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpmbHVzaCIsCiAgICAgICAgICZtb2RlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBtb2RlKTsKQEAgLTMxNCwxMCArMzA5LDYgQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9aTElCX0NPUFkpICovCiAKLSNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgotICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCi0KICNpZiBkZWZpbmVkKEhBVkVfWkxJQl9DT1BZKQogCiBQeURvY19TVFJWQVIoemxpYl9EZWNvbXByZXNzX2NvcHlfX2RvY19fLApAQCAtMzQwLDEwICszMzEsNiBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX1pMSUJfQ09QWSkgKi8KIAotI2lmbmRlZiBaTElCX0RFQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfREVDT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KLQogUHlEb2NfU1RSVkFSKHpsaWJfRGVjb21wcmVzc19mbHVzaF9fZG9jX18sCiAiZmx1c2goJHNlbGYsIGxlbmd0aD16bGliLkRFRl9CVUZfU0laRSwgLylcbiIKICItLVxuIgpAQCAtMzY1LDggKzM1Miw3IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IGxlbmd0aCA9IERFRl9CVUZfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAifE8mOmZsdXNoIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpmbHVzaCIsCiAgICAgICAgIHVpbnRfY29udmVydGVyLCAmbGVuZ3RoKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIGxlbmd0aCk7CkBAIC0zOTksOCArMzg1LDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmFkbGVyMzIiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STphZGxlcjMyIiwKICAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2FkbGVyMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CkBAIC00MzcsOCArNDIyLDcgQEAKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJ5KnxJOmNyYzMyIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAogICAgICAgICAmZGF0YSwgJnZhbHVlKSkKICAgICAgICAgZ290byBleGl0OwogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY3JjMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CkBAIC00NTAsNCArNDM0LDggQEAKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmM5NDczNzIxY2E3Yzk2MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisKKyNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgorICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTZlZDExNDdiYmJiNDc4OCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKaW5kZXggYjM0MWMzNC4uN2Y2YzJjOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwpAQCAtOCw2ICs4LDQwIEBACiAgICBmbG9hdC5oLiAgV2UgYXNzdW1lIHRoYXQgRkxUX1JBRElYIGlzIGVpdGhlciAyIG9yIDE2LiAqLwogI2luY2x1ZGUgPGZsb2F0Lmg+CiAKKyNpbmNsdWRlICJjbGluaWMvY21hdGhtb2R1bGUuYy5oIgorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIGNtYXRoCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zMDhkNjgzOWY0YTQ2MzMzXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIFB5X2NvbXBsZXhfcHJvdGVjdGVkX2NvbnZlcnRlcihQeV9jb21wbGV4X2NvbnZlcnRlcik6CisgICAgZGVmIG1vZGlmeShzZWxmKToKKyAgICAgICAgcmV0dXJuICdlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOycKKworCitjbGFzcyBQeV9jb21wbGV4X3Byb3RlY3RlZF9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAiUHlfY29tcGxleCIKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoIiIiCitQeUZQRV9FTkRfUFJPVEVDVChfcmV0dXJuX3ZhbHVlKTsKK2lmIChlcnJubyA9PSBFRE9NKSB7eworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibWF0aCBkb21haW4gZXJyb3IiKTsKKyAgICBnb3RvIGV4aXQ7Cit9fQorZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7eworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOworICAgIGdvdG8gZXhpdDsKK319CitlbHNlIHt7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlDb21wbGV4X0Zyb21DQ29tcGxleChfcmV0dXJuX3ZhbHVlKTsKK319CisiIiIuc3RyaXAoKSkKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIzMTAxOTAzOWE2ZmJiOWFdKi8KKwogI2lmIChGTFRfUkFESVggIT0gMiAmJiBGTFRfUkFESVggIT0gMTYpCiAjZXJyb3IgIk1vZHVsZXMvY21hdGhtb2R1bGUuYyBleHBlY3RzIEZMVF9SQURJWCB0byBiZSAyIG9yIDE2IgogI2VuZGlmCkBAIC00OCwxMiArODIsMTIgQEAKICNkZWZpbmUgQ01fU0NBTEVfRE9XTiAoLShDTV9TQ0FMRV9VUCsxKS8yKQogCiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIFB5X2NvbXBsZXggY19hc2luaChQeV9jb21wbGV4KTsKLXN0YXRpYyBQeV9jb21wbGV4IGNfYXRhbmgoUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX2Nvc2goUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX3NpbmgoUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX3NxcnQoUHlfY29tcGxleCk7Ci1zdGF0aWMgUHlfY29tcGxleCBjX3RhbmgoUHlfY29tcGxleCk7CitzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICosIFB5X2NvbXBsZXgpOworc3RhdGljIFB5X2NvbXBsZXggY21hdGhfYXRhbmhfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2Nvc2hfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX3NpbmhfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX3NxcnRfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKK3N0YXRpYyBQeV9jb21wbGV4IGNtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqLCBQeV9jb21wbGV4KTsKIHN0YXRpYyBQeU9iamVjdCAqIG1hdGhfZXJyb3Iodm9pZCk7CiAKIC8qIENvZGUgdG8gZGVhbCB3aXRoIHNwZWNpYWwgdmFsdWVzIChpbmZpbml0aWVzLCBOYU5zLCBldGMuKS4gKi8KQEAgLTEyMyw4ICsxNTcsMTggQEAKIAogc3RhdGljIFB5X2NvbXBsZXggYWNvc19zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguYWNvcyAtPiBQeV9jb21wbGV4X3Byb3RlY3RlZAorCisgICAgejogUHlfY29tcGxleF9wcm90ZWN0ZWQKKyAgICAvCisKK1JldHVybiB0aGUgYXJjIGNvc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19hY29zKFB5X2NvbXBsZXggeikKK2NtYXRoX2Fjb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2MxZGQyMWZmODE4ZGI2YiBpbnB1dD1iZDZjYmQ3OGFlODUxOTI3XSovCiB7CiAgICAgUHlfY29tcGxleCBzMSwgczIsIHI7CiAKQEAgLTE0NSwxMCArMTg5LDEwIEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgczEucmVhbCA9IDEuLXoucmVhbDsKICAgICAgICAgczEuaW1hZyA9IC16LmltYWc7Ci0gICAgICAgIHMxID0gY19zcXJ0KHMxKTsKKyAgICAgICAgczEgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCBzMSk7CiAgICAgICAgIHMyLnJlYWwgPSAxLit6LnJlYWw7CiAgICAgICAgIHMyLmltYWcgPSB6LmltYWc7Ci0gICAgICAgIHMyID0gY19zcXJ0KHMyKTsKKyAgICAgICAgczIgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCBzMik7CiAgICAgICAgIHIucmVhbCA9IDIuKmF0YW4yKHMxLnJlYWwsIHMyLnJlYWwpOwogICAgICAgICByLmltYWcgPSBtX2FzaW5oKHMyLnJlYWwqczEuaW1hZyAtIHMyLmltYWcqczEucmVhbCk7CiAgICAgfQpAQCAtMTU2LDE2ICsyMDAsMTggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYWNvc19kb2MsCi0iYWNvcyh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgYXJjIGNvc2luZSBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IGFjb3NoX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hY29zaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2Fjb3NoKFB5X2NvbXBsZXggeikKK2NtYXRoX2Fjb3NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMyM2M3NzY0MjlkZWY5ODEgaW5wdXQ9M2Y2MWJlZTdkNzAzZTUzY10qLwogewogICAgIFB5X2NvbXBsZXggczEsIHMyLCByOwogCkBAIC0xNzgsMTAgKzIyNCwxMCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHMxLnJlYWwgPSB6LnJlYWwgLSAxLjsKICAgICAgICAgczEuaW1hZyA9IHouaW1hZzsKLSAgICAgICAgczEgPSBjX3NxcnQoczEpOworICAgICAgICBzMSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMxKTsKICAgICAgICAgczIucmVhbCA9IHoucmVhbCArIDEuOwogICAgICAgICBzMi5pbWFnID0gei5pbWFnOwotICAgICAgICBzMiA9IGNfc3FydChzMik7CisgICAgICAgIHMyID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgczIpOwogICAgICAgICByLnJlYWwgPSBtX2FzaW5oKHMxLnJlYWwqczIucmVhbCArIHMxLmltYWcqczIuaW1hZyk7CiAgICAgICAgIHIuaW1hZyA9IDIuKmF0YW4yKHMxLmltYWcsIHMyLnJlYWwpOwogICAgIH0KQEAgLTE4OSwzNSArMjM1LDM4IEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2Fjb3NoX2RvYywKLSJhY29zaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIGNvc2luZSBvZiB4LiIpOworLypbY2xpbmljIGlucHV0XQorY21hdGguYXNpbiA9IGNtYXRoLmFjb3MKIAorUmV0dXJuIHRoZSBhcmMgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY19hc2luKFB5X2NvbXBsZXggeikKK2NtYXRoX2FzaW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDJkMjM0NmQ0NjY5MDgyNiBpbnB1dD1iZTBiZjBjZmRkNTIzOWM1XSovCiB7CiAgICAgLyogYXNpbih6KSA9IC1pIGFzaW5oKGl6KSAqLwogICAgIFB5X2NvbXBsZXggcywgcjsKICAgICBzLnJlYWwgPSAtei5pbWFnOwogICAgIHMuaW1hZyA9IHoucmVhbDsKLSAgICBzID0gY19hc2luaChzKTsKKyAgICBzID0gY21hdGhfYXNpbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hc2luX2RvYywKLSJhc2luKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBhcmMgc2luZSBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IGFzaW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5hc2luaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19hc2luaChQeV9jb21wbGV4IHopCitjbWF0aF9hc2luaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYzY2NjQ4MjNjN2IxYjM1IGlucHV0PTVjMDk0NDhmY2ZjODlhNzldKi8KIHsKICAgICBQeV9jb21wbGV4IHMxLCBzMiwgcjsKIApAQCAtMjM1LDEwICsyODQsMTAgQEAKICAgICB9IGVsc2UgewogICAgICAgICBzMS5yZWFsID0gMS4rei5pbWFnOwogICAgICAgICBzMS5pbWFnID0gLXoucmVhbDsKLSAgICAgICAgczEgPSBjX3NxcnQoczEpOworICAgICAgICBzMSA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMxKTsKICAgICAgICAgczIucmVhbCA9IDEuLXouaW1hZzsKICAgICAgICAgczIuaW1hZyA9IHoucmVhbDsKLSAgICAgICAgczIgPSBjX3NxcnQoczIpOworICAgICAgICBzMiA9IGNtYXRoX3NxcnRfaW1wbChtb2R1bGUsIHMyKTsKICAgICAgICAgci5yZWFsID0gbV9hc2luaChzMS5yZWFsKnMyLmltYWctczIucmVhbCpzMS5pbWFnKTsKICAgICAgICAgci5pbWFnID0gYXRhbjIoei5pbWFnLCBzMS5yZWFsKnMyLnJlYWwtczEuaW1hZypzMi5pbWFnKTsKICAgICB9CkBAIC0yNDYsMjAgKzI5NSwyMiBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19hc2luaF9kb2MsCi0iYXNpbmgoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGludmVyc2UgaHlwZXJib2xpYyBzaW5lIG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmF0YW4gPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgYXJjIHRhbmdlbnQgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5X2NvbXBsZXgKLWNfYXRhbihQeV9jb21wbGV4IHopCitjbWF0aF9hdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI3ZDQ0ZjAyYzZhNWMzYjUgaW5wdXQ9M2IyMWZmN2Q1ZWFjNjMyYV0qLwogewogICAgIC8qIGF0YW4oeikgPSAtaSBhdGFuaChpeikgKi8KICAgICBQeV9jb21wbGV4IHMsIHI7CiAgICAgcy5yZWFsID0gLXouaW1hZzsKICAgICBzLmltYWcgPSB6LnJlYWw7Ci0gICAgcyA9IGNfYXRhbmgocyk7CisgICAgcyA9IGNtYXRoX2F0YW5oX2ltcGwobW9kdWxlLCBzKTsKICAgICByLnJlYWwgPSBzLmltYWc7CiAgICAgci5pbWFnID0gLXMucmVhbDsKICAgICByZXR1cm4gcjsKQEAgLTI5NSwxNiArMzQ2LDE4IEBACiAgICAgcmV0dXJuIGF0YW4yKHouaW1hZywgei5yZWFsKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYXRhbl9kb2MsCi0iYXRhbih4KVxuIgotIlxuIgotIlJldHVybiB0aGUgYXJjIHRhbmdlbnQgb2YgeC4iKTsKLQogCiBzdGF0aWMgUHlfY29tcGxleCBhdGFuaF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguYXRhbmggPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgaW52ZXJzZSBoeXBlcmJvbGljIHRhbmdlbnQgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfYXRhbmgoUHlfY29tcGxleCB6KQorY21hdGhfYXRhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjc5ZTBiOWZlZmM4ZGE3YyBpbnB1dD0yYjNmZGI4MmZiMzQ0ODdiXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSBheSwgaDsKQEAgLTMxMyw3ICszNjYsNyBAQAogCiAgICAgLyogUmVkdWNlIHRvIGNhc2Ugd2hlcmUgei5yZWFsID49IDAuLCB1c2luZyBhdGFuaCh6KSA9IC1hdGFuaCgteikuICovCiAgICAgaWYgKHoucmVhbCA8IDAuKSB7Ci0gICAgICAgIHJldHVybiBjX25lZyhjX2F0YW5oKGNfbmVnKHopKSk7CisgICAgICAgIHJldHVybiBfUHlfY19uZWcoY21hdGhfYXRhbmhfaW1wbChtb2R1bGUsIF9QeV9jX25lZyh6KSkpOwogICAgIH0KIAogICAgIGF5ID0gZmFicyh6LmltYWcpOwpAQCAtMzUwLDM0ICs0MDMsMzggQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfYXRhbmhfZG9jLAotImF0YW5oKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBpbnZlcnNlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB4LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5jb3MgPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgY29zaW5lIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2NvcyhQeV9jb21wbGV4IHopCitjbWF0aF9jb3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWQxY2RjMWI1ZTc2MTY2NyBpbnB1dD02MDIyZTM5Yjc3MTI3YWM3XSovCiB7CiAgICAgLyogY29zKHopID0gY29zaChpeikgKi8KICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gLXouaW1hZzsKICAgICByLmltYWcgPSB6LnJlYWw7Ci0gICAgciA9IGNfY29zaChyKTsKKyAgICByID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgcik7CiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2Nvc19kb2MsCi0iY29zKHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBjb3NpbmUgb2YgeC4iKTsKLQogCiAvKiBjb3NoKGluZmluaXR5ICsgaSp5KSBuZWVkcyB0byBiZSBkZWFsdCB3aXRoIHNwZWNpYWxseSAqLwogc3RhdGljIFB5X2NvbXBsZXggY29zaF9zcGVjaWFsX3ZhbHVlc1s3XVs3XTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguY29zaCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBoeXBlcmJvbGljIGNvc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19jb3NoKFB5X2NvbXBsZXggeikKK2NtYXRoX2Nvc2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjNiNWQzMjgyYjMwMjRkMyBpbnB1dD1kNmI2NjMzOWU5Y2MzMzJiXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSB4X21pbnVzX29uZTsKQEAgLTQyNiwxOCArNDgzLDIwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2Nvc2hfZG9jLAotImNvc2goeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGh5cGVyYm9saWMgY29zaW5lIG9mIHguIik7Ci0KIAogLyogZXhwKGluZmluaXR5ICsgaSp5KSBhbmQgZXhwKC1pbmZpbml0eSArIGkqeSkgbmVlZCBzcGVjaWFsIHRyZWF0bWVudCBmb3IKICAgIGZpbml0ZSB5ICovCiBzdGF0aWMgUHlfY29tcGxleCBleHBfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmV4cCA9IGNtYXRoLmFjb3MKKworUmV0dXJuIHRoZSBleHBvbmVudGlhbCB2YWx1ZSBlKip6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19leHAoUHlfY29tcGxleCB6KQorY21hdGhfZXhwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZmODgyNWViMmJjYWQ5YmEgaW5wdXQ9OGI5ZTZjZjhhOTIxNzRjM10qLwogewogICAgIFB5X2NvbXBsZXggcjsKICAgICBkb3VibGUgbDsKQEAgLTQ4NiwxMiArNTQ1LDYgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfZXhwX2RvYywKLSJleHAoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGV4cG9uZW50aWFsIHZhbHVlIGUqKnguIik7Ci0KLQogc3RhdGljIFB5X2NvbXBsZXggbG9nX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCiBzdGF0aWMgUHlfY29tcGxleApAQCAtNTY0LDggKzYxNywxNSBAQAogfQogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmxvZzEwID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGJhc2UtMTAgbG9nYXJpdGhtIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeV9jb21wbGV4Ci1jX2xvZzEwKFB5X2NvbXBsZXggeikKK2NtYXRoX2xvZzEwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzQyNmNhMGU3ODIzNDEgaW5wdXQ9Y2ZmNTY0NGY3M2MxNTE5Y10qLwogewogICAgIFB5X2NvbXBsZXggcjsKICAgICBpbnQgZXJybm9fc2F2ZTsKQEAgLTU3OCwzNiArNjM4LDQwIEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX2xvZzEwX2RvYywKLSJsb2cxMCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgeC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorY21hdGguc2luID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIHNpbmUgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5X2NvbXBsZXgKLWNfc2luKFB5X2NvbXBsZXggeikKK2NtYXRoX3Npbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lN2Y1ZTJiMjUzODI1YWM3IGlucHV0PTJkMzUxOTg0MmE4YjRiODVdKi8KIHsKICAgICAvKiBzaW4oeikgPSAtaSBzaW4oaXopICovCiAgICAgUHlfY29tcGxleCBzLCByOwogICAgIHMucmVhbCA9IC16LmltYWc7CiAgICAgcy5pbWFnID0gei5yZWFsOwotICAgIHMgPSBjX3Npbmgocyk7CisgICAgcyA9IGNtYXRoX3NpbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19zaW5fZG9jLAotInNpbih4KVxuIgotIlxuIgotIlJldHVybiB0aGUgc2luZSBvZiB4LiIpOwotCiAKIC8qIHNpbmgoaW5maW5pdHkgKyBpKnkpIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggc3BlY2lhbGx5ICovCiBzdGF0aWMgUHlfY29tcGxleCBzaW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5zaW5oID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY19zaW5oKFB5X2NvbXBsZXggeikKK2NtYXRoX3NpbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDcxZmZmODI5ODA0M2E5NSBpbnB1dD1kMmQzZmM4YzFkZGZkMmRkXSovCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSB4X21pbnVzX29uZTsKQEAgLTY1NSwxNiArNzE5LDE4IEBACiAgICAgcmV0dXJuIHI7CiB9CiAKLVB5RG9jX1NUUlZBUihjX3NpbmhfZG9jLAotInNpbmgoeClcbiIKLSJcbiIKLSJSZXR1cm4gdGhlIGh5cGVyYm9saWMgc2luZSBvZiB4LiIpOwotCiAKIHN0YXRpYyBQeV9jb21wbGV4IHNxcnRfc3BlY2lhbF92YWx1ZXNbN11bN107CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnNxcnQgPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgc3F1YXJlIHJvb3Qgb2Ygei4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5X2NvbXBsZXgKLWNfc3FydChQeV9jb21wbGV4IHopCitjbWF0aF9zcXJ0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2YmRhMjgzZDBjNWE3YjQgaW5wdXQ9NzA4OGIxNjZmYzlhNThjN10qLwogewogICAgIC8qCiAgICAgICAgTWV0aG9kOiB1c2Ugc3ltbWV0cmllcyB0byByZWR1Y2UgdG8gdGhlIGNhc2Ugd2hlbiB4ID0gei5yZWFsIGFuZCB5CkBAIC03MzAsMzYgKzc5Niw0MCBAQAogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY19zcXJ0X2RvYywKLSJzcXJ0KHgpXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBzcXVhcmUgcm9vdCBvZiB4LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC50YW4gPSBjbWF0aC5hY29zCisKK1JldHVybiB0aGUgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlfY29tcGxleAotY190YW4oUHlfY29tcGxleCB6KQorY21hdGhfdGFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmMzc0YmFjZjM2ZDk5YjQgaW5wdXQ9ZmMxNjdlNTI4NzY3ODg4ZV0qLwogewogICAgIC8qIHRhbih6KSA9IC1pIHRhbmgoaXopICovCiAgICAgUHlfY29tcGxleCBzLCByOwogICAgIHMucmVhbCA9IC16LmltYWc7CiAgICAgcy5pbWFnID0gei5yZWFsOwotICAgIHMgPSBjX3Rhbmgocyk7CisgICAgcyA9IGNtYXRoX3RhbmhfaW1wbChtb2R1bGUsIHMpOwogICAgIHIucmVhbCA9IHMuaW1hZzsKICAgICByLmltYWcgPSAtcy5yZWFsOwogICAgIHJldHVybiByOwogfQogCi1QeURvY19TVFJWQVIoY190YW5fZG9jLAotInRhbih4KVxuIgotIlxuIgotIlJldHVybiB0aGUgdGFuZ2VudCBvZiB4LiIpOwotCiAKIC8qIHRhbmgoaW5maW5pdHkgKyBpKnkpIG5lZWRzIHRvIGJlIGRlYWx0IHdpdGggc3BlY2lhbGx5ICovCiBzdGF0aWMgUHlfY29tcGxleCB0YW5oX3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC50YW5oID0gY21hdGguYWNvcworCitSZXR1cm4gdGhlIGh5cGVyYm9saWMgdGFuZ2VudCBvZiB6LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlfY29tcGxleAotY190YW5oKFB5X2NvbXBsZXggeikKK2NtYXRoX3RhbmhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjU3ODc3M2QyN2ExOGU5NiBpbnB1dD0yMmY2N2Y5ZGM2ZDI5Njg1XSovCiB7CiAgICAgLyogRm9ybXVsYToKIApAQCAtODIyLDI3ICs4OTIsMzUgQEAKICAgICByZXR1cm4gcjsKIH0KIAotUHlEb2NfU1RSVkFSKGNfdGFuaF9kb2MsCi0idGFuaCh4KVxuIgotIlxuIgotIlJldHVybiB0aGUgaHlwZXJib2xpYyB0YW5nZW50IG9mIHguIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmxvZworCisgICAgeDogUHlfY29tcGxleAorICAgIHlfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgLworCitUaGUgbG9nYXJpdGhtIG9mIHogdG8gdGhlIGdpdmVuIGJhc2UuCisKK0lmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9sb2coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfbG9nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB4LCBQeU9iamVjdCAqeV9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzVlMmExZTUyMjliNWE0NiBpbnB1dD1lZTBlODIzYTdjNmU2OGVhXSovCiB7Ci0gICAgUHlfY29tcGxleCB4OwogICAgIFB5X2NvbXBsZXggeTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRHxEIiwgJngsICZ5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBlcnJubyA9IDA7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIHJldHVybiAwKQogICAgIHggPSBjX2xvZyh4KTsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAyKSB7CisgICAgaWYgKHlfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgeSA9IFB5Q29tcGxleF9Bc0NDb21wbGV4KHlfb2JqKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIHkgPSBjX2xvZyh5KTsKLSAgICAgICAgeCA9IGNfcXVvdCh4LCB5KTsKKyAgICAgICAgeCA9IF9QeV9jX3F1b3QoeCwgeSk7CiAgICAgfQogICAgIFB5RlBFX0VORF9QUk9URUNUKHgpCiAgICAgaWYgKGVycm5vICE9IDApCkBAIC04NTAsMTAgKzkyOCw2IEBACiAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoeCk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9sb2dfZG9jLAotImxvZyh4WywgYmFzZV0pIC0+IHRoZSBsb2dhcml0aG0gb2YgeCB0byB0aGUgZ2l2ZW4gYmFzZS5cblwKLUlmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHguIik7Ci0KIAogLyogQW5kIG5vdyB0aGUgZ2x1ZSB0byBtYWtlIHRoZW0gYXZhaWxhYmxlIGZyb20gUHl0aG9uOiAqLwogCkBAIC04NjksNTcgKzk0MywyMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotbWF0aF8xKFB5T2JqZWN0ICphcmdzLCBQeV9jb21wbGV4ICgqZnVuYykoUHlfY29tcGxleCkpCi17Ci0gICAgUHlfY29tcGxleCB4LHIgOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiRCIsICZ4KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZXJybm8gPSAwOwotICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCByZXR1cm4gMCk7Ci0gICAgciA9ICgqZnVuYykoeCk7Ci0gICAgUHlGUEVfRU5EX1BST1RFQ1Qocik7Ci0gICAgaWYgKGVycm5vID09IEVET00pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXRoIGRvbWFpbiBlcnJvciIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZXJybm8gPT0gRVJBTkdFKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibWF0aCByYW5nZSBlcnJvciIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHIpOwotICAgIH0KLX0KIAotI2RlZmluZSBGVU5DMShzdHVibmFtZSwgZnVuYykgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqIHN0dWJuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykgeyBcCi0gICAgICAgIHJldHVybiBtYXRoXzEoYXJncywgZnVuYyk7IFwKLSAgICB9CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5waGFzZQogCi1GVU5DMShjbWF0aF9hY29zLCBjX2Fjb3MpCi1GVU5DMShjbWF0aF9hY29zaCwgY19hY29zaCkKLUZVTkMxKGNtYXRoX2FzaW4sIGNfYXNpbikKLUZVTkMxKGNtYXRoX2FzaW5oLCBjX2FzaW5oKQotRlVOQzEoY21hdGhfYXRhbiwgY19hdGFuKQotRlVOQzEoY21hdGhfYXRhbmgsIGNfYXRhbmgpCi1GVU5DMShjbWF0aF9jb3MsIGNfY29zKQotRlVOQzEoY21hdGhfY29zaCwgY19jb3NoKQotRlVOQzEoY21hdGhfZXhwLCBjX2V4cCkKLUZVTkMxKGNtYXRoX2xvZzEwLCBjX2xvZzEwKQotRlVOQzEoY21hdGhfc2luLCBjX3NpbikKLUZVTkMxKGNtYXRoX3NpbmgsIGNfc2luaCkKLUZVTkMxKGNtYXRoX3NxcnQsIGNfc3FydCkKLUZVTkMxKGNtYXRoX3RhbiwgY190YW4pCi1GVU5DMShjbWF0aF90YW5oLCBjX3RhbmgpCisgICAgejogUHlfY29tcGxleAorICAgIC8KKworUmV0dXJuIGFyZ3VtZW50LCBhbHNvIGtub3duIGFzIHRoZSBwaGFzZSBhbmdsZSwgb2YgYSBjb21wbGV4LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfcGhhc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorY21hdGhfcGhhc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9jb21wbGV4IHopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTA5ZWFmMzczY2I2MjRjMyBpbnB1dD01Y2Y3NTIyOGJhOTRiNjlkXSovCiB7Ci0gICAgUHlfY29tcGxleCB6OwogICAgIGRvdWJsZSBwaGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEOnBoYXNlIiwgJnopKQotICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGVycm5vID0gMDsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJhcmcgZnVuY3Rpb24iLCByZXR1cm4gMCkKICAgICBwaGkgPSBjX2F0YW4yKHopOwpAQCAtOTMwLDIxICs5NjksMjcgQEAKICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShwaGkpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfcGhhc2VfZG9jLAotInBoYXNlKHopIC0+IGZsb2F0XG5cblwKLVJldHVybiBhcmd1bWVudCwgYWxzbyBrbm93biBhcyB0aGUgcGhhc2UgYW5nbGUsIG9mIGEgY29tcGxleC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLnBvbGFyCisKKyAgICB6OiBQeV9jb21wbGV4CisgICAgLworCitDb252ZXJ0IGEgY29tcGxleCBmcm9tIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzIHRvIHBvbGFyIGNvb3JkaW5hdGVzLgorCityIGlzIHRoZSBkaXN0YW5jZSBmcm9tIDAgYW5kIHBoaSB0aGUgcGhhc2UgYW5nbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jbWF0aF9wb2xhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9wb2xhcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggeikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wN2Q0MWIxNmM4Nzc4NzVhIGlucHV0PTI2YzM1MzU3NGZkMWE4NjFdKi8KIHsKLSAgICBQeV9jb21wbGV4IHo7CiAgICAgZG91YmxlIHIsIHBoaTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6cG9sYXIiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOworCiAgICAgZXJybm8gPSAwOwogICAgIFB5RlBFX1NUQVJUX1BST1RFQ1QoInBvbGFyIGZ1bmN0aW9uIiwgcmV0dXJuIDApCiAgICAgcGhpID0gY19hdGFuMih6KTsgLyogc2hvdWxkIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9uICovCi0gICAgciA9IGNfYWJzKHopOyAvKiBzZXRzIGVycm5vIHRvIEVSQU5HRSBvbiBvdmVyZmxvdyAqLworICAgIHIgPSBfUHlfY19hYnMoeik7IC8qIHNldHMgZXJybm8gdG8gRVJBTkdFIG9uIG92ZXJmbG93ICovCiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocikKICAgICBpZiAoZXJybm8gIT0gMCkKICAgICAgICAgcmV0dXJuIG1hdGhfZXJyb3IoKTsKQEAgLTk1MiwxMSArOTk3LDYgQEAKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkIiwgciwgcGhpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX3BvbGFyX2RvYywKLSJwb2xhcih6KSAtPiByOiBmbG9hdCwgcGhpOiBmbG9hdFxuXG5cCi1Db252ZXJ0IGEgY29tcGxleCBmcm9tIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzIHRvIHBvbGFyIGNvb3JkaW5hdGVzLiByIGlzXG5cCi10aGUgZGlzdGFuY2UgZnJvbSAwIGFuZCBwaGkgdGhlIHBoYXNlIGFuZ2xlLiIpOwotCiAvKgogICByZWN0KCkgaXNuJ3QgY292ZXJlZCBieSB0aGUgQzk5IHN0YW5kYXJkLCBidXQgaXQncyBub3QgdG9vIGhhcmQgdG8KICAgZmlndXJlIG91dCAnc3Bpcml0IG9mIEM5OScgcnVsZXMgZm9yIHNwZWNpYWwgdmFsdWUgaGFuZGluZzoKQEAgLTk3MCwxMyArMTAxMCwyMSBAQAogCiBzdGF0aWMgUHlfY29tcGxleCByZWN0X3NwZWNpYWxfdmFsdWVzWzddWzddOwogCisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5yZWN0CisKKyAgICByOiBkb3VibGUKKyAgICBwaGk6IGRvdWJsZQorICAgIC8KKworQ29udmVydCBmcm9tIHBvbGFyIGNvb3JkaW5hdGVzIHRvIHJlY3Rhbmd1bGFyIGNvb3JkaW5hdGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfcmVjdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitjbWF0aF9yZWN0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZG91YmxlIHIsIGRvdWJsZSBwaGkpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk3YTg3NDliZDYzZTlkNSBpbnB1dD0yNGM1NjQ2ZDE0N2VmZDY5XSovCiB7CiAgICAgUHlfY29tcGxleCB6OwotICAgIGRvdWJsZSByLCBwaGk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkZDpyZWN0IiwgJnIsICZwaGkpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBlcnJubyA9IDA7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgicmVjdCBmdW5jdGlvbiIsIHJldHVybiAwKQogCkBAIC0xMDI3LDc5ICsxMDc1LDE0MyBAQAogICAgICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleCh6KTsKIH0KIAotUHlEb2NfU1RSVkFSKGNtYXRoX3JlY3RfZG9jLAotInJlY3QociwgcGhpKSAtPiB6OiBjb21wbGV4XG5cblwKLUNvbnZlcnQgZnJvbSBwb2xhciBjb29yZGluYXRlcyB0byByZWN0YW5ndWxhciBjb29yZGluYXRlcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2NtYXRoLmlzZmluaXRlID0gY21hdGgucG9sYXIKKworUmV0dXJuIFRydWUgaWYgYm90aCB0aGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzIG9mIHogYXJlIGZpbml0ZSwgZWxzZSBGYWxzZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzZmluaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX2lzZmluaXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmNjY4MmZhOTNkZTQ1ZDYgaW5wdXQ9ODQ4ZTdlZTcwMTg5NTgxNV0qLwogewotICAgIFB5X2NvbXBsZXggejsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6aXNmaW5pdGUiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfSVNfRklOSVRFKHoucmVhbCkgJiYgUHlfSVNfRklOSVRFKHouaW1hZykpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfaXNmaW5pdGVfZG9jLAotImlzZmluaXRlKHopIC0+IGJvb2xcblwKLVJldHVybiBUcnVlIGlmIGJvdGggdGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiB6IGFyZSBmaW5pdGUsIGVsc2UgRmFsc2UuIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5pc25hbiA9IGNtYXRoLnBvbGFyCisKK0NoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IG5vdCBhIG51bWJlciAoTmFOKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzbmFuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX2lzbmFuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI4NWZlOGMyMDQ3NzE4ZWUgaW5wdXQ9NzE3OTlmNWQyODRjOWJhZl0qLwogewotICAgIFB5X2NvbXBsZXggejsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6aXNuYW4iLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfSVNfTkFOKHoucmVhbCkgfHwgUHlfSVNfTkFOKHouaW1hZykpOwogfQogCi1QeURvY19TVFJWQVIoY21hdGhfaXNuYW5fZG9jLAotImlzbmFuKHopIC0+IGJvb2xcblwKLUNoZWNrcyBpZiB0aGUgcmVhbCBvciBpbWFnaW5hcnkgcGFydCBvZiB6IG5vdCBhIG51bWJlciAoTmFOKSIpOworLypbY2xpbmljIGlucHV0XQorY21hdGguaXNpbmYgPSBjbWF0aC5wb2xhcgorCitDaGVja3MgaWYgdGhlIHJlYWwgb3IgaW1hZ2luYXJ5IHBhcnQgb2YgeiBpcyBpbmZpbml0ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzaW5mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2NtYXRoX2lzaW5mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfY29tcGxleCB6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjYTljNjEwOWU0NjhiZjQgaW5wdXQ9MzYzZGYxNTVjNzE4MTMyOV0qLwogewotICAgIFB5X2NvbXBsZXggejsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkQ6aXNpbmYiLCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfSVNfSU5GSU5JVFkoei5yZWFsKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfSVNfSU5GSU5JVFkoei5pbWFnKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihjbWF0aF9pc2luZl9kb2MsCi0iaXNpbmYoeikgLT4gYm9vbFxuXAotQ2hlY2tzIGlmIHRoZSByZWFsIG9yIGltYWdpbmFyeSBwYXJ0IG9mIHogaXMgaW5maW5pdGUuIik7CisvKltjbGluaWMgaW5wdXRdCitjbWF0aC5pc2Nsb3NlIC0+IGJvb2wKIAorICAgIGE6IFB5X2NvbXBsZXgKKyAgICBiOiBQeV9jb21wbGV4CisgICAgKgorICAgIHJlbF90b2w6IGRvdWJsZSA9IDFlLTA5CisgICAgICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCAiY2xvc2UiLCByZWxhdGl2ZSB0byB0aGUKKyAgICAgICAgbWFnbml0dWRlIG9mIHRoZSBpbnB1dCB2YWx1ZXMKKyAgICBhYnNfdG9sOiBkb3VibGUgPSAwLjAKKyAgICAgICAgbWF4aW11bSBkaWZmZXJlbmNlIGZvciBiZWluZyBjb25zaWRlcmVkICJjbG9zZSIsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzCisKK0RldGVybWluZSB3aGV0aGVyIHR3byBjb21wbGV4IG51bWJlcnMgYXJlIGNsb3NlIGluIHZhbHVlLgorCitSZXR1cm4gVHJ1ZSBpZiBhIGlzIGNsb3NlIGluIHZhbHVlIHRvIGIsIGFuZCBGYWxzZSBvdGhlcndpc2UuCisKK0ZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbSBtdXN0IGJlCitzbWFsbGVyIHRoYW4gYXQgbGVhc3Qgb25lIG9mIHRoZSB0b2xlcmFuY2VzLgorCistaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gVGhhdCBpcywgTmFOIGlzCitub3QgY2xvc2UgdG8gYW55dGhpbmcsIGV2ZW4gaXRzZWxmLiBpbmYgYW5kIC1pbmYgYXJlIG9ubHkgY2xvc2UgdG8gdGhlbXNlbHZlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorY21hdGhfaXNjbG9zZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiLAorICAgICAgICAgICAgICAgICAgIGRvdWJsZSByZWxfdG9sLCBkb3VibGUgYWJzX3RvbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTBjNTM1ZmI1NGUyMzEwIGlucHV0PWRmOTYzNmQ3ZGUxZDRhYzNdKi8KK3sKKyAgICBkb3VibGUgZGlmZjsKKworICAgIC8qIHNhbml0eSBjaGVjayBvbiB0aGUgaW5wdXRzICovCisgICAgaWYgKHJlbF90b2wgPCAwLjAgfHwgYWJzX3RvbCA8IDAuMCApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidG9sZXJhbmNlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCAoYS5yZWFsID09IGIucmVhbCkgJiYgKGEuaW1hZyA9PSBiLmltYWcpICkgeworICAgICAgICAvKiBzaG9ydCBjaXJjdWl0IGV4YWN0IGVxdWFsaXR5IC0tIG5lZWRlZCB0byBjYXRjaCB0d28gaW5maW5pdGllcyBvZgorICAgICAgICAgICB0aGUgc2FtZSBzaWduLiBBbmQgcGVyaGFwcyBzcGVlZHMgdGhpbmdzIHVwIGEgYml0IHNvbWV0aW1lcy4KKyAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogVGhpcyBjYXRjaGVzIHRoZSBjYXNlIG9mIHR3byBpbmZpbml0aWVzIG9mIG9wcG9zaXRlIHNpZ24sIG9yCisgICAgICAgb25lIGluZmluaXR5IGFuZCBvbmUgZmluaXRlIG51bWJlci4gVHdvIGluZmluaXRpZXMgb2Ygb3Bwb3NpdGUKKyAgICAgICBzaWduIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZmluaXRlIHJlbGF0aXZlIHRvbGVyYW5jZS4KKyAgICAgICBUd28gaW5maW5pdGllcyBvZiB0aGUgc2FtZSBzaWduIGFyZSBjYXVnaHQgYnkgdGhlIGVxdWFsaXR5IGNoZWNrCisgICAgICAgYWJvdmUuCisgICAgKi8KKworICAgIGlmIChQeV9JU19JTkZJTklUWShhLnJlYWwpIHx8IFB5X0lTX0lORklOSVRZKGEuaW1hZykgfHwKKyAgICAgICAgUHlfSVNfSU5GSU5JVFkoYi5yZWFsKSB8fCBQeV9JU19JTkZJTklUWShiLmltYWcpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIG5vdyBkbyB0aGUgcmVndWxhciBjb21wdXRhdGlvbgorICAgICAgIHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlICJ3ZWFrIiB0ZXN0IGZyb20gdGhlIEJvb3N0IGxpYnJhcnkKKyAgICAqLworCisgICAgZGlmZiA9IF9QeV9jX2FicyhfUHlfY19kaWZmKGEsIGIpKTsKKworICAgIHJldHVybiAoKChkaWZmIDw9IHJlbF90b2wgKiBfUHlfY19hYnMoYikpIHx8CisgICAgICAgICAgICAgKGRpZmYgPD0gcmVsX3RvbCAqIF9QeV9jX2FicyhhKSkpIHx8CisgICAgICAgICAgICAoZGlmZiA8PSBhYnNfdG9sKSk7Cit9CiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIlRoaXMgbW9kdWxlIGlzIGFsd2F5cyBhdmFpbGFibGUuIEl0IHByb3ZpZGVzIGFjY2VzcyB0byBtYXRoZW1hdGljYWxcbiIKICJmdW5jdGlvbnMgZm9yIGNvbXBsZXggbnVtYmVycy4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGNtYXRoX21ldGhvZHNbXSA9IHsKLSAgICB7ImFjb3MiLCAgIGNtYXRoX2Fjb3MsICBNRVRIX1ZBUkFSR1MsIGNfYWNvc19kb2N9LAotICAgIHsiYWNvc2giLCAgY21hdGhfYWNvc2gsIE1FVEhfVkFSQVJHUywgY19hY29zaF9kb2N9LAotICAgIHsiYXNpbiIsICAgY21hdGhfYXNpbiwgIE1FVEhfVkFSQVJHUywgY19hc2luX2RvY30sCi0gICAgeyJhc2luaCIsICBjbWF0aF9hc2luaCwgTUVUSF9WQVJBUkdTLCBjX2FzaW5oX2RvY30sCi0gICAgeyJhdGFuIiwgICBjbWF0aF9hdGFuLCAgTUVUSF9WQVJBUkdTLCBjX2F0YW5fZG9jfSwKLSAgICB7ImF0YW5oIiwgIGNtYXRoX2F0YW5oLCBNRVRIX1ZBUkFSR1MsIGNfYXRhbmhfZG9jfSwKLSAgICB7ImNvcyIsICAgIGNtYXRoX2NvcywgICBNRVRIX1ZBUkFSR1MsIGNfY29zX2RvY30sCi0gICAgeyJjb3NoIiwgICBjbWF0aF9jb3NoLCAgTUVUSF9WQVJBUkdTLCBjX2Nvc2hfZG9jfSwKLSAgICB7ImV4cCIsICAgIGNtYXRoX2V4cCwgICBNRVRIX1ZBUkFSR1MsIGNfZXhwX2RvY30sCi0gICAgeyJpc2Zpbml0ZSIsIGNtYXRoX2lzZmluaXRlLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX2lzZmluaXRlX2RvY30sCi0gICAgeyJpc2luZiIsICBjbWF0aF9pc2luZiwgTUVUSF9WQVJBUkdTLCBjbWF0aF9pc2luZl9kb2N9LAotICAgIHsiaXNuYW4iLCAgY21hdGhfaXNuYW4sIE1FVEhfVkFSQVJHUywgY21hdGhfaXNuYW5fZG9jfSwKLSAgICB7ImxvZyIsICAgIGNtYXRoX2xvZywgICBNRVRIX1ZBUkFSR1MsIGNtYXRoX2xvZ19kb2N9LAotICAgIHsibG9nMTAiLCAgY21hdGhfbG9nMTAsIE1FVEhfVkFSQVJHUywgY19sb2cxMF9kb2N9LAotICAgIHsicGhhc2UiLCAgY21hdGhfcGhhc2UsIE1FVEhfVkFSQVJHUywgY21hdGhfcGhhc2VfZG9jfSwKLSAgICB7InBvbGFyIiwgIGNtYXRoX3BvbGFyLCBNRVRIX1ZBUkFSR1MsIGNtYXRoX3BvbGFyX2RvY30sCi0gICAgeyJyZWN0IiwgICBjbWF0aF9yZWN0LCAgTUVUSF9WQVJBUkdTLCBjbWF0aF9yZWN0X2RvY30sCi0gICAgeyJzaW4iLCAgICBjbWF0aF9zaW4sICAgTUVUSF9WQVJBUkdTLCBjX3Npbl9kb2N9LAotICAgIHsic2luaCIsICAgY21hdGhfc2luaCwgIE1FVEhfVkFSQVJHUywgY19zaW5oX2RvY30sCi0gICAgeyJzcXJ0IiwgICBjbWF0aF9zcXJ0LCAgTUVUSF9WQVJBUkdTLCBjX3NxcnRfZG9jfSwKLSAgICB7InRhbiIsICAgIGNtYXRoX3RhbiwgICBNRVRIX1ZBUkFSR1MsIGNfdGFuX2RvY30sCi0gICAgeyJ0YW5oIiwgICBjbWF0aF90YW5oLCAgTUVUSF9WQVJBUkdTLCBjX3RhbmhfZG9jfSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworICAgIENNQVRIX0FDT1NfTUVUSE9EREVGCisgICAgQ01BVEhfQUNPU0hfTUVUSE9EREVGCisgICAgQ01BVEhfQVNJTl9NRVRIT0RERUYKKyAgICBDTUFUSF9BU0lOSF9NRVRIT0RERUYKKyAgICBDTUFUSF9BVEFOX01FVEhPRERFRgorICAgIENNQVRIX0FUQU5IX01FVEhPRERFRgorICAgIENNQVRIX0NPU19NRVRIT0RERUYKKyAgICBDTUFUSF9DT1NIX01FVEhPRERFRgorICAgIENNQVRIX0VYUF9NRVRIT0RERUYKKyAgICBDTUFUSF9JU0NMT1NFX01FVEhPRERFRgorICAgIENNQVRIX0lTRklOSVRFX01FVEhPRERFRgorICAgIENNQVRIX0lTSU5GX01FVEhPRERFRgorICAgIENNQVRIX0lTTkFOX01FVEhPRERFRgorICAgIENNQVRIX0xPR19NRVRIT0RERUYKKyAgICBDTUFUSF9MT0cxMF9NRVRIT0RERUYKKyAgICBDTUFUSF9QSEFTRV9NRVRIT0RERUYKKyAgICBDTUFUSF9QT0xBUl9NRVRIT0RERUYKKyAgICBDTUFUSF9SRUNUX01FVEhPRERFRgorICAgIENNQVRIX1NJTl9NRVRIT0RERUYKKyAgICBDTUFUSF9TSU5IX01FVEhPRERFRgorICAgIENNQVRIX1NRUlRfTUVUSE9EREVGCisgICAgQ01BVEhfVEFOX01FVEhPRERFRgorICAgIENNQVRIX1RBTkhfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAvKiBzZW50aW5lbCAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NvbmZpZy5jLmluIGIvTW9kdWxlcy9jb25maWcuYy5pbgppbmRleCA3YTI0ZTJkLi43Yjc3MTk5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NvbmZpZy5jLmluCisrKyBiL01vZHVsZXMvY29uZmlnLmMuaW4KQEAgLTEzLDcgKzEzLDcgQEAKIC8qICEhISAhISEgISEhIFRoaXMgZmlsZSBpcyBlZGl0ZWQgYnkgdGhlIG1ha2VzZXR1cCBzY3JpcHQgISEhICEhISAhISEgKi8KIAogLyogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0YWJsZSBvZiBidWlsdC1pbiBtb2R1bGVzLgotICAgU2VlIGluaXRfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLworICAgU2VlIGNyZWF0ZV9idWlsdGluKCkgaW4gaW1wb3J0LmMuICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKaW5kZXggMTQ5M2Y4ZC4uNTMwZGRjNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYworKysgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCkBAIC01LDcgKzUsMTMgQEAKICNpbmNsdWRlIDxmcmFtZW9iamVjdC5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKLSNpbmNsdWRlIDxwdGhyZWFkLmg+CisjICBpbmNsdWRlIDxwdGhyZWFkLmg+CisjZW5kaWYKKyNpZmRlZiBNU19XSU5ET1dTCisjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisjICBpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNlbmRpZgogCiAvKiBBbGxvY2F0ZSBhdCBtYXhpbXVtIDEwMCBNQiBvZiB0aGUgc3RhY2sgdG8gcmFpc2UgdGhlIHN0YWNrIG92ZXJmbG93ICovCkBAIC0yMiw5ICsyOCw3IEBACiAjICBkZWZpbmUgRkFVTFRIQU5ETEVSX1VTRVIKICNlbmRpZgogCi0vKiBjYXN0IHNpemVfdCB0byBpbnQgYmVjYXVzZSB3cml0ZSgpIHRha2VzIGFuIGludCBvbiBXaW5kb3dzCi0gICAoYW55d2F5LCB0aGUgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiAzMCBjaGFyYWN0ZXJzKSAqLwotI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgc3RybGVuKHN0cikpCiAKIF9QeV9JREVOVElGSUVSKGVuYWJsZSk7CiBfUHlfSURFTlRJRklFUihmaWxlbm8pOwpAQCAtMTI3LDMyICsxMzEsNDYgQEAKICAgIGNhbGwgaXRzIGZsdXNoKCkgbWV0aG9kLgogCiAgICBJZiBmaWxlIGlzIE5VTEwgb3IgUHlfTm9uZSwgdXNlIHN5cy5zdGRlcnIgYXMgdGhlIG5ldyBmaWxlLgorICAgSWYgZmlsZSBpcyBhbiBpbnRlZ2VyLCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgZmlsZSBkZXNjcmlwdG9yLgogCi0gICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG5ldyBmaWxlIGFuZCB3cml0ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGludG8gKnBfZmQuCi0gICBPbiBlcnJvciwgcmV0dXJuIE5VTEwuICovCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBhbmQgd3JpdGUgdGhlIG5ldyBmaWxlIGludG8gKmZpbGVfcHRyLgorICAgT24gZXJyb3IsIHJldHVybiAtMS4gKi8KIAotc3RhdGljIFB5T2JqZWN0KgotZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oUHlPYmplY3QgKmZpbGUsIGludCAqcF9mZCkKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKFB5T2JqZWN0ICoqZmlsZV9wdHIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBsb25nIGZkX2xvbmc7CiAgICAgaW50IGZkOworICAgIFB5T2JqZWN0ICpmaWxlID0gKmZpbGVfcHRyOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCB8fCBmaWxlID09IFB5X05vbmUpIHsKICAgICAgICAgZmlsZSA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwogICAgICAgICBpZiAoZmlsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAidW5hYmxlIHRvIGdldCBzeXMuc3RkZXJyIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoZmlsZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAic3lzLnN0ZGVyciBpcyBOb25lIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soZmlsZSkpIHsKKyAgICAgICAgZmQgPSBfUHlMb25nX0FzSW50KGZpbGUpOworICAgICAgICBpZiAoZmQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdGVyIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgKmZpbGVfcHRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGZkOworICAgIH0KIAogICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmlsZW5vLCAiIik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgZmQgPSAtMTsKICAgICBpZiAoUHlMb25nX0NoZWNrKHJlc3VsdCkpIHsKQEAgLTE2NSw3ICsxODMsNyBAQAogICAgIGlmIChmZCA9PSAtMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuZmlsZW5vKCkgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOwpAQCAtMTc1LDggKzE5Myw4IEBACiAgICAgICAgIC8qIGlnbm9yZSBmbHVzaCgpIGVycm9yICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQotICAgICpwX2ZkID0gZmQ7Ci0gICAgcmV0dXJuIGZpbGU7CisgICAgKmZpbGVfcHRyID0gZmlsZTsKKyAgICByZXR1cm4gZmQ7CiB9CiAKIC8qIEdldCB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkOiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBpZiB0aGUgY3VycmVudApAQCAtMTkzLDYgKzIxMSw0MiBAQAogICAgIHJldHVybiB0c3RhdGU7CiB9CiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2soaW50IGZkLCBpbnQgYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCit7CisgICAgc3RhdGljIHZvbGF0aWxlIGludCByZWVudHJhbnQgPSAwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmIChyZWVudHJhbnQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlZW50cmFudCA9IDE7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgYXJlIHN5bmNocm9ub3VzIHNpZ25hbHMgYW5kCisgICAgICAgYXJlIHRodXMgZGVsaXZlcmVkIHRvIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlIGZhdWx0LiBHZXQgdGhlIFB5dGhvbgorICAgICAgIHRocmVhZCBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCisKKyAgICAgICBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUKKyAgICAgICBmYXVsdCBpZiB0aGUgdGhyZWFkIHJlbGVhc2VkIHRoZSBHSUwsIGFuZCBzbyB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZQorICAgICAgIHVzZWQuIFJlYWQgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGluc3RlYWQ6IGNhbGwKKyAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLworICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisjZWxzZQorICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisjZW5kaWYKKworICAgIGlmIChhbGxfdGhyZWFkcykKKyAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBpbnRlcnAsIHRzdGF0ZSk7CisgICAgZWxzZSB7CisgICAgICAgIGlmICh0c3RhdGUgIT0gTlVMTCkKKyAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOworICAgIH0KKworICAgIHJlZW50cmFudCA9IDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weShQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKQEAgLTIwOSw4ICsyNjMsOCBAQAogICAgICAgICAmZmlsZSwgJmFsbF90aHJlYWRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOwpAQCAtMjI3LDYgKzI4MSwxMCBAQAogICAgIGVsc2UgewogICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKICAgICB9CisKKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTI1MCw3ICszMDgsNiBAQAogICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKICAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpCkBAIC0yNzgsMjYgKzMzNSw4IEBACiAgICAgUFVUUyhmZCwgaGFuZGxlci0+bmFtZSk7CiAgICAgUFVUUyhmZCwgIlxuXG4iKTsKIAotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscyBhbmQKLSAgICAgICBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUgUHl0aG9uCi0gICAgICAgdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KLQotICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZQotICAgICAgIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCi0gICAgICAgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAotICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSNlbmRpZgotCi0gICAgaWYgKGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzKQotICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGZhdGFsX2Vycm9yLmludGVycCwgdHN0YXRlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQotICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7Ci0gICAgfQorICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayhmZCwgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdGFsX2Vycm9yLmludGVycCk7CiAKICAgICBlcnJubyA9IHNhdmVfZXJybm87CiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMzMzLDggKzM3Miw4IEBACiAgICAgICAgICJ8T2k6ZW5hYmxlIiwga3dsaXN0LCAmZmlsZSwgJmFsbF90aHJlYWRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOwpAQCAtMzQyLDcgKzM4MSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfWERFQ1JFRihmYXRhbF9lcnJvci5maWxlKTsKLSAgICBQeV9JTkNSRUYoZmlsZSk7CisgICAgUHlfWElOQ1JFRihmaWxlKTsKICAgICBmYXRhbF9lcnJvci5maWxlID0gZmlsZTsKICAgICBmYXRhbF9lcnJvci5mZCA9IGZkOwogICAgIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CkBAIC00NTIsOSArNDkxLDkgQEAKICAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CiAKICAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KLSAgICAgICAgY3VycmVudCA9IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICAgICAgY3VycmVudCA9IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CiAKLSAgICAgICAgd3JpdGUodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKKyAgICAgICAgX1B5X3dyaXRlX25vcmFpc2UodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCAoaW50KXRocmVhZC5oZWFkZXJfbGVuKTsKIAogICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBjdXJyZW50KTsKICAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOwpAQCAtNTQ3LDggKzU4Niw4IEBACiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOwotICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgZmQgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubygmZmlsZSk7CisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBmb3JtYXQgdGhlIHRpbWVvdXQgKi8KQEAgLTU2MSw3ICs2MDAsNyBAQAogICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOwogCiAgICAgUHlfWERFQ1JFRih0aHJlYWQuZmlsZSk7Ci0gICAgUHlfSU5DUkVGKGZpbGUpOworICAgIFB5X1hJTkNSRUYoZmlsZSk7CiAgICAgdGhyZWFkLmZpbGUgPSBmaWxlOwogICAgIHRocmVhZC5mZCA9IGZkOwogICAgIHRocmVhZC50aW1lb3V0X3VzID0gdGltZW91dF91czsKQEAgLTY0MCwyOCArNjc5LDE0IEBACiBmYXVsdGhhbmRsZXJfdXNlcihpbnQgc2lnbnVtKQogewogICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CiAKICAgICB1c2VyID0gJnVzZXJfc2lnbmFsc1tzaWdudW1dOwogICAgIGlmICghdXNlci0+ZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkIGlmCi0gICAgICAgdGhlIHRocmVhZCBkb2Vzbid0IGhvbGQgdGhlIEdJTC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykKLSAgICAgICBpbnN0ZWFkOiBjYWxsIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSNlbmRpZgorICAgIGZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFjayh1c2VyLT5mZCwgdXNlci0+YWxsX3RocmVhZHMsIHVzZXItPmludGVycCk7CiAKLSAgICBpZiAodXNlci0+YWxsX3RocmVhZHMpCi0gICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh1c2VyLT5mZCwgdXNlci0+aW50ZXJwLCB0c3RhdGUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCi0gICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayh1c2VyLT5mZCwgdHN0YXRlKTsKLSAgICB9CiAjaWZkZWYgSEFWRV9TSUdBQ1RJT04KICAgICBpZiAodXNlci0+Y2hhaW4pIHsKICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJnVzZXItPnByZXZpb3VzLCBOVUxMKTsKQEAgLTczMSw4ICs3NTYsOCBAQAogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgIGZkID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oJmZpbGUpOworICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKSB7CkBAIC03NTQsNyArNzc5LDcgQEAKICAgICB9CiAKICAgICBQeV9YREVDUkVGKHVzZXItPmZpbGUpOwotICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICBQeV9YSU5DUkVGKGZpbGUpOwogICAgIHVzZXItPmZpbGUgPSBmaWxlOwogICAgIHVzZXItPmZkID0gZmQ7CiAgICAgdXNlci0+YWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKQEAgLTgwNCwxMiArODI5LDQxIEBACiAjZW5kaWYgICAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLwogCiAKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KHZvaWQpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFVJTlQgbW9kZTsKKworICAgIC8qIENvbmZpZ3VyZSBXaW5kb3dzIHRvIG5vdCBkaXNwbGF5IHRoZSBXaW5kb3dzIEVycm9yIFJlcG9ydGluZyBkaWFsb2cgKi8KKyAgICBtb2RlID0gU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCk7CisgICAgU2V0RXJyb3JNb2RlKG1vZGUgfCBTRU1fTk9HUEZBVUxURVJST1JCT1gpOworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisgICAgc3RydWN0IHJsaW1pdCBybDsKKworICAgIC8qIERpc2FibGUgY3JlYXRpb24gb2YgY29yZSBkdW1wICovCisgICAgaWYgKGdldHJsaW1pdChSTElNSVRfQ09SRSwgJnJsKSAhPSAwKSB7CisgICAgICAgIHJsLnJsaW1fY3VyID0gMDsKKyAgICAgICAgc2V0cmxpbWl0KFJMSU1JVF9DT1JFLCAmcmwpOworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgX01TQ19WRVIKKyAgICAvKiBWaXN1YWwgU3R1ZGlvOiBjb25maWd1cmUgYWJvcnQoKSB0byBub3QgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIG5vcgorICAgICAgIG9wZW4gYSBwb3B1cCBhc2tpbmcgdG8gcmVwb3J0IHRoZSBmYXVsdC4gKi8KKyAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKDAsIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGZhdWx0aGFuZGxlcl9yZWFkX251bGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHZvbGF0aWxlIGludCAqeDsKICAgICB2b2xhdGlsZSBpbnQgeTsKIAorICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKICAgICB4ID0gTlVMTDsKICAgICB5ID0gKng7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh5KTsKQEAgLTgxOSw2ICs4NzMsNyBAQAogc3RhdGljIHZvaWQKIGZhdWx0aGFuZGxlcl9yYWlzZV9zaWdzZWd2KHZvaWQpCiB7CisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICAvKiBGb3IgU0lHU0VHViwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHNpZ25hbAogICAgICAgIGhhbmRsZXIgYW5kIHRoZW4gZ2l2ZXMgYmFjayB0aGUgZXhlY3V0aW9uIGZsb3cgdG8gdGhlIHByb2dyYW0gKHdpdGhvdXQKQEAgLTg2MSw2ICs5MTYsNyBAQAogICAgIC8qIERvIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVybzogcmFpc2UgYSBTSUdGUEUgb24gSW50ZWwgQ1BVLCBidXQgbm90IG9uCiAgICAgICAgUG93ZXJQQy4gVXNlIHZvbGF0aWxlIHRvIGRpc2FibGUgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbnMuICovCiAgICAgdm9sYXRpbGUgaW50IHggPSAxLCB5ID0gMCwgejsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgeiA9IHggLyB5OwogICAgIC8qIElmIHRoZSBkaXZpc2lvbiBieSB6ZXJvIGRpZG4ndCByYWlzZSBhIFNJR0ZQRSAoZS5nLiBvbiBQb3dlclBDKSwKICAgICAgICByYWlzZSBpdCBtYW51YWxseS4gKi8KQEAgLTg3MywzOSArOTI5LDE4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3NpZ2FicnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIF9NU0NfVkVSCi0gICAgLyogVmlzdWFsIFN0dWRpbzogY29uZmlndXJlIGFib3J0KCkgdG8gbm90IGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSBub3IKLSAgICAgICBvcGVuIGEgcG9wdXAgYXNraW5nIHRvIHJlcG9ydCB0aGUgZmF1bHQuICovCi0gICAgX3NldF9hYm9ydF9iZWhhdmlvcigwLCBfV1JJVEVfQUJPUlRfTVNHIHwgX0NBTExfUkVQT1JURkFVTFQpOwotI2VuZGlmCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGFib3J0KCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLSNpZmRlZiBTSUdCVVMKLXN0YXRpYyBQeU9iamVjdCAqCi1mYXVsdGhhbmRsZXJfc2lnYnVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByYWlzZShTSUdCVVMpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotI2VuZGlmCi0KLSNpZmRlZiBTSUdJTEwKLXN0YXRpYyBQeU9iamVjdCAqCi1mYXVsdGhhbmRsZXJfc2lnaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByYWlzZShTSUdJTEwpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfcHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGNoYXIgKm1lc3NhZ2U7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5OmZhdGFsX2Vycm9yIiwgJm1lc3NhZ2UpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgUHlfRmF0YWxFcnJvcihtZXNzYWdlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTkzOSw2ICs5NzQsNyBAQAogICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmRlcHRoOwogICAgIFB5X3VpbnRwdHJfdCBzdG9wOwogCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGRlcHRoID0gMDsKICAgICBzdG9wID0gc3RhY2tfb3ZlcmZsb3coc3AgLSBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3AgKyBTVEFDS19PVkVSRkxPV19NQVhfU0laRSwKQEAgLTEwMjgsMTQgKzEwNjQsNiBAQAogICAgICBQeURvY19TVFIoIl9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwiKX0sCiAgICAgeyJfc2lnZnBlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdmcGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdmcGUoKTogcmFpc2UgYSBTSUdGUEUgc2lnbmFsIil9LAotI2lmZGVmIFNJR0JVUwotICAgIHsiX3NpZ2J1cyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnYnVzLCBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfc2lnYnVzKCk6IHJhaXNlIGEgU0lHQlVTIHNpZ25hbCIpfSwKLSNlbmRpZgotI2lmZGVmIFNJR0lMTAotICAgIHsiX3NpZ2lsbCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnaWxsLCBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfc2lnaWxsKCk6IHJhaXNlIGEgU0lHSUxMIHNpZ25hbCIpfSwKLSNlbmRpZgogICAgIHsiX2ZhdGFsX2Vycm9yIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiX2ZhdGFsX2Vycm9yKG1lc3NhZ2UpOiBjYWxsIFB5X0ZhdGFsRXJyb3IobWVzc2FnZSkiKX0sCiAjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mY250bG1vZHVsZS5jIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCmluZGV4IDkzMjU5NDAuLjk3ZmYwN2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmNudGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKQEAgLTE1LDYgKzE1LDExIEBACiAjaW5jbHVkZSA8c3Ryb3B0cy5oPgogI2VuZGlmCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBmY250bAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MTI0YjU4Mzg3YzE1ODE3OV0qLworCiBzdGF0aWMgaW50CiBjb252X2Rlc2NyaXB0b3IoUHlPYmplY3QgKm9iamVjdCwgaW50ICp0YXJnZXQpCiB7CkBAIC0yNiw0OCArMzEsNzIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorLyogTXVzdCBjb21lIGFmdGVyIGNvbnZfZGVzY3JpcHRvciBkZWZpbml0aW9uLiAqLworI2luY2x1ZGUgImNsaW5pYy9mY250bG1vZHVsZS5jLmgiCiAKLS8qIGZjbnRsKGZkLCBvcCwgW2FyZ10pICovCisvKltjbGluaWMgaW5wdXRdCitmY250bC5mY250bAorCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgY21kIGFzIGNvZGU6IGludAorICAgIGFyZzogb2JqZWN0KGNfZGVmYXVsdD0nTlVMTCcpID0gMAorICAgIC8KKworUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGBjbWRgIG9uIGZpbGUgZGVzY3JpcHRvciBmZC4KKworVGhlIHZhbHVlcyB1c2VkIGZvciBgY21kYCBhcmUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQsIGFuZCBhcmUgYXZhaWxhYmxlCithcyBjb25zdGFudHMgaW4gdGhlIGZjbnRsIG1vZHVsZSwgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbgordGhlIHJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLiAgVGhlIGFyZ3VtZW50IGFyZyBpcyBvcHRpb25hbCwgYW5kCitkZWZhdWx0cyB0byAwOyBpdCBtYXkgYmUgYW4gaW50IG9yIGEgc3RyaW5nLiAgSWYgYXJnIGlzIGdpdmVuIGFzIGEgc3RyaW5nLAordGhlIHJldHVybiB2YWx1ZSBvZiBmY250bCBpcyBhIHN0cmluZyBvZiB0aGF0IGxlbmd0aCwgY29udGFpbmluZyB0aGUKK3Jlc3VsdGluZyB2YWx1ZSBwdXQgaW4gdGhlIGFyZyBidWZmZXIgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGUgbGVuZ3RoCitvZiB0aGUgYXJnIHN0cmluZyBpcyBub3QgYWxsb3dlZCB0byBleGNlZWQgMTAyNCBieXRlcy4gIElmIHRoZSBhcmcgZ2l2ZW4KK2lzIGFuIGludGVnZXIgb3IgaWYgbm9uZSBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgdmFsdWUgaXMgYW4gaW50ZWdlcgorY29ycmVzcG9uZGluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmY250bCBjYWxsIGluIHRoZSBDIGNvZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1mY250bF9mY250bChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitmY250bF9mY250bF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvZGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWZjNWJmYTc0YTAzZWYwZCBpbnB1dD04Y2VmYmU1OWIyOWVmYmUyXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBjb2RlOwotICAgIGludCBhcmc7CisgICAgdW5zaWduZWQgaW50IGludF9hcmcgPSAwOwogICAgIGludCByZXQ7CiAgICAgY2hhciAqc3RyOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGNoYXIgYnVmWzEwMjRdOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maXMjOmZjbnRsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZzdHIsICZsZW4pKSB7Ci0gICAgICAgIGlmIChsZW4gPiBzaXplb2YgYnVmKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmNudGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGFyZyAhPSBOVUxMKSB7CisgICAgICAgIGludCBwYXJzZV9yZXN1bHQ7CisKKyAgICAgICAgaWYgKFB5QXJnX1BhcnNlKGFyZywgInMjIiwgJnN0ciwgJmxlbikpIHsKKyAgICAgICAgICAgIGlmICgoc2l6ZV90KWxlbiA+IHNpemVvZiBidWYpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZjbnRsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBidWYpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByZXQgPSBmY250bChmZCwgY29kZSwgYnVmKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHBhcnNlX3Jlc3VsdCA9IFB5QXJnX1BhcnNlKGFyZywKKyAgICAgICAgICAgICJJO2ZjbnRsIHJlcXVpcmVzIGEgZmlsZSBvciBmaWxlIGRlc2NyaXB0b3IsIgorICAgICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGEgdGhpcmQgaW50ZWdlciBvciBhIHN0cmluZyIsCisgICAgICAgICAgICAmaW50X2FyZyk7CisgICAgICAgIGlmICghcGFyc2VfcmVzdWx0KSB7CisgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgIH0KIAotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXJnID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICJPJml8STtmY250bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKLSAgICAgICAgICIgYW4gaW50ZWdlciBhbmQgb3B0aW9uYWxseSBhIHRoaXJkIGludGVnZXIgb3IgYSBzdHJpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKSB7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCBhcmcpOworICAgIHJldCA9IGZjbnRsKGZkLCBjb2RlLCAoaW50KWludF9hcmcpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJldCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpAQCAtNzYsMzMgKzEwNSw1NCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmV0KTsKIH0KIAotUHlEb2NfU1RSVkFSKGZjbnRsX2RvYywKLSJmY250bChmZCwgb3AsIFthcmddKVxuXAotXG5cCi1QZXJmb3JtIHRoZSBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgVGhlIHZhbHVlcyB1c2VkXG5cCi1mb3Igb3AgYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZVxuXAotYXMgY29uc3RhbnRzIGluIHRoZSBmY250bCBtb2R1bGUsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzIHVzZWQgaW5cblwKLXRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4gIFRoZSBhcmd1bWVudCBhcmcgaXMgb3B0aW9uYWwsIGFuZFxuXAotZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhIHN0cmluZy4gIElmIGFyZyBpcyBnaXZlbiBhcyBhIHN0cmluZyxcblwKLXRoZSByZXR1cm4gdmFsdWUgb2YgZmNudGwgaXMgYSBzdHJpbmcgb2YgdGhhdCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlXG5cCi1yZXN1bHRpbmcgdmFsdWUgcHV0IGluIHRoZSBhcmcgYnVmZmVyIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgVGhlIGxlbmd0aFxuXAotb2YgdGhlIGFyZyBzdHJpbmcgaXMgbm90IGFsbG93ZWQgdG8gZXhjZWVkIDEwMjQgYnl0ZXMuICBJZiB0aGUgYXJnIGdpdmVuXG5cCi1pcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzIGFuIGludGVnZXJcblwKLWNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZmNudGwgY2FsbCBpbiB0aGUgQyBjb2RlLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitmY250bC5pb2N0bAogCi0vKiBpb2N0bChmZCwgb3AsIFthcmddKSAqLworICAgIGZkOiBvYmplY3QodHlwZT0naW50JywgY29udmVydGVyPSdjb252X2Rlc2NyaXB0b3InKQorICAgIHJlcXVlc3QgYXMgY29kZTogdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSkKKyAgICBhcmcgYXMgb2JfYXJnOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgbXV0YXRlX2ZsYWcgYXMgbXV0YXRlX2FyZzogYm9vbCA9IFRydWUKKyAgICAvCisKK1BlcmZvcm0gdGhlIG9wZXJhdGlvbiBgcmVxdWVzdGAgb24gZmlsZSBkZXNjcmlwdG9yIGBmZGAuCisKK1RoZSB2YWx1ZXMgdXNlZCBmb3IgYHJlcXVlc3RgIGFyZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCwgYW5kIGFyZSBhdmFpbGFibGUKK2FzIGNvbnN0YW50cyBpbiB0aGUgZmNudGwgb3IgdGVybWlvcyBsaWJyYXJ5IG1vZHVsZXMsIHVzaW5nIHRoZSBzYW1lIG5hbWVzIGFzCit1c2VkIGluIHRoZSByZWxldmFudCBDIGhlYWRlciBmaWxlcy4KKworVGhlIGFyZ3VtZW50IGBhcmdgIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhCitidWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLgorCitJZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciAoc3VjaCBhcyBhbiBhcnJheSkgYW5kIGlmIHRoZQorbXV0YXRlX2ZsYWcgYXJndW1lbnQgKHdoaWNoIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGlzIGNhc2UpIGlzIHRydWUgdGhlbiB0aGUKK2J1ZmZlciBpcyAoaW4gZWZmZWN0KSBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIGNoYW5nZXMgbWFkZSBieQordGhlIE9TIHdpbGwgYmUgcmVmbGVjdGVkIGluIHRoZSBjb250ZW50cyBvZiB0aGUgYnVmZmVyIGFmdGVyIHRoZSBjYWxsIGhhcworcmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHJldHVybmVkIGJ5IHRoZSBpb2N0bCBzeXN0ZW0KK2NhbGwuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBhIG11dGFibGUgYnVmZmVyIGFuZCB0aGUgbXV0YWJsZV9mbGFnIGFyZ3VtZW50IGlzIGZhbHNlLAordGhlIGJlaGF2aW9yIGlzIGFzIGlmIGEgc3RyaW5nIGhhZCBiZWVuIHBhc3NlZC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGltbXV0YWJsZSBidWZmZXIgKG1vc3QgbGlrZWx5IGEgc3RyaW5nKSB0aGVuIGEgY29weQorb2YgdGhlIGJ1ZmZlciBpcyBwYXNzZWQgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZSByZXR1cm4gdmFsdWUgaXMgYQorc3RyaW5nIG9mIHRoZSBzYW1lIGxlbmd0aCBjb250YWluaW5nIHdoYXRldmVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHB1dCBpbgordGhlIGJ1ZmZlci4gIFRoZSBsZW5ndGggb2YgdGhlIGFyZyBidWZmZXIgaW4gdGhpcyBjYXNlIGlzIG5vdCBhbGxvd2VkIHRvCitleGNlZWQgMTAyNCBieXRlcy4KKworSWYgdGhlIGFyZyBnaXZlbiBpcyBhbiBpbnRlZ2VyIG9yIGlmIG5vbmUgaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IHZhbHVlIGlzCithbiBpbnRlZ2VyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgaW9jdGwgY2FsbCBpbiB0aGUgQworY29kZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2lvY3RsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2lvY3RsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1bnNpZ25lZCBpbnQgY29kZSwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iX2FyZywgaW50IG11dGF0ZV9hcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTAyZmFhMGY3ZWJlMjIxMCBpbnB1dD1lZGU3MGM0MzNjY2NiYmIyXSovCiB7CiAjZGVmaW5lIElPQ1RMX0JVRlNaIDEwMjQKLSAgICBpbnQgZmQ7Ci0gICAgLyogSW4gUHlBcmdfUGFyc2VUdXBsZSBiZWxvdywgd2UgdXNlIHRoZSB1bnNpZ25lZCBub24tY2hlY2tlZCAnSScKLSAgICAgICBmb3JtYXQgZm9yIHRoZSAnY29kZScgcGFyYW1ldGVyIGJlY2F1c2UgUHl0aG9uIHR1cm5zIDB4ODAwMDAwMAotICAgICAgIGludG8gZWl0aGVyIGEgbGFyZ2UgcG9zaXRpdmUgbnVtYmVyIChQeUxvbmcgb3IgUHlJbnQgb24gNjQtYml0Ci0gICAgICAgcGxhdGZvcm1zKSBvciBhIG5lZ2F0aXZlIG51bWJlciBvbiBvdGhlcnMgKDMyLWJpdCBQeUludCkKLSAgICAgICB3aGVyZWFzIHRoZSBzeXN0ZW0gZXhwZWN0cyBpdCB0byBiZSBhIDMyYml0IGJpdCBmaWVsZCB2YWx1ZQorICAgIC8qIFdlIHVzZSB0aGUgdW5zaWduZWQgbm9uLWNoZWNrZWQgJ0knIGZvcm1hdCBmb3IgdGhlICdjb2RlJyBwYXJhbWV0ZXIKKyAgICAgICBiZWNhdXNlIHRoZSBzeXN0ZW0gZXhwZWN0cyBpdCB0byBiZSBhIDMyYml0IGJpdCBmaWVsZCB2YWx1ZQogICAgICAgIHJlZ2FyZGxlc3Mgb2YgaXQgYmVpbmcgcGFzc2VkIGFzIGFuIGludCBvciB1bnNpZ25lZCBsb25nIG9uCiAgICAgICAgdmFyaW91cyBwbGF0Zm9ybXMuICBTZWUgdGhlIHRlcm1pb3MuVElPQ1NXSU5TWiBjb25zdGFudCBhY3Jvc3MKICAgICAgICBwbGF0Zm9ybXMgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcy4KQEAgLTExMSwxMDEgKzE2MSw5OCBAQAogICAgICAgIGluIHRoZWlyIHVuc2lnbmVkIGxvbmcgaW9jdGwgY29kZXMgdGhpcyB3aWxsIGJyZWFrIGFuZCBuZWVkCiAgICAgICAgc3BlY2lhbCBjYXNpbmcgYmFzZWQgb24gdGhlIHBsYXRmb3JtIGJlaW5nIGJ1aWx0IG9uLgogICAgICAqLwotICAgIHVuc2lnbmVkIGludCBjb2RlOwotICAgIGludCBhcmc7CisgICAgaW50IGFyZyA9IDA7CiAgICAgaW50IHJldDsKICAgICBQeV9idWZmZXIgcHN0cjsKICAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgaW50IG11dGF0ZV9hcmcgPSAxOwogICAgIGNoYXIgYnVmW0lPQ1RMX0JVRlNaKzFdOyAgLyogYXJndW1lbnQgcGx1cyBOVUwgYnl0ZSAqLwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mSXcqfGk6aW9jdGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmcHN0ciwgJm11dGF0ZV9hcmcpKSB7Ci0gICAgICAgIGNoYXIgKmFyZzsKLSAgICAgICAgc3RyID0gcHN0ci5idWY7Ci0gICAgICAgIGxlbiA9IHBzdHIubGVuOworICAgIGlmIChvYl9hcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlBcmdfUGFyc2Uob2JfYXJnLCAidyo6aW9jdGwiLCAmcHN0cikpIHsKKyAgICAgICAgICAgIGNoYXIgKmFyZzsKKyAgICAgICAgICAgIHN0ciA9IHBzdHIuYnVmOworICAgICAgICAgICAgbGVuID0gcHN0ci5sZW47CiAKLSAgICAgICAgaWYgKG11dGF0ZV9hcmcpIHsKLSAgICAgICAgICAgIGlmIChsZW4gPD0gSU9DVExfQlVGU1opIHsKLSAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7Ci0gICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIGFyZyA9IGJ1ZjsKKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnKSB7CisgICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBJT0NUTF9CVUZTWikgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gc3RyOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGFyZyA9IHN0cjsKKyAgICAgICAgICAgICAgICBpZiAobGVuID4gSU9DVExfQlVGU1opIHsKKyAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImlvY3RsIHN0cmluZyBhcmcgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdHIsIGxlbik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgYXJnID0gYnVmOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChidWYgPT0gYXJnKSB7CisgICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyAvKiB0aGluayBhcnJheS5yZXNpemUoKSAqLworICAgICAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnICYmIChsZW4gPD0gSU9DVExfQlVGU1opKSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgYnVmLCBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7IC8qIE5vIGZ1cnRoZXIgYWNjZXNzIHRvIHN0ciBiZWxvdyB0aGlzIHBvaW50ICovCisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtdXRhdGVfYXJnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeUFyZ19QYXJzZShvYl9hcmcsICJzKjppb2N0bCIsICZwc3RyKSkgeworICAgICAgICAgICAgc3RyID0gcHN0ci5idWY7CisgICAgICAgICAgICBsZW4gPSBwc3RyLmxlbjsKICAgICAgICAgICAgIGlmIChsZW4gPiBJT0NUTF9CVUZTWikgewogICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW9jdGwgc3RyaW5nIGFyZyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOwotICAgICAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICAgICAgICAgICAgICBhcmcgPSBidWY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ1ZiA9PSBhcmcpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgLyogdGhpbmsgYXJyYXkucmVzaXplKCkgKi8KLSAgICAgICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBhcmcpOworICAgICAgICAgICAgbWVtY3B5KGJ1Ziwgc3RyLCBsZW4pOworICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGJ1Zik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0ID0gaW9jdGwoZmQsIGNvZGUsIGFyZyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG11dGF0ZV9hcmcgJiYgKGxlbiA8PSBJT0NUTF9CVUZTWikpIHsKLSAgICAgICAgICAgIG1lbWNweShzdHIsIGJ1ZiwgbGVuKTsKLSAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsgLyogTm8gZnVydGhlciBhY2Nlc3MgdG8gc3RyIGJlbG93IHRoaXMgcG9pbnQgKi8KLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtdXRhdGVfYXJnKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJldCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBzdHIpOwogICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJcyo6aW9jdGwiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJnBzdHIpKSB7Ci0gICAgICAgIHN0ciA9IHBzdHIuYnVmOwotICAgICAgICBsZW4gPSBwc3RyLmxlbjsKLSAgICAgICAgaWYgKGxlbiA+IElPQ1RMX0JVRlNaKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpb2N0bCBzdHJpbmcgYXJnIHRvbyBsb25nIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShvYl9hcmcsCisgICAgICAgICAgICAgImk7aW9jdGwgcmVxdWlyZXMgYSBmaWxlIG9yIGZpbGUgZGVzY3JpcHRvciwiCisgICAgICAgICAgICAgIiBhbiBpbnRlZ2VyIGFuZCBvcHRpb25hbGx5IGFuIGludGVnZXIgb3IgYnVmZmVyIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAmYXJnKSkgeworICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIG1lbWNweShidWYsIHN0ciwgbGVuKTsKLSAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IGlvY3RsKGZkLCBjb2RlLCBidWYpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAocmV0IDwgMCkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHN0cik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwc3RyKTsKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwotICAgIH0KLQotICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXJnID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICJPJkl8aTtpb2N0bCByZXF1aXJlcyBhIGZpbGUgb3IgZmlsZSBkZXNjcmlwdG9yLCIKLSAgICAgICAgICIgYW4gaW50ZWdlciBhbmQgb3B0aW9uYWxseSBhbiBpbnRlZ2VyIG9yIGJ1ZmZlciBhcmd1bWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmFyZykpIHsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICAvLyBGYWxsLXRocm91Z2ggdG8gb3V0c2lkZSB0aGUgJ2lmJyBzdGF0ZW1lbnQuCiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXQgPSBpb2N0bChmZCwgY29kZSwgYXJnKTsKQEAgLTIxOCw1MiArMjY1LDI1IEBACiAjdW5kZWYgSU9DVExfQlVGU1oKIH0KIAotUHlEb2NfU1RSVkFSKGlvY3RsX2RvYywKLSJpb2N0bChmZCwgb3BbLCBhcmdbLCBtdXRhdGVfZmxhZ11dKVxuXAotXG5cCi1QZXJmb3JtIHRoZSBvcGVyYXRpb24gb3Agb24gZmlsZSBkZXNjcmlwdG9yIGZkLiAgVGhlIHZhbHVlcyB1c2VkIGZvciBvcFxuXAotYXJlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50LCBhbmQgYXJlIGF2YWlsYWJsZSBhcyBjb25zdGFudHMgaW4gdGhlXG5cCi1mY250bCBvciB0ZXJtaW9zIGxpYnJhcnkgbW9kdWxlcywgdXNpbmcgdGhlIHNhbWUgbmFtZXMgYXMgdXNlZCBpbiB0aGVcblwKLXJlbGV2YW50IEMgaGVhZGVyIGZpbGVzLlxuXAotXG5cCi1UaGUgYXJndW1lbnQgYXJnIGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gMDsgaXQgbWF5IGJlIGFuIGludCBvciBhXG5cCi1idWZmZXIgY29udGFpbmluZyBjaGFyYWN0ZXIgZGF0YSAobW9zdCBsaWtlbHkgYSBzdHJpbmcgb3IgYW4gYXJyYXkpLiBcblwKLVxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIGEgbXV0YWJsZSBidWZmZXIgKHN1Y2ggYXMgYW4gYXJyYXkpIGFuZCBpZiB0aGVcblwKLW11dGF0ZV9mbGFnIGFyZ3VtZW50ICh3aGljaCBpcyBvbmx5IGFsbG93ZWQgaW4gdGhpcyBjYXNlKSBpcyB0cnVlIHRoZW4gdGhlXG5cCi1idWZmZXIgaXMgKGluIGVmZmVjdCkgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCBjaGFuZ2VzIG1hZGUgYnlcblwKLXRoZSBPUyB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciBhZnRlciB0aGUgY2FsbCBoYXNcblwKLXJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaW50ZWdlciByZXR1cm5lZCBieSB0aGUgaW9jdGwgc3lzdGVtXG5cCi1jYWxsLlxuXAotXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgYSBtdXRhYmxlIGJ1ZmZlciBhbmQgdGhlIG11dGFibGVfZmxhZyBhcmd1bWVudCBpcyBub3RcblwKLXBhc3NlZCBvciBpcyBmYWxzZSwgdGhlIGJlaGF2aW9yIGlzIGFzIGlmIGEgc3RyaW5nIGhhZCBiZWVuIHBhc3NlZC4gIFRoaXNcblwKLWJlaGF2aW9yIHdpbGwgY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyBvZiBQeXRob24uXG5cCi1cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBhbiBpbW11dGFibGUgYnVmZmVyIChtb3N0IGxpa2VseSBhIHN0cmluZykgdGhlbiBhIGNvcHlcblwKLW9mIHRoZSBidWZmZXIgaXMgcGFzc2VkIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIGFcblwKLXN0cmluZyBvZiB0aGUgc2FtZSBsZW5ndGggY29udGFpbmluZyB3aGF0ZXZlciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwdXQgaW5cblwKLXRoZSBidWZmZXIuICBUaGUgbGVuZ3RoIG9mIHRoZSBhcmcgYnVmZmVyIGluIHRoaXMgY2FzZSBpcyBub3QgYWxsb3dlZCB0b1xuXAotZXhjZWVkIDEwMjQgYnl0ZXMuXG5cCi1cblwKLUlmIHRoZSBhcmcgZ2l2ZW4gaXMgYW4gaW50ZWdlciBvciBpZiBub25lIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCB2YWx1ZSBpc1xuXAotYW4gaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGlvY3RsIGNhbGwgaW4gdGhlIENcblwKLWNvZGUuIik7CisvKltjbGluaWMgaW5wdXRdCitmY250bC5mbG9jawogCisgICAgZmQ6IG9iamVjdCh0eXBlPSdpbnQnLCBjb252ZXJ0ZXI9J2NvbnZfZGVzY3JpcHRvcicpCisgICAgb3BlcmF0aW9uIGFzIGNvZGU6IGludAorICAgIC8KIAotLyogZmxvY2soZmQsIG9wZXJhdGlvbikgKi8KK1BlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uIGBvcGVyYXRpb25gIG9uIGZpbGUgZGVzY3JpcHRvciBgZmRgLgorCitTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UgZm9yIGZsb2NrKDIpIGZvciBkZXRhaWxzIChPbiBzb21lIHN5c3RlbXMsIHRoaXMKK2Z1bmN0aW9uIGlzIGVtdWxhdGVkIHVzaW5nIGZjbnRsKCkpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZmNudGxfZmxvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorZmNudGxfZmxvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM5MDM1MTMzYTdkYmZjOTYgaW5wdXQ9YjcwYTBhNDFjYTIyYThhMF0qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgY29kZTsKICAgICBpbnQgcmV0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6ZmxvY2siLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIEhBVkVfRkxPQ0sKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmV0ID0gZmxvY2soZmQsIGNvZGUpOwpAQCAtMjk5LDI5ICszMTksNTAgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZmxvY2tfZG9jLAotImZsb2NrKGZkLCBvcGVyYXRpb24pXG5cCi1cblwKLVBlcmZvcm0gdGhlIGxvY2sgb3BlcmF0aW9uIG9wIG9uIGZpbGUgZGVzY3JpcHRvciBmZC4gIFNlZSB0aGUgVW5peCBcblwKLW1hbnVhbCBwYWdlIGZvciBmbG9jaygyKSBmb3IgZGV0YWlscy4gIChPbiBzb21lIHN5c3RlbXMsIHRoaXMgZnVuY3Rpb24gaXNcblwKLWVtdWxhdGVkIHVzaW5nIGZjbnRsKCkuKSIpOwogCisvKltjbGluaWMgaW5wdXRdCitmY250bC5sb2NrZgogCi0vKiBsb2NrZihmZCwgb3BlcmF0aW9uKSAqLworICAgIGZkOiBvYmplY3QodHlwZT0naW50JywgY29udmVydGVyPSdjb252X2Rlc2NyaXB0b3InKQorICAgIGNtZCBhcyBjb2RlOiBpbnQKKyAgICBsZW4gYXMgbGVub2JqOiBvYmplY3QoY19kZWZhdWx0PSdOVUxMJykgPSAwCisgICAgc3RhcnQgYXMgc3RhcnRvYmo6IG9iamVjdChjX2RlZmF1bHQ9J05VTEwnKSA9IDAKKyAgICB3aGVuY2U6IGludCA9IDAKKyAgICAvCisKK0Egd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy4KKworYGZkYCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgb3BlcmF0aW9uIGlzIG9uZQorb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisKKyAgICBMT0NLX1VOIC0gdW5sb2NrCisgICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9jaworICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrCisKK1doZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGgKK0xPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlCitsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4gSU9FcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsCitoYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcKK3N5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLgorCitgbGVuYCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGxvY2ssIHdpdGggdGhlIGRlZmF1bHQgbWVhbmluZyB0byBsb2NrIHRvCitFT0YuICBgc3RhcnRgIGlzIHRoZSBieXRlIG9mZnNldCwgcmVsYXRpdmUgdG8gYHdoZW5jZWAsIHRvIHRoYXQgdGhlIGxvY2sKK3N0YXJ0cy4gIGB3aGVuY2VgIGlzIGFzIHdpdGggZmlsZW9iai5zZWVrKCksIHNwZWNpZmljYWxseToKKworICAgIDAgLSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGZpbGUgKFNFRUtfU0VUKQorICAgIDEgLSByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBidWZmZXIgcG9zaXRpb24gKFNFRUtfQ1VSKQorICAgIDIgLSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIChTRUVLX0VORCkKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZjbnRsX2xvY2tmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2ZjbnRsX2xvY2tmX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgY29kZSwgUHlPYmplY3QgKmxlbm9iaiwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXJ0b2JqLCBpbnQgd2hlbmNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxYWYzNWViYTA4YjlhZjcgaW5wdXQ9OWM1OTQzOTFkZTgyMWYyNF0qLwogewotICAgIGludCBmZCwgY29kZSwgcmV0LCB3aGVuY2UgPSAwOwotICAgIFB5T2JqZWN0ICpsZW5vYmogPSBOVUxMLCAqc3RhcnRvYmogPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmV0OwogCiAjaWZuZGVmIExPQ0tfU0gKICNkZWZpbmUgTE9DS19TSCAgICAgICAgIDEgICAgICAgLyogc2hhcmVkIGxvY2sgKi8KQEAgLTM3NCw0MyArNDE1LDE3IEBACiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGxvY2tmX2RvYywKLSJsb2NrZiAoZmQsIG9wZXJhdGlvbiwgbGVuZ3RoPTAsIHN0YXJ0PTAsIHdoZW5jZT0wKVxuXAotXG5cCi1UaGlzIGlzIGVzc2VudGlhbGx5IGEgd3JhcHBlciBhcm91bmQgdGhlIGZjbnRsKCkgbG9ja2luZyBjYWxscy4gIGZkIGlzIHRoZVxuXAotZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGxvY2sgb3IgdW5sb2NrLCBhbmQgb3BlcmF0aW9uIGlzIG9uZSBvZiB0aGVcblwKLWZvbGxvd2luZyB2YWx1ZXM6XG5cCi1cblwKLSAgICBMT0NLX1VOIC0gdW5sb2NrXG5cCi0gICAgTE9DS19TSCAtIGFjcXVpcmUgYSBzaGFyZWQgbG9ja1xuXAotICAgIExPQ0tfRVggLSBhY3F1aXJlIGFuIGV4Y2x1c2l2ZSBsb2NrXG5cCi1cblwKLVdoZW4gb3BlcmF0aW9uIGlzIExPQ0tfU0ggb3IgTE9DS19FWCwgaXQgY2FuIGFsc28gYmUgYml0d2lzZSBPUmVkIHdpdGhcblwKLUxPQ0tfTkIgdG8gYXZvaWQgYmxvY2tpbmcgb24gbG9jayBhY3F1aXNpdGlvbi4gIElmIExPQ0tfTkIgaXMgdXNlZCBhbmQgdGhlXG5cCi1sb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4gSU9FcnJvciB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsXG5cCi1oYXZlIGFuIGVycm5vIGF0dHJpYnV0ZSBzZXQgdG8gRUFDQ0VTIG9yIEVBR0FJTiAoZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmdcblwKLXN5c3RlbSAtLSBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBlaXRoZXIgdmFsdWUpLlxuXAotXG5cCi1sZW5ndGggaXMgdGhlIG51bWJlciBvZiBieXRlcyB0byBsb2NrLCB3aXRoIHRoZSBkZWZhdWx0IG1lYW5pbmcgdG8gbG9jayB0b1xuXAotRU9GLiAgc3RhcnQgaXMgdGhlIGJ5dGUgb2Zmc2V0LCByZWxhdGl2ZSB0byB3aGVuY2UsIHRvIHRoYXQgdGhlIGxvY2tcblwKLXN0YXJ0cy4gIHdoZW5jZSBpcyBhcyB3aXRoIGZpbGVvYmouc2VlaygpLCBzcGVjaWZpY2FsbHk6XG5cCi1cblwKLSAgICAwIC0gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlIChTRUVLX1NFVClcblwKLSAgICAxIC0gcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgYnVmZmVyIHBvc2l0aW9uIChTRUVLX0NVUilcblwKLSAgICAyIC0gcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSAoU0VFS19FTkQpIik7Ci0KIC8qIExpc3Qgb2YgZnVuY3Rpb25zICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBmY250bF9tZXRob2RzW10gPSB7Ci0gICAgeyJmY250bCIsICAgICAgICAgICBmY250bF9mY250bCwgTUVUSF9WQVJBUkdTLCBmY250bF9kb2N9LAotICAgIHsiaW9jdGwiLCAgICAgICAgICAgZmNudGxfaW9jdGwsIE1FVEhfVkFSQVJHUywgaW9jdGxfZG9jfSwKLSAgICB7ImZsb2NrIiwgICAgICAgICAgIGZjbnRsX2Zsb2NrLCBNRVRIX1ZBUkFSR1MsIGZsb2NrX2RvY30sCi0gICAgeyJsb2NrZiIsICAgICAgIGZjbnRsX2xvY2tmLCBNRVRIX1ZBUkFSR1MsIGxvY2tmX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBGQ05UTF9GQ05UTF9NRVRIT0RERUYKKyAgICBGQ05UTF9JT0NUTF9NRVRIT0RERUYKKyAgICBGQ05UTF9GTE9DS19NRVRIT0RERUYKKyAgICBGQ05UTF9MT0NLRl9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA5YmIzNjY2Li5jYjcyMjJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIiAgICAgICAgLyogZm9yIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCAqLworI2luY2x1ZGUgInB5dGltZS5oIiAgICAgICAgICAgICAvKiBmb3IgX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICovCiAKIC8qIEdldCBhbiBvYmplY3QncyBHQyBoZWFkICovCiAjZGVmaW5lIEFTX0dDKG8pICgoUHlHQ19IZWFkICopKG8pLTEpCkBAIC0xNjYsNyArMTY3LDYgQEAKICAgICAgICAgICAgICAgICBERUJVR19VTkNPTExFQ1RBQkxFIHwgXAogICAgICAgICAgICAgICAgIERFQlVHX1NBVkVBTEwKIHN0YXRpYyBpbnQgZGVidWc7Ci1zdGF0aWMgUHlPYmplY3QgKnRtb2QgPSBOVUxMOwogCiAvKiBSdW5uaW5nIHN0YXRzIHBlciBnZW5lcmF0aW9uICovCiBzdHJ1Y3QgZ2NfZ2VuZXJhdGlvbl9zdGF0cyB7CkBAIC04OTQsMjYgKzg5NCw2IEBACiAgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogfQogCi1zdGF0aWMgZG91YmxlCi1nZXRfdGltZSh2b2lkKQotewotICAgIGRvdWJsZSByZXN1bHQgPSAwOwotICAgIGlmICh0bW9kICE9IE5VTEwpIHsKLSAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7Ci0KLSAgICAgICAgUHlPYmplY3QgKmYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRtb2QsICZQeUlkX3RpbWUsIE5VTEwpOwotICAgICAgICBpZiAoZiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5RmxvYXRfQ2hlY2soZikpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Bc0RvdWJsZShmKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiAvKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiAgUmVhZCB0aGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZQogICogY29sbGVjdGlvbiBwcm9jZXNzIHdvcmtzLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTkyOCw3ICs5MDgsOCBAQAogICAgIFB5R0NfSGVhZCB1bnJlYWNoYWJsZTsgLyogbm9uLXByb2JsZW1hdGljIHVucmVhY2hhYmxlIHRyYXNoICovCiAgICAgUHlHQ19IZWFkIGZpbmFsaXplcnM7ICAvKiBvYmplY3RzIHdpdGgsICYgcmVhY2hhYmxlIGZyb20sIF9fZGVsX18gKi8KICAgICBQeUdDX0hlYWQgKmdjOwotICAgIGRvdWJsZSB0MSA9IDAuMDsKKyAgICBfUHlUaW1lX3QgdDEgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwogICAgIHN0cnVjdCBnY19nZW5lcmF0aW9uX3N0YXRzICpzdGF0cyA9ICZnZW5lcmF0aW9uX3N0YXRzW2dlbmVyYXRpb25dOwogCiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKQEAgLTkzNiw5ICs5MTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGlvbik7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogb2JqZWN0cyBpbiBlYWNoIGdlbmVyYXRpb246Iik7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fR0VORVJBVElPTlM7IGkrKykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiAlemQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfbGlzdF9zaXplKEdFTl9IRUFEKGkpKSk7Ci0gICAgICAgIHQxID0gZ2V0X3RpbWUoKTsKKyAgICAgICAgdDEgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIlxuIik7CiAgICAgfQogCkBAIC0xMDQyLDE5ICsxMDI0LDE2IEBACiAgICAgICAgICAgICBkZWJ1Z19jeWNsZSgidW5jb2xsZWN0YWJsZSIsIEZST01fR0MoZ2MpKTsKICAgICB9CiAgICAgaWYgKGRlYnVnICYgREVCVUdfU1RBVFMpIHsKLSAgICAgICAgZG91YmxlIHQyID0gZ2V0X3RpbWUoKTsKKyAgICAgICAgX1B5VGltZV90IHQyID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworCiAgICAgICAgIGlmIChtID09IDAgJiYgbiA9PSAwKQogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImdjOiBkb25lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICJnYzogZG9uZSwgIgotICAgICAgICAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIHVucmVhY2hhYmxlLCAiCi0gICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgdW5jb2xsZWN0YWJsZSIsCisgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoCisgICAgICAgICAgICAgICAgImdjOiBkb25lLCAlemQgdW5yZWFjaGFibGUsICV6ZCB1bmNvbGxlY3RhYmxlIiwKICAgICAgICAgICAgICAgICBuK20sIG4pOwotICAgICAgICBpZiAodDEgJiYgdDIpIHsKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIsICUuNGZzIGVsYXBzZWQiLCB0Mi10MSk7Ci0gICAgICAgIH0KLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIi5cbiIpOworICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiLCAlLjRmcyBlbGFwc2VkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0MiAtIHQxKSk7CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGluc3RhbmNlcyBpbiB0aGUgdW5jb2xsZWN0YWJsZSBzZXQgdG8gYSBQeXRob24KQEAgLTE1ODEsMTggKzE1NjAsNiBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImNhbGxiYWNrcyIsIGNhbGxiYWNrcykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEltcG9ydGluZyBjYW4ndCBiZSBkb25lIGluIGNvbGxlY3QoKSBiZWNhdXNlIGNvbGxlY3QoKQotICAgICAqIGNhbiBiZSBjYWxsZWQgdmlhIFB5R0NfQ29sbGVjdCgpIGluIFB5X0ZpbmFsaXplKCkuCi0gICAgICogVGhpcyB3b3VsZG4ndCBiZSBhIHByb2JsZW0sIGV4Y2VwdCB0aGF0IDxpbml0aWFsaXplZD4gaXMKLSAgICAgKiByZXNldCB0byAwIGJlZm9yZSBjYWxsaW5nIGNvbGxlY3Qgd2hpY2ggdHJpcHMgdXAKLSAgICAgKiB0aGUgaW1wb3J0IGFuZCB0cmlnZ2VycyBhbiBhc3NlcnRpb24uCi0gICAgICovCi0gICAgaWYgKHRtb2QgPT0gTlVMTCkgewotICAgICAgICB0bW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOwotICAgICAgICBpZiAodG1vZCA9PSBOVUxMKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0KICNkZWZpbmUgQUREX0lOVChOQU1FKSBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgI05BTUUsIE5BTUUpIDwgMCkgcmV0dXJuIE5VTEwKICAgICBBRERfSU5UKERFQlVHX1NUQVRTKTsKICAgICBBRERfSU5UKERFQlVHX0NPTExFQ1RBQkxFKTsKQEAgLTE2ODEsNyArMTY0OCw2IEBACiBfUHlHQ19GaW5pKHZvaWQpCiB7CiAgICAgUHlfQ0xFQVIoY2FsbGJhY2tzKTsKLSAgICBQeV9DTEVBUih0bW9kKTsKIH0KIAogLyogZm9yIGRlYnVnZ2luZyAqLwpAQCAtMTcxNSwxNSArMTY4MSwxOSBAQAogICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhvcCk7CiB9CiAKLVB5T2JqZWN0ICoKLV9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90IGJhc2ljc2l6ZSkKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlPYmplY3RfR0NfQWxsb2MoaW50IHVzZV9jYWxsb2MsIHNpemVfdCBiYXNpY3NpemUpCiB7CiAgICAgUHlPYmplY3QgKm9wOwogICAgIFB5R0NfSGVhZCAqZzsKKyAgICBzaXplX3Qgc2l6ZTsKICAgICBpZiAoYmFzaWNzaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlHQ19IZWFkKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9NQUxMT0MoCi0gICAgICAgIHNpemVvZihQeUdDX0hlYWQpICsgYmFzaWNzaXplKTsKKyAgICBzaXplID0gc2l6ZW9mKFB5R0NfSGVhZCkgKyBiYXNpY3NpemU7CisgICAgaWYgKHVzZV9jYWxsb2MpCisgICAgICAgIGcgPSAoUHlHQ19IZWFkICopUHlPYmplY3RfQ2FsbG9jKDEsIHNpemUpOworICAgIGVsc2UKKyAgICAgICAgZyA9IChQeUdDX0hlYWQgKilQeU9iamVjdF9NYWxsb2Moc2l6ZSk7CiAgICAgaWYgKGcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgZy0+Z2MuZ2NfcmVmcyA9IDA7CkBAIC0xNzQzLDYgKzE3MTMsMTggQEAKIH0KIAogUHlPYmplY3QgKgorX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3QgYmFzaWNzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfR0NfQWxsb2MoMCwgYmFzaWNzaXplKTsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3QgYmFzaWNzaXplKQoreworICAgIHJldHVybiBfUHlPYmplY3RfR0NfQWxsb2MoMSwgYmFzaWNzaXplKTsKK30KKworUHlPYmplY3QgKgogX1B5T2JqZWN0X0dDX05ldyhQeVR5cGVPYmplY3QgKnRwKQogewogICAgIFB5T2JqZWN0ICpvcCA9IF9QeU9iamVjdF9HQ19NYWxsb2MoX1B5T2JqZWN0X1NJWkUodHApKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0cGF0aC5jIGIvTW9kdWxlcy9nZXRwYXRoLmMKaW5kZXggMTNlMzgxNy4uMDNkMjkyYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRwYXRoLmMKKysrIGIvTW9kdWxlcy9nZXRwYXRoLmMKQEAgLTEzMSw2ICsxMzEsMjMgQEAKIHN0YXRpYyB3Y2hhcl90IHByb2dwYXRoW01BWFBBVEhMRU4rMV07CiBzdGF0aWMgd2NoYXJfdCAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKIAorLyogR2V0IGZpbGUgc3RhdHVzLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKworc3RhdGljIGludAorX1B5X3dzdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCit7CisgICAgaW50IGVycjsKKyAgICBjaGFyICpmbmFtZTsKKyAgICBmbmFtZSA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKKyAgICBpZiAoZm5hbWUgPT0gTlVMTCkgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlcnIgPSBzdGF0KGZuYW1lLCBidWYpOworICAgIFB5TWVtX0ZyZWUoZm5hbWUpOworICAgIHJldHVybiBlcnI7Cit9CisKIHN0YXRpYyB2b2lkCiByZWR1Y2Uod2NoYXJfdCAqZGlyKQogewpAQCAtMTUzLDE0ICsxNzAsMTQgQEAKIAogCiBzdGF0aWMgaW50Ci1pc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSkgICAgICAgIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLworaXNtb2R1bGUod2NoYXJfdCAqZmlsZW5hbWUpICAgICAgICAvKiBJcyBtb2R1bGUgLS0gY2hlY2sgZm9yIC5weWMgdG9vICovCiB7CiAgICAgaWYgKGlzZmlsZShmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogQ2hlY2sgZm9yIHRoZSBjb21waWxlZCB2ZXJzaW9uIG9mIHByZWZpeC4gKi8KICAgICBpZiAod2NzbGVuKGZpbGVuYW1lKSA8IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgd2NzY2F0KGZpbGVuYW1lLCBQeV9PcHRpbWl6ZUZsYWcgPyBMIm8iIDogTCJjIik7CisgICAgICAgIHdjc2NhdChmaWxlbmFtZSwgTCJjIik7CiAgICAgICAgIGlmIChpc2ZpbGUoZmlsZW5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMzM2LDcgKzM1Myw3IEBACiAgICAgam9pbnBhdGgocHJlZml4LCBMIk1vZHVsZXMvU2V0dXAiKTsKICAgICBpZiAoaXNmaWxlKHByZWZpeCkpIHsKICAgICAgICAgLyogQ2hlY2sgVlBBVEggdG8gc2VlIGlmIGFyZ3YwX3BhdGggaXMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgdnBhdGggPSBfUHlfY2hhcjJ3Y2hhcihWUEFUSCwgTlVMTCk7CisgICAgICAgIHZwYXRoID0gUHlfRGVjb2RlTG9jYWxlKFZQQVRILCBOVUxMKTsKICAgICAgICAgaWYgKHZwYXRoICE9IE5VTEwpIHsKICAgICAgICAgICAgIHdjc25jcHkocHJlZml4LCBhcmd2MF9wYXRoLCBNQVhQQVRITEVOKTsKICAgICAgICAgICAgIHByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwpAQCAtNDkxLDEwICs1MDgsMTAgQEAKICAgICB3Y2hhcl90ICpfcHl0aG9ucGF0aCwgKl9wcmVmaXgsICpfZXhlY19wcmVmaXg7CiAgICAgd2NoYXJfdCAqbGliX3B5dGhvbjsKIAotICAgIF9weXRob25wYXRoID0gX1B5X2NoYXIyd2NoYXIoUFlUSE9OUEFUSCwgTlVMTCk7Ci0gICAgX3ByZWZpeCA9IF9QeV9jaGFyMndjaGFyKFBSRUZJWCwgTlVMTCk7Ci0gICAgX2V4ZWNfcHJlZml4ID0gX1B5X2NoYXIyd2NoYXIoRVhFQ19QUkVGSVgsIE5VTEwpOwotICAgIGxpYl9weXRob24gPSBfUHlfY2hhcjJ3Y2hhcigibGliL3B5dGhvbiIgVkVSU0lPTiwgTlVMTCk7CisgICAgX3B5dGhvbnBhdGggPSBQeV9EZWNvZGVMb2NhbGUoUFlUSE9OUEFUSCwgTlVMTCk7CisgICAgX3ByZWZpeCA9IFB5X0RlY29kZUxvY2FsZShQUkVGSVgsIE5VTEwpOworICAgIF9leGVjX3ByZWZpeCA9IFB5X0RlY29kZUxvY2FsZShFWEVDX1BSRUZJWCwgTlVMTCk7CisgICAgbGliX3B5dGhvbiA9IFB5X0RlY29kZUxvY2FsZSgibGliL3B5dGhvbiIgVkVSU0lPTiwgTlVMTCk7CiAKICAgICBpZiAoIV9weXRob25wYXRoIHx8ICFfcHJlZml4IHx8ICFfZXhlY19wcmVmaXggfHwgIWxpYl9weXRob24pIHsKICAgICAgICAgUHlfRmF0YWxFcnJvcigKQEAgLTUwMyw3ICs1MjAsNyBAQAogICAgIH0KIAogICAgIGlmIChfcGF0aCkgewotICAgICAgICBwYXRoX2J1ZmZlciA9IF9QeV9jaGFyMndjaGFyKF9wYXRoLCBOVUxMKTsKKyAgICAgICAgcGF0aF9idWZmZXIgPSBQeV9EZWNvZGVMb2NhbGUoX3BhdGgsIE5VTEwpOwogICAgICAgICBwYXRoID0gcGF0aF9idWZmZXI7CiAgICAgfQogCkBAIC01ODQsNyArNjAxLDcgQEAKICAgICAgICAgKiogYmUgcnVubmluZyB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSwgc28gd2UgdXNlIHRoZQogICAgICAgICAqKiBidWlsZC1kaXJlY3Rvcnktc3BlY2lmaWMgbG9naWMgdG8gZmluZCBMaWIgYW5kIHN1Y2guCiAgICAgICAgICovCi0gICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihtb2RQYXRoLCBOVUxMKTsKKyAgICAgICAgd2NoYXJfdCogd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShtb2RQYXRoLCBOVUxMKTsKICAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBmcmFtZXdvcmsgbG9jYXRpb24iKTsKICAgICAgICAgfQpAQCAtNzA5LDcgKzcyNiw3IEBACiAKICAgICBpZiAoX3J0cHlwYXRoICYmIF9ydHB5cGF0aFswXSAhPSAnXDAnKSB7CiAgICAgICAgIHNpemVfdCBydHB5cGF0aF9sZW47Ci0gICAgICAgIHJ0cHlwYXRoID0gX1B5X2NoYXIyd2NoYXIoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKKyAgICAgICAgcnRweXBhdGggPSBQeV9EZWNvZGVMb2NhbGUoX3J0cHlwYXRoLCAmcnRweXBhdGhfbGVuKTsKICAgICAgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCiAgICAgICAgICAgICBidWZzeiArPSBydHB5cGF0aF9sZW4gKyAxOwogICAgIH0KQEAgLTg3NCw0ICs4OTEsMyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9ncnBtb2R1bGUuYyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKaW5kZXggZGE3ODI1My4uNDAzZTQzNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9ncnBtb2R1bGUuYworKysgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCkBAIC02LDYgKzYsMTIgQEAKIAogI2luY2x1ZGUgPGdycC5oPgogCisjaW5jbHVkZSAiY2xpbmljL2dycG1vZHVsZS5jLmgiCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgZ3JwCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jYWRlNjNmMmVkMWJkOWY4XSovCisKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHN0cnVjdF9ncm91cF90eXBlX2ZpZWxkc1tdID0gewogICAgeyJncl9uYW1lIiwgImdyb3VwIG5hbWUifSwKICAgIHsiZ3JfcGFzc3dkIiwgInBhc3N3b3JkIn0sCkBAIC03NiwxNCArODIsMjUgQEAKICAgICByZXR1cm4gdjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdyZ2lkCisKKyAgICBpZDogb2JqZWN0CisKK1JldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELgorCitJZiBpZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcHlvX2lkKQorZ3JwX2dldGdyZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThhMTFmNWZkZWI4Yzc4YTAgaW5wdXQ9MTVmYTBlMmNjZjVjZGEyNV0qLwogewogICAgIFB5T2JqZWN0ICpweV9pbnRfaWQ7CiAgICAgZ2lkX3QgZ2lkOwogICAgIHN0cnVjdCBncm91cCAqcDsKIAotICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcocHlvX2lkKTsKKyAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKICAgICBpZiAoIXB5X2ludF9pZCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgewpAQCAtMTAzLDIyICsxMjAsMzEgQEAKICAgICByZXR1cm4gbWtncmVudChwKTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWdycF9nZXRncm5hbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBzdHJ1Y3QgZ3JvdXAgKnA7Ci0gICAgUHlPYmplY3QgKmFyZywgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKy8qW2NsaW5pYyBpbnB1dF0KK2dycC5nZXRncm5hbQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldGdybmFtIiwgJmFyZykpCisgICAgbmFtZTogdW5pY29kZQorCitSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gZ3JvdXAgbmFtZS4KKworSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorZ3JwX2dldGdybmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2Q0NzUxMWY0ODU0ZGE4ZSBpbnB1dD0wOGRlZDI5YWZmYTNjODYzXSovCit7CisgICAgY2hhciAqbmFtZV9jaGFyczsKKyAgICBzdHJ1Y3QgZ3JvdXAgKnA7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICgoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KG5hbWUpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKKyAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lX2NoYXJzLCBOVUxMKSA9PSAtMSkKICAgICAgICAgZ290byBvdXQ7CiAKLSAgICBpZiAoKHAgPSBnZXRncm5hbShuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJnZXRncm5hbSgpOiBuYW1lIG5vdCBmb3VuZDogJXMiLCBuYW1lKTsKKyAgICBpZiAoKHAgPSBnZXRncm5hbShuYW1lX2NoYXJzKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJnZXRncm5hbSgpOiBuYW1lIG5vdCBmb3VuZDogJXMiLCBuYW1lX2NoYXJzKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIHJldHZhbCA9IG1rZ3JlbnQocCk7CkBAIC0xMjcsOCArMTUzLDE4IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorLypbY2xpbmljIGlucHV0XQorZ3JwLmdldGdyYWxsCisKK1JldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBncm91cCBlbnRyaWVzLCBpbiBhcmJpdHJhcnkgb3JkZXIuCisKK0FuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggJysnIG9yICctJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uCit0byB1c2UgWVAvTklTIGFuZCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGdldGdybmFtIG9yIGdldGdyZ2lkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyYWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaWdub3JlKQorZ3JwX2dldGdyYWxsX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZGQ5MDM3YTIwYzIwMmRlIGlucHV0PWQ3ZGY3NmM4MjVjMzY3ZGZdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKICAgICBzdHJ1Y3QgZ3JvdXAgKnA7CkBAIC0xNTEsMjAgKzE4NywxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZ3JwX21ldGhvZHNbXSA9IHsKLSAgICB7ImdldGdyZ2lkIiwgICAgICAgIGdycF9nZXRncmdpZCwgICBNRVRIX08sCi0gICAgICJnZXRncmdpZChpZCkgLT4gKGdyX25hbWUsZ3JfcGFzc3dkLGdyX2dpZCxncl9tZW0pXG5cCi1SZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyBncm91cCBJRC4gIElmXG5cCi1pZCBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiJ9LAotICAgIHsiZ2V0Z3JuYW0iLCAgICAgICAgZ3JwX2dldGdybmFtLCAgIE1FVEhfVkFSQVJHUywKLSAgICAgImdldGdybmFtKG5hbWUpIC0+IChncl9uYW1lLGdyX3Bhc3N3ZCxncl9naWQsZ3JfbWVtKVxuXAotUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIGdyb3VwIG5hbWUuICBJZlxuXAotbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiJ9LAotICAgIHsiZ2V0Z3JhbGwiLCAgICAgICAgZ3JwX2dldGdyYWxsLCAgIE1FVEhfTk9BUkdTLAotICAgICAiZ2V0Z3JhbGwoKSAtPiBsaXN0IG9mIHR1cGxlc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGdyb3VwIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci5cblwKLUFuIGVudHJ5IHdob3NlIG5hbWUgc3RhcnRzIHdpdGggJysnIG9yICctJyByZXByZXNlbnRzIGFuIGluc3RydWN0aW9uXG5cCi10byB1c2UgWVAvTklTIGFuZCBtYXkgbm90IGJlIGFjY2Vzc2libGUgdmlhIGdldGdybmFtIG9yIGdldGdyZ2lkLiJ9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgR1JQX0dFVEdSR0lEX01FVEhPRERFRgorICAgIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYKKyAgICBHUlBfR0VUR1JBTExfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9CiB9OwogCiBQeURvY19TVFJWQVIoZ3JwX19kb2NfXywKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IDQ2OTNmYmMuLjE2YWMyZmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMzg4NCw3ICszODg0LDcgQEAKIAogZmFzdF9tb2RlOiAgd2hlbiBjbnQgYW4gaW50ZWdlciA8IFBZX1NTSVpFX1RfTUFYIGFuZCBubyBzdGVwIGlzIHNwZWNpZmllZC4KIAotICAgIGFzc2VydChjbnQgIT0gUFlfU1NJWkVfVF9NQVggJiYgbG9uZ19jbnQgPT0gTlVMTCAmJiBsb25nX3N0ZXA9PVB5SW50KDEpKTsKKyAgICBhc3NlcnQoY250ICE9IFBZX1NTSVpFX1RfTUFYICYmIGxvbmdfY250ID09IE5VTEwgJiYgbG9uZ19zdGVwPT1QeUxvbmcoMSkpOwogICAgIEFkdmFuY2VzIHdpdGg6ICBjbnQgKz0gMQogICAgIFdoZW4gY291bnQgaGl0cyBZX1NTSVpFX1RfTUFYLCBzd2l0Y2ggdG8gc2xvd19tb2RlLgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2xkX3NvX2FpeC5pbiBiL01vZHVsZXMvbGRfc29fYWl4LmluCmluZGV4IDg2YTlmN2UuLjk2MTUzMmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbGRfc29fYWl4LmluCisrKyBiL01vZHVsZXMvbGRfc29fYWl4LmluCkBAIC01LDcgKzUsNyBAQAogIyAgIFRZUEU6ICAgICAgICAgICBleGVjdXRhYmxlLCB1c2VzIG1ha2V4cF9haXgKICMgICBTWVNURU06ICAgICAgICAgQUlYCiAjCi0jICAgREVTQ1JJUFRJT046ICAgIENyZWF0ZXMgYSBzaGFyZWFibGUgLm8gZnJvbSBhIHNldCBvZiBwcmUtY29tcGlsZWQgCisjICAgREVTQ1JJUFRJT046ICAgIENyZWF0ZXMgYSBzaGFyZWFibGUgLm8gZnJvbSBhIHNldCBvZiBwcmUtY29tcGlsZWQKICMgICAgICAgICAgICAgICAgICAgKHVuc2hhcmVkKSAubyBmaWxlcwogIwogIyAgIFVTQUdFOiAgICAgICAgICBsZF9zb19haXggW0NDXSBbYXJndW1lbnRzXQpAQCAtNDYsNyArNDYsNyBAQAogIyAgICAgICAgICAgICAgICAgICA0LiAgVW5jb21tZW50aW5nIHRoZSAiZWNobyIgbGluZXMgZ2l2ZXMgZGV0YWlsZWQgb3V0cHV0CiAjICAgICAgICAgICAgICAgICAgICAgICBhYm91dCB0aGUgY29tbWFuZHMgZXhlY3V0ZWQgaW4gdGhlIHNjcmlwdC4KICMKLSMgICAgICAgICAgICAgICAgICAgICAgIAorIwogIyAgIEhJU1RPUlk6ICAgICAgICBPY3QtMTk5NiAgICAtLSBTdXBwb3J0IGFkZGVkIGZvciBtdWx0aXBsZSAubyBmaWxlcyAtLQogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBhbmQgb3B0aW9uYWwgYXJndW1lbnRzIHByb2Nlc3NpbmcuICAtLQogIyAgICAgICAgICAgICAgICAgICBDaHJpcyBNeWVycyAobXllcnNAdGMuY29ybmVsbC5lZHUpLCBLZWl0aCBLd29rCkBAIC0xMzIsNyArMTMyLDcgQEAKIGRvbmUKIAogaWYgdGVzdCAiJG9iamZpbGUiID0gImxpYnB5dGhvbkBWRVJTSU9OQEBBQklGTEFHU0Auc28iOyB0aGVuCi0gIGxkc29jb3JlbW9kZT0idHJ1ZSIgCisgIGxkc29jb3JlbW9kZT0idHJ1ZSIKIGZpCiAKIGlmIHRlc3QgLXogIiRvYmpzIjsgdGhlbgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWluLmMgYi9Nb2R1bGVzL21haW4uYwppbmRleCA4N2EyMWQ3Li4yYTllYTI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21haW4uYworKysgYi9Nb2R1bGVzL21haW4uYwpAQCAtOSw3ICs5LDYgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaWZkZWYgSEFWRV9GQ05UTF9ICiAjaW5jbHVkZSA8ZmNudGwuaD4KLSNkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgogI2VuZGlmCiAjZW5kaWYKIApAQCAtMzQzLDYgKzM0Miw4IEBACiAgICAgaW50IHZlcnNpb24gPSAwOwogICAgIGludCBzYXdfdW5idWZmZXJlZF9mbGFnID0gMDsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CisgICAgUHlPYmplY3QgKndhcm5pbmdfb3B0aW9uID0gTlVMTDsKKyAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb25zID0gTlVMTDsKIAogICAgIGNmLmNmX2ZsYWdzID0gMDsKIApAQCAtNDY1LDcgKzQ2NiwxNSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnVyc6Ci0gICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uKF9QeU9TX29wdGFyZyk7CisgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb25zID09IE5VTEwpCisgICAgICAgICAgICAgICAgd2FybmluZ19vcHRpb25zID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7CisgICAgICAgICAgICB3YXJuaW5nX29wdGlvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoX1B5T1Nfb3B0YXJnLCAtMSk7CisgICAgICAgICAgICBpZiAod2FybmluZ19vcHRpb24gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7CisgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHdhcm5pbmdfb3B0aW9ucywgd2FybmluZ19vcHRpb24pOworICAgICAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdfb3B0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ1gnOgpAQCAtNTExLDE2ICs1MjAsMTYgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcgJiYgKHdwID0gX3dnZXRlbnYoTCJQWVRIT05XQVJOSU5HUyIpKSAmJgogICAgICAgICAqd3AgIT0gTCdcMCcpIHsKLSAgICAgICAgd2NoYXJfdCAqYnVmLCAqd2FybmluZzsKKyAgICAgICAgd2NoYXJfdCAqYnVmLCAqd2FybmluZywgKmNvbnRleHQgPSBOVUxMOwogCiAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fUmF3TWFsbG9jKCh3Y3NsZW4od3ApICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9OV0FSTklOR1MiKTsKICAgICAgICAgd2NzY3B5KGJ1Ziwgd3ApOwotICAgICAgICBmb3IgKHdhcm5pbmcgPSB3Y3N0b2soYnVmLCBMIiwiKTsKKyAgICAgICAgZm9yICh3YXJuaW5nID0gd2NzdG9rX3MoYnVmLCBMIiwiLCAmY29udGV4dCk7CiAgICAgICAgICAgICAgd2FybmluZyAhPSBOVUxMOwotICAgICAgICAgICAgIHdhcm5pbmcgPSB3Y3N0b2soTlVMTCwgTCIsIikpIHsKKyAgICAgICAgICAgICB3YXJuaW5nID0gd2NzdG9rX3MoTlVMTCwgTCIsIiwgJmNvbnRleHQpKSB7CiAgICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uKHdhcm5pbmcpOwogICAgICAgICB9CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKQEAgLTU1OSw2ICs1NjgsMTIgQEAKICAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgIH0KICNlbmRpZgorICAgIGlmICh3YXJuaW5nX29wdGlvbnMgIT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeUxpc3RfR0VUX1NJWkUod2FybmluZ19vcHRpb25zKTsgaSsrKSB7CisgICAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZShQeUxpc3RfR0VUX0lURU0od2FybmluZ19vcHRpb25zLCBpKSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoY29tbWFuZCA9PSBOVUxMICYmIG1vZHVsZSA9PSBOVUxMICYmIF9QeU9TX29wdGluZCA8IGFyZ2MgJiYKICAgICAgICAgd2NzY21wKGFyZ3ZbX1B5T1Nfb3B0aW5kXSwgTCItIikgIT0gMCkKQEAgLTYzMSw3ICs2NDYsNyBAQAogICAgICAgICAgICAgLyogVXNlZCBieSBNYWMvVG9vbHMvcHl0aG9udy5jIHRvIGZvcndhcmQKICAgICAgICAgICAgICAqIHRoZSBhcmd2MCBvZiB0aGUgc3R1YiBleGVjdXRhYmxlCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHdjaGFyX3QqIHdidWYgPSBfUHlfY2hhcjJ3Y2hhcihweXZlbnZfbGF1bmNoZXIsIE5VTEwpOworICAgICAgICAgICAgd2NoYXJfdCogd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShweXZlbnZfbGF1bmNoZXIsIE5VTEwpOwogCiAgICAgICAgICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGRlY29kZSBfX1BZVkVOVl9MQVVOQ0hFUl9fIik7CkBAIC02NTIsNiArNjY3LDcgQEAKICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKICNlbmRpZgogICAgIFB5X0luaXRpYWxpemUoKTsKKyAgICBQeV9YREVDUkVGKHdhcm5pbmdfb3B0aW9ucyk7CiAKICAgICBpZiAoIVB5X1F1aWV0RmxhZyAmJiAoUHlfVmVyYm9zZUZsYWcgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIChjb21tYW5kID09IE5VTEwgJiYgZmlsZW5hbWUgPT0gTlVMTCAmJgpAQCAtNzEzLDcgKzcyOSw3IEBACiAgICAgICAgICAgICAgICAgY2hhciAqY2ZpbGVuYW1lX2J1ZmZlcjsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjZmlsZW5hbWU7CiAgICAgICAgICAgICAgICAgaW50IGVyciA9IGVycm5vOwotICAgICAgICAgICAgICAgIGNmaWxlbmFtZV9idWZmZXIgPSBfUHlfd2NoYXIyY2hhcihmaWxlbmFtZSwgTlVMTCk7CisgICAgICAgICAgICAgICAgY2ZpbGVuYW1lX2J1ZmZlciA9IFB5X0VuY29kZUxvY2FsZShmaWxlbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKGNmaWxlbmFtZV9idWZmZXIgIT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgY2ZpbGVuYW1lID0gY2ZpbGVuYW1lX2J1ZmZlcjsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC03MzYsMTEgKzc1MiwxMiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvKiBYWFg6IGRvZXMgdGhpcyB3b3JrIG9uIFdpbi9XaW42ND8gKHNlZSBwb3NpeF9mc3RhdCkgKi8KLSAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzYjsKLSAgICAgICAgICAgICAgICBpZiAoZnN0YXQoZmlsZW5vKGZwKSwgJnNiKSA9PSAwICYmCisgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzYjsKKyAgICAgICAgICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UoZmlsZW5vKGZwKSwgJnNiKSA9PSAwICYmCiAgICAgICAgICAgICAgICAgICAgIFNfSVNESVIoc2Iuc3RfbW9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlbHM6ICclbHMnIGlzIGEgZGlyZWN0b3J5LCBjYW5ub3QgY29udGludWVcbiIsIGFyZ3ZbMF0sIGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVsczogJyVscycgaXMgYSBkaXJlY3RvcnksIGNhbm5vdCBjb250aW51ZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2WzBdLCBmaWxlbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFrZXNldHVwIGIvTW9kdWxlcy9tYWtlc2V0dXAKaW5kZXggOGI1Y2MyOC4uOTBkYjQyZSAxMDA3NTUKLS0tIGEvTW9kdWxlcy9tYWtlc2V0dXAKKysrIGIvTW9kdWxlcy9tYWtlc2V0dXAKQEAgLTI2Niw3ICsyNjYsNyBAQAogCSopICBzZWQgLWUgIgogCQkxaSROTC8qIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gJGNvbmZpZyBieSBtYWtlc2V0dXAuICovCiAJCS9NQVJLRVIgMS9pJE5MJEVYVERFQ0xTCi0gCisKIAkJL01BUktFUiAyL2kkTkwkSU5JVEJJVFMKIAogCQkiICRjb25maWcgPmNvbmZpZy5jCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IDI0M2UyYTMuLjkzNTllYjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC0yMjMsNiArMjIzLDM1IEBACiAgICAgcmV0dXJuIG51bS9kZW47CiB9CiAKKy8qIENvbnN0YW50IGZvciAraW5maW5pdHksIGdlbmVyYXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZmxvYXQoJ2luZicpLiAqLworCitzdGF0aWMgZG91YmxlCittX2luZih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eSgwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X0hVR0VfVkFMOworI2VuZGlmCit9CisKKy8qIENvbnN0YW50IG5hbiB2YWx1ZSwgZ2VuZXJhdGVkIGluIHRoZSBzYW1lIHdheSBhcyBmbG9hdCgnbmFuJykuICovCisvKiBXZSBkb24ndCBjdXJyZW50bHkgYXNzdW1lIHRoYXQgUHlfTkFOIGlzIGRlZmluZWQgZXZlcnl3aGVyZS4gKi8KKworI2lmICFkZWZpbmVkKFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIpIHx8IGRlZmluZWQoUHlfTkFOKQorCitzdGF0aWMgZG91YmxlCittX25hbih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9OQU47CisjZW5kaWYKK30KKworI2VuZGlmCisKIHN0YXRpYyBkb3VibGUKIG1fdGdhbW1hKGRvdWJsZSB4KQogewpAQCAtNjU2LDYgKzY4NSwzMyBAQAogfQogCiAKK3N0YXRpYyBQeU9iamVjdCAqCittYXRoX2djZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmEsICpiLCAqZzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086Z2NkIiwgJmEsICZiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhID0gUHlOdW1iZXJfSW5kZXgoYSk7CisgICAgaWYgKGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYiA9IFB5TnVtYmVyX0luZGV4KGIpOworICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZyA9IF9QeUxvbmdfR0NEKGEsIGIpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgcmV0dXJuIGc7Cit9CisKK1B5RG9jX1NUUlZBUihtYXRoX2djZF9kb2MsCisiZ2NkKHgsIHkpIC0+IGludFxuXAorZ3JlYXRlc3QgY29tbW9uIGRpdmlzb3Igb2YgeCBhbmQgeSIpOworCisKIC8qIENhbGwgaXNfZXJyb3Igd2hlbiBlcnJubyAhPSAwLCBhbmQgd2hlcmUgeCBpcyB0aGUgcmVzdWx0IGxpYm0KICAqIHJldHVybmVkLiAgaXNfZXJyb3Igd2lsbCB1c3VhbGx5IHNldCB1cCBhbiBleGNlcHRpb24gYW5kIHJldHVybgogICogdHJ1ZSAoMSksIGJ1dCBtYXkgcmV0dXJuIGZhbHNlICgwKSB3aXRob3V0IHNldHRpbmcgdXAgYW4gZXhjZXB0aW9uLgpAQCAtMTAxMCw3ICsxMDY2LDcgQEAKICAgICBQeV9zc2l6ZV90IG0gPSAqbV9wdHI7CiAKICAgICBtICs9IG07ICAvKiBkb3VibGUgKi8KLSAgICBpZiAobiA8IG0gJiYgbSA8IChQWV9TU0laRV9UX01BWCAvIHNpemVvZihkb3VibGUpKSkgeworICAgIGlmIChuIDwgbSAmJiAoc2l6ZV90KW0gPCAoKHNpemVfdClQWV9TU0laRV9UX01BWCAvIHNpemVvZihkb3VibGUpKSkgewogICAgICAgICBkb3VibGUgKnAgPSAqcF9wdHI7CiAgICAgICAgIGlmIChwID09IHBzKSB7CiAgICAgICAgICAgICB2ID0gUHlNZW1fTWFsbG9jKHNpemVvZihkb3VibGUpICogbSk7CkBAIC0xNDA4LDYgKzE0NjQsNyBAQAogbWF0aF9mYWN0b3JpYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgbG9uZyB4OworICAgIGludCBvdmVyZmxvdzsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqb2RkX3BhcnQsICp0d29fdmFsdWF0aW9uOwogCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2soYXJnKSkgewpAQCAtMTQyMSwxNSArMTQ3OCwyMiBAQAogICAgICAgICBseCA9IFB5TG9uZ19Gcm9tRG91YmxlKGR4KTsKICAgICAgICAgaWYgKGx4ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgeCA9IFB5TG9uZ19Bc0xvbmcobHgpOworICAgICAgICB4ID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KGx4LCAmb3ZlcmZsb3cpOwogICAgICAgICBQeV9ERUNSRUYobHgpOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHggPSBQeUxvbmdfQXNMb25nKGFyZyk7CisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coYXJnLCAmb3ZlcmZsb3cpOwogCi0gICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh4IDwgMCkgeworICAgIH0KKyAgICBlbHNlIGlmIChvdmVyZmxvdyA9PSAxKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgImZhY3RvcmlhbCgpIGFyZ3VtZW50IHNob3VsZCBub3QgZXhjZWVkICVsZCIsCisgICAgICAgICAgICAgICAgICAgICBMT05HX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChvdmVyZmxvdyA9PSAtMSB8fCB4IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmYWN0b3JpYWwoKSBub3QgZGVmaW5lZCBmb3IgbmVnYXRpdmUgdmFsdWVzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTkyNiw2ICsxOTkwLDgzIEBACiAiaXNpbmYoeCkgLT4gYm9vbFxuXG5cCiBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW5maW5pdHksIGFuZCBGYWxzZSBvdGhlcndpc2UuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCittYXRoX2lzY2xvc2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGRvdWJsZSBhLCBiOworICAgIGRvdWJsZSByZWxfdG9sID0gMWUtOTsKKyAgICBkb3VibGUgYWJzX3RvbCA9IDAuMDsKKyAgICBkb3VibGUgZGlmZiA9IDAuMDsKKyAgICBsb25nIHJlc3VsdCA9IDA7CisKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJkZHwkZGQ6aXNjbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHNhbml0eSBjaGVjayBvbiB0aGUgaW5wdXRzICovCisgICAgaWYgKHJlbF90b2wgPCAwLjAgfHwgYWJzX3RvbCA8IDAuMCApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidG9sZXJhbmNlcyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIGEgPT0gYiApIHsKKyAgICAgICAgLyogc2hvcnQgY2lyY3VpdCBleGFjdCBlcXVhbGl0eSAtLSBuZWVkZWQgdG8gY2F0Y2ggdHdvIGluZmluaXRpZXMgb2YKKyAgICAgICAgICAgdGhlIHNhbWUgc2lnbi4gQW5kIHBlcmhhcHMgc3BlZWRzIHRoaW5ncyB1cCBhIGJpdCBzb21ldGltZXMuCisgICAgICAgICovCisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKworICAgIC8qIFRoaXMgY2F0Y2hlcyB0aGUgY2FzZSBvZiB0d28gaW5maW5pdGllcyBvZiBvcHBvc2l0ZSBzaWduLCBvcgorICAgICAgIG9uZSBpbmZpbml0eSBhbmQgb25lIGZpbml0ZSBudW1iZXIuIFR3byBpbmZpbml0aWVzIG9mIG9wcG9zaXRlCisgICAgICAgc2lnbiB3b3VsZCBvdGhlcndpc2UgaGF2ZSBhbiBpbmZpbml0ZSByZWxhdGl2ZSB0b2xlcmFuY2UuCisgICAgICAgVHdvIGluZmluaXRpZXMgb2YgdGhlIHNhbWUgc2lnbiBhcmUgY2F1Z2h0IGJ5IHRoZSBlcXVhbGl0eSBjaGVjaworICAgICAgIGFib3ZlLgorICAgICovCisKKyAgICBpZiAoUHlfSVNfSU5GSU5JVFkoYSkgfHwgUHlfSVNfSU5GSU5JVFkoYikpIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKworICAgIC8qIG5vdyBkbyB0aGUgcmVndWxhciBjb21wdXRhdGlvbgorICAgICAgIHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlICJ3ZWFrIiB0ZXN0IGZyb20gdGhlIEJvb3N0IGxpYnJhcnkKKyAgICAqLworCisgICAgZGlmZiA9IGZhYnMoYiAtIGEpOworCisgICAgcmVzdWx0ID0gKCgoZGlmZiA8PSBmYWJzKHJlbF90b2wgKiBiKSkgfHwKKyAgICAgICAgICAgICAgIChkaWZmIDw9IGZhYnMocmVsX3RvbCAqIGEpKSkgfHwKKyAgICAgICAgICAgICAgKGRpZmYgPD0gYWJzX3RvbCkpOworCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitQeURvY19TVFJWQVIobWF0aF9pc2Nsb3NlX2RvYywKKyJpc19jbG9zZShhLCBiLCAqLCByZWxfdG9sPTFlLTA5LCBhYnNfdG9sPTAuMCkgLT4gYm9vbFxuIgorIlxuIgorIkRldGVybWluZSB3aGV0aGVyIHR3byBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFyZSBjbG9zZSBpbiB2YWx1ZS5cbiIKKyJcbiIKKyIgICByZWxfdG9sXG4iCisiICAgICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlbGF0aXZlIHRvIHRoZVxuIgorIiAgICAgICBtYWduaXR1ZGUgb2YgdGhlIGlucHV0IHZhbHVlc1xuIgorIiAgICBhYnNfdG9sXG4iCisiICAgICAgIG1heGltdW0gZGlmZmVyZW5jZSBmb3IgYmVpbmcgY29uc2lkZXJlZCBcImNsb3NlXCIsIHJlZ2FyZGxlc3Mgb2YgdGhlXG4iCisiICAgICAgIG1hZ25pdHVkZSBvZiB0aGUgaW5wdXQgdmFsdWVzXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgYSBpcyBjbG9zZSBpbiB2YWx1ZSB0byBiLCBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuIgorIlxuIgorIkZvciB0aGUgdmFsdWVzIHRvIGJlIGNvbnNpZGVyZWQgY2xvc2UsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbVxuIgorIm11c3QgYmUgc21hbGxlciB0aGFuIGF0IGxlYXN0IG9uZSBvZiB0aGUgdG9sZXJhbmNlcy5cbiIKKyJcbiIKKyItaW5mLCBpbmYgYW5kIE5hTiBiZWhhdmUgc2ltaWxhcmx5IHRvIHRoZSBJRUVFIDc1NCBTdGFuZGFyZC4gIFRoYXRcbiIKKyJpcywgTmFOIGlzIG5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuICBpbmYgYW5kIC1pbmYgYXJlXG4iCisib25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgbWF0aF9tZXRob2RzW10gPSB7CiAgICAgeyJhY29zIiwgICAgICAgICAgICBtYXRoX2Fjb3MsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfYWNvc19kb2N9LAogICAgIHsiYWNvc2giLCAgICAgICAgICAgbWF0aF9hY29zaCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2Fjb3NoX2RvY30sCkBAIC0xOTUwLDcgKzIwOTEsMTAgQEAKICAgICB7ImZyZXhwIiwgICAgICAgICAgIG1hdGhfZnJleHAsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9mcmV4cF9kb2N9LAogICAgIHsiZnN1bSIsICAgICAgICAgICAgbWF0aF9mc3VtLCAgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2ZzdW1fZG9jfSwKICAgICB7ImdhbW1hIiwgICAgICAgICAgIG1hdGhfZ2FtbWEsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9nYW1tYV9kb2N9LAorICAgIHsiZ2NkIiwgICAgICAgICAgICAgbWF0aF9nY2QsICAgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX2djZF9kb2N9LAogICAgIHsiaHlwb3QiLCAgICAgICAgICAgbWF0aF9oeXBvdCwgICAgIE1FVEhfVkFSQVJHUywgICBtYXRoX2h5cG90X2RvY30sCisgICAgeyJpc2Nsb3NlIiwgKFB5Q0Z1bmN0aW9uKSBtYXRoX2lzY2xvc2UsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgbWF0aF9pc2Nsb3NlX2RvY30sCiAgICAgeyJpc2Zpbml0ZSIsICAgICAgICBtYXRoX2lzZmluaXRlLCAgTUVUSF9PLCAgICAgICAgIG1hdGhfaXNmaW5pdGVfZG9jfSwKICAgICB7ImlzaW5mIiwgICAgICAgICAgIG1hdGhfaXNpbmYsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9pc2luZl9kb2N9LAogICAgIHsiaXNuYW4iLCAgICAgICAgICAgbWF0aF9pc25hbiwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2lzbmFuX2RvY30sCkBAIC0yMDAxLDcgKzIxNDUsMTEgQEAKIAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAicGkiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9QSSkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX0UpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOworI2VuZGlmCiAKLSAgICBmaW5hbGx5OgorICBmaW5hbGx5OgogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tZDVtb2R1bGUuYyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKaW5kZXggNWNiM2QzNi4uYTllYmM4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tZDVtb2R1bGUuYworKysgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCkBAIC0xOCw3ICsxOCwxMyBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiaGFzaGxpYi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfbWQ1CitjbGFzcyBNRDVUeXBlICJNRDVvYmplY3QgKiIgIiZQeVR5cGVfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZlNTI2MTcxOTk1N2E5MTJdKi8KIAogLyogU29tZSB1c2VmdWwgdHlwZXMgKi8KIApAQCAtNDgsNiArNTQsNyBAQAogICAgIHN0cnVjdCBtZDVfc3RhdGUgaGFzaF9zdGF0ZTsKIH0gTUQ1b2JqZWN0OwogCisjaW5jbHVkZSAiY2xpbmljL21kNW1vZHVsZS5jLmgiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKQEAgLTMzMiwzMCArMzM5LDM0IEBACiAKIC8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KIAotUHlEb2NfU1RSVkFSKE1ENV9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorTUQ1VHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotTUQ1X2NvcHkoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorTUQ1VHlwZV9jb3B5X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU5NmViMzY4NTJmMDIwNzEgaW5wdXQ9MmMwOWU2ZDI0OTNmMzA3OV0qLwogewogICAgIE1ENW9iamVjdCAqbmV3b2JqOwogCi0gICAgaWYgKFB5X1RZUEUoc2VsZikgPT0gJk1ENXR5cGUpIHsKLSAgICAgICAgaWYgKCAobmV3b2JqID0gbmV3TUQ1b2JqZWN0KCkpPT1OVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCAobmV3b2JqID0gbmV3TUQ1b2JqZWN0KCkpPT1OVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICgobmV3b2JqID0gbmV3TUQ1b2JqZWN0KCkpPT1OVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG5ld29iai0+aGFzaF9zdGF0ZSA9IHNlbGYtPmhhc2hfc3RhdGU7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKIH0KIAotUHlEb2NfU1RSVkFSKE1ENV9kaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorTUQ1VHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK01ENVR5cGVfZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViNjkxZGM0MTkwYTA3ZWMgaW5wdXQ9N2I5NmU2NTM4OTQxMmEzNF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3QgbWQ1X3N0YXRlIHRlbXA7CkBAIC0zNjUsNTQgKzM3Niw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBNRDVfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihNRDVfaGV4ZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1NRDVfaGV4ZGlnZXN0KE1ENW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK01ENVR5cGVfaGV4ZGlnZXN0X2ltcGwoTUQ1b2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE3YmFkY2VkMWYzYWM5MzIgaW5wdXQ9YjYwYjE5ZGU2NDQ3OThkZF0qLwogewogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3QgbWQ1X3N0YXRlIHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgdGVtcCA9IHNlbGYtPmhhc2hfc3RhdGU7CiAgICAgbWQ1X2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKLSAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhNRDVfRElHRVNUU0laRSAqIDIsIDEyNyk7Ci0gICAgaWYgKCFyZXR2YWwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmV0dmFsKTsKLQotICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwotICAgIGZvcihpPWo9MDsgaTxNRDVfRElHRVNUU0laRTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIqKWRpZ2VzdCwgTUQ1X0RJR0VTVFNJWkUpOwogfQogCi1QeURvY19TVFJWQVIoTUQ1X3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitNRDVUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotTUQ1X3VwZGF0ZShNRDVvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorTUQ1VHlwZV91cGRhdGUoTUQ1b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY2YWQxNjg0MTYzMzg0MjMgaW5wdXQ9NmUxZWZjZDllY2YxNzAzMl0qLwogewotICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1cGRhdGUiLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CiAKICAgICBtZDVfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CkBAIC00MjMsMTAgKzQyMSwxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgTUQ1X21ldGhvZHNbXSA9IHsKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilNRDVfY29weSwgICAgICBNRVRIX05PQVJHUywgIE1ENV9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pTUQ1X2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsICBNRDVfZGlnZXN0X19kb2NfX30sCi0gICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pTUQ1X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsICBNRDVfaGV4ZGlnZXN0X19kb2NfX30sCi0gICAgeyJ1cGRhdGUiLCAgICAoUHlDRnVuY3Rpb24pTUQ1X3VwZGF0ZSwgICAgTUVUSF9WQVJBUkdTLCBNRDVfdXBkYXRlX19kb2NfX30sCisgICAgTUQ1VFlQRV9DT1BZX01FVEhPRERFRgorICAgIE1ENVRZUEVfRElHRVNUX01FVEhPRERFRgorICAgIE1ENVRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIE1ENVRZUEVfVVBEQVRFX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNTAyLDI3ICs1MDAsMjYgQEAKIAogLyogVGhlIHNpbmdsZSBtb2R1bGUtbGV2ZWwgZnVuY3Rpb246IG5ldygpICovCiAKLVB5RG9jX1NUUlZBUihNRDVfbmV3X19kb2NfXywKLSJSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitfbWQ1Lm1kNQorCisgICAgc3RyaW5nOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKKworUmV0dXJuIGEgbmV3IE1ENSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotTUQ1X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfbWQ1X21kNV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzUyNzQzNmEyMDkwYjk1NiBpbnB1dD1kMTJlZjhmNzJkNjg0ZjdiXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBNRDVvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3TUQ1b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTMxLDExICs1MjgsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBtZDVfcHJvY2VzcygmbmV3LT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC01NDcsNyArNTQ0LDcgQEAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgTUQ1X2Z1bmN0aW9uc1tdID0gewotICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKU1ENV9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBNRDVfbmV3X19kb2NfX30sCisgICAgX01ENV9NRDVfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCBhMGNjZWViLi5kYWFiNTJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtMzAxLDE2ICszMDEsMTcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gc2VsZi0+cG9zOwogICAgIFB5X3NzaXplX3QgZW5kID0gc2VsZi0+c2l6ZTsKLSAgICBjb25zdCBjaGFyICpuZWVkbGU7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfYnVmZmVyIHZpZXc7CiAKICAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgcmV2ZXJzZSA/ICJ5I3xubjpyZmluZCIgOiAieSN8bm46ZmluZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuZWVkbGUsICZsZW4sICZzdGFydCwgJmVuZCkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgcmV2ZXJzZSA/ICJ5KnxubjpyZmluZCIgOiAieSp8bm46ZmluZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCAmc3RhcnQsICZlbmQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKnAsICpzdGFydF9wLCAqZW5kX3A7CiAgICAgICAgIGludCBzaWduID0gcmV2ZXJzZSA/IC0xIDogMTsKKyAgICAgICAgY29uc3QgY2hhciAqbmVlZGxlID0gdmlldy5idWY7CisgICAgICAgIFB5X3NzaXplX3QgbGVuID0gdmlldy5sZW47CiAKICAgICAgICAgaWYgKHN0YXJ0IDwgMCkKICAgICAgICAgICAgIHN0YXJ0ICs9IHNlbGYtPnNpemU7CkBAIC0zMzUsOSArMzM2LDExIEBACiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuICYmIG5lZWRsZVtpXSA9PSBwW2ldOyArK2kpCiAgICAgICAgICAgICAgICAgLyogbm90aGluZyAqLzsKICAgICAgICAgICAgIGlmIChpID09IGxlbikgeworICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocCAtIHNlbGYtPmRhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKC0xKTsKICAgICB9CiB9CkBAIC0zODUsMjIgKzM4OCwyNSBAQAogbW1hcF93cml0ZV9tZXRob2QobW1hcF9vYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBjaGFyICpkYXRhOworICAgIFB5X2J1ZmZlciBkYXRhOwogCiAgICAgQ0hFQ0tfVkFMSUQoTlVMTCk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZkYXRhLCAmbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOndyaXRlIiwgJmRhdGEpKQogICAgICAgICByZXR1cm4oTlVMTCk7CiAKLSAgICBpZiAoIWlzX3dyaXRhYmxlKHNlbGYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICgoc2VsZi0+cG9zICsgbGVuZ3RoKSA+IHNlbGYtPnNpemUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJkYXRhIG91dCBvZiByYW5nZSIpOworICAgIGlmICghaXNfd3JpdGFibGUoc2VsZikpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1jcHkoc2VsZi0+ZGF0YStzZWxmLT5wb3MsIGRhdGEsIGxlbmd0aCk7Ci0gICAgc2VsZi0+cG9zID0gc2VsZi0+cG9zK2xlbmd0aDsKKworICAgIGlmICgoc2VsZi0+cG9zICsgZGF0YS5sZW4pID4gc2VsZi0+c2l6ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImRhdGEgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbWVtY3B5KHNlbGYtPmRhdGEgKyBzZWxmLT5wb3MsIGRhdGEuYnVmLCBkYXRhLmxlbik7CisgICAgc2VsZi0+cG9zID0gc2VsZi0+cG9zICsgZGF0YS5sZW47CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtNDU5LDE1ICs0NjUsMTMgQEAKIAogI2lmZGVmIFVOSVgKICAgICB7Ci0gICAgICAgIHN0cnVjdCBzdGF0IGJ1ZjsKLSAgICAgICAgaWYgKC0xID09IGZzdGF0KHNlbGYtPmZkLCAmYnVmKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKKyAgICAgICAgaWYgKF9QeV9mc3RhdChzZWxmLT5mZCwgJnN0YXR1cykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoYnVmLnN0X3NpemUpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhzdGF0dXMuc3Rfc2l6ZSk7CiAjZWxzZQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGJ1Zi5zdF9zaXplKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzdGF0dXMuc3Rfc2l6ZSk7CiAjZW5kaWYKICAgICB9CiAjZW5kaWYgLyogVU5JWCAqLwpAQCAtMTEwNiw5ICsxMTEwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBuZXdfbW1hcF9vYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZGljdCkKIHsKLSNpZmRlZiBIQVZFX0ZTVEFUCi0gICAgc3RydWN0IHN0YXQgc3Q7Ci0jZW5kaWYKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKICAgICBtbWFwX29iamVjdCAqbV9vYmo7CiAgICAgUHlPYmplY3QgKm1hcF9zaXplX29iaiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBtYXBfc2l6ZTsKQEAgLTExNzMsMzIgKzExNzUsMzEgQEAKICAgICBpZiAoZmQgIT0gLTEpCiAgICAgICAgICh2b2lkKWZjbnRsKGZkLCBGX0ZVTExGU1lOQyk7CiAjZW5kaWYKLSNpZmRlZiBIQVZFX0ZTVEFUCi0gICAgaWYgKGZkICE9IC0xICYmIGZzdGF0KGZkLCAmc3QpID09IDAgJiYgU19JU1JFRyhzdC5zdF9tb2RlKSkgeworICAgIGlmIChmZCAhPSAtMSAmJiBfUHlfZnN0YXRfbm9yYWlzZShmZCwgJnN0YXR1cykgPT0gMAorICAgICAgICAmJiBTX0lTUkVHKHN0YXR1cy5zdF9tb2RlKSkgewogICAgICAgICBpZiAobWFwX3NpemUgPT0gMCkgewotICAgICAgICAgICAgaWYgKHN0LnN0X3NpemUgPT0gMCkgeworICAgICAgICAgICAgaWYgKHN0YXR1cy5zdF9zaXplID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBtbWFwIGFuIGVtcHR5IGZpbGUiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBzdGF0dXMuc3Rfc2l6ZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW1hcCBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIGZpbGUgc2l6ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0LnN0X3NpemUgLSBvZmZzZXQgPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAgICAgaWYgKHN0YXR1cy5zdF9zaXplIC0gb2Zmc2V0ID4gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtbWFwIGxlbmd0aCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1hcF9zaXplID0gKFB5X3NzaXplX3QpIChzdC5zdF9zaXplIC0gb2Zmc2V0KTsKLSAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQgKyAoc2l6ZV90KW1hcF9zaXplID4gc3Quc3Rfc2l6ZSkgeworICAgICAgICAgICAgbWFwX3NpemUgPSAoUHlfc3NpemVfdCkgKHN0YXR1cy5zdF9zaXplIC0gb2Zmc2V0KTsKKyAgICAgICAgfSBlbHNlIGlmIChvZmZzZXQgKyBtYXBfc2l6ZSA+IHN0YXR1cy5zdF9zaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW1hcCBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIGZpbGUgc2l6ZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKICAgICBtX29iaiA9IChtbWFwX29iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChtX29iaiA9PSBOVUxMKSB7cmV0dXJuIE5VTEw7fQogICAgIG1fb2JqLT5kYXRhID0gTlVMTDsKQEAgLTEyMjEsNyArMTIyMiw2IEBACiAgICAgICAgIGZkID0gZGV2emVybyA9IF9QeV9vcGVuKCIvZGV2L3plcm8iLCBPX1JEV1IpOwogICAgICAgICBpZiAoZGV2emVybyA9PSAtMSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzMjUsMTEgKzEzMjUsMTMgQEAKICAgICAgKi8KICAgICBpZiAoZmlsZW5vICE9IC0xICYmIGZpbGVubyAhPSAwKSB7CiAgICAgICAgIC8qIEVuc3VyZSB0aGF0IGZpbGVubyBpcyB3aXRoaW4gdGhlIENSVCdzIHZhbGlkIHJhbmdlICovCi0gICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKSA9PSAwKSB7CisgICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZpbGVubykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICAgICAgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgIGlmIChmaD09KEhBTkRMRSktMSkgewogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCAwYWY0OTVmLi42NGViNWRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTQ1Niw4ICs0NTYsOCBAQAogICAgIE5VTEwKIH07CiAKLVB5T2JqZWN0KgotUHlJbml0X25pcyAodm9pZCkKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfbmlzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJm5pc21vZHVsZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggMmQwZGQwOS4uZDJmZDVjOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtMTksNiArMTksNyBAQAogICogJElkJAogICovCiAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCkBAIC01MSw4ICs1Miw4IEBACiAgICAgY2hhciAgICAqZGV2aWNlbmFtZTsgICAgICAgICAgICAgIC8qIG5hbWUgb2YgdGhlIGRldmljZSBmaWxlICovCiAgICAgaW50ICAgICAgZmQ7ICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbGUgZGVzY3JpcHRvciAqLwogICAgIGludCAgICAgIG1vZGU7ICAgICAgICAgICAgICAgICAgICAvKiBmaWxlIG1vZGUgKE9fUkRPTkxZLCBldGMuKSAqLwotICAgIGludCAgICAgIGljb3VudDsgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb3VudCAqLwotICAgIGludCAgICAgIG9jb3VudDsgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgY291bnQgKi8KKyAgICBQeV9zc2l6ZV90IGljb3VudDsgICAgICAgICAgICAgICAgLyogaW5wdXQgY291bnQgKi8KKyAgICBQeV9zc2l6ZV90IG9jb3VudDsgICAgICAgICAgICAgICAgLyogb3V0cHV0IGNvdW50ICovCiAgICAgdWludDMyX3QgYWZtdHM7ICAgICAgICAgICAgICAgICAgIC8qIGF1ZGlvIGZvcm1hdHMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlICovCiB9IG9zc19hdWRpb190OwogCkBAIC0xMTYsMTEgKzExNyw4IEBACiAgICAgICAgcHJvdmlkZXMgYSBzcGVjaWFsIGlvY3RsKCkgZm9yIG5vbi1ibG9ja2luZyByZWFkL3dyaXRlLCB3aGljaCBpcwogICAgICAgIGV4cG9zZWQgdmlhIG9zc19ub25ibG9jaygpIGJlbG93LiAqLwogICAgIGZkID0gX1B5X29wZW4oZGV2aWNlbmFtZSwgaW1vZGV8T19OT05CTE9DSyk7Ci0KLSAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIGRldmljZW5hbWUpOworICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgLyogQW5kICh0cnkgdG8pIHB1dCBpdCBiYWNrIGluIGJsb2NraW5nIG1vZGUgc28gd2UgZ2V0IHRoZQogICAgICAgIGV4cGVjdGVkIHdyaXRlKCkgc2VtYW50aWNzLiAqLwpAQCAtMTgwLDEwICsxNzgsOCBAQAogICAgIH0KIAogICAgIGZkID0gX1B5X29wZW4oZGV2aWNlbmFtZSwgT19SRFdSKTsKLSAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIGRldmljZW5hbWUpOworICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgaWYgKChzZWxmID0gUHlPYmplY3RfTmV3KG9zc19taXhlcl90LCAmT1NTTWl4ZXJUeXBlKSkgPT0gTlVMTCkgewogICAgICAgICBjbG9zZShmZCk7CkBAIC00MDQsMjkgKzQwMCwyNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19yZWFkKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgc2l6ZSwgY291bnQ7Ci0gICAgY2hhciAqY3A7CisgICAgUHlfc3NpemVfdCBzaXplLCBjb3VudDsKICAgICBQeU9iamVjdCAqcnY7CiAKICAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmc2l6ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOnJlYWQiLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcnYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwogICAgIGlmIChydiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBjb3VudCA9IHJlYWQoc2VsZi0+ZmQsIGNwLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGNvdW50IDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgY291bnQgPSBfUHlfcmVhZChzZWxmLT5mZCwgUHlCeXRlc19BU19TVFJJTkcocnYpLCBzaXplKTsKKyAgICBpZiAoY291bnQgPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKHJ2KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgc2VsZi0+aWNvdW50ICs9IGNvdW50OwogICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsIGNvdW50KTsKICAgICByZXR1cm4gcnY7CkBAIC00MzUsMzMgKzQyNywzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc193cml0ZShvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqY3A7Ci0gICAgaW50IHJ2LCBzaXplOworICAgIFB5X2J1ZmZlciBkYXRhOworICAgIFB5X3NzaXplX3QgcnY7CiAKICAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZkYXRhKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcnYgPSB3cml0ZShzZWxmLT5mZCwgY3AsIHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcnYgPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIGRhdGEuYnVmLCBkYXRhLmxlbik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChydiA9PSAtMSkgewotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHNlbGYtPm9jb3VudCArPSBydjsKLSAgICB9CisgICAgc2VsZi0+b2NvdW50ICs9IHJ2OwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocnYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3dyaXRlYWxsKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpjcDsKLSAgICBpbnQgcnYsIHNpemU7CisgICAgUHlfYnVmZmVyIGRhdGE7CisgICAgY29uc3QgY2hhciAqY3A7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgcnY7CiAgICAgZmRfc2V0IHdyaXRlX3NldF9mZHM7CiAgICAgaW50IHNlbGVjdF9ydjsKIApAQCAtNDc1LDQxICs0NjYsNTAgQEAKICAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6d3JpdGVhbGwiLCAmZGF0YSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFfUHlJc1NlbGVjdGFibGVfZmQoc2VsZi0+ZmQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgZGVzY3JpcHRvciBvdXQgb2YgcmFuZ2UgZm9yIHNlbGVjdCIpOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIHVzZSBzZWxlY3QgdG8gd2FpdCBmb3IgYXVkaW8gZGV2aWNlIHRvIGJlIGF2YWlsYWJsZSAqLwogICAgIEZEX1pFUk8oJndyaXRlX3NldF9mZHMpOwogICAgIEZEX1NFVChzZWxmLT5mZCwgJndyaXRlX3NldF9mZHMpOworICAgIGNwID0gKGNvbnN0IGNoYXIgKilkYXRhLmJ1ZjsKKyAgICBzaXplID0gZGF0YS5sZW47CiAKICAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBzZWxlY3RfcnYgPSBzZWxlY3Qoc2VsZi0+ZmQrMSwgTlVMTCwgJndyaXRlX3NldF9mZHMsIE5VTEwsIE5VTEwpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBhc3NlcnQoc2VsZWN0X3J2ICE9IDApOyAgICAgICAgIC8qIG5vIHRpbWVvdXQsIGNhbid0IGV4cGlyZSAqLwotICAgICAgICBpZiAoc2VsZWN0X3J2ID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJ2ID0gd3JpdGUoc2VsZi0+ZmQsIGNwLCBzaXplKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7Ci0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7ICAgICAgLyogYnVmZmVyIGlzIGZ1bGwsIHRyeSBhZ2FpbiAqLwotICAgICAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0gZWxzZSAgICAgICAgICAgICAgICAgICAgICAvKiBpdCdzIGEgcmVhbCBlcnJvciAqLwotICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogd3JvdGUgcnYgYnl0ZXMgKi8KLSAgICAgICAgICAgIHNlbGYtPm9jb3VudCArPSBydjsKLSAgICAgICAgICAgIHNpemUgLT0gcnY7Ci0gICAgICAgICAgICBjcCArPSBydjsKKyAgICAgICAgYXNzZXJ0KHNlbGVjdF9ydiAhPSAwKTsgICAvKiBubyB0aW1lb3V0LCBjYW4ndCBleHBpcmUgKi8KKyAgICAgICAgaWYgKHNlbGVjdF9ydiA9PSAtMSkgeworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICB9CisKKyAgICAgICAgcnYgPSBfUHlfd3JpdGUoc2VsZi0+ZmQsIGNwLCBQeV9NSU4oc2l6ZSwgSU5UX01BWCkpOworICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgICAgIC8qIGJ1ZmZlciBpcyBmdWxsLCB0cnkgYWdhaW4gKi8KKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogaXQncyBhIHJlYWwgZXJyb3IgKi8KKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiB3cm90ZSBydiBieXRlcyAqLworICAgICAgICBzZWxmLT5vY291bnQgKz0gcnY7CisgICAgICAgIHNpemUgLT0gcnY7CisgICAgICAgIGNwICs9IHJ2OwogICAgIH0KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwppbmRleCAzNmU5ODkzLi44MDIzNTU4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCisrKyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKQEAgLTIzLDYgKzIzLDExIEBACiAgKiAgdGhhdCBsaW50IGRldGVjdHMgYXJlIGdvbmUsIGJ1dCB0aGVyZSBhcmUgc3RpbGwgd2FybmluZ3Mgd2l0aAogICogIFB5X1tYXURFQ1JFRigpIGFuZCBQeV9bWF1JTkNSRUYoKSBtYWNyb3MuICBUaGUgbGludCBhbm5vdGF0aW9ucwogICogIGxvb2sgbGlrZSAiTk9URSguLi4pIi4KKyAqCisgKiAgVG8gZGVidWcgcGFyc2VyIGVycm9ycyBsaWtlCisgKiAgICAgICJwYXJzZXIuUGFyc2VyRXJyb3I6IEV4cGVjdGVkIG5vZGUgdHlwZSAxMiwgZ290IDMzMy4iCisgKiAgZGVjb2RlIHN5bWJvbCBudW1iZXJzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCBmaWxlcworICogIExpYi9zeW1ib2wuaCBhbmQgSW5jbHVkZS90b2tlbi5oLgogICovCiAKICNpbmNsdWRlICJQeXRob24uaCIgICAgICAgICAgICAgICAgICAgICAvKiBnZW5lcmFsIFB5dGhvbiBBUEkgICAgICAgICAgICAgKi8KQEAgLTEwMzYsNiArMTA0MSw4IEBACiBWQUxJREFURVIob3JfdGVzdCk7CiBWQUxJREFURVIodGVzdF9ub2NvbmQpOyAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmX25vY29uZCk7CiBWQUxJREFURVIoeWllbGRfYXJnKTsKK1ZBTElEQVRFUihhc3luY19mdW5jZGVmKTsgICAgICAgVkFMSURBVEVSKGFzeW5jX3N0bXQpOworVkFMSURBVEVSKGF0b21fZXhwcik7CiAKICN1bmRlZiBWQUxJREFURVIKIApAQCAtMTA4NywzMCArMTA5NCw1NiBAQAogICAgIHJldHVybiAocmVzKTsKIH0KIAotCi0vKiAgWCAoJywnIFgpIFsnLCddCi0gKi8KKy8qICBYICgnLCcgWCkgWycsJ10gKi8KIHN0YXRpYyBpbnQKLXZhbGlkYXRlX3JlcGVhdGluZ19saXN0KG5vZGUgKnRyZWUsIGludCBudHlwZSwgaW50ICgqdmZ1bmMpKG5vZGUgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBuYW1lKQordmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUobm9kZSAqdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKShub2RlICosIGludCAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKIHsKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIG50eXBlKQotICAgICAgICAgICAgICAgJiYgdmZ1bmMoQ0hJTEQodHJlZSwgMCkpKTsKKyAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwogCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBuYW1lKTsKKyAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCisgICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKKyAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChpc19ldmVuKG5jaCkpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCAtLW5jaCkpOwotICAgICAgICBpZiAocmVzICYmIG5jaCA+IDEpIHsKLSAgICAgICAgICAgIGludCBwb3MgPSAxOwotICAgICAgICAgICAgZm9yICggOyByZXMgJiYgcG9zIDwgbmNoOyBwb3MgKz0gMikKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmZ1bmMoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKKyAgICAgICAgZm9yICggOyByZXMgJiYgKnBvcyA8IG5jaDsgKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jaGlsZF9mdW5jX2luYyh0cmVlLCBwb3MpOworICAgICAgICAgICAgaWYgKCFyZXMgfHwgKnBvcyA+PSBuY2gpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCAoKnBvcykrKykpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKiAgWCAoJywnIFgpIFsnLCddICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdChub2RlICp0cmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuYykobm9kZSAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOworICAgIGludCBwb3MgPSAwOworCisgICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLworICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7ICkgeworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuYyhDSElMRCh0cmVlLCBwb3MrKykpOworICAgICAgICAgICAgaWYgKCFyZXMgfHwgcG9zID49IG5jaCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHBvcysrKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKIH0KIAogCkBAIC0xNTc3LDYgKzE2MTAsNyBAQAogICAgICAgICAgIHx8IChudHlwZSA9PSB0cnlfc3RtdCkKICAgICAgICAgICB8fCAobnR5cGUgPT0gd2l0aF9zdG10KQogICAgICAgICAgIHx8IChudHlwZSA9PSBmdW5jZGVmKQorICAgICAgICAgIHx8IChudHlwZSA9PSBhc3luY19zdG10KQogICAgICAgICAgIHx8IChudHlwZSA9PSBjbGFzc2RlZikKICAgICAgICAgICB8fCAobnR5cGUgPT0gZGVjb3JhdGVkKSkKICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZSh0cmVlKTsKQEAgLTI0MDksMjcgKzI0NDMsNjAgQEAKIAogLyogIHBvd2VyOgogICoKLSAqICBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgorICogIHBvd2VyOiBhdG9tX2V4cHIgdHJhaWxlciogWycqKicgZmFjdG9yXQogICovCiBzdGF0aWMgaW50CiB2YWxpZGF0ZV9wb3dlcihub2RlICp0cmVlKQogewotICAgIGludCBwb3MgPSAxOwogICAgIGludCBuY2ggPSBOQ0godHJlZSk7CiAgICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBwb3dlcikgJiYgKG5jaCA+PSAxKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCAwKSkpOworICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYXRvbV9leHByKENISUxEKHRyZWUsIDApKSk7CiAKLSAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90cmFpbGVyKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgaWYgKHJlcyAmJiAocG9zIDwgbmNoKSkgewotICAgICAgICBpZiAoIWlzX2V2ZW4obmNoIC0gcG9zKSkgeworICAgIGlmIChuY2ggPiAxKSB7CisgICAgICAgIGlmIChuY2ggIT0gMykgewogICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdwb3dlciciKTsKICAgICAgICAgICAgIHJldHVybiAoMCk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yICggOyByZXMgJiYgKHBvcyA8IChuY2ggLSAxKSk7IHBvcyArPSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKKyAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgMSkpCisgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMikpKTsKICAgICB9CisKKyAgICByZXR1cm4gKHJlcyk7Cit9CisKKworLyogIGF0b21fZXhwcjoKKyAqCisgKiAgYXRvbV9leHByOiBbQVdBSVRdIGF0b20gdHJhaWxlcioKKyAqLworc3RhdGljIGludAordmFsaWRhdGVfYXRvbV9leHByKG5vZGUgKnRyZWUpCit7CisgICAgaW50IHN0YXJ0ID0gMDsKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGludCByZXM7CisgICAgaW50IHBvczsKKworICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGF0b21fZXhwcikgJiYgKG5jaCA+PSAxKTsKKyAgICBpZiAoIXJlcykgeworICAgICAgICByZXR1cm4gKHJlcyk7CisgICAgfQorCisgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IEFXQUlUKSB7CisgICAgICAgIHN0YXJ0ID0gMTsKKyAgICAgICAgaWYgKG5jaCA8IDIpIHsKKyAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIG5vZGVzIGZvciAnYXRvbV9leHByJyIpOworICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlcyA9IHZhbGlkYXRlX2F0b20oQ0hJTEQodHJlZSwgc3RhcnQpKTsKKyAgICBpZiAocmVzKSB7CisgICAgICAgIHBvcyA9IHN0YXJ0ICsgMTsKKyAgICAgICAgd2hpbGUgKHJlcyAmJiAocG9zIDwgbmNoKSAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSB0cmFpbGVyKSkKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyYWlsZXIoQ0hJTEQodHJlZSwgcG9zKyspKTsKKyAgICB9CisKICAgICByZXR1cm4gKHJlcyk7CiB9CiAKQEAgLTI0OTMsMzkgKzI1NjAsMjggQEAKIAogCiAvKiAgdGVzdGxpc3RfY29tcDoKLSAqICAgIHRlc3QgKCBjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddICkKKyAqICAgICh0ZXN0fHN0YXJfZXhwcikgKCBjb21wX2ZvciB8ICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfdGVzdGxpc3RfY29tcChub2RlICp0cmVlKQogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gbmNoOworICAgIGludCBvazsKIAotICAgIGlmIChuY2ggPT0gMCkKKyAgICBpZiAobmNoID09IDApIHsKICAgICAgICAgZXJyX3N0cmluZygibWlzc2luZyBjaGlsZCBub2RlcyBvZiB0ZXN0bGlzdF9jb21wIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG9rID0gdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgMCkpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKgotICAgICAqICBjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddCi0gICAgICovCi0gICAgaWYgKG5jaCA9PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGNvbXBfZm9yKQotICAgICAgICBvayA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKTsKKyAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKKyAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOworICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogICgnLCcgdGVzdCkqIFsnLCddICAqLwotICAgICAgICBpbnQgaSA9IDE7Ci0gICAgICAgIHdoaWxlIChvayAmJiBuY2ggLSBpID49IDIpIHsKLSAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgaSsxKSkpOwotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChvayAmJiBpID09IG5jaC0xKQotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgIGVsc2UgaWYgKGkgIT0gbmNoKSB7Ci0gICAgICAgICAgICBvayA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIHRyYWlsaW5nIG5vZGVzIGZvciB0ZXN0bGlzdF9jb21wIik7Ci0gICAgICAgIH0KKyAgICAgICAgb2sgPSB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAorICAgICAgICAgICAgICAgIHRlc3RsaXN0X2NvbXAsCisgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCisgICAgICAgICAgICAgICAgInRlc3RsaXN0X2NvbXAiKTsKICAgICB9CiAgICAgcmV0dXJuIG9rOwogfQpAQCAtMjYzOCw2ICsyNjk0LDU1IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAorLyogYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZiAqLworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hc3luY19mdW5jZGVmKG5vZGUgKnRyZWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfZnVuY2RlZik7CisgICAgaWYgKHJlcykgeworICAgICAgICBpZiAobmNoID09IDIpIHsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpCisgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gMDsKKyAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBhc3luY19mdW5jZGVmIik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKworCisvKiBhc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KSAqLworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9hc3luY19zdG10KG5vZGUgKnRyZWUpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFzeW5jX3N0bXQpCisgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIEFTWU5DKSk7CisKKyAgICBpZiAobmNoICE9IDIpIHsKKyAgICAgICAgcmVzID0gMDsKKyAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX3N0bXQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZnVuY2RlZikgeworICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZnVuY2RlZihDSElMRCh0cmVlLCAxKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gd2l0aF9zdG10KSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aXRoX3N0bXQoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGZvcl9zdG10KSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mb3IoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlczsKK30KKworCiAKIC8qIGRlY29yYXRlZAogICogICBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpCkBAIC0yNzMyLDkgKzI4MzcsNiBAQAogICAgIH0KICAgICBvayA9IDE7CiAgICAgaWYgKG5jaC1pID4gMCkgewotICAgICAgICAvKgotICAgICAgICAgKiBhcmd1bWVudCB8ICcqJyB0ZXN0IFsnLCcgJyoqJyB0ZXN0XSB8ICcqKicgdGVzdAotICAgICAgICAgKi8KICAgICAgICAgaW50IHN5bSA9IFRZUEUoQ0hJTEQodHJlZSwgaSkpOwogCiAgICAgICAgIGlmIChzeW0gPT0gYXJndW1lbnQpIHsKQEAgLTI3NDUsMzAgKzI4NDcsNyBAQAogICAgICAgICAgICAgICAgIG9rID0gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzeW0gPT0gU1RBUikgewotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9zdGFyKENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgICAgIGlmIChvayAmJiAobmNoLWkgPT0gMikpCi0gICAgICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrMSkpOwotICAgICAgICAgICAgZWxzZSBpZiAob2sgJiYgKG5jaC1pID09IDUpKQotICAgICAgICAgICAgICAgIG9rID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSkKLSAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKzIpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgaSszKSkKLSAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrNCkpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgdXNlIG9mICcqJyBpbiBhcmdsaXN0Iik7Ci0gICAgICAgICAgICAgICAgb2sgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN5bSA9PSBET1VCTEVTVEFSKSB7Ci0gICAgICAgICAgICBpZiAobmNoLWkgPT0gMikKLSAgICAgICAgICAgICAgICBvayA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCB1c2Ugb2YgJyoqJyBpbiBhcmdsaXN0Iik7Ci0gICAgICAgICAgICAgICAgb2sgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgIGVsc2UgewogICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhcmdsaXN0IHNwZWNpZmljYXRpb24iKTsKICAgICAgICAgICAgIG9rID0gMDsKICAgICAgICAgfQpAQCAtMjc3OCw5ICsyODU3LDEwIEBACiAKIAogCi0vKiAgYXJndW1lbnQ6Ci0gKgotICogIFt0ZXN0ICc9J10gdGVzdCBbY29tcF9mb3JdCisvKiAgYXJndW1lbnQ6ICggdGVzdCBbY29tcF9mb3JdIHwKKyAqICAgICAgICAgICAgICB0ZXN0ICc9JyB0ZXN0IHwKKyAqICAgICAgICAgICAgICAnKionIHRlc3QgfAorICogICAgICAgICAgICAgICcqJyB0ZXN0ICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfYXJndW1lbnQobm9kZSAqdHJlZSkKQEAgLTI3ODgsMTQgKzI4NjgsMjcgQEAKICAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwogICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJndW1lbnQpCiAgICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gMykpKTsKLSAgICBpZiAocmVzKSAKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMikpKTsKIAorICAgIGlmIChyZXMpIHsKKyAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IERPVUJMRVNUQVIpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFNUQVIpIHsKKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuY2ggPT0gMikgeworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAyKSkpOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiAocmVzKTsKIH0KIApAQCAtMjk0OCwxMSArMzA0MSw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIsICJleHBybGlzdCIpKTsKIH0KIAorLyogSW5jcmVtZW50aW5nIHZhbGlkYXRlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbnplcm8gaWZmIHN1Y2Nlc3MgKGxpa2Ugb3RoZXIKKyAqIHZhbGlkYXRlIGZ1bmN0aW9ucywgYW5kIGFkdmFuY2UgKmkgYnkgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2hlZCBwYXR0ZXJuLiAqLworCisvKiB0ZXN0ICc6JyB0ZXN0ICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKK3sKKyAgICByZXR1cm4gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkKKyAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsICgqaSkrKykpCisgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpKTsKK30KKworLyogdGVzdCAnOicgdGVzdCB8ICcqKicgZXhwciAqLworc3RhdGljIGludAordmFsaWRhdGVfZGljdF9lbGVtZW50X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCit7CisgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKKyAgICBpbnQgcmVzID0gMDsKKyAgICBpZiAobmNoIC0gKmkgPj0gMikgeworICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAqaSsxKSkgPT0gQ09MT04pIHsKKyAgICAgICAgICAgIC8qIHRlc3QgJzonIHRlc3QgKi8KKyAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgaSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiAnKionIGV4cHIgKi8KKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsICgqaSkrKykpCisgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgKCppKSsrKSkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKIC8qCiAgKiAgZGljdG9yc2V0bWFrZXI6CiAgKgotICogICh0ZXN0ICc6JyB0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddKSkgfAotICogICh0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSkKKyAqICAgKCAoKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpCisgKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIGV4cHIpKSogWycsJ10pKSB8CisgKiAgICAgKCh0ZXN0IHwgJyonIHRlc3QpCisgKiAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgfCAnKicgdGVzdCkpKiBbJywnXSkpICkKICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfZGljdG9yc2V0bWFrZXIobm9kZSAqdHJlZSkKQEAgLTI5NjYsNjUgKzMwOTIsNDQgQEAKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAobmNoIC0gaSA8IDEpIHsKKyAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwogICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImRpY3RvcnNldG1ha2VyIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSk7Ci0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBDT0xPTikgeworICAgIGlmIChuY2ggLSBpID49IDIKKyAgICAgICAgJiYgKChUWVBFKENISUxEKHRyZWUsIGkrMSkpID09IENPTE9OKSB8fAorICAgICAgICAgICAgKFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IERPVUJMRVNUQVIpKSkgewogICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkgb3IgZGljdGlvbmFyeSBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGlmIChuY2ggLSBpID49IDEgJiYgVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgaWYgKG5jaCAtIGkgPj0gNCAmJiBUWVBFKENISUxEKHRyZWUsIGkrMykpID09IGNvbXBfZm9yKSB7CiAgICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKTsKKyAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKHRyZWUsICZpKQorICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7CiAgICAgICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIERpY3Rpb25hcnkgZGlzcGxheS4gKi8KLSAgICAgICAgICAgIHdoaWxlIChuY2ggLSBpID49IDQpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobmNoIC0gaSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3JlcGVhdGluZ19saXN0X3ZhcmlhYmxlKAorICAgICAgICAgICAgICAgICAgICB0cmVlLAorICAgICAgICAgICAgICAgICAgICBkaWN0b3JzZXRtYWtlciwKKyAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYywKKyAgICAgICAgICAgICAgICAgICAgJmksCisgICAgICAgICAgICAgICAgICAgICJkaWN0b3JzZXRtYWtlciIpOwogICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIC8qIFNldCBkaXNwbGF5IG9yIHNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICBpZiAobmNoIC0gaSA+PSAxICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IGNvbXBfZm9yKSB7CisgICAgICAgIGlmIChuY2ggLSBpID49IDIgJiYgVFlQRShDSElMRCh0cmVlLCBpICsgMSkpID09IGNvbXBfZm9yKSB7CiAgICAgICAgICAgICAvKiBTZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpOworICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKKyAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7CiAgICAgICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qIFNldCBkaXNwbGF5LiAqLwotICAgICAgICAgICAgd2hpbGUgKG5jaCAtIGkgPj0gMikgewotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobmNoIC0gaSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsrKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzA2OCw2ICszMTczLDEyIEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogIERlZmluaXRpb24gbm9kZXMuCiAgICAgICAgICAgICAgKi8KKyAgICAgICAgICBjYXNlIGFzeW5jX2Z1bmNkZWY6CisgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19mdW5jZGVmKHRyZWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBhc3luY19zdG10OgorICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfc3RtdCh0cmVlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgZnVuY2RlZjoKICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYodHJlZSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCA3YzkzN2UwLi44NTRhNzQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC02LDcgKzYsNyBAQAogICAgZnVuY3Rpb25zIGFyZSBlaXRoZXIgdW5pbXBsZW1lbnRlZCBvciBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseS4gIFRoZSBzb3VyY2UKICAgIGFzc3VtZXMgdGhhdCBmb3IgV2luZG93cyBOVCwgdGhlIG1hY3JvICdNU19XSU5ET1dTJyBpcyBkZWZpbmVkIGluZGVwZW5kZW50CiAgICBvZiB0aGUgY29tcGlsZXIgdXNlZC4gIERpZmZlcmVudCBjb21waWxlcnMgZGVmaW5lIHRoZWlyIG93biBmZWF0dXJlCi0gICB0ZXN0IG1hY3JvLCBlLmcuICdfX0JPUkxBTkRDX18nIG9yICdfTVNDX1ZFUicuICovCisgICB0ZXN0IG1hY3JvLCBlLmcuICdfTVNDX1ZFUicuICovCiAKIAogCkBAIC0yNSw4ICsyNSwxMSBAQAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpZm5kZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgInBvc2l4bW9kdWxlLmgiCisjZWxzZQorI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKICNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTE0MSwxMyArMTQ0LDYgQEAKICNkZWZpbmUgSEFWRV9TWVNURU0gICAgIDEKICNpbmNsdWRlIDxwcm9jZXNzLmg+CiAjZWxzZQotI2lmZGVmIF9fQk9STEFORENfXyAgICAgICAgICAgICAvKiBCb3JsYW5kIGNvbXBpbGVyICovCi0jZGVmaW5lIEhBVkVfRVhFQ1YgICAgICAxCi0jZGVmaW5lIEhBVkVfT1BFTkRJUiAgICAxCi0jZGVmaW5lIEhBVkVfUElQRSAgICAgICAxCi0jZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCi0jZGVmaW5lIEhBVkVfV0FJVCAgICAgICAxCi0jZWxzZQogI2lmZGVmIF9NU0NfVkVSICAgICAgICAgLyogTWljcm9zb2Z0IGNvbXBpbGVyICovCiAjZGVmaW5lIEhBVkVfR0VUUFBJRCAgICAxCiAjZGVmaW5lIEhBVkVfR0VUTE9HSU4gICAxCkBAIC0xNzcsMTQgKzE3MywxNCBAQAogI2RlZmluZSBIQVZFX1dBSVQgICAgICAgMQogI2RlZmluZSBIQVZFX1RUWU5BTUUgICAgMQogI2VuZGlmICAvKiBfTVNDX1ZFUiAqLwotI2VuZGlmICAvKiBfX0JPUkxBTkRDX18gKi8KICNlbmRpZiAgLyogISBfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAKIAogLypbY2xpbmljIGlucHV0XQorIyBvbmUgb2YgdGhlIGZldyB0aW1lcyB3ZSBsaWUgYWJvdXQgdGhpcyBuYW1lIQogbW9kdWxlIG9zCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04Y2ZmMDk2ZDExMzMyODhmXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05NGEwZjBmOTc4YWNhZTE3XSovCiAKICNpZm5kZWYgX01TQ19WRVIKIApAQCAtMjExLDExICsyMDcsNyBAQAogZXh0ZXJuIGludCBjaGRpcihjb25zdCBjaGFyICopOwogZXh0ZXJuIGludCBybWRpcihjb25zdCBjaGFyICopOwogI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1leHRlcm4gaW50IGNobW9kKGNvbnN0IGNoYXIgKiwgaW50KTsKLSNlbHNlCiBleHRlcm4gaW50IGNobW9kKGNvbnN0IGNoYXIgKiwgbW9kZV90KTsKLSNlbmRpZgogLyojaWZkZWYgSEFWRV9GQ0hNT0QKIGV4dGVybiBpbnQgZmNobW9kKGludCwgbW9kZV90KTsKICNlbmRpZiovCkBAIC0zMDEsNiArMjkzLDkgQEAKICNpZm5kZWYgSU9fUkVQQVJTRV9UQUdfU1lNTElOSwogI2RlZmluZSBJT19SRVBBUlNFX1RBR19TWU1MSU5LICgweEEwMDAwMDBDTCkKICNlbmRpZgorI2lmbmRlZiBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVAorI2RlZmluZSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVCAoMHhBMDAwMDAwM0wpCisjZW5kaWYKICNpbmNsdWRlICJvc2RlZnMuaCIKICNpbmNsdWRlIDxtYWxsb2MuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0zNTYsOCArMzUxLDggQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjICAgICAgIGRlZmluZSBTVEFUIHdpbjMyX3N0YXQKICMgICAgICAgZGVmaW5lIExTVEFUIHdpbjMyX2xzdGF0Ci0jICAgICAgIGRlZmluZSBGU1RBVCB3aW4zMl9mc3RhdAotIyAgICAgICBkZWZpbmUgU1RSVUNUX1NUQVQgc3RydWN0IHdpbjMyX3N0YXQKKyMgICAgICAgZGVmaW5lIEZTVEFUIF9QeV9mc3RhdF9ub3JhaXNlCisjICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0CiAjZWxzZQogIyAgICAgICBkZWZpbmUgU1RBVCBzdGF0CiAjICAgICAgIGRlZmluZSBMU1RBVCBsc3RhdApAQCAtMzc4LDYgKzM3MywyMCBAQAogCiAjZGVmaW5lIERXT1JEX01BWCA0Mjk0OTY3Mjk1VQogCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBJTklURlVOQyBQeUluaXRfbnQKKyNkZWZpbmUgTU9ETkFNRSAibnQiCisjZWxzZQorI2RlZmluZSBJTklURlVOQyBQeUluaXRfcG9zaXgKKyNkZWZpbmUgTU9ETkFNRSAicG9zaXgiCisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIGRlZmluZWQgaW4gZmlsZXV0aWxzLmMgKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodGltZV90LCBpbnQsIEZJTEVUSU1FICopOworUHlBUElfRlVOQyh2b2lkKSBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdChCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORywgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqKTsKKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogc3RhdGljIGludApAQCAtNzAxLDcgKzcxMCw2IEBACiB9CiAKIAotCiAvKgogICogQSBQeUFyZ19QYXJzZVR1cGxlICJjb252ZXJ0ZXIiIGZ1bmN0aW9uCiAgKiB0aGF0IGhhbmRsZXMgZmlsZXN5c3RlbSBwYXRocyBpbiB0aGUgbWFubmVyCkBAIC03OTcsOCArODA1LDggQEAKICAgICBQeU9iamVjdCAqY2xlYW51cDsKIH0gcGF0aF90OwogCi0jZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAotICAgIHtmdW5jdGlvbl9uYW1lLCBOVUxMLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIE5VTEwsIDAsIDAsIE5VTEwsIE5VTEx9CisjZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAorICAgIHtmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIE5VTEwsIC0xLCAwLCBOVUxMLCBOVUxMfQogCiBzdGF0aWMgdm9pZAogcGF0aF9jbGVhbnVwKHBhdGhfdCAqcGF0aCkgewpAQCAtODU5LDcgKzg2Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAod2NzbGVuKHdpZGUpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC05MjUsOCArOTMzLDggQEAKICNlbmRpZgogCiAgICAgbmFycm93ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotICAgIGlmIChsZW5ndGggIT0gc3RybGVuKG5hcnJvdykpIHsKLSAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciBpbiAlcyIpOworICAgIGlmICgoc2l6ZV90KWxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xMDI3LDk3ICsxMDM1LDQ2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEEgaGVscGVyIHVzZWQgYnkgYSBudW1iZXIgb2YgUE9TSVgtb25seSBmdW5jdGlvbnMgKi8KLSNpZm5kZWYgTVNfV0lORE9XUwotc3RhdGljIGludAotX3BhcnNlX29mZl90KFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCi17Ci0jaWYgIWRlZmluZWQoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCkKLSAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nKGFyZyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHR5cGVkZWYgUFlfTE9OR19MT05HIFB5X29mZl90OwogI2Vsc2UKLSAgICAqKChvZmZfdCopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworICAgIHR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7CisjZW5kaWYKKworc3RhdGljIGludAorUHlfb2ZmX3RfY29udmVydGVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKmFkZHIpCit7CisjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAorICAgICooKFB5X29mZl90ICopYWRkcikgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOworI2Vsc2UKKyAgICAqKChQeV9vZmZfdCAqKWFkZHIpID0gUHlMb25nX0FzTG9uZyhhcmcpOwogI2VuZGlmCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwogfQotI2VuZGlmCiAKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAKLS8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKLSAqIHZhbGlkIGFuZCByYWlzZSBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCi0gKiBOb3JtYWxseSwgYW4gaW52YWxpZCBmZCBpcyBsaWtlbHkgdG8gYmUgYSBDIHByb2dyYW0gZXJyb3IgYW5kIHRoZXJlZm9yZQotICogYW4gYXNzZXJ0aW9uIGNhbiBiZSB1c2VmdWwsIGJ1dCBpdCBkb2VzIGNvbnRyYWRpY3QgdGhlIFBPU0lYIHN0YW5kYXJkCi0gKiB3aGljaCBmb3Igd3JpdGUoMikgc3RhdGVzOgotICogICAgIk90aGVyd2lzZSwgLTEgc2hhbGwgYmUgcmV0dXJuZWQgYW5kIGVycm5vIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuIgotICogICAgIltFQkFERl0gVGhlIGZpbGRlcyBhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3Igb3BlbiBmb3IKLSAqICAgICB3cml0aW5nLiIKLSAqIEZ1cnRoZXJtb3JlLCBweXRob24gYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFueSBvbGQgaW50ZWdlcgotICogYXMgYSBmZCBhbmQgc2hvdWxkIG1lcmVseSByYWlzZSBhIHB5dGhvbiBleGNlcHRpb24gb24gZXJyb3IuCi0gKiBUaGUgTWljcm9zb2Z0IENSVCBkb2Vzbid0IHByb3ZpZGUgYW4gb2ZmaWNpYWwgd2F5IHRvIGNoZWNrIGZvciB0aGUKLSAqIHZhbGlkaXR5IG9mIGEgZmlsZSBkZXNjcmlwdG9yLCBidXQgd2UgY2FuIGVtdWxhdGUgaXRzIGludGVybmFsIGJlaGF2aW91cgotICogYnkgdXNpbmcgdGhlIGV4cG9ydGVkIF9fcGluZm8gZGF0YSBtZW1iZXIgYW5kIGtub3dsZWRnZSBvZiB0aGUKLSAqIGludGVybmFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuCi0gKiBUaGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIHVwZGF0ZWQgZm9yIGVhY2ggdmVyc2lvbiBvZiB2aXN1YWwgc3R1ZGlvCi0gKiBhY2NvcmRpbmcgdG8gdGhlIGZpbGUgaW50ZXJuYWwuaCBpbiB0aGUgQ1JUIHNvdXJjZSwgdW50aWwgTVMgY29tZXMKLSAqIHVwIHdpdGggYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0aGlzLgotICogKGFsbCBvZiB0aGlzIGlzIHRvIGF2b2lkIGdsb2JhbGx5IG1vZGlmeWluZyB0aGUgQ1JUIGJlaGF2aW91ciB1c2luZwotICogX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCkgYW5kIF9DcnRTZXRSZXBvcnRNb2RlKCkpCi0gKi8KLS8qIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIGRldGVybWluZWQgYXQgcnVudGltZS4KLSAqIE9ubHkgdGhlIGZpcnN0IGl0ZW1zIG11c3QgYmUgcHJlc2VudC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludHB0cl90IG9zZmhuZDsKLSAgICBjaGFyIG9zZmlsZTsKLX0gbXlfaW9pbmZvOwotCi1leHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIgKiBfX3Bpb2luZm9bXTsKLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKLSNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIEZPUEVOIDB4MDEKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiBUaGlzIGZ1bmN0aW9uIGVtdWxhdGVzIHdoYXQgdGhlIHdpbmRvd3MgQ1JUIGRvZXMgdG8gdmFsaWRhdGUgZmlsZSBoYW5kbGVzICovCi1pbnQKLV9QeVZlcmlmeV9mZChpbnQgZmQpCitzdGF0aWMgUHlPYmplY3QgKgorUHlMb25nX0Zyb21QeV9vZmZfdChQeV9vZmZfdCBvZmZzZXQpCiB7Ci0gICAgY29uc3QgaW50IGkxID0gZmQgPj4gSU9JTkZPX0wyRTsKLSAgICBjb25zdCBpbnQgaTIgPSBmZCAmICgoMSA8PCBJT0lORk9fTDJFKSAtIDEpOwotCi0gICAgc3RhdGljIHNpemVfdCBzaXplb2ZfaW9pbmZvID0gMDsKLQotICAgIC8qIERldGVybWluZSB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGlvaW5mbyBzdHJ1Y3R1cmUsCi0gICAgICogYXMgdXNlZCBieSB0aGUgQ1JUIGxvYWRlZCBpbiBtZW1vcnkKLSAgICAgKi8KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwICYmIF9fcGlvaW5mb1swXSAhPSBOVUxMKSB7Ci0gICAgICAgIHNpemVvZl9pb2luZm8gPSBfbXNpemUoX19waW9pbmZvWzBdKSAvIElPSU5GT19BUlJBWV9FTFRTOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwKSB7Ci0gICAgICAgIC8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uLi4gKi8KLSAgICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIC8qIFNlZSB0aGF0IGl0IGlzbid0IGEgc3BlY2lhbCBDTEVBUiBmaWxlbm8gKi8KLSAgICBpZiAoZmQgIT0gX05PX0NPTlNPTEVfRklMRU5PKSB7Ci0gICAgICAgIC8qIE1pY3Jvc29mdCBDUlQgd291bGQgY2hlY2sgdGhhdCAwPD1mZDxfbmhhbmRsZSBidXQgd2UgY2FuJ3QgZG8gdGhhdC4gIEluc3RlYWQKLSAgICAgICAgICogd2UgY2hlY2sgcG9pbnRlciB2YWxpZGl0eSBhbmQgb3RoZXIgaW5mbwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKDAgPD0gaTEgJiYgaTEgPCBJT0lORk9fQVJSQVlTICYmIF9fcGlvaW5mb1tpMV0gIT0gTlVMTCkgewotICAgICAgICAgICAgLyogZmluYWxseSwgY2hlY2sgdGhhdCB0aGUgZmlsZSBpcyBvcGVuICovCi0gICAgICAgICAgICBteV9pb2luZm8qIGluZm8gPSAobXlfaW9pbmZvKikoX19waW9pbmZvW2kxXSArIGkyICogc2l6ZW9mX2lvaW5mbyk7Ci0gICAgICAgICAgICBpZiAoaW5mby0+b3NmaWxlICYgRk9QRU4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgZmFpbDoKLSAgICBlcnJubyA9IEVCQURGOwotICAgIHJldHVybiAwOworI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyhvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9mZnNldCk7CisjZW5kaWYKIH0KIAorCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAorLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZF9kdXAyIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KKyAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKKyAqLworI2RlZmluZSBJT0lORk9fTDJFIDUKKyNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAorI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCisjZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKKyNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgorCiAvKiB0aGUgc3BlY2lhbCBjYXNlIG9mIGNoZWNraW5nIGR1cDIuICBUaGUgdGFyZ2V0IGZkIG11c3QgYmUgaW4gYSBzZW5zaWJsZSByYW5nZSAqLwogc3RhdGljIGludAogX1B5VmVyaWZ5X2ZkX2R1cDIoaW50IGZkMSwgaW50IGZkMikKQEAgLTExMzIsNDYgKzEwODksMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiB9CiAjZWxzZQotLyogZHVtbXkgdmVyc2lvbi4gX1B5VmVyaWZ5X2ZkKCkgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGZpbGVvYmplY3QuaCAqLwotI2RlZmluZSBfUHlWZXJpZnlfZmRfZHVwMihBLCBCKSAoMSkKKyNkZWZpbmUgX1B5VmVyaWZ5X2ZkX2R1cDIoZmQxLCBmZDIpIChfUHlWZXJpZnlfZmQoZmQxKSAmJiAoZmQyKSA+PSAwKQogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCi0vKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KLSAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczc5MTUxNC5hc3B4IGFzIHRoZSByZXF1aXJlZAotICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCi0gICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCi10eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7Ci0gICAgVUxPTkcgUmVwYXJzZVRhZzsKLSAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7Ci0gICAgVVNIT1JUIFJlc2VydmVkOwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKLSAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVPZmZzZXQ7Ci0gICAgICAgICAgICBVU0hPUlQgUHJpbnROYW1lTGVuZ3RoOwotICAgICAgICAgICAgVUxPTkcgRmxhZ3M7Ci0gICAgICAgICAgICBXQ0hBUiBQYXRoQnVmZmVyWzFdOwotICAgICAgICB9IFN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXI7Ci0KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCAgU3Vic3RpdHV0ZU5hbWVMZW5ndGg7Ci0gICAgICAgICAgICBVU0hPUlQgIFByaW50TmFtZU9mZnNldDsKLSAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lTGVuZ3RoOwotICAgICAgICAgICAgV0NIQVIgIFBhdGhCdWZmZXJbMV07Ci0gICAgICAgIH0gTW91bnRQb2ludFJlcGFyc2VCdWZmZXI7Ci0KLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOwotICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOwotICAgIH07Ci19IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKLQotI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKLSNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKIAogc3RhdGljIGludAogd2luMzJfZ2V0X3JlcGFyc2VfdGFnKEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZSwgVUxPTkcgKnJlcGFyc2VfdGFnKQpAQCAtMTM1Niw0NyArMTI3NywzNyBAQAogCiAvKiBQT1NJWCBnZW5lcmljIG1ldGhvZHMgKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZpbGRlcyhQeU9iamVjdCAqZmRvYmosIGludCAoKmZ1bmMpKGludCkpCitzdGF0aWMgaW50CitmaWxkZXNfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKQogewogICAgIGludCBmZDsKLSAgICBpbnQgcmVzOwotICAgIGZkID0gUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcihmZG9iaik7CisgICAgaW50ICpwb2ludGVyID0gKGludCAqKXA7CisgICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKG8pOwogICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9ICgqZnVuYykoZmQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnBvaW50ZXIgPSBmZDsKKyAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4XzFzdHIoY29uc3QgY2hhciAqZnVuY19uYW1lLCBQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LAotICAgICAgICAgICBpbnQgKCpmdW5jKShjb25zdCBjaGFyKikpCitwb3NpeF9maWxkZXNfZmQoaW50IGZkLCBpbnQgKCpmdW5jKShpbnQpKQogewotICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9IGZ1bmNfbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gKCpmdW5jKShwYXRoLm5hcnJvdyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHJlcyA9ICgqZnVuYykoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCkBAIC0xNDc1LDg5ICsxMzg2LDcgQEAKICAgIFRoZXJlZm9yZSwgd2UgaW1wbGVtZW50IG91ciBvd24gc3RhdCwgYmFzZWQgb24gdGhlIFdpbjMyIEFQSSBkaXJlY3RseS4KICovCiAjZGVmaW5lIEhBVkVfU1RBVF9OU0VDIDEKLQotc3RydWN0IHdpbjMyX3N0YXR7Ci0gICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7Ci0gICAgX19pbnQ2NCBzdF9pbm87Ci0gICAgdW5zaWduZWQgc2hvcnQgc3RfbW9kZTsKLSAgICBpbnQgc3Rfbmxpbms7Ci0gICAgaW50IHN0X3VpZDsKLSAgICBpbnQgc3RfZ2lkOwotICAgIHVuc2lnbmVkIGxvbmcgc3RfcmRldjsKLSAgICBfX2ludDY0IHN0X3NpemU7Ci0gICAgdGltZV90IHN0X2F0aW1lOwotICAgIGludCBzdF9hdGltZV9uc2VjOwotICAgIHRpbWVfdCBzdF9tdGltZTsKLSAgICBpbnQgc3RfbXRpbWVfbnNlYzsKLSAgICB0aW1lX3Qgc3RfY3RpbWU7Ci0gICAgaW50IHN0X2N0aW1lX25zZWM7Ci19OwotCi1zdGF0aWMgX19pbnQ2NCBzZWNzX2JldHdlZW5fZXBvY2hzID0gMTE2NDQ0NzM2MDA7IC8qIFNlY29uZHMgYmV0d2VlbiAxLjEuMTYwMSBhbmQgMS4xLjE5NzAgKi8KLQotc3RhdGljIHZvaWQKLUZJTEVfVElNRV90b190aW1lX3RfbnNlYyhGSUxFVElNRSAqaW5fcHRyLCB0aW1lX3QgKnRpbWVfb3V0LCBpbnQqIG5zZWNfb3V0KQotewotICAgIC8qIFhYWCBlbmRpYW5uZXNzLiBTaG91bGRuJ3QgbWF0dGVyLCBhcyBhbGwgV2luZG93cyBpbXBsZW1lbnRhdGlvbnMgYXJlIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAvKiBDYW5ub3Qgc2ltcGx5IGNhc3QgYW5kIGRlcmVmZXJlbmNlIGluX3B0ciwKLSAgICAgICBzaW5jZSBpdCBtaWdodCBub3QgYmUgYWxpZ25lZCBwcm9wZXJseSAqLwotICAgIF9faW50NjQgaW47Ci0gICAgbWVtY3B5KCZpbiwgaW5fcHRyLCBzaXplb2YoaW4pKTsKLSAgICAqbnNlY19vdXQgPSAoaW50KShpbiAlIDEwMDAwMDAwKSAqIDEwMDsgLyogRklMRVRJTUUgaXMgaW4gdW5pdHMgb2YgMTAwIG5zZWMuICovCi0gICAgKnRpbWVfb3V0ID0gUHlfU0FGRV9ET1dOQ0FTVCgoaW4gLyAxMDAwMDAwMCkgLSBzZWNzX2JldHdlZW5fZXBvY2hzLCBfX2ludDY0LCB0aW1lX3QpOwotfQotCi1zdGF0aWMgdm9pZAotdGltZV90X3RvX0ZJTEVfVElNRSh0aW1lX3QgdGltZV9pbiwgaW50IG5zZWNfaW4sIEZJTEVUSU1FICpvdXRfcHRyKQotewotICAgIC8qIFhYWCBlbmRpYW5uZXNzICovCi0gICAgX19pbnQ2NCBvdXQ7Ci0gICAgb3V0ID0gdGltZV9pbiArIHNlY3NfYmV0d2Vlbl9lcG9jaHM7Ci0gICAgb3V0ID0gb3V0ICogMTAwMDAwMDAgKyBuc2VjX2luIC8gMTAwOwotICAgIG1lbWNweShvdXRfcHRyLCAmb3V0LCBzaXplb2Yob3V0KSk7Ci19Ci0KLS8qIEJlbG93LCB3ZSAqa25vdyogdGhhdCB1Z28rciBpcyAwNDQ0ICovCi0jaWYgX1NfSVJFQUQgIT0gMDQwMAotI2Vycm9yIFVuc3VwcG9ydGVkIEMgbGlicmFyeQotI2VuZGlmCi1zdGF0aWMgaW50Ci1hdHRyaWJ1dGVzX3RvX21vZGUoRFdPUkQgYXR0cikKLXsKLSAgICBpbnQgbSA9IDA7Ci0gICAgaWYgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCi0gICAgICAgIG0gfD0gX1NfSUZESVIgfCAwMTExOyAvKiBJRkVYRUMgZm9yIHVzZXIsZ3JvdXAsb3RoZXIgKi8KLSAgICBlbHNlCi0gICAgICAgIG0gfD0gX1NfSUZSRUc7Ci0gICAgaWYgKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkKLSAgICAgICAgbSB8PSAwNDQ0OwotICAgIGVsc2UKLSAgICAgICAgbSB8PSAwNjY2OwotICAgIHJldHVybiBtOwotfQotCi1zdGF0aWMgaW50Ci1hdHRyaWJ1dGVfZGF0YV90b19zdGF0KEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyByZXBhcnNlX3RhZywgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCkKLXsKLSAgICBtZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOwotICAgIHJlc3VsdC0+c3RfbW9kZSA9IGF0dHJpYnV0ZXNfdG9fbW9kZShpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzKTsKLSAgICByZXN1bHQtPnN0X3NpemUgPSAoKChfX2ludDY0KWluZm8tPm5GaWxlU2l6ZUhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZVNpemVMb3c7Ci0gICAgcmVzdWx0LT5zdF9kZXYgPSBpbmZvLT5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKLSAgICByZXN1bHQtPnN0X3JkZXYgPSByZXN1bHQtPnN0X2RldjsKLSAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0Q3JlYXRpb25UaW1lLCAmcmVzdWx0LT5zdF9jdGltZSwgJnJlc3VsdC0+c3RfY3RpbWVfbnNlYyk7Ci0gICAgRklMRV9USU1FX3RvX3RpbWVfdF9uc2VjKCZpbmZvLT5mdExhc3RXcml0ZVRpbWUsICZyZXN1bHQtPnN0X210aW1lLCAmcmVzdWx0LT5zdF9tdGltZV9uc2VjKTsKLSAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUsICZyZXN1bHQtPnN0X2F0aW1lLCAmcmVzdWx0LT5zdF9hdGltZV9uc2VjKTsKLSAgICByZXN1bHQtPnN0X25saW5rID0gaW5mby0+bk51bWJlck9mTGlua3M7Ci0gICAgcmVzdWx0LT5zdF9pbm8gPSAoKChfX2ludDY0KWluZm8tPm5GaWxlSW5kZXhIaWdoKTw8MzIpICsgaW5mby0+bkZpbGVJbmRleExvdzsKLSAgICBpZiAocmVwYXJzZV90YWcgPT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykgewotICAgICAgICAvKiBmaXJzdCBjbGVhciB0aGUgU19JRk1UIGJpdHMgKi8KLSAgICAgICAgcmVzdWx0LT5zdF9tb2RlIF49IChyZXN1bHQtPnN0X21vZGUgJiBTX0lGTVQpOwotICAgICAgICAvKiBub3cgc2V0IHRoZSBiaXRzIHRoYXQgbWFrZSB0aGlzIGEgc3ltbGluayAqLwotICAgICAgICByZXN1bHQtPnN0X21vZGUgfD0gU19JRkxOSzsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMgMQogCiBzdGF0aWMgQk9PTAogYXR0cmlidXRlc19mcm9tX2RpcihMUENTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKQEAgLTE1ODIsNiArMTQxMSwyNSBAQAogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9pZAorZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyAqcmVwYXJzZV90YWcpCit7CisgICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOworICAgIGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMgPSBwRmlsZURhdGEtPmR3RmlsZUF0dHJpYnV0ZXM7CisgICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IHBGaWxlRGF0YS0+ZnRDcmVhdGlvblRpbWU7CisgICAgaW5mby0+ZnRMYXN0QWNjZXNzVGltZSA9IHBGaWxlRGF0YS0+ZnRMYXN0QWNjZXNzVGltZTsKKyAgICBpbmZvLT5mdExhc3RXcml0ZVRpbWUgID0gcEZpbGVEYXRhLT5mdExhc3RXcml0ZVRpbWU7CisgICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IHBGaWxlRGF0YS0+bkZpbGVTaXplSGlnaDsKKyAgICBpbmZvLT5uRmlsZVNpemVMb3cgICAgID0gcEZpbGVEYXRhLT5uRmlsZVNpemVMb3c7CisvKiAgaW5mby0+bk51bWJlck9mTGlua3MgICA9IDE7ICovCisgICAgaWYgKHBGaWxlRGF0YS0+ZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCisgICAgICAgICpyZXBhcnNlX3RhZyA9IHBGaWxlRGF0YS0+ZHdSZXNlcnZlZDA7CisgICAgZWxzZQorICAgICAgICAqcmVwYXJzZV90YWcgPSAwOworfQorCiBzdGF0aWMgQk9PTAogYXR0cmlidXRlc19mcm9tX2Rpcl93KExQQ1dTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKIHsKQEAgLTE1OTEsNDUgKzE0MzksMTAgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOwotICAgICpyZXBhcnNlX3RhZyA9IDA7Ci0gICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXM7Ci0gICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IEZpbGVEYXRhLmZ0Q3JlYXRpb25UaW1lOwotICAgIGluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUgPSBGaWxlRGF0YS5mdExhc3RBY2Nlc3NUaW1lOwotICAgIGluZm8tPmZ0TGFzdFdyaXRlVGltZSAgPSBGaWxlRGF0YS5mdExhc3RXcml0ZVRpbWU7Ci0gICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgaW5mby0+bkZpbGVTaXplTG93ICAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUxvdzsKLS8qICBpbmZvLT5uTnVtYmVyT2ZMaW5rcyAgID0gMTsgKi8KLSAgICBpZiAoRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCi0gICAgICAgICpyZXBhcnNlX3RhZyA9IEZpbGVEYXRhLmR3UmVzZXJ2ZWQwOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm9fdygmRmlsZURhdGEsIGluZm8sIHJlcGFyc2VfdGFnKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotLyogR3JhYiBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwotc3RhdGljIGludCBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlID0gLTE7Ci1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKShIQU5ETEUsIExQV1NUUiwgRFdPUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7Ci1zdGF0aWMgaW50Ci1jaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKQotewotICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7Ci0gICAgRFdPUkQgKENBTExCQUNLICpQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBKShIQU5ETEUsIExQU1RSLCBEV09SRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEKTsKLQotICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmICgtMSA9PSBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKQotICAgIHsKLSAgICAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7Ci0gICAgICAgICooRkFSUFJPQyopJlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSIpOwotICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVciKTsKLSAgICAgICAgaGFzX0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSA9IFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZVc7Ci0gICAgfQotICAgIHJldHVybiBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlOwotfQotCiBzdGF0aWMgQk9PTAogZ2V0X3RhcmdldF9wYXRoKEhBTkRMRSBoZGwsIHdjaGFyX3QgKip0YXJnZXRfcGF0aCkKIHsKQEAgLTE2MzgsOCArMTQ1MSw4IEBACiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZQogICAgICAgIHRoZSB0YXJnZXQgcGF0aCBuYW1lICh0aGVuIHdlJ2xsIGNhbGwgbHN0YXQgb24gaXQpLiAqLwotICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGwsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZPTFVNRV9OQU1FX0RPUyk7CisgICAgYnVmX3NpemUgPSBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkbCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk9MVU1FX05BTUVfRE9TKTsKICAgICBpZighYnVmX3NpemUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIApAQCAtMTY0OSw3ICsxNDYyLDcgQEAKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAotICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhkbCwKKyAgICByZXN1bHRfbGVuZ3RoID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoZGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgYnVmX3NpemUsIFZPTFVNRV9OQU1FX0RPUyk7CiAKICAgICBpZighcmVzdWx0X2xlbmd0aCkgewpAQCAtMTY2OSwxMCArMTQ4MiwxMCBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSk7CiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE2ODIsMTIgKzE0OTUsNiBAQAogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGNvbnN0IGNoYXIgKmRvdDsKIAotICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewotICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgZG9uJ3QKLSAgICAgICAgICAgdHJhdmVyc2UgcmVwYXJzZSBwb2ludC4gKi8KLSAgICAgICAgdHJhdmVyc2UgPSBGQUxTRTsKLSAgICB9Ci0KICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKAogICAgICAgICBwYXRoLAogICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KQEAgLTE3NTUsNyArMTU2Miw3IEBACiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwogICAgIH0KLSAgICBhdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7CiAKICAgICAvKiBTZXQgU19JRVhFQyBpZiBpdCBpcyBhbiAuZXhlLCAuYmF0LCAuLi4gKi8KICAgICBkb3QgPSBzdHJyY2hyKHBhdGgsICcuJyk7CkBAIC0xNzY4LDcgKzE1NzUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE3NzgsMTIgKzE1ODUsNiBAQAogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKIAotICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewotICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgZG9uJ3QKLSAgICAgICAgICAgdHJhdmVyc2UgcmVwYXJzZSBwb2ludC4gKi8KLSAgICAgICAgdHJhdmVyc2UgPSBGQUxTRTsKLSAgICB9Ci0KICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAogICAgICAgICBwYXRoLAogICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KQEAgLTE4NTEsNyArMTY1Miw3IEBACiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwogICAgIH0KLSAgICBhdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKKyAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmaW5mbywgcmVwYXJzZV90YWcsIHJlc3VsdCk7CiAKICAgICAvKiBTZXQgU19JRVhFQyBpZiBpdCBpcyBhbiAuZXhlLCAuYmF0LCAuLi4gKi8KICAgICBkb3QgPSB3Y3NyY2hyKHBhdGgsICcuJyk7CkBAIC0xODY0LDcgKzE2NjUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQord2luMzJfeHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQogewogICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgogICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KQEAgLTE4NzQsNyArMTY3NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IHdpbjMyX3N0YXQgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKK3dpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQogewogICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgogICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KQEAgLTE4OTYsODAgKzE2OTcsMjkgQEAKICAgIFRoZSBfdyByZXByZXNlbnQgVW5pY29kZSBlcXVpdmFsZW50cyBvZiB0aGUgYWZvcmVtZW50aW9uZWQgQU5TSSBmdW5jdGlvbnMuICovCiAKIHN0YXRpYyBpbnQKLXdpbjMyX2xzdGF0KGNvbnN0IGNoYXIqIHBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCit3aW4zMl9sc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgRkFMU0UpOwogfQogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCit3aW4zMl9sc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIEZBTFNFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQord2luMzJfc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgVFJVRSk7CiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3N0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3Qgd2luMzJfc3RhdCAqcmVzdWx0KQord2luMzJfc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIFRSVUUpOwogfQogCi1zdGF0aWMgaW50Ci13aW4zMl9mc3RhdChpbnQgZmlsZV9udW1iZXIsIHN0cnVjdCB3aW4zMl9zdGF0ICpyZXN1bHQpCi17Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKLSAgICBIQU5ETEUgaDsKLSAgICBpbnQgdHlwZTsKLQotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZpbGVfbnVtYmVyKSkKLSAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIGVsc2UKLSAgICAgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZV9udW1iZXIpOwotCi0gICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCi0gICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwotICAgIGVycm5vID0gMDsKLQotICAgIGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIC8qIFRoaXMgaXMgcmVhbGx5IGEgQyBsaWJyYXJ5IGVycm9yIChpbnZhbGlkIGZpbGUgaGFuZGxlKS4KLSAgICAgICAgICAgV2Ugc2V0IHRoZSBXaW4zMiBlcnJvciB0byB0aGUgY2xvc2VzIG9uZSBtYXRjaGluZy4gKi8KLSAgICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX0lOVkFMSURfSEFORExFKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBtZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoKnJlc3VsdCkpOwotCi0gICAgdHlwZSA9IEdldEZpbGVUeXBlKGgpOwotICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9VTktOT1dOKSB7Ci0gICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChlcnJvciAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyogZWxzZTogdmFsaWQgYnV0IHVua25vd24gZmlsZSAqLwotICAgIH0KLQotICAgIGlmICh0eXBlICE9IEZJTEVfVFlQRV9ESVNLKSB7Ci0gICAgICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9DSEFSKQotICAgICAgICAgICAgcmVzdWx0LT5zdF9tb2RlID0gX1NfSUZDSFI7Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRklMRV9UWVBFX1BJUEUpCi0gICAgICAgICAgICByZXN1bHQtPnN0X21vZGUgPSBfU19JRklGTzsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoLCAmaW5mbykpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGF0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIDAsIHJlc3VsdCk7Ci0gICAgLyogc3BlY2lmaWMgdG8gZnN0YXQoKSAqLwotICAgIHJlc3VsdC0+c3RfaW5vID0gKCgoX19pbnQ2NClpbmZvLm5GaWxlSW5kZXhIaWdoKTw8MzIpICsgaW5mby5uRmlsZUluZGV4TG93OwotICAgIHJldHVybiAwOwotfQotCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIoc3RhdF9yZXN1bHRfX2RvY19fLApAQCAtMjAxOSw2ICsxNzY5LDkgQEAKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogICAgIHsic3RfYmlydGh0aW1lIiwgICAidGltZSBvZiBjcmVhdGlvbiJ9LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMKKyAgICB7InN0X2ZpbGVfYXR0cmlidXRlcyIsICJXaW5kb3dzIGZpbGUgYXR0cmlidXRlIGJpdHMifSwKKyNlbmRpZgogICAgIHswfQogfTsKIApAQCAtMjA1OCw2ICsxODExLDEyIEBACiAjZGVmaW5lIFNUX0JJUlRIVElNRV9JRFggU1RfR0VOX0lEWAogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUworI2RlZmluZSBTVF9GSUxFX0FUVFJJQlVURVNfSURYIChTVF9CSVJUSFRJTUVfSURYKzEpCisjZWxzZQorI2RlZmluZSBTVF9GSUxFX0FUVFJJQlVURVNfSURYIFNUX0JJUlRIVElNRV9JRFgKKyNlbmRpZgorCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHN0YXRfcmVzdWx0X2Rlc2MgPSB7CiAgICAgInN0YXRfcmVzdWx0IiwgLyogbmFtZSAqLwogICAgIHN0YXRfcmVzdWx0X19kb2NfXywgLyogZG9jICovCkBAIC0yMTU5LDEwICsxOTE4LDEyIEBACiBQeURvY19TVFJWQVIoc3RhdF9mbG9hdF90aW1lc19fZG9jX18sCiAic3RhdF9mbG9hdF90aW1lcyhbbmV3dmFsXSkgLT4gb2xkdmFsXG5cblwKIERldGVybWluZSB3aGV0aGVyIG9zLltsZl1zdGF0IHJlcHJlc2VudHMgdGltZSBzdGFtcHMgYXMgZmxvYXQgb2JqZWN0cy5cblwKLUlmIG5ld3ZhbCBpcyBUcnVlLCBmdXR1cmUgY2FsbHMgdG8gc3RhdCgpIHJldHVybiBmbG9hdHMsIGlmIGl0IGlzIEZhbHNlLFxuXAotZnV0dXJlIGNhbGxzIHJldHVybiBpbnRzLiBcblwKLUlmIG5ld3ZhbCBpcyBvbWl0dGVkLCByZXR1cm4gdGhlIGN1cnJlbnQgc2V0dGluZy5cbiIpOworXG5cCitJZiB2YWx1ZSBpcyBUcnVlLCBmdXR1cmUgY2FsbHMgdG8gc3RhdCgpIHJldHVybiBmbG9hdHM7IGlmIGl0IGlzIEZhbHNlLFxuXAorZnV0dXJlIGNhbGxzIHJldHVybiBpbnRzLlxuXAorSWYgdmFsdWUgaXMgb21pdHRlZCwgcmV0dXJuIHRoZSBjdXJyZW50IHNldHRpbmcuXG4iKTsKIAorLyogQUMgMy41OiB0aGUgcHVibGljIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIE5vbmUsIG5vdCByZWFkeSBmb3IgdGhhdCB5ZXQgKi8KIHN0YXRpYyBQeU9iamVjdCoKIHN0YXRfZmxvYXRfdGltZXMoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjMyMiw2ICsyMDgzLDEwIEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBTVF9GTEFHU19JRFgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X2ZsYWdzKSk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgU1RfRklMRV9BVFRSSUJVVEVTX0lEWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHN0LT5zdF9maWxlX2F0dHJpYnV0ZXMpKTsKKyNlbmRpZgogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjM4NSwxMiArMjE1MCwxODEgQEAKICAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwogfQogCi0jaWZkZWYgSEFWRV9GU1RBVEFUCi0gICAgI2RlZmluZSBPU19TVEFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorLypbcHl0aG9uIGlucHV0XQorCitmb3IgcyBpbiAiIiIKKworRkFDQ0VTU0FUCitGQ0hNT0RBVAorRkNIT1dOQVQKK0ZTVEFUQVQKK0xJTktBVAorTUtESVJBVAorTUtGSUZPQVQKK01LTk9EQVQKK09QRU5BVAorUkVBRExJTktBVAorU1lNTElOS0FUCitVTkxJTktBVAorCisiIiIuc3RyaXAoKS5zcGxpdCgpOgorICAgIHMgPSBzLnN0cmlwKCkKKyAgICBwcmludCgiIiIKKyNpZmRlZiBIQVZFX3tzfQorICAgICNkZWZpbmUge3N9X0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgogI2Vsc2UKLSAgICAjZGVmaW5lIE9TX1NUQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyAgICAjZGVmaW5lIHtzfV9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF91bmF2YWlsYWJsZQorI2VuZGlmCisiIiIucnN0cmlwKCkuZm9ybWF0KHM9cykpCisKK2ZvciBzIGluICIiIgorCitGQ0hESVIKK0ZDSE1PRAorRkNIT1dOCitGRE9QRU5ESVIKK0ZFWEVDVkUKK0ZQQVRIQ09ORgorRlNUQVRWRlMKK0ZUUlVOQ0FURQorCisiIiIuc3RyaXAoKS5zcGxpdCgpOgorICAgIHMgPSBzLnN0cmlwKCkKKyAgICBwcmludCgiIiIKKyNpZmRlZiBIQVZFX3tzfQorICAgICNkZWZpbmUgUEFUSF9IQVZFX3tzfSAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX3tzfSAwCiAjZW5kaWYKIAorIiIiLnJzdHJpcCgpLmZvcm1hdChzPXMpKQorW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWZkZWYgSEFWRV9GQUNDRVNTQVQKKyAgICAjZGVmaW5lIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBGQUNDRVNTQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICNkZWZpbmUgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgICNkZWZpbmUgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgI2RlZmluZSBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSU5LQVQKKyAgICAjZGVmaW5lIExJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgI2RlZmluZSBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0ZJRk9BVAorICAgICNkZWZpbmUgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgI2RlZmluZSBNS05PREFUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICAjZGVmaW5lIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgI2RlZmluZSBSRUFETElOS0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIFJFQURMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWU1MSU5LQVQKKyAgICAjZGVmaW5lIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSIGRpcl9mZF9jb252ZXJ0ZXIKKyNlbHNlCisgICAgI2RlZmluZSBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICNkZWZpbmUgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCisjZWxzZQorICAgICNkZWZpbmUgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hESVIKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hESVIgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GQ0hESVIgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PRAorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSE1PRCAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZDSE1PRCAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIT1dOCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNIT1dOIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkNIT1dOIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GRE9QRU5ESVIKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRE9QRU5ESVIgMQorI2Vsc2UKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRE9QRU5ESVIgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICAjZGVmaW5lIFBBVEhfSEFWRV9GRVhFQ1ZFIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRkVYRUNWRSAwCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlBBVEhDT05GIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlBBVEhDT05GIDAKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZTVEFUVkZTIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX0hBVkVfRlNUQVRWRlMgMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZUUlVOQ0FURSAxCisjZWxzZQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZUUlVOQ0FURSAwCisjZW5kaWYKKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YmQ0ZjZmN2Q0MTI2N2YxIGlucHV0PTgwYjRjODkwYjY3NzRlYTVdKi8KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAjdW5kZWYgUEFUSF9IQVZFX0ZUUlVOQ0FURQorICAgICNkZWZpbmUgUEFUSF9IQVZFX0ZUUlVOQ0FURSAxCisjZW5kaWYKIAogLypbcHl0aG9uIGlucHV0XQogCkBAIC0yNDA1LDIyICsyMzM5LDI1IEBACiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGFsbG93X2ZkPUZhbHNlLCBudWxsYWJsZT1GYWxzZSk6CiAgICAgICAgICMgcmlnaHQgbm93IHBhdGhfdCBkb2Vzbid0IHN1cHBvcnQgZGVmYXVsdCB2YWx1ZXMuCiAgICAgICAgICMgdG8gc3VwcG9ydCBhIGRlZmF1bHQgdmFsdWUsIHlvdSdsbCBuZWVkIHRvIG92ZXJyaWRlIGluaXRpYWxpemUoKS4KLSAgICAgICAgaWYgc2VsZi5kZWZhdWx0IGlzIG5vdCB1bnNwZWNpZmllZDoKKyAgICAgICAgaWYgc2VsZi5kZWZhdWx0IG5vdCBpbiAodW5zcGVjaWZpZWQsIE5vbmUpOgogICAgICAgICAgICAgZmFpbCgiQ2FuJ3Qgc3BlY2lmeSBhIGRlZmF1bHQgdG8gdGhlIHBhdGhfdCBjb252ZXJ0ZXIhIikKIAotICAgICAgICBpZiBzZWxmLmNfZGVmYXVsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZhaWwoIkNhbid0IHNwZWNpZnkgYSBjX2RlZmF1bHQgdG8gdGhlIHBhdGhfdCBjb252ZXJ0ZXIhIikKKyAgICAgICAgaWYgc2VsZi5jX2RlZmF1bHQgbm90IGluIChOb25lLCAnUHlfTm9uZScpOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW4ndCBzcGVjaWZ5IGEgY19kZWZhdWx0IHRvIHRoZSBwYXRoX3QgY29udmVydGVyISIpCiAKICAgICAgICAgc2VsZi5udWxsYWJsZSA9IG51bGxhYmxlCiAgICAgICAgIHNlbGYuYWxsb3dfZmQgPSBhbGxvd19mZAogCiAgICAgZGVmIHByZV9yZW5kZXIoc2VsZik6CiAgICAgICAgIGRlZiBzdHJpZnkodmFsdWUpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgICAgIHJldHVybiBzdHIoaW50KGJvb2wodmFsdWUpKSkKIAogICAgICAgICAjIGFkZCBzZWxmLnB5X25hbWUgaGVyZSB3aGVuIG1lcmdpbmcgd2l0aCBwb3NpeG1vZHVsZSBjb252ZXJzaW9uCi0gICAgICAgIHNlbGYuY19kZWZhdWx0ID0gJ1BBVEhfVF9JTklUSUFMSVpFKCJ7fSIsIHt9LCB7fSknLmZvcm1hdCgKKyAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAnUEFUSF9UX0lOSVRJQUxJWkUoInt9IiwgInt9Iiwge30sIHt9KScuZm9ybWF0KAogICAgICAgICAgICAgc2VsZi5mdW5jdGlvbi5uYW1lLAorICAgICAgICAgICAgc2VsZi5uYW1lLAogICAgICAgICAgICAgc3RyaWZ5KHNlbGYubnVsbGFibGUpLAogICAgICAgICAgICAgc3RyaWZ5KHNlbGYuYWxsb3dfZmQpLAogICAgICAgICAgICAgKQpAQCAtMjQzMSwxNSArMjM2OCw4NyBAQAogCiBjbGFzcyBkaXJfZmRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnaW50JwotICAgIGNvbnZlcnRlciA9ICdPU19TVEFUX0RJUl9GRF9DT05WRVJURVInCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZik6CisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsIHJlcXVpcmVzPU5vbmUpOgogICAgICAgICBpZiBzZWxmLmRlZmF1bHQgaW4gKHVuc3BlY2lmaWVkLCBOb25lKToKICAgICAgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gJ0RFRkFVTFRfRElSX0ZEJworICAgICAgICBpZiBpc2luc3RhbmNlKHJlcXVpcmVzLCBzdHIpOgorICAgICAgICAgICAgc2VsZi5jb252ZXJ0ZXIgPSByZXF1aXJlcy51cHBlcigpICsgJ19ESVJfRkRfQ09OVkVSVEVSJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jb252ZXJ0ZXIgPSAnZGlyX2ZkX2NvbnZlcnRlcicKIAorY2xhc3MgZmlsZGVzX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludCcKKyAgICBjb252ZXJ0ZXIgPSAnZmlsZGVzX2NvbnZlcnRlcicKKworY2xhc3MgdWlkX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAidWlkX3QiCisgICAgY29udmVydGVyID0gJ19QeV9VaWRfQ29udmVydGVyJworCitjbGFzcyBnaWRfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICJnaWRfdCIKKyAgICBjb252ZXJ0ZXIgPSAnX1B5X0dpZF9Db252ZXJ0ZXInCisKK2NsYXNzIGRldl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2Rldl90JworICAgIGNvbnZlcnRlciA9ICdfUHlfRGV2X0NvbnZlcnRlcicKKworY2xhc3MgZGV2X3RfcmV0dXJuX2NvbnZlcnRlcih1bnNpZ25lZF9sb25nX3JldHVybl9jb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnZGV2X3QnCisgICAgY29udmVyc2lvbl9mbiA9ICdfUHlMb25nX0Zyb21EZXYnCisgICAgdW5zaWduZWRfY2FzdCA9ICcoZGV2X3QpJworCitjbGFzcyBGU0NvbnZlcnRlcl9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeU9iamVjdCAqJworICAgIGNvbnZlcnRlciA9ICdQeVVuaWNvZGVfRlNDb252ZXJ0ZXInCisgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmRlZmF1bHQgaXMgbm90IHVuc3BlY2lmaWVkOgorICAgICAgICAgICAgZmFpbCgiRlNDb252ZXJ0ZXJfY29udmVydGVyIGRvZXMgbm90IHN1cHBvcnQgZGVmYXVsdCB2YWx1ZXMiKQorICAgICAgICBzZWxmLmNfZGVmYXVsdCA9ICdOVUxMJworCisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgIHJldHVybiAiUHlfWERFQ1JFRigiICsgc2VsZi5uYW1lICsgIik7XG4iCisKK2NsYXNzIHBpZF90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3BpZF90JworICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX1BJRCAiJworCitjbGFzcyBpZHR5cGVfdF9jb252ZXJ0ZXIoaW50X2NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpZHR5cGVfdCcKKworY2xhc3MgaWRfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpZF90JworICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX1BJRCAiJworCitjbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9JTlRQVFIgIicKKworY2xhc3MgUHlfb2ZmX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfb2ZmX3QnCisgICAgY29udmVydGVyID0gJ1B5X29mZl90X2NvbnZlcnRlcicKKworY2xhc3MgUHlfb2ZmX3RfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfb2ZmX3QnCisgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVB5X29mZl90JworCitjbGFzcyBwYXRoX2NvbmZuYW1lX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlPSJpbnQiCisgICAgY29udmVydGVyPSJjb252X3BhdGhfY29uZm5hbWUiCisKK2NsYXNzIGNvbmZzdHJfY29uZm5hbWVfY29udmVydGVyKHBhdGhfY29uZm5hbWVfY29udmVydGVyKToKKyAgICBjb252ZXJ0ZXI9J2NvbnZfY29uZnN0cl9jb25mbmFtZScKKworY2xhc3Mgc3lzY29uZl9jb25mbmFtZV9jb252ZXJ0ZXIocGF0aF9jb25mbmFtZV9jb252ZXJ0ZXIpOgorICAgIGNvbnZlcnRlcj0iY29udl9zeXNjb25mX2NvbmZuYW1lIgorCitjbGFzcyBzY2hlZF9wYXJhbV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdzdHJ1Y3Qgc2NoZWRfcGFyYW0nCisgICAgY29udmVydGVyID0gJ2NvbnZlcnRfc2NoZWRfcGFyYW0nCisgICAgaW1wbF9ieV9yZWZlcmVuY2UgPSBUcnVlOwogCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01YzlmNDU2ZjUzMjQ0ZmMzXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1hZmZlNjgzMTZmMTYwNDAxXSovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIApAQCAtMjQ1MCw3ICsyNDU5LDcgQEAKIAogICAgICoKIAotICAgIGRpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZzdGF0YXQnKSA9IE5vbmUKICAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAogICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgYSByZWxhdGl2ZSBzdHJpbmc7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvCiAgICAgICAgIHRoYXQgZGlyZWN0b3J5LgpAQCAtMjQ3MSwxMDMgKzI0ODAsNDEgQEAKIAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIob3Nfc3RhdF9fZG9jX18sCi0ic3RhdCgkbW9kdWxlLCAvLCBwYXRoLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCi0iLS1cbiIKLSJcbiIKLSJQZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cbiIKLSJcbiIKLSIgIHBhdGhcbiIKLSIgICAgUGF0aCB0byBiZSBleGFtaW5lZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKLSIgIGRpcl9mZFxuIgotIiAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG4iCi0iICAgIGFuZCBwYXRoIHNob3VsZCBiZSBhIHJlbGF0aXZlIHN0cmluZzsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG9cbiIKLSIgICAgdGhhdCBkaXJlY3RvcnkuXG4iCi0iICBmb2xsb3dfc3ltbGlua3NcbiIKLSIgICAgSWYgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMgbGluayxcbiIKLSIgICAgc3RhdCB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcbiIKLSIgICAgdGhlIGxpbmsgcG9pbnRzIHRvLlxuIgotIlxuIgotImRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWRcbiIKLSIgIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcbiIKLSIgIE5vdEltcGxlbWVudGVkRXJyb3IuXG4iCi0iXG4iCi0iSXRcJ3MgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcbiIKLSIgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOwotCi0jZGVmaW5lIE9TX1NUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXRfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXQiLCAwLCAxKTsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgT1NfU1RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7Ci0KLWV4aXQ6Ci0gICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0KLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMWRjYWE1ZTI0ZGI5ODgyIGlucHV0PTVhZTE1NWJkNDc1ZmQyMGFdKi8KK29zX3N0YXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNGY3NTY5Zjk1ZDUyM2NhIGlucHV0PTA5OWQzNTZjMzA2ZmEyNGFdKi8KIHsKICAgICByZXR1cm4gcG9zaXhfZG9fc3RhdCgic3RhdCIsIHBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2xzdGF0X19kb2NfXywKLSJsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KCksIGJ1dCBkbyBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAotRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxzdGF0CisKKyAgICBwYXRoIDogcGF0aF90CisKKyAgICAqCisKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J2ZzdGF0YXQnKSA9IE5vbmUKKworUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGgsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLgorCitMaWtlIHN0YXQoKSwgYnV0IGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCitFcXVpdmFsZW50IHRvIHN0YXQocGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xzdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdhNzQ4ZTMzM2ZjYjM5YmQgaW5wdXQ9MGI3NDc0NzY1OTI3YjkyNV0qLwogewotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsc3RhdCI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOmxzdGF0Iiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX0ZTVEFUQVQKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAotI2Vsc2UKLSAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZG9fc3RhdCgibHN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICByZXR1cm4gcG9zaXhfZG9fc3RhdCgibHN0YXQiLCBwYXRoLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiB9CiAKIAotI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCi0gICAgI2RlZmluZSBPU19BQ0NFU1NfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfY29udmVydGVyCi0jZWxzZQotICAgICNkZWZpbmUgT1NfQUNDRVNTX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX3VuYXZhaWxhYmxlCi0jZW5kaWYKIC8qW2NsaW5pYyBpbnB1dF0KLW9zLmFjY2Vzcworb3MuYWNjZXNzIC0+IGJvb2wKIAogICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlKQogICAgICAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC4KQEAgLTI1NzgsNyArMjUyNSw3IEBACiAKICAgICAqCiAKLSAgICBkaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmYWNjZXNzYXQnKSA9IE5vbmUKICAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAogICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQKICAgICAgICAgZGlyZWN0b3J5LgpAQCAtMjYwNSw3MyArMjU1MiwxMiBAQAogCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihvc19hY2Nlc3NfX2RvY19fLAotImFjY2VzcygkbW9kdWxlLCAvLCBwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSxcbiIKLSIgICAgICAgZm9sbG93X3N5bWxpbmtzPVRydWUpXG4iCi0iLS1cbiIKLSJcbiIKLSJVc2UgdGhlIHJlYWwgdWlkL2dpZCB0byB0ZXN0IGZvciBhY2Nlc3MgdG8gYSBwYXRoLlxuIgotIlxuIgotIiAgcGF0aFxuIgotIiAgICBQYXRoIHRvIGJlIHRlc3RlZDsgY2FuIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9wZW4tZmlsZS1kZXNjcmlwdG9yIGludC5cbiIKLSIgIG1vZGVcbiIKLSIgICAgT3BlcmF0aW5nLXN5c3RlbSBtb2RlIGJpdGZpZWxkLiAgQ2FuIGJlIEZfT0sgdG8gdGVzdCBleGlzdGVuY2UsXG4iCi0iICAgIG9yIHRoZSBpbmNsdXNpdmUtT1Igb2YgUl9PSywgV19PSywgYW5kIFhfT0suXG4iCi0iICBkaXJfZmRcbiIKLSIgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuIgotIiAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXRcbiIKLSIgICAgZGlyZWN0b3J5LlxuIgotIiAgZWZmZWN0aXZlX2lkc1xuIgotIiAgICBJZiBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcbiIKLSIgICAgdGhlIHJlYWwgdWlkL2dpZC5cbiIKLSIgIGZvbGxvd19zeW1saW5rc1xuIgotIiAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLFxuIgotIiAgICBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG4iCi0iICAgIHRoZSBsaW5rIHBvaW50cyB0by5cbiIKLSJcbiIKLSJkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZFxuIgotIiAgb24geW91ciBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYVxuIgotIiAgTm90SW1wbGVtZW50ZWRFcnJvci5cbiIKLSJcbiIKLSJOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXNcbiIKLSIgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuIgotIiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiIpOwotCi0jZGVmaW5lIE9TX0FDQ0VTU19NRVRIT0RERUYgICAgXAotICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2FjY2Vzc19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorc3RhdGljIGludAorb3NfYWNjZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgIGludCBlZmZlY3RpdmVfaWRzLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFiYWE1MzM0MDIxMDA4OGQgaW5wdXQ9Yjc1YTc1Njc5N2FmNDVlY10qLwogewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsIDAsIDEpOwotICAgIGludCBtb2RlOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZWZmZWN0aXZlX2lkcyA9IDA7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICJPJml8JE8mcHA6YWNjZXNzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBPU19TVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZlZmZlY3RpdmVfaWRzLCAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX2FjY2Vzc19pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZWZmZWN0aXZlX2lkcywgZm9sbG93X3N5bWxpbmtzKTsKLQotZXhpdDoKLSAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLQotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1vc19hY2Nlc3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLCBpbnQgZWZmZWN0aXZlX2lkcywgaW50IGZvbGxvd19zeW1saW5rcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNmVkNGYxNTFiZTlkZjBmIGlucHV0PTJlMmU3NTk0MzcxZjViN2VdKi8KLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7CkBAIC0yNjgxLDExICsyNTY3LDExIEBACiAKICNpZm5kZWYgSEFWRV9GQUNDRVNTQVQKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiYWNjZXNzIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZWZmZWN0aXZlX2lkcykgewogICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcigiYWNjZXNzIiwgImVmZmVjdGl2ZV9pZHMiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogI2VuZGlmCiAKQEAgLTI3MDUsMTEgKzI1OTEsMTAgQEAKICAgICAgKiAgICAgKiBvciBpdCdzIGEgZGlyZWN0b3J5LgogICAgICAqIChEaXJlY3RvcmllcyBjYW5ub3QgYmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MuKQogICAgICovCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKAotICAgICAgICAoYXR0ciAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgJiYKKyAgICByZXR1cm5fdmFsdWUgPSAoYXR0ciAhPSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgJiYKICAgICAgICAgICAgICghKG1vZGUgJiAyKSB8fAogICAgICAgICAgICAgIShhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpIHx8Ci0gICAgICAgICAgICAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpKTsKKyAgICAgICAgICAgIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSk7CiAjZWxzZQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjcyOCwxMiArMjYxMyw5IEBACiAjZW5kaWYKICAgICAgICAgcmVzdWx0ID0gYWNjZXNzKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoIXJlc3VsdCk7CisgICAgcmV0dXJuX3ZhbHVlID0gIXJlc3VsdDsKICNlbmRpZgogCi0jaWZuZGVmIEhBVkVfRkFDQ0VTU0FUCi1leGl0OgotI2VuZGlmCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIApAQCAtMjc1Miw3ICsyNjM0LDYgQEAKIAogCiAjaWZkZWYgSEFWRV9UVFlOQU1FCi0KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLnR0eW5hbWUgLT4gRGVjb2RlRlNEZWZhdWx0CiAKQEAgLTI3NjQsNDQgKzI2NDUsOSBAQAogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB0ZXJtaW5hbCBkZXZpY2UgY29ubmVjdGVkIHRvICdmZCcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihvc190dHluYW1lX19kb2NfXywKLSJ0dHluYW1lKCRtb2R1bGUsIGZkLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSB0ZXJtaW5hbCBkZXZpY2UgY29ubmVjdGVkIHRvIFwnZmRcJy5cbiIKLSJcbiIKLSIgIGZkXG4iCi0iICAgIEludGVnZXIgZmlsZSBkZXNjcmlwdG9yIGhhbmRsZS4iKTsKLQotI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJ0dHluYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3R0eW5hbWUsIE1FVEhfVkFSQVJHUywgb3NfdHR5bmFtZV9fZG9jX199LAotCi1zdGF0aWMgY2hhciAqCi1vc190dHluYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLW9zX3R0eW5hbWUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IGZkOwotICAgIGNoYXIgKl9yZXR1cm5fdmFsdWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgImk6dHR5bmFtZSIsCi0gICAgICAgICZmZCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICBfcmV0dXJuX3ZhbHVlID0gb3NfdHR5bmFtZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KF9yZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBjaGFyICoKIG9zX3R0eW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2VlN2JjNGNmZmVjMDFhMiBpbnB1dD01ZjcyY2E4M2U3NmIzYjQ1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDNhZDNkNWNjYWVmNzVjMyBpbnB1dD01ZjcyY2E4M2U3NmIzYjQ1XSovCiB7CiAgICAgY2hhciAqcmV0OwogCkBAIC0yODEwLDE3ICsyNjU2LDE4IEBACiAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIHJldDsKIH0KLSNlbHNlCi0jZGVmaW5lIE9TX1RUWU5BTUVfTUVUSE9EREVGCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfQ1RFUk1JRAotUHlEb2NfU1RSVkFSKHBvc2l4X2N0ZXJtaWRfX2RvY19fLAotImN0ZXJtaWQoKSAtPiBzdHJpbmdcblxuXAotUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBmb3IgdGhpcyBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY3Rlcm1pZAorCitSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIGZvciB0aGlzIHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jdGVybWlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfY3Rlcm1pZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWI3Mzc4ODIwMWUwYWViZCBpbnB1dD0zYjg3ZmRkNTI1NTYzODJkXSovCiB7CiAgICAgY2hhciAqcmV0OwogICAgIGNoYXIgYnVmZmVyW0xfY3Rlcm1pZF07CkBAIC0yODM0LDEwNiArMjY4MSwxMTIgQEAKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYnVmZmVyKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfQ1RFUk1JRCAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfY2hkaXJfX2RvY19fLAotImNoZGlyKHBhdGgpXG5cblwKLUNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuY2hkaXIKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZDSERJUicpCisKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczNThlM2EyMGZiNWFhOTMgaW5wdXQ9MWE0YTE1YjRkMTJjYjE1ZF0qLwogewotICAgIHBhdGhfdCBwYXRoOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2hkaXIiOwotI2lmZGVmIEhBVkVfRkNIRElSCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaGRpciIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgKLSAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLndpZGUpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICByZXN1bHQgPSB3aW4zMl93Y2hkaXIocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2NoZGlyKHBhdGgtPm5hcnJvdyk7CiAgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLwogI2Vsc2UKICNpZmRlZiBIQVZFX0ZDSERJUgotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXN1bHQgPSBmY2hkaXIocGF0aC5mZCk7CisgICAgaWYgKHBhdGgtPmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2hkaXIocGF0aC0+ZmQpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaGRpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IGNoZGlyKHBhdGgtPm5hcnJvdyk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKwogI2lmZGVmIEhBVkVfRkNIRElSCi1QeURvY19TVFJWQVIocG9zaXhfZmNoZGlyX19kb2NfXywKLSJmY2hkaXIoZmQpXG5cblwKLUNoYW5nZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuICBmZCBtdXN0IGJlXG5cCi1vcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuICBFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZjaGRpcgorCisgICAgZmQ6IGZpbGRlcworCitDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLgorCitmZCBtdXN0IGJlIG9wZW5lZCBvbiBhIGRpcmVjdG9yeSwgbm90IGEgZmlsZS4KK0VxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mY2hkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmZG9iaikKK29zX2ZjaGRpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjFkMzBkZjZiMmQzNDE4IGlucHV0PTE4ZTgxNjQ3OWEyZmE5ODVdKi8KIHsKLSAgICByZXR1cm4gcG9zaXhfZmlsZGVzKGZkb2JqLCBmY2hkaXIpOworICAgIHJldHVybiBwb3NpeF9maWxkZXNfZmQoZmQsIGZjaGRpcik7CiB9CiAjZW5kaWYgLyogSEFWRV9GQ0hESVIgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfY2htb2RfX2RvY19fLAotImNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLlxuXAotXG5cCi1wYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGNobW9kIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAotICBsaW5rIHBvaW50cyB0by5cblwKLUl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCi0gIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmNobW9kCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GQ0hNT0QnKQorICAgICAgICBQYXRoIHRvIGJlIG1vZGlmaWVkLiAgTWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHIgb3IgYnl0ZXMuCisgICAgICAgIE9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgICAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICAgbW9kZTogaW50CisgICAgICAgIE9wZXJhdGluZy1zeXN0ZW0gbW9kZSBiaXRmaWVsZC4KKworICAgICoKKworICAgIGRpcl9mZCA6IGRpcl9mZChyZXF1aXJlcz0nZmNobW9kYXQnKSA9IE5vbmUKKyAgICAgICAgSWYgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICAgICAgICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQKKyAgICAgICAgZGlyZWN0b3J5LgorCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorICAgICAgICBJZiBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYyBsaW5rLAorICAgICAgICBjaG1vZCB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICAgICAgICB0aGUgbGluayBwb2ludHMgdG8uCisKK0NoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4KKworSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXMKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaG1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsCisgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDVlN2Y3M2IxYTg0M2JhMiBpbnB1dD03ZjE2MThlNWUxNWNjMTk2XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGU7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBEV09SRCBhdHRyOwpAQCAtMjk0MywzMyArMjc5NiwxNyBAQAogICAgIGludCBmY2htb2RhdF9ub2ZvbGxvd191bnN1cHBvcnRlZCA9IDA7CiAjZW5kaWYKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAiY2htb2QiOwotI2lmZGVmIEhBVkVfRkNITU9ECi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8JE8mcDpjaG1vZCIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICZtb2RlLAotI2lmZGVmIEhBVkVfRkNITU9EQVQKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZCwKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKLSNlbmRpZgotICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZiAhKGRlZmluZWQoSEFWRV9GQ0hNT0RBVCkgfHwgZGVmaW5lZChIQVZFX0xDSE1PRCkpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNobW9kIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgud2lkZSk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93KTsKKyAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOwogICAgIGlmIChhdHRyID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICByZXN1bHQgPSAwOwogICAgIGVsc2UgewpAQCAtMjk3NywyNyArMjgxNCwyNiBAQAogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlLCBhdHRyKTsKKyAgICAgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSwgYXR0cik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLm5hcnJvdywgYXR0cik7CisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93LCBhdHRyKTsKICAgICB9CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9GQ0hNT0QKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGguZmQsIG1vZGUpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kKHBhdGgtPmZkLCBtb2RlKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX0xDSE1PRAogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCi0gICAgICAgIHJlc3VsdCA9IGxjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IGxjaG1vZChwYXRoLT5uYXJyb3csIG1vZGUpOwogICAgIGVsc2UKICNlbmRpZgogI2lmZGVmIEhBVkVfRkNITU9EQVQKQEAgLTMwMTIsNyArMjg0OCw3IEBACiAgICAgICAgICAqIHN1cHBvcnQgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3M9RmFsc2UuICAoSG9wZWZ1bGx5LikKICAgICAgICAgICogVW50aWwgdGhlbiwgd2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgZXhjZXB0aW9uIHdlIHJhaXNlLgogICAgICAgICAgKi8KLSAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSwKKyAgICAgICAgcmVzdWx0ID0gZmNobW9kYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKICAgICAgICAgLyoKICAgICAgICAgICogQnV0IHdhaXQhICBXZSBjYW4ndCB0aHJvdyB0aGUgZXhjZXB0aW9uIHdpdGhvdXQgYWxsb3dpbmcgdGhyZWFkcywKQEAgLTMwMjUsNyArMjg2MSw3IEBACiAgICAgfQogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IGNobW9kKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpIHsKQEAgLTMwMzksMjcyICsyODc1LDI4OSBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKICNpZmRlZiBIQVZFX0ZDSE1PRAotUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaG1vZF9fZG9jX18sCi0iZmNobW9kKGZkLCBtb2RlKVxuXG5cCi1DaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlXG5cCi1kZXNjcmlwdG9yIGZkLiAgRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mY2htb2QKKworICAgIGZkOiBpbnQKKyAgICBtb2RlOiBpbnQKKworQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgZmlsZSBkZXNjcmlwdG9yIGZkLgorCitFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19mY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJlZTMxY2EyMjZkMWVkMzMgaW5wdXQ9OGFiMTE5NzVjYTAxZWU1Yl0qLwogewotICAgIGludCBmZCwgbW9kZSwgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6ZmNobW9kIiwgJmZkLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBmY2htb2QoZmQsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGludCByZXM7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gZmNobW9kKGZkLCBtb2RlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZDSE1PRCAqLwogCisKICNpZmRlZiBIQVZFX0xDSE1PRAotUHlEb2NfU1RSVkFSKHBvc2l4X2xjaG1vZF9fZG9jX18sCi0ibGNobW9kKHBhdGgsIG1vZGUpXG5cblwKLUNoYW5nZSB0aGUgYWNjZXNzIHBlcm1pc3Npb25zIG9mIGEgZmlsZS4gSWYgcGF0aCBpcyBhIHN5bWxpbmssIHRoaXNcblwKLWFmZmVjdHMgdGhlIGxpbmsgaXRzZWxmIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuXG5cCi1FcXVpdmFsZW50IHRvIGNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sY2htb2QKKworICAgIHBhdGg6IHBhdGhfdAorICAgIG1vZGU6IGludAorCitDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUsIHdpdGhvdXQgZm9sbG93aW5nIHN5bWJvbGljIGxpbmtzLgorCitJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcyBhZmZlY3RzIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LgorRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xjaG1vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sY2htb2RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjMGNjNDY1ODhkODllNDYgaW5wdXQ9OTBjNTY2M2M3NDY1ZDI0Zl0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBpOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2htb2QiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmxjaG1vZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNobW9kKHBhdGgubmFycm93LCBpKTsKKyAgICByZXMgPSBsY2htb2QocGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0xDSE1PRCAqLwogCiAKICNpZmRlZiBIQVZFX0NIRkxBR1MKLVB5RG9jX1NUUlZBUihwb3NpeF9jaGZsYWdzX19kb2NfXywKLSJjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotU2V0IGZpbGUgZmxhZ3MuXG5cCi1cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBjaGZsYWdzIHdpbGwgY2hhbmdlIGZsYWdzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZVxuXAotICBmaWxlIHRoZSBsaW5rIHBvaW50cyB0by5cblwKLWZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uICBJZiBpdCBpc1xuXAotdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2hmbGFncworCisgICAgcGF0aDogcGF0aF90CisgICAgZmxhZ3M6IHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKQorICAgIGZvbGxvd19zeW1saW5rczogYm9vbD1UcnVlCisKK1NldCBmaWxlIGZsYWdzLgorCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uCitmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgaXQgaXMKK3VuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGZsYWdzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmYyZDZlNzM1MzRhOTViOSBpbnB1dD0wMzI3ZTI5ZmViODc2MjM2XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaGZsYWdzIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8JGk6Y2hmbGFncyIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZuZGVmIEhBVkVfTENIRkxBR1MKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZCgiY2hmbGFncyIsIGZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0xDSEZMQUdTCiAgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IGxjaGZsYWdzKHBhdGgtPm5hcnJvdywgZmxhZ3MpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IGNoZmxhZ3MocGF0aC0+bmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCiAKKwogI2lmZGVmIEhBVkVfTENIRkxBR1MKLVB5RG9jX1NUUlZBUihwb3NpeF9sY2hmbGFnc19fZG9jX18sCi0ibGNoZmxhZ3MocGF0aCwgZmxhZ3MpXG5cblwKLVNldCBmaWxlIGZsYWdzLlxuXAotVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCi1FcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sY2hmbGFncworCisgICAgcGF0aDogcGF0aF90CisgICAgZmxhZ3M6IHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKQorCitTZXQgZmlsZSBmbGFncy4KKworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuCitFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sY2hmbGFnc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NzQxMzIyZmI5NDk2NjFiIGlucHV0PWY5ZjgyZWE4YjU4NWNhOWRdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCByZXM7Ci0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJsY2hmbGFncyI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJms6bGNoZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBsY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOworICAgIHJlcyA9IGxjaGZsYWdzKHBhdGgtPm5hcnJvdywgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0xDSEZMQUdTICovCiAKKwogI2lmZGVmIEhBVkVfQ0hST09UCi1QeURvY19TVFJWQVIocG9zaXhfY2hyb290X19kb2NfXywKLSJjaHJvb3QocGF0aClcblxuXAotQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5jaHJvb3QKKyAgICBwYXRoOiBwYXRoX3QKKworQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nocm9vdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jaHJvb3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZkYmZhYmU3NGVjYWE5ZCBpbnB1dD0xNDgyMjk2NTY1MmMzZGMzXSovCiB7Ci0gICAgcmV0dXJuIHBvc2l4XzFzdHIoImNocm9vdCIsIGFyZ3MsICJPJjpjaHJvb3QiLCBjaHJvb3QpOworICAgIGludCByZXM7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IGNocm9vdChwYXRoLT5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9DSFJPT1QgKi8KKwogCiAjaWZkZWYgSEFWRV9GU1lOQwotUHlEb2NfU1RSVkFSKHBvc2l4X2ZzeW5jX19kb2NfXywKLSJmc3luYyhmaWxkZXMpXG5cblwKLWZvcmNlIHdyaXRlIG9mIGZpbGUgd2l0aCBmaWxlZGVzY3JpcHRvciB0byBkaXNrLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZnN5bmMKKworICAgIGZkOiBmaWxkZXMKKworRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzeW5jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmRvYmopCitvc19mc3luY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04M2EzNTA4NTEwNjRhZWE3IGlucHV0PTIxYzM2NDVjMDU2OTY3ZjJdKi8KIHsKLSAgICByZXR1cm4gcG9zaXhfZmlsZGVzKGZkb2JqLCBmc3luYyk7CisgICAgcmV0dXJuIHBvc2l4X2ZpbGRlc19mZChmZCwgZnN5bmMpOwogfQogI2VuZGlmIC8qIEhBVkVfRlNZTkMgKi8KIAorCiAjaWZkZWYgSEFWRV9TWU5DCi1QeURvY19TVFJWQVIocG9zaXhfc3luY19fZG9jX18sCi0ic3luYygpXG5cblwKLUZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5bmMKKworRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3N5bmNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNTI0ZjY1NmMyMDFjNDAgaW5wdXQ9ODQ3NDlmZTVlOWI0MDRmZl0qLwogewogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBzeW5jKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU1lOQyAqLworCiAKICNpZmRlZiBIQVZFX0ZEQVRBU1lOQwotCiAjaWZkZWYgX19ocHV4CiBleHRlcm4gaW50IGZkYXRhc3luYyhpbnQpOyAvKiBPbiBIUC1VWCwgaW4gbGliYyBidXQgbm90IGluIHVuaXN0ZC5oICovCiAjZW5kaWYKIAotUHlEb2NfU1RSVkFSKHBvc2l4X2ZkYXRhc3luY19fZG9jX18sCi0iZmRhdGFzeW5jKGZpbGRlcylcblxuXAotZm9yY2Ugd3JpdGUgb2YgZmlsZSB3aXRoIGZpbGVkZXNjcmlwdG9yIHRvIGRpc2suXG5cCi0gZG9lcyBub3QgZm9yY2UgdXBkYXRlIG9mIG1ldGFkYXRhLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZmRhdGFzeW5jCisKKyAgICBmZDogZmlsZGVzCisKK0ZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2sgd2l0aG91dCBmb3JjaW5nIHVwZGF0ZSBvZiBtZXRhZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZkYXRhc3luYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZkb2JqKQorb3NfZmRhdGFzeW5jX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwZjA0YTNhZmY1MTViNzUgaW5wdXQ9YmM3NDc5MWVlNTRkZDI5MV0qLwogewotICAgIHJldHVybiBwb3NpeF9maWxkZXMoZmRvYmosIGZkYXRhc3luYyk7CisgICAgcmV0dXJuIHBvc2l4X2ZpbGRlc19mZChmZCwgZmRhdGFzeW5jKTsKIH0KICNlbmRpZiAvKiBIQVZFX0ZEQVRBU1lOQyAqLwogCiAKICNpZmRlZiBIQVZFX0NIT1dOCi1QeURvY19TVFJWQVIocG9zaXhfY2hvd25fX2RvY19fLAotImNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLUNoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCi0gIGxpbmsgcG9pbnRzIHRvLlxuXAotSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKLSAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1kaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2hvd24KKworICAgIHBhdGggOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GQ0hPV04nKQorICAgICAgICBQYXRoIHRvIGJlIGV4YW1pbmVkOyBjYW4gYmUgc3RyaW5nLCBieXRlcywgb3Igb3Blbi1maWxlLWRlc2NyaXB0b3IgaW50LgorCisgICAgdWlkOiB1aWRfdAorCisgICAgZ2lkOiBnaWRfdAorCisgICAgKgorCisgICAgZGlyX2ZkIDogZGlyX2ZkKHJlcXVpcmVzPSdmY2hvd25hdCcpID0gTm9uZQorICAgICAgICBJZiBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgICAgICAgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdAorICAgICAgICBkaXJlY3RvcnkuCisKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisgICAgICAgIElmIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljIGxpbmssCisgICAgICAgIHN0YXQgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlCisgICAgICAgIHRoZSBsaW5rIHBvaW50cyB0by4KKworQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cCisKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgY2hvd24gd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlCisgIGxpbmsgcG9pbnRzIHRvLgorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXMKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaG93bl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsCisgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBhNDU1OWYzOTRkYmQ5MSBpbnB1dD1hNjFjYzM1NTc0ODE0ZDVkXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgdWlkX3QgdWlkOwotICAgIGdpZF90IGdpZDsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAgICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJjaG93biI7Ci0jaWZkZWYgSEFWRV9GQ0hPV04KLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZPJnwkTyZwOmNob3duIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLAotI2lmZGVmIEhBVkVfRkNIT1dOQVQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICNpZiAhKGRlZmluZWQoSEFWRV9MQ0hPV04pIHx8IGRlZmluZWQoSEFWRV9GQ0hPV05BVCkpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgotICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAotICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNob3duIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OworICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLT5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG93biIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogI2lmZGVmIF9fQVBQTEVfXwogICAgIC8qCkBAIC0zMzE1LDEwMiArMzE2OCw5OCBAQAogICAgICAqLwogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGxjaG93biA9PSBOVUxMKSkgewogICAgICAgICBmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG93biIsIGZvbGxvd19zeW1saW5rcyk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9GQ0hPV04KLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzdWx0ID0gZmNob3duKHBhdGguZmQsIHVpZCwgZ2lkKTsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bihwYXRoLT5mZCwgdWlkLCBnaWQpOwogICAgIGVsc2UKICNlbmRpZgogI2lmZGVmIEhBVkVfTENIT1dOCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKLSAgICAgICAgcmVzdWx0ID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgICAgIHJlc3VsdCA9IGxjaG93bihwYXRoLT5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZmRlZiBIQVZFX0ZDSE9XTkFUCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmVzdWx0ID0gZmNob3duYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgdWlkLCBnaWQsCisgICAgICAgIHJlc3VsdCA9IGZjaG93bmF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCB1aWQsIGdpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBjaG93bihwYXRoLm5hcnJvdywgdWlkLCBnaWQpOworICAgICAgICByZXN1bHQgPSBjaG93bihwYXRoLT5uYXJyb3csIHVpZCwgZ2lkKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAKKwogI2lmZGVmIEhBVkVfRkNIT1dOCi1QeURvY19TVFJWQVIocG9zaXhfZmNob3duX19kb2NfXywKLSJmY2hvd24oZmQsIHVpZCwgZ2lkKVxuXG5cCi1DaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlIGRlc2NyaXB0b3JcblwKLWZkIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiAgRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZmNob3duCisKKyAgICBmZDogaW50CisgICAgdWlkOiB1aWRfdAorICAgIGdpZDogZ2lkX3QKKworQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvci4KKworRXF1aXZhbGVudCB0byBvcy5jaG93bihmZCwgdWlkLCBnaWQpLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfZmNob3duX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NTQ1YWJmOGY2MDg2ZDc2IGlucHV0PTNhZjU0NGJhMWIxM2EwZDddKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgdWlkX3QgdWlkOwotICAgIGdpZF90IGdpZDsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6ZmNob3duIiwgJmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gZmNob3duKGZkLCB1aWQsIGdpZCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gZmNob3duKGZkLCB1aWQsIGdpZCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOworCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9GQ0hPV04gKi8KIAorCiAjaWZkZWYgSEFWRV9MQ0hPV04KLVB5RG9jX1NUUlZBUihwb3NpeF9sY2hvd25fX2RvY19fLAotImxjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAotQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAotRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxjaG93bgorCisgICAgcGF0aCA6IHBhdGhfdAorICAgIHVpZDogdWlkX3QKKyAgICBnaWQ6IGdpZF90CisKK0NoYW5nZSB0aGUgb3duZXIgYW5kIGdyb3VwIGlkIG9mIHBhdGggdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuCisKK1RoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorRXF1aXZhbGVudCB0byBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xjaG93bihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sY2hvd25faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiMGQyZGExNTc5YWMyNzUgaW5wdXQ9YjFjNjAxNGQ1NjNhNzE2MV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIHVpZF90IHVpZDsKLSAgICBnaWRfdCBnaWQ7CiAgICAgaW50IHJlczsKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxjaG93biI7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6bGNob3duIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgcmVzID0gbGNob3duKHBhdGgtPm5hcnJvdywgdWlkLCBnaWQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9MQ0hPV04gKi8KIApAQCAtMzQ4NywxNDggKzMzMzYsMTI1IEBACiAgICAgcmV0dXJuIG9iajsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGN3ZF9fZG9jX18sCi0iZ2V0Y3dkKCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGN3ZAorCitSZXR1cm4gYSB1bmljb2RlIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRjd2RfdW5pY29kZShQeU9iamVjdCAqc2VsZikKK29zX2dldGN3ZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWZlM2E4YzAxMjE1MjVlYSBpbnB1dD1mMDY5MjExYmI3MGUzZDM5XSovCiB7CiAgICAgcmV0dXJuIHBvc2l4X2dldGN3ZCgwKTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGN3ZGJfX2RvY19fLAotImdldGN3ZGIoKSAtPiBwYXRoXG5cblwKLVJldHVybiBhIGJ5dGVzIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGN3ZGIKKworUmV0dXJuIGEgYnl0ZXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGN3ZF9ieXRlcyhQeU9iamVjdCAqc2VsZikKK29zX2dldGN3ZGJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmY2U0MmVlNGIyYTI5NmEgaW5wdXQ9ZjZmNmEzNzhkYWQzZDljYl0qLwogewogICAgIHJldHVybiBwb3NpeF9nZXRjd2QoMSk7CiB9CiAKKwogI2lmICgoIWRlZmluZWQoSEFWRV9MSU5LKSkgJiYgZGVmaW5lZChNU19XSU5ET1dTKSkKICNkZWZpbmUgSEFWRV9MSU5LIDEKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MSU5LCi1QeURvY19TVFJWQVIocG9zaXhfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCi1DcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLlxuXAotXG5cCi1JZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCi0gIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAotICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG5cCi0gIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuXAotc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcblwKLSAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKLSAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KKworb3MubGluaworCisgICAgc3JjIDogcGF0aF90CisgICAgZHN0IDogcGF0aF90CisgICAgKgorICAgIHNyY19kaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZHN0X2Rpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK0NyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuCisKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiBzcmMgaXMgYSBzeW1ib2xpYworICBsaW5rLCBsaW5rIHdpbGwgY3JlYXRlIGEgbGluayB0byB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uCitzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91cgorICBwbGF0Zm9ybS4gIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYQorICBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNDdhN2U4OGY3YjM5MWI2IGlucHV0PWIwMDk1ZWJiY2JhYTdlMDRdKi8KIHsKLSAgICBwYXRoX3Qgc3JjLCBkc3Q7Ci0gICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBCT09MIHJlc3VsdDsKICNlbHNlCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKLSAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOwotICAgIHNyYy5mdW5jdGlvbl9uYW1lID0gImxpbmsiOwotICAgIGRzdC5mdW5jdGlvbl9uYW1lID0gImxpbmsiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8TyZPJnA6bGluayIsIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKLSAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLAotICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsCi0gICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICNpZm5kZWYgSEFWRV9MSU5LQVQKICAgICBpZiAoKHNyY19kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8IChkc3RfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSkgewogICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcigibGluayIsICJzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkIik7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy5uYXJyb3cgJiYgZHN0LndpZGUpIHx8IChzcmMud2lkZSAmJiBkc3QubmFycm93KSkgeworICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC53aWRlLCBzcmMud2lkZSwgTlVMTCk7CisgICAgaWYgKHNyYy0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtBKGRzdC0+bmFycm93LCBzcmMtPm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogI2Vsc2UKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9MSU5LQVQKICAgICBpZiAoKHNyY19kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CiAgICAgICAgIChkc3RfZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAogICAgICAgICAoIWZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJlc3VsdCA9IGxpbmthdChzcmNfZGlyX2ZkLCBzcmMubmFycm93LAotICAgICAgICAgICAgZHN0X2Rpcl9mZCwgZHN0Lm5hcnJvdywKKyAgICAgICAgcmVzdWx0ID0gbGlua2F0KHNyY19kaXJfZmQsIHNyYy0+bmFycm93LAorICAgICAgICAgICAgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3csCiAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyBBVF9TWU1MSU5LX0ZPTExPVyA6IDApOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBsaW5rKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKICNlbmRpZgogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZzcmMpOwotICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmCiAKIAotCi1QeURvY19TVFJWQVIocG9zaXhfbGlzdGRpcl9fZG9jX18sCi0ibGlzdGRpcihwYXRoPScuJykgLT4gbGlzdF9vZl9maWxlbmFtZXNcblxuXAotUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKLVRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWxcblwKLWVudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LlxuXAotXG5cCi1wYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG5cCi0gIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlc1xuXAotICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLlxuXAotT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1xuXAotICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKIHN0YXRpYyBQeU9iamVjdCAqCiBfbGlzdGRpcl93aW5kb3dzX25vX29wZW5kaXIocGF0aF90ICpwYXRoLCBQeU9iamVjdCAqbGlzdCkKIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICp2OwogICAgIEhBTkRMRSBoRmluZEZpbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKICAgICBCT09MIHJlc3VsdDsKQEAgLTM4ODcsMTIzICszNzEzLDExNyBAQAogfSAgLyogZW5kIG9mIF9wb3NpeF9saXN0ZGlyICovCiAjZW5kaWYgIC8qIHdoaWNoIE9TICovCiAKKworLypbY2xpbmljIGlucHV0XQorb3MubGlzdGRpcgorCisgICAgcGF0aCA6IHBhdGhfdChudWxsYWJsZT1UcnVlLCBhbGxvd19mZD0nUEFUSF9IQVZFX0ZET1BFTkRJUicpID0gTm9uZQorCitSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LgorCitwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcworICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLgorSWYgcGF0aCBpcyBOb25lLCB1c2VzIHRoZSBwYXRoPScuJy4KK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcjtcCisgIHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvci4KKworVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLiAgSXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAorZW50cmllcyAnLicgYW5kICcuLicgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCisKKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbGlzdGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0ZGlyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmYmU2N2MxZjc4MGM4YjcgaW5wdXQ9MDllMzAwNDE2ZTNjZDcyOV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImxpc3RkaXIiOwotICAgIHBhdGgubnVsbGFibGUgPSAxOwotI2lmZGVmIEhBVkVfRkRPUEVORElSCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgcGF0aC5mZCA9IC0xOwotI2VuZGlmCi0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6bGlzdGRpciIsIGtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCi0gICAgcmV0dXJuX3ZhbHVlID0gX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKCZwYXRoLCBsaXN0KTsKKyAgICByZXR1cm4gX2xpc3RkaXJfd2luZG93c19ub19vcGVuZGlyKHBhdGgsIE5VTEwpOwogI2Vsc2UKLSAgICByZXR1cm5fdmFsdWUgPSBfcG9zaXhfbGlzdGRpcigmcGF0aCwgbGlzdCk7CisgICAgcmV0dXJuIF9wb3NpeF9saXN0ZGlyKHBhdGgsIE5VTEwpOwogI2VuZGlmCi0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAjaWZkZWYgTVNfV0lORE9XUwogLyogQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGFic3BhdGggb24gd2luMzIgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjb25zdCBjaGFyICpwYXRoOwotICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIXTsKLSAgICBjaGFyICp0ZW1wOwotICAgIFB5T2JqZWN0ICpwbzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXRmdWxscGF0aG5hbWUKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0ZnVsbHBhdGhuYW1lIiwgJnBvKSkKKyAgICBwYXRoOiBwYXRoX3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX19nZXRmdWxscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjkwYjFmMTAzYjA4NzczZiBpbnB1dD0zMzJlZDUzN2MyOWQwYTNlXSovCit7CisgICAgaWYgKCFwYXRoLT5uYXJyb3cpCiAgICAgewotICAgICAgICB3Y2hhcl90ICp3cGF0aDsKICAgICAgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKICAgICAgICAgd2NoYXJfdCAqd3RlbXA7CiAgICAgICAgIERXT1JEIHJlc3VsdDsKICAgICAgICAgUHlPYmplY3QgKnY7CiAKLSAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKLSAgICAgICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwKKyAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwogICAgICAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7CiAgICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7CisgICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBvKTsKKyAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZVciLCBwYXRoLT5vYmplY3QpOwogICAgICAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKICAgICAgICAgICAgIFB5TWVtX0ZyZWUod291dGJ1ZnApOwogICAgICAgICByZXR1cm4gdjsKICAgICB9Ci0gICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIXTsKKyAgICAgICAgY2hhciAqdGVtcDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgInk6X2dldGZ1bGxwYXRobmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgewotICAgICAgICB3aW4zMl9lcnJvcigiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLT5uYXJyb3csIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgeworICAgICAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoLT5vYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyhvdXRidWYpOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKSkpIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGUob3V0YnVmLCBzdHJsZW4ob3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywgTlVMTCk7Ci0gICAgfQotICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcob3V0YnVmKTsKLX0gLyogZW5kIG9mIHBvc2l4X19nZXRmdWxscGF0aG5hbWUgKi8KK30KIAogCisvKltjbGluaWMgaW5wdXRdCitvcy5fZ2V0ZmluYWxwYXRobmFtZQogCi0vKiBBIGhlbHBlciBmdW5jdGlvbiBmb3Igc2FtZXBhdGggb24gd2luZG93cyAqLworICAgIHBhdGg6IHVuaWNvZGUKKyAgICAvCisKK0EgaGVscGVyIGZ1bmN0aW9uIGZvciBzYW1lcGF0aCBvbiB3aW5kb3dzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfX2dldGZpbmFscGF0aG5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmU4MWE1ZjUxYTM0YmNmIGlucHV0PTcxZDVlODkzMzQ4OTFiZjRdKi8KIHsKICAgICBIQU5ETEUgaEZpbGU7CiAgICAgaW50IGJ1Zl9zaXplOwogICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwogICAgIGludCByZXN1bHRfbGVuZ3RoOwotICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcG8pKQorICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOworICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewotICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgcmV0dXJuIGEKLSAgICAgICAgICAgTm90SW1wbGVtZW50ZWRFcnJvci4gKi8KLSAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKTsKLSAgICB9CiAKICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAotICAgICAgICBwYXRoLAorICAgICAgICBwYXRoX3djaGFyLAogICAgICAgICAwLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwogICAgICAgICAwLCAvKiBzaGFyZSBtb2RlICovCiAgICAgICAgIE5VTEwsIC8qIHNlY3VyaXR5IGF0dHJpYnV0ZXMgKi8KQEAgLTQwMTMsODkgKzM4MzMsODQgQEAKICAgICAgICAgTlVMTCk7CiAKICAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ3JlYXRlRmlsZVciLCBwbyk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNyZWF0ZUZpbGVXIiwgcGF0aCk7CiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUKICAgICAgICB0YXJnZXQgcGF0aCBuYW1lLiAqLwotICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOworICAgIGJ1Zl9zaXplID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOwogCiAgICAgaWYoIWJ1Zl9zaXplKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUiLCBwbyk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSIsIHBhdGgpOwogCiAgICAgdGFyZ2V0X3BhdGggPSBQeU1lbV9OZXcod2NoYXJfdCwgYnVmX3NpemUrMSk7CiAgICAgaWYoIXRhcmdldF9wYXRoKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAotICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCB0YXJnZXRfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKKyAgICByZXN1bHRfbGVuZ3RoID0gR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgdGFyZ2V0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmX3NpemUsIFZPTFVNRV9OQU1FX0RPUyk7CiAgICAgaWYoIXJlc3VsdF9sZW5ndGgpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBvKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RmluYWxQYXRoTmFteUJ5SGFuZGxlIiwgcGF0aCk7CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaEZpbGUpKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJDbG9zZUhhbmRsZSIsIHBvKTsKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ2xvc2VIYW5kbGUiLCBwYXRoKTsKIAogICAgIHRhcmdldF9wYXRoW3Jlc3VsdF9sZW5ndGhdID0gMDsKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHRhcmdldF9wYXRoLCByZXN1bHRfbGVuZ3RoKTsKICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwotCi19IC8qIGVuZCBvZiBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSAqLworfQogCiBQeURvY19TVFJWQVIocG9zaXhfX2lzZGlyX19kb2NfXywKICJSZXR1cm4gdHJ1ZSBpZiB0aGUgcGF0aG5hbWUgcmVmZXJzIHRvIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4iKTsKIAorLypbY2xpbmljIGlucHV0XQorb3MuX2lzZGlyCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICAvCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19pc2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19faXNkaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjE3YjJkNGUxOTk0YjBmZiBpbnB1dD1lNzk0ZjEyZmFhYjYyYTJhXSovCiB7Ci0gICAgY29uc3QgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqcG87CiAgICAgRFdPUkQgYXR0cmlidXRlczsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfaXNkaXIiLCAmcG8pKSB7Ci0gICAgICAgIHdjaGFyX3QgKndwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7Ci0gICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFwYXRoLT5uYXJyb3cpCisgICAgICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CisgICAgZWxzZQorICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CiAKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cGF0aCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQotICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgICAgICBnb3RvIGNoZWNrOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieTpfaXNkaXIiLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgpOwogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAKLWNoZWNrOgogICAgIGlmIChhdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICBlbHNlCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX18sCi0iUmV0dXJuIHZvbHVtZSBtb3VudCBwb2ludCBvZiB0aGUgc3BlY2lmaWVkIHBhdGguIik7CiAKLS8qIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBpc21vdW50IG9uIHdpbmRvd3MgKi8KKy8qW2NsaW5pYyBpbnB1dF0KK29zLl9nZXR2b2x1bWVwYXRobmFtZQorCisgICAgcGF0aDogdW5pY29kZQorCitBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19nZXR2b2x1bWVwYXRobmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OWEwYmE3MjlmOTU2ZGJlIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKLSAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7Ci0gICAgd2NoYXJfdCAqcGF0aCwgKm1vdW50cGF0aD1OVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgd2NoYXJfdCAqcGF0aF93Y2hhciwgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXR2b2x1bWVwYXRobmFtZSIsICZwbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShwbywgJmJ1Zmxlbik7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICBwYXRoX3djaGFyID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUocGF0aCwgJmJ1Zmxlbik7CisgICAgaWYgKHBhdGhfd2NoYXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYnVmbGVuICs9IDE7CiAKQEAgLTQxMTIsMTIgKzM5MjcsMTIgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmV0ID0gR2V0Vm9sdW1lUGF0aE5hbWVXKHBhdGgsIG1vdW50cGF0aCwKKyAgICByZXQgPSBHZXRWb2x1bWVQYXRoTmFtZVcocGF0aF93Y2hhciwgbW91bnRwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKGJ1Zmxlbiwgc2l6ZV90LCBEV09SRCkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJldCkgewotICAgICAgICByZXN1bHQgPSB3aW4zMl9lcnJvcl9vYmplY3QoIl9nZXR2b2x1bWVwYXRobmFtZSIsIHBvKTsKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJfZ2V0dm9sdW1lcGF0aG5hbWUiLCBwYXRoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG1vdW50cGF0aCwgd2NzbGVuKG1vdW50cGF0aCkpOwpAQCAtNDEyNiw3OCArMzk0MSw2NiBAQAogICAgIFB5TWVtX0ZyZWUobW91bnRwYXRoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQotLyogZW5kIG9mIHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZSAqLwogCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfbWtkaXJfX2RvY19fLAotIm1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCi1DcmVhdGUgYSBkaXJlY3RvcnkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXG5cCi1cblwKLVRoZSBtb2RlIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MubWtkaXIKKworICAgIHBhdGggOiBwYXRoX3QKKworICAgIG1vZGU6IGludCA9IDBvNzc3CisKKyAgICAqCisKKyAgICBkaXJfZmQgOiBkaXJfZmQocmVxdWlyZXM9J21rZGlyYXQnKSA9IE5vbmUKKworIyAibWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKKworQ3JlYXRlIGEgZGlyZWN0b3J5LgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ta2Rpcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJmMWY3Mzg4NzNlZjJjNSBpbnB1dD1lOTY1ZjY4Mzc3ZTliMWNlXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGUgPSAwNzc3OwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCByZXN1bHQ7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gIm1rZGlyIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCi0jaWZkZWYgSEFWRV9NS0RJUkFUCi0gICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgud2lkZSwgTlVMTCk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeVcocGF0aC0+d2lkZSwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgubmFycm93LCBOVUxMKTsKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLT5uYXJyb3csIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAjZWxzZQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZiBIQVZFX01LRElSQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUpOworICAgICAgICByZXN1bHQgPSBta2RpcmF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlKTsKICAgICBlbHNlCiAjZW5kaWYKICNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQotICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgtPm5hcnJvdyk7CiAjZWxzZQotICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgICAgIHJlc3VsdCA9IG1rZGlyKHBhdGgtPm5hcnJvdywgbW9kZSk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICNlbmRpZgotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIApAQCAtNDIwOCwxNyArNDAxMSwyMCBAQAogCiAKICNpZmRlZiBIQVZFX05JQ0UKLVB5RG9jX1NUUlZBUihwb3NpeF9uaWNlX19kb2NfXywKLSJuaWNlKGluYykgLT4gbmV3X3ByaW9yaXR5XG5cblwKLURlY3JlYXNlIHRoZSBwcmlvcml0eSBvZiBwcm9jZXNzIGJ5IGluYyBhbmQgcmV0dXJuIHRoZSBuZXcgcHJpb3JpdHkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5uaWNlCisKKyAgICBpbmNyZW1lbnQ6IGludAorICAgIC8KKworQWRkIGluY3JlbWVudCB0byB0aGUgcHJpb3JpdHkgb2YgcHJvY2VzcyBhbmQgcmV0dXJuIHRoZSBuZXcgcHJpb3JpdHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9uaWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX25pY2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaW5jcmVtZW50KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4NzA0MThhM2ZjMDdiNTEgaW5wdXQ9ODY0YmUyZDQwMmEyMWRhMl0qLwogewotICAgIGludCBpbmNyZW1lbnQsIHZhbHVlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW50IHZhbHVlOwogCiAgICAgLyogVGhlcmUgYXJlIHR3byBmbGF2b3VycyBvZiAnbmljZSc6IG9uZSB0aGF0IHJldHVybnMgdGhlIG5ldwogICAgICAgIHByaW9yaXR5IChhcyByZXF1aXJlZCBieSBhbG1vc3QgYWxsIHN0YW5kYXJkcyBvdXQgdGhlcmUpIGFuZCB0aGUKQEAgLTQyNDUsMTcgKzQwNTEsMjEgQEAKIAogCiAjaWZkZWYgSEFWRV9HRVRQUklPUklUWQotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHByaW9yaXR5X19kb2NfXywKLSJnZXRwcmlvcml0eSh3aGljaCwgd2hvKSAtPiBjdXJyZW50X3ByaW9yaXR5XG5cblwKLUdldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRwcmlvcml0eQorCisgICAgd2hpY2g6IGludAorICAgIHdobzogaW50CisKK1JldHVybiBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19nZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzU5OTM3YWE1YjY3ZWQ2IGlucHV0PTliZTYxNWQ0MGUyNTQ0ZWZdKi8KIHsKLSAgICBpbnQgd2hpY2gsIHdobywgcmV0dmFsOworICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJndoaWNoLCAmd2hvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZXJybm8gPSAwOwogICAgIHJldHZhbCA9IGdldHByaW9yaXR5KHdoaWNoLCB3aG8pOwogICAgIGlmIChlcnJubyAhPSAwKQpAQCAtNDI2NiwxOCArNDA3NiwyMyBAQAogCiAKICNpZmRlZiBIQVZFX1NFVFBSSU9SSVRZCi1QeURvY19TVFJWQVIocG9zaXhfc2V0cHJpb3JpdHlfX2RvY19fLAotInNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pIC0+IE5vbmVcblxuXAotU2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHByaW9yaXR5CisKKyAgICB3aGljaDogaW50CisgICAgd2hvOiBpbnQKKyAgICBwcmlvcml0eTogaW50CisKK1NldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRwcmlvcml0eShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRwcmlvcml0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobywgaW50IHByaW9yaXR5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY0OTdkMzMwMTU0N2U3ZDUgaW5wdXQ9NzEwY2NiZjY1YjlkYzUxM10qLwogewotICAgIGludCB3aGljaCwgd2hvLCBwcmlvLCByZXR2YWw7CisgICAgaW50IHJldHZhbDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpIiwgJndoaWNoLCAmd2hvLCAmcHJpbykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW8pOworICAgIHJldHZhbCA9IHNldHByaW9yaXR5KHdoaWNoLCB3aG8sIHByaW9yaXR5KTsKICAgICBpZiAocmV0dmFsID09IC0xKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTQyODYsMTcgKzQxMDEsMTAgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotaW50ZXJuYWxfcmVuYW1lKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLCBpbnQgaXNfcmVwbGFjZSkKK2ludGVybmFsX3JlbmFtZShwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLCBpbnQgZHN0X2Rpcl9mZCwgaW50IGlzX3JlcGxhY2UpCiB7CiAgICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKLSAgICBwYXRoX3Qgc3JjOwotICAgIHBhdGhfdCBkc3Q7Ci0gICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkaXJfZmRfc3BlY2lmaWVkOwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGNoYXIgZm9ybWF0WzI0XTsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBCT09MIHJlc3VsdDsKQEAgLTQzMDUsMjEwICs0MTEzLDIwMCBAQAogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKIAotICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7Ci0gICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKLSAgICBzcmMuZnVuY3Rpb25fbmFtZSA9IGZ1bmN0aW9uX25hbWU7Ci0gICAgZHN0LmZ1bmN0aW9uX25hbWUgPSBmdW5jdGlvbl9uYW1lOwotICAgIHN0cmNweShmb3JtYXQsICJPJk8mfCRPJk8mOiIpOwotICAgIHN0cmNhdChmb3JtYXQsIGZ1bmN0aW9uX25hbWUpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgZm9ybWF0LCBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKLSAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGRpcl9mZF9zcGVjaWZpZWQgPSAoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpOwogI2lmbmRlZiBIQVZFX1JFTkFNRUFUCiAgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpIHsKICAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICgoc3JjLm5hcnJvdyAmJiBkc3Qud2lkZSkgfHwgKHNyYy53aWRlICYmIGRzdC5uYXJyb3cpKSB7CisgICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiLCBmdW5jdGlvbl9uYW1lKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLndpZGUsIGRzdC53aWRlLCBmbGFncyk7CisgICAgaWYgKHNyYy0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLT53aWRlLCBkc3QtPndpZGUsIGZsYWdzKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhBKHNyYy5uYXJyb3csIGRzdC5uYXJyb3csIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwogCiAjZWxzZQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX1JFTkFNRUFUCiAgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpCi0gICAgICAgIHJlc3VsdCA9IHJlbmFtZWF0KHNyY19kaXJfZmQsIHNyYy5uYXJyb3csIGRzdF9kaXJfZmQsIGRzdC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZW5kaWYKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnNyYyk7Ci0gICAgcGF0aF9jbGVhbnVwKCZkc3QpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW5hbWVfX2RvY19fLAotInJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LlxuXAotXG5cCi1JZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCi0gIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAotICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLXNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlbmFtZQorCisgICAgc3JjIDogcGF0aF90CisgICAgZHN0IDogcGF0aF90CisgICAgKgorICAgIHNyY19kaXJfZmQgOiBkaXJfZmQgPSBOb25lCisgICAgZHN0X2Rpcl9mZCA6IGRpcl9mZCA9IE5vbmUKKworUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnkuCisKK0lmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpCisgIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5Lgorc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAorICAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDgwMzNiYjJlYzI3ZmI1ZiBpbnB1dD1mYWE2MWM4NDc5MTJjODUwXSovCiB7Ci0gICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShhcmdzLCBrd2FyZ3MsIDApOworICAgIHJldHVybiBpbnRlcm5hbF9yZW5hbWUoc3JjLCBkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQsIDApOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfcmVwbGFjZV9fZG9jX18sCi0icmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LCBvdmVyd3JpdGluZyB0aGUgZGVzdGluYXRpb24uXG5cCi1cblwKLUlmIGVpdGhlciBzcmNfZGlyX2ZkIG9yIGRzdF9kaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGVcblwKLSAgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LCBhbmQgdGhlIHJlc3BlY3RpdmUgcGF0aCBzdHJpbmcgKHNyYyBvciBkc3QpXG5cCi0gIHNob3VsZCBiZSByZWxhdGl2ZTsgdGhlIHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotc3JjX2Rpcl9mZCBhbmQgZHN0X2Rpcl9mZCwgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MucmVwbGFjZSA9IG9zLnJlbmFtZQorCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgb3ZlcndyaXRpbmcgdGhlIGRlc3RpbmF0aW9uLgorCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KQorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK3NyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQsIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZXBsYWNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LAorICAgICAgICAgICAgICAgIGludCBzcmNfZGlyX2ZkLCBpbnQgZHN0X2Rpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMzFkMDEyZWVkOGQzYjhiIGlucHV0PTI1NTE1ZGZiMTA3Yzg0MjFdKi8KIHsKLSAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMSk7CisgICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShzcmMsIGRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgMSk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9ybWRpcl9fZG9jX18sCi0icm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLVJlbW92ZSBhIGRpcmVjdG9yeS5cblwKLVxuXAotSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKLSAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKLWRpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCi0gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Mucm1kaXIKKworICAgIHBhdGg6IHBhdGhfdAorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0ndW5saW5rYXQnKSA9IE5vbmUKKworUmVtb3ZlIGEgZGlyZWN0b3J5LgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfcm1kaXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2FiYWRlYzgwZDVhNzdjNyBpbnB1dD0zOGM4YjM3NWNhMzRhN2UyXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInJtZGlyIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cm1kaXIiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX1VOTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC53aWRlKQotICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlXKHBhdGgud2lkZSk7CisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLT5uYXJyb3cpOwogICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCBBVF9SRU1PVkVESVIpOworICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgQVRfUkVNT1ZFRElSKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gcm1kaXIocGF0aC5uYXJyb3cpOworICAgICAgICByZXN1bHQgPSBybWRpcihwYXRoLT5uYXJyb3cpOwogI2VuZGlmCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigmcGF0aCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIAogI2lmZGVmIEhBVkVfU1lTVEVNCi1QeURvY19TVFJWQVIocG9zaXhfc3lzdGVtX19kb2NfXywKLSJzeXN0ZW0oY29tbWFuZCkgLT4gZXhpdF9zdGF0dXNcblxuXAotRXhlY3V0ZSB0aGUgY29tbWFuZCAoYSBzdHJpbmcpIGluIGEgc3Vic2hlbGwuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeXN0ZW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGxvbmcgc3RzOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB3Y2hhcl90ICpjb21tYW5kOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidTpzeXN0ZW0iLCAmY29tbWFuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOworLypbY2xpbmljIGlucHV0XQorb3Muc3lzdGVtIC0+IGxvbmcKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdHMgPSBfd3N5c3RlbShjb21tYW5kKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotI2Vsc2UKLSAgICBQeU9iamVjdCAqY29tbWFuZF9vYmo7Ci0gICAgY2hhciAqY29tbWFuZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnN5c3RlbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmRfb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY29tbWFuZDogUHlfVU5JQ09ERQogCi0gICAgY29tbWFuZCA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZF9vYmopOworRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworb3Nfc3lzdGVtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tbWFuZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YzNiZDVhYmNkOWMyOWU3IGlucHV0PTMwM2Y1Y2U5N2RmNjA2YjBdKi8KK3sKKyAgICBsb25nIHJlc3VsdDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3RzID0gc3lzdGVtKGNvbW1hbmQpOworICAgIHJlc3VsdCA9IF93c3lzdGVtKGNvbW1hbmQpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKGNvbW1hbmRfb2JqKTsKLSNlbmRpZgotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc3RzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2Vsc2UgLyogTVNfV0lORE9XUyAqLworLypbY2xpbmljIGlucHV0XQorb3Muc3lzdGVtIC0+IGxvbmcKKworICAgIGNvbW1hbmQ6IEZTQ29udmVydGVyCisKK0V4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK29zX3N5c3RlbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjb21tYW5kKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgwMGY3NzVlMTBiN2JlNTUgaW5wdXQ9ODZhNTg1NTRiYTYwOTRhZl0qLworeworICAgIGxvbmcgcmVzdWx0OworICAgIGNoYXIgKmJ5dGVzID0gUHlCeXRlc19Bc1N0cmluZyhjb21tYW5kKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gc3lzdGVtKGJ5dGVzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NZU1RFTSAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91bWFza19fZG9jX18sCi0idW1hc2sobmV3X21hc2spIC0+IG9sZF9tYXNrXG5cblwKLVNldCB0aGUgY3VycmVudCBudW1lcmljIHVtYXNrIGFuZCByZXR1cm4gdGhlIHByZXZpb3VzIHVtYXNrLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudW1hc2sKKworICAgIG1hc2s6IGludAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IG51bWVyaWMgdW1hc2sgYW5kIHJldHVybiB0aGUgcHJldmlvdXMgdW1hc2suCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bWFzayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc191bWFza19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtYXNrKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllMWZlM2M5ZjE0ZDZhMDUgaW5wdXQ9YWI2YmZkOWIyNGQ4YTdlOF0qLwogewotICAgIGludCBpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp1bWFzayIsICZpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaSA9IChpbnQpdW1hc2soaSk7CisgICAgaW50IGkgPSAoaW50KXVtYXNrKG1hc2spOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpKTsKQEAgLTQ1MzcsNyArNDMzNSwxMCBAQAogICAgICAgICAgICAgZmluZF9kYXRhX2hhbmRsZSA9IEZpbmRGaXJzdEZpbGVXKGxwRmlsZU5hbWUsICZmaW5kX2RhdGEpOwogCiAgICAgICAgICAgICBpZihmaW5kX2RhdGFfaGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgICAgICAgICAgaXNfbGluayA9IGZpbmRfZGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LOworICAgICAgICAgICAgICAgIC8qIElPX1JFUEFSU0VfVEFHX1NZTUxJTksgaWYgaXQgaXMgYSBzeW1saW5rIGFuZAorICAgICAgICAgICAgICAgICAgIElPX1JFUEFSU0VfVEFHX01PVU5UX1BPSU5UIGlmIGl0IGlzIGEganVuY3Rpb24gcG9pbnQuICovCisgICAgICAgICAgICAgICAgaXNfbGluayA9IGZpbmRfZGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfZGF0YS5kd1Jlc2VydmVkMCA9PSBJT19SRVBBUlNFX1RBR19NT1VOVF9QT0lOVDsKICAgICAgICAgICAgICAgICBGaW5kQ2xvc2UoZmluZF9kYXRhX2hhbmRsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ1NTAsODEgKzQzNTEsNzMgQEAKIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91bmxpbmtfX2RvY19fLAotInVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUoKSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmVfX2RvY19fLAotInJlbW92ZShwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyB1bmxpbmsoKSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy51bmxpbmsKKworICAgIHBhdGg6IHBhdGhfdAorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0ndW5saW5rYXQnKT1Ob25lCisKK1JlbW92ZSBhIGZpbGUgKHNhbWUgYXMgcmVtb3ZlKCkpLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bmxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdW5saW5rX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3NGFmZDVjZDA5YjIzN2UgaW5wdXQ9ZDdiY2RlMmIxYjJhMjU1Ml0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJ1bmxpbmsiOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSNpZmRlZiBIQVZFX1VOTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC53aWRlKTsKKyAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IERlbGV0ZUZpbGVBKHBhdGgtPm5hcnJvdyk7CiAgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KICNlbHNlCiAjaWZkZWYgSEFWRV9VTkxJTktBVAogICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCi0gICAgICAgIHJlc3VsdCA9IHVubGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIDApOworICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgMCk7CiAgICAgZWxzZQogI2VuZGlmIC8qIEhBVkVfVU5MSU5LQVQgKi8KLSAgICAgICAgcmVzdWx0ID0gdW5saW5rKHBhdGgubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rKHBhdGgtPm5hcnJvdyk7CiAjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwogCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF91bmFtZV9fZG9jX18sCi0idW5hbWUoKSAtPiB1bmFtZV9yZXN1bHRcblxuXAotUmV0dXJuIGFuIG9iamVjdCBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLlxuXAotVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxuXAotICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5yZW1vdmUgPSBvcy51bmxpbmsKKworUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyB1bmxpbmsoKSkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19yZW1vdmVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBkNTE0OWU2NDgzMmI5ZSBpbnB1dD1lMDVjNWFiNTVjZDMwOTgzXSovCit7CisgICAgcmV0dXJuIG9zX3VubGlua19pbXBsKG1vZHVsZSwgcGF0aCwgZGlyX2ZkKTsKK30KKwogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB1bmFtZV9yZXN1bHRfZmllbGRzW10gPSB7CiAgICAgeyJzeXNuYW1lIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gbmFtZSJ9LApAQCAtNDY1NCw4ICs0NDQ3LDE5IEBACiAKIAogI2lmZGVmIEhBVkVfVU5BTUUKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVuYW1lCisKK1JldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4KKworVGhlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBuYW1lZCB0dXBsZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfdW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAxZTE0MjFiNzU3ZTc1M2YgaW5wdXQ9ZTY4YmQyNDZkYjMwNDNlZF0qLwogewogICAgIHN0cnVjdCB1dHNuYW1lIHU7CiAgICAgaW50IHJlczsKQEAgLTQ2OTQsMzEgKzQ0OTgsNiBAQAogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfdXRpbWVfX2RvY19fLAotInV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICpbLCBuc10sIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblwKLVNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKLVxuXAotSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcblwKLSAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cblwKLUlmIG5zIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHR1cGxlIChhdGltZV9ucywgbXRpbWVfbnMpO1xuXAotICAgIGF0aW1lX25zIGFuZCBtdGltZV9ucyBzaG91bGQgYmUgZXhwcmVzc2VkIGFzIGludGVnZXIgbmFub3NlY29uZHNcblwKLSAgICBzaW5jZSB0aGUgZXBvY2guXG5cCi1JZiB0aW1lcyBpcyBOb25lIGFuZCBucyBpcyB1bnNwZWNpZmllZCwgdXRpbWUgdXNlcyB0aGUgY3VycmVudCB0aW1lLlxuXAotU3BlY2lmeWluZyB0dXBsZXMgZm9yIGJvdGggdGltZXMgYW5kIG5zIGlzIGFuIGVycm9yLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIHV0aW1lIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAotICBsaW5rIHBvaW50cyB0by5cblwKLUl0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoXG5cCi0gIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBpbnQgICAgbm93OwpAQCAtNDgwMiw2ICs0NTgxLDkgQEAKICNlbmRpZgogfQogCisgICAgI2RlZmluZSBGVVRJTUVOU0FUX0RJUl9GRF9DT05WRVJURVIgZGlyX2ZkX2NvbnZlcnRlcgorI2Vsc2UKKyAgICAjZGVmaW5lIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiBkaXJfZmRfdW5hdmFpbGFibGUKICNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0ZVVElNRVMpIHx8IGRlZmluZWQoSEFWRV9GVVRJTUVOUykKQEAgLTQ4MTgsNiArNDYwMCw5IEBACiAjZW5kaWYKIH0KIAorICAgICNkZWZpbmUgUEFUSF9VVElNRV9IQVZFX0ZEIDEKKyNlbHNlCisgICAgI2RlZmluZSBQQVRIX1VUSU1FX0hBVkVfRkQgMAogI2VuZGlmCiAKIApAQCAtNDg4MywxOSArNDY2OCw1MCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKworLypbY2xpbmljIGlucHV0XQorb3MudXRpbWUKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9VVElNRV9IQVZFX0ZEJykKKyAgICB0aW1lczogb2JqZWN0ID0gTlVMTAorICAgICoKKyAgICBuczogb2JqZWN0ID0gTlVMTAorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdmdXRpbWVuc2F0JykgPSBOb25lCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sPVRydWUKKworIyAidXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXAorCitTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZSBvZiBwYXRoLgorCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCisKK0lmIHRpbWVzIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lLCBtdGltZSk7CisgICAgYXRpbWUgYW5kIG10aW1lIHNob3VsZCBiZSBleHByZXNzZWQgYXMgZmxvYXQgc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guCitJZiBucyBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWVfbnMsIG10aW1lX25zKTsKKyAgICBhdGltZV9ucyBhbmQgbXRpbWVfbnMgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBpbnRlZ2VyIG5hbm9zZWNvbmRzCisgICAgc2luY2UgdGhlIGVwb2NoLgorSWYgdGltZXMgaXMgTm9uZSBhbmQgbnMgaXMgdW5zcGVjaWZpZWQsIHV0aW1lIHVzZXMgdGhlIGN1cnJlbnQgdGltZS4KK1NwZWNpZnlpbmcgdHVwbGVzIGZvciBib3RoIHRpbWVzIGFuZCBucyBpcyBhbiBlcnJvci4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCB1dGltZSB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGUKKyAgbGluayBwb2ludHMgdG8uCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aAorICBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK2Rpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191dGltZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKnRpbWVzLAorICAgICAgICAgICAgICBQeU9iamVjdCAqbnMsIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmMzQzNGU1NjBiYTJmMCBpbnB1dD0wODFjZGM1NGNhNjg1Mzg1XSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgUHlPYmplY3QgKnRpbWVzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbnMgPSBOVUxMOwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKLSAgICBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07Ci0KLSAgICB1dGltZV90IHV0aW1lOwotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIEhBTkRMRSBoRmlsZTsKICAgICBGSUxFVElNRSBhdGltZSwgbXRpbWU7CkBAIC00OTA0LDI1ICs0NzIwLDkgQEAKICNlbmRpZgogCiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgdXRpbWVfdCB1dGltZTsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAidXRpbWUiOwogICAgIG1lbXNldCgmdXRpbWUsIDAsIHNpemVvZih1dGltZV90KSk7Ci0jaWYgZGVmaW5lZChIQVZFX0ZVVElNRVMpIHx8IGRlZmluZWQoSEFWRV9GVVRJTUVOUykKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgICAgICJPJnxPJE9PJnA6dXRpbWUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICZ0aW1lcywgJm5zLAotI2lmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAotI2Vsc2UKLSAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZCwKLSNlbmRpZgotICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcwotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodGltZXMgJiYgKHRpbWVzICE9IFB5X05vbmUpICYmIG5zKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDk0Miw5ICs0NzQyLDkgQEAKICAgICAgICAgfQogICAgICAgICB1dGltZS5ub3cgPSAwOwogICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5VHVwbGVfR0VUX0lURU0odGltZXMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhX3NlYywgJmFfbnNlYywgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhX3NlYywgJmFfbnNlYywgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEgfHwKICAgICAgICAgICAgIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbV9zZWMsICZtX25zZWMsIF9QeVRpbWVfUk9VTkRfRE9XTikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbV9zZWMsICZtX25zZWMsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgdXRpbWUuYXRpbWVfcyA9IGFfc2VjOwpAQCAtNDk3Niw5ICs0Nzc2LDkgQEAKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCiAKLSAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgJnBhdGgsIGRpcl9mZCkgfHwKLSAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKLSAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKHBhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKCJ1dGltZSIsIHBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC0+ZmQpIHx8CisgICAgICAgIGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgidXRpbWUiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogCiAjaWYgIWRlZmluZWQoSEFWRV9VVElNRU5TQVQpCkBAIC00OTkyLDE3ICs0NzkyLDE3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVBKHBhdGgtPm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCkBAIC01MDExLDggKzQ4MTEsOCBAQAogICAgICAgICBhdGltZSA9IG10aW1lOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5tdGltZV9zLCB1dGltZS5tdGltZV9ucywgJm10aW1lKTsKKyAgICAgICAgX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodXRpbWUuYXRpbWVfcywgdXRpbWUuYXRpbWVfbnMsICZhdGltZSk7CisgICAgICAgIF9QeV90aW1lX3RfdG9fRklMRV9USU1FKHV0aW1lLm10aW1lX3MsIHV0aW1lLm10aW1lX25zLCAmbXRpbWUpOwogICAgIH0KICAgICBpZiAoIVNldEZpbGVUaW1lKGhGaWxlLCBOVUxMLCAmYXRpbWUsICZtdGltZSkpIHsKICAgICAgICAgLyogQXZvaWQgcHV0dGluZyB0aGUgZmlsZSBuYW1lIGludG8gdGhlIGVycm9yIGhlcmUsCkBAIC01MDI3LDIzICs0ODI3LDIzIEBACiAKICNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKLSAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHV0aW1lX25vZm9sbG93X3N5bWxpbmtzKCZ1dGltZSwgcGF0aC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9GVVRJTUVTQVQpIHx8IGRlZmluZWQoSEFWRV9VVElNRU5TQVQpCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICghZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgcmVzdWx0ID0gdXRpbWVfZGlyX2ZkKCZ1dGltZSwgZGlyX2ZkLCBwYXRoLm5hcnJvdywgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfZGlyX2ZkKCZ1dGltZSwgZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZvbGxvd19zeW1saW5rcyk7CiAgICAgZWxzZQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKQotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGguZmQpOworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfZmQoJnV0aW1lLCBwYXRoLT5mZCk7CiAgICAgZWxzZQogI2VuZGlmCiAKLSAgICByZXN1bHQgPSB1dGltZV9kZWZhdWx0KCZ1dGltZSwgcGF0aC5uYXJyb3cpOworICAgIHJlc3VsdCA9IHV0aW1lX2RlZmF1bHQoJnV0aW1lLCBwYXRoLT5uYXJyb3cpOwogCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtNTA1OSw3ICs0ODU5LDYgQEAKICAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogCiBleGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChoRmlsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwpAQCAtNTA2OSwxNyArNDg2OCwyMCBAQAogCiAvKiBQcm9jZXNzIG9wZXJhdGlvbnMgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X19leGl0X19kb2NfXywKLSJfZXhpdChzdGF0dXMpXG5cblwKLUV4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuX2V4aXQKKworICAgIHN0YXR1czogaW50CisKK0V4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X19leGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX19leGl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NzJhM2NiYWY2OGYzNjIxIGlucHV0PTVlNmQ1NzU1NmIwYzRhNjJdKi8KIHsKLSAgICBpbnQgc3RzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpfZXhpdCIsICZzdHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBfZXhpdChzdHMpOworICAgIF9leGl0KHN0YXR1cyk7CiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKQEAgLTUyMTcsOTYgKzUwMTksODMgQEAKIH0KICNlbmRpZgogCisKICNpZmRlZiBIQVZFX0VYRUNWCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAotImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKLUV4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAotXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmV4ZWN2CisKKyAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIC8KKworRXhlY3V0ZSBhbiBleGVjdXRhYmxlIHBhdGggd2l0aCBhcmd1bWVudHMsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19leGVjdl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MjIxZjA4MTQzMTQ2ZmZmIGlucHV0PTk2MDQxNTU5OTI1ZTUyMjldKi8KIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICpwYXRoX2NoYXI7CiAgICAgY2hhciAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOwogICAgIGlmIChhcmdjIDwgMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7CisgICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfZXhlY3ZlX19kb2NfXywKLSJleGVjdmUocGF0aCwgYXJncywgZW52KVxuXG5cCi1FeGVjdXRlIGEgcGF0aCB3aXRoIGFyZ3VtZW50cyBhbmQgZW52aXJvbm1lbnQsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLSAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAotICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2YgYXJndW1lbnRzXG5cCi0gICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzXG5cCi1cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCB5b3UgbWF5IHNwZWNpZnkgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yIHBhdGg7XG5cCi0gIGV4ZWN2ZSB3aWxsIGV4ZWN1dGUgdGhlIHByb2dyYW0gdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBvcGVuIHRvLlxuXAotICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5leGVjdmUKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD0nUEFUSF9IQVZFX0ZFWEVDVkUnKQorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIGVudjogb2JqZWN0CisgICAgICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuCisKK0V4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2V4ZWN2ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqZW52KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4MTg4NGZjZGIyMTUwOGUgaW5wdXQ9NjI2ODA0ZmEwOTI2MDZkOV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2LCAqZW52OwogICAgIGNoYXIgKiphcmd2bGlzdCA9IE5VTEw7CiAgICAgY2hhciAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52aXJvbm1lbnQiLCBOVUxMfTsKIAogICAgIC8qIGV4ZWN2ZSBoYXMgdGhyZWUgYXJndW1lbnRzOiAocGF0aCwgYXJndiwgZW52KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJleGVjdmUiOwotI2lmZGVmIEhBVkVfRkVYRUNWRQotICAgIHBhdGguYWxsb3dfZmQgPSAxOwotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndiwgJmVudgotICAgICAgICAgICAgICAgICAgICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICghUHlMaXN0X0NoZWNrKGFyZ3YpICYmICFQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBhcmd2IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MzI5LDE1ICs1MTE4LDE1IEBACiAgICAgICAgIGdvdG8gZmFpbDsKIAogI2lmZGVmIEhBVkVfRkVYRUNWRQotICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgIGZleGVjdmUocGF0aC5mZCwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIGlmIChwYXRoLT5mZCA+IC0xKQorICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGV4ZWN2ZShwYXRoLm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworICAgICAgICBleGVjdmUocGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAotICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKICAgICB3aGlsZSAoLS1lbnZjID49IDApCiAgICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKQEAgLTUzNDUsMjkgKzUxMzQsMzMgQEAKICAgZmFpbDoKICAgICBpZiAoYXJndmxpc3QpCiAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiBOVUxMOwogfQogI2VuZGlmIC8qIEhBVkVfRVhFQ1YgKi8KIAogCiAjaWZkZWYgSEFWRV9TUEFXTlYKLVB5RG9jX1NUUlZBUihwb3NpeF9zcGF3bnZfX2RvY19fLAotInNwYXdudihtb2RlLCBwYXRoLCBhcmdzKVxuXG5cCi1FeGVjdXRlIHRoZSBwcm9ncmFtICdwYXRoJyBpbiBhIG5ldyBwcm9jZXNzLlxuXAotXG5cCi0gICAgbW9kZTogbW9kZSBvZiBwcm9jZXNzIGNyZWF0aW9uXG5cCi0gICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKLSAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNwYXdudgorCisgICAgbW9kZTogaW50CisgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KKyAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KKyAgICBhcmd2OiBvYmplY3QKKyAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgorICAgIC8KKworRXhlY3V0ZSB0aGUgcHJvZ3JhbSBzcGVjaWZpZWQgYnkgcGF0aCBpbiBhIG5ldyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3Bhd252KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NwYXdudl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQwYTc5NDU0ODRjOGNjNSBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3Y7CisgICAgY2hhciAqcGF0aF9jaGFyOwogICAgIGNoYXIgKiphcmd2bGlzdDsKLSAgICBpbnQgbW9kZSwgaTsKKyAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7CiAgICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CkBAIC01Mzc1LDExICs1MTY4LDcgQEAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk86c3Bhd252IiwgJm1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MzkxLDEzICs1MTgwLDExIEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CkBAIC01NDA3LDcgKzUxOTQsNiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtNTQxNywxMSArNTIwMywxMCBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aCwgYXJndmxpc3QpOworICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoX2NoYXIsIGFyZ3ZsaXN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgZnJlZV9zdHJpbmdfYXJyYXkoYXJndmxpc3QsIGFyZ2MpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtNTQzMCwyNSArNTIxNSwzMSBAQAogfQogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zcGF3bnZlX19kb2NfXywKLSJzcGF3bnZlKG1vZGUsIHBhdGgsIGFyZ3MsIGVudilcblxuXAotRXhlY3V0ZSB0aGUgcHJvZ3JhbSAncGF0aCcgaW4gYSBuZXcgcHJvY2Vzcy5cblwKLVxuXAotICAgIG1vZGU6IG1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvblxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBhcmd1bWVudHNcblwKLSAgICBlbnY6IGRpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNwYXdudmUKKworICAgIG1vZGU6IGludAorICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCisgICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCisgICAgYXJndjogb2JqZWN0CisgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KKyAgICBlbnY6IG9iamVjdAorICAgICAgICBEaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzLgorICAgIC8KKworRXhlY3V0ZSB0aGUgcHJvZ3JhbSBzcGVjaWZpZWQgYnkgcGF0aCBpbiBhIG5ldyBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3Bhd252ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zcGF3bnZlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1vZGUsIFB5T2JqZWN0ICpwYXRoLAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmd2LCBQeU9iamVjdCAqZW52KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU3ZjVmMDcwMzYxMDUzMWYgaW5wdXQ9MDIzNjJmZDkzNzk2M2Y4Zl0qLwogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIFB5T2JqZWN0ICphcmd2LCAqZW52OworICAgIGNoYXIgKnBhdGhfY2hhcjsKICAgICBjaGFyICoqYXJndmxpc3Q7CiAgICAgY2hhciAqKmVudmxpc3Q7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgaW50IG1vZGU7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBpLCBlbnZjOwogICAgIFB5X2ludHB0cl90IHNwYXdudmFsOwogICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwpAQCAtNTQ1OCwxMSArNTI0OSw3IEBACiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncyBhbmQgZW52IGlzIGEgZGljdGlvbmFyeQogICAgICAgIGxpa2UgcG9zaXguZW52aXJvbi4gKi8KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mT086c3Bhd252ZSIsICZtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YsICZlbnYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTUwNiw3ICs1MjkzLDcgQEAKICAgICAgICAgbW9kZSA9IF9QX09WRVJMQVk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc3Bhd252YWwgPSBfc3Bhd252ZShtb2RlLCBwYXRoLCBhcmd2bGlzdCwgZW52bGlzdCk7CisgICAgc3Bhd252YWwgPSBfc3Bhd252ZShtb2RlLCBwYXRoX2NoYXIsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHNwYXdudmFsID09IC0xKQpAQCAtNTUyMCw3ICs1MzA3LDYgQEAKICAgZmFpbF8xOgogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBsYXN0YXJnKTsKICAgZmFpbF8wOgotICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNTUyOCwxNCArNTMxNCwxNyBAQAogCiAKICNpZmRlZiBIQVZFX0ZPUksxCi1QeURvY19TVFJWQVIocG9zaXhfZm9yazFfX2RvY19fLAotImZvcmsxKCkgLT4gcGlkXG5cblwKLUZvcmsgYSBjaGlsZCBwcm9jZXNzIHdpdGggYSBzaW5nbGUgbXVsdGlwbGV4ZWQgKGkuZS4sIG5vdCBib3VuZCkgdGhyZWFkLlxuXAotXG5cCi1SZXR1cm4gMCB0byBjaGlsZCBwcm9jZXNzIGFuZCBQSUQgb2YgY2hpbGQgdG8gcGFyZW50IHByb2Nlc3MuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mb3JrMQorCitGb3JrIGEgY2hpbGQgcHJvY2VzcyB3aXRoIGEgc2luZ2xlIG11bHRpcGxleGVkIChpLmUuLCBub3QgYm91bmQpIHRocmVhZC4KKworUmV0dXJuIDAgdG8gY2hpbGQgcHJvY2VzcyBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudCBwcm9jZXNzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZm9yazEoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19mb3JrMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTI3YjRmNjY0MTljOWRjZiBpbnB1dD0xMmRiMDIxNjc4OTM5MjZlXSovCiB7CiAgICAgcGlkX3QgcGlkOwogICAgIGludCByZXN1bHQgPSAwOwpAQCAtNTU1OCwxNyArNTM0NywyMSBAQAogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGlkKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfRk9SSzEgKi8KIAogCiAjaWZkZWYgSEFWRV9GT1JLCi1QeURvY19TVFJWQVIocG9zaXhfZm9ya19fZG9jX18sCi0iZm9yaygpIC0+IHBpZFxuXG5cCi1Gb3JrIGEgY2hpbGQgcHJvY2Vzcy5cblwKLVJldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZvcmsKKworRm9yayBhIGNoaWxkIHByb2Nlc3MuCisKK1JldHVybiAwIHRvIGNoaWxkIHByb2Nlc3MgYW5kIFBJRCBvZiBjaGlsZCB0byBwYXJlbnQgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZvcmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19mb3JrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OThiMWVjZDM0OThiYTEyIGlucHV0PTEzYzk1NjQxMzExMGVlYWFdKi8KIHsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC01NTkxLDkyICs1Mzg0LDEwNiBAQAogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQocGlkKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfRk9SSyAqLworCiAKICNpZmRlZiBIQVZFX1NDSEVEX0gKLQogI2lmZGVmIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWAorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0X3ByaW9yaXR5X21heAogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX18sCi0ic2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpXG5cblwKLUdldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciAqcG9saWN5Ki4iKTsKKyAgICBwb2xpY3k6IGludAorCitHZXQgdGhlIG1heGltdW0gc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgcG9saWN5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHBvbGljeSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNmEzMGZhNTA3MWYyZDgxIGlucHV0PTIwOTdiNzk5OGVjYTY4NzRdKi8KIHsKLSAgICBpbnQgcG9saWN5LCBtYXg7CisgICAgaW50IG1heDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgJnBvbGljeSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIG1heCA9IHNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9saWN5KTsKICAgICBpZiAobWF4IDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtYXgpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX18sCi0ic2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpXG5cblwKLUdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciAqcG9saWN5Ki4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0X3ByaW9yaXR5X21pbgorCisgICAgcG9saWN5OiBpbnQKKworR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBwb2xpY3kpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWNhM2VkNmJjNDNlOWIyMCBpbnB1dD0yMWJjOGZhMGQ3MDk4M2JmXSovCiB7Ci0gICAgaW50IHBvbGljeSwgbWluOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAmcG9saWN5KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbWluID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpOworICAgIGludCBtaW4gPSBzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSk7CiAgICAgaWYgKG1pbiA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobWluKTsKIH0KLQogI2VuZGlmIC8qIEhBVkVfU0NIRURfR0VUX1BSSU9SSVRZX01BWCAqLwogCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX18sCi0ic2NoZWRfZ2V0c2NoZWR1bGVyKHBpZClcblxuXAotR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBhIFBJRCBvZiAqcGlkKi5cblwKLVBhc3NpbmcgYSBQSUQgb2YgMCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfZ2V0c2NoZWR1bGVyCisgICAgcGlkOiBwaWRfdAorICAgIC8KKworR2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZHkgYnkgcGlkLgorCitQYXNzaW5nIDAgZm9yIHBpZCByZXR1cm5zIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGNkNjNjMTVjYWY1NGZhOSBpbnB1dD01ZjE0Y2ZkMWYxODllMWEwXSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIGludCBwb2xpY3k7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwb2xpY3kgPSBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKTsKICAgICBpZiAocG9saWN5IDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhwb2xpY3kpOwogfQorI2VuZGlmIC8qIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSICovCiAKLSNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKQorLypbY2xpbmljIGlucHV0XQorY2xhc3Mgb3Muc2NoZWRfcGFyYW0gIlB5T2JqZWN0ICoiICImU2NoZWRQYXJhbVR5cGUiCisKK0BjbGFzc21ldGhvZAorb3Muc2NoZWRfcGFyYW0uX19uZXdfXworCisgICAgc2NoZWRfcHJpb3JpdHk6IG9iamVjdAorICAgICAgICBBIHNjaGVkdWxpbmcgcGFyYW1ldGVyLgorCitDdXJyZW50IGhhcyBvbmx5IG9uZSBmaWVsZDogc2NoZWRfcHJpb3JpdHkiKTsKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNjaGVkX3BhcmFtX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfcGFyYW1faW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OGY0MDY3ZDYwZjQ4YzEzIGlucHV0PTczYTRjMjJmNzA3MWZjNjJdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOnNjaGVkX3BhcmFtIiwga3dsaXN0LCAmcHJpb3JpdHkpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldyh0eXBlKTsKICAgICBpZiAoIXJlcykKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKHByaW9yaXR5KTsKLSAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgcHJpb3JpdHkpOworICAgIFB5X0lOQ1JFRihzY2hlZF9wcmlvcml0eSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHNjaGVkX3ByaW9yaXR5KTsKICAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIoc2NoZWRfcGFyYW1fX2RvY19fLAotInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KTogQSBzY2hlZHVsaW5nIHBhcmFtZXRlci5cblxuXAotQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5Iik7CisKK1B5RG9jX1ZBUihvc19zY2hlZF9wYXJhbV9fZG9jX18pOwogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzY2hlZF9wYXJhbV9maWVsZHNbXSA9IHsKICAgICB7InNjaGVkX3ByaW9yaXR5IiwgInRoZSBzY2hlZHVsaW5nIHByaW9yaXR5In0sCkBAIC01Njg1LDcgKzU0OTIsNyBAQAogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHNjaGVkX3BhcmFtX2Rlc2MgPSB7CiAgICAgInNjaGVkX3BhcmFtIiwgLyogbmFtZSAqLwotICAgIHNjaGVkX3BhcmFtX19kb2NfXywgLyogZG9jICovCisgICAgb3Nfc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KICAgICBzY2hlZF9wYXJhbV9maWVsZHMsCiAgICAgMQogfTsKQEAgLTU3MDksMTE4ICs1NTE2LDEzNCBAQAogICAgIHJlcy0+c2NoZWRfcHJpb3JpdHkgPSBQeV9TQUZFX0RPV05DQVNUKHByaW9yaXR5LCBsb25nLCBpbnQpOwogICAgIHJldHVybiAxOwogfQorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIpIHx8IGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgKi8KIAotI2VuZGlmCiAKICNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfc2V0c2NoZWR1bGVyCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19fLAotInNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pXG5cblwKLVNldCB0aGUgc2NoZWR1bGluZyBwb2xpY3ksICpwb2xpY3kqLCBmb3IgKnBpZCouXG5cCi1JZiAqcGlkKiBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuXG5cCi0qcGFyYW0qIGlzIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLiIpOworICAgIHBpZDogcGlkX3QKKyAgICBwb2xpY3k6IGludAorICAgIHBhcmFtOiBzY2hlZF9wYXJhbQorICAgIC8KKworU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuCisKK0lmIHBpZCBpcyAwLCB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGNoYW5nZWQuCitwYXJhbSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX3NldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zY2hlZF9zZXRzY2hlZHVsZXJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBwb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKnBhcmFtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3MDUzZTVjNTI4YzM1YzkgaW5wdXQ9YzU4MWY5NDY5YTUzMjdkZF0qLwogewotICAgIHBpZF90IHBpZDsKLSAgICBpbnQgcG9saWN5OwotICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpTyY6c2NoZWRfc2V0c2NoZWR1bGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwgJnBvbGljeSwgJmNvbnZlcnRfc2NoZWRfcGFyYW0sICZwYXJhbSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyoKICAgICAqKiBzY2hlZF9zZXRzY2hlZHVsZXIoKSByZXR1cm5zIDAgaW4gTGludXgsIGJ1dCB0aGUgcHJldmlvdXMKICAgICAqKiBzY2hlZHVsaW5nIHBvbGljeSB1bmRlciBTb2xhcmlzL0lsbHVtb3MsIGFuZCBvdGhlcnMuCiAgICAgKiogT24gZXJyb3IsIC0xIGlzIHJldHVybmVkIGluIGFsbCBPcGVyYXRpbmcgU3lzdGVtcy4KICAgICAqLwotICAgIGlmIChzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksICZwYXJhbSkgPT0gLTEpCisgICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgcGFyYW0pID09IC0xKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KKyNlbmRpZiAgLyogSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIqLwogCi0jZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX2dldHBhcmFtCisgICAgcGlkOiBwaWRfdAorICAgIC8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX2dldHBhcmFtX19kb2NfXywKLSJzY2hlZF9nZXRwYXJhbShwaWQpIC0+IHNjaGVkX3BhcmFtXG5cblwKLVJldHVybnMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyB3aXRoICpwaWQqIGFzIGFuIGluc3RhbmNlIG9mIHRoZVxuXAotc2NoZWRfcGFyYW0gY2xhc3MuIEEgUElEIG9mIDAgbWVhbnMgdGhlIGNhbGxpbmcgcHJvY2Vzcy4iKTsKK1JldHVybnMgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KKworSWYgcGlkIGlzIDAsIHJldHVybnMgcGFyYW1ldGVycyBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KK1JldHVybiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldHBhcmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldHBhcmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0MmM1YmQyNjA0ZWNkMDggaW5wdXQ9MThhMWVmOWMyZWZhZTI5Nl0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07Ci0gICAgUHlPYmplY3QgKnJlcywgKnByaW9yaXR5OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnByaW9yaXR5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2NoZWRfZ2V0cGFyYW0ocGlkLCAmcGFyYW0pKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2NoZWRQYXJhbVR5cGUpOwotICAgIGlmICghcmVzKQorICAgIHJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTY2hlZFBhcmFtVHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHByaW9yaXR5ID0gUHlMb25nX0Zyb21Mb25nKHBhcmFtLnNjaGVkX3ByaW9yaXR5KTsKICAgICBpZiAoIXByaW9yaXR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMCwgcHJpb3JpdHkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9zZXRwYXJhbV9fZG9jX18sCi0ic2NoZWRfc2V0cGFyYW0ocGlkLCBwYXJhbSlcblxuXAotU2V0IHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgYSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAotQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9zZXRwYXJhbQorICAgIHBpZDogcGlkX3QKKyAgICBwYXJhbTogc2NoZWRfcGFyYW0KKyAgICAvCisKK1NldCBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkLgorCitJZiBwaWQgaXMgMCwgc2V0cyBwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGluZyBwcm9jZXNzLgorcGFyYW0gc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIHNjaGVkX3BhcmFtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfc2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqcGFyYW0pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjdhM2M1ODk0MzZjZWM5YiBpbnB1dD02YjhkNmRmY2VjZGMyMWJkXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2NoZWRfc2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgIGlmIChzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRQQVJBTSAqLwogCi0jZW5kaWYKIAogI2lmZGVmIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMCisvKltjbGluaWMgaW5wdXRdCitvcy5zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgLT4gZG91YmxlCisgICAgcGlkOiBwaWRfdAorICAgIC8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX18sCi0ic2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCkgLT4gZmxvYXRcblxuXAotUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKiBpbiBzZWNvbmRzLiIpOworUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGZvciB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCwgaW4gc2Vjb25kcy4KIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitWYWx1ZSByZXR1cm5lZCBpcyBhIGZsb2F0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgZG91YmxlCitvc19zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwaWRfdCBwaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2FkYzEzN2E4NmRlYTU4MSBpbnB1dD0yYTk3M2RhMTVjY2E2ZmFlXSovCiB7Ci0gICAgcGlkX3QgcGlkOwogICAgIHN0cnVjdCB0aW1lc3BlYyBpbnRlcnZhbDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkLCAmaW50ZXJ2YWwpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjKTsKKyAgICBpZiAoc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCwgJmludGVydmFsKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTEuMDsKKyAgICB9CisgICAgcmV0dXJuIChkb3VibGUpaW50ZXJ2YWwudHZfc2VjICsgMWUtOSppbnRlcnZhbC50dl9uc2VjOwogfQorI2VuZGlmIC8qIEhBVkVfU0NIRURfUlJfR0VUX0lOVEVSVkFMICovCiAKLSNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfc2NoZWRfeWllbGRfX2RvY19fLAotInNjaGVkX3lpZWxkKClcblxuXAotVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfeWllbGQKKworVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc2NoZWRfeWllbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19zY2hlZF95aWVsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDdiZDUxODY5YzRjYjZhOCBpbnB1dD1lNTRkNmY5ODE4OTM5MWQ0XSovCiB7CiAgICAgaWYgKHNjaGVkX3lpZWxkKCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtNTgyOCwzOSArNTY1MSw0MSBAQAogfQogCiAjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQotCiAvKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQ1BVcyBhbGxvY2F0ZWQgaW4gYSBjcHVfc2V0X3QgKi8KIHN0YXRpYyBjb25zdCBpbnQgTkNQVVNfU1RBUlQgPSBzaXplb2YodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVDsKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKLSJzY2hlZF9zZXRhZmZpbml0eShwaWQsIGNwdV9zZXQpXG5cblwKLVNldCB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogdG8gKmNwdV9zZXQqLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2NoZWRfc2V0YWZmaW5pdHkKKyAgICBwaWQ6IHBpZF90CisgICAgbWFzayA6IG9iamVjdAorICAgIC8KKworU2V0IHRoZSBDUFUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgdG8gbWFzay4KKworbWFzayBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgaWRlbnRpZnlpbmcgQ1BVcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX3NldGFmZmluaXR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX3NldGFmZmluaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkLCBQeU9iamVjdCAqbWFzaykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODJiY2JmNDBkMzI1M2E5IGlucHV0PWEwNzkxYTU5N2M3MDg1YmFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IG5jcHVzOwogICAgIHNpemVfdCBzZXRzaXplOwotICAgIGNwdV9zZXRfdCAqbWFzayA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0ZXJhYmxlLCAqaXRlcmF0b3IgPSBOVUxMLCAqaXRlbTsKKyAgICBjcHVfc2V0X3QgKmNwdV9zZXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICppdGVyYXRvciA9IE5VTEwsICppdGVtOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmaXRlcmFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKG1hc2spOwogICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG5jcHVzID0gTkNQVVNfU1RBUlQ7CiAgICAgc2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5jcHVzKTsKLSAgICBtYXNrID0gQ1BVX0FMTE9DKG5jcHVzKTsKLSAgICBpZiAobWFzayA9PSBOVUxMKSB7CisgICAgY3B1X3NldCA9IENQVV9BTExPQyhuY3B1cyk7CisgICAgaWYgKGNwdV9zZXQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBDUFVfWkVST19TKHNldHNpemUsIG1hc2spOworICAgIENQVV9aRVJPX1Moc2V0c2l6ZSwgY3B1X3NldCk7CiAKICAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdGVyYXRvcikpKSB7CiAgICAgICAgIGxvbmcgY3B1OwpAQCAtNTkwMSw0OCArNTcyNiw1MCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgbmV3c2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5ld25jcHVzKTsKICAgICAgICAgICAgIENQVV9aRVJPX1MobmV3c2V0c2l6ZSwgbmV3bWFzayk7Ci0gICAgICAgICAgICBtZW1jcHkobmV3bWFzaywgbWFzaywgc2V0c2l6ZSk7Ci0gICAgICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgICAgIG1lbWNweShuZXdtYXNrLCBjcHVfc2V0LCBzZXRzaXplKTsKKyAgICAgICAgICAgIENQVV9GUkVFKGNwdV9zZXQpOwogICAgICAgICAgICAgc2V0c2l6ZSA9IG5ld3NldHNpemU7Ci0gICAgICAgICAgICBtYXNrID0gbmV3bWFzazsKKyAgICAgICAgICAgIGNwdV9zZXQgPSBuZXdtYXNrOwogICAgICAgICAgICAgbmNwdXMgPSBuZXduY3B1czsKICAgICAgICAgfQotICAgICAgICBDUFVfU0VUX1MoY3B1LCBzZXRzaXplLCBtYXNrKTsKKyAgICAgICAgQ1BVX1NFVF9TKGNwdSwgc2V0c2l6ZSwgY3B1X3NldCk7CiAgICAgfQogICAgIFB5X0NMRUFSKGl0ZXJhdG9yKTsKIAotICAgIGlmIChzY2hlZF9zZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spKSB7CisgICAgaWYgKHNjaGVkX3NldGFmZmluaXR5KHBpZCwgc2V0c2l6ZSwgY3B1X3NldCkpIHsKICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgQ1BVX0ZSRUUobWFzayk7CisgICAgQ1BVX0ZSRUUoY3B1X3NldCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiAKIGVycm9yOgotICAgIGlmIChtYXNrKQotICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBpZiAoY3B1X3NldCkKKyAgICAgICAgQ1BVX0ZSRUUoY3B1X3NldCk7CiAgICAgUHlfWERFQ1JFRihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRhZmZpbml0eV9fZG9jX18sCi0ic2NoZWRfZ2V0YWZmaW5pdHkocGlkLCBuY3B1cykgLT4gY3B1X3NldFxuXG5cCi1SZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLlxuXAotVGhlIHJldHVybmVkIGNwdV9zZXQgd2lsbCBiZSBvZiBzaXplICpuY3B1cyouIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNjaGVkX2dldGFmZmluaXR5CisgICAgcGlkOiBwaWRfdAorICAgIC8KKworUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KKworVGhlIGFmZmluaXR5IGlzIHJldHVybmVkIGFzIGEgc2V0IG9mIENQVSBpZGVudGlmaWVycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NjaGVkX2dldGFmZmluaXR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NjaGVkX2dldGFmZmluaXR5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI0MzFhOGYzMTBlMzY5ZTcgaW5wdXQ9ZWFmMTYxOTM2ODc0YjhhMV0qLwogewotICAgIHBpZF90IHBpZDsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CiAgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CkBAIC01OTkyLDYgKzU4MTksNyBAQAogCiAjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCiAKKwogLyogQUlYIHVzZXMgL2Rldi9wdGMgYnV0IGlzIG90aGVyd2lzZSB0aGUgc2FtZSBhcyAvZGV2L3B0bXggKi8KIC8qIElSSVggaGFzIGJvdGggL2Rldi9wdGMgYW5kIC9kZXYvcHRteCwgdXNlIHB0bXggKi8KICNpZiBkZWZpbmVkKEhBVkVfREVWX1BUQykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRNWCkKQEAgLTYwMTgsMTMgKzU4NDYsMjAgQEAKICNlbmRpZgogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfRk9SS1BUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YICovCiAKKwogI2lmIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKQotUHlEb2NfU1RSVkFSKHBvc2l4X29wZW5wdHlfX2RvY19fLAotIm9wZW5wdHkoKSAtPiAobWFzdGVyX2ZkLCBzbGF2ZV9mZClcblxuXAotT3BlbiBhIHBzZXVkby10ZXJtaW5hbCwgcmV0dXJuaW5nIG9wZW4gZmQncyBmb3IgYm90aCBtYXN0ZXIgYW5kIHNsYXZlIGVuZC5cbiIpOworLypbY2xpbmljIGlucHV0XQorb3Mub3BlbnB0eQorCitPcGVuIGEgcHNldWRvLXRlcm1pbmFsLgorCitSZXR1cm4gYSB0dXBsZSBvZiAobWFzdGVyX2ZkLCBzbGF2ZV9mZCkgY29udGFpbmluZyBvcGVuIGZpbGUgZGVzY3JpcHRvcnMKK2ZvciBib3RoIHRoZSBtYXN0ZXIgYW5kIHNsYXZlIGVuZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9vcGVucHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3Nfb3BlbnB0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzU4ZTU3MWMxYmExMzVlZSBpbnB1dD1mM2Q5OWZkOTllNzYyOTA3XSovCiB7CiAgICAgaW50IG1hc3Rlcl9mZCA9IC0xLCBzbGF2ZV9mZCA9IC0xOwogI2lmbmRlZiBIQVZFX09QRU5QVFkKQEAgLTYwNTUsNyArNTg5MCw3IEBACiAKICAgICBzbGF2ZV9mZCA9IF9QeV9vcGVuKHNsYXZlX25hbWUsIE9fUkRXUik7CiAgICAgaWYgKHNsYXZlX2ZkIDwgMCkKLSAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKKyAgICAgICAgZ290byBlcnJvcjsKIAogI2Vsc2UKICAgICBtYXN0ZXJfZmQgPSBvcGVuKERFVl9QVFlfRklMRSwgT19SRFdSIHwgT19OT0NUVFkpOyAvKiBvcGVuIG1hc3RlciAqLwpAQCAtNjA4Myw4ICs1OTE4LDggQEAKICAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKIAogICAgIHNsYXZlX2ZkID0gX1B5X29wZW4oc2xhdmVfbmFtZSwgT19SRFdSIHwgT19OT0NUVFkpOyAvKiBvcGVuIHNsYXZlICovCi0gICAgaWYgKHNsYXZlX2ZkIDwgMCkKLSAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKKyAgICBpZiAoc2xhdmVfZmQgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShtYXN0ZXJfZmQsIDAsIE5VTEwpIDwgMCkKICAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKQEAgLTYxMDIsOSArNTkzNyw3IEBACiAKIHBvc2l4X2Vycm9yOgogICAgIHBvc2l4X2Vycm9yKCk7Ci0jaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKQogZXJyb3I6Ci0jZW5kaWYKICAgICBpZiAobWFzdGVyX2ZkICE9IC0xKQogICAgICAgICBjbG9zZShtYXN0ZXJfZmQpOwogICAgIGlmIChzbGF2ZV9mZCAhPSAtMSkKQEAgLTYxMTMsMTUgKzU5NDYsMjIgQEAKIH0KICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkgKi8KIAorCiAjaWZkZWYgSEFWRV9GT1JLUFRZCi1QeURvY19TVFJWQVIocG9zaXhfZm9ya3B0eV9fZG9jX18sCi0iZm9ya3B0eSgpIC0+IChwaWQsIG1hc3Rlcl9mZClcblxuXAotRm9yayBhIG5ldyBwcm9jZXNzIHdpdGggYSBuZXcgcHNldWRvLXRlcm1pbmFsIGFzIGNvbnRyb2xsaW5nIHR0eS5cblxuXAotTGlrZSBmb3JrKCksIHJldHVybiAwIGFzIHBpZCB0byBjaGlsZCBwcm9jZXNzLCBhbmQgUElEIG9mIGNoaWxkIHRvIHBhcmVudC5cblwKLVRvIGJvdGgsIHJldHVybiBmZCBvZiBuZXdseSBvcGVuZWQgcHNldWRvLXRlcm1pbmFsLlxuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mb3JrcHR5CisKK0ZvcmsgYSBuZXcgcHJvY2VzcyB3aXRoIGEgbmV3IHBzZXVkby10ZXJtaW5hbCBhcyBjb250cm9sbGluZyB0dHkuCisKK1JldHVybnMgYSB0dXBsZSBvZiAocGlkLCBtYXN0ZXJfZmQpLgorTGlrZSBmb3JrKCksIHJldHVybiBwaWQgb2YgMCB0byB0aGUgY2hpbGQgcHJvY2VzcywKK2FuZCBwaWQgb2YgY2hpbGQgdG8gdGhlIHBhcmVudCBwcm9jZXNzLgorVG8gYm90aCwgcmV0dXJuIGZkIG9mIG5ld2x5IG9wZW5lZCBwc2V1ZG8tdGVybWluYWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mb3JrcHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZm9ya3B0eV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTExYjgzOTFkY2UzY2I1NyBpbnB1dD1mMWY3ZjRiYWUzOTY2MDEwXSovCiB7CiAgICAgaW50IG1hc3Rlcl9mZCA9IC0xLCByZXN1bHQgPSAwOwogICAgIHBpZF90IHBpZDsKQEAgLTYxNDUsNTkgKzU5ODUsNzMgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihOaSkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBtYXN0ZXJfZmQpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GT1JLUFRZICovCiAKIAogI2lmZGVmIEhBVkVfR0VURUdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldGVnaWRfX2RvY19fLAotImdldGVnaWQoKSAtPiBlZ2lkXG5cblwKLVJldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0ZWdpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGVnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRlZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MGY0MzNhOGMwYjFkOTE5IGlucHV0PTE1OTZmNzlhZDExMDdkNWRdKi8KIHsKICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tR2lkKGdldGVnaWQoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEVHSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRFVUlECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0ZXVpZF9fZG9jX18sCi0iZ2V0ZXVpZCgpIC0+IGV1aWRcblxuXAotUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgdXNlciBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGV1aWQKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyBlZmZlY3RpdmUgdXNlciBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGV1aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYTUzMmM0YTY2ODc0MzU3IGlucHV0PTQ2NDRjNjYyZDNiZDlmMTldKi8KIHsKICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tVWlkKGdldGV1aWQoKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVEVVSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRnaWRfX2RvY19fLAotImdldGdpZCgpIC0+IGdpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0Z2lkCisKK1JldHVybiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZ3JvdXAgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxYTIyMDIxYjc0ZWE0NmIgaW5wdXQ9NTg3OTYzNDRjZDg3YzBmNl0qLwogewogICAgIHJldHVybiBfUHlMb25nX0Zyb21HaWQoZ2V0Z2lkKCkpOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cGlkX19kb2NfXywKLSJnZXRwaWQoKSAtPiBwaWRcblxuXAotUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgaWQiKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBpZAorCitSZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldHBpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGZiZjNhOTM0ZWUwOWU2MiBpbnB1dD01YTlhMDBmMGFiNjhhYTAwXSovCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKGdldHBpZCgpKTsKIH0KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCisKKy8qIEFDIDMuNTogZnVubnkgYXBwbGUgbG9naWMgYmVsb3cgKi8KIFB5RG9jX1NUUlZBUihwb3NpeF9nZXRncm91cGxpc3RfX2RvY19fLAogImdldGdyb3VwbGlzdCh1c2VyLCBncm91cCkgLT4gbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3NcblxuXAogUmV0dXJucyBhIGxpc3Qgb2YgZ3JvdXBzIHRvIHdoaWNoIGEgdXNlciBiZWxvbmdzLlxuXG5cCkBAIC02MjcwLDE1ICs2MTI0LDE5IEBACiAKICAgICByZXR1cm4gbGlzdDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUR1JPVVBMSVNUICovCisKIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBTCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBzX19kb2NfXywKLSJnZXRncm91cHMoKSAtPiBsaXN0IG9mIGdyb3VwIElEc1xuXG5cCi1SZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgSURzIGZvciB0aGUgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldGdyb3VwcworCitSZXR1cm4gbGlzdCBvZiBzdXBwbGVtZW50YWwgZ3JvdXAgSURzIGZvciB0aGUgcHJvY2Vzcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldGdyb3Vwc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU3YzRmZDJkYjZkNWM2MCBpbnB1dD1kM2YxMDk0MTJlNmExNTVjXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTYzNzcsNyArNjIzNSw3IEBACiAKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9HRVRHUk9VUFMgKi8KIAogI2lmZGVmIEhBVkVfSU5JVEdST1VQUwogUHlEb2NfU1RSVkFSKHBvc2l4X2luaXRncm91cHNfX2RvY19fLApAQCAtNjM4Niw2ICs2MjQ0LDcgQEAKIHRoZSBncm91cHMgb2Ygd2hpY2ggdGhlIHNwZWNpZmllZCB1c2VybmFtZSBpcyBhIG1lbWJlciwgcGx1cyB0aGUgc3BlY2lmaWVkXG5cCiBncm91cCBpZC4iKTsKIAorLyogQUMgMy41OiBmdW5ueSBhcHBsZSBsb2dpYyAqLwogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X2luaXRncm91cHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtNjQxOCwyMCArNjI3NywyMyBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfSU5JVEdST1VQUyAqLworCiAKICNpZmRlZiBIQVZFX0dFVFBHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwZ2lkX19kb2NfXywKLSJnZXRwZ2lkKHBpZCkgLT4gcGdpZFxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRwZ2lkKCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRwZ2lkCisKKyAgICBwaWQ6IHBpZF90CisKK0NhbGwgdGhlIHN5c3RlbSBjYWxsIGdldHBnaWQoKSwgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19nZXRwZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGlkX3QgcGlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTcwZTcxM2I0ZDU0YjdjNjEgaW5wdXQ9MzlkNzEwYWUzYmFhZjFjN10qLwogewotICAgIHBpZF90IHBpZCwgcGdpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOmdldHBnaWQiLCAmcGlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGdpZCA9IGdldHBnaWQocGlkKTsKKyAgICBwaWRfdCBwZ2lkID0gZ2V0cGdpZChwaWQpOwogICAgIGlmIChwZ2lkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tUGlkKHBnaWQpOwpAQCAtNjQ0MCwxMiArNjMwMiwxNSBAQAogCiAKICNpZmRlZiBIQVZFX0dFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRwZ3JwX19kb2NfXywKLSJnZXRwZ3JwKCkgLT4gcGdycFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcyBncm91cCBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBncnAKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MgZ3JvdXAgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXRwZ3JwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2YzNDAzNTg1ODQ2ODExZiBpbnB1dD02ODQ2ZmIyYmI5YTM3MDVlXSovCiB7CiAjaWZkZWYgR0VUUEdSUF9IQVZFX0FSRwogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwZ3JwKDApKTsKQEAgLTY0NTcsMTIgKzYzMjIsMTUgQEAKIAogCiAjaWZkZWYgSEFWRV9TRVRQR1JQCi1QeURvY19TVFJWQVIocG9zaXhfc2V0cGdycF9fZG9jX18sCi0ic2V0cGdycCgpXG5cblwKLU1ha2UgdGhpcyBwcm9jZXNzIHRoZSBwcm9jZXNzIGdyb3VwIGxlYWRlci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHBncnAKKworTWFrZSB0aGUgY3VycmVudCBwcm9jZXNzIHRoZSBsZWFkZXIgb2YgaXRzIHByb2Nlc3MgZ3JvdXAuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRwZ3JwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3Nfc2V0cGdycF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTk2NTBmNTVhOTYzZDdhYyBpbnB1dD0xZjA2MTlmY2I1NzMxZTdlXSovCiB7CiAjaWZkZWYgU0VUUEdSUF9IQVZFX0FSRwogICAgIGlmIChzZXRwZ3JwKDAsIDApIDwgMCkKQEAgLTY0NzMsNyArNjM0MSw2IEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQotCiAjZW5kaWYgLyogSEFWRV9TRVRQR1JQICovCiAKICNpZmRlZiBIQVZFX0dFVFBQSUQKQEAgLTY1MjAsMTQgKzYzODcsMTkgQEAKIH0KICNlbmRpZiAvKk1TX1dJTkRPV1MqLwogCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cHBpZF9fZG9jX18sCi0iZ2V0cHBpZCgpIC0+IHBwaWRcblxuXAotUmV0dXJuIHRoZSBwYXJlbnQncyBwcm9jZXNzIGlkLiAgSWYgdGhlIHBhcmVudCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZCxcblwKLVdpbmRvd3MgbWFjaGluZXMgd2lsbCBzdGlsbCByZXR1cm4gaXRzIGlkOyBvdGhlcnMgc3lzdGVtcyB3aWxsIHJldHVybiB0aGUgaWRcblwKLW9mIHRoZSAnaW5pdCcgcHJvY2VzcyAoMSkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHBwaWQKKworUmV0dXJuIHRoZSBwYXJlbnQncyBwcm9jZXNzIGlkLgorCitJZiB0aGUgcGFyZW50IHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLCBXaW5kb3dzIG1hY2hpbmVzIHdpbGwgc3RpbGwKK3JldHVybiBpdHMgaWQ7IG90aGVycyBzeXN0ZW1zIHdpbGwgcmV0dXJuIHRoZSBpZCBvZiB0aGUgJ2luaXQnIHByb2Nlc3MgKDEpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0cHBpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX2dldHBwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRlNDljOGU3YTg3MzhjZDIgaW5wdXQ9ZTYzN2NiODc1MzljMDMwZV0qLwogewogI2lmZGVmIE1TX1dJTkRPV1MKICAgICByZXR1cm4gd2luMzJfZ2V0cHBpZCgpOwpAQCAtNjUzOSwxMiArNjQxMSwxNSBAQAogCiAKICNpZmRlZiBIQVZFX0dFVExPR0lOCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0bG9naW5fX2RvY19fLAotImdldGxvZ2luKCkgLT4gc3RyaW5nXG5cblwKLVJldHVybiB0aGUgYWN0dWFsIGxvZ2luIG5hbWUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRsb2dpbgorCitSZXR1cm4gdGhlIGFjdHVhbCBsb2dpbiBuYW1lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0bG9naW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRsb2dpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDM3ZWJkYjNlNGI1ZGFjMSBpbnB1dD0yYTIxYWIxZTkxNzE2M2RmXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtNjU3Nyw3NyArNjQ1Miw1NCBAQAogfQogI2VuZGlmIC8qIEhBVkVfR0VUTE9HSU4gKi8KIAorCiAjaWZkZWYgSEFWRV9HRVRVSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXR1aWRfX2RvY19fLAotImdldHVpZCgpIC0+IHVpZFxuXG5cCi1SZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5nZXR1aWQKKworUmV0dXJuIHRoZSBjdXJyZW50IHByb2Nlc3MncyB1c2VyIGlkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0dWlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfZ2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wM2E4Yjg5NGNlZmIzZmE1IGlucHV0PWI1M2M4YjM1ZjExMGE1MTZdKi8KIHsKICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tVWlkKGdldHVpZCgpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUVUlEICovCiAKIAotI2lmZGVmIEhBVkVfS0lMTAotUHlEb2NfU1RSVkFSKHBvc2l4X2tpbGxfX2RvY19fLAotImtpbGwocGlkLCBzaWcpXG5cblwKLUtpbGwgYSBwcm9jZXNzIHdpdGggYSBzaWduYWwuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9raWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IHNpZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiaTpraWxsIiwgJnBpZCwgJnNpZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChraWxsKHBpZCwgc2lnKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0tJTExQRwotUHlEb2NfU1RSVkFSKHBvc2l4X2tpbGxwZ19fZG9jX18sCi0ia2lsbHBnKHBnaWQsIHNpZylcblxuXAotS2lsbCBhIHByb2Nlc3MgZ3JvdXAgd2l0aCBhIHNpZ25hbC4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2tpbGxwZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IHNpZzsKLSAgICBwaWRfdCBwZ2lkOwotICAgIC8qIFhYWCBzb21lIG1hbiBwYWdlcyBtYWtlIHRoZSBgcGdpZGAgcGFyYW1ldGVyIGFuIGludCwgb3RoZXJzCi0gICAgICAgYSBwaWRfdC4gU2luY2UgZ2V0cGdycCgpIHJldHVybnMgYSBwaWRfdCwgd2UgYXNzdW1lIGtpbGxwZyBzaG91bGQKLSAgICAgICB0YWtlIHRoZSBzYW1lIHR5cGUuIE1vcmVvdmVyLCBwaWRfdCBpcyBhbHdheXMgYXQgbGVhc3QgYXMgd2lkZSBhcwotICAgICAgIGludCAoZWxzZSBjb21waWxhdGlvbiBvZiB0aGlzIG1vZHVsZSBmYWlscyksIHdoaWNoIGlzIHNhZmUuICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6a2lsbHBnIiwgJnBnaWQsICZzaWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2lsbHBnKHBnaWQsIHNpZykgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KLSNlbmRpZgotCiAjaWZkZWYgTVNfV0lORE9XUwotUHlEb2NfU1RSVkFSKHdpbjMyX2tpbGxfX2RvY19fLAotImtpbGwocGlkLCBzaWcpXG5cblwKLUtpbGwgYSBwcm9jZXNzIHdpdGggYSBzaWduYWwuIik7CisjZGVmaW5lIEhBVkVfS0lMTAorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworI2lmZGVmIEhBVkVfS0lMTAorLypbY2xpbmljIGlucHV0XQorb3Mua2lsbAorCisgICAgcGlkOiBwaWRfdAorICAgIHNpZ25hbDogUHlfc3NpemVfdAorICAgIC8KKworS2lsbCBhIHByb2Nlc3Mgd2l0aCBhIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfa2lsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgUHlfc3NpemVfdCBzaWduYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzRmOTA3ZGQwMGE4M2MyNiBpbnB1dD02MWEzNmI4NmNhMjc1YWI5XSovCisjaWZuZGVmIE1TX1dJTkRPV1MKK3sKKyAgICBpZiAoa2lsbChwaWQsIChpbnQpc2lnbmFsKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZWxzZSAvKiAhTVNfV0lORE9XUyAqLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgcGlkX3QgcGlkOwotICAgIERXT1JEIHNpZywgZXJyOworICAgIERXT1JEIHNpZyA9IChEV09SRClzaWduYWw7CisgICAgRFdPUkQgZXJyOwogICAgIEhBTkRMRSBoYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiazpraWxsIiwgJnBpZCwgJnNpZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgLyogQ29uc29sZSBwcm9jZXNzZXMgd2hpY2ggc2hhcmUgYSBjb21tb24gY29uc29sZSBjYW4gYmUgc2VudCBDVFJMK0Mgb3IKICAgICAgICBDVFJMK0JSRUFLIGV2ZW50cywgcHJvdmlkZWQgdGhleSBoYW5kbGUgc2FpZCBldmVudHMuICovCiAgICAgaWYgKHNpZyA9PSBDVFJMX0NfRVZFTlQgfHwgc2lnID09IENUUkxfQlJFQUtfRVZFTlQpIHsKQEAgLTY2NzgsMTAzICs2NTMwLDEzOCBAQAogICAgIENsb3NlSGFuZGxlKGhhbmRsZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogIU1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBIQVZFX0tJTEwgKi8KKworCisjaWZkZWYgSEFWRV9LSUxMUEcKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmtpbGxwZworCisgICAgcGdpZDogcGlkX3QKKyAgICBzaWduYWw6IGludAorICAgIC8KKworS2lsbCBhIHByb2Nlc3MgZ3JvdXAgd2l0aCBhIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2tpbGxwZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBnaWQsIGludCBzaWduYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQzNGE3NjZlZjk0NWY5MyBpbnB1dD0zOGI1NDQ5ZWI4ZmFlYzE5XSovCit7CisgICAgLyogWFhYIHNvbWUgbWFuIHBhZ2VzIG1ha2UgdGhlIGBwZ2lkYCBwYXJhbWV0ZXIgYW4gaW50LCBvdGhlcnMKKyAgICAgICBhIHBpZF90LiBTaW5jZSBnZXRwZ3JwKCkgcmV0dXJucyBhIHBpZF90LCB3ZSBhc3N1bWUga2lsbHBnIHNob3VsZAorICAgICAgIHRha2UgdGhlIHNhbWUgdHlwZS4gTW9yZW92ZXIsIHBpZF90IGlzIGFsd2F5cyBhdCBsZWFzdCBhcyB3aWRlIGFzCisgICAgICAgaW50IChlbHNlIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlIGZhaWxzKSwgd2hpY2ggaXMgc2FmZS4gKi8KKyAgICBpZiAoa2lsbHBnKHBnaWQsIHNpZ25hbCkgPT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIEhBVkVfS0lMTFBHICovCisKIAogI2lmZGVmIEhBVkVfUExPQ0sKLQogI2lmZGVmIEhBVkVfU1lTX0xPQ0tfSAogI2luY2x1ZGUgPHN5cy9sb2NrLmg+CiAjZW5kaWYKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3Bsb2NrX19kb2NfXywKLSJwbG9jayhvcClcblxuXAorLypbY2xpbmljIGlucHV0XQorb3MucGxvY2sKKyAgICBvcDogaW50CisgICAgLworCiBMb2NrIHByb2dyYW0gc2VnbWVudHMgaW50byBtZW1vcnkuIik7CitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9wbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01Y2I4NTFmODFiOTE0OTg0IGlucHV0PWU2ZTVlMzQ4ZTE1MjVmNjBdKi8KIHsKLSAgICBpbnQgb3A7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnBsb2NrIiwgJm9wKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHBsb2NrKG9wKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QTE9DSyAqLworCiAKICNpZmRlZiBIQVZFX1NFVFVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHVpZF9fZG9jX18sCi0ic2V0dWlkKHVpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyB1c2VyIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0dWlkCisKKyAgICB1aWQ6IHVpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXR1aWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0dWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgdWlkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0MWVhOWE4ZDFlNWQ1NjUgaW5wdXQ9YzkyMWEzMjg1YWEyMjI1Nl0qLwogewotICAgIHVpZF90IHVpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnNldHVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHVpZCh1aWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUVUlEICovCiAKIAogI2lmZGVmIEhBVkVfU0VURVVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldGV1aWRfX2RvY19fLAotInNldGV1aWQodWlkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSB1c2VyIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0ZXVpZAorCisgICAgZXVpZDogdWlkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZWZmZWN0aXZlIHVzZXIgaWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRldWlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRldWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdWlkX3QgZXVpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NmY0ZjY4MjNhNjQ4ZDZkIGlucHV0PWJhOTNkOTI3ZTQ3ODFhYTldKi8KIHsKLSAgICB1aWRfdCBldWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRldWlkKGV1aWQpIDwgMCkgeworICAgIGlmIChzZXRldWlkKGV1aWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRFVUlEICovCiAKKwogI2lmZGVmIEhBVkVfU0VURUdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldGVnaWRfX2RvY19fLAotInNldGVnaWQoZ2lkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSBncm91cCBpZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldGVnaWQKKworICAgIGVnaWQ6IGdpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGVmZmVjdGl2ZSBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGVnaWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3NldGVnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCBlZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNhMDk0YTY5YTA4MWE2MGYgaW5wdXQ9NDA4MDUyNmQwY2NkNmNlM10qLwogewotICAgIGdpZF90IGVnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldGVnaWQoZWdpZCkgPCAwKSB7CisgICAgaWYgKHNldGVnaWQoZWdpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVEVHSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRSRVVJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJldWlkX19kb2NfXywKLSJzZXRyZXVpZChydWlkLCBldWlkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSB1c2VyIGlkcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHJldWlkCisKKyAgICBydWlkOiB1aWRfdAorICAgIGV1aWQ6IHVpZF90CisgICAgLworCitTZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwgYW5kIGVmZmVjdGl2ZSB1c2VyIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHJldWlkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRyZXVpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjI5MzhjM2U3M2QyN2VjNyBpbnB1dD0wY2E4OTc4ZGU2NjM4ODBjXSovCiB7Ci0gICAgdWlkX3QgcnVpZCwgZXVpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmV1aWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRyZXVpZChydWlkLCBldWlkKSA8IDApIHsKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgfSBlbHNlIHsKQEAgLTY3ODQsNTMgKzY2NzEsNjIgQEAKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFJFVUlEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUUkVHSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRyZWdpZF9fZG9jX18sCi0ic2V0cmVnaWQocmdpZCwgZWdpZClcblxuXAotU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cmVnaWQKKworICAgIHJnaWQ6IGdpZF90CisgICAgZWdpZDogZ2lkX3QKKyAgICAvCisKK1NldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCBhbmQgZWZmZWN0aXZlIGdyb3VwIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHJlZ2lkIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRyZWdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGdpZF90IHJnaWQsIGdpZF90IGVnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGIxOGYxODM5YWJhYmUzZCBpbnB1dD1jNTk0OTlmNzI4NDZkYjc4XSovCiB7Ci0gICAgZ2lkX3QgcmdpZCwgZWdpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmVnaWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXRyZWdpZChyZ2lkLCBlZ2lkKSA8IDApIHsKKyAgICBpZiAoc2V0cmVnaWQocmdpZCwgZWdpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFJFR0lEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUR0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0Z2lkX19kb2NfXywKLSJzZXRnaWQoZ2lkKVxuXG5cCi1TZXQgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGdyb3VwIGlkLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0Z2lkCisgICAgZ2lkOiBnaWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyBncm91cCBpZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldGdpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zZXRnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCBnaWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzU2Y2I0MmM2YWJkOWQ4NyBpbnB1dD0yN2QzMGM0MDU5MDQ1ZGM2XSovCiB7Ci0gICAgZ2lkX3QgZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6c2V0Z2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0Z2lkKGdpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogSEFWRV9TRVRHSUQgKi8KIAorCiAjaWZkZWYgSEFWRV9TRVRHUk9VUFMKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXRncm91cHNfX2RvY19fLAotInNldGdyb3VwcyhsaXN0KVxuXG5cCi1TZXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvIGxpc3QuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRncm91cHMKKworICAgIGdyb3Vwczogb2JqZWN0CisgICAgLworCitTZXQgdGhlIGdyb3VwcyBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHRvIGxpc3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXRncm91cHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpncm91cHMpCitvc19zZXRncm91cHMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmdyb3VwcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OTQ1YzJlM2NjODE3YzU4IGlucHV0PWZhNzQyY2EzZGFmODVhN2VdKi8KIHsKICAgICBpbnQgaSwgbGVuOwogICAgIGdpZF90IGdyb3VwbGlzdFtNQVhfR1JPVVBTXTsKQEAgLTY5MzEsODMgKzY4MjcsMTE0IEBACiB9CiAjZW5kaWYgLyogSEFWRV9XQUlUMyB8fCBIQVZFX1dBSVQ0ICovCiAKKwogI2lmZGVmIEhBVkVfV0FJVDMKLVB5RG9jX1NUUlZBUihwb3NpeF93YWl0M19fZG9jX18sCi0id2FpdDMob3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzLCBydXNhZ2UpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdDMKKworICAgIG9wdGlvbnM6IGludAorV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGNoaWxkIHByb2Nlc3MuCisKK1JldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczoKKyAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0MyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc193YWl0M19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBvcHRpb25zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUxOGFmNDkyNGRjNTQ5NDUgaW5wdXQ9OGFjNGM1Njk1NmI2MTcxMF0qLwogewogICAgIHBpZF90IHBpZDsKLSAgICBpbnQgb3B0aW9uczsKICAgICBzdHJ1Y3QgcnVzYWdlIHJ1OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFdBSVRfVFlQRSBzdGF0dXM7CiAgICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOndhaXQzIiwgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0Mygmc3RhdHVzLCBvcHRpb25zLCAmcnUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHBpZCA9IHdhaXQzKCZzdGF0dXMsIG9wdGlvbnMsICZydSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocGlkIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHBpZCA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAogICAgIHJldHVybiB3YWl0X2hlbHBlcihwaWQsIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpLCAmcnUpOwogfQogI2VuZGlmIC8qIEhBVkVfV0FJVDMgKi8KIAorCiAjaWZkZWYgSEFWRV9XQUlUNAotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXQ0X19kb2NfXywKLSJ3YWl0NChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cywgcnVzYWdlKVxuXG5cCi1XYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KKworb3Mud2FpdDQKKworICAgIHBpZDogcGlkX3QKKyAgICBvcHRpb25zOiBpbnQKKworV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIHNwZWNpZmljIGNoaWxkIHByb2Nlc3MuCisKK1JldHVybnMgYSB0dXBsZSBvZiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2hpbGQgcHJvY2VzczoKKyAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0NChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc193YWl0NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzE0ZjE5ZTZmZjAxZTA5OSBpbnB1dD1kMTFkZWVkMDc1MDYwMGJhXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIGludCBvcHRpb25zOworICAgIHBpZF90IHJlczsKICAgICBzdHJ1Y3QgcnVzYWdlIHJ1OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIFdBSVRfVFlQRSBzdGF0dXM7CiAgICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCAmcGlkLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSB3YWl0NChwaWQsICZzdGF0dXMsIG9wdGlvbnMsICZydSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0NChwaWQsICZzdGF0dXMsIG9wdGlvbnMsICZydSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIHJldHVybiB3YWl0X2hlbHBlcihwaWQsIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpLCAmcnUpOworICAgIHJldHVybiB3YWl0X2hlbHBlcihyZXMsIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpLCAmcnUpOwogfQogI2VuZGlmIC8qIEhBVkVfV0FJVDQgKi8KIAorCiAjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRpZF9fZG9jX18sCi0id2FpdGlkKGlkdHlwZSwgaWQsIG9wdGlvbnMpIC0+IHdhaXRpZF9yZXN1bHRcblxuXAotV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLlxuXG5cCi1pZHR5cGUgY2FuIGJlIFBfUElELCBQX1BHSUQgb3IgUF9BTEwuXG5cCi1pZCBzcGVjaWZpZXMgdGhlIHBpZCB0byB3YWl0IG9uLlxuXAotb3B0aW9ucyBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiBXRVhJVEVELCBXU1RPUFBFRFxuXAotb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULlxuXAotUmV0dXJucyBlaXRoZXIgd2FpdGlkX3Jlc3VsdCBvciBOb25lIGlmIFdOT0hBTkcgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmVcblwKLW5vIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy53YWl0aWQKKworICAgIGlkdHlwZTogaWR0eXBlX3QKKyAgICAgICAgTXVzdCBiZSBvbmUgb2YgYmUgUF9QSUQsIFBfUEdJRCBvciBQX0FMTC4KKyAgICBpZDogaWRfdAorICAgICAgICBUaGUgaWQgdG8gd2FpdCBvbi4KKyAgICBvcHRpb25zOiBpbnQKKyAgICAgICAgQ29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRUQKKyAgICAgICAgb3IgV0NPTlRJTlVFRCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGggV05PSEFORyBvciBXTk9XQUlULgorICAgIC8KKworUmV0dXJucyB0aGUgcmVzdWx0IG9mIHdhaXRpbmcgZm9yIGEgcHJvY2VzcyBvciBwcm9jZXNzZXMuCisKK1JldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlCitubyBjaGlsZHJlbiBpbiBhIHdhaXRhYmxlIHN0YXRlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd2FpdGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXRpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGlkdHlwZV90IGlkdHlwZSwgaWRfdCBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWMwMTkyNzUwZTIyZmEyZSBpbnB1dD1kOGU3Zjc2ZTA1MmI3OTIwXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpZHR5cGVfdCBpZHR5cGU7Ci0gICAgaWRfdCBpZDsKLSAgICBpbnQgb3B0aW9ucywgcmVzOworICAgIGludCByZXM7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc2lnaW5mb190IHNpOwogICAgIHNpLnNpX3BpZCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gd2FpdGlkKGlkdHlwZSwgaWQsICZzaSwgb3B0aW9ucyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSB3YWl0aWQoaWR0eXBlLCBpZCwgJnNpLCBvcHRpb25zKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXMgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogCiAgICAgaWYgKHNpLnNpX3BpZCA9PSAwKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTcwMjgsNzkgKzY5NTUsMTExIEBACiAKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKSAqLwogCi0jaWZkZWYgSEFWRV9XQUlUUElECi1QeURvY19TVFJWQVIocG9zaXhfd2FpdHBpZF9fZG9jX18sCi0id2FpdHBpZChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cylcblxuXAotV2FpdCBmb3IgY29tcGxldGlvbiBvZiBhIGdpdmVuIGNoaWxkIHByb2Nlc3MuIik7CisKKyNpZiBkZWZpbmVkKEhBVkVfV0FJVFBJRCkKKy8qW2NsaW5pYyBpbnB1dF0KK29zLndhaXRwaWQKKyAgICBwaWQ6IHBpZF90CisgICAgb3B0aW9uczogaW50CisgICAgLworCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgY2hpbGQgcHJvY2VzczoKKyAgICAocGlkLCBzdGF0dXMpCisKK1RoZSBvcHRpb25zIGFyZ3VtZW50IGlzIGlnbm9yZWQgb24gV2luZG93cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXRwaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfd2FpdHBpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWUzNTkzMzUzZDU0YjE1YiBpbnB1dD0wYmYxNjY2Yjg3NThmZGEzXSovCiB7Ci0gICAgcGlkX3QgcGlkOwotICAgIGludCBvcHRpb25zOworICAgIHBpZF90IHJlczsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBXQUlUX1RZUEUgc3RhdHVzOwogICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJpOndhaXRwaWQiLCAmcGlkLCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwaWQgPSB3YWl0cGlkKHBpZCwgJnN0YXR1cywgb3B0aW9ucyk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGlkID09IC0xKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gd2FpdHBpZChwaWQsICZzdGF0dXMsIG9wdGlvbnMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5pIiwgUHlMb25nX0Zyb21QaWQocmVzKSwgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpOwogfQotCiAjZWxpZiBkZWZpbmVkKEhBVkVfQ1dBSVQpCi0KIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KLVB5RG9jX1NUUlZBUihwb3NpeF93YWl0cGlkX19kb2NfXywKLSJ3YWl0cGlkKHBpZCwgb3B0aW9ucykgLT4gKHBpZCwgc3RhdHVzIDw8IDgpXG5cbiIKLSJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgZ2l2ZW4gcHJvY2Vzcy4gIG9wdGlvbnMgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdHBpZAorICAgIHBpZDogUHlfaW50cHRyX3QKKyAgICBvcHRpb25zOiBpbnQKKyAgICAvCisKK1dhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBnaXZlbiBwcm9jZXNzLgorCitSZXR1cm5zIGEgdHVwbGUgb2YgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cyA8PCA4KQorCitUaGUgb3B0aW9ucyBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF93YWl0cGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3dhaXRwaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZjMWQ1MjBkYjAxOTYyNWYgaW5wdXQ9NDQ0YzhmNTFjY2E1Yjg2Ml0qLwogewotICAgIFB5X2ludHB0cl90IHBpZDsKLSAgICBpbnQgc3RhdHVzLCBvcHRpb25zOworICAgIGludCBzdGF0dXM7CisgICAgUHlfaW50cHRyX3QgcmVzOworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9JTlRQVFIgImk6d2FpdHBpZCIsICZwaWQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBpZCA9IF9jd2FpdCgmc3RhdHVzLCBwaWQsIG9wdGlvbnMpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHBpZCA9PSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IF9jd2FpdCgmc3RhdHVzLCBwaWQsIG9wdGlvbnMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICAvKiBzaGlmdCB0aGUgc3RhdHVzIGxlZnQgYSBieXRlIHNvIHRoaXMgaXMgbW9yZSBsaWtlIHRoZSBQT1NJWCB3YWl0cGlkICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoX1B5X1BBUlNFX0lOVFBUUiAiaSIsIHBpZCwgc3RhdHVzIDw8IDgpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKF9QeV9QQVJTRV9JTlRQVFIgImkiLCByZXMsIHN0YXR1cyA8PCA4KTsKIH0KLSNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgfHwgSEFWRV9DV0FJVCAqLworI2VuZGlmCisKIAogI2lmZGVmIEhBVkVfV0FJVAotUHlEb2NfU1RSVkFSKHBvc2l4X3dhaXRfX2RvY19fLAotIndhaXQoKSAtPiAocGlkLCBzdGF0dXMpXG5cblwKLVdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYSBjaGlsZCBwcm9jZXNzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Mud2FpdAorCitXYWl0IGZvciBjb21wbGV0aW9uIG9mIGEgY2hpbGQgcHJvY2Vzcy4KKworUmV0dXJucyBhIHR1cGxlIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlsZCBwcm9jZXNzOgorICAgIChwaWQsIHN0YXR1cykKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3dhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc193YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTdmNDk3ODM5M2UwNjU0IGlucHV0PTAzYjAxODJkNGE0NzAwY2VdKi8KIHsKICAgICBwaWRfdCBwaWQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgV0FJVF9UWVBFIHN0YXR1czsKICAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcGlkID0gd2FpdCgmc3RhdHVzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChwaWQgPT0gLTEpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBwaWQgPSB3YWl0KCZzdGF0dXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHBpZCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChwaWQgPCAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCBQeUxvbmdfRnJvbVBpZChwaWQpLCBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1dBSVQgKi8KIAogCiAjaWYgZGVmaW5lZChIQVZFX1JFQURMSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC03MTE2LDYgKzcwNzUsNyBAQAogCiAjaWZkZWYgSEFWRV9SRUFETElOSwogCisvKiBBQyAzLjU6IG1lcmdlIHdpbjMyIGFuZCBub3QgdG9nZXRoZXIgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CkBAIC03MTMwLDEyICs3MDkwLDcgQEAKICAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicmVhZGxpbmsiOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0jaWZkZWYgSEFWRV9SRUFETElOS0FUCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQURMSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNzE2MSwyMyArNzExNiw4NiBAQAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLQogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KIAorI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgd2NoYXJfdCAqcGF0aDsKKyAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOworICAgIERXT1JEIGlvX3Jlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CisgICAgICAgIGludCBkaXJfZmQ7CisgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOworCisgICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CisgICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVXwkTyY6cmVhZGxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBGaXJzdCBnZXQgYSBoYW5kbGUgdG8gdGhlIHJlcGFyc2UgcG9pbnQgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVwYXJzZV9wb2ludF9oYW5kbGUgPSBDcmVhdGVGaWxlVygKKyAgICAgICAgcGF0aCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgMCwKKyAgICAgICAgT1BFTl9FWElTVElORywKKyAgICAgICAgRklMRV9GTEFHX09QRU5fUkVQQVJTRV9QT0lOVHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywKKyAgICAgICAgMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXBhcnNlX3BvaW50X2hhbmRsZT09SU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIC8qIE5ldyBjYWxsIERldmljZUlvQ29udHJvbCB0byByZWFkIHRoZSByZXBhcnNlIHBvaW50ICovCisgICAgaW9fcmVzdWx0ID0gRGV2aWNlSW9Db250cm9sKAorICAgICAgICByZXBhcnNlX3BvaW50X2hhbmRsZSwKKyAgICAgICAgRlNDVExfR0VUX1JFUEFSU0VfUE9JTlQsCisgICAgICAgIDAsIDAsIC8qIGluIGJ1ZmZlciAqLworICAgICAgICB0YXJnZXRfYnVmZmVyLCBzaXplb2YodGFyZ2V0X2J1ZmZlciksCisgICAgICAgICZuX2J5dGVzX3JldHVybmVkLAorICAgICAgICAwIC8qIHdlJ3JlIG5vdCB1c2luZyBPVkVSTEFQUEVEX0lPICovCisgICAgICAgICk7CisgICAgQ2xvc2VIYW5kbGUocmVwYXJzZV9wb2ludF9oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaW9fcmVzdWx0PT0wKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKKworICAgIGlmIChyZGItPlJlcGFyc2VUYWcgIT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykKKyAgICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub3QgYSBzeW1ib2xpYyBsaW5rIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwcmludF9uYW1lID0gcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlBhdGhCdWZmZXIgKworICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lT2Zmc2V0OworCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihwcmludF9uYW1lLAorICAgICAgICAgICAgICAgICAgICByZGItPlN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXIuUHJpbnROYW1lTGVuZ3RoLzIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKwogCiAjaWZkZWYgSEFWRV9TWU1MSU5LCi1QeURvY19TVFJWQVIocG9zaXhfc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeT1GYWxzZSwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblxuXAotdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmVcblwKLSAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlc1xuXAotICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKVxuXAotICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCkBAIC03MzIzLDE4OSArNzM0MSwxMDIgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KICNlbmRpZgogCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN5bWxpbmsKKyAgICBzcmM6IHBhdGhfdAorICAgIGRzdDogcGF0aF90CisgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeTogYm9vbCA9IEZhbHNlCisgICAgKgorICAgIGRpcl9mZDogZGlyX2ZkKHJlcXVpcmVzPSdzeW1saW5rYXQnKT1Ob25lCisKKyMgInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK0NyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC4KKwordGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGlmIHRoZSB0YXJnZXQgaXMgdG8gYmUKKyAgaW50ZXJwcmV0ZWQgYXMgYSBkaXJlY3RvcnkuICAoT24gV2luZG93cywgc3ltbGluayByZXF1aXJlcworICBXaW5kb3dzIDYuMCBvciBncmVhdGVyLCBhbmQgcmFpc2VzIGEgTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuKQorICB0YXJnZXRfaXNfZGlyZWN0b3J5IGlzIGlnbm9yZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LgorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS4KKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5bWxpbmtfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsCisgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pc19kaXJlY3RvcnksIGludCBkaXJfZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTAxYjRiY2YzMjQwM2NjZCBpbnB1dD1lODIwZWM0NDcyNTQ3YmMzXSovCiB7Ci0gICAgcGF0aF90IHNyYzsKLSAgICBwYXRoX3QgZHN0OwotICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKLSAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIHJlc3VsdDsKICNlbHNlCiAgICAgaW50IHJlc3VsdDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKLSAgICBzcmMuZnVuY3Rpb25fbmFtZSA9ICJzeW1saW5rIjsKLSAgICBzcmMuYXJndW1lbnRfbmFtZSA9ICJzcmMiOwotICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7Ci0gICAgZHN0LmZ1bmN0aW9uX25hbWUgPSAic3ltbGluayI7Ci0gICAgZHN0LmFyZ3VtZW50X25hbWUgPSAiZHN0IjsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGluaygpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGluayBmdW5jdGlvbnMgbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgaWYgKCF3aW4zMl9jYW5fc3ltbGluaykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInN5bWJvbGljIGxpbmsgcHJpdmlsZWdlIG5vdCBoZWxkIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8aSRPJjpzeW1saW5rIiwKLSAgICAgICAgICAgIGtleXdvcmRzLAotICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCi0gICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmRzdCwKLSAgICAgICAgICAgICZ0YXJnZXRfaXNfZGlyZWN0b3J5LAotI2lmZGVmIEhBVkVfU1lNTElOS0FUCi0gICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0jZW5kaWYKLSAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAic3ltbGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChkc3Qud2lkZSkgeworICAgIGlmIChkc3QtPndpZGUpIHsKICAgICAgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLwotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy53aWRlLCBkc3Qud2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LndpZGUsIHNyYy53aWRlLAorICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyQShzcmMubmFycm93LCBkc3QubmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LAorICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJBKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcjIoJnNyYywgJmRzdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAKICNlbHNlCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWYgSEFWRV9TWU1MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBzeW1saW5rYXQoc3JjLm5hcnJvdywgZGlyX2ZkLCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gc3ltbGlua2F0KHNyYy0+bmFycm93LCBkaXJfZmQsIGRzdC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gc3ltbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gc3ltbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IyKCZzcmMsICZkc3QpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAjZW5kaWYKIAotICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIGdvdG8gZXhpdDsgLyogc2lsZW5jZSAidW51c2VkIGxhYmVsIiB3YXJuaW5nICovCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKLSAgICBwYXRoX2NsZWFudXAoJmRzdCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLQogI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwogCiAKLSNpZiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHdjaGFyX3QgKnBhdGg7Ci0gICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKLSAgICBEV09SRCBpb19yZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOwotICAgIEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZTsKLQotICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07Ci0gICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwotICAgIHdjaGFyX3QgKnByaW50X25hbWU7Ci0KLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlV8JE8mOnJlYWRsaW5rIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocG8pOwotICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogRmlyc3QgZ2V0IGEgaGFuZGxlIHRvIHRoZSByZXBhcnNlIHBvaW50ICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcGFyc2VfcG9pbnRfaGFuZGxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIDAsCi0gICAgICAgIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlR8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCi0gICAgICAgIDApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVwYXJzZV9wb2ludF9oYW5kbGU9PUlOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAvKiBOZXcgY2FsbCBEZXZpY2VJb0NvbnRyb2wgdG8gcmVhZCB0aGUgcmVwYXJzZSBwb2ludCAqLwotICAgIGlvX3Jlc3VsdCA9IERldmljZUlvQ29udHJvbCgKLSAgICAgICAgcmVwYXJzZV9wb2ludF9oYW5kbGUsCi0gICAgICAgIEZTQ1RMX0dFVF9SRVBBUlNFX1BPSU5ULAotICAgICAgICAwLCAwLCAvKiBpbiBidWZmZXIgKi8KLSAgICAgICAgdGFyZ2V0X2J1ZmZlciwgc2l6ZW9mKHRhcmdldF9idWZmZXIpLAotICAgICAgICAmbl9ieXRlc19yZXR1cm5lZCwKLSAgICAgICAgMCAvKiB3ZSdyZSBub3QgdXNpbmcgT1ZFUkxBUFBFRF9JTyAqLwotICAgICAgICApOwotICAgIENsb3NlSGFuZGxlKHJlcGFyc2VfcG9pbnRfaGFuZGxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGlvX3Jlc3VsdD09MCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgicmVhZGxpbmsiLCBwbyk7Ci0KLSAgICBpZiAocmRiLT5SZXBhcnNlVGFnICE9IElPX1JFUEFSU0VfVEFHX1NZTUxJTkspCi0gICAgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAibm90IGEgc3ltYm9saWMgbGluayIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcHJpbnRfbmFtZSA9IHJkYi0+U3ltYm9saWNMaW5rUmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyICsKLSAgICAgICAgICAgICAgICAgcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlByaW50TmFtZU9mZnNldDsKLQotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHJpbnRfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgcmRiLT5TeW1ib2xpY0xpbmtSZXBhcnNlQnVmZmVyLlByaW50TmFtZUxlbmd0aC8yKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCiAKIHN0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRpbWVzX3Jlc3VsdF9maWVsZHNbXSA9IHsKQEAgLTc1NzEsMTUgKzc1MDIsMjYgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCi0idGltZXMoKSAtPiB0aW1lc19yZXN1bHRcblxuXAotUmV0dXJuIGFuIG9iamVjdCBjb250YWluaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBwcm9jZXNzXG5cCi10aW1lcy4gIFRoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6XG5cCi0gICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpIik7CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZuZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECitzdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisvKltjbGluaWMgaW5wdXRdCitvcy50aW1lcworCitSZXR1cm4gYSBjb2xsZWN0aW9uIGNvbnRhaW5pbmcgcHJvY2VzcyB0aW1pbmcgaW5mb3JtYXRpb24uCisKK1RoZSBvYmplY3QgcmV0dXJuZWQgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGVzZSBmaWVsZHM6CisgICh1dGltZSwgc3RpbWUsIGN1dGltZSwgY3N0aW1lLCBlbGFwc2VkX3RpbWUpCitBbGwgZmllbGRzIGFyZSBmbG9hdGluZyBwb2ludCBudW1iZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc190aW1lc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYwYTYzZWJlNmU2ZjA5MSBpbnB1dD0yYmY5ZGYzZDZhYjJlNDhiXSovCisjaWZkZWYgTVNfV0lORE9XUwogewogICAgIEZJTEVUSU1FIGNyZWF0ZSwgZXhpdCwga2VybmVsLCB1c2VyOwogICAgIEhBTkRMRSBoUHJvYzsKQEAgLTc1OTksMTIgKzc1NDEsMTAgQEAKICAgICAgICAgKGRvdWJsZSkwLAogICAgICAgICAoZG91YmxlKTApOwogfQotI2Vsc2UgLyogTm90IFdpbmRvd3MgKi8KLSNkZWZpbmUgTkVFRF9USUNLU19QRVJfU0VDT05ECi1zdGF0aWMgbG9uZyB0aWNrc19wZXJfc2Vjb25kID0gLTE7Ci1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCisjZWxzZSAvKiBNU19XSU5ET1dTICovCiB7CisKKwogICAgIHN0cnVjdCB0bXMgdDsKICAgICBjbG9ja190IGM7CiAgICAgZXJybm8gPSAwOwpAQCAtNzYxOCwyMyArNzU1OCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpdC50bXNfY3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWMgLyB0aWNrc19wZXJfc2Vjb25kKTsKIH0KLSNlbmRpZgotCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogI2VuZGlmIC8qIEhBVkVfVElNRVMgKi8KIAogCiAjaWZkZWYgSEFWRV9HRVRTSUQKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXRzaWRfX2RvY19fLAotImdldHNpZChwaWQpIC0+IHNpZFxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRzaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHNpZAorCisgICAgcGlkOiBwaWRfdAorICAgIC8KKworQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0c2lkKHBpZCkgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZ2V0c2lkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2dldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDc0ZjgwYzBlNmJmYjM4IGlucHV0PWVlYjJiOTIzYTMwY2UwNGVdKi8KIHsKLSAgICBwaWRfdCBwaWQ7CiAgICAgaW50IHNpZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzaWQgPSBnZXRzaWQocGlkKTsKICAgICBpZiAoc2lkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC03NjQ0LDUzICs3NTg2LDYwIEBACiAKIAogI2lmZGVmIEhBVkVfU0VUU0lECi1QeURvY19TVFJWQVIocG9zaXhfc2V0c2lkX19kb2NfXywKLSJzZXRzaWQoKVxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldHNpZAorCitDYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRzaWQoKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHNpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK29zX3NldHNpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzk4ZmMxNTJhZTMyNzMzMCBpbnB1dD01ZmZmNDU4NThlMmYwNzc2XSovCiB7CiAgICAgaWYgKHNldHNpZCgpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIEhBVkVfU0VUU0lEICovCiAKKwogI2lmZGVmIEhBVkVfU0VUUEdJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHBnaWRfX2RvY19fLAotInNldHBnaWQocGlkLCBwZ3JwKVxuXG5cCi1DYWxsIHRoZSBzeXN0ZW0gY2FsbCBzZXRwZ2lkKCkuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRwZ2lkCisKKyAgICBwaWQ6IHBpZF90CisgICAgcGdycDogcGlkX3QKKyAgICAvCisKK0NhbGwgdGhlIHN5c3RlbSBjYWxsIHNldHBnaWQocGlkLCBwZ3JwKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3NldHBnaWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3Nfc2V0cGdpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBpZF90IHBpZCwgcGlkX3QgcGdycCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MDc5YThlOTMyOTEyODQxIGlucHV0PWZjZWIzOTVlY2E1NzJlMWFdKi8KIHsKLSAgICBwaWRfdCBwaWQ7Ci0gICAgaW50IHBncnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImk6c2V0cGdpZCIsICZwaWQsICZwZ3JwKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNldHBnaWQocGlkLCBwZ3JwKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1NFVFBHSUQgKi8KIAogCiAjaWZkZWYgSEFWRV9UQ0dFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF90Y2dldHBncnBfX2RvY19fLAotInRjZ2V0cGdycChmZCkgLT4gcGdpZFxuXG5cCi1SZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBnaXZlbiBieSBhIGZkLiIpOworLypbY2xpbmljIGlucHV0XQorb3MudGNnZXRwZ3JwCisKKyAgICBmZDogaW50CisgICAgLworCitSZXR1cm4gdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90Y2dldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdGNnZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWViYjZkYzVmMTExYzdkYzAgaW5wdXQ9N2Y2YzE4ZWFjMTBhZGE4Nl0qLwogewotICAgIGludCBmZDsKLSAgICBwaWRfdCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTp0Y2dldHBncnAiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwZ2lkID0gdGNnZXRwZ3JwKGZkKTsKKyAgICBwaWRfdCBwZ2lkID0gdGNnZXRwZ3JwKGZkKTsKICAgICBpZiAocGdpZCA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChwZ2lkKTsKQEAgLTc2OTksMjEgKzc2NDgsMjMgQEAKIAogCiAjaWZkZWYgSEFWRV9UQ1NFVFBHUlAKLVB5RG9jX1NUUlZBUihwb3NpeF90Y3NldHBncnBfX2RvY19fLAotInRjc2V0cGdycChmZCwgcGdpZClcblxuXAotU2V0IHRoZSBwcm9jZXNzIGdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGVybWluYWwgZ2l2ZW4gYnkgYSBmZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnRjc2V0cGdycAorCisgICAgZmQ6IGludAorICAgIHBnaWQ6IHBpZF90CisgICAgLworCitTZXQgdGhlIHByb2Nlc3MgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0ZXJtaW5hbCBzcGVjaWZpZWQgYnkgZmQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90Y3NldHBncnAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfdGNzZXRwZ3JwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBwaWRfdCBwZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlNGIwNTE3NzQ2MmNkMjIgaW5wdXQ9NWJkYzk5N2M2YTYxOTAyMF0qLwogewotICAgIGludCBmZDsKLSAgICBwaWRfdCBwZ2lkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiOnRjc2V0cGdycCIsICZmZCwgJnBnaWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodGNzZXRwZ3JwKGZkLCBwZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwogCkBAIC03NzIzLDE1OCArNzY3NCwxNjYgQEAKIGV4dGVybiBpbnQgX1B5X29wZW5fY2xvZXhlY193b3JrczsKICNlbmRpZgogCi1QeURvY19TVFJWQVIocG9zaXhfb3Blbl9fZG9jX18sCi0ib3BlbihwYXRoLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLU9wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBoYW5kbGUgKGludGVnZXIpLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5vcGVuIC0+IGludAorICAgIHBhdGg6IHBhdGhfdAorICAgIGZsYWdzOiBpbnQKKyAgICBtb2RlOiBpbnQgPSAwbzc3NworICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nb3BlbmF0JykgPSBOb25lCisKKyMgIm9wZW4ocGF0aCwgZmxhZ3MsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKVxuXG5cCisKK09wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBkZXNjcmlwdG9yIChpbnRlZ2VyKS4KKworSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4KK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3Nfb3Blbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwKKyAgICAgICAgICAgICBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3ZThjYzYzNTU5ZjVkZGQgaW5wdXQ9YWQ4NjIzYjI5YWNkMjkzNF0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBmbGFnczsKLSAgICBpbnQgbW9kZSA9IDA3Nzc7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmZDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCBhc3luY19lcnIgPSAwOworCiAjaWZkZWYgT19DTE9FWEVDCiAgICAgaW50ICphdG9taWNfZmxhZ193b3JrcyA9ICZfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogI2VsaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzID0gTlVMTDsKICNlbmRpZgogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJvcGVuIjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJmZsYWdzLCAmbW9kZSwKLSNpZmRlZiBIQVZFX09QRU5BVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBmbGFncyB8PSBPX05PSU5IRVJJVDsKICNlbGlmIGRlZmluZWQoT19DTE9FWEVDKQogICAgIGZsYWdzIHw9IE9fQ0xPRVhFQzsKICNlbmRpZgogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgud2lkZSkKLSAgICAgICAgZmQgPSBfd29wZW4ocGF0aC53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAocGF0aC0+d2lkZSkKKyAgICAgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCiAjaWZkZWYgSEFWRV9PUEVOQVQKLSAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICAgICAgZmQgPSBvcGVuYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgIGZkID0gb3BlbihwYXRoLm5hcnJvdywgZmxhZ3MsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aC0+bmFycm93LCBmbGFncywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCi0gICAgaWYgKGZkID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoLm9iamVjdCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIGlmICghYXN5bmNfZXJyKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHBhdGgtPm9iamVjdCk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICNpZm5kZWYgTVNfV0lORE9XUwogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCAwLCBhdG9taWNfZmxhZ193b3JrcykgPCAwKSB7CiAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICByZXR1cm4gZmQ7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jbG9zZV9fZG9jX18sCi0iY2xvc2UoZmQpXG5cblwKLUNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yIChmb3IgbG93IGxldmVsIElPKS4iKTsKIAotLyoKLVRoZSB1bmRlcnNjb3JlIGF0IGVuZCBvZiBmdW5jdGlvbiBuYW1lIGF2b2lkcyBhIG5hbWUgY2xhc2ggd2l0aCB0aGUgbGliYwotZnVuY3Rpb24gcG9zaXhfY2xvc2UuCi0qLworLypbY2xpbmljIGlucHV0XQorb3MuY2xvc2UKKworICAgIGZkOiBpbnQKKworQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jbG9zZV8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfY2xvc2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDdiZjJlYTUzNjQ0NWEyNiBpbnB1dD0yYmM0MjQ1MWNhNWMzMjIzXSovCiB7Ci0gICAgaW50IGZkLCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmNsb3NlIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW50IHJlczsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCisgICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICogZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKi8KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJlcyA9IGNsb3NlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfY2xvc2VyYW5nZV9fZG9jX18sCi0iY2xvc2VyYW5nZShmZF9sb3csIGZkX2hpZ2gpXG5cblwKLUNsb3NlcyBhbGwgZmlsZSBkZXNjcmlwdG9ycyBpbiBbZmRfbG93LCBmZF9oaWdoKSwgaWdub3JpbmcgZXJyb3JzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuY2xvc2VyYW5nZQorCisgICAgZmRfbG93OiBpbnQKKyAgICBmZF9oaWdoOiBpbnQKKyAgICAvCisKK0Nsb3NlcyBhbGwgZmlsZSBkZXNjcmlwdG9ycyBpbiBbZmRfbG93LCBmZF9oaWdoKSwgaWdub3JpbmcgZXJyb3JzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2xvc2VyYW5nZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jbG9zZXJhbmdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkX2xvdywgaW50IGZkX2hpZ2gpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzBlNmFkYjk1MjIwYmE5NiBpbnB1dD01ODU1YTNkMDUzZWJkNGVjXSovCiB7Ci0gICAgaW50IGZkX2Zyb20sIGZkX3RvLCBpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Y2xvc2VyYW5nZSIsICZmZF9mcm9tLCAmZmRfdG8pKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZm9yIChpID0gZmRfZnJvbTsgaSA8IGZkX3RvOyBpKyspCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKICAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKICAgICAgICAgICAgIGNsb3NlKGkpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfZHVwX19kb2NfXywKLSJkdXAoZmQpIC0+IGZkMlxuXG5cCi1SZXR1cm4gYSBkdXBsaWNhdGUgb2YgYSBmaWxlIGRlc2NyaXB0b3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5kdXAgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kdXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICAvCisKK1JldHVybiBhIGR1cGxpY2F0ZSBvZiBhIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfZHVwX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0YmJhYzhjNzY1MmQwNWUgaW5wdXQ9NmYxMGY3ZWE5N2Y3ODUyYV0qLwogewotICAgIGludCBmZDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpkdXAiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZkID0gX1B5X2R1cChmZCk7Ci0gICAgaWYgKGZkID09IC0xKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOworICAgIHJldHVybiBfUHlfZHVwKGZkKTsKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfZHVwMl9fZG9jX18sCi0iZHVwMihvbGRfZmQsIG5ld19mZClcblxuXAotRHVwbGljYXRlIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmR1cDIKKyAgICBmZDogaW50CisgICAgZmQyOiBpbnQKKyAgICBpbmhlcml0YWJsZTogYm9vbD1UcnVlCisKK0R1cGxpY2F0ZSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kdXAyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2R1cDJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBmZDIsIGludCBpbmhlcml0YWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05YTA5OWQ5NTg4MWE3OTIzIGlucHV0PTc2ZTk2ZjUxMWJlMDM1MmZdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZmQiLCAiZmQyIiwgImluaGVyaXRhYmxlIiwgTlVMTH07Ci0gICAgaW50IGZkLCBmZDI7Ci0gICAgaW50IGluaGVyaXRhYmxlID0gMTsKICAgICBpbnQgcmVzOwogI2lmIGRlZmluZWQoSEFWRV9EVVAzKSAmJiBcCiAgICAgIShkZWZpbmVkKEhBVkVfRkNOVExfSCkgJiYgZGVmaW5lZChGX0RVUDJGRF9DTE9FWEVDKSkKQEAgLTc4ODIsMTYgKzc4NDEsMTggQEAKICAgICBpbnQgZHVwM193b3JrcyA9IC0xOwogI2VuZGlmCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxpOmR1cDIiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKCFfUHlWZXJpZnlfZmRfZHVwMihmZCwgZmQyKSkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKKyAgICAvKiBkdXAyKCkgY2FuIGZhaWwgd2l0aCBFSU5UUiBpZiB0aGUgdGFyZ2V0IEZEIGlzIGFscmVhZHkgb3BlbiwgYmVjYXVzZSBpdAorICAgICAqIHRoZW4gaGFzIHRvIGJlIGNsb3NlZC4gU2VlIG9zX2Nsb3NlX2ltcGwoKSBmb3Igd2h5IHdlIGRvbid0IGhhbmRsZSBFSU5UUgorICAgICAqIHVwb24gY2xvc2UoKSwgYW5kIHRoZXJlZm9yZSBiZWxvdy4KKyAgICAgKi8KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXMgPSBkdXAyKGZkLCBmZDIpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CkBAIC03OTQ2LDMwICs3OTA3LDM0IEBACiAKICNlbmRpZgogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisKICNpZmRlZiBIQVZFX0xPQ0tGCi1QeURvY19TVFJWQVIocG9zaXhfbG9ja2ZfX2RvY19fLAotImxvY2tmKGZkLCBjbWQsIGxlbilcblxuXAotQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblxuXAotZmQgaXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1jbWQgc3BlY2lmaWVzIHRoZSBjb21tYW5kIHRvIHVzZSAtIG9uZSBvZiBGX0xPQ0ssIEZfVExPQ0ssIEZfVUxPQ0sgb3JcblwKLUZfVEVTVC5cblwKLWxlbiBzcGVjaWZpZXMgdGhlIHNlY3Rpb24gb2YgdGhlIGZpbGUgdG8gbG9jay4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmxvY2tmCisKKyAgICBmZDogaW50CisgICAgICAgIEFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgIGNvbW1hbmQ6IGludAorICAgICAgICBPbmUgb2YgRl9MT0NLLCBGX1RMT0NLLCBGX1VMT0NLIG9yIEZfVEVTVC4KKyAgICBsZW5ndGg6IFB5X29mZl90CisgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gbG9jaywgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uCisgICAgLworCitBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sb2NrZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19sb2NrZl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgaW50IGNvbW1hbmQsIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWZmNzc4ZjllMmZiZjFiIGlucHV0PTY1ZGE0MWQyMTA2ZTliNzldKi8KIHsKLSAgICBpbnQgZmQsIGNtZCwgcmVzOwotICAgIG9mZl90IGxlbjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6bG9ja2YiLAotICAgICAgICAgICAgJmZkLCAmY21kLCBfcGFyc2Vfb2ZmX3QsICZsZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGxvY2tmKGZkLCBjbWQsIGxlbik7CisgICAgcmVzID0gbG9ja2YoZmQsIGNvbW1hbmQsIGxlbmd0aCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXMgPCAwKQpAQCAtNzk3Nyw5NSArNzk0MiwxMDUgQEAKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MT0NLRiAqLwogCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9sc2Vla19fZG9jX18sCi0ibHNlZWsoZmQsIHBvcywgaG93KSAtPiBuZXdwb3NcblxuXAotU2V0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIGEgZmlsZSBkZXNjcmlwdG9yLlxuXAotUmV0dXJuIHRoZSBuZXcgY3Vyc29yIHBvc2l0aW9uIGluIGJ5dGVzLCBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5sc2VlayAtPiBQeV9vZmZfdAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfbHNlZWsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICBwb3NpdGlvbjogUHlfb2ZmX3QKKyAgICBob3c6IGludAorICAgIC8KKworU2V0IHRoZSBwb3NpdGlvbiBvZiBhIGZpbGUgZGVzY3JpcHRvci4gIFJldHVybiB0aGUgbmV3IHBvc2l0aW9uLgorCitSZXR1cm4gdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24gaW4gbnVtYmVyIG9mIGJ5dGVzCityZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfb2ZmX3QKK29zX2xzZWVrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBwb3NpdGlvbiwgaW50IGhvdykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NWQ0YWI5NmQ2NjQ5OThjIGlucHV0PTkwMjY1NGFkM2Y5NmE2ZDNdKi8KIHsKLSAgICBpbnQgZmQsIGhvdzsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUFlfTE9OR19MT05HIHBvcywgcmVzOwotI2Vsc2UKLSAgICBvZmZfdCBwb3MsIHJlczsKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpwb3NvYmo7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT2k6bHNlZWsiLCAmZmQsICZwb3NvYmosICZob3cpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9vZmZfdCByZXN1bHQ7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7Ci0gICAgY2FzZSAwOiBob3cgPSBTRUVLX1NFVDsgYnJlYWs7Ci0gICAgY2FzZSAxOiBob3cgPSBTRUVLX0NVUjsgYnJlYWs7Ci0gICAgY2FzZSAyOiBob3cgPSBTRUVLX0VORDsgYnJlYWs7CisgICAgICAgIGNhc2UgMDogaG93ID0gU0VFS19TRVQ7IGJyZWFrOworICAgICAgICBjYXNlIDE6IGhvdyA9IFNFRUtfQ1VSOyBicmVhazsKKyAgICAgICAgY2FzZSAyOiBob3cgPSBTRUVLX0VORDsgYnJlYWs7CiAgICAgfQogI2VuZGlmIC8qIFNFRUtfRU5EICovCiAKLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIHBvcyA9IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKLSNlbHNlCi0gICAgcG9zID0gUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKTsKLSNlbmRpZgogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgaG93KTsKKyAgICByZXN1bHQgPSBfbHNlZWtpNjQoZmQsIHBvc2l0aW9uLCBob3cpOwogI2Vsc2UKLSAgICByZXMgPSBsc2VlayhmZCwgcG9zLCBob3cpOworICAgIHJlc3VsdCA9IGxzZWVrKGZkLCBwb3NpdGlvbiwgaG93KTsKICNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAKLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmVzKTsKLSNlbHNlCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcocmVzKTsKLSNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWRfX2RvY19fLAotInJlYWQoZmQsIGJ1ZmZlcnNpemUpIC0+IGJ5dGVzXG5cblwKLVJlYWQgYSBmaWxlIGRlc2NyaXB0b3IuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5yZWFkCisgICAgZmQ6IGludAorICAgIGxlbmd0aDogUHlfc3NpemVfdAorICAgIC8KKworUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLiAgUmV0dXJucyBhIGJ5dGVzIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfcmVhZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfc3NpemVfdCBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUyNGY0NDE3ODQ1NWU4YiBpbnB1dD0xZGYyZWFhMjdjMGJmMWQzXSovCiB7Ci0gICAgaW50IGZkLCBzaXplOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6cmVhZCIsICZmZCwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA8IDApIHsKKworICAgIGlmIChsZW5ndGggPCAwKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICB9Ci0gICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHNpemUpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBjb3VudCBwYXJhbWV0ZXIgb2YgcmVhZCgpIGlzIGFuIGludCAqLworICAgIGlmIChsZW5ndGggPiBJTlRfTUFYKQorICAgICAgICBsZW5ndGggPSBJTlRfTUFYOworI2VuZGlmCisKKyAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworCisgICAgbiA9IF9QeV9yZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBsZW5ndGgpOworICAgIGlmIChuID09IC0xKSB7CiAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZChmZCwgUHlCeXRlc19BU19TVFJJTkcoYnVmZmVyKSwgc2l6ZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAobiA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KLSAgICBpZiAobiAhPSBzaXplKQorCisgICAgaWYgKG4gIT0gbGVuZ3RoKQogICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgbik7CisKICAgICByZXR1cm4gYnVmZmVyOwogfQogCkBAIC04MTI3LDEyMCArODEwMiwxMzUgQEAKIH0KICNlbmRpZgogCi0jaWZkZWYgSEFWRV9SRUFEVgotUHlEb2NfU1RSVkFSKHBvc2l4X3JlYWR2X19kb2NfXywKLSJyZWFkdihmZCwgYnVmZmVycykgLT4gYnl0ZXNyZWFkXG5cblwKLVJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBmZCBpbnRvIGEgbnVtYmVyIG9mIG11dGFibGUsIGJ5dGVzLWxpa2VcblwKLW9iamVjdHMgKFwiYnVmZmVyc1wiKS4gIHJlYWR2IHdpbGwgdHJhbnNmZXIgZGF0YSBpbnRvIGVhY2ggYnVmZmVyXG5cCi11bnRpbCBpdCBpcyBmdWxsIGFuZCB0aGVuIG1vdmUgb24gdG8gdGhlIG5leHQgYnVmZmVyIGluIHRoZSBzZXF1ZW5jZVxuXAotdG8gaG9sZCB0aGUgcmVzdCBvZiB0aGUgZGF0YS5cblxuXAotcmVhZHYgcmV0dXJucyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKHdoaWNoIG1heSBiZSBsZXNzIHRoYW5cblwKLXRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhbGwgdGhlIGJ1ZmZlcnMuIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZWFkdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisjaWZkZWYgSEFWRV9SRUFEVgorLypbY2xpbmljIGlucHV0XQorb3MucmVhZHYgLT4gUHlfc3NpemVfdAorCisgICAgZmQ6IGludAorICAgIGJ1ZmZlcnM6IG9iamVjdAorICAgIC8KKworUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGZkIGludG8gYW4gaXRlcmFibGUgb2YgYnVmZmVycy4KKworVGhlIGJ1ZmZlcnMgc2hvdWxkIGJlIG11dGFibGUgYnVmZmVycyBhY2NlcHRpbmcgYnl0ZXMuCityZWFkdiB3aWxsIHRyYW5zZmVyIGRhdGEgaW50byBlYWNoIGJ1ZmZlciB1bnRpbCBpdCBpcyBmdWxsCithbmQgdGhlbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IGJ1ZmZlciBpbiB0aGUgc2VxdWVuY2UgdG8gaG9sZAordGhlIHJlc3Qgb2YgdGhlIGRhdGEuCisKK3JlYWR2IHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkLAord2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGUgdG90YWwgY2FwYWNpdHkgb2YgYWxsIHRoZSBidWZmZXJzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlfc3NpemVfdAorb3NfcmVhZHZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5T2JqZWN0ICpidWZmZXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwZmM1NmZmMTgwMDA1OWYgaW5wdXQ9ZTY3OWViNWRiZmEwMzU3ZF0qLwogewotICAgIGludCBmZCwgY250OworICAgIGludCBjbnQ7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIFB5T2JqZWN0ICpzZXE7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAgICAgc3RydWN0IGlvdmVjICppb3Y7CiAgICAgUHlfYnVmZmVyICpidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwgJmZkLCAmc2VxKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soYnVmZmVycykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJyZWFkdigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKIAotICAgIGlmIChpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1dSSVRBQkxFKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShidWZmZXJzKTsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZHYoZmQsIGlvdiwgY250KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChpb3Zfc2V0dXAoJmlvdiwgJmJ1ZiwgYnVmZmVycywgY250LCBQeUJVRl9XUklUQUJMRSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgbiA9IHJlYWR2KGZkLCBpb3YsIGNudCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogCiAgICAgaW92X2NsZWFudXAoaW92LCBidWYsIGNudCk7Ci0gICAgaWYgKG4gPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgaWYgKCFhc3luY19lcnIpCisgICAgICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChuKTsKKyAgICByZXR1cm4gbjsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfUkVBRFYgKi8KKwogCiAjaWZkZWYgSEFWRV9QUkVBRAotUHlEb2NfU1RSVkFSKHBvc2l4X3ByZWFkX19kb2NfXywKLSJwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KSAtPiBzdHJpbmdcblxuXAotUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgYXQgYSBwb3NpdGlvbiBvZiBvZmZzZXQuIEl0IHdpbGwgcmVhZCB1cFxuXAotdG8gYnVmZmVyc2l6ZSBudW1iZXIgb2YgYnl0ZXMuIFRoZSBmaWxlIG9mZnNldCByZW1haW5zIHVuY2hhbmdlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KKyMgVE9ETyBsZW5ndGggc2hvdWxkIGJlIHNpemVfdCEgIGJ1dCBQeXRob24gZG9lc24ndCBzdXBwb3J0IHBhcnNpbmcgc2l6ZV90IHlldC4KK29zLnByZWFkCisKKyAgICBmZDogaW50CisgICAgbGVuZ3RoOiBpbnQKKyAgICBvZmZzZXQ6IFB5X29mZl90CisgICAgLworCitSZWFkIGEgbnVtYmVyIG9mIGJ5dGVzIGZyb20gYSBmaWxlIGRlc2NyaXB0b3Igc3RhcnRpbmcgYXQgYSBwYXJ0aWN1bGFyIG9mZnNldC4KKworUmVhZCBsZW5ndGggYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgZmQsIHN0YXJ0aW5nIGF0IG9mZnNldCBieXRlcyBmcm9tCit0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHJlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorb3NfcHJlYWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBsZW5ndGgsIFB5X29mZl90IG9mZnNldCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MGQxZmVkODdmNjhmYTMzIGlucHV0PTA4NDk0OGRjYmFhMzVkNGNdKi8KIHsKLSAgICBpbnQgZmQsIHNpemU7Ci0gICAgb2ZmX3Qgb2Zmc2V0OwogICAgIFB5X3NzaXplX3QgbjsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsICZmZCwgJnNpemUsIF9wYXJzZV9vZmZfdCwgJm9mZnNldCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNpemUgPCAwKSB7CisgICAgaWYgKGxlbmd0aCA8IDApIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KLSAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgc2l6ZSk7CisgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbmd0aCk7CiAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgbiA9IHByZWFkKGZkLCBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpLCBzaXplLCBvZmZzZXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBuID0gcHJlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIGxlbmd0aCwgb2Zmc2V0KTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisKICAgICBpZiAobiA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgfQotICAgIGlmIChuICE9IHNpemUpCisgICAgaWYgKG4gIT0gbGVuZ3RoKQogICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgbik7CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfUFJFQUQgKi8KIAotUHlEb2NfU1RSVkFSKHBvc2l4X3dyaXRlX19kb2NfXywKLSJ3cml0ZShmZCwgZGF0YSkgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorLypbY2xpbmljIGlucHV0XQorb3Mud3JpdGUgLT4gUHlfc3NpemVfdAorCisgICAgZmQ6IGludAorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYSBieXRlcyBvYmplY3QgdG8gYSBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeV9zc2l6ZV90Citvc193cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU4ODQ1YzkzYzllZTFkZGEgaW5wdXQ9MzIwN2UyODk2MzIzNGYzY10qLwogewotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGludCBmZDsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGxlbjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOndyaXRlIiwgJmZkLCAmcGJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQotICAgIGxlbiA9IHBidWYubGVuOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgIGxlbiA9IElOVF9NQVg7Ci0gICAgc2l6ZSA9IHdyaXRlKGZkLCBwYnVmLmJ1ZiwgKGludClsZW4pOwotI2Vsc2UKLSAgICBzaXplID0gd3JpdGUoZmQsIHBidWYuYnVmLCBsZW4pOwotI2VuZGlmCi0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CisgICAgcmV0dXJuIF9QeV93cml0ZShmZCwgZGF0YS0+YnVmLCBkYXRhLT5sZW4pOwogfQogCiAjaWZkZWYgSEFWRV9TRU5ERklMRQpAQCAtODI1MCwxMSArODI0MCwxMyBAQAogICAgICAgICAgICAgLT4gYnl0ZXN3cml0dGVuXG5cCiBDb3B5IGNvdW50IGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGluIHRvIGZpbGUgZGVzY3JpcHRvciBvdXQuIik7CiAKKy8qIEFDIDMuNTogZG9uJ3QgYm90aGVyIGNvbnZlcnRpbmcsIGhhcyBvcHRpb25hbCBncm91cCovCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfc2VuZGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewogICAgIGludCBpbiwgb3V0OwogICAgIFB5X3NzaXplX3QgcmV0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIG9mZl90IG9mZnNldDsKIAogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCkBAIC04Mjc2LDEwICs4MjY4LDEwIEBACiAKICNpZmRlZiBfX0FQUExFX18KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mTyZ8T09pOnNlbmRmaWxlIiwKLSAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZzYnl0ZXMsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmc2J5dGVzLAogI2Vsc2UKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mbnxPT2k6c2VuZGZpbGUiLAotICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsICZsZW4sCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgJmxlbiwKICNlbmRpZgogICAgICAgICAgICAgICAgICZoZWFkZXJzLCAmdHJhaWxlcnMsICZmbGFncykpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTgzMTgsMTMgKzgzMTAsMTcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgX19BUFBMRV9fCi0gICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKKyAgICAgICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCAmc2J5dGVzLCAmc2YsIGZsYWdzKTsKICNlbHNlCi0gICAgcmV0ID0gc2VuZGZpbGUoaW4sIG91dCwgb2Zmc2V0LCBsZW4sICZzZiwgJnNieXRlcywgZmxhZ3MpOworICAgICAgICByZXQgPSBzZW5kZmlsZShpbiwgb3V0LCBvZmZzZXQsIGxlbiwgJnNmLCAmc2J5dGVzLCBmbGFncyk7CiAjZW5kaWYKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJldCA8IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICBpZiAoc2YuaGVhZGVycyAhPSBOVUxMKQogICAgICAgICBpb3ZfY2xlYW51cChzZi5oZWFkZXJzLCBoYnVmLCBzZi5oZHJfY250KTsKQEAgLTgzNDMsNyArODMzOSw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKICAgICB9CiAgICAgZ290byBkb25lOwogCkBAIC04MzY0LDc2ICs4MzYwLDEwNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICNpZmRlZiBsaW51eAogICAgIGlmIChvZmZvYmogPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sIE5VTEwsIGNvdW50KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZG8geworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmV0ID0gc2VuZGZpbGUob3V0LCBpbiwgTlVMTCwgY291bnQpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJuIiwgcmV0KTsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoIV9wYXJzZV9vZmZfdChvZmZvYmosICZvZmZzZXQpKQorICAgIGlmICghUHlfb2ZmX3RfY29udmVydGVyKG9mZm9iaiwgJm9mZnNldCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmV0IDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgaWYgKHJldCA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOwogI2VuZGlmCiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NFTkRGSUxFICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9mc3RhdF9fZG9jX18sCi0iZnN0YXQoZmQpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAotRXF1aXZhbGVudCB0byBzdGF0KGZkPWZkKS4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuZnN0YXQKKworICAgIGZkIDogaW50CisKK1BlcmZvcm0gYSBzdGF0IHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IuCisKK0xpa2Ugc3RhdCgpLCBidXQgZm9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2ZzdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2ZzdGF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3MWZlOThiZjA0MmI2MjYgaW5wdXQ9MjdlMGUwZWJiZTU2MDBjOV0qLwogewotICAgIGludCBmZDsKICAgICBTVFJVQ1RfU1RBVCBzdDsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpmc3RhdCIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBGU1RBVChmZCwgJnN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IEZTVEFUKGZkLCAmc3QpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlcyAhPSAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBpZiAocmVzICE9IDApIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAjZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfaXNhdHR5X19kb2NfXywKLSJpc2F0dHkoZmQpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciAnZmQnIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yXG5cCi1jb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfaXNhdHR5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmlzYXR0eSAtPiBib29sCisgICAgZmQ6IGludAorICAgIC8KKworUmV0dXJuIFRydWUgaWYgdGhlIGZkIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLgorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yCitjb25uZWN0ZWQgdG8gdGhlIHNsYXZlIGVuZCBvZiBhIHRlcm1pbmFsLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19pc2F0dHlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWNlYzlkM2MyOWQxNmQzMyBpbnB1dD0wOGNlOTRhYTFlYWY3YjVlXSovCiB7Ci0gICAgaW50IGZkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTppc2F0dHkiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpbnQgcmV0dXJuX3ZhbHVlOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGlzYXR0eShmZCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgcmV0dXJuX3ZhbHVlID0gaXNhdHR5KGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKwogI2lmZGVmIEhBVkVfUElQRQotUHlEb2NfU1RSVkFSKHBvc2l4X3BpcGVfX2RvY19fLAotInBpcGUoKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAotQ3JlYXRlIGEgcGlwZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBpcGUKKworQ3JlYXRlIGEgcGlwZS4KKworUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOgorICAocmVhZF9mZCwgd3JpdGVfZmQpCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9waXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorb3NfcGlwZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmIwY2QzZjg2OGVjM2M0MCBpbnB1dD0wMjUzNWU4YzhmYTZjNGQ0XSovCiB7CiAgICAgaW50IGZkc1syXTsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04NTAxLDI1ICs4NTI3LDMwIEBACiB9CiAjZW5kaWYgIC8qIEhBVkVfUElQRSAqLwogCisKICNpZmRlZiBIQVZFX1BJUEUyCi1QeURvY19TVFJWQVIocG9zaXhfcGlwZTJfX2RvY19fLAotInBpcGUyKGZsYWdzKSAtPiAocmVhZF9lbmQsIHdyaXRlX2VuZClcblxuXAotQ3JlYXRlIGEgcGlwZSB3aXRoIGZsYWdzIHNldCBhdG9taWNhbGx5LlxuXAotZmxhZ3MgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IE9SaW5nIHRvZ2V0aGVyIG9uZSBvciBtb3JlIG9mIHRoZXNlIHZhbHVlczpcblwKLU9fTk9OQkxPQ0ssIE9fQ0xPRVhFQy5cblwKLSIpOworLypbY2xpbmljIGlucHV0XQorb3MucGlwZTIKKworICAgIGZsYWdzOiBpbnQKKyAgICAvCisKK0NyZWF0ZSBhIHBpcGUgd2l0aCBmbGFncyBzZXQgYXRvbWljYWxseS4KKworUmV0dXJucyBhIHR1cGxlIG9mIHR3byBmaWxlIGRlc2NyaXB0b3JzOgorICAocmVhZF9mZCwgd3JpdGVfZmQpCisKK2ZsYWdzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6CitPX05PTkJMT0NLLCBPX0NMT0VYRUMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9waXBlMihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK29zX3BpcGUyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMxNWI2MDc1ZDBjNmIyZTcgaW5wdXQ9ZjI2MWI2ZTdlNjNjNjgxN10qLwogewotICAgIGludCBmbGFnczsKICAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7CiAKLSAgICBmbGFncyA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKLSAgICBpZiAoZmxhZ3MgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXMgPSBwaXBlMihmZHMsIGZsYWdzKTsKICAgICBpZiAocmVzICE9IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtODUyNywzMDYgKzg1NTgsMzQwIEBACiB9CiAjZW5kaWYgLyogSEFWRV9QSVBFMiAqLwogCi0jaWZkZWYgSEFWRV9XUklURVYKLVB5RG9jX1NUUlZBUihwb3NpeF93cml0ZXZfX2RvY19fLAotIndyaXRldihmZCwgYnVmZmVycykgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIHRoZSBjb250ZW50cyBvZiAqYnVmZmVycyogdG8gZmlsZSBkZXNjcmlwdG9yICpmZCouICpidWZmZXJzKlxuXAotbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy5cblxuXAotd3JpdGV2IHdyaXRlcyB0aGUgY29udGVudHMgb2YgZWFjaCBvYmplY3QgdG8gdGhlIGZpbGUgZGVzY3JpcHRvclxuXAotYW5kIHJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfd3JpdGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyNpZmRlZiBIQVZFX1dSSVRFVgorLypbY2xpbmljIGlucHV0XQorb3Mud3JpdGV2IC0+IFB5X3NzaXplX3QKKyAgICBmZDogaW50CisgICAgYnVmZmVyczogb2JqZWN0CisgICAgLworCitJdGVyYXRlIG92ZXIgYnVmZmVycywgYW5kIHdyaXRlIHRoZSBjb250ZW50cyBvZiBlYWNoIHRvIGEgZmlsZSBkZXNjcmlwdG9yLgorCitSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KK2J1ZmZlcnMgbXVzdCBiZSBhIHNlcXVlbmNlIG9mIGJ5dGVzLWxpa2Ugb2JqZWN0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3dyaXRldl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlPYmplY3QgKmJ1ZmZlcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTQ4OTI1ZGJmMmQ1YzIzOCBpbnB1dD01YjhkMTdmZTQxODlkMmZlXSovCiB7Ci0gICAgaW50IGZkLCBjbnQ7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgUHlPYmplY3QgKnNlcTsKKyAgICBpbnQgY250OworICAgIFB5X3NzaXplX3QgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIHN0cnVjdCBpb3ZlYyAqaW92OwogICAgIFB5X2J1ZmZlciAqYnVmOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwgJmZkLCAmc2VxKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhidWZmZXJzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgIndyaXRldigpIGFyZyAyIG11c3QgYmUgYSBzZXF1ZW5jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKKyAgICBjbnQgPSBQeVNlcXVlbmNlX1NpemUoYnVmZmVycyk7CiAKLSAgICBpZiAoaW92X3NldHVwKCZpb3YsICZidWYsIHNlcSwgY250LCBQeUJVRl9TSU1QTEUpIDwgMCkgewotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW92X3NldHVwKCZpb3YsICZidWYsIGJ1ZmZlcnMsIGNudCwgUHlCVUZfU0lNUExFKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXN1bHQgPSB3cml0ZXYoZmQsIGlvdiwgY250KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKIAogICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBpZiAocmVzdWx0IDwgMCAmJiAhYXN5bmNfZXJyKQorICAgICAgICBwb3NpeF9lcnJvcigpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1BXUklURQotUHlEb2NfU1RSVkFSKHBvc2l4X3B3cml0ZV9fZG9jX18sCi0icHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkgLT4gYnl0ZXN3cml0dGVuXG5cblwKLVdyaXRlIHN0cmluZyB0byBhIGZpbGUgZGVzY3JpcHRvciwgZmQsIGZyb20gb2Zmc2V0LCBsZWF2aW5nIHRoZSBmaWxlXG5cCi1vZmZzZXQgdW5jaGFuZ2VkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcHdyaXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLSAgICBpbnQgZmQ7Ci0gICAgb2ZmX3Qgb2Zmc2V0OwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwgJmZkLCAmcGJ1ZiwgX3BhcnNlX29mZl90LCAmb2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgc2l6ZSA9IHB3cml0ZShmZCwgcGJ1Zi5idWYsIChzaXplX3QpcGJ1Zi5sZW4sIG9mZnNldCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfTUtGSUZPCi1QeURvY19TVFJWQVIocG9zaXhfbWtmaWZvX19kb2NfXywKLSJta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpXG5cblwKLUNyZWF0ZSBhIEZJRk8gKGEgUE9TSVggbmFtZWQgcGlwZSkuXG5cCi1cblwKLUlmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCi0gIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCi1kaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAotICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2ZpZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBtb2RlID0gMDY2NjsKLSAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7Ci0gICAgaW50IHJlc3VsdDsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtmaWZvIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJm1vZGUsCi0jaWZkZWYgSEFWRV9NS0ZJRk9BVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX01LRklGT0FUCi0gICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKLSAgICAgICAgcmVzdWx0ID0gbWtmaWZvYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgbW9kZSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IG1rZmlmbyhwYXRoLm5hcnJvdywgbW9kZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChyZXN1bHQgPCAwKSB7Ci0gICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0KLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpCi1QeURvY19TVFJWQVIocG9zaXhfbWtub2RfX2RvY19fLAotIm1rbm9kKHBhdGgsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAotQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpXG5cCi1uYW1lZCBwYXRoLiBtb2RlIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZVxuXAotdHlwZSBvZiBub2RlIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZlxuXAotU19JRlJFRywgU19JRkNIUiwgU19JRkJMSywgYW5kIFNfSUZJRk8uIEZvciBTX0lGQ0hSIGFuZCBTX0lGQkxLLFxuXAotZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmdcblwKLW9zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLlxuXAotXG5cCi1JZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAotICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAotZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKLSAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwotCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta25vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgaW50IG1vZGUgPSAwNjY2OwotICAgIGRldl90IGRldmljZSA9IDA7Ci0gICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwotICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07Ci0KLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aU8mJE8mOm1rbm9kIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJm1vZGUsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlLAotI2lmZGVmIEhBVkVfTUtOT0RBVAotICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCi0jZWxzZQotICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKLSNlbmRpZgotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSNpZmRlZiBIQVZFX01LTk9EQVQKLSAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQotICAgICAgICByZXN1bHQgPSBta25vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlc3VsdCA9IG1rbm9kKHBhdGgubmFycm93LCBtb2RlLCBkZXZpY2UpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOwotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0KLWV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0RFVklDRV9NQUNST1MKLVB5RG9jX1NUUlZBUihwb3NpeF9tYWpvcl9fZG9jX18sCi0ibWFqb3IoZGV2aWNlKSAtPiBtYWpvciBudW1iZXJcblwKLUV4dHJhY3RzIGEgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9tYWpvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgZGV2X3QgZGV2aWNlOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpbWFqb3IoZGV2aWNlKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihwb3NpeF9taW5vcl9fZG9jX18sCi0ibWlub3IoZGV2aWNlKSAtPiBtaW5vciBudW1iZXJcblwKLUV4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9taW5vcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgZGV2X3QgZGV2aWNlOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpbWlub3IoZGV2aWNlKSk7Ci19Ci0KLVB5RG9jX1NUUlZBUihwb3NpeF9tYWtlZGV2X19kb2NfXywKLSJtYWtlZGV2KG1ham9yLCBtaW5vcikgLT4gZGV2aWNlIG51bWJlclxuXAotQ29tcG9zZXMgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9tYWtlZGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgbWFqb3IsIG1pbm9yOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6bWFrZWRldiIsICZtYWpvciwgJm1pbm9yKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbURldihtYWtlZGV2KG1ham9yLCBtaW5vcikpOwotfQotI2VuZGlmIC8qIGRldmljZSBtYWNyb3MgKi8KLQotCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLVB5RG9jX1NUUlZBUihwb3NpeF9mdHJ1bmNhdGVfX2RvY19fLAotImZ0cnVuY2F0ZShmZCwgbGVuZ3RoKVxuXG5cCi1UcnVuY2F0ZSBhIGZpbGUgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZnRydW5jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgZmQ7Ci0gICAgb2ZmX3QgbGVuZ3RoOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLCAmZmQsIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVFJVTkNBVEUKLVB5RG9jX1NUUlZBUihwb3NpeF90cnVuY2F0ZV9fZG9jX18sCi0idHJ1bmNhdGUocGF0aCwgbGVuZ3RoKVxuXG5cCi1UcnVuY2F0ZSB0aGUgZmlsZSBnaXZlbiBieSBwYXRoIHRvIGxlbmd0aCBieXRlcy5cblwKLU9uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLSAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdHJ1bmNhdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIHBhdGhfdCBwYXRoOwotICAgIG9mZl90IGxlbmd0aDsKLSAgICBpbnQgcmVzOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OwotCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJ0cnVuY2F0ZSI7Ci0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSNlbmRpZgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6dHJ1bmNhdGUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnNlX29mZl90LCAmbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWZkZWYgSEFWRV9GVFJVTkNBVEUKLSAgICBpZiAocGF0aC5mZCAhPSAtMSkKLSAgICAgICAgcmVzID0gZnRydW5jYXRlKHBhdGguZmQsIGxlbmd0aCk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIHJlcyA9IHRydW5jYXRlKHBhdGgubmFycm93LCBsZW5ndGgpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJlc3VsdCA9IHBhdGhfZXJyb3IoJnBhdGgpOwotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X05vbmU7Ci0gICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKyNlbmRpZiAvKiBIQVZFX1dSSVRFViAqLworCisKKyNpZmRlZiBIQVZFX1BXUklURQorLypbY2xpbmljIGlucHV0XQorb3MucHdyaXRlIC0+IFB5X3NzaXplX3QKKworICAgIGZkOiBpbnQKKyAgICBidWZmZXI6IFB5X2J1ZmZlcgorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICAvCisKK1dyaXRlIGJ5dGVzIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHN0YXJ0aW5nIGF0IGEgcGFydGljdWxhciBvZmZzZXQuCisKK1dyaXRlIGJ1ZmZlciB0byBmZCwgc3RhcnRpbmcgYXQgb2Zmc2V0IGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZgordGhlIGZpbGUuICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlLiAgRG9lcyBub3QgY2hhbmdlIHRoZQorY3VycmVudCBmaWxlIG9mZnNldC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X3NzaXplX3QKK29zX3B3cml0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCwgUHlfYnVmZmVyICpidWZmZXIsCisgICAgICAgICAgICAgICBQeV9vZmZfdCBvZmZzZXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTNhYWJkYjQwZTE3ZDMyNSBpbnB1dD0xOTkwM2YxYjNkZDI2Mzc3XSovCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBzaXplID0gcHdyaXRlKGZkLCBidWZmZXItPmJ1ZiwgKHNpemVfdClidWZmZXItPmxlbiwgb2Zmc2V0KTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChzaXplIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisKKyAgICBpZiAoc2l6ZSA8IDAgJiYgIWFzeW5jX2VycikKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gc2l6ZTsKK30KKyNlbmRpZiAvKiBIQVZFX1BXUklURSAqLworCisKKyNpZmRlZiBIQVZFX01LRklGTworLypbY2xpbmljIGlucHV0XQorb3MubWtmaWZvCisKKyAgICBwYXRoOiBwYXRoX3QKKyAgICBtb2RlOiBpbnQ9MG82NjYKKyAgICAqCisgICAgZGlyX2ZkOiBkaXJfZmQocmVxdWlyZXM9J21rZmlmb2F0Jyk9Tm9uZQorCitDcmVhdGUgYSAiZmlmbyIgKGEgUE9TSVggbmFtZWQgcGlwZSkuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta2ZpZm9faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmNWY1ZTcyYzYzMDA0OWEgaW5wdXQ9NzMwMzJlOThhMzZlMGUxOV0qLworeworICAgIGludCByZXN1bHQ7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICByZXN1bHQgPSBta2ZpZm9hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgbW9kZSk7CisgICAgICAgIGVsc2UKICNlbmRpZgorICAgICAgICAgICAgcmVzdWx0ID0gbWtmaWZvKHBhdGgtPm5hcnJvdywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX01LRklGTyAqLworCisKKyNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQorLypbY2xpbmljIGlucHV0XQorb3MubWtub2QKKworICAgIHBhdGg6IHBhdGhfdAorICAgIG1vZGU6IGludD0wbzYwMAorICAgIGRldmljZTogZGV2X3Q9MAorICAgICoKKyAgICBkaXJfZmQ6IGRpcl9mZChyZXF1aXJlcz0nbWtub2RhdCcpPU5vbmUKKworQ3JlYXRlIGEgbm9kZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCisKK0NyZWF0ZSBhIG5vZGUgaW4gdGhlIGZpbGUgc3lzdGVtIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpCithdCBwYXRoLiAgbW9kZSBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGUKK3R5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2YKK1NfSUZSRUcsIFNfSUZDSFIsIFNfSUZCTEssIGFuZCBTX0lGSUZPLiAgSWYgU19JRkNIUiBvciBTX0lGQkxLIGlzIHNldCBvbiBtb2RlLAorZGV2aWNlIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKK29zLm1ha2VkZXYoKSkuICBPdGhlcndpc2UgZGV2aWNlIGlzIGlnbm9yZWQuCisKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLgorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19ta25vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKKyAgICAgICAgICAgICAgaW50IGRpcl9mZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTUxYThhOWY3NTRkMjcyIGlucHV0PWVlNDQ1MzE1NTFhNGQ4M2JdKi8KK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9NS05PREFUCisgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICByZXN1bHQgPSBta25vZGF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCBtb2RlLCBkZXZpY2UpOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHJlc3VsdCA9IG1rbm9kKHBhdGgtPm5hcnJvdywgbW9kZSwgZGV2aWNlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NS05PRCkgJiYgZGVmaW5lZChIQVZFX01BS0VERVYpICovCisKKworI2lmZGVmIEhBVkVfREVWSUNFX01BQ1JPUworLypbY2xpbmljIGlucHV0XQorb3MubWFqb3IgLT4gdW5zaWduZWRfaW50CisKKyAgICBkZXZpY2U6IGRldl90CisgICAgLworCitFeHRyYWN0cyBhIGRldmljZSBtYWpvciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgdW5zaWduZWQgaW50Citvc19tYWpvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGRldl90IGRldmljZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTU1NjkzYWI0OWJhYzM0IGlucHV0PTFlMTZhNGQzMGM0ZDQ0NjJdKi8KK3sKKyAgICByZXR1cm4gbWFqb3IoZGV2aWNlKTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitvcy5taW5vciAtPiB1bnNpZ25lZF9pbnQKKworICAgIGRldmljZTogZGV2X3QKKyAgICAvCisKK0V4dHJhY3RzIGEgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK29zX21pbm9yX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgZGV2X3QgZGV2aWNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjcyMTllYmYyNzRlMjcgaW5wdXQ9MDg0MmM2ZDIzZjI0YzY1ZV0qLworeworICAgIHJldHVybiBtaW5vcihkZXZpY2UpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLm1ha2VkZXYgLT4gZGV2X3QKKworICAgIG1ham9yOiBpbnQKKyAgICBtaW5vcjogaW50CisgICAgLworCitDb21wb3NlcyBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGRldl90Citvc19tYWtlZGV2X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG1ham9yLCBpbnQgbWlub3IpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2NiNjI2NDM1MjQzNzY2MCBpbnB1dD00YjlmZDhmYzczY2JlNDhmXSovCit7CisgICAgcmV0dXJuIG1ha2VkZXYobWFqb3IsIG1pbm9yKTsKK30KKyNlbmRpZiAvKiBIQVZFX0RFVklDRV9NQUNST1MgKi8KKworCisjaWYgZGVmaW5lZCBIQVZFX0ZUUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZ0cnVuY2F0ZQorCisgICAgZmQ6IGludAorICAgIGxlbmd0aDogUHlfb2ZmX3QKKyAgICAvCisKK1RydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IGZpbGUgZGVzY3JpcHRvciwgdG8gYSBzcGVjaWZpYyBsZW5ndGguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mdHJ1bmNhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjY2ZjQwMWQ3NmJmODM0IGlucHV0PTYzYjQzNjQxZTUyODE4ZjJdKi8KK3sKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICByZXN1bHQgPSBfY2hzaXplX3MoZmQsIGxlbmd0aCk7CisjZWxzZQorICAgICAgICByZXN1bHQgPSBmdHJ1bmNhdGUoZmQsIGxlbmd0aCk7CisjZW5kaWYKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gMCAmJiBlcnJubyA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgIHJldHVybiAoIWFzeW5jX2VycikgPyBwb3NpeF9lcnJvcigpIDogTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX0ZUUlVOQ0FURSB8fCBNU19XSU5ET1dTICovCisKKworI2lmIGRlZmluZWQgSEFWRV9UUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnRydW5jYXRlCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPSdQQVRIX0hBVkVfRlRSVU5DQVRFJykKKyAgICBsZW5ndGg6IFB5X29mZl90CisKK1RydW5jYXRlIGEgZmlsZSwgc3BlY2lmaWVkIGJ5IHBhdGgsIHRvIGEgc3BlY2lmaWMgbGVuZ3RoLgorCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3RydW5jYXRlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjYwYTllMDgzNzBlOWUyZSBpbnB1dD03NzIyOWNmMGI1MGE5Yjc3XSovCit7CisgICAgaW50IHJlc3VsdDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaW50IGZkOworI2VuZGlmCisKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIHJldHVybiBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIHBhdGgtPmZkLCBsZW5ndGgpOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgtPndpZGUpCisgICAgICAgIGZkID0gX3dvcGVuKHBhdGgtPndpZGUsIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZWxzZQorICAgICAgICBmZCA9IF9vcGVuKHBhdGgtPm5hcnJvdywgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKKyAgICBpZiAoZmQgPCAwKQorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gX2Noc2l6ZV9zKGZkLCBsZW5ndGgpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgZXJybm8gPSByZXN1bHQ7CisgICAgfQorI2Vsc2UKKyAgICByZXN1bHQgPSB0cnVuY2F0ZShwYXRoLT5uYXJyb3csIGxlbmd0aCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogSEFWRV9UUlVOQ0FURSB8fCBNU19XSU5ET1dTICovCisKIAogLyogSXNzdWUgIzIyMzk2OiBPbiAzMi1iaXQgQUlYIHBsYXRmb3JtLCB0aGUgcHJvdG90eXBlcyBvZiBvcy5wb3NpeF9mYWR2aXNlKCkKICAgIGFuZCBvcy5wb3NpeF9mYWxsb2NhdGUoKSBpbiBzeXN0ZW0gaGVhZGVycyBhcmUgd3JvbmcgaWYgX0xBUkdFX0ZJTEVTIGlzCkBAIC04ODM2LDE4NiArODkwMSwyMTEgQEAKICMgIGRlZmluZSBQT1NJWF9GQURWSVNFX0FJWF9CVUcKICNlbmRpZgogCisKICNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpCi1QeURvY19TVFJWQVIocG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfXywKLSJwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKVxuXG5cCi1FbnN1cmVzIHRoYXQgZW5vdWdoIGRpc2sgc3BhY2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgZmlsZSBzcGVjaWZpZWQgYnkgZmRcblwKLXN0YXJ0aW5nIGZyb20gb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5wb3NpeF9mYWxsb2NhdGUKKworICAgIGZkOiBpbnQKKyAgICBvZmZzZXQ6IFB5X29mZl90CisgICAgbGVuZ3RoOiBQeV9vZmZfdAorICAgIC8KKworRW5zdXJlIGEgZmlsZSBoYXMgYWxsb2NhdGVkIGF0IGxlYXN0IGEgcGFydGljdWxhciBudW1iZXIgb2YgYnl0ZXMgb24gZGlzay4KKworRW5zdXJlIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIGVuY29tcGFzc2VzIGEgcmFuZ2Ugb2YgYnl0ZXMKK3N0YXJ0aW5nIGF0IG9mZnNldCBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbmd0aCBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIFB5X29mZl90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X29mZl90IGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjZmODdhOGM3NTFlMWI0IGlucHV0PWQ3YTJlZjBhYjJjYTUyZmJdKi8KIHsKLSAgICBvZmZfdCBsZW4sIG9mZnNldDsKLSAgICBpbnQgcmVzLCBmZDsKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAotICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKSB7Ci0gICAgICAgIGVycm5vID0gcmVzOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlc3VsdCA9IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QT1NJWF9GQUxMT0NBVEUpICYmICFQT1NJWF9GQURWSVNFX0FJWF9CVUcgKi8KKwogCiAjaWYgZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpICYmICFkZWZpbmVkKFBPU0lYX0ZBRFZJU0VfQUlYX0JVRykKLVB5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfXywKLSJwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIGxlbiwgYWR2aWNlKVxuXG5cCi1Bbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiB0aHVzIGFsbG93aW5nXG5cCi10aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy5cblwKLVRoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBzdGFydGluZyBhdFxuXAotb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuXG5cCi1hZHZpY2UgaXMgb25lIG9mIFBPU0lYX0ZBRFZfTk9STUFMLCBQT1NJWF9GQURWX1NFUVVFTlRJQUwsXG5cCi1QT1NJWF9GQURWX1JBTkRPTSwgUE9TSVhfRkFEVl9OT1JFVVNFLCBQT1NJWF9GQURWX1dJTExORUVEIG9yXG5cCi1QT1NJWF9GQURWX0RPTlRORUVELiIpOworLypbY2xpbmljIGlucHV0XQorb3MucG9zaXhfZmFkdmlzZQorCisgICAgZmQ6IGludAorICAgIG9mZnNldDogUHlfb2ZmX3QKKyAgICBsZW5ndGg6IFB5X29mZl90CisgICAgYWR2aWNlOiBpbnQKKyAgICAvCisKK0Fubm91bmNlIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4uCisKK0Fubm91bmNlIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhIHNwZWNpZmljIHBhdHRlcm4sIHRodXMgYWxsb3dpbmcKK3RoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLgorVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkIHN0YXJ0aW5nIGF0CitvZmZzZXQgYW5kIGNvbnRpbnVpbmcgZm9yIGxlbmd0aCBieXRlcy4KK2FkdmljZSBpcyBvbmUgb2YgUE9TSVhfRkFEVl9OT1JNQUwsIFBPU0lYX0ZBRFZfU0VRVUVOVElBTCwKK1BPU0lYX0ZBRFZfUkFORE9NLCBQT1NJWF9GQURWX05PUkVVU0UsIFBPU0lYX0ZBRFZfV0lMTE5FRUQsIG9yCitQT1NJWF9GQURWX0RPTlRORUVELgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcG9zaXhfZmFkdmlzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wb3NpeF9mYWR2aXNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBQeV9vZmZfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgUHlfb2ZmX3QgbGVuZ3RoLCBpbnQgYWR2aWNlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1N2NlNmE2NzE4OWUxMGQgaW5wdXQ9MGZiZTU1NGVkYzJmMDRiNV0qLwogewotICAgIG9mZl90IGxlbiwgb2Zmc2V0OwotICAgIGludCByZXMsIGZkLCBhZHZpY2U7CisgICAgaW50IHJlc3VsdDsKKyAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyZpOnBvc2l4X2ZhZHZpc2UiLAotICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbiwgJmFkdmljZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKSB7Ci0gICAgICAgIGVycm5vID0gcmVzOwotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlc3VsdCA9IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSAwICYmIGVycm5vID09IEVJTlRSICYmCisgICAgICAgICAgICAgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworICAgIGlmIChyZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IHBvc2l4X2Vycm9yKCkgOiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9QT1NJWF9GQURWSVNFICYmICFQT1NJWF9GQURWSVNFX0FJWF9CVUcgKi8KIAogI2lmZGVmIEhBVkVfUFVURU5WCi1QeURvY19TVFJWQVIocG9zaXhfcHV0ZW52X19kb2NfXywKLSJwdXRlbnYoa2V5LCB2YWx1ZSlcblxuXAotQ2hhbmdlIG9yIGFkZCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4iKTsKIAogLyogU2F2ZSBwdXRlbnYoKSBwYXJhbWV0ZXJzIGFzIHZhbHVlcyBoZXJlLCBzbyB3ZSBjYW4gY29sbGVjdCB0aGVtIHdoZW4gdGhleQogICogZ2V0IHJlLXNldCB3aXRoIGFub3RoZXIgY2FsbCBmb3IgdGhlIHNhbWUga2V5LiAqLwogc3RhdGljIFB5T2JqZWN0ICpwb3NpeF9wdXRlbnZfZ2FyYmFnZTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3B1dGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzdGF0aWMgdm9pZAorcG9zaXhfcHV0ZW52X2dhcmJhZ2Vfc2V0aXRlbShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpuZXdzdHIgPSBOVUxMOworICAgIC8qIEluc3RhbGwgdGhlIGZpcnN0IGFyZyBhbmQgbmV3c3RyIGluIHBvc2l4X3B1dGVudl9nYXJiYWdlOworICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bworICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQorICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCisgICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBuYW1lLCB2YWx1ZSkpCisgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKK30KKworCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFB5T2JqZWN0ICpvczEsICpvczI7Ci0gICAgd2NoYXJfdCAqbmV3ZW52OworLypbY2xpbmljIGlucHV0XQorb3MucHV0ZW52CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlVVOnB1dGVudiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvczEsICZvczIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBuYW1lOiB1bmljb2RlCisgICAgdmFsdWU6IHVuaWNvZGUKKyAgICAvCiAKLSAgICBuZXdzdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVU9JVUiLCBvczEsIG9zMik7Ci0gICAgaWYgKG5ld3N0ciA9PSBOVUxMKSB7CitDaGFuZ2Ugb3IgYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfcHV0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMjQzOGNmOTVlNWEwYzFjIGlucHV0PWJhNTg2NTgxYzJlNjEwNWZdKi8KK3sKKyAgICB3Y2hhcl90ICplbnY7CisKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoX01BWF9FTlYgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuZXdzdHIpKSB7CisgICAgaWYgKF9NQVhfRU5WIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAidGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGxvbmdlciB0aGFuICV1IGNoYXJhY3RlcnMiLAogICAgICAgICAgICAgICAgICAgICAgX01BWF9FTlYpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIG5ld2VudiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmV3c3RyKTsKLSAgICBpZiAobmV3ZW52ID09IE5VTEwpCisgICAgZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZSh1bmljb2RlKTsKKyAgICBpZiAoZW52ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKF93cHV0ZW52KG5ld2VudikpIHsKKyAgICBpZiAoX3dwdXRlbnYoZW52KSkgewogICAgICAgICBwb3NpeF9lcnJvcigpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSNlbHNlCi0gICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKLSAgICBjaGFyICpzMSwgKnMyOwotICAgIGNoYXIgKm5ld2VudjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiTyZPJjpwdXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvczEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHMxID0gUHlCeXRlc19Bc1N0cmluZyhvczEpOwotICAgIHMyID0gUHlCeXRlc19Bc1N0cmluZyhvczIpOwotCi0gICAgbmV3c3RyID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIHMxLCBzMik7Ci0gICAgaWYgKG5ld3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgbmV3ZW52ID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyKTsKLSAgICBpZiAocHV0ZW52KG5ld2VudikpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8qIEluc3RhbGwgdGhlIGZpcnN0IGFyZyBhbmQgbmV3c3RyIGluIHBvc2l4X3B1dGVudl9nYXJiYWdlOwotICAgICAqIHRoaXMgd2lsbCBjYXVzZSBwcmV2aW91cyB2YWx1ZSB0byBiZSBjb2xsZWN0ZWQuICBUaGlzIGhhcyB0bwotICAgICAqIGhhcHBlbiBhZnRlciB0aGUgcmVhbCBwdXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlIG9sZCB2YWx1ZQotICAgICAqIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uICovCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEsIG5ld3N0cikpIHsKLSAgICAgICAgLyogcmVhbGx5IG5vdCBtdWNoIHdlIGNhbiBkbzsganVzdCBsZWFrICovCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYobmV3c3RyKTsKLSAgICB9Ci0KLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIFB5X0RFQ1JFRihvczEpOwotICAgIFB5X0RFQ1JFRihvczIpOwotI2VuZGlmCisgICAgcG9zaXhfcHV0ZW52X2dhcmJhZ2Vfc2V0aXRlbShuYW1lLCB1bmljb2RlKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6Ci0jaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBQeV9ERUNSRUYob3MxKTsKLSAgICBQeV9ERUNSRUYob3MyKTsKLSNlbmRpZgotICAgIFB5X1hERUNSRUYobmV3c3RyKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9Ci0jZW5kaWYgLyogcHV0ZW52ICovCisjZWxzZSAvKiBNU19XSU5ET1dTICovCisvKltjbGluaWMgaW5wdXRdCitvcy5wdXRlbnYKIAotI2lmZGVmIEhBVkVfVU5TRVRFTlYKLVB5RG9jX1NUUlZBUihwb3NpeF91bnNldGVudl9fZG9jX18sCi0idW5zZXRlbnYoa2V5KVxuXG5cCi1EZWxldGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuIik7CisgICAgbmFtZTogRlNDb252ZXJ0ZXIKKyAgICB2YWx1ZTogRlNDb252ZXJ0ZXIKKyAgICAvCisKK0NoYW5nZSBvciBhZGQgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91bnNldGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19wdXRlbnZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEyNDM4Y2Y5NWU1YTBjMWMgaW5wdXQ9YTk3YmM2MTUyZjY4OGQzMV0qLwogewotICAgIFB5T2JqZWN0ICpuYW1lOworICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CisgICAgY2hhciAqZW52OworICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKKyAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tRm9ybWF0KCIlcz0lcyIsIG5hbWVfc3RyaW5nLCB2YWx1ZV9zdHJpbmcpOworICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGVudiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKyAgICBpZiAocHV0ZW52KGVudikpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorCisgICAgcG9zaXhfcHV0ZW52X2dhcmJhZ2Vfc2V0aXRlbShuYW1lLCBieXRlcyk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIEhBVkVfUFVURU5WICovCisKKworI2lmZGVmIEhBVkVfVU5TRVRFTlYKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVuc2V0ZW52CisgICAgbmFtZTogRlNDb252ZXJ0ZXIKKyAgICAvCisKK0RlbGV0ZSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3Vuc2V0ZW52X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjU5OTRiNTcwMTZhMmRjOSBpbnB1dD0yYmI1Mjg4YTU5OWM3MTA3XSovCit7CiAjaWZuZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCiAgICAgaW50IGVycjsKICNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjp1bnNldGVudiIsCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAjaWZkZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKICAgICB1bnNldGVudihQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSk7CiAjZWxzZQogICAgIGVyciA9IHVuc2V0ZW52KFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWUpKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBpZiAoZXJyKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICB9CiAjZW5kaWYKIAogICAgIC8qIFJlbW92ZSB0aGUga2V5IGZyb20gcG9zaXhfcHV0ZW52X2dhcmJhZ2U7CkBAIC05MDI3LDIzICs5MTE3LDI1IEBACiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KLSAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYgLyogdW5zZXRlbnYgKi8KKyNlbmRpZiAvKiBIQVZFX1VOU0VURU5WICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zdHJlcnJvcl9fZG9jX18sCi0ic3RyZXJyb3IoY29kZSkgLT4gc3RyaW5nXG5cblwKLVRyYW5zbGF0ZSBhbiBlcnJvciBjb2RlIHRvIGEgbWVzc2FnZSBzdHJpbmcuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0cmVycm9yCisKKyAgICBjb2RlOiBpbnQKKyAgICAvCisKK1RyYW5zbGF0ZSBhbiBlcnJvciBjb2RlIHRvIGEgbWVzc2FnZSBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdHJlcnJvcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19zdHJlcnJvcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyODBjNmFmNTFlNWM5ZmUgaW5wdXQ9NzVhODY3M2Q5NzkxNWE5MV0qLwogewotICAgIGludCBjb2RlOwotICAgIGNoYXIgKm1lc3NhZ2U7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnN0cmVycm9yIiwgJmNvZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBtZXNzYWdlID0gc3RyZXJyb3IoY29kZSk7CisgICAgY2hhciAqbWVzc2FnZSA9IHN0cmVycm9yKGNvZGUpOwogICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyZXJyb3IoKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTkwNTQsMTU1ICs5MTQ2LDE2OCBAQAogCiAKICNpZmRlZiBIQVZFX1NZU19XQUlUX0gKLQogI2lmZGVmIFdDT1JFRFVNUAotUHlEb2NfU1RSVkFSKHBvc2l4X1dDT1JFRFVNUF9fZG9jX18sCi0iV0NPUkVEVU1QKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgd2FzIGR1bXBlZCB0byBhIGNvcmUgZmlsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldDT1JFRFVNUCAtPiBib29sCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XQ09SRURVTVAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBkdW1wZWQgdG8gYSBjb3JlIGZpbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dDT1JFRFVNUF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTM0ZjcwYmJlNjNmYmY0MSBpbnB1dD04YjA1ZTdhYjM4NTI4ZDA0XSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0NPUkVEVU1QIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdDT1JFRFVNUChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0NPUkVEVU1QKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXQ09SRURVTVAgKi8KIAorCiAjaWZkZWYgV0lGQ09OVElOVUVECi1QeURvY19TVFJWQVIocG9zaXhfV0lGQ09OVElOVUVEX19kb2NfXywKLSJXSUZDT05USU5VRUQoc3RhdHVzKSAtPiBib29sXG5cblwKLVJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyAnc3RhdHVzJyB3YXMgY29udGludWVkIGZyb20gYVxuXAotam9iIGNvbnRyb2wgc3RvcC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldJRkNPTlRJTlVFRCAtPiBib29sCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XSUZDT05USU5VRUQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiBUcnVlIGlmIGEgcGFydGljdWxhciBwcm9jZXNzIHdhcyBjb250aW51ZWQgZnJvbSBhIGpvYiBjb250cm9sIHN0b3AuCisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIGNvbnRpbnVlZCBmcm9tIGEKK2pvYiBjb250cm9sIHN0b3AuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRkNPTlRJTlVFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWNkZDI2NTQzZWJiNmRjZCBpbnB1dD1lNzc3ZTdkMzhlYjI1YmQ5XSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0NPTlRJTlVFRCIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhXSUZDT05USU5VRUQoc3RhdHVzKSk7CisgICAgV0FJVF9UWVBFIHdhaXRfc3RhdHVzOworICAgIFdBSVRfU1RBVFVTX0lOVCh3YWl0X3N0YXR1cykgPSBzdGF0dXM7CisgICAgcmV0dXJuIFdJRkNPTlRJTlVFRCh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV0lGQ09OVElOVUVEICovCiAKKwogI2lmZGVmIFdJRlNUT1BQRUQKLVB5RG9jX1NUUlZBUihwb3NpeF9XSUZTVE9QUEVEX19kb2NfXywKLSJXSUZTVE9QUEVEKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgd2FzIHN0b3BwZWQuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5XSUZTVE9QUEVEIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dJRlNUT1BQRUQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHN0b3BwZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRlNUT1BQRURfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczYmYzNWU0NDk5NGE3MjQgaW5wdXQ9MDQzY2I3ZjEyODllZjkwNF0qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldJRlNUT1BQRUQiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoV0lGU1RPUFBFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGU1RPUFBFRCh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV0lGU1RPUFBFRCAqLwogCisKICNpZmRlZiBXSUZTSUdOQUxFRAotUHlEb2NfU1RSVkFSKHBvc2l4X1dJRlNJR05BTEVEX19kb2NfXywKLSJXSUZTSUdOQUxFRChzdGF0dXMpIC0+IGJvb2xcblxuXAotUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nICdzdGF0dXMnIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0lGU0lHTkFMRUQgLT4gYm9vbAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV0lGU0lHTkFMRUQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRlNJR05BTEVEX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNjk3OTc1NzcxODcyNDIwIGlucHV0PWQ1NWJhN2NjOWNlNWRjNDNdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXSUZTSUdOQUxFRCIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhXSUZTSUdOQUxFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGU0lHTkFMRUQod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdJRlNJR05BTEVEICovCiAKKwogI2lmZGVmIFdJRkVYSVRFRAotUHlEb2NfU1RSVkFSKHBvc2l4X1dJRkVYSVRFRF9fZG9jX18sCi0iV0lGRVhJVEVEKHN0YXR1cykgLT4gYm9vbFxuXG5cCi1SZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgJ3N0YXR1cycgZXhpdGVkIHVzaW5nIHRoZSBleGl0KClcblwKLXN5c3RlbSBjYWxsLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0lGRVhJVEVEIC0+IGJvb2wKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X1dJRkVYSVRFRChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyBleGl0ZWQgdmlhIHRoZSBleGl0KCkgc3lzdGVtIGNhbGwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dJRkVYSVRFRF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2E4ZjhjNjFmMGI4NTMyZSBpbnB1dD1kNjM3NzVhNjc5MTU4NmMwXSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0lGRVhJVEVEIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFdJRkVYSVRFRChzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV0lGRVhJVEVEKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXSUZFWElURUQgKi8KIAorCiAjaWZkZWYgV0VYSVRTVEFUVVMKLVB5RG9jX1NUUlZBUihwb3NpeF9XRVhJVFNUQVRVU19fZG9jX18sCi0iV0VYSVRTVEFUVVMoc3RhdHVzKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tICdzdGF0dXMnLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV0VYSVRTVEFUVVMgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XRVhJVFNUQVRVUyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gc3RhdHVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50Citvc19XRVhJVFNUQVRVU19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBzdGF0dXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWE1NGRhMjNkOWUwZjZhZiBpbnB1dD1lMWZiNDk0NGUzNzc1ODViXSovCiB7Ci0gICAgV0FJVF9UWVBFIHN0YXR1czsKLSAgICBXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6V0VYSVRTVEFUVVMiLCAmV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgV0VYSVRTVEFUVVMoc3RhdHVzKSk7CisgICAgV0FJVF9UWVBFIHdhaXRfc3RhdHVzOworICAgIFdBSVRfU1RBVFVTX0lOVCh3YWl0X3N0YXR1cykgPSBzdGF0dXM7CisgICAgcmV0dXJuIFdFWElUU1RBVFVTKHdhaXRfc3RhdHVzKTsKIH0KICNlbmRpZiAvKiBXRVhJVFNUQVRVUyAqLwogCisKICNpZmRlZiBXVEVSTVNJRwotUHlEb2NfU1RSVkFSKHBvc2l4X1dURVJNU0lHX19kb2NfXywKLSJXVEVSTVNJRyhzdGF0dXMpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlICdzdGF0dXMnXG5cCi12YWx1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLldURVJNU0lHIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfV1RFUk1TSUcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHN0YXR1czogaW50CisKK1JldHVybiB0aGUgc2lnbmFsIHRoYXQgdGVybWluYXRlZCB0aGUgcHJvY2VzcyB0aGF0IHByb3ZpZGVkIHRoZSBzdGF0dXMgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK29zX1dURVJNU0lHX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHN0YXR1cykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDI1MzY3MDI2Y2I4NTJjIGlucHV0PTcyN2ZkN2Y4NGVjM2YyNDNdKi8KIHsKLSAgICBXQUlUX1RZUEUgc3RhdHVzOwotICAgIFdBSVRfU1RBVFVTX0lOVChzdGF0dXMpID0gMDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpXVEVSTVNJRyIsICZXQUlUX1NUQVRVU19JTlQoc3RhdHVzKSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBXVEVSTVNJRyhzdGF0dXMpKTsKKyAgICBXQUlUX1RZUEUgd2FpdF9zdGF0dXM7CisgICAgV0FJVF9TVEFUVVNfSU5UKHdhaXRfc3RhdHVzKSA9IHN0YXR1czsKKyAgICByZXR1cm4gV1RFUk1TSUcod2FpdF9zdGF0dXMpOwogfQogI2VuZGlmIC8qIFdURVJNU0lHICovCiAKKwogI2lmZGVmIFdTVE9QU0lHCi1QeURvY19TVFJWQVIocG9zaXhfV1NUT1BTSUdfX2RvY19fLAotIldTVE9QU0lHKHN0YXR1cykgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZFxuXAotdGhlICdzdGF0dXMnIHZhbHVlLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuV1NUT1BTSUcgLT4gaW50CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9XU1RPUFNJRyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgc3RhdHVzOiBpbnQKKworUmV0dXJuIHRoZSBzaWduYWwgdGhhdCBzdG9wcGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfV1NUT1BTSUdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc3RhdHVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0ZWI5YzEzYjAwMWFkYjQgaW5wdXQ9NDZlYmYxZDFiMjkzYzVjMV0qLwogewotICAgIFdBSVRfVFlQRSBzdGF0dXM7Ci0gICAgV0FJVF9TVEFUVVNfSU5UKHN0YXR1cykgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOldTVE9QU0lHIiwgJldBSVRfU1RBVFVTX0lOVChzdGF0dXMpKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIFdTVE9QU0lHKHN0YXR1cykpOworICAgIFdBSVRfVFlQRSB3YWl0X3N0YXR1czsKKyAgICBXQUlUX1NUQVRVU19JTlQod2FpdF9zdGF0dXMpID0gc3RhdHVzOworICAgIHJldHVybiBXU1RPUFNJRyh3YWl0X3N0YXR1cyk7CiB9CiAjZW5kaWYgLyogV1NUT1BTSUcgKi8KLQogI2VuZGlmIC8qIEhBVkVfU1lTX1dBSVRfSCAqLwogCiAKQEAgLTkyNTcsMTA0ICs5MzYyLDEwMSBAQAogICAgIHJldHVybiB2OwogfQogCi1QeURvY19TVFJWQVIocG9zaXhfZnN0YXR2ZnNfX2RvY19fLAotImZzdGF0dmZzKGZkKSAtPiBzdGF0dmZzIHJlc3VsdFxuXG5cCi1QZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC5cblwKLUVxdWl2YWxlbnQgdG8gc3RhdHZmcyhmZCkuIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzdGF0dmZzCisgICAgZmQ6IGludAorICAgIC8KKworUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuCisKK0VxdWl2YWxlbnQgdG8gc3RhdHZmcyhmZCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9mc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19mc3RhdHZmc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ODRhOTRhNzU0NDk3YWMwIGlucHV0PWQ4MTIyMjQzYWM1MDk3NWVdKi8KIHsKLSAgICBpbnQgZmQsIHJlczsKKyAgICBpbnQgcmVzdWx0OworICAgIGludCBhc3luY19lcnIgPSAwOwogICAgIHN0cnVjdCBzdGF0dmZzIHN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmZzdGF0dmZzIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGZzdGF0dmZzKGZkLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMoZmQsICZzdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gKCFhc3luY19lcnIpID8gcG9zaXhfZXJyb3IoKSA6IE5VTEw7CiAKICAgICByZXR1cm4gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CiB9Ci0jZW5kaWYgLyogSEFWRV9GU1RBVFZGUyAmJiBIQVZFX1NZU19TVEFUVkZTX0ggKi8KKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRlNUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKSAqLwogCiAKICNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpCiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXR2ZnMKIAotUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXR2ZnNfX2RvY19fLAotInN0YXR2ZnMocGF0aClcblxuXAotUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GU1RBVFZGUycpCisKK1BlcmZvcm0gYSBzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLgorCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLgorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N0YXR2ZnNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWNlZDA3YTJjZjkzMWY0MSBpbnB1dD0zZjVjMzU3OTFjNjY5YmQ5XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKLSAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgcmVzdWx0OwotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHN0cnVjdCBzdGF0dmZzIHN0OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJzdGF0dmZzIjsKLSNpZmRlZiBIQVZFX0ZTVEFUVkZTCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAotICAgICAgICApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0ZTVEFUVkZTCi0gICAgaWYgKHBhdGguZmQgIT0gLTEpIHsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpIHsKICNpZmRlZiBfX0FQUExFX18KICAgICAgICAgLyogaGFuZGxlIHdlYWstbGlua2luZyBvbiBNYWMgT1MgWCAxMC4zICovCiAgICAgICAgIGlmIChmc3RhdHZmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBmZF9zcGVjaWZpZWQoInN0YXR2ZnMiLCBwYXRoLmZkKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGZkX3NwZWNpZmllZCgic3RhdHZmcyIsIHBhdGgtPmZkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMocGF0aC5mZCwgJnN0KTsKKyAgICAgICAgcmVzdWx0ID0gZnN0YXR2ZnMocGF0aC0+ZmQsICZzdCk7CiAgICAgfQogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSBzdGF0dmZzKHBhdGgubmFycm93LCAmc3QpOworICAgICAgICByZXN1bHQgPSBzdGF0dmZzKHBhdGgtPm5hcnJvdywgJnN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKLQotZXhpdDoKLSAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgcmV0dXJuIF9weXN0YXR2ZnNfZnJvbXN0cnVjdHN0YXR2ZnMoc3QpOwogfQotI2VuZGlmIC8qIEhBVkVfU1RBVFZGUyAqLworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkgKi8KKwogCiAjaWZkZWYgTVNfV0lORE9XUwotUHlEb2NfU1RSVkFSKHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19fLAotIl9nZXRkaXNrdXNhZ2UocGF0aCkgLT4gKHRvdGFsLCBmcmVlKVxuXG5cCi1SZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5fZ2V0ZGlza3VzYWdlCisKKyAgICBwYXRoOiBQeV9VTklDT0RFCisKK1JldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSAodG90YWwsIGZyZWUpIHR1cGxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19fZ2V0ZGlza3VzYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqcGF0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MGE5Y2YzMzQ0OWRiMWRkIGlucHV0PTY0NTgxMzNhZWQ4OTNjNzhdKi8KIHsKICAgICBCT09MIHJldHZhbDsKICAgICBVTEFSR0VfSU5URUdFUiBfLCB0b3RhbCwgZnJlZTsKLSAgICBjb25zdCB3Y2hhcl90ICpwYXRoOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSIsICZwYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmV0dmFsID0gR2V0RGlza0ZyZWVTcGFjZUV4VyhwYXRoLCAmXywgJnRvdGFsLCAmZnJlZSk7CkBAIC05MzY0LDcgKzk0NjYsNyBAQAogCiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihMTCkiLCB0b3RhbC5RdWFkUGFydCwgZnJlZS5RdWFkUGFydCk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIAogLyogVGhpcyBpcyB1c2VkIGZvciBmcGF0aGNvbmYoKSwgcGF0aGNvbmYoKSwgY29uZnN0cigpIGFuZCBzeXNjb25mKCkuCkBAIC05NTIxLDgxICs5NjIzLDczIEBACiB9CiAjZW5kaWYKIAorCiAjaWZkZWYgSEFWRV9GUEFUSENPTkYKLVB5RG9jX1NUUlZBUihwb3NpeF9mcGF0aGNvbmZfX2RvY19fLAotImZwYXRoY29uZihmZCwgbmFtZSkgLT4gaW50ZWdlclxuXG5cCi1SZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gbGltaXQgbmFtZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC5cblwKLUlmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuIik7CisvKltjbGluaWMgaW5wdXRdCitvcy5mcGF0aGNvbmYgLT4gbG9uZwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZnBhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBmZDogaW50CisgICAgbmFtZTogcGF0aF9jb25mbmFtZQorICAgIC8KKworUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKK0lmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19mcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBuYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA4MmIyOTIyZDQ0NDFkZTcgaW5wdXQ9NTk0MmEwMjRkMzc3NzgxMF0qLwogewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCBuYW1lLCBmZDsKKyAgICBsb25nIGxpbWl0OwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmcGF0aGNvbmYiLCAmZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKLSAgICAgICAgbG9uZyBsaW1pdDsKKyAgICBlcnJubyA9IDA7CisgICAgbGltaXQgPSBmcGF0aGNvbmYoZmQsIG5hbWUpOworICAgIGlmIChsaW1pdCA9PSAtMSAmJiBlcnJubyAhPSAwKQorICAgICAgICBwb3NpeF9lcnJvcigpOwogCi0gICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgbGltaXQgPSBmcGF0aGNvbmYoZmQsIG5hbWUpOwotICAgICAgICBpZiAobGltaXQgPT0gLTEgJiYgZXJybm8gIT0gMCkKLSAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhsaW1pdCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGxpbWl0OwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GUEFUSENPTkYgKi8KIAogCiAjaWZkZWYgSEFWRV9QQVRIQ09ORgotUHlEb2NfU1RSVkFSKHBvc2l4X3BhdGhjb25mX19kb2NfXywKLSJwYXRoY29uZihwYXRoLCBuYW1lKSAtPiBpbnRlZ2VyXG5cblwKLVJldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC5cblwKLUlmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuXG5cCi1PbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi0gIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnBhdGhjb25mIC0+IGxvbmcKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9J1BBVEhfSEFWRV9GUEFUSENPTkYnKQorICAgIG5hbWU6IHBhdGhfY29uZm5hbWUKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3BhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK1JldHVybiB0aGUgY29uZmlndXJhdGlvbiBsaW1pdCBuYW1lIGZvciB0aGUgZmlsZSBvciBkaXJlY3RvcnkgcGF0aC4KKworSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4KK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworb3NfcGF0aGNvbmZfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBuYW1lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM3MTMwMjllOTUwMWY1YWIgaW5wdXQ9YmMzZTJhOTg1YWYyN2U1ZV0qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGludCBuYW1lOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKLQotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAicGF0aGNvbmYiOwotI2lmZGVmIEhBVkVfRlBBVEhDT05GCi0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0jZW5kaWYKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZfcGF0aF9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgbG9uZyBsaW1pdDsKIAogICAgIGVycm5vID0gMDsKICNpZmRlZiBIQVZFX0ZQQVRIQ09ORgotICAgIGlmIChwYXRoLmZkICE9IC0xKQotICAgICAgICBsaW1pdCA9IGZwYXRoY29uZihwYXRoLmZkLCBuYW1lKTsKKyAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCisgICAgICAgIGxpbWl0ID0gZnBhdGhjb25mKHBhdGgtPmZkLCBuYW1lKTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgbGltaXQgPSBwYXRoY29uZihwYXRoLm5hcnJvdywgbmFtZSk7CisgICAgICAgIGxpbWl0ID0gcGF0aGNvbmYocGF0aC0+bmFycm93LCBuYW1lKTsKICAgICBpZiAobGltaXQgPT0gLTEgJiYgZXJybm8gIT0gMCkgewogICAgICAgICBpZiAoZXJybm8gPT0gRUlOVkFMKQogICAgICAgICAgICAgLyogY291bGQgYmUgYSBwYXRoIG9yIG5hbWUgcHJvYmxlbSAqLwogICAgICAgICAgICAgcG9zaXhfZXJyb3IoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gcGF0aF9lcnJvcigmcGF0aCk7CisgICAgICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tTG9uZyhsaW1pdCk7Ci0gICAgfQotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHJldHVybiBsaW1pdDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfUEFUSENPTkYgKi8KIAogI2lmZGVmIEhBVkVfQ09ORlNUUgogc3RhdGljIHN0cnVjdCBjb25zdGRlZiBwb3NpeF9jb25zdGFudHNfY29uZnN0cltdID0gewpAQCAtOTc1OSwyMSArOTg1MywyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBzaXplb2Yoc3RydWN0IGNvbnN0ZGVmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jb25mc3RyX19kb2NfXywKLSJjb25mc3RyKG5hbWUpIC0+IHN0cmluZ1xuXG5cCi1SZXR1cm4gYSBzdHJpbmctdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5jb25mc3RyCisKKyAgICBuYW1lOiBjb25mc3RyX2NvbmZuYW1lCisgICAgLworCitSZXR1cm4gYSBzdHJpbmctdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY29uZnN0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitvc19jb25mc3RyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmZmNzljOWVlZDhjMmRhZiBpbnB1dD0xOGZiNGQwNTY3MjQyZTY1XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWU7CiAgICAgY2hhciBidWZmZXJbMjU1XTsKICAgICBzaXplX3QgbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpjb25mc3RyIiwgY29udl9jb25mc3RyX2NvbmZuYW1lLCAmbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZXJybm8gPSAwOwogICAgIGxlbiA9IGNvbmZzdHIobmFtZSwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CiAgICAgaWYgKGxlbiA9PSAwKSB7CkBAIC05Nzg3LDE4ICs5ODg0LDIwIEBACiAgICAgfQogCiAgICAgaWYgKGxlbiA+PSBzaXplb2YoYnVmZmVyKSkgeworICAgICAgICBzaXplX3QgbGVuMjsKICAgICAgICAgY2hhciAqYnVmID0gUHlNZW1fTWFsbG9jKGxlbik7CiAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBjb25mc3RyKG5hbWUsIGJ1ZiwgbGVuKTsKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBsZW4tMSk7CisgICAgICAgIGxlbjIgPSBjb25mc3RyKG5hbWUsIGJ1ZiwgbGVuKTsKKyAgICAgICAgYXNzZXJ0KGxlbiA9PSBsZW4yKTsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBsZW4yLTEpOwogICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW4tMSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfQ09ORlNUUiAqLwogCiAKICNpZmRlZiBIQVZFX1NZU0NPTkYKQEAgLTEwMzA1LDI5ICsxMDQwNCwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBzaXplb2Yoc3RydWN0IGNvbnN0ZGVmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zeXNjb25mX19kb2NfXywKLSJzeXNjb25mKG5hbWUpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIGFuIGludGVnZXItdmFsdWVkIHN5c3RlbSBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3lzY29uZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5zeXNjb25mIC0+IGxvbmcKKyAgICBuYW1lOiBzeXNjb25mX2NvbmZuYW1lCisgICAgLworCitSZXR1cm4gYW4gaW50ZWdlci12YWx1ZWQgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitvc19zeXNjb25mX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IG5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWQ1NjczMDZmNThkNjljNCBpbnB1dD0yNzllMzQzMGEzM2YyOWU0XSovCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50IG5hbWU7CisgICAgbG9uZyB2YWx1ZTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpIHsKLSAgICAgICAgbG9uZyB2YWx1ZTsKLQotICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgIHZhbHVlID0gc3lzY29uZihuYW1lKTsKLSAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIGVycm5vICE9IDApCi0gICAgICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIGVycm5vID0gMDsKKyAgICB2YWx1ZSA9IHN5c2NvbmYobmFtZSk7CisgICAgaWYgKHZhbHVlID09IC0xICYmIGVycm5vICE9IDApCisgICAgICAgIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIHZhbHVlOwogfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TWVNDT05GICovCiAKIAogLyogVGhpcyBjb2RlIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHRhYmxlcyBvZiBjb25maWd1cmF0aW9uIHZhbHVlIG5hbWVzCkBAIC0xMDQwNCwxMyArMTA1MDIsMTggQEAKIH0KIAogCi1QeURvY19TVFJWQVIocG9zaXhfYWJvcnRfX2RvY19fLAotImFib3J0KCkgLT4gZG9lcyBub3QgcmV0dXJuIVxuXG5cCi1BYm9ydCB0aGUgaW50ZXJwcmV0ZXIgaW1tZWRpYXRlbHkuICBUaGlzICdkdW1wcyBjb3JlJyBvciBvdGhlcndpc2UgZmFpbHNcblwKLWluIHRoZSBoYXJkZXN0IHdheSBwb3NzaWJsZSBvbiB0aGUgaG9zdGluZyBvcGVyYXRpbmcgc3lzdGVtLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuYWJvcnQKKworQWJvcnQgdGhlIGludGVycHJldGVyIGltbWVkaWF0ZWx5LgorCitUaGlzIGZ1bmN0aW9uICdkdW1wcyBjb3JlJyBvciBvdGhlcndpc2UgZmFpbHMgaW4gdGhlIGhhcmRlc3Qgd2F5IHBvc3NpYmxlCitvbiB0aGUgaG9zdGluZyBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcyBmdW5jdGlvbiBuZXZlciByZXR1cm5zLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfYWJvcnQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19hYm9ydF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDg2YmI5NjY0N2MyOTliMyBpbnB1dD1jZjJjN2Q5OGJjNTA0MDQ3XSovCiB7CiAgICAgYWJvcnQoKTsKICAgICAvKk5PVFJFQUNIRUQqLwpAQCAtMTA0MTksOSArMTA1MjIsMTEgQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKKy8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KIFB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKSAtIFN0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkXG5cCi1hcHBsaWNhdGlvbi5cblwKKyJzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSlcblwKK1xuXAorU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uXG5cCiBcblwKIFdoZW4gXCJvcGVyYXRpb25cIiBpcyBub3Qgc3BlY2lmaWVkIG9yIFwib3BlblwiLCB0aGlzIGFjdHMgbGlrZVxuXAogZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhblxuXApAQCAtMTA0MzgsNiArMTA1NDMsMzcgQEAKIGFuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoIChcIi9cIik7XG5cCiB0aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc24ndCB3b3JrIGlmIGl0IGlzLiIpOwogCisvKiBHcmFiIFNoZWxsRXhlY3V0ZSBkeW5hbWljYWxseSBmcm9tIHNoZWxsMzIgKi8KK3N0YXRpYyBpbnQgaGFzX1NoZWxsRXhlY3V0ZSA9IC0xOworc3RhdGljIEhJTlNUQU5DRSAoQ0FMTEJBQ0sgKlB5X1NoZWxsRXhlY3V0ZUEpKEhXTkQsIExQQ1NUUiwgTFBDU1RSLCBMUENTVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDU1RSLCBJTlQpOworc3RhdGljIEhJTlNUQU5DRSAoQ0FMTEJBQ0sgKlB5X1NoZWxsRXhlY3V0ZVcpKEhXTkQsIExQQ1dTVFIsIExQQ1dTVFIsIExQQ1dTVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiwgSU5UKTsKK3N0YXRpYyBpbnQKK2NoZWNrX1NoZWxsRXhlY3V0ZSgpCit7CisgICAgSElOU1RBTkNFIGhTaGVsbDMyOworCisgICAgLyogb25seSByZWNoZWNrICovCisgICAgaWYgKC0xID09IGhhc19TaGVsbEV4ZWN1dGUpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBoU2hlbGwzMiA9IExvYWRMaWJyYXJ5VyhMIlNIRUxMMzIiKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGhTaGVsbDMyKSB7CisgICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9TaGVsbEV4ZWN1dGVBID0gR2V0UHJvY0FkZHJlc3MoaFNoZWxsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGVsbEV4ZWN1dGVBIik7CisgICAgICAgICAgICAqKEZBUlBST0MqKSZQeV9TaGVsbEV4ZWN1dGVXID0gR2V0UHJvY0FkZHJlc3MoaFNoZWxsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGVsbEV4ZWN1dGVXIik7CisgICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gUHlfU2hlbGxFeGVjdXRlQSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NoZWxsRXhlY3V0ZVc7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gaGFzX1NoZWxsRXhlY3V0ZTsKK30KKworCiBzdGF0aWMgUHlPYmplY3QgKgogd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTEwNDQ4LDYgKzEwNTg0LDE0IEBACiAgICAgSElOU1RBTkNFIHJjOwogCiAgICAgUHlPYmplY3QgKnVuaXBhdGgsICp1b3BlcmF0aW9uID0gTlVMTDsKKworICAgIGlmKCFjaGVja19TaGVsbEV4ZWN1dGUoKSkgeworICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIFNoZWxsRXhlY3V0ZSwgcmV0dXJuIGEKKyAgICAgICAgICAgTm90SW1wbGVtZW50ZWRFcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgInN0YXJ0ZmlsZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iKTsKKyAgICB9CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8czpzdGFydGZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pcGF0aCwgJm9wZXJhdGlvbikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTEwNDc2LDggKzEwNjIwLDggQEAKICAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBTaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKKyAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgd29wZXJhdGlvbiwgd3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIFNXX1NIT1dOT1JNQUwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBQeV9YREVDUkVGKHVvcGVyYXRpb24pOwpAQCAtMTA0OTksOCArMTA2NDMsOCBAQAogICAgIH0KICAgICBmaWxlcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob2ZpbGVwYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBTaGVsbEV4ZWN1dGUoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKKyAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZUEoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewogICAgICAgICBQeU9iamVjdCAqZXJydmFsID0gd2luMzJfZXJyb3IoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoKTsKQEAgLTEwNTExLDE3ICsxMDY1NSwyMyBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKwogCiAjaWZkZWYgSEFWRV9HRVRMT0FEQVZHCi1QeURvY19TVFJWQVIocG9zaXhfZ2V0bG9hZGF2Z19fZG9jX18sCi0iZ2V0bG9hZGF2ZygpIC0+IChmbG9hdCwgZmxvYXQsIGZsb2F0KVxuXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgaW4gdGhlIHN5c3RlbSBydW4gcXVldWUgYXZlcmFnZWQgb3ZlclxuXAotdGhlIGxhc3QgMSwgNSwgYW5kIDE1IG1pbnV0ZXMgb3IgcmFpc2VzIE9TRXJyb3IgaWYgdGhlIGxvYWQgYXZlcmFnZVxuXAotd2FzIHVub2J0YWluYWJsZSIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0bG9hZGF2ZworCitSZXR1cm4gYXZlcmFnZSByZWNlbnQgc3lzdGVtIGxvYWQgaW5mb3JtYXRpb24uCisKK1JldHVybiB0aGUgbnVtYmVyIG9mIHByb2Nlc3NlcyBpbiB0aGUgc3lzdGVtIHJ1biBxdWV1ZSBhdmVyYWdlZCBvdmVyCit0aGUgbGFzdCAxLCA1LCBhbmQgMTUgbWludXRlcyBhcyBhIHR1cGxlIG9mIHRocmVlIGZsb2F0cy4KK1JhaXNlcyBPU0Vycm9yIGlmIHRoZSBsb2FkIGF2ZXJhZ2Ugd2FzIHVub2J0YWluYWJsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2dldGxvYWRhdmcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitvc19nZXRsb2FkYXZnX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYjY0YzViNjc1ZDc0YzE0IGlucHV0PTNkNmQ4MjZiNzZkOGEzNGVdKi8KIHsKICAgICBkb3VibGUgbG9hZGF2Z1szXTsKICAgICBpZiAoZ2V0bG9hZGF2Zyhsb2FkYXZnLCAzKSE9MykgewpAQCAtMTA1MzAsNzIgKzEwNjgwLDgzIEBACiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJkZGQiLCBsb2FkYXZnWzBdLCBsb2FkYXZnWzFdLCBsb2FkYXZnWzJdKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUTE9BREFWRyAqLwogCi1QeURvY19TVFJWQVIoZGV2aWNlX2VuY29kaW5nX19kb2NfXywKLSJkZXZpY2VfZW5jb2RpbmcoZmQpIC0+IHN0clxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgZW5jb2Rpbmcgb2YgdGhlIGRldmljZVxuXAotaWYgdGhlIG91dHB1dCBpcyBhIHRlcm1pbmFsOyBlbHNlIHJldHVybiBOb25lLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5kZXZpY2VfZW5jb2RpbmcKKyAgICBmZDogaW50CisKK1JldHVybiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBlbmNvZGluZyBvZiBhIHRlcm1pbmFsJ3MgZmlsZSBkZXNjcmlwdG9yLgorCitUaGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgYmUgYXR0YWNoZWQgdG8gYSB0ZXJtaW5hbC4KK0lmIHRoZSBkZXZpY2UgaXMgbm90IGEgdGVybWluYWwsIHJldHVybiBOb25lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGV2aWNlX2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX2RldmljZV9lbmNvZGluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNGYxNGUzMzQ2ODQxOWMxIGlucHV0PTllMWQ0YTQyYjY2ZGYzMTJdKi8KIHsKLSAgICBpbnQgZmQ7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZGV2aWNlX2VuY29kaW5nIiwgJmZkKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5X2RldmljZV9lbmNvZGluZyhmZCk7CiB9CiAKLSNpZmRlZiBIQVZFX1NFVFJFU1VJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJlc3VpZF9fZG9jX18sCi0ic2V0cmVzdWlkKHJ1aWQsIGV1aWQsIHN1aWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgdXNlciBpZHMuIik7CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X3NldHJlc3VpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorI2lmZGVmIEhBVkVfU0VUUkVTVUlECisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRyZXN1aWQKKworICAgIHJ1aWQ6IHVpZF90CisgICAgZXVpZDogdWlkX3QKKyAgICBzdWlkOiB1aWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3NldHJlc3VpZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHVpZF90IHJ1aWQsIHVpZF90IGV1aWQsIHVpZF90IHN1aWQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTJjYzMzMDgxMmM2ZWQwZiBpbnB1dD05ZTMzY2I3OWE4Mjc5MmYzXSovCiB7Ci0gICAgLyogV2UgYXNzdW1lIHVpZF90IGlzIG5vIGxhcmdlciB0aGFuIGEgbG9uZy4gKi8KLSAgICB1aWRfdCBydWlkLCBldWlkLCBzdWlkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc3VpZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2V0cmVzdWlkKHJ1aWQsIGV1aWQsIHN1aWQpIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NFVFJFU1VJRCAqLworCiAKICNpZmRlZiBIQVZFX1NFVFJFU0dJRAotUHlEb2NfU1RSVkFSKHBvc2l4X3NldHJlc2dpZF9fZG9jX18sCi0ic2V0cmVzZ2lkKHJnaWQsIGVnaWQsIHNnaWQpXG5cblwKLVNldCB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3Muc2V0cmVzZ2lkCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X3NldHJlc2dpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHJnaWQ6IGdpZF90CisgICAgZWdpZDogZ2lkX3QKKyAgICBzZ2lkOiBnaWRfdAorICAgIC8KKworU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCBncm91cCBpZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRyZXNnaWRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBnaWRfdCByZ2lkLCBnaWRfdCBlZ2lkLCBnaWRfdCBzZ2lkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU5MWRjNDg0MmE2MDQ0MjkgaW5wdXQ9MzNlOWUwNzg1ZWY0MjZiMV0qLwogewotICAgIGdpZF90IHJnaWQsIGVnaWQsIHNnaWQ7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzZ2lkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzZXRyZXNnaWQocmdpZCwgZWdpZCwgc2dpZCkgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfU0VUUkVTR0lEICovCisKIAogI2lmZGVmIEhBVkVfR0VUUkVTVUlECi1QeURvY19TVFJWQVIocG9zaXhfZ2V0cmVzdWlkX19kb2NfXywKLSJnZXRyZXN1aWQoKSAtPiAocnVpZCwgZXVpZCwgc3VpZClcblxuXAotR2V0IHR1cGxlIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsLCBlZmZlY3RpdmUsIGFuZCBzYXZlZCB1c2VyIGlkcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHJlc3VpZAogCi1zdGF0aWMgUHlPYmplY3QqCi1wb3NpeF9nZXRyZXN1aWQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQorUmV0dXJuIGEgdHVwbGUgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcydzIHJlYWwsIGVmZmVjdGl2ZSwgYW5kIHNhdmVkIHVzZXIgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzdWlkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZGRlZjYyZmFhZThlNDc3IGlucHV0PTQxY2NmYThlMWY2NTE3YWRdKi8KIHsKICAgICB1aWRfdCBydWlkLCBldWlkLCBzdWlkOwogICAgIGlmIChnZXRyZXN1aWQoJnJ1aWQsICZldWlkLCAmc3VpZCkgPCAwKQpAQCAtMTA2MDQsOTAgKzEwNzY1LDg4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5TG9uZ19Gcm9tVWlkKGV1aWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUxvbmdfRnJvbVVpZChzdWlkKSk7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0dFVFJFU1VJRCAqLworCiAKICNpZmRlZiBIQVZFX0dFVFJFU0dJRAotUHlEb2NfU1RSVkFSKHBvc2l4X2dldHJlc2dpZF9fZG9jX18sCi0iZ2V0cmVzZ2lkKCkgLT4gKHJnaWQsIGVnaWQsIHNnaWQpXG5cblwKLUdldCB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLiIpOworLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmVzZ2lkCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldHJlc2dpZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCitSZXR1cm4gYSB0dXBsZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzJ3MgcmVhbCwgZWZmZWN0aXZlLCBhbmQgc2F2ZWQgZ3JvdXAgaWRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmVzZ2lkX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMWE1NTNjYmNmMTYyMzRjIGlucHV0PTUxN2U2OGRiOWNhMzJkZjZdKi8KIHsKLSAgICB1aWRfdCByZ2lkLCBlZ2lkLCBzZ2lkOworICAgIGdpZF90IHJnaWQsIGVnaWQsIHNnaWQ7CiAgICAgaWYgKGdldHJlc2dpZCgmcmdpZCwgJmVnaWQsICZzZ2lkKSA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTk5OKSIsIF9QeUxvbmdfRnJvbUdpZChyZ2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlMb25nX0Zyb21HaWQoZWdpZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5TG9uZ19Gcm9tR2lkKHNnaWQpKTsKIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfR0VUUkVTR0lEICovCisKIAogI2lmZGVmIFVTRV9YQVRUUlMKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHhhdHRyCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9nZXR4YXR0cl9fZG9jX18sCi0iZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkgLT4gdmFsdWVcblxuXAotUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCBnZXR4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKLSAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlKQorICAgIGF0dHJpYnV0ZTogcGF0aF90CisgICAgKgorICAgIGZvbGxvd19zeW1saW5rczogYm9vbCA9IFRydWUKKworUmV0dXJuIHRoZSB2YWx1ZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguCisKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCBnZXR4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9nZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2YyY2VkZTc0YmQ1ZDQxMiBpbnB1dD04YzhlYTNiYWI3OGQ4OWMyXSovCiB7Ci0gICAgcGF0aF90IHBhdGg7Ci0gICAgcGF0aF90IGF0dHJpYnV0ZTsKLSAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEw7Ci0gICAgaW50IGk7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIG1lbXNldCgmYXR0cmlidXRlLCAwLCBzaXplb2YoYXR0cmlidXRlKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gImdldHhhdHRyIjsKLSAgICBhdHRyaWJ1dGUuZnVuY3Rpb25fbmFtZSA9ICJnZXR4YXR0ciI7Ci0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIGtleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAotICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJnZXR4YXR0ciIsIHBhdGgtPmZkLCBmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImdldHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKLSAgICAgICAgZ290byBleGl0OwotCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKICAgICAgICAgdm9pZCAqcHRyOwogICAgICAgICBzc2l6ZV90IHJlc3VsdDsKICAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnVmZmVyX3NpemUpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpOwogCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7Ci0gICAgICAgIGlmIChwYXRoLmZkID49IDApCi0gICAgICAgICAgICByZXN1bHQgPSBmZ2V0eGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGlmIChwYXRoLT5mZCA+PSAwKQorICAgICAgICAgICAgcmVzdWx0ID0gZmdldHhhdHRyKHBhdGgtPmZkLCBhdHRyaWJ1dGUtPm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CiAgICAgICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgICAgIHJlc3VsdCA9IGdldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldHhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBsZ2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOworICAgICAgICAgICAgcmVzdWx0ID0gbGdldHhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3csIHB0ciwgYnVmZmVyX3NpemUpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKIAogICAgICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogICAgICAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBidWZmZXJfc2l6ZSkgewpAQCAtMTA2OTcsMTY4ICsxMDg1NiwxMzQgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9zZXR4YXR0cl9fZG9jX18sCi0ic2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKLVNldCBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGggdG8gdmFsdWUuXG5cCi1wYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1JZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKLSAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKLSAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5zZXR4YXR0cgorCisgICAgcGF0aDogcGF0aF90KGFsbG93X2ZkPVRydWUpCisgICAgYXR0cmlidXRlOiBwYXRoX3QKKyAgICB2YWx1ZTogUHlfYnVmZmVyCisgICAgZmxhZ3M6IGludCA9IDAKKyAgICAqCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitTZXQgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoIHRvIHZhbHVlLgorCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgc2V0eGF0dHIgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zZXR4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zZXR4YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqdmFsdWUsIGludCBmbGFncywgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYjM5NWVmODI4ODBmZWEwIGlucHV0PWYwZDI2ODMzOTkyMDE1YzJdKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBwYXRoX3QgYXR0cmlidXRlOwotICAgIFB5X2J1ZmZlciB2YWx1ZTsKLSAgICBpbnQgZmxhZ3MgPSAwOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3NpemVfdCByZXN1bHQ7CiAKLSAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7Ci0gICAgcGF0aC5mdW5jdGlvbl9uYW1lID0gInNldHhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOwotICAgIG1lbXNldCgmdmFsdWUsIDAsIHNpemVvZih2YWx1ZSkpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ5KnxpJHA6c2V0eGF0dHIiLAotICAgICAgICBrZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKLSAgICAgICAgJnZhbHVlLCAmZmxhZ3MsCi0gICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInNldHhhdHRyIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgic2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZzZXR4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBpZiAocGF0aC0+ZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnNldHhhdHRyKHBhdGgtPmZkLCBhdHRyaWJ1dGUtPm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5idWYsIHZhbHVlLT5sZW4sIGZsYWdzKTsKICAgICBlbHNlIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICAgICAgcmVzdWx0ID0gc2V0eGF0dHIocGF0aC0+bmFycm93LCBhdHRyaWJ1dGUtPm5hcnJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5idWYsIHZhbHVlLT5sZW4sIGZsYWdzKTsKICAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IGxzZXR4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmJ1ZiwgdmFsdWUubGVuLCBmbGFncyk7CisgICAgICAgIHJlc3VsdCA9IGxzZXR4YXR0cihwYXRoLT5uYXJyb3csIGF0dHJpYnV0ZS0+bmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPmJ1ZiwgdmFsdWUtPmxlbiwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICBwYXRoX2Vycm9yKHBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKLQotICAgIHJldHVybiByZXR1cm5fdmFsdWU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX18sCi0icmVtb3ZleGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKLXBhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKLUlmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAotICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAotICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnJlbW92ZXhhdHRyCisKKyAgICBwYXRoOiBwYXRoX3QoYWxsb3dfZmQ9VHJ1ZSkKKyAgICBhdHRyaWJ1dGU6IHBhdGhfdAorICAgICoKKyAgICBmb2xsb3dfc3ltbGlua3M6IGJvb2wgPSBUcnVlCisKK1JlbW92ZSBleHRlbmRlZCBhdHRyaWJ1dGUgYXR0cmlidXRlIG9uIHBhdGguCisKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpYworICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlbW92ZXhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZXhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mOTJiYjM5YWI5OTI2NTBkIGlucHV0PWNkYjU0ODM0MTYxZTMzMjldKi8KIHsKLSAgICBwYXRoX3QgcGF0aDsKLSAgICBwYXRoX3QgYXR0cmlidXRlOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwotICAgIGludCByZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHNzaXplX3QgcmVzdWx0OwogCi0gICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOwotICAgIHBhdGguZnVuY3Rpb25fbmFtZSA9ICJyZW1vdmV4YXR0ciI7Ci0gICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKLSAgICBhdHRyaWJ1dGUuZnVuY3Rpb25fbmFtZSA9ICJyZW1vdmV4YXR0ciI7Ci0gICAgcGF0aC5hbGxvd19mZCA9IDE7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpyZW1vdmV4YXR0ciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmIChmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoInJlbW92ZXhhdHRyIiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgicmVtb3ZleGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgIGlmIChwYXRoLmZkID4gLTEpCi0gICAgICAgIHJlc3VsdCA9IGZyZW1vdmV4YXR0cihwYXRoLmZkLCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBpZiAocGF0aC0+ZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnJlbW92ZXhhdHRyKHBhdGgtPmZkLCBhdHRyaWJ1dGUtPm5hcnJvdyk7CiAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQotICAgICAgICByZXN1bHQgPSByZW1vdmV4YXR0cihwYXRoLm5hcnJvdywgYXR0cmlidXRlLm5hcnJvdyk7CisgICAgICAgIHJlc3VsdCA9IHJlbW92ZXhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3cpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gbHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICAgICAgcmVzdWx0ID0gbHJlbW92ZXhhdHRyKHBhdGgtPm5hcnJvdywgYXR0cmlidXRlLT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCZwYXRoKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gcGF0aF9lcnJvcihwYXRoKTsKICAgICB9CiAKLSAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOwotCi1leGl0OgotICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwotCi0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3R4YXR0cl9fZG9jX18sCi0ibGlzdHhhdHRyKHBhdGg9Jy4nLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAotUmV0dXJuIGEgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIHBhdGguXG5cCi1cblwKLXBhdGggbWF5IGJlIGVpdGhlciBOb25lLCBhIHN0cmluZywgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCi1pZiBwYXRoIGlzIE5vbmUsIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuXAotSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCi0gIGxpbmssIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKLSAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCisvKltjbGluaWMgaW5wdXRdCitvcy5saXN0eGF0dHIKKworICAgIHBhdGg6IHBhdGhfdChhbGxvd19mZD1UcnVlLCBudWxsYWJsZT1UcnVlKSA9IE5vbmUKKyAgICAqCisgICAgZm9sbG93X3N5bWxpbmtzOiBib29sID0gVHJ1ZQorCitSZXR1cm4gYSBsaXN0IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb24gcGF0aC4KKworcGF0aCBtYXkgYmUgZWl0aGVyIE5vbmUsIGEgc3RyaW5nLCBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KK2lmIHBhdGggaXMgTm9uZSwgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWMKKyAgbGluaywgbGlzdHhhdHRyIHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZQorICB0aGUgbGluayBwb2ludHMgdG8uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saXN0eGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdHhhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4N2FkNmNlNTZlNDJhNGYgaW5wdXQ9MDhjY2E1M2FjMGIwN2MxM10qLwogewotICAgIHBhdGhfdCBwYXRoOwotICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIGNoYXIgKmJ1ZmZlciA9IE5VTEw7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKIAotICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBwYXRoLmZ1bmN0aW9uX25hbWUgPSAibGlzdHhhdHRyIjsKLSAgICBwYXRoLmFsbG93X2ZkID0gMTsKLSAgICBwYXRoLmZkID0gLTE7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mJHA6bGlzdHhhdHRyIiwga2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKLSAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgibGlzdHhhdHRyIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJsaXN0eGF0dHIiLCBwYXRoLT5mZCwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgbmFtZSA9IHBhdGgubmFycm93ID8gcGF0aC5uYXJyb3cgOiAiLiI7CisgICAgbmFtZSA9IHBhdGgtPm5hcnJvdyA/IHBhdGgtPm5hcnJvdyA6ICIuIjsKKwogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIGNoYXIgKnN0YXJ0LCAqdHJhY2UsICplbmQ7CiAgICAgICAgIHNzaXplX3QgbGVuZ3RoOwpAQCAtMTA4NjYsNyArMTA5OTEsNyBAQAogICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOwogICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICAvKiBFUkFOR0UgKi8KLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciA9IFB5TWVtX01BTExPQyhidWZmZXJfc2l6ZSk7CkBAIC0xMDg3Niw4ICsxMTAwMSw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwotICAgICAgICBpZiAocGF0aC5mZCA+IC0xKQotICAgICAgICAgICAgbGVuZ3RoID0gZmxpc3R4YXR0cihwYXRoLmZkLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgaWYgKHBhdGgtPmZkID4gLTEpCisgICAgICAgICAgICBsZW5ndGggPSBmbGlzdHhhdHRyKHBhdGgtPmZkLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKICAgICAgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQogICAgICAgICAgICAgbGVuZ3RoID0gbGlzdHhhdHRyKG5hbWUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpOwogICAgICAgICBlbHNlCkBAIC0xMDg5MCw3ICsxMTAxNSw3IEBACiAgICAgICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhdGhfZXJyb3IoJnBhdGgpOworICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTEwOTIzLDQzICsxMTA0OCw0MyBAQAogICAgIGJyZWFrOwogICAgIH0KIGV4aXQ6Ci0gICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICBpZiAoYnVmZmVyKQogICAgICAgICBQeU1lbV9GUkVFKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KLQogI2VuZGlmIC8qIFVTRV9YQVRUUlMgKi8KIAogCi1QeURvY19TVFJWQVIocG9zaXhfdXJhbmRvbV9fZG9jX18sCi0idXJhbmRvbShuKSAtPiBzdHJcblxuXAotUmV0dXJuIG4gcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnVyYW5kb20KKworICAgIHNpemU6IFB5X3NzaXplX3QKKyAgICAvCisKK1JldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF91cmFuZG9tKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK29zX3VyYW5kb21faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTAwMTFmMDIxNTAxZjAzYiBpbnB1dD00MDY3Y2RiMWI2Nzc2YzI5XSovCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHJldDsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgaW50IHJlc3VsdDsKIAotICAgICAvKiBSZWFkIGFyZ3VtZW50cyAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp1cmFuZG9tIiwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA8IDApCiAgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0ID0gX1B5T1NfVVJhbmRvbShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXN1bHQpKTsKLSAgICBpZiAocmV0ID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGJ5dGVzOwogfQogCiAvKiBUZXJtaW5hbCBzaXplIHF1ZXJ5aW5nICovCkBAIC0xMDk4Myw2ICsxMTEwOCw3IEBACiB9OwogCiAjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQorLyogQUMgMy41OiBmZCBzaG91bGQgYWNjZXB0IE5vbmUgKi8KIFB5RG9jX1NUUlZBUih0ZXJtc2l6ZV9fZG9jX18sCiAgICAgIlJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93IGFzIChjb2x1bW5zLCBsaW5lcykuXG4iICAgICAgICBcCiAgICAgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMTA2OCwxMyArMTExOTQsMTYgQEAKIH0KICNlbmRpZiAvKiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpICovCiAKLVB5RG9jX1NUUlZBUihwb3NpeF9jcHVfY291bnRfX2RvY19fLAotImNwdV9jb3VudCgpIC0+IGludGVnZXJcblxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLCBvciBOb25lIGlmIHRoaXMgdmFsdWUgY2Fubm90IGJlXG5cCi1lc3RhYmxpc2hlZC4iKTsKKworLypbY2xpbmljIGlucHV0XQorb3MuY3B1X2NvdW50CisKK1JldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jcHVfY291bnQoUHlPYmplY3QgKnNlbGYpCitvc19jcHVfY291bnRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1OWVlN2Y2YmNlODMyYjggaW5wdXQ9ZDU1ZTJmOGYzODIzYTYyOF0qLwogewogICAgIGludCBuY3B1ID0gMDsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0xMTEwMywxMTEgKzExMjMyLDk0MyBAQAogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldF9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgImdldF9pbmhlcml0YWJsZShmZCkgLT4gYm9vbFxuIiBcCi0gICAgIlxuIiBcCi0gICAgIkdldCB0aGUgY2xvc2Utb24tZXhlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuIik7CiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldF9pbmhlcml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5nZXRfaW5oZXJpdGFibGUgLT4gYm9vbAorCisgICAgZmQ6IGludAorICAgIC8KKworR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfZ2V0X2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2MTEwYmIzNmVmYWEyMWUgaW5wdXQ9ODlhYzAwOGRjOWFiNmI5NV0qLwogewotICAgIGludCBmZDsKLSAgICBpbnQgaW5oZXJpdGFibGU7CisgICAgaW50IHJldHVybl92YWx1ZTsKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRfaW5oZXJpdGFibGUiLCAmZmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KLSAgICBpbmhlcml0YWJsZSA9IF9QeV9nZXRfaW5oZXJpdGFibGUoZmQpOwotICAgIGlmIChpbmhlcml0YWJsZSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoaW5oZXJpdGFibGUpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRfaW5oZXJpdGFibGVfX2RvY19fLAotICAgICJzZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlKVxuIiBcCi0gICAgIlxuIiBcCi0gICAgIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0X2luaGVyaXRhYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnNldF9pbmhlcml0YWJsZQorICAgIGZkOiBpbnQKKyAgICBpbmhlcml0YWJsZTogaW50CisgICAgLworCitTZXQgdGhlIGluaGVyaXRhYmxlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaW5oZXJpdGFibGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBpbmhlcml0YWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYWM1YzZjZTg2MjNmMDQ1IGlucHV0PTljZWFlYWQ4N2ExZTI0MDJdKi8KIHsKLSAgICBpbnQgZmQsIGluaGVyaXRhYmxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfaW5oZXJpdGFibGUiLCAmZmQsICZpbmhlcml0YWJsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaW50IHJlc3VsdDsKICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogCi0gICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCBOVUxMKSA8IDApCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIHJlc3VsdCA9IF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCBOVUxMKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogCiAjaWZkZWYgTVNfV0lORE9XUwotUHlEb2NfU1RSVkFSKGdldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19fLAotICAgICJnZXRfaGFuZGxlX2luaGVyaXRhYmxlKGZkKSAtPiBib29sXG4iIFwKLSAgICAiXG4iIFwKLSAgICAiR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldF9oYW5kbGVfaW5oZXJpdGFibGUgLT4gYm9vbAorICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICAvCiAKLXN0YXRpYyBQeU9iamVjdCoKLXBvc2l4X2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYjdiM2UxYjQzZjMxMmI2IGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CiAgICAgRFdPUkQgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX0lOVFBUUiAiOmdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAmaGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoIUdldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpaGFuZGxlLCAmZmxhZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoZmxhZ3MgJiBIQU5ETEVfRkxBR19JTkhFUklUKTsKKyAgICByZXR1cm4gZmxhZ3MgJiBIQU5ETEVfRkxBR19JTkhFUklUOwogfQogCi1QeURvY19TVFJWQVIoc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX18sCi0gICAgInNldF9oYW5kbGVfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlKVxuIiBcCi0gICAgIlxuIiBcCi0gICAgIlNldCB0aGUgaW5oZXJpdGFibGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGhhbmRsZS4iKTsKIAotc3RhdGljIFB5T2JqZWN0KgotcG9zaXhfc2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCitvcy5zZXRfaGFuZGxlX2luaGVyaXRhYmxlCisgICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGluaGVyaXRhYmxlOiBib29sCisgICAgLworCitTZXQgdGhlIGluaGVyaXRhYmxlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBoYW5kbGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMmUxMTFhOTZjOWViMjk2IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KIHsKLSAgICBpbnQgaW5oZXJpdGFibGUgPSAxOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKLSAgICBEV09SRCBmbGFnczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfSU5UUFRSICJpOnNldF9oYW5kbGVfaW5oZXJpdGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLCAmaW5oZXJpdGFibGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChpbmhlcml0YWJsZSkKLSAgICAgICAgZmxhZ3MgPSBIQU5ETEVfRkxBR19JTkhFUklUOwotICAgIGVsc2UKLSAgICAgICAgZmxhZ3MgPSAwOworICAgIERXT1JEIGZsYWdzID0gaW5oZXJpdGFibGUgPyBIQU5ETEVfRkxBR19JTkhFUklUIDogMDsKICAgICBpZiAoIVNldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpaGFuZGxlLCBIQU5ETEVfRkxBR19JTkhFUklULCBmbGFncykpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLSNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKKyNpZm5kZWYgTVNfV0lORE9XUworUHlEb2NfU1RSVkFSKGdldF9ibG9ja2luZ19fZG9jX18sCisgICAgImdldF9ibG9ja2luZyhmZCkgLT4gYm9vbFxuIiBcCisgICAgIlxuIiBcCisgICAgIkdldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yOlxuIiBcCisgICAgIkZhbHNlIGlmIHRoZSBPX05PTkJMT0NLIGZsYWcgaXMgc2V0LCBUcnVlIGlmIHRoZSBmbGFnIGlzIGNsZWFyZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK3Bvc2l4X2dldF9ibG9ja2luZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkOworICAgIGludCBibG9ja2luZzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRfYmxvY2tpbmciLCAmZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgYmxvY2tpbmcgPSBfUHlfZ2V0X2Jsb2NraW5nKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIGlmIChibG9ja2luZyA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoYmxvY2tpbmcpOworfQorCitQeURvY19TVFJWQVIoc2V0X2Jsb2NraW5nX19kb2NfXywKKyAgICAic2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZylcbiIgXAorICAgICJcbiIgXAorICAgICJTZXQgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuXG4iIFwKKyAgICAiU2V0IHRoZSBPX05PTkJMT0NLIGZsYWcgaWYgYmxvY2tpbmcgaXMgRmFsc2UsXG4iIFwKKyAgICAiY2xlYXIgdGhlIE9fTk9OQkxPQ0sgZmxhZyBvdGhlcndpc2UuIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK3Bvc2l4X3NldF9ibG9ja2luZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBibG9ja2luZywgcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYgICAvKiAhTVNfV0lORE9XUyAqLworCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2FuZGlyX19kb2NfXywKKyJzY2FuZGlyKHBhdGg9Jy4nKSAtPiBpdGVyYXRvciBvZiBEaXJFbnRyeSBvYmplY3RzIGZvciBnaXZlbiBwYXRoIik7CisKK3N0YXRpYyBjaGFyICpmb2xsb3dfc3ltbGlua3Nfa2V5d29yZHNbXSA9IHsiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnBhdGg7CisgICAgUHlPYmplY3QgKnN0YXQ7CisgICAgUHlPYmplY3QgKmxzdGF0OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHdpbjMyX2xzdGF0OworICAgIF9faW50NjQgd2luMzJfZmlsZV9pbmRleDsKKyAgICBpbnQgZ290X2ZpbGVfaW5kZXg7CisjZWxzZSAvKiBQT1NJWCAqLworI2lmZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorICAgIHVuc2lnbmVkIGNoYXIgZF90eXBlOworI2VuZGlmCisgICAgaW5vX3QgZF9pbm87CisjZW5kaWYKK30gRGlyRW50cnk7CisKK3N0YXRpYyB2b2lkCitEaXJFbnRyeV9kZWFsbG9jKERpckVudHJ5ICplbnRyeSkKK3sKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5uYW1lKTsKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5wYXRoKTsKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5zdGF0KTsKKyAgICBQeV9YREVDUkVGKGVudHJ5LT5sc3RhdCk7CisgICAgUHlfVFlQRShlbnRyeSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopZW50cnkpOworfQorCisvKiBGb3J3YXJkIHJlZmVyZW5jZSAqLworc3RhdGljIGludAorRGlyRW50cnlfdGVzdF9tb2RlKERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzLCB1bnNpZ25lZCBzaG9ydCBtb2RlX2JpdHMpOworCisvKiBTZXQgZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIDAgZm9yIEZhbHNlLCAxIGZvciBUcnVlICovCitzdGF0aWMgaW50CitEaXJFbnRyeV9pc19zeW1saW5rKERpckVudHJ5ICpzZWxmKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICByZXR1cm4gKHNlbGYtPndpbjMyX2xzdGF0LnN0X21vZGUgJiBTX0lGTVQpID09IFNfSUZMTks7CisjZWxpZiBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICAvKiBQT1NJWCAqLworICAgIGlmIChzZWxmLT5kX3R5cGUgIT0gRFRfVU5LTk9XTikKKyAgICAgICAgcmV0dXJuIHNlbGYtPmRfdHlwZSA9PSBEVF9MTks7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRGlyRW50cnlfdGVzdF9tb2RlKHNlbGYsIDAsIFNfSUZMTkspOworI2Vsc2UKKyAgICAvKiBQT1NJWCB3aXRob3V0IGRfdHlwZSAqLworICAgIHJldHVybiBEaXJFbnRyeV90ZXN0X21vZGUoc2VsZiwgMCwgU19JRkxOSyk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3B5X2lzX3N5bWxpbmsoRGlyRW50cnkgKnNlbGYpCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIHJlc3VsdCA9IERpckVudHJ5X2lzX3N5bWxpbmsoc2VsZik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZmV0Y2hfc3RhdChEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgd2NoYXJfdCAqcGF0aDsKKworICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOworICAgIGlmICghcGF0aCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0X3cocGF0aCwgJnN0KTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0X3cocGF0aCwgJnN0KTsKKworICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHNlbGYtPnBhdGgpOworICAgIH0KKyNlbHNlIC8qIFBPU0lYICovCisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIGNoYXIgKnBhdGg7CisKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihzZWxmLT5wYXRoLCAmYnl0ZXMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworCisgICAgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworCisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHNlbGYtPnBhdGgpOworI2VuZGlmCisKKyAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfZ2V0X2xzdGF0KERpckVudHJ5ICpzZWxmKQoreworICAgIGlmICghc2VsZi0+bHN0YXQpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHNlbGYtPmxzdGF0ID0gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc2VsZi0+d2luMzJfbHN0YXQpOworI2Vsc2UgLyogUE9TSVggKi8KKyAgICAgICAgc2VsZi0+bHN0YXQgPSBEaXJFbnRyeV9mZXRjaF9zdGF0KHNlbGYsIDApOworI2VuZGlmCisgICAgfQorICAgIFB5X1hJTkNSRUYoc2VsZi0+bHN0YXQpOworICAgIHJldHVybiBzZWxmLT5sc3RhdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2dldF9zdGF0KERpckVudHJ5ICpzZWxmLCBpbnQgZm9sbG93X3N5bWxpbmtzKQoreworICAgIGlmICghZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXR1cm4gRGlyRW50cnlfZ2V0X2xzdGF0KHNlbGYpOworCisgICAgaWYgKCFzZWxmLT5zdGF0KSB7CisgICAgICAgIGludCByZXN1bHQgPSBEaXJFbnRyeV9pc19zeW1saW5rKHNlbGYpOworICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYtPnN0YXQgPSBEaXJFbnRyeV9mZXRjaF9zdGF0KHNlbGYsIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5zdGF0ID0gRGlyRW50cnlfZ2V0X2xzdGF0KHNlbGYpOworICAgIH0KKworICAgIFB5X1hJTkNSRUYoc2VsZi0+c3RhdCk7CisgICAgcmV0dXJuIHNlbGYtPnN0YXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9zdGF0KERpckVudHJ5ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInwkcDpEaXJFbnRyeS5zdGF0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3Nfa2V5d29yZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBEaXJFbnRyeV9nZXRfc3RhdChzZWxmLCBmb2xsb3dfc3ltbGlua3MpOworfQorCisvKiBTZXQgZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIDAgZm9yIEZhbHNlLCAxIGZvciBUcnVlICovCitzdGF0aWMgaW50CitEaXJFbnRyeV90ZXN0X21vZGUoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MsIHVuc2lnbmVkIHNob3J0IG1vZGVfYml0cykKK3sKKyAgICBQeU9iamVjdCAqc3RhdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0X21vZGUgPSBOVUxMOworICAgIGxvbmcgbW9kZTsKKyAgICBpbnQgcmVzdWx0OworI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChIQVZFX0RJUkVOVF9EX1RZUEUpCisgICAgaW50IGlzX3N5bWxpbms7CisgICAgaW50IG5lZWRfc3RhdDsKKyNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB1bnNpZ25lZCBsb25nIGRpcl9iaXRzOworI2VuZGlmCisgICAgX1B5X0lERU5USUZJRVIoc3RfbW9kZSk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaXNfc3ltbGluayA9IChzZWxmLT53aW4zMl9sc3RhdC5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGTE5LOworICAgIG5lZWRfc3RhdCA9IGZvbGxvd19zeW1saW5rcyAmJiBpc19zeW1saW5rOworI2VsaWYgZGVmaW5lZChIQVZFX0RJUkVOVF9EX1RZUEUpCisgICAgaXNfc3ltbGluayA9IHNlbGYtPmRfdHlwZSA9PSBEVF9MTks7CisgICAgbmVlZF9zdGF0ID0gc2VsZi0+ZF90eXBlID09IERUX1VOS05PV04gfHwgKGZvbGxvd19zeW1saW5rcyAmJiBpc19zeW1saW5rKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICBpZiAobmVlZF9zdGF0KSB7CisjZW5kaWYKKyAgICAgICAgc3RhdCA9IERpckVudHJ5X2dldF9zdGF0KHNlbGYsIGZvbGxvd19zeW1saW5rcyk7CisgICAgICAgIGlmICghc3RhdCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgLyogSWYgZmlsZSBkb2Vzbid0IGV4aXN0IChhbnltb3JlKSwgdGhlbiByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAoaS5lLiwgc2F5IGl0J3Mgbm90IGEgZmlsZS9kaXJlY3RvcnkpICovCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3RfbW9kZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3RhdCwgJlB5SWRfc3RfbW9kZSk7CisgICAgICAgIGlmICghc3RfbW9kZSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgbW9kZSA9IFB5TG9uZ19Bc0xvbmcoc3RfbW9kZSk7CisgICAgICAgIGlmIChtb2RlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBQeV9DTEVBUihzdF9tb2RlKTsKKyAgICAgICAgUHlfQ0xFQVIoc3RhdCk7CisgICAgICAgIHJlc3VsdCA9IChtb2RlICYgU19JRk1UKSA9PSBtb2RlX2JpdHM7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKEhBVkVfRElSRU5UX0RfVFlQRSkKKyAgICB9CisgICAgZWxzZSBpZiAoaXNfc3ltbGluaykgeworICAgICAgICBhc3NlcnQobW9kZV9iaXRzICE9IFNfSUZMTkspOworICAgICAgICByZXN1bHQgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KG1vZGVfYml0cyA9PSBTX0lGRElSIHx8IG1vZGVfYml0cyA9PSBTX0lGUkVHKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGRpcl9iaXRzID0gc2VsZi0+d2luMzJfbHN0YXQuc3RfZmlsZV9hdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZOworICAgICAgICBpZiAobW9kZV9iaXRzID09IFNfSUZESVIpCisgICAgICAgICAgICByZXN1bHQgPSBkaXJfYml0cyAhPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBkaXJfYml0cyA9PSAwOworI2Vsc2UgLyogUE9TSVggKi8KKyAgICAgICAgaWYgKG1vZGVfYml0cyA9PSBTX0lGRElSKQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi0+ZF90eXBlID09IERUX0RJUjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi0+ZF90eXBlID09IERUX1JFRzsKKyNlbmRpZgorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihzdF9tb2RlKTsKKyAgICBQeV9YREVDUkVGKHN0YXQpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X3B5X3Rlc3RfbW9kZShEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcywgdW5zaWduZWQgc2hvcnQgbW9kZV9iaXRzKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICByZXN1bHQgPSBEaXJFbnRyeV90ZXN0X21vZGUoc2VsZiwgZm9sbG93X3N5bWxpbmtzLCBtb2RlX2JpdHMpOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2lzX2RpcihEaXJFbnRyeSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8JHA6RGlyRW50cnkuaXNfZGlyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3Nfa2V5d29yZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBEaXJFbnRyeV9weV90ZXN0X21vZGUoc2VsZiwgZm9sbG93X3N5bWxpbmtzLCBTX0lGRElSKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2lzX2ZpbGUoRGlyRW50cnkgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifCRwOkRpckVudHJ5LmlzX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19rZXl3b3JkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIERpckVudHJ5X3B5X3Rlc3RfbW9kZShzZWxmLCBmb2xsb3dfc3ltbGlua3MsIFNfSUZSRUcpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRGlyRW50cnlfaW5vZGUoRGlyRW50cnkgKnNlbGYpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghc2VsZi0+Z290X2ZpbGVfaW5kZXgpIHsKKyAgICAgICAgd2NoYXJfdCAqcGF0aDsKKyAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0OworCisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOworICAgICAgICBpZiAoIXBhdGgpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAod2luMzJfbHN0YXRfdyhwYXRoLCAmc3RhdCkgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7CisgICAgICAgIH0KKworICAgICAgICBzZWxmLT53aW4zMl9maWxlX2luZGV4ID0gc3RhdC5zdF9pbm87CisgICAgICAgIHNlbGYtPmdvdF9maWxlX2luZGV4ID0gMTsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKKyNlbHNlIC8qIFBPU0lYICovCisjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+ZF9pbm8pOworI2Vsc2UKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmRfaW5vKTsKKyNlbmRpZgorI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9yZXByKERpckVudHJ5ICpzZWxmKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPERpckVudHJ5ICVSPiIsIHNlbGYtPm5hbWUpOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYgRGlyRW50cnlfbWVtYmVyc1tdID0geworICAgIHsibmFtZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihEaXJFbnRyeSwgbmFtZSksIFJFQURPTkxZLAorICAgICAidGhlIGVudHJ5J3MgYmFzZSBmaWxlbmFtZSwgcmVsYXRpdmUgdG8gc2NhbmRpcigpIFwicGF0aFwiIGFyZ3VtZW50In0sCisgICAgeyJwYXRoIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBwYXRoKSwgUkVBRE9OTFksCisgICAgICJ0aGUgZW50cnkncyBmdWxsIHBhdGggbmFtZTsgZXF1aXZhbGVudCB0byBvcy5wYXRoLmpvaW4oc2NhbmRpcl9wYXRoLCBlbnRyeS5uYW1lKSJ9LAorICAgIHtOVUxMfQorfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIERpckVudHJ5X21ldGhvZHNbXSA9IHsKKyAgICB7ImlzX2RpciIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9pc19kaXIsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICJyZXR1cm4gVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBkaXJlY3Rvcnk7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7ImlzX2ZpbGUiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfaXNfZmlsZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgInJldHVybiBUcnVlIGlmIHRoZSBlbnRyeSBpcyBhIGZpbGU7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7ImlzX3N5bWxpbmsiLCAoUHlDRnVuY3Rpb24pRGlyRW50cnlfcHlfaXNfc3ltbGluaywgTUVUSF9OT0FSR1MsCisgICAgICJyZXR1cm4gVHJ1ZSBpZiB0aGUgZW50cnkgaXMgYSBzeW1ib2xpYyBsaW5rOyBjYWNoZWQgcGVyIGVudHJ5IgorICAgIH0sCisgICAgeyJzdGF0IiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X3N0YXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICJyZXR1cm4gc3RhdF9yZXN1bHQgb2JqZWN0IGZvciB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiCisgICAgfSwKKyAgICB7Imlub2RlIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lub2RlLCBNRVRIX05PQVJHUywKKyAgICAgInJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiLAorICAgIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IERpckVudHJ5VHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICBNT0ROQU1FICIuRGlyRW50cnkiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihEaXJFbnRyeSksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpRGlyRW50cnlfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAocmVwcmZ1bmMpRGlyRW50cnlfcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIERpckVudHJ5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgRGlyRW50cnlfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KK307CisKKyNpZmRlZiBNU19XSU5ET1dTCisKK3N0YXRpYyB3Y2hhcl90ICoKK2pvaW5fcGF0aF9maWxlbmFtZVcod2NoYXJfdCAqcGF0aF93aWRlLCB3Y2hhcl90KiBmaWxlbmFtZSkKK3sKKyAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICB3Y2hhcl90ICpyZXN1bHQ7CisgICAgd2NoYXJfdCBjaDsKKworICAgIGlmICghcGF0aF93aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgcGF0aF93aWRlID0gTCIuIjsKKyAgICAgICAgcGF0aF9sZW4gPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aF9sZW4gPSB3Y3NsZW4ocGF0aF93aWRlKTsKKyAgICB9CisKKyAgICAvKiBUaGUgKzEncyBhcmUgZm9yIHRoZSBwYXRoIHNlcGFyYXRvciBhbmQgdGhlIE5VTCAqLworICAgIHNpemUgPSBwYXRoX2xlbiArIDEgKyB3Y3NsZW4oZmlsZW5hbWUpICsgMTsKKyAgICByZXN1bHQgPSBQeU1lbV9OZXcod2NoYXJfdCwgc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHdjc2NweShyZXN1bHQsIHBhdGhfd2lkZSk7CisgICAgaWYgKHBhdGhfbGVuID4gMCkgeworICAgICAgICBjaCA9IHJlc3VsdFtwYXRoX2xlbiAtIDFdOworICAgICAgICBpZiAoY2ggIT0gU0VQICYmIGNoICE9IEFMVFNFUCAmJiBjaCAhPSBMJzonKQorICAgICAgICAgICAgcmVzdWx0W3BhdGhfbGVuKytdID0gU0VQOworICAgICAgICB3Y3NjcHkocmVzdWx0ICsgcGF0aF9sZW4sIGZpbGVuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2Zyb21fZmluZF9kYXRhKHBhdGhfdCAqcGF0aCwgV0lOMzJfRklORF9EQVRBVyAqZGF0YVcpCit7CisgICAgRGlyRW50cnkgKmVudHJ5OworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGZpbGVfaW5mbzsKKyAgICBVTE9ORyByZXBhcnNlX3RhZzsKKyAgICB3Y2hhcl90ICpqb2luZWRfcGF0aDsKKworICAgIGVudHJ5ID0gUHlPYmplY3RfTmV3KERpckVudHJ5LCAmRGlyRW50cnlUeXBlKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbnRyeS0+bmFtZSA9IE5VTEw7CisgICAgZW50cnktPnBhdGggPSBOVUxMOworICAgIGVudHJ5LT5zdGF0ID0gTlVMTDsKKyAgICBlbnRyeS0+bHN0YXQgPSBOVUxMOworICAgIGVudHJ5LT5nb3RfZmlsZV9pbmRleCA9IDA7CisKKyAgICBlbnRyeS0+bmFtZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZGF0YVctPmNGaWxlTmFtZSwgLTEpOworICAgIGlmICghZW50cnktPm5hbWUpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZVcocGF0aC0+d2lkZSwgZGF0YVctPmNGaWxlTmFtZSk7CisgICAgaWYgKCFqb2luZWRfcGF0aCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGVudHJ5LT5wYXRoID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihqb2luZWRfcGF0aCwgLTEpOworICAgIFB5TWVtX0ZyZWUoam9pbmVkX3BhdGgpOworICAgIGlmICghZW50cnktPnBhdGgpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CisgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmZpbGVfaW5mbywgcmVwYXJzZV90YWcsICZlbnRyeS0+d2luMzJfbHN0YXQpOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWVudHJ5OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZW50cnkpOworICAgIHJldHVybiBOVUxMOworfQorCisjZWxzZSAvKiBQT1NJWCAqLworCitzdGF0aWMgY2hhciAqCitqb2luX3BhdGhfZmlsZW5hbWUoY2hhciAqcGF0aF9uYXJyb3csIGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKK3sKKyAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpyZXN1bHQ7CisKKyAgICBpZiAoIXBhdGhfbmFycm93KSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgcGF0aF9uYXJyb3cgPSAiLiI7CisgICAgICAgIHBhdGhfbGVuID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhdGhfbGVuID0gc3RybGVuKHBhdGhfbmFycm93KTsKKyAgICB9CisKKyAgICBpZiAoZmlsZW5hbWVfbGVuID09IC0xKQorICAgICAgICBmaWxlbmFtZV9sZW4gPSBzdHJsZW4oZmlsZW5hbWUpOworCisgICAgLyogVGhlICsxJ3MgYXJlIGZvciB0aGUgcGF0aCBzZXBhcmF0b3IgYW5kIHRoZSBOVUwgKi8KKyAgICBzaXplID0gcGF0aF9sZW4gKyAxICsgZmlsZW5hbWVfbGVuICsgMTsKKyAgICByZXN1bHQgPSBQeU1lbV9OZXcoY2hhciwgc2l6ZSk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHN0cmNweShyZXN1bHQsIHBhdGhfbmFycm93KTsKKyAgICBpZiAocGF0aF9sZW4gPiAwICYmIHJlc3VsdFtwYXRoX2xlbiAtIDFdICE9ICcvJykKKyAgICAgICAgcmVzdWx0W3BhdGhfbGVuKytdID0gJy8nOworICAgIHN0cmNweShyZXN1bHQgKyBwYXRoX2xlbiwgZmlsZW5hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8ocGF0aF90ICpwYXRoLCBjaGFyICpuYW1lLCBQeV9zc2l6ZV90IG5hbWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlub190IGRfaW5vCisjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisgICAgICAgICAgICAgICAgICAgICAgICAgLCB1bnNpZ25lZCBjaGFyIGRfdHlwZQorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgKQoreworICAgIERpckVudHJ5ICplbnRyeTsKKyAgICBjaGFyICpqb2luZWRfcGF0aDsKKworICAgIGVudHJ5ID0gUHlPYmplY3RfTmV3KERpckVudHJ5LCAmRGlyRW50cnlUeXBlKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbnRyeS0+bmFtZSA9IE5VTEw7CisgICAgZW50cnktPnBhdGggPSBOVUxMOworICAgIGVudHJ5LT5zdGF0ID0gTlVMTDsKKyAgICBlbnRyeS0+bHN0YXQgPSBOVUxMOworCisgICAgam9pbmVkX3BhdGggPSBqb2luX3BhdGhfZmlsZW5hbWUocGF0aC0+bmFycm93LCBuYW1lLCBuYW1lX2xlbik7CisgICAgaWYgKCFqb2luZWRfcGF0aCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmICghcGF0aC0+bmFycm93IHx8ICFQeUJ5dGVzX0NoZWNrKHBhdGgtPm9iamVjdCkpIHsKKyAgICAgICAgZW50cnktPm5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShuYW1lLCBuYW1lX2xlbik7CisgICAgICAgIGVudHJ5LT5wYXRoID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChqb2luZWRfcGF0aCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnRyeS0+bmFtZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUobmFtZSwgbmFtZV9sZW4pOworICAgICAgICBlbnRyeS0+cGF0aCA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhqb2luZWRfcGF0aCk7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoam9pbmVkX3BhdGgpOworICAgIGlmICghZW50cnktPm5hbWUgfHwgIWVudHJ5LT5wYXRoKQorICAgICAgICBnb3RvIGVycm9yOworCisjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCisgICAgZW50cnktPmRfdHlwZSA9IGRfdHlwZTsKKyNlbmRpZgorICAgIGVudHJ5LT5kX2lubyA9IGRfaW5vOworCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWVudHJ5OworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGVudHJ5KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2VuZGlmCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBwYXRoX3QgcGF0aDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhhbmRsZTsKKyAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbGVfZGF0YTsKKyAgICBpbnQgZmlyc3RfdGltZTsKKyNlbHNlIC8qIFBPU0lYICovCisgICAgRElSICpkaXJwOworI2VuZGlmCit9IFNjYW5kaXJJdGVyYXRvcjsKKworI2lmZGVmIE1TX1dJTkRPV1MKKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm47CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgRmluZENsb3NlKGl0ZXJhdG9yLT5oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaXRlcmF0b3ItPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2l0ZXJuZXh0KFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgV0lOMzJfRklORF9EQVRBVyAqZmlsZV9kYXRhID0gJml0ZXJhdG9yLT5maWxlX2RhdGE7CisgICAgQk9PTCBzdWNjZXNzOworCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UgKi8KKyAgICBpZiAoaXRlcmF0b3ItPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoIWl0ZXJhdG9yLT5maXJzdF90aW1lKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBzdWNjZXNzID0gRmluZE5leHRGaWxlVyhpdGVyYXRvci0+aGFuZGxlLCBmaWxlX2RhdGEpOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgICAgICAgIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT19NT1JFX0ZJTEVTKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICAgICAgICAgIC8qIE5vIG1vcmUgZmlsZXMgZm91bmQgaW4gZGlyZWN0b3J5LCBzdG9wIGl0ZXJhdGluZyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGl0ZXJhdG9yLT5maXJzdF90aW1lID0gMDsKKworICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KKyAgICAgICAgaWYgKHdjc2NtcChmaWxlX2RhdGEtPmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgorICAgICAgICAgICAgICAgIHdjc2NtcChmaWxlX2RhdGEtPmNGaWxlTmFtZSwgTCIuLiIpICE9IDApCisgICAgICAgICAgICByZXR1cm4gRGlyRW50cnlfZnJvbV9maW5kX2RhdGEoJml0ZXJhdG9yLT5wYXRoLCBmaWxlX2RhdGEpOworCisgICAgICAgIC8qIExvb3AgdGlsbCB3ZSBnZXQgYSBub24tZG90IGRpcmVjdG9yeSBvciBmaW5pc2ggaXRlcmF0aW5nICovCisgICAgfQorCisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKworICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNlbHNlIC8qIFBPU0lYICovCisKK3N0YXRpYyB2b2lkCitTY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICBpZiAoIWl0ZXJhdG9yLT5kaXJwKQorICAgICAgICByZXR1cm47CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgY2xvc2VkaXIoaXRlcmF0b3ItPmRpcnApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaXRlcmF0b3ItPmRpcnAgPSBOVUxMOworICAgIHJldHVybjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9pdGVybmV4dChTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIHN0cnVjdCBkaXJlbnQgKmRpcmVudHA7CisgICAgUHlfc3NpemVfdCBuYW1lX2xlbjsKKyAgICBpbnQgaXNfZG90OworCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UgKi8KKyAgICBpZiAoIWl0ZXJhdG9yLT5kaXJwKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBkaXJlbnRwID0gcmVhZGRpcihpdGVyYXRvci0+ZGlycCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKCFkaXJlbnRwKSB7CisgICAgICAgICAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICAgICAgLyogTm8gbW9yZSBmaWxlcyBmb3VuZCBpbiBkaXJlY3RvcnksIHN0b3AgaXRlcmF0aW5nICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLworICAgICAgICBuYW1lX2xlbiA9IE5BTUxFTihkaXJlbnRwKTsKKyAgICAgICAgaXNfZG90ID0gZGlyZW50cC0+ZF9uYW1lWzBdID09ICcuJyAmJgorICAgICAgICAgICAgICAgICAobmFtZV9sZW4gPT0gMSB8fCAoZGlyZW50cC0+ZF9uYW1lWzFdID09ICcuJyAmJiBuYW1lX2xlbiA9PSAyKSk7CisgICAgICAgIGlmICghaXNfZG90KSB7CisgICAgICAgICAgICByZXR1cm4gRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKCZpdGVyYXRvci0+cGF0aCwgZGlyZW50cC0+ZF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX2xlbiwgZGlyZW50cC0+ZF9pbm8KKyNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBkaXJlbnRwLT5kX3R5cGUKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICB9CisKKyAgICAgICAgLyogTG9vcCB0aWxsIHdlIGdldCBhIG5vbi1kb3QgZGlyZWN0b3J5IG9yIGZpbmlzaCBpdGVyYXRpbmcgKi8KKyAgICB9CisKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworCisgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2VuZGlmCisKK3N0YXRpYyB2b2lkCitTY2FuZGlySXRlcmF0b3JfZGVhbGxvYyhTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisgICAgUHlfWERFQ1JFRihpdGVyYXRvci0+cGF0aC5vYmplY3QpOworICAgIHBhdGhfY2xlYW51cCgmaXRlcmF0b3ItPnBhdGgpOworICAgIFB5X1RZUEUoaXRlcmF0b3IpLT50cF9mcmVlKChQeU9iamVjdCAqKWl0ZXJhdG9yKTsKK30KKworc3RhdGljIFB5VHlwZU9iamVjdCBTY2FuZGlySXRlcmF0b3JUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgIE1PRE5BTUUgIi5TY2FuZGlySXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFNjYW5kaXJJdGVyYXRvciksICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilTY2FuZGlySXRlcmF0b3JfZGVhbGxvYywgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylTY2FuZGlySXRlcmF0b3JfaXRlcm5leHQsIC8qIHRwX2l0ZXJuZXh0ICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NhbmRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcjsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3Y2hhcl90ICpwYXRoX3N0clc7CisjZWxzZQorICAgIGNoYXIgKnBhdGg7CisjZW5kaWYKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfTmV3KFNjYW5kaXJJdGVyYXRvciwgJlNjYW5kaXJJdGVyYXRvclR5cGUpOworICAgIGlmICghaXRlcmF0b3IpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbXNldCgmaXRlcmF0b3ItPnBhdGgsIDAsIHNpemVvZihwYXRoX3QpKTsKKyAgICBpdGVyYXRvci0+cGF0aC5mdW5jdGlvbl9uYW1lID0gInNjYW5kaXIiOworICAgIGl0ZXJhdG9yLT5wYXRoLm51bGxhYmxlID0gMTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpdGVyYXRvci0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisjZWxzZQorICAgIGl0ZXJhdG9yLT5kaXJwID0gTlVMTDsKKyNlbmRpZgorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mOnNjYW5kaXIiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJml0ZXJhdG9yLT5wYXRoKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIHBhdGhfY29udmVydGVyIGRvZXNuJ3Qga2VlcCBwYXRoLm9iamVjdCBhcm91bmQsIHNvIGRvIGl0CisgICAgICAgbWFudWFsbHkgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgaXRlcmF0b3IgaGVyZSAodGhlIHJlZmNvdW50CisgICAgICAgaXMgZGVjcmVtZW50ZWQgaW4gU2NhbmRpckl0ZXJhdG9yX2RlYWxsb2MpCisgICAgKi8KKyAgICBQeV9YSU5DUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGl0ZXJhdG9yLT5wYXRoLm5hcnJvdykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnNjYW5kaXIoKSBkb2Vzbid0IHN1cHBvcnQgYnl0ZXMgcGF0aCBvbiBXaW5kb3dzLCB1c2UgVW5pY29kZSBpbnN0ZWFkIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGl0ZXJhdG9yLT5maXJzdF90aW1lID0gMTsKKworICAgIHBhdGhfc3RyVyA9IGpvaW5fcGF0aF9maWxlbmFtZVcoaXRlcmF0b3ItPnBhdGgud2lkZSwgTCIqLioiKTsKKyAgICBpZiAoIXBhdGhfc3RyVykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+aGFuZGxlID0gRmluZEZpcnN0RmlsZVcocGF0aF9zdHJXLCAmaXRlcmF0b3ItPmZpbGVfZGF0YSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0ZyZWUocGF0aF9zdHJXKTsKKworICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHBhdGhfZXJyb3IoJml0ZXJhdG9yLT5wYXRoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisjZWxzZSAvKiBQT1NJWCAqLworICAgIGlmIChpdGVyYXRvci0+cGF0aC5uYXJyb3cpCisgICAgICAgIHBhdGggPSBpdGVyYXRvci0+cGF0aC5uYXJyb3c7CisgICAgZWxzZQorICAgICAgICBwYXRoID0gIi4iOworCisgICAgZXJybm8gPSAwOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpdGVyYXRvci0+ZGlycCA9IG9wZW5kaXIocGF0aCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghaXRlcmF0b3ItPmRpcnApIHsKKyAgICAgICAgcGF0aF9lcnJvcigmaXRlcmF0b3ItPnBhdGgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0ZXJhdG9yOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiBOVUxMOworfQorCisKKyNpbmNsdWRlICJjbGluaWMvcG9zaXhtb2R1bGUuYy5oIgogCiAvKltjbGluaWMgaW5wdXRdCiBkdW1wIGJ1ZmZlcgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotCi0jaWZuZGVmIE9TX1RUWU5BTUVfTUVUSE9EREVGCi0gICAgI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RUWU5BTUVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVkMDcxYmJjOGY0OWVhMTIgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLwogCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwb3NpeF9tZXRob2RzW10gPSB7CkBAIC0xMTIxNSw3MSArMTIxNzYsMjYgQEAKICAgICBPU19TVEFUX01FVEhPRERFRgogICAgIE9TX0FDQ0VTU19NRVRIT0RERUYKICAgICBPU19UVFlOQU1FX01FVEhPRERFRgotCi0gICAgeyJjaGRpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hkaXJfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0NIRkxBR1MKLSAgICB7ImNoZmxhZ3MiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NoZmxhZ3NfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0NIRkxBR1MgKi8KLSAgICB7ImNobW9kIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaG1vZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaG1vZF9fZG9jX199LAotI2lmZGVmIEhBVkVfRkNITU9ECi0gICAgeyJmY2htb2QiLCAgICAgICAgICBwb3NpeF9mY2htb2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfZmNobW9kX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GQ0hNT0QgKi8KLSNpZmRlZiBIQVZFX0NIT1dOCi0gICAgeyJjaG93biIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hvd24sCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hvd25fX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0NIT1dOICovCi0jaWZkZWYgSEFWRV9MQ0hNT0QKLSAgICB7ImxjaG1vZCIsICAgICAgICAgIHBvc2l4X2xjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sY2htb2RfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0xDSE1PRCAqLwotI2lmZGVmIEhBVkVfRkNIT1dOCi0gICAgeyJmY2hvd24iLCAgICAgICAgICBwb3NpeF9mY2hvd24sIE1FVEhfVkFSQVJHUywgcG9zaXhfZmNob3duX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GQ0hPV04gKi8KLSNpZmRlZiBIQVZFX0xDSEZMQUdTCi0gICAgeyJsY2hmbGFncyIsICAgICAgICBwb3NpeF9sY2hmbGFncywgTUVUSF9WQVJBUkdTLCBwb3NpeF9sY2hmbGFnc19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTENIRkxBR1MgKi8KLSNpZmRlZiBIQVZFX0xDSE9XTgotICAgIHsibGNob3duIiwgICAgICAgICAgcG9zaXhfbGNob3duLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xjaG93bl9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTENIT1dOICovCi0jaWZkZWYgSEFWRV9DSFJPT1QKLSAgICB7ImNocm9vdCIsICAgICAgICAgIHBvc2l4X2Nocm9vdCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaHJvb3RfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfQ1RFUk1JRAotICAgIHsiY3Rlcm1pZCIsICAgICAgICAgcG9zaXhfY3Rlcm1pZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2N0ZXJtaWRfX2RvY19ffSwKLSNlbmRpZgotICAgIHsiZ2V0Y3dkIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2dldGN3ZF91bmljb2RlLAotICAgIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRjd2RfX2RvY19ffSwKLSAgICB7ImdldGN3ZGIiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9nZXRjd2RfYnl0ZXMsCi0gICAgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGN3ZGJfX2RvY19ffSwKLSNpZiBkZWZpbmVkKEhBVkVfTElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsibGluayIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlua19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotICAgIHsibGlzdGRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3RkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdGRpcl9fZG9jX199LAotICAgIHsibHN0YXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xzdGF0LAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xzdGF0X19kb2NfX30sCi0gICAgeyJta2RpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtkaXJfX2RvY19ffSwKLSNpZmRlZiBIQVZFX05JQ0UKLSAgICB7Im5pY2UiLCAgICAgICAgICAgIHBvc2l4X25pY2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfbmljZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfTklDRSAqLwotI2lmZGVmIEhBVkVfR0VUUFJJT1JJVFkKLSAgICB7ImdldHByaW9yaXR5IiwgICAgIHBvc2l4X2dldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHByaW9yaXR5X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRQUklPUklUWSAqLwotI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKLSAgICB7InNldHByaW9yaXR5IiwgICAgIHBvc2l4X3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHByaW9yaXR5X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRQUklPUklUWSAqLworICAgIE9TX0NIRElSX01FVEhPRERFRgorICAgIE9TX0NIRkxBR1NfTUVUSE9EREVGCisgICAgT1NfQ0hNT0RfTUVUSE9EREVGCisgICAgT1NfRkNITU9EX01FVEhPRERFRgorICAgIE9TX0xDSE1PRF9NRVRIT0RERUYKKyAgICBPU19DSE9XTl9NRVRIT0RERUYKKyAgICBPU19GQ0hPV05fTUVUSE9EREVGCisgICAgT1NfTENIT1dOX01FVEhPRERFRgorICAgIE9TX0xDSEZMQUdTX01FVEhPRERFRgorICAgIE9TX0NIUk9PVF9NRVRIT0RERUYKKyAgICBPU19DVEVSTUlEX01FVEhPRERFRgorICAgIE9TX0dFVENXRF9NRVRIT0RERUYKKyAgICBPU19HRVRDV0RCX01FVEhPRERFRgorICAgIE9TX0xJTktfTUVUSE9EREVGCisgICAgT1NfTElTVERJUl9NRVRIT0RERUYKKyAgICBPU19MU1RBVF9NRVRIT0RERUYKKyAgICBPU19NS0RJUl9NRVRIT0RERUYKKyAgICBPU19OSUNFX01FVEhPRERFRgorICAgIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRgorICAgIE9TX1NFVFBSSU9SSVRZX01FVEhPRERFRgogI2lmZGVmIEhBVkVfUkVBRExJTksKICAgICB7InJlYWRsaW5rIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZWFkbGluaywKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCkBAIC0xMTI5MCwzNzYgKzEyMjA2LDE2MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5rX19kb2NfX30sCiAjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKSAqLwotICAgIHsicmVuYW1lIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3JlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZW5hbWVfX2RvY19ffSwKLSAgICB7InJlcGxhY2UiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZXBsYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlcGxhY2VfX2RvY19ffSwKLSAgICB7InJtZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ybWRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ybWRpcl9fZG9jX199LAorICAgIE9TX1JFTkFNRV9NRVRIT0RERUYKKyAgICBPU19SRVBMQUNFX01FVEhPRERFRgorICAgIE9TX1JNRElSX01FVEhPRERFRgogICAgIHsic3RhdF9mbG9hdF90aW1lcyIsIHN0YXRfZmxvYXRfdGltZXMsIE1FVEhfVkFSQVJHUywgc3RhdF9mbG9hdF90aW1lc19fZG9jX199LAotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKQotICAgIHsic3ltbGluayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N5bWxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3ltbGlua19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwotI2lmZGVmIEhBVkVfU1lTVEVNCi0gICAgeyJzeXN0ZW0iLCAgICAgICAgICBwb3NpeF9zeXN0ZW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc3lzdGVtX19kb2NfX30sCi0jZW5kaWYKLSAgICB7InVtYXNrIiwgICAgICAgICAgIHBvc2l4X3VtYXNrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3VtYXNrX19kb2NfX30sCi0jaWZkZWYgSEFWRV9VTkFNRQotICAgIHsidW5hbWUiLCAgICAgICAgICAgcG9zaXhfdW5hbWUsIE1FVEhfTk9BUkdTLCBwb3NpeF91bmFtZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KLSAgICB7InVubGluayIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdW5saW5rX19kb2NfX30sCi0gICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdW5saW5rLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbW92ZV9fZG9jX199LAotICAgIHsidXRpbWUiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3V0aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcG9zaXhfdXRpbWVfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1RJTUVTCi0gICAgeyJ0aW1lcyIsICAgICAgICAgICBwb3NpeF90aW1lcywgTUVUSF9OT0FSR1MsIHBvc2l4X3RpbWVzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9USU1FUyAqLwotICAgIHsiX2V4aXQiLCAgICAgICAgICAgcG9zaXhfX2V4aXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2V4aXRfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0VYRUNWCi0gICAgeyJleGVjdiIsICAgICAgICAgICBwb3NpeF9leGVjdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9leGVjdl9fZG9jX199LAotICAgIHsiZXhlY3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2V4ZWN2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9leGVjdmVfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0VYRUNWICovCi0jaWZkZWYgSEFWRV9TUEFXTlYKLSAgICB7InNwYXdudiIsICAgICAgICAgIHBvc2l4X3NwYXdudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZfX2RvY19ffSwKLSAgICB7InNwYXdudmUiLCAgICAgICAgIHBvc2l4X3NwYXdudmUsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3Bhd252ZV9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU1BBV05WICovCi0jaWZkZWYgSEFWRV9GT1JLMQotICAgIHsiZm9yazEiLCAgICAgICBwb3NpeF9mb3JrMSwgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmsxX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GT1JLMSAqLwotI2lmZGVmIEhBVkVfRk9SSwotICAgIHsiZm9yayIsICAgICAgICAgICAgcG9zaXhfZm9yaywgTUVUSF9OT0FSR1MsIHBvc2l4X2ZvcmtfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0ZPUksgKi8KLSNpZmRlZiBIQVZFX1NDSEVEX0gKLSNpZmRlZiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVgKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKLSAgICB7InNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KLSAgICB7InNjaGVkX2dldHBhcmFtIiwgcG9zaXhfc2NoZWRfZ2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCi0gICAgeyJzY2hlZF9nZXRzY2hlZHVsZXIiLCBwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAotICAgIHsic2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgcG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQotICAgIHsic2NoZWRfc2V0cGFyYW0iLCBwb3NpeF9zY2hlZF9zZXRwYXJhbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRwYXJhbV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TQ0hFRF9TRVRTQ0hFRFVMRVIKLSAgICB7InNjaGVkX3NldHNjaGVkdWxlciIsIHBvc2l4X3NjaGVkX3NldHNjaGVkdWxlciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXJfX2RvY19ffSwKLSNlbmRpZgotICAgIHsic2NoZWRfeWllbGQiLCAgICAgcG9zaXhfc2NoZWRfeWllbGQsIE1FVEhfTk9BUkdTLCBwb3NpeF9zY2hlZF95aWVsZF9fZG9jX199LAotI2lmZGVmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKLSAgICB7InNjaGVkX3NldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHlfX2RvY19ffSwKLSAgICB7InNjaGVkX2dldGFmZmluaXR5IiwgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHksIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19ffSwKLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfU0NIRURfSCAqLwotI2lmIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfX0dFVFBUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKQotICAgIHsib3BlbnB0eSIsICAgICAgICAgcG9zaXhfb3BlbnB0eSwgTUVUSF9OT0FSR1MsIHBvc2l4X29wZW5wdHlfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX09QRU5QVFkgfHwgSEFWRV9fR0VUUFRZIHx8IEhBVkVfREVWX1BUTVggKi8KLSNpZmRlZiBIQVZFX0ZPUktQVFkKLSAgICB7ImZvcmtwdHkiLCAgICAgICAgIHBvc2l4X2ZvcmtwdHksIE1FVEhfTk9BUkdTLCBwb3NpeF9mb3JrcHR5X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9GT1JLUFRZICovCi0jaWZkZWYgSEFWRV9HRVRFR0lECi0gICAgeyJnZXRlZ2lkIiwgICAgICAgICBwb3NpeF9nZXRlZ2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0ZWdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VURUdJRCAqLwotI2lmZGVmIEhBVkVfR0VURVVJRAotICAgIHsiZ2V0ZXVpZCIsICAgICAgICAgcG9zaXhfZ2V0ZXVpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGV1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVEVVSUQgKi8KLSNpZmRlZiBIQVZFX0dFVEdJRAotICAgIHsiZ2V0Z2lkIiwgICAgICAgICAgcG9zaXhfZ2V0Z2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KKyAgICBPU19TWU1MSU5LX01FVEhPRERFRgorICAgIE9TX1NZU1RFTV9NRVRIT0RERUYKKyAgICBPU19VTUFTS19NRVRIT0RERUYKKyAgICBPU19VTkFNRV9NRVRIT0RERUYKKyAgICBPU19VTkxJTktfTUVUSE9EREVGCisgICAgT1NfUkVNT1ZFX01FVEhPRERFRgorICAgIE9TX1VUSU1FX01FVEhPRERFRgorICAgIE9TX1RJTUVTX01FVEhPRERFRgorICAgIE9TX19FWElUX01FVEhPRERFRgorICAgIE9TX0VYRUNWX01FVEhPRERFRgorICAgIE9TX0VYRUNWRV9NRVRIT0RERUYKKyAgICBPU19TUEFXTlZfTUVUSE9EREVGCisgICAgT1NfU1BBV05WRV9NRVRIT0RERUYKKyAgICBPU19GT1JLMV9NRVRIT0RERUYKKyAgICBPU19GT1JLX01FVEhPRERFRgorICAgIE9TX1NDSEVEX0dFVF9QUklPUklUWV9NQVhfTUVUSE9EREVGCisgICAgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRQQVJBTV9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRTQ0hFRFVMRVJfTUVUSE9EREVGCisgICAgT1NfU0NIRURfUlJfR0VUX0lOVEVSVkFMX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1NFVFBBUkFNX01FVEhPRERFRgorICAgIE9TX1NDSEVEX1NFVFNDSEVEVUxFUl9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9ZSUVMRF9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9TRVRBRkZJTklUWV9NRVRIT0RERUYKKyAgICBPU19TQ0hFRF9HRVRBRkZJTklUWV9NRVRIT0RERUYKKyAgICBPU19PUEVOUFRZX01FVEhPRERFRgorICAgIE9TX0ZPUktQVFlfTUVUSE9EREVGCisgICAgT1NfR0VURUdJRF9NRVRIT0RERUYKKyAgICBPU19HRVRFVUlEX01FVEhPRERFRgorICAgIE9TX0dFVEdJRF9NRVRIT0RERUYKICNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAogICAgIHsiZ2V0Z3JvdXBsaXN0IiwgICAgcG9zaXhfZ2V0Z3JvdXBsaXN0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX199LAogI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRHUk9VUFMKLSAgICB7ImdldGdyb3VwcyIsICAgICAgIHBvc2l4X2dldGdyb3VwcywgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGdyb3Vwc19fZG9jX199LAotI2VuZGlmCi0gICAgeyJnZXRwaWQiLCAgICAgICAgICBwb3NpeF9nZXRwaWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRwaWRfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0dFVFBHUlAKLSAgICB7ImdldHBncnAiLCAgICAgICAgIHBvc2l4X2dldHBncnAsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRwZ3JwX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9HRVRQR1JQICovCi0jaWZkZWYgSEFWRV9HRVRQUElECi0gICAgeyJnZXRwcGlkIiwgICAgICAgICBwb3NpeF9nZXRwcGlkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cHBpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUUFBJRCAqLwotI2lmZGVmIEhBVkVfR0VUVUlECi0gICAgeyJnZXR1aWQiLCAgICAgICAgICBwb3NpeF9nZXR1aWQsIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXR1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFVJRCAqLwotI2lmZGVmIEhBVkVfR0VUTE9HSU4KLSAgICB7ImdldGxvZ2luIiwgICAgICAgIHBvc2l4X2dldGxvZ2luLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0bG9naW5fX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfS0lMTAotICAgIHsia2lsbCIsICAgICAgICAgICAgcG9zaXhfa2lsbCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9raWxsX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9LSUxMICovCi0jaWZkZWYgSEFWRV9LSUxMUEcKLSAgICB7ImtpbGxwZyIsICAgICAgICAgIHBvc2l4X2tpbGxwZywgTUVUSF9WQVJBUkdTLCBwb3NpeF9raWxscGdfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0tJTExQRyAqLwotI2lmZGVmIEhBVkVfUExPQ0sKLSAgICB7InBsb2NrIiwgICAgICAgICAgIHBvc2l4X3Bsb2NrLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Bsb2NrX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9QTE9DSyAqLworICAgIE9TX0dFVEdST1VQU19NRVRIT0RERUYKKyAgICBPU19HRVRQSURfTUVUSE9EREVGCisgICAgT1NfR0VUUEdSUF9NRVRIT0RERUYKKyAgICBPU19HRVRQUElEX01FVEhPRERFRgorICAgIE9TX0dFVFVJRF9NRVRIT0RERUYKKyAgICBPU19HRVRMT0dJTl9NRVRIT0RERUYKKyAgICBPU19LSUxMX01FVEhPRERFRgorICAgIE9TX0tJTExQR19NRVRIT0RERUYKKyAgICBPU19QTE9DS19NRVRIT0RERUYKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCi0gICAgeyJraWxsIiwgICAgd2luMzJfa2lsbCwgTUVUSF9WQVJBUkdTLCB3aW4zMl9raWxsX19kb2NfX30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX1NFVFVJRAotICAgIHsic2V0dWlkIiwgICAgICAgICAgcG9zaXhfc2V0dWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHVpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUVUlEICovCi0jaWZkZWYgSEFWRV9TRVRFVUlECi0gICAgeyJzZXRldWlkIiwgICAgICAgICBwb3NpeF9zZXRldWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldGV1aWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVEVVSUQgKi8KLSNpZmRlZiBIQVZFX1NFVEVHSUQKLSAgICB7InNldGVnaWQiLCAgICAgICAgIHBvc2l4X3NldGVnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0ZWdpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VURUdJRCAqLwotI2lmZGVmIEhBVkVfU0VUUkVVSUQKLSAgICB7InNldHJldWlkIiwgICAgICAgIHBvc2l4X3NldHJldWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHJldWlkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRSRVVJRCAqLwotI2lmZGVmIEhBVkVfU0VUUkVHSUQKLSAgICB7InNldHJlZ2lkIiwgICAgICAgIHBvc2l4X3NldHJlZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHJlZ2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRSRUdJRCAqLwotI2lmZGVmIEhBVkVfU0VUR0lECi0gICAgeyJzZXRnaWQiLCAgICAgICAgICBwb3NpeF9zZXRnaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0Z2lkX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRHSUQgKi8KLSNpZmRlZiBIQVZFX1NFVEdST1VQUwotICAgIHsic2V0Z3JvdXBzIiwgICAgICAgcG9zaXhfc2V0Z3JvdXBzLCBNRVRIX08sIHBvc2l4X3NldGdyb3Vwc19fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUR1JPVVBTICovCisgICAgT1NfU0VUVUlEX01FVEhPRERFRgorICAgIE9TX1NFVEVVSURfTUVUSE9EREVGCisgICAgT1NfU0VUUkVVSURfTUVUSE9EREVGCisgICAgT1NfU0VUR0lEX01FVEhPRERFRgorICAgIE9TX1NFVEVHSURfTUVUSE9EREVGCisgICAgT1NfU0VUUkVHSURfTUVUSE9EREVGCisgICAgT1NfU0VUR1JPVVBTX01FVEhPRERFRgogI2lmZGVmIEhBVkVfSU5JVEdST1VQUwogICAgIHsiaW5pdGdyb3VwcyIsICAgICAgcG9zaXhfaW5pdGdyb3VwcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9pbml0Z3JvdXBzX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9JTklUR1JPVVBTICovCi0jaWZkZWYgSEFWRV9HRVRQR0lECi0gICAgeyJnZXRwZ2lkIiwgICAgICAgICBwb3NpeF9nZXRwZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHBnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX0dFVFBHSUQgKi8KLSNpZmRlZiBIQVZFX1NFVFBHUlAKLSAgICB7InNldHBncnAiLCAgICAgICAgIHBvc2l4X3NldHBncnAsIE1FVEhfTk9BUkdTLCBwb3NpeF9zZXRwZ3JwX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9TRVRQR1JQICovCi0jaWZkZWYgSEFWRV9XQUlUCi0gICAgeyJ3YWl0IiwgICAgICAgICAgICBwb3NpeF93YWl0LCBNRVRIX05PQVJHUywgcG9zaXhfd2FpdF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfV0FJVCAqLwotI2lmZGVmIEhBVkVfV0FJVDMKLSAgICB7IndhaXQzIiwgICAgICAgICAgIHBvc2l4X3dhaXQzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXQzX19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9XQUlUMyAqLwotI2lmZGVmIEhBVkVfV0FJVDQKLSAgICB7IndhaXQ0IiwgICAgICAgICAgIHBvc2l4X3dhaXQ0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXQ0X19kb2NfX30sCi0jZW5kaWYgLyogSEFWRV9XQUlUNCAqLwotI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKLSAgICB7IndhaXRpZCIsICAgICAgICAgIHBvc2l4X3dhaXRpZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF93YWl0aWRfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9XQUlUUElEKSB8fCBkZWZpbmVkKEhBVkVfQ1dBSVQpCi0gICAgeyJ3YWl0cGlkIiwgICAgICAgICBwb3NpeF93YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRwaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1dBSVRQSUQgKi8KLSNpZmRlZiBIQVZFX0dFVFNJRAotICAgIHsiZ2V0c2lkIiwgICAgICAgICAgcG9zaXhfZ2V0c2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHNpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfR0VUU0lEICovCi0jaWZkZWYgSEFWRV9TRVRTSUQKLSAgICB7InNldHNpZCIsICAgICAgICAgIHBvc2l4X3NldHNpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X3NldHNpZF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfU0VUU0lEICovCi0jaWZkZWYgSEFWRV9TRVRQR0lECi0gICAgeyJzZXRwZ2lkIiwgICAgICAgICBwb3NpeF9zZXRwZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHBnaWRfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1NFVFBHSUQgKi8KLSNpZmRlZiBIQVZFX1RDR0VUUEdSUAotICAgIHsidGNnZXRwZ3JwIiwgICAgICAgcG9zaXhfdGNnZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3RjZ2V0cGdycF9fZG9jX199LAotI2VuZGlmIC8qIEhBVkVfVENHRVRQR1JQICovCi0jaWZkZWYgSEFWRV9UQ1NFVFBHUlAKLSAgICB7InRjc2V0cGdycCIsICAgICAgIHBvc2l4X3Rjc2V0cGdycCwgTUVUSF9WQVJBUkdTLCBwb3NpeF90Y3NldHBncnBfX2RvY19ffSwKLSNlbmRpZiAvKiBIQVZFX1RDU0VUUEdSUCAqLwotICAgIHsib3BlbiIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X29wZW4sXAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X29wZW5fX2RvY19ffSwKLSAgICB7ImNsb3NlIiwgICAgICAgICAgIHBvc2l4X2Nsb3NlXywgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZV9fZG9jX199LAotICAgIHsiY2xvc2VyYW5nZSIsICAgICAgcG9zaXhfY2xvc2VyYW5nZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZXJhbmdlX19kb2NfX30sCi0gICAgeyJkZXZpY2VfZW5jb2RpbmciLCBkZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHUywgZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCi0gICAgeyJkdXAiLCAgICAgICAgICAgICBwb3NpeF9kdXAsIE1FVEhfVkFSQVJHUywgcG9zaXhfZHVwX19kb2NfX30sCi0gICAgeyJkdXAyIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZHVwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHBvc2l4X2R1cDJfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0xPQ0tGCi0gICAgeyJsb2NrZiIsICAgICAgICAgICBwb3NpeF9sb2NrZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sb2NrZl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJsc2VlayIsICAgICAgICAgICBwb3NpeF9sc2VlaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9sc2Vla19fZG9jX199LAotICAgIHsicmVhZCIsICAgICAgICAgICAgcG9zaXhfcmVhZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkX19kb2NfX30sCi0jaWZkZWYgSEFWRV9SRUFEVgotICAgIHsicmVhZHYiLCAgICAgICAgICAgcG9zaXhfcmVhZHYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZHZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUFJFQUQKLSAgICB7InByZWFkIiwgICAgICAgICAgIHBvc2l4X3ByZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3ByZWFkX19kb2NfX30sCi0jZW5kaWYKLSAgICB7IndyaXRlIiwgICAgICAgICAgIHBvc2l4X3dyaXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRlX19kb2NfX30sCi0jaWZkZWYgSEFWRV9XUklURVYKLSAgICB7IndyaXRldiIsICAgICAgICAgIHBvc2l4X3dyaXRldiwgTUVUSF9WQVJBUkdTLCBwb3NpeF93cml0ZXZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUFdSSVRFCi0gICAgeyJwd3JpdGUiLCAgICAgICAgICBwb3NpeF9wd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHdyaXRlX19kb2NfX30sCi0jZW5kaWYKKyAgICBPU19HRVRQR0lEX01FVEhPRERFRgorICAgIE9TX1NFVFBHUlBfTUVUSE9EREVGCisgICAgT1NfV0FJVF9NRVRIT0RERUYKKyAgICBPU19XQUlUM19NRVRIT0RERUYKKyAgICBPU19XQUlUNF9NRVRIT0RERUYKKyAgICBPU19XQUlUSURfTUVUSE9EREVGCisgICAgT1NfV0FJVFBJRF9NRVRIT0RERUYKKyAgICBPU19HRVRTSURfTUVUSE9EREVGCisgICAgT1NfU0VUU0lEX01FVEhPRERFRgorICAgIE9TX1NFVFBHSURfTUVUSE9EREVGCisgICAgT1NfVENHRVRQR1JQX01FVEhPRERFRgorICAgIE9TX1RDU0VUUEdSUF9NRVRIT0RERUYKKyAgICBPU19PUEVOX01FVEhPRERFRgorICAgIE9TX0NMT1NFX01FVEhPRERFRgorICAgIE9TX0NMT1NFUkFOR0VfTUVUSE9EREVGCisgICAgT1NfREVWSUNFX0VOQ09ESU5HX01FVEhPRERFRgorICAgIE9TX0RVUF9NRVRIT0RERUYKKyAgICBPU19EVVAyX01FVEhPRERFRgorICAgIE9TX0xPQ0tGX01FVEhPRERFRgorICAgIE9TX0xTRUVLX01FVEhPRERFRgorICAgIE9TX1JFQURfTUVUSE9EREVGCisgICAgT1NfUkVBRFZfTUVUSE9EREVGCisgICAgT1NfUFJFQURfTUVUSE9EREVGCisgICAgT1NfV1JJVEVfTUVUSE9EREVGCisgICAgT1NfV1JJVEVWX01FVEhPRERFRgorICAgIE9TX1BXUklURV9NRVRIT0RERUYKICNpZmRlZiBIQVZFX1NFTkRGSUxFCiAgICAgeyJzZW5kZmlsZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2VuZGZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2VuZGZpbGVfX2RvY19ffSwKICNlbmRpZgotICAgIHsiZnN0YXQiLCAgICAgICAgICAgcG9zaXhfZnN0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXRfX2RvY19ffSwKLSAgICB7ImlzYXR0eSIsICAgICAgICAgIHBvc2l4X2lzYXR0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9pc2F0dHlfX2RvY19ffSwKLSNpZmRlZiBIQVZFX1BJUEUKLSAgICB7InBpcGUiLCAgICAgICAgICAgIHBvc2l4X3BpcGUsIE1FVEhfTk9BUkdTLCBwb3NpeF9waXBlX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1BJUEUyCi0gICAgeyJwaXBlMiIsICAgICAgICAgICBwb3NpeF9waXBlMiwgTUVUSF9PLCBwb3NpeF9waXBlMl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9NS0ZJRk8KLSAgICB7Im1rZmlmbyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2ZpZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtmaWZvX19kb2NfX30sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQotICAgIHsibWtub2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X21rbm9kLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X21rbm9kX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0RFVklDRV9NQUNST1MKLSAgICB7Im1ham9yIiwgICAgICAgICAgIHBvc2l4X21ham9yLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X21ham9yX19kb2NfX30sCi0gICAgeyJtaW5vciIsICAgICAgICAgICBwb3NpeF9taW5vciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9taW5vcl9fZG9jX199LAotICAgIHsibWFrZWRldiIsICAgICAgICAgcG9zaXhfbWFrZWRldiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9tYWtlZGV2X19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZUUlVOQ0FURQotICAgIHsiZnRydW5jYXRlIiwgICAgICAgcG9zaXhfZnRydW5jYXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Z0cnVuY2F0ZV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9UUlVOQ0FURQotICAgIHsidHJ1bmNhdGUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3RydW5jYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3RydW5jYXRlX19kb2NfX30sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFMTE9DQVRFKSAmJiAhZGVmaW5lZChQT1NJWF9GQURWSVNFX0FJWF9CVUcpCi0gICAgeyJwb3NpeF9mYWxsb2NhdGUiLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfX30sCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfUE9TSVhfRkFEVklTRSkgJiYgIWRlZmluZWQoUE9TSVhfRkFEVklTRV9BSVhfQlVHKQotICAgIHsicG9zaXhfZmFkdmlzZSIsICAgcG9zaXhfcG9zaXhfZmFkdmlzZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1BVVEVOVgotICAgIHsicHV0ZW52IiwgICAgICAgICAgcG9zaXhfcHV0ZW52LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3B1dGVudl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9VTlNFVEVOVgotICAgIHsidW5zZXRlbnYiLCAgICAgICAgcG9zaXhfdW5zZXRlbnYsIE1FVEhfVkFSQVJHUywgcG9zaXhfdW5zZXRlbnZfX2RvY19ffSwKLSNlbmRpZgotICAgIHsic3RyZXJyb3IiLCAgICAgICAgcG9zaXhfc3RyZXJyb3IsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3RyZXJyb3JfX2RvY19ffSwKLSNpZmRlZiBIQVZFX0ZDSERJUgotICAgIHsiZmNoZGlyIiwgICAgICAgICAgcG9zaXhfZmNoZGlyLCBNRVRIX08sIHBvc2l4X2ZjaGRpcl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9GU1lOQwotICAgIHsiZnN5bmMiLCAgICAgICBwb3NpeF9mc3luYywgTUVUSF9PLCBwb3NpeF9mc3luY19fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWU5DCi0gICAgeyJzeW5jIiwgICAgICAgIHBvc2l4X3N5bmMsIE1FVEhfTk9BUkdTLCBwb3NpeF9zeW5jX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX0ZEQVRBU1lOQwotICAgIHsiZmRhdGFzeW5jIiwgICBwb3NpeF9mZGF0YXN5bmMsICBNRVRIX08sIHBvc2l4X2ZkYXRhc3luY19fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfV0FJVF9ICi0jaWZkZWYgV0NPUkVEVU1QCi0gICAgeyJXQ09SRURVTVAiLCAgICAgICBwb3NpeF9XQ09SRURVTVAsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0NPUkVEVU1QX19kb2NfX30sCi0jZW5kaWYgLyogV0NPUkVEVU1QICovCi0jaWZkZWYgV0lGQ09OVElOVUVECi0gICAgeyJXSUZDT05USU5VRUQiLHBvc2l4X1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9XSUZDT05USU5VRURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZDT05USU5VRUQgKi8KLSNpZmRlZiBXSUZTVE9QUEVECi0gICAgeyJXSUZTVE9QUEVEIiwgICAgICBwb3NpeF9XSUZTVE9QUEVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRlNUT1BQRURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZTVE9QUEVEICovCi0jaWZkZWYgV0lGU0lHTkFMRUQKLSAgICB7IldJRlNJR05BTEVEIiwgICAgIHBvc2l4X1dJRlNJR05BTEVELCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dJRlNJR05BTEVEX19kb2NfX30sCi0jZW5kaWYgLyogV0lGU0lHTkFMRUQgKi8KLSNpZmRlZiBXSUZFWElURUQKLSAgICB7IldJRkVYSVRFRCIsICAgICAgIHBvc2l4X1dJRkVYSVRFRCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9XSUZFWElURURfX2RvY19ffSwKLSNlbmRpZiAvKiBXSUZFWElURUQgKi8KLSNpZmRlZiBXRVhJVFNUQVRVUwotICAgIHsiV0VYSVRTVEFUVVMiLCAgICAgcG9zaXhfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHUywgcG9zaXhfV0VYSVRTVEFUVVNfX2RvY19ffSwKLSNlbmRpZiAvKiBXRVhJVFNUQVRVUyAqLwotI2lmZGVmIFdURVJNU0lHCi0gICAgeyJXVEVSTVNJRyIsICAgICAgICBwb3NpeF9XVEVSTVNJRywgTUVUSF9WQVJBUkdTLCBwb3NpeF9XVEVSTVNJR19fZG9jX199LAotI2VuZGlmIC8qIFdURVJNU0lHICovCi0jaWZkZWYgV1NUT1BTSUcKLSAgICB7IldTVE9QU0lHIiwgICAgICAgIHBvc2l4X1dTVE9QU0lHLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X1dTVE9QU0lHX19kb2NfX30sCi0jZW5kaWYgLyogV1NUT1BTSUcgKi8KLSNlbmRpZiAvKiBIQVZFX1NZU19XQUlUX0ggKi8KLSNpZiBkZWZpbmVkKEhBVkVfRlNUQVRWRlMpICYmIGRlZmluZWQoSEFWRV9TWVNfU1RBVFZGU19IKQotICAgIHsiZnN0YXR2ZnMiLCAgICAgICAgcG9zaXhfZnN0YXR2ZnMsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXR2ZnNfX2RvY19ffSwKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkKLSAgICB7InN0YXR2ZnMiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zdGF0dmZzLAotICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N0YXR2ZnNfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfQ09ORlNUUgotICAgIHsiY29uZnN0ciIsICAgICAgICAgcG9zaXhfY29uZnN0ciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jb25mc3RyX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU0NPTkYKLSAgICB7InN5c2NvbmYiLCAgICAgICAgIHBvc2l4X3N5c2NvbmYsIE1FVEhfVkFSQVJHUywgcG9zaXhfc3lzY29uZl9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9GUEFUSENPTkYKLSAgICB7ImZwYXRoY29uZiIsICAgICAgIHBvc2l4X2ZwYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mcGF0aGNvbmZfX2RvY19ffSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUEFUSENPTkYKLSAgICB7InBhdGhjb25mIiwgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9wYXRoY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9wYXRoY29uZl9fZG9jX199LAotI2VuZGlmCi0gICAgeyJhYm9ydCIsICAgICAgICAgICBwb3NpeF9hYm9ydCwgTUVUSF9OT0FSR1MsIHBvc2l4X2Fib3J0X19kb2NfX30sCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHsiX2dldGZ1bGxwYXRobmFtZSIsICAgICAgICBwb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAotICAgIHsiX2dldGZpbmFscGF0aG5hbWUiLCAgICAgICBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKLSAgICB7Il9pc2RpciIsICAgICAgICAgICAgICAgICAgcG9zaXhfX2lzZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19pc2Rpcl9fZG9jX199LAotICAgIHsiX2dldGRpc2t1c2FnZSIsICAgICAgICAgICB3aW4zMl9fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKLSAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsICAgICAgcG9zaXhfX2dldHZvbHVtZXBhdGhuYW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRMT0FEQVZHCi0gICAgeyJnZXRsb2FkYXZnIiwgICAgICBwb3NpeF9nZXRsb2FkYXZnLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0bG9hZGF2Z19fZG9jX199LAotI2VuZGlmCi0gICAgeyJ1cmFuZG9tIiwgICAgICAgICBwb3NpeF91cmFuZG9tLCAgIE1FVEhfVkFSQVJHUywgcG9zaXhfdXJhbmRvbV9fZG9jX199LAotI2lmZGVmIEhBVkVfU0VUUkVTVUlECi0gICAgeyJzZXRyZXN1aWQiLCAgICAgICBwb3NpeF9zZXRyZXN1aWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2V0cmVzdWlkX19kb2NfX30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NFVFJFU0dJRAotICAgIHsic2V0cmVzZ2lkIiwgICAgICAgcG9zaXhfc2V0cmVzZ2lkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHJlc2dpZF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRSRVNVSUQKLSAgICB7ImdldHJlc3VpZCIsICAgICAgIHBvc2l4X2dldHJlc3VpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHJlc3VpZF9fZG9jX199LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9HRVRSRVNHSUQKLSAgICB7ImdldHJlc2dpZCIsICAgICAgIHBvc2l4X2dldHJlc2dpZCwgTUVUSF9OT0FSR1MsIHBvc2l4X2dldHJlc2dpZF9fZG9jX199LAotI2VuZGlmCisgICAgT1NfRlNUQVRfTUVUSE9EREVGCisgICAgT1NfSVNBVFRZX01FVEhPRERFRgorICAgIE9TX1BJUEVfTUVUSE9EREVGCisgICAgT1NfUElQRTJfTUVUSE9EREVGCisgICAgT1NfTUtGSUZPX01FVEhPRERFRgorICAgIE9TX01LTk9EX01FVEhPRERFRgorICAgIE9TX01BSk9SX01FVEhPRERFRgorICAgIE9TX01JTk9SX01FVEhPRERFRgorICAgIE9TX01BS0VERVZfTUVUSE9EREVGCisgICAgT1NfRlRSVU5DQVRFX01FVEhPRERFRgorICAgIE9TX1RSVU5DQVRFX01FVEhPRERFRgorICAgIE9TX1BPU0lYX0ZBTExPQ0FURV9NRVRIT0RERUYKKyAgICBPU19QT1NJWF9GQURWSVNFX01FVEhPRERFRgorICAgIE9TX1BVVEVOVl9NRVRIT0RERUYKKyAgICBPU19VTlNFVEVOVl9NRVRIT0RERUYKKyAgICBPU19TVFJFUlJPUl9NRVRIT0RERUYKKyAgICBPU19GQ0hESVJfTUVUSE9EREVGCisgICAgT1NfRlNZTkNfTUVUSE9EREVGCisgICAgT1NfU1lOQ19NRVRIT0RERUYKKyAgICBPU19GREFUQVNZTkNfTUVUSE9EREVGCisgICAgT1NfV0NPUkVEVU1QX01FVEhPRERFRgorICAgIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYKKyAgICBPU19XSUZTVE9QUEVEX01FVEhPRERFRgorICAgIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRgorICAgIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYKKyAgICBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYKKyAgICBPU19XVEVSTVNJR19NRVRIT0RERUYKKyAgICBPU19XU1RPUFNJR19NRVRIT0RERUYKKyAgICBPU19GU1RBVFZGU19NRVRIT0RERUYKKyAgICBPU19TVEFUVkZTX01FVEhPRERFRgorICAgIE9TX0NPTkZTVFJfTUVUSE9EREVGCisgICAgT1NfU1lTQ09ORl9NRVRIT0RERUYKKyAgICBPU19GUEFUSENPTkZfTUVUSE9EREVGCisgICAgT1NfUEFUSENPTkZfTUVUSE9EREVGCisgICAgT1NfQUJPUlRfTUVUSE9EREVGCisgICAgT1NfX0dFVEZVTExQQVRITkFNRV9NRVRIT0RERUYKKyAgICBPU19fSVNESVJfTUVUSE9EREVGCisgICAgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYKKyAgICBPU19fR0VURklOQUxQQVRITkFNRV9NRVRIT0RERUYKKyAgICBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGCisgICAgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKKyAgICBPU19VUkFORE9NX01FVEhPRERFRgorICAgIE9TX1NFVFJFU1VJRF9NRVRIT0RERUYKKyAgICBPU19TRVRSRVNHSURfTUVUSE9EREVGCisgICAgT1NfR0VUUkVTVUlEX01FVEhPRERFRgorICAgIE9TX0dFVFJFU0dJRF9NRVRIT0RERUYKIAotI2lmZGVmIFVTRV9YQVRUUlMKLSAgICB7InNldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NldHhhdHRyLAotICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICBwb3NpeF9zZXR4YXR0cl9fZG9jX199LAotICAgIHsiZ2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0eGF0dHIsCi0gICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHBvc2l4X2dldHhhdHRyX19kb2NfX30sCi0gICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9yZW1vdmV4YXR0ciwKLSAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZleGF0dHJfX2RvY19ffSwKLSAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9saXN0eGF0dHIsCi0gICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICAgICAgICAgICAgIHBvc2l4X2xpc3R4YXR0cl9fZG9jX199LAotI2VuZGlmCisgICAgT1NfR0VUWEFUVFJfTUVUSE9EREVGCisgICAgT1NfU0VUWEFUVFJfTUVUSE9EREVGCisgICAgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGCisgICAgT1NfTElTVFhBVFRSX01FVEhPRERFRgorCiAjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQogICAgIHsiZ2V0X3Rlcm1pbmFsX3NpemUiLCBnZXRfdGVybWluYWxfc2l6ZSwgTUVUSF9WQVJBUkdTLCB0ZXJtc2l6ZV9fZG9jX199LAogI2VuZGlmCi0gICAgeyJjcHVfY291bnQiLCAoUHlDRnVuY3Rpb24pcG9zaXhfY3B1X2NvdW50LAotICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIHBvc2l4X2NwdV9jb3VudF9fZG9jX199LAotICAgIHsiZ2V0X2luaGVyaXRhYmxlIiwgcG9zaXhfZ2V0X2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIGdldF9pbmhlcml0YWJsZV9fZG9jX199LAotICAgIHsic2V0X2luaGVyaXRhYmxlIiwgcG9zaXhfc2V0X2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIHNldF9pbmhlcml0YWJsZV9fZG9jX199LAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB7ImdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCBwb3NpeF9nZXRfaGFuZGxlX2luaGVyaXRhYmxlLAotICAgICBNRVRIX1ZBUkFSR1MsIGdldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKLSAgICB7InNldF9oYW5kbGVfaW5oZXJpdGFibGUiLCBwb3NpeF9zZXRfaGFuZGxlX2luaGVyaXRhYmxlLAotICAgICBNRVRIX1ZBUkFSR1MsIHNldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKKyAgICBPU19DUFVfQ09VTlRfTUVUSE9EREVGCisgICAgT1NfR0VUX0lOSEVSSVRBQkxFX01FVEhPRERFRgorICAgIE9TX1NFVF9JTkhFUklUQUJMRV9NRVRIT0RERUYKKyAgICBPU19HRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgorICAgIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICB7ImdldF9ibG9ja2luZyIsIHBvc2l4X2dldF9ibG9ja2luZywgTUVUSF9WQVJBUkdTLCBnZXRfYmxvY2tpbmdfX2RvY19ffSwKKyAgICB7InNldF9ibG9ja2luZyIsIHBvc2l4X3NldF9ibG9ja2luZywgTUVUSF9WQVJBUkdTLCBzZXRfYmxvY2tpbmdfX2RvY19ffSwKICNlbmRpZgorICAgIHsic2NhbmRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NjYW5kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2NhbmRpcl9fZG9jX199LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtMTIxMDIsMTUgKzEyODA0LDYgQEAKIH0KIAogCi0jaWYgKGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKSkgJiYgIWRlZmluZWQoX19RTlhfXykKLSNkZWZpbmUgSU5JVEZVTkMgUHlJbml0X250Ci0jZGVmaW5lIE1PRE5BTUUgIm50IgotCi0jZWxzZQotI2RlZmluZSBJTklURlVOQyBQeUluaXRfcG9zaXgKLSNkZWZpbmUgTU9ETkFNRSAicG9zaXgiCi0jZW5kaWYKLQogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBwb3NpeG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgTU9ETkFNRSwKQEAgLTEyMTcwLDcgKzEyODYzLDcgQEAKICAgICAiSEFWRV9GU1RBVFZGUyIsCiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisjaWYgZGVmaW5lZCBIQVZFX0ZUUlVOQ0FURSB8fCBkZWZpbmVkIE1TX1dJTkRPV1MKICAgICAiSEFWRV9GVFJVTkNBVEUiLAogI2VuZGlmCiAKQEAgLTEyMzI0LDEzICsxMzAxNywxOSBAQAogICAgICAgICBzY2hlZF9wYXJhbV9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc2NoZWRfcGFyYW0iOwogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlNjaGVkUGFyYW1UeXBlLCAmc2NoZWRfcGFyYW1fZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFNjaGVkUGFyYW1UeXBlLnRwX25ldyA9IHNjaGVkX3BhcmFtX25ldzsKKyAgICAgICAgU2NoZWRQYXJhbVR5cGUudHBfbmV3ID0gb3Nfc2NoZWRfcGFyYW07CiAjZW5kaWYKIAogICAgICAgICAvKiBpbml0aWFsaXplIFRlcm1pbmFsU2l6ZV9pbmZvICovCiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmVGVybWluYWxTaXplVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZUZXJtaW5hbFNpemVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgLyogaW5pdGlhbGl6ZSBzY2FuZGlyIHR5cGVzICovCisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkoJlNjYW5kaXJJdGVyYXRvclR5cGUpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KCZEaXJFbnRyeVR5cGUpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfV0FJVElEKSAmJiAhZGVmaW5lZChfX0FQUExFX18pCiAgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCmluZGV4IGViYjg3MTIuLjI4MWMzMGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwpAQCAtNiw2ICs2LDEyIEBACiAKICNpbmNsdWRlIDxwd2QuaD4KIAorI2luY2x1ZGUgImNsaW5pYy9wd2Rtb2R1bGUuYy5oIgorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIHB3ZAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NjBmNjI4ZWYzNTZiOTdiNl0qLworCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBzdHJ1Y3RfcHdkX3R5cGVfZmllbGRzW10gPSB7CiAgICAgeyJwd19uYW1lIiwgInVzZXIgbmFtZSJ9LAogICAgIHsicHdfcGFzc3dkIiwgInBhc3N3b3JkIn0sCkBAIC04NywxOCArOTMsMjUgQEAKICAgICByZXR1cm4gdjsKIH0KIAotUHlEb2NfU1RSVkFSKHB3ZF9nZXRwd3VpZF9fZG9jX18sCi0iZ2V0cHd1aWQodWlkKSAtPiAocHdfbmFtZSxwd19wYXNzd2QscHdfdWlkLFxuXAotICAgICAgICAgICAgICAgICAgcHdfZ2lkLHB3X2dlY29zLHB3X2Rpcixwd19zaGVsbClcblwKLVJldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIHVzZXIgSUQuXG5cCi1TZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuIik7CisvKltjbGluaWMgaW5wdXRdCitwd2QuZ2V0cHd1aWQKKworICAgIHVpZG9iajogb2JqZWN0CisgICAgLworCitSZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyB1c2VyIElELgorCitTZWUgYGhlbHAocHdkKWAgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXB3ZF9nZXRwd3VpZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwd2RfZ2V0cHd1aWQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnVpZG9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmEyOWFlNGMyYmNiOGUxIGlucHV0PWFlNjRkNTA3YTFjNmQzZThdKi8KIHsKICAgICB1aWRfdCB1aWQ7CiAgICAgc3RydWN0IHBhc3N3ZCAqcDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmdldHB3dWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQpKSB7CisKKyAgICBpZiAoIV9QeV9VaWRfQ29udmVydGVyKHVpZG9iaiwgJnVpZCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHB3dWlkKCk6IHVpZCBub3QgZm91bmQiKTsKQEAgLTExNiwyMSArMTI5LDI1IEBACiAgICAgcmV0dXJuIG1rcHdlbnQocCk7CiB9CiAKLVB5RG9jX1NUUlZBUihwd2RfZ2V0cHduYW1fX2RvY19fLAotImdldHB3bmFtKG5hbWUpIC0+IChwd19uYW1lLHB3X3Bhc3N3ZCxwd191aWQsXG5cCi0gICAgICAgICAgICAgICAgICAgIHB3X2dpZCxwd19nZWNvcyxwd19kaXIscHdfc2hlbGwpXG5cCi1SZXR1cm4gdGhlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLlxuXAotU2VlIGhlbHAocHdkKSBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorcHdkLmdldHB3bmFtCisKKyAgICBhcmc6IHVuaWNvZGUKKyAgICAvCisKK1JldHVybiB0aGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuCisKK1NlZSBgaGVscChwd2QpYCBmb3IgbW9yZSBvbiBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHdkX2dldHB3bmFtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B3ZF9nZXRwd25hbV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY4NDhkNDJkMzg2ZmNhMyBpbnB1dD1kNWY3ZTcwMDkxOWIwMmQzXSovCiB7CiAgICAgY2hhciAqbmFtZTsKICAgICBzdHJ1Y3QgcGFzc3dkICpwOwotICAgIFB5T2JqZWN0ICphcmcsICpieXRlcywgKnJldHZhbCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpnZXRwd25hbSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKQEAgLTE0NywxNCArMTY0LDE3IEBACiB9CiAKICNpZmRlZiBIQVZFX0dFVFBXRU5UCi1QeURvY19TVFJWQVIocHdkX2dldHB3YWxsX19kb2NfXywKLSJnZXRwd2FsbCgpIC0+IGxpc3Rfb2ZfZW50cmllc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIFwKLWluIGFyYml0cmFyeSBvcmRlci5cblwKLVNlZSBoZWxwKHB3ZCkgZm9yIG1vcmUgb24gcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B3ZC5nZXRwd2FsbAorCitSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcywgaW4gYXJiaXRyYXJ5IG9yZGVyLgorCitTZWUgaGVscChwd2QpIGZvciBtb3JlIG9uIHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wd2RfZ2V0cHdhbGwoUHlPYmplY3QgKnNlbGYpCitwd2RfZ2V0cHdhbGxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFiMzBlMzdiZjI2ZDQzMWQgaW5wdXQ9ZDdlY2ViZmQ5MDIxOWI4NV0qLwogewogICAgIFB5T2JqZWN0ICpkOwogICAgIHN0cnVjdCBwYXNzd2QgKnA7CkBAIC0xNzcsMTEgKzE5NywxMCBAQAogI2VuZGlmCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwd2RfbWV0aG9kc1tdID0gewotICAgIHsiZ2V0cHd1aWQiLCAgICAgICAgcHdkX2dldHB3dWlkLCBNRVRIX1ZBUkFSR1MsIHB3ZF9nZXRwd3VpZF9fZG9jX199LAotICAgIHsiZ2V0cHduYW0iLCAgICAgICAgcHdkX2dldHB3bmFtLCBNRVRIX1ZBUkFSR1MsIHB3ZF9nZXRwd25hbV9fZG9jX199LAorICAgIFBXRF9HRVRQV1VJRF9NRVRIT0RERUYKKyAgICBQV0RfR0VUUFdOQU1fTUVUSE9EREVGCiAjaWZkZWYgSEFWRV9HRVRQV0VOVAotICAgIHsiZ2V0cHdhbGwiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXB3ZF9nZXRwd2FsbCwKLSAgICAgICAgTUVUSF9OT0FSR1MsICBwd2RfZ2V0cHdhbGxfX2RvY19ffSwKKyAgICBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggNmE5MDFmNy4uOWE2ZGE3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTYsNiArNiwxMyBAQAogCiAjaW5jbHVkZSAicHlleHBhdC5oIgogCisvKiBEbyBub3QgZW1pdCBDbGluaWMgb3V0cHV0IHRvIGEgZmlsZSBhcyB0aGF0IHdyZWFrcyBoYXZvYyB3aXRoIGNvbmRpdGlvbmFsbHkKKyAgIGluY2x1ZGVkIG1ldGhvZHMuICovCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgcHlleHBhdAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjE2OGQ1MDNhNDQ5MGMxNV0qLworCiAjZGVmaW5lIFhNTF9DT01CSU5FRF9WRVJTSU9OICgxMDAwMCpYTUxfTUFKT1JfVkVSU0lPTisxMDAqWE1MX01JTk9SX1ZFUlNJT04rWE1MX01JQ1JPX1ZFUlNJT04pCiAKIHN0YXRpYyBYTUxfTWVtb3J5X0hhbmRsaW5nX1N1aXRlIEV4cGF0TWVtb3J5SGFuZGxlciA9IHsKQEAgLTYxLDYgKzY4LDggQEAKICAgICBQeU9iamVjdCAqKmhhbmRsZXJzOwogfSB4bWxwYXJzZW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9weWV4cGF0LmMuaCIKKwogI2RlZmluZSBDSEFSQUNURVJfREFUQV9CVUZGRVJfU0laRSA4MTkyCiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgWG1scGFyc2V0eXBlOwpAQCAtNjcxLDYgKzY4MCwxMSBAQAogVk9JRF9IQU5ETEVSKEVuZERvY3R5cGVEZWNsLCAodm9pZCAqdXNlckRhdGEpLCAoIigpIikpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIHB5ZXhwYXQueG1scGFyc2VyICJ4bWxwYXJzZW9iamVjdCAqIiAiJlhtbHBhcnNldHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTIzOTMxNjIzODUyMzJlMWNdKi8KKwogCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3BhcnNlX3Jlc3VsdCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IHJ2KQpAQCAtNjg3LDI1ICs3MDEsMzAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJ2KTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1BhcnNlX19kb2NfXywKLSJQYXJzZShkYXRhWywgaXNmaW5hbF0pXG5cCi1QYXJzZSBYTUwgZGF0YS4gIGBpc2ZpbmFsJyBzaG91bGQgYmUgdHJ1ZSBhdCBlbmQgb2YgaW5wdXQuIik7Ci0KICNkZWZpbmUgTUFYX0NIVU5LX1NJWkUgKDEgPDwgMjApCiAKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLlBhcnNlCisKKyAgICBkYXRhOiBvYmplY3QKKyAgICBpc2ZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KKworUGFyc2UgWE1MIGRhdGEuCisKK2Bpc2ZpbmFsJyBzaG91bGQgYmUgdHJ1ZSBhdCBlbmQgb2YgaW5wdXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9QYXJzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlzZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRkYjg0M2RkMWY0ZWQ0YiBpbnB1dD0xOTlkOWU4ZTkyZWJiYjRiXSovCiB7Ci0gICAgUHlPYmplY3QgKmRhdGE7Ci0gICAgaW50IGlzRmluYWwgPSAwOwogICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgUHlfc3NpemVfdCBzbGVuOwogICAgIFB5X2J1ZmZlciB2aWV3OwogICAgIGludCByYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOlBhcnNlIiwgJmRhdGEsICZpc0ZpbmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGRhdGEpKSB7CiAgICAgICAgIHZpZXcuYnVmID0gTlVMTDsKICAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGRhdGEsICZzbGVuKTsKQEAgLTcyOSw3ICs3NDgsNyBAQAogICAgICAgICBzbGVuIC09IE1BWF9DSFVOS19TSVpFOwogICAgIH0KICAgICBhc3NlcnQoTUFYX0NIVU5LX1NJWkUgPCBJTlRfTUFYICYmIHNsZW4gPCBJTlRfTUFYKTsKLSAgICByYyA9IFhNTF9QYXJzZShzZWxmLT5pdHNlbGYsIHMsIChpbnQpc2xlbiwgaXNGaW5hbCk7CisgICAgcmMgPSBYTUxfUGFyc2Uoc2VsZi0+aXRzZWxmLCBzLCAoaW50KXNsZW4sIGlzZmluYWwpOwogCiBkb25lOgogICAgIGlmICh2aWV3LmJ1ZiAhPSBOVUxMKQpAQCAtNzgwLDE4ICs3OTksMjQgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9QYXJzZUZpbGVfX2RvY19fLAotIlBhcnNlRmlsZShmaWxlKVxuXAotUGFyc2UgWE1MIGRhdGEgZnJvbSBmaWxlLWxpa2Ugb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuUGFyc2VGaWxlCisKKyAgICBmaWxlOiBvYmplY3QKKyAgICAvCisKK1BhcnNlIFhNTCBkYXRhIGZyb20gZmlsZS1saWtlIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXhtbHBhcnNlX1BhcnNlRmlsZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmYpCitweWV4cGF0X3htbHBhcnNlcl9QYXJzZUZpbGUoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhZGM2YTEzMTAwY2M0MmIgaW5wdXQ9ZmJiNWExMmI2MDM4ZDczNV0qLwogewogICAgIGludCBydiA9IDE7CiAgICAgUHlPYmplY3QgKnJlYWRtZXRob2QgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogCi0gICAgcmVhZG1ldGhvZCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZCk7CisgICAgcmVhZG1ldGhvZCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcmVhZCk7CiAgICAgaWYgKHJlYWRtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgaGF2ZSAncmVhZCcgYXR0cmlidXRlIik7CkBAIC04MjMsNDIgKzg0OCw1MCBAQAogICAgIHJldHVybiBnZXRfcGFyc2VfcmVzdWx0KHNlbGYsIHJ2KTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1NldEJhc2VfX2RvY19fLAotIlNldEJhc2UoYmFzZV91cmwpXG5cCi1TZXQgdGhlIGJhc2UgVVJMIGZvciB0aGUgcGFyc2VyLiIpOworLypbY2xpbmljIGlucHV0XQorcHlleHBhdC54bWxwYXJzZXIuU2V0QmFzZQorCisgICAgYmFzZTogc3RyCisgICAgLworCitTZXQgdGhlIGJhc2UgVVJMIGZvciB0aGUgcGFyc2VyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgoteG1scGFyc2VfU2V0QmFzZSh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X3htbHBhcnNlcl9TZXRCYXNlX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmJhc2UpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzIxMmRkY2ViNjA3YjUzOSBpbnB1dD1jNjg0ZTVkZTg5NWVlMWE4XSovCiB7Ci0gICAgY2hhciAqYmFzZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpTZXRCYXNlIiwgJmJhc2UpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVhNTF9TZXRCYXNlKHNlbGYtPml0c2VsZiwgYmFzZSkpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX0dldEJhc2VfX2RvY19fLAotIkdldEJhc2UoKSAtPiB1cmxcblwKLVJldHVybiBiYXNlIFVSTCBzdHJpbmcgZm9yIHRoZSBwYXJzZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5HZXRCYXNlCisKK1JldHVybiBiYXNlIFVSTCBzdHJpbmcgZm9yIHRoZSBwYXJzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9HZXRCYXNlKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorcHlleHBhdF94bWxwYXJzZXJfR2V0QmFzZV9pbXBsKHhtbHBhcnNlb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4ODZjYjIxZjlhODczOWEgaW5wdXQ9OTE4ZDcxYzM4MDA5NjIwZV0qLwogewogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ6IiwgWE1MX0dldEJhc2Uoc2VsZi0+aXRzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9HZXRJbnB1dENvbnRleHRfX2RvY19fLAotIkdldElucHV0Q29udGV4dCgpIC0+IHN0cmluZ1xuXAotUmV0dXJuIHRoZSB1bnRyYW5zbGF0ZWQgdGV4dCBvZiB0aGUgaW5wdXQgdGhhdCBjYXVzZWQgdGhlIGN1cnJlbnQgZXZlbnQuXG5cCi1JZiB0aGUgZXZlbnQgd2FzIGdlbmVyYXRlZCBieSBhIGxhcmdlIGFtb3VudCBvZiB0ZXh0IChzdWNoIGFzIGEgc3RhcnQgdGFnXG5cCi1mb3IgYW4gZWxlbWVudCB3aXRoIG1hbnkgYXR0cmlidXRlcyksIG5vdCBhbGwgb2YgdGhlIHRleHQgbWF5IGJlIGF2YWlsYWJsZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLkdldElucHV0Q29udGV4dAorCitSZXR1cm4gdGhlIHVudHJhbnNsYXRlZCB0ZXh0IG9mIHRoZSBpbnB1dCB0aGF0IGNhdXNlZCB0aGUgY3VycmVudCBldmVudC4KKworSWYgdGhlIGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgYSBsYXJnZSBhbW91bnQgb2YgdGV4dCAoc3VjaCBhcyBhIHN0YXJ0IHRhZworZm9yIGFuIGVsZW1lbnQgd2l0aCBtYW55IGF0dHJpYnV0ZXMpLCBub3QgYWxsIG9mIHRoZSB0ZXh0IG1heSBiZSBhdmFpbGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9HZXRJbnB1dENvbnRleHQoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitweWV4cGF0X3htbHBhcnNlcl9HZXRJbnB1dENvbnRleHRfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODgwMjZkNjgzZmMyMmNjIGlucHV0PTAzNGRmODcxMmRiNjgzNzldKi8KIHsKICAgICBpZiAoc2VsZi0+aW5fY2FsbGJhY2spIHsKICAgICAgICAgaW50IG9mZnNldCwgc2l6ZTsKQEAgLTg3NSwyNCArOTA4LDI1IEBACiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoeG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfX2RvY19fLAotIkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlKGNvbnRleHRbLCBlbmNvZGluZ10pXG5cCi1DcmVhdGUgYSBwYXJzZXIgZm9yIHBhcnNpbmcgYW4gZXh0ZXJuYWwgZW50aXR5IGJhc2VkIG9uIHRoZVxuXAotaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZQorCisgICAgY29udGV4dDogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgZW5jb2Rpbmc6IHN0ciA9IE5VTEwKKyAgICAvCisKK0NyZWF0ZSBhIHBhcnNlciBmb3IgcGFyc2luZyBhbiBleHRlcm5hbCBlbnRpdHkgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIHBhc3NlZCB0byB0aGUgRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgoteG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTM1Y2RhOWQ3YTBmYmNkNiBpbnB1dD1iOTA2NzE0Y2MxMjJjMzIyXSovCiB7Ci0gICAgY2hhciAqY29udGV4dDsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgeG1scGFyc2VvYmplY3QgKm5ld19wYXJzZXI7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInp8czpFeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIG5ld19wYXJzZXIgPSBQeU9iamVjdF9HQ19OZXcoeG1scGFyc2VvYmplY3QsICZYbWxwYXJzZXR5cGUpOwogICAgIGlmIChuZXdfcGFyc2VyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTQ4LDQxICs5ODIsNDkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X3BhcnNlcjsKIH0KIAotUHlEb2NfU1RSVkFSKHhtbHBhcnNlX1NldFBhcmFtRW50aXR5UGFyc2luZ19fZG9jX18sCi0iU2V0UGFyYW1FbnRpdHlQYXJzaW5nKGZsYWcpIC0+IHN1Y2Nlc3NcblwKLUNvbnRyb2xzIHBhcnNpbmcgb2YgcGFyYW1ldGVyIGVudGl0aWVzIChpbmNsdWRpbmcgdGhlIGV4dGVybmFsIERURFxuXAotc3Vic2V0KS4gUG9zc2libGUgZmxhZyB2YWx1ZXMgYXJlIFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUixcblwKLVhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19VTkxFU1NfU1RBTkRBTE9ORSBhbmRcblwKLVhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19BTFdBWVMuIFJldHVybnMgdHJ1ZSBpZiBzZXR0aW5nIHRoZSBmbGFnXG5cCi13YXMgc3VjY2Vzc2Z1bC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLlNldFBhcmFtRW50aXR5UGFyc2luZwogCi1zdGF0aWMgUHlPYmplY3QqCi14bWxwYXJzZV9TZXRQYXJhbUVudGl0eVBhcnNpbmcoeG1scGFyc2VvYmplY3QgKnAsIFB5T2JqZWN0KiBhcmdzKQorICAgIGZsYWc6IGludAorICAgIC8KKworQ29udHJvbHMgcGFyc2luZyBvZiBwYXJhbWV0ZXIgZW50aXRpZXMgKGluY2x1ZGluZyB0aGUgZXh0ZXJuYWwgRFREIHN1YnNldCkuCisKK1Bvc3NpYmxlIGZsYWcgdmFsdWVzIGFyZSBYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfTkVWRVIsCitYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NUQU5EQUxPTkUgYW5kCitYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfQUxXQVlTLiBSZXR1cm5zIHRydWUgaWYgc2V0dGluZyB0aGUgZmxhZword2FzIHN1Y2Nlc3NmdWwuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9TZXRQYXJhbUVudGl0eVBhcnNpbmdfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTg2NjhlZThlNzYwZDY0YyBpbnB1dD04YWVhMTliNGIxNWU5YWYxXSovCiB7Ci0gICAgaW50IGZsYWc7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJmZsYWcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmbGFnID0gWE1MX1NldFBhcmFtRW50aXR5UGFyc2luZyhwLT5pdHNlbGYsIGZsYWcpOworICAgIGZsYWcgPSBYTUxfU2V0UGFyYW1FbnRpdHlQYXJzaW5nKHNlbGYtPml0c2VsZiwgZmxhZyk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhmbGFnKTsKIH0KIAogCiAjaWYgWE1MX0NPTUJJTkVEX1ZFUlNJT04gPj0gMTk1MDUKLVB5RG9jX1NUUlZBUih4bWxwYXJzZV9Vc2VGb3JlaWduRFREX19kb2NfXywKLSJVc2VGb3JlaWduRFREKFtmbGFnXSlcblwKLUFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gcHJvdmlkZSBhbiBhcnRpZmljaWFsIGV4dGVybmFsIHN1YnNldCBpZiBvbmUgaXNcblwKLW5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuICBUaGlzIHJlYWRpbHkgYWxsb3dzIHRoZVxuXAotdXNlIG9mIGEgJ2RlZmF1bHQnIGRvY3VtZW50IHR5cGUgY29udHJvbGxlZCBieSB0aGUgYXBwbGljYXRpb24sIHdoaWxlIHN0aWxsXG5cCi1nZXR0aW5nIHRoZSBhZHZhbnRhZ2Ugb2YgcHJvdmlkaW5nIGRvY3VtZW50IHR5cGUgaW5mb3JtYXRpb24gdG8gdGhlIHBhcnNlci5cblwKLSdmbGFnJyBkZWZhdWx0cyB0byBUcnVlIGlmIG5vdCBwcm92aWRlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQueG1scGFyc2VyLlVzZUZvcmVpZ25EVEQKKworICAgIGZsYWc6IGJvb2wgPSBUcnVlCisgICAgLworCitBbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHByb3ZpZGUgYW4gYXJ0aWZpY2lhbCBleHRlcm5hbCBzdWJzZXQgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgYXMgcGFydCBvZiB0aGUgZG9jdW1lbnQgaW5zdGFuY2UuCisKK1RoaXMgcmVhZGlseSBhbGxvd3MgdGhlIHVzZSBvZiBhICdkZWZhdWx0JyBkb2N1bWVudCB0eXBlIGNvbnRyb2xsZWQgYnkgdGhlCithcHBsaWNhdGlvbiwgd2hpbGUgc3RpbGwgZ2V0dGluZyB0aGUgYWR2YW50YWdlIG9mIHByb3ZpZGluZyBkb2N1bWVudCB0eXBlCitpbmZvcm1hdGlvbiB0byB0aGUgcGFyc2VyLiAnZmxhZycgZGVmYXVsdHMgdG8gVHJ1ZSBpZiBub3QgcHJvdmlkZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9Vc2VGb3JlaWduRFREKHhtbHBhcnNlb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3B5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfaW1wbCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGZsYWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2ZhYTlhYTUwYmIwZjY1YyBpbnB1dD03ODE0NGM1MTlkMTE2YTZlXSovCiB7Ci0gICAgaW50IGZsYWcgPSAxOwogICAgIGVudW0gWE1MX0Vycm9yIHJjOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6VXNlRm9yZWlnbkRURCIsICZmbGFnKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByYyA9IFhNTF9Vc2VGb3JlaWduRFREKHNlbGYtPml0c2VsZiwgZmxhZyA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFKTsKICAgICBpZiAocmMgIT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZWxmLCByYyk7CkBAIC05OTIsMjkgKzEwMzQsNzAgQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKnhtbHBhcnNlX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QqIG5vYXJncyk7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LnhtbHBhcnNlci5fX2Rpcl9fCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweWV4cGF0X3htbHBhcnNlcl9fX2Rpcl9fX2ltcGwoeG1scGFyc2VvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmMyMjQ1MWVmYjllNGQxNyBpbnB1dD03NmFhNDU1ZjJhNjYxMzg0XSovCit7CisjZGVmaW5lIEFQUEVORChsaXN0LCBzdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3RyKTsgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAobyAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChsaXN0LCBvKTsgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihvKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSB3aGlsZSAoMCkKKworICAgIGludCBpOworICAgIFB5T2JqZWN0ICpyYyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFyYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpvID0gZ2V0X2hhbmRsZXJfbmFtZSgmaGFuZGxlcl9pbmZvW2ldKTsKKyAgICAgICAgaWYgKG8gIT0gTlVMTCkKKyAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQocmMsIG8pOworICAgICAgICBQeV9YREVDUkVGKG8pOworICAgIH0KKyAgICBBUFBFTkQocmMsICJFcnJvckNvZGUiKTsKKyAgICBBUFBFTkQocmMsICJFcnJvckxpbmVOdW1iZXIiKTsKKyAgICBBUFBFTkQocmMsICJFcnJvckNvbHVtbk51bWJlciIpOworICAgIEFQUEVORChyYywgIkVycm9yQnl0ZUluZGV4Iik7CisgICAgQVBQRU5EKHJjLCAiQ3VycmVudExpbmVOdW1iZXIiKTsKKyAgICBBUFBFTkQocmMsICJDdXJyZW50Q29sdW1uTnVtYmVyIik7CisgICAgQVBQRU5EKHJjLCAiQ3VycmVudEJ5dGVJbmRleCIpOworICAgIEFQUEVORChyYywgImJ1ZmZlcl9zaXplIik7CisgICAgQVBQRU5EKHJjLCAiYnVmZmVyX3RleHQiKTsKKyAgICBBUFBFTkQocmMsICJidWZmZXJfdXNlZCIpOworICAgIEFQUEVORChyYywgIm5hbWVzcGFjZV9wcmVmaXhlcyIpOworICAgIEFQUEVORChyYywgIm9yZGVyZWRfYXR0cmlidXRlcyIpOworICAgIEFQUEVORChyYywgInNwZWNpZmllZF9hdHRyaWJ1dGVzIik7CisgICAgQVBQRU5EKHJjLCAiaW50ZXJuIik7CisKKyN1bmRlZiBBUFBFTkQKKworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyYyk7CisgICAgICAgIHJjID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgeG1scGFyc2VfbWV0aG9kc1tdID0gewotICAgIHsiUGFyc2UiLCAgICAgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX1BhcnNlLAotICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCB4bWxwYXJzZV9QYXJzZV9fZG9jX199LAotICAgIHsiUGFyc2VGaWxlIiwgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX1BhcnNlRmlsZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfTywgICAgICAgeG1scGFyc2VfUGFyc2VGaWxlX19kb2NfX30sCi0gICAgeyJTZXRCYXNlIiwgICAoUHlDRnVuY3Rpb24peG1scGFyc2VfU2V0QmFzZSwKLSAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgeG1scGFyc2VfU2V0QmFzZV9fZG9jX199LAotICAgIHsiR2V0QmFzZSIsICAgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX0dldEJhc2UsCi0gICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgeG1scGFyc2VfR2V0QmFzZV9fZG9jX199LAotICAgIHsiRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX0V4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlX19kb2NfX30sCi0gICAgeyJTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAoUHlDRnVuY3Rpb24peG1scGFyc2VfU2V0UGFyYW1FbnRpdHlQYXJzaW5nLAotICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLCB4bWxwYXJzZV9TZXRQYXJhbUVudGl0eVBhcnNpbmdfX2RvY19ffSwKLSAgICB7IkdldElucHV0Q29udGV4dCIsIChQeUNGdW5jdGlvbil4bWxwYXJzZV9HZXRJbnB1dENvbnRleHQsCi0gICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgeG1scGFyc2VfR2V0SW5wdXRDb250ZXh0X19kb2NfX30sCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfUEFSU0VfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfUEFSU0VGSUxFX01FVEhPRERFRgorICAgIFBZRVhQQVRfWE1MUEFSU0VSX1NFVEJBU0VfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfR0VUQkFTRV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9HRVRJTlBVVENPTlRFWFRfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfRVhURVJOQUxFTlRJVFlQQVJTRVJDUkVBVEVfTUVUSE9EREVGCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfU0VUUEFSQU1FTlRJVFlQQVJTSU5HX01FVEhPRERFRgogI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDE5NTA1Ci0gICAgeyJVc2VGb3JlaWduRFREIiwgKFB5Q0Z1bmN0aW9uKXhtbHBhcnNlX1VzZUZvcmVpZ25EVEQsCi0gICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsIHhtbHBhcnNlX1VzZUZvcmVpZ25EVERfX2RvY19ffSwKKyAgICBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogI2VuZGlmCi0gICAgeyJfX2Rpcl9fIiwgeG1scGFyc2VfZGlyLCBNRVRIX05PQVJHU30sCi0gICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgUFlFWFBBVF9YTUxQQVJTRVJfX19ESVJfX19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCiB9OwogCiAvKiAtLS0tLS0tLS0tICovCkBAIC0xMDc3LDcgKzExNjAsNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1uZXd4bWxwYXJzZW9iamVjdChjaGFyICplbmNvZGluZywgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciwgUHlPYmplY3QgKmludGVybikKK25ld3htbHBhcnNlb2JqZWN0KGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKQogewogICAgIGludCBpOwogICAgIHhtbHBhcnNlb2JqZWN0ICpzZWxmOwpAQCAtMTI1NSw1MiArMTMzOCw2IEBACiAgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopc2VsZiwgbmFtZW9iaik7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi14bWxwYXJzZV9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBub2FyZ3MpCi17Ci0jZGVmaW5lIEFQUEVORChsaXN0LCBzdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc3RyKTsgICAgICAgIFwKLSAgICAgICAgICAgICAgICBpZiAobyAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0FwcGVuZChsaXN0LCBvKTsgICAgICAgICBcCi0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihvKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSB3aGlsZSAoMCkKLQotICAgIGludCBpOwotICAgIFB5T2JqZWN0ICpyYyA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKCFyYykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvID0gZ2V0X2hhbmRsZXJfbmFtZSgmaGFuZGxlcl9pbmZvW2ldKTsKLSAgICAgICAgaWYgKG8gIT0gTlVMTCkKLSAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQocmMsIG8pOwotICAgICAgICBQeV9YREVDUkVGKG8pOwotICAgIH0KLSAgICBBUFBFTkQocmMsICJFcnJvckNvZGUiKTsKLSAgICBBUFBFTkQocmMsICJFcnJvckxpbmVOdW1iZXIiKTsKLSAgICBBUFBFTkQocmMsICJFcnJvckNvbHVtbk51bWJlciIpOwotICAgIEFQUEVORChyYywgIkVycm9yQnl0ZUluZGV4Iik7Ci0gICAgQVBQRU5EKHJjLCAiQ3VycmVudExpbmVOdW1iZXIiKTsKLSAgICBBUFBFTkQocmMsICJDdXJyZW50Q29sdW1uTnVtYmVyIik7Ci0gICAgQVBQRU5EKHJjLCAiQ3VycmVudEJ5dGVJbmRleCIpOwotICAgIEFQUEVORChyYywgImJ1ZmZlcl9zaXplIik7Ci0gICAgQVBQRU5EKHJjLCAiYnVmZmVyX3RleHQiKTsKLSAgICBBUFBFTkQocmMsICJidWZmZXJfdXNlZCIpOwotICAgIEFQUEVORChyYywgIm5hbWVzcGFjZV9wcmVmaXhlcyIpOwotICAgIEFQUEVORChyYywgIm9yZGVyZWRfYXR0cmlidXRlcyIpOwotICAgIEFQUEVORChyYywgInNwZWNpZmllZF9hdHRyaWJ1dGVzIik7Ci0gICAgQVBQRU5EKHJjLCAiaW50ZXJuIik7Ci0KLSN1bmRlZiBBUFBFTkQKLQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyYyk7Ci0gICAgICAgIHJjID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmM7Ci19Ci0KIHN0YXRpYyBpbnQKIHNldGhhbmRsZXIoeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCogdikKIHsKQEAgLTE1MTIsMjQgKzE1NDksMjQgQEAKIC8qIEVuZCBvZiBjb2RlIGZvciB4bWxwYXJzZXIgb2JqZWN0cyAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotUHlEb2NfU1RSVkFSKHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX19kb2NfXywKLSJQYXJzZXJDcmVhdGUoW2VuY29kaW5nWywgbmFtZXNwYWNlX3NlcGFyYXRvcl1dKSAtPiBwYXJzZXJcblwKLVJldHVybiBhIG5ldyBYTUwgcGFyc2VyIG9iamVjdC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3B5ZXhwYXQuUGFyc2VyQ3JlYXRlCisKKyAgICBlbmNvZGluZzogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIG5hbWVzcGFjZV9zZXBhcmF0b3I6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICBpbnRlcm46IG9iamVjdCA9IE5VTEwKKworUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm5vdHVzZWQsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCitweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yLCBQeU9iamVjdCAqaW50ZXJuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxZmNjZDIzM2UxNzQzYTggaW5wdXQ9MjNkMjk3MDRhY2FkMzg1ZF0qLwogewotICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yID0gTlVMTDsKLSAgICBQeU9iamVjdCAqaW50ZXJuID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGludCBpbnRlcm5fZGVjcmVmID0gMDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuIiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInx6ek86UGFyc2VyQ3JlYXRlIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobmFtZXNwYWNlX3NlcGFyYXRvciAhPSBOVUxMCiAgICAgICAgICYmIHN0cmxlbihuYW1lc3BhY2Vfc2VwYXJhdG9yKSA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNTU5LDI5ICsxNTk2LDI4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHB5ZXhwYXRfRXJyb3JTdHJpbmdfX2RvY19fLAotIkVycm9yU3RyaW5nKGVycm5vKSAtPiBzdHJpbmdcblwKLVJldHVybnMgc3RyaW5nIGVycm9yIGZvciBnaXZlbiBudW1iZXIuIik7CisvKltjbGluaWMgaW5wdXRdCitweWV4cGF0LkVycm9yU3RyaW5nCisKKyAgICBjb2RlOiBsb25nCisgICAgLworCitSZXR1cm5zIHN0cmluZyBlcnJvciBmb3IgZ2l2ZW4gbnVtYmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9FcnJvclN0cmluZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitweWV4cGF0X0Vycm9yU3RyaW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgbG9uZyBjb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4NzY2ODEwOGI2ODY4ZTUgaW5wdXQ9Y2M2N2RlMDEwZDllNjJiM10qLwogewotICAgIGxvbmcgY29kZSA9IDA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImw6RXJyb3JTdHJpbmciLCAmY29kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJ6IiwgWE1MX0Vycm9yU3RyaW5nKChpbnQpY29kZSkpOwogfQogCiAvKiBMaXN0IG9mIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgcHlleHBhdF9tZXRob2RzW10gPSB7Ci0gICAgeyJQYXJzZXJDcmVhdGUiLCAgICAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsCi0gICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX199LAotICAgIHsiRXJyb3JTdHJpbmciLCAgICAgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfRXJyb3JTdHJpbmcsCi0gICAgIE1FVEhfVkFSQVJHUywgICAgICBweWV4cGF0X0Vycm9yU3RyaW5nX19kb2NfX30sCi0KLSAgICB7TlVMTCwgICAgICAgKFB5Q0Z1bmN0aW9uKU5VTEwsIDAsIE5VTEx9ICAgICAgICAgICAgLyogc2VudGluZWwgKi8KKyAgICBQWUVYUEFUX1BBUlNFUkNSRUFURV9NRVRIT0RERUYKKyAgICBQWUVYUEFUX0VSUk9SU1RSSU5HX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKIC8qIE1vZHVsZSBkb2NzdHJpbmcgKi8KQEAgLTE1OTksMTYgKzE2MzUsNiBAQAogI2RlZmluZSBNT0RVTEVfSU5JVEZVTkMgUHlJbml0X3B5ZXhwYXQKICNlbmRpZgogCi0jaWZuZGVmIFB5TU9ESU5JVF9GVU5DCi0jICAgaWZkZWYgTVNfV0lORE9XUwotIyAgICAgICBkZWZpbmUgUHlNT0RJTklUX0ZVTkMgX19kZWNsc3BlYyhkbGxleHBvcnQpIHZvaWQKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBQeU1PRElOSVRfRlVOQyB2b2lkCi0jICAgZW5kaWYKLSNlbmRpZgotCi1QeU1PRElOSVRfRlVOQyBNT0RVTEVfSU5JVEZVTkModm9pZCk7ICAvKiBhdm9pZCBjb21waWxlciB3YXJuaW5ncyAqLwotCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHB5ZXhwYXRtb2R1bGUgPSB7CiAgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAgICAgTU9EVUxFX05BTUUsCkBAIC0xNjY2LDcgKzE2OTIsNyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWE1MUGFyc2VyVHlwZSIsIChQeU9iamVjdCAqKSAmWG1scGFyc2V0eXBlKTsKIAogICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJFWFBBVF9WRVJTSU9OIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBYTUxfRXhwYXRWZXJzaW9uKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FeHBhdFZlcnNpb24oKSk7CiAgICAgewogICAgICAgICBYTUxfRXhwYXRfVmVyc2lvbiBpbmZvID0gWE1MX0V4cGF0VmVyc2lvbkluZm8oKTsKICAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ2ZXJzaW9uX2luZm8iLApAQCAtMTc0Niw3ICsxNzcyLDcgQEAKIAogI2RlZmluZSBNWUNPTlNUKG5hbWUpIFwKICAgICBpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQoZXJyb3JzX21vZHVsZSwgI25hbWUsICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKVhNTF9FcnJvclN0cmluZyhuYW1lKSkgPCAwKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhuYW1lKSkgPCAwKSAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHRtcG51bSA9IFB5TG9uZ19Gcm9tTG9uZyhuYW1lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKHRtcG51bSA9PSBOVUxMKSByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE5NTcsMyArMTk4Myw4IEBACiAKICAgICB7TlVMTCwgTlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CisKKy8qW2NsaW5pYyBpbnB1dF0KK2R1bXAgYnVmZmVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3JlYWRsaW5lLmMgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKaW5kZXggYjU0NWJjYS4uZjZiNTJhMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9yZWFkbGluZS5jCisrKyBiL01vZHVsZXMvcmVhZGxpbmUuYwpAQCAtMjM3LDYgKzIzNyw0MyBAQAogVGhlIGRlZmF1bHQgZmlsZW5hbWUgaXMgfi8uaGlzdG9yeS4iKTsKIAogCisjaWZkZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorLyogRXhwb3J0ZWQgZnVuY3Rpb24gdG8gc2F2ZSBwYXJ0IG9mIGEgcmVhZGxpbmUgaGlzdG9yeSBmaWxlICovCisKK3N0YXRpYyBQeU9iamVjdCAqCithcHBlbmRfaGlzdG9yeV9maWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbmVsZW1lbnRzOworICAgIFB5T2JqZWN0ICpmaWxlbmFtZV9vYmogPSBQeV9Ob25lLCAqZmlsZW5hbWVfYnl0ZXM7CisgICAgY2hhciAqZmlsZW5hbWU7CisgICAgaW50IGVycjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml8TzphcHBlbmRfaGlzdG9yeV9maWxlIiwgJm5lbGVtZW50cywgJmZpbGVuYW1lX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChmaWxlbmFtZV9vYmogIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihmaWxlbmFtZV9vYmosICZmaWxlbmFtZV9ieXRlcykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZmlsZW5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKGZpbGVuYW1lX2J5dGVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmaWxlbmFtZV9ieXRlcyA9IE5VTEw7CisgICAgICAgIGZpbGVuYW1lID0gTlVMTDsKKyAgICB9CisgICAgZXJybm8gPSBlcnIgPSBhcHBlbmRfaGlzdG9yeShuZWxlbWVudHMsIGZpbGVuYW1lKTsKKyAgICBpZiAoIWVyciAmJiBfaGlzdG9yeV9sZW5ndGggPj0gMCkKKyAgICAgICAgaGlzdG9yeV90cnVuY2F0ZV9maWxlKGZpbGVuYW1lLCBfaGlzdG9yeV9sZW5ndGgpOworICAgIFB5X1hERUNSRUYoZmlsZW5hbWVfYnl0ZXMpOworICAgIGVycm5vID0gZXJyOworICAgIGlmIChlcnJubykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGRvY19hcHBlbmRfaGlzdG9yeV9maWxlLAorImFwcGVuZF9oaXN0b3J5X2ZpbGUobmVsZW1lbnRzWywgZmlsZW5hbWVdKSAtPiBOb25lXG5cCitBcHBlbmQgdGhlIGxhc3QgbmVsZW1lbnRzIG9mIHRoZSBoaXN0b3J5IGxpc3QgdG8gZmlsZS5cblwKK1RoZSBkZWZhdWx0IGZpbGVuYW1lIGlzIH4vLmhpc3RvcnkuIik7CisjZW5kaWYKKworCiAvKiBTZXQgaGlzdG9yeSBsZW5ndGggKi8KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtNzQ3LDYgKzc4NCwxMCBAQAogICAgICBNRVRIX1ZBUkFSR1MsIGRvY19yZWFkX2hpc3RvcnlfZmlsZX0sCiAgICAgeyJ3cml0ZV9oaXN0b3J5X2ZpbGUiLCB3cml0ZV9oaXN0b3J5X2ZpbGUsCiAgICAgIE1FVEhfVkFSQVJHUywgZG9jX3dyaXRlX2hpc3RvcnlfZmlsZX0sCisjaWZkZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorICAgIHsiYXBwZW5kX2hpc3RvcnlfZmlsZSIsIGFwcGVuZF9oaXN0b3J5X2ZpbGUsCisgICAgIE1FVEhfVkFSQVJHUywgZG9jX2FwcGVuZF9oaXN0b3J5X2ZpbGV9LAorI2VuZGlmCiAgICAgeyJnZXRfaGlzdG9yeV9pdGVtIiwgZ2V0X2hpc3RvcnlfaXRlbSwKICAgICAgTUVUSF9WQVJBUkdTLCBkb2NfZ2V0X2hpc3RvcnlfaXRlbX0sCiAgICAgeyJnZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCIsIChQeUNGdW5jdGlvbilnZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCwKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCmluZGV4IGQ0MzZmNTIuLjQ0ZmYzZGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwpAQCAtMTkzLDUxICsxOTMsMzIgQEAKICNlbmRpZiAvKiBTRUxFQ1RfVVNFU19IRUFQICovCiAgICAgUHlPYmplY3QgKmlmZGxpc3QsICpvZmRsaXN0LCAqZWZkbGlzdDsKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdG91dCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gUHlfTm9uZTsKICAgICBmZF9zZXQgaWZkc2V0LCBvZmRzZXQsIGVmZHNldDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKICAgICBpbnQgaW1heCwgb21heCwgZW1heCwgbWF4OwogICAgIGludCBuOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSA9IDA7CiAKICAgICAvKiBjb252ZXJ0IGFyZ3VtZW50cyAqLwogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNlbGVjdCIsIDMsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZpZmRsaXN0LCAmb2ZkbGlzdCwgJmVmZGxpc3QsICZ0b3V0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmlmZGxpc3QsICZvZmRsaXN0LCAmZWZkbGlzdCwgJnRpbWVvdXRfb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAodG91dCA9PSBQeV9Ob25lKQotICAgICAgICB0dnAgPSAoc3RydWN0IHRpbWV2YWwgKikwOwotICAgIGVsc2UgaWYgKCFQeU51bWJlcl9DaGVjayh0b3V0KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhIGZsb2F0IG9yIE5vbmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICh0aW1lb3V0X29iaiA9PSBQeV9Ob25lKQorICAgICAgICB0dnAgPSAoc3RydWN0IHRpbWV2YWwgKilOVUxMOwogICAgIGVsc2UgewotICAgICAgICAvKiBPbiBPcGVuQlNEIDUuNCwgdGltZXZhbC50dl9zZWMgaXMgYSBsb25nLgotICAgICAgICAgKiBFeGFtcGxlOiBsb25nIGlzIDY0LWJpdCwgd2hlcmVhcyB0aW1lX3QgaXMgMzItYml0LiAqLwotICAgICAgICB0aW1lX3Qgc2VjOwotICAgICAgICAvKiBPbiBPUyBYIDY0LWJpdCwgdGltZXZhbC50dl91c2VjIGlzIGFuIGludCAoYW5kIHRodXMgc3RpbGwgNAotICAgICAgICAgICBieXRlcyBhcyByZXF1aXJlZCksIGJ1dCBubyBsb25nZXIgZGVmaW5lZCBieSBhIGxvbmcuICovCi0gICAgICAgIGxvbmcgdXNlYzsKLSAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRvdXQsICZzZWMsICZ1c2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9VUCkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIC8qIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIGlzIGEgbG9uZyAoMzIgYml0KSwKLSAgICAgICAgICogd2hlcmVhcyB0aW1lX3QgY2FuIGJlIDY0LWJpdC4gKi8KLSAgICAgICAgYXNzZXJ0KHNpemVvZih0di50dl9zZWMpID09IHNpemVvZihsb25nKSk7Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgICAgIGlmIChzZWMgPiBMT05HX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LCB0aW1lb3V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGEgZmxvYXQgb3IgTm9uZSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB0di50dl9zZWMgPSAobG9uZylzZWM7Ci0jZWxzZQotICAgICAgICBhc3NlcnQoc2l6ZW9mKHR2LnR2X3NlYykgPj0gc2l6ZW9mKHNlYykpOwotICAgICAgICB0di50dl9zZWMgPSBzZWM7Ci0jZW5kaWYKLSAgICAgICAgdHYudHZfdXNlYyA9IHVzZWM7CisKKyAgICAgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAodHYudHZfc2VjIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NSw3ICsyMjYsNiBAQAogICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQogCi0KICNpZmRlZiBTRUxFQ1RfVVNFU19IRUFQCiAgICAgLyogQWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgbGlzdHMgKi8KICAgICByZmQyb2JqID0gUHlNZW1fTkVXKHB5bGlzdCwgRkRfU0VUU0laRSArIDEpOwpAQCAtMjU4LDYgKzIzOCw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICNlbmRpZiAvKiBTRUxFQ1RfVVNFU19IRUFQICovCisKICAgICAvKiBDb252ZXJ0IHNlcXVlbmNlcyB0byBmZF9zZXRzLCBhbmQgZ2V0IG1heGltdW0gZmQgbnVtYmVyCiAgICAgICogcHJvcGFnYXRlcyB0aGUgUHl0aG9uIGV4Y2VwdGlvbiBzZXQgaW4gc2VxMnNldCgpCiAgICAgICovCkBAIC0yNzAsMTMgKzI1MSwzNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKChlbWF4PXNlcTJzZXQoZWZkbGlzdCwgJmVmZHNldCwgZWZkMm9iaikpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OworCiAgICAgbWF4ID0gaW1heDsKICAgICBpZiAob21heCA+IG1heCkgbWF4ID0gb21heDsKICAgICBpZiAoZW1heCA+IG1heCkgbWF4ID0gZW1heDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gc2VsZWN0KG1heCwgJmlmZHNldCwgJm9mZHNldCwgJmVmZHNldCwgdHZwKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh0dnApCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIG4gPSBzZWxlY3QobWF4LCAmaWZkc2V0LCAmb2Zkc2V0LCAmZWZkc2V0LCB0dnApOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHNlbGVjdCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisKKyAgICAgICAgaWYgKHR2cCkgeworICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgaWYgKHRpbWVvdXQgPCAwKSB7CisgICAgICAgICAgICAgICAgbiA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlUaW1lX0FzVGltZXZhbF9ub3JhaXNlKHRpbWVvdXQsICZ0diwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgICAgIC8qIHJldHJ5IHNlbGVjdCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKG4gPT0gU09DS0VUX0VSUk9SKSB7CkBAIC01MTYsMzAgKzUyMSwzOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvbGxfcG9sbChwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdG91dCA9IE5VTEw7Ci0gICAgaW50IHRpbWVvdXQgPSAwLCBwb2xsX3Jlc3VsdCwgaSwgajsKKyAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdGltZW91dF9vYmogPSBOVUxMOworICAgIGludCBwb2xsX3Jlc3VsdCwgaSwgajsKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMLCAqbnVtID0gTlVMTDsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgbXMsIGRlYWRsaW5lOworICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cG9sbCIsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogQ2hlY2sgdmFsdWVzIGZvciB0aW1lb3V0ICovCi0gICAgaWYgKHRvdXQgPT0gTlVMTCB8fCB0b3V0ID09IFB5X05vbmUpCisgICAgaWYgKHRpbWVvdXRfb2JqID09IE5VTEwgfHwgdGltZW91dF9vYmogPT0gUHlfTm9uZSkgewogICAgICAgICB0aW1lb3V0ID0gLTE7Ci0gICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbXMgPSAtMTsKKyAgICAgICAgZGVhZGxpbmUgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdG91dCA9IFB5TnVtYmVyX0xvbmcodG91dCk7Ci0gICAgICAgIGlmICghdG91dCkKKyAgICAgICAgaWYgKF9QeVRpbWVfRnJvbU1pbGxpc2Vjb25kc09iamVjdCgmdGltZW91dCwgdGltZW91dF9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHRpbWVvdXQgPSBfUHlMb25nX0FzSW50KHRvdXQpOwotICAgICAgICBQeV9ERUNSRUYodG91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIH0KKworICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1zIDwgSU5UX01JTiB8fCBtcyA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogICAgIH0KIAogICAgIC8qIEF2b2lkIGNvbmN1cnJlbnQgcG9sbCgpIGludm9jYXRpb24sIGlzc3VlIDg4NjUgKi8KQEAgLTU1NywxNCArNTcxLDM4IEBACiAgICAgc2VsZi0+cG9sbF9ydW5uaW5nID0gMTsKIAogICAgIC8qIGNhbGwgcG9sbCgpICovCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHBvbGxfcmVzdWx0ID0gcG9sbChzZWxmLT51ZmRzLCBzZWxmLT51ZmRfbGVuLCB0aW1lb3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGFzeW5jX2VyciA9IDA7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgcG9sbF9yZXN1bHQgPSBwb2xsKHNlbGYtPnVmZHMsIHNlbGYtPnVmZF9sZW4sIChpbnQpbXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHBvbGwoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7CisgICAgICAgICAgICBhc3luY19lcnIgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgICAgICAgICBwb2xsX3Jlc3VsdCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgICAgIC8qIHJldHJ5IHBvbGwoKSB3aXRoIHRoZSByZWNvbXB1dGVkIHRpbWVvdXQgKi8KKyAgICAgICAgfQorICAgIH0gd2hpbGUgKDEpOwogCiAgICAgc2VsZi0+cG9sbF9ydW5uaW5nID0gMDsKIAogICAgIGlmIChwb2xsX3Jlc3VsdCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBpZiAoIWFzeW5jX2VycikKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC01NzMsNDEgKzYxMSw0MCBAQAogICAgIHJlc3VsdF9saXN0ID0gUHlMaXN0X05ldyhwb2xsX3Jlc3VsdCk7CiAgICAgaWYgKCFyZXN1bHRfbGlzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBqIDwgcG9sbF9yZXN1bHQ7IGorKykgewotICAgICAgICAgICAgLyogc2tpcCB0byB0aGUgbmV4dCBmaXJlZCBkZXNjcmlwdG9yICovCi0gICAgICAgICAgICB3aGlsZSAoIXNlbGYtPnVmZHNbaV0ucmV2ZW50cykgewotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGlmIHdlIGhpdCBhIE5VTEwgcmV0dXJuLCBzZXQgdmFsdWUgdG8gTlVMTAotICAgICAgICAgICAgICAgYW5kIGJyZWFrIG91dCBvZiBsb29wOyBjb2RlIGF0IGVuZCB3aWxsCi0gICAgICAgICAgICAgICBjbGVhbiB1cCByZXN1bHRfbGlzdCAqLwotICAgICAgICAgICAgdmFsdWUgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5mZCk7Ci0gICAgICAgICAgICBpZiAobnVtID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHZhbHVlLCAwLCBudW0pOwogCi0gICAgICAgICAgICAvKiBUaGUgJjB4ZmZmZiBpcyBhIHdvcmthcm91bmQgZm9yIEFJWC4gICdyZXZlbnRzJwotICAgICAgICAgICAgICAgaXMgYSAxNi1iaXQgc2hvcnQsIGFuZCBJQk0gYXNzaWduZWQgUE9MTE5WQUwKLSAgICAgICAgICAgICAgIHRvIGJlIDB4ODAwMCwgc28gdGhlIGNvbnZlcnNpb24gdG8gaW50IHJlc3VsdHMKLSAgICAgICAgICAgICAgIGluIGEgbmVnYXRpdmUgbnVtYmVyLiBTZWUgU0YgYnVnICM5MjMzMTUuICovCi0gICAgICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5yZXZlbnRzICYgMHhmZmZmKTsKLSAgICAgICAgICAgIGlmIChudW0gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDEsIG51bSk7Ci0gICAgICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBqLCB2YWx1ZSkpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgIGZvciAoaSA9IDAsIGogPSAwOyBqIDwgcG9sbF9yZXN1bHQ7IGorKykgeworICAgICAgICAvKiBza2lwIHRvIHRoZSBuZXh0IGZpcmVkIGRlc2NyaXB0b3IgKi8KKyAgICAgICAgd2hpbGUgKCFzZWxmLT51ZmRzW2ldLnJldmVudHMpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQorICAgICAgICAvKiBpZiB3ZSBoaXQgYSBOVUxMIHJldHVybiwgc2V0IHZhbHVlIHRvIE5VTEwKKyAgICAgICAgICAgYW5kIGJyZWFrIG91dCBvZiBsb29wOyBjb2RlIGF0IGVuZCB3aWxsCisgICAgICAgICAgIGNsZWFuIHVwIHJlc3VsdF9saXN0ICovCisgICAgICAgIHZhbHVlID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgbnVtID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnVmZHNbaV0uZmQpOworICAgICAgICBpZiAobnVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odmFsdWUsIDAsIG51bSk7CisKKyAgICAgICAgLyogVGhlICYweGZmZmYgaXMgYSB3b3JrYXJvdW5kIGZvciBBSVguICAncmV2ZW50cycKKyAgICAgICAgICAgaXMgYSAxNi1iaXQgc2hvcnQsIGFuZCBJQk0gYXNzaWduZWQgUE9MTE5WQUwKKyAgICAgICAgICAgdG8gYmUgMHg4MDAwLCBzbyB0aGUgY29udmVyc2lvbiB0byBpbnQgcmVzdWx0cworICAgICAgICAgICBpbiBhIG5lZ2F0aXZlIG51bWJlci4gU2VlIFNGIGJ1ZyAjOTIzMzE1LiAqLworICAgICAgICBudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dWZkc1tpXS5yZXZlbnRzICYgMHhmZmZmKTsKKyAgICAgICAgaWYgKG51bSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHZhbHVlLCAxLCBudW0pOworICAgICAgICBpZiAoKFB5TGlzdF9TZXRJdGVtKHJlc3VsdF9saXN0LCBqLCB2YWx1ZSkpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpKys7CiAgICAgfQogICAgIHJldHVybiByZXN1bHRfbGlzdDsKIApAQCAtNzE4LDE0ICs3NTUsMTAgQEAKICAgICBzaXplID0gc2l6ZW9mKHN0cnVjdCBwb2xsZmQpKnNlbGYtPm5fZmRzOwogICAgIHNlbGYtPm5fZmRzID0gMDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gd3JpdGUoc2VsZi0+ZmRfZGV2cG9sbCwgc2VsZi0+ZmRzLCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKG4gPT0gLTEgKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICBuID0gX1B5X3dyaXRlKHNlbGYtPmZkX2RldnBvbGwsIHNlbGYtPmZkcywgc2l6ZSk7CisgICAgaWYgKG4gPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9CisKICAgICBpZiAobiA8IHNpemUpIHsKICAgICAgICAgLyoKICAgICAgICAgKiogRGF0YSB3cml0ZWQgdG8gL2Rldi9wb2xsIGlzIGEgYmluYXJ5IGRhdGEgc3RydWN0dXJlLiBJdCBpcyBub3QKQEAgLTg0Myw0MCArODc2LDM4IEBACiBkZXZwb2xsX3BvbGwoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgc3RydWN0IGR2cG9sbCBkdnA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdF9saXN0ID0gTlVMTCwgKnRvdXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHRfbGlzdCA9IE5VTEwsICp0aW1lb3V0X29iaiA9IE5VTEw7CiAgICAgaW50IHBvbGxfcmVzdWx0LCBpOwotICAgIGxvbmcgdGltZW91dDsKICAgICBQeU9iamVjdCAqdmFsdWUsICpudW0xLCAqbnVtMjsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgbXMsIGRlYWRsaW5lID0gMDsKIAogICAgIGlmIChzZWxmLT5mZF9kZXZwb2xsIDwgMCkKICAgICAgICAgcmV0dXJuIGRldnBvbGxfZXJyX2Nsb3NlZCgpOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9sbCIsIDAsIDEsICZ0b3V0KSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cG9sbCIsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogQ2hlY2sgdmFsdWVzIGZvciB0aW1lb3V0ICovCi0gICAgaWYgKHRvdXQgPT0gTlVMTCB8fCB0b3V0ID09IFB5X05vbmUpCisgICAgaWYgKHRpbWVvdXRfb2JqID09IE5VTEwgfHwgdGltZW91dF9vYmogPT0gUHlfTm9uZSkgewogICAgICAgICB0aW1lb3V0ID0gLTE7Ci0gICAgZWxzZSBpZiAoIVB5TnVtYmVyX0NoZWNrKHRvdXQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbXMgPSAtMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHRvdXQgPSBQeU51bWJlcl9Mb25nKHRvdXQpOwotICAgICAgICBpZiAoIXRvdXQpCisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21NaWxsaXNlY29uZHNPYmplY3QoJnRpbWVvdXQsIHRpbWVvdXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBhbiBpbnRlZ2VyIG9yIE5vbmUiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0aW1lb3V0ID0gUHlMb25nX0FzTG9uZyh0b3V0KTsKLSAgICAgICAgUHlfREVDUkVGKHRvdXQpOwotICAgICAgICBpZiAodGltZW91dCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgICAgICB9CiAKLSAgICBpZiAoKHRpbWVvdXQgPCAtMSkgfHwgKHRpbWVvdXQgPiBJTlRfTUFYKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IGlzIG91dCBvZiByYW5nZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbXMgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgICAgIGlmIChtcyA8IC0xIHx8IG1zID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJ0aW1lb3V0IGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoZGV2cG9sbF9mbHVzaChzZWxmKSkKQEAgLTg4NCwxMiArOTE1LDM2IEBACiAKICAgICBkdnAuZHBfZmRzID0gc2VsZi0+ZmRzOwogICAgIGR2cC5kcF9uZmRzID0gc2VsZi0+bWF4X25fZmRzOwotICAgIGR2cC5kcF90aW1lb3V0ID0gdGltZW91dDsKKyAgICBkdnAuZHBfdGltZW91dCA9IChpbnQpbXM7CiAKLSAgICAvKiBjYWxsIGRldnBvbGwoKSAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBwb2xsX3Jlc3VsdCA9IGlvY3RsKHNlbGYtPmZkX2RldnBvbGwsIERQX1BPTEwsICZkdnApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHRpbWVvdXQgPj0gMCkKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICAvKiBjYWxsIGRldnBvbGwoKSAqLworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgcG9sbF9yZXN1bHQgPSBpb2N0bChzZWxmLT5mZF9kZXZwb2xsLCBEUF9QT0xMLCAmZHZwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBkZXZwb2xsKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmICh0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIHBvbGxfcmVzdWx0ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgZHZwLmRwX3RpbWVvdXQgPSAoaW50KW1zOworICAgICAgICAgICAgLyogcmV0cnkgZGV2cG9sbCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICAgICBpZiAocG9sbF9yZXN1bHQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKQEAgLTg5NywyOCArOTUyLDI2IEBACiAgICAgfQogCiAgICAgLyogYnVpbGQgdGhlIHJlc3VsdCBsaXN0ICovCi0KICAgICByZXN1bHRfbGlzdCA9IFB5TGlzdF9OZXcocG9sbF9yZXN1bHQpOwogICAgIGlmICghcmVzdWx0X2xpc3QpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVsc2UgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcG9sbF9yZXN1bHQ7IGkrKykgewotICAgICAgICAgICAgbnVtMSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0uZmQpOwotICAgICAgICAgICAgbnVtMiA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0ucmV2ZW50cyk7Ci0gICAgICAgICAgICBpZiAoKG51bTEgPT0gTlVMTCkgfHwgKG51bTIgPT0gTlVMTCkpIHsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG51bTEpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIG51bTEsIG51bTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG51bTEpOwotICAgICAgICAgICAgUHlfREVDUkVGKG51bTIpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGksIHZhbHVlKSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcG9sbF9yZXN1bHQ7IGkrKykgeworICAgICAgICBudW0xID0gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkc1tpXS5mZCk7CisgICAgICAgIG51bTIgPSBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmRzW2ldLnJldmVudHMpOworICAgICAgICBpZiAoKG51bTEgPT0gTlVMTCkgfHwgKG51bTIgPT0gTlVMTCkpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMSk7CisgICAgICAgICAgICBQeV9YREVDUkVGKG51bTIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZSA9IFB5VHVwbGVfUGFjaygyLCBudW0xLCBudW0yKTsKKyAgICAgICAgUHlfREVDUkVGKG51bTEpOworICAgICAgICBQeV9ERUNSRUYobnVtMik7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKChQeUxpc3RfU2V0SXRlbShyZXN1bHRfbGlzdCwgaSwgdmFsdWUpKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMTMsNyArMTA2Niw2IEBACiAgICAgc3RydWN0IHBvbGxmZCAqZmRzOwogICAgIHN0cnVjdCBybGltaXQgbGltaXQ7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgLyoKICAgICAqKiBJZiB3ZSB0cnkgdG8gcHJvY2VzcyBtb3JlIHRoYXQgZ2V0cmxpbWl0KCkKICAgICAqKiBmZHMsIHRoZSBrZXJuZWwgd2lsbCBnaXZlIGFuIGVycm9yLCBzbwpAQCAtMTAyMSwxOCArMTA3MywxNCBAQAogICAgICoqIHZhbHVlLCBiZWNhdXNlIHdlIGNhbiBjaGFuZ2UgcmxpbWl0KCkgYW55dGltZS4KICAgICAqLwogICAgIGxpbWl0X3Jlc3VsdCA9IGdldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmbGltaXQpOwotICAgIGlmIChsaW1pdF9yZXN1bHQgIT0gLTEpCi0gICAgICAgIGZkX2RldnBvbGwgPSBfUHlfb3BlbigiL2Rldi9wb2xsIiwgT19SRFdSKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCiAgICAgaWYgKGxpbWl0X3Jlc3VsdCA9PSAtMSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZmRfZGV2cG9sbCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoUHlFeGNfSU9FcnJvciwgIi9kZXYvcG9sbCIpOworCisgICAgZmRfZGV2cG9sbCA9IF9QeV9vcGVuKCIvZGV2L3BvbGwiLCBPX1JEV1IpOworICAgIGlmIChmZF9kZXZwb2xsID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBmZHMgPSBQeU1lbV9ORVcoc3RydWN0IHBvbGxmZCwgbGltaXQucmxpbV9jdXIpOwogICAgIGlmIChmZHMgPT0gTlVMTCkgewpAQCAtMTQzNywzNCArMTQ4NSw0NiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXBvbGxfcG9sbChweUVwb2xsX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGRvdWJsZSBkdGltZW91dCA9IC0xLjsKLSAgICBpbnQgdGltZW91dDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InRpbWVvdXQiLCAibWF4ZXZlbnRzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gTlVMTDsKICAgICBpbnQgbWF4ZXZlbnRzID0gLTE7CiAgICAgaW50IG5mZHMsIGk7CiAgICAgUHlPYmplY3QgKmVsaXN0ID0gTlVMTCwgKmV0dXBsZSA9IE5VTEw7CiAgICAgc3RydWN0IGVwb2xsX2V2ZW50ICpldnMgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsidGltZW91dCIsICJtYXhldmVudHMiLCBOVUxMfTsKKyAgICBfUHlUaW1lX3QgdGltZW91dCwgbXMsIGRlYWRsaW5lOwogCiAgICAgaWYgKHNlbGYtPmVwZmQgPCAwKQogICAgICAgICByZXR1cm4gcHllcG9sbF9lcnJfY2xvc2VkKCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGRpOnBvbGwiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR0aW1lb3V0LCAmbWF4ZXZlbnRzKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T2k6cG9sbCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZW91dF9vYmosICZtYXhldmVudHMpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChkdGltZW91dCA8IDApIHsKKyAgICBpZiAodGltZW91dF9vYmogPT0gTlVMTCB8fCB0aW1lb3V0X29iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIHRpbWVvdXQgPSAtMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoZHRpbWVvdXQgKiAxMDAwLjAgPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgaXMgdG9vIGxhcmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtcyA9IC0xOworICAgICAgICBkZWFkbGluZSA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBlcG9sbF93YWl0KCkgaGFzIGEgcmVzb2x1dGlvbiBvZiAxIG1pbGxpc2Vjb25kLCByb3VuZCBhd2F5IGZyb20gemVybwotICAgICAgICAgICB0byB3YWl0ICphdCBsZWFzdCogZHRpbWVvdXQgc2Vjb25kcy4gKi8KLSAgICAgICAgdGltZW91dCA9IChpbnQpY2VpbChkdGltZW91dCAqIDEwMDAuMCk7CisgICAgICAgIC8qIGVwb2xsX3dhaXQoKSBoYXMgYSByZXNvbHV0aW9uIG9mIDEgbWlsbGlzZWNvbmQsIHJvdW5kIHRvd2FyZHMKKyAgICAgICAgICAgaW5maW5pdHkgdG8gd2FpdCBhdCBsZWFzdCB0aW1lb3V0IHNlY29uZHMuICovCisgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LCB0aW1lb3V0X29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIGFuIGludGVnZXIgb3IgTm9uZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHModGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICAgICAgaWYgKG1zIDwgSU5UX01JTiB8fCBtcyA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OwogICAgIH0KIAogICAgIGlmIChtYXhldmVudHMgPT0gLTEpIHsKQEAgLTE0ODMsOSArMTU0MywzMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgbmZkcyA9IGVwb2xsX3dhaXQoc2VsZi0+ZXBmZCwgZXZzLCBtYXhldmVudHMsIHRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgbmZkcyA9IGVwb2xsX3dhaXQoc2VsZi0+ZXBmZCwgZXZzLCBtYXhldmVudHMsIChpbnQpbXMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIHBvbGwoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAodGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAgICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgICAgICAgICBuZmRzID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyh0aW1lb3V0LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICAgICAgLyogcmV0cnkgZXBvbGxfd2FpdCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSgxKTsKKwogICAgIGlmIChuZmRzIDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yMDIyLDggKzIxMDMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIHN0cnVjdCBrZXZlbnQgKmV2bCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqY2hsID0gTlVMTDsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZW91dHNwZWM7CiAgICAgc3RydWN0IHRpbWVzcGVjICpwdGltZW91dHNwZWM7CisgICAgX1B5VGltZV90IHRpbWVvdXQsIGRlYWRsaW5lID0gMDsKIAogICAgIGlmIChzZWxmLT5rcWZkIDwgMCkKICAgICAgICAgcmV0dXJuIGtxdWV1ZV9xdWV1ZV9lcnJfY2xvc2VkKCk7CkBAIC0yMDQxLDI0ICsyMTIzLDI1IEBACiAgICAgaWYgKG90aW1lb3V0ID09IFB5X05vbmUgfHwgb3RpbWVvdXQgPT0gTlVMTCkgewogICAgICAgICBwdGltZW91dHNwZWMgPSBOVUxMOwogICAgIH0KLSAgICBlbHNlIGlmIChQeU51bWJlcl9DaGVjayhvdGltZW91dCkpIHsKLSAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvdGltZW91dCwgJnRpbWVvdXQudHZfc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aW1lb3V0LnR2X25zZWMsIF9QeVRpbWVfUk9VTkRfVVApID09IC0xKQorICAgIGVsc2UgeworICAgICAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYW4gbnVtYmVyICIKKyAgICAgICAgICAgICAgICAib3IgTm9uZSwgZ290ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgUHlfVFlQRShvdGltZW91dCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHRpbWVvdXQsICZ0aW1lb3V0c3BlYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAodGltZW91dC50dl9zZWMgPCAwKSB7CisgICAgICAgIGlmICh0aW1lb3V0c3BlYy50dl9zZWMgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBtdXN0IGJlIHBvc2l0aXZlIG9yIE5vbmUiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYW4gbnVtYmVyICIKLSAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKLSAgICAgICAgICAgIFB5X1RZUEUob3RpbWVvdXQpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHB0aW1lb3V0c3BlYyA9ICZ0aW1lb3V0c3BlYzsKICAgICB9CiAKICAgICBpZiAoY2ggIT0gTlVMTCAmJiBjaCAhPSBQeV9Ob25lKSB7CkBAIC0yMTAzLDEwICsyMTg2LDM0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZ290ZXZlbnRzID0ga2V2ZW50KHNlbGYtPmtxZmQsIGNobCwgbmNoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgIGV2bCwgbmV2ZW50cywgcHRpbWVvdXRzcGVjKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChwdGltZW91dHNwZWMpCisgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgdGltZW91dDsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIGdvdGV2ZW50cyA9IGtldmVudChzZWxmLT5rcWZkLCBjaGwsIG5jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZsLCBuZXZlbnRzLCBwdGltZW91dHNwZWMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIGtldmVudCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChwdGltZW91dHNwZWMpIHsKKyAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgICAgIGlmICh0aW1lb3V0IDwgMCkgeworICAgICAgICAgICAgICAgIGdvdGV2ZW50cyA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHRpbWVvdXQsICZ0aW1lb3V0c3BlYykgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIC8qIHJldHJ5IGtldmVudCgpIHdpdGggdGhlIHJlY29tcHV0ZWQgdGltZW91dCAqLworICAgICAgICB9CisgICAgfSB3aGlsZSAoMSk7CiAKICAgICBpZiAoZ290ZXZlbnRzID09IC0xKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggYjQ0ZmUxOC4uNzRiOTRiYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTE4LDcgKzE4LDEzIEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGExCitjbGFzcyBTSEExVHlwZSAiU0hBMW9iamVjdCAqIiAiJlB5VHlwZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9M2RjOWEyMGQxYmVjYjc1OV0qLwogCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCkBAIC00OCw2ICs1NCw3IEBACiAgICAgc3RydWN0IHNoYTFfc3RhdGUgaGFzaF9zdGF0ZTsKIH0gU0hBMW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9zaGExbW9kdWxlLmMuaCIKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgpAQCAtMzA5LDEwICszMTYsMTUgQEAKIAogLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLwogCi1QeURvY19TVFJWQVIoU0hBMV9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMVR5cGUuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfY29weShTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMVR5cGVfY29weV9pbXBsKFNIQTFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjRlMDAxMjY0NjIwZjAyYSBpbnB1dD1iN2VhZTEwZGY2Zjg5YjM2XSovCiB7CiAgICAgU0hBMW9iamVjdCAqbmV3b2JqOwogCkBAIC0zMjMsMTEgKzMzNSwxNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEExX2RpZ2VzdF9fZG9jX18sCi0iUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEExVHlwZS5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEExX2RpZ2VzdChTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMVR5cGVfZGlnZXN0X2ltcGwoU0hBMW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZjA1MzAyYTdhYTJiNWNiIGlucHV0PTIwNWQ0N2UxOTI3ZmQwMDldKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEExX0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBzaGExX3N0YXRlIHRlbXA7CkBAIC0zMzcsNTQgKzM1Myw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBTSEExX0RJR0VTVFNJWkUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBMV9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTFUeXBlLmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1TSEExX2hleGRpZ2VzdChTSEExb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMVR5cGVfaGV4ZGlnZXN0X2ltcGwoU0hBMW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MTYxZmQ3MWU2OGM2NjU5IGlucHV0PTk3NjkxMDU1YzBjNzRhYjBdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEExX0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBzaGExX3N0YXRlIHRlbXA7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VQ1MxICpoZXhfZGlnZXN0OwotICAgIGludCBpLCBqOwogCiAgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCiAgICAgdGVtcCA9IHNlbGYtPmhhc2hfc3RhdGU7CiAgICAgc2hhMV9kb25lKCZ0ZW1wLCBkaWdlc3QpOwogCi0gICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9OZXcoU0hBMV9ESUdFU1RTSVpFICogMiwgMTI3KTsKLSAgICBpZiAoIXJldHZhbCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwotCi0gICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCi0gICAgZm9yKGk9aj0wOyBpPFNIQTFfRElHRVNUU0laRTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIFNIQTFfRElHRVNUU0laRSk7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEExX3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEExVHlwZS51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTFfdXBkYXRlKFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU0hBMVR5cGVfdXBkYXRlKFNIQTFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDk5MDJmMGU1MDE1ZTlhZSBpbnB1dD1hYWQ4ZTA3ODEyZWRiYmEzXSovCiB7Ci0gICAgUHlPYmplY3QgKm9iajsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnVwZGF0ZSIsICZvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKIAogICAgIHNoYTFfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CkBAIC0zOTUsMTAgKzM5OCwxMCBAQAogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgU0hBMV9tZXRob2RzW10gPSB7Ci0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pU0hBMV9jb3B5LCAgICAgIE1FVEhfTk9BUkdTLCAgU0hBMV9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pU0hBMV9kaWdlc3QsICAgIE1FVEhfTk9BUkdTLCAgU0hBMV9kaWdlc3RfX2RvY19ffSwKLSAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEExX2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsICBTSEExX2hleGRpZ2VzdF9fZG9jX199LAotICAgIHsidXBkYXRlIiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTFfdXBkYXRlLCAgICBNRVRIX1ZBUkFSR1MsIFNIQTFfdXBkYXRlX19kb2NfX30sCisgICAgU0hBMVRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICBTSEExVFlQRV9ESUdFU1RfTUVUSE9EREVGCisgICAgU0hBMVRZUEVfSEVYRElHRVNUX01FVEhPRERFRgorICAgIFNIQTFUWVBFX1VQREFURV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQ3NCwyNyArNDc3LDI2IEBACiAKIC8qIFRoZSBzaW5nbGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uOiBuZXcoKSAqLwogCi1QeURvY19TVFJWQVIoU0hBMV9uZXdfX2RvY19fLAotIlJldHVybiBhIG5ldyBTSEExIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitfc2hhMS5zaGExCisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBMSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMV9uZXcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkaWN0KQorX3NoYTFfc2hhMV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U0ZTg0MTM4NmI5ZThkYiBpbnB1dD0yN2VhNTQyODFkOTk1ZWMyXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEExb2JqZWN0ICpuZXc7Ci0gICAgUHlPYmplY3QgKmRhdGFfb2JqID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAifE86bmV3Iiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX29iaikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKGRhdGFfb2JqKQotICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKGRhdGFfb2JqLCAmYnVmKTsKKyAgICBpZiAoc3RyaW5nKQorICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKHN0cmluZywgJmJ1Zik7CiAKICAgICBpZiAoKG5ldyA9IG5ld1NIQTFvYmplY3QoKSkgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01MDMsMTEgKzUwNSwxMSBAQAogCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgIGlmIChkYXRhX29iaikKKyAgICAgICAgaWYgKHN0cmluZykKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGF0YV9vYmopIHsKKyAgICBpZiAoc3RyaW5nKSB7CiAgICAgICAgIHNoYTFfcHJvY2VzcygmbmV3LT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICB9CkBAIC01MTksNyArNTIxLDcgQEAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlICovCiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgU0hBMV9mdW5jdGlvbnNbXSA9IHsKLSAgICB7InNoYTEiLChQeUNGdW5jdGlvbilTSEExX25ldywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsU0hBMV9uZXdfX2RvY19ffSwKKyAgICBfU0hBMV9TSEExX01FVEhPRERFRgogICAgIHtOVUxMLCAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCmluZGV4IGIwNWJmYzEuLjhjNGRlZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwpAQCAtMTksNyArMTksMTMgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJoYXNobGliLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKIAorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGEyNTYKK2NsYXNzIFNIQTI1NlR5cGUgIlNIQW9iamVjdCAqIiAiJlB5VHlwZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NzFhMzkxNzRkNGYwYTc0NF0qLwogCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCkBAIC00Nyw2ICs1Myw4IEBACiAgICAgaW50IGRpZ2VzdHNpemU7CiB9IFNIQW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9zaGEyNTZtb2R1bGUuYy5oIgorCiAvKiBXaGVuIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gQ1BVIHdlIG5lZWQgdG8gcGVyZm9ybSBieXRlIHJldmVyc2FsIG9uIGFuCiAgICBhcnJheSBvZiBsb25nd29yZHMuICovCiAKQEAgLTM5MywxMCArNDAxLDE1IEBACiAKIC8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KIAotUHlEb2NfU1RSVkFSKFNIQTI1Nl9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorU0hBMjU2VHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMjU2VHlwZV9jb3B5X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhOGJiZDY2YTBjOWMxNjggaW5wdXQ9ZjU4ODQwYTYxOGQ0ZjJhN10qLwogewogICAgIFNIQW9iamVjdCAqbmV3b2JqOwogCkBAIC00MTIsMTEgKzQyNSwxNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEEyNTZfZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTI1NlR5cGUuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEEyNTZUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NjYxNmE1ZTkwOWZiYzNkIGlucHV0PTFmYjc1MmU1ODk1NDE1N2RdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CkBAIC00MjYsNTQgKzQ0Myw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5kaWdlc3RzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTI1Nl9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTI1NlR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTI1Nl9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBMjU2VHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI1ZjhhNzA0MWFlOTdmMyBpbnB1dD0wY2M0YzcxNDY5MzAxMGQxXSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKLSAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwogICAgIFNIQWNvcHkoc2VsZiwgJnRlbXApOwogICAgIHNoYV9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAotICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKLSAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgfQotI2lmZGVmIFB5X0RFQlVHCi0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKLSNlbmRpZgotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPmRpZ2VzdHNpemUpOwogfQogCi1QeURvY19TVFJWQVIoU0hBMjU2X3VwZGF0ZV9fZG9jX18sCi0iVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitTSEEyNTZUeXBlLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X3VwZGF0ZShTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorU0hBMjU2VHlwZV91cGRhdGUoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NjdmYjI4NjBjNjZhZjcgaW5wdXQ9YjJkNDQ5ZDViMzBmMGY1YV0qLwogewotICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlfYnVmZmVyIGJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1cGRhdGUiLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CiAKICAgICBzaGFfdXBkYXRlKHNlbGYsIGJ1Zi5idWYsIGJ1Zi5sZW4pOwpAQCAtNDg0LDEwICs0ODgsMTAgQEAKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIFNIQV9tZXRob2RzW10gPSB7Ci0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pU0hBMjU2X2NvcHksICAgICAgTUVUSF9OT0FSR1MsICBTSEEyNTZfY29weV9fZG9jX199LAotICAgIHsiZGlnZXN0IiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl9kaWdlc3QsICAgIE1FVEhfTk9BUkdTLCAgU0hBMjU2X2RpZ2VzdF9fZG9jX199LAotICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCAgU0hBMjU2X2hleGRpZ2VzdF9fZG9jX199LAotICAgIHsidXBkYXRlIiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTI1Nl91cGRhdGUsICAgIE1FVEhfVkFSQVJHUywgU0hBMjU2X3VwZGF0ZV9fZG9jX199LAorICAgIFNIQTI1NlRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICBTSEEyNTZUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyAgICBTSEEyNTZUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBTSEEyNTZUWVBFX1VQREFURV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTU5NCwyNyArNTk4LDI2IEBACiAKIC8qIFRoZSBzaW5nbGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uOiBuZXcoKSAqLwogCi1QeURvY19TVFJWQVIoU0hBMjU2X25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEyNTYuc2hhMjU2CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjU2X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhMjU2X3NoYTI1Nl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDcwZTZlMmQ5NzExMjg0NCBpbnB1dD0wOWNjZTNmYjg1NTA1NmIyXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMjU2b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjIzLDExICs2MjYsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGFfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNjM1LDI3ICs2MzgsMjYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3OwogfQogCi1QeURvY19TVFJWQVIoU0hBMjI0X25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEyNTYuc2hhMjI0CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTIyNCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMjI0X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhMjU2X3NoYTIyNF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjI4MjJiZjI4NDE2YjQyYSBpbnB1dD0yN2EwNGJhMjRjMzUzYTczXSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMjI0b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjY0LDExICs2NjYsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGFfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNjgwLDggKzY4Miw4IEBACiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLwogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIFNIQV9mdW5jdGlvbnNbXSA9IHsKLSAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilTSEEyNTZfbmV3LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgU0hBMjU2X25ld19fZG9jX199LAotICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKVNIQTIyNF9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEEyMjRfbmV3X19kb2NfX30sCisgICAgX1NIQTI1Nl9TSEEyNTZfTUVUSE9EREVGCisgICAgX1NIQTI1Nl9TSEEyMjRfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggNDdjNTdlNS4uODIzN2Q4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCkBAIC0xOSw2ICsxOSwxMyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImhhc2hsaWIuaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTUxMgorY2xhc3MgU0hBNTEyVHlwZSAiU0hBb2JqZWN0ICoiICImUHlUeXBlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04MWEzY2NkZTkyYmNmZThkXSovCiAKICNpZmRlZiBQWV9MT05HX0xPTkcgLyogSWYgbm8gUFlfTE9OR19MT05HLCBkb24ndCBjb21waWxlIGFueXRoaW5nISAqLwogCkBAIC00OSw2ICs1Niw4IEBACiAgICAgaW50IGRpZ2VzdHNpemU7CiB9IFNIQW9iamVjdDsKIAorI2luY2x1ZGUgImNsaW5pYy9zaGE1MTJtb2R1bGUuYy5oIgorCiAvKiBXaGVuIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gQ1BVIHdlIG5lZWQgdG8gcGVyZm9ybSBieXRlIHJldmVyc2FsIG9uIGFuCiAgICBhcnJheSBvZiBsb25nd29yZHMuICovCiAKQEAgLTQ1OSwxMCArNDY4LDE1IEBACiAKIC8qIEV4dGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl9jb3B5X19kb2NfXywgIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX2NvcHkoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBNTEyVHlwZV9jb3B5X2ltcGwoU0hBb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFkZWE4OTZlZDMxNjQ4MjEgaW5wdXQ9OWY1ZjMxZTZjNDU3Nzc2YV0qLwogewogICAgIFNIQW9iamVjdCAqbmV3b2JqOwogCkBAIC00NzgsMTEgKzQ5MiwxNSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7CiB9CiAKLVB5RG9jX1NUUlZBUihTSEE1MTJfZGlnZXN0X19kb2NfXywKLSJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTUxMlR5cGUuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX2RpZ2VzdChTSEFvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKFNIQW9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMDgwYmJlZWVmN2RkZTFiIGlucHV0PTYwYzJjZWRlOWUwMjMwMThdKi8KIHsKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CkBAIC00OTIsNTQgKzUxMCw0MSBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5kaWdlc3RzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl9oZXhkaWdlc3RfX2RvY19fLAotIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK1NIQTUxMlR5cGUuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTUxMl9oZXhkaWdlc3QoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChTSEFvYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM3MzMwNWI4NjAxZTE4YiBpbnB1dD00OThiODc3YjI1Y2JlMGEyXSovCiB7CiAgICAgdW5zaWduZWQgY2hhciBkaWdlc3RbU0hBX0RJR0VTVFNJWkVdOwogICAgIFNIQW9iamVjdCB0ZW1wOwotICAgIFB5T2JqZWN0ICpyZXR2YWw7Ci0gICAgUHlfVUNTMSAqaGV4X2RpZ2VzdDsKLSAgICBpbnQgaSwgajsKIAogICAgIC8qIEdldCB0aGUgcmF3IChiaW5hcnkpIGRpZ2VzdCB2YWx1ZSAqLwogICAgIFNIQWNvcHkoc2VsZiwgJnRlbXApOwogICAgIHNoYTUxMl9maW5hbChkaWdlc3QsICZ0ZW1wKTsKIAotICAgIC8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KHNlbGYtPmRpZ2VzdHNpemUgKiAyLCAxMjcpOwotICAgIGlmICghcmV0dmFsKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7Ci0KLSAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KLSAgICBmb3IgKGk9aj0wOyBpPHNlbGYtPmRpZ2VzdHNpemU7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107Ci0gICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwotICAgIH0KLSNpZmRlZiBQeV9ERUJVRwotICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBzZWxmLT5kaWdlc3RzaXplKTsKIH0KIAotUHlEb2NfU1RSVkFSKFNIQTUxMl91cGRhdGVfX2RvY19fLAotIlVwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorU0hBNTEyVHlwZS51cGRhdGUKKworICAgIG9iajogb2JqZWN0CisgICAgLworCitVcGRhdGUgdGhpcyBoYXNoIG9iamVjdCdzIHN0YXRlIHdpdGggdGhlIHByb3ZpZGVkIHN0cmluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVNIQTUxMl91cGRhdGUoU0hBb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK1NIQTUxMlR5cGVfdXBkYXRlKFNIQW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xY2YzMzNlNzM5OTVhNzllIGlucHV0PWRlZDJiNDY2NTY1NjYyODNdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dXBkYXRlIiwgJm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOwogCiAgICAgc2hhNTEyX3VwZGF0ZShzZWxmLCBidWYuYnVmLCBidWYubGVuKTsKQEAgLTU0OCwxMiArNTUzLDE2IEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQorLypbY2xpbmljIGlucHV0XQorZHVtcCBidWZmZXIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTUyNGNlMmUwMjFlNGViYTZdKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIFNIQV9tZXRob2RzW10gPSB7Ci0gICAgeyJjb3B5IiwgICAgICAoUHlDRnVuY3Rpb24pU0hBNTEyX2NvcHksICAgICAgTUVUSF9OT0FSR1MsIFNIQTUxMl9jb3B5X19kb2NfX30sCi0gICAgeyJkaWdlc3QiLCAgICAoUHlDRnVuY3Rpb24pU0hBNTEyX2RpZ2VzdCwgICAgTUVUSF9OT0FSR1MsIFNIQTUxMl9kaWdlc3RfX2RvY19ffSwKLSAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilTSEE1MTJfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgU0hBNTEyX2hleGRpZ2VzdF9fZG9jX199LAotICAgIHsidXBkYXRlIiwgICAgKFB5Q0Z1bmN0aW9uKVNIQTUxMl91cGRhdGUsICAgIE1FVEhfVkFSQVJHUywgU0hBNTEyX3VwZGF0ZV9fZG9jX199LAorICAgIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKKyAgICBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKKyAgICBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTY2MCwyNyArNjY5LDI2IEBACiAKIC8qIFRoZSBzaW5nbGUgbW9kdWxlLWxldmVsIGZ1bmN0aW9uOiBuZXcoKSAqLwogCi1QeURvY19TVFJWQVIoU0hBNTEyX25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS01MTIgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGE1MTIuc2hhNTEyCisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTUxMiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBNTEyX25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhNTEyX3NoYTUxMl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGExM2JjMGE5NGRhNmRlMyBpbnB1dD1lNjliYWQ5YWU5YjZhMzA4XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBNTEyb2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjg5LDExICs2OTcsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGE1MTJfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNzAxLDI3ICs3MDksMjYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3OwogfQogCi1QeURvY19TVFJWQVIoU0hBMzg0X25ld19fZG9jX18sCi0iUmV0dXJuIGEgbmV3IFNIQS0zODQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGE1MTIuc2hhMzg0CisKKyAgICBzdHJpbmc6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJworCitSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotU0hBMzg0X25ldyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCitfc2hhNTEyX3NoYTM4NF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWM3MzFhZWE1NTA5MTc0ZCBpbnB1dD1jOTMyNzc4OGQ0ZWE0NTQ1XSovCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzdHJpbmciLCBOVUxMfTsKICAgICBTSEFvYmplY3QgKm5ldzsKLSAgICBQeU9iamVjdCAqZGF0YV9vYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJ8TzpuZXciLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfb2JqKSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YV9vYmopCi0gICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoZGF0YV9vYmosICZidWYpOworICAgIGlmIChzdHJpbmcpCisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQoc3RyaW5nLCAmYnVmKTsKIAogICAgIGlmICgobmV3ID0gbmV3U0hBMzg0b2JqZWN0KCkpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRhdGFfb2JqKQorICAgICAgICBpZiAoc3RyaW5nKQogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNzMwLDExICs3MzcsMTEgQEAKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICBpZiAoZGF0YV9vYmopCisgICAgICAgIGlmIChzdHJpbmcpCiAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKGRhdGFfb2JqKSB7CisgICAgaWYgKHN0cmluZykgewogICAgICAgICBzaGE1MTJfdXBkYXRlKG5ldywgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CiAgICAgfQpAQCAtNzQzLDExICs3NTAsMTYgQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCitkdW1wIGJ1ZmZlcgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NTI0Y2UyZTAyMWU0ZWJhNl0qLworCiAvKiBMaXN0IG9mIGZ1bmN0aW9ucyBleHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLwogCiBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIFNIQV9mdW5jdGlvbnNbXSA9IHsKLSAgICB7InNoYTUxMiIsIChQeUNGdW5jdGlvbilTSEE1MTJfbmV3LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgU0hBNTEyX25ld19fZG9jX199LAotICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKVNIQTM4NF9uZXcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBTSEEzODRfbmV3X19kb2NfX30sCisgICAgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCisgICAgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKaW5kZXggZmVkYWRkZi4uNzBmMzA1MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCkBAIC03LDYgKzcsOSBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSAicG9zaXhtb2R1bGUuaCIKICNlbmRpZgorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIgICAvKiBuZWVkZWQgZm9yIFNPQ0tFVF9UICovCisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC00OSw2ICs1MiwxMyBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpbmNsdWRlICJjbGluaWMvc2lnbmFsbW9kdWxlLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIHNpZ25hbAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjAzMDFhM2JkZTVmZTlkM10qLworCiAKIC8qCiAgICBOT1RFUyBPTiBUSEUgSU5URVJBQ1RJT04gQkVUV0VFTiBTSUdOQUxTIEFORCBUSFJFQURTCkBAIC04Nyw3ICs5NywyMCBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogfSBIYW5kbGVyc1tOU0lHXTsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgSU5WQUxJRF9GRCAoKFNPQ0tFVF9UKS0xKQorCitzdGF0aWMgdm9sYXRpbGUgc3RydWN0IHsKKyAgICBTT0NLRVRfVCBmZDsKKyAgICBpbnQgdXNlX3NlbmQ7CisgICAgaW50IHNlbmRfZXJyX3NldDsKKyAgICBpbnQgc2VuZF9lcnJubzsKKyAgICBpbnQgc2VuZF93aW5fZXJyb3I7Cit9IHdha2V1cCA9IHtJTlZBTElEX0ZELCAwLCAwfTsKKyNlbHNlCisjZGVmaW5lIElOVkFMSURfRkQgKC0xKQogc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCB3YWtldXBfZmQgPSAtMTsKKyNlbmRpZgogCiAvKiBTcGVlZCB1cCBzaWdjaGVjaygpIHdoZW4gbm9uZSB0cmlwcGVkICovCiBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGlzX3RyaXBwZWQgPSAwOwpAQCAtMTcyLDcgKzE5NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXJlcG9ydF93YWtldXBfZXJyb3Iodm9pZCAqZGF0YSkKK3JlcG9ydF93YWtldXBfd3JpdGVfZXJyb3Iodm9pZCAqZGF0YSkKIHsKICAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOwogICAgIGVycm5vID0gKGludCkgKFB5X2ludHB0cl90KSBkYXRhOwpAQCAtMTg0LDI1ICsyMDcsODcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBpbnQKK3JlcG9ydF93YWtldXBfc2VuZF9lcnJvcih2b2lkKiBQeV9VTlVTRUQoZGF0YSkpCit7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIGlmICh3YWtldXAuc2VuZF93aW5fZXJyb3IpIHsKKyAgICAgICAgLyogUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoKSBpbnZva2VzIEZvcm1hdE1lc3NhZ2UoKSB3aGljaAorICAgICAgICAgICByZWNvZ25pemVzIHRoZSBlcnJvciBjb2RlcyB1c2VkIGJ5IGJvdGggR2V0TGFzdEVycm9yKCkgYW5kCisgICAgICAgICAgIFdTQUdldExhc3RFcnJvciAqLworICAgICAgICByZXMgPSBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCB3YWtldXAuc2VuZF93aW5fZXJyb3IpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXJybm8gPSB3YWtldXAuc2VuZF9lcnJubzsKKyAgICAgICAgcmVzID0gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKworICAgIGFzc2VydChyZXMgPT0gTlVMTCk7CisgICAgd2FrZXVwLnNlbmRfZXJyX3NldCA9IDA7CisKKyAgICBQeVN5c19Xcml0ZVN0ZGVycigiRXhjZXB0aW9uIGlnbm9yZWQgd2hlbiB0cnlpbmcgdG8gc2VuZCB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CisgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKE5VTEwpOworCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYgICAvKiBNU19XSU5ET1dTICovCisKIHN0YXRpYyB2b2lkCiB0cmlwX3NpZ25hbChpbnQgc2lnX251bSkKIHsKICAgICB1bnNpZ25lZCBjaGFyIGJ5dGU7Ci0gICAgaW50IHJjID0gMDsKKyAgICBpbnQgZmQ7CisgICAgUHlfc3NpemVfdCByYzsKIAogICAgIEhhbmRsZXJzW3NpZ19udW1dLnRyaXBwZWQgPSAxOwotICAgIGlmICh3YWtldXBfZmQgIT0gLTEpIHsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBmZCA9IFB5X1NBRkVfRE9XTkNBU1Qod2FrZXVwLmZkLCBTT0NLRVRfVCwgaW50KTsKKyNlbHNlCisgICAgZmQgPSB3YWtldXBfZmQ7CisjZW5kaWYKKworICAgIGlmIChmZCAhPSBJTlZBTElEX0ZEKSB7CiAgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOwotICAgICAgICB3aGlsZSAoKHJjID0gd3JpdGUod2FrZXVwX2ZkLCAmYnl0ZSwgMSkpID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKLSAgICAgICAgaWYgKHJjID09IC0xKQotICAgICAgICAgICAgUHlfQWRkUGVuZGluZ0NhbGwocmVwb3J0X3dha2V1cF9lcnJvciwgKHZvaWQgKikgKFB5X2ludHB0cl90KSBlcnJubyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAod2FrZXVwLnVzZV9zZW5kKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgcmMgPSBzZW5kKGZkLCAmYnl0ZSwgMSwgMCk7CisgICAgICAgICAgICB9IHdoaWxlIChyYyA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOworCisgICAgICAgICAgICAvKiB3ZSBvbmx5IGhhdmUgYSBzdG9yYWdlIGZvciBvbmUgZXJyb3IgaW4gdGhlIHdha2V1cCBzdHJ1Y3R1cmUgKi8KKyAgICAgICAgICAgIGlmIChyYyA8IDAgJiYgIXdha2V1cC5zZW5kX2Vycl9zZXQpIHsKKyAgICAgICAgICAgICAgICB3YWtldXAuc2VuZF9lcnJfc2V0ID0gMTsKKyAgICAgICAgICAgICAgICB3YWtldXAuc2VuZF9lcnJubyA9IGVycm5vOworICAgICAgICAgICAgICAgIHdha2V1cC5zZW5kX3dpbl9lcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfc2VuZF9lcnJvciwgTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ5dGUgPSAodW5zaWduZWQgY2hhcilzaWdfbnVtOworCisgICAgICAgICAgICAvKiBfUHlfd3JpdGVfbm9yYWlzZSgpIHJldHJpZXMgd3JpdGUoKSBpZiB3cml0ZSgpIGlzIGludGVycnVwdGVkIGJ5CisgICAgICAgICAgICAgICBhIHNpZ25hbCAoZmFpbHMgd2l0aCBFSU5UUikuICovCisgICAgICAgICAgICByYyA9IF9QeV93cml0ZV9ub3JhaXNlKGZkLCAmYnl0ZSwgMSk7CisKKyAgICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9BZGRQZW5kaW5nQ2FsbChyZXBvcnRfd2FrZXVwX3dyaXRlX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKFB5X2ludHB0cl90KWVycm5vKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoaXNfdHJpcHBlZCkKLSAgICAgICAgcmV0dXJuOwotICAgIC8qIFNldCBpc190cmlwcGVkIGFmdGVyIHNldHRpbmcgLnRyaXBwZWQsIGFzIGl0IGdldHMKLSAgICAgICBjbGVhcmVkIGluIFB5RXJyX0NoZWNrU2lnbmFscygpIGJlZm9yZSAudHJpcHBlZC4gKi8KLSAgICBpc190cmlwcGVkID0gMTsKLSAgICBQeV9BZGRQZW5kaW5nQ2FsbChjaGVja3NpZ25hbHNfd2l0aGFyZywgTlVMTCk7CisKKyAgICBpZiAoIWlzX3RyaXBwZWQpIHsKKyAgICAgICAgLyogU2V0IGlzX3RyaXBwZWQgYWZ0ZXIgc2V0dGluZyAudHJpcHBlZCwgYXMgaXQgZ2V0cworICAgICAgICAgICBjbGVhcmVkIGluIFB5RXJyX0NoZWNrU2lnbmFscygpIGJlZm9yZSAudHJpcHBlZC4gKi8KKyAgICAgICAgaXNfdHJpcHBlZCA9IDE7CisgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjcsNyArMzEyLDcgQEAKICAgICBpZiAoc2lnX251bSAhPSBTSUdDSExEKQogI2VuZGlmCiAgICAgLyogSWYgdGhlIGhhbmRsZXIgd2FzIG5vdCBzZXQgdXAgd2l0aCBzaWdhY3Rpb24sIHJlaW5zdGFsbCBpdC4gIFNlZQotICAgICAqIFB5dGhvbi9weXRob25ydW4uYyBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIFB5T1Nfc2V0c2lnIHdoaWNoCisgICAgICogUHl0aG9uL3B5bGlmZWN5Y2xlLmMgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBQeU9TX3NldHNpZyB3aGljaAogICAgICAqIG1ha2VzIHRoaXMgdHJ1ZS4gIFNlZSBhbHNvIGlzc3VlODM1NC4gKi8KICAgICBQeU9TX3NldHNpZyhzaWdfbnVtLCBzaWduYWxfaGFuZGxlcik7CiAjZW5kaWYKQEAgLTI0NCwyNSArMzI5LDM3IEBACiAKIAogI2lmZGVmIEhBVkVfQUxBUk0KLXN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfYWxhcm0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuYWxhcm0gLT4gbG9uZworCisgICAgc2Vjb25kczogaW50CisgICAgLworCitBcnJhbmdlIGZvciBTSUdBTFJNIHRvIGFycml2ZSBhZnRlciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCitzaWduYWxfYWxhcm1faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2Vjb25kcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNWY5YmFkYWFiMjVkM2U3IGlucHV0PTBkNWU5N2UwZTZmMzllODZdKi8KIHsKLSAgICBpbnQgdDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6YWxhcm0iLCAmdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIC8qIGFsYXJtKCkgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgcmVtYWluaW5nICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylhbGFybSh0KSk7CisgICAgcmV0dXJuIChsb25nKWFsYXJtKHNlY29uZHMpOwogfQogCi1QeURvY19TVFJWQVIoYWxhcm1fZG9jLAotImFsYXJtKHNlY29uZHMpXG5cCi1cblwKLUFycmFuZ2UgZm9yIFNJR0FMUk0gdG8gYXJyaXZlIGFmdGVyIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy4iKTsKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9QQVVTRQorCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwucGF1c2UKKworV2FpdCB1bnRpbCBhIHNpZ25hbCBhcnJpdmVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3BhdXNlKFB5T2JqZWN0ICpzZWxmKQorc2lnbmFsX3BhdXNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MjQ1NzA0Y2FhNjNiYmU5IGlucHV0PWYwM2RlMGY4NzU3NTIwNjJdKi8KIHsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgKHZvaWQpcGF1c2UoKTsKQEAgLTI3MywyOSArMzcwLDM4IEBACiAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KLVB5RG9jX1NUUlZBUihwYXVzZV9kb2MsCi0icGF1c2UoKVxuXAotXG5cCi1XYWl0IHVudGlsIGEgc2lnbmFsIGFycml2ZXMuIik7CiAKICNlbmRpZgogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWduYWwKKworICAgIHNpZ25hbG51bTogaW50CisgICAgaGFuZGxlcjogICBvYmplY3QKKyAgICAvCisKK1NldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgYWN0aW9uIGNhbiBiZSBTSUdfREZMLCBTSUdfSUdOLCBvciBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QuCitUaGUgcHJldmlvdXMgYWN0aW9uIGlzIHJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLgorCisqKiogSU1QT1JUQU5UIE5PVElDRSAqKioKK0Egc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czoKK3RoZSBmaXJzdCBpcyB0aGUgc2lnbmFsIG51bWJlciwgdGhlIHNlY29uZCBpcyB0aGUgaW50ZXJydXB0ZWQgc3RhY2sgZnJhbWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lnbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9zaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtLCBQeU9iamVjdCAqaGFuZGxlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MjJkN2QwYmVlYmVhNTQ2IGlucHV0PWRlZWU4NGFmNWZhMDQzMmNdKi8KIHsKLSAgICBQeU9iamVjdCAqb2JqOwotICAgIGludCBzaWdfbnVtOwogICAgIFB5T2JqZWN0ICpvbGRfaGFuZGxlcjsKICAgICB2b2lkICgqZnVuYykoaW50KTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsICZzaWdfbnVtLCAmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIFZhbGlkYXRlIHRoYXQgc2lnX251bSBpcyBvbmUgb2YgdGhlIGFsbG93YWJsZSBzaWduYWxzICovCi0gICAgc3dpdGNoIChzaWdfbnVtKSB7CisgICAgLyogVmFsaWRhdGUgdGhhdCBzaWduYWxudW0gaXMgb25lIG9mIHRoZSBhbGxvd2FibGUgc2lnbmFscyAqLworICAgIHN3aXRjaCAoc2lnbmFsbnVtKSB7CiAgICAgICAgIGNhc2UgU0lHQUJSVDogYnJlYWs7CiAjaWZkZWYgU0lHQlJFQUsKICAgICAgICAgLyogSXNzdWUgIzEwMDAzOiBTSUdCUkVBSyBpcyBub3QgZG9jdW1lbnRlZCBhcyBwZXJtaXR0ZWQsIGJ1dCB3b3JrcwpAQCAtMzE5LDYxICs0MjUsNjMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKHNpZ19udW0gPCAxIHx8IHNpZ19udW0gPj0gTlNJRykgeworICAgIGlmIChzaWduYWxudW0gPCAxIHx8IHNpZ25hbG51bSA+PSBOU0lHKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAob2JqID09IElnbm9yZUhhbmRsZXIpCisgICAgaWYgKGhhbmRsZXIgPT0gSWdub3JlSGFuZGxlcikKICAgICAgICAgZnVuYyA9IFNJR19JR047Ci0gICAgZWxzZSBpZiAob2JqID09IERlZmF1bHRIYW5kbGVyKQorICAgIGVsc2UgaWYgKGhhbmRsZXIgPT0gRGVmYXVsdEhhbmRsZXIpCiAgICAgICAgIGZ1bmMgPSBTSUdfREZMOwotICAgIGVsc2UgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKG9iaikpIHsKKyAgICBlbHNlIGlmICghUHlDYWxsYWJsZV9DaGVjayhoYW5kbGVyKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogInNpZ25hbCBoYW5kbGVyIG11c3QgYmUgc2lnbmFsLlNJR19JR04sIHNpZ25hbC5TSUdfREZMLCBvciBhIGNhbGxhYmxlIG9iamVjdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlCiAgICAgICAgIGZ1bmMgPSBzaWduYWxfaGFuZGxlcjsKLSAgICBpZiAoUHlPU19zZXRzaWcoc2lnX251bSwgZnVuYykgPT0gU0lHX0VSUikgeworICAgIGlmIChQeU9TX3NldHNpZyhzaWduYWxudW0sIGZ1bmMpID09IFNJR19FUlIpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWdfbnVtXS5mdW5jOwotICAgIEhhbmRsZXJzW3NpZ19udW1dLnRyaXBwZWQgPSAwOwotICAgIFB5X0lOQ1JFRihvYmopOwotICAgIEhhbmRsZXJzW3NpZ19udW1dLmZ1bmMgPSBvYmo7CisgICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWduYWxudW1dLmZ1bmM7CisgICAgSGFuZGxlcnNbc2lnbmFsbnVtXS50cmlwcGVkID0gMDsKKyAgICBQeV9JTkNSRUYoaGFuZGxlcik7CisgICAgSGFuZGxlcnNbc2lnbmFsbnVtXS5mdW5jID0gaGFuZGxlcjsKICAgICBpZiAob2xkX2hhbmRsZXIgIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG9sZF9oYW5kbGVyOwogICAgIGVsc2UKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfZG9jLAotInNpZ25hbChzaWcsIGFjdGlvbikgLT4gYWN0aW9uXG5cCi1cblwKLVNldCB0aGUgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLiAgVGhlIGFjdGlvbiBjYW4gYmUgU0lHX0RGTCxcblwKLVNJR19JR04sIG9yIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdC4gIFRoZSBwcmV2aW91cyBhY3Rpb24gaXNcblwKLXJldHVybmVkLiAgU2VlIGdldHNpZ25hbCgpIGZvciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzLlxuXAotXG5cCi0qKiogSU1QT1JUQU5UIE5PVElDRSAqKipcblwKLUEgc2lnbmFsIGhhbmRsZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czpcblwKLXRoZSBmaXJzdCBpcyB0aGUgc2lnbmFsIG51bWJlciwgdGhlIHNlY29uZCBpcyB0aGUgaW50ZXJydXB0ZWQgc3RhY2sgZnJhbWUuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5nZXRzaWduYWwKKworICAgIHNpZ25hbG51bTogaW50CisgICAgLworCitSZXR1cm4gdGhlIGN1cnJlbnQgYWN0aW9uIGZvciB0aGUgZ2l2ZW4gc2lnbmFsLgorCitUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZToKKyAgU0lHX0lHTiAtLSBpZiB0aGUgc2lnbmFsIGlzIGJlaW5nIGlnbm9yZWQKKyAgU0lHX0RGTCAtLSBpZiB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBzaWduYWwgaXMgaW4gZWZmZWN0CisgIE5vbmUgICAgLS0gaWYgYW4gdW5rbm93biBoYW5kbGVyIGlzIGluIGVmZmVjdAorICBhbnl0aGluZyBlbHNlIC0tIHRoZSBjYWxsYWJsZSBQeXRob24gb2JqZWN0IHVzZWQgYXMgYSBoYW5kbGVyCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfZ2V0c2lnbmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9nZXRzaWduYWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgc2lnbmFsbnVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ1MGVjMzU1NzU3ZTM2MGMgaW5wdXQ9YWMyM2EwMGYxOWRmYTUwOV0qLwogewotICAgIGludCBzaWdfbnVtOwogICAgIFB5T2JqZWN0ICpvbGRfaGFuZGxlcjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0c2lnbmFsIiwgJnNpZ19udW0pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2lnX251bSA8IDEgfHwgc2lnX251bSA+PSBOU0lHKSB7CisgICAgaWYgKHNpZ25hbG51bSA8IDEgfHwgc2lnbmFsbnVtID49IE5TSUcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIG51bWJlciBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG9sZF9oYW5kbGVyID0gSGFuZGxlcnNbc2lnX251bV0uZnVuYzsKKyAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ25hbG51bV0uZnVuYzsKICAgICBpZiAob2xkX2hhbmRsZXIgIT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYob2xkX2hhbmRsZXIpOwogICAgICAgICByZXR1cm4gb2xkX2hhbmRsZXI7CkBAIC0zODMsNTMgKzQ5MSw2NSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKGdldHNpZ25hbF9kb2MsCi0iZ2V0c2lnbmFsKHNpZykgLT4gYWN0aW9uXG5cCi1cblwKLVJldHVybiB0aGUgY3VycmVudCBhY3Rpb24gZm9yIHRoZSBnaXZlbiBzaWduYWwuICBUaGUgcmV0dXJuIHZhbHVlIGNhbiBiZTpcblwKLVNJR19JR04gLS0gaWYgdGhlIHNpZ25hbCBpcyBiZWluZyBpZ25vcmVkXG5cCi1TSUdfREZMIC0tIGlmIHRoZSBkZWZhdWx0IGFjdGlvbiBmb3IgdGhlIHNpZ25hbCBpcyBpbiBlZmZlY3RcblwKLU5vbmUgLS0gaWYgYW4gdW5rbm93biBoYW5kbGVyIGlzIGluIGVmZmVjdFxuXAotYW55dGhpbmcgZWxzZSAtLSB0aGUgY2FsbGFibGUgUHl0aG9uIG9iamVjdCB1c2VkIGFzIGEgaGFuZGxlciIpOwotCiAjaWZkZWYgSEFWRV9TSUdJTlRFUlJVUFQKLVB5RG9jX1NUUlZBUihzaWdpbnRlcnJ1cHRfZG9jLAotInNpZ2ludGVycnVwdChzaWcsIGZsYWcpIC0+IE5vbmVcblwKLWNoYW5nZSBzeXN0ZW0gY2FsbCByZXN0YXJ0IGJlaGF2aW91cjogaWYgZmxhZyBpcyBGYWxzZSwgc3lzdGVtIGNhbGxzXG5cCi13aWxsIGJlIHJlc3RhcnRlZCB3aGVuIGludGVycnVwdGVkIGJ5IHNpZ25hbCBzaWcsIGVsc2Ugc3lzdGVtIGNhbGxzXG5cCi13aWxsIGJlIGludGVycnVwdGVkLiIpOworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lnaW50ZXJydXB0CisKKyAgICBzaWduYWxudW06IGludAorICAgIGZsYWc6ICAgICAgaW50CisgICAgLworCitDaGFuZ2Ugc3lzdGVtIGNhbGwgcmVzdGFydCBiZWhhdmlvdXIuCisKK0lmIGZsYWcgaXMgRmFsc2UsIHN5c3RlbSBjYWxscyB3aWxsIGJlIHJlc3RhcnRlZCB3aGVuIGludGVycnVwdGVkIGJ5CitzaWduYWwgc2lnLCBlbHNlIHN5c3RlbSBjYWxscyB3aWxsIGJlIGludGVycnVwdGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ2ludGVycnVwdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lnaW50ZXJydXB0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHNpZ25hbG51bSwgaW50IGZsYWcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRjZjhiMDMxYjBlODA0NCBpbnB1dD00MTYwYWNhY2NhM2UyMDk5XSovCiB7Ci0gICAgaW50IHNpZ19udW07Ci0gICAgaW50IGZsYWc7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNpZ2ludGVycnVwdCIsICZzaWdfbnVtLCAmZmxhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaWdfbnVtIDwgMSB8fCBzaWdfbnVtID49IE5TSUcpIHsKKyAgICBpZiAoc2lnbmFsbnVtIDwgMSB8fCBzaWduYWxudW0gPj0gTlNJRykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgbnVtYmVyIG91dCBvZiByYW5nZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNpZ2ludGVycnVwdChzaWdfbnVtLCBmbGFnKTwwKSB7CisgICAgaWYgKHNpZ2ludGVycnVwdChzaWduYWxudW0sIGZsYWcpPDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKICNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKgorCitzdGF0aWMgUHlPYmplY3QqCiBzaWduYWxfc2V0X3dha2V1cF9mZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgc3RydWN0IHN0YXQgYnVmOworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3RhdHVzOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqZmRvYmo7CisgICAgU09DS0VUX1Qgc29ja2ZkLCBvbGRfc29ja2ZkOworICAgIGludCByZXM7CisgICAgaW50IHJlc19zaXplID0gc2l6ZW9mIHJlczsKKyAgICBQeU9iamVjdCAqbW9kOworICAgIGludCBpc19zb2NrZXQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2V0X3dha2V1cF9mZCIsICZmZG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc29ja2ZkID0gUHlMb25nX0FzU29ja2V0X3QoZmRvYmopOworICAgIGlmIChzb2NrZmQgPT0gKFNPQ0tFVF9UKSgtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZWxzZQogICAgIGludCBmZCwgb2xkX2ZkOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldF93YWtldXBfZmQiLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBpZiAoUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpICE9IG1haW5fdGhyZWFkKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDM3LDIxICs1NTcsOTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGZkICE9IC0xICYmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCBmc3RhdChmZCwgJmJ1ZikgIT0gMCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlzX3NvY2tldCA9IDA7CisgICAgaWYgKHNvY2tmZCAhPSBJTlZBTElEX0ZEKSB7CisgICAgICAgIC8qIEltcG9ydCB0aGUgX3NvY2tldCBtb2R1bGUgdG8gY2FsbCBXU0FTdGFydHVwKCkgKi8KKyAgICAgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiX3NvY2tldCIpOworICAgICAgICBpZiAobW9kID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKG1vZCk7CisKKyAgICAgICAgLyogdGVzdCB0aGUgc29ja2V0ICovCisgICAgICAgIGlmIChnZXRzb2Nrb3B0KHNvY2tmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsCisgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopJnJlcywgJnJlc19zaXplKSAhPSAwKSB7CisgICAgICAgICAgICBpbnQgZmQsIGVycjsKKworICAgICAgICAgICAgZXJyID0gV1NBR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IFdTQUVOT1RTT0NLKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgZXJyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmQgPSAoaW50KXNvY2tmZDsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdGF0dXMpICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgICAgIC8qIG9uIFdpbmRvd3MsIGEgZmlsZSBjYW5ub3QgYmUgc2V0IHRvIG5vbi1ibG9ja2luZyBtb2RlICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpc19zb2NrZXQgPSAxOworCisgICAgICAgICAgICAvKiBXaW5kb3dzIGRvZXMgbm90IHByb3ZpZGUgYSBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgc29ja2V0CisgICAgICAgICAgICAgICBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSAqLworICAgICAgICB9CiAgICAgfQorCisgICAgb2xkX3NvY2tmZCA9IHdha2V1cC5mZDsKKyAgICB3YWtldXAuZmQgPSBzb2NrZmQ7CisgICAgd2FrZXVwLnVzZV9zZW5kID0gaXNfc29ja2V0OworCisgICAgaWYgKG9sZF9zb2NrZmQgIT0gSU5WQUxJRF9GRCkKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU29ja2V0X3Qob2xkX3NvY2tmZCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKC0xKTsKKyNlbHNlCisgICAgaWYgKGZkICE9IC0xKSB7CisgICAgICAgIGludCBibG9ja2luZzsKKworICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgYmxvY2tpbmcgPSBfUHlfZ2V0X2Jsb2NraW5nKGZkKTsKKyAgICAgICAgaWYgKGJsb2NraW5nIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoYmxvY2tpbmcpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmQgJWkgbXVzdCBiZSBpbiBub24tYmxvY2tpbmcgbW9kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZmQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICAgICBvbGRfZmQgPSB3YWtldXBfZmQ7CiAgICAgd2FrZXVwX2ZkID0gZmQ7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9sZF9mZCk7CisjZW5kaWYKIH0KIAogUHlEb2NfU1RSVkFSKHNldF93YWtldXBfZmRfZG9jLAogInNldF93YWtldXBfZmQoZmQpIC0+IGZkXG5cCiBcblwKLVNldHMgdGhlIGZkIHRvIGJlIHdyaXR0ZW4gdG8gKHdpdGggJ1xcMCcpIHdoZW4gYSBzaWduYWxcblwKK1NldHMgdGhlIGZkIHRvIGJlIHdyaXR0ZW4gdG8gKHdpdGggdGhlIHNpZ25hbCBudW1iZXIpIHdoZW4gYSBzaWduYWxcblwKIGNvbWVzIGluLiAgQSBsaWJyYXJ5IGNhbiB1c2UgdGhpcyB0byB3YWtldXAgc2VsZWN0IG9yIHBvbGwuXG5cCi1UaGUgcHJldmlvdXMgZmQgaXMgcmV0dXJuZWQuXG5cCitUaGUgcHJldmlvdXMgZmQgb3IgLTEgaXMgcmV0dXJuZWQuXG5cCiBcblwKIFRoZSBmZCBtdXN0IGJlIG5vbi1ibG9ja2luZy4iKTsKIApAQCAtNDU5LDcxICs2NDgsODUgQEAKIGludAogUHlTaWduYWxfU2V0V2FrZXVwRmQoaW50IGZkKQogewotICAgIGludCBvbGRfZmQgPSB3YWtldXBfZmQ7CisgICAgaW50IG9sZF9mZDsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICBmZCA9IC0xOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIG9sZF9mZCA9IFB5X1NBRkVfRE9XTkNBU1Qod2FrZXVwLmZkLCBTT0NLRVRfVCwgaW50KTsKKyAgICB3YWtldXAuZmQgPSBmZDsKKyNlbHNlCisgICAgb2xkX2ZkID0gd2FrZXVwX2ZkOwogICAgIHdha2V1cF9mZCA9IGZkOworI2VuZGlmCiAgICAgcmV0dXJuIG9sZF9mZDsKIH0KIAogCiAjaWZkZWYgSEFWRV9TRVRJVElNRVIKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNldGl0aW1lcgorCisgICAgd2hpY2g6ICAgIGludAorICAgIHNlY29uZHM6ICBkb3VibGUKKyAgICBpbnRlcnZhbDogZG91YmxlID0gMC4wCisgICAgLworCitTZXRzIGdpdmVuIGl0aW1lciAob25lIG9mIElUSU1FUl9SRUFMLCBJVElNRVJfVklSVFVBTCBvciBJVElNRVJfUFJPRikuCisKK1RoZSB0aW1lciB3aWxsIGZpcmUgYWZ0ZXIgdmFsdWUgc2Vjb25kcyBhbmQgYWZ0ZXIgdGhhdCBldmVyeSBpbnRlcnZhbCBzZWNvbmRzLgorVGhlIGl0aW1lciBjYW4gYmUgY2xlYXJlZCBieSBzZXR0aW5nIHNlY29uZHMgdG8gemVyby4KKworUmV0dXJucyBvbGQgdmFsdWVzIGFzIGEgdHVwbGU6IChkZWxheSwgaW50ZXJ2YWwpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NldGl0aW1lcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2V0aXRpbWVyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHdoaWNoLCBkb3VibGUgc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgaW50ZXJ2YWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWE5MjI3YTI3YmQwNTk4OCBpbnB1dD0wZDI3ZDQxN2NmY2JkNTFhXSovCiB7Ci0gICAgZG91YmxlIGZpcnN0OwotICAgIGRvdWJsZSBpbnRlcnZhbCA9IDA7Ci0gICAgaW50IHdoaWNoOwogICAgIHN0cnVjdCBpdGltZXJ2YWwgbmV3LCBvbGQ7CiAKLSAgICBpZighUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWR8ZDpzZXRpdGltZXIiLCAmd2hpY2gsICZmaXJzdCwgJmludGVydmFsKSkKLSAgICByZXR1cm4gTlVMTDsKLQotICAgIHRpbWV2YWxfZnJvbV9kb3VibGUoZmlyc3QsICZuZXcuaXRfdmFsdWUpOworICAgIHRpbWV2YWxfZnJvbV9kb3VibGUoc2Vjb25kcywgJm5ldy5pdF92YWx1ZSk7CiAgICAgdGltZXZhbF9mcm9tX2RvdWJsZShpbnRlcnZhbCwgJm5ldy5pdF9pbnRlcnZhbCk7CiAgICAgLyogTGV0IE9TIGNoZWNrICJ3aGljaCIgdmFsdWUgKi8KICAgICBpZiAoc2V0aXRpbWVyKHdoaWNoLCAmbmV3LCAmb2xkKSAhPSAwKSB7Ci0gICAgUHlFcnJfU2V0RnJvbUVycm5vKEl0aW1lckVycm9yKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKEl0aW1lckVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIGl0aW1lcl9yZXR2YWwoJm9sZCk7CiB9CiAKLVB5RG9jX1NUUlZBUihzZXRpdGltZXJfZG9jLAotInNldGl0aW1lcih3aGljaCwgc2Vjb25kc1ssIGludGVydmFsXSlcblwKLVxuXAotU2V0cyBnaXZlbiBpdGltZXIgKG9uZSBvZiBJVElNRVJfUkVBTCwgSVRJTUVSX1ZJUlRVQUxcblwKLW9yIElUSU1FUl9QUk9GKSB0byBmaXJlIGFmdGVyIHZhbHVlIHNlY29uZHMgYW5kIGFmdGVyXG5cCi10aGF0IGV2ZXJ5IGludGVydmFsIHNlY29uZHMuXG5cCi1UaGUgaXRpbWVyIGNhbiBiZSBjbGVhcmVkIGJ5IHNldHRpbmcgc2Vjb25kcyB0byB6ZXJvLlxuXAotXG5cCi1SZXR1cm5zIG9sZCB2YWx1ZXMgYXMgYSB0dXBsZTogKGRlbGF5LCBpbnRlcnZhbCkuIik7CiAjZW5kaWYKIAogCiAjaWZkZWYgSEFWRV9HRVRJVElNRVIKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLmdldGl0aW1lcgorCisgICAgd2hpY2g6ICAgIGludAorICAgIC8KKworUmV0dXJucyBjdXJyZW50IHZhbHVlIG9mIGdpdmVuIGl0aW1lci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9nZXRpdGltZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX2dldGl0aW1lcl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB3aGljaCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMTM0OWFiMThhYWRjNTY5IGlucHV0PWY3ZDIxZDM4ZjM0OTA2MjddKi8KIHsKLSAgICBpbnQgd2hpY2g7CiAgICAgc3RydWN0IGl0aW1lcnZhbCBvbGQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkKLSAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmIChnZXRpdGltZXIod2hpY2gsICZvbGQpICE9IDApIHsKLSAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOwotICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oSXRpbWVyRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByZXR1cm4gaXRpbWVyX3JldHZhbCgmb2xkKTsKIH0KIAotUHlEb2NfU1RSVkFSKGdldGl0aW1lcl9kb2MsCi0iZ2V0aXRpbWVyKHdoaWNoKVxuXAotXG5cCi1SZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLiIpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSB8fCBkZWZpbmVkKEhBVkVfU0lHV0FJVCkgfHwgXApAQCAtNjE0LDIxICs4MTcsMjggQEAKICNlbmRpZgogCiAjaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnB0aHJlYWRfc2lnbWFzaworCisgICAgaG93OiAgaW50CisgICAgbWFzazogb2JqZWN0CisgICAgLworCitGZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfcHRocmVhZF9zaWdtYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3NpZ25hbF9wdGhyZWFkX3NpZ21hc2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaG93LCBQeU9iamVjdCAqbWFzaykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMDQzYTlmMGVlYjFlMDc1IGlucHV0PWYzYjdkN2E2MWI3YjgyODNdKi8KIHsKLSAgICBpbnQgaG93OwotICAgIFB5T2JqZWN0ICpzaWduYWxzOwotICAgIHNpZ3NldF90IG1hc2ssIHByZXZpb3VzOworICAgIHNpZ3NldF90IG5ld21hc2ssIHByZXZpb3VzOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnB0aHJlYWRfc2lnbWFzayIsICZob3csICZzaWduYWxzKSkKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KG1hc2ssICZuZXdtYXNrKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZtYXNrKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbWFzaywgJnByZXZpb3VzKTsKKyAgICBlcnIgPSBwdGhyZWFkX3NpZ21hc2soaG93LCAmbmV3bWFzaywgJnByZXZpb3VzKTsKICAgICBpZiAoZXJyICE9IDApIHsKICAgICAgICAgZXJybm8gPSBlcnI7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTY0MiwxNiArODUyLDIzIEBACiAgICAgcmV0dXJuIHNpZ3NldF90b19zZXQocHJldmlvdXMpOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2MsCi0icHRocmVhZF9zaWdtYXNrKGhvdywgbWFzaykgLT4gb2xkIG1hc2tcblwKLVxuXAotRmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLiIpOwogI2VuZGlmICAgLyogI2lmZGVmIFBZUFRIUkVBRF9TSUdNQVNLICovCiAKIAogI2lmZGVmIEhBVkVfU0lHUEVORElORworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lncGVuZGluZworCitFeGFtaW5lIHBlbmRpbmcgc2lnbmFscy4KKworUmV0dXJucyBhIHNldCBvZiBzaWduYWwgbnVtYmVycyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0bwordGhlIGNhbGxpbmcgdGhyZWFkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ3BlbmRpbmcoUHlPYmplY3QgKnNlbGYpCitzaWduYWxfc2lncGVuZGluZ19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY0Y2VkODAzZTdlNTFkZCBpbnB1dD1lMDAzNmMwMTZmODc0ZTI5XSovCiB7CiAgICAgaW50IGVycjsKICAgICBzaWdzZXRfdCBtYXNrOwpAQCAtNjYxLDI1ICs4NzgsMzIgQEAKICAgICByZXR1cm4gc2lnc2V0X3RvX3NldChtYXNrKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWdwZW5kaW5nX2RvYywKLSJzaWdwZW5kaW5nKCkgLT4gbGlzdFxuXAotXG5cCi1FeGFtaW5lIHBlbmRpbmcgc2lnbmFscy4iKTsKICNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KIAogCiAjaWZkZWYgSEFWRV9TSUdXQUlUCisKKy8qW2NsaW5pYyBpbnB1dF0KK3NpZ25hbC5zaWd3YWl0CisKKyAgICBzaWdzZXQ6IG9iamVjdAorICAgIC8KKworV2FpdCBmb3IgYSBzaWduYWwuCisKK1N1c3BlbmQgZXhlY3V0aW9uIG9mIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgZGVsaXZlcnkgb2Ygb25lIG9mIHRoZQorc2lnbmFscyBzcGVjaWZpZWQgaW4gdGhlIHNpZ25hbCBzZXQgc2lnc2V0LiAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgdGhlIHNpZ25hbAorYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1zaWduYWxfc2lnd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lnd2FpdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc2lnc2V0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZTUzMDQ4YjAzMzZhNWMgaW5wdXQ9MTFhZjJkODJkODNjMmU5NF0qLwogewotICAgIFB5T2JqZWN0ICpzaWduYWxzOwogICAgIHNpZ3NldF90IHNldDsKICAgICBpbnQgZXJyLCBzaWdudW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdCIsICZzaWduYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnc2V0LCAmc2V0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC02OTMsMTEgKzkxNyw4IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzaWdudW0pOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3NpZ3dhaXRfZG9jLAotInNpZ3dhaXQoc2lnc2V0KSAtPiBzaWdudW1cblwKLVxuXAotV2FpdCBhIHNpZ25hbC4iKTsKLSNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1BFTkRJTkcgKi8KKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1dBSVQgKi8KKwogCiAjaWYgZGVmaW5lZChIQVZFX1NJR1dBSVRJTkZPKSB8fCBkZWZpbmVkKEhBVkVfU0lHVElNRURXQUlUKQogc3RhdGljIGludCBpbml0aWFsaXplZDsKQEAgLTc1MiwxMDAgKzk3MywxMzYgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTworCisvKltjbGluaWMgaW5wdXRdCitzaWduYWwuc2lnd2FpdGluZm8KKworICAgIHNpZ3NldDogb2JqZWN0CisgICAgLworCitXYWl0IHN5bmNocm9ub3VzbHkgdW50aWwgb25lIG9mIHRoZSBzaWduYWxzIGluICpzaWdzZXQqIGlzIGRlbGl2ZXJlZC4KKworUmV0dXJucyBhIHN0cnVjdF9zaWdpbmZvIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpZ25hbC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9zaWd3YWl0aW5mbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lnd2FpdGluZm8oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNpZ3NldCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmI1M2IwN2U1ZTkyNmI1IGlucHV0PWYzNzc5YTc0YTk5MWUxNzFdKi8KIHsKLSAgICBQeU9iamVjdCAqc2lnbmFsczsKICAgICBzaWdzZXRfdCBzZXQ7CiAgICAgc2lnaW5mb190IHNpOwogICAgIGludCBlcnI7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86c2lnd2FpdGluZm8iLCAmc2lnbmFscykpCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWdzZXQsICZzZXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGVyciA9IHNpZ3dhaXRpbmZvKCZzZXQsICZzaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBkbyB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgZXJyID0gc2lnd2FpdGluZm8oJnNldCwgJnNpKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChlcnIgPT0gLTEKKyAgICAgICAgICAgICAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgaWYgKGVyciA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuICghYXN5bmNfZXJyKSA/IFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKSA6IE5VTEw7CiAKICAgICByZXR1cm4gZmlsbF9zaWdpbmZvKCZzaSk7CiB9CiAKLVB5RG9jX1NUUlZBUihzaWduYWxfc2lnd2FpdGluZm9fZG9jLAotInNpZ3dhaXRpbmZvKHNpZ3NldCkgLT4gc3RydWN0X3NpZ2luZm9cblwKLVxuXAotV2FpdCBzeW5jaHJvbm91c2x5IGZvciBhIHNpZ25hbCB1bnRpbCBvbmUgb2YgdGhlIHNpZ25hbHMgaW4gKnNpZ3NldCogaXNcblwKLWRlbGl2ZXJlZC5cblwKLVJldHVybnMgYSBzdHJ1Y3Rfc2lnaW5mbyBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWduYWwuIik7CiAjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdXQUlUSU5GTyAqLwogCiAjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnNpZ3RpbWVkd2FpdAorCisgICAgc2lnc2V0OiAgb2JqZWN0CisgICAgdGltZW91dCBhcyB0aW1lb3V0X29iajogb2JqZWN0CisgICAgLworCitMaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dC4KKworVGhlIHRpbWVvdXQgaXMgc3BlY2lmaWVkIGluIHNlY29uZHMsIHdpdGggZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhbGxvd2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotc2lnbmFsX3NpZ3RpbWVkd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitzaWduYWxfc2lndGltZWR3YWl0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNpZ3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGltZW91dF9vYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzE5NjBiNWNlYTEzOTkyOSBpbnB1dD01M2ZkNGVhM2UzNzI0ZWI4XSovCiB7Ci0gICAgUHlPYmplY3QgKnNpZ25hbHMsICp0aW1lb3V0OwotICAgIHN0cnVjdCB0aW1lc3BlYyBidWY7CisgICAgc3RydWN0IHRpbWVzcGVjIHRzOwogICAgIHNpZ3NldF90IHNldDsKICAgICBzaWdpbmZvX3Qgc2k7Ci0gICAgdGltZV90IHR2X3NlYzsKLSAgICBsb25nIHR2X25zZWM7Ci0gICAgaW50IGVycjsKKyAgICBpbnQgcmVzOworICAgIF9QeVRpbWVfdCB0aW1lb3V0LCBkZWFkbGluZSwgbW9ub3RvbmljOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpzaWd0aW1lZHdhaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmc2lnbmFscywgJnRpbWVvdXQpKQorICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKHRpbWVvdXQsICZ0dl9zZWMsICZ0dl9uc2VjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9ST1VORF9ET1dOKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmLnR2X3NlYyA9IHR2X3NlYzsKLSAgICBidWYudHZfbnNlYyA9IHR2X25zZWM7Ci0KLSAgICBpZiAoYnVmLnR2X3NlYyA8IDAgfHwgYnVmLnR2X25zZWMgPCAwKSB7CisgICAgaWYgKHRpbWVvdXQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnc2V0LCAmc2V0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJyID0gc2lndGltZWR3YWl0KCZzZXQsICZzaSwgJmJ1Zik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZXJyID09IC0xKSB7Ci0gICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCi0gICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICB9CisgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyB0aW1lb3V0OworCisgICAgZG8geworICAgICAgICBpZiAoX1B5VGltZV9Bc1RpbWVzcGVjKHRpbWVvdXQsICZ0cykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSBzaWd0aW1lZHdhaXQoJnNldCwgJnNpLCAmdHMpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChyZXMgIT0gLTEpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHNpZ3RpbWVkd2FpdCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAoRUlOVFIpICovCisgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIG1vbm90b25pYyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gbW9ub3RvbmljOworICAgICAgICBpZiAodGltZW91dCA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICgxKTsKIAogICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKIH0KIAotUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jLAotInNpZ3RpbWVkd2FpdChzaWdzZXQsICh0aW1lb3V0X3NlYywgdGltZW91dF9uc2VjKSkgLT4gc3RydWN0X3NpZ2luZm9cblwKLVxuXAotTGlrZSBzaWd3YWl0aW5mbygpLCBidXQgd2l0aCBhIHRpbWVvdXQgc3BlY2lmaWVkIGFzIGEgdHVwbGUgb2YgKHNlY29uZHMsXG5cCi1uYW5vc2Vjb25kcykuIik7CiAjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdUSU1FRFdBSVQgKi8KIAogCiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKKworLypbY2xpbmljIGlucHV0XQorc2lnbmFsLnB0aHJlYWRfa2lsbAorCisgICAgdGhyZWFkX2lkOiAgbG9uZworICAgIHNpZ25hbG51bTogIGludAorICAgIC8KKworU2VuZCBhIHNpZ25hbCB0byBhIHRocmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLXNpZ25hbF9wdGhyZWFkX2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGxvbmcgdGhyZWFkX2lkLCBpbnQgc2lnbmFsbnVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM1YWVkMjcxM2M3NTZkN2EgaW5wdXQ9NzdlZDZhM2I2ZjJhODEyMl0qLwogewotICAgIGxvbmcgdGlkOwotICAgIGludCBzaWdudW07CiAgICAgaW50IGVycjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwgJnRpZCwgJnNpZ251bSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZXJyID0gcHRocmVhZF9raWxsKChwdGhyZWFkX3QpdGlkLCBzaWdudW0pOworICAgIGVyciA9IHB0aHJlYWRfa2lsbCgocHRocmVhZF90KXRocmVhZF9pZCwgc2lnbmFsbnVtKTsKICAgICBpZiAoZXJyICE9IDApIHsKICAgICAgICAgZXJybm8gPSBlcnI7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTg1OSw2MiArMTExNiwyOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2MsCi0icHRocmVhZF9raWxsKHRocmVhZF9pZCwgc2lnbnVtKVxuXAotXG5cCi1TZW5kIGEgc2lnbmFsIHRvIGEgdGhyZWFkLiIpOwogI2VuZGlmICAgLyogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX0tJTEwpICYmIGRlZmluZWQoV0lUSF9USFJFQUQpICovCiAKIAogCi0vKiBMaXN0IG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8KKy8qIExpc3Qgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSAtLSBzb21lIG9mIHRoZSBtZXRob2RkZWZzIGFyZQorICAgZGVmaW5lZCB0byBub3RoaW5nIGlmIHRoZSBjb3JyZXNwb25kaW5nIEMgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4gKi8KIHN0YXRpYyBQeU1ldGhvZERlZiBzaWduYWxfbWV0aG9kc1tdID0gewotI2lmZGVmIEhBVkVfQUxBUk0KLSAgICB7ImFsYXJtIiwgICAgICAgICAgICAgICAgICAgc2lnbmFsX2FsYXJtLCBNRVRIX1ZBUkFSR1MsIGFsYXJtX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NFVElUSU1FUgotICAgIHsic2V0aXRpbWVyIiwgICAgICAgc2lnbmFsX3NldGl0aW1lciwgTUVUSF9WQVJBUkdTLCBzZXRpdGltZXJfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfR0VUSVRJTUVSCi0gICAgeyJnZXRpdGltZXIiLCAgICAgICBzaWduYWxfZ2V0aXRpbWVyLCBNRVRIX1ZBUkFSR1MsIGdldGl0aW1lcl9kb2N9LAotI2VuZGlmCi0gICAgeyJzaWduYWwiLCAgICAgICAgICAgICAgICAgIHNpZ25hbF9zaWduYWwsIE1FVEhfVkFSQVJHUywgc2lnbmFsX2RvY30sCi0gICAgeyJnZXRzaWduYWwiLCAgICAgICAgICAgICAgIHNpZ25hbF9nZXRzaWduYWwsIE1FVEhfVkFSQVJHUywgZ2V0c2lnbmFsX2RvY30sCisgICAgeyJkZWZhdWx0X2ludF9oYW5kbGVyIiwgc2lnbmFsX2RlZmF1bHRfaW50X2hhbmRsZXIsIE1FVEhfVkFSQVJHUywgZGVmYXVsdF9pbnRfaGFuZGxlcl9kb2N9LAorICAgIFNJR05BTF9BTEFSTV9NRVRIT0RERUYKKyAgICBTSUdOQUxfU0VUSVRJTUVSX01FVEhPRERFRgorICAgIFNJR05BTF9HRVRJVElNRVJfTUVUSE9EREVGCisgICAgU0lHTkFMX1NJR05BTF9NRVRIT0RERUYKKyAgICBTSUdOQUxfR0VUU0lHTkFMX01FVEhPRERFRgogICAgIHsic2V0X3dha2V1cF9mZCIsICAgICAgICAgICBzaWduYWxfc2V0X3dha2V1cF9mZCwgTUVUSF9WQVJBUkdTLCBzZXRfd2FrZXVwX2ZkX2RvY30sCi0jaWZkZWYgSEFWRV9TSUdJTlRFUlJVUFQKLSAgICB7InNpZ2ludGVycnVwdCIsICAgICAgICAgICAgc2lnbmFsX3NpZ2ludGVycnVwdCwgTUVUSF9WQVJBUkdTLCBzaWdpbnRlcnJ1cHRfZG9jfSwKLSNlbmRpZgotI2lmZGVmIEhBVkVfUEFVU0UKLSAgICB7InBhdXNlIiwgICAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wYXVzZSwKLSAgICAgTUVUSF9OT0FSR1MsIHBhdXNlX2RvY30sCi0jZW5kaWYKLSAgICB7ImRlZmF1bHRfaW50X2hhbmRsZXIiLCBzaWduYWxfZGVmYXVsdF9pbnRfaGFuZGxlciwKLSAgICAgTUVUSF9WQVJBUkdTLCBkZWZhdWx0X2ludF9oYW5kbGVyX2RvY30sCi0jaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKLSAgICB7InB0aHJlYWRfa2lsbCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX2tpbGwsCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfa2lsbF9kb2N9LAotI2VuZGlmCi0jaWZkZWYgUFlQVEhSRUFEX1NJR01BU0sKLSAgICB7InB0aHJlYWRfc2lnbWFzayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9wdGhyZWFkX3NpZ21hc2ssCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2N9LAotI2VuZGlmCi0jaWZkZWYgSEFWRV9TSUdQRU5ESU5HCi0gICAgeyJzaWdwZW5kaW5nIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lncGVuZGluZywKLSAgICAgTUVUSF9OT0FSR1MsIHNpZ25hbF9zaWdwZW5kaW5nX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1dBSVQKLSAgICB7InNpZ3dhaXQiLCAgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0LAotICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd3YWl0X2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPCi0gICAgeyJzaWd3YWl0aW5mbyIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lnd2FpdGluZm8sCi0gICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRpbmZvX2RvY30sCi0jZW5kaWYKLSNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAotICAgIHsic2lndGltZWR3YWl0IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3RpbWVkd2FpdCwKLSAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lndGltZWR3YWl0X2RvY30sCi0jZW5kaWYKLSAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCisgICAgU0lHTkFMX1NJR0lOVEVSUlVQVF9NRVRIT0RERUYKKyAgICBTSUdOQUxfUEFVU0VfTUVUSE9EREVGCisgICAgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKKyAgICBTSUdOQUxfUFRIUkVBRF9TSUdNQVNLX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdQRU5ESU5HX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdXQUlUX01FVEhPRERFRgorICAgIFNJR05BTF9TSUdXQUlUSU5GT19NRVRIT0RERUYKKyAgICBTSUdOQUxfU0lHVElNRURXQUlUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIApAQCAtOTU2LDcgKzExODAsNyBAQAogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHNpZ25hbG1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInNpZ25hbCIsCisgICAgIl9zaWduYWwiLAogICAgIG1vZHVsZV9kb2MsCiAgICAgLTEsCiAgICAgc2lnbmFsX21ldGhvZHMsCkBAIC05NjcsNyArMTE5MSw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X3NpZ25hbCh2b2lkKQorUHlJbml0X19zaWduYWwodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbSwgKmQsICp4OwogICAgIGludCBpOwpAQCAtMTM4MCw3ICsxNjA0LDcgQEAKIHZvaWQKIFB5T1NfSW5pdEludGVycnVwdHModm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic2lnbmFsIik7CisgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIl9zaWduYWwiKTsKICAgICBpZiAobSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKaW5kZXggMjMwMTllZS4uZDljNzBmOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCkBAIC0xMjEsNyArMTIxLDcgQEAKIGdldHNvY2tuYW1lKCkgLS0gcmV0dXJuIGxvY2FsIGFkZHJlc3NcblwKIGdldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWVbLCBidWZsZW5dKSAtLSBnZXQgc29ja2V0IG9wdGlvbnNcblwKIGdldHRpbWVvdXQoKSAtLSByZXR1cm4gdGltZW91dCBvciBOb25lXG5cCi1saXN0ZW4obikgLS0gc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBjb25uZWN0aW9uc1xuXAorbGlzdGVuKFtuXSkgLS0gc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBjb25uZWN0aW9uc1xuXAogcmVjdihidWZsZW5bLCBmbGFnc10pIC0tIHJlY2VpdmUgZGF0YVxuXAogcmVjdl9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pIC0tIHJlY2VpdmUgZGF0YSAoaW50byBhIGJ1ZmZlcilcblwKIHJlY3Zmcm9tKGJ1ZmxlblssIGZsYWdzXSkgLS0gcmVjZWl2ZSBkYXRhIGFuZCBzZW5kZXJcJ3MgYWRkcmVzc1xuXApAQCAtMjg0LDE0ICsyODQsMTUgQEAKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjIGVuZGlmCiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxODAwCisvKiBQcm92aWRlcyB0aGUgSXNXaW5kb3dzN1NQMU9yR3JlYXRlcigpIGZ1bmN0aW9uICovCisjaW5jbHVkZSA8VmVyc2lvbkhlbHBlcnMuaD4KKyNlbmRpZgorCiAjZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jaWZuZGVmIG9mZnNldG9mCi0jIGRlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICgoc2l6ZV90KSgmKCh0eXBlICopMCktPm1lbWJlcikpCi0jZW5kaWYKLQogI2lmbmRlZiBPX05PTkJMT0NLCiAjIGRlZmluZSBPX05PTkJMT0NLIE9fTkRFTEFZCiAjZW5kaWYKQEAgLTQ1OSw3ICs0NjAsNyBAQAogI2Vsc2UKIC8qIElmIHRoZXJlJ3Mgbm8gdGltZW91dCBsZWZ0LCB3ZSBkb24ndCBoYXZlIHRvIGNhbGwgc2VsZWN0LCBzbyBpdCdzIGEgc2FmZSwKICAqIGxpdHRsZSB3aGl0ZSBsaWUuICovCi0jZGVmaW5lIElTX1NFTEVDVEFCTEUocykgKF9QeUlzU2VsZWN0YWJsZV9mZCgocyktPnNvY2tfZmQpIHx8IChzKS0+c29ja190aW1lb3V0IDw9IDAuMCkKKyNkZWZpbmUgSVNfU0VMRUNUQUJMRShzKSAoX1B5SXNTZWxlY3RhYmxlX2ZkKChzKS0+c29ja19mZCkgfHwgKHMpLT5zb2NrX3RpbWVvdXQgPD0gMCkKICNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QqCkBAIC00ODEsNiArNDgyLDE5IEBACiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGRlZmluZSBHRVRfU09DS19FUlJPUiBXU0FHZXRMYXN0RXJyb3IoKQorIyAgZGVmaW5lIFNFVF9TT0NLX0VSUk9SKGVycikgV1NBU2V0TGFzdEVycm9yKGVycikKKyMgIGRlZmluZSBTT0NLX1RJTUVPVVRfRVJSIFdTQUVXT1VMREJMT0NLCisjICBkZWZpbmUgU09DS19JTlBST0dSRVNTX0VSUiBXU0FFV09VTERCTE9DSworI2Vsc2UKKyMgIGRlZmluZSBHRVRfU09DS19FUlJPUiBlcnJubworIyAgZGVmaW5lIFNFVF9TT0NLX0VSUk9SKGVycikgZG8geyBlcnJubyA9IGVycjsgfSB3aGlsZSAoMCkKKyMgIGRlZmluZSBTT0NLX1RJTUVPVVRfRVJSIEVXT1VMREJMT0NLCisjICBkZWZpbmUgU09DS19JTlBST0dSRVNTX0VSUiBFSU5QUk9HUkVTUworI2VuZGlmCisKKworI2lmZGVmIE1TX1dJTkRPV1MKIC8qIERvZXMgV1NBU29ja2V0KCkgc3VwcG9ydCB0aGUgV1NBX0ZMQUdfTk9fSEFORExFX0lOSEVSSVQgZmxhZz8gKi8KIHN0YXRpYyBpbnQgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IC0xOwogI2VuZGlmCkBAIC01NTIsNiArNTY2LDkgQEAKIHN0YXRpYyBpbnQKIGludGVybmFsX3NldGJsb2NraW5nKFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IGJsb2NrKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB1X2xvbmcgYXJnOworI2VuZGlmCiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykgXAogICAgICYmICEoKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkpCiAgICAgaW50IGRlbGF5X2ZsYWcsIG5ld19kZWxheV9mbGFnOwpAQCAtNTc4LDggKzU5NSw4IEBACiAgICAgICAgIGZjbnRsKHMtPnNvY2tfZmQsIEZfU0VURkwsIG5ld19kZWxheV9mbGFnKTsKICNlbmRpZgogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwotICAgIGJsb2NrID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICh1X2xvbmcqKSZibG9jayk7CisgICAgYXJnID0gIWJsb2NrOworICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC01ODcsNjAgKzYwNCw3OSBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBEbyBhIHNlbGVjdCgpL3BvbGwoKSBvbiB0aGUgc29ja2V0LCBpZiBuZWNlc3NhcnkgKHNvY2tfdGltZW91dCA+IDApLgotICAgVGhlIGFyZ3VtZW50IHdyaXRpbmcgaW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24uCi0gICBUaGlzIGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbjsgd2UnbGwgbGV0IG91ciBjYWxsZXIgZG8gdGhhdAotICAgYWZ0ZXIgdGhleSd2ZSByZWFjcXVpcmVkIHRoZSBpbnRlcnByZXRlciBsb2NrLgotICAgUmV0dXJucyAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yLCAwIG90aGVyd2lzZS4gKi8KIHN0YXRpYyBpbnQKLWludGVybmFsX3NlbGVjdF9leChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBkb3VibGUgaW50ZXJ2YWwpCitpbnRlcm5hbF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IGludGVydmFsLAorICAgICAgICAgICAgICAgIGludCBjb25uZWN0KQogewogICAgIGludCBuOworI2lmZGVmIEhBVkVfUE9MTAorICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOworICAgIF9QeVRpbWVfdCBtczsKKyNlbHNlCisgICAgZmRfc2V0IGZkcywgZWZkczsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0diwgKnR2cDsKKyNlbmRpZgogCi0gICAgLyogTm90aGluZyB0byBkbyB1bmxlc3Mgd2UncmUgaW4gdGltZW91dCBtb2RlIChub3Qgbm9uLWJsb2NraW5nKSAqLwotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPD0gMC4wKQotICAgICAgICByZXR1cm4gMDsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkICovCisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKworICAgIC8qIEVycm9yIGNvbmRpdGlvbiBpcyBmb3Igb3V0cHV0IG9ubHkgKi8KKyAgICBhc3NlcnQoIShjb25uZWN0ICYmICF3cml0aW5nKSk7CiAKICAgICAvKiBHdWFyZCBhZ2FpbnN0IGNsb3NlZCBzb2NrZXQgKi8KICAgICBpZiAocy0+c29ja19mZCA8IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLyogSGFuZGxpbmcgdGhpcyBjb25kaXRpb24gaGVyZSBzaW1wbGlmaWVzIHRoZSBzZWxlY3QgbG9vcHMgKi8KLSAgICBpZiAoaW50ZXJ2YWwgPCAwLjApCi0gICAgICAgIHJldHVybiAxOwotCiAgICAgLyogUHJlZmVyIHBvbGwsIGlmIGF2YWlsYWJsZSwgc2luY2UgeW91IGNhbiBwb2xsKCkgYW55IGZkCiAgICAgICogd2hpY2ggY2FuJ3QgYmUgZG9uZSB3aXRoIHNlbGVjdCgpLiAqLwogI2lmZGVmIEhBVkVfUE9MTAotICAgIHsKLSAgICAgICAgc3RydWN0IHBvbGxmZCBwb2xsZmQ7Ci0gICAgICAgIGludCB0aW1lb3V0OwotCi0gICAgICAgIHBvbGxmZC5mZCA9IHMtPnNvY2tfZmQ7Ci0gICAgICAgIHBvbGxmZC5ldmVudHMgPSB3cml0aW5nID8gUE9MTE9VVCA6IFBPTExJTjsKLQotICAgICAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLwotICAgICAgICB0aW1lb3V0ID0gKGludCkoaW50ZXJ2YWwgKiAxMDAwICsgMC41KTsKLSAgICAgICAgbiA9IHBvbGwoJnBvbGxmZCwgMSwgdGltZW91dCk7CisgICAgcG9sbGZkLmZkID0gcy0+c29ja19mZDsKKyAgICBwb2xsZmQuZXZlbnRzID0gd3JpdGluZyA/IFBPTExPVVQgOiBQT0xMSU47CisgICAgaWYgKGNvbm5lY3QpIHsKKyAgICAgICAgLyogT24gV2luZG93cywgdGhlIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcywKKyAgICAgICAgICAgYnV0IGEgY29ubmVjdGlvbiBmYWlsdXJlIGlzIG5vdGlmaWVkIGFzIGFuIGVycm9yLiBPbiBQT1NJWCwgdGhlCisgICAgICAgICAgIHNvY2tldCBiZWNvbWVzIHdyaXRhYmxlIG9uIGNvbm5lY3Rpb24gc3VjY2VzcyBvciBvbiBjb25uZWN0aW9uCisgICAgICAgICAgIGZhaWx1cmUuICovCisgICAgICAgIHBvbGxmZC5ldmVudHMgfD0gUE9MTEVSUjsKICAgICB9CisKKyAgICAvKiBzLT5zb2NrX3RpbWVvdXQgaXMgaW4gc2Vjb25kcywgdGltZW91dCBpbiBtcyAqLworICAgIG1zID0gX1B5VGltZV9Bc01pbGxpc2Vjb25kcyhpbnRlcnZhbCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKTsKKyAgICBhc3NlcnQobXMgPD0gSU5UX01BWCk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIG4gPSBwb2xsKCZwb2xsZmQsIDEsIChpbnQpbXMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOwogI2Vsc2UKLSAgICB7Ci0gICAgICAgIC8qIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIHRvIHNlbGVjdCAqLwotICAgICAgICBmZF9zZXQgZmRzOwotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgdHYudHZfc2VjID0gKGludClpbnRlcnZhbDsKLSAgICAgICAgdHYudHZfdXNlYyA9IChpbnQpKChpbnRlcnZhbCAtIHR2LnR2X3NlYykgKiAxZTYpOwotICAgICAgICBGRF9aRVJPKCZmZHMpOwotICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7Ci0KLSAgICAgICAgLyogU2VlIGlmIHRoZSBzb2NrZXQgaXMgcmVhZHkgKi8KLSAgICAgICAgaWYgKHdyaXRpbmcpCi0gICAgICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgTlVMTCwgJnR2KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbiA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCi0gICAgICAgICAgICAgICAgICAgICAgICZmZHMsIE5VTEwsIE5VTEwsICZ0dik7CisgICAgaWYgKGludGVydmFsID49IDApIHsKKyAgICAgICAgX1B5VGltZV9Bc1RpbWV2YWxfbm9yYWlzZShpbnRlcnZhbCwgJnR2LCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpOworICAgICAgICB0dnAgPSAmdHY7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgdHZwID0gTlVMTDsKKworICAgIEZEX1pFUk8oJmZkcyk7CisgICAgRkRfU0VUKHMtPnNvY2tfZmQsICZmZHMpOworICAgIEZEX1pFUk8oJmVmZHMpOworICAgIGlmIChjb25uZWN0KSB7CisgICAgICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBzb2NrZXQgYmVjb21lcyB3cml0YWJsZSBvbiBjb25uZWN0aW9uIHN1Y2Nlc3MsCisgICAgICAgICAgIGJ1dCBhIGNvbm5lY3Rpb24gZmFpbHVyZSBpcyBub3RpZmllZCBhcyBhbiBlcnJvci4gT24gUE9TSVgsIHRoZQorICAgICAgICAgICBzb2NrZXQgYmVjb21lcyB3cml0YWJsZSBvbiBjb25uZWN0aW9uIHN1Y2Nlc3Mgb3Igb24gY29ubmVjdGlvbgorICAgICAgICAgICBmYWlsdXJlLiAqLworICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmVmZHMpOworICAgIH0KKworICAgIC8qIFNlZSBpZiB0aGUgc29ja2V0IGlzIHJlYWR5ICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICBpZiAod3JpdGluZykKKyAgICAgICAgbiA9IHNlbGVjdChQeV9TQUZFX0RPV05DQVNUKHMtPnNvY2tfZmQrMSwgU09DS0VUX1QsIGludCksCisgICAgICAgICAgICAgICAgICAgTlVMTCwgJmZkcywgJmVmZHMsIHR2cCk7CisgICAgZWxzZQorICAgICAgICBuID0gc2VsZWN0KFB5X1NBRkVfRE9XTkNBU1Qocy0+c29ja19mZCsxLCBTT0NLRVRfVCwgaW50KSwKKyAgICAgICAgICAgICAgICAgICAmZmRzLCBOVUxMLCAmZWZkcywgdHZwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKICNlbmRpZgogCiAgICAgaWYgKG4gPCAwKQpAQCAtNjUwLDU2ICs2ODYsMTY2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIENhbGwgYSBzb2NrZXQgZnVuY3Rpb24uCisKKyAgIE9uIGVycm9yLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBpZiBlcnIgaXMgc2V0LCBvciBmaWxsIGVyciBhbmQKKyAgIHJldHVybiAtMSBvdGhlcndpc2UuIElmIGEgc2lnbmFsIHdhcyByZWNlaXZlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIHJhaXNlZAorICAgYW4gZXhjZXB0aW9uLCByZXR1cm4gLTEsIGFuZCBzZXQgZXJyIHRvIC0xIGlmIGVyciBpcyBzZXQuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiAwLCBhbmQgc2V0IGVyciB0byAwIGlmIGVyciBpcyBzZXQuCisKKyAgIElmIHRoZSBzb2NrZXQgaGFzIGEgdGltZW91dCwgd2FpdCB1bnRpbCB0aGUgc29ja2V0IGlzIHJlYWR5IGJlZm9yZSBjYWxsaW5nCisgICB0aGUgZnVuY3Rpb246IHdhaXQgdW50aWwgdGhlIHNvY2tldCBpcyB3cml0YWJsZSBpZiB3cml0aW5nIGlzIG5vbnplcm8sIHdhaXQKKyAgIHVudGlsIHRoZSBzb2NrZXQgcmVjZWl2ZWQgZGF0YSBvdGhlcndpc2UuCisKKyAgIElmIHRoZSBzb2NrZXQgZnVuY3Rpb24gaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoIEVJTlRSKTogcmV0cnkKKyAgIHRoZSBmdW5jdGlvbiwgZXhjZXB0IGlmIHRoZSBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uIChQRVAgNDc1KS4KKworICAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgcmV0cmllZCwgcmVjb21wdXRlIHRoZSB0aW1lb3V0IHVzaW5nIGEgbW9ub3RvbmljIGNsb2NrLgorCisgICBzb2NrX2NhbGxfZXgoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBHSUwgaGVsZC4gVGhlIHNvY2tldCBmdW5jdGlvbiBpcworICAgY2FsbGVkIHdpdGggdGhlIEdJTCByZWxlYXNlZC4gKi8KIHN0YXRpYyBpbnQKLWludGVybmFsX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nKQorc29ja19jYWxsX2V4KFB5U29ja2V0U29ja09iamVjdCAqcywKKyAgICAgICAgICAgICBpbnQgd3JpdGluZywKKyAgICAgICAgICAgICBpbnQgKCpzb2NrX2Z1bmMpIChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpLAorICAgICAgICAgICAgIHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgaW50IGNvbm5lY3QsCisgICAgICAgICAgICAgaW50ICplcnIsCisgICAgICAgICAgICAgX1B5VGltZV90IHRpbWVvdXQpCiB7Ci0gICAgcmV0dXJuIGludGVybmFsX3NlbGVjdF9leChzLCB3cml0aW5nLCBzLT5zb2NrX3RpbWVvdXQpOwotfQorICAgIGludCBoYXNfdGltZW91dCA9ICh0aW1lb3V0ID4gMCk7CisgICAgX1B5VGltZV90IGRlYWRsaW5lID0gMDsKKyAgICBpbnQgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAwOworICAgIGludCByZXM7CiAKLS8qCi0gICBUd28gbWFjcm9zIGZvciBhdXRvbWF0aWMgcmV0cnkgb2Ygc2VsZWN0KCkgaW4gY2FzZSBvZiBmYWxzZSBwb3NpdGl2ZXMKLSAgIChmb3IgZXhhbXBsZSwgc2VsZWN0KCkgY291bGQgaW5kaWNhdGUgYSBzb2NrZXQgaXMgcmVhZHkgZm9yIHJlYWRpbmcKLSAgICBidXQgdGhlIGRhdGEgdGhlbiBkaXNjYXJkZWQgYnkgdGhlIE9TIGJlY2F1c2Ugb2YgYSB3cm9uZyBjaGVja3N1bSkuCi0gICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdXNlOgorICAgIC8qIHNvY2tfY2FsbCgpIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIEdJTCBoZWxkLiAqLworICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOwogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KQotICAgICAgICBvdXRsZW4gPSByZWN2KHMtPnNvY2tfZmQsIGNidWYsIGxlbiwgZmxhZ3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAvKiBvdXRlciBsb29wIHRvIHJldHJ5IHNlbGVjdCgpIHdoZW4gc2VsZWN0KCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwKKyAgICAgICBvciB0byByZXRyeSBzZWxlY3QoKStzb2NrX2Z1bmMoKSBvbiBmYWxzZSBwb3NpdGl2ZSAoc2VlIGFib3ZlKSAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIEZvciBjb25uZWN0KCksIHBvbGwgZXZlbiBmb3IgYmxvY2tpbmcgc29ja2V0LiBUaGUgY29ubmVjdGlvbgorICAgICAgICAgICBydW5zIGFzeW5jaHJvbm91c2x5LiAqLworICAgICAgICBpZiAoaGFzX3RpbWVvdXQgfHwgY29ubmVjdCkgeworICAgICAgICAgICAgaWYgKGhhc190aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgX1B5VGltZV90IGludGVydmFsOworCisgICAgICAgICAgICAgICAgaWYgKGRlYWRsaW5lX2luaXRpYWxpemVkKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHJlY29tcHV0ZSB0aGUgdGltZW91dCAqLworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAxOworICAgICAgICAgICAgICAgICAgICBkZWFkbGluZSA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSArIHRpbWVvdXQ7CisgICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gdGltZW91dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gaW50ZXJuYWxfc2VsZWN0KHMsIHdyaXRpbmcsIGludGVydmFsLCBjb25uZWN0KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXMgPSBpbnRlcm5hbF9zZWxlY3Qocywgd3JpdGluZywgdGltZW91dCwgY29ubmVjdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gR0VUX1NPQ0tfRVJST1I7CisKKyAgICAgICAgICAgICAgICBpZiAoQ0hFQ0tfRVJSTk8oRUlOVFIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHNlbGVjdCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmVyciA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogcmV0cnkgc2VsZWN0KCkgKi8KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogc2VsZWN0KCkgZmFpbGVkICovCisgICAgICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocmVzID09IDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gU09DS19USU1FT1VUX0VSUjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogdGhlIHNvY2tldCBpcyByZWFkeSAqLworICAgICAgICB9CisKKyAgICAgICAgLyogaW5uZXIgbG9vcCB0byByZXRyeSBzb2NrX2Z1bmMoKSB3aGVuIHNvY2tfZnVuYygpIGlzIGludGVycnVwdGVkCisgICAgICAgICAgIGJ5IGEgc2lnbmFsICovCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXMgPSBzb2NrX2Z1bmMocywgZGF0YSk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICAgICAgLyogc29ja19mdW5jKCkgc3VjY2VlZGVkICovCisgICAgICAgICAgICAgICAgaWYgKGVycikKKyAgICAgICAgICAgICAgICAgICAgKmVyciA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICAgICAgKmVyciA9IEdFVF9TT0NLX0VSUk9SOworCisgICAgICAgICAgICBpZiAoIUNIRUNLX0VSUk5PKEVJTlRSKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLyogc29ja19mdW5jKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCisgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJyKQorICAgICAgICAgICAgICAgICAgICAqZXJyID0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiByZXRyeSBzb2NrX2Z1bmMoKSAqLworICAgICAgICB9CisKKyAgICAgICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDAKKyAgICAgICAgICAgICYmIChDSEVDS19FUlJOTyhFV09VTERCTE9DSykgfHwgQ0hFQ0tfRVJSTk8oRUFHQUlOKSkpIHsKKyAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlOiBzb2NrX2Z1bmMoKSBmYWlsZWQgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4uCisKKyAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBzZWxlY3QoKSBjb3VsZCBpbmRpY2F0ZSBhIHNvY2tldCBpcyByZWFkeSBmb3IKKyAgICAgICAgICAgICAgIHJlYWRpbmcsIGJ1dCB0aGUgZGF0YSB0aGVuIGRpc2NhcmRlZCBieSB0aGUgT1MgYmVjYXVzZSBvZiBhCisgICAgICAgICAgICAgICB3cm9uZyBjaGVja3N1bS4KKworICAgICAgICAgICAgICAgTG9vcCBvbiBzZWxlY3QoKSB0byByZWNoZWNrIGZvciBzb2NrZXQgcmVhZHluZXNzLiAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKiBzb2NrX2Z1bmMoKSBmYWlsZWQgKi8KKyAgICAgICAgaWYgKCFlcnIpCisgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgLyogZWxzZTogZXJyIHdhcyBhbHJlYWR5IHNldCBiZWZvcmUgKi8KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLSovCit9CiAKLSNkZWZpbmUgQkVHSU5fU0VMRUNUX0xPT1AocykgXAotICAgIHsgXAotICAgICAgICBfUHlUaW1lX3RpbWV2YWwgbm93LCBkZWFkbGluZSA9IHswLCAwfTsgXAotICAgICAgICBkb3VibGUgaW50ZXJ2YWwgPSBzLT5zb2NrX3RpbWVvdXQ7IFwKLSAgICAgICAgaW50IGhhc190aW1lb3V0ID0gcy0+c29ja190aW1lb3V0ID4gMC4wOyBcCi0gICAgICAgIGlmIChoYXNfdGltZW91dCkgeyBcCi0gICAgICAgICAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmbm93KTsgXAotICAgICAgICAgICAgZGVhZGxpbmUgPSBub3c7IFwKLSAgICAgICAgICAgIF9QeVRpbWVfQUREX1NFQ09ORFMoZGVhZGxpbmUsIHMtPnNvY2tfdGltZW91dCk7IFwKLSAgICAgICAgfSBcCi0gICAgICAgIHdoaWxlICgxKSB7IFwKLSAgICAgICAgICAgIGVycm5vID0gMDsgXAorc3RhdGljIGludAorc29ja19jYWxsKFB5U29ja2V0U29ja09iamVjdCAqcywKKyAgICAgICAgICBpbnQgd3JpdGluZywKKyAgICAgICAgICBpbnQgKCpmdW5jKSAoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKSwKKyAgICAgICAgICB2b2lkICpkYXRhKQoreworICAgIHJldHVybiBzb2NrX2NhbGxfZXgocywgd3JpdGluZywgZnVuYywgZGF0YSwgMCwgTlVMTCwgcy0+c29ja190aW1lb3V0KTsKK30KIAotI2RlZmluZSBFTkRfU0VMRUNUX0xPT1AocykgXAotICAgICAgICAgICAgaWYgKCFoYXNfdGltZW91dCB8fCBcCi0gICAgICAgICAgICAgICAgKCFDSEVDS19FUlJOTyhFV09VTERCTE9DSykgJiYgIUNIRUNLX0VSUk5PKEVBR0FJTikpKSBcCi0gICAgICAgICAgICAgICAgYnJlYWs7IFwKLSAgICAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZub3cpOyBcCi0gICAgICAgICAgICBpbnRlcnZhbCA9IF9QeVRpbWVfSU5URVJWQUwobm93LCBkZWFkbGluZSk7IFwKLSAgICAgICAgfSBcCi0gICAgfSBcCiAKIC8qIEluaXRpYWxpemUgYSBuZXcgc29ja2V0IG9iamVjdC4gKi8KIAotc3RhdGljIGRvdWJsZSBkZWZhdWx0dGltZW91dCA9IC0xLjA7IC8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KKy8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KK3N0YXRpYyBfUHlUaW1lX3QgZGVmYXVsdHRpbWVvdXQgPSBfUFlUSU1FX0ZST01TRUNPTkRTKC0xKTsKIAogc3RhdGljIHZvaWQKIGluaXRfc29ja29iamVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsCkBAIC03MTMsMTIgKzg1OSwxMiBAQAogICAgIHMtPmVycm9yaGFuZGxlciA9ICZzZXRfZXJyb3I7CiAjaWZkZWYgU09DS19OT05CTE9DSwogICAgIGlmICh0eXBlICYgU09DS19OT05CTE9DSykKLSAgICAgICAgcy0+c29ja190aW1lb3V0ID0gMC4wOworICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSAwOwogICAgIGVsc2UKICNlbmRpZgogICAgIHsKICAgICAgICAgcy0+c29ja190aW1lb3V0ID0gZGVmYXVsdHRpbWVvdXQ7Ci0gICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwLjApCisgICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwKQogICAgICAgICAgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgMCk7CiAgICAgfQogCkBAIC0xMjE0LDYgKzEzNjAsNzEgQEAKICAgICB9CiB9CiAKKy8qIEhlbHBlciBmb3IgZ2V0c29ja2FkZHJhcmc6IGJ5cGFzcyBJRE5BIGZvciBBU0NJSS1vbmx5IGhvc3QgbmFtZXMKKyAgIChpbiBwYXJ0aWN1bGFyLCBudW1lcmljIElQIGFkZHJlc3NlcykuICovCitzdHJ1Y3QgbWF5YmVfaWRuYSB7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBjaGFyICpidWY7Cit9OworCitzdGF0aWMgdm9pZAoraWRuYV9jbGVhbnVwKHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQoreworICAgIFB5X0NMRUFSKGRhdGEtPm9iaik7Cit9CisKK3N0YXRpYyBpbnQKK2lkbmFfY29udmVydGVyKFB5T2JqZWN0ICpvYmosIHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQoreworICAgIHNpemVfdCBsZW47CisgICAgUHlPYmplY3QgKm9iajIsICpvYmozOworICAgIGlmIChvYmogPT0gTlVMTCkgeworICAgICAgICBpZG5hX2NsZWFudXAoZGF0YSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBkYXRhLT5vYmogPSBOVUxMOworICAgIGxlbiA9IC0xOworICAgIGlmIChQeUJ5dGVzX0NoZWNrKG9iaikpIHsKKyAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19Bc1N0cmluZyhvYmopOworICAgICAgICBsZW4gPSBQeUJ5dGVzX1NpemUob2JqKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sob2JqKSkgeworICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhvYmopOworICAgICAgICBsZW4gPSBQeUJ5dGVBcnJheV9TaXplKG9iaik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgeworICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7CisgICAgICAgIGlmICghb2JqMikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBvciB1bmljb2RlIHRleHQgYnVmZmVyIGV4cGVjdGVkLCBub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBvYmozID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmoyLCAiaWRuYSIsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYob2JqMik7CisgICAgICAgIGlmICghb2JqMykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG9iajMpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqMyk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS0+b2JqID0gb2JqMzsKKyAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMyk7CisgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMyk7CisgICAgfQorICAgIGlmIChzdHJsZW4oZGF0YS0+YnVmKSAhPSBsZW4pIHsKKyAgICAgICAgUHlfQ0xFQVIoZGF0YS0+b2JqKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImhvc3QgbmFtZSBtdXN0IG5vdCBjb250YWluIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7Cit9CiAKIC8qIFBhcnNlIGEgc29ja2V0IGFkZHJlc3MgYXJndW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBzb2NrZXQgb2JqZWN0J3MKICAgIGFkZHJlc3MgZmFtaWx5LiAgUmV0dXJuIDEgaWYgdGhlIGFkZHJlc3Mgd2FzIGluIHRoZSBwcm9wZXIgZm9ybWF0LApAQCAtMTIzMCw4ICsxNDQxLDcgQEAKICAgICBjYXNlIEFGX1VOSVg6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4qIGFkZHI7Ci0gICAgICAgIGNoYXIgKnBhdGg7Ci0gICAgICAgIGludCBsZW47CisgICAgICAgIFB5X2J1ZmZlciBwYXRoOwogICAgICAgICBpbnQgcmV0dmFsID0gMDsKIAogICAgICAgICAvKiBQRVAgMzgzLiAgTm90IHVzaW5nIFB5VW5pY29kZV9GU0NvbnZlcnRlciBzaW5jZSB3ZSBuZWVkIHRvCkBAIC0xMjQyLDE0ICsxNDUyLDE3IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJ5IyIsICZwYXRoLCAmbGVuKSkKLSAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgInkqIiwgJnBhdGgpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICB9CisgICAgICAgIGFzc2VydChwYXRoLmxlbiA+PSAwKTsKIAogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biopYWRkcl9yZXQ7CiAjaWZkZWYgbGludXgKLSAgICAgICAgaWYgKGxlbiA+IDAgJiYgcGF0aFswXSA9PSAwKSB7CisgICAgICAgIGlmIChwYXRoLmxlbiA+IDAgJiYgKihjb25zdCBjaGFyICopcGF0aC5idWYgPT0gMCkgewogICAgICAgICAgICAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlIGV4dGVuc2lvbiAqLwotICAgICAgICAgICAgaWYgKGxlbiA+IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgeworICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX1VOSVggcGF0aCB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CkBAIC0xMjU5LDE4ICsxNDcyLDE5IEBACiAjZW5kaWYgLyogbGludXggKi8KICAgICAgICAgewogICAgICAgICAgICAgLyogcmVndWxhciBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0gICAgICAgICAgICBpZiAobGVuID49IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgeworICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPj0gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciKTsKICAgICAgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYWRkci0+c3VuX3BhdGhbbGVuXSA9IDA7CisgICAgICAgICAgICBhZGRyLT5zdW5fcGF0aFtwYXRoLmxlbl0gPSAwOwogICAgICAgICB9CiAgICAgICAgIGFkZHItPnN1bl9mYW1pbHkgPSBzLT5zb2NrX2ZhbWlseTsKLSAgICAgICAgbWVtY3B5KGFkZHItPnN1bl9wYXRoLCBwYXRoLCBsZW4pOwotICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOworICAgICAgICBtZW1jcHkoYWRkci0+c3VuX3BhdGgsIHBhdGguYnVmLCBwYXRoLmxlbik7CisgICAgICAgICpsZW5fcmV0ID0gcGF0aC5sZW4gKyBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICAgICAgICAgcmV0dmFsID0gMTsKICAgICB1bml4X291dDoKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGF0aCk7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICAgICAgcmV0dXJuIHJldHZhbDsKICAgICB9CkBAIC0xMzA4LDcgKzE1MjIsNyBAQAogICAgIGNhc2UgQUZfSU5FVDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiogYWRkcjsKLSAgICAgICAgY2hhciAqaG9zdDsKKyAgICAgICAgc3RydWN0IG1heWJlX2lkbmEgaG9zdCA9IHtOVUxMLCBOVUxMfTsKICAgICAgICAgaW50IHBvcnQsIHJlc3VsdDsKICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xMzE4LDEzICsxNTMyLDEzIEBACiAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmdzKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImV0aTpnZXRzb2NrYWRkcmFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWRuYSIsICZob3N0LCAmcG9ydCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmdldHNvY2thZGRyYXJnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkbmFfY29udmVydGVyLCAmaG9zdCwgJnBvcnQpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGFkZHI9KHN0cnVjdCBzb2NrYWRkcl9pbiopYWRkcl9yZXQ7Ci0gICAgICAgIHJlc3VsdCA9IHNldGlwYWRkcihob3N0LCAoc3RydWN0IHNvY2thZGRyICopYWRkciwKKyAgICAgICAgcmVzdWx0ID0gc2V0aXBhZGRyKGhvc3QuYnVmLCAoc3RydWN0IHNvY2thZGRyICopYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqYWRkciksICBBRl9JTkVUKTsKLSAgICAgICAgUHlNZW1fRnJlZShob3N0KTsKKyAgICAgICAgaWRuYV9jbGVhbnVwKCZob3N0KTsKICAgICAgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweGZmZmYpIHsKQEAgLTEzNDMsNyArMTU1Nyw3IEBACiAgICAgY2FzZSBBRl9JTkVUNjoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYqIGFkZHI7Ci0gICAgICAgIGNoYXIgKmhvc3Q7CisgICAgICAgIHN0cnVjdCBtYXliZV9pZG5hIGhvc3QgPSB7TlVMTCwgTlVMTH07CiAgICAgICAgIGludCBwb3J0LCByZXN1bHQ7CiAgICAgICAgIHVuc2lnbmVkIGludCBmbG93aW5mbywgc2NvcGVfaWQ7CiAgICAgICAgIGZsb3dpbmZvID0gc2NvcGVfaWQgPSAwOwpAQCAtMTM1NSwxNSArMTU2OSwxNSBAQAogICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJncyktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJldGl8SUkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkbmEiLCAmaG9zdCwgJnBvcnQsICZmbG93aW5mbywKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8SUkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRuYV9jb252ZXJ0ZXIsICZob3N0LCAmcG9ydCwgJmZsb3dpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNjb3BlX2lkKSkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42KilhZGRyX3JldDsKLSAgICAgICAgcmVzdWx0ID0gc2V0aXBhZGRyKGhvc3QsIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAorICAgICAgICByZXN1bHQgPSBzZXRpcGFkZHIoaG9zdC5idWYsIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCphZGRyKSwgQUZfSU5FVDYpOwotICAgICAgICBQeU1lbV9GcmVlKGhvc3QpOworICAgICAgICBpZG5hX2NsZWFudXAoJmhvc3QpOwogICAgICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IDB4ZmZmZikgewpAQCAtMTQ5Miw4ICsxNzA2LDcgQEAKICAgICAgICAgaW50IHByb3RvTnVtYmVyOwogICAgICAgICBpbnQgaGF0eXBlID0gMDsKICAgICAgICAgaW50IHBrdHR5cGUgPSAwOwotICAgICAgICBjaGFyICpoYWRkciA9IE5VTEw7Ci0gICAgICAgIHVuc2lnbmVkIGludCBoYWxlbiA9IDA7CisgICAgICAgIFB5X2J1ZmZlciBoYWRkciA9IHtOVUxMLCBOVUxMfTsKIAogICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTE1MDMsMjUgKzE3MTYsMjggQEAKICAgICAgICAgICAgICAgICBQeV9UWVBFKGFyZ3MpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2l8aWl5IyIsICZpbnRlcmZhY2VOYW1lLAorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNpfGlpeSoiLCAmaW50ZXJmYWNlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm90b051bWJlciwgJnBrdHR5cGUsICZoYXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFkZHIsICZoYWxlbikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGFkZHIpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHN0cm5jcHkoaWZyLmlmcl9uYW1lLCBpbnRlcmZhY2VOYW1lLCBzaXplb2YoaWZyLmlmcl9uYW1lKSk7CiAgICAgICAgIGlmci5pZnJfbmFtZVsoc2l6ZW9mKGlmci5pZnJfbmFtZSkpLTFdID0gJ1wwJzsKICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CiAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmhhZGRyKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChoYWxlbiA+IDgpIHsKLSAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkhhcmR3YXJlIGFkZHJlc3MgbXVzdCBiZSA4IGJ5dGVzIG9yIGxlc3MiKTsKLSAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGhhZGRyLmJ1ZiAmJiBoYWRkci5sZW4gPiA4KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGFyZHdhcmUgYWRkcmVzcyBtdXN0IGJlIDggYnl0ZXMgb3IgbGVzcyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaGFkZHIpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb3RvTnVtYmVyIDwgMCB8fCBwcm90b051bWJlciA+IDB4ZmZmZikgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgICAgIFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgImdldHNvY2thZGRyYXJnOiBwcm90b051bWJlciBtdXN0IGJlIDAtNjU1MzUuIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZoYWRkcik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9sbCopYWRkcl9yZXQ7CkBAIC0xNTMwLDExICsxNzQ2LDE0IEBACiAgICAgICAgIGFkZHItPnNsbF9pZmluZGV4ID0gaWZyLmlmcl9pZmluZGV4OwogICAgICAgICBhZGRyLT5zbGxfcGt0dHlwZSA9IHBrdHR5cGU7CiAgICAgICAgIGFkZHItPnNsbF9oYXR5cGUgPSBoYXR5cGU7Ci0gICAgICAgIGlmIChoYWxlbiAhPSAwKSB7Ci0gICAgICAgICAgbWVtY3B5KCZhZGRyLT5zbGxfYWRkciwgaGFkZHIsIGhhbGVuKTsKKyAgICAgICAgaWYgKGhhZGRyLmJ1ZikgeworICAgICAgICAgICAgbWVtY3B5KCZhZGRyLT5zbGxfYWRkciwgaGFkZHIuYnVmLCBoYWRkci5sZW4pOworICAgICAgICAgICAgYWRkci0+c2xsX2hhbGVuID0gaGFkZHIubGVuOwogICAgICAgICB9Ci0gICAgICAgIGFkZHItPnNsbF9oYWxlbiA9IGhhbGVuOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRyLT5zbGxfaGFsZW4gPSAwOwogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAqYWRkcjsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaGFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAjZW5kaWYKQEAgLTE2MTEsNyArMTgzMCw3IEBACiAKICAgICAgICAgICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICAgICAgICAgIGlmci5pZnJfaWZpbmRleCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGxlbiA8IHNpemVvZihpZnIuaWZyX25hbWUpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKChzaXplX3QpbGVuIDwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpIHsKICAgICAgICAgICAgICAgICBzdHJuY3B5KGlmci5pZnJfbmFtZSwgUHlCeXRlc19BU19TVFJJTkcoaW50ZXJmYWNlTmFtZSksIHNpemVvZihpZnIuaWZyX25hbWUpKTsKICAgICAgICAgICAgICAgICBpZnIuaWZyX25hbWVbKHNpemVvZihpZnIuaWZyX25hbWUpKS0xXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CkBAIC0xNjYxLDcgKzE4ODAsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShjdGxfbmFtZSkgPiBzaXplb2YoaW5mby5jdGxfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShjdGxfbmFtZSkgPiAoUHlfc3NpemVfdClzaXplb2YoaW5mby5jdGxfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdGxfbmFtZSk7CkBAIC0xODk2LDggKzIxMTUsMTUgQEAKICAgICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogICAgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3RhdXRvbG9naWNhbC1jb21wYXJlIgogICAgICNlbmRpZgorICAgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA1KSkpCisgICAgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisgICAgI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3R5cGUtbGltaXRzIgorICAgICNlbmRpZgogICAgIGlmIChtc2ctPm1zZ19jb250cm9sbGVuIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+IDUpKSkKKyAgICAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICNlbmRpZgogICAgICNpZmRlZiBfX2NsYW5nX18KICAgICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgI2VuZGlmCkBAIC0xOTU1LDIyICsyMTgxLDU2IEBACiAjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KIAogCitzdHJ1Y3Qgc29ja19hY2NlcHQgeworICAgIHNvY2tsZW5fdCAqYWRkcmxlbjsKKyAgICBzb2NrX2FkZHJfdCAqYWRkcmJ1ZjsKKyAgICBTT0NLRVRfVCByZXN1bHQ7Cit9OworCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQorLyogYWNjZXB0NCgpIGlzIGF2YWlsYWJsZSBvbiBMaW51eCAyLjYuMjgrIGFuZCBnbGliYyAyLjEwICovCitzdGF0aWMgaW50IGFjY2VwdDRfd29ya3MgPSAtMTsKKyNlbmRpZgorCitzdGF0aWMgaW50Citzb2NrX2FjY2VwdF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19hY2NlcHQgKmN0eCA9IGRhdGE7CisKKyNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCisgICAgaWYgKGFjY2VwdDRfd29ya3MgIT0gMCkgeworICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7CisgICAgICAgIGlmIChjdHgtPnJlc3VsdCA9PSBJTlZBTElEX1NPQ0tFVCAmJiBhY2NlcHQ0X3dvcmtzID09IC0xKSB7CisgICAgICAgICAgICAvKiBPbiBMaW51eCBvbGRlciB0aGFuIDIuNi4yOCwgYWNjZXB0NCgpIGZhaWxzIHdpdGggRU5PU1lTICovCisgICAgICAgICAgICBhY2NlcHQ0X3dvcmtzID0gKGVycm5vICE9IEVOT1NZUyk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGFjY2VwdDRfd29ya3MgPT0gMCkKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZWxzZQorICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCAhPSBJTlZBTElEX1NPQ0tFVCk7CisjZWxzZQorICAgIHJldHVybiAoY3R4LT5yZXN1bHQgPj0gMCk7CisjZW5kaWYKK30KKwogLyogcy5fYWNjZXB0KCkgLT4gKGZkLCBhZGRyZXNzKSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19hY2NlcHQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgU09DS0VUX1QgbmV3ZmQgPSBJTlZBTElEX1NPQ0tFVDsKKyAgICBTT0NLRVRfVCBuZXdmZDsKICAgICBzb2NrbGVuX3QgYWRkcmxlbjsKICAgICBQeU9iamVjdCAqc29jayA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFkZHIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIGludCB0aW1lb3V0OwotI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKLSAgICAvKiBhY2NlcHQ0KCkgaXMgYXZhaWxhYmxlIG9uIExpbnV4IDIuNi4yOCsgYW5kIGdsaWJjIDIuMTAgKi8KLSAgICBzdGF0aWMgaW50IGFjY2VwdDRfd29ya3MgPSAtMTsKLSNlbmRpZgorICAgIHN0cnVjdCBzb2NrX2FjY2VwdCBjdHg7CiAKICAgICBpZiAoIWdldHNvY2thZGRybGVuKHMsICZhZGRybGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTc5LDM2ICsyMjM5LDExIEBACiAgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKQogICAgICAgICByZXR1cm4gc2VsZWN0X2Vycm9yKCk7CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKLSAgICAgICAgaWYgKGFjY2VwdDRfd29ya3MgIT0gMCkgewotICAgICAgICAgICAgbmV3ZmQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7Ci0gICAgICAgICAgICBpZiAobmV3ZmQgPT0gSU5WQUxJRF9TT0NLRVQgJiYgYWNjZXB0NF93b3JrcyA9PSAtMSkgewotICAgICAgICAgICAgICAgIC8qIE9uIExpbnV4IG9sZGVyIHRoYW4gMi42LjI4LCBhY2NlcHQ0KCkgZmFpbHMgd2l0aCBFTk9TWVMgKi8KLSAgICAgICAgICAgICAgICBhY2NlcHQ0X3dvcmtzID0gKGVycm5vICE9IEVOT1NZUyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFjY2VwdDRfd29ya3MgPT0gMCkKLSAgICAgICAgICAgIG5ld2ZkID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKTsKLSNlbHNlCi0gICAgICAgIG5ld2ZkID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksICZhZGRybGVuKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICBjdHguYWRkcmxlbiA9ICZhZGRybGVuOworICAgIGN0eC5hZGRyYnVmID0gJmFkZHJidWY7CisgICAgaWYgKHNvY2tfY2FsbChzLCAwLCBzb2NrX2FjY2VwdF9pbXBsLCAmY3R4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLQotICAgIGlmIChuZXdmZCA9PSBJTlZBTElEX1NPQ0tFVCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOworICAgIG5ld2ZkID0gY3R4LnJlc3VsdDsKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoIVNldEhhbmRsZUluZm9ybWF0aW9uKChIQU5ETEUpbmV3ZmQsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIDApKSB7CkBAIC0yMDY5LDcgKzIzMDQsNyBAQAogICAgIGlmIChibG9jayA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHMtPnNvY2tfdGltZW91dCA9IGJsb2NrID8gLTEuMCA6IDAuMDsKKyAgICBzLT5zb2NrX3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKGJsb2NrID8gLTEgOiAwKTsKICAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jayk7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0yMDgzLDYgKzIzMTgsNDcgQEAKIHNldGJsb2NraW5nKFRydWUpIGlzIGVxdWl2YWxlbnQgdG8gc2V0dGltZW91dChOb25lKTtcblwKIHNldGJsb2NraW5nKEZhbHNlKSBpcyBlcXVpdmFsZW50IHRvIHNldHRpbWVvdXQoMC4wKS4iKTsKIAorc3RhdGljIGludAorc29ja2V0X3BhcnNlX3RpbWVvdXQoX1B5VGltZV90ICp0aW1lb3V0LCBQeU9iamVjdCAqdGltZW91dF9vYmopCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworI2VuZGlmCisjaWZuZGVmIEhBVkVfUE9MTAorICAgIF9QeVRpbWVfdCBtczsKKyNlbmRpZgorICAgIGludCBvdmVyZmxvdyA9IDA7CisKKyAgICBpZiAodGltZW91dF9vYmogPT0gUHlfTm9uZSkgeworICAgICAgICAqdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoLTEpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCh0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRfb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKCp0aW1lb3V0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlRpbWVvdXQgdmFsdWUgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgb3ZlcmZsb3cgfD0gKF9QeVRpbWVfQXNUaW1ldmFsKCp0aW1lb3V0LCAmdHYsIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKTsKKyNlbmRpZgorI2lmbmRlZiBIQVZFX1BPTEwKKyAgICBtcyA9IF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoKnRpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CisgICAgb3ZlcmZsb3cgfD0gKG1zID4gSU5UX01BWCk7CisjZW5kaWYKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBkb2Vzbid0IGZpdCBpbnRvIEMgdGltZXZhbCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIC8qIHMuc2V0dGltZW91dCh0aW1lb3V0KSBtZXRob2QuICBBcmd1bWVudDoKICAgIE5vbmUgLS0gbm8gdGltZW91dCwgYmxvY2tpbmcgbW9kZTsgc2FtZSBhcyBzZXRibG9ja2luZyhUcnVlKQogICAgMC4wICAtLSBub24tYmxvY2tpbmcgbW9kZTsgc2FtZSBhcyBzZXRibG9ja2luZyhGYWxzZSkKQEAgLTIwOTIsMjIgKzIzNjgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NldHRpbWVvdXQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJnKQogewotICAgIGRvdWJsZSB0aW1lb3V0OworICAgIF9QeVRpbWVfdCB0aW1lb3V0OwogCi0gICAgaWYgKGFyZyA9PSBQeV9Ob25lKQotICAgICAgICB0aW1lb3V0ID0gLTEuMDsKLSAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUoYXJnKTsKLSAgICAgICAgaWYgKHRpbWVvdXQgPCAwLjApIHsKLSAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgdmFsdWUgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoc29ja2V0X3BhcnNlX3RpbWVvdXQoJnRpbWVvdXQsIGFyZykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IHRpbWVvdXQ7Ci0gICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDAuMCk7CisgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMjEyNiwxMiArMjM5MywxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfZ2V0dGltZW91dChQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7Ci0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA8IDAuMCkgeworICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPCAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzLT5zb2NrX3RpbWVvdXQpOworICAgIGVsc2UgeworICAgICAgICBkb3VibGUgc2Vjb25kcyA9IF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKHMtPnNvY2tfdGltZW91dCk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoc2Vjb25kcyk7CisgICAgfQogfQogCiBQeURvY19TVFJWQVIoZ2V0dGltZW91dF9kb2MsCkBAIC0yMTUyLDIyICsyNDIxLDIyIEBACiAgICAgaW50IGxldmVsOwogICAgIGludCBvcHRuYW1lOwogICAgIGludCByZXM7Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBidWZsZW47CisgICAgUHlfYnVmZmVyIG9wdHZhbDsKICAgICBpbnQgZmxhZzsKIAogICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWk6c2V0c29ja29wdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJmZsYWcpKSB7Ci0gICAgICAgIGJ1ZiA9IChjaGFyICopICZmbGFnOwotICAgICAgICBidWZsZW4gPSBzaXplb2YgZmxhZzsKKyAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopJmZsYWcsIHNpemVvZiBmbGFnKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5IzpzZXRzb2Nrb3B0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZidWYsICZidWZsZW4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKICAgICB9Ci0gICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgKHZvaWQgKilidWYsIGJ1Zmxlbik7CiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CkBAIC0yMjcxLDYgKzI1NDAsMTAgQEAKIHsKICAgICBTT0NLRVRfVCBmZDsKIAorICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCisgICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICogZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKi8KICAgICBpZiAoKGZkID0gcy0+c29ja19mZCkgIT0gLTEpIHsKICAgICAgICAgcy0+c29ja19mZCA9IC0xOwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC0yMzAyLDkyICsyNTc1LDkwIEBACiBjYW4gYmUgcmV1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4gIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgcmV0dXJuZWQuIik7CiAKIHN0YXRpYyBpbnQKLWludGVybmFsX2Nvbm5lY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIGludCBhZGRybGVuLAotICAgICAgICAgICAgICAgICBpbnQgKnRpbWVvdXRwKQorc29ja19jb25uZWN0X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkKiBQeV9VTlVTRUQoZGF0YSkpCiB7Ci0gICAgaW50IHJlcywgdGltZW91dDsKKyAgICBpbnQgZXJyOworICAgIHNvY2tsZW5fdCBzaXplID0gc2l6ZW9mIGVycjsKIAotICAgIHRpbWVvdXQgPSAwOworICAgIGlmIChnZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAodm9pZCAqKSZlcnIsICZzaXplKSkgeworICAgICAgICAvKiBnZXRzb2Nrb3B0KCkgZmFpbGVkICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChlcnIgPT0gRUlTQ09OTikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIC8qIHNvY2tfY2FsbF9leCgpIHVzZXMgR0VUX1NPQ0tfRVJST1IoKSB0byBnZXQgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgU0VUX1NPQ0tfRVJST1IoZXJyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitpbnRlcm5hbF9jb25uZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgc3RydWN0IHNvY2thZGRyICphZGRyLCBpbnQgYWRkcmxlbiwKKyAgICAgICAgICAgICAgICAgaW50IHJhaXNlKQoreworICAgIGludCByZXMsIGVyciwgd2FpdF9jb25uZWN0OworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IGNvbm5lY3Qocy0+c29ja19mZCwgYWRkciwgYWRkcmxlbik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotI2lmZGVmIE1TX1dJTkRPV1MKLQotICAgIGlmIChzLT5zb2NrX3RpbWVvdXQgPiAwLjApIHsKLSAgICAgICAgaWYgKHJlcyA8IDAgJiYgV1NBR2V0TGFzdEVycm9yKCkgPT0gV1NBRVdPVUxEQkxPQ0sgJiYKLSAgICAgICAgICAgIElTX1NFTEVDVEFCTEUocykpIHsKLSAgICAgICAgICAgIC8qIFRoaXMgaXMgYSBtZXNzLiAgQmVzdCBzb2x1dGlvbjogdHJ1c3Qgc2VsZWN0ICovCi0gICAgICAgICAgICBmZF9zZXQgZmRzOwotICAgICAgICAgICAgZmRfc2V0IGZkc19leGM7Ci0gICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICAgICAgICAgIHR2LnR2X3NlYyA9IChpbnQpcy0+c29ja190aW1lb3V0OwotICAgICAgICAgICAgdHYudHZfdXNlYyA9IChpbnQpKChzLT5zb2NrX3RpbWVvdXQgLSB0di50dl9zZWMpICogMWU2KTsKLSAgICAgICAgICAgIEZEX1pFUk8oJmZkcyk7Ci0gICAgICAgICAgICBGRF9TRVQocy0+c29ja19mZCwgJmZkcyk7Ci0gICAgICAgICAgICBGRF9aRVJPKCZmZHNfZXhjKTsKLSAgICAgICAgICAgIEZEX1NFVChzLT5zb2NrX2ZkLCAmZmRzX2V4Yyk7Ci0gICAgICAgICAgICByZXMgPSBzZWxlY3QoUHlfU0FGRV9ET1dOQ0FTVChzLT5zb2NrX2ZkKzEsIFNPQ0tFVF9ULCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZmZHMsICZmZHNfZXhjLCAmdHYpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gV1NBRVdPVUxEQkxPQ0s7Ci0gICAgICAgICAgICAgICAgdGltZW91dCA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA+IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQocy0+c29ja19mZCwgJmZkcykpCi0gICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzb2NrZXQgaXMgaW4gdGhlIHdyaXRhYmxlIHNldCAtIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWVhbnMgY29ubmVjdGVkICovCi0gICAgICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIEFzIHBlciBNUyBkb2NzLCB3ZSBuZWVkIHRvIGNhbGwgZ2V0c29ja29wdCgpCi0gICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCB0aGUgdW5kZXJseWluZyBlcnJvciAqLwotICAgICAgICAgICAgICAgICAgICBpbnQgcmVzX3NpemUgPSBzaXplb2YgcmVzOwotICAgICAgICAgICAgICAgICAgICAvKiBJdCBtdXN0IGJlIGluIHRoZSBleGNlcHRpb24gc2V0ICovCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydChGRF9JU1NFVChzLT5zb2NrX2ZkLCAmZmRzX2V4YykpOwotICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSBnZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopJnJlcywgJnJlc19zaXplKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldHNvY2tvcHQgYWxzbyBjbGVhcnMgV1NBR2V0TGFzdEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gcmVzZXQgaXQgYmFjay4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFdTQVNldExhc3RFcnJvcihyZXMpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBXU0FHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBlbHNlIGlmIChyZXMgPCAwKSBhbiBlcnJvciBvY2N1cnJlZCAqLwotICAgICAgICB9CisgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgLyogY29ubmVjdCgpIHN1Y2NlZWRlZCwgdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQgKi8KKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJlcyA9IFdTQUdldExhc3RFcnJvcigpOworICAgIC8qIGNvbm5lY3QoKSBmYWlsZWQgKi8KIAotI2Vsc2UKKyAgICAvKiBzYXZlIGVycm9yLCBQeUVycl9DaGVja1NpZ25hbHMoKSBjYW4gcmVwbGFjZSBpdCAqLworICAgIGVyciA9IEdFVF9TT0NLX0VSUk9SOworICAgIGlmIChDSEVDS19FUlJOTyhFSU5UUikpIHsKKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHMtPnNvY2tfdGltZW91dCA+IDAuMCkgewotICAgICAgICBpZiAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5QUk9HUkVTUyAmJiBJU19TRUxFQ1RBQkxFKHMpKSB7Ci0gICAgICAgICAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0KHMsIDEpOwotICAgICAgICAgICAgaWYgKHRpbWVvdXQgPT0gMCkgewotICAgICAgICAgICAgICAgIC8qIEJ1ZyAjMTAxOTgwODogaW4gY2FzZSBvZiBhbiBFSU5QUk9HUkVTUywKLSAgICAgICAgICAgICAgICAgICB1c2UgZ2V0c29ja29wdChTT19FUlJPUikgdG8gZ2V0IHRoZSByZWFsCi0gICAgICAgICAgICAgICAgICAgZXJyb3IuICovCi0gICAgICAgICAgICAgICAgc29ja2xlbl90IHJlc19zaXplID0gc2l6ZW9mIHJlczsKLSAgICAgICAgICAgICAgICAodm9pZClnZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIFNPTF9TT0NLRVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT19FUlJPUiwgJnJlcywgJnJlc19zaXplKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzID09IEVJU0NPTk4pCi0gICAgICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZXJybm8gPSByZXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh0aW1lb3V0ID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gZXJybm87ICAgICAgICAgICAgLyogaGFkIGVycm9yICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzID0gRVdPVUxEQkxPQ0s7ICAgICAgICAgICAgICAgICAgICAgIC8qIHRpbWVkIG91dCAqLwotICAgICAgICB9CisgICAgICAgIC8qIElzc3VlICMyMzYxODogd2hlbiBjb25uZWN0KCkgZmFpbHMgd2l0aCBFSU5UUiwgdGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgICAgICAgcnVubmluZyBhc3luY2hyb25vdXNseS4KKworICAgICAgICAgICBJZiB0aGUgc29ja2V0IGlzIGJsb2NraW5nIG9yIGhhcyBhIHRpbWVvdXQsIHdhaXQgdW50aWwgdGhlCisgICAgICAgICAgIGNvbm5lY3Rpb24gY29tcGxldGVzLCBmYWlscyBvciB0aW1lZCBvdXQgdXNpbmcgc2VsZWN0KCksIGFuZCB0aGVuCisgICAgICAgICAgIGdldCB0aGUgY29ubmVjdGlvbiBzdGF0dXMgdXNpbmcgZ2V0c29ja29wdChTT19FUlJPUikuCisKKyAgICAgICAgICAgSWYgdGhlIHNvY2tldCBpcyBub24tYmxvY2tpbmcsIHJhaXNlIEludGVycnVwdGVkRXJyb3IuIFRoZSBjYWxsZXIgaXMKKyAgICAgICAgICAgcmVzcG9uc2libGUgdG8gd2FpdCB1bnRpbCB0aGUgY29ubmVjdGlvbiBjb21wbGV0ZXMsIGZhaWxzIG9yIHRpbWVkCisgICAgICAgICAgIG91dCAoaXQncyB0aGUgY2FzZSBpbiBhc3luY2lvIGZvciBleGFtcGxlKS4gKi8KKyAgICAgICAgd2FpdF9jb25uZWN0ID0gKHMtPnNvY2tfdGltZW91dCAhPSAwICYmIElTX1NFTEVDVEFCTEUocykpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2FpdF9jb25uZWN0ID0gKHMtPnNvY2tfdGltZW91dCA+IDAgJiYgZXJyID09IFNPQ0tfSU5QUk9HUkVTU19FUlIKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIElTX1NFTEVDVEFCTEUocykpOwogICAgIH0KIAotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXMgPSBlcnJubzsKKyAgICBpZiAoIXdhaXRfY29ubmVjdCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIC8qIHJlc3RvcmUgZXJyb3IsIG1heWJlIHJlcGxhY2VkIGJ5IFB5RXJyX0NoZWNrU2lnbmFscygpICovCisgICAgICAgICAgICBTRVRfU09DS19FUlJPUihlcnIpOworICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CiAKLSNlbmRpZgotICAgICp0aW1lb3V0cCA9IHRpbWVvdXQ7Ci0KLSAgICByZXR1cm4gcmVzOworICAgIGlmIChyYWlzZSkgeworICAgICAgICAvKiBzb2NrZXQuY29ubmVjdCgpIHJhaXNlcyBhbiBleGNlcHRpb24gb24gZXJyb3IgKi8KKyAgICAgICAgaWYgKHNvY2tfY2FsbF9leChzLCAxLCBzb2NrX2Nvbm5lY3RfaW1wbCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxLCBOVUxMLCBzLT5zb2NrX3RpbWVvdXQpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHNvY2tldC5jb25uZWN0X2V4KCkgcmV0dXJucyB0aGUgZXJyb3IgY29kZSBvbiBlcnJvciAqLworICAgICAgICBpZiAoc29ja19jYWxsX2V4KHMsIDEsIHNvY2tfY29ubmVjdF9pbXBsLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZlcnIsIHMtPnNvY2tfdGltZW91dCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIHMuY29ubmVjdChzb2NrYWRkcikgbWV0aG9kICovCkBAIC0yMzk4LDIzICsyNjY5LDE1IEBACiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKICAgICBpbnQgYWRkcmxlbjsKICAgICBpbnQgcmVzOwotICAgIGludCB0aW1lb3V0OwogCiAgICAgaWYgKCFnZXRzb2NrYWRkcmFyZyhzLCBhZGRybywgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBpbnRlcm5hbF9jb25uZWN0KHMsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sICZ0aW1lb3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICByZXMgPSBpbnRlcm5hbF9jb25uZWN0KHMsIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4sIDEpOworICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKHJlcyAhPSAwKQotICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihjb25uZWN0X2RvYywKQEAgLTI0MzIsMjEgKzI2OTUsMTMgQEAKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwogICAgIGludCBhZGRybGVuOwogICAgIGludCByZXM7Ci0gICAgaW50IHRpbWVvdXQ7CiAKICAgICBpZiAoIWdldHNvY2thZGRyYXJnKHMsIGFkZHJvLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGludGVybmFsX2Nvbm5lY3QocywgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbiwgJnRpbWVvdXQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAvKiBTaWduYWxzIGFyZSBub3QgZXJyb3JzICh0aG91Z2ggdGhleSBtYXkgcmFpc2UgZXhjZXB0aW9ucykuICBBZGFwdGVkCi0gICAgICAgZnJvbSBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoKS4gKi8KLSNpZmRlZiBFSU5UUgotICAgIGlmIChyZXMgPT0gRUlOVFIgJiYgUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgcmVzID0gaW50ZXJuYWxfY29ubmVjdChzLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLCAwKTsKKyAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKIAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHJlcyk7CiB9CkBAIC0yNTM0LDE0ICsyNzg5LDE2IEBACiAvKiBzLmxpc3RlbihuKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNvY2tfbGlzdGVuKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZykKK3NvY2tfbGlzdGVuKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGJhY2tsb2c7CisgICAgLyogV2UgdHJ5IHRvIGNob29zZSBhIGRlZmF1bHQgYmFja2xvZyBoaWdoIGVub3VnaCB0byBhdm9pZCBjb25uZWN0aW9uIGRyb3BzCisgICAgICogZm9yIGNvbW1vbiB3b3JrbG9hZHMsIHlldCBub3QgdG9vIGhpZ2ggdG8gbGltaXQgcmVzb3VyY2UgdXNhZ2UuICovCisgICAgaW50IGJhY2tsb2cgPSBQeV9NSU4oU09NQVhDT05OLCAxMjgpOwogICAgIGludCByZXM7CiAKLSAgICBiYWNrbG9nID0gX1B5TG9uZ19Bc0ludChhcmcpOwotICAgIGlmIChiYWNrbG9nID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpsaXN0ZW4iLCAmYmFja2xvZykpCiAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIC8qIFRvIGF2b2lkIHByb2JsZW1zIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBhbGxvdyBhIG5lZ2F0aXZlIGJhY2tsb2cKICAgICAgKiAod2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGFueXdheSkgd2UgZm9yY2UgYSBtaW5pbXVtIHZhbHVlIG9mIDAuICovCkBAIC0yNTU2LDEyICsyODEzLDM0IEBACiB9CiAKIFB5RG9jX1NUUlZBUihsaXN0ZW5fZG9jLAotImxpc3RlbihiYWNrbG9nKVxuXAorImxpc3RlbihbYmFja2xvZ10pXG5cCiBcblwKLUVuYWJsZSBhIHNlcnZlciB0byBhY2NlcHQgY29ubmVjdGlvbnMuICBUaGUgYmFja2xvZyBhcmd1bWVudCBtdXN0IGJlIGF0XG5cCi1sZWFzdCAwIChpZiBpdCBpcyBsb3dlciwgaXQgaXMgc2V0IHRvIDApOyBpdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZlxuXAorRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmIGJhY2tsb2cgaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlXG5cCithdCBsZWFzdCAwIChpZiBpdCBpcyBsb3dlciwgaXQgaXMgc2V0IHRvIDApOyBpdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZlxuXAogdW5hY2NlcHRlZCBjb25uZWN0aW9ucyB0aGF0IHRoZSBzeXN0ZW0gd2lsbCBhbGxvdyBiZWZvcmUgcmVmdXNpbmcgbmV3XG5cCi1jb25uZWN0aW9ucy4iKTsKK2Nvbm5lY3Rpb25zLiBJZiBub3Qgc3BlY2lmaWVkLCBhIGRlZmF1bHQgcmVhc29uYWJsZSB2YWx1ZSBpcyBjaG9zZW4uIik7CisKK3N0cnVjdCBzb2NrX3JlY3YgeworICAgIGNoYXIgKmNidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19yZWN2X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQoreworICAgIHN0cnVjdCBzb2NrX3JlY3YgKmN0eCA9IGRhdGE7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGN0eC0+bGVuID4gSU5UX01BWCkKKyAgICAgICAgY3R4LT5sZW4gPSBJTlRfTUFYOworICAgIGN0eC0+cmVzdWx0ID0gcmVjdihzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIChpbnQpY3R4LT5sZW4sIGN0eC0+ZmxhZ3MpOworI2Vsc2UKKyAgICBjdHgtPnJlc3VsdCA9IHJlY3Yocy0+c29ja19mZCwgY3R4LT5jYnVmLCBjdHgtPmxlbiwgY3R4LT5mbGFncyk7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQogCiAKIC8qCkBAIC0yNTc2LDggKzI4NTUsNyBAQAogc3RhdGljIFB5X3NzaXplX3QKIHNvY2tfcmVjdl9ndXRzKFB5U29ja2V0U29ja09iamVjdCAqcywgY2hhciogY2J1ZiwgUHlfc3NpemVfdCBsZW4sIGludCBmbGFncykKIHsKLSAgICBQeV9zc2l6ZV90IG91dGxlbiA9IC0xOwotICAgIGludCB0aW1lb3V0OworICAgIHN0cnVjdCBzb2NrX3JlY3YgY3R4OwogCiAgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CiAgICAgICAgIHNlbGVjdF9lcnJvcigpOwpAQCAtMjU4OCwzMiArMjg2NiwxMyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCAoaW50KWxlbiwgZmxhZ3MpOwotI2Vsc2UKLSAgICAgICAgb3V0bGVuID0gcmVjdihzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGN0eC5jYnVmID0gY2J1ZjsKKyAgICBjdHgubGVuID0gbGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMCwgc29ja19yZWN2X2ltcGwsICZjdHgpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHRpbWVvdXQgPT0gMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLSAgICBpZiAob3V0bGVuIDwgMCkgewotICAgICAgICAvKiBOb3RlOiB0aGUgY2FsbCB0byBlcnJvcmhhbmRsZXIoKSBBTFdBWVMgaW5kaXJlY3RseSByZXR1cm5lZAotICAgICAgICAgICBOVUxMLCBzbyBpZ25vcmUgaXRzIHJldHVybiB2YWx1ZSAqLwotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXR1cm4gb3V0bGVuOworICAgIHJldHVybiBjdHgucmVzdWx0OwogfQogCiAKQEAgLTI3MjcsNiArMjk4NiwzNCBAQAogXG5cCiBTZWUgcmVjdigpIGZvciBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBmbGFncy4iKTsKIAorc3RydWN0IHNvY2tfcmVjdmZyb20geworICAgIGNoYXIqIGNidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIHNvY2tsZW5fdCAqYWRkcmxlbjsKKyAgICBzb2NrX2FkZHJfdCAqYWRkcmJ1ZjsKKyAgICBQeV9zc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfcmVjdmZyb21faW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfcmVjdmZyb20gKmN0eCA9IGRhdGE7CisKKyAgICBtZW1zZXQoY3R4LT5hZGRyYnVmLCAwLCAqY3R4LT5hZGRybGVuKTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY3R4LT5sZW4gPiBJTlRfTUFYKQorICAgICAgICBjdHgtPmxlbiA9IElOVF9NQVg7CisgICAgY3R4LT5yZXN1bHQgPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIChpbnQpY3R4LT5sZW4sIGN0eC0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjdHgtPmNidWYsIGN0eC0+bGVuLCBjdHgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAKIC8qCiAgKiBUaGlzIGlzIHRoZSBndXRzIG9mIHRoZSByZWN2ZnJvbSgpIGFuZCByZWN2ZnJvbV9pbnRvKCkgbWV0aG9kcywgd2hpY2ggcmVhZHMKQEAgLTI3NDQsOSArMzAzMSw4IEBACiAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqKiBhZGRyKQogewogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgaW50IHRpbWVvdXQ7Ci0gICAgUHlfc3NpemVfdCBuID0gLTE7CiAgICAgc29ja2xlbl90IGFkZHJsZW47CisgICAgc3RydWN0IHNvY2tfcmVjdmZyb20gY3R4OwogCiAgICAgKmFkZHIgPSBOVUxMOwogCkBAIC0yNzU4LDM4ICszMDQ0LDIwIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBtZW1zZXQoJmFkZHJidWYsIDAsIGFkZHJsZW4pOwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMCwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gcmVjdmZyb20ocy0+c29ja19mZCwgY2J1ZiwgKGludClsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgJmFkZHJidWYsICZhZGRybGVuKTsKLSNlbHNlCi0gICAgICAgIG4gPSByZWN2ZnJvbShzLT5zb2NrX2ZkLCBjYnVmLCBsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgJmFkZHJsZW4pOwotI2VuZGlmCi0gICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQotICAgIGlmIChuIDwgMCkgewotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmICghKCphZGRyID0gbWFrZXNvY2thZGRyKHMtPnNvY2tfZmQsIFNBUzJTQSgmYWRkcmJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmxlbiwgcy0+c29ja19wcm90bykpKQorICAgIGN0eC5jYnVmID0gY2J1ZjsKKyAgICBjdHgubGVuID0gbGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGN0eC5hZGRyYnVmID0gJmFkZHJidWY7CisgICAgY3R4LmFkZHJsZW4gPSAmYWRkcmxlbjsKKyAgICBpZiAoc29ja19jYWxsKHMsIDAsIHNvY2tfcmVjdmZyb21faW1wbCwgJmN0eCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICByZXR1cm4gbjsKKyAgICAqYWRkciA9IG1ha2Vzb2NrYWRkcihzLT5zb2NrX2ZkLCBTQVMyU0EoJmFkZHJidWYpLCBhZGRybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnNvY2tfcHJvdG8pOworICAgIGlmICgqYWRkciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gY3R4LnJlc3VsdDsKIH0KIAogLyogcy5yZWN2ZnJvbShuYnl0ZXMgWyxmbGFnc10pIG1ldGhvZCAqLwpAQCAtMjkwMCwxMCArMzE2OCwyNCBAQAogXG5cCiBMaWtlIHJlY3ZfaW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKSBidXQgYWxzbyByZXR1cm4gdGhlIHNlbmRlcidzIGFkZHJlc3MgaW5mby4iKTsKIAotCiAvKiBUaGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMgcmVxdWlyZSBhIHdvcmtpbmcKICAgIENNU0dfTEVOKCkuICBTZWUgdGhlIGNvbW1lbnQgbmVhciBnZXRfQ01TR19MRU4oKS4gKi8KICNpZmRlZiBDTVNHX0xFTgorc3RydWN0IHNvY2tfcmVjdm1zZyB7CisgICAgc3RydWN0IG1zZ2hkciAqbXNnOworICAgIGludCBmbGFnczsKKyAgICBzc2l6ZV90IHJlc3VsdDsKK307CisKK3N0YXRpYyBpbnQKK3NvY2tfcmVjdm1zZ19pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3Qgc29ja19yZWN2bXNnICpjdHggPSBkYXRhOworCisgICAgY3R4LT5yZXN1bHQgPSByZWN2bXNnKHMtPnNvY2tfZmQsIGN0eC0+bXNnLCBjdHgtPmZsYWdzKTsKKyAgICByZXR1cm4gIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyoKICAqIENhbGwgcmVjdm1zZygpIHdpdGggdGhlIHN1cHBsaWVkIGlvdmVjIHN0cnVjdHVyZXMsIGZsYWdzLCBhbmQKICAqIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciBzaXplIChjb250cm9sbGVuKS4gIFJldHVybnMgdGhlIHR1cGxlIHJldHVybgpAQCAtMjkxOSw4ICszMjAxLDYgQEAKICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgUHlfc3NpemVfdCBjb250cm9sbGVuLAogICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKigqbWFrZXZhbCkoc3NpemVfdCwgdm9pZCAqKSwgdm9pZCAqbWFrZXZhbF9kYXRhKQogewotICAgIHNzaXplX3QgYnl0ZXNfcmVjZWl2ZWQgPSAtMTsKLSAgICBpbnQgdGltZW91dDsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwogICAgIHNvY2tsZW5fdCBhZGRyYnVmbGVuOwogICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OwpAQCAtMjkyOSw2ICszMjA5LDcgQEAKICAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2g7CiAgICAgc2l6ZV90IGNtc2dkYXRhbGVuID0gMDsKICAgICBpbnQgY21zZ19zdGF0dXM7CisgICAgc3RydWN0IHNvY2tfcmVjdm1zZyBjdHg7CiAKICAgICAvKiBYWFg6IFBPU0lYIHNheXMgdGhhdCBtc2dfbmFtZSBhbmQgbXNnX25hbWVsZW4gInNoYWxsIGJlCiAgICAgICAgaWdub3JlZCIgd2hlbiB0aGUgc29ja2V0IGlzIGNvbm5lY3RlZCAoTGludXggZmlsbHMgdGhlbSBpbgpAQCAtMjk1NSwyOCArMzIzNiwxNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogCi0gICAgQkVHSU5fU0VMRUNUX0xPT1AocykKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOwogICAgIG1zZy5tc2dfbmFtZSA9IFNBUzJTQSgmYWRkcmJ1Zik7CiAgICAgbXNnLm1zZ19uYW1lbGVuID0gYWRkcmJ1ZmxlbjsKICAgICBtc2cubXNnX2lvdiA9IGlvdjsKICAgICBtc2cubXNnX2lvdmxlbiA9IGlvdmxlbjsKICAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOwogICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47Ci0gICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdF9leChzLCAwLCBpbnRlcnZhbCk7Ci0gICAgaWYgKCF0aW1lb3V0KQotICAgICAgICBieXRlc19yZWNlaXZlZCA9IHJlY3Ztc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTOwotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgRU5EX1NFTEVDVF9MT09QKHMpCiAKLSAgICBpZiAoYnl0ZXNfcmVjZWl2ZWQgPCAwKSB7Ci0gICAgICAgIHMtPmVycm9yaGFuZGxlcigpOworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMCwgc29ja19yZWN2bXNnX2ltcGwsICZjdHgpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KIAogICAgIC8qIE1ha2UgbGlzdCBvZiAobGV2ZWwsIHR5cGUsIGRhdGEpIHR1cGxlcyBmcm9tIGNvbnRyb2wgbWVzc2FnZXMuICovCiAgICAgaWYgKChjbXNnX2xpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQpAQCAtMzAxOCw3ICszMjg4LDcgQEAKICAgICB9CiAKICAgICByZXR2YWwgPSBQeV9CdWlsZFZhbHVlKCJOT2lOIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbWFrZXZhbCkoYnl0ZXNfcmVjZWl2ZWQsIG1ha2V2YWxfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm1ha2V2YWwpKGN0eC5yZXN1bHQsIG1ha2V2YWxfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNnX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1zZy5tc2dfZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlc29ja2FkZHIocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwKQEAgLTMyMjYsMTUgKzM0OTYsMzYgQEAKICNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLwogCiAKK3N0cnVjdCBzb2NrX3NlbmQgeworICAgIGNoYXIgKmJ1ZjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgZmxhZ3M7CisgICAgUHlfc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3NlbmRfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfc2VuZCAqY3R4ID0gZGF0YTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoY3R4LT5sZW4gPiBJTlRfTUFYKQorICAgICAgICBjdHgtPmxlbiA9IElOVF9NQVg7CisgICAgY3R4LT5yZXN1bHQgPSBzZW5kKHMtPnNvY2tfZmQsIGN0eC0+YnVmLCAoaW50KWN0eC0+bGVuLCBjdHgtPmZsYWdzKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSBzZW5kKHMtPnNvY2tfZmQsIGN0eC0+YnVmLCBjdHgtPmxlbiwgY3R4LT5mbGFncyk7CisjZW5kaWYKKyAgICByZXR1cm4gKGN0eC0+cmVzdWx0ID49IDApOworfQorCiAvKiBzLnNlbmQoZGF0YSBbLGZsYWdzXSkgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NlbmQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4sIG4gPSAtMTsKLSAgICBpbnQgZmxhZ3MgPSAwLCB0aW1lb3V0OworICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfYnVmZmVyIHBidWY7CisgICAgc3RydWN0IHNvY2tfc2VuZCBjdHg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6c2VuZCIsICZwYnVmLCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyNDMsMzMgKzM1MzQsMTYgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CiAgICAgICAgIHJldHVybiBzZWxlY3RfZXJyb3IoKTsKICAgICB9Ci0gICAgYnVmID0gcGJ1Zi5idWY7Ci0gICAgbGVuID0gcGJ1Zi5sZW47Ci0KLSAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChsZW4gPiBJTlRfTUFYKQotICAgICAgICAgICAgbGVuID0gSU5UX01BWDsKLSAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCAoaW50KWxlbiwgZmxhZ3MpOwotI2Vsc2UKLSAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCBsZW4sIGZsYWdzKTsKLSNlbmRpZgotICAgIH0KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICBjdHguYnVmID0gcGJ1Zi5idWY7CisgICAgY3R4LmxlbiA9IHBidWYubGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMSwgc29ja19zZW5kX2ltcGwsICZjdHgpIDwgMCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKLQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOwogfQogCiBQeURvY19TVFJWQVIoc2VuZF9kb2MsCkBAIC0zMjg2LDkgKzM1NjAsMTUgQEAKIHNvY2tfc2VuZGFsbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgbiA9IC0xOwotICAgIGludCBmbGFncyA9IDAsIHRpbWVvdXQsIHNhdmVkX2Vycm5vOworICAgIFB5X3NzaXplX3QgbGVuLCBuOworICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfYnVmZmVyIHBidWY7CisgICAgc3RydWN0IHNvY2tfc2VuZCBjdHg7CisgICAgaW50IGhhc190aW1lb3V0ID0gKHMtPnNvY2tfdGltZW91dCA+IDApOworICAgIF9QeVRpbWVfdCBpbnRlcnZhbCA9IHMtPnNvY2tfdGltZW91dDsKKyAgICBfUHlUaW1lX3QgZGVhZGxpbmUgPSAwOworICAgIGludCBkZWFkbGluZV9pbml0aWFsaXplZCA9IDA7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfGk6c2VuZGFsbCIsICZwYnVmLCAmZmxhZ3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMDEsNTAgKzM1ODEsNDcgQEAKICAgICB9CiAKICAgICBkbyB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgdGltZW91dCA9IGludGVybmFsX3NlbGVjdChzLCAxKTsKLSAgICAgICAgbiA9IC0xOwotICAgICAgICBpZiAoIXRpbWVvdXQpIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICAgICBpZiAobGVuID4gSU5UX01BWCkKLSAgICAgICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICAgICAgbiA9IHNlbmQocy0+c29ja19mZCwgYnVmLCAoaW50KWxlbiwgZmxhZ3MpOwotI2Vsc2UKLSAgICAgICAgICAgIG4gPSBzZW5kKHMtPnNvY2tfZmQsIGJ1ZiwgbGVuLCBmbGFncyk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKGhhc190aW1lb3V0KSB7CisgICAgICAgICAgICBpZiAoZGVhZGxpbmVfaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgICAvKiByZWNvbXB1dGUgdGhlIHRpbWVvdXQgKi8KKyAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IGRlYWRsaW5lIC0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGVhZGxpbmVfaW5pdGlhbGl6ZWQgPSAxOworICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gX1B5VGltZV9HZXRNb25vdG9uaWNDbG9jaygpICsgcy0+c29ja190aW1lb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaW50ZXJ2YWwgPD0gMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgLyogUHlFcnJfQ2hlY2tTaWduYWxzKCkgbWlnaHQgY2hhbmdlIGVycm5vICovCi0gICAgICAgIHNhdmVkX2Vycm5vID0gZXJybm87CisKKyAgICAgICAgY3R4LmJ1ZiA9IGJ1ZjsKKyAgICAgICAgY3R4LmxlbiA9IGxlbjsKKyAgICAgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgICAgIGlmIChzb2NrX2NhbGxfZXgocywgMSwgc29ja19zZW5kX2ltcGwsICZjdHgsIDAsIE5VTEwsIGludGVydmFsKSA8IDApCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIG4gPSBjdHgucmVzdWx0OworICAgICAgICBhc3NlcnQobiA+PSAwKTsKKworICAgICAgICBidWYgKz0gbjsKKyAgICAgICAgbGVuIC09IG47CisKICAgICAgICAgLyogV2UgbXVzdCBydW4gb3VyIHNpZ25hbCBoYW5kbGVycyBiZWZvcmUgbG9vcGluZyBhZ2Fpbi4KICAgICAgICAgICAgc2VuZCgpIGNhbiByZXR1cm4gYSBzdWNjZXNzZnVsIHBhcnRpYWwgd3JpdGUgd2hlbiBpdCBpcwogICAgICAgICAgICBpbnRlcnJ1cHRlZCwgc28gd2UgY2FuJ3QgcmVzdHJpY3Qgb3Vyc2VsdmVzIHRvIEVJTlRSLiAqLwotICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgICAgICAvKiBJZiBpbnRlcnJ1cHRlZCwgdHJ5IGFnYWluICovCi0gICAgICAgICAgICBpZiAoc2F2ZWRfZXJybm8gPT0gRUlOVFIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmICs9IG47Ci0gICAgICAgIGxlbiAtPSBuOworICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgfSB3aGlsZSAobGVuID4gMCk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1Zik7CiAKLSAgICBpZiAobiA8IDApCi0gICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICByZXMgPSBQeV9Ob25lOworCitkb25lOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIHJldHVybiByZXM7CiB9CiAKIFB5RG9jX1NUUlZBUihzZW5kYWxsX2RvYywKQEAgLTMzNTYsNiArMzYzMywzMiBAQAogdG8gdGVsbCBob3cgbXVjaCBkYXRhIGhhcyBiZWVuIHNlbnQuIik7CiAKIAorc3RydWN0IHNvY2tfc2VuZHRvIHsKKyAgICBjaGFyICpidWY7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgaW50IGZsYWdzOworICAgIGludCBhZGRybGVuOworICAgIHNvY2tfYWRkcl90ICphZGRyYnVmOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworfTsKKworc3RhdGljIGludAorc29ja19zZW5kdG9faW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfc2VuZHRvICpjdHggPSBkYXRhOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjdHgtPmxlbiA+IElOVF9NQVgpCisgICAgICAgIGN0eC0+bGVuID0gSU5UX01BWDsKKyAgICBjdHgtPnJlc3VsdCA9IHNlbmR0byhzLT5zb2NrX2ZkLCBjdHgtPmJ1ZiwgKGludCljdHgtPmxlbiwgY3R4LT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyNlbHNlCisgICAgY3R4LT5yZXN1bHQgPSBzZW5kdG8ocy0+c29ja19mZCwgY3R4LT5idWYsIGN0eC0+bGVuLCBjdHgtPmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworI2VuZGlmCisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyogcy5zZW5kdG8oZGF0YSwgW2ZsYWdzLF0gc29ja2FkZHIpIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzM2MywxMSArMzY2NiwxMCBAQAogewogICAgIFB5X2J1ZmZlciBwYnVmOwogICAgIFB5T2JqZWN0ICphZGRybzsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBsZW4sIGFyZ2xlbjsKKyAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIGludCBhZGRybGVuLCBmbGFncywgdGltZW91dDsKLSAgICBQeV9zc2l6ZV90IG4gPSAtMTsKKyAgICBpbnQgYWRkcmxlbiwgZmxhZ3M7CisgICAgc3RydWN0IHNvY2tfc2VuZHRvIGN0eDsKIAogICAgIGZsYWdzID0gMDsKICAgICBhcmdsZW4gPSBQeVR1cGxlX1NpemUoYXJncyk7CkBAIC0zMzg4LDkgKzM2OTAsNiBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGJ1ZiA9IHBidWYuYnVmOwotICAgIGxlbiA9IHBidWYubGVuOwotCiAgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwogICAgICAgICByZXR1cm4gc2VsZWN0X2Vycm9yKCk7CkBAIC0zNDAxLDMyICszNzAwLDE4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMSwgaW50ZXJ2YWwpOwotICAgIGlmICghdGltZW91dCkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgpCi0gICAgICAgICAgICBsZW4gPSBJTlRfTUFYOwotICAgICAgICBuID0gc2VuZHRvKHMtPnNvY2tfZmQsIGJ1ZiwgKGludClsZW4sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgIFNBUzJTQSgmYWRkcmJ1ZiksIGFkZHJsZW4pOwotI2Vsc2UKLSAgICAgICAgbiA9IHNlbmR0byhzLT5zb2NrX2ZkLCBidWYsIGxlbiwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgU0FTMlNBKCZhZGRyYnVmKSwgYWRkcmxlbik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICBjdHguYnVmID0gcGJ1Zi5idWY7CisgICAgY3R4LmxlbiA9IHBidWYubGVuOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGN0eC5hZGRybGVuID0gYWRkcmxlbjsKKyAgICBjdHguYWRkcmJ1ZiA9ICZhZGRyYnVmOworICAgIGlmIChzb2NrX2NhbGwocywgMSwgc29ja19zZW5kdG9faW1wbCwgJmN0eCkgPCAwKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIEVORF9TRUxFQ1RfTE9PUChzKQogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOwogfQogCiBQeURvY19TVFJWQVIoc2VuZHRvX2RvYywKQEAgLTM0MzksNiArMzcyNCwyMSBAQAogLyogVGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzIHJlcXVpcmUgYSB3b3JraW5nCiAgICBDTVNHX0xFTigpLiAgU2VlIHRoZSBjb21tZW50IG5lYXIgZ2V0X0NNU0dfTEVOKCkuICovCiAjaWZkZWYgQ01TR19MRU4KK3N0cnVjdCBzb2NrX3NlbmRtc2cgeworICAgIHN0cnVjdCBtc2doZHIgKm1zZzsKKyAgICBpbnQgZmxhZ3M7CisgICAgc3NpemVfdCByZXN1bHQ7Cit9OworCitzdGF0aWMgaW50Citzb2NrX3NlbmRtc2dfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCit7CisgICAgc3RydWN0IHNvY2tfc2VuZG1zZyAqY3R4ID0gZGF0YTsKKworICAgIGN0eC0+cmVzdWx0ID0gc2VuZG1zZyhzLT5zb2NrX2ZkLCBjdHgtPm1zZywgY3R4LT5mbGFncyk7CisgICAgcmV0dXJuIChjdHgtPnJlc3VsdCA+PSAwKTsKK30KKwogLyogcy5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKSBtZXRob2QgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM0NTYsMTAgKzM3NTYsMTAgQEAKICAgICB9ICpjbXNncyA9IE5VTEw7CiAgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKLSAgICBzc2l6ZV90IGJ5dGVzX3NlbnQgPSAtMTsKLSAgICBpbnQgYWRkcmxlbiwgdGltZW91dCwgZmxhZ3MgPSAwOworICAgIGludCBhZGRybGVuLCBmbGFncyA9IDA7CiAgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKICAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKQEAgLTM2MTMsMjMgKzM5MTMsMTIgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIEJFR0lOX1NFTEVDVF9MT09QKHMpCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKLSAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDEsIGludGVydmFsKTsKLSAgICBpZiAoIXRpbWVvdXQpCi0gICAgICAgIGJ5dGVzX3NlbnQgPSBzZW5kbXNnKHMtPnNvY2tfZmQsICZtc2csIGZsYWdzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKLSAgICBpZiAodGltZW91dCA9PSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfdGltZW91dCwgInRpbWVkIG91dCIpOworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwocywgMSwgc29ja19zZW5kbXNnX2ltcGwsICZjdHgpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBFTkRfU0VMRUNUX0xPT1AocykKIAotICAgIGlmIChieXRlc19zZW50IDwgMCkgewotICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoYnl0ZXNfc2VudCk7CisgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOwogCiBmaW5hbGx5OgogICAgIFB5TWVtX0ZyZWUoY29udHJvbGJ1Zik7CkBAIC0zNzk2LDcgKzQwODUsNyBAQAogICAgIHsic2hhcmUiLCAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NoYXJlLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja19zaGFyZV9kb2N9LAogI2VuZGlmCi0gICAgeyJsaXN0ZW4iLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX2xpc3RlbiwgTUVUSF9PLAorICAgIHsibGlzdGVuIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19saXN0ZW4sIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5fZG9jfSwKICAgICB7InJlY3YiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfcmVjdiwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHJlY3ZfZG9jfSwKQEAgLTM4MzgsMTAgKzQxMjcsMTQgQEAKICAgICAgICB7ImZhbWlseSIsIFRfSU5ULCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfZmFtaWx5KSwgUkVBRE9OTFksICJ0aGUgc29ja2V0IGZhbWlseSJ9LAogICAgICAgIHsidHlwZSIsIFRfSU5ULCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfdHlwZSksIFJFQURPTkxZLCAidGhlIHNvY2tldCB0eXBlIn0sCiAgICAgICAgeyJwcm90byIsIFRfSU5ULCBvZmZzZXRvZihQeVNvY2tldFNvY2tPYmplY3QsIHNvY2tfcHJvdG8pLCBSRUFET05MWSwgInRoZSBzb2NrZXQgcHJvdG9jb2wifSwKLSAgICAgICB7InRpbWVvdXQiLCBUX0RPVUJMRSwgb2Zmc2V0b2YoUHlTb2NrZXRTb2NrT2JqZWN0LCBzb2NrX3RpbWVvdXQpLCBSRUFET05MWSwgInRoZSBzb2NrZXQgdGltZW91dCJ9LAogICAgICAgIHswfSwKIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBzb2NrX2dldHNldGxpc3RbXSA9IHsKKyAgICB7InRpbWVvdXQiLCAoZ2V0dGVyKXNvY2tfZ2V0dGltZW91dCwgTlVMTCwgUHlEb2NfU1RSKCJ0aGUgc29ja2V0IHRpbWVvdXQiKX0sCisgICAge05VTEx9IC8qIHNlbnRpbmVsICovCit9OworCiAvKiBEZWFsbG9jYXRlIGEgc29ja2V0IG9iamVjdCBpbiByZXNwb25zZSB0byB0aGUgbGFzdCBQeV9ERUNSRUYoKS4KICAgIEZpcnN0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0aW9uLiAqLwogCkBAIC0zOTA1LDcgKzQxOTgsNyBAQAogICAgIG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChuZXcgIT0gTlVMTCkgewogICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPnNvY2tfZmQgPSAtMTsKLSAgICAgICAgKChQeVNvY2tldFNvY2tPYmplY3QgKiluZXcpLT5zb2NrX3RpbWVvdXQgPSAtMS4wOworICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPnNvY2tfdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoLTEpOwogICAgICAgICAoKFB5U29ja2V0U29ja09iamVjdCAqKW5ldyktPmVycm9yaGFuZGxlciA9ICZzZXRfZXJyb3I7CiAgICAgfQogICAgIHJldHVybiBuZXc7CkBAIC00MDg4LDcgKzQzODEsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBzb2NrX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBzb2NrX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIHNvY2tfZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KQEAgLTQyMjcsNyArNDUyMCw3IEBACiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBjb21tb24gdG8gZ2V0aG9zdGJ5bmFtZV9leCBhbmQgZ2V0aG9zdGJ5YWRkciAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0aG9zdF9jb21tb24oc3RydWN0IGhvc3RlbnQgKmgsIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgaW50IGFsZW4sIGludCBhZikKK2dldGhvc3RfY29tbW9uKHN0cnVjdCBob3N0ZW50ICpoLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNpemVfdCBhbGVuLCBpbnQgYWYpCiB7CiAgICAgY2hhciAqKnBjaDsKICAgICBQeU9iamVjdCAqcnRuX3R1cGxlID0gKFB5T2JqZWN0ICopTlVMTDsKQEAgLTQ5NDQsMjEgKzUyMzcsMjIgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHNvY2tldF9pbmV0X250b2EoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKnBhY2tlZF9zdHI7Ci0gICAgaW50IGFkZHJfbGVuOworICAgIFB5X2J1ZmZlciBwYWNrZWRfaXA7CiAgICAgc3RydWN0IGluX2FkZHIgcGFja2VkX2FkZHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkjOmluZXRfbnRvYSIsICZwYWNrZWRfc3RyLCAmYWRkcl9sZW4pKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjppbmV0X250b2EiLCAmcGFja2VkX2lwKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoYWRkcl9sZW4gIT0gc2l6ZW9mKHBhY2tlZF9hZGRyKSkgeworICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihwYWNrZWRfYWRkcikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAicGFja2VkIElQIHdyb25nIGxlbmd0aCBmb3IgaW5ldF9udG9hIik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG1lbWNweSgmcGFja2VkX2FkZHIsIHBhY2tlZF9zdHIsIGFkZHJfbGVuKTsKKyAgICBtZW1jcHkoJnBhY2tlZF9hZGRyLCBwYWNrZWRfaXAuYnVmLCBwYWNrZWRfaXAubGVuKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogCiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGluZXRfbnRvYShwYWNrZWRfYWRkcikpOwogfQpAQCAtNTA2OSw4ICs1MzYzLDcgQEAKIHNvY2tldF9pbmV0X250b3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBhZjsKLSAgICBjaGFyKiBwYWNrZWQ7Ci0gICAgaW50IGxlbjsKKyAgICBQeV9idWZmZXIgcGFja2VkX2lwOwogICAgIGNvbnN0IGNoYXIqIHJldHZhbDsKICNpZmRlZiBFTkFCTEVfSVBWNgogICAgIGNoYXIgaXBbUHlfTUFYKElORVRfQUREUlNUUkxFTiwgSU5FVDZfQUREUlNUUkxFTikgKyAxXTsKQEAgLTUwODEsMzEgKzUzNzQsMzUgQEAKICAgICAvKiBHdWFyYW50ZWUgTlVMLXRlcm1pbmF0aW9uIGZvciBQeVVuaWNvZGVfRnJvbVN0cmluZygpIGJlbG93ICovCiAgICAgbWVtc2V0KCh2b2lkICopICZpcFswXSwgJ1wwJywgc2l6ZW9mKGlwKSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5IzppbmV0X250b3AiLCAmYWYsICZwYWNrZWQsICZsZW4pKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6aW5ldF9udG9wIiwgJmFmLCAmcGFja2VkX2lwKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAoYWYgPT0gQUZfSU5FVCkgewotICAgICAgICBpZiAobGVuICE9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKKyAgICAgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgImludmFsaWQgbGVuZ3RoIG9mIHBhY2tlZCBJUCBhZGRyZXNzIHN0cmluZyIpOworICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAjaWZkZWYgRU5BQkxFX0lQVjYKICAgICB9IGVsc2UgaWYgKGFmID09IEFGX0lORVQ2KSB7Ci0gICAgICAgIGlmIChsZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKKyAgICAgICAgaWYgKHBhY2tlZF9pcC5sZW4gIT0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJpbnZhbGlkIGxlbmd0aCBvZiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAidW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCIsIGFmKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFja2VkX2lwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dmFsID0gaW5ldF9udG9wKGFmLCBwYWNrZWQsIGlwLCBzaXplb2YoaXApKTsKKyAgICByZXR2YWwgPSBpbmV0X250b3AoYWYsIHBhY2tlZF9pcC5idWYsIGlwLCBzaXplb2YoaXApKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgIGlmICghcmV0dmFsKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MTI0LDggKzU0MjEsNyBAQAogc29ja2V0X2luZXRfbnRvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGFmOwotICAgIGNoYXIqIHBhY2tlZDsKLSAgICBpbnQgbGVuOworICAgIFB5X2J1ZmZlciBwYWNrZWRfaXA7CiAgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyOwogICAgIERXT1JEIGFkZHJsZW4sIHJldCwgcmV0bGVuOwogI2lmZGVmIEVOQUJMRV9JUFY2CkBAIC01MTM3LDM4ICs1NDMzLDQyIEBACiAgICAgLyogR3VhcmFudGVlIE5VTC10ZXJtaW5hdGlvbiBmb3IgUHlVbmljb2RlX0Zyb21TdHJpbmcoKSBiZWxvdyAqLwogICAgIG1lbXNldCgodm9pZCAqKSAmaXBbMF0sICdcMCcsIHNpemVvZihpcCkpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSM6aW5ldF9udG9wIiwgJmFmLCAmcGFja2VkLCAmbGVuKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqOmluZXRfbnRvcCIsICZhZiwgJnBhY2tlZF9pcCkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKGFmID09IEFGX0lORVQpIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICogYWRkcjQgPSAoc3RydWN0IHNvY2thZGRyX2luICopJmFkZHI7CiAKLSAgICAgICAgaWYgKGxlbiAhPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpKSB7CisgICAgICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJpbnZhbGlkIGxlbmd0aCBvZiBwYWNrZWQgSVAgYWRkcmVzcyBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBtZW1zZXQoYWRkcjQsIDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKICAgICAgICAgYWRkcjQtPnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgICBtZW1jcHkoJihhZGRyNC0+c2luX2FkZHIpLCBwYWNrZWQsIHNpemVvZihhZGRyNC0+c2luX2FkZHIpKTsKKyAgICAgICAgbWVtY3B5KCYoYWRkcjQtPnNpbl9hZGRyKSwgcGFja2VkX2lwLmJ1Ziwgc2l6ZW9mKGFkZHI0LT5zaW5fYWRkcikpOwogICAgICAgICBhZGRybGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CiAgICAgfSBlbHNlIGlmIChhZiA9PSBBRl9JTkVUNikgewotICAgICAgICBpZiAobGVuICE9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CisgICAgICAgIGlmIChwYWNrZWRfaXAubGVuICE9IHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAiaW52YWxpZCBsZW5ndGggb2YgcGFja2VkIElQIGFkZHJlc3Mgc3RyaW5nIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIAogICAgICAgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihhZGRyKSk7CiAgICAgICAgIGFkZHIuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKLSAgICAgICAgbWVtY3B5KCYoYWRkci5zaW42X2FkZHIpLCBwYWNrZWQsIHNpemVvZihhZGRyLnNpbjZfYWRkcikpOworICAgICAgICBtZW1jcHkoJihhZGRyLnNpbjZfYWRkciksIHBhY2tlZF9pcC5idWYsIHNpemVvZihhZGRyLnNpbjZfYWRkcikpOwogICAgICAgICBhZGRybGVuID0gc2l6ZW9mKGFkZHIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgInVua25vd24gYWRkcmVzcyBmYW1pbHkgJWQiLCBhZik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhY2tlZF9pcCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYWNrZWRfaXApOwogCiAgICAgcmV0bGVuID0gc2l6ZW9mKGlwKTsKICAgICByZXQgPSBXU0FBZGRyZXNzVG9TdHJpbmdBKChzdHJ1Y3Qgc29ja2FkZHIqKSZhZGRyLCBhZGRybGVuLCBOVUxMLApAQCAtNTQwMywxMiArNTcwMywxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRkZWZhdWx0dGltZW91dChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPCAwLjApIHsKKyAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPCAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkZWZhdWx0dGltZW91dCk7CisgICAgZWxzZSB7CisgICAgICAgIGRvdWJsZSBzZWNvbmRzID0gX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoZGVmYXVsdHRpbWVvdXQpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY29uZHMpOworICAgIH0KIH0KIAogUHlEb2NfU1RSVkFSKGdldGRlZmF1bHR0aW1lb3V0X2RvYywKQEAgLTU0MjEsMTkgKzU3MjMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrZXRfc2V0ZGVmYXVsdHRpbWVvdXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgZG91YmxlIHRpbWVvdXQ7CisgICAgX1B5VGltZV90IHRpbWVvdXQ7CiAKLSAgICBpZiAoYXJnID09IFB5X05vbmUpCi0gICAgICAgIHRpbWVvdXQgPSAtMS4wOwotICAgIGVsc2UgewotICAgICAgICB0aW1lb3V0ID0gUHlGbG9hdF9Bc0RvdWJsZShhcmcpOwotICAgICAgICBpZiAodGltZW91dCA8IDAuMCkgewotICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCB2YWx1ZSBvdXQgb2YgcmFuZ2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChzb2NrZXRfcGFyc2VfdGltZW91dCgmdGltZW91dCwgYXJnKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZGVmYXVsdHRpbWVvdXQgPSB0aW1lb3V0OwogCkBAIC01NzgwLDExICs2MDczLDE1IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHN1cHBvcnRfd3NhX25vX2luaGVyaXQgPT0gLTEpIHsKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxODAwCisgICAgICAgIHN1cHBvcnRfd3NhX25vX2luaGVyaXQgPSBJc1dpbmRvd3M3U1AxT3JHcmVhdGVyKCk7CisjZWxzZQogICAgICAgICBEV09SRCB2ZXJzaW9uID0gR2V0VmVyc2lvbigpOwogICAgICAgICBEV09SRCBtYWpvciA9IChEV09SRClMT0JZVEUoTE9XT1JEKHZlcnNpb24pKTsKICAgICAgICAgRFdPUkQgbWlub3IgPSAoRFdPUkQpSElCWVRFKExPV09SRCh2ZXJzaW9uKSk7CiAgICAgICAgIC8qIG5lZWQgV2luZG93cyA3IFNQMSwgMjAwOCBSMiBTUDEgb3IgbGF0ZXIgKi8KLSAgICAgICAgc3VwcG9ydF93c2Ffbm9faW5oZXJpdCA9IChtYWpvciA+PSA2ICYmIG1pbm9yID49IDEpOworICAgICAgICBzdXBwb3J0X3dzYV9ub19pbmhlcml0ID0gbWFqb3IgPiA2IHx8IChtYWpvciA9PSA2ICYmIG1pbm9yID49IDEpOworI2VuZGlmCiAgICAgfQogI2VuZGlmCiAKQEAgLTYxODMsNiArNjQ4MCw5IEBACiAjaWZkZWYgIFNPX1BSSU9SSVRZCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUFJJT1JJVFkpOwogI2VuZGlmCisjaWZkZWYgIFNPX01BUksKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19NQVJLKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNjMyMCw2ICs2NjIwLDkgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX0xPT1BCQUNLKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDQU5fUkFXX1JFQ1ZfT1dOX01TR1MpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0ZEX0ZSQU1FUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENBTl9SQVdfRkRfRlJBTUVTKTsKKyNlbmRpZgogI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0JDTV9ICiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0FOX0JDTSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9CQ01fVFhfU0VUVVAiLCBUWF9TRVRVUCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaAppbmRleCBiODNmOWFmLi4zY2NlOTI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKQEAgLTE0LDYgKzE0LDEzIEBACiAKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICMgaW5jbHVkZSA8d2luc29jazIuaD4KKy8qIFdpbmRvd3MgJ3N1cHBvcnRzJyBDTVNHX0xFTiwgYnV0IGRvZXMgbm90IGZvbGxvdyB0aGUgUE9TSVggc3RhbmRhcmQKKyAqIGludGVyZmFjZSBhdCBhbGwsIHNvIHRoZXJlIGlzIG5vIHBvaW50IGluY2x1ZGluZyB0aGUgY29kZSB0aGF0CisgKiBhdHRlbXB0cyB0byB1c2UgaXQuCisgKi8KKyMgaWZkZWYgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCisjICB1bmRlZiBDTVNHX0xFTgorIyBlbmRpZgogIyBpbmNsdWRlIDx3czJ0Y3BpcC5oPgogLyogVkM2IGlzIHNoaXBwZWQgd2l0aCBvbGQgcGxhdGZvcm0gaGVhZGVycywgYW5kIGRvZXMgbm90IGhhdmUgTVNUY3BJUC5oCiAgKiBTZXBhcmF0ZSBTREtzIGhhdmUgYWxsIHRoZSBmdW5jdGlvbnMgd2Ugd2FudCwgYnV0IG9sZGVyIG9uZXMgZG9uJ3QgaGF2ZQpAQCAtMTY3LDcgKzE3NCw3IEBACiAgICAgUHlPYmplY3QgKigqZXJyb3JoYW5kbGVyKSh2b2lkKTsgLyogRXJyb3IgaGFuZGxlcjsgY2hlY2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8sIHJldHVybnMgTlVMTCBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzIGEgUHl0aG9uIGV4Y2VwdGlvbiAqLwotICAgIGRvdWJsZSBzb2NrX3RpbWVvdXQ7ICAgICAgICAgICAgICAgICAvKiBPcGVyYXRpb24gdGltZW91dCBpbiBzZWNvbmRzOworICAgIF9QeVRpbWVfdCBzb2NrX3RpbWVvdXQ7ICAgICAvKiBPcGVyYXRpb24gdGltZW91dCBpbiBzZWNvbmRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCBtZWFucyBub24tYmxvY2tpbmcgKi8KIH0gUHlTb2NrZXRTb2NrT2JqZWN0OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCmluZGV4IDY4ZWExYjUuLjQ5MzI0ZDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCkBAIC0xMCw2ICsxMCwxMiBAQAogI2luY2x1ZGUgPHNoYWRvdy5oPgogI2VuZGlmCiAKKyNpbmNsdWRlICJjbGluaWMvc3B3ZG1vZHVsZS5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBzcHdkCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jMGI4NDFiOTBhNmEwN2NlXSovCiAKIFB5RG9jX1NUUlZBUihzcHdkX19kb2NfXywKICJUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaXggc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlLlxuXApAQCAtMTA3LDIwICsxMTMsMjUgQEAKIAogI2lmZGVmIEhBVkVfR0VUU1BOQU0KIAotUHlEb2NfU1RSVkFSKHNwd2RfZ2V0c3BuYW1fX2RvY19fLAotImdldHNwbmFtKG5hbWUpIC0+IChzcF9uYW1wLCBzcF9wd2RwLCBzcF9sc3RjaGcsIHNwX21pbiwgc3BfbWF4LFxuXAotICAgICAgICAgICAgICAgICAgICBzcF93YXJuLCBzcF9pbmFjdCwgc3BfZXhwaXJlLCBzcF9mbGFnKVxuXAotUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuXG5cCi1TZWUgc3B3ZC5fX2RvY19fIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorc3B3ZC5nZXRzcG5hbQogCi1zdGF0aWMgUHlPYmplY3QqIHNwd2RfZ2V0c3BuYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGFyZzogdW5pY29kZQorICAgIC8KKworUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuCisKK1NlZSBgaGVscChzcHdkKWAgZm9yIG1vcmUgb24gc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzcHdkX2dldHNwbmFtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZjZiYmU1MWE0ZWIzYjIxIGlucHV0PWRkODk0MjllNjE2N2EwMGZdKi8KIHsKICAgICBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBzcHdkICpwOwotICAgIFB5T2JqZWN0ICphcmcsICpieXRlcywgKnJldHZhbCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzLCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpnZXRzcG5hbSIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoKGJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpKSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKQEAgLTEzOSwxNCArMTUwLDE3IEBACiAKICNpZmRlZiBIQVZFX0dFVFNQRU5UCiAKLVB5RG9jX1NUUlZBUihzcHdkX2dldHNwYWxsX19kb2NfXywKLSJnZXRzcGFsbCgpIC0+IGxpc3Rfb2ZfZW50cmllc1xuXAotUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLCBcCi1pbiBhcmJpdHJhcnkgb3JkZXIuXG5cCi1TZWUgc3B3ZC5fX2RvY19fIGZvciBtb3JlIG9uIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyaWVzLiIpOworLypbY2xpbmljIGlucHV0XQorc3B3ZC5nZXRzcGFsbAorCitSZXR1cm4gYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJpZXMsIGluIGFyYml0cmFyeSBvcmRlci4KKworU2VlIGBoZWxwKHNwd2QpYCBmb3IgbW9yZSBvbiBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cmllcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNwd2RfZ2V0c3BhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorc3B3ZF9nZXRzcGFsbF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjEyZDhlYzdiZGIyOTYxMiBpbnB1dD1iMmM4NGI3ODU3ZDYyMmJkXSovCiB7CiAgICAgUHlPYmplY3QgKmQ7CiAgICAgc3RydWN0IHNwd2QgKnA7CkBAIC0xNzEsMTAgKzE4NSwxMCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgc3B3ZF9tZXRob2RzW10gPSB7CiAjaWZkZWYgSEFWRV9HRVRTUE5BTQotICAgIHsiZ2V0c3BuYW0iLCAgICAgICAgc3B3ZF9nZXRzcG5hbSwgTUVUSF9WQVJBUkdTLCBzcHdkX2dldHNwbmFtX19kb2NfX30sCisgICAgU1BXRF9HRVRTUE5BTV9NRVRIT0RERUYKICNlbmRpZgogI2lmZGVmIEhBVkVfR0VUU1BFTlQKLSAgICB7ImdldHNwYWxsIiwgICAgICAgIHNwd2RfZ2V0c3BhbGwsIE1FVEhfTk9BUkdTLCBzcHdkX2dldHNwYWxsX19kb2NfX30sCisgICAgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKICNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmUuaCBiL01vZHVsZXMvc3JlLmgKaW5kZXggNDJmZTI4ZC4uYjYzMjE2NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmUuaAorKysgYi9Nb2R1bGVzL3NyZS5oCkBAIC0xOCw4ICsxOCwxMCBAQAogI2RlZmluZSBTUkVfQ09ERSBQeV9VQ1M0CiAjaWYgU0laRU9GX1NJWkVfVCA+IDQKICMgZGVmaW5lIFNSRV9NQVhSRVBFQVQgKH4oU1JFX0NPREUpMCkKKyMgZGVmaW5lIFNSRV9NQVhHUk9VUFMgKCh+KFNSRV9DT0RFKTApIC8gMikKICNlbHNlCiAjIGRlZmluZSBTUkVfTUFYUkVQRUFUICgoU1JFX0NPREUpUFlfU1NJWkVfVF9NQVgpCisjIGRlZmluZSBTUkVfTUFYR1JPVVBTICgoU1JFX0NPREUpUFlfU1NJWkVfVF9NQVggLyBTSVpFT0ZfU0laRV9UIC8gMikKICNlbmRpZgogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC01Miw5ICs1NCw2IEBACiAKIHR5cGVkZWYgdW5zaWduZWQgaW50ICgqU1JFX1RPTE9XRVJfSE9PSykodW5zaWduZWQgaW50IGNoKTsKIAotLyogRklYTUU6IDxmbD4gc2hvdWxkbid0IGJlIGEgY29uc3RhbnQsIHJlYWxseS4uLiAqLwotI2RlZmluZSBTUkVfTUFSS19TSVpFIDIwMAotCiB0eXBlZGVmIHN0cnVjdCBTUkVfUkVQRUFUX1QgewogICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgU1JFX0NPREUqIHBhdHRlcm47IC8qIHBvaW50cyB0byBSRVBFQVQgb3BlcmF0b3IgYXJndW1lbnRzICovCkBAIC03Niw3ICs3NSw3IEBACiAgICAgLyogcmVnaXN0ZXJzICovCiAgICAgUHlfc3NpemVfdCBsYXN0aW5kZXg7CiAgICAgUHlfc3NpemVfdCBsYXN0bWFyazsKLSAgICB2b2lkKiBtYXJrW1NSRV9NQVJLX1NJWkVdOworICAgIHZvaWQqKiBtYXJrOwogICAgIC8qIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzdHVmZiAqLwogICAgIGNoYXIqIGRhdGFfc3RhY2s7CiAgICAgc2l6ZV90IGRhdGFfc3RhY2tfc2l6ZTsKQEAgLTg1LDcgKzg0LDcgQEAKICAgICAvKiBjdXJyZW50IHJlcGVhdCBjb250ZXh0ICovCiAgICAgU1JFX1JFUEVBVCAqcmVwZWF0OwogICAgIC8qIGhvb2tzICovCi0gICAgU1JFX1RPTE9XRVJfSE9PSyBsb3dlcjsKKyAgICBTUkVfVE9MT1dFUl9IT09LIGxvd2VyLCB1cHBlcjsKIH0gU1JFX1NUQVRFOwogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZV9jb25zdGFudHMuaCBiL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oCmluZGV4IDU5NDBkNWEuLjY2MzI0NDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oCisrKyBiL01vZHVsZXMvc3JlX2NvbnN0YW50cy5oCkBAIC0xMSw3ICsxMSw3IEBACiAgKiBTZWUgdGhlIF9zcmUuYyBmaWxlIGZvciBpbmZvcm1hdGlvbiBvbiB1c2FnZSBhbmQgcmVkaXN0cmlidXRpb24uCiAgKi8KIAotI2RlZmluZSBTUkVfTUFHSUMgMjAwMzEwMTcKKyNkZWZpbmUgU1JFX01BR0lDIDIwMTQwOTE3CiAjZGVmaW5lIFNSRV9PUF9GQUlMVVJFIDAKICNkZWZpbmUgU1JFX09QX1NVQ0NFU1MgMQogI2RlZmluZSBTUkVfT1BfQU5ZIDIKQEAgLTQ0LDYgKzQ0LDcgQEAKICNkZWZpbmUgU1JFX09QX1JFUEVBVF9PTkUgMjkKICNkZWZpbmUgU1JFX09QX1NVQlBBVFRFUk4gMzAKICNkZWZpbmUgU1JFX09QX01JTl9SRVBFQVRfT05FIDMxCisjZGVmaW5lIFNSRV9PUF9SQU5HRV9JR05PUkUgMzIKICNkZWZpbmUgU1JFX0FUX0JFR0lOTklORyAwCiAjZGVmaW5lIFNSRV9BVF9CRUdJTk5JTkdfTElORSAxCiAjZGVmaW5lIFNSRV9BVF9CRUdJTk5JTkdfU1RSSU5HIDIKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlX2xpYi5oIGIvTW9kdWxlcy9zcmVfbGliLmgKaW5kZXggMTA0OWRlNC4uMTI4YzcxZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmVfbGliLmgKKysrIGIvTW9kdWxlcy9zcmVfbGliLmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogfQogCiBMT0NBTChpbnQpCi1TUkUoY2hhcnNldCkoU1JFX0NPREUqIHNldCwgU1JFX0NPREUgY2gpCitTUkUoY2hhcnNldCkoU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NPREUqIHNldCwgU1JFX0NPREUgY2gpCiB7CiAgICAgLyogY2hlY2sgaWYgY2hhcmFjdGVyIGlzIGEgbWVtYmVyIG9mIHRoZSBnaXZlbiBzZXQgKi8KIApAQCAtMTQyLDYgKzE0MiwyMCBAQAogICAgICAgICAgICAgc2V0ICs9IDI7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIFNSRV9PUF9SQU5HRV9JR05PUkU6CisgICAgICAgICAgICAvKiA8UkFOR0VfSUdOT1JFPiA8bG93ZXI+IDx1cHBlcj4gKi8KKyAgICAgICAgeworICAgICAgICAgICAgU1JFX0NPREUgdWNoOworICAgICAgICAgICAgLyogY2ggaXMgYWxyZWFkeSBsb3dlciBjYXNlZCAqLworICAgICAgICAgICAgaWYgKHNldFswXSA8PSBjaCAmJiBjaCA8PSBzZXRbMV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIG9rOworICAgICAgICAgICAgdWNoID0gc3RhdGUtPnVwcGVyKGNoKTsKKyAgICAgICAgICAgIGlmIChzZXRbMF0gPD0gdWNoICYmIHVjaCA8PSBzZXRbMV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIG9rOworICAgICAgICAgICAgc2V0ICs9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgU1JFX09QX05FR0FURToKICAgICAgICAgICAgIG9rID0gIW9rOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTMsNyArMjA3LDcgQEAKICAgICBjYXNlIFNSRV9PUF9JTjoKICAgICAgICAgLyogcmVwZWF0ZWQgc2V0ICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIElOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiBTUkUoY2hhcnNldCkocGF0dGVybiArIDIsICpwdHIpKQorICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIFNSRShjaGFyc2V0KShzdGF0ZSwgcGF0dGVybiArIDIsICpwdHIpKQogICAgICAgICAgICAgcHRyKys7CiAgICAgICAgIGJyZWFrOwogCkBAIC02MjgsNyArNjQyLDggQEAKICAgICAgICAgICAgIC8qIG1hdGNoIHNldCBtZW1iZXIgKG9yIG5vbl9tZW1iZXIpICovCiAgICAgICAgICAgICAvKiA8SU4+IDxza2lwPiA8c2V0PiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8SU5cbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIVNSRShjaGFyc2V0KShjdHgtPnBhdHRlcm4gKyAxLCAqY3R4LT5wdHIpKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fAorICAgICAgICAgICAgICAgICFTUkUoY2hhcnNldCkoc3RhdGUsIGN0eC0+cGF0dGVybiArIDEsICpjdHgtPnB0cikpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4gKz0gY3R4LT5wYXR0ZXJuWzBdOwogICAgICAgICAgICAgY3R4LT5wdHIrKzsKQEAgLTY1Nyw3ICs2NzIsNyBAQAogICAgICAgICBjYXNlIFNSRV9PUF9JTl9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTl9JR05PUkVcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIpKTsKICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQKLSAgICAgICAgICAgICAgICB8fCAhU1JFKGNoYXJzZXQpKGN0eC0+cGF0dGVybisxLAorICAgICAgICAgICAgICAgIHx8ICFTUkUoY2hhcnNldCkoc3RhdGUsIGN0eC0+cGF0dGVybisxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKXN0YXRlLT5sb3dlcigqY3R4LT5wdHIpKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07CkBAIC02ODgsNyArNzAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVyblsxXSA9PSBTUkVfT1BfSU4gJiYKICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgIVNSRShjaGFyc2V0KShjdHgtPnBhdHRlcm4gKyAzLCAoU1JFX0NPREUpICpjdHgtPnB0cikpKQorICAgICAgICAgICAgICAgICAgICAgIVNSRShjaGFyc2V0KShzdGF0ZSwgY3R4LT5wYXR0ZXJuICsgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKSAqY3R4LT5wdHIpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwogICAgICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9CUkFOQ0gsIGp1bXBfYnJhbmNoLCBjdHgtPnBhdHRlcm4rMSk7CkBAIC0xMzE4LDcgKzEzMzQsNyBAQAogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgY2hhcmFjdGVyIGZyb20gYSBrbm93biBzZXQgKi8KICAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFKGNoYXJzZXQpKGNoYXJzZXQsICpwdHIpKQorICAgICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFKGNoYXJzZXQpKHN0YXRlLCBjaGFyc2V0LCAqcHRyKSkKICAgICAgICAgICAgICAgICBwdHIrKzsKICAgICAgICAgICAgIGlmIChwdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCmluZGV4IGNkYjRmZmMuLmY4NGNjNzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKQEAgLTg0LDkgKzg0LDYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9DTEFTUyIsIENsYXNzQmxvY2spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX01PRFVMRSIsIE1vZHVsZUJsb2NrKTsKIAotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9QVF9JTVBPUlRfU1RBUik7Ci0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT1BUX1RPUExFVkVMKTsKLQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0FMKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHTE9CQUxfRVhQTElDSVQpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdMT0JBTF9JTVBMSUNJVCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IGQ3MWIzYWMuLjlkZTNjODQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0yNywyOCArMjcsMTMgQEAKICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlICJweXRocmVhZC5oIgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vKiBUaGVzZSBvdmVycmlkZXMgbm90IG5lZWRlZCBmb3IgV2luMzIgKi8KLSNkZWZpbmUgdGltZXpvbmUgX3RpbWV6b25lCi0jZGVmaW5lIHR6bmFtZSBfdHpuYW1lCi0jZGVmaW5lIGRheWxpZ2h0IF9kYXlsaWdodAotI2VuZGlmIC8qIF9fQk9STEFORENfXyAqLwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICNlbmRpZiAvKiAhX19XQVRDT01DX18gfHwgX19RTlhfXyAqLwogCi0jaWYgZGVmaW5lZChfX0FQUExFX18pCi0jaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KLSNlbmRpZgotCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIGludCBmbG9hdHNsZWVwKGRvdWJsZSk7CitzdGF0aWMgaW50IHB5c2xlZXAoX1B5VGltZV90KTsKIHN0YXRpYyBQeU9iamVjdCogZmxvYXR0aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOwogCi0jaWZkZWYgTVNfV0lORE9XUwotc3RhdGljIE9TVkVSU0lPTklORk9FWCB3aW52ZXI7Ci0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKQEAgLTkyLDEyICs3NywxMiBAQAogfQogI2VuZGlmIC8qIEhBVkVfQ0xPQ0sgKi8KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQorI2lmZGVmIE1TX1dJTkRPV1MKICNkZWZpbmUgV0lOMzJfUEVSRl9DT1VOVEVSCiAvKiBXaW4zMiBoYXMgYmV0dGVyIGNsb2NrIHJlcGxhY2VtZW50OyB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiwgZHVlIHRvIE1hcmsKICAgIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KLXN0YXRpYyBpbnQKLXdpbl9wZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgUHlPYmplY3QgKipyZXN1bHQpCitzdGF0aWMgUHlPYmplY3QqCit3aW5fcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7CiAgICAgc3RhdGljIExPTkdMT05HIGNwdV9mcmVxdWVuY3kgPSAwOwogICAgIHN0YXRpYyBMT05HTE9ORyBjdHJTdGFydDsKQEAgLTEwOSwxMCArOTQsOCBAQAogICAgICAgICBRdWVyeVBlcmZvcm1hbmNlQ291bnRlcigmbm93KTsKICAgICAgICAgY3RyU3RhcnQgPSBub3cuUXVhZFBhcnQ7CiAgICAgICAgIGlmICghUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlcSkgfHwgZnJlcS5RdWFkUGFydCA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBVbmxpa2VseSB0byBoYXBwZW4gLSB0aGlzIHdvcmtzIG9uIGFsbCBpbnRlbAotICAgICAgICAgICAgICAgbWFjaGluZXMgYXQgbGVhc3QhICBSZXZlcnQgdG8gY2xvY2soKSAqLwotICAgICAgICAgICAgKnJlc3VsdCA9IE5VTEw7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGNwdV9mcmVxdWVuY3kgPSBmcmVxLlF1YWRQYXJ0OwogICAgIH0KQEAgLTEyNCwxMCArMTA3LDkgQEAKICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CiAgICAgfQotICAgICpyZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoZGlmZiAvIChkb3VibGUpY3B1X2ZyZXF1ZW5jeSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkaWZmIC8gKGRvdWJsZSljcHVfZnJlcXVlbmN5KTsKIH0KLSNlbmRpZgorI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLwogCiAjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoSEFWRV9DTE9DSykKICNkZWZpbmUgUFlDTE9DSwpAQCAtMTM1LDExICsxMTcsMTAgQEAKIHB5Y2xvY2soX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKICNpZmRlZiBXSU4zMl9QRVJGX0NPVU5URVIKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCi0gICAgICAgIHJldHVybiByZXM7Ci0jZW5kaWYKKyAgICByZXR1cm4gd2luX3BlcmZfY291bnRlcihpbmZvKTsKKyNlbHNlCiAgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CisjZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE2OSw3ICsxNTAsNyBAQAogCiAgICAgcmV0ID0gY2xvY2tfZ2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKICAgICBpZiAocmV0ICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKQEAgLTE4NSwyMiArMTY2LDIyIEBACiB7CiAgICAgaW50IGNsa19pZDsKICAgICBQeU9iamVjdCAqb2JqOwotICAgIHRpbWVfdCB0dl9zZWM7Ci0gICAgbG9uZyB0dl9uc2VjOworICAgIF9QeVRpbWVfdCB0OwogICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKICAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpjbG9ja19zZXR0aW1lIiwgJmNsa19pZCwgJm9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvYmosICZ0dl9zZWMsICZ0dl9uc2VjLCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0LCBvYmosIF9QeVRpbWVfUk9VTkRfRkxPT1IpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdHAudHZfc2VjID0gdHZfc2VjOwotICAgIHRwLnR2X25zZWMgPSB0dl9uc2VjOworCisgICAgaWYgKF9QeVRpbWVfQXNUaW1lc3BlYyh0LCAmdHApID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldCA9IGNsb2NrX3NldHRpbWUoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CiAgICAgaWYgKHJldCAhPSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0yMjMsNyArMjA0LDcgQEAKIAogICAgIHJldCA9IGNsb2NrX2dldHJlcygoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKICAgICBpZiAocmV0ICE9IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMjM3LDE3ICsyMTgsMTcgQEAKICNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9zbGVlcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit0aW1lX3NsZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQogewotICAgIGRvdWJsZSBzZWNzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZDpzbGVlcCIsICZzZWNzKSkKKyAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmc2Vjcywgb2JqLCBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2VjcyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic2xlZXAgbGVuZ3RoIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZmxvYXRzbGVlcChzZWNzKSAhPSAwKQorICAgIGlmIChweXNsZWVwKHNlY3MpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTM0MSw3ICszMjIsNyBAQAogICAgICAgICB3aGVudCA9IHRpbWUoTlVMTCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50LCBfUHlUaW1lX1JPVU5EX0RPV04pID09IC0xKQorICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvdCwgJndoZW50LCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAqcHdoZW4gPSB3aGVudDsKQEAgLTYyOSwyMSArNjEwLDE1IEBACiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfV0NTRlRJTUUpCiAgICAgLyogY2hlY2sgdGhhdCB0aGUgZm9ybWF0IHN0cmluZyBjb250YWlucyBvbmx5IHZhbGlkIGRpcmVjdGl2ZXMgKi8KLSAgICBmb3Iob3V0YnVmID0gc3RyY2hyKGZtdCwgJyUnKTsKKyAgICBmb3IgKG91dGJ1ZiA9IHN0cmNocihmbXQsICclJyk7CiAgICAgICAgIG91dGJ1ZiAhPSBOVUxMOwogICAgICAgICBvdXRidWYgPSBzdHJjaHIob3V0YnVmKzIsICclJykpCiAgICAgewotICAgICAgICBpZiAob3V0YnVmWzFdPT0nIycpCisgICAgICAgIGlmIChvdXRidWZbMV0gPT0gJyMnKQogICAgICAgICAgICAgKytvdXRidWY7IC8qIG5vdCBkb2N1bWVudGVkIGJ5IHB5dGhvbiwgKi8KLSAgICAgICAgaWYgKG91dGJ1ZlsxXT09J1wwJyB8fAotICAgICAgICAgICAgIXN0cmNocigiYUFiQmNkSElqbU1wU1V3V3hYeVl6WiUiLCBvdXRidWZbMV0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZm9ybWF0IHN0cmluZyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZvcm1hdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoKG91dGJ1ZlsxXSA9PSAneScpICYmIGJ1Zi50bV95ZWFyIDwgMCkKLSAgICAgICAgeworICAgICAgICBpZiAob3V0YnVmWzFdID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKChvdXRidWZbMV0gPT0gJ3knKSAmJiBidWYudG1feWVhciA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCAleSByZXF1aXJlcyB5ZWFyID49IDE5MDAgb24gV2luZG93cyIpOwogICAgICAgICAgICAgUHlfREVDUkVGKGZvcm1hdCk7CkBAIC02NTEsNyArNjI2LDcgQEAKICAgICAgICAgfQogICAgIH0KICNlbGlmIChkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoc3VuKSkgJiYgZGVmaW5lZChIQVZFX1dDU0ZUSU1FKQotICAgIGZvcihvdXRidWYgPSB3Y3NjaHIoZm10LCAnJScpOworICAgIGZvciAob3V0YnVmID0gd2NzY2hyKGZtdCwgJyUnKTsKICAgICAgICAgb3V0YnVmICE9IE5VTEw7CiAgICAgICAgIG91dGJ1ZiA9IHdjc2NocihvdXRidWYrMiwgJyUnKSkKICAgICB7CkBAIC02NzMsMTcgKzY0OCwyMSBAQAogICAgICAqIHdpbGwgYmUgYWhlYWQgb2YgdGltZS4uLgogICAgICAqLwogICAgIGZvciAoaSA9IDEwMjQ7IDsgaSArPSBpKSB7Ci0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIGRlZmluZWQoX19TVERDX1NFQ1VSRV9MSUJfXykKLSAgICAgICAgaW50IGVycjsKLSNlbmRpZgogICAgICAgICBvdXRidWYgPSAodGltZV9jaGFyICopUHlNZW1fTWFsbG9jKGkqc2l6ZW9mKHRpbWVfY2hhcikpOwogICAgICAgICBpZiAob3V0YnVmID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGJ1ZmxlbiA9IGZvcm1hdF90aW1lKG91dGJ1ZiwgaSwgZm10LCAmYnVmKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgZGVmaW5lZChfX1NURENfU0VDVVJFX0xJQl9fKQotICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgLyogVmlzdWFsU3R1ZGlvIC5ORVQgMjAwNSBkb2VzIHRoaXMgcHJvcGVybHkgKi8KKyAgICAgICAgaWYgKGJ1ZmxlbiA9PSAwICYmIGVycm5vID09IEVJTlZBTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKGJ1ZmxlbiA+IDAgfHwgaSA+PSAyNTYgKiBmbXRsZW4pIHsKICAgICAgICAgICAgIC8qIElmIHRoZSBidWZmZXIgaXMgMjU2IHRpbWVzIGFzIGxvbmcgYXMgdGhlIGZvcm1hdCwKQEAgLTcwMSwxMyArNjgwLDYgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgZGVmaW5lZChfX1NURENfU0VDVVJFX0xJQl9fKQotICAgICAgICAvKiBWaXN1YWxTdHVkaW8gLk5FVCAyMDA1IGRvZXMgdGhpcyBwcm9wZXJseSAqLwotICAgICAgICBpZiAoYnVmbGVuID09IDAgJiYgZXJyID09IEVJTlZBTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZvcm1hdCBzdHJpbmciKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAjaWZkZWYgSEFWRV9XQ1NGVElNRQogICAgIFB5TWVtX0ZyZWUoZm9ybWF0KTsKQEAgLTkwNSwxMjIgKzg3NywxNyBAQAogc2hvdWxkIG5vdCBiZSByZWxpZWQgb24uIik7CiAjZW5kaWYgLyogSEFWRV9XT1JLSU5HX1RaU0VUICovCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19BUFBMRV9fKSBcCi0gICAgfHwgKGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSBcCi0gICAgICAgICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkpCi0jZGVmaW5lIFBZTU9OT1RPTklDCi0jZW5kaWYKLQotI2lmZGVmIFBZTU9OT1RPTklDCi1zdGF0aWMgUHlPYmplY3QqCitzdGF0aWMgUHlPYmplY3QgKgogcHltb25vdG9uaWMoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgc3RhdGljIFVMT05HTE9ORyAoKkdldFRpY2tDb3VudDY0KSAodm9pZCkgPSBOVUxMOwotICAgIHN0YXRpYyBVTE9OR0xPTkcgKENBTExCQUNLICpQeV9HZXRUaWNrQ291bnQ2NCkodm9pZCk7Ci0gICAgc3RhdGljIGludCBoYXNfZ2V0aWNrY291bnQ2NCA9IC0xOwotICAgIGRvdWJsZSByZXN1bHQ7Ci0KLSAgICBpZiAoaGFzX2dldGlja2NvdW50NjQgPT0gLTEpIHsKLSAgICAgICAgLyogR2V0VGlja0NvdW50NjQoKSB3YXMgYWRkZWQgdG8gV2luZG93cyBWaXN0YSAqLwotICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpIHsKLSAgICAgICAgICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7Ci0gICAgICAgICAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGVXKEwiS0VSTkVMMzIiKTsKLSAgICAgICAgICAgICooRkFSUFJPQyopJlB5X0dldFRpY2tDb3VudDY0ID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0VGlja0NvdW50NjQiKTsKLSAgICAgICAgICAgIGhhc19nZXRpY2tjb3VudDY0ID0gKFB5X0dldFRpY2tDb3VudDY0ICE9IE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhhc19nZXRpY2tjb3VudDY0ID0gMDsKLSAgICB9Ci0KLSAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpIHsKLSAgICAgICAgVUxPTkdMT05HIHRpY2tzOwotICAgICAgICB0aWNrcyA9IFB5X0dldFRpY2tDb3VudDY0KCk7Ci0gICAgICAgIHJlc3VsdCA9IChkb3VibGUpdGlja3MgKiAxZS0zOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3RhdGljIERXT1JEIGxhc3RfdGlja3MgPSAwOwotICAgICAgICBzdGF0aWMgRFdPUkQgbl9vdmVyZmxvdyA9IDA7Ci0gICAgICAgIERXT1JEIHRpY2tzOwotCi0gICAgICAgIHRpY2tzID0gR2V0VGlja0NvdW50KCk7Ci0gICAgICAgIGlmICh0aWNrcyA8IGxhc3RfdGlja3MpCi0gICAgICAgICAgICBuX292ZXJmbG93Kys7Ci0gICAgICAgIGxhc3RfdGlja3MgPSB0aWNrczsKLQotICAgICAgICByZXN1bHQgPSBsZGV4cChuX292ZXJmbG93LCAzMik7Ci0gICAgICAgIHJlc3VsdCArPSB0aWNrczsKLSAgICAgICAgcmVzdWx0ICo9IDFlLTM7Ci0gICAgfQotCi0gICAgaWYgKGluZm8pIHsKLSAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7Ci0gICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkLCBvazsKLSAgICAgICAgaWYgKGhhc19nZXRpY2tjb3VudDY0KQotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50NjQoKSI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFRpY2tDb3VudCgpIjsKLSAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKLSAgICAgICAgb2sgPSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOwotICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKLSAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7Ci0gICAgfQotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUocmVzdWx0KTsKLQotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgc3RhdGljIG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2U7Ci0gICAgdWludDY0X3QgdGltZTsKLSAgICBkb3VibGUgc2VjczsKLQotICAgIGlmICh0aW1lYmFzZS5kZW5vbSA9PSAwKSB7Ci0gICAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgVGVjaG5pY2FsIFEmQSBRQTEzOTgsIG1hY2hfdGltZWJhc2VfaW5mbygpIGNhbm5vdAotICAgICAgICAgICBmYWlsOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9tYWMvI3FhL3FhMTM5OC8gKi8KLSAgICAgICAgKHZvaWQpbWFjaF90aW1lYmFzZV9pbmZvKCZ0aW1lYmFzZSk7Ci0gICAgfQotCi0gICAgdGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOwotICAgIHNlY3MgPSAoZG91YmxlKXRpbWUgKiB0aW1lYmFzZS5udW1lciAvIHRpbWViYXNlLmRlbm9tICogMWUtOTsKLSAgICBpZiAoaW5mbykgewotICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJtYWNoX2Fic29sdXRlX3RpbWUoKSI7Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAoZG91YmxlKXRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OwotICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKLQotI2VsaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7Ci0jaWZkZWYgQ0xPQ0tfSElHSFJFUwotICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19ISUdIUkVTOwotICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfSElHSFJFUykiOwotI2Vsc2UKLSAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfTU9OT1RPTklDOwotICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDKSI7Ci0jZW5kaWYKLQotICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSAhPSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBkb3VibGUgZDsKKyAgICBpZiAoX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKCZ0LCBpbmZvKSA8IDApIHsKKyAgICAgICAgYXNzZXJ0KGluZm8gIT0gTlVMTCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIHN0cnVjdCB0aW1lc3BlYyByZXM7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7Ci0gICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb247Ci0gICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOwotICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKGNsa19pZCwgJnJlcykgPT0gMCkKLSAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7Ci0jZW5kaWYKKyAgICBkID0gX1B5VGltZV9Bc1NlY29uZHNEb3VibGUodCk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShkKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEwMzMsNDAgKzkwMCwxNSBAQAogIm1vbm90b25pYygpIC0+IGZsb2F0XG5cCiBcblwKIE1vbm90b25pYyBjbG9jaywgY2Fubm90IGdvIGJhY2t3YXJkLiIpOwotI2VuZGlmICAgLyogUFlNT05PVE9OSUMgKi8KIAogc3RhdGljIFB5T2JqZWN0KgogcGVyZl9jb3VudGVyKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCiB7Ci0jaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoUFlNT05PVE9OSUMpCi0gICAgUHlPYmplY3QgKnJlczsKLSNlbmRpZgotI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKQotICAgIHN0YXRpYyBpbnQgdXNlX3BlcmZfY291bnRlciA9IDE7Ci0jZW5kaWYKLSNpZmRlZiBQWU1PTk9UT05JQwotICAgIHN0YXRpYyBpbnQgdXNlX21vbm90b25pYyA9IDE7Ci0jZW5kaWYKLQogI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgotICAgIGlmICh1c2VfcGVyZl9jb3VudGVyKSB7Ci0gICAgICAgIGlmICh3aW5fcGVyZl9jb3VudGVyKGluZm8sICZyZXMpID09IDApCi0gICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICB1c2VfcGVyZl9jb3VudGVyID0gMDsKLSAgICB9CisgICAgcmV0dXJuIHdpbl9wZXJmX2NvdW50ZXIoaW5mbyk7CisjZWxzZQorICAgIHJldHVybiBweW1vbm90b25pYyhpbmZvKTsKICNlbmRpZgotCi0jaWZkZWYgUFlNT05PVE9OSUMKLSAgICBpZiAodXNlX21vbm90b25pYykgewotICAgICAgICByZXMgPSBweW1vbm90b25pYyhpbmZvKTsKLSAgICAgICAgaWYgKHJlcyAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgdXNlX21vbm90b25pYyA9IDA7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gZmxvYXR0aW1lKGluZm8pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIzMywxMCArMTA3NSw4IEBACiAgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJjbG9jayIpID09IDApCiAgICAgICAgIG9iaiA9IHB5Y2xvY2soJmluZm8pOwogI2VuZGlmCi0jaWZkZWYgUFlNT05PVE9OSUMKICAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgIm1vbm90b25pYyIpID09IDApCiAgICAgICAgIG9iaiA9IHB5bW9ub3RvbmljKCZpbmZvKTsKLSNlbmRpZgogICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicGVyZl9jb3VudGVyIikgPT0gMCkKICAgICAgICAgb2JqID0gcGVyZl9jb3VudGVyKCZpbmZvKTsKICAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgInByb2Nlc3NfdGltZSIpID09IDApCkBAIC0xNDEzLDcgKzEyNTMsNyBAQAogICAgIHsiY2xvY2tfc2V0dGltZSIsICAgdGltZV9jbG9ja19zZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX3NldHRpbWVfZG9jfSwKICAgICB7ImNsb2NrX2dldHJlcyIsICAgIHRpbWVfY2xvY2tfZ2V0cmVzLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHJlc19kb2N9LAogI2VuZGlmCi0gICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX1ZBUkFSR1MsIHNsZWVwX2RvY30sCisgICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX08sIHNsZWVwX2RvY30sCiAgICAgeyJnbXRpbWUiLCAgICAgICAgICB0aW1lX2dtdGltZSwgTUVUSF9WQVJBUkdTLCBnbXRpbWVfZG9jfSwKICAgICB7ImxvY2FsdGltZSIsICAgICAgIHRpbWVfbG9jYWx0aW1lLCBNRVRIX1ZBUkFSR1MsIGxvY2FsdGltZV9kb2N9LAogICAgIHsiYXNjdGltZSIsICAgICAgICAgdGltZV9hc2N0aW1lLCBNRVRIX1ZBUkFSR1MsIGFzY3RpbWVfZG9jfSwKQEAgLTE0MjgsOSArMTI2OCw3IEBACiAjaWZkZWYgSEFWRV9XT1JLSU5HX1RaU0VUCiAgICAgeyJ0enNldCIsICAgICAgICAgICB0aW1lX3R6c2V0LCBNRVRIX05PQVJHUywgdHpzZXRfZG9jfSwKICNlbmRpZgotI2lmZGVmIFBZTU9OT1RPTklDCiAgICAgeyJtb25vdG9uaWMiLCAgICAgICB0aW1lX21vbm90b25pYywgTUVUSF9OT0FSR1MsIG1vbm90b25pY19kb2N9LAotI2VuZGlmCiAgICAgeyJwcm9jZXNzX3RpbWUiLCAgICB0aW1lX3Byb2Nlc3NfdGltZSwgTUVUSF9OT0FSR1MsIHByb2Nlc3NfdGltZV9kb2N9LAogICAgIHsicGVyZl9jb3VudGVyIiwgICAgdGltZV9wZXJmX2NvdW50ZXIsIE1FVEhfTk9BUkdTLCBwZXJmX2NvdW50ZXJfZG9jfSwKICAgICB7ImdldF9jbG9ja19pbmZvIiwgIHRpbWVfZ2V0X2Nsb2NrX2luZm8sIE1FVEhfVkFSQVJHUywgZ2V0X2Nsb2NrX2luZm9fZG9jfSwKQEAgLTE1MTIsMTUgKzEzNTAsNiBAQAogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0cnVjdFRpbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHdpbnZlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcik7Ci0gICAgICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG0pOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOwogI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKQEAgLTE1MzYsMTA5ICsxMzY1LDkzIEBACiBzdGF0aWMgUHlPYmplY3QqCiBmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKLSAgICBfUHlUaW1lX3RpbWV2YWwgdDsKLSNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7Ci0gICAgaW50IHJldDsKLQotICAgIC8qIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgZG9lcyBub3QgdXNlIGNsb2NrX2dldHRpbWUoKQotICAgICAgIGJlY2F1c2UgaXQgd291bGQgcmVxdWlyZSB0byBsaW5rIFB5dGhvbiB0byB0aGUgcnQgKHJlYWwtdGltZSkKLSAgICAgICBsaWJyYXJ5LCBhdCBsZWFzdCBvbiBMaW51eCAqLwotICAgIHJldCA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cCk7Ci0gICAgaWYgKHJldCA9PSAwKSB7Ci0gICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgcmVzOwotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkiOwotICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKLSAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOwotICAgICAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhDTE9DS19SRUFMVElNRSwgJnJlcykgPT0gMCkKLSAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKKyAgICBfUHlUaW1lX3QgdDsKKyAgICBkb3VibGUgZDsKKyAgICBpZiAoX1B5VGltZV9HZXRTeXN0ZW1DbG9ja1dpdGhJbmZvKCZ0LCBpbmZvKSA8IDApIHsKKyAgICAgICAgYXNzZXJ0KGluZm8gIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSNlbmRpZgotICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5X2luZm8oJnQsIGluZm8pOwotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKGRvdWJsZSl0LnR2X3NlYyArIHQudHZfdXNlYyAqIDFlLTYpOworICAgIGQgPSBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZSh0KTsKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOwogfQogCiAKLS8qIEltcGxlbWVudCBmbG9hdHNsZWVwKCkgZm9yIHZhcmlvdXMgcGxhdGZvcm1zLgorLyogSW1wbGVtZW50IHB5c2xlZXAoKSBmb3IgdmFyaW91cyBwbGF0Zm9ybXMuCiAgICBXaGVuIGludGVycnVwdGVkIChvciB3aGVuIGFub3RoZXIgZXJyb3Igb2NjdXJzKSwgcmV0dXJuIC0xIGFuZAogICAgc2V0IGFuIGV4Y2VwdGlvbjsgZWxzZSByZXR1cm4gMC4gKi8KIAogc3RhdGljIGludAotZmxvYXRzbGVlcChkb3VibGUgc2VjcykKK3B5c2xlZXAoX1B5VGltZV90IHNlY3MpCiB7Ci0vKiBYWFggU2hvdWxkIHRlc3QgZm9yIE1TX1dJTkRPV1MgZmlyc3QhICovCi0jaWYgZGVmaW5lZChIQVZFX1NFTEVDVCkgJiYgIWRlZmluZWQoX19FTVhfXykKLSAgICBzdHJ1Y3QgdGltZXZhbCB0OwotICAgIGRvdWJsZSBmcmFjOwotICAgIGludCBlcnI7Ci0KLSAgICBmcmFjID0gZm1vZChzZWNzLCAxLjApOwotICAgIHNlY3MgPSBmbG9vcihzZWNzKTsKLSAgICB0LnR2X3NlYyA9IChsb25nKXNlY3M7Ci0gICAgdC50dl91c2VjID0gKGxvbmcpKGZyYWMqMTAwMDAwMC4wKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJyID0gc2VsZWN0KDAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsICZ0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChlcnIgIT0gMCkgewotI2lmZGVmIEVJTlRSCi0gICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgX1B5VGltZV90IGRlYWRsaW5lLCBtb25vdG9uaWM7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0OworICAgIGludCBlcnIgPSAwOworI2Vsc2UKKyAgICBfUHlUaW1lX3QgbWlsbGlzZWNzOworICAgIHVuc2lnbmVkIGxvbmcgdWxfbWlsbGlzOworICAgIERXT1JEIHJjOworICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQ7CiAjZW5kaWYKLSAgICAgICAgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworCisgICAgZGVhZGxpbmUgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKyBzZWNzOworCisgICAgZG8geworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbChzZWNzLCAmdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnIgPSBzZWxlY3QoMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAoZmRfc2V0ICopMCwgJnRpbWVvdXQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChlcnIgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgfQotI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICAvKiBYWFggQ2FuJ3QgaW50ZXJydXB0IHRoaXMgc2xlZXAgKi8KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZGVsYXkoKGludCkoc2VjcyAqIDEwMDAgKyAwLjUpKTsgIC8qIGRlbGF5KCkgdXNlcyBtaWxsaXNlY29uZHMgKi8KLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsKLSAgICAgICAgZG91YmxlIG1pbGxpc2VjcyA9IHNlY3MgKiAxMDAwLjA7Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgdWxfbWlsbGlzOwotCisjZWxzZQorICAgICAgICBtaWxsaXNlY3MgPSBfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKHNlY3MsIF9QeVRpbWVfUk9VTkRfQ0VJTElORyk7CiAgICAgICAgIGlmIChtaWxsaXNlY3MgPiAoZG91YmxlKVVMT05HX01BWCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsZWVwIGxlbmd0aCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisKICAgICAgICAgLyogQWxsb3cgc2xlZXAoMCkgdG8gbWFpbnRhaW4gd2luMzIgc2VtYW50aWNzLCBhbmQgYXMgZGVjcmVlZAogICAgICAgICAgKiBieSBHdWlkbywgb25seSB0aGUgbWFpbiB0aHJlYWQgY2FuIGJlIGludGVycnVwdGVkLgogICAgICAgICAgKi8KICAgICAgICAgdWxfbWlsbGlzID0gKHVuc2lnbmVkIGxvbmcpbWlsbGlzZWNzOwotICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwgIV9QeU9TX0lzTWFpblRocmVhZCgpKQorICAgICAgICBpZiAodWxfbWlsbGlzID09IDAgfHwgIV9QeU9TX0lzTWFpblRocmVhZCgpKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgICAgICBTbGVlcCh1bF9taWxsaXMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIERXT1JEIHJjOwotICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7Ci0gICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7Ci0gICAgICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIHVsX21pbGxpcywgRkFMU0UpOwotICAgICAgICAgICAgaWYgKHJjID09IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgICAgICAgICAgZXJybm8gPSBFSU5UUjsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmMgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMsIEZBTFNFKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9Ci0jZWxzZQotICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzbGVlcCgoaW50KXNlY3MpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKHJjICE9IFdBSVRfT0JKRUNUXzApCisgICAgICAgICAgICBicmVhazsKICNlbmRpZgogCisgICAgICAgIC8qIHNsZWVwIHdhcyBpbnRlcnJ1cHRlZCBieSBTSUdJTlQgKi8KKyAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIG1vbm90b25pYyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICAgICAgc2VjcyA9IGRlYWRsaW5lIC0gbW9ub3RvbmljOworICAgICAgICBpZiAoc2VjcyA8IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogcmV0cnkgd2l0aCB0aGUgcmVjb21wdXRlZCBkZWxheSAqLworICAgIH0gd2hpbGUgKDEpOworCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RrYXBwaW5pdC5jIGIvTW9kdWxlcy90a2FwcGluaXQuYwppbmRleCAyZWQ4NTk0Li43NjE2ZDlkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RrYXBwaW5pdC5jCisrKyBiL01vZHVsZXMvdGthcHBpbml0LmMKQEAgLTI2LDkgKzI2LDYgQEAKIGludAogVGNsX0FwcEluaXQoVGNsX0ludGVycCAqaW50ZXJwKQogewotI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKLSAgICBUa19XaW5kb3cgbWFpbl93aW5kb3c7Ci0jZW5kaWYKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl9za2lwX3RrX2luaXQ7CiAjaWZkZWYgVEtJTlRFUl9QUk9URUNUX0xPQURUSwogICAgIGNvbnN0IGNoYXIgKl90a2ludGVyX3RrX2ZhaWxlZDsKQEAgLTExMywyOSArMTEwLDEzIEBACiAgICAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICAgfQogCi0jaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwotICAgIG1haW5fd2luZG93ID0gVGtfTWFpbldpbmRvdyhpbnRlcnApOwotI2Vsc2UKICAgICBUa19NYWluV2luZG93KGludGVycCk7Ci0jZW5kaWYKIAogI2lmZGVmIFRLX0FRVUEKICAgICBUa01hY09TWEluaXRBcHBsZUV2ZW50cyhpbnRlcnApOwogICAgIFRrTWFjT1NYSW5pdE1lbnVzKGludGVycCk7CiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfTU9SRUJVVFRPTlMKLSAgICB7Ci0gICAgICAgIGV4dGVybiBUY2xfQ21kUHJvYyBzdHVkQnV0dG9uQ21kOwotICAgICAgICBleHRlcm4gVGNsX0NtZFByb2MgdHJpQnV0dG9uQ21kOwotCi0gICAgICAgIFRjbF9DcmVhdGVDb21tYW5kKGludGVycCwgInN0dWRidXR0b24iLCBzdHVkQnV0dG9uQ21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoQ2xpZW50RGF0YSkgbWFpbl93aW5kb3csIE5VTEwpOwotICAgICAgICBUY2xfQ3JlYXRlQ29tbWFuZChpbnRlcnAsICJ0cmlidXR0b24iLCB0cmlCdXR0b25DbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChDbGllbnREYXRhKSBtYWluX3dpbmRvdywgTlVMTCk7Ci0gICAgfQotI2VuZGlmCi0KICNpZmRlZiBXSVRIX1BJTCAvKiAwLjJiNSBhbmQgbGF0ZXIgLS0gbm90IHlldCByZWxlYXNlZCBhcyBvZiBNYXkgMTQgKi8KICAgICB7CiAgICAgICAgIGV4dGVybiB2b2lkIFRrSW1hZ2luZ19Jbml0KFRjbF9JbnRlcnAgKik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RraW50ZXIuaCBiL01vZHVsZXMvdGtpbnRlci5oCmluZGV4IDNjNTU2NzYuLmNiNWE4MDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGtpbnRlci5oCisrKyBiL01vZHVsZXMvdGtpbnRlci5oCkBAIC0xNiwxNCArMTYsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKFRLX1JFTEVBU0VfTEVWRUwgPDwgOCkgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAoVEtfUkVMRUFTRV9TRVJJQUwgPDwgMCkpCiAKLS8qIFRLX1ZFUlNJT05fSEVYIHBhY2tzIGZpZWxkcyBpbiB3cm9uZyBvcmRlciwgbm90IHN1aXRhYmxlIGZvciBjb21wYXJpbmcgb2YKLSAqIG5vbi1maW5hbCByZWxlYXNlcy4gIExlZnQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0gKi8KLSNkZWZpbmUgVEtfVkVSU0lPTl9IRVggKChUS19NQUpPUl9WRVJTSU9OIDw8IDI0KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChUS19NSU5PUl9WRVJTSU9OIDw8IDE2KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChUS19SRUxFQVNFX1NFUklBTCA8PCA4KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIChUS19SRUxFQVNFX0xFVkVMIDw8IDApKQotCiAvKiBQcm90ZWN0IFRrIDguNC4xMyBhbmQgb2xkZXIgZnJvbSBhIGRlYWRsb2NrIHRoYXQgaGFwcGVucyB3aGVuIHRyeWluZwogICogdG8gbG9hZCB0ayBhZnRlciBhIGZhaWxlZCBhdHRlbXB0LiAqLwogI2lmIFRLX0hFWF9WRVJTSU9OIDwgMHgwODA0MDIwZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDUwN2NlZjMuLmZlNGU5MDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTczLDYgKzczLDggQEAKICAgICBQeV9VQ1M0ICgqbm9ybWFsaXphdGlvbikoUHlfVUNTNCk7CiB9IFByZXZpb3VzREJWZXJzaW9uOwogCisjaW5jbHVkZSAiY2xpbmljL3VuaWNvZGVkYXRhLmMuaCIKKwogI2RlZmluZSBnZXRfb2xkX3JlY29yZChzZWxmLCB2KSAgICAoKCgoUHJldmlvdXNEQlZlcnNpb24qKXNlbGYpLT5nZXRyZWNvcmQpKHYpKQogCiBzdGF0aWMgUHlNZW1iZXJEZWYgREJfbWVtYmVyc1tdID0gewpAQCAtOTksODEgKzEwMSwzMSBAQAogfQogCiAKLXN0YXRpYyBQeV9VQ1M0IGdldHVjaGFyKFB5VW5pY29kZU9iamVjdCAqb2JqKQotewotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKLSAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOwotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopID09IDEpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQotICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwotICAgIH0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAibmVlZCBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlciBhcyBwYXJhbWV0ZXIiKTsKLSAgICByZXR1cm4gKFB5X1VDUzQpLTE7Ci19Ci0KIC8qIC0tLSBNb2R1bGUgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKltjbGluaWMgaW5wdXRdCi0KIHVuaWNvZGVkYXRhLlVDRC5kZWNpbWFsCiAKLSAgICB1bmljaHI6IG9iamVjdCh0eXBlPSdQeVVuaWNvZGVPYmplY3QgKicsIHN1YmNsYXNzX29mPScmUHlVbmljb2RlX1R5cGUnKQorICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCiAgICAgZGVmYXVsdDogb2JqZWN0PU5VTEwKICAgICAvCiAKIENvbnZlcnRzIGEgVW5pY29kZSBjaGFyYWN0ZXIgaW50byBpdHMgZXF1aXZhbGVudCBkZWNpbWFsIHZhbHVlLgogCi1SZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHIKLWFzIGludGVnZXIuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmCi1ub3QgZ2l2ZW4sIFZhbHVlRXJyb3IgaXMgcmFpc2VkLgorUmV0dXJucyB0aGUgZGVjaW1hbCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLAorVmFsdWVFcnJvciBpcyByYWlzZWQuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9fZG9jX18sCi0iZGVjaW1hbCgkc2VsZiwgdW5pY2hyLCBkZWZhdWx0PU5vbmUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgZGVjaW1hbCB2YWx1ZS5cbiIKLSJcbiIKLSJSZXR1cm5zIHRoZSBkZWNpbWFsIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHJcbiIKLSJhcyBpbnRlZ2VyLiBJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZlxuIgotIm5vdCBnaXZlbiwgVmFsdWVFcnJvciBpcyByYWlzZWQuIik7Ci0KLSNkZWZpbmUgVU5JQ09ERURBVEFfVUNEX0RFQ0lNQUxfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY2ltYWwiLCAoUHlDRnVuY3Rpb24pdW5pY29kZWRhdGFfVUNEX2RlY2ltYWwsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoUHJldmlvdXNEQlZlcnNpb24gKnNlbGYsIFB5VW5pY29kZU9iamVjdCAqdW5pY2hyLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9VQ0RfZGVjaW1hbChQcmV2aW91c0RCVmVyc2lvbiAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljaHI7Ci0gICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPIXxPOmRlY2ltYWwiLAotICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ1bmljaHIsICZkZWZhdWx0X3ZhbHVlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoc2VsZiwgdW5pY2hyLCBkZWZhdWx0X3ZhbHVlKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChQcmV2aW91c0RCVmVyc2lvbiAqc2VsZiwgUHlVbmljb2RlT2JqZWN0ICp1bmljaHIsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg2ODk2Njk4OTZkMjkzZGYgaW5wdXQ9YzI1YzlkMmI0ZGUwNzZiMV0qLwordW5pY29kZWRhdGFfVUNEX2RlY2ltYWxfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmUyMzM3NmUxYTE4NTIzMSBpbnB1dD05MzNmODEwNzk5M2YyM2QwXSovCiB7CiAgICAgaW50IGhhdmVfb2xkID0gMDsKICAgICBsb25nIHJjOwotICAgIFB5X1VDUzQgYzsKLQotICAgIGMgPSBnZXR1Y2hhcih1bmljaHIpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0yMDQsNjEgKzE1Niw2NCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmMpOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfZGlnaXRfX2RvY19fLAotImRpZ2l0KHVuaWNoclssIGRlZmF1bHRdKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgdW5pY2hyIGFzXG5cCi1pbnRlZ2VyLiBJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZlxuXAotbm90IGdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5kaWdpdAorCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICBkZWZhdWx0OiBvYmplY3Q9TlVMTAorICAgIC8KKworQ29udmVydHMgYSBVbmljb2RlIGNoYXJhY3RlciBpbnRvIGl0cyBlcXVpdmFsZW50IGRpZ2l0IHZhbHVlLgorCitSZXR1cm5zIHRoZSBkaWdpdCB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorSWYgbm8gc3VjaCB2YWx1ZSBpcyBkZWZpbmVkLCBkZWZhdWx0IGlzIHJldHVybmVkLCBvciwgaWYgbm90IGdpdmVuLAorVmFsdWVFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9kaWdpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfZGlnaXRfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTZlMThjOTUwMTcxZmQyZiBpbnB1dD1lMjdkNmU0NTY1Y2QyOWYyXSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwotICAgIFB5T2JqZWN0ICpkZWZvYmogPSBOVUxMOwogICAgIGxvbmcgcmM7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOmRpZ2l0IiwgJlB5VW5pY29kZV9UeXBlLCAmdiwgJmRlZm9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIHJjID0gUHlfVU5JQ09ERV9UT0RJR0lUKGMpOwogICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChkZWZhdWx0X3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm90IGEgZGlnaXQiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfSU5DUkVGKGRlZm9iaik7Ci0gICAgICAgICAgICByZXR1cm4gZGVmb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYyk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9udW1lcmljX19kb2NfXywKLSJudW1lcmljKHVuaWNoclssIGRlZmF1bHRdKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHJcblwKLWFzIGZsb2F0LiBJZiBubyBzdWNoIHZhbHVlIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZlxuXAotbm90IGdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5udW1lcmljCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIGRlZmF1bHQ6IG9iamVjdD1OVUxMCisgICAgLworCitDb252ZXJ0cyBhIFVuaWNvZGUgY2hhcmFjdGVyIGludG8gaXRzIGVxdWl2YWxlbnQgbnVtZXJpYyB2YWx1ZS4KKworUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBmbG9hdC4KK0lmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgZGVmYXVsdCBpcyByZXR1cm5lZCwgb3IsIGlmIG5vdCBnaXZlbiwKK1ZhbHVlRXJyb3IgaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfbnVtZXJpYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01M2NlMjgxZmU4NWIxMGM0IGlucHV0PWZkZjU4NzFhNTU0Mjg5M2NdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKmRlZm9iaiA9IE5VTEw7CiAgICAgaW50IGhhdmVfb2xkID0gMDsKICAgICBkb3VibGUgcmM7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOm51bWVyaWMiLCAmUHlVbmljb2RlX1R5cGUsICZ2LCAmZGVmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0yNzYsMzcgKzIzMSwzNCBAQAogICAgIGlmICghaGF2ZV9vbGQpCiAgICAgICAgIHJjID0gUHlfVU5JQ09ERV9UT05VTUVSSUMoYyk7CiAgICAgaWYgKHJjID09IC0xLjApIHsKLSAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChkZWZhdWx0X3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibm90IGEgbnVtZXJpYyBjaGFyYWN0ZXIiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfSU5DUkVGKGRlZm9iaik7Ci0gICAgICAgICAgICByZXR1cm4gZGVmb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRfdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShyYyk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9jYXRlZ29yeV9fZG9jX18sCi0iY2F0ZWdvcnkodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBnZW5lcmFsIGNhdGVnb3J5IGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5jYXRlZ29yeQorCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1JldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfY2F0ZWdvcnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODU3MTUzOWVlMmU2NzgzYSBpbnB1dD0yN2Q2ZjNkODUwNTBiYzA2XSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmNhdGVnb3J5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+Y2F0ZWdvcnk7CiAgICAgaWYgKHNlbGYgJiYgVUNEX0NoZWNrKHNlbGYpKSB7CiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwpAQCAtMzE2LDI2ICsyNjgsMjQgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9DYXRlZ29yeU5hbWVzW2luZGV4XSk7CiB9CiAKLVB5RG9jX1NUUlZBUih1bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsX19kb2NfXywKLSJiaWRpcmVjdGlvbmFsKHVuaWNocilcblwKLVxuXAotUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjbGFzcyBhc3NpZ25lZCB0byB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcblwKLXVuaWNociBhcyBzdHJpbmcuIElmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgYW4gZW1wdHkgc3RyaW5nIGlzXG5cCi1yZXR1cm5lZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5iaWRpcmVjdGlvbmFsCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCisKK0lmIG5vIHN1Y2ggdmFsdWUgaXMgZGVmaW5lZCwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfYmlkaXJlY3Rpb25hbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzNjMxMGNlMjAzOWJiOTIgaW5wdXQ9YjNkOGY0MmNlYmZjZjQ3NV0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBpbnQgaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpiaWRpcmVjdGlvbmFsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+YmlkaXJlY3Rpb25hbDsKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CkBAIC0zNDcsNTUgKzI5Nyw1MiBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlVbmljb2RlX0JpZGlyZWN0aW9uYWxOYW1lc1tpbmRleF0pOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfY29tYmluaW5nX19kb2NfXywKLSJjb21iaW5pbmcodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBjYW5vbmljYWwgY29tYmluaW5nIGNsYXNzIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlXG5cCi1jaGFyYWN0ZXIgdW5pY2hyIGFzIGludGVnZXIuIFJldHVybnMgMCBpZiBubyBjb21iaW5pbmcgY2xhc3MgaXNcblwKLWRlZmluZWQuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QuY29tYmluaW5nIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfY29tYmluaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgY2Fub25pY2FsIGNvbWJpbmluZyBjbGFzcyBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorCitSZXR1cm5zIDAgaWYgbm8gY29tYmluaW5nIGNsYXNzIGlzIGRlZmluZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYWQwNTZkMGNiNmE1OTIwIGlucHV0PTlmMmQ2YjJhOTVkMGEyMmFdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgaW50IGluZGV4OwotICAgIFB5X1VDUzQgYzsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyE6Y29tYmluaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogICAgIGluZGV4ID0gKGludCkgX2dldHJlY29yZF9leChjKS0+Y29tYmluaW5nOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKICAgICAgICAgaWYgKG9sZC0+Y2F0ZWdvcnlfY2hhbmdlZCA9PSAwKQogICAgICAgICAgICAgaW5kZXggPSAwOyAvKiB1bmFzc2lnbmVkICovCiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaW5kZXgpOworICAgIHJldHVybiBpbmRleDsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX21pcnJvcmVkX19kb2NfXywKLSJtaXJyb3JlZCh1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIG1pcnJvcmVkIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIGludGVnZXIuIFJldHVybnMgMSBpZiB0aGUgY2hhcmFjdGVyIGhhcyBiZWVuIGlkZW50aWZpZWQgYXNcblwKLWEgXCJtaXJyb3JlZFwiIGNoYXJhY3RlciBpbiBiaWRpcmVjdGlvbmFsIHRleHQsIDAgb3RoZXJ3aXNlLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELm1pcnJvcmVkIC0+IGludAogCi1zdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZWRhdGFfbWlycm9yZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHNlbGY6IHNlbGYKKyAgICBjaHI6IGludChhY2NlcHQ9e3N0cn0pCisgICAgLworCitSZXR1cm5zIHRoZSBtaXJyb3JlZCBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBpbnRlZ2VyLgorCitSZXR1cm5zIDEgaWYgdGhlIGNoYXJhY3RlciBoYXMgYmVlbiBpZGVudGlmaWVkIGFzIGEgIm1pcnJvcmVkIgorY2hhcmFjdGVyIGluIGJpZGlyZWN0aW9uYWwgdGV4dCwgMCBvdGhlcndpc2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK3VuaWNvZGVkYXRhX1VDRF9taXJyb3JlZF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBpbnQgY2hyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1MzJkYmY4MTIxYjUwZTYgaW5wdXQ9NWRkNDAwZDM1MWFlNmYzYl0qLwogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKICAgICBpbnQgaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITptaXJyb3JlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeVVuaWNvZGVfVHlwZSwgJnYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKICAgICBpbmRleCA9IChpbnQpIF9nZXRyZWNvcmRfZXgoYyktPm1pcnJvcmVkOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTQwNCwyOCArMzUxLDI1IEBACiAgICAgICAgIGVsc2UgaWYgKG9sZC0+bWlycm9yZWRfY2hhbmdlZCAhPSAweEZGKQogICAgICAgICAgICAgaW5kZXggPSBvbGQtPm1pcnJvcmVkX2NoYW5nZWQ7CiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaW5kZXgpOworICAgIHJldHVybiBpbmRleDsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2Vhc3RfYXNpYW5fd2lkdGhfX2RvY19fLAotImVhc3RfYXNpYW5fd2lkdGgodW5pY2hyKVxuXAotXG5cCi1SZXR1cm5zIHRoZSBlYXN0IGFzaWFuIHdpZHRoIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuXAotdW5pY2hyIGFzIHN0cmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5lYXN0X2FzaWFuX3dpZHRoCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIC8KKworUmV0dXJucyB0aGUgZWFzdCBhc2lhbiB3aWR0aCBhc3NpZ25lZCB0byB0aGUgY2hhcmFjdGVyIGNociBhcyBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9lYXN0X2FzaWFuX3dpZHRoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVkYXRhX1VDRF9lYXN0X2FzaWFuX3dpZHRoX2ltcGwoUHlPYmplY3QgKnNlbGYsIGludCBjaHIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDg0ZTg1MzdkOWVlODE5NyBpbnB1dD1jNDg1NDc5OGFhYjAyNmUwXSovCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp2OwogICAgIGludCBpbmRleDsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hOmVhc3RfYXNpYW5fd2lkdGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlVbmljb2RlX1R5cGUsICZ2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYyA9IGdldHVjaGFyKHYpOwotICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9VQ1M0IGMgPSAoUHlfVUNTNCljaHI7CiAgICAgaW5kZXggPSAoaW50KSBfZ2V0cmVjb3JkX2V4KGMpLT5lYXN0X2FzaWFuX3dpZHRoOwogICAgIGlmIChzZWxmICYmIFVDRF9DaGVjayhzZWxmKSkgewogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKQEAgLTQzNSwyOSArMzc5LDI3IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfRWFzdEFzaWFuV2lkdGhOYW1lc1tpbmRleF0pOwogfQogCi1QeURvY19TVFJWQVIodW5pY29kZWRhdGFfZGVjb21wb3NpdGlvbl9fZG9jX18sCi0iZGVjb21wb3NpdGlvbih1bmljaHIpXG5cCi1cblwKLVJldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIFVuaWNvZGVcblwKLWNoYXJhY3RlciB1bmljaHIgYXMgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaW4gY2FzZSBub1xuXAotc3VjaCBtYXBwaW5nIGlzIGRlZmluZWQuIik7CisvKltjbGluaWMgaW5wdXRdCit1bmljb2RlZGF0YS5VQ0QuZGVjb21wb3NpdGlvbgorCisgICAgc2VsZjogc2VsZgorICAgIGNocjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1JldHVybnMgdGhlIGNoYXJhY3RlciBkZWNvbXBvc2l0aW9uIG1hcHBpbmcgYXNzaWduZWQgdG8gdGhlIGNoYXJhY3RlciBjaHIgYXMgc3RyaW5nLgorCitBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaW4gY2FzZSBubyBzdWNoIG1hcHBpbmcgaXMgZGVmaW5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX2RlY29tcG9zaXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25faW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNocikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZDY5OWYzZWM3NTY1ZDI3IGlucHV0PWU0YzEyNDU5YWQ2ODUwN2JdKi8KIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7CiAgICAgY2hhciBkZWNvbXBbMjU2XTsKICAgICBpbnQgY29kZSwgaW5kZXgsIGNvdW50OwogICAgIHNpemVfdCBpOwogICAgIHVuc2lnbmVkIGludCBwcmVmaXhfaW5kZXg7Ci0gICAgUHlfVUNTNCBjOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPITpkZWNvbXBvc2l0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VW5pY29kZV9UeXBlLCAmdikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGMgPSBnZXR1Y2hhcih2KTsKLSAgICBpZiAoYyA9PSAoUHlfVUNTNCktMSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpY2hyOwogCiAgICAgY29kZSA9IChpbnQpYzsKIApAQCAtODU4LDIyICs4MDAsMjQgQEAKICAgICByZXR1cm4gMTsgLyogY2VydGFpbmx5IG5vcm1hbGl6ZWQgKi8KIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX25vcm1hbGl6ZV9fZG9jX18sCi0ibm9ybWFsaXplKGZvcm0sIHVuaXN0cilcblwKLVxuXAotUmV0dXJuIHRoZSBub3JtYWwgZm9ybSAnZm9ybScgZm9yIHRoZSBVbmljb2RlIHN0cmluZyB1bmlzdHIuICBWYWxpZFxuXAotdmFsdWVzIGZvciBmb3JtIGFyZSAnTkZDJywgJ05GS0MnLCAnTkZEJywgYW5kICdORktEJy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5ub3JtYWxpemUKIAotc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZWRhdGFfbm9ybWFsaXplKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBzZWxmOiBzZWxmCisgICAgZm9ybTogc3RyCisgICAgdW5pc3RyIGFzIGlucHV0OiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVVuaWNvZGVfVHlwZScpCisgICAgLworCitSZXR1cm4gdGhlIG5vcm1hbCBmb3JtICdmb3JtJyBmb3IgdGhlIFVuaWNvZGUgc3RyaW5nIHVuaXN0ci4KKworVmFsaWQgdmFsdWVzIGZvciBmb3JtIGFyZSAnTkZDJywgJ05GS0MnLCAnTkZEJywgYW5kICdORktEJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfaW1wbChQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjJkMWY4ODcwMDI3ZWZkYyBpbnB1dD1jZDA5MmU2MzFjZjExODgzXSovCiB7Ci0gICAgY2hhciAqZm9ybTsKLSAgICBQeU9iamVjdCAqaW5wdXQ7Ci0KLSAgICBpZighUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm0sICZQeVVuaWNvZGVfVHlwZSwgJmlucHV0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTk3NywxMCArOTIxLDExIEBACiB7CiAgICAgcmV0dXJuCiAgICAgICAgICgweDM0MDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4NERCNSkgICB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBICovCi0gICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZDQykgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCisgICAgICAgICgweDRFMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4OUZENSkgICB8fCAvKiBDSksgSWRlb2dyYXBoICovCiAgICAgICAgICgweDIwMDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJBNkQ2KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBCICovCiAgICAgICAgICgweDJBNzAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCNzM0KSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBDICovCi0gICAgICAgICgweDJCNzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKTsgICAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBEICovCisgICAgICAgICgweDJCNzQwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJCODFEKSB8fCAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBEICovCisgICAgICAgICgweDJCODIwIDw9IGNvZGUgJiYgY29kZSA8PSAweDJDRUExKTsgICAvKiBDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBFICovCiB9CiAKIC8qIG1hY3JvcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgZ2l2ZW4gY29kZSBwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQKQEAgLTEyMzIsNjQgKzExNzcsNjcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBQeXRob24gYmluZGluZ3MgKi8KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX25hbWVfX2RvY19fLAotIm5hbWUodW5pY2hyWywgZGVmYXVsdF0pXG5cCi1SZXR1cm5zIHRoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBVbmljb2RlIGNoYXJhY3RlciB1bmljaHIgYXMgYVxuXAotc3RyaW5nLiBJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3RcblwKLWdpdmVuLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK3VuaWNvZGVkYXRhLlVDRC5uYW1lCisKKyAgICBzZWxmOiBzZWxmCisgICAgY2hyOiBpbnQoYWNjZXB0PXtzdHJ9KQorICAgIGRlZmF1bHQ6IG9iamVjdD1OVUxMCisgICAgLworCitSZXR1cm5zIHRoZSBuYW1lIGFzc2lnbmVkIHRvIHRoZSBjaGFyYWN0ZXIgY2hyIGFzIGEgc3RyaW5nLgorCitJZiBubyBuYW1lIGlzIGRlZmluZWQsIGRlZmF1bHQgaXMgcmV0dXJuZWQsIG9yLCBpZiBub3QgZ2l2ZW4sCitWYWx1ZUVycm9yIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVkYXRhX25hbWUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQordW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChQeU9iamVjdCAqc2VsZiwgaW50IGNociwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmJiYjM3YTMyNjQwNzcwNyBpbnB1dD0zZTAzNjdmNTM0ZGU1NmQ5XSovCiB7CiAgICAgY2hhciBuYW1lW05BTUVfTUFYTEVOXTsKLSAgICBQeV9VQ1M0IGM7Ci0KLSAgICBQeVVuaWNvZGVPYmplY3QqIHY7Ci0gICAgUHlPYmplY3QqIGRlZm9iaiA9IE5VTEw7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOm5hbWUiLCAmUHlVbmljb2RlX1R5cGUsICZ2LCAmZGVmb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBjID0gZ2V0dWNoYXIodik7Ci0gICAgaWYgKGMgPT0gKFB5X1VDUzQpLTEpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1VDUzQgYyA9IChQeV9VQ1M0KWNocjsKIAogICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjLCBuYW1lLCBzaXplb2YobmFtZSksIDApKSB7Ci0gICAgICAgIGlmIChkZWZvYmogPT0gTlVMTCkgeworICAgICAgICBpZiAoZGVmYXVsdF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5vIHN1Y2ggbmFtZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBkZWZvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdF92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKIH0KIAotUHlEb2NfU1RSVkFSKHVuaWNvZGVkYXRhX2xvb2t1cF9fZG9jX18sCi0ibG9va3VwKG5hbWUpXG5cCi1cblwKLUxvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuICBJZiBhIGNoYXJhY3RlciB3aXRoIHRoZVxuXAotZ2l2ZW4gbmFtZSBpcyBmb3VuZCwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIFVuaWNvZGVcblwKLWNoYXJhY3Rlci4gIElmIG5vdCBmb3VuZCwgS2V5RXJyb3IgaXMgcmFpc2VkLiIpOworLypbY2xpbmljIGlucHV0XQordW5pY29kZWRhdGEuVUNELmxvb2t1cAorCisgICAgc2VsZjogc2VsZgorICAgIG5hbWU6IHN0cihhY2NlcHQ9e3N0ciwgcm9idWZmZXJ9LCB6ZXJvZXM9VHJ1ZSkKKyAgICAvCisKK0xvb2sgdXAgY2hhcmFjdGVyIGJ5IG5hbWUuCisKK0lmIGEgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgaXMgZm91bmQsIHJldHVybiB0aGUKK2NvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCBLZXlFcnJvciBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlZGF0YV9sb29rdXAoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQordW5pY29kZWRhdGFfVUNEX2xvb2t1cF9pbXBsKFB5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzY1Y2I4MTg2Nzg4ZTZiZSBpbnB1dD1hNTU3YmUwZjg2MDdhMGQ2XSovCiB7CiAgICAgUHlfVUNTNCBjb2RlOwotCi0gICAgY2hhciogbmFtZTsKLSAgICBQeV9zc2l6ZV90IG5hbWVsZW47CiAgICAgdW5zaWduZWQgaW50IGluZGV4OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lbGVuKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG5hbWVsZW4gPiBJTlRfTUFYKSB7CisgICAgaWYgKG5hbWVfbGVuZ3RoID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJuYW1lIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghX2dldGNvZGUoc2VsZiwgbmFtZSwgKGludCluYW1lbGVuLCAmY29kZSwgMSkpIHsKKyAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIChpbnQpbmFtZV9sZW5ndGgsICZjb2RlLCAxKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMzA4LDI0ICsxMjU2LDE3IEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiB1bmljb2RlZGF0YV9mdW5jdGlvbnNbXSA9IHsKICAgICBVTklDT0RFREFUQV9VQ0RfREVDSU1BTF9NRVRIT0RERUYKLSAgICB7ImRpZ2l0IiwgdW5pY29kZWRhdGFfZGlnaXQsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfZGlnaXRfX2RvY19ffSwKLSAgICB7Im51bWVyaWMiLCB1bmljb2RlZGF0YV9udW1lcmljLCBNRVRIX1ZBUkFSR1MsIHVuaWNvZGVkYXRhX251bWVyaWNfX2RvY19ffSwKLSAgICB7ImNhdGVnb3J5IiwgdW5pY29kZWRhdGFfY2F0ZWdvcnksIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfY2F0ZWdvcnlfX2RvY19ffSwKLSAgICB7ImJpZGlyZWN0aW9uYWwiLCB1bmljb2RlZGF0YV9iaWRpcmVjdGlvbmFsLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfYmlkaXJlY3Rpb25hbF9fZG9jX199LAotICAgIHsiY29tYmluaW5nIiwgdW5pY29kZWRhdGFfY29tYmluaW5nLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9jb21iaW5pbmdfX2RvY19ffSwKLSAgICB7Im1pcnJvcmVkIiwgdW5pY29kZWRhdGFfbWlycm9yZWQsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfbWlycm9yZWRfX2RvY19ffSwKLSAgICB7ImVhc3RfYXNpYW5fd2lkdGgiLCB1bmljb2RlZGF0YV9lYXN0X2FzaWFuX3dpZHRoLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZWRhdGFfZWFzdF9hc2lhbl93aWR0aF9fZG9jX199LAotICAgIHsiZGVjb21wb3NpdGlvbiIsIHVuaWNvZGVkYXRhX2RlY29tcG9zaXRpb24sIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlZGF0YV9kZWNvbXBvc2l0aW9uX19kb2NfX30sCi0gICAgeyJuYW1lIiwgdW5pY29kZWRhdGFfbmFtZSwgTUVUSF9WQVJBUkdTLCB1bmljb2RlZGF0YV9uYW1lX19kb2NfX30sCi0gICAgeyJsb29rdXAiLCB1bmljb2RlZGF0YV9sb29rdXAsIE1FVEhfVkFSQVJHUywgdW5pY29kZWRhdGFfbG9va3VwX19kb2NfX30sCi0gICAgeyJub3JtYWxpemUiLCB1bmljb2RlZGF0YV9ub3JtYWxpemUsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhX25vcm1hbGl6ZV9fZG9jX199LAorICAgIFVOSUNPREVEQVRBX1VDRF9ESUdJVF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTlVNRVJJQ19NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfQ0FURUdPUllfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0JJRElSRUNUSU9OQUxfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0NPTUJJTklOR19NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTUlSUk9SRURfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0VBU1RfQVNJQU5fV0lEVEhfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0RFQ09NUE9TSVRJT05fTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX05BTUVfTUVUSE9EREVGCisgICAgVU5JQ09ERURBVEFfVUNEX0xPT0tVUF9NRVRIT0RERUYKKyAgICBVTklDT0RFREFUQV9VQ0RfTk9STUFMSVpFX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCmluZGV4IGVjMTFmYTEuLjg5ZDg3NjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKQEAgLTEsNiArMSw2IEBACiAvKiB0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBUb29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSAzLjIgKi8KIAotI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjYuMy4wIgorI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjguMC4wIgogLyogYSBsaXN0IG9mIHVuaXF1ZSBkYXRhYmFzZSByZWNvcmRzICovCiBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkIF9QeVVuaWNvZGVfRGF0YWJhc2VfUmVjb3Jkc1tdID0gewogICAgIHswLCAwLCAwLCAwLCAwLCAwfSwKQEAgLTMyMyw3ICszMjMsMTEgQEAKICAgICB7MjcsIDAsIDE5LCAwLCAxLCAxMzZ9LAogICAgIHsxNCwgMCwgMTksIDAsIDUsIDB9LAogICAgIHs4LCAwLCAxOSwgMCwgNSwgMH0sCisgICAgezksIDAsIDksIDAsIDUsIDB9LAogICAgIHs5LCAwLCA0LCAwLCA1LCAwfSwKKyAgICB7MzAsIDAsIDQsIDAsIDUsIDB9LAorICAgIHsxLCAwLCA0LCAwLCA1LCAwfSwKKyAgICB7MiwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEyLCAwLCA1LCAwfSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDE3MH0sCiAgICAgezUsIDIxNiwgMSwgMCwgNSwgMH0sCkBAIC0zMzUsOCArMzM5LDggQEAKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCi0jZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MgotI2RlZmluZSBUT1RBTF9MQVNUIDU2CisjZGVmaW5lIFRPVEFMX0ZJUlNUIDM3NgorI2RlZmluZSBUT1RBTF9MQVNUIDYyCiBzdHJ1Y3QgcmVpbmRleHtpbnQgc3RhcnQ7c2hvcnQgY291bnQsaW5kZXg7fTsKIHN0YXRpYyBzdHJ1Y3QgcmVpbmRleCBuZmNfZmlyc3RbXSA9IHsKICAgeyA2MCwgMiwgMH0sCkBAIC01NDYsNiArNTUwLDkgQEAKICAgeyA2OTc4NywgMCwgMzY4fSwKICAgeyA2OTc5NywgMCwgMzY5fSwKICAgeyA2OTkzNywgMSwgMzcwfSwKKyAgeyA3MDQ3MSwgMCwgMzcyfSwKKyAgeyA3MDg0MSwgMCwgMzczfSwKKyAgeyA3MTA5NiwgMSwgMzc0fSwKICAgezAsMCwwfQogfTsKIApAQCAtNTgzLDYgKzU5MCwxMiBAQAogICB7IDEyNDQxLCAxLCA1Mn0sCiAgIHsgNjk4MTgsIDAsIDU0fSwKICAgeyA2OTkyNywgMCwgNTV9LAorICB7IDcwNDYyLCAwLCA1Nn0sCisgIHsgNzA0ODcsIDAsIDU3fSwKKyAgeyA3MDgzMiwgMCwgNTh9LAorICB7IDcwODQyLCAwLCA1OX0sCisgIHsgNzA4NDUsIDAsIDYwfSwKKyAgeyA3MTA4NywgMCwgNjF9LAogICB7MCwwLDB9CiB9OwogCkBAIC03MTQsMzYgKzcyNyw0MyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMTIzLCAxMjQsIAotICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCA4NCwgCi0gICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE0MywgODQsIDE0NCwgMTQ1LCAxNDYsIAotICAgIDg0LCAxNDcsIDg0LCAxNDgsIDg0LCA4NCwgODQsIDE0OSwgODQsIDg0LCA4NCwgMTUwLCAxNTEsIDE1MiwgMTUzLCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NSwgODQsIDE1NiwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NywgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCAxNTgsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDE1OSwgMTYwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE2MSwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgNzgsIDE2MiwgMTYzLCAxNjQsIDE2NSwgODQsIDE2NiwgODQsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIAotICAgIDE3MywgMTc0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE3NSwgMTc2LCA4NCwgODQsIDE3NywgMTc4LCAxNzksIAotICAgIDE4MCwgMTgxLCA4NCwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMjUsIDEyNiwgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCisgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxMzgsIDQxLCA0MSwgMTQ1LCAxMzgsIDE0NiwgMTQ3LCAxNDgsIAorICAgIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTM4LCAxMzgsIDE1NiwgMTM4LCAxMzgsIDEzOCwgMTU3LCAKKyAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDEzOCwgMTY0LCAxMzgsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCisgICAgMTM4LCAxMzgsIDE2OSwgMTM4LCAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzEsIDE3MiwgNDEsIDE3MywgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODAsIDE4MSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4MywgMTg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE4NSwgCisgICAgMTg2LCAxODcsIDE4OCwgMTM4LCAxODksIDEzOCwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAxOTgsIDE5OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDIwMCwgMjAxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwMiwgMjAzLCAxMzgsIDEzOCwgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMjA5LCAyMTAsIDIwOSwgMjA5LCAKKyAgICAyMTEsIDIxMiwgMjA5LCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIApAQCAtNzY3LDM1OSArNzg3LDQ1OSBAQAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTkyLCAKLSAgICAxMDEsIDE5MywgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDEyMiwgMTIyLCAxMjIsIDEyMiwgMTk0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKLSAgICAxOTUsIDg0LCAxOTYsIDE5NywgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAotICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjEsIDEwMSwgMjIyLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMjIzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjI0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMjUsIDEzOCwgMjI2LCAyMjcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTE1NSw4ICsxMjc1LDggQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIyOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDE5OCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKQEAgLTExOTIsNyArMTMxMiw3IEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDE5OCwgCisgICAgMTIxLCAyMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTI0NCw3ICsxMzY0LDcgQEAKICAgICA2OSwgNTksIDY5LCA2OSwgNzAsIDYwLCA2MiwgNjIsIDYyLCA2MCwgNjAsIDYwLCA2MiwgNjIsIDcxLCA2MCwgNjAsIDYwLCAKICAgICA2MiwgNjIsIDYyLCA2MiwgNjAsIDYxLCA2MiwgNjIsIDYwLCA3MiwgNzMsIDczLCA3MiwgNzMsIDczLCA3MiwgNjAsIDYwLCAKICAgICA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDQ0LCA0NywgNDQsIDQ3LCA3NCwgNTQsIDQ0LCAKLSAgICA0NywgMCwgMCwgNTEsIDQ3LCA0NywgNDcsIDc1LCAwLCAwLCAwLCAwLCAwLCA1OCwgNzYsIDM4LCA3NSwgMzgsIDM4LCAzOCwgCisgICAgNDcsIDAsIDAsIDUxLCA0NywgNDcsIDQ3LCA3NSwgNDQsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKICAgICAwLCAzOCwgMCwgMzgsIDM4LCA0MywgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgMzksIDM5LCAwLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCiAgICAgNDMsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCkBAIC0xMjY3LDk3ICsxMzg3LDk4IEBACiAgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCiAgICAgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNTMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMzUsIAotICAgIDAsIDgzLCA4NCwgMCwgMCwgMCwgMCwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg3LCA4NiwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NywgCi0gICAgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAKLSAgICAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDcsIDEwNywgMTA3LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDAsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIDI2LCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMTE3LCAwLCAxMTMsIDExMywgMTE4LCAxMTgsIAotICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDEyMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMjEsIAotICAgIDEyMiwgMTIzLCAxMTQsIDExNSwgMTE2LCAxMjQsIDEyNSwgMTI2LCAxMjYsIDEyNywgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODYsIDgxLCA4MSwgODYsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTEwLCAKLSAgICAxMjksIDEyOSwgMTEzLCAxMTgsIDExOCwgMTMwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOSwgMTE4LCAxMTksIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTMsIDExOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEwOCwgMjYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEyMCwgMTIwLCA4MSwgODEsIDI2LCA4NiwgODEsIDgxLCA4NiwgCi0gICAgMTE4LCAxMTgsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTE4LCAxMTgsIAotICAgIDExOCwgMTMzLCAxMzMsIDExOCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExNywgMTE4LCAxMzQsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCAKLSAgICA4NiwgODYsIDg2LCA4MSwgODYsIDg2LCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgODEsIDg2LCAKLSAgICA4MSwgODEsIDAsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEzNywgMTM3LCAyNiwgMTM4LCAxMzgsIDEzOCwgMTM3LCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDM1LCAwLCA4MywgODQsIDAsIDAsIDI2LCAyNiwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAKKyAgICA4MSwgODEsIDg3LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NywgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAKKyAgICAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIAotICAgIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAKLSAgICAxMDQsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODYsIDg2LCA4NiwgCi0gICAgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIAorICAgIDI2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMTE3LCAwLCAxMTMsIDExMywgCisgICAgMTE4LCAxMTgsIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDEyMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMjEsIDEyMiwgMTIzLCAxMTQsIDExNSwgMTE2LCAxMjQsIDEyNSwgMTI2LCAxMjYsIDEyNywgODYsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTEwLCAxMjksIDEyOSwgMTEzLCAxMTgsIDExOCwgMTMwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOSwgMTE4LCAxMTksIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE5LCAxMTMsIDExOCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDEwOCwgMjYsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEyMCwgMTIwLCA4MSwgODEsIDI2LCA4NiwgCisgICAgODEsIDgxLCA4NiwgMTE4LCAxMTgsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCisgICAgMTE4LCAxMTgsIDExOCwgMTMzLCAxMzMsIDExOCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExNywgMTE4LCAxMzQsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDgxLCA4NiwgODEsIDgxLCAKKyAgICA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4MSwgODYsIDg2LCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4MSwgODYsIDgxLCAKKyAgICA4NiwgODEsIDg2LCA4MSwgODEsIDAsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDEzNywgMTM3LCAyNiwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM3LCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4MSwgCisgICAgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgMTM3LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIAorICAgIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgODYsIDg2LCA4NiwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgsIDAsIDExOCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAogICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIAotICAgIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgCi0gICAgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIAorICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIAotICAgIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDE0MiwgMTM5LCAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIAotICAgIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIAotICAgIDEzNSwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIAorICAgIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAKKyAgICAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAKKyAgICAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCiAgICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCkBAIC0xMzY5LDEyMyArMTQ5MCwxMjQgQEAKICAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCiAgICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAKICAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAogICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgMCwgCisgICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAKKyAgICAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgCisgICAgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCiAgICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIAotICAgIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgCisgICAgMTQ3LCAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgCi0gICAgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAxNTUsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgCi0gICAgMTM5LCAxNDcsIDE0NywgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgCi0gICAgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAKLSAgICAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCi0gICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAotICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKLSAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAKKyAgICAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgCisgICAgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAKKyAgICAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIAorICAgIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIAorICAgIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIAorICAgIDE2NiwgMTY2LCAxMzUsIDEzOSwgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTQ5LCAxMzUsIAotICAgIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgMTQyLCAxMzksIDEzOSwgMTM1LCAKLSAgICAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgCisgICAgMTM5LCAxMzUsIDE0OSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIAorICAgIDE0MiwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxMzksIDEzOSwgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKICAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODEsIDgxLCAKLSAgICA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNTA1LDM1NyArMTYyNywzNTkgQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCi0gICAgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MiwgMTM1LCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDEzNSwgODMsIDgzLCAKLSAgICA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgODcsIDgxLCA4NiwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCi0gICAgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDg2LCAxMzksIDEzOSwgMTM1LCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzOSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxNDIsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDE0MCwgNDgsIAotICAgIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzUsIDE0MiwgMTM5LCAxMzksIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgODcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNzUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTQ1LCAwLCAwLCAwLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0OCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDg2LCAxMzksIDEzOSwgMTM1LCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxNDIsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDg2LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIAorICAgIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDE0NiwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NywgMTM1LCAxNDcsIDEzOSwgMTM5LCAxNDcsIDE0NywgMTM1LCAxNDcsIDE3NSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxNzUsIDE0MiwgMTM1LCAKKyAgICAxMzUsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDE3NSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxNDUsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIAotICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIAorICAgIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIAorICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIAogICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NywgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzcsIAorICAgIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwLCA4NiwgCi0gICAgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAKLSAgICAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAxODAsIDg2LCA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIAogICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIAogICAgIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAKLSAgICA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAKLSAgICAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAKLSAgICA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIAotICAgIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIAotICAgIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgCi0gICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIAotICAgIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAKLSAgICAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIAotICAgIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAKLSAgICAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgCi0gICAgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAKLSAgICAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIAotICAgIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCAKLSAgICA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgCi0gICAgODEsIDgxLCA4MSwgODEsIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAKLSAgICAxNzYsIDE3NiwgODEsIDg2LCA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyLCAyMjIsIDQ5LCAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCAKLSAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDI2LCAyNiwgMjIyLCAyMjMsIDIyMywgMjYsIDQ5LCAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAKLSAgICAyMjUsIDM1LCA0OSwgNDksIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIAotICAgIDQ5LCAyMjYsIDc4LCA3OCwgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgCi0gICAgMjI3LCAyMjcsIDM3LCAzNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgCi0gICAgMjI5LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIAotICAgIDIyOSwgMjI5LCAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgCisgICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIAorICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAorICAgIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCA1OCwgNTgsIDc2LCA0MywgNDMsIAorICAgIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCAwLCAwLCAKKyAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCA0MywgNDMsIDQzLCA0MywgCisgICAgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIAorICAgIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIAorICAgIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIAorICAgIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIAorICAgIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgCisgICAgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMjE0LCAKKyAgICA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMTQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgCisgICAgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCAKKyAgICA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIDgxLCAxNzYsIDE3NiwgODYsIDg2LCAKKyAgICA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIsIDIyMiwgNDksIAorICAgIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIAorICAgIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIDIyMywgMjIzLCAyNiwgNDksIAorICAgIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAKKyAgICAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAyMjcsIDIyNywgMjI3LCAKKyAgICAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIAorICAgIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgCi0gICAgMjMyLCAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDIzMywgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgCi0gICAgNDAsIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIAotICAgIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIAotICAgIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgCi0gICAgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIAotICAgIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCi0gICAgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAKLSAgICAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAKKyAgICAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIAorICAgIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAKKyAgICAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIAorICAgIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKKyAgICAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAKKyAgICAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDI0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDIyNywgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAotICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKLSAgICAyNDIsIDI0MiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDE1MywgMTUzLCAKICAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgCi0gICAgMjMyLCAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCA3OCwgNzgsIDIzMiwgCisgICAgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMTYzLCAKKyAgICAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDE2MywgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAotICAgIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAKLSAgICAyMjYsIDIxNiwgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjI2LCAyMTYsIAorICAgIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDI0MywgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjQzLCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgCi0gICAgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIAorICAgIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIAorICAgIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCisgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKQEAgLTE4NzAsNjMgKzE5OTQsNjIgQEAKICAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCiAgICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAogICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAyNDYsIDI0NywgMjQ3LCAyNDcsIAotICAgIDI0NCwgMjQ4LCAxNzAsIDI0OSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAKLSAgICAyNDQsIDI0NCwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NCwgCi0gICAgMjQ0LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNTUsIDI1NiwgMjU3LCAyNTgsIAotICAgIDI1OSwgMjU5LCAyNTIsIDI0OCwgMjQ4LCAyNDgsIDI0OCwgMjQ4LCAyNDUsIDI0NCwgMjYwLCAyNjAsIDI2MCwgMjQ4LCAKLSAgICAxNzAsIDI0NywgMjQ0LCAyNiwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgCisgICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIAorICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAKKyAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgCisgICAgMjQ4LCAyNDgsIDI0NSwgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAogICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAotICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAorICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKKyAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCisgICAgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIAorICAgIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAKLSAgICAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIAotICAgIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNDcsIDI0OCwgMjQ4LCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDI2MSwgMTcwLCAxNzAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjQ3LCAyNDgsIDI0OCwgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAogICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKICAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCiAgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAogICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKICAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCiAgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMCwgMjY2LCAyNjYsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNzAsIDE3MCwgCisgICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMCwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDUsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI2NiwgMjY3LCAyNjcsIAorICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCkBAIC0xOTM0LDE3ICsyMDU3LDE4IEBACiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI2OCwgCiAgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI0NSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMTk1NywyMCArMjA4MSwyMCBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMTk3OSwxNCArMjEwMywxNCBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCisgICAgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKICAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCiAgICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAogICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCiAgICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCkBAIC0xOTk0LDc3ICsyMTE4LDgwIEBACiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAogICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCA4MSwgODEsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNzEsIDI3MSwgNDQsIDQ3LCA0NCwgCi0gICAgNDcsIDAsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI3MSwgMjcxLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDgsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA4MywgODMsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCAKLSAgICA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIAorICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgCisgICAgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCiAgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCi0gICAgNDgsIDEzOSwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgCi0gICAgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAKLSAgICAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgCisgICAgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgCiAgICAgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIApAQCAtMjE1OSw3ICsyMjg2LDcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxOTUsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc5LCAxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjE3MywxMiArMjMwMCwxMiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDI4MCwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAogICAgIDcxLCA3MSwgNzEsIDcxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjgzLCAyODEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIAotICAgIDI4NCwgMjg0LCAyODUsIDI4NSwgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAKLSAgICAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyNDcsIDI0NywgMjgyLCAyODMsIDI4MSwgMjgxLCAyODEsIDI4MSwgCi0gICAgMjg1LCAyODUsIDI4NSwgMjg2LCAyODEsIDI4NiwgMCwgMjgxLCAyODYsIDI4MSwgMjgxLCAyODQsIDI4NywgMjg4LCAyODcsIAotICAgIDI4OCwgMjg3LCAyODgsIDI4OSwgMjgxLCAyODEsIDI5MCwgMjkxLCAyOTIsIDI5MiwgMjkzLCAwLCAyODEsIDI5NCwgMjg5LCAKLSAgICAyODEsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgCisgICAgODEsIDI4MSwgMjg0LCAyODQsIDI4NSwgMjg1LCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAKKyAgICAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI0NywgMjQ3LCAyODIsIDI4MywgMjgxLCAyODEsIDI4MSwgCisgICAgMjgxLCAyODUsIDI4NSwgMjg1LCAyODYsIDI4MSwgMjg2LCAwLCAyODEsIDI4NiwgMjgxLCAyODEsIDI4NCwgMjg3LCAyODgsIAorICAgIDI4NywgMjg4LCAyODcsIDI4OCwgMjg5LCAyODEsIDI4MSwgMjkwLCAyOTEsIDI5MiwgMjkyLCAyOTMsIDAsIDI4MSwgMjk0LCAKKyAgICAyODksIDI4MSwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMTg4LDcyICsyMzE1LDc5IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgMjk4LCAKLSAgICAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgCisgICAgMjk4LCAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAorICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAKICAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAzMDcsIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIDMwNSwgCi0gICAgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAyOTgsIDI5NSwgMjk5LCAzMDcsIDMwOCwgCisgICAgMzA3LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMjk4LCAKKyAgICAzMDUsIDI5OSwgMzA1LCAyOTgsIDI5OSwgMzEwLCAzMTEsIDMxMiwgMzEwLCAzMTAsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAogICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKICAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAzMTMsIAorICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAKICAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIAotICAgIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDAsIDI5NywgCi0gICAgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgMzE2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKKyAgICAzMTMsIDAsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIAorICAgIDAsIDI5NywgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgCisgICAgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCisgICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCiAgICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAogICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKICAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKQEAgLTIyNjYsMjk4ICsyNDAwLDQ4NyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMCwgMTA0LCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIAorICAgIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAwLCAwLCAKKyAgICAwLCAxNDIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMzIxLCAzMjEsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIDAsIDAsIDAsIDE0MiwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAKLSAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjAsIDMyMCwgCi0gICAgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMCwgMCwgMCwgMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCisgICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAorICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKKyAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMCwgMTM5LCAxMzUsIDEzOSwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDE0MiwgMTQxLCA4MywgODMsIDE4OCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDE0OSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTUwLCAxNTAsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDE0MiwgMTQyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCAKLSAgICA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDgzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAotICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDE0MiwgMTQxLCA4MywgODMsIDE4OCwgODMsIAorICAgIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTUwLCAxNTAsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTQyLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgODMsIAorICAgIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM5LCAxNzUsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA4MywgODMsIDE0NSwgMTM1LCAxMzUsIAorICAgIDgzLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA4MywgNDgsIAorICAgIDgzLCA4MywgODMsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE3NSwgMCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNDksIDE0NywgMTQ3LCAxNDYsIAorICAgIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAxNDUsIDQ4LCA0OCwgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ2LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIDEzOSwgMTQ3LCAxNDcsIDEzNSwgMTM1LCAxMzksIDE0MiwgCisgICAgMTQ1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTQyLCAxMzUsIDgzLCA4MywgCisgICAgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAKKyAgICAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgCisgICAgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIAorICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI3LCAzMjcsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIDMyOCwgMzI3LCAzMjcsIDMyNywgMzI3LCAzMjcsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCAKKyAgICA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIzLCAzMjMsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIAotICAgIDMyNCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgCi0gICAgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIAotICAgIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIAotICAgIDQ5LCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAKKyAgICAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgCisgICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAotICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgCi0gICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMTMxLCAwLCAxMzEsIAotICAgIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgCi0gICAgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAorICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKKyAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCisgICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAorICAgIDMzMCwgMzMwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgCisgICAgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKKyAgICAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgCisgICAgMCwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgCisgICAgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzI3LCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMxLCAwLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzI4LCAKLSAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgCi0gICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIAotICAgIDMyOCwgMzI4LCAzMjgsIDI0MSwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAwLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAyNDEsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIAogICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKICAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIAorICAgIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCkBAIC0yNTY2LDYwICsyODg5LDc2IEBACiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIApAQCAtMzE0NiwzNTkgKzM0ODUsMzU1IEBACiAgICAgNTAsIDQ5LCAyNjA4NSwgNzcwLCA1MCwgNTAsIDI2MDg1LCA3NzAsIDUwLCA1MSwgMjYwODUsIDc3MCwgNTAsIDUyLCAKICAgICAyNjA4NSwgNzcwLCA1MCwgNTMsIDI2MDg1LCA3NzAsIDUwLCA1NCwgMjYwODUsIDc3MCwgNTAsIDU1LCAyNjA4NSwgNzcwLCAKICAgICA1MCwgNTYsIDI2MDg1LCA3NzAsIDUwLCA1NywgMjYwODUsIDc3MCwgNTEsIDQ4LCAyNjA4NSwgNzcwLCA1MSwgNDksIAotICAgIDI2MDg1LCA3NzgsIDEwMywgOTcsIDEwOCwgMjU5LCA0Mjg2MywgMjU5LCAyOTQsIDI1OSwgMzM5LCAyNTYsIDM1OTEyLCAKLSAgICAyNTYsIDI2MzU2LCAyNTYsIDM2NTU0LCAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAKLSAgICAyNTYsIDQwODYwLCAyNTYsIDQwODYwLCAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAKLSAgICAyNTYsIDI1MDc4LCAyNTYsIDMwMzEzLCAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAKLSAgICAyNTYsIDM3MDA3LCAyNTYsIDI3MTM4LCAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAKLSAgICAyNTYsIDM3MjI2LCAyNTYsIDM5NDA5LCAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAKLSAgICAyNTYsIDM0MzQ5LCAyNTYsIDQwNDc4LCAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAKLSAgICAyNTYsIDI1Mjg5LCAyNTYsIDMzMjQwLCAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAKLSAgICAyNTYsIDI5NDM2LCAyNTYsIDM3MDcwLCAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAKLSAgICAyNTYsIDI3MzQ3LCAyNTYsIDI5MjAwLCAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAKLSAgICAyNTYsIDM2MzM1LCAyNTYsIDM4NzA2LCAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAKLSAgICAyNTYsIDMyMTYwLCAyNTYsIDMzNzM3LCAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAKLSAgICAyNTYsIDI0MzI0LCAyNTYsIDMxODQwLCAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAKLSAgICAyNTYsIDM4NjQ3LCAyNTYsIDIyNzQ0LCAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAKLSAgICAyNTYsIDMyMDQ3LCAyNTYsIDMyMzExLCAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAKLSAgICAyNTYsIDIwOTQwLCAyNTYsIDMxMjYwLCAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAKLSAgICAyNTYsIDI1Mjk1LCAyNTYsIDI3MTM4LCAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAKLSAgICAyNTYsIDI5NTc1LCAyNTYsIDMwMDY0LCAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAKLSAgICAyNTYsIDE5OTgxLCAyNTYsIDI3ODUyLCAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAKLSAgICAyNTYsIDMwNDY1LCAyNTYsIDMzODY1LCAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAKLSAgICAyNTYsIDI1MzQyLCAyNTYsIDMzNTA5LCAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAKLSAgICAyNTYsIDIwOTM3LCAyNTYsIDI2NzUzLCAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAKLSAgICAyNTYsIDIxMjM3LCAyNTYsIDIxNTcwLCAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAKLSAgICAyNTYsIDMxMDE4LCAyNTYsIDM4MzE3LCAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAKLSAgICAyNTYsIDI2MzEwLCAyNTYsIDI3NTExLCAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAKLSAgICAyNTYsIDI1NzU0LCAyNTYsIDI4NDUxLCAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAKLSAgICAyNTYsIDMyODc5LCAyNTYsIDM2NjQ2LCAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAKLSAgICAyNTYsIDIxMTU1LCAyNTYsIDIxNjkzLCAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAKLSAgICAyNTYsIDI0NTY1LCAyNTYsIDI1NDY3LCAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAKLSAgICAyNTYsIDIyMjY1LCAyNTYsIDIzNTI3LCAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAKLSAgICAyNTYsIDMyNjY2LCAyNTYsIDMyODM4LCAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAKLSAgICAyNTYsIDIwMzYzLCAyNTYsIDMxMTUwLCAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAKLSAgICAyNTYsIDIwNjk4LCAyNTYsIDIzNTM0LCAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAKLSAgICAyNTYsIDMwMjc0LCAyNTYsIDM0MDQ0LCAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAKLSAgICAyNTYsIDIxMTI5LCAyNTYsIDI2NDkxLCAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAKLSAgICAyNTYsIDMwMDQxLCAyNTYsIDMwODI3LCAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAKLSAgICAyNTYsIDM4NTIwLCAyNTYsIDIwNTIzLCAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAKLSAgICAyNTYsIDI0OTAwLCAyNTYsIDI2NjQ3LCAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAKLSAgICAyNTYsIDIzNjUzLCAyNTYsIDI2MTMxLCAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAKLSAgICAyNTYsIDMwMTc4LCAyNTYsIDMyNjMzLCAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAKLSAgICAyNTYsIDIxMzExLCAyNTYsIDI4MzQ2LCAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAKLSAgICAyNTYsIDM4NTYzLCAyNTYsIDQwMDIzLCAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAKLSAgICAyNTYsIDMxNDM1LCAyNTYsIDMxNTIwLCAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAKLSAgICAyNTYsIDIwMTYwLCAyNTYsIDMzNTkwLCAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAKLSAgICAyNTYsIDMxOTU4LCAyNTYsIDIzNDI5LCAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAKLSAgICAyNTYsIDM4NDc3LCAyNTYsIDM1MjExLCAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAKLSAgICAyNTYsIDI2MjI4LCAyNTYsIDIwOTU4LCAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAKLSAgICAyNTYsIDMxMDc3LCAyNTYsIDMxMTE5LCAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAKLSAgICAyNTYsIDM1NTc2LCAyNTYsIDM2OTIwLCAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAKLSAgICAyNTYsIDQwMzcyLCAyNTYsIDM3MDg2LCAyNTYsIDM4NTgzLCAyNTYsIDIwMzk4LCAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAKLSAgICAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAKLSAgICAyNTYsIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAKLSAgICAyNTYsIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAKLSAgICAyNTYsIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAKLSAgICAyNTYsIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAKLSAgICAyNTYsIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAKLSAgICAyNTYsIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAKLSAgICAyNTYsIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAKLSAgICAyNTYsIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAKLSAgICAyNTYsIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgCi0gICAgMjU2LCAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgCi0gICAgMjU2LCAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgCi0gICAgMjU2LCAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgCi0gICAgMjU2LCAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgCi0gICAgMjU2LCAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgCi0gICAgMjU2LCAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgCi0gICAgMjU2LCAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgCi0gICAgMjU2LCAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgCi0gICAgMjU2LCAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgCi0gICAgMjU2LCAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgCi0gICAgMjU2LCAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgCi0gICAgMjU2LCAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgCi0gICAgMjU2LCAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgCi0gICAgMjU2LCAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgCi0gICAgMjU2LCAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgCi0gICAgMjU2LCAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAKLSAgICAyNTYsIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgCi0gICAgMTU0ODMyLCAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIAotICAgIDEwNSwgNTE0LCAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAKLSAgICAxMTYsIDUxNCwgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIAotICAgIDUxNCwgMTQwNiwgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAKLSAgICAxNTA2LCAyNjIsIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAKLSAgICAyNjIsIDE1MTIsIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgCi0gICAgNjQzMjksIDE0NzMsIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIAotICAgIDE0ODgsIDE0NjgsIDUxMiwgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgCi0gICAgMTQ2OCwgNTEyLCAxNDkzLCAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCAKLSAgICA1MTIsIDE0OTgsIDE0NjgsIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgCi0gICAgMTUwNCwgMTQ2OCwgNTEyLCAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAKLSAgICAxNDY4LCA1MTIsIDE1MTEsIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIAotICAgIDUxMiwgMTQ5MywgMTQ2NSwgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAKLSAgICAxNDg4LCAxNTAwLCAyNjcsIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAKLSAgICAxNjU5LCAyNjcsIDE2NjIsIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAKLSAgICAyNjksIDE2NjQsIDI3MCwgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIAotICAgIDE2NjMsIDI2OCwgMTY2MywgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgMjY4LCAxNjU3LCAyNjksIDE2NTcsIAotICAgIDI3MCwgMTY1NywgMjY3LCAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgCi0gICAgMTcwMiwgMjY5LCAxNzAyLCAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAyNjksIDE2NjgsIDI3MCwgMTY2OCwgCi0gICAgMjY3LCAxNjY3LCAyNjgsIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAKLSAgICAxNjcwLCAyNzAsIDE2NzAsIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAKLSAgICAyNjgsIDE2NzcsIDI2NywgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIAotICAgIDE2NzIsIDI2NywgMTY4OCwgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIAotICAgIDI2OSwgMTcwNSwgMjcwLCAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAxNzExLCAyNzAsIDE3MTEsIDI2NywgCi0gICAgMTcxNSwgMjY4LCAxNzE1LCAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAyNjgsIDE3MTMsIDI2OSwgMTcxMywgCi0gICAgMjcwLCAxNzEzLCAyNjcsIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAKLSAgICAxNzIzLCAyNjcsIDE3MjgsIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAKLSAgICAyNjcsIDE3MjYsIDI2OCwgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIAotICAgIDE3NDcsIDI2OCwgMTc0NywgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIAotICAgIDI2OCwgMTczNSwgMjY3LCAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAxNzM2LCAyNjcsIDE2NTUsIDI2NywgCi0gICAgMTczOSwgMjY4LCAxNzM5LCAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAyNjgsIDE3MzcsIDI2NywgMTc0NCwgCi0gICAgMjY4LCAxNzQ0LCAyNjksIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgCi0gICAgNTI0LCAxNTc0LCAxNTc1LCA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIAotICAgIDE1NzQsIDE2MDgsIDUyMywgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgCi0gICAgMTczNCwgNTIzLCAxNTc0LCAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCAKLSAgICA1MjUsIDE1NzQsIDE3NDQsIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCA1MjUsIDE1NzQsIDE2MDksIDI2NywgCi0gICAgMTc0MCwgMjY4LCAxNzQwLCAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIAotICAgIDUyMywgMTU3NCwgMTYwNSwgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAKLSAgICAxNTc2LCAxNTgxLCA1MjMsIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIAotICAgIDE2MTAsIDUyMywgMTU3OCwgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgCi0gICAgNTIzLCAxNTc4LCAxNjA5LCA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIAotICAgIDE1NzksIDE2MDksIDUyMywgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgCi0gICAgMTU4MCwgNTIzLCAxNTgxLCAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCAKLSAgICA1MjMsIDE1ODcsIDE1ODAsIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCA1MjMsIDE1ODcsIDE2MDUsIDUyMywgCi0gICAgMTU4OSwgMTU4MSwgNTIzLCAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAKLSAgICAxNTgyLCA1MjMsIDE1OTAsIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIAotICAgIDUyMywgMTU5MywgMTU4MCwgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAKLSAgICAxNjAxLCAxNTgwLCA1MjMsIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIAotICAgIDE2MDksIDUyMywgMTYwMSwgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgCi0gICAgNTIzLCAxNjAyLCAxNjEwLCA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIAotICAgIDE2MDMsIDE1ODIsIDUyMywgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIDE2MDMsIDE2MDksIDUyMywgMTYwMywgCi0gICAgMTYxMCwgNTIzLCAxNjA0LCAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCAKLSAgICA1MjMsIDE2MDQsIDE2MDksIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCA1MjMsIDE2MDUsIDE1ODEsIDUyMywgCi0gICAgMTYwNSwgMTU4MiwgNTIzLCAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAKLSAgICAxNTgwLCA1MjMsIDE2MDYsIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIAotICAgIDUyMywgMTYwNiwgMTYxMCwgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIDUyMywgMTYwNywgMTYwOSwgNTIzLCAKLSAgICAxNjA3LCAxNjEwLCA1MjMsIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIAotICAgIDE2MDUsIDUyMywgMTYxMCwgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgCi0gICAgNTIzLCAxNjA5LCAxNjQ4LCA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAKLSAgICAxNjE3LCA3NzksIDMyLCAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIAotICAgIDE1NzQsIDE1ODUsIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgCi0gICAgMTYwOSwgNTI0LCAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCAKLSAgICA1MjQsIDE1NzYsIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgCi0gICAgMTU3OCwgMTU4NiwgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAKLSAgICAxNjEwLCA1MjQsIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIAotICAgIDUyNCwgMTU3OSwgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAKLSAgICAxNjAyLCAxNjA5LCA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIAotICAgIDE2MDUsIDUyNCwgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgCi0gICAgNTI0LCAxNjA0LCAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIAotICAgIDE2MDYsIDE1ODYsIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgCi0gICAgMTYxMCwgNTI0LCAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCAKLSAgICA1MjQsIDE2MTAsIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgCi0gICAgMTU3NCwgMTU4MSwgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAKLSAgICAxNTgwLCA1MjUsIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIAotICAgIDUyNSwgMTU3OCwgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAKLSAgICAxNTc4LCAxNjA3LCA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIAotICAgIDE1ODAsIDUyNSwgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgCi0gICAgNTI1LCAxNTg3LCAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIAotICAgIDE1ODksIDE1ODIsIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgCi0gICAgMTU4MiwgNTI1LCAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCAKLSAgICA1MjUsIDE1OTMsIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgCi0gICAgMTYwMSwgMTU4MSwgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAKLSAgICAxNjA1LCA1MjUsIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIAotICAgIDUyNSwgMTYwMywgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAKLSAgICAxNjA0LCAxNjA1LCA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIAotICAgIDE1ODIsIDUyNSwgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgCi0gICAgNTI1LCAxNjA2LCAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIAotICAgIDE2MDcsIDE2NDgsIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgCi0gICAgMTYwNSwgNTI1LCAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCAKLSAgICA1MjYsIDE1NzYsIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgCi0gICAgMTU3OSwgMTYwNywgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAKLSAgICAxNjA3LCA1MjYsIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIAotICAgIDUyNiwgMTYwNiwgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgCi0gICAgNzgyLCAxNjAwLCAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAKLSAgICAxNjEwLCA1MjMsIDE1OTMsIDE2MDksIDUyMywgMTU5MywgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIAotICAgIDUyMywgMTU4NywgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAKLSAgICAxNTgxLCAxNjA5LCA1MjMsIDE1ODEsIDE2MTAsIDUyMywgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIAotICAgIDE2MDksIDUyMywgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgCi0gICAgNTIzLCAxNTkwLCAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIAotICAgIDE1ODgsIDE2MDUsIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgCi0gICAgMTU4NSwgNTI0LCAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCAKLSAgICA1MjQsIDE1OTQsIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgCi0gICAgMTU4OCwgMTYwOSwgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAKLSAgICAxNjA5LCA1MjQsIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIAotICAgIDUyNCwgMTU4OSwgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAKLSAgICAxNTg4LCAxNTgxLCA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIAotICAgIDE1ODUsIDUyNCwgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgCi0gICAgNTI1LCAxNTg4LCAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIAotICAgIDE1OTEsIDE2MDUsIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgCi0gICAgMTU4MCwgNTI2LCAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCAKLSAgICA1MjQsIDE1NzUsIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIAotICAgIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIAotICAgIDE2MDUsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIAotICAgIDE1ODIsIDc4MCwgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIAotICAgIDE1ODEsIDc4MCwgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIAotICAgIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIAotICAgIDE2MDUsIDc4MCwgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIAotICAgIDE2MDUsIDc4MCwgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIAotICAgIDE2MTAsIDc4MCwgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIAotICAgIDE2MDUsIDc4MSwgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIAotICAgIDE2MDUsIDc4MSwgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIAotICAgIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIAotICAgIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIAotICAgIDE1ODEsIDc4MCwgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIAotICAgIDE2MTAsIDc4MCwgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIAotICAgIDE1ODAsIDc4MCwgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIAotICAgIDE1ODEsIDc4MSwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIAotICAgIDE2MDUsIDc4MCwgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIAotICAgIDE2MDUsIDc4MSwgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIAotICAgIDE1ODIsIDc4MSwgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIAotICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIAotICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIAotICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIAotICAgIDE2MTAsIDc4MCwgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIAotICAgIDE2MDksIDc4MCwgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIAotICAgIDE2MTAsIDc4MCwgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIAotICAgIDE2MTAsIDc4MSwgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIAotICAgIDE2MTAsIDc4MCwgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIAotICAgIDE2MTAsIDc4MSwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIAotICAgIDE2MDUsIDc4MCwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIAotICAgIDE2MTAsIDc4MCwgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIAotICAgIDE2MTAsIDc4MSwgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIAotICAgIDE2MDUsIDc4MCwgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIAotICAgIDE3NDYsIDc3OSwgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgCi0gICAgMTYwMywgMTU3NiwgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgCi0gICAgMTYwNSwgMTAzNSwgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgCi0gICAgMTYwOCwgMTU4NywgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAKLSAgICAzMiwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAKLSAgICAxNjA0LCAxNjA1LCAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgCi0gICAgMTU4NSwgMTc0MCwgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCAKLSAgICA1OSwgMjY1LCAzMywgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgCi0gICAgODIxMiwgMjY1LCA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIAotICAgIDI2NSwgMTIzMDgsIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIAotICAgIDI2NSwgMTIyOTYsIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIAotICAgIDI2NSwgOTEsIDI2NSwgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgCi0gICAgMjU4LCA5NSwgMjU4LCA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCAKLSAgICA2MywgMjcxLCAzMywgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIAotICAgIDI3MSwgMTIzMDksIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgCi0gICAgNjIsIDI3MSwgNjEsIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgCi0gICAgMTYwMCwgMTYxMSwgNTIzLCAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCAKLSAgICA1MjMsIDMyLCAxNjE1LCA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgCi0gICAgMTYxNywgNTI2LCAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAKLSAgICAxNTcwLCAyNjgsIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAKLSAgICAyNjgsIDE1NzMsIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIAotICAgIDE1NzUsIDI2NywgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIAotICAgIDI2NywgMTU3OCwgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgCi0gICAgMTU3OSwgMjcwLCAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgCi0gICAgMjY4LCAxNTgxLCAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAKLSAgICAxNTgyLCAyNjcsIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAKLSAgICAyNjcsIDE1ODYsIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIAotICAgIDE1ODgsIDI2OCwgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIAotICAgIDI3MCwgMTU4OSwgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgCi0gICAgMTU5MSwgMjY5LCAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgCi0gICAgMjY3LCAxNTkzLCAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAKLSAgICAxNTk0LCAyNzAsIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAKLSAgICAyNjgsIDE2MDIsIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIAotICAgIDE2MDMsIDI2NywgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIAotICAgIDI2OSwgMTYwNSwgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgCi0gICAgMTYwNywgMjY4LCAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgCi0gICAgMjY4LCAxNjA5LCAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgCi0gICAgNTI0LCAxNjA0LCAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIAotICAgIDE2MDQsIDE1NzMsIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAKLSAgICAyNjQsIDM2LCAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAKLSAgICAyNjQsIDQ0LCAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAKLSAgICAyNjQsIDUyLCAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAKLSAgICAyNjQsIDYwLCAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAKLSAgICAyNjQsIDY4LCAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAKLSAgICAyNjQsIDc2LCAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAKLSAgICAyNjQsIDg0LCAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAKLSAgICAyNjQsIDkyLCAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAKLSAgICAyNjQsIDEwMCwgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgCi0gICAgMjY0LCAxMDcsIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIAotICAgIDI2NCwgMTE0LCAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAKLSAgICAyNjQsIDEyMSwgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAKLSAgICAyNjQsIDEwNjMwLCAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAKLSAgICAyNzIsIDEyNTMwLCAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAKLSAgICAyNzIsIDEyNTE1LCAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAKLSAgICAyNzIsIDEyNDUyLCAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAKLSAgICAyNzIsIDEyNDYzLCAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAKLSAgICAyNzIsIDEyNDc1LCAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAKLSAgICAyNzIsIDEyNDg4LCAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAKLSAgICAyNzIsIDEyNDk1LCAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAKLSAgICAyNzIsIDEyNTExLCAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAKLSAgICAyNzIsIDEyNTIwLCAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAKLSAgICAyNzIsIDEyNTI3LCAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAKLSAgICAyNzIsIDEyNTk0LCAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAKLSAgICAyNzIsIDEyNjAwLCAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAKLSAgICAyNzIsIDEyNjA2LCAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAKLSAgICAyNzIsIDEyNjEyLCAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAKLSAgICAyNzIsIDEyNjE4LCAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAKLSAgICAyNzIsIDEyNjI0LCAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAKLSAgICAyNzIsIDEyNjMwLCAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAKLSAgICAyNzIsIDEyNjM2LCAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAKLSAgICAyNzIsIDEyNjQyLCAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIAotICAgIDI2NCwgMTY1LCAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCAKLSAgICA4NTk1LCAyNzIsIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIAotICAgIDY5Nzk3LCA2OTgxOCwgNTEyLCA2OTkzNywgNjk5MjcsIDUxMiwgNjk5MzgsIDY5OTI3LCA1MTIsIDExOTEyNywgMTE5MTQxLCAKLSAgICA1MTIsIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIAotICAgIDExOTEzNSwgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgCi0gICAgMTE5MTQxLCA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCAKLSAgICA1MTIsIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIAotICAgIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIAotICAgIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIAotICAgIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIAotICAgIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAKLSAgICAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgCi0gICAgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIAotICAgIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgCi0gICAgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgCi0gICAgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgCi0gICAgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgCi0gICAgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKLSAgICAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgCi0gICAgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIAotICAgIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAKLSAgICAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAKLSAgICAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAKLSAgICAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIAotICAgIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAKKyAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgMTA5OCwgMjU5LCAxMTAwLCAyNTksIDQyODYzLCAyNTksIDI5NCwgCisgICAgMjU5LCAzMzksIDI1OSwgNDI3OTEsIDI1OSwgNDM4MzEsIDI1OSwgNjE5LCAyNTksIDQzODU4LCAyNTYsIDM1OTEyLCAyNTYsIAorICAgIDI2MzU2LCAyNTYsIDM2NTU0LCAyNTYsIDM2MDQwLCAyNTYsIDI4MzY5LCAyNTYsIDIwMDE4LCAyNTYsIDIxNDc3LCAyNTYsIAorICAgIDQwODYwLCAyNTYsIDQwODYwLCAyNTYsIDIyODY1LCAyNTYsIDM3MzI5LCAyNTYsIDIxODk1LCAyNTYsIDIyODU2LCAyNTYsIAorICAgIDI1MDc4LCAyNTYsIDMwMzEzLCAyNTYsIDMyNjQ1LCAyNTYsIDM0MzY3LCAyNTYsIDM0NzQ2LCAyNTYsIDM1MDY0LCAyNTYsIAorICAgIDM3MDA3LCAyNTYsIDI3MTM4LCAyNTYsIDI3OTMxLCAyNTYsIDI4ODg5LCAyNTYsIDI5NjYyLCAyNTYsIDMzODUzLCAyNTYsIAorICAgIDM3MjI2LCAyNTYsIDM5NDA5LCAyNTYsIDIwMDk4LCAyNTYsIDIxMzY1LCAyNTYsIDI3Mzk2LCAyNTYsIDI5MjExLCAyNTYsIAorICAgIDM0MzQ5LCAyNTYsIDQwNDc4LCAyNTYsIDIzODg4LCAyNTYsIDI4NjUxLCAyNTYsIDM0MjUzLCAyNTYsIDM1MTcyLCAyNTYsIAorICAgIDI1Mjg5LCAyNTYsIDMzMjQwLCAyNTYsIDM0ODQ3LCAyNTYsIDI0MjY2LCAyNTYsIDI2MzkxLCAyNTYsIDI4MDEwLCAyNTYsIAorICAgIDI5NDM2LCAyNTYsIDM3MDcwLCAyNTYsIDIwMzU4LCAyNTYsIDIwOTE5LCAyNTYsIDIxMjE0LCAyNTYsIDI1Nzk2LCAyNTYsIAorICAgIDI3MzQ3LCAyNTYsIDI5MjAwLCAyNTYsIDMwNDM5LCAyNTYsIDMyNzY5LCAyNTYsIDM0MzEwLCAyNTYsIDM0Mzk2LCAyNTYsIAorICAgIDM2MzM1LCAyNTYsIDM4NzA2LCAyNTYsIDM5NzkxLCAyNTYsIDQwNDQyLCAyNTYsIDMwODYwLCAyNTYsIDMxMTAzLCAyNTYsIAorICAgIDMyMTYwLCAyNTYsIDMzNzM3LCAyNTYsIDM3NjM2LCAyNTYsIDQwNTc1LCAyNTYsIDM1NTQyLCAyNTYsIDIyNzUxLCAyNTYsIAorICAgIDI0MzI0LCAyNTYsIDMxODQwLCAyNTYsIDMyODk0LCAyNTYsIDI5MjgyLCAyNTYsIDMwOTIyLCAyNTYsIDM2MDM0LCAyNTYsIAorICAgIDM4NjQ3LCAyNTYsIDIyNzQ0LCAyNTYsIDIzNjUwLCAyNTYsIDI3MTU1LCAyNTYsIDI4MTIyLCAyNTYsIDI4NDMxLCAyNTYsIAorICAgIDMyMDQ3LCAyNTYsIDMyMzExLCAyNTYsIDM4NDc1LCAyNTYsIDIxMjAyLCAyNTYsIDMyOTA3LCAyNTYsIDIwOTU2LCAyNTYsIAorICAgIDIwOTQwLCAyNTYsIDMxMjYwLCAyNTYsIDMyMTkwLCAyNTYsIDMzNzc3LCAyNTYsIDM4NTE3LCAyNTYsIDM1NzEyLCAyNTYsIAorICAgIDI1Mjk1LCAyNTYsIDI3MTM4LCAyNTYsIDM1NTgyLCAyNTYsIDIwMDI1LCAyNTYsIDIzNTI3LCAyNTYsIDI0NTk0LCAyNTYsIAorICAgIDI5NTc1LCAyNTYsIDMwMDY0LCAyNTYsIDIxMjcxLCAyNTYsIDMwOTcxLCAyNTYsIDIwNDE1LCAyNTYsIDI0NDg5LCAyNTYsIAorICAgIDE5OTgxLCAyNTYsIDI3ODUyLCAyNTYsIDI1OTc2LCAyNTYsIDMyMDM0LCAyNTYsIDIxNDQzLCAyNTYsIDIyNjIyLCAyNTYsIAorICAgIDMwNDY1LCAyNTYsIDMzODY1LCAyNTYsIDM1NDk4LCAyNTYsIDI3NTc4LCAyNTYsIDM2Nzg0LCAyNTYsIDI3Nzg0LCAyNTYsIAorICAgIDI1MzQyLCAyNTYsIDMzNTA5LCAyNTYsIDI1NTA0LCAyNTYsIDMwMDUzLCAyNTYsIDIwMTQyLCAyNTYsIDIwODQxLCAyNTYsIAorICAgIDIwOTM3LCAyNTYsIDI2NzUzLCAyNTYsIDMxOTc1LCAyNTYsIDMzMzkxLCAyNTYsIDM1NTM4LCAyNTYsIDM3MzI3LCAyNTYsIAorICAgIDIxMjM3LCAyNTYsIDIxNTcwLCAyNTYsIDIyODk5LCAyNTYsIDI0MzAwLCAyNTYsIDI2MDUzLCAyNTYsIDI4NjcwLCAyNTYsIAorICAgIDMxMDE4LCAyNTYsIDM4MzE3LCAyNTYsIDM5NTMwLCAyNTYsIDQwNTk5LCAyNTYsIDQwNjU0LCAyNTYsIDIxMTQ3LCAyNTYsIAorICAgIDI2MzEwLCAyNTYsIDI3NTExLCAyNTYsIDM2NzA2LCAyNTYsIDI0MTgwLCAyNTYsIDI0OTc2LCAyNTYsIDI1MDg4LCAyNTYsIAorICAgIDI1NzU0LCAyNTYsIDI4NDUxLCAyNTYsIDI5MDAxLCAyNTYsIDI5ODMzLCAyNTYsIDMxMTc4LCAyNTYsIDMyMjQ0LCAyNTYsIAorICAgIDMyODc5LCAyNTYsIDM2NjQ2LCAyNTYsIDM0MDMwLCAyNTYsIDM2ODk5LCAyNTYsIDM3NzA2LCAyNTYsIDIxMDE1LCAyNTYsIAorICAgIDIxMTU1LCAyNTYsIDIxNjkzLCAyNTYsIDI4ODcyLCAyNTYsIDM1MDEwLCAyNTYsIDM1NDk4LCAyNTYsIDI0MjY1LCAyNTYsIAorICAgIDI0NTY1LCAyNTYsIDI1NDY3LCAyNTYsIDI3NTY2LCAyNTYsIDMxODA2LCAyNTYsIDI5NTU3LCAyNTYsIDIwMTk2LCAyNTYsIAorICAgIDIyMjY1LCAyNTYsIDIzNTI3LCAyNTYsIDIzOTk0LCAyNTYsIDI0NjA0LCAyNTYsIDI5NjE4LCAyNTYsIDI5ODAxLCAyNTYsIAorICAgIDMyNjY2LCAyNTYsIDMyODM4LCAyNTYsIDM3NDI4LCAyNTYsIDM4NjQ2LCAyNTYsIDM4NzI4LCAyNTYsIDM4OTM2LCAyNTYsIAorICAgIDIwMzYzLCAyNTYsIDMxMTUwLCAyNTYsIDM3MzAwLCAyNTYsIDM4NTg0LCAyNTYsIDI0ODAxLCAyNTYsIDIwMTAyLCAyNTYsIAorICAgIDIwNjk4LCAyNTYsIDIzNTM0LCAyNTYsIDIzNjE1LCAyNTYsIDI2MDA5LCAyNTYsIDI3MTM4LCAyNTYsIDI5MTM0LCAyNTYsIAorICAgIDMwMjc0LCAyNTYsIDM0MDQ0LCAyNTYsIDM2OTg4LCAyNTYsIDQwODQ1LCAyNTYsIDI2MjQ4LCAyNTYsIDM4NDQ2LCAyNTYsIAorICAgIDIxMTI5LCAyNTYsIDI2NDkxLCAyNTYsIDI2NjExLCAyNTYsIDI3OTY5LCAyNTYsIDI4MzE2LCAyNTYsIDI5NzA1LCAyNTYsIAorICAgIDMwMDQxLCAyNTYsIDMwODI3LCAyNTYsIDMyMDE2LCAyNTYsIDM5MDA2LCAyNTYsIDIwODQ1LCAyNTYsIDI1MTM0LCAyNTYsIAorICAgIDM4NTIwLCAyNTYsIDIwNTIzLCAyNTYsIDIzODMzLCAyNTYsIDI4MTM4LCAyNTYsIDM2NjUwLCAyNTYsIDI0NDU5LCAyNTYsIAorICAgIDI0OTAwLCAyNTYsIDI2NjQ3LCAyNTYsIDI5NTc1LCAyNTYsIDM4NTM0LCAyNTYsIDIxMDMzLCAyNTYsIDIxNTE5LCAyNTYsIAorICAgIDIzNjUzLCAyNTYsIDI2MTMxLCAyNTYsIDI2NDQ2LCAyNTYsIDI2NzkyLCAyNTYsIDI3ODc3LCAyNTYsIDI5NzAyLCAyNTYsIAorICAgIDMwMTc4LCAyNTYsIDMyNjMzLCAyNTYsIDM1MDIzLCAyNTYsIDM1MDQxLCAyNTYsIDM3MzI0LCAyNTYsIDM4NjI2LCAyNTYsIAorICAgIDIxMzExLCAyNTYsIDI4MzQ2LCAyNTYsIDIxNTMzLCAyNTYsIDI5MTM2LCAyNTYsIDI5ODQ4LCAyNTYsIDM0Mjk4LCAyNTYsIAorICAgIDM4NTYzLCAyNTYsIDQwMDIzLCAyNTYsIDQwNjA3LCAyNTYsIDI2NTE5LCAyNTYsIDI4MTA3LCAyNTYsIDMzMjU2LCAyNTYsIAorICAgIDMxNDM1LCAyNTYsIDMxNTIwLCAyNTYsIDMxODkwLCAyNTYsIDI5Mzc2LCAyNTYsIDI4ODI1LCAyNTYsIDM1NjcyLCAyNTYsIAorICAgIDIwMTYwLCAyNTYsIDMzNTkwLCAyNTYsIDIxMDUwLCAyNTYsIDIwOTk5LCAyNTYsIDI0MjMwLCAyNTYsIDI1Mjk5LCAyNTYsIAorICAgIDMxOTU4LCAyNTYsIDIzNDI5LCAyNTYsIDI3OTM0LCAyNTYsIDI2MjkyLCAyNTYsIDM2NjY3LCAyNTYsIDM0ODkyLCAyNTYsIAorICAgIDM4NDc3LCAyNTYsIDM1MjExLCAyNTYsIDI0Mjc1LCAyNTYsIDIwODAwLCAyNTYsIDIxOTUyLCAyNTYsIDIyNjE4LCAyNTYsIAorICAgIDI2MjI4LCAyNTYsIDIwOTU4LCAyNTYsIDI5NDgyLCAyNTYsIDMwNDEwLCAyNTYsIDMxMDM2LCAyNTYsIDMxMDcwLCAyNTYsIAorICAgIDMxMDc3LCAyNTYsIDMxMTE5LCAyNTYsIDM4NzQyLCAyNTYsIDMxOTM0LCAyNTYsIDMyNzAxLCAyNTYsIDM0MzIyLCAyNTYsIAorICAgIDM1NTc2LCAyNTYsIDM2OTIwLCAyNTYsIDM3MTE3LCAyNTYsIDM5MTUxLCAyNTYsIDM5MTY0LCAyNTYsIDM5MjA4LCAyNTYsIAorICAgIDQwMzcyLCAyNTYsIDM3MDg2LCAyNTYsIDM4NTgzLCAyNTYsIDIwMzk4LCAyNTYsIDIwNzExLCAyNTYsIDIwODEzLCAyNTYsIAorICAgIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMzI5LCAyNTYsIDIxOTE3LCAyNTYsIDIyMDIyLCAyNTYsIDIyMTIwLCAyNTYsIAorICAgIDIyNTkyLCAyNTYsIDIyNjk2LCAyNTYsIDIzNjUyLCAyNTYsIDIzNjYyLCAyNTYsIDI0NzI0LCAyNTYsIDI0OTM2LCAyNTYsIAorICAgIDI0OTc0LCAyNTYsIDI1MDc0LCAyNTYsIDI1OTM1LCAyNTYsIDI2MDgyLCAyNTYsIDI2MjU3LCAyNTYsIDI2NzU3LCAyNTYsIAorICAgIDI4MDIzLCAyNTYsIDI4MTg2LCAyNTYsIDI4NDUwLCAyNTYsIDI5MDM4LCAyNTYsIDI5MjI3LCAyNTYsIDI5NzMwLCAyNTYsIAorICAgIDMwODY1LCAyNTYsIDMxMDM4LCAyNTYsIDMxMDQ5LCAyNTYsIDMxMDQ4LCAyNTYsIDMxMDU2LCAyNTYsIDMxMDYyLCAyNTYsIAorICAgIDMxMDY5LCAyNTYsIDMxMTE3LCAyNTYsIDMxMTE4LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzYxLCAyNTYsIDMxNjgwLCAyNTYsIAorICAgIDMyMjQ0LCAyNTYsIDMyMjY1LCAyNTYsIDMyMzIxLCAyNTYsIDMyNjI2LCAyNTYsIDMyNzczLCAyNTYsIDMzMjYxLCAyNTYsIAorICAgIDMzNDAxLCAyNTYsIDMzNDAxLCAyNTYsIDMzODc5LCAyNTYsIDM1MDg4LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTg1LCAyNTYsIAorICAgIDM1NjQxLCAyNTYsIDM2MDUxLCAyNTYsIDM2MTA0LCAyNTYsIDM2NzkwLCAyNTYsIDM2OTIwLCAyNTYsIDM4NjI3LCAyNTYsIAorICAgIDM4OTExLCAyNTYsIDM4OTcxLCAyNTYsIDI0NjkzLCAyNTYsIDE0ODIwNiwgMjU2LCAzMzMwNCwgMjU2LCAyMDAwNiwgMjU2LCAKKyAgICAyMDkxNywgMjU2LCAyMDg0MCwgMjU2LCAyMDM1MiwgMjU2LCAyMDgwNSwgMjU2LCAyMDg2NCwgMjU2LCAyMTE5MSwgMjU2LCAKKyAgICAyMTI0MiwgMjU2LCAyMTkxNywgMjU2LCAyMTg0NSwgMjU2LCAyMTkxMywgMjU2LCAyMTk4NiwgMjU2LCAyMjYxOCwgMjU2LCAKKyAgICAyMjcwNywgMjU2LCAyMjg1MiwgMjU2LCAyMjg2OCwgMjU2LCAyMzEzOCwgMjU2LCAyMzMzNiwgMjU2LCAyNDI3NCwgMjU2LCAKKyAgICAyNDI4MSwgMjU2LCAyNDQyNSwgMjU2LCAyNDQ5MywgMjU2LCAyNDc5MiwgMjU2LCAyNDkxMCwgMjU2LCAyNDg0MCwgMjU2LCAKKyAgICAyNDk3NCwgMjU2LCAyNDkyOCwgMjU2LCAyNTA3NCwgMjU2LCAyNTE0MCwgMjU2LCAyNTU0MCwgMjU2LCAyNTYyOCwgMjU2LCAKKyAgICAyNTY4MiwgMjU2LCAyNTk0MiwgMjU2LCAyNjIyOCwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQ1NCwgMjU2LCAKKyAgICAyNzUxMywgMjU2LCAyNzU3OCwgMjU2LCAyNzk2OSwgMjU2LCAyODM3OSwgMjU2LCAyODM2MywgMjU2LCAyODQ1MCwgMjU2LCAKKyAgICAyODcwMiwgMjU2LCAyOTAzOCwgMjU2LCAzMDYzMSwgMjU2LCAyOTIzNywgMjU2LCAyOTM1OSwgMjU2LCAyOTQ4MiwgMjU2LCAKKyAgICAyOTgwOSwgMjU2LCAyOTk1OCwgMjU2LCAzMDAxMSwgMjU2LCAzMDIzNywgMjU2LCAzMDIzOSwgMjU2LCAzMDQxMCwgMjU2LCAKKyAgICAzMDQyNywgMjU2LCAzMDQ1MiwgMjU2LCAzMDUzOCwgMjU2LCAzMDUyOCwgMjU2LCAzMDkyNCwgMjU2LCAzMTQwOSwgMjU2LCAKKyAgICAzMTY4MCwgMjU2LCAzMTg2NywgMjU2LCAzMjA5MSwgMjU2LCAzMjI0NCwgMjU2LCAzMjU3NCwgMjU2LCAzMjc3MywgMjU2LCAKKyAgICAzMzYxOCwgMjU2LCAzMzc3NSwgMjU2LCAzNDY4MSwgMjU2LCAzNTEzNywgMjU2LCAzNTIwNiwgMjU2LCAzNTIyMiwgMjU2LCAKKyAgICAzNTUxOSwgMjU2LCAzNTU3NiwgMjU2LCAzNTUzMSwgMjU2LCAzNTU4NSwgMjU2LCAzNTU4MiwgMjU2LCAzNTU2NSwgMjU2LCAKKyAgICAzNTY0MSwgMjU2LCAzNTcyMiwgMjU2LCAzNjEwNCwgMjU2LCAzNjY2NCwgMjU2LCAzNjk3OCwgMjU2LCAzNzI3MywgMjU2LCAKKyAgICAzNzQ5NCwgMjU2LCAzODUyNCwgMjU2LCAzODYyNywgMjU2LCAzODc0MiwgMjU2LCAzODg3NSwgMjU2LCAzODkxMSwgMjU2LCAKKyAgICAzODkyMywgMjU2LCAzODk3MSwgMjU2LCAzOTY5OCwgMjU2LCA0MDg2MCwgMjU2LCAxNDEzODYsIDI1NiwgMTQxMzgwLCAyNTYsIAorICAgIDE0NDM0MSwgMjU2LCAxNTI2MSwgMjU2LCAxNjQwOCwgMjU2LCAxNjQ0MSwgMjU2LCAxNTIxMzcsIDI1NiwgMTU0ODMyLCAKKyAgICAyNTYsIDE2MzUzOSwgMjU2LCA0MDc3MSwgMjU2LCA0MDg0NiwgNTE0LCAxMDIsIDEwMiwgNTE0LCAxMDIsIDEwNSwgNTE0LCAKKyAgICAxMDIsIDEwOCwgNzcwLCAxMDIsIDEwMiwgMTA1LCA3NzAsIDEwMiwgMTAyLCAxMDgsIDUxNCwgMzgzLCAxMTYsIDUxNCwgCisgICAgMTE1LCAxMTYsIDUxNCwgMTM5NiwgMTM5OCwgNTE0LCAxMzk2LCAxMzgxLCA1MTQsIDEzOTYsIDEzODcsIDUxNCwgMTQwNiwgCisgICAgMTM5OCwgNTE0LCAxMzk2LCAxMzg5LCA1MTIsIDE0OTcsIDE0NjAsIDUxMiwgMTUyMiwgMTQ2MywgMjYyLCAxNTA2LCAyNjIsIAorICAgIDE0ODgsIDI2MiwgMTQ5MSwgMjYyLCAxNDkyLCAyNjIsIDE0OTksIDI2MiwgMTUwMCwgMjYyLCAxNTAxLCAyNjIsIDE1MTIsIAorICAgIDI2MiwgMTUxNCwgMjYyLCA0MywgNTEyLCAxNTEzLCAxNDczLCA1MTIsIDE1MTMsIDE0NzQsIDUxMiwgNjQzMjksIDE0NzMsIAorICAgIDUxMiwgNjQzMjksIDE0NzQsIDUxMiwgMTQ4OCwgMTQ2MywgNTEyLCAxNDg4LCAxNDY0LCA1MTIsIDE0ODgsIDE0NjgsIDUxMiwgCisgICAgMTQ4OSwgMTQ2OCwgNTEyLCAxNDkwLCAxNDY4LCA1MTIsIDE0OTEsIDE0NjgsIDUxMiwgMTQ5MiwgMTQ2OCwgNTEyLCAxNDkzLCAKKyAgICAxNDY4LCA1MTIsIDE0OTQsIDE0NjgsIDUxMiwgMTQ5NiwgMTQ2OCwgNTEyLCAxNDk3LCAxNDY4LCA1MTIsIDE0OTgsIDE0NjgsIAorICAgIDUxMiwgMTQ5OSwgMTQ2OCwgNTEyLCAxNTAwLCAxNDY4LCA1MTIsIDE1MDIsIDE0NjgsIDUxMiwgMTUwNCwgMTQ2OCwgNTEyLCAKKyAgICAxNTA1LCAxNDY4LCA1MTIsIDE1MDcsIDE0NjgsIDUxMiwgMTUwOCwgMTQ2OCwgNTEyLCAxNTEwLCAxNDY4LCA1MTIsIDE1MTEsIAorICAgIDE0NjgsIDUxMiwgMTUxMiwgMTQ2OCwgNTEyLCAxNTEzLCAxNDY4LCA1MTIsIDE1MTQsIDE0NjgsIDUxMiwgMTQ5MywgMTQ2NSwgCisgICAgNTEyLCAxNDg5LCAxNDcxLCA1MTIsIDE0OTksIDE0NzEsIDUxMiwgMTUwOCwgMTQ3MSwgNTE0LCAxNDg4LCAxNTAwLCAyNjcsIAorICAgIDE2NDksIDI2OCwgMTY0OSwgMjY3LCAxNjU5LCAyNjgsIDE2NTksIDI2OSwgMTY1OSwgMjcwLCAxNjU5LCAyNjcsIDE2NjIsIAorICAgIDI2OCwgMTY2MiwgMjY5LCAxNjYyLCAyNzAsIDE2NjIsIDI2NywgMTY2NCwgMjY4LCAxNjY0LCAyNjksIDE2NjQsIDI3MCwgCisgICAgMTY2NCwgMjY3LCAxNjU4LCAyNjgsIDE2NTgsIDI2OSwgMTY1OCwgMjcwLCAxNjU4LCAyNjcsIDE2NjMsIDI2OCwgMTY2MywgCisgICAgMjY5LCAxNjYzLCAyNzAsIDE2NjMsIDI2NywgMTY1NywgMjY4LCAxNjU3LCAyNjksIDE2NTcsIDI3MCwgMTY1NywgMjY3LCAKKyAgICAxNzAwLCAyNjgsIDE3MDAsIDI2OSwgMTcwMCwgMjcwLCAxNzAwLCAyNjcsIDE3MDIsIDI2OCwgMTcwMiwgMjY5LCAxNzAyLCAKKyAgICAyNzAsIDE3MDIsIDI2NywgMTY2OCwgMjY4LCAxNjY4LCAyNjksIDE2NjgsIDI3MCwgMTY2OCwgMjY3LCAxNjY3LCAyNjgsIAorICAgIDE2NjcsIDI2OSwgMTY2NywgMjcwLCAxNjY3LCAyNjcsIDE2NzAsIDI2OCwgMTY3MCwgMjY5LCAxNjcwLCAyNzAsIDE2NzAsIAorICAgIDI2NywgMTY3MSwgMjY4LCAxNjcxLCAyNjksIDE2NzEsIDI3MCwgMTY3MSwgMjY3LCAxNjc3LCAyNjgsIDE2NzcsIDI2NywgCisgICAgMTY3NiwgMjY4LCAxNjc2LCAyNjcsIDE2NzgsIDI2OCwgMTY3OCwgMjY3LCAxNjcyLCAyNjgsIDE2NzIsIDI2NywgMTY4OCwgCisgICAgMjY4LCAxNjg4LCAyNjcsIDE2ODEsIDI2OCwgMTY4MSwgMjY3LCAxNzA1LCAyNjgsIDE3MDUsIDI2OSwgMTcwNSwgMjcwLCAKKyAgICAxNzA1LCAyNjcsIDE3MTEsIDI2OCwgMTcxMSwgMjY5LCAxNzExLCAyNzAsIDE3MTEsIDI2NywgMTcxNSwgMjY4LCAxNzE1LCAKKyAgICAyNjksIDE3MTUsIDI3MCwgMTcxNSwgMjY3LCAxNzEzLCAyNjgsIDE3MTMsIDI2OSwgMTcxMywgMjcwLCAxNzEzLCAyNjcsIAorICAgIDE3MjIsIDI2OCwgMTcyMiwgMjY3LCAxNzIzLCAyNjgsIDE3MjMsIDI2OSwgMTcyMywgMjcwLCAxNzIzLCAyNjcsIDE3MjgsIAorICAgIDI2OCwgMTcyOCwgMjY3LCAxNzI5LCAyNjgsIDE3MjksIDI2OSwgMTcyOSwgMjcwLCAxNzI5LCAyNjcsIDE3MjYsIDI2OCwgCisgICAgMTcyNiwgMjY5LCAxNzI2LCAyNzAsIDE3MjYsIDI2NywgMTc0NiwgMjY4LCAxNzQ2LCAyNjcsIDE3NDcsIDI2OCwgMTc0NywgCisgICAgMjY3LCAxNzA5LCAyNjgsIDE3MDksIDI2OSwgMTcwOSwgMjcwLCAxNzA5LCAyNjcsIDE3MzUsIDI2OCwgMTczNSwgMjY3LCAKKyAgICAxNzM0LCAyNjgsIDE3MzQsIDI2NywgMTczNiwgMjY4LCAxNzM2LCAyNjcsIDE2NTUsIDI2NywgMTczOSwgMjY4LCAxNzM5LCAKKyAgICAyNjcsIDE3MzMsIDI2OCwgMTczMywgMjY3LCAxNzM3LCAyNjgsIDE3MzcsIDI2NywgMTc0NCwgMjY4LCAxNzQ0LCAyNjksIAorICAgIDE3NDQsIDI3MCwgMTc0NCwgMjY5LCAxNjA5LCAyNzAsIDE2MDksIDUyMywgMTU3NCwgMTU3NSwgNTI0LCAxNTc0LCAxNTc1LCAKKyAgICA1MjMsIDE1NzQsIDE3NDksIDUyNCwgMTU3NCwgMTc0OSwgNTIzLCAxNTc0LCAxNjA4LCA1MjQsIDE1NzQsIDE2MDgsIDUyMywgCisgICAgMTU3NCwgMTczNSwgNTI0LCAxNTc0LCAxNzM1LCA1MjMsIDE1NzQsIDE3MzQsIDUyNCwgMTU3NCwgMTczNCwgNTIzLCAxNTc0LCAKKyAgICAxNzM2LCA1MjQsIDE1NzQsIDE3MzYsIDUyMywgMTU3NCwgMTc0NCwgNTI0LCAxNTc0LCAxNzQ0LCA1MjUsIDE1NzQsIDE3NDQsIAorICAgIDUyMywgMTU3NCwgMTYwOSwgNTI0LCAxNTc0LCAxNjA5LCA1MjUsIDE1NzQsIDE2MDksIDI2NywgMTc0MCwgMjY4LCAxNzQwLCAKKyAgICAyNjksIDE3NDAsIDI3MCwgMTc0MCwgNTIzLCAxNTc0LCAxNTgwLCA1MjMsIDE1NzQsIDE1ODEsIDUyMywgMTU3NCwgMTYwNSwgCisgICAgNTIzLCAxNTc0LCAxNjA5LCA1MjMsIDE1NzQsIDE2MTAsIDUyMywgMTU3NiwgMTU4MCwgNTIzLCAxNTc2LCAxNTgxLCA1MjMsIAorICAgIDE1NzYsIDE1ODIsIDUyMywgMTU3NiwgMTYwNSwgNTIzLCAxNTc2LCAxNjA5LCA1MjMsIDE1NzYsIDE2MTAsIDUyMywgMTU3OCwgCisgICAgMTU4MCwgNTIzLCAxNTc4LCAxNTgxLCA1MjMsIDE1NzgsIDE1ODIsIDUyMywgMTU3OCwgMTYwNSwgNTIzLCAxNTc4LCAxNjA5LCAKKyAgICA1MjMsIDE1NzgsIDE2MTAsIDUyMywgMTU3OSwgMTU4MCwgNTIzLCAxNTc5LCAxNjA1LCA1MjMsIDE1NzksIDE2MDksIDUyMywgCisgICAgMTU3OSwgMTYxMCwgNTIzLCAxNTgwLCAxNTgxLCA1MjMsIDE1ODAsIDE2MDUsIDUyMywgMTU4MSwgMTU4MCwgNTIzLCAxNTgxLCAKKyAgICAxNjA1LCA1MjMsIDE1ODIsIDE1ODAsIDUyMywgMTU4MiwgMTU4MSwgNTIzLCAxNTgyLCAxNjA1LCA1MjMsIDE1ODcsIDE1ODAsIAorICAgIDUyMywgMTU4NywgMTU4MSwgNTIzLCAxNTg3LCAxNTgyLCA1MjMsIDE1ODcsIDE2MDUsIDUyMywgMTU4OSwgMTU4MSwgNTIzLCAKKyAgICAxNTg5LCAxNjA1LCA1MjMsIDE1OTAsIDE1ODAsIDUyMywgMTU5MCwgMTU4MSwgNTIzLCAxNTkwLCAxNTgyLCA1MjMsIDE1OTAsIAorICAgIDE2MDUsIDUyMywgMTU5MSwgMTU4MSwgNTIzLCAxNTkxLCAxNjA1LCA1MjMsIDE1OTIsIDE2MDUsIDUyMywgMTU5MywgMTU4MCwgCisgICAgNTIzLCAxNTkzLCAxNjA1LCA1MjMsIDE1OTQsIDE1ODAsIDUyMywgMTU5NCwgMTYwNSwgNTIzLCAxNjAxLCAxNTgwLCA1MjMsIAorICAgIDE2MDEsIDE1ODEsIDUyMywgMTYwMSwgMTU4MiwgNTIzLCAxNjAxLCAxNjA1LCA1MjMsIDE2MDEsIDE2MDksIDUyMywgMTYwMSwgCisgICAgMTYxMCwgNTIzLCAxNjAyLCAxNTgxLCA1MjMsIDE2MDIsIDE2MDUsIDUyMywgMTYwMiwgMTYwOSwgNTIzLCAxNjAyLCAxNjEwLCAKKyAgICA1MjMsIDE2MDMsIDE1NzUsIDUyMywgMTYwMywgMTU4MCwgNTIzLCAxNjAzLCAxNTgxLCA1MjMsIDE2MDMsIDE1ODIsIDUyMywgCisgICAgMTYwMywgMTYwNCwgNTIzLCAxNjAzLCAxNjA1LCA1MjMsIDE2MDMsIDE2MDksIDUyMywgMTYwMywgMTYxMCwgNTIzLCAxNjA0LCAKKyAgICAxNTgwLCA1MjMsIDE2MDQsIDE1ODEsIDUyMywgMTYwNCwgMTU4MiwgNTIzLCAxNjA0LCAxNjA1LCA1MjMsIDE2MDQsIDE2MDksIAorICAgIDUyMywgMTYwNCwgMTYxMCwgNTIzLCAxNjA1LCAxNTgwLCA1MjMsIDE2MDUsIDE1ODEsIDUyMywgMTYwNSwgMTU4MiwgNTIzLCAKKyAgICAxNjA1LCAxNjA1LCA1MjMsIDE2MDUsIDE2MDksIDUyMywgMTYwNSwgMTYxMCwgNTIzLCAxNjA2LCAxNTgwLCA1MjMsIDE2MDYsIAorICAgIDE1ODEsIDUyMywgMTYwNiwgMTU4MiwgNTIzLCAxNjA2LCAxNjA1LCA1MjMsIDE2MDYsIDE2MDksIDUyMywgMTYwNiwgMTYxMCwgCisgICAgNTIzLCAxNjA3LCAxNTgwLCA1MjMsIDE2MDcsIDE2MDUsIDUyMywgMTYwNywgMTYwOSwgNTIzLCAxNjA3LCAxNjEwLCA1MjMsIAorICAgIDE2MTAsIDE1ODAsIDUyMywgMTYxMCwgMTU4MSwgNTIzLCAxNjEwLCAxNTgyLCA1MjMsIDE2MTAsIDE2MDUsIDUyMywgMTYxMCwgCisgICAgMTYwOSwgNTIzLCAxNjEwLCAxNjEwLCA1MjMsIDE1ODQsIDE2NDgsIDUyMywgMTU4NSwgMTY0OCwgNTIzLCAxNjA5LCAxNjQ4LCAKKyAgICA3NzksIDMyLCAxNjEyLCAxNjE3LCA3NzksIDMyLCAxNjEzLCAxNjE3LCA3NzksIDMyLCAxNjE0LCAxNjE3LCA3NzksIDMyLCAKKyAgICAxNjE1LCAxNjE3LCA3NzksIDMyLCAxNjE2LCAxNjE3LCA3NzksIDMyLCAxNjE3LCAxNjQ4LCA1MjQsIDE1NzQsIDE1ODUsIAorICAgIDUyNCwgMTU3NCwgMTU4NiwgNTI0LCAxNTc0LCAxNjA1LCA1MjQsIDE1NzQsIDE2MDYsIDUyNCwgMTU3NCwgMTYwOSwgNTI0LCAKKyAgICAxNTc0LCAxNjEwLCA1MjQsIDE1NzYsIDE1ODUsIDUyNCwgMTU3NiwgMTU4NiwgNTI0LCAxNTc2LCAxNjA1LCA1MjQsIDE1NzYsIAorICAgIDE2MDYsIDUyNCwgMTU3NiwgMTYwOSwgNTI0LCAxNTc2LCAxNjEwLCA1MjQsIDE1NzgsIDE1ODUsIDUyNCwgMTU3OCwgMTU4NiwgCisgICAgNTI0LCAxNTc4LCAxNjA1LCA1MjQsIDE1NzgsIDE2MDYsIDUyNCwgMTU3OCwgMTYwOSwgNTI0LCAxNTc4LCAxNjEwLCA1MjQsIAorICAgIDE1NzksIDE1ODUsIDUyNCwgMTU3OSwgMTU4NiwgNTI0LCAxNTc5LCAxNjA1LCA1MjQsIDE1NzksIDE2MDYsIDUyNCwgMTU3OSwgCisgICAgMTYwOSwgNTI0LCAxNTc5LCAxNjEwLCA1MjQsIDE2MDEsIDE2MDksIDUyNCwgMTYwMSwgMTYxMCwgNTI0LCAxNjAyLCAxNjA5LCAKKyAgICA1MjQsIDE2MDIsIDE2MTAsIDUyNCwgMTYwMywgMTU3NSwgNTI0LCAxNjAzLCAxNjA0LCA1MjQsIDE2MDMsIDE2MDUsIDUyNCwgCisgICAgMTYwMywgMTYwOSwgNTI0LCAxNjAzLCAxNjEwLCA1MjQsIDE2MDQsIDE2MDUsIDUyNCwgMTYwNCwgMTYwOSwgNTI0LCAxNjA0LCAKKyAgICAxNjEwLCA1MjQsIDE2MDUsIDE1NzUsIDUyNCwgMTYwNSwgMTYwNSwgNTI0LCAxNjA2LCAxNTg1LCA1MjQsIDE2MDYsIDE1ODYsIAorICAgIDUyNCwgMTYwNiwgMTYwNSwgNTI0LCAxNjA2LCAxNjA2LCA1MjQsIDE2MDYsIDE2MDksIDUyNCwgMTYwNiwgMTYxMCwgNTI0LCAKKyAgICAxNjA5LCAxNjQ4LCA1MjQsIDE2MTAsIDE1ODUsIDUyNCwgMTYxMCwgMTU4NiwgNTI0LCAxNjEwLCAxNjA1LCA1MjQsIDE2MTAsIAorICAgIDE2MDYsIDUyNCwgMTYxMCwgMTYwOSwgNTI0LCAxNjEwLCAxNjEwLCA1MjUsIDE1NzQsIDE1ODAsIDUyNSwgMTU3NCwgMTU4MSwgCisgICAgNTI1LCAxNTc0LCAxNTgyLCA1MjUsIDE1NzQsIDE2MDUsIDUyNSwgMTU3NCwgMTYwNywgNTI1LCAxNTc2LCAxNTgwLCA1MjUsIAorICAgIDE1NzYsIDE1ODEsIDUyNSwgMTU3NiwgMTU4MiwgNTI1LCAxNTc2LCAxNjA1LCA1MjUsIDE1NzYsIDE2MDcsIDUyNSwgMTU3OCwgCisgICAgMTU4MCwgNTI1LCAxNTc4LCAxNTgxLCA1MjUsIDE1NzgsIDE1ODIsIDUyNSwgMTU3OCwgMTYwNSwgNTI1LCAxNTc4LCAxNjA3LCAKKyAgICA1MjUsIDE1NzksIDE2MDUsIDUyNSwgMTU4MCwgMTU4MSwgNTI1LCAxNTgwLCAxNjA1LCA1MjUsIDE1ODEsIDE1ODAsIDUyNSwgCisgICAgMTU4MSwgMTYwNSwgNTI1LCAxNTgyLCAxNTgwLCA1MjUsIDE1ODIsIDE2MDUsIDUyNSwgMTU4NywgMTU4MCwgNTI1LCAxNTg3LCAKKyAgICAxNTgxLCA1MjUsIDE1ODcsIDE1ODIsIDUyNSwgMTU4NywgMTYwNSwgNTI1LCAxNTg5LCAxNTgxLCA1MjUsIDE1ODksIDE1ODIsIAorICAgIDUyNSwgMTU4OSwgMTYwNSwgNTI1LCAxNTkwLCAxNTgwLCA1MjUsIDE1OTAsIDE1ODEsIDUyNSwgMTU5MCwgMTU4MiwgNTI1LCAKKyAgICAxNTkwLCAxNjA1LCA1MjUsIDE1OTEsIDE1ODEsIDUyNSwgMTU5MiwgMTYwNSwgNTI1LCAxNTkzLCAxNTgwLCA1MjUsIDE1OTMsIAorICAgIDE2MDUsIDUyNSwgMTU5NCwgMTU4MCwgNTI1LCAxNTk0LCAxNjA1LCA1MjUsIDE2MDEsIDE1ODAsIDUyNSwgMTYwMSwgMTU4MSwgCisgICAgNTI1LCAxNjAxLCAxNTgyLCA1MjUsIDE2MDEsIDE2MDUsIDUyNSwgMTYwMiwgMTU4MSwgNTI1LCAxNjAyLCAxNjA1LCA1MjUsIAorICAgIDE2MDMsIDE1ODAsIDUyNSwgMTYwMywgMTU4MSwgNTI1LCAxNjAzLCAxNTgyLCA1MjUsIDE2MDMsIDE2MDQsIDUyNSwgMTYwMywgCisgICAgMTYwNSwgNTI1LCAxNjA0LCAxNTgwLCA1MjUsIDE2MDQsIDE1ODEsIDUyNSwgMTYwNCwgMTU4MiwgNTI1LCAxNjA0LCAxNjA1LCAKKyAgICA1MjUsIDE2MDQsIDE2MDcsIDUyNSwgMTYwNSwgMTU4MCwgNTI1LCAxNjA1LCAxNTgxLCA1MjUsIDE2MDUsIDE1ODIsIDUyNSwgCisgICAgMTYwNSwgMTYwNSwgNTI1LCAxNjA2LCAxNTgwLCA1MjUsIDE2MDYsIDE1ODEsIDUyNSwgMTYwNiwgMTU4MiwgNTI1LCAxNjA2LCAKKyAgICAxNjA1LCA1MjUsIDE2MDYsIDE2MDcsIDUyNSwgMTYwNywgMTU4MCwgNTI1LCAxNjA3LCAxNjA1LCA1MjUsIDE2MDcsIDE2NDgsIAorICAgIDUyNSwgMTYxMCwgMTU4MCwgNTI1LCAxNjEwLCAxNTgxLCA1MjUsIDE2MTAsIDE1ODIsIDUyNSwgMTYxMCwgMTYwNSwgNTI1LCAKKyAgICAxNjEwLCAxNjA3LCA1MjYsIDE1NzQsIDE2MDUsIDUyNiwgMTU3NCwgMTYwNywgNTI2LCAxNTc2LCAxNjA1LCA1MjYsIDE1NzYsIAorICAgIDE2MDcsIDUyNiwgMTU3OCwgMTYwNSwgNTI2LCAxNTc4LCAxNjA3LCA1MjYsIDE1NzksIDE2MDUsIDUyNiwgMTU3OSwgMTYwNywgCisgICAgNTI2LCAxNTg3LCAxNjA1LCA1MjYsIDE1ODcsIDE2MDcsIDUyNiwgMTU4OCwgMTYwNSwgNTI2LCAxNTg4LCAxNjA3LCA1MjYsIAorICAgIDE2MDMsIDE2MDQsIDUyNiwgMTYwMywgMTYwNSwgNTI2LCAxNjA0LCAxNjA1LCA1MjYsIDE2MDYsIDE2MDUsIDUyNiwgMTYwNiwgCisgICAgMTYwNywgNTI2LCAxNjEwLCAxNjA1LCA1MjYsIDE2MTAsIDE2MDcsIDc4MiwgMTYwMCwgMTYxNCwgMTYxNywgNzgyLCAxNjAwLCAKKyAgICAxNjE1LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTYsIDE2MTcsIDUyMywgMTU5MSwgMTYwOSwgNTIzLCAxNTkxLCAxNjEwLCA1MjMsIAorICAgIDE1OTMsIDE2MDksIDUyMywgMTU5MywgMTYxMCwgNTIzLCAxNTk0LCAxNjA5LCA1MjMsIDE1OTQsIDE2MTAsIDUyMywgMTU4NywgCisgICAgMTYwOSwgNTIzLCAxNTg3LCAxNjEwLCA1MjMsIDE1ODgsIDE2MDksIDUyMywgMTU4OCwgMTYxMCwgNTIzLCAxNTgxLCAxNjA5LCAKKyAgICA1MjMsIDE1ODEsIDE2MTAsIDUyMywgMTU4MCwgMTYwOSwgNTIzLCAxNTgwLCAxNjEwLCA1MjMsIDE1ODIsIDE2MDksIDUyMywgCisgICAgMTU4MiwgMTYxMCwgNTIzLCAxNTg5LCAxNjA5LCA1MjMsIDE1ODksIDE2MTAsIDUyMywgMTU5MCwgMTYwOSwgNTIzLCAxNTkwLCAKKyAgICAxNjEwLCA1MjMsIDE1ODgsIDE1ODAsIDUyMywgMTU4OCwgMTU4MSwgNTIzLCAxNTg4LCAxNTgyLCA1MjMsIDE1ODgsIDE2MDUsIAorICAgIDUyMywgMTU4OCwgMTU4NSwgNTIzLCAxNTg3LCAxNTg1LCA1MjMsIDE1ODksIDE1ODUsIDUyMywgMTU5MCwgMTU4NSwgNTI0LCAKKyAgICAxNTkxLCAxNjA5LCA1MjQsIDE1OTEsIDE2MTAsIDUyNCwgMTU5MywgMTYwOSwgNTI0LCAxNTkzLCAxNjEwLCA1MjQsIDE1OTQsIAorICAgIDE2MDksIDUyNCwgMTU5NCwgMTYxMCwgNTI0LCAxNTg3LCAxNjA5LCA1MjQsIDE1ODcsIDE2MTAsIDUyNCwgMTU4OCwgMTYwOSwgCisgICAgNTI0LCAxNTg4LCAxNjEwLCA1MjQsIDE1ODEsIDE2MDksIDUyNCwgMTU4MSwgMTYxMCwgNTI0LCAxNTgwLCAxNjA5LCA1MjQsIAorICAgIDE1ODAsIDE2MTAsIDUyNCwgMTU4MiwgMTYwOSwgNTI0LCAxNTgyLCAxNjEwLCA1MjQsIDE1ODksIDE2MDksIDUyNCwgMTU4OSwgCisgICAgMTYxMCwgNTI0LCAxNTkwLCAxNjA5LCA1MjQsIDE1OTAsIDE2MTAsIDUyNCwgMTU4OCwgMTU4MCwgNTI0LCAxNTg4LCAxNTgxLCAKKyAgICA1MjQsIDE1ODgsIDE1ODIsIDUyNCwgMTU4OCwgMTYwNSwgNTI0LCAxNTg4LCAxNTg1LCA1MjQsIDE1ODcsIDE1ODUsIDUyNCwgCisgICAgMTU4OSwgMTU4NSwgNTI0LCAxNTkwLCAxNTg1LCA1MjUsIDE1ODgsIDE1ODAsIDUyNSwgMTU4OCwgMTU4MSwgNTI1LCAxNTg4LCAKKyAgICAxNTgyLCA1MjUsIDE1ODgsIDE2MDUsIDUyNSwgMTU4NywgMTYwNywgNTI1LCAxNTg4LCAxNjA3LCA1MjUsIDE1OTEsIDE2MDUsIAorICAgIDUyNiwgMTU4NywgMTU4MCwgNTI2LCAxNTg3LCAxNTgxLCA1MjYsIDE1ODcsIDE1ODIsIDUyNiwgMTU4OCwgMTU4MCwgNTI2LCAKKyAgICAxNTg4LCAxNTgxLCA1MjYsIDE1ODgsIDE1ODIsIDUyNiwgMTU5MSwgMTYwNSwgNTI2LCAxNTkyLCAxNjA1LCA1MjQsIDE1NzUsIAorICAgIDE2MTEsIDUyMywgMTU3NSwgMTYxMSwgNzgxLCAxNTc4LCAxNTgwLCAxNjA1LCA3ODAsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgCisgICAgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNjA1LCA3ODEsIDE1NzgsIDE1ODIsIDE2MDUsIDc4MSwgCisgICAgMTU3OCwgMTYwNSwgMTU4MCwgNzgxLCAxNTc4LCAxNjA1LCAxNTgxLCA3ODEsIDE1NzgsIDE2MDUsIDE1ODIsIDc4MCwgCisgICAgMTU4MCwgMTYwNSwgMTU4MSwgNzgxLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODAsIDE1ODEsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTU4MSwgMTYwNSwgMTYwOSwgNzgxLCAxNTg3LCAxNTgxLCAxNTgwLCA3ODEsIDE1ODcsIDE1ODAsIDE1ODEsIDc4MCwgCisgICAgMTU4NywgMTU4MCwgMTYwOSwgNzgwLCAxNTg3LCAxNjA1LCAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgCisgICAgMTU4NywgMTYwNSwgMTU4MCwgNzgwLCAxNTg3LCAxNjA1LCAxNjA1LCA3ODEsIDE1ODcsIDE2MDUsIDE2MDUsIDc4MCwgCisgICAgMTU4OSwgMTU4MSwgMTU4MSwgNzgxLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODAsIDE1ODksIDE2MDUsIDE2MDUsIDc4MCwgCisgICAgMTU4OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODAsIDE1ODgsIDE1ODAsIDE2MTAsIDc4MCwgCisgICAgMTU4OCwgMTYwNSwgMTU4MiwgNzgxLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODAsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MSwgCisgICAgMTU4OCwgMTYwNSwgMTYwNSwgNzgwLCAxNTkwLCAxNTgxLCAxNjA5LCA3ODAsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MSwgCisgICAgMTU5MCwgMTU4MiwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgCisgICAgMTU5MSwgMTYwNSwgMTYwNSwgNzgwLCAxNTkxLCAxNjA1LCAxNjEwLCA3ODAsIDE1OTMsIDE1ODAsIDE2MDUsIDc4MCwgCisgICAgMTU5MywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTU5NCwgMTYwNSwgMTYwNSwgNzgwLCAxNTk0LCAxNjA1LCAxNjEwLCA3ODAsIDE1OTQsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTYwMSwgMTU4MiwgMTYwNSwgNzgxLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODAsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MCwgCisgICAgMTYwMiwgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE2MDQsIDE1ODEsIDE2MTAsIDc4MCwgCisgICAgMTYwNCwgMTU4MSwgMTYwOSwgNzgxLCAxNjA0LCAxNTgwLCAxNTgwLCA3ODAsIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgCisgICAgMTYwNCwgMTU4MiwgMTYwNSwgNzgxLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODAsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgCisgICAgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA1LCAxNTgxLCAxNTgwLCA3ODEsIDE2MDUsIDE1ODEsIDE2MDUsIDc4MCwgCisgICAgMTYwNSwgMTU4MSwgMTYxMCwgNzgxLCAxNjA1LCAxNTgwLCAxNTgxLCA3ODEsIDE2MDUsIDE1ODAsIDE2MDUsIDc4MSwgCisgICAgMTYwNSwgMTU4MiwgMTU4MCwgNzgxLCAxNjA1LCAxNTgyLCAxNjA1LCA3ODEsIDE2MDUsIDE1ODAsIDE1ODIsIDc4MSwgCisgICAgMTYwNywgMTYwNSwgMTU4MCwgNzgxLCAxNjA3LCAxNjA1LCAxNjA1LCA3ODEsIDE2MDYsIDE1ODEsIDE2MDUsIDc4MCwgCisgICAgMTYwNiwgMTU4MSwgMTYwOSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA1LCA3ODEsIDE2MDYsIDE1ODAsIDE2MDUsIDc4MCwgCisgICAgMTYwNiwgMTU4MCwgMTYwOSwgNzgwLCAxNjA2LCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTYxMCwgMTYwNSwgMTYwNSwgNzgxLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODAsIDE1NzYsIDE1ODIsIDE2MTAsIDc4MCwgCisgICAgMTU3OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjA5LCA3ODAsIDE1NzgsIDE1ODIsIDE2MTAsIDc4MCwgCisgICAgMTU3OCwgMTU4MiwgMTYwOSwgNzgwLCAxNTc4LCAxNjA1LCAxNjEwLCA3ODAsIDE1NzgsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTU4MCwgMTYwNSwgMTYxMCwgNzgwLCAxNTgwLCAxNTgxLCAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MDksIDc4MCwgCisgICAgMTU4NywgMTU4MiwgMTYwOSwgNzgwLCAxNTg5LCAxNTgxLCAxNjEwLCA3ODAsIDE1ODgsIDE1ODEsIDE2MTAsIDc4MCwgCisgICAgMTU5MCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgwLCAxNjEwLCA3ODAsIDE2MDQsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTYxMCwgMTU4MSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgwLCAxNjEwLCA3ODAsIDE2MTAsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTYwNSwgMTYwNSwgMTYxMCwgNzgwLCAxNjAyLCAxNjA1LCAxNjEwLCA3ODAsIDE2MDYsIDE1ODEsIDE2MTAsIDc4MSwgCisgICAgMTYwMiwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNTgxLCAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MTAsIDc4MCwgCisgICAgMTYwMywgMTYwNSwgMTYxMCwgNzgxLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIDE2MDUsIDE1ODIsIDE2MTAsIDc4MSwgCisgICAgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODAsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgCisgICAgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNTgwLCAxNTgxLCAxNjEwLCA3ODAsIDE1ODEsIDE1ODAsIDE2MTAsIDc4MCwgCisgICAgMTYwNSwgMTU4MCwgMTYxMCwgNzgwLCAxNjAxLCAxNjA1LCAxNjEwLCA3ODAsIDE1NzYsIDE1ODEsIDE2MTAsIDc4MSwgCisgICAgMTYwMywgMTYwNSwgMTYwNSwgNzgxLCAxNTkzLCAxNTgwLCAxNjA1LCA3ODEsIDE1ODksIDE2MDUsIDE2MDUsIDc4MCwgCisgICAgMTU4NywgMTU4MiwgMTYxMCwgNzgwLCAxNjA2LCAxNTgwLCAxNjEwLCA3NzksIDE1ODksIDE2MDQsIDE3NDYsIDc3OSwgCisgICAgMTYwMiwgMTYwNCwgMTc0NiwgMTAzNSwgMTU3NSwgMTYwNCwgMTYwNCwgMTYwNywgMTAzNSwgMTU3NSwgMTYwMywgMTU3NiwgCisgICAgMTU4NSwgMTAzNSwgMTYwNSwgMTU4MSwgMTYwNSwgMTU4MywgMTAzNSwgMTU4OSwgMTYwNCwgMTU5MywgMTYwNSwgMTAzNSwgCisgICAgMTU4NSwgMTU4NywgMTYwOCwgMTYwNCwgMTAzNSwgMTU5MywgMTYwNCwgMTYxMCwgMTYwNywgMTAzNSwgMTYwOCwgMTU4NywgCisgICAgMTYwNCwgMTYwNSwgNzc5LCAxNTg5LCAxNjA0LCAxNjA5LCA0NjE5LCAxNTg5LCAxNjA0LCAxNjA5LCAzMiwgMTU3NSwgCisgICAgMTYwNCwgMTYwNCwgMTYwNywgMzIsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDMyLCAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCAKKyAgICAyMDU5LCAxNTgwLCAxNjA0LCAzMiwgMTU4MCwgMTYwNCwgMTU3NSwgMTYwNCwgMTYwNywgMTAzNSwgMTU4NSwgMTc0MCwgCisgICAgMTU3NSwgMTYwNCwgMjY1LCA0NCwgMjY1LCAxMjI4OSwgMjY1LCAxMjI5MCwgMjY1LCA1OCwgMjY1LCA1OSwgMjY1LCAzMywgCisgICAgMjY1LCA2MywgMjY1LCAxMjMxMCwgMjY1LCAxMjMxMSwgMjY1LCA4MjMwLCAyNjUsIDgyMjksIDI2NSwgODIxMiwgMjY1LCAKKyAgICA4MjExLCAyNjUsIDk1LCAyNjUsIDk1LCAyNjUsIDQwLCAyNjUsIDQxLCAyNjUsIDEyMywgMjY1LCAxMjUsIDI2NSwgMTIzMDgsIAorICAgIDI2NSwgMTIzMDksIDI2NSwgMTIzMDQsIDI2NSwgMTIzMDUsIDI2NSwgMTIyOTgsIDI2NSwgMTIyOTksIDI2NSwgMTIyOTYsIAorICAgIDI2NSwgMTIyOTcsIDI2NSwgMTIzMDAsIDI2NSwgMTIzMDEsIDI2NSwgMTIzMDIsIDI2NSwgMTIzMDMsIDI2NSwgOTEsIDI2NSwgCisgICAgOTMsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA5NSwgMjU4LCA5NSwgMjU4LCAKKyAgICA5NSwgMjcxLCA0NCwgMjcxLCAxMjI4OSwgMjcxLCA0NiwgMjcxLCA1OSwgMjcxLCA1OCwgMjcxLCA2MywgMjcxLCAzMywgCisgICAgMjcxLCA4MjEyLCAyNzEsIDQwLCAyNzEsIDQxLCAyNzEsIDEyMywgMjcxLCAxMjUsIDI3MSwgMTIzMDgsIDI3MSwgMTIzMDksIAorICAgIDI3MSwgMzUsIDI3MSwgMzgsIDI3MSwgNDIsIDI3MSwgNDMsIDI3MSwgNDUsIDI3MSwgNjAsIDI3MSwgNjIsIDI3MSwgNjEsIAorICAgIDI3MSwgOTIsIDI3MSwgMzYsIDI3MSwgMzcsIDI3MSwgNjQsIDUyMywgMzIsIDE2MTEsIDUyNiwgMTYwMCwgMTYxMSwgNTIzLCAKKyAgICAzMiwgMTYxMiwgNTIzLCAzMiwgMTYxMywgNTIzLCAzMiwgMTYxNCwgNTI2LCAxNjAwLCAxNjE0LCA1MjMsIDMyLCAxNjE1LCAKKyAgICA1MjYsIDE2MDAsIDE2MTUsIDUyMywgMzIsIDE2MTYsIDUyNiwgMTYwMCwgMTYxNiwgNTIzLCAzMiwgMTYxNywgNTI2LCAKKyAgICAxNjAwLCAxNjE3LCA1MjMsIDMyLCAxNjE4LCA1MjYsIDE2MDAsIDE2MTgsIDI2NywgMTU2OSwgMjY3LCAxNTcwLCAyNjgsIAorICAgIDE1NzAsIDI2NywgMTU3MSwgMjY4LCAxNTcxLCAyNjcsIDE1NzIsIDI2OCwgMTU3MiwgMjY3LCAxNTczLCAyNjgsIDE1NzMsIAorICAgIDI2NywgMTU3NCwgMjY4LCAxNTc0LCAyNjksIDE1NzQsIDI3MCwgMTU3NCwgMjY3LCAxNTc1LCAyNjgsIDE1NzUsIDI2NywgCisgICAgMTU3NiwgMjY4LCAxNTc2LCAyNjksIDE1NzYsIDI3MCwgMTU3NiwgMjY3LCAxNTc3LCAyNjgsIDE1NzcsIDI2NywgMTU3OCwgCisgICAgMjY4LCAxNTc4LCAyNjksIDE1NzgsIDI3MCwgMTU3OCwgMjY3LCAxNTc5LCAyNjgsIDE1NzksIDI2OSwgMTU3OSwgMjcwLCAKKyAgICAxNTc5LCAyNjcsIDE1ODAsIDI2OCwgMTU4MCwgMjY5LCAxNTgwLCAyNzAsIDE1ODAsIDI2NywgMTU4MSwgMjY4LCAxNTgxLCAKKyAgICAyNjksIDE1ODEsIDI3MCwgMTU4MSwgMjY3LCAxNTgyLCAyNjgsIDE1ODIsIDI2OSwgMTU4MiwgMjcwLCAxNTgyLCAyNjcsIAorICAgIDE1ODMsIDI2OCwgMTU4MywgMjY3LCAxNTg0LCAyNjgsIDE1ODQsIDI2NywgMTU4NSwgMjY4LCAxNTg1LCAyNjcsIDE1ODYsIAorICAgIDI2OCwgMTU4NiwgMjY3LCAxNTg3LCAyNjgsIDE1ODcsIDI2OSwgMTU4NywgMjcwLCAxNTg3LCAyNjcsIDE1ODgsIDI2OCwgCisgICAgMTU4OCwgMjY5LCAxNTg4LCAyNzAsIDE1ODgsIDI2NywgMTU4OSwgMjY4LCAxNTg5LCAyNjksIDE1ODksIDI3MCwgMTU4OSwgCisgICAgMjY3LCAxNTkwLCAyNjgsIDE1OTAsIDI2OSwgMTU5MCwgMjcwLCAxNTkwLCAyNjcsIDE1OTEsIDI2OCwgMTU5MSwgMjY5LCAKKyAgICAxNTkxLCAyNzAsIDE1OTEsIDI2NywgMTU5MiwgMjY4LCAxNTkyLCAyNjksIDE1OTIsIDI3MCwgMTU5MiwgMjY3LCAxNTkzLCAKKyAgICAyNjgsIDE1OTMsIDI2OSwgMTU5MywgMjcwLCAxNTkzLCAyNjcsIDE1OTQsIDI2OCwgMTU5NCwgMjY5LCAxNTk0LCAyNzAsIAorICAgIDE1OTQsIDI2NywgMTYwMSwgMjY4LCAxNjAxLCAyNjksIDE2MDEsIDI3MCwgMTYwMSwgMjY3LCAxNjAyLCAyNjgsIDE2MDIsIAorICAgIDI2OSwgMTYwMiwgMjcwLCAxNjAyLCAyNjcsIDE2MDMsIDI2OCwgMTYwMywgMjY5LCAxNjAzLCAyNzAsIDE2MDMsIDI2NywgCisgICAgMTYwNCwgMjY4LCAxNjA0LCAyNjksIDE2MDQsIDI3MCwgMTYwNCwgMjY3LCAxNjA1LCAyNjgsIDE2MDUsIDI2OSwgMTYwNSwgCisgICAgMjcwLCAxNjA1LCAyNjcsIDE2MDYsIDI2OCwgMTYwNiwgMjY5LCAxNjA2LCAyNzAsIDE2MDYsIDI2NywgMTYwNywgMjY4LCAKKyAgICAxNjA3LCAyNjksIDE2MDcsIDI3MCwgMTYwNywgMjY3LCAxNjA4LCAyNjgsIDE2MDgsIDI2NywgMTYwOSwgMjY4LCAxNjA5LCAKKyAgICAyNjcsIDE2MTAsIDI2OCwgMTYxMCwgMjY5LCAxNjEwLCAyNzAsIDE2MTAsIDUyMywgMTYwNCwgMTU3MCwgNTI0LCAxNjA0LCAKKyAgICAxNTcwLCA1MjMsIDE2MDQsIDE1NzEsIDUyNCwgMTYwNCwgMTU3MSwgNTIzLCAxNjA0LCAxNTczLCA1MjQsIDE2MDQsIDE1NzMsIAorICAgIDUyMywgMTYwNCwgMTU3NSwgNTI0LCAxNjA0LCAxNTc1LCAyNjQsIDMzLCAyNjQsIDM0LCAyNjQsIDM1LCAyNjQsIDM2LCAKKyAgICAyNjQsIDM3LCAyNjQsIDM4LCAyNjQsIDM5LCAyNjQsIDQwLCAyNjQsIDQxLCAyNjQsIDQyLCAyNjQsIDQzLCAyNjQsIDQ0LCAKKyAgICAyNjQsIDQ1LCAyNjQsIDQ2LCAyNjQsIDQ3LCAyNjQsIDQ4LCAyNjQsIDQ5LCAyNjQsIDUwLCAyNjQsIDUxLCAyNjQsIDUyLCAKKyAgICAyNjQsIDUzLCAyNjQsIDU0LCAyNjQsIDU1LCAyNjQsIDU2LCAyNjQsIDU3LCAyNjQsIDU4LCAyNjQsIDU5LCAyNjQsIDYwLCAKKyAgICAyNjQsIDYxLCAyNjQsIDYyLCAyNjQsIDYzLCAyNjQsIDY0LCAyNjQsIDY1LCAyNjQsIDY2LCAyNjQsIDY3LCAyNjQsIDY4LCAKKyAgICAyNjQsIDY5LCAyNjQsIDcwLCAyNjQsIDcxLCAyNjQsIDcyLCAyNjQsIDczLCAyNjQsIDc0LCAyNjQsIDc1LCAyNjQsIDc2LCAKKyAgICAyNjQsIDc3LCAyNjQsIDc4LCAyNjQsIDc5LCAyNjQsIDgwLCAyNjQsIDgxLCAyNjQsIDgyLCAyNjQsIDgzLCAyNjQsIDg0LCAKKyAgICAyNjQsIDg1LCAyNjQsIDg2LCAyNjQsIDg3LCAyNjQsIDg4LCAyNjQsIDg5LCAyNjQsIDkwLCAyNjQsIDkxLCAyNjQsIDkyLCAKKyAgICAyNjQsIDkzLCAyNjQsIDk0LCAyNjQsIDk1LCAyNjQsIDk2LCAyNjQsIDk3LCAyNjQsIDk4LCAyNjQsIDk5LCAyNjQsIDEwMCwgCisgICAgMjY0LCAxMDEsIDI2NCwgMTAyLCAyNjQsIDEwMywgMjY0LCAxMDQsIDI2NCwgMTA1LCAyNjQsIDEwNiwgMjY0LCAxMDcsIAorICAgIDI2NCwgMTA4LCAyNjQsIDEwOSwgMjY0LCAxMTAsIDI2NCwgMTExLCAyNjQsIDExMiwgMjY0LCAxMTMsIDI2NCwgMTE0LCAKKyAgICAyNjQsIDExNSwgMjY0LCAxMTYsIDI2NCwgMTE3LCAyNjQsIDExOCwgMjY0LCAxMTksIDI2NCwgMTIwLCAyNjQsIDEyMSwgCisgICAgMjY0LCAxMjIsIDI2NCwgMTIzLCAyNjQsIDEyNCwgMjY0LCAxMjUsIDI2NCwgMTI2LCAyNjQsIDEwNjI5LCAyNjQsIDEwNjMwLCAKKyAgICAyNzIsIDEyMjkwLCAyNzIsIDEyMzAwLCAyNzIsIDEyMzAxLCAyNzIsIDEyMjg5LCAyNzIsIDEyNTM5LCAyNzIsIDEyNTMwLCAKKyAgICAyNzIsIDEyNDQ5LCAyNzIsIDEyNDUxLCAyNzIsIDEyNDUzLCAyNzIsIDEyNDU1LCAyNzIsIDEyNDU3LCAyNzIsIDEyNTE1LCAKKyAgICAyNzIsIDEyNTE3LCAyNzIsIDEyNTE5LCAyNzIsIDEyNDgzLCAyNzIsIDEyNTQwLCAyNzIsIDEyNDUwLCAyNzIsIDEyNDUyLCAKKyAgICAyNzIsIDEyNDU0LCAyNzIsIDEyNDU2LCAyNzIsIDEyNDU4LCAyNzIsIDEyNDU5LCAyNzIsIDEyNDYxLCAyNzIsIDEyNDYzLCAKKyAgICAyNzIsIDEyNDY1LCAyNzIsIDEyNDY3LCAyNzIsIDEyNDY5LCAyNzIsIDEyNDcxLCAyNzIsIDEyNDczLCAyNzIsIDEyNDc1LCAKKyAgICAyNzIsIDEyNDc3LCAyNzIsIDEyNDc5LCAyNzIsIDEyNDgxLCAyNzIsIDEyNDg0LCAyNzIsIDEyNDg2LCAyNzIsIDEyNDg4LCAKKyAgICAyNzIsIDEyNDkwLCAyNzIsIDEyNDkxLCAyNzIsIDEyNDkyLCAyNzIsIDEyNDkzLCAyNzIsIDEyNDk0LCAyNzIsIDEyNDk1LCAKKyAgICAyNzIsIDEyNDk4LCAyNzIsIDEyNTAxLCAyNzIsIDEyNTA0LCAyNzIsIDEyNTA3LCAyNzIsIDEyNTEwLCAyNzIsIDEyNTExLCAKKyAgICAyNzIsIDEyNTEyLCAyNzIsIDEyNTEzLCAyNzIsIDEyNTE0LCAyNzIsIDEyNTE2LCAyNzIsIDEyNTE4LCAyNzIsIDEyNTIwLCAKKyAgICAyNzIsIDEyNTIxLCAyNzIsIDEyNTIyLCAyNzIsIDEyNTIzLCAyNzIsIDEyNTI0LCAyNzIsIDEyNTI1LCAyNzIsIDEyNTI3LCAKKyAgICAyNzIsIDEyNTMxLCAyNzIsIDEyNDQxLCAyNzIsIDEyNDQyLCAyNzIsIDEyNjQ0LCAyNzIsIDEyNTkzLCAyNzIsIDEyNTk0LCAKKyAgICAyNzIsIDEyNTk1LCAyNzIsIDEyNTk2LCAyNzIsIDEyNTk3LCAyNzIsIDEyNTk4LCAyNzIsIDEyNTk5LCAyNzIsIDEyNjAwLCAKKyAgICAyNzIsIDEyNjAxLCAyNzIsIDEyNjAyLCAyNzIsIDEyNjAzLCAyNzIsIDEyNjA0LCAyNzIsIDEyNjA1LCAyNzIsIDEyNjA2LCAKKyAgICAyNzIsIDEyNjA3LCAyNzIsIDEyNjA4LCAyNzIsIDEyNjA5LCAyNzIsIDEyNjEwLCAyNzIsIDEyNjExLCAyNzIsIDEyNjEyLCAKKyAgICAyNzIsIDEyNjEzLCAyNzIsIDEyNjE0LCAyNzIsIDEyNjE1LCAyNzIsIDEyNjE2LCAyNzIsIDEyNjE3LCAyNzIsIDEyNjE4LCAKKyAgICAyNzIsIDEyNjE5LCAyNzIsIDEyNjIwLCAyNzIsIDEyNjIxLCAyNzIsIDEyNjIyLCAyNzIsIDEyNjIzLCAyNzIsIDEyNjI0LCAKKyAgICAyNzIsIDEyNjI1LCAyNzIsIDEyNjI2LCAyNzIsIDEyNjI3LCAyNzIsIDEyNjI4LCAyNzIsIDEyNjI5LCAyNzIsIDEyNjMwLCAKKyAgICAyNzIsIDEyNjMxLCAyNzIsIDEyNjMyLCAyNzIsIDEyNjMzLCAyNzIsIDEyNjM0LCAyNzIsIDEyNjM1LCAyNzIsIDEyNjM2LCAKKyAgICAyNzIsIDEyNjM3LCAyNzIsIDEyNjM4LCAyNzIsIDEyNjM5LCAyNzIsIDEyNjQwLCAyNzIsIDEyNjQxLCAyNzIsIDEyNjQyLCAKKyAgICAyNzIsIDEyNjQzLCAyNjQsIDE2MiwgMjY0LCAxNjMsIDI2NCwgMTcyLCAyNjQsIDE3NSwgMjY0LCAxNjYsIDI2NCwgMTY1LCAKKyAgICAyNjQsIDgzNjEsIDI3MiwgOTQ3NCwgMjcyLCA4NTkyLCAyNzIsIDg1OTMsIDI3MiwgODU5NCwgMjcyLCA4NTk1LCAyNzIsIAorICAgIDk2MzIsIDI3MiwgOTY3NSwgNTEyLCA2OTc4NSwgNjk4MTgsIDUxMiwgNjk3ODcsIDY5ODE4LCA1MTIsIDY5Nzk3LCA2OTgxOCwgCisgICAgNTEyLCA2OTkzNywgNjk5MjcsIDUxMiwgNjk5MzgsIDY5OTI3LCA1MTIsIDcwNDcxLCA3MDQ2MiwgNTEyLCA3MDQ3MSwgCisgICAgNzA0ODcsIDUxMiwgNzA4NDEsIDcwODQyLCA1MTIsIDcwODQxLCA3MDgzMiwgNTEyLCA3MDg0MSwgNzA4NDUsIDUxMiwgCisgICAgNzEwOTYsIDcxMDg3LCA1MTIsIDcxMDk3LCA3MTA4NywgNTEyLCAxMTkxMjcsIDExOTE0MSwgNTEyLCAxMTkxMjgsIAorICAgIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAxMTkxMzUsIDExOTE1MiwgCisgICAgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIDExOTE0MSwgNTEyLCAKKyAgICAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgNTEyLCAxMTkyMjcsIAorICAgIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgCisgICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCisgICAgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgCisgICAgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgCisgICAgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIAorICAgIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAKKyAgICAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgCisgICAgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAKKyAgICAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAKKyAgICAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAKKyAgICAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgCisgICAgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIAogICAgIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAKICAgICAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgCi0gICAgMjYyLCA2NSwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA3MSwgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3OCwgMjYyLCA3OSwgCi0gICAgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgCi0gICAgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAyLCAyNjIsIAotICAgIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAKLSAgICAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgCi0gICAgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAKLSAgICAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAKLSAgICAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAKLSAgICAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIAotICAgIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAKLSAgICAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgCi0gICAgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIAotICAgIDI2MiwgNzEsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIAorICAgIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIAorICAgIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIAorICAgIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIAorICAgIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAKKyAgICAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgCisgICAgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIAorICAgIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgCisgICAgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA3MSwgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgCiAgICAgMjYyLCA4MSwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgCi0gICAgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgCi0gICAgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIAotICAgIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAKLSAgICAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAKLSAgICAyNjIsIDc5LCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAKLSAgICAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAKLSAgICAxMDQsIDI2MiwgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgCi0gICAgMTExLCAyNjIsIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIAotICAgIDExOCwgMjYyLCAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIAotICAgIDI2MiwgNjgsIDI2MiwgNjksIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIAotICAgIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIAotICAgIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIAorICAgIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMiwgMjYyLCAxMDQsIDI2MiwgCisgICAgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTEyLCAyNjIsIAorICAgIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAKKyAgICAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgCisgICAgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgCisgICAgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgCisgICAgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgCisgICAgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIAorICAgIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAKKyAgICAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgCisgICAgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY4LCAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAKKyAgICAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAKKyAgICAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDk3LCAKKyAgICAyNjIsIDk4LCAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgCisgICAgMTA1LCAyNjIsIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIAorICAgIDExMiwgMjYyLCAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAKKyAgICAxMTksIDI2MiwgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjgsIDI2MiwgNjksIAorICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIDI2MiwgNzksIAorICAgIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTcsIAogICAgIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAKICAgICAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgCiAgICAgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIApAQCAtMzUzNiwzMyArMzg3MSwxNSBAQAogICAgIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAKICAgICAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNCwgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgMjYyLCAxMDgsIDI2MiwgCiAgICAgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIDI2MiwgMTE1LCAyNjIsIAotICAgIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCAKLSAgICAzMDUsIDI2MiwgNTY3LCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgCi0gICAgOTE4LCAyNjIsIDkxOSwgMjYyLCA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIAotICAgIDkyNSwgMjYyLCA5MjYsIDI2MiwgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgCi0gICAgOTMyLCAyNjIsIDkzMywgMjYyLCA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCAKLSAgICA5NDUsIDI2MiwgOTQ2LCAyNjIsIDk0NywgMjYyLCA5NDgsIDI2MiwgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgCi0gICAgOTUyLCAyNjIsIDk1MywgMjYyLCA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIAotICAgIDk1OSwgMjYyLCA5NjAsIDI2MiwgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCAKLSAgICA5NjYsIDI2MiwgOTY3LCAyNjIsIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAKLSAgICAxMDA4LCAyNjIsIDk4MSwgMjYyLCAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCAKLSAgICA5MTYsIDI2MiwgOTE3LCAyNjIsIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgCi0gICAgOTIzLCAyNjIsIDkyNCwgMjYyLCA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIAotICAgIDEwMTIsIDI2MiwgOTMxLCAyNjIsIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgCi0gICAgOTM3LCAyNjIsIDg3MTEsIDI2MiwgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgOTQ4LCAyNjIsIDk0OSwgMjYyLCAKLSAgICA5NTAsIDI2MiwgOTUxLCAyNjIsIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgCi0gICAgOTU3LCAyNjIsIDk1OCwgMjYyLCA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIAotICAgIDk2NCwgMjYyLCA5NjUsIDI2MiwgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgCi0gICAgMTAxMywgMjYyLCA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTEzLCAyNjIsIAotICAgIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCAKLSAgICA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgCi0gICAgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCAKLSAgICA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIAotICAgIDk0OCwgMjYyLCA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCAKLSAgICA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgCi0gICAgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIAotICAgIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgCi0gICAgOTgyLCAyNjIsIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIAorICAgIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAyNjIsIDEyMiwgMjYyLCA2NSwgCisgICAgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgCisgICAgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgCisgICAgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgCisgICAgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAKKyAgICAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgCisgICAgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIAorICAgIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDMwNSwgMjYyLCAKKyAgICA1NjcsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgCiAgICAgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIAogICAgIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgCiAgICAgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCAKQEAgLTM1NzgsMzM5ICszODk1LDU0NiBAQAogICAgIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgOTU2LCAyNjIsIDk1NywgMjYyLCAKICAgICA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIDk2MywgMjYyLCA5NjQsIDI2MiwgCiAgICAgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgCi0gICAgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIDk4OCwgMjYyLCA5ODksIDI2MiwgCi0gICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgCi0gICAgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgCi0gICAgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgCi0gICAgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgCi0gICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDI2MiwgMTU3NSwgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIAotICAgIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIAotICAgIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgCi0gICAgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgCi0gICAgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNzIyLCAyNjIsIDE2OTcsIDI2MiwgMTY0NywgMjYyLCAKLSAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA0LCAKLSAgICAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIAotICAgIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAotICAgIDI2MiwgMTU4MCwgMjYyLCAxNTgxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgCi0gICAgMTU5MywgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgCi0gICAgMjYyLCAxNzIyLCAyNjIsIDE2NDcsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAKLSAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwMywgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKLSAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIAotICAgIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgMTY0NiwgMjYyLCAxNjk3LCAyNjIsIDE1NzUsIAotICAgIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwNywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgCi0gICAgMTU4MSwgMjYyLCAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgCi0gICAgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAKLSAgICAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAKLSAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAyNjIsIAotICAgIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIAotICAgIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgCi0gICAgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDUxNCwgNDgsIDQ2LCAKLSAgICA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIAotICAgIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCAKLSAgICA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgCi0gICAgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgCi0gICAgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgCi0gICAgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgCi0gICAgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIAotICAgIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgCi0gICAgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAKLSAgICAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAKLSAgICAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAKLSAgICAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAKLSAgICAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIAotICAgIDg2LCA1MjIsIDg3LCA2NywgNTE1LCA3NywgNjcsIDUxNSwgNzcsIDY4LCA1MjIsIDY4LCA3NCwgNTIyLCAxMjQxMSwgCi0gICAgMTIzNjMsIDUyMiwgMTI0NjcsIDEyNDY3LCAyNjYsIDEyNDY5LCAyNjYsIDI1MTYzLCAyNjYsIDIzMzgzLCAyNjYsIDIxNDUyLCAKLSAgICAyNjYsIDEyNDg3LCAyNjYsIDIwMTA4LCAyNjYsIDIyODEwLCAyNjYsIDM1Mjk5LCAyNjYsIDIyODI1LCAyNjYsIDIwMTMyLCAKLSAgICAyNjYsIDI2MTQ0LCAyNjYsIDI4OTYxLCAyNjYsIDI2MDA5LCAyNjYsIDIxMDY5LCAyNjYsIDI0NDYwLCAyNjYsIDIwODc3LCAKLSAgICAyNjYsIDI2MDMyLCAyNjYsIDIxMDIxLCAyNjYsIDMyMDY2LCAyNjYsIDI5OTgzLCAyNjYsIDM2MDA5LCAyNjYsIDIyNzY4LCAKLSAgICAyNjYsIDIxNTYxLCAyNjYsIDI4NDM2LCAyNjYsIDI1MjM3LCAyNjYsIDI1NDI5LCAyNjYsIDE5OTY4LCAyNjYsIDE5OTc3LCAKLSAgICAyNjYsIDM2OTM4LCAyNjYsIDI0MDM4LCAyNjYsIDIwMDEzLCAyNjYsIDIxNDkxLCAyNjYsIDI1MzUxLCAyNjYsIDM2MjA4LCAKLSAgICAyNjYsIDI1MTcxLCAyNjYsIDMxMTA1LCAyNjYsIDMxMzU0LCAyNjYsIDIxNTEyLCAyNjYsIDI4Mjg4LCAyNjYsIDI2Mzc3LCAKLSAgICAyNjYsIDI2Mzc2LCAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIAotICAgIDc3MCwgMTIzMDgsIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgCi0gICAgMTIzMDksIDc3MCwgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAKLSAgICAzMDQyMywgMTIzMDksIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIAotICAgIDI0NDcxLCAyNjMsIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAKLSAgICAyMDMyMCwgMjU2LCAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAKLSAgICAyMDcxMSwgMjU2LCAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgCi0gICAgMjA4MzYsIDI1NiwgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIAotICAgIDEzMjQyNywgMjU2LCAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAKLSAgICAxNjg0MTUsIDI1NiwgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgCi0gICAgMjExMDYsIDI1NiwgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgCi0gICAgMjEyNDIsIDI1NiwgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgCi0gICAgMjEzMzgsIDI1NiwgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgCi0gICAgMTMzNjc2LCAyNTYsIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAKLSAgICAyMTQ4OSwgMjU2LCAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAKLSAgICAyMTY2NiwgMjU2LCAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAKLSAgICAyMTg5MiwgMjU2LCAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAKLSAgICAyMjAyMiwgMjU2LCAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAKLSAgICAyMjQ3OCwgMjU2LCAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAKLSAgICAyMjcwMCwgMjU2LCAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgCi0gICAgMjI4MTgsIDI1NiwgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAKLSAgICAyMzA3OSwgMjU2LCAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAKLSAgICAyMzM1OCwgMjU2LCAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgCi0gICAgMjM1MzksIDI1NiwgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIAotICAgIDE0MjA5LCAyNTYsIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAKLSAgICAyMzg3NSwgMjU2LCAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgCi0gICAgMjQwMzQsIDI1NiwgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgCi0gICAgMTQ0MzQsIDI1NiwgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIAotICAgIDI0MjY2LCAyNTYsIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAKLSAgICAyNTYsIDI0MzU0LCAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIAotICAgIDI1NiwgMjQ0MjcsIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIAotICAgIDI1NiwgMjQ3MDUsIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAKLSAgICAyNTYsIDI0OTA0LCAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAKLSAgICAyNTYsIDI1MDEwLCAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAKLSAgICAyNTYsIDI1MTA0LCAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAKLSAgICAyNTYsIDE0MjA5MiwgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgCi0gICAgMjU2LCAxNDIzMjEsIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIAotICAgIDI1NiwgMjU3MjYsIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIAotICAgIDI1NiwgMTQzMzcwLCAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAKLSAgICAyNTYsIDE1MTEyLCAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAKLSAgICAyNTYsIDMyOTQxLCAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAKLSAgICAyNTYsIDI2NDUxLCAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgCi0gICAgMjU2LCAyNjc1NywgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIAotICAgIDI1NiwgMjY5NDYsIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAKLSAgICAyNTYsIDE1Mzg0LCAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgCi0gICAgMjU2LCAyNzU1MSwgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIAotICAgIDE0NjE3MCwgMjU2LCAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgCi0gICAgMjc5MjYsIDI1NiwgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgCi0gICAgMjgwMzcsIDI1NiwgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIAotICAgIDI4MzYzLCAyNTYsIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgCi0gICAgMTQ3MzQyLCAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIAotICAgIDI4NzQ2LCAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAKLSAgICAxNDgwNjcsIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIAotICAgIDE0OTAwMCwgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAKLSAgICAyNTYsIDI5NTc5LCAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAKLSAgICAyNTYsIDI5Nzg4LCAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAKLSAgICAyNTYsIDE1MDU4MiwgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIAotICAgIDMwMjI0LCAyNTYsIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAKLSAgICAyNTYsIDMwNDUyLCAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAKLSAgICAzMDQ5NCwgMjU2LCAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAKLSAgICAxNjQ1NCwgMjU2LCAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgCi0gICAgMTY2MTEsIDI1NiwgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIAotICAgIDI1NiwgMzEyMTEsIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAKLSAgICAyNTYsIDE1NDI3OSwgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIAotICAgIDMxNjg2LCAyNTYsIDMxNjg5LCAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAKLSAgICAzMTk3NiwgMjU2LCAzMTk3MSwgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgCi0gICAgMzIxOTksIDI1NiwgMzIyNTgsIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAKLSAgICAxNzI0MSwgMjU2LCAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIAotICAgIDMyNzczLCAyNTYsIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAKLSAgICAyNTYsIDE0NDIyMywgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgCi0gICAgMjU2LCAyMzIyMSwgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgCi0gICAgMzMyODEsIDI1NiwgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgCi0gICAgMzM0MzcsIDI1NiwgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgCi0gICAgMTU4NTI0LCAyNTYsIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIAotICAgIDMzNzI1LCAyNTYsIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIAotICAgIDMzNzU2LCAyNTYsIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAKLSAgICAyNTYsIDM0MDM1LCAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIAotICAgIDI1NiwgMTc3NjEsIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgCi0gICAgMjU2LCAzNDQwNywgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgCi0gICAgMjU2LCAzNDY4MSwgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgCi0gICAgMjU2LCAzNDgxNywgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIAotICAgIDI1NiwgMzUwMzgsIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgCi0gICAgMjU2LCAxODExMCwgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgCi0gICAgMjU2LCAxNjI5ODQsIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAKLSAgICAyNTYsIDEzMzEyNCwgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIAotICAgIDI1NiwgMzY2NjQsIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgCi0gICAgMjU2LCAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIAotICAgIDI1NiwgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAKLSAgICAyNTYsIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIAotICAgIDI1NiwgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgCi0gICAgMjU2LCAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAKLSAgICAyNTYsIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAKLSAgICAyNTYsIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgCi0gICAgMjU2LCA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAKLSAgICAxNzI2ODksIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgCi0gICAgNDA3MTksIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKKyAgICA5NzcsIDI2MiwgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTEzLCAyNjIsIDkxNCwgMjYyLCAKKyAgICA5MTUsIDI2MiwgOTE2LCAyNjIsIDkxNywgMjYyLCA5MTgsIDI2MiwgOTE5LCAyNjIsIDkyMCwgMjYyLCA5MjEsIDI2MiwgCisgICAgOTIyLCAyNjIsIDkyMywgMjYyLCA5MjQsIDI2MiwgOTI1LCAyNjIsIDkyNiwgMjYyLCA5MjcsIDI2MiwgOTI4LCAyNjIsIAorICAgIDkyOSwgMjYyLCAxMDEyLCAyNjIsIDkzMSwgMjYyLCA5MzIsIDI2MiwgOTMzLCAyNjIsIDkzNCwgMjYyLCA5MzUsIDI2MiwgCisgICAgOTM2LCAyNjIsIDkzNywgMjYyLCA4NzExLCAyNjIsIDk0NSwgMjYyLCA5NDYsIDI2MiwgOTQ3LCAyNjIsIDk0OCwgMjYyLCAKKyAgICA5NDksIDI2MiwgOTUwLCAyNjIsIDk1MSwgMjYyLCA5NTIsIDI2MiwgOTUzLCAyNjIsIDk1NCwgMjYyLCA5NTUsIDI2MiwgCisgICAgOTU2LCAyNjIsIDk1NywgMjYyLCA5NTgsIDI2MiwgOTU5LCAyNjIsIDk2MCwgMjYyLCA5NjEsIDI2MiwgOTYyLCAyNjIsIAorICAgIDk2MywgMjYyLCA5NjQsIDI2MiwgOTY1LCAyNjIsIDk2NiwgMjYyLCA5NjcsIDI2MiwgOTY4LCAyNjIsIDk2OSwgMjYyLCAKKyAgICA4NzA2LCAyNjIsIDEwMTMsIDI2MiwgOTc3LCAyNjIsIDEwMDgsIDI2MiwgOTgxLCAyNjIsIDEwMDksIDI2MiwgOTgyLCAyNjIsIAorICAgIDkxMywgMjYyLCA5MTQsIDI2MiwgOTE1LCAyNjIsIDkxNiwgMjYyLCA5MTcsIDI2MiwgOTE4LCAyNjIsIDkxOSwgMjYyLCAKKyAgICA5MjAsIDI2MiwgOTIxLCAyNjIsIDkyMiwgMjYyLCA5MjMsIDI2MiwgOTI0LCAyNjIsIDkyNSwgMjYyLCA5MjYsIDI2MiwgCisgICAgOTI3LCAyNjIsIDkyOCwgMjYyLCA5MjksIDI2MiwgMTAxMiwgMjYyLCA5MzEsIDI2MiwgOTMyLCAyNjIsIDkzMywgMjYyLCAKKyAgICA5MzQsIDI2MiwgOTM1LCAyNjIsIDkzNiwgMjYyLCA5MzcsIDI2MiwgODcxMSwgMjYyLCA5NDUsIDI2MiwgOTQ2LCAyNjIsIAorICAgIDk0NywgMjYyLCA5NDgsIDI2MiwgOTQ5LCAyNjIsIDk1MCwgMjYyLCA5NTEsIDI2MiwgOTUyLCAyNjIsIDk1MywgMjYyLCAKKyAgICA5NTQsIDI2MiwgOTU1LCAyNjIsIDk1NiwgMjYyLCA5NTcsIDI2MiwgOTU4LCAyNjIsIDk1OSwgMjYyLCA5NjAsIDI2MiwgCisgICAgOTYxLCAyNjIsIDk2MiwgMjYyLCA5NjMsIDI2MiwgOTY0LCAyNjIsIDk2NSwgMjYyLCA5NjYsIDI2MiwgOTY3LCAyNjIsIAorICAgIDk2OCwgMjYyLCA5NjksIDI2MiwgODcwNiwgMjYyLCAxMDEzLCAyNjIsIDk3NywgMjYyLCAxMDA4LCAyNjIsIDk4MSwgMjYyLCAKKyAgICAxMDA5LCAyNjIsIDk4MiwgMjYyLCA5MTMsIDI2MiwgOTE0LCAyNjIsIDkxNSwgMjYyLCA5MTYsIDI2MiwgOTE3LCAyNjIsIAorICAgIDkxOCwgMjYyLCA5MTksIDI2MiwgOTIwLCAyNjIsIDkyMSwgMjYyLCA5MjIsIDI2MiwgOTIzLCAyNjIsIDkyNCwgMjYyLCAKKyAgICA5MjUsIDI2MiwgOTI2LCAyNjIsIDkyNywgMjYyLCA5MjgsIDI2MiwgOTI5LCAyNjIsIDEwMTIsIDI2MiwgOTMxLCAyNjIsIAorICAgIDkzMiwgMjYyLCA5MzMsIDI2MiwgOTM0LCAyNjIsIDkzNSwgMjYyLCA5MzYsIDI2MiwgOTM3LCAyNjIsIDg3MTEsIDI2MiwgCisgICAgOTQ1LCAyNjIsIDk0NiwgMjYyLCA5NDcsIDI2MiwgOTQ4LCAyNjIsIDk0OSwgMjYyLCA5NTAsIDI2MiwgOTUxLCAyNjIsIAorICAgIDk1MiwgMjYyLCA5NTMsIDI2MiwgOTU0LCAyNjIsIDk1NSwgMjYyLCA5NTYsIDI2MiwgOTU3LCAyNjIsIDk1OCwgMjYyLCAKKyAgICA5NTksIDI2MiwgOTYwLCAyNjIsIDk2MSwgMjYyLCA5NjIsIDI2MiwgOTYzLCAyNjIsIDk2NCwgMjYyLCA5NjUsIDI2MiwgCisgICAgOTY2LCAyNjIsIDk2NywgMjYyLCA5NjgsIDI2MiwgOTY5LCAyNjIsIDg3MDYsIDI2MiwgMTAxMywgMjYyLCA5NzcsIDI2MiwgCisgICAgMTAwOCwgMjYyLCA5ODEsIDI2MiwgMTAwOSwgMjYyLCA5ODIsIDI2MiwgOTg4LCAyNjIsIDk4OSwgMjYyLCA0OCwgMjYyLCAKKyAgICA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCAKKyAgICA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCAKKyAgICA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCAKKyAgICA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCA0OSwgMjYyLCA1MCwgMjYyLCAKKyAgICA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCA1NywgMjYyLCA0OCwgMjYyLCAKKyAgICA0OSwgMjYyLCA1MCwgMjYyLCA1MSwgMjYyLCA1MiwgMjYyLCA1MywgMjYyLCA1NCwgMjYyLCA1NSwgMjYyLCA1NiwgMjYyLCAKKyAgICA1NywgMjYyLCAxNTc1LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgCisgICAgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAKKyAgICAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAKKyAgICAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIAorICAgIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE3MjIsIDI2MiwgMTY5NywgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIAorICAgIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDQsIDI2MiwgCisgICAgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgCisgICAgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5NCwgMjYyLCAKKyAgICAxNTgwLCAyNjIsIDE1ODEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAyNjIsIAorICAgIDE3MjIsIDI2MiwgMTY0NywgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTYwNywgMjYyLCAxNTgxLCAyNjIsIDE1OTEsIAorICAgIDI2MiwgMTYxMCwgMjYyLCAxNjAzLCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIDE1OTMsIDI2MiwgCisgICAgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgCisgICAgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgMjYyLCAxNjQ2LCAyNjIsIDE2OTcsIDI2MiwgMTU3NSwgMjYyLCAKKyAgICAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA3LCAyNjIsIDE2MDgsIDI2MiwgMTU4NiwgMjYyLCAxNTgxLCAKKyAgICAyNjIsIDE1OTEsIDI2MiwgMTYxMCwgMjYyLCAxNjA0LCAyNjIsIDE2MDUsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIAorICAgIDE1OTMsIDI2MiwgMTYwMSwgMjYyLCAxNTg5LCAyNjIsIDE2MDIsIDI2MiwgMTU4NSwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIAorICAgIDI2MiwgMTU3OSwgMjYyLCAxNTgyLCAyNjIsIDE1ODQsIDI2MiwgMTU5MCwgMjYyLCAxNTkyLCAyNjIsIDE1OTQsIDI2MiwgCisgICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgCisgICAgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgMjYyLCAKKyAgICAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAKKyAgICAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgNTE0LCA0OCwgNDYsIDUxNCwgCisgICAgNDgsIDQ0LCA1MTQsIDQ5LCA0NCwgNTE0LCA1MCwgNDQsIDUxNCwgNTEsIDQ0LCA1MTQsIDUyLCA0NCwgNTE0LCA1MywgNDQsIAorICAgIDUxNCwgNTQsIDQ0LCA1MTQsIDU1LCA0NCwgNTE0LCA1NiwgNDQsIDUxNCwgNTcsIDQ0LCA3NzAsIDQwLCA2NSwgNDEsIDc3MCwgCisgICAgNDAsIDY2LCA0MSwgNzcwLCA0MCwgNjcsIDQxLCA3NzAsIDQwLCA2OCwgNDEsIDc3MCwgNDAsIDY5LCA0MSwgNzcwLCA0MCwgCisgICAgNzAsIDQxLCA3NzAsIDQwLCA3MSwgNDEsIDc3MCwgNDAsIDcyLCA0MSwgNzcwLCA0MCwgNzMsIDQxLCA3NzAsIDQwLCA3NCwgCisgICAgNDEsIDc3MCwgNDAsIDc1LCA0MSwgNzcwLCA0MCwgNzYsIDQxLCA3NzAsIDQwLCA3NywgNDEsIDc3MCwgNDAsIDc4LCA0MSwgCisgICAgNzcwLCA0MCwgNzksIDQxLCA3NzAsIDQwLCA4MCwgNDEsIDc3MCwgNDAsIDgxLCA0MSwgNzcwLCA0MCwgODIsIDQxLCA3NzAsIAorICAgIDQwLCA4MywgNDEsIDc3MCwgNDAsIDg0LCA0MSwgNzcwLCA0MCwgODUsIDQxLCA3NzAsIDQwLCA4NiwgNDEsIDc3MCwgNDAsIAorICAgIDg3LCA0MSwgNzcwLCA0MCwgODgsIDQxLCA3NzAsIDQwLCA4OSwgNDEsIDc3MCwgNDAsIDkwLCA0MSwgNzcwLCAxMjMwOCwgCisgICAgODMsIDEyMzA5LCAyNjMsIDY3LCAyNjMsIDgyLCA1MTksIDY3LCA2OCwgNTE5LCA4NywgOTAsIDI2NiwgNjUsIDI2NiwgNjYsIAorICAgIDI2NiwgNjcsIDI2NiwgNjgsIDI2NiwgNjksIDI2NiwgNzAsIDI2NiwgNzEsIDI2NiwgNzIsIDI2NiwgNzMsIDI2NiwgNzQsIAorICAgIDI2NiwgNzUsIDI2NiwgNzYsIDI2NiwgNzcsIDI2NiwgNzgsIDI2NiwgNzksIDI2NiwgODAsIDI2NiwgODEsIDI2NiwgODIsIAorICAgIDI2NiwgODMsIDI2NiwgODQsIDI2NiwgODUsIDI2NiwgODYsIDI2NiwgODcsIDI2NiwgODgsIDI2NiwgODksIDI2NiwgOTAsIAorICAgIDUyMiwgNzIsIDg2LCA1MjIsIDc3LCA4NiwgNTIyLCA4MywgNjgsIDUyMiwgODMsIDgzLCA3NzgsIDgwLCA4MCwgODYsIDUyMiwgCisgICAgODcsIDY3LCA1MTUsIDc3LCA2NywgNTE1LCA3NywgNjgsIDUyMiwgNjgsIDc0LCA1MjIsIDEyNDExLCAxMjM2MywgNTIyLCAKKyAgICAxMjQ2NywgMTI0NjcsIDI2NiwgMTI0NjksIDI2NiwgMjUxNjMsIDI2NiwgMjMzODMsIDI2NiwgMjE0NTIsIDI2NiwgMTI0ODcsIAorICAgIDI2NiwgMjAxMDgsIDI2NiwgMjI4MTAsIDI2NiwgMzUyOTksIDI2NiwgMjI4MjUsIDI2NiwgMjAxMzIsIDI2NiwgMjYxNDQsIAorICAgIDI2NiwgMjg5NjEsIDI2NiwgMjYwMDksIDI2NiwgMjEwNjksIDI2NiwgMjQ0NjAsIDI2NiwgMjA4NzcsIDI2NiwgMjYwMzIsIAorICAgIDI2NiwgMjEwMjEsIDI2NiwgMzIwNjYsIDI2NiwgMjk5ODMsIDI2NiwgMzYwMDksIDI2NiwgMjI3NjgsIDI2NiwgMjE1NjEsIAorICAgIDI2NiwgMjg0MzYsIDI2NiwgMjUyMzcsIDI2NiwgMjU0MjksIDI2NiwgMTk5NjgsIDI2NiwgMTk5NzcsIDI2NiwgMzY5MzgsIAorICAgIDI2NiwgMjQwMzgsIDI2NiwgMjAwMTMsIDI2NiwgMjE0OTEsIDI2NiwgMjUzNTEsIDI2NiwgMzYyMDgsIDI2NiwgMjUxNzEsIAorICAgIDI2NiwgMzExMDUsIDI2NiwgMzEzNTQsIDI2NiwgMjE1MTIsIDI2NiwgMjgyODgsIDI2NiwgMjYzNzcsIDI2NiwgMjYzNzYsIAorICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgNzcwLCAxMjMwOCwgCisgICAgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAxMjMwOSwgNzcwLCAKKyAgICAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIDMwNDIzLCAxMjMwOSwgCisgICAgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgMjQ0NzEsIDI2MywgCisgICAgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIDIwMzIwLCAyNTYsIAorICAgIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIDIwNzExLCAyNTYsIAorICAgIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAyMDgzNiwgMjU2LCAKKyAgICAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgMTMyNDI3LCAyNTYsIAorICAgIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIDE2ODQxNSwgMjU2LCAKKyAgICAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAyMTEwNiwgMjU2LCAKKyAgICAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTI0MiwgMjU2LCAKKyAgICAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAyMTMzOCwgMjU2LCAKKyAgICAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAxMzM2NzYsIDI1NiwgCisgICAgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIDIxNDg5LCAyNTYsIAorICAgIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIDIxNjY2LCAyNTYsIAorICAgIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIDIxODkyLCAyNTYsIAorICAgIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIDIyMDIyLCAyNTYsIAorICAgIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIDIyNDc4LCAyNTYsIAorICAgIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIDIyNzAwLCAyNTYsIAorICAgIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAyMjgxOCwgMjU2LCAKKyAgICAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIDIzMDc5LCAyNTYsIAorICAgIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIDIzMzU4LCAyNTYsIAorICAgIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAyMzUzOSwgMjU2LCAKKyAgICAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgMTQyMDksIDI1NiwgCisgICAgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIDIzODc1LCAyNTYsIAorICAgIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAyNDAzNCwgMjU2LCAKKyAgICAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAxNDQzNCwgMjU2LCAKKyAgICAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgMjQyNjYsIDI1NiwgCisgICAgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIDI1NiwgMjQzNTQsIAorICAgIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgMjU2LCAyNDQyNywgCisgICAgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgMjU2LCAyNDcwNSwgCisgICAgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIDI1NiwgMjQ5MDQsIAorICAgIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwMTAsIAorICAgIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIDI1NiwgMjUxMDQsIAorICAgIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIDI1NiwgMTQyMDkyLCAKKyAgICAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAyNTYsIDE0MjMyMSwgCisgICAgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgMjU2LCAyNTcyNiwgCisgICAgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgMjU2LCAxNDMzNzAsIAorICAgIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIDI1NiwgMTUxMTIsIAorICAgIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIDI1NiwgMzI5NDEsIAorICAgIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIDI1NiwgMjY0NTEsIAorICAgIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAyNTYsIDI2NzU3LCAKKyAgICAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgMjU2LCAyNjk0NiwgCisgICAgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIDI1NiwgMTUzODQsIAorICAgIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAyNTYsIDI3NTUxLCAKKyAgICAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgMTQ2MTcwLCAyNTYsIAorICAgIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAyNzkyNiwgMjU2LCAKKyAgICAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAyODAzNywgMjU2LCAKKyAgICAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgMjgzNjMsIDI1NiwgCisgICAgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAxNDczNDIsIAorICAgIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgMjg3NDYsIAorICAgIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIDE0ODA2NywgCisgICAgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgMTQ5MDAwLCAKKyAgICAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIDI1NiwgMjk1NzksIAorICAgIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIDI1NiwgMjk3ODgsIAorICAgIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIDI1NiwgMTUwNTgyLCAKKyAgICAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgMzAyMjQsIDI1NiwgCisgICAgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIDI1NiwgMzA0NTIsIAorICAgIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIDMwNDk0LCAyNTYsIAorICAgIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIDE2NDU0LCAyNTYsIAorICAgIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAxNjYxMSwgMjU2LCAKKyAgICAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgMjU2LCAzMTIxMSwgCisgICAgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIDI1NiwgMTU0Mjc5LCAKKyAgICAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgMzE2ODYsIDI1NiwgMzE2ODksIAorICAgIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIDMxOTc2LCAyNTYsIDMxOTcxLCAKKyAgICAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAzMjE5OSwgMjU2LCAzMjI1OCwgCisgICAgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIDE3MjQxLCAyNTYsIAorICAgIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgMzI3NzMsIDI1NiwgCisgICAgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIDI1NiwgMTQ0MjIzLCAKKyAgICAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAyNTYsIDIzMjIxLCAKKyAgICAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAzMzI4MSwgMjU2LCAKKyAgICAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAzMzQzNywgMjU2LCAKKyAgICAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAxNTg1MjQsIDI1NiwgCisgICAgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgMzM3MjUsIDI1NiwgCisgICAgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgMzM3NTYsIDI1NiwgCisgICAgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIDI1NiwgMzQwMzUsIAorICAgIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgMjU2LCAxNzc2MSwgCisgICAgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAyNTYsIDM0NDA3LCAKKyAgICAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAyNTYsIDM0NjgxLCAKKyAgICAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAyNTYsIDM0ODE3LCAKKyAgICAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgMjU2LCAzNTAzOCwgCisgICAgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAyNTYsIDE4MTEwLCAKKyAgICAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAyNTYsIDE2Mjk4NCwgCisgICAgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIDI1NiwgMTMzMTI0LCAKKyAgICAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgMjU2LCAzNjY2NCwgCisgICAgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAyNTYsIAorICAgIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgMjU2LCAKKyAgICAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIDI1NiwgCisgICAgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgMjU2LCAKKyAgICAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAyNTYsIAorICAgIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIDI1NiwgCisgICAgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIDI1NiwgCisgICAgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAyNTYsIAorICAgIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIDE3MjY4OSwgCisgICAgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCA0MDcxOSwgCisgICAgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAogfTsKIAogLyogaW5kZXggdGFibGVzIGZvciB0aGUgZGVjb21wb3NpdGlvbiBkYXRhICovCi0jZGVmaW5lIERFQ09NUF9TSElGVCA4CisjZGVmaW5lIERFQ09NUF9TSElGVCA3CiBzdGF0aWMgdW5zaWduZWQgY2hhciBkZWNvbXBfaW5kZXgxW10gPSB7Ci0gICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMTYsIDcsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgNywgNywgNywgNywgNywgMjUsIAotICAgIDcsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMzQsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MiwgNDMsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQ0LCA3LCA3LCA0NSwgCi0gICAgNDYsIDQ3LCA0OCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNDksIDcsIDcsIDUwLCA1MSwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNTIsIDUzLCA1NCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDExLCAxMiwgMCwgMCwgMCwgMCwgMTMsIDE0LCAxNSwgMCwgCisgICAgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgsIDAsIDAsIDAsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIAorICAgIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAwLCA0MiwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCAKKyAgICA0NSwgMCwgMCwgNDYsIDAsIDQ3LCAwLCAwLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5LCA2MCwgNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDYyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIAorICAgIDc0LCA3NSwgNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3LCA3OCwgMCwgMCwgMCwgNzksIDAsIDAsIDgwLCAwLCAKKyAgICA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgzLCAwLCAwLCAwLCAwLCA4NCwgODUsIAorICAgIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDkyLCA5MywgMCwgMCwgMCwgMCwgOTQsIDk1LCA5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGRlY29tcF9pbmRleDJbXSA9IHsKQEAgLTM5NzgsMzggKzQ1MDIsMjIgQEAKICAgICAwLCAwLCAwLCAwLCAxMDY2LCAxMDY5LCAxMDcyLCAxMDc1LCAwLCAwLCAxMDc4LCAxMDgxLCAwLCAwLCAxMDg0LCAxMDg3LCAKICAgICAxMDkwLCAxMDkzLCAxMDk2LCAxMDk5LCAwLCAwLCAxMTAyLCAxMTA1LCAxMTA4LCAxMTExLCAxMTE0LCAxMTE3LCAwLCAwLCAKICAgICAxMTIwLCAxMTIzLCAxMTI2LCAxMTI5LCAxMTMyLCAxMTM1LCAxMTM4LCAxMTQxLCAxMTQ0LCAxMTQ3LCAxMTUwLCAxMTUzLCAKLSAgICAwLCAwLCAxMTU2LCAxMTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY1LCAxMTY4LCAxMTcxLCAxMTc0LCAKLSAgICAxMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgwLCAxMTgzLCAxMTg2LCAxMTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTkyLCAwLCAxMTk1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTU2LCAxMTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTYyLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY1LCAxMTY4LCAxMTcxLCAxMTc0LCAxMTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTgwLCAxMTgzLCAxMTg2LCAxMTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTkyLCAwLCAxMTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAxLCAwLCAwLCAwLCAKQEAgLTQwMzEsMTkxICs0NTM5LDE3NSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNjcsIDAsIDAsIDEyNzAsIDEyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNzYsIDEyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODUsIDEyODgsIDEyOTEsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjcsIDAsIDAsIDEyNzAsIDEyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzYsIDEyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEyODUsIDEyODgsIDEyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDAsIDEzMDMsIDAsIAotICAgIDEzMDYsIDEzMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTIsIDEzMTUsIDEzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDAsIDEzMDMsIDAsIDEzMDYsIDEzMDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjEsIDAsIDEzMjQsIDEzMjcsIDEzMzAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMTIsIDEzMTUsIDEzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzYsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzksIDEzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzMjEsIDAsIDEzMjQsIDEzMjcsIDEzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzMzksIDEzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNTAsIDAsIDAsIDAsIDAsIDEzNTMsIDAsIDAsIDAsIDAsIDEzNTYsIDAsIDAsIDAsIDAsIDEzNTksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjUsIDAsIAorICAgIDEzNjgsIDEzNzEsIDEzNzQsIDEzNzcsIDEzODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzODksIDAsIDAsIDAsIDAsIDEzOTIsIDAsIDAsIDAsIDAsIDEzOTUsIDAsIDAsIDAsIDAsIDEzOTgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDcsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDksIDAsIDE0MTIsIDAsIDE0MTUsIDAsIDE0MTgsIDAsIDE0MjEsIDAsIDAsIAorICAgIDAsIDE0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjcsIDAsIDE0MzAsIAorICAgIDAsIDAsIDE0MzMsIDE0MzYsIDAsIDE0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDIsIDE0NDQsIDE0NDYsIDAsIAorICAgIDE0NDgsIDE0NTAsIDE0NTIsIDE0NTQsIDE0NTYsIDE0NTgsIDE0NjAsIDE0NjIsIDE0NjQsIDE0NjYsIDE0NjgsIDAsIAorICAgIDE0NzAsIDE0NzIsIDE0NzQsIDE0NzYsIDE0NzgsIDE0ODAsIDE0ODIsIDE0ODQsIDE0ODYsIDE0ODgsIDE0OTAsIDE0OTIsIAorICAgIDE0OTQsIDE0OTYsIDE0OTgsIDE1MDAsIDE1MDIsIDE1MDQsIDAsIDE1MDYsIDE1MDgsIDE1MTAsIDE1MTIsIDE1MTQsIAorICAgIDE1MTYsIDE1MTgsIDE1MjAsIDE1MjIsIDE1MjQsIDE1MjYsIDE1MjgsIDE1MzAsIDE1MzIsIDE1MzQsIDE1MzYsIDE1MzgsIAorICAgIDE1NDAsIDE1NDIsIDE1NDQsIDE1NDYsIDE1NDgsIDE1NTAsIDE1NTIsIDE1NTQsIDE1NTYsIDE1NTgsIDE1NjAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTAsIDAsIDAsIDAsIDAsIDEzNTMsIDAsIDAsIDAsIDAsIAotICAgIDEzNTYsIDAsIDAsIDAsIDAsIDEzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNjUsIDAsIDEzNjgsIDEzNzEsIDEzNzQsIDEzNzcsIDEzODAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEzODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODksIDAsIDAsIDAsIDAsIDEzOTIsIDAsIDAsIDAsIDAsIDEzOTUsIDAsIAotICAgIDAsIDAsIDAsIDEzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDEsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1NjQsIDE1NjYsIDE1NjgsIDE1NzAsIDE1NzIsIDE1NzQsIDE1NzYsIDE1NzgsIDE1ODAsIDE1ODIsIDE1ODQsIDE1ODYsIAorICAgIDE1ODgsIDE1OTAsIDE1OTIsIDE1OTQsIDE1OTYsIDE1OTgsIDE2MDAsIDE2MDIsIDE2MDQsIDE2MDYsIDE2MDgsIDE2MTAsIAorICAgIDE2MTIsIDE2MTQsIDE2MTYsIDE2MTgsIDE2MjAsIDE2MjIsIDE2MjQsIDE2MjYsIDE2MjgsIDE2MzAsIDE2MzIsIDE2MzQsIAorICAgIDE2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzgsIDE2NDEsIDE2NDQsIAorICAgIDE2NDcsIDE2NTAsIDE2NTMsIDE2NTYsIDE2NTksIDE2NjIsIDE2NjUsIDE2NjgsIDE2NzEsIDE2NzQsIDE2NzcsIDE2ODAsIAorICAgIDE2ODMsIDE2ODYsIDE2ODksIDE2OTIsIDE2OTUsIDE2OTgsIDE3MDEsIDE3MDQsIDE3MDcsIDE3MTAsIDE3MTMsIDE3MTYsIAorICAgIDE3MTksIDE3MjIsIDE3MjUsIDE3MjgsIDE3MzEsIDE3MzQsIDE3MzcsIDE3NDAsIDE3NDMsIDE3NDYsIDE3NDksIDE3NTIsIAorICAgIDE3NTUsIDE3NTgsIDE3NjEsIDE3NjQsIDE3NjcsIDE3NzAsIDE3NzMsIDE3NzYsIDE3NzksIDE3ODIsIDE3ODUsIDE3ODgsIAorICAgIDE3OTEsIDE3OTQsIDE3OTcsIDE4MDAsIDE4MDMsIDE4MDYsIDE4MDksIDE4MTIsIDE4MTUsIDE4MTgsIDE4MjEsIDE4MjQsIAorICAgIDE4MjcsIDE4MzAsIDE4MzMsIDE4MzYsIDE4MzksIDE4NDIsIDE4NDUsIDE4NDgsIDE4NTEsIDE4NTQsIDE4NTcsIDE4NjAsIAorICAgIDE4NjMsIDE4NjYsIDE4NjksIDE4NzIsIDE4NzUsIDE4NzgsIDE4ODEsIDE4ODQsIDE4ODcsIDE4OTAsIDE4OTMsIDE4OTYsIAorICAgIDE4OTksIDE5MDIsIDE5MDUsIDE5MDgsIDE5MTEsIDE5MTQsIDE5MTcsIDE5MjAsIDE5MjMsIDE5MjYsIDE5MjksIDE5MzIsIAorICAgIDE5MzUsIDE5MzgsIDE5NDEsIDE5NDQsIDE5NDcsIDE5NTAsIDE5NTMsIDE5NTYsIDE5NTksIDE5NjIsIDE5NjUsIDE5NjgsIAorICAgIDE5NzEsIDE5NzQsIDE5NzcsIDE5ODAsIDE5ODMsIDE5ODYsIDE5ODksIDE5OTIsIDE5OTUsIDE5OTgsIDIwMDEsIDIwMDQsIAorICAgIDIwMDcsIDIwMTAsIDIwMTMsIDIwMTYsIDIwMTksIDIwMjIsIDIwMjUsIDIwMjgsIDIwMzEsIDIwMzQsIDIwMzcsIDIwNDAsIAorICAgIDIwNDMsIDIwNDYsIDIwNDksIDIwNTIsIDIwNTUsIDIwNTgsIDIwNjEsIDIwNjQsIDIwNjcsIDIwNzAsIDIwNzMsIDIwNzYsIAorICAgIDIwNzksIDIwODIsIDIwODUsIDIwODgsIDIwOTEsIDIwOTQsIDIwOTcsIDIxMDAsIDIxMDMsIDAsIDAsIDAsIDAsIDIxMDYsIAorICAgIDIxMDksIDIxMTIsIDIxMTUsIDIxMTgsIDIxMjEsIDIxMjQsIDIxMjcsIDIxMzAsIDIxMzMsIDIxMzYsIDIxMzksIDIxNDIsIAorICAgIDIxNDUsIDIxNDgsIDIxNTEsIDIxNTQsIDIxNTcsIDIxNjAsIDIxNjMsIDIxNjYsIDIxNjksIDIxNzIsIDIxNzUsIDIxNzgsIAorICAgIDIxODEsIDIxODQsIDIxODcsIDIxOTAsIDIxOTMsIDIxOTYsIDIxOTksIDIyMDIsIDIyMDUsIDIyMDgsIDIyMTEsIDIyMTQsIAorICAgIDIyMTcsIDIyMjAsIDIyMjMsIDIyMjYsIDIyMjksIDIyMzIsIDIyMzUsIDIyMzgsIDIyNDEsIDIyNDQsIDIyNDcsIDIyNTAsIAorICAgIDIyNTMsIDIyNTYsIDIyNTksIDIyNjIsIDIyNjUsIDIyNjgsIDIyNzEsIDIyNzQsIDIyNzcsIDIyODAsIDIyODMsIDIyODYsIAorICAgIDIyODksIDIyOTIsIDIyOTUsIDIyOTgsIDIzMDEsIDIzMDQsIDIzMDcsIDIzMTAsIDIzMTMsIDIzMTYsIDIzMTksIDIzMjIsIAorICAgIDIzMjUsIDIzMjgsIDIzMzEsIDIzMzQsIDIzMzcsIDIzNDAsIDIzNDMsIDIzNDYsIDIzNDksIDIzNTIsIDIzNTUsIDIzNTgsIAorICAgIDIzNjEsIDIzNjQsIDIzNjcsIDIzNzAsIDIzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNzYsIDIzNzksIDIzODIsIDIzODUsIAorICAgIDIzODgsIDIzOTEsIDIzOTQsIDIzOTcsIDI0MDAsIDI0MDMsIDI0MDYsIDI0MDksIDI0MTIsIDI0MTUsIDI0MTgsIDI0MjEsIAorICAgIDI0MjQsIDI0MjcsIDI0MzAsIDI0MzMsIDI0MzYsIDI0MzksIDAsIDAsIDI0NDIsIDI0NDUsIDI0NDgsIDI0NTEsIDI0NTQsIAorICAgIDI0NTcsIDAsIDAsIDI0NjAsIDI0NjMsIDI0NjYsIDI0NjksIDI0NzIsIDI0NzUsIDI0NzgsIDI0ODEsIDI0ODQsIDI0ODcsIAorICAgIDI0OTAsIDI0OTMsIDI0OTYsIDI0OTksIDI1MDIsIDI1MDUsIDI1MDgsIDI1MTEsIDI1MTQsIDI1MTcsIDI1MjAsIDI1MjMsIAorICAgIDI1MjYsIDI1MjksIDI1MzIsIDI1MzUsIDI1MzgsIDI1NDEsIDI1NDQsIDI1NDcsIDI1NTAsIDI1NTMsIDI1NTYsIDI1NTksIAorICAgIDI1NjIsIDI1NjUsIDI1NjgsIDI1NzEsIDAsIDAsIDI1NzQsIDI1NzcsIDI1ODAsIDI1ODMsIDI1ODYsIDI1ODksIDAsIDAsIAorICAgIDI1OTIsIDI1OTUsIDI1OTgsIDI2MDEsIDI2MDQsIDI2MDcsIDI2MTAsIDI2MTMsIDAsIDI2MTYsIDAsIDI2MTksIDAsIAorICAgIDI2MjIsIDAsIDI2MjUsIDI2MjgsIDI2MzEsIDI2MzQsIDI2MzcsIDI2NDAsIDI2NDMsIDI2NDYsIDI2NDksIDI2NTIsIAorICAgIDI2NTUsIDI2NTgsIDI2NjEsIDI2NjQsIDI2NjcsIDI2NzAsIDI2NzMsIDI2NzYsIDI2NzksIDI2ODEsIDI2ODQsIDI2ODYsIAorICAgIDI2ODksIDI2OTEsIDI2OTQsIDI2OTYsIDI2OTksIDI3MDEsIDI3MDQsIDI3MDYsIDI3MDksIDAsIDAsIDI3MTEsIDI3MTQsIAorICAgIDI3MTcsIDI3MjAsIDI3MjMsIDI3MjYsIDI3MjksIDI3MzIsIDI3MzUsIDI3MzgsIDI3NDEsIDI3NDQsIDI3NDcsIDI3NTAsIAorICAgIDI3NTMsIDI3NTYsIDI3NTksIDI3NjIsIDI3NjUsIDI3NjgsIDI3NzEsIDI3NzQsIDI3NzcsIDI3ODAsIDI3ODMsIDI3ODYsIAorICAgIDI3ODksIDI3OTIsIDI3OTUsIDI3OTgsIDI4MDEsIDI4MDQsIDI4MDcsIDI4MTAsIDI4MTMsIDI4MTYsIDI4MTksIDI4MjIsIAorICAgIDI4MjUsIDI4MjgsIDI4MzEsIDI4MzQsIDI4MzcsIDI4NDAsIDI4NDMsIDI4NDYsIDI4NDksIDI4NTIsIDI4NTUsIDI4NTgsIAorICAgIDI4NjEsIDI4NjQsIDI4NjcsIDAsIDI4NzAsIDI4NzMsIDI4NzYsIDI4NzksIDI4ODIsIDI4ODUsIDI4ODcsIDI4OTAsIAorICAgIDI4OTMsIDI4OTUsIDI4OTgsIDI5MDEsIDI5MDQsIDI5MDcsIDI5MTAsIDAsIDI5MTMsIDI5MTYsIDI5MTksIDI5MjIsIAorICAgIDI5MjQsIDI5MjcsIDI5MjksIDI5MzIsIDI5MzUsIDI5MzgsIDI5NDEsIDI5NDQsIDI5NDcsIDI5NTAsIDAsIDAsIDI5NTIsIAorICAgIDI5NTUsIDI5NTgsIDI5NjEsIDI5NjQsIDI5NjcsIDAsIDI5NjksIDI5NzIsIDI5NzUsIDI5NzgsIDI5ODEsIDI5ODQsIAorICAgIDI5ODcsIDI5ODksIDI5OTIsIDI5OTUsIDI5OTgsIDMwMDEsIDMwMDQsIDMwMDcsIDMwMTAsIDMwMTIsIDMwMTUsIDMwMTgsIAorICAgIDMwMjAsIDAsIDAsIDMwMjIsIDMwMjUsIDMwMjgsIDAsIDMwMzEsIDMwMzQsIDMwMzcsIDMwNDAsIDMwNDIsIDMwNDUsIAorICAgIDMwNDcsIDMwNTAsIDMwNTIsIDAsIDMwNTUsIDMwNTcsIDMwNTksIDMwNjEsIDMwNjMsIDMwNjUsIDMwNjcsIDMwNjksIAorICAgIDMwNzEsIDMwNzMsIDMwNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNzcsIDAsIDAsIDAsIDAsIDAsIDMwNzksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwODIsIDMwODQsIDMwODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwOTEsIDAsIDAsIDAsIDMwOTMsIDMwOTYsIDAsIDMxMDAsIDMxMDMsIDAsIDAsIDAsIDAsIDMxMDcsIDAsIDMxMTAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMTMsIDMxMTYsIDMxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMxMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMxMjksIDMxMzEsIDAsIDAsIDMxMzMsIDMxMzUsIDMxMzcsIDMxMzksIDMxNDEsIDMxNDMsIAorICAgIDMxNDUsIDMxNDcsIDMxNDksIDMxNTEsIDMxNTMsIDMxNTUsIDMxNTcsIDMxNTksIDMxNjEsIDMxNjMsIDMxNjUsIDMxNjcsIAorICAgIDMxNjksIDMxNzEsIDMxNzMsIDMxNzUsIDMxNzcsIDMxNzksIDMxODEsIDMxODMsIDMxODUsIDAsIDMxODcsIDMxODksIAorICAgIDMxOTEsIDMxOTMsIDMxOTUsIDMxOTcsIDMxOTksIDMyMDEsIDMyMDMsIDMyMDUsIDMyMDcsIDMyMDksIDMyMTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDMyMTYsIDMyMjAsIDMyMjQsIDMyMjYsIDAsIDMyMjksIDMyMzMsIDMyMzcsIDAsIDMyMzksIDMyNDIsIDMyNDQsIAorICAgIDMyNDYsIDMyNDgsIDMyNTAsIDMyNTIsIDMyNTQsIDMyNTYsIDMyNTgsIDMyNjAsIDAsIDMyNjIsIDMyNjQsIDAsIDAsIAorICAgIDMyNjcsIDMyNjksIDMyNzEsIDMyNzMsIDMyNzUsIDAsIDAsIDMyNzcsIDMyODAsIDMyODQsIDAsIDMyODcsIDAsIDMyODksIAorICAgIDAsIDMyOTEsIDAsIDMyOTMsIDMyOTUsIDMyOTcsIDMyOTksIDAsIDMzMDEsIDMzMDMsIDMzMDUsIDAsIDMzMDcsIDMzMDksIAorICAgIDMzMTEsIDMzMTMsIDMzMTUsIDMzMTcsIDMzMTksIDAsIDMzMjEsIDMzMjUsIDMzMjcsIDMzMjksIDMzMzEsIDMzMzMsIDAsIAorICAgIDAsIDAsIDAsIDMzMzUsIDMzMzcsIDMzMzksIDMzNDEsIDMzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNDUsIDMzNDksIAorICAgIDMzNTMsIDMzNTgsIDMzNjIsIDMzNjYsIDMzNzAsIDMzNzQsIDMzNzgsIDMzODIsIDMzODYsIDMzOTAsIDMzOTQsIDMzOTgsIAorICAgIDM0MDIsIDM0MDYsIDM0MDksIDM0MTEsIDM0MTQsIDM0MTgsIDM0MjEsIDM0MjMsIDM0MjYsIDM0MzAsIDM0MzUsIDM0MzgsIAorICAgIDM0NDAsIDM0NDMsIDM0NDcsIDM0NDksIDM0NTEsIDM0NTMsIDM0NTUsIDM0NTcsIDM0NjAsIDM0NjQsIDM0NjcsIDM0NjksIAorICAgIDM0NzIsIDM0NzYsIDM0ODEsIDM0ODQsIDM0ODYsIDM0ODksIDM0OTMsIDM0OTUsIDM0OTcsIDM0OTksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1MDUsIDM1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTEsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTQsIDM1MTcsIDM1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MjMsIDAsIDAsIDAsIDAsIDM1MjYsIAorICAgIDAsIDAsIDM1MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM1MzIsIDAsIDM1MzUsIDAsIDAsIDAsIDAsIDAsIDM1MzgsIDM1NDEsIDAsIDM1NDUsIDM1NDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NTIsIDAsIDAsIDM1NTUsIDAsIDAsIDM1NTgsIAorICAgIDAsIDM1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM1NjQsIDAsIDM1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NzAsIDM1NzMsIDM1NzYsIDM1NzksIAorICAgIDM1ODIsIDAsIDAsIDM1ODUsIDM1ODgsIDAsIDAsIDM1OTEsIDM1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OTcsIDM2MDAsIAorICAgIDAsIDAsIDM2MDMsIDM2MDYsIDAsIDAsIDM2MDksIDM2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MTUsIAorICAgIDM2MTgsIDM2MjEsIDM2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM2MjcsIDM2MzAsIDM2MzMsIDM2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MzksIDM2NDIsIAorICAgIDM2NDUsIDM2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MDksIDAsIDE0MTIsIDAsIAotICAgIDE0MTUsIDAsIDE0MTgsIDAsIDE0MjEsIDAsIDAsIDAsIDE0MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE0MjcsIDAsIDE0MzAsIDAsIDAsIDE0MzMsIDE0MzYsIDAsIDE0MzksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDIsIDE0NDQsIDE0NDYsIDAsIDE0NDgsIDE0NTAsIDE0NTIsIAotICAgIDE0NTQsIDE0NTYsIDE0NTgsIDE0NjAsIDE0NjIsIDE0NjQsIDE0NjYsIDE0NjgsIDAsIDE0NzAsIDE0NzIsIDE0NzQsIAotICAgIDE0NzYsIDE0NzgsIDE0ODAsIDE0ODIsIDE0ODQsIDE0ODYsIDE0ODgsIDE0OTAsIDE0OTIsIDE0OTQsIDE0OTYsIDE0OTgsIAotICAgIDE1MDAsIDE1MDIsIDE1MDQsIDAsIDE1MDYsIDE1MDgsIDE1MTAsIDE1MTIsIDE1MTQsIDE1MTYsIDE1MTgsIDE1MjAsIAotICAgIDE1MjIsIDE1MjQsIDE1MjYsIDE1MjgsIDE1MzAsIDE1MzIsIDE1MzQsIDE1MzYsIDE1MzgsIDE1NDAsIDE1NDIsIDE1NDQsIAotICAgIDE1NDYsIDE1NDgsIDE1NTAsIDE1NTIsIDE1NTQsIDE1NTYsIDE1NTgsIDE1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjQsIDE1NjYsIDE1NjgsIAotICAgIDE1NzAsIDE1NzIsIDE1NzQsIDE1NzYsIDE1NzgsIDE1ODAsIDE1ODIsIDE1ODQsIDE1ODYsIDE1ODgsIDE1OTAsIDE1OTIsIAotICAgIDE1OTQsIDE1OTYsIDE1OTgsIDE2MDAsIDE2MDIsIDE2MDQsIDE2MDYsIDE2MDgsIDE2MTAsIDE2MTIsIDE2MTQsIDE2MTYsIAotICAgIDE2MTgsIDE2MjAsIDE2MjIsIDE2MjQsIDE2MjYsIDE2MjgsIDE2MzAsIDE2MzIsIDE2MzQsIDE2MzYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzgsIDE2NDEsIDE2NDQsIDE2NDcsIDE2NTAsIDE2NTMsIAotICAgIDE2NTYsIDE2NTksIDE2NjIsIDE2NjUsIDE2NjgsIDE2NzEsIDE2NzQsIDE2NzcsIDE2ODAsIDE2ODMsIDE2ODYsIDE2ODksIAotICAgIDE2OTIsIDE2OTUsIDE2OTgsIDE3MDEsIDE3MDQsIDE3MDcsIDE3MTAsIDE3MTMsIDE3MTYsIDE3MTksIDE3MjIsIDE3MjUsIAotICAgIDE3MjgsIDE3MzEsIDE3MzQsIDE3MzcsIDE3NDAsIDE3NDMsIDE3NDYsIDE3NDksIDE3NTIsIDE3NTUsIDE3NTgsIDE3NjEsIAotICAgIDE3NjQsIDE3NjcsIDE3NzAsIDE3NzMsIDE3NzYsIDE3NzksIDE3ODIsIDE3ODUsIDE3ODgsIDE3OTEsIDE3OTQsIDE3OTcsIAotICAgIDE4MDAsIDE4MDMsIDE4MDYsIDE4MDksIDE4MTIsIDE4MTUsIDE4MTgsIDE4MjEsIDE4MjQsIDE4MjcsIDE4MzAsIDE4MzMsIAotICAgIDE4MzYsIDE4MzksIDE4NDIsIDE4NDUsIDE4NDgsIDE4NTEsIDE4NTQsIDE4NTcsIDE4NjAsIDE4NjMsIDE4NjYsIDE4NjksIAotICAgIDE4NzIsIDE4NzUsIDE4NzgsIDE4ODEsIDE4ODQsIDE4ODcsIDE4OTAsIDE4OTMsIDE4OTYsIDE4OTksIDE5MDIsIDE5MDUsIAotICAgIDE5MDgsIDE5MTEsIDE5MTQsIDE5MTcsIDE5MjAsIDE5MjMsIDE5MjYsIDE5MjksIDE5MzIsIDE5MzUsIDE5MzgsIDE5NDEsIAotICAgIDE5NDQsIDE5NDcsIDE5NTAsIDE5NTMsIDE5NTYsIDE5NTksIDE5NjIsIDE5NjUsIDE5NjgsIDE5NzEsIDE5NzQsIDE5NzcsIAotICAgIDE5ODAsIDE5ODMsIDE5ODYsIDE5ODksIDE5OTIsIDE5OTUsIDE5OTgsIDIwMDEsIDIwMDQsIDIwMDcsIDIwMTAsIDIwMTMsIAotICAgIDIwMTYsIDIwMTksIDIwMjIsIDIwMjUsIDIwMjgsIDIwMzEsIDIwMzQsIDIwMzcsIDIwNDAsIDIwNDMsIDIwNDYsIDIwNDksIAotICAgIDIwNTIsIDIwNTUsIDIwNTgsIDIwNjEsIDIwNjQsIDIwNjcsIDIwNzAsIDIwNzMsIDIwNzYsIDIwNzksIDIwODIsIDIwODUsIAotICAgIDIwODgsIDIwOTEsIDIwOTQsIDIwOTcsIDIxMDAsIDIxMDMsIDAsIDAsIDAsIDAsIDIxMDYsIDIxMDksIDIxMTIsIDIxMTUsIAotICAgIDIxMTgsIDIxMjEsIDIxMjQsIDIxMjcsIDIxMzAsIDIxMzMsIDIxMzYsIDIxMzksIDIxNDIsIDIxNDUsIDIxNDgsIDIxNTEsIAotICAgIDIxNTQsIDIxNTcsIDIxNjAsIDIxNjMsIDIxNjYsIDIxNjksIDIxNzIsIDIxNzUsIDIxNzgsIDIxODEsIDIxODQsIDIxODcsIAotICAgIDIxOTAsIDIxOTMsIDIxOTYsIDIxOTksIDIyMDIsIDIyMDUsIDIyMDgsIDIyMTEsIDIyMTQsIDIyMTcsIDIyMjAsIDIyMjMsIAotICAgIDIyMjYsIDIyMjksIDIyMzIsIDIyMzUsIDIyMzgsIDIyNDEsIDIyNDQsIDIyNDcsIDIyNTAsIDIyNTMsIDIyNTYsIDIyNTksIAotICAgIDIyNjIsIDIyNjUsIDIyNjgsIDIyNzEsIDIyNzQsIDIyNzcsIDIyODAsIDIyODMsIDIyODYsIDIyODksIDIyOTIsIDIyOTUsIAotICAgIDIyOTgsIDIzMDEsIDIzMDQsIDIzMDcsIDIzMTAsIDIzMTMsIDIzMTYsIDIzMTksIDIzMjIsIDIzMjUsIDIzMjgsIDIzMzEsIAotICAgIDIzMzQsIDIzMzcsIDIzNDAsIDIzNDMsIDIzNDYsIDIzNDksIDIzNTIsIDIzNTUsIDIzNTgsIDIzNjEsIDIzNjQsIDIzNjcsIAotICAgIDIzNzAsIDIzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNzYsIDIzNzksIDIzODIsIDIzODUsIDIzODgsIDIzOTEsIDIzOTQsIAotICAgIDIzOTcsIDI0MDAsIDI0MDMsIDI0MDYsIDI0MDksIDI0MTIsIDI0MTUsIDI0MTgsIDI0MjEsIDI0MjQsIDI0MjcsIDI0MzAsIAotICAgIDI0MzMsIDI0MzYsIDI0MzksIDAsIDAsIDI0NDIsIDI0NDUsIDI0NDgsIDI0NTEsIDI0NTQsIDI0NTcsIDAsIDAsIDI0NjAsIAotICAgIDI0NjMsIDI0NjYsIDI0NjksIDI0NzIsIDI0NzUsIDI0NzgsIDI0ODEsIDI0ODQsIDI0ODcsIDI0OTAsIDI0OTMsIDI0OTYsIAotICAgIDI0OTksIDI1MDIsIDI1MDUsIDI1MDgsIDI1MTEsIDI1MTQsIDI1MTcsIDI1MjAsIDI1MjMsIDI1MjYsIDI1MjksIDI1MzIsIAotICAgIDI1MzUsIDI1MzgsIDI1NDEsIDI1NDQsIDI1NDcsIDI1NTAsIDI1NTMsIDI1NTYsIDI1NTksIDI1NjIsIDI1NjUsIDI1NjgsIAotICAgIDI1NzEsIDAsIDAsIDI1NzQsIDI1NzcsIDI1ODAsIDI1ODMsIDI1ODYsIDI1ODksIDAsIDAsIDI1OTIsIDI1OTUsIDI1OTgsIAotICAgIDI2MDEsIDI2MDQsIDI2MDcsIDI2MTAsIDI2MTMsIDAsIDI2MTYsIDAsIDI2MTksIDAsIDI2MjIsIDAsIDI2MjUsIDI2MjgsIAotICAgIDI2MzEsIDI2MzQsIDI2MzcsIDI2NDAsIDI2NDMsIDI2NDYsIDI2NDksIDI2NTIsIDI2NTUsIDI2NTgsIDI2NjEsIDI2NjQsIAotICAgIDI2NjcsIDI2NzAsIDI2NzMsIDI2NzYsIDI2NzksIDI2ODEsIDI2ODQsIDI2ODYsIDI2ODksIDI2OTEsIDI2OTQsIDI2OTYsIAotICAgIDI2OTksIDI3MDEsIDI3MDQsIDI3MDYsIDI3MDksIDAsIDAsIDI3MTEsIDI3MTQsIDI3MTcsIDI3MjAsIDI3MjMsIDI3MjYsIAotICAgIDI3MjksIDI3MzIsIDI3MzUsIDI3MzgsIDI3NDEsIDI3NDQsIDI3NDcsIDI3NTAsIDI3NTMsIDI3NTYsIDI3NTksIDI3NjIsIAotICAgIDI3NjUsIDI3NjgsIDI3NzEsIDI3NzQsIDI3NzcsIDI3ODAsIDI3ODMsIDI3ODYsIDI3ODksIDI3OTIsIDI3OTUsIDI3OTgsIAotICAgIDI4MDEsIDI4MDQsIDI4MDcsIDI4MTAsIDI4MTMsIDI4MTYsIDI4MTksIDI4MjIsIDI4MjUsIDI4MjgsIDI4MzEsIDI4MzQsIAotICAgIDI4MzcsIDI4NDAsIDI4NDMsIDI4NDYsIDI4NDksIDI4NTIsIDI4NTUsIDI4NTgsIDI4NjEsIDI4NjQsIDI4NjcsIDAsIAotICAgIDI4NzAsIDI4NzMsIDI4NzYsIDI4NzksIDI4ODIsIDI4ODUsIDI4ODcsIDI4OTAsIDI4OTMsIDI4OTUsIDI4OTgsIDI5MDEsIAotICAgIDI5MDQsIDI5MDcsIDI5MTAsIDAsIDI5MTMsIDI5MTYsIDI5MTksIDI5MjIsIDI5MjQsIDI5MjcsIDI5MjksIDI5MzIsIAotICAgIDI5MzUsIDI5MzgsIDI5NDEsIDI5NDQsIDI5NDcsIDI5NTAsIDAsIDAsIDI5NTIsIDI5NTUsIDI5NTgsIDI5NjEsIDI5NjQsIAotICAgIDI5NjcsIDAsIDI5NjksIDI5NzIsIDI5NzUsIDI5NzgsIDI5ODEsIDI5ODQsIDI5ODcsIDI5ODksIDI5OTIsIDI5OTUsIAotICAgIDI5OTgsIDMwMDEsIDMwMDQsIDMwMDcsIDMwMTAsIDMwMTIsIDMwMTUsIDMwMTgsIDMwMjAsIDAsIDAsIDMwMjIsIDMwMjUsIAotICAgIDMwMjgsIDAsIDMwMzEsIDMwMzQsIDMwMzcsIDMwNDAsIDMwNDIsIDMwNDUsIDMwNDcsIDMwNTAsIDMwNTIsIDAsIDMwNTUsIAotICAgIDMwNTcsIDMwNTksIDMwNjEsIDMwNjMsIDMwNjUsIDMwNjcsIDMwNjksIDMwNzEsIDMwNzMsIDMwNzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMwNzcsIDAsIDAsIDAsIDAsIDAsIDMwNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwODIsIDMwODQsIDMwODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOTEsIDAsIDAsIDAsIDMwOTMsIDMwOTYsIDAsIAotICAgIDMxMDAsIDMxMDMsIDAsIDAsIDAsIDAsIDMxMDcsIDAsIDMxMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMTMsIAotICAgIDMxMTYsIDMxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjksIDMxMzEsIAotICAgIDAsIDAsIDMxMzMsIDMxMzUsIDMxMzcsIDMxMzksIDMxNDEsIDMxNDMsIDMxNDUsIDMxNDcsIDMxNDksIDMxNTEsIDMxNTMsIAotICAgIDMxNTUsIDMxNTcsIDMxNTksIDMxNjEsIDMxNjMsIDMxNjUsIDMxNjcsIDMxNjksIDMxNzEsIDMxNzMsIDMxNzUsIDMxNzcsIAotICAgIDMxNzksIDMxODEsIDMxODMsIDMxODUsIDAsIDMxODcsIDMxODksIDMxOTEsIDMxOTMsIDMxOTUsIDMxOTcsIDMxOTksIAotICAgIDMyMDEsIDMyMDMsIDMyMDUsIDMyMDcsIDMyMDksIDMyMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMyMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMTYsIDMyMjAsIDMyMjQsIAotICAgIDMyMjYsIDAsIDMyMjksIDMyMzMsIDMyMzcsIDAsIDMyMzksIDMyNDIsIDMyNDQsIDMyNDYsIDMyNDgsIDMyNTAsIDMyNTIsIAotICAgIDMyNTQsIDMyNTYsIDMyNTgsIDMyNjAsIDAsIDMyNjIsIDMyNjQsIDAsIDAsIDMyNjcsIDMyNjksIDMyNzEsIDMyNzMsIAotICAgIDMyNzUsIDAsIDAsIDMyNzcsIDMyODAsIDMyODQsIDAsIDMyODcsIDAsIDMyODksIDAsIDMyOTEsIDAsIDMyOTMsIDMyOTUsIAotICAgIDMyOTcsIDMyOTksIDAsIDMzMDEsIDMzMDMsIDMzMDUsIDAsIDMzMDcsIDMzMDksIDMzMTEsIDMzMTMsIDMzMTUsIDMzMTcsIAotICAgIDMzMTksIDAsIDMzMjEsIDMzMjUsIDMzMjcsIDMzMjksIDMzMzEsIDMzMzMsIDAsIDAsIDAsIDAsIDMzMzUsIDMzMzcsIAotICAgIDMzMzksIDMzNDEsIDMzNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNDUsIDMzNDksIDMzNTMsIDMzNTgsIDMzNjIsIDMzNjYsIAotICAgIDMzNzAsIDMzNzQsIDMzNzgsIDMzODIsIDMzODYsIDMzOTAsIDMzOTQsIDMzOTgsIDM0MDIsIDM0MDYsIDM0MDksIDM0MTEsIAotICAgIDM0MTQsIDM0MTgsIDM0MjEsIDM0MjMsIDM0MjYsIDM0MzAsIDM0MzUsIDM0MzgsIDM0NDAsIDM0NDMsIDM0NDcsIDM0NDksIAotICAgIDM0NTEsIDM0NTMsIDM0NTUsIDM0NTcsIDM0NjAsIDM0NjQsIDM0NjcsIDM0NjksIDM0NzIsIDM0NzYsIDM0ODEsIDM0ODQsIAotICAgIDM0ODYsIDM0ODksIDM0OTMsIDM0OTUsIDM0OTcsIDM0OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MDEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MDUsIDM1MDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MTQsIAotICAgIDM1MTcsIDM1MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MjMsIDAsIDAsIDAsIDAsIDM1MjYsIDAsIDAsIDM1MjksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MzIsIDAsIDM1MzUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM1MzgsIDM1NDEsIDAsIDM1NDUsIDM1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1NTIsIDAsIDAsIDM1NTUsIDAsIDAsIDM1NTgsIDAsIDM1NjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NjQsIDAsIDM1NjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NzAsIDM1NzMsIDM1NzYsIDM1NzksIDM1ODIsIDAsIDAsIDM1ODUsIDM1ODgsIAotICAgIDAsIDAsIDM1OTEsIDM1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OTcsIDM2MDAsIDAsIDAsIDM2MDMsIDM2MDYsIDAsIDAsIAotICAgIDM2MDksIDM2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MTUsIDM2MTgsIDM2MjEsIDM2MjQsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MjcsIAotICAgIDM2MzAsIDM2MzMsIDM2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MzksIDM2NDIsIDM2NDUsIDM2NDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NTEsIDM2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NTEsIDM2NTMsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDI1NiwyMyArNDc0OCw3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDEwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC00MzcwLDE3MiArNDg0Niw3IEBACiAgICAgNjUzMCwgNjUzMywgNjUzNiwgNjUzOSwgNjU0MiwgNjU0NSwgNjU0OCwgNjU1MSwgNjU1NCwgNjU1OCwgNjU2MiwgNjU2NiwgCiAgICAgNjU3MCwgNjU3NCwgNjU3OCwgNjU4MiwgNjU4NiwgNjU5MCwgNjU5NCwgNjU5OCwgNjYwMiwgNjYwNiwgNjYxMCwgNjYxNCwgCiAgICAgNjYxOCwgNjYyMiwgNjYyNiwgNjYzMCwgNjYzNCwgNjYzOCwgNjY0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNjY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjY0OCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgNjY2NCwgCi0gICAgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgNjY4OCwgCi0gICAgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgNjcxMiwgCi0gICAgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgNjczNiwgCi0gICAgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgNjc2MCwgCi0gICAgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgNjc4NCwgCi0gICAgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgNjgwOCwgCi0gICAgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgNjgzMiwgCi0gICAgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgNjg1NiwgCi0gICAgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgNjg4MCwgCi0gICAgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgNjkwNCwgCi0gICAgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgNjkyOCwgCi0gICAgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgNjk1MiwgCi0gICAgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgNjk3NiwgCi0gICAgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgNzAwMCwgCi0gICAgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgNzAyNCwgCi0gICAgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgNzA0OCwgCi0gICAgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgNzA3MiwgCi0gICAgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgNzA5NiwgCi0gICAgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgNzEyMCwgCi0gICAgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgNzE0NCwgCi0gICAgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgNzE2OCwgCi0gICAgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgNzE4OCwgNzE5MCwgMCwgMCwgCi0gICAgNzE5MiwgMCwgNzE5NCwgMCwgMCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgNzIxMCwgCi0gICAgNzIxMiwgNzIxNCwgMCwgNzIxNiwgMCwgNzIxOCwgMCwgMCwgNzIyMCwgNzIyMiwgMCwgMCwgMCwgNzIyNCwgNzIyNiwgCi0gICAgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgNzI0OCwgNzI1MCwgCi0gICAgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgNzI3MiwgNzI3NCwgCi0gICAgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgNzI5NiwgNzI5OCwgCi0gICAgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgNzMyMCwgNzMyMiwgCi0gICAgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgNzM0NCwgNzM0NiwgCi0gICAgNzM0OCwgNzM1MCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgMCwgMCwgNzM2MCwgNzM2MiwgNzM2NCwgNzM2NiwgNzM2OCwgCi0gICAgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgNzM5MCwgNzM5MiwgCi0gICAgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgNzQxNCwgNzQxNiwgCi0gICAgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgNzQzOCwgNzQ0MCwgCi0gICAgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgNzQ2MiwgNzQ2NCwgCi0gICAgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgNzQ4NiwgNzQ4OCwgCi0gICAgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgNzUxMCwgNzUxMiwgCi0gICAgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgNzUzNCwgNzUzNiwgCi0gICAgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgNzU1OCwgNzU2MCwgCi0gICAgNzU2MiwgNzU2NCwgNzU2NiwgNzU2OCwgNzU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzU3MiwgNzU3NSwgNzU3OCwgNzU4MSwgNzU4NSwgNzU4OSwgNzU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzU5NSwgNzU5OCwgNzYwMSwgNzYwNCwgNzYwNywgMCwgMCwgMCwgMCwgMCwgNzYxMCwgMCwgNzYxMywgNzYxNiwgCi0gICAgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMCwgNzYzMiwgNzYzNCwgNzYzNiwgNzYzOSwgNzY0MiwgCi0gICAgNzY0NSwgNzY0OCwgNzY1MSwgNzY1NCwgNzY1NywgNzY2MCwgNzY2MywgNzY2NiwgNzY2OSwgNzY3MiwgMCwgNzY3NSwgCi0gICAgNzY3OCwgNzY4MSwgNzY4NCwgNzY4NywgMCwgNzY5MCwgMCwgNzY5MywgNzY5NiwgMCwgNzY5OSwgNzcwMiwgMCwgNzcwNSwgCi0gICAgNzcwOCwgNzcxMSwgNzcxNCwgNzcxNywgNzcyMCwgNzcyMywgNzcyNiwgNzcyOSwgNzczMiwgNzczNSwgNzczNywgNzczOSwgCi0gICAgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgNzc2MSwgNzc2MywgCi0gICAgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgNzc4NSwgNzc4NywgCi0gICAgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgNzgwOSwgNzgxMSwgCi0gICAgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgNzgzMywgNzgzNSwgCi0gICAgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgNzg1NywgNzg1OSwgCi0gICAgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgNzg4MSwgNzg4MywgCi0gICAgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgNzkwNSwgNzkwNywgCi0gICAgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgNzk0MywgNzk0NSwgCi0gICAgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgNzk2NywgNzk2OSwgCi0gICAgNzk3MSwgNzk3MywgNzk3NSwgNzk3NywgNzk4MCwgNzk4MywgNzk4NiwgNzk4OSwgNzk5MiwgNzk5NSwgNzk5OCwgODAwMSwgCi0gICAgODAwNCwgODAwNywgODAxMCwgODAxMywgODAxNiwgODAxOSwgODAyMiwgODAyNSwgODAyOCwgODAzMSwgODAzMywgODAzNSwgCi0gICAgODAzNywgODAzOSwgODA0MiwgODA0NSwgODA0OCwgODA1MSwgODA1NCwgODA1NywgODA2MCwgODA2MywgODA2NiwgODA2OSwgCi0gICAgODA3MiwgODA3NSwgODA3OCwgODA4MSwgODA4NCwgODA4NywgODA5MCwgODA5MywgODA5NiwgODA5OSwgODEwMiwgODEwNSwgCi0gICAgODEwOCwgODExMSwgODExNCwgODExNywgODEyMCwgODEyMywgODEyNiwgODEyOSwgODEzMiwgODEzNSwgODEzOCwgODE0MSwgCi0gICAgODE0NCwgODE0NywgODE1MCwgODE1MywgODE1NiwgODE1OSwgODE2MiwgODE2NSwgODE2OCwgODE3MSwgODE3NCwgODE3NywgCi0gICAgODE4MCwgODE4MywgODE4NiwgODE4OSwgODE5MiwgODE5NSwgODE5OCwgODIwMSwgODIwNCwgODIwNywgODIxMCwgODIxMywgCi0gICAgODIxNiwgODIxOSwgODIyMiwgODIyNSwgODIyOCwgODIzMSwgODIzNCwgODIzNywgODI0MCwgODI0MywgODI0NiwgODI0OSwgCi0gICAgODI1MiwgODI1NSwgODI1OCwgODI2MSwgODI2NCwgODI2NywgODI3MCwgODI3MywgODI3NiwgODI3OSwgODI4MiwgODI4NSwgCi0gICAgODI4OCwgODI5MSwgODI5NCwgODI5NywgODMwMCwgODMwMywgODMwNiwgODMwOSwgODMxMiwgODMxNSwgODMxOCwgODMyMSwgCi0gICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MSwgODM0NSwgODM0OCwgODM1MSwgODM1NCwgODM1NywgODM2MCwgODM2MywgCi0gICAgODM2NiwgODM2OSwgODM3MiwgODM3NSwgODM3OCwgODM4MSwgODM4NCwgODM4NywgODM5MCwgODM5MywgODM5NiwgODM5OSwgCi0gICAgODQwMiwgODQwNSwgODQwOCwgODQxMSwgODQxNCwgODQxNywgODQyMCwgODQyMywgODQyNiwgODQyOSwgODQzMiwgODQzNSwgCi0gICAgODQzOCwgODQ0MSwgODQ0NCwgODQ0NywgODQ1MCwgODQ1MywgODQ1NiwgODQ1OSwgODQ2MiwgODQ2NSwgODQ2OCwgODQ3MSwgCi0gICAgODQ3NCwgODQ3NywgODQ4MCwgODQ4MywgODQ4NiwgODQ4OSwgODQ5MiwgODQ5NSwgODQ5OCwgODUwMSwgODUwNCwgODUwNywgCi0gICAgODUxMCwgODUxMywgODUxNiwgODUxOSwgODUyMiwgODUyNSwgODUyOCwgODUzMSwgODUzNCwgODUzNywgODU0MCwgODU0MywgCi0gICAgODU0NiwgODU0OSwgODU1MiwgODU1NSwgODU1OCwgODU2MSwgODU2NCwgODU2NywgODU3MCwgODU3MywgODU3NiwgODU3OSwgCi0gICAgODU4MiwgODU4NSwgODU4OCwgODU5MSwgODU5NCwgODU5NywgODYwMCwgODYwMywgODYwNiwgODYwOSwgODYxMiwgODYxNSwgCi0gICAgODYxOCwgODYyMSwgODYyNCwgODYyNywgODYzMCwgODYzMywgODYzNiwgODYzOSwgODY0MiwgODY0NSwgODY0OCwgODY1MSwgCi0gICAgODY1NCwgODY1NywgODY2MCwgODY2MywgODY2NiwgODY2OSwgODY3MiwgODY3NSwgODY3OCwgODY4MSwgODY4NCwgODY4NywgCi0gICAgODY5MCwgODY5MywgODY5NiwgODY5OSwgODcwMiwgODcwNSwgODcwOCwgODcxMSwgODcxNCwgODcxNywgODcyMCwgODcyMywgCi0gICAgODcyNiwgODcyOSwgODczMiwgODczNSwgODczOCwgODc0MSwgODc0NCwgODc0NywgODc1MCwgODc1MywgODc1NiwgODc1OSwgCi0gICAgODc2MiwgODc2NSwgODc2OCwgODc3MSwgODc3NSwgODc3OSwgODc4MywgODc4NiwgODc4OSwgODc5MiwgODc5NSwgODc5OCwgCi0gICAgODgwMSwgODgwNCwgODgwNywgODgxMCwgODgxMywgODgxNiwgODgxOSwgODgyMiwgODgyNSwgODgyOCwgODgzMSwgODgzNCwgCi0gICAgODgzNywgODg0MCwgODg0MywgODg0NiwgODg0OSwgODg1MiwgODg1NSwgODg1OCwgODg2MSwgODg2NCwgODg2NywgODg3MCwgCi0gICAgODg3MywgODg3NiwgODg3OSwgODg4MiwgODg4NSwgODg4OCwgODg5MSwgODg5NCwgODg5NywgODkwMCwgODkwMywgODkwNiwgCi0gICAgODkwOSwgODkxMiwgODkxNSwgODkxOCwgODkyMSwgODkyNCwgODkyNywgODkzMCwgODkzMywgODkzNiwgODkzOSwgODk0MiwgCi0gICAgODk0NSwgODk0OCwgODk1MSwgODk1NCwgODk1NywgODk2MCwgODk2MywgODk2NiwgODk2OSwgODk3MiwgODk3NSwgODk3OCwgCi0gICAgODk4MSwgODk4NCwgODk4NywgODk5MCwgODk5MywgODk5NiwgODk5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCi0gICAgOTAzNCwgOTAzOCwgOTA0MiwgOTA0NiwgOTA1MCwgOTA1NCwgOTA1OCwgOTA2MiwgOTA2NiwgOTA3MCwgOTA3NCwgOTA3OCwgCi0gICAgOTA4MiwgOTA4NiwgOTA5MCwgOTA5NCwgOTA5OCwgOTEwMiwgOTEwNiwgOTExMCwgOTExNCwgOTExOCwgOTEyMiwgOTEyNiwgCi0gICAgOTEzMCwgOTEzNCwgOTEzOCwgOTE0MiwgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgCi0gICAgOTE3OCwgOTE4MiwgOTE4NiwgOTE5MCwgOTE5NCwgOTE5OCwgOTIwMiwgOTIwNiwgOTIxMCwgOTIxNCwgOTIxOCwgOTIyMiwgCi0gICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgOTI1MCwgOTI1NCwgMCwgMCwgOTI1OCwgOTI2MiwgOTI2NiwgCi0gICAgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgOTI4NiwgOTI5MCwgOTI5NCwgOTI5OCwgOTMwMiwgOTMwNiwgOTMxMCwgOTMxNCwgCi0gICAgOTMxOCwgOTMyMiwgOTMyNiwgOTMzMCwgOTMzNCwgOTMzOCwgOTM0MiwgOTM0NiwgOTM1MCwgOTM1NCwgOTM1OCwgOTM2MiwgCi0gICAgOTM2NiwgOTM3MCwgOTM3NCwgOTM3OCwgOTM4MiwgOTM4NiwgOTM5MCwgOTM5NCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgCi0gICAgOTQxNCwgOTQxOCwgOTQyMiwgOTQyNiwgOTQzMCwgOTQzNCwgOTQzOCwgOTQ0MiwgOTQ0NiwgOTQ1MCwgOTQ1NCwgOTQ1OCwgCi0gICAgOTQ2MiwgOTQ2NiwgOTQ3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ3NCwgCi0gICAgOTQ3OCwgOTQ4MiwgOTQ4NywgOTQ5MiwgOTQ5NywgOTUwMiwgOTUwNywgOTUxMiwgOTUxNywgOTUyMSwgOTU0MCwgOTU0OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU1NCwgOTU1NiwgCi0gICAgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NCwgOTU3NiwgOTU3OCwgOTU4MCwgOTU4MiwgCi0gICAgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgOTYwNCwgOTYwNiwgCi0gICAgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgMCwgMCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgOTYyNiwgOTYyOCwgCi0gICAgOTYzMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgMCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgOTY0OCwgOTY1MCwgCi0gICAgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgOTY3MCwgOTY3MiwgOTY3NCwgCi0gICAgOTY3NiwgMCwgOTY3OCwgOTY4MCwgOTY4MiwgOTY4NCwgMCwgMCwgMCwgMCwgOTY4NiwgOTY4OSwgOTY5MiwgMCwgOTY5NSwgCi0gICAgMCwgOTY5OCwgOTcwMSwgOTcwNCwgOTcwNywgOTcxMCwgOTcxMywgOTcxNiwgOTcxOSwgOTcyMiwgOTcyNSwgOTcyOCwgCi0gICAgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgOTc1MCwgOTc1MiwgCi0gICAgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgOTc3NCwgOTc3NiwgCi0gICAgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgOTc5OCwgOTgwMCwgCi0gICAgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgOTgyMiwgOTgyNCwgCi0gICAgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgOTg0NiwgOTg0OCwgCi0gICAgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgOTg3MCwgOTg3MiwgCi0gICAgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgOTg5NCwgOTg5NiwgCi0gICAgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgOTkxOCwgOTkyMCwgCi0gICAgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgOTk0MiwgOTk0NCwgCi0gICAgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NiwgOTk1OCwgOTk2MCwgOTk2MiwgOTk2NSwgOTk2OCwgOTk3MSwgCi0gICAgOTk3NCwgOTk3NywgOTk4MCwgOTk4MywgMCwgMCwgMCwgMCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgOTk5NCwgOTk5NiwgCi0gICAgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAxMDAxNiwgCi0gICAgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgMTAwMzYsIAotICAgIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIDEwMDU2LCAKLSAgICAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAxMDA3NiwgCi0gICAgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgMTAwOTYsIAotICAgIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIDEwMTE2LCAKLSAgICAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAxMDEzNiwgCi0gICAgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgMTAxNTYsIAotICAgIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIDEwMTc2LCAKLSAgICAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAxMDE5NiwgCi0gICAgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgMTAyMTYsIAotICAgIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIDEwMjM2LCAKLSAgICAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAxMDI1NiwgCi0gICAgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgMTAyNzYsIAotICAgIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIDEwMjk2LCAKLSAgICAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAxMDMxNiwgCi0gICAgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgMTAzMzYsIAotICAgIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIDEwMzU2LCAKLSAgICAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMCwgMCwgMCwgMTAzNjYsIDEwMzY4LCAxMDM3MCwgMTAzNzIsIDEwMzc0LCAKLSAgICAxMDM3NiwgMCwgMCwgMTAzNzgsIDEwMzgwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgMCwgMCwgMTAzOTAsIAotICAgIDEwMzkyLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAxMDQwMCwgMCwgMCwgMTA0MDIsIDEwNDA0LCAxMDQwNiwgMCwgMCwgMCwgCi0gICAgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDAsIDEwNDIyLCAxMDQyNCwgMTA0MjYsIAotICAgIDEwNDI4LCAxMDQzMCwgMTA0MzIsIDEwNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQzNiwgMCwgMTA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0NSwgMTA0NDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NDYsIDY2NDgsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNDU0NCw2MTEgKzQ4NTUsODEzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTEsIDEwNDU0LCAxMDQ1NywgMTA0NjAsIDEwNDYzLCAKLSAgICAxMDQ2NiwgMTA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTIsIDY2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDcyLCAxMDQ3NSwgCi0gICAgMTA0NzgsIDEwNDgxLCAxMDQ4NCwgMTA0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NTYsIDY2NTgsIDY2NjAsIDY2NjIsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDkwLCAxMDQ5MiwgMTA0OTQsIDEwNDk2LCAxMDQ5OCwgMTA1MDAsIDEwNTAyLCAxMDUwNCwgMTA1MDYsIDEwNTA4LCAKLSAgICAxMDUxMCwgMTA1MTIsIDEwNTE0LCAxMDUxNiwgMTA1MTgsIDEwNTIwLCAxMDUyMiwgMTA1MjQsIDEwNTI2LCAxMDUyOCwgCi0gICAgMTA1MzAsIDEwNTMyLCAxMDUzNCwgMTA1MzYsIDEwNTM4LCAxMDU0MCwgMTA1NDIsIDEwNTQ0LCAxMDU0NiwgMTA1NDgsIAotICAgIDEwNTUwLCAxMDU1MiwgMTA1NTQsIDEwNTU2LCAxMDU1OCwgMTA1NjAsIDEwNTYyLCAxMDU2NCwgMTA1NjYsIDEwNTY4LCAKLSAgICAxMDU3MCwgMTA1NzIsIDEwNTc0LCAxMDU3NiwgMTA1NzgsIDEwNTgwLCAxMDU4MiwgMTA1ODQsIDEwNTg2LCAxMDU4OCwgCi0gICAgMTA1OTAsIDEwNTkyLCAxMDU5NCwgMTA1OTYsIDEwNTk4LCAxMDYwMCwgMTA2MDIsIDEwNjA0LCAxMDYwNiwgMTA2MDgsIAotICAgIDEwNjEwLCAxMDYxMiwgMTA2MTQsIDEwNjE2LCAxMDYxOCwgMTA2MjAsIDEwNjIyLCAxMDYyNCwgMTA2MjYsIDEwNjI4LCAKLSAgICAxMDYzMCwgMTA2MzIsIDEwNjM0LCAxMDYzNiwgMTA2MzgsIDEwNjQwLCAxMDY0MiwgMTA2NDQsIDEwNjQ2LCAxMDY0OCwgCi0gICAgMTA2NTAsIDEwNjUyLCAxMDY1NCwgMTA2NTYsIDEwNjU4LCAwLCAxMDY2MCwgMTA2NjIsIDEwNjY0LCAxMDY2NiwgMTA2NjgsIAotICAgIDEwNjcwLCAxMDY3MiwgMTA2NzQsIDEwNjc2LCAxMDY3OCwgMTA2ODAsIDEwNjgyLCAxMDY4NCwgMTA2ODYsIDEwNjg4LCAKLSAgICAxMDY5MCwgMTA2OTIsIDEwNjk0LCAxMDY5NiwgMTA2OTgsIDEwNzAwLCAxMDcwMiwgMTA3MDQsIDEwNzA2LCAxMDcwOCwgCi0gICAgMTA3MTAsIDEwNzEyLCAxMDcxNCwgMTA3MTYsIDEwNzE4LCAxMDcyMCwgMTA3MjIsIDEwNzI0LCAxMDcyNiwgMTA3MjgsIAotICAgIDEwNzMwLCAxMDczMiwgMTA3MzQsIDEwNzM2LCAxMDczOCwgMTA3NDAsIDEwNzQyLCAxMDc0NCwgMTA3NDYsIDEwNzQ4LCAKLSAgICAxMDc1MCwgMTA3NTIsIDEwNzU0LCAxMDc1NiwgMTA3NTgsIDEwNzYwLCAxMDc2MiwgMTA3NjQsIDEwNzY2LCAxMDc2OCwgCi0gICAgMTA3NzAsIDEwNzcyLCAxMDc3NCwgMTA3NzYsIDEwNzc4LCAxMDc4MCwgMTA3ODIsIDEwNzg0LCAxMDc4NiwgMTA3ODgsIAotICAgIDEwNzkwLCAxMDc5MiwgMTA3OTQsIDEwNzk2LCAxMDc5OCwgMTA4MDAsIDAsIDEwODAyLCAxMDgwNCwgMCwgMCwgMTA4MDYsIAotICAgIDAsIDAsIDEwODA4LCAxMDgxMCwgMCwgMCwgMTA4MTIsIDEwODE0LCAxMDgxNiwgMTA4MTgsIDAsIDEwODIwLCAxMDgyMiwgCi0gICAgMTA4MjQsIDEwODI2LCAxMDgyOCwgMTA4MzAsIDEwODMyLCAxMDgzNCwgMTA4MzYsIDEwODM4LCAxMDg0MCwgMTA4NDIsIDAsIAotICAgIDEwODQ0LCAwLCAxMDg0NiwgMTA4NDgsIDEwODUwLCAxMDg1MiwgMTA4NTQsIDEwODU2LCAxMDg1OCwgMCwgMTA4NjAsIAotICAgIDEwODYyLCAxMDg2NCwgMTA4NjYsIDEwODY4LCAxMDg3MCwgMTA4NzIsIDEwODc0LCAxMDg3NiwgMTA4NzgsIDEwODgwLCAKLSAgICAxMDg4MiwgMTA4ODQsIDEwODg2LCAxMDg4OCwgMTA4OTAsIDEwODkyLCAxMDg5NCwgMTA4OTYsIDEwODk4LCAxMDkwMCwgCi0gICAgMTA5MDIsIDEwOTA0LCAxMDkwNiwgMTA5MDgsIDEwOTEwLCAxMDkxMiwgMTA5MTQsIDEwOTE2LCAxMDkxOCwgMTA5MjAsIAotICAgIDEwOTIyLCAxMDkyNCwgMTA5MjYsIDEwOTI4LCAxMDkzMCwgMTA5MzIsIDEwOTM0LCAxMDkzNiwgMTA5MzgsIDEwOTQwLCAKLSAgICAxMDk0MiwgMTA5NDQsIDEwOTQ2LCAxMDk0OCwgMTA5NTAsIDEwOTUyLCAxMDk1NCwgMTA5NTYsIDEwOTU4LCAxMDk2MCwgCi0gICAgMTA5NjIsIDEwOTY0LCAxMDk2NiwgMTA5NjgsIDEwOTcwLCAxMDk3MiwgMTA5NzQsIDEwOTc2LCAxMDk3OCwgMTA5ODAsIAotICAgIDEwOTgyLCAxMDk4NCwgMTA5ODYsIDEwOTg4LCAwLCAxMDk5MCwgMTA5OTIsIDEwOTk0LCAxMDk5NiwgMCwgMCwgMTA5OTgsIAotICAgIDExMDAwLCAxMTAwMiwgMTEwMDQsIDExMDA2LCAxMTAwOCwgMTEwMTAsIDExMDEyLCAwLCAxMTAxNCwgMTEwMTYsIDExMDE4LCAKLSAgICAxMTAyMCwgMTEwMjIsIDExMDI0LCAxMTAyNiwgMCwgMTEwMjgsIDExMDMwLCAxMTAzMiwgMTEwMzQsIDExMDM2LCAxMTAzOCwgCi0gICAgMTEwNDAsIDExMDQyLCAxMTA0NCwgMTEwNDYsIDExMDQ4LCAxMTA1MCwgMTEwNTIsIDExMDU0LCAxMTA1NiwgMTEwNTgsIAotICAgIDExMDYwLCAxMTA2MiwgMTEwNjQsIDExMDY2LCAxMTA2OCwgMTEwNzAsIDExMDcyLCAxMTA3NCwgMTEwNzYsIDExMDc4LCAKLSAgICAxMTA4MCwgMTEwODIsIDAsIDExMDg0LCAxMTA4NiwgMTEwODgsIDExMDkwLCAwLCAxMTA5MiwgMTEwOTQsIDExMDk2LCAKLSAgICAxMTA5OCwgMTExMDAsIDAsIDExMTAyLCAwLCAwLCAwLCAxMTEwNCwgMTExMDYsIDExMTA4LCAxMTExMCwgMTExMTIsIAotICAgIDExMTE0LCAxMTExNiwgMCwgMTExMTgsIDExMTIwLCAxMTEyMiwgMTExMjQsIDExMTI2LCAxMTEyOCwgMTExMzAsIDExMTMyLCAKLSAgICAxMTEzNCwgMTExMzYsIDExMTM4LCAxMTE0MCwgMTExNDIsIDExMTQ0LCAxMTE0NiwgMTExNDgsIDExMTUwLCAxMTE1MiwgCi0gICAgMTExNTQsIDExMTU2LCAxMTE1OCwgMTExNjAsIDExMTYyLCAxMTE2NCwgMTExNjYsIDExMTY4LCAxMTE3MCwgMTExNzIsIAotICAgIDExMTc0LCAxMTE3NiwgMTExNzgsIDExMTgwLCAxMTE4MiwgMTExODQsIDExMTg2LCAxMTE4OCwgMTExOTAsIDExMTkyLCAKLSAgICAxMTE5NCwgMTExOTYsIDExMTk4LCAxMTIwMCwgMTEyMDIsIDExMjA0LCAxMTIwNiwgMTEyMDgsIDExMjEwLCAxMTIxMiwgCi0gICAgMTEyMTQsIDExMjE2LCAxMTIxOCwgMTEyMjAsIDExMjIyLCAxMTIyNCwgMTEyMjYsIDExMjI4LCAxMTIzMCwgMTEyMzIsIAotICAgIDExMjM0LCAxMTIzNiwgMTEyMzgsIDExMjQwLCAxMTI0MiwgMTEyNDQsIDExMjQ2LCAxMTI0OCwgMTEyNTAsIDExMjUyLCAKLSAgICAxMTI1NCwgMTEyNTYsIDExMjU4LCAxMTI2MCwgMTEyNjIsIDExMjY0LCAxMTI2NiwgMTEyNjgsIDExMjcwLCAxMTI3MiwgCi0gICAgMTEyNzQsIDExMjc2LCAxMTI3OCwgMTEyODAsIDExMjgyLCAxMTI4NCwgMTEyODYsIDExMjg4LCAxMTI5MCwgMTEyOTIsIAotICAgIDExMjk0LCAxMTI5NiwgMTEyOTgsIDExMzAwLCAxMTMwMiwgMTEzMDQsIDExMzA2LCAxMTMwOCwgMTEzMTAsIDExMzEyLCAKLSAgICAxMTMxNCwgMTEzMTYsIDExMzE4LCAxMTMyMCwgMTEzMjIsIDExMzI0LCAxMTMyNiwgMTEzMjgsIDExMzMwLCAxMTMzMiwgCi0gICAgMTEzMzQsIDExMzM2LCAxMTMzOCwgMTEzNDAsIDExMzQyLCAxMTM0NCwgMTEzNDYsIDExMzQ4LCAxMTM1MCwgMTEzNTIsIAotICAgIDExMzU0LCAxMTM1NiwgMTEzNTgsIDExMzYwLCAxMTM2MiwgMTEzNjQsIDExMzY2LCAxMTM2OCwgMTEzNzAsIDExMzcyLCAKLSAgICAxMTM3NCwgMTEzNzYsIDExMzc4LCAxMTM4MCwgMTEzODIsIDExMzg0LCAxMTM4NiwgMTEzODgsIDExMzkwLCAxMTM5MiwgCi0gICAgMTEzOTQsIDExMzk2LCAxMTM5OCwgMTE0MDAsIDExNDAyLCAxMTQwNCwgMTE0MDYsIDExNDA4LCAxMTQxMCwgMTE0MTIsIAotICAgIDExNDE0LCAxMTQxNiwgMTE0MTgsIDExNDIwLCAxMTQyMiwgMTE0MjQsIDExNDI2LCAxMTQyOCwgMTE0MzAsIDExNDMyLCAKLSAgICAxMTQzNCwgMTE0MzYsIDExNDM4LCAxMTQ0MCwgMTE0NDIsIDExNDQ0LCAxMTQ0NiwgMTE0NDgsIDExNDUwLCAxMTQ1MiwgCi0gICAgMTE0NTQsIDExNDU2LCAxMTQ1OCwgMTE0NjAsIDExNDYyLCAxMTQ2NCwgMTE0NjYsIDExNDY4LCAxMTQ3MCwgMTE0NzIsIAotICAgIDExNDc0LCAxMTQ3NiwgMTE0NzgsIDExNDgwLCAxMTQ4MiwgMTE0ODQsIDExNDg2LCAxMTQ4OCwgMTE0OTAsIDExNDkyLCAKLSAgICAxMTQ5NCwgMTE0OTYsIDExNDk4LCAxMTUwMCwgMTE1MDIsIDExNTA0LCAxMTUwNiwgMTE1MDgsIDExNTEwLCAxMTUxMiwgCi0gICAgMTE1MTQsIDExNTE2LCAxMTUxOCwgMTE1MjAsIDExNTIyLCAxMTUyNCwgMTE1MjYsIDExNTI4LCAxMTUzMCwgMTE1MzIsIAotICAgIDExNTM0LCAxMTUzNiwgMTE1MzgsIDExNTQwLCAxMTU0MiwgMTE1NDQsIDExNTQ2LCAxMTU0OCwgMTE1NTAsIDExNTUyLCAKLSAgICAxMTU1NCwgMTE1NTYsIDExNTU4LCAxMTU2MCwgMTE1NjIsIDExNTY0LCAxMTU2NiwgMTE1NjgsIDExNTcwLCAxMTU3MiwgCi0gICAgMTE1NzQsIDExNTc2LCAxMTU3OCwgMTE1ODAsIDExNTgyLCAxMTU4NCwgMTE1ODYsIDExNTg4LCAxMTU5MCwgMTE1OTIsIAotICAgIDExNTk0LCAxMTU5NiwgMTE1OTgsIDExNjAwLCAxMTYwMiwgMTE2MDQsIDExNjA2LCAxMTYwOCwgMTE2MTAsIDExNjEyLCAKLSAgICAxMTYxNCwgMTE2MTYsIDExNjE4LCAxMTYyMCwgMTE2MjIsIDExNjI0LCAxMTYyNiwgMTE2MjgsIDExNjMwLCAxMTYzMiwgCi0gICAgMTE2MzQsIDExNjM2LCAxMTYzOCwgMTE2NDAsIDExNjQyLCAxMTY0NCwgMTE2NDYsIDExNjQ4LCAxMTY1MCwgMTE2NTIsIAotICAgIDExNjU0LCAxMTY1NiwgMTE2NTgsIDExNjYwLCAxMTY2MiwgMTE2NjQsIDExNjY2LCAxMTY2OCwgMTE2NzAsIDExNjcyLCAKLSAgICAxMTY3NCwgMTE2NzYsIDExNjc4LCAxMTY4MCwgMTE2ODIsIDExNjg0LCAxMTY4NiwgMTE2ODgsIDExNjkwLCAxMTY5MiwgCi0gICAgMTE2OTQsIDExNjk2LCAxMTY5OCwgMTE3MDAsIDExNzAyLCAxMTcwNCwgMTE3MDYsIDExNzA4LCAxMTcxMCwgMTE3MTIsIAotICAgIDExNzE0LCAxMTcxNiwgMTE3MTgsIDExNzIwLCAxMTcyMiwgMTE3MjQsIDExNzI2LCAxMTcyOCwgMTE3MzAsIDExNzMyLCAKLSAgICAxMTczNCwgMTE3MzYsIDExNzM4LCAxMTc0MCwgMTE3NDIsIDExNzQ0LCAxMTc0NiwgMTE3NDgsIDExNzUwLCAxMTc1MiwgCi0gICAgMTE3NTQsIDExNzU2LCAxMTc1OCwgMTE3NjAsIDExNzYyLCAxMTc2NCwgMTE3NjYsIDExNzY4LCAxMTc3MCwgMTE3NzIsIAotICAgIDExNzc0LCAxMTc3NiwgMTE3NzgsIDExNzgwLCAxMTc4MiwgMTE3ODQsIDExNzg2LCAxMTc4OCwgMTE3OTAsIDExNzkyLCAKLSAgICAxMTc5NCwgMTE3OTYsIDAsIDAsIDExNzk4LCAxMTgwMCwgMTE4MDIsIDExODA0LCAxMTgwNiwgMTE4MDgsIDExODEwLCAKLSAgICAxMTgxMiwgMTE4MTQsIDExODE2LCAxMTgxOCwgMTE4MjAsIDExODIyLCAxMTgyNCwgMTE4MjYsIDExODI4LCAxMTgzMCwgCi0gICAgMTE4MzIsIDExODM0LCAxMTgzNiwgMTE4MzgsIDExODQwLCAxMTg0MiwgMTE4NDQsIDExODQ2LCAxMTg0OCwgMTE4NTAsIAotICAgIDExODUyLCAxMTg1NCwgMTE4NTYsIDExODU4LCAxMTg2MCwgMTE4NjIsIDExODY0LCAxMTg2NiwgMTE4NjgsIDExODcwLCAKLSAgICAxMTg3MiwgMTE4NzQsIDExODc2LCAxMTg3OCwgMTE4ODAsIDExODgyLCAxMTg4NCwgMTE4ODYsIDExODg4LCAxMTg5MCwgCi0gICAgMTE4OTIsIDExODk0LCAxMTg5NiwgMTE4OTgsIDExOTAwLCAxMTkwMiwgMTE5MDQsIDExOTA2LCAxMTkwOCwgMTE5MTAsIAotICAgIDExOTEyLCAxMTkxNCwgMTE5MTYsIDExOTE4LCAxMTkyMCwgMTE5MjIsIDExOTI0LCAxMTkyNiwgMTE5MjgsIDExOTMwLCAKLSAgICAxMTkzMiwgMTE5MzQsIDExOTM2LCAxMTkzOCwgMTE5NDAsIDExOTQyLCAxMTk0NCwgMTE5NDYsIDExOTQ4LCAxMTk1MCwgCi0gICAgMTE5NTIsIDExOTU0LCAxMTk1NiwgMTE5NTgsIDExOTYwLCAxMTk2MiwgMTE5NjQsIDExOTY2LCAxMTk2OCwgMTE5NzAsIAotICAgIDExOTcyLCAxMTk3NCwgMTE5NzYsIDExOTc4LCAxMTk4MCwgMTE5ODIsIDExOTg0LCAxMTk4NiwgMTE5ODgsIDExOTkwLCAKLSAgICAxMTk5MiwgMTE5OTQsIDExOTk2LCAxMTk5OCwgMTIwMDAsIDEyMDAyLCAxMjAwNCwgMTIwMDYsIDEyMDA4LCAxMjAxMCwgCi0gICAgMTIwMTIsIDEyMDE0LCAxMjAxNiwgMTIwMTgsIDEyMDIwLCAxMjAyMiwgMTIwMjQsIDEyMDI2LCAxMjAyOCwgMTIwMzAsIAotICAgIDEyMDMyLCAxMjAzNCwgMTIwMzYsIDEyMDM4LCAxMjA0MCwgMTIwNDIsIDEyMDQ0LCAxMjA0NiwgMTIwNDgsIDEyMDUwLCAKLSAgICAxMjA1MiwgMTIwNTQsIDEyMDU2LCAxMjA1OCwgMTIwNjAsIDEyMDYyLCAxMjA2NCwgMTIwNjYsIDEyMDY4LCAxMjA3MCwgCi0gICAgMTIwNzIsIDEyMDc0LCAxMjA3NiwgMTIwNzgsIDEyMDgwLCAxMjA4MiwgMTIwODQsIDEyMDg2LCAxMjA4OCwgMTIwOTAsIAotICAgIDEyMDkyLCAxMjA5NCwgMTIwOTYsIDEyMDk4LCAxMjEwMCwgMTIxMDIsIDEyMTA0LCAxMjEwNiwgMTIxMDgsIDEyMTEwLCAKLSAgICAxMjExMiwgMTIxMTQsIDEyMTE2LCAxMjExOCwgMTIxMjAsIDEyMTIyLCAxMjEyNCwgMTIxMjYsIDEyMTI4LCAxMjEzMCwgCi0gICAgMTIxMzIsIDEyMTM0LCAxMjEzNiwgMTIxMzgsIDEyMTQwLCAxMjE0MiwgMTIxNDQsIDEyMTQ2LCAxMjE0OCwgMTIxNTAsIAotICAgIDEyMTUyLCAxMjE1NCwgMTIxNTYsIDEyMTU4LCAxMjE2MCwgMTIxNjIsIDEyMTY0LCAxMjE2NiwgMTIxNjgsIDEyMTcwLCAKLSAgICAxMjE3MiwgMTIxNzQsIDEyMTc2LCAxMjE3OCwgMTIxODAsIDEyMTgyLCAxMjE4NCwgMTIxODYsIDEyMTg4LCAxMjE5MCwgCi0gICAgMTIxOTIsIDEyMTk0LCAxMjE5NiwgMTIxOTgsIDEyMjAwLCAxMjIwMiwgMTIyMDQsIDEyMjA2LCAxMjIwOCwgMTIyMTAsIAotICAgIDEyMjEyLCAxMjIxNCwgMTIyMTYsIDEyMjE4LCAxMjIyMCwgMTIyMjIsIDEyMjI0LCAxMjIyNiwgMTIyMjgsIDEyMjMwLCAKLSAgICAxMjIzMiwgMTIyMzQsIDEyMjM2LCAxMjIzOCwgMTIyNDAsIDEyMjQyLCAxMjI0NCwgMTIyNDYsIDEyMjQ4LCAxMjI1MCwgCi0gICAgMTIyNTIsIDEyMjU0LCAxMjI1NiwgMTIyNTgsIDEyMjYwLCAxMjI2MiwgMTIyNjQsIDEyMjY2LCAxMjI2OCwgMTIyNzAsIAotICAgIDEyMjcyLCAxMjI3NCwgMTIyNzYsIDEyMjc4LCAxMjI4MCwgMTIyODIsIDEyMjg0LCAxMjI4NiwgMTIyODgsIDEyMjkwLCAKLSAgICAxMjI5MiwgMTIyOTQsIDEyMjk2LCAxMjI5OCwgMTIzMDAsIDEyMzAyLCAxMjMwNCwgMTIzMDYsIDEyMzA4LCAxMjMxMCwgCi0gICAgMTIzMTIsIDEyMzE0LCAxMjMxNiwgMTIzMTgsIDEyMzIwLCAxMjMyMiwgMTIzMjQsIDEyMzI2LCAxMjMyOCwgMTIzMzAsIAotICAgIDEyMzMyLCAxMjMzNCwgMTIzMzYsIDEyMzM4LCAxMjM0MCwgMTIzNDIsIDEyMzQ0LCAxMjM0NiwgMTIzNDgsIDEyMzUwLCAKLSAgICAxMjM1MiwgMTIzNTQsIDEyMzU2LCAxMjM1OCwgMTIzNjAsIDEyMzYyLCAxMjM2NCwgMTIzNjYsIDEyMzY4LCAxMjM3MCwgCi0gICAgMTIzNzIsIDEyMzc0LCAxMjM3NiwgMTIzNzgsIDEyMzgwLCAwLCAwLCAxMjM4MiwgMTIzODQsIDEyMzg2LCAxMjM4OCwgCi0gICAgMTIzOTAsIDEyMzkyLCAxMjM5NCwgMTIzOTYsIDEyMzk4LCAxMjQwMCwgMTI0MDIsIDEyNDA0LCAxMjQwNiwgMTI0MDgsIAotICAgIDEyNDEwLCAxMjQxMiwgMTI0MTQsIDEyNDE2LCAxMjQxOCwgMTI0MjAsIDEyNDIyLCAxMjQyNCwgMTI0MjYsIDEyNDI4LCAKLSAgICAxMjQzMCwgMTI0MzIsIDEyNDM0LCAxMjQzNiwgMTI0MzgsIDEyNDQwLCAxMjQ0MiwgMTI0NDQsIDEyNDQ2LCAxMjQ0OCwgCi0gICAgMTI0NTAsIDEyNDUyLCAxMjQ1NCwgMTI0NTYsIDEyNDU4LCAxMjQ2MCwgMTI0NjIsIDEyNDY0LCAxMjQ2NiwgMTI0NjgsIAotICAgIDEyNDcwLCAxMjQ3MiwgMTI0NzQsIDEyNDc2LCAxMjQ3OCwgMTI0ODAsIDEyNDgyLCAxMjQ4NCwgMTI0ODYsIDEyNDg4LCAwLCAKLSAgICAxMjQ5MCwgMTI0OTIsIDEyNDk0LCAxMjQ5NiwgMTI0OTgsIDEyNTAwLCAxMjUwMiwgMTI1MDQsIDEyNTA2LCAxMjUwOCwgCi0gICAgMTI1MTAsIDEyNTEyLCAxMjUxNCwgMTI1MTYsIDEyNTE4LCAxMjUyMCwgMTI1MjIsIDEyNTI0LCAxMjUyNiwgMTI1MjgsIAotICAgIDEyNTMwLCAxMjUzMiwgMTI1MzQsIDEyNTM2LCAxMjUzOCwgMTI1NDAsIDEyNTQyLCAwLCAxMjU0NCwgMTI1NDYsIDAsIAotICAgIDEyNTQ4LCAwLCAwLCAxMjU1MCwgMCwgMTI1NTIsIDEyNTU0LCAxMjU1NiwgMTI1NTgsIDEyNTYwLCAxMjU2MiwgMTI1NjQsIAotICAgIDEyNTY2LCAxMjU2OCwgMTI1NzAsIDAsIDEyNTcyLCAxMjU3NCwgMTI1NzYsIDEyNTc4LCAwLCAxMjU4MCwgMCwgMTI1ODIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTg0LCAwLCAwLCAwLCAwLCAxMjU4NiwgMCwgMTI1ODgsIDAsIDEyNTkwLCAwLCAxMjU5MiwgCi0gICAgMTI1OTQsIDEyNTk2LCAwLCAxMjU5OCwgMTI2MDAsIDAsIDEyNjAyLCAwLCAwLCAxMjYwNCwgMCwgMTI2MDYsIDAsIDEyNjA4LCAKLSAgICAwLCAxMjYxMCwgMCwgMTI2MTIsIDAsIDEyNjE0LCAxMjYxNiwgMCwgMTI2MTgsIDAsIDAsIDEyNjIwLCAxMjYyMiwgMTI2MjQsIAotICAgIDEyNjI2LCAwLCAxMjYyOCwgMTI2MzAsIDEyNjMyLCAxMjYzNCwgMTI2MzYsIDEyNjM4LCAxMjY0MCwgMCwgMTI2NDIsIAotICAgIDEyNjQ0LCAxMjY0NiwgMTI2NDgsIDAsIDEyNjUwLCAxMjY1MiwgMTI2NTQsIDEyNjU2LCAwLCAxMjY1OCwgMCwgMTI2NjAsIAotICAgIDEyNjYyLCAxMjY2NCwgMTI2NjYsIDEyNjY4LCAxMjY3MCwgMTI2NzIsIDEyNjc0LCAxMjY3NiwgMTI2NzgsIDAsIDEyNjgwLCAKLSAgICAxMjY4MiwgMTI2ODQsIDEyNjg2LCAxMjY4OCwgMTI2OTAsIDEyNjkyLCAxMjY5NCwgMTI2OTYsIDEyNjk4LCAxMjcwMCwgCi0gICAgMTI3MDIsIDEyNzA0LCAxMjcwNiwgMTI3MDgsIDEyNzEwLCAxMjcxMiwgMCwgMCwgMCwgMCwgMCwgMTI3MTQsIDEyNzE2LCAKLSAgICAxMjcxOCwgMCwgMTI3MjAsIDEyNzIyLCAxMjcyNCwgMTI3MjYsIDEyNzI4LCAwLCAxMjczMCwgMTI3MzIsIDEyNzM0LCAKLSAgICAxMjczNiwgMTI3MzgsIDEyNzQwLCAxMjc0MiwgMTI3NDQsIDEyNzQ2LCAxMjc0OCwgMTI3NTAsIDEyNzUyLCAxMjc1NCwgCi0gICAgMTI3NTYsIDEyNzU4LCAxMjc2MCwgMTI3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2NjQsIDY2NjYsIDY2NjgsIDY2NzAsIDY2NzIsIDY2NzQsIDY2NzYsIDY2NzgsIAorICAgIDY2ODAsIDY2ODIsIDY2ODQsIDY2ODYsIDY2ODgsIDY2OTAsIDY2OTIsIDY2OTQsIDY2OTYsIDY2OTgsIDY3MDAsIDY3MDIsIAorICAgIDY3MDQsIDY3MDYsIDY3MDgsIDY3MTAsIDY3MTIsIDY3MTQsIDY3MTYsIDY3MTgsIDY3MjAsIDY3MjIsIDY3MjQsIDY3MjYsIAorICAgIDY3MjgsIDY3MzAsIDY3MzIsIDY3MzQsIDY3MzYsIDY3MzgsIDY3NDAsIDY3NDIsIDY3NDQsIDY3NDYsIDY3NDgsIDY3NTAsIAorICAgIDY3NTIsIDY3NTQsIDY3NTYsIDY3NTgsIDY3NjAsIDY3NjIsIDY3NjQsIDY3NjYsIDY3NjgsIDY3NzAsIDY3NzIsIDY3NzQsIAorICAgIDY3NzYsIDY3NzgsIDY3ODAsIDY3ODIsIDY3ODQsIDY3ODYsIDY3ODgsIDY3OTAsIDY3OTIsIDY3OTQsIDY3OTYsIDY3OTgsIAorICAgIDY4MDAsIDY4MDIsIDY4MDQsIDY4MDYsIDY4MDgsIDY4MTAsIDY4MTIsIDY4MTQsIDY4MTYsIDY4MTgsIDY4MjAsIDY4MjIsIAorICAgIDY4MjQsIDY4MjYsIDY4MjgsIDY4MzAsIDY4MzIsIDY4MzQsIDY4MzYsIDY4MzgsIDY4NDAsIDY4NDIsIDY4NDQsIDY4NDYsIAorICAgIDY4NDgsIDY4NTAsIDY4NTIsIDY4NTQsIDY4NTYsIDY4NTgsIDY4NjAsIDY4NjIsIDY4NjQsIDY4NjYsIDY4NjgsIDY4NzAsIAorICAgIDY4NzIsIDY4NzQsIDY4NzYsIDY4NzgsIDY4ODAsIDY4ODIsIDY4ODQsIDY4ODYsIDY4ODgsIDY4OTAsIDY4OTIsIDY4OTQsIAorICAgIDY4OTYsIDY4OTgsIDY5MDAsIDY5MDIsIDY5MDQsIDY5MDYsIDY5MDgsIDY5MTAsIDY5MTIsIDY5MTQsIDY5MTYsIDY5MTgsIAorICAgIDY5MjAsIDY5MjIsIDY5MjQsIDY5MjYsIDY5MjgsIDY5MzAsIDY5MzIsIDY5MzQsIDY5MzYsIDY5MzgsIDY5NDAsIDY5NDIsIAorICAgIDY5NDQsIDY5NDYsIDY5NDgsIDY5NTAsIDY5NTIsIDY5NTQsIDY5NTYsIDY5NTgsIDY5NjAsIDY5NjIsIDY5NjQsIDY5NjYsIAorICAgIDY5NjgsIDY5NzAsIDY5NzIsIDY5NzQsIDY5NzYsIDY5NzgsIDY5ODAsIDY5ODIsIDY5ODQsIDY5ODYsIDY5ODgsIDY5OTAsIAorICAgIDY5OTIsIDY5OTQsIDY5OTYsIDY5OTgsIDcwMDAsIDcwMDIsIDcwMDQsIDcwMDYsIDcwMDgsIDcwMTAsIDcwMTIsIDcwMTQsIAorICAgIDcwMTYsIDcwMTgsIDcwMjAsIDcwMjIsIDcwMjQsIDcwMjYsIDcwMjgsIDcwMzAsIDcwMzIsIDcwMzQsIDcwMzYsIDcwMzgsIAorICAgIDcwNDAsIDcwNDIsIDcwNDQsIDcwNDYsIDcwNDgsIDcwNTAsIDcwNTIsIDcwNTQsIDcwNTYsIDcwNTgsIDcwNjAsIDcwNjIsIAorICAgIDcwNjQsIDcwNjYsIDcwNjgsIDcwNzAsIDcwNzIsIDcwNzQsIDcwNzYsIDcwNzgsIDcwODAsIDcwODIsIDcwODQsIDcwODYsIAorICAgIDcwODgsIDcwOTAsIDcwOTIsIDcwOTQsIDcwOTYsIDcwOTgsIDcxMDAsIDcxMDIsIDcxMDQsIDcxMDYsIDcxMDgsIDcxMTAsIAorICAgIDcxMTIsIDcxMTQsIDcxMTYsIDcxMTgsIDcxMjAsIDcxMjIsIDcxMjQsIDcxMjYsIDcxMjgsIDcxMzAsIDcxMzIsIDcxMzQsIAorICAgIDcxMzYsIDcxMzgsIDcxNDAsIDcxNDIsIDcxNDQsIDcxNDYsIDcxNDgsIDcxNTAsIDcxNTIsIDcxNTQsIDcxNTYsIDcxNTgsIAorICAgIDcxNjAsIDcxNjIsIDcxNjQsIDcxNjYsIDcxNjgsIDcxNzAsIDcxNzIsIDcxNzQsIDcxNzYsIDcxNzgsIDcxODAsIDcxODIsIAorICAgIDcxODQsIDcxODYsIDcxODgsIDcxOTAsIDcxOTIsIDcxOTQsIDcxOTYsIDcxOTgsIDcyMDAsIDcyMDIsIDAsIDAsIDcyMDQsIAorICAgIDAsIDcyMDYsIDAsIDAsIDcyMDgsIDcyMTAsIDcyMTIsIDcyMTQsIDcyMTYsIDcyMTgsIDcyMjAsIDcyMjIsIDcyMjQsIAorICAgIDcyMjYsIDAsIDcyMjgsIDAsIDcyMzAsIDAsIDAsIDcyMzIsIDcyMzQsIDAsIDAsIDAsIDcyMzYsIDcyMzgsIDcyNDAsIAorICAgIDcyNDIsIDcyNDQsIDcyNDYsIDcyNDgsIDcyNTAsIDcyNTIsIDcyNTQsIDcyNTYsIDcyNTgsIDcyNjAsIDcyNjIsIDcyNjQsIAorICAgIDcyNjYsIDcyNjgsIDcyNzAsIDcyNzIsIDcyNzQsIDcyNzYsIDcyNzgsIDcyODAsIDcyODIsIDcyODQsIDcyODYsIDcyODgsIAorICAgIDcyOTAsIDcyOTIsIDcyOTQsIDcyOTYsIDcyOTgsIDczMDAsIDczMDIsIDczMDQsIDczMDYsIDczMDgsIDczMTAsIDczMTIsIAorICAgIDczMTQsIDczMTYsIDczMTgsIDczMjAsIDczMjIsIDczMjQsIDczMjYsIDczMjgsIDczMzAsIDczMzIsIDczMzQsIDczMzYsIAorICAgIDczMzgsIDczNDAsIDczNDIsIDczNDQsIDczNDYsIDczNDgsIDczNTAsIDczNTIsIDczNTQsIDczNTYsIDczNTgsIDczNjAsIAorICAgIDczNjIsIDczNjQsIDczNjYsIDczNjgsIDczNzAsIDAsIDAsIDczNzIsIDczNzQsIDczNzYsIDczNzgsIDczODAsIDczODIsIAorICAgIDczODQsIDczODYsIDczODgsIDczOTAsIDczOTIsIDczOTQsIDczOTYsIDczOTgsIDc0MDAsIDc0MDIsIDc0MDQsIDc0MDYsIAorICAgIDc0MDgsIDc0MTAsIDc0MTIsIDc0MTQsIDc0MTYsIDc0MTgsIDc0MjAsIDc0MjIsIDc0MjQsIDc0MjYsIDc0MjgsIDc0MzAsIAorICAgIDc0MzIsIDc0MzQsIDc0MzYsIDc0MzgsIDc0NDAsIDc0NDIsIDc0NDQsIDc0NDYsIDc0NDgsIDc0NTAsIDc0NTIsIDc0NTQsIAorICAgIDc0NTYsIDc0NTgsIDc0NjAsIDc0NjIsIDc0NjQsIDc0NjYsIDc0NjgsIDc0NzAsIDc0NzIsIDc0NzQsIDc0NzYsIDc0NzgsIAorICAgIDc0ODAsIDc0ODIsIDc0ODQsIDc0ODYsIDc0ODgsIDc0OTAsIDc0OTIsIDc0OTQsIDc0OTYsIDc0OTgsIDc1MDAsIDc1MDIsIAorICAgIDc1MDQsIDc1MDYsIDc1MDgsIDc1MTAsIDc1MTIsIDc1MTQsIDc1MTYsIDc1MTgsIDc1MjAsIDc1MjIsIDc1MjQsIDc1MjYsIAorICAgIDc1MjgsIDc1MzAsIDc1MzIsIDc1MzQsIDc1MzYsIDc1MzgsIDc1NDAsIDc1NDIsIDc1NDQsIDc1NDYsIDc1NDgsIDc1NTAsIAorICAgIDc1NTIsIDc1NTQsIDc1NTYsIDc1NTgsIDc1NjAsIDc1NjIsIDc1NjQsIDc1NjYsIDc1NjgsIDc1NzAsIDc1NzIsIDc1NzQsIAorICAgIDc1NzYsIDc1NzgsIDc1ODAsIDc1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1ODQsIAorICAgIDc1ODcsIDc1OTAsIDc1OTMsIDc1OTcsIDc2MDEsIDc2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2MDcsIDc2MTAsIDc2MTMsIDc2MTYsIDc2MTksIDAsIDAsIDAsIDAsIDAsIDc2MjIsIDAsIDc2MjUsIDc2MjgsIDc2MzAsIAorICAgIDc2MzIsIDc2MzQsIDc2MzYsIDc2MzgsIDc2NDAsIDc2NDIsIDc2NDQsIDc2NDYsIDc2NDgsIDc2NTEsIDc2NTQsIDc2NTcsIAorICAgIDc2NjAsIDc2NjMsIDc2NjYsIDc2NjksIDc2NzIsIDc2NzUsIDc2NzgsIDc2ODEsIDc2ODQsIDAsIDc2ODcsIDc2OTAsIAorICAgIDc2OTMsIDc2OTYsIDc2OTksIDAsIDc3MDIsIDAsIDc3MDUsIDc3MDgsIDAsIDc3MTEsIDc3MTQsIDAsIDc3MTcsIDc3MjAsIAorICAgIDc3MjMsIDc3MjYsIDc3MjksIDc3MzIsIDc3MzUsIDc3MzgsIDc3NDEsIDc3NDQsIDc3NDcsIDc3NDksIDc3NTEsIDc3NTMsIAorICAgIDc3NTUsIDc3NTcsIDc3NTksIDc3NjEsIDc3NjMsIDc3NjUsIDc3NjcsIDc3NjksIDc3NzEsIDc3NzMsIDc3NzUsIDc3NzcsIAorICAgIDc3NzksIDc3ODEsIDc3ODMsIDc3ODUsIDc3ODcsIDc3ODksIDc3OTEsIDc3OTMsIDc3OTUsIDc3OTcsIDc3OTksIDc4MDEsIAorICAgIDc4MDMsIDc4MDUsIDc4MDcsIDc4MDksIDc4MTEsIDc4MTMsIDc4MTUsIDc4MTcsIDc4MTksIDc4MjEsIDc4MjMsIDc4MjUsIAorICAgIDc4MjcsIDc4MjksIDc4MzEsIDc4MzMsIDc4MzUsIDc4MzcsIDc4MzksIDc4NDEsIDc4NDMsIDc4NDUsIDc4NDcsIDc4NDksIAorICAgIDc4NTEsIDc4NTMsIDc4NTUsIDc4NTcsIDc4NTksIDc4NjEsIDc4NjMsIDc4NjUsIDc4NjcsIDc4NjksIDc4NzEsIDc4NzMsIAorICAgIDc4NzUsIDc4NzcsIDc4NzksIDc4ODEsIDc4ODMsIDc4ODUsIDc4ODcsIDc4ODksIDc4OTEsIDc4OTMsIDc4OTUsIDc4OTcsIAorICAgIDc4OTksIDc5MDEsIDc5MDMsIDc5MDUsIDc5MDcsIDc5MDksIDc5MTEsIDc5MTMsIDc5MTUsIDc5MTcsIDc5MTksIDc5MjEsIAorICAgIDc5MjMsIDc5MjUsIDc5MjcsIDc5MjksIDc5MzEsIDc5MzMsIDc5MzUsIDc5MzcsIDc5MzksIDc5NDEsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc5NDMsIDc5NDUsIDc5NDcsIDc5NDksIDc5NTEsIDc5NTMsIDc5NTUsIDc5NTcsIDc5NTksIAorICAgIDc5NjEsIDc5NjMsIDc5NjUsIDc5NjcsIDc5NjksIDc5NzEsIDc5NzMsIDc5NzUsIDc5NzcsIDc5NzksIDc5ODEsIDc5ODMsIAorICAgIDc5ODUsIDc5ODcsIDc5ODksIDc5OTIsIDc5OTUsIDc5OTgsIDgwMDEsIDgwMDQsIDgwMDcsIDgwMTAsIDgwMTMsIDgwMTYsIAorICAgIDgwMTksIDgwMjIsIDgwMjUsIDgwMjgsIDgwMzEsIDgwMzQsIDgwMzcsIDgwNDAsIDgwNDMsIDgwNDUsIDgwNDcsIDgwNDksIAorICAgIDgwNTEsIDgwNTQsIDgwNTcsIDgwNjAsIDgwNjMsIDgwNjYsIDgwNjksIDgwNzIsIDgwNzUsIDgwNzgsIDgwODEsIDgwODQsIAorICAgIDgwODcsIDgwOTAsIDgwOTMsIDgwOTYsIDgwOTksIDgxMDIsIDgxMDUsIDgxMDgsIDgxMTEsIDgxMTQsIDgxMTcsIDgxMjAsIAorICAgIDgxMjMsIDgxMjYsIDgxMjksIDgxMzIsIDgxMzUsIDgxMzgsIDgxNDEsIDgxNDQsIDgxNDcsIDgxNTAsIDgxNTMsIDgxNTYsIAorICAgIDgxNTksIDgxNjIsIDgxNjUsIDgxNjgsIDgxNzEsIDgxNzQsIDgxNzcsIDgxODAsIDgxODMsIDgxODYsIDgxODksIDgxOTIsIAorICAgIDgxOTUsIDgxOTgsIDgyMDEsIDgyMDQsIDgyMDcsIDgyMTAsIDgyMTMsIDgyMTYsIDgyMTksIDgyMjIsIDgyMjUsIDgyMjgsIAorICAgIDgyMzEsIDgyMzQsIDgyMzcsIDgyNDAsIDgyNDMsIDgyNDYsIDgyNDksIDgyNTIsIDgyNTUsIDgyNTgsIDgyNjEsIDgyNjQsIAorICAgIDgyNjcsIDgyNzAsIDgyNzMsIDgyNzYsIDgyNzksIDgyODIsIDgyODUsIDgyODgsIDgyOTEsIDgyOTQsIDgyOTcsIDgzMDAsIAorICAgIDgzMDMsIDgzMDYsIDgzMDksIDgzMTIsIDgzMTUsIDgzMTgsIDgzMjEsIDgzMjQsIDgzMjcsIDgzMzAsIDgzMzMsIDgzMzcsIAorICAgIDgzNDEsIDgzNDUsIDgzNDksIDgzNTMsIDgzNTcsIDgzNjAsIDgzNjMsIDgzNjYsIDgzNjksIDgzNzIsIDgzNzUsIDgzNzgsIAorICAgIDgzODEsIDgzODQsIDgzODcsIDgzOTAsIDgzOTMsIDgzOTYsIDgzOTksIDg0MDIsIDg0MDUsIDg0MDgsIDg0MTEsIDg0MTQsIAorICAgIDg0MTcsIDg0MjAsIDg0MjMsIDg0MjYsIDg0MjksIDg0MzIsIDg0MzUsIDg0MzgsIDg0NDEsIDg0NDQsIDg0NDcsIDg0NTAsIAorICAgIDg0NTMsIDg0NTYsIDg0NTksIDg0NjIsIDg0NjUsIDg0NjgsIDg0NzEsIDg0NzQsIDg0NzcsIDg0ODAsIDg0ODMsIDg0ODYsIAorICAgIDg0ODksIDg0OTIsIDg0OTUsIDg0OTgsIDg1MDEsIDg1MDQsIDg1MDcsIDg1MTAsIDg1MTMsIDg1MTYsIDg1MTksIDg1MjIsIAorICAgIDg1MjUsIDg1MjgsIDg1MzEsIDg1MzQsIDg1MzcsIDg1NDAsIDg1NDMsIDg1NDYsIDg1NDksIDg1NTIsIDg1NTUsIDg1NTgsIAorICAgIDg1NjEsIDg1NjQsIDg1NjcsIDg1NzAsIDg1NzMsIDg1NzYsIDg1NzksIDg1ODIsIDg1ODUsIDg1ODgsIDg1OTEsIDg1OTQsIAorICAgIDg1OTcsIDg2MDAsIDg2MDMsIDg2MDYsIDg2MDksIDg2MTIsIDg2MTUsIDg2MTgsIDg2MjEsIDg2MjQsIDg2MjcsIDg2MzAsIAorICAgIDg2MzMsIDg2MzYsIDg2MzksIDg2NDIsIDg2NDUsIDg2NDgsIDg2NTEsIDg2NTQsIDg2NTcsIDg2NjAsIDg2NjMsIDg2NjYsIAorICAgIDg2NjksIDg2NzIsIDg2NzUsIDg2NzgsIDg2ODEsIDg2ODQsIDg2ODcsIDg2OTAsIDg2OTMsIDg2OTYsIDg2OTksIDg3MDIsIAorICAgIDg3MDUsIDg3MDgsIDg3MTEsIDg3MTQsIDg3MTcsIDg3MjAsIDg3MjMsIDg3MjYsIDg3MjksIDg3MzIsIDg3MzUsIDg3MzgsIAorICAgIDg3NDEsIDg3NDQsIDg3NDcsIDg3NTAsIDg3NTMsIDg3NTYsIDg3NTksIDg3NjIsIDg3NjUsIDg3NjgsIDg3NzEsIDg3NzQsIAorICAgIDg3NzcsIDg3ODAsIDg3ODMsIDg3ODcsIDg3OTEsIDg3OTUsIDg3OTgsIDg4MDEsIDg4MDQsIDg4MDcsIDg4MTAsIDg4MTMsIAorICAgIDg4MTYsIDg4MTksIDg4MjIsIDg4MjUsIDg4MjgsIDg4MzEsIDg4MzQsIDg4MzcsIDg4NDAsIDg4NDMsIDg4NDYsIDg4NDksIAorICAgIDg4NTIsIDg4NTUsIDg4NTgsIDg4NjEsIDg4NjQsIDg4NjcsIDg4NzAsIDg4NzMsIDg4NzYsIDg4NzksIDg4ODIsIDg4ODUsIAorICAgIDg4ODgsIDg4OTEsIDg4OTQsIDg4OTcsIDg5MDAsIDg5MDMsIDg5MDYsIDg5MDksIDg5MTIsIDg5MTUsIDg5MTgsIDg5MjEsIAorICAgIDg5MjQsIDg5MjcsIDg5MzAsIDg5MzMsIDg5MzYsIDg5MzksIDg5NDIsIDg5NDUsIDg5NDgsIDg5NTEsIDg5NTQsIDg5NTcsIAorICAgIDg5NjAsIDg5NjMsIDg5NjYsIDg5NjksIDg5NzIsIDg5NzUsIDg5NzgsIDg5ODEsIDg5ODQsIDg5ODcsIDg5OTAsIDg5OTMsIAorICAgIDg5OTYsIDg5OTksIDkwMDIsIDkwMDUsIDkwMDgsIDkwMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDkwMTQsIDkwMTgsIDkwMjIsIDkwMjYsIDkwMzAsIDkwMzQsIDkwMzgsIDkwNDIsIDkwNDYsIAorICAgIDkwNTAsIDkwNTQsIDkwNTgsIDkwNjIsIDkwNjYsIDkwNzAsIDkwNzQsIDkwNzgsIDkwODIsIDkwODYsIDkwOTAsIDkwOTQsIAorICAgIDkwOTgsIDkxMDIsIDkxMDYsIDkxMTAsIDkxMTQsIDkxMTgsIDkxMjIsIDkxMjYsIDkxMzAsIDkxMzQsIDkxMzgsIDkxNDIsIAorICAgIDkxNDYsIDkxNTAsIDkxNTQsIDkxNTgsIDkxNjIsIDkxNjYsIDkxNzAsIDkxNzQsIDkxNzgsIDkxODIsIDkxODYsIDkxOTAsIAorICAgIDkxOTQsIDkxOTgsIDkyMDIsIDkyMDYsIDkyMTAsIDkyMTQsIDkyMTgsIDkyMjIsIDkyMjYsIDkyMzAsIDkyMzQsIDkyMzgsIAorICAgIDkyNDIsIDkyNDYsIDkyNTAsIDkyNTQsIDkyNTgsIDkyNjIsIDkyNjYsIDAsIDAsIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIAorICAgIDkyODYsIDkyOTAsIDkyOTQsIDkyOTgsIDkzMDIsIDkzMDYsIDkzMTAsIDkzMTQsIDkzMTgsIDkzMjIsIDkzMjYsIDkzMzAsIAorICAgIDkzMzQsIDkzMzgsIDkzNDIsIDkzNDYsIDkzNTAsIDkzNTQsIDkzNTgsIDkzNjIsIDkzNjYsIDkzNzAsIDkzNzQsIDkzNzgsIAorICAgIDkzODIsIDkzODYsIDkzOTAsIDkzOTQsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIDk0MTQsIDk0MTgsIDk0MjIsIDk0MjYsIAorICAgIDk0MzAsIDk0MzQsIDk0MzgsIDk0NDIsIDk0NDYsIDk0NTAsIDk0NTQsIDk0NTgsIDk0NjIsIDk0NjYsIDk0NzAsIDk0NzQsIAorICAgIDk0NzgsIDk0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0ODYsIDk0OTAsIAorICAgIDk0OTQsIDk0OTksIDk1MDQsIDk1MDksIDk1MTQsIDk1MTksIDk1MjQsIDk1MjksIDk1MzMsIDk1NTIsIDk1NjEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NjYsIDk1NjgsIDk1NzAsIAorICAgIDk1NzIsIDk1NzQsIDk1NzYsIDk1NzgsIDk1ODAsIDk1ODIsIDk1ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIAorICAgIDk1OTgsIDk2MDAsIDk2MDIsIDk2MDQsIDk2MDYsIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDk2MTYsIDk2MTgsIDk2MjAsIAorICAgIDk2MjIsIDk2MjQsIDk2MjYsIDAsIDAsIDk2MjgsIDk2MzAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDk2NDAsIDk2NDIsIAorICAgIDk2NDQsIDk2NDYsIDk2NDgsIDk2NTAsIDAsIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIAorICAgIDk2NjYsIDk2NjgsIDk2NzAsIDk2NzIsIDk2NzQsIDk2NzYsIDk2NzgsIDk2ODAsIDk2ODIsIDk2ODQsIDk2ODYsIDk2ODgsIAorICAgIDAsIDk2OTAsIDk2OTIsIDk2OTQsIDk2OTYsIDAsIDAsIDAsIDAsIDk2OTgsIDk3MDEsIDk3MDQsIDAsIDk3MDcsIDAsIAorICAgIDk3MTAsIDk3MTMsIDk3MTYsIDk3MTksIDk3MjIsIDk3MjUsIDk3MjgsIDk3MzEsIDk3MzQsIDk3MzcsIDk3NDAsIDk3NDIsIAorICAgIDk3NDQsIDk3NDYsIDk3NDgsIDk3NTAsIDk3NTIsIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIAorICAgIDk3NjgsIDk3NzAsIDk3NzIsIDk3NzQsIDk3NzYsIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIAorICAgIDk3OTIsIDk3OTQsIDk3OTYsIDk3OTgsIDk4MDAsIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIAorICAgIDk4MTYsIDk4MTgsIDk4MjAsIDk4MjIsIDk4MjQsIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIAorICAgIDk4NDAsIDk4NDIsIDk4NDQsIDk4NDYsIDk4NDgsIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIAorICAgIDk4NjQsIDk4NjYsIDk4NjgsIDk4NzAsIDk4NzIsIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIAorICAgIDk4ODgsIDk4OTAsIDk4OTIsIDk4OTQsIDk4OTYsIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIAorICAgIDk5MTIsIDk5MTQsIDk5MTYsIDk5MTgsIDk5MjAsIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIAorICAgIDk5MzYsIDk5MzgsIDk5NDAsIDk5NDIsIDk5NDQsIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTYsIDk5NTgsIAorICAgIDk5NjAsIDk5NjIsIDk5NjQsIDk5NjYsIDk5NjgsIDk5NzAsIDk5NzIsIDk5NzQsIDk5NzcsIDk5ODAsIDk5ODMsIDk5ODYsIAorICAgIDk5ODksIDk5OTIsIDk5OTUsIDAsIDAsIDAsIDAsIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgCisgICAgMTAwMTAsIDEwMDEyLCAxMDAxNCwgMTAwMTYsIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIAorICAgIDEwMDMwLCAxMDAzMiwgMTAwMzQsIDEwMDM2LCAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAKKyAgICAxMDA1MCwgMTAwNTIsIDEwMDU0LCAxMDA1NiwgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgCisgICAgMTAwNzAsIDEwMDcyLCAxMDA3NCwgMTAwNzYsIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIAorICAgIDEwMDkwLCAxMDA5MiwgMTAwOTQsIDEwMDk2LCAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAKKyAgICAxMDExMCwgMTAxMTIsIDEwMTE0LCAxMDExNiwgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgCisgICAgMTAxMzAsIDEwMTMyLCAxMDEzNCwgMTAxMzYsIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIAorICAgIDEwMTUwLCAxMDE1MiwgMTAxNTQsIDEwMTU2LCAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAKKyAgICAxMDE3MCwgMTAxNzIsIDEwMTc0LCAxMDE3NiwgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgCisgICAgMTAxOTAsIDEwMTkyLCAxMDE5NCwgMTAxOTYsIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIAorICAgIDEwMjEwLCAxMDIxMiwgMTAyMTQsIDEwMjE2LCAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAKKyAgICAxMDIzMCwgMTAyMzIsIDEwMjM0LCAxMDIzNiwgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgCisgICAgMTAyNTAsIDEwMjUyLCAxMDI1NCwgMTAyNTYsIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIAorICAgIDEwMjcwLCAxMDI3MiwgMTAyNzQsIDEwMjc2LCAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAKKyAgICAxMDI5MCwgMTAyOTIsIDEwMjk0LCAxMDI5NiwgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgCisgICAgMTAzMTAsIDEwMzEyLCAxMDMxNCwgMTAzMTYsIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIAorICAgIDEwMzMwLCAxMDMzMiwgMTAzMzQsIDEwMzM2LCAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAKKyAgICAxMDM1MCwgMTAzNTIsIDEwMzU0LCAxMDM1NiwgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDEwMzY2LCAxMDM2OCwgCisgICAgMTAzNzAsIDEwMzcyLCAxMDM3NCwgMTAzNzYsIDAsIDAsIDAsIDEwMzc4LCAxMDM4MCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgCisgICAgMTAzODgsIDAsIDAsIDEwMzkwLCAxMDM5MiwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMTA0MDAsIDAsIDAsIDEwNDAyLCAKKyAgICAxMDQwNCwgMTA0MDYsIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDAsIDAsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDAsIDAsIDAsIAorICAgIDEwNDIwLCAxMDQyMiwgMTA0MjQsIDEwNDI2LCAxMDQyOCwgMTA0MzAsIDEwNDMyLCAwLCAxMDQzNCwgMTA0MzYsIDEwNDM4LCAKKyAgICAxMDQ0MCwgMTA0NDIsIDEwNDQ0LCAxMDQ0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI3NjQsIDEyNzY3LCAxMjc3MCwgMTI3NzMsIDEyNzc2LCAxMjc3OSwgMTI3ODIsIDEyNzg1LCAKLSAgICAxMjc4OCwgMTI3OTEsIDEyNzk0LCAwLCAwLCAwLCAwLCAwLCAxMjc5NywgMTI4MDEsIDEyODA1LCAxMjgwOSwgMTI4MTMsIAotICAgIDEyODE3LCAxMjgyMSwgMTI4MjUsIDEyODI5LCAxMjgzMywgMTI4MzcsIDEyODQxLCAxMjg0NSwgMTI4NDksIDEyODUzLCAKLSAgICAxMjg1NywgMTI4NjEsIDEyODY1LCAxMjg2OSwgMTI4NzMsIDEyODc3LCAxMjg4MSwgMTI4ODUsIDEyODg5LCAxMjg5MywgCi0gICAgMTI4OTcsIDEyOTAxLCAxMjkwNSwgMTI5MDcsIDEyOTA5LCAxMjkxMiwgMCwgMTI5MTUsIDEyOTE3LCAxMjkxOSwgMTI5MjEsIAotICAgIDEyOTIzLCAxMjkyNSwgMTI5MjcsIDEyOTI5LCAxMjkzMSwgMTI5MzMsIDEyOTM1LCAxMjkzNywgMTI5MzksIDEyOTQxLCAKLSAgICAxMjk0MywgMTI5NDUsIDEyOTQ3LCAxMjk0OSwgMTI5NTEsIDEyOTUzLCAxMjk1NSwgMTI5NTcsIDEyOTU5LCAxMjk2MSwgCi0gICAgMTI5NjMsIDEyOTY1LCAxMjk2NywgMTI5NzAsIDEyOTczLCAxMjk3NiwgMTI5NzksIDEyOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk4NiwgMTI5ODksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQ0OCwgMCwgMTA0NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjk5NSwgMTI5OTgsIDEzMDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMzAwMywgMTMwMDUsIDEzMDA3LCAxMzAwOSwgMTMwMTEsIDEzMDEzLCAxMzAxNSwgMTMwMTcsIDEzMDE5LCAxMzAyMSwgCi0gICAgMTMwMjMsIDEzMDI1LCAxMzAyNywgMTMwMjksIDEzMDMxLCAxMzAzMywgMTMwMzUsIDEzMDM3LCAxMzAzOSwgMTMwNDEsIAotICAgIDEzMDQzLCAxMzA0NSwgMTMwNDcsIDEzMDQ5LCAxMzA1MSwgMTMwNTMsIDEzMDU1LCAxMzA1NywgMTMwNTksIDEzMDYxLCAKLSAgICAxMzA2MywgMTMwNjUsIDEzMDY3LCAxMzA2OSwgMTMwNzEsIDEzMDczLCAxMzA3NSwgMTMwNzcsIDEzMDc5LCAxMzA4MSwgCi0gICAgMTMwODMsIDEzMDg1LCAxMzA4NywgMCwgMCwgMCwgMCwgMCwgMTMwODksIDEzMDkzLCAxMzA5NywgMTMxMDEsIDEzMTA1LCAKLSAgICAxMzEwOSwgMTMxMTMsIDEzMTE3LCAxMzEyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMjUsIDEzMTI3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1NywgMTA0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNDYzLCAxMDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTMxMjksIDEzMTMxLCAxMzEzMywgMTMxMzUsIDEzMTM3LCAxMzEzOSwgMTMxNDEsIDEzMTQzLCAxMzE0NSwgCi0gICAgMTMxNDcsIDEzMTQ5LCAxMzE1MSwgMTMxNTMsIDEzMTU1LCAxMzE1NywgMTMxNTksIDEzMTYxLCAxMzE2MywgMTMxNjUsIAotICAgIDEzMTY3LCAxMzE2OSwgMTMxNzEsIDEzMTczLCAxMzE3NSwgMTMxNzcsIDEzMTc5LCAxMzE4MSwgMTMxODMsIDEzMTg1LCAKLSAgICAxMzE4NywgMTMxODksIDEzMTkxLCAxMzE5MywgMTMxOTUsIDEzMTk3LCAxMzE5OSwgMTMyMDEsIDEzMjAzLCAxMzIwNSwgCi0gICAgMTMyMDcsIDEzMjA5LCAxMzIxMSwgMTMyMTMsIDEzMjE1LCAxMzIxNywgMTMyMTksIDEzMjIxLCAxMzIyMywgMTMyMjUsIAotICAgIDEzMjI3LCAxMzIyOSwgMTMyMzEsIDEzMjMzLCAxMzIzNSwgMTMyMzcsIDEzMjM5LCAxMzI0MSwgMTMyNDMsIDEzMjQ1LCAKLSAgICAxMzI0NywgMTMyNDksIDEzMjUxLCAxMzI1MywgMTMyNTUsIDEzMjU3LCAxMzI1OSwgMTMyNjEsIDEzMjYzLCAxMzI2NSwgCi0gICAgMTMyNjcsIDEzMjY5LCAxMzI3MSwgMTMyNzMsIDEzMjc1LCAxMzI3NywgMTMyNzksIDEzMjgxLCAxMzI4MywgMTMyODUsIAotICAgIDEzMjg3LCAxMzI4OSwgMTMyOTEsIDEzMjkzLCAxMzI5NSwgMTMyOTcsIDEzMjk5LCAxMzMwMSwgMTMzMDMsIDEzMzA1LCAKLSAgICAxMzMwNywgMTMzMDksIDEzMzExLCAxMzMxMywgMTMzMTUsIDEzMzE3LCAxMzMxOSwgMTMzMjEsIDEzMzIzLCAxMzMyNSwgCi0gICAgMTMzMjcsIDEzMzI5LCAxMzMzMSwgMTMzMzMsIDEzMzM1LCAxMzMzNywgMTMzMzksIDEzMzQxLCAxMzM0MywgMTMzNDUsIAotICAgIDEzMzQ3LCAxMzM0OSwgMTMzNTEsIDEzMzUzLCAxMzM1NSwgMTMzNTcsIDEzMzU5LCAxMzM2MSwgMTMzNjMsIDEzMzY1LCAKLSAgICAxMzM2NywgMTMzNjksIDEzMzcxLCAxMzM3MywgMTMzNzUsIDEzMzc3LCAxMzM3OSwgMTMzODEsIDEzMzgzLCAxMzM4NSwgCi0gICAgMTMzODcsIDEzMzg5LCAxMzM5MSwgMTMzOTMsIDEzMzk1LCAxMzM5NywgMTMzOTksIDEzNDAxLCAxMzQwMywgMTM0MDUsIAotICAgIDEzNDA3LCAxMzQwOSwgMTM0MTEsIDEzNDEzLCAxMzQxNSwgMTM0MTcsIDEzNDE5LCAxMzQyMSwgMTM0MjMsIDEzNDI1LCAKLSAgICAxMzQyNywgMTM0MjksIDEzNDMxLCAxMzQzMywgMTM0MzUsIDEzNDM3LCAxMzQzOSwgMTM0NDEsIDEzNDQzLCAxMzQ0NSwgCi0gICAgMTM0NDcsIDEzNDQ5LCAxMzQ1MSwgMTM0NTMsIDEzNDU1LCAxMzQ1NywgMTM0NTksIDEzNDYxLCAxMzQ2MywgMTM0NjUsIAotICAgIDEzNDY3LCAxMzQ2OSwgMTM0NzEsIDEzNDczLCAxMzQ3NSwgMTM0NzcsIDEzNDc5LCAxMzQ4MSwgMTM0ODMsIDEzNDg1LCAKLSAgICAxMzQ4NywgMTM0ODksIDEzNDkxLCAxMzQ5MywgMTM0OTUsIDEzNDk3LCAxMzQ5OSwgMTM1MDEsIDEzNTAzLCAxMzUwNSwgCi0gICAgMTM1MDcsIDEzNTA5LCAxMzUxMSwgMTM1MTMsIDEzNTE1LCAxMzUxNywgMTM1MTksIDEzNTIxLCAxMzUyMywgMTM1MjUsIAotICAgIDEzNTI3LCAxMzUyOSwgMTM1MzEsIDEzNTMzLCAxMzUzNSwgMTM1MzcsIDEzNTM5LCAxMzU0MSwgMTM1NDMsIDEzNTQ1LCAKLSAgICAxMzU0NywgMTM1NDksIDEzNTUxLCAxMzU1MywgMTM1NTUsIDEzNTU3LCAxMzU1OSwgMTM1NjEsIDEzNTYzLCAxMzU2NSwgCi0gICAgMTM1NjcsIDEzNTY5LCAxMzU3MSwgMTM1NzMsIDEzNTc1LCAxMzU3NywgMTM1NzksIDEzNTgxLCAxMzU4MywgMTM1ODUsIAotICAgIDEzNTg3LCAxMzU4OSwgMTM1OTEsIDEzNTkzLCAxMzU5NSwgMTM1OTcsIDEzNTk5LCAxMzYwMSwgMTM2MDMsIDEzNjA1LCAKLSAgICAxMzYwNywgMTM2MDksIDEzNjExLCAxMzYxMywgMTM2MTUsIDEzNjE3LCAxMzYxOSwgMTM2MjEsIDEzNjIzLCAxMzYyNSwgCi0gICAgMTM2MjcsIDEzNjI5LCAxMzYzMSwgMTM2MzMsIDEzNjM1LCAxMzYzNywgMTM2MzksIDEzNjQxLCAxMzY0MywgMTM2NDUsIAotICAgIDEzNjQ3LCAxMzY0OSwgMTM2NTEsIDEzNjUzLCAxMzY1NSwgMTM2NTcsIDEzNjU5LCAxMzY2MSwgMTM2NjMsIDEzNjY1LCAKLSAgICAxMzY2NywgMTM2NjksIDEzNjcxLCAxMzY3MywgMTM2NzUsIDEzNjc3LCAxMzY3OSwgMTM2ODEsIDEzNjgzLCAxMzY4NSwgCi0gICAgMTM2ODcsIDEzNjg5LCAxMzY5MSwgMTM2OTMsIDEzNjk1LCAxMzY5NywgMTM2OTksIDEzNzAxLCAxMzcwMywgMTM3MDUsIAotICAgIDEzNzA3LCAxMzcwOSwgMTM3MTEsIDEzNzEzLCAxMzcxNSwgMTM3MTcsIDEzNzE5LCAxMzcyMSwgMTM3MjMsIDEzNzI1LCAKLSAgICAxMzcyNywgMTM3MjksIDEzNzMxLCAxMzczMywgMTM3MzUsIDEzNzM3LCAxMzczOSwgMTM3NDEsIDEzNzQzLCAxMzc0NSwgCi0gICAgMTM3NDcsIDEzNzQ5LCAxMzc1MSwgMTM3NTMsIDEzNzU1LCAxMzc1NywgMTM3NTksIDEzNzYxLCAxMzc2MywgMTM3NjUsIAotICAgIDEzNzY3LCAxMzc2OSwgMTM3NzEsIDEzNzczLCAxMzc3NSwgMTM3NzcsIDEzNzc5LCAxMzc4MSwgMTM3ODMsIDEzNzg1LCAKLSAgICAxMzc4NywgMTM3ODksIDEzNzkxLCAxMzc5MywgMTM3OTUsIDEzNzk3LCAxMzc5OSwgMTM4MDEsIDEzODAzLCAxMzgwNSwgCi0gICAgMTM4MDcsIDEzODA5LCAxMzgxMSwgMTM4MTMsIDEzODE1LCAxMzgxNywgMTM4MTksIDEzODIxLCAxMzgyMywgMTM4MjUsIAotICAgIDEzODI3LCAxMzgyOSwgMTM4MzEsIDEzODMzLCAxMzgzNSwgMTM4MzcsIDEzODM5LCAxMzg0MSwgMTM4NDMsIDEzODQ1LCAKLSAgICAxMzg0NywgMTM4NDksIDEzODUxLCAxMzg1MywgMTM4NTUsIDEzODU3LCAxMzg1OSwgMTM4NjEsIDEzODYzLCAxMzg2NSwgCi0gICAgMTM4NjcsIDEzODY5LCAxMzg3MSwgMTM4NzMsIDEzODc1LCAxMzg3NywgMTM4NzksIDEzODgxLCAxMzg4MywgMTM4ODUsIAotICAgIDEzODg3LCAxMzg4OSwgMTM4OTEsIDEzODkzLCAxMzg5NSwgMTM4OTcsIDEzODk5LCAxMzkwMSwgMTM5MDMsIDEzOTA1LCAKLSAgICAxMzkwNywgMTM5MDksIDEzOTExLCAxMzkxMywgMTM5MTUsIDEzOTE3LCAxMzkxOSwgMTM5MjEsIDEzOTIzLCAxMzkyNSwgCi0gICAgMTM5MjcsIDEzOTI5LCAxMzkzMSwgMTM5MzMsIDEzOTM1LCAxMzkzNywgMTM5MzksIDEzOTQxLCAxMzk0MywgMTM5NDUsIAotICAgIDEzOTQ3LCAxMzk0OSwgMTM5NTEsIDEzOTUzLCAxMzk1NSwgMTM5NTcsIDEzOTU5LCAxMzk2MSwgMTM5NjMsIDEzOTY1LCAKLSAgICAxMzk2NywgMTM5NjksIDEzOTcxLCAxMzk3MywgMTM5NzUsIDEzOTc3LCAxMzk3OSwgMTM5ODEsIDEzOTgzLCAxMzk4NSwgCi0gICAgMTM5ODcsIDEzOTg5LCAxMzk5MSwgMTM5OTMsIDEzOTk1LCAxMzk5NywgMTM5OTksIDE0MDAxLCAxNDAwMywgMTQwMDUsIAotICAgIDE0MDA3LCAxNDAwOSwgMTQwMTEsIDE0MDEzLCAxNDAxNSwgMTQwMTcsIDE0MDE5LCAxNDAyMSwgMTQwMjMsIDE0MDI1LCAKLSAgICAxNDAyNywgMTQwMjksIDE0MDMxLCAxNDAzMywgMTQwMzUsIDE0MDM3LCAxNDAzOSwgMTQwNDEsIDE0MDQzLCAxNDA0NSwgCi0gICAgMTQwNDcsIDE0MDQ5LCAxNDA1MSwgMTQwNTMsIDE0MDU1LCAxNDA1NywgMTQwNTksIDE0MDYxLCAxNDA2MywgMTQwNjUsIAotICAgIDE0MDY3LCAxNDA2OSwgMTQwNzEsIDE0MDczLCAxNDA3NSwgMTQwNzcsIDE0MDc5LCAxNDA4MSwgMTQwODMsIDE0MDg1LCAKLSAgICAxNDA4NywgMTQwODksIDE0MDkxLCAxNDA5MywgMTQwOTUsIDE0MDk3LCAxNDA5OSwgMTQxMDEsIDE0MTAzLCAxNDEwNSwgCi0gICAgMTQxMDcsIDE0MTA5LCAxNDExMSwgMTQxMTMsIDE0MTE1LCAxNDExNywgMTQxMTksIDE0MTIxLCAxNDEyMywgMTQxMjUsIAotICAgIDE0MTI3LCAxNDEyOSwgMTQxMzEsIDE0MTMzLCAxNDEzNSwgMTQxMzcsIDE0MTM5LCAxNDE0MSwgMTQxNDMsIDE0MTQ1LCAKLSAgICAxNDE0NywgMTQxNDksIDE0MTUxLCAxNDE1MywgMTQxNTUsIDE0MTU3LCAxNDE1OSwgMTQxNjEsIDE0MTYzLCAxNDE2NSwgCi0gICAgMTQxNjcsIDE0MTY5LCAxNDE3MSwgMTQxNzMsIDE0MTc1LCAxNDE3NywgMTQxNzksIDE0MTgxLCAxNDE4MywgMTQxODUsIAotICAgIDE0MTg3LCAxNDE4OSwgMTQxOTEsIDE0MTkzLCAxNDE5NSwgMTQxOTcsIDE0MTk5LCAxNDIwMSwgMTQyMDMsIDE0MjA1LCAKLSAgICAxNDIwNywgMTQyMDksIDE0MjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ2OSwgCisgICAgMTA0NzIsIDAsIDEwNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ3OCwgMTA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDg0LCAxMDQ4NywgMTA0OTAsIDEwNDkzLCAxMDQ5NiwgMTA0OTksIDEwNTAyLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwNSwgMTA1MDgsIDEwNTExLCAxMDUxNCwgMTA1MTcsIAorICAgIDEwNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUyMywgMTA1MjUsIDEwNTI3LCAKKyAgICAxMDUyOSwgMTA1MzEsIDEwNTMzLCAxMDUzNSwgMTA1MzcsIDEwNTM5LCAxMDU0MSwgMTA1NDMsIDEwNTQ1LCAxMDU0NywgCisgICAgMTA1NDksIDEwNTUxLCAxMDU1MywgMTA1NTUsIDEwNTU3LCAxMDU1OSwgMTA1NjEsIDEwNTYzLCAxMDU2NSwgMTA1NjcsIAorICAgIDEwNTY5LCAxMDU3MSwgMTA1NzMsIDEwNTc1LCAxMDU3NywgMTA1NzksIDEwNTgxLCAxMDU4MywgMTA1ODUsIDEwNTg3LCAKKyAgICAxMDU4OSwgMTA1OTEsIDEwNTkzLCAxMDU5NSwgMTA1OTcsIDEwNTk5LCAxMDYwMSwgMTA2MDMsIDEwNjA1LCAxMDYwNywgCisgICAgMTA2MDksIDEwNjExLCAxMDYxMywgMTA2MTUsIDEwNjE3LCAxMDYxOSwgMTA2MjEsIDEwNjIzLCAxMDYyNSwgMTA2MjcsIAorICAgIDEwNjI5LCAxMDYzMSwgMTA2MzMsIDEwNjM1LCAxMDYzNywgMTA2MzksIDEwNjQxLCAxMDY0MywgMTA2NDUsIDEwNjQ3LCAKKyAgICAxMDY0OSwgMTA2NTEsIDEwNjUzLCAxMDY1NSwgMTA2NTcsIDEwNjU5LCAxMDY2MSwgMTA2NjMsIDEwNjY1LCAxMDY2NywgCisgICAgMTA2NjksIDEwNjcxLCAxMDY3MywgMTA2NzUsIDEwNjc3LCAxMDY3OSwgMTA2ODEsIDEwNjgzLCAxMDY4NSwgMTA2ODcsIAorICAgIDEwNjg5LCAxMDY5MSwgMCwgMTA2OTMsIDEwNjk1LCAxMDY5NywgMTA2OTksIDEwNzAxLCAxMDcwMywgMTA3MDUsIDEwNzA3LCAKKyAgICAxMDcwOSwgMTA3MTEsIDEwNzEzLCAxMDcxNSwgMTA3MTcsIDEwNzE5LCAxMDcyMSwgMTA3MjMsIDEwNzI1LCAxMDcyNywgCisgICAgMTA3MjksIDEwNzMxLCAxMDczMywgMTA3MzUsIDEwNzM3LCAxMDczOSwgMTA3NDEsIDEwNzQzLCAxMDc0NSwgMTA3NDcsIAorICAgIDEwNzQ5LCAxMDc1MSwgMTA3NTMsIDEwNzU1LCAxMDc1NywgMTA3NTksIDEwNzYxLCAxMDc2MywgMTA3NjUsIDEwNzY3LCAKKyAgICAxMDc2OSwgMTA3NzEsIDEwNzczLCAxMDc3NSwgMTA3NzcsIDEwNzc5LCAxMDc4MSwgMTA3ODMsIDEwNzg1LCAxMDc4NywgCisgICAgMTA3ODksIDEwNzkxLCAxMDc5MywgMTA3OTUsIDEwNzk3LCAxMDc5OSwgMTA4MDEsIDEwODAzLCAxMDgwNSwgMTA4MDcsIAorICAgIDEwODA5LCAxMDgxMSwgMTA4MTMsIDEwODE1LCAxMDgxNywgMTA4MTksIDEwODIxLCAxMDgyMywgMTA4MjUsIDEwODI3LCAKKyAgICAxMDgyOSwgMTA4MzEsIDEwODMzLCAwLCAxMDgzNSwgMTA4MzcsIDAsIDAsIDEwODM5LCAwLCAwLCAxMDg0MSwgMTA4NDMsIDAsIAorICAgIDAsIDEwODQ1LCAxMDg0NywgMTA4NDksIDEwODUxLCAwLCAxMDg1MywgMTA4NTUsIDEwODU3LCAxMDg1OSwgMTA4NjEsIAorICAgIDEwODYzLCAxMDg2NSwgMTA4NjcsIDEwODY5LCAxMDg3MSwgMTA4NzMsIDEwODc1LCAwLCAxMDg3NywgMCwgMTA4NzksIAorICAgIDEwODgxLCAxMDg4MywgMTA4ODUsIDEwODg3LCAxMDg4OSwgMTA4OTEsIDAsIDEwODkzLCAxMDg5NSwgMTA4OTcsIDEwODk5LCAKKyAgICAxMDkwMSwgMTA5MDMsIDEwOTA1LCAxMDkwNywgMTA5MDksIDEwOTExLCAxMDkxMywgMTA5MTUsIDEwOTE3LCAxMDkxOSwgCisgICAgMTA5MjEsIDEwOTIzLCAxMDkyNSwgMTA5MjcsIDEwOTI5LCAxMDkzMSwgMTA5MzMsIDEwOTM1LCAxMDkzNywgMTA5MzksIAorICAgIDEwOTQxLCAxMDk0MywgMTA5NDUsIDEwOTQ3LCAxMDk0OSwgMTA5NTEsIDEwOTUzLCAxMDk1NSwgMTA5NTcsIDEwOTU5LCAKKyAgICAxMDk2MSwgMTA5NjMsIDEwOTY1LCAxMDk2NywgMTA5NjksIDEwOTcxLCAxMDk3MywgMTA5NzUsIDEwOTc3LCAxMDk3OSwgCisgICAgMTA5ODEsIDEwOTgzLCAxMDk4NSwgMTA5ODcsIDEwOTg5LCAxMDk5MSwgMTA5OTMsIDEwOTk1LCAxMDk5NywgMTA5OTksIAorICAgIDExMDAxLCAxMTAwMywgMTEwMDUsIDExMDA3LCAxMTAwOSwgMTEwMTEsIDExMDEzLCAxMTAxNSwgMTEwMTcsIDExMDE5LCAKKyAgICAxMTAyMSwgMCwgMTEwMjMsIDExMDI1LCAxMTAyNywgMTEwMjksIDAsIDAsIDExMDMxLCAxMTAzMywgMTEwMzUsIDExMDM3LCAKKyAgICAxMTAzOSwgMTEwNDEsIDExMDQzLCAxMTA0NSwgMCwgMTEwNDcsIDExMDQ5LCAxMTA1MSwgMTEwNTMsIDExMDU1LCAxMTA1NywgCisgICAgMTEwNTksIDAsIDExMDYxLCAxMTA2MywgMTEwNjUsIDExMDY3LCAxMTA2OSwgMTEwNzEsIDExMDczLCAxMTA3NSwgMTEwNzcsIAorICAgIDExMDc5LCAxMTA4MSwgMTEwODMsIDExMDg1LCAxMTA4NywgMTEwODksIDExMDkxLCAxMTA5MywgMTEwOTUsIDExMDk3LCAKKyAgICAxMTA5OSwgMTExMDEsIDExMTAzLCAxMTEwNSwgMTExMDcsIDExMTA5LCAxMTExMSwgMTExMTMsIDExMTE1LCAwLCAxMTExNywgCisgICAgMTExMTksIDExMTIxLCAxMTEyMywgMCwgMTExMjUsIDExMTI3LCAxMTEyOSwgMTExMzEsIDExMTMzLCAwLCAxMTEzNSwgMCwgCisgICAgMCwgMCwgMTExMzcsIDExMTM5LCAxMTE0MSwgMTExNDMsIDExMTQ1LCAxMTE0NywgMTExNDksIDAsIDExMTUxLCAxMTE1MywgCisgICAgMTExNTUsIDExMTU3LCAxMTE1OSwgMTExNjEsIDExMTYzLCAxMTE2NSwgMTExNjcsIDExMTY5LCAxMTE3MSwgMTExNzMsIAorICAgIDExMTc1LCAxMTE3NywgMTExNzksIDExMTgxLCAxMTE4MywgMTExODUsIDExMTg3LCAxMTE4OSwgMTExOTEsIDExMTkzLCAKKyAgICAxMTE5NSwgMTExOTcsIDExMTk5LCAxMTIwMSwgMTEyMDMsIDExMjA1LCAxMTIwNywgMTEyMDksIDExMjExLCAxMTIxMywgCisgICAgMTEyMTUsIDExMjE3LCAxMTIxOSwgMTEyMjEsIDExMjIzLCAxMTIyNSwgMTEyMjcsIDExMjI5LCAxMTIzMSwgMTEyMzMsIAorICAgIDExMjM1LCAxMTIzNywgMTEyMzksIDExMjQxLCAxMTI0MywgMTEyNDUsIDExMjQ3LCAxMTI0OSwgMTEyNTEsIDExMjUzLCAKKyAgICAxMTI1NSwgMTEyNTcsIDExMjU5LCAxMTI2MSwgMTEyNjMsIDExMjY1LCAxMTI2NywgMTEyNjksIDExMjcxLCAxMTI3MywgCisgICAgMTEyNzUsIDExMjc3LCAxMTI3OSwgMTEyODEsIDExMjgzLCAxMTI4NSwgMTEyODcsIDExMjg5LCAxMTI5MSwgMTEyOTMsIAorICAgIDExMjk1LCAxMTI5NywgMTEyOTksIDExMzAxLCAxMTMwMywgMTEzMDUsIDExMzA3LCAxMTMwOSwgMTEzMTEsIDExMzEzLCAKKyAgICAxMTMxNSwgMTEzMTcsIDExMzE5LCAxMTMyMSwgMTEzMjMsIDExMzI1LCAxMTMyNywgMTEzMjksIDExMzMxLCAxMTMzMywgCisgICAgMTEzMzUsIDExMzM3LCAxMTMzOSwgMTEzNDEsIDExMzQzLCAxMTM0NSwgMTEzNDcsIDExMzQ5LCAxMTM1MSwgMTEzNTMsIAorICAgIDExMzU1LCAxMTM1NywgMTEzNTksIDExMzYxLCAxMTM2MywgMTEzNjUsIDExMzY3LCAxMTM2OSwgMTEzNzEsIDExMzczLCAKKyAgICAxMTM3NSwgMTEzNzcsIDExMzc5LCAxMTM4MSwgMTEzODMsIDExMzg1LCAxMTM4NywgMTEzODksIDExMzkxLCAxMTM5MywgCisgICAgMTEzOTUsIDExMzk3LCAxMTM5OSwgMTE0MDEsIDExNDAzLCAxMTQwNSwgMTE0MDcsIDExNDA5LCAxMTQxMSwgMTE0MTMsIAorICAgIDExNDE1LCAxMTQxNywgMTE0MTksIDExNDIxLCAxMTQyMywgMTE0MjUsIDExNDI3LCAxMTQyOSwgMTE0MzEsIDExNDMzLCAKKyAgICAxMTQzNSwgMTE0MzcsIDExNDM5LCAxMTQ0MSwgMTE0NDMsIDExNDQ1LCAxMTQ0NywgMTE0NDksIDExNDUxLCAxMTQ1MywgCisgICAgMTE0NTUsIDExNDU3LCAxMTQ1OSwgMTE0NjEsIDExNDYzLCAxMTQ2NSwgMTE0NjcsIDExNDY5LCAxMTQ3MSwgMTE0NzMsIAorICAgIDExNDc1LCAxMTQ3NywgMTE0NzksIDExNDgxLCAxMTQ4MywgMTE0ODUsIDExNDg3LCAxMTQ4OSwgMTE0OTEsIDExNDkzLCAKKyAgICAxMTQ5NSwgMTE0OTcsIDExNDk5LCAxMTUwMSwgMTE1MDMsIDExNTA1LCAxMTUwNywgMTE1MDksIDExNTExLCAxMTUxMywgCisgICAgMTE1MTUsIDExNTE3LCAxMTUxOSwgMTE1MjEsIDExNTIzLCAxMTUyNSwgMTE1MjcsIDExNTI5LCAxMTUzMSwgMTE1MzMsIAorICAgIDExNTM1LCAxMTUzNywgMTE1MzksIDExNTQxLCAxMTU0MywgMTE1NDUsIDExNTQ3LCAxMTU0OSwgMTE1NTEsIDExNTUzLCAKKyAgICAxMTU1NSwgMTE1NTcsIDExNTU5LCAxMTU2MSwgMTE1NjMsIDExNTY1LCAxMTU2NywgMTE1NjksIDExNTcxLCAxMTU3MywgCisgICAgMTE1NzUsIDExNTc3LCAxMTU3OSwgMTE1ODEsIDExNTgzLCAxMTU4NSwgMTE1ODcsIDExNTg5LCAxMTU5MSwgMTE1OTMsIAorICAgIDExNTk1LCAxMTU5NywgMTE1OTksIDExNjAxLCAxMTYwMywgMTE2MDUsIDExNjA3LCAxMTYwOSwgMTE2MTEsIDExNjEzLCAKKyAgICAxMTYxNSwgMTE2MTcsIDExNjE5LCAxMTYyMSwgMTE2MjMsIDExNjI1LCAxMTYyNywgMTE2MjksIDExNjMxLCAxMTYzMywgCisgICAgMTE2MzUsIDExNjM3LCAxMTYzOSwgMTE2NDEsIDExNjQzLCAxMTY0NSwgMTE2NDcsIDExNjQ5LCAxMTY1MSwgMTE2NTMsIAorICAgIDExNjU1LCAxMTY1NywgMTE2NTksIDExNjYxLCAxMTY2MywgMTE2NjUsIDExNjY3LCAxMTY2OSwgMTE2NzEsIDExNjczLCAKKyAgICAxMTY3NSwgMTE2NzcsIDExNjc5LCAxMTY4MSwgMTE2ODMsIDExNjg1LCAxMTY4NywgMTE2ODksIDExNjkxLCAxMTY5MywgCisgICAgMTE2OTUsIDExNjk3LCAxMTY5OSwgMTE3MDEsIDExNzAzLCAxMTcwNSwgMTE3MDcsIDExNzA5LCAxMTcxMSwgMTE3MTMsIAorICAgIDExNzE1LCAxMTcxNywgMTE3MTksIDExNzIxLCAxMTcyMywgMTE3MjUsIDExNzI3LCAxMTcyOSwgMTE3MzEsIDExNzMzLCAKKyAgICAxMTczNSwgMTE3MzcsIDExNzM5LCAxMTc0MSwgMTE3NDMsIDExNzQ1LCAxMTc0NywgMTE3NDksIDExNzUxLCAxMTc1MywgCisgICAgMTE3NTUsIDExNzU3LCAxMTc1OSwgMTE3NjEsIDExNzYzLCAxMTc2NSwgMTE3NjcsIDExNzY5LCAxMTc3MSwgMTE3NzMsIAorICAgIDExNzc1LCAxMTc3NywgMTE3NzksIDExNzgxLCAxMTc4MywgMTE3ODUsIDExNzg3LCAxMTc4OSwgMTE3OTEsIDExNzkzLCAKKyAgICAxMTc5NSwgMTE3OTcsIDExNzk5LCAxMTgwMSwgMTE4MDMsIDExODA1LCAxMTgwNywgMTE4MDksIDExODExLCAxMTgxMywgCisgICAgMTE4MTUsIDExODE3LCAxMTgxOSwgMTE4MjEsIDExODIzLCAxMTgyNSwgMTE4MjcsIDExODI5LCAwLCAwLCAxMTgzMSwgCisgICAgMTE4MzMsIDExODM1LCAxMTgzNywgMTE4MzksIDExODQxLCAxMTg0MywgMTE4NDUsIDExODQ3LCAxMTg0OSwgMTE4NTEsIAorICAgIDExODUzLCAxMTg1NSwgMTE4NTcsIDExODU5LCAxMTg2MSwgMTE4NjMsIDExODY1LCAxMTg2NywgMTE4NjksIDExODcxLCAKKyAgICAxMTg3MywgMTE4NzUsIDExODc3LCAxMTg3OSwgMTE4ODEsIDExODgzLCAxMTg4NSwgMTE4ODcsIDExODg5LCAxMTg5MSwgCisgICAgMTE4OTMsIDExODk1LCAxMTg5NywgMTE4OTksIDExOTAxLCAxMTkwMywgMTE5MDUsIDExOTA3LCAxMTkwOSwgMTE5MTEsIAorICAgIDExOTEzLCAxMTkxNSwgMTE5MTcsIDExOTE5LCAxMTkyMSwgMTE5MjMsIDExOTI1LCAxMTkyNywgMTE5MjksIDExOTMxLCAKKyAgICAxMTkzMywgMTE5MzUsIDExOTM3LCAxMTkzOSwgMTE5NDEsIDExOTQzLCAxMTk0NSwgMTE5NDcsIDExOTQ5LCAxMTk1MSwgCisgICAgMTE5NTMsIDExOTU1LCAxMTk1NywgMTE5NTksIDExOTYxLCAxMTk2MywgMTE5NjUsIDExOTY3LCAxMTk2OSwgMTE5NzEsIAorICAgIDExOTczLCAxMTk3NSwgMTE5NzcsIDExOTc5LCAxMTk4MSwgMTE5ODMsIDExOTg1LCAxMTk4NywgMTE5ODksIDExOTkxLCAKKyAgICAxMTk5MywgMTE5OTUsIDExOTk3LCAxMTk5OSwgMTIwMDEsIDEyMDAzLCAxMjAwNSwgMTIwMDcsIDEyMDA5LCAxMjAxMSwgCisgICAgMTIwMTMsIDEyMDE1LCAxMjAxNywgMTIwMTksIDEyMDIxLCAxMjAyMywgMTIwMjUsIDEyMDI3LCAxMjAyOSwgMTIwMzEsIAorICAgIDEyMDMzLCAxMjAzNSwgMTIwMzcsIDEyMDM5LCAxMjA0MSwgMTIwNDMsIDEyMDQ1LCAxMjA0NywgMTIwNDksIDEyMDUxLCAKKyAgICAxMjA1MywgMTIwNTUsIDEyMDU3LCAxMjA1OSwgMTIwNjEsIDEyMDYzLCAxMjA2NSwgMTIwNjcsIDEyMDY5LCAxMjA3MSwgCisgICAgMTIwNzMsIDEyMDc1LCAxMjA3NywgMTIwNzksIDEyMDgxLCAxMjA4MywgMTIwODUsIDEyMDg3LCAxMjA4OSwgMTIwOTEsIAorICAgIDEyMDkzLCAxMjA5NSwgMTIwOTcsIDEyMDk5LCAxMjEwMSwgMTIxMDMsIDEyMTA1LCAxMjEwNywgMTIxMDksIDEyMTExLCAKKyAgICAxMjExMywgMTIxMTUsIDEyMTE3LCAxMjExOSwgMTIxMjEsIDEyMTIzLCAxMjEyNSwgMTIxMjcsIDEyMTI5LCAxMjEzMSwgCisgICAgMTIxMzMsIDEyMTM1LCAxMjEzNywgMTIxMzksIDEyMTQxLCAxMjE0MywgMTIxNDUsIDEyMTQ3LCAxMjE0OSwgMTIxNTEsIAorICAgIDEyMTUzLCAxMjE1NSwgMTIxNTcsIDEyMTU5LCAxMjE2MSwgMTIxNjMsIDEyMTY1LCAxMjE2NywgMTIxNjksIDEyMTcxLCAKKyAgICAxMjE3MywgMTIxNzUsIDEyMTc3LCAxMjE3OSwgMTIxODEsIDEyMTgzLCAxMjE4NSwgMTIxODcsIDEyMTg5LCAxMjE5MSwgCisgICAgMTIxOTMsIDEyMTk1LCAxMjE5NywgMTIxOTksIDEyMjAxLCAxMjIwMywgMTIyMDUsIDEyMjA3LCAxMjIwOSwgMTIyMTEsIAorICAgIDEyMjEzLCAxMjIxNSwgMTIyMTcsIDEyMjE5LCAxMjIyMSwgMTIyMjMsIDEyMjI1LCAxMjIyNywgMTIyMjksIDEyMjMxLCAKKyAgICAxMjIzMywgMTIyMzUsIDEyMjM3LCAxMjIzOSwgMTIyNDEsIDEyMjQzLCAxMjI0NSwgMTIyNDcsIDEyMjQ5LCAxMjI1MSwgCisgICAgMTIyNTMsIDEyMjU1LCAxMjI1NywgMTIyNTksIDEyMjYxLCAxMjI2MywgMTIyNjUsIDEyMjY3LCAxMjI2OSwgMTIyNzEsIAorICAgIDEyMjczLCAxMjI3NSwgMTIyNzcsIDEyMjc5LCAxMjI4MSwgMTIyODMsIDEyMjg1LCAxMjI4NywgMTIyODksIDEyMjkxLCAKKyAgICAxMjI5MywgMTIyOTUsIDEyMjk3LCAxMjI5OSwgMTIzMDEsIDEyMzAzLCAxMjMwNSwgMTIzMDcsIDEyMzA5LCAxMjMxMSwgCisgICAgMTIzMTMsIDEyMzE1LCAxMjMxNywgMTIzMTksIDEyMzIxLCAxMjMyMywgMTIzMjUsIDEyMzI3LCAxMjMyOSwgMTIzMzEsIAorICAgIDEyMzMzLCAxMjMzNSwgMTIzMzcsIDEyMzM5LCAxMjM0MSwgMTIzNDMsIDEyMzQ1LCAxMjM0NywgMTIzNDksIDEyMzUxLCAKKyAgICAxMjM1MywgMTIzNTUsIDEyMzU3LCAxMjM1OSwgMTIzNjEsIDEyMzYzLCAxMjM2NSwgMTIzNjcsIDEyMzY5LCAxMjM3MSwgCisgICAgMTIzNzMsIDEyMzc1LCAxMjM3NywgMTIzNzksIDEyMzgxLCAxMjM4MywgMTIzODUsIDEyMzg3LCAxMjM4OSwgMTIzOTEsIAorICAgIDEyMzkzLCAxMjM5NSwgMTIzOTcsIDEyMzk5LCAxMjQwMSwgMTI0MDMsIDEyNDA1LCAxMjQwNywgMTI0MDksIDEyNDExLCAKKyAgICAxMjQxMywgMCwgMCwgMTI0MTUsIDEyNDE3LCAxMjQxOSwgMTI0MjEsIDEyNDIzLCAxMjQyNSwgMTI0MjcsIDEyNDI5LCAKKyAgICAxMjQzMSwgMTI0MzMsIDEyNDM1LCAxMjQzNywgMTI0MzksIDEyNDQxLCAxMjQ0MywgMTI0NDUsIDEyNDQ3LCAxMjQ0OSwgCisgICAgMTI0NTEsIDEyNDUzLCAxMjQ1NSwgMTI0NTcsIDEyNDU5LCAxMjQ2MSwgMTI0NjMsIDEyNDY1LCAxMjQ2NywgMTI0NjksIAorICAgIDEyNDcxLCAxMjQ3MywgMTI0NzUsIDEyNDc3LCAxMjQ3OSwgMTI0ODEsIDEyNDgzLCAxMjQ4NSwgMTI0ODcsIDEyNDg5LCAKKyAgICAxMjQ5MSwgMTI0OTMsIDEyNDk1LCAxMjQ5NywgMTI0OTksIDEyNTAxLCAxMjUwMywgMTI1MDUsIDEyNTA3LCAxMjUwOSwgCisgICAgMTI1MTEsIDEyNTEzLCAxMjUxNSwgMTI1MTcsIDEyNTE5LCAxMjUyMSwgMCwgMTI1MjMsIDEyNTI1LCAxMjUyNywgMTI1MjksIAorICAgIDEyNTMxLCAxMjUzMywgMTI1MzUsIDEyNTM3LCAxMjUzOSwgMTI1NDEsIDEyNTQzLCAxMjU0NSwgMTI1NDcsIDEyNTQ5LCAKKyAgICAxMjU1MSwgMTI1NTMsIDEyNTU1LCAxMjU1NywgMTI1NTksIDEyNTYxLCAxMjU2MywgMTI1NjUsIDEyNTY3LCAxMjU2OSwgCisgICAgMTI1NzEsIDEyNTczLCAxMjU3NSwgMCwgMTI1NzcsIDEyNTc5LCAwLCAxMjU4MSwgMCwgMCwgMTI1ODMsIDAsIDEyNTg1LCAKKyAgICAxMjU4NywgMTI1ODksIDEyNTkxLCAxMjU5MywgMTI1OTUsIDEyNTk3LCAxMjU5OSwgMTI2MDEsIDEyNjAzLCAwLCAxMjYwNSwgCisgICAgMTI2MDcsIDEyNjA5LCAxMjYxMSwgMCwgMTI2MTMsIDAsIDEyNjE1LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjYxNywgMCwgMCwgCisgICAgMCwgMCwgMTI2MTksIDAsIDEyNjIxLCAwLCAxMjYyMywgMCwgMTI2MjUsIDEyNjI3LCAxMjYyOSwgMCwgMTI2MzEsIDEyNjMzLCAKKyAgICAwLCAxMjYzNSwgMCwgMCwgMTI2MzcsIDAsIDEyNjM5LCAwLCAxMjY0MSwgMCwgMTI2NDMsIDAsIDEyNjQ1LCAwLCAxMjY0NywgCisgICAgMTI2NDksIDAsIDEyNjUxLCAwLCAwLCAxMjY1MywgMTI2NTUsIDEyNjU3LCAxMjY1OSwgMCwgMTI2NjEsIDEyNjYzLCAKKyAgICAxMjY2NSwgMTI2NjcsIDEyNjY5LCAxMjY3MSwgMTI2NzMsIDAsIDEyNjc1LCAxMjY3NywgMTI2NzksIDEyNjgxLCAwLCAKKyAgICAxMjY4MywgMTI2ODUsIDEyNjg3LCAxMjY4OSwgMCwgMTI2OTEsIDAsIDEyNjkzLCAxMjY5NSwgMTI2OTcsIDEyNjk5LCAKKyAgICAxMjcwMSwgMTI3MDMsIDEyNzA1LCAxMjcwNywgMTI3MDksIDEyNzExLCAwLCAxMjcxMywgMTI3MTUsIDEyNzE3LCAxMjcxOSwgCisgICAgMTI3MjEsIDEyNzIzLCAxMjcyNSwgMTI3MjcsIDEyNzI5LCAxMjczMSwgMTI3MzMsIDEyNzM1LCAxMjczNywgMTI3MzksIAorICAgIDEyNzQxLCAxMjc0MywgMTI3NDUsIDAsIDAsIDAsIDAsIDAsIDEyNzQ3LCAxMjc0OSwgMTI3NTEsIDAsIDEyNzUzLCAxMjc1NSwgCisgICAgMTI3NTcsIDEyNzU5LCAxMjc2MSwgMCwgMTI3NjMsIDEyNzY1LCAxMjc2NywgMTI3NjksIDEyNzcxLCAxMjc3MywgMTI3NzUsIAorICAgIDEyNzc3LCAxMjc3OSwgMTI3ODEsIDEyNzgzLCAxMjc4NSwgMTI3ODcsIDEyNzg5LCAxMjc5MSwgMTI3OTMsIDEyNzk1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjc5NywgMTI4MDAsIAorICAgIDEyODAzLCAxMjgwNiwgMTI4MDksIDEyODEyLCAxMjgxNSwgMTI4MTgsIDEyODIxLCAxMjgyNCwgMTI4MjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyODMwLCAxMjgzNCwgMTI4MzgsIDEyODQyLCAxMjg0NiwgMTI4NTAsIDEyODU0LCAxMjg1OCwgMTI4NjIsIAorICAgIDEyODY2LCAxMjg3MCwgMTI4NzQsIDEyODc4LCAxMjg4MiwgMTI4ODYsIDEyODkwLCAxMjg5NCwgMTI4OTgsIDEyOTAyLCAKKyAgICAxMjkwNiwgMTI5MTAsIDEyOTE0LCAxMjkxOCwgMTI5MjIsIDEyOTI2LCAxMjkzMCwgMTI5MzQsIDEyOTM4LCAxMjk0MCwgCisgICAgMTI5NDIsIDEyOTQ1LCAwLCAxMjk0OCwgMTI5NTAsIDEyOTUyLCAxMjk1NCwgMTI5NTYsIDEyOTU4LCAxMjk2MCwgMTI5NjIsIAorICAgIDEyOTY0LCAxMjk2NiwgMTI5NjgsIDEyOTcwLCAxMjk3MiwgMTI5NzQsIDEyOTc2LCAxMjk3OCwgMTI5ODAsIDEyOTgyLCAKKyAgICAxMjk4NCwgMTI5ODYsIDEyOTg4LCAxMjk5MCwgMTI5OTIsIDEyOTk0LCAxMjk5NiwgMTI5OTgsIDEzMDAwLCAxMzAwMywgCisgICAgMTMwMDYsIDEzMDA5LCAxMzAxMiwgMTMwMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDE5LCAxMzAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTMwMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDI4LCAxMzAzMSwgCisgICAgMTMwMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDM2LCAxMzAzOCwgMTMwNDAsIDEzMDQyLCAKKyAgICAxMzA0NCwgMTMwNDYsIDEzMDQ4LCAxMzA1MCwgMTMwNTIsIDEzMDU0LCAxMzA1NiwgMTMwNTgsIDEzMDYwLCAxMzA2MiwgCisgICAgMTMwNjQsIDEzMDY2LCAxMzA2OCwgMTMwNzAsIDEzMDcyLCAxMzA3NCwgMTMwNzYsIDEzMDc4LCAxMzA4MCwgMTMwODIsIAorICAgIDEzMDg0LCAxMzA4NiwgMTMwODgsIDEzMDkwLCAxMzA5MiwgMTMwOTQsIDEzMDk2LCAxMzA5OCwgMTMxMDAsIDEzMTAyLCAKKyAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzEyMiwgMTMxMjYsIDEzMTMwLCAxMzEzNCwgMTMxMzgsIDEzMTQyLCAxMzE0NiwgMTMxNTAsIDEzMTU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzE1OCwgMTMxNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYyLCAxMzE2NCwgMTMxNjYsIDEzMTY4LCAxMzE3MCwgMTMxNzIsIDEzMTc0LCAKKyAgICAxMzE3NiwgMTMxNzgsIDEzMTgwLCAxMzE4MiwgMTMxODQsIDEzMTg2LCAxMzE4OCwgMTMxOTAsIDEzMTkyLCAxMzE5NCwgCisgICAgMTMxOTYsIDEzMTk4LCAxMzIwMCwgMTMyMDIsIDEzMjA0LCAxMzIwNiwgMTMyMDgsIDEzMjEwLCAxMzIxMiwgMTMyMTQsIAorICAgIDEzMjE2LCAxMzIxOCwgMTMyMjAsIDEzMjIyLCAxMzIyNCwgMTMyMjYsIDEzMjI4LCAxMzIzMCwgMTMyMzIsIDEzMjM0LCAKKyAgICAxMzIzNiwgMTMyMzgsIDEzMjQwLCAxMzI0MiwgMTMyNDQsIDEzMjQ2LCAxMzI0OCwgMTMyNTAsIDEzMjUyLCAxMzI1NCwgCisgICAgMTMyNTYsIDEzMjU4LCAxMzI2MCwgMTMyNjIsIDEzMjY0LCAxMzI2NiwgMTMyNjgsIDEzMjcwLCAxMzI3MiwgMTMyNzQsIAorICAgIDEzMjc2LCAxMzI3OCwgMTMyODAsIDEzMjgyLCAxMzI4NCwgMTMyODYsIDEzMjg4LCAxMzI5MCwgMTMyOTIsIDEzMjk0LCAKKyAgICAxMzI5NiwgMTMyOTgsIDEzMzAwLCAxMzMwMiwgMTMzMDQsIDEzMzA2LCAxMzMwOCwgMTMzMTAsIDEzMzEyLCAxMzMxNCwgCisgICAgMTMzMTYsIDEzMzE4LCAxMzMyMCwgMTMzMjIsIDEzMzI0LCAxMzMyNiwgMTMzMjgsIDEzMzMwLCAxMzMzMiwgMTMzMzQsIAorICAgIDEzMzM2LCAxMzMzOCwgMTMzNDAsIDEzMzQyLCAxMzM0NCwgMTMzNDYsIDEzMzQ4LCAxMzM1MCwgMTMzNTIsIDEzMzU0LCAKKyAgICAxMzM1NiwgMTMzNTgsIDEzMzYwLCAxMzM2MiwgMTMzNjQsIDEzMzY2LCAxMzM2OCwgMTMzNzAsIDEzMzcyLCAxMzM3NCwgCisgICAgMTMzNzYsIDEzMzc4LCAxMzM4MCwgMTMzODIsIDEzMzg0LCAxMzM4NiwgMTMzODgsIDEzMzkwLCAxMzM5MiwgMTMzOTQsIAorICAgIDEzMzk2LCAxMzM5OCwgMTM0MDAsIDEzNDAyLCAxMzQwNCwgMTM0MDYsIDEzNDA4LCAxMzQxMCwgMTM0MTIsIDEzNDE0LCAKKyAgICAxMzQxNiwgMTM0MTgsIDEzNDIwLCAxMzQyMiwgMTM0MjQsIDEzNDI2LCAxMzQyOCwgMTM0MzAsIDEzNDMyLCAxMzQzNCwgCisgICAgMTM0MzYsIDEzNDM4LCAxMzQ0MCwgMTM0NDIsIDEzNDQ0LCAxMzQ0NiwgMTM0NDgsIDEzNDUwLCAxMzQ1MiwgMTM0NTQsIAorICAgIDEzNDU2LCAxMzQ1OCwgMTM0NjAsIDEzNDYyLCAxMzQ2NCwgMTM0NjYsIDEzNDY4LCAxMzQ3MCwgMTM0NzIsIDEzNDc0LCAKKyAgICAxMzQ3NiwgMTM0NzgsIDEzNDgwLCAxMzQ4MiwgMTM0ODQsIDEzNDg2LCAxMzQ4OCwgMTM0OTAsIDEzNDkyLCAxMzQ5NCwgCisgICAgMTM0OTYsIDEzNDk4LCAxMzUwMCwgMTM1MDIsIDEzNTA0LCAxMzUwNiwgMTM1MDgsIDEzNTEwLCAxMzUxMiwgMTM1MTQsIAorICAgIDEzNTE2LCAxMzUxOCwgMTM1MjAsIDEzNTIyLCAxMzUyNCwgMTM1MjYsIDEzNTI4LCAxMzUzMCwgMTM1MzIsIDEzNTM0LCAKKyAgICAxMzUzNiwgMTM1MzgsIDEzNTQwLCAxMzU0MiwgMTM1NDQsIDEzNTQ2LCAxMzU0OCwgMTM1NTAsIDEzNTUyLCAxMzU1NCwgCisgICAgMTM1NTYsIDEzNTU4LCAxMzU2MCwgMTM1NjIsIDEzNTY0LCAxMzU2NiwgMTM1NjgsIDEzNTcwLCAxMzU3MiwgMTM1NzQsIAorICAgIDEzNTc2LCAxMzU3OCwgMTM1ODAsIDEzNTgyLCAxMzU4NCwgMTM1ODYsIDEzNTg4LCAxMzU5MCwgMTM1OTIsIDEzNTk0LCAKKyAgICAxMzU5NiwgMTM1OTgsIDEzNjAwLCAxMzYwMiwgMTM2MDQsIDEzNjA2LCAxMzYwOCwgMTM2MTAsIDEzNjEyLCAxMzYxNCwgCisgICAgMTM2MTYsIDEzNjE4LCAxMzYyMCwgMTM2MjIsIDEzNjI0LCAxMzYyNiwgMTM2MjgsIDEzNjMwLCAxMzYzMiwgMTM2MzQsIAorICAgIDEzNjM2LCAxMzYzOCwgMTM2NDAsIDEzNjQyLCAxMzY0NCwgMTM2NDYsIDEzNjQ4LCAxMzY1MCwgMTM2NTIsIDEzNjU0LCAKKyAgICAxMzY1NiwgMTM2NTgsIDEzNjYwLCAxMzY2MiwgMTM2NjQsIDEzNjY2LCAxMzY2OCwgMTM2NzAsIDEzNjcyLCAxMzY3NCwgCisgICAgMTM2NzYsIDEzNjc4LCAxMzY4MCwgMTM2ODIsIDEzNjg0LCAxMzY4NiwgMTM2ODgsIDEzNjkwLCAxMzY5MiwgMTM2OTQsIAorICAgIDEzNjk2LCAxMzY5OCwgMTM3MDAsIDEzNzAyLCAxMzcwNCwgMTM3MDYsIDEzNzA4LCAxMzcxMCwgMTM3MTIsIDEzNzE0LCAKKyAgICAxMzcxNiwgMTM3MTgsIDEzNzIwLCAxMzcyMiwgMTM3MjQsIDEzNzI2LCAxMzcyOCwgMTM3MzAsIDEzNzMyLCAxMzczNCwgCisgICAgMTM3MzYsIDEzNzM4LCAxMzc0MCwgMTM3NDIsIDEzNzQ0LCAxMzc0NiwgMTM3NDgsIDEzNzUwLCAxMzc1MiwgMTM3NTQsIAorICAgIDEzNzU2LCAxMzc1OCwgMTM3NjAsIDEzNzYyLCAxMzc2NCwgMTM3NjYsIDEzNzY4LCAxMzc3MCwgMTM3NzIsIDEzNzc0LCAKKyAgICAxMzc3NiwgMTM3NzgsIDEzNzgwLCAxMzc4MiwgMTM3ODQsIDEzNzg2LCAxMzc4OCwgMTM3OTAsIDEzNzkyLCAxMzc5NCwgCisgICAgMTM3OTYsIDEzNzk4LCAxMzgwMCwgMTM4MDIsIDEzODA0LCAxMzgwNiwgMTM4MDgsIDEzODEwLCAxMzgxMiwgMTM4MTQsIAorICAgIDEzODE2LCAxMzgxOCwgMTM4MjAsIDEzODIyLCAxMzgyNCwgMTM4MjYsIDEzODI4LCAxMzgzMCwgMTM4MzIsIDEzODM0LCAKKyAgICAxMzgzNiwgMTM4MzgsIDEzODQwLCAxMzg0MiwgMTM4NDQsIDEzODQ2LCAxMzg0OCwgMTM4NTAsIDEzODUyLCAxMzg1NCwgCisgICAgMTM4NTYsIDEzODU4LCAxMzg2MCwgMTM4NjIsIDEzODY0LCAxMzg2NiwgMTM4NjgsIDEzODcwLCAxMzg3MiwgMTM4NzQsIAorICAgIDEzODc2LCAxMzg3OCwgMTM4ODAsIDEzODgyLCAxMzg4NCwgMTM4ODYsIDEzODg4LCAxMzg5MCwgMTM4OTIsIDEzODk0LCAKKyAgICAxMzg5NiwgMTM4OTgsIDEzOTAwLCAxMzkwMiwgMTM5MDQsIDEzOTA2LCAxMzkwOCwgMTM5MTAsIDEzOTEyLCAxMzkxNCwgCisgICAgMTM5MTYsIDEzOTE4LCAxMzkyMCwgMTM5MjIsIDEzOTI0LCAxMzkyNiwgMTM5MjgsIDEzOTMwLCAxMzkzMiwgMTM5MzQsIAorICAgIDEzOTM2LCAxMzkzOCwgMTM5NDAsIDEzOTQyLCAxMzk0NCwgMTM5NDYsIDEzOTQ4LCAxMzk1MCwgMTM5NTIsIDEzOTU0LCAKKyAgICAxMzk1NiwgMTM5NTgsIDEzOTYwLCAxMzk2MiwgMTM5NjQsIDEzOTY2LCAxMzk2OCwgMTM5NzAsIDEzOTcyLCAxMzk3NCwgCisgICAgMTM5NzYsIDEzOTc4LCAxMzk4MCwgMTM5ODIsIDEzOTg0LCAxMzk4NiwgMTM5ODgsIDEzOTkwLCAxMzk5MiwgMTM5OTQsIAorICAgIDEzOTk2LCAxMzk5OCwgMTQwMDAsIDE0MDAyLCAxNDAwNCwgMTQwMDYsIDE0MDA4LCAxNDAxMCwgMTQwMTIsIDE0MDE0LCAKKyAgICAxNDAxNiwgMTQwMTgsIDE0MDIwLCAxNDAyMiwgMTQwMjQsIDE0MDI2LCAxNDAyOCwgMTQwMzAsIDE0MDMyLCAxNDAzNCwgCisgICAgMTQwMzYsIDE0MDM4LCAxNDA0MCwgMTQwNDIsIDE0MDQ0LCAxNDA0NiwgMTQwNDgsIDE0MDUwLCAxNDA1MiwgMTQwNTQsIAorICAgIDE0MDU2LCAxNDA1OCwgMTQwNjAsIDE0MDYyLCAxNDA2NCwgMTQwNjYsIDE0MDY4LCAxNDA3MCwgMTQwNzIsIDE0MDc0LCAKKyAgICAxNDA3NiwgMTQwNzgsIDE0MDgwLCAxNDA4MiwgMTQwODQsIDE0MDg2LCAxNDA4OCwgMTQwOTAsIDE0MDkyLCAxNDA5NCwgCisgICAgMTQwOTYsIDE0MDk4LCAxNDEwMCwgMTQxMDIsIDE0MTA0LCAxNDEwNiwgMTQxMDgsIDE0MTEwLCAxNDExMiwgMTQxMTQsIAorICAgIDE0MTE2LCAxNDExOCwgMTQxMjAsIDE0MTIyLCAxNDEyNCwgMTQxMjYsIDE0MTI4LCAxNDEzMCwgMTQxMzIsIDE0MTM0LCAKKyAgICAxNDEzNiwgMTQxMzgsIDE0MTQwLCAxNDE0MiwgMTQxNDQsIDE0MTQ2LCAxNDE0OCwgMTQxNTAsIDE0MTUyLCAxNDE1NCwgCisgICAgMTQxNTYsIDE0MTU4LCAxNDE2MCwgMTQxNjIsIDE0MTY0LCAxNDE2NiwgMTQxNjgsIDE0MTcwLCAxNDE3MiwgMTQxNzQsIAorICAgIDE0MTc2LCAxNDE3OCwgMTQxODAsIDE0MTgyLCAxNDE4NCwgMTQxODYsIDE0MTg4LCAxNDE5MCwgMTQxOTIsIDE0MTk0LCAKKyAgICAxNDE5NiwgMTQxOTgsIDE0MjAwLCAxNDIwMiwgMTQyMDQsIDE0MjA2LCAxNDIwOCwgMTQyMTAsIDE0MjEyLCAxNDIxNCwgCisgICAgMTQyMTYsIDE0MjE4LCAxNDIyMCwgMTQyMjIsIDE0MjI0LCAxNDIyNiwgMTQyMjgsIDE0MjMwLCAxNDIzMiwgMTQyMzQsIAorICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KICNkZWZpbmUgQ09NUF9TSElGVCAyCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgY29tcF9pbmRleFtdID0gewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIDYsIDcsIDgsIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAxMSwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAKLSAgICAxNCwgMTUsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTgsIDAsIDE5LCAyMCwgMjEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMiwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM0LCAzNSwgMzYsIDAsIDM3LCAzOCwgMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwLCA0MSwgNDIsIDQzLCA0NCwgCi0gICAgNDUsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDAsIDQ5LCAwLCA1MCwgNTEsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgNTQsIDAsIDU1LCA1NiwgNTcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4LCA1OSwgMCwgMCwgNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxLCA2MiwgCi0gICAgNjMsIDAsIDY0LCA2NSwgNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDczLCA3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzUsIDc2LCA3NywgCi0gICAgNzgsIDc5LCA4MCwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCA4MywgODQsIDAsIDg1LCA4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODcsIDg4LCAwLCA4OSwgOTAsIDkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MiwgOTMsIDk0LCAKLSAgICA5NSwgOTYsIDk3LCA5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDEwMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAxLCAxMDIsIDAsIDAsIDEwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEwNiwgMTA3LCAwLCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwOSwgMTEwLCAxMTEsIDAsIDExMiwgMCwgMTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQsIDExNSwgMTE2LCAKLSAgICAxMTcsIDExOCwgMTE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDEyMSwgMCwgMTIyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMjMsIDEyNCwgMTI1LCAwLCAwLCAxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNywgCi0gICAgMTI4LCAwLCAxMjksIDEzMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKLSAgICAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQwLCAxNDEsIDE0MiwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NSwgMTQ2LCAwLCAxNDcsIAotICAgIDE0OCwgMTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1NywgMCwgMTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTksIDAsIDE2MCwgCi0gICAgMCwgMTYxLCAxNjIsIDE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAxNjUsIDAsIDE2NiwgMTY3LCAxNjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2OSwgMTcwLCAwLCAwLCAxNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MiwgCi0gICAgMTczLCAxNzQsIDAsIDE3NSwgMTc2LCAxNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAKLSAgICAxODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NCwgMTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5MywgMTk0LCAxOTUsIAotICAgIDAsIDE5NiwgMTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTgsIDE5OSwgMCwgMjAwLCAyMDEsIDIwMiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDAsIDAsIDAsIDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEyLCAyMTMsIDIxNCwgMCwgMjE1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNywgCi0gICAgMjE4LCAyMTksIDAsIDIyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIxLCAyMjIsIDIyMywgMCwgMjI0LCAwLCAKLSAgICAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMjgsIDAsIDIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMiwgMjMzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDIzNSwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNDAsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ1LCAKLSAgICAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUxLCAyNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAyNTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU3LCAwLCAKLSAgICAyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1OSwgMjYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjY2LCAwLCAyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMCwgMjY5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI4MywgMCwgMjg0LCAwLCAyODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NiwgMCwgMjg3LCAwLCAKLSAgICAyODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OSwgMCwgMjkwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI5MiwgMCwgMjkzLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDMwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA1LCAzMDYsIDAsIDMwNywgCi0gICAgMCwgMCwgMCwgMzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDksIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzExLCAwLCAwLCAzMTIsIDAsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMCwgMzE0LCAzMTUsIDAsIDMxNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwLCAzMjEsIDAsIDMyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIzLCAwLCAwLCAzMjQsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyOCwgMzI5LCAwLCAzMzAsIDAsIDAsIDAsIDMzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzMyLCAwLCAwLCAKLSAgICAzMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzNCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAzMzYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMzNywgMzM4LCAwLCAzMzksIDAsIDAsIDAsIDM0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAKLSAgICAzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzQ0LCAzNDUsIDAsIDM0NiwgMCwgMCwgMCwgMzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAzNDgsIDAsIDAsIDM0OSwgCi0gICAgMCwgMCwgMCwgMzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzU2LCAzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MSwgMzYyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY1LCAzNjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjksIDM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDM3NiwgMzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgwLCAKLSAgICAzODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODQsIDM4NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQwOSwgNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQsIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDE5LCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgCi0gICAgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgNDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDUyMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MzMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIAorICAgIDYsIDcsIDgsIDksIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMSwgMCwgMCwgMTIsIDAsIDEzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTUsIDE2LCAxNywgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAyMCwgMCwgMjEsIDIyLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgCisgICAgMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzMiwgMzMsIDM0LCAzNSwgMCwgMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzOCwgMzksIDAsIAorICAgIDQwLCA0MSwgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDQ2LCA0NywgMCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgCisgICAgNTEsIDUyLCA1MywgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NiwgMCwgNTcsIDU4LCA1OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAsIDAsIDYxLCAwLCA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjMsIDY0LCA2NSwgMCwgNjYsIDY3LCA2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjksIDcwLCA3MSwgNzIsIDczLCAwLCAKKyAgICA3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzUsIDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3NywgMCwgNzgsIDc5LCA4MCwgODEsIDAsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODQsIDg1LCAKKyAgICAwLCA4NiwgODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAxLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgMTA0LCAwLCAwLCAxMDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA3LCAxMDgsIDEwOSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTEsIDExMiwgMTEzLCAKKyAgICAxMTQsIDExNSwgMCwgMCwgMTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgCisgICAgMTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjMsIDAsIDEyNCwgMCwgMCwgMTI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMjYsIDEyNywgMTI4LCAwLCAwLCAxMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM3LCAxMzgsIDEzOSwgCisgICAgMTQwLCAxNDEsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NSwgMTQ2LCAwLCAwLCAxNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1LCAxNTYsIDE1NywgCisgICAgMTU4LCAxNTksIDE2MCwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIDAsIDE2MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAxNjUsIDAsIDE2NiwgMTY3LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE2OSwgMCwgMCwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NSwgCisgICAgMTc2LCAwLCAwLCAxNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAKKyAgICAxODMsIDE4NCwgMTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTIsIDAsIDE5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDEsIDIwMiwgCisgICAgMjAzLCAyMDQsIDIwNSwgMjA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDcsIDIwOCwgMCwgMjA5LCAKKyAgICAyMTAsIDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTksIDAsIDAsIDAsIDIyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjIxLCAyMjIsIDIyMywgMCwgMjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNiwgMjI3LCAyMjgsIDAsIDIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjMwLCAyMzEsIDIzMiwgMCwgMjMzLCAwLCAyMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDAsIDIzOCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0NCwgMjQ1LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ4LCAyNDksIDI1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjUxLCAyNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNTUsIDI1NiwgMCwgMjU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTgsIDAsIAorICAgIDI1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgCisgICAgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NSwgMjY2LCAyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNzAsIDI3MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyLCAyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIDI3NywgMCwgMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNzksIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAyODIsIAorICAgIDI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyOTcsIDI5OCwgMjk5LCAwLCAzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMwMSwgMCwgMzAyLCAwLCAzMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwNCwgMzA1LCAzMDYsIDAsIDMwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAzMDksIDAsIDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDMyMiwgMCwgMCwgCisgICAgMzIzLCAwLCAwLCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMjcsIDAsIDAsIDAsIDMyOCwgMCwgMCwgMzI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzAsIAorICAgIDMzMSwgMCwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzMsIDAsIDAsIDAsIDMzNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMzYsIDMzNywgMzM4LCAwLCAzMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MCwgMCwgMCwgMzQxLCAKKyAgICAwLCAwLCAwLCAzNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDUsIDM0NiwgMCwgCisgICAgMCwgMzQ3LCAwLCAwLCAzNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OSwgMCwgMCwgMzUwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNTQsIDM1NSwgMCwgMzU2LCAwLCAwLCAwLCAzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OCwgMCwgMCwgMCwgMzU5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDM2MSwgMzYyLCAzNjMsIDAsIDM2NCwgMCwgMCwgMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjYsIDAsIAorICAgIDAsIDM2NywgMCwgMCwgMCwgMzY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjksIDAsIDAsIDAsIDAsIDAsIDAsIDM3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcxLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAzNzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OSwgMzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzODEsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODQsIDM4NSwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAzOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzk4LCAzOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAxLCA0MDIsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNiwgNDA3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAKKyAgICA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCA0MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIDAsIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDYxLCA0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUyMywgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNjM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjU2LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29tcF9kYXRhW10gPSB7Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgMCwgODgwMCwgMCwgMCwgMCwgODgxNSwgMTkyLCAxOTMsIDE5NCwgCi0gICAgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgMCwgCi0gICAgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAwLCAyNjIsIAotICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCi0gICAgMjcwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAyMDAsIDIwMSwgMjAyLCA3ODY4LCAKLSAgICAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIDAsIDc4NjQsIDAsIDAsIDAsIAotICAgIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCAwLCA3NzEwLCAwLCAwLCA1MDAsIDI4NCwgMCwgNzcxMiwgMjg2LCAKLSAgICAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIDc3MTgsIDAsIDAsIAotICAgIDAsIDU0MiwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjk2LCAKLSAgICAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIDAsIDc4ODIsIDAsIDAsIDAsIDAsIAotICAgIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIAotICAgIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAotICAgIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgCi0gICAgMCwgNzc0NiwgMCwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAKLSAgICAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgCi0gICAgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAKLSAgICA3NzY0LCAwLCAwLCAwLCAwLCA3NzY2LCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDAsIDAsIDAsIDAsIDM0NCwgCi0gICAgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgMCwgMCwgNzc3NCwgMCwgMCwgMzQ2LCAzNDgsIAotICAgIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgNTM2LCAzNTAsIDAsIDAsIDAsIDAsIAotICAgIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIDc3OTIsIDAsIDAsIDc3OTAsIDAsIAotICAgIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIAotICAgIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCA3Nzk2LCAwLCAwLCAwLCAwLCAwLCA3ODA0LCAwLCAKLSAgICA3ODA2LCAwLCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIDAsIDc4MTYsIDAsIDAsIDAsIDAsIAotICAgIDc4MTgsIDc4MjAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgCi0gICAgNzkyNCwgMCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDM4MSwgMCwgNzgyNiwgMCwgMCwgCi0gICAgMCwgMCwgNzgyOCwgMCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCAKLSAgICA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAwLCAwLCA3NjgzLCAwLCAwLCA3Njg1LCAKLSAgICAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDIzMSwgCi0gICAgMCwgMCwgMCwgMCwgNzY5MSwgMCwgMCwgMCwgMCwgMjcxLCAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCAKLSAgICA3Njk1LCAwLCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCAKLSAgICA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCAwLCA3NzExLCAKLSAgICAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMjkxLCAwLCAwLCAwLCAwLCAKLSAgICAyOTMsIDAsIDAsIDAsIDc3MTUsIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgCi0gICAgNzcyMywgMCwgNzgzMCwgMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIAotICAgIDUyMSwgNTIzLCAwLCAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDAsIDMwOSwgMCwgCi0gICAgMCwgMCwgMCwgNDk2LCAwLCA3NzI5LCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgMCwgMCwgCi0gICAgMCwgMCwgNzczMywgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgCi0gICAgNzc0MSwgMCwgMCwgNzczOSwgMCwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgNTA1LCAKLSAgICAzMjQsIDAsIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIAotICAgIDAsIDAsIDc3NTMsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIDQ2NiwgCi0gICAgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCA3NzY3LCAKLSAgICAwLCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIDAsIAotICAgIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAotICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgCi0gICAgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDI0OSwgMjUwLCAyNTEsIDM2MSwgMzYzLCAKLSAgICAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgNzkwOSwgNzc5NSwgMCwgMCwgCi0gICAgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCA3ODA5LCA3ODExLCAKLSAgICAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIDAsIDAsIDAsIDc4MTksIDc4MjEsIAotICAgIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgCi0gICAgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgCi0gICAgMCwgODE3MywgOTAxLCAwLCAwLCA4MTI5LCAwLCAwLCAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCA3ODQ4LCAwLCAwLCAwLCAKLSAgICA0NzgsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDc2ODgsIDAsIDAsIAotICAgIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDc4NzQsIDAsIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIAotICAgIDc4OTIsIDAsIDAsIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgNTU0LCAwLCAwLCAwLCAwLCA1MTAsIDAsIAotICAgIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNzg0NywgNzg0NSwgMCwgNzg1MSwgNzg0OSwgCi0gICAgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCA3Njg5LCAKLSAgICAwLCAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCA3ODc1LCAwLCAwLCAwLCAwLCA3NzI3LCAwLCAwLCA3ODkxLCA3ODg5LCAwLCAKLSAgICA3ODk1LCA3ODkzLCAwLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIDc3NTksIDU1NSwgMCwgMCwgMCwgMCwgCi0gICAgNTExLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzQsIDc4NTYsIDc4NTQsIDAsIAotICAgIDc4NjAsIDc4NTgsIDAsIDAsIDAsIDc4NTcsIDc4NTUsIDAsIDc4NjEsIDc4NTksIDAsIDAsIDAsIDc3MDAsIDc3MDIsIDAsIAotICAgIDAsIDc3MDEsIDc3MDMsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDAsIDc3ODAsIDAsIAotICAgIDAsIDAsIDc3ODEsIDAsIDAsIDAsIDc3ODIsIDAsIDAsIDAsIDc3ODMsIDAsIDAsIDc4MDAsIDAsIDAsIDAsIDc4MDEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4MDIsIDAsIDAsIDAsIDc4MDMsIDAsIDAsIDc4MzUsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIAotICAgIDc5MDIsIDAsIDAsIDAsIDAsIDc5MDYsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDc5MDMsIDAsIDAsIDAsIDAsIAotICAgIDc5MDcsIDAsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDc5MTYsIDAsIDAsIDAsIDAsIDc5MjAsIDAsIDAsIDc5MTUsIAotICAgIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgNDkyLCAwLCAwLCAwLCAKLSAgICA0OTMsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCAwLCA3NzA4LCAwLCAwLCAwLCA3NzA5LCAwLCAwLCAKLSAgICA1NjAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCA4MTIyLCA5MDIsIDAsIDAsIDgxMjEsIDgxMjAsIDAsIAotICAgIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDgxMjQsIDAsIDAsIDgxMzYsIDkwNCwgMCwgMCwgMCwgMCwgNzk2MCwgNzk2MSwgCi0gICAgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIAotICAgIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAKLSAgICAwLCA4MTcyLCA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgODE4NiwgOTExLCAKLSAgICAwLCAwLCAwLCAwLCA4MDQwLCA4MDQxLCAwLCA4MTg4LCAwLCAwLCAwLCA4MTE2LCAwLCAwLCAwLCA4MTMyLCAwLCAwLCAKLSAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDgxMTgsIDgxMTUsIDAsIDAsIAotICAgIDgwNTAsIDk0MSwgMCwgMCwgMCwgMCwgNzk1MiwgNzk1MywgODA1MiwgOTQyLCAwLCAwLCAwLCAwLCA3OTY4LCA3OTY5LCAKLSAgICA4MTM0LCA4MTMxLCAwLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgCi0gICAgODE1MCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCA4MDAwLCA4MDAxLCAwLCAwLCA4MTY0LCA4MTY1LCA4MDU4LCAKLSAgICA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgMCwgMCwgODAxNiwgODAxNywgODE2NiwgMCwgMCwgMCwgODA2MCwgCi0gICAgOTc0LCAwLCAwLCAwLCAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDgxNTEsIDAsIAotICAgIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgMCwgODE4MCwgMCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5ODAsIDAsIDAsIDAsIDEwMzEsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDEwMjcsIDAsIDAsIDEwMjQsIDAsIDAsIDAsIDAsIAotICAgIDEyMzgsIDAsIDEwMjUsIDAsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDAsIDEyNDYsIDEwMzcsIDAsIDAsIDAsIDEyNTAsIAotICAgIDEwNDksIDAsIDEyNTIsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDAsIDEyNTQsIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIAotICAgIDEyNjYsIDAsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDEyNzIsIDAsIDAsIDAsIDEyNjAsIDAsIDEyMzMsIDAsIDEyMzUsIAotICAgIDAsIDExMDcsIDAsIDAsIDExMDQsIDAsIDAsIDAsIDAsIDEyMzksIDAsIDExMDUsIDAsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIAotICAgIDAsIDEyNDcsIDExMTcsIDAsIDAsIDAsIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNTUsIDEyNjMsIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDEyNzMsIAotICAgIDAsIDAsIDAsIDEyNjEsIDAsIDAsIDAsIDExMTEsIDExNDIsIDAsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNDIsIDAsIDAsIDAsIDEyNDMsIDAsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDEyNTksIDAsIDAsIDE1NzAsIDE1NzEsIAotICAgIDE1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzIsIDAsIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDAsIAotICAgIDE3NDcsIDAsIDAsIDAsIDE3MjgsIDAsIDIzNDUsIDAsIDAsIDAsIDIzNTMsIDAsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDAsIAotICAgIDI1MDcsIDI1MDgsIDI4OTEsIDI4ODgsIDI4OTIsIDAsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMwMTksIDAsIDMxNDQsIDAsIDAsIDAsIDAsIDAsIDMyNjQsIDAsIDAsIDMyNzQsIDMyNzEsIAotICAgIDMyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzUsIDAsIDM0MDIsIDM0MDQsIDAsIDAsIDM0MDMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDQxMzQsIDAsIDAsIDAsIDAsIDY5MTgsIDAsIAotICAgIDAsIDAsIDY5MjAsIDAsIDAsIDAsIDY5MjIsIDAsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDY5MjYsIDAsIDAsIDAsIDY5MzAsIAotICAgIDAsIDAsIDAsIDY5NzEsIDAsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDY5NzYsIDAsIDAsIDAsIDY5NzcsIDAsIDAsIDAsIAotICAgIDY5NzksIDc3MzYsIDAsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDc3NzIsIDAsIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc3ODQsIDAsIDAsIDAsIDc3ODUsIDAsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIDAsIDAsIDc4NTMsIDAsIDAsIAotICAgIDc4NjMsIDAsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDAsIDc4NzksIDAsIDAsIDAsIDc4OTYsIDAsIDAsIDAsIDc4OTcsIDAsIAotICAgIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIDgwNjUsIDAsIDAsIAotICAgIDAsIDgwNjYsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDAsIDgwNjgsIDAsIDAsIDAsIDgwNjksIDAsIDAsIDAsIDgwNzAsIDAsIAotICAgIDAsIDAsIDgwNzEsIDAsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDAsIDc5NDcsIDc5NDksIDAsIDAsIAotICAgIDc5NTEsIDgwNzMsIDAsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDAsIDgwNzYsIDAsIDAsIDAsIDgwNzcsIAotICAgIDAsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDgwNzksIDAsIDAsIDc5NTQsIDc5NTYsIDAsIDAsIDc5NTUsIDc5NTcsIDAsIDAsIAotICAgIDc5NjIsIDc5NjQsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDAsIDc5NzAsIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDAsIAotICAgIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDAsIDgwODIsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDAsIAotICAgIDgwODQsIDAsIDAsIDAsIDgwODUsIDAsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDgwODcsIDAsIDAsIDc5NzgsIDc5ODAsIDAsIAotICAgIDAsIDc5ODIsIDgwODgsIDAsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIDgwODksIDAsIDAsIDAsIDgwOTAsIDAsIDAsIAotICAgIDAsIDgwOTEsIDAsIDAsIDAsIDgwOTIsIDAsIDAsIDAsIDgwOTMsIDAsIDAsIDAsIDgwOTQsIDAsIDAsIDAsIDgwOTUsIDAsIAotICAgIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDAsIDc5ODcsIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIAotICAgIDc5OTQsIDc5OTYsIDAsIDAsIDc5OTgsIDAsIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDAsIDgwMDIsIAotICAgIDgwMDQsIDAsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDAsIDgwMTgsIAotICAgIDgwMjAsIDAsIDAsIDgwMjIsIDAsIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDgwMjcsIDgwMjksIAotICAgIDAsIDAsIDgwMzEsIDAsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDAsIDgwMzUsIDgwMzcsIDAsIAotICAgIDAsIDgwMzksIDgwOTcsIDAsIDAsIDAsIDgwOTgsIDAsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDAsIAotICAgIDgxMDEsIDAsIDAsIDAsIDgxMDIsIDAsIDAsIDAsIDgxMDMsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIAotICAgIDAsIDAsIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDAsIDgxMDYsIDAsIDAsIDAsIDgxMDcsIDAsIDAsIAotICAgIDAsIDgxMDgsIDAsIDAsIDAsIDgxMDksIDAsIDAsIDAsIDgxMTAsIDAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDgxMTQsIDAsIAotICAgIDAsIDAsIDgxMzAsIDAsIDAsIDAsIDgxNzgsIDAsIDAsIDAsIDgxMTksIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIAotICAgIDAsIDAsIDAsIDAsIDgxMzUsIDAsIDAsIDAsIDgxODMsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDgxNTksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDg2MDIsIDAsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDAsIDg2NTMsIDAsIDAsIDAsIAotICAgIDg2NTUsIDAsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDAsIDg3MTMsIDAsIDAsIDAsIDg3MTYsIDAsIDAsIAotICAgIDAsIDg3NDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDAsIDg3NjksIDAsIDAsIDAsIDg3NzIsIDAsIDAsIDAsIDg3NzUsIDAsIAotICAgIDAsIDAsIDg3NzcsIDAsIDAsIDAsIDg4MTMsIDAsIDAsIDAsIDg4MDIsIDAsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDg4MTcsIAotICAgIDAsIDAsIDAsIDg4MjAsIDAsIDAsIDAsIDg4MjEsIDAsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIDAsIAotICAgIDg4MzIsIDAsIDAsIDAsIDg4MzMsIDAsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDAsIDg4MzYsIDAsIDAsIAotICAgIDAsIDg4MzcsIDAsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDAsIDg5MzAsIDAsIDAsIDAsIDg5MzEsIDAsIAotICAgIDAsIDAsIDg4NzYsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDAsIDg4NzgsIDAsIDAsIDAsIDg4NzksIDAsIDAsIDAsIDg5MzgsIAotICAgIDAsIDAsIDAsIDg5MzksIDAsIDAsIDAsIDg5NDAsIDAsIDAsIDAsIDg5NDEsIDEyNDM2LCAwLCAwLCAwLCAxMjM2NCwgMCwgMCwgCi0gICAgMCwgMTIzNjYsIDAsIDAsIDAsIDEyMzY4LCAwLCAwLCAwLCAxMjM3MCwgMCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDEyMzc0LCAKLSAgICAwLCAwLCAwLCAxMjM3NiwgMCwgMCwgMCwgMTIzNzgsIDAsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAxMjM4MiwgMCwgMCwgMCwgCi0gICAgMTIzODQsIDAsIDAsIDAsIDEyMzg2LCAwLCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMTIzOTEsIDAsIDAsIDAsIDEyMzkzLCAwLCAKLSAgICAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMTI0MDYsIDEyNDA3LCAwLCAwLCAxMjQwOSwgCi0gICAgMTI0MTAsIDAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMCwgMTI0NDYsIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAwLCAxMjQ2MCwgCi0gICAgMCwgMCwgMCwgMTI0NjIsIDAsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAxMjQ2NiwgMCwgMCwgMCwgMTI0NjgsIDAsIDAsIDAsIAotICAgIDEyNDcwLCAwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMTI0NzQsIDAsIDAsIDAsIDEyNDc2LCAwLCAwLCAwLCAxMjQ3OCwgMCwgCi0gICAgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAwLCAxMjQ4NSwgMCwgMCwgMCwgMTI0ODcsIDAsIDAsIDAsIAotICAgIDEyNDg5LCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDEyNDk5LCAxMjUwMCwgMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAKLSAgICAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDEyNTA4LCAxMjUwOSwgMCwgMCwgMTI1MzUsIDAsIDAsIDAsIDEyNTM2LCAwLCAwLCAKLSAgICAwLCAxMjUzNywgMCwgMCwgMCwgMTI1MzgsIDAsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgMCwgCi0gICAgNjk3ODgsIDAsIDAsIDAsIDY5ODAzLCAwLCAwLCAwLCAwLCA2OTkzNCwgMCwgMCwgMCwgNjk5MzUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDg4MDAsIDAsIDAsIDAsIDAsIDAsIDg4MTUsIDAsIDAsIDE5MiwgMTkzLCAKKyAgICAxOTQsIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIAorICAgIDAsIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgMCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgCisgICAgMCwgMCwgMCwgMjYyLCAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAxOTksIDAsIAorICAgIDAsIDc2OTAsIDAsIDAsIDAsIDAsIDI3MCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgCisgICAgMCwgMCwgMjAwLCAyMDEsIDIwMiwgNzg2OCwgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAKKyAgICAwLCAwLCAwLCA3ODY0LCAwLCAwLCAwLCA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgNzcxMCwgMCwgMCwgMCwgMCwgCisgICAgNTAwLCAyODQsIDAsIDc3MTIsIDI4NiwgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIDAsIDAsIDAsIDI5MCwgMCwgMCwgCisgICAgMjkyLCAwLCAwLCAwLCA3NzE0LCA3NzE4LCAwLCAwLCAwLCA1NDIsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIAorICAgIDc3MjIsIDAsIDAsIDAsIDAsIDAsIDIwNCwgMjA1LCAyMDYsIDI5NiwgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCAKKyAgICA0NjMsIDUyMCwgNTIyLCAwLCAwLCAwLCA3ODgyLCAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgCisgICAgNzcyOCwgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCA3NzMwLCAwLCAwLCAwLCAzMTAsIDc3MzIsIDAsIDAsIDAsIDAsIDMxMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDAsIAorICAgIDAsIDc3NDIsIDc3NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NDYsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIDAsIAorICAgIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAwLCAwLCAyMTAsIAorICAgIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAwLCAKKyAgICA0MTYsIDc4ODQsIDQ5MCwgMCwgMCwgMCwgMCwgNzc2NCwgMCwgMCwgMCwgMCwgNzc2NiwgMCwgMCwgMCwgMCwgMzQwLCAKKyAgICA3NzY4LCAwLCAwLCAwLCAwLCAzNDQsIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDc3NzQsIDAsIDAsIAorICAgIDAsIDAsIDM0NiwgMzQ4LCAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIDUzNiwgMzUwLCAKKyAgICAwLCAwLCA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDAsIDAsIDAsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCAKKyAgICA3NzkyLCAwLCAwLCA3NzkwLCAwLCAwLCAwLCAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIAorICAgIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgCisgICAgNzc5NiwgMCwgMCwgMCwgNzgwNCwgMCwgMCwgMCwgMCwgMCwgNzgwNiwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCAKKyAgICA3ODEyLCAwLCA3ODE2LCAwLCAwLCA3ODE4LCA3ODIwLCAwLCAwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCAKKyAgICA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIDc5MjQsIDAsIDAsIDAsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgCisgICAgMzc5LCAwLCAwLCAwLCAwLCAzODEsIDAsIDAsIDAsIDAsIDAsIDc4MjYsIDc4MjgsIDAsIDAsIDAsIDIyNCwgMjI1LCAyMjYsIAorICAgIDIyNywgMjU3LCAyNTksIDU1MSwgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIAorICAgIDc2ODEsIDAsIDAsIDI2MSwgMCwgNzY4MywgMCwgMCwgMCwgMCwgMCwgMCwgNzY4NSwgNzY4NywgMCwgMCwgMCwgMCwgMjYzLCAKKyAgICAyNjUsIDAsIDAsIDAsIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAyMzEsIDAsIDAsIDc2OTEsIDAsIDAsIDAsIDAsIDI3MSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgNzY5NSwgMCwgMCwgMCwgMjMyLCAKKyAgICAyMzMsIDIzNCwgNzg2OSwgMjc1LCAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgNTE5LCAwLCAwLCAwLCAKKyAgICA3ODY1LCAwLCAwLCAwLCA1NTMsIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgNzcxMSwgMCwgMCwgMCwgMCwgNTAxLCAyODUsIAorICAgIDAsIDc3MTMsIDI4NywgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDI5MSwgMCwgMCwgMjkzLCAwLCAwLCAwLCA3NzE1LCAKKyAgICA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIDc3MjMsIDAsIAorICAgIDc4MzAsIDAsIDAsIDAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCAKKyAgICA1MjEsIDUyMywgMCwgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAzMDksIDAsIDAsIDAsIAorICAgIDAsIDQ5NiwgMCwgMCwgMCwgNzcyOSwgMCwgMCwgMCwgMCwgMCwgNDg5LCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDAsIDAsIAorICAgIDAsIDAsIDc3MzMsIDAsIDAsIDAsIDAsIDMxNCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIAorICAgIDAsIDc3NDEsIDAsIDAsIDc3MzksIDAsIDAsIDAsIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIAorICAgIDAsIDAsIDAsIDUwNSwgMzI0LCAwLCAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAwLCAwLCA3NzUzLCAwLCAwLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIAorICAgIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCA0NjYsIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDAsIDAsIAorICAgIDAsIDAsIDQ5MSwgMCwgMCwgMCwgMCwgNzc2NSwgNzc2NywgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAKKyAgICAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIAorICAgIDAsIDAsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDc3NzksIAorICAgIDAsIDAsIDUzNywgMzUxLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAKKyAgICAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAwLCAwLCAyNDksIDI1MCwgMjUxLCAzNjEsIDM2MywgMzY1LCAwLCAyNTIsIDc5MTEsIAorICAgIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIDc5MDksIDc3OTUsIDAsIDAsIDAsIDM3MSwgNzc5OSwgMCwgCisgICAgNzc5NywgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgMCwgMCwgNzgwOSwgNzgxMSwgMzczLCAwLCAwLCAwLCA3ODE1LCAKKyAgICA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAwLCA3ODE5LCA3ODIxLCAwLCAwLCA3OTIzLCAyNTMsIDM3NSwgCisgICAgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDM3OCwgNzgyNSwgMCwgMCwgCisgICAgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIDAsIDAsIDAsIDgxNzMsIDkwMSwgCisgICAgMCwgMCwgODEyOSwgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgNzg0OCwgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCA1MDYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCA3Njg4LCAwLCAwLCAwLCAwLCA3ODcyLCA3ODcwLCAwLCAKKyAgICA3ODc2LCAwLCAwLCAwLCAwLCA3ODc0LCAwLCAwLCA3NzI2LCAwLCAwLCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAwLCAKKyAgICAwLCAwLCAwLCA3ODkyLCAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDAsIDAsIDU1NCwgMCwgMCwgNTEwLCAKKyAgICAwLCAwLCAwLCAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCA0NzMsIDAsIDAsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIAorICAgIDc4NDksIDAsIDAsIDAsIDAsIDAsIDQ3OSwgMCwgMCwgNTA3LCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgCisgICAgNzY4OSwgMCwgMCwgMCwgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgMCwgMCwgMCwgMCwgNzg3NSwgMCwgMCwgNzcyNywgMCwgCisgICAgMCwgMCwgMCwgNzg5MSwgNzg4OSwgMCwgNzg5NSwgMCwgMCwgMCwgMCwgNzg5MywgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAKKyAgICAwLCA3NzU5LCAwLCAwLCA1NTUsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgMCwgCisgICAgNDc0LCAwLCAwLCA3ODU2LCA3ODU0LCAwLCA3ODYwLCA3ODU4LCAwLCAwLCAwLCAwLCAwLCA3ODU3LCA3ODU1LCAwLCA3ODYxLCAKKyAgICAwLCAwLCAwLCAwLCA3ODU5LCAwLCA3NzAwLCA3NzAyLCAwLCAwLCAwLCAwLCA3NzAxLCA3NzAzLCA3NzYwLCA3NzYyLCAwLCAKKyAgICAwLCAwLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCA3NzgwLCAwLCA3NzgxLCAwLCAwLCAwLCAwLCAwLCA3NzgyLCAwLCA3NzgzLCAKKyAgICAwLCAwLCAwLCAwLCA3ODAwLCAwLCAwLCAwLCAwLCAwLCA3ODAxLCAwLCAwLCAwLCA3ODAyLCAwLCA3ODAzLCAwLCAwLCAwLCAKKyAgICAwLCA3ODM1LCAwLCAwLCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAwLCAwLCAwLCAwLCA3OTAyLCAwLCAwLCAwLCAwLCAKKyAgICA3OTA2LCA3OTAxLCA3ODk5LCAwLCA3OTA1LCA3OTAzLCAwLCAwLCAwLCAwLCA3OTA3LCAwLCAwLCAwLCAwLCA3OTE0LCAKKyAgICA3OTEyLCAwLCA3OTE4LCAwLCAwLCAwLCAwLCA3OTE2LCAwLCAwLCAwLCAwLCA3OTIwLCA3OTE1LCA3OTEzLCAwLCA3OTE5LCAKKyAgICA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgNDkzLCAwLCAKKyAgICA0ODAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgNzcwOCwgMCwgMCwgMCwgMCwgMCwgNzcwOSwgNTYwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDQ5NSwgMCwgMCwgODEyMiwgOTAyLCAwLCAwLCA4MTIxLCA4MTIwLCA3OTQ0LCAKKyAgICA3OTQ1LCAwLCAwLCAwLCAwLCAwLCA4MTI0LCA4MTM2LCA5MDQsIDAsIDAsIDAsIDAsIDc5NjAsIDc5NjEsIDAsIDAsIDgxMzgsIAorICAgIDkwNSwgNzk3NiwgNzk3NywgMCwgMCwgMCwgMCwgMCwgODE0MCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCA4MTUyLCAwLCAKKyAgICA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDAsIDAsIDgxODQsIDkwOCwgODAwOCwgODAwOSwgMCwgMCwgMCwgMCwgMCwgODE3MiwgCisgICAgMCwgMCwgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDAsIDAsIDgxODYsIAorICAgIDkxMSwgMCwgMCwgMCwgMCwgODA0MCwgODA0MSwgMCwgODE4OCwgMCwgMCwgMCwgMCwgMCwgODExNiwgMCwgODEzMiwgMCwgMCwgCisgICAgMCwgMCwgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCA3OTM2LCA3OTM3LCAwLCAwLCAwLCAwLCA4MTE4LCA4MTE1LCAKKyAgICA4MDUwLCA5NDEsIDAsIDAsIDAsIDAsIDc5NTIsIDc5NTMsIDAsIDAsIDgwNTIsIDk0MiwgNzk2OCwgNzk2OSwgMCwgMCwgMCwgCisgICAgMCwgODEzNCwgODEzMSwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIAorICAgIDgxNTAsIDAsIDAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgODAwMCwgODAwMSwgMCwgMCwgMCwgMCwgODE2NCwgODE2NSwgMCwgMCwgCisgICAgODA1OCwgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIDAsIDAsIDgwMTYsIDgwMTcsIDAsIDAsIDAsIDAsIDgxNjYsIAorICAgIDAsIDgwNjAsIDk3NCwgMCwgMCwgMCwgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgMCwgMCwgODE0NiwgOTEyLCAKKyAgICAwLCAwLCA4MTUxLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDgxODAsIDAsIDk3OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTgwLCAwLCAxMDMxLCAwLCAwLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAwLCAwLCAxMDI3LCAxMDI0LCAwLCAKKyAgICAwLCAwLCAwLCAxMjM4LCAwLCAxMDI1LCAwLCAwLCAwLCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAwLCAwLCAwLCAxMjQ2LCAwLCAKKyAgICAwLCAxMDM3LCAwLCAwLCAwLCAxMjUwLCAxMDQ5LCAwLCAxMjUyLCAwLCAwLCAwLCAxMDM2LCAwLCAwLCAwLCAxMjU0LCAwLCAKKyAgICAwLCAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAxMjY2LCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAwLCAwLCAxMjcyLCAwLCAKKyAgICAxMjYwLCAwLCAwLCAwLCAxMjMzLCAwLCAxMjM1LCAwLCAwLCAwLCAxMTA3LCAxMTA0LCAwLCAwLCAwLCAwLCAxMjM5LCAwLCAKKyAgICAxMTA1LCAwLCAwLCAwLCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAwLCAwLCAwLCAxMjQ3LCAwLCAwLCAxMTE3LCAwLCAwLCAwLCAKKyAgICAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAwLCAwLCAxMTE2LCAwLCAwLCAwLCAxMjU1LCAwLCAwLCAxMjYzLCAxMTE4LCAwLCAKKyAgICAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAwLCAwLCAxMjczLCAwLCAxMjYxLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMTExLCAwLCAwLCAxMTQyLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAxMjQyLCAwLCAwLCAwLCAwLCAwLCAxMjQzLCAwLCAKKyAgICAxMjU4LCAwLCAwLCAwLCAwLCAwLCAxMjU5LCAxNTcwLCAxNTcxLCAxNTczLCAwLCAwLCAwLCAwLCAxNTcyLCAwLCAxNTc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzMwLCAwLCAxNzQ3LCAwLCAwLCAwLCAwLCAwLCAxNzI4LCAwLCAwLCAwLCAyMzQ1LCAwLCAKKyAgICAyMzUzLCAwLCAwLCAwLCAwLCAwLCAyMzU2LCAwLCAwLCAyNTA3LCAyNTA4LCAwLCAwLCAyODkxLCAyODg4LCAyODkyLCAwLCAKKyAgICAwLCAwLCAyOTY0LCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAwLCAwLCAwLCAzMDE5LCAwLCAwLCAwLCAzMTQ0LCAwLCAKKyAgICAwLCAwLCAzMjY0LCAzMjc0LCAzMjcxLCAzMjcyLCAwLCAwLCAwLCAwLCAzMjc1LCAwLCAwLCAwLCAzNDAyLCAzNDA0LCAwLCAKKyAgICAwLCAwLCAwLCAzNDAzLCAwLCAwLCAwLCAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAzNTQ5LCA0MTM0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2OTE4LCAwLCA2OTIwLCAwLCAwLCAwLCAwLCAwLCA2OTIyLCAwLCA2OTI0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2OTI2LCAwLCA2OTMwLCAwLCAwLCAwLCAwLCAwLCA2OTcxLCAwLCA2OTczLCAwLCAwLCAwLCAwLCAwLCA2OTc2LCAwLCAKKyAgICA2OTc3LCAwLCAwLCAwLCAwLCAwLCA2OTc5LCAwLCAwLCA3NzM2LCAwLCA3NzM3LCAwLCAwLCAwLCAwLCAwLCA3NzcyLCAwLCAKKyAgICA3NzczLCAwLCAwLCAwLCA3Nzg0LCAwLCAwLCAwLCAwLCAwLCA3Nzg1LCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAKKyAgICA3ODUzLCAwLCAwLCA3ODYzLCAwLCAwLCA3ODc4LCAwLCAwLCAwLCAwLCAwLCA3ODc5LCAwLCA3ODk2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3ODk3LCAwLCAwLCAwLCA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCAKKyAgICA4MDY1LCAwLCAwLCAwLCAwLCAwLCA4MDY2LCAwLCA4MDY3LCAwLCAwLCAwLCAwLCAwLCA4MDY4LCAwLCA4MDY5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MDcwLCAwLCA4MDcxLCAwLCAwLCAwLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCA3OTQ3LCAKKyAgICA3OTQ5LCAwLCAwLCA3OTUxLCA4MDczLCAwLCAwLCAwLCAwLCAwLCA4MDc0LCAwLCA4MDc1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MDc2LCAwLCA4MDc3LCAwLCAwLCAwLCAwLCAwLCA4MDc4LCAwLCA4MDc5LCAwLCAwLCAwLCAwLCA3OTU0LCA3OTU2LCAKKyAgICA3OTU1LCA3OTU3LCAwLCAwLCAwLCAwLCA3OTYyLCA3OTY0LCA3OTYzLCA3OTY1LCAwLCAwLCAwLCAwLCA3OTcwLCA3OTcyLCAKKyAgICAwLCAwLCA3OTc0LCA4MDgwLCA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCAwLCAwLCAwLCA4MDgyLCAwLCAKKyAgICA4MDgzLCAwLCAwLCAwLCAwLCAwLCA4MDg0LCAwLCA4MDg1LCAwLCAwLCAwLCAwLCAwLCA4MDg2LCAwLCA4MDg3LCAwLCAwLCAKKyAgICAwLCAwLCA3OTc4LCA3OTgwLCAwLCAwLCA3OTgyLCA4MDg4LCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCA4MDg5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MDkwLCAwLCA4MDkxLCAwLCAwLCAwLCAwLCAwLCA4MDkyLCAwLCA4MDkzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MDk0LCAwLCA4MDk1LCAwLCAwLCAwLCAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCA3OTg3LCA3OTg5LCAwLCAwLCAKKyAgICA3OTkxLCAwLCAwLCAwLCAwLCAwLCA3OTk0LCA3OTk2LCAwLCAwLCA3OTk4LCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MDAyLCA4MDA0LCA4MDAzLCA4MDA1LCAwLCAwLCAwLCAwLCA4MDEwLCA4MDEyLCA4MDExLCAKKyAgICA4MDEzLCAwLCAwLCAwLCAwLCA4MDE4LCA4MDIwLCAwLCAwLCA4MDIyLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAwLCAwLCA4MDMxLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCAKKyAgICAwLCAwLCAwLCA4MDM1LCA4MDM3LCAwLCAwLCA4MDM5LCA4MDk3LCAwLCA4MDk4LCAwLCAwLCAwLCAwLCAwLCA4MDk5LCAwLCAKKyAgICA4MTAwLCAwLCAwLCAwLCAwLCAwLCA4MTAxLCAwLCA4MTAyLCAwLCAwLCAwLCAwLCAwLCA4MTAzLCA4MDQyLCA4MDQ0LCAwLCAKKyAgICAwLCA4MDQ2LCA4MTA0LCAwLCAwLCAwLCAwLCA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCA4MTA2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MTA3LCAwLCA4MTA4LCAwLCAwLCAwLCAwLCAwLCA4MTA5LCAwLCA4MTEwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MTExLCAwLCA4MTE0LCAwLCAwLCAwLCAwLCAwLCA4MTMwLCAwLCA4MTc4LCAwLCAwLCAwLCAwLCAwLCA4MTE5LCA4MTQxLCAKKyAgICA4MTQyLCAwLCAwLCA4MTQzLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTM1LCAwLCA4MTgzLCAwLCAwLCAwLCAwLCA4MTU3LCAKKyAgICA4MTU4LCAwLCAwLCA4MTU5LCAwLCAwLCAwLCAwLCA4NjAyLCAwLCA4NjAzLCAwLCAwLCAwLCAwLCAwLCA4NjIyLCAwLCAKKyAgICA4NjUzLCAwLCAwLCAwLCAwLCAwLCA4NjU1LCAwLCA4NjU0LCAwLCAwLCAwLCAwLCAwLCA4NzA4LCAwLCA4NzEzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4NzE2LCAwLCA4NzQwLCAwLCAwLCAwLCAwLCAwLCA4NzQyLCAwLCA4NzY5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4NzcyLCAwLCA4Nzc1LCAwLCAwLCAwLCAwLCAwLCA4Nzc3LCAwLCA4ODEzLCAwLCAwLCAwLCAwLCAwLCA4ODAyLCAwLCAKKyAgICA4ODE2LCAwLCAwLCAwLCAwLCAwLCA4ODE3LCAwLCA4ODIwLCAwLCAwLCAwLCAwLCAwLCA4ODIxLCAwLCA4ODI0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4ODI1LCAwLCA4ODMyLCAwLCAwLCAwLCAwLCAwLCA4ODMzLCAwLCA4OTI4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4OTI5LCAwLCA4ODM2LCAwLCAwLCAwLCAwLCAwLCA4ODM3LCAwLCA4ODQwLCAwLCAwLCAwLCAwLCAwLCA4ODQxLCAwLCAKKyAgICA4OTMwLCAwLCAwLCAwLCAwLCAwLCA4OTMxLCAwLCA4ODc2LCAwLCAwLCAwLCAwLCAwLCA4ODc3LCAwLCA4ODc4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4ODc5LCAwLCA4OTM4LCAwLCAwLCAwLCAwLCAwLCA4OTM5LCAwLCA4OTQwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4OTQxLCAwLCAwLCAxMjQzNiwgMCwgMTIzNjQsIDAsIDAsIDAsIDAsIDAsIDEyMzY2LCAwLCAxMjM2OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTIzNzAsIDAsIDEyMzcyLCAwLCAwLCAwLCAwLCAwLCAxMjM3NCwgMCwgMTIzNzYsIDAsIDAsIDAsIDAsIDAsIDEyMzc4LCAKKyAgICAwLCAxMjM4MCwgMCwgMCwgMCwgMCwgMCwgMTIzODIsIDAsIDEyMzg0LCAwLCAwLCAwLCAwLCAwLCAxMjM4NiwgMCwgMTIzODksIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMzkxLCAwLCAxMjM5MywgMCwgMCwgMCwgMCwgMCwgMTI0MDAsIDEyNDAxLCAxMjQwMywgCisgICAgMTI0MDQsIDAsIDAsIDAsIDAsIDEyNDA2LCAxMjQwNywgMTI0MDksIDEyNDEwLCAwLCAwLCAwLCAwLCAxMjQxMiwgMTI0MTMsIAorICAgIDEyNDQ2LCAwLCAwLCAwLCAwLCAwLCAxMjUzMiwgMCwgMTI0NjAsIDAsIDAsIDAsIDAsIDAsIDEyNDYyLCAwLCAxMjQ2NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTI0NjYsIDAsIDEyNDY4LCAwLCAwLCAwLCAwLCAwLCAxMjQ3MCwgMCwgMTI0NzIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyNDc0LCAwLCAxMjQ3NiwgMCwgMCwgMCwgMCwgMCwgMTI0NzgsIDAsIDEyNDgwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4MiwgCisgICAgMCwgMTI0ODUsIDAsIDAsIDAsIDAsIDAsIDEyNDg3LCAwLCAxMjQ4OSwgMCwgMCwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAKKyAgICAxMjQ5OSwgMTI1MDAsIDAsIDAsIDAsIDAsIDEyNTAyLCAxMjUwMywgMTI1MDUsIDEyNTA2LCAwLCAwLCAwLCAwLCAxMjUwOCwgCisgICAgMTI1MDksIDEyNTM1LCAwLCAwLCAwLCAwLCAwLCAxMjUzNiwgMCwgMTI1MzcsIDAsIDAsIDAsIDAsIDAsIDEyNTM4LCAwLCAKKyAgICAxMjU0MiwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDAsIDAsIDAsIDY5Nzg4LCAwLCA2OTgwMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjk5MzQsIDAsIDY5OTM1LCAwLCAwLCA3MDQ3NSwgNzA0NzYsIDAsIDAsIDcwODQ0LCA3MDg0MywgNzA4NDYsIDAsIDAsIAorICAgIDcxMDk4LCAwLCAwLCAwLCAwLCAwLCA3MTA5OSwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewpAQCAtNTE4Myw2ICs1Njk2LDcgQEAKIAl7IDI1NSwgNywgNywgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDgsIDI1NSwgMCB9LAogCXsgMjU1LCA3LCA5LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAwIH0sCiAJeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MjA0LDc5ICs1NzE4LDgwIEBACiAJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMTksIDI1NSwgMjU1LCAtMSB9LAogCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7CiAgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCi0gICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMiwgMiwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKLSAgICAzNiwgMiwgMiwgMiwgMzcsIDM4LCAyLCAzOSwgMiwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAotICAgIDUwLCAyLCA1MSwgMiwgMiwgNTIsIDUzLCA1NCwgNTUsIDU2LCAyLCA1NywgNTgsIDU5LCA2MCwgMiwgMiwgNjEsIDYyLCA2MywgCi0gICAgNjQsIDY1LCA2NSwgMiwgMiwgMiwgMiwgNjYsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgMiwgMiwgMiwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCA4MywgMiwgCisgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDIsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKKyAgICAzNiwgMzcsIDIsIDIsIDIsIDM4LCAzOSwgMiwgNDAsIDIsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAorICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDIsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NiwgNjYsIDIsIDIsIDIsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAyLCAyLCAyLCA3NCwgNzUsIAorICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDIsIDIsIDIsIDIsIDg1LCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCAKLSAgICA4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCA5MCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDIsIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4OCwgODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgCisgICAgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk4LCA1MCwgNTAsIAorICAgIDk5LCAxMDAsIDUwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDQ5LCA0OSwgCi0gICAgOTcsIDk4LCA0OSwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwOCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMiwgMiwgMTE3LCAxMTgsIDExOSwgMiwgMTIwLCAKKyAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMiwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMiwgNTAsIDUwLCAxMzIsIAorICAgIDIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMiwgMiwgMTQzLCAyLCAyLCAyLCAKKyAgICAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDIsIDIsIDE1MSwgMiwgMTUyLCAxNTMsIDE1NCwgMTU1LCAyLCAKKyAgICAyLCAxNTYsIDIsIDIsIDIsIDE1NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDE1OCwgMTU5LCA1MCwgMTYwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE2MSwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMiwgMiwgMiwgMTE1LCAxMTYsIDIsIDExNywgMTE4LCAKLSAgICAxMTksIDEyMCwgMTIxLCAxMjIsIDIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjgsIDIsIAotICAgIDEyOSwgMTMwLCAxMzEsIDIsIDEzMiwgMiwgMTMzLCAyLCAyLCAyLCAxMzQsIDIsIDIsIDIsIDEzNSwgMTM2LCAxMzcsIDEzOCwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAxNDAsIDIsIDE0MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCAxNDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ5LCA0OSwgNDksIDQ5LCAxNDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDE0NCwgMTQ1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAxNjcsIDE2OCwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDcsIDIsIDE0OCwgMiwgMTQ5LCAyLCAyLCAxNTAsIDIsIDIsIDIsIDE1MSwgMTUyLCAKLSAgICAxNTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE1NCwgMTU1LCAKLSAgICAyLCAyLCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMiwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNDgsIAotICAgIDE2OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAxNzAsIDkzLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MiwgMTcxLCAyLCAxNzIsIDE3MywgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzAsIDE3MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc0LCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTcyLCAxNzMsIDE3NCwgMiwgMTc1LCAyLCAyLCAxNzYsIDIsIDIsIDIsIDE3NywgMTc4LCAxNzksIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMTgxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODIsIAorICAgIDE4MywgMiwgMiwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDIsIDUwLCA1MCwgNTAsIDUwLCAxODksIDE5MCwgNTAsIDE5MSwgCisgICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTk4LCAKKyAgICAxOTksIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMjAwLCAyLCAyMDEsIAorICAgIDIwMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMTc4LCA0OSwgMTc5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwNywgNTAsIDIwOCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwMywgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTU1MTEsNyArNjAyNiw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDksIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01NTc1LDcgKzYwOTAsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC01NjExLDcgKzYxMjYsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDEwLCAwLCA5LCA5LCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU2MjMsMTYgKzYxMzgsMTYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01NjYwLDE2ICs2MTc1LDE2IEBACiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC01Njg1LDcgKzYyMDAsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNTY5Niw4MjcgKzYyMTEsMzM4IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAKLSAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCA0LCAwLCAwLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCAKLSAgICA0LCAzNSwgOCwgNiwgNywgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDUsIDQ2LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgCisgICAgMzEsIDMxLCAzMSwgMzEsIDMxLCAzMSwgMzEsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgCisgICAgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCAKKyAgICA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDQ1LCA0NSwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIAotICAgIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjUyOCwyNiArNjU1NCw2NzYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQqIGdldF9jaGFuZ2VfM18yXzAoUHlfVUNTNCBuKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCmluZGV4IDdjY2IxMjYuLmQwZjljYjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKQEAgLTQsMjQ5ICs0LDI2NSBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgODMsIDczLCA3MSwgMjA2LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDc2LCA2NSwgODQsIDczLCAyMDYsIDg5LCAyMDEsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA2NywgNzQsIDIwMywgNzcsIAotICAgIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKLSAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIAotICAgIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCAyMDQsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCAKLSAgICA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2OCwgNzMsIDcxLCA3MywgCi0gICAgMjEyLCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgODYsIDc5LCA4NywgCi0gICAgNjksIDIwNCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNzcsIDg1LCAKLSAgICA4MywgNzMsIDY3LCA2NSwgMjA0LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCA4NCwgNzMsIDc3LCA2OSwgCi0gICAgMjExLCA3MCwgNzksIDIxMCwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAKLSAgICAxOTUsIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCi0gICAgMTk4LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDY2LCAKLSAgICA3MywgNzgsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgODYsIDY1LCAyMDEsIDgzLCAKLSAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg2LCA2NSwgODIsIAotICAgIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDIwNiwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCAKLSAgICA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIAotICAgIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA3NSwgNjUsIDg0LCA2NSwgCi0gICAgNzUsIDY1LCA3OCwgMTkzLCAxOTQsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgCi0gICAgNjUsIDc4LCA3MSwgODgsIDIwMSwgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDg0LCA3MywgNjYsIDY5LCAKLSAgICA4NCwgNjUsIDIwNiwgNzksIDE5OCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjksIDY5LCAyMDUsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgODUsIDEyOCwgNzUsIAotICAgIDcyLCA3NywgNjksIDIxMCwgODcsIDcyLCA3MywgODQsIDE5NywgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgCi0gICAgODIsIDczLCA2OSwgMjEwLCA3MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgODksIDY5LCAyMDAsIDc5LCAxMjgsIAotICAgIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA4MCwgCi0gICAgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgMjA2LCA2OCwgNjksIDg2LCAKLSAgICA2NSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAyMDEsIDY2LCA3NiwgNjUsIDY3LCAyMDMsIDg0LCA3MywgNzYsIDE5NywgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAKLSAgICAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIAotICAgIDc5LCA3NSwgNjksIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA2NiwgNzksIDIxNiwgNzIsIDY5LCA2NiwgCi0gICAgODIsIDY5LCAyMTUsIDc3LCA3MywgNjUsIDIwNywgODAsIDc2LCA4NSwgMjExLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCAKLSAgICA2NSwgODIsIDY4LCAyMTEsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIAotICAgIDcxLCAyMTEsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCA4NCwgCi0gICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MiwgNzksIDc5LCA3NSwgMTI4LCAyMTMsIDg0LCA4NywgCi0gICAgNzksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKLSAgICA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzksIDEyOCwgODQsIDg3LCAyMDcsIAotICAgIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDc5LCA4NiwgNjksIDIxMCwgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAKLSAgICAyMTIsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAKLSAgICAyMTUsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NywgMjA2LCA3MiwgNzMsIDcxLCAyMDAsIDcwLCA4NSwgCi0gICAgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCAKLSAgICA2NSwgMjA0LCA4NCwgNjUsIDE5OSwgNjYsIDY1LCA4MiwgMTI4LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCAKLSAgICA3NywgNjksIDgyLCA3MywgMTk1LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIAotICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgCi0gICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA4NCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCAKLSAgICA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDcyLCA3MywgODIsIAotICAgIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgCi0gICAgNzgsIDE5OSwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAKLSAgICAyMDEsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgNzEsIDIxMywgODYsIDc5LCA2NywgNjUsIAotICAgIDc2LCA3MywgMTk1LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NCwgNjksIDY5LCAyMDUsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCAKLSAgICA2NSwgNzgsIDY5LCA4MywgMTk3LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODcsIAotICAgIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA2NSwgMTI4LCA3MiwgCi0gICAgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIDIxNSwgCi0gICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAKLSAgICAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNjcsIDcyLCA2NSwgMjA1LCAKLSAgICA3NiwgODUsIDE5NywgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIAotICAgIDc1LCA2NSwgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAKLSAgICAxOTMsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIAotICAgIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODksIDY5LCAyMDMsIDc3LCAKLSAgICA2OSwgNjksIDg0LCA2OSwgMjAxLCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MCwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA4MCwgNjUsIDEyOCwgODksIDY1LCAxMjgsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA3MywgODgsIDEyOCwgNjksIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3OCwgNjUsIDEyOCwgODMsIDY5LCA4NiwgCi0gICAgNjksIDc4LCAxMjgsIDc2LCA3OSwgNzgsIDE5OSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzUsIDczLCAKLSAgICAxOTUsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzksIDgwLCA2OSwgMjA2LCA4MiwgNjUsIAotICAgIDEyOCwgODMsIDY1LCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4NiwgNzMsIDY5LCAyMTIsIAotICAgIDc2LCA2NSwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIAotICAgIDEyOCwgOTAsIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIAotICAgIDkwLCA3OSwgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgCi0gICAgMTI4LCA5MCwgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAKLSAgICA4MCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCAKLSAgICA5MCwgNjksIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIAotICAgIDEyOCwgOTAsIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIAotICAgIDkwLCA2NSwgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgCi0gICAgNzQsIDEyOCwgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgNjUsIDgyLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIAorICAgIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCisgICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NywgODUsIDc4LCAKKyAgICA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKKyAgICA3NywgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgCisgICAgNjUsIDIwNiwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIAorICAgIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDgzLCA3MywgNzEsIDc4LCA4NywgCisgICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg2LCA3OSwgODcsIDY5LCAyMDQsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCAKKyAgICA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIAorICAgIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDcxLCA4MiwgCisgICAgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIAorICAgIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIDIxMCwgNjcsIDg5LCA4MiwgNzMsIAorICAgIDc2LCA3NiwgNzMsIDE5NSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAorICAgIDE5OCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgODQsIDY1LCA3NywgCisgICAgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NiwgCisgICAgNjUsIDIwMSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCisgICAgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKKyAgICA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgMjA2LCA2NiwgCisgICAgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgODcsIDcyLCA3MywgODQsIDE5NywgNjYsIDc2LCA2NSwgNjcsIAorICAgIDIwMywgNjUsIDEyOCwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCA4NSwgMTI4LCA3NywgODksIDY1LCA3OCwgCisgICAgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzUsIDczLCA3NSwgNjUsIDc1LCAKKyAgICA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgMTk3LCA3MywgMTI4LCA3OSwgMTk4LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAKKyAgICAyMDYsIDc5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAKKyAgICA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNzcsIDY5LCA2OSwgMjA1LCA2NywgNzksIAorICAgIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgCisgICAgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg5LCA2OSwgMjAwLCA2NywgCisgICAgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCAKKyAgICA2NSwgODIsIDIwMSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIAorICAgIDIwNiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgODQsIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCAKKyAgICA3NiwgNzksIDg5LCA2NSwgMjA2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAorICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgCisgICAgNzksIDc4LCA2OSwgMTI4LCAyMTMsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NCwgODcsIDc5LCAKKyAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIAorICAgIDczLCA2NSwgMjA3LCA4NSwgMjA4LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgCisgICAgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3NywgNzksIDc4LCAKKyAgICAxOTksIDc5LCA3OCwgMTk3LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDg3LCAyMDcsIDY4LCA3OSwgODcsIDIwNiwgCisgICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzYsIDc5LCAyMTUsIDg2LCAKKyAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgODQsIDcyLCA4MiwgNjksIDE5NywgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIAorICAgIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgCisgICAgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIDgzLCA2NywgODIsIDczLCAKKyAgICA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAorICAgIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgCisgICAgNzIsIDczLCA3MSwgMjAwLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgNzMsIDc4LCAKKyAgICA3MiwgNjUsIDc2LCAxOTMsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIAorICAgIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgCisgICAgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDY2LCAKKyAgICA2NSwgODIsIDE5NCwgNzIsIDY1LCAyMDAsIDcyLCA2NSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCAKKyAgICA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIAorICAgIDIwNCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3MiwgNjUsIAorICAgIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDY1LCA2NywgCisgICAgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKKyAgICA2OSwgMjEwLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIAorICAgIDgyLCA4NSwgNjcsIDIwMywgNzAsIDczLCA4NiwgNjksIDEyOCwgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCisgICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICA3MSwgMjEzLCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgMjExLCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIDcxLCAKKyAgICA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAorICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzQsIDY5LCA2OSwgCisgICAgMjA1LCA4MCwgNjUsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA2OCwgNzksIDg0LCAyMTEsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA2NywgODUsIDgyLCAKKyAgICA4MywgNzMsIDg2LCAxOTcsIDc3LCA2NSwgMTI4LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4MywgMTI4LCA4MywgNzMsIDg4LCAKKyAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4OSwgNjUsIAorICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY1LCAxMjgsIAorICAgIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgCisgICAgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIDg5LCAKKyAgICAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgMTI4LCAKKyAgICA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCAKKyAgICA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIAorICAgIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIAorICAgIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIAorICAgIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCA5MCwgCisgICAgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIDgyLCAKICAgICA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIAogICAgIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODMsIDcyLCA2NSwgMTI4LCA5MCwgODIsIAotICAgIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIAotICAgIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIAotICAgIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgCi0gICAgODIsIDEyOCwgOTAsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAKLSAgICAxMjgsIDkwLCA3MywgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgCi0gICAgMjAxLCA5MCwgNzIsIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgOTAsIDcyLCA4OSwgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCAKLSAgICA2OSwgMTI4LCA5MCwgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCAKLSAgICA5MCwgNzIsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIAotICAgIDcyLCA4NSwgNzksIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgCi0gICAgNzIsIDg1LCAxMjgsIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAKLSAgICAxMjgsIDkwLCA3MiwgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIAotICAgIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIAotICAgIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIAotICAgIDY1LCA4OCwgMTI4LCA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA5MCwgNzIsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgCi0gICAgNzIsIDEyOCwgOTAsIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgCi0gICAgNjksIDc4LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCAKLSAgICA5MCwgNjksIDUwLCAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCAKLSAgICA5MCwgNjUsIDg5LCA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIAotICAgIDEyOCwgOTAsIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIAotICAgIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIAotICAgIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCAKLSAgICA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAotICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIAotICAgIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgCi0gICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAKLSAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIAotICAgIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIAotICAgIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIAotICAgIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIAotICAgIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIAotICAgIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCAKLSAgICA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgCi0gICAgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIAotICAgIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIAotICAgIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgCi0gICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCi0gICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKLSAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAotICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCi0gICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAotICAgIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgCi0gICAgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCAKLSAgICA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIAotICAgIDg4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgCi0gICAgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAKLSAgICAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgCi0gICAgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgCi0gICAgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIAotICAgIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIAotICAgIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgCi0gICAgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgCi0gICAgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCAKLSAgICA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIAotICAgIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgCi0gICAgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCAKLSAgICA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCi0gICAgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIAotICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgCi0gICAgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgCi0gICAgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCAKLSAgICA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIAotICAgIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgCi0gICAgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDcyLCAKLSAgICAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAKLSAgICAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCAKLSAgICA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIAotICAgIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIAotICAgIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIAotICAgIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgCi0gICAgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCAKLSAgICA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIAotICAgIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIAotICAgIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAKLSAgICAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCAKLSAgICA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCAKLSAgICA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgCi0gICAgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAKLSAgICAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIAotICAgIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCAKLSAgICA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCAKLSAgICA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCAKLSAgICA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCAKLSAgICA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCAKLSAgICA4NywgNjUsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCAKLSAgICA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIAotICAgIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCAKLSAgICA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCAKLSAgICA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCAKLSAgICA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCAKLSAgICA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAotICAgIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgCi0gICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgCi0gICAgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAKLSAgICAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCAKLSAgICA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCAKLSAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIAotICAgIDIwMCwgODcsIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIAotICAgIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgCi0gICAgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCAKLSAgICA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCAKLSAgICA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgCi0gICAgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgCi0gICAgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCAKLSAgICA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCAKLSAgICA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA3OCwgODQsIAotICAgIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgCi0gICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCAKLSAgICA2OCwgODUsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIDc4LCAxMjgsIDg3LCAKLSAgICA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDY4LCA2OSwgNDUsIAotICAgIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgCi0gICAgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAKLSAgICA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgCi0gICAgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCAKLSAgICA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCAKLSAgICA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIAotICAgIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIAotICAgIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA2OSwgCi0gICAgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIAotICAgIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAxMjgsIDg3LCA2NSwgMjE3LCA4NywgNjUsIDg4LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDY1LCA4OCwgMTI4LCA4NywgNjUsIDg3LCA0NSwgNjUsIDg5LCA3MywgNzgsIDQ1LCA4MiwgNjksIDgzLCA3MiwgCi0gICAgMTI4LCA4NywgNjUsIDg3LCAxMjgsIDg3LCA2NSwgMjE1LCA4NywgNjUsIDg2LCAyMTcsIDg3LCA2NSwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNjUsIDg2LCA2OSwgODMsIDEyOCwgODcsIDY1LCA4NiwgNjksIDEyOCwgODcsIDY1LCA4NiwgMTk3LCA4NywgCi0gICAgNjUsIDg1LCAxMjgsIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDc3LCA2OSwgNzYsIDc5LCAKLSAgICA3OCwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDEyOCwgODcsIDY1LCA4NCwgNjksIDIxMCwgODcsIDY1LCA4NCwgNjcsIAotICAgIDcyLCAxMjgsIDg3LCA2NSwgODQsIDEyOCwgODcsIDY1LCA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA4MywgCi0gICAgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIAotICAgIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAKLSAgICAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgCi0gICAgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKLSAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIDEyOCwgCisgICAgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAKKyAgICAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgCisgICAgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCAKKyAgICA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgNzMsIAorICAgIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCA2OCwgCisgICAgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgODksIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgCisgICAgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCA3MiwgCisgICAgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgOTAsIAorICAgIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCA3OSwgCisgICAgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCAKKyAgICA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCAKKyAgICA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIAorICAgIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgOTAsIAorICAgIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCA2NSwgCisgICAgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCA2OSwgCisgICAgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCA5MCwgCisgICAgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgMTI4LCAKKyAgICA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIAorICAgIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCA2NSwgCisgICAgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCAKKyAgICA4OCwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAKKyAgICAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgCisgICAgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAorICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgCisgICAgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgCisgICAgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgCisgICAgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgCisgICAgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgCisgICAgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgCisgICAgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgCisgICAgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgCisgICAgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAKKyAgICAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgCisgICAgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgCisgICAgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAKKyAgICAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCAKKyAgICA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIAorICAgIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKKyAgICA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgyLCA4OSwgMTI4LCA4OSwgCisgICAgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKKyAgICA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIAorICAgIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgCisgICAgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIAorICAgIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCAKKyAgICA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAorICAgIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIAorICAgIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgCisgICAgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCAKKyAgICA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCAKKyAgICA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCAKKyAgICA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCAKKyAgICA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIAorICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgCisgICAgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAKKyAgICAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIAorICAgIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgCisgICAgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCAKKyAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgCisgICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAorICAgIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCisgICAgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCAKKyAgICA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgCisgICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCAKKyAgICA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIAorICAgIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgCisgICAgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgCisgICAgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgCisgICAgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCAKKyAgICA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCAKKyAgICA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIAorICAgIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIAorICAgIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIAorICAgIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgCisgICAgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgCisgICAgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCAKKyAgICA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIAorICAgIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAKKyAgICAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAKKyAgICAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCAKKyAgICA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIAorICAgIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgCisgICAgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgCisgICAgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCAKKyAgICA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgCisgICAgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCAKKyAgICA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCAKKyAgICA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCAKKyAgICA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIAorICAgIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIAorICAgIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIAorICAgIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCAKKyAgICA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCAKKyAgICA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIAorICAgIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIAorICAgIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIAorICAgIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIAorICAgIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIAorICAgIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIAorICAgIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAorICAgIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgCisgICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAKKyAgICAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCAKKyAgICA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCAKKyAgICA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCAKKyAgICA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCAKKyAgICA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCAKKyAgICA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAorICAgIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgCisgICAgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgMTI4LCAKKyAgICA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIAorICAgIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgCisgICAgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCAKKyAgICA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIAorICAgIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgCisgICAgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIAorICAgIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIAorICAgIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgMjA2LCA4NywgCisgICAgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgCisgICAgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgCisgICAgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCAKKyAgICA3OCwgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIAorICAgIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgCisgICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIAorICAgIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgCisgICAgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAorICAgIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAKKyAgICAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCAKKyAgICA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIAorICAgIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIAorICAgIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIAorICAgIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNzEsIDY5LCAKKyAgICAxMjgsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjYsIDEyOCwgODcsIDY5LCA2NSwgODIsIAorICAgIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIAorICAgIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgODcsIAorICAgIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAKKyAgICAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCAKKyAgICA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIAorICAgIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgCisgICAgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCA4NCwgNjksIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIAorICAgIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgCisgICAgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCAKKyAgICA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MiwgNjUsIDc4LCAxOTksIAorICAgIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCisgICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKKyAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIAorICAgIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgCisgICAgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgCisgICAgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKICAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAogICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCiAgICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKQEAgLTI1OCwxMDAgKzI3NCwxMDIgQEAKICAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAogICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCiAgICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCi0gICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIAotICAgIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIAotICAgIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgCi0gICAgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgCi0gICAgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIAotICAgIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIAotICAgIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgCi0gICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgCi0gICAgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIAotICAgIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIAotICAgIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAKLSAgICAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCAKLSAgICA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIAotICAgIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgCi0gICAgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCAKLSAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgCi0gICAgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCi0gICAgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCi0gICAgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCi0gICAgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCi0gICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIAotICAgIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgCi0gICAgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIAotICAgIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDY3LCA2NSwgCi0gICAgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCAKLSAgICA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIAotICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIAorICAgIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIAorICAgIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgCisgICAgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIAorICAgIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIAorICAgIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgCisgICAgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIAorICAgIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIAorICAgIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgCisgICAgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIAorICAgIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgCisgICAgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAKKyAgICAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIAorICAgIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgCisgICAgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCAKICAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAogICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCiAgICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKQEAgLTM2MCwxMjMgKzM3OCwxMjcgQEAKICAgICA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIAogICAgIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgCiAgICAgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIAotICAgIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgCi0gICAgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIAotICAgIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCi0gICAgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCAKLSAgICA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzMsIDEyOCwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAotICAgIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIAotICAgIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCi0gICAgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCi0gICAgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCi0gICAgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIAotICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCAKLSAgICA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIAotICAgIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgCi0gICAgODMsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgCi0gICAgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAKLSAgICAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCAKLSAgICA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIAotICAgIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgCi0gICAgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgNjksIAotICAgIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCA3OCwgCi0gICAgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCAKLSAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3MywgCi0gICAgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIAotICAgIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIAotICAgIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCAKLSAgICA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgCi0gICAgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAKLSAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAotICAgIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgCi0gICAgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIAotICAgIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIAotICAgIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCAKLSAgICA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCAKLSAgICA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIAotICAgIDg1LCA4NSwgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgCi0gICAgODMsIDg1LCA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCAKLSAgICA4NSwgNzcsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIAotICAgIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIAotICAgIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIAotICAgIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgCi0gICAgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgCi0gICAgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCAKLSAgICA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCAKLSAgICA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCAKLSAgICA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIAotICAgIDIxMiwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAKLSAgICAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIAotICAgIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgCi0gICAgNzgsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCAKLSAgICA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIAotICAgIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNjgsIDIwNywgODUsIDc4LCA2OCwgCi0gICAgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCA3OCwgMTk3LCA4NSwgNzgsIDY4LCAKLSAgICA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDg1LCA3OCwgNjgsIAotICAgIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCA2OCwgCi0gICAgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIDY1LCAKLSAgICAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIDY5LCAKLSAgICA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCisgICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgCisgICAgODYsIDczLCA3NiwgNzYsIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA4NiwgNzMsIDY5LCA4NywgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIAorICAgIDg0LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIAorICAgIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgCisgICAgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCAKKyAgICA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIAorICAgIDEyOCwgODYsIDY5LCA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCAKKyAgICA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIAorICAgIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgCisgICAgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCAKKyAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAorICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCAKKyAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAorICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKKyAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCAKKyAgICA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIAorICAgIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAKKyAgICAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgCisgICAgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIAorICAgIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAKKyAgICAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIAorICAgIDEyOCwgODYsIDY1LCA3NCwgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCAKKyAgICA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCAKKyAgICA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIAorICAgIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCAKKyAgICA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIAorICAgIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgCisgICAgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgCisgICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKKyAgICA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIAorICAgIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgCisgICAgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCAKKyAgICA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIAorICAgIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgCisgICAgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIAorICAgIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgCisgICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCAKKyAgICA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIAorICAgIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgCisgICAgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCAKKyAgICA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCAKKyAgICA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCAKKyAgICA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIAorICAgIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIAorICAgIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIAorICAgIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCAKKyAgICA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIAorICAgIDc5LCAyMDYsIDg1LCA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgCisgICAgNzIsIDIxMiwgODUsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCAKKyAgICA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgCisgICAgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKKyAgICAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIAorICAgIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgCisgICAgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCAKKyAgICA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCA2OCwgMjA3LCA4NSwgNzgsIAorICAgIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIDc4LCAxOTcsIDg1LCA3OCwgCisgICAgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgODUsIDc4LCAKKyAgICA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjcsIAorICAgIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAKKyAgICA2OCwgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIAorICAgIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIAorICAgIDY5LCA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCiAgICAgMTI4LCA4NSwgNzUsIDg1LCAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCAKICAgICA4MiwgNjUsIDEyOCwgODUsIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIAogICAgIDc4LCA3OCwgMTI4LCA4NSwgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCkBAIC00OTksNTA1ICs1MjEsNTc2IEBACiAgICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgODUsIDQ4LCAKICAgICA0OCwgNTQsIDY2LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA4NSwgNDgsIAogICAgIDQ4LCA1MywgMTI4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA4NSwgNDgsIDQ4LCA1MCwgCi0gICAgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDczLCA0NSwgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCAKLSAgICA2OSwgODUsIDEyOCwgODUsIDQ1LCA2NiwgODIsIDc0LCA3MSwgODUsIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIAotICAgIDc5LCA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIAotICAgIDY5LCA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIAotICAgIDkwLCAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCAxODIsIAotICAgIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgxLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCAKLSAgICAxNzksIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCAKLSAgICA4NCwgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgCi0gICAgNjUsIDY4LCA2OSwgMTk2LCA4NCwgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCAKLSAgICA4NCwgODcsIDczLCA3MywgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIAotICAgIDc5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIAotICAgIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIAotICAgIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIAotICAgIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgCi0gICAgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIAotICAgIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCAKLSAgICA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCAKLSAgICA4NCwgODUsIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIAotICAgIDg0LCAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgCi0gICAgNjksIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIAotICAgIDEyOCwgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgCi0gICAgMjAwLCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAKLSAgICAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIAotICAgIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgCi0gICAgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCAKLSAgICA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIAotICAgIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIAotICAgIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgCi0gICAgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCAKLSAgICA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIAotICAgIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIAotICAgIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCAKLSAgICA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIAotICAgIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIAotICAgIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAKLSAgICAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIAotICAgIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIAotICAgIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgCi0gICAgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgCi0gICAgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCAKLSAgICA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgCi0gICAgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCAKLSAgICA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgCi0gICAgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIAotICAgIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgCi0gICAgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIAotICAgIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgCi0gICAgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCAKLSAgICA3MywgODQsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIAotICAgIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDgyLCA3MywgCi0gICAgODAsIDc5LCA2OCwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgMTk3LCAKLSAgICA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIAotICAgIDY1LCA3NywgNzcsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgCi0gICAgNzEsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCAKLSAgICA3OSwgNzYsIDczLCA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIAotICAgIDY5LCA3OCwgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgCi0gICAgODUsIDc2LCA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgCi0gICAgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIAotICAgIDc4LCA2OCwgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAKLSAgICAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIAotICAgIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAKLSAgICAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIAotICAgIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDIxMiwgODQsIDgyLCA2NSwgCi0gICAgNzgsIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIAotICAgIDgzLCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzcsIDg3LCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgNzcsIDEyOCwgCi0gICAgODQsIDgyLCA2NSwgMjA1LCA4NCwgODIsIDY1LCA3MywgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzMsIDIwNiwgODQsIDgyLCAKLSAgICA2NSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgODQsIDgyLCA2NSwgNzAsIDcwLCA3MywgNjcsIDEyOCwgODQsIDgyLCA2NSwgNzAsIAotICAgIDcwLCA3MywgMTk1LCA4NCwgODIsIDY1LCA2OCwgMTk3LCA4NCwgODIsIDY1LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4NCwgCi0gICAgODIsIDY1LCA2NywgNzUsIDEyOCwgODQsIDgyLCAxMjgsIDg0LCA3OSwgODgsIDEyOCwgODQsIDc5LCA4NywgNjksIDgyLCAKLSAgICAxMjgsIDg0LCA3OSwgODUsIDgyLCA3OCwgNzksIDczLCAyMTEsIDg0LCA3OSwgODQsIDY1LCAyMDQsIDg0LCA3OSwgODQsIAotICAgIDEyOCwgODQsIDc5LCA4MiwgODQsIDc5LCA3MywgODMsIDE5NywgODQsIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDgzLCAKLSAgICAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCAyMTEsIDg0LCA3OSwgODIsIDY3LCA3MiwgMTI4LCA4NCwgNzksIAotICAgIDgxLCAxMjgsIDg0LCA3OSwgODAsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCA4MCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgNjksIDE5NiwgODQsIDc5LCA4MCwgMTI4LCA4NCwgNzksIDIwOCwgODQsIDc5LCA3OSwgODQsIDcyLCAxMjgsIDg0LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCAKLSAgICA3OSwgNzgsIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIAotICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgCi0gICAgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgCi0gICAgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCAKLSAgICA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIAotICAgIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgCi0gICAgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIAotICAgIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCi0gICAgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCAKLSAgICA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2NSwgMTI4LCA4NCwgNzYsIAotICAgIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCA4OCwgMTI4LCA4NCwgNzMsIAotICAgIDg3LCA3OCwgMTI4LCA4NCwgNzMsIDg3LCA2NSwgMjE4LCA4NCwgNzMsIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgCi0gICAgNzMsIDg0LCA3NiwgNzksIDEyOCwgODQsIDczLCA4NCwgMTkzLCA4NCwgNzMsIDg0LCAxMjgsIDg0LCA3MywgODIsIDg5LCAKLSAgICA2NSwgNzUsIDEyOCwgODQsIDczLCA4MiwgODQsIDE5MywgODQsIDczLCA4MiwgNzksIDc4LCA3MywgNjUsIDIwNiwgODQsIAotICAgIDczLCA4MiwgNjksIDE5NiwgODQsIDczLCA4MiwgMTI4LCA4NCwgNzMsIDIxMCwgODQsIDczLCA4MCwgODAsIDczLCAxMjgsIAotICAgIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgCi0gICAgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCAKLSAgICA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgCi0gICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgCi0gICAgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKLSAgICA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCi0gICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgCi0gICAgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIAotICAgIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgCi0gICAgODUsIDIxMiwgODQsIDczLCA3MSwgNzIsIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCAKLSAgICA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIAotICAgIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgCi0gICAgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgCi0gICAgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCAKLSAgICA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIAotICAgIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCAKLSAgICA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgCi0gICAgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCAKLSAgICA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIAotICAgIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCAKLSAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgCi0gICAgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKLSAgICA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIAotICAgIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgCi0gICAgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCAKLSAgICA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCAKLSAgICA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIAotICAgIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgCi0gICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAKLSAgICAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCi0gICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKLSAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAotICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgCi0gICAgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCAKLSAgICA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIAotICAgIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgCi0gICAgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCAKLSAgICA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIAotICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIAotICAgIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCi0gICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKLSAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCi0gICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAotICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCi0gICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKLSAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIAotICAgIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKLSAgICAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCAKLSAgICA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIAotICAgIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgCi0gICAgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKLSAgICA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIAotICAgIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAKLSAgICAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgCi0gICAgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgCi0gICAgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCAKLSAgICA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIAotICAgIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIAotICAgIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgCi0gICAgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCAKLSAgICA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIAotICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgCisgICAgMTI4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4NSwgNDUsIDczLCAKKyAgICA0NSwgNzMsIDEyOCwgODUsIDQ1LCA2OSwgNzksIDQ1LCA2OSwgODUsIDEyOCwgODUsIDQ1LCA2NiwgODIsIDc0LCA3MSwgODUsIAorICAgIDEyOCwgODQsIDkwLCA4NSwgMTI4LCA4NCwgOTAsIDc5LCA2NSwgMTI4LCA4NCwgOTAsIDc5LCAxMjgsIDg0LCA5MCwgNzMsIAorICAgIDIxMCwgODQsIDkwLCA3MywgMTI4LCA4NCwgOTAsIDY5LCA2OSwgMTI4LCA4NCwgOTAsIDY5LCAxMjgsIDg0LCA5MCwgNjUsIAorICAgIDY1LCAxMjgsIDg0LCA5MCwgNjUsIDEyOCwgODQsIDkwLCAxMjgsIDg0LCA4OSwgMjEwLCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE4MywgODQsIDg5LCA4MCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgODQsIDg5LCA4MCwgCisgICAgNjksIDQ1LCA1MywgMTI4LCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCA1MiwgMTI4LCAKKyAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE4MCwgODQsIDg5LCA4MCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgNDksIDQ1LCA1MCwgMTI4LCA4NCwgCisgICAgODksIDgwLCA2OSwgNDUsIDE3NywgODQsIDg5LCA4MCwgMTk3LCA4NCwgODksIDc5LCAxMjgsIDg0LCA4OSwgNzMsIDEyOCwgCisgICAgODQsIDg5LCA2OSwgMTI4LCA4NCwgODksIDY1LCA4OSwgMTI4LCA4NCwgODksIDY1LCAxMjgsIDg0LCA4OCwgODcsIDg2LCAKKyAgICAxMjgsIDg0LCA4OCwgODcsIDIxNCwgODQsIDg4LCA3MiwgNjksIDY5LCAyMDIsIDg0LCA4NywgNzksIDc5LCAxMjgsIDg0LCAKKyAgICA4NywgNzksIDQ1LCA4NywgNjUsIDIxNywgODQsIDg3LCA3OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDg3LCA3OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NCwgCisgICAgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgODcsIDczLCAKKyAgICA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgCisgICAgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgCisgICAgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCAKKyAgICA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCisgICAgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCisgICAgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgCisgICAgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCAKKyAgICA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc2LCA3MCwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgCisgICAgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCAKKyAgICA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIAorICAgIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCAKKyAgICA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIAorICAgIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgODQsIDg1LCA4MiwgCisgICAgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgMTI4LCAKKyAgICA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgODQsIAorICAgIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgCisgICAgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAKKyAgICAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCAKKyAgICA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIAorICAgIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIAorICAgIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAKKyAgICAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCAKKyAgICA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIAorICAgIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgCisgICAgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgCisgICAgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgCisgICAgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCAKKyAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIAorICAgIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIAorICAgIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgCisgICAgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAKKyAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIAorICAgIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgCisgICAgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKKyAgICA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIAorICAgIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgCisgICAgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCAKKyAgICA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgCisgICAgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKKyAgICA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgCisgICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgCisgICAgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCAKKyAgICA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCisgICAgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKKyAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAKKyAgICAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIAorICAgIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgCisgICAgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIAorICAgIDc5LCA4NSwgMTI4LCA4NCwgODIsIDczLCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzksIDY4LCAKKyAgICAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDgyLCA3MywgODAsIDc2LCA2OSwgMTI4LCA4NCwgODIsIAorICAgIDczLCA4MCwgNzYsIDE5NywgODQsIDgyLCA3MywgNzksIDIwNiwgODQsIDgyLCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCAKKyAgICA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgCisgICAgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4NiwgNjksIDc2LCA0NSwgODcsIDY1LCA3NiwgNzYsIAorICAgIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg0LCA4MiwgNjUsIDg2LCA2OSwgNzYsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCAKKyAgICA3NiwgNjUsIDc4LCAxOTcsIDg0LCA4MiwgNjUsIDgwLCA2OSwgOTAsIDczLCA4NSwgNzcsIDEyOCwgODQsIDgyLCA2NSwgNzgsIAorICAgIDgzLCA4NiwgNjksIDgyLCA4MywgNjUsIDIwNCwgODQsIDgyLCA2NSwgNzgsIDgzLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgMjEyLCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIAorICAgIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA4NCwgCisgICAgODIsIDY1LCA3NywgODcsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA3NywgMTI4LCA4NCwgODIsIDY1LCAyMDUsIDg0LCAKKyAgICA4MiwgNjUsIDczLCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3MywgMjA2LCA4NCwgODIsIDY1LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA4NCwgODIsIDY1LCA3MCwgNzAsIDczLCA2NywgMTI4LCA4NCwgODIsIDY1LCA3MCwgNzAsIDczLCAxOTUsIDg0LCAKKyAgICA4MiwgNjUsIDY4LCAxOTcsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzksIDgyLCAxMjgsIDg0LCA4MiwgNjUsIDY3LCA3NSwgNjYsIAorICAgIDY1LCA3NiwgNzYsIDEyOCwgODQsIDgyLCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNjUsIDEyOCwgODQsIDgyLCAxMjgsIAorICAgIDg0LCA3OSwgODgsIDEyOCwgODQsIDc5LCA4NywgNjksIDgyLCAxMjgsIDg0LCA3OSwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCisgICAgODQsIDc5LCA4NiwgMTI4LCA4NCwgNzksIDg1LCA4MiwgNzgsIDc5LCA3MywgMjExLCA4NCwgNzksIDg1LCA2NywgNzIsIDg0LCAKKyAgICA3OSwgNzgsIDE5NywgODQsIDc5LCA4NSwgNjcsIDcyLCA3MywgNzgsIDE5OSwgODQsIDc5LCA4NSwgNjcsIDcyLCA2OSwgCisgICAgMjExLCA4NCwgNzksIDg1LCA2NywgMjAwLCA4NCwgNzksIDg0LCA2NSwgMjA0LCA4NCwgNzksIDg0LCAxMjgsIDg0LCA3OSwgCisgICAgODMsIDEyOCwgODQsIDc5LCA4MiwgODQsIDc5LCA3MywgODMsIDE5NywgODQsIDc5LCA4MiwgODMsIDc5LCA0NSwgODcsIDY1LCAKKyAgICA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg0LCA3OSwgODIsIDgzLCA3OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgCisgICAgODAsIDc2LCA2NSwgNzgsIDE5NywgODQsIDc5LCA4MiwgODMsIDc5LCAxMjgsIDg0LCA3OSwgODIsIDc4LCA2NSwgNjgsIDc5LCAKKyAgICAxMjgsIDg0LCA3OSwgODIsIDY3LCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNzksIDgyLCA2NywgODUsIDc2LCA4NSwgCisgICAgMjExLCA4NCwgNzksIDgyLCA2NywgNzIsIDEyOCwgODQsIDc5LCA4MSwgMTI4LCA4NCwgNzksIDgwLCA2NiwgNjUsIDgyLCAKKyAgICAxMjgsIDg0LCA3OSwgODAsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDg0LCA3OSwgODAsIDEyOCwgODQsIAorICAgIDc5LCAyMDgsIDg0LCA3OSwgNzksIDg0LCA3MiwgMTI4LCA4NCwgNzksIDc5LCA3OCwgMTI4LCA4NCwgNzksIDc4LCA3OSwgCisgICAgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDE5NywgODQsIDc5LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NiwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU1LCAxMjgsIAorICAgIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTQsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MywgMTI4LCA4NCwgNzksIDc4LCA2OSwgCisgICAgNDUsIDUyLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MCwgMTI4LCAKKyAgICA4NCwgNzksIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIDY1LCAyMDQsIAorICAgIDg0LCA3OSwgNzcsIDgwLCA3MywgMTI4LCA4NCwgNzksIDc3LCA2NSwgODQsIDc5LCAxMjgsIDg0LCA3OSwgNzYsIDc5LCA3OCwgCisgICAgNzEsIDEyOCwgODQsIDc5LCA3NSwgODksIDIwNywgODQsIDc5LCA3MywgNzYsIDY5LCA4NCwgMTI4LCA4NCwgNzksIDcxLCAKKyAgICA2OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgODQsIDc5LCA2OCwgMjA3LCA4NCwgNzksIDY1LCA3OCwgNjgsIDY1LCA3NSwgNzIsIAorICAgIDczLCA2NSwgODQsIDEyOCwgODQsIDc5LCA2NSwgMTI4LCA4NCwgNzgsIDEyOCwgODQsIDc2LCA4NiwgMTI4LCA4NCwgNzYsIAorICAgIDg1LCAxMjgsIDg0LCA3NiwgNzksIDEyOCwgODQsIDc2LCA3MywgMTI4LCA4NCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgODQsIAorICAgIDc2LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA3NiwgNzIsIDg1LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgCisgICAgNzYsIDcyLCA3OSwgMTI4LCA4NCwgNzYsIDcyLCA3MywgMTI4LCA4NCwgNzYsIDcyLCA2OSwgNjksIDEyOCwgODQsIDc2LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDc2LCA3MiwgNjUsIDEyOCwgODQsIDc2LCA2OSwgNjksIDEyOCwgODQsIDc2LCA2NSwgMTI4LCAKKyAgICA4NCwgNzQsIDY5LCAxMjgsIDg0LCA3MywgODgsIDEyOCwgODQsIDczLCA4NywgODIsIDEyOCwgODQsIDczLCA4NywgNzgsIAorICAgIDEyOCwgODQsIDczLCA4NywgNjUsIDIxOCwgODQsIDczLCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDczLCA4NCwgCisgICAgNzYsIDc5LCAxMjgsIDg0LCA3MywgODQsIDc2LCAyMDcsIDg0LCA3MywgODQsIDE5MywgODQsIDczLCA4NCwgMTI4LCA4NCwgCisgICAgNzMsIDgyLCA4OSwgNjUsIDc1LCAxMjgsIDg0LCA3MywgODIsIDg0LCAxOTMsIDg0LCA3MywgODIsIDc5LCA3OCwgNzMsIDY1LCAKKyAgICAyMDYsIDg0LCA3MywgODIsIDcyLCA4NSwgODQsIDE5MywgODQsIDczLCA4MiwgNjksIDE5NiwgODQsIDczLCA4MiwgMTI4LCAKKyAgICA4NCwgNzMsIDIxMCwgODQsIDczLCA4MCwgODAsIDczLCAxMjgsIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIAorICAgIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIAorICAgIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgCisgICAgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCAKKyAgICA2OSwgMTI4LCA4NCwgNzMsIDc2LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNzMsIDc2LCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MywgNzYsIDg0LCAxMjgsIDg0LCA3MywgNzYsIDY5LCA4MywgMTI4LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCisgICAgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCisgICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODQsIAorICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAyMTIsIDg0LCA3MywgNzEsIDcyLCA4NCwgNzYsIDg5LCA0NSwgNjcsIAorICAgIDc2LCA3OSwgODMsIDY5LCAxOTYsIDg0LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA3MywgNzEsIDY5LCA4MiwgMTI4LCA4NCwgCisgICAgNzMsIDcxLCA2OSwgMjEwLCA4NCwgNzMsIDcwLCA3MywgNzgsIDY1LCA3MSwgMjAwLCA4NCwgNzMsIDY5LCA4OCwgMTI4LCAKKyAgICA4NCwgNzMsIDY5LCA4MCwgMTI4LCA4NCwgNzMsIDE5NywgODQsIDczLCA2NywgNzUsIDY5LCA4NCwgODMsIDEyOCwgODQsIAorICAgIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA4NCwgNzMsIDY3LCAyMDMsIDg0LCA3MywgCisgICAgNjUsIDgyLCA2NSwgMTI4LCA4NCwgNzMsIDUwLCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAKKyAgICAyMDUsIDg0LCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIAorICAgIDEyOCwgODQsIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCAKKyAgICA2NSwgMjE4LCA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIAorICAgIDgyLCA3NywgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAKKyAgICAyMTAsIDg0LCA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDg1LCA3NywgNjYsIDEyOCwgODQsIDcyLCA4MiwgNzksIAorICAgIDg3LCA3MywgNzgsIDE5OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgCisgICAgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA3MiwgODIsIDY5LCAKKyAgICA2OSwgNDUsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgCisgICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAKKyAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgCisgICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCAKKyAgICA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgCisgICAgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgCisgICAgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCAKKyAgICA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIAorICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgCisgICAgNzEsIDE5NywgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCAKKyAgICA3NSwgNzMsIDc4LCAxOTksIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIAorICAgIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgCisgICAgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIAorICAgIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgCisgICAgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCAKKyAgICA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgCisgICAgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCAKKyAgICA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIAorICAgIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIAorICAgIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgCisgICAgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCAKKyAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIAorICAgIDY1LCA3NCwgMTI4LCA4NCwgNzIsIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgCisgICAgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIAorICAgIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgCisgICAgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIAorICAgIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgCisgICAgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCAKKyAgICA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIAorICAgIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgCisgICAgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCAKKyAgICA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIAorICAgIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgCisgICAgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCAKKyAgICA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIAorICAgIDY5LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIAorICAgIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgCisgICAgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCAKKyAgICA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIAorICAgIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKKyAgICAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA2OSwgNzYsIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgCisgICAgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAKKyAgICAyMDAsIDg0LCA2OSwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCAKKyAgICA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIAorICAgIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgCisgICAgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCAKKyAgICA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgCisgICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKKyAgICA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAKKyAgICAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIAorICAgIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgCisgICAgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAKKyAgICAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIAorICAgIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgCiAgICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKLSAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAotICAgIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgCi0gICAgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCAKLSAgICA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCAKLSAgICA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIAotICAgIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgCi0gICAgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCAKLSAgICA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgCi0gICAgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgCi0gICAgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCAKLSAgICA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIAotICAgIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgCi0gICAgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCAKLSAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAotICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIAotICAgIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgCi0gICAgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAKLSAgICAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgCi0gICAgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIAotICAgIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIAotICAgIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIAotICAgIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIAotICAgIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAKLSAgICAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCAKLSAgICA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIAotICAgIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgCi0gICAgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIAotICAgIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDg5LCAKLSAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU1LCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKLSAgICA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDQ4LCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAotICAgIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDksIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDksIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgCi0gICAgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIAotICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCAKLSAgICA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIAotICAgIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgCi0gICAgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCAKLSAgICA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIAotICAgIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAKLSAgICA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgCi0gICAgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCAKLSAgICA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIAotICAgIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCAKLSAgICA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgCi0gICAgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgCi0gICAgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCAKLSAgICA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCAKLSAgICAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgCi0gICAgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAKLSAgICA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCAKLSAgICA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDcyLCA4NSwgODIsIAotICAgIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAotICAgIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgCi0gICAgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIAotICAgIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgCi0gICAgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCAKLSAgICA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIAotICAgIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgCi0gICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAotICAgIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCAKLSAgICA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAotICAgIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgCi0gICAgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCAKLSAgICAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAotICAgIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKLSAgICAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCi0gICAgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIAotICAgIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIAotICAgIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCAKLSAgICA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIAotICAgIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIAotICAgIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgCi0gICAgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCAKLSAgICA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAKLSAgICAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIAotICAgIDEyOCwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgCi0gICAgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCAKLSAgICA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIAotICAgIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIAotICAgIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgCi0gICAgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCAKLSAgICA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIAotICAgIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIAotICAgIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgCi0gICAgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCAKLSAgICA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIAotICAgIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgCi0gICAgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCAKLSAgICA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIAotICAgIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKLSAgICA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAotICAgIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIAotICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgCi0gICAgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIAotICAgIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAKLSAgICAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIAotICAgIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgCi0gICAgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIAotICAgIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCAKLSAgICA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgODIsIAotICAgIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIDEyOCwgCi0gICAgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgNjgsIDY5LCAKLSAgICA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAKKyAgICAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCAKKyAgICA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgCisgICAgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCAKKyAgICA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIAorICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgCisgICAgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCAKKyAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIAorICAgIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgCisgICAgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgCisgICAgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCAKKyAgICA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIAorICAgIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgCisgICAgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIAorICAgIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIAorICAgIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgCisgICAgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCAKKyAgICA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgCisgICAgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCAKKyAgICA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAKKyAgICAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAKKyAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgCisgICAgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAKKyAgICAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAKKyAgICAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgCisgICAgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIAorICAgIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgCisgICAgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgCisgICAgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAorICAgIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgCisgICAgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCisgICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKKyAgICA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgCisgICAgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIAorICAgIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIAorICAgIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgCisgICAgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgCisgICAgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCAKKyAgICA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgCisgICAgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCAKKyAgICA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKKyAgICA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgCisgICAgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCAKKyAgICA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIAorICAgIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgCisgICAgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIAorICAgIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgCisgICAgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCAKKyAgICA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIAorICAgIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgCisgICAgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgCisgICAgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCAKKyAgICA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIAorICAgIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgCisgICAgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgCisgICAgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAorICAgIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAKKyAgICAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIAorICAgIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIAorICAgIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgCisgICAgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIAorICAgIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCAKKyAgICA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCAKKyAgICA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgCisgICAgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAorICAgIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAxMjgsIDgzLCA4NSwgCisgICAgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgCisgICAgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCAKKyAgICA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKKyAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgCisgICAgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCAKKyAgICA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIAorICAgIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgCisgICAgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCAKKyAgICA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKKyAgICA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIAorICAgIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgCisgICAgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCAKKyAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIAorICAgIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgCisgICAgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAKKyAgICAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgCisgICAgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCAKKyAgICA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIAorICAgIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgCisgICAgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgCisgICAgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCAKKyAgICA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIAorICAgIDc3LCA4MCwgNjksIDE5NiwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCAKKyAgICA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgCisgICAgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgCisgICAgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCAKKyAgICA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCAKKyAgICA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIAorICAgIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCAKKyAgICA3MywgMTI4LCA4MywgODMsIDcyLCA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIAorICAgIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgODUsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3MywgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgCisgICAgNTAsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCAKKyAgICA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAorICAgIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgODEsIDg1LCA2NSwgCisgICAgODIsIDY5LCA4MywgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAKKyAgICAxMjgsIDgzLCA4MCwgODksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCAKKyAgICA4MCwgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA4MiwgCisgICAgNjksIDY1LCA2OCwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjUsIDE5NiwgODMsIDgwLCA3OSwgODUsIDg0LCA3MywgNzgsIAorICAgIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgODMsIDgwLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA4MCwgNzksIDc5LCA3OCwgCisgICAgMTI4LCA4MywgODAsIDc2LCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3NiwgNzMsIDg0LCAxMjgsIDgzLCAKKyAgICA4MCwgNzYsIDczLCAyMTIsIDgzLCA4MCwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgzLCA4MCwgNzYsIDY1LCA4MywgNzIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MywgODAsIAorICAgIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCA3OCwgNjksIDEyOCwgCisgICAgODMsIDgwLCA3MywgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNzMsIDY4LCAKKyAgICA2OSwgMjEwLCA4MywgODAsIDczLCA2NywgNjksIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIAogICAgIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgCiAgICAgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCAKLSAgICA2NSwgNzYsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCAKLSAgICA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgCi0gICAgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCAKLSAgICA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIAotICAgIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgCi0gICAgODMsIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCAKLSAgICA4MiwgMTkzLCA4MywgNzksIDgxLCAxMjgsIDgzLCA3OSwgNzksIDIwNiwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCAKLSAgICA4MywgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDgwLCA2OSwgNzgsIDE5OSwgODMsIAotICAgIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAKLSAgICAyMTEsIDgzLCA3OSwgNzIsIDEyOCwgODMsIDc5LCA3MSwgNjgsIDczLCA2NSwgMjA2LCA4MywgNzksIDcwLCA4NCwgODcsIAotICAgIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNzksIDcwLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCA4MywgNzksIDE5OCwgODMsIDc5LCA2NywgNzMsIDY5LCA4NCwgODksIAotICAgIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIDgzLCA3OSwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgNjUsIDEyOCwgODMsIAotICAgIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgCi0gICAgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgCi0gICAgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgCi0gICAgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIAotICAgIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgCi0gICAgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCAKLSAgICA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIAotICAgIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCAKLSAgICA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIAorICAgIDY1LCA3NiwgMTI4LCA4MywgODAsIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgMjEwLCA4MywgODAsIDY5LCAKKyAgICA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgODMsIAorICAgIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgCisgICAgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDEyOCwgODMsIDgwLCAKKyAgICA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIAorICAgIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgODMsIDgwLCA2NSwgCisgICAgMTI4LCA4MywgNzksIDg5LCAxMjgsIDgzLCA3OSwgODcsIDczLCA3NiwgMjA3LCA4MywgNzksIDg3LCAxMjgsIDgzLCA3OSwgCisgICAgODUsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDgzLCA3OSwgODUsIDg0LCA3MiwgNDUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMjE3LCAKKyAgICA4MywgNzksIDg1LCA4NCwgMjAwLCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgzLCA3OSwgODUsIDc4LCA2OCwgCisgICAgMTI4LCA4MywgNzksIDg1LCA3OCwgMTk2LCA4MywgNzksIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgODUsIDEyOCwgCisgICAgODMsIDc5LCA4MywgMTI4LCA4MywgNzksIDgyLCAxOTMsIDgzLCA3OSwgODEsIDEyOCwgODMsIDc5LCA3OSwgMjA2LCA4MywgCisgICAgNzksIDc4LCA3NCwgNjUsIDc3LCAxMjgsIDgzLCA3OSwgNzgsIDcxLCAxMjgsIDgzLCA3OSwgNzgsIDEyOCwgODMsIDc5LCAKKyAgICA3NywgODAsIDY5LCA3OCwgMTk5LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDgzLCAxMjgsIAorICAgIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3NiwgNzMsIDE5NiwgODMsIDc5LCA3MiwgMTI4LCA4MywgCisgICAgNzksIDcxLCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OSwgNDUsIDcwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA3OSwgNzAsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzksIDcwLCAKKyAgICAyMTIsIDgzLCA3OSwgMTk4LCA4MywgNzksIDY3LCA3MywgNjksIDg0LCA4OSwgMTI4LCA4MywgNzksIDY3LCA2NywgNjksIAorICAgIDIxMCwgODMsIDc5LCA2NSwgODAsIDEyOCwgODMsIDc5LCA2NSwgMTI4LCA4MywgMjA3LCA4MywgNzgsIDc5LCA4NywgNzcsIAorICAgIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgCisgICAgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDIxNSwgODMsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCAKKyAgICA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIAorICAgIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgCisgICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIAorICAgIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgCisgICAgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCAKKyAgICA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIAorICAgIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCAKKyAgICA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAorICAgIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAKICAgICAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIAogICAgIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgCiAgICAgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCAKICAgICA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIAogICAgIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCAKLSAgICA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAyMTcsIDgzLCA3MywgODgsIAotICAgIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIDg0LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIAotICAgIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKLSAgICAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgNDUsIDgwLCA2OSwgODIsIAotICAgIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDIxNiwgODMsIDczLCA4NCwgCi0gICAgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgODUsIDEyOCwgODMsIDczLCAKLSAgICA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCAKLSAgICA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgCi0gICAgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCAKLSAgICA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgCi0gICAgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIAotICAgIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgCi0gICAgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAKLSAgICAyMDYsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIAotICAgIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgCi0gICAgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIAotICAgIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAKLSAgICAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCAKLSAgICA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIAotICAgIDczLCA3MSwgNzcsIDE5MywgODMsIDczLCA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgCi0gICAgMTgwLCA4MywgNzMsIDcxLCAxMjgsIDgzLCA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAKLSAgICAyMTEsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNjYsIDE5NywgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIAotICAgIDcyLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgCi0gICAgODksIDY5LCAxMjgsIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAKLSAgICAxMjgsIDgzLCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODMsIDcyLCA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCA3MiwgCi0gICAgODUsIDg0LCAxMjgsIDgzLCA3MiwgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc5LCAxMjgsIDgzLCA3MiwgODUsIDc3LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCisgICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgCisgICAgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAorICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKKyAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAorICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKKyAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCisgICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKKyAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAorICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCisgICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCisgICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAorICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgCisgICAgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAorICAgIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCisgICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCAKKyAgICA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCA4MywgCisgICAgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgODAsIDc2LCAKKyAgICA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIAorICAgIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgCisgICAgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCAKKyAgICA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAorICAgIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCAKKyAgICA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIAorICAgIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIAorICAgIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIDEyOCwgCisgICAgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIAorICAgIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIAorICAgIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIAorICAgIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCAKKyAgICA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgODQsIDg0LCA3NiwgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIAorICAgIDc3LCAxMjgsIDgzLCA3MiwgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCiAgICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCAKICAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCAKICAgICA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIAogICAgIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCA3MiwgNzksIDg3LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgCi0gICAgNzIsIDc5LCA4MiwgODQsIDgzLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDY5LCAKLSAgICA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIDEyOCwgODMsIDcyLCA3OSwgODIsIAotICAgIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCAKLSAgICA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4MywgCi0gICAgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OSwgODMsIDIxMSwgODMsIDcyLCAKLSAgICA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAxOTYsIDgzLCA3MiwgNzksIDgyLCA4NCwgCi0gICAgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIAotICAgIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCAKLSAgICA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgCi0gICAgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDIxMiwgODMsIDcyLCAKLSAgICA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgODQsIAotICAgIDczLCA3OCwgMTk5LCA4MywgNzIsIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIDEyOCwgODMsIDcyLCA3OSwgCi0gICAgNzEsIDIwMSwgODMsIDcyLCA3OSwgMTk5LCA4MywgNzIsIDc5LCA2OSwgMTI4LCA4MywgNzIsIDc5LCAxOTcsIDgzLCA3MiwgCi0gICAgNzksIDY1LCAxMjgsIDgzLCA3MiwgNzksIDEyOCwgODMsIDcyLCA3MywgODksIDg5LCA2NSwgNjUsIDc2LCA2NSwgNjUsIAorICAgIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgCisgICAgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAorICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MywgCisgICAgNzIsIDc5LCA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIAorICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgCisgICAgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4NCwgODksIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIAorICAgIDg3LCA3MywgNzEsIDQ1LCA4MywgNzksIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCAKKyAgICA3OSwgODMsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3OCwgNjUsIDg1LCAxOTYsIAorICAgIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA4MywgNzIsIDc5LCA4MiwgCisgICAgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY2LCA3NCwgNjUsIDgyLCA3NSwgNjUsIDIwNiwgODMsIDcyLCA3OSwgODIsIAorICAgIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA2NSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDEyOCwgODMsIDcyLCA3OSwgCisgICAgODIsIDIxMiwgODMsIDcyLCA3OSwgODEsIDEyOCwgODMsIDcyLCA3OSwgMjA5LCA4MywgNzIsIDc5LCA4MCwgODAsIDczLCAKKyAgICA3OCwgMTk5LCA4MywgNzIsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgODQsIDczLCA3OCwgMTk5LCA4MywgNzIsIAorICAgIDc5LCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgNzksIDczLCAxMjgsIDgzLCA3MiwgNzksIDc5LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCA3OSwgMTk3LCA4MywgCisgICAgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIDY1LCA3NiwgNjUsIDY1LCAKICAgICAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgNzIsIDczLCA4MiwgMjEyLCAKICAgICA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCA3MiwgNzMsIDIxMCwgODMsIAotICAgIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAyMDcsIDgzLCA3MiwgCi0gICAgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIDc4LCAxMjgsIDgzLCAKLSAgICA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAxOTMsIDgzLCA3MiwgNzMsIAotICAgIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDczLCAxMjgsIAotICAgIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIDcyLCA3MywgNjgsIDEyOCwgCi0gICAgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIDgzLCA3MiwgNjksIDg4LCAKLSAgICAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODUsIAotICAgIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgMjEyLCA4MywgNzIsIDY5LCA4MywgNzIsIDc2LCA2NSwgNzcsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgNzEsIAotICAgIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgMTk5LCA4MywgNzIsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDgzLCA3MiwgMTI4LCA4MywgNzIsIDY5LCA4MSwgNjksIDIwNCwgODMsIDcyLCA2OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA2OSwgNzgsIDEyOCwgODMsIDcyLCA2OSwgNzYsIDc2LCAxMjgsIDgzLCA3MiwgNjksIDc2LCAyMDQsIDgzLCA3MiwgNjksIAotICAgIDc2LCA3MCwgMTI4LCA4MywgNzIsIDY5LCA3MywgMTI4LCA4MywgNzIsIDY5LCA3MSwgNTcsIDEyOCwgODMsIDcyLCA2OSwgCi0gICAgNjksIDgwLCAxMjgsIDgzLCA3MiwgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDcyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCAKLSAgICA3MiwgNjksIDY5LCAyMDYsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDE5NywgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCAKLSAgICA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgODMsIDcyLCA2NSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIDgyLCA4MCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCAKLSAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgCi0gICAgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAKLSAgICAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCAKLSAgICA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAorICAgIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgCisgICAgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDc3LCAxOTMsIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIAorICAgIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgCisgICAgNjgsIDEyOCwgODMsIDcyLCA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgCisgICAgNzIsIDcyLCAxOTMsIDgzLCA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgODMsIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIAorICAgIDg1LCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODMsIDcyLCA2OSwgODQsIDEyOCwgODMsIDcyLCA2OSwgMjEyLCA4MywgNzIsIDY5LCA4MywgNzIsIDc2LCA2NSwgNzcsIAorICAgIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgNzEsIDEyOCwgODMsIDcyLCA2OSwgODMsIDcyLCA3MywgMTk5LCA4MywgCisgICAgNzIsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgMTI4LCA4MywgNzIsIDY5LCA4MywgMjAwLCAKKyAgICA4MywgNzIsIDY5LCA4MSwgNjksIDIwNCwgODMsIDcyLCA2OSwgODAsIDEyOCwgODMsIDcyLCA2OSwgNzgsIDEyOCwgODMsIAorICAgIDcyLCA2OSwgNzYsIDc2LCAxMjgsIDgzLCA3MiwgNjksIDc2LCAyMDQsIDgzLCA3MiwgNjksIDc2LCA3MCwgMTI4LCA4MywgCisgICAgNzIsIDY5LCA3MywgMTI4LCA4MywgNzIsIDY5LCA3MSwgNTcsIDEyOCwgODMsIDcyLCA2OSwgNjksIDgwLCAxMjgsIDgzLCAKKyAgICA3MiwgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDcyLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MiwgNjksIDY5LCAyMDYsIAorICAgIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIDY1LCA4NCwgMTI4LCA4MywgNzIsIDE5NywgCisgICAgODMsIDcyLCA2NywgNzIsIDc5LCA3OSwgNzMsIDEyOCwgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgCisgICAgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIAorICAgIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgCisgICAgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCAKKyAgICA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCAKKyAgICA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCAKKyAgICA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAogICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgCiAgICAgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAKICAgICAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIApAQCAtMTAwNywxMTk5ICsxMTAwLDEzNjQgQEAKICAgICA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIAogICAgIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgCiAgICAgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCAKLSAgICA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIAotICAgIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgCi0gICAgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCAKLSAgICA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgCi0gICAgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIAotICAgIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgCi0gICAgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgCi0gICAgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIAotICAgIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgCi0gICAgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCAKLSAgICA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIAotICAgIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIAotICAgIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgCi0gICAgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCAKLSAgICA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIAotICAgIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAKLSAgICAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIAotICAgIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIAotICAgIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCAKLSAgICA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIAotICAgIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgCi0gICAgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCAKLSAgICA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIAotICAgIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCAKLSAgICA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIAotICAgIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIAotICAgIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgCi0gICAgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCAKLSAgICA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIAotICAgIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgCi0gICAgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAKLSAgICAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgCi0gICAgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCAKLSAgICA2NSwgNzUsIDc5LCA4NCwgMTI4LCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAxOTcsIAotICAgIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgODMsIDY1LCAKLSAgICA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgNzEsIAotICAgIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIAotICAgIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgCi0gICAgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCAKLSAgICA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIDQ1LCA1MCwgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIAotICAgIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIAotICAgIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIAotICAgIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgCi0gICAgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCAKLSAgICA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAKLSAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCAKLSAgICA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIAotICAgIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIAotICAgIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIAotICAgIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgCi0gICAgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgCi0gICAgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAKLSAgICAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCAKLSAgICA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgCi0gICAgODIsIDg1LCA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAKLSAgICAxMjgsIDgyLCA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIAotICAgIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgCi0gICAgNzEsIDY2LCAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCi0gICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKLSAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAotICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCAKLSAgICA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCAKLSAgICA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIAotICAgIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA4MiwgCi0gICAgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgCi0gICAgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCAKLSAgICA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgCi0gICAgNzksIDc3LCA2NSwgMjA2LCA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDcyLCAKLSAgICA3MywgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIAotICAgIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgCi0gICAgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCAKLSAgICA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgNzYsIDY5LCAKLSAgICAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIAotICAgIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcwLCAKLSAgICA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgCi0gICAgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgCi0gICAgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCAKLSAgICA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCAKLSAgICA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgCi0gICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgCi0gICAgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIAotICAgIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAKLSAgICAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCAKLSAgICA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCAKLSAgICA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgCi0gICAgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCAKLSAgICA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIAotICAgIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgCi0gICAgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgCi0gICAgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCAKLSAgICA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIAotICAgIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgCi0gICAgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCAKLSAgICA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIAotICAgIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgCi0gICAgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCAKLSAgICA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIAotICAgIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgCi0gICAgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCAKLSAgICA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIAotICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIAotICAgIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgCi0gICAgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCAKLSAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIAotICAgIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgCi0gICAgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAKLSAgICAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgCi0gICAgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCAKLSAgICA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCA2OSwgCi0gICAgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgODIsIDY5LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA3OSwgODIsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDY5LCA4MCwgODQsIDczLCA4NiwgCi0gICAgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCAKLSAgICA1MCwgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgCi0gICAgMTI4LCA4MiwgNjksIDY1LCA2NywgNzIsIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgCi0gICAgODMsIDE5MywgODIsIDY1LCA4OSwgODMsIDEyOCwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIAotICAgIDg0LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgCi0gICAgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCAKLSAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgCi0gICAgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCAKLSAgICA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIAotICAgIDc5LCA4NywgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAKLSAgICAyMTcsIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCAKLSAgICA4MiwgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIAotICAgIDY5LCAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCAKLSAgICA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgCi0gICAgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgCi0gICAgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgCi0gICAgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIAotICAgIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIAotICAgIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIAotICAgIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIAotICAgIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIAotICAgIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgCi0gICAgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIAotICAgIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgCi0gICAgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCAKLSAgICA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIAotICAgIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgCi0gICAgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCAKLSAgICA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIAotICAgIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgCi0gICAgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCAKLSAgICA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIAotICAgIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgCi0gICAgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIAotICAgIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIAotICAgIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIAotICAgIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCAKLSAgICA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCAKLSAgICA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIAotICAgIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgCi0gICAgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgCi0gICAgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgCi0gICAgODEsIDY1LCA4MiwgNzgsIDY5LCAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgMTI4LCA4MSwgNjUsIDgwLCAKLSAgICA3MiwgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgMjExLCA4MSwgNjUsIAotICAgIDc2LCAxOTMsIDgxLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgCi0gICAgNzAsIDEyOCwgODEsIDY1LCAxOTgsIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIDY1LCA3MywgMTI4LCA4MSwgCi0gICAgNjUsIDY1LCA3MCwgODUsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgNTUsIDEyOCwgODEsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgODEsIDQ4LCA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgODEsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgODEsIDQ4LCA0OCwgNTAsIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAxMjgsIDgwLCA4OSwgODgsIAotICAgIDEyOCwgODAsIDg5LCA4NCwgMTI4LCA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAxMjgsIDgwLCA4OSwgODAsIAotICAgIDEyOCwgODAsIDg5LCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIAotICAgIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIAotICAgIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCAKLSAgICA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIAotICAgIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgCi0gICAgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCAKLSAgICA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIAotICAgIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgCi0gICAgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgCi0gICAgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCAKLSAgICA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgCi0gICAgNzMsIDE5NSwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgCi0gICAgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgCi0gICAgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAKKyAgICA4MywgNjksIDgyLCA3MywgNzAsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIAorICAgIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgCisgICAgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCAKKyAgICA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIAorICAgIDczLCAxMjgsIDgzLCA2OSwgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDc1LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIAorICAgIDc3LCA3MywgODMsIDc5LCA3MCwgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgCisgICAgODMsIDY5LCA3NywgNzMsIDc3LCA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIAorICAgIDY3LCAyMTIsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgCisgICAgNzYsIDc5LCAyMDYsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIAorICAgIDY5LCA3NywgNzMsIDQ1LCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCisgICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCAKKyAgICA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIAorICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgCisgICAgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIAorICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgCisgICAgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgCisgICAgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAKKyAgICAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIAorICAgIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIAorICAgIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgCisgICAgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIAorICAgIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgCisgICAgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAorICAgIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgCisgICAgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCAKKyAgICA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIAorICAgIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgCisgICAgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgCisgICAgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCAKKyAgICA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIAorICAgIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgCisgICAgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCAKKyAgICA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIAorICAgIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgCisgICAgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIAorICAgIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgCisgICAgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIAorICAgIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgCisgICAgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIAorICAgIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgCisgICAgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIAorICAgIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgCisgICAgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCAKKyAgICA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIAorICAgIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgCisgICAgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgNjksIDg0LCAKKyAgICAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCAKKyAgICA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgCisgICAgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCAKKyAgICA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIAorICAgIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIAorICAgIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgCisgICAgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgCisgICAgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAKKyAgICAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIAorICAgIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAKKyAgICAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCAKKyAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCAKKyAgICA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCAKKyAgICA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCAKKyAgICA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCAKKyAgICA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIAorICAgIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIAorICAgIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgCisgICAgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCAKKyAgICA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAorICAgIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIAorICAgIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgCisgICAgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCAKKyAgICA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIAorICAgIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgCisgICAgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCAKKyAgICA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIAorICAgIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgCisgICAgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIAorICAgIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIAorICAgIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIAorICAgIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgCisgICAgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgCisgICAgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCAKKyAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIAorICAgIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIAorICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCAKKyAgICA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIAorICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAKKyAgICAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIAorICAgIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgCisgICAgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCAKKyAgICA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIAorICAgIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgCisgICAgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgCisgICAgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCAKKyAgICA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIAorICAgIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIAorICAgIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIAorICAgIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAorICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKKyAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAorICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIDgyLCA3MywgODAsIDEyOCwgODIsIAorICAgIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgCisgICAgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgNjUsIDEyOCwgODIsIDczLCAKKyAgICA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAorICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCAKKyAgICA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKKyAgICA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDc2LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIAorICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCAKKyAgICA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIAorICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCAKKyAgICA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgCisgICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIAorICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIAorICAgIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAorICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCisgICAgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAorICAgIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCAKKyAgICA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKKyAgICA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIAorICAgIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgCisgICAgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCAKKyAgICA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCAKKyAgICA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKKyAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAorICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKKyAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCA4MywgNjcsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgCisgICAgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCAKKyAgICA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIAorICAgIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgCisgICAgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCAKKyAgICA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIAorICAgIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgCisgICAgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCAKKyAgICA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIAorICAgIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgCisgICAgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCAKKyAgICA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgCisgICAgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIAorICAgIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgCisgICAgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCAKKyAgICA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIAorICAgIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCAKKyAgICA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgCisgICAgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAKKyAgICA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgCisgICAgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAKKyAgICAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIAorICAgIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgODIsIDY5LCA2OCwgCisgICAgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNzMsIAorICAgIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzYsIDczLCA3OCwgCisgICAgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDgyLCA2OSwgNjcsIAorICAgIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA3MywgNzgsIDE5OSwgCisgICAgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDEyOCwgODIsIDY5LCAKKyAgICA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIAorICAgIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA2OSwgCisgICAgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCAKKyAgICA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgCisgICAgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgCisgICAgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIDE5MywgODIsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgCisgICAgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCAKKyAgICA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCAKKyAgICA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAorICAgIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgCisgICAgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIAorICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgCisgICAgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCAKKyAgICA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgCisgICAgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCAKKyAgICA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIAorICAgIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCAKKyAgICA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCAKKyAgICA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIAorICAgIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCAKKyAgICA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIAorICAgIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgCisgICAgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgCisgICAgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgCisgICAgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgCisgICAgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgCisgICAgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgCisgICAgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgCisgICAgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCAKKyAgICA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIAorICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgCisgICAgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIAorICAgIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgCisgICAgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCisgICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCisgICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAorICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCAKKyAgICA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIAorICAgIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgCisgICAgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIAorICAgIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgCisgICAgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIAorICAgIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIAorICAgIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIAorICAgIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIAorICAgIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgCisgICAgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgCisgICAgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAKKyAgICAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCAKKyAgICA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIAorICAgIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIAorICAgIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgCisgICAgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgCisgICAgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKKyAgICA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIAorICAgIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgCisgICAgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgCisgICAgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIAorICAgIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCAKKyAgICA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCAKKyAgICA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgCisgICAgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAKKyAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCAKKyAgICA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIAorICAgIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIAorICAgIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIAorICAgIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgCisgICAgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAKKyAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAKICAgICAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIAogICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgCiAgICAgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAogICAgIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCiAgICAgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCAKICAgICA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgCi0gICAgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIAotICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCAKLSAgICA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCi0gICAgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgwLCA4MiwgNzksIAorICAgIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA4MiwgNzksIDcyLCA3MywgNjYsIDczLCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIAorICAgIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAKKyAgICAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIAorICAgIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgMTk3LCA4MCwgODIsIDczLCA4NiwgCisgICAgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCAKKyAgICA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIAorICAgIDY5LCAyMTAsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgCiAgICAgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCAKLSAgICA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIAotICAgIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIAotICAgIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgCi0gICAgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCAKLSAgICA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIAotICAgIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgCi0gICAgNjgsIDE5NywgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAKLSAgICAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIAotICAgIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgCi0gICAgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCAKLSAgICA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAKLSAgICAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgCi0gICAgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKLSAgICA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIAotICAgIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgCi0gICAgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCAKLSAgICA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgCi0gICAgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIAotICAgIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgCi0gICAgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCAKLSAgICA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIAotICAgIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCA3MiwgMTI4LCA4MCwgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgCi0gICAgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc2LCAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCAKLSAgICA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIDczLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIAotICAgIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDE5NiwgODAsIDc5LCA3MywgNzgsIDg0LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCAKLSAgICA4MiwgMjE3LCA4MCwgNzksIDY5LCA4NCwgNzMsIDE5NSwgODAsIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIAotICAgIDc5LCA2NSwgMTI4LCA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIDc4LCA2OSwgODUsIDc3LCA2NSwgODQsIDY1LCAxMjgsIAotICAgIDgwLCA3NiwgODUsIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgNDUsIDc3LCA3MywgNzgsIDg1LCAyMTEsIDgwLCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIDEyOCwgODAsIDc2LCA4NSwgNzcsIDY5LCAxOTYsIDgwLCAKLSAgICA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIDgwLCA3NiwgODUsIDcxLCAxMjgsIDgwLCA3NiwgODUsIAotICAgIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCA2OCwgMTI4LCA4MCwgNzYsIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCAKKyAgICA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIAorICAgIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgCisgICAgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCA2NSwgCisgICAgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKKyAgICA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIAorICAgIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgCisgICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCAKKyAgICA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgCisgICAgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCAKKyAgICA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIAorICAgIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIAorICAgIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIAorICAgIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgCisgICAgNzksIDg3LCA2OCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIAorICAgIDIxNywgODAsIDc5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgCisgICAgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgwLCA3OSwgODMsIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIAorICAgIDgzLCA4NCwgMTI4LCA4MCwgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIAorICAgIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgCisgICAgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCAKKyAgICA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIAorICAgIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIAorICAgIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDczLCA4MywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgNjksIDEyOCwgCisgICAgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCA3NSwgNzksIDc0LCAKKyAgICA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgMTI4LCA4MCwgNzksIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgMTI4LCA4MCwgNzksIDczLCA3OCwgMjEyLCA4MCwgNzksIDY5LCA4NCwgODIsIDIxNywgODAsIDc5LCA2OSwgODQsIDczLCAKKyAgICAxOTUsIDgwLCA3OSwgNjgsIDY1LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgNjcsIDc1LCA2OSwgMjEyLCA4MCwgNzksIAorICAgIDY1LCAxMjgsIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIAorICAgIDc2LCA4NSwgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgNDUsIDc3LCA3MywgCisgICAgNzgsIDg1LCAyMTEsIDgwLCA3NiwgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIDEyOCwgODAsIDc2LCAKKyAgICA4NSwgNzcsIDY5LCAxOTYsIDgwLCA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIDgwLCA3NiwgODUsIAorICAgIDcxLCAxMjgsIDgwLCA3NiwgODUsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgCisgICAgMTI4LCA4MCwgNzYsIDcyLCA2NSwgODUsIDEyOCwgODAsIDc2LCA2OSwgODQsIDcyLCA4MiwgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA3NiwgNjgsIDEyOCwgODAsIDc2LCA2NSwgODksIDczLCA3OCwgMTk5LCA4MCwgNzYsIDY1LCA4NCwgNjksIDEyOCwgODAsIAogICAgIDc2LCA2NSwgODMsIDg0LCA3MywgNjcsIDgzLCAxMjgsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgMTk3LCA4MCwgNzYsIDY1LCA3OCwgNjcsIDIwMywgODAsIDc2LCA2NSwgNzUsIDEyOCwgODAsIDc2LCA2NSwgNzEsIDczLCAKLSAgICA3OSwgMjExLCA4MCwgNzYsIDY1LCA2NywgNjksIDcyLCA3OSwgNzYsIDY4LCA2OSwgMjEwLCA4MCwgNzYsIDY1LCA2NywgCi0gICAgMTk3LCA4MCwgNzYsIDY1LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA3MywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODAsIDczLCAKLSAgICA5MCwgOTAsIDY1LCAxMjgsIDgwLCA3MywgODgsIDEyOCwgODAsIDczLCA4NywgODIsIDEyOCwgODAsIDczLCA4NCwgNjcsIAotICAgIDcyLCA3MCwgNzksIDgyLCA3NSwgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDIwMywgODAsIDczLCA4NCwgCi0gICAgMTI4LCA4MCwgNzMsIDgzLCA4NCwgNzksIDc2LCAxMjgsIDgwLCA3MywgODMsIDY5LCA3NiwgNjksIDcyLCAxMjgsIDgwLCAKLSAgICA3MywgODMsIDY3LCA2OSwgODMsIDEyOCwgODAsIDczLCA4MiwgNzMsIDcxLCAxMjgsIDgwLCA3MywgODIsIDczLCAxOTksIAotICAgIDgwLCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDgwLCA3MywgODAsIDczLCA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgCi0gICAgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCAKLSAgICA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIAotICAgIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgCi0gICAgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgCi0gICAgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCAKLSAgICA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAotICAgIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKLSAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKLSAgICA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCAKLSAgICA3MywgNjcsIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIAotICAgIDc3LCAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIAotICAgIDg1LCA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgCi0gICAgNzIsIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCAKLSAgICA3MywgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCAKLSAgICA4MCwgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIAotICAgIDc5LCA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgCi0gICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIAotICAgIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgCi0gICAgODUsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgCi0gICAgODAsIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCAKLSAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA4MCwgNzIsIAotICAgIDY1LCA4MiwgMTI4LCA4MCwgNzIsIDY1LCA3OCwgMTI4LCA4MCwgNzIsIDY1LCA3NywgMTI4LCA4MCwgNzIsIDY1LCA3MywgCi0gICAgODMsIDg0LCA3OSwgMjExLCA4MCwgNzIsIDY1LCA3MSwgODMsIDQ1LCA4MCwgMTkzLCA4MCwgNzIsIDY1LCA2NSwgODIsIDc1LCAKLSAgICA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgNjUsIDEyOCwgODAsIDcyLCA2NSwgMTI4LCA4MCwgNzEsIDEyOCwgODAsIDcwLCAKLSAgICAxMjgsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDgwLCA2OSwgODUsIDg0LCA2NSwgNjksIDEyOCwgODAsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgCi0gICAgNjksIDg0LCA2NSwgODMsIDg0LCA3MywgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgNjksIDg0LCAKLSAgICA2NSwgNzYsIDc2LCA2OSwgMTk2LCA4MCwgNjksIDgzLCA3OSwgMTI4LCA4MCwgNjksIDgzLCAyMDcsIDgwLCA2OSwgODMsIAotICAgIDcyLCA1MCwgMTI4LCA4MCwgNjksIDgzLCA2OSwgODQsIDE5MywgODAsIDY5LCAyMTEsIDgwLCA2OSwgODIsIDg0LCA3MiwgCi0gICAgMjA3LCA4MCwgNjksIDgyLCA4MywgODAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAKLSAgICA3OCwgNjUsIDIwNCwgODAsIDY5LCA4MiwgODMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDIwNiwgODAsIAotICAgIDY5LCA4MiwgODMsIDczLCA2NSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNjksIDg2LCA2OSwgODIsIDczLCA3OCwgMTk5LCA4MCwgCi0gICAgNjksIDgyLCA4MCwgNjksIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA4MCwgNjksIDgyLCA4MCwgNjksIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgwLCA2OSwgODIsIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgCi0gICAgNjksIDgyLCA3NywgNjUsIDc4LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MiwgNzMsIDgzLCA4MCwgNzksIDc3LCA2OSwgNzgsIAotICAgIDczLCAxMjgsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCAyMDEsIDgwLCA2OSwgODIsIDcwLCA3OSwgCi0gICAgODIsIDc3LCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDgwLCA2OSwgODIsIDcwLCAKLSAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIAotICAgIDgzLCA4MywgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDY5LCA4NCwgCi0gICAgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCA3OSwgODAsIDc2LCAKLSAgICA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgCi0gICAgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDczLCAKLSAgICA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgCi0gICAgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKLSAgICAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIAotICAgIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCAKLSAgICA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIAotICAgIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgMTI4LCA4MCwgNjgsIDcwLCAKLSAgICAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIDgwLCA2NSwgODksIDY5LCAKLSAgICA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgODksIDEyOCwgODAsIAotICAgIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCAKLSAgICA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCAKLSAgICA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgCi0gICAgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAotICAgIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgCi0gICAgODEsIDEyOCwgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCAKLSAgICA2NSwgODIsIDg0LCAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIAotICAgIDg0LCA3MywgNjUsIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCAKLSAgICA4NCwgNzMsIDY1LCAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIAotICAgIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgNzcsIDY5LCAKLSAgICA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIDgwLCA2NSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgCi0gICAgNzYsIDY5LCAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCAKLSAgICA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgCi0gICAgMTkzLCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgCi0gICAgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAKLSAgICAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIAotICAgIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgCi0gICAgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgCi0gICAgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCAKLSAgICA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgCi0gICAgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgCi0gICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCAKLSAgICA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgCi0gICAgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCAKLSAgICA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIAotICAgIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgCi0gICAgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCAKLSAgICA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIAotICAgIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDczLCAxMjgsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCAKLSAgICA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCAKLSAgICA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgCi0gICAgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgCi0gICAgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgCi0gICAgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCAKLSAgICA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIAotICAgIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgCi0gICAgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgCi0gICAgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCAKLSAgICA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgCi0gICAgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAKLSAgICAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg2LCAxMjgsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCAKLSAgICA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgCi0gICAgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAKLSAgICAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCAKLSAgICA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgCi0gICAgMTkzLCA3OSwgODMsIDY3LCAxMjgsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCAKLSAgICA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgCi0gICAgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCAKLSAgICA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCA3OSwgODIsIAotICAgIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA3OCwgCi0gICAgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAorICAgIDY3LCAyMDMsIDgwLCA3NiwgNjUsIDc1LCAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgCisgICAgNjcsIDY5LCA3MiwgNzksIDc2LCA2OCwgNjksIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCAKKyAgICA4MCwgNzMsIDkwLCA5MCwgNzMsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIAorICAgIDg4LCAxMjgsIDgwLCA3MywgODcsIDgyLCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgCisgICAgODAsIDczLCA4NCwgNjcsIDcyLCA3MCwgNzksIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCAKKyAgICA3NiwgMTI4LCA4MCwgNzMsIDgzLCA2OSwgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIAorICAgIDgwLCA3MywgODIsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MCwgNzMsIDgyLCA2NSwgNjcsIDg5LCAxMjgsIDgwLCA3MywgODIsIDUwLCAxMjgsIDgwLCA3MywgODAsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgODAsIDczLCA4MCwgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDgwLCA3MywgODAsIAorICAgIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA4MCwgNzMsIDgwLCAxMjgsIDgwLCA3MywgNzgsIDg3LCA3MiwgNjksIDY5LCAKKyAgICAyMDQsIDgwLCA3MywgNzgsIDY5LCA2NSwgODAsIDgwLCA3NiwgNjksIDEyOCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzMsIAorICAgIDc4LCA2NSwgODIsIDY2LCA3OSwgODIsIDY1LCA4MywgMTI4LCA4MCwgNzMsIDc2LCA3NiwgMTI4LCA4MCwgNzMsIDc2LCAKKyAgICAxOTcsIDgwLCA3MywgNzYsIDY3LCA4MiwgNzksIDIxNSwgODAsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MCwgNzMsIAorICAgIDc1LCA3OSwgMTI4LCA4MCwgNzMsIDcxLCAxMjgsIDgwLCA3MywgMTk5LCA4MCwgNzMsIDY5LCA4OCwgMTI4LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MiwgCisgICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIAorICAgIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODAsIDczLCA2OSwgCisgICAgODUsIDIwOCwgODAsIDczLCA2OSwgODQsIDEyOCwgODAsIDczLCA2OSwgODAsIDEyOCwgODAsIDczLCA2OSwgNjksIDg0LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDY5LCA4MSwgMTI4LCA4MCwgNzMsIDY5LCA2NywgNjksIDEyOCwgODAsIDczLCA2OSwgMTI4LCAKKyAgICA4MCwgNzMsIDY3LCA4NCwgODUsIDgyLCA2OSwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgwLCA3MywgNjcsIAorICAgIDc1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA4NSwgODQsIDc5LCA4MiwgODUsIDEyOCwgODAsIDczLCA2NSwgODMsIDc3LCAKKyAgICAxOTMsIDgwLCA3MywgNjUsIDc4LCA3OSwgMTI4LCA4MCwgMjAxLCA4MCwgNzIsIDg3LCA2NSwgMTI4LCA4MCwgNzIsIDg1LCAKKyAgICA4NCwgNzIsIDY1LCA3OSwgMTI4LCA4MCwgNzIsIDg1LCAyMTAsIDgwLCA3MiwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNzIsIAorICAgIDgyLCA2NSwgODMsIDY5LCAxMjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgODMsIDEyOCwgODAsIDcyLCA3OSwgNjksIDc4LCA3MywgCisgICAgNjcsIDczLCA2NSwgMjA2LCA4MCwgNzIsIDc5LCA2NSwgMTI4LCA4MCwgNzIsIDc5LCAxMjgsIDgwLCA3MiwgMjA3LCA4MCwgCisgICAgNzIsIDc4LCA2NSwgNjksIDIwMywgODAsIDcyLCA3MywgNzgsIDg0LCA3MiwgODUsIDEyOCwgODAsIDcyLCA3MywgNzYsIDc5LCAKKyAgICA4MywgNzksIDgwLCA3MiwgNjksIDgyLCAyMTEsIDgwLCA3MiwgNzMsIDc2LCA3MywgODAsIDgwLCA3MywgNzgsIDE5NywgODAsIAorICAgIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIAorICAgIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDIwMCwgODAsIDcyLCA3MywgMTI4LCA4MCwgNzIsIDIwMSwgODAsIAorICAgIDcyLCA2OSwgNjksIDEyOCwgODAsIDcyLCA2OSwgMTI4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTgsIDgwLCA3MiwgCisgICAgNjUsIDgzLCA2OSwgNDUsIDE5NCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4MCwgNzIsIDY1LCA4MiwgODksIDc4LCAKKyAgICA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCA3MiwgNjUsIAorICAgIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIDgwLCAKKyAgICAxOTMsIDgwLCA3MiwgNjUsIDY2LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIDEyOCwgODAsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgODAsIDY5LCA4NSwgODQsIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNjksIDg0LCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIAorICAgIDczLCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA3NiwgNzYsIDY5LCAKKyAgICAxOTYsIDgwLCA2OSwgODMsIDc5LCAxMjgsIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgwLCAKKyAgICA2OSwgODMsIDcyLCAxNzgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCA4MCwgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIAorICAgIDcyLCAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgCisgICAgNzksIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCAKKyAgICA4MCwgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA2OSwgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIAorICAgIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCAKKyAgICA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIDY5LCA4MiwgNzgsIDczLCAyMDYsIDgwLCA2OSwgODIsIAorICAgIDc3LCA3MywgODQsIDg0LCA2OSwgMTk2LCA4MCwgNjksIDgyLCA3NywgNzMsIDE5NSwgODAsIDY5LCA4MiwgNzcsIDY1LCA3OCwgCisgICAgNjksIDc4LCAyMTIsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgNjksIDgyLCAKKyAgICA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgNzMsIDc4LCAxOTksIAorICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgCisgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIAorICAgIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA2OSwgCisgICAgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCAKKyAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCAKKyAgICA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIAorICAgIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgCisgICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCAKKyAgICA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgCisgICAgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgCisgICAgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCAKKyAgICA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCAKKyAgICA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgCisgICAgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCAKKyAgICA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgNjUsIAorICAgIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgCisgICAgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIAorICAgIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgCisgICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgODQsIDg0LCAKKyAgICA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIAorICAgIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIAorICAgIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgCisgICAgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAorICAgIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIAorICAgIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgODAsIDY1LCA4MywgCisgICAgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCAKKyAgICA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIAorICAgIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCisgICAgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAorICAgIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3NSwgCisgICAgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCA4NCwgNzMsIDcxLCAKKyAgICA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIAorICAgIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDIxMSwgCisgICAgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIAorICAgIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCAKKyAgICA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgCisgICAgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAKKyAgICAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIAorICAgIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgCisgICAgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAKKyAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgCisgICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCAKKyAgICA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIAorICAgIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKKyAgICA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgCisgICAgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCAKKyAgICA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKKyAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAorICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCisgICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKKyAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAorICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCisgICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKKyAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIAorICAgIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgCisgICAgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCAKKyAgICA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCAKKyAgICA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAxMjgsIAorICAgIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIDEyOCwgCisgICAgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCAKKyAgICA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgNjUsIAorICAgIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKKyAgICA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAxMjgsIDgwLCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgMTI4LCA4MCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKKyAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAorICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAorICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCisgICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKKyAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgMTI4LCA3OSwgODYsIAorICAgIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgCisgICAgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIAorICAgIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgCisgICAgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY5LCAKKyAgICA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIAorICAgIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgCisgICAgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCAKKyAgICA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAKKyAgICAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIAorICAgIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgCisgICAgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgCisgICAgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAKICAgICAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgCiAgICAgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCAKICAgICA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCAKLSAgICA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgNzksIDkwLCA2OSwgCi0gICAgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIDg1LCAKLSAgICAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIAotICAgIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIAotICAgIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCAKLSAgICA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIAotICAgIDIwNiwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgCi0gICAgNzcsIDY5LCA3MSwgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA3OSwgNzYsIDczLCA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIAotICAgIDc1LCA4NCwgMjA3LCA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgCi0gICAgNjYsIDg3LCA2NSwgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzIsIDc3LCAKLSAgICAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCAKLSAgICA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgCi0gICAgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAKLSAgICAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDE5NiwgCi0gICAgNzksIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCAKLSAgICA4NCwgNjksIDIxMiwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIAotICAgIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIAotICAgIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIAotICAgIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgCi0gICAgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIAotICAgIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgCi0gICAgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgCi0gICAgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIAotICAgIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCAKLSAgICA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIAotICAgIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCAKLSAgICA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCAKLSAgICA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgCi0gICAgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCAKLSAgICA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgCi0gICAgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCAKLSAgICA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIAotICAgIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgCi0gICAgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCAKLSAgICA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIAotICAgIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgCi0gICAgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgCi0gICAgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCAKLSAgICA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCAKLSAgICA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCAKLSAgICA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIDg5LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgNzksIDEyOCwgCisgICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCAKKyAgICA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgCisgICAgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCAKKyAgICA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIAorICAgIDg1LCAxMjgsIDc5LCA3OSwgNzIsIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgCisgICAgNzYsIDczLCAxMjgsIDc5LCA3OCwgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgCisgICAgNzgsIDc1LCA2NSwgODIsIDEyOCwgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCAKKyAgICA2NSwgMjE3LCA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIAorICAgIDczLCA3OCwgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgCisgICAgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCAKKyAgICA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIAorICAgIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgCisgICAgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCAKKyAgICA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIAorICAgIDc2LCAxMjgsIDc5LCA3MywgMjA0LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCAKKyAgICA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgCisgICAgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCAKKyAgICA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCAKKyAgICA3OSwgNjksIDY5LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCAKKyAgICA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIAorICAgIDY5LCAyMTIsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgCisgICAgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCAKKyAgICA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIAorICAgIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgCisgICAgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCAKKyAgICA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIAorICAgIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIAorICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCAKKyAgICA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgCisgICAgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIAorICAgIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgCisgICAgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIAorICAgIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIAorICAgIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgCisgICAgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgCisgICAgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCAKKyAgICA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIAorICAgIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgCisgICAgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgCisgICAgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIAorICAgIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIAorICAgIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgCisgICAgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCAKKyAgICA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIAorICAgIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIAogICAgIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgCiAgICAgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgCiAgICAgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCAKLSAgICA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIAotICAgIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3MiwgCi0gICAgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIAotICAgIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgCi0gICAgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCAKLSAgICA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCAKLSAgICA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCAKLSAgICA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIAotICAgIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgCi0gICAgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgCi0gICAgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCAKLSAgICA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIAotICAgIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIAotICAgIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgCi0gICAgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCAKLSAgICA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCAyMTMsIDc4LCA4NCwgCi0gICAgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCAKLSAgICA2NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIAotICAgIDEyOCwgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIAotICAgIDg1LCA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgCi0gICAgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCAKLSAgICA3MywgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIAotICAgIDcyLCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4MywgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAKLSAgICAxMjgsIDc4LCA4MywgNzIsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIAotICAgIDEyOCwgNzgsIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgCi0gICAgMTI4LCA3OCwgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgCi0gICAgNzgsIDgyLCA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIAotICAgIDEyOCwgNzgsIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgMTI4LCA3OCwgODIsIAotICAgIDc5LCA4MCwgMTI4LCA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgNjksIDg0LCAxMjgsIAotICAgIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCA2NSwgCi0gICAgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgMTI4LCA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgCi0gICAgODgsIDEyOCwgNzgsIDc5LCA4NiwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCAKLSAgICA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIAotICAgIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgCi0gICAgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCAKLSAgICA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAyMTIsIDc4LCAKLSAgICA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIAotICAgIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3OCwgNzksIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCAyMTAsIAotICAgIDc4LCA3OSwgODAsIDEyOCwgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgCi0gICAgNzAsIDc5LCA4MiwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgCi0gICAgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCAKLSAgICA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIAotICAgIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIAotICAgIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIAotICAgIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgCi0gICAgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIAotICAgIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgCi0gICAgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIAotICAgIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAKLSAgICAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCAKLSAgICA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCAKLSAgICA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIAotICAgIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCAKLSAgICA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIAotICAgIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgCi0gICAgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCAKLSAgICA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIAotICAgIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgCi0gICAgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCAKLSAgICA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgCi0gICAgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCAKLSAgICA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIAotICAgIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDcyLCA4MywgNzIsIDg2LCA2NSwgCi0gICAgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCAKLSAgICA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzgsIAotICAgIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgMTI4LCA3OCwgNzMsIAotICAgIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgNjUsIDEyOCwgNzgsIAotICAgIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIDc4LCA3MSwgODUsIDg1LCAxMjgsIAotICAgIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDEyOCwgCi0gICAgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgCi0gICAgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAotICAgIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgCi0gICAgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCAKLSAgICA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgCi0gICAgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAotICAgIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCAKKyAgICA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgCisgICAgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgCisgICAgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgCisgICAgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgCisgICAgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCAKKyAgICA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIAorICAgIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCAKKyAgICA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIAorICAgIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIAorICAgIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgCisgICAgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCAKKyAgICA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIAorICAgIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgCisgICAgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgCisgICAgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCAKKyAgICA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIAorICAgIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIAorICAgIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIAorICAgIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgCisgICAgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCAKKyAgICA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgCisgICAgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgCisgICAgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAKKyAgICAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgCisgICAgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCAKKyAgICA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCAKKyAgICA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIAorICAgIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIAorICAgIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgCisgICAgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgCisgICAgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCAKKyAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIAorICAgIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgCisgICAgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCAKKyAgICA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIAorICAgIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgCisgICAgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCAKKyAgICA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIAorICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgCisgICAgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgCisgICAgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCAKKyAgICA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCAKKyAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIAorICAgIDEyOCwgNzgsIDc5LCA2NSwgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgCisgICAgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCisgICAgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIAorICAgIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCisgICAgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgCisgICAgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCAKKyAgICA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIAorICAgIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIAorICAgIDc4LCA3NiwgNjUsIDg1LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAorICAgIDc2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDc4LCA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIAorICAgIDY4LCA3MywgMTI4LCA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgCisgICAgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgCisgICAgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCAKKyAgICA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIAorICAgIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIAorICAgIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCAKKyAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIAorICAgIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgCisgICAgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAKKyAgICA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIAorICAgIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgCisgICAgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCAKKyAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIAorICAgIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIAorICAgIDczLCAyMDUsIDc4LCA3MywgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgCisgICAgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCAKKyAgICA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgCisgICAgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKKyAgICA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgCisgICAgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIAorICAgIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCAKKyAgICA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCAKKyAgICA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCAKKyAgICA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIAorICAgIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgCisgICAgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKKyAgICA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgCisgICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgCisgICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCisgICAgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIAorICAgIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCAKKyAgICA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCiAgICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgCiAgICAgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCAKICAgICA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIAogICAgIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgCiAgICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIAotICAgIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgCi0gICAgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCAKLSAgICA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA4NCwgMTI4LCAKLSAgICA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNjUsIAotICAgIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA2NSwgNzMsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgCi0gICAgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCAKLSAgICA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgCi0gICAgODQsIDY5LCAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAKLSAgICAxMjgsIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNjUsIDc4LCAKLSAgICA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCAKLSAgICA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIAotICAgIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgCi0gICAgNjgsIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCAKLSAgICA4NSwgODIsIDEyOCwgNzgsIDY4LCA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCAKLSAgICA2OCwgNzksIDg4LCAxMjgsIDc4LCA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIAotICAgIDc5LCAxMjgsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzYsIDE5NywgNzgsIDY4LCA3MywgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgODAsIDEyOCwgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCAKLSAgICA2OCwgNzMsIDY4LCA2NSwgMTI4LCA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgCi0gICAgNzgsIDY4LCA2NSwgODgsIDEyOCwgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgNzcsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA2NSwgMTI4LCA3OCwgNjgsIDY1LCAxOTMsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIAotICAgIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCAKLSAgICA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIAotICAgIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIAotICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgCi0gICAgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgCi0gICAgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIAotICAgIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIDIwNCwgCi0gICAgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgNjUsIDgzLCAKLSAgICA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OCwgNjUsIAotICAgIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgCi0gICAgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCAKLSAgICA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgCi0gICAgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgCi0gICAgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgCi0gICAgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgCi0gICAgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCAKLSAgICA2NSwgNjUsIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIAotICAgIDE5MywgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIAotICAgIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgCi0gICAgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCAKLSAgICA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCAKLSAgICA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgCi0gICAgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIAotICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAKLSAgICAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCAKLSAgICA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgCi0gICAgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAKLSAgICAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgCi0gICAgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAKLSAgICAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIAotICAgIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCA4NSwgODQsIDEyOCwgCi0gICAgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIDcyLCA4MiwgNzksIDc5LCAKLSAgICA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgNzcsIDg1LCA4MywgNzIsIAotICAgIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIAotICAgIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgCi0gICAgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIAotICAgIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgCi0gICAgNzIsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAKLSAgICAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIAotICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCAKLSAgICA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgODUsIDc2LCA4NCwgNzMsIAotICAgIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgCi0gICAgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgCi0gICAgMTk5LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIDIwMCwgNzcsIDg1LCA2NywgCi0gICAgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgMTI4LCA3NywgODUsIDQ1LCAKLSAgICA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgODAsIDY1LCAxMjgsIDc3LCAKLSAgICA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIAotICAgIDY5LCAxOTYsIDc3LCA3OSwgODUsIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDg1LCA4MywgCi0gICAgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCAKLSAgICA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIAotICAgIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgCi0gICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA4NCwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIDg1LCA3NywgMTI4LCAKLSAgICA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIDIwNiwgNzcsIAotICAgIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIAotICAgIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgCi0gICAgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIAotICAgIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgCi0gICAgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIAotICAgIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIAotICAgIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCi0gICAgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCAKLSAgICA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAKLSAgICAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgCi0gICAgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgCi0gICAgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCAKLSAgICA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCAKLSAgICA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgCi0gICAgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgMTI4LCAKLSAgICA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIDEyOCwgNzcsIAotICAgIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgCi0gICAgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCAKLSAgICA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3NywgNzMsIAotICAgIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIDc3LCA3MywgCi0gICAgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDg0LCAKLSAgICA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIDczLCA2OSwgCi0gICAgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIAotICAgIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgNzgsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIAotICAgIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA3MywgCi0gICAgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgNzcsIDczLCAKLSAgICAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIAotICAgIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgCi0gICAgMTI4LCA3NywgNzIsIDY1LCAxMjgsIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgCi0gICAgNzcsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCAKLSAgICA3NywgNzEsIDg1LCAxMjgsIDc3LCA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIAotICAgIDgwLCAxMjgsIDc3LCA3MSwgNzksIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIAotICAgIDczLCA2OSwgMTI4LCA3NywgNzEsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIAotICAgIDc3LCA3MSwgNjYsIDg1LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDY5LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgCi0gICAgNzEsIDY1LCA4OCwgMTI4LCA3NywgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAKLSAgICAxMjgsIDc3LCA3MSwgMTI4LCA3NywgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgCi0gICAgNzcsIDcwLCA3MywgODksIDY1LCA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAKLSAgICAxMjgsIDc3LCA3MCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIAotICAgIDY1LCAxMjgsIDc3LCA2OSwgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIAotICAgIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgCi0gICAgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCAKLSAgICA2OSwgNzEsIDEyOCwgNzcsIDY5LCA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIAotICAgIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgCi0gICAgNzEsIDE5NywgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgCi0gICAgNzcsIDY5LCA4MiwgNzksIDczLCA4NCwgNzMsIDE5NSwgNzcsIDY5LCA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCAKLSAgICA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgCi0gICAgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCAKLSAgICA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIAotICAgIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgCi0gICAgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAKLSAgICAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCAKLSAgICA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgCisgICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAorICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCAKKyAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIAorICAgIDgyLCA3NSwgNjksIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIAorICAgIDc4LCA2OSwgODIsIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgCisgICAgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgCisgICAgNjksIDEyOCwgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgCisgICAgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCAKKyAgICA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIAorICAgIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgCisgICAgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCAKKyAgICA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCAKKyAgICA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIAorICAgIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgCisgICAgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgCisgICAgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCAKKyAgICA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgCisgICAgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgCisgICAgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCAKKyAgICA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIAorICAgIDY1LCAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgCisgICAgMTI4LCA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgCisgICAgNzgsIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCAKKyAgICA3OCwgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIAorICAgIDc5LCAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIAorICAgIDc4LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgCisgICAgNzgsIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAKKyAgICAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIAorICAgIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDY4LCA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAKKyAgICAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIAorICAgIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCAKKyAgICA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCAKKyAgICA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgCisgICAgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgCisgICAgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgCisgICAgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCAKKyAgICA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCAKKyAgICA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIAorICAgIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgCisgICAgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCAKKyAgICA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIAorICAgIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgCisgICAgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgCisgICAgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCAKKyAgICA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgCisgICAgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgCisgICAgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgCisgICAgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCAKKyAgICA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIAorICAgIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgCisgICAgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCAKKyAgICA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIAorICAgIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgMTI4LCA3NywgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAKKyAgICA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIAorICAgIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgCisgICAgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3OCwgMTI4LCA3NywgODUsIDc2LCAKKyAgICA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIAorICAgIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgCisgICAgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCAKKyAgICA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIAorICAgIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIAorICAgIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgCisgICAgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKKyAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKKyAgICA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCAKKyAgICA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAorICAgIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgCisgICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIAorICAgIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgCisgICAgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIAorICAgIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgCisgICAgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKKyAgICA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIAorICAgIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgCisgICAgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODMsIDgxLCA4NSwgNjksIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCAKKyAgICA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIAorICAgIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgCisgICAgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDc3LCA3OSwgNzksIDY4LCAxMjgsIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgCisgICAgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCAKKyAgICA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIAorICAgIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgCisgICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgCisgICAgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIAorICAgIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgCisgICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCA4OSwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCAKKyAgICA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCAKKyAgICA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDU3LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU2LCAxMjgsIDc3LCA3OSwgCisgICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU1LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIAorICAgIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgCisgICAgNzMsIDY5LCA4MiwgNDUsIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUxLCAxMjgsIDc3LCAKKyAgICA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCisgICAgNDUsIDQ5LCA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCisgICAgNDUsIDQ5LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCAKKyAgICA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgCisgICAgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgCisgICAgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgCisgICAgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAKKyAgICAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIAorICAgIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAKKyAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgCisgICAgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAKKyAgICA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgCisgICAgNzMsIDg0LCA2NSwgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCAKKyAgICA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIAorICAgIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAorICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCAKKyAgICAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIAorICAgIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgCisgICAgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgCisgICAgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIAorICAgIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgCisgICAgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgCisgICAgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgCisgICAgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCisgICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKKyAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAorICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCisgICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKKyAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKKyAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAorICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCisgICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKKyAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAorICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCisgICAgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCAKKyAgICA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIAorICAgIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAKKyAgICAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIAorICAgIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgNjUsIDIwMCwgCisgICAgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCAKKyAgICA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIAorICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgCisgICAgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgCisgICAgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAKICAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgCi0gICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCAKLSAgICA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgCi0gICAgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCAKLSAgICA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCAKLSAgICA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCAKLSAgICA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIAotICAgIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgCi0gICAgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCAKLSAgICA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIAotICAgIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgCi0gICAgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgCi0gICAgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAKLSAgICA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCAKLSAgICA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIAotICAgIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIAotICAgIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgCi0gICAgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCAKLSAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIAotICAgIDc3LCA2NSwgODMsIDcyLCA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgCi0gICAgNjcsIDg1LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgCi0gICAgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCAKLSAgICA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCAKLSAgICA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIAotICAgIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgCi0gICAgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgCi0gICAgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIAotICAgIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCA3OCwgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgCi0gICAgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIDc4LCA2NSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNzcsIDY1LCA3NiwgODQsIDY5LCAKLSAgICA4MywgMTk3LCA3NywgNjUsIDc2LCA2OSwgNjksIDgyLCA3MywgMTI4LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3NywgNjUsIAotICAgIDc2LCAxOTcsIDc3LCA2NSwgNzYsIDY1LCA3NSwgNzksIDIwNiwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgCi0gICAgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgMTkzLCA3NywgNjUsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCAKLSAgICA3NywgNzksIDc1LCAxMjgsIDc3LCA2NSwgNzMsIDg0LCA2NSwgNzMsIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIAotICAgIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgCisgICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzcsIDY5LCAKKyAgICA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIDc3LCA2OSwgNjksIAorICAgIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIDc3LCAKKyAgICA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgNjUsIAorICAgIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIAorICAgIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIAorICAgIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgCisgICAgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAKKyAgICAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCAKKyAgICA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIAorICAgIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgCisgICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAKKyAgICAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgCisgICAgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCAKKyAgICA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIAorICAgIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIDg0LCA4MiwgCisgICAgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgMTI4LCAKKyAgICA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCA2NSwgNzEsIAorICAgIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIDgzLCA3MiwgCisgICAgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgNzYsIDczLCAKKyAgICA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAyMDEsIDc3LCA2NSwgODIsIAorICAgIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgCisgICAgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCAKKyAgICA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIAorICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgCisgICAgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCAKKyAgICA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIAorICAgIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgCisgICAgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCAKKyAgICA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCAKKyAgICA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODQsIDY5LCA3NiwgODAsIDczLCA2OSwgNjcsIDE5NywgNzcsIDY1LCA3OCwgODMsIAorICAgIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MywgNjcsIDcyLCA2NSwgNjksIDY1LCAyMDYsIAorICAgIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgNzgsIAorICAgIDY1LCAyMTIsIDc3LCA2NSwgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAKKyAgICAxOTcsIDc3LCA2NSwgNzYsIDY5LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIAorICAgIDE5NywgNzcsIDY1LCA3NiwgNjUsIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDc1LCA4MywgODUsIDgyLCAxOTMsIDc3LCA2NSwgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDczLCA4OSwgNjUsIDc3LCAKKyAgICA3OSwgNzUsIDEyOCwgNzcsIDY1LCA3MywgODQsIDY1LCA3MywgNzUsIDcyLCA4NSwgMTI4LCA3NywgNjUsIDczLCA4MiwgODUsIAorICAgIDEyOCwgNzcsIDY1LCA3MywgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDY1LCA3MywgNzcsIDY1LCA3NiwgNjUsIDczLCAKICAgICAxMjgsIDc3LCA2NSwgNzMsIDc2LCA2NiwgNzksIDIxNiwgNzcsIDY1LCA3MywgNzUsIDg1LCA4MiwgNzksIDEyOCwgNzcsIAogICAgIDY1LCA3MywgNjgsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDczLCAxMjgsIDc3LCA2NSwgNzIsIDc0LCA3OSwgNzgsIDE5OSwgCiAgICAgNzcsIDY1LCA3MiwgNzIsIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCAKLSAgICA3MiwgNjUsIDgwLCA2NSwgNzUsIDcyLCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIAotICAgIDc3LCA2NSwgNzIsIDEyOCwgNzcsIDY1LCA3MSwgNzgsIDczLCA3MCwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDY5LCA4MywgCi0gICAgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgNzQsIDY5LCA4NCwgMTI4LCAKLSAgICA3NywgNjUsIDY5LCA3NywgODYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDc1LCA4MCwgNjksIDc4LCAxMjgsIAotICAgIDc3LCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA3MSwgNjYsIDczLCAKLSAgICA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDY2LCA2NSwgMTI4LCA3NywgNjUsIDY5LCA3NywgMTI4LCA3NywgNjUsIAotICAgIDY5LCA3NiwgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc1LCA2OSwgODUsIDgwLCAxMjgsIDc3LCA2NSwgNjgsIDg5LCA2NSwgCi0gICAgMTI4LCA3NywgNjUsIDY4LCA4NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgNjUsIDIwMCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAKLSAgICAxMjgsIDc3LCA2NSwgNjgsIDY4LCAxOTMsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAotICAgIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgCi0gICAgNzksIDc4LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCAyMDYsIDc3LCA2NSwgNjcsIDcyLCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2NSwgNjUsIDg5LCA4OSwgNjUsIAotICAgIDY1LCAxMjgsIDc3LCA2NSwgNjUsIDczLCAxMjgsIDc3LCA2NSwgNjUsIDEyOCwgNzcsIDY1LCA1MCwgMTI4LCA3NywgNDgsIAotICAgIDUyLCA1MiwgMTI4LCA3NywgNDgsIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCA1MCwgMTI4LCA3NywgNDgsIDUyLCA0OSwgCi0gICAgMTI4LCA3NywgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgNDgsIDEyOCwgNzcsIDQ4LCA1MSwgNTcsIDEyOCwgCi0gICAgNzcsIDQ4LCA1MSwgNTYsIDEyOCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgNTQsIDEyOCwgNzcsIDQ4LCAKLSAgICA1MSwgNTMsIDEyOCwgNzcsIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY2LCAxMjgsIDc3LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA3NywgNDgsIDUxLCA1MSwgMTI4LCA3NywgNDgsIDUxLCA1MCwgMTI4LCA3NywgNDgsIDUxLCA0OSwgCi0gICAgNjUsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDEyOCwgNzcsIDQ4LCA1MSwgNDgsIDEyOCwgNzcsIDQ4LCA1MCwgNTcsIDEyOCwgCi0gICAgNzcsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgNTAsIDU1LCAxMjgsIDc3LCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3NywgNDgsIAotICAgIDUwLCA1MiwgMTI4LCA3NywgNDgsIDUwLCA1MSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzcsIDQ4LCA1MCwgNDksIDEyOCwgNzcsIDQ4LCA1MCwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNzcsIDQ4LCA0OSwgNTYsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU1LCAxMjgsIDc3LCAKLSAgICA0OCwgNDksIDU0LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCA1MywgNjUsIDEyOCwgNzcsIAotICAgIDQ4LCA0OSwgNTMsIDEyOCwgNzcsIDQ4LCA0OSwgNTIsIDEyOCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgCisgICAgNzIsIDY1LCA4MCwgNjUsIDc1LCA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNzQsIDY1LCA3OCwgMjAxLCA3NywgNjUsIDcyLCAKKyAgICA2NSwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIAorICAgIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgNjksIDc4LCA4OSwgNzMsIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCAKKyAgICA2NSwgNjksIDc3LCA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIAorICAgIDc3LCA2NSwgNjksIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgCisgICAgNzcsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIAorICAgIDY1LCAyMDAsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgMTkzLCA3NywgNjUsIDY3LCA4MiwgCisgICAgNzksIDc4LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NiwgODIsIAorICAgIDY5LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NywgCisgICAgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICA2OSwgMTI4LCA3NywgNjUsIDY1LCA4OSwgODksIDY1LCA2NSwgMTI4LCA3NywgNjUsIDY1LCA3MywgMTI4LCA3NywgNjUsIAorICAgIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ5LCA1NywgMTgzLCA3NywgNDksIDU3LCAxODIsIDc3LCA0OSwgNTcsIAorICAgIDE4MSwgNzcsIDQ5LCA1NywgMTgwLCA3NywgNDksIDU3LCAxNzksIDc3LCA0OSwgNTcsIDE3OCwgNzcsIDQ5LCA1NywgMTc3LCAKKyAgICA3NywgNDksIDU3LCAxNzYsIDc3LCA0OSwgNTYsIDE4NSwgNzcsIDQ5LCA1NiwgMTg0LCA3NywgNDksIDU2LCAxODMsIDc3LCAKKyAgICA0OSwgNTYsIDE4MiwgNzcsIDQ5LCA1NiwgMTgxLCA3NywgNDksIDU2LCAxODAsIDc3LCA0OSwgNTYsIDE3OSwgNzcsIDQ5LCAKKyAgICA1NiwgMTc4LCA3NywgNDksIDU2LCAxNzcsIDc3LCA0OSwgNTYsIDE3NiwgNzcsIDQ5LCA1NSwgMTg1LCA3NywgNDksIDU1LCAKKyAgICAxODQsIDc3LCA0OSwgNTUsIDE4MywgNzcsIDQ5LCA1NSwgMTgyLCA3NywgNDksIDU1LCAxODEsIDc3LCA0OSwgNTUsIDE4MCwgCisgICAgNzcsIDQ5LCA1NSwgMTc5LCA3NywgNDksIDU1LCAxNzgsIDc3LCA0OSwgNTUsIDE3NywgNzcsIDQ5LCA1NSwgMTc2LCA3NywgCisgICAgNDksIDU0LCAxODUsIDc3LCA0OSwgNTQsIDE4NCwgNzcsIDQ5LCA1NCwgMTgzLCA3NywgNDksIDU0LCAxODIsIDc3LCA0OSwgCisgICAgNTQsIDE4MSwgNzcsIDQ5LCA1NCwgMTgwLCA3NywgNDksIDU0LCAxNzksIDc3LCA0OSwgNTQsIDE3OCwgNzcsIDQ5LCA1NCwgCisgICAgMTc3LCA3NywgNDksIDU0LCAxNzYsIDc3LCA0OSwgNTMsIDE4NSwgNzcsIDQ5LCA1MywgMTg0LCA3NywgNDksIDUzLCAxODMsIAorICAgIDc3LCA0OSwgNTMsIDE4MiwgNzcsIDQ5LCA1MywgMTgxLCA3NywgNDksIDUzLCAxODAsIDc3LCA0OSwgNTMsIDE3OSwgNzcsIAorICAgIDQ5LCA1MywgMTc4LCA3NywgNDksIDUzLCAxNzcsIDc3LCA0OSwgNTMsIDE3NiwgNzcsIDQ5LCA1MiwgMTg1LCA3NywgNDksIAorICAgIDUyLCAxODQsIDc3LCA0OSwgNTIsIDE4MywgNzcsIDQ5LCA1MiwgMTgyLCA3NywgNDksIDUyLCAxODEsIDc3LCA0OSwgNTIsIAorICAgIDE4MCwgNzcsIDQ5LCA1MiwgMTc5LCA3NywgNDksIDUyLCAxNzgsIDc3LCA0OSwgNTIsIDE3NywgNzcsIDQ5LCA1MiwgMTc2LCAKKyAgICA3NywgNDksIDUxLCAxODUsIDc3LCA0OSwgNTEsIDE4NCwgNzcsIDQ5LCA1MSwgMTgzLCA3NywgNDksIDUxLCAxODIsIDc3LCAKKyAgICA0OSwgNTEsIDE4MSwgNzcsIDQ5LCA1MSwgMTgwLCA3NywgNDksIDUxLCAxNzksIDc3LCA0OSwgNTEsIDE3OCwgNzcsIDQ5LCAKKyAgICA1MSwgMTc3LCA3NywgNDksIDUxLCAxNzYsIDc3LCA0OSwgNTAsIDE4NSwgNzcsIDQ5LCA1MCwgMTg0LCA3NywgNDksIDUwLCAKKyAgICAxODMsIDc3LCA0OSwgNTAsIDE4MiwgNzcsIDQ5LCA1MCwgMTgxLCA3NywgNDksIDUwLCAxODAsIDc3LCA0OSwgNTAsIDE3OSwgCisgICAgNzcsIDQ5LCA1MCwgMTc4LCA3NywgNDksIDUwLCAxNzcsIDc3LCA0OSwgNTAsIDE3NiwgNzcsIDQ5LCA0OSwgMTg1LCA3NywgCisgICAgNDksIDQ5LCAxODQsIDc3LCA0OSwgNDksIDE4MywgNzcsIDQ5LCA0OSwgMTgyLCA3NywgNDksIDQ5LCAxODEsIDc3LCA0OSwgCisgICAgNDksIDE4MCwgNzcsIDQ5LCA0OSwgMTc5LCA3NywgNDksIDQ5LCAxNzgsIDc3LCA0OSwgNDksIDE3NywgNzcsIDQ5LCA0OSwgCisgICAgMTc2LCA3NywgNDksIDQ4LCAxODUsIDc3LCA0OSwgNDgsIDE4NCwgNzcsIDQ5LCA0OCwgMTgzLCA3NywgNDksIDQ4LCAxODIsIAorICAgIDc3LCA0OSwgNDgsIDE4MSwgNzcsIDQ5LCA0OCwgMTgwLCA3NywgNDksIDQ4LCAxNzksIDc3LCA0OSwgNDgsIDE3OCwgNzcsIAorICAgIDQ5LCA0OCwgMTc3LCA3NywgNDksIDQ4LCAxNzYsIDc3LCA0OCwgNTcsIDE4NSwgNzcsIDQ4LCA1NywgMTg0LCA3NywgNDgsIAorICAgIDU3LCAxODMsIDc3LCA0OCwgNTcsIDE4MiwgNzcsIDQ4LCA1NywgMTgxLCA3NywgNDgsIDU3LCAxODAsIDc3LCA0OCwgNTcsIAorICAgIDE3OSwgNzcsIDQ4LCA1NywgMTc4LCA3NywgNDgsIDU3LCAxNzcsIDc3LCA0OCwgNTcsIDE3NiwgNzcsIDQ4LCA1NiwgMTg1LCAKKyAgICA3NywgNDgsIDU2LCAxODQsIDc3LCA0OCwgNTYsIDE4MywgNzcsIDQ4LCA1NiwgMTgyLCA3NywgNDgsIDU2LCAxODEsIDc3LCAKKyAgICA0OCwgNTYsIDE4MCwgNzcsIDQ4LCA1NiwgMTc5LCA3NywgNDgsIDU2LCAxNzgsIDc3LCA0OCwgNTYsIDE3NywgNzcsIDQ4LCAKKyAgICA1NiwgMTc2LCA3NywgNDgsIDU1LCAxODUsIDc3LCA0OCwgNTUsIDE4NCwgNzcsIDQ4LCA1NSwgMTgzLCA3NywgNDgsIDU1LCAKKyAgICAxODIsIDc3LCA0OCwgNTUsIDE4MSwgNzcsIDQ4LCA1NSwgMTgwLCA3NywgNDgsIDU1LCAxNzksIDc3LCA0OCwgNTUsIDE3OCwgCisgICAgNzcsIDQ4LCA1NSwgMTc3LCA3NywgNDgsIDU1LCAxNzYsIDc3LCA0OCwgNTQsIDE4NSwgNzcsIDQ4LCA1NCwgMTg0LCA3NywgCisgICAgNDgsIDU0LCAxODMsIDc3LCA0OCwgNTQsIDE4MiwgNzcsIDQ4LCA1NCwgMTgxLCA3NywgNDgsIDU0LCAxODAsIDc3LCA0OCwgCisgICAgNTQsIDE3OSwgNzcsIDQ4LCA1NCwgMTc4LCA3NywgNDgsIDU0LCAxNzcsIDc3LCA0OCwgNTQsIDE3NiwgNzcsIDQ4LCA1MywgCisgICAgMTg1LCA3NywgNDgsIDUzLCAxODQsIDc3LCA0OCwgNTMsIDE4MywgNzcsIDQ4LCA1MywgMTgyLCA3NywgNDgsIDUzLCAxODEsIAorICAgIDc3LCA0OCwgNTMsIDE4MCwgNzcsIDQ4LCA1MywgMTc5LCA3NywgNDgsIDUzLCAxNzgsIDc3LCA0OCwgNTMsIDE3NywgNzcsIAorICAgIDQ4LCA1MywgMTc2LCA3NywgNDgsIDUyLCAxODUsIDc3LCA0OCwgNTIsIDE4NCwgNzcsIDQ4LCA1MiwgMTgzLCA3NywgNDgsIAorICAgIDUyLCAxODIsIDc3LCA0OCwgNTIsIDE4MSwgNzcsIDQ4LCA1MiwgNTIsIDEyOCwgNzcsIDQ4LCA1MiwgMTgwLCA3NywgNDgsIAorICAgIDUyLCA1MSwgMTI4LCA3NywgNDgsIDUyLCAxNzksIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDE3OCwgNzcsIAorICAgIDQ4LCA1MiwgNDksIDEyOCwgNzcsIDQ4LCA1MiwgMTc3LCA3NywgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNzcsIDQ4LCA1MiwgCisgICAgNDgsIDEyOCwgNzcsIDQ4LCA1MiwgMTc2LCA3NywgNDgsIDUxLCA1NywgMTI4LCA3NywgNDgsIDUxLCAxODUsIDc3LCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDc3LCA0OCwgNTEsIDE4NCwgNzcsIDQ4LCA1MSwgNTUsIDEyOCwgNzcsIDQ4LCA1MSwgMTgzLCA3NywgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIDUxLCAxODIsIDc3LCA0OCwgNTEsIDUzLCAxMjgsIDc3LCA0OCwgNTEsIDE4MSwgCisgICAgNzcsIDQ4LCA1MSwgNTIsIDEyOCwgNzcsIDQ4LCA1MSwgMTgwLCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MSwgNTEsIDY1LCAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDE3OSwgNzcsIDQ4LCA1MSwgNTAsIAorICAgIDEyOCwgNzcsIDQ4LCA1MSwgMTc4LCA3NywgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgMTc3LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUxLCAxNzYsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIAorICAgIDc3LCA0OCwgNTAsIDE4NSwgNzcsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAxMjgsIDc3LCA0OCwgCisgICAgNTAsIDE4NCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIDQ4LCA1MCwgMTgzLCA3NywgNDgsIDUwLCA1NCwgMTI4LCA3NywgCisgICAgNDgsIDUwLCAxODIsIDc3LCA0OCwgNTAsIDUzLCAxMjgsIDc3LCA0OCwgNTAsIDE4MSwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNTAsIDUyLCAxMjgsIDc3LCA0OCwgNTAsIDE4MCwgNzcsIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCAKKyAgICA1MCwgMTc5LCA3NywgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDEyOCwgNzcsIDQ4LCA1MCwgMTc4LCAKKyAgICA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCAxNzcsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIAorICAgIDE3NiwgNzcsIDQ4LCA0OSwgNTcsIDEyOCwgNzcsIDQ4LCA0OSwgMTg1LCA3NywgNDgsIDQ5LCA1NiwgMTI4LCA3NywgNDgsIAorICAgIDQ5LCAxODQsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCAxODMsIAorICAgIDc3LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgMTI4LCA3NywgNDgsIDQ5LCAxODIsIDc3LCA0OCwgCisgICAgNDksIDUzLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1MywgMTI4LCA3NywgNDgsIDQ5LCAxODEsIDc3LCA0OCwgNDksIDUyLCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDE4MCwgNzcsIDQ4LCA0OSwgNTEsIDEyOCwgNzcsIDQ4LCA0OSwgMTc5LCA3NywgNDgsIDQ5LCAKICAgICA1MCwgNzIsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MCwgMTI4LCA3NywgNDgsIAogICAgIDQ5LCA1MCwgNjksIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY4LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NywgMTI4LCA3NywgCiAgICAgNDgsIDQ5LCA1MCwgNjYsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUwLCAxMjgsIDc3LCAKLSAgICA0OCwgNDksIDQ5LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIAotICAgIDQ4LCA1NywgMTI4LCA3NywgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgNDgsIDQ4LCA1NCwgCi0gICAgMTI4LCA3NywgNDgsIDQ4LCA1MywgMTI4LCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCi0gICAgNzcsIDQ4LCA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCAKLSAgICA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgMTI4LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCAKLSAgICA4OSwgODgsIDEyOCwgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCAKLSAgICA4OSwgODAsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIAotICAgIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIAotICAgIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIAotICAgIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIAotICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAKLSAgICAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIAotICAgIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIAotICAgIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIAotICAgIDc3LCAxMjgsIDc2LCA4MiwgNzMsIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgCi0gICAgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCAKLSAgICA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCAKLSAgICA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIAotICAgIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgCi0gICAgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCAKLSAgICA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIAotICAgIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIAotICAgIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgCi0gICAgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIAotICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgCi0gICAgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCi0gICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIAotICAgIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgCi0gICAgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCAKLSAgICA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCAKLSAgICA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIAotICAgIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgCi0gICAgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCAKLSAgICA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIAotICAgIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgCi0gICAgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCAKLSAgICA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCAKLSAgICA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIAotICAgIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIAotICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCi0gICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCAKLSAgICA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIAotICAgIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgCi0gICAgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCAKLSAgICA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgCi0gICAgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCAKLSAgICA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCAKLSAgICA2OSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIAotICAgIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIAotICAgIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgCi0gICAgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIAotICAgIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgCi0gICAgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgCi0gICAgODYsIDY5LCAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCAKLSAgICA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIAotICAgIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgCi0gICAgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCAKLSAgICA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIAotICAgIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAKLSAgICAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgCi0gICAgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAKLSAgICAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIAotICAgIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIAotICAgIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgCi0gICAgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCAKLSAgICA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgCi0gICAgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCAKLSAgICA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIAotICAgIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIAotICAgIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgCi0gICAgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIAotICAgIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgCi0gICAgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgCi0gICAgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKKyAgICA0OCwgNDksIDE3OCwgNzcsIDQ4LCA0OSwgNDksIDEyOCwgNzcsIDQ4LCA0OSwgMTc3LCA3NywgNDgsIDQ5LCA0OCwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNDgsIDEyOCwgNzcsIDQ4LCA0OSwgMTc2LCA3NywgNDgsIDQ4LCA1NywgMTI4LCA3NywgNDgsIAorICAgIDQ4LCAxODUsIDc3LCA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDE4NCwgNzcsIDQ4LCA0OCwgNTUsIDEyOCwgNzcsIAorICAgIDQ4LCA0OCwgMTgzLCA3NywgNDgsIDQ4LCA1NCwgMTI4LCA3NywgNDgsIDQ4LCAxODIsIDc3LCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDc3LCA0OCwgNDgsIDE4MSwgNzcsIDQ4LCA0OCwgNTIsIDEyOCwgNzcsIDQ4LCA0OCwgMTgwLCA3NywgNDgsIDQ4LCA1MSwgCisgICAgNjUsIDEyOCwgNzcsIDQ4LCA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgMTc5LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgCisgICAgNDgsIDQ4LCAxNzgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNzcsIDQ4LCA0OCwgMTc3LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIDEyOCwgCisgICAgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIDEyOCwgCisgICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCAKKyAgICA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCAKKyAgICA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCAKKyAgICA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIAorICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgCisgICAgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgCisgICAgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCAKKyAgICA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCAKKyAgICA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIDczLCAKKyAgICAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAorICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCisgICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzYsIDc5LCAKKyAgICA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3NiwgNzksIAorICAgIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgCisgICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCAKKyAgICA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIAorICAgIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIAorICAgIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgCisgICAgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAKKyAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIAorICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCAKKyAgICA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgCisgICAgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIAorICAgIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCAKKyAgICA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIAorICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgCisgICAgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCAKKyAgICA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIAorICAgIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCAKKyAgICA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIAorICAgIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKKyAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAorICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAorICAgIDczLCA4NCwgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAKKyAgICAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAKKyAgICAxMjgsIDc2LCA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCAKKyAgICA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIAorICAgIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgCisgICAgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCAKKyAgICA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIAorICAgIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCAKKyAgICA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIAorICAgIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgCisgICAgNzcsIDY2LCAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCAKKyAgICA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIAorICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKKyAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIAorICAgIDcwLCA4NCwgNjksIDgyLCAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgCisgICAgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgCisgICAgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCAKKyAgICA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIAorICAgIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAKKyAgICAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAKKyAgICAxMjgsIDc2LCA2OSwgODYsIDczLCA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAKKyAgICAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgCisgICAgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAKKyAgICAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCAKKyAgICA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIAorICAgIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKKyAgICA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAorICAgIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCisgICAgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCAKKyAgICA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIAorICAgIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgCisgICAgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCAKKyAgICA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIAorICAgIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgCisgICAgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAorICAgIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCisgICAgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCAKKyAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIAorICAgIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgCisgICAgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCAKKyAgICA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgCisgICAgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIAorICAgIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgCisgICAgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgCisgICAgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCA3NCwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKICAgICA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgCi0gICAgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgCi0gICAgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIAotICAgIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgCi0gICAgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgCi0gICAgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIAotICAgIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAKLSAgICAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCAKLSAgICA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIAotICAgIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIAotICAgIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIAotICAgIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgCi0gICAgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKKyAgICA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAyMDEsIAorICAgIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgCisgICAgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgCisgICAgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAKKyAgICAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIDgwLCAxMjgsIDc2LCAKKyAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIAorICAgIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgCisgICAgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCAKKyAgICA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgCisgICAgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OCwgNTYsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTMsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgCisgICAgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgMTg1LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCAKKyAgICA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1MywgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU3LCAKKyAgICA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCAxNzcsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIDE4NSwgNzYsIDY1LCA3NSwgCisgICAgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCAKKyAgICA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIAorICAgIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIAorICAgIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgCisgICAgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAKKyAgICAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCAKKyAgICA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgNzYsIDY1LCA2NiwgNjUsIAorICAgIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgCisgICAgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA1NCwgMTI4LCA3NiwgCisgICAgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgCiAgICAgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCAKICAgICA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIAogICAgIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgCkBAIC0yMjA3LDcyICsyNDY1LDgyIEBACiAgICAgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAKICAgICAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAKICAgICAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCAKLSAgICA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIAotICAgIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIAotICAgIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIAotICAgIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgCi0gICAgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCAKLSAgICA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCAKLSAgICA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIAotICAgIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIAotICAgIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgCi0gICAgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgCi0gICAgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgCi0gICAgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCAKLSAgICA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIAotICAgIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgCi0gICAgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgCi0gICAgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIAotICAgIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIAotICAgIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgCi0gICAgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgCi0gICAgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg0LCAKLSAgICA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIAotICAgIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgCi0gICAgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCA3OSwgNzksIDgwLCAKLSAgICA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIAotICAgIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAKLSAgICAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIAotICAgIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgNzUsIAotICAgIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAxMjgsIAotICAgIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgNzksIDY1LCAxMjgsIDc1LCA3OCwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCAKLSAgICA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCAKLSAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIAotICAgIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIAotICAgIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIAotICAgIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKLSAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgMTk5LCA3NSwgCi0gICAgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgNzUsIDczLCAKLSAgICA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCA3NSwgNzMsIAotICAgIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCAKLSAgICA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgCi0gICAgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIDY1LCAKLSAgICA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzMsIDEyOCwgNzUsIAotICAgIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgCi0gICAgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgCi0gICAgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCAKLSAgICA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCA3NSwgNzIsIAotICAgIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgCi0gICAgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgCi0gICAgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCAKLSAgICA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIAotICAgIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgCisgICAgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAKKyAgICAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAKKyAgICAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgMTI4LCA3NSwgODcsIDY1LCAKKyAgICA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCAKKyAgICA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCAKKyAgICA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIAorICAgIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgCisgICAgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCAKKyAgICA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgCisgICAgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDY2LCAxMjgsIAorICAgIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDEyOCwgNzUsIDg1LCA1NSwgCisgICAgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIAorICAgIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgCisgICAgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgCisgICAgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCAKKyAgICA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIAorICAgIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgCisgICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIAorICAgIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCAKKyAgICA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIAorICAgIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgCisgICAgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgCisgICAgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDcyLCAxMjgsIDc1LCAKKyAgICA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NiwgMTI4LCAKKyAgICA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIAorICAgIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgCisgICAgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCAKKyAgICA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgCisgICAgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKKyAgICA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIAorICAgIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgCisgICAgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgCisgICAgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAKKyAgICAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKKyAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIAorICAgIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgCisgICAgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAKKyAgICAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCAKKyAgICA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCAKKyAgICA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCAKKyAgICA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgCisgICAgNzMsIDg3LCAxMjgsIDc1LCA3MywgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCAKKyAgICA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIAorICAgIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCAKKyAgICA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIAorICAgIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIAorICAgIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgCisgICAgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCAKKyAgICA4MiwgMTI4LCA3NSwgNzMsIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCAKKyAgICA2OSwgODYsIDY1LCAyMDYsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIAorICAgIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIAorICAgIDEyOCwgNzUsIDczLCA2NSwgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIAorICAgIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAKKyAgICAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIAorICAgIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgCisgICAgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCAKKyAgICA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCAKKyAgICA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIAorICAgIDcyLCAyMDEsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgCisgICAgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgCisgICAgNjUsIDg2LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIAogICAgIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgCiAgICAgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCAKICAgICA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDgwLCAxMjgsIAotICAgIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzUsIDY5LCA4OCwgCisgICAgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgCisgICAgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAKKyAgICA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIAogICAgIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgCiAgICAgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCAKICAgICA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIApAQCAtMjI4NSwxNTYwICsyNTUzLDE2MjYgQEAKICAgICA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIAogICAgIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAKICAgICAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCAKLSAgICA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIAotICAgIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCA2NiwgMTI4LCA3NSwgNjUsIAotICAgIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4OSwgNjUsIDIwMCwgCi0gICAgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIDEyOCwgNzUsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgCi0gICAgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCAKLSAgICA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgCi0gICAgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCAKLSAgICA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIAotICAgIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgCi0gICAgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCAKLSAgICA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIAotICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCi0gICAgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAotICAgIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgCi0gICAgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgCi0gICAgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCAKLSAgICA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIAotICAgIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgCi0gICAgNzUsIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCA2NSwgNzAsIDY1LCAKLSAgICAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgCi0gICAgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCA3NSwgNjUsIDY4LCAKLSAgICA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIDY1LCAKLSAgICA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCAKLSAgICA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIAotICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIDg1LCAxMjgsIAotICAgIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIDEyOCwgNzQsIAotICAgIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA3OSwgODUsIAotICAgIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgCi0gICAgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIAotICAgIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgCi0gICAgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCAKLSAgICA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIAotICAgIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIAotICAgIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAKLSAgICAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgCi0gICAgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgCi0gICAgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCAKLSAgICA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMTI4LCA3NCwgNjUsIAotICAgIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCAKLSAgICA2OSwgMTk2LCAyMDIsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIAotICAgIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCA3MywgODksIDY5LCA3NSwgCi0gICAgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIDczLCA4NSwgMTI4LCA3MywgCi0gICAgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIDczLCAKLSAgICA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIAotICAgIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgCi0gICAgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIAotICAgIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAKLSAgICAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIAotICAgIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCAKLSAgICA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIAotICAgIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIAotICAgIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIAotICAgIDc5LCA2NywgNzUsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDczLCA3OCwgCi0gICAgODQsIDY5LCA4MiwgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgNzMsIDc4LCAKLSAgICA4NCwgNjksIDgyLCA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIDY5LCAxMjgsIAotICAgIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCA4NCwgNjksIAotICAgIDcxLCA4MiwgNjUsIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIDg1LCA3NywgCi0gICAgNjksIDc4LCA4NCwgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA2OSwgODIsIDg0LCAKLSAgICA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgMTI4LCA3MywgNzgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIAotICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAyMTIsIDczLCA3OCwgNzgsIDc5LCA2NywgNjksIDc4LCA2NywgCi0gICAgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDczLCA3OCwgNzgsIDY5LCAKLSAgICAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgNzgsIDcxLCA4NSwgMTI4LCA3MywgNzgsIDczLCAxMjgsIDczLCAKLSAgICA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCA3MiwgNjksIDgyLCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA3MSwgODcsIAotICAgIDY1LCA5MCwgMTI4LCA3MywgNzgsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgCi0gICAgODUsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCAKLSAgICA3MywgNzgsIDczLCA4NCwgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIAotICAgIDczLCA4MiwgNjksIDY3LCAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA3MywgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIAotICAgIDc4LCA2NywgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgCi0gICAgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIAotICAgIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDczLCA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCAKLSAgICA3OCwgNDUsIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIAotICAgIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAKLSAgICAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIAotICAgIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgCi0gICAgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCAKLSAgICA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIAotICAgIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDczLCA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIAotICAgIDc3LCA3NywgODUsIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAKLSAgICAyMTMsIDczLCA3NiwgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCAKLSAgICA3NCwgMTI4LCA3MywgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCAKLSAgICA3MywgNzEsIDcxLCA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAotICAgIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAKLSAgICA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKLSAgICA3MSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDgwLCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgCi0gICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgCi0gICAgMTI4LCA3MywgNjgsIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCAKLSAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCAKLSAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDcyLCA3OSwgODUsIAotICAgIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgCi0gICAgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIAotICAgIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIAotICAgIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCAKLSAgICA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIAotICAgIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgCi0gICAgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKLSAgICA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCAKLSAgICA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIAotICAgIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIAotICAgIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIAotICAgIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgCi0gICAgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgCi0gICAgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg4LCA4NywgNzEsIDEyOCwgNzIsIDg4LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA3OSwgCi0gICAgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgMTI4LCA3MiwgCi0gICAgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAxMjgsIDcyLCAKLSAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCA4OCwgNjksIAotICAgIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIDEyOCwgNzIsIAotICAgIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIDg1LCAxMjgsIAotICAgIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgCi0gICAgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMTI4LCAKLSAgICA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAxOTYsIDcyLCA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIAotICAgIDcyLCA4NSwgNzcsIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgCi0gICAgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCAKLSAgICA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIAotICAgIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIAotICAgIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgCi0gICAgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCAKLSAgICA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAotICAgIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgCi0gICAgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgMTkzLCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgCisgICAgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCAKKyAgICA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgCisgICAgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgCisgICAgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCAKKyAgICA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIAorICAgIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIAorICAgIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgCisgICAgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCAKKyAgICA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIAorICAgIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCAKKyAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIAorICAgIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgCisgICAgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIAorICAgIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAKKyAgICAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIAorICAgIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKKyAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIAorICAgIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgCisgICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgCisgICAgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCAKKyAgICA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIAorICAgIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgCisgICAgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgCisgICAgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgCisgICAgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgCisgICAgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAKKyAgICAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAKKyAgICAxMjgsIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKKyAgICA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIAorICAgIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIAorICAgIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgCisgICAgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgCisgICAgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCAKKyAgICA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIAorICAgIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgCisgICAgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgCisgICAgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKKyAgICA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIAorICAgIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIAorICAgIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCAKKyAgICA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIAorICAgIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgCisgICAgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIAorICAgIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgCisgICAgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgCisgICAgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIAorICAgIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIAorICAgIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgCisgICAgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCAKKyAgICA2NSwgODcsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIAorICAgIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgCisgICAgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIAorICAgIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgNzQsIDY1LCA3MiwgCisgICAgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKKyAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAorICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgCisgICAgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCAKKyAgICA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIAorICAgIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgCisgICAgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIDIxMSwgNzMsIDgzLCAKKyAgICA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIAorICAgIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgCisgICAgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIAorICAgIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIDY2LCAxMjgsIDczLCA3OSwgCisgICAgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIAorICAgIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIAorICAgIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgCisgICAgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCAKKyAgICA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIAorICAgIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCAKKyAgICA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3OSwgNjcsIDc1LCAKKyAgICA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgNzgsIDg0LCAKKyAgICA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCAKKyAgICAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCA4NSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIDY4LCAxOTcsIDczLCA3OCwgCisgICAgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAxMjgsIDczLCA3OCwgODMsIDY3LCAKKyAgICA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIDIxMiwgNzMsIDc4LCA3OCwgNzksIAorICAgIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgCisgICAgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDczLCAKKyAgICA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIDcyLCA2OSwgODIsIDY5LCA3OCwgCisgICAgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgOTAsIDEyOCwgNzMsIDc4LCAKKyAgICA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCA2OSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIAorICAgIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgODIsIDY5LCA2NywgCisgICAgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCAKKyAgICA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIAorICAgIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgCisgICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIAorICAgIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCAKKyAgICA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgCisgICAgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIAorICAgIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgCisgICAgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCAKKyAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgCisgICAgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCAKKyAgICA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgCisgICAgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCAKKyAgICA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIAorICAgIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgCisgICAgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgCisgICAgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAorICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKKyAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgCisgICAgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgCisgICAgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAKKyAgICAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIAorICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgCisgICAgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCAKKyAgICA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIAorICAgIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAKKyAgICAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCAKKyAgICA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgCisgICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgCisgICAgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgCisgICAgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAorICAgIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgCisgICAgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCAKKyAgICA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIAorICAgIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCAKKyAgICA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgCisgICAgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCAKKyAgICA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgNzIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCAKKyAgICA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgMTI4LCA3MiwgODUsIAorICAgIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDgzLCAKKyAgICAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIAorICAgIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgCisgICAgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCAKKyAgICA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCAKKyAgICA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIAorICAgIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgCisgICAgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCAKKyAgICA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgCisgICAgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgCisgICAgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAKKyAgICAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCAKKyAgICA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCAKKyAgICA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIAogICAgIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgCiAgICAgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCAKLSAgICA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIAotICAgIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgCi0gICAgNzksIDczLCAxMjgsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgODQsIAotICAgIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgNzIsIAotICAgIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgCi0gICAgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIDY5LCAKLSAgICA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIDcyLCAKLSAgICA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIAotICAgIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIAotICAgIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCAKLSAgICA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIAotICAgIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIAotICAgIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgCi0gICAgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAKLSAgICAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCAKLSAgICA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIAotICAgIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCAKLSAgICA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCAKLSAgICA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgCi0gICAgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgCi0gICAgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIDEyOCwgCi0gICAgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIDcyLCAKLSAgICA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIAotICAgIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCAKLSAgICA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgCi0gICAgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAorICAgIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgCisgICAgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCAKKyAgICA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIAorICAgIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgCisgICAgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKKyAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKKyAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAorICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCisgICAgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCAKKyAgICA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIAorICAgIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIAorICAgIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgCisgICAgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKKyAgICA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCAKKyAgICA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIAorICAgIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgCisgICAgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCAKKyAgICA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCAKKyAgICA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIAorICAgIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCisgICAgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAKKyAgICAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCAKKyAgICA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIAorICAgIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIAorICAgIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgCisgICAgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIAorICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCAKKyAgICA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIAorICAgIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCAKKyAgICA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAorICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCisgICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAogICAgIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgCiAgICAgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCAKICAgICA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCAKLSAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIAotICAgIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgCi0gICAgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCAKLSAgICA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIAotICAgIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgNjcsIAotICAgIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgCi0gICAgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDc2LCAKLSAgICAyMTcsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCA2OSwgNjUsIAotICAgIDgyLCA4NCwgODMsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDcyLCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgNDUsIDY5LCAKLSAgICA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCA2NSwgNjgsIAotICAgIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCAKLSAgICA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgNzIsIAotICAgIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgCi0gICAgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCAKLSAgICA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIAotICAgIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgCi0gICAgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIAotICAgIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgMjExLCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIAotICAgIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgCi0gICAgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIAotICAgIDc2LCA3MCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgCi0gICAgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIAotICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgCi0gICAgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCAKLSAgICA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIAotICAgIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIAotICAgIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIAotICAgIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIAotICAgIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIAotICAgIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIAotICAgIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgCi0gICAgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIAotICAgIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDczLCA4NCwgNjUsIAotICAgIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIAotICAgIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgCi0gICAgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCAKLSAgICA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCAKLSAgICA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIAotICAgIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgCi0gICAgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCAKLSAgICA2OSwgNjksIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIAotICAgIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKLSAgICA2NSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIAotICAgIDg2LCA2OSwgODksIDY1LCA4MiwgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCi0gICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAKLSAgICA4MywgMTI4LCA3MSwgODIsIDY1LCA4MywgMjExLCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgCi0gICAgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCAKLSAgICA2NSwgNjcsIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIAotICAgIDcxLCA3OSwgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgCi0gICAgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCAKLSAgICA3MSwgNzksIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIAotICAgIDc4LCA3MSwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIDc4LCAxOTksIAotICAgIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgMjA0LCA3MSwgCi0gICAgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAKLSAgICAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIAotICAgIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAKLSAgICAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCAKLSAgICA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCAKLSAgICA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIAotICAgIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIAotICAgIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgCi0gICAgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCAKLSAgICA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCAKLSAgICA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIAotICAgIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgCi0gICAgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCAKLSAgICA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIAotICAgIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAKLSAgICAxMjgsIDcxLCA3MiwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIAotICAgIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgNzIsIDY1LCAKLSAgICA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCA3MSwgNzEsIAotICAgIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA3MSwgCi0gICAgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgNzksIAotICAgIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIDc5LCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgMTI4LCA3MSwgCi0gICAgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAxMjgsIDcxLCAKLSAgICA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCA3MSwgNjksIAotICAgIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIAotICAgIDcxLCA2OSwgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAKLSAgICAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIAotICAgIDY5LCA4MywgNzIsIDUwLCAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgCi0gICAgNzcsIDY1LCAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCAKLSAgICA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgCi0gICAgODIsIDczLCAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIAotICAgIDEyOCwgNzEsIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgCi0gICAgNzMsIDc4LCA3MywgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCAKKyAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIAorICAgIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKKyAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAorICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCisgICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCAKKyAgICA2NSwgNjksIDg1LCAyMDUsIDcyLCA2OSwgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIAorICAgIDEyOCwgNzIsIDY5LCA3NiwgNzcsIDY5LCA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgCisgICAgMjA1LCA3MiwgNjksIDc2LCA3MywgNjcsIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCAKKyAgICA2NSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3MiwgNjksIDY5LCA3MywgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAKKyAgICA3OCwgNzYsIDIxNywgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIAorICAgIDY5LCA2NSwgODIsIDg0LCA4MywgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgCisgICAgNzIsIDY5LCA2NSwgODIsIDg0LCAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCAKKyAgICA0NSwgNjksIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIAorICAgIDY1LCA2OCwgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgCisgICAgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNDUsIDY2LCA2NSwgNzgsIDY4LCA2NSwgNzEsIAorICAgIDY5LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAKKyAgICAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgCisgICAgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCAKKyAgICA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgCisgICAgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIAorICAgIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgCisgICAgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCAKKyAgICA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgCisgICAgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCAKKyAgICA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIAorICAgIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCAKKyAgICA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgCisgICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgCisgICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAKKyAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIAorICAgIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCAKKyAgICA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIAorICAgIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgCisgICAgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCAKKyAgICA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIAorICAgIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgCisgICAgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCAKKyAgICA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIAorICAgIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAKKyAgICAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIAorICAgIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCAKKyAgICA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCAKKyAgICA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIAorICAgIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCAKKyAgICA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIAorICAgIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIAorICAgIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgCisgICAgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCAKKyAgICA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIAorICAgIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIAorICAgIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCAKKyAgICA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIAorICAgIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIAorICAgIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCAKKyAgICA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIAorICAgIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgCisgICAgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgCisgICAgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIAorICAgIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCisgICAgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIAorICAgIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgCisgICAgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCAKKyAgICA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIDcxLCA4MiwgNjUsIDc3LCA3NywgCisgICAgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCA2NSwgNjcsIAorICAgIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIDcxLCA3OSwgCisgICAgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAKKyAgICA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIAorICAgIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgCisgICAgMTI4LCA3MSwgNzksIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgCisgICAgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCAKKyAgICA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIAorICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgCisgICAgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCAKKyAgICA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgCisgICAgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgCisgICAgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCAKKyAgICA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMjExLCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCAKKyAgICA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCAKKyAgICA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIAorICAgIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA3MSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgCisgICAgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCAKKyAgICA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAKKyAgICAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIAorICAgIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIAorICAgIDcyLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgCisgICAgNjksIDg5LCA4MywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAxMjgsIDcxLCAKKyAgICA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgCisgICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAxMjgsIAorICAgIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA4MiwgCisgICAgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCAKKyAgICA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgCisgICAgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCAKKyAgICA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIAorICAgIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgCisgICAgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCAKKyAgICA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA2OSwgODQsIAorICAgIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgCisgICAgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAKKyAgICAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIAorICAgIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgCisgICAgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCAKKyAgICA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIAorICAgIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgCisgICAgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCAKICAgICA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIAotICAgIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIAotICAgIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgCi0gICAgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCAKLSAgICA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIAotICAgIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAKLSAgICAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIAotICAgIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgCi0gICAgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCAKLSAgICA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIAotICAgIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgCi0gICAgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgCi0gICAgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCAKLSAgICA2NSwgNjgsIDEyOCwgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCAKLSAgICA2NSwgNzAsIDg1LCAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCAKLSAgICA3MSwgNDgsIDUzLCA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIAotICAgIDUyLCA1NywgMTI4LCA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgCi0gICAgMTI4LCA3MSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgCi0gICAgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCAKLSAgICA1MSwgNDgsIDEyOCwgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTAsIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA3MSwgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA3MSwgNDgsIDQ5LCA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAKLSAgICAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIAotICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgCi0gICAgMTI4LCA3MCwgODksIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIAotICAgIDcwLCA4NywgNjksIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgCi0gICAgMTI4LCA3MCwgODYsIDgzLCA1MSwgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgODYsIDgzLCA0OSwgMTI4LCA3MCwgCi0gICAgODUsIDg4LCAxMjgsIDcwLCA4NSwgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MCwgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCAKLSAgICA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzAsIAotICAgIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIDEyOCwgCi0gICAgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCAKLSAgICA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIAotICAgIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgCi0gICAgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCAKLSAgICA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIAotICAgIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgCi0gICAgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCAKLSAgICA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIAotICAgIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgCi0gICAgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCAKLSAgICA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIAotICAgIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgCi0gICAgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgCi0gICAgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCAKLSAgICA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgCi0gICAgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCAKLSAgICA3MCwgNzksIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA3MCwgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCAKLSAgICA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIAotICAgIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIAotICAgIDcxLCA4OSwgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAKLSAgICAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIAotICAgIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgCi0gICAgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCAKLSAgICA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIAotICAgIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIDQ1LCA3NiwgNzMsIDgzLCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzAsIDc2LCA2NSwgMjEyLCA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgNzAsIAotICAgIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCi0gICAgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIDcwLCAKLSAgICA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIDczLCAKLSAgICA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgODQsIAotICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCA4NiwgCi0gICAgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgCi0gICAgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKLSAgICA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgCi0gICAgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgCi0gICAgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCAKLSAgICA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCAKLSAgICA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIAotICAgIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgCi0gICAgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCAKLSAgICA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAotICAgIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCi0gICAgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIAotICAgIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgCi0gICAgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCAKLSAgICA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIAotICAgIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgCi0gICAgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCAKLSAgICA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgCi0gICAgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCAKLSAgICA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCAKLSAgICA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIAotICAgIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAKLSAgICAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIAotICAgIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIAotICAgIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgCi0gICAgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCAKLSAgICA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODEsIAotICAgIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgCi0gICAgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCAKLSAgICA3MywgNzgsIDE5OSwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIAotICAgIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgMTI4LCA3MCwgCi0gICAgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCA2NywgODMsIDczLCAKLSAgICA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgCi0gICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCAKLSAgICA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIAotICAgIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAotICAgIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIAotICAgIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCAKLSAgICA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCAKLSAgICA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCAKLSAgICA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNzYsIAotICAgIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIAotICAgIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgCi0gICAgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKLSAgICA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIAotICAgIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgCi0gICAgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAotICAgIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgCi0gICAgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCAKLSAgICA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgCi0gICAgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIAotICAgIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIAotICAgIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgCi0gICAgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCAKLSAgICA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIAotICAgIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCi0gICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKLSAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAotICAgIDE3OCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgCi0gICAgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCAKLSAgICA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIAotICAgIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAKLSAgICAyMTIsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCisgICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgCisgICAgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCAKKyAgICA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIAorICAgIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAKKyAgICAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIAorICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgCisgICAgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKKyAgICA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAorICAgIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgCisgICAgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIAorICAgIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIAorICAgIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgCisgICAgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKKyAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCAKKyAgICA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAorICAgIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIAorICAgIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIAorICAgIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgCisgICAgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAKKyAgICAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCAKKyAgICA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIAorICAgIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAKKyAgICAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCAKKyAgICA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIAorICAgIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgCisgICAgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIAorICAgIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgCisgICAgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCAKKyAgICA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAKKyAgICAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCAKKyAgICA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCAKKyAgICA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIAorICAgIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCAKKyAgICA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIAorICAgIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIAorICAgIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgCisgICAgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCAKKyAgICA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIAorICAgIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIAorICAgIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgCisgICAgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCAKKyAgICA4MiwgNjksIDc4LCA2NywgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIAorICAgIDc4LCA3NSwgMjExLCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCisgICAgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIAorICAgIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgCisgICAgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIAorICAgIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgCisgICAgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCAKKyAgICA4MywgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIAorICAgIDgyLCA4NywgNjUsIDgyLCAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgCisgICAgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIDc1LCA2OSwgMTk2LCA3MCwgNzksIAorICAgIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgCisgICAgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCAKKyAgICA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIAorICAgIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAxMjgsIDcwLCA3OSwgNzksIDc2LCAKKyAgICAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCA3OCwgMjEyLCA3MCwgNzksIDc4LCAKKyAgICA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIAorICAgIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgCisgICAgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgCisgICAgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCAKKyAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIAorICAgIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCisgICAgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIDg1LCAKKyAgICA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgODIsIAorICAgIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCA3OSwgCisgICAgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDczLCAKKyAgICA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIAorICAgIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgCisgICAgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCAKKyAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgCisgICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCAKKyAgICA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIAorICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCAKKyAgICA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgCisgICAgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAKKyAgICAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIAorICAgIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKKyAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAorICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCisgICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKKyAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAorICAgIDcxLCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCisgICAgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCAKKyAgICA2OSwgODIsIDQ1LCA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIAorICAgIDY5LCAyMTAsIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAKKyAgICAxMjgsIDcwLCA3MywgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAorICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAorICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKKyAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAorICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCAKKyAgICA2OSwgNzYsIDE5NiwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCAKKyAgICA3MCwgNjksIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIAorICAgIDg0LCA3MywgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAKKyAgICAyMTEsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIAorICAgIDY5LCA3OSwgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgCisgICAgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCAKKyAgICA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIAorICAgIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIAorICAgIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIAorICAgIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgCisgICAgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCAKKyAgICA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIAorICAgIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgCisgICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAKKyAgICA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIAorICAgIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgCisgICAgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgCisgICAgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCAKKyAgICA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzQsIAorICAgIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgCisgICAgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIAorICAgIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgCisgICAgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCAKKyAgICA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIAorICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCAKKyAgICA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIAorICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIAorICAgIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgCisgICAgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgCisgICAgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgCisgICAgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIAorICAgIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgCisgICAgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCAKKyAgICA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCisgICAgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAorICAgIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY5LCA3NywgNjksIDc2LCAyMTcsIAorICAgIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCAKKyAgICA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIAorICAgIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgCisgICAgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCAKKyAgICA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIAorICAgIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgCisgICAgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCAKKyAgICA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIAorICAgIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCAKKyAgICA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIAorICAgIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgCisgICAgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIAorICAgIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgCisgICAgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgCisgICAgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCAKKyAgICA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIAorICAgIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCisgICAgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAKKyAgICAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIAorICAgIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgCisgICAgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAKKyAgICAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCAKKyAgICA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIAorICAgIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAKKyAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCAKKyAgICA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgCisgICAgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIAogICAgIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgCiAgICAgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIAogICAgIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgCiAgICAgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIAotICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgNzksIDg0LCAxMjgsIDY5LCA3OSwgCi0gICAgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgCi0gICAgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCAKLSAgICA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIAotICAgIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgCi0gICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCAKLSAgICA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIAotICAgIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAKLSAgICAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCAKLSAgICA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIAotICAgIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgCi0gICAgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIAotICAgIDc5LCA4MywgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgCi0gICAgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCAKLSAgICA2NSwgODQsIDczLCAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIAotICAgIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgCi0gICAgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OSwgNzYsIDg0LCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIAotICAgIDczLCA4MywgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgCi0gICAgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIAotICAgIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgMTk1LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIAotICAgIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc0LCA2OSwgCi0gICAgNjcsIDIxMiwgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgMjE3LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgCi0gICAgNzEsIDcyLCA4NCwgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIAotICAgIDEyOCwgNjksIDczLCA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgCi0gICAgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCAKKyAgICA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIAorICAgIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIAorICAgIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgCisgICAgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNDksIDEyOCwgCisgICAgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIDcyLCA4NSwgODMsIDczLCAKKyAgICA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIAorICAgIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgCisgICAgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCAKKyAgICA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCAKKyAgICA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIAorICAgIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgCisgICAgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCAKKyAgICA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIAorICAgIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIAorICAgIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAKKyAgICAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIDc0LCAyMDEsIDY5LCA3NywgNjYsIAorICAgIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgCisgICAgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgCisgICAgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAKKyAgICAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgCisgICAgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjYsIAorICAgIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgCisgICAgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCAKKyAgICA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIDc0LCA2OSwgNjcsIDIxMiwgCisgICAgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjE3LCAKKyAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIAorICAgIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgCisgICAgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCAKKyAgICA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAorICAgIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIAogICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgCiAgICAgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIAotICAgIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAKLSAgICAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCAKLSAgICA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIAotICAgIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgCi0gICAgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgCi0gICAgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgCi0gICAgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCAKLSAgICA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCAKKyAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgCisgICAgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCAKKyAgICA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIAorICAgIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgCisgICAgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCAKKyAgICA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIAorICAgIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgCisgICAgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCAKICAgICA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIAotICAgIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCAKLSAgICA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKKyAgICA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCAKKyAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgCisgICAgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCAKKyAgICA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKICAgICA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIAogICAgIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgCiAgICAgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCAKICAgICA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIAogICAgIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIAotICAgIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIAotICAgIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIAotICAgIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgCi0gICAgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCAKLSAgICA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIAotICAgIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgCi0gICAgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCAKLSAgICA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIAotICAgIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCi0gICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIAotICAgIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCisgICAgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NiwgCisgICAgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIAorICAgIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgCisgICAgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCAKKyAgICA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIAorICAgIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgCisgICAgMTI4LCA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCAKKyAgICA2NSwgNzcsIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIAorICAgIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCisgICAgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCAKKyAgICA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCiAgICAgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIAotICAgIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgCi0gICAgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgODQsIDg0LCAKLSAgICA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIAotICAgIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCAKLSAgICAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIAotICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAorICAgIDg2LCAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgCisgICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCAKKyAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAogICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKQEAgLTM5NTIsMzkyICs0Mjg2LDQzNiBAQAogICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCiAgICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKICAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCAKLSAgICA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIAotICAgIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCAKLSAgICA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIDcyLCA2NSwgMTI4LCAKLSAgICA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIDY1LCA4MiwgMTI4LCAKLSAgICA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgODIsIDg2LCAxMjgsIAotICAgIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgCi0gICAgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIAotICAgIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIAotICAgIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgCi0gICAgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIAotICAgIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgCi0gICAgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCAKLSAgICA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgCi0gICAgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDgwLCA4NCwgNjksIAotICAgIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgCi0gICAgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCAKLSAgICA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAKLSAgICAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIAotICAgIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgCi0gICAgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCAKLSAgICA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIAotICAgIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgCi0gICAgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCAKLSAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgCi0gICAgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCAKLSAgICA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgCi0gICAgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCAKLSAgICA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIAotICAgIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgCi0gICAgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCAKLSAgICA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgCi0gICAgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCAKLSAgICA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIAotICAgIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAKLSAgICAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIAotICAgIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIAotICAgIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgCi0gICAgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAKLSAgICAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIAotICAgIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgCi0gICAgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAKLSAgICAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCA2OCwgNjksIDg5LCAKLSAgICA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIAotICAgIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgMjAzLCA2OCwgNjksIDgzLCA3MywgNzEsIDc4LCAKLSAgICAxMjgsIDY4LCA2OSwgODMsIDczLCAxMjgsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIAotICAgIDg0LCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDg1LCA4MiwgNjksIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCAKLSAgICA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIAotICAgIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgCi0gICAgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIDc4LCA3MSwgMTI4LCA2OCwgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCAKLSAgICA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDg0LCA2NSwgMTI4LCA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIAotICAgIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCA4MCwgNzIsIDczLCAxOTUsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAKLSAgICAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIAotICAgIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgCi0gICAgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCA3NiwgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIAotICAgIDE5NywgNjgsIDY5LCA3NSwgNjUsIDEyOCwgNjgsIDY5LCA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIAotICAgIDczLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIDczLCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAyMTEsIDY4LCA2OSwgNjksIDgyLCAKLSAgICAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIDEyOCwgNjgsIDY5LCA2NywgODIsIAotICAgIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA2OCwgCi0gICAgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY4LCA2OSwgNjcsIDczLCA4MywgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgCi0gICAgNzMsIDc3LCA2NSwgMjA0LCA2OCwgNjksIDY3LCA3MywgNjgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjcsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIAotICAgIDY4LCA2OSwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDY1LCA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4NCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCAKLSAgICA4NSwgODIsIDEyOCwgNjgsIDY4LCA4NSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIAotICAgIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIAotICAgIDY4LCA2OCwgNzksIDg0LCAxMjgsIDY4LCA2OCwgNzksIDgwLCAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgCi0gICAgNzMsIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDg0LCAxMjgsIDY4LCA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCAKLSAgICA2OCwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNjgsIAotICAgIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCA2OCwgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAKLSAgICAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgCi0gICAgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICA2NywgODMsIDEyOCwgNjgsIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCAKLSAgICA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCAKLSAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAotICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCi0gICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCi0gICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKLSAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKLSAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCi0gICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCi0gICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIAotICAgIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgCi0gICAgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCAKLSAgICA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIAotICAgIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgCi0gICAgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgCi0gICAgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgCi0gICAgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCAKLSAgICA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIAotICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKLSAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAotICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKLSAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAotICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKLSAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAotICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCi0gICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAotICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAotICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCi0gICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCi0gICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKLSAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAotICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCi0gICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg5LCAKLSAgICAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCAKLSAgICA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIAotICAgIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCAKLSAgICA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIAotICAgIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCAKLSAgICA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIAotICAgIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgCi0gICAgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgCi0gICAgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCAKLSAgICA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgCi0gICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCAKLSAgICA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIAotICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCAKLSAgICA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIAotICAgIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCAKLSAgICA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIAotICAgIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgCi0gICAgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIAotICAgIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIAotICAgIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgCi0gICAgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCAKLSAgICA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIAotICAgIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgCi0gICAgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCAKLSAgICA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgCi0gICAgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKLSAgICA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIAotICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCAKLSAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIAotICAgIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgCi0gICAgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIAotICAgIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAKLSAgICAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCAKLSAgICA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIAotICAgIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKLSAgICA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCAKKyAgICA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCisgICAgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCAKKyAgICA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAKKyAgICAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCAKKyAgICA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCAKKyAgICA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIAorICAgIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIAorICAgIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgCisgICAgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCAKKyAgICA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIAorICAgIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIAorICAgIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIAorICAgIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgCisgICAgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCAKKyAgICA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIAorICAgIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgCisgICAgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCAKKyAgICA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIAorICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgCisgICAgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCAKKyAgICA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgCisgICAgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCAKKyAgICA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCAKKyAgICA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIAorICAgIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCAKKyAgICA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAorICAgIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCisgICAgMjA2LCA2OCwgNzMsIDcxLCA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCAKKyAgICA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIAorICAgIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgCisgICAgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIAorICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgCisgICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCAKKyAgICA4MywgNjksIDIwNCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCAKKyAgICA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIAorICAgIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgCisgICAgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAKKyAgICAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIAorICAgIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgCisgICAgNzYsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCAKKyAgICA2OSwgODMsIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgCisgICAgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCAKKyAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MywgMTI4LCAKKyAgICA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIAorICAgIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgCisgICAgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCAKKyAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIAorICAgIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCAKKyAgICA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgCisgICAgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCAKKyAgICA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIAorICAgIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgCisgICAgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCAKKyAgICA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIAorICAgIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgCisgICAgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCAKKyAgICA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIAorICAgIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgCisgICAgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCAKKyAgICA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIAorICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgCisgICAgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCAKKyAgICA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIAorICAgIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCAKKyAgICA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIAorICAgIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgCisgICAgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAKKyAgICA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDIxMSwgNjgsIDY5LCA2OSwgCisgICAgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgMTI4LCA2OCwgNjksIDY3LCAKKyAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIAorICAgIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgCisgICAgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIAorICAgIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgCisgICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCAKKyAgICA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIAorICAgIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIAorICAgIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgCisgICAgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIAorICAgIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIAorICAgIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgCisgICAgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAKKyAgICAxMjgsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCAKKyAgICA2OCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIAorICAgIDY4LCA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgCisgICAgNjUsIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCAKKyAgICA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIAorICAgIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgCisgICAgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIAorICAgIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAKKyAgICAxMjgsIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIAorICAgIDY1LCA4NCwgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgCisgICAgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCAKKyAgICA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgCisgICAgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgCisgICAgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCAKKyAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIAorICAgIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgCisgICAgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCAKKyAgICA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgCisgICAgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCAKKyAgICA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAKKyAgICAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCAKKyAgICA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgCisgICAgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIAorICAgIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgCisgICAgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCAKKyAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCAKKyAgICA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIAorICAgIDQ4LCA1NCwgNTUsIDcxLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgCisgICAgNjgsIDQ4LCA1NCwgNTUsIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIAorICAgIDY4LCA0OCwgNTQsIDUzLCAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgCisgICAgNTQsIDUwLCAxMjgsIDY4LCA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDUzLCAxMjgsIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA1MSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgCisgICAgNDksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA0OCwgNzEsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA0OCwgNjgsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MiwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgCisgICAgMTI4LCA2OCwgNDgsIDUyLCA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIAorICAgIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgCisgICAgNTAsIDU3LCAxMjgsIDY4LCA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA2OCwgNDgsIDUwLCA1MSwgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA2OCwgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2OCwgNDgsIDQ5LCA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1MSwgMTI4LCA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA0OCwgMTI4LCA2OCwgNDgsIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjgsIDQ4LCA0OCwgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNjcsIDg5LCA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgCisgICAgODIsIDY5LCA3OCwgNjUsIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCAKKyAgICA2NywgODksIDgwLCA2OSwgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIAorICAgIDgyLCA3MywgNjcsIDczLCA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgCisgICAgODksIDEyOCwgNjcsIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgCisgICAgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCAKKyAgICA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCAKKyAgICA4NSwgODUsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIAorICAgIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAorICAgIDY5LCA2OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgCisgICAgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIDY3LCAKKyAgICA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgNjcsIAorICAgIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgCisgICAgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgCisgICAgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAKKyAgICAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCAKKyAgICA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgCisgICAgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCAKKyAgICA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIAorICAgIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIAorICAgIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgCisgICAgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIAorICAgIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAKKyAgICAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCisgICAgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgCisgICAgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgNjcsIDgyLCAKKyAgICA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCA4MiwgNjksIAorICAgIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgCisgICAgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCAKKyAgICA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCA2NSwgNjYsIAorICAgIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCAKKyAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgCisgICAgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKKyAgICA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIAorICAgIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgCisgICAgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCAKKyAgICA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIAorICAgIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgCisgICAgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCAKKyAgICA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIAorICAgIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCisgICAgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIAorICAgIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgCisgICAgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCAKKyAgICA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgCisgICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCAKKyAgICA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCisgICAgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCAKKyAgICA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAKICAgICAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAogICAgIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgCiAgICAgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCAKICAgICA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgCi0gICAgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAotICAgIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIAotICAgIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCi0gICAgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCAKLSAgICA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCA2OCwgMTI4LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIAotICAgIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgCi0gICAgNzYsIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIAotICAgIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgCi0gICAgNjUsIDEyOCwgNjcsIDc5LCAxMjgsIDY3LCA3NywgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIAotICAgIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgCi0gICAgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIAotICAgIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgCi0gICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCAKLSAgICA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIAotICAgIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgCi0gICAgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCAKLSAgICA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIAotICAgIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgCi0gICAgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCAKLSAgICA3NiwgNjUsIDg3LCAxMjgsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIAotICAgIDIxMCwgNjcsIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIAotICAgIDg4LCAxMjgsIDY3LCA3MywgODYsIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgCi0gICAgODAsIDE5NywgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCAKLSAgICA3NywgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIAotICAgIDgyLCA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgNzMsIDgyLCA2NywgNzYsIDY5LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAKLSAgICAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgCi0gICAgNzMsIDY5LCA4NSwgNjcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIDY3LCA3MywgCi0gICAgNjksIDgwLCAxMjgsIDY3LCA3MywgNjksIDEyOCwgNjcsIDcyLCA4OSwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODQsIDEyOCwgCi0gICAgNjcsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODksIDgyLCAxMjgsIDY3LCA3MiwgODksIDgwLCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgNjcsIDcyLCAxMjgsIAotICAgIDY3LCA3MiwgODUsIDgyLCAxMjgsIDY3LCA3MiwgODUsIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4OCwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA3OSwgODQsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDY3LCA3MiwgODUsIDc5LCAxMjgsIDY3LCAKLSAgICA3MiwgODUsIDc2LCA2NSwgMTI4LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA3MiwgODIsIDg5LCA4MywgNjUsIDc4LCA4NCwgNzIsIAotICAgIDY5LCA3NywgODUsIDc3LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3OCwgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA3MiwgODIsIDc5LCA3NywgMTkzLCA2NywgNzIsIDgyLCA3OSwgMTkzLCA2NywgNzIsIDgyLCAKLSAgICA3MywgODYsIDczLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgODQsIDc3LCA2NSwgODMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIAotICAgIDgzLCA4NCwgNzcsIDY1LCAyMTEsIDY3LCA3MiwgNzksIDg4LCAxMjgsIDY3LCA3MiwgNzksIDg0LCAxMjgsIDY3LCA3MiwgCi0gICAgNzksIDgyLCA2OSwgODYsIDc3LCAxOTMsIDY3LCA3MiwgNzksIDgwLCAxMjgsIDY3LCA3MiwgNzksIDc1LCA2OSwgMTI4LCAKLSAgICA2NywgNzIsIDc5LCA2OSwgMTI4LCA2NywgNzIsIDc5LCA2NywgNzksIDc2LCA2NSwgODQsIDE5NywgNjcsIDcyLCA3OSwgNjUsIAotICAgIDEyOCwgNjcsIDcyLCAyMDcsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIAotICAgIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIAotICAgIDg1LCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNzIsIDczLCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDY3LCA3MiwgNzMsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNzMsIAotICAgIDc4LCA2OSwgODMsIDE5NywgNjcsIDcyLCA3MywgNzgsIDEyOCwgNjcsIDcyLCA3MywgNzcsIDY5LCAxMjgsIDY3LCA3MiwgCi0gICAgNzMsIDc2LCA3NiwgMjEzLCA2NywgNzIsIDczLCA3NiwgNjgsIDgyLCA2OSwgMjA2LCA2NywgNzIsIDczLCA3NiwgNjgsIAotICAgIDEyOCwgNjcsIDcyLCA3MywgNzYsIDEyOCwgNjcsIDcyLCA3MywgNzUsIDIwMSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgCi0gICAgNzIsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgNDUsIAotICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCAyMDAsIDY3LCA3MiwgNzMsIDY3LCA3NSwgCi0gICAgNjksIDc4LCAxMjgsIDY3LCA3MiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzIsIDczLCAxMjgsIDY3LCA3MiwgMjAxLCA2NywgCi0gICAgNzIsIDcyLCA2NSwgMTI4LCA2NywgNzIsIDY5LCA4OCwgMTI4LCA2NywgNzIsIDY5LCA4NiwgODIsIDc5LCAyMDYsIDY3LCAKLSAgICA3MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgNzgsIDg1LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgCi0gICAgMjExLCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIAorICAgIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIAorICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgCisgICAgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgCisgICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAKKyAgICA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIAorICAgIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgCisgICAgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgCisgICAgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIAorICAgIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgCisgICAgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgCisgICAgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAKKyAgICAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIAorICAgIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgCisgICAgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCAKKyAgICA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIAorICAgIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgCisgICAgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCAKKyAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIAorICAgIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgCisgICAgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCAKKyAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgNzMsIDY3LCA2NSwgCisgICAgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAyMTAsIDY3LCAKKyAgICA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIDc2LCAyMDQsIAorICAgIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgCisgICAgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgNzMsIDg0LCAKKyAgICA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCAKKyAgICA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIAorICAgIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgCisgICAgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCAKKyAgICA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIAorICAgIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKKyAgICAyMDYsIDY3LCA3MywgMjA1LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCA2OSwgODAsIDEyOCwgNjcsIAorICAgIDczLCA2OSwgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgCisgICAgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIDcyLCA4NywgODYsIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIAorICAgIDEyOCwgNjcsIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY3LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCAKKyAgICA3MiwgNjksIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIAorICAgIDc4LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgCisgICAgODIsIDczLCA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCAKKyAgICA3MywgODMsIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODksIDEyOCwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIAorICAgIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA3OSwgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgCisgICAgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCAKKyAgICA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgMTI4LCA2NywgNzIsIDIwNywgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCAKKyAgICA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgCisgICAgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA2NywgNzIsIDczLCA4NCwgODUsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKKyAgICAxMjgsIDY3LCA3MiwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA3MywgODIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIAorICAgIDczLCA4MCwgNzcsIDg1LCA3OCwgNzUsIDEyOCwgNjcsIDcyLCA3MywgNzgsIDc5LCA3OSwgMjAzLCA2NywgNzIsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgNjcsIDcyLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NywgNzIsIDczLCA3OCwgMTI4LCA2NywgNzIsIDczLCAKKyAgICA3NywgNjksIDEyOCwgNjcsIDcyLCA3MywgNzYsIDc2LCAyMTMsIDY3LCA3MiwgNzMsIDc2LCA2OCwgODIsIDY5LCAyMDYsIAorICAgIDY3LCA3MiwgNzMsIDc2LCA2OCwgMTI4LCA2NywgNzIsIDczLCA3NiwgMTI4LCA2NywgNzIsIDczLCA3NSwgMjAxLCA2NywgCisgICAgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNjcsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDIwMCwgCisgICAgNjcsIDcyLCA3MywgNjcsIDc1LCA2OSwgNzgsIDEyOCwgNjcsIDcyLCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNzMsIAorICAgIDEyOCwgNjcsIDcyLCAyMDEsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA3MiwgNjksIDg4LCAxMjgsIDY3LCA3MiwgNjksIAorICAgIDg2LCA4MiwgNzksIDIwNiwgNjcsIDcyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCA3OCwgODUsIDg0LCAKKyAgICAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgMjExLCA2NywgNzIsIDY5LCA4MiwgODksIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCiAgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKICAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgCi0gICAgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgCi0gICAgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgCi0gICAgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCAKLSAgICA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIAotICAgIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgCi0gICAgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCAKLSAgICA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIAotICAgIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCAKLSAgICA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIAotICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgCi0gICAgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgCi0gICAgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCAKLSAgICA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIAotICAgIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgCi0gICAgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgCi0gICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKLSAgICA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIAotICAgIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAKLSAgICAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgCi0gICAgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgCi0gICAgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAKLSAgICAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIAotICAgIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgCi0gICAgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCAKLSAgICA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIAotICAgIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgCi0gICAgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgCi0gICAgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDc5LCAKLSAgICAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIAotICAgIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCi0gICAgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIAotICAgIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgCi0gICAgNjcsIDY5LCA4MiwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIAotICAgIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgCi0gICAgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCAKLSAgICA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgCi0gICAgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgCi0gICAgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAKLSAgICAxMjgsIDY3LCA2NSwgNjgsIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIAotICAgIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA2NywgCi0gICAgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgNjcsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIDQ4LCA0OSwgCi0gICAgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAxMjgsIDY3LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgNDUsIDUxLCAKLSAgICA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAyMDEsIDY2LCAKLSAgICA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIDg1LCA3NSwgCi0gICAgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgNjYsIDg3LCAKLSAgICA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCA3MywgODMsIAotICAgIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIAotICAgIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgMjExLCA2NiwgCi0gICAgODUsIDgyLCAyMTMsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCAKLSAgICA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIAotICAgIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgCi0gICAgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCAKLSAgICA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIAotICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAKLSAgICAxOTcsIDY2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2NywgNzUsIAotICAgIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgCi0gICAgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDY2LCA4MiwgODUsIDgzLCAKLSAgICAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIAotICAgIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgCi0gICAgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIAotICAgIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgCi0gICAgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCAKLSAgICA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIAotICAgIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgCi0gICAgNjcsIDcyLCA3MywgNzgsIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIAotICAgIDIwMCwgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAKLSAgICAxOTYsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCAKLSAgICA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIAotICAgIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgCi0gICAgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgMTI4LCAKLSAgICA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCAKLSAgICA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgMTk3LCA2NiwgNzksIDg0LCAyMDAsIAotICAgIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgCi0gICAgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAKLSAgICAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIAotICAgIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgCi0gICAgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCAKLSAgICA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCAKLSAgICA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIAotICAgIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgCi0gICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIDc2LCA3OSwgNzksIDY4LCAKLSAgICAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgNzYsIDY5LCA3OCwgNjgsIAotICAgIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgCi0gICAgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzYsIDY5LCAKLSAgICA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgCi0gICAgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIDg0LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIAotICAgIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgCi0gICAgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCAKLSAgICA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDY4LCAxMjgsIAotICAgIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgCi0gICAgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCA3OCwgNjUsIDgyLCAKLSAgICAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIAorICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgCisgICAgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCAKKyAgICA3MiwgNjksIDY5LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIAorICAgIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgCisgICAgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCAKKyAgICA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIAorICAgIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgCisgICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAorICAgIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgCisgICAgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCAKKyAgICA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIAorICAgIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgCisgICAgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIAorICAgIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAorICAgIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIAorICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgCisgICAgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCAKKyAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIAorICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgCisgICAgMTk1LCA2NywgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgCisgICAgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAKKyAgICAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCAKKyAgICA2NywgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIAorICAgIDc5LCAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIAorICAgIDY3LCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgCisgICAgNjcsIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIAorICAgIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKKyAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCAKKyAgICA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKKyAgICA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIAorICAgIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIAorICAgIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCisgICAgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCAKKyAgICA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIAorICAgIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCAKKyAgICA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIAorICAgIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCAKKyAgICA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIAorICAgIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgCisgICAgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCAKKyAgICA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIAorICAgIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgCisgICAgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCAKKyAgICA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIAorICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAKKyAgICAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgCisgICAgNzcsIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCAKKyAgICA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIAorICAgIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgNjUsIDc2LCA2NywgCisgICAgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIAorICAgIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIAorICAgIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgCisgICAgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCAKKyAgICA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCisgICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCisgICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAorICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAorICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKKyAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCisgICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKKyAgICAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIAorICAgIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgCisgICAgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCAKKyAgICA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAyMDYsIAorICAgIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCAKKyAgICA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIAorICAgIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgCisgICAgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIAorICAgIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgCisgICAgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAKKyAgICA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIAorICAgIDE5OSwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgCisgICAgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKKyAgICA3NiwgNjksIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgCisgICAgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgCisgICAgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCAKKyAgICA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIAorICAgIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgCisgICAgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCAKKyAgICA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIAorICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgCisgICAgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCAKKyAgICA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIAorICAgIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgCisgICAgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCAKKyAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIAorICAgIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIAorICAgIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgCisgICAgMTI4LCA2NiwgNzksIDg3LCAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgCisgICAgODEsIDg1LCA2OSwgODQsIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCAKKyAgICA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIAorICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCisgICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKKyAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAorICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCisgICAgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIAorICAgIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgCisgICAgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIAorICAgIDEyOCwgNjYsIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIAorICAgIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgCisgICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCAKKyAgICA2NiwgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA3NiwgNzMsIDc4LCAyMDMsIDY2LCA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAKKyAgICAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIAorICAgIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgCisgICAgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIAorICAgIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgCisgICAgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCAKKyAgICA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIAorICAgIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAKKyAgICAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIAorICAgIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgCisgICAgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCAKKyAgICA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIAorICAgIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCiAgICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCiAgICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKICAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIApAQCAtNDM1MSwxNzggKzQ3MjksMTg2IEBACiAgICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKICAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAogICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAotICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAKLSAgICAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAKLSAgICAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCAKLSAgICA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3NiwgMTI4LCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIAotICAgIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgCi0gICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCAKLSAgICA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAorICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAKKyAgICA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCAKKyAgICA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIAorICAgIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgCisgICAgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCAKKyAgICA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIAorICAgIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKICAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAogICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCiAgICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKICAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAotICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIAotICAgIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgCi0gICAgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIAotICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIAotICAgIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIAotICAgIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIAotICAgIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCAKLSAgICA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIAotICAgIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgCi0gICAgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKLSAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIAotICAgIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgCi0gICAgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgCi0gICAgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCAKLSAgICA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDE5NCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCAKLSAgICA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIAotICAgIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAKLSAgICAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIAotICAgIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgCi0gICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIAotICAgIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgCi0gICAgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAKLSAgICA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIAotICAgIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIAotICAgIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgMTI4LCA2NiwgCi0gICAgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAKLSAgICAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIAotICAgIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgMTI4LCA2NiwgCi0gICAgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgNTAsIDUyLCAKLSAgICA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAxMjgsIDY2LCAKLSAgICA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgNjYsIDUwLCAKLSAgICA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCA1MCwgMTI4LCAKLSAgICA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCA1MCwgNTYsIAotICAgIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCA2NiwgNTAsIAotICAgIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIDU3LCAxMjgsIAotICAgIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIDY2LCA1MCwgCi0gICAgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgNDksIDUwLCAKLSAgICAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAxMjgsIDY2LCAKLSAgICA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIDUwLCAxMjgsIAotICAgIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIDQ5LCA1NywgCi0gICAgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgCi0gICAgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgNjYsIDQ5LCAKLSAgICA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIAotICAgIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCA0OSwgNTUsIAotICAgIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIDU3LCAxMjgsIAotICAgIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIDY2LCA0OSwgCi0gICAgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgCi0gICAgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgNTMsIDU2LCAKLSAgICAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgNjYsIDQ5LCAKLSAgICA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCAKLSAgICA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCA0OSwgNTIsIAotICAgIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCA0OSwgNTEsIAotICAgIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCA0OSwgNTAsIAotICAgIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCAKLSAgICA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIAotICAgIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIAotICAgIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgCi0gICAgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIDY2LCA0OSwgCi0gICAgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgCi0gICAgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIDY2LCA0OCwgCi0gICAgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgCi0gICAgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgCi0gICAgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIDY2LCA0OCwgCi0gICAgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgCi0gICAgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgCi0gICAgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIDQ4LCA1MywgCi0gICAgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIDQ4LCA1MywgCi0gICAgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIAotICAgIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIDUyLCA1NSwgCi0gICAgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIDUyLCAxNzksIAotICAgIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIDE4NSwgNjYsIAotICAgIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIAotICAgIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIAotICAgIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCA0OCwgNTAsIAotICAgIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCA0OCwgNTAsIAotICAgIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIAotICAgIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCA0OCwgNDksIAotICAgIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIAotICAgIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCA0OCwgNDgsIAotICAgIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIAotICAgIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgCi0gICAgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgCi0gICAgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCAKLSAgICA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIAotICAgIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgCi0gICAgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCAKLSAgICA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIAotICAgIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAKLSAgICA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIAotICAgIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgCi0gICAgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIAotICAgIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCAKLSAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgCi0gICAgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCAKLSAgICA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIAotICAgIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCAKLSAgICA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAKLSAgICAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIAotICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgCi0gICAgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgCi0gICAgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCAKLSAgICA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAorICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgCisgICAgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAKKyAgICAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCAKKyAgICA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIAorICAgIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgCisgICAgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIAorICAgIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIAorICAgIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgCisgICAgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAKKyAgICAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIAorICAgIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgCisgICAgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAKKyAgICAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgCisgICAgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCAKKyAgICA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIAorICAgIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIAorICAgIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIAorICAgIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIAorICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgCisgICAgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIAorICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKKyAgICA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIAorICAgIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgCisgICAgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCAKKyAgICA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIAorICAgIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgCisgICAgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCAKKyAgICA3OCwgODQsIDc5LCAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIAorICAgIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgCisgICAgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCAKKyAgICA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIAorICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAKKyAgICAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCAKKyAgICA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIAorICAgIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgCisgICAgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgCisgICAgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgCisgICAgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAKKyAgICAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCAKKyAgICA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIAorICAgIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCAKKyAgICA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCAKKyAgICA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIAorICAgIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgCisgICAgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgCisgICAgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgCisgICAgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIAorICAgIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIAorICAgIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIAorICAgIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgCisgICAgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgCisgICAgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgCisgICAgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgCisgICAgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgCisgICAgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgCisgICAgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgCisgICAgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCAKKyAgICA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCAKKyAgICA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIAorICAgIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCAKKyAgICA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIAorICAgIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIAorICAgIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIAorICAgIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIAorICAgIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCAKKyAgICA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCAKKyAgICA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCAKKyAgICA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCAKKyAgICA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCAKKyAgICA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCAKKyAgICA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCAKKyAgICA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAKKyAgICAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgCisgICAgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgCisgICAgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgCisgICAgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgCisgICAgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgCisgICAgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAKKyAgICAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCAKKyAgICA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCAKKyAgICA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIAorICAgIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgNjksIAorICAgIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIAorICAgIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCAKKyAgICA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCAKKyAgICA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCisgICAgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAKKyAgICAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgCisgICAgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgCisgICAgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgCisgICAgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCAKKyAgICA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIAorICAgIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgCisgICAgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCAKKyAgICA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgCisgICAgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKKyAgICA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAorICAgIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgCisgICAgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCAKKyAgICA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIAorICAgIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAKKyAgICAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MywgNzIsIAorICAgIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCiAgICAgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCAKICAgICA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAogICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKICAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAogICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCi0gICAgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCAKLSAgICA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY1LCA4MiwgODIsIDY1LCA4OSwgCi0gICAgMTI4LCA2NSwgODIsIDgwLCA2OSwgNzEsIDcxLCA3MywgNjUsIDg0LCAyMDcsIDY1LCA4MiwgNzksIDg1LCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDY1LCA4MiwgNzksIDg1LCA4MiwgMTkzLCA2NSwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODAsIDgyLCA3OSwgNzAsIAotICAgIDczLCA3NiwgNjksIDEyOCwgNjUsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDY1LCA4MiwgNzcsIDg5LCAxMjgsIDY1LCA4MiwgCi0gICAgNzcsIDc5LCA4NSwgODIsIDEyOCwgNjUsIDgyLCAyMDUsIDY1LCA4MiwgNzYsIDY1LCA4NSwgMTk5LCA2NSwgODIsIDc1LCAKLSAgICA4NCwgNzMsIDc1LCAyMDcsIDY1LCA4MiwgNzUsIDY1LCA2NiwgMTI4LCA2NSwgODIsIDc1LCA2NSwgNjUsIDc4LCA4NSwgCisgICAgNjUsIDY4LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgODIsIDc5LCAKKyAgICA4NywgNzIsIDY5LCA2NSwgMTk2LCA2NSwgODIsIDgyLCA3OSwgODcsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NSwgODIsIAorICAgIDgyLCA3MywgODYsIDczLCA3OCwgNzEsIDEyOCwgNjUsIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgCisgICAgODksIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCAKKyAgICA3OCwgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgCisgICAgODIsIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCAKKyAgICA3NSwgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIAogICAgIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAKICAgICAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIAogICAgIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgCiAgICAgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCA4MiwgNjksIDY1LCAxMjgsIDY1LCA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCAKLSAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIAotICAgIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgCi0gICAgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCAKLSAgICA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIAotICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAKLSAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIAotICAgIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgCi0gICAgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCAKLSAgICA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIAotICAgIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgCi0gICAgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCAKLSAgICA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgCi0gICAgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIAotICAgIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgCi0gICAgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCAKLSAgICA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCi0gICAgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKLSAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKLSAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAotICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgCi0gICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIAotICAgIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKKyAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2OCwgNzIsIDY1LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIAorICAgIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgCisgICAgODIsIDY3LCA3MiwgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgCisgICAgNjUsIDgyLCA2NSwgNzcsIDY1LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIAorICAgIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgCisgICAgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCAKKyAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIAorICAgIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAKKyAgICAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIAorICAgIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKKyAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIAorICAgIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgCisgICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCAKKyAgICA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIAorICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKKyAgICA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIAorICAgIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAKKyAgICAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAKKyAgICAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCisgICAgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCAKKyAgICA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAogICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCiAgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAogICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCkBAIC00NTMwLDE1MzA4ICs0OTE2LDE4MzQ4IEBACiAgICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAogICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKICAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIAotICAgIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgCi0gICAgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCAKLSAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIAotICAgIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgCi0gICAgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAotICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCi0gICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKLSAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIAotICAgIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgCi0gICAgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIAotICAgIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgCi0gICAgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCAKLSAgICA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCAKLSAgICA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIAotICAgIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAKLSAgICAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCAKLSAgICA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIAotICAgIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgCi0gICAgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCAKLSAgICA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIAotICAgIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgCi0gICAgNjksIDc3LCA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIAotICAgIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgCi0gICAgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCAKLSAgICA3NiwgODMsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIAotICAgIDE5NSwgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIAotICAgIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgCi0gICAgNzksIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCAKLSAgICA3OCwgNzgsIDEyOCwgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIAotICAgIDcyLCA4NiwgODUsIDgzLCAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgCi0gICAgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCAKLSAgICA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgCi0gICAgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCAKLSAgICA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIAotICAgIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgCi0gICAgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCAKLSAgICA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCAKLSAgICA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIAotICAgIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgCi0gICAgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIAotICAgIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgCi0gICAgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCAKLSAgICA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgCi0gICAgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIAotICAgIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgCi0gICAgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIAotICAgIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIAotICAgIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgCi0gICAgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCAKLSAgICA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIAotICAgIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCAKLSAgICA2NSwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIAotICAgIDY1LCA2NSwgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ4LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgCi0gICAgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIAotICAgIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIAotICAgIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIAotICAgIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIAotICAgIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgCi0gICAgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCAKLSAgICA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgCisgICAgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCAKKyAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIAorICAgIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIAorICAgIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgCisgICAgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIAorICAgIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgCisgICAgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCAKKyAgICA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIAorICAgIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAKKyAgICAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIAorICAgIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCA4MCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc3LCA4MCwgCisgICAgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDE5NiwgNjUsIDc3LCAKKyAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIAorICAgIDY3LCA2NSwgMjA2LCA2NSwgNzcsIDY2LCA4NSwgNzYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NywgNjYsIDE5MywgCisgICAgNjUsIDc3LCA2NiwgMTI4LCA2NSwgNzcsIDY1LCA4MiwgMTI4LCA2NSwgNzcsIDY1LCAyMTAsIDY1LCA3NywgNjUsIDc2LCAKKyAgICA3MSwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzcsIDY1LCA3NiwgNzEsIDY1LCA3NywgMTI4LCA2NSwgNzYsIAorICAgIDg2LCA2OSwgNzksIDc2LCA2NSwgMjEwLCA2NSwgNzYsIDg1LCA3NywgMTI4LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgCisgICAgODQsIDczLCA4NiwgMTk3LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzYsIDg0LCAKKyAgICA2OSwgODIsIDc4LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA3MywgCisgICAgNzgsIDE5OSwgNjUsIDc2LCA4NCwgNjksIDgyLCA3OCwgNjUsIDg0LCA2OSwgMTI4LCA2NSwgNzYsIDg0LCA2OSwgODIsIDc4LCAKKyAgICA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIAorICAgIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgCisgICAgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCAKKyAgICA3NywgMTI4LCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIAorICAgIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgCisgICAgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCAKKyAgICA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIAorICAgIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODIsIDg0LCAxMjgsIAorICAgIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgCisgICAgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCAKKyAgICA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIAorICAgIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCAKKyAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIAorICAgIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAKKyAgICAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgCisgICAgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgCisgICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIAorICAgIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIAorICAgIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgCisgICAgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCAKKyAgICA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDgzLCAyMTIsIDY1LCA3MSwgNjUsIAorICAgIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgCisgICAgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIAorICAgIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCAKKyAgICA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIAorICAgIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIAorICAgIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgCisgICAgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIAorICAgIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgCisgICAgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDY1LCAKKyAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAorICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCisgICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAorICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCisgICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCisgICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCAKKyAgICA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgCisgICAgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCAKKyAgICA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIAorICAgIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCAKKyAgICA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgCisgICAgNTEsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCAKKyAgICA0OSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDU0LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUzLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAorICAgIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTIsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCisgICAgNTEsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUwLCA1MCwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKKyAgICA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCAKKyAgICA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAorICAgIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NSwgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NSwgNTYsIDQ4LCA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIAorICAgIDUxLCAxNzgsIDY1LCA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIAorICAgIDE4MCwgNjUsIDU1LCA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCAKKyAgICA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgCisgICAgMTc5LCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgCisgICAgNDgsIDE4MywgNjUsIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgCisgICAgMTc5LCA2NSwgNTUsIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgCisgICAgNTEsIDEyOCwgNjUsIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgCisgICAgNjUsIDU0LCA1MywgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCAKKyAgICA1MywgNTQsIDEyOCwgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIAorICAgIDEyOCwgNjUsIDU0LCA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIAorICAgIDU0LCA1MiwgNTYsIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgCisgICAgNTIsIDEyOCwgNjUsIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgCisgICAgNjUsIDU0LCA1MSwgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCAKKyAgICA1MCwgNTcsIDEyOCwgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIAorICAgIDEyOCwgNjUsIDU0LCA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIAorICAgIDU0LCA1MCwgNDksIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgCisgICAgNTYsIDEyOCwgNjUsIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgCisgICAgNjUsIDU0LCA0OSwgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDU0LCA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIAorICAgIDU0LCA0OCwgNTAsIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgCisgICAgNTYsIDEyOCwgNjUsIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgCisgICAgNjUsIDUzLCA1NywgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCAKKyAgICA1NiwgNTYsIDEyOCwgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIAorICAgIDEyOCwgNjUsIDUzLCA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIAorICAgIDUzLCA1NiwgNDksIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgCisgICAgNTYsIDEyOCwgNjUsIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgCisgICAgNjUsIDUzLCA1NSwgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCAKKyAgICA1NSwgNDksIDEyOCwgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIAorICAgIDEyOCwgNjUsIDUzLCA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUzLCA1NCwgNTEsIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgCisgICAgNTQsIDEyOCwgNjUsIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgCisgICAgNjUsIDUzLCA1MywgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCAKKyAgICA1MiwgNTcsIDEyOCwgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIAorICAgIDEyOCwgNjUsIDUzLCA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIAorICAgIDUzLCA1MSwgNTcsIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgCisgICAgNTQsIDEyOCwgNjUsIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgCisgICAgNjUsIDUzLCA1MSwgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCAKKyAgICA1MCwgNTYsIDEyOCwgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIAorICAgIDEyOCwgNjUsIDUzLCA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIAorICAgIDUzLCA1MCwgNDksIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgCisgICAgNTYsIDEyOCwgNjUsIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgCisgICAgNjUsIDUzLCA0OSwgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDUzLCA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIAorICAgIDUzLCA0OCwgNTIsIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgCisgICAgNjUsIDUyLCA1NywgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCAKKyAgICA1NywgNDksIDEyOCwgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIAorICAgIDEyOCwgNjUsIDUyLCA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIAorICAgIDUyLCA1NiwgNTIsIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgCisgICAgNDksIDEyOCwgNjUsIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgCisgICAgNjUsIDUyLCA1NSwgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCAKKyAgICA1NSwgNTIsIDEyOCwgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIAorICAgIDEyOCwgNjUsIDUyLCA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgCisgICAgNTIsIDEyOCwgNjUsIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgCisgICAgNjUsIDUyLCA1NCwgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA1MywgNTUsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIAorICAgIDUzLCAxMjgsIDY1LCA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIAorICAgIDY1LCA1MiwgNTMsIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgCisgICAgNTIsIDUyLCA1NywgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCAKKyAgICA1NCwgMTI4LCA2NSwgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCAKKyAgICA2NSwgNTIsIDUyLCA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIAorICAgIDUxLCA1NywgMTI4LCA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgCisgICAgMTI4LCA2NSwgNTIsIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgCisgICAgNTIsIDUxLCA1MCwgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCAKKyAgICA1NywgMTI4LCA2NSwgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCAKKyAgICA2NSwgNTIsIDUwLCA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIAorICAgIDUwLCA1MCwgMTI4LCA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNTMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKKyAgICA0OCwgNTYsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIAorICAgIDY1LCA1MiwgNDgsIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgCisgICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAorICAgIDQ4LCA1MSwgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDUyLCA0OCwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIAorICAgIDU3LCA1NiwgMTI4LCA2NSwgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgCisgICAgMTI4LCA2NSwgNTEsIDU3LCA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgCisgICAgNTcsIDQ5LCAxMjgsIDY1LCA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAKKyAgICAxMjgsIDY1LCA1MSwgNTYsIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCAKKyAgICA2NSwgNTEsIDU2LCA1MywgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIAorICAgIDUxLCA1NiwgMTc5LCA2NSwgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgCisgICAgNDksIDEyOCwgNjUsIDUxLCA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgCisgICAgNjUsIDUxLCA1NSwgNTUsIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCAKKyAgICA1NSwgNTIsIDEyOCwgNjUsIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIAorICAgIDY1LCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIAorICAgIDY1LCA1MSwgNTQsIDU2LCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgCisgICAgNTEsIDU0LCA1NCwgMTI4LCA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCAKKyAgICA1NCwgNTIsIDEyOCwgNjUsIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIAorICAgIDEyOCwgNjUsIDUxLCA1NCwgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIAorICAgIDY1LCA1MSwgNTMsIDU2LCAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgCisgICAgNTMsIDUzLCAxMjgsIDY1LCA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAKKyAgICAxMjgsIDY1LCA1MSwgNTMsIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCAKKyAgICA1MSwgNTIsIDU2LCAxMjgsIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIAorICAgIDUzLCAxMjgsIDY1LCA1MSwgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIAorICAgIDY1LCA1MSwgNTIsIDQ5LCAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgCisgICAgNTEsIDU2LCAxMjgsIDY1LCA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA1NCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDUzLCAxMjgsIDY1LCA1MSwgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgCisgICAgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAKKyAgICAxMjgsIDY1LCA1MSwgNTEsIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTEsIDUwLCA1NywgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIAorICAgIDUwLCA1NCwgMTI4LCA2NSwgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgCisgICAgMTI4LCA2NSwgNTEsIDUwLCA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNTEsIDQ5LCA1NywgMTI4LCA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1NCwgMTI4LCA2NSwgNTEsIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIAorICAgIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgCisgICAgMTI4LCA2NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgCisgICAgNTEsIDQ4LCA1NywgNjcsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTEsIDQ4LCA1NywgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgCisgICAgNTAsIDU3LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCAKKyAgICA1NywgNTUsIDEyOCwgNjUsIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIAorICAgIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIAorICAgIDY1LCA1MCwgNTcsIDQ5LCAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgCisgICAgNTAsIDU2LCA1NywgMTI4LCA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNTAsIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNTAsIDU2LCA1MCwgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNTAsIDU1LCA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNTAsIDU1LCA1MCwgMTI4LCA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNTAsIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIAorICAgIDEyOCwgNjUsIDUwLCA1NCwgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUwLCA1NCwgNTEsIDEyOCwgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUwLCA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgCisgICAgNjUsIDUwLCA1MywgNTQsIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCAKKyAgICA1MywgNTEsIDEyOCwgNjUsIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIAorICAgIDEyOCwgNjUsIDUwLCA1MiwgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgCisgICAgNTEsIDEyOCwgNjUsIDUwLCA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgCisgICAgNjUsIDUwLCA1MSwgNTcsIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCAKKyAgICA1MSwgNTQsIDEyOCwgNjUsIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIAorICAgIDEyOCwgNjUsIDUwLCA1MSwgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIAorICAgIDUwLCA1MCwgNTcsIDEyOCwgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNTAsIDU1LCAxMjgsIDY1LCA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAKKyAgICAxMjgsIDY1LCA1MCwgNTAsIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MCwgNTAsIDQ4LCAxMjgsIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIAorICAgIDU1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgCisgICAgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgCisgICAgNjUsIDUwLCA0OSwgNTAsIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCAKKyAgICA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIAorICAgIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgCisgICAgMTI4LCA2NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgCisgICAgNjUsIDUwLCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MCwgNDgsIDQ4LCAxMjgsIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIAorICAgIDU1LCAxMjgsIDY1LCA0OSwgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIAorICAgIDY1LCA0OSwgNTcsIDUxLCAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgCisgICAgNTcsIDQ4LCAxMjgsIDY1LCA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAKKyAgICAxMjgsIDY1LCA0OSwgNTYsIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCAKKyAgICA0OSwgNTYsIDUxLCAxMjgsIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIAorICAgIDQ4LCAxMjgsIDY1LCA0OSwgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIAorICAgIDY1LCA0OSwgNTUsIDU0LCAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgCisgICAgNTUsIDUxLCAxMjgsIDY1LCA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAKKyAgICAxMjgsIDY1LCA0OSwgNTQsIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCAKKyAgICA0OSwgNTQsIDU0LCAxMjgsIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDY1LCA0OSwgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIAorICAgIDY1LCA0OSwgNTMsIDU3LCAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNTMsIDU0LCAxMjgsIDY1LCA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTMsIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNTIsIDU3LCAxMjgsIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIAorICAgIDY1LCA0OSwgNTIsIDUwLCAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgCisgICAgNTEsIDU3LCAxMjgsIDY1LCA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAKKyAgICAxMjgsIDY1LCA0OSwgNTEsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCAKKyAgICA2NSwgNDksIDUxLCA1MSwgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIAorICAgIDQ5LCA1MSwgNDksIDEyOCwgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgCisgICAgNTYsIDEyOCwgNjUsIDQ5LCA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAKKyAgICAxMjgsIDY1LCA0OSwgNTAsIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCAKKyAgICA0OSwgNTAsIDUwLCAxMjgsIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIAorICAgIDUwLCA0OCwgMTI4LCA2NSwgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgCisgICAgMTI4LCA2NSwgNDksIDQ5LCA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgCisgICAgNjUsIDQ5LCA0OSwgNTIsIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OSwgNDksIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIAorICAgIDQ5LCA0OCwgMTI4LCA2NSwgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgCisgICAgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA1NSwgMTI4LCA2NSwgNDksIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIAorICAgIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgCisgICAgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIAorICAgIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgCisgICAgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCAKKyAgICA1NiwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIAorICAgIDU1LCAxMjgsIDY1LCA0OCwgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIAorICAgIDY1LCA0OCwgNTcsIDUxLCAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgCisgICAgNTcsIDQ4LCAxMjgsIDY1LCA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAKKyAgICAxMjgsIDY1LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCAKKyAgICA0OCwgNTYsIDUxLCAxMjgsIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIAorICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIAorICAgIDY1LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgCisgICAgNTUsIDUxLCAxMjgsIDY1LCA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDU0LCA2NywgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgCisgICAgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAKKyAgICAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIAorICAgIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIAorICAgIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCisgICAgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgCisgICAgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCAKKyAgICA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgCisgICAgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCAKKyAgICA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIAorICAgIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE4LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ3LCA1MCwgNjIsIDcwLCA4MCwgOTMsIDEwMiwgMTA4LCAKLSAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQzLCAxNDcsIDE1MywgMTU4LCAxNjMsIDE3MSwgMTc4LCAxODYsIDE5MSwgCi0gICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMCwgMjM3LCAyNDYsIDI0OSwgMjU0LCAyNTcsIDI2MywgMjY3LCAyNzIsIAotICAgIDI4MSwgMjg4LCAyOTUsIDMwMSwgMzEwLCAzMTUsIDMyMSwgMzI3LCAzMzUsIDE0NCwgMzQxLCAzNDksIDM1MCwgMzU4LCAKLSAgICAzNjEsIDM2NywgMzY5LCAzNzUsIDM4MiwgMzg0LCAzOTEsIDM5NSwgNDAzLCA0MTAsIDQxMiwgNDE3LCA0MjIsIDQyNywgCi0gICAgNDM0LCA0MzYsIDI5OSwgNDQyLCA0NDUsIDQ0NywgNDUyLCA0NTcsIDQ2MywgNDcwLCA0NzksIDQ4OSwgNDk0LCA0OTgsIAotICAgIDUwNSwgNTE4LCA1MjIsIDUzMSwgNTM4LCA1NDUsIDU0OCwgNTU0LCA1NTgsIDU2MiwgNTcyLCA1ODAsIDU4OCwgNTk2LCAKLSAgICA2MDUsIDYxMywgNjE4LCA2MTksIDYyMywgNjMxLCA2MzgsIDY0OCwgNjUyLCA2NjMsIDY2NywgNjcwLCA2NzMsIDY3OCwgCi0gICAgMzQ4LCA2ODIsIDY5MSwgNjk3LCA3MDMsIDcwNSwgNzA4LCA3MTEsIDcxNCwgNzE4LCA3MjIsIDczMSwgNzM5LCA3NDQsIAotICAgIDc0NywgNzUxLCA3NTcsIDc2NCwgNzcxLCA3NzYsIDc4NSwgNzk0LCA4MDEsIDgwNSwgODE4LCA4MjcsIDgzNSwgODQxLCAKLSAgICA1NTcsIDg1MCwgODYwLCA4NjcsIDg3MywgODc5LCA4ODYsIDg5NCwgODk4LCA3NDksIDkwNiwgOTE1LCA1MDMsIDkyMywgCi0gICAgOTI4LCA5MzQsIDE3LCA5NDMsIDk0OCwgOTUxLCA5NTUsIDk1OSwgOTY2LCA5NjksIDk3NiwgOTgwLCA5ODgsIDk5MiwgCi0gICAgMTAwMCwgMTAwNCwgMTAwNywgMTAxNCwgMTAyMSwgMTkyLCAxMDI0LCAxMDI5LCAxMDM5LCAxMDQ4LCAxMDU1LCAxMDYwLCAKLSAgICAxMDY2LCAxMDcyLCAxMDgwLCAxMDgzLCAxMDg4LCAxMDk0LCAxMTAyLCAxMTA3LCAxMTEwLCAxMTEzLCAxMTEsIDExMTgsIAotICAgIDExMjIsIDExMjgsIDExMzQsIDExMzcsIDExNDMsIDExNDcsIDExNTIsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAotICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAotICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIAotICAgIDEzMDYsIDEzMTIsIDEzMTcsIDEzMjEsIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDAsIDEzNDUsIDEzNTAsIDEzNTUsIDEzNjAsIAotICAgIDExOTUsIDEyMDAsIDEyMDUsIDEyMTEsIDEyMTYsIDEzNjQsIDEyMjYsIDEzNzAsIDEzNzUsIDEzODAsIDEzODcsIDEzOTEsIAotICAgIDE0MDAsIDEyMzAsIDE0MDQsIDEyMzUsIDEyNDEsIDEyNDYsIDE0MDgsIDE0MTMsIDE0MTgsIDE0MjIsIDE0MjYsIDE0MzIsIAotICAgIDE0MzYsIDEyNTEsIDE0MzksIDEyNjEsIDE0NDQsIDE0NDgsIDEyNjYsIDE0NTQsIDEyNzEsIDE0NTgsIDE0NjIsIDEyNzYsIAotICAgIDE0NjYsIDE0NzEsIDE0NzUsIDE0NzgsIDE0ODIsIDEyODAsIDEyODUsIDE0ODcsIDEyOTAsIDE0OTMsIDE0OTksIDE1MDUsIAotICAgIDE1MTEsIDEyOTUsIDEzMDcsIDEzMTMsIDE1MTUsIDE1MTksIDE1MjMsIDE1MjYsIDEzMTgsIDE1MzAsIDE1MzIsIDE1MzcsIAotICAgIDE1NDIsIDE1NDgsIDE1NTMsIDE1NTgsIDE1NjIsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODIsIDE1ODgsIDE1OTMsIDE1OTgsIAotICAgIDE2MDQsIDE2MTAsIDE2MTUsIDE2MTksIDE2MjQsIDE2MjksIDE2MzQsIDE2MzksIDE2NDMsIDE2NTEsIDE2NTUsIDE2NjAsIAotICAgIDE2NjUsIDE2NzAsIDE2NzUsIDE2NzksIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIAotICAgIDEzMjIsIDE3MjAsIDE3MjUsIDE3MzAsIDEzMjcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMzIsIDE3NTIsIDEzMzcsIDE3NTYsIAotICAgIDE3NTgsIDE3NjMsIDE3NjksIDEzNDEsIDE3NzQsIDE3ODMsIDEzNDYsIDE3ODgsIDE3OTQsIDEzNTEsIDE3OTksIDE4MDQsIAotICAgIDE4MDcsIDE4MTIsIDE4MTYsIDE4MjAsIDE4MjQsIDE4MjcsIDE4MzEsIDEzNTYsIDEzNjEsIDEwNTgsIDE4MzYsIDE4NDIsIAotICAgIDE4NDgsIDE4NTQsIDE4NjAsIDE4NjYsIDE4NzIsIDE4NzgsIDE4ODQsIDE4ODksIDE4OTUsIDE5MDEsIDE5MDcsIDE5MTMsIAotICAgIDE5MTksIDE5MjUsIDE5MzEsIDE5MzcsIDE5NDMsIDE5NDgsIDE5NTMsIDE5NTgsIDE5NjMsIDE5NjgsIDE5NzMsIDE5NzgsIAotICAgIDE5ODMsIDE5ODgsIDE5OTMsIDE5OTksIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjcsIDIwMzIsIDIwMzgsIDIwNDQsIAotICAgIDIwNTAsIDIwNTYsIDIwNjEsIDIwNjYsIDIwNjgsIDIwNjksIDIwNzMsIDIwNzcsIDIwODIsIDIwODYsIDIwOTAsIDIwOTQsIAotICAgIDIwOTksIDIxMDMsIDIxMDYsIDIxMTEsIDIxMTUsIDIxMjAsIDIxMjQsIDIxMjgsIDIxMzMsIDIxMzcsIDIxNDAsIDIxNDQsIAotICAgIDIxNTAsIDIxNjQsIDIxNjgsIDIxNzIsIDIxNzYsIDIxNzksIDIxODQsIDIxODgsIDIxOTIsIDIxOTUsIDIxOTksIDIyMDQsIAotICAgIDIyMDksIDIyMTQsIDIyMTksIDIyMjMsIDIyMjcsIDIyMzEsIDIyMzYsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTQsIDIyNjAsIAotICAgIDIyNjcsIDIyNzMsIDIyNzgsIDIyODMsIDIyODgsIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTMsIDEyMTIsIDIzMTUsIAotICAgIDIzMjIsIDIzMzAsIDIzNDAsIDIzNDksIDIzNjMsIDIzNjcsIDIzNzEsIDIzODQsIDIzOTIsIDIzOTYsIDI0MDEsIDI0MDUsIAotICAgIDI0MDgsIDI0MTIsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzEsIDI0MzUsIDI0MzgsIDI0NDIsIDI0NDksIDI0NTYsIDI0NjIsIAotICAgIDI0NjcsIDI0NzIsIDI0NzgsIDI0ODQsIDI0ODksIDI0OTIsIDE3NjAsIDI0OTQsIDI1MDAsIDI1MDQsIDI1MDksIDI1MTMsIAotICAgIDI1MTcsIDE3NjUsIDE3NzEsIDI1MjIsIDI1MjYsIDI1MjksIDI1MzQsIDI1MzksIDI1NDQsIDI1NDksIDI1NTMsIDI1NjAsIAotICAgIDI1NjUsIDI1NjgsIDI1NzUsIDI1ODEsIDI1ODUsIDI1ODksIDI1OTMsIDI1OTgsIDI2MDUsIDI2MTAsIDI2MTUsIDI2MjIsIAotICAgIDI2MjgsIDI2MzQsIDI2NDAsIDI2NTQsIDI2NzEsIDI2ODYsIDI3MDEsIDI3MTAsIDI3MTUsIDI3MTksIDI3MjQsIDI3MjksIAotICAgIDI3MzMsIDI3NDUsIDI3NTIsIDI3NTgsIDIyNjMsIDI3NjQsIDI3NzEsIDI3NzcsIDI3ODEsIDI3ODQsIDI3OTEsIDI3OTcsIAotICAgIDI4MDEsIDI4MDUsIDI4MDksIDIwOTEsIDI4MTMsIDI4MTgsIDI4MjMsIDI4MjcsIDI4MzUsIDI4MzksIDI4NDMsIDI4NDcsIAotICAgIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjYsIDI4NzAsIDI4NzUsIDI4ODAsIDI4ODQsIDI4ODksIDI4OTMsIDI4OTYsIDI5MDAsIAotICAgIDI5MDQsIDI5MTIsIDI5MTcsIDI5MjEsIDI5MjUsIDI5MzEsIDI5NDAsIDI5NDQsIDI5NDgsIDI5NTQsIDI5NTksIDI5NjYsIAotICAgIDI5NzAsIDI5ODAsIDI5ODQsIDI5ODgsIDI5OTMsIDI5OTcsIDMwMDIsIDMwMDgsIDMwMTMsIDMwMTcsIDMwMjEsIDMwMjUsIAotICAgIDI0NTIsIDMwMzMsIDMwMzgsIDMwNDQsIDMwNDksIDMwNTMsIDMwNTgsIDMwNjMsIDMwNjcsIDMwNzMsIDMwNzgsIDIwOTUsIAotICAgIDMwODQsIDMwOTAsIDMwOTUsIDMxMDAsIDMxMDUsIDMxMTAsIDMxMTUsIDMxMjAsIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDEsIAotICAgIDMxNDYsIDEyMjcsIDkyLCAzMTUyLCAzMTU2LCAzMTYwLCAzMTY0LCAzMTY5LCAzMTczLCAzMTc3LCAzMTgxLCAzMTg1LCAKLSAgICAzMTkwLCAzMTk0LCAzMTk5LCAzMjAzLCAzMjA2LCAzMjEwLCAzMjE1LCAzMjE5LCAzMjI0LCAzMjI4LCAzMjMyLCAzMjM2LCAKLSAgICAzMjQxLCAzMjQ1LCAzMjQ4LCAzMjYxLCAzMjY1LCAzMjY5LCAzMjczLCAzMjc3LCAzMjgxLCAzMjg0LCAzMjg4LCAzMjkyLCAKLSAgICAzMjk3LCAzMzAxLCAzMzA2LCAzMzExLCAzMzE2LCAzMzIwLCAzMzIzLCAzMzI2LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQzLCAKLSAgICAzMzQ3LCAzMzUxLCAzMzU0LCAzMzYwLCAzMzY1LCAzMzcwLCAzMzc2LCAzMzgxLCAzMzg2LCAzMzkyLCAzMzk4LCAzNDAzLCAKLSAgICAzNDA4LCAzNDEzLCAxMTIwLCA1NDcsIDM0MTgsIDM0MjEsIDM0MjYsIDM0MzAsIDM0MzMsIDM0MzcsIDM0NDIsIDM0NDcsIAotICAgIDM0NTEsIDM0NTYsIDM0NjAsIDM0NjUsIDM0NjksIDM0NzMsIDM0NzksIDM0ODUsIDM0ODgsIDM0OTEsIDM0OTcsIDM1MDQsIAotICAgIDM1MTEsIDM1MTcsIDM1MjQsIDM1MjksIDM1MzMsIDM1NDAsIDM1NDcsIDM1NTIsIDM1NTYsIDM1NjYsIDM1NzAsIDM1NzQsIAotICAgIDM1NzksIDM1ODQsIDM1OTQsIDIxMDcsIDM1OTksIDM2MDMsIDM2MDYsIDM2MTIsIDM2MTcsIDM2MjMsIDM2MjksIDM2MzQsIAotICAgIDM2NDEsIDM2NDUsIDM2NDksIDYyMCwgNjcxLCAxMzg4LCAzNjUzLCAzNjYwLCAzNjY3LCAzNjc0LCAzNjgxLCAzNjg3LCAKLSAgICAzNjkzLCAzNjk4LCAzNzAyLCAzNzA4LCAzNzEzLCAzNzE3LCAyMTE2LCAzNzIxLCAzNzI5LCA2MDAsIDM3MzUsIDM3NDYsIAotICAgIDM3NTAsIDM3NjAsIDIxMjEsIDM3NjYsIDM3NzEsIDM3ODYsIDM3OTIsIDM3OTksIDM4MDksIDM4MTUsIDM4MjAsIDM4MjYsIAotICAgIDM4MzIsIDM4MzUsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTYsIDM4NjAsIDM4NjQsIDM4NjgsIDM4NzIsIDM4NzcsIDM4ODMsIAotICAgIDM4OTQsIDMyMTEsIDM4OTksIDM5MTEsIDM5MTksIDM5MjQsIDE1NjQsIDM5MzEsIDM5MzQsIDM5MzcsIDM5NDEsIDM5NDQsIAotICAgIDM5NTAsIDM5NTQsIDM5NjgsIDM5NzIsIDM5NzUsIDM5NzksIDM5ODUsIDM5OTEsIDM5OTYsIDQwMDAsIDQwMDQsIDQwMTAsIAotICAgIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIDQwNDIsIDQwNTAsIDQwNjAsIDQwNjYsIDQwNzEsIDQwODAsIDQwODgsIDQwOTUsIAotICAgIDQwOTksIDQxMDUsIDQxMTQsIDQxMjMsIDQxMjcsIDQxMzIsIDQxMzcsIDQxNDEsIDQxNDksIDQxNTMsIDQxNTgsIDQxNjIsIAotICAgIDIxMjksIDE0MDEsIDQxNjgsIDQxNzMsIDQxNzksIDQxODQsIDQxODksIDQxOTQsIDQxOTksIDQyMDQsIDQyMDksIDQyMTUsIAotICAgIDQyMjAsIDQyMjYsIDQyMzEsIDQyMzYsIDQyNDEsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjcsIDQyNzMsIDQyNzgsIAotICAgIDQyODQsIDQyODksIDQyOTQsIDQyOTksIDQzMDQsIDQzMDksIDQzMTQsIDQzMjAsIDQzMjUsIDQzMzAsIDMxOSwgNDU2LCAKLSAgICA0MzM1LCA0MzQxLCA0MzQ1LCA0MzQ5LCA0MzU0LCA0MzU4LCA0MzYyLCA0MzY1LCA0MzY5LCA0MzczLCA0Mzc3LCA0MzgxLCAKLSAgICA0Mzg2LCA0MzkwLCA0Mzk0LCA0NDAwLCA0MTY1LCA0NDA1LCA0NDA5LCA0NDEyLCA0NDE3LCA0NDIyLCA0NDI3LCA0NDMyLCAKLSAgICA0NDM3LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCAKLSAgICA0NDk2LCA0NTAxLCA0NTA2LCA0NTExLCA0NTE2LCA0NTIwLCA0NTI1LCA0NTMwLCA0NTM1LCA0NTQwLCA0NTQ1LCA0NTUwLCAKLSAgICA0NTU1LCA0NTYwLCA0NTY1LCA0NTcwLCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg5LCA0NTk0LCA0NTk5LCA0NjA0LCA0NjA5LCAKLSAgICA0NjE0LCA0NjE5LCA0NjI0LCA0NjI4LCA0NjMzLCA0NjM4LCA0NjQzLCA0NjQ4LCA0NjUzLCA0NjU4LCA0NjYzLCA0NjY4LCAKLSAgICA0NjczLCA0Njc4LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk3LCA0NzAyLCA0NzA3LCA0NzEyLCA0NzE3LCA0NzIyLCA0NzI3LCAKLSAgICA0NzMyLCA0NzM2LCA0NzQxLCA0NzQ2LCA0NzUxLCA0NzU2LCA0NzYxLCA0NzY2LCA0NzcxLCA0Nzc2LCA0NzgxLCA0Nzg2LCAKLSAgICA0NzkwLCA0Nzk1LCA0ODAwLCA0ODA1LCA0ODEwLCA0ODE2LCA0ODIyLCA0ODI4LCA0ODM0LCA0ODQwLCA0ODQ2LCA0ODUyLCAKLSAgICA0ODU3LCA0ODYzLCA0ODY5LCA0ODc1LCA0ODgxLCA0ODg3LCA0ODkzLCA0ODk5LCA0OTA1LCA0OTExLCA0OTE3LCA0OTIyLCAKLSAgICA0OTI4LCA0OTM0LCA0OTQwLCA0OTQ2LCA0OTUyLCA0OTU4LCA0OTY0LCA0OTcwLCA0OTc2LCA0OTgyLCA0OTg3LCA0OTkzLCAKLSAgICA0OTk5LCA1MDA1LCA1MDExLCA1MDE3LCA1MDIzLCA1MDI5LCA1MDM1LCA1MDQxLCA1MDQ3LCA1MDUyLCA1MDU4LCA1MDY0LCAKLSAgICA1MDcwLCA1MDc2LCA1MDgyLCA1MDg4LCA1MDk0LCA1MTAwLCA1MTA2LCA1MTEyLCA1MTE3LCA1MTIzLCA1MTI5LCA1MTM1LCAKLSAgICA1MTQxLCA1MTQ3LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgyLCA1MTg2LCA1MTkyLCA1MTk4LCA1MjA0LCAKLSAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUxLCA1MjU3LCA1MjYzLCA1MjY5LCA1Mjc1LCAKLSAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE2LCA1MzIyLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKLSAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgxLCA1Mzg3LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKLSAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ2LCA1NDUyLCA1NDU4LCA1NDY0LCA1NDcwLCA1NDc2LCA1NDgyLCA1NDg4LCAKLSAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTExLCA1NTE3LCA1NTIzLCA1NTI5LCA1NTM1LCA1NTQxLCA1NTQ3LCA1NTUzLCA1NTU5LCAKLSAgICA1NTY1LCA1NTcxLCA1NTc2LCA1NTgyLCA1NTg4LCA1NTk0LCA1NjAwLCA1NjA2LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKLSAgICA1NjM2LCA1NjQxLCA1NjQ3LCA1NjUzLCA1NjU5LCA1NjY1LCA1NjcxLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKLSAgICA1NzA2LCA1NzEyLCA1NzE4LCA1NzI0LCA1NzMwLCA1NzM2LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcxLCAKLSAgICA1Nzc3LCA1NzgzLCA1Nzg5LCA1Nzk1LCA1ODAxLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM2LCA1ODQwLCAKLSAgICA1ODQzLCA1ODUwLCA1ODU0LCA1ODY3LCA1ODcxLCA1ODc1LCA1ODc5LCA1ODgzLCA1ODg3LCA1ODkxLCA1ODk3LCA1OTA0LCAKLSAgICA1OTEyLCA1OTE2LCA1OTI0LCA1OTMzLCA1OTM5LCA1OTUxLCA1OTU2LCA1OTU5LCA1OTYzLCA1OTczLCA1OTgxLCA1OTg5LCAKLSAgICA1OTk1LCA1OTk5LCA2MDA5LCA2MDE5LCA2MDI3LCA2MDM0LCA2MDQxLCA2MDQ3LCA2MDUzLCA2MDYwLCA2MDY0LCA2MDcxLCAKLSAgICA2MDgxLCA2MDkxLCA2MDk5LCA2MTA2LCA2MTExLCA2MTE1LCA2MTIzLCA2MTI3LCA2MTMyLCA2MTM5LCA2MTQ3LCA2MTUyLCAKLSAgICA2MTU3LCA2MTYxLCA2MTY4LCA2MTczLCA2MTg3LCA2MTkyLCA2MTk3LCA2MjA0LCA2MjEzLCA2MjE2LCA2MjIwLCA2MjI0LCAKLSAgICA2MjI4LCA2MjMxLCA2MjM2LCA2MjQxLCA2MjUwLCA2MjU2LCA2MjYyLCA2MjY4LCA2MjcyLCA2MjgzLCA2MjkzLCA2MzA4LCAKLSAgICA2MzIzLCA2MzM4LCA2MzUzLCA2MzY4LCA2MzgzLCA2Mzk4LCA2NDEzLCA2NDI4LCA2NDQzLCA2NDU4LCA2NDczLCA2NDg4LCAKLSAgICA2NTAzLCA2NTE4LCA2NTMzLCA2NTQ4LCA2NTYzLCA2NTc4LCA2NTkzLCA2NjA4LCA2NjIzLCA2NjM4LCA2NjUzLCA2NjY4LCAKLSAgICA2NjgzLCA2Njk4LCA2NzEzLCA2NzI4LCA2NzQzLCA2NzU4LCA2NzczLCA2Nzg4LCA2ODAzLCA2ODE4LCA2ODMzLCA2ODQ4LCAKLSAgICA2ODYzLCA2ODc4LCA2ODkzLCA2OTA4LCA2OTIzLCA2OTM4LCA2OTUzLCA2OTY4LCA2OTgzLCA2OTk4LCA3MDEzLCA3MDI4LCAKLSAgICA3MDM3LCA3MDQ2LCA3MDUxLCA3MDU3LCA3MDY3LCA3MDcxLCA3MDc2LCA3MDgxLCA3MDg5LCA3MDkzLCA3MDk2LCA3MTAwLCAKLSAgICAyOTc1LCA3MTAzLCA3MTA4LCAyOTgsIDQyNSwgNzExNCwgNzEyMiwgNzEyNiwgNzEzMCwgNzEzMywgNzEzNywgNzE0MywgCi0gICAgNzE0NywgNzE1NSwgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NiwgNzE5MSwgNzE5OCwgNzIwNCwgNzIxMiwgNzIxNiwgCi0gICAgNzIyMSwgNzIzMywgNzI0NCwgNzI1MSwgNzI1NSwgNzI1OSwgNzI2NSwgMzIzMywgNzI2OSwgNzI3NSwgNzI4MCwgNzI4NSwgCi0gICAgNzI5MCwgNzI5NiwgNzMwMSwgNzMwNiwgNzMxMSwgNzMxNiwgNzMyMiwgNzMyNywgNzMzMiwgNzMzOCwgNzM0MywgNzM0OSwgCi0gICAgNzM1NCwgNzM2MCwgNzM2NSwgNzM3MSwgNzM3NiwgNzM4MSwgNzM4NiwgNzM5MSwgNzM5NiwgNzQwMiwgNzQwNywgNzQxMiwgCi0gICAgNzQxNywgNzQyMywgNzQyOSwgNzQzNSwgNzQ0MSwgNzQ0NywgNzQ1MywgNzQ1OSwgNzQ2NSwgNzQ3MSwgNzQ3NywgNzQ4MywgCi0gICAgNzQ4OSwgNzQ5NCwgNzQ5OSwgNzUwNCwgNzUwOSwgNzUxNCwgNzUxOSwgNzUyNCwgNzUyOSwgNzUzNSwgNzU0MSwgNzU0NiwgCi0gICAgNzU1MiwgNzU1OCwgNzU2NCwgNzU2OSwgNzU3NCwgNzU3OSwgNzU4NCwgNzU5MCwgNzU5NiwgNzYwMSwgNzYwNiwgNzYxMSwgCi0gICAgNzYxNiwgNzYyMSwgNzYyNywgNzYzMiwgNzYzOCwgNzY0NCwgNzY1MCwgNzY1NiwgNzY2MiwgNzY2OCwgNzY3NCwgNzY4MCwgCi0gICAgNzY4NiwgMjEzOCwgNzEzMiwgNzY5MSwgNzY5NSwgNzY5OSwgNzcwMiwgNzcwOSwgNzcxMiwgNzcyMCwgNzcyNSwgNzczMCwgCi0gICAgNzcyMSwgNzczNSwgMjE2NSwgNzczOSwgNzc0NSwgNzc1MSwgNzc1NiwgNzc2MSwgNzc2OCwgNzc3NiwgNzc4MSwgNzc4NSwgCi0gICAgNzc4OCwgNzc5MiwgNzc5OCwgNzgwNCwgNzgwOCwgMjE3MywgNTYwLCA3ODExLCA3ODE1LCA3ODIwLCA3ODI2LCA3ODMxLCAKLSAgICA3ODM1LCA3ODM4LCA3ODQyLCA3ODQ4LCA3ODUzLCA3ODU3LCA3ODY0LCA3ODY4LCA3ODcyLCA3ODc2LCA5NDUsIDc2OSwgCi0gICAgNzg3OSwgNzg4NywgNzg5NCwgNzkwMSwgNzkwNywgNzkxNCwgNzkyMiwgNzkyOSwgNzkzNiwgNzk0MSwgNzk1MywgMTI0NywgCi0gICAgMTQwOSwgMTQxNCwgNzk2NCwgMTQxOSwgNzk2OCwgNzk3MiwgNzk4MSwgNzk4OSwgNzk5OCwgODAwNCwgODAwOSwgODAxMywgCi0gICAgODAxOSwgODAyNCwgMjcwNiwgODAzMSwgODAzNSwgODA0NCwgODA1MywgODA2MiwgODA3MSwgODA3NiwgODA4MSwgODA5MywgCi0gICAgODA5OCwgODEwNiwgMjIyNCwgODExMCwgODExMiwgODExNywgODEyMSwgODEzMCwgODEzOCwgMTQyMywgMTMzLCAzNDYxLCAKLSAgICAzNDY2LCA4MTQ0LCA4MTQ4LCA4MTU3LCA4MTYzLCA4MTY4LCA4MTcxLCA4MTgwLCAyNjk4LCA4MTg2LCA4MTk0LCA4MTk4LCAKLSAgICA4MjAyLCA4MjA2LCAyMjM3LCA4MjEwLCA4MjE1LCA4MjIyLCA4MjI4LCA4MjM0LCA4MjM3LCA4MjM5LCA4MjQyLCA4MjUwLCAKLSAgICA4MjU4LCA4MjY2LCA4MjY5LCA4Mjc0LCAyMjUwLCA4Mjc5LCA3NzMyLCA4MjgyLCA4Mjg0LCA4Mjg5LCA4Mjk0LCA4Mjk5LCAKLSAgICA4MzA0LCA4MzA5LCA4MzE0LCA4MzE5LCA4MzI0LCA4MzI5LCA4MzM0LCA4MzQwLCA4MzQ1LCA4MzUwLCA4MzU1LCA4MzYxLCAKLSAgICA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDA3LCA4NDEyLCA4NDE3LCA4NDIyLCAKLSAgICA4NDI3LCA4NDMyLCA4NDM3LCA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDY3LCA4NDcyLCA4NDc3LCA4NDgyLCAKLSAgICA4NDg4LCA4NDk0LCA4NDk5LCA4NTA0LCA4NTA5LCA4NTE0LCA4NTE5LCAyMjYxLCAyMjY4LCAyMjc0LCA4NTI0LCA4NTMwLCAKLSAgICA4NTM4LCAyMzAwLCAyMzA2LCA4NTQ2LCA4NTUwLCA4NTU1LCA4NTU5LCA4NTYzLCA4NTY3LCA4NTcyLCA4NTc2LCA4NTgxLCAKLSAgICA4NTg1LCA4NTg4LCA4NTkxLCA4NTk3LCA4NjAzLCA4NjA5LCA4NjE1LCA4NjIxLCA4NjI3LCA4NjMzLCA4NjM3LCA4NjQxLCAKLSAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKLSAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKLSAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKLSAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA4OTk2LCAKLSAgICA3NjgsIDkwMDAsIDkwMDQsIDkwMDksIDkwMTQsIDkwMTksIDkwMjMsIDkwMjksIDkwMzcsIDkwNDMsIDkwNDcsIDkwNTMsIAotICAgIDkwNjMsIDkwNjcsIDkwNzMsIDkwNzgsIDkwODIsIDkwODgsIDkwOTQsIDIxNjEsIDkwOTksIDkxMDEsIDkxMDYsIDkxMTQsIAotICAgIDkxMjMsIDkxMjcsIDkxMzMsIDkxMzgsIDkxNDMsIDkxNDgsIDkxNTMsIDkxNTksIDkxNjQsIDkxNjksIDQwMDYsIDkxNzQsIAotICAgIDkxNzksIDkxODMsIDkxODksIDkxOTQsIDkyMDAsIDkyMDUsIDkyMTAsIDkyMTYsIDkyMjEsIDkxMjgsIDkyMjcsIDkyMzEsIAotICAgIDkyMzgsIDkyNDQsIDkyNDksIDkyNTMsIDYxODMsIDkyNTgsIDkyNjcsIDkyNzIsIDkyNzcsIDgyMTgsIDgyMjUsIDkyODIsIAotICAgIDI4NTMsIDkyODYsIDkyOTEsIDkyOTYsIDkxMzksIDkzMDAsIDkzMDUsIDkxNDQsIDkxNDksIDkzMTAsIDkzMTcsIDkzMjQsIAotICAgIDkzMzAsIDkzMzYsIDkzNDIsIDkzNDcsIDkzNTIsIDkzNTcsIDkxNTQsIDkxNjAsIDkzNjMsIDkzNjksIDkzNzQsIDkzODIsIAotICAgIDkxNjUsIDkzODcsIDk5MCwgOTM5MCwgOTM5OCwgOTQwNCwgOTQxMCwgOTQxOSwgOTQyNywgOTQzMiwgOTQzOCwgOTQ0NiwgCi0gICAgOTQ1MywgOTQ2OCwgOTQ4NSwgOTUwNCwgOTUxMywgOTUyMSwgOTUzNiwgOTU0NywgOTU1NywgOTU2NywgOTU3NSwgOTU4MSwgCi0gICAgOTU5MywgOTYwMiwgOTYxMCwgOTYxNywgOTYyNCwgOTYzMCwgOTYzNSwgOTY0MywgOTY1MywgOTY2MCwgOTY3MCwgOTY4MCwgCi0gICAgOTY5MCwgOTY5OCwgOTcwNSwgOTcxNCwgOTcyNCwgOTczOCwgOTc1MywgOTc2MiwgOTc3MCwgOTc3NSwgOTc3OSwgOTc4OCwgCi0gICAgOTc5NCwgOTc5OSwgOTgwOSwgOTgxOSwgOTgyOSwgOTgzNCwgOTgzOCwgOTg0NywgOTg1MiwgOTg2MiwgOTg3MywgOTg4NiwgCi0gICAgOTg5NCwgOTkwNywgOTkxOSwgOTkyNywgOTkzMiwgOTkzNiwgOTk0MiwgOTk0NywgOTk1NSwgOTk2MywgOTk3MCwgOTk3NSwgCi0gICAgOTk4MywgOTk4OSwgOTk5MiwgOTk5NiwgMTAwMDIsIDEwMDEwLCAxMDAxNSwgMTAwMTksIDEwMDI3LCAxMDAzNiwgMTAwNDQsIAotICAgIDEwMDUwLCAxMDA1NCwgMTAwNjEsIDEwMDcyLCAxMDA3NiwgMTAwNzksIDEwMDg1LCA5MTcwLCAxMDA5MCwgMTAwOTYsIAotICAgIDEwMTAzLCAxMDEwOSwgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKLSAgICAxMDE3MCwgMTAxNzUsIDk0ODEsIDEwMTgwLCAxMDE4NiwgMTAxOTMsIDEwMjAwLCAxMDIwNSwgMTAyMTIsIDEwMjIxLCAKLSAgICAxMDIyNSwgMTAyMzcsIDgyNTYsIDEwMjQxLCAxMDI0NCwgMTAyNDgsIDEwMjUyLCAxMDI1NiwgMTAyNjAsIDEwMjY2LCAKLSAgICAxMDI3MiwgMTAyNzcsIDEwMjgzLCAxMDI4OCwgMTAyOTMsIDEwMjk5LCAxMDMwNCwgMTAzMDksIDg5NTIsIDEwMzE0LCAKLSAgICAxMDMxOCwgMTAzMjIsIDEwMzI2LCAxMDMzMSwgMTAzMzYsIDEwMzQ0LCAxMDM1MCwgMTAzNTQsIDEwMzU4LCAxMDM2NSwgCi0gICAgMTAzNzAsIDEwMzc4LCAxMDM4MywgMTAzODcsIDEwMzkwLCAxMDM5NiwgMTA0MDMsIDEwNDA3LCAxMDQxMCwgMTA0MTUsIAotICAgIDEwNDE5LCA0MDQ1LCAxMDQyNSwgMTA0MzQsIDM2LCAxMDQ0MiwgMTA0NDgsIDEwNDUzLCA4OTY3LCAxMDQ1OCwgMTA0NjMsIAotICAgIDEwNDY3LCAxMDQ3MCwgMTA0ODUsIDEwNTA0LCAxMDUxNiwgMTA1MjksIDEwNTQyLCAxMDU1NSwgMTA1NjksIDEwNTgyLCAKLSAgICAxMDU5NywgMTA2MDQsIDkxNzUsIDEwNjEwLCAxMDYyNCwgMTA2MjksIDEwNjM1LCAxMDY0MCwgMTA2NDgsIDEwNjUzLCAKLSAgICA4MDQwLCAxMDY1OCwgMTA2NjEsIDEwNjY4LCAxMDY3MywgMTA2NzcsIDI4NTgsIDk5OCwgMTA2ODMsIDEwNjg3LCAxMDY5MywgCi0gICAgMTA2OTksIDEwNzA0LCAxMDcxMCwgMTA3MTUsIDkxODQsIDEwNzIxLCAxMDcyNywgMTA3MzIsIDEwNzM3LCAxMDc0NSwgCi0gICAgMTA3NTEsIDEwNzY0LCAxMDc3MiwgMTA3NzksIDkxOTAsIDEwNzg1LCAxMDc5MywgMTA4MDEsIDEwODA4LCAxMDgyMSwgCi0gICAgMTA4MzMsIDEwODQzLCAxMDg1MSwgMTA4NTgsIDEwODY1LCAxMDg3NCwgMTA4ODMsIDEwODkxLCAxMDg5OCwgMTA5MDMsIAotICAgIDEwOTA5LCA5MTk1LCAxMDkxNCwgMTA5MjAsIDkyMDEsIDEwOTI1LCAxMDkyOCwgMTA5MzUsIDEwOTQxLCAxMDk1NCwgODY2OSwgCi0gICAgMTA5NjUsIDEwOTcxLCAxMDk4MCwgMTA5ODgsIDEwOTk1LCAxMTAwMSwgMTEwMDcsIDExMDEyLCAxMTAxNiwgMTEwMjEsIAotICAgIDEwNDc3LCAxMTAyNywgOTIwNiwgMTEwMzQsIDExMDM5LCAxMTA0NiwgMTEwNTIsIDExMDU4LCAxMTA2MywgMTEwNzEsIAotICAgIDExMDc5LCAxMTA4NiwgMTEwOTAsIDExMTA0LCAxMTExNCwgMTExMTksIDExMTIzLCAxMTEzNCwgMTExNDAsIDExMTQ1LCAKLSAgICAxMTE1MCwgOTIxMSwgOTIxNywgMTExNTQsIDExMTU3LCAxMTE2MiwgMTExNzQsIDExMTgxLCAxMTE4NiwgMTExOTAsIAotICAgIDExMTk1LCAxMTE5OSwgMTEyMDYsIDExMjEyLCA5MjIyLCA5MTI5LCAxMTIxOSwgMjg2MywgOCwgMTEyMjYsIDExMjMxLCAKLSAgICAxMTIzNSwgMTEyNDEsIDExMjQ5LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NiwgMTEyODMsIDExMjg3LCAxMTI5OCwgCi0gICAgMTEzMDgsIDExMzE3LCAxMTMyOSwgMTEzMzQsIDExMzM4LCAxMTM0NiwgMTEzNjAsIDExMzY0LCAxMTM2NywgMTEzNzUsIAotICAgIDExMzgyLCAxMTM5MCwgMTEzOTQsIDExNDA1LCAxMTQwOSwgMTE0MTYsIDExNDIxLCAxMTQyNSwgMTE0MzEsIDExNDM2LCAKLSAgICAxMTQ0MCwgMTE0NDYsIDExNDUxLCAxMTQ2MiwgMTE0NjYsIDExNDY5LCAxMTQ3NSwgMTE0ODAsIDExNDg2LCAxMTQ5MiwgCi0gICAgMTE0OTksIDExNTEwLCAxMTUyMCwgMTE1MzAsIDExNTM5LCAxMTU0NiwgMTE1NTUsIDkyMzIsIDkyMzksIDkyNDUsIDkyNTAsIAotICAgIDExNTYxLCAxMTU2NywgOTI1NCwgMTE1NzMsIDExNTc2LCAxMTU4MywgMTE1ODgsIDExNjAzLCAxMTYxOSwgMTE2MzQsIAotICAgIDExNjQyLCAxMTY0OCwgMTE2NTMsIDgzOCwgNDIwLCAxMTY1OCwgMTE2NjYsIDExNjczLCAxMTY3OSwgMTE2ODQsIDExNjg5LCAKLSAgICA5MjU5LCAxMTY5MSwgMTE2OTUsIDExNzAwLCAxMTcwNCwgMTE3MTQsIDExNzE5LCAxMTcyMywgMTE3MzIsIDExNzM2LCAKLSAgICAxMTczOSwgOTI2OCwgMTE3NDYsIDExNzQ5LCAxMTc1NywgMTE3NjQsIDExNzcyLCAxMTc3NiwgMTE3ODMsIDExNzkyLCAKLSAgICAxMTc5NSwgMTE3OTksIDExODAzLCAxMTgwOSwgMTE4MTMsIDExODE3LCAxMTgyMSwgMTE4MjcsIDExODM3LCAxMTg0MSwgCi0gICAgMTE4NDksIDExODUzLCAxMTg2MCwgMTE4NjQsIDExODY5LCAxMTg3MywgMTE4ODAsIDExODg2LCAxMTg5NCwgMTE5MDAsIAotICAgIDExOTA1LCAxMTkxNSwgMTE5MjAsIDExOTI1LCAxMTkyOSwgMTE5MzcsIDM5MDUsIDExOTQ1LCAxMTk1MCwgOTI3MywgCi0gICAgMTE5NTQsIDExOTU4LCAxMTk2MSwgMTE5NjksIDExOTc2LCAxMTk4MCwgNTk5MSwgMTE5ODQsIDExOTg5LCAxMTk5MywgCi0gICAgMTIwMDQsIDEyMDE0LCAxMjAxOSwgMTIwMjUsIDEyMDI5LCAxMjAzMiwgMTIwNDAsIDEyMDQ1LCAxMjA1MCwgMTIwNTcsIAotICAgIDEyMDYyLCA5Mjc4LCAxMjA2NywgMTIwNzEsIDEyMDc4LCAxNzIyLCA2MTQ1LCAxMjA4MywgMTIwODgsIDEyMDkzLCAxMjA5OCwgCi0gICAgMTIxMDQsIDEyMTA5LCAxMjExNSwgMTIxMjAsIDEyMTI1LCAxMjEzMCwgMTIxMzUsIDEyMTQwLCAxMjE0NSwgMTIxNTAsIAotICAgIDEyMTU1LCAxMjE2MCwgMTIxNjUsIDEyMTcwLCAxMjE3NSwgMTIxODAsIDEyMTg1LCAxMjE5MCwgMTIxOTUsIDEyMjAxLCAKLSAgICAxMjIwNiwgMTIyMTEsIDEyMjE2LCAxMjIyMSwgMTIyMjYsIDEyMjMyLCAxMjIzNywgMTIyNDIsIDEyMjQ4LCAxMjI1MywgCi0gICAgMTIyNTksIDEyMjY0LCAxMjI3MCwgMTIyNzUsIDEyMjgwLCAxMjI4NSwgMTIyOTAsIDEyMjk2LCAxMjMwMSwgMTIzMDYsIAotICAgIDEyMzExLCA3MzcsIDEzOSwgMTIzMTksIDEyMzIzLCAxMjMyOCwgMTIzMzMsIDEyMzM3LCAxMjM0MSwgMTIzNDUsIDEyMzUwLCAKLSAgICAxMjM1NCwgMTIzNTksIDEyMzYzLCAxMjM2NiwgMTIzNzAsIDEyMzc0LCAxMjM4MCwgMTIzODUsIDEyMzk1LCAxMjQwMSwgCi0gICAgMTI0MDksIDEyNDEzLCAxMjQxNywgMTI0MjQsIDEyNDMyLCAxMjQ0MSwgMTI0NTIsIDEyNDU5LCAxMjQ2NiwgMTI0NzAsIAotICAgIDEyNDc5LCAxMjQ4OCwgMTI0OTYsIDEyNTA1LCAxMjUxNCwgMTI1MjMsIDEyNTMyLCAxMjU0MiwgMTI1NTIsIDEyNTYyLCAKLSAgICAxMjU3MiwgMTI1ODIsIDEyNTkxLCAxMjYwMSwgMTI2MTEsIDEyNjIxLCAxMjYzMSwgMTI2NDEsIDEyNjUxLCAxMjY2MSwgCi0gICAgMTI2NzAsIDEyNjgwLCAxMjY5MCwgMTI3MDAsIDEyNzEwLCAxMjcyMCwgMTI3MzAsIDEyNzM5LCAxMjc0OSwgMTI3NTksIAotICAgIDEyNzY5LCAxMjc3OSwgMTI3ODksIDEyNzk5LCAxMjgwOSwgMTI4MTksIDEyODI5LCAxMjgzOCwgMTI4NDgsIDEyODU4LCAKLSAgICAxMjg2OCwgMTI4NzgsIDEyODg4LCAxMjg5OCwgMTI5MDgsIDEyOTE4LCAxMjkyOCwgMTI5MzgsIDEyOTQ3LCAxMjU2LCAKLSAgICAxMjk1MywgMTI5NTYsIDEyOTYwLCAxMjk2NSwgMTI5NzIsIDEyOTc4LCAxMjk4MywgMTI5ODcsIDEyOTkyLCAxMzAwMSwgCi0gICAgMTMwMDksIDEzMDE0LCAxMzAxOCwgMTMwMjIsIDEzMDI4LCAxMzAzMywgMTMwMzksIDkyODcsIDEzMDQ0LCAxMzA0OSwgCi0gICAgMTMwNTgsIDkyOTIsIDEzMDYzLCAxMzA2NiwgMTMwNzIsIDEzMDgwLCA5Mjk3LCAxMzA4NywgMTMwOTEsIDEzMDk1LCAKLSAgICAxMzA5OSwgMTMxMDksIDEzMTE1LCAxMzEyMSwgMTMxMjYsIDEzMTM1LCAxMzE0MywgMTMxNTAsIDEzMTU3LCAxMzE2MiwgCi0gICAgMTMxNjksIDEzMTc0LCAxMzE3OCwgMTMxODEsIDEzMTkyLCAxMzIwMiwgMTMyMTEsIDEzMjE5LCAxMzIzMCwgMTMyNDIsIAotICAgIDEzMjUyLCAxMzI1NywgMTMyNjEsIDEzMjY2LCAxMzI3MSwgMTMyNzUsIDEzMjgxLCAxMzI4OSwgMTMyOTYsIDEzMzA3LCAKLSAgICAxMzMxMiwgMTMzMjIsIDEzMzI2LCAxMzMyOSwgMTMzMzYsIDEzMzQ2LCAxMzM1NSwgMTMzNjIsIDEzMzY2LCAxMzM3MywgCi0gICAgMTMzNzksIDEzMzg0LCAxMzM4OSwgMTMzOTMsIDEzNDAyLCAxMzQwNywgMTM0MTMsIDEzNDE3LCAxMzQyMiwgMTM0MjYsIAotICAgIDEzNDM1LCAxMzQ0MywgMTM0NTEsIDEzNDU4LCAxMzQ2NiwgMTM0NzgsIDEzNDg5LCAxMzQ5OSwgMTM1MDYsIDEzNTEyLCAKLSAgICAxMzUyMSwgMTM1MzIsIDEzNTQxLCAxMzU1MywgMTM1NjUsIDEzNTc3LCAxMzU4NywgMTM1OTYsIDEzNjA1LCAxMzYxMywgCi0gICAgMTM2MjAsIDEzNjI5LCAxMzYzNywgMTM2NDEsIDEzNjQ3LCAxMzY1MywgMTM2NTgsIDc3NTMsIDEzNjYyLCAxMzY2NCwgCi0gICAgMTM2NjgsIDEzNjczLCAxMzY3OSwgMTM2ODgsIDEzNjkyLCAxMzY5OCwgMTM3MDYsIDEzNzEzLCAxMzcyMiwgMTM3MzEsIAotICAgIDEzNzQwLCAxMzc0OSwgMTM3NTgsIDEzNzY3LCAxMzc3NiwgMTM3ODUsIDEzNzk1LCAxMzgwNSwgMTM4MTQsIDEzODIwLCAKLSAgICAxMzgyNywgMTM4MzQsIDEzODQwLCAxMzg1NCwgMTM4NjEsIDEzODY5LCAxMzg3OCwgMTM4ODQsIDEzODkzLCAxMzkwMiwgCi0gICAgMTM5MTMsIDEzOTIzLCAxMzkzMSwgMTM5MzgsIDEzOTQ2LCAxMzk1NSwgMTM5NjgsIDEzOTc2LCAxMzk4MywgMTM5OTYsIAotICAgIDE0MDAyLCAxNDAwOCwgMTQwMTgsIDE0MDI3LCAxNDAzNiwgMTQwNDEsIDE0MDQ1LCAxNDA1MSwgMTQwNTcsIDE0MDY0LCAKLSAgICA4OTY2LCAxNDA2OSwgMTQwNzQsIDE0MDgxLCAxNDA4NiwgMTIzNzYsIDE0MDkxLCAxNDA5OSwgMTQxMDUsIDE0MTEwLCAKLSAgICAxNDExOCwgMTQxMjYsIDE0MTMzLCAxNDE0MSwgMTQxNDcsIDE0MTU1LCAxNDE2MywgMTQxNjksIDE0MTc0LCAxNDE4MCwgCi0gICAgMTQxODcsIDE0MTkzLCAxNDE5OCwgMTQyMDIsIDE0MjEzLCAxNDIyMSwgMTQyMjcsIDE0MjMyLCAxNDI0MSwgMTQyNDcsIAotICAgIDE0MjUyLCAxNDI2MSwgMTQyNzUsIDM4NTMsIDE0Mjc5LCAxNDI4NCwgMTQyODksIDE0Mjk1LCAxNDMwMCwgMTQzMDUsIAotICAgIDE0MzA5LCAxNDMxNCwgMTQzMTksIDE0MzI0LCA3NzUyLCAxNDMyOSwgMTQzMzQsIDE0MzM5LCAxNDM0NCwgMTQzNDksIAotICAgIDE0MzUzLCAxNDM1OCwgMTQzNjMsIDE0MzY4LCAxNDM3MywgMTQzNzksIDE0Mzg1LCAxNDM5MCwgMTQzOTQsIDE0Mzk5LCAKLSAgICAxNDQwNCwgMTQ0MDksIDkzMDEsIDE0NDE0LCAxNDQxOSwgMTQ0MjQsIDE0NDI5LCAxNDQzNCwgMTQ0NTEsIDE0NDY5LCAKLSAgICAxNDQ4MSwgMTQ0OTQsIDE0NTExLCAxNDUyNywgMTQ1NDQsIDE0NTU0LCAxNDU3MywgMTQ1ODQsIDE0NTk1LCAxNDYwNiwgCi0gICAgMTQ2MTcsIDE0NjI5LCAxNDY0MCwgMTQ2NTEsIDE0NjY4LCAxNDY3OSwgMTQ2OTAsIDE0Njk1LCA5MzA2LCAxNDcwMCwgCi0gICAgMTQ3MDQsIDIzODEsIDE0NzA4LCAxNDcxMSwgMTQ3MTcsIDE0NzI1LCAxNDczMywgMTQ3MzgsIDE0NzQ2LCAxNDc1NCwgCi0gICAgMTQ3NjEsIDE0NzY2LCAxNDc3MiwgMTQ3NzksIDE0Nzg3LCAxNDc5NCwgMTQ4MDYsIDE0ODE0LCAxNDgxOSwgMTE1OTcsIAotICAgIDE0ODI1LCAxNDgzNCwgMTQ4NDMsIDE0ODUxLCAxNDg1OCwgMTQ4NjQsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODkyLCAKLSAgICAxNDg5OCwgMTQ5MDcsIDE0OTE1LCAxNDkyNSwgMTQ5MzIsIDE0OTM4LCAxNDk0NiwgMTQ5NTIsIDE0OTYwLCAxNDk2NywgCi0gICAgMTQ5ODAsIDE0OTg3LCAxNDk5NiwgMTUwMDUsIDE1MDE0LCAxNTAyMiwgMTUwMzIsIDE1MDM5LCAxNTA0NCwgMzU2MCwgCi0gICAgMTUwNTEsIDE1MDU2LCAxMzcyLCAxNTA2MCwgMTQzMzAsIDE1MDY0LCAxNTA3MCwgMTUwNzQsIDE1MDgyLCAxNTA5NCwgCi0gICAgMTUwOTksIDE1MTA2LCAxNTExMiwgMTUxMTcsIDE1MTI0LCAxNDMzNSwgMTUxMjgsIDE1MTMyLCAxNTEzNiwgMTQzNDAsIAotICAgIDE1MTQwLCAxNDM0NSwgMTUxNDQsIDE1MTUxLCAxNTE1NiwgMTUxNjAsIDE1MTY3LCAxNTE3MSwgMTUxNzksIDE1MTg2LCAKLSAgICAxNTE5MCwgMTUxOTcsIDE1MjE0LCAxNTIyMywgMTUyMjcsIDE1MjMwLCAxNTIzOCwgMTUyNDQsIDE1MjQ5LCAzNjM4LCAKLSAgICAxNTI1MywgMTUyNTUsIDE1MjYzLCAxNTI3MCwgMTUyODAsIDE1MjkyLCAxNTI5NywgMTUzMDMsIDE1MzA4LCAxNTMxMiwgCi0gICAgMTUzMTgsIDE1MzIzLCAxNTMyOSwgMTUzMzIsIDE1MzM5LCAxNTM0NywgMTUzNTQsIDE1MzYwLCAxNTM2NiwgMTUzNzEsIAotICAgIDE1Mzc4LCAxNTM4NCwgMTUzODksIDE1Mzk2LCAxNTQwMCwgMTU0MDYsIDE1NDEwLCAxNTQxNywgMTU0MjMsIDE1NDI5LCAKLSAgICAxNTQzNywgMTU0NDMsIDE1NDQ4LCAxNTQ1NCwgMTU0NjIsIDE1NDcwLCAxNTQ3NiwgMTU0ODIsIDE1NDg3LCAxNTQ5NCwgCi0gICAgMTU0OTksIDE1NTAzLCAxNTUwOSwgMTU1MTQsIDE1NTIxLCAxNTUyNiwgMTU1MzIsIDE1NTM1LCAxNTU0MSwgMTU1NDcsIAotICAgIDE1NTUwLCAxNTU1NCwgMTU1NjYsIDE1NTcyLCAxNTU3NywgMTU1ODQsIDE1NTkwLCAxNTU5NiwgMTU2MDcsIDE1NjE3LCAKLSAgICAxNTYyNiwgMTU2MzQsIDE1NjQxLCAxNTY1MiwgMTU2NjIsIDE1NjcyLCAxNTY4MCwgMTU2ODMsIDE0MzU5LCAxNTY4OCwgCi0gICAgMTU2OTMsIDE0MzY0LCAxNDQ5OSwgMTU3MDEsIDE1NzE0LCAxNTcyOSwgMTU3NDAsIDE0NTE2LCAxNTc1OCwgMTU3NzEsIAotICAgIDE1Nzg0LCAxNTc5NSwgMTA0OTIsIDE1ODA2LCAxNTgxOSwgMTU4MzgsIDE1ODQ5LCAxNTg2MCwgMTU4NzEsIDI2NDksIAotICAgIDE1ODg0LCAxNTg4OCwgMTU4OTYsIDE1OTExLCAxNTkyNiwgMTU5MzcsIDE1OTQ0LCAxNTk1MCwgMTU5NTgsIDE1OTYyLCAKLSAgICAxNTk2OCwgMTU5NzEsIDE1OTgxLCAxNTk4OSwgMTU5OTYsIDE2MDA0LCAxNjAxNCwgMTYwMTksIDE2MDI2LCAxNjAzMSwgCi0gICAgMTYwMzgsIDE2MDQ5LCAxNjA1OSwgMTYwNjUsIDE2MDcwLCAxNjA3NSwgMTQzNjksIDE2MDc5LCAxNjA4NSwgMTYwOTEsIAotICAgIDE2MDk2LCAxNjEwMSwgMTYxMDYsIDE2MTEwLCAxNDM3NCwgMTQzODAsIDE2MTE0LCAxNDM4NiwgMTYxMTksIDE2MTI3LCAKLSAgICAxNjEzNiwgMTYxNDMsIDkxNTAsIDE2MTQ3LCAxNjE0OSwgMTYxNTQsIDE2MTU5LCAxNjE2NSwgMTYxNzAsIDE2MTc1LCAKLSAgICAxNjE4MCwgMTYxODUsIDE2MTg5LCAxNjE5NSwgMTYyMDEsIDE2MjA2LCAxNjIxMiwgMTYyMTcsIDE2MjIyLCAxNjIyOCwgCi0gICAgMTYyMzMsIDE2MjM4LCAxNjI0MywgMTYyNDgsIDE2MjU0LCAxNjI1OSwgMTYyNjQsIDE2MjcwLCAxNjI3NiwgMTYyODEsIAotICAgIDE2Mjg2LCAxNjI5MywgMTYyOTksIDE2MzEwLCAxNjMxNywgMTYzMjIsIDE2MzI2LCAxNjMzMCwgMTYzMzMsIDE2MzQxLCAKLSAgICAxNjM0NiwgMTYzNTMsIDE2MzYwLCAxNjM2NiwgMTYzNzEsIDE2Mzc2LCAxNjM4MywgMTYzOTMsIDE2Mzk4LCAxNjQwNSwgCi0gICAgMTY0MTEsIDE2NDIxLCAxNjQzMSwgMTY0NDUsIDE2NDU5LCAxNjQ3MywgMTY0ODcsIDE2NTAyLCAxNjUxNywgMTY1MzQsIAotICAgIDE2NTUyLCAxNjU2NSwgMTY1NzEsIDE2NTc2LCAxNjU4MSwgMTY1ODUsIDE2NTkwLCAxNjU5OCwgMTY2MDQsIDE2NjA5LCAKLSAgICAxNjYxNCwgMTY2MTgsIDE2NjIzLCAxNjYyNywgMTY2MzIsIDE2NjM2LCAxNjY0NywgMTY2NTMsIDE2NjU4LCAxNjY2MywgCi0gICAgMTY2NzAsIDE2Njc1LCAxNjY3OSwgMTY2ODQsIDE2Njg5LCAxNjY5NSwgMTY3MDIsIDE2NzA4LCAxNjcxMywgMTY3MTcsIAotICAgIDE2NzIzLCAxNjcyOCwgMTY3MzMsIDE2NzM3LCAxNjc0MywgMTY3NDgsIDE2NzUzLCAxNjc2MCwgMTY3NjUsIDEzMTExLCAKLSAgICAxNjc2OSwgMTY3NzQsIDE2Nzc4LCAxNjc4MywgMTY3ODksIDE2Nzk1LCAxNjgwMiwgMTY4MTIsIDE2ODIwLCAxNjgyNywgCi0gICAgMTY4MzIsIDE2ODM2LCAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NywgMTY4NzMsIDE2ODc5LCAxNjg4NCwgMTY4ODksIAotICAgIDE2ODk1LCAxNjkwMCwgMTY5MDYsIDE2OTExLCAxNjkxNywgMTY5MjMsIDE2OTMwLCAxNjkzNiwgMTY5NDEsIDE2OTQ2LCAKLSAgICA5MzQ4LCAxNjk1NSwgMTY5NTgsIDE2OTY0LCAxNjk2OSwgMTY5NzQsIDE2OTg0LCAxNjk5MSwgMTY5OTcsIDE3MDAyLCAKLSAgICAxNzAwNywgMTcwMTMsIDE3MDE4LCAxNzAyNCwgMTcwMjksIDE3MDM1LCAxNzA0MSwgMTcwNDYsIDE3MDU0LCAxNzA2MSwgCi0gICAgMTcwNjYsIDE3MDcxLCAxNzA3NywgMTcwODIsIDE3MDg2LCAxNzA5NSwgMTcxMDYsIDE3MTEzLCAxNzExOCwgMTcxMjYsIAotICAgIDE3MTMyLCAxNzEzOSwgMTcxNDUsIDE3MTUwLCAxNzE1NCwgMTcxNjAsIDE3MTY1LCAxNzE3MCwgMTcxNzUsIDE0NDAsIAotICAgIDc3NzcsIDI4NzcsIDE3MTc5LCAxNzE4MywgMTcxODcsIDE3MTkxLCAxNzE5NSwgMTcxOTksIDE3MjAyLCAxNzIwOSwgCi0gICAgMTcyMTcsIDE0NDAwLCAxNzIyNCwgMTcyMzQsIDE3MjQyLCAxNzI0OSwgMTcyNTcsIDE3MjY3LCAxNzI3NiwgMTcyODksIAotICAgIDE3Mjk0LCAxNzI5OSwgMTczMDcsIDE3MzE0LCAxMzIwNywgMTMyMTYsIDE3MzIxLCAxNzMzMSwgMTczNDYsIDE3MzUyLCAKLSAgICAxNzM1OSwgMTczNjYsIDE3MzcyLCAxNzM4MCwgMTczOTAsIDE3NDAwLCAxNDQwNSwgMTc0MDksIDE3NDE1LCAxNzQyMSwgCi0gICAgMTc0MjksIDE3NDM3LCAxNzQ0MiwgMTc0NTEsIDE3NDU5LCAxNzQ3MSwgMTc0ODEsIDE3NDkxLCAxNzUwMSwgMTc1MTAsIAotICAgIDE3NTIyLCAxNzUzMiwgMTc1NDIsIDE3NTUzLCAxNzU1OCwgMTc1NzAsIDE3NTgyLCAxNzU5NCwgMTc2MDYsIDE3NjE4LCAKLSAgICAxNzYzMCwgMTc2NDIsIDE3NjU0LCAxNzY2NiwgMTc2NzgsIDE3Njg5LCAxNzcwMSwgMTc3MTMsIDE3NzI1LCAxNzczNywgCi0gICAgMTc3NDksIDE3NzYxLCAxNzc3MywgMTc3ODUsIDE3Nzk3LCAxNzgwOSwgMTc4MjAsIDE3ODMyLCAxNzg0NCwgMTc4NTYsIAotICAgIDE3ODY4LCAxNzg4MCwgMTc4OTIsIDE3OTA0LCAxNzkxNiwgMTc5MjgsIDE3OTQwLCAxNzk1MSwgMTc5NjMsIDE3OTc1LCAKLSAgICAxNzk4NywgMTc5OTksIDE4MDExLCAxODAyMywgMTgwMzUsIDE4MDQ3LCAxODA1OSwgMTgwNzEsIDE4MDgyLCAxODA5NCwgCi0gICAgMTgxMDYsIDE4MTE4LCAxODEzMCwgMTgxNDIsIDE4MTU0LCAxODE2NiwgMTgxNzgsIDE4MTkwLCAxODIwMiwgMTgyMTMsIAotICAgIDE4MjI1LCAxODIzNywgMTgyNDksIDE4MjYxLCAxODI3MywgMTgyODUsIDE4Mjk3LCAxODMwOSwgMTgzMjEsIDE4MzMzLCAKLSAgICAxODM0NCwgMTgzNTYsIDE4MzY4LCAxODM4MCwgMTgzOTIsIDE4NDA0LCAxODQxNiwgMTg0MjgsIDE4NDQwLCAxODQ1MiwgCi0gICAgMTg0NjQsIDE4NDc1LCAxODQ4NywgMTg0OTksIDE4NTExLCAxODUyMywgMTg1MzYsIDE4NTQ5LCAxODU2MiwgMTg1NzUsIAotICAgIDE4NTg4LCAxODYwMSwgMTg2MTQsIDE4NjI2LCAxODYzOSwgMTg2NTIsIDE4NjY1LCAxODY3OCwgMTg2OTEsIDE4NzA0LCAKLSAgICAxODcxNywgMTg3MzAsIDE4NzQzLCAxODc1NiwgMTg3NjgsIDE4NzgxLCAxODc5NCwgMTg4MDcsIDE4ODIwLCAxODgzMywgCi0gICAgMTg4NDYsIDE4ODU5LCAxODg3MiwgMTg4ODUsIDE4ODk4LCAxODkxMCwgMTg5MjMsIDE4OTM2LCAxODk0OSwgMTg5NjIsIAotICAgIDE4OTc1LCAxODk4OCwgMTkwMDEsIDE5MDE0LCAxOTAyNywgMTkwNDAsIDE5MDUyLCAxOTA2NSwgMTkwNzgsIDE5MDkxLCAKLSAgICAxOTEwNCwgMTkxMTcsIDE5MTMwLCAxOTE0MywgMTkxNTYsIDE5MTY5LCAxOTE4MiwgMTkxOTQsIDE5MjA3LCAxOTIyMCwgCi0gICAgMTkyMzMsIDE5MjQ2LCAxOTI1OSwgMTkyNzIsIDE5Mjg1LCAxOTI5OCwgMTkzMTEsIDE5MzI0LCAxOTMzNiwgMTkzNDcsIAotICAgIDE5MzYwLCAxOTM3MywgMTkzODYsIDE5Mzk5LCAxOTQxMiwgMTk0MjUsIDE5NDM4LCAxOTQ1MSwgMTk0NjQsIDE5NDc3LCAKLSAgICAxOTQ4OSwgMTk1MDIsIDE5NTE1LCAxOTUyOCwgMTk1NDEsIDE5NTU0LCAxOTU2NywgMTk1ODAsIDE5NTkzLCAxOTYwNiwgCi0gICAgMTk2MTksIDE5NjMxLCAxOTY0NCwgMTk2NTcsIDE5NjcwLCAxOTY4MywgMTk2OTYsIDE5NzA5LCAxOTcyMiwgMTk3MzUsIAotICAgIDE5NzQ4LCAxOTc2MSwgMTk3NzMsIDE5Nzg2LCAxOTc5OSwgMTk4MTIsIDE5ODI1LCAxOTgzOCwgMTk4NTEsIDE5ODY0LCAKLSAgICAxOTg3NywgMTk4OTAsIDE5OTAzLCAxOTkxNSwgMTk5MjgsIDE5OTQxLCAxOTk1NCwgMTk5NjcsIDE5OTgwLCAxOTk5MywgCi0gICAgMjAwMDYsIDIwMDE5LCAyMDAzMiwgMjAwNDUsIDIwMDU3LCAyMDA3MCwgMjAwODMsIDIwMDk2LCAyMDEwOSwgMjAxMjIsIAotICAgIDIwMTM1LCAyMDE0OCwgMjAxNjEsIDIwMTc0LCAyMDE4NywgMjAxOTksIDIwMjEyLCAyMDIyNSwgMjAyMzgsIDIwMjUxLCAKLSAgICAyMDI2NCwgMjAyNzcsIDIwMjkwLCAyMDMwMywgMjAzMTYsIDIwMzI5LCAyMDM0MSwgMjAzNTQsIDIwMzY3LCAyMDM4MCwgCi0gICAgMjAzOTMsIDIwNDA2LCAyMDQxOSwgMjA0MzIsIDIwNDQ1LCAyMDQ1OCwgMjA0NzEsIDIwNDgzLCAyMDQ5NiwgMjA1MDksIAotICAgIDIwNTIyLCAyMDUzNSwgMjA1NDgsIDIwNTYxLCAyMDU3NCwgMjA1ODcsIDIwNjAwLCAyMDYxMywgMjA2MjUsIDIwNjM4LCAKLSAgICAyMDY1MSwgMjA2NjQsIDIwNjc3LCAyMDY5MCwgMjA3MDMsIDIwNzE2LCAyMDcyOSwgMjA3NDIsIDIwNzU1LCAyMDc2NywgCi0gICAgMjA3NzgsIDIwNzg2LCAyMDc5NCwgMjA4MDEsIDIwODA3LCAyMDgxMSwgMjA4MTcsIDIwODIzLCAyMDgzMSwgMjA4MzcsIAotICAgIDIwODQyLCAyMDg0NiwgMjA4NTUsIDkxNTUsIDIwODY2LCAyMDg3MywgMjA4ODEsIDIwODg4LCAyMDg5NSwgMTA5NDgsIAotICAgIDIwOTAyLCAyMDkxMSwgMjA5MTYsIDIwOTIxLCA3ODA1LCAyMDkyOCwgMjA5MzMsIDIwOTM2LCAyMDk0MSwgMjA5NDksIAotICAgIDIwOTU2LCAyMDk2MywgMjA5NzAsIDIwOTc2LCAyMDk4NSwgMjA5OTQsIDIxMDAwLCAyMTAwOSwgMjEwMTMsIDIxMDE5LCAKLSAgICAyMTAyNCwgMjEwMzQsIDIxMDQxLCAyMTA0NywgMjEwNTUsIDIxMDYxLCAyMTA2OCwgMjEwNzgsIDIxMDg3LCAyMTA5MSwgCi0gICAgMjEwOTgsIDIxMTAyLCAyMTEwNywgMjExMTMsIDIxMTIxLCAyMTEyNSwgMjExMzUsIDE0NDE1LCAyMTE0NCwgMjExNTAsIAotICAgIDIxMTU0LCAyMTE2MywgMTQ0MjAsIDIxMTY5LCAyMTE3NiwgMjExODcsIDIxMTk1LCAyMTIwNCwgMjEyMTIsIDg5MzEsIAotICAgIDIxMjIwLCAyMTIyNSwgMjEyMzEsIDIxMjM2LCAyMTI0MCwgMjEyNDQsIDIxMjQ4LCA5NjM5LCAyMTI1MywgMjEyNjEsIAotICAgIDIxMjY4LCAyMTI3NywgMjEyODQsIDIxMjkxLCAxMDg3OCwgMjEyOTgsIDIxMzA0LCAyMTMwOCwgMjEzMTQsIDIxMzIxLCAKLSAgICAyMTMyNywgMjEzMzUsIDIxMzQxLCAyMTM0OCwgMjEzNTQsIDIxMzYwLCAyMTM2OSwgMjEzNzMsIDIxMzgxLCAyMTM5MCwgCi0gICAgMjEzOTcsIDIxNDAyLCAyMTQwNiwgMjE0MTcsIDIxNDIyLCAyMTQyNywgMjE0MzIsIDIxNDQ1LCA3OTk1LCAyMTQ0OSwgCi0gICAgMjE0NTUsIDIxNDYzLCAyMTQ2NywgMjE0NzQsIDIxNDgzLCAyMTQ4OCwgMTQ2OTEsIDIxNDk2LCAyMTUwMCwgMjE1MTIsIAotICAgIDIxNTE3LCAyMTUyMSwgMjE1MjQsIDIxNTMwLCAyMTUzNiwgMjE1NDEsIDIxNTQ1LCAyMTU0OCwgMjE1NTksIDIxNTY0LCAKLSAgICA5MzgzLCAyMTU3MSwgMjE1NzYsIDkzODgsIDIxNTgxLCAyMTU4NiwgMjE1OTEsIDIxNTk2LCAyMTYwMSwgMjE2MDYsIAotICAgIDIxNjExLCAyMTYxNiwgMjE2MjEsIDIxNjI2LCAyMTYzMSwgMjE2MzYsIDIxNjQyLCAyMTY0NywgMjE2NTIsIDIxNjU3LCAKLSAgICAyMTY2MiwgMjE2NjcsIDIxNjcyLCAyMTY3NywgMjE2ODIsIDIxNjg3LCAyMTY5MywgMjE2OTksIDIxNzA0LCAyMTcwOSwgCi0gICAgMjE3MTQsIDIxNzE5LCAyMTcyNCwgMjE3MjksIDIxNzM0LCAyMTczOSwgMjE3NDQsIDIxNzUwLCAyMTc1NSwgMjE3NjAsIAotICAgIDIxNzY1LCAyMTc3MSwgMjE3NzcsIDIxNzgyLCAyMTc4NywgMjE3OTIsIDIxNzk3LCAyMTgwMiwgMjE4MDcsIDIxODEyLCAKLSAgICAyMTgxNywgMjE4MjMsIDIxODI4LCAyMTgzMywgMjE4MzgsIDIxODQzLCAyMTg0OSwgMjE4NTQsIDIxODU5LCAyMTg2MywgCi0gICAgMTM2OCwgMTI5LCAyMTg3MSwgMjE4NzUsIDIxODc5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAxMzExNywgMTI0NzYsIDIxODk2LCAKLSAgICAyMTkwMSwgMjE5MDUsIDIxOTEwLCAyMTkxNCwgMjE5MTksIDIxOTIzLCAyMTkyOSwgMjE5MzQsIDIxOTM4LCAyMTk0MiwgCi0gICAgMjE5NTAsIDIxOTU0LCAyMTk1OCwgMjE5NjMsIDIxOTY4LCAyMTk3MiwgMjE5NzgsIDIxOTgzLCAyMTk4NywgMjE5OTIsIAotICAgIDIxOTk3LCAyMjAwMSwgMjIwMDgsIDIyMDE1LCAyMjAyMiwgMjIwMjYsIDIyMDMwLCAyMjAzNSwgMjIwMzksIDIyMDQyLCAKLSAgICAyMjA0OCwgMjIwNjEsIDIyMDY2LCAyMjA3NSwgMjIwODAsIDk0MjgsIDIyMDg1LCAyMjA4OCwgMjcxMiwgMjcxNywgMjIwOTIsIAotICAgIDIyMDk4LCAyMjEwNCwgNzIwOSwgMjIxMDksIDIyMTE0LCAyMjExOSwgMjIxMjUsIDIyMTMwLCAxMzkwOSwgMjIxMzUsIAotICAgIDIyMTQwLCAyMjE0NSwgMjIxNTAsIDIyMTU2LCAyMjE2MSwgMjIxNjYsIDIyMTcyLCAyMjE3NywgMjIxODEsIDIyMTg2LCAKLSAgICAyMjE5MSwgMjIxOTYsIDIyMjAxLCAyMjIwNSwgMjIyMTAsIDIyMjE0LCAyMjIxOSwgMjIyMjQsIDIyMjI5LCAyMjIzNCwgCi0gICAgMjIyMzgsIDIyMjQzLCAyMjI0NywgMjIyNTIsIDIyMjU3LCAyMjI2MiwgMjIyNjcsIDI4ODYsIDIyMTgyLCAyMjI3MSwgCi0gICAgMjIyNzksIDIyMjg2LCA5NzMzLCAyMjI5OCwgMjIzMDYsIDIyMTg3LCAyMjMxMywgMjIzMTgsIDIyMzI2LCAyMjE5MiwgCi0gICAgMjIzMzEsIDIyMzM2LCAyMjM0NCwgMjIzNDksIDIyMTk3LCAyMjM1NCwgMjIzNTksIDIyMzYzLCAyMjM2OSwgMjIzNzcsIAotICAgIDIyMzgwLCAyMjM4NywgMjIzOTEsIDIyMzk1LCAyMjQwMSwgMjI0MDgsIDIyNDEzLCA4OTU4LCAxNzI3LCAxNzMyLCAyMjQxNywgCi0gICAgMjI0MjMsIDIyNDI5LCAyMjQzNCwgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDU0LCAyMjQ1OCwgMjI0NjIsIAotICAgIDIyNDY2LCAyMjQ2OSwgMjI0NzUsIDIyNDgyLCAyMjQ5MCwgMjI0OTYsIDIyNTAyLCAyMjUwNywgMjI1MTIsIDIyNTE2LCAKLSAgICAxMzgyOSwgMTM4MzYsIDIyNTIxLCAyMjUzMywgMjI1MzYsIDIyNTQzLCAxNjM2MiwgMjI1NTAsIDIyNTU4LCAyMjU2OSwgCi0gICAgMjI1NzgsIDIyNTkxLCAyMjYwMSwgMjI2MTUsIDIyNjI3LCAyMjY0MSwgMjI2NTMsIDIyNjYzLCAyMjY3NSwgMjI2ODEsIAotICAgIDIyNjk2LCAyMjcyMCwgMjI3MzgsIDIyNzU3LCAyMjc3MCwgMjI3ODQsIDIyODAyLCAyMjgxOCwgMjI4MzUsIDIyODUzLCAKLSAgICAyMjg2NCwgMjI4ODMsIDIyOTAwLCAyMjkyMCwgMjI5MzgsIDIyOTUwLCAyMjk2NCwgMjI5NzgsIDIyOTkwLCAyMzAwNywgCi0gICAgMjMwMjYsIDIzMDQ0LCAyMzA1NiwgMjMwNzQsIDIzMDkzLCAxNDU1OSwgMjMxMDYsIDIzMTI2LCAyMzEzOCwgMTA1MjMsIAotICAgIDIzMTUwLCAyMzE1NSwgMjMxNjAsIDIzMTY1LCAyMzE3MSwgMjMxNzYsIDIzMTgwLCAyMzE4NywgMjM5OCwgMjMxOTEsIAotICAgIDIzMTk3LCAyMzIwMSwgMjMyMDQsIDIzMjA4LCAyMzIxNiwgMjMyMjIsIDIyMjE1LCAyMzIyNiwgMjMyMzUsIDIzMjQ2LCAKLSAgICAyMzI1MiwgMjMyNTgsIDIzMjY3LCAyMzI3NSwgMjMyODIsIDIzMjg3LCAyMzI5MSwgMjMyOTgsIDIzMzA0LCAyMzMxMywgCi0gICAgMjMzMjEsIDIzMzI4LCAyMzMzOCwgMjMzNDcsIDIzMzU3LCAyMzM2MiwgMjMzNzEsIDIzMzgwLCAyMzM5MSwgMjM0MDIsIAotICAgIDM5NjMsIDIzNDEyLCAyMzQxNiwgMjM0MjYsIDIzNDM0LCAyMzQ0NCwgMjM0NTUsIDIzNDYwLCAyMzQ3MCwgMjM0NzgsIAotICAgIDIzNDg1LCAyMzQ5MSwgMjM0OTgsIDIzNTAzLCAyMjIyNSwgMjM1MDcsIDIzNTE2LCAyMzUyMCwgMjM1MjMsIDIzNTI4LCAKLSAgICAyMzUzNSwgMjM1NDQsIDIzNTUyLCAyMzU2MCwgMjM1NzAsIDIzNTc5LCAyMzU4NSwgMjM1OTEsIDIyMjMwLCAyMjIzNSwgCi0gICAgMjM1OTUsIDIzNjA1LCAyMzYxNSwgMjM2MjUsIDIzNjMzLCAyMzY0MCwgMjM2NTAsIDIzNjU4LCAyMzY2NiwgMjM2NzIsIAotICAgIDIzNjgwLCA5MzAsIDIzNjg5LCAxNDc1MCwgNTQyLCAyMzcwMywgMjM3MTIsIDIzNzIwLCAyMzczMSwgMjM3NDIsIDIzNzUyLCAKLSAgICAyMzc2MSwgMjM3NzMsIDIzNzgyLCAyMzc5MSwgMjM3OTcsIDIzODA2LCAyMzgxNSwgMjM4MjUsIDIzODMzLCAyMzg0MSwgCi0gICAgOTM2MCwgMjM4NDcsIDIzODUwLCAyMzg1NCwgMjM4NTksIDIzODY0LCA5ODQ4LCAyMjI0OCwgMjIyNTMsIDIzODcyLCAKLSAgICAyMzg3OCwgMjM4ODQsIDIzODg5LCAyMzg5NCwgMjM4OTgsIDIzOTA2LCAyMzkxMiwgMjM5MTgsIDIzOTIyLCAzNTI1LCAKLSAgICAyMzkzMCwgMjM5MzUsIDIzOTQwLCAyMzk0NCwgMjM5NDgsIDk5MjgsIDIzOTU1LCAyMzk2MywgMjM5NzcsIDIzOTg0LCAKLSAgICAyMzk5MCwgOTkzNywgOTk0MywgMjM5OTgsIDI0MDA2LCAyNDAxMywgMjQwMTgsIDI0MDIzLCAyMjI1OCwgMjQwMjksIAotICAgIDI0MDQwLCAyNDA0NCwgMjQwNDksIDI2MDEsIDI0MDU0LCAyNDA2NSwgMjQwNzEsIDI0MDc2LCAyNDA4MCwgMjQwODQsIAotICAgIDI0MDg3LCAyNDA5NCwgMjQxMDEsIDI0MTA4LCAyNDExNCwgMjQxMTgsIDIyMjYzLCAyNDEyMywgMjQxMjcsIDI0MTMxLCAKLSAgICAxMDM3LCAyNDEzNiwgMjQxNDEsIDI0MTQ2LCAyNDE1MSwgMjQxNTYsIDI0MTYxLCAyNDE2NiwgMjQxNzEsIDI0MTc2LCAKLSAgICAyNDE4MSwgMjQxODYsIDI0MTkxLCAyNDE5NiwgMjQyMDEsIDI0MjA3LCAyNDIxMiwgMjQyMTcsIDI0MjIyLCAyNDIyNywgCi0gICAgMjQyMzIsIDI0MjM3LCAyNDI0MywgMjQyNDgsIDI0MjUzLCAyNDI1OCwgMjQyNjMsIDI0MjY4LCAyNDI3MywgMjQyNzgsIAotICAgIDI0Mjg0LCAyNDI5MCwgMjQyOTUsIDI0MzAxLCAyNDMwNiwgMjQzMTEsIDUsIDI0MzE3LCAyNDMyMSwgMjQzMjUsIDI0MzI5LCAKLSAgICAyNDMzNCwgMjQzMzgsIDI0MzQyLCAyNDM0NiwgMjQzNTAsIDI0MzU1LCAyNDM1OSwgMjQzNjQsIDI0MzY4LCAyNDM3MSwgCi0gICAgMjQzNzUsIDI0MzgwLCAyNDM4NCwgMjQzODksIDI0MzkzLCAyNDM5NywgMjQ0MDEsIDI0NDA2LCAyNDQxMCwgMjQ0MTQsIAotICAgIDI0NDI0LCAyNDQyOSwgMjQ0MzMsIDI0NDM3LCAyNDQ0MiwgMjQ0NDcsIDI0NDU2LCAyNDQ2MSwgMjQ0NjYsIDI0NDcwLCAKLSAgICAyNDQ3NCwgMjQ0ODcsIDI0NDk5LCAyNDUwOCwgMjQ1MTcsIDI0NTIzLCAyNDUyOCwgMjQ1MzIsIDI0NTM2LCAyNDU0NiwgCi0gICAgMjQ1NTUsIDI0NTYzLCAyNDU2OSwgMjQ1NzQsIDI0NTc4LCAyNDU4NSwgMjQ1OTUsIDI0NjA0LCAyNDYxMiwgMjQ2MjAsIAotICAgIDI0NjI3LCAyNDYzNSwgMjQ2NDQsIDI0NjUzLCAyNDY2MSwgMjQ2NjYsIDI0NjcwLCAyNDY3NCwgMjQ2NzcsIDI0Njc5LCAKLSAgICAyNDY4MywgMjQ2ODcsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIDI0NzA1LCAyNDcwOCwgMjQ3MTIsIDI0NzE1LCAyNDcxOSwgCi0gICAgMjQ3MjIsIDI0NzI1LCAyNDcyOSwgMjQ3MzUsIDI0NzM5LCAyNDc0MywgMjQ3NDcsIDI0NzUyLCAyNDc1NywgMjQ3NjIsIAotICAgIDI0NzY2LCAyNDc2OSwgMjQ3NzQsIDI0NzgwLCAyNDc4NSwgMjQ3OTEsIDI0Nzk2LCAyNDgwMCwgMjQ4MDQsIDI0ODA4LCAKLSAgICAyNDgxMywgMjQ4MTcsIDI0ODIyLCAyNDgyNiwgMjQ4MzAsIDI0ODM3LCAyNDg0MSwgMjQ4NDQsIDI0ODQ4LCAyNDg1NCwgCi0gICAgMjQ4NjAsIDI0ODY0LCAyNDg2OCwgMjQ4NzMsIDI0ODgwLCAyNDg4NiwgMjQ4OTAsIDI0ODk5LCAyNDkwMywgMjQ5MDcsIAotICAgIDI0OTEwLCAyNDkxNiwgMjQ5MjEsIDI0OTI3LCAxNDg5LCAxNzkxLCAyNDkzMiwgMjQ5MzcsIDI0OTQyLCAyNDk0NywgCi0gICAgMjQ5NTIsIDI0OTU3LCAyNDk2MiwgMjE0OCwgMjE5NCwgMjQ5NjcsIDI0OTcwLCAyNDk3NCwgMjQ5NzgsIDI0OTgzLCAKLSAgICAyNDk4NywgMjQ5OTEsIDI0OTk0LCAyNDk5OSwgMjUwMDQsIDI1MDA4LCAyNTAxMSwgMjUwMTYsIDI1MDIwLCAyNTAyNSwgCi0gICAgMjUwMjksIDE0NzYyLCAyNTAzNCwgMjUwMzcsIDI1MDQwLCAyNTA0NCwgMjUwNDksIDI1MDUzLCAyNTA2NiwgMjUwNzAsIAotICAgIDI1MDczLCAyNTA4MSwgMjUwOTAsIDI1MDk3LCAyNTEwMiwgMjUxMDgsIDI1MTE0LCAyNTEyMiwgMjUxMjksIDI1MTM2LCAKLSAgICAyNTE0MCwgMjUxNDQsIDI1MTQ4LCAyNTE1MywgMjUxNTgsIDI1MTYyLCAyNTE3MCwgMjUxNzUsIDI1MTg3LCAyNTE5OCwgCi0gICAgMjUyMDMsIDI1MjA3LCAyNTIxMSwgMjUyMTcsIDI1MjIyLCAyNTIyNywgMjUyMzEsIDI1MjM1LCAyNTIzOCwgMjUyNDQsIAotICAgIDc5MTUsIDIzMTYsIDI1MjQ4LCAyNTI1MywgMjUyNjksIDk0NzUsIDI1Mjg5LCAyNTI5OCwgMjUzMTQsIDI1MzE4LCAyNTMyMSwgCi0gICAgMjUzMjcsIDI1MzM3LCAyNTM0MywgMjUzNTIsIDI1MzY3LCAyNTM3OSwgMjUzOTAsIDI1Mzk4LCAyNTQwNywgMjU0MTMsIAotICAgIDI1NDIyLCAyNTQzMiwgMjU0NDMsIDI1NDU0LCAyNTQ2MywgMjU0NzAsIDI1NDc5LCAyNTQ4NywgMjU0OTQsIDI1NTAyLCAKLSAgICAyNTUwOSwgMjU1MTYsIDI1NTI5LCAyNTUzNiwgMjU1NDIsIDI1NTQ3LCAyNTU1NiwgMjU1NjIsIDI1NTY3LCAyNTU3NSwgCi0gICAgMjU1ODIsIDIzNDM2LCAyNTU5NCwgMjU2MDYsIDI1NjIwLCAyNTYyOCwgMjU2MzUsIDI1NjQ3LCAyNTY1NiwgMjU2NjUsIAotICAgIDI1NjczLCAyNTY4MSwgMjU2ODksIDI1Njk2LCAyNTcwNSwgMjU3MTMsIDI1NzIzLCAyNTczMiwgMjU3NDIsIDI1NzUxLCAKLSAgICAyNTc2MCwgMjU3NjgsIDI1NzczLCAyNTc3NywgMjU3ODAsIDI1Nzg0LCAyNTc4OCwgMjU3OTIsIDI1Nzk2LCAyNTgwMCwgCi0gICAgMjU4MDYsIDI1ODEyLCAyNTgyMCwgMTQ4MDcsIDI1ODI3LCAyNTgzMiwgMjU4MzksIDI1ODQ1LCAyNTg1MiwgMTQ4MTUsIAotICAgIDI1ODU5LCAyNTg2MiwgMjU4NzQsIDI1ODgyLCAyNTg4OCwgMjU4OTMsIDI1ODk3LCA5ODc4LCAyNTkwOCwgMjU5MTgsIAotICAgIDI1OTI3LCAyNTkzNCwgMjU5MzgsIDE0ODIwLCAyNTk0MSwgMjU5NDgsIDI1OTUyLCAyNTk1OCwgMjU5NjEsIDI1OTY4LCAKLSAgICAyNTk3NCwgMjU5ODEsIDI1OTg3LCAyNTk5MSwgMjU5OTYsIDI2MDAwLCAyNjAwOSwgMjYwMTYsIDI2MDIyLCA3OTU2LCAKLSAgICAyNjAyOSwgMjYwMzcsIDI2MDQ0LCAyNjA1MCwgMjYwNTUsIDI2MDYxLCAyNjA2NywgMjYwNzUsIDI2MDc5LCAyNjA4MiwgCi0gICAgMjYwODQsIDI1Nzg1LCAyNjA5MywgMjYwOTksIDI2MTA5LCAyNjExNCwgMjYxMjEsIDI2MTI3LCAyNjEzMiwgMjYxMzcsIAotICAgIDI2MTQyLCAyNjE0NiwgMjYxNTEsIDI2MTU4LCAyNjE2NywgMjYxNzEsIDI2MTc4LCAyNjE4NywgMjYxOTMsIDI2MTk4LCAKLSAgICAyNjIwNCwgMjYyMDksIDI2MjE2LCAyNjIyNywgMjYyMzIsIDI2MjM2LCAyNjI0NiwgMjYyNTIsIDI2MjU2LCAyNjI2MSwgCi0gICAgMjYyNzEsIDI2MjgwLCAyNjI4NCwgMjYyOTEsIDI2Mjk5LCAyNjMwNiwgMjYzMTIsIDI2MzE3LCAyNjMyNSwgMjYzMzIsIAotICAgIDI2MzQ0LCAyNjM1MywgMjYzNTcsIDEzMDUzLCAyNjM2NSwgMjYzNzUsIDI2Mzc5LCAyNTA3NywgMjYzOTAsIDI2Mzk1LCAKLSAgICAyNjM5OSwgMjY0MDYsIDI2NDEzLCAyMTk3NCwgMjU3MTAsIDI2NDE4LCAyNjQyMiwgMjY0MjUsIDIyODcwLCAyNjQzMCwgCi0gICAgMjY0NDQsIDI2NDYwLCAyNjQ3OCwgMjY0OTcsIDI2NTE0LCAyNjUzMiwgMjI4ODksIDI2NTQ5LCAyNjU2OSwgMjI5MDYsIAotICAgIDI2NTgxLCAyNjU5MywgMTU3NDUsIDI2NjA1LCAyMjkyNiwgMjY2MTksIDI2NjMxLCAxMDUzNiwgMjY2NDUsIDI2NjUwLCAKLSAgICAyNjY1NSwgMjY2NjAsIDI2NjY2LCAyNjY3MiwgMjY2NzgsIDI2NjgyLCAyNjY4OSwgMjY2OTQsIDI2NzA0LCAyNjcxMCwgCi0gICAgMTAxODMsIDI2NzE2LCAyNjcxOCwgMjY3MjMsIDI2NzMxLCAyNjczNSwgMjYxNTQsIDI2NzQxLCAyNjc0OCwgMTE1MjQsIAotICAgIDExNTM0LCAyNjc1NSwgMjY3NjUsIDI2NzcwLCAyNjc3NCwgMjY3NzcsIDI2NzgzLCAyNjc5MSwgMjY4MDMsIDI2ODEzLCAKLSAgICAyNjgyOSwgMjY4NDIsIDI2ODU2LCAxNTc2MywgMjY4NzAsIDI2ODc3LCAyNjg4MSwgMjY4ODQsIDI2ODg5LCAyNjg5MywgCi0gICAgMjY5MDAsIDI2OTA3LCAyNjkxNywgMjY5MjIsIDI2OTI3LCAyNjkzMiwgMjY5NDAsIDI2OTQ4LCAyNjk1NywgMjY5NjIsIAotICAgIDk1NzIsIDI2OTY2LCAyNjk2OSwgMjY5NzIsIDI2OTc3LCAyNjk4NCwgMjY5ODksIDI3MDA1LCAyNzAxMywgMjcwMjEsIAotICAgIDk0MjMsIDI3MDI5LCAyNzAzNCwgMjcwMzgsIDI3MDQ0LCAyNzA1MCwgMjcwNTMsIDI3MDU5LCAyNzA3MSwgMjcwNzksIAotICAgIDI3MDg2LCAyNzA5MiwgMjcwOTksIDI3MTEwLCAyNzEyNCwgMjcxMzcsIDI3MTQ2LCAyNzE1NSwgMjcxNjcsIDI3MTc4LCAKLSAgICAyNzE4OCwgMjcxOTcsIDI3MjA2LCAyNzIxNCwgMjcyMjUsIDc5MzgsIDI3MjMyLCAyNzIzOCwgMjcyNDMsIDI3MjQ5LCAKLSAgICAyNzI1NiwgMjcyNjYsIDI3Mjc2LCAyNzI4NSwgMjcyOTEsIDI3Mjk4LCAyNzMwMywgMjczMTAsIDI3MzE4LCAyNzMyNiwgCi0gICAgMjczMzgsIDYyNDYsIDI3MzQ1LCAyNzM1NCwgMjczNjIsIDI3MzY4LCAyNzM3NCwgMjczNzksIDI3MzgzLCAyNzM4NiwgCi0gICAgMjczOTIsIDI3Mzk5LCAyNzQwNCwgMjc0MDksIDI3NDEzLCAyNzQyNSwgMjc0MzYsIDI3NDQ1LCAyNzQ1MywgMTQ5NDcsIAotICAgIDI3NDU4LCAyNzQ2NCwgMjc0NzAsIDExNTE3LCA4NjM1LCAyNzQ3NSwgMjc0NzksIDI3NDgzLCAyNzQ4NiwgMjc0ODksIAotICAgIDI3NDk1LCAyNzUwMywgMjc1MTEsIDI3NTE1LCAyNzUxOSwgMjc1MjQsIDI3NTI3LCAyNzUzNiwgMjc1NDAsIDI3NTQ4LCAKLSAgICAyNzU1OSwgMjc1NjMsIDI3NTY5LCAyNzU3NSwgMjc1NzksIDI3NTg1LCAyNzU5MywgMjc2MTUsIDI3NjM5LCAyNzY0NiwgCi0gICAgMjc2NTMsIDI3NjU5LCAyNzY2NywgMjc2NzMsIDI3Njc4LCAyNzY4OSwgMjc3MDcsIDI3NzE0LCAyNzcyMiwgMjc3MjYsIAotICAgIDI3NzM1LCAyNzc0OCwgMjc3NTYsIDI3NzY4LCAyNzc3OSwgMjc3ODksIDI3ODAzLCAyNzgxMiwgMjc4MjAsIDI3ODMyLCAKLSAgICA5NDkyLCAyNzg0MywgMjc4NTQsIDI3ODY2LCAyNzg3NiwgMjc4ODUsIDI3ODkwLCAyNzg5NCwgMjc5MDIsIDI3OTEyLCAKLSAgICAyNzkxNywgMjc5MjEsIDI3OTI0LCAyNzkyNywgMjc5MzUsIDI3OTQzLCAyNzk1MiwgMjc5NjIsIDI3OTcxLCAyNzk3NywgCi0gICAgMjc5OTEsIDI2NjMsIDI4MDEzLCAyODAyNCwgMjgwMzMsIDI4MDQzLCAyODA1NSwgMjgwNjQsIDI4MDczLCAyODA4MywgCi0gICAgMjgwOTEsIDI4MDk5LCAyODEwOCwgMjgxMTMsIDI4MTI0LCAyODEyOSwgMjgxNDAsIDI4MTQ0LCAyODE1NCwgMjgxNjMsIAotICAgIDI4MTcxLCAyODE4MSwgMjgxOTEsIDI4MTk5LCAyODIwOCwgMjgyMTUsIDI4MjIzLCAyODIzMCwgMjgyMzksIDI4MjQzLCAKLSAgICAyODI1MSwgMjgyNTgsIDI4MjY2LCAyODI3MywgMjgyODQsIDI4Mjk5LCAyODMwNiwgMjgzMTIsIDI4MzIyLCAyODMzMSwgCi0gICAgMjgzMzcsIDI4MzQxLCAyODM0OCwgMjgzNTIsIDE0MDMxLCAyODM1OCwgMjgzNjIsIDI4MzY3LCAyODM3NCwgMjgzNzgsIAotICAgIDI4MzgyLCAyODM5MCwgMjgzOTgsIDI4NDA0LCAyODQxMywgMjg0MjAsIDI4NDI1LCAyODQzMCwgMjg0NDAsIDIzNTA1LCAKLSAgICAyODQ0NCwgMjg0NDcsIDI4NDUyLCAyODQ1NywgMjg0NjIsIDI4NDY3LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4NywgCi0gICAgMjg0OTMsIDI4NDk4LCAyODUwMywgMjg1MDksIDEyMTgsIDcwNCwgMjg1MTQsIDI4NTIzLCAyMzY0LCAyODUzMCwgMjg1MzUsIAotICAgIDI4NTM5LCAyODU0NSwgMTI2NywgNTQ2LCAzMTgsIDI4NTUwLCAyODU1OSwgMjg1NjcsIDI4NTc2LCAyODU4NCwgMjg1OTUsIAotICAgIDI4NjA0LCAyODYxMiwgMjg2MTYsIDI4NjE5LCAyODYyNywgMjg2MzUsIDI4NjQwLCAxNDc3NSwgMjg2NDYsIDI4NjUyLCAKLSAgICAyODY1OCwgNTg3MiwgMjg2NjMsIDI4NjY3LCAyODY3MywgMjg2NzcsIDI4Njg0LCAxNDU1LCAyODY5MCwgMjg2OTcsIDk1NzksIAotICAgIDI4NzAxLCAyODcxMSwgMjg3MTksIDI4NzI1LCAyODczNCwgMjg3NDIsIDI4NzQ4LCAyODc1NiwgMjg3NjMsIDExMTEwLCAKLSAgICAyODc2OSwgMjg3NzYsIDI4NzgxLCAyODc4OCwgMTQ5NiwgMjE0NywgMjg3OTQsIDI4ODAwLCAyODgwNywgMjg4MTgsIAotICAgIDI4ODI5LCAyODgzNywgMjg4NDQsIDI4ODU0LCAyODg2MywgMjg4NzEsIDI4ODgwLCAyODg4NywgMjg4OTQsIDI4OTA3LCAKLSAgICAyODkxOCwgMTI3MiwgMjg5MzcsIDI4OTQyLCAyODk1MCwgMzU3NSwgMjg5NTQsIDI4OTU5LCAyODk2MywgMTQ1OSwgMjQ3MDYsIAotICAgIDI4OTczLCAyODk3NywgMjg5ODIsIDI4OTg2LCAzNDkzLCAyODk5MiwgMjkwMDAsIDI5MDA3LCAyOTAxOCwgMjkwMjYsIAotICAgIDI5MDM0LCAzNTc2LCAyNzksIDI5MDM5LCAyOTA0NywgMjkwNTUsIDI5MDYyLCAyOTA2OCwgMjkwNzMsIDIyMTYsIDI5MDgwLCAKLSAgICAyOTA4NiwgMjU5OTIsIDI2MjIyLCAyOTA5MiwgMTA2LCAyOTA5NiwgMjkxMDAsIDI5MTA2LCA2MTUsIDkzMjgsIDI5MTExLCAKLSAgICAyOTExOCwgMjkxMjQsIDIzMjcsIDI5MTI4LCAyOTEzMiwgMTUxODcsIDI5MTM1LCAyOTE0MCwgMjkxNDcsIDI5MTUzLCAKLSAgICAyOTE1OCwgMjkxNjYsIDI5MTczLCAyOTE3OSwgMjIzNTEsIDI5MTgzLCAyOTE4NywgMzY0NiwgMTY2MjUsIDI5MTkxLCAKLSAgICAyOTE5NiwgMjkxOTksIDI5MjA3LCAyOTIxNSwgMjkyMjAsIDI5MjIzLCAyOTIzMCwgMjkyNDAsIDI5MjUyLCAyOTI1NywgCi0gICAgMjkyNjEsIDI5MjY5LCAyOTI3NiwgMjkyODIsIDI5Mjg5LCAyOTI5NiwgMjkyOTksIDI5MzAzLCAyOTMwNywgMTQ2MywgCi0gICAgMjkzMTcsIDI5MzE5LCAyOTMyNCwgMjkzMzAsIDI5MzM2LCAyOTM0MSwgMjkzNDYsIDI5MzUxLCAyOTM1NiwgMjkzNjEsIAotICAgIDI5MzY2LCAyOTM3MSwgMjkzNzYsIDI5MzgxLCAyOTM4NiwgMjkzOTEsIDI5Mzk2LCAyOTQwMSwgMjk0MDYsIDI5NDEyLCAKLSAgICAyOTQxOCwgMjk0MjQsIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYxLCAyOTQ2NiwgCi0gICAgMjk0NzIsIDI5NDc3LCAyOTQ4MywgMjk0ODgsIDI5NDkzLCAyOTQ5OCwgMjk1MDMsIDI5NTA5LCAyOTUxNCwgMjk1MjAsIAotICAgIDI5NTI1LCAyOTUzMCwgMjk1MzUsIDI5NTQwLCAyOTU0NiwgMjk1NTEsIDI5NTU3LCAyOTU2MiwgMjk1NjcsIDI5NTcyLCAKLSAgICAyOTU3NywgMjk1ODIsIDI5NTg3LCAyOTU5MiwgMjk1OTcsIDI5NjAyLCAyOTYwOCwgMjk2MTQsIDI5NjIwLCAyOTYyNSwgCi0gICAgMjk2MzAsIDI5NjM1LCAyOTY0MCwgMjk2NDYsIDI5NjUyLCAyOTY1OCwgMjk2NjQsIDI5NjcwLCAyOTY3NiwgMjk2ODEsIAotICAgIDI5Njg3LCAyOTY5MiwgMjk2OTcsIDI5NzAyLCAyOTcwNywgMjk3MTMsIDI0NDMsIDI5NzE4LCAyNDUwLCAyNDU3LCAyNzU0LCAKLSAgICAyOTcyMywgMjQ2MywgMjQ3MywgMjk3MjksIDI5NzMzLCAyOTczOCwgMjk3NDMsIDI5NzQ5LCAyOTc1NCwgMjk3NTksIAotICAgIDI5NzYzLCAyOTc2OCwgMjk3NzQsIDI5Nzc5LCAyOTc4NCwgMjk3ODksIDI5Nzk1LCAyOTgwMCwgMjk4MDQsIDI5ODA4LCAKLSAgICAyOTgxMywgMjk4MTgsIDI5ODIzLCAyOTgyOCwgMjk4MzMsIDI5ODM5LCAyOTg0NSwgMjk4NTAsIDI5ODU0LCAyOTg1OSwgCi0gICAgMjk4NjUsIDI5ODY5LCAyOTg3NCwgMjk4NzksIDI5ODg0LCAyOTg4OSwgMjk4OTMsIDI5ODk2LCAyOTkwMSwgMjk5MDYsIAotICAgIDI5OTExLCAyOTkxNiwgMjk5MjEsIDI5OTI3LCAyOTkzMywgMjk5MzgsIDI5OTQzLCAyOTk0NywgMjk5NTIsIDI5OTU3LCAKLSAgICAyOTk2MiwgMjk5NjcsIDI5OTcyLCAyOTk3NiwgMjk5ODEsIDI5OTg2LCAyOTk5MSwgMjk5OTUsIDI5OTk5LCAzMDAwMywgCi0gICAgMzAwMDgsIDMwMDE2LCAzMDAyMSwgMzAwMjcsIDMwMDMzLCAzMDAzOSwgMzAwNDQsIDMwMDQ4LCAzMDA1MSwgMzAwNTYsIAotICAgIDMwMDYxLCAzMDA2NSwgMzAwNzAsIDMwMDc0LCAzMDA3OSwgMzAwODMsIDMwMDg2LCAzMDA5MSwgMTczMDIsIDMwMDk2LCAKLSAgICAzMDEwMSwgMzAxMDYsIDMwMTE0LCAyMTI4MCwgMjg2OTQsIDkwMjYsIDMwMTE5LCAzMDEyNCwgMzAxMjgsIDMwMTMzLCAKLSAgICAzMDEzNywgMzAxNDEsIDMwMTQ2LCAzMDE1MCwgMzAxNTMsIDMwMTU2LCAzMDE2MCwgMzAxNjUsIDMwMTY5LCAzMDE3NywgCi0gICAgMzAxODEsIDMwMTg0LCAzMDE4OSwgMzAxOTMsIDMwMTk3LCAzMDIwMiwgMzAyMDcsIDMwMjExLCAzMDIxNywgMzAyMjIsIAotICAgIDMwMjI3LCAzMDIzNCwgMzAyNDEsIDMwMjQ1LCAzMDI0OCwgMzAyNTQsIDMwMjYzLCAzMDI3MCwgMzAyNzgsIDMwMjg1LCAKLSAgICAzMDI4OSwgMzAyOTQsIDMwMjk4LCAzMDMwMiwgMzAzMDgsIDMwMzE0LCAzMDMxOCwgMzAzMjQsIDMwMzI5LCAzMDMzNCwgCi0gICAgMzAzMzgsIDMwMzQ1LCAzMDM1MSwgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzYsIDMwMzgyLCAzMDM4OCwgMzAzOTQsIAotICAgIDMwNDAwLCAzMDQwNiwgMzA0MTIsIDMwNDE4LCAzMDQyNSwgMzA0MzEsIDMwNDM4LCAzMDQ0NCwgMzA0NTAsIDMwNDU2LCAKLSAgICAzMDQ2MiwgMzA0NjgsIDMwNDc0LCAzMDQ4MCwgMzA0ODYsIDMwNDkyLCAxMTQxOCwgMzA0OTgsIDMwNTAzLCAzMDUwOCwgCi0gICAgMzA1MTEsIDMwNTE5LCAzMDUyNCwgMzA1MzMsIDMwNTM5LCAzMDU0NCwgMzA1NDksIDMwNTU0LCAzMDU1OCwgMzA1NjMsIAotICAgIDMwNTY4LCAzMDU3MywgMzA1NzgsIDMwNTgzLCAzMDU5MCwgMzA1OTcsIDMwNjAzLCAzMDYwOSwgMzA2MTQsIDE2MzAzLCAKLSAgICAzMDYyMSwgMzA2MjcsIDMwNjM0LCAzMDY0MCwgMzA2NDYsIDMwNjUxLCAzMDY1OSwgMzA2NjQsIDE2MDgyLCAzMDY2OCwgCi0gICAgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2ODksIDMwNjk0LCAzMDY5OCwgMzA3MDMsIDMwNzA4LCAzMDcxNCwgMzA3MTksIAotICAgIDMwNzI0LCAzMDcyOCwgMzA3MzMsIDMwNzM4LCAzMDc0MiwgMzA3NDcsIDMwNzUyLCAzMDc1NywgMzA3NjEsIDMwNzY2LCAKLSAgICAzMDc3MSwgMzA3NzYsIDMwNzgwLCAzMDc4NCwgMTUyOTMsIDMwNzg4LCAzMDc5NywgMzA4MDMsIDMwODA5LCAzMDgxOCwgCi0gICAgMzA4MjYsIDMwODM1LCAzMDg0MywgMzA4NDgsIDMwODUyLCAzMDg1OSwgMzA4NjUsIDMwODY5LCAzMDg3MiwgMzA4NzcsIAotICAgIDMwODg2LCAzMDg5NCwgMzA4OTksIDE0OTUsIDMwOTA1LCAzMDkwOCwgMzA5MTIsIDIyNDI0LCAyMjQzMCwgMzA5MTgsIAotICAgIDMwOTIyLCAzMDkzMywgMzA5NDQsIDMwOTU1LCAzMDk2NywgMzA5NzQsIDMwOTgxLCAzMDk4NiwgMzA5OTAsIDU5MDksIDc1NSwgCi0gICAgMjEyNzksIDMwOTk4LCAzMTAwMywgMzEwMDcsIDMxMDEyLCAzMTAxNiwgMzEwMjIsIDMxMDI3LCAzMTAzMywgMzEwMzgsIAotICAgIDMxMDQ0LCAzMTA0OSwgMzEwNTUsIDMxMDYwLCAzMTA2NiwgMzEwNzIsIDMxMDc4LCAzMTA4MywgMzEwMzksIDMxMDQ1LCAKLSAgICAzMTA4NywgMzEwOTIsIDMxMDk4LCAzMTEwMywgMzExMDksIDMxMTE0LCAzMTEyMCwgMzExMjUsIDMxMDUwLCAxMDQyMSwgCi0gICAgMzExMjksIDMxMDYxLCAzMTA2NywgMzEwNzMsIDI4MzEsIDM0MjMsIDMxMTM1LCAzMTEzOCwgMzExNDQsIDMxMTUwLCAKLSAgICAzMTE1NiwgMzExNjMsIDMxMTY5LCAzMTE3NSwgMzExODEsIDMxMTg3LCAzMTE5MywgMzExOTksIDMxMjA1LCAzMTIxMSwgCi0gICAgMzEyMTcsIDMxMjIzLCAzMTIyOSwgMzEyMzUsIDMxMjQyLCAzMTI0OCwgMzEyNTQsIDMxMjYwLCAzMTI2NiwgMzEyNzIsIAotICAgIDMxMjc1LCAzMTI4MCwgMzEyODMsIDMxMjkwLCAzMTI5OCwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI0LCAKLSAgICAzMTMyOCwgMzEzMzMsIDMxMzM5LCAzMTM0NCwgMzEzNTAsIDMxMzU1LCAzMTM2MSwgMzEzNjYsIDMxMzcyLCAzMTM3OCwgCi0gICAgMzEzODIsIDMxMzg3LCAzMTM5MiwgMzEzOTcsIDMxNDAyLCAzMTQwNiwgMzE0MTEsIDMxNDE2LCAzMTQyMSwgMzE0MjcsIAotICAgIDMxNDMzLCAzMTQzOSwgMzE0NDUsIDMxNDUwLCAzMTQ1NCwgMzE0NTcsIDMxNDYzLCAzMTQ2OSwgMzE0NzgsIDMxNDg2LCAKLSAgICAzMTQ5MywgMzE0OTgsIDMxNTAyLCAzMTUwNiwgMzE1MTEsIDE1MTQ2LCAzMTUxNiwgMzE1MjQsIDMxNTMwLCAzNjgzLCAKLSAgICAxMzc3LCAzMTUzNSwgMzE1MzksIDgwMDUsIDMxNTQ1LCAzMTU1MSwgMzE1NTgsIDgwMTQsIDMxNTYyLCAzMTU2OCwgMzE1NzUsIAotICAgIDMxNTgxLCAzMTU5MCwgMzE1OTgsIDMxNjEwLCAzMTYxNCwgMzE2MjEsIDMxNjI3LCAzMTYzMSwgMzE2MzQsIDMxNjQzLCAKLSAgICAzMTY1MSwgMzEwNDAsIDMxNjU2LCAzMTY2NiwgMzE2NzYsIDMxNjg2LCAzMTY5MiwgMzE2OTcsIDMxNzA3LCAzMTcxMiwgCi0gICAgMzE3MjUsIDMxNzM5LCAzMTc1MCwgMzE3NjIsIDMxNzc0LCAzMTc4OCwgMzE4MDEsIDMxODEzLCAzMTgyNSwgMTQ2MDAsIAotICAgIDMxODM5LCAzMTg0NCwgMzE4NDksIDMxODUzLCAzMTg1NywgMzE4NjEsIDE3ODAsIDI3MTc2LCAzMTg2NSwgMzE4NzAsIAotICAgIDMxMDg4LCAzMTg3NSwgMzE4NzgsIDMxODgzLCAzMTg4OCwgMzE4OTMsIDMxODk5LCAzMTkwNSwgMTAwOTgsIDMxOTEwLCAKLSAgICAzMTkxNywgMTU2OTcsIDMxOTIzLCAzMTkyOCwgMzE5MzMsIDMxOTM3LCAzMTk0MiwgMzE5NDcsIDMxMDkzLCAzMTk1MiwgCi0gICAgMzE5NTcsIDMxOTYyLCAzMTk2OCwgMzEwOTksIDMxOTczLCAzMTk3NiwgMzE5ODMsIDMxOTkxLCAzMTk5NywgMzIwMDMsIAotICAgIDMyMDA5LCAzMjAyMCwgMzIwMjUsIDMyMDMyLCAzMjAzOSwgMzIwNDYsIDMyMDU0LCAzMjA2MywgMzIwNzIsIDMyMDc4LCAKLSAgICAzMjA4NCwgMzIwOTIsIDMxMTA0LCAzMjA5NywgMzIxMDMsIDMyMTA5LCAzMTExMCwgMzIxMTQsIDMyMTE5LCAzMjEyNywgCi0gICAgMzIxMzUsIDMyMTQxLCAzMjE0OCwgMzIxNTQsIDMyMTYxLCAzMjE2OCwgMzIxNzQsIDMyMTgyLCAzMjE5MiwgMzIxOTksIAotICAgIDMyMjA0LCAzMjIxMCwgMzIyMTUsIDMyMjIwLCAzMjIyNywgMzIyMzYsIDMyMjQ0LCAzMjI0OSwgMzIyNTUsIDMyMjYyLCAKLSAgICAzMjI3MCwgMzIyNzYsIDMyMjgxLCAzMjI4NywgMzIyOTYsIDI3OTU3LCAzMjMwMywgMzIzMDcsIDMyMzEyLCAzMjMyMSwgCi0gICAgMzIzMjYsIDMyMzMxLCAzMjMzNiwgMTI0MDUsIDMyMzQ0LCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2MywgMzIzNjgsIAotICAgIDMyMzczLCAzMjM4MCwgMzIzODUsIDMyMzkwLCAzMjM5NSwgMzExMTUsIDIxMjE2LCAzMjQwMSwgMjUxOSwgMjQ0LCAzMjQwNCwgCi0gICAgMzI0MDcsIDMyNDExLCAzMjQxNSwgMzI0MjUsIDMyNDMzLCAzMjQzNywgMzI0NDQsIDMyNDUxLCAzMjQ1NSwgMzI0NTgsIAotICAgIDMyNDY0LCAzMjQ3MiwgMzI0ODAsIDMyNDg0LCAzMjQ4OCwgMzI0OTEsIDMyNDk4LCAzMjUwMiwgMzI1MDYsIDMyNTEzLCAKLSAgICAzMjUyMSwgMzEwNTEsIDMyNTI4LCAzMjUzNiwgMTAxNTgsIDY2NCwgMzA4LCAzMjU0OCwgMzI1NTMsIDMyNTU4LCAzMjU2NCwgCi0gICAgMzI1NjksIDMyNTc0LCAzNzA0LCAzMjU3OSwgMzI1ODIsIDMyNTg3LCAzMjU5MiwgMzI1OTcsIDMyNjAyLCAzMjYwNywgCi0gICAgMzI2MTQsIDIyNTI5LCAzMjYxOSwgMzI2MjQsIDMyNjI5LCAzMjYzNCwgMzI2MzksIDMyNjQ1LCAzMjY1MCwgMzI2NTYsIAotICAgIDMxMjg2LCAzMjY2MiwgMzI2NjcsIDMyNjczLCAzMjY3OSwgMzI2ODksIDMyNjk0LCAzMjY5OSwgMzI3MDMsIDMyNzA4LCAKLSAgICAzMjcxMywgMzI3MTgsIDMyNzIzLCAzMjczNiwgMzI3NDEsIDIyMzAyLCAxNjcwNSwgMzcxMCwgMzI3NDUsIDMyNzUwLCAKLSAgICAzMjc1NSwgMzI3NjEsIDMyNzY2LCAzMjc3MSwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTEsIDMyNzk2LCAzMjgwMSwgCi0gICAgMTM4MiwgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI0LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NSwgCi0gICAgMzI4NTEsIDMyODU2LCAzMjg2MCwgMzI4NjQsIDMyODY5LCAzMjg3NCwgMzI4NzksIDMyODgzLCAzMjg5MSwgMzI4OTUsIAotICAgIDMyOTAxLCAzMjkwNSwgMzI5MTIsIDE2NDk4LCAzMTA2MiwgMzI5MTgsIDMyOTI1LCAzMjkzMywgMzI5NDAsIDMyOTQ2LCAKLSAgICAzMjk1OSwgMzI5NzEsIDMyOTc3LCAzMjk4MSwgMjc3MywgMzI5ODUsIDMyOTg5LCAzMjQ5MywgMzI5OTgsIDMzMDA5LCAKLSAgICAzMzAxNCwgMzMwMTksIDMzMDI0LCAzMzAyOCwgMzMwMzMsIDIyNDM1LCAzMzAzNywgMzMwNDEsIDMzMDQ2LCAzMTA2OCwgCi0gICAgMjEzMDAsIDMzMDUwLCAzMzA1NSwgMzMwNjEsIDMzMDY2LCAzMzA3MCwgMzMwNzQsIDMzMDc3LCAzMzA4MSwgMzMwODcsIAotICAgIDMzMDk4LCAzMzExMCwgMzEwNzQsIDMzMTE1LCAzMzExOCwgMzMxMjIsIDM0NywgMzMxMjcsIDMzMTMyLCAzMzEzNywgCi0gICAgMzMxNDIsIDMzMTQ3LCAzMzE1MiwgMzMxNTgsIDMzMTYzLCAzMzE2OCwgMzMxNzQsIDMzMTc5LCAzMzE4NSwgMzMxOTAsIAotICAgIDMzMTk2LCAzMzIwMSwgMzMyMDYsIDMzMjExLCAzMzIxNiwgMzMyMjEsIDMzMjI2LCAzMzIzMSwgMzMyMzYsIDMzMjQyLCAKLSAgICAzMzI0NywgMzMyNTIsIDMzMjU3LCAzMzI2MiwgMzMyNjcsIDMzMjcyLCAzMzI3NywgMzMyODMsIDMzMjg5LCAzMzI5NCwgCi0gICAgMzMyOTksIDMzMzA0LCAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIAotICAgIDMzMzQ5LCAzMzM1NCwgMzMzNTksIDMzMzY0LCAzMzM2OSwgMzMzNzQsIDMzMzc5LCAzMzM4NSwgMzEzLCAyNiwgMzMzOTAsIAotICAgIDMzMzk0LCAzMzM5OCwgMzM0MDYsIDMzNDEwLCAzMzQxNCwgMzM0MTcsIDMzNDIwLCAzMzQyMiwgMzM0MjcsIDMzNDMxLCAKLSAgICAzMzQzNiwgMzM0NDAsIDMzNDQ1LCAzMzQ0OSwgMzM0NTQsIDMzNDU4LCAzMzQ2MSwgMzM0NjMsIDMzNDY3LCAzMzQ3MiwgCi0gICAgMzM0NzYsIDMzNDg3LCAzMzQ5MCwgMzM0OTIsIDMzNDk2LCAzMzUwOCwgMzM1MTcsIDMzNTIxLCAzMzUyNSwgMzM1MzEsIAotICAgIDMzNTM2LCAzMzU0NSwgMzM1NTEsIDMzNTU2LCAzMzU2MSwgMzM1NjUsIDMzNTcwLCAzMzU3NywgMzM1ODIsIDMzNTg4LCAKLSAgICAzMzU5MywgMzM1OTcsIDMzNjA0LCAyNTcxOCwgMjU3MjgsIDMzNjA4LCAzMzYxMywgMzM2MTgsIDMzNjIzLCAzMzYzMCwgCi0gICAgMzM2MzQsIDMzNjQxLCA4MTEzLCAzMzY0NywgMzM2NTYsIDMzNjY0LCAzMzY3OSwgMzM2OTMsIDMzNzAxLCAzMzcxMiwgCi0gICAgMzM3MjEsIDMzNzI2LCA3MjI3LCAzMzczNiwgMzM3NDEsIDMzNzQ2LCAzMzc1MCwgMzM3NTMsIDMzNzU3LCAzMzc2MiwgCi0gICAgMzM3NjYsIDMzNzczLCAzMzc3OCwgMzM3ODMsIDg5MTIsIDMzNzkzLCAzMzc5NSwgMzM3OTgsIDMzODAyLCAzMzgwOCwgCi0gICAgMzM4MTIsIDMzODE3LCAzMzgyMiwgMzM4MjgsIDMzODMzLCAzMzgzOSwgMzM4NDQsIDMzODU0LCAzMzg2MywgMzM4NzEsIAotICAgIDMzODc2LCAzMzg4MiwgMzM4ODcsIDMzODk0LCAzMzg5OCwgMzM5MDYsIDMzOTEzLCAzMzkyNiwgMzM5MzQsIDMzOTM4LCAKLSAgICAzMzk0OCwgMzM5NTMsIDMzOTU3LCAzMzk2NSwgMzM5NzMsIDMzOTc3LCAzMzk4NiwgMzM5OTIsIDMzOTk3LCAzNDAwNSwgCi0gICAgMzQwMTUsIDM0MDI0LCAzNDAzMywgMzQwNDIsIDM0MDUzLCAzNDA2MSwgMzQwNzIsIDM0MDgxLCAzNDA4OCwgMzQwOTQsIAotICAgIDM0MDk5LCAzNDExMCwgMzQxMTUsIDM0MTE5LCAzNDEyMiwgMzQxMjYsIDM0MTM0LCAzNDE0MCwgMzQxNDgsIDM0MTU1LCAKLSAgICAzNDE2MSwgMzQxNjYsIDM0MTcyLCAyNDE4LCAzNDE3NiwgMzQxNzgsIDM0MTgzLCAzNDE4OCwgMzQxOTMsIDM0MTk2LCAKLSAgICAzNDE5OCwgMzQyMDIsIDM0MjA1LCAzNDIxMiwgMzQyMTYsIDk4OTEsIDM0MjIwLCAzNDIyNiwgMzQyMzYsIDM0MjQxLCAKLSAgICAzNDI0NywgMzQyNTEsIDM0MjU2LCAzNDI2OSwgMjYxMDQsIDM0Mjc1LCAzNDI4NCwgMTc0NzUsIDM0MjkxLCAzNDMwMCwgCi0gICAgMzE2NzIsIDM0MzA4LCAzNDMxMywgMzQzMTcsIDM0MzI1LCAzNDMzMiwgMzQzMzcsIDM0MzQxLCAzNDM0NiwgMzQzNTAsIAotICAgIDM0MzU4LCAzNDM2NCwgMzQzNzAsIDM0Mzc1LCAzNDM3OSwgMzQzODIsIDM0Mzg3LCAzNDQwMCwgMzQ0MTYsIDIyOTk2LCAKLSAgICAzNDQzMywgMzQ0NDUsIDM0NDYyLCAzNDQ3NCwgMzQ0ODgsIDIzMDEzLCAyMzAzMiwgMzQ1MDAsIDM0NTEyLCAyNjgwLCAKLSAgICAzNDUyNiwgMzQ1MzEsIDM0NTM2LCAzNDU0MSwgMzQ1NDUsIDM0NTUyLCAzNDU2NCwgMzQ1NzAsIDM0NTczLCAzNDU4NCwgCi0gICAgMzQ1OTUsIDM0NjAwLCAzMjA4OSwgNjk1LCAzNDYwNCwgMzQ2MDgsIDM0NjEyLCAzNDYxNSwgMzQ2MjAsIDM0NjI1LCAKLSAgICAzNDYzMSwgMzQ2MzYsIDM0NjQxLCAzNDY0NywgMzQ2NTMsIDM0NjU4LCAzNDY2MiwgMzQ2NjcsIDM0NjcyLCAzNDY3NywgCi0gICAgMzQ2ODEsIDM0Njg0LCAzNDY5MCwgMzQ2OTUsIDM0NzAwLCAzNDcwNSwgMzQ3MDksIDM0NzE0LCAzNDcyMCwgMzQ3MjgsIAotICAgIDI2MzM3LCAzNDczMywgMzQ3MzgsIDM0NzQ1LCAzNDc1MSwgMzQ3NTcsIDM0NzYyLCAzNDc3MCwgMjI1MzgsIDM0Nzc3LCAKLSAgICAzNDc4MiwgMzQ3ODcsIDM0NzkyLCAzNDc5NiwgMzQ3OTksIDM0ODA0LCAzNDgwOCwgMzQ4MTIsIDM0ODE5LCAzNDgyNSwgCi0gICAgMzQ4MzEsIDM0ODM3LCAzNDg0NCwgMzQ4NDksIDM0ODU1LCAzMzk2OCwgMzQ4NTksIDM0ODYzLCAzNDg2OCwgMzQ4ODEsIAotICAgIDM0ODg2LCAzNDg5MiwgMzQ5MDAsIDM0OTA3LCAzNDkxNSwgMzQ5MjUsIDM0OTMxLCAzNDkzNywgMzQ5NDMsIDM0OTQ3LCAKLSAgICAzNDk1NiwgMzQ5NjQsIDM0OTcxLCAzNDk3NiwgMzQ5ODEsIDEwNDQ0LCAzNDk4NiwgMzQ5OTQsIDM1MDAxLCAzNTAwNywgCi0gICAgMzUwMTcsIDM1MDIyLCAzNTAyOCwgMzUwMzYsIDM2MDgsIDM1MDQzLCAzNTA1MCwgMzYxNCwgMzUwNTQsIDM1MDU5LCAKLSAgICAzNTA3MCwgMzUwNzcsIDM1MDgzLCAzNTA5MiwgMzUwOTYsIDQwMTUsIDM1MDk5LCAzNTEwNiwgMzUxMTIsIDM1MTE4LCAKLSAgICAzNTEyNiwgMzUxMzYsIDI5MDYzLCAzNTE0MywgMzUxNTEsIDM1MTU2LCAzNTE2MiwgMzUxNjcsIDI1OTY0LCAzNTE3MywgCi0gICAgMzUxODAsIDM1MTg2LCAzNTE5NSwgMjM2NzcsIDM1MjAyLCAzNTIwNywgMzUyMTEsIDM1MjE5LCAzNTIyNywgOTYwNywgCi0gICAgNTg5NSwgMzUyMzQsIDM1MjM4LCAzNTI0MCwgMzUyNDQsIDM1MjQ5LCAzNTI1MSwgMzUyNTcsIDM1MjYyLCAzNTI2NywgCi0gICAgMzUyNzQsIDMyNjEwLCAzNTI4MCwgMzUyODUsIDM1Mjg5LCAzNTI5NCwgMzUyOTgsIDM1MzA3LCAzNTMxMSwgMzUzMTcsIAotICAgIDM1MzI0LCAzNTMzMCwgMzUzMzcsIDM1MzQyLCAzNTM1MSwgMzUzNTYsIDM1MzYwLCAzNTM2NSwgMzUzNzIsIDM1MzgwLCAKLSAgICAzNTM4OCwgMzUzOTMsIDIxMzU2LCAzNTM5NywgMzU0MDAsIDM1NDA0LCAzNTQwOCwgMzU0MTIsIDM1NDE1LCAzNTQxNywgCi0gICAgMzU0MjUsIDM1NDI5LCAzNTQzNiwgMzU0NDAsIDM1NDQ0LCAzNTQ1MiwgMzU0NTksIDM1NDY5LCAzNTQ3MywgMzU0NzcsIAotICAgIDM1NDg1LCAzNTQ5MywgMzU0OTksIDM1NTA0LCAzNTUxMywgMTMzNTcsIDM1NTE5LCAzNTUyOCwgMzU1MzMsIDM1NTQwLCAKLSAgICAzNTU0OCwgMzU1NTYsIDM1NTY0LCAzNTU3MSwgMzU1NzgsIDM1NTg1LCAzNTU5MiwgMzU1OTksIDM1NjA0LCAzNTYxMCwgCi0gICAgMzU2MjcsIDM1NjM1LCAzNTY0NSwgMzU2NTMsIDM1NjYwLCA0MDcsIDM1NjY0LCAzNTY3MCwgMzU2NzQsIDM1Njc5LCAKLSAgICAzMzcxNywgMzU2ODUsIDM1Njg4LCAzNTY5MiwgMzU3MDAsIDM2MTksIDM1NzA4LCAzNTcxNCwgMzU3MjAsIDM1NzI5LCAKLSAgICAzNTczOSwgMzU3NDYsIDM1NzUyLCAzNjI1LCAzNjMxLCAzNTc2MSwgMzU3NjgsIDM1Nzc2LCAzNTc4MSwgMzU3ODUsIAotICAgIDM1NzkyLCAzNTgwMCwgMzU4MDcsIDM1ODEzLCAzNTgyMiwgMzU4MzIsIDM1ODM4LCAzNTg0NiwgMzU4NTUsIDM1ODYyLCAKLSAgICAzNTg3MCwgMzU4NzcsIDIyMDMyLCAzNTg4MSwgMzU4ODgsIDM1ODk0LCAzNTkwNCwgMzU5MTMsIDM1OTI0LCAzNTkyOCwgCi0gICAgMzU5MzgsIDM1OTQ0LCAzNTk1MSwgMzU5NTksIDM1OTY4LCAzNTk3NywgMzU5ODcsIDM1OTk4LCAzNjAwNSwgMzYwMTAsIAotICAgIDM2MDE3LCAzMDI5LCAzNjAyNSwgMzYwMzEsIDM2MDM2LCAzNjA0MiwgMzYwNDgsIDM2MDUzLCAzNjA2NiwgMzYwNzksIAotICAgIDM2MDkyLCAzNjA5OSwgMzYxMDUsIDM2MTEzLCAzNjEyMSwgMzYxMjYsIDM2MTMwLCAxNDY5LCAzNjEzNCwgMzYxMzksIAotICAgIDM2MTQ0LCAzNjE0OSwgMzYxNTQsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc1LCAzNjE4MCwgMzYxODUsIDM2MTkwLCAKLSAgICAzNjE5NSwgMzYyMDEsIDM2MjA3LCAzNjIxMiwgMzYyMTcsIDM2MjIzLCAzNjIyOCwgMzYyMzMsIDM2MjM4LCAzNjI0NCwgCi0gICAgMzYyNDksIDM2MjU0LCAzNjI1OSwgMzYyNjQsIDM2MjcwLCAzNjI3NSwgMzYyODAsIDM2Mjg2LCAzNjI5MSwgMzYyOTYsIAotICAgIDM2MzAxLCAzNjMwNiwgMzYzMTEsIDM2MzE3LCAzNjMyMiwgMzYzMjgsIDM2MzMzLCAzNjMzOSwgMzYzNDQsIDM2MzQ5LCAKLSAgICAzNjM1NCwgMzYzNjAsIDM2MzY2LCAzNjM3MiwgMzYzNzgsIDM2Mzg0LCAzNjM5MCwgMzYzOTYsIDM2NDAyLCAzNjQwNywgCi0gICAgMzY0MTIsIDM2NDE4LCAzNjQyMywgMzY0MjgsIDM2NDMzLCAzNjQzOCwgMzY0NDMsIDM2NDQ4LCAzNjQ1MywgMzY0NTksIAotICAgIDM2NDY0LCAzNjQ2OSwgMzY0NzUsIDM2NDgxLCAxMDEsIDM2NDg2LCAzNjQ4OCwgMzY0OTIsIDM2NDk2LCAzNjUwMCwgCi0gICAgMzY1MDUsIDM2NTA5LCA5NTI4LCAzNjUxMywgMzY1MTksIDE3NDEsIDYyODAsIDM2NTI1LCAzNjUyOCwgMzY1MzMsIDM2NTM3LCAKLSAgICAzNjU0MiwgMzY1NDYsIDM2NTUwLCAzNjU1NSwgMTAyNDUsIDM2NTU5LCAzNjU2MywgMzY1NjcsIDM2NTcxLCAxNTM4NSwgCi0gICAgMzY1NzYsIDM2NTgwLCAzNjU4NSwgMzY1OTAsIDM2NTk1LCAzNjU5OSwgMzY2MDYsIDI2MTI4LCAzNjYxMiwgMzY2MTUsIAotICAgIDM2NjE5LCAzNjYyNCwgMzY2MzAsIDM2NjM0LCAzNjY0MiwgMzY2NDgsIDM2NjUzLCAzNjY1NywgMzY2NjMsIDM2NjY3LCAKLSAgICAzNjY3MSwgMzQ2MiwgMzQ2NywgMjkyNTUsIDM2Njc0LCAzNjY3OCwgMzY2ODIsIDM2Njg2LCAzNjY5MCwgMzY2OTgsIAotICAgIDM2NzA1LCAzNjcwOSwgMzY3MTYsIDM2NzIxLCAzMTcsIDM2NzI2LCAzNjczMCwgMzY3MzYsIDM2NzQ4LCAzNjc1NCwgCi0gICAgMzY3NjAsIDM2NzY0LCAzNjc3MCwgMzY3NzksIDM2NzgzLCAzNjc4NywgMzY3OTIsIDM2Nzk4LCAzNjgwMywgMzY4MDcsIAotICAgIDM2ODEyLCAzNjgxNiwgMzY4MjAsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODUzLCAzNjg2OCwgMzY4ODMsIDM2ODk5LCAKLSAgICAzNjkxNywgMTAxOTUsIDM2OTMxLCAzNjkzOCwgMzY5NDIsIDM2OTQ1LCAzNjk1NCwgMzY5NTksIDM2OTYzLCAzNjk3MSwgCi0gICAgMzM5MTksIDM2OTc5LCAzNjk4MywgMzY5OTMsIDM3MDA0LCAyOTIyNSwgMzcwMTcsIDM3MDIxLCAzNzAzMCwgMzcwMzgsIAotICAgIDk3ODUsIDE0OTEzLCAzNzA0MiwgMjI0NDcsIDM3MDQ1LCAzMDE3MywgMzcwNTAsIDk3ODQsIDM3MDU1LCAzNzA2MSwgCi0gICAgMzcwNjYsIDM3MDcyLCAzNzA3NywgMzcwODMsIDM3MDg4LCAzNzA5NCwgMzcwOTksIDM3MTA1LCAzNzExMSwgMzcxMTcsIAotICAgIDM3MTIyLCAzNzA3OCwgMzcwODQsIDM3MDg5LCAzNzA5NSwgMzcxMDAsIDM3MTA2LCAzNzExMiwgODEyNiwgMzg3NCwgCi0gICAgMzcxMjYsIDM3MTM0LCAzNzEzOCwgMzcxNDEsIDM3MTQ1LCAzNzE1MCwgMzcxNTUsIDM3MTYxLCAzNzE2NywgMzcxNzIsIAotICAgIDM3MTc2LCAyNTk3NiwgMzcxODAsIDM3MTg0LCAzNzE5MCwgMzcxOTQsIDkwNDksIDM3MjAzLCAzNzIxMCwgMzcyMTQsIAotICAgIDExODc1LCAzNzIyMSwgMzcyMjcsIDM3MjMyLCAzNzIzOSwgMzcyNDYsIDM3MjUzLCAyODU3MSwgODA0OSwgMzcyNjAsIAotICAgIDM3MjY3LCAzNzI3NCwgMzcyODAsIDM3Mjg1LCAzNzI5MiwgMzczMDMsIDM3MzA5LCAzNzMxNCwgMzczMTksIDM3MzI0LCAKLSAgICAzNzMzMSwgMzcwNzksIDM3MzM1LCAzNzM0NSwgMzczNTYsIDM3MzYyLCAzNzM2NywgMzczNzIsIDM3Mzc3LCAzNzM4MiwgCi0gICAgMzczODcsIDM3MzkxLCAzNzM5NSwgMzc0MDEsIDM3NDA5LCAyMzE5LCA4NjUsIDEwMjYxLCAxMDI3MywgMTAyNzgsIDEwMjg0LCAKLSAgICAzNzQxOCwgMTAyODksIDEwMjk0LCAxMDMwMCwgMzc0MjMsIDM3NDMzLCAzNzQzNywgMTAzMDUsIDM3NDQyLCAxNjkwMywgCi0gICAgMzc0NDUsIDM3NDUwLCAzNzQ1NCwgMzc0NTksIDM3NDY0LCAzNzQ3MSwgMzc0NzgsIDM3NDgyLCAzNzQ4NSwgMzc0OTMsIAotICAgIDEwMjA4LCAzNzUwMCwgMzc1MDMsIDM3NTA5LCAzNzUxOSwgNTkyOSwgMzc1MjgsIDM3NTMyLCAzNzU0MCwgMzc1NDQsIAotICAgIDM3NTU0LCAzNzU2MCwgMzc1NzEsIDM3NTc3LCAzNzU4MywgMzc1ODgsIDM3NTk0LCAzNzYwMCwgMzc2MDYsIDM3NjExLCAKLSAgICAzNzYxNCwgMzc2MjEsIDM3NjI3LCAzNzYzMiwgMzc2MzksIDM3NjQ2LCAzNzY1MCwgMzc2NjAsIDM3NjczLCAzNzY4MiwgCi0gICAgMzc2OTEsIDM3NzAyLCAzNzcxNSwgMzc3MjYsIDM3NzM1LCAzNzc0NiwgMzc3NTEsIDM3NzYwLCAzNzc2NSwgMTAzMTAsIAotICAgIDM3NzcxLCAzNzc3OCwgMzc3ODYsIDM3NzkxLCAzNzc5NSwgMzc4MDIsIDM3ODA5LCAzODI5LCAxNiwgMzc4MTMsIDM3ODE4LCAKLSAgICAxNjc1NywgMzc4MjIsIDM3ODI1LCAzNzgyOCwgMjgwNzcsIDM3ODMyLCAyODU4MCwgMzc4NDAsIDM3ODQ0LCAzNzg0OCwgCi0gICAgMzc4NTEsIDM3ODU3LCAzNzEwMSwgMzc4NjMsIDM3ODcxLCAzNzg3NywgMzc4ODQsIDI4MDYwLCAzNzg4OCwgMjgyNTQsIAotICAgIDM3ODkyLCAzNzkwMSwgMzc5MDcsIDM3OTEzLCAzNzkxOCwgMzc5MjIsIDM3OTI4LCAzNzkzMiwgMzc5NDAsIDM3OTQ4LCAKLSAgICAyNjE5NCwgMzc5NTQsIDM3OTYxLCAzNzk2NywgMzc5NzIsIDM3OTc3LCAzNzk4MSwgMzc5ODcsIDM3OTkyLCAzNzk5OCwgCi0gICAgNDA1NiwgNzkxLCAzODAwNSwgMzgwMDksIDM4MDEyLCAxNTI3NSwgMzgwMjQsIDM1ODUxLCAzODAzNSwgMzgwMzgsIDM4MDQ1LCAKLSAgICAzODA0OSwgMzgwNTUsIDM4MDU5LCAzODA2NSwgMzgwNzAsIDM4MDc2LCAzODA4MSwgMzgwODYsIDM4MDkwLCAzODA5NCwgCi0gICAgMzgwOTksIDM4MTA0LCAzODExNCwgMzgxMjAsIDM4MTMzLCAzODEzOSwgMzgxNDUsIDM4MTUyLCAzODE1NywgMzgxNjMsIAotICAgIDM4MTY4LCAxNjY0MywgMTQ3MiwgMTAxOSwgMzEyMTgsIDMxMjI0LCAzODE3MywgMzEyMzAsIDMxMjQzLCAzMTI0OSwgCi0gICAgMzEyNTUsIDM4MTc5LCAzMTI2MSwgMzEyNjcsIDM4MTg1LCAzODE5MSwgMjIsIDM4MTk5LCAzODIwNiwgMzgyMTAsIDM4MjE0LCAKLSAgICAzODIyMiwgMzE5NzgsIDM4MjI2LCAzODIzMCwgMzgyMzcsIDM4MjQyLCAzODI0NiwgMzgyNTEsIDM4MjU3LCAzODI2MiwgCi0gICAgMzgyNjgsIDM4MjczLCAzODI3NywgMzgyODEsIDM4Mjg1LCAzODI5MCwgMzgyOTQsIDM4Mjk5LCAzODMwMywgMzgzMTAsIAotICAgIDM4MzE1LCAzODMxOSwgMzgzMjQsIDM4MzI4LCAzODMzMywgMzgzMzcsIDM4MzQyLCAzODM0OCwgMTU0OTUsIDE1NTAwLCAKLSAgICAzODM1MywgMzgzNTcsIDM4MzYwLCAzODM2NCwgMjExODMsIDM4MzY5LCAzODM3MywgMzgzNzksIDM4Mzg2LCAzODM5MSwgCi0gICAgMzg0MDEsIDM4NDA2LCAzODQxNCwgMzg0MTgsIDM4NDIxLCAzMTk5MywgMzg0MjUsIDQxMDksIDM4NDMwLCAzODQzNSwgCi0gICAgMzg0MzksIDM4NDQ0LCAzODQ0OCwgMzg0NTMsIDEzMzc1LCAzODQ2NCwgMzg0NjgsIDM4NDcxLCAzODQ3NiwgMzg0ODAsIAotICAgIDM4NDg0LCAzODQ4NywgMzg0OTEsIDgxNDUsIDEzMzkxLCAzODQ5NCwgMzg0OTcsIDM4NTAzLCAzODUwOCwgMzg1MTQsIAotICAgIDM4NTE5LCAzODUyNSwgMzg1MzAsIDM4NTM2LCAzODU0MSwgMzg1NDcsIDM4NTUzLCAzODU1OSwgMzg1NjQsIDM4NTY4LCAKLSAgICAzODU3MiwgMzg1ODEsIDM4NTk3LCAzODYxMywgMzg2MjMsIDI3OTY3LCAzODYzMCwgMzg2MzQsIDM4NjM5LCAzODY0NCwgCi0gICAgMzg2NDgsIDM4NjUyLCAzNTk3MiwgMzg2NTgsIDM4NjYzLCAzODY2NywgMzg2NzQsIDM4Njc5LCAzODY4MywgMzg2ODcsIAotICAgIDI2OTk2LCAzODY5MywgMjE0NTEsIDM4Njk4LCAzODcwNSwgMzg3MTMsIDM4NzE5LCAzODcyNiwgMzg3MzQsIDM4NzQwLCAKLSAgICAzODc0NCwgMzg3NTAsIDM4NzU4LCAzODc2MiwgMzg3NzEsIDk1MDksIDM4Nzc5LCAzODc4MywgMzg3OTEsIDM4Nzk4LCAKLSAgICAzODgwMywgMzg4MDgsIDM4ODEyLCAzODgxNSwgMzg4MTksIDM4ODIyLCAzODgyNiwgMzg4MzMsIDM4ODM4LCAzODg0NCwgCi0gICAgMjY0MTUsIDMxMjgxLCAzODg0OCwgMzg4NTUsIDM4ODYxLCAzODg2NywgMzg4NzIsIDM4ODc1LCAzODg3NywgMzg4ODQsIAotICAgIDM4ODkxLCAzODg5NywgMzg5MDEsIDM4OTA0LCAzODkwOCwgMzg5MTIsIDM4OTE2LCAzODkyMSwgMzg5MjUsIDM4OTI5LCAKLSAgICAzODkzMiwgMzg5MzYsIDM4OTUwLCAyMzA2MiwgMzg5NjksIDM4OTgyLCAzODk5NSwgMzkwMDgsIDIzMDgwLCAzOTAyMywgCi0gICAgMTA0OTcsIDM5MDM4LCAzOTA0NCwgMzkwNDgsIDM5MDUyLCAzOTA1OSwgMzkwNjQsIDM5MDY4LCAzOTA3NSwgMzkwODEsIAotICAgIDM5MDg2LCAzOTA5MiwgMzkxMDIsIDM5MTE0LCAzOTEyNSwgMzkxMzAsIDM5MTM3LCAzOTE0MSwgMzkxNDUsIDM5MTQ4LCAKLSAgICAxNTg5MSwgMzY3NywgMzkxNTYsIDE1NTIyLCAzOTE2OSwgMzkxNzYsIDM5MTgwLCAzOTE4NCwgMzkxODksIDM5MTk0LCAKLSAgICAzOTIwMCwgMzkyMDQsIDM5MjA4LCAzOTIxMSwgNzc0MiwgMTU1MzMsIDM5MjE2LCAzOTIyMCwgMzkyMjYsIDM5MjM1LCAKLSAgICAzOTI0MCwgMzkyNDcsIDM1ODI4LCAzOTI1MywgMzkyNTgsIDM5MjYyLCAzOTI2NywgMzkyNzQsIDM5Mjc4LCAzOTI4MSwgCi0gICAgMzkyODUsIDM5MjkwLCAxNDU2NSwgMzkyOTcsIDM5MzA0LCAxMDc3LCAzOTMwOCwgMzkzMTMsIDM5MzE4LCAzOTMyNCwgCi0gICAgMzkzMjksIDM5MzM0LCAzOTMzOCwgMzkzNDgsIDM5MzUzLCAzOTM1OSwgMzkzNjQsIDM5MzcwLCAzOTM3NSwgMzkzODEsIAotICAgIDM5MzkxLCAzOTM5NiwgMzk0MDEsIDM5NDA1LCA3MjI5LCA3MjQxLCAzOTQxMCwgMzk0MTMsIDM5NDIwLCAzOTQyNiwgCi0gICAgMzQwODQsIDM0MDkxLCAzOTQzNSwgMzk0MzksIDMyMDQxLCAzOTQ0NywgMzk0NTgsIDM5NDY2LCAzNjAyMCwgMzk0NzMsIAotICAgIDM5NDc4LCAzOTQ4MywgMzk0OTQsIDM5NTAxLCAzOTUxMiwgMzIwNjUsIDIxNDU3LCAzOTUyMCwgNzM1LCAzOTUyNSwgCi0gICAgMzk1MzEsIDI4MDUxLCAzOTUzNywgMzk1NDIsIDM5NTUyLCAzOTU2MSwgMzk1NjgsIDM5NTc0LCAzOTU3OCwgMzk1ODEsIAotICAgIDM5NTg4LCAzOTU5NCwgMzk2MDEsIDM5NjA3LCAzOTYxNywgMzk2MjUsIDM5NjMxLCAzOTYzNywgMzk2NDIsIDM5NjQ2LCAKLSAgICAzOTY1MywgMzk2NTksIDM5NjY2LCAzODkxNywgNTM1LCAxMzgxOCwgMzk2NzIsIDM5Njc3LCAzOTY4MCwgMzk2ODYsIAotICAgIDM5Njk0LCAxMzk2LCAzOTY5OSwgMzk3MDMsIDM5NzA4LCAzOTcxNSwgMzk3MjEsIDM5NzI1LCAzOTcyOSwgMzk3MzQsIAotICAgIDM5NzQzLCAzOTc1MCwgMzk3NjAsIDM5NzY2LCAyODA5NSwgMzk3ODMsIDM5NzkyLCAzOTgwMCwgMzk4MDYsIDM5ODExLCAKLSAgICAzOTgxOCwgMzk4MjQsIDM5ODMyLCAzOTg0MSwgMzk4NDksIDM5ODUzLCAzOTg1OCwgMzk4NjYsIDMyMDc0LCAzOTg3MiwgCi0gICAgMzk4OTEsIDE1ODI0LCAzOTkwNSwgMzk5MjEsIDM5OTM1LCAzOTk0MSwgMzk5NDYsIDM5OTUxLCAzOTk1NiwgMzk5NjIsIAotICAgIDMyMDgwLCAzOTk2NywgMzk5NzQsIDM5OTc5LCAzOTk4MywgMzQ1LCAyOTM2LCAzOTk5MCwgMzk5OTUsIDQwMDAwLCAyNzMyMiwgCi0gICAgMzk4MjEsIDQwMDA0LCA0MDAwOSwgNDAwMTcsIDQwMDIxLCA0MDAyNCwgNDAwMzAsIDQwMDM2LCA0MDA0MCwgMjgxNTAsIAotICAgIDQwMDQzLCA0MDA0OCwgNDAwNTIsIDQwMDU1LCA0MDA2MCwgNDAwNjQsIDQwMDY5LCA0MDA3NCwgNDAwNzgsIDQwMDgzLCAKLSAgICA0MDA4NywgNDAwOTEsIDIxMTc5LCAyMTE5MCwgNDAwOTUsIDQwMTAwLCA0MDEwNiwgMjY5NTMsIDQwMTExLCA0MDExNSwgCi0gICAgMjEyNjYsIDE2MDcyLCA0MDExOCwgNDAxMjMsIDQwMTI4LCA0MDEzMywgNDAxMzgsIDQwMTQzLCA0MDE0OCwgNDAxNTMsIAotICAgIDQ1MCwgNDksIDMxMjk5LCAzMTMwNCwgMzEzMDksIDMxMzE1LCAzMTMyMCwgMzEzMjUsIDQwMTU4LCAzMTMyOSwgNDAxNjIsIAotICAgIDQwMTY2LCA0MDE3MCwgMzEzMzQsIDMxMzQwLCA0MDE4NCwgMzEzNTEsIDMxMzU2LCA0MDE5MiwgNDAxOTcsIDMxMzYyLCAKLSAgICA0MDIwMiwgNDAyMDcsIDQwMjEyLCA0MDIxNywgNDAyMjMsIDQwMjI5LCA0MDIzNSwgMzEzNzksIDQwMjQ4LCA0MDI1NCwgCi0gICAgMzEzODMsIDQwMjU4LCAzMTM4OCwgNDAyNjMsIDMxMzkzLCAzMTM5OCwgNDAyNjYsIDQwMjcxLCA0MDI3NSwgMzA5NDgsIAotICAgIDQwMjgxLCAxMzU5OSwgNDAyODgsIDQwMjkzLCAzMTQwMywgNDAyOTcsIDQwMzAyLCA0MDMwNywgNDAzMTIsIDQwMzE2LCAKLSAgICA0MDMyMSwgNDAzMjYsIDQwMzMyLCA0MDMzNywgNDAzNDIsIDQwMzQ4LCA0MDM1NCwgNDAzNTksIDQwMzYzLCA0MDM2OCwgCi0gICAgNDAzNzMsIDQwMzc4LCA0MDM4MiwgNDAzODcsIDQwMzkyLCA0MDM5NywgNDA0MDMsIDQwNDA5LCA0MDQxNSwgNDA0MjAsIAotICAgIDQwNDI0LCA0MDQyOSwgNDA0MzMsIDMxNDA3LCAzMTQxMiwgMzE0MTcsIDQwNDM3LCA0MDQ0MSwgNDA0NDUsIDMxNDIyLCAKLSAgICAzMTQyOCwgMzE0MzQsIDMxNDQ2LCA0MDQ1NywgMjYwMTMsIDQwNDYxLCA0MDQ2NSwgNDA0NzAsIDQwNDc1LCA0MDQ4MCwgCi0gICAgNDA0ODUsIDQwNDg5LCA0MDQ5MywgNDA1MDMsIDQwNTA4LCA0MDUxMywgNDA1MTcsIDQwNTIxLCA0MDUyNCwgNDA1MzIsIAotICAgIDMxNDk0LCA0MDUzNywgMTQ3OSwgNDA1NDMsIDQwNTUxLCA0MDU2MCwgNDA1NjQsIDQwNTY4LCA0MDU3NiwgNDA1ODIsIAotICAgIDQwNTkwLCA0MDYwNiwgNDA2MTAsIDQwNjE0LCA0MDYxOSwgNDA2MzQsIDMxNTMxLCAxNzQ5LCAxMjA1NSwgNDA2MzgsIAotICAgIDEzNzgsIDQwNjUwLCA0MDY1MSwgNDA2NTksIDQwNjY2LCA0MDY3MSwgNDA2NzgsIDQwNjgzLCA5Mzc5LCAxMTE5LCAxMDMzMiwgCi0gICAgNDA2OTAsIDQwNjk1LCA0MDY5OCwgNDA3MDEsIDQwNzEwLCAxMjg2LCA0MDcxNSwgMzkwNjUsIDQwNzIyLCA0MDcyNywgCi0gICAgNDA3MzEsIDIyNTAzLCAyNTU3LCA0MDczOSwgMTA3NDEsIDQwNzQ5LCA0MDc1NSwgMjMzNywgMjM0NywgNDA3NjQsIDQwNzczLCAKLSAgICA0MDc4MywgNDA3OTQsIDMyOTMsIDM0MjM3LCAxMDM4NCwgMzgwNywgMTY2ODEsIDEyOTEsIDQwNzk5LCA0MDgwNywgNDA4MTQsIAotICAgIDQwODE5LCA0MDgyMywgNDA4MjcsIDIzODc1LCAxMDQxMSwgNDA4MzUsIDQwODQ0LCA0MDg1MywgNDA4NjEsIDQwODY4LCAKLSAgICA0MDg3OSwgNDA4ODQsIDQwODk3LCA0MDkxMCwgNDA5MjIsIDQwOTM0LCA0MDk0NiwgNDA5NTksIDQwOTcwLCA0MDk4MSwgCi0gICAgNDA5OTEsIDQwOTk5LCA0MTAwNywgNDEwMTksIDQxMDMxLCA0MTA0MiwgNDEwNTEsIDQxMDU5LCA0MTA2NiwgNDEwNzgsIAotICAgIDQxMDg1LCA0MTA5NCwgNDExMDEsIDQxMTE0LCA0MTExOSwgNDExMjksIDQxMTM0LCA0MTE0MCwgNDExNDUsIDM3MjExLCAKLSAgICA0MTE0OSwgNDExNTYsIDQxMTYwLCA0MTE2NywgNDExNzUsIDI1MTgsIDQxMTgyLCA0MTE5MywgNDEyMDMsIDQxMjEyLCAKLSAgICA0MTIyMCwgNDEyMzAsIDQxMjM4LCA0MTI0OCwgNDEyNTcsIDQxMjYyLCA0MTI2OCwgNDEyNzQsIDM3MDksIDQxMjg1LCAKLSAgICA0MTI5NSwgNDEzMDQsIDQxMzEzLCA0MTMyMywgNDEzMzEsIDQxMzQwLCA0MTM0NSwgNDEzNTAsIDQxMzU1LCAxNzA1LCAzNywgCi0gICAgNDEzNjMsIDQxMzcxLCA0MTM4MiwgNDEzOTMsIDE2MzU2LCA0MTQwMywgNDE0MDcsIDQxNDE0LCA0MTQyMCwgNDE0MjUsIAotICAgIDQxNDI5LCA0MTQ0MCwgNDE0NTAsIDQxNDU5LCA0MTQ3MCwgMTY3MzAsIDE2NzM1LCA0MTQ3NSwgNDE0ODQsIDQxNDg5LCAKLSAgICA0MTQ5OSwgNDE1MDQsIDQxNTEyLCA0MTUyMCwgNDE1MjcsIDQxNTMzLCA3MDc4LCAyMjgsIDQxNTM3LCA0MTU0MywgNDE1NDgsIAotICAgIDQxNTUxLCAyMTE3LCAzOTE4MSwgNDE1NTksIDQxNTYzLCA0MTU2NiwgMTUxMiwgNDE1NzIsIDEzOTgwLCAxMjk2LCA0MTU3NywgCi0gICAgNDE1OTAsIDQxNjA0LCAyNjQzLCA0MTYyMiwgNDE2MzQsIDQxNjQ2LCAyNjU3LCAyNjc0LCA0MTY2MCwgNDE2NzMsIDI2ODksIAotICAgIDQxNjg3LCA0MTY5OSwgMjcwNCwgNDE3MTMsIDEzMDIsIDEzMDgsIDEzMTQsIDEwNjU5LCA0MTcxOCwgNDE3MjMsIDQxNzI4LCAKLSAgICA0MTczMiwgNDE3NDcsIDQxNzYyLCA0MTc3NywgNDE3OTIsIDQxODA3LCA0MTgyMiwgNDE4MzcsIDQxODUyLCA0MTg2NywgCi0gICAgNDE4ODIsIDQxODk3LCA0MTkxMiwgNDE5MjcsIDQxOTQyLCA0MTk1NywgNDE5NzIsIDQxOTg3LCA0MjAwMiwgNDIwMTcsIAotICAgIDQyMDMyLCA0MjA0NywgNDIwNjIsIDQyMDc3LCA0MjA5MiwgNDIxMDcsIDQyMTIyLCA0MjEzNywgNDIxNTIsIDQyMTY3LCAKLSAgICA0MjE4MiwgNDIxOTcsIDQyMjEyLCA0MjIyNywgNDIyNDIsIDQyMjU3LCA0MjI3MiwgNDIyODcsIDQyMzAyLCA0MjMxNywgCi0gICAgNDIzMzIsIDQyMzQ3LCA0MjM2MiwgNDIzNzcsIDQyMzkyLCA0MjQwNywgNDI0MjIsIDQyNDM3LCA0MjQ1MiwgNDI0NjcsIAotICAgIDQyNDgyLCA0MjQ5NywgNDI1MTIsIDQyNTI3LCA0MjU0MiwgNDI1NTcsIDQyNTcyLCA0MjU4NywgNDI2MDIsIDQyNjE3LCAKLSAgICA0MjYzMiwgNDI2NDcsIDQyNjYyLCA0MjY3NywgNDI2OTIsIDQyNzA3LCA0MjcyMiwgNDI3MzcsIDQyNzUyLCA0Mjc2NywgCi0gICAgNDI3ODIsIDQyNzk3LCA0MjgxMiwgNDI4MjcsIDQyODQyLCA0Mjg1NywgNDI4NzIsIDQyODg3LCA0MjkwMiwgNDI5MTcsIAotICAgIDQyOTMyLCA0Mjk0NywgNDI5NjIsIDQyOTc3LCA0Mjk5MiwgNDMwMDcsIDQzMDIyLCA0MzAzNywgNDMwNTIsIDQzMDY3LCAKLSAgICA0MzA4MiwgNDMwOTcsIDQzMTEyLCA0MzEyNywgNDMxNDIsIDQzMTU3LCA0MzE3MiwgNDMxODcsIDQzMjAyLCA0MzIxNywgCi0gICAgNDMyMzIsIDQzMjQ3LCA0MzI2MiwgNDMyNzcsIDQzMjkyLCA0MzMwNywgNDMzMjIsIDQzMzM3LCA0MzM1MiwgNDMzNjcsIAotICAgIDQzMzgyLCA0MzM5NywgNDM0MTIsIDQzNDI3LCA0MzQ0MiwgNDM0NTcsIDQzNDcyLCA0MzQ4NywgNDM1MDIsIDQzNTE3LCAKLSAgICA0MzUzMiwgNDM1NDcsIDQzNTYyLCA0MzU3NywgNDM1OTIsIDQzNjA3LCA0MzYyMiwgNDM2MzcsIDQzNjUyLCA0MzY2NywgCi0gICAgNDM2ODIsIDQzNjk3LCA0MzcxMiwgNDM3MjcsIDQzNzQyLCA0Mzc1NywgNDM3NzIsIDQzNzg3LCA0MzgwMiwgNDM4MTcsIAotICAgIDQzODMyLCA0Mzg0NywgNDM4NjIsIDQzODc3LCA0Mzg5MiwgNDM5MDcsIDQzOTIyLCA0MzkzNywgNDM5NTIsIDQzOTY3LCAKLSAgICA0Mzk4MiwgNDM5OTcsIDQ0MDEyLCA0NDAyNywgNDQwNDIsIDQ0MDU3LCA0NDA3MiwgNDQwODcsIDQ0MTAyLCA0NDExNywgCi0gICAgNDQxMzIsIDQ0MTQ3LCA0NDE2MiwgNDQxNzcsIDQ0MTkyLCA0NDIwNywgNDQyMjIsIDQ0MjM3LCA0NDI1MiwgNDQyNjcsIAotICAgIDQ0MjgyLCA0NDI5NywgNDQzMTIsIDQ0MzI3LCA0NDM0MiwgNDQzNTcsIDQ0MzcyLCA0NDM4NywgNDQ0MDIsIDQ0NDE3LCAKLSAgICA0NDQzMiwgNDQ0NDcsIDQ0NDYyLCA0NDQ3NywgNDQ0OTIsIDQ0NTA3LCA0NDUyMiwgNDQ1MzcsIDQ0NTUyLCA0NDU2NywgCi0gICAgNDQ1ODIsIDQ0NTk3LCA0NDYxMiwgNDQ2MjcsIDQ0NjQyLCA0NDY1NywgNDQ2NzIsIDQ0Njg3LCA0NDcwMiwgNDQ3MTcsIAotICAgIDQ0NzMyLCA0NDc0NywgNDQ3NjIsIDQ0Nzc3LCA0NDc5MiwgNDQ4MDcsIDQ0ODIyLCA0NDgzNywgNDQ4NTIsIDQ0ODY3LCAKLSAgICA0NDg4MiwgNDQ4OTcsIDQ0OTEyLCA0NDkyNywgNDQ5NDIsIDQ0OTU3LCA0NDk3MiwgNDQ5ODcsIDQ1MDAyLCA0NTAxNywgCi0gICAgNDUwMzIsIDQ1MDQ3LCA0NTA2MiwgNDUwNzcsIDQ1MDkyLCA0NTEwNywgNDUxMjIsIDQ1MTM3LCA0NTE1MiwgNDUxNjcsIAotICAgIDQ1MTgyLCA0NTE5NywgNDUyMTIsIDQ1MjI3LCA0NTI0MiwgNDUyNTcsIDQ1MjcyLCA0NTI4NywgNDUzMDIsIDQ1MzE3LCAKLSAgICA0NTMzMiwgNDUzNDcsIDQ1MzYyLCA0NTM3NywgNDUzOTIsIDQ1NDA3LCA0NTQyMiwgNDU0MzcsIDQ1NDUyLCA0NTQ2NywgCi0gICAgNDU0ODIsIDQ1NDk3LCA0NTUxMiwgNDU1MjcsIDQ1NTQyLCA0NTU1NywgNDU1NzIsIDQ1NTg3LCA0NTYwMiwgNDU2MTcsIAotICAgIDQ1NjMyLCA0NTY0NywgNDU2NjIsIDQ1Njc3LCA0NTY5MiwgNDU3MDcsIDQ1NzIyLCA0NTczNywgNDU3NTIsIDQ1NzY3LCAKLSAgICA0NTc4MiwgNDU3OTcsIDQ1ODEyLCA0NTgyNywgNDU4NDIsIDQ1ODU3LCA0NTg3MiwgNDU4ODcsIDQ1OTAyLCA0NTkxNywgCi0gICAgNDU5MzIsIDQ1OTQ3LCA0NTk2MiwgNDU5NzcsIDQ1OTkyLCA0NjAwNywgNDYwMjIsIDQ2MDM3LCA0NjA1MiwgNDYwNjcsIAotICAgIDQ2MDgyLCA0NjA5NywgNDYxMTIsIDQ2MTI3LCA0NjE0MiwgNDYxNTcsIDQ2MTcyLCA0NjE4NywgNDYyMDIsIDQ2MjE3LCAKLSAgICA0NjIzMiwgNDYyNDcsIDQ2MjYyLCA0NjI3NywgNDYyOTIsIDQ2MzA3LCA0NjMyMiwgNDYzMzcsIDQ2MzUyLCA0NjM2NywgCi0gICAgNDYzODIsIDQ2Mzk3LCA0NjQxMiwgNDY0MjcsIDQ2NDQyLCA0NjQ1NywgNDY0NzIsIDQ2NDg3LCA0NjUwMiwgNDY1MTcsIAotICAgIDQ2NTMyLCA0NjU0NywgNDY1NjIsIDQ2NTc3LCA0NjU5MiwgNDY2MDcsIDQ2NjIyLCA0NjYzNywgNDY2NTIsIDQ2NjY3LCAKLSAgICA0NjY4MiwgNDY2OTcsIDQ2NzEyLCA0NjcyNywgNDY3NDIsIDQ2NzU3LCA0Njc3MiwgNDY3ODcsIDQ2ODAyLCA0NjgxNywgCi0gICAgNDY4MzIsIDQ2ODQ3LCA0Njg2MiwgNDY4NzcsIDQ2ODkyLCA0NjkwNywgNDY5MjIsIDQ2OTM3LCA0Njk1MiwgNDY5NjcsIAotICAgIDQ2OTgyLCA0Njk5NywgNDcwMTIsIDQ3MDI3LCA0NzA0MiwgNDcwNTcsIDQ3MDcyLCA0NzA4NywgNDcxMDIsIDQ3MTE3LCAKLSAgICA0NzEzMiwgNDcxNDcsIDQ3MTYyLCA0NzE3NywgNDcxOTIsIDQ3MjA3LCA0NzIyMiwgNDcyMzcsIDQ3MjUyLCA0NzI2NywgCi0gICAgNDcyODIsIDQ3Mjk3LCA0NzMxMiwgNDczMjcsIDQ3MzQyLCA0NzM1NywgNDczNzIsIDQ3Mzg3LCA0NzQwMiwgNDc0MTcsIAotICAgIDQ3NDMyLCA0NzQ0NywgNDc0NjIsIDQ3NDc3LCA0NzQ5MiwgNDc1MDcsIDQ3NTIyLCA0NzUzNywgNDc1NTIsIDQ3NTY3LCAKLSAgICA0NzU4MiwgNDc1OTcsIDQ3NjEyLCA0NzYyNywgNDc2NDIsIDQ3NjU3LCA0NzY3MiwgNDc2ODcsIDQ3NzAyLCA0NzcxNywgCi0gICAgNDc3MzIsIDQ3NzQ3LCA0Nzc2MiwgNDc3NzcsIDQ3NzkyLCA0NzgwNywgNDc4MjIsIDQ3ODM3LCA0Nzg1MiwgNDc4NjcsIAotICAgIDQ3ODgyLCA0Nzg5NywgNDc5MTIsIDQ3OTI3LCA0Nzk0MiwgNDc5NTcsIDQ3OTcyLCA0Nzk4NywgNDgwMDIsIDQ4MDE3LCAKLSAgICA0ODAzMiwgNDgwNDcsIDQ4MDYyLCA0ODA3NywgNDgwOTIsIDQ4MTA3LCA0ODEyMiwgNDgxMzcsIDQ4MTUyLCA0ODE2NywgCi0gICAgNDgxODIsIDQ4MTk3LCA0ODIxMiwgNDgyMjcsIDQ4MjQyLCA0ODI1NywgNDgyNzIsIDQ4Mjg3LCA0ODMwMiwgNDgzMTcsIAotICAgIDQ4MzMyLCA0ODM0NywgNDgzNjIsIDQ4Mzc3LCA0ODM5MiwgNDg0MDcsIDQ4NDIyLCA0ODQzNywgNDg0NTIsIDQ4NDY3LCAKLSAgICA0ODQ4MiwgNDg0OTcsIDQ4NTEyLCA0ODUyNywgNDg1NDIsIDQ4NTU3LCA0ODU3MiwgNDg1ODcsIDQ4NjAyLCA0ODYxNywgCi0gICAgNDg2MzIsIDQ4NjQ3LCA0ODY2MiwgNDg2NzcsIDQ4NjkyLCA0ODcwNywgNDg3MjIsIDQ4NzM3LCA0ODc1MiwgNDg3NjcsIAotICAgIDQ4NzgyLCA0ODc5NywgNDg4MTIsIDQ4ODI3LCA0ODg0MiwgNDg4NTcsIDQ4ODcyLCA0ODg4NywgNDg5MDIsIDQ4OTE3LCAKLSAgICA0ODkzMiwgNDg5NDcsIDQ4OTYyLCA0ODk3NywgNDg5OTIsIDQ5MDA3LCA0OTAyMiwgNDkwMzcsIDQ5MDUyLCA0OTA2NywgCi0gICAgNDkwODIsIDQ5MDk3LCA0OTExMiwgNDkxMjcsIDQ5MTQyLCA0OTE1NywgNDkxNzIsIDQ5MTg3LCA0OTIwMiwgNDkyMTcsIAotICAgIDQ5MjMyLCA0OTI0NywgNDkyNjIsIDQ5Mjc3LCA0OTI5MiwgNDkzMDcsIDQ5MzIyLCA0OTMzNywgNDkzNTIsIDQ5MzY3LCAKLSAgICA0OTM4MiwgNDkzOTcsIDQ5NDEyLCA0OTQyNywgNDk0NDIsIDQ5NDU3LCA0OTQ3MiwgNDk0ODcsIDQ5NTAyLCA0OTUxNywgCi0gICAgNDk1MzIsIDQ5NTQ4LCA0OTU2NCwgNDk1ODAsIDQ5NTk2LCA0OTYxMiwgNDk2MjgsIDQ5NjQ0LCA0OTY2MCwgNDk2NzYsIAotICAgIDQ5NjkyLCA0OTcwOCwgNDk3MjQsIDQ5NzQwLCA0OTc1NiwgNDk3NzIsIDQ5Nzg4LCA0OTgwNCwgNDk4MjAsIDQ5ODM2LCAKLSAgICA0OTg1MiwgNDk4NjgsIDQ5ODg0LCA0OTkwMCwgNDk5MTYsIDQ5OTMyLCA0OTk0OCwgNDk5NjQsIDQ5OTgwLCA0OTk5NiwgCi0gICAgNTAwMTIsIDUwMDI4LCA1MDA0NCwgNTAwNjAsIDUwMDc2LCA1MDA5MiwgNTAxMDgsIDUwMTI0LCA1MDE0MCwgNTAxNTYsIAotICAgIDUwMTcyLCA1MDE4OCwgNTAyMDQsIDUwMjIwLCA1MDIzNiwgNTAyNTIsIDUwMjY4LCA1MDI4NCwgNTAzMDAsIDUwMzE2LCAKLSAgICA1MDMzMiwgNTAzNDgsIDUwMzY0LCA1MDM4MCwgNTAzOTYsIDUwNDEyLCA1MDQyOCwgNTA0NDQsIDUwNDYwLCA1MDQ3NiwgCi0gICAgNTA0OTIsIDUwNTA4LCA1MDUyNCwgNTA1NDAsIDUwNTU2LCA1MDU3MiwgNTA1ODgsIDUwNjA0LCA1MDYyMCwgNTA2MzYsIAotICAgIDUwNjUyLCA1MDY2OCwgNTA2ODQsIDUwNzAwLCA1MDcxNiwgNTA3MzIsIDUwNzQ4LCA1MDc2NCwgNTA3ODAsIDUwNzk2LCAKLSAgICA1MDgxMiwgNTA4MjgsIDUwODQ0LCA1MDg2MCwgNTA4NzYsIDUwODkyLCA1MDkwOCwgNTA5MjQsIDUwOTQwLCA1MDk1NiwgCi0gICAgNTA5NzIsIDUwOTg4LCA1MTAwNCwgNTEwMjAsIDUxMDM2LCA1MTA1MiwgNTEwNjgsIDUxMDg0LCA1MTEwMCwgNTExMTYsIAotICAgIDUxMTMyLCA1MTE0OCwgNTExNjQsIDUxMTgwLCA1MTE5NiwgNTEyMTIsIDUxMjI4LCA1MTI0NCwgNTEyNjAsIDUxMjc2LCAKLSAgICA1MTI5MiwgNTEzMDgsIDUxMzI0LCA1MTM0MCwgNTEzNTYsIDUxMzcyLCA1MTM4OCwgNTE0MDQsIDUxNDIwLCA1MTQzNiwgCi0gICAgNTE0NTIsIDUxNDY4LCA1MTQ4NCwgNTE1MDAsIDUxNTE2LCA1MTUzMiwgNTE1NDgsIDUxNTY0LCA1MTU4MCwgNTE1OTYsIAotICAgIDUxNjEyLCA1MTYyOCwgNTE2NDQsIDUxNjYwLCA1MTY3NiwgNTE2OTIsIDUxNzA4LCA1MTcyNCwgNTE3NDAsIDUxNzU2LCAKLSAgICA1MTc3MiwgNTE3ODgsIDUxODA0LCA1MTgyMCwgNTE4MzYsIDUxODUyLCA1MTg2OCwgNTE4ODQsIDUxOTAwLCA1MTkxNiwgCi0gICAgNTE5MzIsIDUxOTQ4LCA1MTk2NCwgNTE5ODAsIDUxOTk2LCA1MjAxMiwgNTIwMjgsIDUyMDQ0LCA1MjA2MCwgNTIwNzYsIAotICAgIDUyMDkyLCA1MjEwOCwgNTIxMjQsIDUyMTQwLCA1MjE1NiwgNTIxNzIsIDUyMTg4LCA1MjIwNCwgNTIyMjAsIDUyMjM2LCAKLSAgICA1MjI1MiwgNTIyNjgsIDUyMjg0LCA1MjMwMCwgNTIzMTYsIDUyMzMyLCA1MjM0OCwgNTIzNjQsIDUyMzgwLCA1MjM5NiwgCi0gICAgNTI0MTIsIDUyNDI4LCA1MjQ0NCwgNTI0NjAsIDUyNDc2LCA1MjQ5MiwgNTI1MDgsIDUyNTI0LCA1MjU0MCwgNTI1NTYsIAotICAgIDUyNTcyLCA1MjU4OCwgNTI2MDQsIDUyNjIwLCA1MjYzNiwgNTI2NTIsIDUyNjY4LCA1MjY4NCwgNTI3MDAsIDUyNzE2LCAKLSAgICA1MjczMiwgNTI3NDgsIDUyNzY0LCA1Mjc4MCwgNTI3OTYsIDUyODEyLCA1MjgyOCwgNTI4NDQsIDUyODYwLCA1Mjg3NiwgCi0gICAgNTI4OTIsIDUyOTA4LCA1MjkyNCwgNTI5NDAsIDUyOTU2LCA1Mjk3MiwgNTI5ODgsIDUzMDA0LCA1MzAyMCwgNTMwMzYsIAotICAgIDUzMDUyLCA1MzA2OCwgNTMwODQsIDUzMTAwLCA1MzExNiwgNTMxMzIsIDUzMTQ4LCA1MzE2NCwgNTMxODAsIDUzMTk2LCAKLSAgICA1MzIxMiwgNTMyMjgsIDUzMjQ0LCA1MzI2MCwgNTMyNzYsIDUzMjkyLCA1MzMwOCwgNTMzMjQsIDUzMzQwLCA1MzM1NiwgCi0gICAgNTMzNzIsIDUzMzg4LCA1MzQwNCwgNTM0MjAsIDUzNDM2LCA1MzQ1MiwgNTM0NjgsIDUzNDg0LCA1MzUwMCwgNTM1MTYsIAotICAgIDUzNTMyLCA1MzU0OCwgNTM1NjQsIDUzNTgwLCA1MzU5NiwgNTM2MTIsIDUzNjI4LCA1MzY0NCwgNTM2NjAsIDUzNjc2LCAKLSAgICA1MzY5MiwgNTM3MDgsIDUzNzI0LCA1Mzc0MCwgNTM3NTYsIDUzNzcyLCA1Mzc4OCwgNTM4MDQsIDUzODIwLCA1MzgzNiwgCi0gICAgNTM4NTIsIDUzODY4LCA1Mzg4NCwgNTM5MDAsIDUzOTE2LCA1MzkzMiwgNTM5NDgsIDUzOTY0LCA1Mzk4MCwgNTM5OTYsIAotICAgIDU0MDEyLCA1NDAyOCwgNTQwNDQsIDU0MDYwLCA1NDA3NiwgNTQwOTIsIDU0MTA4LCA1NDEyNCwgNTQxNDAsIDU0MTU2LCAKLSAgICA1NDE3MiwgNTQxODgsIDU0MjA0LCA1NDIyMCwgNTQyMzYsIDU0MjUyLCA1NDI2OCwgNTQyODQsIDU0MzAwLCA1NDMxNiwgCi0gICAgNTQzMzIsIDU0MzQ4LCA1NDM2NCwgNTQzODAsIDU0Mzk2LCA1NDQxMiwgNTQ0MjgsIDU0NDQ0LCA1NDQ2MCwgNTQ0NzYsIAotICAgIDU0NDkyLCA1NDUwOCwgNTQ1MjQsIDU0NTQwLCA1NDU1NiwgNTQ1NzIsIDU0NTg4LCA1NDYwNCwgNTQ2MjAsIDU0NjM2LCAKLSAgICA1NDY1MiwgNTQ2NjgsIDU0Njg0LCA1NDcwMCwgNTQ3MTYsIDU0NzMyLCA1NDc0OCwgNTQ3NjQsIDU0NzgwLCA1NDc5NiwgCi0gICAgNTQ4MTIsIDU0ODI4LCA1NDg0NCwgNTQ4NjAsIDU0ODc2LCA1NDg5MiwgNTQ5MDgsIDU0OTI0LCA1NDk0MCwgNTQ5NTYsIAotICAgIDU0OTcyLCA1NDk4OCwgNTUwMDQsIDU1MDIwLCA1NTAzNiwgNTUwNTIsIDU1MDY4LCA1NTA4NCwgNTUxMDAsIDU1MTE2LCAKLSAgICA1NTEzMiwgNTUxNDgsIDU1MTY0LCA1NTE4MCwgNTUxOTYsIDU1MjEyLCA1NTIyOCwgNTUyNDQsIDU1MjYwLCA1NTI3NiwgCi0gICAgNTUyOTIsIDU1MzA4LCA1NTMyNCwgNTUzNDAsIDU1MzU2LCA1NTM3MiwgNTUzODgsIDU1NDA0LCA1NTQyMCwgNTU0MzYsIAotICAgIDU1NDUyLCA1NTQ2OCwgNTU0ODQsIDU1NTAwLCA1NTUxNiwgNTU1MzIsIDU1NTQ4LCA1NTU2NCwgNTU1ODAsIDU1NTk2LCAKLSAgICA1NTYxMiwgNTU2MjgsIDU1NjQ0LCA1NTY2MCwgNTU2NzYsIDU1NjkyLCA1NTcwOCwgNTU3MjQsIDU1NzQwLCA1NTc1NiwgCi0gICAgNTU3NzIsIDU1Nzg4LCA1NTgwNCwgNTU4MjAsIDU1ODM2LCA1NTg1MiwgNTU4NjgsIDU1ODg0LCA1NTkwMCwgNTU5MTYsIAotICAgIDU1OTMyLCA1NTk0OCwgNTU5NjQsIDU1OTgwLCA1NTk5NiwgNTYwMTIsIDU2MDI4LCA1NjA0NCwgNTYwNjAsIDU2MDc2LCAKLSAgICA1NjA5MiwgNTYxMDgsIDU2MTI0LCA1NjE0MCwgNTYxNTYsIDU2MTcyLCA1NjE4OCwgNTYyMDQsIDU2MjIwLCA1NjIzNiwgCi0gICAgNTYyNTIsIDU2MjY4LCA1NjI4NCwgNTYzMDAsIDU2MzE2LCA1NjMzMiwgNTYzNDgsIDU2MzY0LCA1NjM4MCwgNTYzOTYsIAotICAgIDU2NDEyLCA1NjQyOCwgNTY0NDQsIDU2NDYwLCA1NjQ3NiwgNTY0OTIsIDU2NTA4LCA1NjUyNCwgNTY1NDAsIDU2NTU2LCAKLSAgICA1NjU3MiwgNTY1ODgsIDU2NjA0LCA1NjYyMCwgNTY2MzYsIDU2NjUyLCA1NjY2OCwgNTY2ODQsIDU2NzAwLCA1NjcxNiwgCi0gICAgNTY3MzIsIDU2NzQ4LCA1Njc2NCwgNTY3ODAsIDU2Nzk2LCA1NjgxMiwgNTY4MjgsIDU2ODQ0LCA1Njg2MCwgNTY4NzYsIAotICAgIDU2ODkyLCA1NjkwOCwgNTY5MjQsIDU2OTQwLCA1Njk1NiwgNTY5NzIsIDU2OTg4LCA1NzAwNCwgNTcwMjAsIDU3MDM2LCAKLSAgICA1NzA1MiwgNTcwNjgsIDU3MDg0LCA1NzEwMCwgNTcxMTYsIDU3MTMyLCA1NzE0OCwgNTcxNjQsIDU3MTgwLCA1NzE5NiwgCi0gICAgNTcyMTIsIDU3MjI4LCA1NzI0NCwgNTcyNjAsIDU3Mjc2LCA1NzI5MiwgNTczMDgsIDU3MzI0LCA1NzM0MCwgNTczNTYsIAotICAgIDU3MzcyLCA1NzM4OCwgNTc0MDQsIDU3NDIwLCA1NzQzNiwgNTc0NTIsIDU3NDY4LCA1NzQ4NCwgNTc1MDAsIDU3NTE2LCAKLSAgICA1NzUzMiwgNTc1NDgsIDU3NTY0LCA1NzU4MCwgNTc1OTYsIDU3NjEyLCA1NzYyOCwgNTc2NDQsIDU3NjYwLCA1NzY3NiwgCi0gICAgNTc2OTIsIDU3NzA4LCA1NzcyNCwgNTc3NDAsIDU3NzU2LCA1Nzc3MiwgNTc3ODgsIDU3ODA0LCA1NzgyMCwgNTc4MzYsIAotICAgIDU3ODUyLCA1Nzg2OCwgNTc4ODQsIDU3OTAwLCA1NzkxNiwgNTc5MzIsIDU3OTQ4LCA1Nzk2NCwgNTc5ODAsIDU3OTk2LCAKLSAgICA1ODAxMiwgNTgwMjgsIDU4MDQ0LCA1ODA2MCwgNTgwNzYsIDU4MDkyLCA1ODEwOCwgNTgxMjQsIDU4MTQwLCA1ODE1NiwgCi0gICAgNTgxNzIsIDU4MTg4LCA1ODIwNCwgNTgyMTksIDE2NzYyLCA1ODIyOCwgNTgyMzQsIDU4MjQwLCA1ODI1MCwgNTgyNTgsIAotICAgIDE0ODk0LCAxNTQ0NSwgOTk2MCwgNTgyNzEsIDE1MjAsIDU4Mjc5LCAzNzYxLCAyNzQzMiwgNzE4MywgNTgyODUsIDU4MjkwLCAKLSAgICA1ODI5NSwgNTgzMDAsIDU4MzA1LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzMsIDU4MzM4LCA1ODM0MywgCi0gICAgNTgzNDgsIDU4MzUzLCA1ODM1OSwgNTgzNjQsIDU4MzY5LCA1ODM3NCwgNTgzNzksIDU4Mzg0LCA1ODM4OSwgNTgzOTQsIAotICAgIDU4NDAwLCA1ODQwNSwgNTg0MTEsIDU4NDE4LCAyNTYxLCA1ODQyMywgNTg0MjksIDg1MjYsIDU4NDMzLCA1ODQzOCwgCi0gICAgNTg0NDUsIDU4NDUzLCA0MCwgNTg0NTcsIDU4NDYzLCA1ODQ2OCwgNTg0NzMsIDU4NDc3LCA1ODQ4MiwgNTg0ODYsIDU4NDkwLCAKLSAgICAxMDY4NCwgNTg0OTQsIDU4NTA0LCA1ODUxNywgNTg1MjgsIDU4NTQxLCA1ODU0OCwgNTg1NTQsIDU4NTU5LCA1ODU2NSwgCi0gICAgNTg1NzEsIDU4NTc3LCA1ODU4MiwgNTg1ODcsIDU4NTkyLCA1ODU5NywgNTg2MDEsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIAotICAgIDU4NjIyLCA1ODYyOCwgNTg2MzQsIDU4NjM5LCA1ODY0MywgNTg2NDgsIDU4NjUzLCA1ODY1NywgNTg2NjIsIDU4NjY3LCAKLSAgICA1ODY3MiwgNTg2NzYsIDEwNzAwLCAxMDcxMSwgMTA3MTYsIDE1NjMsIDU4NjgwLCAxNTY4LCA1ODY4NiwgMTYyMzksIAotICAgIDU4Njg5LCA1ODY5NSwgMTU5OSwgNTg3MDEsIDE2MDUsIDE2MTEsIDEwNzQ2LCA1ODcwNiwgNTg3MTQsIDU4NzIxLCA1ODcyNSwgCi0gICAgNTg3MzEsIDU4NzM2LCAzMDk3NywgNTg3NDEsIDU4NzQ4LCA1ODc1MywgNTg3NTcsIDU4NzYxLCAxNjE2LCAxNjMzMSwgCi0gICAgNTg3NzAsIDU4Nzc0LCAxNjM0MiwgMTEyNSwgNTg3NzgsIDU4Nzg1LCA1ODc5MCwgNTg3OTQsIDE2MzY3LCAxNjIwLCAKLSAgICAzNzM1MCwgNTg3OTcsIDU4ODAyLCA1ODgxMiwgNTg4MjEsIDU4ODI2LCA1ODgzMCwgNTg4MzYsIDE2MjUsIDM5MjU5LCAKLSAgICA1ODg0MSwgNTg4NTAsIDU4ODU2LCA1ODg2MSwgMTA5MDQsIDEwOTEwLCA1ODg2NywgNTg4NzksIDU4ODk2LCA1ODkxMywgCi0gICAgNTg5MzAsIDU4OTQ3LCA1ODk2NCwgNTg5ODEsIDU4OTk4LCA1OTAxNSwgNTkwMzIsIDU5MDQ5LCA1OTA2NiwgNTkwODMsIAotICAgIDU5MTAwLCA1OTExNywgNTkxMzQsIDU5MTUxLCA1OTE2OCwgNTkxODUsIDU5MjAyLCA1OTIxOSwgNTkyMzYsIDU5MjUzLCAKLSAgICA1OTI3MCwgNTkyODcsIDU5MzA0LCA1OTMyMSwgNTkzMzgsIDU5MzU1LCA1OTM3MiwgNTkzODksIDU5NDA2LCA1OTQyMywgCi0gICAgNTk0NDAsIDU5NDU3LCA1OTQ3NCwgNTk0OTEsIDU5NTA4LCA1OTUyNSwgNTk1NDIsIDU5NTU5LCA1OTU3NiwgNTk1OTMsIAotICAgIDU5NjEwLCA1OTYyNywgNTk2NDQsIDU5NjYxLCA1OTY3OCwgNTk2OTUsIDU5NzEyLCA1OTcyMywgNTk3MjgsIDE2MzAsIAotICAgIDU5NzMyLCA1OTczOCwgNTk3NDMsIDU5NzQ4LCA5MzI2LCAxNjM1LCA1OTc1NCwgNTk3NjMsIDI3NzMxLCA1OTc2OCwgCi0gICAgNTk3NzksIDU5Nzg5LCA1OTc5NCwgNTk4MDEsIDU5ODA3LCA1OTgxMiwgNTk4MTcsIDE2NjE5LCA1OTgyMSwgMTA5MjEsIAotICAgIDE2NDAsIDEwOTI2LCA1OTgyNywgNTk4MzIsIDU5ODM4LCA1OTg0MywgNTk4NDgsIDU5ODUzLCA1OTg1OCwgNTk4NjMsIAotICAgIDU5ODY4LCA1OTg3MywgNTk4NzksIDU5ODg1LCA1OTg5MSwgNTk4OTYsIDU5OTAwLCA1OTkwNSwgNTk5MTAsIDU5OTE0LCAKLSAgICA1OTkxOSwgNTk5MjQsIDU5OTI5LCA1OTkzMywgNTk5MzgsIDU5OTQ0LCA1OTk0OSwgNTk5NTQsIDU5OTU4LCA1OTk2MywgCi0gICAgNTk5NjgsIDU5OTc0LCA1OTk3OSwgNTk5ODQsIDU5OTkwLCA1OTk5NiwgNjAwMDEsIDYwMDA1LCA2MDAxMCwgNjAwMTUsIAotICAgIDYwMDIwLCA2MDAyNCwgNjAwMjksIDYwMDM0LCA2MDAzOSwgNjAwNDUsIDYwMDUxLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCAKLSAgICA2MDA2OSwgNjAwNzQsIDYwMDc5LCAyOTEyOSwgNjAwODMsIDYwMDg4LCA2MDA5MywgNjAwOTksIDYwMTA0LCA2MDEwOSwgCi0gICAgNjAxMTMsIDYwMTE4LCA2MDEyMywgNjAxMjksIDYwMTM0LCA2MDEzOSwgNjAxNDUsIDYwMTUxLCA2MDE1NiwgNjAxNjAsIAotICAgIDYwMTY1LCA2MDE3MCwgNjAxNzQsIDYwMTc5LCA2MDE4NCwgNjAxODksIDYwMTk1LCA2MDIwMSwgNjAyMDYsIDYwMjEwLCAKLSAgICA2MDIxNSwgNjAyMjAsIDYwMjI0LCA2MDIyOSwgNjAyMzQsIDYwMjM5LCA2MDI0MywgNjAyNDYsIDMxNjM5LCA2MDI1MSwgCi0gICAgNjAyNTksIDE2Njg1LCAzNjYzLCAxMTAxNywgNjAyNjUsIDYwMjc1LCA2MDI5MCwgMTEwMjIsIDYwMzAxLCA2MDMwNiwgCi0gICAgNjAzMTcsIDYwMzI5LCA2MDM0MSwgNjAzNTMsIDI2OTUsIDYwMzY1LCA2MDM3MCwgNjAzODIsIDYwMzg2LCA2MDM5MiwgCi0gICAgNjAzOTgsIDYwNDAzLCAxNjUyLCAxMDc4LCA2MDQxMiwgNjA0MTcsIDM5MzA5LCA2MDQyMSwgNjA0MjUsIDYwNDMwLCAKLSAgICA2MDQzNCwgMTY3NzAsIDYwNDM5LCA2MDQ0MiwgNjA0NTAsIDYwNDU4LCAxNjU2LCAxMTA0NywgMTEwNTMsIDE2NjEsIAotICAgIDYwNDY2LCA2MDQ3MywgNjA0NzgsIDYwNDg3LCA2MDQ5NywgNjA1MDQsIDYwNTA5LCA2MDUxNCwgMTY2NiwgNjA1MjEsIAotICAgIDYwNTI2LCAxNjg4NSwgNjA1MzAsIDYwNTM1LCA2MDU0MiwgNjA1NDgsIDYwNTUyLCA2MDU2MywgNjA1NzMsIDE2OTA3LCAKLSAgICA5MjM0LCA5MjQxLCAxNjcxLCA2MDU4MCwgNjA1ODYsIDYwNTk0LCA2MDYwMSwgNjA2MDcsIDYwNjE0LCA2MDYyNiwgNjA2MzIsIAotICAgIDYwNjM3LCA2MDY0OSwgNjA2NjAsIDYwNjY5LCA2MDY3OSwgMzc0MCwgMzA4MTMsIDMwODIyLCAxNjk0NywgMTY3NiwgMTY4MCwgCi0gICAgNjA2ODcsIDYwNjk4LCA2MDcwMywgMTY4MywgNjA3MTEsIDYwNzE2LCAxNjk5OCwgNjA3MjgsIDYwNzM0LCA2MDczOSwgCi0gICAgNjA3NDcsIDE2ODgsIDYwNzUyLCA2MDc1NywgNjA3NjUsIDYwNzczLCA2MDc4MCwgNjA3ODksIDYwNzk3LCA2MDgwNiwgCi0gICAgMTY5MywgNjA4MTAsIDE2OTgsIDYwODE1LCA2MDgyMiwgMTcwNzIsIDYwODMwLCA2MDgzNiwgNjA4NDEsIDYwODQ5LCAKLSAgICA2MDg1NiwgNjA4NjQsIDIyNTc0LCA2MDg2OSwgMTExODIsIDYwODc4LCA2MDg4NCwgNjA4OTEsIDYwODk4LCA2MDkwNCwgCi0gICAgNjA5MTQsIDYwOTIwLCA2MDkyNSwgNjA5MzYsIDYwOTQxLCA2MDk0OSwgMTExOTEsIDExMTk2LCA2MDk1NywgNjA5NjMsIAotICAgIDYwOTcxLCAzODA1LCAxNzExNCwgMzkzOTcsIDYwOTc2LCA2MDk4MiwgNjA5ODcsIDYwOTk1LCA2MTAwMiwgMTIwMzYsIAotICAgIDYxMDA3LCA2MTAxMywgMTcwOSwgNjEwMTgsIDYxMDIxLCAxMTMyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MywgCi0gICAgNjEwNDgsIDYxMDUzLCA2MTA1OCwgNjEwNjMsIDYxMDY4LCA2MTA3MywgMTcxOCwgOSwgNjEwNzksIDYxMDgzLCA2MTA4OCwgCi0gICAgNjEwOTIsIDYxMDk2LCA2MTEwMCwgMzE4NzksIDYxMTA1LCA2MTExMCwgNjExMTUsIDYxMTE5LCA2MTEyMiwgNjExMjYsIAotICAgIDYxMTMwLCA2MTEzNSwgNjExMzksIDYxMTQ0LCA2MTE0OCwgMzQ2MTYsIDM0NjIxLCAzNDYyNiwgNjExNTEsIDYxMTU4LCAKLSAgICA2MTE2NCwgMzkxMTgsIDYxMTc0LCAzNDYzMiwgMzIxMzcsIDMxODk0LCAzMTkwMCwgMzQ2NDgsIDMxOTA2LCA2MTE3OSwgCi0gICAgNjExODQsIDMyMTcwLCA2MTE4OCwgNjExOTEsIDYxMTk1LCA2MTIwMiwgNjEyMDUsIDYxMjEwLCA2MTIxNCwgNjEyMTgsIAotICAgIDYxMjIxLCA2MTIzMSwgNjEyNDMsIDYxMjUwLCA2MTI1NiwgNjEyNjMsIDMzNTczLCA2MTI2NiwgODU0MywgODc3LCA2MTI2OSwgCi0gICAgNjEyNzMsIDYxMjc4LCAzNjkwLCA2MTI4MiwgNjEyODUsIDEzNjMyLCA2MTI5MiwgNjEyOTksIDYxMzEyLCA2MTMyMCwgCi0gICAgNjEzMjksIDYxMzM4LCA2MTM0MywgNjEzNTMsIDYxMzY2LCA2MTM3OCwgNjEzODUsIDYxMzkwLCA2MTM5OSwgNjE0MTIsIAotICAgIDM2MDYwLCA2MTQzMCwgNjE0MzUsIDYxNDQyLCA2MTQ0OCwgNjU2LCA2MTQ1MywgNjE0NjEsIDYxNDY4LCAyNzI3MSwgNjI3LCAKLSAgICA2MTQ3NCwgNjE0ODAsIDYxNDkwLCA2MTQ5NiwgNjE1MDEsIDMxOTI0LCA2MDAzLCAzMTkzOCwgNjE1MDUsIDYxNTE1LCAKLSAgICA2MTUyMCwgNjE1MzAsIDYxNTQ1LCA2MTU1MSwgNjE1NTcsIDMxOTQ4LCA2MTU2MiwgMzEwOTQsIDYxNTY2LCA2MTU3MSwgCi0gICAgNjE1NzYsIDYxNTgwLCA2MTU4NSwgMTY5NTAsIDYxNTkyLCA2MTU5NywgNjE2MDEsIDYwNDQsIDMxOTc0LCA2MTYwNSwgCi0gICAgNjE2MTEsIDMxMiwgNjE2MjEsIDYxNjI4LCA2MTYzNSwgNjE2NDAsIDYxNjQ5LCA1ODgwNiwgNjE2NTUsIDYxNjYzLCAKLSAgICA2MTY2NywgNjE2NzEsIDYxNjc1LCA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5NCwgNjE3MDIsIDYxNzA3LCA2MTcxMiwgCi0gICAgNjE3MTYsIDYxNzIxLCA2MTcyNSwgNjE3MjksIDYxNzM1LCA2MTc0MSwgNjE3NDYsIDYxNzUwLCAzMjA5OCwgNjE3NTUsIAotICAgIDMyMTA0LCAzMjExMCwgNjE3NjAsIDYxNzY2LCA2MTc3MywgNjE3NzgsIDYxNzgyLCAzMTExMSwgMTY2MTIsIDYxNzg1LCAKLSAgICA2MTc4OSwgNjE3OTQsIDYxODAxLCA2MTgwNywgNjE4MTEsIDYxODE2LCAzODgyOCwgNjE4MjIsIDYxODI2LCA2MTgzMCwgCi0gICAgNjE4MzUsIDYxODQxLCA2MTg0NywgNjE4NTksIDYxODY4LCA2MTg3OCwgNjE4ODQsIDYxODkxLCA2MTg5NiwgNjE5MDEsIAotICAgIDYxOTA1LCA2MTkwOCwgNjE5MTQsIDYxOTIxLCA2MTkyNiwgNjE5MzEsIDYxOTM4LCA2MTk0NSwgNjE5NTEsIDYxOTU2LCAKLSAgICA2MTk2MSwgNjE5NjksIDMyMTE1LCAyNDIzLCA2MTk3NCwgNjE5NzksIDYxOTg1LCA2MTk5MCwgNjE5OTYsIDYyMDAxLCAKLSAgICA2MjAwNiwgNjIwMTEsIDYyMDE3LCAzMjEzNiwgNjIwMjIsIDYyMDI4LCA2MjAzNCwgNjIwNDAsIDMyMjAwLCA2MjA0NSwgCi0gICAgNjIwNTAsIDYyMDU1LCAzMjIxMSwgNjIwNjAsIDYyMDY1LCA2MjA3MCwgNjIwNzYsIDYyMDgyLCAzMjIxNiwgNjIwODcsIAotICAgIDYyMDkyLCA2MjA5NywgMzIyNzEsIDMyMjc3LCA2MjEwMiwgNjIxMDcsIDMyMjgyLCA2MjExMiwgMjc5NTgsIDMyMzA0LCAKLSAgICAzMjMwOCwgNjIxMTcsIDYyMDkzLCA2MjEyMSwgNjIxMjksIDYyMTM1LCA2MjE0MywgNjIxNTAsIDYyMTU2LCA2MjE2NiwgCi0gICAgNjIxNzIsIDYyMTc5LCAxMDYzMSwgMzIzMjIsIDYyMTg1LCA2MjE5OCwgNjIyMDcsIDYyMjEzLCA2MjIyMiwgNjIyMjgsIAotICAgIDIzNTEyLCA2MjIzNSwgNjIyNDIsIDYyMjUyLCAzMjI3MiwgNjIyNTUsIDYyMjYyLCA2MjI2NywgNjIyNzEsIDYyMjc1LCAKLSAgICA2MjI4MCwgNjEyMCwgNjIyODQsIDYyMjg5LCA2MjI5NCwgMzQ3MTAsIDM0NzE1LCA2MjI5OCwgMzQ3MjksIDYyMzAzLCAKLSAgICAzNDczNCwgNjIzMDgsIDYyMzE0LCAzNDc0NiwgMzQ3NTIsIDM0NzU4LCA2MjMxOSwgNjIzMjUsIDIyNTM5LCA2MjMzNiwgCi0gICAgNjIzMzksIDYyMzUxLCA2MjM1OSwgMzIzNDUsIDYyMzYzLCA2MjM3MiwgNjIzODIsIDYyMzkxLCAzMjM1NSwgNjIzOTYsIAotICAgIDYyNDAzLCA2MjQxMiwgNjI0MTgsIDYyNDI2LCA2MjQzMywgNjA5NSwgNDM5NywgNjI0MzgsIDMyMjgzLCA2MjQ0NCwgCi0gICAgNjI0NDcsIDYyNDUzLCA2MjQ2MCwgNjI0NjUsIDYyNDcwLCAyMzQyMiwgNjI0NzQsIDYyNDgwLCA2MjQ4NiwgNjI0OTEsIAotICAgIDYyNDk2LCA2MjUwMCwgNjI1MDYsIDYyNTEyLCAzMzQ4MywgODYzLCAzNTcyMywgMzY2NDQsIDM2NjUwLCAzMjM5MSwgCi0gICAgNjI1MTcsIDYyNTIxLCA2MjUyNSwgNjI1MjgsIDYyNTQxLCA2MjU0NywgNjI1NTEsIDYyNTU0LCA2MjU1OSwgMzM3ODYsIAotICAgIDYyNTYzLCAzMTExNiwgMjEyODcsIDYyNTY5LCA2MDI0LCA2MDMyLCA5MDc1LCA2MjU3MiwgNjI1NzcsIDYyNTgyLCA2MjU4NywgCi0gICAgNjI1OTIsIDYyNTk3LCA2MjYwMiwgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjMsIDYyNjI4LCA2MjYzMywgNjI2MzksIAotICAgIDYyNjQ0LCA2MjY0OSwgNjI2NTQsIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc1LCA2MjY4MCwgNjI2ODYsIDYyNjkxLCAKLSAgICA2MjY5NiwgNjI3MDEsIDYyNzA2LCA2MjcxMSwgNjI3MTYsIDYyNzIxLCA2MjcyNiwgNjI3MzEsIDYyNzM2LCA2Mjc0MiwgCi0gICAgNjI3NDcsIDYyNzUyLCA2Mjc1NywgNjI3NjIsIDYyNzY3LCA2Mjc3MiwgNjI3NzgsIDYyNzgzLCA2Mjc4OCwgNjI3OTMsIAotICAgIDYyNzk4LCA2MjgwMywgNjI4MDgsIDYyODEzLCA2MjgxOCwgNjI4MjMsIDYyODI5LCA2MjgzNCwgNjI4MzksIDYyODQ0LCAKLSAgICA2Mjg0OSwgNjI4NTUsIDYyODYxLCA2Mjg2NiwgNjI4NzIsIDYyODc3LCA2Mjg4MiwgNjI4ODcsIDYyODkyLCA2Mjg5NywgCi0gICAgMTUxMywgMjQ1LCA2MjkwMiwgNjI5MDYsIDYyOTEwLCA2MjkxNCwgMjUxMzMsIDYyOTE4LCA2MjkyMiwgNjI5MjcsIDYyOTMxLCAKLSAgICA2MjkzNiwgNjI5NDAsIDYyOTQ1LCA2Mjk1MCwgNjI5NTUsIDYyOTU5LCA2Mjk2MywgNjI5NjgsIDYyOTcyLCAxMzM2OSwgCi0gICAgNjI5NzcsIDYyOTgxLCA2Mjk4OCwgNjI5OTgsIDE1MjA2LCA2MzAwNywgNjMwMTYsIDYzMDIwLCA2MzAyNSwgNjMwMzAsIAotICAgIDYzMDM0LCAyNDkyNCwgMzAxOSwgNjMwMzgsIDYzMDQ0LCAxNzM2MywgNjMwNDgsIDYzMDU3LCA2MzA2NSwgNjMwNzEsIAotICAgIDYzMDgzLCA2MzA5NSwgNjMwOTksIDYzMTA0LCA2MzEwOCwgNjMxMTQsIDYzMTIwLCA2MzEyNSwgNjMxMzUsIDYzMTQ1LCAKLSAgICA2MzE1MSwgNjMxNTYsIDYzMTYwLCA2MzE2NSwgNjMxNzEsIDYzMTgwLCA2MzE4OSwgNjMxOTcsIDE1NTYwLCA2MzIwMSwgCi0gICAgNjMyMTAsIDYzMjE4LCA2MzIzMCwgNjMyNDEsIDYzMjUyLCA2MzI2MSwgNjMyNjUsIDYzMjc0LCA2MzI4NCwgNjMyOTIsIAotICAgIDYzMjk4LCA2MzMwMywgNjMzMDksIDYzMzE0LCA5OCwgMzA5MjUsIDYzMzI1LCAyNjI2NiwgMjYyNzYsIDYzMzMxLCA2MzMzOCwgCi0gICAgNjMzNDQsIDYzMzQ4LCA2MzM1OCwgNjMzNjksIDYzMzc3LCA2MzM4NiwgNjMzOTEsIDYzMzk2LCA2MzQwMCwgMTczMTcsIAotICAgIDYzNDA4LCA2MzQxMiwgNjM0MTgsIDYzNDI4LCA2MzQzNSwgNjM0NDEsIDM0ODA5LCA2MzQ0NywgNjM0NDksIDYzNDUyLCAKLSAgICA2MzQ1NiwgNjM0NjYsIDYzNDcyLCA2MzQ3OSwgMTMzMTUsIDYzNDg2LCA2MzQ5MiwgNjM1MDEsIDYzNTEwLCA2MzUxNiwgCi0gICAgNjM1MjIsIDYzNTI4LCA2MzUzMywgNjM1NDAsIDYzNTQ3LCA2MzU1MywgNjM1NjYsIDYzNTc1LCA2MzU4NCwgNjM1ODksIAotICAgIDYzNTkzLCA2MzU5OSwgNjM2MDYsIDYzNjEzLCA2MzYyMCwgNjM2MjcsIDYzNjM0LCA2MzYzOSwgNjM2NDMsIDYzNjQ3LCAKLSAgICA2MzY1MCwgNjM2NjAsIDYzNjY0LCA2MzY3NiwgNjM2ODUsIDYzNjg5LCA2MzY5NCwgNjM2OTgsIDYzNzA0LCA2MzcwOSwgCi0gICAgNjM3MTYsIDYzNzI1LCA2MzczMywgNjM3NDEsIDYzNzQ2LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCA2Mzc3MCwgNjM3NzgsIAotICAgIDYzNzgzLCA2Mzc4NywgNjM3OTEsIDYzNzk3LCA2MzgwOSwgNjM4MTcsIDYzODI3LCA2MzgzNCwgNjM4NDAsIDYzODQ1LCAKLSAgICA2Mzg0OSwgNjM4NTMsIDYzODU3LCA2Mzg2NiwgNjM4NzUsIDYzODg0LCA2Mzg5MCwgNjM4OTYsIDYzOTAyLCA2MzkwNywgCi0gICAgNjM5MTQsIDYzOTIwLCA2MzkyOCwgNjM5MzUsIDEyNDYzLCA2Mzk0MSwgNjM5NDcsIDYzOTUxLCAxNDI0NCwgNjM5NTUsIAotICAgIDYzOTYwLCA2Mzk3MCwgNjM5NzksIDYzOTg1LCA2Mzk5MSwgNjM5OTksIDY0MDA2LCA2NDAxMCwgNjQwMTQsIDY0MDIwLCAKLSAgICA2NDAyOCwgNjQwMzUsIDY0MDQxLCA2NDA1MiwgNjQwNTYsIDY0MDYwLCA2NDA2NCwgNjQwNjcsIDY0MDczLCA2NDA3OCwgCi0gICAgNjQwODIsIDY0MDg2LCA2NDA5NSwgNjQxMDMsIDY0MTEwLCA2NDExNiwgNjQxMjMsIDI0MDQ2LCAzODg3MCwgNjQxMjgsIAotICAgIDY0MTM2LCA2NDE0MCwgNjQxNDQsIDY0MTQ3LCA2NDE1NSwgNjQxNjIsIDY0MTY4LCA2NDE3NywgNjQxODUsIDY0MTkxLCAKLSAgICA2NDE5NiwgNjQyMDAsIDY0MjA1LCA2NDIwOSwgNjQyMTMsIDY0MjE4LCA2NDIyNywgNjQyMzEsIDY0MjM4LCA2NDI0NSwgCi0gICAgNjQyNTEsIDY0MjU5LCA2NDI2NSwgNjQyNzYsIDY0Mjg0LCA2NDI5MCwgMjI2NjksIDY0Mjk5LCA2NDMwNiwgNjQzMTMsIAotICAgIDY0MzIwLCA2NDMyNywgNjQzMzQsIDQxOTA3LCAxMzE1MywgNjQzNDEsIDY0MzQ4LCA2NDM1MywgMzQ4NDUsIDYyMTcsIAotICAgIDY0MzU5LCA2NDM2NCwgNjQzNjksIDY0Mzc1LCA2NDM4MSwgNjQzODcsIDY0MzkyLCA2NDM5NywgNjQ0MDIsIDY0NDA3LCAKLSAgICA2NDQxMywgNjQ0MTgsIDY0NDI0LCA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NSwgNjQ0NTAsIDY0NDU1LCA2NDQ2MCwgCi0gICAgNjQ0NjUsIDY0NDcwLCA2NDQ3NiwgNjQ0ODEsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIAotICAgIDY0NTE3LCA2NDUyMywgNjQ1MjgsIDY0NTMzLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCAKLSAgICA2NDU2OCwgNjQ1NzMsIDY0NTc5LCA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgCi0gICAgNjQ2MTksIDY0NjI1LCA2NDYzMCwgNjQ2MzUsIDY0NjQwLCA2NDY0NSwgNjQ2NTAsIDY0NjU1LCA2NDY2MCwgNjQ2NjUsIAotICAgIDY0NjcwLCA2NDY3NSwgNjQ2ODAsIDY0Njg1LCA2NDY5MSwgMTgzNCwgMjI0LCAzNzQ0NiwgNjQ2OTYsIDY0Njk5LCA2NDcwNCwgCi0gICAgNjQ3MDgsIDY0NzExLCA2NDcxNiwgNjM3MzcsIDY0NzI3LCA2NDczNywgNjQ3NDQsIDY0NzYwLCA2NDc2OSwgNjQ3NzksIAotICAgIDY0Nzg5LCA2NDc5NywgNjQ4MTEsIDY0ODE5LCA2NDgyMywgNjQ4MjYsIDY0ODMzLCA2NDgzOSwgNjQ4NTAsIDY0ODYyLCAKLSAgICA2NDg3MywgNjQ4ODIsIDY0ODg5LCAxMjk3LCAyMzMxMSwgNjQ4OTksIDI1OTAsIDY0OTAzLCA2NDkxMiwgMTEzOCwgMTcyOTAsIAotICAgIDM4MDgzLCA2NDkyMCwgNjQ5MjgsIDY0OTQyLCA2NDk1NSwgNjQ5NTksIDY0OTY0LCA2NDk2OSwgNjQ5NzQsIDY0OTgwLCAKLSAgICA2NDk4NiwgNjQ5OTEsIDg1MzUsIDY0OTk2LCA2NTAwMCwgNjUwMDgsIDExMDQ4LCA2NTAxMywgNjUwMTksIDY1MDI4LCAKLSAgICAxNzIxLCAxMTA2MCwgNzM2LCA2NTAzMiwgNjUwNDEsIDY1MDUxLCAyNzAzMCwgNjUwNjAsIDY1MDY2LCAxNjg2MiwgNjUwNzIsIAotICAgIDY1MDc2LCAzOTY0LCAxMTM5MSwgNjUwODIsIDY1MDg5LCA2MDY5MywgNjUwOTMsIDY1MDk3LCAzOTg4LCAxODksIDE0MTU5LCAKLSAgICA2NTEwMywgNjUxMTUsIDY1MTE5LCA2NTEyNSwgMjc3NTEsIDY1MTI5LCAxMTM3OSwgMjczMCwgNCwgNjUxMzQsIDY1MTQ0LCAKLSAgICA2NTE1MCwgNjUxNjEsIDY1MTY4LCA2NTE3NCwgNjUxODAsIDY1MTg4LCA2NTE5NSwgNjUyMDEsIDY1MjExLCA2NTIyMSwgCi0gICAgNjUyMzEsIDIzNDk5LCAxMzA5LCA2NTI0MCwgNjUyNDQsIDY1MjQ4LCA2NTI1NCwgNjUyNTgsIDI3NTMsIDI3NTksIDg1MzIsIAotICAgIDIyNjQsIDY1MjYyLCA2NTI2NiwgNjUyNzUsIDY1MjgzLCA2NTI5NCwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgNjUzMjEsIAotICAgIDY1MzMyLCA2NTM0MywgNjUzNTEsIDY1MzU3LCA5Njk0LCA2NTM2MiwgNjUzNzAsIDY1Mzc0LCA2NTM3OCwgNjUzODIsIAotICAgIDY1Mzk0LCAyODEzNiwgNjU0MDEsIDY1NDExLCA2NTQxNywgNjU0MjMsIDk3OTYsIDY1NDMzLCA2NTQ0NCwgNjU0NTQsIAotICAgIDY1NDYzLCA2NTQ2NywgNjU0NzQsIDExNDAsIDExNzAsIDY1NDg0LCA2NTQ4OSwgNjU0OTcsIDY1NTA1LCA2NTUxNiwgCi0gICAgNjU1MjMsIDY1NTM3LCAxNDA4OCwgMzkzLCA2NTU0NywgNjU1NTEsIDY1NTU5LCA2NTU2OCwgNjU1NzYsIDY1NTgyLCAKLSAgICA2NTU5NiwgNjU2MDMsIDY1NjA5LCA2NTYxOCwgNjU2MjUsIDY1NjM1LCA2NTY0MywgMzgxMiwgMTU2LCA2NTY1MSwgNjU2NjIsIAotICAgIDY1NjY2LCA2NTY3OCwgMjc5NDksIDE2MSwgNjU2ODQsIDY1Njg5LCA2NTY5MywgNjU3MDAsIDY1NzA2LCA2NTcxNCwgCi0gICAgNjU3MjEsIDg4MTgsIDY1NzI4LCA2NTczNywgNjU3NDUsIDM4NzgsIDY1NzU4LCA4MTk5LCA2NTc2MiwgMjc5OCwgNDQzLCAKLSAgICA2NTc2NywgNjU3ODAsIDY1Nzg1LCAxODMzLCA2NTAsIDY1Nzg5LCAzODk1LCA2NTc5NywgNjU4MDMsIDY1ODA3LCA5MzEsIAotICAgIDY1ODE3LCA2NTgyNiwgNjU4MzEsIDE0OTI4LCAxNDkzNSwgNDUyNjksIDY1ODM1LCAzODIyLCAxMzA0MSwgNjU4NDMsIAotICAgIDY1ODUwLCAyMzU1NSwgNjU4NTQsIDY1ODYxLCA2NTg2NywgNjU4NzIsIDY1ODc3LCAxNDk0OCwgMzcyLCA2NTg4MiwgCi0gICAgNjU4OTQsIDY1OTAwLCA2NTkwOCwgMjgxMCwgMTc1MywgNjU5MTYsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTMzLCAKLSAgICA2NTkzOSwgNjU5NDQsIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzUsIDY1OTgwLCA2NTk4NSwgCi0gICAgNjU5OTAsIDY1OTk1LCA2NjAwMCwgNjYwMDUsIDY2MDEwLCA2NjAxNSwgNjYwMjEsIDY2MDI2LCA2NjAzMSwgNjYwMzYsIAotICAgIDY2MDQyLCA2NjA0NywgNjYwNTMsIDY2MDU4LCA2NjA2MywgNjYwNjgsIDY2MDczLCA2NjA3OCwgNjYwODMsIDY2MDg4LCAKLSAgICA2NjA5NCwgNjYwOTksIDY2MTA1LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMzAsIDY2MTM1LCA2NjE0MCwgCi0gICAgNjYxNDUsIDY2MTUxLCA2NjE1NiwgNjYxNjEsIDY2MTY2LCA2NjE3MCwgNjYxNzQsIDY2MTc5LCA2NjE4MywgNjYxODgsIAotICAgIDY2MTkzLCA2NjE5OSwgNjYyMDQsIDY2MjA4LCA2NjIxMywgNjYyMTcsIDY2MjIwLCA2NjIyMiwgNjYyMjYsIDY2MjI5LCAKLSAgICA2NjIzNCwgNjYyMzgsIDY2MjQyLCA2NjI0NiwgNjYyNTAsIDY2MjU5LCA2NjI2MywgMzI1NDksIDY2MjY2LCAzMjU1NCwgCi0gICAgNjYyNzMsIDY2Mjc4LCAzMjU1OSwgNjYyODcsIDY2Mjk2LCAzMjU2NSwgNjYzMDEsIDMyNTcwLCA2NjMxMCwgNjYzMTUsIAotICAgIDExNTc4LCA2NjMxOSwgNjYzMjQsIDY2MzI5LCAzMjU3NSwgNjYzMzMsIDQwMjI1LCA2NjMzNywgNjYzNDAsIDY2MzQ0LCAKLSAgICA4MjExLCA2NjM1MCwgNjYzNTUsIDY2MzU5LCAzNzA1LCAzMjU4MCwgNjYzNjIsIDY2MzY2LCA2NjM2OSwgNjYzNzQsIAotICAgIDY2Mzc4LCA2NjM4NCwgNjYzOTIsIDY2NDA1LCA2NjQxNCwgNjY0MjAsIDY2NDI1LCA2NjQzMSwgNjY0MzUsIDY2NDQxLCAKLSAgICA2NjQ0OSwgNjY0NTQsIDY2NDU4LCA2NjQ2NSwgNjY0NzEsIDY2NDc5LCA2NjQ4OCwgNjY0OTYsIDMyNTgzLCA2NjUwMywgCi0gICAgNjY1MTMsIDY2NTIyLCA2NjUzNSwgNjY1NDAsIDY2NTQ1LCA2NjU1NCwgNjY1NjAsIDY2NTY3LCA2NjU3OCwgNjY1OTAsIAotICAgIDY2NTk3LCA2NjYwNiwgNjY2MTUsIDY2NjI0LCA2NjYzMSwgNjY2MzcsIDY2NjQ0LCA2NjY1MiwgNjY2NTksIDY2NjY3LCAKLSAgICA2NjY3NiwgNjY2ODQsIDY2NjkxLCA2NjY5OSwgNjY3MDgsIDY2NzE2LCA2NjcyNSwgNjY3MzUsIDY2NzQ0LCA2Njc1MiwgCi0gICAgNjY3NTksIDY2NzY3LCA2Njc3NiwgNjY3ODQsIDY2NzkzLCA2NjgwMywgNjY4MTIsIDY2ODIwLCA2NjgyOSwgNjY4MzksIAotICAgIDY2ODQ4LCA2Njg1OCwgNjY4NjksIDY2ODc5LCA2Njg4OCwgNjY4OTYsIDY2OTAzLCA2NjkxMSwgNjY5MjAsIDY2OTI4LCAKLSAgICA2NjkzNywgNjY5NDcsIDY2OTU2LCA2Njk2NCwgNjY5NzMsIDY2OTgzLCA2Njk5MiwgNjcwMDIsIDY3MDEzLCA2NzAyMywgCi0gICAgNjcwMzIsIDY3MDQwLCA2NzA0OSwgNjcwNTksIDY3MDY4LCA2NzA3OCwgNjcwODksIDY3MDk5LCA2NzEwOCwgNjcxMTgsIAotICAgIDY3MTI5LCA2NzEzOSwgNjcxNTAsIDY3MTYyLCA2NzE3MywgNjcxODMsIDY3MTkyLCA2NzIwMCwgNjcyMDcsIDY3MjE1LCAKLSAgICA2NzIyNCwgNjcyMzIsIDY3MjQxLCA2NzI1MSwgNjcyNjAsIDY3MjY4LCA2NzI3NywgNjcyODcsIDY3Mjk2LCA2NzMwNiwgCi0gICAgNjczMTcsIDY3MzI3LCA2NzMzNiwgNjczNDQsIDY3MzUzLCA2NzM2MywgNjczNzIsIDY3MzgyLCA2NzM5MywgNjc0MDMsIAotICAgIDY3NDEyLCA2NzQyMiwgNjc0MzMsIDY3NDQzLCA2NzQ1NCwgNjc0NjYsIDY3NDc3LCA2NzQ4NywgNjc0OTYsIDY3NTA0LCAKLSAgICA2NzUxMywgNjc1MjMsIDY3NTMyLCA2NzU0MiwgNjc1NTMsIDY3NTYzLCA2NzU3MiwgNjc1ODIsIDY3NTkzLCA2NzYwMywgCi0gICAgNjc2MTQsIDY3NjI2LCA2NzYzNywgNjc2NDcsIDY3NjU2LCA2NzY2NiwgNjc2NzcsIDY3Njg3LCA2NzY5OCwgNjc3MTAsIAotICAgIDY3NzIxLCA2NzczMSwgNjc3NDIsIDY3NzU0LCA2Nzc2NSwgNjc3NzcsIDY3NzkwLCA2NzgwMiwgNjc4MTMsIDY3ODIzLCAKLSAgICA2NzgzMiwgNjc4NDAsIDY3ODQ3LCA2Nzg1NSwgNjc4NjQsIDY3ODcyLCA2Nzg4MSwgNjc4OTEsIDY3OTAwLCA2NzkwOCwgCi0gICAgNjc5MTcsIDY3OTI3LCA2NzkzNiwgNjc5NDYsIDY3OTU3LCA2Nzk2NywgNjc5NzYsIDY3OTg0LCA2Nzk5MywgNjgwMDMsIAotICAgIDY4MDEyLCA2ODAyMiwgNjgwMzMsIDY4MDQzLCA2ODA1MiwgNjgwNjIsIDY4MDczLCA2ODA4MywgNjgwOTQsIDY4MTA2LCAKLSAgICA2ODExNywgNjgxMjcsIDY4MTM2LCA2ODE0NCwgNjgxNTMsIDY4MTYzLCA2ODE3MiwgNjgxODIsIDY4MTkzLCA2ODIwMywgCi0gICAgNjgyMTIsIDY4MjIyLCA2ODIzMywgNjgyNDMsIDY4MjU0LCA2ODI2NiwgNjgyNzcsIDY4Mjg3LCA2ODI5NiwgNjgzMDYsIAotICAgIDY4MzE3LCA2ODMyNywgNjgzMzgsIDY4MzUwLCA2ODM2MSwgNjgzNzEsIDY4MzgyLCA2ODM5NCwgNjg0MDUsIDY4NDE3LCAKLSAgICA2ODQzMCwgNjg0NDIsIDY4NDUzLCA2ODQ2MywgNjg0NzIsIDY4NDgwLCA2ODQ4OSwgNjg0OTksIDY4NTA4LCA2ODUxOCwgCi0gICAgNjg1MjksIDY4NTM5LCA2ODU0OCwgNjg1NTgsIDY4NTY5LCA2ODU3OSwgNjg1OTAsIDY4NjAyLCA2ODYxMywgNjg2MjMsIAotICAgIDY4NjMyLCA2ODY0MiwgNjg2NTMsIDY4NjYzLCA2ODY3NCwgNjg2ODYsIDY4Njk3LCA2ODcwNywgNjg3MTgsIDY4NzMwLCAKLSAgICA2ODc0MSwgNjg3NTMsIDY4NzY2LCA2ODc3OCwgNjg3ODksIDY4Nzk5LCA2ODgwOCwgNjg4MTgsIDY4ODI5LCA2ODgzOSwgCi0gICAgNjg4NTAsIDY4ODYyLCA2ODg3MywgNjg4ODMsIDY4ODk0LCA2ODkwNiwgNjg5MTcsIDY4OTI5LCA2ODk0MiwgNjg5NTQsIAotICAgIDY4OTY1LCA2ODk3NSwgNjg5ODYsIDY4OTk4LCA2OTAwOSwgNjkwMjEsIDY5MDM0LCA2OTA0NiwgNjkwNTcsIDY5MDY5LCAKLSAgICA2OTA4MiwgNjkwOTQsIDY5MTA3LCA2OTEyMSwgNjkxMzQsIDY5MTQ2LCA2OTE1NywgNjkxNjcsIDY5MTc2LCA2OTE4NCwgCi0gICAgNjkxOTEsIDY5MTk2LCA4MDU4LCA2OTIwMywgMzI1OTMsIDY5MjA4LCA2OTIxMywgMzI1OTgsIDY5MjE5LCAyMDkyOSwgCi0gICAgMzI2MDMsIDY5MjI0LCA2OTIzMCwgNjkyMzgsIDY5MjQ0LCA2OTI1MCwgNjkyNTcsIDY5MjY0LCA2OTI2OSwgNjkyNzMsIAotICAgIDY5Mjc2LCA2OTI4MCwgNjkyODksIDY5Mjk1LCA2OTMwNywgNjkzMTgsIDY5MzIyLCAzMDgxLCA4MDMzLCA2OTMyNywgCi0gICAgNjkzMzAsIDY5MzMyLCA2OTMzNiwgNjkzNDAsIDY5MzQ0LCA2OTM1MCwgNjkzNTUsIDI1OTQ0LCA2OTM2MCwgNjkzNjQsIAotICAgIDY5MzY3LCA2OTM3MiwgNjkzNzYsIDY5MzgzLCA2OTM4OSwgNjkzOTMsIDYxNzAsIDY5Mzk3LCAzMjYyMCwgNjk0MDIsIAotICAgIDY5NDA5LCA2OTQxOCwgNjk0MjYsIDY5NDM3LCA2OTQ0NSwgNjk0NTMsIDY5NDYwLCA2OTQ2NywgNjk0NzMsIDY5NDg0LCAKLSAgICAzMjYyNSwgNjk0ODksIDY5NTAwLCA2OTUxMiwgNjk1MjAsIDY5NTMxLCA2OTU0MCwgNjk1NTEsIDY5NTU2LCA2OTU2NCwgCi0gICAgMjU1NiwgNjk1NjksIDM0Mjk1LCA2OTU4MiwgNjk1ODYsIDY5NTk4LCA2OTYwNiwgNjk2MTEsIDY5NjE5LCAxNzQ4NSwgCi0gICAgNjk2MzAsIDY5NjM2LCA2OTY0MywgNjk2NTEsIDY5NjU3LCAzMjYzNSwgNjk2NjIsIDM5MTQsIDU4MjU0LCA2OTY2OSwgCi0gICAgNjk2NzIsIDY5NjgwLCA2OTY5MywgNjk3MDYsIDY5NzE5LCA2OTczMiwgNjk3MzksIDY5NzUwLCA2OTc1OSwgNDE3MjQsIAotICAgIDQxNzI5LCA2OTc2NCwgNjk3NjgsIDY5Nzc2LCA2OTc4MywgNjk3OTIsIDY5ODAwLCA2OTgwNiwgNjk4MTUsIDY5ODIzLCAKLSAgICA2OTgzMSwgNjk4MzUsIDY5ODQ0LCA2OTg1MywgNjk4NjMsIDY5ODc2LCA2OTg4OSwgNjk4OTksIDMyNjQwLCA2OTkwNSwgCi0gICAgNjk5MTIsIDY5OTE4LCAzMjY0NiwgNjk5MjMsIDY5OTI2LCA2OTkzMCwgNjk5MzgsIDY5OTQ3LCA0MTQ2MiwgNjk5NTUsIAotICAgIDY5OTY0LCA2OTk3MiwgNjk5NzksIDY5OTg3LCA2OTk5NywgNzAwMDYsIDcwMDE1LCA3MDAyNCwgNzAwMzIsIDcwMDQzLCAKLSAgICA3MDA1MywgOTM2NiwgMjE1NjcsIDcwMDYyLCA3MDA2NywgNzAwNzIsIDcwMDc2LCA3MDA4MCwgNzAwODUsIDcwMDkxLCAKLSAgICA3MDA5NiwgNzAxMDEsIDcwMTA3LCA3MDExMiwgNzAxMTcsIDIxNTMyLCA3MDEyMiwgNzAxMjksIDcwMTM3LCA3MDE0NSwgCi0gICAgNzAxNTAsIDcwMTU3LCA3MDE2NCwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODUsIDcwMTkzLCAzMjY2MywgNzAxOTksIAotICAgIDcwMjA1LCA3MDIxNywgNzAyMjMsIDcwMjI3LCA3MDIzNCwgNzAyMzksIDcwMjUwLCA3MDI2MCwgNzAyNzAsIDcwMjgyLCAKLSAgICA3MDI4OCwgNzAyOTgsIDcwMzA4LCAzMjY5MCwgNzAzMTcsIDcwMzI2LCA3MDMzMiwgNzAzNDQsIDcwMzU1LCA3MDM2MiwgCi0gICAgNzAzNjcsIDcwMzcxLCA3MDM3OSwgNzAzODUsIDcwMzkwLCA3MDM5NSwgNzA0MDIsIDcwNDEwLCA3MDQyMiwgNzA0MzIsIAotICAgIDcwNDQxLCA3MDQ1MCwgNzA0NTcsIDM0MTU3LCAyMzg1MSwgNzA0NjMsIDcwNDY4LCA3MDQ3MiwgNzA0NzYsIDcwNDgxLCAKLSAgICA3MDQ4NywgNzA0OTgsIDcwNTExLCA3MDUxNiwgNzA1MjMsIDMyNjk1LCA3MDUyOCwgNzA1NDAsIDcwNTQ5LCA3MDU1OSwgCi0gICAgNzA1NzAsIDcwNTgzLCA3MDU5MCwgNzA1OTksIDcwNjA4LCA3MDYxNiwgNzA2MjEsIDcwNjI3LCAxMDY5LCA3MDYzMiwgCi0gICAgNzA2MzcsIDcwNjQyLCA3MDY0NywgNzA2NTMsIDcwNjU4LCA3MDY2MywgNzA2NjksIDcwNjc1LCA3MDY4MCwgNzA2ODQsIAotICAgIDcwNjg5LCA3MDY5NCwgNzA2OTksIDU4NzY2LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcxOSwgNzA3MjUsIDcwNzMxLCAKLSAgICA3MDczNiwgNzA3NDAsIDcwNzQ1LCA3MDc1MCwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzIsIDcwNzc3LCA3MDc4MiwgCi0gICAgNzA3ODcsIDcwNzkyLCA3MDc5NiwgNzA4MDIsIDcwODA3LCA3MDgxNiwgNzA4MjEsIDcwODI2LCA3MDgzMSwgNzA4MzYsIAotICAgIDcwODQwLCA3MDg0NywgNzA4NTMsIDE3MTM1LCAxNzE0MiwgNzA4NTgsIDcwODYyLCA3MDg2NiwgNzA4NzAsIDcwODc0LCAKLSAgICA0NTUyNCwgNzA4NzgsIDcwODA4LCA3MDg4MCwgNzA4OTAsIDMyNzA0LCA3MDg5MywgNzA5MDIsIDcwOTA4LCA2MTQzLCAKLSAgICAzMjcwOSwgNzA5MTIsIDcwOTE4LCA3MDkyMywgNzA5MjksIDcwOTM0LCA3MDkzOCwgNzA5NDUsIDcwOTUwLCA3MDk2MCwgCi0gICAgNzA5NjksIDcwOTczLCA3MDk3OSwgNzA5ODUsIDcwOTkxLCA3MDk5NSwgNzEwMDMsIDcxMDEwLCA3MTAxOCwgNzEwMjYsIAotICAgIDMyNzE0LCA3MTAzMywgNzEwMzYsIDcxMDQzLCA3MTA0OSwgNzEwNTQsIDcxMDU4LCA3MTA2NCwgNzEwNzEsIDcxMDc2LCAKLSAgICA3MTA4MCwgNzEwODksIDcxMDk3LCA3MTEwMywgNzExMDgsIDMyNzE5LCA3MTExNSwgNzExMjIsIDcxMTI4LCA3MTEzMywgCi0gICAgNzExMzksIDcxMTQ2LCA3MTE1MiwgMjEyOTQsIDI3NDU1LCA3MTE1OCwgNzExNjMsIDcxMTY5LCA3MTE4MSwgNzA4NDEsIAotICAgIDcwODQ4LCAyMTQ3MCwgNzExOTEsIDcxMTk2LCA3MTIwMywgNzEyMDksIDcxMjE2LCA3MTIyMiwgNzEyMzMsIDcxMjM4LCAKLSAgICA5MTEwLCA3MTI0NiwgNzEyNDksIDcxMjU1LCA3MTI1OSwgNzEyNjMsIDcxMjY2LCA3MTI3MiwgMzI0NjgsIDYxOTQsIDk2NCwgCi0gICAgMTM0MTksIDcxMjc5LCA3MTI4NSwgNzEyOTEsIDcxMjk3LCA3MTMwMywgNzEzMDksIDcxMzE1LCA3MTMyMSwgNzEzMjcsIAotICAgIDcxMzMyLCA3MTMzNywgNzEzNDIsIDcxMzQ3LCA3MTM1MiwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzIsIDcxMzc3LCAKLSAgICA3MTM4MiwgNzEzODcsIDcxMzkyLCA3MTM5OCwgNzE0MDMsIDcxNDA4LCA3MTQxNCwgNzE0MTksIDcxNDI0LCA3MTQzMCwgCi0gICAgNzE0MzYsIDcxNDQyLCA3MTQ0OCwgNzE0NTQsIDcxNDYwLCA3MTQ2NiwgNzE0NzIsIDcxNDc4LCA3MTQ4MywgNzE0ODgsIAotICAgIDcxNDk0LCA3MTQ5OSwgNzE1MDQsIDcxNTEwLCA3MTUxNSwgNzE1MjAsIDcxNTI1LCA3MTUzMCwgNzE1MzUsIDcxNTQwLCAKLSAgICA3MTU0NSwgNzE1NTAsIDcxNTU1LCA3MTU2MCwgNzE1NjUsIDcxNTcwLCA3MTU3NiwgNzE1ODEsIDcxNTg2LCA3MTU5MSwgCi0gICAgNzE1OTcsIDcxNjAyLCA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMywgNzE2MjgsIDcxNjMzLCA3MTYzOCwgNzE2NDMsIAotICAgIDcxNjQ4LCA3MTY1MywgNzE2NTgsIDcxNjYzLCA3MTY2OCwgNzE2NzMsIDcxNjc4LCA3MTY4MywgNzE2ODgsIDcxNjkzLCAKLSAgICA3MTY5OCwgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MTgsIDcxNzI0LCA3MTcyOSwgNzE3MzQsIDcxNzM5LCA3MTc0NCwgCi0gICAgNzE3NDksIDcxNzU0LCA3MTc1OSwgMTg2NCwgMTQyLCA3MTc2NCwgNzE3NjgsIDcxNzcyLCA3MTc3NywgNzE3ODUsIDcxNzg5LCAKLSAgICA3MTc5NiwgNzE4MDQsIDcxODA4LCA3MTgyMSwgNzE4MjksIDcxODMzLCA3MTgzNiwgNzE4NDEsIDcxODQ1LCA3MTg1MCwgCi0gICAgNzE4NTQsIDcxODYyLCA3MTg2NiwgMjA5MzcsIDcxODcxLCA3MTg3NSwgNjA5NjcsIDcxODc5LCA3MTg4MiwgNzE4OTAsIAotICAgIDcxODk4LCA3MTkwNiwgNzE5MTEsIDcxOTE4LCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MiwgNzE5NDcsIDcxOTU1LCAKLSAgICA2NDk0NywgNzE5NjIsIDcxOTY3LCA3MTk3MiwgNzE5NzYsIDExNjQ1LCA3MTk4MCwgNzE5ODUsIDcxOTkwLCA3MTk5NCwgCi0gICAgNzE5OTcsIDcyMDAzLCA3MjAwNywgNzIwMTcsIDcyMDI2LCA3MjAyOSwgNzIwMzMsIDcyMDQwLCA3MjA1MywgNzIwNTksIAotICAgIDcyMDY3LCA3MjA3OCwgNzIwODksIDcyMTAwLCA3MjExMSwgNzIxMjAsIDcyMTI2LCA3MjEzNSwgNzIxNDMsIDcyMTUzLCAKLSAgICA3MjE2NiwgNzIxNzMsIDcyMTg0LCA3MjE5MCwgNzIxOTUsIDcyMjAwLCA3MjIwNiwgNzIyMTIsIDcyMjIyLCA3MjIzMSwgCi0gICAgNzA1MzAsIDcyMjM5LCA3MjI0NSwgNzIyNTMsIDcyMjU5LCA3MjI2NywgNzIyNzAsIDcyMjc0LCA3MjI3OCwgNzIyODEsIAotICAgIDcyMjg3LCA3MjI5MywgNzIzMDEsIDcyMzEzLCA3MjMyNSwgNzIzMzIsIDcyMzM2LCA3MjM0NywgNzIzNTUsIDcyMzYyLCAKLSAgICA3MjM3NCwgNzIzODIsIDcyMzkwLCA3MjM5NywgNzI0MDMsIDcyNDEzLCA3MjQyMiwgNzI0MjcsIDcyNDM3LCA3MjQ0NiwgCi0gICAgNDA3ODgsIDcyNDUzLCA3MjQ1NywgNzI0NjIsIDcyNDcwLCA3MjQ3NywgNzI0ODMsIDcyNDg3LCA3MjQ5NywgNzI1MDgsIAotICAgIDcyNTE2LCA3MjUyMywgNzI1MzUsIDcyNTQ3LCA3MjU1NiwgNjk1NzIsIDcyNTYzLCA3MjU3NCwgNzI1ODgsIDcyNTk2LCAKLSAgICA3MjYwNiwgNzI2MTMsIDcyNjIxLCA3MjYzMywgNzI2NDIsIDcyNjUwLCA3MjY2MCwgNzI2NzEsIDcyNjgzLCA3MjY5MiwgCi0gICAgNzI3MDIsIDcyNzA5LCA3MjcxOCwgNzI3MzMsIDcyNzQxLCA3Mjc1MSwgNzI3NjAsIDcyNzY4LCA3Mjc4MSwgNzI3OTYsIAotICAgIDcyODAwLCA3MjgwOSwgNzI4MjEsIDcyODMyLCA3Mjg0MywgNzI4NTQsIDcyODY0LCA3Mjg3NSwgNzI4ODMsIDcyODg5LCAKLSAgICA3Mjg5OSwgNzI5MDcsIDcyOTEzLCAyOTAyOCwgNzI5MTgsIDcyOTI0LCA3MjkyOSwgNzI5MzYsIDk3MDgsIDE3NTA1LCAKLSAgICA3Mjk0MiwgNzI5NTEsIDcyOTU2LCA3Mjk2MCwgNzI5NjcsIDcyOTczLCA3Mjk3OCwgNzI5ODMsIDcyOTkxLCA3Mjk5OSwgCi0gICAgNzMwMDMsIDczMDA2LCA3MzAwOSwgNzMwMTEsIDczMDE4LCA3MzAyNCwgNzMwMzUsIDczMDQwLCA3MzA0NCwgNzMwNTEsIAotICAgIDczMDU3LCA3MzA2MiwgNzMwNzAsIDY1NDQ2LCA2NTQ1NiwgNzMwNzYsIDczMDgzLCA3MzA5MywgMTA2MTgsIDczMTAwLCAKLSAgICA3MzEwNSwgMjkyMjQsIDczMTE0LCA3MzExOSwgNzMxMjYsIDczMTM2LCA3MzE0NCwgNzMxNTIsIDczMTYxLCA3MzE2NywgCi0gICAgNzMxNzMsIDczMTgwLCA3MzE4NywgNzMxOTIsIDczMTk2LCA3MzIwNCwgNzMyMDksIDczMjE0LCA3MzIyMiwgNzMyMjksIAotICAgIDczMjM0LCA3MzI0MCwgNzMyNDMsIDczMjQ3LCA3MzI1NiwgNzE4MTYsIDczMjY1LCA3MzI2OSwgNzMyNzUsIDczMjg2LCAKLSAgICA3MzI5NiwgMTc1MTQsIDczMzA3LCA3MzMxNSwgMTc1MjYsIDczMzIyLCA3MzMyNiwgNzMzMzUsIDI3MzQxLCA3MzM0MiwgCi0gICAgNzMzNDYsIDczMzUxLCA3MzM2OCwgNzMzODAsIDEwNTc2LCA3MzM5MiwgNzMzOTcsIDczNDAyLCA3MzQwNywgMjEwMTAsIAotICAgIDczNDExLCA3MzQxNiwgNzM0MjEsIDczNDI3LCA3MzQzMiwgNTg0NiwgMjEwMTQsIDczNDM3LCA3MzQ0MiwgNzM0NDgsIAotICAgIDczNDU1LCA3MzQ2MCwgNzM0NjUsIDczNDcxLCA3MzQ3NywgNzM0ODMsIDczNDg4LCA3MzQ5NCwgNzM0OTgsIDczNTEyLCAKLSAgICA3MzUyMCwgNzM1MjgsIDczNTM0LCA3MzUzOSwgNzM1NDYsIDczNTU2LCA3MzU2NSwgNzM1NzAsIDczNTc1LCA3MzU4MywgCi0gICAgNzM1ODgsIDczNTk0LCA3MzU5OSwgNzM2MDgsIDU5ODIzLCA3MzYxMywgNzM2MTYsIDczNjM0LCA3MzY1MywgNzM2NjYsIAotICAgIDczNjgwLCA3MzY5NiwgNzM3MDMsIDczNzEwLCA3MzcxNiwgNzM3MjMsIDczNzI4LCA3MzczNCwgNzM3NDAsIDczNzQ4LCAKLSAgICA3Mzc1NCwgNzM3NTksIDczNzY0LCA3Mzc4MCwgMTA1ODksIDczNzk0LCA3MzgwMSwgNzM4MDksIDczODE1LCA3MzgxOSwgCi0gICAgNzM4MjIsIDczODI3LCA3MzgzMiwgNzM4MzksIDczODQ0LCA3Mzg1MywgNzM4NTgsIDczODY0LCA3Mzg3MywgNzM4ODIsIAotICAgIDczODg3LCA3Mzg5MSwgNzM4OTksIDczOTA4LCAxMTY3NCwgNzM5MTcsIDczOTI1LCA3MzkzMCwgNzM5MzYsIDExNjg1LCAKLSAgICA3Mzk0MSwgNzM5NDQsIDczOTQ5LCA3Mzk1OSwgNzM5NjgsIDczOTczLCA3Mzk3OSwgNzM5ODQsIDczOTkyLCA3Mzk5OSwgCi0gICAgNzQwMTAsIDc0MDIwLCA3NDAyNSwgNjQ4NzUsIDc0MDMwLCA3NDAzNiwgNzQwNDEsIDc0MDQ4LCA3NDA1NywgNzQwNjUsIAotICAgIDc0MDcxLCA3NDA3NywgNzQwODQsIDc0MDkwLCA3NDA5NCwgMTY5NjAsIDMwNTUsIDc0MDk5LCA3NDEwMywgNzQxMDcsIAotICAgIDc0MTEzLCA3NDEyMiwgNzQxMjgsIDc0MTM1LCA3NDEzOSwgNzQxNjAsIDc0MTgyLCA3NDE5OCwgNzQyMTUsIDc0MjM0LCAKLSAgICA3NDI0MywgNzQyNTMsIDc0MjYwLCA3NDI2NywgMjcyMjgsIDc0MjczLCA3NDI3NywgNzQyODUsIDc0Mjk3LCA3NDMwMywgCi0gICAgNzQzMTEsIDc0MzE1LCA3NDMyMywgNzQzMzAsIDc0MzM0LCA3NDM0MCwgNzQzNDYsIDc0MzUxLCAzNTYzLCA0MTkyNCwgCi0gICAgNzQzNTcsIDc0MzYxLCA3NDM2NSwgNzQzNjksIDc0Mzc0LCA3NDM3OSwgNzQzODQsIDc0MzkwLCA3NDM5NiwgNzQ0MDIsIAotICAgIDc0NDA5LCA3NDQxNSwgNzQ0MjIsIDc0NDI4LCA3NDQzNCwgNzQ0MzksIDc0NDQ1LCA3NDQ1MCwgNzQ0NTQsIDc0NDU5LCAKLSAgICA3NDQ2MywgNzQ0NjgsIDQxOTM5LCA3NDQ3MiwgNzQ0NzcsIDc0NDg1LCA3NDQ4OSwgNzQ0OTQsIDc0NTAxLCA3NDUxMCwgCi0gICAgNzQ1MTYsIDc0NTIwLCA3NDUyNywgNzQ1MzEsIDc0NTM0LCA3NDU0MSwgNzQ1NTAsIDc0NTU1LCA3NDU1OSwgNzQ1NjcsIAotICAgIDc0NTc2LCA3NDU4MCwgNzQ1ODgsIDc0NTk0LCA3NDU5OSwgNzQ2MDQsIDc0NjEwLCA3NDYxNiwgNzQ2MjEsIDc0NjI1LCAKLSAgICA3NDYzMSwgNzQ2MzYsIDc0NjQwLCA3NDY0NCwgNzQ2NDcsIDc0NjUyLCA3NDY2MCwgNzQ2NzAsIDc0Njc1LCAzOTQxNiwgCi0gICAgNzQ2ODMsIDc0Njk1LCA3NDY5OSwgNzQ3MDUsIDc0NzE3LCA3NDcyOCwgNzQ3MzUsIDc0NzQxLCA3NDc0OCwgNzQ3NjAsIAotICAgIDc0NzY3LCA3NDc3MywgMjEwODgsIDc0Nzc3LCA3NDc4MywgNzQ3OTAsIDc0Nzk2LCA3NDgwMiwgNzQ4MDcsIDc0ODEyLCAKLSAgICA3NDgxNywgNzQ4MjYsIDcwMzMsIDc0ODMxLCAxNjQyNiwgNzQ4MzcsIDc0ODQxLCA3NDg0NSwgNzQ4NDksIDc0ODU3LCAKLSAgICA3NDg2NiwgNzQ4NzAsIDc0ODc3LCA3NDg4NiwgNzQ4OTksIDc0OTA1LCA3NDQ2NCwgMzAwODgsIDc0OTEwLCA3NDkxMiwgCi0gICAgNzQ5MTcsIDc0OTIyLCA3NDkyNywgNzQ5MzIsIDc0OTM3LCA3NDk0MiwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIAotICAgIDc0OTY3LCA3NDk3MiwgNzQ5NzcsIDc0OTgyLCA3NDk4OCwgNzQ5OTMsIDc0OTk4LCA3NTAwMywgNzUwMDgsIDc1MDEzLCAKLSAgICA3NTAxOCwgNzUwMjMsIDc1MDI4LCA3NTAzNCwgNzUwNDAsIDc1MDQ2LCA3NTA1MSwgNzUwNTYsIDc1MDY4LCA3NTA3MywgCi0gICAgMTg3MCwgNDYsIDc1MDc4LCA3NTA4MywgMzI3NDYsIDc1MDg3LCAzMjc1MSwgMzI3NTYsIDMyNzYyLCAzMjc2NywgNzUwOTEsIAotICAgIDMyNzcyLCAyMjA4MywgNzUxMTMsIDc1MTE3LCA3NTEyMSwgNzUxMjYsIDc1MTMwLCAzMjc3NiwgNzUxMzQsIDc1MTQyLCAKLSAgICAzMjc4MSwgNzUxNDksIDc1MTUyLCA3NTE1NywgNzUxNjEsIDk1NDMsIDc1MTcwLCAzMjc4NiwgMjE5NDUsIDc1MTczLCAKLSAgICA3NTE3NywgMTQyOCwgNzUxODIsIDMyNzk3LCA3NTE4NSwgNzUxOTAsIDI1NzM3LCAyNTc0NywgMzUyNTgsIDc1MTk1LCAKLSAgICA3NTIwMCwgNzUyMDUsIDc1MjEwLCA3NTIxNiwgNzUyMjEsIDc1MjMwLCA3NTIzNSwgNzUyNDIsIDc1MjQ4LCA3NTI1MywgCi0gICAgNzUyNTgsIDc1MjYzLCA3NTI3MywgNzUyODIsIDc1Mjg3LCA3NTI5NSwgNzUyOTksIDc1MzA3LCAzMjYxMSwgMzczMTcsIAotICAgIDc1MzE0LCA3NTMyMCwgNzUzMjUsIDc1MzMwLCAxMjAxNiwgNzUzMzUsIDc1MzQxLCA3NTM0NiwgNzUzNTMsIDc1MzU5LCAKLSAgICA3NTM2NCwgNzUzNzIsIDc1MzgyLCA3NTM5MiwgNzUzOTgsIDc1NDAzLCA3NTQwOSwgMTc1MzYsIDc1NDE2LCAzNjA3MywgCi0gICAgNzU0MjksIDc1NDM0LCA3NTQ0MCwgMzA5OTMsIDc1NDUzLCA3NTQ1OSwgNzU0NjMsIDc1NDcyLCA3NTQ3OSwgNzU0ODUsIAotICAgIDc1NDkzLCA3NTUwMiwgNzU1MDksIDc1NTE1LCA3NTUxOCwgNzU1MjIsIDI1ODc4LCA3NTUyNiwgNzU1MzMsIDc1NTM5LCAKLSAgICA3NTU0NywgNzU1NTIsIDIzOTk0LCA3NTU1OCwgNzU1NjEsIDc1NTY5LCA3NTU3NywgNzU1OTEsIDc1NTk4LCA3NTYwNCwgCi0gICAgNzU2MTEsIDc1NjE3LCAzMjgxMSwgNzU2MjEsIDc1NjI4LCA3NTYzNiwgNzU2NDQsIDc1NjUwLCAzMjgxNiwgNzU2NTgsIAotICAgIDc1NjY0LCA3NTY2OSwgNzU2NzksIDc1Njg1LCA3NTY5NCwgMzA4MzAsIDM0NzE2LCA3NTcwMiwgNzU3MDcsIDc1NzEyLCAKLSAgICA3NTcxNiwgNzU3MjEsIDc1NzI1LCA3NTczMywgMTQ5MjAsIDM5NDI5LCA3NTczOCwgNzU3NDMsIDMyODIxLCA2MjI2OSwgCi0gICAgNzU3NDcsIDc1NzUyLCA3NTc1NiwgNzU3NjUsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDc1NzkwLCA3NTc5NywgNzU4MDMsIAotICAgIDc1ODA4LCA3NTgxMywgNzU4MjIsIDc1ODM0LCA3NTg0OSwgMzMwODMsIDc1ODU1LCAxNjU0NSwgMzI4MjUsIDc1ODU5LCAKLSAgICA3NTg2NiwgMjQxMDQsIDc1ODcyLCA3NTg3OSwgNzU4ODgsIDc1ODk1LCA3NTkwNCwgNzU5MTAsIDc1OTE1LCA3NTkyMywgCi0gICAgNzU5MjksIDMyODM1LCA3NTkzNCwgNzU5NDMsIDc0NzIzLCA3NTk1MiwgNzU5NTksIDc1OTY1LCA3NTk3MSwgNzU5ODEsIAotICAgIDc1OTg5LCA3NTk5NiwgNzYwMDAsIDMyODQwLCA3NjAwMywgMzI4NDYsIDMyODUyLCA3NjAwOCwgNzYwMTYsIDc2MDI0LCAKLSAgICA3NjAzNCwgNzYwNDMsIDc2MDUxLCA3NjA1OCwgNzYwNjgsIDMyODU3LCA3NjA3MiwgNzYwNzQsIDc2MDc4LCA3NjA4MywgCi0gICAgNzYwODcsIDc2MDkxLCA3NjA5NywgNzYxMDIsIDc2MTA2LCA3NjExNywgNzYxMjIsIDc2MTI3LCAzMDYwLCA3NjEzMSwgCi0gICAgNzYxMzgsIDc2MTQyLCA3NjE1MSwgNzYxNTksIDc2MTY2LCA3NjE3MSwgNzYxNzYsIDYyMzE1LCA3NjE4MCwgNzYxODMsIAotICAgIDc2MTg5LCA3NjE5NywgNzYyMDMsIDc2MjA3LCA3NjIxMiwgNzYyMTksIDc2MjI0LCA3NjIzMCwgMzQ3NDcsIDc2MjM1LCAKLSAgICA3NjIzOCwgNzYyNDMsIDc2MjQ3LCA3NjI1MiwgNzYyNTcsIDc2MjYxLCA3NjI2OSwgNzYyNzMsIDI1NzU2LCAyNTc2NSwgCi0gICAgNzYyNzksIDc2Mjg1LCA3NjI5MSwgNzYyOTYsIDc2MzAwLCA3NjMwMywgNzYzMTMsIDc2MzIyLCA3NjMyNywgNzYzMzMsIAotICAgIDc2MzQwLCA3NjM0NiwgNzYzNTAsIDc2MzU4LCA3NjM2MywgMzQ3NTMsIDc2MzY3LCA3NjM3NSwgNzYzODEsIDc2Mzg4LCAKLSAgICA3NjM5MywgNzYzOTcsIDc2NDAyLCA1ODQ0MCwgMzQ3NTksIDc2NDA4LCA3NjQxMywgNzY0MTcsIDc2NDIyLCA3NjQyNywgCi0gICAgNzY0MzIsIDc2NDM2LCA3NjQ0MSwgNzY0NDYsIDc2NDUyLCA3NjQ1NywgNzY0NjIsIDc2NDY4LCA3NjQ3NCwgNzY0NzksIAotICAgIDc2NDgzLCA3NjQ4OCwgNzY0OTMsIDc2NDk4LCA3NjUwMiwgMjQxMDMsIDc2NTA3LCA3NjUxMiwgNzY1MTgsIDc2NTI0LCAKLSAgICA3NjUzMCwgNzY1MzUsIDc2NTM5LCA3NjU0NCwgNzY1NDksIDc2NTU0LCA3NjU1OCwgNzY1NjMsIDc2NTY4LCA3NjU3MywgCi0gICAgNzY1NzgsIDc2NTgyLCAzMjg2NSwgNzY1OTAsIDc2NTk0LCA3NjYwMiwgNzY2MTAsIDc2NjIxLCA3NjYyNiwgNzY2MzAsIAotICAgIDIyMzk3LCA3NjYzNSwgNzY2NDEsIDc2NjUxLCA3NjY1OCwgNzY2NjMsIDc2NjcyLCA3NjY3NywgNzY2ODEsIDc2Njg2LCAKLSAgICA3NjY5NCwgNzY3MDIsIDc2NzA5LCA2NTEwOSwgNzY3MTUsIDc2NzIzLCA3NjczMCwgNzY3NDEsIDc2NzQ3LCA3Njc1MSwgCi0gICAgNzY3NTcsIDMyODc1LCA3Njc2MCwgNzY3NjcsIDc2Nzc1LCA3Njc4MCwgMzk2MjAsIDc2Nzg0LCA3Njc4OSwgNzY3OTYsIAotICAgIDc2ODAxLCA4OTkyLCA3NjgwNSwgNzY4MTMsIDc2ODIwLCA3NjgyNywgNzY4MzMsIDc2ODQ3LCA2MzM4MSwgNzY4NTUsIAotICAgIDc2ODYxLCA3Njg2NSwgNzY4NjgsIDc2ODc2LCA3Njg4MywgNzY4ODgsIDc2OTAxLCA3NjkwOCwgNzY5MTIsIDc2OTE5LCAKLSAgICA3NjkyNCwgNjA4NjAsIDc2OTI5LCA3NjkzMiwgNzY5MzksIDc2OTQ1LCA3Njk0OSwgNzY5NTcsIDc2OTY2LCA3Njk3NiwgCi0gICAgNzY5ODYsIDc2OTk1LCA3NzAwMywgNzcwMTQsIDc3MDE5LCA3NzAyMywgNzcwMjgsIDc3MDMyLCAzNTM4OSwgNzcwNDAsIAotICAgIDIxMzU3LCAzNTM5OCwgNzcwNDUsIDc3MDUwLCA3NzA1NSwgNzcwNjAsIDc3MDY1LCA3NzA3MCwgNzcwNzUsIDc3MDc5LCAKLSAgICA3NzA4NCwgNzcwODksIDc3MDk0LCA3NzA5OSwgNzcxMDQsIDc3MTA5LCA3NzExMywgNzcxMTgsIDc3MTIzLCA3NzEyNywgCi0gICAgNzcxMzEsIDc3MTM1LCA3NzEzOSwgNzcxNDQsIDc3MTQ5LCA3NzE1MywgNzcxNTgsIDc3MTYyLCA3NzE2NiwgNzcxNzEsIAotICAgIDc3MTc2LCA3NzE4MSwgNzcxODYsIDc3MTkwLCA3NzE5NSwgNzcyMDAsIDc3MjA0LCA3NzIwOSwgNzcyMTQsIDc3MjE5LCAKLSAgICA3NzIyNCwgNzcyMjksIDc3MjM0LCA3NzIzOSwgNzcyNDQsIDc3MjQ5LCA3NzI1NCwgNzcyNTksIDc3MjY0LCA3NzI2OSwgCi0gICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA4LCA3NzMxMywgNzczMTgsIAotICAgIDc3MzIzLCA3NzMyOCwgNzczMzMsIDc3MzM4LCA3NzM0MywgNzczNDgsIDc3MzUzLCA3NzM1OCwgNzczNjMsIDc3MzY3LCAKLSAgICA3NzM3MiwgNzczNzYsIDc3MzgxLCA3NzM4NiwgNzczOTEsIDc3Mzk2LCA3NzQwMSwgNzc0MDYsIDc3NDExLCA3NzQxNiwgCi0gICAgNzc0MjEsIDc3NDI1LCA3NzQyOSwgNzc0MzQsIDc3NDM5LCA3NzQ0MywgNzc0NDgsIDc3NDUzLCA3NzQ1NywgNzc0NjIsIAotICAgIDc3NDY3LCA3NzQ3MiwgNzc0NzcsIDc3NDgxLCA3NzQ4NiwgNzc0OTEsIDc3NDk1LCA3NzUwMCwgNzc1MDQsIDc3NTA4LCAKLSAgICA3NzUxMiwgNzc1MTYsIDc3NTIxLCA3NzUyNSwgNzc1MjksIDc3NTMzLCA3NzUzNywgNzc1NDEsIDc3NTQ1LCA3NzU0OSwgCi0gICAgNzc1NTMsIDc3NTU3LCA3NzU2MiwgNzc1NjcsIDc3NTcyLCA3NzU3NywgNzc1ODIsIDc3NTg3LCA3NzU5MiwgNzc1OTcsIAotICAgIDc3NjAyLCA3NzYwNywgNzc2MTEsIDc3NjE1LCA3NzYxOSwgNzc2MjMsIDc3NjI3LCA3NzYzMSwgNzc2MzYsIDc3NjQwLCAKLSAgICA3NzY0NSwgNzc2NDksIDc3NjU0LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MiwgNzc2NzYsIDc3NjgwLCA3NzY4NCwgCi0gICAgNzc2ODgsIDc3NjkyLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOCwgNzc3MTIsIDc3NzE2LCA3NzcyMCwgNzc3MjQsIAotICAgIDc3NzI4LCA3NzczMywgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY3LCAKLSAgICA3Nzc3MSwgNzc3NzUsIDc3Nzc5LCA3Nzc4MywgNzc3ODcsIDc3NzkxLCA3Nzc5NiwgNzc4MDAsIDc3ODA1LCA3NzgwOSwgCi0gICAgNzc4MTMsIDc3ODE3LCA3NzgyMSwgNzc4MjUsIDc3ODI5LCA3NzgzMywgNzc4MzcsIDc3ODQxLCA3Nzg0NSwgNzc4NDksIAotICAgIDc3ODU0LCA3Nzg1OCwgNzc4NjIsIDc3ODY2LCA3Nzg3MCwgNzc4NzQsIDc3ODc4LCA3Nzg4MiwgNzc4ODYsIDc3ODkwLCAKLSAgICA3Nzg5NCwgNzc4OTgsIDc3OTAzLCA3NzkwNywgNzc5MTEsIDc3OTE2LCA3NzkyMSwgNzc5MjUsIDc3OTI5LCA3NzkzMywgCi0gICAgNzc5MzcsIDc3OTQxLCA3Nzk0NSwgNzc5NDksIDc3OTUzLCA3Nzk1OCwgNzc5NjIsIDc3OTY3LCA3Nzk3MSwgNzc5NzYsIAotICAgIDc3OTgwLCA3Nzk4NSwgNzc5ODksIDc3OTk1LCA3ODAwMCwgNzgwMDQsIDc4MDA5LCA3ODAxMywgNzgwMTgsIDc4MDIyLCAKLSAgICA3ODAyNywgNzgwMzEsIDc4MDM2LCAxNTIxLCA3ODA0MCwgMjgyNCwgMTc1OSwgMTc2NCwgNzgwNDQsIDc4MDQ4LCAyODI4LCAKLSAgICA3ODA1MiwgMTM5NywgNzgwNTcsIDEzNDIsIDc4MDYxLCAyODQwLCA3ODA2NSwgNzgwNzIsIDc4MDc5LCA3ODA5MywgMjg0NCwgCi0gICAgNzEzMSwgNzgxMDIsIDc4MTEwLCA3ODExNywgNzgxMjgsIDc4MTM3LCA3ODE0NCwgNzgxNTYsIDc4MTY5LCA3ODE4MiwgCi0gICAgNzgxOTMsIDc4MTk4LCA3ODIwNSwgNzgyMTcsIDc4MjIxLCAyODQ4LCAxMTc0NywgNzgyMzEsIDc4MjM2LCA3ODI0NSwgCi0gICAgNzgyNTUsIDI4NTIsIDc4MjYwLCA3ODI2NCwgNzgyNjksIDc4Mjc2LCA3ODI4MiwgNzgyOTAsIDc4MzAyLCAxMzQ3LCAKLSAgICAxMzA0MiwgNzgzMTIsIDc4MzE2LCA3ODMyMiwgNzgzMzYsIDc4MzQ4LCA3ODM2MCwgNzgzNzAsIDc4Mzc5LCA3ODM4OCwgCi0gICAgNzgzOTcsIDc4NDA1LCA3ODQxNiwgNzg0MjQsIDQwNTEsIDc4NDM0LCA3ODQ0NSwgNzg0NTQsIDc4NDYwLCA3ODQ3NSwgCi0gICAgNzg0ODIsIDc4NDg4LCAzNTUxNCwgNzg0OTMsIDI4NzYsIDEzMDQ2LCA3ODQ5NywgNzg1MDQsIDg5MzAsIDc4NTEzLCAyODgxLCAKLSAgICAzMjM2MSwgNzg1MTksIDYwNjA5LCA3ODUyNiwgNzg1MzIsIDc4NTQzLCA3ODU0OSwgNzg1NTYsIDc4NTYyLCA3ODU3MCwgCi0gICAgNzg1NzcsIDc4NTgzLCA3ODU5MywgNzg2MDIsIDc4NjEzLCA3ODYyMCwgNzg2MjYsIDc4NjM2LCA3ODY0NCwgNzg2NTAsIAotICAgIDc4NjY1LCA3ODY3MSwgNzg2NzYsIDc4NjgzLCA3ODY4NiwgNzg2OTIsIDc4Njk5LCA3ODcwNSwgNzg3MTMsIDc4NzIyLCAKLSAgICA3ODczMCwgNzg3MzYsIDc4NzQ1LCA0MTQ2NCwgNzg3NTksIDc4NzY0LCA3ODc3MCwgMTQ3NTcsIDc4Nzc1LCA3ODc4OCwgCi0gICAgNzg3OTcsIDc4ODA1LCA3ODgxMiwgNzg4MTYsIDc4ODIwLCA3ODgyMywgNzg4MzAsIDc4ODM3LCA3ODg0NSwgNzg4NTMsIAotICAgIDc4ODYyLCA3ODg3MCwgMTQ2ODQsIDc4ODc4LCA3ODg4MywgNzg4ODcsIDc4ODk5LCA3ODkwNiwgNzg5MTUsIDc0OCwgCi0gICAgNzg5MjUsIDc4OTM0LCA3ODk0NSwgMjg5NywgNzg5NDksIDc4OTUzLCA3ODk1OSwgNzg5NzIsIDc4OTg0LCA3ODk5NCwgCi0gICAgNzkwMDMsIDc5MDE1LCAyNjM2OSwgNzkwMjYsIDc5MDM0LCA3OTA0MywgNzkwNTQsIDc5MDY1LCA3OTA3NSwgNzkwODUsIAotICAgIDc5MDk0LCA3OTEwMiwgMTEzMTIsIDc5MTA5LCA3OTExMywgNzkxMTYsIDc5MTIxLCA3OTEyNiwgNzkxMzAsIDc5MTM2LCAKLSAgICAxMzUyLCAxMTgxOCwgNzkxNDMsIDc5MTU0LCA3OTE2MywgNzkxNzEsIDc5MTgwLCA3OTE4OCwgNzkyMDQsIDc5MjE1LCAKLSAgICA3OTIyNCwgNzkyMzIsIDc5MjQ0LCA3OTI1NSwgNzkyNzEsIDc5MjgxLCA3OTMwMiwgNzkzMTUsIDc5MzIzLCA3OTMzMCwgCi0gICAgMTQ4NjgsIDc5MzQzLCA3OTM0OCwgNzkzNTQsIDU5MDgsIDc5MzYwLCA3OTM2MywgNzkzNzAsIDc5MzgwLCA4MTc2LCAKLSAgICA3OTM4NywgNzkzOTIsIDc5Mzk3LCA3OTQwMiwgNzk0MTAsIDc5NDE5LCA3OTQyNywgOTc1NiwgOTc2NSwgNzk0MzIsIAotICAgIDc5NDQzLCA3OTQ0OCwgNzk0NTQsIDI5MTMsIDI5MTgsIDc5NDYwLCAxMDg3OSwgNzk0NjYsIDc5NDczLCA3OTQ4MCwgCi0gICAgNzk0OTMsIDIyNTEsIDY4LCA3OTQ5OCwgNzk1MDMsIDc5NTEzLCA3OTUxOSwgNzk1MjgsIDc5NTM2LCA3OTU0NiwgNzk1NTAsIAotICAgIDc5NTU1LCA3OTU1OSwgNzk1NzEsIDI5NDEsIDc5NTc5LCA3OTU4NywgNzk1OTIsIDc5NjAzLCA3OTYxNCwgNzk2MjMsIAotICAgIDc5NjI4LCA3OTYzNCwgNzk2MzksIDc5NjQ5LCA3OTY1OSwgNzk2NjQsIDc5NjcwLCA3OTY3NCwgNzk2NzksIDc5Njg4LCAKLSAgICAyMTQxMCwgNzk2OTIsIDQxMjgsIDIwLCA3OTY5NywgNzk3MDYsIDc5NzEzLCA3OTcyMCwgNzk3MjYsIDc5NzMyLCA4NjQsIAotICAgIDc5NzM3LCA3OTc0MiwgNjA5MzcsIDc5NzQ3LCA3OTc1MiwgNzk3NTgsIDc5NzY0LCA3OTc3MiwgNzk3NzcsIDc5Nzg0LCAKLSAgICA3OTc5MCwgNzk3OTUsIDM4MDMwLCA0MTM1OCwgNzk4MDEsIDI5NDUsIDMyLCA3OTgxMSwgNzk4MjQsIDc5ODI5LCA3OTgzNywgCi0gICAgNzk4NDIsIDc5ODQ4LCAyOTY3LCAyODMxMCwgNzk4NTMsIDc5ODYxLCA3OTg2OCwgNzk4NzMsIDU4NjgyLCA2MTk0MCwgCi0gICAgNzk4ODIsIDc5ODg2LCAxNzA0LCAxODEzLCA3OTg5MSwgNzk4OTYsIDc5OTAzLCAxODE3LCAyNDcsIDc5OTEwLCA3OTkxNiwgCi0gICAgMjk4OSwgNzk5MjEsIDc5OTI2LCA3OTkzMywgMTgyMSwgNzk5MzgsIDc5OTQ0LCA3OTk0OSwgNzk5NjEsIDYxMTksIDc5OTcxLCAKLSAgICAxODI4LCA3OTk3NywgNzk5ODIsIDc5OTg5LCA3OTk5NiwgODAwMTEsIDgwMDE4LCA4MDAyOSwgODAwMzcsIDI2MTgsIAotICAgIDgwMDQxLCA4MDA1MywgODAwNTgsIDgwMDYyLCA4MDA2OCwgMjgxMzUsIDIyNTYsIDgwMDcyLCA4MDA4MywgODAwODcsIAotICAgIDgwMDkxLCA4MDA5NywgODAxMDEsIDgwMTEwLCA4MDExNCwgODAxMjUsIDgwMTI5LCAyMzAyLCAzMjE5MCwgODAxMzMsIAotICAgIDgwMTQzLCAzMDgwLCA5MzcxLCA4MDE1MSwgODAxNTYsIDgwMTYwLCA4MDE2OSwgODAxNzYsIDgwMTgyLCAzMDUwLCAxNzE1MiwgCi0gICAgODAxODYsIDgwMTk5LCA4MDIxNywgODAyMjIsIDgwMjMwLCA4MDIzOCwgODAyNDgsIDk5ODUsIDEzMTU0LCA4MDI2MCwgCi0gICAgODAyNzMsIDgwMjgwLCA4MDI4NywgODAzMDMsIDgwMzEwLCA4MDMxNiwgMTA2NCwgODAzMjMsIDgwMzMwLCA4MDM0MCwgCi0gICAgODAzNDksIDgwMzYxLCA0MjMyOCwgODAzNjksIDMwNjQsIDEyMDMwLCA4MDM3MiwgODAzODAsIDgwMzg0LCA3ODI3MiwgCi0gICAgMzA2OCwgODAzODgsIDIxMTkxLCAxMjA0NiwgMzc1NiwgODAzOTIsIDMwNzQsIDgwMzk2LCA4MDQwNiwgODA0MTIsIDgwNDE4LCAKLSAgICA4MDQyNCwgODA0MzAsIDgwNDM2LCA4MDQ0MiwgODA0NDgsIDgwNDU0LCA4MDQ2MCwgODA0NjYsIDgwNDcyLCA4MDQ3OCwgCi0gICAgODA0ODQsIDgwNDkwLCA4MDQ5NiwgODA1MDIsIDgwNTA4LCA4MDUxNCwgODA1MjAsIDgwNTI2LCA4MDUzMiwgODA1MzgsIAotICAgIDgwNTQ0LCA4MDU1MCwgODA1NTYsIDgwNTYzLCA4MDU3MCwgODA1NzYsIDgwNTgyLCA4MDU4OCwgODA1OTQsIDgwNjAwLCAKLSAgICA4MDYwNiwgMTM1NywgMTYwNjIsIDEyMDY4LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCAKLSAgICA4MDY0MiwgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgCi0gICAgODA2OTIsIDgwNjk3LCA4MDcwMiwgODA3MDcsIDgwNzEyLCA4MDcxNywgODA3MjIsIDgwNzI3LCA4MDczMiwgODA3MzcsIAotICAgIDgwNzQzLCA4MDc0OCwgODA3NTMsIDgwNzU5LCA4MDc2NCwgODA3NzAsIDgwNzc1LCA4MDc4MCwgODA3ODYsIDgwNzkxLCAKLSAgICA4MDc5NiwgODA4MDEsIDgwODA2LCA4MDgxMSwgODA4MTYsIDgwODIxLCA4MDgyNiwgODA0MDcsIDgwNDEzLCA4MDQxOSwgCi0gICAgODA0MjUsIDgwNDMxLCA4MDQzNywgODA0NDMsIDgwNDQ5LCA4MDQ1NSwgODA0NjEsIDgwNDY3LCA4MDQ3MywgODA0NzksIAotICAgIDgwNDg1LCA4MDQ5MSwgODA4MzIsIDgwNDk3LCA4MDUwMywgODA1MDksIDgwODM4LCA4MDUxNSwgODA1MjEsIDgwNTI3LCAKLSAgICA4MDUzMywgODA1MzksIDgwNTQ1LCA4MDU1MSwgODA1NzEsIDgwODQ0LCA4MDg1MCwgODA1NzcsIDgwODU2LCA4MDU4MywgCi0gICAgODA1ODksIDgwNTk1LCA4MDYwMSwgODA2MDcsIDMwOTEsIDMwOTYsIDgwODYyLCA4MDg2NywgODA4NzAsIDgwODc2LCAKLSAgICA4MDg4MiwgODA4ODksIDgwODk0LCA4MDg5OSwgMjMwNywgCisgICAgMCwgMCwgNiwgMTAsIDE0LCAyMiwgMjcsIDM0LCA0NCwgNDksIDU4LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKKyAgICAxMTMsIDExOCwgMTI2LCAxMzUsIDE0NiwgMTUxLCAxNTYsIDE2MSwgMTY0LCAxNjgsIDE3NywgMTgzLCAxODksIDE5NCwgCisgICAgMjAxLCAyMDksIDIxNywgMjE4LCAyMjEsIDIyOSwgMTY1LCAyMzUsIDI0NCwgMjUxLCAyNjEsIDI2NywgMjc0LCAyNzksIAorICAgIDI4MiwgMjg3LCAyOTMsIDI5NiwgMzAwLCAzMDUsIDMxMSwgMzE3LCAzMjIsIDMyNywgMzMzLCAzMzksIDM0OCwgMzU1LCAKKyAgICAzNjIsIDM3MSwgMzc2LCAzODEsIDM4MywgMzkxLCAzOTksIDQwMCwgNDA4LCA0MTAsIDQxNywgNDIwLCA0MjYsIDQzMywgCisgICAgMzMxLCA0MzgsIDQ0MCwgNDQyLCA0NDksIDQ1MSwgNDU2LCA0NjQsIDQ3MSwgNDc2LCA0ODAsIDQ4NiwgNDkxLCA1MDEsIAorICAgIDUwNiwgNTEzLCA1MTYsIDUyNCwgNTI4LCA1MzgsIDU0NSwgNTU0LCA1NjEsIDU3MCwgNTc3LCA1ODAsIDU4NCwgNTkyLCAKKyAgICA1OTgsIDYxMSwgNjE4LCA2MjIsIDYyNiwgNjI3LCA2MzYsIDY0MCwgNjQ5LCA2NTUsIDY1OSwgNjYxLCA2NjYsIDY3NCwgCisgICAgNjc4LCA2ODYsIDY5MSwgNjk0LCA3MDAsIDcwMywgNzA3LCA3MTIsIDcyMCwgNzIzLCA3MzAsIDczNSwgNzQ0LCA3NTMsIAorICAgIDc2MSwgNzY5LCA3NzMsIDc3OSwgNzg3LCA3OTQsIDc5NywgODA3LCA4MTEsIDgxNSwgODI2LCA4MzMsIDg0MCwgODQ0LCAKKyAgICA4NDgsIDg1NCwgODQyLCA4NjMsIDg2OSwgODc0LCA4NzksIDg4MywgODg2LCA4ODksIDg5NCwgOTAzLCA5MTEsIDkxNiwgCisgICAgNjU4LCA1NzUsIDkyMSwgOTI0LCA5MzAsIDkzNCwgOTM4LCA5NDcsIDk1MywgOTYwLCA5NjksIDk3NiwgOTg5LCA5OTQsIAorICAgIDk5OCwgMTAwNiwgMTAwOSwgMTAxNSwgMTAyMSwgMTAzMCwgMTAzNywgMTA0NSwgMTA1MiwgMTA2MiwgMTA2OSwgMTA3NywgCisgICAgMTA4NiwgMTA5MCwgMTA5MywgMTEwMCwgMjEsIDExMDQsIDExMTMsIDExMjEsIDExMjgsIDExMzEsIDExMzYsIDExMzgsIAorICAgIDExNDIsIDExNTEsIDExNTYsIDExNTksIDExNjUsIDExNzIsIDExNzUsIDExODAsIDExODUsIDExOTEsIDExOTYsIDEyMDEsIAorICAgIDEyMDYsIDEyMTAsIDEyMTUsIDEyMjEsIDEyMjYsIDEyMzEsIDEyMzUsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIDEyNjAsIAorICAgIDEyNjUsIDEyNzAsIDEyNzUsIDEyODEsIDEyODcsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIDEzMjEsIAorICAgIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDEsIDExNzYsIDExODEsIDExODYsIDExOTIsIDExOTcsIDEzNDUsIDEyMDcsIDEzNTEsIAorICAgIDEzNTYsIDEzNjEsIDEzNjgsIDEzNzIsIDEzNzUsIDEzODQsIDEyMTEsIDEzODgsIDEyMTYsIDEyMjIsIDEyMjcsIDEzOTIsIAorICAgIDEzOTcsIDE0MDIsIDE0MDYsIDE0MTAsIDE0MTYsIDE0MjAsIDEyMzIsIDE0MjMsIDE0MjUsIDEyNDIsIDE0MzAsIDE0MzQsIAorICAgIDEyNDcsIDE0NDAsIDEyNTIsIDE0NDQsIDE0NDgsIDEyNTcsIDE0NTIsIDE0NTcsIDE0NjEsIDE0NjQsIDE0NjgsIDEyNjEsIAorICAgIDEyNjYsIDE0NzMsIDE0NzksIDEyNzEsIDE0OTEsIDE0OTcsIDE1MDMsIDE1MDksIDEyNzYsIDEyODgsIDEyOTQsIDE1MTMsIAorICAgIDE1MTcsIDE1MjEsIDE1MjQsIDEyOTksIDE1MjgsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDYsIDE1NTEsIDE1NTYsIDE1NjAsIAorICAgIDE1NjUsIDE1NzAsIDE1NzUsIDE1ODAsIDE1ODYsIDE1OTEsIDE1OTYsIDE2MDIsIDE2MDgsIDE2MTMsIDE2MTcsIDE2MjIsIAorICAgIDE2MjcsIDE2MzIsIDE2MzcsIDE2NDIsIDE2NDYsIDE2NTQsIDE2NTksIDE2NjMsIDE2NjgsIDE2NzMsIDE2NzgsIDE2ODMsIAorICAgIDE2ODcsIDE2OTAsIDE2OTcsIDE3MDIsIDE3MDcsIDE3MTIsIDE3MTcsIDE3MjMsIDE3MjgsIDE3MzIsIDEzMDMsIDE3MzUsIAorICAgIDE3NDAsIDE3NDUsIDEzMDgsIDE3NDksIDE3NTMsIDE3NjAsIDEzMTMsIDE3NjcsIDEzMTgsIDE3NzEsIDE3NzMsIDE3NzgsIAorICAgIDE3ODQsIDEzMjIsIDE3ODksIDE3OTgsIDEzMjcsIDE4MDMsIDE4MDksIDE4MTQsIDEzMzIsIDE4MTksIDE4MjQsIDE4MjcsIAorICAgIDE4MzIsIDE4MzYsIDE4NDAsIDE4NDQsIDE4NDcsIDE4NTEsIDEzMzcsIDE4NTYsIDEzNDIsIDE4NjAsIDE4NjIsIDE4NjgsIAorICAgIDE4NzQsIDE4ODAsIDE4ODYsIDE4OTIsIDE4OTgsIDE5MDQsIDE5MTAsIDE5MTUsIDE5MjEsIDE5MjcsIDE5MzMsIDE5MzksIAorICAgIDE5NDUsIDE5NTEsIDE5NTcsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIDIwMDQsIAorICAgIDIwMDksIDIwMTQsIDIwMTksIDIwMjUsIDIwMzAsIDIwMzYsIDIwNDEsIDIwNDcsIDIwNTMsIDIwNTgsIDIwNjQsIDIwNzAsIAorICAgIDIwNzYsIDIwODIsIDIwODcsIDIwOTIsIDIwOTQsIDIwOTUsIDIwOTksIDIxMDMsIDIxMDgsIDIxMTIsIDIxMTYsIDIxMjAsIAorICAgIDIxMjUsIDIxMjksIDIxMzIsIDIxMzcsIDIxNDEsIDIxNDYsIDIxNTAsIDIxNTQsIDIxNTksIDIxNjMsIDIxNjYsIDIxNzAsIAorICAgIDIxNzYsIDIxOTAsIDIxOTQsIDIxOTgsIDIyMDIsIDIyMDUsIDIyMTAsIDIyMTQsIDIyMTgsIDIyMjEsIDIyMjUsIDIyMzAsIAorICAgIDIyMzUsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTMsIDIyNTcsIDIyNjEsIDIyNjYsIDIyNzAsIDIyNzUsIDIyNzksIDIyODQsIAorICAgIDIyOTAsIDIyOTcsIDIzMDMsIDIzMDgsIDIzMTMsIDIzMTgsIDIzMjQsIDIzMjksIDIzMzUsIDIzNDAsIDIzNDMsIDIzNDUsIAorICAgIDExOTMsIDIzNDksIDIzNTYsIDIzNjQsIDIzNzQsIDIzODMsIDIzOTcsIDI0MDEsIDI0MDUsIDI0MTAsIDI0MjMsIDI0MzEsIAorICAgIDI0MzUsIDI0NDAsIDI0NDQsIDI0NDcsIDI0NTEsIDI0NTUsIDI0NjAsIDI0NjUsIDI0NzAsIDI0NzQsIDI0NzcsIDI0ODEsIAorICAgIDI0ODgsIDI0OTUsIDI1MDEsIDI1MDYsIDI1MTEsIDI1MTcsIDI1MjMsIDI1MjgsIDI1MzEsIDE3NzUsIDI1MzMsIDI1MzksIAorICAgIDI1NDMsIDI1NDgsIDI1NTIsIDI1NTYsIDE2OTMsIDE3ODYsIDI1NjEsIDI1NjUsIDI1NjgsIDI1NzMsIDI1NzgsIDI1ODMsIAorICAgIDI1ODgsIDI1OTIsIDI1OTksIDI2MDQsIDI2MDcsIDI2MTQsIDI2MjAsIDI2MjQsIDI2MjgsIDI2MzIsIDI2MzcsIDI2NDQsIAorICAgIDI2NDksIDI2NTQsIDI2NjEsIDI2NjcsIDI2NzMsIDI2NzksIDI2OTMsIDI3MTAsIDI3MjUsIDI3NDAsIDI3NDksIDI3NTQsIAorICAgIDI3NTgsIDI3NjMsIDI3NjgsIDI3NzIsIDI3ODQsIDI3OTEsIDI3OTcsIDIyOTMsIDI4MDMsIDI4MTAsIDI4MTYsIDI4MjAsIAorICAgIDI4MjMsIDI4MzAsIDI4MzYsIDI4NDEsIDI4NDUsIDI4NTAsIDI4NTQsIDI4NTgsIDIxMTcsIDI4NjIsIDI4NjcsIDI4NzIsIAorICAgIDI4NzYsIDI4ODEsIDI4ODksIDI4OTMsIDI4OTgsIDI5MDIsIDI5MDYsIDI5MTAsIDI5MTUsIDI5MjAsIDI5MjUsIDI5MjksIAorICAgIDI5MzQsIDI5MzksIDI5NDMsIDI5NDgsIDI5NTIsIDI5NTUsIDI5NTksIDI5NjMsIDI5NzEsIDI5NzYsIDI5ODAsIDI5ODQsIAorICAgIDI5OTAsIDI5OTksIDMwMDMsIDMwMDcsIDMwMTMsIDMwMTgsIDMwMjUsIDMwMjksIDMwMzksIDMwNDMsIDMwNDcsIDMwNTIsIAorICAgIDMwNTYsIDMwNjEsIDMwNjcsIDMwNzIsIDMwNzYsIDMwODAsIDMwODQsIDI0OTEsIDMwOTIsIDMwOTcsIDMxMDMsIDMxMDgsIAorICAgIDMxMTIsIDMxMTcsIDMxMjIsIDMxMjYsIDMxMzIsIDMxMzcsIDIxMjEsIDMxNDMsIDMxNDksIDMxNTQsIDMxNTksIDMxNjQsIAorICAgIDMxNjksIDMxNzQsIDMxNzksIDMxODQsIDMxODksIDMxOTQsIDMyMDAsIDMyMDUsIDEyMDgsIDEwMSwgMzIxMSwgMzIxNSwgCisgICAgMzIxOSwgMzIyMywgMzIyOCwgMzIzMiwgMzIzNiwgMzI0MiwgMzI0NywgMzI1MSwgMzI1NSwgMzI2MCwgMzI2NSwgMzI2OSwgCisgICAgMzI3NCwgMzI3OCwgMzI4MSwgMzI4NSwgMzI5MCwgMzI5NCwgMzI5OSwgMzMwMywgMzMwNiwgMzMxMCwgMzMxNCwgMzMxOSwgCisgICAgMzMyMywgMzMyNiwgMzMzOSwgMzM0MywgMzM0NywgMzM1MSwgMzM1NiwgMzM2MCwgMzM2NCwgMzM2NywgMzM3MSwgMzM3NSwgCisgICAgMzM4MCwgMzM4NCwgMzM4OSwgMzM5NCwgMzM5OSwgMzQwMywgMzQwOCwgMzQxMSwgMzQxNCwgMzQxOSwgMzQyNSwgMzQyOSwgCisgICAgMzQzMywgMzQzNiwgMzQ0MSwgMzQ0NSwgMzQ1MCwgMzQ1NCwgMzQ1OCwgMzQ2MSwgMzQ2NywgMzQ3MiwgMzQ3NywgMzQ4MywgCisgICAgMzQ4OCwgMzQ5MywgMzQ5OSwgMzUwNSwgMzUxMCwgMzUxNSwgMzUyMCwgMzUyNSwgMTE0MCwgNTc5LCAzNTI4LCAzNTMxLCAKKyAgICAzNTM2LCAzNTQwLCAzNTQ0LCAzNTQ4LCAzNTUyLCAzNTU1LCAzNTU5LCAzNTY0LCAzNTY5LCAzNTczLCAzNTc4LCAzNTgyLCAKKyAgICAzNTg3LCAzNTkxLCAzNTk1LCAzNTk5LCAzNjA1LCAzNjExLCAzNjE0LCAzNjE3LCAxMzksIDM2MjMsIDM2MjgsIDM2MzcsIAorICAgIDM2NDUsIDM2NTQsIDM2NjEsIDM2NjcsIDM2NzQsIDM2NzksIDM2ODMsIDM2ODcsIDM2OTUsIDM3MDIsIDM3MDcsIDM3MTQsIAorICAgIDM3MTksIDM3MjMsIDM3MzMsIDM3MzcsIDM3NDEsIDM3NDYsIDM3NTEsIDM3NjEsIDIxMzMsIDM3NjYsIDM3NzAsIDM3NzMsIAorICAgIDM3NzksIDM3ODQsIDM3OTAsIDM3OTYsIDM4MDEsIDM4MDgsIDM4MTIsIDM4MTYsIDYzNywgNzAxLCAxMzY5LCAzODIwLCAKKyAgICAzODI3LCAzODM0LCAzODQwLCAzODQ1LCAzODUyLCAzODU5LCAzODY0LCAzODcwLCAzODc2LCAzODgxLCAzODg1LCAzODkxLCAKKyAgICAzODk4LCAzOTAzLCAzOTA3LCAyMTQyLCAzOTExLCAzOTE5LCAzOTI1LCAzOTMzLCA3MzksIDM5MzksIDM5NDcsIDM5NTgsIAorICAgIDM5NjIsIDM5NzIsIDIxNDcsIDM5NzgsIDM5ODMsIDM5OTgsIDQwMDQsIDQwMTEsIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIAorICAgIDQwNDQsIDQwNDcsIDQwNTAsIDQwNTQsIDQwNTksIDQwNjYsIDQwNzEsIDQwNzUsIDQwNzksIDQwODMsIDQwODcsIDQwOTIsIAorICAgIDQwOTgsIDQxMDksIDQxMTMsIDMyODYsIDQxMTgsIDQxMzAsIDQxMzYsIDQxNDQsIDQxNDgsIDQxNTMsIDE1NjIsIDQxNjAsIAorICAgIDQxNjMsIDQxNjYsIDQxNzAsIDQxNzMsIDQxNzksIDQxODMsIDQxOTcsIDQyMDEsIDQyMDQsIDQyMDgsIDQyMTQsIDQyMjAsIAorICAgIDQyMjUsIDQyMjksIDQyMzMsIDQyMzksIDQyNTAsIDQyNTYsIDQyNjEsIDQyNjcsIDQyNzEsIDQyNzksIDQyOTEsIDQzMDEsIAorICAgIDQzMDcsIDQzMTIsIDQzMjEsIDQzMjksIDQzMzYsIDQzNDIsIDQzNDYsIDQzNTIsIDQzNjEsIDQzNzAsIDQzNzQsIDQzODMsIAorICAgIDQzODgsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDksIDQ0MTUsIDQ0MTksIDQ0MjQsIDQ0MjgsIDQ0MzQsIDIxNTUsIDEzODUsIAorICAgIDQ0NDAsIDQ0NDUsIDQ0NTEsIDQ0NTYsIDQ0NjEsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODcsIDQ0OTIsIDQ0OTgsIAorICAgIDQ1MDMsIDQ1MDgsIDQ1MTMsIDQ1MTksIDQ1MjQsIDQ1MjksIDQ1MzQsIDQ1MzksIDQ1NDUsIDQ1NTAsIDQ1NTYsIDQ1NjEsIAorICAgIDQ1NjYsIDQ1NzEsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTIsIDQ1OTcsIDQ2MDIsIDI5MSwgMzIxLCA0NjA3LCA0NjEzLCAKKyAgICA0NjE3LCA0NjIxLCA0NjI2LCA0NjMwLCA0NjM0LCA0NjM3LCA0NjQxLCA0NjQ1LCA0NjQ5LCA0NjUzLCA0NjU3LCA0NjYyLCAKKyAgICA0NjY2LCA0NjcwLCA0Njc2LCA0NDM3LCA0NjgxLCA0Njg1LCA0Njg4LCA0NjkzLCA0Njk4LCA0NzAzLCA0NzA4LCA0NzEzLCAKKyAgICA0NzE4LCA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQyLCA0NzQ3LCA0NzUyLCA0NzU3LCA0NzYyLCA0NzY3LCA0NzcyLCAKKyAgICA0Nzc3LCA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk2LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCAKKyAgICA0ODM2LCA0ODQxLCA0ODQ2LCA0ODUwLCA0ODU1LCA0ODYwLCA0ODY1LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCAKKyAgICA0ODk1LCA0OTAwLCA0OTA0LCA0OTA5LCA0OTE0LCA0OTE5LCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCAKKyAgICA0OTU0LCA0OTU4LCA0OTYzLCA0OTY4LCA0OTczLCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCAKKyAgICA1MDEyLCA1MDE3LCA1MDIyLCA1MDI3LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY2LCAKKyAgICA1MDcxLCA1MDc2LCA1MDgxLCA1MDg2LCA1MDkyLCA1MDk4LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI4LCA1MTMzLCAKKyAgICA1MTM5LCA1MTQ1LCA1MTUxLCA1MTU3LCA1MTYzLCA1MTY5LCA1MTc1LCA1MTgxLCA1MTg3LCA1MTkzLCA1MTk4LCA1MjA0LCAKKyAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUyLCA1MjU4LCA1MjYzLCA1MjY5LCA1Mjc1LCAKKyAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE3LCA1MzIzLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKKyAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgyLCA1Mzg4LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKKyAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ3LCA1NDUzLCA1NDU4LCA1NDYyLCA1NDY4LCA1NDc0LCA1NDgwLCA1NDg2LCAKKyAgICA1NDkyLCA1NDk4LCA1NTA0LCA1NTEwLCA1NTE2LCA1NTIyLCA1NTI3LCA1NTMzLCA1NTM5LCA1NTQ1LCA1NTUxLCA1NTU3LCAKKyAgICA1NTYzLCA1NTY5LCA1NTc1LCA1NTgxLCA1NTg3LCA1NTkyLCA1NTk4LCA1NjA0LCA1NjEwLCA1NjE2LCA1NjIyLCA1NjI4LCAKKyAgICA1NjM0LCA1NjQwLCA1NjQ2LCA1NjUyLCA1NjU3LCA1NjYzLCA1NjY5LCA1Njc1LCA1NjgxLCA1Njg3LCA1NjkzLCA1Njk5LCAKKyAgICA1NzA1LCA1NzExLCA1NzE3LCA1NzIyLCA1NzI4LCA1NzM0LCA1NzQwLCA1NzQ2LCA1NzUyLCA1NzU4LCA1NzY0LCA1NzcwLCAKKyAgICA1Nzc2LCA1NzgyLCA1Nzg3LCA1NzkzLCA1Nzk5LCA1ODA1LCA1ODExLCA1ODE3LCA1ODIzLCA1ODI5LCA1ODM1LCA1ODQxLCAKKyAgICA1ODQ3LCA1ODUyLCA1ODU4LCA1ODY0LCA1ODcwLCA1ODc2LCA1ODgyLCA1ODg4LCA1ODk0LCA1OTAwLCA1OTA2LCA1OTEyLCAKKyAgICA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQxLCA1OTQ3LCA1OTUzLCA1OTU5LCA1OTY1LCA1OTcxLCA1OTc3LCA1OTgyLCAKKyAgICA1OTg4LCA1OTk0LCA2MDAwLCA2MDA2LCA2MDEyLCA2MDE4LCA2MDI0LCA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUzLCAKKyAgICA2MDU5LCA2MDY1LCA2MDcxLCA2MDc3LCA2MDgzLCA2MDg5LCA2MDk1LCA2MTAxLCA2MTA3LCA2MTEyLCA2MTE2LCA2MTE5LCAKKyAgICA2MTI2LCA2MTMwLCA2MTQzLCA2MTQ3LCA2MTUxLCA2MTU1LCA2MTU4LCA2MTYyLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTgxLCAKKyAgICA2MTg4LCA2MTk5LCA2MjA3LCA2MjE0LCA2MjE4LCA2MjI2LCA2MjM1LCA2MjQxLCA2MjUzLCA2MjU4LCA2MjYxLCA2MjY2LCAKKyAgICA2MjcwLCA2MjgwLCA2Mjg4LCA2Mjk2LCA2MzAyLCA2MzA2LCA2MzE2LCA2MzI2LCA2MzM0LCA2MzQxLCA2MzQ4LCA2MzU0LCAKKyAgICA2MzYwLCA2MzY3LCA2MzcxLCA2Mzc4LCA2Mzg4LCA2Mzk4LCA2NDA2LCA2NDEzLCA2NDE4LCA2NDIyLCA2NDI2LCA2NDM0LCAKKyAgICA2NDM4LCA2NDQzLCA2NDUwLCA2NDU4LCA2NDYzLCA2NDY3LCA2NDcyLCA2NDc2LCA2NDgzLCA2NDg4LCA2NTAyLCA2NTA3LCAKKyAgICA2NTEyLCA2NTE5LCAzNTQxLCA2NTI4LCA2NTMyLCA2NTM3LCA2NTQxLCA2NTQ1LCA2NTQ4LCA2NTUzLCA2NTU4LCA2NTY3LCAKKyAgICA2NTczLCA2NTc5LCA2NTg1LCA2NTg5LCA2NjAwLCA2NjEwLCA2NjI1LCA2NjQwLCA2NjU1LCA2NjcwLCA2Njg1LCA2NzAwLCAKKyAgICA2NzE1LCA2NzMwLCA2NzQ1LCA2NzYwLCA2Nzc1LCA2NzkwLCA2ODA1LCA2ODIwLCA2ODM1LCA2ODUwLCA2ODY1LCA2ODgwLCAKKyAgICA2ODk1LCA2OTEwLCA2OTI1LCA2OTQwLCA2OTU1LCA2OTcwLCA2OTg1LCA3MDAwLCA3MDE1LCA3MDMwLCA3MDQ1LCA3MDYwLCAKKyAgICA3MDc1LCA3MDkwLCA3MTA1LCA3MTIwLCA3MTM1LCA3MTUwLCA3MTY1LCA3MTgwLCA3MTk1LCA3MjEwLCA3MjI1LCA3MjQwLCAKKyAgICA3MjU1LCA3MjcwLCA3Mjg1LCA3MzAwLCA3MzE1LCA3MzMwLCA3MzQ1LCA3MzU0LCA3MzYzLCA3MzY4LCA3Mzc0LCA3Mzg0LCAKKyAgICA3Mzg4LCA3MzkyLCA3Mzk3LCA3NDAyLCA3NDEwLCA3NDE0LCA3NDE3LCA3NDIxLCAzMDM0LCA3NDI0LCA3NDI5LCAzMzAsIAorICAgIDUwNCwgNzQzNSwgNzQ0MywgNzQ0NywgNzQ1MSwgNzQ1NCwgNzQ1OCwgNzQ2NCwgNzQ2OCwgNzQ3NiwgNzQ4MiwgNzQ4NywgCisgICAgNzQ5NCwgNzUwMiwgNzUwOSwgNzUxNSwgNzUyMCwgNzUyNywgNzUzMywgNzU0MSwgNzU0NSwgNzU1MCwgNzU2MiwgNzU3MywgCisgICAgNzU4MCwgNzU4NCwgNzU4OCwgNzU5MiwgNzU5NSwgNzYwMSwgMzMxMSwgNzYwNSwgNzYxMSwgNzYxNiwgNzYyMSwgNzYyNiwgCisgICAgNzYzMiwgNzYzNywgNzY0MiwgNzY0NywgNzY1MiwgNzY1OCwgNzY2MywgNzY2OCwgNzY3NCwgNzY3OSwgNzY4NSwgNzY5MCwgCisgICAgNzY5NiwgNzcwMSwgNzcwNywgNzcxMiwgNzcxNywgNzcyMiwgNzcyNywgNzczMiwgNzczOCwgNzc0MywgNzc0OCwgNzc1MywgCisgICAgNzc1OSwgNzc2NSwgNzc3MSwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCisgICAgNzgzMCwgNzgzNSwgNzg0MCwgNzg0NSwgNzg1MCwgNzg1NSwgNzg2MCwgNzg2NSwgNzg3MSwgNzg3NywgNzg4MiwgNzg4OCwgCisgICAgNzg5NCwgNzkwMCwgNzkwNSwgNzkxMCwgNzkxNSwgNzkyMCwgNzkyNiwgNzkzMiwgNzkzNywgNzk0MiwgNzk0NywgNzk1MiwgCisgICAgNzk1NywgNzk2MywgNzk2OCwgNzk3NCwgNzk4MCwgNzk4NiwgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCisgICAgMjE2NCwgNzQ1MywgODAyNywgODAzMSwgODAzNSwgODAzOCwgODA0NSwgODA0OCwgODA1MiwgODA2MCwgODA2NSwgODA3MCwgCisgICAgODA2MSwgODA3NSwgMjE5MSwgODA3OSwgODA4NSwgODA5MSwgODA5NiwgODEwMSwgODEwOCwgODExNiwgODEyMSwgODEyNSwgCisgICAgODEyOCwgODEzMiwgODEzOCwgODE0NCwgODE0OCwgMjE5OSwgNTI2LCA4MTUxLCA4MTU1LCA4MTYwLCA4MTY2LCA4MTcxLCAKKyAgICA4MTc1LCA4MTc4LCA4MTgyLCA4MTg4LCA4MTkzLCA4MTk3LCA4MjA0LCA4MjA4LCA4MjEyLCA4MjE2LCA4NzYsIDk1OCwgCisgICAgODIxOSwgODIyNywgODIzNCwgODI0MCwgODI0NywgODI1NSwgODI2MiwgODI3MywgODI4MCwgODI4NiwgODI5MSwgODMwMywgCisgICAgMTIyOCwgMTM5MywgMTM5OCwgODMxNCwgMTQwMywgODMxOCwgODMyMiwgODMzMSwgODMzOSwgODM0MywgODM1MiwgODM1OCwgCisgICAgODM2MywgODM2NywgODM3MywgODM3OCwgODM4NSwgMjc0NSwgODM5MiwgODM5NiwgODQwNSwgODQxNCwgODQyMywgODQzMiwgCisgICAgODQzOCwgODQ0MywgODQ0OCwgODQ1OSwgODQ3MSwgODQ3NiwgODQ4NCwgMjI1MCwgODQ4OCwgODQ5MCwgODQ5NSwgODQ5OSwgCisgICAgODUwOCwgODUxNiwgMTQwNywgMTU5LCAzNTgzLCAzNTg4LCA4NTIyLCA4NTI2LCA4NTM1LCA4NTQxLCA4NTQ2LCA4NTQ5LCAKKyAgICA4NTU4LCAzNTkyLCAyNzM3LCA4NTY0LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCAyMjY3LCA4NTg4LCA4NTkzLCA4NjAwLCAKKyAgICA4NjA2LCA4NjEyLCA4NjE1LCA4NjE3LCA4NjIwLCA4NjI4LCA4NjM2LCA4NjQ0LCA4NjQ3LCA4NjUyLCAyMjgwLCA4NjU3LCAKKyAgICA4MDcyLCA4NjYwLCA4NjYyLCA4NjY3LCA4NjcyLCA4Njc3LCA4NjgyLCA4Njg3LCA4NjkyLCA4Njk3LCA4NzAyLCA4NzA3LCAKKyAgICA4NzEyLCA4NzE4LCA4NzIzLCA4NzI4LCA4NzMzLCA4NzM5LCA4NzQ0LCA4NzQ5LCA4NzU0LCA4NzU5LCA4NzY0LCA4NzY5LCAKKyAgICA4Nzc1LCA4NzgwLCA4Nzg1LCA4NzkwLCA4Nzk1LCA4ODAwLCA4ODA1LCA4ODEwLCA4ODE1LCA4ODIwLCA4ODI1LCA4ODMwLCAKKyAgICA4ODM1LCA4ODQwLCA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY2LCA4ODcyLCA4ODc3LCA4ODgyLCA4ODg3LCA4ODkyLCAKKyAgICA4ODk3LCAyMjkxLCAyMjk4LCAyMzA0LCA4OTAyLCA4OTEwLCA4OTE2LCA4OTI0LCAyMzMwLCAyMzM2LCA4OTMyLCA4OTM2LCAKKyAgICA4OTQxLCA4OTQ1LCA4OTQ5LCA4OTUzLCA4OTU4LCA4OTYyLCA4OTY3LCA4OTcxLCA4OTc0LCA4OTc3LCA4OTgzLCA4OTkwLCAKKyAgICA4OTk2LCA5MDAzLCA5MDA5LCA5MDE2LCA5MDIyLCA5MDI5LCA5MDM1LCA5MDQxLCA5MDUwLCA5MDU2LCA5MDYwLCA5MDY0LCAKKyAgICA5MDY4LCA5MDcyLCA5MDc3LCA5MDgxLCA5MDg2LCA5MDkwLCA5MDk2LCA5MTAxLCA5MTA4LCA5MTE5LCA5MTI3LCA5MTM3LCAKKyAgICA5MTQzLCA5MTUzLCA5MTYyLCA5MTY5LCA5MTc0LCA5MTc4LCA5MTg5LCA5MjAyLCA5MjEzLCA5MjI2LCA5MjM3LCA5MjQ5LCAKKyAgICA5MjYxLCA5MjczLCA5Mjg2LCA5Mjk5LCA5MzA2LCA5MzEyLCA5MzI2LCA5MzMzLCA5MzM5LCA5MzQ4LCA5MzU2LCA5MzYwLCAKKyAgICA5MzY1LCA5MzY5LCA5Mzc2LCA5Mzg0LCA5Mzg4LCA5Mzk0LCA5Mzk4LCA5NDA0LCA5NDE0LCA5NDE4LCA5NDIzLCA5NDI4LCAKKyAgICA5NDM1LCA5NDQxLCA5NDUxLCA4MjQyLCA5NDU3LCA5NDYxLCA5NDY4LCA5NDc0LCA5NDgxLCA5NDg4LCA5NTcsIDk0OTIsIAorICAgIDk0OTYsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTUsIDk1MjEsIDk1MjksIDk1MzUsIDk1MzksIDk1NDIsIDk1NDgsIDk1NTgsIAorICAgIDk1NjIsIDk1NjgsIDk1NzMsIDk1NzcsIDk1ODEsIDk1ODcsIDk1OTMsIDIxODcsIDk1OTgsIDk2MDAsIDk2MDUsIDk2MTMsIAorICAgIDk2MjIsIDk2MjYsIDk2MzIsIDk2MzcsIDk2NDIsIDk2NDcsIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjgsIDQyMzUsIDk2NzMsIAorICAgIDk2NzgsIDk2ODIsIDk2ODgsIDk2OTMsIDk2OTksIDk3MDQsIDk3MDksIDk3MTUsIDk3MjAsIDk2MjcsIDk3MjYsIDk3MzAsIAorICAgIDk3MzcsIDk3NDMsIDk3NDgsIDk3NTIsIDY0OTgsIDk3NTcsIDk3NjYsIDk3NzEsIDk3NzYsIDg1OTYsIDg2MDMsIDk3ODEsIAorICAgIDI5MTIsIDk3ODUsIDk3OTAsIDk3OTUsIDk4MDAsIDk2MzgsIDk4MDQsIDk4MDksIDk4MTQsIDk2NDMsIDk4MTgsIDk2NDgsIAorICAgIDk4MjMsIDk4MzAsIDk4MzcsIDk4NDMsIDk4NTAsIDk4NTYsIDk4NjIsIDk4NjcsIDk4NzQsIDk4NzksIDk4ODQsIDk4ODksIAorICAgIDk4OTUsIDk2NTMsIDk2NTksIDk5MDEsIDk5MDcsIDk5MTIsIDk5MTcsIDk5MjUsIDk2NjQsIDk5MzAsIDExMDIsIDk5MzMsIAorICAgIDk5NDEsIDk5NDcsIDk5NTMsIDk5NjIsIDk5NzAsIDk5NzgsIDk5ODYsIDk5OTQsIDEwMDAyLCAxMDAxMCwgMTAwMTgsIAorICAgIDEwMDI2LCAxMDAzNSwgMTAwNDQsIDEwMDUyLCAxMDA2MSwgMTAwNzAsIDEwMDc5LCAxMDA4OCwgMTAwOTcsIDEwMTA2LCAKKyAgICAxMDExNSwgMTAxMjQsIDEwMTMzLCAxMDE0MiwgMTAxNTAsIDEwMTU1LCAxMDE2MSwgMTAxNjksIDEwMTc2LCAxMDE5MSwgCisgICAgMTAyMDgsIDEwMjI3LCAxMDIzNiwgMTAyNDQsIDEwMjU5LCAxMDI3MCwgMTAyODAsIDEwMjkwLCAxMDI5OCwgMTAzMDQsIAorICAgIDEwMzE2LCAxMDMyNSwgMTAzMzMsIDEwMzQwLCAxMDM0NywgMTAzNTQsIDEwMzYwLCAxMDM2NSwgMTAzNzUsIDEwMzgzLCAKKyAgICAxMDM5MywgMTA0MDAsIDEwNDEwLCAxMDQyMCwgMTA0MzAsIDEwNDM4LCAxMDQ0NSwgMTA0NTQsIDEwNDY0LCAxMDQ3OCwgCisgICAgMTA0OTMsIDEwNTAyLCAxMDUxMCwgMTA1MTUsIDEwNTE5LCAxMDUyOCwgMTA1MzQsIDEwNTM5LCAxMDU0OSwgMTA1NTksIAorICAgIDEwNTY5LCAxMDU3NCwgMTA1NzgsIDEwNTg3LCAxMDU5MiwgMTA2MDgsIDEwNjI1LCAxMDYzNSwgMTA2NDYsIDEwNjU5LCAKKyAgICAxMDY2NywgMTA2ODAsIDEwNjkyLCAxMDcwMCwgMTA3MDUsIDEwNzA5LCAxMDcxNSwgMTA3MjAsIDEwNzI4LCAxMDczNiwgCisgICAgMTA3NDMsIDEwNzQ4LCAxMDc1NiwgMTA3NjYsIDEwNzcyLCAxMDc3NiwgMTA3NzksIDEwNzgzLCAxMDc4OSwgMTA3OTYsIAorICAgIDEwODAwLCAxMDgwOCwgMTA4MTcsIDEwODI1LCAxMDgzMiwgMTA4MzcsIDEwODQyLCAxMDg0NiwgMTA4NTAsIDEwODU4LCAKKyAgICAxMDg3MywgMTA4ODksIDEwODk1LCAxMDkwMywgMTA5MTIsIDEwOTIwLCAxMDkyNiwgMTA5MzAsIDEwOTM3LCAxMDk0OCwgCisgICAgMTA5NTIsIDEwOTU1LCAxMDk2MSwgOTY2OSwgMTA5NjYsIDEwOTcyLCAxMDk3OSwgMTA5ODUsIDEwOTkwLCAxMDk5NywgCisgICAgMTEwMDQsIDExMDExLCAxMTAxOCwgMTEwMjUsIDExMDMyLCAxMTAzOSwgMTEwNDYsIDExMDUxLCAxMDIwNCwgMTEwNTYsIAorICAgIDExMDYyLCAxMTA2OSwgMTEwNzYsIDExMDgxLCAxMTA4OCwgMTEwOTcsIDExMTAxLCAxMTExMywgODYzNCwgMTExMTcsIAorICAgIDExMTIwLCAxMTEyNCwgMTExMjgsIDExMTMyLCAxMTEzNiwgMTExNDIsIDExMTQ4LCAxMTE1MywgMTExNTksIDExMTY0LCAKKyAgICAxMTE2OSwgMTExNzUsIDExMTgwLCAxMTE4NSwgOTQzMSwgMTExOTAsIDExMTk0LCAxMTE5OCwgMTEyMDIsIDExMjA3LCAKKyAgICAxMTIxMiwgMTEyMTcsIDExMjI1LCAxMTIzMSwgMTEyMzYsIDExMjQwLCAxMTI0NCwgMTEyNTEsIDExMjU2LCAxMTI2NCwgCisgICAgMTEyNzEsIDExMjc2LCAxMTI4MCwgMTEyODMsIDExMjg5LCAxMTI5NiwgMTEzMDAsIDExMzAzLCAxMTMwOCwgMTEzMTIsIAorICAgIDQyNzQsIDExMzE4LCAxMTMyNywgNDYsIDExMzM1LCAxMTM0MSwgMTEzNDYsIDExMzUxLCAxMTM1OSwgMTEzNjYsIDExMzcxLCAKKyAgICA5NDQ2LCAxMTM3NywgMTEzODMsIDExMzg4LCAxMTM5MiwgMTEzOTUsIDExNDEwLCAxMTQyOSwgMTE0NDEsIDExNDU0LCAKKyAgICAxMTQ2NywgMTE0ODAsIDExNDk0LCAxMTUwNywgMTE1MjIsIDExNTI5LCA5Njc0LCAxMTUzNSwgMTE1NDksIDExNTU0LCAKKyAgICAxMTU2MCwgMTE1NjUsIDExNTczLCAxMTU3OCwgODQwMSwgMTE1ODMsIDExNTg2LCAxMTU5NCwgMTE2MDEsIDExNjA2LCAKKyAgICAxMTYxMCwgMTE2MTYsIDI5MTcsIDEwMjc4LCAxMTYyMCwgMTE2MjQsIDExNjMwLCAxMTYzNiwgMTE2NDEsIDExNjQ3LCAKKyAgICAxMTY1MiwgOTY4MywgMTE2NTgsIDExNjY0LCAxMTY2OSwgMTE2NzQsIDExNjgyLCAxMTY4OCwgMTE3MDEsIDExNzA5LCAKKyAgICAxMTcxNiwgMTE3MjIsIDk2ODksIDExNzI4LCAxMTczNiwgMTE3NDQsIDExNzUxLCAxMTc2NCwgMTE3NzcsIDExNzg5LCAKKyAgICAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyNiwgMTE4MzMsIDExODQzLCAxMTg1MiwgMTE4NjEsIDExODY5LCAxMTg3NiwgCisgICAgMTE4ODEsIDExODg3LCA5Njk0LCAxMTg5MiwgMTE4OTgsIDExOTAzLCAxMTkwOCwgOTcwMCwgMTE5MTMsIDExOTE2LCAKKyAgICAxMTkyMywgMTE5MjksIDExOTQyLCA5MTEyLCAxMTk1MywgMTE5NTksIDExOTY4LCAxMTk3NiwgMTE5ODMsIDExOTg5LCAKKyAgICAxMjAwMCwgMTIwMDYsIDEyMDExLCAzODM2LCAxMjAxOSwgMTIwMjQsIDExNDAyLCAxMjAzMCwgMTIwMzcsIDEyMDQyLCAKKyAgICA5NzA1LCAxMjA0OCwgMTIwNTMsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc3LCAxMjA4NSwgMTIwOTMsIDEyMTAwLCAKKyAgICAxMjEwNCwgMTIxMTYsIDEyMTMwLCAxMjE0MCwgMTIxNDUsIDEyMTQ5LCAxMjE2MCwgMTIxNjYsIDEyMTcxLCAxMjE3NiwgCisgICAgOTcxMCwgMTIxODAsIDk3MTYsIDEyMTg1LCAxMjE4OCwgMTIxOTMsIDEyMjA1LCAxMjIxMiwgMTIyMTcsIDEyMjIxLCAKKyAgICAxMjIyOSwgMTIyMzQsIDEyMjM4LCAxMjI0MywgMTIyNDcsIDEyMjU0LCAxMjI2MCwgOTcyMSwgOTYyOCwgMTIyNjcsIDI5MjIsIAorICAgIDEyLCAxMjI3NCwgMTIyNzksIDEyMjgzLCAxMjI4NywgMTIyOTMsIDEyMzAxLCAxMjMxMSwgMTIzMTYsIDEyMzIxLCAxMjMyOCwgCisgICAgMTIzMzUsIDEyMzM5LCAxMjM1MCwgMTIzNjAsIDEyMzY5LCAxMjM3OCwgMTIzOTAsIDEyMzk1LCAxMjM5OSwgMTI0MDcsIAorICAgIDEyNDIxLCAxMjQyNSwgMTI0MjgsIDEyNDM2LCAxMjQ0MywgMTI0NTEsIDEyNDU1LCAxMjQ2NiwgMTI0NzAsIDEyNDc3LCAKKyAgICAxMjQ4MiwgMTI0ODYsIDEyNDkyLCAxMjQ5NywgMTI1MDMsIDEyNTA4LCAxMjUxMywgMTI1MTcsIDEyNTIzLCAxMjUyOCwgCisgICAgMTI1MzksIDEyNTQzLCAxMjU0NiwgMTI1NTIsIDEyNTU3LCAxMjU2MywgMTI1NjksIDEyNTc2LCAxMjU4NywgMTI1OTcsIAorICAgIDEyNjA3LCAxMjYxNiwgMTI2MjMsIDEyNjMyLCAxMjYzNiwgOTczMSwgOTczOCwgOTc0NCwgOTc0OSwgMTI2NDIsIDEyNjQ4LCAKKyAgICAxMjY1NCwgMTI2NTksIDEyNjY1LCA5NzUzLCAxMjY3MSwgMTI2NzQsIDEyNjgxLCAxMjY4NiwgMTI3MDEsIDEyNzE3LCAKKyAgICAxMjczMiwgMTI3NDAsIDEyNzQ2LCAxMjc1MSwgOTUwLCAzNzQsIDEyNzU2LCAxMjc2NCwgMTI3NzEsIDEyNzc3LCAxMjc4MiwgCisgICAgMTI3ODcsIDk3NTgsIDEyNzg5LCAxMjc5MywgMTI3OTgsIDEyODAyLCAxMjgxMiwgMTI4MTcsIDEyODIxLCAxMjgzMCwgCisgICAgMTI4MzQsIDEyODM3LCAxMjg0NCwgOTc2NywgMTI4NDksIDEyODUyLCAxMjg2MCwgMTI4NjcsIDEyODc1LCAxMjg3OSwgCisgICAgMTI4ODMsIDEyODkwLCAxMjg5OSwgMTI5MDYsIDEyOTAyLCAxMjkxMywgMTI5MTcsIDEyOTIzLCAxMjkyNywgMTI5MzEsIAorICAgIDEyOTM1LCAxMjk0MSwgMTI5NTEsIDEyOTU5LCAxMjk2NiwgMTI5NzAsIDEyOTc4LCAxMjk4MiwgMTI5ODksIDEyOTkzLCAKKyAgICAxMjk5OCwgMTMwMDIsIDEzMDA5LCAxMzAxNSwgMTMwMjMsIDEzMDI5LCAxMzAzNCwgMTMwNDQsIDEzMDQ5LCAxMzA1NCwgCisgICAgMTMwNTgsIDEzMDYyLCAxMzA3MCwgNDEyNCwgMTMwNzgsIDEzMDgzLCA5NzcyLCAxMzA4NywgMTMwOTEsIDEzMDk0LCAKKyAgICAxMzEwMiwgMTMxMDksIDEzMTEzLCA2Mjk4LCAxMzExNywgMTMxMjIsIDEzMTI3LCAxMzEzMSwgMTMxNDIsIDEzMTUyLCAKKyAgICAxMzE1NywgMTMxNjMsIDEzMTY4LCAxMzE3MiwgMTMxNzUsIDEzMTgzLCAxMzE4OCwgMTMxOTMsIDEzMjAwLCAxMzIwNSwgCisgICAgOTc3NywgMTMyMTAsIDEzMjE0LCAxMzIyMSwgMTczNywgNjQ1NiwgMTMyMjYsIDEzMjMxLCAxMzIzNiwgMTMyNDEsIDEzMjQ3LCAKKyAgICAxMzI1MiwgMTMyNTgsIDEzMjYzLCAxMzI2OCwgMTMyNzMsIDEzMjc4LCAxMzI4MywgMTMyODgsIDEzMjkzLCAxMzI5OCwgCisgICAgMTMzMDMsIDEzMzA4LCAxMzMxMywgMTMzMTgsIDEzMzIzLCAxMzMyOCwgMTMzMzMsIDEzMzM4LCAxMzM0NCwgMTMzNDksIAorICAgIDEzMzU0LCAxMzM1OSwgMTMzNjQsIDEzMzY5LCAxMzM3NSwgMTMzODAsIDEzMzg1LCAxMzM5MSwgMTMzOTYsIDEzNDAyLCAKKyAgICAxMzQwNywgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAxMzQzOSwgMTM0NDQsIDEzNDQ5LCAxMzQ1NCwgCisgICAgOTA5LCAxMTIsIDEzNDYyLCAxMzQ2NiwgMTM0NzEsIDEzNDc2LCAxMzQ4MCwgMTM0ODQsIDEzNDg4LCAxMzQ5MywgMTM0OTcsIAorICAgIDEzNTAyLCAxMzUwNiwgMTM1MDksIDEzNTEzLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzOCwgMTM1NDQsIDEzNTUyLCAKKyAgICAxMzU1OCwgMTM1NjIsIDEzNTY2LCAxMzU3MywgMTM1ODEsIDEzNTkwLCAxMzYwMSwgMTM2MTEsIDEzNjE4LCAxMzYyNSwgCisgICAgMTM2MjksIDEzNjM4LCAxMzY0NywgMTM2NTUsIDEzNjY0LCAxMzY3MywgMTM2ODIsIDEzNjkxLCAxMzcwMSwgMTM3MTEsIAorICAgIDEzNzIxLCAxMzczMSwgMTM3NDEsIDEzNzUwLCAxMzc2MCwgMTM3NzAsIDEzNzgwLCAxMzc5MCwgMTM4MDAsIDEzODEwLCAKKyAgICAxMzgyMCwgMTM4MjksIDEzODM5LCAxMzg0OSwgMTM4NTksIDEzODY5LCAxMzg3OSwgMTM4ODksIDEzODk4LCAxMzkwOCwgCisgICAgMTM5MTgsIDEzOTI4LCAxMzkzOCwgMTM5NDgsIDEzOTU4LCAxMzk2OCwgMTM5NzgsIDEzOTg4LCAxMzk5NywgMTQwMDcsIAorICAgIDE0MDE3LCAxNDAyNywgMTQwMzcsIDE0MDQ3LCAxNDA1NywgMTQwNjcsIDE0MDc3LCAxNDA4NywgMTQwOTcsIDE0MTA2LCAKKyAgICAxMjM3LCAxNDExMiwgMTQxMTUsIDE0MTE5LCAxNDEyNCwgMTQxMzEsIDE0MTM3LCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAKKyAgICAxNDE2MCwgMTQxNjgsIDE0MTczLCAxNDE3NywgMTQxODEsIDE0MTg3LCAxNDE5MiwgMTQxOTgsIDk3ODYsIDE0MjAzLCAKKyAgICAxNDIwOCwgMTQyMTcsIDk3OTYsIDE0MjIyLCAxNDIyNSwgMTQyMzEsIDE0MjM5LCA5ODAxLCAxNDI0NiwgMTQyNTAsIAorICAgIDE0MjU0LCAxNDI1OSwgMTQyNjMsIDE0MjczLCAxNDI3OSwgMTQyODUsIDE0MjkwLCAxNDI5OSwgMTQzMDcsIDE0MzE0LCAKKyAgICAxNDMyMSwgMTQzMjYsIDE0MzMzLCAxNDMzOCwgMTQzNDIsIDE0MzQ1LCAxNDM1NiwgMTQzNjYsIDE0Mzc1LCAxNDM4MywgCisgICAgMTQzOTQsIDE0NDA2LCAxNDQxNiwgMTQ0MjEsIDE0NDI1LCAxNDQzMCwgMTQ0MzUsIDE0NDM5LCAxNDQ0NSwgMTQ0NTMsIAorICAgIDE0NDYwLCAxNDQ3MSwgMTQ0NzYsIDE0NDg2LCAxNDQ5NSwgMTQ0OTksIDE0NTAyLCAxNDUwOSwgMTQ1MTksIDE0NTI4LCAKKyAgICAxNDUzNSwgMTQ1MzksIDE0NTQ2LCAxNDU1MiwgMTQ1NTcsIDE0NTYyLCAxNDU2NiwgMTQ1NzUsIDE0NTgwLCAxNDU4NCwgCisgICAgMTQ1OTAsIDE0NTk0LCAxNDU5OSwgMTQ2MDMsIDE0NjEwLCAxNDYxNywgMTQ2MjEsIDE0NjMwLCAxNDYzOCwgMTQ2NDYsIAorICAgIDE0NjUzLCAxNDY2MSwgMTQ2NzMsIDE0Njg0LCAxNDY5NCwgMTQ3MDEsIDE0NzA3LCAxNDcxNiwgMTQ3MjcsIDE0NzM2LCAKKyAgICAxNDc0OCwgMTQ3NjAsIDE0NzcyLCAxNDc4MiwgMTQ3OTEsIDE0ODAwLCAxNDgwOCwgMTQ4MTUsIDE0ODI0LCAxNDgzMiwgCisgICAgMTQ4MzYsIDE0ODQxLCAxNDg0NywgMTQ4NTMsIDE0ODU4LCAxNDg2MywgODA5MywgMTQ4NjcsIDE0ODY5LCAxNDg3MywgCisgICAgMTQ4NzgsIDE0ODg0LCAxNDg5MCwgMTQ4OTksIDE0OTAzLCAxNDkwOSwgMTQ5MTcsIDE0OTI0LCAxNDkzMywgMTQ5NDIsIAorICAgIDE0OTUxLCAxNDk2MCwgMTQ5NjksIDE0OTc4LCAxNDk4NywgMTQ5OTYsIDE1MDA2LCAxNTAxNiwgMTUwMjUsIDE1MDMxLCAKKyAgICAxNTAzOCwgMTUwNDUsIDE1MDUxLCAxNTA2NSwgMTUwNzEsIDE1MDc4LCAxNTA4NiwgMTUwOTUsIDE1MTAzLCAxNTEwOSwgCisgICAgMTUxMTgsIDE1MTI3LCAxNTEzOCwgMTUxNDgsIDE1MTU2LCAxNTE2MywgMTUxNzEsIDE1MTgwLCAxNTE5MywgMTUyMDIsIAorICAgIDE1MjEwLCAxNTIxNywgMTUyMzAsIDE1MjM2LCAxNTI0MiwgMTUyNTIsIDE1MjYxLCAxNTI3MCwgMTUyNzUsIDE1Mjc5LCAKKyAgICAxNTI4NSwgMTUyOTEsIDE1Mjk2LCAxNTMwMywgMTUzMTAsIDk0NDUsIDE1MzE1LCAxNTMyMCwgMTUzMjcsIDE1MzM1LCAKKyAgICAxNTM0MCwgMTUzNDcsIDE1MzUyLCAxNTM2NCwgMTM1MTksIDE1MzY5LCAxNTM3NywgMTUzODMsIDE1Mzg4LCAxNTM5NiwgCisgICAgMTU0MDQsIDE1NDExLCAxNTQxOSwgMTU0MjUsIDE1NDMzLCAxNTQ0MSwgMTU0NDcsIDE1NDUyLCAxNTQ1OCwgMTU0NjUsIAorICAgIDE1NDcxLCAxNTQ3NiwgMTU0ODAsIDE1NDkxLCAxNTQ5OSwgMTU1MDUsIDE1NTEwLCAxNTUxNywgMTU1MjYsIDE1NTMyLCAKKyAgICAxNTUzNywgMTU1NDUsIDE1NTU0LCAxNTU2OCwgNDA2OCwgMTU1NzIsIDE1NTc3LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAKKyAgICAxNTU5OCwgMTU2MDIsIDE1NjA3LCAxNTYxMiwgMTU2MTcsIDgwOTIsIDE1NjIyLCAxNTYyNywgMTU2MzIsIDE1NjM3LCAKKyAgICAxNTY0MiwgMTU2NDYsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDE1NjY2LCAxNTY3MiwgMTU2NzgsIDE1NjgzLCAxNTY4NywgCisgICAgMTU2OTMsIDE1Njk4LCAxNTcwMywgMTU3MDgsIDk4MDUsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAxNTczMywgCisgICAgMTU3NTAsIDE1NzY4LCAxNTc4MCwgMTU3OTMsIDE1ODEwLCAxNTgyNiwgMTU4NDMsIDE1ODUzLCAxNTg3MiwgMTU4ODMsIAorICAgIDE1ODk0LCAxNTkwNSwgMTU5MTYsIDE1OTI4LCAxNTkzOSwgMTU5NTAsIDE1OTY3LCAxNTk3OCwgMTU5ODksIDE1OTk0LCAKKyAgICA5ODEwLCAxNTk5OSwgMTYwMDMsIDI0MjAsIDE2MDA3LCAxNjAxMCwgMTYwMTYsIDE2MDI0LCAxNjAzMiwgMTYwNDEsIAorICAgIDE2MDQ4LCAxNjA1MywgMTYwNjEsIDE2MDY5LCAxNjA3NiwgMTYwODAsIDE2MDg1LCAxNjA5MSwgMTYwOTgsIDE2MTA2LCAKKyAgICAxNjExMywgMTYxMjUsIDE2MTMyLCAxNjEzOCwgMTYxNDYsIDE2MTUxLCAxNjE1NywgMTI2OTUsIDE2MTYzLCAxNjE3MiwgCisgICAgMTYxNzgsIDE2MTgzLCAxNjE5MSwgMTYyMDAsIDE2MjA4LCAxNjIxNSwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDIsIAorICAgIDE2MjQ4LCAxNjI1NSwgMTYyNjIsIDE2MjY4LCAxNjI3NCwgMTYyODMsIDE2MjkxLCAxNjMwMSwgMTYzMDgsIDE2MzE0LCAKKyAgICAxNjMyMiwgMTYzMjgsIDE2MzM2LCAxNjM0NCwgMTYzNTEsIDE2MzY0LCAxNjM3MSwgMTYzODAsIDE2Mzg5LCAxNjM5OCwgCisgICAgMTY0MDYsIDE2NDE2LCAxNjQyMywgMTY0MjgsIDM3MjcsIDE2NDM1LCAxNjQ0MCwgMTM1MywgMTY0NDQsIDE1NjIzLCAKKyAgICAxNjQ0OCwgMTY0NTQsIDE2NDU4LCAxNjQ2NiwgMTY0NzgsIDE2NDgzLCAxNjQ5MCwgMTY0OTYsIDE2NTAxLCAxNjUwOCwgCisgICAgMTU2MjgsIDE2NTEyLCAxNjUxNiwgMTY1MjAsIDE1NjMzLCAxNjUyNCwgMTU2MzgsIDE2NTI4LCAxNjUzNSwgMTY1NDAsIAorICAgIDE2NTQ0LCAxNjU1MSwgMTY1NTUsIDE2NTYzLCAxNjU3MCwgMTY1NzUsIDE2NTc5LCAxNjU4NiwgMTY2MDMsIDE2NjEyLCAKKyAgICAxNjYxNiwgMTY2MTksIDE2NjI3LCAxNjYzMywgMTY2MzgsIDM4MDUsIDE2NjQyLCAxNjY0NCwgMTY2NTIsIDE2NjU5LCAKKyAgICAxNjY2OSwgMTY2ODEsIDE2Njg2LCAxNjY5MCwgMTY2OTYsIDE2NzAxLCAxNjcwNSwgMTY3MTEsIDE2NzE2LCAxNjcyMiwgCisgICAgMTY3MjUsIDE2NzMyLCAxNjc0MCwgMTY3NDcsIDE2NzUzLCAxNjc1OCwgMTY3NjQsIDE2NzY5LCAxNjc3NiwgMTY3ODIsIAorICAgIDE2Nzg3LCAxNjc5NCwgMTY3OTksIDE2ODAzLCAxNjgwOSwgMTY4MTMsIDE2ODIwLCAxNjgyNiwgMTY4MzEsIDE2ODM3LCAKKyAgICAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc3LCAxNjg4MywgMTY4OTEsIDE2ODk5LCAxNjkwNSwgCisgICAgMTY5MTEsIDE2OTE2LCAxNjkyMywgMTY5MjgsIDE2OTMyLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjEsIAorICAgIDE2OTY0LCAxNjk3MCwgMTY5NzYsIDE2OTc5LCAxNjk4MywgMTY5ODcsIDE2OTk5LCAxNzAwNSwgMTcwMTAsIDE3MDE3LCAKKyAgICAxNzAyMywgMTcwMjksIDE3MDQwLCAxNzA1MCwgMTcwNTksIDE3MDY3LCAxNzA3NCwgMTcwODUsIDE3MDk1LCAxNzEwNSwgCisgICAgMTcxMTMsIDE3MTE2LCAxNTY1MiwgMTcxMjEsIDE3MTI2LCAxNTY1NywgMTU3OTgsIDE3MTM0LCAxNzE0NywgMTcxNjIsIAorICAgIDE3MTczLCAxNTgxNSwgMTcxOTEsIDE3MjA0LCAxNzIxNywgMTcyMjgsIDExNDE3LCAxNzIzOSwgMTcyNTIsIDE3MjcxLCAKKyAgICAxNzI4MiwgMTcyOTMsIDE3MzA0LCAyNjg4LCAxNzMxNywgMTczMjEsIDE3MzI5LCAxNzM0MCwgMTczNDgsIDE3MzYzLCAKKyAgICAxNzM3OCwgMTczODksIDE3Mzk2LCAxNzQwMiwgMTc0MTAsIDE3NDE0LCAxNzQyMCwgMTc0MjMsIDE3NDM2LCAxNzQ0OCwgCisgICAgMTc0NTgsIDE3NDY2LCAxNzQ3MywgMTc0ODEsIDE3NDkxLCAxNzQ5NiwgMTc1MDMsIDE3NTA4LCAxNzUxNSwgMTc1MjYsIAorICAgIDE3NTM2LCAxNzU0MiwgMTc1NDcsIDE3NTUyLCAxNTY2MiwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzMsIDE3NTc4LCAKKyAgICAxNzU4MywgMTc1ODcsIDE1NjY3LCAxNTY3MywgMTc1OTEsIDE1Njc5LCAxNzU5NiwgMTc2MDQsIDE3NjA5LCAxNzYxMywgCisgICAgMTc2MjEsIDE3NjMwLCAxNzYzNywgMTc2NDEsIDk2NDksIDE3NjQ1LCAxNzY0NywgMTc2NTIsIDE3NjU3LCAxNzY2MywgCisgICAgMTc2NjgsIDE3NjczLCAxNzY3OCwgMTc2ODMsIDE3Njg3LCAxNzY5MywgMTc2OTksIDE3NzA0LCAxNzcxMCwgMTc3MTUsIAorICAgIDE3NzIwLCAxNzcyNCwgMTc3MzAsIDE3NzM1LCAxNzc0MCwgMTc3NDUsIDE3NzU3LCAxNzc2MiwgMTc3NjgsIDE3NzczLCAKKyAgICAxNzc3OCwgMTc3ODQsIDE3NzkwLCAxNzc5NSwgMTc4MDAsIDE3ODA1LCAxNzgxMiwgMTc4MTgsIDE3ODI5LCAxNzgzNiwgCisgICAgMTc4NDEsIDE3ODQ1LCAxNzg0OSwgMTc4NTIsIDE3ODYwLCAxNzg2NSwgMTc4NzIsIDE3ODc5LCAxNzg4NSwgMTc4OTAsIAorICAgIDE3ODk1LCAxNzkwMCwgMTc5MDcsIDE3OTE3LCAxNzkyNSwgMTc5MzAsIDE3OTM3LCAxNzk0MywgMTc5NTIsIDE3OTYyLCAKKyAgICAxNzk3MiwgMTc5ODYsIDE4MDAwLCAxODAxNCwgMTgwMjgsIDE4MDQzLCAxODA1OCwgMTgwNzUsIDE4MDkzLCAxODEwNiwgCisgICAgMTgxMTIsIDE4MTE3LCAxODEyMiwgMTgxMjYsIDE4MTM0LCAxODEzOSwgMTgxNDcsIDE4MTUzLCAxODE1OSwgMTgxNjQsIAorICAgIDE4MTY5LCAxODE3MywgMTgxNzgsIDE4MTgyLCAxODE4NywgMTgxOTEsIDE4MjAyLCAxODIwOCwgMTgyMTMsIDE4MjE4LCAKKyAgICAxODIyNSwgMTgyMzAsIDE4MjM0LCAzNjkwLCAxODIzOSwgMTgyNDUsIDE4MjUyLCAxNTY4OCwgMTgyNTgsIDE4MjYyLCAKKyAgICAxODI2OCwgMTgyNzMsIDE4Mjc4LCAxODI4MiwgMTgyODgsIDE4MjkzLCAxODI5OCwgMTgzMDUsIDE4MzEwLCAxNDI3NSwgCisgICAgMTgzMTQsIDE4MzE5LCAxODMyMywgMTgzMjgsIDE4MzM0LCAxODM0MCwgMTgzNDcsIDE4MzU3LCAxODM2NSwgMTgzNzIsIAorICAgIDE4Mzc3LCAxODM4MSwgMTgzOTAsIDE4Mzk4LCAxODQwNSwgMTg0MTIsIDE4NDE4LCAxODQyMywgMTg0MjksIDE4NDM0LCAKKyAgICAxODQzOSwgMTg0NDUsIDE4NDUwLCAxODQ1NiwgMTg0NjEsIDE4NDY3LCAxODQ3MywgMTg0ODAsIDE4NDg2LCAxODQ5MSwgCisgICAgMTg0OTYsIDk4NzUsIDE4NTA1LCAxODUwOCwgMTg1MTYsIDE4NTIyLCAxODUyNywgMTg1MzIsIDE4NTQyLCAxODU0OSwgCisgICAgMTg1NTUsIDE4NTYwLCAxODU2NSwgMTg1NzEsIDE4NTc2LCAxODU4MiwgMTg1ODcsIDE4NTkzLCAxODU5OSwgMTg2MDQsIAorICAgIDE4NjEyLCAxODYxOSwgMTg2MjQsIDE4NjI5LCAxODYzNSwgMTg2NDAsIDE4NjQ0LCAxODY1MywgMTg2NjQsIDE4NjcxLCAKKyAgICAxODY3OSwgMTg2ODYsIDE4NjkxLCAxODY5NiwgMTg3MDIsIDE4NzA3LCAxODcxNSwgMTg3MjEsIDE4NzI3LCAxODczNCwgCisgICAgMTg3NDAsIDE4NzQ1LCAxODc0OSwgMTg3NTUsIDE4NzYwLCAxODc2NSwgMTg3NjksIDE4Nzc0LCAxNDI2LCA4MTE3LCAyOTM2LCAKKyAgICAxODc3OCwgMTg3ODIsIDE4Nzg2LCAxODc5MCwgMTg3OTQsIDE4Nzk4LCAxODgwMSwgMTg4MDYsIDE4ODEzLCAxODgyMSwgCisgICAgMTU2OTksIDE4ODI4LCAxODgzOCwgMTg4NDYsIDE4ODUzLCAxODg2MSwgMTg4NzEsIDE4ODgwLCA5MjIwLCAxODg5MywgCisgICAgMTg4OTgsIDE4OTAzLCAxODkxMSwgMTg5MTgsIDE0MzcxLCAxNDM4MCwgMTg5MjUsIDE4OTM1LCAxODk1MCwgMTg5NTYsIAorICAgIDE4OTYzLCAxODk3MCwgMTg5NzYsIDE4OTgyLCAxODk5MywgMTkwMDEsIDE5MDA5LCAxOTAxOSwgMTkwMjksIDE1NzA0LCAKKyAgICAxOTAzOCwgMTkwNDQsIDE5MDUwLCAxOTA1OCwgMTkwNjYsIDE5MDcxLCAxOTA4MCwgMTkwODgsIDE5MTAwLCAxOTExMCwgCisgICAgMTkxMjAsIDE5MTMwLCAxOTEzOSwgMTkxNTEsIDE5MTYxLCAxOTE3MSwgMTkxODIsIDE5MTg3LCAxOTE5OSwgMTkyMTEsIAorICAgIDE5MjIzLCAxOTIzNSwgMTkyNDcsIDE5MjU5LCAxOTI3MSwgMTkyODMsIDE5Mjk1LCAxOTMwNywgMTkzMTgsIDE5MzMwLCAKKyAgICAxOTM0MiwgMTkzNTQsIDE5MzY2LCAxOTM3OCwgMTkzOTAsIDE5NDAyLCAxOTQxNCwgMTk0MjYsIDE5NDM4LCAxOTQ0OSwgCisgICAgMTk0NjEsIDE5NDczLCAxOTQ4NSwgMTk0OTcsIDE5NTA5LCAxOTUyMSwgMTk1MzMsIDE5NTQ1LCAxOTU1NywgMTk1NjksIAorICAgIDE5NTgwLCAxOTU5MiwgMTk2MDQsIDE5NjE2LCAxOTYyOCwgMTk2NDAsIDE5NjUyLCAxOTY2NCwgMTk2NzYsIDE5Njg4LCAKKyAgICAxOTcwMCwgMTk3MTEsIDE5NzIzLCAxOTczNSwgMTk3NDcsIDE5NzU5LCAxOTc3MSwgMTk3ODMsIDE5Nzk1LCAxOTgwNywgCisgICAgMTk4MTksIDE5ODMxLCAxOTg0MiwgMTk4NTQsIDE5ODY2LCAxOTg3OCwgMTk4OTAsIDE5OTAyLCAxOTkxNCwgMTk5MjYsIAorICAgIDE5OTM4LCAxOTk1MCwgMTk5NjIsIDE5OTczLCAxOTk4NSwgMTk5OTcsIDIwMDA5LCAyMDAyMSwgMjAwMzMsIDIwMDQ1LCAKKyAgICAyMDA1NywgMjAwNjksIDIwMDgxLCAyMDA5MywgMjAxMDQsIDIwMTE2LCAyMDEyOCwgMjAxNDAsIDIwMTUyLCAyMDE2NSwgCisgICAgMjAxNzgsIDIwMTkxLCAyMDIwNCwgMjAyMTcsIDIwMjMwLCAyMDI0MywgMjAyNTUsIDIwMjY4LCAyMDI4MSwgMjAyOTQsIAorICAgIDIwMzA3LCAyMDMyMCwgMjAzMzMsIDIwMzQ2LCAyMDM1OSwgMjAzNzIsIDIwMzg1LCAyMDM5NywgMjA0MTAsIDIwNDIzLCAKKyAgICAyMDQzNiwgMjA0NDksIDIwNDYyLCAyMDQ3NSwgMjA0ODgsIDIwNTAxLCAyMDUxNCwgMjA1MjcsIDIwNTM5LCAyMDU1MiwgCisgICAgMjA1NjUsIDIwNTc4LCAyMDU5MSwgMjA2MDQsIDIwNjE3LCAyMDYzMCwgMjA2NDMsIDIwNjU2LCAyMDY2OSwgMjA2ODEsIAorICAgIDIwNjk0LCAyMDcwNywgMjA3MjAsIDIwNzMzLCAyMDc0NiwgMjA3NTksIDIwNzcyLCAyMDc4NSwgMjA3OTgsIDIwODExLCAKKyAgICAyMDgyMywgMjA4MzYsIDIwODQ5LCAyMDg2MiwgMjA4NzUsIDIwODg4LCAyMDkwMSwgMjA5MTQsIDIwOTI3LCAyMDk0MCwgCisgICAgMjA5NTMsIDIwOTY1LCAyMDk3NiwgMjA5ODksIDIxMDAyLCAyMTAxNSwgMjEwMjgsIDIxMDQxLCAyMTA1NCwgMjEwNjcsIAorICAgIDIxMDgwLCAyMTA5MywgMjExMDYsIDIxMTE4LCAyMTEzMSwgMjExNDQsIDIxMTU3LCAyMTE3MCwgMjExODMsIDIxMTk2LCAKKyAgICAyMTIwOSwgMjEyMjIsIDIxMjM1LCAyMTI0OCwgMjEyNjAsIDIxMjczLCAyMTI4NiwgMjEyOTksIDIxMzEyLCAyMTMyNSwgCisgICAgMjEzMzgsIDIxMzUxLCAyMTM2NCwgMjEzNzcsIDIxMzkwLCAyMTQwMiwgMjE0MTUsIDIxNDI4LCAyMTQ0MSwgMjE0NTQsIAorICAgIDIxNDY3LCAyMTQ4MCwgMjE0OTMsIDIxNTA2LCAyMTUxOSwgMjE1MzIsIDIxNTQ0LCAyMTU1NywgMjE1NzAsIDIxNTgzLCAKKyAgICAyMTU5NiwgMjE2MDksIDIxNjIyLCAyMTYzNSwgMjE2NDgsIDIxNjYxLCAyMTY3NCwgMjE2ODYsIDIxNjk5LCAyMTcxMiwgCisgICAgMjE3MjUsIDIxNzM4LCAyMTc1MSwgMjE3NjQsIDIxNzc3LCAyMTc5MCwgMjE4MDMsIDIxODE2LCAyMTgyOCwgMjE4NDEsIAorICAgIDIxODU0LCAyMTg2NywgMjE4ODAsIDIxODkzLCAyMTkwNiwgMjE5MTksIDIxOTMyLCAyMTk0NSwgMjE5NTgsIDIxOTcwLCAKKyAgICAyMTk4MywgMjE5OTYsIDIyMDA5LCAyMjAyMiwgMjIwMzUsIDIyMDQ4LCAyMjA2MSwgMjIwNzQsIDIyMDg3LCAyMjEwMCwgCisgICAgMjIxMTIsIDIyMTI1LCAyMjEzOCwgMjIxNTEsIDIyMTY0LCAyMjE3NywgMjIxOTAsIDIyMjAzLCAyMjIxNiwgMjIyMjksIAorICAgIDIyMjQyLCAyMjI1NCwgMjIyNjcsIDIyMjgwLCAyMjI5MywgMjIzMDYsIDIyMzE5LCAyMjMzMiwgMjIzNDUsIDIyMzU4LCAKKyAgICAyMjM3MSwgMjIzODQsIDIyMzk2LCAyMjQwNywgMjI0MTYsIDIyNDI0LCAyMjQzMiwgMjI0MzksIDIyNDQ1LCAyMjQ0OSwgCisgICAgMjI0NTUsIDIyNDYxLCAyMjQ2OSwgMjI0NzQsIDIyNDgwLCAyMjQ4NSwgMjI0ODksIDIyNDk4LCA5NjU0LCAyMjUwOSwgCisgICAgMjI1MTYsIDIyNTI0LCAyMjUzMSwgMjI1MzgsIDExOTM2LCAyMjU0NSwgMjI1NTIsIDIyNTYxLCAyMjU2NiwgMjI1NzEsIAorICAgIDgxNDUsIDIyNTc4LCAyMjU4MywgMjI1ODYsIDIyNTkxLCAyMjU5OSwgMjI2MDYsIDIyNjEzLCAyMjYyMCwgMjI2MjYsIAorICAgIDIyNjM1LCAyMjY0NCwgMjI2NTMsIDIyNjU5LCAyMjY2OCwgMjI2NzIsIDIyNjc4LCAyMjY4MywgMjI2OTMsIDIyNzAwLCAKKyAgICAyMjcwNiwgMjI3MTQsIDIyNzIwLCAyMjcyNywgMjI3MzcsIDIyNzQ2LCAyMjc1MCwgMjI3NTcsIDIyNzYxLCAyMjc2NiwgCisgICAgMjI3NzIsIDIyNzgwLCAyMjc4NCwgMjI3OTQsIDE1NzE0LCAyMjgwMywgMjI4MDksIDIyODEzLCAyMjgyMiwgMjI4MzIsIAorICAgIDE1NzE5LCAyMjgzOCwgMjI4NDUsIDIyODU2LCAyMjg2NCwgMjI4NzQsIDIyODgzLCAyMjg5MSwgOTQxMCwgMjI4OTksIAorICAgIDIyOTA0LCAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyMywgMjI5MjcsIDEwMzc5LCAyMjkzMiwgMjI5NDAsIDIyOTQ3LCAKKyAgICAyMjk1NiwgMjI5NjMsIDIyOTcwLCAyMjk3NiwgMTE4NTYsIDIyOTgzLCAyMjk4OSwgMjI5OTMsIDIyOTk5LCAyMzAwNiwgCisgICAgMjMwMTIsIDIzMDIwLCAyMzAyNiwgMjMwMzMsIDIzMDM5LCAyMzA0NSwgMjMwNTQsIDIzMDU4LCAyMzA2NiwgMjMwNzUsIAorICAgIDIzMDgyLCAyMzA4NywgMjMwOTEsIDIzMTAyLCAyMzEwNywgMjMxMTIsIDIzMTE3LCAyMzEzMCwgODM0OSwgMjMxMzQsIAorICAgIDIzMTQwLCAyMzE0NSwgMjMxNTMsIDIzMTU3LCAyMzE2NCwgMjMxNzMsIDIzMTc4LCAxNTk5MCwgMjMxODYsIDIzMTkwLCAKKyAgICAyMzIwMiwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMjAsIDIzMjI2LCAyMzIzMiwgMjMyMzcsIDIzMjQxLCAyMzI0NCwgCisgICAgMjMyNTUsIDIzMjYwLCA5OTI2LCAyMzI2NywgMjMyNzIsIDEyNDMsIDk5MzEsIDIzMjc3LCAyMzI4MiwgMjMyODcsIDIzMjkyLCAKKyAgICAyMzI5NywgMjMzMDIsIDIzMzA3LCAyMzMxMiwgMjMzMTcsIDIzMzIyLCAyMzMyNywgMjMzMzIsIDIzMzM4LCAyMzM0MywgCisgICAgMjMzNDgsIDIzMzUzLCAyMzM1OCwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzNzgsIDIzMzgzLCAyMzM4OSwgMjMzOTUsIAorICAgIDIzNDAwLCAyMzQwNSwgMjM0MTAsIDIzNDE1LCAyMzQyMCwgMjM0MjUsIDIzNDMwLCAyMzQzNSwgMjM0NDAsIDIzNDQ2LCAKKyAgICAyMzQ1MSwgMjM0NTYsIDIzNDYxLCAyMzQ2NywgMjM0NzMsIDIzNDc4LCAyMzQ4MywgMjM0ODgsIDIzNDkzLCAyMzQ5OCwgCisgICAgMjM1MDMsIDIzNTA4LCAyMzUxMywgMjM1MTksIDIzNTI0LCAyMzUyOSwgMjM1MzQsIDIzNTM5LCAyMzU0NSwgMjM1NTAsIAorICAgIDIzNTU1LCAyMzU1OSwgMTM0LCAyMzU2NywgMjM1NzEsIDIzNTc1LCAyMzU3OSwgMjM1ODQsIDIzNTg4LCAxNDI4MSwgMjM0NiwgCisgICAgMjM1OTIsIDIzNTk3LCAyMzYwMSwgMjM2MDYsIDIzNjEwLCAyMzYxNSwgMjM2MTksIDIzNjI1LCAyMzYzMCwgMjM2MzQsIAorICAgIDIzNjM4LCAyMzY0NiwgMjM2NTAsIDIzNjU0LCAyMzY1OSwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzksIDIzNjgzLCAKKyAgICAyMzY4OCwgMjM2OTMsIDIzNjk3LCAyMzcwNCwgMjM3MTEsIDIzNzE4LCAyMzcyMiwgMjM3MjYsIDIzNzMxLCAyMzczNSwgCisgICAgMjM3MzgsIDIzNzQ0LCAyMzc1NywgMjM3NjIsIDIzNzY4LCAyMzc3NywgMjM3ODIsIDEwMTUxLCAyMzc4NywgMjM3OTYsIAorICAgIDIzODAxLCAyMzgwNCwgMjc1MSwgMjc1NiwgMjM4MDgsIDIzODE0LCAyMzgyMCwgNzUzOCwgMjM4MjUsIDIzODMwLCAyMzgzNSwgCisgICAgMjM4NDEsIDIzODQ2LCAxNTEzNCwgMjM4NTEsIDIzODU2LCAyMzg2MSwgMjM4NjYsIDIzODcyLCAyMzg3NywgMjM4ODIsIAorICAgIDIzODg4LCAyMzg5MywgMjM4OTcsIDIzOTAyLCAyMzkwNywgMjM5MTIsIDIzOTE3LCAyMzkyMiwgMjM5MjYsIDIzOTMxLCAKKyAgICAyMzkzNSwgMjM5NDAsIDIzOTQ1LCAyMzk1MCwgMjM5NTUsIDIzOTU5LCAyMzk2NCwgMjM5NjgsIDIzOTczLCAyMzk3OCwgCisgICAgMjM5ODMsIDIzODk4LCAyOTQ1LCAyMzkwMywgMjM5ODgsIDIzOTk2LCAyNDAwMywgMTA0NzMsIDI0MDE1LCAyNDAyMywgCisgICAgMjQwMzMsIDI0MDUxLCAyNDA3MCwgMjQwNzksIDI0MDg3LCAyMzkwOCwgMjQwOTQsIDI0MDk5LCAyNDEwNywgMjM5MTMsIAorICAgIDI0MTEyLCAyNDExNywgMjQxMjUsIDI0MTMwLCAyMzkxOCwgMjQxMzUsIDI0MTQzLCAyNDE0OCwgMjQxNTIsIDI0MTU5LCAKKyAgICAyNDE2NSwgMjQxNzQsIDI0MTgyLCAyNDE4NiwgMjQxODksIDI0MTk2LCAyNDIwMCwgMjQyMDQsIDI0MjA5LCAyNDIxNSwgCisgICAgMjQyMjIsIDI0MjI3LCA5NDM3LCAxNzQyLCAxNzQ3LCAyNDIzMSwgMjQyMzcsIDI0MjQzLCAyNDI0OCwgMjQyNTIsIDI0MjU2LCAKKyAgICAyNDI2MCwgMjQyNjQsIDI0MjY4LCAyNDI3MiwgMjQyNzYsIDI0MjgwLCAyNDI4MywgMjQyODksIDI0Mjk2LCAyNDMwNCwgCisgICAgMjQzMTAsIDI0MzE2LCAyNDMyMSwgMjQzMjYsIDI0MzMyLCAyNDMzNiwgMjQzNDEsIDE1MDQwLCAxNTA0NywgMjQzNDgsIAorICAgIDI0MzYwLCAyNDM2MywgMjQzNzAsIDI0Mzc0LCAxNzg4MSwgMjQzODEsIDI0Mzg5LCAyNDQwMCwgMjQ0MDksIDI0NDIyLCAKKyAgICAyNDQzMiwgMjQ0NDYsIDI0NDU4LCAyNDQ3MiwgMjQ0ODUsIDI0NDk3LCAyNDUwNywgMjQ1MTksIDI0NTI1LCAyNDU0MCwgCisgICAgMjQ1NjQsIDI0NTgyLCAyNDYwMSwgMjQ2MTQsIDI0NjI4LCAyNDY0NiwgMjQ2NjIsIDI0Njc5LCAyNDY5NywgMjQ3MDgsIAorICAgIDI0NzI3LCAyNDc0NCwgMjQ3NjQsIDI0NzgyLCAyNDc5NCwgMjQ4MDgsIDI0ODIyLCAyNDgzNCwgMjQ4NTEsIDI0ODcwLCAKKyAgICAyNDg4OCwgMjQ5MDAsIDI0OTE4LCAyNDkzNywgMTU4NTgsIDI0OTUwLCAyNDk3MCwgMjQ5ODIsIDExNDQ4LCAyNDk5NCwgCisgICAgMjQ5OTksIDI1MDA0LCAyNTAwOSwgMjUwMTUsIDI1MDIwLCAyNTAyNCwgMjUwMzEsIDI1MDM3LCAyNDM3LCAyNTA0MSwgCisgICAgMjUwNDcsIDI1MDUxLCAyNTA1NCwgMjUwNTgsIDI1MDYxLCAyNTA2OSwgMjUwNzUsIDIzOTM2LCAyNTA3OSwgMjUwODgsIAorICAgIDI1MDk5LCAyNTEwNSwgMjUxMTEsIDI1MTI2LCAyNTEzNSwgMjUxNDMsIDI1MTUwLCAyNTE1NSwgMjUxNTksIDI1MTY2LCAKKyAgICAyNTE3MiwgMjUxODEsIDI1MTg5LCAyNTE5NiwgMjUyMDYsIDI1MjE1LCAyNTIyNSwgMjUyMzAsIDI1MjM5LCAyNTI0OCwgCisgICAgMjUyNTksIDI1MjcwLCA0MTkyLCAyNTI4MCwgMjUyODQsIDI1Mjk0LCAyNTMwMiwgMjUzMTIsIDI1MzIzLCAyNTMyOCwgCisgICAgMjUzMzgsIDI1MzQ2LCAyNTM1MywgMjUzNTksIDI1MzY2LCAyNTM3MSwgMjM5NDYsIDI1Mzc1LCAyNTM4NCwgMjUzODgsIAorICAgIDI1MzkxLCAyNTM5NiwgMjU0MDQsIDI1NDExLCAyNTQyMCwgMjU0MjgsIDI1NDM2LCAyNTQ0NCwgMjU0NTQsIDI1NDYzLCAKKyAgICAyNTQ2OSwgMjU0NzUsIDI1NDc5LCAyMzk1MSwgMjM5NTYsIDI1NDgzLCAyNTQ5MywgMjU1MDMsIDI1NTEzLCAyNTUyMSwgCisgICAgMjU1MjgsIDI1NTM4LCAyNTU0NiwgMjU1NTQsIDI1NTYwLCAyNTU2OCwgODY1LCAyNTU3NywgMTYwNjUsIDYxNSwgMjU1OTEsIAorICAgIDI1NjAwLCAyNTYwOCwgMjU2MTksIDI1NjMwLCAyNTY0MCwgMjU2NDksIDI1NjYxLCAyNTY3MCwgMjU2NzksIDI1Njg2LCAKKyAgICAyNTY5MiwgMjU3MDIsIDI1NzExLCAyNTcyMCwgMjU3MjgsIDI1NzM4LCAyNTc0NiwgMjU3NTQsIDk4OTIsIDI1NzYwLCAKKyAgICAyNTc2MywgMjU3NjcsIDI1NzcyLCAyNTc3NywgMjU3ODEsIDEwNTg4LCAyMzk2OSwgMjM5NzQsIDI1Nzg5LCAyNTc5NSwgCisgICAgMjU4MDEsIDI1ODA2LCAyNTgxMSwgMjU4MTUsIDI1ODIzLCAyNTgyOSwgMjU4MzUsIDI1ODM5LCAzNjc1LCAyNTg0NywgCisgICAgMjU4NTIsIDI1ODU3LCAyNTg2MSwgMjU4NjUsIDEwNzAxLCAyNTg3MiwgMjU4ODAsIDI1ODk0LCAyNTkwMSwgMjU5MDcsIAorICAgIDEwNzEwLCAxMDcxNiwgMjU5MTUsIDI1OTIzLCAyNTkzMCwgMjU5MzUsIDI1OTQwLCAyMzk3OSwgMjU5NDYsIDI1OTU3LCAKKyAgICAyNTk2MSwgMjU5NjYsIDI2NDAsIDI1OTcxLCAyNTk4MiwgMjU5ODgsIDI1OTkzLCAyNTk5NywgMjYwMDEsIDI2MDA0LCAKKyAgICAyNjAxMSwgMjYwMTgsIDI2MDI0LCAyNjAzMSwgMjYwMzcsIDI2MDQxLCAyMzk4NCwgMjYwNDYsIDI2MDUwLCAyNjA1NCwgCisgICAgMTQzMSwgODU0NCwgMjYwNTksIDI2MDY0LCAyNjA2OSwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDk0LCAKKyAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTksIDI2MTI0LCAyNjEzMCwgMjYxMzUsIDI2MTQwLCAyNjE0NSwgCisgICAgMjYxNTAsIDI2MTU1LCAyNjE2MCwgMjYxNjYsIDI2MTcxLCAyNjE3NiwgMjYxODEsIDI2MTg2LCAyNjE5MSwgMjYxOTYsIAorICAgIDI2MjAxLCAyNjIwNywgMjYyMTMsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCA1LCAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAKKyAgICAyNjI1MiwgMjYyNTcsIDI2MjYxLCAyNjI2NSwgMjYyNjksIDI2MjczLCAyNjI3OCwgMjYyODIsIDI2Mjg3LCAyNjI5MSwgCisgICAgMjYyOTQsIDI2Mjk4LCAyNjMwMywgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI0LCAyNjMyOSwgMjYzMzMsIAorICAgIDI2MzM3LCAyNjM0NywgMjYzNTIsIDI2MzU2LCAyNjM2MCwgMjYzNjUsIDI2MzcwLCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAKKyAgICAyNjM5MywgMjYzOTcsIDI2NDEwLCAyNjQyMiwgMjY0MzEsIDI2NDQwLCAyNjQ0NSwgMjY0NTEsIDI2NDU2LCAyNjQ2MCwgCisgICAgMjY0NjQsIDI2NDc0LCAyNjQ4MywgMjY0OTEsIDI2NDk3LCAyNjUwMiwgMjY1MDYsIDI2NTEzLCAyNjUyMywgMjY1MzIsIAorICAgIDI2NTQwLCAxMTc3MCwgMjY1NDgsIDI2NTU2LCAyNjU2NSwgMjY1NzQsIDI2NTgyLCAyNjU5MiwgMjY1OTcsIDI2NjAxLCAKKyAgICAyNjYwNSwgMjY2MDgsIDI2NjEwLCAyNjYxNCwgMjY2MTgsIDI2NjIzLCAyNjYyOCwgMjY2MzIsIDI2NjM2LCAyNjYzOSwgCisgICAgMjY2NDMsIDI2NjQ2LCAyNjY1MCwgMjY2NTMsIDI2NjU2LCAyNjY2MCwgMjY2NjYsIDI2NjcwLCAyNjY3NCwgMjY2NzgsIAorICAgIDI2NjgzLCAyNjY4OCwgMjY2OTMsIDI2Njk3LCAyNjcwMCwgMjY3MDUsIDI2NzExLCAyNjcxNiwgMjY3MjIsIDI2NzI3LCAKKyAgICAyNjczMSwgMjY3MzcsIDI2NzQxLCAyNjc0NSwgMjY3NTAsIDI2NzU0LCAyNjc1OSwgMjY3NjQsIDI2NzY4LCAyNjc3MiwgCisgICAgMjY3NzksIDI2NzgzLCAyNjc4NiwgMjY3OTAsIDI2Nzk0LCAyNjgwMCwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTksIAorICAgIDI2ODI2LCAyNjgzMiwgMjY4MzYsIDI2ODQ1LCAyNjg0OSwgMjY4NTMsIDI2ODU2LCAyNjg2MiwgMjY4NjcsIDI2ODczLCAKKyAgICAxNDc1LCAxODA2LCAyNjg3OCwgMjY4ODMsIDI2ODg4LCAyNjg5MywgMjY4OTgsIDI2OTAzLCAyNjkwOCwgMjE3NCwgMjIyMCwgCisgICAgMjY5MTMsIDI2OTE2LCAyNjkyMCwgMjY5MjQsIDI2OTI5LCAyNjkzMywgMTYwNzcsIDI2OTM3LCAyNjk0MiwgMjY5NDcsIAorICAgIDI2OTUxLCAyNjk1NCwgMjY5NTksIDI2OTYzLCAyNjk2OCwgMjY5NzIsIDE2MDgxLCAyNjk3NywgMjY5ODAsIDI2OTgzLCAKKyAgICAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyNCwgMjcwMzMsIDI3MDQwLCAyNzA0NSwgCisgICAgMjcwNTEsIDI3MDU3LCAyNzA2NSwgMjcwNzIsIDI3MDc5LCAyNzA4MywgMjcwODcsIDI3MDkxLCAyNzA5NiwgMjcxMDEsIAorICAgIDI3MTA1LCAyNzExMywgMjcxMTgsIDI3MTMwLCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1NywgMjcxNjEsIDI3MTY2LCAKKyAgICAyNzE3MiwgMjcxNzUsIDI3MTgwLCAyNzE4NSwgMjcxODksIDI3MTkzLCAyNzE5NiwgMjcyMDIsIDgyNDgsIDIzNTAsIAorICAgIDI3MjA2LCAyNzIxMSwgMjcyMjcsIDEwMTk4LCAyNzI0NywgMjcyNTYsIDI3MjcyLCAyNzI3NiwgMjcyODMsIDI3Mjg2LCAKKyAgICAyNzI5MiwgMjczMDIsIDI3MzA4LCAyNzMxNywgMjczMzIsIDI3MzQ0LCAyNzM1NSwgMjczNjMsIDI3MzcyLCAyNzM3OCwgCisgICAgMjczODcsIDI3Mzk3LCAyNzQwNywgMjc0MTgsIDI3NDI5LCAyNzQzOSwgMjc0NDgsIDI3NDU1LCAyNzQ2NCwgMjc0NzIsIAorICAgIDI3NDc5LCAyNzQ4NywgMjc0OTQsIDI3NTAxLCAyNzUxNCwgMjc1MjEsIDI3NTI5LCAyNzUzNiwgMjc1NDIsIDI3NTQ3LCAKKyAgICAyNzU1NiwgMjc1NjIsIDI3NTY3LCAyNzU3NSwgMjc1ODIsIDI3NTg5LCAyNTMwNCwgMjc2MDEsIDI3NjEzLCAyNzYyNywgCisgICAgMjc2MzUsIDI3NjQyLCAyNzY1NCwgMjc2NjMsIDI3NjcyLCAyNzY4MCwgMjc2ODgsIDI3Njk2LCAyNzcwMywgMjc3MDksIAorICAgIDI3NzE4LCAyNzcyNiwgMjc3MzYsIDI3NzQ1LCAyNzc1NSwgMjc3NjQsIDI3NzczLCAyNzc4MSwgMjc3ODYsIDI3NzkwLCAKKyAgICAyNzc5MywgMjc3OTcsIDI3ODAxLCAyNzgwNSwgMjc4MDksIDI3ODEzLCAyNzgxOSwgMjc4MjUsIDI3ODMzLCAxNjEzOSwgCisgICAgMjc4NDAsIDI3ODQ1LCAyNzg1MiwgMjc4NTgsIDI3ODY1LCAxNjE0NywgMjc4NzIsIDI3ODc1LCAyNzg4NywgMjc4OTUsIAorICAgIDI3OTAxLCAyNzkwNiwgMjc5MTAsIDI3OTIxLCAxMDY1MSwgMjc5MzEsIDI3OTM5LCAyNzk0OSwgMjc5NTgsIDI3OTY1LCAKKyAgICAyNzk3MiwgMjc5ODAsIDI3OTg0LCAxNjE1OCwgMjc5ODcsIDI3OTk0LCAyNzk5OCwgMjgwMDQsIDI4MDA3LCAyODAxNCwgCisgICAgMjgwMjAsIDI4MDI3LCAyODAzMywgMjgwMzcsIDI4MDQyLCAyODA0NiwgMjgwNTUsIDI4MDYyLCAyODA2OCwgODMwNiwgCisgICAgMjgwNzUsIDI4MDgzLCAyODA5MCwgMjgwOTYsIDI4MTAxLCAyODEwNywgMjgxMTMsIDI4MTIxLCAyODEyNywgMjgxMzEsIAorICAgIDI4MTM0LCAyODEzNiwgMjc3OTgsIDI4MTQ1LCAyODE1MSwgMjgxNTcsIDI4MTY3LCAyODE3MiwgMjgxNzksIDI4MTg1LCAKKyAgICAyODE5MCwgMjgxOTUsIDI4MjAwLCAyODIwNCwgMjgyMDksIDI4MjE2LCAyODIyMiwgMjgyMzEsIDI4MjM1LCAyODI0MiwgCisgICAgMjgyNDgsIDI4MjU3LCA0Mzc4LCAyODI2MywgMjgyNjksIDI4Mjc0LCAyODI4MSwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgCisgICAgMjgzMTEsIDI4MzE3LCAyODMyMSwgMjgzMjYsIDI4MzM2LCAyODM0NSwgMjgzNDksIDI4MzU2LCAyODM2NCwgMjgzNzEsIAorICAgIDI4Mzc3LCAyODM4MiwgMjgzOTAsIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDIxLCAyODQzMCwgMjg0MzQsIDE0MjEyLCAKKyAgICAyODQ0MiwgMjg0NTIsIDI4NDU2LCAyNzAyMCwgMjg0NjcsIDI4NDcyLCAyODQ3NiwgMjg0ODMsIDI4NDkwLCAyMzY3MCwgCisgICAgMjc3MjMsIDI4NDk1LCAyODQ5OSwgMjg1MDIsIDI0NzE0LCAyODUwNywgMjg1MjEsIDI4NTM3LCAyODU1NSwgMjg1NzQsIAorICAgIDI4NTkxLCAyODYwOSwgMjQ3MzMsIDI4NjI2LCAyODY0NiwgMjQ3NTAsIDI4NjU4LCAyODY3MCwgMTcxNzgsIDI4NjgyLCAKKyAgICAyNDc3MCwgMjg2OTYsIDI4NzA4LCAxMTQ2MSwgMjg3MjIsIDI4NzI3LCAyODczMiwgMjg3MzcsIDI4NzQzLCAyODc0OSwgCisgICAgMjg3NTUsIDI4NzU5LCAyODc2NywgMjg3NzQsIDI4Nzc5LCAyODc4OSwgMjg3OTUsIDExMDU5LCAyODgwMSwgMjg4MDMsIAorICAgIDI4ODA4LCAyODgxNiwgMjg4MjAsIDI4MjEyLCAyODgyNiwgMjg4MzMsIDEyNjAxLCAxMjYxMSwgMjg4NDAsIDI4ODUwLCAKKyAgICAyODg1NSwgMjg4NTksIDI4ODYyLCAyODg2OCwgMjg4NzYsIDI4ODg4LCAyODg5OCwgMjg5MTQsIDI4OTI3LCAyODk0MSwgCisgICAgMTcxOTYsIDI4OTU1LCAyODk2MiwgMjg5NjYsIDI4OTY5LCAyODk3NCwgMjg5NzgsIDI4OTg1LCAyODk5MiwgMjg5OTksIAorICAgIDI5MDA5LCAyOTAxNCwgMjkwMTksIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ1LCAyOTA1NCwgMjkwNTksIDMzNTMsIAorICAgIDI5MDYzLCAyOTA2NiwgMjkwNjksIDI5MDc0LCAyOTA4MSwgMjkwODYsIDI5MTAyLCAyOTExMCwgMjkxMTgsIDk5NjYsIAorICAgIDI5MTI2LCAyOTEzMSwgMjkxMzUsIDI5MTQxLCAyOTE0NiwgMjkxNTIsIDI5MTU1LCAyOTE2MSwgMjkxNzMsIDI5MTgxLCAKKyAgICAyOTE4OCwgMjkxOTQsIDI5MjAxLCAyOTIxMiwgMjkyMjYsIDI5MjM5LCAyOTI0NSwgMjkyNTQsIDI5MjYwLCAyOTI2OSwgCisgICAgMjkyODEsIDI5MjkyLCAyOTMwMiwgMjkzMTEsIDI5MzIwLCAyOTMyOCwgMjkzMzksIDgyODgsIDI5MzQ2LCAyOTM1MywgCisgICAgMjkzNTksIDI5MzY0LCAyOTM3MCwgMjkzNzcsIDI5Mzg3LCAyOTM5NywgMjk0MDYsIDI5NDEyLCAyOTQxOSwgMjk0MjQsIAorICAgIDI5NDMyLCAyOTQzOSwgMjk0NDcsIDI5NDU1LCAyOTQ2NywgNjU2MywgOTk1LCAyOTQ3NCwgMjk0ODMsIDI5NDkxLCAyOTQ5NywgCisgICAgMjk1MDMsIDI5NTA4LCAyOTUxMiwgMjk1MTUsIDI5NTIxLCAyOTUyOCwgMjk1MzMsIDI5NTM4LCAyOTU0MywgMjk1NDcsIAorICAgIDI5NTU5LCAyOTU3MCwgMjk1NzksIDI5NTg3LCAxNjMyMywgMjk1OTIsIDI5NTk3LCAyOTYwMywgMjk2MDksIDEyNTk0LCAKKyAgICA5MDU4LCAyOTYxNCwgMjk2MTgsIDI5NjIyLCAyOTYyNSwgMjk2MjgsIDI5NjM0LCAyOTY0MiwgMjk2NTAsIDI5NjU0LCAKKyAgICAyOTY1OCwgMjk2NjMsIDI5NjY2LCAyOTY3NSwgMjk2NzksIDI5NjgyLCAyOTY5MCwgMjk3MDEsIDI5NzA1LCAyOTcxMSwgCisgICAgMjk3MTcsIDI5NzIxLCAyOTcyNywgMjk3MzUsIDI5NzU3LCAyOTc4MSwgMjk3OTAsIDI5Nzk3LCAyOTgwNCwgMjk4MTAsIAorICAgIDI5ODE4LCAyOTgyNCwgMjk4MjksIDI5ODQwLCAyOTg1OCwgMjk4NjUsIDI5ODczLCAyOTg3NywgMjk4ODIsIDI5ODkxLCAKKyAgICAyOTkwNCwgMjk5MTIsIDI5OTI0LCAyOTkzNSwgMjk5NDYsIDI5OTU2LCAyOTk3MCwgMjk5NzksIDI5OTg3LCAyOTk5OSwgCisgICAgMTAyMTUsIDMwMDEwLCAzMDAyMSwgMzAwMzMsIDMwMDQzLCAzMDA1MiwgMzAwNTcsIDMwMDYxLCAzMDA2OSwgMzAwODAsIAorICAgIDMwMDkwLCAzMDA5NSwgMzAwOTksIDMwMTAyLCAzMDEwNSwgMzAxMTMsIDMwMTIxLCAzMDEzMCwgMzAxNDAsIDMwMTQ5LCAKKyAgICAzMDE1NSwgMzAxNjksIDI3MDIsIDMwMTkxLCAzMDIwMiwgMzAyMTEsIDMwMjIxLCAzMDIzMywgMzAyNDIsIDMwMjUxLCAKKyAgICAzMDI2MSwgMzAyNjksIDMwMjc3LCAzMDI4NiwgMzAyOTEsIDMwMzAyLCAzMDMwNywgMzAzMTgsIDMwMzIyLCAzMDMzMiwgCisgICAgMzAzNDEsIDMwMzQ5LCAzMDM1OSwgMzAzNjksIDMwMzc3LCAzMDM4NiwgMzAzOTMsIDMwNDAxLCAzMDQwOCwgMzA0MTcsIAorICAgIDMwNDI2LCAzMDQzMCwgMzA0MzgsIDMwNDQ1LCAzMDQ1MywgMzA0NjAsIDMwNDcxLCAzMDQ4NiwgMzA0OTMsIDMwNDk5LCAKKyAgICAzMDUwOSwgMzA1MTgsIDMwNTI0LCAzMDUzNSwgMzA1MzksIDMwNTQ2LCAzMDU1MCwgMzA1NTYsIDE1MjY1LCAzMDU2MiwgCisgICAgMzA1NjYsIDMwNTcxLCAzMDU3NywgMzA1ODQsIDMwNTg4LCAzMDU5MiwgMzA2MDAsIDMwNjA4LCAzMDYxNCwgMzA2MjMsIAorICAgIDMwNjMwLCAzMDYzNSwgMzA2NDAsIDMwNjUwLCAyNTM3MywgMzA2NTQsIDMwNjU3LCAzMDY2MiwgMzA2NjcsIDMwNjcyLCAKKyAgICAzMDY3NywgMzA2ODIsIDMwNjg3LCAzMDY5MiwgMzA2OTcsIDMwNzAzLCAzMDcwOCwgMzA3MTMsIDMwNzE5LCAxMTk5LCA2NjAsIAorICAgIDMwNzI0LCAzMDczMywgMjM5OCwgMzA3NDAsIDMwNzQ1LCAzMDc0OSwgMzA3NTUsIDEyNDgsIDU3OCwgMjkwLCAzMDc2MCwgCisgICAgMzA3NjksIDMwNzc3LCAzMDc4NiwgMzA3OTQsIDMwODA1LCAzMDgxMywgMzA4MjIsIDMwODMwLCAzMDgzNSwgMTA3OTcsIAorICAgIDMwODM5LCAzMDg0NywgMzA4NTUsIDMwODYwLCAxNjA5NCwgMzgyNCwgMzA4NjYsIDMwODcyLCAzMDg3OCwgNjE0OCwgCisgICAgMzA4ODMsIDMwODg3LCAzMDg5MywgMzA4OTcsIDMwOTAzLCAzMDkwOCwgMzA5MTUsIDE0NDEsIDMwOTIxLCAzMDkyOCwgCisgICAgMTM0OCwgNjE1NiwgMzA5MzIsIDMwOTQyLCAzMDk1MCwgMzA5NTYsIDMwOTY2LCAzMDk3NSwgMzA5ODMsIDMwOTg5LCAKKyAgICAzMDk5NywgMzEwMDQsIDEyMTM2LCAzMTAxMCwgMzEwMTcsIDMxMDIyLCAzMTAyOSwgMTQ5NCwgMjE5LCAyMTczLCAzMTAzNSwgCisgICAgMzEwNDEsIDMxMDQ4LCAzMTA1OSwgMzEwNzAsIDMxMDc4LCAzMTA4NSwgMzEwOTUsIDMxMTA0LCAzMTExMiwgMzExMjEsIAorICAgIDMxMTI4LCAzMTEzNSwgMzExNDgsIDMxMTU1LCAzMTE2MSwgMzExNzIsIDMxMTkxLCAxMjUzLCAzMTE5NiwgMzEyMDEsIAorICAgIDMxMjA5LCAzNzQyLCAzMTIxMywgMzEyMTgsIDMxMjIyLCAzMTIyNiwgMTQ0NSwgMjY2MzcsIDMxMjM2LCAzMTI0MCwgCisgICAgMzEyNDUsIDMxMjQ5LCAzNjE5LCAzMTI1NSwgMzEyNjMsIDMxMjcwLCAzMTI4MSwgMzEyODksIDMxMjk3LCAzNzQzLCAzNDYsIAorICAgIDMxMzAyLCAzMTMxMCwgMzEzMTgsIDMxMzI1LCAzMTMzMSwgMzEzMzYsIDIyNDIsIDExNjI4LCAzMTM0MywgMzEzNDksIAorICAgIDI4MDM4LCAyODI4NywgMzEzNTUsIDU3NCwgMTA2LCAzMTM1OSwgMzEzNjMsIDMxMzY5LCA2NjMsIDk4NDEsIDMxMzc0LCAKKyAgICAzMTM4MSwgMzEzODcsIDMxMzkxLCAxNjM5LCAzMTM5NCwgMzEzOTgsIDE2NTc2LCAzMTQwMSwgMzE0MDYsIDMxNDEzLCAKKyAgICAzMTQxOSwgMzE0MjQsIDMxNDMyLCAzMTQzOSwgMzE0NDUsIDI0MTMyLCAzMTQ0OSwgMzE0NTMsIDMxNDU3LCAzODEzLCAKKyAgICAxODE4MCwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgMzE0NzMsIDMxNDgxLCAzMTQ4OSwgMzE0OTQsIDMxNTAyLCAzMTUwNSwgCisgICAgMzE1MTIsIDMxNTIyLCAzMTUzNCwgMzE1MzksIDMxNTQzLCAzMTU1MSwgMzE1NTgsIDMxNTY0LCAzMTU3MSwgMzE1NzgsIAorICAgIDMxNTgxLCAzMTU4NSwgMzE1ODksIDE0NDksIDMxNTk5LCAzMTYwMSwgMzE2MDYsIDMxNjEyLCAzMTYxOCwgMzE2MjMsIAorICAgIDMxNjI4LCAzMTYzMywgMzE2MzgsIDMxNjQzLCAzMTY0OCwgMzE2NTMsIDMxNjU4LCAzMTY2MywgMzE2NjgsIDMxNjczLCAKKyAgICAzMTY3OCwgMzE2ODMsIDMxNjg4LCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMiwgMzE3MTcsIDMxNzIyLCAzMTcyNywgCisgICAgMzE3MzMsIDMxNzM4LCAzMTc0MywgMzE3NDgsIDMxNzU0LCAzMTc1OSwgMzE3NjUsIDMxNzcwLCAzMTc3NSwgMzE3ODAsIAorICAgIDMxNzg1LCAzMTc5MSwgMzE3OTYsIDMxODAyLCAzMTgwNywgMzE4MTIsIDMxODE3LCAzMTgyMiwgMzE4MjgsIDMxODMzLCAKKyAgICAzMTgzOSwgMzE4NDQsIDMxODQ5LCAzMTg1NCwgMzE4NTksIDMxODY0LCAzMTg2OSwgMzE4NzQsIDMxODc5LCAzMTg4NCwgCisgICAgMzE4OTAsIDMxODk2LCAzMTkwMiwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI4LCAzMTkzNCwgMzE5NDAsIAorICAgIDMxOTQ2LCAzMTk1MiwgMzE5NTgsIDMxOTYzLCAzMTk2OSwgMzE5NzQsIDMxOTc5LCAzMTk4NCwgMzE5ODksIDMxOTk1LCAKKyAgICAyNDgyLCAzMjAwMCwgMjQ4OSwgMjQ5NiwgMjc5MywgMzIwMDUsIDI1MDIsIDI1MTIsIDMyMDExLCAzMjAxNSwgMzIwMjAsIAorICAgIDMyMDI1LCAzMjAzMSwgMzIwMzYsIDMyMDQxLCAzMjA0NSwgMzIwNTAsIDMyMDU2LCAzMjA2MSwgMzIwNjYsIDMyMDcxLCAKKyAgICAzMjA3NywgMzIwODIsIDMyMDg2LCAzMjA5MCwgMzIwOTUsIDMyMTAwLCAzMjEwNSwgMzIxMTAsIDMyMTE1LCAzMjEyMSwgCisgICAgMzIxMjcsIDMyMTMyLCAzMjEzNiwgMzIxNDEsIDMyMTQ3LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAorICAgIDMyMTc1LCAzMjE3OCwgMzIxODMsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOSwgMzIyMTUsIDMyMjIwLCAKKyAgICAzMjIyNSwgMzIyMzAsIDMyMjM0LCAzMjIzOSwgMzIyNDQsIDMyMjQ5LCAzMjI1NCwgMzIyNTksIDMyMjY0LCAzMjI2OCwgCisgICAgMzIyNzMsIDMyMjc4LCAzMjI4MywgMzIyODcsIDMyMjkxLCAzMjI5NSwgMzIzMDAsIDMyMzA4LCAzMjMxMywgMzIzMTgsIAorICAgIDMyMzI0LCAzMjMzMCwgMzIzMzYsIDMyMzQxLCAzMjM0NSwgMzIzNDgsIDMyMzUzLCAzMjM1OCwgMzIzNjIsIDMyMzY3LCAKKyAgICAzMjM3MiwgMzIzNzYsIDMyMzgxLCAzMjM4NSwgMzIzODgsIDMyMzkzLCAzOTE0LCAxODkwNiwgMzIzOTgsIDMyNDAzLCAKKyAgICAzMjQwOCwgMzI0MTYsIDIyOTU5LCAzMDkyNSwgOTUxOCwgMzI0MjEsIDMyNDI2LCAzMjQzMCwgMzI0MzUsIDMyNDM5LCAKKyAgICAzMjQ0MywgMzI0NDgsIDMyNDUyLCAzMjQ1NSwgMzI0NTgsIDMyNDYyLCAzMjQ2NywgMzI0NzEsIDMyNDc5LCAzMjQ4MywgCisgICAgMzI0ODYsIDMyNDkxLCAzMjQ5NSwgMzI0OTksIDMyNTA0LCAzMjUwOSwgMzI1MTMsIDMyNTE5LCAzMjUyNCwgMzI1MjksIAorICAgIDMyNTM2LCAzMjU0MywgMzI1NDcsIDMyNTUwLCAzMjU1NiwgMzI1NjUsIDMyNTcyLCAzMjU4MCwgMzI1ODcsIDMyNTkxLCAKKyAgICAzMjU5NiwgMzI2MDAsIDMyNjA0LCAzMjYxMCwgMzI2MTYsIDMyNjIwLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgCisgICAgMzI2NDcsIDMyNjUzLCAzMjY1OSwgMzI2NjUsIDMyNjcxLCAzMjY3OCwgMzI2ODQsIDMyNjkwLCAzMjY5NiwgMzI3MDIsIAorICAgIDMyNzA4LCAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczMywgMzI3NDAsIDMyNzQ2LCAzMjc1MiwgMzI3NTgsIDMyNzY0LCAKKyAgICAzMjc3MCwgMzI3NzYsIDMyNzgyLCAzMjc4OCwgMzI3OTQsIDEyNDc5LCAzMjgwMCwgMzI4MDYsIDMyODExLCAzMjgxNiwgCisgICAgMzI4MjEsIDMyODI0LCAzMjgzMCwgMzI4MzgsIDMyODQzLCAzMjg0NywgMzI4NTIsIDMyODU4LCAzMjg2NywgMzI4NzMsIAorICAgIDMyODc4LCAzMjg4MywgMzI4ODgsIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA3LCAzMjkxMiwgMzI5MTcsIDMyOTI0LCAKKyAgICAzMjkzMSwgMzI5MzcsIDMyOTQzLCAzMjk0OCwgMTc4MjIsIDMyOTU1LCAzMjk2MSwgMzI5NjgsIDMyOTc0LCAzMjk4MCwgCisgICAgMzI5ODUsIDMyOTkzLCAzMjk5OCwgMTAzNzIsIDMzMDAyLCAzMzAwNywgMzMwMTIsIDMzMDE4LCAzMzAyMywgMzMwMjgsIAorICAgIDMzMDMyLCAzMzAzNywgMzMwNDIsIDMzMDQ4LCAzMzA1MywgMzMwNTgsIDMzMDYzLCAzMzA2NywgMzMwNzIsIDMzMDc3LCAKKyAgICAzMzA4MSwgMzMwODYsIDMzMDkxLCAzMzA5NSwgMzMxMDAsIDMzMTA0LCAzMzEwOSwgMzMxMTQsIDMzMTE5LCAzMzEyMywgCisgICAgMzMxMjgsIDMzMTMyLCAzMzEzNiwgMTY2ODIsIDMzMTQxLCAzMzE1MCwgMzMxNTYsIDMzMTYyLCAzMzE3MSwgMzMxNzksIAorICAgIDMzMTg4LCAzMzE5NiwgMzMyMDEsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjI2LCAzMzIzMCwgMzMyMzMsIDMzMjM4LCAKKyAgICAzMzI0MiwgMzMyNTEsIDMzMjU5LCAzMzI3NywgMzMyODMsIDE0OTMsIDMzMjg5LCAzMzI5MiwgMzMyOTYsIDI0MjM4LCAKKyAgICAyNDI0NCwgMzMzMDIsIDMzMzA2LCAzMzMxNywgMzMzMjgsIDMzMzM5LCAzMzM1MSwgMzMzNTUsIDMzMzYyLCAzMzM2OSwgCisgICAgMzMzNzQsIDMzMzc4LCA2MjA0LCA5MjgsIDIyOTU4LCAzMzM4NiwgMzMzOTEsIDMzMzk1LCAzMzQwMCwgMzM0MDQsIDMzNDEwLCAKKyAgICAzMzQxNSwgMzM0MjEsIDMzNDI2LCAzMzQzMiwgMzM0MzcsIDMzNDQzLCAzMzQ0OCwgMzM0NTQsIDMzNDYwLCAzMzQ2NiwgCisgICAgMzM0NzEsIDMzNDI3LCAzMzQzMywgMzM0NzUsIDMzNDgwLCAzMzQ4NiwgMzM0OTEsIDMzNDk3LCAzMzUwMiwgMzM1MDgsIAorICAgIDMzNTEzLCAzMzQzOCwgMTEzMTQsIDMzNTE3LCAzMzQ0OSwgMzM0NTUsIDMzNDYxLCAyODg1LCAzNTMzLCAzMzUyMywgCisgICAgMzM1MjYsIDMzNTMxLCAzMzUzNywgMzM1NDMsIDMzNTQ5LCAzMzU1NiwgMzM1NjIsIDMzNTY4LCAzMzU3NCwgMzM1ODAsIAorICAgIDMzNTg2LCAzMzU5MiwgMzM1OTgsIDMzNjA0LCAzMzYxMCwgMzM2MTYsIDMzNjIyLCAzMzYyOCwgMzM2MzUsIDMzNjQxLCAKKyAgICAzMzY0NywgMzM2NTMsIDMzNjU5LCAzMzY2NSwgMzM2NjgsIDMzNjczLCAzMzY3NiwgMzM2ODMsIDMzNjg4LCAzMzY5NiwgCisgICAgMzM3MDEsIDMzNzA2LCAzMzcxMiwgMzM3MTcsIDMzNzIyLCAzMzcyNiwgMzM3MzEsIDMzNzM3LCAzMzc0MiwgMzM3NDgsIAorICAgIDMzNzUzLCAzMzc1OSwgMzM3NjQsIDMzNzcwLCAzMzc3NiwgMzM3ODAsIDMzNzg1LCAzMzc5MCwgMzM3OTUsIDMzODAwLCAKKyAgICAzMzgwNCwgMzM4MDksIDMzODE0LCAzMzgxOSwgMzM4MjUsIDMzODMxLCAzMzgzNywgMzM4NDMsIDMzODQ4LCAzMzg1MiwgCisgICAgMzM4NTUsIDMzODYxLCAzMzg2NywgMzM4NzYsIDMzODg0LCAzMzg5MSwgMzM4OTYsIDMzOTAwLCAzMzkwNCwgMzM5MDksIAorICAgIDE2NTMwLCAzMzkxNCwgMzM5MjIsIDMzOTI4LCAzODY2LCAxMzU4LCAzMzkzMywgMzM5MzcsIDgzNTksIDMzOTQzLCAzMzk0OSwgCisgICAgMzM5NTYsIDgzNjgsIDMzOTYwLCAzMzk2NiwgMzM5NzMsIDMzOTc5LCAzMzk4OCwgMzM5OTYsIDkyNDQsIDM0MDA4LCAKKyAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzQsIDM0MDM4LCAzNDA0MSwgMzQwNTEsIDM0MDYwLCAzNDA2OCwgCisgICAgMzM0MjgsIDM0MDczLCAzNDA4MywgMzQwOTMsIDM0MTAzLCAzNDEwOSwgMzQxMTQsIDM0MTI0LCAzNDEyOSwgMzQxNDIsIAorICAgIDM0MTU2LCAzNDE2NywgMzQxNzksIDM0MTkxLCAzNDIwNSwgMzQyMTgsIDM0MjMwLCAzNDI0MiwgMTU4OTksIDM0MjU2LCAKKyAgICAzNDI2MSwgMzQyNjYsIDM0MjcwLCAzNDI3NCwgMzQyNzgsIDE3OTUsIDI5MjkwLCAzNDI4MiwgMzQyODcsIDMzNDc2LCAKKyAgICAzNDI5MiwgMzQyOTUsIDM0MzAwLCAzNDMwNSwgMzQzMTAsIDM0MzE2LCAzNDMyMiwgMTA5NzQsIDM0MzI3LCAzNDMzMywgCisgICAgMzQzNDAsIDE3MTMwLCAzNDM0NiwgMzQzNTEsIDM0MzU2LCAzNDM2MCwgMzQzNjUsIDM0MzcwLCAzMzQ4MSwgMzQzNzUsIAorICAgIDM0MzgwLCAzNDM4NSwgMzQzOTEsIDMzNDg3LCAzNDM5NiwgMzQzOTksIDM0NDA2LCAzNDQxNCwgMzQ0MjAsIDM0NDI2LCAKKyAgICAzNDQzMiwgMzQ0NDMsIDM0NDQ4LCAzNDQ1NSwgMzQ0NjIsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwMSwgCisgICAgMzQ1MDcsIDM0NTE1LCAzMzQ5MiwgMzQ1MjAsIDM0NTI2LCAzNDUzMiwgMzM0OTgsIDM0NTM3LCAzNDU0MiwgMzQ1NTAsIAorICAgIDM0NTU4LCAzNDU2NCwgMzQ1NzEsIDM0NTc3LCAzNDU4NCwgMzQ1OTEsIDM0NTk3LCAzNDYwNSwgMzQ2MTUsIDM0NjIyLCAKKyAgICAzNDYyOCwgMzQ2MzMsIDM0NjM5LCAzNDY0NCwgMzQ2NDksIDM0NjU2LCAzNDY2NSwgMzQ2NzMsIDM0Njc4LCAzNDY4NCwgCisgICAgMzQ2OTEsIDM0Njk5LCAzNDcwNSwgMzQ3MTAsIDM0NzE2LCAzNDcyNSwgMzQ3MzIsIDMwMTM1LCAzNDczOCwgMzQ3NDIsIAorICAgIDM0NzQ3LCAzNDc1NiwgMzQ3NjEsIDM0NzY2LCAzNDc3MSwgMTM1NDgsIDM0Nzc5LCAzNDc4NCwgMzQ3ODksIDM0Nzk0LCAKKyAgICAzNDc5OCwgMzQ4MDMsIDM0ODA4LCAzNDgxNSwgMzQ4MjAsIDM0ODI1LCAzNDgzMCwgMzM1MDMsIDIyODk1LCAzNDgzNiwgCisgICAgMjU1OCwgMTQ0LCAzNDgzOSwgMzQ4NDIsIDM0ODQ2LCAzNDg1MCwgMzQ4NjAsIDM0ODY4LCAzNDg3NSwgMzQ4NzksIDM0ODgyLCAKKyAgICAzNDg5MCwgMzQ4OTcsIDM0OTA0LCAzNDkxMywgMzQ5MTcsIDM0OTIwLCAzNDkyNiwgMzQ5MzAsIDM0OTM4LCAzNDk0NiwgCisgICAgMzQ5NTAsIDM0OTU0LCAzNDk1NywgMzQ5NjMsIDM0OTcwLCAzNDk3NCwgMzQ5NzgsIDM0OTg1LCAzNDk5MywgMzM0MzksIAorICAgIDM1MDAwLCAzNTAwOCwgMzUwMTMsIDExMDM0LCA2MjMsIDM2OSwgMzUwMjUsIDM1MDMwLCAzNTAzNSwgMzUwNDEsIDM1MDQ2LCAKKyAgICAzNTA1MSwgMzg4NywgMzUwNTYsIDM1MDU5LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgMzUwODQsIDM1MDkxLCAKKyAgICAyNDM1NiwgMzUwOTYsIDM1MTAxLCAzNTEwNiwgMzUxMTEsIDM1MTE2LCAzNTEyMiwgMzUxMjcsIDM1MTMzLCAzMzY3OSwgCisgICAgMzUxMzksIDM1MTQ0LCAzNTE1MCwgMzUxNTYsIDM1MTY2LCAzNTE3MSwgMzUxNzYsIDM1MTgwLCAzNTE4NSwgMzUxOTAsIAorICAgIDM1MTk1LCAzNTIwMCwgMzUyMTMsIDM1MjE4LCAyNDAxOSwgMTgyNTUsIDM5MDAsIDM1MjIyLCAzNTIyOCwgMzUyMzMsIAorICAgIDM1MjM4LCAzNTI0NCwgMzUyNDksIDM1MjU0LCAzNTI1OCwgMzUyNjMsIDM1MjY4LCAzNTI3NCwgMzUyNzksIDM1Mjg0LCAKKyAgICAxMzYzLCAzNTI4OCwgMzUyOTMsIDM1Mjk4LCAzNTMwMywgMzUzMDcsIDM1MzEyLCAzNTMxNywgMzUzMjIsIDM1MzI4LCAKKyAgICAzNTMzNCwgMzUzMzksIDM1MzQzLCAzNTM0NywgMzUzNTIsIDM1MzU3LCAzNTM2MiwgMzUzNjYsIDM1Mzc0LCAzNTM3OCwgCisgICAgMzUzODQsIDM1Mzg4LCAzNTM5NSwgMTgwMzksIDMzNDUwLCAzNTQwMSwgMzU0MDgsIDM1NDE2LCAzNTQyMywgMzU0MjksIAorICAgIDM1NDQyLCAzNTQ1NCwgMzU0NTksIDM1NDY1LCAzNTQ2OSwgMjgxMiwgMzU0NzMsIDM1NDc3LCAzNDk2NSwgMzU0ODYsIAorICAgIDM1NDk3LCAzNTUwMiwgMzAxOTgsIDM1NTA3LCAzNTUxMiwgMzU1MTYsIDM1NTIxLCAyNDI0OSwgMzU1MjUsIDM1NTI5LCAKKyAgICAzNTUzNCwgMzM0NTYsIDIyOTg1LCAzNTUzOCwgMzU1NDMsIDM1NTQ5LCAzNTU1NCwgMzU1NTgsIDM1NTYyLCAzNTU2NSwgCisgICAgMzU1NjksIDM1NTc1LCAzNTU4NCwgMzU1OTUsIDM1NjA3LCAzMzQ2MiwgMzU2MTIsIDM1NjE1LCAzNTYxOSwgMzU2MjMsIAorICAgIDQwNiwgMzU2MjgsIDM1NjMzLCAzNTYzOCwgMzU2NDMsIDM1NjQ4LCAzNTY1MywgMzU2NTksIDM1NjY0LCAzNTY2OSwgCisgICAgMzU2NzUsIDM1NjgwLCAzNTY4NiwgMzU2OTEsIDM1Njk3LCAzNTcwMiwgMzU3MDcsIDM1NzEyLCAzNTcxNywgMzU3MjIsIAorICAgIDM1NzI3LCAzNTczMiwgMzU3MzcsIDM1NzQzLCAzNTc0OCwgMzU3NTMsIDM1NzU4LCAzNTc2MywgMzU3NjgsIDM1NzczLCAKKyAgICAzNTc3OCwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDAsIDM1ODA1LCAzNTgxMCwgMzU4MTUsIDM1ODIwLCAzNTgyNSwgCisgICAgMzU4MzAsIDM1ODM1LCAzNTg0MCwgMzU4NDUsIDM1ODUwLCAzNTg1NSwgMzU4NjAsIDM1ODY1LCAzNTg3MCwgMzU4NzUsIAorICAgIDM1ODgwLCAzNTg4NiwgMzI1LCA5LCAzNTg5MSwgMzU4OTUsIDM1ODk5LCAzNTkwNywgMzU5MTEsIDM1OTE1LCAzNTkxOCwgCisgICAgMzU5MjEsIDM1OTIzLCAzNTkyOCwgMzU5MzIsIDM1OTM3LCAzNTk0MSwgMzU5NDYsIDM1OTUwLCAzNTk1NSwgMzU5NTksIAorICAgIDM1OTYyLCAzNTk2NCwgMzU5NjgsIDM1OTczLCAzNTk3NywgMzU5ODgsIDM1OTkxLCAzNTk5MywgMzU5OTcsIDM2MDA5LCAKKyAgICAzNjAxOCwgMzYwMjIsIDM2MDI2LCAzNjAzMiwgMzYwMzcsIDM2MDQ2LCAzNjA1MiwgMzYwNTcsIDM2MDYyLCAzNjA2NiwgCisgICAgMzYwNzAsIDM2MDc1LCAzNjA4MiwgMzYwODcsIDM2MDkzLCAzNjA5OCwgMzYxMDIsIDM2MTA5LCAyNzczMSwgMjc3NDEsIAorICAgIDM2MTEzLCAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzNSwgMzYxMzksIDM2MTQ2LCAzNjE1MiwgODQ5MSwgMzYxNTYsIAorICAgIDM2MTY1LCAzNjE3MywgMzYxODgsIDM2MjAyLCAzNjIxMSwgMzYyMTksIDM2MjMwLCAzNjIzOSwgMzYyNDQsIDM2MjUxLCAKKyAgICA3NTU2LCAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NSwgMzYyNzgsIDM2MjgzLCAzNjI4NywgMzYyOTIsIDM2Mjk2LCAKKyAgICAzNjMwMywgMzYzMDgsIDM2MzEzLCAzNjMxOCwgOTM5MSwgMzYzMjgsIDM2MzMwLCAzNjMzMywgMzYzMzYsIDM2MzQwLCAKKyAgICAzNjM0NiwgMzYzNTAsIDM2MzU1LCAzNjM2MCwgMzYzNzgsIDM2MzkyLCAzNjQxMSwgMzY0MjgsIDM2NDM3LCAzNjQ0NSwgCisgICAgMzY0NTAsIDM2NDU1LCAxNDg2LCAzNjQ2MSwgMzY0NjcsIDM2NDcyLCAzNjQ4MiwgMzY0OTEsIDM2NDk5LCAzNjUwNCwgCisgICAgMzY1MTAsIDM2NTE1LCAzNjUyNCwgMzY1MzUsIDM2NTQwLCAzNjU0NywgMzY1NTEsIDM2NTU4LCAzNjU2NiwgMzY1NzMsIAorICAgIDM2NTg2LCAzNjU5NCwgMzY1OTgsIDM2NjA4LCAzNjYxMywgMzY2MTcsIDM2NjI1LCAzNjYzMywgMzY2MzgsIDM2NjQyLCAKKyAgICAzNjY0NiwgMzY2NTUsIDM2NjYxLCAzNjY2NiwgMzY2NzQsIDM2Njg0LCAzNjY5MywgMzY3MDIsIDM2NzExLCAzNjcyMiwgCisgICAgMzY3MzAsIDM2NzQxLCAzNjc1MCwgMzY3NTcsIDM2NzYzLCAzNjc2OCwgMzY3NzksIDM2NzkwLCAzNjc5NSwgMzY3OTksIAorICAgIDM2ODAyLCAzNjgwNiwgMzY4MTQsIDM2ODIwLCAzNjgzMSwgMzY4NDIsIDM2ODUzLCAzNjg2NCwgMzY4NzUsIDM2ODg2LCAKKyAgICAzNjg5NywgMzY5MDgsIDM2OTIwLCAzNjkzMiwgMzY5NDQsIDM2OTU2LCAzNjk2OCwgMzY5ODAsIDM2OTkyLCAzNjk5NiwgCisgICAgMzcwMDQsIDM3MDEwLCAzNzAxNywgMzcwMjMsIDM3MDI4LCAzNzAzNCwgMjQ1NywgMzcwMzgsIDM3MDQwLCAzNzA0NSwgCisgICAgMzcwNTAsIDM3MDU1LCAzNzA1OCwgMzcwNjAsIDM3MDY0LCAzNzA2NywgMzcwNzQsIDM3MDc4LCAxMDY2NCwgMzcwODIsIAorICAgIDM3MDg4LCAzNzA5OCwgMzcxMDMsIDM3MTA5LCAzNzExMywgMzcxMTgsIDM3MTMxLCAyODE2MiwgMzcxMzcsIDM3MTQ2LCAKKyAgICAzNzE1NSwgMTkxMDQsIDM3MTYyLCAzNzE3MSwgMzQwODksIDM3MTc5LCAzNzE4NCwgMzcxODgsIDM3MTk3LCAzNzIwNSwgCisgICAgMzcyMTIsIDM3MjE3LCAzNzIyMSwgMzcyMjYsIDM3MjM0LCAzNzIzOCwgMzcyNDYsIDM3MjUyLCAzNzI1OCwgMzcyNjMsIAorICAgIDM3MjY3LCAzNzI3MCwgMzcyNzUsIDM3Mjg4LCAzNzMwNCwgMjQ4NDAsIDM3MzIxLCAzNzMzMywgMzczNTAsIDM3MzYyLCAKKyAgICAzNzM3NiwgMjQ4NTcsIDI0ODc2LCAzNzM4OCwgMzc0MDAsIDI3MTksIDM3NDE0LCAzNzQxOSwgMzc0MjQsIDM3NDI5LCAKKyAgICAzNzQzMywgMzc0NDAsIDM3NDUyLCAzNzQ1OSwgMzc0NjgsIDM3NDcxLCAzNzQ4MiwgMzc0OTMsIDM3NDk4LCAzNDUxMiwgCisgICAgODUyLCAzNzUwMiwgMzc1MDYsIDM3NTEwLCAzNzUxMywgMzc1MTgsIDM3NTIzLCAzNzUyOSwgMzc1MzQsIDM3NTM5LCAKKyAgICAzNzU0NSwgMzc1NTEsIDM3NTU2LCAzNzU2MCwgMzc1NjUsIDM3NTcwLCAzNzU3NSwgMzc1NzksIDM3NTgyLCAzNzU4OCwgCisgICAgMzc1OTMsIDM3NTk4LCAzNzYwMywgMzc2MDcsIDM3NjEyLCAzNzYxOCwgMzc2MjYsIDI4NDE0LCAzNzYzMSwgMzc2MzYsIAorICAgIDM3NjQzLCAzNzY0OSwgMzc2NTUsIDM3NjYwLCAzNzY2OCwgMjQzNjUsIDM3Njc1LCAzNzY4MCwgMzc2ODUsIDM3NjkwLCAKKyAgICAzNzY5NCwgMzc2OTcsIDM3NzAyLCAzNzcwNiwgMzc3MTAsIDM3NzE3LCAzNzcyMywgMzc3MjksIDM3NzM1LCAzNzc0MiwgCisgICAgMzc3NDcsIDM3NzUzLCAzNjYyOCwgMzc3NTcsIDM3NzYxLCAzNzc2NiwgMzc3NzksIDM3Nzg0LCAzNzc5MCwgMzc3OTgsIAorICAgIDM3ODA1LCAzNzgxMywgMzc4MjMsIDM3ODI5LCAzNzgzNSwgMzc4NDEsIDM3ODQ1LCAzNzg1NCwgMzc4NjIsIDM3ODY5LCAKKyAgICAzNzg3NCwgMzc4NzksIDExMzM3LCAzNzg4NCwgMzc4OTEsIDM3ODk3LCAzNzkwNywgMzc5MTIsIDM3OTE4LCAzNzkyNiwgCisgICAgMzc3NSwgMzc5MzMsIDM3OTQwLCAzNzk0NiwgMzc5NTMsIDM3ODEsIDM3OTU3LCAzNzk2MiwgMzc5NzMsIDM3OTgwLCAKKyAgICAzNzk4NiwgMzc5OTUsIDM3OTk5LCA0MjQ0LCAzODAwMiwgMzgwMDksIDM4MDE1LCAzODAyMSwgMzgwMjksIDM4MDM5LCAKKyAgICAzMTMyNiwgMzgwNDYsIDM4MDU0LCAzODA2MCwgMzgwNjUsIDM4MDcxLCAzODA3NiwgMzgwODAsIDI4MDEwLCAzODA4NiwgCisgICAgMzgwOTMsIDM4MDk5LCAzODEwOCwgMzgxMTUsIDI1NTY1LCAzODEyMSwgMzgxMjYsIDM4MTMwLCAzODEzOCwgMzgxNDYsIAorICAgIDEwMzMwLCA2MTc5LCAzODE1MywgMzgxNTcsIDM4MTU5LCAzODE2MywgMzgxNjgsIDM4MTcwLCAzODE3NSwgMzgxODEsIAorICAgIDM4MTg2LCAzODE5MSwgMzgxOTgsIDM1MDg3LCAzODIwNCwgMzgyMDksIDM4MjEzLCAzODIxOCwgMzgyMjIsIDM4MjMxLCAKKyAgICAzODIzNSwgMzgyNDEsIDM4MjQ4LCAzODI1NCwgMzgyNjEsIDM4MjY2LCAzODI3NSwgMzgyODAsIDM4Mjg0LCAzODI4OSwgCisgICAgMzgyOTYsIDM4MzA0LCAzODMxMiwgMzgzMTcsIDIzMDQxLCAzODMyMSwgMzgzMjQsIDM4MzI4LCAzODMzMiwgMTE3MjUsIAorICAgIDg3MiwgMzgzMzYsIDM4MzQxLCAzODM0OSwgMzgzNTMsIDM4MzYyLCAzODM2OSwgMzgzNzMsIDM4Mzc3LCAzODM4NSwgCisgICAgMzgzOTIsIDM4NDAyLCAzODQwNiwgMzg0MTAsIDM4NDE4LCAzODQyNiwgMzg0MzIsIDM4NDM3LCAzODQ0NiwgMTQ1MzAsIAorICAgIDM4NDUyLCAzODQ2MSwgMzg0NjYsIDM4NDczLCAzODQ4MCwgMzg0ODgsIDM4NDk2LCAzODUwNCwgMzg1MDksIDM4NTE2LCAKKyAgICAzODUyMywgMzg1MzAsIDM4NTM3LCAzODU0NCwgMzg1NDksIDM4NTU1LCAzODU3MiwgMzg1ODAsIDM4NTkwLCAzODU5OCwgCisgICAgMzg2MDUsIDQxNCwgMzg2MDksIDM4NjE1LCAzODYxOSwgMzg2MjQsIDM2MjM1LCAzODYzMCwgMzg2MzMsIDM4NjM3LCAKKyAgICAzODY0OCwgMzg2NTYsIDM3ODYsIDM4NjY0LCAzODY3MCwgMzg2NzYsIDM4Njg2LCAzODY5NSwgMzg3MDUsIDM4NzEyLCAKKyAgICAzODcxOCwgMzg3MjMsIDM3OTIsIDM3OTgsIDM4NzMyLCAzODczOSwgMzg3NDcsIDM4NzUyLCAzODc1NiwgMzg3NjMsIAorICAgIDM4NzcxLCAzODc3OCwgMzg3ODQsIDM4NzkzLCAzODgwMywgMzg4MDksIDM4ODE3LCAzODgyNiwgMzg4MzMsIDM4ODQxLCAKKyAgICAzODg0OCwgMjM3MjgsIDM4ODUyLCAzODg1OSwgMzg4NjUsIDM4ODc1LCAzODg4NCwgMzg4OTIsIDM4OTAzLCAzODkwNywgCisgICAgMzg5MTcsIDM4OTIzLCAzODkzMCwgMzg5MzgsIDM4OTQ3LCAzODk1NiwgMzg5NjYsIDM4OTc3LCAzODk4NCwgMzg5ODksIAorICAgIDM4OTk2LCAzMDg4LCAzOTAwNCwgMzkwMTAsIDM5MDE1LCAzOTAyMSwgMzkwMjcsIDM5MDMyLCAzOTA0NSwgMzkwNTgsIAorICAgIDM5MDcxLCAzOTA3OCwgMzkwODQsIDM5MDkyLCAzOTEwMCwgMzkxMDUsIDM5MTA5LCAxNDU1LCAzOTExMywgMzkxMTcsIAorICAgIDM5MTIxLCAzOTEyNSwgMzkxMjksIDM5MTMzLCAzOTEzNywgMzkxNDEsIDM5MTQ1LCAzOTE0OSwgMzkxNTMsIDM5MTU3LCAKKyAgICAzOTE2MSwgMzkxNjUsIDM5MTY5LCAzOTE3MywgMzkxNzcsIDM5MTgxLCAzOTE4NSwgMzkxODksIDM5MTkzLCAzOTE5NywgCisgICAgMzkyMDEsIDM5MjA1LCAzOTIwOSwgMzkyMTMsIDM5MjE3LCAzOTIyMSwgMzkyMjUsIDM5MjI5LCAzOTIzMywgMzkyMzcsIAorICAgIDM5MjQxLCAzOTI0NSwgMzkyNDksIDM5MjUzLCAzOTI1NywgMzkyNjEsIDM5MjY1LCAzOTI2OSwgMzkyNzMsIDM5Mjc3LCAKKyAgICAzOTI4MSwgMzkyODUsIDM5Mjg5LCAzOTI5MywgMzkyOTcsIDM5MzAxLCAzOTMwNSwgMzkzMDksIDM5MzEzLCAzOTMxNywgCisgICAgMzkzMjEsIDM5MzI1LCAzOTMyOSwgMzkzMzMsIDM5MzM3LCAzOTM0MSwgMzkzNDUsIDM5MzQ5LCAzOTM1MywgMzkzNTcsIAorICAgIDM5MzYxLCAzOTM2NSwgMzkzNjksIDM5MzczLCAzOTM3NywgMzkzODEsIDM5Mzg1LCAzOTM4OSwgMzkzOTMsIDM5Mzk3LCAKKyAgICAzOTQwMSwgMzk0MDUsIDM5NDA5LCAzOTQxMywgMzk0MTcsIDM5NDIxLCAzOTQyNSwgMzk0MjksIDM5NDMzLCAzOTQzNywgCisgICAgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTMsIDM5NDU3LCAzOTQ2MSwgMzk0NjUsIDM5NDY5LCAzOTQ3MywgMzk0NzcsIAorICAgIDM5NDgxLCAzOTQ4NSwgMzk0ODksIDM5NDkzLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAzOTUwOSwgMzk1MTMsIDM5NTE3LCAKKyAgICAzOTUyMSwgMzk1MjUsIDM5NTI5LCAzOTUzMywgMzk1MzcsIDM5NTQxLCAzOTU0NSwgMzk1NDksIDM5NTUzLCAzOTU1NywgCisgICAgMzk1NjEsIDM5NTY1LCAzOTU2OSwgMzk1NzMsIDM5NTc3LCAzOTU4MSwgMzk1ODUsIDM5NTg5LCAzOTU5MywgMzk1OTcsIAorICAgIDM5NjAxLCAzOTYwNSwgMzk2MDksIDM5NjEzLCAzOTYxNywgMzk2MjEsIDM5NjI1LCAzOTYyOSwgMzk2MzMsIDM5NjM3LCAKKyAgICAzOTY0MSwgMzk2NDUsIDM5NjQ5LCAzOTY1MywgMzk2NTcsIDM5NjYxLCAzOTY2NSwgMzk2NjksIDM5NjczLCAzOTY3NywgCisgICAgMzk2ODEsIDM5Njg1LCAzOTY4OSwgMzk2OTMsIDM5Njk3LCAzOTcwMSwgMzk3MDUsIDM5NzA5LCAzOTcxMywgMzk3MTcsIAorICAgIDM5NzIxLCAzOTcyNSwgMzk3MzAsIDM5NzM0LCAzOTczOSwgMzk3NDMsIDM5NzQ4LCAzOTc1MiwgMzk3NTcsIDM5NzYxLCAKKyAgICAzOTc2NywgMzk3NzIsIDM5Nzc2LCAzOTc4MSwgMzk3ODUsIDM5NzkwLCAzOTc5NCwgMzk3OTksIDM5ODAzLCAzOTgwOCwgCisgICAgMzk4MTIsIDM5ODE3LCAzOTgyMSwgMzk4MjYsIDM5ODMwLCAzOTgzNiwgMzk4NDIsIDM5ODQ3LCAzOTg1MSwgMzk4NTYsIAorICAgIDM5ODYwLCAzOTg2NiwgMzk4NzEsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg5LCAzOTg5MywgMzk4OTksIDM5OTA0LCAKKyAgICAzOTkwOCwgMzk5MTMsIDM5OTE3LCAzOTkyMiwgMzk5MjYsIDM5OTMxLCAzOTkzNSwgMzk5NDEsIDM5OTQ2LCAzOTk1MCwgCisgICAgMzk5NTUsIDM5OTU5LCAzOTk2NSwgMzk5NzAsIDM5OTc0LCAzOTk3OSwgMzk5ODMsIDM5OTg4LCAzOTk5MiwgMzk5OTcsIAorICAgIDQwMDAxLCA0MDAwNiwgNDAwMTAsIDQwMDE2LCA0MDAyMSwgNDAwMjUsIDQwMDMxLCA0MDAzNiwgNDAwNDAsIDQwMDQ2LCAKKyAgICA0MDA1MSwgNDAwNTUsIDQwMDYwLCA0MDA2NCwgNDAwNjksIDQwMDczLCA0MDA3OSwgNDAwODUsIDQwMDkxLCA0MDA5NywgCisgICAgNDAxMDMsIDQwMTA5LCA0MDExNSwgNDAxMjEsIDQwMTI2LCA0MDEzMCwgNDAxMzUsIDQwMTM5LCA0MDE0NSwgNDAxNTAsIAorICAgIDQwMTU0LCA0MDE1OSwgNDAxNjMsIDQwMTY4LCA0MDE3MiwgNDAxNzcsIDQwMTgxLCA0MDE4NiwgNDAxOTAsIDQwMTk1LCAKKyAgICA0MDE5OSwgNDAyMDQsIDQwMjA4LCA0MDIxNCwgNDAyMTksIDQwMjIzLCA0MDIyOCwgNDAyMzIsIDQwMjM4LCA0MDI0NCwgCisgICAgNDAyNDksIDExNiwgNTcsIDQwMjUzLCA0MDI1NSwgNDAyNTksIDQwMjYzLCA0MDI2NywgNDAyNzIsIDQwMjc2LCA0MDI4MCwgCisgICAgMTAyNTEsIDQwMjg1LCA0MDI5MSwgMTc1NiwgNjU5NywgNDAyOTcsIDQwMzAwLCA0MDMwNSwgNDAzMDksIDQwMzE0LCAKKyAgICA0MDMxOCwgNDAzMjIsIDQwMzI3LCAxMTEyMSwgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNTI1LCA0MDM0MywgMTY3ODMsIAorICAgIDQwMzQ4LCA0MDM1MiwgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzEsIDQwMzc4LCAyODE4NiwgNDAzODQsIDQwMzg3LCAKKyAgICA0MDM5MSwgNDAzOTYsIDQwNDAyLCA0MDQwNiwgNDA0MDksIDQwNDE3LCA0MDQyMywgNDA0MjgsIDQwNDMyLCA0MDQzNSwgCisgICAgNDA0MzksIDQwNDQ1LCA0MDQ0OSwgNDA0NTMsIDM1ODQsIDM1ODksIDMxNTM3LCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCAKKyAgICA0MDQ2OCwgNDA0NzIsIDQwNDgwLCA0MDQ4NywgNDA0OTEsIDE0NDgwLCA0MDQ5OCwgNDA1MDMsIDQwNTE3LCA0MDUyNCwgCisgICAgNDA1MzUsIDMzNSwgNDA1NDAsIDQwNTQ0LCA0MDU1MCwgNDA1NjIsIDQwNTY4LCA0MDU3NCwgMzE1NzQsIDQwNTc4LCAKKyAgICA0MDU4NCwgNDA1OTMsIDQwNTk3LCA0MDYwMSwgNDA2MDYsIDQwNjEyLCA0MDYxNywgNDA2MjEsIDQwNjI2LCA0MDYzMCwgCisgICAgNDA2MzQsIDQwNjQxLCA0MDY0NywgNDA2NTIsIDQwNjY3LCA0MDY4MiwgNDA2OTcsIDQwNzEzLCA0MDczMSwgMTEwNzEsIAorICAgIDQwNzQ1LCA0MDc1MiwgNDA3NTYsIDQwNzU5LCA0MDc2OCwgNDA3NzMsIDQwNzc3LCA0MDc4NSwgMTczMzMsIDQwNzkzLCAKKyAgICA0MDc5NywgNDA4MDcsIDQwODE4LCAzMTUwNywgNDA4MzEsIDQwODM1LCA0MDg0NCwgNDA4NjIsIDQwODgxLCA0MDg4OSwgCisgICAgMTA1MjUsIDExMjM0LCA0MDg5MywgMjQyNjEsIDQwODk2LCAzMjQ3NSwgNDA5MDEsIDEwNTI0LCA0MDkwNiwgNDA5MTIsIAorICAgIDQwOTE3LCA0MDkyMywgNDA5MjgsIDQwOTM0LCA0MDkzOSwgNDA5NDUsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY4LCAKKyAgICA0MDk3MywgNDA5MjksIDQwOTM1LCA0MDk0MCwgNDA5NDYsIDQwOTUxLCA0MDk1NywgNDA5NjMsIDg1MDQsIDQwODksIAorICAgIDQwOTc3LCA0MDk4NSwgNDA5ODksIDQwOTkyLCA0MDk5NiwgNDEwMDEsIDQxMDA2LCA0MTAxMywgNDEwMTksIDQxMDI1LCAKKyAgICA0MTAzMCwgMTYxNzQsIDQxMDM0LCAyODAyMiwgNDEwMzgsIDQxMDQyLCA0MTA0NiwgNDEwNTIsIDQxMDU2LCAzMDA3NSwgCisgICAgNDEwNjUsIDk1NDQsIDQxMDY5LCA5OTM3LCA0MTA3MiwgNDEwNzksIDQxMDg1LCA0MTA4OSwgMTMwMDQsIDQxMDk2LCAKKyAgICA0MTEwMiwgNDExMDcsIDQxMTE0LCA0MTEyMSwgNDExMjgsIDMwNzgxLCA4NDEwLCA0MTEzNSwgNDExNDIsIDQxMTQ5LCAKKyAgICA0MTE1NSwgNDExNjAsIDQxMTY3LCA0MTE3OCwgNDExODQsIDQxMTg5LCA0MTE5NCwgNDExOTksIDQxMjAzLCA0MTIwOCwgCisgICAgNDEyMTUsIDQwOTMwLCA0MTIxOSwgNDEyMjksIDQxMjM4LCA0MTI0OSwgNDEyNTUsIDQxMjYzLCA0MTI3MCwgNDEyNzUsIAorICAgIDQxMjgwLCA0MTI4NSwgNDEyOTAsIDQxMjk1LCA0MTI5OSwgNDEzMDMsIDQxMzEwLCA0MTMxNiwgNDEzMjQsIDIzNTMsIAorICAgIDEwNTAsIDExMTM3LCAxMTE0OSwgMTExNTQsIDExMTYwLCA0MTMzMywgMTExNjUsIDExMTcwLCAxMTE3NiwgNDEzMzgsIAorICAgIDQxMzQ4LCA0MTM1MiwgMTExODEsIDQxMzU3LCAxODQ1MywgNDEzNjAsIDQxMzY1LCA0MTM2OSwgMzc0NjMsIDQxMzgwLCAKKyAgICA0MTM4NSwgNDEzOTIsIDQxMzk5LCA0MTQwMywgNDE0MDYsIDQxNDE0LCAxMTA4NCwgNDE0MjEsIDQxNDI0LCA0MTQzMCwgCisgICAgNDE0NDAsIDYyMzEsIDQxNDQ5LCA0MTQ1NSwgNDE0NTksIDQxNDY3LCA0MTQ3MSwgNDE0ODEsIDQxNDg3LCA0MTQ5MiwgCisgICAgNDE1MDMsIDQxNTEyLCA0MTUyMSwgNDE1MzAsIDQxNTM5LCA0MTU0OCwgNDE1NTcsIDQxNTY2LCA0MTU3MiwgNDE1NzgsIAorICAgIDQxNTgzLCA0MTU4OSwgNDE1OTUsIDQxNjAxLCA0MTYwNiwgNDE2MDksIDQxNjE2LCA0MTYyMiwgNDE2MjYsIDQxNjMxLCAKKyAgICA0MTYzOCwgNDE2NDUsIDQxNjQ5LCA0MTY1MiwgNDE2NjIsIDQxNjc1LCA0MTY4NCwgNDE2OTMsIDQxNzA0LCA0MTcxNywgCisgICAgNDE3MjksIDQxNzQwLCA0MTc0OSwgNDE3NjAsIDQxNzY1LCA0MTc3NCwgNDE3NzksIDExMTg2LCA0MTc4NSwgNDE3OTIsIAorICAgIDQxODAwLCA0MTgwNSwgNDE4MDksIDQxODE2LCA0MTgyMywgNDA0MSwgMjAsIDQxODI3LCA0MTgzMiwgMTgzMDIsIDQxODM2LCAKKyAgICA0MTgzOSwgNDE4NDIsIDMwMjU1LCA0MTg0NiwgMzA3OTAsIDQxODU0LCA0MTg1OCwgNDE4NjIsIDQxODY1LCA0MTg3MSwgCisgICAgNDE4NzcsIDMzNTI3LCA0MTg4MiwgNDE4OTAsIDQxODk2LCA0MTkwMywgMzAyMzgsIDQxOTA3LCAzMDQ0MSwgNDE5MTEsIAorICAgIDQxOTIwLCA0MTkyNCwgNDE5MzIsIDQxOTM4LCA0MTk0NCwgNDE5NDksIDQxOTUzLCAzMDgwOSwgNDE5NTksIDQxOTYyLCAKKyAgICA0MTk3MCwgNDE5NzgsIDQzNzksIDQxOTg0LCA0MTk4OCwgNDE5OTMsIDQyMDAwLCA0MjAwNiwgNDIwMTEsIDQyMDE2LCAKKyAgICA0MjAyMCwgNDIwMjYsIDQyMDMxLCA0MjAzNywgNDI5NywgOTQ0LCA0MjA0NCwgNDIwNDgsIDQyMDUxLCAxNjY2NCwgNDIwNjMsIAorICAgIDQyMDcxLCA0MjA3OSwgNDIwODcsIDQyMDk1LCA0MjEwMiwgNDIxMTAsIDQyMTE4LCA0MjEyNSwgNDIxMzMsIDQyMTQxLCAKKyAgICA0MjE0OSwgNDIxNTcsIDQyMTY1LCA0MjE3MywgNDIxODEsIDQyMTg5LCA0MjE5NywgNDIyMDUsIDQyMjEzLCA0MjIyMCwgCisgICAgNDIyMjgsIDQyMjM2LCA0MjI0NCwgNDIyNTIsIDQyMjYwLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MiwgNDIzMDAsIAorICAgIDQyMzA4LCA0MjMxNiwgNDIzMjQsIDQyMzMyLCA0MjM0MCwgNDIzNDgsIDQyMzU2LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCAKKyAgICA0MjM4NywgNDIzOTQsIDQyNDAyLCA0MjQxMCwgNDI0MTgsIDQyNDI2LCA0MjQzNCwgNDI0NDIsIDQyNDUwLCA0MjQ1OCwgCisgICAgNDI0NjksIDIzNzY0LCA0MjQ3NCwgNDI0NzcsIDQyNDg0LCA0MjQ4OCwgNDI0OTQsIDQyNDk4LCA0MjUwNCwgNDI1MDksIAorICAgIDQyNTE1LCA0MjUyMCwgNDI1MjUsIDQyNTI5LCA0MjUzMywgNDI1MzgsIDQyNTQzLCA0MjU1MywgNDI1NTksIDQyNTcyLCAKKyAgICA0MjU3OCwgNDI1ODQsIDQyNTkwLCA0MjU5NywgNDI2MDIsIDQyNjA4LCA0MjYxMywgMTgxOTgsIDE0NTgsIDgzMSwgNDI2MTgsIAorICAgIDQyNjIxLCA0MjYyNCwgNDI2MjcsIDMzNjExLCAzMzYxNywgNDI2MzAsIDMzNjIzLCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAKKyAgICA0MjYzNiwgMzM2NTQsIDMzNjYwLCA0MjY0MiwgNDI2NDgsIDI2LCA0MjY1NiwgNDI2NjMsIDQyNjY3LCA0MjY3MSwgNDI2NzksIAorICAgIDM0NDAxLCA0MjY4MywgNDI2ODcsIDQyNjk0LCA0MjY5OSwgNDI3MDMsIDQyNzA4LCA0MjcxNCwgNDI3MTksIDQyNzI1LCAKKyAgICA0MjczMCwgNDI3MzQsIDQyNzM4LCA0Mjc0MiwgNDI3NDcsIDQyNzUxLCA0Mjc1NiwgNDI3NjAsIDQyNzY0LCA0Mjc3MSwgCisgICAgNDI3NzYsIDQyNzgwLCA0Mjc4NCwgNDI3ODksIDQyNzkzLCA0Mjc5OCwgNDI4MDIsIDQyODA2LCA0MjgxMSwgNDI4MTcsIAorICAgIDE2OTI0LCAxNjkyOSwgNDI4MjIsIDQyODI2LCA0MjgyOSwgNDI4MzMsIDQyODM3LCAyMjg1MiwgNDI4NDIsIDQyODQ2LCAKKyAgICA0Mjg1MiwgNDI4NTksIDQyODY1LCA0Mjg3MCwgNDI4ODAsIDQyODg1LCA0Mjg5MywgNDI4OTcsIDQyOTAwLCAzNDQxNiwgCisgICAgNDI5MDQsIDQzNTYsIDQyOTA5LCA0MjkxNCwgNDI5MTgsIDQyOTIzLCA0MjkyNywgNDI5MzIsIDE0NTQ4LCA0Mjk0MywgCisgICAgNDI5NDcsIDQyOTUwLCA0Mjk1NCwgNDI5NTksIDQyOTYzLCA0Mjk2OCwgNDI5NzMsIDQyOTc3LCA0Mjk4MSwgNDI5ODUsIAorICAgIDQyOTg4LCA0Mjk5MiwgODUyMywgMTQ1NjQsIDQyOTk1LCA0Mjk5OCwgNDMwMDQsIDQzMDA5LCA0MzAxNSwgNDMwMjAsIAorICAgIDQzMDI2LCA0MzAzMSwgNDMwMzcsIDQzMDQyLCA0MzA0OCwgNDMwNTQsIDQzMDYwLCA0MzA2NSwgNDMwNjksIDQzMDczLCAKKyAgICA0MzA4MiwgNDMwOTgsIDQzMTE0LCA0MzEyNCwgMzAxNDUsIDQzMTMxLCA0MzEzNSwgNDMxNDAsIDQzMTQ1LCA0MzE0OSwgCisgICAgNDMxNTMsIDM4OTUxLCA0MzE1OSwgNDMxNjQsIDQzMTY4LCA0MzE3NSwgNDMxODAsIDQzMTg1LCA0MzE4OSwgNDMxOTMsIAorICAgIDQzMTk5LCAyOTA5MywgNDMyMDMsIDIzMTM2LCA0MzIwOCwgNDMyMTUsIDQzMjIzLCA0MzIyOSwgNDMyMzYsIDQzMjQ0LCAKKyAgICA0MzI1MCwgNDMyNTQsIDQzMjU5LCA0MzI2NSwgNDMyNzMsIDQzMjc4LCA0MzI4MiwgNDMyOTEsIDEwMjMyLCA0MzI5OSwgCisgICAgNDMzMDMsIDQzMzExLCA0MzMxOCwgNDMzMjMsIDQzMzI4LCA0MzMzMywgNDMzMzcsIDQzMzQwLCA0MzM0NCwgNDMzNDcsIAorICAgIDQzMzUxLCA0MzM1OCwgNDMzNjMsIDQzMzY3LCA0MzM3MywgMjg0OTIsIDMzNjc0LCA0MzM3NywgNDMzODYsIDQzMzk0LCAKKyAgICA0MzQwMCwgNDM0MDcsIDQzNDEzLCA0MzQxOSwgNDM0MjQsIDQzNDI3LCA0MzQyOSwgNDM0MzYsIDQzNDQzLCA0MzQ0OSwgCisgICAgNDM0NTMsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIDQzNDY4LCA0MzQ3MywgNDM0NzcsIDQzNDgxLCA0MzQ4NCwgNDM0ODgsIAorICAgIDQzNTAyLCAyNDkwNiwgNDM1MjEsIDQzNTM0LCA0MzU0NywgNDM1NjAsIDI0OTI0LCA0MzU3NSwgMTE0MjIsIDQzNTkwLCAKKyAgICA0MzU5NiwgNDM2MDAsIDQzNjA0LCA0MzYwOCwgNDM2MTIsIDQzNjE5LCA0MzYyNCwgNDM2MjgsIDQzNjM1LCA0MzY0MSwgCisgICAgNDM2NDYsIDQzNjUyLCA0MzY2MiwgNDM2NzQsIDQzNjg1LCA0MzY5MCwgNDM2OTcsIDQzNzAxLCA0MzcwNSwgNDM3MDgsIAorICAgIDE3MzQzLCAzODU1LCA0MzcxNiwgMTY5NTEsIDQzNzI5LCA0MzczNiwgNDM3NDMsIDQzNzQ3LCA0Mzc1MSwgNDM3NTYsIAorICAgIDQzNzYyLCA0Mzc2NywgNDM3NzMsIDQzNzc3LCA0Mzc4MSwgNDM3ODQsIDQzNzg5LCA0Mzc5MywgNDM3OTgsIDgwODIsIAorICAgIDE2OTYyLCA0MzgwMywgNDM4MDcsIDQzODEzLCA0MzgyMiwgNDM4MjcsIDQzODM2LCA0Mzg0MywgMzg3OTksIDQzODQ5LCAKKyAgICA0Mzg1NCwgNDM4NTgsIDQzODYzLCA0Mzg3MCwgNDM4NzYsIDQzODgwLCA0Mzg4MywgNDM4ODcsIDQzODkyLCAxNTg2NCwgCisgICAgNDM4OTksIDQzOTA2LCA0MzkxMCwgNDM5MTMsIDQzOTE4LCA0MzkyMywgNDM5MjksIDQzOTM0LCA0MzkzOSwgNDM5NDMsIAorICAgIDQzOTQ4LCA0Mzk1OCwgNDM5NjMsIDQzOTY5LCA0Mzk3NCwgNDM5ODAsIDQzOTg1LCA0Mzk5MSwgNDQwMDEsIDQ0MDA2LCAKKyAgICA0NDAxMSwgNDQwMTUsIDQ0MDIwLCA3NTU4LCA3NTcwLCA0NDAyNSwgNDQwMjgsIDQ0MDM1LCA0NDA0MSwgNDQwNTAsIDk0NzcsIAorICAgIDM2NzYwLCA0NDA1OCwgNDQwNjIsIDQ0MDY2LCAzNDQ2NCwgNDQwNzQsIDQ0MDg1LCA0NDA5MywgMzg5OTksIDQ0MTAwLCAKKyAgICA0NDEwNSwgNDQxMTAsIDQ0MTIxLCA0NDEyOCwgNDQxMzksIDM0NDg4LCAyMzE0NywgNDQxNDcsIDkwNywgNDQxNTIsIAorICAgIDE0OTEzLCA0NDE1OCwgMzAyMjksIDQ0MTY0LCA0NDE2OSwgNDQxNzksIDQ0MTg4LCA0NDE5NSwgNDQyMDEsIDQ0MjA1LCAKKyAgICA0NDIwOCwgNDQyMTUsIDQ0MjIxLCA0NDIyOCwgNDQyMzQsIDQ0MjQ0LCA0NDI1MiwgNDQyNTgsIDQ0MjY0LCA0NDI2OSwgCisgICAgNDQyNzMsIDQ0MjgwLCA0NDI4NSwgNDQyOTEsIDQ0Mjk4LCA0NDMwNCwgNDM0NjksIDQ0MzA5LCA0NDMxMywgNTU4LCAKKyAgICAxNTAyOSwgNDQzMTksIDQ0MzI0LCA0NDMyNywgNDQzMzMsIDQ0MzQxLCAxMzgwLCA0NDM0NiwgNDQzNTAsIDQ0MzU1LCAKKyAgICA0NDM2MCwgNDQzNjUsIDQ0MzcyLCA0NDM3NiwgNDQzODEsIDQ0Mzg3LCA0NDM5MSwgMzM2ODQsIDQ0Mzk2LCA0NDQwMSwgCisgICAgNDQ0MTAsIDQ0NDE3LCA0NDQyNywgNDQ0MzMsIDMwMjczLCA0NDQ1MCwgNDQ0NTksIDQ0NDY3LCA0NDQ3MywgNDQ0NzgsIAorICAgIDQ0NDg1LCA0NDQ5MSwgNDQ0OTksIDQ0NTA4LCA0NDUxNiwgNDQ1MjAsIDQ0NTI1LCA0NDUzMywgMzEyNTEsIDM0NDk3LCAKKyAgICA0NDUzOSwgNDQ1NTgsIDE3MjU3LCA0NDU3MiwgNDQ1ODgsIDQ0NjAyLCA0NDYwOCwgNDQ2MTMsIDQ0NjE4LCA0NDYyMywgCisgICAgNDQ2MjksIDM0NTAzLCA0NDYzNCwgNDQ2MzcsIDQ0NjQ0LCA0NDY0OSwgNDQ2NTMsIDQwNCwgMjk5NSwgNDQ2NjAsIDQ0NjY1LCAKKyAgICA0NDY3MCwgMjk0NTEsIDQ0NDg4LCA0NDY3NCwgNDQ2NzksIDQ0Njg3LCA0NDY5MSwgNDQ2OTQsIDQ0Njk5LCA0NDcwNSwgCisgICAgNDQ3MTEsIDQ0NzE2LCA0NDcyMCwgMzAzMjgsIDQ0NzIzLCA0NDcyOCwgNDQ3MzIsIDQ0NzM1LCA0NDc0MCwgNDQ3NDQsIAorICAgIDQ0NzQ5LCA0NDc1NCwgNDQ3NTgsIDQ0NzYzLCA0NDc2NywgNDQ3NzEsIDQ0Nzc1LCAyMjg0OCwgMjI4NTksIDQ0NzgwLCAKKyAgICA0NDc4NSwgNDQ3OTEsIDQ0Nzk2LCA0NDgwMiwgMjkwNTAsIDQ0ODA3LCA0NDgxMSwgMjI5NDUsIDE3NTQ5LCA0NDgxNCwgCisgICAgNDQ4MTksIDQ0ODI0LCA0NDgyOSwgNDQ4MzQsIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ3NCwgNjgsIDMzNjk3LCAzMzcwMiwgCisgICAgMzM3MDcsIDMzNzEzLCAzMzcxOCwgMzM3MjMsIDQ0ODU0LCAzMzcyNywgNDQ4NTgsIDQ0ODYyLCA0NDg2NiwgMzM3MzIsIAorICAgIDMzNzM4LCA0NDg4MCwgMzM3NDksIDMzNzU0LCA0NDg4OCwgNDQ4OTMsIDMzNzYwLCA0NDg5OCwgNDQ5MDMsIDQ0OTA4LCAKKyAgICA0NDkxMywgNDQ5MTksIDQ0OTI1LCA0NDkzMSwgMzM3NzcsIDQ0OTQ0LCA0NDk1MywgNDQ5NTksIDMzNzgxLCA0NDk2MywgCisgICAgMzM3ODYsIDQ0OTY4LCAzMzc5MSwgMzM3OTYsIDQ0OTcxLCA0NDk3NiwgNDQ5ODAsIDQ0OTg2LCAzMzMzMiwgNDQ5OTMsIAorICAgIDE0Nzk0LCA0NTAwMCwgNDUwMDUsIDMzODAxLCA0NTAwOSwgNDUwMTQsIDQ1MDE5LCA0NTAyNCwgNDUwMjgsIDQ1MDMzLCAKKyAgICA0NTAzOCwgNDUwNDQsIDQ1MDQ5LCA0NTA1NCwgNDUwNjAsIDQ1MDY2LCA0NTA3MSwgNDUwNzUsIDQ1MDgwLCA0NTA4NSwgCisgICAgNDUwOTAsIDQ1MDk0LCA0NTA5OSwgNDUxMDQsIDQ1MTA5LCA0NTExNSwgNDUxMjEsIDQ1MTI3LCA0NTEzMiwgNDUxMzYsIAorICAgIDQ1MTQxLCA0NTE0NSwgMzM4MDUsIDMzODEwLCAzMzgxNSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgMzM4MjAsIDMzODI2LCAKKyAgICAzMzgzMiwgMzM4NDQsIDQ1MTY5LCAyODA1OSwgNDUxNzMsIDQ1MTc4LCA0NTE4MiwgNDUxODcsIDQ1MTk0LCA0NTE5OSwgCisgICAgNDUyMDQsIDQ1MjA5LCA0NTIxMywgNDUyMTcsIDQ1MjI3LCA0NTIzMiwgNDUyMzcsIDQ1MjQxLCA0NTI0NSwgNDUyNDgsIAorICAgIDQ1MjU2LCAzMzg5MiwgNDUyNjEsIDE0NjUsIDQ1MjY3LCA0NTI3MiwgNDUyNzgsIDQ1Mjg2LCA0NTI5MCwgNDUyOTksIAorICAgIDQ1MzAzLCA0NTMwNywgNDUzMTUsIDQ1MzIxLCA0NTMyOSwgNDUzNDUsIDQ1MzQ5LCA0NTM1MywgNDUzNTcsIDQ1MzYyLCAKKyAgICA0NTM2OCwgNDUzODMsIDMzOTI5LCAxNzY0LCAxMzE5OCwgNDUzODcsIDEzNTksIDEzNzQsIDQ1Mzk5LCA0NTQwNywgNDU0MTQsIAorICAgIDQ1NDE5LCA0NTQyNiwgNDU0MzEsIDk5MjIsIDExMzksIDI1NDQsIDExMjEzLCA0NTQzOCwgOTgyMCwgNDU0NDMsIDQ1NDQ2LCAKKyAgICA0NTQ1NSwgMTI2NywgNDU0NjAsIDQzNjI1LCA0NTQ2NywgNDU0NzYsIDQ1NDgxLCA0NTQ4NSwgNDU0OTMsIDI0MzE3LCAKKyAgICAyNTk2LCA0NTUwMCwgMTE2NzgsIDQ1NTEwLCA0NTUxNiwgMjM3MSwgMjM4MSwgNDU1MjUsIDQ1NTM0LCA0NTU0NCwgNDU1NTUsIAorICAgIDMzNzYsIDM3MDk5LCA0NTU2MCwgMTEyNzcsIDQwMTksIDE4MjM2LCAxMjcyLCA0NTU2NCwgNDU1NzIsIDQ1NTc5LCA0NTU4NCwgCisgICAgNDU1ODgsIDQ1NTkyLCAyNTc5MiwgNDM4OTQsIDExMzA0LCA0NTYwMCwgNDU2MDksIDQ1NjE4LCA0NTYyNiwgNDU2MzMsIAorICAgIDQ1NjQ0LCA0NTY0OSwgNDU2NjIsIDQ1Njc1LCA0NTY4NywgNDU2OTksIDQ1NzExLCA0NTcyMiwgNDU3MzUsIDQ1NzQ2LCAKKyAgICA0NTc1NywgNDU3NjcsIDQ1Nzc1LCA0NTc4MywgNDU3OTUsIDQ1ODA3LCA0NTgxOCwgNDU4MjcsIDQ1ODM1LCA0NTg0MiwgCisgICAgNDU4NTQsIDQ1ODYxLCA0NTg2NywgNDU4NzYsIDQ1ODgzLCA0NTg5NiwgNDU5MDEsIDQ1OTExLCA0NTkxNiwgNDU5MjIsIAorICAgIDQ1OTI3LCA0MTA4NiwgNDU5MzEsIDQ1OTM4LCA0NTk0MiwgNDU5NDksIDQ1OTU3LCA0NTk2NCwgMjU1NywgNDU5NzEsIAorICAgIDQ1OTgyLCA0NTk5MiwgNDYwMDEsIDQ2MDA5LCA0NjAxOSwgNDYwMjcsIDQ2MDM3LCA0NjA0NiwgNDYwNTEsIDQ2MDU3LCAKKyAgICA0NjA2MywgMzg5OSwgNDYwNzQsIDQ2MDg0LCA0NjA5MywgNDYxMDIsIDQ2MTEwLCA0NjEyMCwgNDYxMjgsIDQ2MTM3LCAKKyAgICA0NjE0MiwgNDYxNDcsIDQ2MTUyLCAxNjk0LCA0NywgNDYxNjAsIDQ2MTY4LCA0NjE3OSwgNDYxOTAsIDE3ODc1LCA0NjIwMCwgCisgICAgNDYyMDQsIDQ2MjExLCA0NjIxNywgNDYyMjIsIDQ2MjI2LCA0NjIzNywgNDYyNDcsIDQ2MjU2LCA0NjI2NywgMTgyNzUsIAorICAgIDE4MjgwLCA0NjI3MiwgNDYyODEsIDQ2Mjg2LCA0NjI5NiwgNDYzMDEsIDQ2MzA5LCA0NjMxNywgNDYzMjQsIDQ2MzMwLCAKKyAgICAxNjU2LCAyNzcsIDQ2MzM0LCA0NjM0MCwgNDYzNDUsIDQ2MzQ4LCAyMTQzLCA0Mzc0OCwgNDYzNTYsIDQ2MzYwLCA0NjM2MywgCisgICAgMTUxMCwgNDYzNjksIDE1MjE0LCAxMjc3LCA0NjM3NCwgNDYzODcsIDQ2NDAxLCAyNjgyLCA0NjQxOSwgNDY0MzEsIDQ2NDQzLCAKKyAgICAyNjk2LCAyNzEzLCA0NjQ1NywgNDY0NzAsIDI3MjgsIDQ2NDg0LCA0NjQ5NiwgMjc0MywgNDY1MTAsIDEyODMsIDEyODksIAorICAgIDEyOTUsIDExNTg0LCA0NjUxNSwgNDY1MjAsIDQ2NTI1LCA0NjUyOSwgNDY1NDQsIDQ2NTU5LCA0NjU3NCwgNDY1ODksIAorICAgIDQ2NjA0LCA0NjYxOSwgNDY2MzQsIDQ2NjQ5LCA0NjY2NCwgNDY2NzksIDQ2Njk0LCA0NjcwOSwgNDY3MjQsIDQ2NzM5LCAKKyAgICA0Njc1NCwgNDY3NjksIDQ2Nzg0LCA0Njc5OSwgNDY4MTQsIDQ2ODI5LCA0Njg0NCwgNDY4NTksIDQ2ODc0LCA0Njg4OSwgCisgICAgNDY5MDQsIDQ2OTE5LCA0NjkzNCwgNDY5NDksIDQ2OTY0LCA0Njk3OSwgNDY5OTQsIDQ3MDA5LCA0NzAyNCwgNDcwMzksIAorICAgIDQ3MDU0LCA0NzA2OSwgNDcwODQsIDQ3MDk5LCA0NzExNCwgNDcxMjksIDQ3MTQ0LCA0NzE1OSwgNDcxNzQsIDQ3MTg5LCAKKyAgICA0NzIwNCwgNDcyMTksIDQ3MjM0LCA0NzI0OSwgNDcyNjQsIDQ3Mjc5LCA0NzI5NCwgNDczMDksIDQ3MzI0LCA0NzMzOSwgCisgICAgNDczNTQsIDQ3MzY5LCA0NzM4NCwgNDczOTksIDQ3NDE0LCA0NzQyOSwgNDc0NDQsIDQ3NDU5LCA0NzQ3NCwgNDc0ODksIAorICAgIDQ3NTA0LCA0NzUxOSwgNDc1MzQsIDQ3NTQ5LCA0NzU2NCwgNDc1NzksIDQ3NTk0LCA0NzYwOSwgNDc2MjQsIDQ3NjM5LCAKKyAgICA0NzY1NCwgNDc2NjksIDQ3Njg0LCA0NzY5OSwgNDc3MTQsIDQ3NzI5LCA0Nzc0NCwgNDc3NTksIDQ3Nzc0LCA0Nzc4OSwgCisgICAgNDc4MDQsIDQ3ODE5LCA0NzgzNCwgNDc4NDksIDQ3ODY0LCA0Nzg3OSwgNDc4OTQsIDQ3OTA5LCA0NzkyNCwgNDc5MzksIAorICAgIDQ3OTU0LCA0Nzk2OSwgNDc5ODQsIDQ3OTk5LCA0ODAxNCwgNDgwMjksIDQ4MDQ0LCA0ODA1OSwgNDgwNzQsIDQ4MDg5LCAKKyAgICA0ODEwNCwgNDgxMTksIDQ4MTM0LCA0ODE0OSwgNDgxNjQsIDQ4MTc5LCA0ODE5NCwgNDgyMDksIDQ4MjI0LCA0ODIzOSwgCisgICAgNDgyNTQsIDQ4MjY5LCA0ODI4NCwgNDgyOTksIDQ4MzE0LCA0ODMyOSwgNDgzNDQsIDQ4MzU5LCA0ODM3NCwgNDgzODksIAorICAgIDQ4NDA0LCA0ODQxOSwgNDg0MzQsIDQ4NDQ5LCA0ODQ2NCwgNDg0NzksIDQ4NDk0LCA0ODUwOSwgNDg1MjQsIDQ4NTM5LCAKKyAgICA0ODU1NCwgNDg1NjksIDQ4NTg0LCA0ODU5OSwgNDg2MTQsIDQ4NjI5LCA0ODY0NCwgNDg2NTksIDQ4Njc0LCA0ODY4OSwgCisgICAgNDg3MDQsIDQ4NzE5LCA0ODczNCwgNDg3NDksIDQ4NzY0LCA0ODc3OSwgNDg3OTQsIDQ4ODA5LCA0ODgyNCwgNDg4MzksIAorICAgIDQ4ODU0LCA0ODg2OSwgNDg4ODQsIDQ4ODk5LCA0ODkxNCwgNDg5MjksIDQ4OTQ0LCA0ODk1OSwgNDg5NzQsIDQ4OTg5LCAKKyAgICA0OTAwNCwgNDkwMTksIDQ5MDM0LCA0OTA0OSwgNDkwNjQsIDQ5MDc5LCA0OTA5NCwgNDkxMDksIDQ5MTI0LCA0OTEzOSwgCisgICAgNDkxNTQsIDQ5MTY5LCA0OTE4NCwgNDkxOTksIDQ5MjE0LCA0OTIyOSwgNDkyNDQsIDQ5MjU5LCA0OTI3NCwgNDkyODksIAorICAgIDQ5MzA0LCA0OTMxOSwgNDkzMzQsIDQ5MzQ5LCA0OTM2NCwgNDkzNzksIDQ5Mzk0LCA0OTQwOSwgNDk0MjQsIDQ5NDM5LCAKKyAgICA0OTQ1NCwgNDk0NjksIDQ5NDg0LCA0OTQ5OSwgNDk1MTQsIDQ5NTI5LCA0OTU0NCwgNDk1NTksIDQ5NTc0LCA0OTU4OSwgCisgICAgNDk2MDQsIDQ5NjE5LCA0OTYzNCwgNDk2NDksIDQ5NjY0LCA0OTY3OSwgNDk2OTQsIDQ5NzA5LCA0OTcyNCwgNDk3MzksIAorICAgIDQ5NzU0LCA0OTc2OSwgNDk3ODQsIDQ5Nzk5LCA0OTgxNCwgNDk4MjksIDQ5ODQ0LCA0OTg1OSwgNDk4NzQsIDQ5ODg5LCAKKyAgICA0OTkwNCwgNDk5MTksIDQ5OTM0LCA0OTk0OSwgNDk5NjQsIDQ5OTc5LCA0OTk5NCwgNTAwMDksIDUwMDI0LCA1MDAzOSwgCisgICAgNTAwNTQsIDUwMDY5LCA1MDA4NCwgNTAwOTksIDUwMTE0LCA1MDEyOSwgNTAxNDQsIDUwMTU5LCA1MDE3NCwgNTAxODksIAorICAgIDUwMjA0LCA1MDIxOSwgNTAyMzQsIDUwMjQ5LCA1MDI2NCwgNTAyNzksIDUwMjk0LCA1MDMwOSwgNTAzMjQsIDUwMzM5LCAKKyAgICA1MDM1NCwgNTAzNjksIDUwMzg0LCA1MDM5OSwgNTA0MTQsIDUwNDI5LCA1MDQ0NCwgNTA0NTksIDUwNDc0LCA1MDQ4OSwgCisgICAgNTA1MDQsIDUwNTE5LCA1MDUzNCwgNTA1NDksIDUwNTY0LCA1MDU3OSwgNTA1OTQsIDUwNjA5LCA1MDYyNCwgNTA2MzksIAorICAgIDUwNjU0LCA1MDY2OSwgNTA2ODQsIDUwNjk5LCA1MDcxNCwgNTA3MjksIDUwNzQ0LCA1MDc1OSwgNTA3NzQsIDUwNzg5LCAKKyAgICA1MDgwNCwgNTA4MTksIDUwODM0LCA1MDg0OSwgNTA4NjQsIDUwODc5LCA1MDg5NCwgNTA5MDksIDUwOTI0LCA1MDkzOSwgCisgICAgNTA5NTQsIDUwOTY5LCA1MDk4NCwgNTA5OTksIDUxMDE0LCA1MTAyOSwgNTEwNDQsIDUxMDU5LCA1MTA3NCwgNTEwODksIAorICAgIDUxMTA0LCA1MTExOSwgNTExMzQsIDUxMTQ5LCA1MTE2NCwgNTExNzksIDUxMTk0LCA1MTIwOSwgNTEyMjQsIDUxMjM5LCAKKyAgICA1MTI1NCwgNTEyNjksIDUxMjg0LCA1MTI5OSwgNTEzMTQsIDUxMzI5LCA1MTM0NCwgNTEzNTksIDUxMzc0LCA1MTM4OSwgCisgICAgNTE0MDQsIDUxNDE5LCA1MTQzNCwgNTE0NDksIDUxNDY0LCA1MTQ3OSwgNTE0OTQsIDUxNTA5LCA1MTUyNCwgNTE1MzksIAorICAgIDUxNTU0LCA1MTU2OSwgNTE1ODQsIDUxNTk5LCA1MTYxNCwgNTE2MjksIDUxNjQ0LCA1MTY1OSwgNTE2NzQsIDUxNjg5LCAKKyAgICA1MTcwNCwgNTE3MTksIDUxNzM0LCA1MTc0OSwgNTE3NjQsIDUxNzc5LCA1MTc5NCwgNTE4MDksIDUxODI0LCA1MTgzOSwgCisgICAgNTE4NTQsIDUxODY5LCA1MTg4NCwgNTE4OTksIDUxOTE0LCA1MTkyOSwgNTE5NDQsIDUxOTU5LCA1MTk3NCwgNTE5ODksIAorICAgIDUyMDA0LCA1MjAxOSwgNTIwMzQsIDUyMDQ5LCA1MjA2NCwgNTIwNzksIDUyMDk0LCA1MjEwOSwgNTIxMjQsIDUyMTM5LCAKKyAgICA1MjE1NCwgNTIxNjksIDUyMTg0LCA1MjE5OSwgNTIyMTQsIDUyMjI5LCA1MjI0NCwgNTIyNTksIDUyMjc0LCA1MjI4OSwgCisgICAgNTIzMDQsIDUyMzE5LCA1MjMzNCwgNTIzNDksIDUyMzY0LCA1MjM3OSwgNTIzOTQsIDUyNDA5LCA1MjQyNCwgNTI0MzksIAorICAgIDUyNDU0LCA1MjQ2OSwgNTI0ODQsIDUyNDk5LCA1MjUxNCwgNTI1MjksIDUyNTQ0LCA1MjU1OSwgNTI1NzQsIDUyNTg5LCAKKyAgICA1MjYwNCwgNTI2MTksIDUyNjM0LCA1MjY0OSwgNTI2NjQsIDUyNjc5LCA1MjY5NCwgNTI3MDksIDUyNzI0LCA1MjczOSwgCisgICAgNTI3NTQsIDUyNzY5LCA1Mjc4NCwgNTI3OTksIDUyODE0LCA1MjgyOSwgNTI4NDQsIDUyODU5LCA1Mjg3NCwgNTI4ODksIAorICAgIDUyOTA0LCA1MjkxOSwgNTI5MzQsIDUyOTQ5LCA1Mjk2NCwgNTI5NzksIDUyOTk0LCA1MzAwOSwgNTMwMjQsIDUzMDM5LCAKKyAgICA1MzA1NCwgNTMwNjksIDUzMDg0LCA1MzA5OSwgNTMxMTQsIDUzMTI5LCA1MzE0NCwgNTMxNTksIDUzMTc0LCA1MzE4OSwgCisgICAgNTMyMDQsIDUzMjE5LCA1MzIzNCwgNTMyNDksIDUzMjY0LCA1MzI3OSwgNTMyOTQsIDUzMzA5LCA1MzMyNCwgNTMzMzksIAorICAgIDUzMzU0LCA1MzM2OSwgNTMzODQsIDUzMzk5LCA1MzQxNCwgNTM0MjksIDUzNDQ0LCA1MzQ1OSwgNTM0NzQsIDUzNDg5LCAKKyAgICA1MzUwNCwgNTM1MTksIDUzNTM0LCA1MzU0OSwgNTM1NjQsIDUzNTc5LCA1MzU5NCwgNTM2MDksIDUzNjI0LCA1MzYzOSwgCisgICAgNTM2NTQsIDUzNjY5LCA1MzY4NCwgNTM2OTksIDUzNzE0LCA1MzcyOSwgNTM3NDQsIDUzNzU5LCA1Mzc3NCwgNTM3ODksIAorICAgIDUzODA0LCA1MzgxOSwgNTM4MzQsIDUzODQ5LCA1Mzg2NCwgNTM4NzksIDUzODk0LCA1MzkwOSwgNTM5MjQsIDUzOTM5LCAKKyAgICA1Mzk1NCwgNTM5NjksIDUzOTg0LCA1Mzk5OSwgNTQwMTQsIDU0MDI5LCA1NDA0NCwgNTQwNTksIDU0MDc0LCA1NDA4OSwgCisgICAgNTQxMDQsIDU0MTE5LCA1NDEzNCwgNTQxNDksIDU0MTY0LCA1NDE3OSwgNTQxOTQsIDU0MjA5LCA1NDIyNCwgNTQyMzksIAorICAgIDU0MjU0LCA1NDI2OSwgNTQyODQsIDU0Mjk5LCA1NDMxNCwgNTQzMjksIDU0MzQ1LCA1NDM2MSwgNTQzNzcsIDU0MzkzLCAKKyAgICA1NDQwOSwgNTQ0MjUsIDU0NDQxLCA1NDQ1NywgNTQ0NzMsIDU0NDg5LCA1NDUwNSwgNTQ1MjEsIDU0NTM3LCA1NDU1MywgCisgICAgNTQ1NjksIDU0NTg1LCA1NDYwMSwgNTQ2MTcsIDU0NjMzLCA1NDY0OSwgNTQ2NjUsIDU0NjgxLCA1NDY5NywgNTQ3MTMsIAorICAgIDU0NzI5LCA1NDc0NSwgNTQ3NjEsIDU0Nzc3LCA1NDc5MywgNTQ4MDksIDU0ODI1LCA1NDg0MSwgNTQ4NTcsIDU0ODczLCAKKyAgICA1NDg4OSwgNTQ5MDUsIDU0OTIxLCA1NDkzNywgNTQ5NTMsIDU0OTY5LCA1NDk4NSwgNTUwMDEsIDU1MDE3LCA1NTAzMywgCisgICAgNTUwNDksIDU1MDY1LCA1NTA4MSwgNTUwOTcsIDU1MTEzLCA1NTEyOSwgNTUxNDUsIDU1MTYxLCA1NTE3NywgNTUxOTMsIAorICAgIDU1MjA5LCA1NTIyNSwgNTUyNDEsIDU1MjU3LCA1NTI3MywgNTUyODksIDU1MzA1LCA1NTMyMSwgNTUzMzcsIDU1MzUzLCAKKyAgICA1NTM2OSwgNTUzODUsIDU1NDAxLCA1NTQxNywgNTU0MzMsIDU1NDQ5LCA1NTQ2NSwgNTU0ODEsIDU1NDk3LCA1NTUxMywgCisgICAgNTU1MjksIDU1NTQ1LCA1NTU2MSwgNTU1NzcsIDU1NTkzLCA1NTYwOSwgNTU2MjUsIDU1NjQxLCA1NTY1NywgNTU2NzMsIAorICAgIDU1Njg5LCA1NTcwNSwgNTU3MjEsIDU1NzM3LCA1NTc1MywgNTU3NjksIDU1Nzg1LCA1NTgwMSwgNTU4MTcsIDU1ODMzLCAKKyAgICA1NTg0OSwgNTU4NjUsIDU1ODgxLCA1NTg5NywgNTU5MTMsIDU1OTI5LCA1NTk0NSwgNTU5NjEsIDU1OTc3LCA1NTk5MywgCisgICAgNTYwMDksIDU2MDI1LCA1NjA0MSwgNTYwNTcsIDU2MDczLCA1NjA4OSwgNTYxMDUsIDU2MTIxLCA1NjEzNywgNTYxNTMsIAorICAgIDU2MTY5LCA1NjE4NSwgNTYyMDEsIDU2MjE3LCA1NjIzMywgNTYyNDksIDU2MjY1LCA1NjI4MSwgNTYyOTcsIDU2MzEzLCAKKyAgICA1NjMyOSwgNTYzNDUsIDU2MzYxLCA1NjM3NywgNTYzOTMsIDU2NDA5LCA1NjQyNSwgNTY0NDEsIDU2NDU3LCA1NjQ3MywgCisgICAgNTY0ODksIDU2NTA1LCA1NjUyMSwgNTY1MzcsIDU2NTUzLCA1NjU2OSwgNTY1ODUsIDU2NjAxLCA1NjYxNywgNTY2MzMsIAorICAgIDU2NjQ5LCA1NjY2NSwgNTY2ODEsIDU2Njk3LCA1NjcxMywgNTY3MjksIDU2NzQ1LCA1Njc2MSwgNTY3NzcsIDU2NzkzLCAKKyAgICA1NjgwOSwgNTY4MjUsIDU2ODQxLCA1Njg1NywgNTY4NzMsIDU2ODg5LCA1NjkwNSwgNTY5MjEsIDU2OTM3LCA1Njk1MywgCisgICAgNTY5NjksIDU2OTg1LCA1NzAwMSwgNTcwMTcsIDU3MDMzLCA1NzA0OSwgNTcwNjUsIDU3MDgxLCA1NzA5NywgNTcxMTMsIAorICAgIDU3MTI5LCA1NzE0NSwgNTcxNjEsIDU3MTc3LCA1NzE5MywgNTcyMDksIDU3MjI1LCA1NzI0MSwgNTcyNTcsIDU3MjczLCAKKyAgICA1NzI4OSwgNTczMDUsIDU3MzIxLCA1NzMzNywgNTczNTMsIDU3MzY5LCA1NzM4NSwgNTc0MDEsIDU3NDE3LCA1NzQzMywgCisgICAgNTc0NDksIDU3NDY1LCA1NzQ4MSwgNTc0OTcsIDU3NTEzLCA1NzUyOSwgNTc1NDUsIDU3NTYxLCA1NzU3NywgNTc1OTMsIAorICAgIDU3NjA5LCA1NzYyNSwgNTc2NDEsIDU3NjU3LCA1NzY3MywgNTc2ODksIDU3NzA1LCA1NzcyMSwgNTc3MzcsIDU3NzUzLCAKKyAgICA1Nzc2OSwgNTc3ODUsIDU3ODAxLCA1NzgxNywgNTc4MzMsIDU3ODQ5LCA1Nzg2NSwgNTc4ODEsIDU3ODk3LCA1NzkxMywgCisgICAgNTc5MjksIDU3OTQ1LCA1Nzk2MSwgNTc5NzcsIDU3OTkzLCA1ODAwOSwgNTgwMjUsIDU4MDQxLCA1ODA1NywgNTgwNzMsIAorICAgIDU4MDg5LCA1ODEwNSwgNTgxMjEsIDU4MTM3LCA1ODE1MywgNTgxNjksIDU4MTg1LCA1ODIwMSwgNTgyMTcsIDU4MjMzLCAKKyAgICA1ODI0OSwgNTgyNjUsIDU4MjgxLCA1ODI5NywgNTgzMTMsIDU4MzI5LCA1ODM0NSwgNTgzNjEsIDU4Mzc3LCA1ODM5MywgCisgICAgNTg0MDksIDU4NDI1LCA1ODQ0MSwgNTg0NTcsIDU4NDczLCA1ODQ4OSwgNTg1MDUsIDU4NTIxLCA1ODUzNywgNTg1NTMsIAorICAgIDU4NTY5LCA1ODU4NSwgNTg2MDEsIDU4NjE3LCA1ODYzMywgNTg2NDksIDU4NjY1LCA1ODY4MSwgNTg2OTcsIDU4NzEzLCAKKyAgICA1ODcyOSwgNTg3NDUsIDU4NzYxLCA1ODc3NywgNTg3OTMsIDU4ODA5LCA1ODgyNSwgNTg4NDEsIDU4ODU3LCA1ODg3MywgCisgICAgNTg4ODksIDU4OTA1LCA1ODkyMSwgNTg5MzcsIDU4OTUzLCA1ODk2OSwgNTg5ODUsIDU5MDAxLCA1OTAxNywgNTkwMzMsIAorICAgIDU5MDQ5LCA1OTA2NSwgNTkwODEsIDU5MDk3LCA1OTExMywgNTkxMjksIDU5MTQ1LCA1OTE2MSwgNTkxNzcsIDU5MTkzLCAKKyAgICA1OTIwOSwgNTkyMjUsIDU5MjQxLCA1OTI1NywgNTkyNzMsIDU5Mjg5LCA1OTMwNSwgNTkzMjEsIDU5MzM3LCA1OTM1MywgCisgICAgNTkzNjksIDU5Mzg1LCA1OTQwMSwgNTk0MTcsIDU5NDMzLCA1OTQ0OSwgNTk0NjUsIDU5NDgxLCA1OTQ5NywgNTk1MTMsIAorICAgIDU5NTI5LCA1OTU0NSwgNTk1NjEsIDU5NTc3LCA1OTU5MywgNTk2MDksIDU5NjI1LCA1OTY0MSwgNTk2NTcsIDU5NjczLCAKKyAgICA1OTY4OSwgNTk3MDUsIDU5NzIxLCA1OTczNywgNTk3NTMsIDU5NzY5LCA1OTc4NSwgNTk4MDEsIDU5ODE3LCA1OTgzMywgCisgICAgNTk4NDksIDU5ODY1LCA1OTg4MSwgNTk4OTcsIDU5OTEzLCA1OTkyOSwgNTk5NDUsIDU5OTYxLCA1OTk3NywgNTk5OTMsIAorICAgIDYwMDA5LCA2MDAyNSwgNjAwNDEsIDYwMDU3LCA2MDA3MywgNjAwODksIDYwMTA1LCA2MDEyMSwgNjAxMzcsIDYwMTUzLCAKKyAgICA2MDE2OSwgNjAxODUsIDYwMjAxLCA2MDIxNywgNjAyMzMsIDYwMjQ5LCA2MDI2NSwgNjAyODEsIDYwMjk3LCA2MDMxMywgCisgICAgNjAzMjksIDYwMzQ1LCA2MDM2MSwgNjAzNzcsIDYwMzkzLCA2MDQwOSwgNjA0MjUsIDYwNDQxLCA2MDQ1NywgNjA0NzMsIAorICAgIDYwNDg5LCA2MDUwNSwgNjA1MjEsIDYwNTM3LCA2MDU1MywgNjA1NjksIDYwNTg1LCA2MDYwMSwgNjA2MTcsIDYwNjMzLCAKKyAgICA2MDY0OSwgNjA2NjUsIDYwNjgxLCA2MDY5NywgNjA3MTMsIDYwNzI5LCA2MDc0NSwgNjA3NjEsIDYwNzc3LCA2MDc5MywgCisgICAgNjA4MDksIDYwODI1LCA2MDg0MSwgNjA4NTcsIDYwODczLCA2MDg4OSwgNjA5MDUsIDYwOTIxLCA2MDkzNywgNjA5NTMsIAorICAgIDYwOTY5LCA2MDk4NSwgNjEwMDEsIDYxMDE3LCA2MTAzMywgNjEwNDksIDYxMDY1LCA2MTA4MSwgNjEwOTcsIDYxMTEzLCAKKyAgICA2MTEyOSwgNjExNDUsIDYxMTYxLCA2MTE3NywgNjExOTMsIDYxMjA5LCA2MTIyNSwgNjEyNDEsIDYxMjU3LCA2MTI3MywgCisgICAgNjEyODksIDYxMzA1LCA2MTMyMSwgNjEzMzcsIDYxMzUzLCA2MTM2OSwgNjEzODUsIDYxNDAxLCA2MTQxNywgNjE0MzMsIAorICAgIDYxNDQ5LCA2MTQ2NSwgNjE0ODEsIDYxNDk3LCA2MTUxMywgNjE1MjksIDYxNTQ1LCA2MTU2MSwgNjE1NzcsIDYxNTkzLCAKKyAgICA2MTYwOSwgNjE2MjUsIDYxNjQxLCA2MTY1NywgNjE2NzMsIDYxNjg5LCA2MTcwNSwgNjE3MjEsIDYxNzM3LCA2MTc1MywgCisgICAgNjE3NjksIDYxNzg1LCA2MTgwMSwgNjE4MTcsIDYxODMzLCA2MTg0OSwgNjE4NjUsIDYxODgxLCA2MTg5NywgNjE5MTMsIAorICAgIDYxOTI5LCA2MTk0NSwgNjE5NjEsIDYxOTc3LCA2MTk5MywgNjIwMDksIDYyMDI1LCA2MjA0MSwgNjIwNTcsIDYyMDczLCAKKyAgICA2MjA4OSwgNjIxMDUsIDYyMTIxLCA2MjEzNywgNjIxNTMsIDYyMTY5LCA2MjE4NSwgNjIyMDEsIDYyMjE3LCA2MjIzMywgCisgICAgNjIyNDksIDYyMjY1LCA2MjI4MSwgNjIyOTcsIDYyMzEzLCA2MjMyOSwgNjIzNDUsIDYyMzYxLCA2MjM3NywgNjIzOTMsIAorICAgIDYyNDA5LCA2MjQyNSwgNjI0NDEsIDYyNDU3LCA2MjQ3MywgNjI0ODksIDYyNTA1LCA2MjUyMSwgNjI1MzcsIDYyNTUzLCAKKyAgICA2MjU2OSwgNjI1ODUsIDYyNjAxLCA2MjYxNywgNjI2MzMsIDYyNjQ5LCA2MjY2NSwgNjI2ODEsIDYyNjk3LCA2MjcxMywgCisgICAgNjI3MjksIDYyNzQ1LCA2Mjc2MSwgNjI3NzcsIDYyNzkzLCA2MjgwOSwgNjI4MjUsIDYyODQxLCA2Mjg1NywgNjI4NzMsIAorICAgIDYyODg5LCA2MjkwNSwgNjI5MjEsIDYyOTM3LCA2Mjk1MywgNjI5NjksIDYyOTg1LCA2MzAwMSwgNjMwMTYsIDE4MzA3LCAKKyAgICA2MzAyNSwgNjMwMzAsIDYzMDM2LCA2MzA0MiwgNjMwNTIsIDYzMDYwLCAxNjI3MCwgMTY4NjgsIDEwNzMzLCA2MzA3MywgCisgICAgMTUxOCwgMTUyMiwgNjMwODEsIDM5NzMsIDI5NTY2LCA3NTEyLCA2MzA4NywgNjMwOTIsIDYzMDk3LCA2MzEwMiwgNjMxMDcsIAorICAgIDYzMTEzLCA2MzExOCwgNjMxMjQsIDYzMTI5LCA2MzEzNSwgNjMxNDAsIDYzMTQ1LCA2MzE1MCwgNjMxNTUsIDYzMTYxLCAKKyAgICA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjA3LCA2MzIxMywgCisgICAgNjMyMjAsIDI2MDAsIDYzMjI1LCA2MzIzMSwgODkxMiwgNjMyMzUsIDYzMjQwLCA2MzI0NywgNjMyNTUsIDY1LCA2MzI1OSwgCisgICAgNjMyNjUsIDYzMjcwLCA2MzI3NSwgNjMyNzksIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDExNjIxLCA2MzI5NiwgNjMzMDYsIAorICAgIDYzMzE5LCA2MzMzMCwgNjMzNDMsIDYzMzUwLCA2MzM1NiwgNjMzNjQsIDYzMzY5LCA2MzM3NSwgNjMzODEsIDYzMzg3LCAKKyAgICA2MzM5MiwgNjMzOTcsIDYzNDAyLCA2MzQwNywgNjM0MTEsIDYzNDE2LCA2MzQyMSwgNjM0MjYsIDYzNDMyLCA2MzQzOCwgCisgICAgNjM0NDQsIDYzNDQ5LCA2MzQ1MywgNjM0NTgsIDYzNDYzLCA2MzQ2NywgNjM0NzIsIDYzNDc3LCA2MzQ4MiwgNjM0ODYsIAorICAgIDExNjM3LCAxMTY0OCwgMTE2NTMsIDE1NjEsIDYzNDkwLCA2MzQ5NiwgMTU2NiwgNjM1MDEsIDYzNTA0LCAxNzc0MSwgCisgICAgNjM1MDksIDYzNTE1LCA2MzUyMCwgMTU5NywgNjM1MjYsIDE2MDMsIDE2MDksIDExNjgzLCA2MzUzMSwgNjM1NDAsIDYzNTQ4LCAKKyAgICA2MzU1NSwgNjM1NTksIDYzNTYzLCA2MzU2OSwgNjM1NzQsIDMzMzY1LCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgCisgICAgNjM2MDIsIDYzNjA2LCA2MzYxNSwgMTYxNCwgMTc4NTAsIDYzNjIwLCA2MzYyNCwgMTc4NjEsIDExNjIsIDYzNjI4LCAKKyAgICA2MzYzNSwgNjM2NDAsIDYzNjQ0LCAxNzg5MSwgMTYxOCwgNDEyNDMsIDYzNjQ3LCA2MzY1MiwgNjM2NjIsIDYzNjcxLCAKKyAgICA2MzY3NiwgNjM2ODAsIDYzNjg2LCAxNjIzLCA0Mzg1NSwgNjM2OTEsIDYzNzAwLCA2MzcwNiwgNjM3MTEsIDYzNzE2LCAKKyAgICAxMTg4MiwgMTE4ODgsIDYzNzIyLCA2MzczNCwgNjM3NTEsIDYzNzY4LCA2Mzc4NSwgNjM4MDIsIDYzODE5LCA2MzgzNiwgCisgICAgNjM4NTMsIDYzODcwLCA2Mzg4NywgNjM5MDQsIDYzOTIxLCA2MzkzOCwgNjM5NTUsIDYzOTcyLCA2Mzk4OSwgNjQwMDYsIAorICAgIDY0MDIzLCA2NDA0MCwgNjQwNTcsIDY0MDc0LCA2NDA5MSwgNjQxMDgsIDY0MTI1LCA2NDE0MiwgNjQxNTksIDY0MTc2LCAKKyAgICA2NDE5MywgNjQyMTAsIDY0MjI3LCA2NDI0NCwgNjQyNjEsIDY0Mjc4LCA2NDI5NSwgNjQzMTIsIDY0MzI5LCA2NDM0NiwgCisgICAgNjQzNjMsIDY0MzgwLCA2NDM5NywgNjQ0MTQsIDY0NDMxLCA2NDQ0OCwgNjQ0NjUsIDY0NDgyLCA2NDQ5OSwgNjQ1MTYsIAorICAgIDY0NTMzLCA2NDU1MCwgNjQ1NjcsIDY0NTc4LCA2NDU4OCwgNjQ1OTMsIDE2MjgsIDY0NTk3LCA2NDYwMiwgNjQ2MDgsIAorICAgIDY0NjEzLCA2NDYxOCwgNjQ2MjUsIDk4MzksIDE2MzMsIDY0NjMxLCA2NDY0MCwgMjk4ODcsIDY0NjQ1LCA2NDY1NiwgCisgICAgMTE4OTksIDY0NjY2LCA2NDY3MSwgNjQ2NzcsIDY0NjgyLCA2NDY4OSwgNjQ2OTUsIDY0NzAwLCAxNjM4LCAxODE3NCwgCisgICAgNjQ3MDUsIDY0NzExLCAxMTkwOSwgMTY0MywgMTE5MTQsIDY0NzE3LCA2NDcyMiwgNjQ3MjgsIDY0NzMzLCA2NDczOCwgCisgICAgNjQ3NDMsIDY0NzQ4LCA2NDc1MywgNjQ3NTgsIDY0NzYzLCA2NDc2OCwgNjQ3NzQsIDY0NzgwLCA2NDc4NiwgNjQ3OTEsIAorICAgIDY0Nzk1LCA2NDgwMCwgNjQ4MDUsIDY0ODA5LCA2NDgxNCwgNjQ4MTksIDY0ODI0LCA2NDgyOSwgNjQ4MzMsIDY0ODM4LCAKKyAgICA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OCwgNjQ4NjMsIDY0ODY4LCA2NDg3NCwgNjQ4NzksIDY0ODg0LCA2NDg5MCwgCisgICAgNjQ4OTYsIDY0OTAxLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIDY0OTI5LCA2NDkzNCwgNjQ5MzksIAorICAgIDY0OTQ1LCA2NDk1MSwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgNjQ5NjksIDY0OTc0LCA2NDk3OSwgMzEzOTUsIDY0OTgzLCAKKyAgICA2NDk4OCwgNjQ5OTMsIDY0OTk5LCA2NTAwNCwgNjUwMDksIDY1MDEzLCA2NTAxOCwgNjUwMjMsIDY1MDI5LCA2NTAzNCwgCisgICAgNjUwMzksIDY1MDQ1LCA2NTA1MSwgNjUwNTYsIDY1MDYwLCA2NTA2NSwgNjUwNzAsIDY1MDc0LCA2NTA3OSwgNjUwODQsIAorICAgIDY1MDg5LCA2NTA5NSwgNjUxMDEsIDY1MTA2LCA2NTExMCwgNjUxMTUsIDY1MTIwLCA2NTEyNCwgNjUxMjksIDY1MTM0LCAKKyAgICA2NTEzOSwgNjUxNDQsIDY1MTQ4LCA2NTE1MSwgNjUxNTQsIDY1MTU5LCA2NTE2NCwgMzQwNTYsIDY1MTcxLCA2NTE3OSwgCisgICAgMzY5MSwgMjk4MzcsIDY1MTg1LCA2NTE5MiwgNjUxOTgsIDM4MzAsIDEyMDIwLCA2NTIwNCwgNjUyMTQsIDY1MjI5LCAKKyAgICA2NTIzNywgMTIwMjUsIDY1MjQ4LCA2NTI1MywgNjUyNjQsIDY1Mjc2LCA2NTI4OCwgNjUzMDAsIDI3MzQsIDY1MzEyLCAKKyAgICA2NTMxNywgNjUzMjksIDY1MzMzLCA2NTMzOSwgNjUzNDUsIDY1MzUwLCAxNjYwLCAxNzQxOCwgNjUzNTksIDY1MzY0LCAKKyAgICA0MzkxNCwgNjUzNjgsIDY1MzcyLCA2NTM3NywgNjUzODEsIDE4MzE1LCA2NTM4NiwgNjUzODksIDY1Mzk0LCA2NTQwMiwgCisgICAgNjU0MTAsIDE2NjQsIDEyMDYxLCAxMjA2NywgMTY2OSwgNjU0MTgsIDY1NDI1LCA2NTQzMCwgNjU0MzksIDY1NDQ5LCAKKyAgICA2NTQ1NiwgNjU0NjEsIDY1NDY2LCAxNjc0LCA2NTQ3MywgNjU0NzgsIDE4NDM1LCA2NTQ4MiwgNjU0ODcsIDY1NDk0LCAKKyAgICA2NTUwMCwgNjU1MDQsIDY1NTE1LCA2NTUyNSwgNjU1MzIsIDE4NDU3LCA5NzMzLCA5NzQwLCA0MDIyLCA0MDI4LCA2NTUzOSwgCisgICAgMTY3OSwgNjU1NDQsIDY1NTUwLCA2NTU1OCwgNjU1NjUsIDY1NTcxLCA2NTU3OCwgNjU1OTAsIDY1NTk2LCA2NTYwMSwgCisgICAgNjU2MTMsIDY1NjI0LCA2NTYzMywgNjU2NDMsIDM5NTIsIDY1NjUxLCAzMzE2NiwgMzMxNzUsIDE4NDk3LCAxNjg0LCAxNjg4LCAKKyAgICA2NTY2NCwgNjU2NzUsIDY1NjgwLCAxNjk4LCA2NTY4OCwgNjU2OTMsIDY1Njk4LCAxODU1NiwgNjU3MTAsIDY1NzEzLCAKKyAgICA2NTcxOSwgNjU3MjUsIDY1NzMwLCA2NTczOCwgMTcwMywgNjU3NDMsIDY1NzQ4LCA2NTc1NiwgNjU3NjQsIDY1NzcxLCAKKyAgICA2NTc4MCwgNjU3ODgsIDY1Nzk3LCAxNzA4LCA2NTgwMSwgMTcxMywgMjMwMTYsIDY1ODA2LCA2NTgxMywgMTg2MzAsIAorICAgIDY1ODIxLCA2NTgyNywgNjU4MzIsIDY1ODQwLCA2NTg0NywgNjU4NTUsIDY1ODY1LCA2NTg3NCwgNjU4ODQsIDY1ODkzLCAKKyAgICA2NTkwNCwgNjU5MTQsIDY1OTI0LCA2NTkzMywgNjU5NDMsIDY1OTU3LCA2NTk3MCwgNjU5NzksIDY1OTg3LCA2NTk5NywgCisgICAgNjYwMDYsIDY2MDE4LCA2NjAyOSwgNjYwNDAsIDY2MDUwLCAxNzk0OCwgNjYwNTUsIDEyMjEzLCA2NjA2NCwgNjYwNzAsIAorICAgIDY2MDc1LCA2NjA4MiwgNjYwODksIDY2MDk1LCAxNzYxNywgNjYxMDUsIDY2MTExLCA2NjExNiwgNjYxMjcsIDY2MTMyLCAKKyAgICA2NjE0MCwgMTIyMzAsIDEyMjM1LCA2NjE0OCwgNjYxNTQsIDY2MTU4LCA2NjE2NiwgNDAxNywgMTg2OTIsIDQ0MDA3LCAKKyAgICA2NjE3MSwgNjYxNzcsIDY2MTgyLCA2NjE5MCwgNjYxOTcsIDEzMTc5LCA2NjIwMiwgNjYyMDgsIDE3MjQsIDY2MjEzLCAKKyAgICA2NjIxNiwgMTQzOCwgNjYyMjIsIDY2MjI3LCA2NjIzMiwgNjYyMzgsIDY2MjQzLCA2NjI0OCwgNjYyNTMsIDY2MjU4LCAKKyAgICA2NjI2MywgNjYyNjgsIDE3MzMsIDEzLCA2NjI3NCwgNjYyNzgsIDY2MjgzLCA2NjI4NywgNjYyOTEsIDY2Mjk1LCAzNDI5NiwgCisgICAgNjYzMDAsIDI1MDcwLCA2NjMwNSwgNjYzMTAsIDY2MzE0LCA2NjMxNywgNjYzMjEsIDY2MzI1LCA2NjMzMCwgNjYzMzQsIAorICAgIDY2MzM5LCA2NjM0MywgNjYzNDksIDM3NTE0LCAzNzUxOSwgMzc1MjQsIDY2MzUyLCA2NjM1OSwgNjYzNjUsIDY2MzczLCAKKyAgICA0MzY3OCwgNjYzODMsIDM3NTMwLCAzNDU2MCwgMzQzMTEsIDM0MzE3LCAzNzU0NiwgMzQzMjMsIDY2Mzg4LCA2NjM5MywgCisgICAgMzQ1OTMsIDY2Mzk3LCA2NjQwMCwgNjY0MDQsIDY2NDEyLCA2NjQxOSwgNjY0MjIsIDY2NDI3LCA2NjQzMiwgNjY0MzYsIAorICAgIDY2NDQwLCA2NjQ0MywgNjY0NTMsIDY2NDY1LCA2NjQ3MiwgNjY0NzgsIDM0MzI4LCA2NjQ4NSwgMzYwNzgsIDY2NDg4LCAKKyAgICA4OTI5LCAxMDE5LCA2NjQ5MSwgNjY0OTUsIDY2NTAwLCAzODczLCA2NjUwNCwgNjY1MDcsIDE0ODI3LCA2NjUxNCwgNjY1MjEsIAorICAgIDY2NTM0LCA2NjU0MiwgNjY1NTEsIDY2NTYwLCA2NjU2NSwgNjY1NzUsIDY2NTg4LCA2NjYwMCwgNjY2MDcsIDY2NjEyLCAKKyAgICA2NjYyMSwgNjY2MzQsIDM5MDM5LCA2NjY1MiwgNjY2NTcsIDY2NjY0LCA2NjY3MCwgNjY2NzUsIDgxOSwgNjY2ODAsIAorICAgIDY2Njg4LCA2NjY5NSwgNjY3MDIsIDI5MzkyLCA3ODMsIDY2NzA4LCA2NjcxNCwgNjY3MjQsIDY2NzMyLCA2NjczOCwgCisgICAgNjY3NDMsIDM0MzQ3LCA2MzEwLCAzNDM2MSwgNjY3NDcsIDY2NzU3LCA2Njc2MiwgNjY3NzIsIDY2Nzg3LCA2Njc5MywgCisgICAgNjY3OTksIDM0MzcxLCA2NjgwNCwgMzM0ODIsIDY2ODA4LCA2NjgxMywgNjY4MjAsIDY2ODI1LCA2NjgyOSwgNjY4MzQsIAorICAgIDE4NTAwLCA2Njg0MSwgNjY4NDYsIDY2ODUwLCA2MzUxLCAzNDM5NywgNjY4NTQsIDY2ODYwLCAzMjQsIDY2ODcwLCA2Njg3NywgCisgICAgNjY4ODQsIDY2ODg5LCA2Njg5OCwgNjM2NTYsIDY2OTA0LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIAorICAgIDY2OTMzLCA2NjkzNywgNjY5NDMsIDY2OTUxLCA2Njk1NiwgNjY5NjEsIDY2OTY2LCA2Njk3MCwgNjY5NzUsIDY2OTc5LCAKKyAgICA2Njk4MywgNjY5ODksIDY2OTk1LCA2NzAwMCwgNjcwMDQsIDY3MDA5LCAzNDUyMSwgNjcwMTMsIDM0NTI3LCAzNDUzMywgCisgICAgNjcwMTgsIDY3MDI0LCA2NzAzMSwgNjcwMzYsIDY3MDQwLCAzMzQ5OSwgMTgxNjcsIDY3MDQzLCA2NzA0NywgNjcwNTIsIAorICAgIDY3MDU5LCA2NzA2NSwgNjcwNjksIDY3MDc0LCA0MzM1MywgNjcwODAsIDY3MDg0LCA2NzA5MSwgNjcwOTUsIDY3MTAwLCAKKyAgICA2NzEwNiwgNjcxMTIsIDY3MTE4LCA2NzEzMCwgNjcxMzksIDY3MTQ5LCA2NzE1NSwgNjcxNjIsIDY3MTY3LCA2NzE3MiwgCisgICAgNjcxNzYsIDY3MTc5LCA2NzE4NSwgNjcxOTIsIDY3MTk3LCA2NzIwMiwgNjcyMDksIDY3MjE2LCA2NzIyMywgNjcyMjksIAorICAgIDY3MjM0LCA2NzIzOSwgNjcyNDcsIDM0NTM4LCAyNDYyLCA2NzI1MiwgNjcyNTcsIDY3MjYzLCA2NzI2OCwgNjcyNzQsIAorICAgIDY3Mjc5LCA2NzI4NCwgNjcyODksIDY3Mjk1LCAzNDU1OSwgNjczMDAsIDY3MzA2LCA2NzMxMiwgNjczMTgsIDM0NjI5LCAKKyAgICA2NzMyMywgNjczMjgsIDY3MzMzLCAzNDY0MCwgNjczMzgsIDY3MzQzLCA2NzM0OCwgNjczNTQsIDY3MzYwLCAzNDY0NSwgCisgICAgNjczNjUsIDY3MzcwLCA2NzM3NSwgMzQ3MDAsIDM0NzA2LCA2NzM4MCwgNjczODUsIDM0NzExLCAzNDczMywgMzAxMzYsIAorICAgIDM0NzM5LCAzNDc0MywgNjczOTAsIDEyOTA5LCA2NzM5NCwgNjc0MDIsIDY3NDA4LCA2NzQxNiwgNjc0MjMsIDY3NDI5LCAKKyAgICA2NzQzOSwgNjc0NDUsIDY3NDUyLCAxMTU1NiwgMzQ3NTcsIDY3NDU4LCA2NzQ3MSwgNjc0ODAsIDY3NDg2LCA2NzQ5NSwgCisgICAgNjc1MDEsIDI1MzgwLCA2NzUwOCwgNjc1MTUsIDY3NTI1LCA2NzUyOCwgMzQ3MDEsIDY3NTMzLCA2NzU0MCwgNjc1NDUsIAorICAgIDY3NTQ5LCA2NzU1MywgNjc1NTgsIDY3NTYyLCA0MTMzLCA2NzU2NywgNjc1NzIsIDY3NTc3LCAzNzYwOCwgMzc2MTMsIAorICAgIDY3NTgxLCAzNzYyNywgNjc1ODYsIDM3NjMyLCA2NzU5MSwgNjc1OTcsIDM3NjQ0LCAzNzY1MCwgMzc2NTYsIDY3NjAyLCAKKyAgICA2NzYwOCwgMjQzNjYsIDY3NjE5LCA2NzYyMiwgNjc2MzQsIDY3NjQyLCAzNDc4MCwgNjc2NDYsIDY3NjU1LCA2NzY2NSwgCisgICAgNjc2NzQsIDM0NzkwLCA2NzY3OSwgNjc2ODYsIDY3Njk1LCA2NzcwMSwgNjc3MDksIDY3NzE2LCA2NDAyLCA0NjczLCAKKyAgICA2NzcyMSwgMzQ3MTIsIDY3NzI3LCA2NzczMCwgNjc3MzYsIDY3NzQzLCA2Nzc0OCwgNjc3NTMsIDI1MjkwLCA2Nzc1NywgCisgICAgNjc3NjMsIDY3NzY5LCA2Nzc3NCwgNjc3NzksIDY3NzgzLCA2Nzc4OSwgNjc3OTUsIDM1OTg0LCAxMDQ4LCAzODY4OSwgCisgICAgNDA0MTksIDQwNDI1LCAzNDgyMSwgMzQ4MjYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODExLCA2NzgyNCwgNjc4MzAsIAorICAgIDY3ODM0LCA2NzgzNywgNjc4NDIsIDM2MzIxLCA2Nzg0NiwgMzM1MDQsIDIyOTY2LCA2Nzg1MiwgNjMzMSwgNjMzOSwgOTU3MCwgCisgICAgNjc4NTUsIDY3ODYwLCA2Nzg2NSwgNjc4NzAsIDY3ODc1LCA2Nzg4MCwgNjc4ODUsIDY3ODkwLCA2Nzg5NSwgNjc5MDAsIAorICAgIDY3OTA2LCA2NzkxMSwgNjc5MTYsIDY3OTIyLCA2NzkyNywgNjc5MzIsIDY3OTM3LCA2Nzk0MiwgNjc5NDcsIDY3OTUyLCAKKyAgICA2Nzk1OCwgNjc5NjMsIDY3OTY5LCA2Nzk3NCwgNjc5NzksIDY3OTg0LCA2Nzk4OSwgNjc5OTQsIDY3OTk5LCA2ODAwNCwgCisgICAgNjgwMDksIDY4MDE0LCA2ODAxOSwgNjgwMjUsIDY4MDMwLCA2ODAzNSwgNjgwNDAsIDY4MDQ1LCA2ODA1MCwgNjgwNTUsIAorICAgIDY4MDYxLCA2ODA2NiwgNjgwNzEsIDY4MDc2LCA2ODA4MSwgNjgwODYsIDY4MDkxLCA2ODA5NiwgNjgxMDEsIDY4MTA2LCAKKyAgICA2ODExMiwgNjgxMTcsIDY4MTIyLCA2ODEyNywgNjgxMzIsIDY4MTM4LCA2ODE0NCwgNjgxNDksIDY4MTU1LCA2ODE2MCwgCisgICAgNjgxNjUsIDY4MTcwLCA2ODE3NSwgNjgxODAsIDE1MTEsIDE0NSwgNjgxODUsIDY4MTg5LCA2ODE5MywgNjgxOTcsIDI3MDc2LCAKKyAgICA2ODIwMSwgNjgyMDUsIDY4MjEwLCA2ODIxNCwgNjgyMTksIDY4MjIzLCA2ODIyOCwgNjgyMzMsIDY4MjM4LCA2ODI0MiwgCisgICAgNjgyNDYsIDY4MjUxLCA2ODI1NSwgMTQ1NDIsIDY4MjYwLCA2ODI2NCwgNjgyNzEsIDY4MjgxLCAxNjU5NSwgNjgyOTAsIAorICAgIDY4Mjk5LCA2ODMwMywgNjgzMDgsIDY4MzEzLCA2ODMxNywgNjgzMjEsIDI2ODcwLCAzMDc4LCA2ODMyNSwgNjgzMzEsIAorICAgIDE4OTY3LCA2ODMzNSwgNjgzNDQsIDY4MzUyLCA2ODM1OCwgNjgzNjMsIDY4Mzc1LCA2ODM4NywgNjgzOTIsIDY4Mzk2LCAKKyAgICA2ODQwMSwgNjg0MDUsIDY4NDExLCA2ODQxNywgNjg0MjIsIDY4NDMyLCA2ODQ0MiwgNjg0NDgsIDY4NDUzLCA2ODQ1NywgCisgICAgNjg0NjMsIDY4NDY4LCA2ODQ3NSwgNjg0ODEsIDY4NDg2LCA2ODQ5NSwgNjg1MDQsIDY4NTEyLCAxNjk5MywgNjg1MTYsIAorICAgIDY4NTI1LCA2ODUzMywgNjg1NDUsIDY4NTU2LCA2ODU2NywgNjg1NzYsIDY4NTgwLCA2ODU4OSwgNjg1OTcsIDY4NjA3LCAKKyAgICA2ODYxNSwgNjg2MjIsIDY4NjI4LCA2ODYzMywgNjg2MzksIDY4NjQ0LCA2ODY1NSwgNTQsIDMzMzA5LCA2ODY2MSwgMjgzMzEsIAorICAgIDI4MzQxLCA2ODY2NywgNjg2NzUsIDY4NjgyLCA2ODY4OCwgNjg2OTIsIDY4NzAyLCA2ODcxMywgNjg3MjEsIDY4NzMwLCAKKyAgICA2ODczNSwgNjg3NDAsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDE4OTIxLCA2ODc2MSwgNjg3NjUsIDY4NzcxLCA2ODc4MSwgCisgICAgNjg3ODgsIDY4Nzk0LCA2ODgwMCwgMzc3MDcsIDY4ODA0LCA2ODgwNiwgNjg4MDksIDY4ODE1LCA2ODgxOSwgNjg4MzAsIAorICAgIDY4ODQwLCA2ODg0NiwgNjg4NTMsIDY4ODYwLCAxNDQ3OSwgNjg4NjgsIDY4ODc0LCA2ODg4MywgNjg4OTIsIDY4ODk4LCAKKyAgICAxMDYxNSwgNjg5MDQsIDY4OTEwLCA2ODkxNSwgNjg5MjAsIDY4OTI3LCA2ODkzMiwgNjg5MzksIDY4OTQ1LCA2ODk1MCwgCisgICAgNjg5NTgsIDY4OTcxLCA2ODk4MCwgNjU5MTksIDY1OTI5LCA2ODk4OSwgNjg5OTUsIDY5MDAxLCA2OTAwOCwgNjkwMTUsIAorICAgIDY5MDIyLCA2OTAyOSwgNjkwMzYsIDY5MDQxLCA2OTA0NSwgNjkwNDksIDY5MDUyLCA2OTA2MiwgNjkwNjYsIDY5MDc4LCAKKyAgICA2OTA4NywgNjkwOTEsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY1OTM4LCA2OTExNywgNjkxMjQsIDY5MTMzLCA2OTE0MSwgCisgICAgNjkxNDksIDY5MTU0LCA2OTE1OCwgNjkxNjMsIDY5MTY4LCA2OTE3OCwgNjkxODYsIDY5MTkxLCA2OTE5NSwgNjkxOTksIAorICAgIDY5MjA1LCA2OTIxMywgNjkyMjAsIDY5MjMyLCA2OTI0MCwgNjkyNTEsIDY5MjU4LCA2OTI2NCwgNjkyNzQsIDY5MjgwLCAKKyAgICA2OTI4NCwgNjkyOTEsIDY5Mjk3LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMjMsIDY5MzMyLCA2OTM0MSwgCisgICAgNjkzNDcsIDY5MzUzLCA2OTM1OSwgNjkzNjQsIDY5MzcxLCA2OTM3NywgNjkzODUsIDY5MzkyLCA2OTM5OCwgMTM2MjIsIAorICAgIDY5NDAzLCA2OTQwOSwgNjk0MTMsIDE1NTI5LCA2OTQxNywgNjk0MjIsIDY5NDMyLCA2OTQ0MSwgNjk0NDcsIDY5NDUzLCAKKyAgICA2OTQ2MSwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgNjk0ODIsIDY5NDkwLCA2OTQ5NywgNjk1MDMsIDY5NTE0LCA2OTUxOCwgCisgICAgNjk1MjIsIDY5NTI2LCA2OTUyOSwgNjk1MzUsIDY5NTQwLCA2OTU0NSwgNjk1NDksIDY5NTUzLCA2OTU2MiwgNjk1NzAsIAorICAgIDY5NTc3LCA2OTU4MywgNjk1OTAsIDI1OTYzLCA0MzQyMiwgNjk1OTUsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE0LCAKKyAgICA2OTYyMiwgNjk2MjksIDY5NjM1LCA2OTY0NCwgNjk2NTIsIDY5NjU4LCA2OTY2MywgNjk2NjcsIDY5NjcyLCA2OTY3NywgCisgICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTQsIDY5NzAzLCA2OTcwNywgNjk3MTQsIDQwNTI4LCA2OTcxOCwgNjk3MjQsIAorICAgIDY5NzI4LCA2OTczNiwgNjk3NDIsIDY5NzQ3LCA2OTc1OCwgNjk3NjYsIDY5NzcyLCA2OTc4MSwgMjQ1MTMsIDY5Nzg5LCAKKyAgICA2OTc5NiwgNjk4MDMsIDY5ODEwLCA2OTgxNywgNjk4MjQsIDQ2NzA0LCAxNDMxNywgNjk4MzEsIDY5ODM4LCA2OTg0MywgCisgICAgMzc3NDMsIDY1MjksIDY5ODQ5LCA2OTg1NCwgNjk4NTksIDY5ODY1LCA2OTg3MSwgNjk4NzcsIDY5ODgyLCA2OTg4NywgCisgICAgNjk4OTIsIDY5ODk3LCA2OTkwMywgNjk5MDgsIDY5OTE0LCA2OTkxOSwgNjk5MjUsIDY5OTMwLCA2OTkzNSwgNjk5NDAsIAorICAgIDY5OTQ1LCA2OTk1MCwgNjk5NTUsIDY5OTYwLCA2OTk2NiwgNjk5NzEsIDY5OTc3LCA2OTk4MiwgNjk5ODcsIDY5OTkyLCAKKyAgICA2OTk5NywgNzAwMDIsIDcwMDA3LCA3MDAxMywgNzAwMTgsIDcwMDIzLCA3MDAyOCwgNzAwMzMsIDcwMDM4LCA3MDA0MywgCisgICAgNzAwNDgsIDcwMDUzLCA3MDA1OCwgNzAwNjMsIDcwMDY5LCA3MDA3NCwgNzAwNzksIDcwMDg0LCA3MDA4OSwgNzAwOTQsIAorICAgIDcwMDk5LCA3MDEwNCwgNzAxMDksIDcwMTE1LCA3MDEyMCwgNzAxMjUsIDcwMTMwLCA3MDEzNSwgNzAxNDAsIDcwMTQ1LCAKKyAgICA3MDE1MCwgNzAxNTUsIDcwMTYwLCA3MDE2NSwgNzAxNzAsIDcwMTc1LCA3MDE4MSwgMTg1NCwgMjYwLCA3MDE4NiwgNDEzNjEsIAorICAgIDcwMTkwLCA3MDE5MywgNzAxOTgsIDcwMjAyLCA3MDIwNSwgMzQxNSwgNzAyMTAsIDcwMjE1LCA3MDIxOSwgNzAyMjgsIAorICAgIDcwMjM5LCA3MDI1NiwgNzAyNzQsIDY5MTQ1LCA3MDI4MiwgNzAyODUsIDcwMjk1LCA3MDMwMiwgNzAzMTEsIDcwMzI3LCAKKyAgICA3MDMzNiwgNzAzNDYsIDcwMzUxLCA3MDM2MSwgNzAzNzAsIDcwMzc4LCA3MDM5MiwgNzA0MDAsIDcwNDA0LCA3MDQwNywgCisgICAgNzA0MTQsIDcwNDIwLCA3MDQzMSwgNzA0MzgsIDcwNDUwLCA3MDQ2MSwgNzA0NzIsIDcwNDgxLCA3MDQ4OCwgMTI3OCwgNzEwLCAKKyAgICA3MDQ5OCwgMjYyOSwgNzA1MDIsIDcwNTA3LCA3MDUxNiwgOTIyMSwgMTg4OTQsIDIyNDcxLCA3MDUyNCwgNzA1MzIsIAorICAgIDcwNTQ2LCA3MDU1OSwgNzA1NjMsIDcwNTY4LCA3MDU3MywgNzA1NzgsIDcwNTg0LCA3MDU5MCwgNzA1OTUsIDg5MjEsIAorICAgIDE2NjIzLCA3MDYwMCwgNzA2MDQsIDcwNjEyLCAxMjA2MiwgNzA2MTcsIDcwNjIzLCA3MDYzMiwgNzA2NDAsIDE3MzYsIAorICAgIDEyMDc0LCA5MDgsIDY0NjUsIDcwNjQ0LCA3MDY0OCwgNzA2NTcsIDcwNjY3LCAyNDE5LCAyOTEyNywgNzA2NzYsIDcwNjgyLCAKKyAgICAxODQwNywgMjkxNDIsIDcwNjg4LCA0MTkzLCAxMjQ1MiwgNzA2OTQsIDcwNzAxLCA2NTY3MCwgNzA3MDUsIDcwNzA5LCAKKyAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCAzNjM0LCAxNTQsIDE1NDM3LCA3MDczMCwgNzA3NDIsIDcwNzQ2LCA3MDc1MiwgNzA3NTcsIAorICAgIDI5OTA3LCA3MDc2MSwgMTI0NDAsIDI3NjksIDQsIDcwNzY2LCA3MDc3NiwgNzA3ODcsIDcwNzkzLCA3MDgwNCwgNzA4MTEsIAorICAgIDcwODE3LCA3MDgyMywgNzA4MzEsIDcwODM4LCA3MDg0NCwgNzA4NTQsIDcwODY0LCA3MDg3NCwgNzA4ODMsIDI1MzY3LCAKKyAgICAxMjkwLCA3MDg4OCwgNzA4OTIsIDcwODk2LCA3MDkwMiwgNzA5MDYsIDI3OTIsIDI3OTgsIDg5MTgsIDIyOTQsIDcwOTEwLCAKKyAgICA3MDkxNCwgNzA5MjMsIDcwOTMxLCA3MDk0MiwgNzA5NTAsIDcwOTU4LCA3MDk2NCwgNzA5NjksIDcwOTgwLCA3MDk5MSwgCisgICAgNzA5OTksIDcxMDA1LCA3MTAxMCwgMTA0MzQsIDcxMDIwLCA3MTAyOCwgNzEwMzIsIDcxMDM2LCA3MTA0MSwgNzEwNDUsIAorICAgIDcxMDU3LCAzMDMxNCwgMTY1NDgsIDcxMDY0LCA3MTA3NCwgNzEwODAsIDcxMDg2LCAxMDUzNiwgNzEwOTYsIDcxMTA3LCAKKyAgICA3MTExOCwgNzExMjgsIDcxMTM3LCA3MTE0MSwgNzExNDgsIDE3NTAsIDk5NiwgNzExNTgsIDcxMTYzLCA3MTE3MSwgNjU0ODMsIAorICAgIDcxMTc5LCA3MTE4NCwgNzExOTUsIDcxMjAyLCA3MTIxNiwgMTUzNjYsIDQ3OCwgNzEyMjYsIDcxMjMwLCA3MTIzNCwgCisgICAgNzEyNDIsIDcxMjUxLCA3MTI1OSwgNzEyNjUsIDcxMjc5LCA3MTI4NiwgNzEyOTIsIDcxMzAxLCA3MTMwOCwgNzEzMTgsIAorICAgIDcxMzI2LCA3MTMzMywgNzEzNDEsIDcxMzQ4LCA0MDI0LCAxNDksIDcxMzU2LCA3MTM2NywgNzEzNzEsIDcxMzgzLCA3MTM4OSwgCisgICAgMTI2MzMsIDE5MiwgNzEzOTQsIDk4NzEsIDcxMzk5LCA3MTQwMywgNzE0MTAsIDcxNDE2LCA3MTQyNCwgNzE0MzEsIDkyODAsIAorICAgIDcxNDM4LCA3MTQ0NywgNzE0NTUsIDQwOTMsIDcxNDY4LCA0MTEwLCA3MTQ3MiwgMjg0MiwgNTE0LCA3MTQ3NywgNzE0OTAsIAorICAgIDcxNDk0LCA3MTQ5OSwgMjg0NywgMTg1MywgODA5LCA3MTUwMywgNDExNCwgNzE1MTEsIDcxNTE3LCA3MTUyMSwgODY2LCAKKyAgICA3MTUzMSwgNzE1NDAsIDcxNTQ1LCAzNjUxLCA3MTU0OSwgMTYzMDQsIDE2MzExLCA1MDA2NiwgNzE1NTMsIDQxNDUsIDQwMzQsIAorICAgIDE0MjAwLCA3MTU2MSwgNzE1NjgsIDcxNTczLCAyNTQzMSwgNzE1NzcsIDcxNTg0LCA3MTU5MCwgNzE1OTUsIDcxNjAwLCAKKyAgICAxNjMyNCwgMTg2LCA3MTYwNSwgNzE2MTcsIDcxNjIzLCA3MTYzMSwgMjg1OSwgMTc2OCwgNzE2MzksIDcxNjQxLCA3MTY0NiwgCisgICAgNzE2NTEsIDcxNjU2LCA3MTY2MiwgNzE2NjcsIDcxNjcyLCA3MTY3NywgNzE2ODIsIDcxNjg3LCA3MTY5MiwgNzE2OTgsIAorICAgIDcxNzAzLCA3MTcwOCwgNzE3MTMsIDcxNzE4LCA3MTcyMywgNzE3MjgsIDcxNzMzLCA3MTczOCwgNzE3NDQsIDcxNzQ5LCAKKyAgICA3MTc1NCwgNzE3NTksIDcxNzY1LCA3MTc3MCwgNzE3NzYsIDcxNzgxLCA3MTc4NiwgNzE3OTEsIDcxNzk2LCA3MTgwMSwgCisgICAgNzE4MDYsIDcxODExLCA3MTgxNywgNzE4MjIsIDcxODI4LCA3MTgzMywgNzE4MzgsIDcxODQzLCA3MTg0OCwgNzE4NTMsIAorICAgIDcxODU4LCA3MTg2MywgNzE4NjgsIDcxODc0LCA3MTg4MCwgNzE4ODUsIDcxODkwLCA3MTg5NiwgNzE5MDEsIDcxOTA1LCAKKyAgICA3MTkwOSwgNzE5MTQsIDcxOTIwLCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MCwgNzE5NDYsIDcxOTUxLCA3MTk1NSwgCisgICAgNzE5NjAsIDcxOTY1LCA3MTk2OSwgNzE5NzIsIDcxOTc0LCA3MTk3OCwgNzE5ODEsIDcxOTg4LCA3MTk5MywgNzE5OTcsIAorICAgIDcyMDAyLCA3MjAwNiwgNzIwMTAsIDcyMDE0LCA3MjAyMywgNzIwMjcsIDM1MDI2LCA3MjAzMCwgMzUwMzEsIDcyMDM3LCAKKyAgICA3MjA0MiwgMzUwMzYsIDcyMDUxLCA3MjA2MCwgMzUwNDIsIDcyMDY1LCAzNTA0NywgNzIwNzQsIDcyMDc5LCAxMjY3NiwgCisgICAgNzIwODMsIDcyMDg4LCA3MjA5MywgMzUwNTIsIDcyMDk3LCA0NDkyMSwgNzIxMDEsIDcyMTA0LCA3MjEwOCwgODU4OSwgCisgICAgNzIxMTQsIDcyMTE3LCA3MjEyMiwgNzIxMjYsIDM4ODgsIDM1MDU3LCA3MjEyOSwgNzIxMzMsIDcyMTM2LCA3MjE0MSwgCisgICAgNzIxNDUsIDcyMTUxLCA3MjE1OSwgNzIxNzIsIDcyMTgxLCA3MjE4NywgNzIxOTIsIDcyMTk4LCA3MjIwMiwgNzIyMDgsIAorICAgIDcyMjE0LCA3MjIyMiwgNzIyMjcsIDcyMjMxLCA3MjIzOCwgNzIyNDQsIDcyMjUyLCA3MjI2MSwgNzIyNjksIDM1MDYwLCAKKyAgICA3MjI3NiwgNzIyODYsIDcyMjk5LCA3MjMwNCwgNzIzMDksIDcyMzEzLCA3MjMyMiwgNzIzMjgsIDcyMzM1LCA3MjM0NiwgCisgICAgNzIzNTgsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjM5OSwgNzI0MDUsIDcyNDEyLCA3MjQyMCwgNzI0MjcsIAorICAgIDcyNDM1LCA3MjQ0NCwgNzI0NTIsIDcyNDU5LCA3MjQ2NywgNzI0NzYsIDcyNDg0LCA3MjQ5MywgNzI1MDMsIDcyNTEyLCAKKyAgICA3MjUyMCwgNzI1MjcsIDcyNTM1LCA3MjU0NCwgNzI1NTIsIDcyNTYxLCA3MjU3MSwgNzI1ODAsIDcyNTg4LCA3MjU5NywgCisgICAgNzI2MDcsIDcyNjE2LCA3MjYyNiwgNzI2MzcsIDcyNjQ3LCA3MjY1NiwgNzI2NjQsIDcyNjcxLCA3MjY3OSwgNzI2ODgsIAorICAgIDcyNjk2LCA3MjcwNSwgNzI3MTUsIDcyNzI0LCA3MjczMiwgNzI3NDEsIDcyNzUxLCA3Mjc2MCwgNzI3NzAsIDcyNzgxLCAKKyAgICA3Mjc5MSwgNzI4MDAsIDcyODA4LCA3MjgxNywgNzI4MjcsIDcyODM2LCA3Mjg0NiwgNzI4NTcsIDcyODY3LCA3Mjg3NiwgCisgICAgNzI4ODYsIDcyODk3LCA3MjkwNywgNzI5MTgsIDcyOTMwLCA3Mjk0MSwgNzI5NTEsIDcyOTYwLCA3Mjk2OCwgNzI5NzUsIAorICAgIDcyOTgzLCA3Mjk5MiwgNzMwMDAsIDczMDA5LCA3MzAxOSwgNzMwMjgsIDczMDM2LCA3MzA0NSwgNzMwNTUsIDczMDY0LCAKKyAgICA3MzA3NCwgNzMwODUsIDczMDk1LCA3MzEwNCwgNzMxMTIsIDczMTIxLCA3MzEzMSwgNzMxNDAsIDczMTUwLCA3MzE2MSwgCisgICAgNzMxNzEsIDczMTgwLCA3MzE5MCwgNzMyMDEsIDczMjExLCA3MzIyMiwgNzMyMzQsIDczMjQ1LCA3MzI1NSwgNzMyNjQsIAorICAgIDczMjcyLCA3MzI4MSwgNzMyOTEsIDczMzAwLCA3MzMxMCwgNzMzMjEsIDczMzMxLCA3MzM0MCwgNzMzNTAsIDczMzYxLCAKKyAgICA3MzM3MSwgNzMzODIsIDczMzk0LCA3MzQwNSwgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDUsIDczNDU1LCA3MzQ2NiwgCisgICAgNzM0NzgsIDczNDg5LCA3MzQ5OSwgNzM1MTAsIDczNTIyLCA3MzUzMywgNzM1NDUsIDczNTU4LCA3MzU3MCwgNzM1ODEsIAorICAgIDczNTkxLCA3MzYwMCwgNzM2MDgsIDczNjE1LCA3MzYyMywgNzM2MzIsIDczNjQwLCA3MzY0OSwgNzM2NTksIDczNjY4LCAKKyAgICA3MzY3NiwgNzM2ODUsIDczNjk1LCA3MzcwNCwgNzM3MTQsIDczNzI1LCA3MzczNSwgNzM3NDQsIDczNzUyLCA3Mzc2MSwgCisgICAgNzM3NzEsIDczNzgwLCA3Mzc5MCwgNzM4MDEsIDczODExLCA3MzgyMCwgNzM4MzAsIDczODQxLCA3Mzg1MSwgNzM4NjIsIAorICAgIDczODc0LCA3Mzg4NSwgNzM4OTUsIDczOTA0LCA3MzkxMiwgNzM5MjEsIDczOTMxLCA3Mzk0MCwgNzM5NTAsIDczOTYxLCAKKyAgICA3Mzk3MSwgNzM5ODAsIDczOTkwLCA3NDAwMSwgNzQwMTEsIDc0MDIyLCA3NDAzNCwgNzQwNDUsIDc0MDU1LCA3NDA2NCwgCisgICAgNzQwNzQsIDc0MDg1LCA3NDA5NSwgNzQxMDYsIDc0MTE4LCA3NDEyOSwgNzQxMzksIDc0MTUwLCA3NDE2MiwgNzQxNzMsIAorICAgIDc0MTg1LCA3NDE5OCwgNzQyMTAsIDc0MjIxLCA3NDIzMSwgNzQyNDAsIDc0MjQ4LCA3NDI1NywgNzQyNjcsIDc0Mjc2LCAKKyAgICA3NDI4NiwgNzQyOTcsIDc0MzA3LCA3NDMxNiwgNzQzMjYsIDc0MzM3LCA3NDM0NywgNzQzNTgsIDc0MzcwLCA3NDM4MSwgCisgICAgNzQzOTEsIDc0NDAwLCA3NDQxMCwgNzQ0MjEsIDc0NDMxLCA3NDQ0MiwgNzQ0NTQsIDc0NDY1LCA3NDQ3NSwgNzQ0ODYsIAorICAgIDc0NDk4LCA3NDUwOSwgNzQ1MjEsIDc0NTM0LCA3NDU0NiwgNzQ1NTcsIDc0NTY3LCA3NDU3NiwgNzQ1ODYsIDc0NTk3LCAKKyAgICA3NDYwNywgNzQ2MTgsIDc0NjMwLCA3NDY0MSwgNzQ2NTEsIDc0NjYyLCA3NDY3NCwgNzQ2ODUsIDc0Njk3LCA3NDcxMCwgCisgICAgNzQ3MjIsIDc0NzMzLCA3NDc0MywgNzQ3NTQsIDc0NzY2LCA3NDc3NywgNzQ3ODksIDc0ODAyLCA3NDgxNCwgNzQ4MjUsIAorICAgIDc0ODM3LCA3NDg1MCwgNzQ4NjIsIDc0ODc1LCA3NDg4OSwgNzQ5MDIsIDc0OTE0LCA3NDkyNSwgNzQ5MzUsIDc0OTQ0LCAKKyAgICA3NDk1MiwgNzQ5NTksIDc0OTY0LCA4NDE5LCA3NDk3MSwgMzUwNzAsIDc0OTc2LCA3NDk4MSwgMzUwNzUsIDc0OTg3LCAKKyAgICAyMjU3OSwgMzUwODAsIDc0OTkyLCA3NDk5OCwgNzUwMDYsIDc1MDEyLCA3NTAxOCwgNzUwMjUsIDc1MDMyLCA3NTAzNywgCisgICAgNzUwNDEsIDc1MDQ1LCA3NTA0OCwgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzgsIDc1MDg0LCA3NTA5NiwgNzUxMDcsIAorICAgIDc1MTExLCAzMTQwLCA4Mzk0LCA3NTExNiwgNzUxMTksIDc1MTIxLCA3NTEyNSwgNzUxMjksIDc1MTMzLCA3NTEzOSwgCisgICAgNzUxNDQsIDI3OTkwLCA3NTE0OSwgNzUxNTMsIDc1MTU2LCA3NTE2MSwgNzUxNjUsIDc1MTcyLCA3NTE3OCwgNzUxODIsIAorICAgIDY0ODUsIDc1MTg2LCAzNTA5NywgNzUxOTEsIDc1MTk4LCA3NTIwNywgNzUyMTUsIDc1MjI2LCA3NTIzNCwgNzUyNDMsIAorICAgIDc1MjUxLCA3NTI1OCwgNzUyNjUsIDc1MjcxLCA3NTI4MiwgMzUxMDIsIDc1Mjg3LCA3NTI5OCwgNzUzMTAsIDc1MzE4LCAKKyAgICA3NTMyOSwgNzUzMzgsIDc1MzQ5LCA3NTM1NCwgNzUzNjIsIDI1OTUsIDc1MzY3LCAzNzE2NiwgNzUzODAsIDc1Mzg0LCAKKyAgICA3NTM5NiwgNzU0MDQsIDc1NDA5LCA3NTQxNywgNzU0MjgsIDE5MTE0LCA3NTQzNywgNzU0NDMsIDc1NDUwLCA3NTQ1OCwgCisgICAgNzU0NjQsIDM1MTEyLCA3NTQ2OSwgNDEzOSwgNjMwNTYsIDc1NDc2LCA3NTQ3OSwgNzU0ODcsIDc1NTAwLCA3NTUxMywgCisgICAgNzU1MjYsIDc1NTM5LCA3NTU0NiwgNzU1NTcsIDc1NTY2LCA3NTU3MSwgNDY1MjEsIDQ2NTI2LCA3NTU3NSwgNzU1NzksIAorICAgIDc1NTg3LCA3NTU5NCwgNzU2MDMsIDc1NjExLCA3NTYxNywgNzU2MjYsIDc1NjM0LCA3NTY0MSwgNzU2NDksIDc1NjUzLCAKKyAgICA3NTY2MiwgNzU2NzEsIDc1NjgxLCA3NTY5NCwgNzU3MDcsIDc1NzE3LCAzNTExNywgNzU3MjMsIDc1NzMwLCA3NTczNiwgCisgICAgNzU3NDIsIDM1MTIzLCA3NTc0NywgNzU3NTAsIDc1NzU0LCA3NTc2MiwgNzU3NzEsIDQ2MjU5LCA3NTc3OSwgNzU3ODgsIAorICAgIDc1Nzk2LCA3NTgwMywgNzU4MTEsIDc1ODIxLCA3NTgzMCwgNzU4MzksIDM2NDIwLCA3NTg0OCwgNzU4NTksIDc1ODc0LCAKKyAgICA3NTg4NCwgOTkwNCwgMjMyNjMsIDc1ODkzLCA3NTg5OCwgNzU5MDMsIDc1OTA3LCA3NTkxMiwgNzU5MTYsIDc1OTIxLCAKKyAgICA3NTkyNywgNzU5MzIsIDc1OTM3LCA3NTk0MywgNzU5NDgsIDc1OTUzLCAyMzIyOCwgNzU5NTgsIDc1OTY1LCA3NTk3MywgCisgICAgNzU5ODEsIDc1OTg5LCA3NTk5NCwgNzYwMDEsIDc2MDA4LCA3NjAxMywgMjI3MiwgNzYwMTcsIDc2MDIxLCA3NjAyOSwgCisgICAgNzYwMzcsIDM1MTQwLCA3NjA0MywgNzYwNDksIDc2MDYxLCA3NjA2NywgNzYwNzQsIDc2MDc4LCA3NjA4NSwgNzYwOTAsIAorICAgIDc2MDk3LCA3NjEwMywgNzYxMTAsIDc2MTIxLCA3NjEzMSwgNzYxNDEsIDc2MTUzLCA3NjE1OSwgNzYxNjcsIDc2MTczLCAKKyAgICA3NjE4MywgNzYxOTMsIDM1MTY3LCA3NjIwMiwgNzYyMTEsIDc2MjE3LCA3NjIyOSwgNzYyNDAsIDc2MjQ3LCA3NjI1MiwgCisgICAgNzYyNTYsIDc2MjY0LCA3NjI3MCwgNzYyNzUsIDc2MjgwLCA3NjI4NywgNzYyOTUsIDc2MzA3LCA3NjMxNywgNzYzMjYsIAorICAgIDc2MzM1LCA3NjM0MiwgMzcwMTksIDI1NzY0LCA3NjM0OCwgNzYzNTMsIDc2MzU3LCA3NjM2MSwgNzYzNjYsIDc2Mzc0LCAKKyAgICA3NjM4MCwgNzYzOTEsIDc2NDA0LCA3NjQwOSwgNzY0MTYsIDM1MTcyLCA3NjQyMSwgNzY0MzMsIDc2NDQyLCA3NjQ1MCwgCisgICAgNzY0NjAsIDc2NDcxLCA3NjQ4NCwgNzY0OTEsIDc2NTAwLCA3NjUwOSwgNzY1MTcsIDc2NTIyLCA3NjUyOCwgMTUwMCwgCisgICAgNzY1MzMsIDc2NTM4LCA3NjU0MywgNzY1NDgsIDc2NTU0LCA3NjU1OSwgNzY1NjQsIDc2NTcwLCA3NjU3NiwgNzY1ODEsIAorICAgIDc2NTg1LCA3NjU5MCwgNzY1OTUsIDc2NjAwLCA2MzYxMSwgNzY2MDUsIDc2NjEwLCA3NjYxNSwgNzY2MjAsIDc2NjI2LCAKKyAgICA3NjYzMiwgNzY2MzcsIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MiwgNzY2NjcsIDc2NjczLCA3NjY3OCwgCisgICAgNzY2ODMsIDc2Njg4LCA3NjY5MywgNzY2OTcsIDc2NzAzLCA3NjcwOCwgNzY3MTcsIDc2NzIyLCA3NjcyNywgNzY3MzIsIAorICAgIDc2NzM3LCA3Njc0MSwgNzY3NDgsIDc2NzU0LCA0NDMwLCAxODczNywgMzEwNSwgNzY3NTksIDc2NzYzLCA3Njc2OCwgCisgICAgNzY3NzIsIDc2Nzc2LCA3Njc4MCwgNTAzMjEsIDc2Nzg0LCA3NjcwOSwgNzY3ODYsIDc2Nzk2LCAzNTE4MSwgNzY3OTksIAorICAgIDc2ODA0LCA3NjgxMywgNzY4MTksIDY0NTQsIDM1MTg2LCA3NjgyMywgNzY4MjksIDc2ODM0LCA3Njg0MCwgNzY4NDUsIAorICAgIDc2ODQ5LCA3Njg1NiwgNzY4NjEsIDc2ODcxLCA3Njg4MCwgNzY4ODQsIDc2ODkwLCA3Njg5NiwgNzY5MDIsIDc2OTA2LCAKKyAgICA3NjkxNCwgNzY5MjEsIDc2OTI5LCA3NjkzNywgMzUxOTEsIDc2OTQ0LCA3Njk0NywgNzY5NTQsIDc2OTYwLCA3Njk2NSwgCisgICAgNzY5NjksIDc2OTc1LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCA3NzAwMCwgNzcwMDgsIDc3MDE0LCA3NzAxOSwgMzUxOTYsIAorICAgIDc3MDI2LCA3NzAzOCwgNzcwNDUsIDc3MDUxLCA3NzA1NiwgNzcwNjIsIDc3MDY5LCA3NzA3NSwgMjI5NzksIDI5NTg5LCAKKyAgICA3NzA4MSwgNzcwODYsIDc3MDkyLCA3NzA5NiwgNzcxMDgsIDc2NzQyLCA3Njc0OSwgMjMxNjAsIDc3MTE4LCA3NzEyMywgCisgICAgNzcxMzAsIDc3MTM2LCA3NzE0MywgNzcxNDksIDc3MTYwLCA3NzE2NSwgNzcxNzMsIDk2MDksIDc3MTc4LCA3NzE4MSwgCisgICAgNzcxODcsIDc3MTkxLCA3NzE5NSwgNzcxOTgsIDc3MjA0LCAzNDkzNCwgNDQzMSwgMTA2NywgMTQ1OTYsIDc3MjExLCAKKyAgICA3NzIxNywgNzcyMjMsIDc3MjI5LCA3NzIzNSwgNzcyNDEsIDc3MjQ3LCA3NzI1MywgNzcyNTksIDc3MjY0LCA3NzI2OSwgCisgICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA5LCA3NzMxNCwgNzczMTksIAorICAgIDc3MzI0LCA3NzMzMCwgNzczMzUsIDc3MzQwLCA3NzM0NiwgNzczNTEsIDc3MzU2LCA3NzM2MiwgNzczNjgsIDc3Mzc0LCAKKyAgICA3NzM4MCwgNzczODYsIDc3MzkyLCA3NzM5OCwgNzc0MDQsIDc3NDEwLCA3NzQxNSwgNzc0MjAsIDc3NDI2LCA3NzQzMSwgCisgICAgNzc0MzYsIDc3NDQyLCA3NzQ0NywgNzc0NTIsIDc3NDU3LCA3NzQ2MiwgNzc0NjcsIDc3NDcyLCA3NzQ3NywgNzc0ODIsIAorICAgIDc3NDg3LCA3NzQ5MiwgNzc0OTcsIDc3NTAyLCA3NzUwOCwgNzc1MTMsIDc3NTE4LCA3NzUyMywgNzc1MjksIDc3NTM0LCAKKyAgICA3NzUzOSwgNzc1NDQsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY1LCA3NzU3MCwgNzc1NzUsIDc3NTgwLCA3NzU4NSwgCisgICAgNzc1OTAsIDc3NTk1LCA3NzYwMCwgNzc2MDUsIDc3NjEwLCA3NzYxNSwgNzc2MjAsIDc3NjI1LCA3NzYzMCwgNzc2MzUsIAorICAgIDc3NjQwLCA3NzY0NSwgNzc2NTAsIDc3NjU2LCA3NzY2MSwgNzc2NjYsIDc3NjcxLCA3NzY3NiwgNzc2ODEsIDc3Njg2LCAKKyAgICA3NzY5MSwgMTg5MCwgMTYzLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOSwgNzc3MTcsIDc3NzIxLCA3NzcyOCwgNzc3MzYsIAorICAgIDc3NzQwLCA3Nzc1MywgNzc3NjEsIDc3NzY2LCA3Nzc3MSwgMjgzOTQsIDc3Nzc1LCA3Nzc4MCwgNzc3ODQsIDc3Nzg5LCAKKyAgICA3Nzc5MywgNzc4MDEsIDc3ODA1LCAyMjU4NywgNzc4MTAsIDc3ODE0LCA2NjE2MiwgNzc4MTgsIDc3ODIxLCA3NzgyOSwgCisgICAgNzc4MzcsIDc3ODQ1LCA3Nzg1MCwgNzc4NTUsIDc3ODYyLCA3Nzg2OSwgNzc4NzUsIDc3ODgxLCA3Nzg4NiwgNzc4OTEsIAorICAgIDc3ODk5LCA3MDU1MSwgNzc5MDYsIDY1OTQ4LCA3NzkxMSwgNzc5MTYsIDc3OTIwLCA3NzkyNywgNjU5NzUsIDEyNzQzLCAKKyAgICA3NzkzMywgNzc5MzgsIDc3OTQzLCA3Nzk0NywgNzc5NTAsIDc3OTU2LCA3Nzk2MCwgNzc5NzAsIDc3OTc5LCA3Nzk4MywgCisgICAgNzc5ODYsIDc3OTkwLCA3Nzk5NywgNzgwMTAsIDc4MDE2LCA3ODAyNCwgNzgwMzMsIDc4MDQ0LCA3ODA1NSwgNzgwNjYsIAorICAgIDc4MDc3LCA3ODA4NiwgNzgwOTIsIDc4MTAxLCA3ODEwOSwgNzgxMTksIDc4MTMyLCA3ODE0MCwgNzgxNDcsIDc4MTU4LCAKKyAgICA3ODE2NCwgNzgxNjksIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTk2LCA3ODIwMywgNzgyMTMsIDc4MjIyLCA3NjQyMywgCisgICAgNzgyMzAsIDc4MjM2LCA3ODI0NCwgNzgyNTAsIDc4MjU3LCA3ODI2NSwgNzgyNzAsIDc4MjczLCA3ODI3NywgNzgyODEsIAorICAgIDc4Mjg0LCA3ODI5MCwgNzgyOTYsIDc4MzA0LCA3ODMxNiwgNzgzMjgsIDc4MzM1LCA3ODM0MCwgNzgzNDQsIDc4MzU1LCAKKyAgICA3ODM2MywgNzgzNzAsIDc4MzgyLCA3ODM5MCwgNzgzOTgsIDc4NDA1LCA3ODQxMSwgNzg0MTYsIDc4NDI2LCA3ODQzNSwgCisgICAgNzg0NDAsIDc4NDUwLCA3ODQ1OSwgNDU1NDksIDc4NDY2LCA3ODQ3MCwgNzg0NzUsIDc4NDgzLCA3ODQ5MCwgNzg0OTYsIAorICAgIDc4NTAwLCA3ODUxMCwgNzg1MjEsIDc4NTI5LCA3ODUzNiwgNzg1NDgsIDc4NTYwLCA3ODU2OSwgNzUzNzAsIDc4NTc2LCAKKyAgICA3ODU4NiwgNzg1OTgsIDc4NjA5LCA3ODYyMywgNzg2MzEsIDc4NjQxLCA3ODY0OCwgNzg2NTYsIDc4NjY5LCA3ODY4MSwgCisgICAgNzg2OTAsIDc4Njk4LCA3ODcwOCwgNzg3MTksIDc4NzMxLCA3ODc0MCwgNzg3NTAsIDc4NzYwLCA3ODc2OSwgNzg3NzYsIAorICAgIDc4Nzg1LCA3ODgwMCwgNzg4MDgsIDc4ODE4LCA3ODgyNywgNzg4MzUsIDc4ODQ4LCA2MzAyNiwgNzg4NjMsIDc4ODczLCAKKyAgICA3ODg4MiwgNzg4OTQsIDc4OTA0LCA3ODkxNiwgNzg5MjcsIDc4OTM4LCA3ODk0OSwgNzg5NTksIDc4OTcwLCA3ODk3OCwgCisgICAgNzg5ODQsIDc4OTk0LCA3OTAwMiwgNzkwMDgsIDMxMjkxLCA3OTAxMywgNzkwMTksIDc5MDI4LCA3OTA0MCwgNzkwNDUsIAorICAgIDc5MDUyLCAxMDQ0OCwgMTkxMzQsIDc5MDU4LCA3OTA2NywgNzkwNzIsIDc5MDc2LCA3OTA4MywgNzkwODksIDc5MDk0LCAKKyAgICA3OTA5OSwgNzkxMDcsIDc5MTE1LCAxMzExOSwgNzkxMTksIDc5MTIyLCA3OTEyNCwgNzkxMzEsIDc5MTM3LCA3OTE0OCwgCisgICAgNzkxNTMsIDc5MTU3LCA3OTE2NCwgNzkxNzAsIDc5MTc1LCA3OTE4MywgNzExMjAsIDcxMTMwLCA3OTE4OSwgNzkxOTYsIAorICAgIDc5MjA2LCAxMTU0MywgNzkyMTMsIDc5MjE4LCAzMTUwNiwgNzkyMjcsIDc5MjMyLCA3OTIzOSwgNzkyNDksIDc5MjU3LCAKKyAgICA3OTI2NSwgNzkyNzQsIDc5MjgwLCA3OTI4NiwgNzkyOTMsIDc5MzAwLCA3OTMwNSwgNzkzMDksIDc5MzE3LCA2NTk5MiwgCisgICAgNzkzMjIsIDc5MzMxLCA3OTMzOSwgNzkzNDYsIDc5MzUxLCA3OTM1NSwgNzkzNjQsIDc5MzcwLCA3OTM3MywgNzkzNzcsIAorICAgIDc5Mzg2LCA3OTM5NiwgNzc3NDgsIDc5NDA1LCA3OTQwOSwgNzk0MTcsIDc5NDIxLCA3OTQyNywgNzk0MzgsIDc5NDQ4LCAKKyAgICAxOTE0MywgNzk0NTksIDc5NDY4LCA3OTQ3NiwgNzk0ODQsIDc5NDkxLCA2NjAxMSwgOTE0NywgNzk0OTksIDc5NTAzLCAKKyAgICA3OTUxMiwgNzk1MTksIDc5NTIyLCAyOTQ3MCwgNzk1MjUsIDc5NTI5LCA3OTUzNCwgNzk1NTEsIDc5NTYzLCAxMTUwMSwgCisgICAgNzk1NzUsIDc5NTgwLCA3OTU4NSwgNzk1OTAsIDIyNjY5LCA3OTU5NCwgNzk1OTksIDc5NjA0LCA3OTYxMCwgNzk2MTUsIAorICAgIDYxMjIsIDc5NjIwLCAyMjY3MywgNzk2MjUsIDc5NjMwLCA3OTYzNiwgNzk2NDMsIDc5NjQ4LCA3OTY1MywgNzk2NTksIAorICAgIDc5NjY1LCA3OTY3MSwgNzk2NzYsIDc5NjgyLCA3OTY4NiwgNzk3MDAsIDc5NzA4LCA3OTcxNiwgNzk3MjIsIDc5NzI3LCAKKyAgICA3OTczNCwgNzk3NDQsIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3NiwgNzk3ODEsIDc5Nzg3LCA3OTc5MiwgCisgICAgNzk4MDEsIDY0NzEzLCA3OTgwNiwgNzk4MDksIDc5ODI3LCA3OTg0NiwgNzk4NTksIDc5ODczLCA3OTg4OSwgNzk4OTYsIAorICAgIDc5OTAzLCA3OTkxMiwgNzk5MTksIDc5OTI1LCA3OTkzMiwgNzk5MzcsIDc5OTQzLCA3OTk0OSwgNzk5NTcsIDc5OTYzLCAKKyAgICA3OTk2OCwgNzk5NzMsIDc5OTg5LCAxMTUxNCwgODAwMDMsIDgwMDEwLCA4MDAxOCwgODAwMjQsIDgwMDI4LCA4MDAzMSwgCisgICAgODAwMzYsIDgwMDQxLCA4MDA0OCwgODAwNTMsIDgwMDYyLCA4MDA2OCwgODAwNzMsIDgwMDc5LCA4MDA4NSwgODAwOTQsIAorICAgIDgwMTAzLCA4MDEwOCwgODAxMTIsIDgwMTIwLCA4MDEyOSwgMTI3NzIsIDgwMTM4LCA4MDE0NCwgODAxNTIsIDgwMTU4LCAKKyAgICA4MDE2NCwgODAxNzAsIDgwMTc1LCA4MDE4MiwgODAxODgsIDEyNzgzLCA4MDE5MywgODAxOTYsIDgwMjAxLCAzNTIyMywgCisgICAgODAyMTEsIDgwMjIwLCA4MDIyNSwgODAyMzEsIDgwMjM2LCA4MDI0NCwgODAyNTEsIDgwMjYyLCA4MDI3MiwgODAyNzcsIAorICAgIDgwMjg1LCA3MDQ3NCwgODAyOTAsIDgwMjk2LCA4MDMwMSwgODAzMDgsIDgwMzE3LCA4MDMyNSwgODAzMjksIDgwMzM1LCAKKyAgICA4MDM0MSwgODAzNDgsIDgwMzU0LCA4MDM1OCwgMTg1MTgsIDMxMTQsIDgwMzYzLCA4MDM2NywgODAzNzEsIDgwMzc3LCAKKyAgICA4MDM4NiwgODAzOTIsIDgwMzk5LCA4MDQwMywgODA0MjQsIDgwNDQ2LCA4MDQ2MiwgODA0NzksIDgwNDk4LCA4MDUwNywgCisgICAgODA1MTcsIDgwNTI1LCA4MDUzMiwgODA1MzksIDgwNTQ1LCAyOTM0MiwgODA1NTksIDgwNTYzLCA4MDU2OSwgODA1NzcsIAorICAgIDgwNTg5LCA4MDU5NSwgODA2MDMsIDgwNjEwLCA4MDYxNSwgODA2MjAsIDgwNjI0LCA4MDYzMiwgODA2MzksIDgwNjQzLCAKKyAgICA4MDY0OSwgODA2NTUsIDgwNjYwLCAzNzMwLCA0NjcyMSwgODA2NjYsIDgwNjcwLCA4MDY3NCwgODA2NzgsIDgwNjgzLCAKKyAgICA4MDY4OCwgODA2OTMsIDgwNjk5LCA4MDcwNSwgODA3MTEsIDgwNzE4LCA4MDcyNCwgODA3MzEsIDgwNzM3LCA4MDc0MywgCisgICAgODA3NDgsIDgwNzU0LCA4MDc1OSwgODA3NjMsIDgwNzY4LCA4MDc3MiwgODA3NzcsIDQ2NzM2LCA4MDc4MSwgODA3ODYsIAorICAgIDgwNzk0LCA4MDc5OCwgODA4MDMsIDgwODEwLCA4MDgxOSwgODA4MjUsIDgwODM0LCA4MDgzOCwgODA4NDUsIDgwODQ5LCAKKyAgICA4MDg1MiwgODA4NTksIDgwODY1LCA4MDg3NCwgODA4ODQsIDgwODg5LCA4MDg5MywgODA5MDEsIDgwOTEwLCA4MDkxNCwgCisgICAgODA5MjIsIDgwOTI4LCA4MDkzMywgODA5MzgsIDgwOTQ0LCA4MDk1MCwgODA5NTUsIDgwOTU5LCA4MDk2NSwgODA5NzAsIAorICAgIDgwOTc0LCA4MDk3OCwgODA5ODEsIDgwOTg2LCA4MDk5NCwgODEwMDQsIDgxMDEwLCA4MTAxNSwgODEwMjUsIDQ0MDMxLCAKKyAgICA4MTAzMywgODEwNDUsIDgxMDQ5LCA4MTA1NSwgODEwNjcsIDgxMDc4LCA4MTA4NSwgODEwOTEsIDgxMDk4LCA4MTEwNSwgCisgICAgODExMTcsIDgxMTI0LCA4MTEzMCwgMjI3NDcsIDgxMTM0LCA4MTE0MiwgODExNDgsIDgxMTU1LCA4MTE2MSwgODExNjcsIAorICAgIDgxMTczLCA4MTE3OCwgODExODMsIDgxMTg4LCA4MTE5NywgODEyMDUsIDgxMjE2LCA3MzUwLCA4MTIyMSwgMTc5NjcsIAorICAgIDgxMjI3LCA4MTIzMSwgODEyMzUsIDgxMjM5LCA4MTI0NywgODEyNTYsIDgxMjYwLCA4MTI2NywgODEyNzYsIDgxMjg0LCAKKyAgICA4MTI5NywgODEzMDMsIDgwNzczLCAzMjM5MCwgODEzMDgsIDgxMzEwLCA4MTMxNSwgODEzMjAsIDgxMzI1LCA4MTMzMCwgCisgICAgODEzMzUsIDgxMzQwLCA4MTM0NSwgODEzNTAsIDgxMzU1LCA4MTM2MCwgODEzNjUsIDgxMzcwLCA4MTM3NSwgODEzODAsIAorICAgIDgxMzg2LCA4MTM5MSwgODEzOTYsIDgxNDAxLCA4MTQwNiwgODE0MTEsIDgxNDE2LCA4MTQyMSwgODE0MjYsIDgxNDMyLCAKKyAgICA4MTQzOCwgODE0NDQsIDgxNDQ5LCA4MTQ1NCwgODE0NjYsIDgxNDcxLCAxODk2LCA2MywgODE0NzYsIDgxNDgxLCAzNTIyOSwgCisgICAgODE0ODUsIDM1MjM0LCAzNTIzOSwgMzUyNDUsIDM1MjUwLCA4MTQ4OSwgMzUyNTUsIDIzNzg1LCA4MTUxMSwgODE1MTUsIAorICAgIDgxNTE5LCA4MTUyNCwgODE1MjgsIDM1MjU5LCA4MTUzMiwgODE1NDAsIDgxNTQ3LCAzNTI2NCwgODE1NTMsIDgxNTU2LCAKKyAgICA4MTU2MSwgODE1NjUsIDgxNTc0LCAxMDI2NiwgODE1ODIsIDM1MjY5LCAyMzY0MSwgODE1ODUsIDgxNTg5LCA4MTU5NywgCisgICAgMTQxMiwgODE2MDIsIDM1MjgwLCA4MTYwNSwgODE2MTAsIDI3NzUwLCAyNzc2MCwgMzgxODIsIDgxNjE1LCA4MTYyMCwgCisgICAgODE2MjUsIDgxNjMwLCA4MTYzNiwgODE2NDEsIDgxNjUwLCA4MTY1NSwgODE2NjQsIDgxNjcyLCA4MTY3OSwgODE2ODUsIAorICAgIDgxNjkwLCA4MTY5NSwgODE3MDAsIDgxNzEwLCA4MTcxOSwgODE3MjcsIDgxNzMyLCA4MTc0MCwgODE3NDQsIDgxNzUyLCAKKyAgICA4MTc1NiwgODE3NjMsIDgxNzcxLCAzNTA4OCwgNDExOTIsIDgxNzc4LCA4MTc4NCwgODE3ODksIDgxNzk0LCAxMzE1NCwgCisgICAgMzA1MjksIDgxNzk5LCA4MTgwNCwgODE4MTEsIDgxODE3LCA4MTgyMiwgODE4MzAsIDgxODQwLCA4MTg1MCwgODE4NTYsIAorICAgIDgxODYxLCA4MTg2NywgMTkxNjUsIDgxODc0LCAzOTA1MiwgODE4ODcsIDgxODkyLCA4MTg5OCwgMzMzODEsIDgxOTExLCAKKyAgICA4MTkxNywgODE5MjEsIDgxOTMwLCA4MTkzOSwgODE5NDYsIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4MiwgCisgICAgODE5ODUsIDgxOTg5LCA4MTk5MywgMjc4OTEsIDgxOTk3LCA4MjAwNCwgODIwMTAsIDgyMDE4LCA4MjAyMywgODIwMjcsIAorICAgIDI1OTExLCA4MjAzMywgODIwMzYsIDgyMDQ0LCA4MjA1MSwgODIwNTksIDgyMDcyLCA4MjA4NiwgODIwOTMsIDgyMDk5LCAKKyAgICA4MjEwNiwgODIxMTIsIDM1Mjk0LCA4MjExNiwgODIxMjMsIDgyMTMxLCA4MjEzOSwgODIxNDUsIDM1Mjk5LCA4MjE1MywgCisgICAgODIxNTksIDgyMTY0LCA4MjE3NCwgODIxODAsIDgyMTg5LCAzMzE4MywgMzc2MTQsIDgyMTk3LCA4MjIwMiwgODIyMDcsIAorICAgIDgyMjExLCA4MjIxNiwgODIyMjAsIDgyMjI4LCA4MjIzMywgMTYyOTYsIDQ0MDQ0LCA4MjIzNywgODIyNDIsIDM1MzA0LCAKKyAgICA2NzU0NywgODIyNDYsIDgyMjUxLCA4MjI1NSwgODIyNjIsIDgyMjcxLCA4MjI3NSwgODIyODMsIDgyMjg5LCA4MjI5NCwgCisgICAgODIzMDAsIDgyMzA1LCA4MjMxMiwgODIzMTgsIDgyMzIzLCA4MjMyOCwgODIzMzksIDgyMzQ4LCA4MjM2MCwgODIzNzUsIAorICAgIDM1NTcxLCA4MjM4MSwgMTgwODYsIDM1MzA4LCA4MjM4NSwgODIzOTIsIDgyMzk4LCAyNjAyNywgODI0MDIsIDgyNDA5LCAKKyAgICA4MjQxOCwgODI0MjUsIDgyNDM0LCA4MjQ0MCwgODI0NDUsIDgyNDUzLCA4MjQ1OSwgMzUzMTgsIDgyNDY0LCA4MjQ3MywgCisgICAgODEwNzMsIDgyNDgyLCA4MjQ4OSwgODI0OTUsIDgyNTAxLCA4MjUxMCwgODI1MjAsIDgyNTI4LCA4MjUzNSwgODI1MzksIAorICAgIDM1MzIzLCA4MjU0MiwgMzUzMjksIDM1MzM1LCA4MjU0NywgODI1NTUsIDgyNTYzLCA4MjU3MywgODI1ODIsIDgyNTkwLCAKKyAgICA4MjU5NywgODI2MDcsIDM1MzQwLCA4MjYxMSwgODI2MTMsIDgyNjE3LCA4MjYyMiwgODI2MjYsIDgyNjMwLCA4MjYzNiwgCisgICAgODI2NDEsIDgyNjQ1LCA4MjY1NiwgODI2NjEsIDgyNjY2LCAzMTE5LCA4MjY3MCwgODI2NzcsIDgyNjgxLCA4MjY5MCwgCisgICAgODI2OTgsIDgyNzA1LCA4MjcxMCwgODI3MTUsIDY3NTk4LCA4MjcxOSwgODI3MjIsIDgyNzI4LCA4MjczNiwgODI3NDIsIAorICAgIDgyNzQ2LCA4Mjc1MSwgODI3NTgsIDgyNzYzLCA4Mjc2OCwgODI3NzIsIDgyNzc4LCA4Mjc4MywgMzc2NDUsIDgyNzg3LCAKKyAgICA4Mjc5MCwgODI3OTUsIDgyNzk5LCA4MjgwNCwgODI4MTEsIDgyODE2LCA4MjgyMCwgNDI1ODAsIDgyODI4LCAyNzc2OSwgCisgICAgMjc3NzgsIDgyODM0LCA4Mjg0MCwgODI4NDYsIDgyODUxLCA4Mjg1NSwgODI4NTgsIDgyODY4LCA4Mjg3NywgODI4ODIsIAorICAgIDgyODg4LCA4Mjg5NSwgODI5MDEsIDgyOTA1LCA4MjkxMywgODI5MTgsIDM3NjUxLCA3Nzk1MiwgODI5MjIsIDgyOTMwLCAKKyAgICA4MjkzNiwgODI5NDMsIDgyOTQ4LCA4Mjk1MiwgODI5NTcsIDYzMjQyLCA4Mjk2MywgODI5NjksIDM3NjU3LCA4Mjk3NCwgCisgICAgODI5NzksIDgyOTgzLCA4Mjk4OCwgODI5OTMsIDgyOTk4LCA4MzAwMiwgODMwMDcsIDgzMDEyLCA4MzAxOCwgODMwMjMsIAorICAgIDgzMDI4LCA4MzAzNCwgODMwNDAsIDgzMDQ1LCA4MzA0OSwgODMwNTQsIDgzMDU5LCA4MzA2NCwgODMwNjgsIDI2MDI2LCAKKyAgICA4MzA3MywgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAxLCA4MzEwNSwgODMxMTAsIDgzMTE1LCA4MzEyMCwgCisgICAgODMxMjQsIDgzMTI5LCA4MzEzNCwgODMxMzksIDgzMTQ0LCA0Njk5MSwgODMxNDgsIDM1MzQ4LCA4MzE1NiwgODMxNjAsIAorICAgIDgzMTY4LCA4MzE3NiwgODMxODcsIDgzMTkyLCA4MzE5NiwgMjQyMTEsIDc1NDczLCA4MzIwMSwgODMyMDcsIDgzMjEyLCAKKyAgICA4MzIyMiwgODMyMjksIDgzMjM0LCA4MzI0MiwgODMyNTEsIDgzMjU2LCA4MzI2MCwgODMyNjUsIDgzMjczLCA4MzI4MSwgCisgICAgODMyODgsIDcwNzM2LCA4MzI5NCwgODMzMDIsIDgzMzA5LCA4MzMyMCwgODMzMjYsIDgzMzMyLCAzNTM1OCwgODMzMzUsIAorICAgIDgzMzQyLCA4MzM1MCwgODMzNTUsIDQ0MjQ3LCA4MzM1OSwgODMzNjQsIDgzMzcxLCA4MzM3NiwgOTQ4NCwgODMzODAsIAorICAgIDgzMzg4LCA4MzM5NSwgODM0MDIsIDgzNDExLCA4MzQxOCwgODM0MjQsIDgzNDM4LCA2MTk0LCA4MzQ0NiwgODM0NTIsIAorICAgIDgzNDU2LCA4MzQ1OSwgODM0NjcsIDgzNDc0LCA4MzQ3OSwgODM0OTIsIDgzNDk5LCA4MzUwNSwgODM1MDksIDgzNTE0LCAKKyAgICA4MzUyMSwgODM1MjYsIDY1ODUxLCA4MzUzMSwgODM1MzQsIDgzNTQzLCA4MzU1MCwgODM1NTYsIDgzNTYwLCA4MzU2MywgCisgICAgODM1NzEsIDgzNTgwLCA4MzU5MCwgODM2MDAsIDgzNjA5LCA4MzYyMCwgODM2MjgsIDgzNjM5LCA4MzY0NCwgODM2NDgsIAorICAgIDgzNjUzLCA4MzY1NywgMzgzMTMsIDgzNjY1LCAyMzA0MiwgMzgzMjIsIDgzNjcwLCA4MzY3NSwgODM2ODAsIDgzNjg1LCAKKyAgICA4MzY5MCwgODM2OTUsIDgzNzAwLCA4MzcwNCwgODM3MDksIDgzNzE0LCA4MzcxOSwgODM3MjQsIDgzNzI5LCA4MzczNCwgCisgICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTIsIDgzNzU2LCA4Mzc2MCwgODM3NjQsIDgzNzY5LCA4Mzc3NCwgODM3NzgsIAorICAgIDgzNzgzLCA4Mzc4NywgODM3OTEsIDgzNzk2LCA4MzgwMSwgODM4MDYsIDgzODExLCA4MzgxNSwgODM4MjAsIDgzODI1LCAKKyAgICA4MzgyOSwgODM4MzQsIDgzODM5LCA4Mzg0NCwgODM4NDksIDgzODU0LCA4Mzg1OSwgODM4NjQsIDgzODY5LCA4Mzg3NCwgCisgICAgODM4NzksIDgzODg0LCA4Mzg4OSwgODM4OTQsIDgzODk5LCA4MzkwNCwgODM5MDksIDgzOTE0LCA4MzkxOSwgODM5MjQsIAorICAgIDgzOTI5LCA4MzkzMywgODM5MzgsIDgzOTQzLCA4Mzk0OCwgODM5NTMsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTczLCAKKyAgICA4Mzk3OCwgODM5ODMsIDgzOTg4LCA4Mzk5MiwgODM5OTcsIDg0MDAxLCA4NDAwNiwgODQwMTEsIDg0MDE2LCA4NDAyMSwgCisgICAgODQwMjYsIDg0MDMxLCA4NDAzNiwgODQwNDEsIDg0MDQ2LCA4NDA1MCwgODQwNTQsIDg0MDU5LCA4NDA2NCwgODQwNjgsIAorICAgIDg0MDczLCA4NDA3OCwgODQwODIsIDg0MDg3LCA4NDA5MiwgODQwOTcsIDg0MTAyLCA4NDEwNiwgODQxMTEsIDg0MTE2LCAKKyAgICA4NDEyMCwgODQxMjUsIDg0MTI5LCA4NDEzMywgODQxMzcsIDg0MTQxLCA4NDE0NiwgODQxNTAsIDg0MTU0LCA4NDE1OCwgCisgICAgODQxNjIsIDg0MTY2LCA4NDE3MCwgODQxNzQsIDg0MTc4LCA4NDE4MiwgODQxODcsIDg0MTkyLCA4NDE5NywgODQyMDIsIAorICAgIDg0MjA3LCA4NDIxMiwgODQyMTcsIDg0MjIyLCA4NDIyNywgODQyMzIsIDg0MjM2LCA4NDI0MCwgODQyNDQsIDg0MjQ4LCAKKyAgICA4NDI1MiwgODQyNTYsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc0LCA4NDI3OSwgODQyODQsIDg0Mjg4LCA4NDI5MiwgCisgICAgODQyOTcsIDg0MzAxLCA4NDMwNSwgODQzMDksIDg0MzEzLCA4NDMxNywgODQzMjEsIDg0MzI1LCA4NDMyOSwgODQzMzMsIAorICAgIDg0MzM3LCA4NDM0MSwgODQzNDUsIDg0MzQ5LCA4NDM1MywgODQzNTgsIDg0MzYzLCA4NDM2NywgODQzNzEsIDg0Mzc1LCAKKyAgICA4NDM3OSwgODQzODMsIDg0Mzg3LCA4NDM5MiwgODQzOTYsIDg0NDAwLCA4NDQwNCwgODQ0MDgsIDg0NDEyLCA4NDQxNiwgCisgICAgODQ0MjEsIDg0NDI1LCA4NDQzMCwgODQ0MzQsIDg0NDM4LCA4NDQ0MiwgODQ0NDYsIDg0NDUwLCA4NDQ1NCwgODQ0NTgsIAorICAgIDg0NDYyLCA4NDQ2NiwgODQ0NzAsIDg0NDc0LCA4NDQ3OSwgODQ0ODMsIDg0NDg3LCA4NDQ5MSwgODQ0OTUsIDg0NDk5LCAKKyAgICA4NDUwMywgODQ1MDcsIDg0NTExLCA4NDUxNSwgODQ1MTksIDg0NTIzLCA4NDUyOCwgODQ1MzIsIDg0NTM2LCA4NDU0MSwgCisgICAgODQ1NDYsIDg0NTUwLCA4NDU1NCwgODQ1NTgsIDg0NTYyLCA4NDU2NiwgODQ1NzAsIDg0NTc0LCA4NDU3OCwgODQ1ODMsIAorICAgIDg0NTg3LCA4NDU5MiwgODQ1OTYsIDg0NjAxLCA4NDYwNSwgODQ2MTAsIDg0NjE0LCA4NDYyMCwgODQ2MjUsIDg0NjI5LCAKKyAgICA4NDYzNCwgODQ2MzgsIDg0NjQzLCA4NDY0NywgODQ2NTIsIDg0NjU2LCA4NDY2MSwgMTUxOSwgODQ2NjUsIDI4NzMsIDE3NzQsIAorICAgIDE2OTIsIDI3NzA1LCA4NDY2OSwgMjg4MiwgODQ2NzMsIDEzODEsIDg0Njc4LCAxMzIzLCA4NDY4MiwgODQ2ODYsIDI4OTksIAorICAgIDg0NjkwLCA4NDY5NywgODQ3MDQsIDg0NzE4LCAyOTAzLCA3NDUyLCA4NDcyNywgODQ3MzUsIDg0NzQyLCA4NDc1MywgCisgICAgODQ3NjIsIDg0NzY5LCA4NDc4MSwgODQ3OTQsIDg0ODA3LCA4NDgxOCwgODQ4MjMsIDg0ODMwLCA4NDg0MiwgODQ4NDYsIAorICAgIDI5MDcsIDEyODUwLCA4NDg1NiwgODQ4NjEsIDg0ODcwLCA4NDg4MCwgODQ4ODUsIDI5MTEsIDg0ODkzLCA4NDg5NywgCisgICAgODQ5MDIsIDg0OTA5LCA4NDkxNSwgODQ5MjMsIDg0OTM1LCAxMzI4LCAxNDIwMSwgODQ5NDUsIDg0OTQ5LCA4NDk1NSwgCisgICAgODQ5NjksIDg0OTgxLCA4NDk5MywgODUwMDMsIDg1MDEyLCA4NTAyMSwgODUwMzAsIDg1MDM4LCA4NTA0OSwgODUwNTcsIAorICAgIDQyOTIsIDg1MDY3LCA4NTA3OCwgODUwODcsIDg1MDkzLCA4NTEwOCwgODUxMTUsIDg1MTIxLCA4NTEyNiwgMzg0NDcsIAorICAgIDg1MTMxLCAyOTM1LCAxNDIwNSwgODUxMzUsIDg1MTQyLCA5NDA5LCA4NTE1MSwgMjk0MCwgMzQ3OTYsIDg1MTU3LCA2NTU3MywgCisgICAgODUxNjQsIDg1MTcwLCA4NTE4MSwgODUxODcsIDg1MTk0LCA4NTIwMCwgODUyMDgsIDg1MjE1LCA4NTIyMSwgODUyMzIsIAorICAgIDg1MjQyLCA4NTI1MSwgODUyNjIsIDg1MjcxLCA4NTI3OCwgODUyODQsIDg1Mjk0LCA4NTMwMiwgODUzMDgsIDg1MzIzLCAKKyAgICA4NTMyOSwgODUzMzQsIDg1MzQxLCA4NTM0NCwgODUzNTAsIDg1MzU3LCA4NTM2MywgODUzNzEsIDg1MzgwLCA4NTM4OCwgCisgICAgODUzOTQsIDg1NDAzLCA0NjI2MSwgODU0MTcsIDg1NDIyLCA4NTQyOCwgMTYwNzIsIDg1NDMzLCA4NTQ0NiwgODU0NTgsIAorICAgIDg1NDY3LCA4NTQ3NSwgODU0ODIsIDg1NDg2LCA4NTQ5MCwgODU0OTMsIDg1NTAwLCA4NTUwNywgODU1MTUsIDg1NTIzLCAKKyAgICA4NTUzMiwgODU1NDAsIDE1OTgzLCA4NTU0OCwgODU1NTMsIDg1NTU3LCA4NTU2OSwgODU1NzYsIDg1NTg1LCA4NDEsIAorICAgIDg1NTk1LCA4NTYwNCwgODU2MTUsIDI5NTYsIDg1NjE5LCA4NTYyMywgODU2MjksIDg1NjQyLCA4NTY1NCwgODU2NjQsIAorICAgIDg1NjczLCA4NTY4NSwgMjg0NDYsIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzI0LCA4NTczNSwgODU3NDUsIDg1NzU1LCAKKyAgICA4NTc2NCwgODU3NzIsIDEyMzY0LCA4NTc3OSwgODU3ODMsIDg1Nzg2LCA4NTc5MSwgODU3OTYsIDg1ODAwLCA4NTgwNiwgCisgICAgMTMzMywgODU4MTMsIDg1ODE3LCAxMjkzMiwgODU4MjEsIDg1ODMyLCA4NTg0MSwgODU4NDksIDg1ODU4LCA4NTg2NiwgCisgICAgODU4ODIsIDg1ODkzLCA4NTkwMiwgODU5MTAsIDg1OTIyLCA4NTkzMywgODU5NDksIDg1OTU5LCA4NTk4MCwgODU5OTQsIAorICAgIDg2MDA3LCA4NjAxNSwgODYwMjIsIDc0OTgsIDg2MDM1LCA4NjA0MCwgODYwNDYsIDYyMDMsIDg2MDUyLCA4NjA1NSwgCisgICAgODYwNjIsIDg2MDcyLCA4NTU0LCA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYxMDIsIDg2MTExLCA4NjExOSwgCisgICAgODYxMjQsIDg2MTMxLCAxMDQ5NiwgMTA1MDUsIDg2MTM3LCA4NjE0OCwgODYxNTMsIDg2MTU5LCAyOTcyLCAyOTc3LCAKKyAgICA4NjE2NSwgMTE4NTcsIDg2MTcxLCA4NjE3OCwgODYxODUsIDg2MTk4LCAyMjgxLCA4NywgODYyMDMsIDg2MjA4LCA4NjIxNiwgCisgICAgODYyMjYsIDg2MjM1LCA4NjI0MSwgODYyNTAsIDg2MjU4LCA4NjI2OCwgODYyNzIsIDg2Mjc2LCA4NjI4MSwgODYyODUsIAorICAgIDg2Mjk3LCAzMDAwLCA4NjMwNSwgODYzMTMsIDg2MzE4LCA4NjMyOSwgODYzNDAsIDg2MzUyLCA4NjM2MywgODYzNzMsIAorICAgIDg2MzgyLCAyMzA4MywgODYzODcsIDg2MzkzLCA4NjM5OCwgODY0MDgsIDg2NDE4LCA4NjQyMywgODY0MjksIDg2NDMzLCAKKyAgICA4NjQzOCwgODY0NDcsIDIzMDk1LCA4NjQ1MSwgNDM4NCwgMjQsIDg2NDU2LCA4NjQ2NSwgODY0NzIsIDg2NDc5LCA4NjQ4NSwgCisgICAgODY0OTEsIDEwNDksIDg2NDk2LCA4NjUwMSwgNjYxMjgsIDg2NTA2LCA4NjUxMSwgODY1MTcsIDg2NTIzLCA4NjUzMSwgCisgICAgODY1MzYsIDg2NTQ0LCA4NjU1MSwgODY1NTcsIDg2NTYyLCA0MjQ2NCwgNDYxNTUsIDg2NTY4LCAzMDA0LCAzMiwgODY1NzgsIAorICAgIDg2NTkxLCA4NjU5NiwgODY2MDQsIDg2NjA5LCA4NjYxNSwgMzAyNiwgMzA0OTcsIDg2NjIwLCA4NjYyOCwgODY2MzUsIAorICAgIDg2NjQwLCA4NjY0OSwgNjM0OTIsIDQwMTgsIDY3MjE4LCA4NjY1NywgODY2NjEsIDE3MTksIDE4MzMsIDg2NjY2LCA4NjY3MSwgCisgICAgODY2NzgsIDE4MzcsIDI4MCwgODY2ODUsIDg2NjkxLCA4NjY5NiwgMzA0OCwgODY3MDAsIDg2NzA1LCA4NjcxMiwgMTg0MSwgCisgICAgODY3MTcsIDg2NzIzLCA4NjcyOCwgODY3NDAsIDY0MzAsIDg2NzUwLCA4Njc1NywgMTg0OCwgODY3NjMsIDg2NzY4LCAKKyAgICA4Njc3NSwgODY3ODIsIDg2Nzk3LCA4NjgwNCwgODY4MTUsIDg2ODIwLCA4NjgyOCwgMjY1NywgODY4MzIsIDg2ODQ0LCAKKyAgICA4Njg0OSwgODY4NTMsIDg2ODU5LCAzMDMxMywgMjI4NiwgODY4NjMsIDg2ODc0LCA4Njg3OCwgODY4ODIsIDg2ODg4LCAKKyAgICA4Njg5MiwgODY5MDEsIDg2OTA1LCA4NjkxNiwgODY5MjAsIDIzMzIsIDM0NjEzLCA4NjkyNCwgODY5MzQsIDMxMzksIAorICAgIDg2OTQyLCA5OTA5LCA4Njk1MSwgODY5NTYsIDg2OTYwLCA4Njk2OSwgODY5NzYsIDg2OTgyLCAzMTA5LCAxNjEzNiwgCisgICAgODY5ODYsIDg2OTk5LCA4NzAxNywgODcwMjIsIDg3MDMwLCA4NzAzOCwgODcwNDgsIDEwNzY4LCAxNDMxOCwgODcwNjAsIAorICAgIDg3MDczLCA4NzA4MCwgODcwOTQsIDg3MTAxLCA4NzExNywgODcxMjQsIDg3MTMwLCAyMzEyNywgMTM1NTYsIDg3MTM3LCAKKyAgICA4NzE0NCwgODcxNTQsIDg3MTYzLCA0Njk5MCwgODcxNzUsIDQ3MTI1LCA4NzE4MywgODcxODYsIDg3MTkyLCA4NzE5OCwgCisgICAgODcyMDQsIDg3MjEwLCA4NzIxNiwgODcyMjMsIDg3MjMwLCA4NzIzNiwgODcyNDIsIDg3MjQ4LCA4NzI1NCwgODcyNjAsIAorICAgIDg3MjY2LCA4NzI3MiwgODcyNzgsIDg3Mjg0LCA4NzI5MCwgODcyOTYsIDg3MzAyLCA4NzMwOCwgODczMTQsIDg3MzIwLCAKKyAgICA4NzMyNiwgODczMzIsIDg3MzM4LCA4NzM0NCwgODczNTAsIDg3MzU2LCA4NzM2MiwgODczNjgsIDg3Mzc0LCA4NzM4MCwgCisgICAgODczODYsIDg3MzkyLCA4NzM5OCwgODc0MDQsIDg3NDEwLCA4NzQxNiwgODc0MjIsIDg3NDI4LCA4NzQzNCwgODc0NDAsIAorICAgIDg3NDQ2LCA4NzQ1MiwgODc0NTgsIDg3NDY0LCA4NzQ3MCwgODc0NzYsIDg3NDgyLCA4NzQ4OCwgODc0OTQsIDg3NTAwLCAKKyAgICA4NzUwNiwgODc1MTIsIDg3NTE4LCA4NzUyNCwgODc1MzAsIDg3NTM2LCA4NzU0MywgODc1NDksIDg3NTU2LCA4NzU2MywgCisgICAgODc1NjksIDg3NTc2LCA4NzU4MywgODc1ODksIDg3NTk1LCA4NzYwMSwgODc2MDcsIDg3NjEzLCA4NzYxOSwgODc2MjUsIAorICAgIDg3NjMxLCA4NzYzNywgODc2NDMsIDg3NjQ5LCA4NzY1NSwgODc2NjEsIDg3NjY3LCA4NzY3MywgMzEyMywgOTg4MiwgCisgICAgODc2NzksIDg3Njg1LCA4NzY5MywgODc2OTcsIDg0OTA1LCAzMTI3LCA4NzcwMSwgMjI4NjAsIDEzMTg5LCAzOTY4LCAKKyAgICA4NzcwNSwgMzEzMywgODc3MDksIDg3NzE5LCA4NzcyNSwgODc3MzEsIDg3NzM3LCA4Nzc0MywgODc3NDksIDg3NzU1LCAKKyAgICA4Nzc2MSwgODc3NjcsIDg3NzczLCA4Nzc3OSwgODc3ODUsIDg3NzkxLCA4Nzc5NywgODc4MDMsIDg3ODA5LCA4NzgxNSwgCisgICAgODc4MjEsIDg3ODI3LCA4NzgzMywgODc4MzksIDg3ODQ1LCA4Nzg1MSwgODc4NTcsIDg3ODYzLCA4Nzg2OSwgODc4NzYsIAorICAgIDg3ODgzLCA4Nzg4OSwgODc4OTUsIDg3OTAxLCA4NzkwNywgODc5MTMsIDg3OTE5LCAxMzM4LCA4NzkyNSwgODc5MzAsIAorICAgIDg3OTM1LCA4Nzk0MCwgODc5NDUsIDg3OTUwLCA4Nzk1NSwgODc5NjAsIDg3OTY1LCA4Nzk2OSwgODc5NzMsIDg3OTc3LCAKKyAgICA4Nzk4MSwgODc5ODUsIDg3OTg5LCA4Nzk5MywgODc5OTcsIDg4MDAxLCA4ODAwNywgODgwMTMsIDg4MDE5LCA4ODAyNSwgCisgICAgODgwMjksIDg4MDMzLCA4ODAzNywgODgwNDEsIDg4MDQ1LCA4ODA0OSwgODgwNTMsIDg4MDU3LCA4ODA2MSwgODgwNjYsIAorICAgIDg4MDcxLCA4ODA3NiwgODgwODEsIDg4MDg2LCA4ODA5MSwgODgwOTYsIDg4MTAxLCA4ODEwNiwgODgxMTEsIDg4MTE2LCAKKyAgICA4ODEyMSwgODgxMjYsIDg4MTMxLCA4ODEzNiwgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYxLCA4ODE2NiwgCisgICAgODgxNzEsIDg4MTc2LCA4ODE4MSwgODgxODYsIDg4MTkxLCA4ODE5NiwgODgyMDEsIDg4MjA2LCA4ODIxMSwgODgyMTYsIAorICAgIDg4MjIxLCA4ODIyNiwgODgyMzEsIDg4MjM2LCA4ODI0MSwgODgyNDYsIDg4MjUxLCA4ODI1NiwgODgyNjEsIDg4MjY2LCAKKyAgICA4ODI3MSwgODgyNzYsIDg4MjgxLCA4ODI4NiwgODgyOTEsIDg4Mjk2LCA4ODMwMSwgODgzMDYsIDg4MzExLCA4ODMxNiwgCisgICAgODgzMjEsIDg4MzI2LCA4ODMzMSwgODgzMzYsIDg4MzQxLCA4ODM0NiwgODgzNTEsIDg4MzU2LCA4ODM2MSwgODgzNjYsIAorICAgIDg4MzcxLCA4ODM3NiwgODgzODEsIDg4Mzg2LCA4ODM5MSwgODgzOTYsIDg4NDAxLCA4ODQwNiwgODg0MTEsIDg4NDE2LCAKKyAgICA4ODQyMSwgODg0MjYsIDg4NDMxLCA4ODQzNiwgODg0NDEsIDg4NDQ2LCA4ODQ1MSwgODg0NTYsIDg4NDYxLCA4ODQ2NiwgCisgICAgODg0NzEsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg1MDEsIDg4NTA2LCA4ODUxMSwgODg1MTYsIAorICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MSwgODg1NDYsIDg4NTUxLCA4ODU1NiwgODg1NjEsIDg4NTY2LCAKKyAgICA4ODU3MSwgODg1NzYsIDg4NTgxLCA4ODU4NiwgODg1OTEsIDg4NTk2LCA4ODYwMSwgODg2MDYsIDg4NjExLCA4ODYxNiwgCisgICAgODg2MjEsIDg4NjI2LCA4ODYzMSwgODg2MzYsIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIAorICAgIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCAKKyAgICA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgCisgICAgODg3NzEsIDg4Nzc2LCA4ODc4MSwgODg3ODYsIDg4NzkxLCA4ODc5NiwgODg4MDEsIDg4ODA2LCA4ODgxMSwgODg4MTYsIAorICAgIDg4ODIxLCA4ODgyNiwgODg4MzEsIDg4ODM2LCA4ODg0MSwgODg4NDYsIDg4ODUxLCA4ODg1NiwgODg4NjEsIDg4ODY2LCAKKyAgICA4ODg3MSwgODg4NzYsIDg4ODgxLCA4ODg4NiwgODg4OTEsIDg4ODk2LCA4ODkwMSwgODg5MDYsIDg4OTExLCA4ODkxNiwgCisgICAgODg5MjEsIDg4OTI2LCA4ODkzMSwgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTEsIDg4OTU3LCA4ODk2MiwgODg5NjcsIAorICAgIDg4OTcyLCA4ODk3NywgODg5ODIsIDg4OTg3LCA4ODk5MiwgODg5OTgsIDg5MDAzLCA4OTAwOCwgODkwMTMsIDg5MDE4LCAKKyAgICA4OTAyMywgODkwMjgsIDg5MDMzLCA4OTAzOCwgODkwNDMsIDg5MDQ4LCA4OTA1MywgODkwNTgsIDg5MDYzLCA4OTA2OCwgCisgICAgODkwNzMsIDg5MDc4LCA4OTA4MywgODkwODgsIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMywgODkxMTgsIAorICAgIDg5MTIzLCA4OTEyOCwgODkxMzMsIDg5MTM4LCA4OTE0MywgODkxNDgsIDg5MTUzLCA4OTE1OCwgODkxNjcsIDg5MTcyLCAKKyAgICA4OTE4MSwgODkxODYsIDg5MTk1LCA4OTIwMCwgODkyMDksIDg5MjE0LCA4OTIyMywgODkyMjgsIDg5MjM3LCA4OTI0MiwgCisgICAgODkyNTEsIDg5MjU2LCA4OTI2NSwgODkyNzAsIDg5Mjc1LCA4OTI4NCwgODkyODgsIDg5Mjk3LCA4OTMwMiwgODkzMTEsIAorICAgIDg5MzE2LCA4OTMyNSwgODkzMzAsIDg5MzM5LCA4OTM0NCwgODkzNTMsIDg5MzU4LCA4OTM2NywgODkzNzIsIDg5MzgxLCAKKyAgICA4OTM4NiwgODkzOTUsIDg5NDAwLCA4OTQwOSwgODk0MTQsIDg5NDIzLCA4OTQyOCwgODk0MzMsIDg5NDM4LCA4OTQ0MywgCisgICAgODk0NDgsIDg5NDUzLCA4OTQ1OCwgODk0NjIsIDg5NDY3LCA4OTQ3MiwgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIAorICAgIDg5NDk4LCA4OTUwMywgODk1MDgsIDg5NTEzLCA4OTUxOSwgODk1MjMsIDg5NTI4LCA4OTUzNCwgODk1MzksIDg5NTQ0LCAKKyAgICA4OTU0OSwgODk1NTQsIDg5NTU5LCA4OTU2NCwgODk1NjksIDg5NTc0LCA4OTU3OSwgODk1ODQsIDg5NTkwLCA4OTU5NSwgCisgICAgODk2MDAsIDg5NjA1LCA4OTYxMSwgODk2MTYsIDg5NjIxLCA4OTYyNiwgODk2MzEsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAorICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzgsIDg5NjgzLCA4OTY4OCwgODk2OTMsIDg5Njk4LCAKKyAgICA4OTcwMywgODk3MDgsIDg5NzEzLCA4OTcxOCwgODk3MjMsIDg5NzI4LCA4OTczMywgODk3MzgsIDg5NzQzLCA4OTc0OCwgCisgICAgODk3NTMsIDg5NzU4LCA4OTc2MywgODk3NjgsIDg5NzczLCA4OTc3OCwgODk3ODMsIDg5Nzg5LCA4OTc5NSwgODk4MDEsIAorICAgIDg5ODA2LCA4OTgxMSwgODk4MTYsIDg5ODIxLCA4OTgyNywgODk4MzMsIDg5ODM5LCA4OTg0NCwgODk4NDksIDg5ODU0LCAKKyAgICA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIDg5OTAwLCA4OTkwNSwgCisgICAgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNSwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIAorICAgIDg5OTYzLCA4OTk2OCwgODk5NzMsIDg5OTc4LCA4OTk4NCwgODk5OTAsIDg5OTk2LCA5MDAwMSwgOTAwMDYsIDkwMDExLCAKKyAgICA5MDAxNiwgOTAwMjEsIDkwMDI2LCA5MDAzMSwgOTAwMzYsIDkwMDQxLCAxNzUzOSwgOTAwNDYsIDkwMDUyLCA5MDA1NywgCisgICAgOTAwNjIsIDkwMDY3LCA5MDA3MiwgOTAwNzcsIDkwMDgzLCA5MDA4OCwgOTAwOTMsIDkwMDk4LCA5MDEwMywgOTAxMDgsIAorICAgIDkwMTE0LCA5MDExOSwgOTAxMjQsIDkwMTI5LCA5MDEzNCwgOTAxMzksIDkwMTQ0LCA5MDE0OSwgOTAxNTQsIDkwMTU5LCAKKyAgICA5MDE2NCwgOTAxNjksIDkwMTc0LCA5MDE3OSwgOTAxODQsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgCisgICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMzAsIDkwMjM1LCA5MDI0MCwgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIAorICAgIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCAKKyAgICA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgCisgICAgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgOTAzOTUsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIAorICAgIDkwNDE1LCA5MDQyMCwgOTA0MjUsIDkwNDMwLCA5MDQzNiwgOTA0NDEsIDkwNDQ2LCA5MDQ1MSwgOTA0NTYsIDkwNDYxLCAKKyAgICA5MDQ2NiwgOTA0NzEsIDkwNDc2LCA5MDQ4MSwgOTA0ODYsIDkwNDkxLCA5MDQ5NywgOTA1MDIsIDkwNTA4LCA5MDUxMywgCisgICAgOTA1MTgsIDkwNTIzLCA5MDUyOCwgOTA1MzMsIDkwNTM4LCA5MDU0NCwgOTA1NDksIDkwNTU0LCA5MDU2MCwgOTA1NjUsIAorICAgIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MSwgOTA1OTcsIDkwNjAyLCA5MDYwNywgMTMyMTEsIDkwNjEyLCAKKyAgICA5MDYxNywgOTA2MjIsIDkwNjI3LCA5MDYzMiwgOTA2MzcsIDkwNjQyLCA5MDY0NywgOTA2NTIsIDkwNjU3LCA5MDY2MiwgCisgICAgOTA2NjcsIDkwNjcyLCA5MDY3NywgOTA2ODIsIDkwNjg3LCA5MDY5MiwgOTA2OTcsIDkwNzAyLCA5MDcwNywgOTA3MTIsIAorICAgIDkwNzE3LCA5MDcyMiwgOTA3MjcsIDkwNzMyLCA5MDczNywgOTA3NDIsIDkwNzQ3LCA5MDc1MiwgOTA3NTcsIDkwNzYyLCAKKyAgICA5MDc2NywgOTA3NzIsIDkwNzc3LCA5MDc4MiwgOTA3ODcsIDkwNzkyLCA5MDc5NywgOTA4MDIsIDkwODA3LCA5MDgxMiwgCisgICAgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjIsIAorICAgIDkwODY3LCA5MDg3MiwgOTA4NzcsIDkwODgyLCA5MDg4NywgOTA4OTIsIDkwODk3LCA5MDkwMiwgOTA5MDcsIDkwOTEyLCAKKyAgICA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzgsIDkwOTQzLCA5MDk0OCwgOTA5NTMsIDkwOTU4LCA5MDk2NCwgCisgICAgOTA5NjksIDkwOTc0LCA5MDk3OSwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgOTEwMDAsIDkxMDA1LCA5MTAxMCwgOTEwMTUsIAorICAgIDkxMDIwLCA5MTAyNSwgOTEwMzEsIDkxMDM2LCA5MTA0MSwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjIsIDkxMDY3LCAKKyAgICA5MTA3MiwgOTEwNzcsIDkxMDgyLCA5MTA4NywgOTEwOTMsIDkxMDk5LCA5MTEwNCwgOTExMDksIDkxMTE0LCA5MTEyMCwgCisgICAgOTExMjYsIDkxMTMyLCA5MTEzNywgOTExNDIsIDkxMTQ4LCA5MTE1NCwgOTExNTksIDkxMTY1LCA5MTE3MSwgOTExNzcsIAorICAgIDkxMTgyLCA5MTE4NywgOTExOTMsIDkxMTk4LCA5MTIwNCwgOTEyMDksIDkxMjE1LCA5MTIyNCwgOTEyMjksIDkxMjM0LCAKKyAgICA5MTI0MCwgOTEyNDUsIDkxMjUxLCA5MTI1NiwgOTEyNjEsIDkxMjY2LCA5MTI3MSwgOTEyNzYsIDkxMjgxLCA5MTI4NiwgCisgICAgOTEyOTEsIDkxMjk2LCA5MTMwMSwgOTEzMDYsIDkxMzExLCA5MTMxNiwgOTEzMjEsIDkxMzI2LCA5MTMzMSwgOTEzMzYsIAorICAgIDkxMzQxLCA5MTM0NiwgOTEzNTEsIDkxMzU2LCA5MTM2MSwgOTEzNjYsIDkxMzcxLCA5MTM3NiwgOTEzODEsIDkxMzg2LCAKKyAgICA5MTM5MSwgOTEzOTYsIDkxNDAxLCA5MTQwNiwgOTE0MTIsIDkxNDE4LCA5MTQyNCwgOTE0MjksIDkxNDM0LCA5MTQzOSwgCisgICAgOTE0NDQsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY0LCA5MTQ2OSwgOTE0NzQsIDkxNDc5LCA5MTQ4NCwgOTE0ODksIAorICAgIDkxNDk0LCA5MTQ5OSwgOTE1MDQsIDkxNTA5LCA5MTUxNCwgOTE1MTksIDkxNTI0LCA5MTUzMCwgOTE1MzYsIDkxNTQxLCAKKyAgICA5MTU0NywgOTE1NTIsIDkxNTU3LCA5MTU2MywgOTE1NjgsIDkxNTc0LCA5MTU3OSwgOTE1ODUsIDkxNTkwLCA5MTU5NiwgCisgICAgOTE2MDEsIDkxNjA3LCA5MTYxMiwgOTE2MTcsIDkxNjIyLCA5MTYyNywgOTE2MzIsIDkxNjM3LCA5MTY0MiwgODc3MjAsIAorICAgIDg3NzI2LCA4NzczMiwgODc3MzgsIDkxNjQ4LCA4Nzc0NCwgODc3NTAsIDkxNjU0LCA4Nzc1NiwgODc3NjIsIDg3NzY4LCAKKyAgICA4Nzc3NCwgODc3ODAsIDg3Nzg2LCA4Nzc5MiwgODc3OTgsIDg3ODA0LCA5MTY2MCwgODc4MTAsIDg3ODE2LCA4NzgyMiwgCisgICAgOTE2NjYsIDg3ODI4LCA4NzgzNCwgODc4NDAsIDg3ODQ2LCA5MTY3MiwgODc4NTIsIDg3ODU4LCA4Nzg2NCwgODc4ODQsIAorICAgIDkxNjc4LCA5MTY4NCwgODc4OTAsIDkxNjkwLCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjAsIDMxNTAsIAorICAgIDMxNTUsIDkxNjk2LCA5MTcwMSwgOTE3MDQsIDkxNzEwLCA5MTcxNiwgOTE3MjMsIDkxNzI4LCA5MTczMywgMjMzNywgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KLSNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA3Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjA5CisjZGVmaW5lIHBocmFzZWJvb2tfc2hpZnQgOAorI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIwMQogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va1tdID0gewotICAgIDAsIDIxOSwgMjAsIDI0NSwgMzksIDc5LCAyMjQsIDEsIDc5LCA1NCwgNTAsIDI0NywgMTQwLCA1MCwgMjI1LCAxODUsIDUwLCAKLSAgICAyNTQsIDEzNCwgMjU0LCA2NSwgNDMsIDIyNiwgNywgNDQsIDIyNiwgNywgMjUzLCAyMjQsIDk2LCA1MCwgMjQ5LCAyMjcsIAotICAgIDI0MCwgMTc0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxOSwgNDgsIDIxLCAyMTAsIDg2LCAyMSwgMTExLCAyMSwgMTA1LCAyMSwgCi0gICAgMTU4LCAyMSwgMTYxLCAyMSwgMTkwLCAyMSwgMTk1LCAyMSwgMTk5LCAyMSwgMTk2LCAyMSwgMjAxLCAyNDksIDIzNCwgMjIwLCAKLSAgICAxNTIsIDIzMywgMjEsIDUwLCAyNDUsIDEwNiwgNTAsIDI0MiwgMTM3LCA1MCwgMjI0LCAxNiwgNzksIDI0OSwgMjI1LCAyNTMsIAotICAgIDIxNCwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTY2LCA3LCA2LCAxLCAyNTEsIDc0LCA3LCA2LCAxLCAyNDksIDY4LCAKLSAgICA3LCA2LCAxLCA3NiwgNywgNiwgMSwgMjQ1LCAxNCwgNywgNiwgMSwgMjQzLCAyMDksIDcsIDYsIDEsIDI0MiwgNjcsIDcsIDYsIAotICAgIDEsIDc0LCA3LCA2LCAxLCAyMzUsIDE1MCwgNywgNiwgMSwgMjM1LCAyOSwgNywgNiwgMSwgMTU2LCA3LCA2LCAxLCAxOTQsIAotICAgIDcsIDYsIDEsIDIzMCwgMzAsIDcsIDYsIDEsIDc4LCA3LCA2LCAxLCAyMjYsIDEwOSwgNywgNiwgMSwgMjI0LCA5OSwgNywgNiwgCi0gICAgMSwgMTUzLCA3LCA2LCAxLCAyMjIsIDkzLCA3LCA2LCAxLCAyMTcsIDE1MywgNywgNiwgMSwgNjksIDcsIDYsIDEsIDIxNCwgCi0gICAgMTA1LCA3LCA2LCAxLCAyMTIsIDk4LCA3LCA2LCAxLCAyMTEsIDE3OCwgNywgNiwgMSwgMjExLCAxMTcsIDcsIDYsIDEsIAotICAgIDIxMCwgMTU5LCA0MywgNDIsIDEyNywgMjIzLCA1MywgMjE5LCA0OCwgNDQsIDQyLCAxMjcsIDI1MCwgMzksIDI1NSwgMjMsIAotICAgIDEyMSwgMjMyLCAyMTksIDI0MiwgMTQ0LCAyNTUsIDIzLCA3LCA0LCAxLCA2MSwgNywgNCwgMSwgMjUzLCAxNjYsIDcsIDQsIAotICAgIDEsIDI1MSwgNzQsIDcsIDQsIDEsIDI0OSwgNjgsIDcsIDQsIDEsIDc2LCA3LCA0LCAxLCAyNDUsIDE0LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIwOSwgNywgNCwgMSwgMjQyLCA2NywgNywgNCwgMSwgNzQsIDcsIDQsIDEsIDIzNSwgMTUwLCA3LCA0LCAxLCAyMzUsIAotICAgIDI5LCA3LCA0LCAxLCAxNTYsIDcsIDQsIDEsIDE5NCwgNywgNCwgMSwgMjMwLCAzMCwgNywgNCwgMSwgNzgsIDcsIDQsIDEsIAotICAgIDIyNiwgMTA5LCA3LCA0LCAxLCAyMjQsIDk5LCA3LCA0LCAxLCAxNTMsIDcsIDQsIDEsIDIyMiwgOTMsIDcsIDQsIDEsIDIxNywgCi0gICAgMTUzLCA3LCA0LCAxLCA2OSwgNywgNCwgMSwgMjE0LCAxMDUsIDcsIDQsIDEsIDIxMiwgOTgsIDcsIDQsIDEsIDIxMSwgMTc4LCAKLSAgICA3LCA0LCAxLCAyMTEsIDExNywgNywgNCwgMSwgMjEwLCAxNTksIDQzLCAyNDksIDEwNywgMTI3LCA2NywgMjMyLCAyMTksIAotICAgIDQ0LCAyNDksIDEwNywgMTI3LCAxODQsIDIyOCwgNzgsIDIxOSwgMjAsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgMjUwLCAKLSAgICAxODQsIDUwLCAyMjQsIDIzMSwgNTAsIDI0OSwgMTA2LCA1MCwgMjExLCA0MCwgNTAsIDI1MSwgMTQzLCAxMzAsIDIyMSwgCi0gICAgMTc1LCA1MCwgMjQ4LCA5LCAyNDksIDE3MSwgNTAsIDI0NCwgMTQ0LCAyMjYsIDE1OCwgMjM1LCAyNDUsIDIzMywgNDgsIDUyLCAKLSAgICAyNTQsIDExOCwgMjI0LCAxLCA3OSwgMjI4LCA1NywgNTAsIDIxOSwgNTQsIDI0MCwgMTc1LCAyMjMsIDEwNSwgNTAsIDIzMSwgCi0gICAgMjM3LCAyNDgsIDc5LCA1MCwgMjI1LCAyNCwgNTAsIDIxOCwgMjQsIDEwNSwgMjE4LCAyNCwgMTU4LCAyNTUsIDEyLCAyNTUsIAotICAgIDIzLCAyMzAsIDIzMywgNTAsIDIyNSwgNzEsIDUwLCAyMzAsIDIyOSwgMjQ3LCAxMjgsIDI1MCwgMTkxLCAyMTgsIDI0LCAKLSAgICAxMTEsIDIzMSwgMTUzLCAyMjYsIDE1OCwgMjM1LCAyNDUsIDIyMiwgMjUwLCA1MiwgMjU0LCAxMTgsIDIyNCwgMSwgNzksIAotICAgIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDI0MiwgMzQsIDIxMiwgCi0gICAgMTE0LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDIzNSwgMjAwLCAyMjQsIDE2LCA3OSwgNywgNiwgMSwgMTE2LCAyLCAyNDIsIAotICAgIDE0MywgNywgNiwgMSwgMTE2LCAyLCAxNDIsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAxODQsIDcsIDYsIDEsIDExNiwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA0OCwgNywgNiwgMSwgCi0gICAgMjU0LCAyNTIsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAxNjAsIDIsIDI0MiwgMTQzLCA3LCA2LCAKLSAgICAxLCAxNjAsIDIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxNjAsIDIsIDI0OCwgOSwgNywgNiwgCi0gICAgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMTQyLCA3LCA2LCAxLCAyNDAsIDE2MSwgCi0gICAgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjQ1LCA2NywgNywgNiwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNDQsIDIsIDE0MiwgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxNDQsIDIsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDgsIDksIDIzMCwgODksIAotICAgIDUwLCA3LCA2LCAxLCAxNDQsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIDE0MiwgCi0gICAgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgOSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIAotICAgIDE0MiwgNywgNiwgMSwgMjE2LCAxNTIsIDcsIDQsIDEsIDIyMCwgNzgsIDIyMiwgOTMsIDcsIDQsIDEsIDExNiwgMiwgMjQyLCAKLSAgICAxNDMsIDcsIDQsIDEsIDExNiwgMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDExNiwgMiwgCi0gICAgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI0OCwgOSwgNywgNCwgMSwgMTE2LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIAotICAgIDI1NCwgMjUyLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMTYwLCAyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTYwLCAyLCAyNDgsIDksIDcsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDksIDcsIDQsIDEsIDI0NSwgNjcsIDcsIDQsIDEsIDIzMCwgCi0gICAgMzEsIDIsIDE4NCwgNywgNCwgMSwgMTQ0LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMTQ0LCAyLCAxODQsIDcsIDQsIDEsIDE0NCwgMiwgMjQ4LCA5LCAyNDcsIDE3NywgCi0gICAgNTAsIDcsIDQsIDEsIDE0NCwgMiwgOTEsIDcsIDQsIDEsIDEwNCwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDEwNCwgMiwgMTQyLCAKLSAgICA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzgsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAyMTYsIDE1MiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0OCwgOSwgNywgNiwgMSwgMTE2LCAyLCAKLSAgICAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCAyMzEsIDIzNywgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NCwgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMTE2LCAyLCAyMjYsIDIyOCwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOCwgCi0gICAgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAxNDIsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIAotICAgIDI1MCwgMzgsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMzgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDU5LCA0OCwgNywgNCwgCi0gICAgMSwgMjUxLCA3NSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNTEsIDc1LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjUxLCA3NSwgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyNTAsIAotICAgIDI0MiwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgOTEsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDkxLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDIzMSwgMjM3LCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxNjAsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDYsIAotICAgIDEsIDE2MCwgMiwgMjI2LCAyMjgsIDcsIDQsIDEsIDE2MCwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAKLSAgICAyNDIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAKLSAgICAyNDMsIDIxMCwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAyNDMsIDIxMCwgCi0gICAgMiwgMjUxLCAxNTQsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAKLSAgICAyNDIsIDY4LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyNDIsIDY4LCAyLCAKLSAgICA5MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgOTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAxODQsIDcsIDQsIDEsIDI0MCwgCi0gICAgMTYxLCAyLCAxODQsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgCi0gICAgMjM3LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjUxLCAxNTQsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNTEsIDE1NCwgNywgCi0gICAgNiwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgMjI4LCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjgsIDcsIDYsIDEsIAotICAgIDI0MCwgMTYxLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NywgMTI3LCA3NCwgNywgNiwgMjcsIDIzNiwgMzgsIDcsIDQsIDI3LCAKLSAgICAyMzYsIDM4LCA3LCA2LCAxLCAyMzUsIDE1MSwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI1MCwgMzgsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMzLCAKLSAgICAyNDUsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAxNDIsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAxNDIsIDcsIDYsIDEsIDIzMywgCi0gICAgMTU1LCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAKLSAgICAyNDcsIDEyOCwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgOTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDE0MiwgNywgNCwgMSwgMjMwLCAzMSwgCi0gICAgMiwgMTQyLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDE5MSwgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjUwLCAxOTEsIDcsIAotICAgIDYsIDEsIDIzMCwgMzEsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjMwLCAKLSAgICAzMSwgMjI0LCAyMDcsIDI1MSwgODYsIDI1NCwgNjUsIDcsIDYsIDEsIDI0NSwgMTQ2LCA3LCA0LCAxLCAyNDUsIDE0NiwgNywgCi0gICAgNiwgMSwgMTQ0LCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCAyNTEsIAotICAgIDE1NCwgNywgNCwgMSwgMTQ0LCAyLCAyNTEsIDE1NCwgNywgNiwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA0LCAxLCAxNDQsIAotICAgIDIsIDUyLCAxNDIsIDcsIDYsIDI3LCAyMjYsIDIzOCwgNywgNCwgMjcsIDIyNiwgMjM4LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgCi0gICAgMTQyLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMTQyLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjUwLCAxOTEsIDcsIDQsIDEsIAotICAgIDIyMywgMjI3LCAyLCAyNTAsIDE5MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyMjMsIDIyNywgCi0gICAgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDE0MiwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMTQyLCA3LCA2LCAxLCAKLSAgICAyMjIsIDk0LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMjIsIDk0LCAyLCAKLSAgICAyNTAsIDE5MSwgNywgNCwgMSwgMjIyLCA5NCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQyLCAKLSAgICA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDIxNywgMTU0LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjE3LCAxNTQsIAotICAgIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCA5MSwgNywgNiwgMSwgCi0gICAgMTA0LCAyLCAxODQsIDcsIDQsIDEsIDEwNCwgMiwgMTg0LCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxMDQsIDIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMDQsIDIsIDI1MSwgMTU0LCA3LCA0LCAxLCAxMDQsIDIsIDI1MSwgMTU0LCAKLSAgICA3LCA2LCAxLCAxMDQsIDIsIDIyMiwgMjM3LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyMjIsIDIzNywgNDgsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgNTIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCA1MiwgMTQyLCA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI4LCA3LCAKLSAgICA0LCAxLCAxMDQsIDIsIDIyNiwgMjI4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTIsIDk5LCAKLSAgICAyLCAyNTAsIDM4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjUwLCAzOCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzgsIAotICAgIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDgsIDksIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAxNDIsIDcsIDQsIDEsIDIxMCwgCi0gICAgMTYwLCAyLCAxNDIsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA1OSwgNDgsIAotICAgIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAKLSAgICAyMDAsIDIyMiwgOTMsIDcsIDQsIDEsIDU3LCAyLCA5MSwgNywgNiwgMSwgNTcsIDIsIDEwMywgNywgNiwgMSwgNTcsIDIsIAotICAgIDIxNiwgMTIsIDcsIDQsIDEsIDU3LCAyLCAyMTYsIDEyLCA3LCA2LCAxLCAxMzgsIDE5NSwgNywgNCwgMSwgMTM4LCAxOTUsIAotICAgIDcsIDYsIDEsIDIwNCwgNzgsIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDEwMywgNywgNCwgMSwgMjUxLCA3NSwgMiwgMTAzLCA3LCAKLSAgICA2LCAxLCAyNTQsIDIyOCwgMjQ5LCA2OCwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgMTAzLCA3LCA2LCAxLCAyNDksIDY5LCAyLCAKLSAgICAyMTYsIDEyLCA3LCA0LCAxLCAyNDksIDY5LCAyLCAyMTYsIDEyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDgsIDYyLCA3LCA2LCAKLSAgICAxLCAyMjMsIDUyLCA3NiwgNywgNiwgMSwgMjIxLCAxOTcsIDcsIDYsIDEsIDIwNCwgNzYsIDcsIDYsIDEsIDI0NSwgMTUsIDIsIAotICAgIDEwMywgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgMTAzLCA3LCA2LCAxLCAyNDMsIAotICAgIDExNCwgNywgNCwgMSwgMjQwLCAyMDgsIDcsIDYsIDEsIDIzNSwgMTkyLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgOTEsIDcsIAotICAgIDYsIDEsIDIzNSwgMzAsIDIsIDEwMywgNywgNCwgMSwgMjM1LCAzMCwgMiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgCi0gICAgMTMwLCA3LCA0LCAxLCAyMzMsIDEwNiwgMiwgOTEsIDcsIDYsIDEsIDIxNSwgOTQsIDE5NCwgNywgNiwgMSwgMjMwLCAzMSwgCi0gICAgMiwgNDMsIDEwMywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjAwLCA0NCwgMjMzLCA0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMzAsIAotICAgIDIyOSwgMTg0LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjU1LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjU1LCA3LCA2LCAxLCAKLSAgICAyMjYsIDIyMywgNywgNCwgMSwgMjI2LCAyMjMsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAxMDMsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTEwLCAyLCAxMDMsIDcsIDEsIDIxMCwgMjE0LCA3LCA2LCAxLCAxMzgsIDEwNSwgNywgNCwgMSwgMTM4LCAxMDUsIDcsIDYsIAotICAgIDEsIDI0NSwgODMsIDcsIDEsIDIyMywgNTIsIDI0NSwgODQsIDIzMiwgMTI5LCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjI2LCAKLSAgICA3MCwgMTAzLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMTAzLCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjU1LCA3LCA0LCAxLCAxMDQsIDIsIAotICAgIDI0MCwgMjU1LCA3LCA2LCAxLCAyMTQsIDE1NywgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNiwgMSwgMjExLCAKLSAgICAxMTgsIDIsIDEwMywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDEwMywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDkxLCA3LCA0LCAKLSAgICAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDI0NSwgMTYsIDcsIDYsIDEsIDI0NSwgMTcsIDIyMywgNTEsIDcsIDQsIDEsIAotICAgIDI0NSwgMTcsIDIyMywgNTEsIDcsIDQsIDEsIDI0NSwgMTcsIDIsIDIxNywgNzgsIDcsIDEsIDExMywgMiwgOTEsIDcsIDYsIAotICAgIDEsIDEzOCwgMTkwLCA3LCA0LCAxLCAxMzgsIDE5MCwgNywgMSwgMjM1LCAyMDAsIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgCi0gICAgOTEsIDcsIDEsIDIxMSwgMTgxLCA3LCAxLCAyNDgsIDU1LCAyNTAsIDE5LCA3LCAxLCAyMzMsIDgzLCAyNTAsIDE5LCA3LCAxLCAKLSAgICAyNTQsIDE0NSwgMjUwLCAxOSwgNywgMSwgMjIzLCA1OCwgMjUwLCAxOSwgNywgNiwgMSwgMjQ2LCA0OCwgMiwgMjUwLCAyNDIsIAotICAgIDcsIDYsIDEsIDI0OSwgNjksIDIsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjQ2LCA0OCwgMiwgCi0gICAgMjUwLCAyNDIsIDcsIDYsIDEsIDIzMiwgMTk0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgNCwgMSwgMjM1LCAxNTAsIDcsIDQsIAotICAgIDEsIDIzMiwgMTk0LCA3LCA2LCAxLCAyMjgsIDE5MSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgNCwgMSwgMjM1LCAxNTAsIDcsIAotICAgIDQsIDEsIDIyOCwgMTkxLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAxMTYsIDIsIDI1MCwgMjQyLCA3LCAKLSAgICA2LCAxLCAyNDAsIDE2MSwgMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgCi0gICAgMTQ0LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTA0LCAyLCAyNTAsIDI0MiwgCi0gICAgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDQsIAotICAgIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAxNDIsIDcsIAotICAgIDQsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjUwLCAyNDIsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxMCwgMjIsIDI1MCwgMjQyLCA3LCA2LCAxLCAxMDQsIDIsIDI0OCwgMTAsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIxNSwgOTQsIDc2LCAKLSAgICA3LCA2LCAxLCAxMTYsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgMTE2LCAyLCAyNDgsIDEwLCAyMiwgCi0gICAgMjMxLCAyMzcsIDcsIDYsIDEsIDExNiwgMiwgNTksIDcyLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDExNiwgMiwgNTksIDcyLCAKLSAgICAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDI1NCwgMjUzLCAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDIzMSwgCi0gICAgMjM3LCA3LCA2LCAxLCAyNDMsIDIxMCwgMiwgOTEsIDcsIDQsIDEsIDI0MywgMjEwLCAyLCA5MSwgNywgNiwgMSwgMjQzLCAKLSAgICAyMTAsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjUwLCAyNDIsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIAotICAgIDI1MCwgMjQyLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyOCwgNywgNCwgCi0gICAgMSwgMTQ0LCAyLCAyMjYsIDIyOCwgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyOSwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAKLSAgICAxNDQsIDIsIDIyNiwgMjI5LCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDI0NSwgMTcsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAKLSAgICAyNDUsIDE3LCAyLCAyNTAsIDI0MiwgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyNDYsIDQ3LCAKLSAgICA3LCA2LCAxLCAyNDksIDY5LCAyLCA0LCAxLCAyMTAsIDE1OSwgNywgNCwgMSwgMjQ2LCA0NywgNywgNiwgMSwgMjQzLCAyMTAsIAotICAgIDIsIDE0MiwgNywgNCwgMSwgMjQzLCAyMTAsIDIsIDE0MiwgNywgNiwgMSwgMjQwLCAyMDYsIDcsIDYsIDEsIDIxMSwgMTgxLCAKLSAgICA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjQyLCAxNDMsIDcsIDYsIDEsIAotICAgIDExNiwgMiwgMjIyLCAyMzcsIDcyLCAyMiwgMTQyLCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA3MiwgMjIsIDE0MiwgNywgCi0gICAgNiwgMSwgMjU0LCAyNTMsIDIsIDE0MiwgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyMTgsIAotICAgIDEwNSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMTgsIDEwNSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCA1MiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDExNiwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDIzNSwgMjAwLCAyNTEsIAotICAgIDE1NCwgNywgNCwgMSwgMTE2LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDE2MCwgMiwgNTIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNjAsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDQsIAotICAgIDEsIDE2MCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgNTIsIDI0MiwgMTQzLCA3LCA0LCAKLSAgICAxLCAyNDAsIDE2MSwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCAKLSAgICA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA2LCAxLCAxNDQsIDIsIDUyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMjM1LCAyMDAsIDI1MSwgMTU0LCA3LCA0LCAKLSAgICAxLCAxNDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDUyLCAyNDIsIDE0MywgNywgNCwgCi0gICAgMSwgMjIzLCAyMjcsIDIsIDUyLCAyNDIsIDE0MywgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgCi0gICAgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNiwgMSwgMTA0LCAyLCA1MiwgMjQyLCAxNDMsIAotICAgIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMDQsIDIsIDIzNSwgMjAwLCAyNTEsIDE1NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI0OSwgMjI4LCA1MSwgNywgNCwgCi0gICAgMSwgMjIyLCA5NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjQ5LCAyMjgsIDUxLCA3LCA2LCAxLCAyMTAsIDIzMSwgNywgNCwgMSwgMjEwLCAyMzEsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI1MCwgMjQyLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTAsIDI0MiwgNywgNiwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjAwLCA0NCwgMjMzLCA0MiwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjQ5LCAxMDgsIDcsIDYsIDEsIDIyNiwgMTM4LCA3LCA0LCAKLSAgICAxLCAyMjYsIDEzOCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDEwMywgNywgNiwgCi0gICAgMSwgMTE2LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDExNiwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTkxLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMTkxLCA3LCA2LCAxLCAxNDQsIDIsIDI0OCwgMTAsIDIyLCAyMzEsIDIzNywgNywgNCwgMSwgCi0gICAgMTQ0LCAyLCAyNDgsIDEwLCAyMiwgMjMxLCAyMzcsIDcsIDYsIDEsIDE0NCwgMiwgMjE2LCA5MCwgMjIsIDIzMSwgMjM3LCA3LCAKLSAgICA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDE0NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA3MiwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDU5LCA3MiwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIxMSwgMTE4LCAKLSAgICAyLCAyMzEsIDIzNywgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNDksIAotICAgIDEwOCwgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTAsIDcsIDQsIAotICAgIDEsIDI0OCwgMTUxLCAyNDcsIDIyOCwgNywgNCwgMSwgMjI0LCAzNCwgMjQ3LCAyMjgsIDcsIDYsIDEsIDExNiwgMiwgOTEsIAotICAgIDcsIDYsIDEsIDI1MSwgNzUsIDIsIDkxLCA3LCA0LCAxLCAyNTEsIDc1LCAyLCA5MSwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIAotICAgIDEzMCwgNywgNiwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDIxNywgMjUxLCAKLSAgICAyMTcsIDc4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIDI0MiwgMTg3LCAyMTgsIAotICAgIDEzMSwgNywgNCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA3LCA2LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMTMwLCAKLSAgICA3LCA2LCAxLCAyMTUsIDk0LCAyMTQsIDEwNSwgNywgNiwgMSwgMTYwLCAyLCA5MSwgNywgNCwgMSwgMTYwLCAyLCA5MSwgNywgCi0gICAgNiwgMSwgMjM1LCAxNTEsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE1MSwgMiwgOTEsIDcsIDYsIDEsIDQsIDIyNCwgMTAwLCAyLCAKLSAgICAyNDEsIDU5LCAyMTcsIDc4LCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjQxLCA1OSwgMjE3LCA3OCwgNywgNiwgMSwgMjIzLCAKLSAgICAyMjcsIDIsIDkxLCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgOTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA5MSwgNywgNCwgMSwgCi0gICAgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCA2MSwgNywgNCwgMSwgMjU0LCAxNTEsIDcsIDQsIDEsIDIxNSwgCi0gICAgOTQsIDI1NCwgMTUxLCA3LCA0LCAxLCA1NywgMiwgMTAzLCA3LCA0LCAxLCAyMDQsIDc4LCA3LCA0LCAxLCAyNTEsIDc1LCAyLCAKLSAgICAyNDksIDEwOCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjE3LCA3OCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMTAzLCA3LCA0LCAKLSAgICAxLCAyMjMsIDUyLCA3NiwgNywgNCwgMSwgMjIxLCAxOTcsIDcsIDQsIDEsIDIyMSwgMTk4LCAyLCAxMDMsIDcsIDQsIDEsIAotICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIyMywgNTIsIDIwNCwgNzYsIDcsIDQsIDEsIDIyMywgNTIsIDIwNCwgMTYwLCAyLCAxMDMsIAotICAgIDcsIDQsIDEsIDI1MCwgOCwgMjIzLCA1MiwgMjA0LCA3NiwgNywgNCwgMSwgMjQ3LCAxMjcsIDIzNSwgMTUxLCAyLCA5MSwgNywgCi0gICAgNCwgMSwgMjQzLCAyMTAsIDIsIDEwMywgNywgNCwgMSwgMTE5LCAyNDMsIDIwOSwgNywgMSwgNCwgNiwgMjQzLCAyMDksIDcsIAotICAgIDQsIDEsIDI0MywgMTE0LCA3LCA0LCAxLCAyMjMsIDE1NCwgMjQwLCAyNTUsIDcsIDQsIDEsIDIxNSwgOTQsIDI0MiwgNjcsIAotICAgIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDEwMywgNywgNCwgMSwgMjQxLCAyMTUsIDIsIDEwMywgNywgNCwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDE5MiwgNywgMSwgNCwgNiwgNzQsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUyLCA0OSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIyMywgNTgsIDEwMywgCi0gICAgNywgNCwgMSwgMjMzLCA3LCA3LCA0LCAxLCAyMTUsIDk0LCAxOTQsIDcsIDQsIDEsIDIxNSwgOTQsIDIzMiwgNTUsIDIsIAotICAgIDIwMCwgMjMzLCA0MiwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTAzLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCA0MywgMTAzLCA3LCAKLSAgICA0LCAxLCAyMzAsIDMxLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDEsIDQsIDYsIDIzMCwgMzAsIDcsIDQsIDEsIDI1MiwgMTQyLCAKLSAgICA3OCwgNywgMSwgNCwgNiwgMjI2LCAyMzgsIDcsIDQsIDEsIDI1MCwgOCwgMjI2LCAyMDUsIDcsIDQsIDEsIDIyNSwgMTM2LCAKLSAgICA3LCA0LCAxLCAyMTUsIDk0LCAxNTMsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAyMDAsIDIzMywgNDIsIDcsIDQsIAotICAgIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyMDAsIDIzMywgNDIsIDcsIDQsIAotICAgIDEsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjQ0LCA5NSwgNywgNCwgMSwgMjIzLCA1MiwgCi0gICAgMjIzLCAyMjcsIDIsIDI0NCwgOTUsIDcsIDEsIDQsIDYsIDE1MywgNywgMSwgNCwgNiwgMjM1LCAyMDAsIDE1MywgNywgNCwgCi0gICAgMSwgMjIyLCA5NCwgMiwgMTAzLCA3LCA0LCAxLCAyNDUsIDgzLCA3LCA0LCAxLCAyNDcsIDEyNywgMjM1LCAxNTEsIDIsIAotICAgIDIxOCwgMTA1LCAyMiwgMTAzLCA3LCA0LCAxLCAyMTgsIDIzMywgMjIzLCA1MiwgMjQ1LCA4MywgNywgNCwgMSwgMjQ1LCA4NCwgCi0gICAgMiwgMjQ5LCAxMDgsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNywgMTUzLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgMjIzLCA1OCwgCi0gICAgMTAzLCA3LCA0LCAxLCAxMDQsIDEzMCwgNywgNCwgMSwgMjE0LCAxNTcsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxMDMsIDcsIAotICAgIDQsIDEsIDIxNSwgOTQsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTUsIDk0LCAyMTIsIDk4LCA3LCA0LCAxLCAyMTUsIDk0LCAKLSAgICAyMTEsIDExNywgNywgMSwgNCwgNiwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIAotICAgIDEsIDIxMCwgMTYwLCAyLCAyNDksIDEwOCwgNywgNCwgMSwgMjQ1LCAxNiwgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjQ5LCAKLSAgICAxMDgsIDcsIDEsIDI0MiwgMTg3LCAyMTgsIDEzMSwgNywgMSwgMjI1LCAxNDIsIDIxMywgMTM1LCAyNDQsIDEsIDcsIDEsIAotICAgIDIzNSwgMjAwLCAyNDIsIDE4NywgMjE4LCAxMzEsIDcsIDEsIDIxOCwgMTEyLCAyNTEsIDc0LCA3LCAxLCAyNTEsIDI1NCwgCi0gICAgMjUwLCAxOSwgNywgMSwgNCwgNiwgMjUzLCAxNjYsIDcsIDQsIDEsIDI1MCwgOCwgMjA0LCA3NiwgNywgMSwgNCwgNiwgMjQzLCAKLSAgICAyMTAsIDIsIDEwMywgNywgMSwgNCwgNiwgMjQyLCA2NywgNywgNCwgMSwgMjM1LCAxNTEsIDIsIDI0OSwgMTM1LCA3LCA0LCAKLSAgICAxLCAyMTUsIDk0LCAyMzUsIDI5LCA3LCAxLCA0LCA2LCAxNTYsIDcsIDQsIDEsIDIyNCwgMTAwLCAyLCAxMDMsIDcsIDEsIAotICAgIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgOTEsIDcsIDEsIDIyMywgNTIsIDI0MiwgMTg3LCAyMTgsIDEzMiwgMiwgOTEsIDcsIAotICAgIDQsIDEsIDI0NiwgNDgsIDI0NywgMjI4LCA3LCA0LCAxLCAyNDgsIDM0LCAyNDcsIDIyOCwgNywgNCwgMSwgMjQ2LCA0OCwgCi0gICAgMjQ3LCAyMjksIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyMTUsIDE4NiwgMjQ3LCAyMjgsIDcsIDQsIDEsIDIxNiwgMjM2LCAKLSAgICAyNDcsIDIyOCwgNywgNCwgMSwgMjE3LCAzMCwgMjQ3LCAyMjksIDIsIDI0OSwgMTA4LCA3LCA0LCAxLCAyNDQsIDE0MiwgCi0gICAgMjQ3LCAyMjgsIDcsIDQsIDEsIDIzMiwgMTA1LCAyNDcsIDIyOCwgNywgNCwgMSwgMjMyLCA1NiwgMjQ3LCAyMjgsIDcsIDEsIAotICAgIDI1MSwgMjU0LCAyMjUsIDE4NCwgNywgMSwgMjUyLCA2LCAyMjUsIDE4NCwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2OCwgMiwgCi0gICAgMjQ0LCA5NSwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2OCwgMiwgMjQ0LCA5NiwgMjIsIDIxNywgNzgsIDU4LCAxLCA0LCAKLSAgICAyNDIsIDY3LCA1OCwgMSwgNCwgMjQyLCA2OCwgMiwgMTAzLCA1OCwgMSwgNCwgMjM1LCAxNTAsIDU4LCAxLCA0LCAxNTMsIAotICAgIDU4LCAxLCA0LCAyMTUsIDk0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMjMsIDIyNywgMiwgMTAzLCA1OCwgMSwgNCwgNiwgCi0gICAgMjM1LCAyMDAsIDE1MywgNTgsIDEsIDQsIDIxMiwgOTgsIDU4LCAxLCA0LCAyMTEsIDExNywgNTgsIDEsIDIyNCwgMTkzLCAKLSAgICA1OCwgMSwgNTIsIDIyNCwgMTkzLCA1OCwgMSwgMjE1LCA5NCwgMjQ5LCAyMjcsIDU4LCAxLCAyNTQsIDY1LCA1OCwgMSwgCi0gICAgMjIzLCA1MiwgMjQ5LCAyMjcsIDU4LCAxLCA0NCwgMTYzLCAyMjIsIDIzNiwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjM2LCAKLSAgICA1OCwgMSwgMjQyLCAxODcsIDIxOCwgMTMxLCA1OCwgMSwgMjIzLCA1MiwgMjQyLCAxODcsIDIxOCwgMTMxLCA1OCwgMSwgNDMsIAotICAgIDI1NCwgMSwgNTgsIDEsIDQ0LCAyNTQsIDEsIDU4LCAxLCAxMjAsIDI1NCwgMSwgNTgsIDEsIDEyNCwgMjU0LCAxLCA1OCwgMSwgCi0gICAgMjUwLCAzOSwgMjU1LCAyMywgMjUwLCAyNDIsIDU4LCAxLCA2NywgMjMyLCAyMTksIDU4LCAxLCAyMzEsIDIzNywgNTgsIDEsIAotICAgIDI1NSwgMTIsIDI1NSwgMjMsIDU4LCAxLCAyNDIsIDE0NCwgMjU1LCAyMywgNTgsIDEsIDEyMSwgNjcsIDIzMiwgMjE5LCA1OCwgCi0gICAgMSwgMTIxLCAyMzEsIDIzNywgNTgsIDEsIDEyMSwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAxMjEsIDI1NSwgMTIsIAotICAgIDI1NSwgMjMsIDU4LCAxLCAyMTUsIDIyMywgMjQ5LCAyMzQsIDU4LCAxLCAxNjMsIDIxNSwgMjIzLCAyNDksIDIzNCwgNTgsIAotICAgIDEsIDI1MCwgMTgxLCA0NCwgMTYzLCAyMjIsIDIzNiwgNTgsIDEsIDI1MCwgMTgxLCA0MywgMTYzLCAyMjIsIDIzNiwgNTgsIAotICAgIDEsIDEyMCwgMjE3LCA4OCwgNTgsIDEsIDEyNCwgMjE3LCA4OCwgNTgsIDEsIDk2LCA1MCwgNTgsIDEsIDIzMCwgMTg3LCA1MCwgCi0gICAgMjUxLCAxNTQsIDU5LCA0OCwgMjIyLCAyMzcsIDQ4LCAyMjYsIDIyOCwgNCwgMTg0LCA1MiwgMjU1LCAxMiwgMjU1LCAyMywgCi0gICAgNTgsIDEsIDIyMywgMzksIDEwMywgNTgsIDEsIDI0OSwgMTM5LCAyNTUsIDIzLCA1OCwgMSwgNCwgMjQzLCAxMTQsIDU4LCAxLCAKLSAgICA0LCAxNTYsIDU4LCAxLCA0LCAyMjIsIDkzLCA1OCwgMSwgNCwgMjExLCAxNzgsIDU4LCAxLCA0LCAyMjMsIDUyLCAyNDIsIAotICAgIDE4NywgMjE4LCAxMzEsIDU4LCAxLCAyNDUsIDI4LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMTM4LCAxMzAsIDU4LCAxLCAKLSAgICAyMzAsIDIzMCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyNywgMTM4LCAxMzAsIDU4LCAKLSAgICAxLCAyMTAsIDI1NCwgMjQ4LCA1MiwgMTM4LCA3OSwgNTgsIDEsIDIxMSwgNzAsIDI0OCwgNTIsIDEzOCwgNzksIDU4LCAxLCAKLSAgICAyMTMsIDEzMywgNTgsIDEsIDIxNCwgMTg2LCA1OCwgMSwgNTIsIDI1NCwgNjUsIDU4LCAxLCAxMjEsIDEyNCwgMjU0LCAxLCAKLSAgICA1OCwgMSwgMTIxLCAxMjAsIDI1NCwgMSwgNTgsIDEsIDEyMSwgNDMsIDI1NCwgMSwgNTgsIDEsIDEyMSwgNDQsIDI1NCwgMSwgCi0gICAgNTgsIDEsIDEyMSwgMjIyLCAyMzYsIDU4LCAxLCAyMzAsIDIyOSwgMjQyLCAxNDQsIDI1NSwgMjMsIDU4LCAxLCAyMzAsIAotICAgIDIyOSwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCA1OCwgMSwgMjMwLCAyMjksIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCA1OCwgMSwgCi0gICAgMTIxLCAxODQsIDU4LCAxLCAyMjMsIDE2MCwgMjQ5LCAyMzQsIDU4LCAxLCAyNTIsIDY2LCAxMjUsIDIxNiwgMzEsIDU4LCAxLCAKLSAgICAyNDUsIDE1MSwgMTI1LCAyMTYsIDMxLCA1OCwgMSwgMjUyLCA2NiwgMTIxLCAyMTYsIDMxLCA1OCwgMSwgMjQ1LCAxNTEsIAotICAgIDEyMSwgMjE2LCAzMSwgNTgsIDEsIDIyMCwgNTYsIDU4LCAxLCAyMDQsIDIyMCwgNTYsIDU4LCAxLCAxMjEsIDQzLCA3NSwgCi0gICAgMzgsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzOCwgMjU1LCAxMiwgMjU1LCAyMywgMzgsIDI1MCwgMzksIDI1NSwgMjMsIDM4LCAKLSAgICAxODQsIDM4LCAyMzEsIDIzNywgMzgsIDIyNiwgMTIzLCAzOCwgMjUxLCAxNTQsIDM4LCA1OSwgNDgsIDM4LCAyNDgsIDksIAotICAgIDM4LCAyNDEsIDU5LCA0OCwgMzgsIDIyMiwgMjM3LCA0OCwgMzgsIDUyLCAyNTUsIDEyLCAyNTUsIDIzLCAzOCwgMjUwLCAKLSAgICAyNDIsIDM4LCA2NywgMjMyLCAyMjAsIDQ4LCAzOCwgNTIsIDY3LCAyMzIsIDIyMCwgNDgsIDM4LCA1MiwgMjQyLCAxNDQsIAotICAgIDI1NSwgMjMsIDM4LCAyNTEsIDcsIDM4LCAyMzUsIDIwMCwgMjUxLCAxNTQsIDM4LCAyMTUsIDk0LCAyNDksIDIyOCwgNDgsIAotICAgIDM4LCAyNDksIDIyOCwgNDgsIDM4LCAyMjMsIDUyLCAyNDksIDIyOCwgNDgsIDM4LCAyNDksIDIyOCwgNzIsIDIyMiwgMjU0LCAKLSAgICAzOCwgMjQyLCAxNDQsIDI1NSwgMjQsIDUxLCAzOCwgMjU1LCAxMiwgMjU1LCAyNCwgNTEsIDM4LCA0MywgMjE3LCA4OSwgNTEsIAotICAgIDM4LCA0NCwgMjE3LCA4OSwgNTEsIDM4LCA0MywgMjU0LCAxMTgsIDQ4LCAzOCwgMjQwLCAyNTUsIDM4LCA0MywgMTYzLCAKLSAgICAyMjIsIDIzNywgNTEsIDM4LCAxMjAsIDIxNywgODksIDUxLCAzOCwgMTI0LCAyMTcsIDg5LCA1MSwgMzgsIDk2LCA1LCA1MSwgCi0gICAgMzgsIDIzMCwgMTg3LCA1LCA1MSwgMzgsIDIyNiwgNjgsIDI0MSwgNTksIDUxLCAzOCwgMjIzLCA1OCwgMjQxLCA1OSwgNTEsIAotICAgIDM4LCA1OSwgNTEsIDM4LCAyNDgsIDEwLCA1MSwgMzgsIDIyMiwgMjM3LCA1MSwgMzgsIDI0OSwgMjI4LCA1MSwgMzgsIDI1MCwgCi0gICAgMTkxLCAzOCwgMjI2LCAyMjgsIDM4LCA2NywgMjMyLCAyMjAsIDUxLCAzOCwgMjUxLCAxNDgsIDUxLCAzOCwgMjM1LCAyMDAsIAotICAgIDUyLCAyNTQsIDMyLCA1MSwgMzgsIDI1MCwgMjQzLCA1MSwgMzgsIDI1MCwgMzksIDI1NSwgMjQsIDUxLCAzOCwgMjUxLCAKLSAgICAxNTUsIDUxLCAzOCwgMjM1LCAyMDAsIDI1MSwgMTU1LCA1MSwgMzgsIDIxNiwgOTAsIDUxLCAzOCwgMjMxLCAyMzgsIDUxLCAKLSAgICAzOCwgMTIxLCAyMzIsIDIxOSwgMzgsIDUyLCAxMjEsIDIzMiwgMjE5LCAzOCwgMjE2LCA5MCwgMjI2LCAxMjQsIDM4LCAyMTksIAotICAgIDI1MywgMjE4LCAxMDUsIDIyNiwgMTI0LCAzOCwgMjAwLCAyMTgsIDEwNSwgMjI2LCAxMjQsIDM4LCAyMTksIDI1MywgMjE5LCAKLSAgICA0OSwgMjI2LCAxMjQsIDM4LCAyMDAsIDIxOSwgNDksIDIyNiwgMTI0LCAzOCwgNDQsIDE2MywgMjIyLCAyMzcsIDUxLCAzOCwgCi0gICAgMjM1LCAyMDAsIDI1MSwgMTQ4LCA1MSwgMzgsIDQyLCA1MSwgMzgsIDIyMSwgMTgyLCA1MSwgMzgsIDIxMSwgMTc5LCA0OCwgCi0gICAgMzgsIDY3LCAxODQsIDM4LCA1MiwgMjI2LCAxMjMsIDM4LCAyNDIsIDE0NCwgMTM4LCA3OSwgMzgsIDI1NSwgMTIsIDEzOCwgCi0gICAgNzksIDM4LCAyNiwgMjI1LCAxNzgsIDM4LCAyNiwgMjM0LCA4LCAzOCwgMjYsIDI0OCwgNCwgMjE2LCAxOSwgMzgsIDI2LCAKLSAgICAyMTAsIDIxOSwgMzgsIDI1MSwgMTQ4LCA0OCwgMzgsIDI0NSwgMTA2LCA1LCA1MSwgMzgsIDUyLCA2NywgMjMyLCAyMjAsIAotICAgIDUxLCAzOCwgNDMsIDI1NCwgMTE4LCA1MSwgMzgsIDIyOCwgNTcsIDIxNiwgOTAsIDQ4LCAzOCwgMjQxLCA2NSwgNDgsIDM4LCAKLSAgICAyNTQsIDE1NiwgMTI4LCAyMTYsIDQzLCA0OCwgMzgsIDQzLCA0NCwgODAsIDUxLCAzOCwgMjE0LCAxNTMsIDgwLCA1MSwgMzgsIAotICAgIDI0MiwgMTQ5LCAyMzUsIDY5LCAzOCwgNDQsIDI1NCwgMiwgNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNywgNDgsIDM4LCAKLSAgICAyNDQsIDEzOSwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAyNTQsIDIsIDUxLCAzOCwgNDQsIDI1NCwgMiwgNTEsIDM4LCAKLSAgICA0NCwgMjU0LCAyLCAyMiwgMTIwLCAyNTQsIDIsIDUxLCAzOCwgNDQsIDE2MywgMjIyLCAyMzcsIDQ4LCAzOCwgNTksIDcyLCAKLSAgICAyMjIsIDI1NCwgMzgsIDI1MywgMjI1LCA1MSwgMzgsIDUyLCAyMjIsIDIzNywgNTEsIDM4LCAyMTAsIDM1LCA0OCwgMzgsIAotICAgIDUyLCAyNTEsIDE1NSwgNTEsIDM4LCA1MiwgMjUxLCAxNTQsIDM4LCA1MiwgMjMxLCAyMzcsIDM4LCA1MiwgMjMxLCAyMzgsIAotICAgIDUxLCAzOCwgNTIsIDE4NCwgMzgsIDUyLCAyMzUsIDIwMCwgMjUxLCAxNTQsIDM4LCA1MiwgOTcsIDgwLCA1MSwgMzgsIDcsIAotICAgIDQsIDEsIDYxLCAzOCwgNywgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3NCwgMzgsIDcsIDQsIDEsIDc4LCAzOCwgNywgNCwgMSwgCi0gICAgNjksIDM4LCA3LCA0LCAxLCAyNTEsIDc0LCAzOCwgNywgNCwgMSwgMjQ5LCA2OCwgMzgsIDcsIDQsIDEsIDI0MiwgNjcsIDM4LCAKLSAgICA3LCA0LCAxLCAxOTQsIDM4LCA3LCA0LCAxLCAxNTMsIDM4LCA3LCA0LCAxLCAyMTcsIDE1MywgMzgsIDcsIDQsIDEsIDIxNCwgCi0gICAgMTA1LCAzOCwgNywgNCwgMSwgMjExLCAxNzgsIDI2LCA2LCAxLCAyNDEsIDIwMywgMjYsIDQsIDEsIDI0MSwgMjAzLCAyNiwgCi0gICAgNiwgMSwgMjU0LCAzMSwgMjIxLCAyNDgsIDI2LCA0LCAxLCAyNTQsIDMxLCAyMjEsIDI0OCwgMjYsIDIyNywgMjAyLCA1MCwgCi0gICAgMjYsIDIzMiwgMTE0LCAyMjcsIDIwMiwgNTAsIDI2LCA2LCAxLCAyMjYsIDU1LCAyNDcsIDIzNSwgMjYsIDQsIDEsIDIyNiwgCi0gICAgNTUsIDI0NywgMjM1LCAyNiwgMjEwLCAyMTksIDI2LCA0LCAyMjMsIDUyLCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA0LCAKLSAgICAyNDYsIDEyNiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNCwgMjIzLCA1MiwgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgCi0gICAgMTgwLCA4NywgMjYsIDIyNCwgMTYsIDc5LCAyNiwgMjE2LCAxOSwgMjYsIDI0OCwgNCwgMjE2LCAxOSwgMjYsIDYsIDEsIAotICAgIDI1NCwgMTUyLCAyLCAyMTYsIDE5LCAyNiwgMjU0LCAxMDUsIDIxNywgMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTYsIAotICAgIDE5LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMTYsIDE5LCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDQsIDIsIDIxNiwgMTksIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDYsIDEsIDIyNiwgCi0gICAgMjA2LCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIxNiwgMTksIDI2LCA2LCAxLCAKLSAgICAyNTQsIDE1MSwgMjYsIDYsIDEsIDI1MiwgMzQsIDI2LCA2LCAxLCAyNDMsIDExNCwgMjYsIDYsIDEsIDI0OCwgNjIsIDI2LCAKLSAgICA2LCAxLCAyNDUsIDEwOCwgMjYsIDYsIDEsIDIxMCwgODUsIDI2LCA2LCAxLCAyNDUsIDcxLCAyNiwgNiwgMSwgMjE2LCAxODAsIAotICAgIDI2LCA2LCAxLCAyMzUsIDE5MiwgMjYsIDYsIDEsIDIzNCwgMjI4LCAyNiwgNiwgMSwgMjMzLCAxMDQsIDI2LCA2LCAxLCAKLSAgICAyMzAsIDEwNywgMjYsIDYsIDEsIDIyNywgMjQyLCAyNiwgNiwgMSwgMjExLCAxNTcsIDI2LCA2LCAxLCAyMjYsIDIwMywgMjYsIAotICAgIDYsIDEsIDIyNSwgMTExLCAyNiwgNiwgMSwgMjIzLCA0MCwgMjYsIDYsIDEsIDIxOSwgMTc5LCAyNiwgNiwgMSwgMjE3LCA0MiwgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU3LCAyNiwgNiwgMSwgMjI1LCAxMzYsIDI2LCA2LCAxLCAyNTAsIDExOCwgMjYsIDYsIDEsIAotICAgIDIyNCwgMTY0LCAyNiwgNiwgMSwgMjI2LCAyMDUsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAzLCAyNiwgNiwgMSwgCi0gICAgMjE0LCAxNTgsIDIsIDI0OCwgMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjQ1LCAxMDksIAotICAgIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMTYsIDE5LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIxNiwgCi0gICAgMTksIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCA0LCAyMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDI1NCwgMTUxLCAyNiwgCi0gICAgNCwgMSwgMjUyLCAzNCwgMjYsIDQsIDEsIDI0MywgMTE0LCAyNiwgNCwgMSwgMjQ4LCA2MiwgMjYsIDQsIDEsIDI0NSwgMTA4LCAKLSAgICAyNiwgNCwgMSwgMjEwLCA4NSwgMjYsIDQsIDEsIDI0NSwgNzEsIDI2LCA0LCAxLCAyMTYsIDE4MCwgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTkyLCAyNiwgNCwgMSwgMjM0LCAyMjgsIDI2LCA0LCAxLCAyMzMsIDEwNCwgMjYsIDQsIDEsIDIzMCwgMTA3LCAyNiwgNCwgCi0gICAgMSwgMjI3LCAyNDIsIDI2LCA0LCAxLCAyMTEsIDE1NywgMjYsIDQsIDEsIDIyNiwgMjAzLCAyNiwgNCwgMSwgMjI1LCAxMTEsIAotICAgIDI2LCA0LCAxLCAyMjMsIDQwLCAyNiwgNCwgMSwgNDAsIDIxOSwgMTc5LCAyNiwgNCwgMSwgMjE5LCAxNzksIDI2LCA0LCAxLCAKLSAgICAyMTcsIDQyLCAyNiwgNCwgMSwgMjE0LCAxNTcsIDI2LCA0LCAxLCAyMjUsIDEzNiwgMjYsIDQsIDEsIDI1MCwgMTE4LCAyNiwgCi0gICAgNCwgMSwgMjI0LCAxNjQsIDI2LCA0LCAxLCAyMjYsIDIwNSwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDMsIDI2LCA0LCAKLSAgICAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAzLCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIxNiwgMTksIDI2LCA0LCAxLCAyMTQsIAotICAgIDE1OCwgMiwgMjE2LCAxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDE5LCAyNiwgNiwgMjM0LCAyNTMsIDg3LCAyNiwgCi0gICAgMjUyLCAzNSwgODcsIDI2LCAyMTYsIDE4MSwgODcsIDI2LCAyMTQsIDE1OCwgMiwgMjQxLCA1OSwgODcsIDI2LCAyMTQsIAotICAgIDE1OCwgMiwgMjU1LCAxMiwgMjIsIDI0MSwgNTksIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0OCwgMTAsIDIyLCAyNDEsIDU5LCAKLSAgICA4NywgMjYsIDIyNSwgMTM3LCA4NywgMjYsIDIyNSwgMTEyLCA4NywgMjYsIDIzNCwgMjUzLCA4NywgMjYsIDEsIDI1NCwgMzEsIAotICAgIDIzNCwgMTIsIDI2LCA0LCAxLCAyNTQsIDMxLCAyMzQsIDEyLCAyNiwgMSwgMjE4LCAxMzksIDI2LCA0LCAxLCAyMTgsIDEzOSwgCi0gICAgMjYsIDEsIDI0NywgMjM1LCAyNiwgNCwgMSwgMjQ3LCAyMzUsIDI2LCAxLCAyMzQsIDEyLCAyNiwgNCwgMSwgMjM0LCAxMiwgCi0gICAgMjYsIDEsIDIyMSwgMjQ4LCAyNiwgNCwgMSwgMjIxLCAyNDgsIDgxLCA2LCAxLCAyMjAsIDU3LCA4MSwgNCwgMSwgMjIwLCAKLSAgICA1NywgODEsIDYsIDEsIDI0NCwgMTQ4LCA4MSwgNCwgMSwgMjQ0LCAxNDgsIDgxLCA2LCAxLCAyMzQsIDEyMywgODEsIDQsIDEsIAotICAgIDIzNCwgMTIzLCA4MSwgNiwgMSwgMjQxLCA1MiwgODEsIDQsIDEsIDI0MSwgNTIsIDgxLCA2LCAxLCAyNDMsIDEwOSwgODEsIAotICAgIDQsIDEsIDI0MywgMTA5LCA4MSwgNiwgMSwgMjIwLCAyNCwgODEsIDQsIDEsIDIyMCwgMjQsIDgxLCA2LCAxLCAyNDgsIDc3LCAKLSAgICA4MSwgNCwgMSwgMjQ4LCA3NywgMjYsIDIzNCwgMjI5LCA4NywgMjYsIDIyMywgNDEsIDg3LCAyNiwgMjMyLCA4OCwgMjE5LCAKLSAgICAxODAsIDg3LCAyNiwgMSwgMjEwLCAyMjQsIDI2LCA2LCAyMTYsIDE4MSwgODcsIDI2LCAyMzIsIDg4LCAyNDUsIDEwOSwgODcsIAotICAgIDI2LCAyMjMsIDUyLCAyMzIsIDg4LCAyNDUsIDEwOSwgODcsIDI2LCA2LCAxLCAyMjAsIDksIDI2LCA0LCAxLCAyMjAsIDksIAotICAgIDI2LCA2LCAyMzIsIDg4LCAyMTksIDE4MCwgODcsIDI2LCA2LCAxLCAyMjEsIDI0NSwgMjYsIDQsIDEsIDIyMSwgMjQ1LCAyNiwgCi0gICAgMjIzLCA0MSwgMiwgMjE4LCAxMDUsIDg3LCAyNiwgNiwgMjIzLCA1MiwgMjMyLCA4OCwgMjE5LCAxODAsIDg3LCAyNiwgNiwgCi0gICAgMjQ2LCAxMjYsIDIzMiwgODgsIDIxOSwgMTgwLCA4NywgMjYsIDYsIDIyMywgNTIsIDI0NiwgMTI2LCAyMzIsIDg4LCAyMTksIAotICAgIDE4MCwgODcsIDMzLCA2LCAxLCAyMzYsIDY4LCAyLCAyNDIsIDE0MywgMzMsIDYsIDEsIDIzNSwgMTk2LCAzMywgNiwgMSwgCi0gICAgMjQ3LCAxNzAsIDMzLCA2LCAxLCAyNDIsIDE5NCwgMzMsIDYsIDEsIDIxNCwgMjAyLCAyMzYsIDY3LCAzMywgNiwgMSwgMjQ2LCAKLSAgICA0NCwgMzMsIDYsIDEsIDI1MSwgODQsIDc0LCAzMywgNiwgMSwgMjExLCA4LCAzMywgNiwgMSwgMjM1LCAxMzIsIDMzLCA2LCAKLSAgICAxLCAyMzIsIDE5MywgMzMsIDYsIDEsIDIyOCwgMTgzLCAzMywgNiwgMSwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyMzQsIDU0LCAKLSAgICAzMywgNiwgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCAzMywgNiwgMSwgMjE5LCAyNTMsIDY5LCAzMywgNiwgMSwgMjQ2LCAKLSAgICA0MCwgMzMsIDYsIDEsIDYxLCAzMywgNiwgMSwgMjUyLCA4MywgMzMsIDYsIDEsIDIxMywgMjU1LCAzMywgNiwgMSwgMjQyLCAKLSAgICAyNDMsIDMzLCA2LCAxLCAyNDgsIDk4LCAzMywgNiwgMSwgMjM2LCA2NywgMzMsIDYsIDEsIDIxMCwgNzQsIDMzLCA2LCAxLCAKLSAgICAyMTAsIDk0LCAzMywgNiwgMSwgNzQsIDMzLCA2LCAxLCAyMTksIDI1MywgNzQsIDMzLCA2LCAxLCAxNzYsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE4MiwgMzMsIDYsIDEsIDI0NSwgMTY3LCAzMywgNiwgMSwgMjQ1LCAxNTgsIDMzLCA2LCAxLCA3OCwgMzMsIDYsIDEsIAotICAgIDIyNSwgMjI0LCAzMywgNiwgMSwgMjQ1LCAxMDAsIDMzLCA2LCAxLCAyNDUsIDkwLCAzMywgNiwgMSwgMjE3LCAyMywgMzMsIAotICAgIDYsIDEsIDY5LCAzMywgNiwgMSwgMjQ1LCAyMTAsIDMzLCA2LCAxLCAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OSwgMzMsIDYsIAotICAgIDEsIDI1MCwgMTM5LCAzMywgNiwgMSwgMjIwLCAxMDQsIDMzLCA2LCAxLCAyMjAsIDY3LCAzMywgNiwgMSwgMjQyLCAxMCwgCi0gICAgNTAsIDMzLCA2LCAxLCAyMTEsIDI3LCAzMywgNiwgMSwgMjE5LCA1NCwgNTAsIDMzLCA2LCAxLCA3NiwgMzMsIDYsIDEsIAotICAgIDIxMCwgMjEyLCAzMywgNiwgMSwgMTkyLCAzMywgNCwgMSwgNjEsIDMzLCA0LCAxLCAyNTIsIDgzLCAzMywgNCwgMSwgMjEzLCAKLSAgICAyNTUsIDMzLCA0LCAxLCAyNDIsIDI0MywgMzMsIDQsIDEsIDI0OCwgOTgsIDMzLCA0LCAxLCAyMzYsIDY3LCAzMywgNCwgMSwgCi0gICAgMjEwLCA3NCwgMzMsIDQsIDEsIDIxMCwgOTQsIDMzLCA0LCAxLCA3NCwgMzMsIDQsIDEsIDIxOSwgMjUzLCA3NCwgMzMsIDQsIAotICAgIDEsIDE3NiwgMzMsIDQsIDEsIDI0NSwgMTgyLCAzMywgNCwgMSwgMjQ1LCAxNjcsIDMzLCA0LCAxLCAyNDUsIDE1OCwgMzMsIAotICAgIDQsIDEsIDc4LCAzMywgNCwgMSwgMjI1LCAyMjQsIDMzLCA0LCAxLCAyNDUsIDEwMCwgMzMsIDQsIDEsIDI0NSwgOTAsIDMzLCAKLSAgICA0LCAxLCAyMTcsIDIzLCAzMywgNCwgMSwgNjksIDMzLCA0LCAxLCAyNDUsIDIxMCwgMzMsIDQsIDEsIDE2MiwgMzMsIDQsIDEsIAotICAgIDIxNSwgMTc5LCAzMywgNCwgMSwgMjUwLCAxMzksIDMzLCA0LCAxLCAyMjAsIDEwNCwgMzMsIDQsIDEsIDIyMCwgNjcsIDMzLCAKLSAgICA0LCAxLCAyNDIsIDEwLCA1MCwgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCA0LCAxLCAyMTksIDU0LCA1MCwgMzMsIDQsIDEsIAotICAgIDc2LCAzMywgNCwgMSwgMjEwLCAyMTIsIDMzLCA0LCAxLCAxOTIsIDMzLCA0LCAxLCAyMzYsIDY4LCAyLCAyNDIsIDE0MywgCi0gICAgMzMsIDQsIDEsIDIzNSwgMTk2LCAzMywgNCwgMSwgMjQ3LCAxNzAsIDMzLCA0LCAxLCAyNDIsIDE5NCwgMzMsIDQsIDEsIAotICAgIDIxNCwgMjAyLCAyMzYsIDY3LCAzMywgNCwgMSwgMjQ2LCA0NCwgMzMsIDQsIDEsIDI1MSwgODQsIDc0LCAzMywgNCwgMSwgCi0gICAgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAxMzIsIDMzLCA0LCAxLCAyMzIsIDE5MywgMzMsIDQsIDEsIDIyOCwgMTgzLCAzMywgCi0gICAgNCwgMSwgMjE1LCAxNzUsIDMzLCA0LCAxLCAyMzQsIDU0LCAzMywgNCwgMSwgMjQwLCAxNjEsIDIsIDI0MiwgMTQzLCAzMywgCi0gICAgNCwgMSwgMjE5LCAyNTMsIDY5LCAzMywgNCwgMSwgMjQ2LCA0MCwgMzMsIDYsIDEsIDIyNiwgMjA1LCAzMywgNCwgMSwgMjI2LCAKLSAgICAyMDUsIDMzLCA2LCAxLCAyMTEsIDU5LCAzMywgNCwgMSwgMjExLCA1OSwgMzMsIDYsIDEsIDIzNSwgMTkwLCA3NiwgMzMsIDQsIAotICAgIDEsIDIzNSwgMTkwLCA3NiwgMzMsIDYsIDEsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzMiwgMTk4LCAyMTAsIAotICAgIDE4MywgMzMsIDYsIDEsIDIzNSwgMTkwLCAyMzIsIDE5OCwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE5MCwgMjMyLCAKLSAgICAxOTgsIDIxMCwgMTgzLCAzMywgNiwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MiwgMSwgMjEwLCAxODMsIAotICAgIDMzLCA2LCAxLCAyMzUsIDE5MCwgMjUyLCAxLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAyNTIsIDEsIDIxMCwgCi0gICAgMTgzLCAzMywgNiwgMSwgMjMzLCAyMzksIDMzLCA0LCAxLCAyMzMsIDIzOSwgMzMsIDYsIDEsIDIyNCwgMTY0LCAzMywgNCwgCi0gICAgMSwgMjI0LCAxNjQsIDMzLCA2LCAxLCAyNDQsIDkwLCAzMywgNCwgMSwgMjQ0LCA5MCwgMzMsIDYsIDEsIDIzNSwgMTUyLCAKLSAgICAzMywgNCwgMSwgMjM1LCAxNTIsIDMzLCA2LCAxLCAyMzUsIDE1MywgMiwgNTIsIDI0MiwgMTQ0LCAyNTUsIDIzLCAzMywgNCwgCi0gICAgMSwgMjM1LCAxNTMsIDIsIDUyLCAyNDIsIDE0NCwgMjU1LCAyMywgMzMsIDYsIDEsIDIxNCwgMjA1LCAzMywgNCwgMSwgMjE0LCAKLSAgICAyMDUsIDMzLCA2LCAxLCAyMjIsIDE4NywgMjI2LCAyMDUsIDMzLCA0LCAxLCAyMjIsIDE4NywgMjI2LCAyMDUsIDMzLCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjE2LCA2NiwgMzMsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMTYsIDY2LCAzMywgNiwgMSwgMjI2LCAKLSAgICAxNDQsIDMzLCA0LCAxLCAyMjYsIDE0NCwgMzMsIDYsIDEsIDIzNCwgMTIsIDMzLCA0LCAxLCAyMzQsIDEyLCAzMywgMjE2LCAKLSAgICAxNDcsIDUwLCAzOCwgMzMsIDIxNiwgNjYsIDM4LCAzMywgMjI2LCA2OSwgMzgsIDMzLCAyNDgsIDE2MiwgMjI1LCAyMSwgMzgsIAotICAgIDMzLCAyMjQsIDE1OCwgMjI1LCAyMSwgMzgsIDMzLCAyMjUsIDYsIDM4LCAzMywgMjQwLCAyMTgsIDIxNiwgMTQ3LCA1MCwgCi0gICAgMzgsIDMzLCAyMzAsIDE5NiwgNTAsIDMzLCA2LCAxLCAyMTksIDI1MywgMjQwLCAxNjEsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAKLSAgICAyMTksIDI1MywgMjQwLCAxNjEsIDIsIDIxNywgNzgsIDMzLCA2LCAxLCAyMjAsIDE0OCwgNTAsIDMzLCA0LCAxLCAyMjAsIAotICAgIDE0OCwgNTAsIDMzLCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxMTUsIDMzLCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAKLSAgICAxMTUsIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgMjE0LCAxNTYsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgMjE0LCAxNTYsIAotICAgIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgOTEsIDMzLCA2LCAxLCAyNDIsIDI0NCwgCi0gICAgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0MiwgMjQ0LCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjEwLCAKLSAgICA3NSwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTAsIDk1LCAyLCAyNDgsIAotICAgIDQ3LCAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCA0NywgMzMsIDYsIDEsIDIzNSwgMTksIDIsIDI0OCwgNDcsIDMzLCA0LCAKLSAgICAxLCAyMzUsIDE5LCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgNjcsIDkxLCAzMywgNCwgMSwgMjM1LCAxOSwgCi0gICAgMiwgNjcsIDkxLCAzMywgNiwgMSwgMjM1LCAxOSwgMiwgOTEsIDMzLCA0LCAxLCAyMzUsIDE5LCAyLCA5MSwgMzMsIDYsIDEsIAotICAgIDI1MiwgMTMyLCAxNzYsIDMzLCA0LCAxLCAyNTIsIDEzMiwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNTksIDIsIDI0OCwgNDcsIAotICAgIDMzLCA0LCAxLCAyNDUsIDE1OSwgMiwgMjQ4LCA0NywgMzMsIDYsIDI3LCAyNDUsIDE1OSwgMjQyLCAyNDMsIDMzLCA0LCAyNywgCi0gICAgMjQ1LCAxNTksIDI0MiwgMjQzLCAzMywgNiwgMSwgMjI1LCAyMjUsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyMjUsIAotICAgIDIyNSwgMiwgMjMwLCAyMjksIDEwMywgMzMsIDYsIDEsIDI1NSwgMjksIDE2MiwgMzMsIDQsIDEsIDI1NSwgMjksIDE2MiwgCi0gICAgMzMsIDYsIDEsIDI0NSwgOTEsIDIsIDI0OCwgNDcsIDMzLCA0LCAxLCAyNDUsIDkxLCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgCi0gICAgMjE3LCAyNCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDIxNywgMjQsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTgsIDEyMywgCi0gICAgNjksIDMzLCA0LCAxLCAyMTgsIDEyMywgNjksIDMzLCA2LCAxLCAyMTgsIDEyMywgMTA0LCAyLCA5MSwgMzMsIDQsIDEsIAotICAgIDIxOCwgMTIzLCAxMDQsIDIsIDkxLCAzMywgNiwgMSwgMjQyLCA1NiwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI0MiwgNTYsIAotICAgIDIsIDI0OCwgNDcsIDMzLCA2LCAyNywgMjE3LCAyNCwgMjE1LCAxNzksIDMzLCA0LCAyNywgMjE3LCAyNCwgMjE1LCAxNzksIAotICAgIDMzLCA2LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI1MCwgMTQwLCAyLCAyNDgsIDQ3LCAzMywgNiwgMSwgCi0gICAgMjUwLCAxNDAsIDIsIDY3LCA5MSwgMzMsIDQsIDEsIDI1MCwgMTQwLCAyLCA2NywgOTEsIDMzLCA2LCAxLCAyMjAsIDM1LCAKLSAgICAzMywgNCwgMSwgMjIwLCAzNSwgMzMsIDYsIDEsIDI1NSwgMjksIDI1MCwgMTM5LCAzMywgNCwgMSwgMjU1LCAyOSwgMjUwLCAKLSAgICAxMzksIDMzLCA2LCAxLCAyNTUsIDI5LCAyNTAsIDE0MCwgMiwgMjQ4LCA0NywgMzMsIDQsIDEsIDI1NSwgMjksIDI1MCwgCi0gICAgMTQwLCAyLCAyNDgsIDQ3LCAzMywgMSwgMjI2LCA2MiwgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTU0LCAzMywgNCwgCi0gICAgMSwgMjEwLCA3NSwgMiwgMjUxLCAxNTQsIDMzLCA2LCAxLCAyMzUsIDE5LCAyLCAxMDMsIDMzLCA0LCAxLCAyMzUsIDE5LCAyLCAKLSAgICAxMDMsIDMzLCA2LCAxLCAyNDUsIDE4MywgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDI0NSwgMTgzLCAyLCAyMTcsIDc4LCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDIsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAxMDMsIDMzLCA2LCAxLCAyNDUsIDE1OSwgCi0gICAgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDI0NSwgMTU5LCAyLCAyMTcsIDc4LCAzMywgNiwgMSwgMjM0LCAxMzMsIDI1MCwgMTM5LCAKLSAgICAzMywgNCwgMSwgMjM0LCAxMzMsIDI1MCwgMTM5LCAzMywgNiwgMSwgMjQ1LCAxNjgsIDIsIDIxNywgNzgsIDMzLCA0LCAxLCAKLSAgICAyNDUsIDE2OCwgMiwgMjE3LCA3OCwgMzMsIDQsIDEsIDIyNiwgNjIsIDMzLCA2LCAxLCAxMTYsIDIsIDI1MSwgMTU0LCAzMywgCi0gICAgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NCwgMzMsIDYsIDEsIDExNiwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMTE2LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAyNywgMTE2LCAyMzYsIDY3LCAzMywgNCwgMjcsIDExNiwgMjM2LCA2NywgMzMsIDYsIDEsIDIzNiwgNjgsIAotICAgIDIsIDI1MSwgMTU0LCAzMywgNCwgMSwgMjM2LCA2OCwgMiwgMjUxLCAxNTQsIDMzLCA2LCAxLCAyMjEsIDE5NywgMzMsIDQsIAotICAgIDEsIDIyMSwgMTk3LCAzMywgNiwgMSwgMjIxLCAxOTgsIDIsIDI0OCwgOSwgMzMsIDQsIDEsIDIyMSwgMTk4LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTAsIDc1LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAKLSAgICAyMTAsIDk1LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTAsIDk1LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAyNTUsIDI5LCAyNDYsIAotICAgIDQ0LCAzMywgNCwgMSwgMjU1LCAyOSwgMjQ2LCA0NCwgMzMsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgMzMsIDQsIAotICAgIDEsIDI0MCwgMTYxLCAyLCAyMzEsIDIzNywgMzMsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyNDAsIAotICAgIDE2MSwgMiwgMjQ4LCA5LCAzMywgNiwgMSwgMTQ0LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAxNDQsIDIsIDI0OCwgOSwgMzMsIAotICAgIDYsIDEsIDI1MiwgMTQyLCA3OCwgMzMsIDQsIDEsIDI1MiwgMTQyLCA3OCwgMzMsIDYsIDEsIDI1MiwgMTQyLCAxNDQsIDIsIAotICAgIDI0OCwgOSwgMzMsIDQsIDEsIDI1MiwgMTQyLCAxNDQsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDE2MCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNCwgMSwgMTYwLCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM3LCAzMywgNCwgMSwgMTA0LCAyLCAyMzEsIAotICAgIDIzNywgMzMsIDYsIDEsIDEwNCwgMiwgMjQ4LCA5LCAzMywgNCwgMSwgMTA0LCAyLCAyNDgsIDksIDMzLCA2LCAxLCAxMDQsIAotICAgIDIsIDUyLCAxNDIsIDMzLCA0LCAxLCAxMDQsIDIsIDUyLCAxNDIsIDMzLCA2LCAxLCAyNTAsIDE0MCwgMiwgMjQ4LCA5LCAzMywgCi0gICAgNCwgMSwgMjUwLCAxNDAsIDIsIDI0OCwgOSwgMzMsIDYsIDEsIDI0MiwgMjQ0LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjQyLCAKLSAgICAyNDQsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAyMTEsIDI4LCAyLCAyNDgsIDksIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNDgsIAotICAgIDksIDMzLCA2LCAxLCAyNDIsIDI0NCwgMiwgMjE4LCAxMDUsIDIyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDI0NCwgMiwgMjE4LCAKLSAgICAxMDUsIDIyLCAxMDMsIDMzLCA2LCAxLCAyNDIsIDU2LCAyLCAxMDMsIDMzLCA0LCAxLCAyNDIsIDU2LCAyLCAxMDMsIDMzLCAKLSAgICA2LCAxLCAyNDIsIDU2LCAyLCA5MSwgMzMsIDQsIDEsIDI0MiwgNTYsIDIsIDkxLCAzMywgNiwgMSwgMjM0LCAyMCwgMjQ4LCAKLSAgICA5OCwgMzMsIDQsIDEsIDIzNCwgMjAsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDcsIDE3MCwgMzMsIDQsIDEsIAotICAgIDIzNCwgMjAsIDI0NywgMTcwLCAzMywgNiwgMSwgMjM0LCAyMCwgMjEwLCAyNywgMzMsIDQsIDEsIDIzNCwgMjAsIDIxMCwgCi0gICAgMjcsIDMzLCA2LCAxLCAyMzQsIDIwLCAyNDYsIDM4LCAzMywgNCwgMSwgMjM0LCAyMCwgMjQ2LCAzOCwgMzMsIDYsIDEsIAotICAgIDIzNCwgMjAsIDIzMiwgMTkzLCAzMywgNCwgMSwgMjM0LCAyMCwgMjMyLCAxOTMsIDMzLCA2LCAxLCAyMzQsIDIwLCAyMjgsIAotICAgIDE4MywgMzMsIDQsIDEsIDIzNCwgMjAsIDIyOCwgMTgzLCAzMywgNiwgMSwgMjM0LCAyMCwgMjE5LCAxMTEsIDMzLCA0LCAxLCAKLSAgICAyMzQsIDIwLCAyMTksIDExMSwgMzMsIDYsIDEsIDIzNCwgMjAsIDIxNiwgNjEsIDMzLCA0LCAxLCAyMzQsIDIwLCAyMTYsIAotICAgIDYxLCAzMywgNiwgMSwgMjIzLCA1MiwgMjEwLCA5NCwgMzMsIDQsIDEsIDIyMywgNTIsIDIxMCwgOTQsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDE4MywgMiwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxODMsIDIsIDEwMywgMzMsIDYsIDEsIDIzMywgNCwgMzMsIDQsIDEsIAotICAgIDIzMywgNCwgMzMsIDYsIDEsIDIyMywgNDIsIDMzLCA0LCAxLCAyMjMsIDQyLCAzMywgNiwgMSwgMjExLCA5MiwgMzMsIDQsIAotICAgIDEsIDIxMSwgOTIsIDMzLCA2LCAxLCAyMjQsIDkxLCAzMywgNCwgMSwgMjI0LCA5MSwgMzMsIDYsIDEsIDIxMiwgMjIsIDMzLCAKLSAgICA0LCAxLCAyMTIsIDIyLCAzMywgNiwgMSwgMjU0LCAxNzUsIDE3NiwgMzMsIDQsIDEsIDI1NCwgMTc1LCAxNzYsIDMzLCA2LCAKLSAgICAxLCAyNDUsIDE4MywgMiwgMjMwLCAyMjksIDEwMywgMzMsIDQsIDEsIDI0NSwgMTgzLCAyLCAyMzAsIDIyOSwgMTAzLCAzMywgCi0gICAgNiwgMSwgMjQ1LCAxNTksIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyNDUsIDE1OSwgMiwgMjMwLCAyMjksIDEwMywgCi0gICAgMzMsIDYsIDEsIDIyNSwgMjI1LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjI1LCAyMjUsIDIsIDI0OCwgNDcsIDMzLCA2LCAxLCAKLSAgICAyMjAsIDM2LCAyLCAyNDgsIDQ3LCAzMywgNCwgMSwgMjIwLCAzNiwgMiwgMjQ4LCA0NywgMTUwLCA2LCAxLCAyNTMsIDE3MiwgCi0gICAgMTUwLCA2LCAxLCAyNTIsIDQ3LCAxNTAsIDYsIDEsIDI0MiwgMjEwLCAxNTAsIDYsIDEsIDI0OCwgMjI5LCAxNTAsIDYsIDEsIAotICAgIDI0NSwgMjIxLCAxNTAsIDYsIDEsIDIxMCwgMTE2LCAxNTAsIDYsIDEsIDI0NSwgMjA1LCAxNTAsIDYsIDEsIDI0NSwgNzMsIAotICAgIDE1MCwgNiwgMSwgMTEyLCAxNTAsIDYsIDEsIDIxMCwgNzQsIDE1MCwgNiwgMSwgMjM1LCAyMzQsIDE1MCwgNiwgMSwgMjMyLCAKLSAgICAxOTYsIDE1MCwgNiwgMSwgMjExLCAxNjAsIDE1MCwgNiwgMSwgMjUxLCA0MSwgMTUwLCA2LCAxLCAyMzQsIDE3MSwgMTUwLCAKLSAgICA2LCAxLCAyNDEsIDc1LCAxNTAsIDYsIDEsIDIzNSwgMTQ3LCAxNTAsIDYsIDEsIDI0MiwgMjUzLCAxNTAsIDYsIDEsIDI1MCwgCi0gICAgMTM0LCAxNTAsIDYsIDEsIDIzMSwgNjMsIDE1MCwgNiwgMSwgMjExLCA4LCAxNTAsIDYsIDEsIDIyOCwgNDQsIDE1MCwgNiwgCi0gICAgMSwgMjIwLCAxMDQsIDE1MCwgNiwgMSwgMjEzLCAxMzgsIDE1MCwgNiwgMSwgMjUwLCAxNjUsIDE1MCwgNiwgMSwgMjI1LCAKLSAgICAyMDgsIDE1MCwgNiwgMSwgMjM1LCAxMTYsIDE1MCwgNiwgMSwgMjA1LCAxNTAsIDYsIDEsIDIyMSwgMTYzLCAxNTAsIDYsIDEsIAotICAgIDIxMywgMTc5LCAxNTAsIDYsIDEsIDIxNiwgNjMsIDE1MCwgNiwgMSwgMjIzLCA5OCwgMTUwLCA2LCAxLCAyNDksIDI0NiwgCi0gICAgMTUwLCA2LCAxLCAyMTAsIDI0OSwgMTUwLCA2LCAxLCAyMjUsIDQ5LCAxNTAsIDYsIDEsIDIzNCwgMTgyLCAxNTAsIDYsIDEsIAotICAgIDIyNiwgMjI2LCAxNTAsIDYsIDEsIDI0NCwgMTUwLCAxNTAsIDU4LCAxLCA0MywgMTYzLCAyMjIsIDIzNiwgMTUwLCAyNTQsIAotICAgIDY1LCAxNTAsIDI0NSwgMTYyLCA3OSwgMTUwLCAyNDUsIDM5LCA3OSwgMTUwLCAyNDksIDIyNywgMTUwLCAyMjQsIDE2LCA3OSwgCi0gICAgMTUwLCAyNTUsIDMwLCA3OSwgMTUwLCA0LCAxLCAyNTMsIDE3MiwgMTUwLCA0LCAxLCAyNTIsIDQ3LCAxNTAsIDQsIDEsIAotICAgIDI0MiwgMjEwLCAxNTAsIDQsIDEsIDI0OCwgMjI5LCAxNTAsIDQsIDEsIDI0NSwgMjIxLCAxNTAsIDQsIDEsIDIxMCwgMTE2LCAKLSAgICAxNTAsIDQsIDEsIDI0NSwgMjA1LCAxNTAsIDQsIDEsIDI0NSwgNzMsIDE1MCwgNCwgMSwgMTEyLCAxNTAsIDQsIDEsIDIxMCwgCi0gICAgNzQsIDE1MCwgNCwgMSwgMjM1LCAyMzQsIDE1MCwgNCwgMSwgMjMyLCAxOTYsIDE1MCwgNCwgMSwgMjExLCAxNjAsIDE1MCwgCi0gICAgNCwgMSwgMjUxLCA0MSwgMTUwLCA0LCAxLCAyMzQsIDE3MSwgMTUwLCA0LCAxLCAyNDEsIDc1LCAxNTAsIDQsIDEsIDIzNSwgCi0gICAgMTQ3LCAxNTAsIDQsIDEsIDI0MiwgMjUzLCAxNTAsIDQsIDEsIDI1MCwgMTM0LCAxNTAsIDQsIDEsIDIzMSwgNjMsIDE1MCwgCi0gICAgNCwgMSwgMjExLCA4LCAxNTAsIDQsIDEsIDIyOCwgNDQsIDE1MCwgNCwgMSwgMjIwLCAxMDQsIDE1MCwgNCwgMSwgMjEzLCAKLSAgICAxMzgsIDE1MCwgNCwgMSwgMjUwLCAxNjUsIDE1MCwgNCwgMSwgMjI1LCAyMDgsIDE1MCwgNCwgMSwgMjM1LCAxMTYsIDE1MCwgCi0gICAgNCwgMSwgMjA1LCAxNTAsIDQsIDEsIDIyMSwgMTYzLCAxNTAsIDQsIDEsIDIxMywgMTc5LCAxNTAsIDQsIDEsIDIxNiwgNjMsIAotICAgIDE1MCwgNCwgMSwgMjIzLCA5OCwgMTUwLCA0LCAxLCAyNDksIDI0NiwgMTUwLCA0LCAxLCAyMTAsIDI0OSwgMTUwLCA0LCAxLCAKLSAgICAyMjUsIDQ5LCAxNTAsIDQsIDEsIDIzNCwgMTgyLCAxNTAsIDQsIDEsIDIyNiwgMjI2LCAxNTAsIDQsIDEsIDI0NCwgMTUwLCAKLSAgICAxNTAsIDQsIDI3LCAyNDUsIDIyMiwgMjEwLCAyNDksIDE1MCwgMjQzLCAyMzYsIDIxOCwgMTMxLCAxNTAsIDI0MCwgMTc1LCAKLSAgICAxNTAsIDI0NiwgMTAzLCA1MCwgOTQsIDI1NSwgMjQsIDI0NSwgNjUsIDk0LCAyNTUsIDI0LCAyMjEsIDE2NCwgOTQsIDI1NSwgCi0gICAgMjQsIDIyMCwgOTAsIDk0LCAyNTUsIDI0LCAyMTAsIDEwNCwgMjI0LCA3NCwgOTQsIDI1NSwgMjQsIDIxMCwgMTA0LCAyNDMsIAotICAgIDEzMiwgOTQsIDI1NSwgMjQsIDIxNiwgNzYsIDk0LCAyNTUsIDI0LCAyMjMsIDUwLCA5NCwgMjU1LCAyNCwgMjEwLCAxMDMsIAotICAgIDk0LCAyNTUsIDI0LCAyMjUsIDI0OSwgOTQsIDI1NSwgMjQsIDIxMSwgMjAsIDk0LCAyNTUsIDI0LCAyMTYsIDIxNSwgOTQsIAotICAgIDI1NSwgMjQsIDI0MywgNDgsIDk0LCAyNTUsIDI0LCAyNDMsIDQ5LCAyMzAsIDc0LCA5NCwgMjU1LCAyNCwgMjQzLCA0NiwgCi0gICAgOTQsIDI1NSwgMjQsIDIyNCwgNzUsIDIyNiwgMjAsIDk0LCAyNTUsIDI0LCAyMTYsIDI1NCwgMjQzLCA2MywgOTQsIDI1NSwgCi0gICAgMjQsIDIyNSwgMjMwLCA5NCwgMjU1LCAyNCwgMjUzLCAyMDgsIDI0MiwgNDgsIDk0LCAyNTUsIDI0LCAyMzAsIDg0LCA5NCwgCi0gICAgMjU1LCAyNCwgMjMxLCAyMTMsIDk0LCAyNTUsIDI0LCAyMzEsIDU0LCA5NCwgMjU1LCAyNCwgMjMxLCA1NSwgMjM0LCAxODMsIAotICAgIDk0LCAyNTUsIDI0LCAyNDgsIDE3MSwgOTQsIDI1NSwgMjQsIDIyNCwgODYsIDk0LCAyNTUsIDI0LCAyMTYsIDI1NCwgMjI0LCAKLSAgICA3MCwgOTQsIDI1NSwgMjQsIDIxMSwgMzAsIDI1MiwgNDgsIDIxMCwgMjMwLCA5NCwgMjU1LCAyNCwgMjI2LCAyMTEsIDk0LCAKLSAgICAyNTUsIDI0LCAyMzYsIDI2LCA5NCwgMjU1LCAyNCwgMjQ4LCA3OCwgOTQsIDI1NSwgMjQsIDIxMCwgMzMsIDk0LCAxNjQsIAotICAgIDIzMSwgMTQ4LCAyNTAsIDQzLCA5NCwgMjI1LCAxNCwgMjIwLCAzOCwgOTQsIDIyNSwgMTQsIDI0MiwgMSwgMjIxLCAxNjQsIAotICAgIDk0LCAyMjUsIDE0LCAyNDIsIDEsIDIyNSwgMjQzLCA5NCwgMjI1LCAxNCwgMjQyLCAxLCAyMjQsIDc5LCA5NCwgMjI1LCAxNCwgCi0gICAgMjQxLCAxNjUsIDk0LCAyMjUsIDE0LCAyMTUsIDE3NywgOTQsIDIyNSwgMTQsIDIyMSwgMTY0LCA5NCwgMjI1LCAxNCwgMjI1LCAKLSAgICAyNDMsIDk0LCAyMjUsIDE0LCAyMjQsIDc5LCA5NCwgMjI1LCAxNCwgMjQxLCA2OCwgOTQsIDIyNSwgMTQsIDI0MSwgNjksIAotICAgIDI0MiwgMywgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTQsIDIyNCwgMjAsIDk0LCAyMjUsIDE0LCAyNDgsIDIxNiwgMTc3LCAKLSAgICAyMzEsIDE3NiwgOTQsIDIyNSwgMTQsIDIzMSwgNDMsIDk0LCAyMjQsIDE0NCwgMjMxLCAxNzMsIDk0LCAyMjUsIDE0LCAyMjMsIAotICAgIDE3MiwgOTQsIDIyNCwgMTQ0LCAyMjUsIDI1MSwgOTQsIDIyNSwgMTQsIDIyMCwgMjMsIDI0NywgMTI4LCA5NCwgMjI1LCAxNCwgCi0gICAgMjE5LCAxNjEsIDI0NywgMTI4LCA5NCwgMjI0LCAxNDQsIDIxOSwgNTUsIDIyNSwgMjQ1LCA5NCwgMTY0LCAyMTQsIDE2MCwgCi0gICAgMjQ3LCAxMjgsIDk0LCAxNjQsIDIzMiwgMTE0LCAyNDcsIDEyOCwgOTQsIDIyNCwgMTQ0LCAyMjcsIDE5OSwgMjQyLCA0NywgCi0gICAgOTQsIDIyNSwgMTQsIDIyNCwgODAsIDIyNCwgNzQsIDk0LCAxLCAyNTQsIDE3OSwgOTQsIDEsIDI1MiwgMzYsIDk0LCAxLCAKLSAgICAyNDIsIDIwOCwgOTQsIDEsIDI0OCwgMTk3LCA5NCwgMSwgMjQxLCAyNDUsIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAyMTAsIAotICAgIDk3LCA5NCwgMSwgMjQxLCAyMDQsIDk0LCAxLCAyMTYsIDIzMSwgOTQsIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIDIzNSwgMCwgCi0gICAgOTQsIDEsIDIzNSwgMCwgOTQsIDEsIDIzMywgMTAwLCA5NCwgMSwgNDAsIDIzMSwgNzAsIDk0LCAxLCAyMzEsIDcwLCA5NCwgCi0gICAgMSwgNDAsIDIyNywgMTk4LCA5NCwgMSwgMjI3LCAxOTgsIDk0LCAxLCAyMjEsIDI1MSwgOTQsIDEsIDI1MywgMTcwLCA5NCwgCi0gICAgMSwgNDAsIDIyNSwgMjI0LCA5NCwgMSwgMjI1LCAyMjQsIDk0LCAxLCA0MCwgMjE1LCAxODAsIDk0LCAxLCAyMTUsIDE4MCwgCi0gICAgOTQsIDEsIDIyNCwgNDIsIDk0LCAxLCAyMjMsIDcwLCA5NCwgMSwgMjIwLCAyMiwgOTQsIDEsIDIxNywgMzksIDk0LCAyNywgCi0gICAgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCA0LCAyMTAsIDIzMywgOTQsIDI3LCAyMTEsIDYsIDUyLCAKLSAgICAyMTAsIDIzMywgOTQsIDIyNCwgMTQ0LCAyNDMsIDQ4LCA5NCwgMjI0LCAxNDQsIDI0MywgNDYsIDksIDU0LCA1MCwgOSwgNSwgCi0gICAgMjIxLCAyNDQsIDksIDI0NCwgMzgsIDIzMSwgMTU5LCA5LCA1LCAyMjIsIDI1LCA5LCA1LCAyMjEsIDI0NywgMjU0LCA0NSwgCi0gICAgMjQ5LCAxMTcsIDIyMiwgMTk1LCAyNTQsIDQ1LCAyNDQsIDEyLCAyMjIsIDE5NSwgOSwgMjIzLCAxMzcsIDI1NCwgNDUsIAotICAgIDIyNSwgMTg2LCAyMzAsIDE5OCwgNTAsIDI1NCwgNDUsIDIyNSwgMTg2LCAyMTYsIDI0OSwgMjE2LCAxNDksIDUwLCAyNTQsIAotICAgIDIzMCwgNTAsIDksIDI0OSwgMjI3LCA5LCAyNDgsIDE1OCwgMjIwLCAxMzksIDksIDIyNSwgMTYsIDIxMywgMjQxLCA1MCwgOSwgCi0gICAgNSwgMjMwLCAxNzksIDksIDUsIDIyMiwgNSwgMjU0LCAxODEsIDIxMiwgNDUsIDksIDUsIDI1NCwgMTgxLCAyNTMsIDIyOSwgCi0gICAgOSwgNSwgMjIzLCAxNzAsIDI1NCwgMTgwLCA5LCA1LCAyMjMsIDE3OCwgMjU0LCAxNjEsIDI1NCwgMTEyLCA5LCA1LCAyMTcsIAotICAgIDcxLCA5LCA0LCAxMjUsIDIxNywgODEsIDksIDQsIDEyNSwgMjcsIDEwOSwgMiwgMjMzLCAxMDksIDIsIDIxMSwgNDMsIDksIAotICAgIDQsIDEyNSwgMjEwLCAxMDgsIDksIDQsIDI0NCwgMTczLCA5LCA0LCAyNDgsIDE5MiwgOSwgNCwgMjM0LCAyMTEsIDksIDIyMCwgCi0gICAgMTUyLCA5LCAxLCA3OSwgOSwgMjE1LCAyMTIsIDU5LCAyMjQsIDE0NCwgNzksIDksIDIyNCwgMTYsIDc5LCA5LCAxLCAyMzQsIAotICAgIDIxNSwgMjExLCA0MywgOSwgMSwgMjQyLCAyNiwgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNDgsIDksIDEsIDEwOSwgMiwgCi0gICAgMTgyLCA0OCwgOSwgMSwgMjEyLCAzMSwgMiwgMTgyLCA0OCwgOSwgMSwgMTA5LCAyLCAxODIsIDUxLCA5LCAxLCA3NywgMiwgCi0gICAgMTgyLCA0OCwgOSwgMSwgMjU0LCAxNzksIDksIDEsIDI1MiwgNjIsIDksIDEsIDIxNywgOSwgMjMxLCAxNjksIDksIDEsIAotICAgIDIxNywgOCwgOSwgMSwgMjE2LCAxOTMsIDksIDEsIDIzNSwgMTI5LCA5LCAxLCAyNDIsIDQ0LCA5LCAxLCAyMzQsIDEzNSwgOSwgCi0gICAgMSwgMjQ4LCAyMDMsIDksIDEsIDIxNiwgMjAzLCA5LCAxLCAyMjMsIDk4LCA5LCAxLCAyMTAsIDEwOCwgOSwgMSwgMjIxLCAKLSAgICAxNjgsIDksIDEsIDIyMCwgNjEsIDksIDEsIDIyMiwgMjgsIDksIDEsIDI0OCwgMjI0LCA5LCAxLCAyMTcsIDgxLCA5LCAxLCAKLSAgICAyMTAsIDExMSwgOSwgMSwgMjU0LCAyMDUsIDksIDEsIDI0MiwgMjUxLCA5LCAxLCAyMzQsIDE4MSwgMiwgMTEzLCAxNzAsIAotICAgIDQ4LCA5LCAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAxLCAyNDQsIDE3NiwgNzcsIDIsIDIzNSwgMjAwLCAKLSAgICAyMTQsIDEwNSwgOSwgMSwgMjQ0LCAxNzYsIDc3LCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgCi0gICAgMTM0LCAxNzAsIDQ4LCA5LCAyMTcsIDQ0LCA5LCAxLCAyNDQsIDE1MCwgOSwgMSwgMjI0LCA4NCwgOSwgMSwgMjM1LCAwLCA5LCAKLSAgICAxLCAyMzMsIDEwOCwgOSwgMSwgMjMxLCA4MywgOSwgMSwgMjI4LCA2NywgOSwgMSwgMjQxLCAyMjUsIDksIDEsIDIxMiwgMzAsIAotICAgIDksIDEsIDEwOSwgMjMxLCAxOTcsIDksIDEsIDIxMSwgNDMsIDksIDI0NCwgMTcxLCA5LCAyNDgsIDE5MCwgOSwgMjM0LCAKLSAgICAyMDksIDksIDI0NCwgMTczLCA5LCAyNDgsIDE5MiwgOSwgMjM0LCAyMTEsIDksIDIyMCwgOTUsIDksIDIxOCwgNDYsIDksIAotICAgIDIzMSwgMjMxLCA0OCwgOSwgMTgyLCA0OCwgOSwgMTgyLCA1MSwgOSwgMjE4LCA2NiwgMjU0LCAxNzksIDksIDIzNSwgMjAwLCAKLSAgICAyNDgsIDE5MiwgOSwgMTY0LCAyMjgsIDY4LCAyNDIsIDIyNSwgOSwgMjA5LCAyNTUsIDksIDI1LCA1LCA0LCAyMTQsIDEwNiwgCi0gICAgNDgsIDksIDI1LCA1LCAyMzUsIDIwMCwgNCwgMjE0LCAxMDYsIDQ4LCA5LCAyNSwgNSwgNTksIDUxLCA5LCAyMjMsIDUyLCAKLSAgICAyNDgsIDE5MiwgOSwgMjQ0LCAxNzQsIDIsIDExMywgMjQ3LCAxMjYsIDksIDIxMiwgMzIsIDE4MiwgNTEsIDI1NCwgNDUsIAotICAgIDIxLCAyMTAsIDg2LCAyNTQsIDQ1LCAyMSwgMTExLCAyNTQsIDQ1LCAyMSwgMTA1LCAyNTQsIDQ1LCAyMSwgMTU4LCAyNTQsIAotICAgIDQ1LCAyMSwgMTYxLCAyNTQsIDQ1LCAyMSwgMTkwLCAyNTQsIDQ1LCAyMSwgMTk1LCAyNTQsIDQ1LCAyMSwgMTk5LCAyNTQsIAotICAgIDQ1LCAyMSwgMTk2LCAyNTQsIDQ1LCAyMSwgMjAxLCA5LCAyMjUsIDE4NSwgNTAsIDksIDI0OCwgOTEsIDIyMCwgMTM5LCA5LCAKLSAgICAyMTYsIDE0NywgMjIwLCAxMzksIDksIDI0NCwgODksIDIyNSwgMTIsIDIxOCwgMTU4LCA5LCAxLCAyNDcsIDEyNywgMjUyLCAKLSAgICA2MiwgOSwgMSwgMjQ3LCAxMjcsIDIyNCwgODQsIDksIDEsIDIxOCwgMjQsIDI1NCwgMTc5LCA5LCAxLCAxMDksIDIxMiwgNDYsIAotICAgIDksIDEsIDEwOSwgMiwgMjEyLCAzMiwgMTgyLCA0OCwgOSwgMSwgMTA5LCAyLCAyMTIsIDMyLCAxODIsIDUxLCA5LCAxLCAKLSAgICAxMjUsIDI0MiwgMjYsIDksIDEsIDEyNSwgMTgyLCAyNTQsIDE3OSwgOSwgMSwgMTI1LCAxODIsIDIxMiwgMzAsIDksIDEsIAotICAgIDEwNCwgMiwgMTgyLCA0OCwgOSwgMSwgMTI1LCAxODIsIDIxMSwgNDMsIDksIDEsIDIxNSwgMTQ5LCA5LCAxLCAyMTUsIDE0NywgCi0gICAgOSwgMSwgMjUyLCA3MiwgOSwgMSwgMjE3LCA5LCAyLCAyMjIsIDIzNiwgOSwgMSwgMjE3LCA5LCAyLCAxMzQsIDE3MCwgNzIsIAotICAgIDI0NiwgMTExLCA5LCAxLCAyMjUsIDIwOCwgOSwgMSwgMjE3LCA2LCA5LCAxLCAyNTIsIDYwLCA5LCAxLCAxMjIsIDIsIDE4MiwgCi0gICAgNDgsIDksIDEsIDEyMiwgMiwgMTEzLCAxNzAsIDY3LCA0OCwgOSwgMSwgMjI3LCAxNTcsIDksIDEsIDI0NiwgNTEsIDksIDEsIAotICAgIDEyMiwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMTcsIDI3LCA5LCAxLCAyMTcsIDI1LCA5LCAxLCAyNDgsIDEzOCwgOSwgMSwgCi0gICAgMjQ4LCAyMDQsIDIsIDIyMiwgMjM2LCA5LCAxLCAyNDgsIDIwNCwgMiwgNTksIDUxLCA5LCAxLCAyNDgsIDIwNCwgMiwgNTksIAotICAgIDI1MiwgNTEsIDIyLCA0LCAyMTcsIDgxLCA5LCAxLCAyNDgsIDIwOSwgOSwgMSwgMjQ4LCAxNDAsIDksIDEsIDI0NiwgNzgsIAotICAgIDksIDEsIDI0OCwgMjA0LCAyLCAxMzQsIDE3MCwgNzIsIDI0NiwgMTExLCA5LCAxLCAyNDgsIDIwNCwgMiwgMjQ0LCAxOSwgCi0gICAgMTcwLCA0OCwgOSwgMSwgMjIyLCAxNzMsIDksIDEsIDIyMywgOTksIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMjMsIDk5LCAyLCAKLSAgICAyMjIsIDIzNiwgOSwgMSwgMjIzLCA5OSwgMiwgNTksIDUxLCA5LCAxLCAyMjMsIDk5LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDksIAotICAgIDEsIDIyMywgOTksIDIsIDU5LCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAxMTMsIDE3MCwgNDgsIAotICAgIDksIDEsIDIzNSwgMTI2LCA5LCAxLCAyMjMsIDk5LCAyLCAyNDQsIDE5LCAxNzAsIDQ4LCA5LCAxLCAyMjEsIDE2OSwgMiwgCi0gICAgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDksIDEsIDIyMSwgMTY5LCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDIyMSwgMTY5LCAKLSAgICAyLCAxMzQsIDE3MCwgMjUyLCA1MSwgMjIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjIyLCAyOSwgMiwgMTEzLCAxNzAsIDUxLCAKLSAgICA5LCAxLCAyMjIsIDI5LCAyLCAxMzQsIDE3MCwgNDgsIDksIDEsIDIxNywgODIsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgCi0gICAgMjU0LCAyMDYsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxLCAyNDQsIDE1MSwgMiwgCi0gICAgNTksIDIzMCwgMTE0LCA1MSwgOSwgMSwgMjQ0LCAxNTEsIDIsIDU5LCA1MSwgOSwgMSwgMjEzLCAyNDgsIDksIDEsIDI0NCwgCi0gICAgMTUxLCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDIyNSwgMjA2LCA5LCAxLCAyMjQsIDg1LCAyLCA1OSwgNDgsIDksIDEsIAotICAgIDIyNCwgODUsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjM0LCAxODAsIDksIDEsIDIxNywgMjUxLCAyMzUsIDAsIDksIDEsIAotICAgIDIzNSwgMSwgMiwgMjIyLCAyMzYsIDksIDEsIDIzNSwgMSwgMiwgNTksIDQ4LCA5LCAxLCAyMjksIDg0LCA5LCAxLCAyMzUsIAotICAgIDEsIDIsIDEzNCwgMTcwLCA1MSwgOSwgMSwgMjQzLCAxMjksIDksIDEsIDI0MywgMTMwLCAyLCAyMjIsIDIzNiwgOSwgMSwgCi0gICAgMjI5LCA3LCA5LCAxLCAyNDMsIDEzMCwgMiwgMTEzLCAxNzAsIDUxLCA5LCAxLCAyNDIsIDEwOCwgOSwgMSwgMjQzLCAxMzAsIAotICAgIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjMzLCAxMDksIDIsIDQsIDIxNCwgMTA1LCA5LCAxLCAyMzMsIDEwOSwgMiwgNTksIAotICAgIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAxLCAyMzMsIDEwOSwgMiwgMTM0LCAxNzAsIDUxLCA5LCAKLSAgICAxLCAyMjgsIDY4LCAyLCA1OSwgNTEsIDksIDEsIDIyOCwgNjgsIDI0MiwgMjI1LCA5LCAxLCAyMjIsIDIxNiwgOSwgMSwgCi0gICAgMjI4LCA2OCwgMiwgMjIyLCAyMzYsIDksIDEsIDIyOCwgNjgsIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjQxLCAyMjYsIAotICAgIDI0NywgMTQ5LCA5LCAxLCAyMTcsIDI4LCAyLCA1OSwgNDgsIDksIDEsIDI0MSwgMjI2LCAyLCA3NywgNDgsIDksIDEsIDI0MSwgCi0gICAgMjI2LCAyNDIsIDE3OCwgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCAyLCAxODIsIDQ4LCA5LCAxLCAyMTcsIDksIDIzMSwgCi0gICAgMTcwLCAyNDIsIDE3OCwgOSwgMSwgMjEyLCAzMSwgMiwgMjIyLCAyMzYsIDksIDEsIDIzNCwgNzksIDIyNiwgMjM4LCA5LCAxLCAKLSAgICAyMjYsIDIzOCwgOSwgMSwgNjksIDksIDEsIDIxMCwgMjEyLCA5LCAxLCAyMzQsIDc5LCAyMTAsIDIxMiwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgMTEzLCAxNzAsIDQ4LCA5LCAxLCAyMTMsIDI1NSwgOSwgMSwgMjQ0LCAxNzYsIDIxMSwgNDMsIDksIDEsIDc3LCAKLSAgICAyLCAyMTcsIDc4LCA5LCAxLCA3NywgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDIxMiwgMzEsIDIsIDU5LCA0OCwgOSwgMSwgNzYsIAotICAgIDksIDEsIDc3LCAyLCAxMzQsIDE3MCwgNTEsIDksIDEsIDc3LCAyNTIsIDE0MCwgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAKLSAgICAxODIsIDQ4LCA5LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDksIDEsIDI1NCwgMjUyLCA5LCA0LCAxMjUsIDI3LCAyMjIsIDI5LCAKLSAgICAyLCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5NywgOSwgNCwgMTI1LCAyNywgMjI0LCA4NSwgMiwgMjMzLCAxMDksIDIsIAotICAgIDEwOSwgMjMxLCAxOTcsIDksIDQsIDEyNSwgNjYsIDY1LCAxNywgOSwgNCwgMTI1LCAyMzMsIDEwOSwgMjU0LCAxNzksIDksIAotICAgIDQsIDEyNSwgMjM1LCAxMjksIDksIDQsIDEyNSwgMTM0LCAyNDcsIDEyNiwgOSwgNCwgMTI1LCAyMjEsIDE2OCwgOSwgMjQ1LCAKLSAgICAxNTEsIDY0LCAyNTMsIDE3NCwgOSwgMjE4LCAxNTQsIDY0LCAyMjIsIDE0MCwgMjQ1LCAxODMsIDI0MSwgMTYyLCA5LCA0LCAKLSAgICAxMjUsIDIyMiwgMTg1LCAyMTAsIDg2LCA5LCA0LCAxMjUsIDIxNCwgMTU5LCAyMjMsIDExOCwgMjEwLCA4NiwgOSwgNCwgCi0gICAgMTI1LCAyNDcsIDEyNywgMjQxLCAyNDMsIDY0LCAyMzQsIDEzNSwgOSwgNCwgMTI1LCA2NiwgNTMsIDE3LCA5LCA0LCAxMjEsIAotICAgIDIyMSwgMTY4LCA5LCA0LCAxMjUsIDIzMSwgMjMyLCA5LCA0LCAyMTIsIDMwLCA5LCA0LCAyMTEsIDQzLCA5LCA0LCAxMjUsIAotICAgIDIxMSwgNDMsIDksIDQsIDEyNSwgMjI4LCA2NywgOSwgMjI1LCA0NCwgNjQsIDIyMiwgMTUsIDksIDI0NSwgMTYwLCAyNTAsIAotICAgIDE4MywgMTIxLCAyMTgsIDEzMSwgOSwgMjQ1LCAxNjAsIDI1MCwgMTgzLCAxMjUsIDIxOCwgMTMxLCA5LCAyMjIsIDE4NSwgCi0gICAgMTI1LCAyMTgsIDEzMiwgMiwgMjQ0LCAxMTIsIDI1MCwgMTgyLCA5LCA0LCAxMjEsIDIzMSwgODMsIDksIDEsIDI0OCwgMjA0LCAKLSAgICAyLCAyMzUsIDIwMCwgMjE0LCAxMDUsIDksIDEsIDIyMywgOTksIDIsIDIzNSwgMjAwLCAyMTQsIDEwNSwgMjQ1LCAzMCwgCi0gICAgMjU0LCA0NSwgMjEsIDIxMCwgODYsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxMTEsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAKLSAgICAxMDUsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxNTgsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxNjEsIDI0NSwgMzAsIDI1NCwgCi0gICAgNDUsIDIxLCAxOTAsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxOTUsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAxOTksIDI0NSwgCi0gICAgMzAsIDI1NCwgNDUsIDIxLCAxOTYsIDI0NSwgMzAsIDI1NCwgNDUsIDIxLCAyMDEsIDksIDEsIDIyMCwgNjIsIDIsIDU5LCAKLSAgICA1MSwgOSwgMSwgMjQ4LCAyMjUsIDIsIDU5LCA1MSwgOSwgMSwgMjQyLCAyNTIsIDIsIDU5LCA1MSwgOSwgNSwgMjE5LCAxNjAsIAotICAgIDI1NCwgMTM0LCA5LCA1LCAyMTksIDE2MCwgMjI0LCAyMzgsIDIzMSwgNjMsIDksIDEsIDI0MSwgMjI2LCAyLCAyMzUsIDIwMCwgCi0gICAgMjE0LCAxMDUsIDE4MywgMjQ1LCAxNTEsIDY0LCAyMjYsIDE4LCAxODMsIDIxOCwgMjAsIDI0MywgMjM2LCAyMTgsIDEzMSwgCi0gICAgMTgzLCAyMTgsIDY4LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDE4MywgMjE4LCAyMCwgMjQ5LCAyMzQsIDE4MywgMjE4LCA2OCwgCi0gICAgMjQ5LCAyMzQsIDE4MywgMjAzLCAyNDksIDIzNCwgMTgzLCAyNDksIDIzNSwgMjE5LCAxMDgsIDIzMywgNTIsIDE4MywgMjQ5LCAKLSAgICAyMzUsIDIxOSwgMTA4LCAyMjIsIDI1NCwgMTgzLCAyMTgsIDIwLCAyNDksIDIzNSwgMjE5LCAxMDgsIDIzMywgNTIsIDE4MywgCi0gICAgMjE4LCA2OCwgMjQ5LCAyMzUsIDIxOSwgMTA4LCAyMjIsIDI1NCwgMTgzLCAyNDksIDE4OCwgMTgzLCAyNDIsIDgsIDIyNiwgCi0gICAgMjU0LCAxODMsIDI0MiwgOCwgMjMxLCA0MSwgMTgzLCAyNDIsIDgsIDI1MywgMjI2LCAxODMsIDI1NSwgMzAsIDc5LCAxODMsIAotICAgIDEsIDI1NCwgMTgzLCAxODMsIDEsIDIxOCwgMjQsIDI1NCwgMTgzLCAxODMsIDEsIDI1MiwgMzMsIDE4MywgMSwgMjQzLCAKLSAgICAxMjAsIDE4MywgMSwgMjQzLCAxMjEsIDI0MywgOTgsIDE4MywgMSwgMjQ4LCAyMDAsIDE4MywgMSwgMjQ3LCAxMjcsIDI0OCwgCi0gICAgMjAxLCAyMjIsIDIzMiwgMTgzLCAxLCAyNDEsIDI0NSwgMTgzLCAxLCAyMTIsIDMwLCAxODMsIDEsIDIxMCwgMTA4LCAxODMsIAotICAgIDEsIDI0MSwgMjAyLCAxODMsIDEsIDIxNiwgMjI3LCAxODMsIDEsIDIxNiwgMjI4LCAyNDMsIDk4LCAxODMsIDEsIDIxMCwgCi0gICAgMTk5LCAxODMsIDEsIDIxMCwgMjAwLCAyNDEsIDI0NSwgMTgzLCAxLCAyMzQsIDIzMSwgMTgzLCAxLCAyMzMsIDEwNywgMTgzLCAKLSAgICAxLCAyMzAsIDE5NSwgMTgzLCAxLCAyMjcsIDE5OCwgMTgzLCAxLCAyMjAsIDE0NSwgMTgzLCAxLCA0MCwgMjIwLCAxNDUsIAotICAgIDE4MywgMSwgNzYsIDE4MywgMSwgMjI1LCAyMjQsIDE4MywgMSwgMjIzLCA1MiwgMjI1LCAyMjQsIDE4MywgMSwgMjIyLCAyNiwgCi0gICAgMTgzLCAxLCAyMjQsIDc4LCAxODMsIDEsIDIyMiwgMjMyLCAxODMsIDEsIDIyMCwgMjIsIDE4MywgMSwgMjE3LCAzNywgMTgzLCAKLSAgICAxLCAyMjUsIDE3MiwgMjUyLCAyMCwgMTgzLCAxLCAyMjUsIDE3MiwgMjQyLCAyNDksIDE4MywgMSwgMjI1LCAxNzIsIDI0OCwgCi0gICAgMjgsIDE4MywgMjI0LCAxNTQsIDQ4LCAxODMsIDIyNCwgMTU0LCA1MSwgMTgzLCAyMjQsIDE1NCwgMjQ2LCAxMjUsIDE4MywgCi0gICAgMjEwLCAxNywgNDgsIDE4MywgMjEwLCAxNywgNTEsIDE4MywgMjEwLCAxNywgMjQ2LCAxMjUsIDE4MywgMjIzLCAxMzQsIDQ4LCAKLSAgICAxODMsIDIyMywgMTM0LCA1MSwgMTgzLCAyNDYsIDEyNiwgMjEwLCAyNCwgMjQxLCA1MSwgMTgzLCAyNDYsIDEyNiwgMjEwLCAKLSAgICAyNCwgMjU0LCAxMTMsIDE4MywgMjQxLCAyNDgsIDQ4LCAxODMsIDI0MSwgMjQ4LCA1MSwgMTgzLCAyNDEsIDI0NywgMjQ2LCAKLSAgICAxMjUsIDE4MywgMjQ1LCA4NywgNDgsIDE4MywgMjQ1LCA4NywgNTEsIDE4MywgMjIyLCAxMDksIDE4MywgMjQ0LCAxNDQsIAotICAgIDI0NywgMTI4LCAxODMsIDIyMywgMjUxLCAxODMsIDIyMiwgMTM2LCAxODMsIDExMywgNjcsIDE3MCwgNDgsIDE4MywgMTEzLCAKLSAgICA2NywgMTcwLCA1MSwgMTgzLCAxMzQsIDE3MCwgNDgsIDE4MywgMTM0LCAxNzAsIDUxLCAxODMsIDIyNiwgMjUyLCAyMzIsIAotICAgIDIyMCwgNDgsIDE4MywgMjI2LCAyNTIsIDIzMiwgMjIwLCA1MSwgMTgzLCAyMzAsIDYxLCAxODMsIDI1MiwgMTM5LCAxODMsIAotICAgIDEsIDIxOSwgNTEsIDIxMCwgODAsIDE4MywgMSwgMjE5LCA1MSwgMjM0LCAxMjgsIDE4MywgMSwgMjE5LCA1MSwgMjQ0LCAKLSAgICAxNjIsIDksIDEsIDI1MiwgNjMsIDIsIDEzNCwgMTcwLCAyNDEsIDEsIDUxLCA5LCAxLCAyNTIsIDYzLCAyLCA1OSwgMjUyLCAKLSAgICA1MSwgMjIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgCi0gICAgOSwgMSwgMjUyLCA2MywgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCAyNTIsIDUxLCAyMiwgMTEzLCAxNzAsIDQ4LCAKLSAgICA5LCAxLCAyNTIsIDYzLCAyLCAxMTMsIDE3MCwgMjUyLCA1MSwgMjIsIDU5LCA0OCwgOSwgMSwgMjUyLCA2MywgMiwgMjM1LCAKLSAgICAyMDAsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMjUyLCA2MywgMiwgNCwgMjE0LCAxMDUsIDksIDEsIDEyMiwgMiwgMTEzLCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAxMjIsIDIsIDEzNCwgMTcwLCAyMjUsIDEwLCAyMTQsIDE1MywgNTEsIDksIDEsIDI0OCwgMjA0LCAKLSAgICAyLCAxMTMsIDE3MCwgMjEzLCAxODksIDI1MiwgNTEsIDIyLCA0LCAyMTcsIDgxLCA5LCAxLCAyNDgsIDIwNCwgMiwgMjM1LCAKLSAgICAyMDAsIDQsIDIxNCwgMTA2LCA1MSwgOSwgMSwgMjIzLCA5OSwgMiwgOTEsIDksIDEsIDIyMSwgMTY5LCAyLCAyNDQsIDE5LCAKLSAgICAxNzAsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTEzLCAxNzAsIDQ4LCA5LCAxLCAyNTQsIDIwNiwgMiwgMTM0LCAxNzAsIAotICAgIDIyNSwgMTAsIDI0NiwgMTEyLCA0OCwgOSwgMSwgMjU0LCAyMDYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDksIDEsIAotICAgIDI0NCwgMTUxLCAyLCAxMTMsIDE3MCwgNTEsIDksIDEsIDI0NCwgMTUxLCAyLCAxMzQsIDE3MCwgMjI1LCAxMCwgMjE0LCAKLSAgICAxNTMsIDUxLCA5LCAxLCAyMzQsIDE4MSwgMiwgNTksIDQ4LCA5LCAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDQ4LCA5LCAKLSAgICAxLCAyMzQsIDE4MSwgMiwgMTM0LCAxNzAsIDIyNSwgMTAsIDIxNCwgMTUzLCA1MSwgOSwgMSwgNjYsIDIsIDU5LCA0OCwgOSwgCi0gICAgMSwgNjYsIDIsIDU5LCA1MSwgOSwgMSwgMjI4LCA2OCwgMiwgMTEzLCAxNzAsIDUxLCA5LCAxLCAyMjgsIDY4LCAyLCA0LCAKLSAgICAyMTcsIDgxLCA5LCAxLCAyMjgsIDY4LCAyLCA0LCAyMTQsIDEwNSwgOSwgMSwgMjMzLCAxMDksIDIsIDEzMCwgOSwgMSwgCi0gICAgMjIzLCA5OSwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCA0OCwgOSwgMSwgMjIzLCA5OSwgMiwgMTgyLCA0OCwgOSwgMSwgMjIxLCAKLSAgICAxNjksIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDksIDEsIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgNTEsIDksIDEsIAotICAgIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgMjIsIDExMywgMjQ3LCAxMjYsIDksIDEsIDIyMSwgMTY5LCAyLCA0LCA5LCAxLCAKLSAgICAyMTcsIDgyLCAyMiwgMTEzLCAyNDcsIDEyNiwgOSwgMSwgMjIzLCA5OSwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgMjIsIDExMywgCi0gICAgMjQ3LCAxMjYsIDksIDEsIDEyMiwgMiwgNCwgOSwgMSwgMjE3LCA4MiwgNDgsIDksIDEsIDEwOSwgMiwgMjQ1LCAzMCwgMjU0LCAKLSAgICA0NSwgMjEsIDExMywgNDgsIDksIDEsIDEwOSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDI0NCwgCi0gICAgMTc2LCA3NywgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDExMywgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjQ1LCAKLSAgICAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDI0NCwgMTc2LCA3NywgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIAotICAgIDI0NCwgMTksIDUxLCA5LCAxLCAyMTIsIDMxLCAyLCAyNDUsIDMwLCAyNTQsIDQ1LCAyMSwgMTEzLCA0OCwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgNDgsIDksIDEsIDc3LCAyNTIsIDE0MSwgMiwgMjQ1LCAzMCwgCi0gICAgMjU0LCA0NSwgMjEsIDExMywgNDgsIDksIDEsIDc3LCAyNTIsIDE0MSwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDEzNCwgCi0gICAgNDgsIDksIDEsIDEyMiwgMiwgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDI0NCwgMTksIDUxLCA5LCAxLCAyMjEsIDE2OSwgMiwgCi0gICAgMjQ1LCAzMCwgMjU0LCA0NSwgMjEsIDI0NCwgMTksIDQ4LCA5LCAxLCAyMjEsIDE2OSwgMiwgMjM1LCAyMDAsIDIxNCwgMTA1LCAKLSAgICA5LCAxLCAyMzUsIDEsIDIsIDExMywgMTcwLCA0OCwgMjE2LCAyMDYsIDEsIDI0MiwgNTMsIDIxNiwgMjA2LCAxLCAyMjAsIAotICAgIDcwLCAyMTYsIDIwNiwgMSwgMjI4LCA2NiwgMjE2LCAyMDYsIDEsIDIyMywgMTg3LCAyMTYsIDIwNiwgMSwgMjUyLCAxOTcsIAotICAgIDIxNiwgMjA2LCAxLCAyMzMsIDEsIDIxNiwgMjA2LCAxLCAyMzUsIDE0LCAyMTYsIDIwNiwgMSwgMjU0LCAxNjgsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTQsIDI1LCAyMTYsIDIwNiwgMSwgMjMxLCA4MiwgMjE2LCAyMDYsIDEsIDI0NCwgMjAyLCAyMTYsIDIwNiwgCi0gICAgMSwgMjQ4LCAzMSwgMjE2LCAyMDYsIDEsIDIxNiwgMjA4LCAyMTYsIDIwNiwgMSwgMjMzLCAxMzcsIDIxNiwgMjA2LCAxLCAKLSAgICAyNDMsIDEzOCwgMjE2LCAyMDYsIDEsIDI0MiwgMTg0LCAyMTYsIDIwNiwgMSwgMjIxLCAxNjcsIDIxNiwgMjA2LCAxLCAyNDgsIAotICAgIDE1NiwgMjE2LCAyMDYsIDEsIDIxMCwgMTAwLCAyMTYsIDIwNiwgMSwgMjE3LCAzOCwgMjE2LCAyMDYsIDEsIDIxMSwgMTAzLCAKLSAgICAyMTYsIDIwNiwgMSwgMjI1LCAyMzcsIDIxNiwgMjA2LCAxLCAyMzUsIDEzNCwgMjE2LCAyMDYsIDEsIDI1MCwgMTQyLCAyMTYsIAotICAgIDIwNiwgMSwgMjE1LCAxNTYsIDIxNiwgMjA2LCAxLCAyNDEsIDE5NSwgMjE2LCAyMDYsIDEsIDIzNCwgMTM3LCAyMTYsIDIwNiwgCi0gICAgMSwgMjE2LCAyMDcsIDIxNiwgMjA2LCAxLCAyMTAsIDExNSwgMjE2LCAyMDYsIDEsIDIyMCwgNjAsIDIxNiwgMjA2LCAxLCAKLSAgICAyMjIsIDMyLCAyMTYsIDIwNiwgMSwgMjQ4LCAyMjcsIDIxNiwgMjA2LCAxLCAxMTIsIDIxNiwgMjA2LCAxLCAyMTAsIDIzLCAKLSAgICAyMTYsIDIwNiwgMSwgMjU0LCAyMDIsIDIxNiwgMjA2LCAxLCAyNDIsIDI1MCwgMjE2LCAyMDYsIDEsIDIyNCwgODgsIDIxNiwgCi0gICAgMjA2LCAxLCAyMTIsIDYzLCAyMTYsIDIwNiwgMjU1LCAzMSwgMjE2LCAyMDYsIDI1NSwgNDcsIDIxNiwgMjA2LCAyNDAsIAotICAgIDEyMSwgMjE2LCAyMDYsIDI0NSwgMjE2LCAyMTYsIDIwNiwgMjE0LCAyMjIsIDIxNiwgMjA2LCAyMjYsIDE4NiwgMjE2LCAKLSAgICAyMDYsIDI0NSwgMjI0LCAyMTYsIDIwNiwgMjQ1LCAyNCwgMjE2LCAyMDYsIDIyNiwgMjUxLCAyMTYsIDIwNiwgMjI3LCAzLCAKLSAgICAyMTYsIDIwNiwgMjE4LCA0NiwgMjE2LCAyMDYsIDEsIDIyOSwgMjMwLCAyMjgsIDE0MiwgMjEsIDIxMCwgODYsIDIyOCwgCi0gICAgMTQyLCAyMSwgMTExLCAyMjgsIDE0MiwgMjEsIDEwNSwgMjI4LCAxNDIsIDIxLCAxNTgsIDIyOCwgMTQyLCAyMSwgMTYxLCAKLSAgICAyMjgsIDE0MiwgMjEsIDE5MCwgMjI4LCAxNDIsIDIxLCAxOTUsIDIyOCwgMTQyLCAyMSwgMTk5LCAyMjgsIDE0MiwgMjEsIAotICAgIDE5NiwgMjI4LCAxNDIsIDIxLCAyMDEsIDIyOCwgMTQyLCAxLCA2MSwgMjI4LCAxNDIsIDEsIDI0NSwgMjE3LCAyMjgsIDE0MiwgCi0gICAgMSwgNzQsIDIyOCwgMTQyLCAxLCA3NiwgMjI4LCAxNDIsIDEsIDY5LCAyMjgsIDE0MiwgMSwgMjI2LCAxODcsIDIyOCwgMTQyLCAKLSAgICAxLCA3OCwgMjI4LCAxNDIsIDEsIDI0OCwgMjE3LCAyMjgsIDE0MiwgMSwgMjMwLCAzMCwgMjI4LCAxNDIsIDEsIDI1MiwgCi0gICAgMTk5LCAyMjgsIDE0MiwgMSwgMTkxLCAyMjgsIDE0MiwgMSwgMjE3LCAxMDYsIDIyOCwgMTQyLCAxLCAyMzUsIDE0NywgMjI4LCAKLSAgICAxNDIsIDEsIDI1MCwgMTY1LCAyMjgsIDE0MiwgMSwgMjQ4LCAyMjksIDIyOCwgMTQyLCAxLCAyMDUsIDIyOCwgMTQyLCAxLCAKLSAgICAyMjIsIDE4MSwgMjI4LCAxNDIsIDEsIDIwNiwgMjI4LCAxNDIsIDEsIDI0MywgODYsIDIyOCwgMTQyLCAxLCAyNDQsIDIwNCwgCi0gICAgMjI4LCAxNDIsIDEsIDE3NiwgMjI4LCAxNDIsIDEsIDIzMywgMTQxLCAyMjgsIDE0MiwgMSwgMjI5LCAyMzQsIDIxMSwgMjIzLCAKLSAgICAyMjgsIDE0MiwgMSwgMTg2LCAyMjgsIDE0MiwgMSwgMjI3LCAxNjksIDIyOCwgMTQyLCAxLCAxOTgsIDIyOCwgMTQyLCAxLCAKLSAgICAxNjIsIDIyOCwgMTQyLCAxLCAyMTIsIDY1LCAyMjgsIDE0MiwgMSwgMTkyLCAyMjgsIDE0MiwgMSwgMjI3LCAxNzAsIDIxMSwgCi0gICAgMjIzLCAyMjgsIDE0MiwgMSwgMjM1LCA2NywgMjM1LCAxNDcsIDIyOCwgMTQyLCAxLCAyMzUsIDY3LCAyNTAsIDE2NSwgMjI4LCAKLSAgICAxNDIsIDEsIDIzNSwgNjcsIDIwNSwgMjI4LCAxNDIsIDM4LCAyMTksIDI1MywgMTI1LCAyMTYsIDMxLCAyMjgsIDE0MiwgMzgsIAotICAgIDIxOSwgMjUzLCAxMjEsIDIxNiwgMzEsIDIyOCwgMTQyLCAzOCwgMjE5LCAyNTMsIDIyMiwgMjMxLCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIwMCwgMjQ4LCA0NiwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMDAsIDEyNSwgMjE2LCAzMSwgMjI4LCAKLSAgICAxNDIsIDM4LCAyMDAsIDEyMSwgMjE2LCAzMSwgMjI4LCAxNDIsIDM4LCAyMDAsIDIyMiwgMjMxLCAyMTYsIDMxLCAyMjgsIAotICAgIDE0MiwgMzgsIDIyOSwgMTk4LCA3OSwgMjI4LCAxNDIsIDM4LCA1MiwgNTksIDQ4LCAyMjgsIDE0MiwgMTI1LCAxMzgsIDI1NCwgCi0gICAgNjUsIDIyOCwgMTQyLCAxMjEsIDEzOCwgMjU0LCA2NSwgMjI4LCAxNDIsIDE2LCAyMjYsIDE4OCwgMjQ4LCA1OCwgMjI4LCAKLSAgICAxNDIsIDE2LCAyNDMsIDg1LCAyMjgsIDE0MiwgMjQ5LCAyMjcsIDIyOCwgMTQyLCAyNDUsIDM5LCA3OSwgMjI4LCAxNDIsIAotICAgIDIzMywgMTE0LCAyMjEsIDI1NCwgMSwgMjU0LCAxODUsIDIyMSwgMjU0LCAxLCAyNTEsIDIzNiwgMjIxLCAyNTQsIDEsIDI0MywgCi0gICAgMTE5LCAyMjEsIDI1NCwgMSwgMjQ4LCAyMDIsIDIyMSwgMjU0LCAxLCAyMzUsIDE1OCwgMjIxLCAyNTQsIDEsIDI1MiwgMTk3LCAKLSAgICAyMjEsIDI1NCwgMSwgMjEwLCA4OSwgMjIxLCAyNTQsIDEsIDIzNSwgMTY2LCAyMjEsIDI1NCwgMSwgMjE2LCA2OCwgMjIxLCAKLSAgICAyNTQsIDEsIDIxMCwgMTgyLCAyMjEsIDI1NCwgMSwgMjM1LCAxNSwgMjIxLCAyNTQsIDEsIDIzMywgMTM0LCAyMjEsIDI1NCwgCi0gICAgMSwgMjMwLCAxOTUsIDIyMSwgMjU0LCAxLCAyMjcsIDE5OCwgMjIxLCAyNTQsIDEsIDIxOSwgMTU4LCAyMjEsIDI1NCwgMSwgCi0gICAgMjM2LCA2LCAyMjEsIDI1NCwgMSwgMjQ0LCAxMjksIDIyMSwgMjU0LCAxLCAyMTUsIDE4MiwgMjIxLCAyNTQsIDEsIDIyNCwgCi0gICAgMTMsIDIyMSwgMjU0LCAxLCAyMjIsIDIzMiwgMjIxLCAyNTQsIDEsIDIyMCwgODcsIDIyMSwgMjU0LCAxLCAyMTcsIDEwMSwgCi0gICAgMjIxLCAyNTQsIDE2NCwgMjM2LCA2LCAyMjEsIDI1NCwgMTY0LCAyMzYsIDUsIDIyMSwgMjU0LCAxNjQsIDIyNiwgMjQ3LCAKLSAgICAyMjEsIDI1NCwgMTY0LCAyNDgsIDIxNSwgMjIxLCAyNTQsIDU4LCAxLCAyNDUsIDExMywgMjEwLCAxODIsIDIyMSwgMjU0LCAKLSAgICAxNjQsIDI0NSwgMTEzLCAyMTAsIDE4MiwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDc2LCAyMjEsIDI1NCwgMjUsIDUsIDc2LCAKLSAgICAyMjEsIDI1NCwgMjUsIDUsIDIyNiwgMTIyLCAyNTUsIDgyLCAyMjEsIDI1NCwgMjUsIDUsIDIwMCwgMjU1LCA4MiwgMjIxLCAKLSAgICAyNTQsIDI1LCA1LCAyNTUsIDgyLCAyMjEsIDI1NCwgMjUsIDUsIDIyNiwgMTIyLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIAotICAgIDYxLCAyMjEsIDI1NCwgMjUsIDUsIDYxLCAyMjEsIDI1NCwgNTgsIDEsIDIxOSwgMjUzLCA2MSwgMjIxLCAyNTQsIDI1LCA1LCAKLSAgICAyMTksIDI1MywgNjEsIDIyMSwgMjU0LCAyNSwgNSwgMjAwLCA2OSwgMjIxLCAyNTQsIDI1LCA1LCA2OSwgMjIxLCAyNTQsIAotICAgIDU4LCAxLCA3NCwgMjIxLCAyNTQsIDI1LCA1LCAyMDAsIDc0LCAyMjEsIDI1NCwgMjUsIDUsIDc0LCAyMjEsIDI1NCwgMjUsIAotICAgIDUsIDc4LCAyMjEsIDI1NCwgMjUsIDUsIDIxOCwgNDYsIDIyMSwgMjU0LCAxNjQsIDIyOSwgOTcsIDIyMSwgMjU0LCAyMjQsIAotICAgIDE0NCwgMjI5LCA5NywgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTQsIDIyNywgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTQsIDEyMiwgCi0gICAgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTIsIDEyMiwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyNTMsIDIwOSwgMjIxLCAyNTQsIAotICAgIDIyNCwgMTQ0LCAyMjAsIDEwLCAyMjEsIDI1NCwgMjU1LCAzMCwgNzksIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjMxLCA3MywgCi0gICAgMjI0LCA0OCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAyMTAsIDMxLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIyNCwgNDgsIDIyMSwgCi0gICAgMjU0LCAyMjQsIDE0NCwgMjEwLCAxMTQsIDIyMSwgMjU0LCAyMjQsIDE0NCwgMjE1LCA5MCwgMjIxLCAyNTQsIDIyNCwgMTQ0LCAKLSAgICAyNTQsIDE3LCAyMjEsIDI1NCwgMjI0LCAxNDQsIDIxOSwgNTUsIDIzMSwgMTUwLCAyMjEsIDI1NCwgMjI0LCAxNDQsIDI1NCwgCi0gICAgMTA4LCAyMzEsIDE4NywgMSwgMjQyLCAzMSwgMjMxLCAxODcsIDEsIDI1NSwgMzQsIDIzMSwgMTg3LCAxLCAyNTQsIDIyNSwgCi0gICAgMjMxLCAxODcsIDEsIDI1NSwgOCwgMjMxLCAxODcsIDEsIDI1NCwgMjE4LCAyMzEsIDE4NywgMSwgMjE0LCAxMjQsIDIzMSwgCi0gICAgMTg3LCAxLCAyNTMsIDE2OCwgMjMxLCAxODcsIDEsIDIzNSwgMTY2LCAyMzEsIDE4NywgMSwgMjUzLCAyMDYsIDIzMSwgMTg3LCAKLSAgICAxLCAyNTQsIDE5MCwgMjMxLCAxODcsIDEsIDI1NCwgMTk1LCAyMzEsIDE4NywgMSwgMjU0LCAxODcsIDIzMSwgMTg3LCAxLCAKLSAgICAyNTQsIDE0NCwgMjMxLCAxODcsIDEsIDI1NCwgMTMxLCAyMzEsIDE4NywgMSwgMjUzLCAyNDUsIDIzMSwgMTg3LCAxLCAyMzYsIAotICAgIDYsIDIzMSwgMTg3LCAxLCAyNTQsIDgwLCAyMzEsIDE4NywgMSwgMjUzLCAyMTYsIDIzMSwgMTg3LCAxLCAyNTQsIDUzLCAKLSAgICAyMzEsIDE4NywgMSwgMjU0LCA0OSwgMjMxLCAxODcsIDEsIDI1MywgMjM5LCAyMzEsIDE4NywgMSwgMjUzLCAyMTQsIDIzMSwgCi0gICAgMTg3LCAxLCAyNDYsIDYzLCAyMzEsIDE4NywgMSwgMjM1LCA4LCAyMzEsIDE4NywgMSwgMjU0LCAyMDUsIDIzMSwgMTg3LCAKLSAgICAyNTQsIDIzMSwgNzksIDIzMSwgMTg3LCAyMTMsIDEzNiwgNzksIDIzMSwgMTg3LCAyNDMsIDYwLCA3OSwgMjMxLCAxODcsIAotICAgIDIyNCwgMTQzLCA5LCAxLCAyNTIsIDYzLCAyLCA0LCAyMTQsIDEwNiwgNTEsIDksIDEsIDE1MSwgMiwgMTEzLCAxNzAsIDQ4LCAKLSAgICA5LCAxLCAyMTcsIDgyLCAyLCAxMTMsIDE3MCwgNDgsIDksIDEsIDI0NCwgMTUxLCAyLCA1OSwgMjUyLCA1MSwgMjIsIDEzNCwgCi0gICAgMTcwLCA0OCwgOSwgMSwgMjI0LCA4NSwgMiwgNTksIDUxLCA5LCAxLCAyMzMsIDEwOSwgMiwgNTIsIDEzMCwgOSwgMSwgNjYsIAotICAgIDIsIDEzNCwgMTcwLCA0OCwgOSwgMSwgNzcsIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgMTgyLCA0OCwgOSwgMSwgNzcsIAotICAgIDIsIDExMywgMTcwLCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA5LCAxLCAyMjMsIDk5LCAyLCAyMzIsIDEyOSwgOSwgMSwgMjEyLCAKLSAgICAzMSwgMiwgNTksIDIxMSwgMjMxLCA5LCAxLCAyMjIsIDIwMywgMjExLCA0MywgOSwgMjQ5LCAxMDcsIDI0NCwgMTczLCA5LCAKLSAgICAyNDksIDEwNywgMjQ4LCAxOTIsIDksIDI0OSwgMTA3LCAyMzQsIDIxMSwgOSwgMjQ5LCAxMDcsIDI0NCwgMTcxLCA5LCAyNDksIAotICAgIDEwNywgMjQ4LCAxOTAsIDksIDI0OSwgMTA3LCAyMzQsIDIwOSwgOSwgMTM4LCAxMjMsIDU5LCA0OCwgOSwgMTM4LCAxMTMsIAotICAgIDE3MCwgNDgsIDksIDEzOCwgMjMyLCAxMzAsIDQ4LCA5LCAxMzgsIDEyMywgNTksIDUxLCA5LCAxMzgsIDExMywgMTcwLCA1MSwgCi0gICAgOSwgMTM4LCAyMzIsIDEzMCwgNTEsIDksIDIwNCwgMjQ0LCAxNzEsIDksIDIwNCwgMjQ4LCAxOTAsIDksIDIwNCwgMjM0LCAKLSAgICAyMDksIDksIDQsIDEyNSwgMjEyLCAzMCwgOSwgMjQ0LCAxNzQsIDIsIDIyMiwgMjM2LCA5LCAyNDQsIDE3NCwgMiwgNTksIAotICAgIDQ4LCA5LCAyMzQsIDIxMiwgMiwgNTksIDUxLCA5LCA0MywgMjU0LCAyLCA0OCwgOSwgNDQsIDI1NCwgMiwgNDgsIDksIDQzLCAKLSAgICAyNTQsIDIsIDUxLCA5LCA0NCwgMjU0LCAyLCA1MSwgOSwgNTIsIDQ0LCAyNTQsIDIsIDQ4LCA5LCA1MiwgNDQsIDI1NCwgMiwgCi0gICAgNzIsIDIsIDI0NywgMTI4LCA5LCA0NCwgMjU0LCAyLCA3MiwgMiwgMjQ3LCAxMjgsIDksIDI0OCwgMTkzLCAyLCAyNDcsIAotICAgIDEyOCwgODQsIDUsIDIzNSwgMjAwLCAyNTEsIDcsIDg0LCA1LCAyNTEsIDcsIDg0LCA1LCAyNTQsIDgzLCA4NCwgNSwgMjEzLCAKLSAgICAxNDcsIDg0LCAxLCAyMTksIDI1MywgNjEsIDg0LCAxLCA2MSwgODQsIDEsIDI1NSwgODIsIDg0LCAxLCA3NCwgODQsIDEsIAotICAgIDIzNiwgNDAsIDg0LCAxLCA2OSwgODQsIDEsIDIxNCwgMTE4LCA4NCwgMSwgMTQ5LCAxNTMsIDg0LCAxLCAxNDksIDE1NiwgCi0gICAgODQsIDEsIDI1MSwgMTAsIDc2LCA4NCwgMSwgMjE5LCAyNTMsIDc2LCA4NCwgMSwgNzYsIDg0LCAxLCAyNTQsIDIxMCwgODQsIAotICAgIDEsIDI1MSwgMTAsIDc4LCA4NCwgMSwgMjE5LCAyNTMsIDc4LCA4NCwgMSwgNzgsIDg0LCAxLCAyNTMsIDIwMCwgODQsIDEsIAotICAgIDE3NiwgODQsIDEsIDIzNCwgMTM4LCA4NCwgMSwgMjQzLCAxNDIsIDg0LCAxLCAyNDMsIDAsIDg0LCAxLCAyMjksIDgyLCA4NCwgCi0gICAgMSwgMjUxLCA0MSwgODQsIDEsIDI1MCwgMTY1LCA4NCwgMSwgMjM1LCAxNDcsIDg0LCAxLCAyMzUsIDEyMCwgODQsIDEsIAotICAgIDIyNywgMTY5LCA4NCwgMSwgMjE1LCAxNTcsIDg0LCAxLCAyMTUsIDE0NSwgODQsIDEsIDI0OCwgMTQzLCA4NCwgMSwgMjQ4LCAKLSAgICAxMjcsIDg0LCAxLCAyMjgsIDExNSwgODQsIDEsIDIxNywgMTA2LCA4NCwgMSwgMjE2LCAyMDksIDg0LCAxLCAyNDgsIDIyOSwgCi0gICAgODQsIDEsIDI0OCwgMzMsIDg0LCAxLCAxOTgsIDg0LCAxLCAyMjgsIDk3LCA4NCwgMSwgMTkxLCA4NCwgMSwgMjI1LCAxNTAsIAotICAgIDg0LCAxLCAyNTIsIDE5OSwgODQsIDEsIDI1MiwgMjYsIDg0LCAxLCAxODYsIDg0LCAxLCAxOTIsIDg0LCAxLCAyMDUsIDg0LCAKLSAgICAxLCAyMjIsIDE4MSwgODQsIDEsIDIzMywgMTQxLCA4NCwgMSwgMjMyLCAxOTAsIDg0LCAxLCAyMzIsIDE4MSwgODQsIDEsIAotICAgIDIxNCwgMjcsIDg0LCAxLCAyMjAsIDEwNCwgODQsIDEsIDIxOCwgMjI1LCA4NCwgMSwgMjA2LCA4NCwgMSwgMTYyLCA4NCwgCi0gICAgMjUsIDUsIDIyNiwgMjM4LCA4NCwgMjUsIDUsIDIyNiwgMTg1LCA4NCwgNSwgMjI3LCAyMDksIDg0LCA1LCAyNTMsIDE4MywgCi0gICAgODQsIDI1LCA1LCAyNTUsIDgyLCA4NCwgMjUsIDUsIDc0LCA4NCwgMjUsIDUsIDIzNiwgNDAsIDg0LCAyNSwgNSwgNjksIDg0LCAKLSAgICAyNSwgNSwgMjE0LCAxMTgsIDg0LCAyNSwgNSwgMTQ5LCAxNTMsIDg0LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgODQsIDI1LCAKLSAgICA1LCAyNTEsIDEwLCA3NiwgODQsIDI1LCA1LCAyMTksIDI1MywgNzYsIDg0LCAyNSwgNSwgNzYsIDg0LCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDg0LCAyNSwgNSwgMjUxLCAxMCwgNzgsIDg0LCAyNSwgNSwgMjE5LCAyNTMsIDc4LCA4NCwgMjUsIDUsIDc4LCA4NCwgCi0gICAgMjUsIDUsIDI1MywgMjAwLCA4NCwgNSwgMjEzLCAxNTIsIDg0LCAyNSwgNSwgMjI0LCAxODgsIDc2LCA4NCwgMjUsIDUsIAotICAgIDI1MywgMTc5LCA4NCwgMjI2LCAyMDgsIDg0LCAyMTgsIDExMywgNSwgMjE0LCAyMTYsIDg0LCAyMTgsIDExMywgNSwgMjU0LCAKLSAgICA4NSwgODQsIDI0MiwgMTQ0LCAyNTUsIDIzLCA4NCwgMjU1LCAxMiwgMjU1LCAyMywgODQsIDI1LCA1LCAyNTEsIDEwLCAyMDAsIAotICAgIDc2LCA4NCwgMjUsIDUsIDIxNCwgMjE0LCA4NCwgMjUsIDUsIDIxNCwgMTE3LCA4NCwgMSwgMjI0LCA5MSwgODQsIDEsIDIzNCwgCi0gICAgMTIxLCA4NCwgMSwgMjQyLCAyMzMsIDg0LCAxLCAyMTAsIDExNiwgODQsIDEsIDI0OCwgMTMyLCA4NCwgMSwgMjIzLCA0MiwgCi0gICAgODQsIDEsIDI0NCwgMjA0LCA4NCwgMSwgMjEwLCAxNjgsIDg0LCAxLCAxNDksIDIyMiwgMTgyLCA4NCwgMSwgMTQ5LCAyMzIsIAotICAgIDE5MSwgODQsIDI1LCA1LCAxNDksIDE1NiwgODQsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA4NCwgMjQ4LCAxODYsIDg0LCA1MiwgCi0gICAgMjQ4LCAxODYsIDg0LCAyMSwgMjEwLCA4NiwgODQsIDIxLCAxMTEsIDg0LCAyMSwgMTA1LCA4NCwgMjEsIDE1OCwgODQsIDIxLCAKLSAgICAxNjEsIDg0LCAyMSwgMTkwLCA4NCwgMjEsIDE5NSwgODQsIDIxLCAxOTksIDg0LCAyMSwgMTk2LCA4NCwgMjEsIDIwMSwgODQsIAotICAgIDI1NSwgMzAsIDUwLCA4NCwgNSwgMTI1LCAyMTksIDE5LCAyNDcsIDEyOCwgODQsIDEsIDI1MSwgMTAsIDYxLCA4NCwgMSwgCi0gICAgMjI2LCAyMzgsIDg0LCAxLCAyMjYsIDE4NSwgODQsIDEsIDI1MywgMTc5LCA4NCwgMSwgMjE0LCAyMTQsIDg0LCAxLCAyMTQsIAotICAgIDExNywgODQsIDEsIDIxMCwgODIsIDg0LCAxLCAxMTQsIDE5MiwgODQsIDEsIDI0MywgMzYsIDg0LCAxLCAyMzUsIDEwMiwgCi0gICAgODQsIDEsIDI0MiwgMTg3LCAyMTgsIDEzMSwgODQsIDEsIDI0OCwgMTMzLCA4NCwgMSwgMjUyLCAxMTksIDE0NiwgNSwgMjUxLCAKLSAgICA3LCAxNDYsIDUsIDI1NCwgODMsIDE0NiwgNSwgMjEzLCAxNDcsIDE0NiwgMSwgNjEsIDE0NiwgMSwgMjU1LCA4MiwgMTQ2LCAKLSAgICAxLCA3NCwgMTQ2LCAxLCAyMzYsIDQwLCAxNDYsIDEsIDY5LCAxNDYsIDEsIDIxNCwgMTE4LCAxNDYsIDEsIDE0OSwgMTUzLCAKLSAgICAxNDYsIDEsIDE0OSwgMTU2LCAxNDYsIDEsIDc2LCAxNDYsIDEsIDI1NCwgMjEwLCAxNDYsIDEsIDc4LCAxNDYsIDEsIDI1MywgCi0gICAgMjAwLCAxNDYsIDEsIDE3NiwgMTQ2LCAxLCAyMzQsIDEzOCwgMTQ2LCAxLCAyNDMsIDE0MiwgMTQ2LCAxLCAyNDMsIDAsIAotICAgIDE0NiwgMSwgMjI5LCA4MiwgMTQ2LCAxLCAyNTEsIDQxLCAxNDYsIDEsIDI1MCwgMTY1LCAxNDYsIDEsIDIzNSwgMTQ3LCAKLSAgICAxNDYsIDEsIDIzNSwgMTIwLCAxNDYsIDEsIDIyNywgMTY5LCAxNDYsIDEsIDIxNSwgMTU3LCAxNDYsIDEsIDIxNSwgMTQ1LCAKLSAgICAxNDYsIDEsIDI0OCwgMTQzLCAxNDYsIDEsIDI0OCwgMTI3LCAxNDYsIDEsIDIyOCwgMTE1LCAxNDYsIDEsIDIxNywgMTA2LCAKLSAgICAxNDYsIDEsIDIxNiwgMjA5LCAxNDYsIDEsIDI0OCwgMjI5LCAxNDYsIDEsIDI0OCwgMzMsIDE0NiwgMSwgMTk4LCAxNDYsIDEsIAotICAgIDE5MSwgMTQ2LCAxLCAyMjUsIDE1MCwgMTQ2LCAxLCAyNTIsIDE5OSwgMTQ2LCAxLCAyNTIsIDI2LCAxNDYsIDEsIDE4NiwgCi0gICAgMTQ2LCAxLCAxOTIsIDE0NiwgMSwgMjA1LCAxNDYsIDEsIDIzMywgMTQxLCAxNDYsIDEsIDIyMCwgMTA0LCAxNDYsIDEsIAotICAgIDIxOCwgMjI1LCAxNDYsIDEsIDIwNiwgMTQ2LCAxLCAxNjIsIDE0NiwgNSwgMjI3LCAyMDksIDE0NiwgNSwgMjUzLCAxODMsIAotICAgIDE0NiwgMjUsIDUsIDI1NSwgODIsIDE0NiwgMjUsIDUsIDc0LCAxNDYsIDI1LCA1LCAyMzYsIDQwLCAxNDYsIDI1LCA1LCA2OSwgCi0gICAgMTQ2LCAyNSwgNSwgMjE0LCAxMTgsIDE0NiwgMjUsIDUsIDE0OSwgMTUzLCAxNDYsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNDYsIDI1LCA1LCA3NiwgMTQ2LCAyNSwgNSwgMjU0LCAyMTAsIDE0NiwgMjUsIDUsIDc4LCAxNDYsIDI1LCA1LCAyNTMsIAotICAgIDIwMCwgMTQ2LCA1LCAyMTMsIDE1MiwgMTQ2LCAxLCAyMzQsIDEzMCwgMjE3LCAxMDYsIDE0NiwgMjUzLCAyMDEsIDIzMywgCi0gICAgMjksIDc5LCAxNDYsIDEsIDIyMiwgMTgxLCAxNDYsIDEsIDIyMywgNDIsIDE0NiwgMSwgMjEwLCAxNjgsIDE0NiwgMSwgMTQ5LCAKLSAgICAyMjIsIDE4MiwgMTQ2LCAxLCAxNDksIDIzMiwgMTkxLCAxNDYsIDI1LCA1LCAxNDksIDE1NiwgMTQ2LCAyNSwgNSwgMTQ5LCAKLSAgICAyMzIsIDE5MSwgMTQ2LCAyMSwgMjEwLCA4NiwgMTQ2LCAyMSwgMTExLCAxNDYsIDIxLCAxMDUsIDE0NiwgMjEsIDE1OCwgCi0gICAgMTQ2LCAyMSwgMTYxLCAxNDYsIDIxLCAxOTAsIDE0NiwgMjEsIDE5NSwgMTQ2LCAyMSwgMTk5LCAxNDYsIDIxLCAxOTYsIAotICAgIDE0NiwgMjEsIDIwMSwgMTQ2LCAxLCAyMjMsIDE5MSwgMiwgMjMwLCAyMjksIDI0OCwgNiwgMTQ2LCAxLCAyMjMsIDE5MSwgMiwgCi0gICAgMjMyLCAxMTQsIDI0OCwgNiwgMTQ2LCAyMjIsIDEyMCwgNzksIDE0NiwgMjIyLCAxMjAsIDUwLCAxNDYsIDI0OSwgMTA2LCAKLSAgICAyMjcsIDIwMSwgMTExLCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTA1LCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgCi0gICAgMTU4LCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTYxLCAxNDYsIDI0OSwgMTA2LCAyMjcsIDIwMSwgMTIzLCAyMzMsIDIyLCAKLSAgICAyMTYsIDIwMiwgMjE2LCAxOTcsIDI0OCwgNTYsIDE0NiwgMjQ5LCAxMDYsIDI0OCwgNTcsIDIxOSwgMTIxLCAxNDYsIDIzNSwgCi0gICAgMTY3LCAxNDYsIDI0MywgMTEwLCA3OSwgMTg1LCA1LCAyNTUsIDcsIDI1MSwgMjUxLCAxODUsIDUsIDI1MSwgMjUxLCAxODUsIAotICAgIDUsIDIxMywgMTQ3LCAxODUsIDEsIDYxLCAxODUsIDEsIDI1NSwgODIsIDE4NSwgMSwgNzQsIDE4NSwgMSwgMjM2LCA0MCwgCi0gICAgMTg1LCAxLCA2OSwgMTg1LCAxLCAyMTQsIDExOCwgMTg1LCAxLCAyNDUsIDIxNywgMTg1LCAxLCAyNTQsIDIxMCwgMTg1LCAxLCAKLSAgICAyMjYsIDE4NywgMTg1LCAxLCAyNTMsIDIwMCwgMTg1LCAxLCAxNzYsIDE4NSwgMSwgMjM0LCAxMzgsIDE4NSwgMSwgMjQzLCAKLSAgICAxNDIsIDE4NSwgMSwgMjQzLCAwLCAxODUsIDEsIDIyOSwgODIsIDE4NSwgMSwgMjUxLCA0MSwgMTg1LCAxLCAyNTAsIDE2NSwgCi0gICAgMTg1LCAxLCAyMzUsIDE0NywgMTg1LCAxLCAyMzUsIDEyMCwgMTg1LCAxLCAyMjcsIDE2OSwgMTg1LCAxLCAyMTUsIDE1NywgCi0gICAgMTg1LCAxLCAyMTUsIDE0NSwgMTg1LCAxLCAyNDgsIDE0MywgMTg1LCAxLCAyNDgsIDEyNywgMTg1LCAxLCAyMjgsIDExNSwgCi0gICAgMTg1LCAxLCAyMTcsIDEwNiwgMTg1LCAxLCAyMTYsIDIwOSwgMTg1LCAxLCAyNDgsIDIyOSwgMTg1LCAxLCAyNDgsIDMzLCAKLSAgICAxODUsIDEsIDE5OCwgMTg1LCAxLCAxOTEsIDE4NSwgMSwgMjI1LCAxNTAsIDE4NSwgMSwgMjUyLCAxOTksIDE4NSwgMSwgCi0gICAgMjUyLCAyNiwgMTg1LCAxLCAxODYsIDE4NSwgMSwgMTkyLCAxODUsIDEsIDIwNSwgMTg1LCAxLCAyMzMsIDE0MSwgMTg1LCAxLCAKLSAgICAyMzIsIDE5MCwgMTg1LCAxLCAyMTQsIDI3LCAxODUsIDEsIDIyMCwgMTA0LCAxODUsIDEsIDIwNiwgMTg1LCAxLCAxNjIsIAotICAgIDE4NSwgNSwgMjI3LCAyMDksIDE4NSwgMjUsIDUsIDI1NSwgODIsIDE4NSwgMjUsIDUsIDc0LCAxODUsIDI1LCA1LCAyMzYsIAotICAgIDQwLCAxODUsIDI1LCA1LCA2OSwgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NSwgMjUsIDUsIDI0NSwgMjE3LCAxODUsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTg1LCAyNSwgNSwgMjI2LCAxODcsIDE4NSwgMjUsIDUsIDI1MywgMjAwLCAxODUsIDUsIDIxMywgCi0gICAgMTUyLCAxODUsIDUsIDIxNCwgMjE4LCAxODUsIDEsIDIzNCwgMTIxLCAxODUsIDEsIDI0MiwgMjMzLCAxODUsIDEsIDIxMCwgCi0gICAgMTE2LCAxODUsIDEsIDIyMiwgMTgxLCAxODUsIDEsIDI0NCwgMjA0LCAxODUsIDIxLCAyMTAsIDg2LCAxODUsIDIxLCAxMTEsIAotICAgIDE4NSwgMjEsIDEwNSwgMTg1LCAyMSwgMTU4LCAxODUsIDIxLCAxNjEsIDE4NSwgMjEsIDE5MCwgMTg1LCAyMSwgMTk1LCAKLSAgICAxODUsIDIxLCAxOTksIDE4NSwgMjEsIDE5NiwgMTg1LCAyMSwgMjAxLCAxODUsIDIxNiwgNzUsIDE4NSwgMjU1LCA2LCAxODUsIAotICAgIDIzNSwgMTg1LCAxODUsIDIxNCwgMTQ2LCAxODUsIDI0NSwgMTg5LCAyMjYsIDE5MiwgMTg1LCA1LCAyMTEsIDc4LCAxNzEsIAotICAgIDUsIDI1MSwgNywgMTcxLCA1LCAyNTQsIDgzLCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgCi0gICAgODIsIDE3MSwgMSwgNzQsIDE3MSwgMSwgMjM2LCA0MCwgMTcxLCAxLCA2OSwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAKLSAgICAxNDksIDE1MywgMTcxLCAxLCAxNDksIDE1NiwgMTcxLCAyNSwgMjUxLCAxMCwgNzYsIDE3MSwgMSwgNzYsIDE3MSwgMSwgCi0gICAgMjU0LCAyMTAsIDE3MSwgMjUsIDI1MSwgMTAsIDc4LCAxNzEsIDEsIDc4LCAxNzEsIDEsIDI1MywgMjAwLCAxNzEsIDEsIAotICAgIDE3NiwgMTcxLCAxLCAyMzQsIDEzOCwgMTcxLCAxLCAyNDMsIDE0MiwgMTcxLCAxLCAyNDMsIDAsIDE3MSwgMSwgMjI5LCA4MiwgCi0gICAgMTcxLCAxLCAyNTEsIDQxLCAxNzEsIDEsIDI1MCwgMTY1LCAxNzEsIDEsIDIzNSwgMTQ3LCAxNzEsIDEsIDIzNSwgMTIwLCAKLSAgICAxNzEsIDEsIDIyNywgMTY5LCAxNzEsIDEsIDIxNSwgMTU3LCAxNzEsIDEsIDIxNSwgMTQ1LCAxNzEsIDEsIDI0OCwgMTQzLCAKLSAgICAxNzEsIDEsIDI0OCwgMTI3LCAxNzEsIDEsIDIyOCwgMTE1LCAxNzEsIDEsIDIxNywgMTA2LCAxNzEsIDEsIDIxNiwgMjA5LCAKLSAgICAxNzEsIDEsIDI0OCwgMjI5LCAxNzEsIDEsIDI0OCwgMzMsIDE3MSwgMSwgMTk4LCAxNzEsIDEsIDE5MSwgMTcxLCAxLCAyMjUsIAotICAgIDE1MCwgMTcxLCAxLCAyNTIsIDE5OSwgMTcxLCAxLCAyNTIsIDI2LCAxNzEsIDEsIDE4NiwgMTcxLCAxLCAxOTIsIDE3MSwgMSwgCi0gICAgMjA1LCAxNzEsIDEsIDIzMywgMTQxLCAxNzEsIDEsIDIzMiwgMTkwLCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAKLSAgICAxMDQsIDE3MSwgMSwgMjE4LCAyMjUsIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwOSwgMTcxLCAKLSAgICA1LCAyNTMsIDE4MywgMTcxLCAyNSwgNSwgMjU1LCA4MiwgMTcxLCAyNSwgNSwgNzQsIDE3MSwgMjUsIDUsIDIzNiwgNDAsIAotICAgIDE3MSwgMjUsIDUsIDY5LCAxNzEsIDI1LCA1LCAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIAotICAgIDE0OSwgMjIyLCAxODIsIDE3MSwgMjUsIDUsIDI1MSwgMTAsIDc2LCAxNzEsIDI1LCA1LCA3NiwgMTcxLCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDE3MSwgMjUsIDUsIDI1MSwgMTAsIDc4LCAxNzEsIDI1LCA1LCA3OCwgMTcxLCAyNSwgNSwgMjUzLCAyMDAsIDE3MSwgCi0gICAgNSwgMjEzLCAxNTIsIDE3MSwgMjI2LCAyMDgsIDE3MSwgMSwgMTQ5LCAyMjIsIDE4MiwgMTcxLCAxLCAxNDksIDIzMiwgMTkxLCAKLSAgICAxNzEsIDI1LCA1LCAxNDksIDE1NiwgMTcxLCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTcxLCAyMSwgMjEwLCA4NiwgMTcxLCAKLSAgICAyMSwgMTExLCAxNzEsIDIxLCAxMDUsIDE3MSwgMjEsIDE1OCwgMTcxLCAyMSwgMTYxLCAxNzEsIDIxLCAxOTAsIDE3MSwgMjEsIAotICAgIDE5NSwgMTcxLCAyMSwgMTk5LCAxNzEsIDIxLCAxOTYsIDE3MSwgMjEsIDIwMSwgMTcxLCAyNTUsIDMwLCA1MCwgMTcxLCAKLSAgICAyMjIsIDEyMCwgNTAsIDE1NywgNSwgMjUxLCA3LCAxNTcsIDUsIDI1NCwgODMsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgCi0gICAgNjEsIDE1NywgMSwgMjU1LCA4MiwgMTU3LCAxLCA3NCwgMTU3LCAxLCAyMzYsIDQwLCAxNTcsIDEsIDY5LCAxNTcsIDEsIAotICAgIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1NCwgCi0gICAgMjEwLCAxNTcsIDEsIDc4LCAxNTcsIDEsIDI1MywgMjAwLCAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzOCwgMTU3LCAxLCAKLSAgICAyNDMsIDE0MiwgMTU3LCAxLCAyNDMsIDAsIDE1NywgMSwgMjI5LCA4MiwgMTU3LCAxLCAyNTEsIDQxLCAxNTcsIDEsIDI1MCwgCi0gICAgMTY1LCAxNTcsIDEsIDIzNSwgMTQ3LCAxNTcsIDEsIDIzNSwgMTIwLCAxNTcsIDEsIDIyNywgMTY5LCAxNTcsIDEsIDIxNSwgCi0gICAgMTU3LCAxNTcsIDEsIDIxNSwgMTQ1LCAxNTcsIDEsIDI0OCwgMTQzLCAxNTcsIDEsIDI0OCwgMTI3LCAxNTcsIDEsIDIyOCwgCi0gICAgMTE1LCAxNTcsIDEsIDIxNywgMTA2LCAxNTcsIDEsIDIxNiwgMjA5LCAxNTcsIDEsIDI0OCwgMjI5LCAxNTcsIDEsIDI0OCwgCi0gICAgMzMsIDE1NywgMSwgMTk4LCAxNTcsIDEsIDE5MSwgMTU3LCAxLCAyMjUsIDE1MCwgMTU3LCAxLCAyNTIsIDE5OSwgMTU3LCAxLCAKLSAgICAyNTIsIDI2LCAxNTcsIDEsIDE4NiwgMTU3LCAxLCAxOTIsIDE1NywgMSwgMjA1LCAxNTcsIDEsIDIzMywgMTQxLCAxNTcsIDEsIAotICAgIDIzMiwgMTkwLCAxNTcsIDEsIDIxNCwgMjcsIDE1NywgMSwgMjIwLCAxMDQsIDE1NywgMSwgMjE4LCAyMjUsIDE1NywgMSwgCi0gICAgMjA2LCAxNTcsIDEsIDE2MiwgMTU3LCA1LCAyMjcsIDIwOSwgMTU3LCA1LCAyNTMsIDE4MywgMTU3LCAyNSwgNSwgMjU1LCAKLSAgICA4MiwgMTU3LCAyNSwgNSwgNzQsIDE1NywgMjUsIDUsIDIzNiwgNDAsIDE1NywgMjUsIDUsIDY5LCAxNTcsIDI1LCA1LCAyMTQsIAotICAgIDExOCwgMTU3LCAyNSwgNSwgMTQ5LCAxNTMsIDE1NywgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDE1NywgMjUsIDUsIDc2LCAKLSAgICAxNTcsIDI1LCA1LCAyNTQsIDIxMCwgMTU3LCAyNSwgNSwgNzgsIDE1NywgMjUsIDUsIDI1MywgMjAwLCAxNTcsIDUsIDIxMywgCi0gICAgMTUyLCAxNTcsIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTU3LCAyNTMsIDIwMSwgMjMzLCAyOSwgNzksIDE1NywgMSwgMjIyLCAKLSAgICAxODEsIDE1NywgMSwgMjIzLCA0MiwgMTU3LCAxLCAyMTAsIDE2OCwgMTU3LCAxLCAxNDksIDIyMiwgMTgyLCAxNTcsIDEsIAotICAgIDE0OSwgMjMyLCAxOTEsIDE1NywgMjUsIDUsIDE0OSwgMTU2LCAxNTcsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCAxNTcsIDIxLCAKLSAgICAyMTAsIDg2LCAxNTcsIDIxLCAxMTEsIDE1NywgMjEsIDEwNSwgMTU3LCAyMSwgMTU4LCAxNTcsIDIxLCAxNjEsIDE1NywgMjEsIAotICAgIDE5MCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAxOTksIDE1NywgMjEsIDE5NiwgMTU3LCAyMSwgMjAxLCAxNTcsIDIzNSwgCi0gICAgMTY3LCAxNTcsIDEsIDIxMiwgNjUsIDE1NywgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAxNTcsIDI0NCwgMTAsIDEyMywgMjQyLCAKLSAgICAzNCwgMTU3LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDE1NywgMjQ0LCAxMCwgMTIzLCAyMTksIDExOSwgMTU3LCAyNDQsIAotICAgIDEwLCAxMjMsIDI0NSwgMTk2LCAxNTcsIDI0NCwgMTAsIDEzNCwgMjE5LCAxMTgsIDM2LCA1LCAyNTQsIDgzLCAzNiwgNSwgCi0gICAgMjEzLCAxNDcsIDM2LCAxLCA2MSwgMzYsIDEsIDI1NSwgODIsIDM2LCAxLCA3NCwgMzYsIDEsIDIzNiwgNDAsIDM2LCAxLCAKLSAgICA2OSwgMzYsIDEsIDIxNCwgMTE4LCAzNiwgMSwgNzYsIDM2LCAxLCAyNDUsIDIxNywgMzYsIDEsIDI1NCwgMjEwLCAzNiwgMSwgCi0gICAgNzgsIDM2LCAxLCAyMjYsIDE4NywgMzYsIDEsIDI1MywgMjAwLCAzNiwgMSwgMTc2LCAzNiwgMSwgMjI5LCA4MiwgMzYsIDEsIAotICAgIDI1MSwgNDEsIDM2LCAxLCAyMzUsIDE0NywgMzYsIDEsIDIyNywgMTY5LCAzNiwgMSwgMjE1LCAxNTcsIDM2LCAxLCAyMjgsIAotICAgIDExNSwgMzYsIDEsIDIxNywgMTA2LCAzNiwgMSwgMTk4LCAzNiwgMSwgMjI4LCA5NywgMzYsIDEsIDE5MSwgMzYsIDEsIDE4NiwgCi0gICAgMzYsIDEsIDE5MiwgMzYsIDEsIDIwNSwgMzYsIDEsIDIyMiwgMTgxLCAzNiwgMSwgMjMzLCAxNDEsIDM2LCAxLCAyMzIsIAotICAgIDE5MCwgMzYsIDEsIDIzMiwgMTgxLCAzNiwgMSwgMjE0LCAyNywgMzYsIDEsIDIyMCwgMTA0LCAzNiwgMSwgMjE4LCAyMjUsIAotICAgIDM2LCAxLCAyMDYsIDM2LCAxLCAxNjIsIDM2LCAyNSwgNSwgMjU1LCA4MiwgMzYsIDI1LCA1LCA3NCwgMzYsIDI1LCA1LCAKLSAgICAyMzYsIDQwLCAzNiwgMjUsIDUsIDY5LCAzNiwgMjUsIDUsIDIxNCwgMTE4LCAzNiwgMjUsIDUsIDc2LCAzNiwgMjUsIDUsIAotICAgIDI0NSwgMjE3LCAzNiwgMjUsIDUsIDI1NCwgMjEwLCAzNiwgMjUsIDUsIDc4LCAzNiwgMjUsIDUsIDIyNiwgMTg3LCAzNiwgCi0gICAgMjUsIDUsIDI1MywgMjAwLCAzNiwgNSwgMjEzLCAxNTIsIDM2LCAyMjYsIDIwOCwgMzYsIDI1MywgMjAxLCAyMzMsIDI5LCAKLSAgICA3OSwgMzYsIDIxLCAyMTAsIDg2LCAzNiwgMjEsIDExMSwgMzYsIDIxLCAxMDUsIDM2LCAyMSwgMTU4LCAzNiwgMjEsIDE2MSwgCi0gICAgMzYsIDIxLCAxOTAsIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDE5OSwgMzYsIDIxLCAxOTYsIDM2LCAyMSwgMjAxLCAzNiwgNTQsIAotICAgIDIxNiwgMjQ4LCAzNiwgNTQsIDEyMywgMjQwLCAyMTcsIDM2LCA1NCwgMTIzLCAyMTYsIDE0OCwgMzYsIDI0OCwgMTU0LCA1MCwgCi0gICAgMzYsIDIzMCwgMTQwLCA1MCwgMzYsIDIxMSwgNDUsIDUwLCAzNiwgMjQ4LCA5NSwgNTAsIDM2LCAyNDksIDE0NywgNTAsIDM2LCAKLSAgICAyNTMsIDI0NiwgNzIsIDUwLCAzNiwgMjIyLCAxMjAsIDUwLCAzNiwgNTQsIDUwLCAxNDgsIDUsIDI1MSwgNywgMTQ4LCA1LCAKLSAgICAyNTQsIDgzLCAxNDgsIDUsIDIxMywgMTQ3LCAxNDgsIDEsIDYxLCAxNDgsIDEsIDI1NSwgODIsIDE0OCwgMSwgNzQsIDE0OCwgCi0gICAgMSwgMjM2LCA0MCwgMTQ4LCAxLCA2OSwgMTQ4LCAxLCAyMTQsIDExOCwgMTQ4LCAxLCAxNDksIDE1MywgMTQ4LCAxLCAxNDksIAotICAgIDE1NiwgMTQ4LCAxLCA3NiwgMTQ4LCAxLCAyNDUsIDIxNywgMTQ4LCAxLCAyNTQsIDIxMCwgMTQ4LCAxLCA3OCwgMTQ4LCAxLCAKLSAgICAyMjYsIDE4NywgMTQ4LCAxLCAyNTMsIDIwMCwgMTQ4LCAxLCAxNzYsIDE0OCwgMSwgMjM0LCAxMzgsIDE0OCwgMSwgMjQzLCAKLSAgICAxNDIsIDE0OCwgMSwgMjQzLCAwLCAxNDgsIDEsIDIyOSwgODIsIDE0OCwgMSwgMjUxLCA0MSwgMTQ4LCAxLCAyNTAsIDE2NSwgCi0gICAgMTQ4LCAxLCAyMzUsIDE0NywgMTQ4LCAxLCAyMzUsIDEyMCwgMTQ4LCAxLCAyMjcsIDE2OSwgMTQ4LCAxLCAyMTUsIDE1NywgCi0gICAgMTQ4LCAxLCAyMTUsIDE0NSwgMTQ4LCAxLCAyNDgsIDE0MywgMTQ4LCAxLCAyNDgsIDEyNywgMTQ4LCAxLCAyMjgsIDExNSwgCi0gICAgMTQ4LCAxLCAyMTcsIDEwNiwgMTQ4LCAxLCAyMTYsIDIwOSwgMTQ4LCAxLCAyNDgsIDIyOSwgMTQ4LCAxLCAyNDgsIDMzLCAKLSAgICAxNDgsIDEsIDE5OCwgMTQ4LCAxLCAxOTEsIDE0OCwgMSwgMjI1LCAxNTAsIDE0OCwgMSwgMjUyLCAxOTksIDE0OCwgMSwgCi0gICAgMjUyLCAyNiwgMTQ4LCAxLCAxODYsIDE0OCwgMSwgMTkyLCAxNDgsIDEsIDIwNSwgMTQ4LCAxLCAyMjIsIDE4MSwgMTQ4LCAxLCAKLSAgICAyMzMsIDE0MSwgMTQ4LCAxLCAyMzIsIDE5MCwgMTQ4LCAxLCAyMTQsIDI3LCAxNDgsIDEsIDIyMCwgMTA0LCAxNDgsIDEsIAotICAgIDIxOCwgMjI1LCAxNDgsIDEsIDIwNiwgMTQ4LCAxLCAxNjIsIDE0OCwgNSwgMjUzLCAxODMsIDE0OCwgMjUsIDUsIDI1NSwgCi0gICAgODIsIDE0OCwgMjUsIDUsIDc0LCAxNDgsIDI1LCA1LCAyMzYsIDQwLCAxNDgsIDI1LCA1LCA2OSwgMTQ4LCAyNSwgNSwgMjE0LCAKLSAgICAxMTgsIDE0OCwgMjUsIDUsIDE0OSwgMTUzLCAxNDgsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAxNDgsIDI1LCA1LCA3NiwgCi0gICAgMTQ4LCAyNSwgNSwgMjQ1LCAyMTcsIDE0OCwgMjUsIDUsIDI1NCwgMjEwLCAxNDgsIDI1LCA1LCA3OCwgMTQ4LCAyNSwgNSwgCi0gICAgMjI2LCAxODcsIDE0OCwgMjUsIDUsIDI1MywgMjAwLCAxNDgsIDUsIDIxMywgMTUyLCAxNDgsIDIzMywgMjksIDc5LCAxNDgsIAotICAgIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTQ4LCAxLCAyMTUsIDE4NCwgMTQ4LCAxLCAyNDYsIDQ2LCAxNDgsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDE0OCwgMSwgMTQ5LCAyMzIsIDE5MSwgMTQ4LCAyNSwgNSwgMTQ5LCAxNTYsIDE0OCwgMjUsIDUsIDE0OSwgCi0gICAgMjMyLCAxOTEsIDE0OCwgMjEsIDIxMCwgODYsIDE0OCwgMjEsIDExMSwgMTQ4LCAyMSwgMTA1LCAxNDgsIDIxLCAxNTgsIAotICAgIDE0OCwgMjEsIDE2MSwgMTQ4LCAyMSwgMTkwLCAxNDgsIDIxLCAxOTUsIDE0OCwgMjEsIDE5OSwgMTQ4LCAyMSwgMTk2LCAKLSAgICAxNDgsIDIxLCAyMDEsIDE0OCwgMjQ0LCAxMCwgMjEsIDIxMCwgODcsIDMxLCAyMjYsIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIAotICAgIDE0OCwgMjQ0LCAxMCwgMjEsIDEyMywgMzEsIDIyNiwgMjQxLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAyMSwgCi0gICAgMTEzLCAzMSwgMjI2LCAyNDEsIDIyNCwgMjI2LCA2NCwgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAxMzQsIDMxLCAyMjYsIAotICAgIDI0MSwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgMjQ0LCAxMCwgMjEsIDEyMywgMzEsIDI0NSwgNTAsIDIyNCwgMjI2LCA2NCwgCi0gICAgMTYxLCAxNDgsIDI0NCwgMTAsIDIxLCAxMTMsIDMxLCAyNDUsIDUwLCAyMjQsIDIyNiwgNjQsIDE2MSwgMTQ4LCAyNDQsIDEwLCAKLSAgICAyMSwgMTM0LCAzMSwgMjQ1LCA1MCwgMjI0LCAyMjYsIDY0LCAxNjEsIDE0OCwgNSwgMjE1LCA4NCwgMTY1LCA1LCAyNTQsIAotICAgIDgzLCAxNjUsIDUsIDIxMywgMTQ3LCAxNjUsIDEsIDYxLCAxNjUsIDEsIDI1NSwgODIsIDE2NSwgMSwgNzQsIDE2NSwgMSwgCi0gICAgMjM2LCA0MCwgMTY1LCAxLCA2OSwgMTY1LCAxLCAyMTQsIDExOCwgMTY1LCAxLCAxNDksIDE1MywgMTY1LCAxLCAxNDksIAotICAgIDE1NiwgMTY1LCAxLCA3NiwgMTY1LCAxLCAyNDUsIDIxNywgMTY1LCAxLCAyNTQsIDIxMCwgMTY1LCAxLCA3OCwgMTY1LCAxLCAKLSAgICAyMjYsIDE4NywgMTY1LCAxLCAyNTMsIDIwMCwgMTY1LCAxLCAxNzYsIDE2NSwgMSwgMjM0LCAxMzgsIDE2NSwgMSwgMjQzLCAKLSAgICAxNDIsIDE2NSwgMSwgMjQzLCAwLCAxNjUsIDEsIDIyOSwgODIsIDE2NSwgMSwgMjUxLCA0MSwgMTY1LCAxLCAyNTAsIDE2NSwgCi0gICAgMTY1LCAxLCAyMzUsIDE0NywgMTY1LCAxLCAyMzUsIDEyMCwgMTY1LCAxLCAyMjcsIDE2OSwgMTY1LCAxLCAyMTUsIDE1NywgCi0gICAgMTY1LCAxLCAyMTUsIDE0NSwgMTY1LCAxLCAyNDgsIDE0MywgMTY1LCAxLCAyNDgsIDEyNywgMTY1LCAxLCAyMjgsIDExNSwgCi0gICAgMTY1LCAxLCAyMTcsIDEwNiwgMTY1LCAxLCAyMTYsIDIwOSwgMTY1LCAxLCAyNDgsIDIyOSwgMTY1LCAxLCAyNDgsIDMzLCAKLSAgICAxNjUsIDEsIDE5OCwgMTY1LCAxLCAxOTEsIDE2NSwgMSwgMjI1LCAxNTAsIDE2NSwgMSwgMjUyLCAxOTksIDE2NSwgMSwgCi0gICAgMjUyLCAyNiwgMTY1LCAxLCAxODYsIDE2NSwgMSwgMTkyLCAxNjUsIDEsIDIwNSwgMTY1LCAxLCAyMjIsIDE4MSwgMTY1LCAxLCAKLSAgICAyMzMsIDE0MSwgMTY1LCAxLCAyMzIsIDE5MCwgMTY1LCAxLCAyMTQsIDI3LCAxNjUsIDEsIDIyMCwgMTA0LCAxNjUsIDEsIAotICAgIDIxOCwgMjI1LCAxNjUsIDEsIDIwNiwgMTY1LCAxLCAxNjIsIDE2NSwgNSwgMjI3LCAyMDksIDE2NSwgNSwgMjUzLCAxODMsIAotICAgIDE2NSwgMjUsIDUsIDI1NSwgODIsIDE2NSwgMjUsIDUsIDc0LCAxNjUsIDI1LCA1LCAyMzYsIDQwLCAxNjUsIDI1LCA1LCA2OSwgCi0gICAgMTY1LCAyNSwgNSwgMjE0LCAxMTgsIDE2NSwgMjUsIDUsIDE0OSwgMTUzLCAxNjUsIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNjUsIDI1LCA1LCA3NiwgMTY1LCAyNSwgNSwgMjQ1LCAyMTcsIDE2NSwgMjUsIDUsIDI1NCwgMjEwLCAxNjUsIDI1LCA1LCAKLSAgICA3OCwgMTY1LCAyNSwgNSwgMjI2LCAxODcsIDE2NSwgMjUsIDUsIDI1MywgMjAwLCAxNjUsIDUsIDIxMywgMTUyLCAxNjUsIAotICAgIDIzMywgMjksIDc5LCAxNjUsIDI1NCwgMjExLCAyMzMsIDI5LCA3OSwgMTY1LCAxLCAyNDQsIDIwNCwgMTY1LCAxLCAxNDksIAotICAgIDIyMiwgMTgyLCAxNjUsIDEsIDE0OSwgMjMyLCAxOTEsIDE2NSwgMjUsIDUsIDE0OSwgMTU2LCAxNjUsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxNjUsIDIxLCAyMTAsIDg2LCAxNjUsIDIxLCAxMTEsIDE2NSwgMjEsIDEwNSwgMTY1LCAyMSwgMTU4LCAKLSAgICAxNjUsIDIxLCAxNjEsIDE2NSwgMjEsIDE5MCwgMTY1LCAyMSwgMTk1LCAxNjUsIDIxLCAxOTksIDE2NSwgMjEsIDE5NiwgCi0gICAgMTY1LCAyMSwgMjAxLCAxNjUsIDUsIDIzNSwgMTA4LCAxNjUsIDUsIDIxNCwgMTYxLCAxMzYsIDUsIDI1NCwgODMsIDEzNiwgCi0gICAgNSwgMjEzLCAxNDcsIDEzNiwgMSwgNjEsIDEzNiwgMSwgMjU1LCA4MiwgMTM2LCAxLCA3NCwgMTM2LCAxLCAyMzYsIDQwLCAKLSAgICAxMzYsIDEsIDY5LCAxMzYsIDEsIDIxNCwgMTE4LCAxMzYsIDEsIDE0OSwgMTUzLCAxMzYsIDEsIDE0OSwgMTU2LCAxMzYsIDEsIAotICAgIDc2LCAxMzYsIDEsIDI0NSwgMjE3LCAxMzYsIDEsIDI1NCwgMjEwLCAxMzYsIDEsIDc4LCAxMzYsIDEsIDIyNiwgMTg3LCAKLSAgICAxMzYsIDEsIDI1MywgMjAwLCAxMzYsIDEsIDE3NiwgMTM2LCAxLCAyMzQsIDEzOCwgMTM2LCAxLCAyNDMsIDE0MiwgMTM2LCAKLSAgICAxLCAyNDMsIDAsIDEzNiwgMSwgMjI5LCA4MiwgMTM2LCAxLCAyNTEsIDQxLCAxMzYsIDEsIDI1MCwgMTY1LCAxMzYsIDEsIAotICAgIDIzNSwgMTQ3LCAxMzYsIDEsIDIzNSwgMTIwLCAxMzYsIDEsIDIyNywgMTY5LCAxMzYsIDEsIDIxNSwgMTU3LCAxMzYsIDEsIAotICAgIDIxNSwgMTQ1LCAxMzYsIDEsIDI0OCwgMTQzLCAxMzYsIDEsIDI0OCwgMTI3LCAxMzYsIDEsIDIyOCwgMTE1LCAxMzYsIDEsIAotICAgIDIxNywgMTA2LCAxMzYsIDEsIDIxNiwgMjA5LCAxMzYsIDEsIDI0OCwgMjI5LCAxMzYsIDEsIDI0OCwgMzMsIDEzNiwgMSwgCi0gICAgMTk4LCAxMzYsIDEsIDIyOCwgOTcsIDEzNiwgMSwgMTkxLCAxMzYsIDEsIDIyNSwgMTUwLCAxMzYsIDEsIDI1MiwgMTk5LCAKLSAgICAxMzYsIDEsIDI1MiwgMjYsIDEzNiwgMSwgMTg2LCAxMzYsIDEsIDE5MiwgMTM2LCAxLCAyMDUsIDEzNiwgMSwgMjIyLCAxODEsIAotICAgIDEzNiwgMSwgMjMzLCAxNDEsIDEzNiwgMSwgMjMyLCAxOTAsIDEzNiwgMSwgMjMyLCAxODEsIDEzNiwgMSwgMjE0LCAyNywgCi0gICAgMTM2LCAxLCAyMjAsIDEwNCwgMTM2LCAxLCAyMTgsIDIyNSwgMTM2LCAxLCAyMDYsIDEzNiwgMSwgMTYyLCAxMzYsIDEsIAotICAgIDIxNSwgMTI2LCAxMzYsIDUsIDI1MywgMTgzLCAxMzYsIDI1LCA1LCAyNTUsIDgyLCAxMzYsIDI1LCA1LCA3NCwgMTM2LCAyNSwgCi0gICAgNSwgMjM2LCA0MCwgMTM2LCAyNSwgNSwgNjksIDEzNiwgMjUsIDUsIDIxNCwgMTE4LCAxMzYsIDI1LCA1LCAxNDksIDE1MywgCi0gICAgMTM2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgMTM2LCAyNSwgNSwgNzYsIDEzNiwgMjUsIDUsIDI0NSwgMjE3LCAxMzYsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTM2LCAyNSwgNSwgNzgsIDEzNiwgMjUsIDUsIDIyNiwgMTg3LCAxMzYsIDI1LCA1LCAyNTMsIDIwMCwgCi0gICAgMTM2LCA1LCAyMTMsIDE1MiwgMTM2LCAxLCA1OSwgMjIzLCA3NiwgMTM2LCAyNTMsIDIwMSwgMjMzLCAyOSwgNzksIDEzNiwgCi0gICAgMSwgMTQ5LCAyMjIsIDE4MiwgMTM2LCAxLCAxNDksIDIzMiwgMTkxLCAxMzYsIDI1LCA1LCAxNDksIDE1NiwgMTM2LCAyNSwgCi0gICAgNSwgMTQ5LCAyMzIsIDE5MSwgMTM2LCAyMSwgMjEwLCA4NiwgMTM2LCAyMSwgMTExLCAxMzYsIDIxLCAxMDUsIDEzNiwgMjEsIAotICAgIDE1OCwgMTM2LCAyMSwgMTYxLCAxMzYsIDIxLCAxOTAsIDEzNiwgMjEsIDE5NSwgMTM2LCAyMSwgMTk5LCAxMzYsIDIxLCAKLSAgICAxOTYsIDEzNiwgMjEsIDIwMSwgMTM2LCA1NCwgMjE2LCAyNDgsIDEzNiwgNTQsIDEyMywgMjQwLCAyMTcsIDEzNiwgNTQsIAotICAgIDEyMywgMjE2LCAxNDgsIDEzNiwgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAxMzYsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgCi0gICAgMTM2LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDEzNiwgMjQ4LCAxNTgsIDc5LCAxMzYsIDEsIDI1MCwgMTA3LCAyMjgsIAotICAgIDExNiwgMTM2LCAxLCAyNTAsIDEwNywgMjMwLCAzMCwgMTM2LCAxLCAyNTAsIDEwNywgMjIyLCAxODIsIDEzNiwgMSwgMjUwLCAKLSAgICAxMDcsIDE1NiwgMTM2LCAxLCAyNTAsIDEwNywgMjMyLCAxOTEsIDEzNiwgMSwgMjUwLCAxMDcsIDIzNSwgMjksIDE3NSwgNSwgCi0gICAgMjU0LCA4MiwgMTc1LCA1LCAyMTMsIDE0NiwgMTc1LCAxLCAyNTMsIDE3MywgMTc1LCAxLCAyNTUsIDM2LCAxNzUsIDEsIAotICAgIDI1NCwgMjMyLCAxNzUsIDEsIDI1NCwgMjQ3LCAxNzUsIDEsIDIzNSwgMTU3LCAxNzUsIDEsIDIzNiwgMzksIDE3NSwgMSwgCi0gICAgMjE0LCAxMTAsIDE3NSwgMSwgMjE0LCAxMTIsIDE3NSwgMSwgMjM1LCAxODAsIDE3NSwgMSwgMjM1LCAxODEsIDE3NSwgMSwgCi0gICAgMjM2LCAyNSwgMTc1LCAxLCAyMzYsIDI3LCAxNzUsIDEsIDI0NSwgMjUsIDE3NSwgMSwgMjQ1LCAyMTIsIDE3NSwgMSwgMjU0LCAKLSAgICAxOTcsIDE3NSwgMSwgMjI2LCAxMTIsIDE3NSwgMSwgMjI2LCAxODEsIDE3NSwgMSwgMjUzLCAxODYsIDE3NSwgMSwgMjU0LCAKLSAgICAxNTQsIDIzNCwgMTkzLCAxNzUsIDEsIDIzMSwgMjE0LCAyMzQsIDE5MywgMTc1LCAxLCAyNTQsIDE1NCwgMjQzLCA4OSwgCi0gICAgMTc1LCAxLCAyMzEsIDIxNCwgMjQzLCA4OSwgMTc1LCAxLCAyMzQsIDIzNSwgMjI5LCAyMjcsIDE3NSwgMSwgMjIxLCAyMzgsIAotICAgIDI0MywgODksIDE3NSwgMSwgMjU0LCAxNTQsIDI1MCwgMjI0LCAxNzUsIDEsIDIzMSwgMjE0LCAyNTAsIDIyNCwgMTc1LCAxLCAKLSAgICAyNTQsIDE1NCwgMjM1LCAxMzMsIDE3NSwgMSwgMjMxLCAyMTQsIDIzNSwgMTMzLCAxNzUsIDEsIDIxNywgOTksIDIyOSwgCi0gICAgMjI3LCAxNzUsIDEsIDIxNywgOTksIDIyMSwgMjM3LCAyMjksIDIyOCwgMTc1LCAxLCAyMjEsIDIzOCwgMjM1LCAxMzMsIAotICAgIDE3NSwgMSwgMjU0LCAxNTQsIDIxNSwgMTUzLCAxNzUsIDEsIDIzMSwgMjE0LCAyMTUsIDE1MywgMTc1LCAxLCAyNTQsIDE1NCwgCi0gICAgMjQ4LCAxMzQsIDE3NSwgMSwgMjMxLCAyMTQsIDI0OCwgMTM0LCAxNzUsIDEsIDIzMCwgNTgsIDIyOSwgMTg1LCAxNzUsIDEsIAotICAgIDIyMSwgMjM4LCAyNDgsIDEzNCwgMTc1LCAxLCAyNTQsIDE1NCwgMjE3LCAzMSwgMTc1LCAxLCAyMzEsIDIxNCwgMjE3LCAzMSwgCi0gICAgMTc1LCAxLCAyNTQsIDE1NCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjMxLCAyMTQsIDI0OCwgMTUyLCAxNzUsIDEsIDI0OCwgMTgyLCAKLSAgICAyMjksIDE4NSwgMTc1LCAxLCAyMjEsIDIzOCwgMjQ4LCAxNTIsIDE3NSwgMSwgMjU0LCAxNTQsIDIyNSwgMjMyLCAxNzUsIDEsIAotICAgIDIzMSwgMjE0LCAyMjUsIDIzMiwgMTc1LCAxLCAyNTQsIDE1NCwgMjUyLCAxMjAsIDE3NSwgMSwgMjMxLCAyMTQsIDI1MiwgCi0gICAgMTIwLCAxNzUsIDEsIDIzMSwgMTM2LCAxNzUsIDEsIDI1NCwgMTM5LCAyNTIsIDEyMCwgMTc1LCAxLCAyMTEsIDUxLCAxNzUsIAotICAgIDEsIDIyMywgMTM2LCAxNzUsIDEsIDI0OCwgMTgyLCAyMzMsIDczLCAxNzUsIDEsIDIxNCwgMSwgMTc1LCAxLCAyMTcsIDk5LCAKLSAgICAyMjEsIDIxMiwgMTc1LCAxLCAyMzAsIDU4LCAyMjEsIDIxMiwgMTc1LCAxLCAyNDgsIDE4MiwgMjIxLCAyMTIsIDE3NSwgMSwgCi0gICAgMjQxLCAyNDksIDE3NSwgMSwgMjMwLCA1OCwgMjMzLCA3MywgMTc1LCAxLCAyNDQsIDE2NCwgMTc1LCA1LCAyNTQsIDE4NiwgCi0gICAgMTc1LCAyNSwgNSwgMjU0LCAyNDIsIDE3NSwgMjUsIDUsIDIzNCwgMTYxLCAyNTQsIDI0OSwgMTc1LCAyNSwgNSwgMjQ3LCAKLSAgICAyMzYsIDI1NCwgMjQ5LCAxNzUsIDI1LCA1LCAyMzQsIDE2MSwgMjM1LCAxNzcsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyMzUsIAotICAgIDE3NywgMTc1LCAyNSwgNSwgMjM0LCAxNjEsIDIyNiwgOTIsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyMjYsIDkyLCAxNzUsIAotICAgIDI1LCA1LCAyNDMsIDEzMSwgMTc1LCAyNSwgNSwgMjM0LCAyMSwgMTc1LCAyNSwgNSwgMjQ3LCAyMzYsIDIzNCwgMjEsIDE3NSwgCi0gICAgMjUsIDUsIDIzNCwgMjMsIDI0OCwgNzUsIDE3NSwgMjUsIDUsIDIzNCwgMjIsIDI0MiwgNTQsIDI1NCwgMjQyLCAxNzUsIDI1LCAKLSAgICA1LCAyMzQsIDIyLCAyNDIsIDU0LCAyNDcsIDIzNiwgMjU0LCAyNDIsIDE3NSwgMjUsIDUsIDIzNCwgMjIsIDI0MiwgNTQsIAotICAgIDI0MywgODgsIDE3NSwgMjUsIDUsIDI0MywgODgsIDE3NSwgMjUsIDUsIDI0NywgMjM2LCAyNDMsIDEzMSwgMTc1LCAyNSwgNSwgCi0gICAgMjQ3LCAyMzYsIDI0MywgODgsIDE3NSwgMjI0LCAxNDQsIDIzMywgMjEzLCAxNjgsIDEzNSwgMjM0LCAzNSwgMjM0LCAyNTIsIAotICAgIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMzQsIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMDUsIDE2OCwgMTM1LCAKLSAgICAyMzQsIDExMiwgMjM0LCAxMDEsIDE2OCwgMTM1LCAyMzQsIDExMiwgMjM0LCAxMDksIDE2OCwgMTM1LCAyMzQsIDExMiwgCi0gICAgMjIzLCAxNTcsIDE2OCwgMTM1LCAyMjksIDEwLCAyMjgsIDI1MywgMTY4LCAxMzUsIDI1MCwgOTUsIDI1MCwgMTU1LCAxNjgsIAotICAgIDEzNSwgMjUwLCA5NSwgMjUwLCAxMDMsIDE2OCwgMTM1LCAyNTAsIDk1LCAyNTAsIDE1NCwgMTY4LCAxMzUsIDIxOSwgNjEsIAotICAgIDIxOSwgNjAsIDE2OCwgMTM1LCAyNTAsIDk1LCAyNTAsIDkxLCAxNjgsIDEzNSwgMjEwLCAyNDUsIDIxMCwgMjUyLCAxNjgsIAotICAgIDEzNSwgMjQ3LCAxNTQsIDI1MCwgMTYyLCAxNjgsIDEzNSwgMjE2LCA0MywgMjI1LCAyNDIsIDE2OCwgMTM1LCAyMTYsIDE1OCwgCi0gICAgMjE2LCAyMDEsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjI5LCAyMDYsIDE2OCwgMTM1LCAyMTYsIDE1OCwgMjI1LCAxMTQsIAotICAgIDE2OCwgMTM1LCAyMjgsIDgwLCAyMjksIDEwMywgMTY4LCAxMzUsIDI0NywgMTU0LCAyNDgsIDc2LCAxNjgsIDEzNSwgMjE2LCAKLSAgICA0MywgMjE3LCA1NiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDEzMiwgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDIwNSwgCi0gICAgMTY4LCAxMzUsIDIxNiwgMTU4LCAyMTYsIDE1NSwgMTY4LCAxMzUsIDIyOCwgODAsIDIyNywgMjQyLCAxNjgsIDEzNSwgMjUxLCAKLSAgICAyMTQsIDI1MiwgMTcyLCAxNjgsIDEzNSwgMjI1LCAyMCwgMjI1LCA0NSwgMTY4LCAxMzUsIDIyNSwgMTI1LCAyMjUsIDExNiwgCi0gICAgMTY4LCAxMzUsIDI0NCwgNTIsIDI0NCwgMjA0LCAxNjgsIDEzNSwgMjI1LCAxMjUsIDIyNSwgMTQ0LCAxNjgsIDEzNSwgMjQ0LCAKLSAgICA1MiwgMjQ0LCAxODEsIDE2OCwgMTM1LCAyMjUsIDEyNSwgMjIxLCAyNDksIDE2OCwgMTM1LCAyMzAsIDE2NywgMTg2LCAxNjgsIAotICAgIDEzNSwgMjEwLCAyNDUsIDIxMSwgNzksIDE2OCwgMTM1LCAyMjIsIDIxNCwgMjIyLCAxNDEsIDE2OCwgMTM1LCAyMjIsIDE0MiwgCi0gICAgMTY4LCAxMzUsIDIzMiwgMTYzLCAyMzIsIDIxMiwgMTY4LCAxMzUsIDIzMiwgMTAzLCAxNjgsIDEzNSwgMjExLCAyMjgsIAotICAgIDIxMiwgNjEsIDE2OCwgMTM1LCAyMTksIDYxLCAyMjIsIDgsIDE2OCwgMTM1LCAyMTksIDYxLCAyMjIsIDExNiwgMTY4LCAKLSAgICAxMzUsIDIxOSwgNjEsIDIxOCwgODMsIDE2OCwgMTM1LCAyNDEsIDc2LCAyNDEsIDE2NiwgMTY4LCAxMzUsIDIzMiwgMTYzLCAKLSAgICAyNTAsIDc2LCAxNjgsIDEzNSwgMTQ0LCAyNTQsIDEyMywgMTY4LCAxMzUsIDI0MSwgNzYsIDIyOCwgNzUsIDE2OCwgMTM1LCAKLSAgICAyMjYsIDcyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDksIDI0MiwgMjQsIDE2OCwgMTM1LCAKLSAgICAyMjEsIDIzMiwgMjU1LCA4MiwgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIDE0NCwgMTY4LCAxMzUsIDIyMSwgMjMyLCA3NCwgCi0gICAgMTY4LCAxMzUsIDIyMSwgMjMyLCAyMzYsIDQwLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAKLSAgICAyMzIsIDIxNCwgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzIsIDY5LCAxNjgsIDEzNSwgMjIxLCAyMzIsIDIxNCwgMTE4LCAxNjgsIAotICAgIDEzNSwgMjI1LCAxMjcsIDE2OCwgMjQ5LCAxMDYsIDE2LCAyNTIsIDE3MywgMTY4LCAxMzUsIDIyMSwgMjMyLCA3NiwgMTY4LCAKLSAgICAxMzUsIDIyMSwgMjMyLCAyNTQsIDI1MiwgMTY4LCAxMzUsIDIyMSwgMjMyLCA3OCwgMTY4LCAxMzUsIDIyMSwgMjMyLCAyNTQsIAotICAgIDIxMSwgMjMxLCAyMDMsIDE2OCwgMTM1LCAyMjEsIDIzMiwgMjU0LCAyMTEsIDIzMSwgMjA0LCAxNjgsIDEzNSwgMjMzLCAKLSAgICAxMTIsIDE2OCwgMTM1LCAyMzEsIDIwMCwgMTY4LCAxMzUsIDIzMSwgMjAxLCAxNjgsIDEzNSwgMjMxLCAyMDksIDI0NSwgCi0gICAgMTg4LCAxNjgsIDEzNSwgMjMxLCAyMDksIDIxNiwgMTU3LCAxNjgsIDEzNSwgMjMxLCAyMDksIDIxNSwgMjI5LCAxNjgsIAotICAgIDEzNSwgMjMxLCAyMDksIDI1MCwgMTQzLCAxNjgsIDEzNSwgMjE2LCAxOTksIDE2OCwgMTM1LCAyMjgsIDIxMCwgMTY4LCAKLSAgICAxMzUsIDIxMSwgNzMsIDE2OCwgMTM1LCAyNDQsIDQzLCAxNjgsIDIxLCAyMTAsIDg2LCAxNjgsIDIxLCAxMTEsIDE2OCwgMjEsIAotICAgIDEwNSwgMTY4LCAyMSwgMTU4LCAxNjgsIDIxLCAxNjEsIDE2OCwgMjEsIDE5MCwgMTY4LCAyMSwgMTk1LCAxNjgsIDIxLCAKLSAgICAxOTksIDE2OCwgMjEsIDE5NiwgMTY4LCAyMSwgMjAxLCAxNjgsIDEzNSwgMjU0LCAxMTksIDE2OCwgMTM1LCAyMzQsIDExMCwgCi0gICAgMjA5LCAyMDksIDEsIDIzNCwgMzQsIDIwOSwgMjA5LCAxLCAyMzQsIDExMiwgMjE4LCAzNiwgMjA5LCAyMDksIDEsIDIzNCwgCi0gICAgMTEyLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgMjI5LCA5LCAyMDksIDIwOSwgMSwgMjQ5LCAyNDYsIDIwOSwgMjA5LCAxLCAKLSAgICAyMTksIDYxLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgMjI3LCAxMzgsIDIwOSwgMjA5LCAxLCAyNDcsIDE1MywgMjA5LCAyMDksIAotICAgIDEsIDExMiwgMjA5LCAyMDksIDEsIDIxNiwgMTU4LCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjE2LCAxNTgsIDIxNywgNjMsIAotICAgIDIwOSwgMjA5LCAxLCAyMjgsIDc5LCAyMDksIDIwOSwgMSwgMjUxLCAyMTMsIDIwOSwgMjA5LCAxLCAyMjUsIDE5LCAyMDksIAotICAgIDIwOSwgMSwgMjI1LCAxMjUsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyMTcsIDYzLCAyMDksIDIwOSwgMSwgCi0gICAgMjI1LCAxMjUsIDIxNywgNjMsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyMTgsIDM2LCAyMDksIDIwOSwgMSwgMjMwLCAxNjYsIAotICAgIDIwOSwgMjA5LCAxLCAyMTAsIDI0NCwgMjA5LCAyMDksIDEsIDIzMiwgMTYzLCAyMzIsIDIxMiwgMjA5LCAyMDksIDEsIDIzMiwgCi0gICAgMTYzLCAyMzIsIDEyNywgMjA5LCAyMDksIDEsIDIxMSwgMjI3LCAyMDksIDIwOSwgMSwgMjE5LCA2MSwgMjE4LCAzNiwgMjA5LCAKLSAgICAyMDksIDEsIDI0MSwgNzYsIDIxOCwgMzYsIDIwOSwgMjA5LCAxLCA3OCwgMjA5LCAyMDksIDEsIDI0MSwgNzYsIDIxNywgNjMsIAotICAgIDIwOSwgMjA5LCAyNDUsIDE3MSwgMjA5LCAyMDksIDI1LCA1LCA2MSwgMjA5LCAyMDksIDI1LCA1LCAyMzEsIDIwOSwgMjM0LCAKLSAgICAyNDAsIDIwOSwgMjA5LCAyNSwgNSwgMjU1LCA4MiwgMjA5LCAyMDksIDI1LCA1LCAyNTQsIDE0NCwgMjA5LCAyMDksIDI1LCAKLSAgICA1LCA3NCwgMjA5LCAyMDksIDI1LCA1LCAyMzYsIDQwLCAyMDksIDIwOSwgMjUsIDUsIDIxMSwgMTE3LCAyMDksIDIwOSwgMjUsIAotICAgIDUsIDIxMCwgMTY5LCAyMDksIDIwOSwgMjUsIDUsIDY5LCAyMDksIDIwOSwgMjUsIDUsIDIxNCwgMTE4LCAyMDksIDIwOSwgCi0gICAgMjUsIDUsIDIzMSwgMjA5LCAyMzQsIDE5LCAyMDksIDIwOSwgMjIwLCAxNDcsIDUsIDIzMiwgMTYyLCAyMDksIDIwOSwgMjIwLCAKLSAgICAxNDcsIDUsIDIyNywgMTM4LCAyMDksIDIwOSwgMjUsIDUsIDc2LCAyMDksIDIwOSwgMjUsIDUsIDI0NSwgMjAzLCAyMDksIAotICAgIDIwOSwgMjUsIDUsIDc4LCAyMDksIDIwOSwgMjUsIDUsIDI1MywgMTc1LCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMjEwLCAKLSAgICAyMDksIDIwOSwgMjM0LCAzNSwgMjMzLCAxNDEsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA5LCAyNDUsIDE4OCwgMjA5LCAyMDksIAotICAgIDEzOCwgMjMxLCAyMDksIDIxNiwgMTU3LCAyMDksIDIwOSwgMTM4LCAyMzEsIDIwOSwgMjE2LCAxMTgsIDIwOSwgMjA5LCAKLSAgICAxMzgsIDIzMSwgMjA5LCAyNTAsIDIzMSwgMjA5LCAyMDksIDI1MSwgMTIsIDc5LCAyMDksIDIwOSwgMjI4LCAyMTksIDIwOSwgCi0gICAgMjA5LCAyMSwgMjEwLCA4NiwgMjA5LCAyMDksIDIxLCAxMTEsIDIwOSwgMjA5LCAyMSwgMTA1LCAyMDksIDIwOSwgMjEsIAotICAgIDE1OCwgMjA5LCAyMDksIDIxLCAxNjEsIDIwOSwgMjA5LCAyMSwgMTkwLCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIAotICAgIDIxLCAxOTksIDIwOSwgMjA5LCAyMSwgMTk2LCAyMDksIDIwOSwgMjEsIDIwMSwgMjA5LCAyMDksIDI0MSwgNzYsIDIyOCwgCi0gICAgNzksIDIwOSwgMjA5LCAyNDEsIDc2LCAyMzAsIDE2NiwgMjA5LCAyMDksIDEsIDIzNCwgMTEzLCAyNDIsIDE4MSwgMjA5LCAKLSAgICAyMDksIDEsIDIzNCwgMTEzLCAyMjcsIDEzOCwgNjMsIDMsIDIyNiwgMjA4LCA2MywgMTY0LCAyNDIsIDEyMiwgMjExLCAwLCAKLSAgICAyMzAsIDI1MywgMjE1LCAxOTAsIDYxLCA2MywgMTY0LCAyNDIsIDEyMiwgMjExLCAwLCAyMzAsIDI1MywgMjU1LCAxNjgsIAotICAgIDIyMiwgMjE4LCAyNTIsIDg1LCAxODYsIDYzLCAxNjQsIDI0MiwgMTIyLCAyMTEsIDAsIDIzMCwgMjUzLCAyNTUsIDE2OCwgCi0gICAgMjQyLCAxMjIsIDIxNSwgMTc0LCAxODYsIDYzLCAxNjQsIDY1LCAyMTEsIDAsIDIzMCwgMjUzLCAyMzEsIDk4LCAxODYsIDYzLCAKLSAgICAxNjQsIDI1MCwgNCwgMjExLCAwLCAyMzAsIDI1MywgMjIwLCAxMTEsIDE4NiwgNjMsIDE2NCwgMjUwLCAyNDcsIDIxMSwgMCwgCi0gICAgMjMwLCAyNTMsIDIyNSwgMTE1LCAyMjAsIDk4LCAxODYsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNTMsIDIxNSwgMTc0LCAKLSAgICAyMjAsIDk4LCAxODYsIDYzLCAxNjQsIDIyMSwgMjEwLCAyMjAsIDk3LCA2MywgMTY0LCAyNTEsIDEzNiwgMjExLCAwLCAyMzAsIAotICAgIDI1MiwgNjMsIDE2NCwgMjUxLCAyMzEsIDIyMCwgNSwgMjExLCAwLCAyMzAsIDI1MiwgNjMsIDE2NCwgMjM1LCAyMDQsIDIxNSwgCi0gICAgMTczLCA2MywgMTY0LCAyNDgsIDY5LCAyMTUsIDE3NCwgMjUxLCAxMzUsIDYzLCAxNjQsIDIyMCwgOTcsIDYzLCAxNjQsIAotICAgIDIyNywgMTQzLCAyMjAsIDk3LCA2MywgMTY0LCAyMTUsIDE3NCwgMjIwLCA5NywgNjMsIDE2NCwgMjI3LCAxNDMsIDIxNSwgCi0gICAgMTc0LCAyMjAsIDk3LCA2MywgMTY0LCAyMjIsIDIzOSwgMjUwLCAxMzAsIDIxOCwgMjM4LCAyMjAsIDk3LCA2MywgMTY0LCAKLSAgICAyMjMsIDQ1LCAyNDIsIDE1MywgMjIwLCA5NywgNjMsIDE2NCwgMjUwLCAyNDcsIDI1NSwgMTcyLCAyMjIsIDE0NiwgMjMxLCAKLSAgICA5NywgMjAwLCAyNTEsIDE1LCA2MywgMTY0LCAyNDIsIDEyMiwgMjE1LCAxNzMsIDYzLCAyMzIsIDE1MCwgNSwgMjUwLCAxNjMsIAotICAgIDIyMiwgMTQ1LCA2MywgMjMyLCAxNTAsIDUsIDIzMywgMiwgMjIyLCAxNDUsIDYzLCAyNTMsIDIyMCwgNSwgMjIwLCAxMDcsIAotICAgIDI0MywgNzIsIDI1NSwgMTczLCAyMjIsIDE0NSwgNjMsIDI1MywgMjIwLCA1LCAyNTUsIDE3MCwgMTkxLCA2MywgMjUzLCAKLSAgICAyMjAsIDUsIDIyMSwgMTg0LCAyMTUsIDE2OSwgNjMsIDUsIDIyMywgMTMzLCAyNDcsIDE2NywgMjQzLCA3MSwgNjMsIDUsIAotICAgIDIyMywgMTMzLCAyNDcsIDE2NywgMjQyLCAxODMsIDYzLCA1LCAyMjMsIDEzMywgMjQ3LCAxNjcsIDI0MiwgMTIzLCA2MywgNSwgCi0gICAgMjIzLCAxMzMsIDIyOSwgMjI0LCAyNDMsIDcxLCA2MywgNSwgMjIzLCAxMzMsIDIyOSwgMjI0LCAyNDIsIDE4MywgNjMsIDUsIAotICAgIDIyMywgMTMzLCAyNDcsIDE2NywgMjIzLCAxMzMsIDIyOSwgMjIzLCA2MywgMjEsIDIxMCwgODYsIDYzLCAyMSwgMTExLCA2MywgCi0gICAgMjEsIDEwNSwgNjMsIDIxLCAxNTgsIDYzLCAyMSwgMTYxLCA2MywgMjEsIDE5MCwgNjMsIDIxLCAxOTUsIDYzLCAyMSwgMTk5LCAKLSAgICA2MywgMjEsIDE5NiwgNjMsIDIxLCAyMDEsIDYzLCAyMSwgMTYzLCAxMTEsIDYzLCAyMSwgMTYzLCAxMDUsIDYzLCAyMSwgCi0gICAgMTYzLCAxNTgsIDYzLCAyMSwgMTYzLCAxNjEsIDYzLCAyMSwgMTYzLCAxOTAsIDYzLCAyMSwgMTYzLCAxOTUsIDYzLCAyMSwgCi0gICAgMTYzLCAxOTksIDYzLCAyMSwgMTYzLCAxOTYsIDYzLCAyMSwgMTYzLCAyMDEsIDYzLCAyMSwgMTYzLCAyMTAsIDg2LCA2MywgCi0gICAgMTY0LCAyNTEsIDEzOCwgMjIyLCAxNDUsIDYzLCAxNjQsIDIyOSwgNzMsIDI1MSwgNzYsIDIyNywgMTUzLCAyMTAsIDI1LCAKLSAgICA2MywgMTY0LCAyNTAsIDI0NywgMjU1LCAxNzIsIDIyMiwgMTQ2LCAyNTEsIDc3LCAyMzAsIDIwNywgMjUxLCAxNSwgNjMsIAotICAgIDE2NCwgMjI5LCA3MywgMjUxLCA3NiwgMjIwLCAxMDgsIDIyMiwgMTQ1LCA2MywgMTY0LCAyNTAsIDE0MCwgMjMwLCAyNTIsIAotICAgIDYzLCAxNjQsIDIxNSwgMTg1LCAyNTUsIDE2OSwgNjMsIDE2NCwgMjQyLCAxMDcsIDIyMiwgMTQ2LCAyNDIsIDcwLCA2MywgCi0gICAgMTY0LCAyNDIsIDEwNywgMjIyLCAxNDYsIDI0MiwgNzYsIDYzLCAxNjQsIDI1NCwgMTI0LCAyMzQsIDEyOSwgMjQyLCA3MCwgCi0gICAgNjMsIDE2NCwgMjU0LCAxMjQsIDIzNCwgMTI5LCAyNDIsIDc2LCA2MywgNSwgMjExLCA2NSwgMjE1LCAxNzIsIDYzLCA1LCAKLSAgICAyMzEsIDE3MiwgMjE1LCAxNzIsIDYzLCAxLCAxNzYsIDYzLCAxLCAyMzQsIDEzOCwgNjMsIDEsIDI0MywgMTQyLCA2MywgMSwgCi0gICAgMjQzLCAwLCA2MywgMSwgMjI5LCA4MiwgNjMsIDEsIDI1MSwgNDEsIDYzLCAxLCAyNTAsIDE2NSwgNjMsIDEsIDIzNSwgMTQ3LCAKLSAgICA2MywgMSwgMjI3LCAxNjksIDYzLCAxLCAyMTUsIDE1NywgNjMsIDEsIDIxNSwgMTQ1LCA2MywgMSwgMjQ4LCAxNDMsIDYzLCAKLSAgICAxLCAyNDgsIDEyNywgNjMsIDEsIDIyOCwgMTE1LCA2MywgMSwgMjE3LCAxMDYsIDYzLCAxLCAyMTYsIDIwOSwgNjMsIDEsIAotICAgIDI0OCwgMjI5LCA2MywgMSwgMjQ4LCAzMywgNjMsIDEsIDE5OCwgNjMsIDEsIDE5MSwgNjMsIDEsIDIyNSwgMTUwLCA2MywgMSwgCi0gICAgMjUyLCAxOTksIDYzLCAxLCAyNTIsIDI2LCA2MywgMSwgMTg2LCA2MywgMSwgMjE1LCAxODQsIDYzLCAxLCAyMTUsIDE3NiwgCi0gICAgNjMsIDEsIDI0NiwgNDYsIDYzLCAxLCAyNDYsIDQxLCA2MywgMSwgMjEyLCA2NSwgNjMsIDEsIDIxMCwgODIsIDYzLCAxLCAKLSAgICAyMTAsIDExNiwgNjMsIDEsIDI1NSwgMTc1LCA2MywgMSwgMTkyLCA2MywgMSwgMjA1LCA2MywgMSwgMjMzLCAxNDEsIDYzLCAKLSAgICAxLCAyMjAsIDEwNCwgNjMsIDEsIDIxOCwgMjI1LCA2MywgMSwgMjA2LCA2MywgMSwgMTYyLCA2MywgMSwgNjEsIDYzLCAxLCAKLSAgICAyMzMsIDIzNywgNjMsIDEsIDI0NCwgODUsIDIwNSwgNjMsIDEsIDIzNCwgNTIsIDYzLCAxLCAyMjIsIDE4MSwgNjMsIDI1LCAKLSAgICA1LCAyNTUsIDgyLCA2MywgMjUsIDUsIDc0LCA2MywgMjUsIDUsIDIzNiwgNDAsIDYzLCAyNSwgNSwgNjksIDYzLCAyNSwgNSwgCi0gICAgMjE0LCAxMTgsIDYzLCAyNSwgNSwgMTQ5LCAxNTMsIDYzLCAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgNjMsIDI1LCA1LCAxNDksIAotICAgIDE1NiwgNjMsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA2MywgMjUsIDUsIDc2LCA2MywgMjUsIDUsIDI0NSwgMjE3LCA2MywgCi0gICAgMjUsIDUsIDc4LCA2MywgMjUsIDUsIDIyNiwgMTg3LCA2MywgNSwgMjIyLCAyMjQsIDIxOCwgODUsIDIyOSwgODMsIDIyMiwgCi0gICAgMjEzLCA2MywgNSwgMjIyLCAyMTgsIDI1MiwgODQsIDYzLCAyNSwgNSwgMjIzLCA1MiwgNzQsIDYzLCAyNSwgNSwgMjIzLCAKLSAgICA1MiwgMjM2LCA0MCwgNjMsIDUsIDIyNywgMTUzLCAyMTAsIDI2LCAyMjksIDIzMSwgMjQ4LCAyMjksIDYzLCA1LCAyMTksIAotICAgIDczLCAyMzMsIDY2LCA2MywgMTY0LCAyNDIsIDM2LCA2MywgMTY0LCAyMjYsIDYxLCA2MywgNSwgMjMzLCA2OSwgMjIyLCAKLSAgICAxNDUsIDYzLCA1LCAyMTEsIDcwLCAyMjIsIDE0NSwgNjMsIDUsIDIzMywgNzAsIDIxNSwgMTg1LCAyNTEsIDE1LCA2MywgNSwgCi0gICAgMjMxLCAxMDAsIDI1MSwgMTUsIDYzLCA1LCAyNDIsIDEyNiwgMjUxLCAxNiwgMjIzLCA0MywgNjMsIDUsIDI0MiwgMTI2LCAKLSAgICAyMzEsIDkwLCAyMjMsIDQzLCA2MywgNSwgMjM1LCAyMDAsIDIzMSwgMTAwLCAyNTEsIDE1LCA2MywgMjE4LCA3NCwgNSwgCi0gICAgMjMzLCA3MCwgMjE1LCAxODUsIDI1MSwgMTUsIDYzLCAyMTgsIDc0LCA1LCAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDIxOCwgCi0gICAgNzQsIDUsIDIzNSwgMjAwLCAyMzEsIDEwMCwgMjUxLCAxNSwgNjMsIDIxOCwgNzQsIDEsIDE3NiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDIzNCwgMTM4LCA2MywgMjE4LCA3NCwgMSwgMjQzLCAxNDIsIDYzLCAyMTgsIDc0LCAxLCAyNDMsIDAsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMjksIDgyLCA2MywgMjE4LCA3NCwgMSwgMjUxLCA0MSwgNjMsIDIxOCwgNzQsIDEsIDI1MCwgMTY1LCA2MywgMjE4LCAKLSAgICA3NCwgMSwgMjM1LCAxNDcsIDYzLCAyMTgsIDc0LCAxLCAyMjcsIDE2OSwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgMTU3LCA2MywgCi0gICAgMjE4LCA3NCwgMSwgMjE1LCAxNDUsIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDE0MywgNjMsIDIxOCwgNzQsIDEsIDI0OCwgMTI3LCAKLSAgICA2MywgMjE4LCA3NCwgMSwgMjI4LCAxMTUsIDYzLCAyMTgsIDc0LCAxLCAyMTcsIDEwNiwgNjMsIDIxOCwgNzQsIDEsIDIxNiwgCi0gICAgMjA5LCA2MywgMjE4LCA3NCwgMSwgMjQ4LCAyMjksIDYzLCAyMTgsIDc0LCAxLCAyNDgsIDMzLCA2MywgMjE4LCA3NCwgMSwgCi0gICAgMTk4LCA2MywgMjE4LCA3NCwgMSwgMTkxLCA2MywgMjE4LCA3NCwgMSwgMjI1LCAxNTAsIDYzLCAyMTgsIDc0LCAxLCAyNTIsIAotICAgIDE5OSwgNjMsIDIxOCwgNzQsIDEsIDI1MiwgMjYsIDYzLCAyMTgsIDc0LCAxLCAxODYsIDYzLCAyMTgsIDc0LCAxLCAyMTUsIAotICAgIDE4NCwgNjMsIDIxOCwgNzQsIDEsIDIxNSwgMTc2LCA2MywgMjE4LCA3NCwgMSwgMjQ2LCA0NiwgNjMsIDIxOCwgNzQsIDEsIAotICAgIDI0NiwgNDEsIDYzLCAyMTgsIDc0LCAxLCAyMTIsIDY1LCA2MywgMjE4LCA3NCwgMSwgMjEwLCA4MiwgNjMsIDIxOCwgNzQsIAotICAgIDEsIDIxMCwgMTE2LCA2MywgMjE4LCA3NCwgMSwgMjU1LCAxNzUsIDYzLCAyMTgsIDc0LCAxLCAxOTIsIDYzLCAyMTgsIDc0LCAKLSAgICAxLCAyMDUsIDYzLCAyMTgsIDc0LCAxLCAyMzMsIDE0MSwgNjMsIDIxOCwgNzQsIDEsIDIyMCwgMTA0LCA2MywgMjE4LCA3NCwgCi0gICAgMSwgMjE4LCAyMjUsIDYzLCAyMTgsIDc0LCAxLCAyMDYsIDYzLCAyMTgsIDc0LCAxLCAxNjIsIDYzLCAyMTgsIDc0LCAxLCAKLSAgICA2MSwgNjMsIDIxOCwgNzQsIDEsIDIzMywgMjM3LCA2MywgMjE4LCA3NCwgMSwgMjQ0LCA4NSwgMjEyLCA2NSwgNjMsIDIxOCwgCi0gICAgNzQsIDEsIDI0NCwgODUsIDE5MiwgNjMsIDIxOCwgNzQsIDEsIDI0NCwgODUsIDIwNSwgNjMsIDIzMywgMjI0LCAyMjIsIAotICAgIDE0MywgMjM0LCAxMzgsIDYzLCAyMzMsIDIyNCwgMjIyLCAxNDMsIDIzNCwgMTM5LCAyNTEsIDc3LCAyMzAsIDIwNywgMjUxLCAKLSAgICAxNSwgNjMsIDI1MSwgNCwgNSwgMTE0LCAyNTIsIDc4LCA2MywgMjUxLCA0LCA1LCAxOTMsIDI1MiwgNzgsIDYzLCAyNTEsIDQsIAotICAgIDUsIDI1MSwgNSwgMjE3LCAyMSwgNjMsIDI1MSwgNCwgNSwgMjIxLCAyMDksIDI1NSwgMTc0LCA2MywgMTYsIDI0NiwgOTksIAotICAgIDI1MSwgMTMzLCA2MywgMTYsIDIyMywgMTMyLCAyMjIsIDIyNSwgNjMsIDE2LCAyMjYsIDgxLCAyNDMsIDcwLCA2MywgMTYsIAotICAgIDIyMywgMTMyLCAyMjIsIDIyNiwgMjIzLCA0NSwgMjQyLCAxNTIsIDYzLCAxNiwgMjI1LCAxMTUsIDE5MSwgNjMsIDE2LCAKLSAgICAyMjgsIDY0LCAyNTEsIDEzMywgNjMsIDE2LCAyMjgsIDY0LCAyNTEsIDEzNCwgMjI3LCAxNDMsIDI1NSwgMTcxLCA2MywgMTYsIAotICAgIDIyOCwgNjQsIDI1MSwgMTM0LCAyNDIsIDEyNCwgMjU1LCAxNzEsIDYzLCAxNiwgMjI4LCA2NCwgMjUxLCAxMzQsIDI1MSwgCi0gICAgNzcsIDI1NSwgMTcxLCA2MywgNSwgMjIzLCAxMzMsIDIyOSwgMjI0LCAyMjMsIDEzMywgMjQ3LCAxNjYsIDYzLCA1LCAyMjMsIAotICAgIDEzMywgMjI5LCAyMjQsIDI0MiwgMTIzLCA2MywgMTY0LCAyNTEsIDEzNywgMjIwLCA1LCAyNDIsIDIyMiwgMjMwLCAyNTMsIAotICAgIDIyMywgNDQsIDYzLCAxNjQsIDIzMCwgMTY4LCAyMTEsIDAsIDI0MiwgMjIyLCAyMzAsIDI1MywgMjIzLCA0NCwgNjMsIDE2NCwgCi0gICAgMjI3LCAxNDMsIDIxNSwgMTczLCA2MywgMTY0LCA2NSwgMjUxLCAxNjAsIDIyMiwgMjE1LCAyMTEsIDAsIDIzMCwgMjUzLCAKLSAgICAyMzEsIDk4LCAxODYsIDYzLCAxNjQsIDI1MCwgNCwgMjUxLCAxNjAsIDIyMiwgMjE1LCAyMTEsIDAsIDIzMCwgMjUzLCAyMjAsIAotICAgIDExMSwgMTg2LCAyMjIsIDI1MywgMjE4LCAwLCA1MCwgMjMzLCA1MSwgMjE4LCAwLCA1MCwgMjIyLCAyNTMsIDIxOCwgMCwgNSwgCi0gICAgMiwgMjQ3LCAxMjYsIDIzMywgNTEsIDIxOCwgMCwgNSwgMiwgMjQ3LCAxMjYsIDYzLCAxNjQsIDIzMywgNjEsIDIzMSwgMTAxLCAKLSAgICAyMjIsIDE0NSwgNjMsIDE2NCwgMjE1LCAyNTEsIDIzMSwgMTAxLCAyMjIsIDE0NSwgNjgsIDEsIDE3NiwgNjgsIDEsIDIzNCwgCi0gICAgMTM4LCA2OCwgMSwgMjQzLCAxNDIsIDY4LCAxLCAyNDMsIDAsIDY4LCAxLCAyMjksIDgyLCA2OCwgMSwgMjUxLCA0MSwgNjgsIAotICAgIDEsIDI1MCwgMTY1LCA2OCwgMSwgMjM1LCAxNDcsIDY4LCAxLCAyMzUsIDEyMCwgNjgsIDEsIDIyNywgMTY5LCA2OCwgMSwgCi0gICAgMjI4LCA4MSwgNjgsIDEsIDIxNSwgMTU3LCA2OCwgMSwgMjE1LCAxNDUsIDY4LCAxLCAyNDgsIDE0MywgNjgsIDEsIDI0OCwgCi0gICAgMTI3LCA2OCwgMSwgMjI4LCAxMTUsIDY4LCAxLCAyMTcsIDEwNiwgNjgsIDEsIDIxNiwgMjA5LCA2OCwgMSwgMjQ4LCAyMjksIAotICAgIDY4LCAxLCAyNDgsIDMzLCA2OCwgMSwgMTk4LCA2OCwgMSwgMTkxLCA2OCwgMSwgMjI1LCAxNTAsIDY4LCAxLCAyNTIsIDE5OSwgCi0gICAgNjgsIDEsIDI1MiwgMjYsIDY4LCAxLCAxODYsIDY4LCAxLCAxOTIsIDY4LCAxLCAyMDUsIDY4LCAxLCAyMzMsIDE0MSwgNjgsIAotICAgIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAyMzIsIDE5MCwgNjgsIDEsIDYxLCA2OCwgMSwgCi0gICAgMjIwLCA4OCwgNjEsIDY4LCAxLCA3NCwgNjgsIDEsIDIzNiwgNDAsIDY4LCAxLCA2OSwgNjgsIDEsIDIxNCwgMTE4LCA2OCwgCi0gICAgMSwgNzYsIDY4LCAxLCAyMzAsIDE1NiwgNzYsIDY4LCAxLCA3OCwgNjgsIDEsIDI1MywgMjAwLCA2OCwgMjUsIDUsIDIxNywgCi0gICAgNjUsIDI1NSwgODIsIDY4LCAyNSwgNSwgMjU1LCA4MiwgNjgsIDI1LCA1LCA3NCwgNjgsIDI1LCA1LCAyMzYsIDQwLCA2OCwgCi0gICAgMjUsIDUsIDY5LCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc2LCA2OCwgMjUsIDUsIDI1NCwgMjEwLCA2OCwgCi0gICAgMjUsIDUsIDIzMCwgMTU2LCAyMzYsIDQwLCA2OCwgMjUsIDUsIDIzMCwgMTU2LCA3OCwgNjgsIDI1LCA1LCAxNjAsIDQ4LCAKLSAgICA2OCwgNSwgMjU0LCA4MywgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCA2OCwgNSwgMjEzLCAxNTIsIDY4LCA1LCAKLSAgICAyNTMsIDI0MywgNjgsIDExNywgNSwgMTQ3LCAxOTIsIDY4LCAxMTcsIDUsIDE0NywgMjA1LCA2OCwgMTE3LCA1LCAxNDcsIAotICAgIDIxMiwgNjUsIDY4LCAxMTcsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzksIDIwNiwgNjgsIDIxLCAyMTAsIDg2LCA2OCwgCi0gICAgMjEsIDExMSwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgNjgsIDIxLCAxOTAsIDY4LCAyMSwgMTk1LCAKLSAgICA2OCwgMjEsIDE5OSwgNjgsIDIxLCAxOTYsIDY4LCAyMSwgMjAxLCA2OCwgNSwgMjMyLCAxOTgsIDIyMSwgMTc0LCA2OCwgNSwgCi0gICAgMjIxLCAxNzQsIDY4LCAxNiwgMjMyLCAxNTksIDY4LCAxNiwgMjQ5LCAyMjEsIDY4LCAxNiwgMjU0LCAyMjksIDY4LCAxNiwgCi0gICAgMjQzLCA1NSwgNjgsIDEsIDIyMCwgMTA0LCA2OCwgMSwgMjE4LCAyMjUsIDY4LCAxLCAxNDksIDE1MywgNjgsIDEsIDE0OSwgCi0gICAgMjIyLCAxODIsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxOTEsIDY4LCAyNSwgNSwgMTQ5LCAxNTMsIDY4LCAKLSAgICAyNSwgNSwgMTQ5LCAyMjIsIDE4MiwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIDI1LCA1LCAxNDksIDIzMiwgMTkxLCA2OCwgCi0gICAgMSwgMjMwLCAxNTYsIDIyOSwgODIsIDY4LCAxLCAyMzAsIDE1NiwgMjM1LCAxMjAsIDY4LCAxLCAyMzAsIDE1NiwgMjUyLCAKLSAgICAxMTksIDY4LCAxLCAyMzAsIDE1NiwgMjUyLCAxMTQsIDY4LCAxMTcsIDUsIDIzMCwgMTU2LCAxNDcsIDE5OCwgNjgsIDExNywgCi0gICAgNSwgMjMwLCAxNTYsIDE0NywgMTg2LCA2OCwgMTE3LCA1LCAyMzAsIDE1NiwgMTQ3LCAyMzMsIDE0MSwgNjgsIDEsIDIyMCwgCi0gICAgMTEwLCAyMzQsIDIxOSwgMjIwLCAxMDQsIDY4LCAyNSwgNSwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyNDUsIDYzLCA2OCwgMTM4LCAKLSAgICAxNjQsIDIyMCwgMTEwLCAyMzQsIDIxOSwgMjQxLCAyNTQsIDY4LCAxMzgsIDE2NCwgMjIwLCAxMTAsIDIzNCwgMjE5LCAyMzQsIAotICAgIDE4OSwgMjI1LCAxMjQsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyMDksIDY4LCAxLCAyMTIsIAotICAgIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjI0LCAxMTcsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIAotICAgIDI0NSwgNjMsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIxNCwgMjE0LCA2OCwgNSwgMjEyLCA3LCAKLSAgICAyMjQsIDExMSwgMjM0LCAyMTksIDIxNiwgMzAsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyOSwgCi0gICAgNjgsIDUsIDIxMiwgNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyMTYsIDI4LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDExMSwgMjM0LCAKLSAgICAyMTksIDIxNiwgMjcsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTExLCAyMzQsIDIxOSwgMjE2LCAyNiwgNjgsIDEsIDI0NSwgCi0gICAgMjI3LCAyMjQsIDExMSwgMjM0LCAyMTksIDIyOCwgMTE1LCA2OCwgMSwgMjQ1LCAyMjcsIDIyNCwgMTExLCAyMzQsIDIxOSwgCi0gICAgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIyNywgMjI0LCAxMTEsIDIzNCwgMjE5LCAyNDIsIDIyNCwgNjgsIDI1LCA1LCAyNDMsIAotICAgIDY2LCAyMzQsIDIxOSwgNzQsIDY4LCAyNSwgNSwgMjM0LCAxOTQsIDIyNiwgMjM4LCA2OCwgMjUsIDUsIDIzNCwgMTk0LCA2OSwgCi0gICAgNjgsIDI1LCA1LCAyMzQsIDE5NCwgMjQ1LCAyMTcsIDY4LCAxLCAyMjAsIDg4LCAxNzYsIDY4LCAxLCAyMjAsIDg4LCAyMzQsIAotICAgIDEzOCwgNjgsIDEsIDIyMCwgODgsIDI0MywgMTQyLCA2OCwgMSwgMjIwLCA4OCwgMjUxLCA0MSwgNjgsIDEsIDIyMCwgODgsIAotICAgIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4OCwgMjI3LCAxNjksIDY4LCAxLCAyMjAsIDg4LCAyNDgsIDIyOSwgNjgsIDEsIDIyMCwgCi0gICAgODgsIDE5OCwgNjgsIDEsIDIyMCwgODgsIDIyNSwgMTUwLCA2OCwgMSwgMjIwLCA4OCwgMjQ0LCAyMDQsIDY4LCAxLCAyMjAsIAotICAgIDg4LCAyNTIsIDE5OSwgNjgsIDEsIDIyMCwgODgsIDIxNiwgMjA5LCA2OCwgMSwgMjIwLCA4OCwgMTYyLCA2OCwgMTE3LCA1LCAKLSAgICAyMjAsIDg4LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCA4OCwgMjU1LCA4MiwgNjgsIDI1LCA1LCAyMjAsIDg4LCAKLSAgICA3NiwgNjgsIDI1LCA1LCAyMjAsIDg4LCAxNjAsIDQ4LCA2OCwgMjUsIDUsIDIyMCwgODgsIDQwLCAyMTEsIDExNywgNjgsIDUsIAotICAgIDIyMCwgODgsIDIxNiwgMjksIDY4LCA1LCAyMjAsIDg4LCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4OCwgMjE2LCAyNiwgNjgsIAotICAgIDUsIDIyMCwgODgsIDIxNiwgMjUsIDY4LCA1LCAyMjAsIDg4LCAyNDksIDE2MCwgMjE2LCAyOSwgNjgsIDUsIDIyMCwgODgsIAotICAgIDI0OSwgMTYwLCAyMTYsIDI4LCA2OCwgNSwgMjIwLCA4OCwgMjQ5LCAxNjAsIDI0NSwgMTYxLCAyMTYsIDMxLCA2OCwgMSwgCi0gICAgMjIyLCAxMzAsIDIyNiwgNjcsIDI0NCwgMjA0LCA2OCwgNSwgMjIyLCAxMzAsIDIyNiwgNjcsIDIxNiwgMjYsIDY4LCAyMjAsIAotICAgIDg4LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODgsIDIxLCAxMTEsIDY4LCAyMjAsIDg4LCAyMSwgMTA1LCA2OCwgMjIwLCA4OCwgCi0gICAgMjEsIDE1OCwgNjgsIDIyMCwgODgsIDIxLCAxNjEsIDY4LCAyMjAsIDg4LCAyMSwgMTkwLCA2OCwgMjIwLCA4OCwgMjEsIAotICAgIDE5NSwgNjgsIDIyMCwgODgsIDIxLCAxOTksIDY4LCAyMjAsIDg4LCAyMSwgMTk2LCA2OCwgMjIwLCA4OCwgMjEsIDIwMSwgCi0gICAgNjgsIDUsIDIzNCwgMTMyLCAyMTYsIDMwLCA2OCwgNSwgMjM0LCAxMzIsIDIxNiwgMjgsIDY4LCAyNSwgNSwgMjU0LCAxOTksIAotICAgIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTk5LCAyNTQsIDIxMCwgNjgsIDE2LCAyMjAsIDg4LCAxMTEsIDY4LCAxNiwgMjIwLCA4OCwgCi0gICAgMjQ1LCAzOCwgOTgsIDYsIDEsIDI1NCwgMTMxLCA5OCwgNiwgMSwgMjUyLCAxNjAsIDk4LCA2LCAxLCAyNDMsIDExMywgOTgsIAotICAgIDYsIDEsIDI0NywgMTM2LCA5OCwgNiwgMSwgMjQ1LCAxNTgsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIDYsIDEsIDIxMCwgCi0gICAgODksIDk4LCA2LCAxLCAyMTcsIDYxLCA5OCwgNiwgMSwgMjM2LCA2LCA5OCwgNiwgMSwgMjM0LCAyNDAsIDk4LCA2LCAxLCAKLSAgICAyMzMsIDg3LCA5OCwgNiwgMSwgMjMxLCAxOTAsIDk4LCA2LCAxLCAyMjksIDIwMCwgOTgsIDYsIDEsIDIyNiwgMjAwLCA5OCwgCi0gICAgNiwgMSwgMjI2LCAyMSwgOTgsIDYsIDEsIDIxMCwgNzgsIDk4LCA2LCAxLCAyMjMsIDE3NCwgOTgsIDYsIDEsIDIyMSwgMjQ1LCAKLSAgICA5OCwgNiwgMSwgMjE3LCA1MSwgOTgsIDYsIDEsIDIxNCwgMTkwLCA5OCwgNiwgMSwgMjI1LCAxNDMsIDk4LCA2LCAxLCAyMzQsIAotICAgIDEyNywgOTgsIDYsIDEsIDI0MiwgMjQ4LCA5OCwgNiwgMSwgMjI0LCA3NiwgOTgsIDYsIDEsIDIyMCwgMjIsIDk4LCA2LCAxLCAKLSAgICAyNTAsIDEwNSwgOTgsIDYsIDEsIDI1MSwgMTUsIDk4LCA2LCAxLCAyMzUsIDEwNiwgOTgsIDYsIDEsIDI1MCwgNDgsIDk4LCAKLSAgICA2LCAxLCAyNTAsIDE1MSwgOTgsIDYsIDEsIDIxMSwgMTYzLCA5OCwgNiwgMSwgMjM1LCAxMTcsIDk4LCA2LCAxLCAyNDIsIAotICAgIDUwLCA5OCwgNiwgMSwgMjQxLCAyNDUsIDk4LCA2LCAxLCAyNDEsIDE4MiwgOTgsIDYsIDEsIDIxMiwgMjIsIDk4LCA2LCAxLCAKLSAgICAyNDIsIDExLCA5OCwgNiwgMSwgMjQxLCA3MiwgOTgsIDYsIDEsIDIxMCwgMjQ2LCA5OCwgNiwgMSwgMjU0LCAyNDEsIDk4LCAKLSAgICAxLCAyNTQsIDEzMSwgOTgsIDEsIDI1MiwgMTYwLCA5OCwgMSwgMjQzLCAxMTMsIDk4LCAxLCAyNDcsIDEzNiwgOTgsIDEsIAotICAgIDI0NSwgMTU4LCA5OCwgMSwgMjEzLCAxNjAsIDk4LCAxLCAyMTAsIDg5LCA5OCwgMSwgMjE3LCA2MSwgOTgsIDEsIDIzNiwgNiwgCi0gICAgOTgsIDEsIDIzNCwgMjQwLCA5OCwgMSwgMjMzLCA4NywgOTgsIDEsIDIzMSwgMTkwLCA5OCwgMSwgMjI5LCAyMDAsIDk4LCAxLCAKLSAgICAyMjYsIDIwMCwgOTgsIDEsIDIyNiwgMjEsIDk4LCAxLCAyMTAsIDc4LCA5OCwgMSwgMjIzLCAxNzQsIDk4LCAxLCAyMjEsIAotICAgIDI0NSwgOTgsIDEsIDIxNywgNTEsIDk4LCAxLCAyMTQsIDE5MCwgOTgsIDEsIDIyNSwgMTQzLCA5OCwgMSwgMjM0LCAxMjcsIAotICAgIDk4LCAxLCAyNDIsIDI0OCwgOTgsIDEsIDIyNCwgNzYsIDk4LCAxLCAyMjAsIDIyLCA5OCwgMSwgMjUwLCAxMDUsIDk4LCAxLCAKLSAgICAyNTEsIDE1LCA5OCwgMSwgMjM1LCAxMDYsIDk4LCAxLCAyNTAsIDQ4LCA5OCwgMSwgMjUwLCAxNTEsIDk4LCAxLCAyMTEsIAotICAgIDE2MywgOTgsIDEsIDIzNSwgMTE3LCA5OCwgMSwgMjQyLCA1MCwgOTgsIDEsIDI0MSwgMjQ1LCA5OCwgMSwgMjQxLCAxODIsIAotICAgIDk4LCAxLCAyMTIsIDIyLCA5OCwgMSwgMjQyLCAxMSwgOTgsIDEsIDI0MSwgNzIsIDk4LCAxLCAyNDQsIDEyOSwgOTgsIDEsIAotICAgIDIxMCwgMjQ2LCA5OCwgMSwgMjQ1LCAxNzMsIDk4LCAxLCAyMTUsIDk0LCAyNDMsIDExMywgOTgsIDEsIDI1NCwgMjA1LCA5OCwgCi0gICAgMjI2LCAxOSwgMjIwLCAxMzksIDU4LCAxLCA5OCwgMjI5LCAyMDAsIDk4LCAxLCAyNTQsIDI0MSwgOTgsIDEsIDI0MiwgMTAsIAotICAgIDUwLCA5OCwgMSwgMjMzLCAxMzMsIDUwLCAyNCwgMTAwLCAyMzQsIDY0LCAyNCwgMTAwLCAyMTgsIDIxNywgMjQsIDEwMCwgCi0gICAgMjI4LCAyMzEsIDI0LCAxMDAsIDIxNiwgMTAyLCAyNCwgMTAwLCAyMTgsIDIwNiwgMjQsIDEwMCwgMjIzLCAyOSwgMjQsIAotICAgIDEwMCwgMjMwLCAyMjIsIDI0LCAxMDAsIDIyNSwgOTgsIDI0LCAxMDAsIDIxOCwgMjE0LCAyNCwgMTAwLCAyMTksIDE1MCwgCi0gICAgMjQsIDEwMCwgMjE4LCAyMTEsIDI0LCAxMDAsIDIzNiwgNjMsIDI0LCAxMDAsIDI1MCwgNTQsIDI0LCAxMDAsIDIxOCwgMjIxLCAKLSAgICAyNCwgMTAwLCAyNTAsIDExNCwgMjQsIDEwMCwgMjM0LCAxMTYsIDI0LCAxMDAsIDIxNiwgMTc0LCAyNCwgMTAwLCAyMjUsIAotICAgIDEzNCwgMjQsIDEwMCwgMjQxLCAxNzksIDI0LCAxMDAsIDIyOCwgMjI3LCAyNCwgMTAwLCAyMTgsIDIxNSwgMjQsIDEwMCwgCi0gICAgMjI4LCAyMjEsIDI0LCAxMDAsIDIyOCwgMjI1LCAyNCwgMTAwLCAyMTYsIDk5LCAyNCwgMTAwLCAyMjMsIDE3LCAyNCwgMTAwLCAKLSAgICAyMTgsIDIxMywgMjQsIDEwMCwgMjIzLCAyNywgMjQsIDEwMCwgMjM0LCAyMjQsIDI0LCAxMDAsIDIzMCwgMjE1LCAyNCwgCi0gICAgMTAwLCAyMzQsIDIyNywgMjQsIDEwMCwgMjI1LCA5MywgMjQsIDEwMCwgMjI1LCA5MSwgMjQsIDEwMCwgMjI1LCA3OSwgMjQsIAotICAgIDEwMCwgMjI1LCA4NywgMjQsIDEwMCwgMjI1LCA4NSwgMjQsIDEwMCwgMjI1LCA4MiwgMjQsIDEwMCwgMjI1LCA4NCwgMjQsIAotICAgIDEwMCwgMjI1LCA4MSwgMjQsIDEwMCwgMjI1LCA4NiwgMjQsIDEwMCwgMjI1LCA5NiwgMjQsIDEwMCwgMjI1LCA5NywgMjQsIAotICAgIDEwMCwgMjI1LCA4MCwgMjQsIDEwMCwgMjI1LCA5MCwgMjQsIDEwMCwgMjM0LCAyMjUsIDI0LCAxMDAsIDIzNCwgMjIzLCAyNCwgCi0gICAgMTAwLCAyMTksIDE0MywgMjQsIDEwMCwgMjE5LCAxNDEsIDI0LCAxMDAsIDIxOSwgMTMzLCAyNCwgMTAwLCAyMTksIDEzNiwgCi0gICAgMjQsIDEwMCwgMjE5LCAxNDIsIDI0LCAxMDAsIDIxOSwgMTM4LCAyNCwgMTAwLCAyMTksIDEzNywgMjQsIDEwMCwgMjE5LCAKLSAgICAxMzUsIDI0LCAxMDAsIDIxOSwgMTQ2LCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgMjE5LCAxNDksIDI0LCAxMDAsIAotICAgIDIxOSwgMTQ0LCAyNCwgMTAwLCAyMTksIDEzNCwgMjQsIDEwMCwgMjE5LCAxMzksIDI0LCAxMDAsIDIxOSwgMTQ3LCAyNCwgCi0gICAgMTAwLCAyNTAsIDk4LCAyNCwgMTAwLCAyNTAsIDk2LCAyNCwgMTAwLCAyNTAsIDE3NiwgMjQsIDEwMCwgMjUwLCAxNzQsIDI0LCAKLSAgICAxMDAsIDIyNiwgMzYsIDI0LCAxMDAsIDIzNiwgNTgsIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAxMDAsIDIzNiwgNTcsIDI0LCAKLSAgICAxMDAsIDIzNiwgNTQsIDI0LCAxMDAsIDIzNiwgNTIsIDI0LCAxMDAsIDIzNiwgNTYsIDI0LCAxMDAsIDIxOCwgMjE4LCAyNCwgCi0gICAgMTAwLCAyMzYsIDYxLCAyNCwgMTAwLCAyMzYsIDYyLCAyNCwgMTAwLCAyMzYsIDUwLCAyNCwgMTAwLCAyMzYsIDU1LCAyNCwgCi0gICAgMTAwLCAyMTEsIDI2LCAyNCwgMTAwLCAyNTAsIDUzLCAyNCwgMTAwLCAyNTAsIDk5LCAyNCwgMTAwLCAyNTAsIDk3LCAyNCwgCi0gICAgMTAwLCAyNTAsIDE3NywgMjQsIDEwMCwgMjUwLCAxNzUsIDI0LCAxMDAsIDI1MCwgMTEyLCAyNCwgMTAwLCAyNTAsIDExMywgCi0gICAgMjQsIDEwMCwgMjUwLCAxMDAsIDI0LCAxMDAsIDI1MCwgMTc4LCAyNCwgMTAwLCAyMjUsIDEzMiwgMjQsIDEwMCwgMjM0LCAKLSAgICAyMjYsIDI0LCAxMDAsIDIxOCwgMjE5LCAyNCwgMTAwLCAyMTEsIDMyLCAyNCwgMTAwLCAyMzQsIDU1LCAyNCwgMTAwLCAyMjgsIAotICAgIDIyMywgMjQsIDEwMCwgMjI4LCAyMjksIDI0LCAxMDAsIDIyOCwgMjI4LCAyNCwgMTAwLCAyMTYsIDk2LCAyNCwgMTAwLCAKLSAgICAyNDQsIDExMSwgMjQsIDE0MywgMjQ0LCAxMTEsIDI0LCAxNDMsIDYxLCAyNCwgMTQzLCAyNTQsIDI1MiwgMjQsIDE0MywgCi0gICAgMTkyLCAyNCwgMTQzLCAyMTEsIDkyLCAyNCwgMTQzLCAyNDUsIDEyNSwgMjQsIDE0MywgNzYsIDI0LCAxNDMsIDIxMSwgMzYsIAotICAgIDI0LCAxNDMsIDIxMSwgNDcsIDI0LCAxNDMsIDc4LCAyNCwgMTQzLCAyMTIsIDY1LCAyNCwgMTQzLCAyMTIsIDYyLCAyNCwgCi0gICAgMTQzLCAyMjYsIDIzOCwgMjQsIDE0MywgMjEwLCAyNDQsIDI0LCAxNDMsIDY5LCAyNCwgMTQzLCAyMTIsIDExLCAyNCwgMTQzLCAKLSAgICAyMTIsIDIyLCAyNCwgMTQzLCAyMTEsIDI1MCwgMjQsIDE0MywgMjEwLCAyMTIsIDI0LCAxNDMsIDI0NSwgNjMsIDI0LCAxNDMsIAotICAgIDIxMSwgOCwgMjQsIDE0MywgNzQsIDI0LCAxNDMsIDI1NSwgMTY2LCAyNCwgMTQzLCAyNTUsIDE2NSwgMjQsIDE0MywgMjExLCAKLSAgICAxMDYsIDI0LCAxNDMsIDIxMSwgMTA0LCAyNCwgMTQzLCAyNDUsIDEyMywgMjQsIDE0MywgMjQ1LCAxMjIsIDI0LCAxNDMsIAotICAgIDI0NSwgMTI0LCAyNCwgMTQzLCAyMTEsIDM1LCAyNCwgMTQzLCAyMTEsIDM0LCAyNCwgMTQzLCAyMjcsIDg4LCAyNCwgMTQzLCAKLSAgICAyMjcsIDg5LCAyNCwgMTQzLCAyMjcsIDgyLCAyNCwgMTQzLCAyMjcsIDg3LCAyNCwgMTQzLCAyMjcsIDg1LCAyNCwgMTQzLCAKLSAgICAyMTAsIDIzOCwgMjQsIDE0MywgMjEwLCAyMzcsIDI0LCAxNDMsIDIxMCwgMjM2LCAyNCwgMTQzLCAyMTAsIDIzOSwgMjQsIAotICAgIDE0MywgMjEwLCAyNDAsIDI0LCAxNDMsIDIxNSwgMzAsIDI0LCAxNDMsIDIxNSwgMjksIDI0LCAxNDMsIDIxNSwgMjcsIDI0LCAKLSAgICAxNDMsIDIxNSwgMjQsIDI0LCAxNDMsIDIxNSwgMjUsIDI0LCAxNDMsIDIxMCwgMjExLCAyNCwgMTQzLCAyMTAsIDIwOCwgMjQsIAotICAgIDE0MywgMjEwLCAyMDksIDI0LCAxNDMsIDIxMCwgMjAzLCAyNCwgMTQzLCAyMTAsIDIwNCwgMjQsIDE0MywgMjEwLCAyMDUsIAotICAgIDI0LCAxNDMsIDIxMCwgMjA3LCAyNCwgMTQzLCAyNDUsIDU3LCAyNCwgMTQzLCAyNDUsIDU5LCAyNCwgMTQzLCAyMTEsIDcsIAotICAgIDI0LCAxNDMsIDI0MCwgMTYwLCAyNCwgMTQzLCAyNDAsIDE1MiwgMjQsIDE0MywgMjQwLCAxNTUsIDI0LCAxNDMsIDI0MCwgCi0gICAgMTUzLCAyNCwgMTQzLCAyNDAsIDE1NywgMjQsIDE0MywgMjQwLCAxNTksIDI0LCAxNDMsIDI1NCwgNDIsIDI0LCAxNDMsIAotICAgIDI1NCwgMzksIDI0LCAxNDMsIDI1NCwgMzcsIDI0LCAxNDMsIDI1NCwgMzgsIDI0LCAxNDMsIDIxOCwgMjIyLCAyNCwgMTQzLCAKLSAgICAyNTUsIDE2NywgMjQsIDE0MywgMjExLCAxMDUsIDI0LCAxNDMsIDIxMSwgMzMsIDI0LCAxNDMsIDIyNywgODQsIDI0LCAxNDMsIAotICAgIDIyNywgODMsIDI0LCA5MCwgMjM0LCA2NCwgMjQsIDkwLCAyMTgsIDIxNywgMjQsIDkwLCAyMzQsIDU3LCAyNCwgOTAsIDIyOCwgCi0gICAgMjMxLCAyNCwgOTAsIDIyOCwgMjI5LCAyNCwgOTAsIDIyOCwgMjI4LCAyNCwgOTAsIDIxNiwgMTAyLCAyNCwgOTAsIDIyMywgCi0gICAgMjksIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgOTAsIDIyMywgMTQsIDI0LCA5MCwgMjIzLCA5LCAKLSAgICAyNCwgOTAsIDIyMywgNCwgMjQsIDkwLCAyMjMsIDE1LCAyNCwgOTAsIDIyMywgMjcsIDI0LCA5MCwgMjMwLCAyMjIsIDI0LCAKLSAgICA5MCwgMjI1LCA5OCwgMjQsIDkwLCAyMjUsIDg3LCAyNCwgOTAsIDIxOSwgMTUwLCAyNCwgOTAsIDIxOCwgMjExLCAyNCwgOTAsIAotICAgIDIzNiwgNjMsIDI0LCA5MCwgMjUwLCA1NCwgMjQsIDkwLCAyNTAsIDExNCwgMjQsIDkwLCAyMzQsIDExNiwgMjQsIDkwLCAKLSAgICAyMTYsIDE3NCwgMjQsIDkwLCAyMjUsIDEzNCwgMjQsIDkwLCAyNDEsIDE3OSwgMjQsIDkwLCAyMzQsIDU4LCAyNCwgOTAsIAotICAgIDIzNCwgNTYsIDI0LCA5MCwgMjI4LCAyMjcsIDI0LCA5MCwgMjI4LCAyMjEsIDI0LCA5MCwgMjI4LCAyMjMsIDI0LCA5MCwgCi0gICAgMjI4LCAyMjYsIDI0LCA5MCwgMjI4LCAyMjIsIDI0LCA5MCwgMjE2LCA5OSwgMjQsIDkwLCAyMTYsIDk2LCAyNCwgOTAsIAotICAgIDIyMywgMjIsIDI0LCA5MCwgMjIzLCAxNywgMjQsIDkwLCAyMjMsIDMsIDI0LCA5MCwgMjIzLCAyLCAyNCwgOTAsIDIxOCwgCi0gICAgMjEzLCAyNCwgOTAsIDIyMywgMTksIDI0LCA5MCwgMjIzLCAxOCwgMjQsIDkwLCAyMjMsIDExLCAyNCwgOTAsIDIyMywgMTMsIAotICAgIDI0LCA5MCwgMjIzLCAyNiwgMjQsIDkwLCAyMjMsIDYsIDI0LCA5MCwgMjIzLCAxNiwgMjQsIDkwLCAyMjMsIDI1LCAyNCwgCi0gICAgOTAsIDIyMywgMSwgMjQsIDkwLCAyMzAsIDIxOCwgMjQsIDkwLCAyMzAsIDIxMywgMjQsIDkwLCAyMzAsIDIxNSwgMjQsIDkwLCAKLSAgICAyMzAsIDIxMiwgMjQsIDkwLCAyMzAsIDIxMCwgMjQsIDkwLCAyMzAsIDIxNiwgMjQsIDkwLCAyMzAsIDIyMSwgMjQsIDkwLCAKLSAgICAyMzAsIDIxOSwgMjQsIDkwLCAyMzQsIDIyNywgMjQsIDkwLCAyMjUsIDg5LCAyNCwgOTAsIDIyNSwgOTAsIDI0LCA5MCwgCi0gICAgMjI1LCA5NSwgMjQsIDkwLCAyMzQsIDIyNSwgMjQsIDkwLCAyMTksIDE0MywgMjQsIDkwLCAyMTksIDEzMywgMjQsIDkwLCAKLSAgICAyMTksIDEzNiwgMjQsIDkwLCAyMTksIDEzOCwgMjQsIDkwLCAyMjYsIDM2LCAyNCwgOTAsIDIzNiwgNTgsIDI0LCA5MCwgCi0gICAgMjM2LCA1MSwgMjQsIDkwLCAyMTgsIDIxOCwgMjQsIDkwLCAyMzYsIDU5LCAyNCwgOTAsIDIxMSwgMjYsIDI0LCA5MCwgMjExLCAKLSAgICAyMiwgMjQsIDkwLCAyMTEsIDIzLCAyNCwgOTAsIDIyNSwgMTMyLCAyNCwgOTAsIDIzNCwgMjI2LCAyNCwgOTAsIDI0MSwgCi0gICAgMTc3LCAyNCwgOTAsIDI0MSwgMTc1LCAyNCwgOTAsIDI0MSwgMTc4LCAyNCwgOTAsIDI0MSwgMTc2LCAyNCwgOTAsIDIxMSwgCi0gICAgMzIsIDI0LCA5MCwgMjM0LCA2MCwgMjQsIDkwLCAyMzQsIDU5LCAyNCwgOTAsIDIzNCwgNjMsIDI0LCA5MCwgMjM0LCA2MSwgCi0gICAgMjQsIDkwLCAyMzQsIDYyLCAyNCwgOTAsIDIxOCwgMjE1LCAyOSwgMywgMTYyLCAyOSwgMywgMjQwLCAyMjksIDI5LCAzLCAKLSAgICAyNDEsIDE4NywgMjksIDMsIDI0MiwgNTMsIDI5LCAzLCAyNDEsIDIyNywgMjksIDMsIDI0MSwgMjQ1LCAyOSwgMywgMjQxLCAKLSAgICA3NSwgMjksIDMsIDI0MSwgNzQsIDI5LCAzLCAyMzMsIDE0MSwgMjksIDMsIDIzMiwgMTAzLCAyOSwgMywgMjMyLCAyNDcsIAotICAgIDI5LCAzLCAyMzMsIDE0MCwgMjksIDMsIDIzMywgNTYsIDI5LCAzLCAyMzMsIDY0LCAyOSwgMywgMjMyLCAxNjIsIDI5LCAzLCAKLSAgICAyMzIsIDc1LCAyOSwgMywgMjQxLCAxOTYsIDI5LCAzLCAyNDEsIDE5MCwgMjksIDMsIDI0MSwgMTkyLCAyOSwgMywgMjQxLCAKLSAgICAxOTUsIDI5LCAzLCAyNDEsIDE5MywgMjksIDMsIDI0MSwgMTk0LCAyOSwgMywgMjQxLCAxOTEsIDI5LCAzLCAyNDEsIDE4OSwgCi0gICAgMjksIDMsIDE4NiwgMjksIDMsIDIzMCwgMTA3LCAyOSwgMywgMjMwLCAyMzUsIDI5LCAzLCAyMzEsIDI0MiwgMjksIDMsIAotICAgIDIzMSwgODUsIDI5LCAzLCAyMzEsIDk2LCAyOSwgMywgMjMwLCAxNjYsIDI5LCAzLCAyMzAsIDQ3LCAyOSwgMywgMjE3LCAKLSAgICAxNjQsIDI5LCAzLCAyMTcsIDE1OCwgMjksIDMsIDIxNywgMTYwLCAyOSwgMywgMjE3LCAxNjMsIDI5LCAzLCAyMTcsIDE2MSwgCi0gICAgMjksIDMsIDIxNywgMTYyLCAyOSwgMywgMjE3LCAxNTksIDI5LCAzLCAyMTcsIDE1NywgMjksIDMsIDIwNSwgMjksIDMsIAotICAgIDIyMiwgMTQyLCAyOSwgMywgMjIzLCAzOCwgMjksIDMsIDIyMywgMTg3LCAyOSwgMywgMjIzLCAxMTEsIDI5LCAzLCAyMjMsIAotICAgIDEzMSwgMjksIDMsIDIyMiwgMjEzLCAyOSwgMywgMjIyLCAxMTEsIDI5LCAzLCAyMDYsIDI5LCAzLCAyMTgsIDg0LCAyOSwgMywgCi0gICAgMjE5LCAxOTMsIDI5LCAzLCAyMjIsIDMzLCAyOSwgMywgMjIxLCAxNzIsIDI5LCAzLCAyMjEsIDE4MywgMjksIDMsIDIxOSwgCi0gICAgNjAsIDI5LCAzLCAyMTcsIDI1NCwgMjksIDMsIDIyMCwgMTA0LCAyOSwgMywgMjE5LCAyMjcsIDI5LCAzLCAyMjAsIDM0LCAKLSAgICAyOSwgMywgMjIwLCAxMDAsIDI5LCAzLCAyMjAsIDYzLCAyOSwgMywgMjIwLCA2NSwgMjksIDMsIDIyMCwgOSwgMjksIDMsIAotICAgIDIxOSwgMjEwLCAyOSwgMywgMjI0LCA5MSwgMjksIDMsIDIyNCwgMzMsIDI5LCAzLCAyMjQsIDU2LCAyOSwgMywgMjI0LCA5MCwgCi0gICAgMjksIDMsIDIyNCwgNzEsIDI5LCAzLCAyMjQsIDcyLCAyOSwgMywgMjI0LCA0NSwgMjksIDMsIDIyNCwgNDQsIDI5LCAzLCAKLSAgICAyMjMsIDI0NSwgMjksIDMsIDIyMywgMjQxLCAyOSwgMywgMjIzLCAyNDQsIDI5LCAzLCAyMjMsIDI0MiwgMjksIDMsIDIyMywgCi0gICAgMjQzLCAyOSwgMywgMjI0LCA2OCwgMjksIDMsIDIyNCwgNjIsIDI5LCAzLCAyMjQsIDY0LCAyOSwgMywgMjI0LCA2NywgMjksIAotICAgIDMsIDIyNCwgNjUsIDI5LCAzLCAyMjQsIDY2LCAyOSwgMywgMjI0LCA2MywgMjksIDMsIDIyNCwgNjEsIDI5LCAzLCAyMjQsIAotICAgIDU3LCAyOSwgMywgMjI0LCA2MCwgMjksIDMsIDIyNCwgNTgsIDI5LCAzLCAyMjQsIDU5LCAyOSwgMywgMjUyLCAxOTksIDI5LCAKLSAgICAzLCAyNTEsIDEzMywgMjksIDMsIDI1MiwgMTQsIDI5LCAzLCAyNTIsIDE5NywgMjksIDMsIDI1MiwgNzQsIDI5LCAzLCAyNTIsIAotICAgIDgzLCAyOSwgMywgMjUxLCAyMTMsIDI5LCAzLCAyNTEsIDkxLCAyOSwgMywgMjE0LCAyNywgMjksIDMsIDIxMiwgMTE2LCAyOSwgCi0gICAgMywgMjEzLCAxNzYsIDI5LCAzLCAyMTQsIDI2LCAyOSwgMywgMjEzLCAyNTAsIDI5LCAzLCAyMTMsIDI1NSwgMjksIDMsIAotICAgIDIxMywgMTM4LCAyOSwgMywgMjEyLCAxMDcsIDI5LCAzLCAyMTcsIDEwNiwgMjksIDMsIDIxNSwgMTE5LCAyOSwgMywgMjE2LCAKLSAgICAxMTgsIDI5LCAzLCAyMTcsIDEwMiwgMjksIDMsIDIxNywgMTIsIDI5LCAzLCAyMTcsIDIzLCAyOSwgMywgMTEyLCAyOSwgMywgCi0gICAgMjE1LCA4MCwgMjksIDMsIDI1MSwgNDEsIDI5LCAzLCAyNDksIDEyMCwgMjksIDMsIDI1MCwgNTksIDI5LCAzLCAyNTEsIDQwLCAKLSAgICAyOSwgMywgMjUwLCAxOTAsIDI5LCAzLCAyNTAsIDE5OCwgMjksIDMsIDI0OSwgMjQ2LCAyOSwgMywgMjQ5LCA4OSwgMjksIDMsIAotICAgIDIxMSwgMTY1LCAyOSwgMywgMjExLCAxNDEsIDI5LCAzLCAyMTEsIDE1NywgMjksIDMsIDIxMSwgMTY0LCAyOSwgMywgMjExLCAKLSAgICAxNjEsIDI5LCAzLCAyMTEsIDE2MiwgMjksIDMsIDIxMSwgMTQ4LCAyOSwgMywgMjExLCAxNDcsIDI5LCAzLCAyMTEsIDEzNiwgCi0gICAgMjksIDMsIDIxMSwgMTMyLCAyOSwgMywgMjExLCAxMzUsIDI5LCAzLCAyMTEsIDEzMywgMjksIDMsIDIxMSwgMTM0LCAyOSwgCi0gICAgMywgMTk4LCAyOSwgMywgMjI3LCAyNDIsIDI5LCAzLCAyMjgsIDIzOCwgMjksIDMsIDIyOSwgMjMwLCAyOSwgMywgMjI5LCAKLSAgICAxMDgsIDI5LCAzLCAyMjksIDExMiwgMjksIDMsIDIyOCwgNzksIDI5LCAzLCAyMjcsIDE3OCwgMjksIDMsIDIyNywgMTY5LCAKLSAgICAyOSwgMywgMjI3LCAxMzIsIDI5LCAzLCAyMjcsIDE1MiwgMjksIDMsIDIyNywgMTY4LCAyOSwgMywgMjI3LCAxNTksIDI5LCAKLSAgICAzLCAyMjcsIDE2MCwgMjksIDMsIDIyNywgMTM4LCAyOSwgMywgMjI3LCAxMjMsIDI5LCAzLCAyNDIsIDE4NywgNjEsIDI5LCAKLSAgICAzLCAyNDIsIDE4NywgNjksIDI5LCAzLCAyNDIsIDE4NywgNzQsIDI5LCAzLCAyNDIsIDE4NywgMjU1LCA4MiwgMjksIDMsIAotICAgIDI0MiwgMTg3LCAyNDUsIDIxNywgMjksIDMsIDI0MiwgMTg3LCA3NiwgMjksIDMsIDI0MiwgMTg3LCA3OCwgMjksIDMsIDI0MiwgCi0gICAgMTg3LCAyMTIsIDY1LCAyOSwgMywgMTc2LCAyOSwgMywgMjMzLCAyMjMsIDI5LCAzLCAyMzQsIDk4LCAyOSwgMywgMjM1LCAKLSAgICAxNiwgMjksIDMsIDIzNCwgMTg3LCAyOSwgMywgMjM0LCAxODgsIDI5LCAzLCAyMzQsIDM0LCAyOSwgMywgMjM0LCAzMywgMjksIAotICAgIDMsIDIzMywgMTg4LCAyOSwgMywgMjMzLCAxODIsIDI5LCAzLCAyMzMsIDE4NywgMjksIDMsIDIzMywgMTgzLCAyOSwgMywgCi0gICAgMjMzLCAxODQsIDI5LCAzLCAyMzMsIDE3NywgMjksIDMsIDIzMywgMTcxLCAyOSwgMywgMjMzLCAxNzMsIDI5LCAzLCAyMzMsIAotICAgIDE3NiwgMjksIDMsIDIzMywgMTc0LCAyOSwgMywgMjMzLCAxNzUsIDI5LCAzLCAyMzMsIDE3MiwgMjksIDMsIDIzMywgMTcwLCAKLSAgICAyOSwgMywgMjMzLCAxNjYsIDI5LCAzLCAyMzMsIDE2OSwgMjksIDMsIDIzMywgMTY3LCAyOSwgMywgMjMzLCAxNjgsIDI5LCAKLSAgICAzLCAyMTIsIDY1LCAyOSwgMywgMjExLCAxOTUsIDI5LCAzLCAyMTEsIDI1MCwgMjksIDMsIDIxMiwgNjQsIDI5LCAzLCAyMTIsIAotICAgIDE3LCAyOSwgMywgMjEyLCAyMiwgMjksIDMsIDIxMSwgMjI3LCAyOSwgMywgMjExLCAyMjYsIDI5LCAzLCAyMjUsIDE0MiwgCi0gICAgNjEsIDI5LCAzLCAyMjUsIDE0MiwgNjksIDI5LCAzLCAyMjUsIDE0MiwgNzQsIDI5LCAzLCAyMjUsIDE0MiwgMjU1LCA4MiwgCi0gICAgMjksIDMsIDIyNSwgMTQyLCAyNDUsIDIxNywgMjksIDMsIDIyNSwgMTQyLCA3NiwgMjksIDMsIDIyNSwgMTQyLCA3OCwgMjksIAotICAgIDMsIDIxMCwgMTE2LCAyOSwgMywgMjEwLCAxMywgMjksIDMsIDIxMCwgNDQsIDI5LCAzLCAyMTAsIDExNSwgMjksIDMsIDIxMCwgCi0gICAgOTIsIDI5LCAzLCAyMTAsIDk0LCAyOSwgMywgMjEwLCAyMywgMjksIDMsIDIxMCwgMCwgMjksIDMsIDIxMCwgODIsIDI5LCAzLCAKLSAgICAyMTAsIDYyLCAyOSwgMywgMjEwLCA2OSwgMjksIDMsIDIxMCwgODEsIDI5LCAzLCAyMTAsIDczLCAyOSwgMywgMjEwLCA3NCwgCi0gICAgMjksIDMsIDIxMCwgNjcsIDI5LCAzLCAyMTAsIDUzLCAyOSwgMywgMTkyLCAyOSwgMywgMjEwLCAyMTIsIDI5LCAzLCAyMTEsIAotICAgIDgsIDI5LCAzLCAyMTEsIDEwMywgMjksIDMsIDIxMSwgNDQsIDI5LCAzLCAyMTEsIDQ3LCAyOSwgMywgMjEwLCAyNDQsIDI5LCAKLSAgICAzLCAyMTAsIDIzNSwgMjksIDMsIDI0OCwgMjI5LCAyOSwgMywgMjQ2LCA4NiwgMjksIDMsIDI0OCwgMTEsIDI5LCAzLCAyNDgsIAotICAgIDIyOCwgMjksIDMsIDI0OCwgODUsIDI5LCAzLCAyNDgsIDk4LCAyOSwgMywgMjQ3LCAxNTMsIDI5LCAzLCAyNDYsIDU1LCAyOSwgCi0gICAgMywgMjQ4LCAxNDMsIDI5LCAzLCAyNDgsIDEwOCwgMjksIDMsIDI0OCwgMTIwLCAyOSwgMywgMjQ4LCAxNDIsIDI5LCAzLCAKLSAgICAyNDgsIDEzMCwgMjksIDMsIDI0OCwgMTMxLCAyOSwgMywgMjQ4LCAxMTMsIDI5LCAzLCAyNDgsIDk5LCAyOSwgMywgMjM1LCAKLSAgICAxNDcsIDI5LCAzLCAyMzUsIDU3LCAyOSwgMywgMjM1LCAxMTQsIDI5LCAzLCAyMzUsIDE0NiwgMjksIDMsIDIzNSwgMTMwLCAKLSAgICAyOSwgMywgMjM1LCAxMzIsIDI5LCAzLCAyMzUsIDc0LCAyOSwgMywgMjM1LCAzNywgMjksIDMsIDI0MywgMTQyLCAyOSwgMywgCi0gICAgMjQyLCAxMjAsIDI5LCAzLCAyNDIsIDIyMSwgMjksIDMsIDI0MywgMTM5LCAyOSwgMywgMjQzLCA2MiwgMjksIDMsIDI0MywgCi0gICAgNjksIDI5LCAzLCAyNDIsIDE4MSwgMjksIDMsIDI0MiwgMTgwLCAyOSwgMywgMjQyLCA4NSwgMjksIDMsIDI0MiwgODEsIDI5LCAKLSAgICAzLCAyNDIsIDg0LCAyOSwgMywgMjQyLCA4MiwgMjksIDMsIDI0MiwgODMsIDI5LCAzLCAyNDMsIDM2LCAyOSwgMywgMjQzLCAKLSAgICAxNiwgMjksIDMsIDI0MywgMjYsIDI5LCAzLCAyNDMsIDM1LCAyOSwgMywgMjQzLCAzMCwgMjksIDMsIDI0MywgMzEsIDI5LCAKLSAgICAzLCAyNDMsIDIwLCAyOSwgMywgMjQzLCA1LCAyOSwgMywgMjE2LCAyMDksIDI5LCAzLCAyMTYsIDEzNywgMjksIDMsIDIxNiwgCi0gICAgMTc2LCAyOSwgMywgMjE2LCAyMDgsIDI5LCAzLCAyMTYsIDE5NSwgMjksIDMsIDIxNiwgMTk2LCAyOSwgMywgMjE2LCAxNTcsIAotICAgIDI5LCAzLCAyMTYsIDEyOSwgMjksIDMsIDI1MCwgMTY1LCAyOSwgMywgMjUwLCA3NywgMjksIDMsIDI1MCwgMTE4LCAyOSwgMywgCi0gICAgMjUwLCAxNjQsIDI5LCAzLCAyNTAsIDEzNiwgMjksIDMsIDI1MCwgMTM5LCAyOSwgMywgMjUwLCA5NCwgMjksIDMsIDI1MCwgCi0gICAgNjYsIDI5LCAzLCAyMjUsIDE1MCwgMjksIDMsIDIyNSwgMTE3LCAyOSwgMywgMjI1LCAxMzYsIDI5LCAzLCAyMjUsIDE0OSwgCi0gICAgMjksIDMsIDIyNSwgMTM4LCAyOSwgMywgMjI1LCAxMzksIDI5LCAzLCAyMjUsIDEyNCwgMjksIDMsIDIyNSwgMTEzLCAyOSwgCi0gICAgMywgMjE1LCAxODQsIDI5LCAzLCAyMTUsIDE2NCwgMjksIDMsIDIxNSwgMTY4LCAyOSwgMywgMjE1LCAxODMsIDI5LCAzLCAKLSAgICAyMTUsIDE3OCwgMjksIDMsIDIxNSwgMTc5LCAyOSwgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE2MiwgMjksIDMsIDIxNSwgCi0gICAgMzksIDI5LCAzLCAyMTUsIDMxLCAyOSwgMywgMjE1LCAzNSwgMjksIDMsIDIxNSwgMzgsIDI5LCAzLCAyMTUsIDM2LCAyOSwgCi0gICAgMywgMjE1LCAzNywgMjksIDMsIDIxNSwgMzMsIDI5LCAzLCAyMTUsIDMyLCAyOSwgMywgMjQ0LCAyMDQsIDI5LCAzLCAyNDMsIAotICAgIDI0MSwgMjksIDMsIDI0NCwgMTI5LCAyOSwgMywgMjQ0LCAyMDMsIDI5LCAzLCAyNDQsIDE1NSwgMjksIDMsIDI0NCwgMTYyLCAKLSAgICAyOSwgMywgMjQ0LCA1MSwgMjksIDMsIDI0MywgMjIwLCAyOSwgMywgMTkxLCAyOSwgMywgMjI0LCAxNTMsIDI5LCAzLCAyMjUsIAotICAgIDExMSwgMjksIDMsIDIyNiwgOTMsIDI5LCAzLCAyMjUsIDIxNCwgMjksIDMsIDIyNSwgMjI0LCAyOSwgMywgMjI1LCAxOSwgCi0gICAgMjksIDMsIDIyNCwgMTE3LCAyOSwgMywgMjIyLCAxMDEsIDI5LCAzLCAyMzAsIDM2LCAyOSwgMywgMjQzLCAyMTQsIDI5LCAKLSAgICAzOCwgMjQzLCA2MCwgMjIsIDI1LCAyMzMsIDI5LCA3OSwgMjksIDM4LCAyNSwgMjMzLCAyOSwgNzksIDI5LCAzOCwgMjQzLCAKLSAgICA2MCwgNzksIDI5LCAyMjEsIDE3NSwgNzksIDI5LCAyMTEsIDIwOCwgMjksIDI0MywgMjM2LCAyMTgsIDEzMSwgMjksIDI0OSwgCi0gICAgMjI3LCAyOSwgMjIwLCAxNTIsIDI5LCAyNDksIDIzNCwgMjksIDIyNCwgMjAyLCAyNDksIDIzNCwgMjksIDIyNCwgMTYsIDc5LCAKLSAgICAyOSwgMjI2LCAxOSwgMjIwLCAxMzksIDI5LCAyMSwgMTExLCAyOSwgMjEsIDEwNSwgMjksIDIxLCAxNTgsIDI5LCAyMSwgCi0gICAgMTYxLCAyOSwgMjEsIDE5MCwgMjksIDIxLCAxOTUsIDI5LCAyMSwgMTk5LCAyOSwgMjEsIDE5NiwgMjksIDIxLCAyMDEsIDI5LCAKLSAgICA1NCwgMjE2LCAyNDgsIDI5LCA1NCwgMjE1LCA3MywgMjksIDU0LCAyMTYsIDE2MywgMjksIDU0LCAyNDQsIDIzLCAyOSwgNTQsIAotICAgIDI0NCwgMTIyLCAyOSwgNTQsIDIxOSwgMTEzLCAyOSwgNTQsIDIyMCwgMTE4LCAyOSwgNTQsIDI0NSwgMTkyLCAyOSwgNTQsIAotICAgIDIyOCwgMjAwLCAyOSwgNTQsIDI0MCwgMjE3LCAyOSwgNTQsIDIxNiwgMjQ5LCAyMTYsIDE0OCwgMjksIDMsIDIyMSwgMTc5LCAKLSAgICAyMzAsIDQ3LCAyOSwgMywgMjMwLCA0MywgMjksIDMsIDIzMCwgNDQsIDI5LCAzLCAyMzAsIDQ1LCAyOSwgMywgMjIxLCAxNzksIAotICAgIDI1MSwgOTEsIDI5LCAzLCAyNTEsIDg4LCAyOSwgMywgMjUxLCA4OSwgMjksIDMsIDI1MSwgOTAsIDI5LCAzLCAyMjEsIDE3OSwgCi0gICAgMjQzLCAyMjAsIDI5LCAzLCAyNDMsIDIxNiwgMjksIDMsIDI0MywgMjE3LCAyOSwgMywgMjQzLCAyMTgsIDI5LCAzLCAyMjEsIAotICAgIDE3OSwgMjI0LCAxMTcsIDI5LCAzLCAyMjQsIDExMywgMjksIDMsIDIyNCwgMTE0LCAyOSwgMywgMjI0LCAxMTUsIDI5LCAKLSAgICAyMTYsIDMyLCAxNjQsIDIxMCwgMjQ3LCAyOSwgMjE2LCAzMiwgMTY0LCAyNDgsIDQ5LCAyOSwgMjE2LCAzMiwgMTY0LCAyMjIsIAotICAgIDI0MSwgMjksIDIxNiwgMzIsIDE2NCwgMjE5LCAyNTMsIDIyMiwgMjQxLCAyOSwgMjE2LCAzMiwgMTY0LCAyNDcsIDI0MywgCi0gICAgMjksIDIxNiwgMzIsIDE2NCwgMjM0LCAxNzAsIDI5LCAyMTYsIDMyLCAxNjQsIDI1MCwgMTAyLCAyOSwgMjE2LCAzMiwgMTY0LCAKLSAgICAyNDEsIDE4NCwgMjksIDIxNiwgMzIsIDE2NCwgMjQ4LCA0OCwgMjksIDIxNiwgMzIsIDE2NCwgMjMzLCAyMDAsIDE2OSwgMSwgCi0gICAgNjEsIDE2OSwgMSwgNzYsIDE2OSwgMSwgNzQsIDE2OSwgMSwgNzgsIDE2OSwgMSwgNjksIDE2OSwgMSwgMjE0LCAxMDUsIAotICAgIDE2OSwgMSwgMjQzLCAxNDIsIDE2OSwgMSwgMTc2LCAxNjksIDEsIDI0MywgNjksIDE2OSwgMSwgMjQyLCAyMjEsIDE2OSwgMSwgCi0gICAgMjQyLCAxODEsIDE2OSwgMSwgMjQyLCAxMjAsIDE2OSwgMSwgMjQyLCA4NiwgMTY5LCAxLCAxNjIsIDE2OSwgMSwgMjQxLCAKLSAgICAyNDUsIDE2OSwgMSwgMjQxLCAxODcsIDE2OSwgMSwgMjQxLCA3NSwgMTY5LCAxLCAyNDAsIDIyOSwgMTY5LCAxLCAyNDAsIAotICAgIDIwOCwgMTY5LCAxLCAyMzMsIDE0MSwgMTY5LCAxLCAyMzMsIDY0LCAxNjksIDEsIDIzMiwgMjQ3LCAxNjksIDEsIDIzMiwgCi0gICAgMTYyLCAxNjksIDEsIDIzMiwgMTAzLCAxNjksIDEsIDIzMiwgNzYsIDE2OSwgMSwgMTg2LCAxNjksIDEsIDIzMSwgOTYsIAotICAgIDE2OSwgMSwgMjMwLCAyMzUsIDE2OSwgMSwgMjMwLCAxNjYsIDE2OSwgMSwgMjMwLCAxMDcsIDE2OSwgMSwgMTk4LCAxNjksIAotICAgIDEsIDI0MSwgOTcsIDE2OSwgMSwgMjI5LCAyMTgsIDE2OSwgMSwgMjI5LCAxMTIsIDE2OSwgMSwgMjI4LCAyMzgsIDE2OSwgMSwgCi0gICAgMjI4LCA3OSwgMTY5LCAxLCAyMjcsIDI0MiwgMTY5LCAxLCAyMjcsIDE4MCwgMTY5LCAxLCAyMjQsIDMyLCAxNjksIDEsIAotICAgIDIyNCwgMTksIDE2OSwgMSwgMjI0LCAxMiwgMTY5LCAxLCAyMjQsIDQsIDE2OSwgMSwgMjIzLCAyNDksIDE2OSwgMSwgMjIzLCAKLSAgICAyNDcsIDE2OSwgMSwgMjA2LCAxNjksIDEsIDIyMiwgOTMsIDE2OSwgMSwgMjIxLCAxODMsIDE2OSwgMSwgMjE5LCAxOTMsIAotICAgIDE2OSwgMSwgMjE5LCA2MCwgMTY5LCAxLCAyMTgsIDg0LCAxNjksIDEsIDIxOCwgMywgMTY5LCAxLCAyNDgsIDIyOSwgMTY5LCAKLSAgICAxLCAyMTcsIDEwNiwgMTY5LCAxLCAyNDgsIDk4LCAxNjksIDEsIDIxNywgMjMsIDE2OSwgMSwgMjQ4LCAxMSwgMTY5LCAxLCAKLSAgICAyMTYsIDExOCwgMTY5LCAxLCAyNDcsIDE1MywgMTY5LCAxLCAyNDYsIDg2LCAxNjksIDEsIDI0NiwgNTgsIDE2OSwgMSwgCi0gICAgMjQ3LCAxNjQsIDE2OSwgMSwgMjE2LCA2MCwgMTY5LCAxLCAyMTYsIDU5LCAxNjksIDEsIDIxNiwgNDgsIDE2OSwgMSwgMjE2LCAKLSAgICA0NywgMTY5LCAxLCAyMTYsIDQ2LCAxNjksIDEsIDIxNiwgNDUsIDE2OSwgMSwgMjE1LCAxODQsIDE2OSwgMSwgMjE1LCAxNzksIAotICAgIDE2OSwgMSwgMjE1LCAxNjgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjQsIDE2OSwgMSwgMjE1LCAxNjMsIAotICAgIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAKLSAgICAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAxNjksIDEsIDE5MiwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIAotICAgIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAKLSAgICAyNDAsIDE3NSwgMTgsIDE5LCA3NiwgMTgsIDE5LCAyNTUsIDQ2LCAxOCwgMTksIDc0LCAxOCwgMTksIDIzNiwgNDAsIDE4LCAKLSAgICAxOSwgNzgsIDE4LCAxOSwgMjI2LCAxODcsIDE4LCAxOSwgMjExLCAxMTYsIDIyNiwgMTg3LCAxOCwgMTksIDczLCAyNDUsIAotICAgIDIxNywgMTgsIDE5LCA3MywgNzQsIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU1LCA4MiwgMTgsIDE5LCAyMTIsIDIyLCAxOCwgCi0gICAgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgCi0gICAgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIAotICAgIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgMTksIDIyOSwgMTk1LCAyMTEsIDIxNSwgMTgsIDE5LCAKLSAgICAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIAotICAgIDE5LCAyMjksIDE5NSwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIDIxMCwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIAotICAgIDE5LCAyNDIsIDE4NywgMjE4LCAxMzEsIDE4LCAxOSwgNDAsIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxNDMsIDE4LCAxOSwgCi0gICAgNDAsIDI1MSwgMTgzLCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIDQwLCAyMTYsIDE1LCAxNjMsIDIyMiwgMjM2LCAxOCwgMTksIAotICAgIDQwLCA0NCwgMTYzLCAyMjIsIDIzNiwgMTgsIDE5LCA0MCwgMjIyLCAyMzYsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgCi0gICAgNDAsIDUyLCAyMTksIDI1MywgNjcsIDIxOCwgOTIsIDE4LCAxOSwgNDAsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMTgsIDE5LCAKLSAgICA0MCwgMjE5LCAyNTMsIDIwMywgOTEsIDE4LCAxOSwgNDAsIDIyNSwgMjUsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4OCwgMTgsIAotICAgIDE5LCAyNDUsIDE1OCwgMTgsIDE5LCAyMzYsIDYsIDE4LCAxOSwgMjI2LCAyMDAsIDE4LCAxOSwgMjU0LCAxMzEsIDE4LCAxOSwgCi0gICAgMjI1LCAyMjQsIDE4LCAxOSwgMjI2LCA5MSwgMTgsIDE5LCAyMjUsIDExMSwgMTgsIDE5LCAyMjUsIDc0LCAxOCwgMTksIAotICAgIDIyNSwgMTksIDE4LCAxOSwgMjI0LCAyNTIsIDE4LCAxOSwgMjExLCAxMTYsIDIyNCwgMjUyLCAxOCwgMTksIDczLCAyNDEsIAotICAgIDIyNywgMTgsIDE5LCA3MywgMjQxLCAxODcsIDE4LCAxOSwgMTkxLCAxOCwgMTksIDIyNiwgOTMsIDE4LCAxOSwgMjI0LCAKLSAgICAxMTUsIDE4LCAxOSwgMTU5LCAyMjQsIDExNSwgMTgsIDE5LCAyMjQsIDExMywgMTgsIDE5LCAxNTksIDIyNCwgMTEzLCAxOCwgCi0gICAgMTksIDIyNCwgMTEyLCAxOCwgMTksIDE1OSwgMjI0LCAxMTIsIDE4LCAxOSwgMjI0LCAxMTAsIDE4LCAxOSwgMTU5LCAyMjQsIAotICAgIDExMCwgMTgsIDE5LCAyMjQsIDEwOSwgMTgsIDE5LCAxNTksIDIyNCwgMTA5LCAxOCwgMTksIDIyNCwgMTE3LCAxOCwgMTksIAotICAgIDE1OSwgMjI0LCAxMTcsIDE4LCAxOSwgMjI0LCAxMTYsIDE4LCAxOSwgMTU5LCAyMjQsIDExNiwgMTgsIDE5LCAyMTEsIDExNiwgCi0gICAgMjI0LCAxMTYsIDE4LCAxOSwgMjI2LCAxMDksIDE4LCAxOSwgMTU5LCAyMjYsIDEwOSwgMTgsIDE5LCA3MywgMjQyLCA2NywgCi0gICAgMTgsIDE5LCAyMTcsIDIzLCAxOCwgMTksIDIxNywgMTAwLCAxOCwgMTksIDIxNiwgMTE4LCAxOCwgMTksIDIxNiwgMTA0LCAKLSAgICAxOCwgMTksIDExMiwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxMSwgMTE2LCAyMTYsIDE4LCAxOCwgMTksIDczLCAyNDgsIAotICAgIDg1LCAxOCwgMTksIDczLCAyNDgsIDExLCAxOCwgMTksIDIxNywgMTA2LCAxOCwgMTksIDIxNywgMTAyLCAxOCwgMTksIDIxNSwgCi0gICAgNzgsIDE4LCAxOSwgMTU5LCAyMTUsIDc4LCAxOCwgMTksIDIxNSwgNjIsIDE4LCAxOSwgMTU5LCAyMTUsIDYyLCAxOCwgMTksIAotICAgIDIxNSwgNjEsIDE4LCAxOSwgMTU5LCAyMTUsIDYxLCAxOCwgMTksIDEwNSwgMTgsIDE5LCAxNTksIDEwNSwgMTgsIDE5LCAKLSAgICAyMTUsIDU0LCAxOCwgMTksIDE1OSwgMjE1LCA1NCwgMTgsIDE5LCAyMTUsIDgwLCAxOCwgMTksIDE1OSwgMjE1LCA4MCwgMTgsIAotICAgIDE5LCAyMTUsIDc5LCAxOCwgMTksIDE1OSwgMjE1LCA3OSwgMTgsIDE5LCAyMjksIDE5NSwgMjE1LCA3OSwgMTgsIDE5LCAKLSAgICAyMTcsIDE1MywgMTgsIDE5LCAyMTUsIDE1MiwgMTgsIDE5LCAyMTUsIDEzNiwgMTgsIDE5LCAyMTUsIDEzNCwgMTgsIDE5LCAKLSAgICAyMTUsIDE1NywgMTgsIDE5LCAyMzQsIDE4OCwgMTgsIDE5LCAyMzUsIDEzLCAxOCwgMTksIDIzNCwgOTgsIDE4LCAxOSwgCi0gICAgMjM0LCA4OSwgMTgsIDE5LCAyMzQsIDM0LCAxOCwgMTksIDIzNCwgMTYsIDE4LCAxOSwgMjExLCAxMTYsIDIzNCwgMTYsIDE4LCAKLSAgICAxOSwgMTc2LCAxOCwgMTksIDIzNSwgMTYsIDE4LCAxOSwgMjMzLCAxODQsIDE4LCAxOSwgMTU5LCAyMzMsIDE4NCwgMTgsIAotICAgIDE5LCAyMzMsIDE4MiwgMTgsIDE5LCAxNTksIDIzMywgMTgyLCAxOCwgMTksIDIzMywgMTgxLCAxOCwgMTksIDE1OSwgMjMzLCAKLSAgICAxODEsIDE4LCAxOSwgMjMzLCAxODAsIDE4LCAxOSwgMTU5LCAyMzMsIDE4MCwgMTgsIDE5LCAyMzMsIDE3OSwgMTgsIDE5LCAKLSAgICAxNTksIDIzMywgMTc5LCAxOCwgMTksIDIzMywgMTg4LCAxOCwgMTksIDE1OSwgMjMzLCAxODgsIDE4LCAxOSwgMjMzLCAxODcsIAotICAgIDE4LCAxOSwgMTU5LCAyMzMsIDE4NywgMTgsIDE5LCAyMjksIDE5NSwgMjMzLCAxODcsIDE4LCAxOSwgMjM1LCAyOSwgMTgsIAotICAgIDE5LCAyMzMsIDE4OSwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDE4MiwgMTgsIDE5LCAyMTksIDI5LCAyMzQsIDkwLCAxOCwgCi0gICAgMTksIDIxOSwgMjksIDIzNCwgMjksIDE4LCAxOSwgMjE5LCAyOSwgMjM0LCAyNTQsIDE4LCAxOSwgMjUwLCAxOTgsIDE4LCAKLSAgICAxOSwgMjUxLCAzOSwgMTgsIDE5LCAyNTAsIDU5LCAxOCwgMTksIDI1MCwgNDksIDE4LCAxOSwgMjQ5LCAyNDYsIDE4LCAxOSwgCi0gICAgMjQ5LCAxODIsIDE4LCAxOSwgMjExLCAxMTYsIDI0OSwgMTgyLCAxOCwgMTksIDI1MSwgNDEsIDE4LCAxOSwgMjUxLCA0MCwgCi0gICAgMTgsIDE5LCAyNDksIDg3LCAxOCwgMTksIDE1OSwgMjQ5LCA4NywgMTgsIDE5LCAyNDksIDg1LCAxOCwgMTksIDE1OSwgMjQ5LCAKLSAgICA4NSwgMTgsIDE5LCAyNDksIDg0LCAxOCwgMTksIDE1OSwgMjQ5LCA4NCwgMTgsIDE5LCAyNDksIDgzLCAxOCwgMTksIDE1OSwgCi0gICAgMjQ5LCA4MywgMTgsIDE5LCAyNDksIDgyLCAxOCwgMTksIDE1OSwgMjQ5LCA4MiwgMTgsIDE5LCAyNDksIDg5LCAxOCwgMTksIAotICAgIDE1OSwgMjQ5LCA4OSwgMTgsIDE5LCAyNDksIDg4LCAxOCwgMTksIDE1OSwgMjQ5LCA4OCwgMTgsIDE5LCAyMjksIDE5NSwgCi0gICAgMjQ5LCA4OCwgMTgsIDE5LCAyNTEsIDc0LCAxOCwgMTksIDIyMSwgMjExLCAyMTYsIDIxMSwgMTgsIDE5LCAyMzEsIDk2LCAKLSAgICAxOCwgMTksIDIzMSwgMjQxLCAxOCwgMTksIDIzMCwgMjM1LCAxOCwgMTksIDIzMCwgMjA2LCAxOCwgMTksIDIzMCwgMTY2LCAKLSAgICAxOCwgMTksIDIzMCwgMTM3LCAxOCwgMTksIDIxMSwgMTE2LCAyMzAsIDEzNywgMTgsIDE5LCAxODYsIDE4LCAxOSwgMjMxLCAKLSAgICAyNDIsIDE4LCAxOSwgMjMwLCA0NSwgMTgsIDE5LCAxNTksIDIzMCwgNDUsIDE4LCAxOSwgMjMwLCA0MywgMTgsIDE5LCAxNTksIAotICAgIDIzMCwgNDMsIDE4LCAxOSwgMjMwLCA0MiwgMTgsIDE5LCAxNTksIDIzMCwgNDIsIDE4LCAxOSwgMjMwLCA0MSwgMTgsIDE5LCAKLSAgICAxNTksIDIzMCwgNDEsIDE4LCAxOSwgMjMwLCA0MCwgMTgsIDE5LCAxNTksIDIzMCwgNDAsIDE4LCAxOSwgMjMwLCA0NywgMTgsIAotICAgIDE5LCAxNTksIDIzMCwgNDcsIDE4LCAxOSwgMjMwLCA0NiwgMTgsIDE5LCAxNTksIDIzMCwgNDYsIDE4LCAxOSwgMjI5LCAKLSAgICAxOTUsIDIzMCwgNDYsIDE4LCAxOSwgMTk0LCAxOCwgMTksIDE1OSwgMTk0LCAxOCwgMTksIDIzMCwgMjM5LCAxOCwgMTksIAotICAgIDI1MywgMjEzLCAxOTQsIDE4LCAxOSwgMjIxLCAyMTEsIDE5NCwgMTgsIDE5LCAyMjksIDExMiwgMTgsIDE5LCAyMjksIDIyOSwgCi0gICAgMTgsIDE5LCAyMjgsIDIzOCwgMTgsIDE5LCAyMjgsIDIxMywgMTgsIDE5LCAyMjgsIDc5LCAxOCwgMTksIDIyOCwgNjksIDE4LCAKLSAgICAxOSwgMjExLCAxMTYsIDIyOCwgNjksIDE4LCAxOSwgMTk4LCAxOCwgMTksIDIyOSwgMjMwLCAxOCwgMTksIDIyNywgMTc2LCAKLSAgICAxOCwgMTksIDE1OSwgMjI3LCAxNzYsIDE4LCAxOSwgMjI3LCAxNzgsIDE4LCAxOSwgMTU5LCAyMjcsIDE3OCwgMTgsIDE5LCAKLSAgICAyMjcsIDE3NywgMTgsIDE5LCAxNTksIDIyNywgMTc3LCAxOCwgMTksIDIyOSwgMTk1LCAyMjcsIDE3NywgMTgsIDE5LCAyMzAsIAotICAgIDMwLCAxOCwgMTksIDczLCAyMjksIDg0LCAxOCwgMTksIDIyOCwgMjQzLCAxOCwgMTksIDIzMywgNjQsIDE4LCAxOSwgMjMzLCAKLSAgICAxMzksIDE4LCAxOSwgMjMyLCAyNDcsIDE4LCAxOSwgMjMyLCAyMzMsIDE4LCAxOSwgMjMyLCAxNjIsIDE4LCAxOSwgMjMyLCAKLSAgICAxMzMsIDE4LCAxOSwgMjExLCAxMTYsIDIzMiwgMTMzLCAxOCwgMTksIDIzMywgMTQxLCAxOCwgMTksIDIzMywgMTQwLCAxOCwgCi0gICAgMTksIDIzMiwgNzMsIDE4LCAxOSwgMTU5LCAyMzIsIDczLCAxOCwgMTksIDIzMiwgNzIsIDE4LCAxOSwgMTU5LCAyMzIsIDcyLCAKLSAgICAxOCwgMTksIDIzMiwgNzEsIDE4LCAxOSwgMTU5LCAyMzIsIDcxLCAxOCwgMTksIDIzMiwgNzAsIDE4LCAxOSwgMTU5LCAyMzIsIAotICAgIDcwLCAxOCwgMTksIDIzMiwgNjksIDE4LCAxOSwgMTU5LCAyMzIsIDY5LCAxOCwgMTksIDIzMiwgNzUsIDE4LCAxOSwgMTU5LCAKLSAgICAyMzIsIDc1LCAxOCwgMTksIDIzMiwgNzQsIDE4LCAxOSwgMTU5LCAyMzIsIDc0LCAxOCwgMTksIDE1NiwgMTgsIDE5LCAxNTksIAotICAgIDE1NiwgMTgsIDE5LCAxNDcsIDE1NiwgMTgsIDE5LCAyMjEsIDE4MywgMTgsIDE5LCAyMjIsIDMxLCAxOCwgMTksIDIxOSwgCi0gICAgMTkzLCAxOCwgMTksIDIxOSwgMTc3LCAxOCwgMTksIDIxOSwgNjAsIDE4LCAxOSwgMjE5LCA0MiwgMTgsIDE5LCAyMTEsIAotICAgIDExNiwgMjE5LCA0MiwgMTgsIDE5LCAyMDYsIDE4LCAxOSwgMjIyLCAzMywgMTgsIDE5LCAyMTcsIDI1MCwgMTgsIDE5LCAKLSAgICAxNTksIDIxNywgMjUwLCAxOCwgMTksIDIxNywgMjQ0LCAxOCwgMTksIDE1OSwgMjE3LCAyNDQsIDE4LCAxOSwgMjE3LCAyNDMsIAotICAgIDE4LCAxOSwgMTU5LCAyMTcsIDI0MywgMTgsIDE5LCAyMTcsIDIzOSwgMTgsIDE5LCAxNTksIDIxNywgMjM5LCAxOCwgMTksIAotICAgIDIxNywgMjM4LCAxOCwgMTksIDE1OSwgMjE3LCAyMzgsIDE4LCAxOSwgMjE3LCAyNTQsIDE4LCAxOSwgMTU5LCAyMTcsIDI1NCwgCi0gICAgMTgsIDE5LCAyMTcsIDI1MywgMTgsIDE5LCAxNTksIDIxNywgMjUzLCAxOCwgMTksIDIyOSwgMTk1LCAyMTcsIDI1MywgMTgsIAotICAgIDE5LCAyMjIsIDkzLCAxOCwgMTksIDI1MywgMjEzLCAyMjIsIDkzLCAxOCwgMTksIDIxNywgMjU1LCAxOCwgMTksIDI1MSwgCi0gICAgMjI2LCAyMjIsIDkzLCAxOCwgMTksIDIzMCwgMTMyLCAyMTksIDExMCwgMTgsIDE5LCAyMjksIDE5NSwgMjE5LCAxMDEsIDE4LCAKLSAgICAxOSwgMjI5LCAxOTUsIDIyMiwgOTEsIDE4LCAxOSwgMjI5LCAxOTUsIDIxOCwgMjM3LCAxOCwgMTksIDIyOSwgMTk1LCAyMTgsIAotICAgIDg3LCAxOCwgMTksIDIyOSwgMTk1LCAyMTksIDEwMCwgMTgsIDE5LCAyMjksIDE5NSwgMjIxLCAxODYsIDE4LCAxOSwgMjIwLCAKLSAgICA2NSwgMTgsIDE5LCAyMjAsIDM0LCAxOCwgMTksIDIyMCwgMjksIDE4LCAxOSwgMjIwLCA5LCAxOCwgMTksIDIyMCwgMywgMTgsIAotICAgIDE5LCAyMjAsIDEwNCwgMTgsIDE5LCAyMjAsIDEwMCwgMTgsIDE5LCAyMTksIDIwOCwgMTgsIDE5LCAxNTksIDIxOSwgMjA4LCAKLSAgICAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAxOSwgMjE5LCAyMDYsIDE4LCAxOSwgMTU5LCAKLSAgICAyMTksIDIwNiwgMTgsIDE5LCAyMTksIDIwNSwgMTgsIDE5LCAxNTksIDIxOSwgMjA1LCAxOCwgMTksIDIxOSwgMjA0LCAxOCwgCi0gICAgMTksIDE1OSwgMjE5LCAyMDQsIDE4LCAxOSwgMjE5LCAyMTAsIDE4LCAxOSwgMTU5LCAyMTksIDIxMCwgMTgsIDE5LCAyMTksIAotICAgIDIwOSwgMTgsIDE5LCAxNTksIDIxOSwgMjA5LCAxOCwgMTksIDIyMCwgMTA2LCAxOCwgMTksIDIxMSwgNDcsIDE4LCAxOSwgCi0gICAgMjExLCAxMDEsIDE4LCAxOSwgMjExLCA4LCAxOCwgMTksIDIxMCwgMjU1LCAxOCwgMTksIDIxMCwgMjQ0LCAxOCwgMTksIAotICAgIDIxMCwgMjI5LCAxOCwgMTksIDIxMSwgMTE2LCAyMTAsIDIyOSwgMTgsIDE5LCAxOTIsIDE4LCAxOSwgMjExLCAxMDMsIDE4LCAKLSAgICAxOSwgMjEwLCAxNzQsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NCwgMTgsIDE5LCAyMTAsIDE3MywgMTgsIDE5LCAxNTksIDIxMCwgCi0gICAgMTczLCAxOCwgMTksIDIxMCwgMTcyLCAxOCwgMTksIDE1OSwgMjEwLCAxNzIsIDE4LCAxOSwgMjEwLCAxNzEsIDE4LCAxOSwgCi0gICAgMTU5LCAyMTAsIDE3MSwgMTgsIDE5LCAyMTAsIDE3MCwgMTgsIDE5LCAxNTksIDIxMCwgMTcwLCAxOCwgMTksIDIxMCwgMTc2LCAKLSAgICAxOCwgMTksIDE1OSwgMjEwLCAxNzYsIDE4LCAxOSwgMjEwLCAxNzUsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NSwgMTgsIDE5LCAKLSAgICAyMjksIDE5NSwgMjEwLCAxNzUsIDE4LCAxOSwgMjExLCAxMTcsIDE4LCAxOSwgMjUyLCAxMiwgMjExLCAxMTcsIDE4LCAxOSwgCi0gICAgMTU5LCAyMTEsIDExNywgMTgsIDE5LCAyMjEsIDIxMSwgMjExLCA4LCAxOCwgMTksIDIyMywgMTMxLCAxOCwgMTksIDIyMywgCi0gICAgMjI2LCAyMjMsIDEzMSwgMTgsIDE5LCAxNTksIDIzMywgNjQsIDE4LCAxOSwgMjIzLCAxODYsIDE4LCAxOSwgMjIzLCAzOCwgCi0gICAgMTgsIDE5LCAyMjIsIDI0MiwgMTgsIDE5LCAyMjIsIDIxMywgMTgsIDE5LCAyMjIsIDE5OSwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgMTYyLCAxOCwgMTksIDIwNSwgMTgsIDE5LCAyMjMsIDE4NywgMTgsIDE5LCAxNTksIDIzMywgMTQxLCAxOCwgMTksIDIyMiwgCi0gICAgMTEwLCAxOCwgMTksIDE1OSwgMjIyLCAxMTAsIDE4LCAxOSwgMTUzLCAxOCwgMTksIDE1OSwgMTUzLCAxOCwgMTksIDE0NywgCi0gICAgMTUzLCAxOCwgMTksIDI0NCwgMTYyLCAxOCwgMTksIDI0NCwgMjAxLCAxOCwgMTksIDI0NCwgMTI5LCAxOCwgMTksIDI0NCwgCi0gICAgMTE2LCAxOCwgMTksIDI0NCwgNTEsIDE4LCAxOSwgMjQ0LCA0MiwgMTgsIDE5LCAyNDQsIDIwNCwgMTgsIDE5LCAyNDQsIAotICAgIDIwMywgMTgsIDE5LCAyNDMsIDIxOSwgMTgsIDE5LCAxNTksIDI0MywgMjE5LCAxOCwgMTksIDI0NSwgMTQsIDE4LCAxOSwgCi0gICAgMjE2LCAxOTYsIDE4LCAxOSwgMjMwLCAyOCwgMjE2LCAxOTYsIDE4LCAxOSwgMjE2LCAxNzYsIDE4LCAxOSwgMjMwLCAyOCwgCi0gICAgMjE2LCAxNzYsIDE4LCAxOSwgMjE2LCAxNzIsIDE4LCAxOSwgMjMwLCAyOCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAxNTcsIAotICAgIDE4LCAxOSwgMjE2LCAxNTQsIDE4LCAxOSwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAxMjgsIAotICAgIDE4LCAxOSwgMTU5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTYsIDIxMSwgMTgsIDE5LCAyMTUsIDE0MywgMTgsIDE5LCAyMTUsIAotICAgIDE0MSwgMTgsIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIDE5LCAyMTUsIDE0NiwgMTgsIDE5LCAyMTUsIAotICAgIDUyLCAxOCwgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIDIyNywgMTk3LCAKLSAgICAyNDEsIDI0NSwgMTgsIDE5LCAyMjcsIDE5NywgMjQxLCAxODcsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MSwgMTY4LCAxOCwgMTksIAotICAgIDIyNywgMTk3LCAyNDEsIDc1LCAxOCwgMTksIDIyNywgMTk3LCAyNDEsIDYwLCAxOCwgMTksIDIyNywgMTk3LCAxNjIsIDE4LCAKLSAgICAxOSwgMjI3LCAxOTcsIDI0MiwgNTMsIDE4LCAxOSwgMjI3LCAxOTcsIDI0MiwgNjcsIDE4LCAxOSwgMjI3LCAxOTYsIDI0MiwgCi0gICAgNjcsIDE4LCAxOSwgMjQxLCAxNjEsIDE4LCAxOSwgMjI0LCA4NywgMTgsIDE5LCAyMjQsIDU2LCAxOCwgMTksIDIyNCwgNTEsIAotICAgIDE4LCAxOSwgMjI0LCA0NSwgMTgsIDE5LCAyMjQsIDQwLCAxOCwgMTksIDIyNCwgOTEsIDE4LCAxOSwgMjI0LCA5MCwgMTgsIAotICAgIDE5LCAyMjQsIDk5LCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMjE2LCA1NCwgMTgsIDE5LCAyMTYsIDUzLCAxOCwgMTksIAotICAgIDIxNiwgNTcsIDE4LCAxOSwgMTU5LCAyMjMsIDEzMSwgMTgsIDE5LCAxNTksIDIyMywgMzgsIDE4LCAxOSwgMTU5LCAyMjIsIAotICAgIDIxMywgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDgwLCAxOCwgMTksIDIyOSwgMzIsIDE4LCAxOSwgMjI5LCAyOCwgCi0gICAgMTgsIDE5LCAyMjksIDksIDE4LCAxOSwgMjI5LCA0LCAxOCwgMTksIDIyOSwgODIsIDE4LCAxOSwgMjI5LCA4MSwgMTgsIDE5LCAKLSAgICAyMjksIDg0LCAxOCwgMTksIDIyOCwgMTA4LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDY1LCAxOCwgMTksIDIyMSwgMjExLCAKLSAgICAyMjAsIDM0LCAxOCwgMTksIDIyMSwgMjExLCAyMjAsIDksIDE4LCAxOSwgMjIxLCAyMTEsIDIyMCwgMTA0LCAxOCwgMTksIAotICAgIDIxMSwgMjEzLCAyMTYsIDE5NiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNzYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgCi0gICAgMTU3LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDIwOSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAyMTEsIDE4LCAxOSwgMjMyLCAKLSAgICAyNTQsIDE4LCAxOSwgMjMyLCAyNTMsIDE4LCAxOSwgMjMyLCAyNTIsIDE4LCAxOSwgMjMyLCAyNTEsIDE4LCAxOSwgMjMzLCAKLSAgICA0LCAxOCwgMTksIDIzMywgMywgMTgsIDE5LCAyMzMsIDUsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgMTk2LCAxOCwgMTksIAotICAgIDIxNiwgMjEwLCAyMTYsIDE3NiwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAxNzIsIDE4LCAxOSwgMjE2LCAyMTAsIDIxNiwgCi0gICAgMTU3LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDE1NCwgMTgsIDE5LCAyMTYsIDIxMCwgMjE2LCAyMDksIDE4LCAxOSwgMjE2LCAKLSAgICAyMTAsIDIxNiwgMjA4LCAxOCwgMTksIDIxNiwgMjEwLCAyMTYsIDIxMSwgMTgsIDE5LCAyNTQsIDE5OCwgMjUzLCAxNjYsIAotICAgIDE4LCAxOSwgMjUxLCAyMjYsIDc2LCAxOCwgMTksIDI1MSwgMjI2LCA3NCwgMTgsIDE5LCAyNTEsIDIyNiwgNzgsIDE4LCAxOSwgCi0gICAgMjUxLCAyMjYsIDYxLCAxOCwgMTksIDI1MSwgMjI2LCAyMTIsIDIyLCAxOCwgMTksIDI1MSwgMjI2LCAyMTEsIDI1MCwgMTgsIAotICAgIDE5LCAyNTEsIDIyNiwgMjExLCAyMjcsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgNjUsIDE4LCAxOSwgMjUxLCAyMjYsIDIyOSwgCi0gICAgMTEyLCAxOCwgMTksIDI1MSwgMjI2LCAyMjgsIDIzOCwgMTgsIDE5LCAyNTEsIDIyNiwgMjI4LCA3OSwgMTgsIDE5LCAyNTEsIAotICAgIDIyNiwgMTk4LCAxOCwgMTksIDI1MSwgMjI2LCAyMzQsIDE4OCwgMTgsIDE5LCAyNTEsIDIyNiwgMjM0LCA5OCwgMTgsIDE5LCAKLSAgICAyNTEsIDIyNiwgMjM0LCAzNCwgMTgsIDE5LCAyNTEsIDIyNiwgMTc2LCAxOCwgMTksIDIyMSwgMjExLCAyNDEsIDI0NSwgMTgsIAotICAgIDE5LCAyMjEsIDIxMSwgMjQxLCAxODcsIDE4LCAxOSwgMjIxLCAyMTEsIDI0MSwgNzUsIDE4LCAxOSwgMjIxLCAyMTEsIDE2MiwgCi0gICAgMTgsIDE5LCA3MywgMjQyLCAyMjcsIDE4LCAxOSwgNzMsIDI0MiwgMjMxLCAxOCwgMTksIDczLCAyNDIsIDI0MywgMTgsIDE5LCAKLSAgICA3MywgMjQyLCAyNDIsIDE4LCAxOSwgNzMsIDI0MiwgMjMyLCAxOCwgMTksIDczLCAyNDMsIDAsIDE4LCAxOSwgNzMsIDIyMiwgCi0gICAgMTQyLCAxOCwgMTksIDczLCAyMjIsIDIxMywgMTgsIDE5LCA3MywgMjIzLCAxMzEsIDE4LCAxOSwgNzMsIDIyMywgMTExLCAKLSAgICAxOCwgMTksIDczLCAyMjMsIDM4LCAxOCwgMTksIDczLCAyMDUsIDE4LCAxOSwgNzMsIDIxMSwgMTk1LCAxOCwgMTksIDczLCAKLSAgICAyMTEsIDIyNywgMTgsIDE5LCA3MywgMjEyLCAyMiwgMTgsIDE5LCA3MywgMjEyLCAxNywgMTgsIDE5LCA3MywgMjExLCAyNTAsIAotICAgIDE4LCAxOSwgNzMsIDIxMiwgNjUsIDE4LCAxOSwgNzMsIDI0MCwgMjAxLCAxOCwgMTksIDczLCAyNDAsIDIwMiwgMTgsIDE5LCAKLSAgICA3MywgMjQwLCAyMDUsIDE4LCAxOSwgNzMsIDI0MCwgMjA0LCAxOCwgMTksIDczLCAyNDAsIDIwMywgMTgsIDE5LCA3MywgCi0gICAgMjQwLCAyMDcsIDE4LCAxOSwgNzMsIDIxNiwgMTM3LCAxOCwgMTksIDczLCAyMTYsIDE1NywgMTgsIDE5LCA3MywgMjE2LCAKLSAgICAxOTYsIDE4LCAxOSwgNzMsIDIxNiwgMTk1LCAxOCwgMTksIDczLCAyMTYsIDE3NiwgMTgsIDE5LCA3MywgMjE2LCAyMDksIAotICAgIDE4LCAxOSwgNzMsIDIxNSwgMTI0LCAxOCwgMTksIDczLCAyMTUsIDEzNCwgMTgsIDE5LCA3MywgMjE1LCAxNTIsIDE4LCAxOSwgCi0gICAgNzMsIDIxNSwgMTUxLCAxOCwgMTksIDczLCAyMTUsIDEzNiwgMTgsIDE5LCA3MywgMjE1LCAxNTcsIDE4LCAxOSwgNzMsIAotICAgIDIyNCwgMTUzLCAxOCwgMTksIDczLCAyMjUsIDE5LCAxOCwgMTksIDczLCAyMjUsIDIyNCwgMTgsIDE5LCA3MywgMjI1LCAKLSAgICAyMTQsIDE4LCAxOSwgNzMsIDIyNSwgMTExLCAxOCwgMTksIDczLCAxOTEsIDE4LCAxOSwgNzMsIDIyNiwgMTA5LCAxOCwgMTksIAotICAgIDczLCAyNDIsIDEyMCwgMTgsIDE5LCA3MywgMjQyLCAxODEsIDE4LCAxOSwgNzMsIDI0MywgNjksIDE4LCAxOSwgNzMsIDI0MywgCi0gICAgNjIsIDE4LCAxOSwgNzMsIDI0MiwgMjIxLCAxOCwgMTksIDczLCAyNDMsIDE0MiwgMTgsIDE5LCA3MywgMjM0LCAxMDYsIDE4LCAKLSAgICAxOSwgNzMsIDIzNCwgMTExLCAxOCwgMTksIDczLCAyMzQsIDEyNSwgMTgsIDE5LCA3MywgMjM0LCAxMjQsIDE4LCAxOSwgNzMsIAotICAgIDIzNCwgMTE4LCAxOCwgMTksIDczLCAyMzQsIDEzOCwgMTgsIDE5LCA3MywgMjM0LCA0NywgMTgsIDE5LCA3MywgMjM0LCA0OCwgCi0gICAgMTgsIDE5LCA3MywgMjM0LCA1MSwgMTgsIDE5LCA3MywgMjM0LCA1MCwgMTgsIDE5LCA3MywgMjM0LCA0OSwgMTgsIDE5LCAKLSAgICA3MywgMjM0LCA1MiwgMTgsIDE5LCA3MywgMjM0LCA1MywgMTgsIDE5LCA3MywgMjI3LCAyNDIsIDE4LCAxOSwgNzMsIDIyOCwgCi0gICAgNzksIDE4LCAxOSwgNzMsIDIyOSwgMTEyLCAxOCwgMTksIDczLCAyMjksIDEwOCwgMTgsIDE5LCA3MywgMjI4LCAyMzgsIDE4LCAKLSAgICAxOSwgNzMsIDE5OCwgMTgsIDE5LCA3MywgMjMwLCAxMDcsIDE4LCAxOSwgNzMsIDIzMCwgMTY2LCAxOCwgMTksIDczLCAyMzEsIAotICAgIDk2LCAxOCwgMTksIDczLCAyMzEsIDg1LCAxOCwgMTksIDczLCAyMzAsIDIzNSwgMTgsIDE5LCA3MywgMTg2LCAxOCwgMTksIAotICAgIDczLCAyMTAsIDIxMiwgMTgsIDE5LCA3MywgMjEwLCAyNDQsIDE4LCAxOSwgNzMsIDIxMSwgNDcsIDE4LCAxOSwgNzMsIDIxMSwgCi0gICAgNDQsIDE4LCAxOSwgNzMsIDIxMSwgOCwgMTgsIDE5LCA3MywgMTkyLCAxOCwgMTksIDczLCAyMzUsIDU3LCAxOCwgMTksIAotICAgIDIyMSwgMjExLCAyMzUsIDU3LCAxOCwgMTksIDczLCAyMzUsIDc0LCAxOCwgMTksIDczLCAyMzUsIDEzMiwgMTgsIDE5LCA3MywgCi0gICAgMjM1LCAxMzAsIDE4LCAxOSwgNzMsIDIzNSwgMTE0LCAxOCwgMTksIDIyMSwgMjExLCAyMzUsIDExNCwgMTgsIDE5LCA3MywgCi0gICAgMjM1LCAxNDcsIDE4LCAxOSwgNzMsIDIzNSwgODcsIDE4LCAxOSwgNzMsIDIzNSwgOTEsIDE4LCAxOSwgNzMsIDIzNSwgMTAxLCAKLSAgICAxOCwgMTksIDczLCAyMzUsIDEwMCwgMTgsIDE5LCA3MywgMjM1LCA5OSwgMTgsIDE5LCA3MywgMjM1LCAxMDIsIDE4LCAxOSwgCi0gICAgNzMsIDIzMiwgMTAzLCAxOCwgMTksIDczLCAyMzIsIDE2MiwgMTgsIDE5LCA3MywgMjMzLCA2NCwgMTgsIDE5LCA3MywgMjMzLCAKLSAgICA1NiwgMTgsIDE5LCA3MywgMjMyLCAyNDcsIDE4LCAxOSwgNzMsIDIzMywgMTQxLCAxOCwgMTksIDczLCAyNDcsIDE1NywgMTgsIAotICAgIDE5LCA3MywgMjQ3LCAxNTgsIDE4LCAxOSwgNzMsIDI0NywgMTYzLCAxOCwgMTksIDczLCAyNDcsIDE2MiwgMTgsIDE5LCA3MywgCi0gICAgMjQ3LCAxNTksIDE4LCAxOSwgNzMsIDI0NywgMTY0LCAxOCwgMTksIDczLCAyMzIsIDI1MCwgMTgsIDE5LCA3MywgMjMyLCAKLSAgICAyNTIsIDE4LCAxOSwgNzMsIDIzMywgMCwgMTgsIDE5LCA3MywgMjMyLCAyNTUsIDE4LCAxOSwgNzMsIDIzMiwgMjU0LCAxOCwgCi0gICAgMTksIDczLCAyMzMsIDQsIDE4LCAxOSwgNzMsIDIxNiwgNTEsIDE4LCAxOSwgNzMsIDIxNiwgNTMsIDE4LCAxOSwgNzMsIAotICAgIDIxNiwgNTYsIDE4LCAxOSwgNzMsIDIxNiwgNTUsIDE4LCAxOSwgNzMsIDIxNiwgNTQsIDE4LCAxOSwgNzMsIDIxNiwgNTcsIAotICAgIDE4LCAxOSwgNzMsIDIxNiwgNDYsIDE4LCAxOSwgNzMsIDIxNiwgNDcsIDE4LCAxOSwgNzMsIDIxNiwgNTksIDE4LCAxOSwgCi0gICAgNzMsIDIxNiwgNTgsIDE4LCAxOSwgNzMsIDIxNiwgNDgsIDE4LCAxOSwgNzMsIDIxNiwgNjAsIDE4LCAxOSwgNzMsIDIxMCwgCi0gICAgMTMsIDE4LCAxOSwgNzMsIDIxMCwgMjMsIDE4LCAxOSwgNzMsIDIxMCwgOTQsIDE4LCAxOSwgNzMsIDIxMCwgOTIsIDE4LCAKLSAgICAxOSwgNzMsIDIxMCwgNDQsIDE4LCAxOSwgNzMsIDIxMCwgMTE2LCAxOCwgMTksIDczLCAyMTAsIDE1OSwgMTgsIDE5LCA3MywgCi0gICAgNjUsIDIxMCwgMTU5LCAxOCwgMTksIDczLCAyNDYsIDM2LCAxOCwgMTksIDczLCAyNDYsIDM3LCAxOCwgMTksIDczLCAyNDYsIAotICAgIDQ0LCAxOCwgMTksIDczLCAyNDYsIDQzLCAxOCwgMTksIDczLCAyNDYsIDM5LCAxOCwgMTksIDczLCAyNDYsIDQ2LCAxOCwgCi0gICAgMTksIDczLCAyMTgsIDg0LCAxOCwgMTksIDczLCAyMTksIDYwLCAxOCwgMTksIDczLCAyMjEsIDE4MywgMTgsIDE5LCA3MywgCi0gICAgMjIxLCAxNzIsIDE4LCAxOSwgNzMsIDIxOSwgMTkzLCAxOCwgMTksIDczLCAyMDYsIDE4LCAxOSwgNzMsIDIxOSwgMjI3LCAKLSAgICAxOCwgMTksIDczLCAyMjAsIDksIDE4LCAxOSwgNzMsIDIyMCwgNjUsIDE4LCAxOSwgNzMsIDIyMCwgNjMsIDE4LCAxOSwgNzMsIAotICAgIDIyMCwgMzQsIDE4LCAxOSwgNzMsIDIyMCwgMTA0LCAxOCwgMTksIDczLCAyMjAsIDEwNiwgMTgsIDE5LCA3MywgMjE1LCAKLSAgICAxNjQsIDE4LCAxOSwgNzMsIDIxNSwgMTY3LCAxOCwgMTksIDczLCAyMTUsIDE3OSwgMTgsIDE5LCA3MywgMjE1LCAxNzgsIAotICAgIDE4LCAxOSwgNzMsIDIxNSwgMTY4LCAxOCwgMTksIDczLCAyMTUsIDE4NCwgMTgsIDE5LCA3MywgMjUwLCA3NywgMTgsIDE5LCAKLSAgICA3MywgMjUwLCA5NCwgMTgsIDE5LCA3MywgMjUwLCAxMzksIDE4LCAxOSwgNzMsIDI1MCwgMTM2LCAxOCwgMTksIDczLCAyNTAsIAotICAgIDExOCwgMTgsIDE5LCA3MywgMjUwLCAxNjUsIDE4LCAxOSwgNzMsIDIxNSwgMTI3LCAxOCwgMTksIDczLCAyMTUsIDEyOCwgCi0gICAgMTgsIDE5LCA3MywgMjE1LCAxMzEsIDE4LCAxOSwgNzMsIDIxNSwgMTMwLCAxOCwgMTksIDczLCAyMTUsIDEyOSwgMTgsIDE5LCAKLSAgICA3MywgMjE1LCAxMzIsIDE4LCAxOSwgMjUwLCAxMTksIDUwLCAxOCwgMTksIDI0MywgMjM2LCAyMTgsIDEzMSwgMTgsIDE5LCAKLSAgICAyMjQsIDgzLCAxOCwgMTksIDIyOSwgNzgsIDE4LCAxOSwgMjI4LCAxMDUsIDE4LCAxOSwgMjI4LCAxMDQsIDE4LCAxOSwgCi0gICAgMjI4LCAxMDMsIDE4LCAxOSwgMjI4LCAxMDIsIDE4LCAxOSwgMjI4LCAxMDcsIDE4LCAxOSwgMjI4LCAxMDYsIDE4LCAxOSwgCi0gICAgMjExLCAyMTMsIDIxNiwgMTI2LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAKLSAgICAxMjQsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIzLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyMiwgMTgsIDE5LCAyMTEsIAotICAgIDIxMywgMjE2LCAxMjksIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI4LCAxOCwgMTksIDIxMSwgMjEzLCA0MCwgMjE2LCAKLSAgICAyMTEsIDE4LCAxOSwgMjUxLCAyMjYsIDIxMiwgOTgsIDIyNiwgMjMwLCAyMTksIDIxLCA3OSwgMjI2LCAyMzAsIDEsIDI1MiwgCi0gICAgNTYsIDIyNiwgMjMwLCAxLCAyMzIsIDkyLCAyMjYsIDIzMCwgMSwgMjQ0LCAxNTksIDIyNiwgMjMwLCAxLCAyMjIsIDE3LCAKLSAgICAyMjYsIDIzMCwgMSwgMjI4LCAxOTgsIDIyNiwgMjMwLCAxLCAyMTQsIDIyNiwgMjI2LCAyMzAsIDEsIDI0OCwgMjA1LCAyMjYsIAotICAgIDIzMCwgMSwgMjE2LCA4MSwgMjI2LCAyMzAsIDEsIDI0OSwgMjM3LCAyMjYsIDIzMCwgMSwgMjUwLCAxODgsIDIyNiwgMjMwLCAKLSAgICAxLCAyMzAsIDk2LCAyMjYsIDIzMCwgMSwgMjQyLCAxNjMsIDIyNiwgMjMwLCAxLCAyMjksIDY4LCAyMjYsIDIzMCwgMSwgCi0gICAgMjE4LCAxMjQsIDIyNiwgMjMwLCAxLCAyMjIsIDEzNywgMjI2LCAyMzAsIDEsIDI1NCwgMjA3LCAyMjYsIDIzMCwgMSwgMjI2LCAKLSAgICAxOTEsIDIyNiwgMjMwLCAxLCAyMTQsIDE1MCwgMjI2LCAyMzAsIDEsIDI0NSwgMjM5LCAyMjYsIDIzMCwgMSwgMjM1LCAxOTUsIAotICAgIDIyNiwgMjMwLCAxLCAyNDUsIDI0MCwgMjI2LCAyMzAsIDEsIDIyNiwgMTYyLCAyMjYsIDIzMCwgMSwgMjE0LCAyMDYsIDIyNiwgCi0gICAgMjMwLCAxLCAyMzYsIDQ2LCAyMjYsIDIzMCwgMSwgMjQ1LCAyMzcsIDIyNiwgMjMwLCAxLCAyMjUsIDIwNSwgMjI2LCAyMzAsIAotICAgIDI0NCwgMTU4LCA3OSwgMjI2LCAyMzAsIDIyMywgNTIsIDI0NCwgMTU4LCA3OSwgMTc4LCAxLCAyNDQsIDE0OSwgMjQ0LCAKLSAgICAxNDEsIDI0NCwgMTYzLCAyNDUsIDE0LCAxNzgsIDEsIDIxNCwgMTA1LCAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNjksIAotICAgIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgMSwgMjExLCAxMTcsIDE3OCwgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMSwgCi0gICAgMjE2LCAxMzAsIDIxNiwgMTUyLCAxNzgsIDEsIDI0NSwgNjcsIDE3OCwgMSwgMjU0LCAxMDEsIDYxLCAxNzgsIDEsIDIyNiwgCi0gICAgMTQ3LCA3OCwgMTc4LCAxLCAyNTUsIDI2LCA2MSwgMTc4LCAxLCAyNTQsIDIzNiwgMTc4LCAxLCAyMzIsIDEzOSwgNzgsIAotICAgIDE3OCwgMSwgMjE5LCAyNDYsIDc4LCAxNzgsIDEsIDc4LCAxNzgsIDEsIDIyNiwgMjM4LCAxNzgsIDEsIDIyNiwgMjAwLCAKLSAgICAxNzgsIDEsIDIyMywgMTY3LCAyMjMsIDE4MCwgMjIzLCA5NywgMTUzLCAxNzgsIDEsIDIzNCwgMTk5LCAxNzgsIDEsIDI1MCwgCi0gICAgMTg1LCAxNzgsIDEsIDIzNCwgMjAwLCAyMzUsIDI5LCAxNzgsIDEsIDI0MywgMjA5LCAxNzgsIDEsIDI0NSwgMTQ2LCAxNzgsIAotICAgIDEsIDI0MywgNjUsIDI0MiwgNzMsIDI0MywgMjA5LCAxNzgsIDEsIDI0MywgMTAzLCAxNzgsIDEsIDIxMSwgMTg4LCAyMTEsIAotICAgIDE4MiwgMjEyLCA5OCwgMTc4LCAxLCAyNDIsIDQ1LCAyNDIsIDY3LCAxNzgsIDEsIDI0MiwgNDksIDI0MiwgNjcsIDE3OCwgMSwgCi0gICAgMjMyLCAxNDEsIDI0MiwgNjcsIDE3OCwgMSwgMjE5LCAyNDksIDI0MiwgNjcsIDE3OCwgMSwgMjI5LCAxOTAsIDIyNywgMTYxLCAKLSAgICAyMjksIDE5MSwgMjMwLCAzMCwgMTc4LCAxLCAyMTksIDI0NywgMjMwLCAzMCwgMTc4LCAxLCAyNDYsIDEyMywgMTc4LCAxLCAKLSAgICAyMzUsIDE3NSwgMjM1LCAxNzksIDIzNSwgMTY4LCA3NCwgMTc4LCAxLCA3NiwgMTc4LCAxLCAyMzUsIDEyMywgMjM1LCAxNTAsIAotICAgIDE3OCwgMSwgMjQzLCA1MCwgMTc4LCAxLCAyMzIsIDE0MiwgMjU0LCAyNTIsIDE3OCwgMSwgMjE5LCAyNTEsIDYxLCAxNzgsIAotICAgIDEsIDIzNSwgMTYwLCAyNDUsIDEyMSwgMTc4LCAxLCAyMjUsIDE2NywgMjI1LCAxODksIDIyNiwgMTA5LCAxNzgsIDEsIDI1NCwgCi0gICAgMTcyLCAyNDUsIDExOSwgMTc4LCAxLCAyMTksIDI2LCAyMjIsIDkzLCAxNzgsIDEsIDIxOSwgMTgxLCAyMzIsIDEzOCwgMjIyLCAKLSAgICA5MywgMTc4LCAxLCAyMTksIDI0NSwgMjIyLCA5MywgMTc4LCAxLCAyNTEsIDc0LCAxNzgsIDEsIDIxMCwgMTU5LCAxNzgsIDEsIAotICAgIDIxNiwgNjQsIDIxNiwgNzQsIDIxNSwgNDEsIDIxNywgMTUzLCAxNzgsIDEsIDIxOSwgMjQ0LCAyMTcsIDE1MywgMTc4LCAxLCAKLSAgICAyNDksIDY4LCAxNzgsIDEsIDI1MiwgMzksIDI1MiwgNDIsIDI1MSwgMjMyLCAyNTMsIDE2NiwgMTc4LCAxLCAyMTksIDI1MCwgCi0gICAgMjUzLCAxNjYsIDE3OCwgMSwgMjQ2LCAxMjIsIDE3OCwgMSwgMjI2LCAxNzUsIDE3OCwgMSwgMjQ1LCAyMDQsIDI0NSwgMjA2LCAKLSAgICA3NiwgMTc4LCAxLCAyMzEsIDE4MywgMjMxLCAxOTEsIDE5NCwgMTc4LCAxLCAyMzIsIDE0MCwgMTk0LCAxNzgsIDEsIDIxOSwgCi0gICAgMjQ4LCAxOTQsIDE3OCwgMSwgMjMzLCA3OSwgMjMzLCAxMjAsIDIzMiwgMTQ5LCAxNTYsIDE3OCwgMSwgMjQ2LCAxMjQsIAotICAgIDE3OCwgMSwgMjM1LCAyMzcsIDE3OCwgMSwgMjM1LCAyMzgsIDE3OCwgMSwgMjQ4LCAyMTgsIDI0OCwgMjIzLCAyNDksIDY4LCAKLSAgICAxNzgsIDEsIDIyNiwgMTQyLCAyNDUsIDY2LCA3OCwgMTc4LCAxLCAyNDUsIDIzNSwgMTc4LCAxLCAyMzUsIDE5NCwgMTc4LCAKLSAgICAxLCAyNDksIDg2LCAxNzgsIDEsIDI1MSwgMjUsIDE3OCwgMSwgMjUwLCAxOTcsIDE3OCwgMSwgMjE4LCAxNjMsIDE3OCwgMSwgCi0gICAgMjMyLCAxMzcsIDE3OCwgMSwgMjE5LCAyNDMsIDE3OCwgMSwgMjQwLCAxMTcsIDE3OCwgMSwgMjI0LCA5OSwgMTc4LCAxLCAKLSAgICAyMTEsIDE3OCwgMTc4LCAyMTksIDE1NywgMjI0LCAxNDMsIDE3OCwgMjMwLCA5MCwgMjI0LCAxNDMsIDE3OCwgMjQ5LCAxMzksIAotICAgIDIyNCwgMTQzLCAxNzgsIDI1NCwgMTQsIDg3LCAxNzgsIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNTQsIDg3LCAyMTcsIDg0LCAKLSAgICAxLCA2MSwgMjE3LCA4NCwgMSwgNzQsIDIxNywgODQsIDEsIDY5LCAyMTcsIDg0LCAxLCAxNzYsIDIxNywgODQsIDEsIDI0MywgCi0gICAgMTQyLCAyMTcsIDg0LCAxLCAyMjksIDgyLCAyMTcsIDg0LCAxLCAyMTcsIDEwNiwgMjE3LCA4NCwgMSwgMjQ4LCAyMjksIAotICAgIDIxNywgODQsIDEsIDE5OCwgMjE3LCA4NCwgMSwgMTkxLCAyMTcsIDg0LCAxLCAyNTIsIDE5OSwgMjE3LCA4NCwgMSwgMTg2LCAKLSAgICAyMTcsIDg0LCAxLCAxOTIsIDIxNywgODQsIDEsIDIzMywgMTQxLCAyMTcsIDg0LCAxLCAyMTIsIDY1LCAyMTcsIDg0LCAxLCAKLSAgICAyMDYsIDIxNywgODQsIDEsIDE2MiwgMjE3LCA4NCwgMjUsIDUsIDc0LCAyMTcsIDg0LCAyNSwgNSwgNjksIDIxNywgODQsIDUsIAotICAgIDIxMywgMTUyLCAyNDIsIDE0LCAxLCA2MSwgMjQyLCAxNCwgMSwgNzQsIDI0MiwgMTQsIDEsIDY5LCAyNDIsIDE0LCAxLCAKLSAgICAxNzYsIDI0MiwgMTQsIDEsIDI0MywgMTQyLCAyNDIsIDE0LCAxLCAyMjksIDgyLCAyNDIsIDE0LCAxLCAyMTcsIDEwNiwgCi0gICAgMjQyLCAxNCwgMSwgMjQ4LCAyMjksIDI0MiwgMTQsIDEsIDE5OCwgMjQyLCAxNCwgMSwgMTkxLCAyNDIsIDE0LCAxLCAyNTIsIAotICAgIDE5OSwgMjQyLCAxNCwgMSwgMTg2LCAyNDIsIDE0LCAxLCAxOTIsIDI0MiwgMTQsIDEsIDIwNSwgMjQyLCAxNCwgMSwgMjMzLCAKLSAgICAxNDEsIDI0MiwgMTQsIDEsIDIxMiwgNjUsIDI0MiwgMTQsIDEsIDIwNiwgMjQyLCAxNCwgMSwgMTYyLCAyNDIsIDE0LCAyNSwgCi0gICAgNSwgNzQsIDI0MiwgMTQsIDI1LCA1LCA2OSwgMjQyLCAxNCwgNSwgMjI2LCA1MywgMjI1LCAxMjksIDIxOSwgMTU3LCAyMjQsIAotICAgIDE0MywgMjI1LCAxMjksIDUyLCAyMjQsIDE0MywgMjUxLCAxMjgsIDEsIDYxLCAyNTEsIDEyOCwgMSwgNzQsIDI1MSwgMTI4LCAKLSAgICAxLCA2OSwgMjUxLCAxMjgsIDEsIDE3NiwgMjUxLCAxMjgsIDEsIDI0MywgMTQyLCAyNTEsIDEyOCwgMSwgMjI5LCA4MiwgCi0gICAgMjUxLCAxMjgsIDEsIDIxNywgMTA2LCAyNTEsIDEyOCwgMSwgMjQ4LCAyMjksIDI1MSwgMTI4LCAxLCAxOTgsIDI1MSwgMTI4LCAKLSAgICAxLCAxOTEsIDI1MSwgMTI4LCAxLCAyNTIsIDE5OSwgMjUxLCAxMjgsIDEsIDE4NiwgMjUxLCAxMjgsIDEsIDE5MiwgMjUxLCAKLSAgICAxMjgsIDEsIDIwNSwgMjUxLCAxMjgsIDEsIDIzMywgMTQxLCAyNTEsIDEyOCwgMSwgMjEyLCA2NSwgMjUxLCAxMjgsIDEsIAotICAgIDIwNiwgMjUxLCAxMjgsIDEsIDE2MiwgMjUxLCAxMjgsIDI1LCA1LCA3NCwgMjUxLCAxMjgsIDI1LCA1LCA2OSwgMjE3LCA4MywgCi0gICAgMSwgNjEsIDIxNywgODMsIDEsIDc0LCAyMTcsIDgzLCAxLCA2OSwgMjE3LCA4MywgMSwgMTc2LCAyMTcsIDgzLCAxLCAyNDMsIAotICAgIDE0MiwgMjE3LCA4MywgMSwgMjI5LCA4MiwgMjE3LCA4MywgMSwgMjE3LCAxMDYsIDIxNywgODMsIDEsIDI0OCwgMjI5LCAKLSAgICAyMTcsIDgzLCAxLCAxOTgsIDIxNywgODMsIDEsIDE5MSwgMjE3LCA4MywgMSwgMjUyLCAxOTksIDIxNywgODMsIDEsIDE4NiwgCi0gICAgMjE3LCA4MywgMSwgMTkyLCAyMTcsIDgzLCAxLCAyMzMsIDE0MSwgMjE3LCA4MywgMSwgMjEyLCA2NSwgMjE3LCA4MywgMSwgCi0gICAgMjA2LCAyMTcsIDgzLCAyNSwgNSwgNzQsIDIxNywgODMsIDI1LCA1LCA2OSwgNzAsIDEsIDE3NiwgNzAsIDEsIDIzNCwgMTM4LCAKLSAgICA3MCwgMSwgMjM0LCAzNCwgNzAsIDEsIDIzNCwgMTExLCA3MCwgMSwgMjI5LCA5LCA3MCwgMSwgMjUxLCA0MSwgNzAsIDEsIAotICAgIDI1MCwgMTY1LCA3MCwgMSwgMjQ5LCAyNDYsIDcwLCAxLCAyNTAsIDk0LCA3MCwgMSwgMjI3LCAxMzgsIDcwLCAxLCAyNDgsIAotICAgIDIyOSwgNzAsIDEsIDIxNSwgMTQ1LCA3MCwgMSwgMjQ3LCAxNTMsIDcwLCAxLCAyMTUsIDE0MCwgNzAsIDEsIDIyOCwgODUsIAotICAgIDcwLCAxLCAyMTcsIDEwNiwgNzAsIDEsIDIxNiwgMjA5LCA3MCwgMSwgMTEyLCA3MCwgMSwgMjE2LCAxNTcsIDcwLCAxLCAKLSAgICAyMjgsIDc5LCA3MCwgMSwgMjUyLCAxOTksIDcwLCAxLCAyMjUsIDE1MCwgNzAsIDEsIDIyNSwgMTksIDcwLCAxLCAyMjUsIAotICAgIDEyNCwgNzAsIDEsIDIzMCwgMTY2LCA3MCwgMSwgMjEwLCAyNDQsIDcwLCAxLCAyMjIsIDIxMywgNzAsIDEsIDIzMiwgMTYyLCAKLSAgICA3MCwgMSwgMjEzLCAxMzgsIDcwLCAxLCAyMjAsIDEwNCwgNzAsIDEsIDIxOCwgMTg2LCA3MCwgMSwgMjA2LCA3MCwgMSwgCi0gICAgMTYyLCA3MCwgMSwgMjMzLCAxNDEsIDcwLCAxLCAyMjQsIDkxLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDc3LCA3MCwgMjM1LCAKLSAgICAyNTAsIDI1LCAyMjQsIDkwLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDU2LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDUxLCAKLSAgICA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDMzLCA3MCwgMjM1LCAyNTAsIDI1LCAyMjQsIDUsIDcwLCAyMzUsIDI1MCwgMjUsIAotICAgIDIyMywgMjQ5LCA3MCwgMjM1LCAyNTAsIDI1LCAyMjMsIDI0OCwgNzAsIDIzNSwgMjUwLCAyNSwgMjIyLCAxMDIsIDcwLCAKLSAgICAyMzUsIDI1MCwgMjUsIDIyMiwgOTUsIDcwLCAyMzUsIDI1MCwgMjUsIDIzMiwgNjcsIDcwLCAyMzUsIDI1MCwgMjUsIDIzMiwgCi0gICAgNTcsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgNzIsIDcwLCAyMzUsIDI1MCwgMjUsIDIyNCwgODMsIDcwLCAyMzUsIDI1MCwgCi0gICAgMjUsIDIyNCwgNDEsIDIxNSwgNDksIDExMSwgNzAsIDIzNSwgMjUwLCAyNSwgMjI0LCA0MSwgMjE1LCA0OSwgMTA1LCA3MCwgCi0gICAgMjM1LCAyNTAsIDI1LCAyMjQsIDczLCA3MCwgMjUsIDIzNSwgMjM2LCAyNTQsIDUzLCA3MCwgMjUsIDIzNSwgMjM2LCAyNTUsIAotICAgIDgyLCA3MCwgMjUsIDUsIDI1NSwgODIsIDcwLCAyNSwgNSwgNzQsIDcwLCAyNSwgNSwgMjM2LCA0MCwgNzAsIDI1LCA1LCAKLSAgICAyMTEsIDExNywgNzAsIDI1LCA1LCAyMTAsIDE2OSwgNzAsIDI1LCA1LCA2OSwgNzAsIDI1LCA1LCAyMTQsIDExOCwgNzAsIAotICAgIDI1LCA1LCAyMTQsIDIyOSwgNzAsIDI1LCA1LCAyMjYsIDIzOCwgNzAsIDI1LCA1LCAxOTIsIDcwLCAyNSwgNSwgMjM2LCA2NywgCi0gICAgNzAsIDI1LCA1LCA3NiwgNzAsIDI1LCA1LCAyNTQsIDI1MiwgNzAsIDI1LCA1LCAyNTQsIDIxMCwgNzAsIDI1LCA1LCAyMjYsIAotICAgIDE4NywgNzAsIDI1LCA1LCAyNTMsIDIwMCwgNzAsIDUsIDIyOCwgMjExLCA3MCwgNSwgMjIzLCAxMjksIDcwLCA1LCAyMTAsIAotICAgIDE4MCwgNzAsIDUsIDIzMCwgNTcsIDcwLCA1LCAyMTUsIDIxNCwgNzAsIDUsIDI1MiwgMTUxLCA3MCwgNSwgMjIyLCAyMDgsIAotICAgIDcwLCA1LCAyMTYsIDQxLCA3MCwgNSwgMjM0LCAyNDcsIDcwLCA1LCAyNTQsIDIxMiwgNzAsIDUsIDIyMSwgMjQ2LCAyMjEsIAotICAgIDI0MCwgNzAsIDUsIDIxMywgMTQ5LCA3MCwgNSwgMjQ5LCAyNDAsIDcwLCA1LCAyNTIsIDEyNSwgNzAsIDUsIDIzNCwgMTMxLCAKLSAgICA3MCwgNSwgMjUyLCAxNDUsIDcwLCA1LCAyNTEsIDE3LCAyMjUsIDc1LCAyMzMsIDE5MywgNzAsIDUsIDIzMywgMzYsIDIxNiwgCi0gICAgMTgsIDcwLCA1LCAyNTIsIDI4LCA3MCwgNSwgMjI1LCAxMjYsIDIzMCwgMTA0LCA3MCwgNSwgMjM0LCAxNSwgNzAsIDI0OSwgCi0gICAgMTA2LCAxNiwgMjIzLCAzMSwgNzAsIDUsIDI1MywgMTgyLCA3MCwgNSwgMjUzLCAyMDMsIDcwLCAyMSwgMjEwLCA4NiwgNzAsIAotICAgIDIxLCAxMTEsIDcwLCAyMSwgMTA1LCA3MCwgMjEsIDE1OCwgNzAsIDIxLCAxNjEsIDcwLCAyMSwgMTkwLCA3MCwgMjEsIDE5NSwgCi0gICAgNzAsIDIxLCAxOTksIDcwLCAyMSwgMTk2LCA3MCwgMjEsIDIwMSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjE5LCAKLSAgICA0NSwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjMwLCA3NiwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI1LCAKLSAgICA3NCwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjUyLCA1NywgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjUxLCAKLSAgICAxMTEsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgMjE4LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIAotICAgIDIxMiwgNzAsIDE2LCAyMzMsIDM2LCAyNTMsIDIwNSwgMjI0LCAyMTAsIDcwLCAxNiwgMjMzLCAzNiwgMjUzLCAyMDUsIDIyNCwgCi0gICAgMjE2LCA3MCwgMTYsIDIzMywgMzYsIDI1MywgMjA1LCAyMjQsIDIxNCwgODMsIDI1MSwgMjQ0LCA4MywgMjQ1LCAxNzEsIDgzLCAKLSAgICAyNDksIDIyNywgODMsIDI0MywgMjM2LCAyMTgsIDEzMSwgODMsIDI0OSwgMjM0LCA4MywgMjQ0LCAxOSwgMjQ3LCAxMjYsIAotICAgIDgzLCAyMTYsIDQwLCAyMTksIDU0LCAyNDAsIDE3NSwgODMsIDIxOSwgMTkyLCAzLCAyNTEsIDE4MCwgMjMxLCAxNTksIDgzLCAKLSAgICAyMzEsIDE4OCwgMjQ5LCAyMjcsIDgzLCAyMzEsIDE4OCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA4MywgMjI4LCAxOTYsIDgzLCAKLSAgICAyNDQsIDUsIDQ1LCAyMjEsIDE1OSwgMTExLCA4MywgMjQ0LCA1LCA0NSwgMjIxLCAxNTksIDEwNSwgODMsIDI0NCwgNSwgNDUsIAotICAgIDIyMSwgMTU5LCAxNTgsIDgzLCAyNSwgMjIwLCAxMzksIDgzLCAyMSwgMjEwLCA4NiwgODMsIDIxLCAxMTEsIDgzLCAyMSwgCi0gICAgMTA1LCA4MywgMjEsIDE1OCwgODMsIDIxLCAxNjEsIDgzLCAyMSwgMTkwLCA4MywgMjEsIDE5NSwgODMsIDIxLCAxOTksIDgzLCAKLSAgICAyMSwgMTk2LCA4MywgMjEsIDIwMSwgODMsIDEsIDYxLCA4MywgMSwgNzYsIDgzLCAxLCA3NCwgODMsIDEsIDc4LCA4MywgMSwgCi0gICAgNjksIDgzLCAxLCAyMjYsIDIzOCwgODMsIDEsIDIxNCwgMjE0LCA4MywgMSwgMjQ1LCAyMTcsIDgzLCAxLCAxOTgsIDgzLCAxLCAKLSAgICAyNTQsIDEyMywgODMsIDEsIDI1MiwgMTk5LCA4MywgMSwgMTkxLCA4MywgMSwgMjI0LCA5MSwgODMsIDEsIDI0MywgMTQyLCAKLSAgICA4MywgMSwgMTg2LCA4MywgMSwgMjMzLCAxNDEsIDgzLCAxLCAyMDYsIDgzLCAxLCAyMjAsIDEwNCwgODMsIDEsIDIxNywgCi0gICAgMTA2LCA4MywgMSwgMjQ4LCAyMjksIDgzLCAxLCAyNTAsIDE2NSwgODMsIDEsIDIzNSwgMTQ3LCA4MywgMSwgMTkyLCA4MywgCi0gICAgMSwgMjA1LCA4MywgMSwgMjEyLCA2NSwgODMsIDEsIDI0NCwgMjA0LCA4MywgMSwgMTc2LCA4MywgMSwgMjM0LCAxMzgsIDgzLCAKLSAgICAxLCAyMTUsIDE4NCwgODMsIDEsIDIxMCwgMTE2LCA4MywgMSwgMjQyLCA1MywgODMsIDEsIDIxMCwgMTYsIDgzLCAxLCAyMzMsIAotICAgIDQsIDgzLCAxLCAyMTAsIDY5LCA4MywgMSwgMjUwLCAxMTgsIDgzLCAxLCAyMTYsIDQwLCAyMDAsIDI1LCA1MCwgODMsIDEsIAotICAgIDIxNiwgNDAsIDc2LCA4MywgMSwgMjE2LCA0MCwgNzQsIDgzLCAxLCAyMTYsIDQwLCA3OCwgODMsIDEsIDIxNiwgNDAsIDY5LCAKLSAgICA4MywgMSwgMjE2LCA0MCwgMjI2LCAyMzgsIDgzLCAxLCAyMTYsIDQwLCAyMTQsIDIxNCwgODMsIDEsIDIxNiwgNDAsIDI1NCwgCi0gICAgMTIzLCA4MywgMSwgMjE2LCA0MCwgMjUyLCAxOTksIDgzLCAxLCAyMTYsIDQwLCAxOTEsIDgzLCAxLCAyMTYsIDQwLCAyMjQsIAotICAgIDkxLCA4MywgMSwgMjE2LCA0MCwgMjQzLCAxNDIsIDgzLCAxLCAyMTYsIDQwLCAxODYsIDgzLCAxLCAyMTYsIDQwLCAyMTcsIAotICAgIDEwNiwgODMsIDEsIDIxNiwgNDAsIDI0OCwgMjI5LCA4MywgMSwgMjE2LCA0MCwgMjUwLCAxNjUsIDgzLCAxLCAyMTYsIDQwLCAKLSAgICAyMzUsIDE0NywgODMsIDEsIDIxNiwgNDAsIDIxNSwgMTg0LCA4MywgMSwgMjE2LCA0MCwgMTkyLCA4MywgMSwgMjE2LCA0MCwgCi0gICAgMjEyLCA2NSwgODMsIDEsIDIxNiwgNDAsIDE3NiwgODMsIDEsIDIxNiwgNDAsIDI0MywgMTM5LCA4MywgMSwgMjE2LCA0MCwgCi0gICAgMjQyLCA1MywgODMsIDEsIDIxNiwgNDAsIDIzNSwgMTEzLCA4MywgMSwgMjE2LCA0MCwgMjI4LCAyMzYsIDgzLCAxLCAyMTYsIAotICAgIDQwLCAyNDYsIDQ2LCA4MywgMSwgMjE5LCAxOTIsIDc2LCA4MywgMSwgMjE5LCAxOTIsIDc0LCA4MywgMSwgMjE5LCAxOTIsIAotICAgIDIzNSwgMTU4LCA4MywgMSwgMjE5LCAxOTIsIDIxNCwgMjE0LCA4MywgMSwgMjE5LCAxOTIsIDY5LCA4MywgMSwgMjE5LCAKLSAgICAxOTIsIDI1NCwgMTIzLCA4MywgMSwgMjE5LCAxOTIsIDE3NiwgODMsIDEsIDIxOSwgMTkyLCAyNDMsIDE0MiwgODMsIDEsIAotICAgIDIxOSwgMTkyLCAxNjIsIDgzLCAxLCAyMTksIDE5MiwgMTkxLCA4MywgMSwgMjE5LCAxOTIsIDIyMCwgMTA0LCA4MywgMSwgCi0gICAgMjE5LCAxOTIsIDIxNywgMTA2LCA4MywgMSwgMjE5LCAxOTIsIDI0OCwgMjI5LCA4MywgMSwgMjE5LCAxOTIsIDIzNSwgMTQ3LCAKLSAgICA4MywgMSwgMjE5LCAxOTIsIDI0NCwgMjA0LCA4MywgMSwgMjE5LCAxOTIsIDI0MywgMTM5LCA4MywgMSwgMjE5LCAxOTIsIAotICAgIDI0MiwgNTMsIDgzLCAxLCAyMTksIDE5MiwgMjE1LCAxODQsIDgzLCAxLCAyMTksIDE5MiwgMjEwLCAxMTYsIDgzLCAxLCAKLSAgICAyMTksIDE5MiwgMjIzLCAxODcsIDgzLCAxLCAyMTksIDE5MiwgMjUwLCAxNjUsIDgzLCAxLCAyMTksIDE5MiwgMjEwLCA4MiwgCi0gICAgODMsIDEsIDIzMSwgMTg4LCA3NCwgODMsIDEsIDIzMSwgMTg4LCAxNzYsIDgzLCAxLCAyMzEsIDE4OCwgMjA1LCA4MywgMSwgCi0gICAgMjMxLCAxODgsIDI0NCwgMjA0LCA4MywgMSwgMjMxLCAxODgsIDIxMCwgODIsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIAotICAgIDI1NCwgODQsIDExMSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjEzLCAxNDgsIDExMSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjQ4LCAxOTQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyMzUsIDIwMCwgMjE0LCAyMjQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDI1MiwgMTYzLCA4MywgMSwgCi0gICAgMjU0LCAxNzEsIDI0MywgMTIzLCAxMzQsIDI1MiwgMTYzLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCA2MSwgODMsIDEsIAotICAgIDI1NCwgMTcxLCAyNDMsIDEyMywgNzQsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDE3NiwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjI5LCA4MiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUxLCA0MSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMjE1LCAxNTcsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNSwgMTQ1LCA4MywgMSwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNDgsIDE0MywgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjI4LCAxMTUsIDgzLCAxLCAyNTQsIDE3MSwgCi0gICAgMjQzLCAxMjMsIDIxNywgMTA2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDIyOSwgODMsIDEsIDI1NCwgMTcxLCAKLSAgICAyNDMsIDEyMywgMTkxLCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMjUsIDE1MCwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIAotICAgIDEyMywgMjE4LCAyMjUsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAxLCAyNTQsIDE3MSwgMjQzLCAKLSAgICAxMjMsIDIxMCwgMTE2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNTQsIDIxOCwgODMsIDEsIDIxNiwgNDAsIDI1NCwgCi0gICAgMTcxLCAyNDMsIDEyMywgMjE3LCAxMDYsIDgzLCAxLCAyMTYsIDQwLCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAKLSAgICAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDMsIDAsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgCi0gICAgMTIzLCAyMjksIDgyLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjUxLCA0MSwgODMsIDEsIDIzMSwgCi0gICAgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIzNSwgMTIwLCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMjE1LCAxNTcsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDEyNywgODMsIDEsIDIzMSwgMTg4LCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxNywgMTA2LCA4MywgMSwgMjMxLCAxODgsIDI1NCwgMTcxLCAyNDMsIDEyMywgMjQ4LCAKLSAgICAzMywgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxOCwgMjI1LCA4MywgMSwgMjMxLCAxODgsIDI1NCwgCi0gICAgMTcxLCAyNDMsIDEyMywgMjQ5LCA4MCwgODMsIDEsIDIzMSwgMTg4LCAyNTQsIDE3MSwgMjQzLCAxMjMsIDIxMCwgODIsIDgzLCAKLSAgICAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIDI0MywgMTIzLCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgCi0gICAgMTYzLCA2OSwgODMsIDEsIDI1NCwgMTcxLCAyNDMsIDEyMywgMTYzLCAxOTIsIDgzLCAxLCAyMzEsIDE4OCwgMjU0LCAxNzEsIAotICAgIDI0MywgMTIzLCAyNTIsIDI2LCA4MywgMSwgMjU0LCAxNzEsIDI0MywgMTIzLCAyNDgsIDIxOSwgODMsIDEsIDIzMSwgMTg4LCAKLSAgICAyNTQsIDE3MSwgMjQzLCAxMjMsIDIzMywgNCwgMTgsIDE5LCAyMjYsIDExMywgMTgsIDE5LCAyNTMsIDE3NSwgMTgsIDE5LCAKLSAgICAyNTUsIDM3LCAxOCwgMTksIDIxMiwgMjUsIDE4LCAxOSwgMjI0LCAyMjQsIDE4LCAxOSwgMjI1LCAyMzMsIDE4LCAxOSwgCi0gICAgMjI0LCAxMDgsIDE4LCAxOSwgMjE3LCAzMiwgMTgsIDE5LCAyMzQsIDE5NSwgMTgsIDE5LCAyMzMsIDE4NSwgMTgsIDE5LCAKLSAgICAyMzEsIDEzNywgMTgsIDE5LCAyMjgsIDQyLCAxOCwgMTksIDIyOSwgMTg2LCAxOCwgMTksIDIzMywgNzQsIDE4LCAxOSwgCi0gICAgMjE5LCAyNCwgMTgsIDE5LCAyMjEsIDIxMywgMTgsIDE5LCAyMTksIDIzNCwgMTgsIDE5LCAyMjAsIDY4LCAxOCwgMTksIAotICAgIDIxOSwgMjAzLCAxOCwgMTksIDIxMCwgMjIwLCAxOCwgMTksIDIxMSwgNTIsIDE4LCAxOSwgMjIzLCAxMzcsIDE4LCAxOSwgCi0gICAgMjI3LCAxNzUsIDE4LCAxOSwgMjI2LCAyMjAsIDIyNywgMTc1LCAxOCwgMTksIDIyNywgMTc0LCAxOCwgMTksIDIyNiwgMjIwLCAKLSAgICAyMjcsIDE3NCwgMTgsIDE5LCAyMjcsIDE3MywgMTgsIDE5LCAyMjYsIDIyMCwgMjI3LCAxNzMsIDE4LCAxOSwgMjI3LCAxNzIsIAotICAgIDE4LCAxOSwgMjI2LCAyMjAsIDIyNywgMTcyLCAxOCwgMTksIDIyMiwgMTA3LCAxOCwgMTksIDIyMiwgMTA2LCAxOCwgMTksIAotICAgIDIyMiwgMTA1LCAxOCwgMTksIDIyMiwgMTA0LCAxOCwgMTksIDIyMiwgMTAzLCAxOCwgMTksIDIyMiwgMTExLCAxOCwgMTksIAotICAgIDIyNiwgMjIwLCAyMjYsIDEwOSwgMTgsIDE5LCAyMjYsIDIyMCwgMjE3LCAxNTMsIDE4LCAxOSwgMjI2LCAyMjAsIDIzNSwgCi0gICAgMjksIDE4LCAxOSwgMjI2LCAyMjAsIDI1MSwgNzQsIDE4LCAxOSwgMjI2LCAyMjAsIDE5NCwgMTgsIDE5LCAyMjYsIDIyMCwgCi0gICAgMjMwLCAzMCwgMTgsIDE5LCAyMjYsIDIyMCwgMjIyLCA5MywgMTgsIDE5LCAyMjYsIDIyMCwgMjIwLCAxMDYsIDE4LCAxOSwgCi0gICAgMjQ1LCAyMjcsIDIxMiwgOTgsIDE4LCAxOSwgMjEyLCA3LCAyMTIsIDk4LCAxOCwgMTksIDQwLCA0LCAyMjIsIDIzNiwgMTgsIAotICAgIDE5LCA0MCwgMjIzLCAxNjAsIDI0NywgMTI4LCAxOCwgMTksIDIyMywgMjI2LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTksIDIzMiwgCi0gICAgMTMzLCAxOCwgMTksIDE1OSwgMjMzLCAxNDAsIDE4LCAxOSwgMjE2LCAxMjcsIDE4LCAxOSwgMjE2LCAxMjksIDE4LCAxOSwgCi0gICAgMjE1LCAxMzcsIDE4LCAxOSwgMjE1LCAxMzksIDE4LCAxOSwgMjE1LCAxNDQsIDE4LCAxOSwgMjE2LCA1MCwgMTgsIDE5LCAKLSAgICAyMTYsIDUyLCAxOCwgMTksIDIyMSwgMjExLCAyMTksIDIwOCwgMTgsIDE5LCAyMjEsIDIxMSwgMjIwLCAzLCAxOCwgMTksIAotICAgIDIyMSwgMjExLCAyNDEsIDYwLCAxOCwgMTksIDczLCAyNDIsIDgwLCAxOCwgMTksIDczLCAyNDgsIDYwLCAyNDMsIDYyLCAxOCwgCi0gICAgMTksIDczLCAyNDMsIDEzOSwgMTgsIDE5LCA3MywgMjQyLCA4NSwgMTgsIDE5LCAyMjEsIDIxMSwgMjM1LCAzOSwgMTgsIDE5LCAKLSAgICA3MywgMjM1LCAzNywgMTgsIDE5LCAyNTIsIDc2LCAyNDgsIDYwLCAxNTYsIDE4LCAxOSwgMjUyLCA3NiwgMjQ4LCA2MCwgCi0gICAgMTUzLCAxOCwgMTksIDczLCAyNDgsIDU1LCAyMjIsIDkzLCAyMzIsIDIyOSwgMjEzLCAxMjIsIDIzMywgMTYsIDIzMiwgMjI5LCAKLSAgICAxLCAxNzYsIDIzMiwgMjI5LCAxLCAyMzQsIDEzOCwgMjMyLCAyMjksIDEsIDI0MywgMTQyLCAyMzIsIDIyOSwgMSwgMjQzLCAKLSAgICAwLCAyMzIsIDIyOSwgMSwgMjI5LCA4MiwgMjMyLCAyMjksIDEsIDI1MSwgNDEsIDIzMiwgMjI5LCAxLCAyNTAsIDE2NSwgCi0gICAgMjMyLCAyMjksIDEsIDIzNSwgMTQ3LCAyMzIsIDIyOSwgMSwgMjM1LCAxMjAsIDIzMiwgMjI5LCAxLCAyMTEsIDcxLCAyMzIsIAotICAgIDIyOSwgMSwgMjE3LCAxMDYsIDIzMiwgMjI5LCAxLCAyMTYsIDIwOSwgMjMyLCAyMjksIDEsIDI0OCwgMjI5LCAyMzIsIDIyOSwgCi0gICAgMSwgMjQ4LCAzMywgMjMyLCAyMjksIDEsIDE5OCwgMjMyLCAyMjksIDEsIDE5MSwgMjMyLCAyMjksIDEsIDIyNSwgMTUwLCAKLSAgICAyMzIsIDIyOSwgMSwgMjUyLCAxOTksIDIzMiwgMjI5LCAxLCAyNTIsIDI2LCAyMzIsIDIyOSwgMSwgMTg2LCAyMzIsIDIyOSwgCi0gICAgMSwgMTkyLCAyMzIsIDIyOSwgMSwgMjA1LCAyMzIsIDIyOSwgMSwgMjMzLCAxNDEsIDIzMiwgMjI5LCAxLCAyMTIsIDY1LCAKLSAgICAyMzIsIDIyOSwgMSwgMjIwLCAxMDQsIDIzMiwgMjI5LCAxLCAyMTgsIDIyNSwgMjMyLCAyMjksIDEsIDIwNiwgMjMyLCAyMjksIAotICAgIDEsIDE2MiwgMjMyLCAyMjksIDI1LCA1LCA2MSwgMjMyLCAyMjksIDI1LCA1LCA3NCwgMjMyLCAyMjksIDI1LCA1LCA2OSwgCi0gICAgMjMyLCAyMjksIDI1LCA1LCAyNDUsIDIxNywgMjMyLCAyMjksIDI1LCA1LCAyNTQsIDIxMCwgMjMyLCAyMjksIDI1LCA1LCAKLSAgICAyMjYsIDE4NywgMjMyLCAyMjksIDI1LCA1LCAyNTMsIDIwMCwgMjMyLCAyMjksIDI1LCA1LCA3NiwgMjMyLCAyMjksIDI1LCAKLSAgICA1LCA3OCwgMjMyLCAyMjksIDIxOCwgNzQsIDEsIDE5MiwgMjMyLCAyMjksIDIxOCwgNzQsIDEsIDIwNSwgMjMyLCAyMjksIAotICAgIDIxOCwgNzQsIDEsIDIxMiwgNjUsIDIzMiwgMjI5LCA0LCAxLCAxNzYsIDIzMiwgMjI5LCA0LCAxLCAyMjksIDgyLCAyMzIsIAotICAgIDIyOSwgNCwgMSwgMjU0LCA4MywgMjMyLCAyMjksIDQsIDEsIDIxNywgMTA2LCAyMzIsIDIyOSwgNCwgMSwgMTk4LCAyMzIsIAotICAgIDIyOSwgNCwgMSwgMTkxLCAyMzIsIDIyOSwgNCwgMSwgMTg2LCAyMzIsIDIyOSwgNCwgMSwgMjA1LCAyMzIsIDIyOSwgNCwgMSwgCi0gICAgMjMzLCAxNDEsIDIzMiwgMjI5LCA1LCAyMzAsIDk0LCAyMzIsIDIyOSwgNSwgMjM0LCAxNzcsIDIzMiwgMjI5LCA1LCAyMjIsIAotICAgIDM0LCAyMzIsIDIyOSwgNSwgMjMyLCAxMzMsIDIzMiwgMjI5LCAyNDUsIDM5LCA3OSwgMjMyLCAyMjksIDIyNCwgMTYsIDc5LCAKLSAgICAyMzIsIDIyOSwgMjEsIDIxMCwgODYsIDIzMiwgMjI5LCAyMSwgMTExLCAyMzIsIDIyOSwgMjEsIDEwNSwgMjMyLCAyMjksIAotICAgIDIxLCAxNTgsIDIzMiwgMjI5LCAyMSwgMTYxLCAyMzIsIDIyOSwgMjEsIDE5MCwgMjMyLCAyMjksIDIxLCAxOTUsIDIzMiwgCi0gICAgMjI5LCAyMSwgMTk5LCAyMzIsIDIyOSwgMjEsIDE5NiwgMjMyLCAyMjksIDIxLCAyMDEsIDM5LCAyMzMsIDY1LCAxLCAxNzYsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTEsIDE2NSwgMzksIDIzMywgNjUsIDEsIDIyOSwgODIsIDM5LCAyMzMsIDY1LCAxLCAyMTUsIAotICAgIDE4NCwgMzksIDIzMywgNjUsIDEsIDIwNiwgMzksIDIzMywgNjUsIDEsIDE5MiwgMzksIDIzMywgNjUsIDEsIDIxNywgMTA2LCAKLSAgICAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyMDksIDM5LCAyMzMsIDY1LCAxLCAyMzMsIDE0MSwgMzksIDIzMywgNjUsIDEsIDE5MSwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIyNSwgMTUwLCAzOSwgMjMzLCA2NSwgMSwgMTg2LCAzOSwgMjMzLCA2NSwgMSwgMjQ0LCAyMDQsIAotICAgIDM5LCAyMzMsIDY1LCAxLCAyMTQsIDI3LCAzOSwgMjMzLCA2NSwgMSwgMTYyLCAzOSwgMjMzLCA2NSwgMSwgMjI0LCA5MSwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIzNCwgMTM4LCAzOSwgMjMzLCA2NSwgMSwgMjE1LCAxNzYsIDM5LCAyMzMsIDY1LCAxLCAxOTgsIAotICAgIDM5LCAyMzMsIDY1LCAxLCA2MSwgMzksIDIzMywgNjUsIDEsIDc0LCAzOSwgMjMzLCA2NSwgMSwgMjQ1LCAyMTcsIDM5LCAKLSAgICAyMzMsIDY1LCAxLCAyNDUsIDIwNSwgMzksIDIzMywgNjUsIDEsIDY5LCAzOSwgMjMzLCA2NSwgMSwgMjI2LCAxODcsIDM5LCAKLSAgICAyMzMsIDY1LCAxLCA3OCwgMzksIDIzMywgNjUsIDEsIDIxNCwgMjE0LCAzOSwgMjMzLCA2NSwgMSwgNzYsIDM5LCAyMzMsIAotICAgIDY1LCAxLCAyNTMsIDE5OCwgMzksIDIzMywgNjUsIDEsIDI1NCwgMjEwLCAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyOSwgMzksIAotICAgIDIzMywgNjUsIDEsIDIxNiwgMjgsIDM5LCAyMzMsIDY1LCAxLCAyMTYsIDI3LCAzOSwgMjMzLCA2NSwgMSwgMjE2LCAyNiwgCi0gICAgMzksIDIzMywgNjUsIDEsIDIxNiwgMjUsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjQsIDkxLCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMjI0LCA5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE3NiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTY1LCAKLSAgICAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjI5LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE3NiwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjEsIDIxMSwgMTY1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI5LCA4MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIAotICAgIDIxNSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTkyLCAxNjYsIDM5LCAKLSAgICAxNzMsIDEsIDEyMSwgMjE1LCAxODQsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMDYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKLSAgICAxOTIsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTcsIDEwNiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNiwgMjA5LCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMTk4LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE3LCAxMDYsIDE2NiwgMzksIDE3MywgMSwgCi0gICAgMTIxLCAyMTYsIDIwOSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5OCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAKLSAgICAzOSwgMTczLCAxLCAxMjUsIDIyNSwgMTUwLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTg2LCAxNjYsIDM5LCAxNzMsIDEsIAotICAgIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjI1LCAxNTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxODYsIDE2NiwgCi0gICAgMzksIDE3MywgMSwgMTI1LCAyNDQsIDIwNCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgCi0gICAgMSwgMTI1LCAyMzMsIDE0MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0NCwgMjA0LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCi0gICAgMjE0LCAyNywgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTQxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMTYyLCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyNSwgMjQ4LCAyMjksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyNTIsIDE5OSwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjEsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI0OCwgMjI5LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjUyLCAKLSAgICAxOTksIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMzMsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIxMSwgMTM4LCAxNjYsIAotICAgIDM5LCAxNzMsIDEsIDEyMSwgMjMzLCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAKLSAgICAxLCAxMjUsIDIxOCwgODMsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTgsIDgzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNSwgCi0gICAgMjE5LCAyNDEsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgODIsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIzNiwgNDAsIAotICAgIDE2NiwgMzksIDE3MywgMjUsIDUsIDY5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExOCwgMTY2LCAzOSwgMTczLCAyNSwgCi0gICAgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NCwgMjUyLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3OCwgMTY2LCAzOSwgCi0gICAgMTczLCAyNSwgNSwgMjI3LCA0LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxNCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCi0gICAgMjUzLCAxNzUsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1NSwgMzcsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIxNCwgMTExLCAKLSAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMjYsIDExMywgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI3LCAxLCAxNjYsIDM5LCAxNzMsIAotICAgIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjM1LCAxNTgsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgCi0gICAgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDg0LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDMwLCAxNjYsIDM5LCAKLSAgICAxNzMsIDEsIDQwLCAxOTQsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIzNSwgMjksIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgCi0gICAgNjgsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTY2LCAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNjMsIDE2NiwgMzksIAotICAgIDE3MywgMTM4LCAyMzEsIDE2MiwgMTY2LCAzOSwgMTczLCAyMSwgMjEwLCA4NiwgMTY2LCAzOSwgMTczLCAyMSwgMTExLCAKLSAgICAxNjYsIDM5LCAxNzMsIDIxLCAxMDUsIDE2NiwgMzksIDE3MywgMjEsIDE1OCwgMTY2LCAzOSwgMTczLCAyMSwgMTYxLCAxNjYsIAotICAgIDM5LCAxNzMsIDIxLCAxOTAsIDE2NiwgMzksIDE3MywgMjEsIDE5NSwgMTY2LCAzOSwgMTczLCAyMSwgMTk5LCAxNjYsIDM5LCAKLSAgICAxNzMsIDIxLCAxOTYsIDE2NiwgMzksIDE3MywgMjEsIDIwMSwgMTY2LCAzOSwgMTczLCA4OSwgMjEsIDExMSwgMTY2LCAzOSwgCi0gICAgMTczLCA1LCAyMzMsIDEyNiwgMTY2LCAzOSwgMTczLCA1LCAyMzMsIDEyNSwgNzAsIDE2LCAyMjUsIDI0MCwgNzAsIDE2LCAKLSAgICAyMzAsIDc3LCAyMzQsIDMxLCA3MCwgMTYsIDIyNSwgNzUsIDIzNCwgMzEsIDcwLCAxNiwgMjUyLCA1OCwgMjM0LCAzMSwgNzAsIAotICAgIDE2LCAyNTEsIDExMiwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxOSwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxMywgMjM0LCAKLSAgICAzMSwgNzAsIDE2LCAyMjQsIDIxMSwgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIDIxNywgMjM0LCAzMSwgNzAsIDE2LCAyMjQsIAotICAgIDIxNSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE4MSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3NywgMjM0LCAzMSwgNzAsIAotICAgIDE2LCAyNDgsIDE3NiwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3OSwgMjM0LCAzMSwgNzAsIDE2LCAyNDgsIDE3OCwgMjM0LCAKLSAgICAzMSwgNzAsIDE2LCAyNDgsIDE3NSwgMjM0LCAzMSwgNzAsIDE2LCAyMTUsIDg3LCA3MCwgMTYsIDIzMCwgNzcsIDIyMiwgCi0gICAgMjA3LCA3MCwgMTYsIDIyNSwgNzUsIDIyMiwgMjA3LCA3MCwgMTYsIDI1MiwgNTgsIDIyMiwgMjA3LCA3MCwgMTYsIDI1MSwgCi0gICAgMTEyLCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxOSwgMjIyLCAyMDcsIDcwLCAxNiwgMjI0LCAyMTMsIDIyMiwgMjA3LCAKLSAgICA3MCwgMTYsIDIyNCwgMjExLCAyMjIsIDIwNywgNzAsIDE2LCAyMjQsIDIxNywgMjIyLCAyMDcsIDcwLCAxNiwgMjI0LCAyMTUsIAotICAgIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTgxLCAyMjIsIDIwNywgNzAsIDE2LCAyNDgsIDE3NywgMjIyLCAyMDcsIDcwLCAxNiwgCi0gICAgMjQ4LCAxNzYsIDIyMiwgMjA3LCA3MCwgMTYsIDI0OCwgMTc5LCAyMjIsIDIwNywgNzAsIDE2LCAyNDgsIDE3OCwgMjIyLCAKLSAgICAyMDcsIDcwLCAxNiwgMjQ4LCAxNzUsIDIyMiwgMjA3LCAyNTEsIDEyOSwgMSwgMTc2LCAyNTEsIDEyOSwgMSwgMjQzLCAxNDIsIAotICAgIDI1MSwgMTI5LCAxLCAyMjksIDgyLCAyNTEsIDEyOSwgMSwgMjI5LCAyNywgMjUxLCAxMjksIDEsIDE5MSwgMjUxLCAxMjksIAotICAgIDEsIDI1MiwgMTk5LCAyNTEsIDEyOSwgMSwgMTg2LCAyNTEsIDEyOSwgMSwgMjMwLCAxMTAsIDI1MSwgMTI5LCAxLCAyMTcsIAotICAgIDEwNiwgMjUxLCAxMjksIDEsIDI0OCwgMjI5LCAyNTEsIDEyOSwgMSwgMTk4LCAyNTEsIDEyOSwgMSwgMjI4LCA0MSwgMjUxLCAKLSAgICAxMjksIDEsIDI1MSwgNDEsIDI1MSwgMTI5LCAxLCAyMzUsIDE0NywgMjUxLCAxMjksIDEsIDIyNywgMTY5LCAyNTEsIDEyOSwgCi0gICAgMSwgMjI3LCAxNjIsIDI1MSwgMTI5LCAxLCAxOTIsIDI1MSwgMTI5LCAxLCAyMDUsIDI1MSwgMTI5LCAxLCAyMzMsIDE0MSwgCi0gICAgMjUxLCAxMjksIDEsIDIxNCwgMjcsIDI1MSwgMTI5LCAxLCAyMDYsIDI1MSwgMTI5LCAxLCA2MSwgMjUxLCAxMjksIDEsIAotICAgIDE2MiwgMjUxLCAxMjksIDI1LCA1LCA3NCwgMjUxLCAxMjksIDI1LCA1LCA2OSwgMjUxLCAxMjksIDI1LCA1LCA3NiwgMjUxLCAKLSAgICAxMjksIDI1LCA1LCA3OCwgMjUxLCAxMjksIDI1LCA1LCAyNTQsIDI1MiwgMjUxLCAxMjksIDIyNiwgNjQsIDI1MSwgMTI5LCAKLSAgICAyNDUsIDE1MSwgNjQsIDIyMSwgMTc0LCAzOSwgODksIDEsIDEyNSwgMTc2LCAzOSwgODksIDEsIDEyNSwgMjM0LCAxMzgsIAotICAgIDM5LCA4OSwgMSwgMTI1LCAyMzMsIDE3NywgMzksIDg5LCAxLCAxMjEsIDE3NiwgMzksIDg5LCAxLCAxMjEsIDIzMywgMTc3LCAKLSAgICAzOSwgODksIDEsIDEyMSwgMjM0LCAxMzgsIDM5LCA4OSwgMSwgMjI5LCA4MiwgMzksIDg5LCAxLCAxMjUsIDI1MSwgNDEsIAotICAgIDM5LCA4OSwgMSwgMTI1LCAyNTAsIDE2NSwgMzksIDg5LCAxLCAxMjEsIDI1MSwgNDEsIDM5LCA4OSwgMSwgMTIxLCAyMDYsIAotICAgIDM5LCA4OSwgMSwgMTIxLCAyNTAsIDE2NSwgMzksIDg5LCAxLCAyMjcsIDE2OSwgMzksIDg5LCAxLCAyMjMsIDE0MywgMzksIAotICAgIDg5LCAxLCAxMjUsIDIyMywgMTQxLCAzOSwgODksIDEsIDI0OCwgMjI5LCAzOSwgODksIDEsIDEyMSwgMjIzLCAxNDEsIDM5LCAKLSAgICA4OSwgMSwgMjIzLCAxNTIsIDM5LCA4OSwgMSwgMTI1LCAyMTcsIDEwNiwgMzksIDg5LCAxLCAxMjUsIDIxNiwgMjA5LCAzOSwgCi0gICAgODksIDEsIDEyMSwgMjE3LCAxMDYsIDM5LCA4OSwgMSwgMTIxLCAyMTYsIDIwOSwgMzksIDg5LCAxLCAxOTgsIDM5LCA4OSwgCi0gICAgMSwgMjUyLCAxOTksIDM5LCA4OSwgMSwgMTI1LCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAyMjUsIDE1MCwgMzksIDg5LCAxLCAKLSAgICAxMjUsIDI0NCwgMjA0LCAzOSwgODksIDEsIDEyMSwgMTkxLCAzOSwgODksIDEsIDEyMSwgMjQ0LCAyMDQsIDM5LCA4OSwgMSwgCi0gICAgMTIxLCAyMjUsIDE1MCwgMzksIDg5LCAxLCAxODYsIDM5LCA4OSwgMSwgMTIxLCAxOTIsIDM5LCA4OSwgMSwgMTI1LCAxOTIsIAotICAgIDM5LCA4OSwgMSwgMjA1LCAzOSwgODksIDEsIDIyMiwgMTM5LCAzOSwgODksIDEsIDIzMywgMTQxLCAzOSwgODksIDEsIDIzMiwgCi0gICAgOTgsIDM5LCA4OSwgMSwgMjEyLCA2NSwgMzksIDg5LCAxLCAxMjUsIDIyMCwgMTA0LCAzOSwgODksIDEsIDEyNSwgMjE4LCAKLSAgICAyMjUsIDM5LCA4OSwgMSwgMTI1LCAyMDYsIDM5LCA4OSwgMSwgMTI1LCAxNjIsIDM5LCA4OSwgMSwgMjMyLCAxOTAsIDM5LCAKLSAgICA4OSwgMSwgNjEsIDM5LCA4OSwgMSwgMTIxLCAxNjIsIDM5LCA4OSwgMSwgNzQsIDM5LCA4OSwgMSwgMjM2LCA0MCwgMzksIAotICAgIDg5LCAxLCA2OSwgMzksIDg5LCAxLCAyMTQsIDExOCwgMzksIDg5LCAxLCAyNDUsIDIxNywgMzksIDg5LCAxLCAyMjYsIDE4NywgCi0gICAgMzksIDg5LCAxLCAyMzMsIDEyNiwgMzksIDg5LCAxLCAyNDIsIDEzOSwgMjA2LCAzOSwgODksIDExNywgNSwgMTQ3LCAyMDUsIAotICAgIDM5LCA4OSwgMTE3LCA1LCAxNDcsIDIzMywgMTQxLCAzOSwgODksIDExNywgNSwgMjMzLCAxNDIsIDIxNywgNTksIDIzMywgCi0gICAgMTE1LCAzOSwgODksIDUsIDIzMSwgMjA5LCAyMzQsIDIzNywgMjMzLCAxMTUsIDM5LCA4OSwgMTE3LCA1LCA0MCwgMjI5LCAKLSAgICA4MiwgMzksIDg5LCAxMTcsIDUsIDEyMSwgMTkxLCAzOSwgODksIDExNywgNSwgMTI1LCAyMjMsIDE0MiwgMTc3LCAxMjEsIAotICAgIDE5MSwgMzksIDg5LCAxMTcsIDUsIDE4NiwgMzksIDg5LCAxMTcsIDUsIDI1MiwgMTk5LCAzOSwgODksIDExNywgNSwgMjA2LCAKLSAgICAzOSwgODksIDUsIDIyMiwgMTIsIDM5LCA4OSwgMjUsIDUsIDYxLCAzOSwgODksIDI1LCA1LCAyMzEsIDIwOSwgMjIxLCAyMjgsIAotICAgIDM5LCA4OSwgMjUsIDUsIDI1NSwgODIsIDM5LCA4OSwgMjUsIDUsIDIxNywgNjUsIDI1NSwgODIsIDM5LCA4OSwgMjUsIDUsIAotICAgIDc0LCAzOSwgODksIDI1LCA1LCAyMzYsIDQwLCAzOSwgODksIDI1LCA1LCAyMTQsIDIxNCwgMzksIDg5LCAyNSwgNSwgMjE0LCAKLSAgICAxMTcsIDM5LCA4OSwgMjUsIDUsIDY5LCAzOSwgODksIDI1LCA1LCAyMTQsIDExOCwgMzksIDg5LCAyNSwgNSwgNzgsIDM5LCAKLSAgICA4OSwgMjUsIDUsIDIyNywgNSwgNTEsIDM5LCA4OSwgMjUsIDUsIDIyNiwgMTEzLCAzOSwgODksIDI1LCA1LCA3NiwgMzksIAotICAgIDg5LCAyNSwgNSwgMjU0LCAyNTIsIDM5LCA4OSwgMjUsIDUsIDIyNiwgMTg3LCAzOSwgODksIDI1LCA1LCAyNTQsIDIxMCwgCi0gICAgMzksIDg5LCAyNSwgNSwgODksIDI1NCwgMjEwLCAzOSwgODksIDI1LCA1LCAyMjcsIDUsIDQ4LCAzOSwgODksIDUsIDIzMSwgCi0gICAgMjA5LCAyMzQsIDIzNiwgMzksIDg5LCA1LCAyMTYsIDMwLCAzOSwgODksIDUsIDIxNiwgMjksIDM5LCA4OSwgNSwgMjM0LCAKLSAgICAxMDMsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCAxMDMsIDIxNiwgMjcsIDM5LCA4OSwgNSwgMjM0LCAxMDMsIDIxNiwgMjYsIAotICAgIDM5LCA4OSwgNSwgMjIzLCAxOTEsIDI0MiwgNTIsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIyMSwgMjU1LCAzOSwgODksIDUsIAotICAgIDIzNCwgMTAyLCAyMzQsIDIyMSwgMzksIDg5LCAzOCwgMjQ5LCAxMjMsIDI0NywgMTI4LCAzOSwgODksIDI0MSwgNTMsIDIxLCAKLSAgICAyMTAsIDg2LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxMTEsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDEwNSwgMzksIDg5LCAyNDEsIAotICAgIDUzLCAyMSwgMTU4LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxNjEsIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5MCwgMzksIDg5LCAKLSAgICAyNDEsIDUzLCAyMSwgMTk1LCAzOSwgODksIDI0MSwgNTMsIDIxLCAxOTksIDM5LCA4OSwgMjQxLCA1MywgMjEsIDE5NiwgMzksIAotICAgIDg5LCAyNDEsIDUzLCAyMSwgMjAxLCAzOSwgODksIDg5LCAyMSwgMjEwLCA4NiwgMzksIDg5LCA4OSwgMjEsIDExMSwgMzksIAotICAgIDg5LCA4OSwgMjEsIDEwNSwgMzksIDg5LCA4OSwgMjEsIDE1OCwgMzksIDg5LCA4OSwgMjEsIDE2MSwgMzksIDg5LCA4OSwgCi0gICAgMjEsIDE5MCwgMzksIDg5LCA4OSwgMjEsIDE5NSwgMzksIDg5LCA4OSwgMjEsIDE5OSwgMzksIDg5LCA4OSwgMjEsIDE5NiwgCi0gICAgMzksIDg5LCA4OSwgMjEsIDIwMSwgMzksIDg5LCA1LCAyMTEsIDI0OSwgMzksIDg5LCA1LCAyMTEsIDI0OCwgMzksIDg5LCA1LCAKLSAgICAyMjEsIDIxNywgMzksIDg5LCA1LCAyMzQsIDE2NiwgMzksIDg5LCA1LCAyNDAsIDIzOSwgMzksIDg5LCA1LCAyNDcsIDE0MiwgCi0gICAgMzksIDg5LCA1LCAyMjMsIDUyLCAyMjIsIDE4OSwgMjIzLCAxNTIsIDM5LCA4OSwgNSwgMjMxLCAyMDksIDIxMSwgNzIsIDM5LCAKLSAgICA4OSwgNSwgMjM1LCAxMiwgMzksIDg5LCA1LCAyMzUsIDExLCAzOSwgODksIDUsIDIyMSwgMjI0LCAzOSwgODksIDUsIDIyMSwgCi0gICAgMjIzLCAzOSwgODksIDUsIDI0MiwgMTYsIDM5LCA4OSwgNSwgMjUxLCAzOCwgMTAyLCA1LCAyMTQsIDIwMCwgMjIzLCAzMywgCi0gICAgMTAyLCA1LCAyMTQsIDIwMCwgMjUxLCA5LCAxMDIsIDUsIDI1MCwgMTk0LCAxMDIsIDUsIDIxOCwgMTYsIDEwMiwgNSwgMjUxLCAKLSAgICAyNDEsIDEwMiwgMSwgMjU0LCAxOTMsIDEwMiwgMSwgMjU0LCAxOTQsIDIxNywgMTQsIDEwMiwgMSwgMjM2LCAzNiwgMTAyLCAKLSAgICAxLCAyMzYsIDM3LCAyMTcsIDE0LCAxMDIsIDEsIDIxNCwgMjAzLCAxMDIsIDEsIDIxNCwgMjA0LCAyMTcsIDE0LCAxMDIsIDEsIAotICAgIDIyMywgMTkxLCAyMjMsIDgyLCAxMDIsIDEsIDIyMywgMTkxLCAyMjMsIDgzLCAyMTcsIDE0LCAxMDIsIDEsIDIzMywgMTQyLCAKLSAgICAyMzMsIDMwLCAxMDIsIDEsIDIzMywgMTQyLCAyMzMsIDMxLCAyMTcsIDE0LCAxMDIsIDEsIDI0NSwgMTg3LCAxMDIsIDEsIAotICAgIDI1NCwgMjA4LCAxMDIsIDEsIDIyNiwgMjE2LCAxMDIsIDEsIDIyNiwgMjE3LCAyMTcsIDE0LCAxMDIsIDEsIDE3NiwgMTAyLCAKLSAgICAxLCAyMzUsIDE5LCAyMzEsIDIxMiwgMTAyLCAxLCAyNDMsIDE0MiwgMTAyLCAxLCAyNDMsIDE0MywgMjQyLCAxNjgsIDEwMiwgCi0gICAgMSwgMjI5LCA4MiwgMTAyLCAxLCAyNTEsIDQxLCAxMDIsIDEsIDI1MSwgNDIsIDIzMywgMTI5LCAxMDIsIDEsIDIzNSwgMTQ3LCAKLSAgICAxMDIsIDEsIDIzNSwgMTQ4LCAyMzUsIDEyNCwgMTAyLCAxLCAyMjcsIDE2OSwgMTAyLCAxLCAyMTcsIDEwNywgMjMzLCA4MiwgCi0gICAgMTAyLCAxLCAyMTcsIDEwNywgMjMwLCA3MiwgMjMxLCAyMTIsIDEwMiwgMSwgMjQ4LCAyMzAsIDIzMCwgNzIsIDI1NCwgMTUzLCAKLSAgICAxMDIsIDEsIDI0OCwgMjMwLCAyMzAsIDcyLCAyMzEsIDIxMiwgMTAyLCAxLCAyMjksIDIzNCwgMjIzLCAxNTUsIDEwMiwgMSwgCi0gICAgMjE3LCAxMDYsIDEwMiwgMSwgMjE3LCAxMDcsIDIxNywgMzYsIDEwMiwgMSwgMjQ4LCAyMjksIDEwMiwgMSwgMjQ4LCAyMzAsIAotICAgIDIzMSwgMjMwLCAxMDIsIDEsIDE5OCwgMTAyLCAxLCAxOTEsIDEwMiwgMSwgMjI2LCA5NCwgMjM0LCAyMzIsIDEwMiwgMSwgCi0gICAgMjUyLCAxOTksIDEwMiwgMSwgMjUyLCAyMDAsIDIzNCwgMTc4LCAxMDIsIDEsIDE4NiwgMTAyLCAxLCAxOTIsIDEwMiwgMSwgCi0gICAgMjA1LCAxMDIsIDEsIDIzMywgMTQxLCAxMDIsIDEsIDIxMiwgNjUsIDEwMiwgMSwgMjIyLCAzNiwgMjIyLCAyMiwgMTAyLCAxLCAKLSAgICAyMjIsIDM2LCAyMjEsIDIzNSwgMTAyLCAxLCAyMDYsIDEwMiwgMSwgMTYyLCAxMDIsIDUsIDIyMywgNzMsIDEwMiwgMjUsIDUsIAotICAgIDIxNywgMTQsIDEwMiwgMjUsIDUsIDIxNCwgMTk5LCAxMDIsIDI1LCA1LCAyMTQsIDIwMCwgMjIxLCAyMzEsIDEwMiwgMjUsIAotICAgIDUsIDIxOCwgNDgsIDEwMiwgMjUsIDUsIDIxOCwgNDksIDIzNiwgMjgsIDEwMiwgMjUsIDUsIDIyMywgMTkxLCAyMjMsIDgyLCAKLSAgICAxMDIsIDI1LCA1LCAyMjMsIDE5MSwgMjIzLCA4MywgMjE3LCAxNCwgMTAyLCAyNSwgNSwgMjMzLCAxNDIsIDIzMywgMzAsIAotICAgIDEwMiwgMjUsIDUsIDIzMywgMTQyLCAyMzMsIDMxLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTcsIDY2LCAxMDIsIDI1LCA1LCAKLSAgICAyMTcsIDY3LCAyMjMsIDgyLCAxMDIsIDI1LCA1LCAyMTcsIDY3LCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMTcsIDY3LCAyMjMsIAotICAgIDgzLCAyMTcsIDE0LCAxMDIsIDI1LCA1LCAyMjUsIDE4NywgMTAyLCAyNSwgNSwgMjI1LCAxODgsIDIxNywgMTQsIDEwMiwgCi0gICAgMjU1LCAzLCAyNTUsIDIsIDEwMiwgMSwgMjM1LCAxLCAyMjEsIDIzMCwgMTAyLCAxLCAyMzQsIDEwOCwgMjIxLCAyMzAsIAotICAgIDEwMiwgMSwgMjE1LCAzNCwgMjIxLCAyMzAsIDEwMiwgMSwgMjQ1LCAyMTEsIDIyMSwgMjMwLCAxMDIsIDEsIDIxNCwgMCwgCi0gICAgMjIxLCAyMzAsIDEwMiwgMSwgMjEwLCAxMDcsIDIyMSwgMjMwLCAxMDIsIDEsIDI1MywgMjE3LCAyMjEsIDIzMCwgMTAyLCAKLSAgICAyMSwgMjEwLCA4NiwgMTAyLCAyMSwgMTExLCAxMDIsIDIxLCAxMDUsIDEwMiwgMjEsIDE1OCwgMTAyLCAyMSwgMTYxLCAxMDIsIAotICAgIDIxLCAxOTAsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMTk5LCAxMDIsIDIxLCAxOTYsIDEwMiwgMjEsIDIwMSwgMTAyLCAKLSAgICAyMjYsIDMzLCAxMDIsIDIyNiwgNTksIDEwMiwgMjExLCAyMzgsIDEwMiwgMjUwLCAyNDQsIDIyNiwgNTIsIDEwMiwgMjUwLCAKLSAgICAyNDQsIDIxOSwgMTc0LCAxMDIsIDI1MCwgMjQ0LCAyMjYsIDYsIDEwMiwgMjI2LCA1OCwgMTAyLCAyOCwgMTYsIDI0NywgCi0gICAgMTM0LCAxMDIsIDI4LCAxNiwgMjQ4LCA1OSwgMTAyLCAyOCwgMTYsIDI0NiwgNzIsIDEwMiwgMjgsIDE2LCAyNDgsIDE4NCwgCi0gICAgMTAyLCAyOCwgMTYsIDI0OCwgMTg1LCAyMTgsIDE2LCAxMDIsIDI4LCAxNiwgMjQ3LCAyMTMsIDEwMiwgMjgsIDE2LCAyNDgsIAotICAgIDIyMiwgMTAyLCAyOCwgMTYsIDI0OCwgNDEsIDEwMiwgMjgsIDE2LCAyNDgsIDIwNiwgMTAyLCAyOCwgMTYsIDI0OCwgMTg1LCAKLSAgICAyNDMsIDY0LCAxMDIsIDI4LCAxNiwgMzgsIDIxNywgMTAsIDEwMiwgMjgsIDE2LCAzOCwgMjQ1LCAxNDksIDEwMiwgMjgsIAotICAgIDE2LCAzOCwgMjM0LCAxNzMsIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzUsIDEwMiwgMjgsIDE2LCAzOCwgMjM1LCAxMjgsIAotICAgIDEwMiwgMjgsIDE2LCAzOCwgMjM0LCAxNzQsIDIsIDIzNSwgMTI4LCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTc2LCAyLCAKLSAgICAyMzUsIDEyOCwgMTAyLCAyOCwgMTYsIDM4LCAyNTIsIDQ1LCAxMDIsIDI4LCAxNiwgMzgsIDI0MiwgMTcyLCAxMDIsIDI4LCAKLSAgICAxNiwgMjIyLCAyNTIsIDIwNCwgMjQ2LCA4MiwgMTAyLCAyOCwgMTYsIDIyMiwgMjUyLCAyMDQsIDI0OCwgMjIwLCAxMDIsIAotICAgIDI4LCAxNiwgMjIyLCAyNTIsIDI1MCwgOCwgMjE1LCAxMTIsIDEwMiwgMjgsIDE2LCAyMjIsIDI1MiwgMjUwLCA4LCAyMTcsIAotICAgIDc0LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjYsIDQ3LCAxMDIsIDI4LCAxNiwgMjMzLCA1MCwgMjA0LCAyMjQsIAotICAgIDE0MiwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDI1MCwgOCwgMjI1LCA0MSwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDI1MCwgOCwgCi0gICAgMjI1LCAyOSwgMTAyLCAyOCwgMTYsIDIzMywgNTAsIDIwNCwgMjI1LCA2NCwgMjA3LCA1LCAyMjYsIDMwLCAyMDcsIDUsIAotICAgIDIyNiwgNDMsIDIwNywgNSwgMjI2LCAzOSwgMjA3LCAxLCA2MSwgMjA3LCAxLCA3NCwgMjA3LCAxLCA2OSwgMjA3LCAxLCAKLSAgICAyNTQsIDI1MiwgMjA3LCAxLCA3OCwgMjA3LCAxLCA3NiwgMjA3LCAxLCAyNDUsIDYzLCAyMDcsIDEsIDE3NiwgMjA3LCAxLCAKLSAgICAyMjQsIDkxLCAyMDcsIDEsIDI0MywgMTQyLCAyMDcsIDEsIDIyOSwgODIsIDIwNywgMSwgMjUxLCA0MSwgMjA3LCAxLCAyMzUsIAotICAgIDE0NywgMjA3LCAxLCAyMTAsIDExNiwgMjA3LCAxLCAyMjcsIDE2OSwgMjA3LCAxLCAyMTcsIDEwNiwgMjA3LCAxLCAyNDgsIAotICAgIDIyOSwgMjA3LCAxLCAxOTgsIDIwNywgMSwgMTkxLCAyMDcsIDEsIDI0NCwgMjA0LCAyMDcsIDEsIDIxNCwgMjcsIDIwNywgMSwgCi0gICAgMjUyLCAxOTksIDIwNywgMSwgMTg2LCAyMDcsIDEsIDE5MiwgMjA3LCAxLCAyMDUsIDIwNywgMSwgMjMzLCAxNDEsIDIwNywgCi0gICAgMSwgMjEyLCA2NSwgMjA3LCAxLCAyMDYsIDIwNywgMSwgMjExLCAxNjUsIDIwNywgMSwgMTYyLCAyMDcsIDExNywgNSwgMjI2LCAKLSAgICA1NiwgMjA3LCAxMTcsIDUsIDIyNiwgMzIsIDIwNywgMTE3LCA1LCAyMjYsIDI5LCAyMDcsIDI1LCA1LCAyMjYsIDQ2LCAyMDcsIAotICAgIDI1LCA1LCAyMjYsIDI4LCAyMDcsIDI1LCA1LCAyMjYsIDUwLCAyMDcsIDI1LCA1LCAyMjYsIDM4LCAyMDcsIDI1LCA1LCAKLSAgICAyMjYsIDU3LCAyMDcsIDI1LCA1LCAyMjYsIDQ4LCAyMDcsIDUsIDIyNiwgNjAsIDIwNywgNSwgMjEzLCAxNTIsIDIwNywgCi0gICAgMTE3LCA1LCAyMjUsIDI1MiwgMTg2LCAyMDcsIDExNywgNSwgMjI1LCAyNTIsIDIxMiwgNjUsIDIwNywgMSwgMjM0LCAxMzgsIAotICAgIDIwNywgMSwgMjE3LCAyMzIsIDIwNywgMjEsIDIxMCwgODYsIDIwNywgMjEsIDExMSwgMjA3LCAyMSwgMTA1LCAyMDcsIDIxLCAKLSAgICAxNTgsIDIwNywgMjEsIDE2MSwgMjA3LCAyMSwgMTkwLCAyMDcsIDIxLCAxOTUsIDIwNywgMjEsIDE5OSwgMjA3LCAyMSwgCi0gICAgMTk2LCAyMDcsIDIxLCAyMDEsIDIwNywgMjUzLCAxODMsIDIwNywgMSwgMjIzLCA1NSwgMjA3LCAxLCAyMzMsIDEzLCAyMDcsIAotICAgIDEsIDI1MiwgMjYsIDIwNywgMSwgNDAsIDIzNSwgMjksIDIwNywgMSwgNDAsIDE5NCwgMjUyLCAxMjgsIDEsIDYxLCAyNTIsIAotICAgIDEyOCwgMSwgMjE5LCAxNjYsIDYxLCAyNTIsIDEyOCwgMSwgMTYyLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE2MiwgMjUyLCAKLSAgICAxMjgsIDEsIDIzMSwgMTg2LCAxNjIsIDI1MiwgMTI4LCAxLCAyNTIsIDE5OSwgMjUyLCAxMjgsIDEsIDIzNCwgMjE4LCAyNTIsIAotICAgIDE5OSwgMjUyLCAxMjgsIDEsIDE5MSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAxOTEsIDI1MiwgMTI4LCAxLCAxOTgsIDI1MiwgCi0gICAgMTI4LCAxLCAyMzEsIDE4NiwgMTk4LCAyNTIsIDEyOCwgMSwgMjEyLCA2NSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMTIsIAotICAgIDY1LCAyNTIsIDEyOCwgMSwgMjI2LCA3MSwgMjEyLCA2NSwgMjUyLCAxMjgsIDEsIDI0MywgMTQyLCAyNTIsIDEyOCwgMSwgCi0gICAgMjE5LCAxNjYsIDI0MywgMTQyLCAyNTIsIDEyOCwgMSwgMjM1LCAxNDcsIDI1MiwgMTI4LCAxLCAyNDgsIDIyOSwgMjUyLCAKLSAgICAxMjgsIDEsIDIwNSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMDUsIDI1MiwgMTI4LCAxLCAxODYsIDI1MiwgMTI4LCAxLCAKLSAgICAyMTksIDE2NiwgMTg2LCAyNTIsIDEyOCwgMSwgMjE5LCAyOCwgMjE3LCAxMDYsIDI1MiwgMTI4LCAxLCAyMjgsIDYwLCAyMTcsIAotICAgIDEwNiwgMjUyLCAxMjgsIDEsIDIwNiwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMDYsIDI1MiwgMTI4LCAxLCAyMzEsIDE4NiwgCi0gICAgMjA2LCAyNTIsIDEyOCwgMSwgMTkyLCAyNTIsIDEyOCwgMSwgMjE5LCAxNjYsIDE5MiwgMjUyLCAxMjgsIDEsIDIyOSwgODIsIAotICAgIDI1MiwgMTI4LCAxLCAyMzMsIDE0MSwgMjUyLCAxMjgsIDEsIDIxOSwgMTY2LCAyMzMsIDE0MSwgMjUyLCAxMjgsIDEsIDIyNywgCi0gICAgMTY5LCAyNTIsIDEyOCwgMSwgMjUxLCA0MSwgMjUyLCAxMjgsIDEsIDIyOSwgMTUzLCAyNTIsIDEyOCwgMSwgMjMxLCAxMjksIAotICAgIDI1MiwgMTI4LCAxLCA3NCwgMjUyLCAxMjgsIDEsIDY5LCAyNTIsIDEyOCwgNSwgMjE2LCAzNCwgMjUyLCAxMjgsIDI1LCA1LCAKLSAgICA3NiwgMjUyLCAxMjgsIDI1LCA1LCAyMjYsIDcxLCA3NiwgMjUyLCAxMjgsIDI1LCA1LCAyNDUsIDIxNywgMjUyLCAxMjgsIAotICAgIDI1LCA1LCA3NCwgMjUyLCAxMjgsIDI1LCA1LCAyMzQsIDIxOCwgNzQsIDI1MiwgMTI4LCAyNSwgNSwgNzgsIDI1MiwgMTI4LCAKLSAgICAyNSwgNSwgMjM0LCAyMTgsIDc4LCAyNTIsIDEyOCwgMjUsIDUsIDY5LCAyNTIsIDEyOCwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgCi0gICAgMTY2LCAyMDYsIDI1MiwgMTI4LCAxMTcsIDUsIDIyOSwgODQsIDI1MiwgMTI4LCAxMTcsIDUsIDI0MiwgNjcsIDI1MiwgMTI4LCAKLSAgICAyMjYsIDQxLCAyNTIsIDEyOCwgMjI2LCAzNywgMjUyLCAxMjgsIDE2LCAyNTEsIDI0OSwgMjI5LCAyMzQsIDIzMSwgNDIsIAotICAgIDI1MiwgMTI4LCAxNiwgMjUxLCAyNDksIDIyNSwgNjcsIDI1MiwgMTI4LCAxNiwgMjUxLCAyNDksIDIzNSwgNTQsIDI1MiwgCi0gICAgMTI4LCAxNiwgMjUxLCAyNDksIDIyNiwgNDEsIDE5NywgMSwgMTc2LCAxOTcsIDEsIDIzNCwgNDUsIDE5NywgMSwgMjM0LCAKLSAgICAxMzgsIDE5NywgMSwgMjQzLCAxNDIsIDE5NywgMSwgMjQyLCAxOTMsIDE5NywgMSwgMjI5LCA4MiwgMTk3LCAxLCAyNTEsIAotICAgIDQxLCAxOTcsIDEsIDI1MCwgMTY1LCAxOTcsIDEsIDIzNSwgMTQ3LCAxOTcsIDEsIDIyNywgMTY5LCAxOTcsIDEsIDIxNywgCi0gICAgMTA2LCAxOTcsIDEsIDIxNiwgMjA5LCAxOTcsIDEsIDI0OCwgMjI5LCAxOTcsIDEsIDE5OCwgMTk3LCAxLCAxOTEsIDE5NywgCi0gICAgMSwgMjI1LCA0NSwgMTk3LCAxLCAyMjUsIDE1MCwgMTk3LCAxLCAyNDQsIDIwNCwgMTk3LCAxLCAyNDQsIDgzLCAxOTcsIDEsIAotICAgIDI1MiwgMTk5LCAxOTcsIDEsIDI1MSwgMjMwLCAxOTcsIDEsIDE4NiwgMTk3LCAxLCAyMzAsIDE3MywgMTk3LCAxLCAyMTUsIAotICAgIDE4NCwgMTk3LCAxLCAyMTUsIDE3NiwgMTk3LCAxLCAyNDYsIDQ2LCAxOTcsIDEsIDE5MiwgMTk3LCAxLCAyMDUsIDE5NywgMSwgCi0gICAgMjMzLCAxNDEsIDE5NywgMSwgMTYyLCAxOTcsIDEsIDI0MSwgMTYwLCAxOTcsIDEsIDIxNCwgMjcsIDE5NywgMSwgMjA2LCAKLSAgICAxOTcsIDEsIDIyMCwgMTA0LCAxOTcsIDEsIDIxMiwgNjUsIDE5NywgMSwgNjEsIDE5NywgMjE4LCA3NCwgMSwgMTkyLCAxOTcsIAotICAgIDIxOCwgNzQsIDEsIDIwNSwgMTk3LCAyNSwgNSwgMjU1LCA4MiwgMTk3LCAyNSwgNSwgNzQsIDE5NywgMjUsIDUsIDc4LCAKLSAgICAxOTcsIDI1LCA1LCAyMjYsIDE4NywgMTk3LCAyNSwgNSwgNjksIDE5NywgMjUsIDUsIDIxNCwgMTE4LCAxOTcsIDI1LCA1LCAKLSAgICA3NiwgMTk3LCAxMTcsIDUsIDIzNSwgMjksIDE5NywgMTE3LCA1LCAxOTQsIDE5NywgMTE3LCA1LCAxNTYsIDE5NywgMTE3LCAKLSAgICA1LCAyMzAsIDMwLCAxOTcsIDExNywgNSwgMjI2LCAxMDksIDE5NywgMTE3LCA1LCAxNTMsIDE5NywgMTE3LCA1LCAyMTcsIAotICAgIDE1MywgMTk3LCAxMTcsIDUsIDIyNywgMTQ2LCAxOTcsIDExNywgNSwgMjM0LCAyMzYsIDE5NywgNSwgMjIzLCAxNTMsIDE5NywgCi0gICAgNSwgMjI3LCAyMDksIDE5NywgMjI0LCAxNDQsIDIxNywgMTA0LCAxOTcsIDIyNCwgMTQ0LCAyMjcsIDE1NiwgMjE2LCAxMjEsIAotICAgIDIxNywgMTA0LCAxOTcsIDIyNCwgMTQ0LCAyNTAsIDE3MiwgMTk3LCAyMjQsIDE0NCwgMjE1LCAxNzEsIDI1MCwgMTcyLCAKLSAgICAxOTcsIDIyNCwgMTQ0LCAyMTUsIDE3MCwgMTk3LCAyMSwgMjEwLCA4NiwgMTk3LCAyMSwgMTExLCAxOTcsIDIxLCAxMDUsIAotICAgIDE5NywgMjEsIDE1OCwgMTk3LCAyMSwgMTYxLCAxOTcsIDIxLCAxOTAsIDE5NywgMjEsIDE5NSwgMTk3LCAyMSwgMTk5LCAKLSAgICAxOTcsIDIxLCAxOTYsIDE5NywgMjEsIDIwMSwgMTk3LCAxLCAyMTUsIDE1NywgMTk3LCAxLCAyMTUsIDE0NSwgMTk3LCAxLCAKLSAgICAyNDgsIDE0MywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTExLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxMDUsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE1OCwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAyMSwgMTYxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTAsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjEsIDE5NSwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAyMSwgMTk5LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDIxLCAxOTYsIDIyNiwgMjE0LCAyNTAsIAotICAgIDExMSwgMjEsIDIwMSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDE0MSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAKLSAgICAyNTMsIDIxNCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIDIyNSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIAotICAgIDEyMywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTQsIDE4NywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMzMsIDE0MCwgCi0gICAgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTUsIDQ0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDI1NSwgNDUsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDExMSwgMSwgMjU1LCA0MywgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNTUsIDM4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIAotICAgIDEsIDIzMiwgMjQ3LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzNSwgMTc4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzNiwgCi0gICAgNDEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxOTcsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjM1LCAxODYsIAotICAgIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMyLCAxMDMsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAyMjEsIDIyNiwgCi0gICAgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAyMTksIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjE0LCAxNjgsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDExMSwgMSwgMjE0LCAxMTEsIDIyNiwgMjE0LCAyNTAsIDExMSwgMSwgMjMzLCA2NCwgMjI2LCAyMTQsIDI1MCwgCi0gICAgMTExLCAxLCAyNDUsIDExNiwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNDUsIDIyMCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAKLSAgICAyNDUsIDE1OCwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyNDUsIDk0LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIzMiwgCi0gICAgMTYyLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNiwgMTQxLCAyMjYsIDIxNCwgMjUwLCAxMTEsIDEsIDIyNywgMCwgMjI2LCAKLSAgICAyMTQsIDI1MCwgMTExLCAxLCAyMjYsIDEyOSwgMjI2LCAyMTQsIDI1MCwgMTExLCAxLCAyMjYsIDIyNiwgMjI2LCAyMTQsIAotICAgIDI1MCwgMTExLCAyMzAsIDEwOCwgMjE1LCAxMjIsIDIyNiwgMjE0LCAyNTAsIDExMSwgMjQzLCAxMzcsIDIxNSwgMTIzLCAKLSAgICAyMjYsIDIxNCwgMjUwLCAxMTEsIDIzMCwgMTA2LCAyMTUsIDEyMywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMjMsIDk1LCAyMjYsIAotICAgIDIxNCwgMjUwLCAxMTEsIDIyNSwgMTQ4LCAyMjYsIDIxNCwgMjUwLCAxMTEsIDI1NCwgMjE3LCAyMjYsIDIxNCwgMjUwLCAKLSAgICAxMTEsIDIyNCwgMTQ0LCAyMzAsIDEwMywgMjI2LCAyMTQsIDI1MCwgMTExLCAyMjQsIDE0NCwgNTIsIDIzMCwgMTAzLCAyMDcsIAotICAgIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjE4LCA5LCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjI2LCA0MiwgMjA3LCAyMjQsIAotICAgIDE0NCwgMjUxLCAyNDksIDIyNCwgMTMyLCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjUxLCAyNywgMjA3LCAyMjQsIDE0NCwgCi0gICAgMjUxLCAyNDksIDIzMywgMTQsIDIyMSwgMjI3LCAyMDcsIDIyNCwgMTQ0LCAyNTEsIDI0OSwgMjM1LCAxOSwgMjIxLCAyMjcsIAotICAgIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAyNDgsIDIzMCwgMjIxLCAyMjcsIDIwNywgMjI0LCAxNDQsIDI1MSwgMjQ5LCAKLSAgICAyNTIsIDIwMCwgMjIxLCAyMjcsIDIxMywgMjUyLCAxMzgsIDIzNCwgMjE2LCAyMTMsIDI1MiwgMTM4LCAyMjAsIDc5LCAyMTMsIAotICAgIDI1MiwgMTM4LCAyMjQsIDIwMSwgMjEzLCAyNTIsIDUsIDIyOCwgMjE0LCAyMTMsIDI1MiwgNSwgMjExLCA4MCwgMjMwLCAKLSAgICAyMjcsIDIxOCwgMSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgMjU0LCAyMjIsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgCi0gICAgMjUyLCAxMzgsIDIxMSwgODAsIDIzNSwgMjUwLCAyMTgsIDEsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDIzNCwgMjA0LCAKLSAgICAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDEwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjExLCA4MCwgCi0gICAgMjM0LCAyMDQsIDIzNSwgMjUwLCAyMTgsIDIsIDIyMSwgMTk5LCAyMTMsIDI1MiwgMTM4LCA1MiwgMjE4LCAxLCAyMTMsIAotICAgIDI1MiwgMTM4LCAyMTUsIDIxMiwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIwNCwgMjU0LCA4NSwgMjEzLCAyNTIsIAotICAgIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIDEzNCwgMTcwLCA1MSwgCi0gICAgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDMsIDIzNCwgMjE1LCAyMzUsIDI1MCwgMjE4LCAxLCAyMTMsIDI1MiwgMTM4LCAyNTMsIAotICAgIDIxMiwgMjM1LCAyNTAsIDIxOCwgMSwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDEsIDIxMywgMjUyLCA1LCAyMTMsIAotICAgIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDUyLCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAKLSAgICAyMTMsIDE0OCwgMjU0LCA4NSwgMjEzLCAyNTIsIDUsIDIyMywgNTIsIDIxMywgMTQ4LCAyNTQsIDg1LCAyMTMsIDI1MiwgNSwgCi0gICAgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc4LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgODYsIDIsIDIxNywgCi0gICAgNzgsIDIxMywgMjUyLCA1LCAyNTQsIDg0LCAyNTQsIDk5LCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjUyLCAxNzQsIDIxMywgCi0gICAgMjUyLCA1LCAyNTQsIDg0LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA4NCwgMjE0LCAyMSwgMiwgMjE3LCA3OCwgMjEzLCAKLSAgICAyNTIsIDUsIDIxNiwgNjksIDIxMywgMjUyLCA1LCAyNDEsIDE5OCwgMjAwLCAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjAwLCAKLSAgICAyNTQsIDgzLCAyMTMsIDI1MiwgNSwgMjIyLCAxNDQsIDIwMCwgMjU0LCA4MywgMjEzLCAyNTIsIDUsIDI1NCwgODQsIDIxNCwgCi0gICAgMjIzLCAyMzAsIDk1LCAyMTMsIDI1MiwgNSwgMjU0LCAyOCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg5LCAyNTQsIDI4LCAyMTMsIAotICAgIDI1MiwgMTM4LCAyNTEsIDEwLCA0OCwgMjEzLCAyNTIsIDUsIDIzNSwgMTA4LCAyMTMsIDI1MiwgNSwgMjE0LCAxNjEsIDcsIAotICAgIDEsIDQsIDYsIDYxLCA3LCAxLCA0LCA2LCAyNTQsIDI1MiwgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAyNTIsIDcsIDEsIDQsIAotICAgIDYsIDI1MiwgMTQyLCAyNTMsIDE2NiwgNywgMSwgNCwgNiwgMjUxLCA3NCwgNywgMSwgNCwgNiwgMjQ5LCA2OCwgNywgMSwgNCwgCi0gICAgNiwgMjQ1LCA2NywgNywgMSwgNCwgNiwgNzYsIDcsIDQsIDEsIDIxNSwgOTQsIDIwNCwgNzYsIDcsIDQsIDEsIDIxNSwgOTQsIAotICAgIDc0LCA3LCAxLCA0LCA2LCAyMzUsIDE1MCwgNywgMSwgNCwgNiwgMjM1LCAyOSwgNywgMSwgNCwgNiwgMjMzLCAxNTUsIDIsIAotICAgIDkxLCA3LCAxLCA0LCA2LCAxOTQsIDcsIDEsIDQsIDYsIDIyMywgNTIsIDIzMCwgMzAsIDcsIDEsIDQsIDYsIDc4LCA3LCAxLCAKLSAgICA0LCA2LCAyMDQsIDc4LCA3LCA0LCAxLCAyMTksIDE4OSwgNzgsIDcsIDQsIDEsIDIxOSwgMTg5LCAyMDQsIDc4LCA3LCA0LCAKLSAgICAxLCAyMTksIDE4OSwgMTQ0LCAyLCA5MSwgNywgNCwgMSwgMjE1LCA5NCwgMjI2LCAyMzgsIDcsIDEsIDQsIDYsIDIyNiwgCi0gICAgMTM4LCA3LCA0LCAxLCAyMTYsIDE1LCAxNjMsIDc4LCA3LCA0LCAxLCAyNTEsIDE4MywgMTYzLCA3OCwgNywgMSwgNCwgNiwgCi0gICAgMjI2LCAxMDksIDcsIDEsIDQsIDYsIDIyMywgNTIsIDE1MywgNywgMSwgNCwgNiwgMjE1LCA5NCwgMTUzLCA3LCAxLCA0LCA2LCAKLSAgICAyMTcsIDE1MywgNywgMSwgNCwgNiwgNjksIDcsIDQsIDEsIDIxOSwgMTg5LCA2OSwgNywgNCwgMSwgMjE5LCAxODksIDI0OCwgCi0gICAgOCwgNjksIDcsIDQsIDEsIDIxOSwgMTg5LCAyMTUsIDk0LCAxOTQsIDcsIDEsIDQsIDYsIDIxNCwgMTA1LCA3LCAxLCA0LCA2LCAKLSAgICAyMTIsIDk4LCA3LCAxLCA0LCA2LCAyMTAsIDE1OSwgNywgMSwgNCwgNiwgMjQ1LCAxNiwgNywgMSwgMjEzLCAxMzUsIDIzMywgCi0gICAgODgsIDIxOCwgMjUyLCA3LCAxLCAyNTQsIDIwNSwgMjYsIDEsIDQsIDYsIDI0MywgMTE0LCAyNiwgMSwgNCwgNiwgMjMzLCAKLSAgICAxMDQsIDI2LCAxLCA0LCA2LCAyMjUsIDExMSwgMjYsIDEsIDQsIDYsIDIyMywgNDAsIDI2LCAxLCA0LCA2LCAyMjQsIDE2NCwgCi0gICAgMzMsIDEsIDQsIDYsIDI0NSwgMTgyLCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI1MiwgNTgsIDEsIDYsIDI1MywgCi0gICAgMTY2LCA1OCwgMSwgNiwgMjUyLCAxNDIsIDI1MywgMTY2LCA1OCwgMSwgNiwgMjQ5LCA2OCwgNTgsIDEsIDYsIDc2LCA1OCwgCi0gICAgMSwgNiwgMjIzLCA1MiwgNzYsIDU4LCAxLCA2LCAyNDMsIDIwOSwgNTgsIDEsIDYsIDI0MiwgNjcsIDU4LCAxLCA2LCA3NCwgCi0gICAgNTgsIDEsIDYsIDIzNSwgMTUwLCA1OCwgMSwgNiwgMjM1LCAyOSwgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIDE5NCwgNTgsIAotICAgIDEsIDYsIDIzMCwgMzAsIDU4LCAxLCA2LCAyMjMsIDUyLCAyMzAsIDMwLCA1OCwgMSwgNiwgNzgsIDU4LCAxLCA2LCAyMjYsIAotICAgIDEzOCwgNTgsIDEsIDYsIDIyNiwgMTA5LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTMsIDU4LCAxLCA2LCA2OSwgCi0gICAgNTgsIDEsIDYsIDIxMiwgOTgsIDU4LCAxLCA0LCA2MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDYxLCA1OCwgMSwgNCwgMjU0LCAKLSAgICAxNTEsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI1MiwgNTgsIDEsIDQsIDI1MywgMTY2LCA1OCwgMSwgNCwgMjQ5LCA2OCwgCi0gICAgNTgsIDEsIDQsIDc2LCA1OCwgMSwgNCwgMjIxLCAxOTcsIDU4LCAxLCA0LCAyMDQsIDc2LCA1OCwgMSwgNCwgMjE1LCA5NCwgCi0gICAgMjA0LCA3NiwgNTgsIDEsIDQsIDI0MywgMjA5LCA1OCwgMSwgNCwgMjE1LCA5NCwgNzQsIDU4LCAxLCA0LCAyMzUsIDI5LCAKLSAgICA1OCwgMSwgNCwgMTk0LCA1OCwgMSwgNCwgMjQ1LCAxNDYsIDU4LCAxLCA0LCA3OCwgNTgsIDEsIDQsIDIwNCwgNzgsIDU4LCAKLSAgICAxLCA0LCAyMTYsIDE1LCAxNjMsIDc4LCA1OCwgMSwgNCwgMjUxLCAxODMsIDE2MywgNzgsIDU4LCAxLCA0LCAyMjYsIDEwOSwgCi0gICAgNTgsIDEsIDQsIDIxNywgMTUzLCA1OCwgMSwgNCwgNjksIDU4LCAxLCA0LCAyMTksIDE4OSwgNjksIDU4LCAxLCA0LCAyMTUsIAotICAgIDk0LCAxOTQsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMjA1LCA1OCwgMSwgNCwgMjUyLCAzNCwgNTgsIAotICAgIDEsIDQsIDI2LCAyNDMsIDExNCwgNTgsIDEsIDQsIDI0OCwgNjIsIDU4LCAxLCA0LCAyNiwgMjI1LCAxMzYsIDU4LCAxLCA0LCAKLSAgICAyNTAsIDExOCwgNywgMjE4LCA2NiwgNCwgMSwgNzQsIDcsIDIxOCwgNjYsIDQsIDEsIDE1MywgNywgMjE4LCA2NiwgNCwgMSwgCi0gICAgNjksIDcsIDIxOCwgNjYsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjUyLCAzNCwgMjYsIDIxOCwgNjYsIAotICAgIDQsIDEsIDI0MywgMTE0LCAyNiwgMjE4LCA2NiwgNCwgMSwgMjIzLCA0MCwgMjYsIDIxOCwgNjYsIDQsIDEsIDIyNSwgMTM2LCAKLSAgICAyNiwgMjE4LCA2NiwgNCwgMSwgMjUwLCAxMTgsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCA1NywgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjMwLCAyMjksIAotICAgIDE4NCwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIyMywgMjI3LCAyLCAyMzAsIDIyOSwgCi0gICAgMTg0LCA3LCA0LCAxLCAyMjMsIDIyNywgMiwgMjQ0LCA5NiwgMjIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIyMiwgOTQsIAotICAgIDIsIDIzMCwgMjI5LCAxODQsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAyMzAsIDIyOSwgMTg0LCA3LCA0LCAxLCAyMTAsIDE2MCwgCi0gICAgMiwgMjMwLCAyMjksIDE4NCwgNywgNCwgMSwgMjE1LCA5NCwgMjQzLCAyMDksIDU4LCAxLCAzMywgMjQ1LCAxNTgsIDcsIDQsIAotICAgIDEsIDIzNSwgMjIwLCAyNDMsIDIwOSwgNywgNCwgMSwgMjE2LCAyMTIsIDIsIDIxOCwgMTA5LCA3LCA0LCA2LCAxLCAyNDAsIAotICAgIDE2MSwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTkzLCAyLCA5MSwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDkxLCA3LCA0LCA2LCAKLSAgICAxLCAxMDQsIDIsIDkxLCA3LCA0LCAxLCAyMTQsIDE1OCwgMiwgOTEsIDcsIDQsIDEsIDU3LCAyLCAyMjYsIDcwLCAxMDMsIDcsIAotICAgIDQsIDEsIDI0OSwgNjksIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjQ1LCAxNSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAKLSAgICAxLCAyNDMsIDIxMCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDIzMywgMTU1LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjMwLCAzMSwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMjYsIDExMCwgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAKLSAgICAyMjMsIDIyNywgMiwgMjI2LCA3MCwgMTAzLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAyMjYsIDcwLCAxMDMsIDcsIDQsIDEsIAotICAgIDI0NSwgODQsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMjExLCAxNzksIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyNiwgNzAsIDEwMywgNywgNCwgMSwgCi0gICAgMTE2LCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjMsIDU4LCAxMDMsIDcsIDQsIDEsIDI0OSwgCi0gICAgNjksIDIsIDI0MSwgNTksIDIyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjA0LCAKLSAgICAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjIzLCA1MiwgMjA0LCAxNjAsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjIxLCAxOTgsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgCi0gICAgMSwgMjA0LCAxNDQsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ1LCA4NCwgMiwgMjIzLCA1OCwgMTAzLCA3LCA0LCAxLCAKLSAgICAxMDQsIDIsIDIyMywgNTgsIDEwMywgNywgNCwgMSwgMjQ1LCAxNywgMiwgMjIzLCA1OCwgMTAzLCA1OCwgMSwgNCwgMjE1LCAKLSAgICA5NCwgMjU0LCAxNTEsIDU4LCAxLCA0LCAyNTEsIDc0LCA1OCwgMSwgNCwgMjUxLCA3NSwgMiwgMjQ5LCAxMDgsIDU4LCAxLCAKLSAgICA0LCAyNDUsIDY3LCA1OCwgMSwgNCwgMjIzLCA1MiwgMjA0LCA3NiwgNTgsIDEsIDQsIDI0NSwgMTQsIDU4LCAxLCA0LCAyNDcsIAotICAgIDEyNywgMjM1LCAxNTEsIDIsIDkxLCA1OCwgMSwgNCwgMTE5LCAyNDMsIDIwOSwgNTgsIDEsIDQsIDIxNSwgOTQsIDI0MiwgCi0gICAgNjcsIDU4LCAxLCA0LCAyNDAsIDE2MSwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE5MiwgNTgsIDEsIDQsIDYsIDc0LCA1OCwgCi0gICAgMSwgNCwgNiwgMjQwLCAxNjEsIDIsIDkxLCA1OCwgMSwgNCwgMjM1LCAxNTEsIDIsIDI0OSwgMTM1LCA1OCwgMSwgNCwgMjMzLCAKLSAgICAxNTUsIDIsIDIyMywgNTgsIDEwMywgNTgsIDEsIDQsIDIzMywgMTU1LCAyLCAyMjYsIDcwLCAxMDMsIDU4LCAxLCA0LCA2LCAKLSAgICAxNTYsIDU4LCAxLCA0LCAyMzIsIDU1LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMzIsIDU1LCAyLCAyMDAsIDIzMywgCi0gICAgNDIsIDU4LCAxLCA0LCAyMzAsIDMxLCAyLCA0MywgMTAzLCA1OCwgMSwgNCwgMjMwLCAzMSwgMiwgMjIzLCA1OCwgMTAzLCAKLSAgICA1OCwgMSwgNCwgNiwgMjMwLCAzMCwgNTgsIDEsIDQsIDI1MiwgMTQyLCA3OCwgNTgsIDEsIDQsIDIyNSwgMTM2LCA1OCwgMSwgCi0gICAgNCwgMjIyLCA5NCwgMiwgMTAzLCA1OCwgMSwgNCwgMjQ1LCA4MywgNTgsIDEsIDQsIDIxNywgMTU0LCAyLCAyMjYsIDcwLCAKLSAgICAxMDMsIDU4LCAxLCA0LCAxMDQsIDEzMCwgNTgsIDEsIDQsIDIxNCwgMTU3LCA1OCwgMSwgNCwgNiwgNjksIDU4LCAxLCA0LCAKLSAgICAyMTQsIDEwNiwgMiwgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjE0LCAxMDUsIDU4LCAxLCA0LCAyMTAsIDE1OSwgNTgsIDEsIAotICAgIDQsIDIxMCwgMTYwLCAyLCAyMjMsIDU4LCAxMDMsIDU4LCAxLCA0LCAyMTAsIDE2MCwgMiwgMjQ5LCAxMDgsIDU4LCAxLCA0LCAKLSAgICAyNDUsIDE2LCA1OCwgMSwgNCwgMjE2LCAxODAsIDM4LCAyNDYsIDEyNiwgMjQyLCAxNDQsIDI1NSwgMjMsIDM4LCAyNDYsIAotICAgIDEyNiwgMjU1LCAxMiwgMjU1LCAyMywgMzgsIDIxOSwgNzEsIDUxLCAzOCwgMjE4LCA3LCA3OSwgMzgsIDIzMSwgMjM2LCAzOCwgCi0gICAgMjQyLCAxNDEsIDM4LCAyMzEsIDIzNCwgMzgsIDI1NSwgMTAsIDM4LCAyNDIsIDE0MiwgMzgsIDI1NSwgMTEsIDM4LCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgNTEsIDM4LCAyNTEsIDE1MywgMzgsIDIzMSwgMjM1LCAzOCwgNTIsIDI1MCwgMzksIDQ4LCAzOCwgCi0gICAgMjI2LCAyMjksIDQ4LCAzOCwgMjEwLCAzNSwgNTEsIDM4LCAyMzUsIDE3OSwgNTEsIDM4LCAyMTQsIDE1MSwgNDgsIDM4LCAKLSAgICAyMTQsIDEzNCwgNDgsIDM4LCA3LCA0LCAxLCAyNDQsIDcxLCAyMDQsIDExNiwgNDgsIDM4LCA3LCA0LCAxLCAyNTQsIDI1MiwgCi0gICAgMzgsIDcsIDQsIDEsIDI1NCwgODEsIDM4LCA3LCA0LCAxLCAyNTMsIDE4NCwgMzgsIDcsIDQsIDEsIDI1MSwgNzUsIDI1MCwgCi0gICAgMTkxLCAzOCwgNywgNCwgMSwgMjM1LCAyMjAsIDI0OSwgNjgsIDM4LCA3LCA0LCAxLCAyNDUsIDY3LCAzOCwgNywgNCwgMSwgCi0gICAgMjQzLCAyMDksIDM4LCA3LCAxLCA0LCA2LCAyNDMsIDIwOSwgMzgsIDcsIDQsIDEsIDIzNSwgMjksIDM4LCA3LCA0LCAxLCAKLSAgICAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxNTYsIDM4LCA3LCAxLCA0LCA2LCAxOTQsIDM4LCA3LCA0LCAxLCAyMzAsIDMwLCAzOCwgCi0gICAgNywgMSwgNCwgNiwgMjMwLCAzMCwgMzgsIDcsIDEsIDQsIDYsIDE1MywgMzgsIDcsIDQsIDEsIDIyMywgMjI3LCAyMjIsIAotICAgIDE4OCwgMzgsIDcsIDQsIDEsIDIyMiwgOTMsIDM4LCA3LCA0LCAxLCAyMDAsIDIyMiwgOTMsIDM4LCA3LCA0LCAxLCAyMTAsIAotICAgIDE1OSwgMzgsIDUyLCAyMzUsIDIwMCwgMjUxLCAxNTUsIDUxLCAzOCwgMjU0LCAxNTYsIDEyOCwgMjE2LCA0MywgNTEsIDM4LCAKLSAgICA0MywgMjU0LCAyLCA0OCwgMzgsIDQ0LCAyNTQsIDIsIDIyLCAxMjQsIDI1NCwgMiwgNTEsIDcsIDYsIDEsIDExNiwgMiwgCi0gICAgMjIyLCAyMzcsIDUxLCA3LCA0LCAxLCAxMTYsIDIsIDIyMiwgMjM3LCA1MSwgNywgNiwgMSwgNTcsIDIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgNTcsIDIsIDU5LCA0OCwgNywgNiwgMSwgNTcsIDIsIDU5LCA1MSwgNywgNCwgMSwgNTcsIDIsIDU5LCA1MSwgNywgCi0gICAgNiwgMSwgNTcsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgNTcsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMjUxLCAKLSAgICA3NSwgMiwgMjUwLCAxOTIsIDIyLCAxNDIsIDcsIDQsIDEsIDI1MSwgNzUsIDIsIDI1MCwgMTkyLCAyMiwgMTQyLCA3LCA2LCAKLSAgICAxLCAyNDksIDY5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0OSwgNjksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjQ5LCA2OSwgMiwgCi0gICAgNTksIDUxLCA3LCA0LCAxLCAyNDksIDY5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDIzMiwgMjIwLCA1MSwgCi0gICAgNywgNCwgMSwgMjQ5LCA2OSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyNDksIDY5LCAyLCAyNTAsIDE5MSwgNywgNCwgCi0gICAgMSwgMjQ5LCA2OSwgMiwgMjUwLCAxOTEsIDcsIDYsIDEsIDI0OSwgNjksIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyNDksIAotICAgIDY5LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAxNDIsIDcsIDQsIAotICAgIDEsIDE2MCwgMiwgMjMxLCAyMzgsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDE2MCwgCi0gICAgMiwgMjUwLCAzOSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjE2LCA5MCwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgMjE2LCA5MCwgCi0gICAgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAxOTIsIDIyLCAyNTEsIDE1NCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDE5MiwgCi0gICAgMjIsIDI1MSwgMTU0LCA3LCA2LCAxLCAyNDUsIDE1LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgMTUsIDIsIDU5LCA0OCwgCi0gICAgNywgNiwgMSwgMjQzLCAyMTAsIDIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyNDMsIDIxMCwgMiwgMjMxLCAyMzcsIDcsIDYsIDEsIAotICAgIDI0MiwgNjgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjQyLCA2OCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDIsIDY4LCAyLCA1OSwgCi0gICAgNTEsIDcsIDQsIDEsIDI0MiwgNjgsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAKLSAgICAyNDIsIDY4LCAyLCAyNDgsIDksIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDI1MCwgMTkxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAKLSAgICAyNTAsIDE5MSwgNywgNiwgMSwgMjQyLCA2OCwgMiwgMjUxLCAxNTUsIDUxLCA3LCA0LCAxLCAyNDIsIDY4LCAyLCAyNTEsIAotICAgIDE1NSwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIxNiwgCi0gICAgOTAsIDUxLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjQ4LCAxMCwgMjIsIDE0MiwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIAotICAgIDI0OCwgMTAsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAzMCwgMiwgMTQyLCA3LCAKLSAgICA2LCAxLCAyMzUsIDMwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjM1LCAzMCwgCi0gICAgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTU1LCAyLCA1OSwgMjUyLCA1MSwgCi0gICAgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgNTksIDI1MiwgNTEsIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMjMzLCAxNTUsIDIsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgCi0gICAgMjMzLCAxNTUsIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMjUwLCAzOSwgNTEsIDcsIDYsIDEsIAotICAgIDIzMiwgNTUsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1NSwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDU1LCAyLCA1OSwgNDgsIAotICAgIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1NSwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMzIsIAotICAgIDU1LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMzEsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAzMSwgMiwgNTksIDQ4LCAKLSAgICA3LCA2LCAxLCAyMzAsIDMxLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjMwLCAKLSAgICAzMSwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyMzIsIDIyMCwgNTEsIDcsIDYsIDEsIDIzMCwgMzEsIAotICAgIDIsIDI1MCwgMzksIDUxLCA3LCA0LCAxLCAyMzAsIDMxLCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyMTYsIAotICAgIDkwLCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE2LCA5MCwgCi0gICAgMjIsIDI0OCwgOSwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDkwLCAyMiwgMjQ4LCA5LCA3LCA2LCAxLCAxNDQsIDIsIDIzMSwgCi0gICAgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAKLSAgICAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMjI2LCAKLSAgICAxMTAsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMTAsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMTAsIDIsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjI2LCAxMTAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjIzLCAKLSAgICAyMjcsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDU5LCAKLSAgICA1MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDU5LCAyNTIsIDUxLCAyMiwgMjMxLCAyMzcsIDcsIDQsIDEsIDIyMywgMjI3LCAKLSAgICAyLCA1OSwgMjUyLCA1MSwgMjIsIDIzMSwgMjM3LCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAKLSAgICAxLCAyMjMsIDIyNywgMiwgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCA1OSwgNTEsIAotICAgIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1NSwgMTIsIDIyLCA1OSwgNDgsIDcsIDQsIDEsIDIyMiwgOTQsIDIsIDI1NSwgMTIsIAotICAgIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTQsIDIsIDI1MCwgMjQzLCAyMiwgNTksIDQ4LCA3LCA0LCAxLCAyMjIsIDk0LCAKLSAgICAyLCAyNTAsIDI0MywgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5NCwgMiwgNTksIDI1MiwgNTEsIDIyLCA1OSwgNDgsIDcsIAotICAgIDQsIDEsIDIyMiwgOTQsIDIsIDU5LCAyNTIsIDUxLCAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgNTksIDQ4LCAKLSAgICA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTcsIAotICAgIDE1NCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAyMTcsIDE1NCwgMiwgCi0gICAgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAyMTcsIDE1NCwgMiwgMjUwLCAzOSwgNTEsIDcsIDQsIDEsIDIxNywgMTU0LCAyLCAKLSAgICAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEwLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDEwLCA1MSwgCi0gICAgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDkwLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyMTYsIDkwLCA1MSwgNywgNiwgMSwgMTA0LCAKLSAgICAyLCAyNTAsIDM5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNTAsIDM5LCA1MSwgNywgNiwgMSwgMTA0LCAyLCAyMTYsIDkwLCAKLSAgICAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgOTAsIDIyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIAotICAgIDIyLCAyNDgsIDksIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAyNDgsIDksIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAKLSAgICAxODQsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAxODQsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA2LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAKLSAgICAyNDIsIDE0MywgNywgNiwgMSwgMjEyLCA5OSwgMiwgMTQyLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDYsIDEsIAotICAgIDIxMiwgOTksIDIsIDI0OCwgOSwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjQ4LCA5LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgNTksIDUxLCA3LCA0LCAxLCAKLSAgICAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAKLSAgICA1OSwgNDgsIDcsIDYsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDksIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyNDgsIDksIDcsIDYsIAotICAgIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDIxMCwgMTYwLCAKLSAgICAyLCAyNTAsIDM4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjUwLCAzOCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgCi0gICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgCi0gICAgMSwgMjEwLCAxNjAsIDIsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMjQyLCA2OCwgMiwgMjMyLCAyMjAsIDUxLCA3LCA0LCAxLCAKLSAgICAyMTcsIDE1NCwgMiwgMjQ4LCA5LCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIDIxMSwgCi0gICAgMTE4LCAyLCAyMjIsIDIzNywgNDgsIDcsIDQsIDEsIDExNiwgMiwgNDQsIDE2MywgMjIyLCAyMzYsIDcsIDQsIDEsIDIwMCwgCi0gICAgMjIyLCA5NCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMDAsIDIyMiwgOTQsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIDIwMCwgCi0gICAgMjIyLCA5NCwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMjIwLCA3OCwgMjIyLCA5MywgNywgNCwgMSwgMjQ4LCA2MiwgNywgNiwgCi0gICAgMSwgMTE2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgNTksIDUxLCA3LCA2LCAxLCAxMTYsIDIsIDI0MSwgNTksIDQ4LCAKLSAgICA3LCA0LCAxLCAxMTYsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAxNDIsIDcsIDQsIDEsIAotICAgIDExNiwgMiwgMjUwLCAzOSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDQsIAotICAgIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDExNiwgMiwgMjUwLCAzOSwgCi0gICAgMjIsIDE4NCwgNywgNCwgMSwgMTE2LCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA2LCAxLCAxMTYsIDIsIDI1MCwgMzksIDIyLCAKLSAgICA1OSwgNTEsIDcsIDQsIDEsIDExNiwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgCi0gICAgMjIsIDE0MiwgNywgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgCi0gICAgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDExNiwgMiwgCi0gICAgMjUxLCAxNTUsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTE2LCAyLCAyNTEsIDE1NSwgMjIsIDI0MSwgNTksIDQ4LCA3LCAKLSAgICA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTg0LCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgMTg0LCA3LCAKLSAgICA2LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgNTksIDUxLCA3LCA0LCAxLCAxMTYsIDIsIDI1MSwgMTU1LCAyMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgCi0gICAgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE2MCwgMiwgMTg0LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzksIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCi0gICAgMzksIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIAotICAgIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCAxODQsIDcsIAotICAgIDQsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgNTksIDUxLCA3LCAKLSAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzksIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyNDEsIDU5LCA0OCwgNywgCi0gICAgNCwgMSwgMjQwLCAxNjEsIDIsIDI0MSwgNTksIDQ4LCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgNTksIDUxLCA3LCA0LCAxLCAKLSAgICAyNDAsIDE2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIAotICAgIDYsIDEsIDE0NCwgMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCi0gICAgMjUwLCAzOSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMTQyLCA3LCA2LCAxLCAxNDQsIDIsIAotICAgIDI1MCwgMzksIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIAotICAgIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDI0MSwgNTksIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAyNDEsIDU5LCAKLSAgICA0OCwgNywgNiwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzksIDIyLCAxODQsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzOSwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDM5LCAyMiwgNTksIAotICAgIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCAxNDIsIAotICAgIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQyLCAKLSAgICAxNDMsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAKLSAgICAyMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjQxLCAwLCAyMiwgMTg0LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgCi0gICAgMCwgMjIsIDE4NCwgNywgNiwgMSwgMTQ0LCAyLCAyNDEsIDAsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjQxLCAwLCAKLSAgICAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDEwNCwgMiwgMjQxLCA1OSwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1OSwgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCAKLSAgICAwLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0MSwgMCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDEsIDAsIAotICAgIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTA0LCAyLCAKLSAgICAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAyNDEsIDU5LCA0OCwgNywgNiwgCi0gICAgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCAxODQsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCAwLCAyMiwgMTg0LCA3LCA2LCAxLCAKLSAgICAxMDQsIDIsIDI0MSwgMCwgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDEsIDAsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIAotICAgIDIxMSwgMTE4LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTQzLCA3LCA2LCAxLCAyMTEsIDExOCwgCi0gICAgMiwgNTksIDUxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMjQxLCA1OSwgCi0gICAgNDgsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDU5LCA0OCwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDE4NCwgNywgNCwgCi0gICAgMSwgMjExLCAxMTgsIDIsIDE4NCwgNywgNiwgMSwgMjMwLCAyMjgsIDIzMiwgMTkxLCA3LCA0LCAxLCAyMzAsIDIyOCwgMjMyLCAKLSAgICAxOTEsIDcsIDYsIDEsIDIzMCwgMjI4LCAyMTQsIDEwNSwgNywgNCwgMSwgMjMwLCAyMjgsIDIxNCwgMTA1LCA3LCA2LCAxLCAKLSAgICAyMTEsIDExOCwgMiwgMjMyLCAxMjksIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyOSwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjQsIDE1NywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAKLSAgICAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgCi0gICAgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTcsIAotICAgIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAKLSAgICAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgCi0gICAgMjQ1LCAxMDksIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIAotICAgIDQsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgCi0gICAgMSwgMjQ1LCAxMDksIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjQ1LCAKLSAgICAxMDksIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgCi0gICAgMTMsIDI2LCA2LCAxLCAyNDUsIDEwOSwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyNDUsIAotICAgIDcyLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNCwgMTU4LCAyMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAKLSAgICAxNzgsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1NywgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYxLCAyNiwgCi0gICAgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAKLSAgICAyMjQsIDE1NywgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MSwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCi0gICAgMjM1LCAxOTMsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjIsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAKLSAgICAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTcsIDI2LCA2LCAKLSAgICAxLCAyMzUsIDE5MywgMiwgMjQ4LCAxNjEsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDEzLCAKLSAgICAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyMjQsIAotICAgIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMzUsIDE5MywgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIDEsIDIzNSwgMTkzLCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIAotICAgIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgCi0gICAgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIAotICAgIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjI2LCAyMDQsIAotICAgIDIsIDIyNCwgMTU3LCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDI0OCwgMTYxLCAyNiwgNiwgMSwgMjI2LCAyMDQsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKLSAgICAyMjYsIDIwNCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyNDgsIDE2MiwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgCi0gICAgMTYxLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNCwgMjYsIAotICAgIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNCwgCi0gICAgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgMjYsIDYsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MSwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIAotICAgIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAKLSAgICAyNDgsIDE2MiwgMjIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU3LCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDI0OCwgMTYxLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAKLSAgICAyMjYsIDExNCwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAKLSAgICAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1NywgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MSwgCi0gICAgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTQsIDI2LCA2LCAKLSAgICAxLCAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgCi0gICAgMjIsIDIyNSwgMTc4LCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzgsIDI2LCA0LCAxLCAKLSAgICAyNTQsIDE1MiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDI0NSwgCi0gICAgMTA5LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDksIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgCi0gICAgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIxNCwgMTMsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MywgMiwgMjI2LCAxMTQsIDI2LCA0LCAxLCAyMjYsIDIwNCwgMiwgMjE0LCAxMywgMjYsIDQsIAotICAgIDEsIDIyNiwgMjA0LCAyLCAyMjYsIDExNCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAKLSAgICAxNTgsIDIsIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwNiwgMiwgCi0gICAgMjI2LCAxMTQsIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAKLSAgICAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIAotICAgIDEsIDI1NCwgMTUyLCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIAotICAgIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgCi0gICAgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDI0OCwgMTYyLCAyMiwgMjI2LCAxMTUsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDI1NCwgMTUyLCAyLCAyMjQsIDE1OCwgMjIsIDIyNSwgMTc5LCAyMiwgMjI0LCAxNzAsIDI2LCA2LCAKLSAgICAxLCAyNTQsIDE1MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNCwgMSwgMjQ1LCA3MiwgCi0gICAgMiwgMjI0LCAxNTgsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjEwLCAyMTksIAotICAgIDI2LCA0LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAKLSAgICAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIAotICAgIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgCi0gICAgMjE5LCAyNiwgNCwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgCi0gICAgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjI0LCAxNzAsIDI2LCA2LCAxLCAyNDUsIDcyLCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIDE3MCwgCi0gICAgMjYsIDYsIDEsIDI0NSwgNzIsIDIsIDI0OCwgMTYyLCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCAKLSAgICA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAKLSAgICAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIAotICAgIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgCi0gICAgMTcwLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwNiwgCi0gICAgMiwgMjQ4LCAxNjIsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIxNCwgMTQsIAotICAgIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgCi0gICAgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE1LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAKLSAgICAyMjYsIDIwNiwgMiwgMjQ4LCAxNjIsIDIyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIAotICAgIDIyNCwgMTU4LCAyMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgCi0gICAgMjIsIDIyNSwgMTc5LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjQsIAotICAgIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIAotICAgIDIsIDIyNCwgMTU4LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAKLSAgICAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNCwgMTU4LCAyMiwgMjI2LCAxMTUsIAotICAgIDIyLCAyMjQsIDE3MCwgMjYsIDYsIDEsIDIyNiwgMjA2LCAyLCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE1LCAyMiwgMjI0LCAKLSAgICAxNzAsIDI2LCA2LCAxLCAyMjYsIDIwNiwgMiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OSwgMjIsIDIyNCwgMTcwLCAyNiwgNiwgCi0gICAgMSwgMjI2LCAyMDYsIDIsIDI0OCwgMTYyLCAyMiwgMjI1LCAxNzksIDIyLCAyMjQsIDE3MCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAKLSAgICAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMzEsIDIzNywgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMTQsIAotICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE1MiwgMiwgCi0gICAgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTUyLCAyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI1NCwgCi0gICAgMTUyLCAyLCAyMjUsIDE3OSwgMjIsIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIxMywgMTIwLCAyNiwgNiwgCi0gICAgMSwgMjU0LCAxNTIsIDIsIDIzMSwgMjM3LCAyNiwgNiwgMSwgMjU0LCAxNTIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAotICAgIDE1MiwgMiwgMjI2LCAxMTQsIDI2LCA2LCAxLCAyNTQsIDE1MiwgMiwgMjI0LCAxNzAsIDI2LCAyMzQsIDgsIDI2LCAyMjQsIAotICAgIDE3MCwgMjYsIDIyNCwgMTU3LCAyNiwgMjI1LCAxNzgsIDI2LCAyNDgsIDQsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDI0NSwgCi0gICAgNzIsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgCi0gICAgMjQ1LCA3MiwgMiwgMjI2LCAxMTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNzIsIDIsIDIyNSwgMTc4LCAyNiwgCi0gICAgNCwgMSwgMjQ1LCA3MiwgMiwgMjI1LCAxNzksIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDI0NSwgMTA5LCAyLCAyMTQsIDEzLCAKLSAgICAyNiwgNiwgMSwgMjQ1LCAxMDksIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAotICAgIDI0NSwgNzIsIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgMjQ1LCA3MiwgMiwgMjI0LCAxNzAsIDI2LCAyMjQsIDE1OCwgMjIsIAotICAgIDIxNCwgMTMsIDI2LCAyMjQsIDE1OCwgMjIsIDIyNiwgMTE0LCAyNiwgMjI0LCAxNTgsIDIyLCAyMjUsIDE3OCwgMjYsIDQsIAotICAgIDEsIDIzNSwgMTkzLCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIzNSwgMTkzLCAyLCAyMzEsIDIzNywgMjYsIDQsIDEsIDIzNSwgCi0gICAgMTkzLCAyLCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIyNiwgMTE0LCAKLSAgICAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjM1LCAxOTMsIDIsIDI0OCwgNCwgMjIsIDIyNSwgCi0gICAgMTc4LCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxMywgMTIwLCAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIzMSwgMjM3LCAKLSAgICAyNiwgNiwgMSwgMjM1LCAxOTMsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE5MywgMiwgMjI2LCAxMTQsIDI2LCAyNDgsIAotICAgIDE2MiwgMjIsIDIxNCwgMTMsIDI2LCAyNDgsIDE2MiwgMjIsIDIyNiwgMTE0LCAyNiwgMjQ4LCAxNjIsIDIyLCAyMjUsIDE3OCwgCi0gICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzNywgMjYsIDQsIAotICAgIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgNCwgMjIsIAotICAgIDIyNiwgMTE0LCAyNiwgNCwgMSwgMjIzLCA0MSwgMiwgMjI0LCAxNTcsIDI2LCA0LCAxLCAyMjMsIDQxLCAyLCAyNDgsIDE2MSwgCi0gICAgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyMjUsIDE3OCwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDQsIDIyLCAyMjUsIAotICAgIDE3OCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMzEsIDIzNywgCi0gICAgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDIyNiwgMTE0LCAyNiwgNiwgCi0gICAgMSwgMjIzLCA0MSwgMiwgMjQ4LCAxNjEsIDI2LCAyNDgsIDQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCA0LCAyMiwgMjI2LCAKLSAgICAxMTQsIDI2LCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIAotICAgIDIyNiwgMjA2LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjA2LCAyLCAyMjYsIDExNSwgMjIsIDIxMCwgMjE5LCAyNiwgCi0gICAgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNSwgMTc4LCAyNiwgNCwgMSwgMjI2LCAyMDYsIDIsIDIyNSwgMTc5LCAyMiwgMjEwLCAKLSAgICAyMTksIDI2LCA2LCAxLCAyMjYsIDIwNCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjA0LCAyLCAyMjYsIDExNCwgMjYsIAotICAgIDYsIDEsIDIyNiwgMjA2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAyMDYsIDIsIDIyNiwgMTE0LCAyNiwgNiwgMSwgCi0gICAgMjI2LCAyMDYsIDIsIDIyNCwgMTcwLCAyNiwgMjI2LCAxMTQsIDI2LCAyNDgsIDE2MSwgMjQ1LCAxNTksIDIyNCwgMzAsIAotICAgIDI0NSwgMTY4LCAyMjQsIDMwLCAyNDUsIDE1OSwgMjE5LCAyMCwgMjQ1LCAxNjgsIDIxOSwgMjAsIDIxNiwgMTQyLCAyMTksIAotICAgIDIwLCAyNDQsIDE3LCAyMTksIDIwLCAyMTksIDEyNSwgMjE5LCAyMCwgMjQ0LCAxMjAsIDIxOSwgMjAsIDIyNCwgMTQ0LCAKLSAgICAyMTksIDIwLCAyMTYsIDE3MSwgMjE5LCAyMCwgMjQyLCA0MiwgMjE5LCAyMCwgMjEwLCA4NywgMjExLCAyNDUsIDIxOSwgMjAsIAotICAgIDIxMCwgODcsIDIxMSwgMjQ1LCAyMjgsIDcyLCAyMTAsIDg3LCAyMTEsIDI0NSwgMjM1LCA2OSwgMjMzLCA0NCwgNzksIDIyMiwgCi0gICAgMjQ2LCA3OSwgMjQwLCAxNzUsIDIyOCwgNzMsIDI0MCwgMTc1LCAyNDQsIDEyMCwgMjQ4LCAxNjQsIDI0NSwgMTU5LCAyNDgsIAotICAgIDE2NCwgMjQ1LCAxNjgsIDI0OCwgMTY0LCAyMDMsIDEzMCwgNTIsIDY3LCAyMzIsIDIxOSwgNTIsIDEyMSwgMjMyLCAyMTksIAotICAgIDQzLCAyMTksIDE1NywgMjI0LCAxLCA3OSwgNDQsIDIxOSwgMTU3LCAyMjQsIDEsIDc5LCAyMTksIDE1NywgMjMyLCAxMTUsIAotICAgIDIyNCwgMSwgNzksIDIxOSwgMTU3LCAyNDEsIDE3MCwgMjI0LCAxLCA3OSwgNDMsIDUyLCAyMjQsIDEsIDc5LCA0NCwgNTIsIAotICAgIDIyNCwgMSwgNzksIDUyLCAyMzIsIDExNSwgMjI0LCAxLCA3OSwgNTIsIDI0MSwgMTcwLCAyMjQsIDEsIDc5LCAyNDgsIDIxMywgCi0gICAgNTIsIDI0OCwgMjEzLCAyNTEsIDEyMSwgMjE1LCAyMjMsIDI1MSwgMTIxLCAxMjMsIDU5LCAyMzMsIDYyLCAxMTMsIDU5LCAKLSAgICAyMzMsIDYyLCAyMDMsIDI0NSwgMTcxLCAyNDAsIDE3MywgMjI1LCAxMywgMjMyLCAyMjAsIDIyMCwgMTM5LCAyMjYsIDE5LCAKLSAgICAyMjAsIDEzOSwgMjMzLCA0NCwgMjQ1LCAxNjYsIDIyMiwgMjQ2LCAyNDUsIDE2NiwgMjI0LCAyNDksIDI0NywgMjA0LCAyNDQsIAotICAgIDI3LCAyMzMsIDQ0LCAyMjYsIDEyMSwgMjIyLCAyNDYsIDIyNiwgMTIxLCAyMjksIDE5OSwgMjI4LCA3OCwgMjE5LCAyMCwgCi0gICAgMjI1LCAxODYsIDIzMCwgMTk4LCA1MCwgMjI1LCAxODYsIDIxNiwgMjQ5LCAyMTYsIDE0OSwgNTAsIDIyNCwgMTkzLCA1MiwgCi0gICAgMjI0LCAxOTMsIDIxNSwgMjEyLCAyMjQsIDE5MywgMjIzLCA1MiwgMjI0LCAxOTMsIDIyMywgNTIsIDUyLCAyMjQsIDE5MywgCi0gICAgMjIzLCA1MiwgMjE1LCAyMTIsIDIyNCwgMTkzLCAyNTAsIDI0NiwgMjE5LCAxNTcsIDIzMywgNDgsIDI1NCwgMTE4LCAyMjQsIAotICAgIDEsIDc5LCAyMTksIDE1NywgMjIyLCAyNTAsIDI1NCwgMTE4LCAyMjQsIDEsIDc5LCAyMjMsIDExMCwgNzksIDUyLCAyNDUsIAotICAgIDM5LCA3OSwgMjM1LCAyMDgsIDIyNiwgMTIzLCAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMiwgMjUwLCAyNDcsIDIzNSwgMjIzLCAKLSAgICAyMjUsIDEzLCAyNTMsIDIyMiwgMjQwLCAxNzYsIDI1MSwgMTIxLCAyNDQsIDEwLCAyMTksIDk3LCA0MywgNDIsIDI1MSwgCi0gICAgMTY2LCAyLCAyMjQsIDEwLCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMjQsIDEwLCA1MiwgMjI0LCAxNiwgNzksIDIyNCwgMTYsIAotICAgIDI0NSwgMzksIDc5LCAyNDUsIDM5LCAyMjQsIDE2LCA3OSwgMjE2LCA3MSwgNSwgMjQ1LCA3MywgMjIzLCA1MiwgMjI1LCA3MSwgCi0gICAgNTAsIDg1LCAxNDAsIDI1MSwgMTIxLCA4NSwgOTcsIDI1MSwgMTIxLCAxMjEsIDI1MywgMjI0LCAyMjMsIDUyLCAyMjAsIAotICAgIDE1MiwgMjUwLCA5LCAyMTQsIDE2MywgMTEzLCAyNTMsIDIyMywgMjU0LCAxNjcsIDIxMywgMTg4LCAyNDksIDIyNSwgMjMwLCAKLSAgICAxODcsIDUwLCAyMTcsIDIzNSwgMjQ4LCAxNjQsIDIzNSwgMjAwLCAyMTQsIDE4MCwgMjQ0LCA2MCwgMjI0LCAxNDQsIDc5LCAKLSAgICAxMzQsIDU5LCAyMjQsIDE0MywgMjI0LCAyNywgMjI0LCAxOTMsIDI0NCwgMTksIDU5LCAyMjQsIDE0MywgMjQ0LCA4OSwgNTksIAotICAgIDIyNCwgMTQzLCAxMTMsIDU5LCAyMjQsIDE0MywgMjQ0LCAxOSwgNTksIDc5LCAyNDYsIDEyNiwgMjQ5LCAxMzgsIDIxNSwgCi0gICAgMjIyLCA2NywgMjQ0LCAxOSwgMjQ3LCAxMjYsIDIzMSwgODcsIDExLCAyMTksIDIwLCAyMTEsIDIwOSwgMjM1LCA2OSwgMjQzLCAKLSAgICAyMzQsIDI1NCwgNjAsIDIzNSwgMTk4LCAyMTYsIDg2LCAyMzUsIDE5OCwgMjIwLCAxMzksIDIzNSwgMTk4LCAyMjUsIDI1LCAKLSAgICAyMzMsIDQ0LCAyMzUsIDE3MSwgMjIyLCAyNDYsIDIzNSwgMTcxLCAyNDQsIDEwMCwgMjE4LCA5MSwgMjM1LCAxNzEsIDIyNCwgCi0gICAgMjQ5LCAyNDcsIDIwNCwgMjM1LCAxNzEsIDIzNSwgMjM1LCAyMTcsIDE4MywgMjE3LCAyNTIsIDI1NSwgMTQsIDIxNywgMTgzLCAKLSAgICAyMTcsIDI1MiwgMjM1LCAyMzUsIDksIDI0NCwgMjgsIDIyMCwgODIsIDI1NSwgMTQsIDksIDI0NCwgMjgsIDIyMCwgODIsIAotICAgIDIyOSwgMTk0LCAyMSwgMjIwLCA4MywgMjI4LCA3NCwgMjEsIDIyMCwgODMsIDIxOCwgMjQsIDIxMCwgODYsIDIxOCwgMjQsIAotICAgIDcsIDQsIDEsIDc0LCAyMTgsIDI0LCAxNjEsIDIxOCwgMjQsIDE5MCwgMjE4LCAyNCwgMTk1LCAyMTgsIDI0LCAxOTksIDIxOCwgCi0gICAgMjQsIDE5NiwgMjE4LCAyNCwgMjAxLCAyMTgsIDI0LCA5NiwgNTAsIDIxOCwgMjQsIDIzMCwgMTg2LCAyMTgsIDI0LCAyNDUsIAotICAgIDEwNiwgNTAsIDIxOCwgMjQsIDQzLCAyMjYsIDcsIDIxOCwgMjQsIDQ0LCAyMjYsIDcsIDIxOCwgMjQsIDcsIDQsIDEsIDIzMCwgCi0gICAgMzAsIDIxOCwgNjYsIDIxMCwgODYsIDIxOCwgNjYsIDExMSwgMjE4LCA2NiwgMTA1LCAyMTgsIDY2LCAxNTgsIDIxOCwgNjYsIAotICAgIDE2MSwgMjE4LCA2NiwgMTkwLCAyMTgsIDY2LCAxOTUsIDIxOCwgNjYsIDE5OSwgMjE4LCA2NiwgMTk2LCAyMTgsIDY2LCAKLSAgICAyMDEsIDIxOCwgNjYsIDk2LCA1MCwgMjE4LCA2NiwgMjMwLCAxODYsIDIxOCwgNjYsIDI0NSwgMTA2LCA1MCwgMjE4LCA2NiwgCi0gICAgNDMsIDIyNiwgNywgMjE4LCA2NiwgNDQsIDIyNiwgNywgNywgMjE4LCA2NiwgNCwgMSwgNjEsIDcsIDIxOCwgNjYsIDQsIDEsIAotICAgIDc2LCA3LCAyMTgsIDY2LCA0LCAxLCA3OCwgNywgMjE4LCA2NiwgNCwgMSwgMjExLCAxNzgsIDcsIDIxOCwgNjYsIDQsIDEsIAotICAgIDIyMSwgMTk3LCA3LCAyMTgsIDY2LCA0LCAxLCAyNDIsIDY3LCA3LCAyMTgsIDY2LCA0LCAxLCAyMzUsIDI5LCA3LCAyMTgsIAotICAgIDY2LCA0LCAxLCAxNTYsIDcsIDIxOCwgNjYsIDQsIDEsIDE5NCwgNywgMjE4LCA2NiwgNCwgMSwgMjMwLCAzMCwgNywgMjE4LCAKLSAgICA2NiwgNCwgMSwgMjI2LCAxMDksIDcsIDIxOCwgNjYsIDQsIDEsIDIyMiwgOTMsIDcsIDIxOCwgNjYsIDQsIDEsIDIxNywgCi0gICAgMTUzLCAyNDUsIDU0LCA1MCwgMjQ5LCAyMzUsIDUwLCAyNDksIDEyNSwgNTAsIDI0NCwgMywgMjQ0LCA2LCA1MCwgMjMyLCAKLSAgICAyMDQsIDUwLCAyMzAsIDE5OSwgNTAsIDIyOSwgMjE1LCA1MCwgMjI1LCAxNjUsIDUwLCAyMjIsIDEyMCwgNTAsIDIxMSwgCi0gICAgMjE3LCA1MCwgMTY2LCAyMjAsIDUxLCA1MCwgMjQ3LCAxMzUsIDUwLCAyNDUsIDU1LCA1MCwgMjM0LCA4MiwgNTAsIDIxNSwgCi0gICAgMTEzLCA1MCwgMjQ2LCAxMDksIDUwLCAyNDMsIDQ3LCAyMjUsIDE5NiwgNTAsIDIyNSwgMTYzLCA1MCwgMjQyLCAxMTYsIDUwLCAKLSAgICAyNTMsIDE5MCwgNTAsIDI0MCwgMjM1LCA1MCwgMjUwLCAxOTMsIDUwLCAyMzIsIDE5NywgMjE2LCA0LCA1MCwgMjE5LCAyLCAKLSAgICA1MCwgMjE2LCAyNDYsIDUwLCAyMzUsIDI0OCwgMjIyLCAxMjAsIDUwLCAyMTUsIDk3LCAyMzIsIDIwNCwgNTAsIDM4LCA0MywgCi0gICAgMjQyLCA2LCA0OCwgMzgsIDQ0LCAyNDIsIDYsIDQ4LCAzOCwgMjAwLCA2NywgMjMyLCAyMjAsIDIyNiwgMTI0LCAzOCwgMjE5LCAKLSAgICAyNTMsIDY3LCAyMzIsIDIyMCwgMjI2LCAxMjQsIDM4LCAyNTQsIDk2LCA4MCwgNDgsIDM4LCAyNTAsIDEwLCA4MCwgNDgsIAotICAgIDM4LCA0MywgODAsIDQ4LCAzOCwgNDQsIDgwLCA0OCwgMzgsIDIyMiwgMjM3LCAyMjYsIDEyNCwgMzgsIDI1MCwgMTAsIDIyMiwgCi0gICAgMjM3LCAyMjYsIDEyNCwgMzgsIDI1NCwgOTYsIDIyMiwgMjM3LCAyMjYsIDEyNCwgMzgsIDEzNCwgMTcwLCA0OCwgMzgsIAotICAgIDI0NCwgMTksIDE3MCwgNDgsIDM4LCAyNDUsIDE1NCwgMjUwLCA0MywgMzgsIDI0NSwgMTU0LCAyMTgsIDIzNiwgMzgsIDI0NSwgCi0gICAgMTU0LCAyNDgsIDAsIDM4LCAyNDUsIDE1NCwgMjUwLCA0NCwgMjUyLCAxODgsIDM4LCA0MywgNDQsIDgwLCA0OCwgMzgsIAotICAgIDI0NSwgMTU0LCAyMjEsIDE5MCwgMzgsIDI0NSwgMTU0LCAyMzQsIDE0MSwgMzgsIDI0NSwgMTU0LCAyMTQsIDE1NSwgMjI1LCAKLSAgICAxMCwgMjE1LCAyMjYsIDM4LCAyMjMsIDUzLCAyMTksIDQ5LCAyMjYsIDEyNCwgMzgsIDUyLCA2NywgMjE4LCAxMDUsIDIyNiwgCi0gICAgMTI0LCAzOCwgMjU0LCAxMDYsIDg3LCAzOCwgMjE1LCAyMTIsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgMTQ4LCAKLSAgICA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTI0LCAzOCwgMjAwLCA1MiwgMjE5LCA0OSwgMjI2LCAxMjQsIDM4LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIDM4LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTExLCAzOCwgNDMsIAotICAgIDgwLCA1MSwgMzgsIDQ0LCA4MCwgNTEsIDM4LCAyNTMsIDIyNSwgNDgsIDI1NSwgMjAsIDIyNiwgMjM1LCAyNTUsIDQsIDIxNiwgCi0gICAgNDMsIDIxNiwgMTk3LCAyMTgsIDc1LCAxMzksIDYsIDI1MSwgNzQsIDI0OCwgNzksIDI1MCwgMTg2LCAyNTAsIDE4MywgMjMyLCAKLSAgICAyMjAsIDg3LCAyNTAsIDI0OCwgMjI2LCAyMzUsIDI1MSwgMzQsIDIxNCwgMTg5LCAyNDUsIDU2LCAyNDksIDE5OSwgMjIxLCAKLSAgICAxODcsIDI0OCwgNzksIDI0NCwgMTg3LCAxMTksIDQsIDI0MywgMjA5LCAxMTksIDYsIDI0MiwgNjcsIDI1MSwgMjI3LCA2LCAKLSAgICAyNDIsIDY3LCAxMzksIDYsIDI0MiwgNjcsIDIyNSwgNDAsIDI0OSwgMTk5LCAyMjUsIDQwLCAyNDksIDIwMCwgMTE1LCAxMTMsIAotICAgIDIyNSwgMTExLCAxMTksIDYsIDc0LCAyNTEsIDIyNywgNiwgNzQsIDExOSwgNiwgMTU2LCAxMTksIDQsIDE1NiwgMjMzLCAKLSAgICAxNTUsIDU3LCAyNTIsIDE0OSwgODcsIDEzOSwgNiwgMjMwLCAzMCwgMjI3LCAyMDAsIDUwLCAyMTksIDMzLCAyMjMsIDEyMiwgCi0gICAgMjQ5LCAxNzAsIDExOSwgNiwgMjI2LCAxMDksIDEzOSwgNiwgMjI2LCAxMDksIDEzOSwgNiwgMjI0LCA5OSwgMTE5LCA2LCAKLSAgICAxNTMsIDI1MSwgMjI3LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5OSwgMjE3LCA3MiwgMjIzLCA2NSwgMjIwLCAxMzQsIAotICAgIDc5LCAyMTcsIDIsIDUwLCAyMTUsIDI1NCwgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAxNTksIDIyNiwgMTM3LCAKLSAgICA1MCwgMjI2LCAyMjUsIDUwLCAyMzUsIDIwMCwgMjI2LCAyMjUsIDUwLCAyNTEsIDIyNywgNiwgMjEwLCAxNTksIDIxNSwgOTQsIAotICAgIDI2LCA0LCAxLCAyMzUsIDE5MiwgMjM0LCAxNzksIDUwLCAyNTQsIDExNSwgNTAsIDExOSwgNiwgMjUzLCAxNjYsIDI1MSwgCi0gICAgMjI3LCA2LCAyNTEsIDc0LCAyNDUsIDc2LCA4NywgMTE5LCA0LCA3NiwgMTE5LCA2LCA3NiwgMTE5LCA2LCAyNDUsIDE0LCAKLSAgICAyMTUsIDk0LCA2LCAyNDUsIDE0LCAxMTksIDYsIDE5NCwgMTE5LCA0LCA3OCwgMTA5LCA4NywgMjUyLCAzNywgODcsIDI0MiwgCi0gICAgMjA5LCA4NywgMjQ4LCAxOTgsIDg3LCAyMzUsIDIzOSwgMjE5LCAzMSwgMjIyLCAxODksIDYsIDIyNCwgOTksIDI0NCwgMTkwLCAKLSAgICA1MCwgMTM5LCA0LCAyMjUsIDExMSwgMTM5LCA0LCAyNDMsIDExNCwgMTM5LCA2LCAyNDMsIDExNCwgMTM5LCA2LCAyMjUsIAotICAgIDExMSwgMTM5LCAyMzAsIDI5LCAyMTgsIDQxLCAyMTUsIDk0LCAzNSwgNiwgMjQzLCAyMDksIDIxNSwgOTQsIDM1LCA2LCAKLSAgICAxNTYsIDIyMywgNTIsIDM1LCA2LCAxNTYsIDIxNSwgOTQsIDM1LCA2LCAyMTEsIDExNywgMTM5LCAzMiwgNiwgMjQ5LCA2OCwgCi0gICAgMTM5LCAzMiwgNCwgMjQ5LCA2OCwgMTM5LCAzMiwgNCwgNzYsIDEzOSwgMzIsIDQsIDc0LCAxMzksIDMyLCA0LCAyMzUsIAotICAgIDE1MCwgMjI0LCAxNzMsIDIzMiwgMjE5LCAyMTUsIDk0LCAyNTQsIDEzNCwgMjI1LCAxODYsIDUwLCAyNTQsIDE4OSwgMjE1LCAKLSAgICA5NCwgNCwgMjQ1LCAxNCwgMTYsIDMxLCAyMjEsIDI1NCwgMjE5LCAzMSwgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjIwLCAKLSAgICAxMjAsIDIxMiwgMTE0LCAyNDQsIDEwLCAxMjMsIDIyOCwgMTk5LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTIzLCAyMTYsIDI0MiwgCi0gICAgMjEyLCAxMTQsIDI0NCwgMTAsIDEyMywgMjE2LCAxNjksIDIxMiwgMTE0LCAyNDQsIDEwLCAxMTMsIDIxNiwgMTY3LCAyMTIsIAotICAgIDExNCwgMjQ0LCAxMCwgMTIzLCAyNDQsIDEyNSwgMjEyLCAxMTQsIDI0NCwgMTAsIDExMywgMjQ0LCAxMjQsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMzQsIDI0NCwgMTI0LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjQ0LCAxOSwgMjQ0LCAxMjQsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMjMsIDIxOSwgMTE3LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjQ0LCA4OSwgMjE5LCAxMTUsIDIxMiwgMTE0LCAKLSAgICAyNDQsIDEwLCAxMjMsIDI0NSwgMTk2LCAyMTIsIDExNCwgMjQ0LCAxMCwgMTM0LCAyNDUsIDE5NCwgMjEyLCAxMTQsIDI0NCwgCi0gICAgMTAsIDI0NCwgODksIDI0NSwgMTk0LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjIwLCAxMjQsIDI0NSwgMTk0LCAyNDQsIDEwLCAKLSAgICAyMjcsIDIwMSwgMTExLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDExMSwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMDUsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTU4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE2MSwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTAsIAotICAgIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk1LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDE5OSwgMjIyLCAyMDAsIDIyNywgMjAyLCAKLSAgICAxOTYsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjAxLCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNiwgMjQ4LCAyMjIsIDIwMCwgCi0gICAgMjI3LCAyMDIsIDI0NSwgMTc1LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNSwgNzYsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAKLSAgICAxMjIsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyNDAsIAotICAgIDIxNywgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDIxNiwgMTQ4LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDExMSwgNCwgCi0gICAgMjIyLCAyMDAsIDIyNywgMjAyLCAxMDUsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTU4LCA0LCAyMjIsIDIwMCwgMjI3LCAKLSAgICAyMDIsIDE2MSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTAsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMTk1LCA0LCAyMjIsIAotICAgIDIwMCwgMjI3LCAyMDIsIDE5OSwgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxOTYsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgCi0gICAgMjAxLCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNiwgMjQ4LCA0LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDI0NSwgMTc1LCA0LCAKLSAgICAyMjIsIDIwMCwgMjI3LCAyMDIsIDIxNSwgNzYsIDQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjIsIDQsIDIyMiwgCi0gICAgMjAwLCAyMjcsIDIwMiwgMTIzLCAyNDAsIDIxNywgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxNywgCi0gICAgNCwgMjIyLCAyMDAsIDIyNywgMjAyLCAxMjMsIDIxNiwgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjE2LCAxNDksIAotICAgIDI1MSwgNzUsIDI0OSwgNjgsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCA4OSwgMjE2LCAxNDgsIDIyMiwgMjAwLCAyMjcsIAotICAgIDIwMiwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDIyMywgNTIsIDEyMywgMjQwLCAyMTcsIDcsIAotICAgIDQsIDEsIDIyMywgNTIsIDI1MSwgNzQsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjE5LCAxMjcsIDIzMywgODQsIDE3LCAyMjIsIAotICAgIDIwMCwgMjI3LCAyMDIsIDI0NCwgMTIzLCAyNDUsIDIzNCwgMTcsIDIyMiwgMjAwLCAyMjcsIDIwMiwgMjQ0LCAxMjMsIDIxNiwgCi0gICAgMTQ4LCAyMjIsIDIwMCwgMjI3LCAyMDIsIDEyMywgMjQwLCAyMTgsIDIxNiwgMTQ4LCAyMTIsIDExNCwgMjQ0LCAxMCwgMjEwLCAKLSAgICA4NywgMjE2LCAxNjcsIDE0MCwgNzUsIDIxNCwgMTUzLCA3NSwgOTcsIDc1LCAyNDYsIDExMiwgNzUsIDQzLCA0NCwgNzUsIAotICAgIDEyMCwgMTI0LCA3NSwgMjI4LCA2MSwgMjEyLCA5LCA3NSwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTksIDMwLCAyNDUsIAotICAgIDIyOCwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDE0MCwgODAsIDIsIDkxLCA5NywgODAsIDIsIDkxLCAxNDAsIDIxMiwgCi0gICAgMzYsIDc1LCA5NywgMjEyLCAzNiwgNzUsIDE0MCwgMTEzLCAyNDEsIDI0MSwgNzUsIDIxNCwgMTUzLCAxMTMsIDI0MSwgMjQxLCAKLSAgICA3NSwgOTcsIDExMywgMjQxLCAyNDEsIDc1LCAyNDYsIDExMiwgMTEzLCAyNDEsIDI0MSwgNzUsIDE0MCwgODAsIDIsIDIxNywgCi0gICAgNzgsIDk3LCA4MCwgMiwgMjE3LCA3OCwgMTQwLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjE0LCAxNTMsIDgwLCAyNDMsIDI1MSwgCi0gICAgMTMwLCA5NywgODAsIDI0MywgMjUxLCAxMzAsIDI0NiwgMTEyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMTIwLCAxMjQsIDgwLCAyLCAKLSAgICAyNTIsIDEzNSwgMTQwLCA4MCwgMiwgMTAzLCA5NywgODAsIDIsIDEwMywgMTQwLCA4MCwgMiwgMjMyLCAxMjksIDk3LCA4MCwgCi0gICAgMiwgMjMyLCAxMjksIDQzLCA0NCwgMjEyLCAzNiwgNzUsIDQzLCA0NCwgODAsIDIsIDkxLCAyNDYsIDExMiwgMjEwLCAzNSwgCi0gICAgNzUsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3OCwgMjMzLCA0MywgMjE0LCAxNTMsIDgwLCAyLCAyMTYsIDc4LCAyMjIsIAotICAgIDI0NCwgMjQ2LCAxMTIsIDgwLCAyLCAyMTYsIDc4LCAyMzMsIDQzLCAyNDYsIDExMiwgODAsIDIsIDIxNiwgNzgsIDIyMiwgCi0gICAgMjQ0LCA5NywgODAsIDIsIDI0OSwgMTY5LCAyNDYsIDExMSwgMjQ2LCAxMTIsIDgwLCAyLCAyNDksIDE2OSwgMjMzLCA0MywgCi0gICAgMjU0LCA5NiwgMjE2LCAxNSwgMjIwLCAxNTUsIDc1LCAyNTAsIDEwLCAyMTYsIDE1LCAyMjAsIDE1NSwgNzUsIDIyOCwgNjEsIAotICAgIDIxMiwgOSwgODAsIDIxNiwgNDMsIDIwMCwgMTMwLCAxNDAsIDgwLCAyMTYsIDQzLCAyNTIsIDE0OSwgMTE1LCA5NywgODAsIAotICAgIDIxNiwgNDMsIDEzMCwgMjU0LCA5NiwgMjA0LCAyNTAsIDQ0LCA3NSwgMjUwLCAxMCwgMjA0LCAyNTAsIDQ0LCA3NSwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE1MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyNDYsIDExMSwgMjE0LCAKLSAgICAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjQ0LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjMzLCAKLSAgICA0MywgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIxNCwgMTUyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTEsIAotICAgIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI0NCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIAotICAgIDIzMywgNDMsIDk3LCA4MCwgMTE1LCAxNDAsIDc1LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIDI0NiwgMTEyLCA3NSwgMTQwLCAKLSAgICA4MCwgMTE1LCA5NywgNzUsIDE0MCwgMjI2LCA3NCwgMjUzLCAyNTUsIDIxNCwgMTUzLCAyMjYsIDc0LCAyNTMsIDI1NSwgOTcsIAotICAgIDIyNiwgNzQsIDI1MywgMjU1LCAyNDYsIDExMiwgMjI2LCA3NCwgMjUzLCAyNTUsIDE0MCwgMjQyLCA2LCAxMTUsIDk3LCAKLSAgICAyNDIsIDUsIDk3LCAyNDIsIDYsIDExNSwgMTQwLCAyNDIsIDUsIDE0MCwgNTIsIDgwLCAyLCA5MSwgNDMsIDQ0LCA1MiwgODAsIAotICAgIDIsIDkxLCA5NywgNTIsIDgwLCAyLCA5MSwgMTQwLCA1MiwgNzUsIDIxNCwgMTUzLCA1MiwgNzUsIDk3LCA1MiwgNzUsIDI0NiwgCi0gICAgMTEyLCA1MiwgNzUsIDQzLCA0NCwgNTIsIDc1LCAxMjAsIDEyNCwgNTIsIDc1LCAyMjgsIDYxLCAyMTIsIDksIDUyLCA3NSwgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDUyLCA3NSwgMjE5LCAzMCwgMjQ1LCAyMjgsIDUyLCA3NSwgMjE5LCAzMCwgMjEyLCA5LCAKLSAgICA1MiwgNzUsIDE0MCwgMjE1LCAyMTIsIDc1LCA5NywgMjE1LCAyMTIsIDc1LCAxNDAsIDIxOCwgMjMyLCA3NSwgOTcsIDIxOCwgCi0gICAgMjMyLCA3NSwgMjE0LCAxNTMsIDgwLCAyLCA1MiwgOTEsIDI0NiwgMTEyLCA4MCwgMiwgNTIsIDkxLCAxNDAsIDI0OCwgMTYzLCAKLSAgICA3NSwgMjE0LCAxNTMsIDI0OCwgMTYzLCA3NSwgOTcsIDI0OCwgMTYzLCA3NSwgMjQ2LCAxMTIsIDI0OCwgMTYzLCA3NSwgCi0gICAgMTQwLCA4MCwgMjE2LCA0MywgMTMwLCA5NywgODAsIDIxNiwgNDMsIDEzMCwgMTQwLCA3MSwgNzUsIDIxNCwgMTUzLCA3MSwgCi0gICAgNzUsIDk3LCA3MSwgNzUsIDI0NiwgMTEyLCA3MSwgNzUsIDIxNCwgMTUzLCA3MSwgODAsIDI0MywgMjUxLCAxMzAsIDIxNCwgCi0gICAgMTUzLCA3MSwgODAsIDIyNiwgMjAxLCAyMjUsIDIxNywgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE4LCAyLCAKLSAgICAyMDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAyMDEsIDIyNSwgMjE4LCAyLCA2NywgMTMwLCAyMTQsIDE1MywgNzEsIAotICAgIDUyLCA3NSwgMjE0LCAxNTMsIDcxLCA1MiwgODAsIDIyNiwgMjAxLCAyMjUsIDIxNywgOTcsIDcxLCA4MCwgMjQzLCAyNTEsIAotICAgIDIxMiwgNTYsIDIyOCwgNjEsIDIxMiwgOSwgODAsIDIxNiwgNDMsIDI0OSwgMTY4LCAyMTksIDMwLCAyNDUsIDIyOCwgODAsIAotICAgIDIxNiwgNDMsIDI0OSwgMTY4LCAxMjAsIDEyNCwgNzEsIDc1LCA0NCwgODAsIDIsIDQsIDI1MCwgNDMsIDI0NiwgMTEyLCA4MCwgCi0gICAgMTQwLCA2NCwgMjE0LCAxNTMsIDc1LCAxMzQsIDk3LCAyNTMsIDI1NSwgMTQwLCA4MCwgMiwgNjcsIDkxLCA5NywgODAsIDIsIAotICAgIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNjcsIDkxLCAxNDAsIDgwLCAyLCA1MiwgNjcsIDkxLCA5NywgODAsIDIsIDUyLCA2NywgCi0gICAgOTEsIDQzLCA0NCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjI2LCAxNzcsIDc1LCA5NywgMjI2LCAxNzcsIDc1LCA0MywgCi0gICAgNDQsIDIyNiwgMTc3LCA3NSwgMzEsIDI1NCwgMTYzLCAyNDksIDIyMiwgMjI2LCAxLCAyNDcsIDI0MSwgMjE2LCAxODgsIAotICAgIDI0NSwgMzUsIDIxNiwgMTg4LCAyNDcsIDE0NiwgMjI4LCA1NywgMjQ1LCAzNiwgMjQ1LCAxNjAsIDIyMCwgMTI5LCAyMzUsIAotICAgIDI1MiwgMjI5LCAyMjYsIDI0NSwgMTc4LCAyMjYsIDIzNSwgMjI4LCA1NywgMjU0LCAxMzIsIDI0NSwgMTc4LCAyMjYsIDIzNSwgCi0gICAgNCwgMjQ1LCAxNzgsIDIyNiwgMjM1LCAyNDksIDE5NCwgMjUzLCAyNDYsIDIzMSwgNjcsIDI0NywgMTQ2LCAyMjgsIDU3LCAKLSAgICAyNDksIDE5NiwgMjUzLCAyNDYsIDIzMSwgNjcsIDQsIDI0OSwgMTk0LCAyNTMsIDI0NiwgMjMxLCA2NywgMjQ1LCAxNTEsIAotICAgIDY0LCAyMjQsIDE3NSwgMjMwLCAyOSwgMjI0LCAxODMsIDIzMCwgMjksIDI0OSwgMTczLCAyMzAsIDI5LCAyMTgsIDQxLCAKLSAgICAyMzAsIDE4NywgNTAsIDIzMCwgMTg1LCA1MCwgNTksIDIyNSwgMjUsIDI0NywgMTc3LCAyMTksIDk3LCAyMjAsIDEzMCwgCi0gICAgMjMwLCAxODYsIDI1MywgMjI1LCAyMjYsIDE3MSwgMjIyLCAyMzcsIDIyNiwgMTcxLCAyNTEsIDEyMiwgMjI2LCAxNzEsIDQyLCAKLSAgICAyMjIsIDE5NSwgMjQ5LCAxMTcsIDIyMiwgMTk1LCAyNDQsIDEyLCAyMjIsIDE5NSwgMjI0LCAxNzEsIDExMiwgMjM1LCAyNDEsIAotICAgIDQ0LCAyNTQsIDExNywgMjU0LCAxMTcsIDIzMSwgOTMsIDI1NCwgMTE3LCAyMTksIDEsIDI1NCwgMTE3LCAyNDcsIDE3OSwgCi0gICAgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NywgMTgyLCAyMjYsIDEyLCAxMTIsIDIyOCwgNTcsIDIyNiwgMTIsIDExMiwgMjMyLCAKLSAgICAxNTIsIDI1NCwgMTI2LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIzNSwgMjA1LCAyMTQsIDE3NSwgMjM1LCAyMTgsIDUyLCAyMzUsIAotICAgIDIxOCwgMjE1LCAyMTIsIDIzNSwgMjE4LCAyNDksIDE5MCwgMjM1LCAyMTgsIDIxOCwgMTQsIDIzNSwgMjE4LCAyMTMsIDEyOSwgCi0gICAgMjM1LCAyMTgsIDI1MCwgMTAsIDIzNSwgMjE4LCAyNTAsIDEwLCAyNDksIDE5MCwgMjM1LCAyMTgsIDI1NCwgOTYsIDI0OSwgCi0gICAgMTkwLCAyMzUsIDIxOCwgMjE2LCAxODcsIDI1MiwgNzUsIDIyMywgMTQwLCAyMjQsIDE3MiwgNTksIDIzMCwgMTg2LCAyNDUsIAotICAgIDQxLCAyNDMsIDUzLCAyMjQsIDE3MiwgMjQxLCA2NCwgMjE2LCA5MCwgMjI2LCAxNzEsIDIyMywgNTIsIDE4NCwgMjM1LCAKLSAgICAyMDAsIDIzMywgNzEsIDIyMiwgOTMsIDIxOSwgMTU5LCAyMTIsIDM1LCAyMTEsIDIwMCwgMjI0LCAxODMsIDIyOCwgNTcsIAotICAgIDE4NCwgMjMwLCAxODcsIDE4NCwgMjUzLCAyMTgsIDEyOCwgMTEyLCAyMjgsIDU3LCAyNTMsIDIxOCwgMTI4LCAxMTIsIDI1NCwgCi0gICAgNTYsIDEyOCwgMTEyLCAyNTQsIDU2LCAyNTEsIDk2LCAyMjgsIDU3LCAyNTUsIDEzLCAxMjgsIDExMiwgMjI5LCAxMDUsIAotICAgIDI1NCwgNTYsIDIyOCwgNjQsIDI1NSwgMTMsIDEyOCwgMTEyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIyOCwgNTcsIDI1NCwgCi0gICAgMTU2LCAxMjgsIDExMiwgMjU0LCAxNTYsIDEyOCwgMTc3LCAxMjgsIDExMiwgMjE1LCAyMTIsIDE4NCwgMjU0LCAxNjQsIAotICAgIDEyOCwgMTEyLCAyNDUsIDEwMiwgMTEyLCAyNDMsIDUyLCAyNDUsIDEwMiwgMTEyLCAyNDcsIDI0MiwgMjUyLCAzMSwgMjU0LCAKLSAgICA1OCwgMjE2LCAxOTcsIDIzMiwgMjI3LCAyNDMsIDUyLCAxMjgsIDExMiwgMjU0LCA1NiwgMTI4LCAyMTYsIDQzLCAxNzcsIAotICAgIDIxNiwgMTk3LCAyMzYsIDIyLCAyMjYsIDIzNSwgMjM2LCAyMiwgNjQsIDE3NywgMjU0LCA1NiwgMTI4LCAxMTIsIDI0OSwgCi0gICAgMjM1LCAyNDUsIDEwNSwgMjQ1LCAxMDYsIDI0OSwgMjM0LCAyMjIsIDIzNywgMjM2LCA3LCAxMjgsIDExMiwgMjIyLCAyMzcsIAotICAgIDEyOCwgMTEyLCAyNDksIDE2MiwgMTEyLCAyNDUsIDc1LCAyNDUsIDEwNCwgMTEyLCAyMTgsIDE1OSwgMjQ1LCAxMDUsIDI0OCwgCi0gICAgNjMsIDEyOCwgMTEyLCAxMjgsIDIxNiwgNDMsIDI1MSwgODYsIDI0OCwgODAsIDIzMSwgOTMsIDI1MSwgODUsIDIyNCwgMTQsIAotICAgIDEyOCwgMTEyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjQwLCAxMTEsIDExMiwgMjI4LCA1NywgMjQwLCAxMTEsIDExMiwgMjE4LCAKLSAgICAxMTEsIDI0NSwgMTAyLCAxMTIsIDIzMywgMjEsIDE3NywgMTI4LCAxMTIsIDI0MiwgMTM3LCAxNzcsIDEyOCwgMTEyLCAyMzMsIAotICAgIDIxLCAxMTUsIDEyOCwgMTEyLCAyNDIsIDEzNywgMTE1LCAxMjgsIDExMiwgMjMzLCAyMSwgMjUxLCA5NiwgMjI4LCA1NywgCi0gICAgMTI4LCAxMTIsIDI0MiwgMTM3LCAyNTEsIDk2LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMwLCAxMDIsIDIzMywgMjAsIDIzMCwgCi0gICAgMTAyLCAyNDIsIDEzNiwgMjUyLCAzMSwgMjI4LCA1NywgMjQ1LCAxMDIsIDExMiwgMjI4LCA1NywgMjMzLCAyMCwgMjI4LCAKLSAgICA1NywgMjQyLCAxMzYsIDIyOSwgMTA1LCAyMzMsIDIxLCAyMjgsIDY0LCAxMjgsIDExMiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAKLSAgICAyMjgsIDY0LCAxMjgsIDExMiwgMjMzLCAyMSwgMTc3LCAyNDUsIDEwMiwgMTEyLCAyNDIsIDEzNywgMTc3LCAyNDUsIDEwMiwgCi0gICAgMTEyLCAyMjksIDEwNSwgMjMzLCAyMSwgMjI4LCA2NCwgMjQ1LCAxMDIsIDExMiwgMjI5LCAxMDUsIDI0MiwgMTM3LCAyMjgsIAotICAgIDY0LCAyNDUsIDEwMiwgMTEyLCAyMzMsIDIxLCAxNzcsIDI0MiwgMTM2LCAyNDIsIDEzNywgMTc3LCAyMzMsIDIwLCAyMjksIAotICAgIDEwNSwgMjMzLCAyMSwgMjI4LCA2NCwgMjQyLCAxMzYsIDIyOSwgMTA1LCAyNDIsIDEzNywgMjI4LCA2NCwgMjMzLCAyMCwgCi0gICAgMjI0LCAyMDUsIDIxOCwgNTYsIDIyNCwgMjA2LCAxNzcsIDEyOCwgMTEyLCAyMTgsIDU3LCAxNzcsIDEyOCwgMTEyLCAyMjQsIAotICAgIDIwNiwgMTc3LCAyNDUsIDEwMiwgMTEyLCAyMTgsIDU3LCAxNzcsIDI0NSwgMTAyLCAxMTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAKLSAgICAyMjQsIDIwOCwgMjQ3LCAxNDYsIDIyOCwgNTcsIDIxOCwgNTgsIDIxOCwgNjUsIDIyNiwgMjM1LCAyMTgsIDIzLCAyMjYsIAotICAgIDIzNSwgMjI4LCA1NywgMTE2LCAyMTgsIDY1LCAyMjYsIDIzNSwgMjI4LCA1NywgMTE2LCAyMTgsIDIzLCAyMjYsIDIzNSwgCi0gICAgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAxMTIsIDIxOCwgMjMsIDY0LCAxNzcsIDEyOCwgMTEyLCAyMjksIDEwNSwgMTE2LCAKLSAgICAyMTgsIDY1LCA2NCwgMjI4LCA2NCwgMTI4LCAxMTIsIDIyOSwgMTA1LCAxMTYsIDIxOCwgMjMsIDY0LCAyMjgsIDY0LCAxMjgsIAotICAgIDExMiwgMjE4LCA2NSwgNjQsIDIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDIzLCA2NCwgMiwgMjI4LCA1NywgMTI4LCAKLSAgICAxMTIsIDIzMCwgODYsIDIzMCwgODcsIDIzMCwgODgsIDIzMCwgODcsIDIxNCwgMTc1LCA0MiwgMjM2LCAyMiwgMjI2LCAyMzUsIAotICAgIDQyLCAyMjYsIDE1NCwgMjI2LCAyMzUsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAxMjgsIDExMiwgNDIsIDIyNiwgMTU0LCA2NCwgCi0gICAgMTc3LCAxMjgsIDExMiwgNDIsIDI1MSwgMywgNDIsIDI0OSwgMTEwLCAzNywgMjI1LCAyNSwgMzcsIDIzMCwgMTg2LCAzNywgCi0gICAgMjE2LCA4NiwgMzcsIDI0NywgMTc3LCAyMTksIDk3LCAzNywgNTksIDIyNiwgMTcxLCAzNywgMjIyLCAyMzcsIDIyNiwgMTcxLCAKLSAgICAzNywgMjUzLCAyMjUsIDIyNiwgMTcxLCAzNywgMjQ1LCAxMDUsIDM3LCAyNDgsIDE2NCwgOTIsIDIyNSwgMjUsIDkyLCAyMzAsIAotICAgIDE4NiwgOTIsIDIxNiwgODYsIDkyLCA1OSwgMjI2LCAxNzEsIDQ0LCAyMTcsIDg4LCA0MywgMjE3LCA4OCwgMTI0LCAyMTcsIAotICAgIDg4LCAxMjAsIDIxNywgODgsIDI1MywgMjI4LCAyMzAsIDE2MSwgMjE1LCAxOTIsIDI0NCwgMzMsIDIxNSwgMjEyLCA2NywgCi0gICAgMjUyLCAxNDksIDQ0LCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDQsIDIxNSwgOTMsIDI0NywgMTQ2LCAyMjgsIAotICAgIDU3LCAyMjQsIDE2NiwgMjI4LCA1NywgMjE1LCAxOTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDQsIDM0LCAyMjksIDEwNywgCi0gICAgNTIsIDY3LCAyNTIsIDE0OSwgNTIsIDQ0LCAyMTUsIDkzLCAyMjQsIDIwNiwgMjE0LCAxODQsIDIyMywgOTQsIDIxOCwgNTcsIAotICAgIDIxNCwgMTg0LCAyMjMsIDk0LCAyMjgsIDYyLCAyMTgsIDc4LCAyMjYsIDIzNSwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAyMjgsIAotICAgIDYyLCAyMTgsIDc3LCAyMjgsIDYyLCAyMTgsIDc4LCA2NCwgMTc3LCAxMjgsIDExMiwgMjQ5LCAxOTQsIDI1MywgMjQ2LCAKLSAgICAyMjgsIDYyLCAyMTgsIDc4LCAxNzcsIDEyOCwgMTEyLCAyMjYsIDE1NCwgMjI2LCAyMzUsIDIzNiwgMjIsIDIyNiwgMjM1LCAKLSAgICAyMzAsIDkyLCAyNDEsIDIwNywgMjQ5LCAyMDQsIDIzMSwgMTQyLCAyMzUsIDIxNSwgMjExLCAxNDUsIDIyOSwgMjA3LCAyMjgsIAotICAgIDYzLCA0NCwgMjU0LCAxMTgsIDIsIDI1NCwgMzMsIDQ0LCAyMTUsIDIyNiwgMjMwLCAyOSwgMjMyLCAxNTIsIDI1NCwgMTI2LCAKLSAgICAyMzAsIDI5LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIzMCwgMjksIDIzNSwgMjA1LCAyMzAsIDI5LCAyMTQsIDE3NSwgMjQ4LCAKLSAgICAxLCAyMjYsIDE3MSwgNTksIDIyNiwgMTcxLCAyMTgsIDE1OSwgMjI2LCAxNzEsIDI0NywgMTc3LCAyMTYsIDg2LCAyNTEsIAotICAgIDE3MiwgNDMsIDIyOCwgNjIsIDI0NCwgMTg5LCAyMjAsIDE1MSwgMjI0LCAxODMsIDQ0LCAyMjgsIDYyLCAyNDQsIDE4OSwgCi0gICAgMjIwLCAxNTEsIDIyNCwgMTgzLCA0MywgMjIwLCAxNTEsIDIyNCwgMTgzLCA0NCwgMjIwLCAxNTEsIDIyNCwgMTgzLCAyMjMsIAotICAgIDUyLCAyMTYsIDkwLCAyNDUsIDEwNSwgMjQ5LCAxMDcsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjQ5LCAxMDcsIDIzMiwgMTUyLCAKLSAgICAyNTQsIDEyNiwgNTIsIDIxOCwgNjQsIDUyLCAyMTgsIDIyLCA1MiwgMjM1LCAyMDUsIDUyLCAyMTQsIDE3NSwgMjI1LCA1MCwgCi0gICAgMTI4LCAyMiwgMjI2LCAxMiwgMTEyLCAyMzMsIDIxLCAyLCAyNDcsIDEyOCwgMjQyLCAxMzcsIDIsIDI0NywgMTI4LCAyMTMsIAotICAgIDE4NywgMjMwLCAxMDIsIDIzMywgMjAsIDIxMywgMTg3LCAyMzAsIDEwMiwgMjQyLCAxMzYsIDIzMywgMjEsIDEyOCwgMjE2LCAKLSAgICA0MywgMTc3LCAyNDIsIDEzNiwgMjQyLCAxMzcsIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDIwLCAxMjgsIDIxNiwgNDMsIAotICAgIDE3NywgMjMzLCAyMCwgMTI4LCAyMTYsIDQzLCAxNzcsIDI0MiwgMTM2LCAxMjgsIDIxNiwgNDMsIDE3NywgMjI0LCAyMDUsIAotICAgIDEyOCwgMjE2LCA0MywgMTc3LCAyMTgsIDU2LCAyNDcsIDE0NiwgMjI4LCA1NywgMjI0LCAyMDksIDE3NywgMjQ1LCAxMDcsIAotICAgIDI0NywgMTQ2LCAyMjgsIDU3LCAyMTgsIDU5LCAxNzcsIDI0NSwgMTA3LCAyMjgsIDU3LCA0MiwgMjM2LCAyMiwgNjQsIDE3NywgCi0gICAgMTI4LCAxMTIsIDIyOCwgNTcsIDQyLCAyMjYsIDE1NCwgNjQsIDE3NywgMTI4LCAxMTIsIDQyLCAyMzYsIDIyLCA2NCwgMTc3LCAKLSAgICAyMjgsIDU3LCAxMjgsIDExMiwgNDIsIDIyNiwgMTU0LCA2NCwgMTc3LCAyMjgsIDU3LCAxMjgsIDExMiwgMjMzLCAyMSwgCi0gICAgMjUxLCA5NiwgMjI4LCA1NywgMjQ1LCAxMDIsIDExMiwgMjQyLCAxMzcsIDI1MSwgOTYsIDIyOCwgNTcsIDI0NSwgMTAyLCAKLSAgICAxMTIsIDIyNCwgMjA2LCAyNTEsIDk2LCAyMjgsIDU3LCAyNDUsIDEwMiwgMTEyLCAyMTgsIDU3LCAyNTEsIDk2LCAyMjgsIAotICAgIDU3LCAyNDUsIDEwMiwgMTEyLCAyMjgsIDU3LCAyMjgsIDYyLCAyMTgsIDc4LCAyMjYsIDIzNSwgMjQ3LCAxNDYsIDIyOCwgCi0gICAgNTcsIDI0OSwgMTk2LCAyNTMsIDI0NiwgMjI4LCA2MiwgMjE4LCA3NywgMjI4LCA1NywgMjI4LCA2MiwgMjE4LCA3OCwgNjQsIAotICAgIDE3NywgMTI4LCAxMTIsIDI0NywgMTQ2LCAyMjgsIDU3LCAyNDksIDE5NiwgMjUzLCAyNDYsIDIyOCwgNjIsIDIxOCwgNzgsIAotICAgIDE3NywgMjQ1LCAxMDcsIDY3LCAyNDUsIDE3MSwgMjMwLCAyMjcsIDIwMywgMjQ1LCAxNzEsIDEyMCwgNDQsIDI0OCwgNywgCi0gICAgMjQ1LCAxNzEsIDEyNCwgNDQsIDI0OCwgNywgMjQ1LCAxNzEsIDI0NSwgMTc4LCA2NCwgMiwgMjAwLCAyMDMsIDkxLCAyNDUsIAotICAgIDE3OCwgNjQsIDIsIDY3LCAyNTIsIDE0OSwgMjUzLCAyMTUsIDI0NSwgMTUxLCA2NCwgMjAzLCA5MSwgNCwgMjQ1LCAxNzgsIAotICAgIDY0LCAyLCA2NywgMjUyLCAxNDksIDI1MywgMjE1LCAyNDUsIDE1MSwgNjQsIDIwMywgOTEsIDI0NSwgMTc4LCA2NCwgMiwgCi0gICAgNTksIDQ4LCAyNDUsIDE3OCwgNjQsIDIsIDIyNiwgMTI3LCA0LCAyNDUsIDE3OCwgNjQsIDIsIDIyNiwgMTI3LCAyNDUsIAotICAgIDE3OCwgNjQsIDIsIDIxNCwgMTgzLCAyNDUsIDE3OCwgNjQsIDIsIDExMywgMjAzLCAyMTgsIDkyLCAyNDksIDE5NCwgMiwgCi0gICAgMjAwLCAyMDMsIDkxLCAyNDksIDE5NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCAKLSAgICA0LCAyNDksIDE5NCwgMiwgNjcsIDI1MiwgMTQ5LCAyNTMsIDIxNSwgMjQ1LCAxNTEsIDY0LCAyMDMsIDkxLCAyNDksIDE5NCwgCi0gICAgMiwgMjI2LCAxMjcsIDQsIDI0OSwgMTk0LCAyLCAyMjYsIDEyNywgMjEwLCAxNjAsIDE4OSwgMjUyLCAxODEsIDIzMSwgNjYsIAotICAgIDI0OCwgMiwgNTAsIDI0NSwgMTgwLCA3NSwgMjQwLCAyNDEsIDEyMCwgMjU0LCAxLCAxMjQsIDI1NCwgMSwgMjI0LCAxNzgsIAotICAgIDIyNSwgMTY4LCAyMTIsIDMyLCAyMzIsIDIxOSwgNDMsIDI1MCwgMTg5LCA0NCwgMjUwLCAxODksIDQzLCAyNDQsIDY1LCA0NCwgCi0gICAgMjQ0LCA2NSwgMjUxLCAxODMsIDQ0LCAyNDksIDE0MCwgMjUxLCAxODMsIDQzLCAyNDksIDE0MCwgMjE2LCAxNSwgNDQsIAotICAgIDI0OSwgMTQwLCAyMTYsIDE1LCA0MywgMjQ5LCAxNDAsIDIyMywgNTIsIDIyOCwgNTcsIDUwLCA0MiwgMjMyLCAxMTAsIDI1NCwgCi0gICAgMzMsIDIyMSwgMTY2LCAyMjEsIDE3MywgMjE3LCAyLCAyMjMsIDEyMywgMjI0LCAyNDQsIDIzNSwgMjQ1LCAyMTMsIDE2NSwgCi0gICAgMjE4LCAyMzYsIDIyNSwgNDQsIDY0LCAyMzUsIDIxNCwgNTAsIDIxNSwgOTQsIDIyOCwgNTcsIDUwLCAyMTIsIDQyLCAyNDAsIAotICAgIDI0MywgMjE2LCAxNSwgNDMsIDI0OSwgMTY4LCAyMTYsIDE1LCA0NCwgMjQ5LCAxNjgsIDI1MSwgMTgzLCA0MywgMjQ5LCAKLSAgICAxNjgsIDI1MSwgMTgzLCA0NCwgMjQ5LCAxNjgsIDIxNiwgMTUsIDE2MywgMjM1LCAyMTgsIDI1MSwgMTgzLCAxNjMsIDIzNSwgCi0gICAgMjE4LCAyNDMsIDI0OCwgMjE5LCA3NywgMTIwLCAyNTQsIDIsIDI1MiwgMzIsIDExMywgMjAzLCAyNTIsIDEzNywgMjI2LCAKLSAgICAxNjQsIDIzNCwgMTQ0LCAyNDUsIDk4LCAyMTYsIDQzLCAyMTYsIDE5NywgMjIyLCAyNTQsIDIxMSwgMTc5LCAyMzYsIDcsIAotICAgIDExNiwgMjIzLCAxMjAsIDI1MSwgMTcxLCAyMzQsIDE0MywgMjMzLCA0OCwgMjU0LCAxMTgsIDEyNywgMjIyLCAyNTAsIDI1NCwgCi0gICAgMTE4LCAxMjcsIDI0NSwgOTgsIDIxNiwgNDMsIDIxNiwgMTk3LCAyMzMsIDUyLCAyNTIsIDQzLCAyMjIsIDIzNiwgMjQ5LCAKLSAgICA3OCwgMjU0LCAxNjQsIDI1NCwgOSwgMjE3LCAxODIsIDIxNiwgNSwgMjIyLCAxMjUsIDI0NywgMjIzLCAyMjYsIDE1NSwgCi0gICAgMjQ5LCAyMDYsIDIxNywgNTMsIDIxOSwgODgsIDI0OSwgMTU5LCAyNDksIDE1OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNDAsIDE1OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTgsIDIzMCwgMjI0LCAzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMjQsIDMxLCAyNDUsIDEwNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNDcsIDE4MiwgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNDgsIDAsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjM1LCA2MiwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNTAsIDQzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIAotICAgIDIxOCwgMTM3LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjE5LCA5OCwgMTMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MiwgMTg5LCAxMzAsIDI1NCwgNzQsIDI0MywgMjMyLCAKLSAgICAxNiwgMjI0LCAzMSwgMjE5LCA5NywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyNTIsIDE4OCwgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAyMzMsIDIwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDI0MiwgMTM2LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDE0MCwgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCA5NywgMjE0LCAxOSwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAxNDAsIDc1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIAotICAgIDk3LCA3NSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTAsIDQ0LCAyNTIsIDE4OCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAxMjQsIDIxNywgODksIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNjMsIDIxOCwgMTM3LCAyNTQsIAotICAgIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDEyNCwgMjUwLCAyNDYsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgCi0gICAgMjQ4LCA2MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjQsIDIxNywgODksIDIzNSwgNjIsIDI1NCwgNzQsIDI0MywgMjMyLCAKLSAgICAxNiwgMjE0LCAxNTMsIDIxNCwgMTksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMjE0LCAxNTMsIDc1LCAyNTQsIAotICAgIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjI2LCAxMjcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQ4LCA3NCwgCi0gICAgMjE4LCAxMzcsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAzMSwgMTIwLCAyNTAsIDI0NiwgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMxLCAyNDgsIDczLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjE3LCA4OSwgMjM1LCA2MiwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDYsIDExMiwgMjE0LCAxOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjQsIDMxLCAKLSAgICAyNDYsIDExMiwgNzUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjI0LCAwLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyNDgsIDYzLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDEsIDIxNCwgMTgzLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIzNSwgNjMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1MCwgNDQsIDIxNCwgCi0gICAgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjIwLCA3LCAyMzUsIDYyLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIAotICAgIDIyNCwgMCwgMjI0LCAzMCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTAsIDQ0LCAyMTgsIDE1OCwgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMxLCAyNDksIDIzNCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAxMjAsIDIxNywgODksIDI0OCwgOSwgCi0gICAgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDgsIDc0LCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjE4LCAxNTksIAotICAgIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMzUsIDYzLCAyNDgsIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjUwLCA0NCwgMjQ4LCA5LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyNCwgMjIwLCA3LCAyMTgsIDEzNywgMjU0LCA3NCwgCi0gICAgMjQzLCAyMzIsIDE2LCA0MywgMjIwLCA3LCAyMTgsIDEzNywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMTYsIDkwLCAyNDgsIAotICAgIDksIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjQyLCAxMzcsIDI0OCwgOSwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNDksIAotICAgIDIyOCwgMTMwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI0OCwgNzQsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyMTAsIDM0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIxOCwgMTM4LCAxODQsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgCi0gICAgMjIwLCAxNTMsIDIxNCwgMTgzLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIyOCwgNTcsIDI0NSwgMTA3LCAKLSAgICAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNCwgMzEsIDIyNCwgMTUsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMTI0LCAyNTAsIAotICAgIDI0NywgMTg0LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDEyMCwgMjUwLCAyNDcsIDE4NCwgMjU0LCA3NCwgMjQzLCAyMzIsIAotICAgIDE2LCAyMzUsIDE5MiwgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyMjMsIDQwLCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDIyNiwgCi0gICAgMjA1LCAyNTQsIDc0LCAyNDMsIDIzMiwgMTYsIDI1NCwgMTUyLCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAKLSAgICAyNDUsIDEwOSwgMjE0LCAxODMsIDI1NCwgNzQsIDI0MywgMjMyLCAxNiwgMjM1LCAxOTMsIDIxNCwgMTgzLCAyNTQsIDc0LCAKLSAgICAyNDMsIDIzMiwgMTYsIDIyNiwgMjA2LCAyMTQsIDE4MywgMjU0LCA3NCwgMjQzLCAyMzIsIDE2LCAyNTQsIDE1MSwgMjI4LCAKLSAgICA1NywgMjUwLCAxMzgsIDc5LCA0NCwgMjU0LCAxMTgsIDIsIDI0NiwgMTEyLCAyMTAsIDM1LCA3NSwgMjE5LCAyMzcsIDIwNCwgCi0gICAgMjUxLCAxNzEsIDI1MiwgNTMsIDg3LCA2NywgMjMyLCAyMjAsIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjM1LCAyMjMsIDg3LCAKLSAgICAyNDksIDE5MSwgMjE0LCAxODEsIDg3LCAyNDcsIDE5NywgMjE0LCAxODEsIDg3LCAyNDUsIDE2MiwgODcsIDI0OSwgMjE4LCAKLSAgICA4NywgNzEsIDQyLCAyLCAyNTAsIDE4MywgNjcsIDIzMiwgMjE5LCAyNDUsIDEzOCwgODcsIDI1NCwgMTQ3LCAyMzQsIDE0NSwgCi0gICAgODcsIDI0MSwgMjIwLCA4NywgMzcsIDIwMywgMjUyLCAxNDksIDIsIDIyOCwgNTUsIDM3LCAyMTUsIDIyNywgMjQ2LCAxMTQsIAotICAgIDI1MSwgMTQzLCAyNTAsIDQ0LCAyLCAyMjgsIDU5LCA3NSwgMjE0LCAxNzksIDg3LCAyMzAsIDE0MiwgODcsIDI0MCwgMTcxLCAKLSAgICA4NywgMjI2LCAxNzgsIDI0MiwgNjYsIDg3LCAyMjYsIDE3OCwgMjMzLCAxNTMsIDg3LCAyMjUsIDI0OCwgODcsIDIyNSwgCi0gICAgMjQ3LCA4NywgMjQ3LCAyMDUsIDI0OSwgMTA1LCAxNiwgMjQ0LCAyOCwgMTA1LCAyMTksIDUyLCA4NywgMjU0LCA3NCwgMjQzLCAKLSAgICAyMzIsIDE2LCAyMjQsIDMwLCAyNDgsIDkxLCAyMjAsIDE0MCwgMjM0LCAxNDUsIDg3LCAyMjQsIDE5NSwgMjI2LCA3OSwgCi0gICAgMjI5LCA4NywgMjI2LCA3OSwgMjI0LCAxOTEsIDIyMSwgMTkxLCA4NywgMjUwLCAyNSwgMjIxLCAxOTEsIDg3LCA0MywgMjI2LCAKLSAgICA4LCAyMTQsIDE2MCwgMTAzLCA0MywgMjI2LCA4LCAyNDUsIDI5LCA0MywgMjI2LCA4LCAyMzIsIDExNCwgMTAzLCA0NCwgCi0gICAgMjI2LCA4LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjI2LCA4LCAyNDUsIDI5LCA0NCwgMjI2LCA4LCAyMzIsIDExNCwgMTAzLCAKLSAgICA0MywgNDIsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMjQ5LCAxNjgsIDQzLCA0MiwgMjUxLCAxNjYsIDI0NSwgMjksIDQzLCA0MiwgCi0gICAgMjUxLCAxNjYsIDIzMiwgMTE0LCAyNDksIDE2OCwgNDQsIDQyLCAyNTEsIDE2NiwgMjE0LCAxNjAsIDI0OSwgMTY4LCA0NCwgCi0gICAgNDIsIDI1MSwgMTY2LCAyNDUsIDI5LCA0NCwgNDIsIDI1MSwgMTY2LCAyMzIsIDExNCwgMjQ5LCAxNjgsIDQzLCAyNDksIAotICAgIDEwNywgMjUxLCAxNjYsIDIxNCwgMTYwLCAxMDMsIDQzLCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMCwgMjI5LCAyMjUsIDEwNCwgCi0gICAgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjMyLCAxMTQsIDEwMywgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyNDUsIDI5LCA0NCwgCi0gICAgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCAxMDcsIDI1MSwgMTY2LCAyMzAsIDIyOSwgMjI1LCAKLSAgICAxMDQsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIzMiwgMTE0LCAxMDMsIDIzNSwgMjE5LCAyNDUsIDI5LCAyMDMsIDIzMiwgCi0gICAgMjIwLCAyNDUsIDI5LCAyMTQsIDE2MCwgNDMsIDE3NywgMjMyLCAxMTQsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIyMSwgCi0gICAgMTc0LCAyMTQsIDE2MCwgNDQsIDE3NywgMjMyLCAxMTQsIDQzLCAyNDksIDEwNywgMjUxLCAxNjYsIDIyMSwgMTc0LCAyMTgsIAotICAgIDQyLCAyMTYsIDE0LCAyMTgsIDQyLCAyNTEsIDE4MiwgMjE2LCAxNSwgNDIsIDEyNywgMjUxLCAxODMsIDQyLCAxMjcsIDI1MSwgCi0gICAgMTgzLCA0MiwgMjUxLCAxNjYsIDExNSwgMjE2LCAxNSwgNDIsIDEyNywgMzQsIDE2LCAyNTEsIDE4MiwgNDMsIDY3LCA5MywgCi0gICAgMjMyLCAyMTksIDQ0LCA2NywgOTMsIDIzMiwgMjE5LCAyMDMsIDIyMSwgMjA3LCAyMzIsIDIxOCwgMjAzLCAyMjEsIDIwNywgCi0gICAgMjMyLCAyMTcsIDIwMywgMjIxLCAyMDcsIDIzMiwgMjE2LCAyMDMsIDIyMSwgMjA3LCAyMzIsIDIxNSwgMjQ4LCA1NCwgMTYsIAotICAgIDE5MywgNjcsIDIyLCAyMTYsIDE1LCAyMjIsIDI1NCwgMjQ4LCA1NCwgMTYsIDE5MywgNjcsIDIyLCAyNTEsIDE4MywgMjIyLCAKLSAgICAyNTQsIDI0OCwgNTQsIDE2LCAxOTMsIDY3LCAyLCAyNTAsIDQzLCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyMDMsIDIsIAotICAgIDI1MCwgNDMsIDI0OCwgNTQsIDE2LCAxOTMsIDEyMCwgMjIsIDIwMywgMiwgMjUwLCA0MywgMjQ4LCA1NCwgMTYsIDE5MywgCi0gICAgNjcsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAKLSAgICAxNiwgMTkzLCAxMjAsIDIyLCAyMDMsIDIsIDIxNSwgMjI2LCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDIxMiwgMzUsIAotICAgIDI0OCwgNTQsIDE2LCAxOTMsIDEyNCwgMjIsIDIwMywgMiwgMjEyLCAzNSwgMjQ4LCA1NCwgMTYsIDE5MywgMTIwLCAyMiwgCi0gICAgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDU0LCAxNiwgMTkzLCAxMjQsIDIyLCAyNDEsIDUxLCAyNDgsIDU0LCAxNiwgMTkzLCAKLSAgICAxMjAsIDIyLCAyNDEsIDUxLCAyNDgsIDU0LCAxNiwgMTkzLCA2NywgMjIsIDIxNiwgMTUsIDIzMywgNTIsIDI0OCwgNTQsIAotICAgIDE2LCAxOTMsIDY3LCAyMiwgMjUxLCAxODMsIDIzMywgNTIsIDQyLCAyNDQsIDQwLCAyMjMsIDU3LCA4NywgMjQ1LCAxOTAsIAotICAgIDg3LCA2NywgMjMyLCAyMjAsIDI0NSwgMjksIDIzMSwgMzgsIDI1MSwgMTU0LCAyMzEsIDM4LCAyMDAsIDExNSwgMjE5LCAKLSAgICAyNTIsIDIzMSwgMzgsIDIxOSwgMjUzLCAxMTUsIDIzMiwgMTQzLCAyMzEsIDM4LCAyMDAsIDExNSwgMTEzLCAyMTksIDIzOSwgCi0gICAgMjMxLCAzOCwgMTEzLCAyMTksIDI0MCwgMTE1LCAyMzIsIDE0MywgMjMxLCAzOCwgMTEzLCAyMTksIDI0MCwgMjM1LCA3MCwgCi0gICAgMjMxLCAzOCwgMjE1LCAyMDksIDIzMSwgMzgsIDIxNiwgMjI0LCAyMzEsIDM4LCAyMjUsIDE5MSwgMjQ1LCAyMzIsIDI0MiwgCi0gICAgMTI5LCAyNDMsIDIyNiwgMjE2LCAxNSwgMjI2LCA3LCAyNTEsIDE4MywgMjI2LCA3LCAyMTYsIDE1LCAyNDksIDEwNywgMTI3LCAKLSAgICAyNTEsIDE4MywgMjQ5LCAxMDcsIDEyNywgMjE2LCAxNSwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDI1MSwgMTgzLCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDEyNywgNzEsIDIxNSwgMjQwLCAyNTIsIDQzLCAyMjIsIDIzNywgMiwgMjUwLCA0MywgMjE4LCAxMjIsIDI0NCwgCi0gICAgNzIsIDI1NSwgMjYsIDI0OSwgMTA0LCAyNDUsIDE3OSwgMjM1LCAyMDUsIDI0OCwgOTEsIDI0NSwgMzIsIDg3LCA4NSwgMjIyLCAKLSAgICAyNTAsIDUyLCAyMTUsIDIyNiwgODUsIDIzMywgNDgsIDUyLCAyMTUsIDIyNiwgODUsIDIxNCwgMTYyLCA1MiwgMjE1LCAyMjYsIAotICAgIDg1LCAyNDYsIDExMywgNTIsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDUyLCAyMTUsIDIyNywgMiwgNjcsIDEzMCwgODUsIAotICAgIDIzMywgNDgsIDUyLCAyMTUsIDIyNywgMiwgNjcsIDEzMCwgODUsIDIyMiwgMjUwLCAyMTUsIDIyNywgMiwgNTIsIDY3LCAKLSAgICAxMzAsIDI1NCwgMTgyLCAyNTAsIDExLCAyMTgsIDEyOCwgMjE2LCA4NywgMjUwLCAxMSwgMjQwLCAyNDQsIDIsIDI0NCwgNTgsIAotICAgIDIyMSwgMjQzLCAxNiwgMzEsIDIyNywgMjA2LCAxNiwgMzEsIDIxOCwgMTU0LCA2NCwgMjQxLCAyNDAsIDE2LCAzMSwgMjE4LCAKLSAgICAxNTQsIDY0LCAyMTYsIDIxMywgMTYsIDMxLCAyNDUsIDE1MSwgNjQsIDIxNiwgMjEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgCi0gICAgMjE1LCAyNDQsIDE2LCAzMSwgMjQ1LCAxNDAsIDE2LCAzMSwgMjU1LCAxNiwgMTYsIDMxLCAyNTIsIDUyLCAxNiwgMzEsIAotICAgIDI1MiwgMTg3LCAxNiwgMzEsIDIwMywgMjE3LCA5MCwgMTYsIDMxLCAyMzIsIDIyMCwgMjQ0LCAxNTMsIDE2LCAzMSwgNjcsIAotICAgIDIxNywgOTAsIDE2LCAzMSwgMjQ0LCAyOCwgMjQ0LCAxNTMsIDE2LCAzMSwgMjUwLCAyMzgsIDIyMywgNTYsIDE2LCAzMSwgCi0gICAgMjIwLCAzMCwgMjI2LCAxMzQsIDE2LCAzMSwgMjIwLCAzMCwgMjM2LCA2LCAxNiwgMzEsIDI0OCwgMTU5LCAyMzIsIDIxMCwgCi0gICAgMjQ1LCA4NSwgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTExLCAxNiwgMzEsIDI0OCwgMzksIDI0OSwgMTg2LCAxMDUsIAotICAgIDE2LCAzMSwgMjQ4LCAzOSwgMjQ5LCAxODYsIDE1OCwgMTYsIDMxLCAyNDgsIDM5LCAyNDksIDE4NiwgMTYxLCAxNiwgMzEsIAotICAgIDE1MiwgMjU1LCAxNiwgMTYsIDMxLCAyMTcsIDE3OCwgMjM2LCA2OSwgMTYsIDMxLCAyNDUsIDE1MSwgNjQsIDIxNSwgMjQ1LCAKLSAgICAyNTEsIDIyMSwgMTYsIDMxLCAyNTEsIDEzLCAxNiwgMzEsIDI0NSwgMTUxLCA2NCwgMjMxLCA4NiwgMTYsIDMxLCAyMTgsIAotICAgIDYyLCAxNiwgMzEsIDI0NSwgODUsIDE2LCAzMSwgMjQ0LCAxMTUsIDIyMCwgMTM5LCAxNiwgMzEsIDI0MiwgMTI4LCAyMjAsIAotICAgIDEzOSwgMTYsIDMxLCAyMjMsIDEyNCwgMjIwLCAxMzksIDE2LCAzMSwgMjE0LCAxNzQsIDIyMCwgMTM5LCAxNiwgMzEsIDIxOSwgCi0gICAgMjAsIDE2LCAzMSwgMjQ4LCA3MSwgMjUxLCAyMjQsIDg3LCAyMDQsIDI1MSwgMTcxLCAxNiwgMzEsIDIyOSwgOTAsIDE2LCAKLSAgICAzMSwgMjQ4LCA3MiwgMjQ0LCAyOCwgMTA1LCAxNiwgMzEsIDIxOCwgNjMsIDI0NCwgMjgsIDEwNSwgMjI2LCAyNDUsIDEwMywgCi0gICAgMjI2LCAyNDUsIDI1MCwgMTYwLCAyMjYsIDI0NSwgMjQ0LCAzMSwgMjI2LCAyNDUsIDIzNSwgMjAwLCAyNDQsIDMxLCAyMjYsIAotICAgIDI0NSwgMjUyLCA1MCwgMjUxLCAxMzIsIDIyNiwgMjQ1LCAyNTEsIDE3OCwgMjE2LCAxMTIsIDIyNiwgMjQ1LCAyNTEsIDE2MywgCi0gICAgMjUyLCAxNTQsIDI0MCwgMTEwLCAyMjYsIDI0NSwgMjU0LCAxMzUsIDY0LCAyNTAsIDEzNywgMjI2LCAyNDUsIDI0OCwgMTY0LCAKLSAgICAyMjYsIDI0NSwgMjQ5LCA5NSwgMjU1LCAyMCwgMjI3LCAyMDQsIDIyNiwgMjQ1LCA1MiwgMjUyLCAxODgsIDM3LCAyMSwgCi0gICAgMTExLCAzNywgMjEsIDEwNSwgMzcsIDIxLCAxNTgsIDM3LCAyMSwgMTYxLCAzNywgMjEsIDE5MCwgMzcsIDIxLCAxOTUsIDM3LCAKLSAgICAyMSwgMTk5LCAzNywgMjEsIDE5NiwgMzcsIDIxLCAyMDEsIDM3LCA1NCwgMjE2LCAyNDgsIDM3LCA1NCwgMjQ1LCAxNzUsIAotICAgIDM3LCA1NCwgMjE1LCA3NiwgMzcsIDU0LCAyMTYsIDE2NSwgMzcsIDU0LCAyNDQsIDEzLCAzNywgNTQsIDI0NCwgMTI2LCAzNywgCi0gICAgNTQsIDIxOSwgMTIxLCAzNywgNTQsIDIyMCwgMTIxLCAzNywgNTQsIDI0NSwgMTk4LCAzNywgNTQsIDIyOCwgMjAyLCAzNywgCi0gICAgNTQsIDIxNSwgNzMsIDg4LCAyMSwgMTExLCA4OCwgMjEsIDEwNSwgODgsIDIxLCAxNTgsIDg4LCAyMSwgMTYxLCA4OCwgMjEsIAotICAgIDE5MCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMTk5LCA4OCwgMjEsIDE5NiwgODgsIDIxLCAyMDEsIDg4LCA1NCwgMjE2LCAKLSAgICAyNDgsIDg4LCA1NCwgMjQ1LCAxNzUsIDg4LCA1NCwgMjE1LCA3NiwgODgsIDU0LCAyMTYsIDE2NSwgODgsIDU0LCAyNDQsIAotICAgIDEzLCA4OCwgNTQsIDI0NCwgMTI2LCA4OCwgNTQsIDIxOSwgMTIxLCA4OCwgNTQsIDIyMCwgMTIxLCA4OCwgNTQsIDI0NSwgCi0gICAgMTk4LCA4OCwgNTQsIDIyOCwgMjAyLCA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIAotICAgIDExMywgMjQzLCAyMzYsIDIxOCwgMTMxLCAyMSwgMTM0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyNDQsIDE5LCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDIxLCAyNDQsIDg5LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyMTksIDEyNywgMjQzLCAyMzYsIAotICAgIDIxOCwgMTMxLCAyMSwgMjIwLCAxMjQsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjEsIDI0NSwgMjAxLCAyNDMsIDIzNiwgMjE4LCAKLSAgICAxMzEsIDIxLCAyMjgsIDIwNSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjE2LCAyNDksIDI0MywgMjM2LCAyMTgsIDEzMSwgCi0gICAgNTQsIDI0NSwgMTc2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTUsIDc3LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAKLSAgICAyMTYsIDE2NiwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ0LCAxNCwgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ0LCAKLSAgICAxMjcsIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIxOSwgMTIyLCAyNDMsIDIzNiwgMjE4LCAxMzEsIDU0LCAyMjAsIDEyMiwgCi0gICAgMjQzLCAyMzYsIDIxOCwgMTMxLCA1NCwgMjQ1LCAxOTksIDI0MywgMjM2LCAyMTgsIDEzMSwgNTQsIDIyOCwgMjAzLCAyNDMsIAotICAgIDIzNiwgMjE4LCAxMzEsIDU0LCAyMTUsIDc0LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDg4LCA3LCA0LCAxLCA2MSwgODgsIDcsIAotICAgIDQsIDEsIDI1MywgMTY2LCA4OCwgNywgNCwgMSwgMjUxLCA3NCwgODgsIDcsIDQsIDEsIDI0OSwgNjgsIDg4LCA3LCA0LCAxLCAKLSAgICA3NiwgODgsIDcsIDQsIDEsIDI0NSwgMTQsIDg4LCA3LCA0LCAxLCAyNDMsIDIwOSwgODgsIDcsIDQsIDEsIDI0MiwgNjcsIAotICAgIDg4LCA3LCA0LCAxLCA3NCwgODgsIDcsIDQsIDEsIDIzNSwgMTUwLCA4OCwgNywgNCwgMSwgMjM1LCAyOSwgODgsIDcsIDQsIAotICAgIDEsIDE1NiwgODgsIDcsIDQsIDEsIDE5NCwgODgsIDcsIDQsIDEsIDIzMCwgMzAsIDg4LCA3LCA0LCAxLCA3OCwgODgsIDcsIAotICAgIDQsIDEsIDIyNiwgMTA5LCA4OCwgNywgNCwgMSwgMjI0LCA5OSwgODgsIDcsIDQsIDEsIDE1MywgODgsIDcsIDQsIDEsIDIyMiwgCi0gICAgOTMsIDg4LCA3LCA0LCAxLCAyMTcsIDE1MywgODgsIDcsIDQsIDEsIDY5LCA4OCwgNywgNCwgMSwgMjE0LCAxMDUsIDg4LCA3LCAKLSAgICA0LCAxLCAyMTIsIDk4LCA4OCwgNywgNCwgMSwgMjExLCAxNzgsIDg4LCA3LCA0LCAxLCAyMTEsIDExNywgODgsIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAzNywgNywgNiwgMSwgNjEsIDM3LCA3LCA2LCAxLCAyNTMsIDE2NiwgMzcsIDcsIDYsIDEsIDI1MSwgNzQsIAotICAgIDM3LCA3LCA2LCAxLCAyNDksIDY4LCAzNywgNywgNiwgMSwgNzYsIDM3LCA3LCA2LCAxLCAyNDUsIDE0LCAzNywgNywgNiwgMSwgCi0gICAgMjQzLCAyMDksIDM3LCA3LCA2LCAxLCAyNDIsIDY3LCAzNywgNywgNiwgMSwgNzQsIDM3LCA3LCA2LCAxLCAyMzUsIDE1MCwgCi0gICAgMzcsIDcsIDYsIDEsIDIzNSwgMjksIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTQsIDM3LCA3LCA2LCAxLCAKLSAgICAyMzAsIDMwLCAzNywgNywgNiwgMSwgNzgsIDM3LCA3LCA2LCAxLCAyMjYsIDEwOSwgMzcsIDcsIDYsIDEsIDIyNCwgOTksIAotICAgIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCA2LCAxLCAyMjIsIDkzLCAzNywgNywgNiwgMSwgMjE3LCAxNTMsIDM3LCA3LCA2LCAKLSAgICAxLCA2OSwgMzcsIDcsIDYsIDEsIDIxNCwgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgCi0gICAgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgCi0gICAgNywgNCwgMSwgMjUzLCAxNjYsIDM3LCA3LCA0LCAxLCAyNTEsIDc0LCAzNywgNywgNCwgMSwgMjQ5LCA2OCwgMzcsIDcsIDQsIAotICAgIDEsIDc2LCAzNywgNywgNCwgMSwgMjQ1LCAxNCwgMzcsIDcsIDQsIDEsIDI0MywgMjA5LCAzNywgNywgNCwgMSwgMjQyLCA2NywgCi0gICAgMzcsIDcsIDQsIDEsIDc0LCAzNywgNywgNCwgMSwgMjM1LCAxNTAsIDM3LCA3LCA0LCAxLCAyMzUsIDI5LCAzNywgNywgNCwgCi0gICAgMSwgMTU2LCAzNywgNywgNCwgMSwgMTk0LCAzNywgNywgNCwgMSwgMjMwLCAzMCwgMzcsIDcsIDQsIDEsIDc4LCAzNywgNywgCi0gICAgNCwgMSwgMjI2LCAxMDksIDM3LCA3LCA0LCAxLCAyMjQsIDk5LCAzNywgNywgNCwgMSwgMTUzLCAzNywgNywgNCwgMSwgMjIyLCAKLSAgICA5MywgMzcsIDcsIDQsIDEsIDIxNywgMTUzLCAzNywgNywgNCwgMSwgNjksIDM3LCA3LCA0LCAxLCAyMTQsIDEwNSwgMzcsIDcsIAotICAgIDQsIDEsIDIxMiwgOTgsIDM3LCA3LCA0LCAxLCAyMTEsIDE3OCwgMzcsIDcsIDQsIDEsIDIxMSwgMTE3LCAzNywgNywgNCwgMSwgCi0gICAgMjEwLCAxNTksIDM3LCAyMSwgMjEwLCA4NiwgMTUyLCAzNywgNTQsIDI0NSwgMTc1LCAxNTIsIDM3LCA1NCwgMjE1LCA3NiwgCi0gICAgMTUyLCAzNywgNTQsIDIxNiwgMTY1LCAxNTIsIDM3LCA1NCwgMjQ0LCAxMywgMTUyLCAzNywgNTQsIDI0NCwgMTI2LCAxNTIsIAotICAgIDM3LCA1NCwgMjE5LCAxMjEsIDE1MiwgMzcsIDU0LCAyMjAsIDEyMSwgMTUyLCAzNywgNTQsIDI0NSwgMTk4LCAxNTIsIDM3LCAKLSAgICA1NCwgMjI4LCAyMDIsIDE1MiwgMzcsIDU0LCAyMTUsIDczLCA1MiwgMzcsIDIxLCAxMTEsIDUyLCAzNywgMjEsIDEwNSwgNTIsIAotICAgIDM3LCAyMSwgMTU4LCA1MiwgMzcsIDIxLCAxNjEsIDUyLCAzNywgMjEsIDE5MCwgNTIsIDM3LCAyMSwgMTk1LCA1MiwgMzcsIAotICAgIDIxLCAxOTksIDUyLCAzNywgMjEsIDE5NiwgNTIsIDM3LCAyMSwgMjAxLCA1MiwgMzcsIDU0LCAyMTYsIDI0OCwgMTUyLCAzNywgCi0gICAgMjEsIDIxMCwgODYsIDkzLCA5OSwgMTkzLCAyNDEsIDUxLCA5MywgOTksIDExNCwgMjQxLCA1MSwgOTMsIDk5LCAxOTMsIAotICAgIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjEzLCAyMzksIDkzLCA5OSwgMTkzLCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDI0MSwgCi0gICAgNTEsIDkzLCA5OSwgMTE0LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTkzLCAyMTUsIDIxMiwgMjQ4LCAKLSAgICAxNjUsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjE1LCAyMTIsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAxOTMsIAotICAgIDIyNCwgMjcsIDI0OCwgMTY1LCAyNDEsIDUxLCA5MywgOTksIDExNCwgMjI0LCAyNywgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCAKLSAgICA5OSwgMTkzLCAyMjQsIDI3LCAyNDgsIDE2NSwgMjEzLCAyMzksIDkzLCA5OSwgMTE0LCAyMjQsIDI3LCAyNDgsIDE2NSwgCi0gICAgMjEzLCAyMzksIDkzLCA5OSwgMTkzLCAxMjQsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQ0LCAyNDEsIAotICAgIDIyOCwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIyMiwgMjU0LCAKLSAgICA5MywgOTksIDE5MywgMTI0LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDQzLCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCAxMjQsIDExNCwgMjIsIDQzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgCi0gICAgMTkzLCAxMjAsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxMjAsIDE5MywgMjIsIDQ0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIAotICAgIDExNCwgMjIsIDQ0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMTIwLCAKLSAgICAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxMjAsIDE5MywgMjIsIDQzLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIAotICAgIDQzLCAyMzIsIDIzNiwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCA2NywgMjIsIDIyMiwgCi0gICAgMjU0LCA5MywgOTksIDY3LCAxOTMsIDIyLCA0NCwgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMTI0LCAKLSAgICAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDY3LCAxMTQsIDIyLCAKLSAgICA0NCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCA0NCwgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMjAsIDE5MywgCi0gICAgMjIsIDQ0LCAxMjQsIDI0MSwgMjI4LCA5MywgOTksIDExNCwgNjcsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxOTMsIDY3LCAKLSAgICAyMiwgMjMzLCA1MiwgOTMsIDk5LCA2NywgMTkzLCAyMiwgNDMsIDI0MSwgMjI4LCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDMsIAotICAgIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCA0MywgMTIwLCAyMzIsIDIzNiwgOTMsIDk5LCA2NywgMTE0LCAKLSAgICAyMiwgNDMsIDIzMiwgMjM2LCA5MywgOTksIDEyNCwgMTkzLCAyMiwgNDMsIDEyMCwgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAKLSAgICAxOTMsIDIyLCA0MywgMTI0LCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjMzLCA1MiwgOTMsIDk5LCAxOTMsIAotICAgIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjM2LCA5MywgOTksIDQ0LCAKLSAgICAxMTQsIDIyLCA0MywgMTI0LCAyMzIsIDIzNiwgOTMsIDk5LCAxMjQsIDE5MywgMjIsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgCi0gICAgMTI0LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjM2LCA5MywgOTksIDQ0LCAxOTMsIDIyLCA0MywgMTI0LCAyNDEsIDIyOCwgOTMsIAotICAgIDk5LCA0MywgMTkzLCAyMiwgNDQsIDEyNCwgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyNDEsIDUxLCA5MywgCi0gICAgOTksIDE5MywgMTIwLCAyMiwgMjQxLCA1MSwgOTMsIDk5LCA0MywgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCAKLSAgICA5OSwgNDQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjM2LCA5MywgOTksIDEyMCwgMTkzLCAyMiwgMjAzLCAyNDEsIDIyOCwgCi0gICAgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCAxMjAsIDI0MSwgCi0gICAgMjI4LCA5MywgOTksIDQzLCAxOTMsIDIyLCA0NCwgMTIwLCAyNDEsIDIyOCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDI0MSwgCi0gICAgNTEsIDkzLCA5OSwgMTkzLCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCA2NywgMjMyLCAyMzYsIAotICAgIDkzLCA5OSwgNDQsIDExNCwgMjIsIDQzLCA2NywgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDE5MywgMjIsIDIwMywgMjQxLCAKLSAgICAyMjgsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAxMjQsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAxMjAsIAotICAgIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDIwMywgMjMyLCAyMzYsIDkzLCA5OSwgNDMsIDEyMCwgMTE0LCAKLSAgICAyMiwgNDQsIDEyNCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDEyMCwgMTE0LCAyMiwgNDMsIDEyNCwgMjMyLCAyMzYsIDkzLCAKLSAgICA5OSwgNDMsIDEyNCwgMTE0LCAyMiwgNDQsIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgNDQsIDEyNCwgMTE0LCAyMiwgNDMsIAotICAgIDEyMCwgMjMyLCAyMzYsIDkzLCA5OSwgMTI0LCAxOTMsIDIyLCAxMjAsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgMTIwLCAKLSAgICAxOTMsIDIyLCAxMjQsIDIwMywgMjQxLCAyMjgsIDkzLCA5OSwgNDQsIDE5MywgMjIsIDQzLCA2NywgMjQxLCAyMjgsIDkzLCAKLSAgICA5OSwgNDMsIDE5MywgMjIsIDQ0LCA2NywgMjQxLCAyMjgsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTkzLCA1MiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgMTE0LCA1MiwgMjQ4LCAxNjUsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTkzLCA1MiwgMjQ4LCAxNjUsIDIxMywgMjM5LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTY1LCAyMTMsIDIzOSwgOTMsIDk5LCAKLSAgICA1MiwgMjQxLCA1MSwgOTMsIDk5LCA1MiwgMjEzLCAyMzksIDkzLCA5OSwgMTI0LCAyMTksIDE1NywgMjIsIDQ0LCAyNDYsIAotICAgIDEyMSwgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyMjIsIDI1NCwgCi0gICAgOTMsIDk5LCAxMjQsIDIxOSwgMTU3LCAyMiwgNDMsIDI0NiwgMTIxLCA5MywgOTksIDEyNCwgNTIsIDIyLCA0MywgMjE5LCAKLSAgICAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTIwLCAyMTksIDE1NywgMjIsIDQ0LCAyNDYsIAotICAgIDEyMSwgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDQsIDIxOSwgMTU2LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyMjIsIDI1NCwgCi0gICAgOTMsIDk5LCAxMjAsIDIxOSwgMTU3LCAyMiwgNDMsIDI0NiwgMTIxLCA5MywgOTksIDEyMCwgNTIsIDIyLCA0MywgMjE5LCAKLSAgICAxNTYsIDkzLCA5OSwgNTIsIDEyMCwgMjIsIDIzMywgNTIsIDkzLCA5OSwgNjcsIDIxOSwgMTU3LCAyMiwgNDQsIDI0NiwgCi0gICAgMTIxLCA5MywgOTksIDY3LCA1MiwgMjIsIDQ0LCAyMTksIDE1NiwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMjIsIDI1NCwgOTMsIAotICAgIDk5LCA2NywgMjE5LCAxNTcsIDIyLCA0MywgMjQ2LCAxMjEsIDkzLCA5OSwgNjcsIDUyLCAyMiwgNDMsIDIxOSwgMTU2LCA5MywgCi0gICAgOTksIDUyLCA2NywgMjIsIDIzMywgNTIsIDkzLCA5OSwgMTI0LCAyMTksIDE1NywgMjIsIDIwMywgMjQ2LCAxMjEsIDkzLCAKLSAgICA5OSwgMTI0LCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCA5OSwgNTIsIDEyNCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgCi0gICAgMTIwLCAyMTksIDE1NywgMjIsIDIwMywgMjQ2LCAxMjEsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIDIwMywgMjE5LCAxNTYsIDkzLCAKLSAgICA5OSwgNTIsIDEyMCwgMjIsIDI0MSwgNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU3LCAyMiwgMjAzLCAyNDYsIDEyMSwgOTMsIAotICAgIDk5LCA2NywgNTIsIDIyLCAyMDMsIDIxOSwgMTU2LCA5MywgOTksIDUyLCA2NywgMjIsIDI0MSwgNTEsIDkzLCA5OSwgMTkzLCAKLSAgICAyNTQsIDM0LCAxMjQsIDIyLCAyMjIsIDI1NCwgOTMsIDk5LCAxOTMsIDI1NCwgMzQsIDEyNCwgMjIsIDIzMywgNTIsIDkzLCAKLSAgICA5OSwgMTkzLCAyNTQsIDM0LCAxMjAsIDIyLCAyMzMsIDUyLCA5MywgOTksIDE5MywgMjU0LCAzNCwgMTIwLCAyMiwgMjIyLCAKLSAgICAyNTQsIDkzLCA5OSwgMTkzLCAyNDgsIDcsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MywgMjMyLCAxMTQsIDIzMywgNTIsIDkzLCAKLSAgICA5OSwgMTkzLCAyNDgsIDcsIDIxNCwgMTYwLCA0MywgMjE2LCA0MywgMjMyLCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgCi0gICAgMjQ4LCA3LCAyNDksIDEzOCwgOTMsIDk5LCAxOTMsIDIzMywgNTIsIDkzLCA5OSwgMTkzLCAyMTQsIDE2MywgOTMsIDk5LCAKLSAgICAxOTMsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMjQ2LCAxMTQsIDkzLCA5OSwgMTE0LCAyMzMsIDUyLCA5MywgOTksIDExNCwgCi0gICAgMjE0LCAxNjMsIDkzLCA5OSwgMTE0LCAyMjIsIDI1NCwgOTMsIDk5LCAxMTQsIDI0NiwgMTE0LCA5MywgOTksIDE5MywgNDMsIAotICAgIDIyLCAxMTQsIDIyMiwgMjU0LCA5MywgOTksIDE5MywgMTIwLCAyMiwgMTE0LCAyNDYsIDExNCwgOTMsIDk5LCAxMTQsIDQzLCAKLSAgICAyMiwgMTkzLCAyMjIsIDI1NCwgOTMsIDk5LCAxMTQsIDEyMCwgMjIsIDE5MywgMjQ2LCAxMTQsIDIxNCwgMTYwLCAxNjMsIAotICAgIDI1MSwgMjIxLCAyMzIsIDExNCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDIzMiwgMTE0LCAxMjMsIDIyNCwgMjUsIDI1MSwgCi0gICAgMjIxLCAyMzIsIDExNCwgMTM0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDIzMiwgMTE0LCAxNjMsIDI1MSwgMjIxLCAyMzIsIAotICAgIDExNCwgMjQ0LCA4OSwgMjQ1LCAxOTUsIDI1MSwgMjIxLCAyMzIsIDExNCwgMTM0LCAyMjQsIDIzLCAyNTEsIDIyMSwgMjMyLCAKLSAgICAxMTQsIDIyMCwgMTI0LCAyNDUsIDE5NSwgMjUxLCAyMjEsIDI0MywgMjM2LCAyNTEsIDIyMSwgNDMsIDIyMCwgMTI0LCAyNDUsIAotICAgIDE5NSwgMjUxLCAyMjEsIDQzLCAxMzQsIDIyNCwgMjMsIDI1MSwgMjIxLCA0MywgMjQ0LCA4OSwgMjQ1LCAxOTUsIDI1MSwgCi0gICAgMjIxLCA0MywgMTYzLCAyNTEsIDIyMSwgNDMsIDEzNCwgMjQ1LCAxOTUsIDI1MSwgMjIxLCA0MywgMTIzLCAyMjQsIDI1LCAKLSAgICAyNTEsIDIyMSwgNDMsIDEyMywgMjQ1LCAxOTcsIDI1MSwgMjIxLCA0NCwgMTYzLCAyNTEsIDIyMSwgMTkzLCAyMjAsIDk0LCAKLSAgICAyMzEsIDg3LCAyMjAsIDk0LCAyNDgsIDE3MCwgMjIwLCA5NCwgMjE0LCAxNjAsIDEyMywgMjQ1LCAxOTcsIDI1MSwgMjIxLCAKLSAgICA0NCwgMTIzLCAyNDUsIDE5NywgMjUxLCAyMjEsIDIyNCwgMjksIDIzMiwgMTE0LCAyMzMsIDUyLCAyMjQsIDI5LCAyMzIsIAotICAgIDExNCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCAyMzMsIDUyLCAyMjQsIDI5LCAyMTQsIDE2MCwgNDMsIDIyLCAKLSAgICAyMzIsIDExNCwgNDMsIDIyLCAyMzIsIDExNCwgMjIyLCAyNTQsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIDIzMiwgCi0gICAgMTE0LCAyMjIsIDI1NCwgMjI0LCAyOSwgMjE0LCAxNjAsIDQzLCAyMiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIAotICAgIDIzMywgNTIsIDIyNCwgMjksIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTE0LCAyMjIsIDI1NCwgCi0gICAgMjI0LCAyOSwgMjE0LCAxNjAsIDIyMiwgMjU0LCAyMjQsIDI5LCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDExNCwgMjMzLCAKLSAgICA1MiwgMjI0LCAyOSwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMTQsIDQzLCAyMiwgMjMyLCAxMTQsIDIyMiwgMjU0LCA4NSwgCi0gICAgMjE4LCAyMzYsIDcxLCAyMTgsIDIzNiwgNzEsIDQyLCAyLCAyMjIsIDE4NSwgMjQ5LCAxNjcsIDcxLCA0MiwgMjQ5LCAxOTUsIAotICAgIDg1LCA0LCAyMTgsIDIzNiwgNDIsIDIsIDIwMywgMjQ0LCAxMTMsIDQyLCAyLCA2NywgMjQ0LCAxMTMsIDQyLCAyLCAyMjYsIAotICAgIDE0OCwgMjQ5LCAxMzQsIDI0NCwgMTEzLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMTYsIDQzLCAyMzIsIDExNCwgNDQsIDI0NCwgCi0gICAgMTEzLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyMTYsIDQzLCAyMzIsIDExNCwgNDMsIDI0NCwgMTEzLCA0MiwgMiwgMjQ4LCA3LCAKLSAgICAyNDksIDEzNCwgMjQ0LCAxMTMsIDg1LCA0LCAyMTgsIDIzNiwgNzEsIDQsIDIxOCwgMjM2LCA4NSwgMjIzLCAxMTksIDcxLCAKLSAgICAyMjMsIDExOSwgODUsIDY3LCAyMjMsIDExOSwgNzEsIDY3LCAyMjMsIDExOSwgODUsIDIyNiwgMTAsIDcxLCAyMjYsIDEwLCAKLSAgICA4NSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA3MSwgMjE0LCAxNjIsIDIxNSwgMjI2LCA4NSwgMjE0LCAxNjIsIDQsIDIxNSwgCi0gICAgMjI2LCA3MSwgMjE0LCAxNjIsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNTAsIAotICAgIDIxNSwgMjI2LCA4NSwgMjIyLCAyNTAsIDQsIDIxNSwgMjI2LCA3MSwgMjIyLCAyNTAsIDQsIDIxNSwgMjI2LCA4NSwgMjIyLCAKLSAgICAyNTAsIDIyNSwgMTEsIDcxLCAyMjIsIDI1MCwgMjI1LCAxMSwgODUsIDI0NiwgMTEzLCAyMTUsIDIyNiwgNzEsIDI0NiwgCi0gICAgMTEzLCAyMTUsIDIyNiwgODUsIDI0NiwgMTEzLCA0LCAyMTUsIDIyNiwgNzEsIDI0NiwgMTEzLCA0LCAyMTUsIDIyNiwgODUsIAotICAgIDIzMywgNDgsIDIxNSwgMjI2LCA3MSwgMjMzLCA0OCwgMjE1LCAyMjYsIDg1LCAyMzMsIDQ4LCA0LCAyMTUsIDIyNiwgNzEsIAotICAgIDIzMywgNDgsIDQsIDIxNSwgMjI2LCA4NSwgMjMzLCA0OCwgMjI1LCAxMSwgNzEsIDIzMywgNDgsIDIyNSwgMTEsIDg1LCAKLSAgICAyNDgsIDAsIDcxLCAyNDgsIDAsIDcxLCAyNDgsIDEsIDI0OSwgMTk1LCA4NSwgNCwgMjQ4LCAwLCAyNDQsIDk3LCAyMzIsIAotICAgIDExMCwgNzEsIDI1MCwgNDMsIDI0NiwgMTI2LCAyNTAsIDQzLCAyNTAsIDQ0LCAyLCA2NywgMjQ0LCAxMTMsIDI1MSwgMTE5LCAKLSAgICA4NSwgMjUwLCA0MywgMjUwLCA0NCwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDI1MCwgNDQsIDIsIDQ0LCAxNjMsIDI1MSwgCi0gICAgMjI5LCAyNTAsIDQ0LCAyLCAyMzIsIDExNCwgMTYzLCAyNTEsIDIyOSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDE2MywgMjUxLCAKLSAgICAyMjksIDI1MCwgNDQsIDIsIDIxNCwgMTYwLCA0NCwgMjI0LCAyOSwgMjUxLCAyMjksIDI1MCwgNDQsIDIsIDI1NCwgMTY0LCAKLSAgICAyNTEsIDk2LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjksIDI1MSwgMjI5LCA0MywgMTYzLCA4NSwgMjUwLCA0MywgNDQsIDE2MywgCi0gICAgODUsIDI1MCwgNDMsIDIzNSwgMjAxLCAyNTEsIDEyMSwgMjM1LCAyMDEsIDcxLCAyNTAsIDQzLCAyMTQsIDE2MCwgMTYzLCAKLSAgICAyMzUsIDIwMSwgNzEsIDI1MCwgNDMsIDIzMiwgMTE0LCAxNjMsIDIzNSwgMjAxLCA3MSwgMjUwLCA0MywgMjE0LCAxNjAsIAotICAgIDQzLCAyMjQsIDI5LCAyNTAsIDQxLCAyNTQsIDMzLCAyMTQsIDE2MCwgNDQsIDIyNCwgMjksIDI1MCwgNDEsIDI1NCwgMzMsIAotICAgIDIzMiwgMTE0LCA0NCwgMjI0LCAyOSwgMjUwLCA0MSwgMjU0LCAzMywgMjMyLCAxMTQsIDQzLCAyMjQsIDI5LCAyNTAsIDQxLCAKLSAgICAyNTQsIDMzLCAyMTQsIDE2MCwgMTYzLCAyNTAsIDQzLCAyMzIsIDExNCwgMTYzLCAyNTAsIDQzLCA4NSwgMjMyLCAxMTQsIAotICAgIDQ0LCAyMTUsIDIyNiwgODUsIDIzMiwgMTE0LCA0MywgMjE1LCAyMjYsIDg1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI2LCA4NSwgCi0gICAgMjE0LCAxNjAsIDQ0LCAyMTUsIDIyNiwgNzEsIDI1MSwgMTIxLCA0MiwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDQyLCAyLCAKLSAgICA0NCwgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIDIxNCwgMTYwLCA0MywgMjQ4LCA3LCAxNjMsIDI1MSwgMjI5LCA0MiwgMiwgCi0gICAgMjMyLCAxMTQsIDQ0LCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjQwLCAyMzIsIDIxOSwgCi0gICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgMjQ3LCAxMjgsIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgNDMsIDE2MywgMjUxLCAKLSAgICAyMjksIDIxNCwgMTYyLCAyMTUsIDIyNywgMiwgNDQsIDE2MywgMjUxLCAyMjksIDIzMywgOTEsIDI1MCwgNDMsIDcxLCA0MiwgCi0gICAgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI4LCA3MSwgNDIsIDIsIDIzMiwgMTE0LCA0MywgMjI0LCAyOCwgNzEsIDQyLCAyLCAKLSAgICAyMzIsIDExNCwgNDQsIDIyNCwgMjgsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgCi0gICAgMjE0LCAxNjAsIDQzLCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgMjMyLCAxMTQsIDQzLCAyMjQsIDI4LCA3MSwgMjUwLCAKLSAgICA0NCwgMiwgMjMyLCAxMTQsIDQ0LCAyMjQsIDI4LCA3MSwgMjUwLCA0NCwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI4LCAyMTQsIAotICAgIDE2MCwgNDMsIDIxNSwgMjI2LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI2LCAyMzIsIDExNCwgNDMsIDIxNSwgMjI2LCA3MSwgCi0gICAgMjMxLCA4NywgMjE4LCAyMzYsIDg1LCAyMzEsIDg3LCAyMTgsIDIzNiwgNzEsIDIzMSwgODcsIDQsIDIxOCwgMjM2LCA4NSwgCi0gICAgMjMxLCA4NywgNCwgMjE4LCAyMzYsIDIzMiwgMTE0LCA0NCwgMjE1LCAyMjYsIDg1LCAyMTgsIDM5LCAyLCAyMjMsIDEzNSwgCi0gICAgMjQ5LCAyNTUsIDIxNCwgMTk0LCAyMTksIDYyLCAyNDksIDIzMCwgODUsIDIxOCwgMTU4LCA3MSwgMjE4LCAxNTgsIDIzMiwgCi0gICAgMjM0LCAyMTYsIDEzMywgMjE4LCAzOCwgMjUzLCAyNDIsIDIyOCwgNzYsIDI0OCwgNDYsIDIyOCwgNzYsIDI0OSwgMjAzLCAKLSAgICAyMjYsIDE2NywgODUsIDIxNywgMSwgNzEsIDIxNywgMSwgMjUyLCAxNjQsIDI1MSwgMTcxLCAyNTIsIDE2NCwgOTMsIDIsIAotICAgIDI1MCwgMTM3LCAyNTIsIDE2NCwgOTMsIDIsIDIxMSwgMTc4LCAyMjIsIDAsIDIxNCwgMTk1LCAyLCAyMjMsIDE2MywgMjQ2LCAKLSAgICA5MiwgMjQwLCAyNTAsIDI1MiwgMzAsIDcxLCAyMjAsIDQsIDIyNSwgMTA0LCA4NSwgMjIwLCA0LCAyMjUsIDEwNCwgMjIwLCAKLSAgICA4OSwgMjIzLCA1MiwgMjIyLCAxODksIDI0NCwgNjMsIDI0MSwgMjM1LCAyNTEsIDEyMSwgODUsIDQzLCAyMjUsIDEwLCAyMzUsIAotICAgIDI0OSwgODUsIDQ0LCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDQzLCAyMjUsIDEwLCAyMzUsIDI0OSwgNzEsIDEyMCwgMjI1LCAKLSAgICAxMCwgMjM1LCAyNDksIDcxLCA0NCwgMjI1LCAxMCwgMjM1LCAyNDksIDcxLCAxMjQsIDIyNSwgMTAsIDIzNSwgMjQ5LCAyMTksIAotICAgIDEwMywgMjIsIDI0OSwgMTM3LCAyNTAsIDIyNywgNTAsIDIyMywgMTc1LCA1MCwgMjUxLCAyNDcsIDUwLCAyNTEsIDMzLCAKLSAgICAyNTQsIDExMCwgMjI2LCAxNDksIDI0OSwgMTM4LCAyNTAsIDExOSwgMjIzLCA0MCwgMjQ5LCAxMzksIDY0LCAyMzIsIDEyNCwgCi0gICAgMjQ5LCAxMzksIDY0LCAyMzUsIDEyMiwgMjE4LCAxNTksIDIyLCAyNDksIDE0NCwgMjQ0LCAxNzYsIDg3LCAyNTUsIDEsIAotICAgIDIyMCwgOTEsIDI0MiwgMjksIDIyLCAyMTksIDE5MSwgMjI1LCAyMjMsIDg3LCAyMTAsIDI1NCwgMjExLCA2OSwgMjE1LCAKLSAgICAyMTYsIDMxLCAyNDEsIDIzMCwgMjE1LCAyMTYsIDMxLCAyMzMsIDExMywgMjE1LCAyMTYsIDMxLCAyNDQsIDEwNCwgMjE1LCAKLSAgICAyMTYsIDMxLCAyMTYsIDEzNCwgMjE1LCAyMTYsIDMxLCAyMTEsIDIzOSwgMjE1LCAyMTYsIDMxLCAyMTIsIDQwLCAyMTUsIAotICAgIDIxNiwgMzEsIDIzMCwgMTIwLCAyMTUsIDIxNiwgMzEsIDI0NSwgMjMxLCAyMTIsIDEsIDY0LCAyNDgsIDI2LCA3MSwgMjQzLCAKLSAgICAyNDcsIDI0NCwgMTk4LCA3MSwgMjE5LCA3NiwgMjQ0LCAxOTgsIDg1LCAyMTksIDc2LCAyNDQsIDE5OCwgNzEsIDIxOCwgMzksIAotICAgIDIsIDIyMywgMTM1LCAyNDQsIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzMsIDIzMywgODYsIDIyNCwgMjUsIDIzMCwgMTMzLCAKLSAgICAyMzEsIDU5LCAyNDQsIDE0NiwgNTAsIDI0NSwgMjMxLCAyMzEsIDE5NSwgNTAsIDIzNSwgNDQsIDIyMSwgMjIyLCAyMTQsIAotICAgIDE0NSwgMjI5LCA5OCwgMjI1LCAyMywgMjU0LCAyMCwgMjE3LCA0MSwgMjQzLCA1OSwgMjUxLCAxMSwgMjMzLCAyNSwgMjEzLCAKLSAgICAxNTAsIDIzMiwgMjQ0LCAyMjEsIDE5MywgMjIyLCAyMSwgMjUxLCAwLCAyNTQsIDUwLCAyMjUsIDU1LCA3MSwgMjUwLCAxMjUsIAotICAgIDIzNCwgODQsIDcxLCAyNTAsIDEyNSwgMjI0LCAxNywgNzEsIDI1MCwgMTI1LCAyMjIsIDE5NywgNzEsIDI1MCwgMTI1LCAKLSAgICAyNTEsIDIzOSwgNzEsIDI1MCwgMTI1LCAyMzQsIDM2LCA3MSwgMjUwLCAxMjUsIDIyNSwgMjM1LCA4NSwgMjUwLCAxMjUsIAotICAgIDIzNCwgODQsIDg1LCAyNTAsIDEyNSwgMjI0LCAxNywgODUsIDI1MCwgMTI1LCAyMjIsIDE5NywgODUsIDI1MCwgMTI1LCAKLSAgICAyNTEsIDIzOSwgODUsIDI1MCwgMTI1LCAyMzQsIDM2LCA4NSwgMjUwLCAxMjUsIDIyNSwgMjM1LCA4NSwgMjE5LCAxOCwgCi0gICAgMjE4LCA1MSwgNzEsIDI0MSwgMjM1LCAyMTgsIDUxLCA3MSwgMjQ4LCAxLCAyMTgsIDUxLCA4NSwgMjQ5LCAyNTMsIDIxOCwgCi0gICAgNTEsIDcxLCAyMTksIDE4LCAyMTgsIDUxLCA4NSwgMjQxLCAyMzUsIDIxOCwgNTEsIDg1LCAyNDgsIDEsIDIxOCwgNTEsIDcxLCAKLSAgICAyNDksIDI1MywgMjE4LCA1MSwgMjQwLCAyNTAsIDIxOCwgMjQwLCAyMjQsIDI1LCAyMjgsIDUyLCAyNDUsIDE5NywgMjI4LCAKLSAgICA1MiwgMjUyLCA4MSwgMjQ1LCAxOTcsIDIyOCwgNDcsIDI1MiwgODEsIDIxOSwgMTIwLCAyMjgsIDQ3LCAyMzAsIDYyLCAyNDQsIAotICAgIDc0LCA1MCwgMjMwLCA2MiwgMjI5LCAxOTMsIDUwLCAyMzAsIDYyLCAyMjAsIDc4LCA1MCwgMjEyLCA5LCAxODMsIDI0OSwgCi0gICAgMTM4LCAyNDUsIDIyOCwgMTgzLCAyNDksIDEzOCwgMjE0LCAxNzEsIDIyMywgMTE1LCA4NywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0OCwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0NywgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0NiwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0NSwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0NCwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjE1LCA0MywgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgCi0gICAgMjE1LCA0MiwgMjI1LCAzNywgMjIzLCAxMTUsIDE2LCAzMSwgMjQzLCA1NywgMjMxLCAxNDMsIDg1LCAyMTQsIDE3MSwgMjIzLCAKLSAgICAxMTUsIDg3LCAyMjMsIDExNiwgMjI2LCAyNCwgODcsIDIyNiwgMCwgMjI2LCAyNCwgODcsIDIyNSwgMTc3LCAyMjYsIDI0LCAKLSAgICA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0OSwgMjQ0LCAxOTcsIDI0NywgMjQ5LCAyNDQsIDE5NiwgMjQ3LCAyNDksIDI0NCwgCi0gICAgMTk1LCAyNDcsIDI0OSwgMjQ0LCAxOTQsIDI0NywgMjQ5LCAyNDQsIDE5MywgMjQ3LCAyNDksIDI0NCwgMTkyLCA3MSwgMjUwLCAKLSAgICA0NCwgMiwgNTksIDIyMiwgMjU0LCA3MSwgMjUwLCA0NCwgMiwgMTEzLCAyNDcsIDEyNiwgODUsIDI1MCwgNDQsIDIsIDcxLCAKLSAgICA1OSwgMjIyLCAyNTQsIDg1LCAyNTAsIDQ0LCAyLCAxMTMsIDcxLCAyNDcsIDEyNiwgMjMwLCAxNDcsIDMxLCAyMTEsIDY5LCAKLSAgICAyMzAsIDE0NywgMzEsIDIxMCwgMjUzLCAyNDcsIDIzMiwgMzEsIDI0MiwgMTM4LCAyMTEsIDY5LCAyNDcsIDIzMiwgMzEsIAotICAgIDIzMywgMTksIDIxMCwgMjUzLCAyNDcsIDIzMiwgMzEsIDIzMywgMTksIDIxMSwgNjksIDI0NywgMjMyLCAzMSwgMjQyLCAKLSAgICAxMzgsIDIxMCwgMjUzLCA3MSwgMjQ0LCA4MSwgODUsIDI0NCwgODEsIDI0MiwgMjksIDIyLCAyMjUsIDEwNywgMjU0LCAxMjgsIAotICAgIDI0OSwgMTM2LCAyMTcsIDIzNiwgMjE4LCAxNjYsIDY0LCAyNTQsIDIzNSwgMjIxLCAyMDgsIDI1NCwgMTc4LCAyNDQsIDU5LCAKLSAgICAyNDMsIDY3LCAyMTgsIDE2NiwgNjQsIDI0MSwgMjA5LCAyNTMsIDIwNywgODcsIDI0NCwgNzAsIDIyNiwgMTMwLCA3MSwgCi0gICAgMjE4LCAxNTgsIDEzNCwgMjMyLCAyMTQsIDI0OSwgMTgzLCAyMjIsIDI1NCwgMTM0LCAyMzIsIDIxNCwgMjQ5LCAxODMsIAotICAgIDIzMywgNTIsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgMTMwLCA1MCwgMjQ2LCAxMTgsIDI0NCwgMTQ2LCA1MCwgMjQ2LCAKLSAgICAxMTgsIDIzMSwgMTk1LCA1MCwgMjM1LCAyMTAsIDI0NCwgMTQ2LCAyMiwgMjMxLCAxOTUsIDUwLCAyMzEsIDE5NSwgMjIsIAotICAgIDI0NCwgMTQ2LCA1MCwgMjMxLCAxOTUsIDIsIDIxOCwgMTA1LCA1MCwgMjMxLCAxOTUsIDIsIDIxOCwgMTA1LCAyMiwgMjMxLCAKLSAgICAxOTUsIDIyLCAyNDQsIDE0NiwgNTAsIDY3LCAyMzEsIDE5NSwgMiwgMjE4LCAxMDUsIDUwLCAyMDMsIDIzMSwgMTk1LCAyLCAKLSAgICAyMTgsIDEwNSwgNTAsIDIzMSwgODcsIDcxLCAyNTAsIDQzLCAyMzEsIDg3LCA4NSwgMjUwLCA0MywgMjMxLCA4NywgNCwgNzEsIAotICAgIDI1MCwgNDMsIDIzMSwgMTU4LCA4NywgMjQ3LCAxNzUsIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTUsIDg3LCAyNDksIDIzOSwgCi0gICAgMjQzLCAyMzEsIDIxNCwgMTQxLCAyMjksIDkzLCAyNTAsIDE2OSwgMjI2LCA2NSwgMjM1LCA1MCwgMjEzLCAxODUsIDI1MCwgCi0gICAgMTAxLCA4NSwgMjMwLCAxMzQsIDIzMiwgMjMxLCAyMjAsIDExNCwgMjIwLCAxNDksIDIyNCwgOCwgMjIwLCAxMzIsIDIxOSwgCi0gICAgNTcsIDI1MiwgMTY3LCAyNTIsIDEzNCwgOTIsIDIzNCwgMTQ0LCA3MSwgMjQ2LCAxMDEsIDIzMSwgMTkwLCA3MSwgMjQ2LCAKLSAgICAxMDEsIDIzNCwgODQsIDg1LCAyNDYsIDEwMSwgMjMxLCAxOTAsIDg1LCAyNDYsIDEwMSwgMjM0LCA4NCwgMjE5LCA2MywgCi0gICAgMjExLCAyMzAsIDIxOSwgNjYsIDIxOCwgMzksIDI1MiwgNTksIDI0OSwgMjU1LCAyMjMsIDE2MiwgODUsIDIxOSwgNjIsIAotICAgIDIxNiwgMTM1LCAyNTAsIDAsIDIyLCAyMjMsIDE2MiwgMjE1LCA5NCwgNzEsIDIyMCwgNCwgMjI1LCAxMDQsIDIxNSwgOTQsIAotICAgIDg1LCAyMjAsIDQsIDIyNSwgMTA0LCA3MSwgMjQ4LCAxLCAyMzYsIDcsIDIxOCwgMjM2LCAyNDksIDEzMywgMjMzLCA5NywgCi0gICAgMjQ3LCAyMDEsIDI1MCwgMjUyLCAyMjYsIDE3MCwgMjI1LCAxMDcsIDI1MCwgMjUzLCAyMTksIDkwLCAyNDEsIDIxOSwgMiwgCi0gICAgNzEsIDI0OSwgMTM4LCAzNywgMjQ5LCAxMzMsIDIzMywgOTcsIDI1MCwgMTYxLCAyMjgsIDgwLCAyNDUsIDEzMiwgMjU0LCAKLSAgICAxNDksIDIyNiwgMTk1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIAotICAgIDcxLCAyMTUsIDU1LCA0MywgMjEyLCAyNiwgMjE1LCAyNTIsIDg1LCA0MywgMjMzLCA5OCwgMjMxLCA1OCwgNzEsIDQzLCAKLSAgICAyMzMsIDk4LCAyMzEsIDU4LCAyNDYsIDk3LCAyMTksIDg0LCA1MCwgMTE0LCA3MSwgMjQ2LCAxMTMsIDIxNSwgMjI2LCA0MywgCi0gICAgMjUwLCA4LCAyNDUsIDEzMiwgOTIsIDIyMiwgMCwgMjQ0LCAxODMsIDI0OCwgNywgMjM2LCA3LCA3MSwgMjUwLCA0NCwgMjM2LCAKLSAgICA3LCA4NSwgMjE4LCAyMzYsIDg1LCAyMTUsIDE5MywgMjIzLCA2MywgNDMsIDI0NSwgMTMxLCAyMjMsIDYzLCA0MywgMjQ1LCAKLSAgICAxMzAsIDI1MywgMjE5LCAxNiwgMzEsIDIxNCwgMTQ1LCAxMTQsIDI1MCwgNDQsIDIsIDIxOCwgMTA1LCAyMiwgMTEzLCAxNzAsIAotICAgIDQ4LCAyMjUsIDE5MiwgMjIyLCAyNTEsIDIzNSwgMjEyLCAyMjUsIDE5MiwgMjMzLCA0OSwgMjM1LCAyMTIsIDIyNSwgMTkyLCAKLSAgICAyMzUsIDIwMCwgMjI1LCAxOTIsIDg1LCAyNDksIDEzOSwgMjI2LCAyMDEsIDIyMCwgMzEsIDIyMCwgMTksIDIxOSwgMjMxLCAKLSAgICAyNTAsIDY5LCAyNTAsIDIzNCwgMjQxLCAxNjQsIDIxOSwgMTI4LCAyNDMsIDY4LCAyMTEsIDIzMCwgMjQwLCAyMjcsIDI0MywgCi0gICAgNjgsIDIsIDI0MiwgMTksIDIzMSwgMTc4LCAxNiwgMzEsIDIzMiwgMjM1LCAyMzAsIDEyMCwgMjE0LCAxOTUsIDIyNiwgMjAxLCAKLSAgICAyNDIsIDEyOSwgMjQ0LCAyMCwgMjQ0LCA4MiwgMjM2LCA3LCAyNDEsIDY2LCAyNDQsIDEzNywgMjIyLCAxNiwgNDIsIDI0NCwgCi0gICAgMTksIDI0OSwgMTY3LCAyMTksIDEwNiwgMjQwLCAxMTksIDIxOSwgMTA5LCAyMjUsIDE3MSwgMiwgMjUyLCAxNjcsIDIxNiwgCi0gICAgMjQzLCAyMzUsIDEzNywgMjUyLCAxNTQsIDg3LCAyNDEsIDIzOCwgMjQyLCAxNDAsIDg3LCAyNDMsIDIzOSwgMjI0LCAxNDUsIAotICAgIDI0OSwgMTExLCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCA3MSwgMjQ0LCA4MiwgMiwgMjAzLCAyMzAsIDIyOSwgODUsIDIxOCwgCi0gICAgMTA2LCAyMTQsIDE2MCwgMjUxLCAyMjUsIDIyMSwgMTk1LCA4NSwgMjIxLCAxOTUsIDIzMiwgMTE0LCAyNTEsIDIyNSwgMjIxLCAKLSAgICAxOTUsIDcxLCAyMjEsIDE5NSwgNzEsIDExNCwgMjUwLCAxMzgsIDc5LCAyMTcsIDIsIDIzMiwgMTYwLCA1MCwgMjE3LCA1NCwgCi0gICAgMjQ2LCA5NiwgMjU0LCAyMDAsIDI0NSwgMTI3LCAyMjMsIDE2MCwgMjQ0LCA5MywgMjIzLCAxNjAsIDI0MiwgMjIsIDIxMywgCi0gICAgMTc0LCAyNDIsIDIyLCAyMTEsIDE5OCwgMjQyLCAyMiwgMjMyLCAxMTQsIDQ0LCAyMjUsIDIwMSwgMjI1LCAyMDEsIDIxNCwgCi0gICAgMTYwLCA0NCwgMjI1LCAyMDEsIDcxLCAyMjgsIDIzNSwgODUsIDIyOCwgMjM1LCAyNTAsIDEzOCwgNzksIDExNCwgMjUwLCAKLSAgICAxMzgsIDc5LCAyMzAsIDg5LCAyMTEsIDE3OCwgMTE0LCAyMzAsIDg5LCAyMTEsIDE3OCwgMjUyLCAxNjQsIDIxMSwgMTc4LCAKLSAgICAxMTQsIDI1MiwgMTY0LCAyMTEsIDE3OCwgMjI2LCAxMzAsIDI2LCAyNDksIDEzOCwgMTE0LCAyNiwgMjQ5LCAxMzgsIDIwNCwgCi0gICAgMjUwLCAxODMsIDI0OSwgMTM4LCAxMTQsIDIwNCwgMjUwLCAxODMsIDI0OSwgMTM4LCA3LCAyNDksIDEzOCwgMjIwLCA5MywgCi0gICAgNzEsIDcsIDI0OSwgMTM4LCAyMjYsIDEzMCwgNywgMjQ5LCAxMzgsIDIzMSwgMTkyLCAyNDksIDEzOCwgMjE4LCAxNTksIDY0LCAKLSAgICAyNDgsIDE1NywgMjQ0LCAxOSwgMjE3LCAxNiwgMjUzLCAyMjQsIDI0NCwgMTksIDI1MiwgMTY1LCAyNTMsIDIyNCwgMTE0LCAKLSAgICAyNDQsIDE5LCAyNTIsIDE2NSwgMjUzLCAyMjQsIDI0NCwgMTksIDI0OSwgMjUxLCAyNTMsIDIyNCwgODUsIDI0NCwgMTksIAotICAgIDIyNSwgMTIsIDIxOCwgMTU4LCA3MSwgMjQ0LCAxOSwgMjI1LCAxMiwgMjE4LCAxNTgsIDIxOSwgMTMsIDIxOCwgMTEzLCAKLSAgICAyMjYsIDEzMCwgNzEsIDIxOCwgMTU4LCAzNywgNzEsIDIxOCwgMTU4LCAyMDQsIDI1MCwgMTgzLCA4NSwgMjE4LCAxNTgsIAotICAgIDg1LCAyNTAsIDE4MywgNzEsIDIxOCwgMTU4LCAyMjYsIDEzMCwgODUsIDIxOCwgMTU4LCAxMTQsIDIyNiwgMTMwLCA4NSwgCi0gICAgMjE4LCAxNTgsIDIyNSwgNjMsIDIxOCwgMTU4LCAyMjAsIDkzLCA3MSwgMjE4LCAxNTgsIDExNCwgMjUzLCAyMjQsIDIwNCwgCi0gICAgMjUwLCAxODMsIDI1MywgMjI0LCAyNDUsIDIwMSwgMjE4LCAyNDYsIDI1MywgMjI0LCAyNDUsIDIwMSwgMjI1LCAxMiwgODUsIAotICAgIDIxOCwgMTU4LCAyNDUsIDIwMSwgMjI1LCAxMiwgMjI1LCA2MywgMjE4LCAxNTgsIDIxOSwgMTI3LCAyMjUsIDEyLCA4NSwgCi0gICAgMjE4LCAxNTgsIDI0NSwgMjAxLCAyMjUsIDEyLCAyMjMsIDExNywgODUsIDIxOCwgMTU4LCAxMTQsIDI0NSwgMjAxLCAyMjUsIAotICAgIDEyLCAyMjMsIDExNywgODUsIDIxOCwgMTU4LCAyMTUsIDc3LCAyMjUsIDEyLCA4NSwgMjE4LCAxNTgsIDIxOSwgMTIyLCAKLSAgICAyMjUsIDEyLCAyNTMsIDIyNCwgMjE3LCAxNiwgMjUzLCAyMjQsIDIwNCwgMjUwLCAxODMsIDIxNywgMTYsIDI1MywgMjI0LCAKLSAgICAxMTQsIDIxNywgMTYsIDI1MywgMjI0LCAyMTksIDEyNywgMjI1LCAxNjAsIDg1LCAyMiwgNzEsIDI0NCwgNjIsIDg1LCAyNDQsIAotICAgIDYyLCA3MSwgMjQ0LCA2MiwgMjQ1LCAyMDEsIDIyNSwgMTYwLCAyMjYsIDEzMCwgODUsIDI0NCwgNjIsIDM3LCAyMDQsIDI1MCwgCi0gICAgMTgzLCAyNDUsIDIwMSwgMjI1LCAxMiwgMjE4LCAxNTgsIDExNCwgMjE3LCAxNiwgMjI1LCA2MywgMjUzLCAyMjQsIDIxOSwgCi0gICAgNjQsIDIxNiwgMTA2LCAyMTUsIDIxOSwgMjE5LCA2NCwgMTE0LCAyNTAsIDEyMiwgMjE5LCA2NCwgMjE5LCAxNSwgMTE0LCAKLSAgICAyMTksIDE1LCAyNTIsIDE2NSwgMjUzLCAyMjQsIDI0NSwgMjAxLCAyMTcsIDE2LCAyMjQsIDE3NCwgMjUzLCAyMjQsIDExNCwgCi0gICAgMjQ1LCAyMDEsIDIxNywgMTYsIDIyNCwgMTc0LCAyNTMsIDIyNCwgMjQ5LCAxMzksIDc5LCAyMjAsIDkzLCA3MSwgMjUwLCAKLSAgICA0MywgMTUyLCA5MiwgMjQ5LCAxMzksIDc5LCAyMzIsIDExNCwgNDQsIDI0NiwgOTQsIDcxLCAyMTgsIDIzNiwgMjE0LCAxNjAsIAotICAgIDQ0LCAyNDYsIDk0LCA3MSwgMjE4LCAyMzYsIDIzMiwgMTE0LCA0NCwgMjIwLCA5MywgNzEsIDIxOCwgMjM2LCAyMTQsIDE2MCwgCi0gICAgNDQsIDIyMCwgOTMsIDcxLCAyMTgsIDIzNiwgODUsIDIyNCwgMTYsIDE2NCwgMjI2LCAxNTEsIDcxLCAyMjQsIDE2LCAxNjQsIAotICAgIDIyNiwgMTUxLCA3MSwgMjQ1LCAzOSwgMTY0LCAyMjYsIDE1MSwgODUsIDI0OCwgMSwgMjMwLCAxODcsIDcxLCAyMTEsIDE3OCwgCi0gICAgMTE0LCAyNDUsIDM5LCAxNjQsIDg3LCAxOTMsIDY3LCAxMzAsIDIzMSwgODcsIDY3LCAxMzAsIDExNCwgNjcsIDEzMCwgMTE0LCAKLSAgICAyMTksIDE1NywgMjE1LCA5NCwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCAyMTksIDE1NywgMjQ5LCAKLSAgICAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCA1MiwgMjE1LCA5NCwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIAotICAgIDE1MSwgMTE0LCA1MiwgMjQ5LCAyMjgsIDIyNCwgMSwgMTY0LCAyMjYsIDE1MSwgMTE0LCAxMjEsIDIxOSwgMTU3LCAyNDksIAotICAgIDIyOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDEyMSwgNTIsIDI0OSwgMjI4LCAyMjQsIDEsIDE2NCwgMjI2LCAKLSAgICAxNTEsIDI0OSwgOTksIDIxOCwgMTQyLCAyMjYsIDE5LCA1LCAyMjYsIDE1MSwgMTE0LCAyNDUsIDM5LCAxNjQsIDIyNiwgCi0gICAgMTUxLCAxMTQsIDI0MSwgMjM1LCAyNDUsIDM5LCAxNjQsIDIyNiwgMTUxLCAxMTQsIDg1LCAyNDEsIDIzNCwgMjIyLCAxODksIAotICAgIDExNCwgODUsIDI0MSwgMjM1LCAyNTEsIDEyMSwgMjQ0LCA2MywgMjQxLCAyMzQsIDIyMiwgMTg5LCAyNDQsIDYzLCAyNDEsIAotICAgIDIzNSwgMjUxLCAxMjEsIDIzMSwgODcsIDQzLCAyMjYsIDgsIDIyNiwgMTUxLCAyMzEsIDg3LCA0NCwgMjI2LCA4LCAyMjYsIAotICAgIDE1MSwgMjMxLCA4NywgMjQ0LCA3MSwgNDMsIDIyNiwgOCwgMjI2LCAxNTEsIDIzMSwgODcsIDI0NCwgNzEsIDQ0LCAyMjYsIAotICAgIDgsIDIyNiwgMTUxLCAyMzEsIDg3LCAyMzMsIDQ4LCAyNTQsIDExOCwgMjUxLCAxNjYsIDIyNiwgMTUxLCAyMzEsIDg3LCAKLSAgICAyMjIsIDI1MCwgMjU0LCAxMTgsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMTE0LCAyMzMsIDQ4LCAyNTQsIDExOCwgMjI0LCAxLCAKLSAgICAxNjQsIDIyNiwgMTUxLCAxMTQsIDIyMiwgMjUwLCAyNTQsIDExOCwgMjI0LCAxLCAxNjQsIDIyNiwgMTUxLCAxMTQsIDIzMywgCi0gICAgNDgsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDExNCwgMjIyLCAyNTAsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMjI2LCAKLSAgICAxNTEsIDE5MywgNDMsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjYsIDIyNiwgMTUxLCAxOTMsIDQ0LCAyMTYsIDcsIDIyMCwgCi0gICAgNTUsIDI1MSwgMTY2LCAyMjYsIDE1MSwgMjMxLCA4NywgNDMsIDI0OSwgMTA3LCAyNTEsIDE2NiwgMjI2LCAxNTEsIDIzMSwgCi0gICAgODcsIDQ0LCAyNDksIDEwNywgMjUxLCAxNjYsIDIyNiwgMTUxLCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIDExMSwgMjQ3LCAKLSAgICAyMTIsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIxMiwgMTUyLCAzNywgMjEsIAotICAgIDE2MSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTAsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMTk1LCAyNDcsIDIxMiwgCi0gICAgMTUyLCAzNywgMjEsIDE5OSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDIxLCAxOTYsIDI0NywgMjEyLCAxNTIsIDM3LCAyMSwgMjAxLCAKLSAgICAyNDcsIDIxMiwgMTUyLCAzNywgNTQsIDIxNiwgMjQ4LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTExLCAyNDcsIDIxMiwgMzcsIAotICAgIDM1LCAyMSwgMTA1LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTU4LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIAotICAgIDIxMiwgMzcsIDM1LCAyMSwgMTkwLCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgCi0gICAgMTk5LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMTk2LCAyNDcsIDIxMiwgMzcsIDM1LCAyMSwgMjAxLCAyNDcsIDIxMiwgMzcsIAotICAgIDM1LCA1NCwgMjE2LCAyNDgsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDExMSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAKLSAgICAyMSwgMTA1LCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxNTgsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgCi0gICAgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTkwLCAyNDcsIDIxMiwgMTUyLCAzNywgMzUsIDIxLCAxOTUsIDI0NywgMjEyLCAKLSAgICAxNTIsIDM3LCAzNSwgMjEsIDE5OSwgMjQ3LCAyMTIsIDE1MiwgMzcsIDM1LCAyMSwgMTk2LCAyNDcsIDIxMiwgMTUyLCAzNywgCi0gICAgMzUsIDIxLCAyMDEsIDI0NywgMjEyLCAxNTIsIDM3LCAzNSwgNTQsIDIxNiwgMjQ4LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzUsIAotICAgIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTg3LCA1MCwgMTE0LCAyNDcsIDE3NywgNTAsIDExNCwgMjE5LCAzMCwgMjQ1LCAKLSAgICAyMjgsIDc1LCAxMTQsIDk3LCA3NSwgMTE0LCAyMjgsIDYxLCAyNDUsIDIyOCwgNzUsIDI0NiwgMTA2LCAyMjUsIDE0LCA5NywgCi0gICAgNzUsIDExNCwgMjIyLCAxODYsIDk3LCA3NSwgMjE1LCAyMjUsIDk3LCA3NSwgMTE0LCAyMTUsIDIyNSwgOTcsIDc1LCAyNDgsIAotICAgIDE2MywgMjE1LCAyMjUsIDk3LCA3NSwgMTE0LCAyNDgsIDE2MywgMjE1LCAyMjUsIDk3LCA3NSwgODUsIDk3LCA3NSwgMjE2LCAKLSAgICAxNDUsIDIxNiwgMTMsIDk3LCAyNTQsIDEsIDIxNiwgMTQ1LCAyNTEsIDE4MSwgOTcsIDI1NCwgMSwgODUsIDk3LCAyNTQsIDEsIAotICAgIDExNCwgODUsIDI0OSwgOTksIDI0NiwgMTEyLCAyMiwgOTcsIDc1LCAxMTQsIDg1LCAyNDksIDk5LCAyMTQsIDE1MywgMjIsIAotICAgIDk3LCA3NSwgMjE4LCAyMzMsIDg1LCA5NywgNzUsIDExNCwgMjQ5LCAyMTQsIDg1LCA5NywgNzUsIDIyMiwgMjQ5LCA3MSwgCi0gICAgOTcsIDc1LCAyMzMsIDQ3LCA3MSwgOTcsIDc1LCAyNTIsIDE5MSwgMjIwLCA5MywgNzEsIDk3LCA3NSwgMjQzLCAyNDksIAotICAgIDIyMCwgOTMsIDcxLCA5NywgNzUsIDExNCwgMjMyLCAxMTQsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAxMTQsIDIxNCwgMTYwLCAKLSAgICAyMjIsIDI0OCwgNzEsIDk3LCA3NSwgMjI4LCA1NCwgMjMyLCAxMTQsIDIyMiwgMjQ4LCA3MSwgOTcsIDc1LCAyNDksIDEwNywgCi0gICAgMjMyLCAxMjksIDIyOCwgNTQsIDIxNCwgMTYwLCAyMjIsIDI0OCwgNzEsIDk3LCA3NSwgMzcsIDExNCwgNzEsIDk3LCA3NSwgCi0gICAgMjExLCAyNTIsIDk3LCA3NSwgMjUxLCAyMjgsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgMjUxLCAyMjgsIDk3LCA3NSwgMjUxLCAKLSAgICAyMjgsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMTE0LCAyNTEsIDIyOCwgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAxMTQsIAotICAgIDI1MSwgMjI4LCA5NywgNzUsIDExNCwgMjUxLCAyMjgsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjE3LCAxOCwgOTcsIDc1LCAKLSAgICAxMTQsIDIxNywgMTcsIDk3LCA3NSwgMjEyLCAxOCwgOTcsIDc1LCAxMTQsIDIxMiwgMTgsIDk3LCA3NSwgMjI2LCAxNzYsIAotICAgIDk3LCA3NSwgNTIsIDI0OSwgMTA3LCAyMzIsIDEyOSwgMTM0LCAyNDcsIDIyMiwgMjU0LCAxMTcsIDcxLCAyMTUsIDIyNywgCi0gICAgMjQ5LCAxOTUsIDQsIDcxLCAyMTUsIDIyNiwgMjI1LCAxNzQsIDIwNCwgMjE4LCA2NCwgMjA0LCAyMTgsIDIyLCA0MywgMjIyLCAKLSAgICA5MiwgMjUyLCAxODEsIDI0OCwgNjgsIDQ0LCAyMjIsIDkyLCAyNTIsIDE4MSwgMjQ4LCA2OCwgMTc3LCAyLCA1OSwgMjM1LCAKLSAgICAyMjIsIDIyMywgNTMsIDIxOSwgNDksIDIyNCwgMjA0LCAyMTgsIDY0LCAyMTgsIDIzLCAyMjQsIDIwNCwgMjE5LCA0OCwgNjcsIAotICAgIDI1MiwgMTQ5LCAyLCAyMDMsIDkxLCAxMSwgMjIyLCAyMzEsIDI0OCwgNiwgMjAwLCAyNDcsIDE3NiwgMTEsIDI0NCwgMTgzLCAKLSAgICAyNDgsIDYsIDkyLCAyMzIsIDE1MiwgMjU0LCAxMjYsIDkyLCAyMzIsIDE1MiwgMjI2LCAxNjIsIDcxLCAyNDgsIDEsIDIsIAotICAgIDI1MCwgMTgxLCAyNDcsIDEyOCwgMjIsIDIsIDI0NywgMTI4LCAyNDUsIDE3OCwgNjQsIDIyNiwgMTc0LCAyMTQsIDE1MiwgCi0gICAgMjMyLCAxMTQsIDQ0LCAyNDksIDE2OSwgMiwgMjQ3LCAxMjgsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjksIDIsIDI0NywgMTI4LCAKLSAgICA0MywgMjI2LCAxMzIsIDIzNSwgNzIsIDQ0LCAyMjYsIDEzMiwgMjM1LCA3MiwgMjQzLCAyMzYsIDIyNiwgMTMyLCAyMzUsIAotICAgIDcyLCAyMzMsIDkxLCAxMjAsIDIxNywgODgsIDIzMywgOTEsIDEyNCwgMjE3LCA4OCwgNDMsIDIyLCA0NCwgNTIsIDIxNSwgCi0gICAgOTMsIDQzLCAyMiwgNDQsIDIxNywgODgsIDQzLCAyMzAsIDkyLCAyMDAsIDQ0LCAyMTcsIDg4LCAyMDAsIDQzLCAyMTcsIDg4LCAKLSAgICAxMjAsIDIxNywgODksIDIsIDI1MCwgNDQsIDQ4LCAyMzIsIDExMSwgMjQ3LCAxODEsIDI1MSwgODYsIDIwMywgMjIyLCAxMzUsIAotICAgIDcxLCAyNDksIDIxMywgMjQ4LCAwLCA3MSwgMjQ5LCAyMTMsIDI0OCwgMSwgMiwgMTQwLCAyMTYsIDExNSwgNzEsIDI0OSwgCi0gICAgMjEzLCAyNDgsIDEsIDIsIDk3LCAyMTYsIDExNSwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE1LCA3MSwgNDIsIDIsIDk3LCAKLSAgICAyMTYsIDExNSwgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExOCwgCi0gICAgMTI3LCAxMSwgNDQsIDI1NCwgMTE4LCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgCi0gICAgMTE4LCAxMjcsIDExLCA0MywgNzEsIDIxNiwgNywgMjIwLCA1NSwgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIAotICAgIDEyNywgMTEsIDQzLCAyNDQsIDcxLCAyMjYsIDcsIDExLCA0NCwgMjQ0LCA3MSwgMjI2LCA3LCAyMTQsIDE1MywgMjI0LCAyNywgCi0gICAgNzUsIDI0NiwgMTEyLCAyMjQsIDI3LCA3NSwgMjU0LCA5NiwgMjQzLCAxMDUsIDI1MCwgNDQsIDc1LCAyNTAsIDEwLCAyNDMsIAotICAgIDEwNSwgMjUwLCA0NCwgNzUsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjUsIDIwMCwgMTQwLCA3NSwgMjAwLCA5NywgNzUsIDIwMCwgCi0gICAgNDMsIDQ0LCA3NSwgMjAwLCAxNDAsIDUyLCA3NSwgMjAwLCA5NywgNTIsIDc1LCAyMDAsIDQzLCA0NCwgNTIsIDc1LCAyMDAsIAotICAgIDE0MCwgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDgwLCAyNDMsIDI1MSwgMTMwLCAyMDAsIDE0MCwgNTIsIDgwLCAKLSAgICAyNDMsIDI1MSwgMTMwLCAyMDAsIDk3LCA1MiwgODAsIDI0MywgMjUxLCAxMzAsIDIwMCwgOTcsIDIxOCwgMjMyLCA3NSwgNDYsIAotICAgIDQ3LCAyNTEsIDIyMywgNDYsIDQ3LCAyNDcsIDEyNSwgNDYsIDQ3LCAyNDYsIDI1MywgNDYsIDQ3LCAyNDcsIDEyNCwgNDYsIAotICAgIDQ3LCAyNDYsIDE4OSwgNDYsIDQ3LCAyNDcsIDYwLCA0NiwgNDcsIDI0NiwgMjUyLCA0NiwgNDcsIDI0NywgMTIzLCA0NiwgCi0gICAgNDcsIDI0NiwgMTU3LCA0NiwgNDcsIDI0NywgMjgsIDQ2LCA0NywgMjQ2LCAyMjAsIDQ2LCA0NywgMjQ3LCA5MSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMjUxLCA0NiwgNDcsIDI0NywgMTIyLCA0NiwgNDcsIAotICAgIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgMjQ3LCA3NSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIDI0NywgMTA2LCA0NiwgNDcsIAotICAgIDI0NiwgMTU2LCA0NiwgNDcsIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAKLSAgICAyNDYsIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMjUwLCA0NiwgNDcsIDI0NywgMTIxLCA0NiwgNDcsIAotICAgIDI0NiwgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgCi0gICAgMTY0LCA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIAotICAgIDE0OCwgNDYsIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNzksIDQ2LCA0NywgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIAotICAgIDE0MCwgNDYsIDQ3LCAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAKLSAgICAxNzEsIDQ2LCA0NywgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIAotICAgIDE1NSwgNDYsIDQ3LCAyNDcsIDI2LCA0NiwgNDcsIDI0NiwgMjE4LCA0NiwgNDcsIDI0NywgODksIDQ2LCA0NywgMjQ2LCAKLSAgICAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIDI0OSwgNDYsIDQ3LCAyNDcsIDEyMCwgNDYsIDQ3LCAyNDYsIAotICAgIDEyOSwgNDYsIDQ3LCAyNDcsIDAsIDQ2LCA0NywgMjQ2LCAxOTIsIDQ2LCA0NywgMjQ3LCA2MywgNDYsIDQ3LCAyNDYsIDE2MCwgCi0gICAgNDYsIDQ3LCAyNDcsIDMxLCA0NiwgNDcsIDI0NiwgMjIzLCA0NiwgNDcsIDI0NywgOTQsIDQ2LCA0NywgMjQ2LCAxNDQsIDQ2LCAKLSAgICA0NywgMjQ3LCAxNSwgNDYsIDQ3LCAyNDYsIDIwNywgNDYsIDQ3LCAyNDcsIDc4LCA0NiwgNDcsIDI0NiwgMTc1LCA0NiwgNDcsIAotICAgIDI0NywgNDYsIDQ2LCA0NywgMjQ2LCAyMzgsIDQ2LCA0NywgMjQ3LCAxMDksIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgCi0gICAgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAKLSAgICAzOCwgNDYsIDQ3LCAyNDYsIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDE1MSwgNDYsIDQ3LCAyNDcsIAotICAgIDIyLCA0NiwgNDcsIDI0NiwgMjE0LCA0NiwgNDcsIDI0NywgODUsIDQ2LCA0NywgMjQ2LCAxODIsIDQ2LCA0NywgMjQ3LCA1MywgCi0gICAgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAyNDcsIDMsIDQ2LCAKLSAgICA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIDM0LCA0NiwgNDcsIAotICAgIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMzksIDQ2LCA0NywgMjQ3LCAxMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMiwgNDYsIDQ3LCAyNDcsIDczLCA0NiwgNDcsIDI0NiwgMTcwLCA0NiwgNDcsIDI0NywgNDEsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzMsIDQ2LCA0NywgMjQ3LCAxMDQsIDQ2LCA0NywgMjQ2LCAxNTQsIDQ2LCA0NywgMjQ3LCAyNSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNywgNDYsIDQ3LCAyNDcsIDg4LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIDI0NywgNTYsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDgsIDQ2LCA0NywgMjQ3LCAxMTksIDQ2LCA0NywgMjQ2LCAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIAotICAgIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIAotICAgIDI0NiwgMTk3LCA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyOCwgNDYsIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIAotICAgIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgMTMwLCA0NiwgNDcsIDI0NywgMSwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5MywgNDYsIDQ3LCAyNDcsIDY0LCA0NiwgNDcsIDI0NiwgMTYxLCA0NiwgNDcsIDI0NywgMzIsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjQsIDQ2LCA0NywgMjQ3LCA5NSwgNDYsIDQ3LCAyNDYsIDE0NSwgNDYsIDQ3LCAyNDcsIDE2LCA0NiwgNDcsIAotICAgIDI0NiwgMjA4LCA0NiwgNDcsIDI0NywgNzksIDQ2LCA0NywgMjQ2LCAxNzYsIDQ2LCA0NywgMjQ3LCA0NywgNDYsIDQ3LCAKLSAgICAyNDYsIDIzOSwgNDYsIDQ3LCAyNDcsIDExMCwgNDYsIDQ3LCAyNDYsIDEzNywgNDYsIDQ3LCAyNDcsIDgsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDAsIDQ2LCA0NywgMjQ3LCA3MSwgNDYsIDQ3LCAyNDYsIDE2OCwgNDYsIDQ3LCAyNDcsIDM5LCA0NiwgNDcsIAotICAgIDI0NiwgMjMxLCA0NiwgNDcsIDI0NywgMTAyLCA0NiwgNDcsIDI0NiwgMTUyLCA0NiwgNDcsIDI0NywgMjMsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMTUsIDQ2LCA0NywgMjQ3LCA4NiwgNDYsIDQ3LCAyNDYsIDE4MywgNDYsIDQ3LCAyNDcsIDU0LCA0NiwgNDcsIAotICAgIDI0NiwgMjQ2LCA0NiwgNDcsIDI0NywgMTE3LCA0NiwgNDcsIDI0NiwgMTI4LCA0NiwgNDcsIDI0NiwgMjU1LCA0NiwgNDcsIAotICAgIDI0NiwgMTkxLCA0NiwgNDcsIDI0NywgNjIsIDQ2LCA0NywgMjQ2LCAxNTksIDQ2LCA0NywgMjQ3LCAzMCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIyMiwgNDYsIDQ3LCAyNDcsIDkzLCA0NiwgNDcsIDI0NiwgMTQzLCA0NiwgNDcsIDI0NywgMTQsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDYsIDQ2LCA0NywgMjQ3LCA3NywgNDYsIDQ3LCAyNDYsIDE3NCwgNDYsIDQ3LCAyNDcsIDQ1LCA0NiwgNDcsIAotICAgIDI0NiwgMjM3LCA0NiwgNDcsIDI0NywgMTA4LCA0NiwgNDcsIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAKLSAgICAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAxNTAsIDQ2LCA0NywgMjQ3LCAyMSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxMywgNDYsIDQ3LCAyNDcsIDg0LCA0NiwgNDcsIDI0NiwgMTgxLCA0NiwgNDcsIDI0NywgNTIsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDQsIDQ2LCA0NywgMjQ3LCAxMTUsIDQ2LCA0NywgMjQ2LCAxMzEsIDQ2LCA0NywgMjQ3LCAyLCA0NiwgNDcsIAotICAgIDI0NiwgMTk0LCA0NiwgNDcsIDI0NywgNjUsIDQ2LCA0NywgMjQ2LCAxNjIsIDQ2LCA0NywgMjQ3LCAzMywgNDYsIDQ3LCAKLSAgICAyNDYsIDIyNSwgNDYsIDQ3LCAyNDcsIDk2LCA0NiwgNDcsIDI0NiwgMTQ2LCA0NiwgNDcsIDI0NywgMTcsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMDksIDQ2LCA0NywgMjQ3LCA4MCwgNDYsIDQ3LCAyNDYsIDE3NywgNDYsIDQ3LCAyNDcsIDQ4LCA0NiwgNDcsIAotICAgIDI0NiwgMjQwLCA0NiwgNDcsIDI0NywgMTExLCA0NiwgNDcsIDI0NiwgMTM4LCA0NiwgNDcsIDI0NywgOSwgNDYsIDQ3LCAKLSAgICAyNDYsIDIwMSwgNDYsIDQ3LCAyNDcsIDcyLCA0NiwgNDcsIDI0NiwgMTY5LCA0NiwgNDcsIDI0NywgNDAsIDQ2LCA0NywgCi0gICAgMjQ2LCAyMzIsIDQ2LCA0NywgMjQ3LCAxMDMsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAKLSAgICAyNDYsIDIxNiwgNDYsIDQ3LCAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTg0LCA0NiwgNDcsIDI0NywgNTUsIDQ2LCA0NywgCi0gICAgMjQ2LCAyNDcsIDQ2LCA0NywgMjQ3LCAxMTgsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIAotICAgIDIsIDUyLCA2NywgOTEsIDE0MCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCA1MiwgODAsIDIsIDY3LCA5MSwgNDMsIDQ0LCA1MiwgCi0gICAgODAsIDIsIDY3LCA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgMTMwLCAxNDAsIDUyLCA4MCwgMjQzLCAyNTEsIAotICAgIDEzMCwgOTcsIDUyLCA4MCwgMjQzLCAyNTEsIDEzMCwgMjQ2LCAxMTIsIDgwLCAyLCAyMDMsIDkxLCAyMTQsIDE1MywgODAsIAotICAgIDIsIDIwMywgOTEsIDIxNCwgMTUzLCAyMTUsIDIxMiwgNzUsIDI0NiwgMTEyLCAyMTUsIDIxMiwgNzUsIDE0MCwgNTIsIDI0OCwgCi0gICAgMTY1LCA3NSwgOTcsIDUyLCAyNDgsIDE2NSwgNzUsIDE0MCwgMjE1LCAyMTIsIDI0OCwgMTY1LCA3NSwgOTcsIDIxNSwgMjEyLCAKLSAgICAyNDgsIDE2NSwgNzUsIDk3LCAyMTUsIDU4LCAyMTUsIDIxMiwgMjQ4LCAxNjUsIDc1LCA5NywgODAsIDIsIDI0NiwgMTI2LCAKLSAgICAyMTgsIDE0MSwgMjE0LCAxNTMsIDgwLCAyMTYsIDQzLCAxMzAsIDI0NiwgMTEyLCA4MCwgMjE2LCA0MywgMTMwLCA5NywgODAsIAotICAgIDIsIDIxNywgNzksIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgCi0gICAgODAsIDIsIDIxNywgNzgsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCA5NywgMjE1LCA1OCwgODAsIAotICAgIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgMjU0LCAzLCA5NywgMjU0LCAzLCAxNDAsIDUyLCAyNTQsIDMsIDk3LCAKLSAgICA1MiwgMjU0LCAzLCAxNDAsIDgwLCAyMTYsIDQzLCA4NSwgMjQ4LCAwLCA5NywgODAsIDIxNiwgNDMsIDg1LCAyNDgsIDAsIAotICAgIDE0MCwgODAsIDI0MywgMjUxLCAyNTIsIDE0OSwgMjE2LCA0MywgODUsIDI0OCwgMCwgOTcsIDgwLCAyNDMsIDI1MSwgMjUyLCAKLSAgICAxNDksIDIxNiwgNDMsIDg1LCAyNDgsIDAsIDIyOCwgNjEsIDIxMiwgOSwgMjIsIDIxOSwgMzAsIDI0NSwgMjI4LCA3NSwgCi0gICAgMjI4LCA2MSwgMjQ1LCAyMjgsIDIyLCAyMTksIDMwLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAyMTIsIDksIDgwLCAyLCAxMDMsIAotICAgIDIyOCwgNjEsIDI0NSwgMjI4LCA4MCwgMiwgMTAzLCAyMTksIDMwLCAyNDUsIDIyOCwgODAsIDIsIDEwMywgMjE5LCAzMCwgCi0gICAgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDYxLCAyMTIsIDksIDgwLCAyMiwgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjgsIAotICAgIDYxLCAyNDUsIDIyOCwgODAsIDIyLCAyMTksIDMwLCAyNDUsIDIyOCwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMjIsIAotICAgIDIxOSwgMzAsIDIxMiwgOSwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgODAsIDIyLCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjIsIAotICAgIDIzMSwgMjQ4LCA3LCAyNDksIDEzMywgMjQ0LCAxODMsIDI0OCwgNiwgMjQ0LCAxODMsIDI0OCwgNywgMjQ5LCAxMzMsIDIyMiwgCi0gICAgMjMxLCAyNDgsIDYsIDIxOSwgMzAsIDI0NSwgMjI4LCA4MCwgMjQ5LCAxMzMsIDIyOCwgNjEsIDI0NSwgMjI4LCA3NSwgMjI4LCAKLSAgICA2MSwgMjQ1LCAyMjgsIDgwLCAyNDksIDEzMywgMjE5LCAzMCwgMjQ1LCAyMjgsIDc1LCAyNDQsIDE4MywgMjQ4LCA3LCAyNDksIAotICAgIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMjIsIDIzMSwgMjQ4LCA3LCAyNDksIDEzMywgMjE5LCAzMCwgMjQ1LCAKLSAgICAyMjgsIDc1LCAyMjgsIDYxLCAyNDUsIDIyOCwgODAsIDI0OSwgMTMzLCAyMjgsIDYxLCAyMTIsIDksIDc1LCAyMjgsIDYxLCAKLSAgICAyMTIsIDksIDgwLCAyNDksIDEzMywgMjI4LCA2MSwgMjQ1LCAyMjgsIDc1LCAyMTIsIDM2LCA4MCwgMjI1LCAxMCwgMjQ3LCAKLSAgICAyMDMsIDIyMiwgMjU0LCA4MCwgMjI1LCAxMCwgOTcsIDIxNiwgMTg5LCAyNDksIDk4LCAyMTQsIDE1MiwgODAsIDIyNSwgMTAsIAotICAgIDk3LCAyMTYsIDE4OSwgMjQ5LCA5OCwgMjQ2LCAxMTEsIDgwLCAyMjUsIDEwLCAyNDYsIDExMiwgMjE2LCAxODksIDI0OSwgCi0gICAgOTgsIDIzMywgNDMsIDgwLCAyMjUsIDEwLCAyNDYsIDExMiwgMjE2LCAxODksIDI0OSwgOTgsIDIyMiwgMjQ0LCAyMjIsIAotICAgIDI0NywgMjU0LCAzNCwgMjUwLCAxMCwgNzUsIDIzMywgNDYsIDI1NCwgMzQsIDI1NCwgOTYsIDc1LCAyMTYsIDE1LCAyNTQsIAotICAgIDM0LCAyNTQsIDk2LCA3NSwgMjUxLCAxODMsIDI1NCwgMzQsIDI1NCwgOTYsIDc1LCAyMTYsIDE1LCAyNTQsIDM0LCAyNTAsIAotICAgIDEwLCA4MCwgMiwgMjMwLCAxODYsIDIxNiwgMTUsIDI1NCwgMzQsIDI1NCwgOTYsIDgwLCAyLCAyMjUsIDI1LCAyMzIsIDExNCwgCi0gICAgNDQsIDIyMCwgMTU0LCAyNTAsIDEwLCA3NSwgMjMyLCAxMTQsIDQzLCAyMjAsIDE1NCwgMjU0LCA5NiwgNzUsIDI1NCwgOTYsIAotICAgIDI1MCwgOCwgMjUwLCA0NCwgNzUsIDI1MCwgMTAsIDI1MCwgOCwgMjUwLCA0NCwgNzUsIDk3LCA4MCwgNzIsIDIxOSwgMjUzLCAKLSAgICAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjE5LCAyNTMsIDk3LCA3NSwgMjE5LCAyNTMsIDk3LCA4MCwgNzIsIDE0MCwgNzUsIAotICAgIDk3LCA4MCwgMiwgOTYsIDUxLCAxNDAsIDgwLCAyLCA5NiwgNTEsIDk3LCA4MCwgMjE2LCAxNDAsIDIxMSwgMTc4LCA0MywgCi0gICAgNDQsIDgwLCAyMTYsIDE0MCwgNCwgMjUwLCA0MywgMjE0LCAxNTMsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgNCwgMjUwLCAKLSAgICA0MywgNDMsIDI1MiwgMTQ3LCAxMjAsIDQ0LCAyNTIsIDE0NywgMTI0LCAyNDIsIDUsIDQzLCAyNTIsIDE0NywgMTI0LCA0NCwgCi0gICAgMjUyLCAxNDcsIDEyMCwgMjQyLCA1LCAxMjAsIDI1MiwgMTQ3LCA0NCwgMTI0LCAyNTIsIDE0NywgNDMsIDI0MiwgNSwgMTIwLCAKLSAgICAyNTIsIDE0NywgNDMsIDEyNCwgMjUyLCAxNDcsIDQ0LCAyNDIsIDUsIDQzLCAyNTIsIDE0NywgMTIwLCA0NCwgMjUyLCAxNDcsIAotICAgIDEyMCwgMjQyLCA1LCAxMjAsIDI1MiwgMTQ3LCA0NCwgMTI0LCAyNTIsIDE0NywgNDQsIDI0MiwgNSwgNDMsIDI1MiwgMTQ3LCAKLSAgICAxMjQsIDQ0LCAyNTIsIDE0NywgMTI0LCAyNDIsIDUsIDEyMCwgMjUyLCAxNDcsIDQzLCAxMjQsIDI1MiwgMTQ3LCA0MywgCi0gICAgMjQyLCA1LCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyMCwgMjE2LCA0MywgMTMwLCA5NywgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgMTIwLCAyMTYsIDQzLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjE2LCA0MywgMTMwLCAKLSAgICAyNDYsIDExMiwgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDQsIDIxNiwgNDMsIDEzMCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCAxMjQsIDIxNiwgNDMsIDEzMCwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDEyNCwgMjE2LCA0MywgMTMwLCAyMTQsIAotICAgIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgNDMsIDIxNiwgNDMsIDEzMCwgMjQ2LCAxMTIsIDI0MiwgNiwgMiwgMjUyLCAKLSAgICAxNDcsIDQzLCAyMTYsIDQzLCAxMzAsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyNDMsIDI1MSwgMTMwLCA5NywgCi0gICAgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTIwLCAyNDMsIDI1MSwgMTMwLCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgCi0gICAgNDQsIDI0MywgMjUxLCAxMzAsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0NCwgMjQzLCAyNTEsIDEzMCwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI0MywgMjUxLCAxMzAsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIAotICAgIDI0MywgMjUxLCAxMzAsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCA0MywgMjQzLCAyNTEsIDEzMCwgMjQ2LCAKLSAgICAxMTIsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNDMsIDI1MSwgMTMwLCAxNDAsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIAotICAgIDEyMCwgNzIsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDIxNCwgMTUzLCAyNDIsIDYsIDIsIDI1MiwgCi0gICAgMTQ3LCA0MywgMjUyLCAzOCwgMjE0LCAxNTMsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDIyMiwgMjU0LCA5NywgMjQyLCA2LCAyLCAKLSAgICAyNTIsIDE0NywgMTIwLCA3MiwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTE0LCAyNDYsIDExMiwgMjQyLCA2LCAKLSAgICAyLCAyNTIsIDE0NywgNDMsIDI1MiwgMzgsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgMTQwLCAKLSAgICAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCA5NywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjE0LCAxNjMsIDE0MCwgCi0gICAgMjQyLCA2LCAyLCAyNTIsIDE0NywgMTI0LCA3MiwgOTcsIDI0MiwgNiwgMiwgMjUyLCAxNDcsIDI0NiwgMTE0LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMTIwLCA3MiwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMTQsIDE2MywgOTcsIDI0MiwgNiwgCi0gICAgMiwgMjUyLCAxNDcsIDEyNCwgNzIsIDE0MCwgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjQ2LCAxMTQsIDE0MCwgMjQyLCA2LCAyLCAKLSAgICAyNTIsIDE0NywgMTIwLCA3MiwgMjAwLCAyNDgsIDE2NCwgMTQwLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjQsIDI1MiwgNTEsIAotICAgIDIwMCwgMjQ4LCAxNjQsIDk3LCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAxMjAsIDcyLCAyMDAsIDI0OCwgMTY0LCA5NywgMjQyLCAKLSAgICA2LCAyLCAyNTIsIDE0NywgMTI0LCAyNTIsIDUxLCAyMDAsIDI0OCwgMTY0LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIAotICAgIDE0NywgNDMsIDI1MiwgMzgsIDI0NiwgMTEyLCAyNDIsIDYsIDIsIDI1MiwgMTQ3LCAyMjIsIDI1NCwgMjQ2LCAxMTIsIDI0MiwgCi0gICAgNiwgMiwgMjUyLCAxNDcsIDQzLCAyNTIsIDM4LCAyMTQsIDE1MywgMjQyLCA2LCAyLCAyNTIsIDE0NywgMjIyLCAyNTQsIDQ0LCAKLSAgICA1MiwgODAsIDIsIDIyMiwgMTg1LCAyNDEsIDI0MiwgMjQ1LCAxMDYsIDUsIDcyLCA5NywgNzUsIDIxNiwgOTAsIDIyNiwgCi0gICAgMTcyLCA3MiwgOTcsIDc1LCAxNDAsIDgwLCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDIxNiwgOTAsIAotICAgIDIyNiwgMTcxLCA5NywgODAsIDcyLCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIzMywgMjEsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCAKLSAgICAyMTYsIDE0MCwgMjMzLCAyMCwgMjQyLCAxMzcsIDcyLCA5NywgNzUsIDIxOCwgNjUsIDcyLCA5NywgNzUsIDE0MCwgODAsIAotICAgIDIxNiwgMTQwLCAyMTgsIDY0LCAyMTgsIDIzLCA3MiwgMTQwLCA3NSwgNDMsIDI0NCwgOTksIDIxNywgNzgsIDQ0LCAyNDQsIAotICAgIDk5LCAyMTcsIDc4LCAxMjAsIDI0NCwgOTksIDIxNywgNzgsIDEyNCwgMjQ0LCA5OSwgMjE3LCA3OCwgMjE1LCAyMTIsIDY3LCAKLSAgICAyNTIsIDE0OSwgMjQ4LCA2OCwgMjEwLCAxNjAsIDE4OSwgMjE4LCAyNDQsIDIxMCwgMTYwLCAxODksIDIxNSwgNDksIDI0OSwgCi0gICAgMjM0LCA0MywgNzEsIDI0OSwgMTA3LCAxMjcsIDQ0LCA3MSwgMjQ5LCAxMDcsIDEyNywgNDMsIDcxLCAyMjYsIDcsIDQ0LCAKLSAgICA3MSwgMjI2LCA3LCAyMTAsIDE2MCwgMTg5LCA0MywgMjM2LCAyMiwgMTI3LCAyMTAsIDE2MCwgMTg5LCA0NCwgMjM2LCAyMiwgCi0gICAgMTI3LCAyMTAsIDE2MCwgMTg5LCA0MywgMjUxLCAyNTAsIDEyNywgMjEwLCAxNjAsIDE4OSwgNDQsIDI1MSwgMjUwLCAxMjcsIAotICAgIDQzLCA0MiwgMjUxLCAxNjYsIDIsIDIxNCwgMTgzLCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMTQsIDE4MywgNDMsIDQyLCAKLSAgICAyNTEsIDE2NiwgMiwgMjE2LCAxMTYsIDIzNiwgNywgMjE2LCAxNSwgMjQ5LCAxNjgsIDQ0LCA0MiwgMjUxLCAxNjYsIDIsIAotICAgIDIxNiwgMTE2LCAyMzYsIDcsIDI1MSwgMTgzLCAyNDksIDE2OCwgNDMsIDQyLCAyNTEsIDE2NiwgMiwgMjE2LCAxMTYsIDIzNiwgCi0gICAgNywgMjUxLCAxODMsIDI0OSwgMTY4LCA0NCwgNDIsIDI1MSwgMTY2LCAyLCAyMTYsIDExNiwgMjM2LCA3LCAyMTYsIDE1LCAKLSAgICAyNDksIDE2OCwgNDMsIDI1NCwgMTE4LCAyNTEsIDE2NiwgMiwgMjQ3LCAxMjgsIDQ0LCAyNTQsIDExOCwgMjUxLCAxNjYsIDIsIAotICAgIDI0NywgMTI4LCA0MywgMjU0LCAzNCwgMjMzLCAyMSwgMTI3LCA0NCwgMjU0LCAzNCwgMjQyLCAxMzcsIDEyNywgNTIsIDQzLCAKLSAgICAyNTQsIDM0LCAyNDIsIDEzNywgMTI3LCA1MiwgNDQsIDI1NCwgMzQsIDIzMywgMjEsIDEyNywgNDMsIDg1LCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDEyNywgNDQsIDg1LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjQ2LCAxMjYsIDI0NCwgMTQzLCA2NywgMjEwLCAKLSAgICAzNSwgMjMyLCAyMTksIDIzMSwgOTMsIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjMzLCA1MiwgNDQsIDI1NCwgMTE4LCAyMTQsIAotICAgIDEyLCAyLCAyMTgsIDIzNiwgMjMxLCA5MywgNDQsIDI1NCwgMTE4LCAyLCAyNDcsIDEyOCwgMjU0LCAxMTgsIDIsIDIyMiwgCi0gICAgOTQsIDIzNSwgMjIyLCAyNTUsIDEyLCAyNTQsIDExNywgMjE5LCAxLCAyNTQsIDExOCwgMjI2LCAxNzQsIDIzMywgNTIsIAotICAgIDIxOSwgMSwgMjU0LCAxMTgsIDIyNiwgMTc0LCAyMTQsIDE2MywgMjE1LCA5NCwgMjU0LCAxMTcsIDIyMywgNTIsIDI1NCwgCi0gICAgMTE3LCAyNTQsIDExOCwgMiwgMjE0LCAxODMsIDIyMywgNTIsIDI1NCwgMTE4LCAyLCAyMTQsIDE4MywgMjI2LCAyNTIsIAotICAgIDI1NCwgMTE4LCAyMjYsIDE3NCwgMjE0LCAxNjMsIDIyNiwgMjUyLCAyNTQsIDExOCwgMjI2LCAxNzQsIDI0NiwgMTE0LCAKLSAgICAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgMTIwLCAKLSAgICAyMiwgMjIyLCAyNTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAKLSAgICAyMjUsIDEwLCAxMjAsIDIyLCAyMzMsIDUyLCAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgCi0gICAgMjM2LCA3LCA4MCwgMjI1LCAxMCwgMTI0LCAyMiwgMjIyLCAyNTQsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgCi0gICAgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIDEwLCAxMjQsIDIyLCAyMzMsIDUyLCAyMzEsIDkzLCAyNTQsIDExOCwgCi0gICAgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCA3LCA4MCwgMjI1LCAxMCwgNDQsIDIyLCAyMTQsIDE2MywgMjMxLCAKLSAgICA5MywgMjU0LCAxMTgsIDIsIDIwNCwgMjU0LCAxMywgMjQ1LCAxNDgsIDIzNiwgNywgODAsIDIyNSwgMTAsIDQzLCAyMiwgCi0gICAgMjE0LCAxNjMsIDIzMSwgOTMsIDI1NCwgMTE4LCAyLCAyMDQsIDI1NCwgMTMsIDI0NSwgMTQ4LCAyMzYsIDcsIDgwLCAyMjUsIAotICAgIDEwLCA0NCwgMjIsIDI0NiwgMTE0LCAyMzEsIDkzLCAyNTQsIDExOCwgMiwgMjA0LCAyNTQsIDEzLCAyNDUsIDE0OCwgMjM2LCAKLSAgICA3LCA4MCwgMjI1LCAxMCwgNDMsIDIyLCAyNDYsIDExNCwgMjIzLCA1MiwgMjQ1LCAxNjAsIDIyMCwgMTI5LCAyNDUsIDE2MCwgCi0gICAgMjIwLCAxMzAsIDIsIDIyNiwgMTI3LCAyNDUsIDE2MCwgMjIwLCAxMzAsIDIsIDQsIDI1MCwgNDQsIDQ4LCAyNDUsIDE2MCwgCi0gICAgMjIwLCAxMzAsIDIsIDQ0LCA4MCwgNDgsIDI0NSwgMTYwLCAyMjAsIDEzMCwgMiwgNDMsIDgwLCA0OCwgMjUwLCA0NCwgMiwgCi0gICAgMjAzLCAxMzAsIDM3LCA2NywgMTMwLCAzNywgMjI2LCAxMSwgMzcsIDIyMywgNTMsIDIxOSwgNDgsIDM3LCAyMjUsIDE3NCwgCi0gICAgMjUwLCA0NCwgMjQ3LCAxODEsIDI1MSwgODYsIDIwMywgMjUyLCAxNDksIDIyLCAyMTYsIDE1LCAxNjMsIDI0NywgMTgxLCAKLSAgICAyNTEsIDg2LCA2NywgMTMwLCAyNTAsIDQ0LCAyLCAyMTgsIDI1LCAyMTEsIDE3OCwgMzcsIDI1NCwgOTUsIDI0NywgMTc3LCAKLSAgICA1MCwgMTIwLCA4MCwgMjE2LCAxNDAsIDI1MCwgNDMsIDM3LCA3MSwgMjUxLCAxMjEsIDM3LCAyNTEsIDEyMSwgMzcsIDIzMywgCi0gICAgMjAsIDM3LCAyNDIsIDEzNiwgMjUwLCA0NCwgMiwgNCwgMjUwLCA0NCwgMjE2LCA0MywgMjE2LCAxOTcsIDIyMiwgMjU0LCAKLSAgICAyNTAsIDQ0LCAyLCAxMTMsIDIwMywgMjE4LCA5MywgMjE2LCA0MywgMjE2LCAxOTcsIDIyMiwgMjU0LCA5MiwgMjIyLCAyMzEsIAotICAgIDI0OCwgNywgMjE5LCA5NywgOTIsIDI0NCwgMTgzLCAyNDgsIDcsIDIxOSwgOTcsIDkyLCAyNTMsIDIyNCwgOTIsIDQsIDI1MCwgCi0gICAgNDMsIDkyLCAyMTgsIDIzNiwgMTEzLCAyMzUsIDcxLCAyMTgsIDIzNCwgMjE1LCAyMjcsIDIsIDU5LCA0OCwgMjE1LCAyMjcsIAotICAgIDIsIDIxNCwgMTgzLCAyMjIsIDk0LCAyMzYsIDcsIDIxNSwgMjI2LCAyMTUsIDIyNywgMiwgMjIwLCAxMzYsIDI1MywgMjE1LCAKLSAgICAyNTEsIDE4MiwgNDQsIDIxNSwgMjI3LCA3MiwgNDMsIDIxNSwgMjI2LCA0MywgMjE1LCAyMjcsIDI1MiwgMzgsIDY3LCAxMzAsIAotICAgIDY3LCAyNTIsIDE0OSwgMjUyLCAzOCwgNDQsIDIxNSwgMjI2LCAyNTEsIDE3MywgMiwgNDMsIDE2MywgMjUxLCAyMjksIDI1MSwgCi0gICAgMTczLCAyLCA0NCwgMTYzLCAyNTEsIDIyOSwgODUsIDI1MSwgMTcyLCAzMCwgMiwgNDMsIDE2MywgMjUxLCAyMjksIDMwLCAyLCAKLSAgICA0NCwgMTYzLCAyNTEsIDIyOSwgNzEsIDI0MCwgMjQzLCA4NSwgMjQwLCAyNDMsIDQzLCAyMTEsIDI0NCwgMjQ0LCAxNDMsIAotICAgIDQ0LCAyMTEsIDI0NCwgMjQ0LCAxNDMsIDQzLCA1MiwgMjExLCAyNDQsIDI0NCwgMTQzLCA0NCwgNTIsIDIxMSwgMjQ0LCAKLSAgICAyNDQsIDE0MywgMjM1LCAyNTUsIDIzNSwgMjQxLCAyMTYsIDExMywgMTE1LCAyMzUsIDI0MSwgMjM1LCAyNDIsIDIyOSwgCi0gICAgMTA3LCAyLCA2NywgMTMwLCAyNDYsIDEyMCwgMjMwLCA5MiwgNDIsIDIsIDI0OSwgMTg5LCAyMjYsIDEzMSwgMjM1LCAyNTMsIAotICAgIDI1MywgMjQ1LCAyMTksIDIyMSwgMjI0LCAxODMsIDI0NSwgMTA2LCA1LCAyMiwgMjE5LCA5OSwgMjI2LCAxMSwgMjQ1LCAKLSAgICAxMDYsIDUsIDIyLCAyMTksIDk5LCAyMjYsIDEyLCAyLCAyMTYsIDkwLCA0OCwgMjQwLCAxMTEsIDIxNiwgNDMsIDIyLCAyMTksIAotICAgIDk5LCAyMjYsIDExLCAyNDIsIDE5MCwgMjE4LCAxNTcsIDIxNiwgMTg2LCAyNDYsIDExMywgMjE1LCAyMjcsIDIsIDQzLCAKLSAgICAxNjMsIDI1MSwgMjI5LCAyNDYsIDExMywgMjE1LCAyMjcsIDIsIDQ0LCAxNjMsIDI1MSwgMjI5LCA4NSwgMjQ4LCAxLCAyLCAKLSAgICAxMjQsIDc1LCA4NSwgMjMyLCAxMTAsIDcxLCAyNTAsIDQ0LCAyLCAxMjQsIDc1LCA4NSwgMjUwLCA0NCwgMiwgMTI0LCA3NSwgCi0gICAgMjQ1LCA5MywgNzEsIDIxOCwgMjM2LCAyNDUsIDkzLCA4NSwgMjE4LCAyMzYsIDI0NSwgOTMsIDcxLCAyNDgsIDAsIDI0NSwgCi0gICAgOTMsIDg1LCAyNDgsIDAsIDI0NSwgOTMsIDcxLCAyNTAsIDQzLCAyNDUsIDkzLCA4NSwgMjUwLCA0MywgMjIyLCAxMzQsIAotICAgIDIyMywgNTMsIDIxOSwgNDksIDIyNiwgMTcxLCAyMTksIDQ5LCAyLCAyMjYsIDEyNywgMjIzLCA1MywgMjE5LCA0OSwgMiwgCi0gICAgMjAzLCA5MSwgMjUyLCAxLCAyMTksIDQ4LCAyNTIsIDEsIDIyMywgNTMsIDIxOSwgNDgsIDUyLCAyMjUsIDI1LCAyMTUsIAotICAgIDIxMiwgMjI1LCAyNSwgMjMzLCA0OCwgMjQ5LCA5OSwgMjU0LCAxMTgsIDEyNywgMjIyLCAyNTAsIDI0OSwgOTksIDI1NCwgCi0gICAgMTE4LCAxMjcsIDIxNiwgNzksIDIzMCwgMTg0LCAyMzAsIDI5LCAzNywgNTksIDIyNiwgMTcxLCAyMzAsIDI5LCAzNywgOTYsIAotICAgIDIyNiwgMTcxLCAyMzAsIDI5LCAzNywgMzAsIDIyNiwgMTcxLCAyMzAsIDI5LCAyMTQsIDE3NiwgMjI2LCAxNzIsIDIsIDI0NywgCi0gICAgMTI4LCAyMzAsIDI5LCAyMTQsIDE3NiwgMjI2LCAxNzIsIDIsIDIyNSwgMjUsIDIzMCwgMjksIDQyLCAyMzUsIDIwNiwgMjI2LCAKLSAgICAxNzEsIDIzMCwgMjksIDQyLCAyMTQsIDE3NiwgMjI2LCAxNzEsIDExMywgMjMyLCAxNTIsIDIyLCAyMjYsIDE3MSwgMTEzLCAKLSAgICAyMzIsIDE1MiwgMTc3LCAyMjYsIDE3MSwgMjMwLCAyOSwgMzAsIDIyNiwgMTcxLCAyMzAsIDE1OSwgMTEzLCAyMTgsIDQ0LCAKLSAgICAyMTgsIDQyLCAyLCAyMzUsIDIxOCwgMjI0LCAyNywgMjM1LCAyMTksIDIyNiwgMTcxLCAyNDQsIDEwNywgMjI2LCAzLCAyMzUsIAotICAgIDIxOCwgMjM1LCAyMTksIDIsIDUyLCA5MSwgMjM1LCAyMTksIDI1MywgMTgxLCAyLCAyMTksIDk3LCAyNTAsIDQwLCAyNDMsIAotICAgIDIzMywgMjU0LCA5NiwgMjM1LCAyMTYsIDIzMiwgMjIwLCAyMzUsIDIxNywgMiwgMjIzLCAxMTgsIDIyNSwgMjQxLCAyNTQsIAotICAgIDEwLCAyMjUsIDQsIDIzMiwgMjIwLCAyMzUsIDIxNywgMiwgMjIwLCAxNTQsIDIyNSwgMjQxLCAyNTQsIDEwLCAyMjUsIDQsIAotICAgIDIzMiwgMjIwLCAyMzUsIDIxNywgMjI4LCA1NywgMjM2LCAxLCAyMTYsIDE5NywgMjI1LCA0LCAyMzUsIDIxOSwgMjU0LCAxMCwgCi0gICAgMTE2LCAyMjUsIDE0LCAyMjYsIDE3MSwgMjI0LCAyMSwgMjM1LCAyMTksIDIyNiwgMTcxLCAyMzUsIDIxOSwgMiwgMTQwLCAKLSAgICA4MCwgMiwgMTAzLCAyMzUsIDIxOSwgMiwgMzAsIDUwLCAyMzUsIDIxOSwgMiwgMjM1LCAyMDUsIDIzNSwgMjE5LCAyLCAyMTQsIAotICAgIDE3NSwgMjM1LCAyMTksIDIsIDIyNiwgMTI3LCAyMzUsIDIxOSwgMiwgMjE0LCAxODMsIDIzNSwgNzIsIDIzMywgOTEsIDQzLCAKLSAgICAyMTUsIDIyNywgMjI2LCAxNzEsIDIxMCwgMTYwLCAxODksIDIyMSwgMjAzLCAyNDksIDIxNywgMjEwLCAxNjAsIDE4OSwgCi0gICAgMjIxLCAyMDMsIDIyNSwgNTksIDIxMCwgMTYwLCAxODksIDIyMSwgMjAzLCAyMjQsIDE3OSwgOTYsIDUsIDIsIDQsIDI1MCwgCi0gICAgNDQsIDQ4LCA5NiwgNSwgMiwgMjUwLCAzOSwgMjU1LCAyNCwgNDgsIDk2LCA1LCAyLCAyMTYsIDkwLCA0OCwgOTYsIDUsIDIsIAotICAgIDU5LCA1MSwgOTYsIDUsIDIsIDIxNiwgOTAsIDUxLCA5NiwgNSwgMiwgMjE4LCA2NiwgMTA1LCA5NiwgNSwgMiwgODUsIDIxNSwgCi0gICAgMjI2LCAyMzAsIDE4NywgNSwgMiwgMjQ5LCAyMjgsIDQ4LCAyMzAsIDE4NywgNSwgMiwgNTksIDUxLCAyMzAsIDE4NywgNSwgCi0gICAgMiwgMjQ0LCAxODMsIDI0NywgMTI2LCAyMzAsIDE4NywgNSwgMiwgMjIyLCAyMzEsIDI0NywgMTI2LCA5NiwgNSwgMjM2LCA3LCAKLSAgICA0MywgMTYzLCAyNTAsIDQzLCA5NiwgNSwgMjM2LCA3LCA0NCwgMTYzLCAyNTAsIDQzLCAyMTMsIDI1NCwgMTc3LCAyNDksIAotICAgIDEzOSwgMjI0LCAxODMsIDIzMCwgODksIDUsIDIsIDU5LCA0OCwgMjMwLCA4OSwgNSwgMiwgMjE0LCAxODMsIDIyMCwgMTUxLCAKLSAgICAyMjQsIDE4NCwgMiwgMjUxLCAxODMsIDI1MCwgNywgMjE5LCA3OSwgMjI0LCAxODMsIDIzMCwgODksIDUsIDIzNiwgNywgNDMsIAotICAgIDE2MywgMjUwLCA0MywgMjMwLCA4OSwgNSwgMjM2LCA3LCA0NCwgMTYzLCAyNTAsIDQzLCAzNywgMjMwLCA4OSwgNSwgMiwgCi0gICAgMjUwLCAzOSwgMjU1LCAyMywgMjMwLCA4OSwgNSwgMjM2LCA3LCA1MiwgMjUwLCA0MywgMzcsIDI0NywgMTc3LCA1MCwgOTYsIAotICAgIDUsIDIzNiwgNywgMjE1LCAyMjYsIDIzMCwgMTg3LCA1LCAyMzYsIDcsIDIxNSwgMjI2LCAyMzAsIDg5LCA1LCAyMzYsIDcsIAotICAgIDIxNSwgMjI2LCAyMzUsIDIxMywgMjI0LCAxODMsIDIyMiwgMjQ1LCAyMzUsIDIxMywgMjI0LCAxODMsIDIxMCwgMTYwLCAKLSAgICAxODksIDIyMywgOTMsIDI0OSwgMjE3LCAyNTQsIDE0MiwgMTc3LCAyNDksIDE3MywgMjM1LCAyMDYsIDIsIDI0NywgMTI4LCAKLSAgICAyMTQsIDE3NiwgMiwgMjMwLCAxODcsIDUwLCAyMTQsIDE3NiwgMiwgMjI2LCAxMjcsIDIzNSwgMjA2LCAyLCAyMjYsIDEyNywgCi0gICAgMjM1LCAyMDYsIDIsIDIzMiwgMTUyLCAyNTQsIDEyNiwgMjE0LCAxNzYsIDIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMjE0LCAKLSAgICAxNzYsIDcyLCAyMzUsIDIwNSwgMjM1LCAyMDYsIDcyLCAyMTQsIDE3NSwgMjE0LCAxNzYsIDcyLCAyNTIsIDE0OSwgNzIsIAotICAgIDIzNSwgMjA1LCAyMzUsIDIwNiwgNzIsIDI1MiwgMTQ5LCA3MiwgMjE0LCAxNzUsIDIxNCwgMTc2LCAyNTIsIDM4LCAyMiwgCi0gICAgMjM1LCA3MSwgMiwgMjE0LCAxNzUsIDIzNSwgMjA2LCAyNTIsIDM4LCAyMiwgMjM1LCA3MSwgMiwgMjM1LCAyMDUsIDI1MCwgCi0gICAgOCwgMjE0LCAxNzYsIDIsIDIyMCwgMTM1LCAyNTAsIDgsIDIzNSwgMjA2LCAyLCAyMjAsIDEzNSwgNTIsIDQyLCAyMzUsIAotICAgIDIwNSwgNTIsIDQyLCAyMTQsIDE3NSwgMjUwLCA4LCAyMTQsIDE3NiwgMiwgMjIwLCAxMzYsIDIyLCAyMTksIDc5LCAyMjQsIAotICAgIDE4MywgMjMyLCAxNTIsIDIyLCAyLCA1OSwgNDgsIDIzMiwgMTUyLCAxNzcsIDIsIDU5LCA0OCwgNTIsIDIzMiwgMTUyLCAKLSAgICAyNTQsIDEyNiwgNTIsIDIzMiwgMTUyLCAyMjYsIDE2MiwgMTEzLCAyMzUsIDIwNywgMjMyLCAxNTIsIDI1NCwgMTI2LCAxMTMsIAotICAgIDIzNSwgMjA3LCAyMzIsIDE1MiwgMjI2LCAxNjIsIDIxOSwgODcsIDIzMywgOTEsIDIyNiwgMTYyLCAyMTksIDg3LCAyMzMsIAotICAgIDkxLCAyNTQsIDEyNiwgMjMyLCAxNTIsIDE3NywgMjI2LCAxMjUsIDIzMiwgMTUyLCAyNTQsIDEyNiwgMjMyLCAxNTIsIDIyLCAKLSAgICAyLCAyMzAsIDIyOSwgMjE4LCAxNDEsIDIzMiwgMTUyLCAxNzcsIDIsIDIzMCwgMjI5LCAyMTgsIDE0MSwgMjMyLCAxNTIsIAotICAgIDIyLCAyLCAyMDMsIDI0OCwgMTY0LCAyMzIsIDE1MiwgMTc3LCAyLCAyMDMsIDI0OCwgMTY0LCAyMzIsIDE1MiwgMjIsIDIsIAotICAgIDUyLCAyMjYsIDEyNywgMjMyLCAxNTIsIDIyLCAyLCAyMTQsIDE4MywgMjMyLCAxNTIsIDIyLCAyLCA1MiwgMjE0LCAxODMsIAotICAgIDQsIDIxMywgMjUxLCAyLCAyMTQsIDE4MywgMjMyLCAxNTIsIDE3NywgMiwgNTIsIDIyNiwgMTI3LCAyMzIsIDE1MiwgMTc3LCAKLSAgICAyLCA1MiwgMjE0LCAxODMsIDIxMCwgMTYwLCAxODksIDI0NywgMTM3LCAyNTQsIDg3LCAyMTAsIDE2MCwgMTg5LCAyMjMsIAotICAgIDE1MSwgMjU0LCA4NywgMjQ1LCAxMDYsIDUsIDIsIDU5LCA1MSwgMjQwLCAxMTEsIDIsIDU5LCA0OCwgMjE1LCAyMTIsIDIwMywgCi0gICAgMjUyLCAxNDksIDIsIDUyLCA2NywgOTEsIDIxNSwgMjEyLCAyMDMsIDI1MiwgMTQ5LCAyLCAyMTUsIDIxMiwgNjcsIDkxLCAKLSAgICAyMTYsIDkwLCAyMjYsIDE3MiwgMiwgNTksIDQ4LCAyMTYsIDkwLCAyMjYsIDE3MiwgMiwgMjIyLCAyMzEsIDI0NywgMTI2LCAKLSAgICAyMTksIDE2NCwgMjMwLCAxODcsIDIxOSwgMTYzLCAyNDksIDIwNywgMiwgNTksIDQ4LCAyNDUsIDEwNiwgMiwgMjUzLCAyMjQsIAotICAgIDI1NCwgMTU2LCAxMjgsIDIxNiwgNDMsIDIsIDI1MCwgMzksIDI1NSwgMjMsIDI1NCwgNTYsIDEyOCwgMTc3LCAxMjgsIDExMiwgCi0gICAgMjQ1LCAxMDYsIDUsIDcyLCA5NiwgNTAsIDk2LCA1LCA3MiwgMjQ1LCAxMDYsIDUwLCAyNDUsIDEwNiwgNSwgNzIsIDIxNiwgCi0gICAgOTAsIDIyNiwgMTcxLCA1MiwgMjQ5LCAyMzUsIDI0NSwgMTA3LCAxMTMsIDI0OSwgMjAyLCAyNDUsIDEwNiwgMjE5LCAxNzgsIAotICAgIDEzNCwgMjQ5LCAyMDIsIDI0NSwgMTA2LCAyMTksIDE3OCwgMjQ1LCAxMDYsIDUsIDIsIDExMywgMTcwLCA3MiwgMjIsIDExMywgCi0gICAgMTcwLCA1MSwgMjQ1LCAxMDIsIDIsIDI0NCwgMTksIDE3MCwgNDgsIDIzMywgMjEsIDIsIDI1MCwgNDQsIDIzNSwgMjIyLCAKLSAgICAyNDIsIDEzNywgMiwgMjUwLCA0NCwgMjM1LCAyMjIsIDIzMywgMjEsIDIsIDIyNCwgMTYsIDE2NCwgNDgsIDI0MiwgMTM3LCAKLSAgICAyLCAyMjQsIDE2LCAxNjQsIDQ4LCAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMTEyLCAyNDIsIDEzNywgMTc3LCAyMTksIAotICAgIDk5LCAxMjgsIDExMiwgMjMzLCAyMSwgMTc3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDIsIDU5LCAyMzUsIDIyMiwgMjQyLCAKLSAgICAxMzcsIDE3NywgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgMjM1LCAyMjIsIDIzMywgMjEsIDE3NywgMjE5LCA5OSwgCi0gICAgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDI0MiwgMTM3LCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAKLSAgICAyMzMsIDIxLCAxNzcsIDIxOSwgOTksIDEyOCwgMjE2LCA0MywgMiwgNTksIDcyLCAyMjIsIDI1NCwgMjQyLCAxMzcsIDE3NywgCi0gICAgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNzIsIDIzMywgNTIsIDIzMywgMjEsIDE3NywgMjU0LCA1NywgMjQyLCAKLSAgICAxMzcsIDE3NywgMjU0LCA1NywgMjMzLCAyMSwgMjIsIDIxOSwgMTU1LCAyMjgsIDU3LCAxMjgsIDExMiwgMjQyLCAxMzcsIAotICAgIDIyLCAyMTksIDE1NSwgMjI4LCA1NywgMTI4LCAxMTIsIDIzMywgMjEsIDIyLCAyMjgsIDU3LCAyNTQsIDU3LCAyNDIsIDEzNywgCi0gICAgMjIsIDIyOCwgNTcsIDI1NCwgNTcsIDIzMywgMjEsIDcyLCAyNDYsIDExOSwgMTI4LCA3MiwgMjQyLCAxMzYsIDI0MiwgMTM3LCAKLSAgICA3MiwgMjQ2LCAxMTksIDEyOCwgNzIsIDIzMywgMjAsIDIzMywgMjEsIDcyLCAyMTksIDE2NCwgMTc3LCAyNDUsIDEwNywgCi0gICAgMjQyLCAxMzcsIDcyLCAyMTksIDE2NCwgMTc3LCAyNDUsIDEwNywgMjMzLCAyMSwgNzIsIDIxOSwgMTY0LCA3MiwgMjQyLCAKLSAgICAxMzYsIDI0MiwgMTM3LCA3MiwgMjE5LCAxNjQsIDcyLCAyMzMsIDIwLCAyMzMsIDIxLCA3MiwgMjQyLCAxMzcsIDcyLCAyNDYsIAotICAgIDExOSwgMjQ1LCAxMDcsIDI0MiwgMTM3LCA3MiwgMjMzLCAyMSwgNzIsIDI0NiwgMTE5LCAyNDUsIDEwNywgMjMzLCAyMSwgCi0gICAgNzIsIDIxOSwgOTksIDEyOCwgNzIsIDI0MiwgMTM3LCA3MiwgMjE5LCA5OSwgMjQ1LCAxMDcsIDI0MiwgMTM3LCA3MiwgMjE5LCAKLSAgICA5OSwgMTI4LCA3MiwgMjMzLCAyMSwgNzIsIDIxOSwgOTksIDI0NSwgMTA3LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgCi0gICAgMjMzLCAyMCwgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAxNzcsIDI0MiwgMTM2LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIAotICAgIDE3NywgMjMzLCAyMSwgMiwgNTksIDIzNSwgMjIyLCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzcsIDIsIAotICAgIDU5LCAyMzUsIDIyMiwgMjQ2LCAxMTksIDEyOCwgMjE2LCA0MywgMTc3LCAyMzMsIDIwLCAyNDYsIDExOSwgMTI4LCAyMTYsIAotICAgIDQzLCAxNzcsIDI0MiwgMTM2LCAyNDYsIDExOSwgMjE5LCA5OSwgMTI4LCAyMTYsIDQzLCAxNzcsIDIzMywgMjAsIDI0NiwgCi0gICAgMTE5LCAyMTksIDk5LCAxMjgsIDIxNiwgNDMsIDE3NywgMjQyLCAxMzYsIDIxOSwgMTY0LCAxNzcsIDIzMywgMjAsIDIxOSwgCi0gICAgMTY0LCAxNzcsIDI0MiwgMTM2LCAyMTksIDE2NCwgNzIsIDIzMywgMjEsIDcyLCAyNDUsIDEwNiwgNTAsIDIxOSwgMTY0LCAKLSAgICA3MiwgMjQyLCAxMzcsIDcyLCAyNDUsIDEwNiwgNTAsIDUyLCAyMjksIDk2LCAyMzMsIDIwLCA1MiwgMjI5LCA5NiwgMjQyLCAKLSAgICAxMzYsIDUyLCAyMjksIDk2LCAyMzMsIDIxLCAyLCAyMTQsIDE4MywgMjQyLCAxMzcsIDIyNiwgMTI1LCAyMzMsIDIwLCAyNDIsIAotICAgIDEzNywgMjUyLCAzOCwgMjMzLCAyMCwgMjMzLCAyMSwgMjUwLCA4LCAyNTEsIDg2LCAyNDksIDEwMCwgMjQyLCAxMzcsIDI1MCwgCi0gICAgOCwgMjUxLCA4NiwgMjQ5LCAxMDAsIDIzMywgMjEsIDI1MCwgOCwgMjUxLCA4NiwgMjQ5LCAxMDEsIDcyLCAyMTksIDk5LCAKLSAgICAyNDUsIDEwNywgMjQyLCAxMzcsIDI1MCwgOCwgMjUxLCA4NiwgMjQ5LCAxMDEsIDcyLCAyMTksIDk5LCAyNDUsIDEwNywgCi0gICAgMjE5LCA4MCwgMjE2LCAyMDEsIDIzMywgODksIDIxNiwgMjAxLCAyMTksIDgwLCAyMTYsIDIwMiwgMTc3LCAxMjgsIDExMiwgCi0gICAgMjMzLCA4OSwgMjE2LCAyMDIsIDE3NywgMTI4LCAxMTIsIDI0NSwgMTA2LCA1LCAyLCAyNTEsIDExNiwgNDgsIDIyNCwgMjA2LCAKLSAgICA3MiwgMjE5LCAxNTUsIDI0NSwgMTA2LCA1MCwgMjE4LCA1NywgNzIsIDIxOSwgMTU1LCAyNDUsIDEwNiwgNTAsIDIyNCwgCi0gICAgMjA2LCA3MiwgMjE5LCAxNTUsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMTgsIDU3LCA3MiwgMjE5LCAxNTUsIDIyOCwgNTcsIAotICAgIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCA1NywgNzIsIDI0NSwgMTA2LCA1MCwgMjI0LCAKLSAgICAyMDYsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDIyOCwgNTcsIDEyOCwgMTEyLCAyMjQsIDIwNiwgNzIsIAotICAgIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA1NywgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjI0LCAyMDYsIDcyLCAyMjgsIAotICAgIDU3LCAyNTQsIDE1NiwgMTI4LCAxMTIsIDIxOCwgNTcsIDcyLCAyMjgsIDU3LCAyNTQsIDE1NiwgMTI4LCAxMTIsIDUyLCAKLSAgICAyMjQsIDIwNSwgNTIsIDIxOCwgNTYsIDIxOCwgNjUsIDIsIDI0NywgMTI4LCAyMTgsIDIzLCAyLCAyNDcsIDEyOCwgMjE4LCAKLSAgICA2NSwgMiwgOTYsIDUsIDUxLCAyMTgsIDIzLCAyLCA5NiwgNSwgNTEsIDIxOCwgNjUsIDIsIDIzMCwgODksIDUsIDUxLCAyMTgsIAotICAgIDIzLCAyLCAyMzAsIDg5LCA1LCA1MSwgMjE4LCA2NSwgNjQsIDE3NywgMTI4LCAyMTYsIDQzLCAyLCA1OSwgNDgsIDIxOCwgCi0gICAgMjMsIDY0LCAxNzcsIDEyOCwgMjE2LCA0MywgMiwgNTksIDQ4LCAyMTgsIDY1LCA2NCwgNzIsIDI0NSwgMTA2LCA1MCwgMjE4LCAKLSAgICAyMywgNjQsIDcyLCAyNDUsIDEwNiwgNTAsIDIxOCwgNjUsIDY0LCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDIxOCwgMjMsIAotICAgIDY0LCA3MiwgMjE2LCA5MCwgMjI2LCAxNzEsIDIxOCwgNjUsIDY0LCA3MiwgMjU0LCAxNTYsIDEyOCwgMTEyLCAyMTgsIDIzLCAKLSAgICA2NCwgNzIsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE4LCA2NSwgNjQsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgMjE4LCAyMywgCi0gICAgNjQsIDcyLCAyMjgsIDU3LCAxMjgsIDExMiwgNDIsIDQzLCAyMDQsIDkzLCAyMjYsIDE3MSwgNDIsIDQ0LCAyMDQsIDkzLCAKLSAgICAyMjYsIDE3MSwgMjUwLCA4LCAyMTgsIDY0LCAyNTAsIDgsIDIxOCwgMjIsIDI1MCwgOCwgMjE4LCA2NSwgMTc3LCAxMjgsIAotICAgIDExMiwgMjUwLCA4LCAyMTgsIDIzLCAxNzcsIDEyOCwgMTEyLCAyMTgsIDY1LCA3MiwgMjE4LCAyMiwgMjE4LCAyMywgNzIsIAotICAgIDIxOCwgNjQsIDIxOCwgNjUsIDcyLCAyMTgsIDY0LCAyMTgsIDIzLCA3MiwgMjE4LCAyMiwgMjE4LCAyMywgMjUyLCAzOCwgCi0gICAgMjE4LCA2NCwgMjE4LCAyMywgMjUyLCAzOCwgMjIsIDIzNSwgNzEsIDI1MSwgODYsIDI0OCwgMTY1LCAyLCAyMTgsIDY0LCAKLSAgICAyNDUsIDE3OCwgNjQsIDIyNiwgMTc0LCAyNDYsIDExMSwgMjI1LCA1MSwgMiwgMjE3LCAxMywgMjE2LCAxNCwgMjE1LCAyNDEsIAotICAgIDIzNSwgMjA1LCAyNDQsIDI5LCAyMjgsIDcwLCAyMTksIDI1MywgNDMsIDIxNywgODgsIDIxOSwgMjUzLCAxMjQsIDIxNywgCi0gICAgODgsIDIxOSwgMjUzLCAxMjAsIDIxNywgODgsIDIyNSwgMTc1LCAyLCAyMjIsIDkzLCA2NywgMjUyLCAxNDksIDIxNSwgMjEyLCAKLSAgICA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0OSwgNDMsIDIxNSwgOTMsIDY3LCAyNTIsIDE0OSwgNTIsIDQzLCAyMTUsIAotICAgIDkzLCA1MiwgNjcsIDI1MiwgMTQ5LCA1MiwgNDMsIDIxNSwgOTMsIDIwMCwgMjQ4LCAxNjUsIDI0MywgMjUxLCA0MywgMjMxLCAKLSAgICA2OCwgNjQsIDUyLCAyMTMsIDIzOSwgMjE5LCAyNTMsIDEyNCwgMjE3LCA4OSwgMiwgMjI2LCAxMjcsIDIxOSwgMjUzLCAxMjAsIAotICAgIDIxNywgODksIDIsIDIxNCwgMTgzLCAyMTksIDI1MywgMTIwLCAyMTcsIDg5LCA3MiwgMjE5LCAyNTMsIDEyNCwgMjE3LCA4OCwgCi0gICAgNTIsIDEyNCwgMjE3LCA4OCwgNTIsIDEyMCwgMjE3LCA4OCwgNTIsIDIxOCwgMTA1LCAyMjgsIDU3LCA1MCwgMjIzLCA1MiwgCi0gICAgNTIsIDIxOCwgMTA1LCAyMjgsIDU3LCA1MCwgMjQ3LCAxNDYsIDIyOCwgNTcsIDI0NywgMTgzLCAyLCAyMjMsIDUyLCAyMjksIAotICAgIDEwNiwgMjE5LCA5NywgNjcsIDIzMiwgMjIwLCAyLCAyNTAsIDQ0LCA0OCwgNjcsIDIzMiwgMjIwLCAyLCAyNTAsIDQ0LCA1MSwgCi0gICAgMTI0LCAyMTcsIDg5LCAyLCAyNTAsIDQ0LCA1MSwgMjI2LCAxMiwgMiwgMjAzLCA5MSwgMjI2LCAxMiwgMiwgMjE2LCA5MCwgCi0gICAgMjI2LCAxNzEsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDksIDI1MSwgMjUyLCAyMjMsIDk0LCAyMTUsIDIxMiwgNjcsIDI1MiwgCi0gICAgMTQ5LCAyLCAyMDMsIDkxLCAyMTUsIDIxMiwgMjQ5LCAyMzUsIDIyNiwgMTcxLCAyMTUsIDIxMiwgMjI5LCA5NiwgMjMzLCAKLSAgICAyMCwgMjE1LCAyMTIsIDIyOSwgOTYsIDI0MiwgMTM2LCAyNDYsIDExOSwgMjE5LCA5OSwgMjMzLCAyMSwgMTc3LCAxMjgsIAotICAgIDExMiwgMjQ2LCAxMTksIDIxOSwgOTksIDI0MiwgMTM3LCAxNzcsIDEyOCwgMTEyLCAyMTUsIDIxMiwgMjE5LCA0OSwgMjUxLCAKLSAgICAyNTIsIDIyMywgOTQsIDIzMywgOTEsIDIxNSwgMjEyLCA2NywgMjUyLCAxNDksIDIyNiwgMTcxLCA1MiwgMjE5LCA0OSwgCi0gICAgMjI2LCAxNzEsIDcxLCA2NywgMTMwLCAyMzAsIDI5LCA3MSwgNjcsIDEzMCwgMjI4LCA2MSwgMjQ1LCAyMjgsIDcxLCA3NSwgCi0gICAgMjI4LCA2MSwgMjEyLCA5LCA3MSwgNzUsIDIxOSwgMzAsIDI0NSwgMjI4LCA3MSwgNzUsIDIxOSwgMzAsIDIxMiwgOSwgNzEsIAotICAgIDc1LCA0MywgNDQsIDcxLCA3NSwgMTQwLCA4NSwgNzUsIDIxNCwgMTUzLCA4NSwgNzUsIDI0NiwgMTEyLCA4NSwgNzUsIDIyOCwgCi0gICAgNjEsIDI0NSwgMjI4LCA4NSwgNzUsIDIyOCwgNjEsIDIxMiwgOSwgODUsIDc1LCAyMTksIDMwLCAyNDUsIDIyOCwgODUsIDc1LCAKLSAgICAyMTksIDMwLCAyMTIsIDksIDg1LCA3NSwgNDMsIDQ0LCA4NSwgNzUsIDEyMCwgMTI0LCA4NSwgNzUsIDk3LCA4MCwgMiwgCi0gICAgMjE2LCA3OCwgMjQ2LCAxMTEsIDk3LCA4MCwgMiwgMjE2LCA3OCwgMjE0LCAxNTIsIDE0MCwgODAsIDIsIDIxNiwgNzgsIAotICAgIDI0NiwgMTExLCAxNDAsIDgwLCAyLCAyMTYsIDc4LCAyMTQsIDE1MiwgNDIsIDIsIDIxNiwgMTUsIDE2MywgMjUxLCAyMjksIAotICAgIDQyLCAyLCAyNTEsIDE4MywgMTYzLCAyNTEsIDIyOSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgMjQ4LCA3LCAxNjMsIDI1MSwgCi0gICAgMjI5LCA0MiwgMiwgMjMyLCAxMTQsIDQzLCAyNDgsIDcsIDE2MywgMjUxLCAyMjksIDI0OCwgMSwgMiwgNDMsIDE2MywgMjUxLCAKLSAgICAyMjksIDI0OCwgMSwgMiwgNDQsIDE2MywgMjUxLCAyMjksIDI0OCwgMSwgMiwgMjE2LCAxNSwgMTYzLCAyNTEsIDIyOSwgCi0gICAgMjQ4LCAxLCAyLCAyNTEsIDE4MywgMTYzLCAyNTEsIDIyOSwgMjQ2LCAxMjYsIDIxOCwgMjM2LCA4NSwgMjMzLCA5MSwgMjE4LCAKLSAgICAyMzYsIDcxLCAyMzMsIDkxLCAyMTgsIDIzNiwgODUsIDIxMywgMTg3LCA0LCAyMTgsIDIzNiwgNzEsIDIxMywgMTg3LCA0LCAKLSAgICAyMTgsIDIzNiwgODUsIDIyNSwgMTkzLCA3MSwgMjI1LCAxOTMsIDcxLCAyNDEsIDIwMCwgODUsIDI0MSwgMjAwLCAyMDMsIAotICAgIDg1LCAyNDEsIDIwMCwgODUsIDIzMywgOTEsIDI1MCwgNDMsIDg1LCAyMzEsIDg3LCAyNDgsIDAsIDcxLCAyMzEsIDg3LCAKLSAgICAyNDgsIDAsIDg1LCAyMzEsIDg3LCAyMzIsIDExMCwgNzEsIDIzMSwgODcsIDIzMiwgMTEwLCA4NSwgNCwgMjQ4LCAwLCA4NSwgCi0gICAgNCwgMjMyLCAxMTAsIDcxLCA0LCAyMzIsIDExMCwgODUsIDIwMywgMjQ1LCAxNzIsIDcxLCAyMDMsIDI0NSwgMTcyLCA4NSwgCi0gICAgNjcsIDI0NSwgMTcyLCA3MSwgNjcsIDI0NSwgMTcyLCA0MywgODAsIDIsIDQsIDI1MCwgNDMsIDEzNCwgMTQwLCAyNTMsIAotICAgIDI1NSwgNDMsIDgwLCAyLCAzNywgMjI1LCAyNSwgMjAwLCAxNDAsIDIxOCwgMjMyLCA3NSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgCi0gICAgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCA1MiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyNDMsIDI1MSwgMTMwLCAKLSAgICAxNDAsIDIxNSwgNTgsIDIxNSwgMjEyLCAyNDgsIDE2NSwgNzUsIDE0MCwgODAsIDIsIDI0NiwgMTI2LCAyMTgsIDE0MSwgCi0gICAgMTQwLCA4MCwgMiwgMjE3LCA3OSwgMiwgNjcsIDkxLCAxNDAsIDgwLCAyLCAyMTcsIDc5LCAyLCA1MiwgNjcsIDkxLCAxNDAsIAotICAgIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc5LCAyLCA2NywgOTEsIDE0MCwgCi0gICAgMjE1LCA1OCwgODAsIDIsIDIxNywgNzksIDIsIDUyLCA2NywgOTEsIDE0MCwgODAsIDIxNiwgMTQwLCAyMTEsIDE3OCwgMjEyLCAKLSAgICAzNiwgODAsIDIyNSwgMTAsIDI0NywgMjAzLCAyMzMsIDUyLCAyNDUsIDEwNiwgNSwgNzIsIDE0MCwgNzUsIDIyMywgNTMsIAotICAgIDIxNiwgOTAsIDIyNiwgMTcyLCA3MiwgMTQwLCA3NSwgMTQwLCA4MCwgNzIsIDIyMywgNTMsIDI1NCwgMTU2LCAxMjgsIDExMiwgCi0gICAgOTcsIDgwLCAyMTYsIDE0MCwgMjQyLCAxMzYsIDk3LCA4MCwgMjE2LCAxNDAsIDIxOCwgMjIsIDE0MCwgMjI0LCAyNywgNzUsIAotICAgIDk3LCAyMjQsIDI3LCA3NSwgMjIzLCA1MywgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCA5NywgNzUsIDk3LCA4MCwgNzIsIDIyMywgCi0gICAgNTMsIDI1NCwgMTU2LCAxMjgsIDExMiwgMjE2LCA5MCwgMjI2LCAxNzIsIDcyLCAxNDAsIDc1LCAxNDAsIDgwLCA3MiwgMjU0LCAKLSAgICAxNTYsIDEyOCwgMTEyLCAxNDAsIDgwLCA3MiwgMjIzLCA1MywgMjE2LCA5MCwgMjI2LCAxNzEsIDk3LCA4MCwgNzIsIDIyMywgCi0gICAgNTMsIDIxNiwgOTAsIDIyNiwgMTcxLCA3MSwgMjMxLCA4NywgMjE4LCAxNTgsIDg1LCA0LCAyMTgsIDE1OCwgNzEsIDQsIAotICAgIDIxOCwgMTU4LCA4NSwgMjIyLCAyNTAsIDIyNSwgMTkzLCA3MSwgMjIyLCAyNTAsIDIyNSwgMTkzLCAxMTQsIDIzMywgOTEsIAotICAgIDI1MCwgNDMsIDExNCwgMjI2LCAxMjgsIDIsIDIyNiwgMTI4LCAyMzUsIDIyMiwgMTE0LCAyNTAsIDQ0LCAyLCAyNTAsIDQ0LCAKLSAgICAyMzUsIDIyMiwgMTE0LCAyNTAsIDQzLCAxMTQsIDM3LCAyMjIsIDAsIDE0NSwgNiwgMSwgMjUzLCAxNjcsIDE0NSwgNiwgMSwgCi0gICAgMjUxLCAxMjUsIDE0NSwgNiwgMSwgMjEzLCAyNTMsIDE0NSwgNiwgMSwgMjQyLCAxOTIsIDE0NSwgNiwgMSwgMjQ3LCAxNDgsIAotICAgIDE0NSwgNiwgMSwgMjExLCAyMSwgMTQ1LCA2LCAxLCAyMTAsIDY4LCAxNDUsIDYsIDEsIDI0NiwgNDIsIDE0NSwgNiwgMSwgCi0gICAgMjEwLCA5MSwgMTQ1LCA2LCAxLCAyMzUsIDE1NCwgMTQ1LCA2LCAxLCA2NSwgMjM1LCAxNTQsIDE0NSwgNiwgMSwgNzQsIAotICAgIDE0NSwgNiwgMSwgMjQ3LCAxNjgsIDE0NSwgNiwgMSwgMjM0LCAyNDYsIDE0NSwgNiwgMSwgMjMyLCAxOTIsIDE0NSwgNiwgMSwgCi0gICAgMjMwLCAzNCwgMTQ1LCA2LCAxLCAyMjksIDE5NiwgMTQ1LCA2LCAxLCAyMjYsIDE4OSwgMTQ1LCA2LCAxLCAyMjUsIDcsIAotICAgIDE0NSwgNiwgMSwgMjIyLCAyMzAsIDE0NSwgNiwgMSwgMjE5LCA4NSwgMTQ1LCA2LCAxLCAyMTUsIDgxLCAxNDUsIDYsIDEsIAotICAgIDIxNCwgMjAxLCAxNDUsIDYsIDEsIDI0MywgMjU0LCAxNDUsIDYsIDEsIDI0MSwgMjA2LCAxNDUsIDYsIDEsIDIyNiwgMTM5LCAKLSAgICAxNDUsIDYsIDEsIDIyNSwgMjI0LCAxNDUsIDYsIDEsIDIxOSwgMjMwLCAxNDUsIDYsIDEsIDIxNSwgMTY4LCAxNDUsIDYsIDEsIAotICAgIDI1MCwgODMsIDE0NSwgNiwgMSwgMjIwLCAxMDQsIDE0NSwgNiwgMSwgMjExLCAyNywgMTQ1LCA2LCAxLCAyMTEsIDI5LCAKLSAgICAxNDUsIDYsIDEsIDIxMSwgNTcsIDE0NSwgNiwgMSwgMjE4LCAyNTUsIDE2MiwgMTQ1LCA2LCAxLCAyMTAsIDIxMiwgMTQ1LCAKLSAgICA2LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3OCwgMTQ1LCA2LCAxLCAyMTAsIAotICAgIDI0NCwgMTQ1LCA2LCAxLCAyMzUsIDE5MSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCAKLSAgICA2LCAxLCAyMzUsIDE5MSwgMjUyLCAxLCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyNDQsIDkwLCAxNDUsIDYsIDEsIDIzNSwgCi0gICAgMTUyLCAxNDUsIDYsIDEsIDIxOSwgMjI5LCAxNDUsIDYsIDEsIDIxNSwgMjAzLCA2MSwgMTQ1LCA2LCAxLCAyMzMsIDgxLCAKLSAgICAyMzAsIDM0LCAxNDUsIDQsIDEsIDI1MywgMTY3LCAxNDUsIDQsIDEsIDI1MSwgMTI1LCAxNDUsIDQsIDEsIDIxMywgMjUzLCAKLSAgICAxNDUsIDQsIDEsIDI0MiwgMTkyLCAxNDUsIDQsIDEsIDI0NywgMTQ4LCAxNDUsIDQsIDEsIDIxMSwgMjEsIDE0NSwgNCwgMSwgCi0gICAgMjEwLCA2OCwgMTQ1LCA0LCAxLCAyNDYsIDQyLCAxNDUsIDQsIDEsIDIxMCwgOTEsIDE0NSwgNCwgMSwgMjM1LCAxNTQsIAotICAgIDE0NSwgNCwgMSwgNjUsIDIzNSwgMTU0LCAxNDUsIDQsIDEsIDc0LCAxNDUsIDQsIDEsIDI0NywgMTY4LCAxNDUsIDQsIDEsIAotICAgIDIzNCwgMjQ2LCAxNDUsIDQsIDEsIDIzMiwgMTkyLCAxNDUsIDQsIDEsIDIzMCwgMzQsIDE0NSwgNCwgMSwgMjI5LCAxOTYsIAotICAgIDE0NSwgNCwgMSwgMjI2LCAxODksIDE0NSwgNCwgMSwgMjI1LCA3LCAxNDUsIDQsIDEsIDIyMiwgMjMwLCAxNDUsIDQsIDEsIAotICAgIDIxOSwgODUsIDE0NSwgNCwgMSwgMjE1LCA4MSwgMTQ1LCA0LCAxLCAyMTQsIDIwMSwgMTQ1LCA0LCAxLCAyNDMsIDI1NCwgCi0gICAgMTQ1LCA0LCAxLCAyNDEsIDIwNiwgMTQ1LCA0LCAxLCAyMjYsIDEzOSwgMTQ1LCA0LCAxLCAyMjUsIDIyNCwgMTQ1LCA0LCAxLCAKLSAgICAyMTksIDIzMCwgMTQ1LCA0LCAxLCAyMTUsIDE2OCwgMTQ1LCA0LCAxLCAyNTAsIDgzLCAxNDUsIDQsIDEsIDIyMCwgMTA0LCAKLSAgICAxNDUsIDQsIDEsIDIxMSwgMjcsIDE0NSwgNCwgMSwgMjExLCAyOSwgMTQ1LCA0LCAxLCAyMTEsIDU3LCAxNDUsIDQsIDEsIAotICAgIDIxOCwgMjU1LCAxNjIsIDE0NSwgNCwgMSwgMjEwLCAyMTIsIDE0NSwgNCwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgNCwgCi0gICAgMjEwLCAxODQsIDIsIDIxNywgNzgsIDE0NSwgNCwgMSwgMjEwLCAyNDQsIDE0NSwgNCwgMSwgMjM1LCAxOTEsIDQsIDIxMCwgCi0gICAgMTgzLCAxNDUsIDQsIDEsIDI1MiwgMSwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjM1LCAxOTEsIDI1MiwgMSwgMjEwLCAxODMsIAotICAgIDE0NSwgNCwgMSwgMjQ0LCA5MCwgMTQ1LCA0LCAxLCAyMzUsIDE1MiwgMTQ1LCA0LCAxLCAyMTksIDIyOSwgMTQ1LCA0LCAxLCAKLSAgICAyMTUsIDIwMywgNjEsIDE0NSwgNCwgMSwgMjMzLCA4MSwgMjMwLCAzNCwgNywgNiwgMSwgMjMzLCAxNTUsIDIsIDUyLCAxMzAsIAotICAgIDcsIDQsIDEsIDIzMywgMTU1LCAyLCA1MiwgMTMwLCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMjMwLCAyMjksIDE4NCwgNywgNiwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDkxLCA3LCA2LCAxLCAyMjMsIDIyNywgMiwgMjE3LCA3OCwgNywgNCwgMSwgMTE2LCAyLCA5MSwgCi0gICAgNywgNCwgMSwgMjE3LCAxNTQsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIAotICAgIDI0MiwgNjgsIDIsIDI0OCwgNDcsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDI0OCwgNDcsIDcsIDQsIDEsIDIzNSwgMzAsIDIsIAotICAgIDI0OCwgNDcsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMjQ4LCA0NywgNywgCi0gICAgNiwgMSwgMjU0LCAxNTEsIDcsIDYsIDEsIDIzMiwgNTUsIDIsIDEwMywgNywgNiwgMSwgMjE1LCA5NCwgNjEsIDcsIDYsIDEsIAotICAgIDIxNSwgOTQsIDI1NCwgMTUxLCA3LCA0LCAxLCAyMTQsIDEwNiwgMiwgNDQsIDEwMywgNywgNiwgMSwgMjEyLCA5OSwgMiwgCi0gICAgMTAzLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDksIDEwOCwgNywgNiwgMSwgCi0gICAgMTYzLCAyNDIsIDY3LCA3LCA0LCAxLCAxNjMsIDI0MiwgNjcsIDcsIDQsIDEsIDIxNywgNzYsIDIyNSwgMTM2LCA3LCA0LCAxLCAKLSAgICAxNjAsIDIsIDIyOCwgNTUsIDcsIDQsIDEsIDIxNSwgOTQsIDIyMywgMjI3LCAyLCAyMTcsIDc4LCA3LCA0LCAxLCAxNDQsIDIsIAotICAgIDEyMSwgMjIyLCAyMzcsIDIzNSwgMjIyLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCA3NiwgNywgMjE4LCA2NiwgNCwgMSwgMjM1LCAKLSAgICAxNTAsIDU4LCAxLCA2LCAyMTQsIDEwNSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjE3LCAyNTEsIDIxNywgNzgsIDcsIDYsIDEsIAotICAgIDIxMCwgMTYwLCAyLCAyMTcsIDI1MSwgMjE3LCA3OCwgODEsIDYsIDEsIDI1NCwgMTczLCA4MSwgNCwgMSwgMjU0LCAxNzMsIAotICAgIDgxLCA2LCAxLCAyMTMsIDE3MywgODEsIDQsIDEsIDIxMywgMTczLCA4MSwgNiwgMSwgMjQzLCAxMTQsIDgxLCA0LCAxLCAKLSAgICAyNDMsIDExNCwgODEsIDYsIDEsIDI0OCwgMTk5LCA4MSwgNCwgMSwgMjQ4LCAxOTksIDgxLCA2LCAxLCAyNDUsIDIwMiwgODEsIAotICAgIDQsIDEsIDI0NSwgMjAyLCA4MSwgNiwgMSwgMjE5LCAzNSwgODEsIDQsIDEsIDIxOSwgMzUsIDgxLCA2LCAxLCAyMTAsIDEwMSwgCi0gICAgODEsIDQsIDEsIDIxMCwgMTAxLCA4MSwgNiwgMSwgMjQxLCAyNTUsIDgxLCA0LCAxLCAyNDEsIDI1NSwgODEsIDYsIDEsIAotICAgIDIxNiwgMTc4LCA4MSwgNCwgMSwgMjE2LCAxNzgsIDgxLCA2LCAxLCAyNDAsIDEyMywgODEsIDQsIDEsIDI0MCwgMTIzLCA4MSwgCi0gICAgNiwgMSwgMjM0LCAyMzMsIDgxLCA0LCAxLCAyMzQsIDIzMywgODEsIDYsIDEsIDIzMywgNzgsIDgxLCA0LCAxLCAyMzMsIDc4LCAKLSAgICA4MSwgNiwgMSwgMjMwLCAyMzUsIDgxLCA0LCAxLCAyMzAsIDIzNSwgODEsIDYsIDEsIDIyOCwgMjM4LCA4MSwgNCwgMSwgCi0gICAgMjI4LCAyMzgsIDgxLCA2LCAxLCAyMzMsIDIzOSwgODEsIDQsIDEsIDIzMywgMjM5LCA4MSwgNiwgMSwgNzgsIDgxLCA0LCAxLCAKLSAgICA3OCwgODEsIDYsIDEsIDIyNSwgMTExLCA4MSwgNCwgMSwgMjI1LCAxMTEsIDgxLCA2LCAxLCAyMjIsIDIxMywgODEsIDQsIDEsIAotICAgIDIyMiwgMjEzLCA4MSwgNiwgMSwgMjE5LCAxNjcsIDgxLCA0LCAxLCAyMTksIDE2NywgODEsIDYsIDEsIDIxNywgNDIsIDgxLCAKLSAgICA0LCAxLCAyMTcsIDQyLCA4MSwgNiwgMSwgMjE0LCAyMjksIDgxLCA0LCAxLCAyMTQsIDIyOSwgODEsIDYsIDEsIDI0NCwgCi0gICAgMTI5LCA4MSwgNCwgMSwgMjQ0LCAxMjksIDgxLCA2LCAxLCAyMzQsIDExOCwgODEsIDQsIDEsIDIzNCwgMTE4LCA4MSwgNiwgCi0gICAgMSwgMjI0LCAxNjQsIDgxLCA0LCAxLCAyMjQsIDE2NCwgODEsIDYsIDEsIDIyNiwgMTgyLCA4MSwgNCwgMSwgMjI2LCAxODIsIAotICAgIDgxLCA2LCAxLCAyNDgsIDUsIDI1NCwgMTc5LCA4MSwgNCwgMSwgMjQ4LCA1LCAyNTQsIDE3OSwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjU0LCAyMDUsIDgxLCA0LCAxLCA1NSwgODEsIDI1NCwgMjA1LCA4MSwgNiwgMSwgMjQ5LCAxMjMsIDI0NSwgMjAyLCA4MSwgCi0gICAgNCwgMSwgMjQ5LCAxMjMsIDI0NSwgMjAyLCA4MSwgNiwgMSwgMjQ4LCA1LCAyMzQsIDIzMywgODEsIDQsIDEsIDI0OCwgNSwgCi0gICAgMjM0LCAyMzMsIDgxLCA2LCAxLCAyNDgsIDUsIDIyOCwgMjM4LCA4MSwgNCwgMSwgMjQ4LCA1LCAyMjgsIDIzOCwgODEsIDYsIAotICAgIDEsIDI0OSwgMTIzLCAyMjgsIDIzOCwgODEsIDQsIDEsIDI0OSwgMTIzLCAyMjgsIDIzOCwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjI2LCAxODIsIDgxLCA0LCAxLCA1NSwgODEsIDIyNiwgMTgyLCA4MSwgNiwgMSwgMjIxLCAyNDgsIDgxLCA0LCAxLCAyMjEsIAotICAgIDI0OCwgODEsIDYsIDEsIDI0OSwgMTM2LCAyMjAsIDU3LCA4MSwgNCwgMSwgMjQ5LCAxMzYsIDIyMCwgNTcsIDgxLCA2LCAxLCAKLSAgICA1NSwgODEsIDIyMCwgNTcsIDgxLCA0LCAxLCA1NSwgODEsIDIyMCwgNTcsIDgxLCA2LCAxLCA1NSwgODEsIDI0NSwgODMsIAotICAgIDgxLCA0LCAxLCA1NSwgODEsIDI0NSwgODMsIDgxLCA2LCAxLCAyNTQsIDE5MSwgMjM0LCAxMjMsIDgxLCA0LCAxLCAyNTQsIAotICAgIDE5MSwgMjM0LCAxMjMsIDgxLCA2LCAxLCAyNDgsIDUsIDI0MSwgNTIsIDgxLCA0LCAxLCAyNDgsIDUsIDI0MSwgNTIsIDgxLCAKLSAgICA2LCAxLCA1NSwgODEsIDI0MSwgNTIsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgNTIsIDgxLCA2LCAxLCA1NSwgODEsIDE2MiwgCi0gICAgODEsIDQsIDEsIDU1LCA4MSwgMTYyLCA4MSwgNiwgMSwgMjMzLCAxNTQsIDE2MiwgODEsIDQsIDEsIDIzMywgMTU0LCAxNjIsIAotICAgIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjI0LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDIyNCwgODEsIDYsIDEsIDU1LCA4MSwgCi0gICAgMjQyLCAyLCA4MSwgNCwgMSwgNTUsIDgxLCAyNDIsIDIsIDgxLCA2LCAxLCA1NSwgODEsIDI0MywgMTA5LCA4MSwgNCwgMSwgCi0gICAgNTUsIDgxLCAyNDMsIDEwOSwgODEsIDYsIDEsIDU1LCA4MSwgMjQ3LCAxNzEsIDgxLCA0LCAxLCA1NSwgODEsIDI0NywgMTcxLCAKLSAgICA4MSwgNiwgMSwgNTUsIDgxLCAyMjAsIDI0LCA4MSwgNCwgMSwgNTUsIDgxLCAyMjAsIDI0LCA4MSwgNiwgMSwgNTUsIDIyNywgCi0gICAgMjEyLCAyMjAsIDI0LCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjAsIDI0LCA4MSwgNiwgMSwgNTUsIDIyNywgMjEyLCAKLSAgICAyMjksIDMyLCA4MSwgNCwgMSwgNTUsIDIyNywgMjEyLCAyMjksIDMyLCA4MSwgNiwgMSwgNTUsIDIyNywgMjEyLCAyMjcsIAotICAgIDE1MiwgODEsIDQsIDEsIDU1LCAyMjcsIDIxMiwgMjI3LCAxNTIsIDgxLCA2LCAxLCA1NSwgMjI3LCAyMTIsIDIxMiwgMzcsIAotICAgIDgxLCA0LCAxLCA1NSwgMjI3LCAyMTIsIDIxMiwgMzcsIDgxLCAxNiwgMjM0LCAyNTIsIDgxLCAxNiwgMjMwLCAyMzYsIDIyMiwgCi0gICAgMjEzLCA4MSwgMTYsIDIyNSwgMTEyLCAyMjIsIDIxMywgODEsIDE2LCAyMTgsIDE0OSwgODEsIDE2LCAyMTcsIDQzLCAyMjIsIAotICAgIDIxMywgODEsIDE2LCAyMzQsIDExOSwgMjIyLCAyMTMsIDgxLCAxNiwgMjIwLCAyNSwgMjE5LCAxNjcsIDgxLCA2LCAxLCAKLSAgICAyNDksIDEyMywgMjIwLCA1NywgODEsIDQsIDEsIDI0OSwgMTIzLCAyMjAsIDU3LCA4MSwgNiwgMSwgMjQ5LCAxMjMsIDI0MywgCi0gICAgMTA5LCA4MSwgNCwgMSwgMjQ5LCAxMjMsIDI0MywgMTA5LCA4MSwgMzgsIDIyOCwgMjM5LCA0OCwgODEsIDM4LCAyMTgsIAotICAgIDI0OSwgMjUzLCAyMzIsIDgxLCAzOCwgMjE4LCAyNDksIDIzMywgMjcsIDgxLCA2LCAxLCAyNTEsIDIwNywgMjM0LCAxMjMsIAotICAgIDgxLCA0LCAxLCAyNTEsIDIwNywgMjM0LCAxMjMsIDgxLCA1NSwgMjI3LCAyMTIsIDI0MywgMjM2LCAyMTgsIDEzMSwgODEsIAotICAgIDU1LCAyMjcsIDIxMiwgMjQ3LCAyMDUsIDIyNCwgMTYsIDc5LCA4MSwgNTUsIDIyNywgMjEyLCAyMzUsIDI0NCwgMjI0LCAxNiwgCi0gICAgNzksIDgxLCA1NSwgMjI3LCAyMTIsIDIxMywgMjQxLCAyNDcsIDE4MCwgODEsIDI0NCwgMTAsIDEyMywgMjQyLCAzNCwgODEsIAotICAgIDI0MywgMjM2LCAyMTgsIDEzMSwgODEsIDIzMCwgMTI5LCAyNDcsIDE4MCwgOTgsIDQsIDEsIDI1NCwgMTMxLCA5OCwgNCwgMSwgCi0gICAgMjUyLCAxNjAsIDk4LCA0LCAxLCAyNDMsIDExMywgOTgsIDQsIDEsIDI0NywgMTM2LCA5OCwgNCwgMSwgMjQ1LCAxNTgsIDk4LCAKLSAgICA0LCAxLCAyMTMsIDE2MCwgOTgsIDQsIDEsIDIxMCwgODksIDk4LCA0LCAxLCAyMTcsIDYxLCA5OCwgNCwgMSwgMjM2LCA2LCAKLSAgICA5OCwgNCwgMSwgMjM0LCAyNDAsIDk4LCA0LCAxLCAyMzMsIDg3LCA5OCwgNCwgMSwgMjMxLCAxOTAsIDk4LCA0LCAxLCAyMjksIAotICAgIDIwMCwgOTgsIDQsIDEsIDIyNiwgMjAwLCA5OCwgNCwgMSwgMjI2LCAyMSwgOTgsIDQsIDEsIDIxMCwgNzgsIDk4LCA0LCAxLCAKLSAgICAyMjMsIDE3NCwgOTgsIDQsIDEsIDIyMSwgMjQ1LCA5OCwgNCwgMSwgMjE3LCA1MSwgOTgsIDQsIDEsIDIxNCwgMTkwLCA5OCwgCi0gICAgNCwgMSwgMjI1LCAxNDMsIDk4LCA0LCAxLCAyMzQsIDEyNywgOTgsIDQsIDEsIDI0MiwgMjQ4LCA5OCwgNCwgMSwgMjI0LCAKLSAgICA3NiwgOTgsIDQsIDEsIDIyMCwgMjIsIDk4LCA0LCAxLCAyNTAsIDEwNSwgOTgsIDQsIDEsIDI1MSwgMTUsIDk4LCA0LCAxLCAKLSAgICAyMzUsIDEwNiwgOTgsIDQsIDEsIDI1MCwgNDgsIDk4LCA0LCAxLCAyNTAsIDE1MSwgOTgsIDQsIDEsIDIxMSwgMTYzLCA5OCwgCi0gICAgNCwgMSwgMjM1LCAxMTcsIDk4LCA0LCAxLCAyNDIsIDUwLCA5OCwgNCwgMSwgMjQxLCAyNDUsIDk4LCA0LCAxLCAyNDEsIAotICAgIDE4MiwgOTgsIDQsIDEsIDIxMiwgMjIsIDk4LCA0LCAxLCAyNDIsIDExLCA5OCwgNCwgMSwgMjQxLCA3MiwgOTgsIDQsIDEsIAotICAgIDIxMCwgMjQ2LCA5OCwgNCwgMSwgMjU0LCAyNDEsIDIxNiwgMTA5LCAxLCAxOTIsIDIxNiwgMTA5LCAxLCAyMTEsIDk5LCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA5OCwgMjE2LCAxMDksIDEsIDIxMSwgODgsIDIxNiwgMTA5LCAxLCAyMTEsIDg2LCAyMTYsIAotICAgIDEwOSwgMSwgMjUyLCA0MCwgMjU1LCAyNSwgMjExLCA4MSwgMjE2LCAxMDksIDEsIDIxMSwgODEsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTEsIDk2LCAyMTYsIDEwOSwgMSwgMjExLCA5MywgMjE2LCAxMDksIDEsIDIxMSwgOTUsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDk0LCAyMTYsIDEwOSwgMSwgMjExLCAxMiwgMjE2LCAxMDksIDEsIDIxMSwgOTAsIDIxNiwgMTA5LCAxLCAyMTEsIDc5LCAKLSAgICAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgNzksIDIxNiwgMTA5LCAxLCAyMTEsIDc2LCAyMTYsIDEwOSwgMSwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDksIDEsIDI1MiwgNDAsIDI1NSwgMjUsIDIxMSwgODQsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCAKLSAgICA4NCwgMjE2LCAxMDksIDEsIDIxMSwgODMsIDIxNiwgMTA5LCAxLCAyMTEsIDEwMywgMjE2LCAxMDksIDEsIDIxMSwgNzcsIAotICAgIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA3NywgMjE2LCAxMDksIDEsIDIxMSwgNjYsIDIxNiwgMTA5LCAxLCAyMTUsIAotICAgIDExNiwgMjExLCA2NiwgMjE2LCAxMDksIDEsIDIxMSwgOCwgMjE2LCAxMDksIDEsIDIxMSwgNDksIDIxNiwgMTA5LCAxLCAKLSAgICAyNTQsIDIxNiwgMjExLCA0OSwgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDQ5LCAyMTYsIDEwOSwgMSwgMjExLCA3NSwgCi0gICAgMjE2LCAxMDksIDEsIDIxMSwgNzQsIDIxNiwgMTA5LCAxLCAyMTEsIDcxLCAyMTYsIDEwOSwgMSwgMjE1LCAxMTYsIDIxMSwgCi0gICAgODUsIDIxNiwgMTA5LCAxLCAyMTUsIDExNiwgMjExLCA2OSwgMjE2LCAxMDksIDEsIDIxMSwgNjcsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTAsIDIxMiwgMjE2LCAxMDksIDEsIDIxMSwgNjQsIDIxNiwgMTA5LCAxLCAyMTEsIDYzLCAyMTYsIDEwOSwgMSwgMjExLCAKLSAgICA4NywgMjE2LCAxMDksIDEsIDIxNSwgMTE2LCAyMTEsIDg3LCAyMTYsIDEwOSwgMSwgMjUzLCAxNzEsIDIxMSwgODcsIDIxNiwgCi0gICAgMTA5LCAxLCAyMTEsIDYyLCAyMTYsIDEwOSwgMSwgMjExLCA2MCwgMjE2LCAxMDksIDEsIDIxMSwgNjEsIDIxNiwgMTA5LCAxLCAKLSAgICAyMTEsIDU5LCAyMTYsIDEwOSwgMSwgMjExLCA1OCwgMjE2LCAxMDksIDEsIDIxMSwgOTcsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDU2LCAyMTYsIDEwOSwgMSwgMjExLCA1NCwgMjE2LCAxMDksIDEsIDIxMSwgNTMsIDIxNiwgMTA5LCAxLCAyMTEsIDUyLCAKLSAgICAyMTYsIDEwOSwgMSwgMjExLCA1MCwgMjE2LCAxMDksIDEsIDIxNywgMzUsIDIxMSwgNTAsIDIxNiwgMTA5LCAxLCAyMTEsIAotICAgIDQ4LCAyMTYsIDEwOSwgMSwgMjExLCA0NywgMjE2LCAxMDksIDEsIDIxMCwgMjQ0LCAyMTYsIDEwOSwgNTgsIDEsIDIzMywgCi0gICAgMTMyLCA3OSwgMjE2LCAxMDksIDIyMCwgMTQwLCA3OSwgMjE2LCAxMDksIDExNywgMjM1LCA2OSwgMjksIDMsIDIzMiwgMTYxLCAKLSAgICAyOSwgMywgMjMwLCAxNjUsIDI5LCAzLCAyMjIsIDIxMSwgMjksIDMsIDIxOSwgNTksIDI5LCAzLCAyMjAsIDgsIDI5LCAzLCAKLSAgICAyNTEsIDIxMiwgMjksIDMsIDIxNiwgNDIsIDI5LCAzLCAyNDksIDI0NSwgMjksIDMsIDIyOCwgNzcsIDI5LCAzLCAyMjcsIAotICAgIDEzNywgMjksIDMsIDI0MiwgMTg3LCAyMjcsIDQsIDI5LCAzLCAyMTAsIDIyLCAyOSwgMywgMjQ3LCAxNTEsIDI5LCAzLCAKLSAgICAyNDgsIDExMiwgMjksIDMsIDIzNSwgNzMsIDI5LCAzLCAyMTYsIDE1NiwgMjksIDMsIDI1MCwgOTMsIDI5LCAzLCAyMjUsIAotICAgIDEyMywgMjksIDMsIDIyNSwgMTgsIDI5LCAzLCAyNDMsIDYsIDI5LCAzLCAyNDMsIDIsIDI5LCAzLCAyNDMsIDMsIDI5LCAzLCAKLSAgICAyNDMsIDQsIDI5LCAzLCAyMTgsIDIyNSwgMjksIDMsIDIxOCwgMTgxLCAyOSwgMywgMjE4LCAxOTQsIDI5LCAzLCAyMTgsIAotICAgIDIyNCwgMjksIDMsIDIxOCwgMTk4LCAyOSwgMywgMjE4LCAxOTksIDI5LCAzLCAyMTgsIDE4NiwgMjksIDMsIDI1MCwgMjIxLCAKLSAgICAyOSwgMywgMjUwLCAyMDAsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMjIwLCAyOSwgMywgMjUwLCAyMTgsIDI5LCAKLSAgICAzLCAyNTAsIDIxOSwgMjksIDMsIDI1MCwgMjAxLCAyOSwgMywgMjA5LCAyNDMsIDI5LCAzLCAyMDksIDIyMSwgMjksIDMsIAotICAgIDIwOSwgMjM0LCAyOSwgMywgMjA5LCAyNDIsIDI5LCAzLCAyMDksIDIzNywgMjksIDMsIDIwOSwgMjM4LCAyOSwgMywgMjA5LCAKLSAgICAyMjYsIDI5LCAzLCAyNTAsIDIxNiwgMjksIDMsIDI1MCwgMjAzLCAyOSwgMywgMjUwLCAyMDUsIDI5LCAzLCAyNTAsIDIxNSwgCi0gICAgMjksIDMsIDI1MCwgMjEzLCAyOSwgMywgMjUwLCAyMTQsIDI5LCAzLCAyNTAsIDIwNCwgMjksIDMsIDIyMywgMjM5LCAyOSwgCi0gICAgMywgMjIzLCAyMjksIDI5LCAzLCAyMjMsIDIzNSwgMjksIDMsIDIyMywgMjM4LCAyOSwgMywgMjIzLCAyMzYsIDI5LCAzLCAKLSAgICAyMjMsIDIzNywgMjksIDMsIDIyMywgMjM0LCAyOSwgMywgMjMzLCAxNjUsIDI5LCAzLCAyMzMsIDE1NywgMjksIDMsIDIzMywgCi0gICAgMTYwLCAyOSwgMywgMjMzLCAxNjQsIDI5LCAzLCAyMzMsIDE2MSwgMjksIDMsIDIzMywgMTYyLCAyOSwgMywgMjMzLCAxNTgsIAotICAgIDI5LCAzLCAyMTEsIDEzMCwgMjksIDMsIDIxMSwgMTIwLCAyOSwgMywgMjExLCAxMjYsIDI5LCAzLCAyMTEsIDEyOSwgMjksIAotICAgIDMsIDIxMSwgMTI3LCAyOSwgMywgMjExLCAxMjgsIDI5LCAzLCAyMTEsIDEyNSwgMjksIDMsIDI0MiwgNzgsIDI5LCAzLCAKLSAgICAyNDIsIDY5LCAyOSwgMywgMjQyLCA3MiwgMjksIDMsIDI0MiwgNzcsIDI5LCAzLCAyNDIsIDc0LCAyOSwgMywgMjQyLCA3NSwgCi0gICAgMjksIDMsIDI0MiwgNzEsIDM4LCAzMywgMSwgMjUyLCA4MywgMzgsIDMzLCAxLCAyMTMsIDI1NSwgMzgsIDMzLCAxLCAyNDIsIAotICAgIDI0MywgMzgsIDMzLCAxLCAyNDgsIDk4LCAzOCwgMzMsIDEsIDIxMCwgNzQsIDM4LCAzMywgMSwgMjEwLCA5NCwgMzgsIDMzLCAKLSAgICAxLCAxNzYsIDM4LCAzMywgMSwgMjQ1LCAxODIsIDM4LCAzMywgMSwgMjQ1LCAxNjcsIDM4LCAzMywgMSwgMjQ1LCAxNTgsIAotICAgIDM4LCAzMywgMSwgNzgsIDM4LCAzMywgMSwgMjI1LCAyMjQsIDM4LCAzMywgMSwgMjQ1LCAxMDAsIDM4LCAzMywgMSwgMjQ1LCAKLSAgICA5MCwgMzgsIDMzLCAxLCAyMTcsIDIzLCAzOCwgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OSwgMzgsIDMzLCAxLCAKLSAgICAyNTAsIDEzOSwgMzgsIDMzLCAxLCAyMjAsIDEwNCwgMzgsIDMzLCAxLCAyMjAsIDY3LCAzOCwgMzMsIDEsIDI0NCwgOTAsIAotICAgIDM4LCAzMywgMSwgMjQ1LCA4OSwgMzgsIDMzLCAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDY3LCAzOCwgMzMsIDEsIDI0NywgCi0gICAgMTY5LCAzOCwgMzMsIDEsIDIzMCwgMTQ1LCAyMTQsIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgCi0gICAgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTkwLCA2MSwgMzgsIDMzLCAxLCAyMzIsIDE5OCwgMjEwLCAxODMsIDM4LCAzMywgMSwgCi0gICAgMjUyLCAxLCAyMTAsIDE4MywgMzgsIDMzLCAxLCAyMzUsIDE5MCwgMjUyLCAxLCAyMTAsIDE4MywgNDQsIDI1NCwgMTE4LCAKLSAgICAyMTgsIDYxLCAyMzEsIDE1OSwgNDQsIDI1NCwgMTE4LCAyNDYsIDEyNiwgMjE4LCA2MSwgMjMxLCAxNTksIDQzLCAyMTgsIAotICAgIDYxLCAxMjcsIDQ0LCAyMTgsIDYxLCAxMjcsIDQzLCAyNDYsIDEyNiwgMjE4LCA2MSwgMTI3LCA0NCwgMjQ2LCAxMjYsIDIxOCwgCi0gICAgNjEsIDEyNywgMjIzLCAxNjAsIDIzNSwgMjA5LCAyMzEsIDE1OSwgMjIzLCAxNjAsIDI0NiwgMTI2LCAyMzUsIDIwOSwgMjMxLCAKLSAgICAxNTksIDI0NiwgMTI2LCAyMTUsIDI0MiwgMjMxLCAxNTksIDQzLCAyMTUsIDI0MiwgMTI3LCA0NCwgMjE1LCAyNDIsIDEyNywgCi0gICAgMjIzLCAxNjAsIDIxOCwgMjM2LCA0MywgMjIzLCAxNjAsIDIyNiwgMjAyLCAxMjcsIDQ0LCAyMjMsIDE2MCwgMjI2LCAyMDIsIAotICAgIDEyNywgMjQ1LCAyMTgsIDI0OSwgMTY2LCAyMjYsIDE3LCAyNDQsIDMwLCAyMjYsIDE3LCAyMjMsIDUyLCAyNDQsIDMwLCAKLSAgICAyMjYsIDE3LCAyNDAsIDE3MiwgMjQ2LCAxMjYsIDIyNiwgMjU1LCAyNDYsIDExMiwgMjU0LCAxMjcsIDIxNCwgMTUzLCAyNTQsIAotICAgIDEyNywgMjQ2LCAxMjYsIDIyMiwgMjUwLCAyNTQsIDExNywgNTIsIDIyNiwgMjUyLCAyNDAsIDE3NSwgMjM1LCAyMDAsIDIzNSwgCi0gICAgMjA4LCAyMjYsIDYzLCAyNTEsIDE2MiwgMjQwLCAxNzYsIDIsIDI0OCwgOSwgMjE2LCA5MCwgMiwgMjIyLCAyMzcsIDQ4LCAKLSAgICA0MywgMTIxLCAyMjYsIDksIDEyNywgNDQsIDEyMSwgMjI2LCA5LCAxMjcsIDIxNiwgOTAsIDIsIDU5LCA0OCwgMjE2LCA5MCwgCi0gICAgMiwgNTksIDUxLCA0MywgNjcsIDI1MiwgMTQ5LCAyLCAyMjQsIDEwLCA0NCwgNjcsIDI1MiwgMTQ5LCAyLCAyMjQsIDEwLCAKLSAgICAyMTYsIDE1LCA0MywgMTYzLCAxMjcsIDIxNiwgMTUsIDQ0LCAxNjMsIDEyNywgMjUxLCAxODMsIDQzLCAxNjMsIDEyNywgCi0gICAgMjUxLCAxODMsIDQ0LCAxNjMsIDEyNywgNDMsIDIxOSwgMTg5LCAxMDQsIDEyNywgNDQsIDIxOSwgMTg5LCAxMDQsIDEyNywgCi0gICAgNDMsIDUyLCAyMjYsIDcsIDQ0LCA1MiwgMjI2LCA3LCAxMTMsIDE3MCwgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgMTIzLCAKLSAgICA1OSwgMTE1LCAxMTMsIDE3MCwgMjI0LCAxNDMsIDkyLCAyNDQsIDE5LCA1OSwgMjI0LCAxNDMsIDI0NCwgODksIDU5LCA3OSwgCi0gICAgMjIzLCA1MiwgMjI0LCAxNiwgNzksIDY3LCAxODQsIDIyMiwgMjM3LCAyMjUsIDEzLCAyMTEsIDIwOSwgMjIwLCAxNDAsIAotICAgIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjE1LCA5NCwgMjQ5LCAyMjcsIDIyMywgMTYwLCAyNDcsIDEyOCwgMjIzLCAxNjAsIDI0OSwgCi0gICAgMjI3LCAyMTUsIDk0LCAyMjAsIDE1MiwgMjQ4LCAyMTQsIDIsIDQzLCAyNDIsIDExNSwgMjQ4LCAyMTQsIDIsIDQ0LCAyNDIsIAotICAgIDExNSwgMjE1LCA5NCwgMjQ4LCAyMTMsIDIxNiwgMTUsIDE2MywgMjIxLCAxNzUsIDUwLCAyMTUsIDU5LCAyNDgsIDE2NCwgCi0gICAgMjE2LCAxNDQsIDI0OCwgMTY0LCAxMCwgMzQsIDIyMywgNzksIDEwLCAzNCwgMjUwLCAxOCwgMTAsIDM0LCAyMjEsIDE3OCwgCi0gICAgMTExLCAxMCwgMzQsIDIyMSwgMTc4LCAxMDUsIDEwLCAzNCwgMjIxLCAxNzgsIDE1OCwgMTAsIDM0LCAyMjUsIDE3MCwgMTAsIAotICAgIDM0LCAyNTEsIDE3MSwgMTAsIDM0LCAyMTcsIDkzLCAxMCwgMzQsIDIzNCwgMzksIDExMSwgMTAsIDM0LCAyMzQsIDM5LCAKLSAgICAxMDUsIDEwLCAzNCwgMjQ3LCAxNzgsIDEwLCAzNCwgMjIxLCAxODEsIDEwLCAzNCwgNCwgMTExLCAxMCwgMzQsIDQsIDEwNSwgCi0gICAgMTAsIDM0LCAyMzMsIDEwMywgMTExLCAxMCwgMzQsIDIzMywgMTAzLCAxMDUsIDEwLCAzNCwgMjMzLCAxMDMsIDE1OCwgMTAsIAotICAgIDM0LCAyMzMsIDEwMywgMTYxLCAxMCwgMzQsIDIxOSwgNzAsIDEwLCAzNCwgMjE2LCAxNDYsIDEwLCAzNCwgMjE5LCA2OCwgCi0gICAgMTExLCAxMCwgMzQsIDIxOSwgNjgsIDEwNSwgMTAsIDM0LCAyNDEsIDIzNSwgMTExLCAxMCwgMzQsIDI0MSwgMjM1LCAxMDUsIAotICAgIDEwLCAzNCwgMjQyLCAyMiwgMTAsIDM0LCAyMjMsIDE1MCwgMTAsIDM0LCAyNTAsIDkwLCAxMCwgMzQsIDIxOCwgMzgsIDEwLCAKLSAgICAzNCwgMjMwLCAxMzMsIDEwLCAzNCwgMjQ4LCA5NiwgMTAsIDM0LCAyMzAsIDEyNSwgMTAsIDM0LCAyNTAsIDMzLCAxMCwgMzQsIAotICAgIDIxMiwgNDEsIDExMSwgMTAsIDM0LCAyMTIsIDQxLCAxMDUsIDEwLCAzNCwgMjQ0LCAxMDQsIDEwLCAzNCwgMjI1LCAyMzYsIAotICAgIDExMSwgMTAsIDM0LCAyMjUsIDIzNiwgMTA1LCAxMCwgMzQsIDIxOSwgMTYyLCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgCi0gICAgMTAsIDM0LCAyNDksIDE1MywgMTAsIDM0LCAyNDcsIDE0NCwgMTAsIDM0LCAyMzUsIDE0MywgMTAsIDM0LCAyNTEsIDIwNiwgCi0gICAgNjQsIDI1MCwgMiwgMTAsIDM0LCAyNDUsIDIzLCAxMCwgMzQsIDIxOCwgMjUxLCAxMTEsIDEwLCAzNCwgMjE4LCAyNTEsIAotICAgIDEwNSwgMTAsIDM0LCAyNTIsIDE2MiwgMTAsIDM0LCAyMTksIDE2OSwgMTAsIDM0LCAyNTEsIDcxLCAyMTksIDE2OSwgMTAsIAotICAgIDM0LCAyMjksIDk1LCAxMTEsIDEwLCAzNCwgMjI5LCA5NSwgMTA1LCAxMCwgMzQsIDIyOSwgOTUsIDE1OCwgMTAsIDM0LCAKLSAgICAyMjksIDk1LCAxNjEsIDEwLCAzNCwgMjMxLCA1MSwgMTAsIDM0LCAyMjAsIDU5LCAxMCwgMzQsIDIyMywgMTU2LCAxMCwgMzQsIAotICAgIDI0NSwgNDUsIDEwLCAzNCwgMjI2LCAyMTMsIDEwLCAzNCwgMjUxLCAxNDEsIDExMSwgMTAsIDM0LCAyNTEsIDE0MSwgMTA1LCAKLSAgICAxMCwgMzQsIDIzMSwgOTEsIDEwLCAzNCwgMjMwLCAxMjgsIDEwLCAzNCwgMjQyLCAxNDcsIDExMSwgMTAsIDM0LCAyNDIsIAotICAgIDE0NywgMTA1LCAxMCwgMzQsIDI0MiwgMTQ3LCAxNTgsIDEwLCAzNCwgMjE2LCAxMDcsIDEwLCAzNCwgMjUwLCAxLCAxMCwgCi0gICAgMzQsIDIxMiwgOSwgMTExLCAxMCwgMzQsIDIxMiwgOSwgMTA1LCAxMCwgMzQsIDI1MSwgNzEsIDIyMSwgMTcyLCAxMCwgMzQsIAotICAgIDIxOSwgMTYyLCAyNDAsIDI1NSwgMTAsIDM0LCAyNDAsIDI1NSwgMTAsIDM0LCAyNTEsIDcxLCAyMTksIDQsIDEwLCAzNCwgCi0gICAgMjUxLCA3MSwgMjIwLCA1NCwgMTAsIDM0LCAyNDQsIDQwLCAxMCwgMzQsIDI1MSwgNzEsIDI1MCwgMjM2LCAxMCwgMzQsIAotICAgIDIxOSwgMTYyLCAyMTIsIDU3LCAxMCwgMzQsIDIxMiwgNTgsIDExMSwgMTAsIDM0LCAyMTIsIDU4LCAxMDUsIDEwLCAzNCwgCi0gICAgMjUwLCAzNSwgMTAsIDM0LCAyNTEsIDcxLCAyNDIsIDE3MywgMTAsIDM0LCAyMDAsIDExMSwgMTAsIDM0LCAyMDAsIDEwNSwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyMzIsIDE0MywgMTAsIDM0LCAyNTEsIDcxLCAyNDMsIDk1LCAxMCwgMzQsIDIzMCwgMTI0LCAKLSAgICAxMTEsIDEwLCAzNCwgMjMwLCAxMjQsIDEwNSwgMTAsIDM0LCAyMjMsIDE2MiwgMTAsIDM0LCAyNTEsIDIxNSwgMTAsIDM0LCAKLSAgICAyNTEsIDcxLCAyMTcsIDU3LCAyMzMsIDU4LCAxMCwgMzQsIDI1MSwgNzEsIDIzMywgNTksIDEwLCAzNCwgMjUxLCA3MSwgCi0gICAgMjExLCAyMzksIDEwLCAzNCwgMjUxLCA3MSwgMjQ0LCA1NCwgMTAsIDM0LCAyNDUsIDIyNiwgMTExLCAxMCwgMzQsIDI0NSwgCi0gICAgMjI2LCAxMDUsIDEwLCAzNCwgMjQ1LCAyMjYsIDE1OCwgMTAsIDM0LCAyNTEsIDcxLCAyNDUsIDIyNSwgMTAsIDM0LCAyNDEsIAotICAgIDI0MiwgMTAsIDM0LCAyNTEsIDcxLCAyNDAsIDI1MiwgMTAsIDM0LCAyNTEsIDIwMiwgMTAsIDM0LCAyNDIsIDIyOSwgMTAsIAotICAgIDM0LCAyNTEsIDcxLCAyNDQsIDk4LCAxMCwgMzQsIDI1MSwgNzEsIDI1MSwgMjQ1LCAxMCwgMzQsIDI1MSwgNzEsIDIyMiwgMywgCi0gICAgMTAsIDM0LCAyMTksIDE2MiwgMjEyLCAyLCAxMCwgMzQsIDIxOSwgMTYyLCAyMTEsIDQxLCAxMCwgMzQsIDI1MSwgNzEsIAotICAgIDI0MywgMjUyLCAxMCwgMzQsIDIzNSwgMTQ5LCAyNDUsIDQ5LCAxMCwgMzQsIDI1MSwgNzEsIDI0NSwgNDksIDEwLCAzNCwgCi0gICAgMjM1LCAxNDksIDIxNiwgMTYsIDEwLCAzNCwgMjUxLCA3MSwgMjE2LCAxNiwgMTAsIDM0LCAyMzUsIDE0OSwgMjQ2LCAxMDQsIAotICAgIDEwLCAzNCwgMjUxLCA3MSwgMjQ2LCAxMDQsIDEwLCAzNCwgMjE1LCA5MSwgMTAsIDM0LCAyMzUsIDE0OSwgMjE1LCA5MSwgCi0gICAgMTAsIDM0LCAyNTEsIDcxLCAyMTUsIDkxLCA2MCwgMzQsIDExMSwgNjAsIDM0LCAyMzIsIDIxOSwgNjAsIDM0LCAyNDcsIAotICAgIDEyOCwgNjAsIDM0LCAyMTksIDk3LCA2MCwgMzQsIDIyMSwgMTc3LCA2MCwgMzQsIDEwMywgNjAsIDM0LCAxMDUsIDYwLCAzNCwgCi0gICAgMjMyLCAyNDMsIDYwLCAzNCwgMjMxLCAxOTAsIDYwLCAzNCwgMjMzLCAzOSwgNjAsIDM0LCAyNDUsIDEzNywgNjAsIDM0LCAKLSAgICAxOTYsIDYwLCAzNCwgMTI0LCAyNTEsIDE3MSwgNjAsIDM0LCAyNDksIDE1NSwgNjAsIDM0LCAyNDAsIDExOCwgNjAsIDM0LCAKLSAgICAyMTcsIDkzLCA2MCwgMzQsIDIwNCwgMjUxLCAxNzEsIDYwLCAzNCwgMjM0LCAzOCwgNjAsIDM0LCAyMjQsIDIyNywgNjAsIAotICAgIDM0LCAyMTEsIDIwMiwgNjAsIDM0LCAyMTgsIDI0NSwgNjAsIDM0LCA0NCwgMjA0LCAyNTEsIDE3MSwgNjAsIDM0LCAyNDEsIAotICAgIDE4MywgMjQ1LCAxNTMsIDYwLCAzNCwgMjE2LCAyNDgsIDYwLCAzNCwgMjQ3LCAxNzgsIDYwLCAzNCwgMjIxLCAxODEsIDYwLCAKLSAgICAzNCwgMjUwLCAxOCwgNjAsIDM0LCAyMjQsIDE4NSwgNjAsIDM0LCAyNTQsIDIyNCwgNjAsIDM0LCAyMzAsIDExNSwgNjAsIAotICAgIDM0LCAyNDUsIDE1MywgNjAsIDM0LCAyNDUsIDIzMSwgNjAsIDM0LCAyMjEsIDIwMiwgNjAsIDM0LCAyNDIsIDE4MSwgNjAsIAotICAgIDM0LCAyNDIsIDE4MiwgMjE5LCA4MywgNjAsIDM0LCAyNDUsIDQ4LCA2MCwgMzQsIDI1MiwgMCwgNjAsIDM0LCAyMTEsIDIyMSwgCi0gICAgNjAsIDM0LCAyNTAsIDEwOSwgNjAsIDM0LCAyMjIsIDE5OCwgNjAsIDM0LCAyMzYsIDIsIDYwLCAzNCwgMjE5LCA4MSwgNjAsIAotICAgIDM0LCAyMzMsIDEwMiwgNjAsIDM0LCAyNDksIDE2NCwgNjAsIDM0LCAyMTgsIDIzOSwgNjAsIDM0LCAyMzAsIDEyMCwgNjAsIAotICAgIDM0LCAyMjIsIDIyNywgNjAsIDM0LCAyMTEsIDIwNiwgNjAsIDM0LCAyMjYsIDE5NCwgNjAsIDM0LCAyMTUsIDk4LCA2MCwgCi0gICAgMzQsIDI0NiwgODgsIDYwLCAzNCwgMjE5LCAyNTMsIDIxNiwgMTQ2LCA2MCwgMzQsIDI0NiwgMTI2LCAyNTAsIDE4LCA2MCwgCi0gICAgMzQsIDIwMCwgMjE4LCAxMTAsIDYwLCAzNCwgMTEzLCAyNDIsIDE3LCA2MCwgMzQsIDIyMCwgMiwgNjAsIDM0LCAyNTEsIAotICAgIDE3NywgNjAsIDM0LCAyMTksIDY3LCA2MCwgMzQsIDI1MSwgMTQ1LCA2MCwgMzQsIDIxOCwgMTQwLCA2MCwgMzQsIDI0MSwgCi0gICAgMjM0LCA2MCwgMzQsIDI0MiwgMzUsIDYwLCAzNCwgMjQ3LCAxMzEsIDYwLCAzNCwgMjQyLCAyMiwgNjAsIDM0LCAyNTEsIAotICAgIDE2MiwgNjAsIDM0LCAyMjMsIDE1MCwgNjAsIDM0LCAyMjEsIDE4OSwgNjAsIDM0LCAyNDcsIDIwNywgNjAsIDM0LCAyNTMsIAotICAgIDE3NiwgNjAsIDM0LCAyMTgsIDIzNiwgNjAsIDM0LCAyMjgsIDU2LCA2MCwgMzQsIDIxOCwgMzgsIDYwLCAzNCwgMjIxLCAKLSAgICAyMTMsIDYwLCAzNCwgMjMwLCAxMzMsIDYwLCAzNCwgMjE1LCAyMzYsIDYwLCAzNCwgMjMzLCAxMjgsIDYwLCAzNCwgMjE4LCAKLSAgICAxMzEsIDYwLCAzNCwgMjQ4LCA5NiwgNjAsIDM0LCAyMTIsIDIxLCA2MCwgMzQsIDI0NywgMTU0LCAyMjgsIDU2LCA2MCwgMzQsIAotICAgIDI0OSwgMjIzLCA2MCwgMzQsIDI0MywgMjI5LCA2MCwgMzQsIDI1MCwgMjksIDYwLCAzNCwgMjE4LCAxNDQsIDYwLCAzNCwgCi0gICAgMjEyLCA0MCwgNjAsIDM0LCAyNDQsIDEwNCwgNjAsIDM0LCAyNTAsIDI2LCA2MCwgMzQsIDI0NCwgMTY5LCA2MCwgMzQsIDUyLCAKLSAgICAyMTEsIDE3OCwgNjAsIDM0LCAxNjMsIDIxNSwgMjM3LCAyMTUsIDE4OSwgNjAsIDM0LCAyMTksIDkxLCA2MCwgMzQsIDI0NCwgCi0gICAgMTc5LCA2MCwgMzQsIDI0OSwgMTUzLCA2MCwgMzQsIDI0NywgMTQ0LCA2MCwgMzQsIDIyNCwgMTgyLCA2MCwgMzQsIDIzNSwgCi0gICAgMTQzLCA2MCwgMzQsIDIzMSwgNzIsIDYwLCAzNCwgMjE2LCA4OSwgNjAsIDM0LCAyMTcsIDI0NiwgNjAsIDM0LCAyMzIsIAotICAgIDIzNywgNjAsIDM0LCAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyOCwgNjAsIDM0LCAyNTEsIDIwNiwgNjQsIDI1MCwgMiwgCi0gICAgNjAsIDM0LCAyMTksIDE5MCwgNjAsIDM0LCAyNDYsIDEyNiwgMjE2LCAyNDMsIDYwLCAzNCwgMjExLCAyNTMsIDYwLCAzNCwgCi0gICAgMjE5LCAxMDUsIDYwLCAzNCwgMjQ3LCAxOTUsIDYwLCAzNCwgMjQ1LCAyMywgNjAsIDM0LCAyMTksIDcsIDYwLCAzNCwgNzUsIAotICAgIDYwLCAzNCwgMjE4LCAxMzMsIDYwLCAzNCwgMjE4LCAyNTAsIDYwLCAzNCwgMjE2LCAwLCA2MCwgMzQsIDI0MiwgMTU0LCA2MCwgCi0gICAgMzQsIDI1MCwgMjI2LCA2MCwgMzQsIDIxOCwgMTYyLCA2MCwgMzQsIDI1MiwgMTYyLCA2MCwgMzQsIDIyMywgMzQsIDYwLCAKLSAgICAzNCwgMjE5LCAxNjksIDYwLCAzNCwgMjM1LCAxMzYsIDYwLCAzNCwgMjI5LCA5NCwgNjAsIDM0LCAyMjAsIDU5LCA2MCwgMzQsIAotICAgIDI0NCwgMTU3LCA2MCwgMzQsIDIyNiwgMjEzLCA2MCwgMzQsIDI1NCwgMTI2LCA2MCwgMzQsIDIyNSwgMzIsIDYwLCAzNCwgCi0gICAgMjQ1LCAyMzUsIDYwLCAzNCwgMjUxLCAxNDAsIDYwLCAzNCwgMjMxLCA5MSwgNjAsIDM0LCAyMzAsIDE4OCwgNjAsIDM0LCAKLSAgICAyMjAsIDE1OCwgNjAsIDM0LCAyNTQsIDQsIDYwLCAzNCwgMjMwLCAxMjgsIDYwLCAzNCwgMjE2LCAyMCwgNjAsIDM0LCAyMjYsIAotICAgIDE2OSwgNjAsIDM0LCAyNTEsIDIwOSwgNjAsIDM0LCAyMTgsIDEyOSwgNjAsIDM0LCAyNDksIDIzMywgNjAsIDM0LCAyNDIsIAotICAgIDE0NiwgNjAsIDM0LCAyMTYsIDEwNywgNjAsIDM0LCAyMzUsIDIyNCwgNjAsIDM0LCAyNTEsIDIxOSwgNjAsIDM0LCAyMTIsIAotICAgIDU4LCAyNDUsIDE1MywgNjAsIDM0LCAyNTAsIDEsIDYwLCAzNCwgMjEyLCA4LCA2MCwgMzQsIDIyMSwgMTcyLCA2MCwgMzQsIAotICAgIDI0MCwgMjU1LCA2MCwgMzQsIDIxOSwgNCwgNjAsIDM0LCAyMTQsIDIyLCA2MCwgMzQsIDI1MiwgODAsIDYwLCAzNCwgMjI1LCAKLSAgICA3NiwgNjAsIDM0LCAyNTIsIDE4MiwgNjAsIDM0LCAyMjAsIDU0LCA2MCwgMzQsIDIyMywgMTEzLCA2MCwgMzQsIDIyMiwgCi0gICAgMTI4LCA2MCwgMzQsIDI0NCwgNDAsIDYwLCAzNCwgMjUxLCAyMDgsIDYwLCAzNCwgMjUwLCAyMzYsIDYwLCAzNCwgMjUxLCAKLSAgICAyMzQsIDYwLCAzNCwgMjMwLCAxMzAsIDYwLCAzNCwgMjEyLCA1NywgNjAsIDM0LCAyNTAsIDM1LCA2MCwgMzQsIDIxMSwgCi0gICAgMjM2LCA2MCwgMzQsIDI0NywgMTg4LCA2MCwgMzQsIDIxMywgMTYxLCA2MCwgMzQsIDI0MiwgMTczLCA2MCwgMzQsIDIzMiwgCi0gICAgMTQzLCA2MCwgMzQsIDI0MywgOTUsIDYwLCAzNCwgMjMwLCAxMjMsIDYwLCAzNCwgMjE5LCA5NiwgNjAsIDM0LCAyMTksIAotICAgIDI1MywgMjE3LCA3NywgMjUxLCAyNDUsIDYwLCAzNCwgMjIzLCAxNjIsIDYwLCAzNCwgMjUxLCAyMTUsIDYwLCAzNCwgMjExLCAKLSAgICAxOTcsIDYwLCAzNCwgMjQ0LCAxOTgsIDYwLCAzNCwgMjMzLCA1OCwgNjAsIDM0LCAyMTcsIDU3LCAyMzMsIDU4LCA2MCwgMzQsIAotICAgIDIzMywgNTQsIDYwLCAzNCwgMjE5LCAzMiwgNjAsIDM0LCAyMzMsIDU5LCA2MCwgMzQsIDIxMSwgMjM5LCA2MCwgMzQsIDI0NCwgCi0gICAgNTQsIDYwLCAzNCwgMjQ1LCAyMjUsIDYwLCAzNCwgMjQxLCAyNDIsIDYwLCAzNCwgMjQ0LCA4LCA2MCwgMzQsIDI0MCwgMjUyLCAKLSAgICA2MCwgMzQsIDI1MSwgMjAyLCA2MCwgMzQsIDIxNywgNjQsIDYwLCAzNCwgMjQyLCA0MSwgNjAsIDM0LCAyNDQsIDEyMSwgNjAsIAotICAgIDM0LCAyMjIsIDMwLCAyMTEsIDIzNiwgNjAsIDM0LCAyNTAsIDIyOCwgNjAsIDM0LCAyNDIsIDIyOSwgNjAsIDM0LCAyNDQsIAotICAgIDk4LCA2MCwgMzQsIDI1MSwgMjQ1LCA2MCwgMzQsIDIyMiwgMywgNjAsIDM0LCAyNDgsIDgyLCA2MCwgMzQsIDIxMiwgMiwgCi0gICAgNjAsIDM0LCAyNDEsIDIxNywgNjAsIDM0LCAyMTEsIDQxLCA2MCwgMzQsIDIzMCwgMTk3LCA2MCwgMzQsIDI1MSwgMjI5LCAKLSAgICA2MCwgMzQsIDI0NSwgMTYzLCA2MCwgMzQsIDI0MywgMjUyLCA2MCwgMzQsIDIxNSwgMjEwLCA2MCwgMzQsIDI0NiwgOTAsIAotICAgIDYwLCAzNCwgMjIzLCAxNDQsIDYwLCAzNCwgMjI4LCA1OCwgNjAsIDM0LCAyNDUsIDQ5LCA2MCwgMzQsIDIxNiwgMTYsIDYwLCAKLSAgICAzNCwgMjQ2LCAxMDQsIDYwLCAzNCwgMjE1LCA5MSwgNjAsIDM0LCAyNDQsIDU2LCAxMTAsIDI0OCwgNDUsIDEzNSwgNDMsIAotICAgIDIxNiwgNDMsIDIyMiwgMjU0LCAxMTAsIDI0OCwgNDUsIDEzNSwgNzIsIDIxNiwgNDMsIDUxLCAxMTAsIDI0OCwgNDUsIDEzNSwgCi0gICAgNDMsIDIxNiwgNDMsIDIzMCwgMjI5LCAyMiwgMjIyLCAyNTQsIDExMCwgMjQ4LCA0NSwgMTM1LCA3MiwgMjE2LCA0MywgMjMwLCAKLSAgICAyMjksIDIyLCA1MSwgMTEwLCAyNDgsIDQ1LCAxMzUsIDI0MywgMjM2LCAyMTgsIDExLCAxMTAsIDI0OCwgNDUsIDEzNSwgCi0gICAgMjE4LCAxMiwgMjQzLCAyNTEsIDQ4LCAxMTAsIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDUxLCAxMTAsIAotICAgIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDIzMywgNTIsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAKLSAgICAyNDMsIDI1MSwgMjE0LCAxNjAsIDIzMywgNTIsIDExMCwgMjQ4LCA0NSwgMTM1LCAyMTgsIDEyLCAyNDMsIDI1MSwgMjE0LCAKLSAgICAxNjAsIDIyMiwgMjU0LCAxMTAsIDI0OCwgNDUsIDEzNSwgMjE4LCAxMiwgMjQzLCAyNTEsIDIzMiwgMTE0LCAyMzMsIDUyLCAKLSAgICAxMTAsIDI0OCwgNDUsIDEzNSwgMjI2LCAxMjYsIDExMCwgMjE5LCAyMCwgMTEwLCAyNDksIDIyNywgMTEwLCAyNDMsIDIzNiwgCi0gICAgMjE4LCAxMzEsIDI0NywgMTg1LCA3OSwgMjM1LCAxMzcsIDIzNSwgMjQzLCAyMTgsIDE2MSwgODcsIDExMCwgMjM1LCAxNjQsIAotICAgIDc5LCAxMTAsIDI1MCwgNCwgNzksIDExMCwgNTQsIDIxMCwgODYsIDQzLCAyNTQsIDExOCwgMTI3LCA0NCwgMjU0LCAxMTgsIAotICAgIDEyNywgNDMsIDUyLCAyNTQsIDExOCwgMTI3LCA0NCwgNTIsIDI1NCwgMTE4LCAxMjcsIDQzLCAyNDksIDE2OSwgMTI3LCA0NCwgCi0gICAgMjQ5LCAxNjksIDEyNywgNDMsIDcxLCAyNDksIDE2OSwgMTI3LCA0NCwgNzEsIDI0OSwgMTY5LCAxMjcsIDQzLCA4NSwgMjMzLCAKLSAgICAyNiwgMTI3LCA0NCwgODUsIDIzMywgMjYsIDEyNywgMjI0LCAyNDAsIDc5LCAyNDMsIDM5LCA3OSwgNDMsIDIxNiwgNywgCi0gICAgMjIwLCA1NSwgMTI3LCA0NCwgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDQzLCA3MSwgMjMzLCAyNiwgMTI3LCA0NCwgNzEsIAotICAgIDIzMywgMjYsIDEyNywgNDMsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNDQsIDcxLCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgCi0gICAgNDMsIDcxLCA0MiwgMTI3LCA0NCwgNzEsIDQyLCAxMjcsIDIxMiwgMzYsIDI0OCwgMTY0LCAyMjMsIDUyLCA1MiwgMjI0LCAKLSAgICAxOTQsIDIyNCwgMSwgNzksIDUyLCAyMjQsIDE5NCwgMjI0LCAxLCA3OSwgMTIxLCA1MiwgMjI0LCAxOTQsIDIyNCwgMSwgNzksIAotICAgIDIyNCwgMjQwLCAxNjQsIDI0NCwgMTk4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTExLCAyNDIsIDE1LCAyMjcsIDIwMiwgMTA1LCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMTU4LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTYxLCAyNDIsIDE1LCAyMjcsIDIwMiwgMTkwLCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMTk1LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTk5LCAyNDIsIDE1LCAyMjcsIDIwMiwgMTk2LCAKLSAgICAyNDIsIDE1LCAyMjcsIDIwMiwgMjAxLCAxMTAsIDIzMywgOSwgMTM4LCA3OSwgMTEwLCAyMjIsIDIzMSwgMTM4LCA3OSwgCi0gICAgMTEwLCAyNDgsIDUyLCAxMzgsIDc5LCAxMTAsIDI0NSwgMTM2LCAxMzgsIDc5LCAyNCwgMjE5LCAxNTcsIDU5LCAxMzgsIDc5LCAKLSAgICAyNCwgNTIsIDU5LCAxMzgsIDc5LCAyMTIsIDMyLCAyNDgsIDE2NCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCA3OSwgNjcsIAotICAgIDIzNCwgMjM5LCAyMjMsIDgwLCAyLCAyMTMsIDEzNSwgMjE5LCAzMywgNzksIDY3LCAyMzQsIDIzOSwgMjIzLCA4MCwgMTY0LCAKLSAgICAyMTQsIDE2MCwgMjQyLCAzNCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAyLCAyMTMsIDEzNSwgMjE5LCAzMywgMTY0LCAyMTQsIAotICAgIDE2MCwgMjQyLCAzNCwgNjcsIDIzNCwgMjM5LCAyMjMsIDgwLCAxNjQsIDIzMiwgMTE0LCAyNDIsIDM0LCAzNywgMjI0LCAKLSAgICAyNDAsIDc5LCAxMTAsIDIxNywgNCwgMjMyLCAyMjAsIDI0NCwgMTU0LCAyMjAsIDE0MCwgODcsIDI0MiwgMTUsIDIyNywgCi0gICAgMjAyLCAyMTYsIDI0OCwgMjQyLCAxNSwgMjI3LCAyMDIsIDIxNSwgNzMsIDI0MiwgMTUsIDIyNywgMjAyLCAyMTYsIDE2MywgCi0gICAgNjcsIDExMCwgMjM1LCAxNjQsIDc5LCAyMzEsIDE0NSwgNzksIDIyNiwgMywgMjU0LCAxNDgsIDc5LCAxMTAsIDQ1LCAyMzUsIAotICAgIDI0NSwgMTEwLCAxNjMsIDI0NCwgMTE0LCAyMTksIDIwLCAxNDEsIDEsIDQsIDYxLCAxNDEsIDEsIDYxLCAxNDEsIDEsIDQsIAotICAgIDc0LCAxNDEsIDEsIDc0LCAxNDEsIDEsIDQsIDY5LCAxNDEsIDEsIDY5LCAxNDEsIDEsIDQsIDc2LCAxNDEsIDEsIDc2LCAKLSAgICAxNDEsIDEsIDQsIDc4LCAxNDEsIDEsIDc4LCAxNDEsIDEsIDE3NiwgMTQxLCAxLCAyNDMsIDE0MiwgMTQxLCAxLCAyMzQsIAotICAgIDk4LCAxNDEsIDEsIDI0MiwgMjIxLCAxNDEsIDEsIDIzMywgMjIzLCAxNDEsIDEsIDI0MiwgMTIwLCAxNDEsIDEsIDIzNCwgCi0gICAgMTg4LCAxNDEsIDEsIDI0MywgNjksIDE0MSwgMSwgMjM0LCAzNCwgMTQxLCAxLCAyNDIsIDE4MSwgMTQxLCAxLCAyMDYsIAotICAgIDE0MSwgMSwgMjEwLCAxMTYsIDE0MSwgMSwgMjE5LCAxOTMsIDE0MSwgMSwgMjEwLCA0NCwgMTQxLCAxLCAyMTgsIDg0LCAKLSAgICAxNDEsIDEsIDIxMCwgMTMsIDE0MSwgMSwgMjIxLCAxODMsIDE0MSwgMSwgMjEwLCA5NCwgMTQxLCAxLCAyMTksIDYwLCAxNDEsIAotICAgIDEsIDIxMCwgMjMsIDE0MSwgMSwgMjE3LCAxMDYsIDE0MSwgMSwgMjQ4LCAyMjksIDE0MSwgMSwgMjE2LCAxMTgsIDE0MSwgMSwgCi0gICAgMjQ4LCAxMSwgMTQxLCAxLCA0LCAyMTUsIDExOSwgMTQxLCAxLCAyMTUsIDExOSwgMTQxLCAxLCAyNDYsIDg2LCAxNDEsIDEsIAotICAgIDIxNywgMjMsIDE0MSwgMSwgMjQ4LCA5OCwgMTQxLCAxLCAxMTIsIDE0MSwgMSwgMjQ3LCAxNTMsIDE0MSwgMSwgMTk4LCAKLSAgICAxNDEsIDEsIDIyOCwgMjM4LCAxNDEsIDEsIDIyNywgMjQyLCAxNDEsIDEsIDIyOSwgMTEyLCAxNDEsIDEsIDIyOCwgNzksIAotICAgIDE0MSwgMSwgMTYyLCAxNDEsIDEsIDI1MiwgMTk5LCAxNDEsIDEsIDE5MSwgMTQxLCAxLCAyNDEsIDE4NywgMTQxLCAxLCAKLSAgICAyNTIsIDE0LCAxNDEsIDEsIDIyNSwgMTExLCAxNDEsIDEsIDI0MCwgMjI5LCAxNDEsIDEsIDI1MSwgMTMzLCAxNDEsIDEsIAotICAgIDIyNCwgMTUzLCAxNDEsIDEsIDI0MSwgMjQ1LCAxNDEsIDEsIDI1MiwgODMsIDE0MSwgMSwgMjI1LCAyMjQsIDE0MSwgMSwgCi0gICAgMjQxLCA3NSwgMTQxLCAxLCAyNTEsIDIxMywgMTQxLCAxLCAyMjUsIDE5LCAxNDEsIDEsIDE4NiwgMTQxLCAxLCAyMzAsIAotICAgIDIzNSwgMTQxLCAxLCAyMzAsIDEwNywgMTQxLCAxLCAyMzEsIDk2LCAxNDEsIDEsIDIzMCwgMTY2LCAxNDEsIDEsIDQsIDE5MiwgCi0gICAgMTQxLCAxLCAxOTIsIDE0MSwgMSwgNCwgMjEwLCAyMTIsIDE0MSwgMSwgMjEwLCAyMTIsIDE0MSwgMSwgNCwgMjEwLCAyNDQsIAotICAgIDE0MSwgMSwgMjEwLCAyNDQsIDE0MSwgMSwgMjA1LCAxNDEsIDEsIDIyMywgMzgsIDE0MSwgMSwgMjIyLCAxNDIsIDE0MSwgMSwgCi0gICAgMjIzLCAxMzEsIDE0MSwgMSwgMjIyLCAyMTMsIDE0MSwgMSwgNCwgMjEyLCA2NSwgMTQxLCAxLCAyMTIsIDY1LCAxNDEsIDEsIAotICAgIDIxMSwgMjUwLCAxNDEsIDEsIDIxMiwgMjIsIDE0MSwgMSwgMjExLCAyMjcsIDE0MSwgMSwgMjMwLCAzMCwgMTQxLCAxLCAKLSAgICAyMTIsIDExNiwgMTQxLCAxLCA0LCAxNzYsIDE0MSwgMSwgNCwgMjM0LCAxODgsIDM4LCAyMzQsIDIwNywgMjEzLCAxMzUsIAotICAgIDIxOSwgMzMsIDc5LCAzOCwgMjM0LCAyMDcsIDIyMCwgMTU3LCAyMTksIDMzLCA3OSwgMjM0LCAyMDcsIDIxMywgMTM1LCAKLSAgICAyMTksIDMzLCA3OSwgMjM0LCAyMDcsIDIyMCwgMTU3LCAyMTksIDMzLCA3OSwgMTQxLCAyMzUsIDE2NCwgNzksIDE0MSwgCi0gICAgMjEzLCAxMzUsIDIzNSwgMTY0LCA3OSwgMTQxLCAyNDcsIDIyOSwgMjEwLCAyMjUsIDIzNCwgMjA3LCA1MiwgMjQwLCAxNzUsIAotICAgIDU2LCAxLCA0LCA2MSwgNTYsIDEsIDYxLCA1NiwgMSwgNCwgNzQsIDU2LCAxLCA3NCwgNTYsIDEsIDQsIDY5LCA1NiwgMSwgCi0gICAgNjksIDU2LCAxLCA0LCA3NiwgNTYsIDEsIDc2LCA1NiwgMSwgNCwgNzgsIDU2LCAxLCA3OCwgNTYsIDEsIDE3NiwgNTYsIDEsIAotICAgIDI0MywgMTQyLCA1NiwgMSwgMjM0LCA5OCwgNTYsIDEsIDI0MiwgMjIxLCA1NiwgMSwgMjMzLCAyMjMsIDU2LCAxLCAyNDIsIAotICAgIDEyMCwgNTYsIDEsIDIzNCwgMTg4LCA1NiwgMSwgMjQzLCA2OSwgNTYsIDEsIDIzNCwgMzQsIDU2LCAxLCAyNDIsIDE4MSwgCi0gICAgNTYsIDEsIDIwNiwgNTYsIDEsIDIxMCwgMTE2LCA1NiwgMSwgMjE5LCAxOTMsIDU2LCAxLCAyMTAsIDQ0LCA1NiwgMSwgMjE4LCAKLSAgICA4NCwgNTYsIDEsIDIxMCwgMTMsIDU2LCAxLCAyMjEsIDE4MywgNTYsIDEsIDIxMCwgOTQsIDU2LCAxLCAyMTksIDYwLCA1NiwgCi0gICAgMSwgMjEwLCAyMywgNTYsIDEsIDIxNywgMTA2LCA1NiwgMSwgMjQ4LCAyMjksIDU2LCAxLCAyMTYsIDExOCwgNTYsIDEsIAotICAgIDI0OCwgMTEsIDU2LCAxLCA0LCAyMTUsIDExOSwgNTYsIDEsIDIxNSwgMTE5LCA1NiwgMSwgMjQ2LCA4NiwgNTYsIDEsIDIxNywgCi0gICAgMjMsIDU2LCAxLCAyNDgsIDk4LCA1NiwgMSwgMTEyLCA1NiwgMSwgMjQ3LCAxNTMsIDU2LCAxLCAxOTgsIDU2LCAxLCAyMjgsIAotICAgIDIzOCwgNTYsIDEsIDIyNywgMjQyLCA1NiwgMSwgMjI5LCAxMTIsIDU2LCAxLCAyMjgsIDc5LCA1NiwgMSwgMTYyLCA1NiwgMSwgCi0gICAgMjUyLCAxOTksIDU2LCAxLCAxOTEsIDU2LCAxLCAyNDEsIDE4NywgNTYsIDEsIDI1MiwgMTQsIDU2LCAxLCAyMjUsIDExMSwgCi0gICAgNTYsIDEsIDI0MCwgMjI5LCA1NiwgMSwgMjUxLCAxMzMsIDU2LCAxLCAyMjQsIDE1MywgNTYsIDEsIDI0MSwgMjQ1LCA1NiwgCi0gICAgMSwgMjUyLCA4MywgNTYsIDEsIDIyNSwgMjI0LCA1NiwgMSwgMjQxLCA3NSwgNTYsIDEsIDI1MSwgMjEzLCA1NiwgMSwgMjI1LCAKLSAgICAxOSwgNTYsIDEsIDE4NiwgNTYsIDEsIDIzMCwgMjM1LCA1NiwgMSwgMjMwLCAxMDcsIDU2LCAxLCAyMzEsIDk2LCA1NiwgMSwgCi0gICAgMjMwLCAxNjYsIDU2LCAxLCA0LCAxOTIsIDU2LCAxLCAxOTIsIDU2LCAxLCA0LCAyMTAsIDIxMiwgNTYsIDEsIDIxMCwgMjEyLCAKLSAgICA1NiwgMSwgNCwgMjEwLCAyNDQsIDU2LCAxLCAyMTAsIDI0NCwgNTYsIDEsIDIwNSwgNTYsIDEsIDIyMywgMzgsIDU2LCAxLCAKLSAgICAyMjIsIDE0MiwgNTYsIDEsIDIyMywgMTMxLCA1NiwgMSwgMjIyLCAyMTMsIDU2LCAxLCA0LCAyMTIsIDY1LCA1NiwgMSwgCi0gICAgMjEyLCA2NSwgNTYsIDEsIDIxMSwgMjUwLCA1NiwgMSwgMjEyLCAyMiwgNTYsIDEsIDIxMSwgMjI3LCA1NiwgMSwgMjMwLCAKLSAgICAzMCwgNTYsIDEsIDIxMiwgMTE2LCA1NiwgMSwgNCwgMTc2LCA1NiwgMSwgNCwgMjM0LCAxODgsIDU2LCAxLCAyMTQsIDI3LCAKLSAgICA1NiwgMSwgMjEzLCAxNzYsIDU2LCAxLCAyMTMsIDI1NSwgNTYsIDEsIDIxMywgMTM4LCA1NiwgMjMwLCAyMjksIDI0NywgCi0gICAgMTI4LCAyMzQsIDIwNywgMjI0LCAxNzYsIDIxOSwgMzMsIDc5LCA1NiwgMjM1LCAxNjQsIDc5LCA1NiwgMjEzLCAxMzUsIAotICAgIDIzNSwgMTY0LCA3OSwgNTYsIDI0NywgMjI5LCAyMzQsIDUsIDI1MSwgMTkyLCAxLCAyNTMsIDE2NiwgMjUxLCAxOTIsIDEsIAotICAgIDIyNiwgMTA5LCAyNTEsIDE5MiwgMSwgMTk0LCAyNTEsIDE5MiwgMSwgMjQ1LCAxNCwgMjUxLCAxOTIsIDEsIDI0OSwgNjgsIAotICAgIDI1MSwgMTkyLCAxLCAyMTcsIDE1MywgMjUxLCAxOTIsIDEsIDIzMCwgMzAsIDI1MSwgMTkyLCAxLCAxNTYsIDI1MSwgMTkyLCAKLSAgICAxLCAyNDMsIDIwOSwgMjUxLCAxOTIsIDEsIDIzNSwgMjksIDI1MSwgMTkyLCAxLCAyNDIsIDY3LCAyNTEsIDE5MiwgMSwgCi0gICAgMjM1LCAxNTAsIDI1MSwgMTkyLCAxLCAyMjQsIDk5LCAyNTEsIDE5MiwgMSwgMjExLCAxNzgsIDI1MSwgMTkyLCAxLCAyMTAsIAotICAgIDgzLCAyNTEsIDE5MiwgMSwgMjUwLCAxNjYsIDI1MSwgMTkyLCAxLCAyMjAsIDEwNiwgMjUxLCAxOTIsIDEsIDE1MywgMjUxLCAKLSAgICAxOTIsIDEsIDIxMCwgMTU5LCAyNTEsIDE5MiwgMSwgMjUxLCA3NCwgMjUxLCAxOTIsIDEsIDIyMiwgOTMsIDI1MSwgMTkyLCAKLSAgICAxLCA2MSwgMjUxLCAxOTIsIDEsIDc4LCAyNTEsIDE5MiwgMSwgNzYsIDI1MSwgMTkyLCAxLCAyNDUsIDIwNSwgMjUxLCAxOTIsIAotICAgIDEsIDI1NCwgMjEwLCAyNTEsIDE5MiwgMSwgMjQ1LCAyMDMsIDI1MSwgMTkyLCAxLCAyNTMsIDIwMCwgMjUxLCAxOTIsIDEsIAotICAgIDIyNiwgMTM4LCAyNTEsIDE5MiwgMSwgMjU0LCAxMzEsIDI1MSwgMTkyLCAxLCAyNDUsIDE1OCwgMjUxLCAxOTIsIDEsIDI1NCwgCi0gICAgMTIzLCAyNTEsIDE5MiwgMSwgMjQ1LCAxNDYsIDI1MSwgMTkyLCAxLCAyNDUsIDEwMCwgMjUxLCAxOTIsIDEsIDc0LCAyNTEsIAotICAgIDE5MiwgMSwgNjksIDI1MSwgMTkyLCAxLCAyMzUsIDE2MiwgMjUxLCAxOTIsIDEsIDIxNCwgMTA1LCAyNTEsIDE5MiwgMSwgCi0gICAgMjI5LCA4NCwgMjUxLCAxOTIsIDEsIDI0MiwgMTg1LCAyNTEsIDE5MiwgMSwgMjM2LCA0MSwgMjQsIDEsIDIzNCwgNjQsIDI0LCAKLSAgICAxLCAyMTgsIDIxNywgMjQsIDEsIDIzNCwgNTcsIDI0LCAxLCAyMjgsIDIzMSwgMjQsIDEsIDIyOCwgMjI5LCAyNCwgMSwgCi0gICAgMjI4LCAyMjgsIDI0LCAxLCAyMTYsIDEwMiwgMjQsIDEsIDIxOCwgMjA2LCAyNCwgMSwgMjIzLCAyOSwgMjQsIDEsIDIyMywgCi0gICAgMjQsIDI0LCAxLCAyMjMsIDIxLCAyNCwgMSwgMjIzLCAxNCwgMjQsIDEsIDIyMywgOSwgMjQsIDEsIDIyMywgNCwgMjQsIDEsIAotICAgIDIyMywgMTUsIDI0LCAxLCAyMjMsIDI3LCAyNCwgMSwgMjMwLCAyMjIsIDI0LCAxLCAyMjUsIDk4LCAyNCwgMSwgMjE4LCAKLSAgICAyMTQsIDI0LCAxLCAyMjUsIDg3LCAyNCwgMSwgMjE5LCAxNTAsIDI0LCAxLCAyMTgsIDIxMSwgMjQsIDEsIDIzNiwgNjMsIAotICAgIDI0LCAxLCAyNTAsIDU0LCAyNCwgMSwgMjE4LCAyMjEsIDI0LCAxLCAyNTAsIDExNCwgMjQsIDEsIDIzNCwgMTE2LCAyNCwgMSwgCi0gICAgMjE2LCAxNzQsIDI0LCAxLCAyMjUsIDEzNCwgMjQsIDEsIDI0MSwgMTc5LCAyNCwgMSwgNjEsIDI0LCAxLCAyNTQsIDI1MiwgCi0gICAgMjQsIDEsIDE5MiwgMjQsIDEsIDIxMSwgOTIsIDI0LCAxLCAyNDUsIDEyNSwgMjQsIDEsIDc2LCAyNCwgMSwgMjExLCAzNiwgCi0gICAgMjQsIDEsIDIxMSwgNDcsIDI0LCAxLCA3OCwgMjQsIDEsIDIxMiwgNjUsIDI0LCAxLCAyMTIsIDYyLCAyNCwgMSwgMjI2LCAKLSAgICAyMzgsIDI0LCAxLCAyMTAsIDI0NCwgMjQsIDEsIDY5LCAyNCwgMSwgMjEyLCAxMSwgMjQsIDEsIDIxMiwgMjIsIDI0LCAxLCAKLSAgICAyMTEsIDI1MCwgMjQsIDEsIDIxMCwgMjEyLCAyNCwgMSwgMjQ1LCA2MywgMjQsIDEsIDIxMSwgOCwgMjQsIDEsIDc0LCAyNCwgCi0gICAgMjQ0LCAxMTEsIDI0LCAxLCAyMTgsIDIxNSwgMjQsIDEsIDIyOCwgMjIxLCAyNCwgMSwgMjI4LCAyMjMsIDI0LCAxLCAyMjgsIAotICAgIDIyNiwgMjQsIDEsIDIyMywgMjIsIDI0LCAxLCAyMjMsIDMsIDI0LCAxLCAyMjMsIDExLCAyNCwgMSwgMjIzLCAxNiwgMjQsIAotICAgIDEsIDIyMywgMSwgMjQsIDEsIDIzMCwgMjE1LCAyNCwgMSwgMjMwLCAyMTIsIDI0LCAxLCAyMzAsIDIxNiwgMjQsIDEsIDIzNCwgCi0gICAgMjI3LCAyNCwgMSwgMjI1LCA5MywgMjQsIDEsIDIyNSwgNzksIDI0LCAxLCAyMjUsIDg1LCAyNCwgMSwgMjI1LCA4MiwgMjQsIAotICAgIDEsIDIyNSwgOTYsIDI0LCAxLCAyMjUsIDgwLCAyNCwgMSwgMjM0LCAyMjUsIDI0LCAxLCAyMzQsIDIyMywgMjQsIDEsIDIxOSwgCi0gICAgMTQzLCAyNCwgMSwgMjE5LCAxNDEsIDI0LCAxLCAyMTksIDEzMywgMjQsIDEsIDIxOSwgMTM4LCAyNCwgMSwgMjE5LCAxNDgsIAotICAgIDI0LCAxLCAyMjYsIDM2LCAyNCwgMSwgMjE4LCAyMTgsIDI0LCAxLCAyMTEsIDI2LCAyNCwgMSwgMjExLCAyMiwgMjQsIDEsIAotICAgIDIxMSwgMjMsIDI0LCAxLCAyMzQsIDIyNiwgMjQsIDEsIDIxOCwgMjE5LCAyNCwgMSwgMjExLCAzMiwgMjQsIDEsIDIxMCwgCi0gICAgMjM4LCAyNCwgMSwgMjEwLCAyMzcsIDI0LCAxLCAyMTAsIDI0MCwgMjQsIDEsIDIxMCwgMjAzLCAyNCwgMSwgMjEwLCAyMDQsIAotICAgIDI0LCAxLCAyMTAsIDIwNywgMjQsIDEsIDI1NCwgNDIsIDI0LCAxLCAyNTQsIDM2LCAxMTAsIDI1NCwgMTA3LCAyMzIsIDIwOSwgCi0gICAgNzksIDExMCwgMjU0LCAxMDcsIDIyMywgNTMsIDc5LCAxMTAsIDI1NCwgMTA3LCAxMjMsIDc5LCAxMTAsIDI1NCwgMTA3LCAKLSAgICAxMTMsIDc5LCAxMTAsIDI1NCwgMTA3LCAxMzQsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDE5LCA3OSwgMTEwLCAyNTQsIAotICAgIDEwNywgMjE2LCAxNSwgNzksIDExMCwgMjU0LCAxMDcsIDIzMCwgMjI5LCA3OSwgMTEwLCAyNTQsIDEwNywgMjUxLCAxODMsIAotICAgIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDEwMCwgNzksIDExMCwgMjU0LCAxMDcsIDIyMSwgMTc4LCA3OSwgMTEwLCAyNTQsIAotICAgIDEwNywgMjE2LCAxNzAsIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDQsIDEyLCA3OSwgMTEwLCAyNTQsIDEwNywgMjQxLCAyMzEsIAotICAgIDc5LCAxMTAsIDI1NCwgMTA3LCAyNDUsIDIzMiwgNzksIDExMCwgMjU0LCAxMDcsIDIzMSwgMTkxLCA3OSwgMjUxLCAxOTIsIAotICAgIDEsIDI1MSwgMTMzLCAyNTEsIDE5MiwgMSwgMjEwLCA0NCwgMjUxLCAxOTIsIDEsIDIzNSwgMTE0LCAyNTEsIDE5MiwgMSwgCi0gICAgMjQyLCAxMjAsIDI1MSwgMTkyLCAxLCAyNDUsIDIxNywgMjUxLCAxOTIsIDEsIDI0NSwgMTQzLCAyNTEsIDE5MiwgMSwgMjI2LCAKLSAgICAxODcsIDI1MSwgMTkyLCAxLCAyMjYsIDE5MSwgMjUxLCAxOTIsIDEsIDIzNSwgMTg2LCAyNTEsIDE5MiwgMSwgMjU0LCAxMDksIAotICAgIDI1MSwgMTkyLCAxLCAyMzUsIDIzMSwgMjUxLCAxOTIsIDEsIDIxNCwgMTY4LCAyNTEsIDE5MiwgMSwgMjM2LCAyMywgMjUxLCAKLSAgICAxOTIsIDEsIDIyOSwgNjIsIDI1MSwgMTkyLCAxLCAyNTQsIDIwNCwgMjUxLCAxOTIsIDEsIDI1MywgMTk1LCAyNTEsIDE5MiwgCi0gICAgMSwgMjU0LCAxNDQsIDI1MSwgMTkyLCAxLCAyMjYsIDIwOCwgMjUxLCAxOTIsIDEsIDIyNiwgMTkzLCAyNTEsIDE5MiwgMSwgCi0gICAgMjM1LCAyMjgsIDI1MSwgMTkyLCA0MCwgMSwgMjI2LCAxMDksIDI1MSwgMTkyLCA0MCwgMSwgMjE3LCAxNTMsIDI1MSwgMTkyLCAKLSAgICA0MCwgMSwgMjM1LCAyOSwgMjUxLCAxOTIsIDQwLCAxLCAyNDIsIDY3LCAyNTEsIDE5MiwgMSwgMjQzLCAxLCAyNTEsIDE5MiwgCi0gICAgMSwgMjMzLCA1LCAyNTEsIDE5MiwgMSwgMjA5LCAyNTAsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTMsIDEwLCAyMTgsIDEwNSwgCi0gICAgMjEyLCA0LCAxMCwgMjE4LCAxMDUsIDIxMSwgMTU4LCAxMCwgMjE4LCAxMDUsIDI1MSwgODcsIDEwLCAyMTgsIDEwNSwgMjE3LCAKLSAgICAyNTUsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjUsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjksIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAyMzgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjYsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTYsIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAxNjgsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjQsIDEwLCAyMTgsIDEwNSwgMjQwLCAyMzYsIDEwLCAyMTgsIDEwNSwgMjQwLCAKLSAgICAxNjcsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjMsIDEwLCAyMTgsIDEwNSwgMjMwLCAzMCwgMTAsIDIxOCwgMTA1LCAyNDIsIAotICAgIDY3LCAxMCwgMjE4LCAxMDUsIDIyMiwgOTMsIDEwLCAyMTgsIDEwNSwgMjI2LCAxMDksIDEwLCAyMTgsIDEwNSwgMjE5LCAyMywgCi0gICAgMTAsIDIxOCwgMTA1LCAyNDksIDY4LCAxMCwgMjE4LCAxMDUsIDI0MCwgMTcwLCAxMCwgMjE4LCAxMDUsIDI0MSwgMTk3LCAKLSAgICAxMCwgMjE4LCAxMDUsIDIxNywgMTY1LCAxMCwgMjE4LCAxMDUsIDIxNywgMjM0LCAxMCwgMjE4LCAxMDUsIDIxOCwgMTcwLCAKLSAgICAxMCwgMjE4LCAxMDUsIDIyMCwgMTEyLCAxMCwgMjE4LCAxMDUsIDIyNSwgMjI4LCAxMCwgMjE4LCAxMDUsIDIyNCwgMTAxLCAKLSAgICAxMCwgMjE4LCAxMDUsIDIxNiwgNDQsIDEwLCAyMTgsIDEwNSwgMjE3LCAxNTUsIDEwLCAyMTgsIDEwNSwgMjE3LCAyNDUsIAotICAgIDEwLCAyMTgsIDEwNSwgMjQwLCAxNzcsIDEwLCAyMTgsIDEwNSwgMjQwLCAxNjIsIDEwLCAyMTgsIDEwNSwgMjI1LCAxNTIsIAotICAgIDEwLCAyMTgsIDEwNSwgMjI0LCA5OSwgNTYsIDEsIDQsIDIzMywgMjIzLCA1NiwgMSwgNCwgMjE5LCAxOTMsIDU2LCAxLCA0LCAKLSAgICAyMTgsIDg0LCA1NiwgMSwgNCwgMTEyLCA1NiwgMSwgNCwgMjI3LCAyNDIsIDU2LCAxLCA0LCAxNjIsIDU2LCAxLCA0LCAyNDEsIAotICAgIDE4NywgNTYsIDEsIDQsIDI0MCwgMjI5LCA1NiwgMSwgNCwgMjQxLCAyNDUsIDU2LCAxLCA0LCAyNDEsIDc1LCA1NiwgMSwgNCwgCi0gICAgMjMwLCAxMDcsIDU2LCAxLCA0LCAyMDUsIDU2LCAxLCA0LCAyMjMsIDM4LCA1NiwgMSwgNCwgMjIyLCAxNDIsIDU2LCAxLCA0LCAKLSAgICAyMjMsIDEzMSwgNTYsIDEsIDQsIDIyMiwgMjEzLCA4OCwgMjQsIDIzNCwgNjQsIDg4LCAyNCwgMjI4LCAyMzEsIDg4LCAyNCwgCi0gICAgMjE2LCAxMDIsIDg4LCAyNCwgMjIzLCAyOSwgODgsIDI0LCAyMzAsIDIyMiwgODgsIDI0LCAyMjUsIDk4LCA4OCwgMjQsIAotICAgIDIxOSwgMTUwLCA4OCwgMjQsIDIzNiwgNjMsIDg4LCAyNCwgMjUwLCA1NCwgODgsIDI0LCAyNTAsIDExNCwgODgsIDI0LCAKLSAgICAyMzQsIDExNiwgODgsIDI0LCAyMTYsIDE3NCwgODgsIDI0LCAyMjUsIDEzNCwgODgsIDI0LCAyNDEsIDE3OSwgODgsIDI0LCAKLSAgICAyMzQsIDY1LCA2MSwgODgsIDI0LCAyMjgsIDIzMiwgNjEsIDg4LCAyNCwgMjE2LCAxMDMsIDYxLCA4OCwgMjQsIDIyMywgMzAsIAotICAgIDYxLCA4OCwgMjQsIDIzMCwgMjIzLCA2MSwgODgsIDI0LCAyMjUsIDk5LCA2MSwgODgsIDI0LCAyMTksIDE1MSwgNjEsIDg4LCAKLSAgICAyNCwgMjM2LCA2NCwgNjEsIDg4LCAyNCwgMjUwLCA1NSwgNjEsIDg4LCAyNCwgMjUwLCAxMTUsIDYxLCA4OCwgMjQsIDIzNCwgCi0gICAgMTE3LCA2MSwgODgsIDI0LCAyMTYsIDE3NSwgNjEsIDg4LCAyNCwgMjI1LCAxMzUsIDYxLCA4OCwgMjQsIDI0MSwgMTgwLCAKLSAgICA2MSwgODgsIDI0LCAyNTAsIDU1LCA2OSwgODgsIDIzNCwgOSwgMTM1LCAyMjYsIDIyMSwgODgsIDIzNCwgOSwgMTM1LCAxNDQsIAotICAgIDI0MCwgMjI5LCA4OCwgMTU0LCAxMTEsIDg4LCAxNTQsIDEwNSwgODgsIDE1NCwgMTU4LCA4OCwgMTU0LCAxNjEsIDg4LCAKLSAgICAxNTQsIDE5MCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAxOTksIDg4LCAxNTQsIDE5NiwgODgsIDE1NCwgMjAxLCA4OCwgCi0gICAgMTU0LCAyMTYsIDI0OCwgODgsIDE1NCwgMjMwLCAxMzMsIDg4LCAxNTQsIDI0NCwgMTA0LCA4OCwgMTU0LCAyMTIsIDQwLCAKLSAgICA4OCwgMTU0LCAyMTEsIDIxNCwgODgsIDE1NCwgMjMxLCA0NCwgODgsIDE1NCwgMjQ1LCAyMzEsIDg4LCAxNTQsIDIxOCwgMzgsIAotICAgIDg4LCAxNTQsIDIxOCwgMTM0LCA4OCwgMTU0LCAyNDEsIDI1MSwgODgsIDE1NCwgMjE5LCA1NiwgODgsIDE1NCwgMjI5LCAKLSAgICAyMDksIDg4LCAxNTQsIDIxOSwgNiwgODgsIDE1NCwgMjQ0LCAxMTAsIDg4LCAxNTQsIDI0OSwgMjA4LCA4OCwgMTU0LCAyMzMsIAotICAgIDEzMSwgODgsIDE1NCwgMjIzLCA3NCwgODgsIDE1NCwgMjUxLCAyMywgODgsIDE1NCwgMjE4LCA4OCwgODgsIDE1NCwgMjE4LCAKLSAgICAyMSwgODgsIDE1NCwgMjQ1LCAxMzUsIDg4LCAxNTQsIDIyMywgNjYsIDg4LCAxNTQsIDI1NCwgMTU5LCA4OCwgMTU0LCAyNDQsIAotICAgIDEzNiwgODgsIDE1NCwgMjIzLCA2NCwgODgsIDE1NCwgMjIwLCAxNTgsIDg4LCAxNTQsIDIyMywgMTMwLCAzNywgMTU0LCAKLSAgICAyMjQsIDE1LCAzNywgMTU0LCAyMzQsIDg2LCAzNywgMTU0LCAyMjEsIDIwMCwgMzcsIDE1NCwgMjM0LCA1LCAzNywgNTQsIAotICAgIDIxNiwgMjQ5LCAyMjYsIDIwMSwgODUsIDIxOCwgMjM2LCAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMjAxLCA4NSwgMjE4LCAKLSAgICAyMzYsIDM3LCA1NCwgMjE2LCAxNjQsIDIyNiwgMjAxLCA4NSwgMjE4LCAyMzYsIDM3LCA1NCwgMjQ0LCAyNCwgMjI2LCAyMDEsIAotICAgIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyNDQsIDEyMywgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyMTksIDExNCwgCi0gICAgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAyMjAsIDExOSwgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMzcsIDU0LCAKLSAgICAyNDUsIDE5MywgMjI2LCAyMDEsIDg1LCAyMTgsIDIzNiwgMjI1LCAyNTUsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMSwgMzcsIAotICAgIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAKLSAgICAyMTUsIDc0LCAxOTAsIDM3LCA1NCwgMjE1LCA3NCwgMTk1LCAzNywgNTQsIDIxNSwgNzQsIDE5OSwgMzcsIDU0LCAyMTUsIAotICAgIDc0LCAxOTYsIDM3LCA1NCwgMjE1LCA3NCwgMjAxLCAzNywgNTQsIDIxNiwgMTYzLCAzNywgNTQsIDIxNiwgMTY0LCAxMTEsIAotICAgIDM3LCA1NCwgMjE2LCAxNjQsIDEwNSwgMzcsIDU0LCAyMTYsIDE2NCwgMTU4LCAzNywgNTQsIDIxNiwgMTY0LCAxNjEsIDM3LCAKLSAgICA1NCwgMjE2LCAxNjQsIDE5MCwgMzcsIDI0LCAyMzQsIDY0LCAzNywgMjQsIDIyOCwgMjMxLCAzNywgMjQsIDIxNiwgMTAyLCAKLSAgICAzNywgMjQsIDIyMywgMjksIDM3LCAyNCwgMjMwLCAyMjIsIDM3LCAyNCwgMjI1LCA5OCwgMzcsIDI0LCAyMTksIDE1MCwgMzcsIAotICAgIDI0LCAyMzYsIDYzLCAzNywgMjQsIDI1MCwgNTQsIDM3LCAyNCwgMjUwLCAxMTQsIDM3LCAyNCwgMjM0LCAxMTYsIDM3LCAyNCwgCi0gICAgMjE2LCAxNzQsIDM3LCAyNCwgMjI1LCAxMzQsIDM3LCAyNCwgMjQxLCAxNzksIDM3LCAyNCwgMjM0LCA2NSwgNjEsIDM3LCAKLSAgICAyNCwgMjI4LCAyMzIsIDYxLCAzNywgMjQsIDIxNiwgMTAzLCA2MSwgMzcsIDI0LCAyMjMsIDMwLCA2MSwgMzcsIDI0LCAyMzAsIAotICAgIDIyMywgNjEsIDM3LCAyNCwgMjI1LCA5OSwgNjEsIDM3LCAyNCwgMjE5LCAxNTEsIDYxLCAzNywgMjQsIDIzNiwgNjQsIDYxLCAKLSAgICAzNywgMjQsIDI1MCwgNTUsIDYxLCAzNywgMjQsIDI1MCwgMTE1LCA2MSwgMzcsIDI0LCAyMzQsIDExNywgNjEsIDM3LCAyNCwgCi0gICAgMjE2LCAxNzUsIDYxLCAzNywgMjQsIDIyNSwgMTM1LCA2MSwgMzcsIDI0LCAyNDEsIDE4MCwgNjEsIDM3LCAyMzQsIDksIAotICAgIDEzNSwgMjUwLCAxNTYsIDM3LCAyMzQsIDksIDEzNSwgMjM1LCA1MywgMzcsIDI0LCAyMzYsIDY0LCA2OSwgMjM0LCA5LCAKLSAgICAyMTgsIDE2MSwgODcsIDM3LCAxNTQsIDExMSwgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIAotICAgIDE1NCwgMTkwLCAzNywgMTU0LCAxOTUsIDM3LCAxNTQsIDE5OSwgMzcsIDE1NCwgMTk2LCAzNywgMTU0LCAyMDEsIDM3LCAKLSAgICAxNTQsIDIxNiwgMjQ4LCAzNywgMTU0LCAyMzAsIDEzMywgMzcsIDE1NCwgMjQ0LCAxMDQsIDM3LCAxNTQsIDIxMiwgNDAsIAotICAgIDM3LCAxNTQsIDIxMSwgMjE0LCAzNywgMTU0LCAyMzEsIDQ0LCAzNywgMTU0LCAyNDUsIDIzMSwgMzcsIDE1NCwgMjE4LCAzOCwgCi0gICAgMzcsIDE1NCwgMjE4LCAxMzQsIDM3LCAxNTQsIDI0MSwgMjUxLCAzNywgMTU0LCAyMTksIDU2LCAzNywgMTU0LCAyMjksIAotICAgIDIwOSwgMzcsIDE1NCwgMjE5LCA2LCAzNywgMTU0LCAyNDQsIDExMCwgMzcsIDE1NCwgMjQ5LCAyMDgsIDM3LCAxNTQsIDIzMywgCi0gICAgMTMxLCAzNywgMTU0LCAyMjEsIDE3NiwgMzcsIDE1NCwgMjMxLCAxOTQsIDM3LCAxNTQsIDI0NCwgMTQ1LCAzNywgMTU0LCAKLSAgICAyMTgsIDUwLCAzNywgMTU0LCAyNDUsIDQyLCAzNywgMTU0LCAyMjQsIDE5MCwgMzcsIDE1NCwgMjUzLCAyMDQsIDM3LCAxNTQsIAotICAgIDIzNSwgMTY1LCAzNywgMTU0LCAyMjMsIDY0LCAzNywgMTU0LCAyNDksIDE3MiwgMzcsIDE1NCwgMjQ5LCAxNjMsIDM3LCAKLSAgICAxNTQsIDI0MSwgMTcyLCAzNywgMTU0LCAyNTAsIDE4MiwgMzcsIDE1NCwgMjMyLCAxMTYsIDM3LCAxNTQsIDIzMywgNTIsIAotICAgIDM3LCAxNTQsIDIyMiwgMjU0LCAzNywgMTU0LCAyMzEsIDg4LCAzNywgMTU0LCAyMjMsIDkwLCAzNywgMTU0LCAyMTgsIDg4LCAKLSAgICAzNywgMTU0LCAyMTgsIDIxLCAzNywgMTU0LCAyNDUsIDEzNSwgMzcsIDE1NCwgMjIzLCA2NiwgMzcsIDE1NCwgMjU0LCAxNTksIAotICAgIDM3LCAxNTQsIDIyOCwgMjE3LCAzNywgNTQsIDIxNiwgMTY0LCAxOTUsIDM3LCA1NCwgMjE2LCAxNjQsIDE5OSwgMzcsIDU0LCAKLSAgICAyMTYsIDE2NCwgMTk2LCAzNywgNTQsIDIxNiwgMTY0LCAyMDEsIDM3LCA1NCwgMjQ0LCAyMywgMzcsIDU0LCAyNDQsIDI0LCAKLSAgICAxMTEsIDM3LCA1NCwgMjQ0LCAyNCwgMTA1LCAzNywgNTQsIDI0NCwgMjQsIDE1OCwgMzcsIDU0LCAyNDQsIDI0LCAxNjEsIAotICAgIDM3LCA1NCwgMjQ0LCAyNCwgMTkwLCAzNywgNTQsIDI0NCwgMjQsIDE5NSwgMzcsIDU0LCAyNDQsIDI0LCAxOTksIDM3LCA1NCwgCi0gICAgMjQ0LCAyNCwgMTk2LCAzNywgNTQsIDI0NCwgMjQsIDIwMSwgMzcsIDU0LCAyNDQsIDEyMiwgMTEwLCAyMTcsIDQsIDE2LCAKLSAgICAzMSwgMjM1LCAxMzksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0NCwgMTU2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMzEsIAotICAgIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjU0LCA1NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjMxLCAxMzcsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDIzNSwgNTEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIzNSwgNTIsIDExMCwgMjE3LCA0LCAxNiwgCi0gICAgMzEsIDI1MywgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyMjAsIDEzOCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjI2LCAKLSAgICAyNDMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDIyOCwgNDUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgOTMsIDQyLCAyNDEsIAotICAgIDE5NywgNDIsIDI0NSwgOTYsIDQyLCAyNDUsIDUxLCAyMzIsIDIyNSwgMjMyLCAyNDYsIDUwLCAzNywgNTYsIDYxLCAzNywgCi0gICAgNTYsIDc0LCAzNywgNTYsIDY5LCAzNywgNTYsIDc2LCAzNywgNTYsIDc4LCAzNywgNTYsIDE3NiwgMzcsIDU2LCAyMzQsIDk4LCAKLSAgICAzNywgNTYsIDIzMywgMjIzLCAzNywgNTYsIDIzNCwgMTg4LCAzNywgNTYsIDIzNCwgMzQsIDM3LCA1NiwgMjA2LCAzNywgNTYsIAotICAgIDIxOSwgMTkzLCAzNywgNTYsIDIxOCwgODQsIDM3LCA1NiwgMjIxLCAxODMsIDM3LCA1NiwgMjE5LCA2MCwgMzcsIDU2LCAKLSAgICAyMTcsIDEwNiwgMzcsIDU2LCAyMTYsIDExOCwgMzcsIDU2LCAyMTUsIDExOSwgMzcsIDU2LCAyMTcsIDIzLCAzNywgNTYsIAotICAgIDExMiwgMzcsIDU2LCAxOTgsIDM3LCA1NiwgMjI4LCAyMzgsIDM3LCA1NiwgMjI3LCAyNDIsIDM3LCA1NiwgMjI5LCAxMTIsIAotICAgIDM3LCA1NiwgMjI4LCA3OSwgMzcsIDU2LCAxNjIsIDM3LCA1NiwgMjQxLCAxODcsIDM3LCA1NiwgMjQwLCAyMjksIDM3LCA1NiwgCi0gICAgMjQxLCAyNDUsIDM3LCA1NiwgMjQxLCA3NSwgMzcsIDU2LCAxODYsIDM3LCA1NiwgMjMwLCAyMzUsIDM3LCA1NiwgMjMwLCAKLSAgICAxMDcsIDM3LCA1NiwgMjMxLCA5NiwgMzcsIDU2LCAyMzAsIDE2NiwgMzcsIDU2LCAxOTIsIDM3LCA1NiwgMjEwLCAyMTIsIAotICAgIDM3LCA1NiwgMjEwLCAyNDQsIDM3LCA1NiwgMjA1LCAzNywgNTYsIDIyMywgMzgsIDM3LCA1NiwgMjIyLCAxNDIsIDM3LCA1NiwgCi0gICAgMjIzLCAxMzEsIDM3LCA1NiwgMjIyLCAyMTMsIDM3LCA1NiwgMjEyLCA2NSwgMzcsIDU2LCAyMTEsIDI1MCwgMzcsIDU2LCAKLSAgICAyMTIsIDIyLCAzNywgNTYsIDIxMSwgMjI3LCA0MiwgMjU0LCA3OSwgNDIsIDI1MywgMjQ3LCA0MiwgMjU0LCAxMDMsIDQyLCAKLSAgICAyNTUsIDQwLCA0MiwgMjM1LCAyMzMsIDQyLCAyMzUsIDIwMywgNDIsIDIxNCwgMTY2LCA0MiwgMjQ1LCA3NCwgNDIsIDI0NSwgCi0gICAgMjE0LCA0MiwgMjI2LCAxOTAsIDQyLCAyMjYsIDE4NCwgNDIsIDIzNCwgMjUxLCA0MiwgMjM0LCAyMjAsIDQyLCAyMzQsIAotICAgIDIxNywgNDIsIDI0MywgOTksIDQyLCAyNDMsIDEwOCwgNDIsIDI0MiwgMjExLCA0MiwgMjQyLCAyMDcsIDQyLCAyMzMsIDE1NiwgCi0gICAgNDIsIDI0MiwgMjAwLCA0MiwgMjM0LCA3OCwgNDIsIDIzNCwgNzcsIDQyLCAyMzQsIDc2LCA0MiwgMjM0LCA3NSwgNDIsIAotICAgIDI0MiwgOTMsIDQyLCAyNDIsIDkyLCA0MiwgMjMzLCAxOTksIDQyLCAyMzMsIDIwMSwgNDIsIDIzNCwgMTg0LCA0MiwgMjM0LCAKLSAgICA3LCA0MiwgMjM0LCAxNCwgNDIsIDIyMiwgMTgsIDQyLCAyMjEsIDIzOSwgNDIsIDIxOSwgMTMxLCA0MiwgMjIwLCAxNDMsIAotICAgIDQyLCAyMjAsIDE0MiwgNDIsIDI0OCwgMjI2LCA0MiwgMjQ4LCA0NCwgNDIsIDI0NywgMTI5LCA0MiwgMjE2LCAzMywgNDIsIAotICAgIDIyOSwgMjA1LCA0MiwgMjI4LCA0NiwgNDIsIDI0MiwgMzksIDQyLCAyMjYsIDg4LCA0MiwgMjI2LCA4NywgNDIsIDI1MiwgCi0gICAgMTk2LCA0MiwgMjI1LCAxMDgsIDQyLCAyMjUsIDcyLCA0MiwgMjI1LCA3MywgNDIsIDI1MSwgMjQyLCA0MiwgMjQwLCAyMjgsIAotICAgIDQyLCAyNDAsIDIyNCwgNDIsIDI1MSwgOTksIDQyLCAyNDAsIDIxMSwgNDIsIDI0MSwgMjIyLCA0MiwgMjI1LCAxNjIsIDQyLCAKLSAgICAyMjUsIDE5NywgNDIsIDI0MSwgMjA1LCA0MiwgMjI1LCAxOTQsIDQyLCAyMjUsIDIxMCwgNDIsIDI1MiwgNjksIDQyLCAyMjUsIAotICAgIDksIDQyLCAyNTEsIDE4OCwgNDIsIDI0MSwgNjMsIDQyLCAyMjQsIDI1MywgNDIsIDI0MSwgNTUsIDQyLCAyNDEsIDU3LCA0MiwgCi0gICAgMjMxLCAyMDYsIDQyLCAyMzEsIDIwMiwgNDIsIDIzMSwgMjExLCA0MiwgMjMxLCAxNTUsIDQyLCAyMzEsIDE4MCwgNDIsIAotICAgIDIzMCwgMjAyLCA0MiwgMjMwLCAxODEsIDQyLCAyMzAsIDE4MCwgNDIsIDIzMSwgNzksIDQyLCAyMzEsIDc2LCA0MiwgMjMxLCAKLSAgICA4MCwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIDIwMSwgNDIsIDIyMiwgMjI5LCA0MiwgMjIyLCAyMzMsIAotICAgIDQyLCAyMjIsIDExOSwgNDIsIDIyMiwgMTEzLCA0MiwgMjIzLCA4OCwgNDIsIDIyMywgODUsIDQyLCAyMTIsIDM4LCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjEwLCA4NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDExMSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDEwNSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE1OCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE2MSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5MCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5OSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDE5NiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIwMSwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNiwgMjQ4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgCi0gICAgMjQ1LCAxNzUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDc2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAKLSAgICAyNDAsIDI0NiwgMjE2LCAxNjUsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyNDQsIDEzLCAxMTAsIDIxNywgNCwgCi0gICAgMTYsIDMxLCAyNDAsIDI0NiwgMjQ0LCAxMjYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTksIDEyMSwgMTEwLCAKLSAgICAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIyMCwgMTIxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDAsIDI0NiwgMjQ1LCAKLSAgICAxOTgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMjgsIDIwMiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAKLSAgICAyNDYsIDIxNSwgNzMsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDY3LCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyNDAsIDI0NiwgMjE1LCA2MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQwLCAyNDYsIDIxNSwgNjQsIDExMCwgMjE3LCAKLSAgICA0LCAxNiwgMzEsIDI0MCwgMjQ2LCAyMTUsIDY5LCA0MiwgMjQwLCAyMzcsIDQyLCAyNDgsIDIyOSwgNDIsIDI1MywgMjAwLCAKLSAgICA0MiwgMTMwLCA0MiwgMjI2LCAxMjksIDQyLCAyMjUsIDIyOSwgNDIsIDI0NywgMTU1LCA0MiwgMjQ3LCAxNTYsIDIxOCwgCi0gICAgMjM1LCA0MiwgMjQ3LCAxNTYsIDI0OSwgMTE2LCA0MiwgMjM1LCAxNjIsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjQxLCAKLSAgICAyMjMsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjE3LCAxNzUsIDQyLCAyNDUsIDk5LCAyMjksIDIxMCwgMjE3LCA3NSwgNDIsIAotICAgIDI0NSwgOTksIDIyOSwgMjEwLCAyMzEsIDc1LCA0MiwgMjQ5LCAxNjUsIDQyLCAyMjYsIDk0LCAyNTQsIDEzMywgNDIsIDE5OCwgCi0gICAgNDIsIDIzMCwgMTA4LCA2MSwgNDIsIDE4NiwgNDIsIDE3NiwgNDIsIDIzNCwgMTkxLCA0MiwgMjMxLCAxMzQsIDQyLCAyNDMsIAotICAgIDg3LCA0MiwgMjUxLCAyNiwgNDIsIDIzNCwgMTkwLCA0MiwgMjI1LCAxNTMsIDQyLCAyMjksIDg2LCA0MiwgMjMwLCAxMDgsIAotICAgIDI0NSwgMTQsIDQyLCAyMzAsIDEwOCwgMjQzLCAyMDksIDQyLCAyMzEsIDIwLCA0MiwgMjM0LCAxNDAsIDQyLCAyNDAsIDE3MCwgCi0gICAgNDIsIDIzNCwgMTAwLCA0MiwgMjMwLCAyMzcsIDQyLCAyNDIsIDIyMywgNDIsIDIxNiwgMTIwLCA0MiwgMjMwLCAxMDgsIAotICAgIDE1NiwgNDIsIDIzMCwgMTc0LCA0MiwgMjQ3LCAxNjUsIDQyLCAyMzQsIDQ2LCA0MiwgMjQ0LCA1MywgNDIsIDIyOCwgMTE3LCAKLSAgICA0MiwgMjMwLCAxMDgsIDE5NCwgNDIsIDIzMCwgMTcxLCA0MiwgMjQ5LCAyNDcsIDQyLCAyMzQsIDQwLCA0MiwgMjMwLCAxNzIsIAotICAgIDIxOCwgMjM1LCA0MiwgMjQ5LCAyNDgsIDIxOCwgMjM1LCA0MiwgMjMyLCA1NSwgMjE4LCAyMzUsIDQyLCAyMzQsIDQxLCAKLSAgICAyMTgsIDIzNSwgNDIsIDIzMCwgMTcyLCAyNDksIDExNiwgNDIsIDI0OSwgMjQ4LCAyNDksIDExNiwgNDIsIDIzMiwgNTUsIAotICAgIDI0OSwgMTE2LCA0MiwgMjM0LCA0MSwgMjQ5LCAxMTYsIDQyLCAyMzIsIDU1LCAxMTUsIDIyMiwgOTMsIDQyLCAyMzIsIDU1LCAKLSAgICAxMTUsIDIyMiwgOTQsIDIxOCwgMjM1LCA0MiwgMTkxLCA0MiwgMjM0LCAxLCA0MiwgMjMwLCAxMTAsIDQyLCAyNDIsIDE1OCwgCi0gICAgNDIsIDIyMywgMTc5LCA0MiwgMjIzLCAxODAsIDExNSwgMjIyLCA5MywgNDIsIDIyMywgMTgwLCAxMTUsIDIyMiwgOTQsIAotICAgIDIxOCwgMjM1LCA0MiwgMjI0LCAxNjUsIDQyLCAyMjgsIDE4LCA0MiwgMjMwLCAxMDgsIDIyMiwgOTMsIDQyLCAyMzAsIDEwOSwgCi0gICAgNDIsIDIyNCwgMTE5LCA0MiwgMjI3LCAxODAsIDQyLCAyMzAsIDEwOCwgMjE0LCAxMDUsIDQyLCAyMzAsIDU0LCA0MiwgMjMzLCAKLSAgICAxOTEsIDQyLCAyMzAsIDU1LCAyMzEsIDc5LCA0MiwgMjI0LCAxMTgsIDQyLCAyMjcsIDE3OSwgNDIsIDIzMCwgMTA4LCAyMTIsIAotICAgIDk4LCA0MiwgMjMwLCA0OCwgNDIsIDIzMywgMTg5LCA0MiwgMjMwLCA0OSwgMjMxLCA3OSwgNDIsIDIzNSwgMzAsIDIyNiwgCi0gICAgMjI0LCA0MiwgMjMyLCA1NSwgMjI2LCAyMjQsIDQyLCAyNTQsIDE0NCwgNDIsIDI1MSwgMTY4LCA0MiwgMjUwLCAyMjIsIDQyLCAKLSAgICAyNTAsIDE5OSwgNDIsIDI1MSwgNzUsIDExNSwgMjM0LCAxNDAsIDQyLCAyNDksIDI0NiwgNDIsIDI0OCwgMTUwLCA0MiwgCi0gICAgMjQyLCA3OSwgNDIsIDE2MiwgNDIsIDI0MCwgMjM4LCA0MiwgMjM2LCA2LCA0MiwgMjM0LCA1MywgNDIsIDIzNCwgNDEsIAotICAgIDI1MSwgMiwgNDIsIDIzMywgMjI1LCA0MiwgMjMyLCAxNjUsIDQyLCAyMzIsIDE2NCwgNDIsIDIzMiwgMTUzLCA0MiwgMjMyLCAKLSAgICA2OCwgNDIsIDIzMSwgMTM1LCAyMTksIDgxLCA0MiwgMjMwLCAyMDEsIDQyLCAyMzAsIDE1NywgNDIsIDIyNSwgMTUxLCA0MiwgCi0gICAgMjI1LCAyMiwgNDIsIDIyNCwgMjIyLCA0MiwgMjI0LCAyMjAsIDQyLCAyMTgsIDIyOSwgNDIsIDIxOCwgMywgNDIsIDIxMiwgCi0gICAgMjQsIDQyLCAyMTQsIDEwNiwgMTE1LCAxOTQsIDQyLCAxMTYsIDExNSwgMTk0LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTExLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTA1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTU4LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTYxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTkwLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTk1LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMTk5LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMTk2LCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIAotICAgIDE1NCwgMjAxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAyNDgsIDExMCwgMjE3LCA0LCAxNiwgMzEsIAotICAgIDI0OCwgMTU0LCAyNDUsIDE3NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNzYsIDExMCwgMjE3LCA0LCAKLSAgICAxNiwgMzEsIDI0OCwgMTU0LCAyMTYsIDE2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDI0NCwgMTMsIDExMCwgCi0gICAgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyNDQsIDEyNiwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxOSwgCi0gICAgMTIxLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjIwLCAxMjEsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgCi0gICAgMTU0LCAyNDUsIDE5OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIyOCwgMjAyLCAxMTAsIDIxNywgNCwgMTYsIAotICAgIDMxLCAyNDgsIDE1NCwgMjE1LCA3MywgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjcsIDExMCwgMjE3LCAKLSAgICA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDYzLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NCwgCi0gICAgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNSwgNjksIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAKLSAgICAyMTUsIDcwLCAxMTAsIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2NSwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgCi0gICAgMjQ4LCAxNTQsIDIxNSwgNjYsIDExMCwgMjE3LCA0LCAxNiwgMzEsIDI0OCwgMTU0LCAyMTUsIDcyLCAxMTAsIDIxNywgNCwgCi0gICAgMTYsIDMxLCAyNDgsIDE1NCwgMjE1LCA2OCwgMTEwLCAyMTcsIDQsIDE2LCAzMSwgMjQ4LCAxNTQsIDIxNiwgMTYzLCAxMTAsIAotICAgIDIxNywgNCwgMTYsIDMxLCAyNDgsIDE1NCwgMjE2LCAxNjIsIDQyLCAyNDMsIDEyNSwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgCi0gICAgMjQ5LCAxNDgsIDI0MSwgMjMwLCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMjMsIDEyNSwgMjQ1LCAyMzEsIDI0MSwgMTk5LCAKLSAgICAzMSwgMjQ3LCAyMzksIDI1MywgMjE1LCAyMTYsIDE5NywgMjUyLCA2NCwgMjQxLCAxOTksIDMxLCAyMTAsIDIyMywgMjQ0LCAKLSAgICA0NiwgMjQxLCAxOTksIDMxLCAyMTIsIDU5LCAyNDEsIDE5OSwgMzEsIDI0OSwgMjExLCAyNDEsIDE5OSwgMzEsIDIxNiwgCi0gICAgMTk3LCAyNTQsIDExLCAyNDEsIDE5OSwgMzEsIDI0MSwgNjcsIDIxNiwgMzksIDI0MSwgMTk5LCAzMSwgNCwgMjE3LCA2MiwgCi0gICAgMjQxLCAxOTksIDMxLCAyMTUsIDIzOCwgMjQxLCAxOTksIDMxLCAyMjUsIDIyMiwgMjQxLCAxOTksIDMxLCAyMTgsIDE2MCwgCi0gICAgMjQxLCAxOTksIDMxLCAyNDQsIDE0NywgMjQxLCAxOTksIDMxLCAyNDIsIDEzOSwgMjI0LCAyNDMsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjMwLCAxNjAsIDI0MSwgMTk5LCAzMSwgMjQ1LCAxMzQsIDI0MSwgMTk5LCAzMSwgMjQ0LCA0NywgMjQxLCAxOTksIDMxLCAKLSAgICAyMTEsIDIwNywgMjI2LCAyMDEsIDIxNiwgMTk3LCAyNDgsIDk0LCAyNDEsIDE5OSwgMzEsIDI1NCwgNTksIDI0MSwgMTk5LCAKLSAgICAzMSwgMjQ5LCAxOTMsIDI0MSwgMTk5LCAzMSwgMjUxLCAyMzUsIDIxNiwgMTM5LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTU2LCAKLSAgICAyNDEsIDE5OSwgMzEsIDIxOCwgMjQ3LCAyNTQsIDc4LCAyNDEsIDE5OSwgMzEsIDIyMywgNTYsIDI0MSwgMTk5LCAzMSwgCi0gICAgMjM1LCAyMjcsIDI0MSwgMTk5LCAzMSwgMjQyLCAxMzksIDIxNywgNjIsIDI0MSwgMTk5LCAzMSwgMjMwLCAxMTYsIDI0OSwgCi0gICAgMTY3LCAyNDEsIDE5OSwgMzEsIDI0MiwgMTM5LCAyMjQsIDIwMCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjU1LCAyNywgCi0gICAgMjEyLCA0MCwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjUwLCAxNiwgMjQ0LCAxMDQsIDI0MSwgMTk5LCAzMSwgMjM1LCAKLSAgICAyNDAsIDI0MSwgMTk5LCAzMSwgMjQ2LCA2NSwgMjQxLCAxOTksIDMxLCAyMjMsIDU5LCAyNDEsIDE5OSwgMzEsIDI0MiwgCi0gICAgMTM5LCAyMjQsIDIyNywgMjQxLCAxOTksIDMxLCAyMjQsIDE4MCwgMjQxLCAxOTksIDMxLCAyNDgsIDE2OSwgNjQsIDIxNiwgCi0gICAgMTk3LCAyMzIsIDIzNiwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjQ0LCAxODIsIDI0MSwgMTk5LCAzMSwgMjI2LCAxNjcsIAotICAgIDI0MSwgMTk5LCAzMSwgMjI2LCAyNDgsIDI0MSwgMTk5LCAzMSwgMjQ4LCA2NywgMjQxLCAxOTksIDMxLCAyNDgsIDg3LCAKLSAgICAyNDEsIDE5OSwgMzEsIDIzNSwgMjU0LCAyNDEsIDE5OSwgMzEsIDI1MSwgMTU3LCAyNDEsIDE5OSwgMzEsIDI0OSwgMjI5LCAKLSAgICAyMTYsIDQzLCAyMzEsIDgxLCAyNDEsIDE5OSwgMzEsIDI0MywgOTQsIDIxNiwgMzksIDI0MSwgMTk5LCAzMSwgMjI0LCAxMjgsIAotICAgIDIxNCwgMTU0LCAyNDEsIDE5OSwgMzEsIDIyNiwgMTY2LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMTIsIDEzLCAyNDEsIAotICAgIDE5OSwgMzEsIDIyMywgNDgsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDI1MCwgMjI4LCAyNDEsIDE5OSwgMzEsIDIxNiwgCi0gICAgMTk3LCAyNTQsIDcsIDIxNiwgMTM0LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMzQsIDE4NSwgMjE4LCAxMzYsIDIzMCwgCi0gICAgMTIwLCAyNDEsIDE5OSwgMzEsIDI0OCwgNDAsIDI0MSwgMTk5LCAzMSwgMjE2LCAxOTcsIDIzMSwgMTU3LCAyMzEsIDIwNywgCi0gICAgMjQxLCAxOTksIDMxLCAyNTUsIDI4LCAyNDEsIDE5OSwgMzEsIDIxNiwgMTk3LCAyMTIsIDU0LCAyNDEsIDE5OSwgMzEsIAotICAgIDIxNiwgMTk3LCAyNDMsIDU0LCAyMTEsIDIzOSwgMjQxLCAxOTksIDMxLCAyMTYsIDE5NywgMjM1LCA1OCwgMjMzLCAxMTMsIAotICAgIDI0MSwgMTk5LCAzMSwgMjQ3LCAxOTIsIDI0MSwgMTk5LCAzMSwgMjMyLCAyMjYsIDI0MSwgMTk5LCAzMSwgMjM1LCAyMzAsIAotICAgIDIxNSwgMTg4LCAyNDEsIDE5OSwgMzEsIDQsIDIyNCwgMjAwLCAyNDEsIDE5OSwgMzEsIDI1NCwgMjI2LCAyNDksIDIyMCwgCi0gICAgMjQxLCAxOTksIDMxLCAyNTIsIDY3LCAyNDksIDIyMCwgOCwgMywgMjM1LCAxNjYsIDgsIDMsIDIzNSwgMTU5LCA4LCAzLCAKLSAgICA3NCwgOCwgMywgMjM1LCAxODksIDgsIDMsIDIzNiwgNjUsIDgsIDMsIDIzNiwgNDgsIDgsIDMsIDIzNiwgNjcsIDgsIDMsIAotICAgIDIzNiwgNjYsIDgsIDMsIDI1MywgMjE0LCA4LCAzLCAyNTMsIDE3NywgOCwgMywgNjEsIDgsIDMsIDI1NCwgODAsIDgsIDMsIAotICAgIDIxNCwgMTY0LCA4LCAzLCAyMTQsIDE2NywgOCwgMywgMjE0LCAxNjUsIDgsIDMsIDIyNiwgMTQ0LCA4LCAzLCAyMjYsIDExOCwgCi0gICAgOCwgMywgNzgsIDgsIDMsIDIyNiwgMTc5LCA4LCAzLCAyNDUsIDQzLCA4LCAzLCA3NiwgOCwgMywgMjExLCAxOTUsIDgsIDMsIAotICAgIDI1MSwgMjM2LCA4LCAzLCAyNTEsIDIzMywgOCwgMywgMjUyLCAxNCwgOCwgMywgMjUxLCAyNDYsIDgsIDMsIDI1MiwgMywgOCwgCi0gICAgMywgMjUyLCAyLCA4LCAzLCAyNTIsIDUsIDgsIDMsIDI1MiwgNCwgOCwgMywgMjUyLCAxMjksIDgsIDMsIDI1MiwgMTIxLCA4LCAKLSAgICAzLCAyNTIsIDE5OSwgOCwgMywgMjUyLCAxNTAsIDgsIDMsIDI1MSwgMTA5LCA4LCAzLCAyNTEsIDExMywgOCwgMywgMjUxLCAKLSAgICAxMTAsIDgsIDMsIDI1MSwgMTg3LCA4LCAzLCAyNTEsIDE3MSwgOCwgMywgMjUxLCAyMTMsIDgsIDMsIDI1MSwgMTkzLCA4LCAKLSAgICAzLCAyNTIsIDI5LCA4LCAzLCAyNTIsIDgzLCA4LCAzLCAyNTIsIDQxLCA4LCAzLCAyNTEsIDk1LCA4LCAzLCAyNTEsIDkyLCAKLSAgICA4LCAzLCAyNTEsIDEzMywgOCwgMywgMjUxLCAxMDgsIDgsIDMsIDI1MSwgMTAyLCA4LCAzLCAyNTEsIDEwNiwgOCwgMywgCi0gICAgMjUxLCA4MCwgOCwgMywgMjUxLCA3OCwgOCwgMywgMjUxLCA4NSwgOCwgMywgMjUxLCA4MywgOCwgMywgMjUxLCA4MSwgOCwgCi0gICAgMywgMjUxLCA4MiwgOCwgMywgMjI1LCA1MiwgOCwgMywgMjI1LCA0OCwgOCwgMywgMjI1LCAxMTEsIDgsIDMsIDIyNSwgNjIsIAotICAgIDgsIDMsIDIyNSwgNzgsIDgsIDMsIDIyNSwgMTA1LCA4LCAzLCAyMjUsIDEwMSwgOCwgMywgMjI1LCAyNDQsIDgsIDMsIDIyNSwgCi0gICAgMjM0LCA4LCAzLCAxOTEsIDgsIDMsIDIyNiwgMjUsIDgsIDMsIDIyNCwgMTM4LCA4LCAzLCAyMjQsIDE0MCwgOCwgMywgMjI0LCAKLSAgICAxMzksIDgsIDMsIDIyNCwgMjM2LCA4LCAzLCAyMjQsIDIyNSwgOCwgMywgMjI1LCAxOSwgOCwgMywgMjI0LCAyNDgsIDgsIDMsIAotICAgIDIyNCwgMTI0LCA4LCAzLCAyMjQsIDEyMCwgOCwgMywgMjI0LCAxNTMsIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEyOSwgCi0gICAgOCwgMywgMjI0LCAxMzUsIDgsIDMsIDIyNCwgMTAzLCA4LCAzLCAyMjQsIDEwMiwgOCwgMywgMjI0LCAxMDcsIDgsIDMsIAotICAgIDIyNCwgMTA2LCA4LCAzLCAyMjQsIDEwNCwgOCwgMywgMjI0LCAxMDUsIDgsIDMsIDI1MiwgMTA0LCA4LCAzLCAyNTIsIDEwMywgCi0gICAgOCwgMywgMjUyLCAxMTAsIDgsIDMsIDI1MiwgMTA1LCA4LCAzLCAyNTIsIDEwNywgOCwgMywgMjUyLCAxMDYsIDgsIDMsIAotICAgIDI1MiwgMTA5LCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgMjUyLCAxMTYsIDgsIDMsIDI1MiwgMTE1LCA4LCAzLCAyNTIsIDExOSwgCi0gICAgOCwgMywgMjUyLCAxMTcsIDgsIDMsIDI1MiwgOTUsIDgsIDMsIDI1MiwgOTcsIDgsIDMsIDI1MiwgOTYsIDgsIDMsIDI1MiwgCi0gICAgMTAwLCA4LCAzLCAyNTIsIDk5LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAKLSAgICAyNTIsIDExNCwgOCwgMywgMjUyLCAxMTIsIDgsIDMsIDI1MiwgOTEsIDgsIDMsIDI1MiwgOTAsIDgsIDMsIDI1MiwgOTgsIDgsIAotICAgIDMsIDI1MiwgOTQsIDgsIDMsIDI1MiwgOTIsIDgsIDMsIDI1MiwgOTMsIDgsIDMsIDI1MiwgODcsIDgsIDMsIDI1MiwgODYsIAotICAgIDgsIDMsIDI1MiwgODksIDgsIDMsIDI1MiwgODgsIDgsIDMsIDIyOSwgMTc0LCA4LCAzLCAyMjksIDE3MywgOCwgMywgMjI5LCAKLSAgICAxNzksIDgsIDMsIDIyOSwgMTc1LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzgsIDgsIDMsIDIyOSwgMTc3LCA4LCAKLSAgICAzLCAyMjksIDE4MiwgOCwgMywgMjI5LCAxODEsIDgsIDMsIDIyOSwgMTg0LCA4LCAzLCAyMjksIDE4MywgOCwgMywgMjI5LCAKLSAgICAxNzAsIDgsIDMsIDIyOSwgMTY5LCA4LCAzLCAyMjksIDE3MiwgOCwgMywgMjI5LCAxNzEsIDgsIDMsIDIyOSwgMTYzLCA4LCAKLSAgICAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjcsIDgsIDMsIDIyOSwgMTY2LCA4LCAzLCAyMjksIDE2NCwgOCwgMywgMjI5LCAKLSAgICAxNjUsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE1NiwgOCwgMywgMjI5LCAxNjEsIDgsIDMsIDIyOSwgMTYwLCA4LCAKLSAgICAzLCAyMjksIDE1OCwgOCwgMywgMjI5LCAxNTksIDgsIDMsIDI0MSwgMTE3LCA4LCAzLCAyNDEsIDExNiwgOCwgMywgMjQxLCAKLSAgICAxMjIsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExOSwgOCwgMywgMjQxLCAxMjEsIDgsIDMsIDI0MSwgMTIwLCA4LCAKLSAgICAzLCAyNDEsIDEyNSwgOCwgMywgMjQxLCAxMjQsIDgsIDMsIDI0MSwgMTI3LCA4LCAzLCAyNDEsIDEyNiwgOCwgMywgMjQxLCAKLSAgICAxMDgsIDgsIDMsIDI0MSwgMTEwLCA4LCAzLCAyNDEsIDEwOSwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTEyLCA4LCAKLSAgICAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTQsIDgsIDMsIDI0MSwgMTA0LCA4LCAzLCAyNDEsIDEwMywgOCwgMywgMjQxLCAKLSAgICAxMTEsIDgsIDMsIDI0MSwgMTA3LCA4LCAzLCAyNDEsIDEwNSwgOCwgMywgMjQxLCAxMDYsIDgsIDMsIDI0MSwgOTgsIDgsIDMsIAotICAgIDI0MSwgMTAyLCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCA5OSwgOCwgMywgMjQxLCAxMDAsIDgsIDMsIDIzMCwgMTc3LCAKLSAgICA4LCAzLCAyMzAsIDE3NiwgOCwgMywgMjMwLCAyMzUsIDgsIDMsIDIzMCwgMTgzLCA4LCAzLCAyMzAsIDIwOCwgOCwgMywgCi0gICAgMjMwLCAyMjYsIDgsIDMsIDIzMCwgMjI0LCA4LCAzLCAyMzEsIDE0NCwgOCwgMywgMjMxLCAxMzksIDgsIDMsIDE4NiwgOCwgCi0gICAgMywgMjMxLCAxNzcsIDgsIDMsIDIzMCwgNzksIDgsIDMsIDIzMCwgNzgsIDgsIDMsIDIzMCwgODIsIDgsIDMsIDIzMCwgODAsIAotICAgIDgsIDMsIDIzMCwgMTI2LCA4LCAzLCAyMzAsIDExMiwgOCwgMywgMjMwLCAxNjYsIDgsIDMsIDIzMCwgMTMxLCA4LCAzLCAKLSAgICAyMzEsIDMxLCA4LCAzLCAyMzEsIDk2LCA4LCAzLCAyMzAsIDYwLCA4LCAzLCAyMzAsIDU2LCA4LCAzLCAyMzAsIDEwNywgOCwgCi0gICAgMywgMjMwLCA3NSwgOCwgMywgMjMwLCA2OCwgOCwgMywgMjMwLCA3MywgOCwgMywgMjMwLCAzMywgOCwgMywgMjMwLCAzMiwgCi0gICAgOCwgMywgMjMwLCAzOCwgOCwgMywgMjMwLCAzNSwgOCwgMywgMjQ0LCA5MSwgOCwgMywgMjQ0LCA4NiwgOCwgMywgMjQ0LCAKLSAgICAxMjksIDgsIDMsIDI0NCwgMTA2LCA4LCAzLCAyNDQsIDE3NSwgOCwgMywgMjQ0LCAxNjYsIDgsIDMsIDI0NCwgMjA0LCA4LCAKLSAgICAzLCAyNDQsIDE3OCwgOCwgMywgMjQ0LCAxMSwgOCwgMywgMjQ0LCA1MSwgOCwgMywgMjQ0LCAzNSwgOCwgMywgMjQzLCAyMjUsIAotICAgIDgsIDMsIDI0MywgMjI0LCA4LCAzLCAyNDMsIDI0MSwgOCwgMywgMjQzLCAyMzAsIDgsIDMsIDI0MywgMjI4LCA4LCAzLCAKLSAgICAyNDMsIDIyOSwgOCwgMywgMjQzLCAyMTIsIDgsIDMsIDI0MywgMjExLCA4LCAzLCAyNDMsIDIxNSwgOCwgMywgMjQzLCAyMTMsIAotICAgIDgsIDMsIDIxMywgMTQ0LCA4LCAzLCAyMTMsIDEzOSwgOCwgMywgMjEzLCAxNzYsIDgsIDMsIDIxMywgMTUzLCA4LCAzLCAKLSAgICAyMTMsIDE2NiwgOCwgMywgMjEzLCAxNjMsIDgsIDMsIDIxMywgMTY4LCA4LCAzLCAyMTMsIDE2NywgOCwgMywgMjE0LCA3LCAKLSAgICA4LCAzLCAyMTQsIDIsIDgsIDMsIDIxNCwgMjcsIDgsIDMsIDIxNCwgMTgsIDgsIDMsIDIxMywgMTI1LCA4LCAzLCAyMTMsIAotICAgIDEyMSwgOCwgMywgMjEzLCAxMzgsIDgsIDMsIDIxMywgMTI2LCA4LCAzLCAyMTMsIDE3OCwgOCwgMywgMjEzLCAyNDQsIDgsIAotICAgIDMsIDIxMiwgMTEwLCA4LCAzLCAyMTIsIDEwOCwgOCwgMywgMjEyLCAxMTYsIDgsIDMsIDIxMiwgMTEzLCA4LCAzLCAyMTIsIAotICAgIDExMSwgOCwgMywgMjEyLCAxMTIsIDgsIDMsIDIxMiwgMTAyLCA4LCAzLCAyMTIsIDEwMSwgOCwgMywgMjEyLCAxMDYsIDgsIAotICAgIDMsIDIxMiwgMTA1LCA4LCAzLCAyMTIsIDEwMywgOCwgMywgMjEyLCAxMDQsIDgsIDMsIDI0NywgMTg2LCA4LCAzLCAyNDcsIAotICAgIDE3NCwgOCwgMywgMjQ4LCAxMSwgOCwgMywgMjQ3LCAyMTEsIDgsIDMsIDI0NywgMjQ0LCA4LCAzLCAyNDcsIDI0OCwgOCwgMywgCi0gICAgMjQ3LCAyNDcsIDgsIDMsIDI0OCwgMTYwLCA4LCAzLCAyNDgsIDE1NSwgOCwgMywgMjQ4LCAyMjksIDgsIDMsIDI0OCwgMTgwLCAKLSAgICA4LCAzLCAyNDYsIDcwLCA4LCAzLCAyNDYsIDcxLCA4LCAzLCAyNDcsIDEyOCwgOCwgMywgMjQ2LCAxMTAsIDgsIDMsIDI0NywgCi0gICAgMTUzLCA4LCAzLCAyNDcsIDEzMCwgOCwgMywgMjQ4LCAzOCwgOCwgMywgMjQ4LCA5OCwgOCwgMywgMjQ4LCA1MywgOCwgMywgCi0gICAgMjQ2LCA2MSwgOCwgMywgMjQ2LCA1OSwgOCwgMywgMjQ2LCA4NiwgOCwgMywgMjQ2LCA2OSwgOCwgMywgMjQ2LCA2NCwgOCwgCi0gICAgMywgMjQ2LCA2NywgOCwgMywgMjE2LCA2OCwgOCwgMywgMjE2LCA2MiwgOCwgMywgMjE2LCAxMTgsIDgsIDMsIDIxNiwgNzcsIAotICAgIDgsIDMsIDIxNiwgMTEwLCA4LCAzLCAyMTYsIDExMiwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNywgNDcsIDgsIDMsIDIxNywgCi0gICAgMzQsIDgsIDMsIDIxNywgMTA2LCA4LCAzLCAyMTcsIDU1LCA4LCAzLCAyMTUsIDEwMywgOCwgMywgMjE1LCAxMDIsIDgsIDMsIAotICAgIDIxNSwgMTA1LCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE2LCA2LCA4LCAzLCAyMTYsIDIsIDgsIDMsIDExMiwgOCwgMywgCi0gICAgMjE2LCAxNCwgOCwgMywgMjE2LCAyMTQsIDgsIDMsIDIxNywgMjMsIDgsIDMsIDIxNiwgMjM4LCA4LCAzLCAyMTUsIDg4LCA4LCAKLSAgICAzLCAyMTUsIDgzLCA4LCAzLCAyMTUsIDExOSwgOCwgMywgMjE1LCAxMDEsIDgsIDMsIDIxNSwgODksIDgsIDMsIDIxNSwgOTksIAotICAgIDgsIDMsIDI0OCwgMTE1LCA4LCAzLCAyNDgsIDExNCwgOCwgMywgMjQ4LCAxMjAsIDgsIDMsIDI0OCwgMTE2LCA4LCAzLCAKLSAgICAyNDgsIDExNywgOCwgMywgMjQ4LCAxMTksIDgsIDMsIDI0OCwgMTE4LCA4LCAzLCAyNDgsIDEzNiwgOCwgMywgMjQ4LCAxMzUsIAotICAgIDgsIDMsIDI0OCwgMTQzLCA4LCAzLCAyNDgsIDEzNywgOCwgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTA3LCA4LCAzLCAKLSAgICAyNDgsIDEwNiwgOCwgMywgMjQ4LCAxMTAsIDgsIDMsIDI0OCwgMTA5LCA4LCAzLCAyNDgsIDExMywgOCwgMywgMjQ4LCAxMTEsIAotICAgIDgsIDMsIDI0OCwgMTI4LCA4LCAzLCAyNDgsIDEzMSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIDI0OCwgMTAxLCA4LCAzLCAKLSAgICAyNDgsIDEwMCwgOCwgMywgMjQ4LCAxMDgsIDgsIDMsIDI0OCwgMTA0LCA4LCAzLCAyNDgsIDEwMiwgOCwgMywgMjQ4LCAxMDMsIAotICAgIDgsIDMsIDIyOSwgMTMxLCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxMzgsIDgsIDMsIDIyOSwgMTMzLCA4LCAzLCAKLSAgICAyMjksIDEzNCwgOCwgMywgMjI5LCAxMzUsIDgsIDMsIDIyOSwgMTQ3LCA4LCAzLCAyMjksIDE0NiwgOCwgMywgMjI5LCAxNTMsIAotICAgIDgsIDMsIDIyOSwgMTQ4LCA4LCAzLCAyMjksIDEyMywgOCwgMywgMjI5LCAxMjIsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAKLSAgICAyMjksIDEyNCwgOCwgMywgMjI5LCAxMzksIDgsIDMsIDIyOSwgMTQ1LCA4LCAzLCAyMjksIDE0MywgOCwgMywgMjI5LCAxMTUsIAotICAgIDgsIDMsIDIyOSwgMTE0LCA4LCAzLCAyMjksIDEyMCwgOCwgMywgMjI5LCAxMTgsIDgsIDMsIDIyOSwgMTE2LCA4LCAzLCAKLSAgICAyMjksIDExNywgOCwgMywgMjQxLCA4NCwgOCwgMywgMjQxLCA4MywgOCwgMywgMjQxLCA5MCwgOCwgMywgMjQxLCA4NSwgOCwgCi0gICAgMywgMjQxLCA4NywgOCwgMywgMjQxLCA4NiwgOCwgMywgMjQxLCA4OSwgOCwgMywgMjQxLCA4OCwgOCwgMywgMjQxLCA5NSwgCi0gICAgOCwgMywgMjQxLCA5NCwgOCwgMywgMjQxLCA5NywgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCA3OCwgOCwgMywgMjQxLCAKLSAgICA3OSwgOCwgMywgMjQxLCA4MSwgOCwgMywgMjQxLCA4MCwgOCwgMywgMjQxLCA4MiwgOCwgMywgMjQxLCA5MSwgOCwgMywgCi0gICAgMjQxLCA5MywgOCwgMywgMjQxLCA5MiwgOCwgMywgMjQxLCA3NywgOCwgMywgMjI4LCAxOTQsIDgsIDMsIDIyOCwgMTkyLCA4LCAKLSAgICAzLCAyMjgsIDIzOCwgOCwgMywgMjI4LCAxOTcsIDgsIDMsIDIyOCwgMjIwLCA4LCAzLCAyMjgsIDIzNCwgOCwgMywgMjI4LCAKLSAgICAyMzMsIDgsIDMsIDIyOSwgMTg4LCA4LCAzLCAxOTgsIDgsIDMsIDIyOSwgMjAyLCA4LCAzLCAyMjcsIDE5MCwgOCwgMywgCi0gICAgMjI3LCAxOTIsIDgsIDMsIDIyNywgMTkxLCA4LCAzLCAyMjgsIDU2LCA4LCAzLCAyMjgsIDQzLCA4LCAzLCAyMjgsIDc5LCA4LCAKLSAgICAzLCAyMjgsIDY1LCA4LCAzLCAyMjksIDg4LCA4LCAzLCAyMjksIDExMiwgOCwgMywgMjI5LCA5OSwgOCwgMywgMjI3LCAxODUsIAotICAgIDgsIDMsIDIyNywgMTgxLCA4LCAzLCAyMjcsIDI0MiwgOCwgMywgMjI3LCAxODksIDgsIDMsIDIyNywgMTg3LCA4LCAzLCAKLSAgICAyMjcsIDE4OCwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNDksIAotICAgIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MiwgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTU4LCA4LCAzLCAKLSAgICAyNDEsIDE1NywgOCwgMywgMjQxLCAxNjAsIDgsIDMsIDI0MSwgMTU5LCA4LCAzLCAyNDEsIDE0MCwgOCwgMywgMjQxLCAxNDIsIAotICAgIDgsIDMsIDI0MSwgMTQxLCA4LCAzLCAyNDEsIDE0NCwgOCwgMywgMjQxLCAxNDYsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAKLSAgICAyNDEsIDE1NCwgOCwgMywgMjQxLCAxNTYsIDgsIDMsIDI0MSwgMTU1LCA4LCAzLCAyNDEsIDEzNiwgOCwgMywgMjQxLCAxMzUsIAotICAgIDgsIDMsIDI0MSwgMTQzLCA4LCAzLCAyNDEsIDEzOSwgOCwgMywgMjQxLCAxMzcsIDgsIDMsIDI0MSwgMTM4LCA4LCAzLCAKLSAgICAyNDEsIDEzMCwgOCwgMywgMjQxLCAxMjksIDgsIDMsIDI0MSwgMTM0LCA4LCAzLCAyNDEsIDEzMywgOCwgMywgMjQxLCAxMzEsIAotICAgIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyMzIsIDIwMSwgOCwgMywgMjMyLCAxOTUsIDgsIDMsIDIzMiwgMjQ3LCA4LCAzLCAKLSAgICAyMzIsIDIwOCwgOCwgMywgMjMyLCAyMzksIDgsIDMsIDIzMiwgMjM4LCA4LCAzLCAyMzIsIDI0MiwgOCwgMywgMjMyLCAyNDAsIAotICAgIDgsIDMsIDIzMywgODUsIDgsIDMsIDIzMywgNzUsIDgsIDMsIDIzMywgMTQxLCA4LCAzLCAyMzMsIDk0LCA4LCAzLCAyMzIsIAotICAgIDg0LCA4LCAzLCAyMzIsIDgzLCA4LCAzLCAyMzIsIDg2LCA4LCAzLCAyMzIsIDg1LCA4LCAzLCAyMzIsIDEyMiwgOCwgMywgCi0gICAgMjMyLCAxMTIsIDgsIDMsIDIzMiwgMTYyLCA4LCAzLCAyMzIsIDEyNiwgOCwgMywgMjMzLCA4LCA4LCAzLCAyMzMsIDY0LCA4LCAKLSAgICAzLCAyMzMsIDIzLCA4LCAzLCAyMzIsIDc5LCA4LCAzLCAyMzIsIDc3LCA4LCAzLCAyMzIsIDEwMywgOCwgMywgMjMyLCA4MiwgCi0gICAgOCwgMywgMjMyLCA4MCwgOCwgMywgMjMyLCA4MSwgOCwgMywgMjMyLCA1OSwgOCwgMywgMjMyLCA1OCwgOCwgMywgMjMyLCAKLSAgICA2NywgOCwgMywgMjMyLCA2MiwgOCwgMywgMjMyLCA2MCwgOCwgMywgMjMyLCA2MSwgOCwgMywgMjQyLCAxOTYsIDgsIDMsIAotICAgIDI0MiwgMTk1LCA4LCAzLCAyNDIsIDIyMSwgOCwgMywgMjQyLCAyMDYsIDgsIDMsIDI0MiwgMjEzLCA4LCAzLCAyNDIsIDIxMiwgCi0gICAgOCwgMywgMjQyLCAyMTUsIDgsIDMsIDI0MiwgMjE0LCA4LCAzLCAyNDMsIDk2LCA4LCAzLCAyNDMsIDkxLCA4LCAzLCAyNDMsIAotICAgIDE0MiwgOCwgMywgMjQzLCAxMDYsIDgsIDMsIDI0MiwgOTgsIDgsIDMsIDI0MiwgOTcsIDgsIDMsIDI0MiwgMTAwLCA4LCAzLCAKLSAgICAyNDIsIDk5LCA4LCAzLCAyNDIsIDE2MSwgOCwgMywgMjQyLCAxNTksIDgsIDMsIDI0MiwgMTgxLCA4LCAzLCAyNDIsIDE2OSwgCi0gICAgOCwgMywgMjQzLCA0MCwgOCwgMywgMjQzLCAzOCwgOCwgMywgMjQzLCA2OSwgOCwgMywgMjQzLCA1MSwgOCwgMywgMjQyLCAKLSAgICA4OCwgOCwgMywgMjQyLCA4NywgOCwgMywgMjQyLCAxMjAsIDgsIDMsIDI0MiwgOTYsIDgsIDMsIDI0MiwgODksIDgsIDMsIAotICAgIDI0MiwgOTUsIDgsIDMsIDIzNCwgNjcsIDgsIDMsIDIzNCwgNjYsIDgsIDMsIDIzNCwgOTgsIDgsIDMsIDIzNCwgODEsIDgsIAotICAgIDMsIDIzNCwgOTEsIDgsIDMsIDIzNCwgOTQsIDgsIDMsIDIzNCwgOTIsIDgsIDMsIDIzNCwgMjA4LCA4LCAzLCAyMzQsIDE5NiwgCi0gICAgOCwgMywgMTc2LCA4LCAzLCAyMzQsIDIzNCwgOCwgMywgMjMzLCAyMDYsIDgsIDMsIDIzMywgMjExLCA4LCAzLCAyMzMsIAotICAgIDIwOCwgOCwgMywgMjM0LCA2LCA4LCAzLCAyMzQsIDIsIDgsIDMsIDIzNCwgMzQsIDgsIDMsIDIzNCwgMTMsIDgsIDMsIDIzNCwgCi0gICAgMTYyLCA4LCAzLCAyMzQsIDE0NiwgOCwgMywgMjM0LCAxODgsIDgsIDMsIDIzNCwgMTY1LCA4LCAzLCAyMzMsIDE5NSwgOCwgCi0gICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMjIzLCA4LCAzLCAyMzMsIDIwNSwgOCwgMywgMjMzLCAxOTgsIDgsIDMsIDIzMywgCi0gICAgMjAyLCA4LCAzLCAyNDMsIDIyLCA4LCAzLCAyNDMsIDIxLCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIDIzLCA4LCAzLCAKLSAgICAyNDMsIDI1LCA4LCAzLCAyNDMsIDI0LCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMyLCA4LCAzLCAyNDMsIDM2LCA4LCAKLSAgICAzLCAyNDMsIDM0LCA4LCAzLCAyNDMsIDEzLCA4LCAzLCAyNDMsIDEyLCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCAKLSAgICA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDIwLCA4LCAzLCAyNDMsIDE5LCA4LCAzLCAyNDMsIAotICAgIDI4LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDgsIDgsIDMsIDI0MywgCi0gICAgNywgOCwgMywgMjQzLCAxNiwgOCwgMywgMjQzLCAxMSwgOCwgMywgMjQzLCA5LCA4LCAzLCAyNDMsIDEwLCA4LCAzLCAyMzAsIAotICAgIDI1NCwgOCwgMywgMjMwLCAyNTUsIDgsIDMsIDIzMSwgMTcsIDgsIDMsIDIzMSwgMTYsIDgsIDMsIDIzMSwgMTksIDgsIDMsIAotICAgIDIzMSwgMTgsIDgsIDMsIDIzMCwgMjQ1LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIDMsIDIzMCwgMjUwLCAKLSAgICA4LCAzLCAyMzAsIDI0OSwgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzEsIDAsIDgsIDMsIDIzMSwgCi0gICAgMiwgOCwgMywgMjMxLCAxLCA4LCAzLCAyMzAsIDI0MSwgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQ4LCA4LCAzLCAKLSAgICAyMzAsIDI0NCwgOCwgMywgMjMwLCAyNDIsIDgsIDMsIDIzMCwgMjQzLCA4LCAzLCAyNDAsIDE4NywgOCwgMywgMjQwLCAxODYsIAotICAgIDgsIDMsIDI0MCwgMTkzLCA4LCAzLCAyNDAsIDE4OCwgOCwgMywgMjQwLCAxOTAsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAKLSAgICAyNDAsIDE5MiwgOCwgMywgMjQwLCAxOTEsIDgsIDMsIDI0MCwgMTk4LCA4LCAzLCAyNDAsIDE5NywgOCwgMywgMjQwLCAyMDAsIAotICAgIDgsIDMsIDI0MCwgMTk5LCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxNzgsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAKLSAgICAyNDAsIDE4MCwgOCwgMywgMjQwLCAxODMsIDgsIDMsIDI0MCwgMTgyLCA4LCAzLCAyNDAsIDE4NSwgOCwgMywgMjQwLCAxODQsIAotICAgIDgsIDMsIDI0MCwgMTk0LCA4LCAzLCAyNDAsIDE5NiwgOCwgMywgMjQwLCAxOTUsIDgsIDMsIDIyOSwgMjksIDgsIDMsIDIyOSwgCi0gICAgMzEsIDgsIDMsIDIyOSwgMzAsIDgsIDMsIDIyOSwgNzIsIDgsIDMsIDIyOSwgNzAsIDgsIDMsIDIyOSwgODIsIDgsIDMsIAotICAgIDIyOSwgNzUsIDgsIDMsIDIyOCwgMjQ4LCA4LCAzLCAyMjgsIDI0NywgOCwgMywgMjI4LCAyNDksIDgsIDMsIDIyOSwgMSwgOCwgCi0gICAgMywgMjI4LCAyNTQsIDgsIDMsIDIyOSwgOSwgOCwgMywgMjI5LCAzLCA4LCAzLCAyMjksIDYzLCA4LCAzLCAyMjksIDY5LCA4LCAKLSAgICAzLCAyMjksIDY1LCA4LCAzLCAyNDEsIDE2MywgOCwgMywgMjQxLCAxNzMsIDgsIDMsIDI0MSwgMTgyLCA4LCAzLCAyNDIsIDIsIAotICAgIDgsIDMsIDI0MSwgMjUwLCA4LCAzLCAxNjIsIDgsIDMsIDI0MiwgMTMsIDgsIDMsIDI0MCwgMjEzLCA4LCAzLCAyNDAsIDIxMiwgCi0gICAgOCwgMywgMjQwLCAyMTUsIDgsIDMsIDI0MCwgMjE0LCA4LCAzLCAyNDAsIDI0OSwgOCwgMywgMjQwLCAyNDAsIDgsIDMsIAotICAgIDI0MSwgNzUsIDgsIDMsIDI0MSwgNTQsIDgsIDMsIDI0MSwgMjAxLCA4LCAzLCAyNDEsIDI0NSwgOCwgMywgMjQxLCAyMTMsIAotICAgIDgsIDMsIDIxMiwgNDMsIDgsIDMsIDIxMiwgMjgsIDgsIDMsIDIxMiwgNjUsIDgsIDMsIDIxMiwgNTEsIDgsIDMsIDIxMSwgCi0gICAgMTg1LCA4LCAzLCAyMTEsIDE4NywgOCwgMywgMjExLCAxODYsIDgsIDMsIDIxMSwgMjAzLCA4LCAzLCAyMTEsIDIyNywgOCwgCi0gICAgMywgMjExLCAyMTAsIDgsIDMsIDIxMiwgNSwgOCwgMywgMjEyLCAyMiwgOCwgMywgMjEyLCAxMCwgOCwgMywgMjEwLCAzMCwgCi0gICAgOCwgMywgMjEwLCAyOSwgOCwgMywgMjEwLCA0NCwgOCwgMywgMjEwLCAzMiwgOCwgMywgMjEwLCAzNywgOCwgMywgMjEwLCAKLSAgICAzOSwgOCwgMywgMjEwLCAzOCwgOCwgMywgMjEwLCAxMDIsIDgsIDMsIDIxMCwgOTksIDgsIDMsIDIxMCwgMTE2LCA4LCAzLCAKLSAgICAyMTAsIDEwNSwgOCwgMywgMjEwLCA2LCA4LCAzLCAyMTAsIDgsIDgsIDMsIDIxMCwgNywgOCwgMywgMjEwLCAxOSwgOCwgMywgCi0gICAgMjEwLCAxOCwgOCwgMywgMjEwLCAyMywgOCwgMywgMjEwLCAyMCwgOCwgMywgMjEwLCA4NCwgOCwgMywgMjEwLCA5NCwgOCwgCi0gICAgMywgMjEwLCA4OCwgOCwgMywgMjEwLCAyLCA4LCAzLCAyMTAsIDEsIDgsIDMsIDIxMCwgMTMsIDgsIDMsIDIxMCwgNSwgOCwgCi0gICAgMywgMjEwLCAzLCA4LCAzLCAyMTAsIDQsIDgsIDMsIDIwOSwgMjQ1LCA4LCAzLCAyMDksIDI0NCwgOCwgMywgMjA5LCAyNTAsIAotICAgIDgsIDMsIDIwOSwgMjQ4LCA4LCAzLCAyMDksIDI0NiwgOCwgMywgMjA5LCAyNDcsIDgsIDMsIDI1MCwgMzYsIDgsIDMsIDI1MCwgCi0gICAgMzIsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNDUsIDgsIDMsIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTAsIDgsIDMsIAotICAgIDI1MCwgNTgsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIDI1MCwgMjMyLCA4LCAzLCAyNTAsIDIyNSwgOCwgMywgMjUxLCA0MSwgOCwgCi0gICAgMywgMjUxLCAzLCA4LCAzLCAyNDksIDExMiwgOCwgMywgMjQ5LCAxMTQsIDgsIDMsIDI0OSwgMTEzLCA4LCAzLCAyNDksIAotICAgIDE2MSwgOCwgMywgMjQ5LCAxNTIsIDgsIDMsIDI0OSwgMjQ2LCA4LCAzLCAyNDksIDE3NywgOCwgMywgMjUwLCAxNjgsIDgsIAotICAgIDMsIDI1MCwgMTk4LCA4LCAzLCAyNTAsIDE3MywgOCwgMywgMjQ5LCA5MiwgOCwgMywgMjQ5LCA5MCwgOCwgMywgMjQ5LCAKLSAgICAxMjAsIDgsIDMsIDI0OSwgMTEwLCA4LCAzLCAyNDksIDk3LCA4LCAzLCAyNDksIDEwOSwgOCwgMywgMjQ5LCA3MSwgOCwgMywgCi0gICAgMjQ5LCA3MCwgOCwgMywgMjQ5LCA4MSwgOCwgMywgMjQ5LCA3NywgOCwgMywgMjQ5LCA3MiwgOCwgMywgMjQ5LCA3NCwgOCwgCi0gICAgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgCi0gICAgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgCi0gICAgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgCi0gICAgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgCi0gICAgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgCi0gICAgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgCi0gICAgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIDEwOCwgOCwgMywgMjI3LCAxMDcsIDgsIDMsIDIyNywgCi0gICAgMTEzLCA4LCAzLCAyMjcsIDEwOSwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDExMSwgOCwgCi0gICAgMywgMjI3LCAxMTgsIDgsIDMsIDIyNywgMTE3LCA4LCAzLCAyMjcsIDEyMSwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgCi0gICAgMTAxLCA4LCAzLCAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMDUsIDgsIDMsIDIyNywgMTA2LCA4LCAzLCAyMjcsIDExNCwgOCwgCi0gICAgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTYsIDgsIDMsIDIyNywgMTA0LCA4LCAzLCAyMjcsIDEwMCwgOCwgMywgMjI3LCAKLSAgICA5NywgOCwgMywgMjI3LCA5OCwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA5NSwgOCwgMywgCi0gICAgMjI3LCA5NCwgOCwgMywgMjI3LCA5MiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjE5LCAxMjksIDgsIDMsIDE5NSwgOCwgMywgCi0gICAgMjE5LCAxOTMsIDgsIDMsIDIxOSwgMTMyLCA4LCAzLCAyMTksIDE4NSwgOCwgMywgMjE5LCAxODgsIDgsIDMsIDIxOSwgMTg2LCAKLSAgICA4LCAzLCAyMjEsIDIyOCwgOCwgMywgMjIxLCAyMTYsIDgsIDMsIDIwNiwgOCwgMywgMjIxLCAyMzYsIDgsIDMsIDIxOCwgMjksIAotICAgIDgsIDMsIDIxOCwgMzEsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOSwgMzYsIDgsIDMsIDIxOSwgMjUsIDgsIDMsIDIxOSwgCi0gICAgNjAsIDgsIDMsIDIxOSwgNDAsIDgsIDMsIDIyMCwgMTE2LCA4LCAzLCAyMjEsIDE4MywgOCwgMywgMjIwLCAxNDEsIDgsIDMsIAotICAgIDIxOCwgNiwgOCwgMywgMjE4LCA0LCA4LCAzLCAyMTgsIDg0LCA4LCAzLCAyMTgsIDI4LCA4LCAzLCAyMTgsIDEwLCA4LCAzLCAKLSAgICAyMTgsIDE4LCA4LCAzLCAyMTcsIDE2NywgOCwgMywgMjE3LCAxNjYsIDgsIDMsIDIxNywgMjMzLCA4LCAzLCAyMTcsIDE3NCwgCi0gICAgOCwgMywgMjE3LCAxNjksIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTgsIDE4OCwgOCwgMywgMjE4LCAxODcsIDgsIDMsIAotICAgIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE4OSwgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkzLCA4LCAzLCAyMTgsIDE5MiwgCi0gICAgOCwgMywgMjE4LCAyMDIsIDgsIDMsIDIxOCwgMjAwLCA4LCAzLCAyMTgsIDIyNSwgOCwgMywgMjE4LCAyMDMsIDgsIDMsIAotICAgIDIxOCwgMTgzLCA4LCAzLCAyMTgsIDE4MiwgOCwgMywgMjE4LCAxODYsIDgsIDMsIDIxOCwgMTg0LCA4LCAzLCAyMTgsIDE5NiwgCi0gICAgOCwgMywgMjE4LCAxOTksIDgsIDMsIDIxOCwgMTk3LCA4LCAzLCAyMTgsIDE3OSwgOCwgMywgMjE4LCAxNzcsIDgsIDMsIAotICAgIDIxOCwgMTgxLCA4LCAzLCAyMTgsIDE4MCwgOCwgMywgMjE4LCAxNzIsIDgsIDMsIDIxOCwgMTcxLCA4LCAzLCAyMTgsIDE3NiwgCi0gICAgOCwgMywgMjE4LCAxNzUsIDgsIDMsIDIxOCwgMTczLCA4LCAzLCAyMTgsIDE3NCwgOCwgMywgMjEwLCA3NywgOCwgMywgMjEwLCAKLSAgICA3NiwgOCwgMywgMjEwLCA4MiwgOCwgMywgMjEwLCA3OSwgOCwgMywgMjEwLCA1OSwgOCwgMywgMjEwLCA2MSwgOCwgMywgCi0gICAgMjEwLCA2MCwgOCwgMywgMjEwLCA2NCwgOCwgMywgMjEwLCA2MywgOCwgMywgMjEwLCA2NywgOCwgMywgMjEwLCA2NSwgOCwgCi0gICAgMywgMjEwLCA3MSwgOCwgMywgMjEwLCA3MCwgOCwgMywgMjEwLCA3NCwgOCwgMywgMjEwLCA3MiwgOCwgMywgMjEwLCA1NSwgCi0gICAgOCwgMywgMjEwLCA1NCwgOCwgMywgMjEwLCA2MiwgOCwgMywgMjEwLCA1OCwgOCwgMywgMjEwLCA1NiwgOCwgMywgMjEwLCAKLSAgICA1NywgOCwgMywgMjEwLCA0NywgOCwgMywgMjEwLCA0NiwgOCwgMywgMjEwLCA1MSwgOCwgMywgMjEwLCA1MCwgOCwgMywgCi0gICAgMjEwLCA0OCwgOCwgMywgMjEwLCA0OSwgOCwgMywgMjUwLCAxNDQsIDgsIDMsIDI1MCwgMTQxLCA4LCAzLCAyNTAsIDE2NSwgCi0gICAgOCwgMywgMjUwLCAxNTIsIDgsIDMsIDI1MCwgNzMsIDgsIDMsIDI1MCwgNzIsIDgsIDMsIDI1MCwgNzUsIDgsIDMsIDI1MCwgCi0gICAgNzQsIDgsIDMsIDI1MCwgODcsIDgsIDMsIDI1MCwgODYsIDgsIDMsIDI1MCwgOTQsIDgsIDMsIDI1MCwgODksIDgsIDMsIAotICAgIDI1MCwgMTIzLCA4LCAzLCAyNTAsIDEyMSwgOCwgMywgMjUwLCAxMzksIDgsIDMsIDI1MCwgMTI5LCA4LCAzLCAyNTAsIDY3LCAKLSAgICA4LCAzLCAyNTAsIDc3LCA4LCAzLCAyNTAsIDcxLCA4LCAzLCAyNTAsIDY4LCA4LCAzLCAyNTAsIDcwLCA4LCAzLCAyNTAsIAotICAgIDYxLCA4LCAzLCAyNTAsIDYwLCA4LCAzLCAyNTAsIDY1LCA4LCAzLCAyNTAsIDY0LCA4LCAzLCAyNTAsIDYyLCA4LCAzLCAKLSAgICAyNTAsIDYzLCA4LCAzLCAyMjIsIDE3NywgOCwgMywgMjIyLCAxODEsIDgsIDMsIDIyMiwgMTYwLCA4LCAzLCAyMjIsIDE2MSwgCi0gICAgOCwgMywgMjIyLCAxNjQsIDgsIDMsIDIyMiwgMTYzLCA4LCAzLCAyMjIsIDE2NywgOCwgMywgMjIyLCAxNjUsIDgsIDMsIAotICAgIDIyMiwgMTcxLCA4LCAzLCAyMjIsIDE3MCwgOCwgMywgMjIyLCAxNzYsIDgsIDMsIDIyMiwgMTcyLCA4LCAzLCAyMjIsIDE1NiwgCi0gICAgOCwgMywgMjIyLCAxNTQsIDgsIDMsIDIyMiwgMTYyLCA4LCAzLCAyMjIsIDE1OSwgOCwgMywgMjIyLCAxNTcsIDgsIDMsIAotICAgIDIyMiwgMTU4LCA4LCAzLCAyMjIsIDE0OSwgOCwgMywgMjIyLCAxNDgsIDgsIDMsIDIyMiwgMTUzLCA4LCAzLCAyMjIsIDE1MiwgCi0gICAgOCwgMywgMjIyLCAxNTAsIDgsIDMsIDIyMiwgMTUxLCA4LCAzLCAyMjgsIDM5LCA4LCAzLCAyMjgsIDM4LCA4LCAzLCAyMjgsIAotICAgIDQxLCA4LCAzLCAyMjgsIDQwLCA4LCAzLCAyMjgsIDMxLCA4LCAzLCAyMjgsIDMzLCA4LCAzLCAyMjgsIDMyLCA4LCAzLCAKLSAgICAyMjgsIDM1LCA4LCAzLCAyMjgsIDM0LCA4LCAzLCAyMjgsIDM3LCA4LCAzLCAyMjgsIDM2LCA4LCAzLCAyMjgsIDI2LCA4LCAKLSAgICAzLCAyMjgsIDI1LCA4LCAzLCAyMjgsIDMwLCA4LCAzLCAyMjgsIDI5LCA4LCAzLCAyMjgsIDI3LCA4LCAzLCAyMjgsIDI4LCAKLSAgICA4LCAzLCAyMjgsIDIwLCA4LCAzLCAyMjgsIDE5LCA4LCAzLCAyMjgsIDI0LCA4LCAzLCAyMjgsIDIzLCA4LCAzLCAyMjgsIAotICAgIDIxLCA4LCAzLCAyMjgsIDIyLCA4LCAzLCAyMjAsIDc0LCA4LCAzLCAyMjAsIDY5LCA4LCAzLCAyMjAsIDEwNCwgOCwgMywgCi0gICAgMjIwLCA4NSwgOCwgMywgMjE5LCAyMTcsIDgsIDMsIDIxOSwgMjE5LCA4LCAzLCAyMTksIDIxOCwgOCwgMywgMjE5LCAyMzgsIAotICAgIDgsIDMsIDIxOSwgMjM1LCA4LCAzLCAyMjAsIDksIDgsIDMsIDIyMCwgMCwgOCwgMywgMjIwLCA0NCwgOCwgMywgMjIwLCAzNywgCi0gICAgOCwgMywgMjIwLCA2NSwgOCwgMywgMjIwLCA1MiwgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMjExLCA4LCAzLCAyMTksIAotICAgIDIyNywgOCwgMywgMjE5LCAyMTYsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAxOTYsIDgsIAotICAgIDMsIDIxOSwgMTk1LCA4LCAzLCAyMTksIDIwMiwgOCwgMywgMjE5LCAxOTksIDgsIDMsIDIxOSwgMTk3LCA4LCAzLCAyMTksIAotICAgIDE5OCwgOCwgMywgMjIzLCAxNDQsIDgsIDMsIDIyMywgMTM4LCA4LCAzLCAyMDUsIDgsIDMsIDIyMywgMTUwLCA4LCAzLCAKLSAgICAyMjIsIDEyMiwgOCwgMywgMjIyLCAxMjQsIDgsIDMsIDIyMiwgMTIzLCA4LCAzLCAyMjIsIDE5MCwgOCwgMywgMjIyLCAxODMsIAotICAgIDgsIDMsIDIyMiwgMjEzLCA4LCAzLCAyMjIsIDE5NCwgOCwgMywgMjIzLCA0NiwgOCwgMywgMjIzLCAxMzEsIDgsIDMsIDIyMywgCi0gICAgODQsIDgsIDMsIDIyMiwgMTE1LCA4LCAzLCAyMjIsIDExMiwgOCwgMywgMjIyLCAxNDIsIDgsIDMsIDIyMiwgMTIxLCA4LCAzLCAKLSAgICAyMjIsIDExNywgOCwgMywgMjIyLCAxMTgsIDgsIDMsIDIyMiwgOTcsIDgsIDMsIDIyMiwgOTYsIDgsIDMsIDIyMiwgMTAyLCAKLSAgICA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5OSwgOCwgMywgMjM1LCAxMDQsIDgsIDMsIDIzNSwgCi0gICAgMTAzLCA4LCAzLCAyMzUsIDExNCwgOCwgMywgMjM1LCAxMDUsIDgsIDMsIDIzNSwgMTEwLCA4LCAzLCAyMzUsIDEwOSwgOCwgCi0gICAgMywgMjM1LCAxMTIsIDgsIDMsIDIzNSwgMTExLCA4LCAzLCAyMzUsIDQ3LCA4LCAzLCAyMzUsIDQ2LCA4LCAzLCAyMzUsIDQ5LCAKLSAgICA4LCAzLCAyMzUsIDQ4LCA4LCAzLCAyMzUsIDYyLCA4LCAzLCAyMzUsIDYwLCA4LCAzLCAyMzUsIDc0LCA4LCAzLCAyMzUsIAotICAgIDY0LCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDM4LCA4LCAzLCAyMzUsIDU3LCA4LCAzLCAyMzUsIDQ1LCA4LCAzLCAKLSAgICAyMzUsIDQyLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDMyLCA4LCAzLCAyMzUsIDMxLCA4LCAzLCAyMzUsIDM2LCA4LCAKLSAgICAzLCAyMzUsIDM1LCA4LCAzLCAyMzUsIDMzLCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDQ3LCAKLSAgICA4LCAzLCAyMjQsIDU2LCA4LCAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIAotICAgIDU1LCA4LCAzLCAyMjQsIDU0LCA4LCAzLCAyMjQsIDIsIDgsIDMsIDIyMywgMjU1LCA4LCAzLCAyMjQsIDQsIDgsIDMsIDIyNCwgCi0gICAgMywgOCwgMywgMjI0LCAzNiwgOCwgMywgMjI0LCAzNSwgOCwgMywgMjI0LCA0NSwgOCwgMywgMjI0LCAzOSwgOCwgMywgMjIzLCAKLSAgICAyNTAsIDgsIDMsIDIyMywgMjQ2LCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjMsIDI1NCwgOCwgMywgMjIzLCAyNTIsIDgsIDMsIAotICAgIDIyMywgMjUzLCA4LCAzLCAyMjMsIDIzMCwgOCwgMywgMjIzLCAyMjgsIDgsIDMsIDIyMywgMjQwLCA4LCAzLCAyMjMsIDIzMywgCi0gICAgOCwgMywgMjIzLCAyMzEsIDgsIDMsIDIyMywgMjMyLCA4LCAzLCAyMzUsIDkzLCA4LCAzLCAyMzUsIDkyLCA4LCAzLCAyMzUsIAotICAgIDk5LCA4LCAzLCAyMzUsIDk0LCA4LCAzLCAyMzUsIDk2LCA4LCAzLCAyMzUsIDk1LCA4LCAzLCAyMzUsIDk4LCA4LCAzLCAKLSAgICAyMzUsIDk3LCA4LCAzLCAyMzUsIDg0LCA4LCAzLCAyMzUsIDg2LCA4LCAzLCAyMzUsIDg1LCA4LCAzLCAyMzUsIDg5LCA4LCAKLSAgICAzLCAyMzUsIDg4LCA4LCAzLCAyMzUsIDkxLCA4LCAzLCAyMzUsIDkwLCA4LCAzLCAyMzUsIDgwLCA4LCAzLCAyMzUsIDc5LCAKLSAgICA4LCAzLCAyMzUsIDg3LCA4LCAzLCAyMzUsIDgzLCA4LCAzLCAyMzUsIDgxLCA4LCAzLCAyMzUsIDgyLCA4LCAzLCAyMzUsIAotICAgIDc2LCA4LCAzLCAyMzUsIDc1LCA4LCAzLCAyMzUsIDc4LCA4LCAzLCAyMzUsIDc3LCA4LCAzLCAyMjgsIDE2NywgOCwgMywgCi0gICAgMjI4LCAxNjYsIDgsIDMsIDIyOCwgMTc0LCA4LCAzLCAyMjgsIDE2OCwgOCwgMywgMjI4LCAxNzAsIDgsIDMsIDIyOCwgMTY5LCAKLSAgICA4LCAzLCAyMjgsIDE3MywgOCwgMywgMjI4LCAxNzEsIDgsIDMsIDIyOCwgMTU2LCA4LCAzLCAyMjgsIDE1NywgOCwgMywgCi0gICAgMjI4LCAxNjIsIDgsIDMsIDIyOCwgMTYxLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjMsIDgsIDMsIDIyOCwgMTUxLCAKLSAgICA4LCAzLCAyMjgsIDE2MCwgOCwgMywgMjI4LCAxNTUsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1MywgOCwgMywgCi0gICAgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE1MCwgOCwgMywgMjI4LCAxNDksIDgsIDMsIDIyOCwgMTQ3LCAKLSAgICA4LCAzLCAyMjgsIDE0OCwgOCwgMywgMjI3LCAxNDEsIDgsIDMsIDIyNywgMTQwLCA4LCAzLCAyMjcsIDE1MiwgOCwgMywgCi0gICAgMjI3LCAxNDUsIDgsIDMsIDIyNywgMTQ5LCA4LCAzLCAyMjcsIDE0OCwgOCwgMywgMjI3LCAxNTEsIDgsIDMsIDIyNywgMTUwLCAKLSAgICA4LCAzLCAyMjcsIDEyOCwgOCwgMywgMjI3LCAxMzAsIDgsIDMsIDIyNywgMTI5LCA4LCAzLCAyMjcsIDEzNCwgOCwgMywgCi0gICAgMjI3LCAxMzMsIDgsIDMsIDIyNywgMTM4LCA4LCAzLCAyMjcsIDEzNSwgOCwgMywgMjI3LCAxMjYsIDgsIDMsIDIyNywgMTI0LCAKLSAgICA4LCAzLCAyMjcsIDEzMiwgOCwgMywgMjI3LCAxMjcsIDgsIDMsIDIxMSwgMTUwLCA4LCAzLCAyMTEsIDE0OSwgOCwgMywgCi0gICAgMjExLCAxNTcsIDgsIDMsIDIxMSwgMTUyLCA4LCAzLCAyMTEsIDE1NCwgOCwgMywgMjExLCAxNTMsIDgsIDMsIDIxMSwgMTU2LCAKLSAgICA4LCAzLCAyMTEsIDE1NSwgOCwgMywgMjExLCAxMzksIDgsIDMsIDIxMSwgMTQwLCA4LCAzLCAyMTEsIDE0NCwgOCwgMywgCi0gICAgMjExLCAxNDMsIDgsIDMsIDIxMSwgMTQ4LCA4LCAzLCAyMTEsIDE0NiwgOCwgMywgMjExLCAxMjEsIDgsIDMsIDIxMSwgMTE5LCAKLSAgICA4LCAzLCAyMTEsIDEzMSwgOCwgMywgMjExLCAxMjQsIDgsIDMsIDIxMSwgMTIyLCA4LCAzLCAyMTEsIDEyMywgOCwgMywgCi0gICAgMjEwLCAyNTAsIDgsIDMsIDIxMCwgMjQ4LCA4LCAzLCAyMTEsIDgsIDgsIDMsIDIxMCwgMjUxLCA4LCAzLCAyMTEsIDIsIDgsIAotICAgIDMsIDIxMSwgMSwgOCwgMywgMjExLCA1LCA4LCAzLCAyMTEsIDMsIDgsIDMsIDIxMCwgMTkxLCA4LCAzLCAyMTAsIDE5MCwgOCwgCi0gICAgMywgMjEwLCAxOTQsIDgsIDMsIDIxMCwgMTkyLCA4LCAzLCAyMTAsIDIyNCwgOCwgMywgMjEwLCAyMjEsIDgsIDMsIDIxMCwgCi0gICAgMjQ0LCA4LCAzLCAyMTAsIDIyOCwgOCwgMywgMjEwLCAxODIsIDgsIDMsIDIxMCwgMTc4LCA4LCAzLCAyMTAsIDIxMiwgOCwgCi0gICAgMywgMjEwLCAxODksIDgsIDMsIDIxMCwgMTg1LCA4LCAzLCAyMTAsIDE4NiwgOCwgMywgMjEwLCAxNjIsIDgsIDMsIDIxMCwgCi0gICAgMTYxLCA4LCAzLCAyMTAsIDE2OSwgOCwgMywgMjEwLCAxNjUsIDgsIDMsIDIxMCwgMTYzLCA4LCAzLCAyMTAsIDE2NCwgOCwgCi0gICAgMzQsIDIyNCwgMzYsIDgsIDM0LCAyMzIsIDI0NywgOCwgMzQsIDIzNCwgNjcsIDgsIDM0LCAyMjcsIDE0NSwgOCwgMzQsIAotICAgIDI0OSwgNzcsIDgsIDM0LCAyMTgsIDE5NCwgOCwgMzQsIDI0MywgMTksIDgsIDM0LCAyNDMsIDUxLCA4LCAzNCwgMjMwLCAKLSAgICAyMzUsIDgsIDM0LCAyNDAsIDE4NywgOCwgMzQsIDIzMiwgNjEsIDgsIDM0LCAyNTIsIDkxLCA4LCAzNCwgMjMwLCAxMzEsIDgsIAotICAgIDM0LCAyMTAsIDI0NCwgOCwgMzQsIDIyNCwgMTI0LCA4LCAzNCwgMjQwLCAxODEsIDgsIDM0LCAyMTcsIDQ3LCA4LCAzNCwgCi0gICAgMjQzLCAxNDIsIDgsIDM0LCAyMTAsIDUsIDgsIDM0LCAyNDksIDcxLCA4LCAzNCwgMjQ4LCAxMDMsIDgsIDM0LCAyNTEsIAotICAgIDEwNiwgOCwgMzQsIDI0MywgMTUsIDgsIDM0LCAyMjcsIDEzNSwgOCwgMzQsIDIxNSwgMTE5LCA4LCAzNCwgMjI2LCAxNzksIAotICAgIDgsIDM0LCAyMzUsIDgwLCA4LCAzNCwgMjEwLCAxOSwgOCwgMzQsIDIyNCwgMTAzLCA4LCAzNCwgMjQxLCAxMTUsIDgsIDM0LCAKLSAgICAyMTAsIDI1MCwgOCwgMzQsIDIxMiwgMTEyLCA4LCAzNCwgMjE5LCAyMDIsIDgsIDM0LCAyMTMsIDI0NCwgOCwgMzQsIDIxMCwgCi0gICAgMTE2LCA4LCAzNCwgMjM1LCA3NCwgOCwgMzQsIDIyNywgMTAwLCA4LCAzNCwgMjM1LCA3OCwgOCwgMzQsIDI0MiwgMTYxLCA4LCAKLSAgICAzNCwgMjM1LCA5OCwgOCwgMzQsIDIxMSwgMjI3LCA4LCAzNCwgMjQ2LCA4NiwgOCwgMzQsIDIxOSwgMjE1LCA4LCAzNCwgCi0gICAgMjMyLCAyNDIsIDgsIDM0LCAyNDksIDgxLCA4LCAzNCwgMjQ5LCAxMTMsIDgsIDM0LCAyNTAsIDQ1LCA4LCAzNCwgMjQwLCAKLSAgICAxODQsIDgsIDM0LCAyMjAsIDc0LCA4LCAzNCwgMjEwLCA0LCA4LCAzNCwgMjIwLCAwLCA4LCAzNCwgMjUwLCAxMzksIDgsIAotICAgIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTc4LCA4LCAzNCwgMjM0LCAxODgsIDIzMiwgMjAyLCAxLCAyNTIsIDE5OSwgCi0gICAgMjMyLCAyMDIsIDEsIDE5MSwgMjMyLCAyMDIsIDEsIDIyNSwgMTUwLCAyMzIsIDIwMiwgMSwgMjQ4LCAyMjksIDIzMiwgMjAyLCAKLSAgICAxLCAyMTcsIDEwNiwgMjMyLCAyMDIsIDEsIDIxNiwgMjA5LCAyMzIsIDIwMiwgMSwgMjQzLCAxNDIsIDIzMiwgMjAyLCAxLCAKLSAgICAxNzYsIDIzMiwgMjAyLCAxLCAyMzQsIDEzOCwgMjMyLCAyMDIsIDEsIDIzNSwgMTQ3LCAyMzIsIDIwMiwgMSwgMjUxLCA0MSwgCi0gICAgMjMyLCAyMDIsIDEsIDI1MCwgMTY1LCAyMzIsIDIwMiwgMSwgMjQ2LCA0NiwgMjMyLCAyMDIsIDEsIDIxNSwgMTg0LCAyMzIsIAotICAgIDIwMiwgMSwgMjE1LCAxNzYsIDIzMiwgMjAyLCAxLCAxODYsIDIzMiwgMjAyLCAxLCAxOTgsIDIzMiwgMjAyLCAxLCAyMzMsIAotICAgIDE0MSwgMjMyLCAyMDIsIDEsIDIwNiwgMjMyLCAyMDIsIDEsIDIxMCwgODIsIDIzMiwgMjAyLCAxLCAyMTAsIDExNiwgMjMyLCAKLSAgICAyMDIsIDEsIDIyOSwgODIsIDIzMiwgMjAyLCAxLCAxNjIsIDIzMiwgMjAyLCAxLCAyMTEsIDE2NSwgMjMyLCAyMDIsIDEsIAotICAgIDI0MSwgMTk2LCAyMzIsIDIwMiwgMSwgMjQ0LCAyMDQsIDIzMiwgMjAyLCAxLCAyMTIsIDY1LCAyMzIsIDIwMiwgMSwgMjIwLCAKLSAgICAxMDQsIDIzMiwgMjAyLCAxLCAxOTIsIDIzMiwgMjAyLCAxLCAyNDMsIDAsIDIzMiwgMjAyLCAxLCA2MSwgMjMyLCAyMDIsIDEsIAotICAgIDI1NCwgMjUyLCAyMzIsIDIwMiwgMSwgNzYsIDIzMiwgMjAyLCAxLCAyNDUsIDYzLCAyMzIsIDIwMiwgMSwgNzQsIDIzMiwgCi0gICAgMjAyLCAxLCA3OCwgMjMyLCAyMDIsIDEsIDY5LCAyMzIsIDIwMiwgMSwgMjE0LCAyMTQsIDIzMiwgMjAyLCAxLCAyMTQsIAotICAgIDIwOCwgMjMyLCAyMDIsIDEsIDIyNiwgMjM4LCAyMzIsIDIwMiwgMSwgMTM4LCAyMzAsIDM3LCAyMTYsIDExOCwgMjMyLCAKLSAgICAyMDIsIDEsIDEzOCwgMjI5LCAyMzQsIDIyNSwgMTksIDIzMiwgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDI0OSwgODAsIDIzMiwgCi0gICAgMjAyLCAxLCAxMzgsIDIzMCwgMzcsIDI1MSwgMjEzLCAyMzIsIDIwMiwgMSwgMTM4LCAyMzAsIDM3LCAxOTgsIDIzMiwgMjAyLCAKLSAgICAxLCAxMzgsIDIzMCwgMzcsIDIzNSwgMTIxLCAyMzIsIDIwMiwgMjI0LCAxNDQsIDI0OSwgMjI3LCAyMzIsIDIwMiwgMjI0LCAKLSAgICAxNDQsIDI0MywgMjM2LCAyMTgsIDEzMSwgNDEsIDMsIDI0NSwgMjE3LCA0MSwgMywgMjQ1LCAyMTMsIDQxLCAzLCAyNDEsIAotICAgIDIyNywgNDEsIDMsIDIxMiwgMTcsIDQxLCAzLCAyMTIsIDE2LCA0MSwgMywgMjI1LCAyMTQsIDQxLCAzLCAyNTIsIDIxLCA0MSwgCi0gICAgMywgMjUyLCA3NCwgNDEsIDMsIDIzMSwgMTIxLCA0MSwgMywgMjMzLCAyNTMsIDQxLCAzLCAyMzEsIDExLCA0MSwgMywgMjQzLCAKLSAgICA4MiwgNDEsIDMsIDI0NCwgMTU1LCA0MSwgMywgMjEzLCAyNTAsIDQxLCAzLCAyMTcsIDEyLCA0MSwgMywgMjE2LCAxOTUsIAotICAgIDQxLCAzLCAyNDgsIDI0LCA0MSwgMywgMjQ4LCAyMSwgNDEsIDMsIDIzMywgNTYsIDQxLCAzLCAyMjMsIDExMSwgNDEsIDMsIAotICAgIDI0OCwgODUsIDQxLCAzLCAyMjksIDE0NCwgNDEsIDMsIDIyMSwgMTcyLCA0MSwgMywgMjIwLCA2MywgNDEsIDMsIDIxMCwgCi0gICAgOTIsIDQxLCAzLCAyMTAsIDczLCA0MSwgMywgMjUwLCAxOTAsIDQxLCAzLCAyMzUsIDEzMCwgNDEsIDMsIDIyOCwgMTgxLCAKLSAgICA0MSwgMywgMjExLCA0NCwgNDEsIDMsIDIzNCwgMTg3LCA0MSwgMywgMjI5LCA1NiwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKLSAgICAyMzEsIDg1LCA0MSwgMywgMjI5LCAxMDgsIDQxLCAzLCAyMjcsIDE1OSwgNDEsIDMsIDc0LCA0MSwgMywgMjM2LCA2LCA0MSwgCi0gICAgMywgMjQxLCAxODcsIDQxLCAzLCAyNDEsIDE2NywgNDEsIDMsIDIxMSwgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAKLSAgICAyMjUsIDExMSwgNDEsIDMsIDI1MiwgMTksIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjMxLCAxMTQsIDQxLCAzLCAyMzMsIAotICAgIDI1MCwgNDEsIDMsIDIzMSwgOCwgNDEsIDMsIDI0MywgNzgsIDQxLCAzLCAyNDQsIDEyOSwgNDEsIDMsIDIxMywgMTc2LCA0MSwgCi0gICAgMywgMjE2LCAxMTgsIDQxLCAzLCAyMTYsIDE3NiwgNDEsIDMsIDI0OCwgMTYsIDQxLCAzLCAyNDgsIDIwLCA0MSwgMywgMjMyLCAKLSAgICAyNDcsIDQxLCAzLCAyMjMsIDM4LCA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIyOSwgMTM4LCA0MSwgMywgMjE5LCAxOTMsIAotICAgIDQxLCAzLCAyMjAsIDM0LCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgNjksIDQxLCAzLCAyNTAsIDU5LCA0MSwgMywgCi0gICAgMjM1LCAxMTQsIDQxLCAzLCAyMjgsIDE3NCwgNDEsIDMsIDIxMSwgOCwgNDEsIDMsIDIzNCwgOTgsIDQxLCAzLCAyMjksIDQ4LCAKLSAgICA0MSwgMywgMjQyLCAyMjEsIDQxLCAzLCAyMzAsIDIzNSwgNDEsIDMsIDIyOCwgMjM4LCA0MSwgMywgMjI3LCAxNTIsIDQxLCAKLSAgICAzLCA2MSwgNDEsIDMsIDI1NCwgMTMxLCA0MSwgMywgMjI5LCA3NywgNDEsIDMsIDE2MiwgNDEsIDMsIDI0MiwgMjUsIDQxLCAKLSAgICAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDI1MiwgMjYsIDQxLCAzLCAyNTIsIDE5OSwgCi0gICAgNDEsIDMsIDIzMSwgMTI5LCA0MSwgMywgMjM0LCAxLCA0MSwgMywgMjM0LCAwLCA0MSwgMywgMjMxLCAxNSwgNDEsIDMsIAotICAgIDI0MywgODYsIDQxLCAzLCAyNDQsIDIwNCwgNDEsIDMsIDIxNCwgMjcsIDQxLCAzLCAyMTcsIDEwNiwgNDEsIDMsIDIxNiwgCi0gICAgMjA5LCA0MSwgMywgMjQ4LCAzMywgNDEsIDMsIDI0OCwgMjMsIDQxLCAzLCAyMzMsIDE0MSwgNDEsIDMsIDIwNSwgNDEsIDMsIAotICAgIDI0OCwgMjI5LCA0MSwgMywgMjI5LCAxNTMsIDQxLCAzLCAyMDYsIDQxLCAzLCAyMjAsIDEwNCwgNDEsIDMsIDIxMCwgMTE2LCAKLSAgICA0MSwgMywgMjEwLCA4MiwgNDEsIDMsIDI1MSwgNDEsIDQxLCAzLCAyMzUsIDE0NywgNDEsIDMsIDIyOCwgMTkwLCA0MSwgMywgCi0gICAgMTkyLCA0MSwgMywgMTc2LCA0MSwgMywgMjM0LCAyNDAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgMjQzLCAxNDIsIDQxLCAzLCAKLSAgICAxODYsIDQxLCAzLCAxOTgsIDQxLCAzLCAyMjcsIDE2OSwgNDEsIDMsIDIyNiwgMTg3LCA0MSwgMywgMjI2LCAxODMsIDQxLCAKLSAgICAzLCAyNDEsIDYwLCA0MSwgMywgMjExLCAyMTUsIDQxLCAzLCAyMTEsIDIxMSwgNDEsIDMsIDIyNCwgMjUyLCA0MSwgMywgCi0gICAgMjUyLCAxNywgNDEsIDMsIDI1MSwgMjAxLCA0MSwgMywgMjMxLCAxMDksIDQxLCAzLCAyMzMsIDI0OCwgNDEsIDMsIDIzMSwgCi0gICAgNCwgNDEsIDMsIDI0MywgNzQsIDQxLCAzLCAyNDQsIDQyLCA0MSwgMywgMjEzLCAxMjcsIDQxLCAzLCAyMTYsIDE4LCA0MSwgCi0gICAgMywgMjE2LCAxNTQsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjQ4LCAxOCwgNDEsIDMsIDIzMiwgMTMzLCA0MSwgMywgMjIyLCAKLSAgICAxOTksIDQxLCAzLCAyNDcsIDEzMywgNDEsIDMsIDIyOSwgMTI1LCA0MSwgMywgMjE5LCA0MiwgNDEsIDMsIDIyMCwgMywgNDEsIAotICAgIDMsIDIxMCwgMjEsIDQxLCAzLCAyMTAsIDY2LCA0MSwgMywgMjQ5LCAxODIsIDQxLCAzLCAyMzUsIDY1LCA0MSwgMywgMjI4LCAKLSAgICAxNjQsIDQxLCAzLCAyMTAsIDIyOSwgNDEsIDMsIDIzNCwgMTYsIDQxLCAzLCAyMjksIDQ2LCA0MSwgMywgMjQyLCAxNzEsIAotICAgIDQxLCAzLCAyMzAsIDEzNywgNDEsIDMsIDIyOCwgNjksIDQxLCAzLCAyMjcsIDEzNiwgNDEsIDMsIDY5LCA0MSwgMywgMjE0LCAKLSAgICAxOTAsIDQxLCAzLCAyNDAsIDIyOSwgNDEsIDMsIDI0MCwgMjE5LCA0MSwgMywgMjExLCAxOTUsIDQxLCAzLCAyMTEsIDE4OSwgCi0gICAgNDEsIDMsIDIyNCwgMTUzLCA0MSwgMywgMjUyLCAxNiwgNDEsIDMsIDI1MSwgMTMzLCA0MSwgMywgMjMxLCAxMDgsIDQxLCAzLCAKLSAgICAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgMywgNDEsIDMsIDI0MywgNzMsIDQxLCAzLCAyNDMsIDI0MSwgNDEsIDMsIDIxMiwgCi0gICAgMTE2LCA0MSwgMywgMjE1LCAxMTksIDQxLCAzLCAyMTYsIDEzNywgNDEsIDMsIDI0OCwgMTIsIDQxLCAzLCAyNDgsIDE3LCAKLSAgICA0MSwgMywgMjMyLCAxMDMsIDQxLCAzLCAyMjIsIDE0MiwgNDEsIDMsIDI0NiwgODYsIDQxLCAzLCAyMjksIDEyMCwgNDEsIDMsIAotICAgIDIxOCwgODQsIDQxLCAzLCAyMTksIDIyNywgNDEsIDMsIDIxMCwgMTMsIDQxLCAzLCAyMTAsIDYyLCA0MSwgMywgMjQ5LCAKLSAgICAxMjAsIDQxLCAzLCAyMzUsIDU3LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDIxMiwgNDEsIDMsIDIzMywgMjIzLCAKLSAgICA0MSwgMywgMjI5LCA0NSwgNDEsIDMsIDI0MiwgMTIwLCA0MSwgMywgMjMwLCAxMDcsIDQxLCAzLCAyMjcsIDI0MiwgNDEsIDMsIAotICAgIDIyNywgMTMyLCA0MSwgMywgNzgsIDQxLCAzLCAyMjYsIDIwMCwgNDEsIDMsIDIyOSwgNSwgNDEsIDMsIDI0MSwgNzUsIDQxLCAKLSAgICAzLCAyNDEsIDYzLCA0MSwgMywgMjExLCAyMjcsIDQxLCAzLCAyMTEsIDIxNiwgNDEsIDMsIDIyNSwgMTksIDQxLCAzLCAyNTIsIAotICAgIDE4LCA0MSwgMywgMjUxLCAyMTMsIDQxLCAzLCAyMzEsIDExMCwgNDEsIDMsIDIzMywgMjQ5LCA0MSwgMywgMjMxLCA2LCA0MSwgCi0gICAgMywgMjQzLCA3NiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDUxLCA0MSwgMywgMjEzLCAxMzgsIDQxLCAzLCAxMTIsIAotICAgIDQxLCAzLCAyMTYsIDE1NywgNDEsIDMsIDI0OCwgMTUsIDQxLCAzLCAyNDgsIDE5LCA0MSwgMywgMjMyLCAxNjIsIDQxLCAzLCAKLSAgICAyMjIsIDIxMywgNDEsIDMsIDI0NywgMTUzLCA0MSwgMywgMjI5LCAxMjksIDQxLCAzLCAyMTksIDYwLCA0MSwgMywgMjIwLCAKLSAgICA5LCA0MSwgMywgMjEwLCAyMywgNDEsIDMsIDIxMCwgNjcsIDQxLCAzLCAyNDksIDI0NiwgNDEsIDMsIDIzNSwgNzQsIDQxLCAKLSAgICAzLCAyMjgsIDE2NSwgNDEsIDMsIDIxMCwgMjQ0LCA0MSwgMywgMjM0LCAzNCwgNDEsIDMsIDIyOSwgNDcsIDQxLCAzLCAyNDIsIAotICAgIDE4MSwgNDEsIDMsIDIzMCwgMTY2LCA0MSwgMywgMjI4LCA3OSwgNDEsIDMsIDIyNywgMTM4LCA0MSwgMywgNzYsIDQxLCAzLCAKLSAgICAyNDUsIDE1OCwgNDEsIDMsIDIyOSwgNjYsIDQxLCAzLCAyNDEsIDI0NSwgNDEsIDMsIDI0MSwgMjE2LCA0MSwgMywgMjEyLCAKLSAgICAyMiwgNDEsIDMsIDIxMiwgMTIsIDQxLCAzLCAyMjUsIDIyNCwgNDEsIDMsIDI1MiwgMjIsIDQxLCAzLCAyNTIsIDgzLCA0MSwgCi0gICAgMywgMjMxLCAxMjIsIDQxLCAzLCAyMzMsIDI1NCwgNDEsIDMsIDIzMywgMjUyLCA0MSwgMywgMjMxLCAxMiwgNDEsIDMsIAotICAgIDI0MywgODMsIDQxLCAzLCAyNDMsIDgxLCA0MSwgMywgMjQ0LCAxNjIsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgCi0gICAgMjMsIDQxLCAzLCAyMTYsIDE5NiwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDIyLCA0MSwgMywgMjMzLCA2NCwgNDEsIAotICAgIDMsIDIyMywgMTMxLCA0MSwgMywgMjQ4LCA5OCwgNDEsIDMsIDIyOSwgMTQ1LCA0MSwgMywgMjIxLCAxODMsIDQxLCAzLCAKLSAgICAyMjAsIDY1LCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgNzQsIDQxLCAzLCAyNTAsIDE5OCwgNDEsIDMsIDIzNSwgCi0gICAgMTMyLCA0MSwgMywgMjI4LCAxODMsIDQxLCAzLCAyMTEsIDQ3LCA0MSwgMywgMjM0LCAxODgsIDQxLCAzLCAyMjksIDU3LCAKLSAgICA0MSwgMywgMjI5LCA1MywgNDEsIDMsIDI0MywgNjksIDQxLCAzLCAyNDMsIDU4LCA0MSwgMywgMjMxLCA5NiwgNDEsIDMsIAotICAgIDIyOSwgMTEyLCA0MSwgMywgMjI3LCAxNjAsIDQxLCAzLCAyMjksIDg0LCA0MSwgMywgMjMzLCAyOCwgNDEsIDI0OSwgMjI3LCAKLSAgICA0MSwgMjQzLCAyMzYsIDIxOCwgMTMxLCA0MSwgMjI0LCAxNiwgNzksIDQxLCAzLCAyMjksIDEyOCwgMjQ0LCAyMDQsIDQxLCAKLSAgICAzLCAyMjksIDEyOCwgMTc2LCA0MSwgMywgMjI5LCAxMjgsIDIxOSwgNDIsIDQxLCAxNiwgMjQ0LCAxNTIsIDQxLCAxNiwgCi0gICAgMjM0LCAxODYsIDQxLCAxNiwgMjE2LCA4MiwgNDEsIDE2LCAyMjgsIDIxMywgNDEsIDE2LCAyNTIsIDE1NSwgNDEsIDE2LCAKLSAgICAyNDQsIDIwMywgNDEsIDE2LCAyMTcsIDEwMiwgNDEsIDE2LCAyNDgsIDE4NCwgNDEsIDE2LCAyNDcsIDEzMiwgNDEsIDE2LCAKLSAgICAyMzMsIDIxMiwgNDEsIDE2LCAyMTYsIDIyLCA0MSwgMTYsIDI0NywgMTUyLCA0MSwgMTYsIDIzNSwgNjYsIDQxLCAyMSwgCi0gICAgMjEwLCA4NiwgNDEsIDIxLCAxMTEsIDQxLCAyMSwgMTA1LCA0MSwgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTkwLCAKLSAgICA0MSwgMjEsIDE5NSwgNDEsIDIxLCAxOTksIDQxLCAyMSwgMTk2LCA0MSwgMjEsIDIwMSwgNDEsIDMsIDIyOSwgMTI4LCAxODYsIAotICAgIDQxLCAzLCAyMjksIDEyOCwgMjQ3LCAxNTMsIDMzLCA2LCAxLCAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIAotICAgIDEsIDI0NiwgNDIsIDMzLCA0LCAxLCAyNDYsIDQyLCAzMywgNiwgMSwgMjIzLCA1MiwgMjQ2LCA0NCwgMzMsIDQsIDEsIDIyMywgCi0gICAgNTIsIDI0NiwgNDQsIDMzLCA2LCAxLCAyMzUsIDE5MiwgMzMsIDQsIDEsIDIzNSwgMTkyLCAzMywgNiwgMSwgMjQ3LCAxNjksIAotICAgIDMzLCA0LCAxLCAyNDcsIDE2OSwgMzMsIDYsIDEsIDIzMCwgMTQ1LCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQ1LCAKLSAgICAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTQ0LCAyMjYsIDIwNSwgMzMsIDQsIDEsIDI1MSwgMTQ0LCAyMjYsIDIwNSwgMzMsIAotICAgIDYsIDEsIDIyOSwgOTIsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMjksIDkyLCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgCi0gICAgMjUyLCAxOTMsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIDI4LCAyLCAyNTIsIDE5MywgMjExLCAzMSwgMzMsIDYsIDEsIAotICAgIDIzNSwgMTkwLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAxOTAsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDUyLCAyMTAsIAotICAgIDIxMiwgMzMsIDQsIDEsIDIyMywgNTIsIDIxMCwgMjEyLCAzMywgNiwgMSwgMjM1LCAxOTAsIDYxLCAzMywgNCwgMSwgMjM1LCAKLSAgICAxOTAsIDYxLCAzMywgNiwgMSwgMjUwLCA4LCAyMzIsIDE5OCwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDgsIDIzMiwgCi0gICAgMTk4LCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjIyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjIyLCAyMTAsIAotICAgIDE4MywgMzMsIDYsIDEsIDIzNSwgMTkwLCAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTkwLCAKLSAgICAyNTAsIDgsIDIzMiwgMTk4LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCAKLSAgICA2LCAxLCAyMjMsIDUyLCAyMTUsIDE3OSwgMzMsIDQsIDEsIDIyMywgNTIsIDIxNSwgMTc5LCAzMywgNiwgMSwgMjE5LCA1NCwgCi0gICAgMjQ4LCA5OCwgMzMsIDQsIDEsIDIxOSwgNTQsIDI0OCwgOTgsIDMzLCA2LCAxLCAyMTksIDU0LCAyNDUsIDE4MiwgMzMsIDQsIAotICAgIDEsIDIxOSwgNTQsIDI0NSwgMTgyLCAzMywgNiwgMSwgMjE5LCA1NCwgMjQ1LCAxNjcsIDMzLCA0LCAxLCAyMTksIDU0LCAKLSAgICAyNDUsIDE2NywgMzMsIDYsIDEsIDIzMCwgMTQ5LCA3OCwgMzMsIDQsIDEsIDIzMCwgMTQ5LCA3OCwgMzMsIDYsIDEsIDI1MSwgCi0gICAgMjQ4LCA3OCwgMzMsIDQsIDEsIDI1MSwgMjQ4LCA3OCwgMzMsIDYsIDEsIDUyLCAyMzAsIDE0OSwgNzgsIDMzLCA0LCAxLCAKLSAgICA1MiwgMjMwLCAxNDksIDc4LCAzMywgMSwgMjMwLCA5MSwgNzgsIDM4LCAzMywgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDksIAotICAgIDIzMCwgMTk2LCA1MCwgMzgsIDMzLCAyNDAsIDIxOCwgMjMwLCAxOTYsIDUwLCAzOCwgMzMsIDIxNiwgMTQ5LCAyMzAsIDE5NiwgCi0gICAgNTAsIDIxOSwgOTUsIDI1MywgMjI0LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAyMzYsIDY3LCAzOCwgMzMsIDEsIDc0LCAzOCwgCi0gICAgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA2OSwgMzgsIDMzLCAxLCAyNDIsIDEwLCA1MCwgMzgsIDMzLCAxLCAyMTEsIDI3LCAKLSAgICAzOCwgMzMsIDEsIDIxOSwgNTQsIDUwLCAzOCwgMzMsIDEsIDIyNiwgMjA1LCAzOCwgMzMsIDIzNCwgMTk4LCAzOCwgMzMsIAotICAgIDIyNSwgMjMxLCAzMywgMjM0LCAxOTgsIDMzLCAyMjUsIDIzMSwgMzMsIDYsIDEsIDI0NiwgNTQsIDMzLCA0LCAxLCAyNDYsIAotICAgIDU0LCAzMywgNiwgMSwgMjQ2LCAzNSwgMzMsIDQsIDEsIDI0NiwgMzUsIDMzLCA2LCAxLCAyMTAsIDUyLCAzMywgNCwgMSwgCi0gICAgMjEwLCA1MiwgMzMsIDYsIDEsIDI1MCwgMjE0LCAzMywgNCwgMSwgMjUwLCAyMTQsIDMzLCA2LCAxLCAyNDYsIDMzLCAzMywgCi0gICAgNCwgMSwgMjQ2LCAzMywgMzMsIDYsIDEsIDIxNywgMjQsIDIsIDIzMCwgMjI5LCAxMDMsIDMzLCA0LCAxLCAyMTcsIDI0LCAyLCAKLSAgICAyMzAsIDIyOSwgMTAzLCAzMywgNiwgMSwgMjE1LCA3OCwgMzMsIDQsIDEsIDIxNSwgNzgsIDMzLCA2LCAxLCAyMTUsIDE2MSwgCi0gICAgMzMsIDQsIDEsIDIxNSwgMTYxLCAzMywgNiwgMSwgMjE1LCAxNjUsIDMzLCA0LCAxLCAyMTUsIDE2NSwgMzMsIDYsIDEsIAotICAgIDIxNywgMjksIDMzLCA0LCAxLCAyMTcsIDI5LCAzMywgNiwgMSwgMjQwLCAyMDUsIDMzLCA0LCAxLCAyNDAsIDIwNSwgMzMsIAotICAgIDYsIDEsIDIxOSwgMjA4LCAzMywgNCwgMSwgMjE5LCAyMDgsIDM4LCAzMywgMSwgMjM1LCAxOTAsIDc2LCAyMCwgMSwgNjEsIAotICAgIDIwLCAxLCAxNzYsIDIwLCAxLCA2OSwgMjAsIDEsIDIzMywgMjIzLCAyMCwgMSwgMjQ1LCAyMTcsIDIwLCAxLCAyMjMsIDExMSwgCi0gICAgMjAsIDEsIDIxNywgODcsIDIwLCAxLCA3OCwgMjAsIDEsIDIyNywgMTUyLCAyMCwgMSwgNzQsIDIwLCAxLCAyMzMsIDE0MSwgCi0gICAgMjAsIDEsIDE5MSwgMjAsIDEsIDIyMiwgMjQyLCAyMCwgMSwgMjIzLCAzMiwgMjAsIDEsIDIzMywgNTUsIDIwLCAxLCAyMzEsIAotICAgIDg0LCAyMCwgMSwgMjE3LCAxMDIsIDIwLCAxLCAyMjksIDE1MSwgMjAsIDEsIDIyOCwgMTg4LCAyMCwgMSwgMTk0LCAyMCwgMSwgCi0gICAgMjE4LCA1LCAyMCwgMSwgMjMwLCAxMDcsIDIwLCAxLCAyMjAsIDI5LCAyMCwgMSwgMjE5LCAxOTMsIDIwLCAxLCAyMjAsIDM5LCAKLSAgICAyMCwgMSwgMjIwLCAxMjUsIDIwLCAxLCAyMzMsIDE2MSwgMjAsIDEsIDIzNCwgMTYyLCAyMCwgMSwgMjI3LCAyMTMsIDIwLCAKLSAgICAxLCAyMjcsIDI0MiwgMjAsIDEsIDIyOCwgMTU5LCAyMCwgMSwgMjEwLCAyMjYsIDIwLCAxLCAyMTksIDIyNywgMjAsIDEsIAotICAgIDIxMCwgMTg3LCAyMCwgMSwgMTkyLCAyMCwgMSwgMjI4LCAxNCwgMjAsIDEsIDIzNCwgMTQ4LCAyMCwgMSwgMjI1LCAxNTQsIAotICAgIDIwLCAxLCAyMjgsIDE4MSwgMjAsIDEsIDIyNywgMjUxLCAyMCwgMSwgMjI0LCAxNDcsIDIwLCAxLCAyMTEsIDE5MiwgMjAsIAotICAgIDEsIDIyNSwgMjE0LCAyMCwgMSwgMjQ0LCAxNTUsIDIwLCAxLCAyMjIsIDE0MiwgMjAsIDEsIDIzMiwgMTAzLCAyMCwgMSwgCi0gICAgMjMwLCAyMzUsIDIwLCAxLCAyMjgsIDIzOCwgMjAsIDEsIDIyMywgNTQsIDIwLCAxLCAyMjMsIDE3NCwgMjAsIDEsIDIzNCwgCi0gICAgMTcxLCAyMCwgMSwgMjI5LCAxMiwgMjAsIDEsIDIyOSwgNjEsIDIwLCAxLCAyMjksIDgyLCAyMCwgMSwgMjIwLCA5LCAyMCwgCi0gICAgMSwgMjI0LCAxNTAsIDIwLCAxLCAyNDMsIDI0MSwgMjAsIDEsIDI0NCwgNDUsIDIwLCAxLCAyMTIsIDY1LCAyMCwgMSwgMTk4LCAKLSAgICAyMCwgMSwgMjMyLCAyNDcsIDIwLCAxLCAyMjUsIDExMSwgMjAsIDEsIDIzMiwgMTI1LCAyMCwgMSwgMjM0LCAzNCwgMjAsIDEsIAotICAgIDIzMSwgMTE5LCAyMCwgMSwgMjIzLCA4NiwgMjAsIDEsIDIzMSwgNjMsIDIwLCAxLCAxODYsIDIwLCAxLCAyMTYsIDExOCwgCi0gICAgMjAsIDEsIDIzNCwgOTgsIDIwLCAxLCAyMzAsIDE2NiwgMjAsIDEsIDIzMSwgMTI3LCAyMCwgMSwgMjE2LCAyMzEsIDIwLCAxLCAKLSAgICAyMzQsIDEsIDIwLCAxLCAyMTYsIDI0OCwgMjAsIDEsIDIyNywgMjQzLCAyMCwgMSwgMjIxLCAyNTMsIDIwLCAxLCAyNDQsIAotICAgIDIwMCwgMjAsIDEsIDIzNCwgMywgMjAsIDEsIDIzNCwgMzAsIDIwLCAzOCwgMTY0LCAyMzQsIDExLCAyMCwgMzgsIDE2NCwgCi0gICAgMjE1LCAxMTEsIDIwLCAyMjgsIDE4NywgMjAsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjAsIDI0OSwgMjM0LCAyMCwgMjQ5LCAKLSAgICAyMjcsIDIwLCAyMjAsIDE1MiwgMjAsIDIyNCwgMTYsIDc5LCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjEwLCAyNTQsIDIyNSwgCi0gICAgNjQsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjUsIDY0LCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjEwLCAKLSAgICAyNTQsIDIyMCwgODYsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjAsIDg2LCA1OCwgMSwgMjUwLCAxMDQsIAotICAgIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzMsIDU4LCAxLCAyNTAsIDEwNCwgMTM4LCAyMTEsIDcwLCAyMjQsIDMzLCA1OCwgMSwgCi0gICAgMjUwLCAxMDQsIDEzOCwgMjEwLCAyNTQsIDIyMiwgMTQyLCA1OCwgMSwgMjUwLCAxMDQsIDEzOCwgMjExLCA3MCwgMjIyLCAKLSAgICAxNDIsIDU4LCAxLCAyNDUsIDI4LCAyNDYsIDEyNiwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgMTI2LCAxMzgsIDEzMCwgCi0gICAgNTgsIDEsIDIzMCwgMjMwLCAyNDYsIDEyNiwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIAotICAgIDEsIDI0NSwgMjcsIDI0NiwgMTI2LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjgsIDI0NiwgMTI2LCAyMzMsIDQ1LCAxMzgsIAotICAgIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMzAsIDI0NiwgMTI2LCAKLSAgICAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAKLSAgICAyNywgMjQ2LCAxMjYsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyOCwgMjMzLCA0NSwgMTM4LCAxMzAsIDU4LCAKLSAgICAxLCAxMjUsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMzAsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgCi0gICAgMTIxLCAyMzMsIDQ1LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjcsIDIzMywgNDUsIDEzOCwgMTMwLCA1OCwgMSwgNTksIDY3LCAKLSAgICAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NywgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIDIzMiwgMTE0LCA0NCwgMjQ5LCAKLSAgICAxNjksIDI1NCwgMTE3LCA1OCwgMSwgMjIzLCAxNjAsIDEyMCwgNzUsIDU4LCAxLCAyMjMsIDE2MCwgMTI0LCA3NSwgNTgsIDEsIAotICAgIDIyMywgMTYwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIDIyMywgMTYwLCAyMzUsIDIwMCwgMjQ1LCAzOSwgNzksIDU4LCAxLCAKLSAgICAxMjEsIDIzNSwgMjAwLCAyNDUsIDM5LCA3OSwgNTgsIDEsIDIxOCwgMTEzLCAyMiwgMTI1LCAyMTYsIDMxLCA1OCwgMSwgCi0gICAgMjE4LCAxMTMsIDIyLCAxMjEsIDIxNiwgMzEsIDcsIDYsIDEsIDI0NSwgMjA3LCAyNTQsIDE3OSwgNywgNCwgMSwgMjQ1LCAKLSAgICAyMDcsIDI1NCwgMTc5LCA3LCA2LCAxLCAyNDUsIDIwNywgMjU0LCAyMDUsIDcsIDQsIDEsIDI0NSwgMjA3LCAyNTQsIDIwNSwgCi0gICAgNywgNiwgMSwgMjQxLCAyMTQsIDcsIDQsIDEsIDI0MSwgMjE0LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCA0LCAxLCAyMTUsIDQwLCAKLSAgICA3LCA2LCAxLCAyMTUsIDIzMCwgNywgNCwgMSwgMjE1LCAyMzAsIDcsIDYsIDEsIDI0OSwgMTE4LCA3LCA0LCAxLCAyNDksIAotICAgIDExOCwgNywgNiwgMSwgMjQ5LCAxMTksIDIsIDI0OSwgMjI3LCA3LCA0LCAxLCAyNDksIDExOSwgMiwgMjQ5LCAyMjcsIDcsIAotICAgIDEsIDQsIDYsIDI0NSwgMTQsIDcsIDEsIDQsIDYsIDIyMiwgOTMsIDcsIDYsIDEsIDI1NSwgODIsIDcsIDQsIDEsIDI1NSwgCi0gICAgODIsIDcsIDYsIDEsIDI1NCwgODEsIDcsIDQsIDEsIDI1NCwgODEsIDcsIDYsIDEsIDI1MywgMjAwLCA3LCA0LCAxLCAyNTMsIAotICAgIDIwMCwgNywgNiwgMSwgMjUzLCAxODQsIDcsIDQsIDEsIDI1MywgMTg0LCA3LCA2LCAxLCAyNTMsIDE4NSwgMiwgMjAzLCAKLSAgICAxMzAsIDcsIDQsIDEsIDI1MywgMTg1LCAyLCAyMDMsIDEzMCwgNywgNiwgMSwgMjUzLCAxNzUsIDcsIDQsIDEsIDI1MywgCi0gICAgMTc1LCA3LCA2LCAxLCAyMjMsIDUyLCAyNTEsIDc1LCAyLCAyNDcsIDEyOCwgNywgNCwgMSwgMjIzLCA1MiwgMjUxLCA3NSwgCi0gICAgMiwgMjQ3LCAxMjgsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCA5MSwgNywgNiwgMSwgCi0gICAgMjM1LCAzMCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgMjQ4LCA3LCA5MSwgNywgNiwgMSwgMjM1LCAKLSAgICAzMCwgMiwgMjE4LCAxMDUsIDIyLCAyNDgsIDcsIDkxLCA3LCA0LCAxLCAyMzUsIDMwLCAyLCAyMTgsIDEwNSwgMjIsIDI0OCwgCi0gICAgNywgOTEsIDcsIDYsIDEsIDI1MSwgMTQzLCAxNTYsIDcsIDQsIDEsIDI1MSwgMTQzLCAxNTYsIDcsIDYsIDEsIDIzMywgMTU1LCAKLSAgICAyLCAxMjUsIDkxLCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMTI1LCA5MSwgNywgNiwgMSwgMTQ0LCAyLCAyMDAsIDIxOCwgCi0gICAgMTA1LCAyMjYsIDEyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMDAsIDIxOCwgMTA1LCAyMjYsIDEyNCwgNywgNiwgMSwgMTQ0LCAyLCAKLSAgICAyMzIsIDEyOSwgNywgNCwgMSwgMTQ0LCAyLCAyMzIsIDEyOSwgNywgNiwgMSwgMjI2LCAxODcsIDcsIDQsIDEsIDIyNiwgCi0gICAgMTg3LCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMjYsIAotICAgIDExMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAyMjYsIDExMCwgMiwgMjQ0LCA2MSwgNywgNCwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDI0NCwgNjEsIDcsIDYsIDEsIDIyNiwgMTEwLCAyLCAyMTgsIDIzMSwgMjE3LCA3OCwgNywgNCwgCi0gICAgMSwgMjI2LCAxMTAsIDIsIDIxOCwgMjMxLCAyMTcsIDc4LCA3LCA2LCAxLCAyMjQsIDEwMCwgMiwgMjE4LCAxMDUsIDIxNiwgCi0gICAgMTQwLCAyNDgsIDQ3LCA3LCA0LCAxLCAyMjQsIDEwMCwgMiwgMjE4LCAxMDUsIDIxNiwgMTQwLCAyNDgsIDQ3LCA3LCA2LCAxLCAKLSAgICAyMjQsIDEwMCwgMiwgMjQ4LCA3LCA5MSwgNywgNCwgMSwgMjI0LCAxMDAsIDIsIDI0OCwgNywgOTEsIDcsIDYsIDEsIDIyMywgCi0gICAgMjI3LCAyMjIsIDE4OCwgNywgNCwgMSwgMjIzLCAyMjcsIDIyMiwgMTg4LCA3LCA2LCAxLCAyMjIsIDEzMiwgMjIyLCAxODgsIAotICAgIDcsIDQsIDEsIDIyMiwgMTMyLCAyMjIsIDE4OCwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDI0OCwgNywgOTEsIDcsIDQsIDEsIAotICAgIDIxNCwgMTA2LCAyLCAyNDgsIDcsIDkxLCA3LCA2LCAxLCAyMTIsIDEwNiwgNywgNCwgMSwgMjEyLCAxMDYsIDcsIDYsIDEsIAotICAgIDIxMywgMTQ1LCAyMTAsIDE1OSwgNywgNCwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA2LCAxLCAyMTYsIDE1MywgMiwgCi0gICAgOTEsIDcsIDQsIDEsIDIxNiwgMTUzLCAyLCA5MSwgNywgNiwgMSwgMjE2LCAxNTMsIDIsIDIxOCwgMTA1LCAyMTYsIDE0MCwgCi0gICAgMjQ4LCA0NywgNywgNCwgMSwgMjE2LCAxNTMsIDIsIDIxOCwgMTA1LCAyMTYsIDE0MCwgMjQ4LCA0NywgNywgNiwgMSwgMjEzLCAKLSAgICAyNDUsIDcsIDQsIDEsIDIxMywgMjQ1LCA3LCA2LCAxLCAyNDUsIDczLCA3LCA0LCAxLCAyNDUsIDczLCA3LCA2LCAxLCAyMzUsIAotICAgIDE3OCwgNywgNCwgMSwgMjM1LCAxNzgsIDcsIDYsIDEsIDI0OSwgMjE1LCA3LCA0LCAxLCAyNDksIDIxNSwgNTgsIDEsIDIxNCwgCi0gICAgMTMzLCA3LCA0LCAxLCAyNDYsIDc3LCA3LCA0LCAxLCAyMzIsIDg5LCA3LCA0LCAxLCAyMzAsIDg1LCA3LCA0LCAxLCAyMjcsIAotICAgIDIwNSwgNywgNCwgMSwgMjIyLCAxMzEsIDcsIDEsIDQsIDYsIDIyMiwgMTMxLCA3LCA0LCAxLCAyMTUsIDEwOSwgNywgNCwgMSwgCi0gICAgMjE0LCAxOTcsIDcsIDYsIDEsIDIzNSwgMjIwLCAyNDksIDY4LCA3LCA0LCAxLCAyMzUsIDIyMCwgMjQ5LCA2OCwgNywgNiwgCi0gICAgMSwgMjM1LCAyMjAsIDI0NSwgMTQsIDcsIDQsIDEsIDIzNSwgMjIwLCAyNDUsIDE0LCA3LCA2LCAxLCAyMzUsIDIyMCwgMjQzLCAKLSAgICAyMDksIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjIwLCAyNDMsIDIwOSwgNywgNCwgMSwgMjE1LCA5NCwgMjM1LCAyMjAsIAotICAgIDI0MywgMjA5LCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIDE1NiwgNywgNiwgMSwgMjM1LCAKLSAgICAyMjAsIDE1MywgNywgNCwgMSwgMjM1LCAyMjAsIDE1MywgNywgNiwgMSwgMjM1LCAyMjAsIDIyMiwgOTMsIDcsIDQsIDEsIAotICAgIDIzNSwgMjIwLCAyMjIsIDkzLCA3LCA2LCAxLCAyMzUsIDIyMCwgMjE3LCAxNTMsIDcsIDQsIDEsIDIzNSwgMjIwLCAyMTcsIAotICAgIDE1MywgNTgsIDEsIDEyMSwgMjUwLCAzOSwgMjU1LCAyMywgNTgsIDEsIDI0OSwgMjM0LCA1OCwgMSwgMjE5LCAyNTMsIDI0NSwgCi0gICAgMTA2LCA1MCwgNywgNiwgMSwgMjIyLCAxLCA3LCA0LCAxLCAyMjIsIDEsIDcsIDYsIDEsIDIxNSwgOTQsIDI0MiwgNjcsIDcsIAotICAgIDQsIDEsIDIzMywgMTU1LCAyLCAyMjMsIDU4LCAyNDEsIDU5LCAyMiwgMjUyLCA0OSwgNywgNiwgMSwgMjMwLCAzMSwgMiwgCi0gICAgMjQ4LCA0NywgNywgNCwgMSwgMjMwLCAzMSwgMiwgMjQ4LCA0NywgNywgNiwgMSwgMjUxLCA3NSwgMiwgMTMwLCA3LCA0LCAxLCAKLSAgICAyNTEsIDc1LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjEwLCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDI0MywgMjEwLCAKLSAgICAyLCAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDIzNSwgMzAsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjM1LCAzMCwgMiwgCi0gICAgMjI2LCAyNTIsIDkxLCA3LCA2LCAxLCAyMzAsIDMxLCAyLCAyMjYsIDI1MiwgOTEsIDcsIDQsIDEsIDIzMCwgMzEsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIDIyNiwgMjUyLCA5MSwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIAotICAgIDIyNiwgMjUyLCA5MSwgNywgNiwgMSwgMjIyLCA5NCwgMiwgMjI2LCAyNTIsIDkxLCA3LCA0LCAxLCAyMjIsIDk0LCAyLCAKLSAgICAyMjYsIDI1MiwgOTEsIDcsIDYsIDEsIDI0MiwgNjgsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjgsIDIsIDkxLCA1OCwgMSwgCi0gICAgNCwgMjcsIDIyNiwgMjM4LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTQsIDcsIDI0NSwgMTExLCAxLCAyMjMsIDUyLCAyNDUsIAotICAgIDE0LCA3LCAyNDUsIDExMSwgMSwgMjIzLCA1MiwgMjI2LCAxMDksIDcsIDI0NSwgMTExLCAxLCAyMzUsIDIwMCwgMTk0LCA3LCAKLSAgICAyNDUsIDExMSwgMSwgMjQwLCAxNjEsIDIzMiwgMTM1LCA3LCAyNDUsIDExMSwgMSwgMjU0LCAzMSwgMTk0LCAyMTcsIDIzMSwgCi0gICAgMjI5LCAyMTksIDEsIDYxLCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDc0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDUsIDI0NiwgCi0gICAgNTYsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNjksIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgNzYsIDIxNywgMjMxLCAyMjksIAotICAgIDIxOSwgMSwgNzgsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjQyLCA0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIzNCwgCi0gICAgMzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM0LCAxMTEsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQyLCAxODEsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQyLCAyMzEsIDIxNywgMjMxLCAyMjksIDIxOSwgNSwgMjU0LCA4MywgMjE3LCAKLSAgICAyMzEsIDIyOSwgMjE5LCAxLCAyNDksIDI0NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAxLCAyNTAsIDk0LCAyMTcsIDIzMSwgCi0gICAgMjI5LCAyMTksIDEsIDIzNSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjM1LCAxMTUsIDIxNywgMjMxLCAyMjksIAotICAgIDIxOSwgMSwgMjE1LCAxMzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE1LCAxNDAsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgCi0gICAgMjQ4LCAxMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjQ4LCAxMjIsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMTEyLCAKLSAgICAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIxNiwgMTU3LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI0NywgMTUzLCAyMTcsIAotICAgIDIzMSwgMjI5LCAyMTksIDEsIDI0OCwgMTUsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjI4LCA3OSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAxLCAyMjUsIDE5LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDIyNSwgMTI0LCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIAotICAgIDI1MSwgMjEzLCAyMTcsIDIzMSwgMjI5LCAyMTksIDEsIDI1MiwgMTgsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjMwLCAKLSAgICAxNjYsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjIyLCAyMTMsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjMyLCAxNjIsIAotICAgIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjIyLCAxNjcsIDIxNywgMjMxLCAyMjksIDIxOSwgMSwgMjE5LCA2MCwgMjE3LCAKLSAgICAyMzEsIDIyOSwgMjE5LCAxLCAyNDEsIDc1LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCA2MSwgMjE3LCAyMzEsIDIyOSwgCi0gICAgMjE5LCAyNSwgNSwgNzQsIDIxNywgMjMxLCAyMjksIDIxOSwgMjUsIDUsIDY5LCAyMTcsIDIzMSwgMjI5LCAyMTksIDI1LCA1LCAKLSAgICA3NiwgMjE3LCAyMzEsIDIyOSwgMjE5LCAyNSwgNSwgMjI2LCAxODcsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgCi0gICAgMjMxLCAxNjMsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgMjMxLCAxNjIsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAKLSAgICAxNSwgMjMxLCAxNjEsIDIxNywgMjMxLCAyMjksIDIxOSwgMjI1LCAxNSwgMjMxLCAxNjAsIDIyOCwgNjEsIDIzNSwgMjQ3LCAKLSAgICAyNDQsIDEwLCAxMjMsIDIyNCwgMjQsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDI0MiwgMzQsIDIyOCwgNjEsIAotICAgIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMzQsIDIyNCwgMjIsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyNDQsIDEwLCAxMjMsIDIxOSwgCi0gICAgMTE5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjQ0LCAxMCwgMTIzLCAyNDUsIDE5NiwgMjI4LCA2MSwgMjM1LCAyNDcsIDI0NCwgCi0gICAgMTAsIDEzNCwgMjE5LCAxMTgsIDIyOCwgNjEsIDIzNSwgMjQ3LCAyMjQsIDI1LCA3OSwgMjI4LCA2MSwgMjM1LCAyNDcsIAotICAgIDIyNSwgNDMsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjIyLCAxMjAsIDc5LCAyMjgsIDYxLCAyMzUsIDI0NywgMjI0LCAyNiwgCi0gICAgNzksIDIyNSwgMTQ3LCAxLCAxNzYsIDIyNSwgMTQ3LCAxLCAyMzQsIDEzOCwgMjI1LCAxNDcsIDEsIDI0MywgMTQyLCAyMjUsIAotICAgIDE0NywgMSwgMjI5LCA4MiwgMjI1LCAxNDcsIDEsIDI1MSwgNDEsIDIyNSwgMTQ3LCAxLCAyNTAsIDE2NSwgMjI1LCAxNDcsIAotICAgIDEsIDIzNSwgMTQ3LCAyMjUsIDE0NywgMSwgMjI3LCAxNjksIDIyNSwgMTQ3LCAxLCAyMTcsIDEwNiwgMjI1LCAxNDcsIDEsIAotICAgIDIxNiwgMjA5LCAyMjUsIDE0NywgMSwgMjQ4LCAyMjksIDIyNSwgMTQ3LCAxLCAxOTgsIDIyNSwgMTQ3LCAxLCAxOTEsIDIyNSwgCi0gICAgMTQ3LCAxLCAyMjUsIDE1MCwgMjI1LCAxNDcsIDEsIDI1MiwgMTk5LCAyMjUsIDE0NywgMSwgMTg2LCAyMjUsIDE0NywgMSwgCi0gICAgMjE1LCAxODQsIDIyNSwgMTQ3LCAxLCAyMTUsIDE3NiwgMjI1LCAxNDcsIDEsIDI0NiwgNDYsIDIyNSwgMTQ3LCAxLCAyMTIsIAotICAgIDY1LCAyMjUsIDE0NywgMSwgMjEwLCA4MiwgMjI1LCAxNDcsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NywgMSwgNCwgNjEsIDIyNSwgCi0gICAgMTQ3LCAxLCAxOTIsIDIyNSwgMTQ3LCAxLCAyMDUsIDIyNSwgMTQ3LCAxLCAyMzMsIDE0MSwgMjI1LCAxNDcsIDEsIDIyMCwgCi0gICAgMTA0LCAyMjUsIDE0NywgMSwgMjA2LCAyMjUsIDE0NywgMSwgMTYyLCAyMjUsIDE0NywgMSwgNjEsIDIyNSwgMTQ3LCAxLCAKLSAgICA3NCwgMjI1LCAxNDcsIDEsIDY5LCAyMjUsIDE0NywgMSwgNzYsIDIyNSwgMTQ3LCAxLCA3OCwgMjI1LCAxNDcsIDEsIDIyNCwgCi0gICAgOTEsIDIyNSwgMTQ3LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDcsIDEsIDI0NCwgMjA0LCAyMjUsIDE0NywgMSwgMjQzLCAzNiwgCi0gICAgMjI1LCAxNDcsIDEsIDI0NSwgMjE3LCAyMjUsIDE0NywgMjE4LCA3NCwgMSwgMjEyLCA2NSwgMjI1LCAxNDcsIDIxOCwgNzQsIAotICAgIDEsIDE5MiwgMjI1LCAxNDcsIDEsIDIxNSwgMTU3LCAyMjUsIDE0NywgMSwgMjE1LCAxNDUsIDIyNSwgMTQ3LCAxLCAyNDgsIAotICAgIDE0MywgMjI1LCAxNDcsIDEsIDIyOCwgMTE1LCAyMjUsIDE0NywgMSwgMjU0LCAxNDksIDE5MiwgMjI1LCAxNDcsIDEsIDIxMywgCi0gICAgMTM0LCAyMjAsIDEwNCwgMjI1LCAxNDcsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ3LCAxLCAyNTMsIDIzMSwgMjQ0LCAKLSAgICAyMDQsIDIyNSwgMTQ3LCAyMTgsIDc0LCAxLCAyMDUsIDIyNSwgMTQ3LCAyMTgsIDI2LCAxLCAyMDUsIDIyNSwgMTQ3LCAxLCAKLSAgICAyNTEsIDcsIDIyNSwgMTQ3LCAyMTksIDE1NywgMjQxLCAyNDMsIDc5LCAyMjUsIDE0NywgNTIsIDI0MSwgMjQzLCA3OSwgCi0gICAgMjI1LCAxNDcsIDE2NCwgMjIwLCA5NywgMjI1LCAxNDcsIDE2NCwgNTIsIDIyMCwgOTcsIDE3OSwgNSwgMjU0LCA4MywgMTc5LCAKLSAgICA1LCAyMTMsIDE0NywgMTc5LCAxLCA2MSwgMTc5LCAxLCAyNTUsIDgyLCAxNzksIDEsIDc0LCAxNzksIDEsIDIzNiwgNDAsIAotICAgIDE3OSwgMSwgNjksIDE3OSwgMSwgMjE0LCAxMTgsIDE3OSwgMSwgMTQ5LCAxNTMsIDE3OSwgMSwgMTQ5LCAyMjIsIDE4MiwgCi0gICAgMTc5LCAxLCAxNDksIDE1NiwgMTc5LCAxLCAxNDksIDIzMiwgMTkxLCAxNzksIDEsIDc2LCAxNzksIDEsIDI0NSwgMjE3LCAKLSAgICAxNzksIDEsIDI1NCwgMjEwLCAxNzksIDEsIDc4LCAxNzksIDEsIDIyNiwgMTg3LCAxNzksIDEsIDI1MywgMjAwLCAxNzksIDEsIAotICAgIDE3NiwgMTc5LCAxLCAyMzQsIDEzOCwgMTc5LCAxLCAyNDMsIDE0MiwgMTc5LCAxLCAyNDMsIDAsIDE3OSwgMSwgMjI5LCA4MiwgCi0gICAgMTc5LCAxLCAyNTEsIDQxLCAxNzksIDEsIDI1MCwgMTY1LCAxNzksIDEsIDIzNSwgMTQ3LCAxNzksIDEsIDIzNSwgMTIwLCAKLSAgICAxNzksIDEsIDIyNywgMTY5LCAxNzksIDEsIDIxNSwgMTU3LCAxNzksIDEsIDIxNSwgMTQ1LCAxNzksIDEsIDI0OCwgMTQzLCAKLSAgICAxNzksIDEsIDI0OCwgMTI3LCAxNzksIDEsIDIyOCwgMTE1LCAxNzksIDEsIDIxNywgMTA2LCAxNzksIDEsIDIxNiwgMjA5LCAKLSAgICAxNzksIDEsIDI0OCwgMjI5LCAxNzksIDEsIDI0OCwgMzMsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDE5MSwgMTc5LCAxLCAyMjUsIAotICAgIDE1MCwgMTc5LCAxLCAyNTIsIDE5OSwgMTc5LCAxLCAyNTIsIDI2LCAxNzksIDEsIDE4NiwgMTc5LCAxLCAxOTIsIDE3OSwgMSwgCi0gICAgMjA1LCAxNzksIDEsIDIzMywgMTQxLCAxNzksIDEsIDIxNCwgMjcsIDE3OSwgMSwgMjIwLCAxMDQsIDE3OSwgMSwgMjE4LCAKLSAgICAyMjUsIDE3OSwgMSwgMjA2LCAxNzksIDEsIDE2MiwgMTc5LCAxLCAyMzIsIDE5MCwgMTc5LCAxMTcsIDUsIDI0MiwgNTEsIAotICAgIDE3OSwgMjUsIDUsIDI1NSwgODIsIDE3OSwgMjUsIDUsIDc0LCAxNzksIDI1LCA1LCAyMzYsIDQwLCAxNzksIDI1LCA1LCA2OSwgCi0gICAgMTc5LCAyNSwgNSwgMjE0LCAxMTgsIDE3OSwgMjUsIDUsIDE0OSwgMTUzLCAxNzksIDI1LCA1LCAxNDksIDIyMiwgMTgyLCAKLSAgICAxNzksIDI1LCA1LCAxNDksIDE1NiwgMTc5LCAyNSwgNSwgMTQ5LCAyMzIsIDE5MSwgMTc5LCAyNSwgNSwgNzYsIDE3OSwgMjUsIAotICAgIDUsIDI0NSwgMjE3LCAxNzksIDI1LCA1LCAyNTQsIDIxMCwgMTc5LCAyNSwgNSwgNzgsIDE3OSwgMjUsIDUsIDIyNiwgMTg3LCAKLSAgICAxNzksIDI1LCA1LCAyNTMsIDIwMCwgMTc5LCA1LCAyMTMsIDE1MiwgMTc5LCAyNDgsIDE4NiwgMTc5LCA1MiwgMjQ4LCAxODYsIAotICAgIDE3OSwgMjEsIDIxMCwgODYsIDE3OSwgMjEsIDExMSwgMTc5LCAyMSwgMTA1LCAxNzksIDIxLCAxNTgsIDE3OSwgMjEsIDE2MSwgCi0gICAgMTc5LCAyMSwgMTkwLCAxNzksIDIxLCAxOTUsIDE3OSwgMjEsIDE5OSwgMTc5LCAyMSwgMTk2LCAxNzksIDIxLCAyMDEsIDM4LCAKLSAgICA4NCwgMjEsIDIxMCwgODYsIDM4LCA4NCwgMjEsIDExMSwgMzgsIDg0LCAyMSwgMTA1LCAzOCwgODQsIDIxLCAxNTgsIDM4LCAKLSAgICA4NCwgMjEsIDE2MSwgMzgsIDg0LCAyMSwgMTkwLCAzOCwgODQsIDIxLCAxOTUsIDM4LCA4NCwgMjEsIDE5OSwgMzgsIDg0LCAKLSAgICAyMSwgMTk2LCAzOCwgODQsIDIxLCAyMDEsIDM4LCA4NCwgMSwgNjEsIDM4LCA4NCwgMSwgNjksIDM4LCA4NCwgMSwgMTc2LCAKLSAgICAzOCwgODQsIDEsIDE5OCwgMzgsIDg0LCAxLCAxOTEsIDM4LCA4NCwgMSwgMjA1LCAzOCwgODQsIDEsIDIxMywgMTc2LCAzOCwgCi0gICAgODQsIDUsIDI1MywgMTgzLCA4NCwgNSwgMjE5LCAxOSwgMjUxLCA3LCA4NCwgNSwgMjUxLCA4LCAyMTMsIDE1MiwgODQsIDUsIAotICAgIDUyLCAyNTEsIDgsIDIxMywgMTUyLCA4NCwgNSwgMjUxLCA4LCAxMDUsIDg0LCA1LCAyNTEsIDgsIDE1OCwgODQsIDUsIDI1MSwgCi0gICAgOCwgMjUzLCAxODMsIDg0LCA1LCAyMjQsIDEyNywgODQsIDI0MywgMTA3LCAyNDQsIDExMSwgODQsIDI1MCwgMjQ2LCA4NCwgCi0gICAgMjQxLCAyMzcsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDIxMCwgODYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDExMSwgCi0gICAgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTA1LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxNTgsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMjEsIDE2MSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTkwLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDIxLCAxOTUsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjEsIDE5OSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyMSwgMTk2LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDIxLCAyMDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMTc2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIzNCwgCi0gICAgMTM4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0MywgMTQyLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyOSwgODIsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjA2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyMCwgMTA0LCAyMzQsIDE5NCwgCi0gICAgMjMyLCAyNDgsIDEsIDIxMCwgMTE2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyNywgMTY5LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDEsIDIxNywgMTA2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0MCwgMjMzLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIAotICAgIDE5OCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxOTEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjI1LCAxNTAsIDIzNCwgCi0gICAgMTk0LCAyMzIsIDI0OCwgMSwgMTg2LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDI0OCwgMjI5LCAyMzQsIDE5NCwgMjMyLCAKLSAgICAyNDgsIDEsIDI1MiwgMTk5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIwNSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxOTIsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjMzLCAxNDEsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMSwgMjEyLCA2NSwgMjM0LCAKLSAgICAxOTQsIDIzMiwgMjQ4LCAxLCAyMTYsIDIwOSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAxNjIsIDIzNCwgMTk0LCAyMzIsIAotICAgIDI0OCwgMSwgMjE0LCAyNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxLCAyNTEsIDQxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIAotICAgIDYxLCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDIyNiwgMjM4LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDEsIDc0LCAyMzQsIDE5NCwgCi0gICAgMjMyLCAyNDgsIDEsIDIyNiwgMTg3LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCAyMTQsIDIxNCwgMjM0LCAxOTQsIDIzMiwgCi0gICAgMjQ4LCAyNSwgNzYsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMjUsIDY5LCAyMzQsIDE5NCwgMjMyLCAyNDgsIDI1LCAyNDUsIAotICAgIDIxNywgMjM0LCAxOTQsIDIzMiwgMjQ4LCAyNSwgNzgsIDIzNCwgMTk0LCAyMzIsIDI0OCwgMTM4LCAyMjUsIDMzLCAyMzQsIAotICAgIDE5NCwgMjMyLCAyNDgsIDEzOCwgMjUxLCAyMCwgMjM0LCAxOTQsIDIzMiwgMjQ4LCAxMzgsIDI1MSwgMjEsIDIyNSwgMzMsIAotICAgIDIzNCwgMTk0LCAyMzIsIDI0OCwgNSwgMjQ5LCA4NSwgMjM0LCAxOTQsIDIzMiwgMjQ4LCA1LCAyMTksIDIwMSwgMjIzLCA5NiwgCi0gICAgMSwgMTc2LCAyMjMsIDk2LCAxLCAyNDMsIDE0MiwgMjIzLCA5NiwgMSwgMjI5LCA4MiwgMjIzLCA5NiwgMSwgMjE3LCAxMDYsIAotICAgIDIyMywgOTYsIDEsIDI0OCwgMjI5LCAyMjMsIDk2LCAxLCAxOTgsIDIyMywgOTYsIDEsIDE5MSwgMjIzLCA5NiwgMSwgMjUyLCAKLSAgICAxOTksIDIyMywgOTYsIDEsIDE4NiwgMjIzLCA5NiwgMSwgMjUxLCA0MSwgMjIzLCA5NiwgMSwgMjM1LCAxNDcsIDIyMywgOTYsIAotICAgIDEsIDIyNywgMTY5LCAyMjMsIDk2LCAxLCAyMDYsIDIyMywgOTYsIDEsIDIwNSwgMjIzLCA5NiwgMSwgMjMzLCAxNDEsIDIyMywgCi0gICAgOTYsIDEsIDE5MiwgMjIzLCA5NiwgMSwgMjEyLCA2NSwgMjIzLCA5NiwgMSwgMTYyLCAyMjMsIDk2LCAxLCAyMzEsIDEyOSwgCi0gICAgMjIzLCA5NiwgMSwgMjI5LCA2MSwgMjIzLCA5NiwgMSwgMjI5LCAxNTMsIDIyMywgOTYsIDEsIDIyNywgMTM5LCAyMjMsIDk2LCAKLSAgICAxLCA2MSwgMjIzLCA5NiwgMjUsIDUsIDc0LCAyMjMsIDk2LCAyNSwgNSwgNjksIDIyMywgOTYsIDI1LCA1LCA3NiwgMjIzLCAKLSAgICA5NiwgMjUsIDUsIDI1NCwgMjEwLCAyMjMsIDk2LCAyNSwgNSwgNzgsIDIyMywgOTYsIDI1LCA1LCAyNTMsIDIwMCwgMjIzLCAKLSAgICA5NiwgMjUsIDUsIDI0NSwgNjMsIDIyMywgOTYsIDI1LCA1LCAyNDUsIDI0MSwgMjIzLCA5NiwgMTE3LCA1LCAyMjksIDg0LCAKLSAgICAyMjMsIDk2LCAxMTcsIDUsIDIzMCwgMzAsIDIyMywgOTYsIDExNywgNSwgMTUzLCAyMjMsIDk2LCAxMTcsIDUsIDI0MiwgNjcsIAotICAgIDIyMywgOTYsIDIxMywgMTUyLCAyMjMsIDk2LCAyMjEsIDE3NSwgNzksIDI0LCAxMDAsIDIxNiwgOTgsIDI0LCAxMDAsIDIxNiwgCi0gICAgOTcsIDI0LCAxMDAsIDIxNiwgOTUsIDI0LCAxMDAsIDIxNiwgMTAwLCAyNCwgMTAwLCAyMjMsIDI0LCAyNCwgMTAwLCAyMjMsIAotICAgIDgsIDI0LCAxMDAsIDIyMywgMywgMjQsIDEwMCwgMjIzLCA1LCAyNCwgMTAwLCAyMjMsIDIxLCAyNCwgMTAwLCAyMjMsIDE0LCAKLSAgICAyNCwgMTAwLCAyMjMsIDcsIDI0LCAxMDAsIDIyMywgMjYsIDI0LCAxMDAsIDIyMywgOSwgMjQsIDEwMCwgMjIzLCAyOCwgMjQsIAotICAgIDEwMCwgMjIzLCAyNSwgMjQsIDEwMCwgMjMwLCAyMTgsIDI0LCAxMDAsIDIzMCwgMjA5LCAyNCwgMTAwLCAyMzAsIDIxMiwgCi0gICAgMjQsIDEwMCwgMjI1LCA4MywgMjQsIDEwMCwgMjI1LCA5NCwgMjQsIDEwMCwgMjI1LCA5NSwgMjQsIDEwMCwgMjE4LCAyMDksIAotICAgIDI0LCAxMDAsIDIzNiwgNTMsIDI0LCAxMDAsIDIzNiwgNjAsIDI0LCAxMDAsIDIxOCwgMjIwLCAyNCwgMTAwLCAyMTgsIDIwNywgCi0gICAgMjQsIDEwMCwgMjI1LCAxMzMsIDI0LCAxMDAsIDI0MSwgMTc0LCAyNCwgMTAwLCAyMTgsIDIwNCwgMTU1LCA1LCAyMjYsIDMxLCAKLSAgICAxNTUsIDUsIDI1MCwgMTk1LCAxNTUsIDUsIDIzMywgNzIsIDE1NSwgNSwgMjExLCAyNDMsIDE1NSwgMSwgNjEsIDE1NSwgMSwgCi0gICAgMjQwLCAxNjEsIDIzNCwgMTk3LCAxNTUsIDEsIDc0LCAxNTUsIDEsIDIzNiwgNDAsIDE1NSwgMSwgNjksIDE1NSwgMSwgMjI2LCAKLSAgICA5NCwgMjUwLCAxNzEsIDE1NSwgMSwgMjI5LCA4MywgMjMzLCAzNCwgMTU1LCAxLCAyMjksIDgzLCAyMzMsIDM1LCAyMjMsIAotICAgIDE0NSwgMTU1LCAxLCA3NiwgMTU1LCAxLCAyNTQsIDIxMCwgMTU1LCAxLCA3OCwgMTU1LCAxLCAxNzYsIDE1NSwgMSwgMjM1LCAKLSAgICAxOSwgMjIxLCAyMzAsIDE1NSwgMSwgMjM1LCAxOSwgMjMwLCA3MSwgMTU1LCAxLCAyNDMsIDE0MiwgMTU1LCAxLCAyNDMsIAotICAgIDE0MywgMjMwLCA3MSwgMTU1LCAxLCAyMjksIDgyLCAxNTUsIDEsIDI1MSwgNDEsIDE1NSwgMSwgMjUxLCA0MiwgMjMwLCA3MSwgCi0gICAgMTU1LCAxLCAyMzUsIDE0NywgMTU1LCAxLCAyMjcsIDE3MCwgMjMwLCA3MSwgMTU1LCAxLCAyMzUsIDE0OCwgMjMxLCAyMTIsIAotICAgIDE1NSwgMSwgMjI3LCAxNjksIDE1NSwgMSwgMjE1LCAxNTcsIDE1NSwgMSwgMjE1LCAxNTgsIDIzMSwgMjEyLCAxNTUsIDEsIAotICAgIDI0OCwgMTQzLCAxNTUsIDEsIDI0OCwgMTQ0LCAyMzEsIDIxMiwgMTU1LCAxLCAyMjksIDIzNCwgMjMwLCA3MSwgMTU1LCAxLCAKLSAgICAyMTcsIDEwNiwgMTU1LCAxLCAyMTcsIDEwNywgMjMwLCA3MSwgMTU1LCAxLCAyNDgsIDIyOSwgMTU1LCAxLCAyNDgsIDIzMCwgCi0gICAgMjMxLCAyMTIsIDE1NSwgMSwgMTk4LCAxNTUsIDEsIDE5MSwgMTU1LCAxLCAyMjYsIDk0LCAyMzAsIDcxLCAxNTUsIDEsIAotICAgIDI1MiwgMTk5LCAxNTUsIDEsIDI1MiwgMjAwLCAyMzAsIDcxLCAxNTUsIDEsIDE4NiwgMTU1LCAxLCAxOTIsIDE1NSwgMSwgCi0gICAgMjA1LCAxNTUsIDEsIDIyMywgMTkxLCAyNTQsIDIxOSwgMTU1LCAxLCAyMzMsIDE0MSwgMTU1LCAxLCAyMTIsIDY1LCAxNTUsIAotICAgIDEsIDIyMiwgMzYsIDIzMCwgNzEsIDE1NSwgMSwgMjIyLCAzNiwgMjMxLCAyMTIsIDE1NSwgMSwgMjA2LCAxNTUsIDEsIDE2MiwgCi0gICAgMTU1LCA1LCAyNTAsIDE5NiwgMjE2LCAyNTEsIDE1NSwgMjUsIDUsIDIxNywgNDgsIDE1NSwgMjUsIDUsIDIxNiwgMzYsIAotICAgIDE1NSwgMjUsIDUsIDIxMSwgMTkwLCAxNTUsIDI1LCA1LCAyMTEsIDE5MSwgMjMxLCA3NCwgMTU1LCAyNSwgNSwgMjE4LCA0OCwgCi0gICAgMTU1LCAyNSwgNSwgMjE4LCA0OSwgMjMxLCA2MiwgMTU1LCAyNSwgNSwgMjE3LCA2NiwgMTU1LCAyNSwgNSwgMjQ3LCAyMDIsIAotICAgIDIzMCwgNzAsIDE1NSwgMjUsIDUsIDIyNSwgMTg3LCAxNTUsIDExNywgNSwgMjM0LCAxNjQsIDE1NSwgMTE3LCA1LCAyMjUsIAotICAgIDE5OSwgMTU1LCAxMTcsIDUsIDI1MSwgMjcsIDE1NSwgMjI2LCA0NCwgMTU1LCA0MywgMjIzLCA3MiwgMTU1LCA0NCwgMjIzLCAKLSAgICA3MiwgMTU1LCAyMjYsIDgzLCAyNTQsIDEyNSwgMTU1LCAyMjYsIDgzLCAyMzEsIDIyOSwgMTU1LCAyMjYsIDgzLCAyMzIsIAotICAgIDkzLCAxNTUsIDIyNiwgODMsIDIxMSwgMjM4LCAxNTUsIDIyNiwgODMsIDIyNiwgNDUsIDE1NSwgMjI2LCA4MywgMjMyLCAKLSAgICAyMTEsIDE1NSwgMjI2LCA4MywgMjMyLCA4NywgMTU1LCAyMjYsIDgzLCAyNTUsIDIsIDE1NSwgMjI2LCA4MywgMjU1LCAzLCAKLSAgICAyNTUsIDIsIDE1NSwgMjI2LCA4MywgMjI1LCA1NCwgMTU1LCAyMTUsIDk0LCAyMjYsIDgzLCAyMjUsIDU0LCAxNTUsIDIyNiwgCi0gICAgNDAsIDE1NSwgMjEsIDIxMCwgODYsIDE1NSwgMjEsIDExMSwgMTU1LCAyMSwgMTA1LCAxNTUsIDIxLCAxNTgsIDE1NSwgMjEsIAotICAgIDE2MSwgMTU1LCAyMSwgMTkwLCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDE5OSwgMTU1LCAyMSwgMTk2LCAxNTUsIDIxLCAKLSAgICAyMDEsIDE1NSwgMjI2LCA4MywgMjE2LCA3MCwgMjE1LCAxMDcsIDE1NSwgMjI2LCA4MywgMjM1LCAxNzQsIDE3MiwgMSwgNjEsIAotICAgIDE3MiwgMSwgNzQsIDE3MiwgMSwgNjksIDE3MiwgMSwgNzYsIDE3MiwgMSwgMjU0LCAyMTAsIDE3MiwgMSwgNzgsIDE3MiwgMSwgCi0gICAgMTc2LCAxNzIsIDEsIDIzNCwgMTM4LCAxNzIsIDEsIDI0MywgMTQyLCAxNzIsIDEsIDI0MywgMCwgMTcyLCAxLCAyMjgsIAotICAgIDI1MCwgMTcyLCAxLCAyMjksIDgyLCAxNzIsIDEsIDI1MCwgMTY1LCAxNzIsIDEsIDI1MCwgMTIwLCAxNzIsIDEsIDIzNSwgCi0gICAgMTQ3LCAxNzIsIDEsIDIzNSwgMTIwLCAxNzIsIDEsIDIyOCwgMjQwLCAxNzIsIDEsIDIyOCwgMjQyLCAxNzIsIDEsIDIyOCwgCi0gICAgMjQxLCAxNzIsIDEsIDIxNywgMTA2LCAxNzIsIDEsIDIxNiwgMjA5LCAxNzIsIDEsIDI0OCwgMjI5LCAxNzIsIDEsIDI0OCwgCi0gICAgMzMsIDE3MiwgMSwgMjI3LCAyMTEsIDE3MiwgMSwgMTk4LCAxNzIsIDEsIDI0OCwgMTQzLCAxNzIsIDEsIDE5MSwgMTcyLCAxLCAKLSAgICAyMjQsIDIyMywgMTcyLCAxLCAyMjUsIDE1MCwgMTcyLCAxLCAyNTIsIDE5OSwgMTcyLCAxLCAyNTIsIDI2LCAxNzIsIDEsIAotICAgIDIzMCwgMTAwLCAxNzIsIDEsIDE4NiwgMTcyLCAxLCAyNTIsIDExOSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjA1LCAxNzIsIAotICAgIDEsIDIzMywgMTQxLCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAyMjUsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgCi0gICAgMTcyLCAyNSwgNSwgMjU1LCA4MiwgMTcyLCAyNSwgNSwgNzQsIDE3MiwgMjUsIDUsIDIzNiwgNDAsIDE3MiwgMjUsIDUsIAotICAgIDI0NSwgMjAzLCAxNzIsIDI1LCA1LCA2OSwgMTcyLCAyNSwgNSwgMjI2LCAyMzgsIDE3MiwgMjUsIDUsIDc4LCAxNzIsIDI1LCAKLSAgICA1LCAyNTQsIDIxMCwgMTcyLCAyNSwgNSwgMjUzLCAyMDAsIDE3MiwgMjUsIDUsIDIxNCwgMjE0LCAxNzIsIDExNywgNSwgCi0gICAgMTkyLCAxNzIsIDExNywgNSwgMjA1LCAxNzIsIDExNywgNSwgMjMzLCAxNDEsIDE3MiwgMTE3LCA1LCAyMTIsIDY1LCAxNzIsIAotICAgIDEsIDQwLCAyMzUsIDI5LCAxNzIsIDEsIDQwLCAyNDMsIDIwOSwgMTcyLCAxLCA0MCwgMjI5LCA4NCwgMTcyLCAxMTcsIDUsIAotICAgIDQwLCAyMjksIDg0LCAxNzIsIDEsIDQwLCAyNTAsIDE2NiwgMTcyLCAxLCA0MCwgMjE3LCAxNTMsIDE3MiwgMSwgNDAsIDIzMCwgCi0gICAgMzAsIDE3MiwgMSwgNDAsIDIyNiwgMTA5LCAxNzIsIDEsIDQwLCAyMTEsIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIAotICAgIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI4LCAxNzIsIDExNywgNSwgNDAsIDE5NCwgMTcyLCAxMTcsIDUsIDQwLCAKLSAgICAyNDIsIDY3LCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTEsIDE3MiwgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIAotICAgIDIxLCAxNjEsIDE3MiwgMjEsIDE5MCwgMTcyLCAyMSwgMTk1LCAxNzIsIDIxLCAxOTksIDE3MiwgMjEsIDE5NiwgMTcyLCAyMSwgCi0gICAgMjAxLCAxNzIsIDIyNCwgMTQ0LCAyMTgsIDI1MywgMTcyLCAyMjQsIDE0NCwgMjQ4LCAxODYsIDE3MiwgMjI0LCAxNDQsIDUyLCAKLSAgICAyNDgsIDE4NiwgMTcyLCAyMjQsIDE0NCwgMjE1LCAyMTIsIDI0OCwgMTg2LCA2OCwgMSwgMjM0LCAxMzIsIDI0MywgMTQyLCAKLSAgICA2OCwgMSwgMjM0LCAxMzIsIDI1MSwgNDEsIDY4LCAxLCAyMzQsIDEzMiwgMjUwLCAxNjUsIDY4LCAxLCAyMzQsIDEzMiwgCi0gICAgMjM1LCAxNDcsIDY4LCAxLCAyMzQsIDEzMiwgMjM1LCAxMjAsIDY4LCAxLCAyMzQsIDEzMiwgMjI3LCAxNjksIDY4LCAxLCAKLSAgICAyMzQsIDEzMiwgMjE1LCAxNTcsIDY4LCAxLCAyMzQsIDEzMiwgMjE1LCAxNDUsIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAxNDMsIAotICAgIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAxMjcsIDY4LCAxLCAyMzQsIDEzMiwgMjQ4LCAzMywgNjgsIDEsIDIzNCwgMTMyLCAKLSAgICAxOTgsIDY4LCAxLCAyMzQsIDEzMiwgMjA2LCA2OCwgMSwgMjM0LCAxMzIsIDE2MiwgNjgsIDEsIDIzNCwgMTMyLCAyNDEsIAotICAgIDE5NiwgNjgsIDEsIDIzNCwgMTMyLCAyNDQsIDIwNCwgNjgsIDU4LCAxLCAyMzQsIDEzMiwgMjIzLCAxMTIsIDY4LCAxLCAKLSAgICAyMzQsIDEzMiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEzMiwgMjEwLCAxMTYsIDY4LCAxLCAyMzQsIDEzMiwgMjA1LCA2OCwgCi0gICAgMjMyLCAxNTEsIDIzNCwgMTMyLCAyMjcsIDEsIDY4LCAyMzIsIDE1MSwgMjM0LCAxMzIsIDIyNCwgNDYsIDY4LCAyMzIsIAotICAgIDE1MSwgMjM0LCAxMzIsIDI0MSwgMTI4LCA2OCwgMTYsIDI1NCwgMTk5LCAyNDUsIDM4LCA2OCwgMTYsIDI1NCwgMTk5LCAKLSAgICAxMTEsIDY4LCAxNiwgMjU0LCAxOTksIDEwNSwgNjgsIDEsIDI1NCwgMTk5LCAyMDUsIDY4LCA1LCAyMjYsIDI3LCAyMzQsIAotICAgIDIxOSwgMjE2LCAzMSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDM0LCAzOSwgMjA4LCAxLCAxMjUsIDIzNCwgMzQsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjM0LCAxMTEsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMTEsIDM5LCAyMDgsIDEsIDEyMSwgMjM0LCAKLSAgICAxMjAsIDM5LCAyMDgsIDEsIDEyNSwgMjM0LCAxMjAsIDM5LCAyMDgsIDEsIDEyMSwgMjQyLCAxODEsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjQyLCAxODEsIDM5LCAyMDgsIDEsIDEyMSwgMjI5LCA5LCAzOSwgMjA4LCAxLCAxMjUsIDIyOSwgOSwgMzksIDIwOCwgCi0gICAgMSwgMTIxLCAyNDksIDI0NiwgMzksIDIwOCwgMSwgMTI1LCAyNDksIDI0NiwgMzksIDIwOCwgMSwgMTIxLCAyNTAsIDk0LCAKLSAgICAzOSwgMjA4LCAxLCAxMjUsIDI1MCwgOTQsIDM5LCAyMDgsIDEsIDEyMSwgMjE5LCA2MCwgMzksIDIwOCwgMSwgMTI1LCAyMTksIAotICAgIDYwLCAzOSwgMjA4LCAxLCAxMjEsIDIyNywgMTM4LCAzOSwgMjA4LCAxLCAxMjUsIDIyNywgMTM4LCAzOSwgMjA4LCAxLCAKLSAgICAxMjEsIDI0NywgMTUzLCAzOSwgMjA4LCAxLCAxMjUsIDI0NywgMTUzLCAzOSwgMjA4LCAxLCAxMjEsIDExMiwgMzksIDIwOCwgCi0gICAgMSwgMTI1LCAxMTIsIDM5LCAyMDgsIDEsIDEyMSwgMjE2LCAxNTcsIDM5LCAyMDgsIDEsIDEyNSwgMjE2LCAxNTcsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjI4LCA3OSwgMzksIDIwOCwgMSwgMTI1LCAyMjgsIDc5LCAzOSwgMjA4LCAxLCAxMjEsIDI1MSwgCi0gICAgMjEzLCAzOSwgMjA4LCAxLCAxMjUsIDI1MSwgMjEzLCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTksIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjI1LCAxOSwgMzksIDIwOCwgMSwgMTIxLCAyMjUsIDEyNCwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDEyNCwgMzksIAotICAgIDIwOCwgMSwgMTIxLCAyNDQsIDUxLCAzOSwgMjA4LCAxLCAxMjUsIDI0NCwgNTEsIDM5LCAyMDgsIDEsIDEyMSwgMjMwLCAKLSAgICAxNjYsIDM5LCAyMDgsIDEsIDEyNSwgMjMwLCAxNjYsIDM5LCAyMDgsIDEsIDEyMSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIAotICAgIDEyNSwgMjEwLCAyNDQsIDM5LCAyMDgsIDEsIDEyMSwgMjIyLCAyMTMsIDM5LCAyMDgsIDEsIDEyNSwgMjIyLCAyMTMsIDM5LCAKLSAgICAyMDgsIDEsIDEyMSwgMjMyLCAxNjIsIDM5LCAyMDgsIDEsIDEyNSwgMjMyLCAxNjIsIDM5LCAyMDgsIDEsIDEyMSwgMjEzLCAKLSAgICAxMzgsIDM5LCAyMDgsIDEsIDEyNSwgMjEzLCAxMzgsIDM5LCAyMDgsIDEsIDEyMSwgMjQxLCA3NSwgMzksIDIwOCwgMSwgCi0gICAgMTI1LCAyNDEsIDc1LCAzOSwgMjA4LCAxLCAxMjEsIDc4LCAzOSwgMjA4LCAxLCAxMjUsIDc4LCAzOSwgMjA4LCAyMzEsIAotICAgIDIwOSwgMjM0LCAyMzYsIDM5LCAyMDgsIDI1LCAyNTUsIDgyLCAzOSwgMjA4LCAyNSwgNzQsIDM5LCAyMDgsIDI1LCAyMTQsIAotICAgIDIxNCwgMzksIDIwOCwgMjUsIDY5LCAzOSwgMjA4LCAyNSwgNzYsIDM5LCAyMDgsIDI1LCA3OCwgMzksIDIwOCwgMjMxLCAKLSAgICAyMDksIDIzNCwgMTE0LCAzOSwgMjA4LCAyNSwgMjQwLCAxMjYsIDM5LCAyMDgsIDI1LCAyMTQsIDIxMywgMzksIDIwOCwgMjUsIAotICAgIDIxNCwgMjI5LCAzOSwgMjA4LCAyNSwgMjUzLCAxOTgsIDM5LCAyMDgsIDI1LCAyNTMsIDE3NSwgMzksIDIwOCwgMjUsIDI1NCwgCi0gICAgMTMxLCAzOSwgMjA4LCAyNSwgMjU0LCAxNDQsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDksIDI0NSwgMTg4LCAzOSwgMjA4LCAKLSAgICAxMzgsIDIzMSwgMjA5LCAyMjcsIDIxMCwgMzksIDIwOCwgMTM4LCAyMzEsIDIwOSwgMjE2LCAxNTcsIDM5LCAyMDgsIDEzOCwgCi0gICAgMjMxLCAyMDksIDIxOSwgNDQsIDM5LCAyMDgsIDE2LCAyMzQsIDE5LCAzOSwgMjA4LCAxNiwgMjI3LCAyMTAsIDM5LCAyMDgsIAotICAgIDE2LCAyMjEsIDI1NSwgMzksIDIwOCwgMTYsIDI0MSwgNzYsIDI0MSwgNzEsIDM5LCAyMDgsIDE2LCAyMzQsIDI4LCAyMzQsIAotICAgIDI3LCAxODgsIDE4NywgMSwgNzYsIDE4OCwgMTg3LCAxLCA3OCwgMTg4LCAxODcsIDEsIDI1MCwgMTY1LCAxODgsIDE4NywgMSwgCi0gICAgMjI3LCAxNjksIDE4OCwgMTg3LCAxLCAyMTUsIDE1NywgMTg4LCAxODcsIDEsIDIxNSwgMTQ1LCAxODgsIDE4NywgMSwgMjQ4LCAKLSAgICAxNDMsIDE4OCwgMTg3LCAxLCAyNDgsIDEyNywgMTg4LCAxODcsIDEsIDIyOCwgMTE1LCAxODgsIDE4NywgMSwgMjIwLCAxMDQsIAotICAgIDE4OCwgMTg3LCAxLCAyMTgsIDIyNSwgMTg4LCAxODcsIDI1LCA1LCAyMzYsIDQwLCAxODgsIDE4NywgMjUsIDUsIDIxNCwgCi0gICAgMTE4LCAxODgsIDE4NywgMjUsIDUsIDI1NSwgNDYsIDE4OCwgMTg3LCAyNSwgNSwgMjUzLCAyMDAsIDE4OCwgMTg3LCAyNSwgCi0gICAgNSwgMjU1LCAzOSwgMTg4LCAxODcsIDI1MCwgMTMzLCAxODgsIDE4NywgMjU0LCAyMTUsIDIzNCwgMTA0LCAxODgsIDE4NywgCi0gICAgMjU0LCAxMTEsIDE4OCwgMTg3LCAzLCAyMjMsIDc3LCA3OSwgMTg4LCAxODcsIDIxMSwgMjA5LCAyMjMsIDc3LCA3OSwgMTg4LCAKLSAgICAxODcsIDI1LCA1LCAyMTMsIDE0NywgMTg4LCAxODcsIDIxMywgMTUyLCAyOSwgMywgMjE1LCAxMzgsIDI5LCAzLCAyMTUsIAotICAgIDE0MSwgMjksIDMsIDIxNSwgMTQ0LCAyOSwgMywgMjE1LCAxNDIsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQwLCAKLSAgICAyOSwgMywgMjQ4LCAxMjEsIDI5LCAzLCAyNDgsIDEyMywgMjksIDMsIDI0OCwgMTI2LCAyOSwgMywgMjQ4LCAxMjQsIDI5LCAKLSAgICAzLCAyNDgsIDEyNSwgMjksIDMsIDI0OCwgMTIyLCAyOSwgMywgMjQ2LCAzNiwgMjksIDMsIDI0NiwgMzksIDI5LCAzLCAyNDYsIAotICAgIDQ1LCAyOSwgMywgMjQ2LCA0MywgMjksIDMsIDI0NiwgNDQsIDI5LCAzLCAyNDYsIDM3LCAyOSwgMywgMjUwLCAyMTIsIDI5LCAKLSAgICAzLCAyNTAsIDIwNiwgMjksIDMsIDI1MCwgMjA4LCAyOSwgMywgMjUwLCAyMTEsIDI5LCAzLCAyNTAsIDIwOSwgMjksIDMsIAotICAgIDI1MCwgMjEwLCAyOSwgMywgMjUwLCAyMDcsIDI5LCAzLCAyNTIsIDExOSwgMjksIDMsIDI1MiwgOTgsIDI5LCAzLCAyNTIsIAotICAgIDExMCwgMjksIDMsIDI1MiwgMTE4LCAyOSwgMywgMjUyLCAxMTMsIDI5LCAzLCAyNTIsIDExNCwgMjksIDMsIDI1MiwgMTAyLCAKLSAgICAxODgsIDE4NywgMSwgMjM0LCAyNSwgMTg4LCAxODcsIDEsIDIyMSwgMjU1LCAxODgsIDE4NywgMSwgMjMzLCAxMTUsIDE4OCwgCi0gICAgMTg3LCAxLCAyMzAsIDE3NywgMTg4LCAxODcsIDEsIDE5MSwgMTg4LCAxODcsIDEsIDE5OCwgMTg4LCAxODcsIDEsIDI1MCwgCi0gICAgMTEwLCAxODgsIDE4NywgMSwgMjE2LCA5MSwgMTg4LCAxODcsIDEsIDIzNCwgMTA3LCAxODgsIDE4NywgMSwgMjI4LCAyNTUsIAotICAgIDE4OCwgMTg3LCAxLCAyMTYsIDE1MSwgMTg4LCAxODcsIDEsIDIxMiwgNjAsIDE4OCwgMTg3LCAxLCAyMTEsIDY5LCAxODgsIAotICAgIDE4NywgMSwgMjQwLCAyMjMsIDE4OCwgMTg3LCAxLCAyMTQsIDE5MCwgMTg4LCAxODcsIDEsIDc0LCAxODgsIDE4NywgMSwgCi0gICAgMjI1LCAxNDUsIDE4OCwgMTg3LCAxLCAyNTMsIDIxMCwgMTg4LCAxODcsIDEsIDI0MiwgMTc0LCAxODgsIDE4NywgMSwgMjM1LCAKLSAgICAxMTgsIDE4OCwgMTg3LCAxLCAyMjMsIDE2OSwgMTg4LCAxODcsIDEsIDI1MiwgMTk5LCAxODgsIDE4NywgMSwgMjM1LCAxMDYsIAotICAgIDE4OCwgMTg3LCAxLCAyNDcsIDIyNywgMTg4LCAxODcsIDEsIDI0MiwgMjI4LCAxODgsIDE4NywgMSwgMjQ4LCAxMywgMTg4LCAKLSAgICAxODcsIDEsIDI1MiwgMjQsIDE4OCwgMTg3LCAxLCAyMzQsIDI2LCAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIzMywgMTE2LCAKLSAgICAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIzMCwgMTc4LCAyMzIsIDEzNCwgMTg4LCAxODcsIDEsIDIyNiwgOTQsIDIzMiwgCi0gICAgMTM0LCAxODgsIDE4NywgMSwgMjI5LCAyMzQsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjE2LCA5MiwgMjMyLCAxMzQsIAotICAgIDE4OCwgMTg3LCAxLCAyMjksIDAsIDIzMiwgMTM0LCAxODgsIDE4NywgMSwgMjQwLCAxNjEsIDIzMiwgMTM0LCAxODgsIDE4NywgCi0gICAgMjUsIDUsIDIyNiwgMTk5LCAxODgsIDE4NywgMjUsIDUsIDIzNiwgNCwgMTg4LCAxODcsIDI1LCA1LCAyNTQsIDEzMCwgMTg4LCAKLSAgICAxODcsIDI1LCA1LCAyMTEsIDM4LCAxODgsIDE4NywgMjUsIDUsIDIxOSwgMzQsIDE4OCwgMTg3LCAyNSwgNSwgMjE0LCAxODcsIAotICAgIDE4OCwgMTg3LCAyNSwgNSwgMjUwLCAxMzEsIDE4OCwgMTg3LCAyNSwgNSwgMjI3LCAxOTUsIDE4OCwgMTg3LCAyNTAsIDEzMiwgCi0gICAgMTg4LCAxODcsIDIzMiwgOTAsIDIzNSwgMTU2LCAxODgsIDE4NywgMjU0LCA1NCwgMjM1LCAxNTYsIDE4OCwgMTg3LCAyMSwgCi0gICAgMjEwLCA4NiwgMTg4LCAxODcsIDIxLCAxMTEsIDE4OCwgMTg3LCAyMSwgMTA1LCAxODgsIDE4NywgMjEsIDE1OCwgMTg4LCAKLSAgICAxODcsIDIxLCAxNjEsIDE4OCwgMTg3LCAyMSwgMTkwLCAxODgsIDE4NywgMjEsIDE5NSwgMTg4LCAxODcsIDIxLCAxOTksIAotICAgIDE4OCwgMTg3LCAyMSwgMTk2LCAxODgsIDE4NywgMjEsIDIwMSwgMjQsIDE0MywgMjI3LCA4MSwgMjQsIDE0MywgMjI3LCA4NiwgCi0gICAgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgMTQzLCAyMTAsIDI0MSwgMjQsIDE0MywgMjE1LCAKLSAgICAyMywgMjQsIDE0MywgMjE1LCAyNiwgMjQsIDE0MywgMjEwLCAyMTAsIDI0LCAxNDMsIDIxMCwgMjA2LCAyNCwgMTQzLCAyNDUsIAotICAgIDYyLCAyNCwgMTQzLCAyNDUsIDYwLCAyNCwgMTQzLCAyNDUsIDYxLCAyNCwgMTQzLCAyNDUsIDU4LCAyNCwgMTQzLCAyNDAsIAotICAgIDE1MSwgMjQsIDE0MywgMjQwLCAxNTAsIDI0LCAxNDMsIDI0MCwgMTQ4LCAyNCwgMTQzLCAyNDAsIDE0OSwgMjQsIDE0MywgCi0gICAgMjQwLCAxNTQsIDI0LCAxNDMsIDI0MCwgMTQ3LCAyNCwgMTQzLCAyNDAsIDE0NiwgMjQsIDE0MywgMjQwLCAxNTYsIDI0LCAKLSAgICAxNDMsIDI1NCwgNDEsIDI0LCAxNDMsIDI1NCwgNDAsIDI0LCA5MCwgMjI4LCAyMjQsIDI0LCA5MCwgMjI4LCAyMzAsIDI0LCAKLSAgICA5MCwgMjE4LCAyMDYsIDI0LCA5MCwgMjE4LCAyMDUsIDI0LCA5MCwgMjE2LCA5NywgMjQsIDkwLCAyMTYsIDk1LCAyNCwgOTAsIAotICAgIDIxNiwgOTQsIDI0LCA5MCwgMjE2LCAxMDAsIDI0LCA5MCwgMjE2LCAxMDEsIDI0LCA5MCwgMjE2LCA5MywgMjQsIDkwLCAKLSAgICAyMjMsIDgsIDI0LCA5MCwgMjIzLCAyMywgMjQsIDkwLCAyMTgsIDIxMiwgMjQsIDkwLCAyMjMsIDIwLCAyNCwgOTAsIDIyMywgCi0gICAgMTAsIDI0LCA5MCwgMjIzLCAxMiwgMjQsIDkwLCAyMjIsIDI1NSwgMjQsIDkwLCAyMjMsIDAsIDI0LCA5MCwgMjM0LCAyMjQsIAotICAgIDI0LCA5MCwgMjMwLCAyMTcsIDI0LCA5MCwgMjMwLCAyMTEsIDI0LCA5MCwgMjE4LCAyMTYsIDI0LCA5MCwgMjMwLCAyMTQsIAotICAgIDI0LCA5MCwgMjMwLCAyMjAsIDI0LCA5MCwgMjI1LCA3OSwgMjQsIDkwLCAyMjUsIDg4LCAyNCwgOTAsIDIyNSwgOTIsIDI0LCAKLSAgICA5MCwgMjE4LCAyMTQsIDI0LCA5MCwgMjI1LCA4MiwgMjQsIDkwLCAyMjUsIDk2LCAyNCwgOTAsIDIyNSwgOTcsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDIsIDI0LCA5MCwgMjE5LCAxNDUsIDI0LCA5MCwgMjE4LCAyMTAsIDI0LCA5MCwgMjE4LCAyMDgsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDAsIDI0LCA5MCwgMjE5LCAxNDgsIDI0LCA5MCwgMjE5LCAxNDksIDI0LCA5MCwgMjE5LCAxMzQsIDI0LCA5MCwgCi0gICAgMjE5LCAxNDcsIDI0LCA5MCwgMjI2LCAzNCwgMjQsIDkwLCAyMjYsIDM1LCAyNCwgOTAsIDIxMSwgMjQsIDI0LCA5MCwgMjExLCAKLSAgICAyNSwgMjQsIDkwLCAyNTAsIDUyLCAyNCwgOTAsIDI1MCwgNTEsIDI0LCA5MCwgMjE4LCAyMjEsIDI0LCA5MCwgMjI1LCAxMzEsIAotICAgIDI0LCA5MCwgMjI1LCAxMzAsIDEwLCAxNCwgMjM4LCAzMSwgMTAsIDE0LCAyMzgsIDMwLCAxMCwgMTQsIDIzOCwgMjksIDEwLCAKLSAgICAxNCwgMjM4LCAyOCwgMTAsIDE0LCAyMzgsIDI3LCAxMCwgMTQsIDIzOCwgMjYsIDEwLCAxNCwgMjM4LCAyNSwgMTAsIDE0LCAKLSAgICAyMzgsIDI0LCAxMCwgMTQsIDIzOCwgMjMsIDEwLCAxNCwgMjM4LCAyMiwgMTAsIDE0LCAyMzgsIDIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjAsIDEwLCAxNCwgMjM4LCAxOSwgMTAsIDE0LCAyMzgsIDE4LCAxMCwgMTQsIDIzOCwgMTcsIDEwLCAxNCwgMjM4LCAxNiwgCi0gICAgMTAsIDE0LCAyMzgsIDE1LCAxMCwgMTQsIDIzOCwgMTQsIDEwLCAxNCwgMjM4LCAxMywgMTAsIDE0LCAyMzgsIDEyLCAxMCwgCi0gICAgMTQsIDIzOCwgMTEsIDEwLCAxNCwgMjM4LCAxMCwgMTAsIDE0LCAyMzgsIDksIDEwLCAxNCwgMjM4LCA4LCAxMCwgMTQsIAotICAgIDIzOCwgNywgMTAsIDE0LCAyMzgsIDYsIDEwLCAxNCwgMjM4LCA1LCAxMCwgMTQsIDIzOCwgNCwgMTAsIDE0LCAyMzgsIDMsIAotICAgIDEwLCAxNCwgMjM4LCAyLCAxMCwgMTQsIDIzOCwgMSwgMTAsIDE0LCAyMzgsIDAsIDEwLCAxNCwgMjM3LCAyNTUsIDEwLCAxNCwgCi0gICAgMjM3LCAyNTQsIDEwLCAxNCwgMjM3LCAyNTMsIDEwLCAxNCwgMjM3LCAyNTIsIDEwLCAxNCwgMjM3LCAyNTEsIDEwLCAxNCwgCi0gICAgMjM3LCAyNTAsIDEwLCAxNCwgMjM3LCAyNDksIDEwLCAxNCwgMjM3LCAyNDgsIDEwLCAxNCwgMjM3LCAyNDcsIDEwLCAxNCwgCi0gICAgMjM3LCAyNDYsIDEwLCAxNCwgMjM3LCAyNDUsIDEwLCAxNCwgMjM3LCAyNDQsIDEwLCAxNCwgMjM3LCAyNDMsIDEwLCAxNCwgCi0gICAgMjM3LCAyNDIsIDEwLCAxNCwgMjM3LCAyNDEsIDEwLCAxNCwgMjM3LCAyNDAsIDEwLCAxNCwgMjM3LCAyMzksIDEwLCAxNCwgCi0gICAgMjM3LCAyMzgsIDEwLCAxNCwgMjM3LCAyMzcsIDEwLCAxNCwgMjM3LCAyMzYsIDEwLCAxNCwgMjM3LCAyMzUsIDEwLCAxNCwgCi0gICAgMjM3LCAyMzQsIDEwLCAxNCwgMjM3LCAyMzMsIDEwLCAxNCwgMjM3LCAyMzIsIDEwLCAxNCwgMjM3LCAyMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAyMzAsIDEwLCAxNCwgMjM3LCAyMjksIDEwLCAxNCwgMjM3LCAyMjgsIDEwLCAxNCwgMjM3LCAyMjcsIDEwLCAxNCwgCi0gICAgMjM3LCAyMjYsIDEwLCAxNCwgMjM3LCAyMjUsIDEwLCAxNCwgMjM3LCAyMjQsIDEwLCAxNCwgMjM3LCAyMjMsIDEwLCAxNCwgCi0gICAgMjM3LCAyMjIsIDEwLCAxNCwgMjM3LCAyMjEsIDEwLCAxNCwgMjM3LCAyMjAsIDEwLCAxNCwgMjM3LCAyMTksIDEwLCAxNCwgCi0gICAgMjM3LCAyMTgsIDEwLCAxNCwgMjM3LCAyMTcsIDEwLCAxNCwgMjM3LCAyMTYsIDEwLCAxNCwgMjM3LCAyMTUsIDEwLCAxNCwgCi0gICAgMjM3LCAyMTQsIDEwLCAxNCwgMjM3LCAyMTMsIDEwLCAxNCwgMjM3LCAyMTIsIDEwLCAxNCwgMjM3LCAyMTEsIDEwLCAxNCwgCi0gICAgMjM3LCAyMTAsIDEwLCAxNCwgMjM3LCAyMDksIDEwLCAxNCwgMjM3LCAyMDgsIDEwLCAxNCwgMjM3LCAyMDcsIDEwLCAxNCwgCi0gICAgMjM3LCAyMDYsIDEwLCAxNCwgMjM3LCAyMDUsIDEwLCAxNCwgMjM3LCAyMDQsIDEwLCAxNCwgMjM3LCAyMDMsIDEwLCAxNCwgCi0gICAgMjM3LCAyMDIsIDEwLCAxNCwgMjM3LCAyMDEsIDEwLCAxNCwgMjM3LCAyMDAsIDEwLCAxNCwgMjM3LCAxOTksIDEwLCAxNCwgCi0gICAgMjM3LCAxOTgsIDEwLCAxNCwgMjM3LCAxOTcsIDEwLCAxNCwgMjM3LCAxOTYsIDEwLCAxNCwgMjM3LCAxOTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxOTQsIDEwLCAxNCwgMjM3LCAxOTMsIDEwLCAxNCwgMjM3LCAxOTIsIDEwLCAxNCwgMjM3LCAxOTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxOTAsIDEwLCAxNCwgMjM3LCAxODksIDEwLCAxNCwgMjM3LCAxODgsIDEwLCAxNCwgMjM3LCAxODcsIDEwLCAxNCwgCi0gICAgMjM3LCAxODYsIDEwLCAxNCwgMjM3LCAxODUsIDEwLCAxNCwgMjM3LCAxODQsIDEwLCAxNCwgMjM3LCAxODMsIDEwLCAxNCwgCi0gICAgMjM3LCAxODIsIDEwLCAxNCwgMjM3LCAxODEsIDEwLCAxNCwgMjM3LCAxODAsIDEwLCAxNCwgMjM3LCAxNzksIDEwLCAxNCwgCi0gICAgMjM3LCAxNzgsIDEwLCAxNCwgMjM3LCAxNzcsIDEwLCAxNCwgMjM3LCAxNzYsIDEwLCAxNCwgMjM3LCAxNzUsIDEwLCAxNCwgCi0gICAgMjM3LCAxNzQsIDEwLCAxNCwgMjM3LCAxNzMsIDEwLCAxNCwgMjM3LCAxNzIsIDEwLCAxNCwgMjM3LCAxNzEsIDEwLCAxNCwgCi0gICAgMjM3LCAxNzAsIDEwLCAxNCwgMjM3LCAxNjksIDEwLCAxNCwgMjM3LCAxNjgsIDEwLCAxNCwgMjM3LCAxNjcsIDEwLCAxNCwgCi0gICAgMjM3LCAxNjYsIDEwLCAxNCwgMjM3LCAxNjUsIDEwLCAxNCwgMjM3LCAxNjQsIDEwLCAxNCwgMjM3LCAxNjMsIDEwLCAxNCwgCi0gICAgMjM3LCAxNjIsIDEwLCAxNCwgMjM3LCAxNjEsIDEwLCAxNCwgMjM3LCAxNjAsIDEwLCAxNCwgMjM3LCAxNTksIDEwLCAxNCwgCi0gICAgMjM3LCAxNTgsIDEwLCAxNCwgMjM3LCAxNTcsIDEwLCAxNCwgMjM3LCAxNTYsIDEwLCAxNCwgMjM3LCAxNTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxNTQsIDEwLCAxNCwgMjM3LCAxNTMsIDEwLCAxNCwgMjM3LCAxNTIsIDEwLCAxNCwgMjM3LCAxNTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxNTAsIDEwLCAxNCwgMjM3LCAxNDksIDEwLCAxNCwgMjM3LCAxNDgsIDEwLCAxNCwgMjM3LCAxNDcsIDEwLCAxNCwgCi0gICAgMjM3LCAxNDYsIDEwLCAxNCwgMjM3LCAxNDUsIDEwLCAxNCwgMjM3LCAxNDQsIDEwLCAxNCwgMjM3LCAxNDMsIDEwLCAxNCwgCi0gICAgMjM3LCAxNDIsIDEwLCAxNCwgMjM3LCAxNDEsIDEwLCAxNCwgMjM3LCAxNDAsIDEwLCAxNCwgMjM3LCAxMzksIDEwLCAxNCwgCi0gICAgMjM3LCAxMzgsIDEwLCAxNCwgMjM3LCAxMzcsIDEwLCAxNCwgMjM3LCAxMzYsIDEwLCAxNCwgMjM3LCAxMzUsIDEwLCAxNCwgCi0gICAgMjM3LCAxMzQsIDEwLCAxNCwgMjM3LCAxMzMsIDEwLCAxNCwgMjM3LCAxMzIsIDEwLCAxNCwgMjM3LCAxMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAxMzAsIDEwLCAxNCwgMjM3LCAxMjksIDEwLCAxNCwgMjM3LCAxMjgsIDEwLCAxNCwgMjM3LCAxMjcsIDEwLCAxNCwgCi0gICAgMjM3LCAxMjYsIDEwLCAxNCwgMjM3LCAxMjUsIDEwLCAxNCwgMjM3LCAxMjQsIDEwLCAxNCwgMjM3LCAxMjMsIDEwLCAxNCwgCi0gICAgMjM3LCAxMjIsIDEwLCAxNCwgMjM3LCAxMjEsIDEwLCAxNCwgMjM3LCAxMjAsIDEwLCAxNCwgMjM3LCAxMTksIDEwLCAxNCwgCi0gICAgMjM3LCAxMTgsIDEwLCAxNCwgMjM3LCAxMTcsIDEwLCAxNCwgMjM3LCAxMTYsIDEwLCAxNCwgMjM3LCAxMTUsIDEwLCAxNCwgCi0gICAgMjM3LCAxMTQsIDEwLCAxNCwgMjM3LCAxMTMsIDEwLCAxNCwgMjM3LCAxMTIsIDEwLCAxNCwgMjM3LCAxMTEsIDEwLCAxNCwgCi0gICAgMjM3LCAxMTAsIDEwLCAxNCwgMjM3LCAxMDksIDEwLCAxNCwgMjM3LCAxMDgsIDEwLCAxNCwgMjM3LCAxMDcsIDEwLCAxNCwgCi0gICAgMjM3LCAxMDYsIDEwLCAxNCwgMjM3LCAxMDUsIDEwLCAxNCwgMjM3LCAxMDQsIDEwLCAxNCwgMjM3LCAxMDMsIDEwLCAxNCwgCi0gICAgMjM3LCAxMDIsIDEwLCAxNCwgMjM3LCAxMDEsIDEwLCAxNCwgMjM3LCAxMDAsIDEwLCAxNCwgMjM3LCA5OSwgMTAsIDE0LCAKLSAgICAyMzcsIDk4LCAxMCwgMTQsIDIzNywgOTcsIDEwLCAxNCwgMjM3LCA5NiwgMTAsIDE0LCAyMzcsIDk1LCAxMCwgMTQsIDIzNywgCi0gICAgOTQsIDEwLCAxNCwgMjM3LCA5MywgMTAsIDE0LCAyMzcsIDkyLCAxMCwgMTQsIDIzNywgOTEsIDEwLCAxNCwgMjM3LCA5MCwgCi0gICAgMTAsIDE0LCAyMzcsIDg5LCAxMCwgMTQsIDIzNywgODgsIDEwLCAxNCwgMjM3LCA4NywgMTAsIDE0LCAyMzcsIDg2LCAxMCwgCi0gICAgMTQsIDIzNywgODUsIDEwLCAxNCwgMjM3LCA4NCwgMTAsIDE0LCAyMzcsIDgzLCAxMCwgMTQsIDIzNywgODIsIDEwLCAxNCwgCi0gICAgMjM3LCA4MSwgMTAsIDE0LCAyMzcsIDgwLCAxMCwgMTQsIDIzNywgNzksIDEwLCAxNCwgMjM3LCA3OCwgMTAsIDE0LCAyMzcsIAotICAgIDc3LCAxMCwgMTQsIDIzNywgNzYsIDEwLCAxNCwgMjM3LCA3NSwgMTAsIDE0LCAyMzcsIDc0LCAxMCwgMTQsIDIzNywgNzMsIAotICAgIDEwLCAxNCwgMjM3LCA3MiwgMTAsIDE0LCAyMzcsIDcxLCAxMCwgMTQsIDIzNywgNzAsIDEwLCAxNCwgMjM3LCA2OSwgMTAsIAotICAgIDE0LCAyMzcsIDY4LCAxMCwgMTQsIDIzNywgNjcsIDEwLCAxNCwgMjM3LCA2NiwgMTAsIDE0LCAyMzcsIDY1LCAxMCwgMTQsIAotICAgIDIzNywgNjQsIDEwLCAxNCwgMjM3LCA2MywgMTAsIDE0LCAyMzcsIDYyLCAxMCwgMTQsIDIzNywgNjEsIDEwLCAxNCwgMjM3LCAKLSAgICA2MCwgMTAsIDE0LCAyMzcsIDU5LCAxMCwgMTQsIDIzNywgNTgsIDEwLCAxNCwgMjM3LCA1NywgMTAsIDE0LCAyMzcsIDU2LCAKLSAgICAxMCwgMTQsIDIzNywgNTUsIDEwLCAxNCwgMjM3LCA1NCwgMTAsIDE0LCAyMzcsIDUzLCAxMCwgMTQsIDIzNywgNTIsIDEwLCAKLSAgICAxNCwgMjM3LCA1MSwgMTAsIDE0LCAyMzcsIDUwLCAxMCwgMTQsIDIzNywgNDksIDEwLCAxNCwgMjM3LCA0OCwgMTAsIDE0LCAKLSAgICAyMzcsIDQ3LCAxMCwgMTQsIDIzNywgNDYsIDEwLCAxNCwgMjM3LCA0NSwgMTAsIDE0LCAyMzcsIDQ0LCAxMCwgMTQsIDIzNywgCi0gICAgNDMsIDEwLCAxNCwgMjM3LCA0MiwgMTAsIDE0LCAyMzcsIDQxLCAxMCwgMTQsIDIzNywgNDAsIDEwLCAxNCwgMjM3LCAzOSwgCi0gICAgMTAsIDE0LCAyMzcsIDM4LCAxMCwgMTQsIDIzNywgMzcsIDEwLCAxNCwgMjM3LCAzNiwgMTAsIDE0LCAyMzcsIDM1LCAxMCwgCi0gICAgMTQsIDIzNywgMzQsIDEwLCAxNCwgMjM3LCAzMywgMTAsIDE0LCAyMzcsIDMyLCAxMCwgMTQsIDIzNywgMzEsIDEwLCAxNCwgCi0gICAgMjM3LCAzMCwgMTAsIDE0LCAyMzcsIDI5LCAxMCwgMTQsIDIzNywgMjgsIDEwLCAxNCwgMjM3LCAyNywgMTAsIDE0LCAyMzcsIAotICAgIDI2LCAxMCwgMTQsIDIzNywgMjUsIDEwLCAxNCwgMjM3LCAyNCwgMTAsIDE0LCAyMzcsIDIzLCAxMCwgMTQsIDIzNywgMjIsIAotICAgIDEwLCAxNCwgMjM3LCAyMSwgMTAsIDE0LCAyMzcsIDIwLCAxMCwgMTQsIDIzNywgMTksIDEwLCAxNCwgMjM3LCAxOCwgMTAsIAotICAgIDE0LCAyMzcsIDE3LCAxMCwgMTQsIDIzNywgMTYsIDEwLCAxNCwgMjM3LCAxNSwgMTAsIDE0LCAyMzcsIDE0LCAxMCwgMTQsIAotICAgIDIzNywgMTMsIDEwLCAxNCwgMjM3LCAxMiwgMTAsIDE0LCAyMzcsIDExLCAxMCwgMTQsIDIzNywgMTAsIDEwLCAxNCwgMjM3LCAKLSAgICA5LCAxMCwgMTQsIDIzNywgOCwgMTAsIDE0LCAyMzcsIDcsIDEwLCAxNCwgMjM3LCA2LCAxMCwgMTQsIDIzNywgNSwgMTAsIAotICAgIDE0LCAyMzcsIDQsIDEwLCAxNCwgMjM3LCAzLCAxMCwgMTQsIDIzNywgMiwgMTAsIDE0LCAyMzcsIDEsIDEwLCAxNCwgMjM3LCAKLSAgICAwLCAxMCwgMTQsIDIzNiwgMjU1LCAxMCwgMTQsIDIzNiwgMjU0LCAxMCwgMTQsIDIzNiwgMjUzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjUyLCAxMCwgMTQsIDIzNiwgMjUxLCAxMCwgMTQsIDIzNiwgMjUwLCAxMCwgMTQsIDIzNiwgMjQ5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjQ4LCAxMCwgMTQsIDIzNiwgMjQ3LCAxMCwgMTQsIDIzNiwgMjQ2LCAxMCwgMTQsIDIzNiwgMjQ1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjQ0LCAxMCwgMTQsIDIzNiwgMjQzLCAxMCwgMTQsIDIzNiwgMjQyLCAxMCwgMTQsIDIzNiwgMjQxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjQwLCAxMCwgMTQsIDIzNiwgMjM5LCAxMCwgMTQsIDIzNiwgMjM4LCAxMCwgMTQsIDIzNiwgMjM3LCAxMCwgMTQsIDIzNiwgCi0gICAgMjM2LCAxMCwgMTQsIDIzNiwgMjM1LCAxMCwgMTQsIDIzNiwgMjM0LCAxMCwgMTQsIDIzNiwgMjMzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjMyLCAxMCwgMTQsIDIzNiwgMjMxLCAxMCwgMTQsIDIzNiwgMjMwLCAxMCwgMTQsIDIzNiwgMjI5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjI4LCAxMCwgMTQsIDIzNiwgMjI3LCAxMCwgMTQsIDIzNiwgMjI2LCAxMCwgMTQsIDIzNiwgMjI1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjI0LCAxMCwgMTQsIDIzNiwgMjIzLCAxMCwgMTQsIDIzNiwgMjIyLCAxMCwgMTQsIDIzNiwgMjIxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjIwLCAxMCwgMTQsIDIzNiwgMjE5LCAxMCwgMTQsIDIzNiwgMjE4LCAxMCwgMTQsIDIzNiwgMjE3LCAxMCwgMTQsIDIzNiwgCi0gICAgMjE2LCAxMCwgMTQsIDIzNiwgMjE1LCAxMCwgMTQsIDIzNiwgMjE0LCAxMCwgMTQsIDIzNiwgMjEzLCAxMCwgMTQsIDIzNiwgCi0gICAgMjEyLCAxMCwgMTQsIDIzNiwgMjExLCAxMCwgMTQsIDIzNiwgMjEwLCAxMCwgMTQsIDIzNiwgMjA5LCAxMCwgMTQsIDIzNiwgCi0gICAgMjA4LCAxMCwgMTQsIDIzNiwgMjA3LCAxMCwgMTQsIDIzNiwgMjA2LCAxMCwgMTQsIDIzNiwgMjA1LCAxMCwgMTQsIDIzNiwgCi0gICAgMjA0LCAxMCwgMTQsIDIzNiwgMjAzLCAxMCwgMTQsIDIzNiwgMjAyLCAxMCwgMTQsIDIzNiwgMjAxLCAxMCwgMTQsIDIzNiwgCi0gICAgMjAwLCAxMCwgMTQsIDIzNiwgMTk5LCAxMCwgMTQsIDIzNiwgMTk4LCAxMCwgMTQsIDIzNiwgMTk3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTk2LCAxMCwgMTQsIDIzNiwgMTk1LCAxMCwgMTQsIDIzNiwgMTk0LCAxMCwgMTQsIDIzNiwgMTkzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTkyLCAxMCwgMTQsIDIzNiwgMTkxLCAxMCwgMTQsIDIzNiwgMTkwLCAxMCwgMTQsIDIzNiwgMTg5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTg4LCAxMCwgMTQsIDIzNiwgMTg3LCAxMCwgMTQsIDIzNiwgMTg2LCAxMCwgMTQsIDIzNiwgMTg1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTg0LCAxMCwgMTQsIDIzNiwgMTgzLCAxMCwgMTQsIDIzNiwgMTgyLCAxMCwgMTQsIDIzNiwgMTgxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTgwLCAxMCwgMTQsIDIzNiwgMTc5LCAxMCwgMTQsIDIzNiwgMTc4LCAxMCwgMTQsIDIzNiwgMTc3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTc2LCAxMCwgMTQsIDIzNiwgMTc1LCAxMCwgMTQsIDIzNiwgMTc0LCAxMCwgMTQsIDIzNiwgMTczLCAxMCwgMTQsIDIzNiwgCi0gICAgMTcyLCAxMCwgMTQsIDIzNiwgMTcxLCAxMCwgMTQsIDIzNiwgMTcwLCAxMCwgMTQsIDIzNiwgMTY5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTY4LCAxMCwgMTQsIDIzNiwgMTY3LCAxMCwgMTQsIDIzNiwgMTY2LCAxMCwgMTQsIDIzNiwgMTY1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTY0LCAxMCwgMTQsIDIzNiwgMTYzLCAxMCwgMTQsIDIzNiwgMTYyLCAxMCwgMTQsIDIzNiwgMTYxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTYwLCAxMCwgMTQsIDIzNiwgMTU5LCAxMCwgMTQsIDIzNiwgMTU4LCAxMCwgMTQsIDIzNiwgMTU3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTU2LCAxMCwgMTQsIDIzNiwgMTU1LCAxMCwgMTQsIDIzNiwgMTU0LCAxMCwgMTQsIDIzNiwgMTUzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTUyLCAxMCwgMTQsIDIzNiwgMTUxLCAxMCwgMTQsIDIzNiwgMTUwLCAxMCwgMTQsIDIzNiwgMTQ5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTQ4LCAxMCwgMTQsIDIzNiwgMTQ3LCAxMCwgMTQsIDIzNiwgMTQ2LCAxMCwgMTQsIDIzNiwgMTQ1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTQ0LCAxMCwgMTQsIDIzNiwgMTQzLCAxMCwgMTQsIDIzNiwgMTQyLCAxMCwgMTQsIDIzNiwgMTQxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTQwLCAxMCwgMTQsIDIzNiwgMTM5LCAxMCwgMTQsIDIzNiwgMTM4LCAxMCwgMTQsIDIzNiwgMTM3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTM2LCAxMCwgMTQsIDIzNiwgMTM1LCAxMCwgMTQsIDIzNiwgMTM0LCAxMCwgMTQsIDIzNiwgMTMzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTMyLCAxMCwgMTQsIDIzNiwgMTMxLCAxMCwgMTQsIDIzNiwgMTMwLCAxMCwgMTQsIDIzNiwgMTI5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTI4LCAxMCwgMTQsIDIzNiwgMTI3LCAxMCwgMTQsIDIzNiwgMTI2LCAxMCwgMTQsIDIzNiwgMTI1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTI0LCAxMCwgMTQsIDIzNiwgMTIzLCAxMCwgMTQsIDIzNiwgMTIyLCAxMCwgMTQsIDIzNiwgMTIxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTIwLCAxMCwgMTQsIDIzNiwgMTE5LCAxMCwgMTQsIDIzNiwgMTE4LCAxMCwgMTQsIDIzNiwgMTE3LCAxMCwgMTQsIDIzNiwgCi0gICAgMTE2LCAxMCwgMTQsIDIzNiwgMTE1LCAxMCwgMTQsIDIzNiwgMTE0LCAxMCwgMTQsIDIzNiwgMTEzLCAxMCwgMTQsIDIzNiwgCi0gICAgMTEyLCAxMCwgMTQsIDIzNiwgMTExLCAxMCwgMTQsIDIzNiwgMTEwLCAxMCwgMTQsIDIzNiwgMTA5LCAxMCwgMTQsIDIzNiwgCi0gICAgMTA4LCAxMCwgMTQsIDIzNiwgMTA3LCAxMCwgMTQsIDIzNiwgMTA2LCAxMCwgMTQsIDIzNiwgMTA1LCAxMCwgMTQsIDIzNiwgCi0gICAgMTA0LCAxMCwgMTQsIDIzNiwgMTAzLCAxMCwgMTQsIDIzNiwgMTAyLCAxMCwgMTQsIDIzNiwgMTAxLCAxMCwgMTQsIDIzNiwgCi0gICAgMTAwLCAxMCwgMTQsIDIzNiwgOTksIDEwLCAxNCwgMjM2LCA5OCwgMTAsIDE0LCAyMzYsIDk3LCAxMCwgMTQsIDIzNiwgOTYsIAotICAgIDEwLCAxNCwgMjM2LCA5NSwgMTAsIDE0LCAyMzYsIDk0LCAxMCwgMTQsIDIzNiwgOTMsIDEwLCAxNCwgMjM2LCA5MiwgMTAsIAotICAgIDE0LCAyMzYsIDkxLCAxMCwgMTQsIDIzNiwgOTAsIDEwLCAxNCwgMjM2LCA4OSwgMTAsIDE0LCAyMzYsIDg4LCAxMCwgMTQsIAotICAgIDIzNiwgODcsIDEwLCAxNCwgMjM2LCA4NiwgMTAsIDE0LCAyMzYsIDg1LCAxMCwgMTQsIDIzNiwgODQsIDEwLCAxNCwgMjM2LCAKLSAgICA4MywgMTAsIDE0LCAyMzYsIDgyLCAxMCwgMTQsIDIzNiwgODEsIDEwLCAxNCwgMjM2LCA4MCwgMTAsIDE0LCAyMzYsIDc5LCAKLSAgICAxMCwgMTQsIDIzNiwgNzgsIDEwLCAxNCwgMjM2LCA3NywgMTAsIDE0LCAyMzYsIDc2LCAxMCwgMTQsIDIzNiwgNzUsIDEwLCAKLSAgICAxNCwgMjM2LCA3NCwgMTAsIDE0LCAyMzYsIDczLCAxMCwgMTQsIDIzNiwgNzIsIDcsIDQsIDI3LCAyNDQsIDEzMywgNywgNCwgCi0gICAgMjcsIDI0NCwgMTI5LCA3LCA0LCAyNywgMjQ0LCA4NCwgNywgNCwgMjcsIDI0NCwgMTMyLCA3LCA0LCAyNywgMjQ0LCAxMzEsIAotICAgIDcsIDQsIDI3LCAyMDAsIDIyMiwgOTQsIDIxNywgMTUzLCA3LCA0LCAyNywgMjE4LCAxNzAsIDE1MCwgNCwgMjcsIDIzMSwgCi0gICAgNjQsIDIyOCwgNDQsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDI0NSwgMjIxLCAxNTAsIDQsIDI3LCAyMzEsIDY0LCAyMzUsIAotICAgIDIzNCwgMTUwLCA0LCAyNywgMjEzLCAxODAsIDIyOCwgNDQsIDE1MCwgNCwgMjcsIDIzMSwgNjQsIDIxMSwgMTYwLCA5NCwgMSwgCi0gICAgMjEwLCAyMzQsIDIsIDI0MSwgMTY1LCA5NCwgMjI1LCAxNCwgMjM1LCA1NiwgMjE0LCAxMSwgOTQsIDI3LCAyMTEsIDYsIAotICAgIDIxMCwgMjM0LCAyMTAsIDIzNCwgMjI1LCAyNDMsIDk0LCAxLCAyNTQsIDE0NywgMjUzLCAxNzAsIDk0LCAxLCAyMTEsIDI0NywgCi0gICAgMjU0LCAxNzksIDk0LCAxLCAyMTEsIDI0NywgMjQ4LCAxOTcsIDk0LCAxLCAyMTEsIDI0NywgMjQxLCAyNDUsIDk0LCAxLCAKLSAgICAyMTEsIDI0NywgMjM1LCAwLCA5NCwgMSwgMjExLCAyNDcsIDIzMywgMTAwLCA5NCwgMSwgMjExLCAyNDcsIDQwLCAyMzEsIAotICAgIDcwLCA5NCwgMSwgMjExLCAyNDcsIDIyMywgNzAsIDk0LCAxLCAyMTEsIDI0NywgMjE3LCAzOSwgOTQsIDEsIDI1NCwgMTQ3LCAKLSAgICA5NiwgNTAsIDk0LCAxLCAyMjAsIDIzLCAyLCAyMjAsIDIzLCAyNDcsIDEyOCwgOTQsIDEsIDIyMCwgMjMsIDIsIDIxOSwgCi0gICAgMTYxLCAyNDcsIDEyOCwgOTQsIDEsIDIyMCwgMjMsIDIsIDI0OCwgMjE2LCAyMiwgMjIwLCAyMywgMjQ3LCAxMjgsIDk0LCAxLCAKLSAgICAyMjAsIDIzLCAyLCAyNDgsIDIxNiwgMjIsIDIxOSwgMTYxLCAyNDcsIDEyOCwgOTQsIDEsIDEwOSwgMiwgMjI1LCAyNDMsIAotICAgIDk0LCAxLCAxMDksIDIsIDIyNCwgNzksIDk0LCAxLCAxMDksIDIsIDIzMSwgMTc2LCA5NCwgMSwgMjUyLCAzNywgMiwgMjQ4LCAKLSAgICAyMTUsIDk0LCAxLCAyNDIsIDIwOSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyNDgsIDE5OCwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAKLSAgICAyNDEsIDI0NiwgMiwgMjMxLCAxNzYsIDk0LCAxLCAyMTQsIDQsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjEwLCA5OCwgMiwgCi0gICAgMjQ4LCAyMTUsIDk0LCAxLCAyMTYsIDIzMiwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTAsIDIzNCwgMiwgMjQ4LCAyMTUsIDk0LCAKLSAgICAxLCA0MCwgMjM1LCAxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIzNSwgMSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMzMsIDEwMSwgCi0gICAgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMzEsIDcxLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIyNywgMTk5LCAyLCAyNDgsIDIxNSwgCi0gICAgOTQsIDEsIDIyMSwgMjUyLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDQwLCAyMjUsIDIyNSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAKLSAgICAyMjUsIDIyNSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMTUsIDE4MSwgMiwgMjQ4LCAyMTUsIDk0LCAxLCAyMjQsIDQzLCAyLCAKLSAgICAyNDgsIDIxNSwgOTQsIDEsIDIyMywgNzEsIDIsIDI0OCwgMjE1LCA5NCwgMSwgMjIwLCAyMywgMiwgMjQ4LCAyMTUsIDk0LCAKLSAgICAxLCAyMTcsIDQwLCAyLCAyNDgsIDIxNSwgOTQsIDEsIDIxNCwgNCwgMiwgMjQxLCA2OCwgOTQsIDEsIDI1MiwgMzcsIDIsIAotICAgIDIyMywgMTcyLCA5NCwgMSwgMjM1LCAxLCAyLCAyMjMsIDE3MiwgOTQsIDEsIDIyNSwgMjI1LCAyLCAyMjMsIDE3MiwgOTQsIAotICAgIDI3LCAxMDksIDIzMywgMTAwLCA5LCAxLCAxMDksIDIxMiwgNDcsIDUzLCAxNywgOSwgMSwgMTA5LCAyMTIsIDQ3LCA0MCwgCi0gICAgMTcsIDksIDEsIDI1MiwgNzMsIDUzLCAxNywgOSwgMSwgMjUyLCA3MywgNDAsIDE3LCA5LCAxLCAyNTIsIDczLCA2NSwgMTcsIAotICAgIDksIDEsIDI1MiwgNzMsIDE0NywgMTcsIDksIDEsIDIyNSwgMjA5LCA1MywgMTcsIDksIDEsIDIyNSwgMjA5LCA0MCwgMTcsIAotICAgIDksIDEsIDIyNSwgMjA5LCA2NSwgMTcsIDksIDEsIDIyNSwgMjA5LCAxNDcsIDE3LCA5LCAxLCAyNTIsIDYxLCA1MywgMTcsIAotICAgIDksIDEsIDI1MiwgNjEsIDQwLCAxNywgOSwgMSwgMjUyLCA2MSwgNjUsIDE3LCA5LCAxLCAyNTIsIDYxLCAxNDcsIDE3LCA5LCAKLSAgICAxLCAyMTUsIDE0OCwgNTMsIDE3LCA5LCAxLCAyMTUsIDE0OCwgNDAsIDE3LCA5LCAxLCAyMTUsIDE0OCwgNjUsIDE3LCA5LCAKLSAgICAxLCAyMTUsIDE0OCwgMTQ3LCAxNywgOSwgMSwgMjE3LCA3LCA1MywgMTcsIDksIDEsIDIxNywgNywgNDAsIDE3LCA5LCAxLCAKLSAgICAyMTcsIDcsIDY1LCAxNywgOSwgMSwgMjE3LCA3LCAxNDcsIDE3LCA5LCAxLCAyMTUsIDE1MCwgNTMsIDE3LCA5LCAxLCAyMTUsIAotICAgIDE1MCwgNDAsIDE3LCA5LCAxLCAyMTUsIDE1MCwgNjUsIDE3LCA5LCAxLCAyMTUsIDE1MCwgMTQ3LCAxNywgOSwgMSwgMjEzLCAKLSAgICAyNDksIDUzLCAxNywgOSwgMSwgMjEzLCAyNDksIDQwLCAxNywgOSwgMSwgMjEzLCAyNDksIDY1LCAxNywgOSwgMSwgMjEzLCAKLSAgICAyNDksIDE0NywgMTcsIDksIDEsIDIyNSwgMjA3LCA1MywgMTcsIDksIDEsIDIyNSwgMjA3LCA0MCwgMTcsIDksIDEsIDIyNSwgCi0gICAgMjA3LCA2NSwgMTcsIDksIDEsIDIyNSwgMjA3LCAxNDcsIDE3LCA5LCAxLCAyNDYsIDUyLCA1MywgMTcsIDksIDEsIDI0NiwgCi0gICAgNTIsIDQwLCAxNywgOSwgMSwgMjQ2LCA1MiwgNjUsIDE3LCA5LCAxLCAyNDYsIDUyLCAxNDcsIDE3LCA5LCAxLCAyMjcsIAotICAgIDE1OCwgNTMsIDE3LCA5LCAxLCAyMjcsIDE1OCwgNDAsIDE3LCA5LCAxLCAyMjcsIDE1OCwgNjUsIDE3LCA5LCAxLCAyMjcsIAotICAgIDE1OCwgMTQ3LCAxNywgOSwgMSwgMjE3LCAyOCwgNTMsIDE3LCA5LCAxLCAyMTcsIDI4LCA0MCwgMTcsIDksIDEsIDIxNywgCi0gICAgMjgsIDY1LCAxNywgOSwgMSwgMjE3LCAyOCwgMTQ3LCAxNywgOSwgMSwgMjE3LCAyNiwgNTMsIDE3LCA5LCAxLCAyMTcsIDI2LCAKLSAgICA0MCwgMTcsIDksIDEsIDIxNywgMjYsIDY1LCAxNywgOSwgMSwgMjE3LCAyNiwgMTQ3LCAxNywgOSwgMSwgMjQ4LCAxNDEsIAotICAgIDUzLCAxNywgOSwgMSwgMjQ4LCAxNDEsIDQwLCAxNywgOSwgMSwgMjQ4LCAyMTAsIDUzLCAxNywgOSwgMSwgMjQ4LCAyMTAsIAotICAgIDQwLCAxNywgOSwgMSwgMjQ2LCA3OSwgNTMsIDE3LCA5LCAxLCAyNDYsIDc5LCA0MCwgMTcsIDksIDEsIDI0OCwgMTM5LCA1MywgCi0gICAgMTcsIDksIDEsIDI0OCwgMTM5LCA0MCwgMTcsIDksIDEsIDIzNSwgMTI3LCA1MywgMTcsIDksIDEsIDIzNSwgMTI3LCA0MCwgCi0gICAgMTcsIDksIDEsIDIyMiwgMTc0LCA1MywgMTcsIDksIDEsIDIyMiwgMTc0LCA0MCwgMTcsIDksIDEsIDIzNCwgMTgxLCA1MywgCi0gICAgMTcsIDksIDEsIDIzNCwgMTgxLCA0MCwgMTcsIDksIDEsIDIzNCwgMTgxLCA2NSwgMTcsIDksIDEsIDIzNCwgMTgxLCAxNDcsIAotICAgIDE3LCA5LCAxLCAyNDMsIDEzMCwgNTMsIDE3LCA5LCAxLCAyNDMsIDEzMCwgNDAsIDE3LCA5LCAxLCAyNDMsIDEzMCwgNjUsIAotICAgIDE3LCA5LCAxLCAyNDMsIDEzMCwgMTQ3LCAxNywgOSwgMSwgMjQyLCAxMDksIDUzLCAxNywgOSwgMSwgMjQyLCAxMDksIDQwLCAKLSAgICAxNywgOSwgMSwgMjQyLCAxMDksIDY1LCAxNywgOSwgMSwgMjQyLCAxMDksIDE0NywgMTcsIDksIDEsIDIyOSwgOCwgNTMsIAotICAgIDE3LCA5LCAxLCAyMjksIDgsIDQwLCAxNywgOSwgMSwgMjI5LCA4LCA2NSwgMTcsIDksIDEsIDIyOSwgOCwgMTQ3LCAxNywgOSwgCi0gICAgMSwgMjI4LCA2OCwgMjQyLCAyMjYsIDUzLCAxNywgOSwgMSwgMjI4LCA2OCwgMjQyLCAyMjYsIDQwLCAxNywgOSwgMSwgMjIyLCAKLSAgICAyMTcsIDUzLCAxNywgOSwgMSwgMjIyLCAyMTcsIDQwLCAxNywgOSwgMSwgMjIyLCAyMTcsIDY1LCAxNywgOSwgMSwgMjIyLCAKLSAgICAyMTcsIDE0NywgMTcsIDksIDEsIDI0MSwgMjI2LCAyLCA3NywgNzIsIDUzLCAxNywgOSwgMSwgMjQxLCAyMjYsIDIsIDc3LCAKLSAgICA3MiwgNDAsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDUzLCAxNywgOSwgMSwgMjQxLCAyMjYsIDI0MiwgMTc5LCAKLSAgICA0MCwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDIsIDE3OSwgNjUsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQyLCAxNzksIDE0NywgCi0gICAgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgMjQ3LCAxNTAsIDQwLCAxNywgCi0gICAgOSwgMSwgMjQxLCAyMjYsIDI0NywgMTUwLCA2NSwgMTcsIDksIDEsIDI0MSwgMjI2LCAyNDcsIDE1MCwgMTQ3LCAxNywgOSwgCi0gICAgMSwgNzcsIDI1MiwgMTQxLCA1MywgMTcsIDksIDEsIDc3LCAyNTIsIDE0MSwgNDAsIDE3LCA5LCAxLCA3NywgMjUyLCAxNDEsIAotICAgIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgNzcsIDI1MiwgMTQxLCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDE2LCA1OSwgCi0gICAgNDgsIDksIDE2LCA1OSwgNTEsIDksIDE2LCAxMTMsIDE3MCwgNDgsIDksIDE2LCAxMTMsIDE3MCwgNTEsIDksIDE2LCAxMzQsIAotICAgIDE3MCwgNDgsIDksIDE2LCAxMzQsIDE3MCwgNTEsIDksIDE2LCAxMzQsIDE3MCwgMjI1LCAxMCwgMjQ2LCAxMTIsIDQ4LCA5LCAKLSAgICAxNiwgMTM0LCAxNzAsIDIyNSwgMTAsIDI0NiwgMTEyLCA1MSwgOSwgMTYsIDI0NCwgMTksIDE3MCwgNDgsIDksIDE2LCAyNDQsIAotICAgIDE5LCAxNzAsIDUxLCA5LCAxNiwgNTIsIDY3LCAyNTIsIDE0OSwgNTEsIDksIDE2LCAxMTMsIDE3MCwgMjEzLCAxODksIDQ4LCAKLSAgICA5LCAxNiwgMTEzLCAxNzAsIDIxMywgMTg5LCA1MSwgOSwgMTYsIDIyMiwgMjM2LCA5LCAxNiwgNCwgMjE3LCA4MiwgNDgsIDksIAotICAgIDE2LCA0LCAyMTcsIDgyLCA1MSwgOSwgMSwgMjI5LCA4NSwgNTMsIDE3LCA5LCAxLCAyMjksIDg1LCA0MCwgMTcsIDksIDEsIAotICAgIDIyOSwgODUsIDY1LCAxNywgOSwgMSwgMjI5LCA4NSwgMTQ3LCAxNywgOSwgMSwgMTA0LCA1MywgMTcsIDksIDEsIDEwNCwgCi0gICAgNDAsIDE3LCA5LCAxLCAyMjYsIDIzOSwgNTMsIDE3LCA5LCAxLCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAxLCAyMTAsIDIxMywgCi0gICAgNTMsIDE3LCA5LCAxLCAyMTAsIDIxMywgNDAsIDE3LCA5LCAxLCAxMDQsIDIsIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgMjE0LCAKLSAgICAwLCA1MywgMTcsIDksIDEsIDIxNCwgMCwgNDAsIDE3LCA5LCAxLCAyMzQsIDc5LCAyMjYsIDIzOSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDc5LCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAxLCAyMzQsIDc5LCAyMTAsIDIxMywgNTMsIDE3LCA5LCAxLCAyMzQsIAotICAgIDc5LCAyMTAsIDIxMywgNDAsIDE3LCA5LCAxLCAxNjAsIDUzLCAxNywgOSwgMSwgMTYwLCA0MCwgMTcsIDksIDEsIDE2MCwgCi0gICAgNjUsIDE3LCA5LCAxLCAxNjAsIDE0NywgMTcsIDksIDEsIDIxNCwgMjA3LCAyMzQsIDE5MiwgMjM0LCA3OSwgMTA5LCAyMzEsIAotICAgIDE5OCwgNjUsIDE3LCA5LCAxLCAyMTQsIDIwNywgMjM0LCAxOTIsIDIzNCwgNzksIDEwOSwgMjMxLCAxOTgsIDE0NywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCA0MCwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjU0LCAyNTMsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAKLSAgICAyNTQsIDI1MywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIxMiwgMzEsIDUzLCAxNywgOSwgMjcsIDc3LCAKLSAgICAyLCAxODIsIDcyLCAyLCAyMTIsIDMxLCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA0LCA1MywgMTcsIDksIAotICAgIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA0LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjI2LCAyMzksIAotICAgIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMjYsIDIzOSwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDIxMCwgMjEzLCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEwLCAyMTMsIDQwLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDQwLCAKLSAgICAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxNjAsIDY1LCAxNywgOSwgMjcsIDIxNCwgMjA3LCAyMzQsIDc5LCA3NywgCi0gICAgMiwgMTgyLCA3MiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjE0LCAyMDcsIDIzNCwgNzksIDc3LCAyLCAKLSAgICAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTQsIDIwNywgMjM0LCA3OSwgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNzYsIDc3LCA1MywgMTcsIDksIDEsIDI0NCwgMTc2LCAKLSAgICA3NywgNDAsIDE3LCA5LCAxLCAyNDQsIDE3NiwgNzcsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNzYsIDc3LCAxNDcsIDE3LCA5LCAKLSAgICAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEyMiwgNTMsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAKLSAgICAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjM0LCAKLSAgICAxMzYsIDUzLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMDksIDIzMSwgCi0gICAgMTk4LCA1MywgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxNTEsIDUzLCAKLSAgICAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIAotICAgIDI3LCAyMTcsIDksIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIxNywgOSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIxNiwgCi0gICAgMTk0LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDIxNiwgMTk0LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIAotICAgIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAxMjIsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzQsIDEzNiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMzQsIAotICAgIDEzNiwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAKLSAgICAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIAotICAgIDY2LCA1MywgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDY2LCA1MywgCi0gICAgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgMTIyLCA1MywgMTcsIDksIAotICAgIDI3LCAyNDgsIDIyNSwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjE3LCA4MiwgMiwgMTIyLCA1MywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjEwLCAxMTIsIAotICAgIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIAotICAgIDUzLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjQ0LCAxNTEsIDIsIDE1MSwgNTMsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIAotICAgIDI0NCwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNzcsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIyNCwgODUsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDUzLCAxNywgOSwgMjcsIDIyNCwgCi0gICAgODUsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMzUsIAotICAgIDEsIDIsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAxNTEsIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTIyLCAKLSAgICA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgMTA5LCAKLSAgICA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDUzLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIDUzLCAxNywgOSwgCi0gICAgMjcsIDIzMywgMTA5LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAyMzQsIDEzNiwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDY2LCA1MywgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDc3LCA1MywgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCA2NiwgMiwgCi0gICAgMTIyLCA1MywgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCA5LCAKLSAgICAyNywgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIDY2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjI4LCAKLSAgICA2OCwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIAotICAgIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTA5LCAKLSAgICAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCAxNTEsIAotICAgIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA2NiwgNTMsIDE3LCA5LCAyNywgMjQxLCAyMjYsIDIsIDEwOSwgMjMxLCAKLSAgICAxOTgsIDUzLCAxNywgOSwgMjcsIDI0MSwgMjI2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDE1MSwgNTMsIDE3LCAKLSAgICA5LCAyNywgNzcsIDIsIDEyMiwgNTMsIDE3LCA5LCAyNywgNzcsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCA3NywgMiwgCi0gICAgNjYsIDUzLCAxNywgOSwgMjcsIDc3LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCA3NywgMiwgNzcsIDUzLCAKLSAgICAxNywgOSwgMjcsIDIxNiwgMjA0LCAyLCAyMTgsIDI0LCAxMDksIDUzLCAxNywgOSwgMjcsIDIyMywgOTksIDIsIDIxOCwgMjQsIAotICAgIDEwOSwgNTMsIDE3LCA5LCAyNywgMTA5LCAyMzEsIDE5OCwgMiwgMjE4LCAyNCwgMTA5LCA1MywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyNDgsIDE5MSwgNTMsIDE3LCA5LCAyNywgMjIwLCA5NiwgMiwgMjM0LCAyMTAsIDUzLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgOTYsIDIsIDI0NCwgMTc0LCA1MywgMTcsIDksIDI3LCAyMjAsIDk2LCAyLCAyNDgsIDE5MywgNTMsIDE3LCA5LCAyNywgMjIwLCAKLSAgICA5NiwgMiwgMjM0LCAyMTIsIDUzLCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDIxOCwgMjQsIDEwOSwgNTMsIDE3LCA5LCAyNywgCi0gICAgNzcsIDIsIDE4MiwgNzIsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyMTAsIDEwOSwgCi0gICAgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgCi0gICAgMjI4LCA2OCwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjUyLCA2MywgMiwgMjEwLCAxMDksIDQwLCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTIsIAotICAgIDYzLCAyLCAyMjgsIDY4LCA0MCwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNTIsIDYzLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIAotICAgIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDIyOCwgCi0gICAgNjgsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyMTAsIAotICAgIDEwOSwgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMTYsIDE5NCwgMiwgMjI4LCA2OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE2LCAxOTQsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0NCwgMTUxLCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgCi0gICAgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTA5LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgMTA5LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgNDAsIDE3LCA5LCAKLSAgICAyNywgMjMzLCAxMDksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA3NywgNDAsIDE3LCAKLSAgICA5LCAyNywgNjYsIDIsIDEwOSwgNDAsIDE3LCA5LCAyNywgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAKLSAgICAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgCi0gICAgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDEwOSwgCi0gICAgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMDksIDIzMSwgMTk4LCAyLCAKLSAgICAyMTgsIDI0LCAxMDksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAyMjMsIDk5LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgMjEwLCAKLSAgICAxMDksIDQwLCAxNywgOSwgMjcsIDc3LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDIyOCwgNjgsIDQwLCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCA3NywgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAKLSAgICAxODIsIDcyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDE1MSwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyNTIsIDYzLCAyLCAyMzQsIDEzNiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIDI0MSwgMjI2LCA2NSwgMTcsIAotICAgIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIxNywgCi0gICAgOSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgCi0gICAgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMTUxLCAyLCAxMjIsIDY1LCAKLSAgICAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDEyMiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAxMjIsIDIsIAotICAgIDY2LCA2NSwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAKLSAgICAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxMjIsIDY1LCAxNywgOSwgCi0gICAgMjcsIDIyMSwgMTY5LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjIsIDI5LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMjIsIAotICAgIDI5LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIAotICAgIDEyMiwgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyNDgsIDIyNSwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjEwLCAxMTIsIDIsIDY2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDY1LCAxNywgOSwgCi0gICAgMjcsIDI0MiwgMjUyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjQ0LCAKLSAgICAxNTEsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIAotICAgIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyNCwgODUsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzNSwgMSwgMiwgMTUxLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMzUsIDEsIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgCi0gICAgMjM1LCAxLCAyLCAyMzMsIDEwOSwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjMzLCAKLSAgICAxMDksIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIAotICAgIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAyNDEsIDIyNiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDEyMiwgNjUsIDE3LCAKLSAgICA5LCAyNywgNjYsIDIsIDIzNCwgMTM2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIAotICAgIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAyMzQsIAotICAgIDEzNiwgNjUsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDI0MSwgMjI2LCAKLSAgICA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgNjYsIDY1LCAxNywgCi0gICAgOSwgMjcsIDI0MSwgMjI2LCAyLCAyMTgsIDI0LCAxMDksIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxNTEsIDY1LCAxNywgOSwgCi0gICAgMjcsIDc3LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAKLSAgICA2NSwgMTcsIDksIDI3LCA3NywgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDc3LCAyLCAxODIsIDcyLCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDI1MiwgNjMsIDIsIAotICAgIDY2LCAxNDcsIDE3LCA5LCAyNywgMjUyLCA2MywgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDIxNiwgMTk0LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgCi0gICAgMTQ3LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAKLSAgICAxNDcsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDIzMywgCi0gICAgMTA5LCAxNDcsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMTQ3LCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgMTQ3LCAKLSAgICAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMjQxLCAyMjYsIDE0NywgMTcsIAotICAgIDksIDI3LCA3NywgMiwgNjYsIDE0NywgMTcsIDksIDI3LCA3NywgMiwgMjQxLCAyMjYsIDE0NywgMTcsIDksIDI3LCAyMjAsIAotICAgIDk2LCAyLCAyNDQsIDE3NCwgMTQ3LCAxNywgOSwgMjcsIDIyMCwgOTYsIDIsIDI0OCwgMTkzLCAxNDcsIDE3LCA5LCAyNywgCi0gICAgMjIwLCA5NiwgMiwgMjM0LCAyMTIsIDE0NywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIAotICAgIDksIDI3LCAyMTcsIDgyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgCi0gICAgOSwgMjcsIDI1NCwgMjA2LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAKLSAgICAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDUzLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNzcsIDUzLCAxNywgOSwgMjcsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIAotICAgIDE3LCA5LCAyNywgMTIyLCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIAotICAgIDI3LCAxNTEsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgNTMsIDE3LCA5LCAyNywgCi0gICAgMjM0LCAxMzYsIDIsIDc3LCA1MywgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMDksIDIzMSwgMTk4LCA1MywgMTcsIDksIDI3LCAKLSAgICAyMjIsIDI5LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMjcsIAotICAgIDI0OCwgMjI1LCAyLCA3NywgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAKLSAgICAyLCAxMjIsIDUzLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDIzNCwgMTM2LCA1MywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAKLSAgICA2NiwgNTMsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjIzLCA5OSwgNTMsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIyMywgCi0gICAgOTksIDUzLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIyMywgOTksIDUzLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAyMjMsIAotICAgIDk5LCA1MywgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjQyLCAyNTIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0MiwgCi0gICAgMjUyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIAotICAgIDIyMSwgMTY5LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIwLCA2MiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTIyLCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDc3LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjM0LCAxMzYsIDIsIAotICAgIDc3LCA0MCwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAKLSAgICA3NywgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAKLSAgICAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMTUxLCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDIzNCwgMTM2LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgMjIzLCA5OSwgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIyMywgOTksIDQwLCAKLSAgICAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDIyMywgOTksIDQwLCAxNywgOSwgMjcsIDI0OCwgMjI1LCAyLCAyMjMsIDk5LCA0MCwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIwLCA2MiwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjEsIDE2OSwgMiwgMjQxLCAyMjYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDI0MSwgMjI2LCA2NSwgMTcsIDksIAotICAgIDI3LCAyMTcsIDgyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgMTQ3LCAxNywgOSwgMjcsIDIyMSwgCi0gICAgMTY5LCAyLCAxMjIsIDE0NywgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMjM0LCAxMzYsIDE0NywgMTcsIDksIDI3LCAyMjAsIAotICAgIDYyLCAyLCAxNTEsIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIDE0NywgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAKLSAgICAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMjcsIDIxNywgODIsIDIsIDY2LCAxNDcsIDE3LCA5LCAyNywgMjEwLCAxMTIsIDIsIAotICAgIDY2LCAxNDcsIDE3LCA5LCAyNywgMTA5LCAyLCAyNDQsIDE3MiwgNDAsIDE3LCA5LCAyNywgMTA5LCAyLCAyNDQsIDE3MiwgCi0gICAgNTMsIDE3LCAyMjYsIDE1MCwgNDMsIDIyNiwgNywgMjI2LCAxNTAsIDQ0LCAyMjYsIDcsIDksIDI3LCAyMTcsIDksIDIsIAotICAgIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCAxNTEsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgCi0gICAgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjE3LCAKLSAgICA5LCAyLCAyMzQsIDEzNiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjE3LCA5LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDY2LCAyLCAyMzQsIDEzNiwgNjUsIAotICAgIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgMTIyLCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCi0gICAgOSwgMjcsIDEyMiwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMjIsIDIsIDY2LCAyLCAxMDksIDIzMSwgMTk4LCAKLSAgICA0MCwgMTcsIDksIDI3LCAyMjEsIDE2OSwgMiwgMTIyLCAyLCAxNTEsIDY1LCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCAxNTEsIAotICAgIDIsIDEyMiwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjIxLCAxNjksIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgOSwgMjcsIDIyMSwgMTY5LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIAotICAgIDksIDI3LCAyMjEsIDE2OSwgMiwgNjYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCA2NiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjIyLCAyOSwgMiwgMTIyLCAyLCAKLSAgICAxMjIsIDQwLCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDksIDI3LCAyMjIsIDI5LCAyLCAKLSAgICA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDEyMiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIAotICAgIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyMCwgCi0gICAgNjIsIDIsIDY2LCAyLCAyMzQsIDEzNiwgNDAsIDE3LCA5LCAyNywgMjIwLCA2MiwgMiwgNjYsIDIsIDIzNCwgMTM2LCA2NSwgCi0gICAgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyMCwgNjIsIDIsIDY2LCAyLCA2NiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ4LCAKLSAgICAyMjUsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgMjQ4LCAyMjUsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIAotICAgIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDEyMiwgCi0gICAgNjUsIDE3LCA5LCAyNywgMjE3LCA4MiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMTcsIDgyLCAyLCA2NiwgMiwgCi0gICAgNzcsIDQwLCAxNywgOSwgMjcsIDI1NCwgMjA2LCAyLCAxNTEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgCi0gICAgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyNTQsIDIwNiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyNTQsIAotICAgIDIwNiwgMiwgNjYsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgNjYsIDQwLCAKLSAgICAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDI0MiwgMjUyLCAyLCA2NiwgMiwgCi0gICAgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNDAsIDE3LCA5LCAKLSAgICAyNywgMjQ0LCAxNTEsIDIsIDIzNCwgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDEyMiwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCAKLSAgICA2NiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEyMiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAxMjIsIDIsIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKLSAgICA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgMTUxLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMjM0LCAxMzYsIDIsIAotICAgIDY2LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMjM0LCAxMzYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMzMsIDEwOSwgCi0gICAgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDY2LCAKLSAgICAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDEyMiwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgOSwgMjcsIDY2LCAyLCAxNTEsIAotICAgIDIsIDY2LCA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDIsIDE1MSwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgNjYsIDIsIDE1MSwgMiwgMjM0LCAxMzYsIDY1LCAxNywgOSwgMjcsIDI0MSwgCi0gICAgMjI2LCAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDksIDI3LCAyNDEsIDIyNiwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAKLSAgICAyMjgsIDY4LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxMjIsIDIsIDEwOSwgMjMxLCAxOTgsIAotICAgIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgCi0gICAgNjYsIDY1LCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMjI4LCAKLSAgICA2OCwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIAotICAgIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjUyLCA2MywgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIDIsIDE1MSwgMiwgNzcsIAotICAgIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgMTUxLCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMTcsIDksIAotICAgIDIsIDIzNCwgMTM2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCAyMzQsIDEzNiwgMiwgMTA5LCAyMzEsIDE5OCwgCi0gICAgNDAsIDE3LCA5LCAyNywgMjE3LCA5LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIxNywgOSwgMiwgNjYsIDIsIAotICAgIDEwOSwgMjMxLCAxOTgsIDQwLCAxNywgOSwgMjcsIDE1MSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxNTEsIDIsIAotICAgIDEyMiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAyNywgMTUxLCAyLCA2NiwgMiwgMTA5LCAyMzEsIDE5OCwgNDAsIAotICAgIDE3LCA5LCAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCAyLCAxMDksIDIzMSwgMTk4LCA0MCwgMTcsIDksIDI3LCAyMjIsIAotICAgIDI5LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjAsIDYyLCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyNDgsIDIyNSwgMiwgMTIyLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgCi0gICAgOSwgMjcsIDIzMywgMTA5LCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDc3LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIAotICAgIDksIDI3LCA3NywgMiwgMTUxLCAyLCA3NywgNDAsIDE3LCA5LCAyNywgNzcsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgCi0gICAgNjYsIDIsIDY2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI0LCA4NSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAKLSAgICAyMjgsIDY4LCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMjQsIDg1LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDksIAotICAgIDI3LCAyMzMsIDEwOSwgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjU0LCAyMDYsIDIsIDY2LCAyLCA3NywgNDAsIAotICAgIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDIyOCwgNjgsIDIsIDE1MSwgMiwgMTIyLCAKLSAgICA2NSwgMTcsIDksIDI3LCA2NiwgMiwgMjM0LCAxMzYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTUxLCAKLSAgICAyLCA2NiwgNjUsIDE3LCA5LCAyNywgMjM1LCAxLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAKLSAgICAxNTEsIDIsIDY2LCA0MCwgMTcsIDksIDI3LCAyMjgsIDY4LCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCA5LCAyNywgMTUxLCAKLSAgICAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAxMjIsIDIsIDE1MSwgMiwgNzcsIDQwLCAxNywgOSwgMjcsIDY2LCAyLCAKLSAgICAxNTEsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNDQsIDE1MSwgMiwgNjYsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyNTIsIAotICAgIDYzLCAyLCAxMjIsIDIsIDc3LCA0MCwgMTcsIDksIDI3LCAyMzUsIDEsIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAyNywgCi0gICAgMjU0LCAyMDYsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgOSwgMjcsIDIyMiwgMjksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCA5LCAKLSAgICAyNywgMjIxLCAxNjksIDIsIDIzNCwgMTM2LCAyLCA3NywgNDAsIDE3LCA5LCAyNywgMjI4LCA2OCwgMiwgMTUxLCAyLCA3NywgCi0gICAgNDAsIDE3LCA5LCAyNywgMjIyLCA2LCAyMTQsIDEyOCwgMjUzLCAyNDYsIDIzNCwgMTAsIDIxOCwgMTMyLCA1LCA1MywgMTcsIAotICAgIDksIDI3LCAyMjQsIDgxLCAyMTQsIDEyOCwgMjUzLCAyNDYsIDIzNCwgMTAsIDIxOCwgMTMyLCA1LCA1MywgMTcsIDksIDI3LCAKLSAgICAyNTQsIDE2MiwgNTMsIDE3LCA5LCAyNywgMjU0LCAxOTIsIDUzLCAxNywgOSwgMjcsIDIzMCwgMTU4LCA1MywgMTcsIDksIAotICAgIDI3LCAyMjIsIDcsIDUzLCAxNywgOSwgMjcsIDIyMywgMTQ2LCA1MywgMTcsIDksIDI3LCAyNTQsIDE4MSwgNTMsIDE3LCA5LCAKLSAgICAyNywgMjEyLCA0OSwgNTMsIDE3LCA5LCAyNywgMjIyLCA2LCA1MywgMTcsIDksIDI3LCAyMjIsIDUsIDI1NCwgMTgxLCAyMTIsIAotICAgIDQ4LCA5LCAyNywgMjM1LCAxNDAsIDIyMywgMzcsIDUwLCA5LCAyNywgMjUxLCAyMzgsIDI1NCwgNDcsIDI1NCwgNDgsIDQ1LCAKLSAgICAyMjEsIDE1OCwgNDUsIDIyMSwgNDcsIDQ1LCAyMjAsIDIzNSwgNDUsIDIyMCwgMjI0LCA0NSwgMjIwLCAyMTMsIDQ1LCAyMjAsIAotICAgIDIwMiwgNDUsIDIyMCwgMTkxLCA0NSwgMjIwLCAxODAsIDQ1LCAyMjAsIDE2OSwgNDUsIDIyMSwgMTU3LCA0NSwgMjIxLCAKLSAgICAxNDYsIDQ1LCAyMjEsIDEzNSwgNDUsIDIyMSwgMTI0LCA0NSwgMjIxLCAxMTMsIDQ1LCAyMjEsIDEwMiwgNDUsIDIyMSwgOTEsIAotICAgIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDI0OSwgMjI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTAsIDI0OSwgCi0gICAgMjI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTAsIDI0MywgMjM2LCAyMTgsIDEzMSwgMjI0LCAxOTcsIDI0NCwgCi0gICAgMjgsIDMxLCA2NywgMjQ5LCAyMzQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDIyMCwgMTUyLCAyMjQsIDE5NywgMjQ0LCAKLSAgICAyOCwgMzEsIDY3LCAyNDUsIDM5LCA3OSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjI0LCAxNiwgNzksIDIyNCwgCi0gICAgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQzLCA3MSwgMjMzLCAyNiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAKLSAgICA0NCwgNzEsIDIzMywgMjYsIDI1MSwgMTY0LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyMDMsIDI0NSwgMTcxLCAzOCwgCi0gICAgMjcsIDQzLCAyNDIsIDM0LCAzOCwgMjcsIDQ0LCAyNDIsIDM0LCAzOCwgNTIsIDIxNiwgOTAsIDQzLCAyNDIsIDM0LCAzOCwgCi0gICAgNTIsIDIxNiwgOTAsIDQ0LCAyNDIsIDM0LCAzOCwgMjMxLCAyMzgsIDQzLCAyNDIsIDM0LCAzOCwgMjMxLCAyMzgsIDQ0LCAKLSAgICAyNDIsIDM0LCAzOCwgMjQ5LCAyMDUsIDIzMSwgMjM3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAxMTMsIDU5LCAyMzMsIAotICAgIDYyLCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCAyNDUsIDE2OCwgMjQ4LCAxNjQsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDI0NSwgMTU5LCAyNDgsIDE2NCwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMTIxLCAyMzIsIDIxOSwgMjI0LCAKLSAgICAxOTcsIDI0NCwgMjgsIDMxLCA2NywgMjEyLCAzMiwgMTIxLCAyMzIsIDIxOSwgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgCi0gICAgNDMsIDIyNiwgNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDIyNiwgNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCAKLSAgICA2NywgNDMsIDI0OSwgMTA3LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCAyNDksIDEwNywgMTI3LCAyMjQsIAotICAgIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjE2LCA3LCAyMjAsIDU1LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDI2LCAKLSAgICAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA4NSwgMjMzLCAyNiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgCi0gICAgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAKLSAgICAxMTgsIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDMsIDI1NCwgMTE4LCAxMjcsIDIyNCwgMTk3LCAyNDQsIAotICAgIDI4LCAzMSwgNjcsIDQ0LCAyNTQsIDExOCwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0MywgMjQ5LCAxNjksIAotICAgIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDI0OSwgMTY5LCAxMjcsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQzLCA3MSwgMjQ5LCAxNjksIDEyNywgMjI0LCAxOTcsIDI0NCwgMjgsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2OSwgCi0gICAgMTI3LCAyMjAsIDEzMywgMjQ3LCAxMjgsIDcxLCAyMjAsIDEzMywgMjQ3LCAxMjgsIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgCi0gICAgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NywgMjQ0LCAyOCwgMzEsIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNjMsIDIyNiwgCi0gICAgMTIzLCAyNTAsIDE4MCwgMjI2LCAxMjMsIDIxMiwgMzIsIDIyNiwgMTIzLCA1MiwgMjEyLCAzMiwgMjI2LCAxMjMsIDI0OCwgCi0gICAgMTYzLCAxMjEsIDIzMiwgMjE5LCAyNTAsIDE4MCwgMTIxLCAyMzIsIDIxOSwgMjEyLCAzMiwgMTIxLCAyMzIsIDIxOSwgNCwgCi0gICAgMjQ5LCAyMjcsIDQsIDExMCwgMjQ5LCAyMjcsIDQsIDI0MywgMjM2LCAyMTgsIDEzMSwgNCwgMjIwLCAxNTIsIDQsIDI0OSwgCi0gICAgMjM0LCA0LCAyMjQsIDE2LCA3OSwgNCwgMjQ1LCAzOSwgNzksIDQsIDI0NSwgMTY4LCAyNDgsIDE2NCwgNCwgNDMsIDIyNiwgCi0gICAgNywgNCwgNDQsIDIyNiwgNywgNCwgNDMsIDI0OSwgMTA3LCAxMjcsIDQsIDQ0LCAyNDksIDEwNywgMTI3LCA0LCA0MywgMjE2LCAKLSAgICA3LCAyMjAsIDU1LCAxMjcsIDQsIDQ0LCAyMTYsIDcsIDIyMCwgNTUsIDEyNywgNCwgNTQsIDUwLCA0LCAyNTQsIDEzNCwgNCwgCi0gICAgMjUzLCAyMjQsIDQsIDk2LCA1MCwgNCwgMjQwLCAxNzQsIDQsIDIzMywgMjEsIDUwLCA0LCAyNDIsIDEzNywgNTAsIDQsIAotICAgIDI0NSwgMTA2LCA1MCwgNCwgMjIzLCA1MywgMjE5LCA0OCwgNCwgMjQ3LCAxNDAsIDUwLCA0LCAyMjUsIDE4NSwgNTAsIDQsIAotICAgIDI0OSwgMjI1LCAyNTMsIDIxNCwgOSwgMjQ0LCAxNzIsIDUzLCAxNywgOSwgMjE3LCA0NSwgMiwgMjQ0LCAxNzIsIDQ4LCA5LCAKLSAgICAyNDgsIDE5MSwgNTMsIDE3LCA5LCAyMTcsIDc5LCAyNDQsIDksIDksIDIzNCwgMjEwLCA1MywgMTcsIDksIDI0NCwgMTc0LCAKLSAgICA1MywgMTcsIDksIDI0NCwgMTc0LCAxNDcsIDE3LCA5LCAyNDgsIDE5MywgNTMsIDE3LCA5LCAyNDgsIDE5MywgMTQ3LCAxNywgCi0gICAgOSwgMjM0LCAyMTIsIDUzLCAxNywgOSwgMjM0LCAyMTIsIDE0NywgMTcsIDksIDIyMCwgOTYsIDUzLCAxNywgOSwgMjIwLCAKLSAgICA5NiwgMTQ3LCAxNywgOSwgMjE4LCA0NywgNTMsIDE3LCA5LCAyMTgsIDQ3LCAxNDcsIDE3LCA5LCAxLCAxODIsIDUzLCAxNywgCi0gICAgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNzIsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAyMzEsIDIzMywgNzIsIDQwLCAxNywgCi0gICAgOSwgMSwgMTA5LCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDEsIDEwOSwgMiwgMTgyLCA3MiwgNDAsIDE3LCA5LCAxLCAyMTIsIAotICAgIDMxLCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDEsIDIxMiwgMzEsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMSwgMTA5LCAyLCAKLSAgICAxODIsIDI1MiwgNTEsIDUzLCAxNywgOSwgMSwgMTA5LCAyLCAxODIsIDI1MiwgNTEsIDQwLCAxNywgOSwgMSwgNzcsIDIsIAotICAgIDE4MiwgNzIsIDUzLCAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDQwLCAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDY1LCAKLSAgICAxNywgOSwgMSwgNzcsIDIsIDE4MiwgNzIsIDE0NywgMTcsIDksIDEsIDEwOSwgNTMsIDE3LCA5LCAxLCAxMDksIDQwLCAxNywgCi0gICAgOSwgMSwgMjUyLCA2MywgNTMsIDE3LCA5LCAxLCAyNTIsIDYzLCA0MCwgMTcsIDksIDEsIDI1MiwgNjMsIDY1LCAxNywgOSwgCi0gICAgMSwgMjUyLCA2MywgMTQ3LCAxNywgOSwgMSwgMjE3LCA5LCAyMzEsIDE3MCwgNTMsIDE3LCA5LCAxLCAyMTcsIDksIDIzMSwgCi0gICAgMTcwLCA0MCwgMTcsIDksIDEsIDIxNywgOSwgNTMsIDE3LCA5LCAxLCAyMTcsIDksIDQwLCAxNywgOSwgMSwgMjE3LCA5LCAKLSAgICA2NSwgMTcsIDksIDEsIDIxNywgOSwgMTQ3LCAxNywgOSwgMSwgMjE2LCAxOTQsIDUzLCAxNywgOSwgMSwgMjE2LCAxOTQsIAotICAgIDQwLCAxNywgOSwgMSwgMjE2LCAxOTQsIDY1LCAxNywgOSwgMSwgMjE2LCAxOTQsIDE0NywgMTcsIDksIDEsIDE1MSwgNTMsIAotICAgIDE3LCA5LCAxLCAxNTEsIDQwLCAxNywgOSwgMSwgMTUxLCA2NSwgMTcsIDksIDEsIDE1MSwgMTQ3LCAxNywgOSwgMSwgMTIyLCAKLSAgICA1MywgMTcsIDksIDEsIDEyMiwgNDAsIDE3LCA5LCAxLCAxMjIsIDY1LCAxNywgOSwgMSwgMTIyLCAxNDcsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDEzNiwgNTMsIDE3LCA5LCAxLCAyMzQsIDEzNiwgNDAsIDE3LCA5LCAxLCAyMzQsIDEzNiwgNjUsIDE3LCA5LCAxLCAKLSAgICAyMzQsIDEzNiwgMTQ3LCAxNywgOSwgMSwgMjQ4LCAyMDQsIDUzLCAxNywgOSwgMSwgMjQ4LCAyMDQsIDQwLCAxNywgOSwgMSwgCi0gICAgMjE2LCAyMDQsIDUzLCAxNywgOSwgMSwgMjE2LCAyMDQsIDQwLCAxNywgOSwgMSwgMjIzLCA5OSwgNTMsIDE3LCA5LCAxLCAKLSAgICAyMjMsIDk5LCA0MCwgMTcsIDksIDEsIDIxMCwgMTA5LCA1MywgMTcsIDksIDEsIDIxMCwgMTA5LCA0MCwgMTcsIDksIDEsIAotICAgIDIyMSwgMTY5LCA1MywgMTcsIDksIDEsIDIyMSwgMTY5LCA0MCwgMTcsIDksIDEsIDIyMSwgMTY5LCA2NSwgMTcsIDksIDEsIAotICAgIDIyMSwgMTY5LCAxNDcsIDE3LCA5LCAxLCAyMjAsIDYyLCA1MywgMTcsIDksIDEsIDIyMCwgNjIsIDQwLCAxNywgOSwgMSwgCi0gICAgMjIwLCA2MiwgNjUsIDE3LCA5LCAxLCAyMjAsIDYyLCAxNDcsIDE3LCA5LCAxLCAyMjIsIDI5LCA1MywgMTcsIDksIDEsIAotICAgIDIyMiwgMjksIDQwLCAxNywgOSwgMSwgMjIyLCAyOSwgNjUsIDE3LCA5LCAxLCAyMjIsIDI5LCAxNDcsIDE3LCA5LCAxLCAKLSAgICAyNDgsIDIyNSwgNTMsIDE3LCA5LCAxLCAyNDgsIDIyNSwgNDAsIDE3LCA5LCAxLCAyNDgsIDIyNSwgNjUsIDE3LCA5LCAxLCAKLSAgICAyNDgsIDIyNSwgMTQ3LCAxNywgOSwgMSwgMjE3LCA4MiwgNTMsIDE3LCA5LCAxLCAyMTcsIDgyLCA0MCwgMTcsIDksIDEsIAotICAgIDIxNywgODIsIDY1LCAxNywgOSwgMSwgMjE3LCA4MiwgMTQ3LCAxNywgOSwgMSwgMjEwLCAxMTIsIDUzLCAxNywgOSwgMSwgCi0gICAgMjEwLCAxMTIsIDQwLCAxNywgOSwgMSwgMjEwLCAxMTIsIDY1LCAxNywgOSwgMSwgMjEwLCAxMTIsIDE0NywgMTcsIDksIDEsIAotICAgIDI1NCwgMjA2LCA1MywgMTcsIDksIDEsIDI1NCwgMjA2LCA0MCwgMTcsIDksIDEsIDI1NCwgMjA2LCA2NSwgMTcsIDksIDEsIAotICAgIDI1NCwgMjA2LCAxNDcsIDE3LCA5LCAxLCAyNDIsIDI1MiwgNTMsIDE3LCA5LCAxLCAyNDIsIDI1MiwgNDAsIDE3LCA5LCAxLCAKLSAgICAyNDIsIDI1MiwgNjUsIDE3LCA5LCAxLCAyNDIsIDI1MiwgMTQ3LCAxNywgOSwgMSwgMjQ0LCAxNTEsIDUzLCAxNywgOSwgMSwgCi0gICAgMjQ0LCAxNTEsIDQwLCAxNywgOSwgMSwgMjQ0LCAxNTEsIDY1LCAxNywgOSwgMSwgMjQ0LCAxNTEsIDE0NywgMTcsIDksIDEsIAotICAgIDIyNCwgODUsIDUzLCAxNywgOSwgMSwgMjI0LCA4NSwgNDAsIDE3LCA5LCAxLCAyMjQsIDg1LCA2NSwgMTcsIDksIDEsIDIyNCwgCi0gICAgODUsIDE0NywgMTcsIDksIDEsIDIzNSwgMSwgNTMsIDE3LCA5LCAxLCAyMzUsIDEsIDQwLCAxNywgOSwgMSwgMjM1LCAxLCAKLSAgICA2NSwgMTcsIDksIDEsIDIzNSwgMSwgMTQ3LCAxNywgOSwgMSwgMjMzLCAxMDksIDUzLCAxNywgOSwgMSwgMjMzLCAxMDksIAotICAgIDQwLCAxNywgOSwgMSwgMjMzLCAxMDksIDY1LCAxNywgOSwgMSwgMjMzLCAxMDksIDE0NywgMTcsIDksIDEsIDY2LCA1MywgCi0gICAgMTcsIDksIDEsIDY2LCA0MCwgMTcsIDksIDEsIDY2LCA2NSwgMTcsIDksIDEsIDY2LCAxNDcsIDE3LCA5LCAxLCAyMjgsIDY4LCAKLSAgICA1MywgMTcsIDksIDEsIDIyOCwgNjgsIDQwLCAxNywgOSwgMSwgMjI4LCA2OCwgNjUsIDE3LCA5LCAxLCAyMjgsIDY4LCAxNDcsIAotICAgIDE3LCA5LCAxLCAyNDEsIDIyNiwgNTMsIDE3LCA5LCAxLCAyNDEsIDIyNiwgNDAsIDE3LCA5LCAxLCAyNDEsIDIyNiwgNjUsIAotICAgIDE3LCA5LCAxLCAyNDEsIDIyNiwgMTQ3LCAxNywgOSwgMSwgMjEyLCAzMSwgNTMsIDE3LCA5LCAxLCAyMTIsIDMxLCA0MCwgCi0gICAgMTcsIDksIDEsIDEwOSwgMjMxLCAxOTgsIDUzLCAxNywgOSwgMSwgMTA5LCAyMzEsIDE5OCwgNDAsIDE3LCA5LCAxLCA3NywgCi0gICAgNTMsIDE3LCA5LCAxLCA3NywgNDAsIDE3LCA5LCAxLCA3NywgNjUsIDE3LCA5LCAxLCA3NywgMTQ3LCAxNywgOSwgMjcsIAotICAgIDIzMywgMTA5LCAyLCAxMDksIDIsIDIzMSwgMjMzLCA3MiwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgMiwgCi0gICAgMjMxLCAyMzMsIDcyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIDcyLCA1MywgMTcsIDksIDI3LCAKLSAgICAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIDcyLCA0MCwgMTcsIDksIDI3LCAyMzMsIDEwOSwgMiwgMTA5LCAyLCAxODIsIAotICAgIDI1MiwgNTEsIDUzLCAxNywgOSwgMjcsIDIzMywgMTA5LCAyLCAxMDksIDIsIDE4MiwgMjUyLCA1MSwgNDAsIDE3LCA5LCAyNywgCi0gICAgMjMzLCAxMDksIDIsIDEwOSwgNTMsIDE3LCA5LCAyNywgMjMzLCAxMDksIDIsIDEwOSwgNDAsIDE3LCAyMTAsIDg3LCAyMTEsIAotICAgIDI0NSwgMjI4LCA3OCwgMjE5LCAyMCwgMTI2LCAyNDUsIDM5LCA3OSwgMTI2LCAyMjQsIDEsIDc5LCAxMjYsIDU0LCA1MCwgCi0gICAgMTI2LCAyNDcsIDE0MCwgNTAsIDEyNiwgMjI1LCAxODUsIDUwLCAxMjYsIDI1NCwgMTM0LCAxMjYsIDI1NCwgNjUsIDEyNiwgCi0gICAgNDMsIDIyNiwgNywgMTI2LCA0NCwgMjI2LCA3LCAxMjYsIDI1MywgMjI0LCAxMjYsIDk2LCA1MCwgMTI2LCAyNDksIDIyNywgCi0gICAgMTI2LCAyNDAsIDE3NCwgMTI2LCAyNDMsIDIzNiwgMjE4LCAxMzEsIDEyNiwgMjE5LCA0OCwgMTI2LCAyMSwgMjEwLCA4NiwgCi0gICAgMTI2LCAyMSwgMTExLCAxMjYsIDIxLCAxMDUsIDEyNiwgMjEsIDE1OCwgMTI2LCAyMSwgMTYxLCAxMjYsIDIxLCAxOTAsIAotICAgIDEyNiwgMjEsIDE5NSwgMTI2LCAyMSwgMTk5LCAxMjYsIDIxLCAxOTYsIDEyNiwgMjEsIDIwMSwgMTI2LCAyNDksIDIzNCwgCi0gICAgMTI2LCAyMjAsIDE1MiwgMTI2LCAyMzMsIDIxLCA1MCwgMTI2LCAyNDUsIDEwNiwgNTAsIDEyNiwgMjQyLCAxMzcsIDUwLCAKLSAgICAxMjYsIDIyNCwgMTYsIDc5LCAxMjYsIDI0OSwgMjI1LCAyNTMsIDIxNCwgMTI2LCA3LCA2LCAxLCA2MSwgMTI2LCA3LCA2LCAKLSAgICAxLCAyNTMsIDE2NiwgMTI2LCA3LCA2LCAxLCAyNTEsIDc0LCAxMjYsIDcsIDYsIDEsIDI0OSwgNjgsIDEyNiwgNywgNiwgMSwgCi0gICAgNzYsIDEyNiwgNywgNiwgMSwgMjQ1LCAxNCwgMTI2LCA3LCA2LCAxLCAyNDMsIDIwOSwgMTI2LCA3LCA2LCAxLCAyNDIsIDY3LCAKLSAgICAxMjYsIDcsIDYsIDEsIDc0LCAxMjYsIDcsIDYsIDEsIDIzNSwgMTUwLCAxMjYsIDcsIDYsIDEsIDIzNSwgMjksIDEyNiwgNywgCi0gICAgNiwgMSwgMTU2LCAxMjYsIDcsIDYsIDEsIDE5NCwgMTI2LCA3LCA2LCAxLCAyMzAsIDMwLCAxMjYsIDcsIDYsIDEsIDc4LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIyNiwgMTA5LCAxMjYsIDcsIDYsIDEsIDIyNCwgOTksIDEyNiwgNywgNiwgMSwgMTUzLCAxMjYsIDcsIAotICAgIDYsIDEsIDIyMiwgOTMsIDEyNiwgNywgNiwgMSwgMjE3LCAxNTMsIDEyNiwgNywgNiwgMSwgNjksIDEyNiwgNywgNiwgMSwgCi0gICAgMjE0LCAxMDUsIDEyNiwgNywgNiwgMSwgMjEyLCA5OCwgMTI2LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA2LCAxLCAKLSAgICAyMTEsIDExNywgMTI2LCA3LCA2LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgNDIsIDEyNywgMTI2LCAyMjMsIDUzLCAyMTksIAotICAgIDQ4LCAxMjYsIDQ0LCA0MiwgMTI3LCAxMjYsIDI1MCwgMzksIDI1NSwgMjMsIDEyNiwgMTIxLCAyMzIsIDIxOSwgMTI2LCAKLSAgICAyNDIsIDE0NCwgMjU1LCAyMywgMTI2LCA3LCA0LCAxLCA2MSwgMTI2LCA3LCA0LCAxLCAyNTMsIDE2NiwgMTI2LCA3LCA0LCAKLSAgICAxLCAyNTEsIDc0LCAxMjYsIDcsIDQsIDEsIDI0OSwgNjgsIDEyNiwgNywgNCwgMSwgNzYsIDEyNiwgNywgNCwgMSwgMjQ1LCAKLSAgICAxNCwgMTI2LCA3LCA0LCAxLCAyNDMsIDIwOSwgMTI2LCA3LCA0LCAxLCAyNDIsIDY3LCAxMjYsIDcsIDQsIDEsIDc0LCAxMjYsIAotICAgIDcsIDQsIDEsIDIzNSwgMTUwLCAxMjYsIDcsIDQsIDEsIDIzNSwgMjksIDEyNiwgNywgNCwgMSwgMTU2LCAxMjYsIDcsIDQsIAotICAgIDEsIDE5NCwgMTI2LCA3LCA0LCAxLCAyMzAsIDMwLCAxMjYsIDcsIDQsIDEsIDc4LCAxMjYsIDcsIDQsIDEsIDIyNiwgMTA5LCAKLSAgICAxMjYsIDcsIDQsIDEsIDIyNCwgOTksIDEyNiwgNywgNCwgMSwgMTUzLCAxMjYsIDcsIDQsIDEsIDIyMiwgOTMsIDEyNiwgNywgCi0gICAgNCwgMSwgMjE3LCAxNTMsIDEyNiwgNywgNCwgMSwgNjksIDEyNiwgNywgNCwgMSwgMjE0LCAxMDUsIDEyNiwgNywgNCwgMSwgCi0gICAgMjEyLCA5OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDExNywgMTI2LCA3LCA0LCAxLCAKLSAgICAyMTAsIDE1OSwgMTI2LCA0MywgMjQ5LCAxMDcsIDEyNywgMTI2LCA2NywgMjMyLCAyMTksIDEyNiwgNDQsIDI0OSwgMTA3LCAKLSAgICAxMjcsIDEyNiwgMTg0LCAxMjYsIDQzLCA3MSwgMjI2LCA3LCAxMjYsIDQ0LCA3MSwgMjI2LCA3LCAxMDEsIDExMCwgMjQzLCAKLSAgICAyMzYsIDIxOCwgMTMxLCAxMDEsIDQzLCAyNDksIDE2OSwgMTI3LCAxMDEsIDQ0LCAyNDksIDE2OSwgMTI3LCAxMDEsIDExMCwgCi0gICAgMjQ5LCAyMjcsIDEwMSwgNTYsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMTAxLCA1NiwgMSwgMjExLCAyMjcsIDEwMSwgNTYsIDEsIAotICAgIDQsIDYxLCAxMDEsIDU2LCAxLCA0LCA3NCwgMTAxLCA1NiwgMSwgNCwgNjksIDEwMSwgNTYsIDEsIDQsIDc2LCAxMDEsIDU2LCAKLSAgICAxLCA0LCA3OCwgMTAxLCA1NiwgMSwgNCwgMTkyLCAxMDEsIDU2LCAxLCA0LCAyMTAsIDIxMiwgMTAxLCA1NiwgMSwgNCwgCi0gICAgMjEwLCAyNDQsIDEwMSwgNTYsIDEsIDQsIDIxNSwgMTE5LCAxMDEsIDIzNCwgMjA3LCAyMjQsIDE3NiwgMjE5LCAzMywgNzksIAotICAgIDEwMSwgNTYsIDEsIDYxLCAxMDEsIDU2LCAxLCA3NCwgMTAxLCA1NiwgMSwgNjksIDEwMSwgNTYsIDEsIDc2LCAxMDEsIDU2LCAKLSAgICAxLCA3OCwgMTAxLCA1NiwgMSwgMTc2LCAxMDEsIDU2LCAxLCAyMzQsIDk4LCAxMDEsIDU2LCAxLCAyMzMsIDIyMywgMTAxLCAKLSAgICA1NiwgMSwgMjM0LCAxODgsIDEwMSwgNTYsIDEsIDIzNCwgMzQsIDEwMSwgNTYsIDEsIDIwNiwgMTAxLCA1NiwgMSwgMjE5LCAKLSAgICAxOTMsIDEwMSwgNTYsIDEsIDIxOCwgODQsIDEwMSwgNTYsIDEsIDIyMSwgMTgzLCAxMDEsIDU2LCAxLCAyMTksIDYwLCAxMDEsIAotICAgIDU2LCAxLCAyMTcsIDEwNiwgMTAxLCA1NiwgMSwgMjE2LCAxMTgsIDEwMSwgNTYsIDEsIDIxNSwgMTE5LCAxMDEsIDU2LCAxLCAKLSAgICAyMTcsIDIzLCAxMDEsIDU2LCAxLCAxMTIsIDEwMSwgNTYsIDEsIDE5OCwgMTAxLCA1NiwgMSwgMjI4LCAyMzgsIDEwMSwgNTYsIAotICAgIDEsIDIyNywgMjQyLCAxMDEsIDU2LCAxLCAyMjksIDExMiwgMTAxLCA1NiwgMSwgMjI4LCA3OSwgMTAxLCA1NiwgMSwgMTYyLCAKLSAgICAxMDEsIDU2LCAxLCAyNDEsIDE4NywgMTAxLCA1NiwgMSwgMjQwLCAyMjksIDEwMSwgNTYsIDEsIDI0MSwgMjQ1LCAxMDEsIAotICAgIDU2LCAxLCAyNDEsIDc1LCAxMDEsIDU2LCAxLCAxODYsIDEwMSwgNTYsIDEsIDIzMCwgMjM1LCAxMDEsIDU2LCAxLCAyMzAsIAotICAgIDEwNywgMTAxLCA1NiwgMSwgMjMxLCA5NiwgMTAxLCA1NiwgMSwgMjMwLCAxNjYsIDEwMSwgNTYsIDEsIDE5MiwgMTAxLCA1NiwgCi0gICAgMSwgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDIxMCwgMjQ0LCAxMDEsIDU2LCAxLCAyMDUsIDEwMSwgNTYsIDEsIDIyMywgMzgsIAotICAgIDEwMSwgNTYsIDEsIDIyMiwgMTQyLCAxMDEsIDU2LCAxLCAyMjMsIDEzMSwgMTAxLCA1NiwgMSwgMjIyLCAyMTMsIDEwMSwgCi0gICAgNTYsIDEsIDIxMiwgNjUsIDEwMSwgNTYsIDEsIDIzMCwgMzAsIDEwMSwgNTYsIDIxMywgMTM1LCAyMTksIDMzLCA3OSwgMTAxLCAKLSAgICA1NiwgMjIwLCAxNTcsIDIxOSwgMzMsIDc5LCAxMDEsIDI0LCAyNDQsIDExMSwgMTAxLCAyNCwgMSwgMjM0LCA2NCwgMTAxLCAKLSAgICAyNCwgMSwgMjE4LCAyMTcsIDEwMSwgMjQsIDEsIDIzNCwgNTcsIDEwMSwgMjQsIDEsIDIyOCwgMjMxLCAxMDEsIDI0LCAxLCAKLSAgICAyMjgsIDIyOSwgMTAxLCAyNCwgMSwgMjI4LCAyMjgsIDEwMSwgMjQsIDEsIDIxNiwgMTAyLCAxMDEsIDI0LCAxLCAyMTgsIAotICAgIDIwNiwgMTAxLCAyNCwgMSwgMjIzLCAyOSwgMTAxLCAyNCwgMSwgMjIzLCAyNCwgMTAxLCAyNCwgMSwgMjIzLCAyMSwgMTAxLCAKLSAgICAyNCwgMSwgMjIzLCAxNCwgMTAxLCAyNCwgMSwgMjIzLCA5LCAxMDEsIDI0LCAxLCAyMjMsIDQsIDEwMSwgMjQsIDEsIDIyMywgCi0gICAgMTUsIDEwMSwgMjQsIDEsIDIyMywgMjcsIDEwMSwgMjQsIDEsIDIzMCwgMjIyLCAxMDEsIDI0LCAxLCAyMjUsIDk4LCAxMDEsIAotICAgIDI0LCAxLCAyMTgsIDIxNCwgMTAxLCAyNCwgMSwgMjI1LCA4NywgMTAxLCAyNCwgMSwgMjE5LCAxNTAsIDEwMSwgMjQsIDEsIAotICAgIDIxOCwgMjExLCAxMDEsIDI0LCAxLCAyMzYsIDYzLCAxMDEsIDI0LCAxLCAyNTAsIDU0LCAxMDEsIDI0LCAxLCAyMTgsIDIyMSwgCi0gICAgMTAxLCAyNCwgMSwgMjUwLCAxMTQsIDEwMSwgMjQsIDEsIDIzNCwgMTE2LCAxMDEsIDI0LCAxLCAyMTYsIDE3NCwgMTAxLCAKLSAgICAyNCwgMSwgMjI1LCAxMzQsIDEwMSwgMjQsIDEsIDI0MSwgMTc5LCAxMDEsIDI0LCAxLCA2MSwgMTAxLCAyNCwgMSwgMjU0LCAKLSAgICAyNTIsIDEwMSwgMjQsIDEsIDE5MiwgMTAxLCAyNCwgMSwgMjExLCA5MiwgMTAxLCAyNCwgMSwgMjQ1LCAxMjUsIDEwMSwgMjQsIAotICAgIDEsIDc2LCAxMDEsIDI0LCAxLCAyMTEsIDM2LCAxMDEsIDI0LCAxLCAyMTEsIDQ3LCAxMDEsIDI0LCAxLCA3OCwgMTAxLCAyNCwgCi0gICAgMSwgMjEyLCA2NSwgMTAxLCAyNCwgMSwgMjEyLCA2MiwgMTAxLCAyNCwgMSwgMjI2LCAyMzgsIDEwMSwgMjQsIDEsIDIxMCwgCi0gICAgMjQ0LCAxMDEsIDI0LCAxLCA2OSwgMTAxLCAyNCwgMSwgMjEyLCAxMSwgMTAxLCAyNCwgMSwgMjEyLCAyMiwgMTAxLCAyNCwgCi0gICAgMSwgMjExLCAyNTAsIDEwMSwgMjQsIDEsIDIxMCwgMjEyLCAxMDEsIDI0LCAxLCAyNDUsIDYzLCAxMDEsIDI0LCAxLCAyMTEsIAotICAgIDgsIDEwMSwgMjQsIDEsIDc0LCAxMjYsIDI1MCwgMTg0LCA1MCwgMTI2LCAyMjQsIDIzMSwgNTAsIDEyNiwgMjI4LCA1NywgCi0gICAgNTAsIDEyNiwgMjMxLCAyMzcsIDEyNiwgMjUxLCAxNDMsIDEzMCwgMTI2LCAyMTEsIDQwLCA1MCwgMTI2LCAyMTEsIDIxNywgCi0gICAgNTAsIDEwMSwgMjQ0LCAyNiwgMTkzLCAyMTMsIDIzOSwgMTAxLCAxNDAsIDc1LCAxMDEsIDIxNCwgMTUzLCA3NSwgMTAxLCAKLSAgICA5NywgNzUsIDEwMSwgMjQ2LCAxMTIsIDc1LCAxMDEsIDg1LCAyMTgsIDIzNiwgMTAxLCA3MSwgMjUwLCA0MywgMjM1LCAyMTEsIAotICAgIDI1NCwgMTA3LCAyNTQsIDEyOCwgMjM1LCAyMTEsIDI1NCwgMTA3LCAyMjAsIDEzOSwgMjM1LCAyMTEsIDI1NCwgMTA3LCAKLSAgICAyMTYsIDIzNywgMjI2LCAyNTMsIDIyMywgNzUsIDI1MCwgMTUwLCAyMjMsIDc1LCAyNTAsIDE1MCwgNjIsIDU3LCAzLCAyNTMsIAotICAgIDE1MCwgNjEsIDYyLCA1NywgMywgMjUzLCAxMTksIDc2LCA2MiwgNTcsIDMsIDI1MywgMTI4LCA3NCwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDk2LCA3OCwgNjIsIDU3LCAzLCAyNTMsIDE0NiwgNjksIDYyLCA1NywgMywgMjUzLCAxNjUsIDI0OCwgMjI5LCA2MiwgCi0gICAgNTcsIDMsIDI1MywgMTEyLCAyNDgsIDk4LCA2MiwgNTcsIDMsIDI1MywgMTUyLCAyNDgsIDExLCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTQyLCAyNDcsIDE1MywgNjIsIDU3LCAzLCAyNTMsIDEwNiwgMjQ2LCA4NiwgNjIsIDU3LCAzLCAyNTMsIDEwMCwgMjM1LCAKLSAgICAxNDcsIDYyLCA1NywgMywgMjUzLCAxMTEsIDIzNSwgMTMyLCA2MiwgNTcsIDMsIDI1MywgMTIxLCAyMzUsIDc0LCA2MiwgNTcsIAotICAgIDMsIDI1MywgOTIsIDIzNSwgNTcsIDYyLCA1NywgMywgMjUzLCA4MCwgMTc2LCA2MiwgNTcsIDMsIDI1MywgMTEzLCAyMzQsIAotICAgIDE4OCwgNjIsIDU3LCAzLCAyNTMsIDkwLCAyMzQsIDk4LCA2MiwgNTcsIDMsIDI1MywgODcsIDIzNCwgMzQsIDYyLCA1NywgMywgCi0gICAgMjUzLCA3NiwgMjMzLCAyMjMsIDYyLCA1NywgMywgMjUzLCA3NywgMTg2LCA2MiwgNTcsIDMsIDI1MywgMTQzLCAyMzEsIDk2LCAKLSAgICA2MiwgNTcsIDMsIDI1MywgODQsIDIzMCwgMjM1LCA2MiwgNTcsIDMsIDI1MywgMTQxLCAyMzAsIDE2NiwgNjIsIDU3LCAzLCAKLSAgICAyNTMsIDEzMywgMjMwLCAxMDcsIDYyLCA1NywgMywgMjUzLCAxNTQsIDE5OCwgNjIsIDU3LCAzLCAyNTMsIDEzMiwgMjI5LCAKLSAgICAxMTIsIDYyLCA1NywgMywgMjUzLCAxMjYsIDIyOCwgMjM4LCA2MiwgNTcsIDMsIDI1MywgMTA1LCAyMjgsIDc5LCA2MiwgNTcsIAotICAgIDMsIDI1MywgMTAyLCAyMjcsIDI0MiwgNjIsIDU3LCAzLCAyNTMsIDE2MSwgMTkxLCA2MiwgNTcsIDMsIDI1MywgODUsIDIyNSwgCi0gICAgMjI0LCA2MiwgNTcsIDMsIDI1MywgMTE4LCAyMjUsIDExMSwgNjIsIDU3LCAzLCAyNTMsIDE0NSwgMjI1LCAxOSwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDEwNywgMjI0LCAxNTMsIDYyLCA1NywgMywgMjUzLCAxNDAsIDIyNCwgOTEsIDYyLCA1NywgMywgMjUzLCA3OSwgCi0gICAgMjI0LCA3MiwgNjIsIDU3LCAzLCAyNTMsIDEzNSwgMjI0LCA1NiwgNjIsIDU3LCAzLCAyNTMsIDEyNCwgMjI0LCA0NSwgNjIsIAotICAgIDU3LCAzLCAyNTMsIDk3LCAyMDUsIDYyLCA1NywgMywgMjUzLCAxMjksIDIyMywgMTMxLCA2MiwgNTcsIDMsIDI1MywgMTA0LCAKLSAgICAyMjMsIDM4LCA2MiwgNTcsIDMsIDI1MywgMTYzLCAyMjIsIDIxMywgNjIsIDU3LCAzLCAyNTMsIDEzMCwgMjIyLCAxNDIsIAotICAgIDYyLCA1NywgMywgMjUzLCAxMjUsIDIwNiwgNjIsIDU3LCAzLCAyNTMsIDE0OCwgMjIxLCAxODMsIDYyLCA1NywgMywgMjUzLCAKLSAgICAxMTYsIDIxOSwgMTkzLCA2MiwgNTcsIDMsIDI1MywgMTQ0LCAyMTksIDYwLCA2MiwgNTcsIDMsIDI1MywgOTksIDIxOCwgODQsIAotICAgIDYyLCA1NywgMywgMjUzLCA5OCwgMjE3LCAxMDYsIDYyLCA1NywgMywgMjUzLCAxNTksIDIxNywgMjMsIDYyLCA1NywgMywgCi0gICAgMjUzLCAxMjAsIDIxNiwgMTE4LCA2MiwgNTcsIDMsIDI1MywgMTU3LCAxMTIsIDYyLCA1NywgMywgMjUzLCA4OCwgMjE1LCAKLSAgICAxMTksIDYyLCA1NywgMywgMjUzLCAxMDMsIDIxMiwgNjUsIDYyLCA1NywgMywgMjUzLCA4MiwgMjEyLCAyMiwgNjIsIDU3LCAKLSAgICAzLCAyNTMsIDExNywgMjExLCAyNTAsIDYyLCA1NywgMywgMjUzLCAxMTUsIDIxMSwgMjI3LCA2MiwgNTcsIDMsIDI1MywgCi0gICAgMTM5LCAyMTAsIDExNiwgNjIsIDU3LCAzLCAyNTMsIDgzLCAyMTAsIDk0LCA2MiwgNTcsIDMsIDI1MywgMTM2LCAyMTAsIDIzLCAKLSAgICA2MiwgNTcsIDMsIDI1MywgMTMxLCAyNTUsIDg0LCA2MiwgNTcsIDMsIDI1MywgMTE0LCAyNTUsIDgzLCA2MiwgNTcsIDMsIAotICAgIDI1MywgNzMsIDI1MywgMjAwLCA2MiwgNTcsIDMsIDI1MywgODYsIDI0NiwgNTQsIDYyLCA1NywgMywgMjUzLCA2OSwgMjQ2LCAKLSAgICA1MywgNjIsIDU3LCAzLCAyNTMsIDEwOSwgMjI3LCAxNzgsIDYyLCA1NywgMywgMjUzLCAxMjcsIDIyNCwgMTUxLCA2MiwgNTcsIAotICAgIDMsIDI1MywgOTUsIDIyNCwgMTU1LCA2MiwgNTcsIDMsIDI1MywgODEsIDIyMywgMTg5LCA2MiwgNTcsIDMsIDI1MywgMTIzLCAKLSAgICAyMjMsIDE4OCwgNjIsIDU3LCAzLCAyNTMsIDg5LCAyMjIsIDIxMiwgNjIsIDU3LCAzLCAyNTMsIDkxLCAyMTcsIDEwMywgNjIsIAotICAgIDU3LCAzLCAyNTMsIDcxLCAyMTUsIDc4LCA2MiwgNTcsIDMsIDI1MywgNjgsIDEwNSwgNjIsIDU3LCAxNiwgMjUzLCAxMzgsIAotICAgIDYyLCA1NywgMTYsIDI1MywgMTM3LCA2MiwgNTcsIDE2LCAyNTMsIDEzNCwgNjIsIDU3LCAxNiwgMjUzLCAxMjIsIDYyLCA1NywgCi0gICAgMTYsIDI1MywgMTEwLCA2MiwgNTcsIDE2LCAyNTMsIDEwOCwgNjIsIDU3LCAxNiwgMjUzLCAxMDEsIDYyLCA1NywgMTYsIAotICAgIDI1MywgOTQsIDYyLCA1NywgMTYsIDI1MywgOTMsIDYyLCA1NywgMTYsIDI1MywgNzgsIDYyLCA1NywgMTYsIDI1MywgNzUsIAotICAgIDYyLCA1NywgMTYsIDI1MywgNzQsIDYyLCA1NywgMTYsIDI1MywgNzIsIDYyLCA1NywgMTYsIDI1MywgNzAsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDY3LCAyMzEsIDE5MCwgNjIsIDU3LCAxMDYsIDI1MywgNjYsIDIxMSwgMjIxLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA2NSwgMjQ4LCA4MiwgNjIsIDU3LCAxMDYsIDI1MywgNjQsIDI0NSwgMTAzLCA2MiwgNTcsIDEwNiwgMjUzLCA2MywgMjMxLCAKLSAgICAxNjQsIDYyLCA1NywgMTA2LCAyNTMsIDYyLCAyMTgsIDE2NCwgNjIsIDU3LCAxMDYsIDI1MywgNjEsIDI0NSwgNDUsIDYyLCAKLSAgICA1NywgMTA2LCAyNTMsIDYwLCAyMjMsIDE1NiwgNjIsIDU3LCAxMDYsIDI1MywgNTksIDIyMCwgNjQsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDU4LCAyNDEsIDI0NCwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDIxOSwgMjcsIDYyLCA1NywgMTA2LCAyNTMsIDU2LCAKLSAgICAyNTEsIDIxMSwgNjIsIDU3LCAxMDYsIDI1MywgNTUsIDI0OSwgMTUzLCA2MiwgNTcsIDEwNiwgMjUzLCA1NCwgMjUxLCAxMjMsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDUzLCAyMTIsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDUyLCAyNTIsIDE0NCwgNjIsIDU3LCAKLSAgICAxMDYsIDI1MywgNTEsIDIyNiwgMjA5LCA2MiwgNTcsIDEwNiwgMjUzLCA1MCwgMjE5LCAwLCA2MiwgNTcsIDEwNiwgMjUzLCAKLSAgICA0OSwgMjQ5LCA3NiwgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCA0OCwgMjM0LCAyMzAsIDYyLCA1NywgMjMwLCAxNDcsIDI1MywgCi0gICAgNDcsIDIzNCwgMjM4LCA2MiwgNTcsIDEwNiwgMjUzLCA0NiwgMjI2LCAyMjIsIDYyLCA1NywgMTA2LCAyNTMsIDQ1LCAyMTEsIAotICAgIDIzNiwgNjIsIDU3LCAxMDYsIDI1MywgNDQsIDYyLCA1NywgMjMwLCAxNDcsIDI1MywgNDMsIDI1NCwgMjUsIDYyLCA1NywgCi0gICAgMjMwLCAxNDcsIDI1MywgNDIsIDIzMSwgNTcsIDYyLCA1NywgMTA2LCAyNTMsIDQxLCAyNTEsIDE0MiwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgNDAsIDI0MiwgMTczLCA2MiwgNTcsIDEwNiwgMjUzLCAzOSwgNjIsIDU3LCAxMDYsIDI1MywgMzgsIDIxMSwgMjEyLCAKLSAgICA2MiwgNTcsIDEwNiwgMjUzLCAzNywgNjIsIDU3LCAxMDYsIDI1MywgMzYsIDYyLCA1NywgMTA2LCAyNTMsIDM1LCAyNDAsIAotICAgIDI1NSwgNjIsIDU3LCAxMDYsIDI1MywgMzQsIDYyLCA1NywgMTA2LCAyNTMsIDMzLCA2MiwgNTcsIDEwNiwgMjUzLCAzMiwgCi0gICAgNjIsIDU3LCAyMzAsIDE0NywgMjUzLCAzMCwgMjE1LCA5MiwgNjIsIDU3LCAxMDYsIDI1MywgMjksIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDI4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNywgMjUwLCAyLCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIDU3LCAxMDYsIAotICAgIDI1MywgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDI0LCAyNDMsIDEwMCwgNjIsIDU3LCAxMDYsIDI1MywgMjMsIDI1NCwgMTIsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDIyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDE5LCA2MiwgNTcsIDEwNiwgMjUzLCAxOCwgNjIsIDU3LCAxMDYsIDI1MywgMTcsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDE2LCA2MiwgNTcsIDEwNiwgMjUzLCAxNSwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgMTA2LCAyNTMsIAotICAgIDEzLCAyMzAsIDEzOSwgNjIsIDU3LCAxMDYsIDI1MywgMTIsIDYyLCA1NywgMTA2LCAyNTMsIDExLCAyMTUsIDIzNiwgNjIsIAotICAgIDU3LCAxMDYsIDI1MywgMTAsIDYyLCA1NywgMTA2LCAyNTMsIDksIDYyLCA1NywgMTA2LCAyNTMsIDgsIDYyLCA1NywgMTA2LCAKLSAgICAyNTMsIDcsIDYyLCA1NywgMTA2LCAyNTMsIDYsIDYyLCA1NywgMTA2LCAyNTMsIDUsIDYyLCA1NywgMTA2LCAyNTMsIDQsIAotICAgIDYyLCA1NywgMTA2LCAyNTMsIDMsIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIDYyLCA1NywgCi0gICAgMTA2LCAyNTMsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDI1NSwgMjQxLCAyMTgsIDYyLCA1NywgMTA2LCAyNTIsIDIzNCwgMjQ0LCAKLSAgICAzNiwgNjIsIDU3LCAxMDYsIDI1MiwgMjMxLCAyNTIsIDEyNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjI2LCAyMTksIDcsIDYyLCAKLSAgICA1NywgMTA2LCAyNTIsIDIyNSwgNzUsIDYyLCA1NywgMTA2LCAyNTIsIDIyNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjIzLCAyMTcsIAotICAgIDIzNywgNjIsIDU3LCAxMDYsIDI1MiwgMjIyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMjEsIDYyLCA1NywgMTA2LCAyNTIsIDIyMCwgCi0gICAgMjExLCAyNTQsIDI1MCwgMTQ3LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTksIDI1MCwgMTQ3LCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTgsIDI1MCwgMTQ4LCAyNDQsIDcsIDYyLCA1NywgMTA2LCAyNTIsIDIxNywgMjEyLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAKLSAgICAyMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxNSwgNjIsIDU3LCAyMzAsIDE0NywgMjUyLCAyMTQsIDI0NywgMjA2LCA2MiwgNTcsIAotICAgIDEwNiwgMjUyLCAyMTMsIDYyLCA1NywgMTA2LCAyNTIsIDIxMiwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCA2MiwgNTcsIDEwNiwgCi0gICAgMjUyLCAyMDksIDYyLCA1NywgMTA2LCAyNTIsIDIwOCwgNjIsIDU3LCAxMDYsIDI1MiwgMjA3LCAyNDgsIDE2NywgNjIsIDU3LCAKLSAgICAxMDYsIDI1MiwgMjA2LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDUsIDYyLCA1NywgMTA2LCAyNTIsIDIwNCwgNjIsIDU3LCAxMDYsIAotICAgIDI1MiwgMjAzLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDIsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUzLCAzMSwgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDI1NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI1MywgNjIsIDU3LCAxMDYsIAotICAgIDIxMywgMTg2LCAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI1MSwgNjIsIDU3LCAxMDYsIDIxMywgCi0gICAgMTg2LCAyNTIsIDI1MCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0OSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKLSAgICAyNTIsIDI0OCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAotICAgIDI0NiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NCwgCi0gICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MiwgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MCwgNjIsIDU3LCAxMDYsIAotICAgIDIxMywgMTg2LCAyNTIsIDIzOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOCwgNjIsIDU3LCAxMDYsIDIxMywgCi0gICAgMTg2LCAyNTIsIDIzNywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKLSAgICAyNTIsIDIzNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAotICAgIDIzMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOSwgCi0gICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNywgNjIsIDU3LCAKLSAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIxMSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIwMSwgMjU0LCAyNDUsIDIxMSwgCi0gICAgMjA5LCAyMjAsIDE0MCwgMjMyLCAyMTksIDI1NCwgMjQ1LCAyMTEsIDIwOSwgMjIwLCAxNDAsIDI0NywgMTI4LCAyNTQsIAotICAgIDI0NSwgMjUwLCAxMzgsIDc5LCAyNTQsIDI0NSwgNTQsIDExMSwgMjU0LCAyNDUsIDU0LCAxMDUsIDI1NCwgMjQ1LCA1NCwgCi0gICAgMTU4LCAyNTQsIDI0NSwgNTQsIDE2MSwgMjU0LCAyNDUsIDU0LCAxOTAsIDI1NCwgMjQ1LCA1NCwgMTk1LCAyNTQsIDI0NSwgCi0gICAgNTQsIDE5OSwgMjU0LCAyNDUsIDU0LCAxOTYsIDI1NCwgMjQ1LCA1NCwgMjAxLCAyNTQsIDI0NSwgNTQsIDIxNiwgMjQ4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDIxNSwgNzMsIDI1NCwgMjQ1LCA1NCwgMjE2LCAxNjMsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAyMywgCi0gICAgMjU0LCAyNDUsIDU0LCAyNDQsIDEyMiwgMjU0LCAyNDUsIDU0LCAyMTksIDExMywgMjU0LCAyNDUsIDU0LCAyMjAsIDExOCwgCi0gICAgMjU0LCAyNDUsIDU0LCAyNDUsIDE5MiwgMjU0LCAyNDUsIDU0LCAyMjgsIDIwMCwgMjU0LCAyNDUsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjE3LCAyNTQsIDI0NSwgNTQsIDExMywgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMTM0LCAyNDAsIDIxNywgMjU0LCAyNDUsIAotICAgIDU0LCAyNDQsIDE5LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyNDQsIDg5LCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAKLSAgICAyMTksIDEyNywgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMjIwLCAxMjQsIDI0MCwgMjE3LCAyNTQsIDI0NSwgNTQsIDI0NSwgCi0gICAgMjAxLCAyNDAsIDIxNywgMjU0LCAyNDUsIDU0LCAyMjgsIDIwNSwgMjQwLCAyMTcsIDI1NCwgMjQ1LCA1NCwgMTIzLCAyMTYsIAotICAgIDE0OCwgMjU0LCAyNDUsIDU0LCAxMTMsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDEzNCwgMjE2LCAxNDgsIDI1NCwgMjQ1LCAKLSAgICA1NCwgMjQ0LCAxOSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCA4OSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgCi0gICAgMjE5LCAxMjcsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyMCwgMTI0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyNDUsIAotICAgIDIwMSwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjI4LCAyMDUsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIxNiwgMjQ5LCAKLSAgICAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMTUsIDc0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMTYsIDE2NCwgMjE2LCAKLSAgICAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAyNCwgMjE2LCAxNDgsIDI1NCwgMjQ1LCA1NCwgMjQ0LCAxMjMsIDIxNiwgMTQ4LCAKLSAgICAyNTQsIDI0NSwgNTQsIDIxOSwgMTE0LCAyMTYsIDE0OCwgMjU0LCAyNDUsIDU0LCAyMjAsIDExOSwgMjE2LCAxNDgsIDI1NCwgCi0gICAgMjQ1LCA1NCwgMjQ1LCAxOTMsIDIxNiwgMTQ4LCAyNTQsIDI0NSwgNTQsIDIyOCwgMjAxLCAyMTYsIDE0OCwgMjU0LCAyNDUsIAotICAgIDIxMiwgMTQsIDI1MiwgMTM2LCAyMTQsIDE3MywgMjU0LCAyNDUsIDIxMiwgMTQsIDI0NCwgMTAwLCAyMTgsIDYwLCAyNTQsIAotICAgIDI0NSwgMjEyLCAxNCwgMjIxLCAxNzgsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyMTIsIDE0LCAyMTYsIDE3MCwgMjE4LCA2MCwgCi0gICAgMjU0LCAyNDUsIDIxMiwgMTQsIDI0NCwgMTIsIDIxOCwgNjAsIDI1NCwgMjQ1LCAyNDYsIDg5LCAyMzEsIDk1LCAyNDQsIAotICAgIDEwMCwgMjE4LCA2MCwgMjU0LCAyNDUsIDIzMiwgMjA1LCAyMzEsIDk1LCAyNDQsIDEwMCwgMjE4LCA2MCwgMjU0LCAyNDUsIAotICAgIDIzMSwgOTUsIDIyMSwgMTc4LCAyMTgsIDYwLCAyNTQsIDI0NSwgMjMxLCA5NSwgMjE2LCAxNzAsIDIxOCwgNjAsIDI2LCAKLSAgICAyNTUsIDE1LCAyNTMsIDIwMiwgMTIzLCAyMjQsIDI0LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjQyLCAzNCwgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDI0NiwgMTA4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDE5MCwgMjYsIDI1NSwgCi0gICAgMTUsIDI1MywgMjAyLCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxNywgMjYsIAotICAgIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgCi0gICAgMjE2LCAxNDgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAKLSAgICAyMTYsIDI0OSwgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgMjE3LCA2OCwgMjYsIDI1NSwgMTUsIAotICAgIDI1MywgMjAyLCAxMjMsIDI0MCwgMjE4LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDI0NCwgODksIDI0MCwgCi0gICAgMjE4LCAyMTcsIDY4LCAyNiwgMjU1LCAxNSwgMjUzLCAyMDIsIDEyMywgMjE2LCAxNDksIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAKLSAgICAyNTMsIDIwMiwgMjQ0LCA4OSwgMjE2LCAxNDksIDIxNywgNjgsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjQ0LCA4OSwgCi0gICAgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIxOCwgMTUyLCAyNiwgMjU1LCAxNSwgMjUzLCAKLSAgICAyMDIsIDI0NCwgMTIzLCAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAxMjMsIDI0MCwgMjE4LCAyMTgsIDE1MiwgCi0gICAgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDg5LCAyNDAsIDIxOCwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIAotICAgIDIwMiwgMTIzLCAyMTYsIDE0OSwgMjE4LCAxNTIsIDI2LCAyNTUsIDE1LCAyNTMsIDIwMiwgMjE2LCAyNDksIDIxNiwgMTQ5LCAKLSAgICAyMTgsIDE1MiwgMjYsIDI1NSwgMTUsIDI1MywgMjAyLCAyNDQsIDEyMywgMjE2LCAxNDksIDIxOCwgMTUyLCAyNiwgMjU1LCAKLSAgICAxNSwgMjUzLCAyMDIsIDIxNiwgMjQ5LCAyMzAsIDE2OSwgMjYsIDI1NSwgMTUsIDI0MSwgMjEyLCAxMjMsIDIyNSwgMzQsIAotICAgIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTExLCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDExMSwgMjYsIDI1NSwgMTUsIDI0NSwgCi0gICAgMTEyLCAxMDUsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMTA1LCAyNiwgMjU1LCAxNSwgMjQ5LCA3MywgMTEzLCAyNDYsIAotICAgIDEwNywgMjYsIDI1NSwgMTUsIDI0NSwgMTEyLCAxMTMsIDI0NiwgMTA3LCAyNiwgMjU1LCAxNSwgMjE1LCAyMDQsIDE5MCwgCi0gICAgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyMTYsIDI0OCwgMjYsIDI1NSwgMTUsIDIxNSwgMjA0LCAyMTYsIDI0OSwgMjU0LCAKLSAgICAxNDksIDE3LCAyNiwgMjU1LCAxNSwgMjQxLCAyMDgsIDIxNiwgMjQ4LCAyNiwgMjU1LCAxNSwgMjMxLCA0NiwgMjE2LCAyNDgsIAotICAgIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjE2LCAyNDgsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjE2LCAxNjMsIDI2LCAKLSAgICAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCAxMjIsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCAxMjMsIDI1NCwgMTQ5LCAKLSAgICAxNywgMjYsIDI1NSwgMTUsIDI0MSwgMjA4LCAyNDQsIDEyMiwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDEyMiwgMjYsIAotICAgIDI1NSwgMTUsIDIxNiwgMTgyLCAxMjMsIDI0MCwgMjE3LCAyNiwgMjU1LCAxNSwgMjE2LCAxODIsIDEzNCwgMjQwLCAyMTcsIAotICAgIDI2LCAyNTUsIDE1LCAyNDUsIDExMiwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTUsIDIwNCwgMjQ0LCA4OSwgCi0gICAgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMTYsIDE4MiwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyNTAsIAotICAgIDIzNSwgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAyNTUsIDE1LCAyMjksIDE4NywgMjQ0LCA4OSwgMjQwLCAyMTcsIDI2LCAKLSAgICAyNTUsIDE1LCAyMTYsIDE4MiwgMTIzLCAyMTYsIDE0OCwgMjYsIDI1NSwgMTUsIDIxNiwgMTgyLCAyNDQsIDg5LCAyMTYsIAotICAgIDE0OCwgMjYsIDI1NSwgMTUsIDI0OCwgNjUsIDI0NCwgODksIDIzMCwgMTY5LCAyNiwgMjU1LCAxNSwgMjE4LCAxMjAsIDI0NCwgCi0gICAgMTIzLCAyMzAsIDE2OSwgMjYsIDEyMywgMTYzLCA1MCwgMjYsIDEyMywgMTYzLCA1LCAyNTQsIDE0OSwgMTcsIDI2LCAxMTMsIAotICAgIDIxNiwgMTY4LCA1MCwgMjYsIDEzNCwgMjI0LCAyMywgNTAsIDI2LCAyMTEsIDQ1LCA1MCwgMjYsIDIxNywgNjksIDUwLCAyNiwgCi0gICAgMjQ2LCAxMDksIDUwLCAyNiwgMjI2LCAyNTAsIDUwLCAyNiwgMTEzLCAyMjYsIDI0OSwgNTAsIDI2LCAxMzQsIDIyNiwgMjQ5LCAKLSAgICA1MCwgMjYsIDI0NCwgMTksIDIyNiwgMjQ5LCA1MCwgMjYsIDI0NCwgODksIDIyNiwgMjQ5LCA1MCwgMjYsIDIzMSwgNDAsIAotICAgIDUwLCAyNiwgMjMzLCAxNjMsIDI1MiwgMTM2LCA1MCwgMjYsIDIzMiwgMjAwLCA1MCwgMjYsIDIyNiwgMTM1LCA1MCwgMjYsIAotICAgIDIxMSwgMTU5LCA1MCwgMjYsIDI1MywgMjUxLCA1MCwgMjYsIDI1NCwgOCwgNTAsIDI2LCAyNDIsIDE1MSwgNTAsIDI2LCAKLSAgICAyMTUsIDE4NywgMjUyLCAxMzYsIDUwLCAyNiwgMjEwLCA4NywgNTAsIDIyMiwgMjAwLCAyMjAsIDExNSwgNTAsIDIyMiwgCi0gICAgMjAwLCAyMTQsIDE4NSwgNTAsIDIyMiwgMjAwLCAyMjAsIDE0NCwgNTAsIDIyMiwgMjAwLCAyMjAsIDExMywgNTAsIDIyMiwgCi0gICAgMjAwLCAyNDcsIDIyMSwgMjIwLCAxMTMsIDUwLCAyMjIsIDIwMCwgMjE5LCAxNzAsIDUwLCAyMjIsIDIwMCwgMjQ4LCA2MSwgCi0gICAgNTAsIDIyMiwgMjAwLCAyMjQsIDksIDUwLCAyMjIsIDIwMCwgMjIwLCAxMzEsIDUwLCAyMjIsIDIwMCwgMjQ2LCA2OCwgNTAsIAotICAgIDIyMiwgMjAwLCAyNTMsIDI0NiwgNTAsIDIyMiwgMjAwLCAyNTAsIDE3OSwgNTAsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjI1LCAyMTYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjI1LCAyNywgMjQxLCAyNDIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjE3LCA0NiwgMjQxLCAyNDIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUwLCAyNTUsIDIyNSwgMTQ2LCAyNDcsIAotICAgIDE5OSwgNSwgMjUwLCAxMDksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjExLCAyMjEsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjQxLCAyMTgsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQzLCA5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTYsIAotICAgIDExNywgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCA3NSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNTEsIDE3NywgMjI1LCAKLSAgICAxNDYsIDI0NywgMTk5LCA1LCAyMjAsIDMxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0OSwgMjUyLCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDIzMSwgMTg5LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMSwgMTQxLCAyMjUsIDE0NiwgMjQ3LCAKLSAgICAxOTksIDUsIDIyMSwgMjE4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIzMiwgMjQzLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIAotICAgIDI1MSwgMTk2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MCwgMjM5LCAyMjUsIDM4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIAotICAgIDUsIDI0NywgMTQxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0OSwgMjMxLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIxOSwgCi0gICAgODksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjQ5LCAyMzIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjUyLCA3MSwgMjI1LCAKLSAgICAxNDYsIDI0NywgMTk5LCA1LCAyMjAsIDE4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0MCwgMjU1LCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDI0MSwgMTg1LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MSwgMTIwLCAyMzMsIDQyLCAyMjUsIAotICAgIDE0NiwgMjQ3LCAxOTksIDUsIDI1MCwgMjMyLCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDIyMywgMTU2LCAyMjUsIDE0NiwgCi0gICAgMjQ3LCAxOTksIDUsIDI0NSwgMjM4LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI0NiwgMTE1LCAyMjUsIDE0NiwgMjQ3LCAKLSAgICAxOTksIDUsIDIxNSwgMTA2LCAyMjUsIDE0NiwgMjQ3LCAxOTksIDUsIDI1MiwgNzQsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjI1LCAzOSwgMjE1LCAyMzYsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgMjEzLCAxNTksIDIyNSwgMTQ2LCAyNDcsIDE5OSwgCi0gICAgNSwgMjI2LCAyMiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjIsIDE5MiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMzIsIAotICAgIDIzMCwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMjYsIDExOSwgMjUyLCAxOTIsIDIyNSwgMTQ2LCAyNDcsIDE5OSwgNSwgCi0gICAgMjQ0LCA1NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyNDIsIDE0NSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTgsIAotICAgIDEyMSwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCA0LCAyNTMsIDE3NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAyMTIsIDMyLCAKLSAgICAyNTIsIDE1NiwgMjI1LCAxNDYsIDI0NywgMTk5LCA1LCAzOCwgMjI2LCAyNTIsIDkxLCAyMzIsIDY1LCAxLCA2MSwgMjMyLCAKLSAgICA2NSwgMSwgNzYsIDIzMiwgNjUsIDEsIDI1MywgMTY2LCAyMzIsIDY1LCAxLCAyNTIsIDI3LCAyMzIsIDY1LCAxLCAyNDMsIAotICAgIDIwOSwgMjMyLCA2NSwgMSwgMjQ5LCA2OCwgMjMyLCA2NSwgMSwgNzQsIDIzMiwgNjUsIDEsIDIxMiwgOTgsIDIzMiwgNjUsIAotICAgIDEsIDIxMCwgMTU5LCAyMzIsIDY1LCAxLCAyMTYsIDIxMSwgMjMyLCA2NSwgMSwgMjM1LCAxNTAsIDIzMiwgNjUsIDEsIDIzNSwgCi0gICAgMjksIDIzMiwgNjUsIDEsIDIyNCwgOTksIDIzMiwgNjUsIDEsIDE1NiwgMjMyLCA2NSwgMSwgMTk0LCAyMzIsIDY1LCAxLCAKLSAgICAyMzAsIDMwLCAyMzIsIDY1LCAxLCAyMzAsIDE3MSwgMjMyLCA2NSwgMSwgMjI4LCAxMTYsIDIzMiwgNjUsIDEsIDY5LCAyMzIsIAotICAgIDY1LCAxLCAyMjYsIDEwOSwgMjMyLCA2NSwgMSwgMjM0LCA1MywgMjMyLCA2NSwgMSwgMTUzLCAyMzIsIDY1LCAxLCAyMjIsIAotICAgIDkzLCAyMzIsIDY1LCAxLCAyMTcsIDE1MywgMjMyLCA2NSwgMSwgMjE1LCAxNjAsIDIzMiwgNjUsIDEsIDI1NCwgMTMxLCAKLSAgICAyMzIsIDY1LCAxLCAyNDUsIDE1OCwgMjMyLCA2NSwgMSwgMjQyLCA2NywgMjMyLCA2NSwgMSwgMjExLCAxNzgsIDI1MCwgCi0gICAgMjQ1LCAxLCA2MSwgMjUwLCAyNDUsIDEsIDIyNiwgOTUsIDI1MCwgMjQ1LCAxLCAyNDksIDY4LCAyNTAsIDI0NSwgMSwgMTU2LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE0LCAxMTYsIDI1MCwgMjQ1LCAxLCAxNTMsIDI1MCwgMjQ1LCAxLCAyMzMsIDY4LCAyNTAsIDI0NSwgCi0gICAgMSwgMjU1LCA4NCwgMjUwLCAyNDUsIDEsIDIyNCwgOTksIDI1MCwgMjQ1LCAxLCAyNTMsIDE2NiwgMjUwLCAyNDUsIDEsIAotICAgIDE5NCwgMjUwLCAyNDUsIDEsIDc4LCAyNTAsIDI0NSwgMSwgMjQ4LCAyMzEsIDI1MCwgMjQ1LCAxLCAyMTcsIDE1MywgMjUwLCAKLSAgICAyNDUsIDEsIDIyMCwgMTA2LCAyNTAsIDI0NSwgMSwgMjIwLCAxMDUsIDI1MCwgMjQ1LCAxLCAyMjIsIDkzLCAyNTAsIDI0NSwgCi0gICAgMSwgMjUxLCA3MywgMjUwLCAyNDUsIDEsIDY5LCAyNTAsIDI0NSwgMSwgMjI4LCAxMTYsIDI1MCwgMjQ1LCAxLCAyMTEsIAotICAgIDE3OCwgMjUwLCAyNDUsIDEsIDIzMCwgMzAsIDI1MCwgMjQ1LCAxLCAyMTUsIDE1OSwgMjUwLCAyNDUsIDEsIDIyNiwgMTA5LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE4LCAyMjgsIDI1MCwgMjQ1LCAxLCA3NCwgMjUwLCAyNDUsIDEsIDc2LCAyNTAsIDI0NSwgMSwgCi0gICAgMjE0LCAxMTMsIDI1MCwgMjQ1LCAxLCAyMzUsIDI5LCAyNTAsIDI0NSwgMSwgMjM1LCAyMCwgMjUwLCAyNDUsIDEsIDIyOSwgCi0gICAgMTU1LCAyNTAsIDI0NSwgMSwgMjE0LCAxMTgsIDI1MCwgMjQ1LCAxLCAyNDMsIDIwOSwgMjUwLCAyNDUsIDEsIDI0MywgMTQ0LCAKLSAgICAyNTAsIDI0NSwgMSwgMjE4LCAxNzAsIDI1MCwgMjQ1LCAxLCAyMTgsIDE2OSwgMjUwLCAyNDUsIDEsIDIyOSwgODQsIDI1MCwgCi0gICAgMjQ1LCAxLCAyMzYsIDQwLCAyNTAsIDI0NSwgMSwgMjUxLCA3MiwgMjUwLCAyNDUsIDEsIDIxNSwgMTYwLCAyNTAsIDI0NSwgCi0gICAgMSwgMjE0LCAxMTUsIDI1MCwgMjQ1LCAxLCAyMjIsIDE4MiwgMjUwLCAyNDUsIDEsIDIzMSwgMTM0LCAyNTAsIDI0NSwgMSwgCi0gICAgMjMxLCAxMzMsIDI1MCwgMjQ1LCAxLCAyMzEsIDEzMiwgMjUwLCAyNDUsIDEsIDIzMSwgMTMxLCAyNTAsIDI0NSwgMSwgMjMzLCAKLSAgICA2NywgMjUwLCAyNDUsIDEsIDI0NSwgMjQyLCAyNTAsIDI0NSwgMSwgMjE0LCAxMTQsIDU1LCAzMiwgMSwgNjEsIDU1LCAzMiwgCi0gICAgMSwgMjUyLCA4MywgNTUsIDMyLCAxLCAyMzQsIDE4OCwgNTUsIDMyLCAxLCAyNDgsIDk4LCA1NSwgMzIsIDEsIDc2LCA1NSwgCi0gICAgMzIsIDEsIDIxMywgMjU1LCA1NSwgMzIsIDEsIDIxMCwgOTQsIDU1LCAzMiwgMSwgMjQxLCAyNDUsIDU1LCAzMiwgMSwgMjE2LCAKLSAgICAxOTYsIDU1LCAzMiwgMSwgNzQsIDU1LCAzMiwgMSwgMTc2LCA1NSwgMzIsIDEsIDI0NSwgMTgyLCA1NSwgMzIsIDEsIDI0NSwgCi0gICAgMTY3LCA1NSwgMzIsIDEsIDI0NSwgMTU4LCA1NSwgMzIsIDEsIDI0NSwgODMsIDU1LCAzMiwgMSwgNzgsIDU1LCAzMiwgMSwgCi0gICAgMjI1LCAyMjQsIDU1LCAzMiwgMSwgMjIwLCA2NSwgNTUsIDMyLCAxLCAyMzMsIDIyMywgNTUsIDMyLCAxLCAyNDUsIDEwMCwgCi0gICAgNTUsIDMyLCAxLCAyNDUsIDkwLCA1NSwgMzIsIDEsIDIxNywgMjMsIDU1LCAzMiwgMSwgNjksIDU1LCAzMiwgMSwgMjQ1LCAKLSAgICAxODUsIDU1LCAzMiwgMSwgMjI1LCAxMzksIDU1LCAzMiwgMSwgMjM0LCAxMjUsIDU1LCAzMiwgMSwgMjQ1LCAyMTAsIDU1LCAKLSAgICAzMiwgMSwgMjQ1LCA5MiwgNTUsIDMyLCAxLCAyNTAsIDEzOSwgNTUsIDMyLCAxLCAyMzYsIDQwLCA1NSwgMzIsIDEsIDIxNCwgCi0gICAgMTE4LCA1NSwgMzIsIDIyNywgMjAyLCAxMTEsIDU1LCAzMiwgMjI3LCAyMDIsIDE5MCwgNTUsIDMyLCAyMjcsIDIwMiwgMjE2LCAKLSAgICAyNDgsIDU1LCAzMiwgMjI3LCAyMDIsIDI0NCwgMTIyLCAyNDIsIDE2MCwgMSwgMjU0LCAyMTMsIDI0MiwgMTYwLCAxLCAyNTIsIAotICAgIDE3MSwgMjQyLCAxNjAsIDEsIDI0MiwgMjE4LCAyNDIsIDE2MCwgMSwgMjQ4LCAyMTIsIDI0MiwgMTYwLCAxLCAyNTQsIDIwOSwgCi0gICAgMjQyLCAxNjAsIDEsIDIyNCwgODIsIDI0MiwgMTYwLCAxLCAyMzUsIDE2MSwgMjQyLCAxNjAsIDEsIDI0MiwgNDYsIDI0MiwgCi0gICAgMTYwLCAxLCAyMTYsIDE1OSwgMjQyLCAxNjAsIDEsIDI0NSwgMTkxLCAyNDIsIDE2MCwgMSwgMjMzLCAxOTYsIDI0MiwgMTYwLCAKLSAgICAxLCAyMzMsIDExOSwgMjQyLCAxNjAsIDEsIDIzMSwgMTg0LCAyNDIsIDE2MCwgMSwgMjI5LCAxODksIDI0MiwgMTYwLCAxLCAKLSAgICAyMzUsIDEyNSwgMjQyLCAxNjAsIDEsIDIxNCwgMTM2LCAyNDIsIDE2MCwgMSwgMjI2LCA3MywgMjQyLCAxNjAsIDEsIDIyOCwgCi0gICAgMjAwLCAyNDIsIDE2MCwgMSwgMjIzLCAxNjgsIDI0MiwgMTYwLCAxLCAyMjEsIDIyMCwgMjQyLCAxNjAsIDEsIDIxNywgNSwgCi0gICAgMjQyLCAxNjAsIDEsIDIxMSwgMjM0LCAyNDIsIDE2MCwgMSwgMjQ0LCAxODYsIDI0MiwgMTYwLCAxLCAyMzYsIDQ0LCAyNDIsIAotICAgIDE2MCwgMSwgMjQwLCAyMDYsIDI0MiwgMTYwLCAxLCAyMjYsIDE0MywgMjQyLCAxNjAsIDEsIDIyOCwgMjA1LCAyNDAsIDIxNywgCi0gICAgMjE0LCAyMDksIDEsIDI1NCwgMTU1LCAyMTQsIDIwOSwgMSwgMjUyLCAzNCwgMjE0LCAyMDksIDEsIDI0MywgMTE1LCAyMTQsIAotICAgIDIwOSwgMSwgMjM0LCAxMzgsIDIxNCwgMjA5LCAxLCAyNDgsIDYyLCAyMTQsIDIwOSwgMSwgMjQxLCA3NSwgMjE0LCAyMDksIAotICAgIDEsIDIxMSwgMjI3LCAyMTQsIDIwOSwgMSwgMjEwLCA4NSwgMjE0LCAyMDksIDEsIDI0MCwgMjQ4LCAyMTQsIDIwOSwgMSwgCi0gICAgMjE2LCAyMzEsIDIxNCwgMjA5LCAxLCAyMTAsIDIzMywgMjE0LCAyMDksIDEsIDIzNSwgMCwgMjE0LCAyMDksIDEsIDIyMCwgCi0gICAgMjIsIDIxNCwgMjA5LCAxLCAyMzMsIDEwNCwgMjE0LCAyMDksIDEsIDIzMSwgNzAsIDIxNCwgMjA5LCAxLCAyNDgsIDI5LCAKLSAgICAyMTQsIDIwOSwgMSwgMjI3LCAxOTgsIDIxNCwgMjA5LCAxLCAyMTAsIDEzLCAyMTQsIDIwOSwgMSwgMjIxLCAyNTAsIDIxNCwgCi0gICAgMjA5LCAxLCAyNTQsIDIwNSwgMjE0LCAyMDksIDEsIDIyNCwgMTUzLCAyMTQsIDIwOSwgMSwgMjIyLCAyNywgMjE0LCAyMDksIAotICAgIDEsIDIyNCwgMzgsIDIxNCwgMjA5LCAxLCAyMjMsIDE0NywgMjE0LCAyMDksIDEsIDIxNiwgMjAwLCAyMTQsIDIwOSwgMSwgCi0gICAgMjQyLCAyNTEsIDIxNCwgMjA5LCAxLCAxMTIsIDIxNCwgMjA5LCAxLCA3NCwgMjE0LCAyMDksIDEsIDY5LCAyMTQsIDIwOSwgCi0gICAgMSwgMjE4LCAxODEsIDIxNCwgMjA5LCAyMTEsIDIwOSwgMjQ3LCAxODAsIDU1LCAyMjUsIDE3MiwgNSwgNjEsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgNzQsIDU1LCAyMjUsIDE3MiwgNSwgNjksIDU1LCAyMjUsIDE3MiwgNSwgMTc2LCA1NSwgMjI1LCAxNzIsIDUsIAotICAgIDIzMywgMjIzLCA1NSwgMjI1LCAxNzIsIDUsIDI0MywgMTQyLCA1NSwgMjI1LCAxNzIsIDUsIDI0MiwgMTIwLCA1NSwgMjI1LCAKLSAgICAxNzIsIDUsIDIxMSwgMTY1LCA1NSwgMjI1LCAxNzIsIDUsIDI1MSwgNDEsIDU1LCAyMjUsIDE3MiwgNSwgMjM1LCAxNDcsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMjM1LCAxMTQsIDU1LCAyMjUsIDE3MiwgNSwgMjE3LCAxMDYsIDU1LCAyMjUsIDE3MiwgNSwgCi0gICAgMjE1LCAxMTksIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAyMjksIDU1LCAyMjUsIDE3MiwgNSwgMjQ4LCAxMSwgNTUsIDIyNSwgCi0gICAgMTcyLCA1LCAyNDYsIDg2LCA1NSwgMjI1LCAxNzIsIDUsIDIxNiwgMjA5LCA1NSwgMjI1LCAxNzIsIDUsIDE5MSwgNTUsIAotICAgIDIyNSwgMTcyLCA1LCAyNTIsIDE5OSwgNTUsIDIyNSwgMTcyLCA1LCAyNDQsIDIwNCwgNTUsIDIyNSwgMTcyLCA1LCAxOTgsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMjI3LCAyNDIsIDU1LCAyMjUsIDE3MiwgNSwgMTg2LCA1NSwgMjI1LCAxNzIsIDUsIDIzMCwgCi0gICAgMjM1LCA1NSwgMjI1LCAxNzIsIDUsIDIzMCwgMTA3LCA1NSwgMjI1LCAxNzIsIDUsIDE5MiwgNTUsIDIyNSwgMTcyLCA1LCAKLSAgICAyMTQsIDI3LCA1NSwgMjI1LCAxNzIsIDUsIDIxMywgMTc2LCA1NSwgMjI1LCAxNzIsIDUsIDIwNSwgNTUsIDIyNSwgMTcyLCAKLSAgICA1LCAyMjIsIDE0MiwgNTUsIDIyNSwgMTcyLCA1LCAyMzMsIDE0MSwgNTUsIDIyNSwgMTcyLCA1LCAyMDYsIDU1LCAyMjUsIAotICAgIDE3MiwgNSwgMjEwLCAxMTYsIDU1LCAyMjUsIDE3MiwgNSwgMjIwLCAxMDQsIDU1LCAyMjUsIDE3MiwgNSwgMjE4LCAyMjUsIAotICAgIDU1LCAyMjUsIDE3MiwgNSwgMTYyLCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgMTk0LCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgCi0gICAgMTkzLCA1NSwgMjI1LCAxNzIsIDUsIDI1MywgMTkyLCA1NSwgMjI1LCAxNzIsIDUsIDIxMSwgMTQyLCA1NSwgMjI1LCAxNzIsIAotICAgIDUsIDI0OCwgMjA4LCA1NSwgMjI1LCAxNzIsIDUsIDI0OCwgMjA3LCA1NSwgMjI1LCAxNzIsIDUsIDI1MiwgMTc4LCA1NSwgCi0gICAgMjI1LCAxNzIsIDUsIDI1MSwgOTMsIDU1LCAyMjUsIDE3MiwgMjExLCAyMDksIDI0NywgMTgwLCA1NSwgMjI1LCAxNzIsIDU0LCAKLSAgICAxMTEsIDU1LCAyMjUsIDE3MiwgNTQsIDEwNSwgNTUsIDIyNSwgMTcyLCA1NCwgMjE2LCAyNDgsIDU1LCAyMjUsIDE3MiwgNTQsIAotICAgIDIxNSwgNzMsIDU1LCAyMjUsIDE3MiwgNTQsIDI0MCwgMjE3LCAxODEsIDYsIDEsIDIwMCwgNzQsIDE4MSwgNiwgMSwgMjAwLCAKLSAgICA3NiwgMTgxLCA2LCAxLCAyMDAsIDYxLCAxODEsIDYsIDEsIDIwMCwgMjU0LCAyMTgsIDE4MSwgNiwgMSwgMjAwLCA3OCwgCi0gICAgMTgxLCA2LCAxLCAyMDAsIDIyNiwgMTg3LCAxODEsIDYsIDEsIDIxOSwgMjUzLCA3NCwgMTgxLCA2LCAxLCAyMTksIDI1MywgCi0gICAgNzYsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDYxLCAxODEsIDYsIDEsIDIxOSwgMjUzLCAyNTQsIDIxOCwgMTgxLCA2LCAxLCAKLSAgICAyMTksIDI1MywgNzgsIDE4MSwgNiwgMSwgMjE5LCAyNTMsIDIyNiwgMTg3LCAxODEsIDYsIDEsIDI1MywgMTc1LCAxODEsIDYsIAotICAgIDEsIDIyNiwgMTIwLCAxODEsIDYsIDEsIDIxMSwgMTk1LCAxODEsIDYsIDEsIDIxMSwgNDQsIDE4MSwgNiwgMSwgMjQyLCA2NywgCi0gICAgMTgxLCA2LCAxLCAyMjUsIDIxNCwgMTgxLCA2LCAxLCAyNTIsIDc0LCAxODEsIDYsIDEsIDIxNywgMTIsIDE4MSwgNiwgMSwgCi0gICAgMjQ4LCA4NSwgMTgxLCA2LCAxLCAyNTAsIDEzNiwgMTgxLCA2LCAxLCAyMzUsIDEzMCwgMTgxLCA2LCAxLCAyMzQsIDE5NSwgCi0gICAgMTgxLCA2LCAxLCAyNDMsIDkwLCAxODEsIDYsIDEsIDI0NSwgMjEwLCAxODEsIDYsIDEsIDIxMywgMjUwLCAxODEsIDYsIDEsIAotICAgIDI0NSwgNjcsIDE4MSwgNiwgMSwgMjE2LCAxOTUsIDE4MSwgNiwgMSwgMjQ1LCA5MCwgMTgxLCA2LCAxLCAyMTAsIDkyLCAKLSAgICAxODEsIDYsIDEsIDI0NSwgODMsIDE4MSwgNiwgMSwgMjEwLCA3MywgMTgxLCA2LCAxLCAyNDUsIDEwMCwgMTgxLCA2LCAxLCAKLSAgICAyNDUsIDE4MiwgMTgxLCA2LCAxLCAyNDUsIDE2NywgMTgxLCA2LCAxLCAyNDUsIDE1OCwgMTgxLCA2LCAxLCAyNDUsIDE0NiwgCi0gICAgMTgxLCA2LCAxLCAyMjYsIDIyMywgMTgxLCA2LCAxLCAyNDUsIDQ2LCAxODEsIDQsIDEsIDIwMCwgNzQsIDE4MSwgNCwgMSwgCi0gICAgMjAwLCA3NiwgMTgxLCA0LCAxLCAyMDAsIDYxLCAxODEsIDQsIDEsIDIwMCwgMjU0LCAyMTgsIDE4MSwgNCwgMSwgMjAwLCAKLSAgICA3OCwgMTgxLCA0LCAxLCAyMDAsIDIyNiwgMTg3LCAxODEsIDQsIDEsIDIxOSwgMjUzLCA3NCwgMTgxLCA0LCAxLCAyMTksIAotICAgIDI1MywgNzYsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDYxLCAxODEsIDQsIDEsIDIxOSwgMjUzLCAyNTQsIDIxOCwgMTgxLCA0LCAKLSAgICAxLCAyMTksIDI1MywgNzgsIDE4MSwgNCwgMSwgMjE5LCAyNTMsIDIyNiwgMTg3LCAxODEsIDQsIDEsIDI1MywgMTc1LCAxODEsIAotICAgIDQsIDEsIDIyNiwgMTIwLCAxODEsIDQsIDEsIDIxMSwgMTk1LCAxODEsIDQsIDEsIDIxMSwgNDQsIDE4MSwgNCwgMSwgMjQyLCAKLSAgICA2NywgMTgxLCA0LCAxLCAyMjUsIDIxNCwgMTgxLCA0LCAxLCAyNTIsIDc0LCAxODEsIDQsIDEsIDIxNywgMTIsIDE4MSwgNCwgCi0gICAgMSwgMjQ4LCA4NSwgMTgxLCA0LCAxLCAyNTAsIDEzNiwgMTgxLCA0LCAxLCAyMzUsIDEzMCwgMTgxLCA0LCAxLCAyMzQsIAotICAgIDE5NSwgMTgxLCA0LCAxLCAyNDMsIDkwLCAxODEsIDQsIDEsIDI0NSwgMjEwLCAxODEsIDQsIDEsIDIxMywgMjUwLCAxODEsIAotICAgIDQsIDEsIDI0NSwgNjcsIDE4MSwgNCwgMSwgMjE2LCAxOTUsIDE4MSwgNCwgMSwgMjQ1LCA5MCwgMTgxLCA0LCAxLCAyMTAsIAotICAgIDkyLCAxODEsIDQsIDEsIDI0NSwgODMsIDE4MSwgNCwgMSwgMjEwLCA3MywgMTgxLCA0LCAxLCAyNDUsIDEwMCwgMTgxLCA0LCAKLSAgICAxLCAyNDUsIDE4MiwgMTgxLCA0LCAxLCAyNDUsIDE2NywgMTgxLCA0LCAxLCAyNDUsIDE1OCwgMTgxLCA0LCAxLCAyNDUsIAotICAgIDE0NiwgMTgxLCA0LCAxLCAyMjYsIDIyMywgMTgxLCA0LCAxLCAyNDUsIDQ2LCAyMjAsIDcxLCAxLCAyMjUsIDIxMiwgMjIwLCAKLSAgICA3MSwgMSwgMjE2LCA2LCAyMjAsIDcxLCAxLCAyMzQsIDk3LCAyMjAsIDcxLCAxLCAyNDQsIDE1NSwgMjIwLCA3MSwgMSwgCi0gICAgMjE2LCAxNzMsIDIyMCwgNzEsIDEsIDIxOSwgNjAsIDIyMCwgNzEsIDEsIDIxOCwgMTUsIDIyMCwgNzEsIDEsIDI1MCwgNjksIAotICAgIDIyMCwgNzEsIDEsIDIxMSwgNDYsIDIyMCwgNzEsIDEsIDI0MCwgMjE2LCAyMjAsIDcxLCAxLCAyNTIsIDEzLCAyMjAsIDcxLCAKLSAgICAxLCAyNDgsIDk3LCAyMjAsIDcxLCAxLCAyNDMsIDEyOCwgMjIwLCA3MSwgMSwgMjEzLCAxMjMsIDIyMCwgNzEsIDEsIDIxNiwgCi0gICAgMTc3LCAyMjAsIDcxLCAxLCAyMTAsIDIxLCAyMjAsIDcxLCAxLCAyMzEsIDk0LCAyMjAsIDcxLCAxLCAyMzUsIDU1LCAyMjAsIAotICAgIDcxLCAxLCAyMTEsIDIyNSwgMjIwLCA3MSwgMSwgMjQyLCA1NSwgMjIwLCA3MSwgMSwgMjMyLCAxNDgsIDIyMCwgNzEsIDEsIAotICAgIDIzMCwgMTk0LCAyMjAsIDcxLCAxLCAyMzYsIDQ3LCAyMjAsIDcxLCAxLCAyNDUsIDIwOSwgMjIwLCA3MSwgMSwgMjUzLCAKLSAgICAyMzksIDIyMCwgNzEsIDEsIDI1NSwgMCwgMjIwLCA3MSwgMSwgMjI2LCAyMDAsIDIyMCwgNzEsIDEsIDIxMSwgMjEyLCAyMjAsIAotICAgIDcxLCAxLCAyMjYsIDEzNCwgMjIwLCA3MSwgMSwgMjU0LCAyMTgsIDIyMCwgNzEsIDEsIDIyMiwgMjEwLCAyMjAsIDcxLCAxLCAKLSAgICAyMjcsIDE5OCwgMjIwLCA3MSwgMSwgMjQ1LCAyMjUsIDIyMCwgNzEsIDEsIDI1NCwgMjIzLCAyMjAsIDcxLCAxLCAyNDAsIAotICAgIDExOCwgMjIwLCA3MSwgMSwgMjE0LCAxNjMsIDIyMCwgNzEsIDEsIDIyNywgMiwgMjIwLCA3MSwgMSwgMjI2LCAxODAsIDIyMCwgCi0gICAgNzEsIDEsIDIyNiwgMjIyLCAyMjAsIDcxLCAxLCAyNTMsIDE3OCwgMjIwLCA3MSwgMSwgMjU0LCAyNywgMjIwLCA3MSwgMSwgCi0gICAgMjI2LCAxNjIsIDIyMCwgNzEsIDEsIDI1NCwgMjAxLCAyMjAsIDcxLCAxLCAyNDUsIDk0LCAyMjAsIDcxLCAxLCAyNTQsIDUsIAotICAgIDIyMCwgNzEsIDEsIDI0NSwgMjM1LCAyMjAsIDcxLCAxLCAyNDAsIDEyNSwgMjIwLCA3MSwgMSwgMjExLCAxMywgMjI2LCAKLSAgICAxNDUsIDEsIDI1NCwgMTc5LCAyMjYsIDE0NSwgMSwgMjUyLCAxOTksIDIyNiwgMTQ1LCAxLCAyMTcsIDEwNiwgMjI2LCAxNDUsIAotICAgIDEsIDIzNSwgMTQ3LCAyMjYsIDE0NSwgMSwgMjExLCAxNjUsIDIyNiwgMTQ1LCAxLCAyMzQsIDEzOCwgMjI2LCAxNDUsIDEsIAotICAgIDI0OCwgODQsIDIyNiwgMTQ1LCAxLCAyMDUsIDIyNiwgMTQ1LCAxLCAyMDYsIDIyNiwgMTQ1LCAxLCAyMjAsIDI4LCAyMjYsIAotICAgIDE0NSwgMSwgMjQ4LCAzMywgMjI2LCAxNDUsIDEsIDI1MCwgMjIzLCAyMjYsIDE0NSwgMSwgMjQzLCAxNDIsIDIyNiwgMTQ1LCAKLSAgICAxLCAyNDQsIDIwNCwgMjI2LCAxNDUsIDEsIDIyNCwgODksIDIyNiwgMTQ1LCAxLCAyMzUsIDE1LCAyMjYsIDE0NSwgMSwgCi0gICAgMjMzLCAxMzYsIDIyNiwgMTQ1LCAxLCAyMzAsIDIwNSwgMjI2LCAxNDUsIDEsIDIyNywgMTgyLCAyMjYsIDE0NSwgMSwgMjEyLCAKLSAgICAzMCwgMjI2LCAxNDUsIDEsIDE2MiwgMjI2LCAxNDUsIDEsIDE5MiwgMjI2LCAxNDUsIDEsIDYxLCAyMjYsIDE0NSwgMSwgNzYsIAotICAgIDIyNiwgMTQ1LCAxLCA3NCwgMjI2LCAxNDUsIDEsIDc4LCAyMjYsIDE0NSwgMSwgNjksIDIyNiwgMTQ1LCAxLCAyNTUsIDgyLCAKLSAgICAyMjYsIDE0NSwgMSwgMjQ1LCAyMTcsIDIyNiwgMTQ1LCAxLCAyMjYsIDE4NywgMjI2LCAxNDUsIDIxLCAyMTAsIDg2LCAyMjYsIAotICAgIDE0NSwgMjEsIDExMSwgMjI2LCAxNDUsIDIxLCAxMDUsIDIyNiwgMTQ1LCAyMSwgMTU4LCAyMjYsIDE0NSwgMjEsIDE2MSwgCi0gICAgMjI2LCAxNDUsIDIxLCAxOTAsIDIyNiwgMTQ1LCAyMSwgMTk1LCAyMjYsIDE0NSwgMjEsIDE5OSwgMjI2LCAxNDUsIDIxLCAKLSAgICAxOTYsIDIyNiwgMTQ1LCAyMSwgMjAxLCAyNDksIDc1LCAzLCA2MSwgMjQ5LCA3NSwgMywgNzYsIDI0OSwgNzUsIDMsIDc0LCAKLSAgICAyNDksIDc1LCAzLCA3OCwgMjQ5LCA3NSwgMywgNjksIDI0OSwgNzUsIDMsIDIzNSwgMTQ3LCAyNDksIDc1LCAzLCAyMzUsIAotICAgIDc0LCAyNDksIDc1LCAzLCAxNzYsIDI0OSwgNzUsIDMsIDIzNCwgMTg4LCAyNDksIDc1LCAzLCAyMzQsIDk4LCAyNDksIDc1LCAKLSAgICAzLCAyMzQsIDM0LCAyNDksIDc1LCAzLCAyMzMsIDIyMywgMjQ5LCA3NSwgMywgMjMzLCAxNDEsIDI0OSwgNzUsIDMsIDIzMywgCi0gICAgNjQsIDI0OSwgNzUsIDMsIDIzMiwgMjQ3LCAyNDksIDc1LCAzLCAyMzIsIDE2MiwgMjQ5LCA3NSwgMywgMjMyLCAxMDMsIAotICAgIDI0OSwgNzUsIDMsIDE4NiwgMjQ5LCA3NSwgMywgMjMxLCA5NiwgMjQ5LCA3NSwgMywgMjMwLCAyMzUsIDI0OSwgNzUsIDMsIAotICAgIDIzMCwgMTY2LCAyNDksIDc1LCAzLCAyMzAsIDEwNywgMjQ5LCA3NSwgMywgMTk4LCAyNDksIDc1LCAzLCAyMjksIDExMiwgCi0gICAgMjQ5LCA3NSwgMywgMjI4LCAyMzgsIDI0OSwgNzUsIDMsIDIyOCwgNzksIDI0OSwgNzUsIDMsIDIyNywgMjQyLCAyNDksIDc1LCAKLSAgICAzLCAxOTEsIDI0OSwgNzUsIDMsIDIyNSwgMjI0LCAyNDksIDc1LCAzLCAyMjUsIDExMSwgMjQ5LCA3NSwgMywgMjI1LCAxOSwgCi0gICAgMjQ5LCA3NSwgMywgMjI0LCAxNTMsIDI0OSwgNzUsIDMsIDIwNSwgMjQ5LCA3NSwgMywgMjIzLCAxMzEsIDI0OSwgNzUsIDMsIAotICAgIDIyMywgMzgsIDI0OSwgNzUsIDMsIDIyMiwgMjEzLCAyNDksIDc1LCAzLCAyMjIsIDE0MiwgMjQ5LCA3NSwgMywgMjA2LCAKLSAgICAyNDksIDc1LCAzLCAyMjEsIDE4MywgMjQ5LCA3NSwgMywgMjE5LCAxOTMsIDI0OSwgNzUsIDMsIDIxOSwgNjAsIDI0OSwgNzUsIAotICAgIDMsIDIxOCwgODQsIDI0OSwgNzUsIDMsIDIxNywgMTA2LCAyNDksIDc1LCAzLCAyMTcsIDIzLCAyNDksIDc1LCAzLCAyMTYsIAotICAgIDExOCwgMjQ5LCA3NSwgMywgMTEyLCAyNDksIDc1LCAzLCAyMTUsIDExOSwgMjQ5LCA3NSwgMywgMjEyLCA2NSwgMjQ5LCA3NSwgCi0gICAgMywgMjEyLCAyMiwgMjQ5LCA3NSwgMywgMjExLCAyNTAsIDI0OSwgNzUsIDMsIDIxMSwgMjI3LCAyNDksIDc1LCAzLCAyMTEsIAotICAgIDE2NSwgMjQ5LCA3NSwgMywgMjExLCAxNjIsIDI0OSwgNzUsIDMsIDIxMCwgMTE2LCAyNDksIDc1LCAzLCAyMTAsIDIzLCAKLSAgICAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1NCwgMTc3LCAyMzYsIDgsIDI1NCwgMzUsIDEsIDI1MiwgMzMsIDIzNiwgOCwgMjU0LCAKLSAgICAzNSwgMSwgMjQyLCAyMDgsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjQ4LCAxOTYsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjQxLCAKLSAgICAyNDUsIDIzNiwgOCwgMjU0LCAzNSwgMSwgMjEyLCAzMCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMTAsIDk3LCAyMzYsIDgsIAotICAgIDI1NCwgMzUsIDEsIDI0MSwgMjAyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxNiwgMjI3LCAyMzYsIDgsIDI1NCwgMzUsIDEsIAotICAgIDIxMCwgMjMyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIzNCwgMjMxLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIzMywgOTksIDIzNiwgCi0gICAgOCwgMjU0LCAzNSwgMSwgMjMxLCA3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjcsIDE5OCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAKLSAgICAyMjEsIDI1MSwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyNTMsIDE3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjUsIDIyNCwgCi0gICAgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjIsIDI2LCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIyNCwgMzcsIDIzNiwgOCwgMjU0LCAKLSAgICAzNSwgMSwgMjIzLCA3MCwgMjM2LCA4LCAyNTQsIDM1LCAxLCAyMjAsIDIyLCAyMzYsIDgsIDI1NCwgMzUsIDEsIDIxNywgMzcsIAotICAgIDIzNiwgOCwgMjU0LCAzNSwgMjIxLCAxNzUsIDUwLCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAxMTEsIDIzNiwgOCwgMjU0LCAzNSwgCi0gICAgNTQsIDEwNSwgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMTU4LCAyMzYsIDgsIDI1NCwgMzUsIDU0LCAyMTYsIDI0OCwgMjM2LCA4LCAKLSAgICAyNTQsIDM1LCA1NCwgMjE1LCA3MywgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMTIzLCAyNDAsIDIxNywgMjM2LCA4LCAyNTQsIAotICAgIDM1LCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM2LCA4LCAyNTQsIDM1LCA1NCwgMjE2LCAyNDksIDIxNiwgMTQ4LCAyMjUsIDEyMiwgCi0gICAgMSwgMjU0LCAxNzQsIDIyNSwgMTIyLCAxLCAyNTIsIDM2LCAyMjUsIDEyMiwgMSwgMjQzLCAxMTYsIDIyNSwgMTIyLCAxLCAKLSAgICAyNDgsIDY0LCAyMjUsIDEyMiwgMSwgMjQxLCAyNDUsIDIyNSwgMTIyLCAxLCAyMTIsIDM3LCAyMjUsIDEyMiwgMSwgMjEwLCAKLSAgICAxMTAsIDIyNSwgMTIyLCAxLCAyNDEsIDIwNCwgMjI1LCAxMjIsIDEsIDIxNiwgMjMxLCAyMjUsIDEyMiwgMSwgMjEwLCAyMzMsIAotICAgIDIyNSwgMTIyLCAxLCAyMzUsIDAsIDIyNSwgMTIyLCAxLCAyMzMsIDEwNSwgMjI1LCAxMjIsIDEsIDIzMSwgNzAsIDIyNSwgCi0gICAgMTIyLCAxLCAyMjcsIDE5OCwgMjI1LCAxMjIsIDEsIDIyMCwgMTQ2LCAyMjUsIDEyMiwgMSwgMjU0LCAyMDUsIDIyNSwgMTIyLCAKLSAgICAxLCAyMjUsIDIyNCwgMjI1LCAxMjIsIDEsIDIyMiwgMjcsIDIyNSwgMTIyLCAxLCAyMjQsIDQyLCAyMjUsIDEyMiwgMSwgCi0gICAgMjIyLCAxOTEsIDIyNSwgMTIyLCAxLCAyMjAsIDIyLCAyMjUsIDEyMiwgMSwgMjE3LCA0MiwgMjI1LCAxMjIsIDU0LCAxMTEsIAotICAgIDIyNSwgMTIyLCA1NCwgMjE2LCAyNDgsIDIyNSwgMTIyLCA1NCwgMjE1LCA3MywgMjI1LCAxMjIsIDU0LCAxMjMsIDI0MCwgCi0gICAgMjE3LCAyMjUsIDEyMiwgNTQsIDEwNSwgMjI1LCAxMjIsIDU0LCAxNTgsIDIyNSwgMTIyLCAyMTEsIDIwOSwgMjIwLCAxMzksIAotICAgIDIzMiwgNjQsIDEsIDYxLCAyMzIsIDY0LCAxLCAyNTMsIDE2NiwgMjMyLCA2NCwgMSwgMjQzLCAyMDksIDIzMiwgNjQsIDEsIAotICAgIDI0OSwgNjgsIDIzMiwgNjQsIDEsIDc2LCAyMzIsIDY0LCAxLCAyMTQsIDEwNSwgMjMyLCA2NCwgMSwgNzQsIDIzMiwgNjQsIAotICAgIDEsIDIxMSwgMTE3LCAyMzIsIDY0LCAxLCAyMzUsIDI5LCAyMzIsIDY0LCAxLCAxNTYsIDIzMiwgNjQsIDEsIDE5NCwgMjMyLCAKLSAgICA2NCwgMSwgMjMwLCAzMCwgMjMyLCA2NCwgMSwgNzgsIDIzMiwgNjQsIDEsIDE1MywgMjMyLCA2NCwgMSwgMjE4LCAyMjgsIAotICAgIDIzMiwgNjQsIDEsIDIxNywgMTUzLCAyMzIsIDY0LCAxLCA2OSwgMjMyLCA2NCwgMSwgMjQ1LCAxNCwgMjMyLCA2NCwgMSwgCi0gICAgMjI0LCA5OSwgMjMyLCA2NCwgMSwgMjIyLCA5MywgMjMyLCA2NCwgMSwgMjE1LCAxNjAsIDIzMiwgNjQsIDEsIDI1NCwgMTMxLCAKLSAgICAyMzIsIDY0LCAxLCAyNDUsIDE1OCwgMjMyLCA2NCwgMSwgMjMyLCA2NywgMjMyLCA2NCwgMSwgMjI4LCAxMTYsIDIzMiwgNjQsIAotICAgIDEsIDI1MSwgNzQsIDIzMiwgNjQsIDIxNSwgMjIzLCA3OSwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDYxLCAyMzEsIDUzLCAKLSAgICAyNDEsIDE4MSwgMSwgNzYsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCA3NCwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDc4LCAyMzEsIAotICAgIDUzLCAyNDEsIDE4MSwgMSwgMTkyLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjEyLCA2NSwgMjMxLCA1MywgMjQxLCAxODEsIAotICAgIDEsIDI1MiwgMTk5LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjUyLCAxOTgsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxOTEsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxODYsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxOTgsIDIzMSwgNTMsIDI0MSwgMTgxLCAKLSAgICAxLCAyMjksIDIzMywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyOSwgMTEyLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjI5LCAKLSAgICAxMTEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMDUsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjMsIDE5MCwgMjMxLCA1MywgCi0gICAgMjQxLCAxODEsIDEsIDIzMywgMTQxLCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjM0LCAxMzgsIDIzMSwgNTMsIDI0MSwgMTgxLCAKLSAgICAxLCAyNDEsIDE5NiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIwNiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIyMiwgMzUsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMjEsIDE4MywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDE3NiwgMjMxLCA1MywgMjQxLCAKLSAgICAxODEsIDEsIDIyNCwgOTEsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyMTcsIDEwNiwgMjMxLCA1MywgMjQxLCAxODEsIDEsIAotICAgIDIxNywgMTA1LCAyMzEsIDUzLCAyNDEsIDE4MSwgMSwgMjE3LCAyMywgMjMxLCA1MywgMjQxLCAxODEsIDEsIDIxNywgMjIsIAotICAgIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAxMTIsIDIzMSwgNTMsIDI0MSwgMTgxLCAxLCAyNDgsIDIyOSwgMjMxLCA1MywgMjQxLCAKLSAgICAxODEsIDE2LCAyMTMsIDE3MCwgMjMxLCA1MywgMjQxLCAxODEsIDE2LCAyMTMsIDE2OSwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIAotICAgIDYxLCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgNzYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCA3NCwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDc4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTkyLCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjEyLCA2NSwgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDI1MiwgMTk5LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTkxLCAyMzEsIDUzLCAyNDksIAotICAgIDEwMiwgMSwgMTg2LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMTk4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjI5LCAxMTIsIAotICAgIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMDUsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMzMsIDE0MSwgMjMxLCA1MywgMjQ5LCAKLSAgICAxMDIsIDEsIDIzNCwgMTM4LCAyMzEsIDUzLCAyNDksIDEwMiwgMSwgMjQxLCAxOTYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAKLSAgICAyMDYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNTQsIDMxLCAyMDYsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyMjEsIDE4MywgCi0gICAgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDE3NiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIyNCwgOTEsIDIzMSwgNTMsIDI0OSwgCi0gICAgMTAyLCAxLCAyMTcsIDEwNiwgMjMxLCA1MywgMjQ5LCAxMDIsIDEsIDIxNywgMjMsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAKLSAgICAxMTIsIDIzMSwgNTMsIDI0OSwgMTAyLCAxLCAyNDgsIDIyOSwgMjMxLCA1MywgMjQ5LCAxMDIsIDIzMiwgMTUxLCAyMjIsIAotICAgIDIxOSwgMjMxLCA1MywgMjQ5LCAxMDIsIDIzMiwgMTUxLCAyMzYsIDEzLCAyMzQsIDEyNiwgMSwgNjEsIDIzNCwgMTI2LCAyNSwgCi0gICAgNSwgNzQsIDIzNCwgMTI2LCAyNSwgNSwgNjksIDIzNCwgMTI2LCAyNSwgNSwgMTQ5LCAxNTMsIDIzNCwgMTI2LCAyNSwgNSwgCi0gICAgNzYsIDIzNCwgMTI2LCAyNSwgNSwgNzgsIDIzNCwgMTI2LCAyNSwgMjMzLCAyOSwgNzksIDIzNCwgMTI2LCA1LCA1MiwgMjIyLCAKLSAgICAyMzcsIDUxLCAyMzQsIDEyNiwgNSwgMjU0LCA4MywgMjM0LCAxMjYsIDUsIDIxMywgMTQ3LCAyMzQsIDEyNiwgMSwgMTc2LCAKLSAgICAyMzQsIDEyNiwgMSwgMjM0LCAxMzgsIDIzNCwgMTI2LCAxLCAyNDMsIDE0MiwgMjM0LCAxMjYsIDEsIDI0MywgMCwgMjM0LCAKLSAgICAxMjYsIDEsIDI1MSwgNDEsIDIzNCwgMTI2LCAxLCAyNTAsIDE2NSwgMjM0LCAxMjYsIDEsIDIzNSwgMTQ3LCAyMzQsIDEyNiwgCi0gICAgMSwgMjI3LCAxNjksIDIzNCwgMTI2LCAxLCAyMTUsIDE1NywgMjM0LCAxMjYsIDEsIDIxNSwgMTQ1LCAyMzQsIDEyNiwgMSwgCi0gICAgMjQ4LCAxNDMsIDIzNCwgMTI2LCAxLCAyNDgsIDEyNywgMjM0LCAxMjYsIDEsIDIyOCwgMTE1LCAyMzQsIDEyNiwgMSwgMjE3LCAKLSAgICAxMDYsIDIzNCwgMTI2LCAxLCAyMTYsIDIwOSwgMjM0LCAxMjYsIDEsIDI0OCwgMjI5LCAyMzQsIDEyNiwgMSwgMjQ4LCAzMywgCi0gICAgMjM0LCAxMjYsIDEsIDE5OCwgMjM0LCAxMjYsIDEsIDE5MSwgMjM0LCAxMjYsIDEsIDIyNSwgMTUwLCAyMzQsIDEyNiwgMSwgCi0gICAgMjUyLCAxOTksIDIzNCwgMTI2LCAxLCAyNTIsIDI2LCAyMzQsIDEyNiwgMSwgMTg2LCAyMzQsIDEyNiwgMSwgMTkyLCAyMzQsIAotICAgIDEyNiwgMSwgMjA1LCAyMzQsIDEyNiwgMSwgMjMzLCAxNDEsIDIzNCwgMTI2LCAxLCAyMTQsIDI3LCAyMzQsIDEyNiwgMSwgCi0gICAgMjIwLCAxMDQsIDIzNCwgMTI2LCAxLCAyMTgsIDIyNSwgMjM0LCAxMjYsIDEsIDIwNiwgMjM0LCAxMjYsIDEsIDIxMCwgMTE2LCAKLSAgICAyMzQsIDEyNiwgMSwgMTYyLCAyMzQsIDEyNiwgMSwgMjM0LCA1MiwgMjM0LCAxMjYsIDEsIDIxNSwgMTI1LCAyMzQsIDEyNiwgCi0gICAgNSwgMjUyLCAxNDksIDQ4LCAyMzQsIDEyNiwgNSwgMjUwLCAyMjksIDIzNCwgMTI2LCA1LCA1OSwgNTEsIDIzNCwgMTI2LCAKLSAgICAyMTMsIDE1MiwgMjM0LCAxMjYsIDIxLCAxMTEsIDIzNCwgMTI2LCAyMSwgMTA1LCAyMzQsIDEyNiwgMjEsIDE1OCwgMjM0LCAKLSAgICAxMjYsIDIxLCAxNjEsIDIzNCwgMTI2LCA1NCwgMjE2LCAyNDgsIDIzNCwgMTI2LCA1NCwgMjE1LCA3MywgMjM0LCAxMjYsIAotICAgIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzQsIDEyNiwgNTQsIDEyMywgMjE2LCAxNDgsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjQ3LCAKLSAgICAxMjgsIDIzNCwgMTI2LCAyMjQsIDE0NCwgNCwgMjUwLCA0MywgMjM0LCAxMjYsIDIyNCwgMTQ0LCAyNTAsIDQzLCAyMzQsIAotICAgIDEyNiwgMjI0LCAxNDQsIDI0OSwgMTQ1LCAxMzAsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjMxLCAxODUsIDIzNCwgMTI2LCAKLSAgICAyMjQsIDE0NCwgMjMyLCAxMjEsIDIzNCwgMTI2LCAyMjQsIDE0NCwgMjQ4LCAxODYsIDIzNCwgMTI2LCAyMjQsIDE0NCwgNTIsIAotICAgIDI0OCwgMTg2LCAyMzQsIDEyNiwgMjI0LCAxNDQsIDIzMiwgMjEzLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQxLCAKLSAgICAyNDUsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMzMsIDk5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQxLCAyMDIsIAotICAgIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMzEsIDcwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjI0LCAzNywgNTUsIAotICAgIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMiwgMzAsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjAsIDIyLCA1NSwgMjE5LCAKLSAgICAzMCwgMjU0LCA0NiwgMSwgMjIzLCA3MCwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI1MiwgMzMsIDU1LCAyMTksIDMwLCAKLSAgICAyNTQsIDQ2LCAxLCAyMTcsIDM3LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjIxLCAyMjgsIDU1LCAyMTksIDMwLCAyNTQsIAotICAgIDQ2LCAxLCAyMzQsIDIzMSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIyNywgMTk4LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgCi0gICAgMSwgMjM0LCAxMjIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMjIsIDI2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgCi0gICAgMjIxLCAyNTEsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDQsIDE2MiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIAotICAgIDI1NCwgMTc5LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjUzLCAxNjksIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAKLSAgICAyNDgsIDMwLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQyLCAyMDgsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyNDgsIAotICAgIDE5NiwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDI0MiwgMjQ1LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjE2LCAKLSAgICAyMjcsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTAsIDk2LCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjQ4LCAyNywgCi0gICAgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDEsIDIxMCwgMjMyLCA1NSwgMjE5LCAzMCwgMjU0LCA0NiwgMSwgMjE2LCAxOTgsIDU1LCAKLSAgICAyMTksIDMwLCAyNTQsIDQ2LCAxLCAyMTYsIDE3OSwgNTUsIDIxOSwgMzAsIDI1NCwgNDYsIDU0LCAxMTEsIDU1LCAyMTksIAotICAgIDMwLCAyNTQsIDQ2LCA1NCwgMjQ0LCAxMjIsIDU1LCAyMTksIDMwLCAyNTQsIDQ2LCAxMzIsIDIzNSwgMjQ1LCAyNTMsIDE4MCwgCi0gICAgMSwgNjEsIDI1MywgMTgwLCAxLCAyNTUsIDgyLCAyNTMsIDE4MCwgMSwgMjU0LCA4MSwgMjUzLCAxODAsIDEsIDI1NSwgNDEsIAotICAgIDI1MywgMTgwLCAxLCAyNTQsIDEzMSwgMjUzLCAxODAsIDEsIDI1NSwgNDIsIDI1MywgMTgwLCAxLCAyNTQsIDI1MiwgMjUzLCAKLSAgICAxODAsIDEsIDI1NCwgMjQ4LCAyNTMsIDE4MCwgMSwgNzYsIDI1MywgMTgwLCAxLCAyNDUsIDIxNywgMjUzLCAxODAsIDEsIAotICAgIDc4LCAyNTMsIDE4MCwgMSwgMjI2LCAxODcsIDI1MywgMTgwLCAxLCA3NCwgMjUzLCAxODAsIDEsIDIzNiwgNDAsIDI1MywgCi0gICAgMTgwLCAxLCA2OSwgMjUzLCAxODAsIDEsIDIxNCwgMTE4LCAyNTMsIDE4MCwgMSwgMjM0LCAxODgsIDI1MywgMTgwLCAxLCAKLSAgICAyMTEsIDE2MiwgMjUzLCAxODAsIDEsIDIxMSwgMTI4LCAyNTMsIDE4MCwgMSwgMjExLCAxMzcsIDI1MywgMTgwLCAxLCAyNDMsIAotICAgIDY5LCAyNTMsIDE4MCwgMSwgMjQzLCAzMSwgMjUzLCAxODAsIDEsIDI0MiwgMjQzLCAyNTMsIDE4MCwgMSwgMjUwLCAxOTgsIAotICAgIDI1MywgMTgwLCAxLCAyMzUsIDEzMiwgMjUzLCAxODAsIDEsIDIxNywgMjMsIDI1MywgMTgwLCAxLCAyMTYsIDE5NiwgMjUzLCAKLSAgICAxODAsIDEsIDI0OCwgOTgsIDI1MywgMTgwLCAxLCAyNDgsIDI1LCAyNTMsIDE4MCwgMSwgMjE1LCAxNTIsIDI1MywgMTgwLCAKLSAgICAxLCAyMjUsIDIyNCwgMjUzLCAxODAsIDEsIDI0NCwgMTYyLCAyNTMsIDE4MCwgMSwgMjUyLCA4MywgMjUzLCAxODAsIDEsIAotICAgIDI1MiwgMjIsIDI1MywgMTgwLCAxLCAyMjksIDY5LCAyNTMsIDE4MCwgMSwgMjI4LCAyNDQsIDI1MywgMTgwLCAxLCAyMjgsIAotICAgIDI0NSwgMjUzLCAxODAsIDEsIDIyOSwgMTEyLCAyNTMsIDE4MCwgMSwgMjI3LCAxNjAsIDI1MywgMTgwLCAxLCAyMjgsIDExMCwgCi0gICAgMjUzLCAxODAsIDEsIDIzMSwgOTYsIDI1MywgMTgwLCAxLCAyNDEsIDEyMywgMjUzLCAxODAsIDEsIDIxMCwgMTY2LCAyNTMsIAotICAgIDE4MCwgMSwgMjExLCA0NywgMjUzLCAxODAsIDEsIDIxMywgMjU1LCAyNTMsIDE4MCwgMSwgMjIzLCAxMzEsIDI1MywgMTgwLCAKLSAgICAxLCAyMzMsIDY0LCAyNTMsIDE4MCwgMSwgMjIxLCAxODMsIDI1MywgMTgwLCAxLCAyMTAsIDk0LCAyNTMsIDE4MCwgMSwgCi0gICAgMjIwLCA2NSwgMjUzLCAxODAsIDEsIDIxMCwgNzQsIDI1MywgMTgwLCAxLCAyMTksIDIwMCwgMjUzLCAxODAsIDEsIDIxOCwgCi0gICAgMTk1LCAyNTMsIDE4MCwgMSwgMjQxLCAyNDUsIDI1MywgMTgwLCAyNTUsIDMwLCA3OSwgMjE2LCA4MCwgMTEzLCAxNzAsIAotICAgIDExNSwgMTIzLCA1OSwgMjI0LCAxNDMsIDQsIDExMywgMTcwLCAxMTUsIDEyMywgNTksIDIyNCwgMTQzLCAyMzMsIDkxLCAKLSAgICAxMTMsIDE3MCwgMTE1LCAxMjMsIDU5LCAyMjQsIDE0MywgMjMzLCA5MSwgMTIzLCA1OSwgMTE1LCAxMTMsIDE3MCwgMjI0LCAKLSAgICAxNDMsIDIzMywgOTEsIDExMywgMjIyLCAyMzUsIDExNSwgMTIzLCAyMjIsIDIzNywgMjI0LCAxNDMsIDIzMywgOTEsIDEyMywgCi0gICAgMjIyLCAyMzcsIDExNSwgMTEzLCAyMjIsIDIzNSwgMjI0LCAxNDMsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI1NCwgMTc3LCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNTIsIDMzLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNDIsIDIwOCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgMSwgMjQ4LCAxOTYsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDI0MSwgMjQ1LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAKLSAgICAyMTIsIDMwLCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyMTAsIDk3LCAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNDEsIDIwMiwgCi0gICAgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjE2LCAyMjcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxMCwgMjMyLCAyMzUsIDIyNSwgCi0gICAgMjI2LCAyLCAxLCAyMzQsIDIzMSwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjMzLCA5OSwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgCi0gICAgMjMxLCA3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI3LCAxOTgsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyMSwgMjUxLCAKLSAgICAyMzUsIDIyNSwgMjI2LCAyLCAxLCAyNTMsIDE3MCwgMjM1LCAyMjUsIDIyNiwgMiwgMSwgMjI1LCAyMjQsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDIsIDEsIDIyMiwgMjYsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyNCwgMzcsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIAotICAgIDIyMywgNzAsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIyMCwgMjIsIDIzNSwgMjI1LCAyMjYsIDIsIDEsIDIxNywgMzcsIDIzNSwgCi0gICAgMjI1LCAyMjYsIDIsIDU0LCAxMTEsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxMDUsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAKLSAgICAxNTgsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxNjEsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAyMTYsIDI0OCwgMjM1LCAyMjUsIAotICAgIDIyNiwgMiwgNTQsIDIxNSwgNzMsIDIzNSwgMjI1LCAyMjYsIDIsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzUsIDIyNSwgMjI2LCAKLSAgICAyLCA1NCwgMTIzLCAyMTYsIDE0OCwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI1NCwgMTc3LCAyMzUsIDIyNSwgMjI2LCA3NiwgCi0gICAgMSwgMjUyLCAzMywgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDI0MiwgMjA4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQ4LCAKLSAgICAxOTYsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyNDEsIDI0NSwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIxMiwgMjksIDIzNSwgCi0gICAgMjI1LCAyMjYsIDc2LCAxLCAyMTAsIDk3LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjQxLCAyMDIsIDIzNSwgMjI1LCAyMjYsIAotICAgIDc2LCAxLCAyMTYsIDIyNywgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIxMCwgMjMyLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgCi0gICAgMjM0LCAyMzEsIDIzNSwgMjI1LCAyMjYsIDc2LCAxLCAyMzMsIDk5LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjMxLCA2OSwgCi0gICAgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIyNywgMTk4LCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjIxLCAyNTEsIDIzNSwgMjI1LCAKLSAgICAyMjYsIDc2LCAxLCAyMjUsIDIyNCwgMjM1LCAyMjUsIDIyNiwgNzYsIDEsIDIyMiwgMjYsIDIzNSwgMjI1LCAyMjYsIDc2LCAKLSAgICAxLCAyMjAsIDIyLCAyMzUsIDIyNSwgMjI2LCA3NiwgMSwgMjE3LCAzNywgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMTEsIAotICAgIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMTA1LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDE1OCwgMjM1LCAyMjUsIDIyNiwgCi0gICAgNzYsIDU0LCAxNjEsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMjE2LCAyNDgsIDIzNSwgMjI1LCAyMjYsIDc2LCA1NCwgMjE1LCAKLSAgICA3MywgMjM1LCAyMjUsIDIyNiwgNzYsIDU0LCAxMjMsIDI0MCwgMjE3LCAyMzUsIDIyNSwgMjI2LCA3NiwgNTQsIDEyMywgCi0gICAgMjE2LCAxNDgsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCA2MSwgNTUsIDIwMiwgMSwgMjExLCAzNywgNjEsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI1NCwgMjUyLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgNzQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDc0LCA1NSwgCi0gICAgMjAyLCAxLCAyMTEsIDM3LCA3NiwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDc4LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAKLSAgICAyMzgsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMjM4LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU1LCAzNCwgNTUsIAotICAgIDIwMiwgMSwgMjExLCAzNywgMjU1LCAzNCwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjUxLCA1NSwgMjAyLCAxLCAKLSAgICAyMTEsIDM3LCAyNTQsIDI1MSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjI1LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNTQsIDIyNSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NCwgMjQ2LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNTQsIDI0NiwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1NSwgOCwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjU1LCA4LCA1NSwgMjAyLCAxLCAKLSAgICAyMjYsIDE1MywgMjU0LCAyNTAsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDIwLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAKLSAgICAyNDUsIDIwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjUzLCAxNzUsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1MywgMTc1LCAKLSAgICA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzMsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjMzLCA1NSwgMjAyLCAKLSAgICAxLCAyMjYsIDE1MywgMjU0LCAyNDQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjQ0LCA1NSwgMjAyLCAxLCAyMjYsIAotICAgIDE1MywgMjI2LCAyMzcsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDIyNiwgMjM3LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAKLSAgICAxODcsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMTg3LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyNDMsIDU1LCAKLSAgICAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE2OSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI0NSwgMTY3LCA1NSwgMjAyLCAxLCAKLSAgICAyMjYsIDE1MywgMjU0LCAxMzEsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTQsIDI0MSwgNTUsIDIwMiwgMSwgMjExLCAzNywgCi0gICAgMjU0LCAyNDEsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDEzOSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxMzksIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNDUsIDE1NSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxNTUsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNDUsIDEyNiwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjQ1LCAxMjYsIDU1LCAyMDIsIDEsIDIxMSwgCi0gICAgMzcsIDI1NCwgMTIzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxNDYsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgCi0gICAgMjQwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAxMTYsIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyMjYsIDE3OSwgNTUsIAotICAgIDIwMiwgMSwgMjI2LCAxNTMsIDI0MCwgMTIwLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjQ1LCAyMjMsIDU1LCAyMDIsIDEsIAotICAgIDIxMSwgMzcsIDI0NSwgMjIzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCA1MywgNTUsIDIwMiwgMSwgMjExLCAzNywgCi0gICAgMjU0LCA1MywgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIzNSwgMTg4LCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyMzUsIDE4OCwgCi0gICAgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDIyNiwgMTYzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyMjYsIDE2MywgNTUsIDIwMiwgCi0gICAgMSwgMjI2LCAxNTMsIDI1NCwgNDksIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgNDksIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAKLSAgICAyNTQsIDIzOSwgNTUsIDIwMiwgMSwgMjI2LCAxNTMsIDI1MywgMjQ1LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzcsIAotICAgIDU1LCAyMDIsIDEsIDIyNiwgMTUzLCAyNTMsIDIzOSwgNTUsIDIwMiwgMSwgMjExLCAzNywgMjUzLCAyMzksIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNDUsIDgzLCA1NSwgMjAyLCAxLCAyMTEsIDM3LCAyNDUsIDgzLCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgCi0gICAgMjUzLCAyMTQsIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1MywgMjE0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjU0LCAyMzQsIAotICAgIDU1LCAyMDIsIDEsIDIxMSwgMzcsIDI1NCwgMjM0LCA1NSwgMjAyLCAxLCAyMjYsIDE1MywgMjI2LCAxNDQsIDU1LCAyMDIsIAotICAgIDEsIDIyNiwgMTUzLCAyNTIsIDEzMywgMjIyLCAxMjksIDIxLCAxMTEsIDIyMiwgMTI5LCAyMSwgMTA1LCAyMjIsIDEyOSwgCi0gICAgMjEsIDE1OCwgMjIyLCAxMjksIDIxLCAxNjEsIDIyMiwgMTI5LCAyMSwgMTkwLCAyMjIsIDEyOSwgMjEsIDE5NSwgMjIyLCAKLSAgICAxMjksIDIxLCAxOTksIDIyMiwgMTI5LCAyMSwgMTk2LCAyMjIsIDEyOSwgMjEsIDIwMSwgMjIyLCAxMjksIDU0LCAyMTYsIAotICAgIDI0OCwgMjIyLCAxMjksIDU0LCAyMTUsIDczLCAyMjIsIDEyOSwgNTQsIDIxNiwgMTYzLCAyMjIsIDEyOSwgNTQsIDI0NCwgCi0gICAgMjMsIDIyMiwgMTI5LCA1NCwgMjQ0LCAxMjIsIDIyMiwgMTI5LCA1NCwgMjE5LCAxMTMsIDIyMiwgMTI5LCA1NCwgMjIwLCAKLSAgICAxMTgsIDIyMiwgMTI5LCA1NCwgMjQ1LCAxOTIsIDIyMiwgMTI5LCA1NCwgMjI4LCAyMDAsIDIyMiwgMTI5LCA1NCwgMTIzLCAKLSAgICAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAxMTMsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDEzNCwgMjQwLCAyMTcsIDIyMiwgCi0gICAgMTI5LCA1NCwgMjQ0LCAxOSwgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjQ0LCA4OSwgMjQwLCAyMTcsIDIyMiwgMTI5LCAKLSAgICA1NCwgMjE5LCAxMjcsIDI0MCwgMjE3LCAyMjIsIDEyOSwgNTQsIDIyMCwgMTI0LCAyNDAsIDIxNywgMjIyLCAxMjksIDU0LCAKLSAgICAyNDUsIDIwMSwgMjQwLCAyMTcsIDIyMiwgMTI5LCA1NCwgMjI4LCAyMDUsIDI0MCwgMjE3LCAyMjIsIDEyOSwgMjQ0LCAxMCwgCi0gICAgMTIzLCAyNDIsIDM0LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTIzLCAyMjQsIDI0LCAyMjIsIDEyOSwgMjQ0LCAxMCwgMTIzLCAKLSAgICAyMTYsIDE2OSwgMjIyLCAxMjksIDI0NCwgMTAsIDExMywgMjE2LCAxNjcsIDExOCwgNSwgMjUxLCA3LCAxMTgsIDUsIDI1NCwgCi0gICAgODMsIDExOCwgNSwgMjEzLCAxNDcsIDExOCwgNSwgMjM1LCAxMDgsIDExOCwgNSwgMjE0LCAxNjEsIDExOCwgMSwgNjEsIAotICAgIDExOCwgMSwgMjU1LCA4MiwgMTE4LCAxLCA3NCwgMTE4LCAxLCAyMzYsIDQwLCAxMTgsIDEsIDY5LCAxMTgsIDEsIDIxNCwgCi0gICAgMTE4LCAxMTgsIDEsIDE0OSwgMTUzLCAxMTgsIDEsIDE0OSwgMjIyLCAxODIsIDExOCwgMSwgMTQ5LCAxNTYsIDExOCwgMSwgCi0gICAgMTQ5LCAyMzIsIDE5MSwgMTE4LCAxLCA3NiwgMTE4LCAxLCAyNTQsIDIxMCwgMTE4LCAxLCA3OCwgMTE4LCAxLCAyNTMsIAotICAgIDIwMCwgMTE4LCAxLCAxNzYsIDExOCwgMSwgMjM0LCAxMzgsIDExOCwgMSwgMjQzLCAxNDIsIDExOCwgMSwgMjQzLCAwLCAKLSAgICAxMTgsIDEsIDIyOSwgODIsIDExOCwgMSwgMjUxLCA0MSwgMTE4LCAxLCAyNTAsIDE2NSwgMTE4LCAxLCAyMzUsIDE0NywgCi0gICAgMTE4LCAxLCAyMzUsIDEyMCwgMTE4LCAxLCAyMjcsIDE2OSwgMTE4LCAxLCAyMTUsIDE1NywgMTE4LCAxLCAyMTUsIDE0NSwgCi0gICAgMTE4LCAxLCAyNDgsIDE0MywgMTE4LCAxLCAyNDgsIDEyNywgMTE4LCAxLCAyMjgsIDExNSwgMTE4LCAxLCAyMTcsIDEwNiwgCi0gICAgMTE4LCAxLCAyMTYsIDIwOSwgMTE4LCAxLCAyNDgsIDIyOSwgMTE4LCAxLCAyNDgsIDMzLCAxMTgsIDEsIDE5OCwgMTE4LCAxLCAKLSAgICAxOTEsIDExOCwgMSwgMjI1LCAxNTAsIDExOCwgMSwgMjUyLCAxOTksIDExOCwgMSwgMjUyLCAyNiwgMTE4LCAxLCAxODYsIAotICAgIDExOCwgMSwgMTkyLCAxMTgsIDEsIDIwNSwgMTE4LCAxLCAyMzMsIDE0MSwgMTE4LCAxLCAyMTQsIDI3LCAxMTgsIDEsIDIyMCwgCi0gICAgMTA0LCAxMTgsIDEsIDIxOCwgMjI1LCAxMTgsIDEsIDIwNiwgMTE4LCAxLCAxNjIsIDExOCwgMSwgMjMyLCAxOTAsIDExOCwgCi0gICAgMSwgNTUsIDM2LCAyMzIsIDE4MSwgMTE4LCAxLCA1NSwgMzYsIDIyMiwgMTgxLCAxMTgsIDEsIDU1LCAzNiwgMjI4LCA5NywgCi0gICAgMTE4LCAyNSwgNSwgMjU1LCA4MiwgMTE4LCAyNSwgNSwgMjUyLCAyMywgMjU1LCA4MiwgMTE4LCAyNSwgNSwgNzQsIDExOCwgCi0gICAgMjUsIDUsIDIzNiwgNDAsIDExOCwgMjUsIDUsIDY5LCAxMTgsIDI1LCA1LCAyMTQsIDExOCwgMTE4LCAyNSwgNSwgMTQ5LCAKLSAgICAxNTMsIDExOCwgMjUsIDUsIDE0OSwgMjIyLCAxODIsIDExOCwgMjUsIDUsIDE0OSwgMTU2LCAxMTgsIDI1LCA1LCAxNDksIAotICAgIDIzMiwgMTkxLCAxMTgsIDI1LCA1LCA3NiwgMTE4LCAyNSwgNSwgMjU0LCAyMTAsIDExOCwgMjUsIDUsIDc4LCAxMTgsIDI1LCAKLSAgICA1LCAyNTMsIDIwMCwgMTE4LCAyMTMsIDE1MiwgMTE4LCAyNDgsIDE4NiwgMTE4LCA1MiwgMjQ4LCAxODYsIDExOCwgMjI0LCAKLSAgICAxNDQsIDI0NywgMTI4LCAxMTgsIDIyNCwgMTQ0LCA1MiwgMjQ3LCAxMjgsIDExOCwgMjI0LCAxNDQsIDIzMiwgMjE5LCAxMTgsIAotICAgIDIyNCwgMTQ0LCAyNDksIDE0NSwgMTMwLCAxMTgsIDIyNCwgMTQ0LCAyMzIsIDEyMSwgMTE4LCA1NCwgMTExLCAxMTgsIDU0LCAKLSAgICAxMDUsIDExOCwgNTQsIDE1OCwgMTE4LCA1NCwgMTYxLCAxMTgsIDU0LCAxOTAsIDExOCwgNTQsIDE5NSwgMTE4LCA1NCwgCi0gICAgMTk5LCAxMTgsIDU0LCAxOTYsIDExOCwgNTQsIDIwMSwgMTE4LCA1NCwgMjE2LCAyNDgsIDExOCwgNTQsIDIxNSwgNzMsIAotICAgIDExOCwgNTQsIDIxNiwgMTYzLCAxMTgsIDU0LCAyNDQsIDIzLCAxMTgsIDU0LCAyNDQsIDEyMiwgMTE4LCA1NCwgMjE5LCAKLSAgICAxMTMsIDExOCwgNTQsIDIyMCwgMTE4LCAxMTgsIDU0LCAyNDUsIDE5MiwgMTE4LCA1NCwgMjI4LCAyMDAsIDExOCwgNTQsIAotICAgIDEyMywgMjQwLCAyMTcsIDExOCwgNTQsIDEyMywgMjE2LCAxNDgsIDExOCwgMjEsIDIxMCwgODYsIDExOCwgMjEsIDExMSwgCi0gICAgMTE4LCAyMSwgMTA1LCAxMTgsIDIxLCAxNTgsIDExOCwgMjEsIDE2MSwgMTE4LCAyMSwgMTkwLCAxMTgsIDIxLCAxOTUsIAotICAgIDExOCwgMjEsIDE5OSwgMTE4LCAyMSwgMTk2LCAxMTgsIDIxLCAyMDEsIDIzNCwgMjUwLCA1LCAyNTEsIDcsIDIzNCwgMjUwLCAKLSAgICA1LCAyNTQsIDgzLCAyMzQsIDI1MCwgNSwgMjEzLCAxNDcsIDIzNCwgMjUwLCAxLCA2MSwgMjM0LCAyNTAsIDEsIDI1NSwgODIsIAotICAgIDIzNCwgMjUwLCAxLCA3NCwgMjM0LCAyNTAsIDEsIDIzNiwgNDAsIDIzNCwgMjUwLCAxLCA2OSwgMjM0LCAyNTAsIDEsIDIxNCwgCi0gICAgMTE4LCAyMzQsIDI1MCwgMSwgNzYsIDIzNCwgMjUwLCAxLCAyNTQsIDIxMCwgMjM0LCAyNTAsIDEsIDc4LCAyMzQsIDI1MCwgCi0gICAgMSwgMjUzLCAyMDAsIDIzNCwgMjUwLCAxLCAxNzYsIDIzNCwgMjUwLCAxLCAyMzQsIDEzOCwgMjM0LCAyNTAsIDEsIDI0MywgCi0gICAgMTQyLCAyMzQsIDI1MCwgMSwgMjQzLCAwLCAyMzQsIDI1MCwgMSwgMjI5LCA4MiwgMjM0LCAyNTAsIDEsIDI1MSwgNDEsIAotICAgIDIzNCwgMjUwLCAxLCAyNTAsIDE2NSwgMjM0LCAyNTAsIDEsIDIzNSwgMTQ3LCAyMzQsIDI1MCwgMSwgMjM1LCAxMjAsIDIzNCwgCi0gICAgMjUwLCAxLCAyMjcsIDE2OSwgMjM0LCAyNTAsIDEsIDIxNSwgMTU3LCAyMzQsIDI1MCwgMSwgMjE1LCAxNDUsIDIzNCwgMjUwLCAKLSAgICAxLCAyNDgsIDE0MywgMjM0LCAyNTAsIDEsIDI0OCwgMTMyLCAyMzQsIDI1MCwgMSwgMjQ4LCAxMjcsIDIzNCwgMjUwLCAxLCAKLSAgICAyMjMsIDQyLCAyMzQsIDI1MCwgMSwgMjI4LCAxMTUsIDIzNCwgMjUwLCAxLCAyMTcsIDEwNiwgMjM0LCAyNTAsIDEsIDIxNiwgCi0gICAgMjA5LCAyMzQsIDI1MCwgMSwgMjQ4LCAyMjksIDIzNCwgMjUwLCAxLCAyNDgsIDMzLCAyMzQsIDI1MCwgMSwgMTk4LCAyMzQsIAotICAgIDI1MCwgMSwgMTkxLCAyMzQsIDI1MCwgMSwgMjI1LCAxNTAsIDIzNCwgMjUwLCAxLCAyNTIsIDE5OSwgMjM0LCAyNTAsIDEsIAotICAgIDI1MiwgMjYsIDIzNCwgMjUwLCAxLCAxODYsIDIzNCwgMjUwLCAxLCAxOTIsIDIzNCwgMjUwLCAxLCAyMDUsIDIzNCwgMjUwLCAKLSAgICAxLCAyMzMsIDE0MSwgMjM0LCAyNTAsIDEsIDIxNCwgMjcsIDIzNCwgMjUwLCAxLCAyMjAsIDEwNCwgMjM0LCAyNTAsIDEsIAotICAgIDIxOCwgMjI1LCAyMzQsIDI1MCwgMSwgMjA2LCAyMzQsIDI1MCwgMSwgMTYyLCAyMzQsIDI1MCwgMjUsIDUsIDI1NSwgODIsIAotICAgIDIzNCwgMjUwLCAyNSwgNSwgNzQsIDIzNCwgMjUwLCAyNSwgNSwgMjM2LCA0MCwgMjM0LCAyNTAsIDI1LCA1LCA2OSwgMjM0LCAKLSAgICAyNTAsIDI1LCA1LCAyMTQsIDExOCwgMjM0LCAyNTAsIDI1LCA1LCA3NiwgMjM0LCAyNTAsIDI1LCA1LCAyNTQsIDIxMCwgCi0gICAgMjM0LCAyNTAsIDI1LCA1LCA3OCwgMjM0LCAyNTAsIDI1LCA1LCAyNTMsIDIwMCwgMjM0LCAyNTAsIDUsIDIxMywgMTUyLCAKLSAgICAyMzQsIDI1MCwgNSwgMjI3LCAyMDksIDIzNCwgMjUwLCAyNTUsIDMwLCA1MCwgMjM0LCAyNTAsIDI0NSwgMTI5LCA1MCwgCi0gICAgMjM0LCAyNTAsIDU0LCA1MCwgMjM0LCAyNTAsIDIyMSwgMTc1LCA3OSwgMjM0LCAyNTAsIDUyLCAyMjEsIDE3NSwgNzksIAotICAgIDIzNCwgMjUwLCAyNDgsIDE4NiwgMjM0LCAyNTAsIDUyLCAyNDgsIDE4NiwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjIyLCAyMCwgCi0gICAgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjE3LCA4MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjUyLCAxNzYsIDIxOSwgMzgsIAotICAgIDIxOSwgNDYsIDEsIDI1MSwgMzEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0OCwgMjExLCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyNDMsIDEyNywgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjMxLCAyMTUsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyOSwgNzksIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzMywgMTE4LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMjksIDIxOCwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjE0LCAyNCwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjI2LCA3NywgMjE5LCAzOCwgMjE5LCA0NiwgMSwgCi0gICAgMjExLCA4NCwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjIzLCAxNzEsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI0MiwgNDQsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIzNCwgMjU0LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyMzUsIDE0MiwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjI3LCAxNjYsIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDI1NCwgMjE4LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAKLSAgICAyNDUsIDIxNSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjM2LCA0MSwgMjE5LCAzOCwgMjE5LCA0NiwgMSwgMjE0LCAyMDgsIAotICAgIDIxOSwgMzgsIDIxOSwgNDYsIDEsIDIyNiwgMjI2LCAyMTksIDM4LCAyMTksIDQ2LCAxLCAyNDUsIDIwNSwgMjE5LCAzOCwgCi0gICAgMjE5LCA0NiwgMSwgMjMxLCAyMjgsIDIxOSwgMzgsIDIxOSwgNDYsIDIxLCAyMTAsIDg2LCAyMTksIDM4LCAyMTksIDQ2LCAKLSAgICAyMSwgMTExLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTA1LCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTU4LCAyMTksIDM4LCAKLSAgICAyMTksIDQ2LCAyMSwgMTYxLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTkwLCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk1LCAKLSAgICAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk5LCAyMTksIDM4LCAyMTksIDQ2LCAyMSwgMTk2LCAyMTksIDM4LCAyMTksIDQ2LCAKLSAgICAyMSwgMjAxLCAyNTAsIDE1OSwgNSwgMjUxLCA3LCAyNTAsIDE1OSwgNSwgMjU0LCA4MywgMjUwLCAxNTksIDUsIDIxMywgCi0gICAgMTQ3LCAyNTAsIDE1OSwgMSwgMjU1LCA4MiwgMjUwLCAxNTksIDEsIDc0LCAyNTAsIDE1OSwgMSwgNjksIDI1MCwgMTU5LCAxLCAKLSAgICA3NiwgMjUwLCAxNTksIDEsIDIzNSwgMTYsIDI1MCwgMTU5LCAxLCAyMzQsIDEzNywgMjUwLCAxNTksIDEsIDI0MywgMTM5LCAKLSAgICAyNTAsIDE1OSwgMSwgMjQyLCAyNTUsIDI1MCwgMTU5LCAxLCAyMjksIDgxLCAyNTAsIDE1OSwgMSwgMjUxLCA0MCwgMjUwLCAKLSAgICAxNTksIDEsIDI1MCwgMTY0LCAyNTAsIDE1OSwgMSwgMjM1LCAxNDYsIDI1MCwgMTU5LCAxLCAyMzUsIDExOSwgMjUwLCAxNTksIAotICAgIDEsIDIyNywgMTY4LCAyNTAsIDE1OSwgMSwgMjE1LCAxNTYsIDI1MCwgMTU5LCAxLCAyMTUsIDE0NCwgMjUwLCAxNTksIDEsIAotICAgIDI0OCwgMTQyLCAyNTAsIDE1OSwgMSwgMjQ4LCAxMjYsIDI1MCwgMTU5LCAxLCAyMjgsIDExNCwgMjUwLCAxNTksIDEsIDIxNywgCi0gICAgMTAyLCAyNTAsIDE1OSwgMSwgMjE2LCAyMDgsIDI1MCwgMTU5LCAxLCAyNDgsIDIyOCwgMjUwLCAxNTksIDEsIDI0OCwgMzIsIAotICAgIDI1MCwgMTU5LCAxLCAyMjksIDIzMCwgMjUwLCAxNTksIDEsIDIyNiwgOTMsIDI1MCwgMTU5LCAxLCAyMjUsIDE0OSwgMjUwLCAKLSAgICAxNTksIDEsIDI1MiwgMTk3LCAyNTAsIDE1OSwgMSwgMjUyLCAyNSwgMjUwLCAxNTksIDEsIDIzMSwgMjQyLCAyNTAsIDE1OSwgCi0gICAgMSwgMjEwLCAxNjcsIDI1MCwgMTU5LCAxLCAyMTEsIDEwMywgMjUwLCAxNTksIDEsIDIyMywgMTg3LCAyNTAsIDE1OSwgMSwgCi0gICAgMjMzLCAxNDAsIDI1MCwgMTU5LCAxLCAyMTIsIDY0LCAyNTAsIDE1OSwgMSwgMjIyLCAzMywgMjUwLCAxNTksIDEsIDI0MiwgCi0gICAgNTMsIDI1MCwgMTU5LCAyNSwgNSwgNjEsIDI1MCwgMTU5LCAyNSwgNSwgNzQsIDI1MCwgMTU5LCAyNSwgNSwgMjM2LCA0MCwgCi0gICAgMjUwLCAxNTksIDI1LCA1LCA2OSwgMjUwLCAxNTksIDI1LCA1LCAyMTQsIDExOCwgMjUwLCAxNTksIDI1LCA1LCA3NiwgMjUwLCAKLSAgICAxNTksIDI1LCA1LCAyNTQsIDIxMCwgMjUwLCAxNTksIDI1LCA1LCA3OCwgMjUwLCAxNTksIDI1LCA1LCAyNTMsIDIwMCwgCi0gICAgMjUwLCAxNTksIDI1LCA1LCAyMjYsIDIyMywgMjUwLCAxNTksIDE0NCwgNzksIDI1MCwgMTU5LCAyNTMsIDIwMSwgNzksIAotICAgIDI1MCwgMTU5LCAyMTMsIDE1MiwgMjUwLCAxNTksIDIzMSwgMjQwLCAyNTAsIDE1OSwgMjEsIDIxMCwgODYsIDI1MCwgMTU5LCAKLSAgICAyMSwgMTExLCAyNTAsIDE1OSwgMjEsIDEwNSwgMjUwLCAxNTksIDIxLCAxNTgsIDI1MCwgMTU5LCAyMSwgMTYxLCAyNTAsIAotICAgIDE1OSwgMjEsIDE5MCwgMjUwLCAxNTksIDIxLCAxOTUsIDI1MCwgMTU5LCAyMSwgMTk5LCAyNTAsIDE1OSwgMjEsIDE5NiwgCi0gICAgMjUwLCAxNTksIDIxLCAyMDEsIDI1MCwgMTU5LCAyMjEsIDE3NSwgNzksIDI1MCwgMTU5LCAyNDgsIDE4NiwgMjUwLCAxNTksIAotICAgIDUyLCAyNDgsIDE4NiwgMjUwLCAxNTksIDIyNCwgMTYsIDc5LCAxNzQsIDUsIDI1MSwgNywgMTc0LCA1LCAyNTQsIDgzLCAKLSAgICAxNzQsIDUsIDIxMywgMTQ3LCAxNzQsIDEsIDYxLCAxNzQsIDEsIDI1NSwgODIsIDE3NCwgMSwgNzQsIDE3NCwgMSwgMjM2LCAKLSAgICA0MCwgMTc0LCAxLCA2OSwgMTc0LCAxLCAyMTQsIDExOCwgMTc0LCAxLCAxNDksIDE1MywgMTc0LCAxLCAxNDksIDIyMiwgCi0gICAgMTgyLCAxNzQsIDEsIDE0OSwgMTU2LCAxNzQsIDEsIDE0OSwgMjMyLCAxOTEsIDE3NCwgMSwgNzYsIDE3NCwgMSwgMjU0LCAKLSAgICAyMTAsIDE3NCwgMSwgNzgsIDE3NCwgMSwgMjUzLCAyMDAsIDE3NCwgMSwgMTc2LCAxNzQsIDEsIDIzNCwgMTM4LCAxNzQsIDEsIAotICAgIDI0MywgMTQyLCAxNzQsIDEsIDI0MywgMCwgMTc0LCAxLCAyMjksIDgyLCAxNzQsIDEsIDI1MSwgNDEsIDE3NCwgMSwgMjUwLCAKLSAgICAxNjUsIDE3NCwgMSwgMjM1LCAxNDcsIDE3NCwgMSwgMjM1LCAxMjAsIDE3NCwgMSwgMjI3LCAxNjksIDE3NCwgMSwgMjE1LCAKLSAgICAxNTcsIDE3NCwgMSwgMjE1LCAxNDUsIDE3NCwgMSwgMjQ4LCAxNDMsIDE3NCwgMSwgMjQ4LCAxMjcsIDE3NCwgMSwgMjI4LCAKLSAgICAxMTUsIDE3NCwgMSwgMjE3LCAxMDYsIDE3NCwgMSwgMjE2LCAyMDksIDE3NCwgMSwgMjQ4LCAyMjksIDE3NCwgMSwgMjQ4LCAKLSAgICAzMywgMTc0LCAxLCAxOTgsIDE3NCwgMSwgMTkxLCAxNzQsIDEsIDIyNSwgMTUwLCAxNzQsIDEsIDI1MiwgMTk5LCAxNzQsIDEsIAotICAgIDI1MiwgMjYsIDE3NCwgMSwgMTg2LCAxNzQsIDEsIDE5MiwgMTc0LCAxLCAyMDUsIDE3NCwgMSwgMjMzLCAxNDEsIDE3NCwgMSwgCi0gICAgMjMyLCAxOTAsIDE3NCwgMSwgMjE0LCAyNywgMTc0LCAxLCAyMjAsIDEwNCwgMTc0LCAxLCAyMTgsIDIyNSwgMTc0LCAxLCAKLSAgICAyMDYsIDE3NCwgMSwgMTYyLCAxNzQsIDI1LCA1LCAyNTUsIDgyLCAxNzQsIDI1LCA1LCA3NCwgMTc0LCAyNSwgNSwgMjM2LCAKLSAgICA0MCwgMTc0LCAyNSwgNSwgNjksIDE3NCwgMjUsIDUsIDIxNCwgMTE4LCAxNzQsIDI1LCA1LCAxNDksIDE1MywgMTc0LCAyNSwgCi0gICAgNSwgMTQ5LCAyMjIsIDE4MiwgMTc0LCAyNSwgNSwgMTQ5LCAxNTYsIDE3NCwgMjUsIDUsIDE0OSwgMjMyLCAxOTEsIDE3NCwgCi0gICAgMjUsIDUsIDc2LCAxNzQsIDI1LCA1LCAyNTQsIDIxMCwgMTc0LCAyNSwgNSwgNzgsIDE3NCwgMjUsIDUsIDI1MywgMjAwLCAKLSAgICAxNzQsIDUsIDIxMywgMTUyLCAxNzQsIDUsIDI1MywgMTgzLCAxNzQsIDUsIDIzNSwgMTA4LCAxNzQsIDUsIDIxNCwgMTYxLCAKLSAgICAxNzQsIDIyNiwgMjA4LCAxNzQsIDI0OCwgMTg2LCAxNzQsIDUyLCAyNDgsIDE4NiwgMTc0LCAyNTUsIDMwLCA1MCwgMTc0LCAKLSAgICAyMjAsIDEzOSwgMTc0LCAyMSwgMjEwLCA4NiwgMTc0LCAyMSwgMTExLCAxNzQsIDIxLCAxMDUsIDE3NCwgMjEsIDE1OCwgCi0gICAgMTc0LCAyMSwgMTYxLCAxNzQsIDIxLCAxOTAsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMTk5LCAxNzQsIDIxLCAxOTYsIAotICAgIDE3NCwgMjEsIDIwMSwgMjE3LCA3MCwgMSwgNjEsIDIxNywgNzAsIDEsIDI1NSwgODIsIDIxNywgNzAsIDEsIDc0LCAyMTcsIAotICAgIDcwLCAxLCAyMzYsIDQwLCAyMTcsIDcwLCAxLCA2OSwgMjE3LCA3MCwgMSwgMjE0LCAxMTgsIDIxNywgNzAsIDEsIDc2LCAKLSAgICAyMTcsIDcwLCAxLCAyNTQsIDIxMCwgMjE3LCA3MCwgMSwgNzgsIDIxNywgNzAsIDEsIDI1MywgMjAwLCAyMTcsIDcwLCAxLCAKLSAgICAxNzYsIDIxNywgNzAsIDEsIDIzNCwgMTM4LCAyMTcsIDcwLCAxLCAyNDMsIDE0MiwgMjE3LCA3MCwgMSwgMjQzLCAwLCAyMTcsIAotICAgIDcwLCAxLCAyMjksIDgyLCAyMTcsIDcwLCAxLCAyNTEsIDQxLCAyMTcsIDcwLCAxLCAyNTAsIDE2NSwgMjE3LCA3MCwgMSwgCi0gICAgMjM1LCAxNDcsIDIxNywgNzAsIDEsIDIzNSwgMTIwLCAyMTcsIDcwLCAxLCAyMjcsIDE2OSwgMjE3LCA3MCwgMSwgMjE1LCAKLSAgICAxNTcsIDIxNywgNzAsIDEsIDIxNSwgMTQ1LCAyMTcsIDcwLCAxLCAyNDgsIDE0MywgMjE3LCA3MCwgMSwgMjQ4LCAxMjcsIAotICAgIDIxNywgNzAsIDEsIDIyOCwgMTE1LCAyMTcsIDcwLCAxLCAyMTcsIDEwNiwgMjE3LCA3MCwgMSwgMjE2LCAyMDksIDIxNywgCi0gICAgNzAsIDEsIDI0OCwgMjI5LCAyMTcsIDcwLCAxLCAyNDgsIDMzLCAyMTcsIDcwLCAxLCAxOTgsIDIxNywgNzAsIDEsIDE5MSwgCi0gICAgMjE3LCA3MCwgMSwgMjI1LCAxNTAsIDIxNywgNzAsIDEsIDI1MiwgMTk5LCAyMTcsIDcwLCAxLCAyNTIsIDI2LCAyMTcsIDcwLCAKLSAgICAxLCAxODYsIDIxNywgNzAsIDEsIDE5MiwgMjE3LCA3MCwgMSwgMjA1LCAyMTcsIDcwLCAxLCAyMzMsIDE0MSwgMjE3LCA3MCwgCi0gICAgMSwgMjE0LCAyNywgMjE3LCA3MCwgMSwgMjIwLCAxMDQsIDIxNywgNzAsIDEsIDIwNiwgMjE3LCA3MCwgMSwgMTYyLCAyMTcsIAotICAgIDcwLCAxLCAyMjIsIDE4MSwgMjE3LCA3MCwgNSwgMjU0LCA4MywgMjE3LCA3MCwgNSwgMjEzLCAxNDcsIDIxNywgNzAsIDI1LCAKLSAgICA1LCAyNTUsIDgyLCAyMTcsIDcwLCAyNSwgNSwgNzQsIDIxNywgNzAsIDI1LCA1LCAyMzYsIDQwLCAyMTcsIDcwLCAyNSwgNSwgCi0gICAgNjksIDIxNywgNzAsIDI1LCA1LCAyMTQsIDExOCwgMjE3LCA3MCwgMjUsIDUsIDc2LCAyMTcsIDcwLCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDIxNywgNzAsIDI1LCA1LCA3OCwgMjE3LCA3MCwgMjUsIDUsIDI1MywgMjAwLCAyMTcsIDcwLCA1LCAyMTMsIDE1MiwgCi0gICAgMjE3LCA3MCwgNSwgMjI3LCAyMDksIDIxNywgNzAsIDIxLCAyMTAsIDg2LCAyMTcsIDcwLCAyMSwgMTExLCAyMTcsIDcwLCAKLSAgICAyMSwgMTA1LCAyMTcsIDcwLCAyMSwgMTU4LCAyMTcsIDcwLCAyMSwgMTYxLCAyMTcsIDcwLCAyMSwgMTkwLCAyMTcsIDcwLCAKLSAgICAyMSwgMTk1LCAyMTcsIDcwLCAyMSwgMTk5LCAyMTcsIDcwLCAyMSwgMTk2LCAyMTcsIDcwLCAyMSwgMjAxLCAxNSwgNSwgNjEsIAotICAgIDE1LCA1LCAxMTYsIDMwLCA2MSwgMTUsIDUsIDExNiwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMTE2LCAzMCwgMjQzLCAxMTIsIAotICAgIDIxNiwgMjQwLCAxNSwgNSwgMTE2LCAzMCwgMTYyLCAxNSwgNSwgMTE2LCAzMCwgMjM2LCA0MiwgMTUsIDUsIDExNiwgMzAsIAotICAgIDIzMywgMTIyLCAyNDIsIDEwMSwgMTUsIDUsIDExNiwgMzAsIDIzMCwgNjYsIDE1LCA1LCAxMTYsIDMwLCAyMjIsIDIzLCAxNSwgCi0gICAgNSwgMjU1LCA4NCwgMTUsIDUsIDI1NSwgMzQsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjUzLCAyMzcsIDE1LCA1LCAyNTUsIDM1LCAKLSAgICAzMCwgMjQ2LCA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMjQzLCAxMjUsIDE1LCA1LCAyNTUsIDM1LCAzMCwgCi0gICAgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjU1LCAzNSwgMzAsIDE2MiwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyMzYsIDQzLCAKLSAgICAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzUsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjU1LCAzNSwgMzAsIDIzMywgMTIzLCAxNSwgCi0gICAgNSwgMjU1LCAzNSwgMzAsIDIyMCwgNTAsIDE1LCA1LCAyNTUsIDM1LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNjksIDE1LCA1LCAKLSAgICAyNTUsIDM1LCAyNDIsIDEwMSwgMTUsIDUsIDI1NSwgMzIsIDE1LCA1LCAyNTUsIDMzLCAzMCwgMjUyLCAxNjgsIDE1LCA1LCAKLSAgICAyNTUsIDMzLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjU1LCAzMywgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIAotICAgIDE1OCwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyMjAsIDEwMiwgMTUsIDUsIDI1NSwgMzMsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjU1LCA4LCAxNSwgNSwgMjU0LCAxOTUsIDE1LCA1LCAyNTQsIDE5NiwgMzAsIDI0NSwgOTUsIDE1LCA1LCAyNTQsIDE5NiwgCi0gICAgMzAsIDIyMCwgMTIsIDk2LCAyNDIsIDE5NywgMTUsIDUsIDI1NCwgMTg3LCAxNSwgNSwgMjU0LCAxODgsIDMwLCAyNTQsIAotICAgIDE4NywgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjQ3LCAyMjQsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDI0MiwgMTk3LCAxNSwgNSwgCi0gICAgMjU0LCAxODgsIDMwLCAxNjIsIDE1LCA1LCAyNTQsIDE4OCwgMzAsIDIzNSwgNSwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjM0LCAKLSAgICA5OCwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDI1NCwgMTg4LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAKLSAgICAyNTQsIDE4NCwgMTUsIDUsIDI1NCwgMTc3LCAxNSwgNSwgMjU0LCAxNDAsIDE1LCA1LCAyNTQsIDE0MSwgMzAsIDIyMCwgNjUsIAotICAgIDE1LCA1LCAyNTQsIDEzMSwgMTUsIDUsIDI1NCwgMTMyLCAxMTUsIDI1NCwgMTMxLCAxNSwgNSwgMjU0LCAxMzIsIDEzNCwgCi0gICAgMjE2LCA4NiwgMTUsIDUsIDI1NCwgMTMyLCA5NiwgMjI5LCAyMjIsIDIyNiwgMTY4LCAyNTQsIDEzMiwgOTYsIDIyOSwgMjIxLCAKLSAgICAxNSwgNSwgMjU0LCAxMzIsIDk2LCAyMjksIDIyMiwgMjE4LCAyMzUsIDE1LCA1LCAyNTQsIDEwMiwgMTUsIDUsIDI1NCwgNzUsIAotICAgIDE1LCA1LCAyNTQsIDQzLCAxNSwgNSwgMjU0LCA0NCwgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjU0LCAxNiwgMTUsIDUsIDI1MywgCi0gICAgMjQ0LCAxNSwgNSwgMjUzLCAyMzksIDE1LCA1LCAyNTMsIDI0MCwgMjEwLCA0MCwgMjE2LCAyNDAsIDE1LCA1LCAyNTMsIAotICAgIDI0MCwgMjM1LCA5LCAyMTYsIDI0MCwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAyMTUsIDExNSwgMTE1LCAKLSAgICAyMTUsIDExNSwgMjE1LCAxMTUsIDExNSwgMjE1LCAxMTUsIDIyNiwgMjUsIDE1LCA1LCAyNTMsIDI0MCwgMTE1LCAyNTMsIAotICAgIDI0MCwgMTE1LCAyNTMsIDIzOSwgMTUsIDUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAxMTUsIDI1MywgMjQwLCAyNDksIAotICAgIDEzMywgMjUzLCAyNDAsIDExNSwgMjUzLCAyNDAsIDExNSwgMjUzLCAyMzksIDE1LCA1LCAyNTMsIDIzNywgMTUsIDUsIDI1MywgCi0gICAgMjM0LCAxNSwgNSwgMjUyLCAxOTksIDE1LCA1LCAyNTIsIDE4NCwgMTUsIDUsIDI1MiwgMTc5LCAxNSwgNSwgMjUyLCAxNzUsIAotICAgIDE1LCA1LCAyNTIsIDE2OSwgMTUsIDUsIDI1MiwgMTcwLCAxMTUsIDI1MiwgMTY5LCAxNSwgNSwgMjUyLCAxNjgsIDE1LCA1LCAKLSAgICAxMzAsIDE1LCA1LCAyNTIsIDE0OCwgMTUsIDUsIDI1MiwgMTQsIDE1LCA1LCAyNTIsIDE1LCAzMCwgNjEsIDE1LCA1LCAyNTIsIAotICAgIDE1LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyNTIsIDE1LCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyNTEsIDEzMywgCi0gICAgMTUsIDUsIDI1MSwgMTM0LCAxMTUsIDI1MSwgMTM0LCAyNTUsIDM0LCAxNSwgNSwgMjUxLCAxMzQsIDExNSwgMjUxLCAxMzQsIAotICAgIDIxNCwgMTkwLCAxNSwgNSwgMjUxLCAxMzQsIDI0OSwgMTMzLCAyNTEsIDEzMywgMTUsIDUsIDI1MSwgMTE3LCAxNSwgNSwgCi0gICAgMjUxLCAxMTgsIDExNSwgMjUxLCAxMTcsIDE1LCA1LCAyNTEsIDEwNiwgMTUsIDUsIDI1MSwgMTA1LCAxNSwgNSwgMjQ4LCAKLSAgICAyMjksIDE1LCA1LCAyNDgsIDIyMCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMTE2LCA5NiwgMjMxLCAxNTIsIAotICAgIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI1NCwgMTQwLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAKLSAgICAyNTIsIDE2OCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjUyLCAxNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIAotICAgIDcyLCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI0MywgMTQzLCA5NiwgMjMxLCAxNTIsIAotICAgIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDI0MiwgMjIxLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAKLSAgICAyNDIsIDIwNCwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjQyLCAxMTAsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCAKLSAgICA3MiwgMzAsIDE2MiwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAzMCwgMjM1LCAxODYsIDE1LCA1LCAyNDgsIDIyMSwgCi0gICAgMjM0LCA3MiwgMzAsIDIzNSwgMTg3LCA5NiwgMjMyLCAxMDMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzNCwgCi0gICAgMjQ4LCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMzMsIDE0MSwgMTUsIDUsIDI0OCwgMjIxLCAyMzQsIDcyLCAKLSAgICAzMCwgMjMyLCAxMDMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMiwgMTA0LCA5NiwgMjMxLCAxNTEsIDE1LCAKLSAgICA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIzMiwgODksIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIyOSwgCi0gICAgMTEyLCAxNSwgNSwgMjQ4LCAyMjEsIDIzNCwgNzIsIDMwLCAyMjYsIDI2LCA5NiwgMjI2LCAyNSwgMTUsIDUsIDI0OCwgMjIxLCAKLSAgICAyMzQsIDcyLCAzMCwgMjE5LCAxOTMsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIDIxNywgNzMsIDE1LCA1LCAyNDgsIAotICAgIDIyMSwgMjM0LCA3MiwgMzAsIDIxNCwgMjMxLCA5NiwgMjQyLCAyMDQsIDE1LCA1LCAyNDgsIDIyMSwgMjM0LCA3MiwgMzAsIAotICAgIDIxNCwgMTI2LCAxNSwgNSwgMjQ4LCAxOTUsIDE1LCA1LCAyNDgsIDE3NCwgMTUsIDUsIDI0OCwgMTczLCAxNSwgNSwgMjQ4LCAKLSAgICAxNzIsIDE1LCA1LCAyNDgsIDExLCAxNSwgNSwgMjQ3LCAyNTAsIDE1LCA1LCAyNDcsIDIyNSwgMTUsIDUsIDI0NywgMjI2LCAKLSAgICAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0NywgMjI0LCAxNSwgNSwgMjQ3LCAyMTQsIDE1LCA1LCAyNDcsIDIxNSwgMjM0LCAyMTQsIAotICAgIDEwNCwgMjQyLCAxMDIsIDI0NywgMTk1LCAxNSwgNSwgMjQ3LCAxOTUsIDE1LCA1LCAyNDYsIDg2LCAxNSwgNSwgMjQ2LCA4NywgCi0gICAgMTE1LCAyNDYsIDg2LCAxNSwgNSwgMjQ2LCA4NywgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDg3LCAyMjAsIDQ3LCAxNSwgNSwgCi0gICAgMjQ2LCA4NCwgMTUsIDUsIDI0NiwgODUsIDMwLCAyNDUsIDgwLCAxNSwgNSwgMjQ2LCA4MywgMTUsIDUsIDI0NiwgODIsIDE1LCAKLSAgICA1LCAyNDYsIDgxLCAxNSwgNSwgMjQ2LCA4MCwgMTUsIDUsIDI0NiwgNzYsIDE1LCA1LCAyNDYsIDc0LCAxNSwgNSwgMjQ2LCAKLSAgICA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDc1LCAyNDIsIDEwMiwgMjQyLCAxMDEsIDE1LCA1LCAyNDYsIDczLCAxNSwgNSwgCi0gICAgMjQ2LCA2NiwgMTUsIDUsIDc2LCAxNSwgNSwgMTYwLCAzMCwgMjI2LCAyNSwgMTUsIDUsIDE2MCwgMTE1LCAxNjAsIDIyNywgCi0gICAgMTk5LCAxMTUsIDIyNywgMTk4LCAxNSwgNSwgMjQ1LCAyNDIsIDE1LCA1LCAyNDUsIDI0MywgMzAsIDExNiwgOTYsIDI0MiwgCi0gICAgNTYsIDk2LCAyNDgsIDIyOSwgMTUsIDUsIDI0NSwgMjQzLCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyNDUsIDI0MywgMzAsIAotICAgIDIzMCwgMjM1LCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyMjIsIDEwLCAxNSwgNSwgMjQ1LCAyNDMsIDMwLCAyMjAsIDY1LCAxNSwgCi0gICAgNSwgMjQ1LCAyNDMsIDMwLCA2OSwgMTUsIDUsIDI0NSwgMjE5LCAxNSwgNSwgMjQ1LCAyMDgsIDE1LCA1LCAyNDUsIDE4MiwgCi0gICAgMTUsIDUsIDI0NSwgMTU4LCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyNDMsIDExMSwgMTUsIDUsIDI0NSwgMTU5LCAzMCwgMjQzLCAKLSAgICAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQ1LCAxNTksIDMwLCAyMzEsIDk2LCAxNSwgNSwgMjQ1LCAxNTksIDI0OSwgMTMzLCAKLSAgICAyNDUsIDE1OCwgMTUsIDUsIDI0NSwgMTU5LCAyMjYsIDE2OCwgMjQ1LCAxNTgsIDE1LCA1LCAyNDUsIDE1OSwgMjE4LCAyMzUsIAotICAgIDE1LCA1LCAyNDUsIDk3LCAxNSwgNSwgMjQ1LCA5NSwgMTUsIDUsIDI0NSwgODAsIDE1LCA1LCAyNDUsIDE4LCAxNSwgNSwgCi0gICAgMjQ1LCAxOSwgMzAsIDYxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDExNiwgOTYsIDIzMywgMTEwLCAxNSwgNSwgMjQ1LCAxOSwgCi0gICAgMzAsIDExNiwgOTYsIDIzMywgMTExLCAzMCwgMjMzLCAxMTAsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjQ2LCA3NSwgMjQyLCAxMDEsIDE1LCA1LCAyNDUsIAotICAgIDE5LCAzMCwgMjQ2LCA3NSwgMjQyLCAxMDIsIDI0MiwgMTAxLCAxNSwgNSwgMjQ1LCAxOSwgMzAsIDE2MiwgMTUsIDUsIDI0NSwgCi0gICAgMTksIDMwLCAyNDIsIDU2LCAyNDIsIDEwMSwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIDUsIAotICAgIDI0NSwgMTksIDMwLCAyMzQsIDIxMywgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzQsIDIxNCwgMjE4LCAyMzUsIDE1LCA1LCAKLSAgICAyNDUsIDE5LCAzMCwgMjMzLCAyMjEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgMjMzLCAxNDEsIDE1LCA1LCAyNDUsIDE5LCAzMCwgCi0gICAgMjMzLCAxMTEsIDMwLCAyMzMsIDExMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMzIsIDI0NywgMTUsIDUsIDI0NSwgMTksIDMwLCAKLSAgICAyMzIsIDEwMywgMTUsIDUsIDI0NSwgMTksIDMwLCAyMTQsIDIzMCwgMTUsIDUsIDI0NSwgMTksIDMwLCAyMTQsIDIxOSwgMTUsIAotICAgIDUsIDI0MywgMTQyLCAxNSwgNSwgMjQzLCAxNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQzLCAxNDAsIDE1LCA1LCAyNDMsIDE0MSwgCi0gICAgMzAsIDExNiwgOTYsIDI0OCwgMjMwLCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAxMTYsIDk2LCAxNjIsIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDExNiwgOTYsIDIzNiwgNDIsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1NSwgMzMsIDIxNiwgMjQxLCAKLSAgICA5NiwgMjE3LCA5NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjU0LCAxMzEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI1MywgCi0gICAgMjM5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTMsIDIzOCwgOTYsIDI0MywgMTI1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjUyLCAxNDksIDk2LCAyMDUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDI1MSwgMTA2LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNTEsIDEwNywgOTYsIDIwNSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjQ4LCAyMjksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0OCwgMTEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NywgMjI2LCAKLSAgICAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ2LCA4NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQ1LCAxODIsIAotICAgIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgMTgzLCA5NiwgMjMzLCAxNDEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0NSwgCi0gICAgMTU4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDUsIDE1OSwgMzAsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDI0MywgCi0gICAgMTQxLCAzMCwgMjQyLCAyMjEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMjE5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyNDIsIDIyMCwgOTYsIDYxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyNDIsIDIwNSwgOTYsIDIxOCwgODQsIDE1LCA1LCAyNDMsIAotICAgIDE0MSwgMzAsIDI0MiwgNTYsIDk2LCAyMzIsIDEwNCwgOTYsIDI0NSwgODAsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgCi0gICAgMzcsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDI0MiwgMzgsIDk2LCAyMzMsIDE0MSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQxLCAKLSAgICAxODgsIDk2LCAyMzIsIDI0NywgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjQwLCAyMjUsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIAotICAgIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzUsIDE3MywgOTYsIDI0MCwgMjMwLCA5NiwgMjUzLCAKLSAgICAyMzksIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzQsIDIxMywgMTUsIDUsIAotICAgIDI0MywgMTQxLCAzMCwgMjM0LCA5NSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjM0LCA5NiwgOTYsIDIzMywgMTEwLCAxNSwgNSwgCi0gICAgMjQzLCAxNDEsIDMwLCAyMzMsIDIyMiwgOTYsIDI1NCwgMTMxLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzMsIDE0MSwgMTUsIAotICAgIDUsIDI0MywgMTQxLCAzMCwgMjMxLCA5NywgOTYsIDI0NSwgMTU4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMzAsIDIzNSwgCi0gICAgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyNywgMTk5LCAxMTUsIDIyNywgCi0gICAgMTk4LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAxOTEsIDE1LCA1LCAyNDMsIDE0MSwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyNDMsIAotICAgIDE0MSwgMzAsIDIyMSwgMjMzLCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAKLSAgICAyMjAsIDY2LCA5NiwgMjE1LCA5OSwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjIwLCAzMiwgMTUsIDUsIDI0MywgMTQxLCAzMCwgCi0gICAgMjE4LCA0NCwgMTUsIDUsIDI0MywgMTQxLCAzMCwgMjE3LCA3MywgMTUsIDUsIDI0MywgMTQxLCAzMCwgNjksIDE1LCA1LCAKLSAgICAyNDMsIDE0MSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxNDEsIDMwLCAyMTQsIDIyMCwgOTYsIDI0NiwgODYsIDE1LCAKLSAgICA1LCAyNDMsIDE0MSwgMTE1LCAyNDMsIDE0MCwgMTUsIDUsIDI0MywgMTM1LCAxNSwgNSwgMjQzLCAxMzYsIDI0OSwgMTMzLCAKLSAgICAyNDMsIDEzNSwgMTUsIDUsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgMTA0LCAxMTUsIAotICAgIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMjUsIDE1LCA1LCAyNDMsIDEyNiwgMjQzLCAxMzQsIDExNSwgMjQzLCAxMzQsIDI0MywgCi0gICAgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMjQsIDE1LCA1LCAyNDMsIDEyMiwgMTUsIDUsIDI0MywgMTEzLCAKLSAgICAxNSwgNSwgMjQzLCAxMTEsIDE1LCA1LCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDMsIDExMiwgMTE1LCAyNDMsIAotICAgIDExMSwgMTUsIDUsIDI0MywgMTEyLCAyNDksIDEzMywgMjQzLCAxMTEsIDE1LCA1LCAyNDMsIDEwMywgMTUsIDUsIDI0MywgCi0gICAgMTAyLCAxNSwgNSwgMjQzLCA5NywgMTUsIDUsIDI0MywgNDMsIDE1LCA1LCAyNDMsIDQ0LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAKLSAgICAyNDIsIDIyMSwgMTUsIDUsIDI0MiwgMjIyLCAzMCwgNzYsIDE1LCA1LCAyNDIsIDIyMiwgMzAsIDY5LCAxNSwgNSwgMjQyLCAKLSAgICAyMjIsIDI0OSwgMTMzLCAyNDIsIDIyMSwgMTUsIDUsIDI0MiwgMjE5LCAxNSwgNSwgMjQyLCAyMjAsIDExNSwgMjQyLCAyMTksIAotICAgIDE1LCA1LCAyNDIsIDIyMCwgMjQ5LCAxMzMsIDI0MiwgMjE5LCAxNSwgNSwgMjQyLCAyMTYsIDE1LCA1LCAyNDIsIDIwNCwgCi0gICAgMTUsIDUsIDI0MiwgMjA1LCAyNDIsIDEwMSwgMTUsIDUsIDI0MiwgMjAyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAxMTYsIDk2LCAKLSAgICAyMzYsIDQyLCAxNSwgNSwgMjQyLCAyMDMsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyNDIsIDIwMywgMzAsIAotICAgIDIzNiwgNDIsIDE1LCA1LCAyNDIsIDIwMywgMzAsIDIzMiwgMTA0LCA5NiwgMjM2LCA0MiwgMTUsIDUsIDI0MiwgMjAzLCAzMCwgCi0gICAgMTkxLCAxNSwgNSwgMjQyLCAxOTksIDE1LCA1LCAyNDIsIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAyNDksIDEzMywgMjQyLCAKLSAgICAxOTcsIDE1LCA1LCAyNDIsIDE5OCwgMzAsIDI1MiwgMTg0LCAxNSwgNSwgMjQyLCAxOTgsIDMwLCAyMTcsIDczLCAxNSwgNSwgCi0gICAgMjQyLCAxOTgsIDIxNiwgMjQwLCAxNSwgNSwgMjQyLCAxMjAsIDE1LCA1LCAyNDIsIDEyMSwgMjQ5LCAxMzMsIDI0MiwgMTIwLCAKLSAgICAxNSwgNSwgMjQyLCAxMTgsIDE1LCA1LCAyNDIsIDExOSwgMzAsIDIzNCwgMjQ4LCAxNSwgNSwgMjQyLCAxMTksIDMwLCAyMzQsIAotICAgIDI0OSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAxMTksIDMwLCAyMjcsIDE5OCwgMTUsIDUsIDI0MiwgCi0gICAgMTE5LCAzMCwgMjIyLCAxMSwgOTYsIDIxNSwgMTE0LCAxNSwgNSwgMjQyLCAxMTksIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAKLSAgICAxMTAsIDE1LCA1LCAyNDIsIDExMSwgMzAsIDExNiwgOTYsIDIzMywgMjAyLCAxNSwgNSwgMjQyLCAxMTEsIDMwLCAyMzMsIAotICAgIDIwMiwgMTUsIDUsIDI0MiwgMTExLCAxMTUsIDI0MiwgMTExLCAyMzIsIDk2LCAxNSwgNSwgMjQyLCAxMDUsIDE1LCA1LCAKLSAgICAyNDIsIDEwMywgMTUsIDUsIDI0MiwgMTA0LCAzMCwgMjIwLCA2NSwgMTUsIDUsIDI0MiwgOTUsIDE1LCA1LCAyNDIsIDk0LCAKLSAgICAxNSwgNSwgMjQyLCA5MSwgMTUsIDUsIDI0MiwgOTAsIDE1LCA1LCAxNjIsIDE1LCA1LCAyNDIsIDU2LCAyMTYsIDI0MCwgMTUsIAotICAgIDUsIDI0MiwgNTYsIDI0MiwgMTAxLCAxNSwgNSwgMjQyLCAzNywgMTUsIDUsIDI0MSwgMTg3LCAxNSwgNSwgMjQxLCAxODgsIAotICAgIDMwLCAyNTMsIDIzOSwgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjUzLCAyMzcsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjQxLCAxODgsIDMwLCAyNDcsIDE5NSwgMTUsIDUsIDI0MSwgMTg4LCAzMCwgMjQzLCAxMzMsIDE1LCA1LCAKLSAgICAyNDEsIDE4OCwgMzAsIDIzNCwgODcsIDE1LCA1LCAyNDEsIDE4OCwgMzAsIDIyNywgMTk4LCAxNSwgNSwgMjQxLCAxODgsIAotICAgIDMwLCAyMjAsIDY1LCAxNSwgNSwgMjQxLCAxODgsIDMwLCA2OSwgMTUsIDUsIDI0MCwgMjI5LCAxNSwgNSwgMjQwLCAyMjUsIAotICAgIDE1LCA1LCAyNDAsIDIyNiwgMzAsIDI1NCwgMTMxLCAxNSwgNSwgMjQwLCAyMjYsIDMwLCAyNDIsIDM3LCAxNSwgNSwgMjQwLCAKLSAgICAyMjYsIDMwLCAyMzQsIDIxMywgMTUsIDUsIDI0MCwgMjI2LCAzMCwgMjMyLCAyMDMsIDE1LCA1LCAyNDAsIDIyNiwgMzAsIAotICAgIDIxNCwgMjE5LCAxNSwgNSwgMjQwLCAyMjIsIDE1LCA1LCA3NCwgMTUsIDUsIDI0MCwgMTYxLCA2MSwgMTUsIDUsIDI0MCwgCi0gICAgMTIyLCAxNSwgNSwgMjM2LCA3MCwgMTUsIDUsIDIzNiwgNzEsIDExNSwgMjM2LCA3MSwgMjUxLCAxMDYsIDE1LCA1LCAyMzYsIAotICAgIDcxLCAxMTUsIDIzNiwgNzEsIDIxOCwgMjM1LCAxNSwgNSwgMjM2LCA0NSwgMTUsIDUsIDIzNiwgNDIsIDE1LCA1LCAyMzYsIAotICAgIDQzLCAyNDcsIDI1MCwgMTUsIDUsIDIzNiwgNDMsIDIyMywgMzgsIDE1LCA1LCAyMzYsIDQzLCAxMTUsIDIzNiwgNDMsIDIyMCwgCi0gICAgMTYsIDExNSwgMjIwLCAxNiwgMjE0LCAyMjAsIDExNSwgMjE0LCAyMTksIDE1LCA1LCAyMzYsIDQzLCAyNDIsIDEwMSwgMTUsIAotICAgIDUsIDIzNiwgMzQsIDE1LCA1LCAyMzYsIDM1LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjM2LCAzMywgMTUsIAotICAgIDUsIDIzNiwgMjMsIDE1LCA1LCAyMzYsIDI0LCAzMCwgMjE3LCA3MywgMTUsIDUsIDIzNiwgMjQsIDI0OSwgMTMzLCAyMzYsIAotICAgIDIzLCAxNSwgNSwgMjM2LCAyNCwgMjI2LCAxNjgsIDIzNiwgMjMsIDE1LCA1LCAyMzYsIDI0LCAyMTgsIDIzNSwgMTUsIDUsIAotICAgIDIzNiwgMTYsIDE1LCA1LCAyMzYsIDYsIDE1LCA1LCAyMzUsIDE4NiwgMTUsIDUsIDIzNSwgMTcyLCAxNSwgNSwgMTc2LCAxNSwgCi0gICAgNSwgMjM1LCAxOSwgMzAsIDYxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI1NSwgOCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTUsIAotICAgIDksIDk2LCAyMzMsIDIyMSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTIsIAotICAgIDE4NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNTIsIDE2OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAxMzAsIDE1LCA1LCAyMzUsIAotICAgIDE5LCAzMCwgMjUyLCAxNCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDUsIDk1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0NSwgCi0gICAgODAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxNDIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQzLCAxMjUsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MywgMTAzLCAxNSwgNSwgCi0gICAgMjM1LCAxOSwgMzAsIDI0MywgMTA0LCA5NiwgMjIwLCAxMDMsIDk2LCA2MSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIAotICAgIDIyMSwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDIwNCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyNDIsIDE5OCwgOTYsIDIyMSwgCi0gICAgMjMzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDI0MiwgMTk4LCAyNDksIDEzMywgMjQyLCAxOTcsIDE1LCA1LCAyMzUsIDE5LCAKLSAgICAzMCwgMjQyLCAxMjAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjQyLCA5NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzYsIDQyLCAKLSAgICAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzNiwgMjMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjM0LCAyNDgsIDE1LCA1LCAyMzUsIAotICAgIDE5LCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMzQsIDk1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMiwgCi0gICAgMjQ3LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMiwgMTAzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMSwgOTYsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDI0NiwgODYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjMxLCA5NywgOTYsIDI0MiwgCi0gICAgMjIxLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMSwgOTcsIDk2LCAyMTcsIDIzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMCwgCi0gICAgMjM1LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIzMCwgMjM2LCA5NiwgMjI3LCAxOTMsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI5LCAKLSAgICAxMTIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjI1LCAxMTEsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjIyLCAxNDIsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjA2LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMSwgCi0gICAgMjMzLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMCwgMTA0LCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAKLSAgICAyMzUsIDE5LCAzMCwgMjIwLCAzMiwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTksIDIyNywgMTUsIDUsIDIzNSwgMTksIDMwLCAKLSAgICAyMTksIDE4NCwgMTUsIDUsIDIzNSwgMTksIDMwLCAyMTgsIDUyLCAxNSwgNSwgMjM1LCAxOSwgMzAsIDIxNywgNTEsIDE1LCAKLSAgICA1LCAyMzUsIDE5LCAzMCwgNjksIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMzUsIDE5LCAzMCwgCi0gICAgMjE0LCAyMTksIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAxOTMsIDMwLCAxOTEsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjE0LCAKLSAgICAxMjYsIDE1LCA1LCAyMzUsIDE5LCAzMCwgMjEwLCA0NCwgMTUsIDUsIDIzNSwgMTcsIDE1LCA1LCAyMzUsIDE4LCAyNDksIAotICAgIDEzMywgMjM1LCAxNywgMTUsIDUsIDIzNSwgMTAsIDE1LCA1LCAyMzUsIDcsIDE1LCA1LCAyMzUsIDUsIDE1LCA1LCAyMzUsIAotICAgIDQsIDE1LCA1LCAyMzUsIDIsIDE1LCA1LCAyMzUsIDMsIDExNSwgMjM1LCAyLCAxNSwgNSwgMjM0LCAyNDgsIDE1LCA1LCAKLSAgICAyMzQsIDI0OSwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjM0LCAyNDQsIDE1LCA1LCAyMzQsIDI0NSwgMzAsIAotICAgIDI1MiwgMTg0LCAxNSwgNSwgMjM0LCAyNDUsIDI0OSwgMTMzLCAyMzQsIDI0NCwgMTUsIDUsIDIzNCwgMjQyLCAxNSwgNSwgCi0gICAgMjM0LCAyNDEsIDE1LCA1LCAyMzQsIDIxMywgMTUsIDUsIDIzNCwgMjE0LCAyMzMsIDEyNCwgMzAsIDEwNCwgMTE1LCAyMzMsIAotICAgIDEyNCwgMzAsIDY5LCAxNSwgNSwgMjM0LCAyMTQsIDExNSwgMjM0LCAyMTQsIDIzMywgMTI0LCAzMCwgMTA0LCAxMTUsIDIzMywgCi0gICAgMTI0LCAzMCwgNjksIDE1LCA1LCAyMzQsIDE2MywgMTUsIDUsIDIzNCwgOTgsIDE1LCA1LCAyMzQsIDk5LCAzMCwgMjUyLCAKLSAgICAxODQsIDE1LCA1LCAyMzQsIDk5LCAzMCwgNjksIDE1LCA1LCAyMzQsIDk5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzQsIAotICAgIDk1LCAxNSwgNSwgMjM0LCA4NywgMTUsIDUsIDIzNCwgNzQsIDE1LCA1LCAyMzQsIDczLCAxNSwgNSwgMjM0LCA3MSwgMTUsIAotICAgIDUsIDIzNCwgNzIsIDExNSwgMjM0LCA3MSwgMTUsIDUsIDIzMywgMjIzLCAxNSwgNSwgMjMzLCAyMjQsIDExNSwgMjQxLCAKLSAgICAxODgsIDMwLCAyNTMsIDIzOCwgMjMzLCAyMjQsIDExNSwgMjQxLCAxODgsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIzMywgCi0gICAgMjIxLCAxNSwgNSwgMjMzLCAyMTksIDE1LCA1LCAyMzMsIDIyMCwgMjE0LCAxMiwgMTcsIDE1LCA1LCAyMzMsIDIxOCwgMTUsIAotICAgIDUsIDIzMywgMjE1LCAxNSwgNSwgMjMzLCAyMTYsIDI0MiwgMTAxLCAxNSwgNSwgMjMzLCAyMTQsIDE1LCA1LCAyMzMsIDIwMiwgCi0gICAgMTUsIDUsIDIzMywgMjAzLCAyMjYsIDE2OCwgMjMzLCAyMDIsIDE1LCA1LCAyMzMsIDE5NywgMTUsIDUsIDIzMywgMTc4LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDE1LCA1LCAyMzMsIDEyMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgNjEsIDE1LCA1LCAyMzMsIAotICAgIDEyNCwgMzAsIDExNiwgOTYsIDI0OCwgMjMwLCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAxMTYsIDk2LCAyNDMsIAotICAgIDEwMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMTE2LCA5NiwgMjMzLCAxMTAsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI1NCwgCi0gICAgMTg3LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjUzLCAyNDAsIDIxMCwgCi0gICAgNDAsIDIxNiwgMjQwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNTIsIDE4NCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjUyLCAKLSAgICAxNCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQ4LCAxNzQsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0NSwgMTU4LCAxNSwgNSwgCi0gICAgMjMzLCAxMjQsIDMwLCAyNDMsIDE0MiwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDI0MiwgMTEwLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyNDIsIDExMSwgOTYsIDI0MiwgMTEwLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAxNjIsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MiwgMzcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDI0MSwgCi0gICAgMTg4LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzYsIDI0LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMjQsIAotICAgIDMwLCAyMzYsIDI0LCA5NiwgMjMyLCAxMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzNCwgOTgsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIzNCwgODcsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMywgMjIxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzMsIAotICAgIDIxNSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMzLCAyMTYsIDk2LCAyNDEsIDE4OCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAKLSAgICAxMjQsIDMwLCAyMzMsIDEyMywgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjMyLCAyMDMsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIAotICAgIDIzMiwgMTAzLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzIsIDkxLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMzEsIDk2LCAxNSwgCi0gICAgNSwgMjMzLCAxMjQsIDMwLCAyMzEsIDk3LCA5NiwgMjQ1LCAxNTgsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIzMCwgNjYsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMjAsIDY2LCA5NiwgMjE4LCA0NCwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMjIwLCAxMiwgOTYsIDI0MiwgMTk4LCA5NiwgMjQ1LCA5NSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgCi0gICAgMjIwLCAxMiwgOTYsIDI0MiwgMTk4LCAyMTYsIDI0MCwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAKLSAgICAyMzMsIDEyNCwgMzAsIDIxOSwgMjI2LCA5NiwgMjE5LCAyMjUsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxOCwgNDQsIDE1LCAKLSAgICA1LCAyMzMsIDEyNCwgMzAsIDIxNywgODUsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDIxNywgNzMsIDE1LCA1LCAyMzMsIDEyNCwgCi0gICAgMzAsIDIxNywgMjQsIDk2LCAxMTYsIDk2LCAyMTgsIDg1LCA5NiwgMTk4LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCA2OSwgMTUsIAotICAgIDUsIDIzMywgMTI0LCAzMCwgMTA0LCA5NiwgNjEsIDE1LCA1LCAyMzMsIDEyNCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDY5LCAKLSAgICAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjMzLCAxMjQsIDMwLCAyMTQsIAotICAgIDIxOSwgMTUsIDUsIDIzMywgMTI0LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMzMsIDEyNCwgMjE4LCAyMzUsIDE1LCA1LCAKLSAgICAyMzMsIDEyMSwgMTUsIDUsIDIzMywgMTIyLCAzMCwgMjIwLCA2NSwgMTUsIDUsIDIzMywgMTIyLCAzMCwgMjIwLCA2NiwgOTYsIAotICAgIDIxOCwgNDQsIDE1LCA1LCAyMzMsIDEyMiwgMjQyLCAxMDEsIDE1LCA1LCAyMzMsIDEyMiwgMjQyLCAxMDIsIDExNSwgMjMzLCAKLSAgICAxMjIsIDI0MiwgMTAyLCAyMjAsIDY1LCAxNSwgNSwgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExMCwgMTUsIDUsIDIzMywgCi0gICAgMTExLCAzMCwgMjMzLCAxMTAsIDE1LCA1LCAyMzMsIDEwOCwgMTUsIDUsIDIzMywgMTA5LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAKLSAgICAyMzMsIDEwOSwgMzAsIDIzMywgMjAzLCA5NiwgMjIyLCAxNDIsIDE1LCA1LCAyMzIsIDI0NywgMTUsIDUsIDIzMiwgMjMyLCAKLSAgICAxNSwgNSwgMjMyLCAyMjIsIDE1LCA1LCAyMzIsIDIwMywgMTUsIDUsIDIzMiwgMTAzLCAxNSwgNSwgMjMyLCAxMDQsIDMwLCAKLSAgICAyNTIsIDE4NCwgMTUsIDUsIDIzMiwgMTAxLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyNTQsIDE4NywgMTUsIDUsIDIzMiwgCi0gICAgMTAyLCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDI0NSwgODAsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIAotICAgIDI0NSwgODEsIDIxNiwgMjQwLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyNDMsIDExMiwgMjE2LCAyNDAsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMzAsIDI0MSwgMTg4LCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMzIsIDEwMiwgMzAsIDIzNiwgMjMsIDE1LCA1LCAKLSAgICAyMzIsIDEwMiwgMzAsIDIzNSwgNywgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM1LCA1LCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAKLSAgICAyMzUsIDYsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjM0LCA5OCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgCi0gICAgMjMzLCAxNDIsIDk2LCAyNTMsIDIzOSwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjMzLCAxMjMsIDE1LCA1LCAyMzIsIDEwMiwgCi0gICAgMzAsIDIzMSwgOTcsIDk2LCAyNDUsIDE1OCwgMTUsIDUsIDIzMiwgMTAyLCAzMCwgMjI5LCAxMTIsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMzAsIDIyNywgMjQyLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMTksIDE5NCwgOTYsIDI1MywgMjM5LCAxNSwgNSwgCi0gICAgMjMyLCAxMDIsIDMwLCAyMTksIDE3NiwgOTYsIDI1MSwgMTMzLCAxNSwgNSwgMjMyLCAxMDIsIDMwLCAyMTUsIDExNCwgMTUsIAotICAgIDUsIDIzMiwgMTAyLCAyMTYsIDI0MCwgMTUsIDUsIDIzMiwgMTAyLCAyNDksIDEzMywgMjMyLCAxMDEsIDE1LCA1LCAyMzIsIAotICAgIDEwMiwgMjI2LCAxNjgsIDIzMiwgMTAxLCAxNSwgNSwgMjMyLCAxMDIsIDIxOCwgMjM1LCAxNSwgNSwgMjMyLCAxMDIsIDIyMCwgCi0gICAgNDcsIDE1LCA1LCAyMzIsIDEwMCwgMTUsIDUsIDIzMiwgOTYsIDE1LCA1LCAyMzIsIDk3LCAxMTUsIDIzMiwgOTYsIDE1LCA1LCAKLSAgICAyMzIsIDk3LCAyMjYsIDE2OCwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIyMCwgNDcsIDE1LCA1LCAyMzIsIDk0LCAxNSwgCi0gICAgNSwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgODksIDE1LCA1LCAyMzIsIDkwLCAxMTUsIDIzMiwgODksIDE1LCA1LCAyMzIsIDkwLCAKLSAgICAxMTUsIDIzMiwgOTAsIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMTg2LCAxNSwgNSwgMjMxLCAyNDQsIDMwLCAKLSAgICAyMTcsIDczLCAxNSwgNSwgMjMxLCAyNDQsIDI0MiwgMTAxLCAxNSwgNSwgMjMxLCAyNDMsIDE1LCA1LCAyMzEsIDIxNSwgMTUsIAotICAgIDUsIDIzMSwgMTcxLCAxNSwgNSwgMjMxLCAxNTIsIDE1LCA1LCAyMzEsIDE1MSwgMTUsIDUsIDIzMSwgOTYsIDE1LCA1LCAKLSAgICAyMzEsIDUyLCAxNSwgNSwgMjMwLCAyMzUsIDE1LCA1LCAyMzAsIDE5MywgMTUsIDUsIDIzMCwgMTA3LCAxNSwgNSwgMjMwLCAKLSAgICAxMDgsIDExNSwgMjMwLCAxMDcsIDE1LCA1LCAyMzAsIDk4LCAxNSwgNSwgMjMwLCA5OSwgMjQyLCAxMDEsIDE1LCA1LCAyMzAsIAotICAgIDgzLCAxNSwgNSwgMjMwLCA2OSwgMTUsIDUsIDIzMCwgNjYsIDE1LCA1LCAyMzAsIDY3LCAzMCwgNjEsIDE1LCA1LCAyMzAsIAotICAgIDY3LCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMzAsIDY3LCAzMCwgMjEwLCAxMTYsIDE1LCA1LCAyMzAsIDY3LCAxMTUsIDIzMCwgCi0gICAgNjYsIDE1LCA1LCAyMzAsIDY3LCAxMTUsIDIzMCwgNjcsIDMwLCAxMTYsIDk2LCAxOTgsIDE1LCA1LCAyMzAsIDY3LCAyNDksIAotICAgIDEzMywgMjMwLCA2NiwgMTUsIDUsIDIzMCwgNjQsIDE1LCA1LCAyMzAsIDY1LCAzMCwgNjEsIDE1LCA1LCAyMzAsIDY1LCAzMCwgCi0gICAgMTE2LCA5NiwgMjQ4LCAxMSwgMTUsIDUsIDIzMCwgNjUsIDMwLCAyNDgsIDExLCAxNSwgNSwgMjMwLCA2NSwgMjQyLCAxMDEsIAotICAgIDE1LCA1LCAxOTgsIDE1LCA1LCAyMjksIDIzMiwgMTUsIDUsIDIyOSwgMjIxLCAxNSwgNSwgMjI5LCAyMjIsIDIzNSwgMTk5LCAKLSAgICAxNSwgNSwgMjI5LCAyMjIsIDMwLCAyMTksIDIyOCwgMjE2LCAyNDAsIDE1LCA1LCAyMjksIDIyMiwgMjI2LCAxNjgsIDIyOSwgCi0gICAgMjIxLCAxNSwgNSwgMjI5LCAyMjAsIDE1LCA1LCAyMjksIDIxMywgMjI3LCAxODQsIDE1LCA1LCAyMjksIDIxMiwgMTUsIDUsIAotICAgIDIyOSwgMjExLCAxNSwgNSwgMjI5LCAxMTIsIDE1LCA1LCAyMjksIDExMywgMzAsIDYxLCAxNSwgNSwgMjI5LCAxMTMsIDMwLCAKLSAgICAyMTQsIDIxOSwgMTUsIDUsIDIyOSwgMTEzLCAyMjAsIDQ3LCAxNSwgNSwgMjI4LCAyMzgsIDE1LCA1LCAyMjgsIDIzOSwgMzAsIAotICAgIDc2LCAxNSwgNSwgMjI4LCAyMzcsIDE1LCA1LCAyMjgsIDIwOCwgMTUsIDUsIDIyOCwgMjA5LCAzMCwgMjQzLCAxMTIsIDIxNiwgCi0gICAgMjQwLCAxNSwgNSwgMjI4LCAyMDksIDMwLCAyNDMsIDEwNCwgOTYsIDI0MywgMTEyLCAyMTYsIDI0MCwgMTUsIDUsIDIyOCwgCi0gICAgMjA2LCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyNTQsIDEzMSwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjUzLCAyMzksIDE1LCA1LCAKLSAgICAyMjgsIDIwNywgMzAsIDI1MywgMjQwLCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDI0MiwgMTEwLCAxNSwgCi0gICAgNSwgMjI4LCAyMDcsIDMwLCAyMzEsIDk3LCA5NiwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAKLSAgICAyMjksIDExMiwgMTUsIDUsIDIyOCwgMjA3LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjUsIAotICAgIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjYsIDk2LCAxMTYsIDI1NCwgMTMxLCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAKLSAgICAyMjAsIDY2LCA5NiwgMjUzLCAyMzksIDE1LCA1LCAyMjgsIDIwNywgMzAsIDIyMCwgNjYsIDk2LCAyNTMsIDI0MCwgOTYsIAotICAgIDI1MywgMjM5LCAxNSwgNSwgMjI4LCAyMDcsIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgMjI4LCAyMDcsIAotICAgIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyOCwgMTk1LCAxNSwgNSwgMjI3LCAyNDIsIDE1LCA1LCAyMjcsIDIxNCwgMTUsIDUsIAotICAgIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIDIzMywgMTIyLCAzMCwgMjQzLCAxMDMsIDE1LCA1LCAyMjcsIDE5OSwgMjMzLCAKLSAgICAxMjIsIDMwLCAyMzEsIDE1MiwgMTUsIDUsIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyMjcsIAotICAgIDE5OSwgMjMzLCAxMjIsIDMwLCAyMjIsIDExLCAxMTUsIDIyNywgMTk5LCAyMzMsIDEyMiwgMzAsIDIyMiwgMTAsIDE1LCA1LCAKLSAgICAyMjcsIDE5OSwgMjMzLCAxMjIsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk5LCAyMTYsIDI0MCwgMTUsIDUsIDIyNywgCi0gICAgMTk5LCAxMTUsIDIyNywgMTk4LCAxNSwgNSwgMjI3LCAxOTksIDI0OSwgMTMzLCAyMjcsIDE5OCwgMTUsIDUsIDIyNywgMTk5LCAKLSAgICAyNDksIDEzMywgMjI3LCAxOTksIDIzMywgMTIyLCAxMTUsIDIzMywgMTIxLCAxNSwgNSwgMjI3LCAxOTMsIDE1LCA1LCAyMjcsIAotICAgIDE5NCwgMjU1LCAzMywgMzAsIDI1MywgMjM0LCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNTIsIDE0LCAxNSwgNSwgCi0gICAgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNDYsIDgyLCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyNDIsIDExMCwgCi0gICAgMTUsIDUsIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjM2LCA0MywgMjQyLCAxMDEsIDE1LCA1LCAyMjcsIDE5NCwgMjU1LCAKLSAgICAzMywgMzAsIDIzNSwgNSwgMTUsIDUsIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjMzLCAxNDEsIDE1LCA1LCAyMjcsIDE5NCwgCi0gICAgMjU1LCAzMywgMzAsIDIyOSwgMTEyLCAxNSwgNSwgMjI3LCAxOTQsIDI1NSwgMzMsIDMwLCAyMTksIDE3MywgMTUsIDUsIAotICAgIDIyNywgMTk0LCAyNTUsIDMzLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjcsIDE5NCwgMjM0LCA3MiwgMzAsIDI1MiwgMTQsIAotICAgIDE1LCA1LCAyMjcsIDE5NCwgMjM0LCA3MiwgMzAsIDI1MiwgMTUsIDY5LCAxNSwgNSwgMTkxLCAxNSwgNSwgMjI2LCA4NCwgCi0gICAgMTUsIDUsIDIyNiwgNTEsIDE1LCA1LCAyMjYsIDI1LCAxNSwgNSwgMjI1LCAxNjQsIDE1LCA1LCAyMjUsIDExMSwgMTUsIDUsIAotICAgIDIyNSwgMTEyLCAzMCwgNjEsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1NSwgMzQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1MiwgCi0gICAgMTQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI1MSwgMTMzLCAxNSwgNSwgMjI1LCAxMTIsIDMwLCA3NiwgMTUsIDUsIDIyNSwgCi0gICAgMTEyLCAzMCwgNzQsIDE1LCA1LCAyMjUsIDExMiwgMzAsIDI0MCwgMTIyLCAxNSwgNSwgMjI1LCAxMTIsIDMwLCA2OSwgMTUsIAotICAgIDUsIDIyNSwgMTEyLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjUsIDExMiwgMjQ5LCAxMzMsIDIyNSwgMTExLCAxNSwgNSwgCi0gICAgMjI1LCA1NiwgMTUsIDUsIDIyNSwgNTcsIDMwLCAyMzQsIDI0NCwgMTUsIDUsIDIyNSwgNTcsIDMwLCAyMTQsIDIxOSwgMTUsIAotICAgIDUsIDIyNSwgNTcsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIyNSwgNTcsIDIyNiwgMTY4LCAyMjUsIDU2LCAxNSwgNSwgMjA1LCAKLSAgICAxNSwgNSwgMjIzLCAxODUsIDE1LCA1LCAyMjMsIDM4LCAxNSwgNSwgMjIyLCAxNDIsIDE1LCA1LCAyMDYsIDE1LCA1LCAyMjIsIAotICAgIDI0LCAyMjcsIDE4NCwgMTUsIDUsIDIyMiwgMjMsIDE1LCA1LCAyMjIsIDI0LCAzMCwgNjEsIDE1LCA1LCAyMjIsIDI0LCAzMCwgCi0gICAgMjQ2LCA4NiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyNDYsIDg0LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDE2MiwgMTUsIDUsIAotICAgIDIyMiwgMjQsIDMwLCAyMzQsIDI0OCwgMTUsIDUsIDIyMiwgMjQsIDMwLCAyMzMsIDIwMiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyMzIsIDg5LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIzMCwgMjM1LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIyNywgMTk4LCAxNSwgCi0gICAgNSwgMjIyLCAyNCwgMzAsIDIyMiwgMTAsIDE1LCA1LCAyMjIsIDI0LCAzMCwgMjIwLCAzMiwgMTUsIDUsIDIyMiwgMjQsIDMwLCAKLSAgICAyMTcsIDk0LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMjI1LCAxNSwgCi0gICAgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMTk3LCAxNSwgNSwgMjIyLCAyNCwgMzAsIDIxNCwgMTUwLCAxNSwgNSwgMjIyLCAyNCwgCi0gICAgMzAsIDIxNCwgMTI2LCAxNSwgNSwgMjIyLCAyNCwgMTE1LCAyMjIsIDIzLCAxNSwgNSwgMjIyLCAyNCwgMjQyLCAxMDEsIDE1LCAKLSAgICA1LCAyMjIsIDEwLCAxNSwgNSwgMjIyLCAxMSwgMjMzLCAxMjQsIDMwLCAyNTMsIDIzNywgMTUsIDUsIDIyMSwgMjQxLCAxNSwgCi0gICAgNSwgMjIxLCAyMzMsIDE1LCA1LCAyMjAsIDEwNCwgMTUsIDUsIDIyMCwgMTAyLCAxNSwgNSwgMjIwLCAxMDMsIDMwLCA2MSwgCi0gICAgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjUyLCAxODQsIDE1LCA1LCAyMjAsIDEwMywgMzAsIDI0MiwgMTk3LCAxNSwgNSwgMjIwLCAKLSAgICAxMDMsIDMwLCAyMjksIDExMiwgMTUsIDUsIDIyMCwgMTAzLCAzMCwgMjE5LCAyMjUsIDE1LCA1LCAyMjAsIDEwMywgMzAsIAotICAgIDIxNSwgOTksIDE1LCA1LCAyMjAsIDEwMywgMzAsIDY5LCAxNSwgNSwgMjIwLCAxMDMsIDMwLCAxMDQsIDk2LCA2MSwgMTUsIAotICAgIDUsIDIyMCwgMTAxLCAxNSwgNSwgMjIwLCA5OSwgMTUsIDUsIDIyMCwgODAsIDE1LCA1LCAyMjAsIDY1LCAxNSwgNSwgMjIwLCAKLSAgICA2NiwgMjQwLCAyMjksIDE1LCA1LCAyMjAsIDY2LCAxMTUsIDIyMCwgNjYsIDI0MywgMTM0LCAxMTUsIDI0MywgMTM0LCAyNDMsIAotICAgIDEwNCwgMTE1LCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgNjYsIDExNSwgMjIwLCA2NiwgMjE3LCA5NSwgMTE1LCAyMTcsIDk1LCAKLSAgICAyNDMsIDEwNCwgMTE1LCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgNTgsIDE1LCA1LCAyMjAsIDUzLCAxNSwgNSwgMjIwLCA1MCwgCi0gICAgMTUsIDUsIDIyMCwgNDksIDE1LCA1LCAyMjAsIDQ2LCAxNSwgNSwgMjIwLCAzMiwgMTUsIDUsIDIyMCwgMzMsIDMwLCA2MSwgCi0gICAgMTUsIDUsIDIyMCwgMzMsIDMwLCAyMzYsIDIzLCAxNSwgNSwgMjIwLCAyNiwgMTUsIDUsIDIyMCwgMjcsIDMwLCA2MSwgMTUsIAotICAgIDUsIDIyMCwgMjcsIDMwLCAyNTIsIDE2OSwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyNTEsIDExNywgMTUsIDUsIDIyMCwgMjcsIAotICAgIDMwLCAyNDcsIDIxNCwgMTUsIDUsIDIyMCwgMjcsIDMwLCAyNDMsIDEwMywgMTUsIDUsIDIyMCwgMjcsIDMwLCAyMzYsIDQyLCAKLSAgICAxNSwgNSwgMjIwLCAyNywgMzAsIDIzNiwgNDMsIDI0MiwgMTAxLCAxNSwgNSwgMjIwLCAyNywgMzAsIDIzMywgMTk3LCAxNSwgCi0gICAgNSwgMjIwLCAyNywgMzAsIDIzMiwgOTEsIDE1LCA1LCAyMjAsIDI3LCAzMCwgMjMwLCA5OCwgMTUsIDUsIDIyMCwgMjcsIDMwLCAKLSAgICAyMjIsIDEwLCAxNSwgNSwgMjIwLCAyMCwgMTUsIDUsIDIyMCwgMTUsIDE1LCA1LCAyMjAsIDE2LCAyMTYsIDI0MCwgMTUsIDUsIAotICAgIDIyMCwgMTYsIDExNSwgMjIwLCAxNiwgMjUxLCAxMDcsIDExNSwgMjUxLCAxMDYsIDE1LCA1LCAyMjAsIDExLCAxNSwgNSwgCi0gICAgMjE5LCAyMjcsIDE1LCA1LCAyMTksIDIyOCwgMTE1LCAyMzUsIDIwMCwgMjE5LCAyMjcsIDE1LCA1LCAyMTksIDIyNSwgMTUsIAotICAgIDUsIDIxOSwgMjI0LCAxNSwgNSwgMjE5LCAxOTMsIDE1LCA1LCAyMTksIDE5NCwgMjQyLCAxMDEsIDE1LCA1LCAyMTksIDE4NCwgCi0gICAgMTUsIDUsIDIxOSwgMTgyLCAxNSwgNSwgMjE5LCAxODMsIDExNSwgMjE5LCAxODMsIDIxOSwgMjI1LCAxNSwgNSwgMjE5LCAKLSAgICAxNzUsIDE1LCA1LCAyMTksIDE3MywgMTUsIDUsIDIxOCwgODQsIDE1LCA1LCAyMTgsIDg1LCAxMTUsIDIxOCwgODQsIDE1LCAKLSAgICA1LCAyMTgsIDU1LCAxNSwgNSwgMjE4LCA1NCwgMTUsIDUsIDIxOCwgNTIsIDE1LCA1LCAyMTgsIDQ0LCAxNSwgNSwgMjE4LCAKLSAgICA0MywgMTUsIDUsIDIxOCwgMTgsIDE1LCA1LCAyMTgsIDE3LCAxNSwgNSwgMjE3LCAxMDYsIDE1LCA1LCAyMTcsIDEwNywgCi0gICAgMjUzLCAyMjQsIDE1LCA1LCAyMTcsIDEwNywgMzAsIDI0MSwgMTg3LCAxNSwgNSwgMjE3LCAxMDcsIDMwLCAyMzAsIDIzNSwgCi0gICAgMTUsIDUsIDIxNywgMTA3LCAyNDIsIDEwMSwgMTUsIDUsIDIxNywgOTQsIDE1LCA1LCAyMTcsIDk1LCAxMTUsIDIxNywgOTUsIAotICAgIDIyOCwgMjM5LCAxMTUsIDIyOCwgMjM5LCAyNDcsIDE5NiwgMTE1LCAyNDcsIDE5NSwgMTUsIDUsIDIxNywgOTUsIDIxOCwgCi0gICAgMjM1LCAxNSwgNSwgMjE3LCA4NSwgMTUsIDUsIDEyOSwgMzAsIDI1MiwgMTQsIDE1LCA1LCAxMjksIDMwLCAyNDIsIDExMCwgCi0gICAgMTUsIDUsIDEyOSwgMzAsIDIyMCwgNjUsIDE1LCA1LCAxMjksIDMwLCAyMTksIDIyNywgMTUsIDUsIDEyOSwgMzAsIDIxNSwgCi0gICAgMTE0LCAxNSwgNSwgMTI5LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMTcsIDczLCAxNSwgNSwgMjE3LCA1MSwgMTUsIDUsIAotICAgIDIxNywgMjMsIDE1LCA1LCAyMTcsIDI0LCAyNDIsIDEwMSwgMTUsIDUsIDIxNiwgMTE4LCAxNSwgNSwgMjE2LCAxMTksIDIxNiwgCi0gICAgMjQwLCAxNSwgNSwgMjE2LCA5MSwgMTUsIDUsIDIxNiwgNzMsIDE1LCA1LCAyMTYsIDc0LCAzMCwgMjE3LCA3MywgMTUsIDUsIAotICAgIDIxNiwgNzQsIDExNSwgMjE2LCA3MywgMTUsIDUsIDIxNiwgNzQsIDExNSwgMjE2LCA3NCwgMjQzLCAxMzQsIDExNSwgMjQzLCAKLSAgICAxMzQsIDI0MywgMTA0LCAxMTUsIDI0MywgMTAzLCAxNSwgNSwgMjE1LCAxMTksIDE1LCA1LCAyMTUsIDExNCwgMTUsIDUsIAotICAgIDIxNSwgMTEyLCAxNSwgNSwgMjE1LCAxMDksIDE1LCA1LCAyMTUsIDk5LCAxNSwgNSwgMjE1LCAxMDAsIDExNSwgMjE1LCAKLSAgICAxMDAsIDIxMCwgMTE3LCAxMTUsIDIxMCwgMTE2LCAxNSwgNSwgNjksIDE1LCA1LCAxMDQsIDI0MiwgMTEwLCAxNSwgNSwgCi0gICAgMTA0LCAxMDQsIDY5LCAxNSwgNSwgMTA0LCAxMTUsIDEwNCwgMjI2LCA5NCwgMTE1LCAyMjYsIDk0LCAyNDMsIDEwNCwgMTE1LCAKLSAgICAyNDMsIDEwMywgMTUsIDUsIDEwNCwgMTE1LCAxMDQsIDIxOCwgMTksIDExNSwgMjE4LCAxOCwgMTUsIDUsIDEwNCwgMTE1LCAKLSAgICAxMDQsIDEwNCwgMjIzLCA1MiwgMTE1LCAxMDQsIDIyMywgNTEsIDE1LCA1LCAyMTQsIDIzMCwgMTUsIDUsIDIxNCwgMjI1LCAKLSAgICAxNSwgNSwgMjE0LCAyMTksIDE1LCA1LCAyMTQsIDIyMCwgMjMzLCAxOTcsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDI1MiwgCi0gICAgMTg0LCAxNSwgNSwgMjE0LCAyMjAsIDMwLCAyMzAsIDIzNSwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCAKLSAgICA5NiwgNjksIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDEwNCwgOTYsIDEwNCwgOTYsIDEwNCwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIAotICAgIDIyMCwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIDIyMCwgMjIwLCA0NywgMTUsIDUsIDIxNCwgMjIwLCAyMjAsIDQ4LCAzMCwgCi0gICAgMjUyLCAxODQsIDE1LCA1LCAyMTQsIDIxNSwgMTUsIDUsIDIxNCwgMTk3LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAyMzMsIAotICAgIDEyMywgMTUsIDUsIDIxNCwgMTk4LCAzMCwgMjMxLCA5NywgOTYsIDI0OCwgMjI5LCAxNSwgNSwgMjE0LCAxOTgsIDMwLCAKLSAgICAyMjAsIDEwMiwgMTUsIDUsIDIxNCwgMTk4LCAzMCwgNjksIDE1LCA1LCAyMTQsIDE5NiwgMTUsIDUsIDIxNCwgMTkyLCAxNSwgCi0gICAgNSwgMjE0LCAxOTMsIDMwLCAyMzQsIDIxMywgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMTkxLCAxNSwgNSwgMjE0LCAxOTAsIDE1LCAKLSAgICA1LCAyMTQsIDE5MSwgMjQyLCAxMDEsIDE1LCA1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyNDksIDEzMywgMjE0LCAKLSAgICAxNTAsIDE1LCA1LCAyMTQsIDE1MSwgMjIwLCA0NywgMTUsIDUsIDIxNCwgMTQ4LCAxNSwgNSwgMjE0LCAxNDksIDMwLCAxMTYsIAotICAgIDk2LCAxNjIsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDExNiwgOTYsIDE5OCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjU0LCAKLSAgICAxODcsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjI3LCAxOTgsIDE1LCA1LCAyMTQsIAotICAgIDE0OSwgMzAsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MywgMjM5LCAxNSwgNSwgCi0gICAgMjE0LCAxNDksIDMwLCAyMTQsIDIzMSwgOTYsIDI1MiwgMTQsIDE1LCA1LCAyMTQsIDE0NywgMTUsIDUsIDIxNCwgMTQ0LCAKLSAgICAxNSwgNSwgMjE0LCAxNDMsIDE1LCA1LCAyMTQsIDEzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgNjEsIDE1LCA1LCAyMTQsIAotICAgIDE0MCwgMzAsIDI1MywgMjM0LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxMzAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0NiwgCi0gICAgNzYsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTQyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEyNSwgMTUsIDUsIAotICAgIDIxNCwgMTQwLCAzMCwgMjQzLCAxMTIsIDIxNiwgMjQwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEwMywgMTUsIDUsIAotICAgIDIxNCwgMTQwLCAzMCwgMjQyLCAxMjAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE2MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCi0gICAgMjM2LCA0MiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM2LCAyMywgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM1LCAxNzIsIDE1LCAKLSAgICA1LCAyMTQsIDE0MCwgMzAsIDIzNCwgOTgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzMiwgODksIDE1LCA1LCAyMTQsIDE0MCwgCi0gICAgMzAsIDIzMCwgMTkzLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxOTEsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIyMCwgNjUsIDE1LCAKLSAgICA1LCAyMTQsIDE0MCwgMzAsIDIxOSwgMTgyLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTUsIDExOSwgMTUsIDUsIDIxNCwgCi0gICAgMTQwLCAzMCwgMTA0LCA5NiwgMjQyLCAxMTAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjE0LCAKLSAgICAxNDAsIDMwLCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzgsIDMwLCA2OSwgMTUsIDUsIDIxNCwgCi0gICAgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMjMsIDE1LCA1LCAyMTQsIAotICAgIDEyNywgMzAsIDIzMywgMjAyLCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDczLCAxNSwgNSwgMjE0LCAxMjIsIDE1LCA1LCAKLSAgICAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgMTUsIDUsIDIxNCwgCi0gICAgMTA5LCAzMCwgMjM0LCAyMTMsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgMjEwLCAxMTcsIAotICAgIDIxNiwgMjQwLCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAyMDIsIDE1LCA1LCAyMTAsIDExMywgMTUsIDUsIDIxMCwgCi0gICAgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTUsIDIxMCwgNDQsIDE1LCA1LCAKLSAgICAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgOSwgMjE2LCAyNDAsIDE1LCA1LCAyMTAsIAotICAgIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgNSwgMjEwLCAxMiwgMzAsIAotICAgIDYxLCAxNSwgNSwgMjEwLCAxMCwgMTUsIDUsIDIxMCwgOSwgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyNTMsIDIzOSwgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MywgCi0gICAgMjM5LCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjUzLCAyMzksIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNTMsIDIzOSwgMTUsIAotICAgIDEzMiwgNSwgMjQ1LCAyMDEsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjUzLCAyMzksIDE1LCAxMzIsIDUsIAotICAgIDEzNCwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNDcsIAotICAgIDE5NSwgMTUsIDEzMiwgNSwgMjE5LCAxMjcsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjQ3LCAxOTUsIDE1LCAKLSAgICAxMzIsIDUsIDI0NSwgMjAxLCAyNDcsIDE5NSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAKLSAgICAyNDQsIDE5LCA2OSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgNjksIDE1LCAxMzIsIDUsIDIxOSwgMTI3LCA2OSwgMTUsIDEzMiwgCi0gICAgNSwgMjIwLCAxMjQsIDY5LCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgNjksIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCA2OSwgMTUsIAotICAgIDEzMiwgNSwgMTIzLCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDEzNCwgMjQzLCA0NSwgCi0gICAgMTUsIDEzMiwgNSwgMjQ0LCAxOSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjQzLCA0NSwgMTUsIDEzMiwgNSwgCi0gICAgMjE5LCAxMjcsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDIyMCwgMTI0LCAyNDMsIDQ1LCAxNSwgMTMyLCA1LCAyNDUsIDIwMSwgCi0gICAgMjQzLCA0NSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIDI0MywgNDUsIDE1LCAxMzIsIDUsIDEyMywgMjQzLCA0MiwgMTUsIAotICAgIDEzMiwgNSwgMTEzLCAyNDMsIDQyLCAxNSwgMTMyLCA1LCAxMzQsIDI0MywgNDIsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI0MywgCi0gICAgNDIsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI0MywgNDIsIDE1LCAxMzIsIDUsIDExMywgMjIwLCA4MCwgMTUsIDEzMiwgNSwgCi0gICAgMTM0LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgODEsIDIxNCwgMTIsIDE3LCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAKLSAgICAyMjAsIDgwLCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAyMTksIDEyNywgMjIwLCA4MCwgMTUsIAotICAgIDEzMiwgNSwgMjIwLCAxMjQsIDIyMCwgODAsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAyMjAsIDgwLCAxNSwgMTMyLCA1LCAKLSAgICAyMjgsIDIwNSwgMjIwLCA4MCwgMTUsIDEzMiwgNSwgMTIzLCAyMjAsIDc1LCAxNSwgMTMyLCA1LCAxMTMsIDIyMCwgNzUsIAotICAgIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc2LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgCi0gICAgNSwgMjQ0LCAxOSwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjIwLCA3NSwgMTUsIDEzMiwgNSwgMjIwLCA4MSwgCi0gICAgMzAsIDI0MywgMTI2LCA5NiwgMjQ3LCAxOTUsIDE1LCAxMzIsIDUsIDIyMCwgODEsIDMwLCAyNDMsIDEyNiwgOTYsIDIzMCwgCi0gICAgMTkzLCAxNSwgMTMyLCA1LCAxMjMsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMTMsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAKLSAgICAxMzQsIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgMTA0LCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCAKLSAgICAxOSwgMjUxLCAxMDMsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MSwgMTAzLCAxNSwgMTMyLCA1LCAxMzQsIDIxNCwgMTIsIAotICAgIDI0NCwgMjgsIDI0NSwgODIsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjQ1LCA3OSwgMTUsIDEzMiwgNSwgCi0gICAgMjQ0LCAxOSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjMyLCAyMjMsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgCi0gICAgMjgsIDIzMiwgMjIxLCAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzIsIDIyNCwgNjEsIDE1LCAKLSAgICAxMzIsIDUsIDI0NCwgMTksIDIxNCwgMTIsIDI0NCwgMjgsIDIzMiwgMjI0LCAyNTMsIDE2NiwgMTUsIDEzMiwgNSwgMjE5LCAKLSAgICAxMjcsIDIxNCwgMTIsIDI0NCwgMjgsIDI1MywgMjM2LCAxNSwgMTMyLCA1LCAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgCi0gICAgMjM2LCAxNSwgMTUsIDEzMiwgNSwgMjIwLCAxMjQsIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgMTcsIDYxLCAxNSwgMTMyLCA1LCAKLSAgICAyMjAsIDEyNCwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAxNywgMjUzLCAxNjYsIDE1LCAxMzIsIDUsIDI0NSwgMjAxLCAyMTQsIAotICAgIDEyLCAyNDQsIDI4LCAyMTQsIDEyMSwgMTUsIDEzMiwgNSwgMjQ1LCAyMDEsIDIxNCwgMTIsIDI0NCwgMjgsIDIxNCwgMTIwLCAKLSAgICAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMSwgMTUsIDEzMiwgNSwgMjI4LCAyMDUsIAotICAgIDIxNCwgMTIsIDI0NCwgMjgsIDIzNiwgMzAsIDE1LCAxMzIsIDUsIDIyOCwgMjA1LCAyMTQsIDEyLCAyNDQsIDI4LCAyMzYsIAotICAgIDI5LCAxNSwgMTMyLCA1LCAyMjgsIDIwNSwgMjE0LCAxMiwgMjQ0LCAyOCwgMjM2LCAzMiwgNjEsIDE1LCAxMzIsIDUsIDExMywgCi0gICAgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAxMzQsIDI1MywgMjQwLCAyMTYsIDI0MCwgMTUsIDEzMiwgNSwgMjQ0LCAKLSAgICAxOSwgMjUzLCAyNDAsIDIxNiwgMjQwLCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIAotICAgIDUsIDIxOSwgMTI3LCAyNTMsIDI0MCwgMjE2LCAyNDAsIDE1LCAxMzIsIDUsIDEyMywgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIAotICAgIDExMywgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIDEzNCwgMjUyLCAxNTgsIDE1LCAxMzIsIDUsIDI0NCwgMTksIDI1MiwgMTU4LCAKLSAgICAxNSwgMTMyLCA1LCAyNDQsIDE5LCAyNTIsIDE1OSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDI0NCwgODksIDI1MiwgCi0gICAgMTU4LCAxNSwgMTMyLCA1LCAyNDQsIDg5LCAyNTIsIDE1OSwgMjE0LCAxMiwgMTcsIDE1LCAxMzIsIDUsIDIyOCwgMjE1LCAKLSAgICAxNSwgMTMyLCA1LCAyMjgsIDIxNiwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDc4LCAxNSwgMTMyLCA1LCAxMTMsIDI0NSwgNzgsIAotICAgIDE1LCAxMzIsIDUsIDEyMywgMjE2LCAxNzAsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY4LCAyNDcsIDE5NSwgCi0gICAgMTUsIDEzMiwgNSwgMjQ0LCA4OSwgMjE5LCAxMTYsIDI0NywgMTk1LCAxNSwgMTMyLCA1LCAxMjMsIDIxNiwgMTcwLCAyMTQsIAotICAgIDEyLCAyNDQsIDI4LCA2MSwgMTUsIDEzMiwgNSwgMTEzLCAyMTYsIDE2OCwgMjE0LCAxMiwgMjQ0LCAyOCwgNjEsIDE1LCAKLSAgICAxMzIsIDUsIDEyMywgMjQ1LCAxOTcsIDI1MywgMjM5LCAxNSwgMTMyLCA1LCAxMjMsIDIyNCwgMjUsIDI1MywgMjM5LCAxNSwgCi0gICAgMTMyLCA1LCA1NSwgMjUzLCAyMjcsIDEyMywgMjE5LCAxMTcsIDE1LCAxMzIsIDUsIDU1LCAyNTMsIDIyNywgMTIzLCAyMjQsIAotICAgIDI0LCAxNSwgMjI0LCAxNDQsIDUsIDU1LCAyNTMsIDIyNywgMjExLCAyMDksIDI0NywgMTgwLCAxNSwgMjI0LCAxNDQsIDUsIAotICAgIDY3LCAyNDksIDIzNCwgMTUsIDIyNCwgMTQ0LCA1LCAyNDgsIDcsIDI0OSwgMjM0LCAxNSwgMjI0LCAxNDQsIDUsIDI0OCwgNywgCi0gICAgMjE1LCAyMjIsIDEyLCAxMywgMjU1LCAxNjQsIDEyLCAxMywgMjU1LCAxNjMsIDEyLCAxMywgMjU1LCAxNjIsIDEyLCAxMywgCi0gICAgMjU1LCAxNjEsIDEyLCAxMywgMjU1LCAxNjAsIDEyLCAxMywgMjU1LCAxNTksIDEyLCAxMywgMjU1LCAxNTgsIDEyLCAxMywgCi0gICAgMjU1LCAxNTcsIDEyLCAxMywgMjU1LCAxNTYsIDEyLCAxMywgMjU1LCAxNTUsIDEyLCAxMywgMjU1LCAxNTQsIDEyLCAxMywgCi0gICAgMjU1LCAxNTMsIDEyLCAxMywgMjU1LCAxNTIsIDEyLCAxMywgMjU1LCAxNTEsIDEyLCAxMywgMjU1LCAxNTAsIDEyLCAxMywgCi0gICAgMjU1LCAxNDksIDEyLCAxMywgMjU1LCAxNDgsIDEyLCAxMywgMjU1LCAxNDcsIDEyLCAxMywgMjU1LCAxNDYsIDEyLCAxMywgCi0gICAgMjU1LCAxNDUsIDEyLCAxMywgMjU1LCAxNDQsIDEyLCAxMywgMjU1LCAxNDMsIDEyLCAxMywgMjU1LCAxNDIsIDEyLCAxMywgCi0gICAgMjU1LCAxNDEsIDEyLCAxMywgMjU1LCAxNDAsIDEyLCAxMywgMjU1LCAxMzksIDEyLCAxMywgMjU1LCAxMzgsIDEyLCAxMywgCi0gICAgMjU1LCAxMzcsIDEyLCAxMywgMjU1LCAxMzYsIDEyLCAxMywgMjU1LCAxMzUsIDEyLCAxMywgMjU1LCAxMzQsIDEyLCAxMywgCi0gICAgMjU1LCAxMzMsIDEyLCAxMywgMjU1LCAxMzIsIDEyLCAxMywgMjU1LCAxMzEsIDEyLCAxMywgMjU1LCAxMzAsIDEyLCAxMywgCi0gICAgMjU1LCAxMjksIDEyLCAxMywgMjU1LCAxMjgsIDEyLCAxMywgMjU1LCAxMjcsIDEyLCAxMywgMjU1LCAxMjYsIDEyLCAxMywgCi0gICAgMjU1LCAxMjUsIDEyLCAxMywgMjU1LCAxMjQsIDEyLCAxMywgMjU1LCAxMjMsIDEyLCAxMywgMjU1LCAxMjIsIDEyLCAxMywgCi0gICAgMjU1LCAxMjEsIDEyLCAxMywgMjU1LCAxMjAsIDEyLCAxMywgMjU1LCAxMTksIDEyLCAxMywgMjU1LCAxMTgsIDEyLCAxMywgCi0gICAgMjU1LCAxMTcsIDEyLCAxMywgMjU1LCAxMTYsIDEyLCAxMywgMjU1LCAxMTUsIDEyLCAxMywgMjU1LCAxMTQsIDEyLCAxMywgCi0gICAgMjU1LCAxMTMsIDEyLCAxMywgMjU1LCAxMTIsIDEyLCAxMywgMjU1LCAxMTEsIDEyLCAxMywgMjU1LCAxMTAsIDEyLCAxMywgCi0gICAgMjU1LCAxMDksIDEyLCAxMywgMjU1LCAxMDgsIDEyLCAxMywgMjU1LCAxMDcsIDEyLCAxMywgMjU1LCAxMDYsIDEyLCAxMywgCi0gICAgMjU1LCAxMDUsIDEyLCAxMywgMjU1LCAxMDQsIDEyLCAxMywgMjU1LCAxMDMsIDEyLCAxMywgMjU1LCAxMDIsIDEyLCAxMywgCi0gICAgMjU1LCAxMDEsIDEyLCAxMywgMjU1LCAxMDAsIDEyLCAxMywgMjU1LCA5OSwgMTIsIDEzLCAyNTUsIDk4LCAxMiwgMTMsIAotICAgIDI1NSwgOTcsIDEyLCAxMywgMjU1LCA5NiwgMTIsIDEzLCAyNTUsIDk1LCAxMiwgMTMsIDI1NSwgOTQsIDEyLCAxMywgMjU1LCAKLSAgICA5MywgMTIsIDEzLCAyNTUsIDkyLCAxMiwgMTMsIDI1NSwgOTEsIDEyLCAxMywgMjU1LCA5MCwgMTIsIDEzLCAyNTUsIDg5LCAKLSAgICAxMiwgMTMsIDI1NSwgODgsIDEyLCAxMywgMjU1LCA4NywgMTIsIDEzLCAyNTUsIDg2LCAxMiwgMTMsIDI1NSwgODUsIDEyLCAKLSAgICAxMywgMjUzLCAxNjQsIDEyLCAxMywgMjUzLCAxNjIsIDEyLCAxMywgMjUzLCAxNjAsIDEyLCAxMywgMjUzLCAxNTgsIDEyLCAKLSAgICAxMywgMjUzLCAxNTYsIDEyLCAxMywgMjUzLCAxNTUsIDEyLCAxMywgMjUzLCAxNTMsIDEyLCAxMywgMjUzLCAxNTEsIDEyLCAKLSAgICAxMywgMjUzLCAxNDksIDEyLCAxMywgMjUzLCAxNDcsIDEyLCAxMywgMjUxLCA3MCwgMTIsIDEzLCAyNTEsIDY5LCAxMiwgMTMsIAotICAgIDI1MSwgNjgsIDEyLCAxMywgMjUxLCA2NywgMTIsIDEzLCAyNTEsIDY2LCAxMiwgMTMsIDI1MSwgNjUsIDEyLCAxMywgMjUxLCAKLSAgICA2NCwgMTIsIDEzLCAyNTEsIDYzLCAxMiwgMTMsIDI1MSwgNjIsIDEyLCAxMywgMjUxLCA2MSwgMTIsIDEzLCAyNTEsIDYwLCAKLSAgICAxMiwgMTMsIDI1MSwgNTksIDEyLCAxMywgMjUxLCA1OCwgMTIsIDEzLCAyNTEsIDU3LCAxMiwgMTMsIDI1MSwgNTYsIDEyLCAKLSAgICAxMywgMjUxLCA1NSwgMTIsIDEzLCAyNTEsIDU0LCAxMiwgMTMsIDI1MSwgNTMsIDEyLCAxMywgMjUxLCA1MiwgMTIsIDEzLCAKLSAgICAyNTEsIDUxLCAxMiwgMTMsIDI1MSwgNTAsIDEyLCAxMywgMjUxLCA0OSwgMTIsIDEzLCAyNTEsIDQ4LCAxMiwgMTMsIDI1MSwgCi0gICAgNDcsIDEyLCAxMywgMjUxLCA0NiwgMTIsIDEzLCAyNTEsIDQ1LCAxMiwgMTMsIDI1MSwgNDQsIDEyLCAxMywgMjUxLCA0MywgCi0gICAgMTIsIDEzLCAyNDksIDY3LCAxMiwgMTMsIDI0OSwgNjYsIDEyLCAxMywgMjQ5LCA2NSwgMTIsIDEzLCAyNDksIDY0LCAxMiwgCi0gICAgMTMsIDI0OSwgNjMsIDEyLCAxMywgMjQ5LCA2MiwgMTIsIDEzLCAyNDksIDYxLCAxMiwgMTMsIDI0OSwgNjAsIDEyLCAxMywgCi0gICAgMjQ5LCA1OSwgMTIsIDEzLCAyNDksIDU4LCAxMiwgMTMsIDI0OSwgNTcsIDEyLCAxMywgMjQ5LCA1NiwgMTIsIDEzLCAyNDksIAotICAgIDU1LCAxMiwgMTMsIDI0OSwgNTQsIDEyLCAxMywgMjQ5LCA1MywgMTIsIDEzLCAyNDksIDUyLCAxMiwgMTMsIDI0OSwgNTEsIAotICAgIDEyLCAxMywgMjQ5LCA1MCwgMTIsIDEzLCAyNDksIDQ5LCAxMiwgMTMsIDI0OSwgNDgsIDEyLCAxMywgMjQ5LCA0NywgMTIsIAotICAgIDEzLCAyNDksIDQ2LCAxMiwgMTMsIDI0OSwgNDUsIDEyLCAxMywgMjQ5LCA0NCwgMTIsIDEzLCAyNDksIDQzLCAxMiwgMTMsIAotICAgIDI0OSwgNDIsIDEyLCAxMywgMjQ5LCA0MSwgMTIsIDEzLCAyNDksIDQwLCAxMiwgMTMsIDI0OSwgMzksIDEyLCAxMywgMjQ5LCAKLSAgICAzOCwgMTIsIDEzLCAyNDksIDM3LCAxMiwgMTMsIDI0OSwgMzYsIDEyLCAxMywgMjQ5LCAzNSwgMTIsIDEzLCAyNDksIDM0LCAKLSAgICAxMiwgMTMsIDI0OSwgMzMsIDEyLCAxMywgMjQ5LCAzMiwgMTIsIDEzLCAyNDksIDMxLCAxMiwgMTMsIDI0OSwgMzAsIDEyLCAKLSAgICAxMywgMjQ5LCAyOSwgMTIsIDEzLCAyNDksIDI4LCAxMiwgMTMsIDI0OSwgMjcsIDEyLCAxMywgMjQ5LCAyNiwgMTIsIDEzLCAKLSAgICAyNDksIDI1LCAxMiwgMTMsIDI0OSwgMjQsIDEyLCAxMywgMjQ5LCAyMywgMTIsIDEzLCAyNDksIDIyLCAxMiwgMTMsIDI0OSwgCi0gICAgMjEsIDEyLCAxMywgMjQ5LCAyMCwgMTIsIDEzLCAyNDksIDE5LCAxMiwgMTMsIDI0OSwgMTgsIDEyLCAxMywgMjQ5LCAxNywgCi0gICAgMTIsIDEzLCAyNDksIDE2LCAxMiwgMTMsIDI0OSwgMTUsIDEyLCAxMywgMjQ5LCAxNCwgMTIsIDEzLCAyNDksIDEzLCAxMiwgCi0gICAgMTMsIDI0OSwgMTIsIDEyLCAxMywgMjQ5LCAxMSwgMTIsIDEzLCAyNDksIDEwLCAxMiwgMTMsIDI0OSwgOSwgMTIsIDEzLCAKLSAgICAyNDksIDgsIDEyLCAxMywgMjQ5LCA3LCAxMiwgMTMsIDI0OSwgNiwgMTIsIDEzLCAyNDksIDUsIDEyLCAxMywgMjQ5LCA0LCAKLSAgICAxMiwgMTMsIDI0OSwgMywgMTIsIDEzLCAyNDksIDIsIDEyLCAxMywgMjQ5LCAxLCAxMiwgMTMsIDI0OSwgMCwgMTIsIDEzLCAKLSAgICAyNDgsIDI1NSwgMTIsIDEzLCAyNDgsIDI1NCwgMTIsIDEzLCAyNDgsIDI1MywgMTIsIDEzLCAyNDgsIDI1MiwgMTIsIDEzLCAKLSAgICAyNDgsIDI1MSwgMTIsIDEzLCAyNDgsIDI1MCwgMTIsIDEzLCAyNDgsIDI0OSwgMTIsIDEzLCAyNDgsIDI0OCwgMTIsIDEzLCAKLSAgICAyNDgsIDI0NywgMTIsIDEzLCAyNDgsIDI0NiwgMTIsIDEzLCAyNDgsIDI0NSwgMTIsIDEzLCAyNDgsIDI0NCwgMTIsIDEzLCAKLSAgICAyNDgsIDI0MywgMTIsIDEzLCAyNDgsIDI0MiwgMTIsIDEzLCAyNDgsIDI0MSwgMTIsIDEzLCAyNDgsIDI0MCwgMTIsIDEzLCAKLSAgICAyNDgsIDIzOSwgMTIsIDEzLCAyNDgsIDIzOCwgMTIsIDEzLCAyNDgsIDIzNywgMTIsIDEzLCAyNDgsIDIzNiwgMTIsIDEzLCAKLSAgICAyNDgsIDIzNSwgMTIsIDEzLCAyNDgsIDIzNCwgMTIsIDEzLCAyNDgsIDIzMywgMTIsIDEzLCAyNDgsIDIzMiwgMTIsIDEzLCAKLSAgICAyNDYsIDMxLCAxMiwgMTMsIDI0NiwgMzAsIDEyLCAxMywgMjQ2LCAyOSwgMTIsIDEzLCAyNDYsIDI4LCAxMiwgMTMsIDI0NiwgCi0gICAgMjcsIDEyLCAxMywgMjQ2LCAyNiwgMTIsIDEzLCAyNDYsIDI1LCAxMiwgMTMsIDI0NiwgMjQsIDEyLCAxMywgMjQ2LCAyMywgCi0gICAgMTIsIDEzLCAyNDYsIDIyLCAxMiwgMTMsIDI0NiwgMjEsIDEyLCAxMywgMjQ2LCAyMCwgMTIsIDEzLCAyNDYsIDE5LCAxMiwgCi0gICAgMTMsIDI0NiwgMTgsIDEyLCAxMywgMjQ2LCAxNywgMTIsIDEzLCAyNDYsIDE2LCAxMiwgMTMsIDI0NiwgMTUsIDEyLCAxMywgCi0gICAgMjQ2LCAxNCwgMTIsIDEzLCAyNDYsIDEzLCAxMiwgMTMsIDI0NiwgMTIsIDEyLCAxMywgMjQ2LCAxMSwgMTIsIDEzLCAyNDYsIAotICAgIDEwLCAxMiwgMTMsIDI0NiwgOSwgMTIsIDEzLCAyNDYsIDgsIDEyLCAxMywgMjQ2LCA3LCAxMiwgMTMsIDI0NiwgNiwgMTIsIAotICAgIDEzLCAyNDYsIDUsIDEyLCAxMywgMjQ2LCA0LCAxMiwgMTMsIDI0NiwgMywgMTIsIDEzLCAyNDYsIDIsIDEyLCAxMywgMjQ2LCAKLSAgICAxLCAxMiwgMTMsIDI0NiwgMCwgMTIsIDEzLCAyNDUsIDI1NSwgMTIsIDEzLCAyNDUsIDI1NCwgMTIsIDEzLCAyNDUsIDI1MywgCi0gICAgMTIsIDEzLCAyNDUsIDI1MiwgMTIsIDEzLCAyNDUsIDI1MSwgMTIsIDEzLCAyNDUsIDI1MCwgMTIsIDEzLCAyNDUsIDI0OSwgCi0gICAgMTIsIDEzLCAyNDUsIDI0OCwgMTIsIDEzLCAyNDUsIDI0NywgMTIsIDEzLCAyNDUsIDI0NiwgMTIsIDEzLCAyNDUsIDI0NSwgCi0gICAgMTIsIDEzLCAyNDUsIDI0NCwgMTIsIDEzLCAyNDUsIDEzLCAxMiwgMTMsIDI0NSwgMTIsIDEyLCAxMywgMjQ1LCAxMSwgMTIsIAotICAgIDEzLCAyNDUsIDEwLCAxMiwgMTMsIDI0NSwgOSwgMTIsIDEzLCAyNDUsIDgsIDEyLCAxMywgMjQ1LCA3LCAxMiwgMTMsIDI0NSwgCi0gICAgNiwgMTIsIDEzLCAyNDUsIDUsIDEyLCAxMywgMjQ1LCA0LCAxMiwgMTMsIDI0NSwgMywgMTIsIDEzLCAyNDUsIDIsIDEyLCAKLSAgICAxMywgMjQ1LCAxLCAxMiwgMTMsIDI0NSwgMCwgMTIsIDEzLCAyNDQsIDI1NSwgMTIsIDEzLCAyNDQsIDI1NCwgMTIsIDEzLCAKLSAgICAyNDQsIDI1MywgMTIsIDEzLCAyNDQsIDI1MiwgMTIsIDEzLCAyNDQsIDI1MSwgMTIsIDEzLCAyNDQsIDI1MCwgMTIsIDEzLCAKLSAgICAyNDQsIDI0OSwgMTIsIDEzLCAyNDQsIDI0OCwgMTIsIDEzLCAyNDQsIDI0NywgMTIsIDEzLCAyNDQsIDI0NiwgMTIsIDEzLCAKLSAgICAyNDQsIDI0NSwgMTIsIDEzLCAyNDQsIDI0NCwgMTIsIDEzLCAyNDQsIDI0MywgMTIsIDEzLCAyNDQsIDI0MiwgMTIsIDEzLCAKLSAgICAyNDQsIDI0MSwgMTIsIDEzLCAyNDQsIDI0MCwgMTIsIDEzLCAyNDQsIDIzOSwgMTIsIDEzLCAyNDQsIDIzOCwgMTIsIDEzLCAKLSAgICAyNDQsIDIzNywgMTIsIDEzLCAyNDQsIDIzNiwgMTIsIDEzLCAyNDQsIDIzNSwgMTIsIDEzLCAyNDQsIDIzNCwgMTIsIDEzLCAKLSAgICAyNDQsIDIzMywgMTIsIDEzLCAyNDQsIDIzMiwgMTIsIDEzLCAyNDQsIDIzMSwgMTIsIDEzLCAyNDQsIDIzMCwgMTIsIDEzLCAKLSAgICAyNDQsIDIyOSwgMTIsIDEzLCAyNDQsIDIyOCwgMTIsIDEzLCAyNDQsIDIyNywgMTIsIDEzLCAyNDQsIDIyNiwgMTIsIDEzLCAKLSAgICAyNDQsIDIyNSwgMTIsIDEzLCAyNDQsIDIyNCwgMTIsIDEzLCAyNDQsIDIyMywgMTIsIDEzLCAyNDQsIDIyMiwgMTIsIDEzLCAKLSAgICAyNDQsIDIyMSwgMTIsIDEzLCAyNDQsIDIyMCwgMTIsIDEzLCAyNDQsIDIxOSwgMTIsIDEzLCAyNDQsIDIxOCwgMTIsIDEzLCAKLSAgICAyNDQsIDIxNywgMTIsIDEzLCAyNDQsIDIxNiwgMTIsIDEzLCAyNDQsIDIxNSwgMTIsIDEzLCAyNDQsIDIxNCwgMTIsIDEzLCAKLSAgICAyNDQsIDIxMywgMTIsIDEzLCAyNDQsIDIxMiwgMTIsIDEzLCAyNDQsIDIxMSwgMTIsIDEzLCAyNDQsIDIxMCwgMTIsIDEzLCAKLSAgICAyNDQsIDIwOSwgMTIsIDEzLCAyNDQsIDIwOCwgMTIsIDEzLCAyNDQsIDIwNywgMTIsIDEzLCAyNDQsIDIwNiwgMTIsIDEzLCAKLSAgICAyNDQsIDIwNSwgMTIsIDEzLCAyNDMsIDIwOCwgMTIsIDEzLCAyNDMsIDIwNywgMTIsIDEzLCAyNDMsIDIwNiwgMTIsIDEzLCAKLSAgICAyNDMsIDIwNSwgMTIsIDEzLCAyNDMsIDIwNCwgMTIsIDEzLCAyNDMsIDIwMywgMTIsIDEzLCAyNDMsIDIwMiwgMTIsIDEzLCAKLSAgICAyNDMsIDIwMSwgMTIsIDEzLCAyNDMsIDIwMCwgMTIsIDEzLCAyNDMsIDE5OSwgMTIsIDEzLCAyNDMsIDE5OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5NywgMTIsIDEzLCAyNDMsIDE5NiwgMTIsIDEzLCAyNDMsIDE5NSwgMTIsIDEzLCAyNDMsIDE5NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE5MywgMTIsIDEzLCAyNDMsIDE5MiwgMTIsIDEzLCAyNDMsIDE5MSwgMTIsIDEzLCAyNDMsIDE5MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE4OSwgMTIsIDEzLCAyNDMsIDE4OCwgMTIsIDEzLCAyNDMsIDE4NywgMTIsIDEzLCAyNDMsIDE4NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4NSwgMTIsIDEzLCAyNDMsIDE4NCwgMTIsIDEzLCAyNDMsIDE4MywgMTIsIDEzLCAyNDMsIDE4MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE4MSwgMTIsIDEzLCAyNDMsIDE4MCwgMTIsIDEzLCAyNDMsIDE3OSwgMTIsIDEzLCAyNDMsIDE3OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3NywgMTIsIDEzLCAyNDMsIDE3NiwgMTIsIDEzLCAyNDMsIDE3NSwgMTIsIDEzLCAyNDMsIDE3NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE3MywgMTIsIDEzLCAyNDMsIDE3MiwgMTIsIDEzLCAyNDMsIDE3MSwgMTIsIDEzLCAyNDMsIDE3MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE2OSwgMTIsIDEzLCAyNDMsIDE2OCwgMTIsIDEzLCAyNDMsIDE2NywgMTIsIDEzLCAyNDMsIDE2NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2NSwgMTIsIDEzLCAyNDMsIDE2NCwgMTIsIDEzLCAyNDMsIDE2MywgMTIsIDEzLCAyNDMsIDE2MiwgMTIsIDEzLCAKLSAgICAyNDMsIDE2MSwgMTIsIDEzLCAyNDMsIDE2MCwgMTIsIDEzLCAyNDMsIDE1OSwgMTIsIDEzLCAyNDMsIDE1OCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1NywgMTIsIDEzLCAyNDMsIDE1NiwgMTIsIDEzLCAyNDMsIDE1NSwgMTIsIDEzLCAyNDMsIDE1NCwgMTIsIDEzLCAKLSAgICAyNDMsIDE1MywgMTIsIDEzLCAyNDMsIDE1MiwgMTIsIDEzLCAyNDMsIDE1MSwgMTIsIDEzLCAyNDMsIDE1MCwgMTIsIDEzLCAKLSAgICAyNDMsIDE0OSwgMTIsIDEzLCAyNDMsIDE0OCwgMTIsIDEzLCAyNDMsIDE0NywgMTIsIDEzLCAyNDMsIDE0NiwgMTIsIDEzLCAKLSAgICAyNDMsIDE0NSwgMTIsIDEzLCAyNDIsIDY1LCAxMiwgMTMsIDI0MiwgNjQsIDEyLCAxMywgMjQyLCA2MywgMTIsIDEzLCAyNDIsIAotICAgIDYyLCAxMiwgMTMsIDI0MiwgNjEsIDEyLCAxMywgMjQyLCA2MCwgMTIsIDEzLCAyNDIsIDU5LCAxMiwgMTMsIDI0MiwgNTgsIAotICAgIDEyLCAxMywgMjQyLCA1NywgMTIsIDEzLCAyNDAsIDE0NSwgMTIsIDEzLCAyNDAsIDE0NCwgMTIsIDEzLCAyNDAsIDE0MywgCi0gICAgMTIsIDEzLCAyNDAsIDE0MiwgMTIsIDEzLCAyNDAsIDE0MSwgMTIsIDEzLCAyNDAsIDE0MCwgMTIsIDEzLCAyNDAsIDEzOSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzOCwgMTIsIDEzLCAyNDAsIDEzNywgMTIsIDEzLCAyNDAsIDEzNiwgMTIsIDEzLCAyNDAsIDEzNSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzNCwgMTIsIDEzLCAyNDAsIDEzMywgMTIsIDEzLCAyNDAsIDEzMiwgMTIsIDEzLCAyNDAsIDEzMSwgCi0gICAgMTIsIDEzLCAyNDAsIDEzMCwgMTIsIDEzLCAyNDAsIDEyOSwgMTIsIDEzLCAyNDAsIDEyOCwgMTIsIDEzLCAyNDAsIDEyNywgCi0gICAgMTIsIDEzLCAyMzUsIDI4LCAxMiwgMTMsIDIzNSwgMjcsIDEyLCAxMywgMjM1LCAyNiwgMTIsIDEzLCAyMzUsIDI1LCAxMiwgCi0gICAgMTMsIDIzNSwgMjQsIDEyLCAxMywgMjM1LCAyMywgMTIsIDEzLCAyMzUsIDIyLCAxMiwgMTMsIDIzNSwgMjEsIDEyLCAxMywgCi0gICAgMjMzLCAxNTIsIDEyLCAxMywgMjMzLCAxNTEsIDEyLCAxMywgMjMzLCAxNTAsIDEyLCAxMywgMjMzLCAxNDksIDEyLCAxMywgCi0gICAgMjMzLCAxNDgsIDEyLCAxMywgMjMzLCAxNDcsIDEyLCAxMywgMjMzLCAxNDYsIDEyLCAxMywgMjMzLCAxNDUsIDEyLCAxMywgCi0gICAgMjMzLCAxNDQsIDEyLCAxMywgMjMzLCAxNDMsIDEyLCAxMywgMjMyLCA1NCwgMTIsIDEzLCAyMzIsIDUzLCAxMiwgMTMsIAotICAgIDIzMiwgNTIsIDEyLCAxMywgMjMyLCA1MSwgMTIsIDEzLCAyMzIsIDUwLCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCAKLSAgICA0OCwgMTIsIDEzLCAyMzIsIDQ3LCAxMiwgMTMsIDIzMiwgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAKLSAgICAxMiwgMTMsIDIzMiwgNDMsIDEyLCAxMywgMjMyLCA0MiwgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAKLSAgICAxMywgMjMyLCAzOSwgMTIsIDEzLCAyMzIsIDM4LCAxMiwgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAKLSAgICAyMzIsIDM1LCAxMiwgMTMsIDIzMiwgMzQsIDEyLCAxMywgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgCi0gICAgMzEsIDEyLCAxMywgMjMyLCAzMCwgMTIsIDEzLCAyMzIsIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgCi0gICAgMTIsIDEzLCAyMzIsIDI2LCAxMiwgMTMsIDIzMiwgMjUsIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgCi0gICAgMTMsIDIzMiwgMjIsIDEyLCAxMywgMjMyLCAyMSwgMTIsIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgCi0gICAgMjMyLCAxOCwgMTIsIDEzLCAyMzIsIDE3LCAxMiwgMTMsIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIAotICAgIDE0LCAxMiwgMTMsIDIzMiwgMTMsIDEyLCAxMywgMjMyLCAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIAotICAgIDEyLCAxMywgMjMyLCA5LCAxMiwgMTMsIDIzMiwgOCwgMTIsIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIAotICAgIDIzMiwgNSwgMTIsIDEzLCAyMzIsIDQsIDEyLCAxMywgMjMyLCAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIAotICAgIDEyLCAxMywgMjMyLCAwLCAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgCi0gICAgMTMsIDIzMSwgMjUyLCAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgCi0gICAgMTMsIDIzMSwgMjQ4LCAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgCi0gICAgMTMsIDIzMCwgMjcsIDEyLCAxMywgMjMwLCAyNiwgMTIsIDEzLCAyMzAsIDI1LCAxMiwgMTMsIDIzMCwgMjQsIDEyLCAxMywgCi0gICAgMjMwLCAyMywgMTIsIDEzLCAyMzAsIDIyLCAxMiwgMTMsIDIzMCwgMjEsIDEyLCAxMywgMjMwLCAyMCwgMTIsIDEzLCAyMzAsIAotICAgIDE5LCAxMiwgMTMsIDIzMCwgMTgsIDEyLCAxMywgMjMwLCAxNywgMTIsIDEzLCAyMzAsIDE2LCAxMiwgMTMsIDIzMCwgMTUsIAotICAgIDEyLCAxMywgMjMwLCAxNCwgMTIsIDEzLCAyMzAsIDEzLCAxMiwgMTMsIDIzMCwgMTIsIDEyLCAxMywgMjMwLCAxMSwgMTIsIAotICAgIDEzLCAyMzAsIDEwLCAxMiwgMTMsIDIzMCwgOSwgMTIsIDEzLCAyMzAsIDgsIDEyLCAxMywgMjMwLCA3LCAxMiwgMTMsIDIzMCwgCi0gICAgNiwgMTIsIDEzLCAyMzAsIDUsIDEyLCAxMywgMjMwLCA0LCAxMiwgMTMsIDIzMCwgMywgMTIsIDEzLCAyMzAsIDIsIDEyLCAKLSAgICAxMywgMjMwLCAxLCAxMiwgMTMsIDIzMCwgMCwgMTIsIDEzLCAyMjksIDI1NSwgMTIsIDEzLCAyMjksIDI1NCwgMTIsIDEzLCAKLSAgICAyMjksIDI1MywgMTIsIDEzLCAyMjksIDI1MiwgMTIsIDEzLCAyMjksIDI1MSwgMTIsIDEzLCAyMjksIDI1MCwgMTIsIDEzLCAKLSAgICAyMjksIDI0OSwgMTIsIDEzLCAyMjksIDI0OCwgMTIsIDEzLCAyMjksIDI0NywgMTIsIDEzLCAyMjksIDI0NiwgMTIsIDEzLCAKLSAgICAyMjksIDI0NSwgMTIsIDEzLCAyMjksIDI0NCwgMTIsIDEzLCAyMjksIDI0MywgMTIsIDEzLCAyMjksIDI0MiwgMTIsIDEzLCAKLSAgICAyMjksIDI0MSwgMTIsIDEzLCAyMjksIDI0MCwgMTIsIDEzLCAyMjksIDIzOSwgMTIsIDEzLCAyMjksIDIzOCwgMTIsIDEzLCAKLSAgICAyMjksIDIzNywgMTIsIDEzLCAyMjksIDIzNiwgMTIsIDEzLCAyMjksIDIzNSwgMTIsIDEzLCAyMjgsIDEzOSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzOCwgMTIsIDEzLCAyMjgsIDEzNywgMTIsIDEzLCAyMjgsIDEzNiwgMTIsIDEzLCAyMjgsIDEzNSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzNCwgMTIsIDEzLCAyMjgsIDEzMywgMTIsIDEzLCAyMjgsIDEzMiwgMTIsIDEzLCAyMjgsIDEzMSwgMTIsIDEzLCAKLSAgICAyMjgsIDEzMCwgMTIsIDEzLCAyMjgsIDEyOSwgMTIsIDEzLCAyMjgsIDEyOCwgMTIsIDEzLCAyMjgsIDEyNywgMTIsIDEzLCAKLSAgICAyMjgsIDEyNiwgMTIsIDEzLCAyMjgsIDEyNSwgMTIsIDEzLCAyMjgsIDEyNCwgMTIsIDEzLCAyMjgsIDEyMywgMTIsIDEzLCAKLSAgICAyMjgsIDEyMiwgMTIsIDEzLCAyMjgsIDEyMSwgMTIsIDEzLCAyMjgsIDEyMCwgMTIsIDEzLCAyMjgsIDExOSwgMTIsIDEzLCAKLSAgICAyMjgsIDExOCwgMTIsIDEzLCAyMjcsIDI0MSwgMTIsIDEzLCAyMjcsIDI0MCwgMTIsIDEzLCAyMjcsIDIzOSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzOCwgMTIsIDEzLCAyMjcsIDIzNywgMTIsIDEzLCAyMjcsIDIzNiwgMTIsIDEzLCAyMjcsIDIzNSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzNCwgMTIsIDEzLCAyMjcsIDIzMywgMTIsIDEzLCAyMjcsIDIzMiwgMTIsIDEzLCAyMjcsIDIzMSwgMTIsIDEzLCAKLSAgICAyMjcsIDIzMCwgMTIsIDEzLCAyMjcsIDIyOSwgMTIsIDEzLCAyMjcsIDIyOCwgMTIsIDEzLCAyMjcsIDIyNywgMTIsIDEzLCAKLSAgICAyMjcsIDIyNiwgMTIsIDEzLCAyMjcsIDIyNSwgMTIsIDEzLCAyMjcsIDIyNCwgMTIsIDEzLCAyMjcsIDIyMywgMTIsIDEzLCAKLSAgICAyMjcsIDIyMiwgMTIsIDEzLCAyMjcsIDIyMSwgMTIsIDEzLCAyMjcsIDIyMCwgMTIsIDEzLCAyMjcsIDIxOSwgMTIsIDEzLCAKLSAgICAyMjcsIDIxOCwgMTIsIDEzLCAyMjcsIDIxNywgMTIsIDEzLCAyMjcsIDIxNiwgMTIsIDEzLCAyMjcsIDgwLCAxMiwgMTMsIAotICAgIDIyNywgNzksIDEyLCAxMywgMjI3LCA3OCwgMTIsIDEzLCAyMjcsIDc3LCAxMiwgMTMsIDIyNywgNzYsIDEyLCAxMywgMjI3LCAKLSAgICA3NSwgMTIsIDEzLCAyMjcsIDc0LCAxMiwgMTMsIDIyNywgNzMsIDEyLCAxMywgMjI3LCA3MiwgMTIsIDEzLCAyMjcsIDcxLCAKLSAgICAxMiwgMTMsIDIyNywgNzAsIDEyLCAxMywgMjI3LCA2OSwgMTIsIDEzLCAyMjcsIDY4LCAxMiwgMTMsIDIyNywgNjcsIDEyLCAKLSAgICAxMywgMjI3LCA2NiwgMTIsIDEzLCAyMjcsIDY1LCAxMiwgMTMsIDIyNywgNjQsIDEyLCAxMywgMjI3LCA2MywgMTIsIDEzLCAKLSAgICAyMjcsIDYyLCAxMiwgMTMsIDIyNywgNjEsIDEyLCAxMywgMjI3LCA2MCwgMTIsIDEzLCAyMjcsIDU5LCAxMiwgMTMsIDIyNywgCi0gICAgNTgsIDEyLCAxMywgMjI3LCA1NywgMTIsIDEzLCAyMjcsIDU2LCAxMiwgMTMsIDIyNywgNTUsIDEyLCAxMywgMjI3LCA1NCwgCi0gICAgMTIsIDEzLCAyMjcsIDUzLCAxMiwgMTMsIDIyNywgNTIsIDEyLCAxMywgMjI3LCA1MSwgMTIsIDEzLCAyMjcsIDUwLCAxMiwgCi0gICAgMTMsIDIyNywgNDksIDEyLCAxMywgMjI3LCA0OCwgMTIsIDEzLCAyMjcsIDQ3LCAxMiwgMTMsIDIyNywgNDYsIDEyLCAxMywgCi0gICAgMjI3LCA0NSwgMTIsIDEzLCAyMjcsIDQ0LCAxMiwgMTMsIDIyNywgNDMsIDEyLCAxMywgMjI3LCA0MiwgMTIsIDEzLCAyMjcsIAotICAgIDQxLCAxMiwgMTMsIDIyNywgNDAsIDEyLCAxMywgMjI3LCAzOSwgMTIsIDEzLCAyMjcsIDM4LCAxMiwgMTMsIDIyNywgMzcsIAotICAgIDEyLCAxMywgMjI3LCAzNiwgMTIsIDEzLCAyMjcsIDM1LCAxMiwgMTMsIDIyNywgMzQsIDEyLCAxMywgMjI3LCAzMywgMTIsIAotICAgIDEzLCAyMjcsIDMyLCAxMiwgMTMsIDIyNywgMzEsIDEyLCAxMywgMjI3LCAzMCwgMTIsIDEzLCAyMjcsIDI5LCAxMiwgMTMsIAotICAgIDIyNywgMjgsIDEyLCAxMywgMjI3LCAyNywgMTIsIDEzLCAyMjcsIDI2LCAxMiwgMTMsIDIyNywgMjUsIDEyLCAxMywgMjI3LCAKLSAgICAyNCwgMTIsIDEzLCAyMjcsIDIzLCAxMiwgMTMsIDIyNywgMjIsIDEyLCAxMywgMjI3LCAyMSwgMTIsIDEzLCAyMjcsIDIwLCAKLSAgICAxMiwgMTMsIDIyNywgMTksIDEyLCAxMywgMjI3LCAxOCwgMTIsIDEzLCAyMjcsIDE3LCAxMiwgMTMsIDIyNywgMTYsIDEyLCAKLSAgICAxMywgMjI3LCAxNSwgMTIsIDEzLCAyMjcsIDE0LCAxMiwgMTMsIDIyNywgMTMsIDEyLCAxMywgMjI3LCAxMiwgMTIsIDEzLCAKLSAgICAyMjcsIDExLCAxMiwgMTMsIDIyNywgMTAsIDEyLCAxMywgMjI3LCA5LCAxMiwgMTMsIDIyNywgOCwgMTIsIDEzLCAyMjcsIDcsIAotICAgIDEyLCAxMywgMjI3LCA2LCAxMiwgMTMsIDIyNiwgMTA4LCAxMiwgMTMsIDIyNiwgMTA3LCAxMiwgMTMsIDIyNiwgMTA2LCAxMiwgCi0gICAgMTMsIDIyNiwgMTA1LCAxMiwgMTMsIDIyNiwgMTA0LCAxMiwgMTMsIDIyNiwgMTAzLCAxMiwgMTMsIDIyNiwgMTAyLCAxMiwgCi0gICAgMTMsIDIyNiwgMTAxLCAxMiwgMTMsIDIyNiwgMTAwLCAxMiwgMTMsIDIyNiwgOTksIDEyLCAxMywgMjI2LCA5OCwgMTIsIDEzLCAKLSAgICAyMjYsIDk3LCAxMiwgMTMsIDIyNiwgOTYsIDEyLCAxMywgMjI0LCA5OCwgMTIsIDEzLCAyMjQsIDk3LCAxMiwgMTMsIDIyNCwgCi0gICAgOTYsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgOTMsIDEyLCAxMywgMjI0LCA5MiwgCi0gICAgMTIsIDEzLCAyMjMsIDIyNSwgMTIsIDEzLCAyMjMsIDIyNCwgMTIsIDEzLCAyMjMsIDIyMywgMTIsIDEzLCAyMjMsIDIyMiwgCi0gICAgMTIsIDEzLCAyMjMsIDIyMSwgMTIsIDEzLCAyMjMsIDIyMCwgMTIsIDEzLCAyMjMsIDIxOSwgMTIsIDEzLCAyMjMsIDIxOCwgCi0gICAgMTIsIDEzLCAyMjMsIDIxNywgMTIsIDEzLCAyMjMsIDIxNiwgMTIsIDEzLCAyMjMsIDIxNSwgMTIsIDEzLCAyMjMsIDIxNCwgCi0gICAgMTIsIDEzLCAyMjMsIDIxMywgMTIsIDEzLCAyMjMsIDIxMiwgMTIsIDEzLCAyMjMsIDIxMSwgMTIsIDEzLCAyMjMsIDIxMCwgCi0gICAgMTIsIDEzLCAyMjMsIDIwOSwgMTIsIDEzLCAyMjMsIDIwOCwgMTIsIDEzLCAyMjMsIDIwNywgMTIsIDEzLCAyMjMsIDIwNiwgCi0gICAgMTIsIDEzLCAyMjMsIDIwNSwgMTIsIDEzLCAyMjMsIDIwNCwgMTIsIDEzLCAyMjMsIDIwMywgMTIsIDEzLCAyMjMsIDIwMiwgCi0gICAgMTIsIDEzLCAyMjMsIDIwMSwgMTIsIDEzLCAyMjMsIDIwMCwgMTIsIDEzLCAyMjMsIDE5OSwgMTIsIDEzLCAyMjMsIDE5OCwgCi0gICAgMTIsIDEzLCAyMjMsIDE5NywgMTIsIDEzLCAyMjMsIDE5NiwgMTIsIDEzLCAyMjMsIDE5NSwgMTIsIDEzLCAyMjMsIDE5NCwgCi0gICAgMTIsIDEzLCAyMjMsIDE5MywgMTIsIDEzLCAyMjMsIDE5MiwgMTIsIDEzLCAyMjIsIDkwLCAxMiwgMTMsIDIyMiwgODksIDEyLCAKLSAgICAxMywgMjIyLCA4OCwgMTIsIDEzLCAyMjIsIDg3LCAxMiwgMTMsIDIyMiwgODYsIDEyLCAxMywgMjIyLCA4NSwgMTIsIDEzLCAKLSAgICAyMjIsIDg0LCAxMiwgMTMsIDIyMiwgODMsIDEyLCAxMywgMjIyLCA4MiwgMTIsIDEzLCAyMjIsIDgxLCAxMiwgMTMsIDIyMiwgCi0gICAgODAsIDEyLCAxMywgMjIyLCA3OSwgMTIsIDEzLCAyMjIsIDc4LCAxMiwgMTMsIDIyMiwgNzcsIDEyLCAxMywgMjIyLCA3NiwgCi0gICAgMTIsIDEzLCAyMjIsIDc1LCAxMiwgMTMsIDIyMiwgNzQsIDEyLCAxMywgMjIyLCA3MywgMTIsIDEzLCAyMjIsIDcyLCAxMiwgCi0gICAgMTMsIDIyMiwgNzEsIDEyLCAxMywgMjIyLCA3MCwgMTIsIDEzLCAyMjIsIDY5LCAxMiwgMTMsIDIyMiwgNjgsIDEyLCAxMywgCi0gICAgMjIyLCA2NywgMTIsIDEzLCAyMjIsIDY2LCAxMiwgMTMsIDIyMiwgNjUsIDEyLCAxMywgMjIyLCA2NCwgMTIsIDEzLCAyMjIsIAotICAgIDYzLCAxMiwgMTMsIDIyMiwgNjIsIDEyLCAxMywgMjIyLCA2MSwgMTIsIDEzLCAyMjIsIDYwLCAxMiwgMTMsIDIyMiwgNTksIAotICAgIDEyLCAxMywgMjIyLCA1OCwgMTIsIDEzLCAyMjIsIDU3LCAxMiwgMTMsIDIyMiwgNTYsIDEyLCAxMywgMjIyLCA1NSwgMTIsIAotICAgIDEzLCAyMjIsIDU0LCAxMiwgMTMsIDIyMiwgNTMsIDEyLCAxMywgMjIyLCA1MiwgMTIsIDEzLCAyMjIsIDUxLCAxMiwgMTMsIAotICAgIDIyMiwgNTAsIDEyLCAxMywgMjIyLCA0OSwgMTIsIDEzLCAyMjIsIDQ4LCAxMiwgMTMsIDIyMiwgNDcsIDEyLCAxMywgMjIyLCAKLSAgICA0NiwgMTIsIDEzLCAyMjIsIDQ1LCAxMiwgMTMsIDIyMiwgNDQsIDEyLCAxMywgMjIyLCA0MywgMTIsIDEzLCAyMjIsIDQyLCAKLSAgICAxMiwgMTMsIDIyMiwgNDEsIDEyLCAxMywgMjIyLCA0MCwgMTIsIDEzLCAyMjIsIDM5LCAxMiwgMTMsIDIyMiwgMzgsIDEyLCAKLSAgICAxMywgMjIyLCAzNywgMTIsIDEzLCAyMTcsIDE1MSwgMTIsIDEzLCAyMTcsIDE1MCwgMTIsIDEzLCAyMTcsIDE0OSwgMTIsIAotICAgIDEzLCAyMTcsIDE0OCwgMTIsIDEzLCAyMTcsIDE0NywgMTIsIDEzLCAyMTcsIDE0NiwgMTIsIDEzLCAyMTcsIDE0NSwgMTIsIAotICAgIDEzLCAyMTcsIDE0NCwgMTIsIDEzLCAyMTcsIDE0MywgMTIsIDEzLCAyMTcsIDE0MiwgMTIsIDEzLCAyMTcsIDE0MSwgMTIsIAotICAgIDEzLCAyMTcsIDE0MCwgMTIsIDEzLCAyMTcsIDEzOSwgMTIsIDEzLCAyMTcsIDEzOCwgMTIsIDEzLCAyMTcsIDEzNywgMTIsIAotICAgIDEzLCAyMTcsIDEzNiwgMTIsIDEzLCAyMTcsIDEzNSwgMTIsIDEzLCAyMTcsIDEzNCwgMTIsIDEzLCAyMTcsIDEzMywgMTIsIAotICAgIDEzLCAyMTcsIDEzMiwgMTIsIDEzLCAyMTcsIDEzMSwgMTIsIDEzLCAyMTcsIDEzMCwgMTIsIDEzLCAyMTcsIDEyOSwgMTIsIAotICAgIDEzLCAyMTcsIDEyOCwgMTIsIDEzLCAyMTcsIDEyNywgMTIsIDEzLCAyMTcsIDEyNiwgMTIsIDEzLCAyMTcsIDEyNSwgMTIsIAotICAgIDEzLCAyMTcsIDEyNCwgMTIsIDEzLCAyMTcsIDEyMywgMTIsIDEzLCAyMTcsIDEyMiwgMTIsIDEzLCAyMTcsIDEyMSwgMTIsIAotICAgIDEzLCAyMTcsIDEyMCwgMTIsIDEzLCAyMTcsIDExOSwgMTIsIDEzLCAyMTcsIDExOCwgMTIsIDEzLCAyMTcsIDExNywgMTIsIAotICAgIDEzLCAyMTcsIDExNiwgMTIsIDEzLCAyMTcsIDExNSwgMTIsIDEzLCAyMTcsIDExNCwgMTIsIDEzLCAyMTcsIDExMywgMTIsIAotICAgIDEzLCAyMTcsIDExMiwgMTIsIDEzLCAyMTcsIDExMSwgMTIsIDEzLCAyMTcsIDExMCwgMTIsIDEzLCAyMTcsIDEwOSwgMTIsIAotICAgIDEzLCAyMTcsIDEwOCwgMTIsIDEzLCAyMTUsIDIyLCAxMiwgMTMsIDIxNSwgMjEsIDEyLCAxMywgMjE1LCAyMCwgMTIsIDEzLCAKLSAgICAyMTUsIDE5LCAxMiwgMTMsIDIxNSwgMTgsIDEyLCAxMywgMjE1LCAxNywgMTIsIDEzLCAyMTUsIDE2LCAxMiwgMTMsIDIxNSwgCi0gICAgMTUsIDEyLCAxMywgMjE1LCAxNCwgMTIsIDEzLCAyMTUsIDEzLCAxMiwgMTMsIDIxNSwgMTIsIDEyLCAxMywgMjE1LCAxMSwgCi0gICAgMTIsIDEzLCAyMTUsIDEwLCAxMiwgMTMsIDIxNSwgOSwgMTIsIDEzLCAyMTUsIDgsIDEyLCAxMywgMjE1LCA3LCAxMiwgMTMsIAotICAgIDIxNSwgNiwgMTIsIDEzLCAyMTUsIDUsIDEyLCAxMywgMjE1LCA0LCAxMiwgMTMsIDIxNSwgMywgMTIsIDEzLCAyMTUsIDIsIAotICAgIDEyLCAxMywgMjE1LCAxLCAxMiwgMTMsIDIxNSwgMCwgMTIsIDEzLCAyMTQsIDI1NSwgMTIsIDEzLCAyMTQsIDI1NCwgMTIsIAotICAgIDEzLCAyMTQsIDI1MywgMTIsIDEzLCAyMTQsIDI1MiwgMTIsIDEzLCAyMTQsIDI1MSwgMTIsIDEzLCAyMTQsIDI1MCwgMTIsIAotICAgIDEzLCAyMTQsIDI0OSwgMTIsIDEzLCAyMTQsIDI0OCwgMTIsIDEzLCAyMTQsIDI0NywgMTIsIDEzLCAyMTQsIDI0NiwgMTIsIAotICAgIDEzLCAyMTQsIDI0NSwgMTIsIDEzLCAyMTQsIDI0NCwgMTIsIDEzLCAyMTQsIDI0MywgMTIsIDEzLCAyMTQsIDI0MiwgMTIsIAotICAgIDEzLCAyMTQsIDI0MSwgMTIsIDEzLCAyMTQsIDI0MCwgMTIsIDEzLCAyMTQsIDIzOSwgMTIsIDEzLCAyMTQsIDIzOCwgMTIsIAotICAgIDEzLCAyMTQsIDIzNywgMTIsIDEzLCAyMTQsIDIzNiwgMTIsIDEzLCAyMTQsIDIzNSwgMTIsIDEzLCAyMTQsIDIzNCwgMTIsIAotICAgIDEzLCAyMTQsIDIzMywgMTIsIDEzLCAyMTQsIDIzMiwgMTIsIDEzLCAyMTQsIDEwNCwgMTIsIDEzLCAyMTQsIDEwMywgMTIsIAotICAgIDEzLCAyMTQsIDEwMiwgMTIsIDEzLCAyMTQsIDEwMSwgMTIsIDEzLCAyMTQsIDEwMCwgMTIsIDEzLCAyMTQsIDk5LCAxMiwgCi0gICAgMTMsIDIxNCwgOTgsIDEyLCAxMywgMjE0LCA5NywgMTIsIDEzLCAyMTQsIDk2LCAxMiwgMTMsIDIxNCwgOTUsIDEyLCAxMywgCi0gICAgMjE0LCA5NCwgMTIsIDEzLCAyMTQsIDkzLCAxMiwgMTMsIDIxNCwgOTIsIDEyLCAxMywgMjE0LCA5MSwgMTIsIDEzLCAyMTQsIAotICAgIDkwLCAxMiwgMTMsIDIxNCwgODksIDEyLCAxMywgMjE0LCA4OCwgMTIsIDEzLCAyMTQsIDg3LCAxMiwgMTMsIDIxNCwgODYsIAotICAgIDEyLCAxMywgMjE0LCA4NSwgMTIsIDEzLCAyMTQsIDg0LCAxMiwgMTMsIDIxNCwgODMsIDEyLCAxMywgMjE0LCA4MiwgMTIsIAotICAgIDEzLCAyMTQsIDgxLCAxMiwgMTMsIDIxNCwgODAsIDEyLCAxMywgMjE0LCA3OSwgMTIsIDEzLCAyMTQsIDc4LCAxMiwgMTMsIAotICAgIDIxNCwgNzcsIDEyLCAxMywgMjE0LCA3NiwgMTIsIDEzLCAyMTQsIDc1LCAxMiwgMTMsIDIxNCwgNzQsIDEyLCAxMywgMjE0LCAKLSAgICA3MywgMTIsIDEzLCAyMTQsIDcyLCAxMiwgMTMsIDIxNCwgNzEsIDEyLCAxMywgMjE0LCA3MCwgMTIsIDEzLCAyMTQsIDY5LCAKLSAgICAxMiwgMTMsIDIxNCwgNjgsIDEyLCAxMywgMjE0LCA2NywgMTIsIDEzLCAyMTQsIDY2LCAxMiwgMTMsIDIxNCwgNjUsIDEyLCAKLSAgICAxMywgMjE0LCA2NCwgMTIsIDEzLCAyMTQsIDYzLCAxMiwgMTMsIDIxNCwgNjIsIDEyLCAxMywgMjE0LCA2MSwgMTIsIDEzLCAKLSAgICAyMTQsIDYwLCAxMiwgMTMsIDIxNCwgNTksIDEyLCAxMywgMjE0LCA1OCwgMTIsIDEzLCAyMTQsIDU3LCAxMiwgMTMsIDIxNCwgCi0gICAgNTYsIDEyLCAxMywgMjE0LCA1NSwgMTIsIDEzLCAyMTQsIDU0LCAxMiwgMTMsIDIxNCwgNTMsIDEyLCAxMywgMjE0LCA1MiwgCi0gICAgMTIsIDEzLCAyMTQsIDUxLCAxMiwgMTMsIDIxNCwgNTAsIDEyLCAxMywgMjE0LCA0OSwgMTIsIDEzLCAyMTQsIDQ4LCAxMiwgCi0gICAgMTMsIDIxNCwgNDcsIDEyLCAxMywgMjE0LCA0NiwgMTIsIDEzLCAyMTQsIDQ1LCAxMiwgMTMsIDIxNCwgNDQsIDEyLCAxMywgCi0gICAgMjE0LCA0MywgMTIsIDEzLCAyMTQsIDQyLCAxMiwgMTMsIDIxNCwgNDEsIDEyLCAxMywgMjE0LCA0MCwgMTIsIDEzLCAyMTQsIAotICAgIDM5LCAxMiwgMTMsIDIxNCwgMzgsIDEyLCAxMywgMjE0LCAzNywgMTIsIDEzLCAyMTQsIDM2LCAxMiwgMTMsIDIxNCwgMzUsIAotICAgIDEyLCAxMywgMjE0LCAzNCwgMTIsIDEzLCAyMTQsIDMzLCAxMiwgMTMsIDIxNCwgMzIsIDEyLCAxMywgMjE0LCAzMSwgMTIsIAotICAgIDEzLCAyMTQsIDMwLCAxMiwgMTMsIDIxNCwgMjksIDEyLCAxMywgMjE0LCAyOCwgMTIsIDEzLCAyMTIsIDk3LCAxMiwgMTMsIAotICAgIDIxMiwgOTYsIDEyLCAxMywgMjEyLCA5NSwgMTIsIDEzLCAyMTIsIDk0LCAxMiwgMTMsIDIxMiwgOTMsIDEyLCAxMywgMjEyLCAKLSAgICA5MiwgMTIsIDEzLCAyMTIsIDkxLCAxMiwgMTMsIDIxMiwgOTAsIDEyLCAxMywgMjEyLCA4OSwgMTIsIDEzLCAyMTIsIDg4LCAKLSAgICAxMiwgMTMsIDIxMiwgODcsIDEyLCAxMywgMjEyLCA4NiwgMTIsIDEzLCAyMTIsIDg1LCAxMiwgMTMsIDIxMiwgODQsIDEyLCAKLSAgICAxMywgMjEyLCA4MywgMTIsIDEzLCAyMTIsIDgyLCAxMiwgMTMsIDIxMiwgODEsIDEyLCAxMywgMjEyLCA4MCwgMTIsIDEzLCAKLSAgICAyMTIsIDc5LCAxMiwgMTMsIDIxMiwgNzgsIDEyLCAxMywgMjEyLCA3NywgMTIsIDEzLCAyMTIsIDc2LCAxMiwgMTMsIDIxMiwgCi0gICAgNzUsIDEyLCAxMywgMjEyLCA3NCwgMTIsIDEzLCAyMTIsIDczLCAxMiwgMTMsIDIxMiwgNzIsIDEyLCAxMywgMjEyLCA3MSwgCi0gICAgMTIsIDEzLCAyMTIsIDcwLCAxMiwgMTMsIDIxMiwgNjksIDEyLCAxMywgMjEyLCA2OCwgMTIsIDEzLCAyMTIsIDY3LCAxMiwgCi0gICAgMTMsIDIxMiwgNjYsIDEyLCAxMywgMjExLCAxNzcsIDEyLCAxMywgMjExLCAxNzYsIDEyLCAxMywgMjExLCAxNzUsIDEyLCAKLSAgICAxMywgMjExLCAxNzQsIDEyLCAxMywgMjExLCAxNzMsIDEyLCAxMywgMjExLCAxNzIsIDEyLCAxMywgMjExLCAxNzEsIDEyLCAKLSAgICAxMywgMjExLCAxNzAsIDEyLCAxMywgMjExLCAxNjksIDEyLCAxMywgMjExLCAxNjgsIDEyLCAxMywgMjExLCAxNjcsIDEyLCAKLSAgICAxMywgMjExLCAxNjYsIDEyLCAxMywgMjExLCAxMTUsIDEyLCAxMywgMjExLCAxMTQsIDEyLCAxMywgMjExLCAxMTMsIDEyLCAKLSAgICAxMywgMjExLCAxMTIsIDEyLCAxMywgMjExLCAxMTEsIDEyLCAxMywgMjExLCAxMTAsIDEyLCAxMywgMjExLCAxMDksIDEyLCAKLSAgICAxMywgMjExLCAxMDgsIDEyLCAxMywgMjExLCAxMDcsIDEyLCAxMywgMjEwLCAxNTgsIDEyLCAxMywgMjEwLCAxNTcsIDEyLCAKLSAgICAxMywgMjEwLCAxNTYsIDEyLCAxMywgMjEwLCAxNTUsIDEyLCAxMywgMjEwLCAxNTQsIDEyLCAxMywgMjEwLCAxNTMsIDEyLCAKLSAgICAxMywgMjEwLCAxNTIsIDEyLCAxMywgMjEwLCAxNTEsIDEyLCAxMywgMjEwLCAxNTAsIDEyLCAxMywgMjEwLCAxNDksIDEyLCAKLSAgICAxMywgMjEwLCAxNDgsIDEyLCAxMywgMjEwLCAxNDcsIDEyLCAxMywgMjEwLCAxNDYsIDEyLCAxMywgMjEwLCAxNDUsIDEyLCAKLSAgICAxMywgMjEwLCAxNDQsIDEyLCAxMywgMjEwLCAxNDMsIDEyLCAxMywgMjEwLCAxNDIsIDEyLCAxMywgMjEwLCAxNDEsIDEyLCAKLSAgICAxMywgMjEwLCAxNDAsIDEyLCAxMywgMjEwLCAxMzksIDEyLCAxMywgMjEwLCAxMzgsIDEyLCAxMywgMjEwLCAxMzcsIDEyLCAKLSAgICAxMywgMjEwLCAxMzYsIDEyLCAxMywgMjEwLCAxMzUsIDEyLCAxMywgMjEwLCAxMzQsIDEyLCAxMywgMjEwLCAxMzMsIDEyLCAKLSAgICAxMywgMjEwLCAxMzIsIDEyLCAxMywgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAKLSAgICAxMywgMjEwLCAxMjgsIDEyLCAxMywgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAKLSAgICAxMywgMjEwLCAxMjQsIDEyLCAxMywgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAKLSAgICAxMywgMjEwLCAxMjAsIDEyLCAxMywgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA4MSwgMTIsIAotICAgIDEzLCAyNTUsIDgwLCAxMiwgMTMsIDI1NSwgNzksIDEyLCAxMywgMjU1LCA3OCwgMTIsIDEzLCAyNTUsIDc3LCAxMiwgMTMsIAotICAgIDI1NSwgNzYsIDEyLCAxMywgMjU1LCA3NSwgMTIsIDEzLCAyNTUsIDc0LCAxMiwgMTMsIDI1NSwgNzMsIDEyLCAxMywgMjU1LCAKLSAgICA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAKLSAgICAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAKLSAgICAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAKLSAgICAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgCi0gICAgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgCi0gICAgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgNDksIDEyLCAxMywgMjU1LCA0OCwgMjAsIDEsIDE2NywgMjI5LCAxNywgCi0gICAgMjMxLCAyMSwgMjAsIDEsIDE2NywgMjQzLCA3NywgMjQ0LCA0NCwgMjAsIDEsIDE2NywgMjI0LCAyNTQsIDIzMSwgMjIsIAotICAgIDIyNSwgNjAsIDIwLCAxLCAxNjcsIDIyNCwgMjU0LCAyMzEsIDIyLCAyMjUsIDYxLCAyMCwgMSwgMTY3LCAyMjksIDIzMSwgCi0gICAgMjMxLCAyMSwgMjAsIDEsIDE2NywgMjE5LCAyMjMsIDIwLCAxLCAxNjcsIDIxNiwgNjcsIDIzMSwgMjEsIDIwLCAxLCAxNjcsIAotICAgIDIyNywgMTIyLCAyMzEsIDIxLCAyMCwgMSwgMTY3LCAyMjAsIDIxLCAyMjYsIDk0LCAyMjgsIDE3NCwgMjAsIDEsIDE2NywgCi0gICAgMjI0LCAyNTQsIDIyNiwgOTQsIDIyOCwgMTc1LCAyMjUsIDYwLCAyMCwgMSwgMTY3LCAyMjQsIDI1NCwgMjI2LCA5NCwgMjI4LCAKLSAgICAxNzUsIDIyNSwgNjEsIDIwLCAxLCAxNjcsIDIzMSwgMjIzLCAyMCwgMSwgMTY3LCAyMTUsIDEyMCwgMjMxLCAyMjQsIDIwLCAKLSAgICAxLCAxNjcsIDIyOSwgNzYsIDIwLCAxLCAxNjcsIDIzMSwgMjIwLCAyMCwgMSwgMTY3LCAyMzEsIDE4MSwgMjAsIDEsIDE2NywgCi0gICAgMjMwLCA1MywgMjAsIDEsIDE2NywgMjIwLCAxMjYsIDIwLCAxLCAxNjcsIDIyNywgMjQ2LCAyMCwgMSwgMTY3LCAyMzQsIAotICAgIDE1NSwgMjAsIDEsIDE2NywgMjI4LCAxNDMsIDIwLCAxLCAxNjcsIDIxOCwgNSwgMjAsIDEsIDE2NywgMjI5LCAxNiwgMjAsIAotICAgIDEsIDE2NywgMjMzLCA5MywgMjAsIDEsIDE2NywgMjMzLCAxOCwgMjMzLCAxOTUsIDIwLCAxLCAxNjcsIDIyNywgMjUzLCAKLSAgICAyMzEsIDI5LCAyMCwgMSwgMTY3LCAyMzEsIDIyNywgMjAsIDEsIDE2NywgMjI1LCAyNTAsIDIwLCAxLCAxNjcsIDI0MiwgCi0gICAgMjM4LCAyMCwgMSwgMTY3LCAyMjYsIDU0LCAyMCwgMSwgMTY3LCAyMzAsIDE1NiwgMjI5LCA1MCwgMjAsIDEsIDE2NywgMjI3LCAKLSAgICAxMDMsIDIzMSwgMzIsIDIwLCAxLCAxNjcsIDEwNCwgMjEwLCAxODgsIDIyOSwgMjI1LCAyMCwgMSwgMTY3LCAyNDIsIDIzOSwgCi0gICAgMjAsIDEsIDE2NywgMjI3LCAyNTMsIDIyNywgMjU0LCAyMCwgMSwgMTY3LCAyMTksIDEzMCwgMjAsIDEsIDE2NywgMjMxLCAKLSAgICAxNCwgMjAsIDEsIDE2NywgMjMxLCAzNSwgMjAsIDEsIDE2NywgMjMwLCAxMzUsIDIwLCAxLCAxNjcsIDIzNCwgMjU1LCAyMCwgCi0gICAgMSwgMTY3LCAyMjYsIDk0LCAyMzMsIDUzLCAyMCwgMSwgMTY3LCAyMjksIDE1NCwgMjMzLCA1MywgMjAsIDEsIDE2NywgMjI1LCAKLSAgICAxNjEsIDIwLCAxLCAxNjcsIDIzMSwgMjIxLCAyMCwgMSwgMTY3LCAyMjgsIDIxMiwgMjAsIDEsIDE2NywgMjI0LCAxMzcsIAotICAgIDIwLCAxLCAxNjcsIDIxNSwgMTE3LCAyMCwgMSwgMTY3LCAyMzIsIDk5LCAyMCwgMSwgMTY3LCAyMTksIDQzLCAyMCwgMSwgCi0gICAgMTY3LCAyMTYsIDIxNywgMjAsIDEsIDE2NywgMjMxLCAyMTgsIDIwLCAxLCAxNjcsIDIzNCwgMTYyLCAyMCwgMSwgMTY3LCAKLSAgICAyMjksIDE1MCwgMjAsIDEsIDE2NywgMjMzLCAyMDcsIDIwLCAxLCAxNjcsIDIzMCwgMTM2LCAyMCwgMSwgMTY3LCAyMTksIAotICAgIDIyMCwgMjAsIDEsIDE2NywgMjMyLCAxNDQsIDIwLCAxLCAxNjcsIDI0NCwgMTAxLCAyMCwgMSwgMTY3LCAyMjIsIDIwMSwgCi0gICAgMjAsIDEsIDE2NywgMjMzLCAyNDcsIDIwLCAxLCAxNjcsIDIxOSwgMzksIDIwLCAxLCAxNjcsIDIzMSwgMTc4LCAyMjUsIAotICAgIDEwMiwgMjAsIDEsIDE2NywgMjIwLCAxNCwgMjAsIDEsIDE2NywgMjI3LCAyNTIsIDIwLCAxLCAxNjcsIDIxOSwgMjU1LCAKLSAgICAyMjgsIDcsIDIxMCwgMTk2LCAyMCwgMSwgMTY3LCAyMjcsIDE0MiwgMjMwLCAxNTMsIDIwLCAxLCAxNjcsIDIyNiwgODksIAotICAgIDIwLCAxLCAxNjcsIDIyOCwgMTQ0LCAyMCwgMSwgMTY3LCAyMTQsIDE3MCwgMjAsIDEsIDE2NywgMjI5LCA1MywgMjAsIDEsIAotICAgIDE2NywgMjMxLCAyMTcsIDIwLCAxLCAxNjcsIDIyOCwgMTg2LCAyMCwgMSwgMTY3LCAyMzEsIDEyNCwgMjAsIDEsIDE2NywgCi0gICAgMjI3LCAxNTUsIDIwLCAxLCAxNjcsIDIxNiwgMjIxLCAyMCwgMSwgMTY3LCAyMTksIDM2LCAyMCwgMSwgMTY3LCAyMjYsIDkwLCAKLSAgICAyMCwgMSwgMTY3LCAyMjgsIDExLCAyMCwgMSwgMTY3LCAyMzEsIDIyNSwgMjAsIDEsIDE2NywgMjI3LCAxNTIsIDIwLCAxLCAKLSAgICAxNjcsIDIzNCwgMjIyLCAyMCwgMSwgMTY3LCAyMjgsIDE0LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgCi0gICAgMjMyLCAxMDMsIDIwLCAxLCAxNjcsIDIyOSwgMTAzLCAyMCwgMSwgMTY3LCAyMjksIDIwMSwgMjAsIDEsIDE2NywgMjMxLCAKLSAgICAxMjMsIDIwLCAxLCAyMjUsIDE0MSwgMjI4LCA5LCAyMCwgMSwgMjI1LCAxNDEsIDIxNSwgMTIwLCAyMzEsIDIyMiwgMjAsIDEsIAotICAgIDIyNSwgMTQxLCAyMTksIDE4NywgMjAsIDEsIDIyNSwgMTQxLCAyMjAsIDEzMCwgMjE1LCAxMTksIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjMyLCAxNDYsIDIyNywgMjQ5LCAyMCwgMSwgMjI1LCAxNDEsIDIzMSwgMTMwLCAyMzEsIDIyNiwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMzQsIDkzLCAyMCwgMSwgMjI1LCAxNDEsIDIxMSwgMTUsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMjUsIDIwLCAxLCAyMjUsIAotICAgIDE0MSwgMjM0LCAyNDMsIDIwLCAxLCAyMjUsIDE0MSwgMjI1LCAyMTEsIDIwLCAxLCAyMjUsIDE0MSwgMjExLCA4OSwgMjMzLCAKLSAgICA1MywgMjAsIDEsIDIyNSwgMTQxLCAyMzMsIDEwOSwgMjI4LCA3LCAyMjcsIDE2NCwgMjAsIDEsIDIyNSwgMTQxLCAyMjcsIAotICAgIDI0NywgMjIwLCA0MCwgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDEyMSwgMjI4LCAxODksIDIwLCAxLCAyMjUsIDE0MSwgMjQyLCAKLSAgICAyMzYsIDIwLCAxLCAyMjUsIDE0MSwgMjI1LCA1MiwgMjAsIDEsIDIyNSwgMTQxLCAyMTUsIDEyMCwgMjI4LCA1LCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIyMCwgNDUsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxNDEsIDIyMCwgNDEsIDIwLCAxLCAyMjUsIDE0MSwgCi0gICAgMjMxLCAyMiwgMjE2LCAyMjAsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMTIsIDIzMSwgMTI2LCAyMCwgMSwgMjI1LCAxNDEsIAotICAgIDIyNywgMTUzLCAyMjcsIDI0OSwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE1MSwgMjAsIDEsIDIyNSwgMTQxLCAyNDIsIDIzNywgCi0gICAgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE0NywgMjAsIDEsIDIyNSwgMTQxLCAyMzMsIDEzNSwgMjAsIDEsIDIyNSwgMTQxLCAKLSAgICAyMjUsIDI1MywgMjAsIDEsIDIyNSwgMTQxLCAyMTMsIDE4MiwgMjAsIDEsIDIyNSwgMTQxLCAyMjksIDE4LCAyMzAsIDUxLCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgNTIsIDIzMSwgMTA4LCAyMCwgMSwgMjI1LCAxNDEsIDIxMSwgMTkzLCAyMCwgMSwgCi0gICAgMjI1LCAxNDEsIDIyMiwgMTMsIDIwLCAxLCAyMjUsIDE0MSwgMjE3LCA5OCwgMjAsIDEsIDIyNSwgMTQxLCAyMzEsIDM0LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgMzcsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCAzOCwgMjMzLCA5MCwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzEsIDI0LCAyMCwgMSwgMjI1LCAxNDEsIDIxOCwgNTMsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAxMTYsIDIwLCAxLCAKLSAgICAyMjUsIDE0MSwgMjMwLCAxMzgsIDIwLCAxLCAyMjUsIDE0MSwgMjI3LCAxNjcsIDIwLCAxLCAyMjUsIDE0MSwgMjI0LCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAzMywgMjI5LCA1NCwgMjAsIDEsIDIyNSwgMTQxLCAyNDQsIDEzNCwgMjAsIDEsIDIyNSwgCi0gICAgMTQxLCAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTQxLCAyNDQsIDE1NSwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDE1OSwgMjAsIAotICAgIDEsIDIyNSwgMTQxLCAyMzEsIDI0NCwgMjI4LCAxNzgsIDIwLCAxLCAyMjUsIDE0MSwgMjMxLCAyNDQsIDIyOCwgMTU0LCAyMCwgCi0gICAgMSwgMjI1LCAxNDEsIDIzMywgMTcsIDIwLCAxLCAyMjUsIDE0MSwgMjI5LCA2MCwgMjAsIDEsIDIyNSwgMTQxLCAyMjgsIDE2LCAKLSAgICAyMCwgMSwgMjI1LCAxNDEsIDE4NiwgMjAsIDEsIDIyNSwgMTQxLCAyMzQsIDgwLCAyMCwgMSwgMjI1LCAxNDEsIDIyOSwgNiwgCi0gICAgMjAsIDEsIDEzNywgMjI5LCAxNywgMjMxLCAyMjQsIDIwLCAxLCAxMzcsIDIyNywgMTIxLCAyMCwgMSwgMTM3LCAyMTAsIAotICAgIDE5NiwgMjAsIDEsIDEzNywgMjEyLCA1MywgMjAsIDEsIDEzNywgMjI5LCA1MywgMjAsIDEsIDEzNywgMjI5LCAxNDIsIDIwLCAKLSAgICAxLCAxMzcsIDIyOSwgMjQsIDIwLCAxLCAxMzcsIDI0MiwgMjQ2LCAyMCwgMSwgMTM3LCAyMzEsIDEyMCwgMjAsIDEsIDEzNywgCi0gICAgMjQzLCA4NCwgMjAsIDEsIDEzNywgMjI3LCAxNDQsIDIzMCwgMTc1LCAyMzEsIDM2LCAyMCwgMSwgMTM3LCAyMjcsIDI0NSwgCi0gICAgMjMxLCAxMTEsIDIwLCAxLCAxMzcsIDIzMSwgMTE3LCAyMCwgMSwgMTM3LCAyMjUsIDU4LCAyMCwgMSwgMTM3LCAyMjksIAotICAgIDEyNywgMjAsIDEsIDEzNywgMjMxLCAxMjgsIDI1MSwgMzcsIDIwLCAxLCAxMzcsIDIzNCwgMTQ5LCAyMCwgMSwgMTM3LCAKLSAgICAyNDIsIDI0NywgMjAsIDEsIDEzNywgMjM0LCAxNTYsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDgxLCAyMCwgMSwgCi0gICAgMTM3LCAyMjcsIDExNSwgMjAsIDEsIDEzNywgMjMxLCAxMDUsIDIwLCAxLCAxMzcsIDIyOCwgMTUsIDIwLCAxLCAxMzcsIAotICAgIDIzMSwgMTExLCAyMCwgMSwgMTM3LCAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI1NSwgMjAsIDEsIDEzNywgMjM1LCAxNiwgCi0gICAgMjAsIDEsIDEzNywgMjIwLCAxMjUsIDIwLCAxLCAxMzcsIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMTcsIDk2LCAyMCwgMSwgCi0gICAgMTM3LCAyMjgsIDE1OCwgMjAsIDEsIDEzNywgMjE2LCA2NywgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgODAsIDIwLCAxLCAKLSAgICAxMzcsIDIyOSwgNDQsIDIyNywgMTY0LCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAyMDQsIDIwLCAKLSAgICAxLCAxMzcsIDIzMSwgMjQ0LCAyMzQsIDE1OCwgMjAsIDEsIDEzNywgMjI3LCAyNTQsIDIwLCAxLCAxMzcsIDIyOSwgMzksIAotICAgIDIwLCAxLCAxMzcsIDIzMywgOTQsIDIwLCAxLCAxMzcsIDIzMSwgMTEzLCAyMCwgMSwgMTM3LCAyMzEsIDEzLCAyMCwgMSwgCi0gICAgMTM3LCAyMjcsIDI0OCwgMjAsIDEsIDEzNywgMjE2LCAyMTYsIDIwLCAxLCAxMzcsIDIyOSwgNDEsIDIwLCAxLCAxMzcsIAotICAgIDI0MywgMjQwLCAyMCwgMSwgMTM3LCAyMjksIDE0MSwgMjAsIDEsIDEzNywgMjI4LCAxNywgMjAsIDEsIDEzNywgMjI4LCAxMywgCi0gICAgMjAsIDEsIDEzNywgMjUxLCAxMTUsIDIwLCAxLCAxMzcsIDIxMywgMTgzLCAyMCwgMSwgMTM3LCAyMzEsIDExOCwgMjAsIDEsIAotICAgIDEzNywgMjIyLCAxNDIsIDIwLCAxLCAxMzcsIDIyOCwgMTg4LCAyMCwgMSwgMTM3LCAyMzMsIDEwOCwgMjAsIDEsIDEzNywgCi0gICAgMjE2LCA2NSwgMjAsIDEsIDEzNywgMjI3LCAyNTUsIDIyOSwgNiwgMjAsIDEsIDEzNywgMjI4LCAxODAsIDIwLCAxLCAxMzcsIAotICAgIDIzNCwgMTYyLCAyMCwgMSwgMTM3LCAyMjksIDQ1LCAyMCwgMSwgMTM3LCAyMzEsIDIxNywgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMDYsIDIwLCAxLCAxMzcsIDIzMiwgMTAzLCAyMCwgMSwgMTM3LCAyMzMsIDE5NSwgMjAsIDEsIDEzNywgMjI4LCAxODYsIAotICAgIDIwLCAxLCAxMzcsIDIyOSwgNiwgMjAsIDEsIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgNDIsIDIwLCAxLCAKLSAgICAxMzcsIDIyOCwgMiwgMjAsIDEsIDEzNywgMjI3LCAyNTAsIDIwLCAxLCAxMzcsIDIzMywgMjA5LCAyMjgsIDE0NCwgMjAsIDEsIAotICAgIDEzNywgMjI4LCAwLCAyMCwgMSwgMTM3LCAyMjksIDE0OSwgMjAsIDEsIDEzNywgMjMxLCAyNDQsIDIyOCwgNSwgMjAsIDEsIAotICAgIDEzNywgMjExLCAxMDMsIDIwLCAxLCAxMzcsIDIyOSwgMTQ4LCAyMCwgMSwgMTM3LCAyMTksIDIyMiwgMjAsIDEsIDEzNywgCi0gICAgMjIwLCAxMjgsIDIwLCAxLCAxMzcsIDIzMSwgMTE0LCAyMCwgMSwgMTM3LCAyMzEsIDIyNCwgMjAsIDEsIDEzNywgMjMxLCAKLSAgICAxMjQsIDIwLCAxLCAxMzcsIDIzNCwgMTUwLCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjM0LCAxNTQsIAotICAgIDIwLCAxLCAxMzcsIDIzMSwgMTI4LCAyMjUsIDEwNiwgMjAsIDEsIDEzNywgMjEwLCAxNzksIDIwLCAxLCAxMzcsIDIyOCwgCi0gICAgMTc2LCAyMCwgMSwgMTM3LCAyMzAsIDIyNSwgMjAsIDEsIDEzNywgMjMwLCAxMDUsIDIwLCAxLCAxMzcsIDIyMCwgMTcsIDIwLCAKLSAgICAxLCAxMzcsIDIzNCwgMTcyLCAyMzMsIDc2LCAyMCwgMSwgMTM3LCAyMzQsIDE3MiwgMjQ0LCAxNjgsIDIwLCAxLCAxMzcsIAotICAgIDIyOSwgNzQsIDIwLCAxLCAxMzcsIDIyOSwgMjAxLCAyMCwgMSwgMTM3LCAyMzIsIDIwNiwgMjAsIDEsIDEzNywgMjI1LCA2OCwgCi0gICAgMjAsIDEsIDEzNywgMjI1LCAyMDIsIDIwLCAxLCAxMzcsIDIxNiwgMjMxLCAyMCwgMSwgMTA3LCAyMzEsIDEwNCwgMjAsIDEsIAotICAgIDEwNywgMjEyLCA1MSwgMjAsIDEsIDEwNywgMjI4LCAxNzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOCwgCi0gICAgMTcyLCAyMCwgMSwgMTA3LCAyMzIsIDI0MSwgMjAsIDEsIDEwNywgMjI4LCAxNzcsIDIwLCAxLCAxMDcsIDIyOCwgMTIsIDIwLCAKLSAgICAxLCAxMDcsIDIyOSwgNTksIDIwLCAxLCAxMDcsIDIyNywgMTY0LCAyMCwgMSwgMTA3LCAyMTEsIDE5NCwgMjAsIDEsIDEwNywgCi0gICAgMjI5LCAxNCwgMjAsIDEsIDEwNywgMjIwLCA2MywgMjAsIDEsIDEwNywgMjI5LCAyNSwgMjAsIDEsIDEwNywgMjM0LCAxNTcsIAotICAgIDIwLCAxLCAxMDcsIDIxNiwgMjE4LCAyMCwgMSwgMTA3LCAyMjAsIDQzLCAyMCwgMSwgMTA3LCAyMjgsIDE4NSwgMjAsIDEsIAotICAgIDEwNywgMjE4LCA1MywgMjAsIDEsIDEwNywgMjM0LCAxNjIsIDIwLCAxLCAxMDcsIDIxMSwgOTEsIDIwLCAxLCAxMDcsIDIzMywgCi0gICAgMjEwLCAyMCwgMSwgMTA3LCAyMjEsIDIzNiwgMjAsIDEsIDEwNywgMjMxLCAyNiwgMjAsIDEsIDEwNywgMjI5LCAxNDAsIDIwLCAKLSAgICAxLCAxMDcsIDIzMSwgMTkzLCAyMCwgMSwgMTA3LCAyMzEsIDMyLCAyMCwgMSwgMTA3LCAyMjAsIDEyNywgMjAsIDEsIDEwNywgCi0gICAgMjExLCAzOSwgMjAsIDEsIDEwNywgMjI4LCAxNzksIDIwLCAxLCAxMDcsIDIzNCwgMTUzLCAyMzEsIDEwNywgMjAsIDEsIAotICAgIDEwNywgMjI5LCAyMSwgMjAsIDEsIDEwNywgMjE1LCAxMTksIDIwLCAxLCAxMDcsIDI0MiwgMjU1LCAyMCwgMSwgMTA3LCAKLSAgICAyMjksIDExLCAyMCwgMSwgMTA3LCAyNDQsIDEzNSwgMjAsIDEsIDEwNywgMjI5LCAxNDQsIDIwLCAxLCAxMDcsIDIzMSwgNSwgCi0gICAgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCAxMjYsIDIwLCAxLCAxMDcsIDIzMCwgMTUyLCAyMCwgMSwgCi0gICAgMTA3LCAyMzEsIDksIDIwLCAxLCAxMDcsIDIyNCwgMTIxLCAyMCwgMSwgMTA3LCAyMzEsIDcsIDIwLCAxLCAxMDcsIDIzMSwgCi0gICAgMjMsIDIwLCAxLCAxMDcsIDIzMiwgODksIDIwLCAxLCAxMDcsIDIyOCwgNCwgMjAsIDEsIDEwNywgMjMxLCAxMjcsIDIwLCAxLCAKLSAgICAxMDcsIDIzMywgMTg2LCAyMCwgMSwgMTA3LCAyMjcsIDE1NSwgMjAsIDEsIDEwNywgMjE2LCAyMjEsIDIwLCAxLCAxMDcsIAotICAgIDIxOSwgMzYsIDIwLCAxLCAxMDcsIDIxMCwgMTc5LCAyMCwgMSwgMTA3LCAyMzQsIDE1NCwgMjAsIDEsIDEwNywgMjIzLCAKLSAgICAxNzMsIDIwLCAxLCAxMDcsIDIxNywgMTEsIDIwLCAxLCAxMDcsIDIyOSwgMjIsIDIwLCAxLCAxMDcsIDIzMSwgMjgsIDIwLCAKLSAgICAxLCAxMDcsIDIyOCwgMywgMjAsIDEsIDEwNywgMjM0LCAxNTIsIDIwLCAxLCAxMDcsIDIyNSwgNjIsIDIwLCAxLCAxMDcsIAotICAgIDIyNSwgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDEzMSwgMjAsIDEsIDEwNywgMjMzLCAxNywgMjAsIDEsIDEwNywgMjI5LCA2MCwgCi0gICAgMjAsIDEsIDEwNywgMjMxLCAyNSwgMjAsIDEsIDEwNywgMjI5LCAzNCwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAKLSAgICAxMDcsIDIyNiwgMjUsIDIwLCAxLCAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0OSwgMjAsIDEsIDEwNywgCi0gICAgMjI3LCAyNDksIDIwLCAxLCAxMDcsIDIxOCwgODIsIDIwLCAxLCAxMDcsIDIzMywgMjE0LCAyMCwgMSwgMTA3LCAyMjksIDQ5LCAKLSAgICAyMCwgMSwgMTA3LCAyMjksIDE5LCAyMCwgMSwgMTA3LCAyMTUsIDEwMywgMjAsIDEsIDEwNywgMjMxLCAzNiwgMjAsIDEsIAotICAgIDEwNywgMjMzLCAyMDQsIDIwLCAxLCAxMDcsIDIyOCwgMSwgMjAsIDEsIDEwNywgMjE2LCAyMTksIDIwLCAxLCAxMDcsIDIzMSwgCi0gICAgMjE5LCAyMCwgMSwgMTA3LCAyMjksIDU4LCAyMCwgMSwgMTA3LCAyMzMsIDEwLCAyMCwgMSwgMTA3LCAyMjksIDQwLCAyMCwgCi0gICAgMSwgMTA3LCAyMjgsIDYsIDIwLCAxLCAxMDcsIDIyOCwgMTU4LCAyMCwgMSwgMTA3LCAyNDIsIDI0MCwgMjAsIDEsIDEwNywgCi0gICAgMjMzLCAyMjMsIDIwLCAxLCAxMDcsIDIyMywgODcsIDIyNiwgMjEzLCAyMCwgMSwgMTA3LCAyMTcsIDg3LCAyMCwgMSwgMTA3LCAKLSAgICAyMTYsIDExLCAyMCwgMSwgMTA3LCAyMjcsIDE1MiwgMjAsIDEsIDEwNywgMjIyLCAyNDIsIDIwLCAxLCAxMDcsIDIzMywgNTUsIAotICAgIDIwLCAxLCAxMDcsIDIzMSwgODQsIDIwLCAxLCAxMDcsIDE5NCwgMjAsIDEsIDEwNywgMjE4LCA1LCAyMCwgMSwgMTA3LCAKLSAgICAyMzAsIDEwNywgMjAsIDEsIDEwNywgMjIwLCAyOSwgMjAsIDEsIDEwNywgMjIwLCAzOSwgMjAsIDEsIDEwNywgMjMzLCAxNjEsIAotICAgIDIwLCAxLCAxMDcsIDIyNywgMjQyLCAyMCwgMSwgMTA3LCAyMTksIDIyNywgMjAsIDEsIDEwNywgMjI3LCAyNTEsIDIwLCAxLCAKLSAgICAxMDcsIDIyNSwgMjE0LCAyMCwgMSwgMTA3LCAyMjgsIDIzOCwgMjAsIDEsIDEwNywgMjE5LCAyNTQsIDIwLCAxLCAxMDcsIAotICAgIDIyNCwgMTM2LCAyMCwgMSwgMTA3LCAyMzAsIDUxLCAyMCwgMSwgMTA3LCAyMzIsIDEyNSwgMjAsIDEsIDEwNywgMjIzLCA4NywgCi0gICAgMjMwLCAxMDEsIDIwLCAxLCAxMDcsIDIxNiwgMTE4LCAyMCwgMSwgMTA3LCAyMjcsIDI0MywgMjAsIDEsIDEwNywgMjMxLCAKLSAgICAxMjgsIDE5OSwgMjAsIDEsIDEwNywgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDI0NCwgMjAzLCAyMCwgMSwgODIsIDIyOSwgCi0gICAgMTQ4LCAyMCwgMSwgODIsIDIxNiwgMTcsIDIwLCAxLCA4MiwgMjMxLCAxMTcsIDIwLCAxLCA4MiwgMjMzLCA5NCwgMjAsIDEsIAotICAgIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAyMzIsIDEzMSwgMjAsIDEsIDgyLCAyMjYsIDkzLCAyMCwgMSwgODIsIDIxOSwgCi0gICAgNDcsIDIwLCAxLCA4MiwgMjIzLCAxNDgsIDIwLCAxLCA4MiwgMjI4LCA4LCAyMCwgMSwgODIsIDIyOSwgMTE5LCAyMCwgMSwgCi0gICAgODIsIDIyNCwgMTUwLCAyMCwgMSwgODIsIDIxNywgNjMsIDIwLCAxLCA4MiwgMjI5LCAyNywgMjAsIDEsIDgyLCAyMzMsIAotICAgIDI1MSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgMjAsIDEsIDgyLCAyMjEsIDE3MiwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgCi0gICAgODIsIDIyNiwgOTAsIDIwLCAxLCA4MiwgMjE2LCAxOCwgMjAsIDEsIDgyLCAyMzMsIDIwOCwgMjAsIDEsIDgyLCAyMzIsIAotICAgIDE0NSwgMjAsIDEsIDgyLCAyMjgsIDExLCAyMCwgMSwgODIsIDIyOSwgMywgMjAsIDEsIDgyLCAyMzEsIDIyNSwgMjAsIDEsIAotICAgIDgyLCAyMjksIDIwLCAyMCwgMSwgODIsIDIyOSwgMiwgMjAsIDEsIDgyLCAyMjgsIDEwLCAyMCwgMSwgODIsIDIyMiwgMjQwLCAKLSAgICAyMCwgMSwgODIsIDIyOCwgMTc2LCAyMCwgMSwgODIsIDIyNSwgMjEzLCAyMCwgMSwgODIsIDIyMiwgMzMsIDIwLCAxLCA4MiwgCi0gICAgMjI5LCAzNSwgMjAsIDEsIDgyLCAyMzEsIDE1LCAyMCwgMSwgODIsIDI0MiwgMjM0LCAyMCwgMSwgODIsIDIyOSwgMjMsIDIwLCAKLSAgICAxLCA4MiwgMjI4LCAxODcsIDIwLCAxLCA4MiwgMjMxLCAxNzcsIDIwLCAxLCA4MiwgMjMyLCAxMjcsIDIwLCAxLCA4MiwgCi0gICAgMjI5LCA1NSwgMjAsIDEsIDgyLCAyMjksIDEzMiwgMjAsIDEsIDgyLCAyMTcsIDg2LCAyMjcsIDI0OSwgMjAsIDEsIDgyLCAKLSAgICAyMjAsIDEyOSwgMjAsIDEsIDgyLCAyMjQsIDE0NiwgMjAsIDEsIDgyLCAyMjksIDE1MiwgMjE5LCA1MywgMjAsIDEsIDgyLCAKLSAgICAyMjksIDQzLCAyMjcsIDE2NCwgMjAsIDEsIDgyLCAyMTEsIDQsIDIwLCAxLCA4MiwgMjQyLCAyMzUsIDIwLCAxLCA4MiwgCi0gICAgMjE1LCAxMTgsIDIwLCAxLCA4MiwgMjExLCAxOSwgMjAsIDEsIDgyLCAyMjUsIDE5LCAyMCwgMSwgODIsIDIxNSwgMTA4LCAKLSAgICAyMCwgMSwgODIsIDIzNCwgMTYwLCAyMCwgMSwgODIsIDIxOCwgODEsIDIwLCAxLCA4MiwgMjE2LCAyMjAsIDIwLCAxLCA4MiwgCi0gICAgMjEzLCAxODQsIDIwLCAxLCA4MiwgMjEyLCA2LCAyMCwgMSwgODIsIDIzMywgMTM4LCAyMCwgMSwgODIsIDIyNCwgMTUzLCAKLSAgICAyMCwgMSwgODIsIDIxNywgOTcsIDIwLCAxLCA4MiwgMjQyLCAyNTQsIDIwLCAxLCA4MiwgMjI5LCA2NCwgMjAsIDEsIDgyLCAKLSAgICAyMjAsIDQyLCAyMCwgMSwgODIsIDIzMSwgMTAsIDIwLCAxLCA4MiwgMjMxLCAxMjEsIDIwLCAxLCA4MiwgMjI3LCAxMTksIAotICAgIDIwLCAxLCA4MiwgMjI4LCAxNDEsIDIwLCAxLCA4MiwgMjQzLCA4MCwgMjAsIDEsIDgyLCAyMTUsIDEwOSwgMjAsIDEsIDgyLCAKLSAgICAyMzMsIDIxNywgMjAsIDEsIDgyLCAyMTEsIDY3LCAyMCwgMSwgODIsIDIyNywgMTUzLCAyNTAsIDI0LCAyMCwgMSwgODIsIAotICAgIDIxMCwgMjUwLCAyMCwgMSwgODIsIDIzMSwgMjcsIDIwLCAxLCA4MiwgMjI5LCAxMzcsIDIwLCAxLCA4MiwgMjI1LCAxMDMsIAotICAgIDIwLCAxLCA4MiwgMjEwLCAxOTcsIDIwLCAxLCA4MiwgMjMzLCAxMiwgMjAsIDEsIDgyLCAyNDMsIDI0MCwgMjAsIDEsIDgyLCAKLSAgICAyNDMsIDc5LCAyMCwgMSwgODIsIDIyOSwgMTMsIDIwLCAxLCA4MiwgMjM0LCAxNjIsIDIwLCAxLCA4MiwgMjMxLCAyMjgsIAotICAgIDIwLCAxLCA4MiwgMjI5LCAyNiwgMjAsIDEsIDgyLCAyNDIsIDI0MSwgMjAsIDEsIDgyLCAyNDQsIDIwNCwgMjAsIDEsIDgyLCAKLSAgICAyMjcsIDI0NCwgMjAsIDEsIDgyLCAyMjUsIDE1NiwgMjAsIDEsIDgyLCAyMTEsIDE3LCAyMCwgMSwgODIsIDIyOSwgNTEsIAotICAgIDIwLCAxLCA4MiwgMjI3LCAxNTMsIDI1MiwgMzEsIDIwLCAxLCA4MiwgMjI3LCA5OSwgMjAsIDEsIDgyLCAyMjQsIDI1MCwgCi0gICAgMjAsIDEsIDgyLCAyMzAsIDIyNSwgMjAsIDEsIDgyLCAyNDMsIDIzOCwgMjAsIDEsIDgyLCAyMjksIDIyNSwgMjAsIDEsIDgyLCAKLSAgICAyMzAsIDEwNSwgMjAsIDEsIDgyLCAyNDIsIDI0MCwgMjAsIDEsIDgyLCAyNDMsIDI0MiwgNzQsIDIwLCAxLCA4MiwgMjMwLCAKLSAgICA1MiwgMjAsIDEsIDgyLCAyMjQsIDE0OSwgMjAsIDEsIDgyLCAyMjksIDE1LCAyMCwgMSwgODIsIDIzMywgMTk1LCAyMCwgMSwgCi0gICAgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIyNywgMjUyLCAyMCwgMSwgODIsIDIxMSwgMTgsIDIwLCAxLCA4MiwgMjI5LCAKLSAgICAzNiwgMjAsIDEsIDgyLCAyMjYsIDk0LCAyMjUsIDE5MCwgMjAsIDEsIDgyLCAyNDMsIDI0MiwgMjUxLCAyMywgMjAsIDEsIAotICAgIDgyLCAyNDQsIDQ1LCAyMCwgMSwgODIsIDIyOCwgMTgxLCAyMCwgMSwgODIsIDYxLCAyMCwgMSwgODIsIDIxNiwgMTEsIDIwLCAKLSAgICAxLCA4MiwgNzgsIDIwLCAxLCA4MiwgNzQsIDIwLCAxLCA4MiwgMjMzLCA5MiwgMjAsIDEsIDgyLCAyMjYsIDk0LCAyMjUsIAotICAgIDI2LCAyMCwgMSwgODIsIDIxNywgMTAyLCAyMCwgMSwgODIsIDIxNywgNTIsIDIwLCAxLCA4MiwgMjI5LCAxNTIsIDIzMCwgCi0gICAgMzksIDI0MCwgMjQxLCAyMCwgMSwgODIsIDIyMCwgMTcsIDIwLCAxLCA4MiwgMjExLCAxNCwgMjAsIDEsIDgyLCAyMjgsIAotICAgIDI1MiwgMjAsIDEsIDgyLCAyMTAsIDIwMiwgMjAsIDEsIDgyLCAyMTAsIDIyNywgMjE3LCAyNDEsIDIwLCAxLCA4MiwgMjEwLCAKLSAgICAyMjcsIDI0OSwgMTU1LCAyMCwgMSwgODIsIDIxMCwgMTg3LCAyMCwgMSwgODIsIDIxMCwgMTk1LCAyMCwgMSwgODIsIDIzNCwgCi0gICAgMTQ4LCAyMCwgMSwgODIsIDIyNSwgMTU0LCAyMCwgMSwgODIsIDIyOCwgMTgyLCAyNDUsIDExMCwgMjAsIDEsIDgyLCAyMjQsIAotICAgIDE0NywgMjAsIDEsIDgyLCAyMTEsIDE5MiwgMjAsIDEsIDgyLCAyNDQsIDE1NSwgMjAsIDEsIDgyLCAyMTMsIDI1MCwgMjAsIAotICAgIDEsIDgyLCAyMzIsIDEwMywgMjAsIDEsIDgyLCAyMzAsIDIzNSwgMjAsIDEsIDgyLCAyMjMsIDU0LCAyMCwgMSwgODIsIDIyMywgCi0gICAgMTc0LCAyMCwgMSwgODIsIDIyOCwgMjUxLCAyMCwgMSwgODIsIDIyOSwgODIsIDIwLCAxLCA4MiwgMjIwLCA5LCAyMCwgMSwgCi0gICAgODIsIDIxOSwgMjU0LCAyMCwgMSwgODIsIDI0MywgMjQyLCAyMjMsIDg5LCAyMCwgMSwgODIsIDE5OCwgMjAsIDEsIDgyLCAKLSAgICAyMjUsIDExMSwgMjAsIDEsIDgyLCAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMzQsIDM0LCAyMCwgMSwgODIsIDIzMSwgNjMsIAotICAgIDIwLCAxLCA4MiwgMTg2LCAyMCwgMSwgODIsIDIzMSwgMTc0LCAyMCwgMSwgODIsIDIxNiwgMjIyLCAyMCwgMSwgODIsIDIzNCwgCi0gICAgOTgsIDIwLCAxLCA4MiwgMjMwLCAxNTUsIDIwLCAxLCA4MiwgMjE2LCAyNDgsIDIwLCAxLCA4MiwgMjQ0LCAxNzcsIDIwLCAxLCAKLSAgICA4MiwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDE0MCwgMTc2LCAyMCwgMSwgMjI1LCAxNDAsIDY5LCAyMCwgMSwgMjI1LCAxNDAsIAotICAgIDIzMywgMjIzLCAyMCwgMSwgMjI1LCAxNDAsIDI0NSwgMjE3LCAyMCwgMSwgMjI1LCAxNDAsIDIyMywgMTExLCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIxNywgODcsIDIwLCAxLCAyMjUsIDE0MCwgMjI3LCAxNTIsIDIwLCAxLCAyMjUsIDE0MCwgMjMzLCAxNDEsIAotICAgIDIwLCAxLCAyMjUsIDE0MCwgMjIyLCAyNDIsIDIwLCAxLCAyMjUsIDE0MCwgMjIzLCAzMiwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMzEsIDg0LCAyMCwgMSwgMjI1LCAxNDAsIDIxNywgMTAyLCAyMCwgMSwgMjI1LCAxNDAsIDIyOSwgMTUxLCAyMCwgMSwgCi0gICAgMjI1LCAxNDAsIDIyOCwgMTg4LCAyMCwgMSwgMjI1LCAxNDAsIDE5NCwgMjAsIDEsIDIyNSwgMTQwLCAyMTgsIDUsIDIwLCAxLCAKLSAgICAyMjUsIDE0MCwgMjIwLCAyOSwgMjAsIDEsIDIyNSwgMTQwLCAyMTksIDE5MywgMjAsIDEsIDIyNSwgMTQwLCAyMjAsIDEyNSwgCi0gICAgMjAsIDEsIDIyNSwgMTQwLCAyMzMsIDE2MSwgMjAsIDEsIDIyNSwgMTQwLCAyMzQsIDE2MiwgMjAsIDEsIDIyNSwgMTQwLCAKLSAgICAyMjcsIDIxMywgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIDI0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjgsIDE1OSwgMjAsIDEsIAotICAgIDIyNSwgMTQwLCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTQwLCAyMTksIDIyNywgMjAsIDEsIDIyNSwgMTQwLCAxOTIsIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjI4LCAxNCwgMjAsIDEsIDIyNSwgMTQwLCAyMjUsIDE1NCwgMjAsIDEsIDIyNSwgMTQwLCAyMjcsIAotICAgIDI1MSwgMjAsIDEsIDIyNSwgMTQwLCAyMTEsIDE5MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjUsIDIxNCwgMjAsIDEsIDIyNSwgCi0gICAgMTQwLCAyMjIsIDE0MiwgMjAsIDEsIDIyNSwgMTQwLCAyMjgsIDIzOCwgMjAsIDEsIDIyNSwgMTQwLCAyMjMsIDU0LCAyMCwgCi0gICAgMSwgMjI1LCAxNDAsIDIzNCwgMTcxLCAyMCwgMSwgMjI1LCAxNDAsIDIyOSwgMTIsIDIwLCAxLCAyMjUsIDE0MCwgMjI5LCAKLSAgICA2MSwgMjAsIDEsIDIyNSwgMTQwLCAyMjAsIDksIDIwLCAxLCAyMjUsIDE0MCwgMjI0LCAxNTAsIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjQ0LCA0NSwgMjAsIDEsIDIyNSwgMTQwLCAyMTIsIDY1LCAyMCwgMSwgMjI1LCAxNDAsIDIzMiwgMjQ3LCAyMCwgMSwgMjI1LCAKLSAgICAxNDAsIDIzMiwgMTI1LCAyMCwgMSwgMjI1LCAxNDAsIDIzNCwgMzQsIDIwLCAxLCAyMjUsIDE0MCwgMjMxLCAxMTksIDIwLCAKLSAgICAxLCAyMjUsIDE0MCwgMjIzLCA4NiwgMjAsIDEsIDIyNSwgMTQwLCAxODYsIDIwLCAxLCAyMjUsIDE0MCwgMjMwLCAxNjYsIAotICAgIDIwLCAxLCAyMjUsIDE0MCwgMjMxLCAxMjcsIDIwLCAxLCAyMjUsIDE0MCwgMjE2LCAyMzEsIDIwLCAxLCAyMjUsIDE0MCwgCi0gICAgMjM0LCAxLCAyMCwgMSwgMjI1LCAxNDAsIDIyMSwgMjUzLCAyMCwgMSwgMjI1LCAxNDAsIDIxMiwgMTE1LCA5NSwgMSwgMTkxLCAKLSAgICA5NSwgMSwgMjUyLCAxOTksIDk1LCAxLCA4LCAxOTEsIDk1LCAxLCAyMjUsIDQ1LCA5NSwgMSwgMTg2LCA5NSwgMSwgMjMwLCAKLSAgICAyMzgsIDk1LCAxLCAyNTQsIDMxLCAxODYsIDk1LCAxLCAyNDQsIDIwNCwgOTUsIDEsIDIxNCwgMjcsIDk1LCAxLCAyMTMsIAotICAgIDE3NywgOTUsIDEsIDIxNywgMTA2LCA5NSwgMSwgMjQ4LCAyMjksIDk1LCAxLCA4LCAyMTUsIDE1NywgOTUsIDEsIDgsIDIxNywgCi0gICAgMTA2LCA5NSwgMSwgMjE1LCAxNTcsIDk1LCAxLCAyNDgsIDE0MywgOTUsIDEsIDE5OCwgOTUsIDEsIDIyOCwgMjQyLCA5NSwgCi0gICAgMSwgOCwgMjI4LCAxMTUsIDk1LCAxLCAyNTQsIDMxLCAxOTgsIDk1LCAxLCAyMjgsIDExNSwgOTUsIDEsIDIyOCwgMTAxLCAKLSAgICA5NSwgMSwgMjMzLCAxNDEsIDk1LCAxLCAyMzIsIDY2LCA5NSwgMSwgMjMzLCA0LCA5NSwgMSwgMjMyLCAyNDksIDk1LCAxLCAKLSAgICAyMTYsIDU3LCA5NSwgMSwgMjQ3LCAxNjEsIDk1LCAxLCAyMTYsIDQ5LCA5NSwgMSwgMjQ3LCAxNjAsIDk1LCAxLCAxNzYsIAotICAgIDk1LCAxLCAyNDMsIDE0MiwgOTUsIDEsIDgsIDE3NiwgOTUsIDEsIDIyNCwgOTEsIDk1LCAxLCAyMjQsIDY5LCA5NSwgMSwgCi0gICAgMjI5LCA4MiwgOTUsIDEsIDIyOSwgMzMsIDk1LCAxLCAyNTQsIDMxLCAyMjksIDgyLCA5NSwgMSwgMTYyLCA5NSwgMSwgMjExLCAKLSAgICAxNjUsIDk1LCAxLCAyNDMsIDAsIDk1LCAxLCAyNDIsIDIzMywgOTUsIDEsIDIxNSwgMTY2LCA5NSwgMSwgMjQ2LCAzNCwgOTUsIAotICAgIDEsIDIyNywgMTY5LCA5NSwgMSwgMjI3LCAxNTQsIDk1LCAxLCAyMTUsIDE3NiwgOTUsIDEsIDI0NiwgNDEsIDk1LCAxLCA4LCAKLSAgICAyMTUsIDE3NiwgOTUsIDEsIDgsIDI0NiwgNDEsIDk1LCAxLCAyMjMsIDEwOSwgMjE1LCAxNzYsIDk1LCAxLCAyMjAsIDEwNCwgCi0gICAgOTUsIDEsIDIxOCwgMjI1LCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgMTQsIDk1LCAxLCAyMTUsIDE4NCwgOTUsIDEsIAotICAgIDI0NiwgNDYsIDk1LCAxLCA4LCAyMTUsIDE4NCwgOTUsIDEsIDIwNiwgOTUsIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgCi0gICAgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAyNTQsIDMxLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgCi0gICAgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgMSwgMjU0LCAyMTgsIDk1LCAxLCAyNDEsIDE5NiwgCi0gICAgOTUsIDEsIDIyOSwgMTk3LCA5NSwgNSwgMjUzLCAyMzAsIDk1LCA1LCAyMjMsIDEwOSwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIAotICAgIDEwOSwgMjUzLCAyMzAsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgMjU1LCA4MiwgOTUsIDI1LCA1LCAyNTQsIDIxNCwgCi0gICAgOTUsIDI1LCA1LCAyNTQsIDEzMSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCA3OCwgOTUsIDI1LCA1LCAyMjYsIAotICAgIDE4NywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIDk4LCA5NSwgMjUsIDUsIDc2LCA5NSwgMjUsIDUsIAotICAgIDI0NSwgMTU4LCA5NSwgMjUsIDUsIDI0NSwgMTQ2LCA5NSwgMjUsIDUsIDIyNiwgMjM2LCA5NSwgMjUsIDUsIDc0LCA5NSwgCi0gICAgMjUsIDUsIDI0MCwgMTI2LCA5NSwgMjUsIDUsIDI0MCwgMTI1LCA5NSwgMjUsIDUsIDI0MCwgMTI0LCA5NSwgMjUsIDUsIAotICAgIDIzNSwgMTk2LCA5NSwgMjUsIDUsIDIzNiwgNjcsIDk1LCAyNSwgNSwgMjM2LCA0MCwgOTUsIDI1LCA1LCAyMzUsIDE2MiwgCi0gICAgOTUsIDI1LCA1LCAyMzUsIDIzOCwgOTUsIDI1LCA1LCA2OSwgOTUsIDI1LCA1LCAyMTQsIDIyOSwgOTUsIDI1LCA1LCAyMTQsIAotICAgIDIyOCwgOTUsIDI1LCA1LCAyMTQsIDIyNywgOTUsIDI1LCA1LCAyMTQsIDExOCwgOTUsIDI1LCA1LCAyMTQsIDIxMSwgOTUsIAotICAgIDI1LCA1LCAyMTQsIDE3OCwgOTUsIDI1LCA1LCAyMTEsIDExNywgOTUsIDI1LCA1LCAyMTEsIDgsIDk1LCAyNSwgNSwgMjU0LCAKLSAgICAyNTIsIDk1LCAyNSwgNSwgMjU0LCAyNDgsIDk1LCAyNSwgNSwgMjQ1LCA5NCwgOTUsIDI1LCA1LCAyMjIsIDE4NSwgMjQ1LCAKLSAgICA5NCwgOTUsIDI1LCA1LCAyNDUsIDEwMCwgOTUsIDI1LCA1LCAyMjIsIDE4NSwgMjQ1LCAxMDAsIDk1LCAyNSwgNSwgMjU0LCAKLSAgICAyMTAsIDk1LCAyNSwgNSwgMjQ1LCAyMDMsIDk1LCAyNSwgNSwgMjUzLCAyMDAsIDk1LCAyNSwgNSwgMjI2LCAxMzgsIDk1LCAKLSAgICAyNSwgNSwgMjMwLCAzMCwgOTUsIDI1LCA1LCAyMjksIDg0LCA5NSwgMTM4LCAyMjIsIDI1NCwgOTUsIDEzOCwgMjE2LCAxNSwgCi0gICAgMjIyLCAyNTQsIDk1LCAxMzgsIDQ4LCA5NSwgMTM4LCA1MSwgOTUsIDEsIDIxNiwgMjksIDk1LCAxLCAyMTYsIDI4LCA5NSwgCi0gICAgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgMSwgMjE2LCAyNCwgOTUsIDEsIDIxNiwgCi0gICAgMjMsIDk1LCAxLCAyMjMsIDEwOSwgMjE2LCAzMCwgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI5LCA5NSwgMSwgMjIzLCAxMDksIAotICAgIDIxNiwgMjcsIDk1LCAxLCAyMjMsIDEwOSwgMjE2LCAyNiwgOTUsIDEsIDIyMywgMTA5LCAyMTYsIDI1LCA5NSwgMSwgMjIzLCAKLSAgICAxMDksIDIxNiwgMjMsIDU2LCAxLCAyNTQsIDMxLCA3NiwgMTQxLCAxLCAyNTQsIDMxLCAyMTEsIDQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyMjQsIDE1NywgNDksIDI4LCAxNiwgMjQ4LCAxNjYsIDQ5LCAyOCwgMTYsIDIyNSwgMTc4LCA0OSwgMjgsIDE2LCAyMjYsIAotICAgIDExNywgMjQ1LCAxODYsIDQ5LCAyOCwgMTYsIDIyNiwgMTE3LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjE0LCAxNiwgMjQ1LCAKLSAgICAxODYsIDQ5LCAyOCwgMTYsIDIxNCwgMTYsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMzQsIDIwMywgNDksIDI4LCAxNiwgCi0gICAgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDIyNiwgMTMsIDQ5LCAyOCwgMTYsIDIxMCwgMjE3LCA0OSwgMjgsIDE2LCAyMTAsIAotICAgIDIxOCwgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDIzMywgMjQwLCA0OSwgMjgsIDE2LCAyNTQsIDc2LCAyNDUsIDE4NiwgNDksIAotICAgIDI4LCAxNiwgMjQ1LCAzNCwgMjQ1LCAxODYsIDQ5LCAyOCwgMTYsIDIxNywgMywgNDksIDI4LCAxNiwgMjM0LCAxNjcsIDQ5LCAKLSAgICAyOCwgMTYsIDI1NCwgNjYsIDQ5LCAyOCwgMTYsIDI1NCwgNjcsIDI0NywgMjA5LCA0OSwgMjgsIDE2LCAyMTcsIDE3NiwgNDksIAotICAgIDI4LCAxNiwgMjE2LCAxNjAsIDQ5LCAyOCwgMTYsIDIyNiwgMjEwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyNDIsIDE2NiwgCi0gICAgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjI0LCAxNTYsIDQ5LCAyOCwgMTYsIDI1MCwgMTU3LCA0OSwgMjgsIDE2LCAyMTQsIDYsIAotICAgIDQ5LCAyOCwgMTYsIDIzNSwgMTcwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzQsIDE2OSwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCAxNjgsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIyMSwgMjE1LCA0OSwgMjgsIDE2LCAyMjYsIDQsIDQ5LCAyOCwgMTYsIAotICAgIDIxOCwgMTQ4LCAyNTQsIDY5LCA0OSwgMjgsIDE2LCAyMjYsIDExNiwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjE0LCAxNSwgCi0gICAgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjU0LCA3MCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjU0LCA2NCwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCA0MywgNDksIDI4LCAxNiwgMjIzLCA0OSwgNDksIDI4LCAxNiwgMjI1LCAxMDksIDI1NCwgMjksIDQ5LCAyOCwgMTYsIAotICAgIDIxNiwgODQsIDQ5LCAyOCwgMTYsIDI1NCwgMTI5LCA0OSwgMjgsIDE2LCAyMjEsIDE2MSwgNDksIDI4LCAxNiwgMjE3LCAKLSAgICAxNzksIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIxNywgMTc5LCAyMzEsIDQ1LCAyMTgsIDE0NiwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxMTEsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIxNiwgMTkxLCA0OSwgMjgsIDE2LCAyMzMsIDMzLCA0OSwgMjgsIDE2LCAyNDYsIAotICAgIDQ5LCA0OSwgMjgsIDE2LCAyMTUsIDIyOCwgNDksIDI4LCAxNiwgMjE2LCAyMzMsIDQ5LCAyOCwgMTYsIDIzMywgMjQzLCA0OSwgCi0gICAgMjgsIDE2LCAyNTQsIDc2LCAyNDUsIDM0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI1NCwgMjksIDQ5LCAKLSAgICAyOCwgMTYsIDIzNiwgMTksIDQ5LCAyOCwgMTYsIDIxNSwgMjAwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzQsIDIwNiwgCi0gICAgMjE1LCAxOTksIDQ5LCAyOCwgMTYsIDIyNSwgMjAzLCA0OSwgMjgsIDE2LCAyMjQsIDE2MSwgNDksIDI4LCAxNiwgMjM0LCAKLSAgICAxNywgNDksIDI4LCAxNiwgMjUwLCA4OCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgMjIzLCAxNDksIDQ5LCAyOCwgMTYsIDIyNiwgCi0gICAgMTYsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDIyNiwgMTQsIDI1NCwgMjksIDQ5LCAyOCwgMTYsIDI0MCwgMTE2LCA0OSwgMjgsIAotICAgIDE2LCAyMjksIDIwOCwgNDksIDI4LCAxNiwgMjI1LCAxNTksIDQ5LCAyOCwgMTYsIDIzNCwgMTgsIDI1NCwgMTU4LCA0OSwgCi0gICAgMjgsIDE2LCAyMTUsIDIwMCwgMjU0LCAxNTgsIDQ5LCAyOCwgMTYsIDIxOCwgMTI1LCA0OSwgMjgsIDE2LCAyNDIsIDEzMCwgCi0gICAgNDksIDI4LCAxNiwgMjM1LCAxNzAsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMjYsIDIxMCwgMjI5LCAxMDAsIDQ5LCAyOCwgCi0gICAgMTYsIDIyNiwgMTE3LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI1LCAxNTgsIDQ5LCAyOCwgMTYsIDIzNCwgNCwgNDksIDI4LCAKLSAgICAxNiwgMjI1LCAxNTcsIDQ5LCAyOCwgMTYsIDIzMywgMjQyLCA0OSwgMjgsIDE2LCAyMjUsIDIwNCwgMjI5LCAxMDAsIDQ5LCAKLSAgICAyOCwgMTYsIDIzNCwgMTY4LCAyMjksIDEwMSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAyMjksIDEwMSwgCi0gICAgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDIxMCwgMjE1LCA0OSwgMjgsIDE2LCAyNTQsIDY3LCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjU0LCA2OCwgMjE3LCAxNzcsIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgNDksIDI4LCAxNiwgMjMzLCAKLSAgICAyNDEsIDQ5LCAyOCwgMTYsIDI0NSwgMTgxLCA0OSwgMjgsIDE2LCAyNTAsIDE1OCwgNDksIDI4LCAxNiwgMjMwLCAyMDMsIAotICAgIDIzNSwgMTY5LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI1LCAxMDksIDIyOSwgMTAwLCAKLSAgICA0OSwgMjgsIDE2LCAyMjQsIDE2MiwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIyNiwgMjA3LCA0OSwgMjgsIDE2LCAyNTQsIAotICAgIDkyLCA0OSwgMjgsIDE2LCAyMzIsIDYzLCA0OSwgMjgsIDE2LCAyMjYsIDE0LCAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjI2LCAKLSAgICAxNiwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI0NSwgNjgsIDIyNiwgMTUsIDQ5LCAyOCwgMTYsIDIzMywgMTU5LCA0OSwgMjgsIAotICAgIDE2LCAyNTQsIDkzLCA0OSwgMjgsIDE2LCAyMTUsIDIwMCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTg0LCA0OSwgCi0gICAgMjgsIDE2LCAyMTcsIDE3OSwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDIxNywgMTcxLCA0OSwgMjgsIDE2LCAyNTAsIDg4LCAKLSAgICAyMjksIDEwMCwgNDksIDI4LCAxNiwgMjQ1LCAxMTQsIDQ5LCAyOCwgMTYsIDIyMSwgMTYyLCAyMjksIDEwMCwgNDksIDI4LCAKLSAgICAxNiwgMjExLCAxNTEsIDIzNCwgNDMsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIDE2MywgNDksIAotICAgIDI4LCAxNiwgMjE1LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMTk4LCA0OSwgMjgsIDE2LCAyMjQsIDE2MCwgNDksIDI4LCAxNiwgCi0gICAgMjE1LCAxOTYsIDQ5LCAyOCwgMTYsIDIyNCwgMTU5LCA0OSwgMjgsIDE2LCAyNDIsIDE2NSwgNDksIDI4LCAxNiwgMjU0LCAKLSAgICAyMiwgNDksIDI4LCAxNiwgMjQ1LCA2OCwgMjU0LCAyMiwgNDksIDI4LCAxNiwgMjI2LCAxMTEsIDIyOSwgMTAwLCA0OSwgMjgsIAotICAgIDE2LCAyMTYsIDE5MCwgMjQ1LCA3NywgNDksIDI4LCAxNiwgMjE2LCAxOTAsIDI0NSwgMzMsIDQ5LCAyOCwgMTYsIDIxNiwgCi0gICAgMTkyLCAyNTQsIDcxLCA0OSwgMjgsIDE2LCAyMTYsIDE4NSwgMjM0LCAyNTMsIDI1NCwgNjMsIDQ5LCAyOCwgMTYsIDIzNCwgCi0gICAgMjA1LCA0OSwgMjgsIDE2LCAyNDUsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMSwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIAotICAgIDIxMSwgMTEsIDI1NCwgMTA0LCA0OSwgMjgsIDE2LCAyMTgsIDE0NywgNDksIDI4LCAxNiwgMjM0LCA0NCwgMjU0LCAxMDQsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjEwLCAyNTQsIDI5LCA0OSwgMjgsIDE2LCAyMzMsIDI0NCwgMjU0LCAyOSwgNDksIDI4LCAxNiwgCi0gICAgMjMzLCAyNDQsIDI1NCwgMTU4LCA0OSwgMjgsIDE2LCAyMzMsIDI0NCwgMjI5LCAxMDAsIDQ5LCAyOCwgMTYsIDI1NCwgNzAsIAotICAgIDIyOSwgMTAwLCA0OSwgMjgsIDE2LCAyNTQsIDcyLCA0OSwgMjgsIDE2LCAyNDcsIDIwOSwgNDksIDI4LCAxNiwgMjE1LCAKLSAgICAyMTEsIDQ5LCAyOCwgMTYsIDIxNiwgMjI1LCA0OSwgMjgsIDE2LCAyMzQsIDgsIDQ5LCAyOCwgMTYsIDIzMywgMzgsIDI0NSwgCi0gICAgMTQyLCAyNTAsIDc5LCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAyNDYsIDUwLCAyNTAsIDgwLCA0OSwgMjgsIDE2LCAyMzMsIDM4LCAKLSAgICAyMTUsIDIxMywgMjUwLCA4MCwgNDksIDI4LCAxNiwgMjMzLCAzOCwgMjE2LCAyMzUsIDI1MCwgODAsIDQ5LCAyOCwgMTYsIAotICAgIDIzMywgMzgsIDIzNiwgMTQsIDI1MCwgNzksIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAyMjksIDEwMSwgMjU0LCAxMDQsIDQ5LCAKLSAgICAyOCwgMTYsIDI0MiwgMTY2LCAyMjYsIDUsIDI1NCwgMTgsIDQ5LCAyOCwgMTYsIDI0MiwgMTY2LCAyMjYsIDUsIDI0OCwgMzcsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMzLCA0OSwgMjgsIDE2LCAyNDcsIDIzNCwgMjI2LCA1LCAyNTQsIDE5LCAyMzQsIDIwMiwgCi0gICAgNDksIDI4LCAxNiwgMjQ3LCAyMzQsIDIyNiwgNSwgMjU0LCAxOSwgMjU0LCAxMDQsIDQ5LCAyOCwgMTYsIDI0NywgMjM0LCAKLSAgICAyMjYsIDUsIDI0OCwgMzcsIDQ5LCAyOCwgMTYsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyNTQsIDIzLCA0OSwgMjgsIDE2LCAKLSAgICAyMzYsIDIxLCA0OSwgMjgsIDE2LCAyNDcsIDI1NCwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDIyNSwgMywgMjU0LCAyNCwgNDksIAotICAgIDI4LCAxNiwgMjU0LCAyMjAsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAyNTQsIDI0LCA0OSwgMjgsIDE2LCAKLSAgICAyNTQsIDIyMCwgMjMxLCAzOSwgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDIzMSwgNTAsIDQ5LCAyOCwgMTYsIDI1NCwgMjIwLCAKLSAgICAyNDIsIDE2NywgNDksIDI4LCAxNiwgMjU0LCAyMjAsIDI0MiwgMTY0LCA0OSwgMjgsIDE2LCAyNTQsIDIyMCwgMjI1LCAzLCAKLSAgICAyNDIsIDE2NywgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIyNCwgMTY4LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDI1NCwgMTYwLCAyMjQsIDE2OCwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyNDgsIDM2LCAyNDAsIDExNCwgCi0gICAgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDI1NCwgMTYwLCAyNDgsIDM2LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIAotICAgIDIxNSwgMjA2LCAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjMxLCAxNTYsIDIxNSwgMjE4LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgCi0gICAgMjE2LCAyMjksIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE2LCAyMjksIDIzMywgNDEsIDI0MCwgMTE0LCAKLSAgICA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjMzLCA0MSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMjUsIDQyLCAKLSAgICAyNDAsIDExNCwgNDksIDI4LCAxNiwgMjM1LCAxNzYsIDIxNiwgMjUyLCAyNDAsIDExNSwgNDksIDI4LCAxNiwgMjU0LCA2OCwgCi0gICAgMjE2LCAyNTIsIDI0MCwgMTE1LCA0OSwgMjgsIDE2LCAyNDQsIDE4MCwgMjE2LCAyMjYsIDQ5LCAyOCwgMTYsIDI0NCwgMTgwLCAKLSAgICAyMzAsIDE0OCwgNDksIDI4LCAxNiwgMjQ0LCAxODAsIDI0NywgMjM4LCA0OSwgMjgsIDE2LCAyMzEsIDE1NiwgMjE0LCAxMCwgCi0gICAgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAyMjQsIDE2NywgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDIzMSwgMTU2LCAKLSAgICAyMjUsIDQyLCAyMTYsIDIyOSwgMjQwLCAxMTQsIDQ5LCAyOCwgMTYsIDI0MiwgMTYyLCAyMzAsIDMxLCAyNTQsIDcxLCA0OSwgCi0gICAgMjgsIDE2LCAyNDIsIDE2MiwgMjMwLCAzMSwgMjQ3LCAyMDgsIDQ5LCAyOCwgMTYsIDI0NSwgMTU2LCAyMzQsIDI1MywgMjQzLCAKLSAgICAyNDMsIDIxMywgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDIwLCA0OSwgMjgsIDE2LCAyMzYsIDE4LCA0OSwgMjgsIDE2LCAyNDMsIAotICAgIDI0MywgMjU0LCAzMCwgMjQ4LCAzNSwgMjQwLCAxMTMsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMTkxLCA0OSwgCi0gICAgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIDIyOSwgMjA4LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjI5LCAyMDMsIAotICAgIDI0MCwgMTE0LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjQ3LCAyNTIsIDI0OCwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAKLSAgICAyMTksIDEwNCwgMjQ3LCAyNTEsIDI0OCwgMTEsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjM0LCAxODgsIAotICAgIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjEwLCAyMywgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NywgMjUyLCAKLSAgICAyMjgsIDIzOSwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIDI0MywgMjQzLCAyNDcsIDI1MiwgMjI4LCAyMzksIDI1NCwgMTA0LCAKLSAgICA0OSwgMjgsIDE2LCAyNDMsIDI0MywgMjMxLCAxOTYsIDI1MCwgODEsIDI0NywgMjM4LCA0OSwgMjgsIDE2LCAyNDMsIDI0MywgCi0gICAgMjMxLCAxOTYsIDI1MCwgODEsIDIzMCwgMTQ4LCA0OSwgMjgsIDE2LCAyNDQsIDEzMCwgMjE5LCAxMDQsIDI1MCwgODEsIAotICAgIDIxNCwgOSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDIxOSwgMTA0LCAyNTAsIDgxLCAyMTcsIDE4MCwgNDksIDI4LCAxNiwgCi0gICAgMjQzLCAyNDMsIDIyOSwgMTAyLCA0OSwgMjgsIDE2LCAyNTAsIDgyLCAyMDksIDI0OSwgNDksIDI4LCAxNiwgMjUwLCA4MiwgCi0gICAgMjM0LCA0MiwgNDksIDI4LCAxNiwgMjUwLCA4MiwgMjE5LCAxMSwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0MCwgMTYxLCAKLSAgICAyMTEsIDEwLCAyMTYsIDIzMCwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDI0NSwgMTU3LCAyNTQsIDk0LCA0OSwgMjgsIDE2LCAKLSAgICAyMTEsIDEwLCAyMTUsIDIwNywgNDksIDI4LCAxNiwgMjQ3LCAyNDYsIDIxNSwgMjA3LCA0OSwgMjgsIDE2LCAyNDcsIDI0NiwgCi0gICAgMjE2LCAyMzAsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNTQsIDczLCAyNDYsIDUwLCAyNDcsIDE0NywgNDksIDI4LCAxNiwgCi0gICAgMjQ3LCAyNDYsIDIzMCwgMTQ2LCAyMTYsIDIzNCwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyNDcsIDIzMCwgCi0gICAgMjQ1LCA0NCwgMjQ3LCAxNDcsIDQ5LCAyOCwgMTYsIDI0NywgMjQ2LCAyMTUsIDIxNSwgMjI2LCAyMTUsIDI0NywgMTQ3LCAKLSAgICA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyNTQsIDczLCAyNDYsIDUwLCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMCwgCi0gICAgMjMwLCAxNDYsIDIxNiwgMjM0LCAyNDcsIDE0NywgNDksIDI4LCAxNiwgMjExLCAxMCwgMjQ3LCAyMzAsIDI0NSwgNDQsIAotICAgIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAyMTEsIDEwLCAyMTUsIDIxNSwgMjI2LCAyMTUsIDI0NywgMTQ3LCA0OSwgMjgsIDE2LCAKLSAgICAyNDMsIDU2LCAyNDcsIDI0NSwgNDksIDI4LCAxNiwgMjQzLCA1NiwgMjExLCA5LCA0OSwgMjgsIDE2LCAyNDcsIDI1MywgCi0gICAgMjU0LCA3MywgMjMwLCAyMDQsIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAyNTQsIDczLCAyMzEsIDc4LCA0OSwgMjgsIDE2LCAKLSAgICAyNDcsIDI1MywgMjQ3LCAyMDksIDQ5LCAyOCwgMTYsIDI0NywgMjUzLCAyMTYsIDE4MywgNDksIDI4LCAxNiwgMjE5LCAxNjUsIAotICAgIDIxNiwgMTgzLCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgMjE2LCAxODQsIDI0NywgMTk0LCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgCi0gICAgMjE2LCAxODQsIDIxNSwgMjA4LCA0OSwgMjgsIDE2LCAyMTksIDE2NSwgMjE2LCAxODQsIDIxNiwgMjIzLCA0OSwgMjgsIDE2LCAKLSAgICAyMTksIDE2NSwgMjUzLCAyNTIsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyNTMsIDI1MywgMjQ3LCAxOTQsIDQ5LCAyOCwgMTYsIAotICAgIDIxOSwgMTY1LCAyNTMsIDI1MywgMjE1LCAyMDgsIDQ5LCAyOCwgMTYsIDIxOSwgMTY1LCAyNTMsIDI1MywgMjE2LCAyMjMsIAotICAgIDQ5LCAyOCwgMTYsIDI0NywgMjMxLCAyNDMsIDM3LCA0OSwgMjgsIDE2LCAyNDcsIDIzNywgMjI2LCAxMzgsIDQ5LCAyOCwgCi0gICAgMTYsIDIxOCwgMTM5LCA0OSwgMjgsIDE2LCAyNTQsIDE1LCAxOTEsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDIxMywgMTI0LCAKLSAgICA0OSwgMjgsIDE2LCAyNTQsIDE1LCAyNDMsIDE0MiwgNDksIDI4LCAxNiwgMjU0LCAxNSwgMjQ4LCAxMSwgNDksIDI4LCAxNiwgCi0gICAgMjU0LCAxNSwgMjM0LCAxODgsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI1NCwgMTUsIAotICAgIDIyOCwgMjM4LCA0OSwgMjgsIDE2LCAyMzQsIDE2OCwgMjI5LCAxMDEsIDIzMSwgNDksIDQ5LCAyOCwgMTYsIDIzNCwgMTY5LCAKLSAgICAyMjksIDEwMSwgMjMxLCA0OSwgNDksIDI4LCAxNiwgMjM0LCAxNjgsIDIyOSwgMTAxLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgCi0gICAgMjM0LCAxNjksIDIyOSwgMTAxLCAyMzQsIDIwMiwgNDksIDI4LCAxNiwgMjM0LCA0NCwgMjM0LCAyMDIsIDQ5LCAyOCwgMTYsIAotICAgIDI0MiwgMTY2LCAyMjksIDEwMSwgMjM0LCAyMDIsIDI4LCAxNiwgMjE5LCAxNTcsIDI1MiwgMTQzLCAyOCwgMTYsIDUyLCAKLSAgICAyNTIsIDE0MywgMjgsIDE2LCA0MCwgMjUyLCAxNDMsIDI4LCAxNiwgMjIzLCA1MywgNDAsIDI1MiwgMTQzLCAyOCwgMTYsIAotICAgIDI0OCwgMTYzLCAyNTIsIDE0MywgMjgsIDE2LCAyMTksIDI1MywgMjUyLCAxNDMsIDI4LCAxNiwgNDMsIDIyMywgODAsIDUwLCAKLSAgICAyOCwgMTYsIDQ0LCAyMjMsIDgwLCA1MCwgMjgsIDE2LCAyMjMsIDgwLCAyNDcsIDEyNiwgMjgsIDE2LCAyNDgsIDIwNCwgCi0gICAgMjIxLCAxNjUsIDI4LCAxNiwgMjQ4LCAyMzAsIDI1MSwgMSwgMjgsIDE2LCAyMjEsIDE2NSwgMjgsIDE2LCAyNDksIDI0MiwgCi0gICAgMjgsIDE2LCAyMjMsIDc4LCAyNDQsIDExOSwgMjgsIDE2LCAyMjMsIDc4LCAyNDQsIDExOCwgMjgsIDE2LCAyMjMsIDc4LCAKLSAgICAyNDQsIDExNywgMjgsIDE2LCAyNDQsIDEzOSwgMjgsIDE2LCAyNDQsIDE0MCwgNTEsIDI4LCAxNiwgMjUxLCAxNTYsIDc5LCAKLSAgICAyOCwgMTYsIDI1MSwgMzIsIDI4LCAxNiwgMjUxLCAxNjcsIDI4LCAxNiwgMTI3LCAyOCwgMTYsIDIyNiwgMTk3LCAyMTgsIAotICAgIDE2NSwgMjgsIDE2LCAyMTUsIDU3LCAyMTgsIDE2NSwgMjgsIDE2LCAyMTYsIDE0MywgMjE4LCAxNjUsIDI4LCAxNiwgMjQ0LCAKLSAgICAxOCwgMjE4LCAxNjUsIDI4LCAxNiwgMjQ0LCA4OCwgMjE4LCAxNjUsIDI4LCAxNiwgMjE5LCAxMjYsIDIxOCwgMTY1LCAyOCwgCi0gICAgMTYsIDIxOSwgMTI0LCAyNDQsIDIsIDI4LCAxNiwgMjQ0LCAxNiwgMjQ0LCAyLCAyOCwgMTYsIDI0MywgMjEwLCAyNTAsIDIyLCAKLSAgICAyOCwgMTYsIDI0MywgMjEwLCAyNTAsIDIzLCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjQzLCAyMTAsIDI1MCwgMjMsIAotICAgIDIyNiwgMTQwLCAyNTIsIDEzMCwgMjgsIDE2LCAyNTEsIDc1LCAyNTAsIDIyLCAyOCwgMTYsIDI0NSwgMTUsIDI1MCwgMjIsIAotICAgIDI4LCAxNiwgMjQ1LCAxNSwgMjUwLCAyMywgMjI2LCAxNDAsIDI1NCwgMTUwLCAyOCwgMTYsIDI0NSwgMTUsIDI1MCwgMjMsIAotICAgIDIyNiwgMTQwLCAyNTIsIDEzMCwgMjgsIDE2LCAyNDYsIDkxLCAyNTAsIDIxLCAyOCwgMTYsIDI0NiwgOTEsIDI1MCwgMjAsIAotICAgIDI4LCAxNiwgMjMwLCA5MCwgMjMxLCA5NSwgMjIzLCA2NCwgMjgsIDE2LCA1MiwgMjIwLCA3NywgMjgsIDE2LCA1MiwgMjQ0LCAKLSAgICA3MywgMjgsIDE2LCAyNDQsIDc0LCAyMTQsIDE2MywgMjgsIDE2LCAyNDQsIDc0LCAyNDYsIDExNCwgMjgsIDE2LCAyMjksIAotICAgIDE5MywgMjE0LCAxNjMsIDI4LCAxNiwgMjI5LCAxOTMsIDI0NiwgMTE0LCAyOCwgMTYsIDIyMCwgNzgsIDIxNCwgMTYzLCAyOCwgCi0gICAgMTYsIDIyMCwgNzgsIDI0NiwgMTE0LCAyOCwgMTYsIDIyNCwgMjUsIDEzOCwgMjIwLCA3NywgMjgsIDE2LCAyMjQsIDI1LCAKLSAgICAxMzgsIDI0NCwgNzMsIDI4LCAxNiwgMjQ5LCAyMjQsIDIxNiwgODgsIDI4LCAxNiwgMjQ5LCA5MywgMjE2LCA4OCwgMjgsIAotICAgIDE2LCAyMjYsIDE0MCwgMjU0LCAxNTAsIDI4LCAxNiwgMjI2LCAxNDAsIDI1MiwgMTMwLCAyOCwgMTYsIDIyNCwgNywgMjU0LCAKLSAgICAxNTAsIDI4LCAxNiwgMjI0LCA3LCAyNTIsIDEzMCwgMjgsIDE2LCAyMzAsIDkzLCAyMjMsIDY0LCAyOCwgMTYsIDIxMSwgCi0gICAgMjUxLCAyMjMsIDY0LCAyOCwgMTYsIDE2MywgMjIzLCA2NCwgMjgsIDE2LCAyMjQsIDI1LCAyMjMsIDY0LCAyOCwgMTYsIAotICAgIDI0NSwgMTk3LCAyMjMsIDY0LCAyOCwgMTYsIDIxOSwgMTIwLCAyMjMsIDY0LCAyOCwgMTYsIDIxNiwgMTYxLCAyMjMsIDY0LCAKLSAgICAyOCwgMTYsIDIxOSwgMTEyLCAyMjMsIDY0LCAyOCwgMTYsIDEyMywgMjQwLCAyMTgsIDIxNSwgNzEsIDIyMywgNjQsIDI4LCAKLSAgICAxNiwgMjExLCAxNzksIDIyOCwgNDgsIDI4LCAxNiwgOTYsIDIyOCwgNDgsIDI4LCAxNiwgMjUwLCA0NCwgMjExLCAxNzksIAotICAgIDIyOCwgNDgsIDI4LCAxNiwgNDIsIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIDQyLCAyMjgsIDQ5LCAyNTEsIDIyOSwgCi0gICAgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCAKLSAgICAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgNDMsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIAotICAgIDQ5LCA0MywgMjUxLCAyMjksIDI4LCAxNiwgMjE1LCAyMjcsIDIyOCwgNDksIDQ0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIAotICAgIDIyNywgMjI4LCA0OSwgNDQsIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjQsIDIxMSwgMjUzLCAyOCwgCi0gICAgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjQsIDI1MSwgMjI5LCAyOCwgMTYsIDIxNSwgMjI3LCAyMjgsIDQ5LCAxMjAsIDQ0LCAKLSAgICAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNywgMjI4LCA0OSwgMTIwLCA0NCwgMjUxLCAyMjksIDI4LCAxNiwgMjMwLCAxMzQsIAotICAgIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIDIzMCwgMTM0LCAyMjgsIDQ5LCAyNTEsIDIyOSwgMjgsIDE2LCAyMTUsIDIyNCwgCi0gICAgMjI4LCA0OSwgMTI0LCAyMTEsIDI1MywgMjgsIDE2LCAyMTUsIDIyNCwgMjI4LCA0OSwgMTI0LCAyNTEsIDIyOSwgMjgsIDE2LCAKLSAgICAyMjYsIDgsIDIyOCwgNDgsIDI4LCAxNiwgMjEzLCAxMzIsIDIyOCwgNDgsIDI4LCAxNiwgMjI4LCA0OSwgMjUxLCAyMjksIAotICAgIDI4LCAxNiwgMjI3LCAyMDcsIDIyOCwgNDgsIDI4LCAxNiwgMjQ5LCAyNDksIDIyOCwgNDksIDIxMSwgMjUzLCAyOCwgMTYsIAotICAgIDI0OSwgMjQ5LCAyMjgsIDQ5LCAyNTEsIDIyOSwgMjgsIDE2LCAyNTEsIDE1NCwgMjgsIDE2LCAyMTEsIDI1MSwgMjI4LCA1MiwgCi0gICAgMjgsIDE2LCAxNjMsIDIyOCwgNTIsIDI4LCAxNiwgMjI0LCAyNSwgMjI4LCA1MiwgMjgsIDE2LCAyNDUsIDE5NywgMjI4LCAKLSAgICA1MiwgMjgsIDE2LCAyMTksIDEyMCwgMjI4LCA1MiwgMjgsIDE2LCAyMTYsIDE2MSwgMjI4LCA1MiwgMjgsIDE2LCAyMTksIAotICAgIDExMiwgMjI4LCA1MiwgMjgsIDE2LCAxMjMsIDI0MCwgMjE4LCAyMTUsIDcxLCAyMjgsIDUyLCAyOCwgMTYsIDM4LCAyMTgsIAotICAgIDE0MSwgMjgsIDE2LCAzOCwgMjE4LCAyNDIsIDIxOCwgMTQxLCAyOCwgMTYsIDM4LCAyMTUsIDIzNSwgMjgsIDE2LCAzOCwgCi0gICAgMjE1LCAyMzQsIDI4LCAxNiwgMzgsIDIxNSwgMjMzLCAyOCwgMTYsIDI0NCwgMTA5LCAyMTUsIDIzNSwgMjgsIDE2LCAyNDQsIAotICAgIDEwOSwgMjE1LCAyMzQsIDI4LCAxNiwgMjQ0LCAxMDksIDIxNSwgMjMzLCAyOCwgMTYsIDM4LCAyNTMsIDE5NywgMjQ3LCAKLSAgICAxMjgsIDI4LCAxNiwgMzgsIDI0NCwgODAsIDI4LCAxNiwgMzgsIDI0NCwgNzksIDI4LCAxNiwgMzgsIDI0NCwgNzgsIDI4LCAKLSAgICAxNiwgMzgsIDI0NCwgNzcsIDI4LCAxNiwgMzgsIDI0NCwgNzYsIDI4LCAxNiwgMjUyLCA2NiwgMjUyLCA4MiwgMjgsIDE2LCAKLSAgICAyNDUsIDE1MSwgMjUyLCA4MiwgMjgsIDE2LCAyNTIsIDY2LCAyMTYsIDExMiwgMjgsIDE2LCAyNDUsIDE1MSwgMjE2LCAxMTIsIAotICAgIDI4LCAxNiwgMjUyLCA2NiwgMjE5LCA4MiwgMjgsIDE2LCAyNDUsIDE1MSwgMjE5LCA4MiwgMjgsIDE2LCAyNTIsIDY2LCAKLSAgICAyMjUsIDExOCwgMjgsIDE2LCAyNDUsIDE1MSwgMjI1LCAxMTgsIDI4LCAxNiwgMzgsIDI1NSwgMjMsIDI4LCAxNiwgMzgsIAotICAgIDIxOCwgMTY3LCAyOCwgMTYsIDM4LCAyMTYsIDIzOSwgMjgsIDE2LCAzOCwgMjE4LCAxNjgsIDI4LCAxNiwgMzgsIDIzMSwgCi0gICAgMTY3LCAyOCwgMTYsIDM4LCAyMzEsIDE2NiwgMjgsIDE2LCAzOCwgMjU1LCAyMiwgMjgsIDE2LCAzOCwgMjMyLCAxMTgsIDI4LCAKLSAgICAxNiwgMjU0LCA2LCAyMTQsIDE2MywgMjgsIDE2LCAyNTQsIDYsIDI0NiwgMTE0LCAyOCwgMTYsIDM4LCAyNDcsIDE0MywgMjgsIAotICAgIDE2LCAzOCwgMjIyLCAyMzQsIDI4LCAxNiwgMzgsIDI0NCwgNjYsIDI4LCAxNiwgMzgsIDIxOSwgNzgsIDI4LCAxNiwgMzgsIAotICAgIDI1MiwgNDYsIDI4LCAxNiwgMzgsIDUyLCAyMTYsIDIwLCAyOCwgMTYsIDM4LCAyMTUsIDIxMiwgMjE2LCAyMCwgMjgsIDE2LCAKLSAgICAyMjIsIDIzOCwgMjgsIDE2LCAyMTgsIDc2LCAyOCwgMTYsIDIxMCwgMTU5LCAyOCwgMTYsIDIyNSwgMTEwLCAyOCwgMTYsIAotICAgIDIzMSwgMzAsIDI4LCAxNiwgMjQ0LCAyNSwgMjgsIDE2LCAyNDksIDE0NiwgMjgsIDE2LCAyNDgsIDg2LCAyOCwgMTYsIDI0MiwgCi0gICAgMTU3LCAyMjgsIDUzLCAyMTksIDk3LCAyOCwgMTYsIDI0MiwgMTU3LCAyMjgsIDUzLCAyMjgsIDgwLCAyMTksIDk3LCAyOCwgCi0gICAgMTYsIDIxNiwgMSwgMjgsIDE2LCAyMTUsIDk1LCAyOCwgMTYsIDIzNSwgMjAwLCAyMTUsIDk1LCAyOCwgMTYsIDIxNSwgOTYsIAotICAgIDIxOSwgOTcsIDI4LCAxNiwgMjE1LCA5NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgMTA0LCAyOCwgMTYsIAotICAgIDIyNiwgMTUyLCAyMTgsIDEwMSwgMjgsIDE2LCAyMjYsIDE1MiwgMjE4LCAxMDAsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgCi0gICAgOTksIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTgsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTcsIDI4LCAxNiwgMjI2LCAKLSAgICAxNTIsIDIxOCwgOTYsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTUsIDI4LCAxNiwgMjI2LCAxNTIsIDIxOCwgOTQsIDI4LCAKLSAgICAxNiwgMjI2LCAxNTIsIDIxOCwgMTAzLCAyOCwgMTYsIDIyNiwgMTUyLCAyMTgsIDEwMiwgMjgsIDE2LCAyNDEsIDI1MiwgMjgsIAotICAgIDE2LCAyMjksIDExMCwgMjgsIDE2LCAyNDUsIDE1MSwgNjQsIDIxOCwgMTM1LCAyOCwgMTYsIDI0OCwgNzksIDIxOSwgOTcsIAotICAgIDI4LCAxNiwgMzgsIDEyNCwgMjUxLCAxNzcsIDI4LCAxNiwgMzgsIDEyMCwgMjUxLCAxNzcsIDI4LCAxNiwgMzgsIDI0MiwgNywgCi0gICAgMjgsIDE2LCAzOCwgMjE5LCA2OSwgMjI1LCA0NiwgMjgsIDE2LCAyMjUsIDIxOSwgNzksIDI4LCAxNiwgMjI1LCAyMTksIAotICAgIDEyMCwgNzksIDI4LCAxNiwgMTYzLCAyMjUsIDIxOSwgNzksIDI4LCAxNiwgMjQyLCAxODksIDIxNCwgMTYzLCAyOCwgMTYsIAotICAgIDI0MiwgMTg5LCAyNDYsIDExNCwgMjgsIDE2LCAyLCAyNDQsIDEwOCwgMjgsIDE2LCAyNDgsIDE4OCwgMjgsIDE2LCAyNDgsIAotICAgIDE4OSwgMjU0LCAxNjMsIDI4LCAxNiwgMjMxLCAxMzgsIDI4LCAxNiwgMjMyLCAxMzUsIDI4LCAxNiwgMjUxLCAxNTEsIDI4LCAKLSAgICAxNiwgMjIwLCAxNTYsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTU2LCAyNTEsIDIyOSwgMjgsIDE2LCAyMzAsIDE4OSwgMjgsIAotICAgIDE2LCAyMzAsIDE5MCwgMjUxLCAyMjksIDI4LCAxNiwgMjIwLCAxNTAsIDIxMSwgMjUzLCAyOCwgMTYsIDIyMCwgMTUwLCAKLSAgICAyNTEsIDIyOSwgMjgsIDE2LCAyNDMsIDIyNywgMjExLCAyNTMsIDI4LCAxNiwgMjQzLCAyMjcsIDI1MSwgMjI5LCAyOCwgMTYsIAotICAgIDIzMiwgMTM2LCAyMjUsIDE4MywgMjIzLCA2NCwgMjgsIDE2LCAyMzIsIDEzNiwgMjM2LCAxMSwgMjIzLCA2NCwgMjgsIDE2LCAKLSAgICAyNTEsIDE1MiwgMjIzLCA2NCwgMjgsIDE2LCAyMjAsIDE1NiwgMjIzLCA2NCwgMjgsIDE2LCAyMzAsIDE5MCwgMjIzLCA2NCwgCi0gICAgMjgsIDE2LCAyMjAsIDE1MCwgMjIzLCA2NCwgMjgsIDE2LCAyMTYsIDI1MCwgMjI1LCAxODEsIDI0OSwgMTE1LCAyMjQsIAotICAgIDE3NywgMjI1LCAxODIsIDI4LCAxNiwgMjE2LCAyNTAsIDIyNSwgMTgxLCAyNDksIDExNSwgMjI0LCAxNzcsIDIzNiwgMTAsIAotICAgIDI4LCAxNiwgMjE2LCAyNTAsIDIyNSwgMTgxLCAyNDksIDExNSwgMjI0LCAxNzcsIDIyNSwgMTgzLCAyNDcsIDIxOSwgMjgsIAotICAgIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgMjI0LCAxNzcsIDIyNSwgMTgyLCAyOCwgMTYsIDIxNiwgMjUwLCAKLSAgICAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIDE3NywgMjM2LCAxMCwgMjgsIDE2LCAyMTYsIDI1MCwgMjM2LCA5LCAyNDksIDExNSwgCi0gICAgMjI0LCAxNzcsIDIzNiwgMTEsIDI0NywgMjE5LCAyOCwgMTYsIDIxNiwgMjUwLCAyMzYsIDksIDI0OSwgMTE1LCAyMjQsIAotICAgIDE3NywgMjM2LCAxMSwgMjQ3LCAyMTgsIDI4LCAxNiwgMjE2LCAyNTAsIDIzNiwgOSwgMjQ5LCAxMTUsIDIyNCwgMTc3LCAKLSAgICAyMzYsIDExLCAyNDcsIDIxNywgMjgsIDE2LCAyNDksIDE0MSwgMjgsIDE2LCAyNDIsIDEzMywgMjUxLCA3NSwgMjUwLCAyMiwgCi0gICAgMjgsIDE2LCAyNDIsIDEzMywgMjQ1LCAxNSwgMjUwLCAyMiwgMjgsIDE2LCA0MiwgMjUzLCAxNjYsIDI4LCAxNiwgMjEzLCAKLSAgICAxNTEsIDI4LCAxNiwgMjI1LCAxNywgMjgsIDE2LCAyNTAsIDEzLCAyOCwgMTYsIDIyMSwgMjA1LCAyOCwgMTYsIDI1MCwgMTcsIAotICAgIDI4LCAxNiwgMjE2LCA4LCAyOCwgMTYsIDIyNCwgMjQ1LCAyOCwgMTYsIDIyNCwgMjQ2LCAyNDQsIDY4LCAyOCwgMTYsIDIyMSwgCi0gICAgMjA2LCAyNDQsIDY4LCAyOCwgMTYsIDIxNiwgOSwgMjIzLCA2MSwgMjgsIDE2LCAyMjUsIDE2NiwgMjE4LCA2NywgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjMwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTksIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIwOSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjAyLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTQsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDE4OCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTg3LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAxODYsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE4NSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjI5LCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjgsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNywgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMjI2LCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjUsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIyNCwgMjYsIAotICAgIDIxMywgMTM3LCAxODksIDIxNywgMjIzLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMjIsIDI2LCAyMTMsIDEzNywgMTg5LCAKLSAgICAyMTcsIDIyMSwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjIwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAyMTgsIDI2LCAKLSAgICAyMTMsIDEzNywgMTg5LCAyMTcsIDIxNywgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMjE2LCAyNiwgMjEzLCAxMzcsIDE4OSwgCi0gICAgMjE3LCAyMTUsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDIxNCwgMjYsIDIxMywgMTM3LCAxODksIDIxNywgMTkzLCAyNiwgCi0gICAgMjEzLCAxMzcsIDE4OSwgMjE3LCAxOTIsIDI2LCAyMTMsIDEzNywgMTg5LCAyMTcsIDE5MSwgMjYsIDIxMywgMTM3LCAxODksIAotICAgIDIxNywgMTkwLCAyNiwgMjEzLCAxMzcsIDE4OSwgMjE3LCAxODksIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIzMCwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjE5LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDIsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDE5NCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTg3LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxODYsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyOCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjI3LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMjYsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyNSwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjIyLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMjEsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIyMCwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMjE1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTQsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIxMywgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMjEyLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMTEsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDIxMCwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjA4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDcsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwNiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjA1LCAyNiwgMjM1LCAyMjEsIDE4OSwgCi0gICAgMjE3LCAyMDQsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDIwMywgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMjAxLCAyNiwgCi0gICAgMjM1LCAyMjEsIDE4OSwgMjE3LCAyMDAsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5OSwgMjYsIDIzNSwgMjIxLCAxODksIAotICAgIDIxNywgMTk4LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTcsIDI2LCAyMzUsIDIyMSwgMTg5LCAyMTcsIDE5NiwgMjYsIAotICAgIDIzNSwgMjIxLCAxODksIDIxNywgMTk1LCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTMsIDI2LCAyMzUsIDIyMSwgMTg5LCAKLSAgICAyMTcsIDE5MiwgMjYsIDIzNSwgMjIxLCAxODksIDIxNywgMTkxLCAyNiwgMjM1LCAyMjEsIDE4OSwgMjE3LCAxOTAsIDI2LCAKLSAgICAyMzUsIDIyMSwgMTg5LCAyMTcsIDE4OSwgMzgsIDI2LCAyOCwgMjE1LCAyMDksIDM4LCAyNiwgMjgsIDIxNiwgMjI0LCAzOCwgCi0gICAgMjYsIDI4LCAyMjUsIDE5MSwgMjYsIDI4LCAyMzMsIDM3LCAyMzAsIDE0NywgMzEsIDI0NSwgMjMxLCAyNDcsIDIzMiwgMzEsIAotICAgIDI0MSwgMjI5LCAyNDUsIDIzMSwgMjQ3LCAyMzIsIDMxLCAyNDAsIDIyMSwgMjQ1LCAyMzEsIDI0NywgMjMyLCAzMSwgMjQ1LCAKLSAgICAyMzAsIDI0MSwgMjMwLCAyNDcsIDIzMiwgMzEsIDI0NSwgMjMwLCAyNDAsIDIyMCwgMjQ3LCAyMzIsIDMxLCAyNDUsIDIzMSwgCi0gICAgMTgwLCAzMSwgMjUwLCAxODIsIDE4MCwgMzEsIDI0MywgMjM2LCAyNTAsIDQzLCAxODAsIDMxLCAyMzAsIDE4MiwgMTgwLCAKLSAgICAzMSwgMjUyLCAxMzgsIDE4MCwgMzEsIDIzNCwgMTg1LCAyMTksIDgxLCAxODAsIDMxLCAyNDksIDE4NywgMTgwLCAzMSwgCi0gICAgMjUzLCAyNDEsIDE4MCwgMzEsIDIyNiwgMTY3LCAxODAsIDMxLCAyNTEsIDE2MSwgMjI2LCAxMzQsIDE4MCwgMzEsIDI0OCwgCi0gICAgODEsIDE3NywgMjQ3LCAxODcsIDE4MCwgMzEsIDI0NywgMTg0LCAxODAsIDMxLCAyMTAsIDIyMiwgMTgwLCAzMSwgMjM1LCAKLSAgICAyNTQsIDE4MCwgMzEsIDIyNSwgMjAwLCAxODAsIDMxLCAyMjMsIDEzMCwgMTgwLCAzMSwgMjQ5LCAxOTcsIDE4MCwgMzEsIAotICAgIDI0MSwgNjcsIDI1MiwgMTkyLCAxODAsIDMxLCAyMTIsIDU5LCAxODAsIDMxLCAyNDQsIDQ3LCAxODAsIDMxLCAyNTQsIDI1NSwgCi0gICAgMTgwLCAzMSwgMjIzLCA5MiwgMTgwLCAzMSwgMjIzLCA2OCwgMTgwLCAzMSwgMjQ1LCAyMjksIDE4MCwgMzEsIDIzNSwgNTksIAotICAgIDE4MCwgMzEsIDI0OSwgMTkyLCAxODAsIDMxLCAyNDUsIDE1MCwgMTgwLCAzMSwgMjQ2LCA2MCwgMTgwLCAzMSwgMjUwLCAKLSAgICAxNTMsIDE4MCwgMzEsIDI0OCwgOTAsIDE4MCwgMzEsIDIzLCAyMjMsIDY3LCAxODAsIDMxLCAyMjYsIDg1LCAxODAsIDMxLCAKLSAgICAyMzMsIDQwLCAxODAsIDMxLCAyNTAsIDYsIDE4MCwgMzEsIDIzNCwgODMsIDE4MCwgMzEsIDI0MywgOTMsIDE4MCwgMzEsIAotICAgIDIxOCwgMTE0LCAxODAsIDMxLCAyMjQsIDEzMywgMTgwLCAzMSwgMjQzLCAyMzUsIDE4MCwgMzEsIDIyMywgNjksIDE4MCwgCi0gICAgMzEsIDIzMywgNzcsIDE3NywgMjMwLCAxNjIsIDE4MCwgMzEsIDIyMywgNjUsIDE4MCwgMzEsIDI0MiwgMTc1LCAyMTYsIDQzLCAKLSAgICAyMzEsIDgxLCAxODAsIDMxLCAyNDUsIDE1MiwgMTgwLCAzMSwgMjE4LCAxMjYsIDE4MCwgMzEsIDI0MiwgMTM1LCAxODAsIAotICAgIDMxLCAyNDUsIDE0NCwgMTgwLCAzMSwgMjI1LCAyMzksIDE4MCwgMzEsIDIyMiwgMjI4LCAxODAsIDMxLCAyNDQsIDY3LCAKLSAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAyMDEsIDE4MCwgMzEsIDIzMSwgOTQsIDE4MCwgCi0gICAgMzEsIDI0NSwgNjksIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIyMCwgMTgwLCAzMSwgMjUwLCA4LCAyMzAsIAotICAgIDExNSwgMTgwLCAzMSwgMjQyLCAxMTMsIDE4MCwgMzEsIDI0MywgOTQsIDIzNiwgNiwgMTgwLCAzMSwgMjMxLCAxNDYsIDE4MCwgCi0gICAgMzEsIDI1NSwgMTksIDE4MCwgMzEsIDI0NSwgMTY1LCAxODAsIDMxLCAyNDYsIDExNywgMTgwLCAzMSwgMjEyLCA0MiwgMTgwLCAKLSAgICAzMSwgMjE5LCAxNTIsIDE4MCwgMzEsIDIzNSwgMjI5LCAxODAsIDMxLCAyNDgsIDUwLCAxODAsIDMxLCAyNDgsIDE2OCwgCi0gICAgMTgwLCAzMSwgMjQ3LCAyMTYsIDE4MCwgMzEsIDI0NSwgMzcsIDE4MCwgMzEsIDIyMCwgMTE3LCAxODAsIDMxLCAyMTgsIAotICAgIDEzMCwgMTgwLCAzMSwgMjQyLCA5LCAxODAsIDMxLCAyNDksIDIyMCwgMTgwLCAzMSwgMjUwLCAzLCAxODAsIDMxLCAyNDQsIAotICAgIDE4NSwgMTgwLCAzMSwgMjU0LCAyMjEsIDE4MCwgMzEsIDI0OSwgMjE5LCAxODAsIDMxLCAyMjYsIDIwMSwgMjE2LCAxOTcsIAotICAgIDIxMywgMjQyLCAxODAsIDMxLCAyNDcsIDI0MCwgMTgwLCAzMSwgMjMzLCAxMzAsIDE4MCwgMzEsIDI0NCwgMjEsIDI0OSwgCi0gICAgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxMTEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxMDUsIAotICAgIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxNTgsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAKLSAgICAxNjEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxOTAsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIAotICAgIDIxLCAxOTUsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAxOTksIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAKLSAgICAxNzQsIDIxLCAxOTYsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE0LCAxNzQsIDIxLCAyMDEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgCi0gICAgMjE2LCAyNDQsIDIxLCAxMTEsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxMDUsIDI0OSwgMTU3LCAyMjIsIAotICAgIDIwNCwgMjE2LCAyNDQsIDIxLCAxNTgsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxNjEsIDI0OSwgMTU3LCAKLSAgICAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTAsIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTUsIDI0OSwgCi0gICAgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTksIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAxOTYsIAotICAgIDI0OSwgMTU3LCAyMjIsIDIwNCwgMjE2LCAyNDQsIDIxLCAyMDEsIDExLCAyMywgNiwgNjEsIDExLCAyMywgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgNiwgMjUxLCA3NCwgMTEsIDIzLCA2LCAyNDksIDY4LCAxMSwgMjMsIDYsIDc2LCAxMSwgMjMsIDYsIAotICAgIDI0NSwgMTQsIDExLCAyMywgNiwgMjQzLCAyMDksIDExLCAyMywgNiwgMjQyLCA2NywgMTEsIDIzLCA2LCA3NCwgMTEsIDIzLCAKLSAgICA2LCAyMzUsIDE1MCwgMTEsIDIzLCA2LCAyMzUsIDI5LCAxMSwgMjMsIDYsIDE1NiwgMTEsIDIzLCA2LCAxOTQsIDExLCAyMywgCi0gICAgNiwgMjMwLCAzMCwgMTEsIDIzLCA2LCA3OCwgMTEsIDIzLCA2LCAyMjYsIDEwOSwgMTEsIDIzLCA2LCAyMjQsIDk5LCAxMSwgCi0gICAgMjMsIDYsIDE1MywgMTEsIDIzLCA2LCAyMjIsIDkzLCAxMSwgMjMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDYsIDY5LCAxMSwgCi0gICAgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDYsIDIxMiwgOTgsIDExLCAyMywgNiwgMjExLCAxNzgsIDExLCAyMywgNiwgMjExLCAKLSAgICAxMTcsIDExLCAyMywgNiwgMjEwLCAxNTksIDExLCAyMywgNCwgNjEsIDExLCAyMywgNCwgMjUzLCAxNjYsIDExLCAyMywgNCwgCi0gICAgMjUxLCA3NCwgMTEsIDIzLCA0LCAyNDksIDY4LCAxMSwgMjMsIDQsIDc2LCAxMSwgMjMsIDQsIDI0NSwgMTQsIDExLCAyMywgCi0gICAgNCwgMjQzLCAyMDksIDExLCAyMywgNCwgMjQyLCA2NywgMTEsIDIzLCA0LCA3NCwgMTEsIDIzLCA0LCAyMzUsIDE1MCwgMTEsIAotICAgIDIzLCA0LCAyMzUsIDI5LCAxMSwgMjMsIDQsIDE1NiwgMTEsIDIzLCA0LCAxOTQsIDExLCAyMywgNCwgMjMwLCAzMCwgMTEsIAotICAgIDIzLCA0LCA3OCwgMTEsIDIzLCA0LCAyMjYsIDEwOSwgMTEsIDIzLCA0LCAyMjQsIDk5LCAxMSwgMjMsIDQsIDE1MywgMTEsIAotICAgIDIzLCA0LCAyMjIsIDkzLCAxMSwgMjMsIDQsIDIxNywgMTUzLCAxMSwgMjMsIDQsIDY5LCAxMSwgMjMsIDQsIDIxNCwgMTA1LCAKLSAgICAxMSwgMjMsIDQsIDIxMiwgOTgsIDExLCAyMywgNCwgMjExLCAxNzgsIDExLCAyMywgNCwgMjExLCAxMTcsIDExLCAyMywgNCwgCi0gICAgMjEwLCAxNTksIDExLCAzMiwgNiwgNjEsIDExLCAzMiwgNiwgMjUzLCAxNjYsIDExLCAzMiwgNiwgMjUxLCA3NCwgMTEsIDMyLCAKLSAgICA2LCAyNDksIDY4LCAxMSwgMzIsIDYsIDc2LCAxMSwgMzIsIDYsIDI0NSwgMTQsIDExLCAzMiwgNiwgMjQzLCAyMDksIDExLCAKLSAgICAzMiwgNiwgMjQyLCA2NywgMTEsIDMyLCA2LCA3NCwgMTEsIDMyLCA2LCAyMzUsIDE1MCwgMTEsIDMyLCA2LCAyMzUsIDI5LCAKLSAgICAxMSwgMzIsIDYsIDE1NiwgMTEsIDMyLCA2LCAxOTQsIDExLCAzMiwgNiwgMjMwLCAzMCwgMTEsIDMyLCA2LCA3OCwgMTEsIAotICAgIDMyLCA2LCAyMjYsIDEwOSwgMTEsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMzIsIDYsIDE1MywgMTEsIDMyLCA2LCAyMjIsIDkzLCAKLSAgICAxMSwgMzIsIDYsIDIxNywgMTUzLCAxMSwgMzIsIDYsIDY5LCAxMSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzIsIDYsIDIxMiwgCi0gICAgOTgsIDExLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzMiwgNiwgMjExLCAxMTcsIDExLCAzMiwgNiwgMjEwLCAxNTksIDExLCAKLSAgICAzMiwgNCwgNjEsIDExLCAzMiwgNCwgMjUzLCAxNjYsIDExLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDMyLCA0LCAyNDksIDY4LCAKLSAgICAxMSwgMzIsIDQsIDc2LCAxMSwgMzIsIDQsIDI0NSwgMTQsIDExLCAzMiwgNCwgMjQzLCAyMDksIDExLCAzMiwgNCwgNzQsIAotICAgIDExLCAzMiwgNCwgMjM1LCAxNTAsIDExLCAzMiwgNCwgMjM1LCAyOSwgMTEsIDMyLCA0LCAxNTYsIDExLCAzMiwgNCwgMTk0LCAKLSAgICAxMSwgMzIsIDQsIDIzMCwgMzAsIDExLCAzMiwgNCwgNzgsIDExLCAzMiwgNCwgMjI2LCAxMDksIDExLCAzMiwgNCwgMjI0LCAKLSAgICA5OSwgMTEsIDMyLCA0LCAxNTMsIDExLCAzMiwgNCwgMjIyLCA5MywgMTEsIDMyLCA0LCAyMTcsIDE1MywgMTEsIDMyLCA0LCAKLSAgICA2OSwgMTEsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzIsIAotICAgIDQsIDIxMSwgMTE3LCAxMSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCA2LCA2MSwgMTEsIDIzLCAzMiwgNiwgMjUzLCAKLSAgICAxNjYsIDExLCAyMywgMzIsIDYsIDI1MSwgNzQsIDExLCAyMywgMzIsIDYsIDI0OSwgNjgsIDExLCAyMywgMzIsIDYsIDc2LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyNDUsIDE0LCAxMSwgMjMsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDIzLCAzMiwgNiwgMjQyLCA2NywgCi0gICAgMTEsIDIzLCAzMiwgNiwgNzQsIDExLCAyMywgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDMyLCA2LCAyMzUsIDI5LCAxMSwgCi0gICAgMjMsIDMyLCA2LCAxNTYsIDExLCAyMywgMzIsIDYsIDE5NCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAzMCwgMTEsIDIzLCAzMiwgCi0gICAgNiwgNzgsIDExLCAyMywgMzIsIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDk5LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAxNTMsIDExLCAyMywgMzIsIDYsIDIyMiwgOTMsIDExLCAyMywgMzIsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDMyLCA2LCA2OSwgCi0gICAgMTEsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDYsIDIxMiwgOTgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTc4LCAKLSAgICAxMSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNiwgMjEwLCAxNTksIDExLCAyMywgMzIsIDQsIDYxLCAxMSwgCi0gICAgMjMsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDIzLCAzMiwgNCwgMjUxLCA3NCwgMTEsIDIzLCAzMiwgNCwgMjQ5LCA2OCwgMTEsIAotICAgIDIzLCAzMiwgNCwgNzYsIDExLCAyMywgMzIsIDQsIDI0NSwgMTQsIDExLCAyMywgMzIsIDQsIDI0MywgMjA5LCAxMSwgMjMsIAotICAgIDMyLCA0LCAyNDIsIDY3LCAxMSwgMjMsIDMyLCA0LCA3NCwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxNTAsIDExLCAyMywgMzIsIAotICAgIDQsIDIzNSwgMjksIDExLCAyMywgMzIsIDQsIDE1NiwgMTEsIDIzLCAzMiwgNCwgMTk0LCAxMSwgMjMsIDMyLCA0LCAyMzAsIAotICAgIDMwLCAxMSwgMjMsIDMyLCA0LCA3OCwgMTEsIDIzLCAzMiwgNCwgMjI2LCAxMDksIDExLCAyMywgMzIsIDQsIDIyNCwgOTksIAotICAgIDExLCAyMywgMzIsIDQsIDE1MywgMTEsIDIzLCAzMiwgNCwgMjIyLCA5MywgMTEsIDIzLCAzMiwgNCwgMjE3LCAxNTMsIDExLCAKLSAgICAyMywgMzIsIDQsIDY5LCAxMSwgMjMsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNCwgMjEyLCA5OCwgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjExLCAxNzgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIAotICAgIDExOSwgNiwgNjEsIDExLCAxMTksIDYsIDI1MSwgNzQsIDExLCAxMTksIDYsIDI0OSwgNjgsIDExLCAxMTksIDYsIDI0MywgCi0gICAgMjA5LCAxMSwgMTE5LCA2LCAyMzUsIDE1MCwgMTEsIDExOSwgNiwgMjM1LCAyOSwgMTEsIDExOSwgNiwgMjMwLCAzMCwgMTEsIAotICAgIDExOSwgNiwgNzgsIDExLCAxMTksIDYsIDIyNiwgMTA5LCAxMSwgMTE5LCA2LCAyMjQsIDk5LCAxMSwgMTE5LCA2LCAyMjIsIAotICAgIDkzLCAxMSwgMTE5LCA2LCAyMTcsIDE1MywgMTEsIDExOSwgNiwgNjksIDExLCAxMTksIDYsIDIxNCwgMTA1LCAxMSwgMTE5LCAKLSAgICA2LCAyMTIsIDk4LCAxMSwgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDExOSwgNiwgMjExLCAxMTcsIDExLCAxMTksIDYsIDIxMCwgCi0gICAgMTU5LCAxMSwgMTE5LCA0LCA2MSwgMTEsIDExOSwgNCwgMjUzLCAxNjYsIDExLCAxMTksIDQsIDI1MSwgNzQsIDExLCAxMTksIAotICAgIDQsIDI0OSwgNjgsIDExLCAxMTksIDQsIDI0NSwgMTQsIDExLCAxMTksIDQsIDI0MiwgNjcsIDExLCAxMTksIDQsIDc0LCAxMSwgCi0gICAgMTE5LCA0LCAyMzUsIDE1MCwgMTEsIDExOSwgNCwgMjM1LCAyOSwgMTEsIDExOSwgNCwgMTU2LCAxMSwgMTE5LCA0LCAxOTQsIAotICAgIDExLCAxMTksIDQsIDIzMCwgMzAsIDExLCAxMTksIDQsIDIyNiwgMTA5LCAxMSwgMTE5LCA0LCAyMjQsIDk5LCAxMSwgMTE5LCAKLSAgICA0LCAxNTMsIDExLCAxMTksIDQsIDIyMiwgOTMsIDExLCAxMTksIDQsIDIxNywgMTUzLCAxMSwgMTE5LCA0LCA2OSwgMTEsIAotICAgIDExOSwgNCwgMjE0LCAxMDUsIDExLCAxMTksIDQsIDIxMiwgOTgsIDExLCAxMTksIDQsIDIxMSwgMTc4LCAxMSwgMTE5LCA0LCAKLSAgICAyMTEsIDExNywgMTEsIDExOSwgNCwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA2LCA2MSwgMTEsIDIzLCAxMTksIDYsIDI1MywgCi0gICAgMTY2LCAxMSwgMjMsIDExOSwgNiwgMjUxLCA3NCwgMTEsIDIzLCAxMTksIDYsIDI0OSwgNjgsIDExLCAyMywgMTE5LCA2LCAKLSAgICA3NiwgMTEsIDIzLCAxMTksIDYsIDI0NSwgMTQsIDExLCAyMywgMTE5LCA2LCAyNDMsIDIwOSwgMTEsIDIzLCAxMTksIDYsIAotICAgIDI0MiwgNjcsIDExLCAyMywgMTE5LCA2LCA3NCwgMTEsIDIzLCAxMTksIDYsIDIzNSwgMTUwLCAxMSwgMjMsIDExOSwgNiwgCi0gICAgMjM1LCAyOSwgMTEsIDIzLCAxMTksIDYsIDE1NiwgMTEsIDIzLCAxMTksIDYsIDE5NCwgMTEsIDIzLCAxMTksIDYsIDIzMCwgCi0gICAgMzAsIDExLCAyMywgMTE5LCA2LCA3OCwgMTEsIDIzLCAxMTksIDYsIDIyNiwgMTA5LCAxMSwgMjMsIDExOSwgNiwgMjI0LCAKLSAgICA5OSwgMTEsIDIzLCAxMTksIDYsIDE1MywgMTEsIDIzLCAxMTksIDYsIDIyMiwgOTMsIDExLCAyMywgMTE5LCA2LCAyMTcsIAotICAgIDE1MywgMTEsIDIzLCAxMTksIDYsIDY5LCAxMSwgMjMsIDExOSwgNiwgMjE0LCAxMDUsIDExLCAyMywgMTE5LCA2LCAyMTIsIAotICAgIDk4LCAxMSwgMjMsIDExOSwgNiwgMjExLCAxNzgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDExNywgMTEsIDIzLCAxMTksIDYsIAotICAgIDIxMCwgMTU5LCAxMSwgMjMsIDExOSwgNCwgNjEsIDExLCAyMywgMTE5LCA0LCAyNTMsIDE2NiwgMTEsIDIzLCAxMTksIDQsIAotICAgIDI1MSwgNzQsIDExLCAyMywgMTE5LCA0LCAyNDksIDY4LCAxMSwgMjMsIDExOSwgNCwgNzYsIDExLCAyMywgMTE5LCA0LCAKLSAgICAyNDUsIDE0LCAxMSwgMjMsIDExOSwgNCwgMjQzLCAyMDksIDExLCAyMywgMTE5LCA0LCAyNDIsIDY3LCAxMSwgMjMsIDExOSwgCi0gICAgNCwgNzQsIDExLCAyMywgMTE5LCA0LCAyMzUsIDE1MCwgMTEsIDIzLCAxMTksIDQsIDIzNSwgMjksIDExLCAyMywgMTE5LCA0LCAKLSAgICAxNTYsIDExLCAyMywgMTE5LCA0LCAxOTQsIDExLCAyMywgMTE5LCA0LCAyMzAsIDMwLCAxMSwgMjMsIDExOSwgNCwgNzgsIAotICAgIDExLCAyMywgMTE5LCA0LCAyMjYsIDEwOSwgMTEsIDIzLCAxMTksIDQsIDIyNCwgOTksIDExLCAyMywgMTE5LCA0LCAxNTMsIAotICAgIDExLCAyMywgMTE5LCA0LCAyMjIsIDkzLCAxMSwgMjMsIDExOSwgNCwgMjE3LCAxNTMsIDExLCAyMywgMTE5LCA0LCA2OSwgCi0gICAgMTEsIDIzLCAxMTksIDQsIDIxNCwgMTA1LCAxMSwgMjMsIDExOSwgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgCi0gICAgMTc4LCAxMSwgMjMsIDExOSwgNCwgMjExLCAxMTcsIDExLCAyMywgMTE5LCA0LCAyMTAsIDE1OSwgMTEsIDEzMywgNiwgNjEsIAotICAgIDExLCAxMzMsIDYsIDI1MywgMTY2LCAxMSwgMTMzLCA2LCAyNDksIDY4LCAxMSwgMTMzLCA2LCA3NiwgMTEsIDEzMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDEzMywgNiwgMjQzLCAyMDksIDExLCAxMzMsIDYsIDIzNSwgMTUwLCAxMSwgMTMzLCA2LCAyMzUsIDI5LCAKLSAgICAxMSwgMTMzLCA2LCAxNTYsIDExLCAxMzMsIDYsIDE5NCwgMTEsIDEzMywgNiwgMjMwLCAzMCwgMTEsIDEzMywgNiwgNzgsIAotICAgIDExLCAxMzMsIDYsIDIyNiwgMTA5LCAxMSwgMTMzLCA2LCAyMjQsIDk5LCAxMSwgMTMzLCA2LCAyMjIsIDkzLCAxMSwgMTMzLCAKLSAgICA2LCAyMTcsIDE1MywgMTEsIDEzMywgNiwgNjksIDExLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMTMzLCA2LCAyMTIsIDk4LCAKLSAgICAxMSwgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDEzMywgNiwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDYxLCAxMSwgMTMzLCA0LCAKLSAgICAyNTMsIDE2NiwgMTEsIDEzMywgNCwgMjUxLCA3NCwgMTEsIDEzMywgNCwgMjQ5LCA2OCwgMTEsIDEzMywgNCwgNzYsIDExLCAKLSAgICAxMzMsIDQsIDI0NSwgMTQsIDExLCAxMzMsIDQsIDI0MywgMjA5LCAxMSwgMTMzLCA0LCAyNDIsIDY3LCAxMSwgMTMzLCA0LCAKLSAgICA3NCwgMTEsIDEzMywgNCwgMjM1LCAxNTAsIDExLCAxMzMsIDQsIDIzNSwgMjksIDExLCAxMzMsIDQsIDE1NiwgMTEsIDEzMywgCi0gICAgNCwgMTk0LCAxMSwgMTMzLCA0LCAyMzAsIDMwLCAxMSwgMTMzLCA0LCA3OCwgMTEsIDEzMywgNCwgMjI2LCAxMDksIDExLCAKLSAgICAxMzMsIDQsIDIyNCwgOTksIDExLCAxMzMsIDQsIDE1MywgMTEsIDEzMywgNCwgMjIyLCA5MywgMTEsIDEzMywgNCwgMjE3LCAKLSAgICAxNTMsIDExLCAxMzMsIDQsIDY5LCAxMSwgMTMzLCA0LCAyMTQsIDEwNSwgMTEsIDEzMywgNCwgMjEyLCA5OCwgMTEsIDEzMywgCi0gICAgNCwgMjExLCAxNzgsIDExLCAxMzMsIDQsIDIxMSwgMTE3LCAxMSwgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDEzOSwgNiwgNjEsIAotICAgIDExLCAxMzksIDYsIDI1MywgMTY2LCAxMSwgMTM5LCA2LCAyNDksIDY4LCAxMSwgMTM5LCA2LCA3NiwgMTEsIDEzOSwgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDEzOSwgNiwgMjQzLCAyMDksIDExLCAxMzksIDYsIDc0LCAxMSwgMTM5LCA2LCAyMzUsIDE1MCwgMTEsIAotICAgIDEzOSwgNiwgMjM1LCAyOSwgMTEsIDEzOSwgNiwgMTU2LCAxMSwgMTM5LCA2LCAxOTQsIDExLCAxMzksIDYsIDc4LCAxMSwgCi0gICAgMTM5LCA2LCAyMjIsIDkzLCAxMSwgMTM5LCA2LCAyMTcsIDE1MywgMTEsIDEzOSwgNiwgNjksIDExLCAxMzksIDYsIDIxNCwgCi0gICAgMTA1LCAxMSwgMTM5LCA2LCAyMTIsIDk4LCAxMSwgMTM5LCA2LCAyMTEsIDE3OCwgMTEsIDEzOSwgNiwgMjExLCAxMTcsIDExLCAKLSAgICAxMzksIDQsIDYxLCAxMSwgMTM5LCA0LCAyNTMsIDE2NiwgMTEsIDEzOSwgNCwgMjUxLCA3NCwgMTEsIDEzOSwgNCwgMjQ5LCAKLSAgICA2OCwgMTEsIDEzOSwgNCwgNzYsIDExLCAxMzksIDQsIDI0NSwgMTQsIDExLCAxMzksIDQsIDI0MywgMjA5LCAxMSwgMTM5LCAKLSAgICA0LCAyNDIsIDY3LCAxMSwgMTM5LCA0LCA3NCwgMTEsIDEzOSwgNCwgMjM1LCAxNTAsIDExLCAxMzksIDQsIDIzNSwgMjksIAotICAgIDExLCAxMzksIDQsIDE1NiwgMTEsIDEzOSwgNCwgMTk0LCAxMSwgMTM5LCA0LCAyMzAsIDMwLCAxMSwgMTM5LCA0LCA3OCwgCi0gICAgMTEsIDEzOSwgNCwgMjI2LCAxMDksIDExLCAxMzksIDQsIDIyNCwgOTksIDExLCAxMzksIDQsIDE1MywgMTEsIDEzOSwgNCwgCi0gICAgMjIyLCA5MywgMTEsIDEzOSwgNCwgMjE3LCAxNTMsIDExLCAxMzksIDQsIDY5LCAxMSwgMTM5LCA0LCAyMTQsIDEwNSwgMTEsIAotICAgIDEzOSwgNCwgMjEyLCA5OCwgMTEsIDEzOSwgNCwgMjExLCAxNzgsIDExLCAxMzksIDQsIDIxMSwgMTE3LCAxMSwgMTM5LCA0LCAKLSAgICAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDYsIDYxLCAxMSwgMjMsIDEzMywgNiwgMjUzLCAxNjYsIDExLCAyMywgMTMzLCA2LCAKLSAgICAyNTEsIDc0LCAxMSwgMjMsIDEzMywgNiwgMjQ5LCA2OCwgMTEsIDIzLCAxMzMsIDYsIDc2LCAxMSwgMjMsIDEzMywgNiwgCi0gICAgMjQ1LCAxNCwgMTEsIDIzLCAxMzMsIDYsIDI0MywgMjA5LCAxMSwgMjMsIDEzMywgNiwgMjQyLCA2NywgMTEsIDIzLCAxMzMsIAotICAgIDYsIDc0LCAxMSwgMjMsIDEzMywgNiwgMjM1LCAxNTAsIDExLCAyMywgMTMzLCA2LCAyMzUsIDI5LCAxMSwgMjMsIDEzMywgNiwgCi0gICAgMTU2LCAxMSwgMjMsIDEzMywgNiwgMTk0LCAxMSwgMjMsIDEzMywgNiwgMjMwLCAzMCwgMTEsIDIzLCAxMzMsIDYsIDc4LCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjI2LCAxMDksIDExLCAyMywgMTMzLCA2LCAyMjQsIDk5LCAxMSwgMjMsIDEzMywgNiwgMTUzLCAKLSAgICAxMSwgMjMsIDEzMywgNiwgMjIyLCA5MywgMTEsIDIzLCAxMzMsIDYsIDIxNywgMTUzLCAxMSwgMjMsIDEzMywgNiwgNjksIAotICAgIDExLCAyMywgMTMzLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIxMiwgOTgsIDExLCAyMywgMTMzLCA2LCAyMTEsIAotICAgIDE3OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDEzMywgNiwgMjEwLCAxNTksIDExLCAyMywgMTMzLCA0LCAKLSAgICA2MSwgMTEsIDIzLCAxMzMsIDQsIDI1MywgMTY2LCAxMSwgMjMsIDEzMywgNCwgMjUxLCA3NCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDI0OSwgNjgsIDExLCAyMywgMTMzLCA0LCA3NiwgMTEsIDIzLCAxMzMsIDQsIDI0NSwgMTQsIDExLCAyMywgMTMzLCA0LCAKLSAgICAyNDMsIDIwOSwgMTEsIDIzLCAxMzMsIDQsIDI0MiwgNjcsIDExLCAyMywgMTMzLCA0LCA3NCwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDIzNSwgMTUwLCAxMSwgMjMsIDEzMywgNCwgMjM1LCAyOSwgMTEsIDIzLCAxMzMsIDQsIDE1NiwgMTEsIDIzLCAxMzMsIDQsIAotICAgIDE5NCwgMTEsIDIzLCAxMzMsIDQsIDIzMCwgMzAsIDExLCAyMywgMTMzLCA0LCA3OCwgMTEsIDIzLCAxMzMsIDQsIDIyNiwgCi0gICAgMTA5LCAxMSwgMjMsIDEzMywgNCwgMjI0LCA5OSwgMTEsIDIzLCAxMzMsIDQsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDIyMiwgCi0gICAgOTMsIDExLCAyMywgMTMzLCA0LCAyMTcsIDE1MywgMTEsIDIzLCAxMzMsIDQsIDY5LCAxMSwgMjMsIDEzMywgNCwgMjE0LCAKLSAgICAxMDUsIDExLCAyMywgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxNzgsIDExLCAyMywgMTMzLCA0LCAKLSAgICAyMTEsIDExNywgMTEsIDIzLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDYsIDYxLCAxMSwgMzUsIDYsIDI1MywgMTY2LCAKLSAgICAxMSwgMzUsIDYsIDI1MSwgNzQsIDExLCAzNSwgNiwgMjQ5LCA2OCwgMTEsIDM1LCA2LCA3NiwgMTEsIDM1LCA2LCAyNDUsIAotICAgIDE0LCAxMSwgMzUsIDYsIDI0MywgMjA5LCAxMSwgMzUsIDYsIDI0MiwgNjcsIDExLCAzNSwgNiwgNzQsIDExLCAzNSwgNiwgCi0gICAgMjM1LCAxNTAsIDExLCAzNSwgNiwgMjM1LCAyOSwgMTEsIDM1LCA2LCAxNTYsIDExLCAzNSwgNiwgMTk0LCAxMSwgMzUsIDYsIAotICAgIDIzMCwgMzAsIDExLCAzNSwgNiwgNzgsIDExLCAzNSwgNiwgMjI2LCAxMDksIDExLCAzNSwgNiwgMjI0LCA5OSwgMTEsIDM1LCAKLSAgICA2LCAxNTMsIDExLCAzNSwgNiwgMjIyLCA5MywgMTEsIDM1LCA2LCAyMTcsIDE1MywgMTEsIDM1LCA2LCA2OSwgMTEsIDM1LCAKLSAgICA2LCAyMTQsIDEwNSwgMTEsIDM1LCA2LCAyMTIsIDk4LCAxMSwgMzUsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDYsIDIxMSwgCi0gICAgMTE3LCAxMSwgMzUsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDQsIDYxLCAxMSwgMzUsIDQsIDI1MywgMTY2LCAxMSwgMzUsIDQsIAotICAgIDI1MSwgNzQsIDExLCAzNSwgNCwgMjQ5LCA2OCwgMTEsIDM1LCA0LCA3NiwgMTEsIDM1LCA0LCAyNDUsIDE0LCAxMSwgMzUsIAotICAgIDQsIDI0MywgMjA5LCAxMSwgMzUsIDQsIDI0MiwgNjcsIDExLCAzNSwgNCwgNzQsIDExLCAzNSwgNCwgMjM1LCAxNTAsIDExLCAKLSAgICAzNSwgNCwgMjM1LCAyOSwgMTEsIDM1LCA0LCAxNTYsIDExLCAzNSwgNCwgMTk0LCAxMSwgMzUsIDQsIDIzMCwgMzAsIDExLCAKLSAgICAzNSwgNCwgNzgsIDExLCAzNSwgNCwgMjI2LCAxMDksIDExLCAzNSwgNCwgMjI0LCA5OSwgMTEsIDM1LCA0LCAxNTMsIDExLCAKLSAgICAzNSwgNCwgMjIyLCA5MywgMTEsIDM1LCA0LCAyMTcsIDE1MywgMTEsIDM1LCA0LCA2OSwgMTEsIDM1LCA0LCAyMTQsIDEwNSwgCi0gICAgMTEsIDM1LCA0LCAyMTIsIDk4LCAxMSwgMzUsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDQsIAotICAgIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCA2LCA2MSwgMTEsIDM1LCAyMywgNiwgMjUzLCAxNjYsIDExLCAzNSwgMjMsIDYsIDI1MSwgCi0gICAgNzQsIDExLCAzNSwgMjMsIDYsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDYsIDc2LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDE0LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgNiwgMjQyLCA2NywgMTEsIDM1LCAyMywgNiwgNzQsIDExLCAKLSAgICAzNSwgMjMsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDI5LCAxMSwgMzUsIDIzLCA2LCAxNTYsIDExLCAzNSwgCi0gICAgMjMsIDYsIDE5NCwgMTEsIDM1LCAyMywgNiwgMjMwLCAzMCwgMTEsIDM1LCAyMywgNiwgNzgsIDExLCAzNSwgMjMsIDYsIAotICAgIDIyNiwgMTA5LCAxMSwgMzUsIDIzLCA2LCAyMjQsIDk5LCAxMSwgMzUsIDIzLCA2LCAxNTMsIDExLCAzNSwgMjMsIDYsIDIyMiwgCi0gICAgOTMsIDExLCAzNSwgMjMsIDYsIDIxNywgMTUzLCAxMSwgMzUsIDIzLCA2LCA2OSwgMTEsIDM1LCAyMywgNiwgMjE0LCAxMDUsIAotICAgIDExLCAzNSwgMjMsIDYsIDIxMiwgOTgsIDExLCAzNSwgMjMsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDExNywgCi0gICAgMTEsIDM1LCAyMywgNiwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDQsIDYxLCAxMSwgMzUsIDIzLCA0LCAyNTMsIDE2NiwgMTEsIAotICAgIDM1LCAyMywgNCwgMjUxLCA3NCwgMTEsIDM1LCAyMywgNCwgMjQ5LCA2OCwgMTEsIDM1LCAyMywgNCwgNzYsIDExLCAzNSwgCi0gICAgMjMsIDQsIDI0NSwgMTQsIDExLCAzNSwgMjMsIDQsIDI0MywgMjA5LCAxMSwgMzUsIDIzLCA0LCAyNDIsIDY3LCAxMSwgMzUsIAotICAgIDIzLCA0LCA3NCwgMTEsIDM1LCAyMywgNCwgMjM1LCAxNTAsIDExLCAzNSwgMjMsIDQsIDIzNSwgMjksIDExLCAzNSwgMjMsIAotICAgIDQsIDE1NiwgMTEsIDM1LCAyMywgNCwgMTk0LCAxMSwgMzUsIDIzLCA0LCAyMzAsIDMwLCAxMSwgMzUsIDIzLCA0LCA3OCwgCi0gICAgMTEsIDM1LCAyMywgNCwgMjI2LCAxMDksIDExLCAzNSwgMjMsIDQsIDIyNCwgOTksIDExLCAzNSwgMjMsIDQsIDE1MywgMTEsIAotICAgIDM1LCAyMywgNCwgMjIyLCA5MywgMTEsIDM1LCAyMywgNCwgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDQsIDY5LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAyMywgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxNzgsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNiwgNjEsIDExLCAzNSwgMzIsIAotICAgIDYsIDI1MywgMTY2LCAxMSwgMzUsIDMyLCA2LCAyNTEsIDc0LCAxMSwgMzUsIDMyLCA2LCAyNDksIDY4LCAxMSwgMzUsIDMyLCAKLSAgICA2LCA3NiwgMTEsIDM1LCAzMiwgNiwgMjQ1LCAxNCwgMTEsIDM1LCAzMiwgNiwgMjQzLCAyMDksIDExLCAzNSwgMzIsIDYsIAotICAgIDI0MiwgNjcsIDExLCAzNSwgMzIsIDYsIDc0LCAxMSwgMzUsIDMyLCA2LCAyMzUsIDE1MCwgMTEsIDM1LCAzMiwgNiwgMjM1LCAKLSAgICAyOSwgMTEsIDM1LCAzMiwgNiwgMTU2LCAxMSwgMzUsIDMyLCA2LCAxOTQsIDExLCAzNSwgMzIsIDYsIDIzMCwgMzAsIDExLCAKLSAgICAzNSwgMzIsIDYsIDc4LCAxMSwgMzUsIDMyLCA2LCAyMjYsIDEwOSwgMTEsIDM1LCAzMiwgNiwgMjI0LCA5OSwgMTEsIDM1LCAKLSAgICAzMiwgNiwgMTUzLCAxMSwgMzUsIDMyLCA2LCAyMjIsIDkzLCAxMSwgMzUsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAzMiwgCi0gICAgNiwgNjksIDExLCAzNSwgMzIsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA2LCAKLSAgICAyMTEsIDE3OCwgMTEsIDM1LCAzMiwgNiwgMjExLCAxMTcsIDExLCAzNSwgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDMyLCAKLSAgICA0LCA2MSwgMTEsIDM1LCAzMiwgNCwgMjUzLCAxNjYsIDExLCAzNSwgMzIsIDQsIDI1MSwgNzQsIDExLCAzNSwgMzIsIDQsIAotICAgIDI0OSwgNjgsIDExLCAzNSwgMzIsIDQsIDc2LCAxMSwgMzUsIDMyLCA0LCAyNDUsIDE0LCAxMSwgMzUsIDMyLCA0LCAyNDMsIAotICAgIDIwOSwgMTEsIDM1LCAzMiwgNCwgMjQyLCA2NywgMTEsIDM1LCAzMiwgNCwgNzQsIDExLCAzNSwgMzIsIDQsIDIzNSwgMTUwLCAKLSAgICAxMSwgMzUsIDMyLCA0LCAyMzUsIDI5LCAxMSwgMzUsIDMyLCA0LCAxNTYsIDExLCAzNSwgMzIsIDQsIDE5NCwgMTEsIDM1LCAKLSAgICAzMiwgNCwgMjMwLCAzMCwgMTEsIDM1LCAzMiwgNCwgNzgsIDExLCAzNSwgMzIsIDQsIDIyNiwgMTA5LCAxMSwgMzUsIDMyLCAKLSAgICA0LCAyMjQsIDk5LCAxMSwgMzUsIDMyLCA0LCAxNTMsIDExLCAzNSwgMzIsIDQsIDIyMiwgOTMsIDExLCAzNSwgMzIsIDQsIAotICAgIDIxNywgMTUzLCAxMSwgMzUsIDMyLCA0LCA2OSwgMTEsIDM1LCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDQsIDIxMiwgCi0gICAgOTgsIDExLCAzNSwgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAzMiwgNCwgMjEwLCAKLSAgICAxNTksIDExLCAzNSwgMjMsIDMyLCA2LCA2MSwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MywgMTY2LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjUxLCA3NCwgMTEsIDM1LCAyMywgMzIsIDYsIDI0OSwgNjgsIDExLCAzNSwgMjMsIDMyLCA2LCA3NiwgMTEsIDM1LCAKLSAgICAyMywgMzIsIDYsIDI0NSwgMTQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDIwOSwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MiwgCi0gICAgNjcsIDExLCAzNSwgMjMsIDMyLCA2LCA3NCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNSwgMTUwLCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjM1LCAyOSwgMTEsIDM1LCAyMywgMzIsIDYsIDE1NiwgMTEsIDM1LCAyMywgMzIsIDYsIDE5NCwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDYsIDIzMCwgMzAsIDExLCAzNSwgMjMsIDMyLCA2LCA3OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTA5LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNiwgMjI0LCA5OSwgMTEsIDM1LCAyMywgMzIsIDYsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDIyMiwgCi0gICAgOTMsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDY5LCAxMSwgMzUsIDIzLCAzMiwgCi0gICAgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNzgsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIDM1LCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTMsIDE2NiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MSwgNzQsIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAyNDksIDY4LCAxMSwgMzUsIDIzLCAzMiwgNCwgNzYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDE0LCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNCwgMjQzLCAyMDksIDExLCAzNSwgMjMsIDMyLCA0LCAyNDIsIDY3LCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgNzQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzUsIDE1MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMjksIDExLCAzNSwgMjMsIAotICAgIDMyLCA0LCAxNTYsIDExLCAzNSwgMjMsIDMyLCA0LCAxOTQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDMwLCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNCwgNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDEwOSwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgOTksIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjIsIDkzLCAxMSwgMzUsIDIzLCAzMiwgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAzNSwgMjMsIDMyLCA0LCA2OSwgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxMTcsIAotICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDE1OSwgMTEsIDIzMCwgMTQzLCA2LCA2MSwgMTEsIDIzMCwgMTQzLCA2LCAyNTMsIAotICAgIDE2NiwgMTEsIDIzMCwgMTQzLCA2LCAyNTEsIDc0LCAxMSwgMjMwLCAxNDMsIDYsIDI0OSwgNjgsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgNzYsIDExLCAyMzAsIDE0MywgNiwgMjQ1LCAxNCwgMTEsIDIzMCwgMTQzLCA2LCAyNDMsIDIwOSwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyNDIsIDY3LCAxMSwgMjMwLCAxNDMsIDYsIDc0LCAxMSwgMjMwLCAxNDMsIDYsIDIzNSwgMTUwLCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIzNSwgMjksIDExLCAyMzAsIDE0MywgNiwgMTU2LCAxMSwgMjMwLCAxNDMsIDYsIDE5NCwgMTEsIDIzMCwgMTQzLCA2LCAKLSAgICAyMzAsIDMwLCAxMSwgMjMwLCAxNDMsIDYsIDc4LCAxMSwgMjMwLCAxNDMsIDYsIDIyNiwgMTA5LCAxMSwgMjMwLCAxNDMsIDYsIAotICAgIDIyNCwgOTksIDExLCAyMzAsIDE0MywgNiwgMTUzLCAxMSwgMjMwLCAxNDMsIDYsIDIyMiwgOTMsIDExLCAyMzAsIDE0MywgNiwgCi0gICAgMjE3LCAxNTMsIDExLCAyMzAsIDE0MywgNiwgNjksIDExLCAyMzAsIDE0MywgNiwgMjE0LCAxMDUsIDExLCAyMzAsIDE0MywgCi0gICAgNiwgMjEyLCA5OCwgMTEsIDIzMCwgMTQzLCA2LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTQzLCA2LCAyMTEsIDExNywgMTEsIAotICAgIDIzMCwgMTQzLCA2LCAyMTAsIDE1OSwgMTEsIDIzMCwgMTQzLCA0LCA2MSwgMTEsIDIzMCwgMTQzLCA0LCAyNTMsIDE2NiwgCi0gICAgMTEsIDIzMCwgMTQzLCA0LCAyNTEsIDc0LCAxMSwgMjMwLCAxNDMsIDQsIDI0OSwgNjgsIDExLCAyMzAsIDE0MywgNCwgNzYsIAotICAgIDExLCAyMzAsIDE0MywgNCwgMjQ1LCAxNCwgMTEsIDIzMCwgMTQzLCA0LCAyNDMsIDIwOSwgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyNDIsIDY3LCAxMSwgMjMwLCAxNDMsIDQsIDc0LCAxMSwgMjMwLCAxNDMsIDQsIDIzNSwgMTUwLCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIzNSwgMjksIDExLCAyMzAsIDE0MywgNCwgMTU2LCAxMSwgMjMwLCAxNDMsIDQsIDE5NCwgMTEsIDIzMCwgMTQzLCA0LCAKLSAgICAyMzAsIDMwLCAxMSwgMjMwLCAxNDMsIDQsIDc4LCAxMSwgMjMwLCAxNDMsIDQsIDIyNiwgMTA5LCAxMSwgMjMwLCAxNDMsIDQsIAotICAgIDIyNCwgOTksIDExLCAyMzAsIDE0MywgNCwgMTUzLCAxMSwgMjMwLCAxNDMsIDQsIDIyMiwgOTMsIDExLCAyMzAsIDE0MywgNCwgCi0gICAgMjE3LCAxNTMsIDExLCAyMzAsIDE0MywgNCwgNjksIDExLCAyMzAsIDE0MywgNCwgMjE0LCAxMDUsIDExLCAyMzAsIDE0MywgCi0gICAgNCwgMjEyLCA5OCwgMTEsIDIzMCwgMTQzLCA0LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTQzLCA0LCAyMTEsIDExNywgMTEsIAotICAgIDIzMCwgMTQzLCA0LCAyMTAsIDE1OSwgMTEsIDMyLCA0LCAyNDcsIDEyNywgNzQsIDExLCAzMiwgNCwgMjQ3LCAxMjcsIDIzNSwgCi0gICAgMTUwLCAxMSwgMjMsIDYsIDI1NCwgMTUxLCAxMSwgMjMsIDYsIDI1MiwgMzQsIDExLCAyMywgNiwgMjQzLCAxMTQsIDExLCAKLSAgICAyMywgNiwgMjQ4LCA2MiwgMTEsIDIzLCA2LCAyNDUsIDEwOCwgMTEsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDYsIDI0NSwgCi0gICAgNzEsIDExLCAyMywgNiwgMjE2LCAxODAsIDExLCAyMywgNiwgMjM1LCAxOTIsIDExLCAyMywgNiwgMjM0LCAyMjgsIDExLCAKLSAgICAyMywgNiwgMjMzLCAxMDQsIDExLCAyMywgNiwgMjMwLCAxMDcsIDExLCAyMywgNiwgMjI3LCAyNDIsIDExLCAyMywgNiwgCi0gICAgMjExLCAxNTcsIDExLCAyMywgNiwgMjI2LCAyMDMsIDExLCAyMywgNiwgMjI1LCAxMTEsIDExLCAyMywgNiwgMjIzLCA0MCwgCi0gICAgMTEsIDIzLCA2LCAyMTYsIDE4MSwgODcsIDExLCAyMywgNiwgMjE5LCAxNzksIDExLCAyMywgNiwgMjE3LCA0MiwgMTEsIDIzLCAKLSAgICA2LCAyMTQsIDE1NywgMTEsIDIzLCA2LCAyMjUsIDEzNiwgMTEsIDIzLCA2LCAyNTAsIDExOCwgMTEsIDIzLCA2LCAyMjQsIAotICAgIDE2NCwgMTEsIDIzLCA2LCAyMjYsIDIwNSwgMTEsIDIzLCAyMjksIDIyNiwgMTEsIDIzLCA0LCAyNTQsIDE1MSwgMTEsIDIzLCAKLSAgICA0LCAyNTIsIDM0LCAxMSwgMjMsIDQsIDI0MywgMTE0LCAxMSwgMjMsIDQsIDI0OCwgNjIsIDExLCAyMywgNCwgMjQ1LCAxMDgsIAotICAgIDExLCAyMywgNCwgMjEwLCA4NSwgMTEsIDIzLCA0LCAyNDUsIDcxLCAxMSwgMjMsIDQsIDIxNiwgMTgwLCAxMSwgMjMsIDQsIAotICAgIDIzNSwgMTkyLCAxMSwgMjMsIDQsIDIzNCwgMjI4LCAxMSwgMjMsIDQsIDIzMywgMTA0LCAxMSwgMjMsIDQsIDIzMCwgMTA3LCAKLSAgICAxMSwgMjMsIDQsIDIyNywgMjQyLCAxMSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMjMsIDQsIDIyNiwgMjAzLCAxMSwgMjMsIDQsIAotICAgIDIyNSwgMTExLCAxMSwgMjMsIDQsIDIyMywgNDAsIDExLCAyMywgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMjMsIDQsIDIxOSwgCi0gICAgMTc5LCAxMSwgMjMsIDQsIDIxNywgNDIsIDExLCAyMywgNCwgMjE0LCAxNTcsIDExLCAyMywgNCwgMjI1LCAxMzYsIDExLCAKLSAgICAyMywgNCwgMjUwLCAxMTgsIDExLCAyMywgNCwgMjI0LCAxNjQsIDExLCAyMywgNCwgMjI2LCAyMDUsIDExLCAyMywgMjI2LCAKLSAgICAxLCAyNDcsIDI0MSwgMTEsIDIzLCAyNDUsIDEwOSwgODcsIDExLCAyMywgMjE2LCAxODEsIDg3LCAxMSwgMjMsIDIzNCwgCi0gICAgMjI5LCA4NywgMTEsIDIzLCAyMjUsIDEzNywgODcsIDExLCAyMywgMjIzLCA0MSwgODcsIDExLCAyMywgMjI1LCAxMTIsIDg3LCAKLSAgICAxMSwgMzIsIDYsIDI1NCwgMTUxLCAxMSwgMzIsIDYsIDI1MiwgMzQsIDExLCAzMiwgNiwgMjQzLCAxMTQsIDExLCAzMiwgNiwgCi0gICAgMjQ4LCA2MiwgMTEsIDMyLCA2LCAyNDUsIDEwOCwgMTEsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzIsIDYsIDI0NSwgNzEsIDExLCAKLSAgICAzMiwgNiwgMjE2LCAxODAsIDExLCAzMiwgNiwgMjM1LCAxOTIsIDExLCAzMiwgNiwgMjM0LCAyMjgsIDExLCAzMiwgNiwgCi0gICAgMjMzLCAxMDQsIDExLCAzMiwgNiwgMjMwLCAxMDcsIDExLCAzMiwgNiwgMjI3LCAyNDIsIDExLCAzMiwgNiwgMjExLCAxNTcsIAotICAgIDExLCAzMiwgNiwgMjI2LCAyMDMsIDExLCAzMiwgNiwgMjI1LCAxMTEsIDExLCAzMiwgNiwgMjIzLCA0MCwgMTEsIDMyLCA2LCAKLSAgICAyMTYsIDE4MSwgODcsIDExLCAzMiwgNiwgMjE5LCAxNzksIDExLCAzMiwgNiwgMjE3LCA0MiwgMTEsIDMyLCA2LCAyMTQsIAotICAgIDE1NywgMTEsIDMyLCA2LCAyMjUsIDEzNiwgMTEsIDMyLCA2LCAyNTAsIDExOCwgMTEsIDMyLCA2LCAyMjQsIDE2NCwgMTEsIAotICAgIDMyLCA2LCAyMjYsIDIwNSwgMTEsIDMyLCAyMjksIDIyNiwgMTEsIDMyLCA0LCAyNTQsIDE1MSwgMTEsIDMyLCA0LCAyNTIsIAotICAgIDM0LCAxMSwgMzIsIDQsIDI0MywgMTE0LCAxMSwgMzIsIDQsIDI0OCwgNjIsIDExLCAzMiwgNCwgMjQ1LCAxMDgsIDExLCAzMiwgCi0gICAgNCwgMjEwLCA4NSwgMTEsIDMyLCA0LCAyNDUsIDcxLCAxMSwgMzIsIDQsIDIxNiwgMTgwLCAxMSwgMzIsIDQsIDIzNSwgMTkyLCAKLSAgICAxMSwgMzIsIDQsIDIzNCwgMjI4LCAxMSwgMzIsIDQsIDIzMywgMTA0LCAxMSwgMzIsIDQsIDIzMCwgMTA3LCAxMSwgMzIsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMzIsIDQsIDIxMSwgMTU3LCAxMSwgMzIsIDQsIDIyNiwgMjAzLCAxMSwgMzIsIDQsIDIyNSwgMTExLCAKLSAgICAxMSwgMzIsIDQsIDIyMywgNDAsIDExLCAzMiwgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzIsIDQsIDIxOSwgMTc5LCAxMSwgMzIsIAotICAgIDQsIDIxNywgNDIsIDExLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzMiwgNCwgMjI1LCAxMzYsIDExLCAzMiwgNCwgMjUwLCAKLSAgICAxMTgsIDExLCAzMiwgNCwgMjI0LCAxNjQsIDExLCAzMiwgNCwgMjI2LCAyMDUsIDExLCAzMiwgMjI2LCAxLCAyNDcsIDI0MSwgCi0gICAgMTEsIDMyLCAyNDUsIDEwOSwgODcsIDExLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMzIsIDIzNCwgMjI5LCA4NywgMTEsIDMyLCAKLSAgICAyMjUsIDEzNywgODcsIDExLCAzMiwgMjIzLCA0MSwgODcsIDExLCAzMiwgMjI1LCAxMTIsIDg3LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAyNTQsIDE1MSwgMTEsIDIzLCAzMiwgNiwgMjUyLCAzNCwgMTEsIDIzLCAzMiwgNiwgMjQzLCAxMTQsIDExLCAyMywgMzIsIDYsIAotICAgIDI0OCwgNjIsIDExLCAyMywgMzIsIDYsIDI0NSwgMTA4LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA2LCAKLSAgICAyNDUsIDcxLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MCwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxOTIsIDExLCAyMywgMzIsIDYsIAotICAgIDIzNCwgMjI4LCAxMSwgMjMsIDMyLCA2LCAyMzMsIDEwNCwgMTEsIDIzLCAzMiwgNiwgMjMwLCAxMDcsIDExLCAyMywgMzIsIAotICAgIDYsIDIyNywgMjQyLCAxMSwgMjMsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDMsIDExLCAyMywgCi0gICAgMzIsIDYsIDIyNSwgMTExLCAxMSwgMjMsIDMyLCA2LCAyMjMsIDQwLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE4MSwgODcsIDExLCAKLSAgICAyMywgMzIsIDYsIDIxOSwgMTc5LCAxMSwgMjMsIDMyLCA2LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDE1NywgMTEsIAotICAgIDIzLCAzMiwgNiwgMjI1LCAxMzYsIDExLCAyMywgMzIsIDYsIDI1MCwgMTE4LCAxMSwgMjMsIDMyLCA2LCAyMjQsIDE2NCwgCi0gICAgMTEsIDIzLCAzMiwgNiwgMjI2LCAyMDUsIDExLCAyMywgMzIsIDIyOSwgMjI2LCAxMSwgMjMsIDMyLCA0LCAyNTQsIDE1MSwgCi0gICAgMTEsIDIzLCAzMiwgNCwgMjUyLCAzNCwgMTEsIDIzLCAzMiwgNCwgMjQzLCAxMTQsIDExLCAyMywgMzIsIDQsIDI0OCwgNjIsIAotICAgIDExLCAyMywgMzIsIDQsIDI0NSwgMTA4LCAxMSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA0LCAyNDUsIDcxLCAKLSAgICAxMSwgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDIzLCAzMiwgNCwgMjM1LCAxOTIsIDExLCAyMywgMzIsIDQsIDIzNCwgCi0gICAgMjI4LCAxMSwgMjMsIDMyLCA0LCAyMzMsIDEwNCwgMTEsIDIzLCAzMiwgNCwgMjMwLCAxMDcsIDExLCAyMywgMzIsIDQsIAotICAgIDIyNywgMjQyLCAxMSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDIzLCAzMiwgNCwgMjI2LCAyMDMsIDExLCAyMywgMzIsIAotICAgIDQsIDIyNSwgMTExLCAxMSwgMjMsIDMyLCA0LCAyMjMsIDQwLCAxMSwgMjMsIDMyLCA0LCA0MCwgMjE5LCAxNzksIDExLCAyMywgCi0gICAgMzIsIDQsIDIxOSwgMTc5LCAxMSwgMjMsIDMyLCA0LCAyMTcsIDQyLCAxMSwgMjMsIDMyLCA0LCAyMTQsIDE1NywgMTEsIDIzLCAKLSAgICAzMiwgNCwgMjI1LCAxMzYsIDExLCAyMywgMzIsIDQsIDI1MCwgMTE4LCAxMSwgMjMsIDMyLCA0LCAyMjQsIDE2NCwgMTEsIAotICAgIDIzLCAzMiwgNCwgMjI2LCAyMDUsIDExLCAyMywgMzIsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAyMywgMzIsIDI0NSwgMTA5LCAKLSAgICA4NywgMTEsIDIzLCAzMiwgMjE2LCAxODEsIDg3LCAxMSwgMjMsIDMyLCAyMzQsIDIyOSwgODcsIDExLCAyMywgMzIsIDIyNSwgCi0gICAgMTM3LCA4NywgMTEsIDIzLCAzMiwgMjIzLCA0MSwgODcsIDExLCAyMywgMzIsIDIyNSwgMTEyLCA4NywgMTEsIDM1LCAyMywgCi0gICAgNiwgMjU0LCAxNTEsIDExLCAzNSwgMjMsIDYsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDYsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyNDgsIDYyLCAxMSwgMzUsIDIzLCA2LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgCi0gICAgNiwgMjQ1LCA3MSwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODAsIDExLCAzNSwgMjMsIDYsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAKLSAgICA2LCAyMzQsIDIyOCwgMTEsIDM1LCAyMywgNiwgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDYsIDIzMCwgMTA3LCAxMSwgMzUsIAotICAgIDIzLCA2LCAyMjcsIDI0MiwgMTEsIDM1LCAyMywgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjAzLCAxMSwgCi0gICAgMzUsIDIzLCA2LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgNiwgMjIzLCA0MCwgMTEsIDM1LCAyMywgNiwgMjE2LCAxODEsIDg3LCAKLSAgICAxMSwgMzUsIDIzLCA2LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNiwgMjE0LCAxNTcsIAotICAgIDExLCAzNSwgMjMsIDYsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCA2LCAyNTAsIDExOCwgMTEsIDM1LCAyMywgNiwgMjI0LCAKLSAgICAxNjQsIDExLCAzNSwgMjMsIDYsIDIyNiwgMjA1LCAxMSwgMzUsIDIzLCAyMjksIDIyNiwgMTEsIDM1LCAyMywgNCwgMjU0LCAKLSAgICAxNTEsIDExLCAzNSwgMjMsIDQsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDQsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCA0LCAyNDgsIAotICAgIDYyLCAxMSwgMzUsIDIzLCA0LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNCwgMjQ1LCAKLSAgICA3MSwgMTEsIDM1LCAyMywgNCwgMjE2LCAxODAsIDExLCAzNSwgMjMsIDQsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCA0LCAyMzQsIAotICAgIDIyOCwgMTEsIDM1LCAyMywgNCwgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDQsIDIzMCwgMTA3LCAxMSwgMzUsIDIzLCA0LCAKLSAgICAyMjcsIDI0MiwgMTEsIDM1LCAyMywgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDQsIDIyNiwgMjAzLCAxMSwgMzUsIDIzLCAKLSAgICA0LCAyMjUsIDExMSwgMTEsIDM1LCAyMywgNCwgMjIzLCA0MCwgMTEsIDM1LCAyMywgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzUsIAotICAgIDIzLCA0LCAyMTksIDE3OSwgMTEsIDM1LCAyMywgNCwgMjE3LCA0MiwgMTEsIDM1LCAyMywgNCwgMjE0LCAxNTcsIDExLCAzNSwgCi0gICAgMjMsIDQsIDIyNSwgMTM2LCAxMSwgMzUsIDIzLCA0LCAyNTAsIDExOCwgMTEsIDM1LCAyMywgNCwgMjI0LCAxNjQsIDExLCAKLSAgICAzNSwgMjMsIDQsIDIyNiwgMjA1LCAxMSwgMzUsIDIzLCAyMjYsIDEsIDI0NywgMjQxLCAxMSwgMzUsIDIzLCAyNDUsIDEwOSwgCi0gICAgODcsIDExLCAzNSwgMjMsIDIxNiwgMTgxLCA4NywgMTEsIDM1LCAyMywgMjM0LCAyMjksIDg3LCAxMSwgMzUsIDIzLCAyMjUsIAotICAgIDEzNywgODcsIDExLCAzNSwgMjMsIDIyMywgNDEsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDExMiwgODcsIDExLCAzNSwgMjMsIAotICAgIDMyLCA2LCAyNTQsIDE1MSwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MiwgMzQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDExNCwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDI0OCwgNjIsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDEwOCwgMTEsIDM1LCAyMywgMzIsIAotICAgIDYsIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDcxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDExLCAKLSAgICAzNSwgMjMsIDMyLCA2LCAyMzUsIDE5MiwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNCwgMjI4LCAxMSwgMzUsIDIzLCAzMiwgNiwgCi0gICAgMjMzLCAxMDQsIDExLCAzNSwgMjMsIDMyLCA2LCAyMzAsIDEwNywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNywgMjQyLCAxMSwgCi0gICAgMzUsIDIzLCAzMiwgNiwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwMywgMTEsIDM1LCAyMywgMzIsIDYsIAotICAgIDIyNSwgMTExLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjIzLCA0MCwgMTEsIDM1LCAyMywgMzIsIDYsIDIxNiwgMTgxLCA4NywgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE3LCA0MiwgMTEsIDM1LCAyMywgMzIsIAotICAgIDYsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAxMzYsIDExLCAzNSwgMjMsIDMyLCA2LCAyNTAsIDExOCwgCi0gICAgMTEsIDM1LCAyMywgMzIsIDYsIDIyNCwgMTY0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI2LCAyMDUsIDExLCAzNSwgMjMsIDMyLCAKLSAgICAyMjksIDIyNiwgMTEsIDM1LCAyMywgMzIsIDQsIDI1NCwgMTUxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjUyLCAzNCwgMTEsIAotICAgIDM1LCAyMywgMzIsIDQsIDI0MywgMTE0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ4LCA2MiwgMTEsIDM1LCAyMywgMzIsIDQsIAotICAgIDI0NSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjEwLCA4NSwgMTEsIDM1LCAyMywgMzIsIDQsIDI0NSwgNzEsIDExLCAzNSwgCi0gICAgMjMsIDMyLCA0LCAyMTYsIDE4MCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgMTkyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM0LCAKLSAgICAyMjgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzMsIDEwNCwgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMTA3LCAxMSwgMzUsIAotICAgIDIzLCAzMiwgNCwgMjI3LCAyNDIsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDQsIDIyNiwgCi0gICAgMjAzLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjMsIDQwLCAxMSwgMzUsIDIzLCAKLSAgICAzMiwgNCwgNDAsIDIxOSwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE5LCAxNzksIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIAotICAgIDQyLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjUsIDEzNiwgMTEsIDM1LCAyMywgCi0gICAgMzIsIDQsIDI1MCwgMTE4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCAxNjQsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIAotICAgIDIwNSwgMTEsIDM1LCAyMywgMzIsIDIyNiwgMSwgMjQ3LCAyNDEsIDExLCAzNSwgMjMsIDMyLCAyNDUsIDEwOSwgODcsIDExLCAKLSAgICAzNSwgMjMsIDMyLCAyMTYsIDE4MSwgODcsIDExLCAzNSwgMjMsIDMyLCAyMzQsIDIyOSwgODcsIDExLCAzNSwgMjMsIDMyLCAKLSAgICAyMjUsIDEzNywgODcsIDExLCAzNSwgMjMsIDMyLCAyMjMsIDQxLCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgMTEyLCA4NywgCi0gICAgMTEsIDIzLCA2LCAyNDcsIDIzNSwgMTEsIDIzLCA0LCAyNDcsIDIzNSwgMTEsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDIzLCAKLSAgICAyMSwgMTExLCAxMSwgMjMsIDIxLCAxMDUsIDExLCAyMywgMjEsIDE1OCwgMTEsIDIzLCAyMSwgMTYxLCAxMSwgMjMsIDIxLCAKLSAgICAxOTAsIDExLCAyMywgMjEsIDE5NSwgMTEsIDIzLCAyMSwgMTk5LCAxMSwgMjMsIDIxLCAxOTYsIDExLCAyMywgMjEsIDIwMSwgCi0gICAgMTEsIDEzOSwgMjEsIDIxMCwgODYsIDExLCAxMzksIDIxLCAxMTEsIDExLCAxMzksIDIxLCAxMDUsIDExLCAxMzksIDIxLCAKLSAgICAxNTgsIDExLCAxMzksIDIxLCAxNjEsIDExLCAxMzksIDIxLCAxOTAsIDExLCAxMzksIDIxLCAxOTUsIDExLCAxMzksIDIxLCAKLSAgICAxOTksIDExLCAxMzksIDIxLCAxOTYsIDExLCAxMzksIDIxLCAyMDEsIDExLCAzNSwgMjEsIDIxMCwgODYsIDExLCAzNSwgMjEsIAotICAgIDExMSwgMTEsIDM1LCAyMSwgMTA1LCAxMSwgMzUsIDIxLCAxNTgsIDExLCAzNSwgMjEsIDE2MSwgMTEsIDM1LCAyMSwgMTkwLCAKLSAgICAxMSwgMzUsIDIxLCAxOTUsIDExLCAzNSwgMjEsIDE5OSwgMTEsIDM1LCAyMSwgMTk2LCAxMSwgMzUsIDIxLCAyMDEsIDExLCAKLSAgICAzNSwgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIzLCAyMSwgMTExLCAxMSwgMzUsIDIzLCAyMSwgMTA1LCAxMSwgMzUsIAotICAgIDIzLCAyMSwgMTU4LCAxMSwgMzUsIDIzLCAyMSwgMTYxLCAxMSwgMzUsIDIzLCAyMSwgMTkwLCAxMSwgMzUsIDIzLCAyMSwgCi0gICAgMTk1LCAxMSwgMzUsIDIzLCAyMSwgMTk5LCAxMSwgMzUsIDIzLCAyMSwgMTk2LCAxMSwgMzUsIDIzLCAyMSwgMjAxLCAxMSwgCi0gICAgMjMwLCAxNDMsIDIxLCAyMTAsIDg2LCAxMSwgMjMwLCAxNDMsIDIxLCAxMTEsIDExLCAyMzAsIDE0MywgMjEsIDEwNSwgMTEsIAotICAgIDIzMCwgMTQzLCAyMSwgMTU4LCAxMSwgMjMwLCAxNDMsIDIxLCAxNjEsIDExLCAyMzAsIDE0MywgMjEsIDE5MCwgMTEsIDIzMCwgCi0gICAgMTQzLCAyMSwgMTk1LCAxMSwgMjMwLCAxNDMsIDIxLCAxOTksIDExLCAyMzAsIDE0MywgMjEsIDE5NiwgMTEsIDIzMCwgMTQzLCAKLSAgICAyMSwgMjAxLCA5LCAxMSwgMjU0LCAxNzksIDksIDExLCAyNTIsIDYyLCA5LCAxMSwgMjM1LCAxMjksIDksIDExLCAyNDgsIAotICAgIDIwMywgOSwgMTEsIDIxMiwgMzAsIDksIDExLCAyMTAsIDEwOCwgOSwgMTEsIDI0MiwgNDQsIDksIDExLCAyMTcsIDgxLCA5LCAKLSAgICAxMSwgMjExLCA0MywgOSwgMTEsIDIzNSwgMCwgOSwgMTEsIDIzMywgMTA4LCA5LCAxMSwgMjMxLCA4MywgOSwgMTEsIDIyOCwgCi0gICAgNjcsIDksIDExLCAyMjEsIDE2OCwgOSwgMTEsIDI1NCwgMjA1LCA5LCAxMSwgMjQ0LCAxNTAsIDksIDExLCAyMjIsIDI4LCA5LCAKLSAgICAxMSwgMjI0LCA4NCwgOSwgMTEsIDIyMywgOTgsIDksIDExLCAyMjAsIDYxLCA5LCAxMSwgMjE3LCA4LCA5LCAxMSwgMjE2LCAKLSAgICAxOTMsIDksIDExLCAyMzQsIDEzNSwgOSwgMTEsIDIxNiwgMjAzLCA5LCAxMSwgMjQ4LCAyMjQsIDksIDExLCAyMTAsIDExMSwgCi0gICAgOSwgMTEsIDI0MiwgMjUxLCA5LCAxMSwgMjQ3LCAxMjcsIDI1MiwgNjIsIDksIDExLCAyNDcsIDEyNywgMjI4LCA2NywgOSwgCi0gICAgMTEsIDI0NywgMTI3LCAyNDQsIDE1MCwgOSwgMTEsIDI0NywgMTI3LCAyMjQsIDg0LCA5LCAxMSwgNjUsIDI1MiwgNjIsIDksIAotICAgIDExLCA2NSwgMjM1LCAxMjksIDksIDExLCA2NSwgMjQxLCAyMjUsIDksIDExLCA2NSwgMjQyLCA0NCwgOSwgMTEsIDY1LCAKLSAgICAyMTEsIDQzLCA5LCAxMSwgNjUsIDIzNSwgMCwgOSwgMTEsIDY1LCAyMzMsIDEwOCwgOSwgMTEsIDY1LCAyMzEsIDgzLCA5LCAKLSAgICAxMSwgNjUsIDIyOCwgNjcsIDksIDExLCA2NSwgMjIxLCAxNjgsIDksIDExLCA2NSwgMjU0LCAyMDUsIDksIDExLCA2NSwgCi0gICAgMjQ0LCAxNTAsIDksIDExLCA2NSwgMjIyLCAyOCwgOSwgMTEsIDY1LCAyMjQsIDg0LCA5LCAxMSwgNjUsIDIyMCwgNjEsIDksIAotICAgIDExLCA2NSwgMjE3LCA4LCA5LCAxMSwgNjUsIDIxNiwgMTkzLCA5LCAxMSwgNjUsIDIzNCwgMTM1LCA5LCAxMSwgNjUsIDI0OCwgCi0gICAgMjI0LCA5LCAxMSwgNjUsIDI0MiwgMjUxLCA5LCAxMSwgMjE3LCA3NywgMjM1LCAxMjksIDksIDExLCAyMTcsIDc3LCAyNDIsIAotICAgIDQ0LCA5LCAxMSwgMjE3LCA3NywgMjExLCA0MywgOSwgMTEsIDIxNywgNzcsIDIzMywgMTA4LCA5LCAxMSwgMjE3LCA3NywgCi0gICAgMjI4LCA2NywgOSwgMTEsIDIxNywgNzcsIDIyMSwgMTY4LCA5LCAxMSwgMjE3LCA3NywgMjU0LCAyMDUsIDksIDExLCAyMTcsIAotICAgIDc3LCAyMjIsIDI4LCA5LCAxMSwgMjE3LCA3NywgMjI0LCA4NCwgOSwgMTEsIDIxNywgNzcsIDIyMCwgNjEsIDksIDExLCAKLSAgICAyMTcsIDc3LCAyMzQsIDEzNSwgOSwgMTEsIDIxNywgNzcsIDI0OCwgMjI0LCA5LCAxMSwgMjE3LCA3NywgMjQyLCAyNTEsIDksIAotICAgIDExLCAyMTcsIDc3LCAyNDcsIDEyNywgMjI4LCA2NywgOSwgMTEsIDIxNywgNzcsIDI0NywgMTI3LCAyMjQsIDg0LCA5LCAxMSwgCi0gICAgMjE4LCAxMTIsIDI1MiwgNjIsIDksIDExLCAyMTgsIDExMiwgMjM1LCAxMjksIDksIDExLCAyMTgsIDExMiwgMjQxLCAyMjUsIAotICAgIDksIDExLCAyMTgsIDExMiwgMjQyLCA0NCwgOSwgMTEsIDIxOCwgMTEyLCAyMTcsIDgxLCA5LCAxMSwgMjE4LCAxMTIsIDIxMSwgCi0gICAgNDMsIDksIDExLCAyMTgsIDExMiwgMjM1LCAwLCA5LCAxMSwgMjE4LCAxMTIsIDIzMSwgODMsIDksIDExLCAyMTgsIDExMiwgCi0gICAgMjI4LCA2NywgOSwgMTEsIDIxOCwgMTEyLCAyMjEsIDE2OCwgOSwgMTEsIDIxOCwgMTEyLCAyNTQsIDIwNSwgOSwgMTEsIAotICAgIDIxOCwgMTEyLCAyNDQsIDE1MCwgOSwgMTEsIDIxOCwgMTEyLCAyMjIsIDI4LCA5LCAxMSwgMjE4LCAxMTIsIDIyNCwgODQsIAotICAgIDksIDExLCAyMTgsIDExMiwgMjIwLCA2MSwgOSwgMTEsIDIxOCwgMTEyLCAyMTcsIDgsIDksIDExLCAyMTgsIDExMiwgMjE2LCAKLSAgICAxOTMsIDksIDExLCAyMTgsIDExMiwgMjM0LCAxMzUsIDksIDExLCAyMTgsIDExMiwgMjQ4LCAyMjQsIDksIDExLCAyMTgsIAotICAgIDExMiwgMjEwLCAxMTEsIDksIDExLCAyMTgsIDExMiwgMjQyLCAyNTEsIDksIDExLCAyMTgsIDExMiwgMjQ3LCAxMjcsIDI1MiwgCi0gICAgNjIsIDksIDExLCAyMTgsIDExMiwgMjQ3LCAxMjcsIDI0NCwgMTUwLCA5LCAxMSwgMjMyLCAxMjgsIDI1NCwgMTc5LCA5LCAKLSAgICAxMSwgMjMyLCAxMjgsIDI1MiwgNjIsIDksIDExLCAyMzIsIDEyOCwgMjM1LCAxMjksIDksIDExLCAyMzIsIDEyOCwgMjQ4LCAKLSAgICAyMDMsIDksIDExLCAyMzIsIDEyOCwgMjQxLCAyMjUsIDksIDExLCAyMzIsIDEyOCwgMjEyLCAzMCwgOSwgMTEsIDIzMiwgCi0gICAgMTI4LCAyMTAsIDEwOCwgOSwgMTEsIDIzMiwgMTI4LCAyNDIsIDQ0LCA5LCAxMSwgMjMyLCAxMjgsIDIxNywgODEsIDksIDExLCAKLSAgICAyMzIsIDEyOCwgMjExLCA0MywgOSwgMTEsIDIzMiwgMTI4LCAyMzMsIDEwOCwgOSwgMTEsIDIzMiwgMTI4LCAyMzEsIDgzLCAKLSAgICA5LCAxMSwgMjMyLCAxMjgsIDIyOCwgNjcsIDksIDExLCAyMzIsIDEyOCwgMjIxLCAxNjgsIDksIDExLCAyMzIsIDEyOCwgCi0gICAgMjU0LCAyMDUsIDksIDExLCAyMzIsIDEyOCwgMjQ0LCAxNTAsIDksIDExLCAyMzIsIDEyOCwgMjIyLCAyOCwgOSwgMTEsIAotICAgIDIzMiwgMTI4LCAyMjQsIDg0LCA5LCAxMSwgMjMyLCAxMjgsIDIyMywgOTgsIDksIDExLCAyMzIsIDEyOCwgMjIwLCA2MSwgOSwgCi0gICAgMTEsIDIzMiwgMTI4LCAyMTcsIDgsIDksIDExLCAyMzIsIDEyOCwgMjE2LCAxOTMsIDksIDExLCAyMzIsIDEyOCwgMjM0LCAKLSAgICAxMzUsIDksIDExLCAyMzIsIDEyOCwgMjE2LCAyMDMsIDksIDExLCAyMzIsIDEyOCwgMjQ4LCAyMjQsIDksIDExLCAyMzIsIAotICAgIDEyOCwgMjEwLCAxMTEsIDksIDExLCAyMzIsIDEyOCwgMjQyLCAyNTEsIDksIDExLCAxMzksIDI1MiwgNjIsIDksIDExLCAKLSAgICAxMzksIDIzNSwgMTI5LCA5LCAxMSwgMTM5LCAyNDgsIDIwMywgOSwgMTEsIDEzOSwgMjEyLCAzMCwgOSwgMTEsIDEzOSwgCi0gICAgMjEwLCAxMDgsIDksIDExLCAxMzksIDI0MiwgNDQsIDksIDExLCAxMzksIDIxNywgODEsIDksIDExLCAxMzksIDIxMSwgNDMsIAotICAgIDksIDExLCAxMzksIDIzMywgMTA4LCA5LCAxMSwgMTM5LCAyMzEsIDgzLCA5LCAxMSwgMTM5LCAyMjgsIDY3LCA5LCAxMSwgCi0gICAgMTM5LCAyMjEsIDE2OCwgOSwgMTEsIDEzOSwgMjU0LCAyMDUsIDksIDExLCAxMzksIDI0NCwgMTUwLCA5LCAxMSwgMTM5LCAKLSAgICAyMjIsIDI4LCA5LCAxMSwgMTM5LCAyMjQsIDg0LCA5LCAxMSwgMTM5LCAyMjMsIDk4LCA5LCAxMSwgMTM5LCAyMjAsIDYxLCAKLSAgICA5LCAxMSwgMTM5LCAyMTcsIDgsIDksIDExLCAxMzksIDIxNiwgMTkzLCA5LCAxMSwgMTM5LCAyMzQsIDEzNSwgOSwgMTEsIAotICAgIDEzOSwgMjE2LCAyMDMsIDksIDExLCAxMzksIDI0OCwgMjI0LCA5LCAxMSwgMTM5LCAyMTAsIDExMSwgOSwgMTEsIDEzOSwgCi0gICAgMjQyLCAyNTEsIDksIDExLCAyMjYsIDE3MiwgNjYsIDIsIDEyMiwgMiwgMjE3LCA0NCwgOSwgMTEsIDIyNiwgMTcyLCAxMjIsIAotICAgIDIsIDI0OCwgMjAzLCAyMzEsIDIxMCwgODYsIDI0NSwgMjI4LCAyMTEsIDIzOSwgMjMxLCAyMTAsIDg2LCAyMTksIDMwLCAKLSAgICAyMTEsIDIzOSwgMjMxLCAyMTAsIDg2LCAyMTIsIDksIDIxMSwgMjM5LCAyMzEsIDIxMCwgODYsIDIyOCwgNjEsIDIxMSwgCi0gICAgMjM5LCAyMzEsIDIxMCwgODYsIDIyMywgMTE0LCAyNDYsIDEwNCwgMjMxLCAyMTAsIDg2LCAyNDIsIDEzNCwgMjQ2LCAxMDQsIAotICAgIDIzMSwgMjEwLCA4NiwgNzEsIDI0NiwgMTA0LCAyMzEsIDIxMCwgODYsIDEyMywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgCi0gICAgODYsIDExMywgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIDEzNCwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgODYsIAotICAgIDI0NCwgMTksIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyNDQsIDg5LCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgCi0gICAgMjE5LCAxMjcsIDY0LCAyNTAsIDE0OSwgMjMxLCAyMTAsIDg2LCAyMjAsIDEyNCwgNjQsIDI1MCwgMTQ5LCAyMzEsIDIxMCwgCi0gICAgODYsIDI0NSwgMjAxLCA2NCwgMjUwLCAxNDksIDIzMSwgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTAsIDE0OSwgMjMxLCAKLSAgICAyMTAsIDg2LCAxMjMsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAxMTMsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIAotICAgIDg2LCAxMzQsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAyNDQsIDE5LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCA4OSwgNjQsIDI1MiwgMTYxLCAyMzEsIDIxMCwgODYsIDIxOSwgMTI3LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCAKLSAgICA4NiwgMjIwLCAxMjQsIDY0LCAyNTIsIDE2MSwgMjMxLCAyMTAsIDg2LCAyNDUsIDIwMSwgNjQsIDI1MiwgMTYxLCAyMzEsIAotICAgIDIxMCwgODYsIDIyOCwgMjA1LCA2NCwgMjUyLCAxNjEsIDIzMSwgMjEwLCA4NiwgMTIzLCA2NCwgMjUwLCA0MiwgMjMxLCAKLSAgICAyMTAsIDg2LCAxMTMsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIDEzNCwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjQ0LCAxOSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjQ0LCA4OSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjE5LCAxMjcsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIDIyMCwgMTI0LCA2NCwgMjUwLCA0MiwgMjMxLCAyMTAsIDg2LCAKLSAgICAyNDUsIDIwMSwgNjQsIDI1MCwgNDIsIDIzMSwgMjEwLCA4NiwgMjI4LCAyMDUsIDY0LCAyNTAsIDQyLCAyMzEsIDIxMCwgODYsIAotICAgIDIyNSwgMjgsIDIzMSwgMjEwLCA4NiwgMjI2LCAxNjAsIDIzMSwgMjEwLCA4NiwgMjUyLCAxNjIsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUwLCA3OCwgMjMxLCAyMTAsIDg2LCAyMTgsIDI0MSwgMjMxLCAyMTAsIDg2LCAyMTgsIDQwLCAyMzEsIDIxMCwgODYsIAotICAgIDI1MywgMTg3LCAyMzEsIDIxMCwgODYsIDIxMSwgMjMyLCAyMzEsIDIxMCwgODYsIDIzNSwgNjgsIDIzMSwgMjEwLCA4NiwgCi0gICAgMjUyLCAxOTIsIDEzMSwgODYsIDIwMywgMjUyLCAxOTIsIDEzMSwgODYsIDI0MSwgNTAsIDEzMSwgODYsIDI0MSwgNDksIAotICAgIDEzMSwgODYsIDI0MSwgNDgsIDEzMSwgODYsIDI0MSwgNDcsIDEzMSwgODYsIDI0MSwgNDYsIDEzMSwgODYsIDI0MSwgNDUsIAotICAgIDEzMSwgODYsIDI0MSwgNDQsIDEzMSwgODYsIDI0MSwgNDMsIDEzMSwgODYsIDI0MSwgNDIsIDEzMSwgODYsIDI0MSwgNDEsIAotICAgIDEzMSwgODYsIDI0MSwgNDAsIDEzMSwgODYsIDI0MSwgMzksIDEzMSwgODYsIDI0MSwgMzgsIDEzMSwgODYsIDI0MSwgMzcsIAotICAgIDEzMSwgODYsIDI0MSwgMzYsIDEzMSwgODYsIDI0MSwgMzUsIDEzMSwgODYsIDI0MSwgMzQsIDEzMSwgODYsIDI0MSwgMzMsIAotICAgIDEzMSwgODYsIDI0MSwgMzIsIDEzMSwgODYsIDI0MSwgMzEsIDEzMSwgODYsIDI0MSwgMzAsIDEzMSwgODYsIDI0MSwgMjksIAotICAgIDEzMSwgODYsIDI0MSwgMjgsIDEzMSwgODYsIDI0MSwgMjcsIDEzMSwgODYsIDI0MSwgMjYsIDEzMSwgODYsIDI0MSwgMjUsIAotICAgIDEzMSwgODYsIDI0MSwgMjQsIDEzMSwgODYsIDI0MSwgMjMsIDEzMSwgODYsIDI0MSwgMjIsIDEzMSwgODYsIDI0MSwgMjEsIAotICAgIDEzMSwgODYsIDI0MSwgMjAsIDEzMSwgODYsIDI0MSwgMTksIDEzMSwgODYsIDI0MSwgMTgsIDEzMSwgODYsIDI0MSwgMTcsIAotICAgIDEzMSwgODYsIDI0MSwgMTYsIDEzMSwgODYsIDI0MSwgMTUsIDEzMSwgODYsIDI0MSwgMTQsIDEzMSwgODYsIDI0MSwgMTMsIAotICAgIDEzMSwgODYsIDI0MSwgMTIsIDEzMSwgODYsIDI0MSwgMTEsIDEzMSwgODYsIDI0MSwgMTAsIDEzMSwgODYsIDI0MSwgOSwgCi0gICAgMTMxLCA4NiwgMjQxLCA4LCAxMzEsIDg2LCAyNDEsIDcsIDEzMSwgODYsIDI0MSwgNiwgMTMxLCA4NiwgMjQxLCA1LCAxMzEsIAotICAgIDg2LCAyNDEsIDQsIDEzMSwgODYsIDI0MSwgMywgMTMxLCA4NiwgMjQxLCAyLCAxMzEsIDg2LCA2NywgMjUyLCAxOTIsIDEzMSwgCi0gICAgODYsIDIxMywgMjM4LCAxMzEsIDg2LCAyMTMsIDIzNywgMTMxLCA4NiwgMjEzLCAyMzYsIDEzMSwgODYsIDIxMywgMjM1LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIzNCwgMTMxLCA4NiwgMjEzLCAyMzMsIDEzMSwgODYsIDIxMywgMjMyLCAxMzEsIDg2LCAyMTMsIAotICAgIDIzMSwgMTMxLCA4NiwgMjEzLCAyMzAsIDEzMSwgODYsIDIxMywgMjI5LCAxMzEsIDg2LCAyMTMsIDIyOCwgMTMxLCA4NiwgCi0gICAgMjEzLCAyMjcsIDEzMSwgODYsIDIxMywgMjI2LCAxMzEsIDg2LCAyMTMsIDIyNSwgMTMxLCA4NiwgMjEzLCAyMjQsIDEzMSwgCi0gICAgODYsIDIxMywgMjIzLCAxMzEsIDg2LCAyMTMsIDIyMiwgMTMxLCA4NiwgMjEzLCAyMjEsIDEzMSwgODYsIDIxMywgMjIwLCAKLSAgICAxMzEsIDg2LCAyMTMsIDIxOSwgMTMxLCA4NiwgMjEzLCAyMTgsIDEzMSwgODYsIDIxMywgMjE3LCAxMzEsIDg2LCAyMTMsIAotICAgIDIxNiwgMTMxLCA4NiwgMjEzLCAyMTUsIDEzMSwgODYsIDIxMywgMjE0LCAxMzEsIDg2LCAyMTMsIDIxMywgMTMxLCA4NiwgCi0gICAgMjEzLCAyMTIsIDEzMSwgODYsIDIxMywgMjExLCAxMzEsIDg2LCAyMTMsIDIxMCwgMTMxLCA4NiwgMjEzLCAyMDksIDEzMSwgCi0gICAgODYsIDIxMywgMjA4LCAxMzEsIDg2LCAyMTMsIDIwNywgMTMxLCA4NiwgMjEzLCAyMDYsIDEzMSwgODYsIDIxMywgMjA1LCAKLSAgICAxMzEsIDg2LCAyMTMsIDIwNCwgMTMxLCA4NiwgMjEzLCAyMDMsIDEzMSwgODYsIDIxMywgMjAyLCAxMzEsIDg2LCAyMTMsIAotICAgIDIwMSwgMTMxLCA4NiwgMjEzLCAyMDAsIDEzMSwgODYsIDIxMywgMTk5LCAxMzEsIDg2LCAyMTMsIDE5OCwgMTMxLCA4NiwgCi0gICAgMjEzLCAxOTcsIDEzMSwgODYsIDIxMywgMTk2LCAxMzEsIDg2LCAyMTMsIDE5NSwgMTMxLCA4NiwgMjEzLCAxOTQsIDEzMSwgCi0gICAgODYsIDIxMywgMTkzLCAxMzEsIDg2LCAyMTMsIDE5MiwgMTMxLCA4NiwgMjEzLCAxOTEsIDEzMSwgODYsIDIxMywgMTkwLCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjUyLCAxOTIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjE5LCAxNywgCi0gICAgMjI1LCAzNiwgMjUwLCAyNTEsIDExMywgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAxMzQsIDY0LCAyMTksIDE3LCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAxOSwgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgCi0gICAgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIxOSwgMTI3LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIAotICAgIDIyMCwgMTI0LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyOCwgMjA1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgMjQ5LCA2NCwgMjE5LCAKLSAgICAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNCwgMzcsIAotICAgIDY0LCAyMTksIDE3LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDIxOSwgMTcsIDIyNSwgMzYsIDI1MCwgMjUxLCAKLSAgICAyMzQsIDg1LCA2NCwgMjE5LCAxNywgMjI1LCAzNiwgMjUwLCAyNTEsIDI1NSwgMTgsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDExMywgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMTM0LCA2NCwgMjQxLCAyMzIsIDIyNSwgCi0gICAgMzYsIDI1MCwgMjUxLCAyNDQsIDE5LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDQsIDg5LCA2NCwgMjQxLCAKLSAgICAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMTksIDEyNywgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjIwLCAKLSAgICAxMjQsIDY0LCAyNDEsIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDI0NSwgMjAxLCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIAotICAgIDI1MCwgMjUxLCAyMjgsIDIwNSwgNjQsIDI0MSwgMjMyLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE2LCAyNDksIDY0LCAyNDEsIAotICAgIDIzMiwgMjI1LCAzNiwgMjUwLCAyNTEsIDIzNSwgMTQ1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzQsIAotICAgIDM3LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMjQsIDE4LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgCi0gICAgMjUxLCAyMzQsIDg1LCA2NCwgMjQxLCAyMzIsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjQ3LCAyNTUsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAxMTMsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAxOSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCAKLSAgICA4OSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgCi0gICAgMjUwLCAyNTEsIDIyMCwgMTI0LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDUsIDIwMSwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI4LCAyMDUsIDY0LCAyNDcsIDI1NSwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgCi0gICAgMjQ5LCA2NCwgMjQ3LCAyNTUsIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzUsIDE0NSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAKLSAgICAyNTAsIDI1MSwgMjM0LCAzNywgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDI0NywgCi0gICAgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCA4NSwgNjQsIDI0NywgMjU1LCAyMjUsIDM2LCAyNTAsIDI1MSwgODUsIAotICAgIDIzNSwgNjgsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNTUsIDE4LCA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAKLSAgICAxMTMsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDEzNCwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjQ0LCAxOSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjQ0LCA4OSwgNjQsIDI0OSwgMjUwLCAKLSAgICAyMjUsIDM2LCAyNTAsIDI1MSwgMjE5LCAxMjcsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDIyMCwgMTI0LCAKLSAgICA2NCwgMjQ5LCAyNTAsIDIyNSwgMzYsIDI1MCwgMjUxLCAyNDUsIDIwMSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjI4LCAyMDUsIDY0LCAyNDksIDI1MCwgMjI1LCAzNiwgMjUwLCAyNTEsIDIxNiwgMjQ5LCA2NCwgMjQ5LCAyNTAsIAotICAgIDIyNSwgMzYsIDI1MCwgMjUxLCAyMzUsIDE0NSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjM0LCAzNywgCi0gICAgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgMjI0LCAxOCwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIAotICAgIDI1MSwgMjM0LCA4NSwgNjQsIDI0OSwgMjUwLCAyMjUsIDM2LCAyNTAsIDI1MSwgNzEsIDIzNSwgNjgsIDIxLCAyMTAsIDg3LCAKLSAgICAyNDMsIDIzNiwgMjE4LCAxMzEsIDIxLCAyMTAsIDg3LCAyNDksIDIyNywgMjEsIDEyMywgMjQ5LCAyMjcsIDIxLCAxMTMsIAotICAgIDI0OSwgMjI3LCAyMSwgMTM0LCAyNDksIDIyNywgMjEsIDI0NCwgMTksIDI0OSwgMjI3LCAyMSwgMjQ0LCA4OSwgMjQ5LCAKLSAgICAyMjcsIDIxLCAyMTksIDEyNywgMjQ5LCAyMjcsIDIxLCAyMjAsIDEyNCwgMjQ5LCAyMjcsIDIxLCAyNDUsIDIwMSwgMjQ5LCAKLSAgICAyMjcsIDIxLCAyMjgsIDIwNSwgMjQ5LCAyMjcsIDg4LCA3LCA2LCAxLCA2MSwgODgsIDcsIDYsIDEsIDI1MywgMTY2LCA4OCwgCi0gICAgNywgNiwgMSwgMjUxLCA3NCwgODgsIDcsIDYsIDEsIDI0OSwgNjgsIDg4LCA3LCA2LCAxLCA3NiwgODgsIDcsIDYsIDEsIAotICAgIDI0NSwgMTQsIDg4LCA3LCA2LCAxLCAyNDMsIDIwOSwgODgsIDcsIDYsIDEsIDI0MiwgNjcsIDg4LCA3LCA2LCAxLCA3NCwgCi0gICAgODgsIDcsIDYsIDEsIDIzNSwgMTUwLCA4OCwgNywgNiwgMSwgMjM1LCAyOSwgODgsIDcsIDYsIDEsIDE1NiwgODgsIDcsIDYsIAotICAgIDEsIDE5NCwgODgsIDcsIDYsIDEsIDIzMCwgMzAsIDg4LCA3LCA2LCAxLCA3OCwgODgsIDcsIDYsIDEsIDIyNiwgMTA5LCA4OCwgCi0gICAgNywgNiwgMSwgMjI0LCA5OSwgODgsIDcsIDYsIDEsIDE1MywgODgsIDcsIDYsIDEsIDIyMiwgOTMsIDg4LCA3LCA2LCAxLCAKLSAgICAyMTcsIDE1MywgODgsIDcsIDYsIDEsIDY5LCA4OCwgNywgNiwgMSwgMjE0LCAxMDUsIDg4LCA3LCA2LCAxLCAyMTIsIDk4LCAKLSAgICA4OCwgNywgNiwgMSwgMjExLCAxNzgsIDg4LCA3LCA2LCAxLCAyMTEsIDExNywgODgsIDcsIDYsIDEsIDIxMCwgMTU5LCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCA3LCA2LCAxLCAyMjIsIDkzLCAzNywgMzIsIDcsIDYsIDEsIDI1MSwgNzQsIDM3LCAzMiwgCi0gICAgNywgNiwgMSwgMTUzLCAzNywgMjUwLCAxOTksIDM3LCAyMTEsIDE4MCwgOTIsIDcsIDYsIDEsIDYxLCA5MiwgNywgNiwgMSwgCi0gICAgMjUzLCAxNjYsIDkyLCA3LCA2LCAxLCAyNTEsIDc0LCA5MiwgNywgNiwgMSwgMjQ5LCA2OCwgOTIsIDcsIDYsIDEsIDc2LCAKLSAgICA5MiwgNywgNiwgMSwgMjQ1LCAxNCwgOTIsIDcsIDYsIDEsIDI0MywgMjA5LCA5MiwgNywgNiwgMSwgMjQyLCA2NywgOTIsIDcsIAotICAgIDYsIDEsIDc0LCA5MiwgNywgNiwgMSwgMjM1LCAxNTAsIDkyLCA3LCA2LCAxLCAyMzUsIDI5LCA5MiwgNywgNiwgMSwgMTU2LCAKLSAgICA5MiwgNywgNiwgMSwgMTk0LCA5MiwgNywgNiwgMSwgMjMwLCAzMCwgOTIsIDcsIDYsIDEsIDc4LCA5MiwgNywgNiwgMSwgCi0gICAgMjI2LCAxMDksIDkyLCA3LCA2LCAxLCAyMjQsIDk5LCA5MiwgNywgNiwgMSwgMTUzLCA5MiwgNywgNiwgMSwgMjIyLCA5MywgCi0gICAgOTIsIDcsIDYsIDEsIDIxNywgMTUzLCA5MiwgNywgNiwgMSwgNjksIDkyLCA3LCA2LCAxLCAyMTQsIDEwNSwgOTIsIDcsIDYsIAotICAgIDEsIDIxMiwgOTgsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTE3LCA5MiwgNywgNiwgMSwgCi0gICAgMjEwLCAxNTksIDkyLCAyNDAsIDIwOCwgOTIsIDIzMCwgNTQsIDkyLCAyMjEsIDE4NSwgOTIsIDIxOCwgMjI4LCA5MiwgMjI0LCAKLSAgICAyMjEsIDkyLCAyMTIsIDIzLCAxNTIsIDM3LCA3LCA2LCAxLCA2MSwgMTUyLCAzNywgNywgNiwgMSwgMjUzLCAxNjYsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDI1MSwgNzQsIDE1MiwgMzcsIDcsIDYsIDEsIDI0OSwgNjgsIDE1MiwgMzcsIDcsIDYsIDEsIDc2LCAKLSAgICAxNTIsIDM3LCA3LCA2LCAxLCAyNDUsIDE0LCAxNTIsIDM3LCA3LCA2LCAxLCAyNDMsIDIwOSwgMTUyLCAzNywgNywgNiwgMSwgCi0gICAgMjQyLCA2NywgMTUyLCAzNywgNywgNiwgMSwgNzQsIDE1MiwgMzcsIDcsIDYsIDEsIDIzNSwgMTUwLCAxNTIsIDM3LCA3LCA2LCAKLSAgICAxLCAyMzUsIDI5LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTYsIDE1MiwgMzcsIDcsIDYsIDEsIDE5NCwgMTUyLCAzNywgNywgNiwgCi0gICAgMSwgMjMwLCAzMCwgMTUyLCAzNywgNywgNiwgMSwgNzgsIDE1MiwgMzcsIDcsIDYsIDEsIDIyNiwgMTA5LCAxNTIsIDM3LCA3LCAKLSAgICA2LCAxLCAyMjQsIDk5LCAxNTIsIDM3LCA3LCA2LCAxLCAxNTMsIDE1MiwgMzcsIDcsIDYsIDEsIDIyMiwgOTMsIDE1MiwgMzcsIAotICAgIDcsIDYsIDEsIDIxNywgMTUzLCAxNTIsIDM3LCA3LCA2LCAxLCA2OSwgMTUyLCAzNywgNywgNiwgMSwgMjE0LCAxMDUsIDE1MiwgCi0gICAgMzcsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTEsIAotICAgIDExNywgMTUyLCAzNywgNywgNiwgMSwgMjEwLCAxNTksIDIyMywgMTYwLCAyMzEsIDEwMiwgNTAsIDIyMywgMTYwLCAyMzEsIAotICAgIDk5LCA1MCwgMTUyLCA5MiwgNywgNiwgMSwgNjEsIDE1MiwgOTIsIDcsIDYsIDEsIDI1MywgMTY2LCAxNTIsIDkyLCA3LCA2LCAKLSAgICAxLCAyNTEsIDc0LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDksIDY4LCAxNTIsIDkyLCA3LCA2LCAxLCA3NiwgMTUyLCA5MiwgNywgCi0gICAgNiwgMSwgMjQ1LCAxNCwgMTUyLCA5MiwgNywgNiwgMSwgMjQzLCAyMDksIDE1MiwgOTIsIDcsIDYsIDEsIDI0MiwgNjcsIAotICAgIDE1MiwgOTIsIDcsIDYsIDEsIDc0LCAxNTIsIDkyLCA3LCA2LCAxLCAyMzUsIDE1MCwgMTUyLCA5MiwgNywgNiwgMSwgMjM1LCAKLSAgICAyOSwgMTUyLCA5MiwgNywgNiwgMSwgMTU2LCAxNTIsIDkyLCA3LCA2LCAxLCAxOTQsIDE1MiwgOTIsIDcsIDYsIDEsIDIzMCwgCi0gICAgMzAsIDE1MiwgOTIsIDcsIDYsIDEsIDc4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIDEwOSwgMTUyLCA5MiwgNywgNiwgMSwgCi0gICAgMjI0LCA5OSwgMTUyLCA5MiwgNywgNiwgMSwgMTUzLCAxNTIsIDkyLCA3LCA2LCAxLCAyMjIsIDkzLCAxNTIsIDkyLCA3LCA2LCAKLSAgICAxLCAyMTcsIDE1MywgMTUyLCA5MiwgNywgNiwgMSwgNjksIDE1MiwgOTIsIDcsIDYsIDEsIDIxNCwgMTA1LCAxNTIsIDkyLCAKLSAgICA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIAotICAgIDE1MiwgOTIsIDcsIDYsIDEsIDIxMCwgMTU5LCAyNDksIDEzNiwgMTUyLCA5MiwgNywgNiwgMSwgMjI2LCAxMDksIDE1MiwgCi0gICAgOTIsIDI0MCwgMTIwLCAxNTIsIDkyLCAxOTEsIDE1MiwgOTIsIDIwNiwgMTUyLCA5MiwgMjU1LCAzNCwgMTUyLCA5MiwgMjEyLCAKLSAgICAyMywgNDIsIDI0NywgMTcyLCA5MiwgMjUwLCAzMSwgOTIsIDI0OSwgMTc4LCA5MiwgMjQ0LCA0LCA5MiwgMjQwLCAxMTIsIAotICAgIDkyLCAyMjksIDkxLCA5MiwgMjI5LCA4NCwgOTIsIDIyNiwgMjE4LCA5MiwgMjE5LCAzNywgOTIsIDEyMCwgMiwgMjQ1LCAzOSwgCi0gICAgNzksIDkyLCAyMTMsIDExOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgNjEsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIAotICAgIDEsIDI1MywgMTY2LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyNTEsIDc0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAKLSAgICAxLCAyNDksIDY4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCA3NiwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgCi0gICAgMjQ1LCAxNCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjQzLCAyMDksIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIAotICAgIDI0MiwgNjcsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc0LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMzUsIAotICAgIDE1MCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMjM1LCAyOSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMTU2LCAKLSAgICAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAxOTQsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIzMCwgMzAsIDIyMywgCi0gICAgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDc4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMjYsIDEwOSwgMjIzLCAxMDYsIAotICAgIDIzNSwgMjQ2LCAxNiwgMSwgMjI0LCA5OSwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAxNiwgMSwgMTUzLCAyMjMsIDEwNiwgMjM1LCAKLSAgICAyNDYsIDE2LCAxLCAyMjIsIDkzLCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMTcsIDE1MywgMjIzLCAxMDYsIDIzNSwgCi0gICAgMjQ2LCAxNiwgMSwgNjksIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxNCwgMTA1LCAyMjMsIDEwNiwgMjM1LCAyNDYsIAotICAgIDE2LCAxLCAyMTIsIDk4LCAyMjMsIDEwNiwgMjM1LCAyNDYsIDE2LCAxLCAyMTEsIDE3OCwgMjIzLCAxMDYsIDIzNSwgMjQ2LCAKLSAgICAxNiwgMSwgMjExLCAxMTcsIDIyMywgMTA2LCAyMzUsIDI0NiwgMTYsIDEsIDIxMCwgMTU5LCA0MiwgMTQxLCAyNDEsIDcwLCAKLSAgICA5MiwgNTYsIDIzNCwgMjQsIDkyLCA1NiwgMjA2LCA5MiwgMTAsIDIxNCwgMTc3LCAyMzgsIDU3LCA5MiwgMTAsIDIxNCwgCi0gICAgMTc3LCAyMzgsIDYxLCA5MiwgMTAsIDIxNCwgMTc3LCAyMzgsIDY5LCA5MiwgNTYsIDI0OCwgOTgsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzUsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNjIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNDksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTEsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNzIsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzQsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTAsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgMzYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjQsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDQsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNTMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNzksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzIsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNTksIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNzcsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjgsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNTQsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzMsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNTYsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgMzcsIDkyLCAxMCwgMjE0LCAKLSAgICAxNzcsIDIzOCwgNjcsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDUsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDcsIDkyLCAKLSAgICAxMCwgMjE0LCAxNzcsIDIzOCwgNDgsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNDAsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgCi0gICAgNzEsIDkyLCAxMCwgMjE0LCAxNzcsIDIzOCwgNjUsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIDE3NywgCi0gICAgMjM4LCA0NiwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDc4LCAyMTYsIDcsIDIyMCwgCi0gICAgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNzYsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAyMTQsIAotICAgIDE3NywgMjM4LCA2MCwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDQzLCAyMTYsIDcsIAotICAgIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNTYsIDIxNiwgNywgMjIwLCA1NSwgMjUxLCAxNjUsIDEwLCAKLSAgICAyMTQsIDE3NywgMjM4LCAzOSwgMjE2LCA3LCAyMjAsIDU1LCAyNTEsIDE2NSwgMTAsIDIxNCwgMTc3LCAyMzgsIDcwLCAyMTYsIAotICAgIDcsIDIyMCwgNTUsIDI1MSwgMTY1LCAxMCwgMjE0LCAxNzcsIDIzOCwgNTIsIDM3LCAxNTQsIDI1NCwgMjU0LCAzNywgMTU0LCAKLSAgICAyNTUsIDIxLCAyNDksIDc5LCAyNDQsIDUwLCAyNTAsIDgsIDIxNCwgMTk0LCAyMjgsIDIxOCwgMiwgMjE4LCAxNTUsIDIxOCwgCi0gICAgMzQsIDExNSwgMjMwLCAxMTksIDIxOCwgMzMsIDI1MCwgMzQsIDI1MywgMjE1LCAyNDYsIDYyLCAyMTgsIDMyLCAxMTUsIAotICAgIDI1MSwgMTI2LCAyMjMsIDE2MSwgMjUxLCAxNDgsIDI1MywgMjE1LCAyMjgsIDIxNywgMjEyLCA0MSwgMjEyLCAzNSwgMjEzLCAKLSAgICAxMzEsIDIzMCwgMjAwLCAyMTIsIDI1LCAyNDUsIDIzMiwgMjQyLCAxODgsIDI0NSwgNTMsIDI0NSwgMjMyLCAyNDIsIDE4OCwgCi0gICAgMjU0LCAxMzYsIDI0NSwgMjMyLCAyNDIsIDE4OCwgMjUzLCAyMzMsIDI0MiwgMTg4LCAyLCAyMzEsIDU2LCAxNjYsIDIzMCwgCi0gICAgMTM0LCA4NywgMjEyLCAyNywgMjQ5LCAxNDUsIDIzMCwgMTM0LCA4NywgMjQ0LCAxMDAsIDIyNCwgMjUsIDIzMCwgMTM0LCAKLSAgICA4NywgMjEyLCAyNywgMjQyLCAyMTcsIDIzMCwgMTM0LCA4NywgMjQzLCAyMzYsIDIzMCwgMTM0LCA4NywgMjEyLCA1MiwgCi0gICAgMjQyLCAyMTcsIDIzMCwgMTM0LCA4NywgMjMzLCA4NiwgMjI0LCAyNSwgMjMwLCAxMzQsIDg3LCAyMTIsIDUyLCAyNDksIAotICAgIDE0NSwgMjMwLCAxMzQsIDg3LCAyNDksIDE0NSwgMjMwLCAxMzMsIDE2NiwgMjMwLCAxMzQsIDIsIDI0NCwgMTk4LCAyNDQsIAotICAgIDEwMCwgMjI0LCAyNSwgMjMwLCAxMzQsIDIsIDI0NCwgMTk4LCAyMzMsIDg2LCAyMjQsIDI1LCAyMzAsIDEzNCwgMiwgMjQ0LCAKLSAgICAxOTgsIDI0MywgMjM2LCAyMzAsIDEzNCwgMiwgMjQ0LCAxOTgsIDIxOCwgMzksIDIsIDI0NCwgMTk4LCAyNDIsIDE4NiwgCi0gICAgMjE4LCAxNTgsIDIyMCwgMSwgMjE4LCAxNTgsIDI1MCwgMTI0LCAyMjEsIDE3MCwgMjQ1LCA0NywgMjE1LCAyMzYsIDI0OCwgCi0gICAgOTIsIDIxNSwgMjM2LCAyMjYsIDYzLCAyMTUsIDIzNiwgMjUxLCAzNSwgMjE1LCAxMTAsIDI1MCwgMTI2LCAyNTEsIDIxOCwgCi0gICAgMjIyLCAxOTMsIDI0MSwgMTg2LCAyMTgsIDM3LCAyNTEsIDIxOCwgMjQ1LCAyMzYsIDY0LCAyMzEsIDE5OSwgMjQ1LCAyMzYsIAotICAgIDY0LCAyMjMsIDM0LCAyNDEsIDIxMSwgMjQ0LCAxOSwgMjMzLCA2MCwgMjQ5LCAyNTQsIDIzMSwgMTc1LCAyMzMsIDU5LCAKLSAgICAyNDQsIDE4NCwgMjMzLCA1OSwgMjMzLCA2MCwgMjQ0LCA1NSwgMjM2LCA3LCAyMTEsIDIzOSwgMjMwLCA2MywgMjE2LCAzNSwgCi0gICAgMjUzLCAxOTksIDI0MiwgMTUwLCAyMzEsIDcyLCAyMTIsIDM5LCAyMTcsIDU4LCAyMzMsIDMyLCAyNTIsIDE1NywgMjI1LCAKLSAgICA2NSwgMjIzLCAxMTQsIDI1NCwgNjIsIDI0MiwgMTM0LCAyNTQsIDYyLCAyMjUsIDIyMCwgMjI1LCAyMjEsIDI1MCwgMTI3LCAKLSAgICAyMTgsIDExNiwgMjQyLCAzMCwgMjE5LCA5MiwgNjQsIDIyNSwgNDcsIDIzMSwgOTIsIDIyNiwgMjAxLCAyNTEsIDIwMiwgCi0gICAgMjI0LCAyMzIsIDIzMywgNDIsIDIyMywgMzUsIDI0OSwgMTUwLCAyMjMsIDM1LCAyNTIsIDE2NywgMjQ5LCAxODEsIDIyMywgCi0gICAgMzQsIDI0OSwgMTAzLCAyMiwgMjIzLCAzNCwgMjE4LCAxNDMsIDI1MSwgMTc1LCAyMTksIDE2LCAyNTEsIDE1OSwgMjQ0LCAzLCAKLSAgICAyNDMsIDI1NSwgMjIyLCAyMDksIDIxNywgMjQ3LCAyMjQsIDIzNCwgMjQ4LCAxODMsIDIyNiwgMjQwLCAyMTgsIDgsIDI0NCwgCi0gICAgMCwgMjE5LCAyMzIsIDI0NCwgOTksIDI1MSwgMjksIDIsIDIxNywgMjQwLCAyNDgsIDQzLCAyMTksIDU0LCAyNDAsIDExOSwgCi0gICAgMjQ5LCAxNDksIDIyMCwgNzIsIDI0MCwgMTE4LCAyNDAsIDExOSwgMjQ5LCAxNDksIDI0NiwgMTE2LCAyNDksIDE4MCwgMjUwLCAKLSAgICA5MiwgMTMwLCAyNTEsIDYsIDIzMiwgMTQ3LCAyNDksIDk2LCAyNDEsIDYyLCAyMjQsIDIzNiwgMjE5LCAyNDIsIDI1MiwgNDQsIAotICAgIDI1MSwgMTcxLCAyMjQsIDIzNywgNjQsIDI0NCwgNDEsIDI0OSwgMTc5LCAyNDQsIDMyLCAyMiwgMjM0LCAzOCwgMjE3LCAyMCwgCi0gICAgMjExLCAyMzAsIDI0MiwgMjAsIDIyMiwgMTQsIDI1MSwgMTg1LCAyMiwgMjQ5LCAxMTAsIDIxMSwgMjM3LCAyNDIsIDE5MSwgCi0gICAgMjQ5LCAyNDMsIDI0MiwgMTkxLCAyMTUsIDE5NCwgMjQ2LCA5OCwgMjUyLCA3MCwgMjMwLCA5OCwgMjUwLCAxNSwgMjUyLCAKLSAgICA3MCwgMjMwLCA5NywgMjUyLCAxOTUsIDI1MSwgMTg0LCAyMjMsIDM2LCAyMTEsIDIwMSwgMjI0LCAxOTgsIDI1MSwgMjQzLCAKLSAgICAyNTEsIDI4LCAyMzUsIDE0NCwgMjUwLCA4NSwgMjE1LCAyMzYsIDI0NCwgMTcwLCAyNTAsIDg0LCAyNDQsIDEwMiwgMjQ0LCAKLSAgICAxMDMsIDIxOSwgMTQsIDI1MiwgMTY2LCAyMjUsIDI1NCwgMjI0LCAyNDcsIDI0OSwgMjEyLCAyNTIsIDE2NywgMjE3LCA2MCwgCi0gICAgMjE1LCAyMzYsIDI0OSwgMTM2LCAyNDQsIDc1LCAyMjUsIDY2LCAyNDgsIDg5LCAyMzUsIDEzNywgMjQ3LCAxMzksIDI1MCwgCi0gICAgMjQwLCAyMTgsIDExNSwgMjExLCAyNDAsIDI1MCwgMTA2LCAyMzAsIDEzNCwgMjEzLCAxNjQsIDI1MCwgMTcwLCAyMjEsIAotICAgIDIwMSwgMjIxLCAyMjYsIDI0MiwgMTU1LCAyNTEsIDMsIDI1MCwgMjQxLCAyNDAsIDI1MiwgMjQ0LCAxMzgsIDIxMiwgMCwgCi0gICAgMjIyLCAyMDIsIDI0OSwgMjQ0LCAyNDQsIDk0LCAyMjUsIDUsIDIyLCAyNDQsIDk4LCAyMzAsIDIzMiwgMjMwLCAxMTMsIAotICAgIDI1MSwgMTgsIDI1MCwgNDcsIDI0MSwgMjM5LCAyNTMsIDI0OSwgMjI2LCA2NiwgMjE2LCAxNSwgMjQyLCAyLCAyNTAsIDM3LCAKLSAgICAyMTYsIDI0MywgMjE2LCAxMTQsIDI1MCwgMjgsIDI1MSwgMjEwLCAyMjUsIDE4MCwgMjUzLCAyNDgsIDIxMywgMTcyLCAyNDMsIAotICAgIDExNywgMjQ3LCAyMDUsIDI0MSwgMTYzLCAyMTksIDg2LCAyMzEsIDIzOSwgMjUxLCAyNTMsIDI0MywgMTE4LCAyNDcsIDI0OCwgCi0gICAgMjUxLCAxNzQsIDI0NCwgNjAsIDIyNSwgMzYsIDI1MCwgMjQ5LCAyOCwgMjI4LCA1MiwgMjMwLCA5MCwgMjgsIDIyOCwgNDcsIAotICAgIDIyMSwgMjE0LCAyNDIsIDEwNiwgMjgsIDIzNCwgMTQzLCAyMTUsIDE5MSwgMjEzLCAxNTQsIDI4LCAyMjEsIDE5NCwgMjIyLCAKLSAgICAxMjYsIDIyMCwgMTMsIDIsIDIyMSwgMjI5LCAyMTYsIDI0NSwgMjIzLCAxODEsIDIyLCAyNTIsIDE2NywgMjE5LCAxMDcsIAotICAgIDIyLCAyMTksIDEwNywgMjUxLCAxOTUsIDI1MiwgMTMxLCAyMiwgMjQxLCA1NiwgMjUwLCAxMjgsIDI0NCwgODEsIDIxOSwgCi0gICAgNjUsIDIyMiwgMTI3LCAyMTgsIDEzLCAyMTUsIDE5NSwgMjQwLCAyNTMsIDIyMywgMTgyLCAyNTQsIDEzNywgMjQ0LCAzOSwgCi0gICAgMjIyLCAxMzgsIDI0NCwgMzksIDIxNywgMjQyLCAyNDAsIDI0MiwgMjUxLCAxMjcsIDI0MCwgMjQyLCAyLCAyNDMsIDEwMSwgCi0gICAgMjI2LCAyMzMsIDI1MSwgMTI3LCAyMzUsIDEzNywgMjI0LCAyNDIsIDIyNiwgMjMyLCAyNDUsIDUyLCAyMjQsIDI0MiwgMjI2LCAKLSAgICAyMzIsIDI0MCwgMjUxLCAyNTIsIDE1MywgMjUzLCAxODksIDIxNiwgMjUzLCAyMzEsIDIzOSwgMjQwLCAyNDcsIDIzMiwgCi0gICAgMTE3LCAyNDAsIDI0NywgMjQ5LCAxODQsIDIxOCwgMTI3LCAyMjEsIDIwMCwgMjQ4LCA1MSwgMjE4LCAxMjcsIDI0NCwgMTg4LCAKLSAgICAyMzUsIDE1NSwgMjMzLCA5NSwgMjM1LCAxMzcsIDI1MCwgMjM0LCAyNDUsIDUyLCAyNTAsIDIzNCwgMjIzLCAxNDQsIDIzMCwgCi0gICAgMTE3LCAyMjYsIDExOCwgMjEyLCA0MSwgMjUxLCAxMzEsIDI0OSwgMTUzLCAyMTYsIDEwNywgMjMzLCAyNCwgMjIzLCAxODMsIAotICAgIDI1MCwgMjMyLCAyNDYsIDEwNCwgMjQ5LCAxNDMsIDIxMiwgMywgMjE5LCA3MiwgMjE5LCA3MCwgMjQwLCAyNTIsIDIyMywgCi0gICAgMTU2LCAyNDIsIDE3NywgMjIwLCA1OSwgMjMwLCAxNTAsIDIyMiwgMTk2LCAyNTAsIDExNiwgMjQ3LCAxNDQsIDIyNSwgNzYsIAotICAgIDI1MSwgMjExLCAyNDUsIDE3NywgMjI2LCAyNDIsIDIxOCwgMjU0LCAyMjAsIDU0LCAyNTEsIDEzMCwgMjU0LCAxMDAsIDI0MSwgCi0gICAgNjEsIDIzMywgMTI3LCAyNTIsIDY4LCAyNDQsIDk4LCAyMTUsIDE5NCwgMjQ0LCA5OCwgMjUxLCAyMTcsIDIxNSwgOTEsIAotICAgIDI0MiwgMCwgMjUwLCAxMTcsIDI1MiwgMTk1LCAyNTAsIDExNywgMjQzLCAyNTAsIDI1MiwgMTk1LCAyNTAsIDExNywgMjUxLCAKLSAgICAyNDUsIDIyNSwgMTk4LCAyMzQsIDMyLCAyMjQsIDI1MSwgMjQ2LCA5NSwgMjUxLCAxOSwgMjUyLCAxODUsIDI1MSwgMTksIAotICAgIDI0NywgMTM4LCAyMzAsIDExOCwgMjQ0LCAxOTgsIDI0OSwgMTU0LCAyNDQsIDE5OCwgMjE2LCAxMDgsIDI0NCwgMTk4LCAKLSAgICAyMjMsIDE4NCwgMjQ0LCAxOTgsIDI1MCwgMjMzLCAyNDQsIDE5OCwgMjQ2LCAxMDUsIDI0NCwgMTk4LCAyMTgsIDI0MywgCi0gICAgMjEyLCAzLCAyNDAsIDI1MywgMjQ0LCAxOTgsIDIzMCwgMTUxLCAyNDQsIDE5OCwgMjQ3LCAxNDUsIDI0NCwgMTk4LCAyMjUsIAotICAgIDc3LCAyNDQsIDE5OCwgMjQzLCAyNTMsIDI0NCwgMTk4LCAyNDIsIDI3LCAyNDQsIDE5OCwgMjExLCAyMjQsIDI0NCwgMTk4LCAKLSAgICAyNTIsIDc5LCAyNDQsIDE5OCwgMjI2LCA0OSwgMjQ0LCAxOTgsIDIyNSwgNzcsIDIyOCwgNTgsIDIyNSwgMjM2LCAyMjQsIAotICAgIDE4OSwgMjQ1LCAyMSwgMjQ1LCAyMzUsIDIyOCwgNTgsIDIzMCwgMTE1LCAyMTYsIDIwLCA3MSwgMTIwLCAyMjUsIDEwLCAKLSAgICAyNTIsIDE5MCwgMjM1LCAyNDksIDcxLCAxMjQsIDIyNSwgMTAsIDI1MiwgMTkwLCAyMzUsIDI0OSwgNzEsIDQzLCAyMjUsIAotICAgIDEwLCAyNTIsIDE5MCwgMjM1LCAyNDksIDcxLCA0NCwgMjI1LCAxMCwgMjUyLCAxOTAsIDIzNSwgMjQ5LCAyNDQsIDkyLCAKLSAgICAyNDIsIDIzLCA1MCwgMjEyLCAzMywgMjQyLCAyMywgNTAsIDIyNiwgMjE5LCAyNDIsIDIzLCA1MCwgMjE2LCAxMzYsIDEyMCwgCi0gICAgNTAsIDIxNiwgMTM2LCAxMjQsIDUwLCAyNTAsIDI3LCAyNDIsIDE4LCA1MCwgMjA0LCAyNDIsIDE4LCA1MCwgMjQ5LCAxMzEsIAotICAgIDIxMSwgMjIwLCAyNDIsIDIsIDI0NSwgMjIsIDIyOSwgMTA5LCAyMTcsIDE1MiwgMjM1LCAxMzEsIDI0NiwgMTAwLCAyMzQsIAotICAgIDg4LCAyNTEsIDI1NSwgMjExLCAyMjAsIDI1MCwgMSwgMjI0LCAxMzAsIDI0MiwgMjEsIDIyNCwgMjMzLCAyMzEsIDE4MiwgCi0gICAgMjIwLCA2LCAyNTMsIDIxMSwgMjIwLCA2LCAyNDEsIDE3MSwgMjIwLCA2LCAyMTEsIDIyMCwgMjIxLCAyNDIsIDIxMSwgMjIwLCAKLSAgICAyNTEsIDE5NCwgMjQ0LCAzNywgMjUxLCA5OCwgMjM2LCA3LCAyMTksIDE3MSwgMjUxLCA5NywgMjM2LCA3LCAyMTksIDE3MSwgCi0gICAgMjUxLCAxNzAsIDI0MiwgMjAxLCAyMzEsIDE5MCwgMjExLCAyMjEsIDI0NCwgMTgyLCAyMzEsIDE5MSwgMjIsIDIxMSwgMjIyLCAKLSAgICAyNDEsIDY3LCAyNDIsIDE3LCAxMTMsIDIzMSwgNjQsIDI0MSwgNjcsIDI0MiwgMTcsIDExMywgMjExLCAyMTksIDI0MSwgNjcsIAotICAgIDI0MiwgMTcsIDIyNSwgMiwgMjI2LCAyMzEsIDIxMSwgMjIyLCAyLCAyNTEsIDExNCwgMjQ1LCAyMzMsIDI1MSwgMTQ5LCAyLCAKLSAgICAyMTMsIDI0NiwgMjI1LCAxNzEsIDIsIDI1MSwgMjIwLCAyNDIsIDQxLCAyMzEsIDE5MSwgMiwgMjQyLCAxMTcsIDIyNSwgCi0gICAgMTEyLCAyMzEsIDE3OSwgMjMxLCAxOTEsIDIsIDIxNSwgOTgsIDIyNiwgMjEyLCAyMzEsIDE5MCwgMjI2LCAyMTIsIDIxMSwgCi0gICAgMjIxLCAyNTIsIDE5NCwgMjQ5LCAxOTgsIDIxMSwgMjA1LCAyMjQsIDE5MiwgMjM1LCAxMzcsIDIyNiwgMjI3LCAyMzUsIAotICAgIDEzNywgMjQyLCAxNzYsIDI0MiwgMjI5LCAyNTIsIDE5NSwgMjU0LCAxMjEsIDI0NSwgMjYsIDI1NCwgMTY5LCAyNTQsIDE3MCwgCi0gICAgMjMwLCAxNDEsIDIzNiwgMTIsIDIxOSwgMTAyLCAyMzUsIDIzOSwgMjQ4LCA0MiwgMjI1LCAxNzAsIDI0MiwgMTEyLCAyNDgsIAotICAgIDE4NywgMjMyLCAyMDcsIDIyOSwgMjE2LCAyMjUsIDEsIDI0NCwgMTk5LCAyMzEsIDE0NywgMjQyLCA0MCwgMjUyLCAxNDYsIAotICAgIDIyNSwgNCwgMjE3LCAxNzIsIDIyNSwgNjksIDIzNCwgNzAsIDc5LCAyMzIsIDExNywgMjMzLCAxNiwgMjIyLCAyMzYsIDI0MywgCi0gICAgNjEsIDIxOCwgMTMzLCAyMzQsIDY5LCAyNTEsIDE3OSwgMjQ5LCAxNTYsIDIsIDI0MSwgMjM0LCAyMTIsIDE5LCAyNTIsIDc3LCAKLSAgICAyNDEsIDIzNCwgMjUxLCAxNDMsIDI0MSwgMjM0LCAxMTMsIDI0MSwgMjMyLCAyMTksIDEyLCAyNDEsIDIzNCwgMjQyLCAxMjcsIAotICAgIDI0MSwgMjM0LCAyNDEsIDIzNSwgMiwgNzUsIDI1MSwgMjE2LCAyNDEsIDIzNCwgMjQyLCAxMzQsIDI0MSwgMjM0LCAyMTEsIAotICAgIDQyLCAyNDEsIDIzNCwgMjI0LCAxMzEsIDI0MSwgMjM0LCAyNDEsIDIzNSwgMiwgMjIzLCAzNiwgMjIzLCA0NywgMjQxLCAKLSAgICAyMzIsIDI0MSwgMjM1LCAyNDgsIDg5LCAyNDgsIDEsIDIyMCwgODQsIDIsIDExNiwgNTksIDIzNSwgMjIyLCAyNDUsIDE4MCwgCi0gICAgMTkzLCAyNTEsIDEyNCwgMjU0LCAxMjAsIDg3LCAyNTEsIDIwMywgMjE5LCA5NCwgODcsIDI0OSwgMjM2LCA4NywgMjE4LCAKLSAgICAyNDgsIDIxNywgMjQ5LCA4NywgMjQ2LCA5MywgMjQ4LCAxNjUsIDg3LCAyMjUsIDcwLCA2NCwgMjI0LCAyNTIsIDI0NCwgNjksIAotICAgIDI1MiwgMTEsIDI0NywgMTczLCA4NywgMjE5LCA1LCAyNTIsIDE2NiwgMjE2LCAxNTAsIDI1MiwgMTY2LCA3MSwgMjQ0LCA1OSwgCi0gICAgMjQwLCAyMTgsIDIyNSwgOCwgODcsIDIzMCwgMTU0LCAyNTIsIDE4MCwgMjQ5LCAxMDYsIDI0NSwgNDAsIDExNCwgMjQ3LCAKLSAgICAxNDAsIDUwLCAyNDksIDE0NywgMjUwLCAyNTAsIDI1MiwgMTUyLCAyLCAyMTEsIDQwLCA1MCwgMjUyLCAxNTIsIDIsIDI0NywgCi0gICAgMTQwLCA1MCwgMjUyLCAxNTIsIDIsIDI0NSwgNTUsIDUwLCAyNTIsIDE1MiwgMiwgMjI0LCAyMzEsIDUwLCAyMzAsIDE1NCwgCi0gICAgMiwgMjExLCAyMzUsIDI1MCwgMTQ2LCAyLCAyMTQsIDE1MywgMjE1LCAyMzIsIDIyLCAyMTEsIDQwLCA1MCwgMjIxLCAxODAsIAotICAgIDIyNSwgMTY5LCAyNDksIDIxNiwgMjUxLCAxNDcsIDIzMCwgMTkxLCAyNDQsIDY0LCAyNDcsIDE5MywgMjI2LCAxNjUsIDI0NywgCi0gICAgMTk4LCAyNDYsIDU3LCAyNDQsIDExNSwgMjQ0LCA0OCwgMjA0LCAyNDQsIDExNSwgMjQ0LCA0OCwgMjI2LCA4MCwgMiwgMjQ5LCAKLSAgICAxMDgsIDIyNiwgODAsIDI0NCwgMTkxLCAyMTQsIDE2MywgMjUxLCAyNCwgMjE3LCAxOSwgMjUxLCAyNCwgMjUwLCAyNTEsIAotICAgIDIzNSwgMjQ5LCAyNTAsIDE0NiwgMiwgMjE0LCAxNTMsIDIxNSwgMjMxLCAyNTAsIDE0NiwgMiwgMjQ2LCAxMTIsIDIxNSwgCi0gICAgMjMxLCAyNTIsIDE0OSwgMjUwLCAxNDUsIDI1MCwgMTQsIDIyNCwgMTI2LCAyMjIsIDE4NywgMjI0LCAxMjYsIDIyNiwgMjMsIAotICAgIDIxOCwgMTIzLCAyMjIsIDEzMywgMjE1LCAyMjMsIDIyMiwgMTMzLCAyNTEsIDE5OSwgMjE3LCA5MiwgMjMzLCA1NywgMjI4LCAKLSAgICA1MCwgMjI4LCA1MSwgMiwgMjQ4LCA4OCwgMjQ5LCAxNTUsIDI1MCwgOCwgMjUxLCAyMDAsIDIwNCwgMjUxLCAyMDAsIDI0MiwgCi0gICAgMTM0LCAyNTEsIDIwMCwgMjUxLCAyMTYsIDI1MSwgMjAwLCAyMjYsIDE2MSwgMjUxLCAyMDAsIDI1MSwgMTk3LCAyMjksIAotICAgIDIxMCwgMjUyLCAxODMsIDIyMSwgMTg4LCAyMzEsIDY1LCAyMTcsIDIsIDIyMywgMTI2LCAyMjYsIDc4LCAyNDQsIDE2NywgCi0gICAgMjMxLCAyMzksIDIyMSwgMjI1LCAyNTQsIDk3LCAyMjQsIDE0OCwgMjU1LCA1LCAyMzIsIDExOSwgMjUwLCAxMzUsIDIzMSwgCi0gICAgNzcsIDIyNiwgMTMzLCAyMTUsIDIzOSwgMjM2LCAzLCAyMTUsIDIzOSwgMjI2LCA4NiwgMjQ2LCAzMiwgODcsIDIzNiwgMCwgCi0gICAgMjQ1LCAxMjcsIDI0NSwgMTI4LCAyLCAyNDYsIDExMiwgODAsIDQ4LCAyNTAsIDgsIDIzMSwgMjA1LCAyLCAyMzIsIDExMywgCi0gICAgMjQ0LCA4MSwgMjUwLCA4LCAyMzEsIDIwNSwgMiwgMjIzLCAxNjAsIDI0NCwgODEsIDIwNCwgMjMxLCAyMDUsIDIsIDIyMywgCi0gICAgMTYwLCAyNDQsIDgxLCAyMDQsIDIzMSwgMjA1LCAyLCAyMzIsIDExMywgMjQ0LCA4MSwgMjI0LCAyMzksIDIyNCwgMjQwLCAKLSAgICAyNDAsIDI1NSwgMjI5LCA4OSwgMjMwLCAxNjQsIDIyNSwgMTIwLCAyMzAsIDE2NCwgMjI1LCAxMjEsIDIsIDk3LCA4MCwgCi0gICAgMjUzLCAyMTUsIDIzMywgNTIsIDIxMywgMTc1LCAyMzAsIDE2MywgMjMwLCAxNjQsIDIyNSwgMTIxLCAyMjYsIDIzNCwgMjI4LCAKLSAgICA4MCwgMjMwLCAxNjQsIDIyNSwgMTE5LCAyNTQsIDk4LCAyLCAyNTIsIDEzNywgMjUxLCAxOCwgMjEzLCAxNzIsIDI1MSwgMTgsIAotICAgIDIxNiwgMjU1LCAyMjMsIDE3NiwgMjEzLCAxNzEsIDIxNSwgNjAsIDk3LCAyNTMsIDI1NSwgMjUwLCAxMCwgOTcsIDIyLCAKLSAgICAxNDAsIDIwNCwgMjUwLCA0NCwgMjUzLCAyNTUsIDI1MCwgMTAsIDk3LCAyMiwgMTQwLCAyMDQsIDI1MCwgNDQsIDI1NCwgMCwgCi0gICAgMiwgMzcsIDEyMywgMjI2LCAxMjQsIDI1MCwgMTAsIDI0NiwgMTEyLCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCA0NCwgMjUzLCAKLSAgICAyNTUsIDI1NCwgOTYsIDI0NiwgMTEyLCAyMiwgMjE0LCAxNTMsIDIwNCwgMjUwLCA0NCwgMjUzLCAyNTUsIDEyMSwgMjUxLCAKLSAgICAxNDYsIDg3LCAxMjUsIDI1MSwgMTQ2LCA4NywgMjE5LCA5LCAyLCAyNTEsIDEyLCA5MSwgMjE5LCA4LCAyMTksIDksIDIsIAotICAgIDEyMywgMjE5LCAzMywgMjEyLCAzNSwgMjE5LCA5LCAyLCAxMzQsIDIxOSwgMzMsIDIxMiwgMzQsIDI1MiwgMTIzLCAyNDUsIAotICAgIDE4MCwgMjI1LCAzMCwgMjMzLCA0OCwgMjMxLCAyMTYsIDI0MiwgMTkxLCAyMjIsIDI1MCwgMjMxLCAyMTYsIDI0MiwgMTkxLCAKLSAgICAyMzIsIDE1OCwgMiwgMjM1LCAyMzIsIDIyNSwgMjAyLCAyNTAsIDgsIDIzMiwgMTU4LCAyLCAyMzQsIDE0NCwgMjM0LCAxNDQsIAotICAgIDIzMiwgMTU3LCAyMDQsIDIzMiwgMTU3LCAyNTIsIDUyLCAyNTIsIDUzLCAyLCAyNTEsIDEyLCA5MSwgMjUxLCAxOTgsIDIzMiwgCi0gICAgMjEwLCA4NywgMjIzLCAxNzcsIDI1MSwgOTQsIDI1MiwgMTkzLCAyLCAxNDAsIDgwLCA0OCwgMjQ1LCAxNTEsIDIsIDE0MCwgCi0gICAgODAsIDQ4LCAyMjYsIDIwMSwgMiwgMjQ1LCAzOSwgMTY0LCAyLCA0MywgNDQsIDgwLCA0OCwgMjE5LCA0MSwgMiwgOTcsIDgwLCAKLSAgICA0OCwgMjE2LCAxNSwgMiwgMjE0LCAxNTMsIDgwLCA0OCwgMjI4LCA4MCwgMTIzLCAyMTQsIDE4NCwgMjQ1LCAxOTksIDg3LCAKLSAgICAyMzQsIDE0MiwgMjE2LCAyNDgsIDIzNSwgMjI2LCAxNiwgMzEsIDcsIDYsIDIzMywgMTUsIDIzNSwgMjI2LCAxNiwgMzEsIDcsIAotICAgIDQsIDIzMywgMTUsIDIzNSwgMjI2LCAxNiwgMzEsIDIyNywgMjAzLCAyMzUsIDIyNiwgMTYsIDMxLCAyMTcsIDE4NCwgMjM1LCAKLSAgICAyMjYsIDE2LCAzMSwgNywgMjMzLCAxNSwgMjQ0LCAxMDQsIDI0NSwgMTgwLCAyMTYsIDEwLCAyMTEsIDE5OSwgMjQyLCAyOCwgCi0gICAgMjI3LCAxODYsIDIyLCAyNTEsIDIwNSwgMjQxLCA3MywgMjI1LCA1MywgMjMwLCAyMzEsIDIxNywgMCwgMjQ5LCAxMjIsIAotICAgIDI1MiwgMTY3LCAyMTksIDEyNywgMjI1LCAxMiwgMjE4LCAxNTksIDIsIDIzMCwgMjI5LCAyNDcsIDEyOCwgMjM1LCAxMzcsIAotICAgIDE2LCAzMSwgMjUyLCA2NSwgMjE1LCAyMjEsIDI0NSwgMTY0LCA4NSwgNDIsIDI1MSwgOTQsIDcxLCA0MiwgMjUxLCA5NCwgCi0gICAgMjMzLCA5MSwgMjIzLCAxMTQsIDI1MCwgNDMsIDIzMywgOTEsIDI1MSwgMjE2LCAyNTAsIDQzLCAyMzMsIDkxLCAyMjYsIAotICAgIDE2MSwgMjQ4LCAwLCAyMzMsIDkxLCAyNTEsIDIxNiwgMjQ4LCAwLCA0LCAyMjYsIDE2MSwgMjQ4LCAwLCA0LCAyNTEsIDIxNiwgCi0gICAgMjQ4LCAwLCAyMTQsIDE2MiwgMjIzLCAxMTQsIDIxNSwgMjI2LCAyNDYsIDExMywgMjIzLCAxMTQsIDIxNSwgMjI2LCAyMTQsIAotICAgIDE2MiwgNCwgMjIzLCAxMTQsIDIxNSwgMjI2LCAyNDYsIDExMywgNCwgMjIzLCAxMTQsIDIxNSwgMjI2LCAzNywgMjQ5LCAKLSAgICAxMzksIDIyNCwgMjU1LCAyNDksIDEzOSwgMjI1LCAwLCAyLCAyNDIsIDMzLCA1MSwgMjQ5LCAxMzksIDIyNCwgMjU1LCAyMjgsIAotICAgIDU0LCA0MywgMjIwLCAxNTUsIDIsIDEzNCwgMjQ3LCAxMjYsIDI1MCwgMTIsIDI0NCwgMTk5LCAxMjMsIDIyNiwgMjQ2LCAKLSAgICAyNTAsIDEyLCAyNDQsIDE5OSwgMTEzLCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDEzNCwgMjI2LCAyNDYsIDI1MCwgCi0gICAgMTIsIDI0NCwgMTk5LCAyNDQsIDE5LCAyMjYsIDI0NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NCwgODksIDIyNiwgMjQ2LCAKLSAgICAyNTAsIDEyLCAyNDQsIDE5OSwgMjE5LCAxMjcsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjIwLCAxMjQsIDIyNiwgCi0gICAgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAyMDEsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjI4LCAyMDUsIAotICAgIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE2LCAyNDksIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjQ1LCAKLSAgICAxNzYsIDIyNiwgMjQ2LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA3NywgMjI2LCAyNDYsIDI1MCwgMTIsIDI0NCwgMTk5LCAKLSAgICAyMjYsIDE5NiwgMjUwLCAxMiwgMjQ0LCAxOTksIDIxNSwgNTYsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDE0MSwgMjUwLCAKLSAgICAxMiwgMjQ0LCAxOTksIDI0NCwgMTUsIDI1MCwgMTIsIDI0NCwgMTk5LCAyNDQsIDg3LCAyNTAsIDEyLCAyNDQsIDE5OSwgCi0gICAgMjE5LCAxMjMsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMjAsIDEyMywgMjUwLCAxMiwgMjQ0LCAxOTksIDI0NSwgMjAwLCAyNTAsIAotICAgIDEyLCAyNDQsIDE5OSwgMjI4LCAyMDQsIDI1MCwgMTIsIDI0NCwgMTk5LCAyMTYsIDI0NywgMjUwLCAxMiwgMjQ0LCAxOTksIAotICAgIDI0NSwgMTc0LCAyNTAsIDEyLCAyNDQsIDE5OSwgMjE1LCA3NSwgMjMwLCAxMjIsIDI0MywgMjM3LCAyMTYsIDM3LCAyMTYsIAotICAgIDMsIDIxOCwgMTUwLCA2NCwgMjMyLCAyNDUsIDIxOSwgMTcyLCA2NCwgMjM1LCAxMzgsIDIzMCwgMTExLCAyNDIsIDEzMSwgCi0gICAgMjQ0LCAxOTgsIDI0MiwgMTMxLCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjQ0LCAxOTksIDIsIDIxNywgMTUsIAotICAgIDY0LCAyMzUsIDU5LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIAotICAgIDIwNCwgMjMwLCAxMTYsIDIyLCAyMTksIDc2LCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNiwgCi0gICAgMjIsIDI0OSwgMjM4LCAyMTcsIDI0OCwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDIwNCwgMjMwLCAxMTYsIDIyLCAyMTYsIAotICAgIDEwNSwgMjQ1LCAyMSwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIDI0MiwgMzIsIDIxOSwgNzYsIDI0NCwgMTk5LCAyLCAyNDAsIAotICAgIDI1NCwgMjExLCAyMzMsIDI0NCwgMTk4LCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjE5LCA3NiwgMjQ1LCAyMSwgMjQ0LCAKLSAgICAxOTksIDIyMSwgMjE5LCAyNDgsIDcwLCAyNDQsIDQxLCAyMjMsIDkxLCAyNDQsIDE5OCwgMjE5LCA3NiwgMjQ0LCAxOTksIDIsIAotICAgIDI0MSwgMjMzLCAyNDUsIDIxLCAyMTksIDc2LCAyNDQsIDE5OSwgMiwgMjE4LCAzNSwgMjE5LCA3NSwgMjQ0LCAxOTgsIDIyOSwgCi0gICAgOTIsIDI0NCwgMTk4LCAyNDUsIDMxLCAyNDQsIDE5OCwgMjE0LCAxODgsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjQ5LCAKLSAgICAyMzgsIDIxNywgMjQ4LCAyMjUsIDE5NSwgMjQ0LCAxOTgsIDI0OSwgMjA5LCAyNDQsIDE5OCwgMjQ5LCAyMTAsIDI0NCwgCi0gICAgMTk4LCAyMzQsIDY4LCAyNDQsIDE5OCwgMjQ0LCAxOTksIDIxNiwgMTM4LCAxMTYsIDIzNCwgNjksIDIzNCwgNjgsIDI0NCwgCi0gICAgMTk5LCAyLCAyMTksIDc2LCAyNDUsIDIxLCAyMzQsIDY4LCAyNDQsIDE5OSwgMiwgMjUwLCA4LCAyNDUsIDIxLCAyNDQsIAotICAgIDE5OSwgMiwgMjE4LCA4OSwgMjE2LCAyMCwgMjQ0LCAxOTksIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTEsIDIzMywgCi0gICAgMjQ1LCAyMywgMjQ0LCAxOTksIDIsIDIxOCwgODksIDIxNiwgMjEsIDIyLCAyMTYsIDEwNSwgMjQ1LCAyMSwgMjQ3LCAyMDAsIAotICAgIDI0NCwgMTk4LCAyMTEsIDIwNCwgMjQ0LCAxOTgsIDI1NCwgMTE2LCAyNDQsIDE5OCwgMjI0LCAyMzAsIDI0NCwgMTk4LCAKLSAgICAyNDksIDEyNCwgMjQ0LCAxOTgsIDIyNSwgMTczLCAyNDQsIDE5OCwgMjQ0LCAxOTksIDIsIDIzMiwgMTMyLCA2NCwgMjE1LCAKLSAgICAyMDUsIDI0NywgMjAwLCAyNTEsIDk2LCAyMjMsIDkxLCAyNDQsIDE5OCwgMjQzLCAyNDcsIDI0NCwgMTk5LCAyLCAyMDQsIAotICAgIDIzMCwgMTE1LCAyNTQsIDExNCwgMjQ0LCAxOTgsIDI0NCwgMTYwLCAyNDQsIDE5OCwgMjEyLCAyMCwgMjQ0LCAxOTgsIDIxOSwgCi0gICAgOTMsIDI0NCwgMTk4LCAyMTYsIDcyLCAyNDQsIDE5OCwgMjQyLCAxMzIsIDI0NCwgMTk4LCAyMzIsIDEyMCwgMjQ5LCAxMjQsIAotICAgIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjQwLCAyMTAsIDI0NCwgMTk4LCAyNDQsIDE5OSwgMiwgCi0gICAgMjA0LCAyMzAsIDExNiwgMjIsIDI0OSwgMjM4LCAyMTcsIDI0OCwgMjQ0LCAxOTksIDIyMSwgMTkyLCAyMzYsIDcsIDI0NCwgCi0gICAgMTYxLCAyNTMsIDIyMSwgMjQ0LCAxOTgsIDI0NCwgNTcsIDI0NCwgMTk4LCAyMTksIDk0LCAyNDQsIDE5OCwgMjQ3LCAxNzMsIAotICAgIDI0NCwgMTk4LCAyNDQsIDE5OSwgMjExLCAyMzAsIDIzMCwgMTE1LCAyNDQsIDE5OSwgMiwgMjMxLCA4OSwgMjMxLCAxNDksIAotICAgIDI0MiwgMTMxLCAyNTAsIDIzMywgMjQ0LCAxOTksIDIsIDIxOSwgNzYsIDI0NSwgMjEsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgCi0gICAgMjE3LCAxNSwgNjQsIDIzNSwgNTksIDIxOSwgNzYsIDI1MCwgMjMzLCAyNDQsIDE5OSwgMiwgMjA0LCAyMzAsIDExNSwgMjE5LCAKLSAgICA3NiwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyNDEsIDIzMywgMjQ1LCAyMSwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyMTEsIAotICAgIDE5NiwgMjE5LCA3NywgMjM0LCA2OCwgMjUwLCAyMzMsIDI0NCwgMTk5LCAyLCAyNTAsIDgsIDI0NSwgMjEsIDIyNCwgMjMwLCAKLSAgICAyNTAsIDIzMywgMjQ0LCAxOTgsIDI0OSwgMTI0LCAyNTAsIDIzMywgMjQ0LCAxOTgsIDIxMiwgMjAsIDI1MCwgMjMzLCAyNDQsIAotICAgIDE5OCwgMjQ0LCAxOTksIDIsIDIyOCwgODAsIDI0MiwgMTcwLCAyNDMsIDQxLCAyNDQsIDE5OSwgMiwgMjI2LCAyMTksIDI0MywgCi0gICAgNDEsIDIyNSwgMTcxLCAyNTEsIDE3NiwgMjQ4LCA4MywgMjIxLCAxNzEsIDIzMCwgMTUwLCAyNDEsIDIzNiwgMjMwLCAxNTAsIAotICAgIDIxOSwgMTAsIDIzMCwgMTUwLCAyNDIsIDEyLCAyMjUsIDE3MSwgMjIzLCAxNTksIDEyMywgMjQyLCAyMiwgMjI1LCAxNzEsIAotICAgIDIyMywgMTU5LCAyNTEsIDE4NiwgMjQyLCAxOCwgMjM2LCA3LCAyNTAsIDE4NywgMjI1LCAxNzEsIDI0MywgMjQ2LCAyMjUsIAotICAgIDE3MSwgMiwgMjI0LCAyMzAsIDI0NCwgMTk4LCAyMjUsIDE3MSwgMiwgMjQ0LCA0OSwgMjQyLCAxNywgMjIyLCAyMDUsIDI0MSwgCi0gICAgMjIxLCAyMTgsIDE0NSwgMjMyLCAxNTUsIDIyMywgMTY1LCAyNTAsIDI1MiwgMjQxLCAxNjksIDIxNSwgMjQ5LCAyNDEsIAotICAgIDE2OSwgMjE1LCAyNTAsIDIsIDI1MSwgMTIyLCAyMjgsIDU4LCAyMTUsIDI0OSwgMjMxLCAzNywgMTkzLCAyMjMsIDE2NiwgCi0gICAgMjE4LCAxNTEsIDIxNSwgMjQ3LCAyMTUsIDI0OCwgMjUwLCAyNTIsIDI1MSwgMTAwLCAyMjYsIDE5OCwgMjUxLCAxMDAsIAotICAgIDIxNSwgMjAyLCAyNTEsIDEwMSwgMjE4LCAxMzEsIDIzMCwgMTkyLCAyNTQsIDEzOCwgMjQ0LCAxMDUsIDI0NSwgMTQ1LCAKLSAgICAyMjUsIDIsIDI1MCwgMjUyLCAyMjYsIDE5OCwgMjI1LCAyLCAyNTAsIDI1MiwgMjE3LCAzMywgMjI2LCAxOTgsIDIxNywgMzMsIAotICAgIDI1MywgMTg4LCAyMjYsIDE5OCwgMjUzLCAxODgsIDIyMywgMTIxLCAyMTMsIDI0NywgMjQ4LCA2NiwgMjE1LCAxOTMsIDI1MywgCi0gICAgMjUwLCAyMzIsIDEyMywgMjE1LCAyNTUsIDIzMCwgMTQ0LCAyMzAsIDEyMSwgMjIzLCAxNjQsIDIxOCwgNywgMjIzLCAxNjQsIAotICAgIDIzMCwgMTIxLCAyNTEsIDM2LCAyNTQsIDIzOCwgMjE1LCAyNDYsIDIyMCwgMTgsIDIyMiwgMTg0LCAyMTksIDMsIDIwMywgCi0gICAgMjE1LCAyNTMsIDIzMiwgMjM2LCA2NywgMjE1LCAyNTMsIDIzMiwgMjM2LCAyNDksIDE5OCwgNTAsIDIyNSwgMiwgMjUwLCAKLSAgICAyMzcsIDIyMywgNDcsIDIzMiwgMjM2LCAyMTUsIDIyMywgMjQ0LCA4MiwgMjI2LCAyMDEsIDIyNCwgMjQxLCAyNDcsIDEzMSwgCi0gICAgMjI4LCA4MCwgMjQ1LCAxMzMsIDUwLCAyMTksIDc0LCA4NywgMjI4LCA4MCwgMjE5LCA3NCwgODcsIDIyNCwgMTI1LCAyMzIsIAotICAgIDE5OSwgMjM2LCA3LCAyMzUsIDE2MywgMjI1LCA0NCwgODcsIDI0NywgMTU0LCAyMjgsIDU3LCAyMzIsIDE5OSwgODcsIDIyNCwgCi0gICAgMjM1LCAyMTIsIDQxLCA4NywgMjI4LCA3MSwgMjEyLCA0MSwgODcsIDI1MiwgMTAsIDIyOCwgODAsIDI1MiwgOSwgMjUyLCA4LCAKLSAgICAyMzAsIDEyMSwgMjUyLCA4LCAyMjUsIDIxNiwgMjI4LCA4MCwgMjI1LCAyMTUsIDI1MCwgMTA4LCAyNDksIDEzMiwgMjMxLCAKLSAgICA2MSwgODcsIDIxMSwgMjE4LCA4NywgMjIzLCA2MiwgMjUyLCAxOTUsIDg3LCAyMTYsIDM4LCAyMTIsIDQxLCAyNTAsIDUsIAotICAgIDIxOSwgMjM2LCAyNTIsIDEyNiwgMjUyLCAxMjQsIDIyNSwgMjQ2LCAyNDksIDE4NSwgMjQ5LCA5NCwgMjUyLCAxNzcsIDI1MCwgCi0gICAgMzAsIDQzLCAyMzIsIDk1LCAxMDgsIDE2LCAzMSwgMjI0LCA2LCAxMDgsIDE2LCAzMSwgMjU0LCAyMDEsIDEwOCwgMTYsIDMxLCAKLSAgICAyNDQsIDEwNCwgMTA4LCAxNiwgMzEsIDI0NSwgMjMxLCAxMDgsIDE2LCAzMSwgMjEyLCA0MCwgMTA4LCAxNiwgMzEsIDI1NCwgCi0gICAgNTEsIDEwOCwgMTYsIDMxLCAyNTQsIDUyLCAyMjMsIDEwOCwgMTA4LCAxNiwgMzEsIDI1NCwgNTIsIDIyMywgMTA3LCAxMDgsIAotICAgIDE2LCAzMSwgMjU0LCA1MiwgMjEzLCAxNDMsIDEwOCwgMTYsIDMxLCAyNTQsIDUyLCAyMTMsIDE0MiwgMTA4LCAxNiwgMzEsIAotICAgIDIxMywgMTU3LCAxMDgsIDE2LCAzMSwgMjEzLCAxNTYsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NSwgMTA4LCAxNiwgMzEsIDIxOCwgCi0gICAgNDUsIDEwOCwgMTYsIDMxLCAyMjUsIDEyOCwgMjE4LCA0NSwgMTA4LCAxNiwgMzEsIDg1LCAyMTgsIDQ1LCAxMDgsIDE2LCAKLSAgICAzMSwgMjMxLCA2MCwgMjE4LCA3MiwgMTA4LCAxNiwgMzEsIDIzMSwgNjAsIDIxOCwgNzEsIDEwOCwgMTYsIDMxLCAyMzEsIAotICAgIDYwLCAyMTgsIDcwLCAxMDgsIDE2LCAzMSwgMjUwLCA0NiwgMTA4LCAxNiwgMzEsIDIyMiwgMywgMTA4LCAxNiwgMzEsIDIyOCwgCi0gICAgMTkzLCAxMDgsIDE2LCAzMSwgMjEzLCAxNDEsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MCwgMTA4LCAxNiwgMzEsIDIyMiwgMjA2LCAKLSAgICAyMjIsIDMsIDEwOCwgMTYsIDMxLCAyMjIsIDIwNiwgMjIyLCAyLCAxMDgsIDE2LCAzMSwgMjQyLCAxNzMsIDEwOCwgMTYsIAotICAgIDMxLCAyMTksIDE2OCwgMTA4LCAxNiwgMzEsIDIzNSwgMTg0LCAyMjYsIDE1NywgMTA4LCAxNiwgMzEsIDIzNSwgMTg0LCAKLSAgICAyMjYsIDE1NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTQyLCA2NCwgMjM1LCAxODMsIDEwOCwgMTYsIDMxLCAyMjMsIDEwNCwgNjQsIAotICAgIDIzNSwgMTgzLCAxMDgsIDE2LCAzMSwgMjQ5LCAxNzYsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjM1LCAxODIsIDIyNiwgCi0gICAgMTU3LCAxMDgsIDE2LCAzMSwgMjE4LCA3MywgNjQsIDI0OSwgMTc1LCAxMDgsIDE2LCAzMSwgMjQ5LCAxNDIsIDY0LCAyNDksIAotICAgIDE3NSwgMTA4LCAxNiwgMzEsIDI0OSwgMTQyLCA2NCwgMjQ5LCAxNzQsIDEwOCwgMTYsIDMxLCAyNDksIDE3NiwgMjU0LCA5MSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMiwgNCwgNjQsIDI0OSwgMTc2LCAyNTQsIDkxLCAxMDgsIDE2LCAzMSwgMjE4LCA3MywgNjQsIAotICAgIDIyMiwgNCwgNjQsIDI0OSwgMTc1LCAxMDgsIDE2LCAzMSwgMjEzLCAyNDMsIDEwOCwgMTYsIDMxLCAyMTYsIDg1LCAyMjYsIAotICAgIDE1NywgMTA4LCAxNiwgMzEsIDIzMywgNjMsIDIyNiwgMTU3LCAxMDgsIDE2LCAzMSwgMjU0LCA5MCwgMjI2LCAxNTcsIDEwOCwgCi0gICAgMTYsIDMxLCAyMTgsIDczLCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIyMiwgNCwgNjQsIDI1NCwgODksIDEwOCwgMTYsIAotICAgIDMxLCAyMTgsIDczLCA2NCwgMjIyLCA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIxMywgMTU4LCA2NCwgMjU0LCA4OSwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgMjU0LCA4OSwgMTA4LCAxNiwgMzEsIDIyMywgMTA0LCA2NCwgMjU0LCA4OCwgCi0gICAgMTA4LCAxNiwgMzEsIDIyMywgMTAzLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDIsIDEwOCwgMTYsIDMxLCAyMjMsIDEwMSwgMTA4LCAKLSAgICAxNiwgMzEsIDIyMywgMTAwLCAxMDgsIDE2LCAzMSwgMjU0LCAxNjYsIDEwOCwgMTYsIDMxLCAyNTQsIDE2NSwgMTA4LCAxNiwgCi0gICAgMzEsIDIzMSwgMTY4LCAxMDgsIDE2LCAzMSwgMjIyLCA5LCAxMDgsIDE2LCAzMSwgMjUzLCAyNTQsIDEwOCwgMTYsIDMxLCAKLSAgICAyMjMsIDEyOCwgMTA4LCAxNiwgMzEsIDIyMywgMTI3LCAxMDgsIDE2LCAzMSwgMjUzLCAxOTEsIDEwOCwgMTYsIDMxLCAyNTEsIAotICAgIDIzNywgMjI2LCAxNTcsIDEwOCwgMTYsIDMxLCAyMTcsIDUwLCAxMDgsIDE2LCAzMSwgMjE3LCA0OSwgMTA4LCAxNiwgMzEsIAotICAgIDIyNCwgMTEsIDIzMiwgMjI4LCAxMDgsIDE2LCAzMSwgMjUxLCAxOTEsIDEwOCwgMTYsIDMxLCAyNTEsIDE5MCwgMTA4LCAxNiwgCi0gICAgMzEsIDI1MSwgMTg5LCAxMDgsIDE2LCAzMSwgMjU0LCAxNDYsIDEwOCwgMTYsIDMxLCAyMjYsIDIyMiwgMTA4LCAxNiwgMzEsIAotICAgIDIxOCwgMjUwLCAxMDgsIDE2LCAzMSwgMjE2LCA4MywgMTA4LCAxNiwgMzEsIDI0MiwgMTAzLCAxMDgsIDE2LCAzMSwgMjEyLCAKLSAgICAyOCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI5LCAxMDgsIDE2LCAzMSwgMjUxLCAyMiwgMTA4LCAxNiwgMzEsIDIxNSwgODYsIAotICAgIDEwOCwgMTYsIDMxLCAyNTAsIDI1NCwgMjMwLCAxMjcsIDEwOCwgMTYsIDMxLCAyMjEsIDIwNCwgNjQsIDIzNSwgNjEsIDEwOCwgCi0gICAgMTYsIDMxLCAyNTEsIDMzLCAxMDgsIDE2LCAzMSwgMjE1LCAyMjAsIDEwOCwgMTYsIDMxLCAyMTgsIDE1NiwgMjE1LCAyMjAsIAotICAgIDEwOCwgMTYsIDMxLCAyMzIsIDE1NCwgMTA4LCAxNiwgMzEsIDIxOSwgNTgsIDEwOCwgMTYsIDMxLCAyMTQsIDE0MiwgMTA4LCAKLSAgICAxNiwgMzEsIDI0MCwgMjUzLCAyNDYsIDcyLCAxMDgsIDE2LCAzMSwgMjUzLCAyMzUsIDEwOCwgMTYsIDMxLCAyMjQsIDIzNywgCi0gICAgMjUzLCAyMzUsIDEwOCwgMTYsIDMxLCAyNTEsIDE1MCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI4LCAyNTEsIDE1MCwgMTA4LCAKLSAgICAxNiwgMzEsIDI1NCwgMTQzLCAxMDgsIDE2LCAzMSwgMjE4LCAxMTksIDIxOCwgMjcsIDIxOCwgMTE4LCAxMDgsIDE2LCAzMSwgCi0gICAgMjE4LCAxMTksIDIxOCwgMjcsIDIxOCwgMTE3LCAxMDgsIDE2LCAzMSwgMjE4LCA2OSwgMTA4LCAxNiwgMzEsIDIyNCwgMjAzLCAKLSAgICAxMDgsIDE2LCAzMSwgMjQ3LCAxODksIDEwOCwgMTYsIDMxLCAyNDcsIDE5MSwgMTA4LCAxNiwgMzEsIDI0NywgMTkwLCAxMDgsIAotICAgIDE2LCAzMSwgMjI0LCAxMzQsIDEwOCwgMTYsIDMxLCAyMjQsIDEyMywgMTA4LCAxNiwgMzEsIDI0OSwgMTMwLCAxMDgsIDE2LCAKLSAgICAzMSwgMjQ5LCAxMjksIDEwOCwgMTYsIDMxLCAyNDksIDEyOCwgMTA4LCAxNiwgMzEsIDI0OSwgMTI3LCAxMDgsIDE2LCAzMSwgCi0gICAgMjQ5LCAxMjYsIDEwOCwgMTYsIDMxLCAyNTQsIDE3OCwgMTA4LCAxNiwgMzEsIDI1MiwgMTI3LCA2NCwgMjMxLCAxNTQsIAotICAgIDEwOCwgMTYsIDMxLCAyNTIsIDEyNywgNjQsIDIxNCwgMTcsIDEwOCwgMTYsIDMxLCAyMjMsIDYwLCAxMDgsIDE2LCAzMSwgCi0gICAgMjQwLCAyNDUsIDEwOCwgMTYsIDMxLCAyMjgsIDIxNywgMTA4LCAxNiwgMzEsIDI0OCwgMTUzLCAxMDgsIDE2LCAzMSwgMjMwLCAKLSAgICAxMzksIDEwOCwgMTYsIDMxLCAxNjMsIDI0NiwgMTAyLCAxMDgsIDE2LCAzMSwgMTYzLCAyMjYsIDEzNiwgMTAsIDE0LCAyNDAsIAotICAgIDEwOSwgMTAsIDE0LCAyNDAsIDEwOCwgMTAsIDE0LCAyNDAsIDEwNywgMTAsIDE0LCAyNDAsIDEwNiwgMTAsIDE0LCAyNDAsIAotICAgIDEwNSwgMTAsIDE0LCAyNDAsIDEwNCwgMTAsIDE0LCAyNDAsIDEwMywgMTAsIDE0LCAyNDAsIDEwMiwgMTAsIDE0LCAyNDAsIAotICAgIDEwMSwgMTAsIDE0LCAyNDAsIDEwMCwgMTAsIDE0LCAyNDAsIDk5LCAxMCwgMTQsIDI0MCwgOTgsIDEwLCAxNCwgMjQwLCA5NywgCi0gICAgMTAsIDE0LCAyNDAsIDk2LCAxMCwgMTQsIDI0MCwgOTUsIDEwLCAxNCwgMjQwLCA5NCwgMTAsIDE0LCAyNDAsIDkzLCAxMCwgCi0gICAgMTQsIDI0MCwgOTIsIDEwLCAxNCwgMjQwLCA5MSwgMTAsIDE0LCAyNDAsIDkwLCAxMCwgMTQsIDI0MCwgODksIDEwLCAxNCwgCi0gICAgMjQwLCA4OCwgMTAsIDE0LCAyNDAsIDg3LCAxMCwgMTQsIDI0MCwgODYsIDEwLCAxNCwgMjQwLCA4NSwgMTAsIDE0LCAyNDAsIAotICAgIDg0LCAxMCwgMTQsIDI0MCwgODMsIDEwLCAxNCwgMjQwLCA4MiwgMTAsIDE0LCAyNDAsIDgxLCAxMCwgMTQsIDI0MCwgODAsIAotICAgIDEwLCAxNCwgMjQwLCA3OSwgMTAsIDE0LCAyNDAsIDc4LCAxMCwgMTQsIDI0MCwgNzcsIDEwLCAxNCwgMjQwLCA3NiwgMTAsIAotICAgIDE0LCAyNDAsIDc1LCAxMCwgMTQsIDI0MCwgNzQsIDEwLCAxNCwgMjQwLCA3MywgMTAsIDE0LCAyNDAsIDcyLCAxMCwgMTQsIAotICAgIDI0MCwgNzEsIDEwLCAxNCwgMjQwLCA3MCwgMTAsIDE0LCAyNDAsIDY5LCAxMCwgMTQsIDI0MCwgNjgsIDEwLCAxNCwgMjQwLCAKLSAgICA2NywgMTAsIDE0LCAyNDAsIDY2LCAxMCwgMTQsIDI0MCwgNjUsIDEwLCAxNCwgMjQwLCA2NCwgMTAsIDE0LCAyNDAsIDYzLCAKLSAgICAxMCwgMTQsIDI0MCwgNjIsIDEwLCAxNCwgMjQwLCA2MSwgMTAsIDE0LCAyNDAsIDYwLCAxMCwgMTQsIDI0MCwgNTksIDEwLCAKLSAgICAxNCwgMjQwLCA1OCwgMTAsIDE0LCAyNDAsIDU3LCAxMCwgMTQsIDI0MCwgNTYsIDEwLCAxNCwgMjQwLCA1NSwgMTAsIDE0LCAKLSAgICAyNDAsIDU0LCAxMCwgMTQsIDI0MCwgNTMsIDEwLCAxNCwgMjQwLCA1MiwgMTAsIDE0LCAyNDAsIDUxLCAxMCwgMTQsIDI0MCwgCi0gICAgNTAsIDEwLCAxNCwgMjQwLCA0OSwgMTAsIDE0LCAyNDAsIDQ4LCAxMCwgMTQsIDI0MCwgNDcsIDEwLCAxNCwgMjQwLCA0NiwgCi0gICAgMTAsIDE0LCAyNDAsIDQ1LCAxMCwgMTQsIDI0MCwgNDQsIDEwLCAxNCwgMjQwLCA0MywgMTAsIDE0LCAyNDAsIDQyLCAxMCwgCi0gICAgMTQsIDI0MCwgNDEsIDEwLCAxNCwgMjQwLCA0MCwgMTAsIDE0LCAyNDAsIDM5LCAxMCwgMTQsIDI0MCwgMzgsIDEwLCAxNCwgCi0gICAgMjQwLCAzNywgMTAsIDE0LCAyNDAsIDM2LCAxMCwgMTQsIDI0MCwgMzUsIDEwLCAxNCwgMjQwLCAzNCwgMTAsIDE0LCAyNDAsIAotICAgIDMzLCAxMCwgMTQsIDI0MCwgMzIsIDEwLCAxNCwgMjQwLCAzMSwgMTAsIDE0LCAyNDAsIDMwLCAxMCwgMTQsIDI0MCwgMjksIAotICAgIDEwLCAxNCwgMjQwLCAyOCwgMTAsIDE0LCAyNDAsIDI3LCAxMCwgMTQsIDI0MCwgMjYsIDEwLCAxNCwgMjQwLCAyNSwgMTAsIAotICAgIDE0LCAyNDAsIDI0LCAxMCwgMTQsIDI0MCwgMjMsIDEwLCAxNCwgMjQwLCAyMiwgMTAsIDE0LCAyNDAsIDIxLCAxMCwgMTQsIAotICAgIDI0MCwgMjAsIDEwLCAxNCwgMjQwLCAxOSwgMTAsIDE0LCAyNDAsIDE4LCAxMCwgMTQsIDI0MCwgMTcsIDEwLCAxNCwgMjQwLCAKLSAgICAxNiwgMTAsIDE0LCAyNDAsIDE1LCAxMCwgMTQsIDI0MCwgMTQsIDEwLCAxNCwgMjQwLCAxMywgMTAsIDE0LCAyNDAsIDEyLCAKLSAgICAxMCwgMTQsIDI0MCwgMTEsIDEwLCAxNCwgMjQwLCAxMCwgMTAsIDE0LCAyNDAsIDksIDEwLCAxNCwgMjQwLCA4LCAxMCwgMTQsIAotICAgIDI0MCwgNywgMTAsIDE0LCAyNDAsIDYsIDEwLCAxNCwgMjQwLCA1LCAxMCwgMTQsIDI0MCwgNCwgMTAsIDE0LCAyNDAsIDMsIAotICAgIDEwLCAxNCwgMjQwLCAyLCAxMCwgMTQsIDI0MCwgMSwgMTAsIDE0LCAyNDAsIDAsIDEwLCAxNCwgMjM5LCAyNTUsIDEwLCAxNCwgCi0gICAgMjM5LCAyNTQsIDEwLCAxNCwgMjM5LCAyNTMsIDEwLCAxNCwgMjM5LCAyNTIsIDEwLCAxNCwgMjM5LCAyNTEsIDEwLCAxNCwgCi0gICAgMjM5LCAyNTAsIDEwLCAxNCwgMjM5LCAyNDksIDEwLCAxNCwgMjM5LCAyNDgsIDEwLCAxNCwgMjM5LCAyNDcsIDEwLCAxNCwgCi0gICAgMjM5LCAyNDYsIDEwLCAxNCwgMjM5LCAyNDUsIDEwLCAxNCwgMjM5LCAyNDQsIDEwLCAxNCwgMjM5LCAyNDMsIDEwLCAxNCwgCi0gICAgMjM5LCAyNDIsIDEwLCAxNCwgMjM5LCAyNDEsIDEwLCAxNCwgMjM5LCAyNDAsIDEwLCAxNCwgMjM5LCAyMzksIDEwLCAxNCwgCi0gICAgMjM5LCAyMzgsIDEwLCAxNCwgMjM5LCAyMzcsIDEwLCAxNCwgMjM5LCAyMzYsIDEwLCAxNCwgMjM5LCAyMzUsIDEwLCAxNCwgCi0gICAgMjM5LCAyMzQsIDEwLCAxNCwgMjM5LCAyMzMsIDEwLCAxNCwgMjM5LCAyMzIsIDEwLCAxNCwgMjM5LCAyMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAyMzAsIDEwLCAxNCwgMjM5LCAyMjksIDEwLCAxNCwgMjM5LCAyMjgsIDEwLCAxNCwgMjM5LCAyMjcsIDEwLCAxNCwgCi0gICAgMjM5LCAyMjYsIDEwLCAxNCwgMjM5LCAyMjUsIDEwLCAxNCwgMjM5LCAyMjQsIDEwLCAxNCwgMjM5LCAyMjMsIDEwLCAxNCwgCi0gICAgMjM5LCAyMjIsIDEwLCAxNCwgMjM5LCAyMjEsIDEwLCAxNCwgMjM5LCAyMjAsIDEwLCAxNCwgMjM5LCAyMTksIDEwLCAxNCwgCi0gICAgMjM5LCAyMTgsIDEwLCAxNCwgMjM5LCAyMTcsIDEwLCAxNCwgMjM5LCAyMTYsIDEwLCAxNCwgMjM5LCAyMTUsIDEwLCAxNCwgCi0gICAgMjM5LCAyMTQsIDEwLCAxNCwgMjM5LCAyMTMsIDEwLCAxNCwgMjM5LCAyMTIsIDEwLCAxNCwgMjM5LCAyMTEsIDEwLCAxNCwgCi0gICAgMjM5LCAyMTAsIDEwLCAxNCwgMjM5LCAyMDksIDEwLCAxNCwgMjM5LCAyMDgsIDEwLCAxNCwgMjM5LCAyMDcsIDEwLCAxNCwgCi0gICAgMjM5LCAyMDYsIDEwLCAxNCwgMjM5LCAyMDUsIDEwLCAxNCwgMjM5LCAyMDQsIDEwLCAxNCwgMjM5LCAyMDMsIDEwLCAxNCwgCi0gICAgMjM5LCAyMDIsIDEwLCAxNCwgMjM5LCAyMDEsIDEwLCAxNCwgMjM5LCAyMDAsIDEwLCAxNCwgMjM5LCAxOTksIDEwLCAxNCwgCi0gICAgMjM5LCAxOTgsIDEwLCAxNCwgMjM5LCAxOTcsIDEwLCAxNCwgMjM5LCAxOTYsIDEwLCAxNCwgMjM5LCAxOTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxOTQsIDEwLCAxNCwgMjM5LCAxOTMsIDEwLCAxNCwgMjM5LCAxOTIsIDEwLCAxNCwgMjM5LCAxOTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxOTAsIDEwLCAxNCwgMjM5LCAxODksIDEwLCAxNCwgMjM5LCAxODgsIDEwLCAxNCwgMjM5LCAxODcsIDEwLCAxNCwgCi0gICAgMjM5LCAxODYsIDEwLCAxNCwgMjM5LCAxODUsIDEwLCAxNCwgMjM5LCAxODQsIDEwLCAxNCwgMjM5LCAxODMsIDEwLCAxNCwgCi0gICAgMjM5LCAxODIsIDEwLCAxNCwgMjM5LCAxODEsIDEwLCAxNCwgMjM5LCAxODAsIDEwLCAxNCwgMjM5LCAxNzksIDEwLCAxNCwgCi0gICAgMjM5LCAxNzgsIDEwLCAxNCwgMjM5LCAxNzcsIDEwLCAxNCwgMjM5LCAxNzYsIDEwLCAxNCwgMjM5LCAxNzUsIDEwLCAxNCwgCi0gICAgMjM5LCAxNzQsIDEwLCAxNCwgMjM5LCAxNzMsIDEwLCAxNCwgMjM5LCAxNzIsIDEwLCAxNCwgMjM5LCAxNzEsIDEwLCAxNCwgCi0gICAgMjM5LCAxNzAsIDEwLCAxNCwgMjM5LCAxNjksIDEwLCAxNCwgMjM5LCAxNjgsIDEwLCAxNCwgMjM5LCAxNjcsIDEwLCAxNCwgCi0gICAgMjM5LCAxNjYsIDEwLCAxNCwgMjM5LCAxNjUsIDEwLCAxNCwgMjM5LCAxNjQsIDEwLCAxNCwgMjM5LCAxNjMsIDEwLCAxNCwgCi0gICAgMjM5LCAxNjIsIDEwLCAxNCwgMjM5LCAxNjEsIDEwLCAxNCwgMjM5LCAxNjAsIDEwLCAxNCwgMjM5LCAxNTksIDEwLCAxNCwgCi0gICAgMjM5LCAxNTgsIDEwLCAxNCwgMjM5LCAxNTcsIDEwLCAxNCwgMjM5LCAxNTYsIDEwLCAxNCwgMjM5LCAxNTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxNTQsIDEwLCAxNCwgMjM5LCAxNTMsIDEwLCAxNCwgMjM5LCAxNTIsIDEwLCAxNCwgMjM5LCAxNTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxNTAsIDEwLCAxNCwgMjM5LCAxNDksIDEwLCAxNCwgMjM5LCAxNDgsIDEwLCAxNCwgMjM5LCAxNDcsIDEwLCAxNCwgCi0gICAgMjM5LCAxNDYsIDEwLCAxNCwgMjM5LCAxNDUsIDEwLCAxNCwgMjM5LCAxNDQsIDEwLCAxNCwgMjM5LCAxNDMsIDEwLCAxNCwgCi0gICAgMjM5LCAxNDIsIDEwLCAxNCwgMjM5LCAxNDEsIDEwLCAxNCwgMjM5LCAxNDAsIDEwLCAxNCwgMjM5LCAxMzksIDEwLCAxNCwgCi0gICAgMjM5LCAxMzgsIDEwLCAxNCwgMjM5LCAxMzcsIDEwLCAxNCwgMjM5LCAxMzYsIDEwLCAxNCwgMjM5LCAxMzUsIDEwLCAxNCwgCi0gICAgMjM5LCAxMzQsIDEwLCAxNCwgMjM5LCAxMzMsIDEwLCAxNCwgMjM5LCAxMzIsIDEwLCAxNCwgMjM5LCAxMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAxMzAsIDEwLCAxNCwgMjM5LCAxMjksIDEwLCAxNCwgMjM5LCAxMjgsIDEwLCAxNCwgMjM5LCAxMjcsIDEwLCAxNCwgCi0gICAgMjM5LCAxMjYsIDEwLCAxNCwgMjM5LCAxMjUsIDEwLCAxNCwgMjM5LCAxMjQsIDEwLCAxNCwgMjM5LCAxMjMsIDEwLCAxNCwgCi0gICAgMjM5LCAxMjIsIDEwLCAxNCwgMjM5LCAxMjEsIDEwLCAxNCwgMjM5LCAxMjAsIDEwLCAxNCwgMjM5LCAxMTksIDEwLCAxNCwgCi0gICAgMjM5LCAxMTgsIDEwLCAxNCwgMjM5LCAxMTcsIDEwLCAxNCwgMjM5LCAxMTYsIDEwLCAxNCwgMjM5LCAxMTUsIDEwLCAxNCwgCi0gICAgMjM5LCAxMTQsIDEwLCAxNCwgMjM5LCAxMTMsIDEwLCAxNCwgMjM5LCAxMTIsIDEwLCAxNCwgMjM5LCAxMTEsIDEwLCAxNCwgCi0gICAgMjM5LCAxMTAsIDEwLCAxNCwgMjM5LCAxMDksIDEwLCAxNCwgMjM5LCAxMDgsIDEwLCAxNCwgMjM5LCAxMDcsIDEwLCAxNCwgCi0gICAgMjM5LCAxMDYsIDEwLCAxNCwgMjM5LCAxMDUsIDEwLCAxNCwgMjM5LCAxMDQsIDEwLCAxNCwgMjM5LCAxMDMsIDEwLCAxNCwgCi0gICAgMjM5LCAxMDIsIDEwLCAxNCwgMjM5LCAxMDEsIDEwLCAxNCwgMjM5LCAxMDAsIDEwLCAxNCwgMjM5LCA5OSwgMTAsIDE0LCAKLSAgICAyMzksIDk4LCAxMCwgMTQsIDIzOSwgOTcsIDEwLCAxNCwgMjM5LCA5NiwgMTAsIDE0LCAyMzksIDk1LCAxMCwgMTQsIDIzOSwgCi0gICAgOTQsIDEwLCAxNCwgMjM5LCA5MywgMTAsIDE0LCAyMzksIDkyLCAxMCwgMTQsIDIzOSwgOTEsIDEwLCAxNCwgMjM5LCA5MCwgCi0gICAgMTAsIDE0LCAyMzksIDg5LCAxMCwgMTQsIDIzOSwgODgsIDEwLCAxNCwgMjM5LCA4NywgMTAsIDE0LCAyMzksIDg2LCAxMCwgCi0gICAgMTQsIDIzOSwgODUsIDEwLCAxNCwgMjM5LCA4NCwgMTAsIDE0LCAyMzksIDgzLCAxMCwgMTQsIDIzOSwgODIsIDEwLCAxNCwgCi0gICAgMjM5LCA4MSwgMTAsIDE0LCAyMzksIDgwLCAxMCwgMTQsIDIzOSwgNzksIDEwLCAxNCwgMjM5LCA3OCwgMTAsIDE0LCAyMzksIAotICAgIDc3LCAxMCwgMTQsIDIzOSwgNzYsIDEwLCAxNCwgMjM5LCA3NSwgMTAsIDE0LCAyMzksIDc0LCAxMCwgMTQsIDIzOSwgNzMsIAotICAgIDEwLCAxNCwgMjM5LCA3MiwgMTAsIDE0LCAyMzksIDcxLCAxMCwgMTQsIDIzOSwgNzAsIDEwLCAxNCwgMjM5LCA2OSwgMTAsIAotICAgIDE0LCAyMzksIDY4LCAxMCwgMTQsIDIzOSwgNjcsIDEwLCAxNCwgMjM5LCA2NiwgMTAsIDE0LCAyMzksIDY1LCAxMCwgMTQsIAotICAgIDIzOSwgNjQsIDEwLCAxNCwgMjM5LCA2MywgMTAsIDE0LCAyMzksIDYyLCAxMCwgMTQsIDIzOSwgNjEsIDEwLCAxNCwgMjM5LCAKLSAgICA2MCwgMTAsIDE0LCAyMzksIDU5LCAxMCwgMTQsIDIzOSwgNTgsIDEwLCAxNCwgMjM5LCA1NywgMTAsIDE0LCAyMzksIDU2LCAKLSAgICAxMCwgMTQsIDIzOSwgNTUsIDEwLCAxNCwgMjM5LCA1NCwgMTAsIDE0LCAyMzksIDUzLCAxMCwgMTQsIDIzOSwgNTIsIDEwLCAKLSAgICAxNCwgMjM5LCA1MSwgMTAsIDE0LCAyMzksIDUwLCAxMCwgMTQsIDIzOSwgNDksIDEwLCAxNCwgMjM5LCA0OCwgMTAsIDE0LCAKLSAgICAyMzksIDQ3LCAxMCwgMTQsIDIzOSwgNDYsIDEwLCAxNCwgMjM5LCA0NSwgMTAsIDE0LCAyMzksIDQ0LCAxMCwgMTQsIDIzOSwgCi0gICAgNDMsIDEwLCAxNCwgMjM5LCA0MiwgMTAsIDE0LCAyMzksIDQxLCAxMCwgMTQsIDIzOSwgNDAsIDEwLCAxNCwgMjM5LCAzOSwgCi0gICAgMTAsIDE0LCAyMzksIDM4LCAxMCwgMTQsIDIzOSwgMzcsIDEwLCAxNCwgMjM5LCAzNiwgMTAsIDE0LCAyMzksIDM1LCAxMCwgCi0gICAgMTQsIDIzOSwgMzQsIDEwLCAxNCwgMjM5LCAzMywgMTAsIDE0LCAyMzksIDMyLCAxMCwgMTQsIDIzOSwgMzEsIDEwLCAxNCwgCi0gICAgMjM5LCAzMCwgMTAsIDE0LCAyMzksIDI5LCAxMCwgMTQsIDIzOSwgMjgsIDEwLCAxNCwgMjM5LCAyNywgMTAsIDE0LCAyMzksIAotICAgIDI2LCAxMCwgMTQsIDIzOSwgMjUsIDEwLCAxNCwgMjM5LCAyNCwgMTAsIDE0LCAyMzksIDIzLCAxMCwgMTQsIDIzOSwgMjIsIAotICAgIDEwLCAxNCwgMjM5LCAyMSwgMTAsIDE0LCAyMzksIDIwLCAxMCwgMTQsIDIzOSwgMTksIDEwLCAxNCwgMjM5LCAxOCwgMTAsIAotICAgIDE0LCAyMzksIDE3LCAxMCwgMTQsIDIzOSwgMTYsIDEwLCAxNCwgMjM5LCAxNSwgMTAsIDE0LCAyMzksIDE0LCAxMCwgMTQsIAotICAgIDIzOSwgMTMsIDEwLCAxNCwgMjM5LCAxMiwgMTAsIDE0LCAyMzksIDExLCAxMCwgMTQsIDIzOSwgMTAsIDEwLCAxNCwgMjM5LCAKLSAgICA5LCAxMCwgMTQsIDIzOSwgOCwgMTAsIDE0LCAyMzksIDcsIDEwLCAxNCwgMjM5LCA2LCAxMCwgMTQsIDIzOSwgNSwgMTAsIAotICAgIDE0LCAyMzksIDQsIDEwLCAxNCwgMjM5LCAzLCAxMCwgMTQsIDIzOSwgMiwgMTAsIDE0LCAyMzksIDEsIDEwLCAxNCwgMjM5LCAKLSAgICAwLCAxMCwgMTQsIDIzOCwgMjU1LCAxMCwgMTQsIDIzOCwgMjU0LCAxMCwgMTQsIDIzOCwgMjUzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjUyLCAxMCwgMTQsIDIzOCwgMjUxLCAxMCwgMTQsIDIzOCwgMjUwLCAxMCwgMTQsIDIzOCwgMjQ5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjQ4LCAxMCwgMTQsIDIzOCwgMjQ3LCAxMCwgMTQsIDIzOCwgMjQ2LCAxMCwgMTQsIDIzOCwgMjQ1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjQ0LCAxMCwgMTQsIDIzOCwgMjQzLCAxMCwgMTQsIDIzOCwgMjQyLCAxMCwgMTQsIDIzOCwgMjQxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjQwLCAxMCwgMTQsIDIzOCwgMjM5LCAxMCwgMTQsIDIzOCwgMjM4LCAxMCwgMTQsIDIzOCwgMjM3LCAxMCwgMTQsIDIzOCwgCi0gICAgMjM2LCAxMCwgMTQsIDIzOCwgMjM1LCAxMCwgMTQsIDIzOCwgMjM0LCAxMCwgMTQsIDIzOCwgMjMzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjMyLCAxMCwgMTQsIDIzOCwgMjMxLCAxMCwgMTQsIDIzOCwgMjMwLCAxMCwgMTQsIDIzOCwgMjI5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjI4LCAxMCwgMTQsIDIzOCwgMjI3LCAxMCwgMTQsIDIzOCwgMjI2LCAxMCwgMTQsIDIzOCwgMjI1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjI0LCAxMCwgMTQsIDIzOCwgMjIzLCAxMCwgMTQsIDIzOCwgMjIyLCAxMCwgMTQsIDIzOCwgMjIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjIwLCAxMCwgMTQsIDIzOCwgMjE5LCAxMCwgMTQsIDIzOCwgMjE4LCAxMCwgMTQsIDIzOCwgMjE3LCAxMCwgMTQsIDIzOCwgCi0gICAgMjE2LCAxMCwgMTQsIDIzOCwgMjE1LCAxMCwgMTQsIDIzOCwgMjE0LCAxMCwgMTQsIDIzOCwgMjEzLCAxMCwgMTQsIDIzOCwgCi0gICAgMjEyLCAxMCwgMTQsIDIzOCwgMjExLCAxMCwgMTQsIDIzOCwgMjEwLCAxMCwgMTQsIDIzOCwgMjA5LCAxMCwgMTQsIDIzOCwgCi0gICAgMjA4LCAxMCwgMTQsIDIzOCwgMjA3LCAxMCwgMTQsIDIzOCwgMjA2LCAxMCwgMTQsIDIzOCwgMjA1LCAxMCwgMTQsIDIzOCwgCi0gICAgMjA0LCAxMCwgMTQsIDIzOCwgMjAzLCAxMCwgMTQsIDIzOCwgMjAyLCAxMCwgMTQsIDIzOCwgMjAxLCAxMCwgMTQsIDIzOCwgCi0gICAgMjAwLCAxMCwgMTQsIDIzOCwgMTk5LCAxMCwgMTQsIDIzOCwgMTk4LCAxMCwgMTQsIDIzOCwgMTk3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTk2LCAxMCwgMTQsIDIzOCwgMTk1LCAxMCwgMTQsIDIzOCwgMTk0LCAxMCwgMTQsIDIzOCwgMTkzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTkyLCAxMCwgMTQsIDIzOCwgMTkxLCAxMCwgMTQsIDIzOCwgMTkwLCAxMCwgMTQsIDIzOCwgMTg5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTg4LCAxMCwgMTQsIDIzOCwgMTg3LCAxMCwgMTQsIDIzOCwgMTg2LCAxMCwgMTQsIDIzOCwgMTg1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTg0LCAxMCwgMTQsIDIzOCwgMTgzLCAxMCwgMTQsIDIzOCwgMTgyLCAxMCwgMTQsIDIzOCwgMTgxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTgwLCAxMCwgMTQsIDIzOCwgMTc5LCAxMCwgMTQsIDIzOCwgMTc4LCAxMCwgMTQsIDIzOCwgMTc3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTc2LCAxMCwgMTQsIDIzOCwgMTc1LCAxMCwgMTQsIDIzOCwgMTc0LCAxMCwgMTQsIDIzOCwgMTczLCAxMCwgMTQsIDIzOCwgCi0gICAgMTcyLCAxMCwgMTQsIDIzOCwgMTcxLCAxMCwgMTQsIDIzOCwgMTcwLCAxMCwgMTQsIDIzOCwgMTY5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTY4LCAxMCwgMTQsIDIzOCwgMTY3LCAxMCwgMTQsIDIzOCwgMTY2LCAxMCwgMTQsIDIzOCwgMTY1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTY0LCAxMCwgMTQsIDIzOCwgMTYzLCAxMCwgMTQsIDIzOCwgMTYyLCAxMCwgMTQsIDIzOCwgMTYxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTYwLCAxMCwgMTQsIDIzOCwgMTU5LCAxMCwgMTQsIDIzOCwgMTU4LCAxMCwgMTQsIDIzOCwgMTU3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTU2LCAxMCwgMTQsIDIzOCwgMTU1LCAxMCwgMTQsIDIzOCwgMTU0LCAxMCwgMTQsIDIzOCwgMTUzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTUyLCAxMCwgMTQsIDIzOCwgMTUxLCAxMCwgMTQsIDIzOCwgMTUwLCAxMCwgMTQsIDIzOCwgMTQ5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTQ4LCAxMCwgMTQsIDIzOCwgMTQ3LCAxMCwgMTQsIDIzOCwgMTQ2LCAxMCwgMTQsIDIzOCwgMTQ1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTQ0LCAxMCwgMTQsIDIzOCwgMTQzLCAxMCwgMTQsIDIzOCwgMTQyLCAxMCwgMTQsIDIzOCwgMTQxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTQwLCAxMCwgMTQsIDIzOCwgMTM5LCAxMCwgMTQsIDIzOCwgMTM4LCAxMCwgMTQsIDIzOCwgMTM3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTM2LCAxMCwgMTQsIDIzOCwgMTM1LCAxMCwgMTQsIDIzOCwgMTM0LCAxMCwgMTQsIDIzOCwgMTMzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTMyLCAxMCwgMTQsIDIzOCwgMTMxLCAxMCwgMTQsIDIzOCwgMTMwLCAxMCwgMTQsIDIzOCwgMTI5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTI4LCAxMCwgMTQsIDIzOCwgMTI3LCAxMCwgMTQsIDIzOCwgMTI2LCAxMCwgMTQsIDIzOCwgMTI1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTI0LCAxMCwgMTQsIDIzOCwgMTIzLCAxMCwgMTQsIDIzOCwgMTIyLCAxMCwgMTQsIDIzOCwgMTIxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTIwLCAxMCwgMTQsIDIzOCwgMTE5LCAxMCwgMTQsIDIzOCwgMTE4LCAxMCwgMTQsIDIzOCwgMTE3LCAxMCwgMTQsIDIzOCwgCi0gICAgMTE2LCAxMCwgMTQsIDIzOCwgMTE1LCAxMCwgMTQsIDIzOCwgMTE0LCAxMCwgMTQsIDIzOCwgMTEzLCAxMCwgMTQsIDIzOCwgCi0gICAgMTEyLCAxMCwgMTQsIDIzOCwgMTExLCAxMCwgMTQsIDIzOCwgMTEwLCAxMCwgMTQsIDIzOCwgMTA5LCAxMCwgMTQsIDIzOCwgCi0gICAgMTA4LCAxMCwgMTQsIDIzOCwgMTA3LCAxMCwgMTQsIDIzOCwgMTA2LCAxMCwgMTQsIDIzOCwgMTA1LCAxMCwgMTQsIDIzOCwgCi0gICAgMTA0LCAxMCwgMTQsIDIzOCwgMTAzLCAxMCwgMTQsIDIzOCwgMTAyLCAxMCwgMTQsIDIzOCwgMTAxLCAxMCwgMTQsIDIzOCwgCi0gICAgMTAwLCAxMCwgMTQsIDIzOCwgOTksIDEwLCAxNCwgMjM4LCA5OCwgMTAsIDE0LCAyMzgsIDk3LCAxMCwgMTQsIDIzOCwgOTYsIAotICAgIDEwLCAxNCwgMjM4LCA5NSwgMTAsIDE0LCAyMzgsIDk0LCAxMCwgMTQsIDIzOCwgOTMsIDEwLCAxNCwgMjM4LCA5MiwgMTAsIAotICAgIDE0LCAyMzgsIDkxLCAxMCwgMTQsIDIzOCwgOTAsIDEwLCAxNCwgMjM4LCA4OSwgMTAsIDE0LCAyMzgsIDg4LCAxMCwgMTQsIAotICAgIDIzOCwgODcsIDEwLCAxNCwgMjM4LCA4NiwgMTAsIDE0LCAyMzgsIDg1LCAxMCwgMTQsIDIzOCwgODQsIDEwLCAxNCwgMjM4LCAKLSAgICA4MywgMTAsIDE0LCAyMzgsIDgyLCAxMCwgMTQsIDIzOCwgODEsIDEwLCAxNCwgMjM4LCA4MCwgMjMzLCA5NiwgMjE3LCA4NSwgCi0gICAgMTI5LCAyMTksIDIwLCAxMjksIDI0NSwgMzksIDc5LCAxMjksIDIyNCwgMSwgNzksIDEyOSwgNTQsIDUwLCAxMjksIDI0NywgCi0gICAgMTQwLCA1MCwgMTI5LCAyMjUsIDE4NSwgNTAsIDEyOSwgMjU0LCAxMzQsIDEyOSwgMjU0LCA2NSwgMTI5LCA0MywgMjI2LCA3LCAKLSAgICAxMjksIDQ0LCAyMjYsIDcsIDEyOSwgMjUzLCAyMjQsIDEyOSwgOTYsIDUwLCAxMjksIDI0OSwgMjI3LCAxMjksIDI0MCwgCi0gICAgMTc0LCAxMjksIDI0MywgMjM2LCAyMTgsIDEzMSwgMTI5LCAyMTksIDQ4LCAxMjksIDIxLCAyMTAsIDg2LCAxMjksIDIxLCAKLSAgICAxMTEsIDEyOSwgMjEsIDEwNSwgMTI5LCAyMSwgMTU4LCAxMjksIDIxLCAxNjEsIDEyOSwgMjEsIDE5MCwgMTI5LCAyMSwgCi0gICAgMTk1LCAxMjksIDIxLCAxOTksIDEyOSwgMjEsIDE5NiwgMTI5LCAyMSwgMjAxLCAxMjksIDI0OSwgMjM0LCAxMjksIDIyMCwgCi0gICAgMTUyLCAxMjksIDIzMywgMjEsIDUwLCAxMjksIDI0NSwgMTA2LCA1MCwgMTI5LCAyNDIsIDEzNywgNTAsIDEyOSwgMjI0LCAKLSAgICAxNiwgNzksIDEyOSwgMjQ5LCAyMjUsIDI1MywgMjE0LCAxMjksIDcsIDYsIDEsIDYxLCAxMjksIDcsIDYsIDEsIDI1MywgCi0gICAgMTY2LCAxMjksIDcsIDYsIDEsIDI1MSwgNzQsIDEyOSwgNywgNiwgMSwgMjQ5LCA2OCwgMTI5LCA3LCA2LCAxLCA3NiwgMTI5LCAKLSAgICA3LCA2LCAxLCAyNDUsIDE0LCAxMjksIDcsIDYsIDEsIDI0MywgMjA5LCAxMjksIDcsIDYsIDEsIDI0MiwgNjcsIDEyOSwgNywgCi0gICAgNiwgMSwgNzQsIDEyOSwgNywgNiwgMSwgMjM1LCAxNTAsIDEyOSwgNywgNiwgMSwgMjM1LCAyOSwgMTI5LCA3LCA2LCAxLCAKLSAgICAxNTYsIDEyOSwgNywgNiwgMSwgMTk0LCAxMjksIDcsIDYsIDEsIDIzMCwgMzAsIDEyOSwgNywgNiwgMSwgNzgsIDEyOSwgNywgCi0gICAgNiwgMSwgMjI2LCAxMDksIDEyOSwgNywgNiwgMSwgMjI0LCA5OSwgMTI5LCA3LCA2LCAxLCAxNTMsIDEyOSwgNywgNiwgMSwgCi0gICAgMjIyLCA5MywgMTI5LCA3LCA2LCAxLCAyMTcsIDE1MywgMTI5LCA3LCA2LCAxLCA2OSwgMTI5LCA3LCA2LCAxLCAyMTQsIAotICAgIDEwNSwgMTI5LCA3LCA2LCAxLCAyMTIsIDk4LCAxMjksIDcsIDYsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDYsIDEsIDIxMSwgCi0gICAgMTE3LCAxMjksIDcsIDYsIDEsIDIxMCwgMTU5LCAxMjksIDQzLCA0MiwgMTI3LCAxMjksIDIyMywgNTMsIDIxOSwgNDgsIAotICAgIDEyOSwgNDQsIDQyLCAxMjcsIDEyOSwgMjUwLCAzOSwgMjU1LCAyMywgMTI5LCAxMjEsIDIzMiwgMjE5LCAxMjksIDI0MiwgCi0gICAgMTQ0LCAyNTUsIDIzLCAxMjksIDcsIDQsIDEsIDYxLCAxMjksIDcsIDQsIDEsIDI1MywgMTY2LCAxMjksIDcsIDQsIDEsIAotICAgIDI1MSwgNzQsIDEyOSwgNywgNCwgMSwgMjQ5LCA2OCwgMTI5LCA3LCA0LCAxLCA3NiwgMTI5LCA3LCA0LCAxLCAyNDUsIDE0LCAKLSAgICAxMjksIDcsIDQsIDEsIDI0MywgMjA5LCAxMjksIDcsIDQsIDEsIDI0MiwgNjcsIDEyOSwgNywgNCwgMSwgNzQsIDEyOSwgNywgCi0gICAgNCwgMSwgMjM1LCAxNTAsIDEyOSwgNywgNCwgMSwgMjM1LCAyOSwgMTI5LCA3LCA0LCAxLCAxNTYsIDEyOSwgNywgNCwgMSwgCi0gICAgMTk0LCAxMjksIDcsIDQsIDEsIDIzMCwgMzAsIDEyOSwgNywgNCwgMSwgNzgsIDEyOSwgNywgNCwgMSwgMjI2LCAxMDksIAotICAgIDEyOSwgNywgNCwgMSwgMjI0LCA5OSwgMTI5LCA3LCA0LCAxLCAxNTMsIDEyOSwgNywgNCwgMSwgMjIyLCA5MywgMTI5LCA3LCAKLSAgICA0LCAxLCAyMTcsIDE1MywgMTI5LCA3LCA0LCAxLCA2OSwgMTI5LCA3LCA0LCAxLCAyMTQsIDEwNSwgMTI5LCA3LCA0LCAxLCAKLSAgICAyMTIsIDk4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTc4LCAxMjksIDcsIDQsIDEsIDIxMSwgMTE3LCAxMjksIDcsIDQsIDEsIAotICAgIDIxMCwgMTU5LCAxMjksIDQzLCAyNDksIDEwNywgMTI3LCAxMjksIDY3LCAyMzIsIDIxOSwgMTI5LCA0NCwgMjQ5LCAxMDcsIAotICAgIDEyNywgMTI5LCAxODQsIDI1MSwgMTQsIDIxNywgODUsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNTgsIAotICAgIDQ1LCAyMjEsIDQ2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDEzLCA0NSwgMjIxLCAyLCA0NSwgMjIwLCAKLSAgICAyNDcsIDQ1LCAyMjAsIDIzOSwgNDUsIDIyMCwgMjM4LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgCi0gICAgMjM0LCA0NSwgMjIwLCAyMzMsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIAotICAgIDIyOSwgNDUsIDIyMCwgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAKLSAgICAyMjMsIDQ1LCAyMjAsIDIyMiwgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgCi0gICAgMjE4LCA0NSwgMjIwLCAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIAotICAgIDIxMiwgNDUsIDIyMCwgMjExLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAKLSAgICAyMDcsIDQ1LCAyMjAsIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgCi0gICAgMjAxLCA0NSwgMjIwLCAyMDAsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIAotICAgIDE5NiwgNDUsIDIyMCwgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAKLSAgICAxOTAsIDQ1LCAyMjAsIDE4OSwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgCi0gICAgMTg1LCA0NSwgMjIwLCAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIAotICAgIDE3OSwgNDUsIDIyMCwgMTc4LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAKLSAgICAxNzQsIDQ1LCAyMjAsIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgCi0gICAgMTY4LCA0NSwgMjIwLCAxNjcsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIAotICAgIDE2MywgNDUsIDIyMCwgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIxLCAKLSAgICAxNTYsIDQ1LCAyMjEsIDE1NSwgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgCi0gICAgMTUxLCA0NSwgMjIxLCAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIAotICAgIDE0NSwgNDUsIDIyMSwgMTQ0LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAKLSAgICAxNDAsIDQ1LCAyMjEsIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgCi0gICAgMTM0LCA0NSwgMjIxLCAxMzMsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIAotICAgIDEyOSwgNDUsIDIyMSwgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAKLSAgICAxMjMsIDQ1LCAyMjEsIDEyMiwgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgCi0gICAgMTE4LCA0NSwgMjIxLCAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIAotICAgIDExMiwgNDUsIDIyMSwgMTExLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAKLSAgICAxMDcsIDQ1LCAyMjEsIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgCi0gICAgMTAxLCA0NSwgMjIxLCAxMDAsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCAKLSAgICA0NSwgMjIxLCA5NSwgNDUsIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTAsIDQ1LCAyMjEsIAotICAgIDg5LCA0NSwgMjIxLCA4OCwgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAKLSAgICAyMjEsIDgzLCA0NSwgMjIxLCA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDc5LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgNzcsIAotICAgIDQ1LCAyMjEsIDc2LCA0NSwgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgCi0gICAgNzEsIDQ1LCAyMjEsIDcwLCA0NSwgMjIxLCA2OCwgNDUsIDIyMSwgNjcsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIAotICAgIDIyMSwgNjQsIDQ1LCAyMjEsIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgCi0gICAgNDUsIDIyMSwgNTcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCAKLSAgICA1MiwgNDUsIDIyMSwgNTEsIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ1LCA0NSwgCi0gICAgMjIxLCA0NCwgNDUsIDIyMSwgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCAKLSAgICA0NSwgMjIxLCAzOCwgNDUsIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIAotICAgIDMyLCA0NSwgMjIxLCAzMSwgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAKLSAgICAyMjEsIDI2LCA0NSwgMjIxLCAyNSwgNDUsIDIyMSwgMjMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIAotICAgIDQ1LCAyMjEsIDE5LCA0NSwgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgCi0gICAgMTQsIDQ1LCAyMjEsIDEyLCA0NSwgMjIxLCAxMSwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAKLSAgICAyMjEsIDcsIDQ1LCAyMjEsIDYsIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDEsIDQ1LCAKLSAgICAyMjEsIDAsIDQ1LCAyMjAsIDI1NSwgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgCi0gICAgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDYsIDQ1LCAyMjAsIAotICAgIDI0NSwgNDUsIDIyMCwgMjQ0LCA0NSwgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAKLSAgICAyNDAsIDIyNywgMjA2LCAyMjcsIDIwOCwgMjE4LCAxNTQsIDY0LCAyNDEsIDI0MCwgMjE5LCA1MCwgMjE4LCAxNTQsIDY0LCAKLSAgICAyMTYsIDIxMywgMjE4LCA4NiwgMjQ1LCAxNTEsIDY0LCAyMTYsIDIxMywgMjQ1LCA2NCwgMjQ1LCAxNTEsIDY0LCAyMTUsIAotICAgIDI0NCwgMjQ1LCAxMTcsIDI0NSwgMTQwLCAyNDUsIDE0MSwgMjU1LCAxNiwgMjU1LCAxNywgMjU0LCAxNzYsIDI1MiwgNTUsIAotICAgIDI1MiwgMTg3LCAyNTEsIDEzOSwgMTM1LCAyMTcsIDkwLCAyMDMsIDIxNywgOTAsIDI0MCwgMjM0LCAyMTcsIDk0LCAyMzIsIAotICAgIDIyMCwgMjQ0LCAxNTMsIDE2NiwgMjMyLCAyMTksIDI0NSwgMTUxLCA2NCwgMjMyLCAyMTksIDIzMywgNiwgMjI4LCAxNDAsIAotICAgIDI0NSwgMTIwLCAyMzIsIDIyMCwgMjE3LCA5MCwgNjcsIDIxNywgOTAsIDIxMiwgMTE4LCAyNDQsIDI4LCAyNDQsIDE1MywgCi0gICAgMjQ0LCAxMzMsIDI1MCwgMjM4LCAyMjMsIDU2LCAyNDksIDE1MSwgMjIwLCAzMCwgMjI2LCAxMzQsIDIzMiwgMTU2LCAxMTEsIAotICAgIDIxOSwgNjAsIDIyMCwgMzAsIDIzNiwgNiwgMjMyLCAxNTYsIDIxMCwgODYsIDIxOSwgMTkzLCAyNDgsIDE1OSwgMjMyLCAKLSAgICAyMTAsIDI0NSwgODUsIDI0NywgMTYzLCAyNDgsIDM5LCAyNDksIDE4NiwgMTExLCAyNDgsIDE0OSwgMjQ4LCAzOSwgMjQ5LCAKLSAgICAxODYsIDEwNSwgMjQ4LCAxNDgsIDI0OCwgMzksIDI0OSwgMTg2LCAxNTgsIDI0OCwgMTQ3LCAyNDgsIDM5LCAyNDksIDE4NiwgCi0gICAgMTYxLCAyNDgsIDE0NiwgMTUyLCAyNTUsIDE2LCAyMjksIDIxNCwgMjE3LCAxNzgsIDIzNiwgNjksIDIxNywgMTgxLCAyNDUsIAotICAgIDE1MSwgNjQsIDIxNSwgMjQ1LCAyNTEsIDIyMSwgMjQ1LCA3MCwgMjUxLCAxMywgMjUxLCAxNSwgMjQ1LCAxNTEsIDY0LCAKLSAgICAyMzEsIDg2LCAyNDUsIDExOCwgMjE4LCA2MiwgMjE4LCA3OSwgMjQ1LCA4NSwgMjQ1LCA4NiwgMjM1LCAyMzksIDIyMCwgCi0gICAgMTQwLCAxNjEsIDI0NCwgMTE1LCAyMjAsIDEzOSwgMjQzLCAyNDUsIDIzNSwgMjM5LCAyMjAsIDE0MCwgMTU4LCAyNDIsIAotICAgIDEyOCwgMjIwLCAxMzksIDI0MiwgMTI1LCAyMzUsIDIzOSwgMjIwLCAxNDAsIDEwNSwgMjIzLCAxMjQsIDIyMCwgMTM5LCAKLSAgICAyMjIsIDE0NywgMjM1LCAyMzksIDIyMCwgMTQwLCAxMTEsIDIxNCwgMTc0LCAyMjAsIDEzOSwgMjE0LCAxMzMsIDIxOSwgMjMsIAotICAgIDI0OCwgNzEsIDI0OCwgNzMsIDIyNiwgODIsIDI1MCwgMTUwLCAyMjYsIDg0LCAxMjUsIDIyNiwgMjQ0LCAyMjQsIDE5NiwgCi0gICAgMjQxLCA1NCwgMjUxLCAxNTgsIDIyNSwgMTc2LCAyNDEsIDIxMCwgMjUxLCAxNjksIDIyOCwgODAsIDI1MSwgMTU4LCAyNDEsIAotICAgIDIxMCwgMjI5LCAxODAsIDIzNSwgMjQ5LCAyMzUsIDI1MSwgMjI5LCA4NywgMjMyLCAyMTksIDIyOSwgMTA0LCAyMTgsIDE1NCwgCi0gICAgNjQsIDIyMSwgMTYwLCAyNTQsIDI2LCAyMTgsIDIyNSwgMjQ1LCAxNTEsIDY0LCAyMjEsIDE2MCwgMjU0LCAyNiwgMjQ1LCAKLSAgICA4OCwgMTM1LCAyMTcsIDkxLCAyMjAsIDEyOSwgMjAzLCAyMTcsIDkxLCAyMjAsIDEyOSwgMjQwLCAyMzEsIDEzNSwgMjE3LCAKLSAgICA5MSwgMiwgMjM1LCA0MSwgMjAzLCAyMTcsIDkxLCAyLCAyMzUsIDQxLCAyNDAsIDIzMiwgMjMyLCAyMjAsIDIxNywgOTEsIAotICAgIDIyMCwgMTI5LCA2NywgMjE3LCA5MSwgMjIwLCAxMjksIDIxMiwgMTE3LCAyMjYsIDEsIDIzMiwgMjIwLCAyNDQsIDIyLCAKLSAgICAyMjYsIDEsIDIzMiwgMjIwLCAyNDYsIDExNCwgMjI1LCAzNSwgMjI2LCAxLCAyMzIsIDIyMCwgMjUyLCAxODYsIDIyNiwgMSwgCi0gICAgMjMyLCAyMjAsIDIxNCwgMTYzLCAyMjUsIDMxLCAyMjMsIDUzLCAyMzIsIDIyMCwgMjQ0LCAxNTMsIDIyMywgNTMsIDIzNSwgCi0gICAgMjQ5LCAyMjMsIDM4LCAyMTksIDE1NywgMjIwLCAzMCwgMTA1LCAyMTksIDE1NCwgMjE4LCAyMjcsIDIxOSwgMTU3LCAyMjAsIAotICAgIDMwLCAxNTgsIDIxOSwgMTUzLCAyMTgsIDIyNiwgMjQ4LCAzOSwgMjQ5LCAxODYsIDIxOCwgMTA3LCAyNDgsIDE0NSwgMjI0LCAKLSAgICAxODYsIDIxNCwgMTMyLCAxMTEsIDIyNCwgMTg2LCAyMTQsIDEzMCwgMjI0LCAxNTIsIDIyNCwgMTg2LCAyMTQsIDEzMiwgCi0gICAgMTA1LCAyMjQsIDE4NiwgMjE0LCAxMjksIDIyNCwgMTUxLCAyMjAsIDEzMCwgMjE1LCAyNDMsIDIxOCwgMTUzLCAyMTgsIDkwLCAKLSAgICAyNTEsIDE0LCAyNTAsIDE1MCwgMjUwLCAyMTcsIDIzMSwgNDgsIDIxMiwgNTksIDIzMCwgNDgsIDIxOCwgMTU0LCA2NCwgCi0gICAgMjQyLCAxMTQsIDI1NCwgMjYsIDIxOCwgMTU0LCA2NCwgMjI0LCAxNjksIDI1NCwgMjYsIDIxOSwgMjIsIDI0NSwgMTUxLCAKLSAgICA2NCwgMjQyLCAxMTQsIDI1NCwgMjYsIDI0NSwgMTUxLCA2NCwgMjI0LCAxNjksIDI1NCwgMjYsIDI0NSwgMTE1LCAyMTgsIAotICAgIDE1NCwgNjQsIDIxOCwgMTA3LCAyMTksIDM3LCAyMTksIDE1NywgMjQyLCAxNDgsIDEzNSwgMjM1LCAyMDIsIDIyMCwgMTA5LCAKLSAgICAyMTksIDE1NywgMTM1LCAyMzUsIDIwMiwgMjIxLCAxOTYsIDI0OSwgMTg2LCAyMjAsIDEzNywgMjM1LCAyMDIsIDI0OSwgCi0gICAgMTIxLCAyMTgsIDEwOCwgMjE2LCAyMzcsIDIxOCwgMTcwLCAyMjYsIDE3MywgMjE3LCAxNjgsIDI0OSwgMjI2LCAyMjYsIAotICAgIDE0NiwgMjI0LCAxODcsIDIzMSwgNDcsIDIyNSwgMjIsIDI1NCwgNjEsIDIyNCwgMTgxLCAyNDksIDIyNiwgMjU0LCA3NywgCi0gICAgMjI5LCAxNjgsIDIxOSwgMjAyLCA3LCA2LCAxLCAyNDMsIDAsIDcsIDQsIDEsIDI0MywgMCwgMjUwLCAxNjcsIDI1NCwgMTU3LCAKLSAgICAxODMsIDIxOCwgNjgsIDI0OSwgMjM1LCAyMTksIDEwOCwgMjMzLCA1MiwgMTY1LCAxLCAyMzIsIDE4MSwgMjA5LCAyMDksIDEsIAotICAgIDI0NCwgNTIsIDI0NCwgNDQsIDIwOSwgMjA5LCAxLCAyNDQsIDUyLCAyNDQsIDE2NSwgMjA5LCAyMDksIDEsIDIyMiwgMjEzLCAKLSAgICAyMDksIDIwOSwgMSwgMjMyLCAxNjIsIDYzLCAxNjQsIDI1MSwgMjMxLCAyMjAsIDUsIDI0MiwgMjIyLCAyMzAsIDI1MywgCi0gICAgMjIzLCA0NCwgMjQzLCAyMjMsIDI0MywgMjIyLCAyNDMsIDIyMSwgMjMwLCA1MCwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIAotICAgIDI1NCwgMjMyLCAxMDcsIDIyMiwgMjIxLCAyMzIsIDEwOSwgMjIyLCAyMjMsIDIyNSwgMjI3LCAyMzIsIDEwNiwgMjIyLCAKLSAgICAyMjAsIDIyOCwgMTExLCAyMzAsIDE3MCwgMjExLCAyMjksIDIzMiwgMTA4LCAyMjIsIDIyMiwgMjQzLCAyNDQsIDIyNSwgCi0gICAgMjI2LCAyMTIsIDE1LCAyNDUsIDE3MCwgMjQzLCAyMzMsIDIzMCwgMjM0LCAyMjYsIDIwMSwgMjE0LCAxMzQsIDg3LCAyMzAsIAotICAgIDIzNCwgMjQ4LCAxNjUsIDg3LCA4LCAzLCAyMzUsIDE2NCwgNzksIDIyNCwgMTk3LCAyNDQsIDI4LCAzMSwgNjcsIDQ0LCA3MSwgCi0gICAgMjMzLCAyNiwgMTI3LCAyMTMsIDExOCwgMjEzLCA3LCAyMTIsIDE5NSwgMjEyLCAxODQsIDIxMiwgMTczLCAyMTIsIDE2MiwgCi0gICAgMjEyLCAxNTEsIDIxMiwgMTQwLCAyMTIsIDEyOSwgMjEzLCAxMTcsIDIxMywgMTA2LCAyMTMsIDk1LCAyMTMsIDg0LCAyMTMsIAotICAgIDczLCAyMTMsIDYyLCAyMTMsIDUxLCAyNTEsIDc5LCAyMjYsIDE1OSwgNzksIDI1MSwgMjA0LCAyMDksIDI1MywgMTUsIDUsIAotICAgIDIyNywgMjE1LCAyMTYsIDI0MCwgMTUsIDUsIDIyNywgMjE1LCAxMTUsIDIyNywgMjE1LCAyNTEsIDEwNywgMTE1LCAyNTEsIAotICAgIDEwNiwgNDksIDI4LCAxNiwgMjQzLCAyNDMsIDIxOSwgMTA0LCAyNTAsIDgxLCAyMTQsIDksIDIxMywgNDAsIDIxMywgMjksIAotICAgIDIxMywgMTgsIDIxMywgNiwgMjEyLCAyNTEsIDIxMiwgMjQwLCAyMTIsIDIyOSwgMjEyLCAyMTgsIDIxMiwgMjA3LCAyMTIsIAotICAgIDE5OSwgMjEyLCAxOTgsIDIxMiwgMTk3LCAyMTIsIDE5NiwgMjEyLCAxOTQsIDIxMiwgMTkzLCAyMTIsIDE5MiwgMjEyLCAKLSAgICAxOTEsIDIxMiwgMTkwLCAyMTIsIDE4OSwgMjEyLCAxODgsIDIxMiwgMTg3LCAyMTIsIDE4NiwgMjEyLCAxODUsIDIxMiwgCi0gICAgMTgzLCAyMTIsIDE4MiwgMjEyLCAxODEsIDIxMiwgMTgwLCAyMTIsIDE3OSwgMjEyLCAxNzgsIDIxMiwgMTc3LCAyMTIsIAotICAgIDE3NiwgMjEyLCAxNzUsIDIxMiwgMTc0LCAyMTIsIDE3MiwgMjEyLCAxNzEsIDIxMiwgMTcwLCAyMTIsIDE2OSwgMjEyLCAKLSAgICAxNjgsIDIxMiwgMTY3LCAyMTIsIDE2NiwgMjEyLCAxNjUsIDIxMiwgMTY0LCAyMTIsIDE2MywgMjEyLCAxNjEsIDIxMiwgCi0gICAgMTYwLCAyMTIsIDE1OSwgMjEyLCAxNTgsIDIxMiwgMTU3LCAyMTIsIDE1NiwgMjEyLCAxNTUsIDIxMiwgMTU0LCAyMTIsIAotICAgIDE1MywgMjEyLCAxNTIsIDIxMiwgMTUwLCAyMTIsIDE0OSwgMjEyLCAxNDgsIDIxMiwgMTQ3LCAyMTIsIDE0NiwgMjEyLCAKLSAgICAxNDUsIDIxMiwgMTQ0LCAyMTIsIDE0MywgMjEyLCAxNDIsIDIxMiwgMTQxLCAyMTIsIDEzOSwgMjEyLCAxMzgsIDIxMiwgCi0gICAgMTM3LCAyMTIsIDEzNiwgMjEyLCAxMzUsIDIxMiwgMTM0LCAyMTIsIDEzMywgMjEyLCAxMzIsIDIxMiwgMTMxLCAyMTIsIAotICAgIDEzMCwgMjEyLCAxMjgsIDIxMiwgMTI3LCAyMTIsIDEyNiwgMjEyLCAxMjUsIDIxMiwgMTI0LCAyMTIsIDEyMywgMjEyLCAKLSAgICAxMjIsIDIxMiwgMTIxLCAyMTIsIDEyMCwgMjEyLCAxMTksIDIxMywgMTE2LCAyMTMsIDExNSwgMjEzLCAxMTQsIDIxMywgCi0gICAgMTEzLCAyMTMsIDExMiwgMjEzLCAxMTEsIDIxMywgMTEwLCAyMTMsIDEwOSwgMjEzLCAxMDgsIDIxMywgMTA3LCAyMTMsIAotICAgIDEwNSwgMjEzLCAxMDQsIDIxMywgMTAzLCAyMTMsIDEwMiwgMjEzLCAxMDEsIDIxMywgMTAwLCAyMTMsIDk5LCAyMTMsIDk4LCAKLSAgICAyMTMsIDk3LCAyMTMsIDk2LCAyMTMsIDk0LCAyMTMsIDkzLCAyMTMsIDkyLCAyMTMsIDkxLCAyMTMsIDkwLCAyMTMsIDg5LCAKLSAgICAyMTMsIDg4LCAyMTMsIDg3LCAyMTMsIDg2LCAyMTMsIDg1LCAyMTMsIDgzLCAyMTMsIDgyLCAyMTMsIDgxLCAyMTMsIDgwLCAKLSAgICAyMTMsIDc5LCAyMTMsIDc4LCAyMTMsIDc3LCAyMTMsIDc2LCAyMTMsIDc1LCAyMTMsIDc0LCAyMTMsIDcyLCAyMTMsIDcxLCAKLSAgICAyMTMsIDcwLCAyMTMsIDY5LCAyMTMsIDY4LCAyMTMsIDY3LCAyMTMsIDY2LCAyMTMsIDY1LCAyMTMsIDY0LCAyMTMsIDYzLCAKLSAgICAyMTMsIDYxLCAyMTMsIDYwLCAyMTMsIDU5LCAyMTMsIDU4LCAyMTMsIDU3LCAyMTMsIDU2LCAyMTMsIDU1LCAyMTMsIDU0LCAKLSAgICAyMTMsIDUzLCAyMTMsIDUyLCAyMTMsIDUwLCAyMTMsIDQ5LCAyMTMsIDQ4LCAyMTMsIDQ3LCAyMTMsIDQ2LCAyMTMsIDQ1LCAKLSAgICAyMTMsIDQ0LCAyMTMsIDQzLCAyMTMsIDQyLCAyMTMsIDQxLCAyMTMsIDM5LCAyMTMsIDM4LCAyMTMsIDM3LCAyMTMsIDM2LCAKLSAgICAyMTMsIDM1LCAyMTMsIDM0LCAyMTMsIDMzLCAyMTMsIDMyLCAyMTMsIDMxLCAyMTMsIDMwLCAyMTMsIDI4LCAyMTMsIDI3LCAKLSAgICAyMTMsIDI2LCAyMTMsIDI1LCAyMTMsIDI0LCAyMTMsIDIzLCAyMTMsIDIyLCAyMTMsIDIxLCAyMTMsIDIwLCAyMTMsIDE5LCAKLSAgICAyMTMsIDE3LCAyMTMsIDE2LCAyMTMsIDE1LCAyMTMsIDE0LCAyMTMsIDEzLCAyMTMsIDEyLCAyMTMsIDExLCAyMTMsIDEwLCAKLSAgICAyMTMsIDksIDIxMywgOCwgMjEzLCA1LCAyMTMsIDQsIDIxMywgMywgMjEzLCAyLCAyMTMsIDEsIDIxMywgMCwgMjEyLCAyNTUsIAotICAgIDIxMiwgMjU0LCAyMTIsIDI1MywgMjEyLCAyNTIsIDIxMiwgMjUwLCAyMTIsIDI0OSwgMjEyLCAyNDgsIDIxMiwgMjQ3LCAKLSAgICAyMTIsIDI0NiwgMjEyLCAyNDUsIDIxMiwgMjQ0LCAyMTIsIDI0MywgMjEyLCAyNDIsIDIxMiwgMjQxLCAyMTIsIDIzOSwgCi0gICAgMjEyLCAyMzgsIDIxMiwgMjM3LCAyMTIsIDIzNiwgMjEyLCAyMzUsIDIxMiwgMjM0LCAyMTIsIDIzMywgMjEyLCAyMzIsIAotICAgIDIxMiwgMjMxLCAyMTIsIDIzMCwgMjEyLCAyMjgsIDIxMiwgMjI3LCAyMTIsIDIyNiwgMjEyLCAyMjUsIDIxMiwgMjI0LCAKLSAgICAyMTIsIDIyMywgMjEyLCAyMjIsIDIxMiwgMjIxLCAyMTIsIDIyMCwgMjEyLCAyMTksIDIxMiwgMjE3LCAyMTIsIDIxNiwgCi0gICAgMjEyLCAyMTUsIDIxMiwgMjE0LCAyMTIsIDIxMywgMjEyLCAyMTIsIDIxMiwgMjExLCAyMTIsIDIxMCwgMjEyLCAyMDksIAotICAgIDIxMiwgMjA4LCAyMTIsIDIwNiwgMjEyLCAyMDUsIDIxMiwgMjA0LCAyMTIsIDIwMywgMjEyLCAyMDIsIDIxMiwgMjAxLCAKLSAgICAyMTIsIDIwMCwgNywgNiwgMSwgMTE2LCAyLCAyMzEsIDIzOCwgMjIsIDI0MiwgMTQzLCA3LCA0LCAxLCAxMTYsIDIsIDIzMSwgCi0gICAgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjIwLCA1MSwgNywgNCwgMSwgMTYwLCAyLCAKLSAgICA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCAKLSAgICA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDI0MiwgMTQzLCA3LCA2LCAxLCAxNjAsIDIsIAotICAgIDY3LCAyMzIsIDIyMCwgMjUyLCA1MSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIAotICAgIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzOSwgMjIsIDIzMSwgMjM3LCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgCi0gICAgMzksIDIyLCAyMzEsIDIzNywgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDM5LCAyMiwgMjUwLCAyNDIsIDcsIDQsIDEsIDE2MCwgCi0gICAgMiwgMjUwLCAzOSwgMjIsIDI1MCwgMjQyLCA3LCA2LCAxLCAyNDAsIDE2MSwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgCi0gICAgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIzMSwgMjM4LCAyMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCA1OSwgCi0gICAgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDIyOSwgODUsIDIsIDIxNiwgOTAsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIAotICAgIDIyMCwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjIwLCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAKLSAgICAyMjAsIDI1MiwgNTEsIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAKLSAgICAyNDIsIDE0MywgNywgNiwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMjAsIDI1MiwgNTEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgCi0gICAgMiwgNjcsIDIzMiwgMjIwLCAyNTIsIDUxLCAyMiwgMTQyLCA3LCA2LCAxLCAyMjIsIDk0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCAKLSAgICA3LCA0LCAxLCAyMjIsIDk0LCAyLCA2NywgMjMyLCAyMjAsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjM4LCAyMiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzgsIDIyLCAyNDIsIDE0MywgNywgNiwgMSwgMTE2LCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE0MiwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTE2LCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMTE2LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAyMjYsIAotICAgIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMTYwLCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTYwLCAyLCA1OSwgCi0gICAgNzIsIDIyLCAxNDIsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDcyLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3MiwgCi0gICAgMjIsIDE4NCwgNywgNCwgMSwgMTYwLCAyLCA1OSwgNzIsIDIyLCAxODQsIDcsIDQsIDEsIDI0MCwgMTYxLCAyLCA1OSwgNzIsIAotICAgIDIyLCAyNDIsIDE0MywgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDU5LCA3MiwgMjIsIDE4NCwgNywgNiwgMSwgMjQwLCAxNjEsIAotICAgIDIsIDIyNiwgMjI5LCAyMiwgMTQyLCA3LCA0LCAxLCAyNDAsIDE2MSwgMiwgMjI2LCAyMjksIDIyLCA1OSwgNzIsIDIyLCAKLSAgICAxNDIsIDcsIDYsIDEsIDI0MCwgMTYxLCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNCwgMSwgMjQwLCAxNjEsIDIsIDIyNiwgCi0gICAgMjI5LCAyMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyMzUsIDE1MSwgMiwgMTg0LCA3LCA0LCAxLCAyMzUsIDE1MSwgCi0gICAgMiwgNTksIDcyLCAyMiwgMTg0LCA3LCA2LCAxLCAyMzMsIDE1NSwgMiwgMTg0LCA3LCA0LCAxLCAyMzMsIDE1NSwgMiwgMTg0LCAKLSAgICA3LCA2LCAxLCAyMzIsIDU1LCAyLCAxODQsIDcsIDQsIDEsIDIzMiwgNTUsIDIsIDE4NCwgNywgNiwgMSwgMjIzLCAyMjcsIDIsIAotICAgIDE4NCwgNywgNCwgMSwgMjIzLCAyMjcsIDIsIDE4NCwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMjYsIDIyOSwgMjIsIDE4NCwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE4NCwgNywgNCwgCi0gICAgMSwgMTA0LCAyLCAyMzEsIDIzOCwgMjIsIDE4NCwgNywgNCwgMSwgMjU0LCAyNTMsIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAKLSAgICAyMDQsIDE0NCwgMiwgMjQyLCAxNDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAxNDIsIDcsIDQsIDEsIDIxNSwgOTQsIDIxNCwgCi0gICAgMTA2LCAyLCAyNDIsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjIxLCAxOTgsIAotICAgIDIsIDI0MiwgMTQzLCA3LCA0LCAxLCAyMjEsIDE5OCwgMiwgMTQyLCA3LCA0LCAxLCAyNDEsIDU4LCAyMjEsIDE5OCwgMiwgCi0gICAgMjQyLCAxNDMsIDcsIDQsIDEsIDI0MSwgNTgsIDIyMSwgMTk4LCAyLCAxNDIsIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCAKLSAgICA3MiwgMiwgMjU0LCAxNzksIDksIDIyMCwgMTM3LCA3NywgMiwgMTgyLCA3MiwgMiwgMjEyLCAzMCwgOSwgMjIwLCAxMzcsIAotICAgIDc3LCAyLCAxODIsIDcyLCAyLCAxMDksIDIzMSwgMTk3LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDIyNiwgCi0gICAgMjM4LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDY5LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIAotICAgIDIxMCwgMjEyLCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgNzIsIDIsIDc2LCA5LCAyMjAsIDEzNywgNzcsIDIsIDE4MiwgCi0gICAgNzIsIDIsIDI1NCwgMjUyLCA5LCAyMjAsIDEzNywgMjI4LCA2OCwgMiwgMjM0LCAxODAsIDE0NiwgMSwgMjM0LCAxMTUsIDM2LCAKLSAgICAxMTcsIDIzNSwgMjksIDM2LCAxMTcsIDIyOSwgODQsIDM2LCAxMTcsIDI1MSwgNzQsIDM2LCAxMTcsIDIyNywgMTcxLCAzNiwgCi0gICAgMTE3LCAyMTUsIDE2MCwgMzYsIDExNywgMjI4LCAxMTYsIDM2LCAxMTcsIDIxNywgMTUzLCAzNiwgMTE3LCAyMzAsIDMwLCAKLSAgICAzNiwgMTE3LCAyMjYsIDEwOSwgMzYsIDExNywgMTk0LCAzNiwgMTE3LCAyMTEsIDExNywgMzYsIDExNywgMTUzLCAzNiwgCi0gICAgMTE3LCAxNTYsIDM2LCAxMTcsIDIxNCwgMTA1LCAzNiwgMTE3LCAyMzIsIDE4MiwgMzYsIDExNywgMjMyLCAxOTEsIDM2LCAKLSAgICAxMTcsIDIyMiwgMTgyLCAzNiwgMTE3LCAyMjgsIDk4LCAzNiwgMTE3LCAyMzUsIDE1MCwgMzYsIDExNywgMjIwLCAxMDYsIAotICAgIDM2LCAxMTcsIDIxOCwgMjI4LCAzNiwgMTE3LCAyMjIsIDkzLCAzNiwgMTE3LCAyNDIsIDY3LCAzNiwgMTE3LCAyMzMsIDIzOCwgCi0gICAgMzYsIDMsIDIzNSwgMTYsIDM2LCAzLCAyMzQsIDk4LCAzNiwgMywgMjM0LCA4OSwgMzYsIDMsIDIzMywgMjIzLCAzNiwgMywgCi0gICAgMjMzLCAxOTQsIDM2LCAzLCAyMzQsIDE4OCwgMzYsIDMsIDIzNCwgMTg3LCAzNiwgMywgMjM0LCAyNTIsIDM2LCAzLCAyMzQsIAotICAgIDM0LCAzNiwgMywgMjM0LCAxNiwgMzYsIDMsIDIzNCwgMjAxLCAzNiwgMywgMjI5LCA4MSwgMzYsIDMsIDIyOSwgMzIsIDM2LCAKLSAgICAzLCAyMjksIDI4LCAzNiwgMywgMjI4LCAyNTMsIDM2LCAzLCAyMjgsIDI0NiwgMzYsIDMsIDIyOSwgNjksIDM2LCAzLCAyMjksIAotICAgIDY3LCAzNiwgMywgMjI5LCA3OCwgMzYsIDMsIDIyOSwgOSwgMzYsIDMsIDIyOSwgNCwgMzYsIDMsIDIyOSwgNzEsIDM2LCAzLCAKLSAgICAyNTEsIDQwLCAzNiwgMywgMjUwLCA1OSwgMzYsIDMsIDI1MCwgNDksIDM2LCAzLCAyNDksIDEyMCwgMzYsIDMsIDI0OSwgOTEsIAotICAgIDM2LCAzLCAyNTAsIDE5OCwgMzYsIDMsIDI1MCwgMTkwLCAzNiwgMywgMjUxLCAzMCwgMzYsIDMsIDI0OSwgMjQ2LCAzNiwgMywgCi0gICAgMjQ5LCAxODIsIDM2LCAzLCAyNTAsIDIzMCwgMzYsIDMsIDIyNywgMTY4LCAzNiwgMywgMjI3LCAxNTIsIDM2LCAzLCAyMjcsIAotICAgIDE0NywgMzYsIDMsIDIyNywgMTMyLCAzNiwgMywgMjI3LCAxMjUsIDM2LCAzLCAyMjcsIDE2MCwgMzYsIDMsIDIyNywgMTU5LCAKLSAgICAzNiwgMywgMjI3LCAxNjUsIDM2LCAzLCAyMjcsIDEzOCwgMzYsIDMsIDIyNywgMTM2LCAzNiwgMywgMjI3LCAxNjMsIDM2LCAKLSAgICAzLCAyMTUsIDE1NiwgMzYsIDMsIDIxNSwgMTM2LCAzNiwgMywgMjE1LCAxMzUsIDM2LCAzLCAyMTUsIDEyNCwgMzYsIDMsIAotICAgIDIxNSwgMTIxLCAzNiwgMywgMjE1LCAxNTIsIDM2LCAzLCAyMTUsIDE1MSwgMzYsIDMsIDIxNSwgMTU1LCAzNiwgMywgMjE1LCAKLSAgICAxMzQsIDM2LCAzLCAyMTUsIDEzMywgMzYsIDMsIDIxNSwgMTU0LCAzNiwgMywgMjI4LCAxMTQsIDM2LCAzLCAyMjgsIDEwMCwgCi0gICAgMzYsIDMsIDIyOCwgOTksIDM2LCAzLCAyMjgsIDgzLCAzNiwgMywgMjI4LCA4MiwgMzYsIDMsIDIyOCwgMTEwLCAzNiwgMywgCi0gICAgMjI4LCAxMDksIDM2LCAzLCAyMjgsIDExMywgMzYsIDMsIDIyOCwgODUsIDM2LCAzLCAyMjgsIDg0LCAzNiwgMywgMjI4LCAKLSAgICAxMTIsIDM2LCAzLCAyMTcsIDEwMiwgMzYsIDMsIDIxNiwgMTE4LCAzNiwgMywgMjE2LCAxMDQsIDM2LCAzLCAyMTUsIDExOSwgCi0gICAgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIDIzLCAzNiwgMywgMjE3LCAxMiwgMzYsIDMsIDIxNywgODAsIDM2LCAzLCAKLSAgICAxMTIsIDM2LCAzLCAyMTYsIDE4LCAzNiwgMywgMjE3LCA0MiwgMzYsIDMsIDIyOSwgMjMwLCAzNiwgMywgMjI4LCAyMzgsIAotICAgIDM2LCAzLCAyMjgsIDIxMywgMzYsIDMsIDIyNywgMjQyLCAzNiwgMywgMjI3LCAxODMsIDM2LCAzLCAyMjksIDExMiwgMzYsIAotICAgIDMsIDIyOSwgMTA4LCAzNiwgMywgMjI5LCAyMTcsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCA2OSwgMzYsIDMsIDIyOSwgCi0gICAgMTkyLCAzNiwgMywgMjI2LCA5MywgMzYsIDMsIDIyNSwgMTExLCAzNiwgMywgMjI1LCA3NCwgMzYsIDMsIDIyNCwgMTUzLCAKLSAgICAzNiwgMywgMjI0LCAxMjIsIDM2LCAzLCAyMjUsIDIyNCwgMzYsIDMsIDIyNSwgMjE0LCAzNiwgMywgMjI2LCA3NSwgMzYsIDMsIAotICAgIDIyNSwgMTksIDM2LCAzLCAyMjQsIDI1MiwgMzYsIDMsIDIyNSwgMjM4LCAzNiwgMywgMjMxLCAyNDIsIDM2LCAzLCAyMzAsIAotICAgIDIzNSwgMzYsIDMsIDIzMCwgMjA2LCAzNiwgMywgMjMwLCAxMDcsIDM2LCAzLCAyMzAsIDU5LCAzNiwgMywgMjMxLCA5NiwgCi0gICAgMzYsIDMsIDIzMSwgODUsIDM2LCAzLCAyMzEsIDIwOCwgMzYsIDMsIDIzMCwgMTY2LCAzNiwgMywgMjMwLCAxMzcsIDM2LCAzLCAKLSAgICAyMzEsIDE0MCwgMzYsIDMsIDIxMSwgMTAzLCAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIAotICAgIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgCi0gICAgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NywgMzYsIDMsIAotICAgIDIyMywgMzgsIDM2LCAzLCAyMjIsIDI0MiwgMzYsIDMsIDIyMiwgMTQyLCAzNiwgMywgMjIyLCAxMTQsIDM2LCAzLCAyMjMsIAotICAgIDEzMSwgMzYsIDMsIDIyMywgMTExLCAzNiwgMywgMjIzLCAxNjksIDM2LCAzLCAyMjIsIDIxMywgMzYsIDMsIDIyMiwgMTk5LCAKLSAgICAzNiwgMywgMjIzLCAxMzksIDM2LCAzLCAyMzMsIDE0MCwgMzYsIDMsIDIzMiwgMjQ3LCAzNiwgMywgMjMyLCAyMzMsIDM2LCAKLSAgICAzLCAyMzIsIDEwMywgMzYsIDMsIDIzMiwgNzgsIDM2LCAzLCAyMzMsIDY0LCAzNiwgMywgMjMzLCA1NiwgMzYsIDMsIDIzMywgCi0gICAgMTE1LCAzNiwgMywgMjMyLCAxNjIsIDM2LCAzLCAyMzIsIDEzMywgMzYsIDMsIDIzMywgODAsIDM2LCAzLCAyMTQsIDI2LCAKLSAgICAzNiwgMywgMjEzLCAxNzYsIDM2LCAzLCAyMTMsIDE2MiwgMzYsIDMsIDIxMiwgMTE2LCAzNiwgMywgMjEyLCAxMDksIDM2LCAKLSAgICAzLCAyMTMsIDI1NSwgMzYsIDMsIDIxMywgMjUwLCAzNiwgMywgMjE0LCAyMywgMzYsIDMsIDIxMywgMTM4LCAzNiwgMywgCi0gICAgMjEzLCAxMjcsIDM2LCAzLCAyMTQsIDUsIDM2LCAzLCAyMzIsIDE4MCwgMzYsIDMsIDIzMiwgMTc1LCAzNiwgMywgMjMyLCAKLSAgICAxNzQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE3NiwgCi0gICAgMzYsIDMsIDIzMiwgMTc5LCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE3MiwgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCi0gICAgMywgMjMyLCAxODksIDM2LCAzLCAyMzIsIDE4NCwgMzYsIDMsIDIzMiwgMTgzLCAzNiwgMywgMjMyLCAxNjcsIDM2LCAzLCAKLSAgICAyMzIsIDE2NiwgMzYsIDMsIDIzMiwgMTg2LCAzNiwgMywgMjMyLCAxODUsIDM2LCAzLCAyMzIsIDE4OCwgMzYsIDMsIDIzMiwgCi0gICAgMTY5LCAzNiwgMywgMjMyLCAxNjgsIDM2LCAzLCAyMzIsIDE4NywgMzYsIDMsIDIyMiwgMTgwLCAzNiwgMywgMjIyLCAxNjksIAotICAgIDM2LCAzLCAyMjIsIDE2OCwgMzYsIDMsIDIyMiwgMTYyLCAzNiwgMywgMjIyLCAxNTUsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIAotICAgIDMsIDIyMiwgMTc1LCAzNiwgMywgMjIyLCAxNzksIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgCi0gICAgMjIyLCAxNzgsIDM2LCAzLCAyMjgsIDk2LCAzNiwgMywgMjI4LCA5MSwgMzYsIDMsIDIyOCwgOTAsIDM2LCAzLCAyMjgsIDg3LCAKLSAgICAzNiwgMywgMjI4LCA4NiwgMzYsIDMsIDIyOCwgOTMsIDM2LCAzLCAyMjgsIDkyLCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIAotICAgIDIyOCwgODksIDM2LCAzLCAyMjgsIDg4LCAzNiwgMywgMjI4LCA5NCwgMzYsIDMsIDIzNSwgMTQ2LCAzNiwgMywgMjM1LCAKLSAgICAxMTQsIDM2LCAzLCAyMzUsIDEwNywgMzYsIDMsIDIzNSwgNTcsIDM2LCAzLCAyMzUsIDM5LCAzNiwgMywgMjM1LCAxMzIsIAotICAgIDM2LCAzLCAyMzUsIDEzMCwgMzYsIDMsIDIzNSwgMTQxLCAzNiwgMywgMjM1LCA3NCwgMzYsIDMsIDIzNSwgNjUsIDM2LCAzLCAKLSAgICAyMzUsIDEzNSwgMzYsIDMsIDIyMCwgMTAwLCAzNiwgMywgMjIwLCAzNCwgMzYsIDMsIDIyMCwgMjksIDM2LCAzLCAyMTksIAotICAgIDIyNywgMzYsIDMsIDIxOSwgMjEyLCAzNiwgMywgMjIwLCA2NSwgMzYsIDMsIDIyMCwgNjMsIDM2LCAzLCAyMjAsIDkyLCAzNiwgCi0gICAgMywgMjIwLCA5LCAzNiwgMywgMjIwLCAzLCAzNiwgMywgMjIwLCA3MywgMzYsIDMsIDIxOCwgMjI0LCAzNiwgMywgMjE4LCAKLSAgICAxOTQsIDM2LCAzLCAyMTgsIDE5MCwgMzYsIDMsIDIxOCwgMTgxLCAzNiwgMywgMjE4LCAxNzgsIDM2LCAzLCAyMTgsIDE5OSwgCi0gICAgMzYsIDMsIDIxOCwgMTk4LCAzNiwgMywgMjE4LCAyMjMsIDM2LCAzLCAyMTgsIDE4NiwgMzYsIDMsIDIxOCwgMTg1LCAzNiwgCi0gICAgMywgMjE4LCAyMDEsIDM2LCAzLCAyMjIsIDMzLCAzNiwgMywgMjE5LCAxOTMsIDM2LCAzLCAyMTksIDE3NywgMzYsIDMsIAotICAgIDIxOCwgODQsIDM2LCAzLCAyMTgsIDUsIDM2LCAzLCAyMjEsIDE4MywgMzYsIDMsIDIyMSwgMTcyLCAzNiwgMywgMjIyLCAxOSwgCi0gICAgMzYsIDMsIDIxOSwgNjAsIDM2LCAzLCAyMTksIDQyLCAzNiwgMywgMjIxLCAyMjEsIDM2LCAzLCAyNDIsIDUzLCAzNiwgMywgCi0gICAgMjQxLCAxODcsIDM2LCAzLCAyNDEsIDE2OCwgMzYsIDMsIDI0MCwgMjI5LCAzNiwgMywgMjQwLCAyMDksIDM2LCAzLCAyNDEsIAotICAgIDI0NSwgMzYsIDMsIDI0MSwgMjI3LCAzNiwgMywgMjQyLCA0MywgMzYsIDMsIDI0MSwgNzUsIDM2LCAzLCAyNDEsIDYwLCAzNiwgCi0gICAgMywgMjQxLCAyNTMsIDM2LCAzLCAyMzMsIDIzNywgMzYsIDMsIDIzMywgMjM2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAzLCAKLSAgICAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI3LCAzNiwgMywgMjMzLCAyMjYsIDM2LCAzLCAyMzMsIDIzMywgMzYsIDMsIDIzMywgCi0gICAgMjMyLCAzNiwgMywgMjMzLCAyMzUsIDM2LCAzLCAyMzMsIDIyOSwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjMzLCAyMzQsIAotICAgIDM2LCAzLCAyMTksIDIzMywgMTc1LCAxMTcsIDUsIDIxMSwgNjgsIDE3NSwgMTE3LCA1LCAyMjMsIDE1OCwgMTc1LCAxMTcsIAotICAgIDUsIDIyMywgODEsIDk4LCAxLCAyMTUsIDI4LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTc2LCA3MCwgMTE3LCA1LCAyNDksIAotICAgIDI0MSwgMjM0LCAxMzgsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzQsIDM0LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjM0LCAKLSAgICAxMTEsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjksIDksIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNTEsIDQxLCA3MCwgCi0gICAgMTE3LCA1LCAyNDksIDI0MSwgMjUwLCAxNjUsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNDksIDI0NiwgNzAsIDExNywgNSwgCi0gICAgMjQ5LCAyNDEsIDI1MCwgOTQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMjcsIDEzOCwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDI0OCwgMjI5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjE1LCAxNDUsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyNDcsIDE1MywgCi0gICAgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNSwgMTQwLCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMTk4LCA3MCwgMTE3LCA1LCAKLSAgICAyNDksIDI0MSwgMjE3LCAxMDYsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTYsIDIwOSwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIAotICAgIDExMiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxNiwgMTU3LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI4LCA3OSwgNzAsIAotICAgIDExNywgNSwgMjQ5LCAyNDEsIDI1MiwgMTk5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI1LCAxNTAsIDcwLCAxMTcsIDUsIAotICAgIDI0OSwgMjQxLCAyMjUsIDE5LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjI1LCAxMjQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAKLSAgICAyMzAsIDE2NiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxMCwgMjQ0LCA3MCwgMTE3LCA1LCAyNDksIDI0MSwgMjIyLCAyMTMsIAotICAgIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMzIsIDE2MiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIxMywgMTM4LCA3MCwgMTE3LCAKLSAgICA1LCAyNDksIDI0MSwgMjIwLCAxMDQsIDcwLCAxMTcsIDUsIDI0OSwgMjQxLCAyMTgsIDIyNSwgNzAsIDExNywgNSwgMjQ5LCAKLSAgICAyNDEsIDIwNiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDE2MiwgNzAsIDExNywgNSwgMjQ5LCAyNDEsIDIzMywgMTQxLCA3MCwgCi0gICAgMjUsIDUsIDI0OSwgMjQxLCAyMjQsIDkxLCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjI0LCAzMywgNzAsIAotICAgIDIzNSwgMjUwLCAyNSwgNSwgMjQ5LCAyNDEsIDIyMiwgMTAyLCA3MCwgMjM1LCAyNTAsIDI1LCA1LCAyNDksIDI0MSwgMjIyLCAKLSAgICA5NSwgNzAsIDIzNSwgMjUwLCAyNSwgNSwgMjQ5LCAyNDEsIDIyNCwgNzIsIDcwLCAyNSwgNSwgMjI2LCAyMDgsIDcwLCAyNSwgCi0gICAgNSwgMjU1LCA0MywgMTQxLCAxLCAyNTIsIDcsIDIyOSwgODIsIDE0MSwgMSwgMjUyLCA3LCAyMjksIDMyLCAxNDEsIDEsIAotICAgIDI1MiwgNywgMjI4LCAyNTMsIDE0MSwgMSwgMjUyLCA3LCAyMjksIDY5LCAxNDEsIDEsIDI1MiwgNywgMjI5LCA5LCA1NiwgMSwgCi0gICAgMjUyLCA3LCAyMjksIDgyLCA1NiwgMSwgMjUyLCA3LCAyMjksIDMyLCA1NiwgMSwgMjUyLCA3LCAyMjgsIDI1MywgNTYsIDEsIAotICAgIDI1MiwgNywgMjI5LCA2OSwgNTYsIDEsIDI1MiwgNywgMjI5LCA5LCA1NiwgMSwgMjU0LCAyMDMsIDI1MCwgMTk4LCA1NiwgMSwgCi0gICAgMjU0LCAyMDMsIDIxNSwgMTE5LCA1NiwgMSwgMjU0LCAyMDMsIDExMiwgNTYsIDEsIDI1NCwgMjAzLCAyMjYsIDEwOSwgNTgsIAotICAgIDEsIDI0NSwgMjgsIDI0NSwgMjcsIDI0OSwgMTkwLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjcsIDI0NSwgMjgsIDI0OSwgCi0gICAgMTkwLCAxMzgsIDEzMCwgCisgICAgMCwgMjExLCAyMjgsIDI0MCwgMjEyLCA4MiwgMjE3LCAzMSwgODIsIDQyLCA1NCwgMjQzLCA5NywgNTQsIDIxOCwgMjQ2LCAKKyAgICA1NCwgMjUwLCAyMzUsIDI1MCwgMTYwLCA0OSwgMjE5LCA3NiwgNTAsIDIxOSwgNzYsIDI1MCwgNTksIDkxLCA1NCwgMjQ1LCAKKyAgICAyMzMsIDIzNSwgMjE5LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAwLCAxNywgMjAyLCA4NCwgMTcsIDEwNSwgMTcsIDEwOCwgCisgICAgMTcsIDE0NywgMTcsIDE0OSwgMTcsIDE3MCwgMTcsIDE5NSwgMTcsIDIxMywgMTExLCAxNywgMTk5LCAxNywgMjIyLCA2MywgCisgICAgMjQ1LCAyNDIsIDIxMywgMTQzLCAyMjcsIDE3OSwgNTQsIDI0MSwgMzUsIDU0LCAyMzcsIDI0NywgNTQsIDIxNywgNDcsIDgyLCAKKyAgICAyNDUsIDIzMSwgMjUwLCA0OSwgOCwgNiwgMSwgNjMsIDgsIDYsIDEsIDI0OSwgMjU1LCA4LCA2LCAxLCAyNDcsIDEyNSwgOCwgCisgICAgNiwgMSwgMjQ1LCA1MSwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc0LCA4LCA2LCAxLCAyMzksIDc1LCA4LCA2LCAxLCAKKyAgICAyMzcsIDE3MSwgOCwgNiwgMSwgNzUsIDgsIDYsIDEsIDIzMCwgMTg0LCA4LCA2LCAxLCAyMzAsIDU0LCA4LCA2LCAxLCAxNTksIAorICAgIDgsIDYsIDEsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2MywgOCwgNiwgMSwgNzgsIDgsIDYsIDEsIDIxOSwgMTg0LCA4LCAKKyAgICA2LCAxLCAyMTcsIDEzNCwgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAxOTQsIDgsIDYsIDEsIDIxMCwgNjksIDgsIDYsIDEsIAorICAgIDY4LCA4LCA2LCAxLCAyMDYsIDE2NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDgsIDYsIDEsIDIwMywgMTk2LCA4LCA2LCAxLCAKKyAgICAyMDMsIDEyNCwgOCwgNiwgMSwgMjAyLCAxNTksIDQ5LCA1MSwgMTU1LCAyMTYsIDc0LCAyMTIsIDAsIDUwLCA1MSwgMTU1LCAKKyAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMTI0LCAyMjcsIDExNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCA4LCA1LCAxLCA2MywgOCwgNSwgCisgICAgMSwgMjQ5LCAyNTUsIDgsIDUsIDEsIDI0NywgMTI1LCA4LCA1LCAxLCAyNDUsIDUxLCA4LCA1LCAxLCA3NCwgOCwgNSwgMSwgCisgICAgMjQwLCAxNzQsIDgsIDUsIDEsIDIzOSwgNzUsIDgsIDUsIDEsIDIzNywgMTcxLCA4LCA1LCAxLCA3NSwgOCwgNSwgMSwgMjMwLCAKKyAgICAxODQsIDgsIDUsIDEsIDIzMCwgNTQsIDgsIDUsIDEsIDE1OSwgOCwgNSwgMSwgMjI2LCAxODUsIDgsIDUsIDEsIDIyMywgCisgICAgMTYzLCA4LCA1LCAxLCA3OCwgOCwgNSwgMSwgMjE5LCAxODQsIDgsIDUsIDEsIDIxNywgMTM0LCA4LCA1LCAxLCAxNDYsIDgsIAorICAgIDUsIDEsIDE5NCwgOCwgNSwgMSwgMjEwLCA2OSwgOCwgNSwgMSwgNjgsIDgsIDUsIDEsIDIwNiwgMTY0LCA4LCA1LCAxLCAKKyAgICAyMDQsIDE0NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDgsIDUsIDEsIDIwMywgMTI0LCA4LCA1LCAxLCAyMDIsIDE1OSwgNDksIAorICAgIDI0NSwgOTMsIDE1NSwgODAsIDIyNywgMTE0LCA1MCwgMjQ1LCA5MywgMTU1LCAyMDgsIDIyNywgMjIxLCAxOTAsIDIxMSwgCisgICAgMjI4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCAyNDYsIDIyMCwgNTQsIDIxOCwgMjAsIDU0LCAyNDUsIDkyLCA1NCwgMjAzLCAKKyAgICA0MywgNTQsIDI0NywgMjAzLCAxNDIsIDIxNCwgMTY4LCA1NCwgMjQzLCAyMzEsIDI0NSwgMTY5LCA1NCwgMjQwLCA0MSwgCisgICAgMjE5LCAyNDAsIDIzMSwgMzEsIDIyNywgMjE3LCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMjEsIDE2NiwgNTQsIAorICAgIDIxMiwgNywgMjM1LCAyMjAsIDIxNiwgMTI5LCA1NCwgMjI1LCAxNzAsIDI0NCwgNTUsIDU0LCAyMTgsIDc1LCA1NCwgMjEwLCAKKyAgICAxOTksIDEwOCwgMjEwLCAxOTksIDE0NywgMjUxLCAxMjYsIDI1MSwgMTM4LCAyMjQsIDE1MywgNTQsIDIxOCwgMTI2LCA1NCwgCisgICAgMTAxLCAyNDMsIDg1LCAyNDYsIDIzMSwgMjEwLCAxOTksIDEwNSwgMjI1LCA4MCwgMjE5LCAyNDAsIDIzMSwgMzEsIDIxNiwgCisgICAgMTEsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAyMDQsIAorICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAyMzAsIDIzOSwgCisgICAgMjE3LCA0NywgODIsIDgsIDYsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDE2NSwgOCwgNiwgMSwgMzQsIAorICAgIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAKKyAgICAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAyNTEsIDEwOSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCAKKyAgICA4LCA2LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIAorICAgIDUyLCA4LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIAorICAgIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgCisgICAgMjQzLCAyMzEsIDgsIDYsIDEsIDI0MCwgMjQzLCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTIsIDgsIDYsIAorICAgIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDIyMywgMjI0LCA1NCwgOCwgNiwgMSwgCisgICAgMTU4LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAxNjUsIDgsIDYsIDEsIAorICAgIDEwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgCisgICAgNiwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjEzLCA1NywgMTk0LCA4LCA1LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAorICAgIDM0LCAzLCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIAorICAgIDM0LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjUxLCAxMDksIDgsIDUsIAorICAgIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAKKyAgICAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM1LCAKKyAgICAyMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCAKKyAgICA1MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyNDAsIDI0MywgOCwgNSwgMSwgMjIzLCAxNjQsIAorICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgCisgICAgMTU4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAKKyAgICAyNDMsIDEzNywgNTQsIDgsIDUsIDEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAorICAgIDEwNiwgMywgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDUsIAorICAgIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIDUsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDMsIDIzMSwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIAorICAgIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMzQsIDMsIAorICAgIDIyMCwgNjIsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDYsIDEsIAorICAgIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIAorICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIAorICAgIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKKyAgICAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIAorICAgIDYsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ3LCAKKyAgICAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxODgsIDMsIAorICAgIDcwLCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE4OCwgCisgICAgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA1LCAKKyAgICAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM5LCA3NiwgCisgICAgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCAKKyAgICA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIzNywgCisgICAgMTcyLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDk1LCAKKyAgICA4LCA1LCAxLCAyMzcsIDE3MiwgMywgOTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjM1LCAKKyAgICAyMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKKyAgICAyMjUsIDE3MCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIAorICAgIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNiwgMSwgCisgICAgMjM1LCAyMDYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQzLCA4NCwgNzUsIDgsIDYsIDMyLCAyMzEsIDgxLCA4LCA1LCAzMiwgCisgICAgMjMxLCA4MSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCAKKyAgICA2LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgCisgICAgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA2LCAxLCAyMjgsIAorICAgIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAorICAgIDI0NywgMjksIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIAorICAgIDg1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIDg1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDUsIAorICAgIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgCisgICAgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIAorICAgIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIAorICAgIDIxNywgMjUxLCAyNDcsIDEzNywgMjUwLCAxNjAsIDgsIDYsIDEsIDI0MSwgNzgsIDgsIDUsIDEsIDI0MSwgNzgsIDgsIDYsIAorICAgIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAKKyAgICAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE1OCwgMywgNTIsIDE2NSwgOCwgNSwgMSwgMTU4LCAKKyAgICAzLCA1MiwgMTY1LCA4LCA2LCAzMiwgMjIwLCA3MywgOCwgNSwgMzIsIDIyMCwgNzMsIDgsIDYsIDEsIDIxNywgMSwgMywgCisgICAgMTY1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDE2NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjE3LCAKKyAgICAxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIAorICAgIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKKyAgICAyNDYsIDUyLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgCisgICAgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNSwgCisgICAgOTQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDYsIAorICAgIDIzMSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCisgICAgMjEwLCA3MCwgMywgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAKKyAgICAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgCisgICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAorICAgIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDEwNiwgMywgNTIsIDE2NSwgCisgICAgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDEwNiwgMywgMjIwLCAKKyAgICA2MiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA2LCAKKyAgICAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIwMywgCisgICAgMTI1LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgCisgICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAKKyAgICAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxNjMsIDE5NCwgOCwgNSwgCisgICAgMSwgNjYsIDMsIDk1LCA4LCA2LCAxLCA2NiwgMywgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDY2LCAKKyAgICAzLCAyMDgsIDE0MiwgOCwgNiwgMSwgMTQzLCAxOTUsIDgsIDUsIDEsIDE0MywgMTk1LCA4LCA2LCAxLCAxNzEsIDc4LCA4LCAKKyAgICA2LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA2LCAxLCAyNTEsIDg0LCAyNDUsIAorICAgIDUxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAKKyAgICAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI0NCwgMzcsIDgsIDYsIDEsIDIxNiwgNzMsIDc0LCAKKyAgICA4LCA2LCAxLCAyMTQsIDE5MiwgOCwgNiwgMSwgMTcxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDExMywgOCwgNSwgMSwgCisgICAgMjQwLCAxNzUsIDMsIDExMywgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA2LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgCisgICAgMjM1LCAyNTUsIDgsIDYsIDEsIDIzMCwgMjMwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIAorICAgIDMsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTEzLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA1LCAxLCAKKyAgICAyMjgsIDI2LCAzLCA5NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNDksIAorICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA2LCAxLCAxNTgsIDMsIDEwMSwgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA2LCAxLCAyMjAsIAorICAgIDU3LCA4LCA1LCAxLCAyMjAsIDU3LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgCisgICAgMTEzLCA4LCAxLCAyMDIsIDIxNiwgOCwgNiwgMSwgMTQzLCAxMDgsIDgsIDUsIDEsIDE0MywgMTA4LCA4LCA2LCAxLCAyNDEsIAorICAgIDcsIDgsIDEsIDIxNiwgNzMsIDI0MSwgOCwgMjI3LCAxNCwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE5LCAxNDIsIDExMywgOCwgCisgICAgNiwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAorICAgIDIxNiwgNzksIDExMywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDYsIAorICAgIDEsIDIwNiwgMjE2LCA4LCA2LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA1LCAKKyAgICAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgOTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA5NSwgCisgICAgOCwgNiwgMSwgMjQwLCAxNzcsIDgsIDYsIDEsIDI0MCwgMTc4LCAyMTYsIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMjE2LCAKKyAgICA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIwOSwgMjQ4LCA4LCAxLCAxMjAsIDMsIDk1LCA4LCA2LCAxLCAxNDMsIDE3MCwgCisgICAgOCwgNSwgMSwgMTQzLCAxNzAsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjAzLCAKKyAgICAxOTksIDgsIDEsIDI0NCwgMzAsIDI0NiwgMjcsIDgsIDEsIDIyNywgMjU0LCAyNDYsIDI3LCA4LCAxLCAyNTAsIDI0OCwgCisgICAgMjQ2LCAyNywgOCwgMSwgMjE2LCA3OSwgMjQ2LCAyNywgOCwgNiwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKKyAgICAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCAKKyAgICA2LCAxLCAyMjcsIDgxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyNywgODEsIDgsIAorICAgIDYsIDEsIDIyMiwgNDksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjIyLCA0OSwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAKKyAgICAyOSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCisgICAgMTU4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgCisgICAgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAKKyAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAKKyAgICAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIAorICAgIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCA3NCwgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMyLCAKKyAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgNzAsIAorICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjUxLCAKKyAgICAxMTAsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIAorICAgIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA5NSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM5LCAKKyAgICA3NiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ3LCAKKyAgICAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE1OCwgMywgCisgICAgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCisgICAgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDE4NSwgCisgICAgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQyLCAwLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE1OSwgOCwgNSwgCisgICAgMSwgMjQyLCAwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNiwgMSwgCisgICAgMjM1LCAyNTIsIDgsIDYsIDEsIDIwMywgMTk5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAorICAgIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgCisgICAgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjUxLCAxMTAsIDMsIDE2NSwgOCwgNSwgMSwgMjUxLCAKKyAgICAxMTAsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyMTEsIDMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIxMSwgMzIsIAorICAgIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIAorICAgIDYsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAorICAgIDYsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAKKyAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMzUsIAorICAgIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMzUsIAorICAgIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKKyAgICA2LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgCisgICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE3LCAKKyAgICAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNywgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAorICAgIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCisgICAgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzAsIAorICAgIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKKyAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgCisgICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIwMiwgMjM0LCA4LCA1LCAKKyAgICAxLCAyMDIsIDIzNCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIAorICAgIDI5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NSwgCisgICAgOTUsIDgsIDYsIDEsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMTksIDIxNiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgCisgICAgNSwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NSwgCisgICAgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMTU4LCAzLCAKKyAgICAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCAKKyAgICA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgNzAsIAorICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIwMywgCisgICAgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgCisgICAgMjQ1LCA5NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgOTUsIDgsIAorICAgIDUsIDEsIDI0MywgODQsIDIzMCwgMTg0LCA4LCA1LCAxLCAyNDQsIDEzMCwgMjQzLCAxOTEsIDgsIDUsIDEsIDIxNywgNjYsIAorICAgIDI0MywgMTkxLCA4LCA2LCAxLCAzNCwgMywgOTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCA5NSwgOCwgNSwgMSwgMjQ3LCAKKyAgICAxMjYsIDMsIDk1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIAorICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAKKyAgICAyMDksIDI0OCwgOCwgNiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNiwgMSwgCisgICAgNjYsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDE0MiwgOCwgNiwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA2LCAxLCAxODgsIAorICAgIDMsIDk1LCA4LCA1LCAxLCAxODgsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMTg1LCAKKyAgICAzLCA5NSwgOCwgNiwgMSwgNSwgMjE3LCAxMzUsIDMsIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIAorICAgIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNiwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNiwgCisgICAgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCA2MywgOCwgCisgICAgNSwgMSwgMjUxLCAyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCA2NiwgMywgMTEzLCA4LCA1LCAxLCAKKyAgICAxNzEsIDc4LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjA5LCAyNDgsIDgsIAorICAgIDUsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNSwgMSwgMjE2LCA3MywgNzQsIDgsIDUsIDEsIDIxNCwgMTkyLCA4LCA1LCAxLCAKKyAgICAyMTQsIDE5MywgMywgMTEzLCA4LCA1LCAxLCAxNzEsIDc0LCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKKyAgICAyMTYsIDczLCAxNzEsIDE4OCwgMywgMTEzLCA4LCA1LCAxLCAyNDYsIDE2LCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKKyAgICAyNDMsIDg0LCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNSwgMSwgMTMyLCAyMzksIAorICAgIDc1LCA4LCAxLCA1LCA2LCAyMzksIDc1LCA4LCA1LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgMjE2LCAxODIsIDIzNiwgNTMsIAorICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNSwgMSwgMjM3LCAzMiwgCisgICAgMywgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjMwLCA4LCAxLCA1LCA2LCA3NSwgOCwgCisgICAgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNSwgCisgICAgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjI3LCAxNjQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIAorICAgIDE4NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgCisgICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNDksIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIDExMywgCisgICAgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDgsIDUsIDEsIDI0OCwgMjI1LCA3OCwgOCwgMSwgNSwgNiwgMjIwLCA3MywgOCwgNSwgCisgICAgMSwgMjQ2LCAxNiwgMjIwLCAzNiwgOCwgNSwgMSwgMjE4LCAxOTIsIDgsIDUsIDEsIDIwNywgMTc0LCAxNDYsIDgsIDUsIDEsIAorICAgIDIwNywgMTc0LCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDExMywgOCwgCisgICAgNSwgMSwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKKyAgICAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMTYsIDczLCAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCAxLCA1LCA2LCAKKyAgICAxNDYsIDgsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDExMywgOCwgNSwgMSwgMjQxLCAKKyAgICA3LCA4LCA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NSwgMywgMjExLCAzMiwgMjUsIDExMywgOCwgNSwgMSwgMjExLCAxNzQsIAorICAgIDIxNiwgNzMsIDI0MSwgNywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgCisgICAgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDE0MiwgOCwgNSwgMSwgMjA2LCAyMTYsIAorICAgIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjA3LCAKKyAgICAxNzQsIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjAzLCAxMjQsIDgsIDEsIDUsIDYsIDIwMywgMTI0LCA4LCA1LCAKKyAgICAxLCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgCisgICAgMjQwLCAxNzcsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDUsIDk1LCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKKyAgICAyMTgsIDE5OSwgMjA1LCAxODYsIDIzOSwgMTI2LCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCisgICAgMjExLCA0MCwgMjQ3LCAxMjUsIDgsIDEsIDI0OCwgNzAsIDI0NiwgMjcsIDgsIDEsIDUsIDYsIDI0OSwgMjU1LCA4LCA1LCAxLCAKKyAgICAyNDYsIDE2LCAxNzEsIDc0LCA4LCAxLCA1LCA2LCAyMzksIDc2LCAzLCAxMTMsIDgsIDEsIDUsIDYsIDIzNywgMTcxLCA4LCAKKyAgICA1LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCA4LCAxLCA1LCA2LCAxNTksIAorICAgIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAxMTMsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMTYsIDczLCAKKyAgICAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjQ0LCAzLCAyNDMsIAorICAgIDE5MSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA4LCAyMiwgMjQzLCAxOTEsIAorICAgIDgsIDUsIDEsIDIwOSwgMTM3LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjA5LCAxOTQsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCAKKyAgICA1LCAxLCAyNDAsIDM5LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAyNDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDE4NywgCisgICAgMjQzLCAxOTEsIDgsIDEsIDI0OCwgNzAsIDIxOCwgMjQ1LCA4LCAxLCAyNDgsIDc4LCAyMTgsIDI0NSwgOCwgNSwgMSwgMjA3LCAKKyAgICAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MSwgMjUsIAorICAgIDIwOSwgMjQ4LCA2NSwgMSwgNSwgMjM3LCAxNzEsIDY1LCAxLCA1LCAyMzcsIDE3MiwgMywgMTEzLCA2NSwgMSwgNSwgMjMwLCAKKyAgICAxODQsIDY1LCAxLCA1LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIxNywgMSwgCisgICAgMywgMTEzLCA2NSwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgNjUsIDEsIDUsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgMjAzLCAKKyAgICAxMjQsIDY1LCAxLCAyMTcsIDIzNiwgNjUsIDEsIDUyLCAyMTcsIDIzNiwgNjUsIDEsIDIwNywgMTc0LCAyNDUsIDIzMywgNjUsIAorICAgIDEsIDI1MCwgMTYwLCA2NSwgMSwgMjE2LCA3MywgMjQ1LCAyMzMsIDY1LCAxLCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIAorICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgCisgICAgNjEsIDY1LCAxLCA0OSwgMjUwLCA5NCwgNjUsIDEsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgCisgICAgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMjQ2LCA1MywgMjUxLCAxMzgsIDI0NywgMjksIDY1LCAxLCA4MCwgMjI3LCAxMTQsIDY1LCAKKyAgICAxLCAyMjUsIDE3MCwgNjUsIDEsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIAorICAgIDEyNCwgODAsIDIyNywgMTE0LCA2NSwgMSwgMTI0LCAyMjUsIDE3MCwgNjUsIDEsIDEyNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCAKKyAgICA2NSwgMSwgMTI0LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDE2MiwgCisgICAgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAyNDYsIDIxNiwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyNDYsIDIxNiwgCisgICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAxMTIsIDIxMCwgMywgNjUsIDEsIDEyMSwgMjEwLCAzLCA2NSwgMSwgOTEsIDU0LCAKKyAgICA2NSwgMSwgMjI0LCAxMDMsIDU0LCAyNDcsIDIxNCwgNzAsIDU1LCAyMTUsIDI1MywgNTUsIDIyMCwgNjIsIDUsIDIwOCwgCisgICAgMjI3LCA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjE2LCA1OCwgMTEzLCA2NSwgMSwgMjQ1LCAxMzEsIDI1MSwgCisgICAgMTM4LCA2NSwgMSwgNSwgMjM4LCAyMzUsIDY1LCAxLCA1LCAxNTksIDY1LCAxLCA1LCAxOTQsIDY1LCAxLCA1LCAyMDMsIAorICAgIDE5NiwgNjUsIDEsIDUsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyNDAsIDE5OCwgMTQzLCAxNDIsIDY1LCAKKyAgICAxLCAxMzgsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAxNDMsIDE0MiwgNjUsIDEsIAorICAgIDI0MCwgMTk3LCAxNDMsIDE0MiwgNjUsIDEsIDIwMywgMSwgMjQ0LCAyNywgMTQzLCA4MiwgNjUsIDEsIDIwMywgNzcsIDI0NCwgCisgICAgMjcsIDE0MywgODIsIDY1LCAxLCAyMDUsIDE4NCwgNjUsIDEsIDIwNiwgMjUxLCA2NSwgMSwgNTIsIDI1MCwgMTYwLCA2NSwgCisgICAgMSwgMTI0LCAxMjEsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDExMiwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgNDksIDI1MCwgOTQsIAorICAgIDY1LCAxLCAxMjQsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAyMTUsIDI1MiwgNjUsIDEsIDEwMSwgMjM3LCAyNTQsIDI1MSwgCisgICAgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjUxLCAxMjYsIDI1MSwgCisgICAgMTM4LCA2NSwgMSwgMTI0LCAyMDgsIDIyNywgNjUsIDEsIDIxNiwgMTg4LCAyNDUsIDI0MiwgNjUsIDEsIDI0OCwgMTQyLCAKKyAgICAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0OCwgMTQyLCAxMjQsIDIwOCwgCisgICAgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTI0LCAyMDgsIDE2MSwgNjUsIDEsIDIxMywgMzQsIDY1LCAxLCAxNzEsIDIxMywgMzQsIAorICAgIDY1LCAxLCAxMjQsIDQ5LCA0NywgMzksIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIAorICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAzOSwgMjA4LCAyMjcsIDM5LCAyMjUsIDE3MCwgMzksIDIxOSwgMTk4LCAzOSwgMjQ3LCAKKyAgICAyMTQsIDM5LCA3MCwgNTUsIDM5LCAyNDMsIDIzMSwgMzksIDIzNiwgMTE2LCA1NSwgMzksIDIxNSwgMjUzLCA1NSwgMzksIAorICAgIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyNDcsIDI5LCAzOSwgODAsIDIyNywgMTE1LCA1NSwgMzksIDUyLCA4MCwgCisgICAgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI0NywgNTIsIDM5LCAyMzAsIDIzOSwgMjQ3LCAKKyAgICAyMTQsIDM5LCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDU1LCAzOSwgMjQ1LCAyMzQsIDU1LCAzOSwgMjE2LCA3MywgMjQ1LCAyMzQsIAorICAgIDU1LCAzOSwgMjQ1LCAyMzQsIDg3LCAyMTYsIDE2LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM5LCA1NiwgMzksIDI1MSwgMTI2LCAKKyAgICAyNTEsIDEzOSwgNTYsIDM5LCA0OSwgMjEwLCA0LCA1NiwgMzksIDUwLCAyMTAsIDQsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCAKKyAgICA1NSwgMzksIDIzNiwgNTMsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAxMTIsIDIxMCwgNCwgNTYsIDM5LCAxMjEsIAorICAgIDIxMCwgNCwgNTYsIDM5LCA5MSwgMiwgNTYsIDM5LCAyMjQsIDEwMywgMiwgNTYsIDM5LCAyMTksIDE0MCwgMjM2LCAxMTYsIAorICAgIDU2LCAzOSwgMjE2LCA3OSwgMjM2LCAxMTYsIDU2LCAzOSwgNzAsIDU2LCAzOSwgMjQzLCAyMzIsIDU2LCAzOSwgMjE1LCAKKyAgICAyNTMsIDU2LCAzOSwgMjQ1LCAyMzQsIDU2LCAzOSwgMjQ2LCAyMzEsIDM5LCAyMjAsIDYyLCAzOSwgODAsIDIyNywgMTE1LCAKKyAgICA1NiwgMzksIDI0NywgMjA4LCA1NiwgMzksIDIzMCwgMjM5LCA1MiwgMjUwLCAxMjcsIDU2LCAzOSwgMjQ3LCAzMCwgNTYsIAorICAgIDM5LCAyNDYsIDUzLCAyNTEsIDEzOSwgNTYsIDM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAKKyAgICAzOSwgMjA4LCAyMjgsIDU2LCAzOSwgMjI1LCAxNzEsIDU2LCAzOSwgMTI0LCAyMjcsIDExNCwgMzksIDUyLCAxMjQsIDIyNywgCisgICAgMTE0LCAzOSwgMjA4LCAyMjgsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMTYzLCAKKyAgICAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgMTYzLCAyMTIsIDEsIDIxOSwgCisgICAgMTk5LCAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjA4LCA1NiwgMzksIDUxLCA1NiwgCisgICAgMzksIDIxNCwgMTc2LCA1NiwgMzksIDIwMywgMTk3LCA1NSwgMzksIDgwLCAyMDgsIDIyNywgMzksIDUyLCAyMTksIDE5OCwgCisgICAgMzksIDIzNywgMjU0LCAxNDMsIDgyLCAzOSwgMjUxLCAxMjYsIDE0MywgODIsIDM5LCAzMCwgMjE4LCAyMzksIDM5LCAzMCwgCisgICAgMjI4LCAyNTIsIDM5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzOSwgMzAsIDIwMiwgMjIxLCAzOSwgMjQ3LCAyMDgsIDU1LCAKKyAgICAzOSwgMjQxLCAzNSwgMiwgNTYsIDM5LCA1MiwgODAsIDIyNywgMTE1LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgNTYsIDM5LCAKKyAgICAyMjEsIDE2NiwgMjA4LCAyMjgsIDU1LCAzOSwgMjM2LCAxMjIsIDU1LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NSwgCisgICAgMzksIDQ5LCA1MCwgNTMsIDU2LCAzOSwgMTc3LCA1MywgNTYsIDM5LCAyMzgsIDQsIDIzMCwgOTYsIDM5LCA1MCwgMjUwLCAKKyAgICA5NSwgNTUsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCAyNDAsIDM2LCAzOSwgMjAzLCAxOTcsIDU2LCAzOSwgNDksIAorICAgIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMTIsIDI1MCwgOTUsIDU2LCAKKyAgICAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgNzAsIDg3LCAyMTYsIDE2LCAzOSwgMjUwLCA2MCwgNTYsIDM5LCA1MiwgCisgICAgMjE1LCAyNTMsIDU2LCAzOSwgMjAyLCAzMCwgNTUsIDM5LCA1MiwgMjQ3LCAyMTUsIDU2LCAzOSwgNTIsIDI0NywgMjE0LCAKKyAgICAzOSwgNTIsIDIyNSwgMTcwLCAzOSwgNTIsIDIyNSwgMTcxLCA1NiwgMzksIDUyLCAyMDgsIDIyNywgMzksIDUyLCAyMzAsIAorICAgIDIzOSwgMjQ3LCAyMTQsIDM5LCA1MiwgODYsIDUzLCA1NiwgMzksIDgsIDUsIDEsIDYzLCAzOSwgOCwgNSwgMSwgNzQsIDM5LCAKKyAgICA4LCA1LCAxLCA3NSwgMzksIDgsIDUsIDEsIDc4LCAzOSwgOCwgNSwgMSwgNjgsIDM5LCA4LCA1LCAxLCAyNDcsIDEyNSwgMzksIAorICAgIDgsIDUsIDEsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyMzcsIDE3MSwgMzksIDgsIDUsIDEsIDIyNiwgMTg1LCAzOSwgOCwgNSwgCisgICAgMSwgMTQ2LCAzOSwgOCwgNSwgMSwgMjEwLCA2OSwgMzksIDgsIDUsIDEsIDIwNiwgMTY0LCAzOSwgOCwgNSwgMSwgMjAzLCAKKyAgICAxOTYsIDMwLCA2LCAxLCAyMzcsIDIwLCAzMCwgNSwgMSwgMjM3LCAyMCwgMzAsIDYsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgCisgICAgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgMzAsIDIyMSwgNDQsIDU0LCAzMCwgMjI2LCAyNTEsIDIyMSwgNDQsIDU0LCAKKyAgICAzMCwgNiwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgMjAyLCAyMjEsIAorICAgIDMwLCA1LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNSwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgCisgICAgMTQ1LCA5NywgMzAsIDUsIDIxNiwgNzMsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAyMTcsIDQ3LCAKKyAgICA4MiwgMzAsIDYsIDEsIDIwMiwgMjI3LCAzMCwgMjA4LCAxNDksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDMwLCA2LCAxLCAKKyAgICAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgMjUwLCAyMDMsIDIwOSwgMTYzLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA4LCAKKyAgICAxNDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA4LCAxNDksIAorICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIAorICAgIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIAorICAgIDMwLCA2LCAxLCAyNTEsIDIsIDMwLCA2LCAxLCAyNDgsIDEwNiwgMzAsIDYsIDEsIDIzOCwgMjM1LCAzMCwgNiwgMSwgMjQ0LCAKKyAgICAzNywgMzAsIDYsIDEsIDI0MSwgMzcsIDMwLCA2LCAxLCAyMDIsIDgzLCAzMCwgNiwgMSwgMjQwLCAyNDgsIDMwLCA2LCAxLCAKKyAgICAyMDksIDc0LCAzMCwgNiwgMSwgMjMwLCAyMzAsIDMwLCA2LCAxLCAyMjksIDI0NywgMzAsIDYsIDEsIDIyOCwgMjQsIDMwLCAKKyAgICA2LCAxLCAyMjMsIDI0NiwgMzAsIDYsIDEsIDIyMSwgODQsIDMwLCA2LCAxLCAyMDMsIDE3MCwgMzAsIDYsIDEsIDIyMCwgMzQsIAorICAgIDMwLCA2LCAxLCAyMTgsIDE2NywgMzAsIDYsIDEsIDIxNiwgNTksIDMwLCA2LCAxLCAyMTIsIDE0NCwgMzAsIDYsIDEsIDIwOSwgCisgICAgMjA3LCAzMCwgNiwgMSwgMjA2LCAyMTYsIDMwLCA2LCAxLCAyMTgsIDE5MiwgMzAsIDYsIDEsIDI0NiwgMTQyLCAzMCwgNiwgCisgICAgMSwgMjE3LCAyMDIsIDMwLCA2LCAxLCAyMjAsIDM2LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI0LCAzMCwgNiwgCisgICAgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MSwgCisgICAgMzgsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIAorICAgIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIDMwLCA1LCAxLCAyNTEsIAorICAgIDIsIDMwLCA1LCAxLCAyNDgsIDEwNiwgMzAsIDUsIDEsIDIzOCwgMjM1LCAzMCwgNSwgMSwgMjQ0LCAzNywgMzAsIDUsIDEsIAorICAgIDI0MSwgMzcsIDMwLCA1LCAxLCAyMDIsIDgzLCAzMCwgNSwgMSwgMjQwLCAyNDgsIDMwLCA1LCAxLCAyMDksIDc0LCAzMCwgNSwgCisgICAgMSwgMjMwLCAyMzAsIDMwLCA1LCAxLCAyMjksIDI0NywgMzAsIDUsIDEsIDIyOCwgMjQsIDMwLCA1LCAxLCAyMjMsIDI0NiwgCisgICAgMzAsIDUsIDEsIDIyMSwgODQsIDMwLCA1LCAxLCAyMDMsIDE3MCwgMzAsIDUsIDEsIDIyMCwgMzQsIDMwLCA1LCAxLCAyMTgsIAorICAgIDE2NywgMzAsIDUsIDEsIDIxNiwgNTksIDMwLCA1LCAxLCA0NiwgMjEyLCAxNDQsIDMwLCA1LCAxLCAyMTIsIDE0NCwgMzAsIAorICAgIDUsIDEsIDIwOSwgMjA3LCAzMCwgNSwgMSwgMjA2LCAyMTYsIDMwLCA1LCAxLCAyMTgsIDE5MiwgMzAsIDUsIDEsIDI0NiwgCisgICAgMTQyLCAzMCwgNSwgMSwgMjE3LCAyMDIsIDMwLCA1LCAxLCAyMjAsIDM2LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgCisgICAgMjI0LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCAKKyAgICA1LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDIzMCwgCisgICAgMTksIDk3LCAzMCwgMjQ4LCAxMDcsIDk3LCAzMCwgMjA5LCA3NSwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjM2LCAxMTYsIDk3LCAKKyAgICAzMCwgMjA2LCAyMTcsIDMsIDI1MSwgMTI2LCAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDI0MywgMjMyLCAKKyAgICAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjE4LCAxOTMsIDk3LCAzMCwgMjE4LCAxNjgsIDk3LCAzMCwgMjMwLCAxOSwgOTcsIAorICAgIDMwLCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgNSwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDEsIDIxMSwgNzEsIDMwLCAKKyAgICA1LCAxLCAyMTEsIDcxLCAzMCwgMSwgMjQzLCAxOTksIDMwLCA1LCAxLCAyNDMsIDE5OSwgMzAsIDEsIDIyOSwgMCwgMzAsIDUsIAorICAgIDEsIDIyOSwgMCwgMzAsIDEsIDIxNCwgMjQ2LCAzMCwgNSwgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyMTMsIDM1LCA4NCwgNSwgCisgICAgMSwgMjEzLCAzNSwgODQsIDYsIDEsIDI0MCwgNDUsIDg0LCA1LCAxLCAyNDAsIDQ1LCA4NCwgNiwgMSwgMjI5LCAxMjcsIDg0LCAKKyAgICA1LCAxLCAyMjksIDEyNywgODQsIDYsIDEsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjM2LCAxMDcsIDg0LCA2LCAxLCAyMzgsIAorICAgIDIzMCwgODQsIDUsIDEsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMjEzLCAxLCA4NCwgNSwgMSwgMjEzLCAxLCA4NCwgNiwgMSwgCisgICAgMjQ0LCA1MiwgODQsIDUsIDEsIDI0NCwgNTIsIDMwLCAyMjksIDI0OCwgOTcsIDMwLCAyMTYsIDYwLCA5NywgMzAsIDIyNiwgCisgICAgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAxLCAyMDIsIDIyNywgMzAsIDYsIDIwOSwgNzUsIDk3LCAzMCwgMjI2LCAyMjEsIAorICAgIDI0MSwgMzgsIDk3LCAzMCwgMjE2LCA3MywgMjI2LCAyMjEsIDI0MSwgMzgsIDk3LCAzMCwgNiwgMSwgMjEyLCAyNDIsIDMwLCAKKyAgICA1LCAxLCAyMTIsIDI0MiwgMzAsIDYsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAxLCAyMTQsIDI0MywgMzAsIDUsIAorICAgIDEsIDIxNCwgMjQzLCAzMCwgMjE2LCA2MCwgMywgMjExLCAzMiwgOTcsIDMwLCA2LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAKKyAgICAxNDUsIDk3LCAzMCwgNiwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDIxNiwgNzMsIDI0MiwgODMsIAorICAgIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMzAsIAorICAgIDIzNCwgMzYsIDYsIDEsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjM4LCA1MiwgMzYsIDYsIDEsIDIwNywgMTEsIDIzMSwgMTEwLCAKKyAgICAzNiwgNiwgMSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA2LCAxLCAyMDMsIDExLCAzNiwgNiwgMSwgCisgICAgMjMwLCAxNjEsIDM2LCA2LCAxLCAyMjcsIDgwLCAzNiwgNiwgMSwgMjIyLCA0MSwgMzYsIDYsIDEsIDIwOCwgOCwgMzYsIDYsIAorICAgIDEsIDIyOSwgNDksIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNjgsIDM2LCAKKyAgICA2LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDYzLCAzNiwgNiwgMSwgMjQ4LCAxNjIsIDM2LCA2LCAxLCAyMDYsIDU1LCAzNiwgCisgICAgNiwgMSwgMjM4LCAxMDUsIDM2LCA2LCAxLCAyNDQsIDc1LCAzNiwgNiwgMSwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMDIsIDcxLCAKKyAgICAzNiwgNiwgMSwgMjAyLCA5MiwgMzYsIDYsIDEsIDc1LCAzNiwgNiwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNiwgMSwgMTczLCAKKyAgICAzNiwgNiwgMSwgMjQxLCAxMjIsIDM2LCA2LCAxLCAyNDEsIDEwMywgMzYsIDYsIDEsIDI0MSwgOTIsIDM2LCA2LCAxLCA3OCwgCisgICAgMzYsIDYsIDEsIDIxOSwgMzQsIDM2LCA2LCAxLCAyNDEsIDI4LCAzNiwgNiwgMSwgMjQxLCAxNywgMzYsIDYsIDEsIDIwOSwgCisgICAgMTg3LCAzNiwgNiwgMSwgNjgsIDM2LCA2LCAxLCAyNDEsIDE1NCwgMzYsIDYsIDEsIDE1MiwgMzYsIDYsIDEsIDIwOCwgMTQsIAorICAgIDM2LCA2LCAxLCAyNDYsIDE3MCwgMzYsIDYsIDEsIDIxMywgOTAsIDM2LCA2LCAxLCAyMTMsIDQ2LCAzNiwgNiwgMSwgMjM3LCAKKyAgICA5MSwgNTQsIDM2LCA2LCAxLCAyMDMsIDMwLCAzNiwgNiwgMSwgMjEyLCA3LCA1NCwgMzYsIDYsIDEsIDc0LCAzNiwgNiwgMSwgCisgICAgMjAyLCAyMTMsIDM2LCA2LCAxLCAxOTgsIDM2LCA1LCAxLCA2MywgMzYsIDUsIDEsIDI0OCwgMTYyLCAzNiwgNSwgMSwgMjA2LCAKKyAgICA1NSwgMzYsIDUsIDEsIDIzOCwgMTA1LCAzNiwgNSwgMSwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIzMSwgMTEwLCAzNiwgNSwgMSwgCisgICAgMjAyLCA3MSwgMzYsIDUsIDEsIDIwMiwgOTIsIDM2LCA1LCAxLCA3NSwgMzYsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDUsIAorICAgIDEsIDE3MywgMzYsIDUsIDEsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjQxLCAxMDMsIDM2LCA1LCAxLCAyNDEsIDkyLCAzNiwgNSwgCisgICAgMSwgNzgsIDM2LCA1LCAxLCAyMTksIDM0LCAzNiwgNSwgMSwgMjQxLCAyOCwgMzYsIDUsIDEsIDI0MSwgMTcsIDM2LCA1LCAxLCAKKyAgICAyMDksIDE4NywgMzYsIDUsIDEsIDY4LCAzNiwgNSwgMSwgMjQxLCAxNTQsIDM2LCA1LCAxLCAxNTIsIDM2LCA1LCAxLCAyMDgsIAorICAgIDE0LCAzNiwgNSwgMSwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMTMsIDkwLCAzNiwgNSwgMSwgMjEzLCA0NiwgMzYsIDUsIDEsIAorICAgIDIzNywgOTEsIDU0LCAzNiwgNSwgMSwgMjAzLCAzMCwgMzYsIDUsIDEsIDIxMiwgNywgNTQsIDM2LCA1LCAxLCA3NCwgMzYsIAorICAgIDUsIDEsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMTk4LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgCisgICAgMjMwLCAyMzQsIDM2LCA1LCAxLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIzOCwgNTIsIDM2LCA1LCAxLCAyMDcsIDExLCAyMzEsIAorICAgIDExMCwgMzYsIDUsIDEsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNSwgMSwgMjAzLCAxMSwgMzYsIAorICAgIDUsIDEsIDIzMCwgMTYxLCAzNiwgNSwgMSwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMDgsIDgsIAorICAgIDM2LCA1LCAxLCAyMjksIDQ5LCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgMjEyLCAyMjgsIAorICAgIDY4LCAzNiwgNSwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjIwLCAzNiwgMzYsIDYsIDEsIAorICAgIDIwMywgNjYsIDM2LCA1LCAxLCAyMDMsIDY2LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDc0LCAzNiwgNSwgMSwgMjMwLCAyMjgsIAorICAgIDc0LCAzNiwgNiwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIDEsIAorICAgIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIAorICAgIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCisgICAgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMjgsIAorICAgIDIyNSwgMzYsIDUsIDEsIDIyOCwgMjI1LCAzNiwgNiwgMSwgMjE3LCAyMDIsIDM2LCA1LCAxLCAyMTcsIDIwMiwgMzYsIDYsIAorICAgIDEsIDIzOSwgMjM1LCAzNiwgNSwgMSwgMjM5LCAyMzUsIDM2LCA2LCAxLCAyMzAsIDE4NiwgMzYsIDUsIDEsIDIzMCwgMTg2LCAKKyAgICAzNiwgNiwgMSwgMjMwLCAxODcsIDMsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA1LCAxLCAyMzAsIDE4NywgMywgNTIsIAorICAgIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDYsIDEsIDIwNywgMTQsIDM2LCA1LCAxLCAyMDcsIDE0LCAzNiwgNiwgMSwgMjE1LCAKKyAgICAxOTEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMTUsIDE5MSwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMCwgMzcsIDMsIDIwOCwgCisgICAgMTk3LCAzNiwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxOTcsIDM2LCA2LCAxLCAyMTksIDIyNCwgMzYsIDUsIDEsIDIxOSwgCisgICAgMjI0LCAzNiwgNiwgMSwgMjI5LCAwLCAzNiwgNSwgMSwgMjI5LCAwLCAzNiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjA4LCAKKyAgICAxOTcsIDM5LCAzNiwgMjE5LCAxNDEsIDM5LCAzNiwgMjQ0LCAxNDIsIDIxOCwgNzEsIDM5LCAzNiwgMjE3LCAxOTYsIDIxOCwgCisgICAgNzEsIDM5LCAzNiwgMjE4LCA1NSwgMzksIDM2LCAyMzYsIDEyLCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMjQsIDExNCwgNTQsIAorICAgIDM2LCA2LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAKKyAgICAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDUsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDYsIDEsIAorICAgIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNSwgMSwgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA2LCAxLCAyMzgsIDEwNiwgCisgICAgMywgMjA2LCAyMTUsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjA2LCAyMTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgOTUsIAorICAgIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAKKyAgICAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA3MiwgCisgICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAKKyAgICAzNiwgNiwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKKyAgICAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAKKyAgICA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDk1LCAzNiwgNiwgMSwgMjQ4LCAyMTQsIDE3MywgMzYsIDUsIDEsIDI0OCwgCisgICAgMjE0LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgCisgICAgMzYsIDYsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDUsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDYsIDEsIAorICAgIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNTEsIDE0NSwgCisgICAgMTUyLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDE1MiwgMzYsIDYsIDEsIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKKyAgICAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDksIDE4OCwgCisgICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNSwgMSwgMjExLCA1MywgNjgsIDM2LCA2LCAxLCAyMTEsIAorICAgIDUzLCAxMDYsIDMsIDk1LCAzNiwgNSwgMSwgMjExLCA1MywgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAKKyAgICAyNDQsIDIwLCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIDI0NCwgMjAsIDM2LCA2LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIAorICAgIDM2LCA1LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAorICAgIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAKKyAgICAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMTMsIDEyLCAzNiwgNSwgMSwgMjEzLCAxMiwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIAorICAgIDE3MCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MCwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAKKyAgICAyMCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDEsIDIxOSwgMTMzLCAzNiwgNiwgMSwgCisgICAgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDIzMCwgNDQsIAorICAgIDMsIDExMywgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIAorICAgIDUsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgCisgICAgOTMsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjA5LCAKKyAgICAyNDgsIDM2LCA2LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA2LCAKKyAgICAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTksIAorICAgIDEzMywgMzYsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDM0LCAKKyAgICAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA1LCAKKyAgICAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIAorICAgIDI0NywgMjE0LCAzNiwgNiwgMSwgMjE0LCAxOTIsIDM2LCA1LCAxLCAyMTQsIDE5MiwgMzYsIDYsIDEsIDIxNCwgMTkzLCAzLCAKKyAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDIxNCwgMTkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0MywgCisgICAgMjMxLCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIAorICAgIDUsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjUxLCAKKyAgICAxNDUsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIAorICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCisgICAgMjMxLCAzNiwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAKKyAgICAyNDgsIDIyNSwgNzgsIDM2LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDM2LCA2LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIAorICAgIDIzMSwgMzYsIDUsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgCisgICAgMzYsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMTA2LCAzLCAKKyAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNiwgCisgICAgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIAorICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjQ2LCAxNzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgCisgICAgMjAsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgCisgICAgNSwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIAorICAgIDUsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDUsIAorICAgIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgOTUsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgCisgICAgOTUsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDYsIDEsIAorICAgIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDIsIAorICAgIDIxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjAyLCAyMSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNSwgMSwgCisgICAgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjI3LCAKKyAgICA4MCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNiwgMSwgCisgICAgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDgsIAorICAgIDE5MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwOCwgMTkxLCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDUsIDEsIAorICAgIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDExMywgCisgICAgMzYsIDYsIDEsIDIyNywgMTYxLCAzNiwgNSwgMSwgMjI3LCAxNjEsIDM2LCA2LCAxLCAyMTYsIDYxLCAzNiwgNSwgMSwgMjE2LCAKKyAgICA2MSwgMzYsIDYsIDEsIDIwMywgOTksIDM2LCA1LCAxLCAyMDMsIDk5LCAzNiwgNiwgMSwgMjE3LCAxMjYsIDM2LCA1LCAxLCAKKyAgICAyMTcsIDEyNiwgMzYsIDYsIDEsIDIwNCwgNjIsIDM2LCA1LCAxLCAyMDQsIDYyLCAzNiwgNiwgMSwgMjUxLCAyNiwgMTczLCAKKyAgICAzNiwgNSwgMSwgMjUxLCAyNiwgMTczLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCAKKyAgICAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAKKyAgICAxMDEsIDExMywgMzYsIDYsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAKKyAgICAzNiwgNiwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKKyAgICAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDYsIDEsIDI0MSwgMjM3LCAKKyAgICAzNiwgNSwgMSwgMjQxLCAyMzcsIDM2LCA2LCAxLCAyNDQsIDEyNCwgMzYsIDUsIDEsIDI0NCwgMTI0LCAzNiwgNiwgMSwgCisgICAgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMTc4LCA2LCAxLCAyNTAsIDUsIAorICAgIDE3OCwgNiwgMSwgMjQ4LCAxMjIsIDE3OCwgNiwgMSwgMjM4LCA2OSwgMTc4LCA2LCAxLCAyNDQsIDIxMiwgMTc4LCA2LCAxLCAKKyAgICAyNDEsIDE2NywgMTc4LCA2LCAxLCAyMDIsIDExNiwgMTc4LCA2LCAxLCAyNDEsIDE0NywgMTc4LCA2LCAxLCAyNDAsIDI1MCwgCisgICAgMTc4LCA2LCAxLCAxMzUsIDE3OCwgNiwgMSwgMjAyLCA3MSwgMTc4LCA2LCAxLCAyMzEsIDE5LCAxNzgsIDYsIDEsIDIyNywgCisgICAgODMsIDE3OCwgNiwgMSwgMjAzLCAxNzQsIDE3OCwgNiwgMSwgMjQ3LCA5MiwgMTc4LCA2LCAxLCAyMjksIDE4MCwgMTc4LCA2LCAKKyAgICAxLCAyMzYsIDEzNiwgMTc4LCA2LCAxLCAyMzAsIDE4MSwgMTc4LCA2LCAxLCAyMzgsIDExNiwgMTc4LCA2LCAxLCAyNDYsIAorICAgIDE2MCwgMTc4LCA2LCAxLCAyMjQsIDI0MCwgMTc4LCA2LCAxLCAyMDMsIDExLCAxNzgsIDYsIDEsIDIyMSwgMTUyLCAxNzgsIAorICAgIDYsIDEsIDIxMywgOTAsIDE3OCwgNiwgMSwgMjA1LCAxODksIDE3OCwgNiwgMSwgMjQ2LCAxOTksIDE3OCwgNiwgMSwgMjE5LCAKKyAgICAxNiwgMTc4LCA2LCAxLCAyMzAsIDE0NCwgMTc4LCA2LCAxLCAyMTYsIDIyMCwgMTc4LCA2LCAxLCAyMTQsIDE1NSwgMTc4LCAKKyAgICA2LCAxLCAyMDUsIDIzNCwgMTc4LCA2LCAxLCAyMDgsIDE5NCwgMTc4LCA2LCAxLCAyMTYsIDEyMiwgMTc4LCA2LCAxLCAyNDUsIAorICAgIDI1NCwgMTc4LCA2LCAxLCAyMDIsIDI1MiwgMTc4LCA2LCAxLCAyMTgsIDEwMiwgMTc4LCA2LCAxLCAyMjksIDE5MSwgMTc4LCAKKyAgICA2LCAxLCAyMjAsIDYwLCAxNzgsIDYsIDEsIDI0MCwgNDcsIDE3OCwgNjUsIDEsIDQ5LCAxNjIsIDIxNSwgMjUyLCAxNzgsIAorICAgIDI1MCwgMTYwLCAxNzgsIDI0MSwgOTYsIDgyLCAxNzgsIDI0MCwgMjEyLCA4MiwgMTc4LCAyNDUsIDIzMywgMTc4LCAyMTcsIAorICAgIDQ3LCA4MiwgMTc4LCAyNTEsIDE0NiwgODIsIDE3OCwgNSwgMSwgMjUwLCA1LCAxNzgsIDUsIDEsIDI0OCwgMTIyLCAxNzgsIAorICAgIDUsIDEsIDIzOCwgNjksIDE3OCwgNSwgMSwgMjQ0LCAyMTIsIDE3OCwgNSwgMSwgMjQxLCAxNjcsIDE3OCwgNSwgMSwgMjAyLCAKKyAgICAxMTYsIDE3OCwgNSwgMSwgMjQxLCAxNDcsIDE3OCwgNSwgMSwgMjQwLCAyNTAsIDE3OCwgNSwgMSwgMTM1LCAxNzgsIDUsIDEsIAorICAgIDIwMiwgNzEsIDE3OCwgNSwgMSwgMjMxLCAxOSwgMTc4LCA1LCAxLCAyMjcsIDgzLCAxNzgsIDUsIDEsIDIwMywgMTc0LCAKKyAgICAxNzgsIDUsIDEsIDI0NywgOTIsIDE3OCwgNSwgMSwgMjI5LCAxODAsIDE3OCwgNSwgMSwgMjM2LCAxMzYsIDE3OCwgNSwgMSwgCisgICAgMjMwLCAxODEsIDE3OCwgNSwgMSwgMjM4LCAxMTYsIDE3OCwgNSwgMSwgMjQ2LCAxNjAsIDE3OCwgNSwgMSwgMjI0LCAyNDAsIAorICAgIDE3OCwgNSwgMSwgMjAzLCAxMSwgMTc4LCA1LCAxLCAyMjEsIDE1MiwgMTc4LCA1LCAxLCAyMTMsIDkwLCAxNzgsIDUsIDEsIAorICAgIDIwNSwgMTg5LCAxNzgsIDUsIDEsIDI0NiwgMTk5LCAxNzgsIDUsIDEsIDIxOSwgMTYsIDE3OCwgNSwgMSwgMjMwLCAxNDQsIAorICAgIDE3OCwgNSwgMSwgMjE2LCAyMjAsIDE3OCwgNSwgMSwgMjE0LCAxNTUsIDE3OCwgNSwgMSwgMjA1LCAyMzQsIDE3OCwgNSwgMSwgCisgICAgMjA4LCAxOTQsIDE3OCwgNSwgMSwgMjE2LCAxMjIsIDE3OCwgNSwgMSwgMjQ1LCAyNTQsIDE3OCwgNSwgMSwgMjAyLCAyNTIsIAorICAgIDE3OCwgNSwgMSwgMjE4LCAxMDIsIDE3OCwgNSwgMSwgMjI5LCAxOTEsIDE3OCwgNSwgMSwgMjIwLCA2MCwgMTc4LCA1LCAxLCAKKyAgICAyNDAsIDQ3LCAxNzgsIDUsIDMyLCAyNDEsIDE2OCwgMjAyLCAyNTIsIDE3OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3OCwgCisgICAgMjM1LCAyMjAsIDIxNiwgMTUsIDE3OCwgMjQwLCAyNDYsIDU0LCAyMjcsIDIyMSwgMTc4LCAyNDAsIDI0NiwgNTQsIDE3OCwgCisgICAgMjQyLCA2MCwgNTQsIDExMCwgMjUxLCAxMzksIDI0MCwgMjQxLCAxMTAsIDI1MSwgMTM5LCAyMTQsIDE1NiwgMTEwLCAyNTEsIAorICAgIDEzOSwgMjEzLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIDIxNywgMTA5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgCisgICAgMjM4LCAyNTQsIDExMCwgMjUxLCAxMzksIDIwOCwgMjA5LCAxMTAsIDI1MSwgMTM5LCAyMTYsIDcwLCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMDIsIDEwMSwgMTEwLCAyNTEsIDEzOSwgMjE5LCA2MSwgMTEwLCAyNTEsIDEzOSwgMjAzLCAyMywgMTEwLCAyNTEsIDEzOSwgCisgICAgMjA5LCAxMTUsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY3LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2OCwgMjIzLCAyMDgsIAorICAgIDExMCwgMjUxLCAxMzksIDIzOCwgMTY1LCAxMTAsIDI1MSwgMTM5LCAyMTcsIDExMCwgMjE5LCA5MCwgMTEwLCAyNTEsIDEzOSwgCisgICAgMjA5LCAxNTgsIDIzOCwgMTgzLCAxMTAsIDI1MSwgMTM5LCAyMTksIDQwLCAxMTAsIDI1MSwgMTM5LCAyNTAsIDQzLCAyMzcsIAorICAgIDE1MiwgMTEwLCAyNTEsIDEzOSwgMjIzLCAyMTgsIDExMCwgMjUxLCAxMzksIDIyNSwgMTQ1LCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMjQsIDIyOSwgMTEwLCAyNTEsIDEzOSwgMjI0LCAyMzAsIDIyOSwgMTkyLCAxMTAsIDI1MSwgMTM5LCAyNDQsIDE1MSwgCisgICAgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMjEsIDExMCwgMjUxLCAxMzksIDIwOSwgMTU4LCAyMTcsIDEwNCwgMTEwLCAyNTEsIAorICAgIDEzOSwgMjAzLCAzMywgMjQ4LCAxMjMsIDIwMiwgMjMzLCAxMTAsIDI1MSwgMTM5LCAyMjAsIDQzLCAxMTAsIDI1MSwgMTM5LCAKKyAgICAyMzEsIDY5LCAxMTAsIDI1MSwgMTM5LCAyNDQsIDUzLCAxMTAsIDI1MSwgMTM5LCAyMDIsIDI4LCAxMTAsIDEzMSwgMjI1LCAKKyAgICA3NSwgMjQ2LCA2MSwgMTEwLCAyMTgsIDYzLCAyMTMsIDE1LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNCwgMTU2LCAxMTAsIAorICAgIDIxOCwgNjMsIDIzNywgODIsIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgCisgICAgMjM2LCAyMzIsIDExMCwgMjE4LCA2MywgMjA4LCAxMSwgMTEwLCAyMTgsIDYzLCAyMTQsIDE1NiwgMTEwLCAyMTgsIDYzLCAKKyAgICAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIDIzNiwgMTI4LCAxMTAsIDIxOCwgNjMsIAorICAgIDIzNiwgMTI5LCAyMzcsIDg0LCAzNSwgMjA2LCA1OSwgMTEwLCAyMTgsIDYzLCAyMTcsIDUxLCAxMTAsIDIxOCwgNjMsIDI0NCwgCisgICAgMTk4LCAyMTksIDI0NSwgMjI1LCAxMDUsIDExMCwgMjE4LCA2MywgMjI0LCAyMTksIDExMCwgMjE3LCAxNzksIDIyNSwgMTAyLCAKKyAgICAxMTAsIDIxOCwgNjMsIDIxNiwgMjAwLCAxMTAsIDIxNywgMTc5LCAyMTksIDYzLCAxMTAsIDIxOCwgNjMsIDIxMywgMCwgCisgICAgMjQzLCA4NSwgMTEwLCAyMTgsIDYzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgMjEyLCA4LCAyMTksIDU2LCAKKyAgICAxMTAsIDEzMSwgMjA2LCAyMjEsIDI0MywgODUsIDExMCwgMTMxLCAyMjYsIDI1MSwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgCisgICAgMjIxLCA0MSwgMjM3LCAxNTEsIDExMCwgMjE4LCA2MywgMjE3LCAxMTUsIDIxNywgMTA5LCAxMTAsIDEsIDI1MSwgMzAsIAorICAgIDExMCwgMSwgMjQ4LCAxMDgsIDExMCwgMSwgMjM4LCA2NywgMTEwLCAxLCAyNDQsIDE3OCwgMTEwLCAxLCAyMzcsIDY3LCAKKyAgICAxMTAsIDEsIDIwNiwgNTksIDExMCwgMSwgMjAyLCA5NSwgMTEwLCAxLCAyMzcsIDIxLCAxMTAsIDEsIDIwOSwgMTMyLCAxMTAsIAorICAgIDEsIDIwMiwgMjM2LCAxMTAsIDEsIDQ2LCAyMzAsIDIyLCAxMTAsIDEsIDIzMCwgMjIsIDExMCwgMSwgMjI4LCAyMCwgMTEwLCAKKyAgICAxLCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjI0LCAyNDcsIDExMCwgMSwgNDYsIDIyMSwgNDAsIDExMCwgMSwgMjIxLCA0MCwgCisgICAgMTEwLCAxLCAyMTQsIDI0OSwgMTEwLCAxLCAyNTAsIDMsIDExMCwgMSwgNDYsIDIxOSwgMzQsIDExMCwgMSwgMjE5LCAzNCwgCisgICAgMTEwLCAxLCA0NiwgMjA4LCAxNSwgMTEwLCAxLCAyMDgsIDE1LCAxMTAsIDEsIDIxNywgNzQsIDExMCwgMSwgMjE2LCA5MSwgCisgICAgMTEwLCAxLCAyMTIsIDI1NSwgMTEwLCAxLCAyMDksIDIwMywgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjA2LCA1OSwgMTEwLCAKKyAgICAzMiwgMjAzLCA5LCAyMDYsIDYwLCAyMDIsIDIzNiwgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjAyLCAyMzYsIDExMCwgMjE3LCAKKyAgICAxNzksIDIzOCwgMTY3LCAxMTAsIDIxNywgMTc5LCAyMzgsIDE2NSwgMTAsIDQyLCA1NCwgMTAsIDIsIDIxNCwgMjQyLCAxMCwgCisgICAgMjM5LCAxNzAsIDIyNSwgODgsIDEwLCAyLCAyMTUsIDI0LCAxMCwgMiwgMjE0LCAyNDUsIDEwLCA0MiwgMTMxLCA1NSwgMjUwLCAKKyAgICAxNDAsIDI0NSwgMTA2LCAyMTUsIDIwNCwgMjUwLCAxNDAsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMTAsIDIxNiwgMTY1LCAyNTAsIAorICAgIDE0MCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjUwLCAxNDAsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIAorICAgIDI1MSwgODYsIDU0LCAxMCwgMjQ1LCAyMzMsIDEwLCAyNDQsIDEzOCwgMjEzLCAxMzAsIDEwLCAyMTgsIDY1LCAyMDYsIDQwLCAKKyAgICA1NCwgMTAsIDIsIDIyNCwgOTUsIDEwLCAyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODYsIDEwLCAyLCAyNTEsIDMzLCAyNTAsIAorICAgIDY0LCAxMCwgMiwgMjE2LCAxOTgsIDI1MSwgMzIsIDEwLCAyLCAyMTYsIDIwNiwgMjUxLCAxMiwgMjUwLCAyMTAsIDEwLCAyLCAKKyAgICAyMDksIDI0MCwgMTAsIDUsIDEzOCwgMjA5LCAyNTEsIDEwLCA1LCAxMzgsIDMyLCAxMzcsIDMsIDIyOCwgMjksIDMsIDIwMywgCisgICAgNDcsIDEwLCA1LCAxMzgsIDIwMiwgMTA3LCAxMCwgNSwgMjQwLCA3MSwgMTAsIDUsIDI0NCwgMTcyLCAxMCwgNSwgMjI5LCAKKyAgICAyMjksIDEwLCAyMTMsIDE0MywgMTAsIDEsIDgyLCAxMCwgMjA4LCA3MCwgNzAsIDIxNywgMTc5LCA4MiwgMTAsIDIxNywgNDcsIAorICAgIDgyLCAxMCwgMSwgMjI5LCAyMzMsIDIwMywgNDcsIDEwLCAxLCAyMzcsIDEyNywgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIAorICAgIDU1LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAKKyAgICAxMzcsIDMsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyNTEsIDMwLCAxMCwgMSwgCisgICAgMjQ4LCAxMzgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OCwgMTAsIDEsIDIwOSwgMTY5LCAxMCwgMSwgMjA5LCA4OCwgMTAsIAorICAgIDEsIDIzMCwgMTU4LCAxMCwgMSwgMjM3LCAxNDgsIDEwLCAxLCAyMjksIDE0MCwgMTAsIDEsIDI0NCwgMTg0LCAxMCwgMSwgCisgICAgMjA5LCAxMDAsIDEwLCAxLCAyMTYsIDEyMiwgMTAsIDEsIDIwMiwgMTA3LCAxMCwgMSwgMjE0LCAxNjEsIDEwLCAxLCAyMTMsIAorICAgIDM5LCAxMCwgMSwgMjE1LCAyOCwgMTAsIDEsIDI0NCwgMjA3LCAxMCwgMSwgMjA5LCAyNTEsIDEwLCAxLCAyMDIsIDExMCwgCisgICAgMTAsIDEsIDI1MSwgNTksIDEwLCAxLCAyMzgsIDExNCwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAKKyAgICAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIAorICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCisgICAgMjA5LCAyMDksIDEwLCAxLCAyNDAsIDQ3LCAxMCwgMSwgMjE3LCAxMTksIDEwLCAxLCAyMzAsIDIyLCAxMCwgMSwgMjI4LCAKKyAgICAyOCwgMTAsIDEsIDIyNSwgNSwgMTAsIDEsIDIyMSwgMTc4LCAxMCwgMSwgMjM3LCA0MywgMTAsIDEsIDIwNCwgNzAsIDEwLCAKKyAgICAxLCAxMzcsIDIyNSwgMTI5LCAxMCwgMSwgMjAzLCA0NywgMTAsIDI0MCwgNjksIDEwLCAyNDQsIDE3MCwgMTAsIDIyOSwgCisgICAgMjI3LCAxMCwgMjQwLCA3MSwgMTAsIDI0NCwgMTcyLCAxMCwgMjI5LCAyMjksIDEwLCAyMTMsIDgwLCAxMCwgMjEwLCAyMjIsIAorICAgIDEwLCAyMjUsIDE2NCwgNTUsIDEwLCAyMzcsIDEyOCwgNTUsIDEwLCAyMzcsIDEyOCwgNTYsIDEwLCAyMTAsIDI0NiwgMjUxLCAKKyAgICAzMCwgMTAsIDIzMCwgMjM5LCAyNDQsIDE3MiwgMTAsIDEzMSwgMjIxLCAxNzksIDIzOCwgODUsIDEwLCAyMDEsIDI0OCwgMTAsIAorICAgIDIyLCAyLCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgMjMwLCAyMzksIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAKKyAgICA3MCwgNTYsIDEwLCAyMTYsIDczLCAyNDQsIDE3MiwgMTAsIDI0MCwgNzIsIDMsIDEyMCwgMjQzLCA4MywgMTAsIDIwNCwgNzIsIAorICAgIDIzNywgMTI4LCA1NiwgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNTAsIDE0MCwgMTcsIDEwNSwgMjUwLCAxNDAsIDE3LCAKKyAgICAxMDgsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNTAsIDE0MCwgMTcsIDE0OSwgMjUwLCAxNDAsIDE3LCAxNzAsIDI1MCwgMTQwLCAKKyAgICAxNywgMTk1LCAyNTAsIDE0MCwgMTcsIDIxMywgMTExLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjUwLCAxNDAsIDE3LCAyMjIsIAorICAgIDYzLCAxMCwgMjE4LCAyNDYsIDU0LCAxMCwgMjQ0LCA2OCwgMjEzLCAxMzAsIDEwLCAyMDksIDM1LCAyMTMsIDEzMCwgMTAsIAorICAgIDIzOSwgMjMzLCAyMTgsIDYxLCAyMTEsIDk0LCAxMCwgMSwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxLCAyNDMsIDg0LCAKKyAgICAyMTcsIDExOSwgMTAsIDEsIDIxMCwgMTk5LCAyNTEsIDMwLCAxMCwgMSwgMTM3LCAyMDQsIDg3LCAxMCwgMSwgMTM3LCAzLCAKKyAgICAyMDQsIDcyLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzcsIDMsIDIwNCwgNzIsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDEzOCwgCisgICAgMjM3LCAxMjcsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyNTEsIDMwLCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjA0LCA3MCwgCisgICAgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjAzLCA0NywgMTAsIDEsIDIwNywgCisgICAgMjMzLCAxMCwgMSwgMjA3LCAyMzEsIDEwLCAxLCAyNDgsIDE0OCwgMTAsIDEsIDIwOSwgMTcwLCAzLCAyMTUsIDI1MiwgMTAsIAorICAgIDEsIDIwOSwgMTcwLCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyMTksIDE2LCAxMCwgMSwgMjA5LCAxNjcsIAorICAgIDEwLCAxLCAyNDgsIDEzNiwgMTAsIDEsIDE1MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgCisgICAgODAsIDU1LCAxMCwgMSwgMjIwLCAyNTQsIDEwLCAxLCAyNDIsIDUsIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAorICAgIDEsIDIwOSwgMTkxLCAxMCwgMSwgMjA5LCAxODksIDEwLCAxLCAyNDQsIDExNSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMTUsIAorICAgIDI1MiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNSwgCisgICAgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE5MSwgMTAsIDEsIDI0NCwgMTE3LCAxMCwgMSwgMjQyLCAzMywgMTAsIDEsIDI0NCwgCisgICAgMTg1LCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAKKyAgICAxLCAyMTUsIDE3NywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMTUsIAorICAgIDI1MiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA3MCwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgCisgICAgMSwgMjE2LCAxMjMsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAxMjAsIDE4NywgCisgICAgNTUsIDEwLCAxLCAyMzAsIDE1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDEsIDIxNCwgCisgICAgMTYyLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDU2LCAxMCwgCisgICAgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNSwgMjksIDMsIAorICAgIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjYsIAorICAgIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMSwgCisgICAgMjQwLCA0OCwgMywgNzAsIDIyNCwgNSwgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMDYsIDQ4LCAKKyAgICAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE5LCAxNCwgMTAsIDEsIDIxNywgMTIwLCAzLCA3MCwgCisgICAgNTUsIDEwLCAxLCAyMTcsIDEyMCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxODksIDEwLCAxLCAyMTAsIDE2OSwgCisgICAgMjMwLCAyMiwgMTAsIDEsIDIzMCwgMjMsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU1LCAxMCwgMSwgCisgICAgMjIyLCAyMDUsIDEwLCAxLCAyMzAsIDIzLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MSwgMTAsIDEsIDIzOCwgCisgICAgMjUyLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMiwgMTI2LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyMCwgMTg3LCA1NiwgMTAsIAorICAgIDEsIDIzNywgMjE3LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDUsIDIwNiwgCisgICAgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgNzAsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgCisgICAgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDcwLCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAKKyAgICAyMzgsIDg1LCAxMCwgMSwgMjE1LCAyMzAsIDEwLCAxLCAyMjEsIDE3OSwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjEsIDE3OSwgCisgICAgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMDksIDEwLCAxLCAyMDksIDE5MiwgMywgNzAsIDU1LCAKKyAgICAxMCwgMSwgMjM3LCA0NCwgMywgODksIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNiwgMTAsIDEsIDIzNywgNDQsIDIzOCwgCisgICAgMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCAyMzgsIDM2LCAxMCwgMSwgMjA0LCA3MSwgCisgICAgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDczLCAxMCwgMSwgMjIwLCA3MywgMTAsIDEsIDY4LCAxMCwgMSwgCisgICAgMjAyLCAyMTMsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxMywgMTAsIDEsIDIwNCwgNzEsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIAorICAgIDEsIDIwNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCAyMDMsIDQ3LCAxMCwgMSwgODksIDMsIDIwOSwgMjQ4LCAxMCwgMSwgODksIAorICAgIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjA0LCA3MSwgMywgNzAsIDU1LCAxMCwgMSwgNzQsIDEwLCAxLCA4OSwgMywgMTI2LCAKKyAgICAxODcsIDU2LCAxMCwgMSwgODksIDI0OCwgMjIzLCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgMTAsIDEsIDI1MSwgMTA5LCAxMCwgNSwgMTM4LCAzMiwgMjE1LCAyOSwgMywgMjI4LCAyOSwgCisgICAgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDUsIDEzOCwgMzIsIDIxNywgMTIwLCAzLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTI5LCAKKyAgICAxMCwgNSwgMTM4LCA4MywgODEsIDE4LCAxMCwgNSwgMTM4LCAyMjgsIDI5LCAyNTEsIDMwLCAxMCwgNSwgMTM4LCAyMzAsIAorICAgIDE1OCwgMTAsIDUsIDEzOCwgMTI2LCAyNDMsIDgzLCAxMCwgNSwgMTM4LCAyMTQsIDE2MSwgMTAsIDI0MSwgODQsIDc2LCAKKyAgICAyNTAsIDcsIDEwLCAyMTEsIDkwLCA3NiwgMjE1LCAxNDMsIDI0MSwgMTIzLCAyMzYsIDIyNywgMTAsIDUsIDEzOCwgMjE1LCAKKyAgICAxODksIDIwMiwgODQsIDEwLCA1LCAxMzgsIDIwNiwgMjE5LCAyMTYsIDE0MiwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjQzLCAKKyAgICA4NCwgMjM3LCA2NSwgNzYsIDIyOSwgMTQwLCAxMCwgNSwgMTM4LCA4MywgNjQsIDE4LCAxMCwgNSwgMTI0LCAyMTQsIDE2MSwgCisgICAgMTAsIDUsIDEzOCwgMjI1LCAxNjUsIDEwLCA1LCAyMDQsIDcwLCAxMCwgNSwgMjAzLCA0NywgMTAsIDUsIDEzOCwgMjAzLCAKKyAgICA0NywgMTAsIDUsIDEzOCwgMjIxLCAxNzgsIDEwLCAyMTgsIDk3LCA3NiwgMjE1LCAxNCwgMTAsIDI0MSwgOTQsIDI0NiwgCisgICAgMjE4LCAxMjQsIDIxMSwgNjEsIDEwLCAyNDEsIDk0LCAyNDYsIDIxOCwgMTM4LCAyMTEsIDYxLCAxMCwgMjE1LCAxODksIAorICAgIDEzOCwgMjExLCA2MiwgMywgMjQwLCA4LCAyNDYsIDIxNywgMTAsIDUsIDEyNCwgMjI1LCA1LCAxMCwgMSwgMjQ0LCAxODUsIAorICAgIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDI0MCwgMjAyLCAKKyAgICAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEwNSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKKyAgICAxNywgMTA4LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDcsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0OSwgMjQwLCAKKyAgICAyMDIsIDI1MCwgMTQwLCAxNywgMTcwLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCisgICAgMTcsIDIxMywgMTExLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTksIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIyMiwgCisgICAgNjMsIDEwLCAxLCAyMTMsIDQwLCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDIwOCwgMywgNzAsIDU2LCAxMCwgMSwgMjM4LCAKKyAgICAxMTUsIDMsIDcwLCA1NiwgMTAsIDIsIDIxMiwgMTIzLCAyNTAsIDIzNSwgMTAsIDIsIDIxMiwgMTIzLCAyMTgsIDI3LCAyMjQsIAorICAgIDI0MCwgMTAsIDEsIDIzNywgNDQsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjEwLCA4OSwgMjQxLCA4NCwgNzYsIDIxOSwgCisgICAgODgsIDIxMCwgODksIDIxMCwgMTk1LCAyMzksIDEwMiwgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAyNDgsIDIzOSwgMTAyLCAKKyAgICAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MiwgMjEwLCAKKyAgICA4OSwgMjM2LCAxMDYsIDI0NSwgMjQyLCAyMTAsIDg5LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIxMCwgODksIAorICAgIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgCisgICAgMjIyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDI0NSwgMTg2LCAKKyAgICAyMTAsIDg5LCAyMzcsIDg5LCAyMjAsIDkxLCAyMTAsIDg5LCAyMzcsIDg5LCAyMjQsIDIxNywgMjEwLCA4OSwgMjM3LCA4OSwgCisgICAgMjUwLCA2MSwgMjEwLCA4OSwgMjUxLCAxNDYsIDgyLCAyMTAsIDg5LCAxLCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyMTAsIAorICAgIDE5OSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjQ4LCAxMDUsIDIxMCwgODksIDEsIDIzOCwgMjQxLCAyMTAsIDg5LCAxLCAKKyAgICAyMzgsIDI0MiwgMjM4LCAyMTksIDIxMCwgODksIDEsIDI0NCwgMTgxLCAyMTAsIDg5LCAxLCAyNDMsIDg0LCAyNDQsIDE4MiwgCisgICAgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIzNywgNjcsIDIxMCwgODksIDEsIDIwNCwgNzAsIDIxMCwgODksIDEsIDIwMiwgMTA3LCAKKyAgICAyMTAsIDg5LCAxLCAyMzcsIDE5LCAyMTAsIDg5LCAxLCAyMDksIDEyOCwgMjEwLCA4OSwgMSwgMjA5LCAxMjksIDIzOCwgCisgICAgMjE5LCAyMTAsIDg5LCAxLCAyMDIsIDIwMCwgMjEwLCA4OSwgMSwgMjAyLCAyMDEsIDIzNywgNjcsIDIxMCwgODksIDEsIAorICAgIDIyOSwgMjUwLCAyMTAsIDg5LCAxLCAyMjgsIDI3LCAyMTAsIDg5LCAxLCAyMjQsIDExMiwgMjEwLCA4OSwgMSwgMjIxLCA0MCwgCisgICAgMjEwLCA4OSwgMSwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDQ2LCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNzQsIDIxMCwgODksIAorICAgIDEsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNiwgNzMsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNSwgMjYsIDIxMCwgODksIAorICAgIDEsIDIxNywgMTEzLCAyMTAsIDg5LCAxLCAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjEyLCAyNTUsIDIxMCwgODksIDEsIDIwOSwgCisgICAgMjAxLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjQ4LCA5MiwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDIzOCwgMTEyLCAyMTAsIAorICAgIDg5LCAxLCAyMTgsIDIzMSwgMjQzLCAyNTIsIDIxMCwgODksIDIxNywgMTkyLCA1NSwgMjEwLCA4OSwgMjE3LCAxOTIsIDU2LCAKKyAgICAyMTAsIDg5LCAyMTcsIDE5MiwgMjQyLCA4MiwgMjEwLCA4OSwgMjAyLCAxMSwgNTUsIDIxMCwgODksIDIwMiwgMTEsIDU2LCAKKyAgICAyMTAsIDg5LCAyMDIsIDExLCAyNDIsIDgyLCAyMTAsIDg5LCAyMTYsIDE2MSwgNTUsIDIxMCwgODksIDIxNiwgMTYxLCA1NiwgCisgICAgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjM2LCAxMDUsIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDI1MCwgMjExLCAKKyAgICAyMTAsIDg5LCAyMzcsIDcwLCA1NSwgMjEwLCA4OSwgMjM3LCA3MCwgNTYsIDIxMCwgODksIDIzNywgNjksIDI0MiwgODIsIAorICAgIDIxMCwgODksIDI0MSwgMTEsIDU1LCAyMTAsIDg5LCAyNDEsIDExLCA1NiwgMjEwLCA4OSwgMjE1LCAxMDksIDIxMCwgODksIAorICAgIDI0MCwgNDEsIDI0MywgODUsIDIxMCwgODksIDIxNywgMjUsIDIxMCwgODksIDIxNSwgMTM3LCAyMTAsIDg5LCAxMjAsIDgwLCAKKyAgICAxODcsIDU1LCAyMTAsIDg5LCAxMjAsIDgwLCAxODcsIDU2LCAyMTAsIDg5LCAxMjYsIDE4NywgNTUsIDIxMCwgODksIDEyNiwgCisgICAgMTg3LCA1NiwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU1LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTYsIAorICAgIDIxMCwgODksIDIyMywgMTk0LCAyMTAsIDg5LCAyNDgsIDIyMiwgMjEwLCA4OSwgMSwgMjEyLCA0LCAyMDIsIDc4LCAyMTAsIAorICAgIDg5LCAxLCAyMTIsIDQsIDIyOSwgMTMzLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDI0MCwgNjAsIDEwLCAxLCAyNDgsIDEzOSwgMywgCisgICAgMTI2LCAxODcsIDIzNiwgNTUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCAKKyAgICA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKKyAgICAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCAyNDgsIDEyNiwgMjUsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKKyAgICAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMjMwLCAyMzksIDUsIDIwNiwgCisgICAgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIDU1LCAKKyAgICAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCAxMjAsIDE4NywgCisgICAgMjA1LCAyNDQsIDI0OCwgMTI2LCAyNSwgNSwgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjMwLCAyMzksIDUsIAorICAgIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA5NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzksIDE0NywgMTg3LCAKKyAgICA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCAyMTgsIAorICAgIDU5LCAxODMsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDI0MCwgNDgsIAorICAgIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgCisgICAgMjI5LCAxOTAsIDMsIDcwLCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE5MCwgCisgICAgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCA4MywgMywgNzAsIDU1LCAxMCwgMSwgODMsIDMsIDcwLCAKKyAgICA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA5LCAyNTEsIAorICAgIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCAxNDIsIDEwLCAxLCAyMTYsIDEyMywgCisgICAgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMTQsIAorICAgIDE2MiwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NiwgCisgICAgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE0LCAxNjIsIDMsIAorICAgIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAxMCwgMSwgMjA5LCAKKyAgICAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTUsIDEwLCAxLCAxMzcsIAorICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAxMzcsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCisgICAgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIAorICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIAorICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAKKyAgICAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIAorICAgIDU1LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgODksIAorICAgIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMTUxLCAzLCAyNDAsIDIwMiwgCisgICAgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgCisgICAgMjM5LCAxNDcsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIzMCwgMjMsIDMsIAorICAgIDEyMCwgMTg3LCA1NSwgMjA5LCAxMDUsIDEsIDIzNywgMTU3LCAyMDksIDEwNSwgMSwgMjEzLCA0OSwgMjA5LCAxMDUsIDEsIAorICAgIDIyMSwgMTc3LCAyMDksIDEwNSwgMSwgMjE2LCAyMTYsIDIwOSwgMTA1LCAxLCAyNDksIDMwLCAyMDksIDEwNSwgMSwgMjI3LCAKKyAgICAxNTgsIDIwOSwgMTA1LCAxLCAyMzAsIDM3LCAyMDksIDEwNSwgMSwgMjUxLCAxOSwgMjA5LCAxMDUsIDEsIDIwNiwgODQsIAorICAgIDIwOSwgMTA1LCAxLCAyMjUsIDQsIDIwOSwgMTA1LCAxLCAyNDAsIDEwNiwgMjA5LCAxMDUsIDEsIDI0MywgMjU1LCAyMDksIAorICAgIDEwNSwgMSwgMjA5LCAxMDcsIDIwOSwgMTA1LCAxLCAyMjgsIDEwOSwgMjA5LCAxMDUsIDEsIDIzOSwgNCwgMjA5LCAxMDUsIAorICAgIDEsIDIzOCwgNDIsIDIwOSwgMTA1LCAxLCAyMTQsIDE2MCwgMjA5LCAxMDUsIDEsIDI0NCwgMTM2LCAyMDksIDEwNSwgMSwgCisgICAgMjAyLCA5OCwgMjA5LCAxMDUsIDEsIDIwOSwgMjAyLCAyMDksIDEwNSwgMSwgMjAzLCAxMTAsIDIwOSwgMTA1LCAxLCAyMTksIAorICAgIDQ3LCAyMDksIDEwNSwgMSwgMjMwLCAxNjYsIDIwOSwgMTA1LCAxLCAyNDYsIDE3MywgMjA5LCAxMDUsIDEsIDIwNywgMjQwLCAKKyAgICAyMDksIDEwNSwgMSwgMjM3LCAxMSwgMjA5LCAxMDUsIDEsIDIyOSwgMTQzLCAyMDksIDEwNSwgMSwgMjA5LCAxMDYsIDIwOSwgCisgICAgMTA1LCAxLCAyMDIsIDExNCwgMjA5LCAxMDUsIDEsIDIxMywgMzgsIDIwOSwgMTA1LCAxLCAyMTUsIDMyLCAyMDksIDEwNSwgCisgICAgMSwgMjQ0LCAyMTAsIDIwOSwgMTA1LCAxLCAxMzUsIDIwOSwgMTA1LCAxLCAyMDIsIDE3LCAyMDksIDEwNSwgMSwgMjUxLCAKKyAgICA1NiwgMjA5LCAxMDUsIDEsIDIzOCwgMTEzLCAyMDksIDEwNSwgMSwgMjE3LCAxMjMsIDIwOSwgMTA1LCAxLCAyMDQsIDEwOSwgCisgICAgMjA5LCAxMDUsIDI1MSwgMTQ4LCAyMDksIDEwNSwgMjUxLCAyNDYsIDIwOSwgMTA1LCAyMzUsIDE2NSwgMjA5LCAxMDUsIAorICAgIDI0MSwgMTYwLCAyMDksIDEwNSwgMjA3LCAzMiwgMjA5LCAxMDUsIDIyMCwgMTcsIDIwOSwgMTA1LCAyNDEsIDE3MCwgMjA5LCAKKyAgICAxMDUsIDI0MCwgMTkzLCAyMDksIDEwNSwgMjIwLCA4OCwgMjA5LCAxMDUsIDIyMCwgOTYsIDIwOSwgMTA1LCAyMTAsIDIyMiwgCisgICAgMjA5LCAxMDUsIDEsIDIyMywgMTA2LCAyMjEsIDI1NSwgMTcsIDIwMiwgODQsIDIyMSwgMjU1LCAxNywgMTA1LCAyMjEsIAorICAgIDI1NSwgMTcsIDEwOCwgMjIxLCAyNTUsIDE3LCAxNDcsIDIyMSwgMjU1LCAxNywgMTQ5LCAyMjEsIDI1NSwgMTcsIDE3MCwgCisgICAgMjIxLCAyNTUsIDE3LCAxOTUsIDIyMSwgMjU1LCAxNywgMjEzLCAxMTEsIDIyMSwgMjU1LCAxNywgMTk5LCAyMjEsIDI1NSwgCisgICAgMTcsIDIyMiwgNjMsIDIyMSwgMjU1LCAxLCA2MywgMjIxLCAyNTUsIDEsIDI0MSwgMTYxLCAyMjEsIDI1NSwgMSwgNzUsIAorICAgIDIyMSwgMjU1LCAxLCA3NCwgMjIxLCAyNTUsIDEsIDY4LCAyMjEsIDI1NSwgMSwgMjIwLCAxOCwgMjIxLCAyNTUsIDEsIDc4LCAKKyAgICAyMjEsIDI1NSwgMSwgMjQ0LCAxOTksIDIyMSwgMjU1LCAxLCAyMjMsIDE2MywgMjIxLCAyNTUsIDEsIDI0OSwgMzIsIDIyMSwgCisgICAgMjU1LCAxLCAxODUsIDIyMSwgMjU1LCAxLCAyMTAsIDIyLCAyMjEsIDI1NSwgMSwgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAKKyAgICAyNDYsIDE5OSwgMjIxLCAyNTUsIDEsIDI0NCwgMjEyLCAyMjEsIDI1NSwgMSwgMjE2LCAyMjAsIDIyMSwgMjU1LCAxLCAyMTUsIAorICAgIDE4NSwgMjIxLCAyNTUsIDEsIDIxNSwgMzYsIDIyMSwgMjU1LCAxLCAyMzgsIDIwNywgMjIxLCAyNTUsIDEsIDI0MCwgMTA4LCAKKyAgICAyMjEsIDI1NSwgMSwgMTczLCAyMjEsIDI1NSwgMSwgMjI4LCAxMTMsIDIyMSwgMjU1LCAxLCAyMjMsIDExMSwgMjAzLCAyNTIsIAorICAgIDIyMSwgMjU1LCAxLCAxOTIsIDIyMSwgMjU1LCAxLCAyMjEsIDExLCAyMjEsIDI1NSwgMSwgMjAxLCAyMDEsIDIyMSwgMjU1LCAKKyAgICAxLCAxNTIsIDIyMSwgMjU1LCAxLCAyMDQsIDExMSwgMjIxLCAyNTUsIDEsIDE5OCwgMjIxLCAyNTUsIDEsIDIyMSwgMTIsIAorICAgIDIwMywgMjUyLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyNDYsIDE5OSwgCisgICAgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMzgsIDIwOCwgMTYxLCAKKyAgICAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAyMTUsIDI0NSwgCisgICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyNDQsIDE5LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEzOCwgCisgICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjE1LCAyNDUsIAorICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIyMywgNzEsIDgyLCAyMjEsIDI1NSwgMzksIDUyLCA3MCwgNTUsIDIyMSwgMjU1LCAKKyAgICAxMzgsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxMjQsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxNiwgMjIwLCAxOSwgCisgICAgMjQ0LCAzMywgMjIxLCAyNTUsIDE2LCAyMzgsIDIwNiwgMjIxLCAyNTUsIDI0NSwgMjMzLCAyMjEsIDI1NSwgMjQwLCAyMTIsIAorICAgIDgyLCAyMjEsIDI1NSwgMjI4LCA4NCwgMjE0LCAyNTIsIDEsIDI1MSwgMzcsIDIxNCwgMjUyLCAxLCAyNDgsIDUxLCAyMTQsIAorICAgIDI1MiwgMSwgMjM4LCAyNDAsIDIxNCwgMjUyLCAxLCAyNDQsIDE4MywgMjE0LCAyNTIsIDEsIDIzMCwgMTkyLCAyMTQsIDI1MiwgCisgICAgMSwgMjQ5LCAzMCwgMjE0LCAyNTIsIDEsIDIwMiwgODcsIDIxNCwgMjUyLCAxLCAyMzAsIDIwMSwgMjE0LCAyNTIsIDEsIAorICAgIDIwOCwgMjAwLCAyMTQsIDI1MiwgMSwgMjAyLCAxODIsIDIxNCwgMjUyLCAxLCAyMzAsIDM4LCAyMTQsIDI1MiwgMSwgMjI4LCAKKyAgICAxMDYsIDIxNCwgMjUyLCAxLCAyMjQsIDExMiwgMjE0LCAyNTIsIDEsIDIyMSwgNDAsIDIxNCwgMjUyLCAxLCAyMTIsIDEyMSwgCisgICAgMjE0LCAyNTIsIDEsIDIzMSwgNDksIDIxNCwgMjUyLCAxLCAyNDAsIDI2LCAyMTQsIDI1MiwgMSwgMjA4LCAxOCwgMjE0LCAKKyAgICAyNTIsIDEsIDIxNywgNDQsIDIxNCwgMjUyLCAxLCAyMTUsIDI0NiwgMjE0LCAyNTIsIDEsIDIxMywgNjYsIDIxNCwgMjUyLCAKKyAgICAxLCAyMTAsIDE3LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ4LCAyMTQsIDI1MiwgCisgICAgMTMxLCAyMjAsIDg0LCAyMTQsIDI1MiwgMTMxLCAyNDQsIDE5NywgMjE0LCAyNTIsIDY1LCAxLCAyNDEsIDQyLCAyMDIsIAorICAgIDE4MiwgMjE0LCAyNTIsIDEzMSwgMjQxLCA0MiwgMjAyLCAxODIsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NCwgMjE0LCAKKyAgICAyNTIsIDIyLCAyLCA3NCwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIAorICAgIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgNjMsIDIxNCwgCisgICAgMjUyLCAyMiwgMiwgMTYzLCA2MywgMjE0LCAyNTIsIDIyLCAyLCA2MywgMjE0LCAyNTIsIDY1LCAxLCAyMTIsIDIyOCwgNjMsIAorICAgIDIxNCwgMjUyLCAyMiwgMiwgMjEyLCAyMjgsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNjgsIDIxNCwgMjUyLCAyMiwgMiwgCisgICAgNjgsIDIxNCwgMjUyLCA2NSwgMSwgNzUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCA3NSwgCisgICAgMjE0LCAyNTIsIDIyLCAyLCA3OCwgMjE0LCAyNTIsIDIyLCAyLCAyMTAsIDIyMiwgMjE0LCAyNTIsIDEzMSwgMjIyLCAyMjMsIAorICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjIyLCAyMjMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUxLCA4MywgMjE0LCAyNTIsIDIxNywgCisgICAgMTc5LCAyNTAsIDIyMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNDgsIDIwMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTAsIDQ0LCAKKyAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgMjQzLCAyMTQsIDI1MiwgMjUxLCAxNDYsIDgyLCAyMTQsIDI1MiwgMjE3LCAxNzksIAorICAgIDIyNCwgMjUwLCAyMTcsIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMjUsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjE3LCAKKyAgICA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDExMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDcsIDE3MCwgMjE0LCAyNTIsIAorICAgIDIxNywgMTc5LCAyNTAsIDExMSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDgsIDIyNSwgNzcsIDIxNCwgMjUyLCAyMTcsIAorICAgIDE3OSwgMjUwLCAyMDYsIDIyNSwgMTE4LCAxLCAyMzcsIDEzNCwgMjI1LCAxMTgsIDEsIDI1MSwgMjMyLCAyMjUsIDExOCwgMSwgCisgICAgMjUxLCA4MSwgMjI1LCAxMTgsIDEsIDI1MSwgMTIyLCAyMjUsIDExOCwgMSwgMjUxLCA3MywgMjI1LCAxMTgsIDEsIDIwNiwgCisgICAgMTg0LCAyMjUsIDExOCwgMSwgMjUwLCAxLCAyMjUsIDExOCwgMSwgMjMwLCAyMDEsIDIyNSwgMTE4LCAxLCAyNTAsIDQxLCAKKyAgICAyMjUsIDExOCwgMSwgMjUxLCA0MiwgMjI1LCAxMTgsIDEsIDI1MSwgNDcsIDIyNSwgMTE4LCAxLCAyNTEsIDM5LCAyMjUsIAorICAgIDExOCwgMSwgMjUwLCAyNDcsIDIyNSwgMTE4LCAxLCAyNTAsIDIzMSwgMjI1LCAxMTgsIDEsIDI1MCwgODEsIDIyNSwgMTE4LCAKKyAgICAxLCAyMzEsIDQ5LCAyMjUsIDExOCwgMSwgMjUwLCAxNzUsIDIyNSwgMTE4LCAxLCAyNTAsIDUxLCAyMjUsIDExOCwgMSwgCisgICAgMjUwLCAxNDgsIDIyNSwgMTE4LCAxLCAyNTAsIDE0NCwgMjI1LCAxMTgsIDEsIDI1MCwgNzUsIDIyNSwgMTE4LCAxLCAyNTAsIAorICAgIDQ5LCAyMjUsIDExOCwgMSwgMjQyLCAxOCwgMjI1LCAxMTgsIDEsIDIzMCwgMzAsIDIyNSwgMTE4LCAxLCAyNTEsIDU5LCAKKyAgICAyMjUsIDExOCwgMjUxLCA4NywgODIsIDIyNSwgMTE4LCAyMDUsIDE4NywgODIsIDIyNSwgMTE4LCAyMzgsIDE3OSwgODIsIAorICAgIDIyNSwgMTE4LCAyMTcsIDE3OCwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgCisgICAgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTg0LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTIwLCAKKyAgICAxODcsIDU1LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE3LCAKKyAgICAxMjAsIDMsIDcwLCA1NiwgMTAsIDEsIDIyOCwgMjksIDMsIDUyLCAxNDIsIDEwLCAxLCA4MywgMywgMTI2LCAxODcsIDU1LCAKKyAgICAxMCwgMSwgODksIDMsIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDg5LCAzLCAxMjAsIAorICAgIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjI3LCAxNCwgMTAsIDEsIDIwNCwgNzEsIAorICAgIDMsIDcwLCAyMDQsIDQsIDEwLCAxLCAyMTUsIDIxNSwgMjAzLCA0NywgMTAsIDEsIDEyNCwgMjUxLCAzMCwgMTAsIDEsIDI0NCwgCisgICAgMTg1LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MiwgCisgICAgMywgMjMwLCAyMzksIDk1LCAxMCwgMSwgMjExLCA1MywgMjA0LCA3MCwgMTAsIDEsIDIwMiwgMTA4LCAzLCAyMzAsIDIzOSwgCisgICAgMjA2LCAxNjUsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU2LCAKKyAgICAxMCwgMjA3LCAxNzQsIDI0NCwgMTczLCA1NiwgMTAsIDI0NSwgOTMsIDI0MCwgNzEsIDEwLCAyNDUsIDkzLCAyNDQsIDE3MiwgCisgICAgMTAsIDI0NSwgOTMsIDIyOSwgMjI5LCAxMCwgMjQ1LCA5MywgMjQwLCA2OSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcwLCAxMCwgCisgICAgMjQ1LCA5MywgMjI5LCAyMjcsIDEwLCAxNDMsIDExOCwgNzAsIDU1LCAxMCwgMTQzLCAxMjAsIDE4NywgNTUsIDEwLCAxNDMsIAorICAgIDIyNywgMTUsIDU1LCAxMCwgMTQzLCAxMTgsIDcwLCA1NiwgMTAsIDE0MywgMTIwLCAxODcsIDU2LCAxMCwgMTQzLCAyMjcsIAorICAgIDE1LCA1NiwgMTAsIDE3MSwgMjQwLCA2OSwgMTAsIDE3MSwgMjQ0LCAxNzAsIDEwLCAxNzEsIDIyOSwgMjI3LCAxMCwgNSwgCisgICAgMTM4LCAyMDQsIDcwLCAxMCwgMjQwLCA3MiwgMywgMjE1LCAyNTIsIDEwLCAyNDAsIDcyLCAzLCA3MCwgNTUsIDEwLCAyMjksIAorICAgIDIzMCwgMywgNzAsIDU2LCAxMCwgNDksIDI1MCwgOTUsIDU1LCAxMCwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNDksIDI1MCwgCisgICAgOTUsIDU2LCAxMCwgNTAsIDI1MCwgOTUsIDU2LCAxMCwgNTIsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDUyLCA1MCwgMjUwLCAKKyAgICA5NSwgODcsIDMsIDI0MywgODUsIDEwLCA1MCwgMjUwLCA5NSwgODcsIDMsIDI0MywgODUsIDEwLCAyNDQsIDE3MywgMywgCisgICAgMjQzLCA4NSwgMTAsIDEzMSwgMjEyLCAxNTQsIDIyMSwgMTc5LCAyMzgsIDg1LCA5MiwgMiwgMjMwLCAyMzksIDI0NywgNTIsIAorICAgIDkyLCAyLCAyNDcsIDUyLCA5MiwgMiwgMjUwLCAxODAsIDkyLCAyLCAyMDUsIDE5OSwgOTIsIDEsIDIxMiwgMjI4LCA2MywgCisgICAgOTIsIDEsIDYzLCA5MiwgMSwgMjUyLCAyNSwgOTIsIDEsIDc1LCA5MiwgMSwgMjMxLCA4MywgOTIsIDEsIDY4LCA5MiwgMSwgCisgICAgMjA2LCAxNzgsIDkyLCAxLCAxMjUsIDE0NiwgOTIsIDEsIDEyNSwgMTU5LCA5MiwgMSwgMjQ3LCA1NSwgNzQsIDkyLCAxLCAKKyAgICAyMTIsIDIyOCwgNzQsIDkyLCAxLCA3NCwgOTIsIDEsIDI1MSwgNjQsIDkyLCAxLCAyNDcsIDU1LCA3OCwgOTIsIDEsIDIxMiwgCisgICAgMjI4LCA3OCwgOTIsIDEsIDc4LCA5MiwgMSwgMjUwLCAzNCwgOTIsIDEsIDE3MywgOTIsIDEsIDIyOSwgMTQ0LCA5MiwgMSwgCisgICAgMjM5LCA4LCA5MiwgMSwgMjM4LCAxMTksIDkyLCAxLCAyMjIsIDIwMywgOTIsIDEsIDI0NywgOTIsIDkyLCAxLCAyNDYsIAorICAgIDE5OSwgOTIsIDEsIDIzMCwgMTgxLCA5MiwgMSwgMjMwLCAxNDksIDkyLCAxLCAyMjEsIDExLCA5MiwgMSwgMjA3LCAyNDEsIAorICAgIDkyLCAxLCAyMDcsIDIyOSwgOTIsIDEsIDI0NCwgMTIwLCA5MiwgMSwgMjQ0LCAxMDQsIDkyLCAxLCAyMjEsIDIyNywgOTIsIAorICAgIDEsIDIxMCwgMjIsIDkyLCAxLCAyMDksIDEwOCwgOTIsIDEsIDI0NCwgMjEyLCA5MiwgMSwgMjQ0LCAxLCA5MiwgMSwgMjAxLCAKKyAgICAyMDEsIDkyLCAxLCAyMjEsIDIwOSwgOTIsIDEsIDE4NSwgOTIsIDEsIDIxOCwgMjA4LCA5MiwgMSwgMjQ5LCAzMiwgOTIsIDEsIAorICAgIDI0OCwgOTgsIDkyLCAxLCAxOTIsIDkyLCAxLCAxOTgsIDkyLCAxLCAyMTYsIDIyMCwgOTIsIDEsIDIxNSwgMTg1LCA5MiwgMSwgCisgICAgMjI4LCAxMTMsIDkyLCAxLCAyMjcsIDc3LCA5MiwgMSwgMjI3LCA2OCwgOTIsIDEsIDIwNiwgODYsIDkyLCAxLCAyMTMsIDkwLCAKKyAgICA5MiwgMSwgMjExLCAxNjQsIDkyLCAxLCAyMTUsIDM2LCA5MiwgMSwgMTUyLCA5MiwgMjIsIDIsIDIyMCwgNzMsIDkyLCAyMiwgCisgICAgMiwgMjIwLCAxNiwgOTIsIDIsIDIyMSwgNTEsIDkyLCAyLCAyNTAsIDE3LCA5MiwgMjIsIDIsIDI1MiwgMjUsIDkyLCAyMiwgCisgICAgMiwgNzUsIDkyLCAyMiwgMiwgMjMxLCA4MywgOTIsIDIyLCAyLCA2OCwgOTIsIDIyLCAyLCAyMDYsIDE3OCwgOTIsIDIyLCAyLCAKKyAgICAxMjUsIDE0NiwgOTIsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc0LCA5MiwgMjIsIDIsIAorICAgIDIxMiwgMjI4LCA3NCwgOTIsIDIyLCAyLCA3NCwgOTIsIDIyLCAyLCAyNTEsIDY0LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc4LCAKKyAgICA5MiwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgOTIsIDIyLCAyLCA3OCwgOTIsIDIyLCAyLCAyNTAsIDM0LCA5MiwgMiwgMjA1LCAKKyAgICAyMDQsIDkyLCAyMiwgMiwgMjE3LCAyMjksIDc0LCA5MiwgMjIsIDIsIDI1MCwgMTMsIDkyLCAyMjAsIDM5LCA5MiwgMjExLCAKKyAgICA0MiwgMiwgMjA3LCAyNiwgOTIsIDIxMSwgNDIsIDIsIDI1MCwgMTgyLCA5MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA5MiwgCisgICAgMjUxLCAxMjYsIDI1MSwgMTM4LCA5MiwgMjIsIDIsIDI0NywgNTUsIDE2MywgNzQsIDkyLCAyMiwgMiwgMjA3LCAyNCwgOTIsIAorICAgIDIyLCAyLCAyMDYsIDE3NywgOTIsIDEsIDIxNywgMTI2LCA5MiwgMSwgMjI5LCAxMjUsIDkyLCAxLCAyMzgsIDk0LCA5MiwgMSwgCisgICAgMjAyLCAxMTYsIDkyLCAxLCAyNDQsIDEwOSwgOTIsIDEsIDIxNiwgNjEsIDkyLCAxLCAyNDAsIDEwOCwgOTIsIDEsIDIwMiwgCisgICAgMTY4LCA5MiwgMSwgMTI1LCAyMTUsIDE4NiwgOTIsIDEsIDEyNSwgMjI3LCA3OCwgOTIsIDIyLCAyLCAxMjUsIDE1OSwgOTIsIAorICAgIDIyLCAyLCAxMjUsIDIyNywgNzgsIDkyLCAyNDQsIDE2NiwgOTIsIDUyLCAyNDQsIDE2NiwgOTIsIDE3LCAyMDIsIDg0LCA5MiwgCisgICAgMTcsIDEwNSwgOTIsIDE3LCAxMDgsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNzAsIDkyLCAxNywgMTk1LCAKKyAgICA5MiwgMTcsIDIxMywgMTExLCA5MiwgMTcsIDE5OSwgOTIsIDE3LCAyMjIsIDYzLCA5MiwgMjUxLCAxNDYsIDU0LCA5MiwgMiwgCisgICAgMTM4LCAyMTEsIDIyNywgMjQzLCA4NSwgOTIsIDEsIDI0NywgNTUsIDYzLCA5MiwgMSwgMjIwLCA3MywgOTIsIDEsIDIyMCwgCisgICAgMTYsIDkyLCAxLCAyNTAsIDEzLCA5MiwgMSwgMjA3LCAyNCwgOTIsIDEsIDIwNiwgMTc3LCA5MiwgMSwgMjI1LCA4MiwgMjQ0LCAKKyAgICAxMjAsIDkyLCAxLCAyMDIsIDgwLCA5MiwgMSwgNzksIDE5OCwgOTIsIDEsIDIzOCwgMTU1LCA5MiwgMSwgMjMwLCAxMjksIAorICAgIDkyLCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA5MiwgMSwgMjQ0LCAxMTAsIDkyLCAxLCAyNDgsIDE5OCwgMTc5LCAyNTAsIDIwOSwgCisgICAgMTc5LCAyLCAyNDcsIDUyLCAxNzksIDIsIDI1MCwgMTgwLCAxNzksIDIsIDIwNSwgMTk5LCAxNzksIDEsIDYzLCAxNzksIDEsIAorICAgIDI1MiwgMjUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjMxLCA4MywgMTc5LCAxLCA2OCwgMTc5LCAxLCAyMDYsIDE3OCwgMTc5LCAKKyAgICAxLCAxMjUsIDE0NiwgMTc5LCAxLCAxMjUsIDE1OSwgMTc5LCAxLCA3NCwgMTc5LCAxLCAyNTEsIDY0LCAxNzksIDEsIDc4LCAKKyAgICAxNzksIDEsIDI1MCwgMzQsIDE3OSwgMSwgMTczLCAxNzksIDEsIDIyOSwgMTQ0LCAxNzksIDEsIDIzOSwgOCwgMTc5LCAxLCAKKyAgICAyMzgsIDExOSwgMTc5LCAxLCAyMjIsIDIwMywgMTc5LCAxLCAyNDcsIDkyLCAxNzksIDEsIDI0NiwgMTk5LCAxNzksIDEsIAorICAgIDIzMCwgMTgxLCAxNzksIDEsIDIzMCwgMTQ5LCAxNzksIDEsIDIyMSwgMTEsIDE3OSwgMSwgMjA3LCAyNDEsIDE3OSwgMSwgCisgICAgMjA3LCAyMjksIDE3OSwgMSwgMjQ0LCAxMjAsIDE3OSwgMSwgMjQ0LCAxMDQsIDE3OSwgMSwgMjIxLCAyMjcsIDE3OSwgMSwgCisgICAgMjEwLCAyMiwgMTc5LCAxLCAyMDksIDEwOCwgMTc5LCAxLCAyNDQsIDIxMiwgMTc5LCAxLCAyNDQsIDEsIDE3OSwgMSwgMjAxLCAKKyAgICAyMDEsIDE3OSwgMSwgMTg1LCAxNzksIDEsIDIxOCwgMjA4LCAxNzksIDEsIDI0OSwgMzIsIDE3OSwgMSwgMjQ4LCA5OCwgCisgICAgMTc5LCAxLCAxOTIsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDIxNiwgMjIwLCAxNzksIDEsIDIyOCwgMTEzLCAxNzksIDEsIAorICAgIDIxMywgOTAsIDE3OSwgMSwgMjExLCAxNjQsIDE3OSwgMSwgMjE1LCAzNiwgMTc5LCAxLCAxNTIsIDE3OSwgMiwgMjIxLCA1MSwgCisgICAgMTc5LCAyLCAyNTAsIDE3LCAxNzksIDIyLCAyLCAyNTIsIDI1LCAxNzksIDIyLCAyLCA3NSwgMTc5LCAyMiwgMiwgMjMxLCAKKyAgICA4MywgMTc5LCAyMiwgMiwgNjgsIDE3OSwgMjIsIDIsIDIwNiwgMTc4LCAxNzksIDIyLCAyLCAxMjUsIDE0NiwgMTc5LCAyMiwgCisgICAgMiwgMTI1LCAyMTUsIDE4NiwgMTc5LCAyMiwgMiwgNzQsIDE3OSwgMjIsIDIsIDI1MSwgNjQsIDE3OSwgMjIsIDIsIDc4LCAKKyAgICAxNzksIDIyLCAyLCAyNTAsIDM0LCAxNzksIDIsIDIwNSwgMjA0LCAxNzksIDEsIDIyOSwgMTM1LCAyMTAsIDIyLCAxNzksIAorICAgIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTc5LCAxLCAyMTUsIDE4NSwgMTc5LCAxLCAyMTYsIDYxLCAxNzksIDEsIDIwMiwgCisgICAgMTY4LCAxNzksIDEsIDEyNSwgMjE1LCAxODYsIDE3OSwgMSwgMTI1LCAyMjcsIDc4LCAxNzksIDIyLCAyLCAxMjUsIDE1OSwgCisgICAgMTc5LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzksIDE3LCAyMDIsIDg0LCAxNzksIDE3LCAxMDUsIDE3OSwgMTcsIDEwOCwgCisgICAgMTc5LCAxNywgMTQ3LCAxNzksIDE3LCAxNDksIDE3OSwgMTcsIDE3MCwgMTc5LCAxNywgMTk1LCAxNzksIDE3LCAyMTMsIAorICAgIDExMSwgMTc5LCAxNywgMTk5LCAxNzksIDE3LCAyMjIsIDYzLCAxNzksIDEsIDIxNiwgMjIxLCAzLCAxMDEsIDI0MywgMjI3LCAKKyAgICAxNzksIDEsIDIxNiwgMjIxLCAzLCAyMjYsIDI1MSwgMjQzLCAyMjcsIDE3OSwgMjE1LCAxMjAsIDgyLCAxNzksIDIxNSwgCisgICAgMTIwLCA1NCwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDUsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA4LCAxNzksIAorICAgIDI0NSwgOTIsIDIyMSwgNDMsIDE0NywgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxNDksIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgCisgICAgMTE4LCAyMjcsIDE4MCwgMjA5LCA5OCwgMjA5LCA5MywgMjQ0LCAzMSwgMTc5LCAyNDUsIDkyLCAyNDQsIDMyLCAyMTIsIDgyLCAKKyAgICAxNzksIDIzMCwgMjAyLCAxNzksIDIzOCwgMjMxLCA4MiwgMjM3LCAxOTgsIDIsIDI1MSwgMTIxLCAyNDgsIDY2LCAyMzcsIAorICAgIDE5OCwgMiwgMjQ4LCA2NiwgMjM3LCAxOTgsIDIsIDIwNSwgMTk5LCAyMzcsIDE5OCwgMSwgNjMsIDIzNywgMTk4LCAxLCAKKyAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMSwgNzUsIDIzNywgMTk4LCAxLCAyMzEsIDgzLCAyMzcsIDE5OCwgMSwgNjgsIDIzNywgCisgICAgMTk4LCAxLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDEsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMSwgMjUxLCA2NCwgMjM3LCAxOTgsIAorICAgIDEsIDIyMCwgMTgsIDIzNywgMTk4LCAxLCAyNTAsIDM0LCAyMzcsIDE5OCwgMSwgMTczLCAyMzcsIDE5OCwgMSwgMjI5LCAKKyAgICAxNDQsIDIzNywgMTk4LCAxLCAyMzksIDgsIDIzNywgMTk4LCAxLCAyMzgsIDExOSwgMjM3LCAxOTgsIDEsIDIyMiwgMjAzLCAKKyAgICAyMzcsIDE5OCwgMSwgMjQ3LCA5MiwgMjM3LCAxOTgsIDEsIDI0NiwgMTk5LCAyMzcsIDE5OCwgMSwgMjMwLCAxODEsIDIzNywgCisgICAgMTk4LCAxLCAyMzAsIDE0OSwgMjM3LCAxOTgsIDEsIDIyMSwgMTEsIDIzNywgMTk4LCAxLCAyMDcsIDI0MSwgMjM3LCAxOTgsIAorICAgIDEsIDIwNywgMjI5LCAyMzcsIDE5OCwgMSwgMjQ0LCAxMjAsIDIzNywgMTk4LCAxLCAyNDQsIDEwNCwgMjM3LCAxOTgsIDEsIAorICAgIDIyMSwgMjI3LCAyMzcsIDE5OCwgMSwgMjEwLCAyMiwgMjM3LCAxOTgsIDEsIDIwOSwgMTA4LCAyMzcsIDE5OCwgMSwgMjQ0LCAKKyAgICAyMTIsIDIzNywgMTk4LCAxLCAyNDQsIDEsIDIzNywgMTk4LCAxLCAyMDEsIDIwMSwgMjM3LCAxOTgsIDEsIDE4NSwgMjM3LCAKKyAgICAxOTgsIDEsIDIxOCwgMjA4LCAyMzcsIDE5OCwgMSwgMjQ5LCAzMiwgMjM3LCAxOTgsIDEsIDI0OCwgOTgsIDIzNywgMTk4LCAKKyAgICAxLCAxOTIsIDIzNywgMTk4LCAxLCAxOTgsIDIzNywgMTk4LCAxLCAyMTYsIDIyMCwgMjM3LCAxOTgsIDEsIDIyOCwgMTEzLCAKKyAgICAyMzcsIDE5OCwgMSwgMjI3LCA3NywgMjM3LCAxOTgsIDEsIDIwNiwgODYsIDIzNywgMTk4LCAxLCAyMTMsIDkwLCAyMzcsIAorICAgIDE5OCwgMSwgMjE1LCAzNiwgMjM3LCAxOTgsIDEsIDE1MiwgMjM3LCAxOTgsIDIsIDIyMSwgNTEsIDIzNywgMTk4LCAyMiwgMiwgCisgICAgMjUyLCAyNSwgMjM3LCAxOTgsIDIyLCAyLCA3NSwgMjM3LCAxOTgsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDE5OCwgMjIsIDIsIAorICAgIDY4LCAyMzcsIDE5OCwgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMjIsIDIsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMjIsIAorICAgIDIsIDI1MSwgNjQsIDIzNywgMTk4LCAyMiwgMiwgMjIwLCAxOCwgMjM3LCAxOTgsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDE5OCwgCisgICAgMiwgMjA1LCAyMDQsIDIzNywgMTk4LCAyLCAyMDcsIDI4LCAyMzcsIDE5OCwgMSwgMjI5LCAxMjUsIDIzNywgMTk4LCAxLCAKKyAgICAyMzgsIDk0LCAyMzcsIDE5OCwgMSwgMjAyLCAxMTYsIDIzNywgMTk4LCAxLCAyMTUsIDE4NSwgMjM3LCAxOTgsIDEsIDI0MCwgCisgICAgMTA4LCAyMzcsIDE5OCwgMTcsIDIwMiwgODQsIDIzNywgMTk4LCAxNywgMTA1LCAyMzcsIDE5OCwgMTcsIDEwOCwgMjM3LCAKKyAgICAxOTgsIDE3LCAxNDcsIDIzNywgMTk4LCAxNywgMTQ5LCAyMzcsIDE5OCwgMTcsIDE3MCwgMjM3LCAxOTgsIDE3LCAxOTUsIAorICAgIDIzNywgMTk4LCAxNywgMjEzLCAxMTEsIDIzNywgMTk4LCAxNywgMTk5LCAyMzcsIDE5OCwgMTcsIDIyMiwgNjMsIDIzNywgCisgICAgMTk4LCAyMDgsIDIwOCwgMjM3LCAxOTgsIDI1MSwgMTIwLCAyMzcsIDE5OCwgMjMwLCAyMjIsIDIzNywgMTk4LCAyMDYsIAorICAgIDIwNiwgMjM3LCAxOTgsIDI0MSwgMTMwLCAyMjAsIDIzLCAyMzcsIDE5OCwgMiwgMjAzLCA4NSwgMjM3LCAyMTMsIDIsIDI0NywgCisgICAgNTIsIDIzNywgMjEzLCAyLCAyNTAsIDE4MCwgMjM3LCAyMTMsIDIsIDIwNSwgMTk5LCAyMzcsIDIxMywgMSwgNjMsIDIzNywgCisgICAgMjEzLCAxLCAyNTIsIDI1LCAyMzcsIDIxMywgMSwgNzUsIDIzNywgMjEzLCAxLCAyMzEsIDgzLCAyMzcsIDIxMywgMSwgNjgsIAorICAgIDIzNywgMjEzLCAxLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDEsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMSwgMTI1LCAxNTksIDIzNywgCisgICAgMjEzLCAyMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAxLCA3NCwgMjM3LCAyMTMsIDEsIDI1MSwgNjQsIDIzNywgMjEzLCAKKyAgICAyMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAxLCA3OCwgMjM3LCAyMTMsIDEsIDI1MCwgMzQsIDIzNywgMjEzLCAxLCAxNzMsIAorICAgIDIzNywgMjEzLCAxLCAyMjksIDE0NCwgMjM3LCAyMTMsIDEsIDIzOSwgOCwgMjM3LCAyMTMsIDEsIDIzOCwgMTE5LCAyMzcsIAorICAgIDIxMywgMSwgMjIyLCAyMDMsIDIzNywgMjEzLCAxLCAyNDcsIDkyLCAyMzcsIDIxMywgMSwgMjQ2LCAxOTksIDIzNywgMjEzLCAKKyAgICAxLCAyMzAsIDE4MSwgMjM3LCAyMTMsIDEsIDIzMCwgMTQ5LCAyMzcsIDIxMywgMSwgMjIxLCAxMSwgMjM3LCAyMTMsIDEsIAorICAgIDIwNywgMjQxLCAyMzcsIDIxMywgMSwgMjA3LCAyMjksIDIzNywgMjEzLCAxLCAyNDQsIDEyMCwgMjM3LCAyMTMsIDEsIDI0NCwgCisgICAgMTA0LCAyMzcsIDIxMywgMSwgMjIxLCAyMjcsIDIzNywgMjEzLCAxLCAyMTAsIDIyLCAyMzcsIDIxMywgMSwgMjA5LCAxMDgsIAorICAgIDIzNywgMjEzLCAxLCAyNDQsIDIxMiwgMjM3LCAyMTMsIDEsIDI0NCwgMSwgMjM3LCAyMTMsIDEsIDIwMSwgMjAxLCAyMzcsIAorICAgIDIxMywgMSwgMTg1LCAyMzcsIDIxMywgMSwgMjE4LCAyMDgsIDIzNywgMjEzLCAxLCAyNDksIDMyLCAyMzcsIDIxMywgMSwgCisgICAgMjQ4LCA5OCwgMjM3LCAyMTMsIDEsIDE5MiwgMjM3LCAyMTMsIDEsIDE5OCwgMjM3LCAyMTMsIDEsIDIxNiwgMjIwLCAyMzcsIAorICAgIDIxMywgMSwgMjI4LCAxMTMsIDIzNywgMjEzLCAxLCAyMjcsIDc3LCAyMzcsIDIxMywgMSwgMjA2LCA4NiwgMjM3LCAyMTMsIAorICAgIDEsIDIxMywgOTAsIDIzNywgMjEzLCAxLCAyMTEsIDE2NCwgMjM3LCAyMTMsIDEsIDIxNSwgMzYsIDIzNywgMjEzLCAxLCAKKyAgICAxNTIsIDIzNywgMjEzLCAyLCAyMjEsIDUxLCAyMzcsIDIxMywgMiwgMjUwLCAxNywgMjM3LCAyMTMsIDIyLCAyLCAyNTIsIAorICAgIDI1LCAyMzcsIDIxMywgMjIsIDIsIDc1LCAyMzcsIDIxMywgMjIsIDIsIDIzMSwgODMsIDIzNywgMjEzLCAyMiwgMiwgNjgsIAorICAgIDIzNywgMjEzLCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAxNDYsIDIzNywgMjEzLCAyMiwgMiwgCisgICAgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDIyLCAyLCA3NCwgMjM3LCAKKyAgICAyMTMsIDIyLCAyLCAyNTEsIDY0LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDc4LCAKKyAgICAyMzcsIDIxMywgMjIsIDIsIDI1MCwgMzQsIDIzNywgMjEzLCAyLCAyMDUsIDIwNCwgMjM3LCAyMTMsIDIyMCwgMzksIDIzNywgCisgICAgMjEzLCAxLCAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMSwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgCisgICAgMTU5LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDE3LCAyMDIsIDg0LCAyMzcsIDIxMywgMTcsIAorICAgIDEwNSwgMjM3LCAyMTMsIDE3LCAxMDgsIDIzNywgMjEzLCAxNywgMTQ3LCAyMzcsIDIxMywgMTcsIDE0OSwgMjM3LCAyMTMsIAorICAgIDE3LCAxNzAsIDIzNywgMjEzLCAxNywgMTk1LCAyMzcsIDIxMywgMTcsIDIxMywgMTExLCAyMzcsIDIxMywgMTcsIDE5OSwgCisgICAgMjM3LCAyMTMsIDE3LCAyMjIsIDYzLCAyMzcsIDIxMywgMjUxLCAxNDYsIDU0LCAyMzcsIDIxMywgMjE1LCAxMjAsIDU0LCAKKyAgICAyMzcsIDIxMywgMSwgMjAyLCA4MCwgMTkzLCAyLCAyNDcsIDUyLCAxOTMsIDIsIDI1MCwgMTgwLCAxOTMsIDIsIDIwNSwgCisgICAgMTk5LCAxOTMsIDEsIDYzLCAxOTMsIDEsIDI1MiwgMjUsIDE5MywgMSwgNzUsIDE5MywgMSwgMjMxLCA4MywgMTkzLCAxLCAKKyAgICA2OCwgMTkzLCAxLCAyMDYsIDE3OCwgMTkzLCAxLCAxMjUsIDE0NiwgMTkzLCAxLCAxMjUsIDE1OSwgMTkzLCAxLCA3NCwgCisgICAgMTkzLCAxLCAyNTEsIDY0LCAxOTMsIDEsIDc4LCAxOTMsIDEsIDI1MCwgMzQsIDE5MywgMSwgMTczLCAxOTMsIDEsIDIyOSwgCisgICAgMTQ0LCAxOTMsIDEsIDIzOSwgOCwgMTkzLCAxLCAyMzgsIDExOSwgMTkzLCAxLCAyMjIsIDIwMywgMTkzLCAxLCAyNDcsIDkyLCAKKyAgICAxOTMsIDEsIDI0NiwgMTk5LCAxOTMsIDEsIDIzMCwgMTgxLCAxOTMsIDEsIDIzMCwgMTQ5LCAxOTMsIDEsIDIyMSwgMTEsIAorICAgIDE5MywgMSwgMjA3LCAyNDEsIDE5MywgMSwgMjA3LCAyMjksIDE5MywgMSwgMjQ0LCAxMjAsIDE5MywgMSwgMjQ0LCAxMDQsIAorICAgIDE5MywgMSwgMjIxLCAyMjcsIDE5MywgMSwgMjEwLCAyMiwgMTkzLCAxLCAyMDksIDEwOCwgMTkzLCAxLCAyNDQsIDIxMiwgCisgICAgMTkzLCAxLCAyNDQsIDEsIDE5MywgMSwgMjAxLCAyMDEsIDE5MywgMSwgMTg1LCAxOTMsIDEsIDIxOCwgMjA4LCAxOTMsIDEsIAorICAgIDI0OSwgMzIsIDE5MywgMSwgMjQ4LCA5OCwgMTkzLCAxLCAxOTIsIDE5MywgMSwgMTk4LCAxOTMsIDEsIDIxNiwgMjIwLCAKKyAgICAxOTMsIDEsIDIyOCwgMTEzLCAxOTMsIDEsIDIyNywgNzcsIDE5MywgMSwgMjA2LCA4NiwgMTkzLCAxLCAyMTMsIDkwLCAxOTMsIAorICAgIDEsIDIxMSwgMTY0LCAxOTMsIDEsIDIxNSwgMzYsIDE5MywgMSwgMTUyLCAxOTMsIDIsIDIyMSwgNTEsIDE5MywgMiwgMjUwLCAKKyAgICAxNywgMTkzLCAyMiwgMiwgMjUyLCAyNSwgMTkzLCAyMiwgMiwgNzUsIDE5MywgMjIsIDIsIDIzMSwgODMsIDE5MywgMjIsIDIsIAorICAgIDY4LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNDYsIDE5MywgMjIsIDIsIDEyNSwgMjE1LCAKKyAgICAxODYsIDE5MywgMjIsIDIsIDc0LCAxOTMsIDIyLCAyLCAyNTEsIDY0LCAxOTMsIDIyLCAyLCA3OCwgMTkzLCAyMiwgMiwgCisgICAgMjUwLCAzNCwgMTkzLCAyLCAyMDUsIDIwNCwgMTkzLCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE5MywgMjUwLCAzNSwgMjI3LCAKKyAgICAxOTYsIDgyLCAxOTMsIDEsIDIxNSwgMTg1LCAxOTMsIDEsIDIxNiwgNjEsIDE5MywgMSwgMjAyLCAxNjgsIDE5MywgMSwgCisgICAgMTI1LCAyMTUsIDE4NiwgMTkzLCAxLCAxMjUsIDIyNywgNzgsIDE5MywgMjIsIDIsIDEyNSwgMTU5LCAxOTMsIDIyLCAyLCAKKyAgICAxMjUsIDIyNywgNzgsIDE5MywgMTcsIDIwMiwgODQsIDE5MywgMTcsIDEwNSwgMTkzLCAxNywgMTA4LCAxOTMsIDE3LCAxNDcsIAorICAgIDE5MywgMTcsIDE0OSwgMTkzLCAxNywgMTcwLCAxOTMsIDE3LCAxOTUsIDE5MywgMTcsIDIxMywgMTExLCAxOTMsIDE3LCAKKyAgICAxOTksIDE5MywgMTcsIDIyMiwgNjMsIDE5MywgMjMwLCAyMDIsIDE5MywgMSwgMjA0LCAxMTEsIDE5MywgMjM5LCAxMzgsIAorICAgIDExOCwgMjE3LCA1NSwgMTkzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTkzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAKKyAgICAxOTMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgODAsIDE5MywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE5MywgMjM5LCAxMzgsIAorICAgIDEyNiwgMjEyLCA3OSwgNDQsIDIsIDI1MCwgMTgwLCA0NCwgMiwgMjA1LCAxOTksIDQ0LCAxLCA2MywgNDQsIDEsIDI1MiwgCisgICAgMjUsIDQ0LCAxLCA3NSwgNDQsIDEsIDIzMSwgODMsIDQ0LCAxLCA2OCwgNDQsIDEsIDIwNiwgMTc4LCA0NCwgMSwgNzQsIDQ0LCAKKyAgICAxLCAyNDEsIDE2MSwgNDQsIDEsIDI1MSwgNjQsIDQ0LCAxLCA3OCwgNDQsIDEsIDIyMCwgMTgsIDQ0LCAxLCAyNTAsIDM0LCAKKyAgICA0NCwgMSwgMTczLCA0NCwgMSwgMjIyLCAyMDMsIDQ0LCAxLCAyNDcsIDkyLCA0NCwgMSwgMjMwLCAxODEsIDQ0LCAxLCAyMjEsIAorICAgIDExLCA0NCwgMSwgMjA3LCAyNDEsIDQ0LCAxLCAyMjEsIDIyNywgNDQsIDEsIDIxMCwgMjIsIDQ0LCAxLCAyMDEsIDIwMSwgCisgICAgNDQsIDEsIDIyMSwgMjA5LCA0NCwgMSwgMTg1LCA0NCwgMSwgMTkyLCA0NCwgMSwgMTk4LCA0NCwgMSwgMjE2LCAyMjAsIDQ0LCAKKyAgICAxLCAyMTUsIDE4NSwgNDQsIDEsIDIyOCwgMTEzLCA0NCwgMSwgMjI3LCA3NywgNDQsIDEsIDIyNywgNjgsIDQ0LCAxLCAyMDYsIAorICAgIDg2LCA0NCwgMSwgMjEzLCA5MCwgNDQsIDEsIDIxMSwgMTY0LCA0NCwgMSwgMjE1LCAzNiwgNDQsIDEsIDE1MiwgNDQsIDIyLCAKKyAgICAyLCAyNTIsIDI1LCA0NCwgMjIsIDIsIDc1LCA0NCwgMjIsIDIsIDIzMSwgODMsIDQ0LCAyMiwgMiwgNjgsIDQ0LCAyMiwgMiwgCisgICAgMjA2LCAxNzgsIDQ0LCAyMiwgMiwgNzQsIDQ0LCAyMiwgMiwgMjQxLCAxNjEsIDQ0LCAyMiwgMiwgMjUxLCA2NCwgNDQsIDIyLCAKKyAgICAyLCA3OCwgNDQsIDIyLCAyLCAyMjAsIDE4LCA0NCwgMjIsIDIsIDI1MCwgMzQsIDQ0LCAyLCAyMDUsIDIwNCwgNDQsIDIyMCwgCisgICAgMzksIDQ0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDQ0LCAxNywgMjAyLCA4NCwgNDQsIDE3LCAxMDUsIDQ0LCAxNywgMTA4LCAKKyAgICA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTcwLCA0NCwgMTcsIDE5NSwgNDQsIDE3LCAyMTMsIDExMSwgNDQsIAorICAgIDE3LCAxOTksIDQ0LCAxNywgMjIyLCA2MywgNDQsIDQyLCAyMDksIDE1MiwgNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDQ0LCA0MiwgCisgICAgMTE4LCAyMDksIDM2LCA0NCwgMjQ0LCAxMzMsIDU0LCA0NCwgMjI0LCAzOCwgNTQsIDQ0LCAyMDMsIDUwLCA1NCwgNDQsIAorICAgIDI0NCwgNzIsIDU0LCA0NCwgMjQ1LCAxNDEsIDU0LCA0NCwgMjUwLCA4MiwgODcsIDU0LCA0NCwgMjE1LCAxMjAsIDU0LCA0NCwgCisgICAgNDIsIDU0LCAxNzUsIDIsIDM5LCAyNDcsIDUzLCA1NSwgMTc1LCAyLCAyNDcsIDUyLCAxNzUsIDIsIDI1MCwgMTgwLCAxNzUsIAorICAgIDIsIDIwNSwgMTk5LCAxNzUsIDEsIDYzLCAxNzUsIDEsIDI1MiwgMjUsIDE3NSwgMSwgNzUsIDE3NSwgMSwgMjMxLCA4MywgCisgICAgMTc1LCAxLCA2OCwgMTc1LCAxLCAyMDYsIDE3OCwgMTc1LCAxLCAxMjUsIDE0NiwgMTc1LCAxLCAxMjUsIDE1OSwgMTc1LCAxLCAKKyAgICA3NCwgMTc1LCAxLCAyNDEsIDE2MSwgMTc1LCAxLCAyNTEsIDY0LCAxNzUsIDEsIDc4LCAxNzUsIDEsIDIyMCwgMTgsIDE3NSwgCisgICAgMSwgMjUwLCAzNCwgMTc1LCAxLCAxNzMsIDE3NSwgMSwgMjI5LCAxNDQsIDE3NSwgMSwgMjM5LCA4LCAxNzUsIDEsIDIzOCwgCisgICAgMTE5LCAxNzUsIDEsIDIyMiwgMjAzLCAxNzUsIDEsIDI0NywgOTIsIDE3NSwgMSwgMjQ2LCAxOTksIDE3NSwgMSwgMjMwLCAKKyAgICAxODEsIDE3NSwgMSwgMjMwLCAxNDksIDE3NSwgMSwgMjIxLCAxMSwgMTc1LCAxLCAyMDcsIDI0MSwgMTc1LCAxLCAyMDcsIAorICAgIDIyOSwgMTc1LCAxLCAyNDQsIDEyMCwgMTc1LCAxLCAyNDQsIDEwNCwgMTc1LCAxLCAyMjEsIDIyNywgMTc1LCAxLCAyMTAsIAorICAgIDIyLCAxNzUsIDEsIDIwOSwgMTA4LCAxNzUsIDEsIDI0NCwgMjEyLCAxNzUsIDEsIDI0NCwgMSwgMTc1LCAxLCAyMDEsIDIwMSwgCisgICAgMTc1LCAxLCAxODUsIDE3NSwgMSwgMjE4LCAyMDgsIDE3NSwgMSwgMjQ5LCAzMiwgMTc1LCAxLCAyNDgsIDk4LCAxNzUsIDEsIAorICAgIDE5MiwgMTc1LCAxLCAxOTgsIDE3NSwgMSwgMjE2LCAyMjAsIDE3NSwgMSwgMjE1LCAxODUsIDE3NSwgMSwgMjI4LCAxMTMsIAorICAgIDE3NSwgMSwgMjI3LCA3NywgMTc1LCAxLCAyMjcsIDY4LCAxNzUsIDEsIDIwNiwgODYsIDE3NSwgMSwgMjEzLCA5MCwgMTc1LCAKKyAgICAxLCAyMTEsIDE2NCwgMTc1LCAxLCAyMTUsIDM2LCAxNzUsIDEsIDE1MiwgMTc1LCAyLCAyNTAsIDE3LCAxNzUsIDIyLCAyLCAKKyAgICAyNTIsIDI1LCAxNzUsIDIyLCAyLCA3NSwgMTc1LCAyMiwgMiwgMjMxLCA4MywgMTc1LCAyMiwgMiwgNjgsIDE3NSwgMjIsIDIsIAorICAgIDIwNiwgMTc4LCAxNzUsIDIyLCAyLCAxMjUsIDE0NiwgMTc1LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTc1LCAyMiwgMiwgCisgICAgNzQsIDE3NSwgMjIsIDIsIDI0MSwgMTYxLCAxNzUsIDIyLCAyLCAyNTEsIDY0LCAxNzUsIDIyLCAyLCA3OCwgMTc1LCAyMiwgCisgICAgMiwgMjIwLCAxOCwgMTc1LCAyMiwgMiwgMjUwLCAzNCwgMTc1LCAyLCAyMDUsIDIwNCwgMTc1LCAyMjcsIDE5NiwgODIsIAorICAgIDE3NSwgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxNzUsIDEsIDIwOCwgMjAsIDE3NSwgMSwgMjQxLCAyNTUsIDE3NSwgMSwgCisgICAgMjE1LCAxNjYsIDE3NSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc1LCAxLCAxMjUsIDIyNywgNzgsIDE3NSwgMjIsIDIsIDEyNSwgCisgICAgMTU5LCAxNzUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3NSwgMTcsIDIwMiwgODQsIDE3NSwgMTcsIDEwNSwgMTc1LCAxNywgCisgICAgMTA4LCAxNzUsIDE3LCAxNDcsIDE3NSwgMTcsIDE0OSwgMTc1LCAxNywgMTcwLCAxNzUsIDE3LCAxOTUsIDE3NSwgMTcsIAorICAgIDIxMywgMTExLCAxNzUsIDE3LCAxOTksIDE3NSwgMTcsIDIyMiwgNjMsIDE3NSwgMjM5LCAxMzgsIDE3LCAyMDIsIDg1LCAzNSwgCisgICAgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIAorICAgIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgCisgICAgMTM4LCAxNywgMTI2LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIAorICAgIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjQwLCAyMjUsIDIxOCwgCisgICAgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjYsIDM1LCAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAKKyAgICAyLCAyMDcsIDE2NCwgMjAwLCAyLCAyNDcsIDUyLCAyMDAsIDIsIDI1MCwgMTgwLCAyMDAsIDIsIDIwNSwgMTk5LCAyMDAsIDEsIAorICAgIDYzLCAyMDAsIDEsIDI1MiwgMjUsIDIwMCwgMSwgNzUsIDIwMCwgMSwgMjMxLCA4MywgMjAwLCAxLCA2OCwgMjAwLCAxLCAKKyAgICAyMDYsIDE3OCwgMjAwLCAxLCAxMjUsIDE0NiwgMjAwLCAxLCAxMjUsIDE1OSwgMjAwLCAxLCA3NCwgMjAwLCAxLCAyNDEsIAorICAgIDE2MSwgMjAwLCAxLCAyNTEsIDY0LCAyMDAsIDEsIDc4LCAyMDAsIDEsIDIyMCwgMTgsIDIwMCwgMSwgMjUwLCAzNCwgMjAwLCAKKyAgICAxLCAxNzMsIDIwMCwgMSwgMjI5LCAxNDQsIDIwMCwgMSwgMjM5LCA4LCAyMDAsIDEsIDIzOCwgMTE5LCAyMDAsIDEsIDIyMiwgCisgICAgMjAzLCAyMDAsIDEsIDI0NywgOTIsIDIwMCwgMSwgMjQ2LCAxOTksIDIwMCwgMSwgMjMwLCAxODEsIDIwMCwgMSwgMjMwLCAKKyAgICAxNDksIDIwMCwgMSwgMjIxLCAxMSwgMjAwLCAxLCAyMDcsIDI0MSwgMjAwLCAxLCAyMDcsIDIyOSwgMjAwLCAxLCAyNDQsIAorICAgIDEyMCwgMjAwLCAxLCAyNDQsIDEwNCwgMjAwLCAxLCAyMjEsIDIyNywgMjAwLCAxLCAyMTAsIDIyLCAyMDAsIDEsIDIwOSwgCisgICAgMTA4LCAyMDAsIDEsIDI0NCwgMjEyLCAyMDAsIDEsIDI0NCwgMSwgMjAwLCAxLCAyMDEsIDIwMSwgMjAwLCAxLCAxODUsIAorICAgIDIwMCwgMSwgMjE4LCAyMDgsIDIwMCwgMSwgMjQ5LCAzMiwgMjAwLCAxLCAyNDgsIDk4LCAyMDAsIDEsIDE5MiwgMjAwLCAxLCAKKyAgICAxOTgsIDIwMCwgMSwgMjE2LCAyMjAsIDIwMCwgMSwgMjE1LCAxODUsIDIwMCwgMSwgMjI4LCAxMTMsIDIwMCwgMSwgMjI3LCAKKyAgICA3NywgMjAwLCAxLCAyMDYsIDg2LCAyMDAsIDEsIDIxMywgOTAsIDIwMCwgMSwgMjExLCAxNjQsIDIwMCwgMSwgMjE1LCAzNiwgCisgICAgMjAwLCAxLCAxNTIsIDIwMCwgMiwgMjIxLCA1MSwgMjAwLCAyLCAyNTAsIDE3LCAyMDAsIDIyLCAyLCAyNTIsIDI1LCAyMDAsIAorICAgIDIyLCAyLCA3NSwgMjAwLCAyMiwgMiwgMjMxLCA4MywgMjAwLCAyMiwgMiwgNjgsIDIwMCwgMjIsIDIsIDIwNiwgMTc4LCAKKyAgICAyMDAsIDIyLCAyLCAxMjUsIDE0NiwgMjAwLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjAwLCAyMiwgMiwgNzQsIDIwMCwgMjIsIAorICAgIDIsIDI0MSwgMTYxLCAyMDAsIDIyLCAyLCAyNTEsIDY0LCAyMDAsIDIyLCAyLCA3OCwgMjAwLCAyMiwgMiwgMjIwLCAxOCwgCisgICAgMjAwLCAyMiwgMiwgMjUwLCAzNCwgMjAwLCAyLCAyMDUsIDIwNCwgMjAwLCAyMjcsIDE5NiwgODIsIDIwMCwgMjUxLCA2NSwgCisgICAgMjI3LCAxOTYsIDgyLCAyMDAsIDEsIDI0MCwgMTA4LCAyMDAsIDEsIDEyNSwgMjE1LCAxODYsIDIwMCwgMSwgMTI1LCAyMjcsIAorICAgIDc4LCAyMDAsIDIyLCAyLCAxMjUsIDE1OSwgMjAwLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDAsIDE3LCAyMDIsIDg0LCAKKyAgICAyMDAsIDE3LCAxMDUsIDIwMCwgMTcsIDEwOCwgMjAwLCAxNywgMTQ3LCAyMDAsIDE3LCAxNDksIDIwMCwgMTcsIDE3MCwgCisgICAgMjAwLCAxNywgMTk1LCAyMDAsIDE3LCAyMTMsIDExMSwgMjAwLCAxNywgMTk5LCAyMDAsIDE3LCAyMjIsIDYzLCAyMDAsIDIsIAorICAgIDIzMCwgMTM1LCAyMDAsIDIsIDIwNiwgMjIyLCAxNjQsIDIsIDI0NywgNTIsIDE2NCwgMiwgMjUwLCAxODAsIDE2NCwgMiwgCisgICAgMjA1LCAxOTksIDE2NCwgMSwgNjMsIDE2NCwgMSwgMjUyLCAyNSwgMTY0LCAxLCA3NSwgMTY0LCAxLCAyMzEsIDgzLCAxNjQsIAorICAgIDEsIDY4LCAxNjQsIDEsIDIwNiwgMTc4LCAxNjQsIDEsIDEyNSwgMTQ2LCAxNjQsIDEsIDEyNSwgMTU5LCAxNjQsIDEsIDc0LCAKKyAgICAxNjQsIDEsIDI0MSwgMTYxLCAxNjQsIDEsIDI1MSwgNjQsIDE2NCwgMSwgNzgsIDE2NCwgMSwgMjIwLCAxOCwgMTY0LCAxLCAKKyAgICAyNTAsIDM0LCAxNjQsIDEsIDE3MywgMTY0LCAxLCAyMjksIDE0NCwgMTY0LCAxLCAyMzksIDgsIDE2NCwgMSwgMjM4LCAxMTksIAorICAgIDE2NCwgMSwgMjIyLCAyMDMsIDE2NCwgMSwgMjQ3LCA5MiwgMTY0LCAxLCAyNDYsIDE5OSwgMTY0LCAxLCAyMzAsIDE4MSwgCisgICAgMTY0LCAxLCAyMzAsIDE0OSwgMTY0LCAxLCAyMjEsIDExLCAxNjQsIDEsIDIwNywgMjQxLCAxNjQsIDEsIDIwNywgMjI5LCAKKyAgICAxNjQsIDEsIDI0NCwgMTIwLCAxNjQsIDEsIDI0NCwgMTA0LCAxNjQsIDEsIDIyMSwgMjI3LCAxNjQsIDEsIDIxMCwgMjIsIAorICAgIDE2NCwgMSwgMjA5LCAxMDgsIDE2NCwgMSwgMjQ0LCAyMTIsIDE2NCwgMSwgMjQ0LCAxLCAxNjQsIDEsIDIwMSwgMjAxLCAKKyAgICAxNjQsIDEsIDIyMSwgMjA5LCAxNjQsIDEsIDE4NSwgMTY0LCAxLCAyMTgsIDIwOCwgMTY0LCAxLCAyNDksIDMyLCAxNjQsIDEsIAorICAgIDI0OCwgOTgsIDE2NCwgMSwgMTkyLCAxNjQsIDEsIDE5OCwgMTY0LCAxLCAyMTYsIDIyMCwgMTY0LCAxLCAyMTUsIDE4NSwgCisgICAgMTY0LCAxLCAyMjgsIDExMywgMTY0LCAxLCAyMjcsIDc3LCAxNjQsIDEsIDIyNywgNjgsIDE2NCwgMSwgMjA2LCA4NiwgMTY0LCAKKyAgICAxLCAyMTMsIDkwLCAxNjQsIDEsIDIxMSwgMTY0LCAxNjQsIDEsIDIxNSwgMzYsIDE2NCwgMSwgMTUyLCAxNjQsIDEsIDIwNywgCisgICAgMjEwLCAxNjQsIDIsIDI1MCwgMTcsIDE2NCwgMjIsIDIsIDI1MiwgMjUsIDE2NCwgMjIsIDIsIDc1LCAxNjQsIDIyLCAyLCAKKyAgICAyMzEsIDgzLCAxNjQsIDIyLCAyLCA2OCwgMTY0LCAyMiwgMiwgMjA2LCAxNzgsIDE2NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNjQsIAorICAgIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDIyLCAyLCA3NCwgMTY0LCAyMiwgMiwgMjQxLCAxNjEsIDE2NCwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDE2NCwgMjIsIDIsIDc4LCAxNjQsIDIyLCAyLCAyMjAsIDE4LCAxNjQsIDIyLCAyLCAyNTAsIDM0LCAxNjQsIAorICAgIDIsIDIwNSwgMjA0LCAxNjQsIDEsIDcwLCAyMTYsIDk3LCAxNjQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTY0LCAxLCAKKyAgICAyNTAsIDEyNiwgMjMxLCA4MywgMTY0LCAxLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDEsIDEyNSwgMjI3LCA3OCwgMTY0LCAyMiwgCisgICAgMiwgMTI1LCAxNTksIDE2NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTY0LCAxNywgMjAyLCA4NCwgMTY0LCAxNywgMTA1LCAKKyAgICAxNjQsIDE3LCAxMDgsIDE2NCwgMTcsIDE0NywgMTY0LCAxNywgMTQ5LCAxNjQsIDE3LCAxNzAsIDE2NCwgMTcsIDE5NSwgCisgICAgMTY0LCAxNywgMjEzLCAxMTEsIDE2NCwgMTcsIDE5OSwgMTY0LCAxNywgMjIyLCA2MywgMTY0LCA0MiwgMjA5LCAxNTIsIAorICAgIDE2NCwgNDIsIDExOCwgMjM2LCAxMSwgMTY0LCA0MiwgMTE4LCAyMDksIDM2LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIxNywgCisgICAgNTUsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE2NCwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTY0LCAyNDQsIAorICAgIDEzOCwgODIsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMSwgMjI4LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjMsIDE2MywgMTY0LCAxLCAKKyAgICAyNDYsIDEzMSwgMjE1LCAxODYsIDE2NCwgMSwgMjQ2LCAxMzEsIDE1OSwgMTY0LCAxLCAyNDYsIDEzMSwgMjI3LCA3OCwgCisgICAgMTY0LCAxLCAyNDYsIDEzMSwgMjMwLCA1NCwgMTQwLCAyLCAyNTAsIDE3OSwgMTQwLCAyLCAyMDUsIDE5OCwgMTQwLCAxLCAKKyAgICAyNTAsIDYsIDE0MCwgMSwgMjUxLCAyMzUsIDE0MCwgMSwgMjUxLCA4OSwgMTQwLCAxLCAyNTEsIDEwNCwgMTQwLCAxLCAyMzAsIAorICAgIDE5MSwgMTQwLCAxLCAyMzEsIDgyLCAxNDAsIDEsIDIwNiwgMTY5LCAxNDAsIDEsIDIwNiwgMTcyLCAxNDAsIDEsIDIzMCwgCisgICAgMjE3LCAxNDAsIDEsIDIzMCwgMjE4LCAxNDAsIDEsIDIzMSwgNjgsIDE0MCwgMSwgMjMxLCA3MCwgMTQwLCAxLCAyNDAsIAorICAgIDE5NCwgMTQwLCAxLCAyNDEsIDE1NiwgMTQwLCAxLCAyNTEsIDQ5LCAxNDAsIDEsIDIxOSwgMTg3LCAxNDAsIDEsIDIyMCwgCisgICAgMTEsIDE0MCwgMSwgMjUwLCAyMCwgMTQwLCAxLCAyNTEsIDUsIDIyOSwgMjA2LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMjksIAorICAgIDIwNiwgMTQwLCAxLCAyNTEsIDUsIDIzOCwgMjEwLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjksIAorICAgIDI1NSwgMjIzLCAxMDMsIDE0MCwgMSwgMjE0LCAyMzUsIDIzOCwgMjEwLCAxNDAsIDEsIDI1MSwgNSwgMjQ3LCA4LCAxNDAsIAorICAgIDEsIDIyNSwgMTQ3LCAyNDcsIDgsIDE0MCwgMSwgMjUxLCA1LCAyMzAsIDE2NCwgMTQwLCAxLCAyMjUsIDE0NywgMjMwLCAKKyAgICAxNjQsIDE0MCwgMSwgMjEwLCAxNSwgMjIzLCAxMDMsIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMzQsIDIyMywgMTA0LCAxNDAsIAorICAgIDEsIDIxNCwgMjM1LCAyMzAsIDE2NCwgMTQwLCAxLCAyNTEsIDUsIDIwNywgMjM3LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMDcsIAorICAgIDIzNywgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTExLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIDExMSwgMTQwLCAxLCAyMjMsIAorICAgIDE5MSwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjUxLCA1LCAyMDksIDE5NSwgMTQwLCAKKyAgICAxLCAyMjUsIDE0NywgMjA5LCAxOTUsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDEzMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAKKyAgICAxMzEsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTMxLCAxNDAsIDEsIDI1MSwgCisgICAgNSwgMjE5LCA0MiwgMTQwLCAxLCAyMjUsIDE0NywgMjE5LCA0MiwgMTQwLCAxLCAyNTEsIDUsIDI0OCwgMjAwLCAxNDAsIDEsIAorICAgIDIyNSwgMTQ3LCAyNDgsIDIwMCwgMTQwLCAxLCAyMjUsIDYyLCAxNDAsIDEsIDI1MCwgMjQxLCAyNDgsIDIwMCwgMTQwLCAxLCAKKyAgICAyMDMsIDU3LCAxNDAsIDEsIDIxNiwgMTY0LCAxNDAsIDEsIDI0NCwgMTYyLCAyMjcsIDI0MywgMTQwLCAxLCAyMDYsIDU3LCAKKyAgICAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjA3LCAxNDAsIDEsIDIyMywgMTkxLCAyMTQsIDIwNywgMTQwLCAxLCAyNDQsIDE2MiwgCisgICAgMjE0LCAyMDcsIDE0MCwgMSwgMjM3LCA3MSwgMTQwLCAxLCAyMjMsIDE5MSwgMjI3LCAyNDMsIDE0MCwgMSwgMjQwLCA2MiwgCisgICAgMTQwLCAyLCAyNTEsIDM4LCAxNDAsIDIyLCAyLCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjUxLCAxMDYsIAorICAgIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyNTEsIDEwNiwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIzMCwgMjE0LCAxNDAsIDIyLCAKKyAgICAyLCAyNDMsIDIwMCwgMjMwLCAyMTQsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjQzLCAKKyAgICAyMDAsIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgCisgICAgMjQzLCAyMDAsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIDIyOSwgMTMsIDI0NCwgNTAsIDE0MCwgMjIsIDIsIDIyOSwgMTIsIAorICAgIDIzNywgMTU4LCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjQzLCAyMDAsIDI1MSwgOTksIDE0MCwgCisgICAgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyMzgsIDIwOSwgMTQwLCAyMiwgMiwgMjM4LCAyMDksIDE0MCwgMjI3LCA4OSwgCisgICAgMTcsIDIwMiwgODQsIDE0MCwgMjI3LCA4OSwgMTcsIDEwNSwgMTQwLCAyMjcsIDg5LCAxNywgMTA4LCAxNDAsIDIyNywgODksIAorICAgIDE3LCAxNDcsIDE0MCwgMjI3LCA4OSwgMTcsIDE0OSwgMTQwLCAyMjcsIDg5LCAxNywgMTcwLCAxNDAsIDIyNywgODksIDE3LCAKKyAgICAxOTUsIDE0MCwgMjI3LCA4OSwgMTcsIDIxMywgMTExLCAxNDAsIDIyNywgODksIDE3LCAxOTksIDE0MCwgMjI3LCA4OSwgMTcsIAorICAgIDIyMiwgNjMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjA5LCAKKyAgICAxNDAsIDIxNywgMTc5LCAyMjgsIDE5NCwgMjA5LCAxMDMsIDE2NywgMjI5LCAyNywgMjMwLCAxOCwgMjA5LCAxMDMsIDE2NywgCisgICAgMjI5LCAxMTYsIDIyOSwgMTM5LCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMDgsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIyOSwgMTE2LCAyMjksIDEwMywgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTEyLCAyMDksIDEwMywgMTY3LCAKKyAgICAyMjksIDExNiwgMjE2LCAxODUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgMTI5LCAyMjIsIDExNiwgMjA5LCAxMDMsIDE2NywgCisgICAgMjQ2LCAxMTcsIDI0NiwgMTg4LCAyMDksIDEwMywgMTY3LCAyNDYsIDExNywgMjQ2LCAxMjcsIDIwOSwgMTAzLCAxNjcsIAorICAgIDI0NiwgMTE3LCAyNDYsIDE4NywgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjEyLCAxMywgMjA5LCAxMDMsIDE2NywgMjQ2LCAKKyAgICAxMTcsIDI0NiwgMTEzLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAyLCAyNTUsIDIwOSwgMTAzLCAxNjcsIDI0MywgCisgICAgMTE0LCAyNDYsIDE5NiwgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIxOSwgNTMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIAorICAgIDIwOSwgOTcsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIyMywgODAsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIxOCwgCisgICAgMTcwLCAyMDksIDEwMywgMTY3LCAyMjEsIDE5MiwgMjIyLCAyMzAsIDIwOSwgMTAzLCAxNjcsIDI0MywgMTE0LCAyNDQsIDUxLCAKKyAgICAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjA5LCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTYsIDIwOSwgCisgICAgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTA0LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDQzLCAyMDksIDEwMywgCisgICAgMTY3LCAyMjEsIDE5MiwgMjIxLCA4NCwgMjA5LCAxMDMsIDE2NywgMjQ4LCAyNCwgMjQ5LCAwLCAyMDksIDEwMywgMTY3LCAKKyAgICAyMTgsIDcwLCAyMTgsIDk4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAxNzIsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCisgICAgMTg3LCAyNDAsIDEwOCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMjAxLCAyMDksIDEwMywgMTY3LCAyMzksIAorICAgIDE4NywgMjQwLCA4MSwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxNCwgMjQ3LCAyMDksIDEwMywgMTY3LCAyMjQsIDgzLCAKKyAgICAxOTIsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDMsIDg2LCAyMDksIDEwMywgMTY3LCAyMTUsIDIyOCwgMjE1LCAxNDQsIAorICAgIDIwOSwgMTAzLCAxNjcsIDIxNSwgMTQ1LCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyMjcsIDEwNywgMjA5LCAxMDMsIDE2NywgCisgICAgMjI2LCAyMzksIDIwOSwgMTAzLCAxNjcsIDIwNCwgMSwgMjA0LCAxMDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgCisgICAgNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAxMTYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMSwgOSwgMjA5LCAKKyAgICAxMDMsIDE2NywgMjM2LCAxMzcsIDIzNiwgMjMzLCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyNDYsIDk3LCAyMDksIDEwMywgCisgICAgMTY3LCAxNTgsIDI1MCwgMjIzLCAyMDksIDEwMywgMTY3LCAyMzYsIDEzNywgMjIxLCAxODcsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIxOSwgMTQ0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNjMsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMzcsIDEyNSwgCisgICAgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MiwgMjUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTAsIDI0NywgMjA5LCAKKyAgICAxMDMsIDE2NywgMjE0LCAyMjksIDc1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjMxLCA4MywgMjA5LCAxMDMsIDE2NywgCisgICAgMjE0LCAyMjksIDIwNywgMjQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDcsIDIyLCAyMDksIDEwMywgMTY3LCAyMTQsIAorICAgIDIyOSwgNjgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDYsIDE3OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODMsIDIwOSwgCisgICAgMTAzLCAyNDUsIDkyLCAxNiwgMjQ5LCAxLCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzQsIDIwOSwgMTAzLCAxNjcsIAorICAgIDIxNCwgMjI5LCAyNTEsIDEwOSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgCisgICAgMjUxLCA2NSwgMjI1LCAxMzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTEsIDY1LCAyMjUsIDEzNiwgMjA5LCAxMDMsIAorICAgIDE2NywgMjI4LCAzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMzLCAyMDksIDEwMywgCisgICAgMTY3LCAyMjUsIDE0MSwgMjQxLCAxMjksIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMDksIDEwMywgMTY3LCAKKyAgICAyMjUsIDE0MSwgMjA4LCA4OCwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDI0NiwgMTc1LCAyMDksIDEwMywgMTY3LCAyMDksIAorICAgIDk1LCAyMDksIDEwMywgMTY3LCAyMjIsIDcyLCAyMDksIDEwMywgMTY3LCAyMDMsIDgwLCAyMDksIDEwMywgMTY3LCAyMzksIAorICAgIDE3NywgMjA5LCAxMDMsIDE3LCAyMDIsIDg0LCAyMDksIDEwMywgMTcsIDEwNSwgMjA5LCAxMDMsIDE3LCAxMDgsIDIwOSwgCisgICAgMTAzLCAxNywgMTQ3LCAyMDksIDEwMywgMTcsIDE0OSwgMjA5LCAxMDMsIDE3LCAxNzAsIDIwOSwgMTAzLCAxNywgMTk1LCAKKyAgICAyMDksIDEwMywgMTcsIDIxMywgMTExLCAyMDksIDEwMywgMTcsIDE5OSwgMjA5LCAxMDMsIDE3LCAyMjIsIDYzLCAyMDksIAorICAgIDEwMywgMTY3LCAyNTAsIDIxOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTMsIDIyOCwgMTIsIDEsIDIyOSwgMjYsIDIyOCwgCisgICAgMTIsIDEsIDIyOSwgMTE2LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI5LCAxMTYsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAKKyAgICAyMjIsIDEyOCwgMjI4LCAxMiwgMSwgMjQ1LCAyNTQsIDIyOCwgMTIsIDEsIDIxMiwgMTQsIDIwOSwgMjMyLCAyMjgsIDEyLCAKKyAgICAxLCAyMjAsIDIzMywgMjI4LCAxMiwgMSwgMjQzLCAxMTMsIDIyOCwgMTIsIDEsIDEzNSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgCisgICAgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMjEsIDE5MSwgMjI4LCAxMiwgCisgICAgMSwgMjQ4LCAyMywgMjI4LCAxMiwgMSwgMjE4LCA2OSwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIxMCwgMjExLCAyMjgsIDEyLCAKKyAgICAxLCAyMzksIDE4NywgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjM5LCAKKyAgICAxODcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMDIsIDI0NywgMjI4LCAxMiwgMSwgCisgICAgMjI3LCA1MCwgMjI3LCAxMDcsIDIyOCwgMTIsIDEsIDIyNywgNTAsIDIyNywgMTIsIDIyOCwgMTIsIDEsIDIwNCwgMCwgMjI4LCAKKyAgICAxMiwgMSwgMjEyLCAxNCwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgNzgsIAorICAgIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMDksIDIzMiwgMjI4LCAxMiwgMjQxLCAxMDgsIDIyOCwgMTIsIDIyLCAyLCA2MywgCisgICAgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMzAsIDQsIDIyOCwgMTIsIDIyLCAyLCAyNTIsIDI1LCAyMjgsIDEyLCAyMiwgCisgICAgMiwgMjUwLCAyNDcsIDIyOCwgMTIsIDIyLCAyLCA3NSwgMjI4LCAxMiwgMjIsIDIsIDIzMSwgODMsIDIyOCwgMTIsIDIyLCAyLCAKKyAgICAyMDMsIDEyNCwgMjI4LCAxMiwgMjIsIDIsIDIwMiwgMTY5LCAyMjgsIDEyLCAyMiwgMiwgNjgsIDIyOCwgMTIsIDIyLCAyLCAKKyAgICAyMDYsIDE3OCwgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMjksIDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjcsIAorICAgIDQ5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjIwLCAyMzMsIDIyOCwgMTIsIDIyLCAyLCA3NCwgMjI4LCAxMiwgMjIsIDIsIAorICAgIDI0MSwgMTQ1LCAyMjgsIDEyLCAyMiwgMiwgNzgsIDIyOCwgMTIsIDIyLCAyLCAyNTAsIDgsIDIyOCwgMTIsIDIyLCAyLCAKKyAgICAyNTEsIDY0LCAyMjgsIDEyLCAyMjksIDI3LCAyMjgsIDExMywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIAorICAgIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgMiwgMjI4LCAxMiwgCisgICAgMTQzLCAyMjUsIDE0MSwgMjQ3LCAxNiwgMjI4LCAxMiwgMjQ3LCA1OCwgODIsIDIyOCwgMTIsIDIyMiwgODEsIDIyOCwgMTIsIAorICAgIDE3LCAyMDIsIDg0LCAyMjgsIDEyLCAxNywgMTA1LCAyMjgsIDEyLCAxNywgMTA4LCAyMjgsIDEyLCAxNywgMTQ3LCAyMjgsIAorICAgIDEyLCAxNywgMTQ5LCAyMjgsIDEyLCAxNywgMTcwLCAyMjgsIDEyLCAxNywgMTk1LCAyMjgsIDEyLCAxNywgMjEzLCAxMTEsIAorICAgIDIyOCwgMTIsIDE3LCAxOTksIDIyOCwgMTIsIDE3LCAyMjIsIDYzLCAyMjgsIDEyLCAyMzYsIDEzNywgMjIxLCAxOTEsIDIyOCwgCisgICAgMTIsIDIzNiwgMTM3LCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMjksIDExNywgMjM4LCAzOSwgMjI4LCAxMiwgMSwgMjI5LCAKKyAgICAxMTcsIDIyMCwgMjMzLCA3NywgNCwgMjIwLCAzOSwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgCisgICAgMjYsIDYzLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjE1LCAyMzIsIDI0OCwgMTY0LCAKKyAgICAxOTIsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMzcsIDIzMiwgMjA4LCA2LCAxOTIsIAorICAgIDc3LCAxMzEsIDgxLCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAxMzEsIDI0NiwgMTIsIDIwMywgMywgCisgICAgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgNzcsIDEzMSwgMjQ3LCAzNCwgMjAzLCAzLCAyMjQsIDE3MywgMjE4LCAxNzEsIAorICAgIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCA2LCAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIAorICAgIDIxNCwgMjA1LCAyMTMsIDgyLCA3NywgMTMxLCAyNDcsIDE5NiwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjQ4LCA0NSwgCisgICAgMjEyLCAyMzgsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDIzMCwgMjQzLCAyMDgsIDUsIDc3LCAxMzEsIDI0NCwgNDQsIAorICAgIDIwOCwgNiwgMjQ3LCAxOTUsIDc3LCAxMzEsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMTMsIDgyLCA3NywgMTMxLCAKKyAgICAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIxNSwgMjU1LCAKKyAgICAyNDYsIDE1NiwgMjExLCAxODAsIDIxMywgODIsIDc3LCAxMzEsIDIxNiwgNjUsIDIzOCwgOSwgMjEzLCA4MiwgNzcsIDEzMSwgCisgICAgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAxNDksIDIyNSwgMjEsIDE2MywgMjQ3LCA2MSwgNzcsIDEzMSwgMjM3LCAyMzIsIAorICAgIDIwOCwgNSwgNzcsIDIyNywgMzUsIDIsIDI0NiwgMTk3LCAyMTUsIDE0OCwgNzcsIDIyNywgMzUsIDIsIDIyNywgMTU5LCAKKyAgICAyMTUsIDE0OCwgNzcsIDI1MCwgNTUsIDIsIDIxMywgOTMsIDIzOCwgMTkzLCAyNTUsIDI3LCAyMTUsIDE0OCwgNzcsIDI1MCwgCisgICAgNTUsIDIsIDI1NSwgMjQsIDE4NSwgNzcsIDI1MCwgNTUsIDIsIDIxNCwgMTc4LCAyMDgsIDAsIDc3LCAyLCAyMTYsIDE2MCwgCisgICAgMjQzLCAxMjcsIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIAorICAgIDI0MywgMTI3LCAyMzcsIDIzMywgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAKKyAgICAyMjMsIDk5LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMTYsIDE2MCwgMjIzLCA5OCwgNzcsIDE3LCAKKyAgICAyMDIsIDg0LCA3NywgMTcsIDEwNSwgNzcsIDE3LCAxMDgsIDc3LCAxNywgMTQ3LCA3NywgMTcsIDE0OSwgNzcsIDE3LCAxNzAsIAorICAgIDc3LCAxNywgMTk1LCA3NywgMTcsIDIxMywgMTExLCA3NywgMTcsIDE5OSwgNzcsIDE3LCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgCisgICAgMTA1LCA3NywgMTcsIDE2MiwgMTA4LCA3NywgMTcsIDE2MiwgMTQ3LCA3NywgMTcsIDE2MiwgMTQ5LCA3NywgMTcsIDE2MiwgCisgICAgMTcwLCA3NywgMTcsIDE2MiwgMTk1LCA3NywgMTcsIDE2MiwgMjEzLCAxMTEsIDc3LCAxNywgMTYyLCAxOTksIDc3LCAxNywgCisgICAgMTYyLCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgMjAyLCA4NCwgNzcsIDEzMSwgMjQ3LCAxOTgsIDIxNSwgMTQ4LCA3NywgMTMxLCAKKyAgICAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIyMCwgMjQ5LCAyMDIsIDE5LCA3NywgMTMxLCAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIAorICAgIDE0OSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMTMxLCAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIxMywgOTQsIAorICAgIDIxNSwgMTQ4LCA3NywgMTMxLCAyNDYsIDE3MSwgMjI0LCAxNzIsIDc3LCAxMzEsIDIwOCwgMjEsIDI1NSwgMjMsIDc3LCAKKyAgICAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxNzQsIDc3LCAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxODAsIAorICAgIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAxNzQsIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAKKyAgICAxODAsIDc3LCAyLCAyMDMsIDcyLCAyMDgsIDQsIDc3LCAyLCAyMjUsIDEwMSwgMjA4LCA0LCA3NywgMSwgMTczLCA3NywgMSwgCisgICAgMjI5LCAxNDQsIDc3LCAxLCAyMzksIDgsIDc3LCAxLCAyMzgsIDExOSwgNzcsIDEsIDIyMiwgMjAzLCA3NywgMSwgMjQ3LCAKKyAgICA5MiwgNzcsIDEsIDI0NiwgMTk5LCA3NywgMSwgMjMwLCAxODEsIDc3LCAxLCAyMjEsIDExLCA3NywgMSwgMjA3LCAyNDEsIAorICAgIDc3LCAxLCAyMDcsIDIyOSwgNzcsIDEsIDI0NCwgMTIwLCA3NywgMSwgMjQ0LCAxMDQsIDc3LCAxLCAyMjEsIDIyNywgNzcsIAorICAgIDEsIDIxMCwgMjIsIDc3LCAxLCAyMDksIDEwOCwgNzcsIDEsIDI0NCwgMjEyLCA3NywgMSwgMjQ0LCAxLCA3NywgMSwgMjAxLCAKKyAgICAyMDEsIDc3LCAxLCAxODUsIDc3LCAxLCAyMTgsIDIwOCwgNzcsIDEsIDI0OSwgMzIsIDc3LCAxLCAyNDgsIDk4LCA3NywgMSwgCisgICAgMTkyLCA3NywgMSwgMjA4LCAyMCwgNzcsIDEsIDIwOCwgMTAsIDc3LCAxLCAyNDEsIDI1NSwgNzcsIDEsIDI0MSwgMjQ5LCAKKyAgICA3NywgMSwgMjA0LCAxMTEsIDc3LCAxLCAyMDIsIDgwLCA3NywgMSwgMjAyLCAxMTYsIDc3LCAxLCAyNTUsIDI5LCA3NywgMSwgCisgICAgMTk4LCA3NywgMSwgMjE2LCAyMjAsIDc3LCAxLCAyMjgsIDExMywgNzcsIDEsIDIxMywgOTAsIDc3LCAxLCAyMTEsIDE2NCwgCisgICAgNzcsIDEsIDIxNSwgMzYsIDc3LCAxLCAxNTIsIDc3LCAxLCA2MywgNzcsIDEsIDIyOCwgMjIzLCA3NywgMSwgMjM5LCAyMjksIAorICAgIDIxNiwgMjIwLCA3NywgMSwgMjI5LCA0NywgNzcsIDEsIDIxNSwgMTg1LCA3NywgMjIsIDIsIDI1MiwgMjUsIDc3LCAyMiwgMiwgCisgICAgNzUsIDc3LCAyMiwgMiwgMjMxLCA4MywgNzcsIDIyLCAyLCA2OCwgNzcsIDIyLCAyLCAyMDYsIDE3OCwgNzcsIDIyLCAyLCAKKyAgICAxMjUsIDE0NiwgNzcsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA3NywgMjIsIDIsIDEyNSwgMTU5LCA3NywgMjIsIDIsIDEyNSwgCisgICAgMjI3LCA3OCwgNzcsIDIyLCAyLCA3NCwgNzcsIDIyLCAyLCAyNDEsIDE2MSwgNzcsIDIyLCAyLCA3OCwgNzcsIDIyLCAyLCAKKyAgICAyMjAsIDE4LCA3NywgMiwgMjE1LCAyMzgsIDIxMSwgMTEsIDIyMiwgMjA0LCAyMTUsIDIyNywgNzcsIDIsIDIxNSwgMjMyLCAKKyAgICAyNDgsIDE2MywgNzcsIDIyLCAyLCAyMTYsIDczLCA3NSwgNzcsIDIyLCAyLCAyMTYsIDczLCAyMzEsIDgzLCA3NywgMiwgCisgICAgMjIwLCAyNDksIDIwMiwgMjAsIDIyMywgMTA3LCAyNDQsIDIxMiwgNzcsIDIsIDIxMiwgMjcsIDIyNywgMjM2LCA3NywgMTMxLCAKKyAgICAyMzcsIDEzOSwgNzcsIDEzMSwgMjE5LCAxMzIsIDc3LCAyLCAyMjcsIDIzOSwgMjE1LCAxNDgsIDc3LCAyLCAyMDMsIDc3LCAKKyAgICAyMTUsIDE0OCwgNzcsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCA3NywgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIAorICAgIDIsIDIzNywgMjM2LCAyNDcsIDYyLCAyMTYsIDYzLCA3NywgMiwgMjM3LCAyMzYsIDIyNSwgMTQsIDIxNiwgNjMsIDc3LCAyLCAKKyAgICAyMzAsIDIzOSwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgCisgICAgNzcsIDIxMCwgMjU0LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIzMCwgMjM5LCAyMjUsIDI0LCAKKyAgICAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDEsIDE3MywgNzcsIDIxMCwgMjU0LCAxLCAyMjksIDE0NCwgNzcsIDIxMCwgMjU0LCAKKyAgICAxLCAyMzksIDgsIDc3LCAyMTAsIDI1NCwgMSwgMjM4LCAxMTksIDc3LCAyMTAsIDI1NCwgMSwgMjIyLCAyMDMsIDc3LCAyMTAsIAorICAgIDI1NCwgMSwgMjQ3LCA5MiwgNzcsIDIxMCwgMjU0LCAxLCAyNDYsIDE5OSwgNzcsIDIxMCwgMjU0LCAxLCAyMzAsIDE4MSwgCisgICAgNzcsIDIxMCwgMjU0LCAxLCAyMjEsIDExLCA3NywgMjEwLCAyNTQsIDEsIDIwNywgMjQxLCA3NywgMjEwLCAyNTQsIDEsIAorICAgIDIwNywgMjI5LCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTIwLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTA0LCA3NywgMjEwLCAKKyAgICAyNTQsIDEsIDIyMSwgMjI3LCA3NywgMjEwLCAyNTQsIDEsIDIxMCwgMjIsIDc3LCAyMTAsIDI1NCwgMSwgMjA5LCAxMDgsIAorICAgIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAyMTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxLCA3NywgMjEwLCAyNTQsIDEsIDIwMSwgCisgICAgMjAxLCA3NywgMjEwLCAyNTQsIDEsIDE4NSwgNzcsIDIxMCwgMjU0LCAxLCAyMTgsIDIwOCwgNzcsIDIxMCwgMjU0LCAxLCAKKyAgICAyNDksIDMyLCA3NywgMjEwLCAyNTQsIDEsIDI0OCwgOTgsIDc3LCAyMTAsIDI1NCwgMSwgMTkyLCA3NywgMjEwLCAyNTQsIDEsIAorICAgIDIwOCwgMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjA4LCAxMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDEsIDI1NSwgNzcsIDIxMCwgCisgICAgMjU0LCAxLCAyNDEsIDI0OSwgNzcsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDgwLCAKKyAgICA3NywgMjEwLCAyNTQsIDEsIDIwMiwgMTE2LCA3NywgMjEwLCAyNTQsIDEsIDI1NSwgMjksIDc3LCAyMTAsIDI1NCwgMSwgCisgICAgMTk4LCA3NywgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMTEzLCA3NywgMjEwLCAyNTQsIAorICAgIDEsIDIxMywgOTAsIDc3LCAyMTAsIDI1NCwgMSwgMjExLCAxNjQsIDc3LCAyMTAsIDI1NCwgMSwgMjE1LCAzNiwgNzcsIDIxMCwgCisgICAgMjU0LCAxLCAxNTIsIDc3LCAyMTAsIDI1NCwgMSwgNjMsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAyMjMsIDc3LCAyMTAsIAorICAgIDI1NCwgMSwgMjM5LCAyMjksIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIzOSwgMjI5LCAxOTgsIDc3LCAyMTAsIDI1NCwgCisgICAgMSwgMjM5LCAyMjksIDIxNiwgMjIwLCA3NywgMjI4LCAyMTAsIDIxNSwgMTQ2LCAyMjksIDE0NCwgNzcsIDIyOCwgMjEwLCAKKyAgICAyMTUsIDE0NiwgMjI5LCAxNDUsIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDI0NywgNDksIDIsIDc5LCAyNDgsIAorICAgIDE1NSwgNzcsIDI0NywgNDksIDIsIDE1NywgMjQ4LCAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAyNDcsIDUwLCAyMDksIDE4NSwgCisgICAgNzcsIDI0NywgNDksIDIsIDIxNCwgMjA0LCAyNTUsIDI4LCA3NywgMTYsIDI0MiwgNTUsIDI0NywgMTkzLCA3NywgMTYsIAorICAgIDIxNiwgMTU5LCAyMTUsIDIzOSwgNzcsIDE2LCAyMTksIDE1NSwgMjM4LCAxOTEsIDc3LCAxNiwgMjE2LCAxNTksIDIxNSwgCisgICAgMjQwLCAyMTYsIDY1LCAyMzgsIDgsIDc3LCAxNiwgMjE4LCAxNzEsIDE4NSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTMsIAorICAgIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyMjAsIDIzOCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAKKyAgICAxOTQsIDIzNywgMjM0LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjQ3LCAxMjgsIDI1NSwgMjUsIAorICAgIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjE2LCAxNjAsIDI0MywgMTI2LCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIAorICAgIDIzNywgMjMzLCA3NywgMTMxLCAyNDcsIDE5NywgMjEyLCAyMzgsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgCisgICAgMTMxLCAyMjQsIDg0LCAyMDMsIDMsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCAKKyAgICA1LCA3NywgMTMxLCA4MSwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAKKyAgICAxMzEsIDI0NiwgMTIsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCAyMTYsIAorICAgIDE1LCAyMTAsIDE3NCwgNTQsIDIyNywgMjIxLCAyMTAsIDE3NCwgNTQsIDIxNiwgMTUsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIAorICAgIDgzLCAyMjcsIDIyMSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgODMsIDc3LCAxMzEsIDIyNywgMjMxLCAyMjUsIDI1LCAyMTUsIAorICAgIDE0OCwgNzcsIDEzMSwgMjA4LCAxMTIsIDIyNSwgMjUsIDIxNSwgMTQ4LCA2OSwgMSwgMTczLCA2OSwgMSwgMjI5LCAxNDQsIAorICAgIDY5LCAxLCAyMzksIDgsIDY5LCAxLCAyMzgsIDExOSwgNjksIDEsIDIyMiwgMjAzLCA2OSwgMSwgMjQ3LCA5MiwgNjksIDEsIAorICAgIDI0NiwgMTk5LCA2OSwgMSwgMjMwLCAxODEsIDY5LCAxLCAyMzAsIDE0OSwgNjksIDEsIDIyMSwgMTEsIDY5LCAxLCAyMjEsIAorICAgIDE5MywgNjksIDEsIDIwNywgMjQxLCA2OSwgMSwgMjA3LCAyMjksIDY5LCAxLCAyNDQsIDEyMCwgNjksIDEsIDI0NCwgMTA0LCAKKyAgICA2OSwgMSwgMjIxLCAyMjcsIDY5LCAxLCAyMTAsIDIyLCA2OSwgMSwgMjA5LCAxMDgsIDY5LCAxLCAyNDQsIDIxMiwgNjksIDEsIAorICAgIDI0NCwgMSwgNjksIDEsIDIwMSwgMjAxLCA2OSwgMSwgMTg1LCA2OSwgMSwgMjE4LCAyMDgsIDY5LCAxLCAyNDksIDMyLCA2OSwgCisgICAgMSwgMjQ4LCA5OCwgNjksIDEsIDE5MiwgNjksIDEsIDE5OCwgNjksIDEsIDIxNiwgMjIwLCA2OSwgMSwgMjI4LCAxMTMsIDY5LCAKKyAgICAxLCAyMDQsIDExMSwgNjksIDEsIDIxNSwgMzYsIDY5LCAxLCAxNTIsIDY5LCAxLCAyMjcsIDc3LCA2OSwgMSwgNjMsIDY5LCAKKyAgICAxLCAyMTMsIDY3LCA2MywgNjksIDEsIDc1LCA2OSwgMSwgMjMxLCA4MywgNjksIDEsIDY4LCA2OSwgMSwgMjA2LCAxNzgsIAorICAgIDY5LCAxLCA3NCwgNjksIDEsIDIyNCwgNTUsIDc0LCA2OSwgMSwgNzgsIDY5LCAxLCAyNTAsIDM0LCA2OSwgMjIsIDIsIDIwOSwgCisgICAgMjM0LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDI1MiwgMjUsIDY5LCAyMiwgMiwgNzUsIDY5LCAyMiwgMiwgMjMxLCA4MywgNjksIAorICAgIDIyLCAyLCA2OCwgNjksIDIyLCAyLCAyMDYsIDE3OCwgNjksIDIyLCAyLCA3NCwgNjksIDIyLCAyLCAyNTEsIDY0LCA2OSwgCisgICAgMjIsIDIsIDIyNCwgNTUsIDIzMSwgODMsIDY5LCAyMiwgMiwgMjI0LCA1NSwgNzgsIDY5LCAyMiwgMiwgMTg4LCA1NSwgNjksIAorICAgIDIsIDI1MCwgMTgwLCA2OSwgMiwgNzAsIDU2LCA2OSwgMiwgMjA1LCAxOTksIDY5LCAyLCAyMDUsIDIwNCwgNjksIDIsIDI1MCwgCisgICAgNzksIDY5LCAxMDksIDIsIDE3NCwgMTk4LCA2OSwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA2OSwgMTA5LCAyLCAxNzQsIAorICAgIDIwNCwgMTExLCA2OSwgMTA5LCAyLCAxNzQsIDE1MiwgNjksIDEsIDIzNywgMjQ5LCAyMTUsIDM2LCA2OSwgMTcsIDIwMiwgCisgICAgODQsIDY5LCAxNywgMTA1LCA2OSwgMTcsIDEwOCwgNjksIDE3LCAxNDcsIDY5LCAxNywgMTQ5LCA2OSwgMTcsIDE3MCwgNjksIAorICAgIDE3LCAxOTUsIDY5LCAxNywgMjEzLCAxMTEsIDY5LCAxNywgMTk5LCA2OSwgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjcsIDg2LCAKKyAgICAyMTQsIDE2NywgNjksIDIsIDIxNCwgMTY3LCA2OSwgMTYsIDIyNywgNDQsIDY5LCAxNiwgMjQ1LCAyMjcsIDY5LCAxNiwgCisgICAgMjUxLCA4NSwgNjksIDE2LCAyMzgsIDE3NCwgNjksIDEsIDIxMywgOTAsIDY5LCAxLCAyMTEsIDE2NCwgNjksIDEsIDEyNSwgCisgICAgMTQ2LCA2OSwgMSwgMTI1LCAyMTUsIDE4NiwgNjksIDEsIDEyNSwgMTU5LCA2OSwgMSwgMTI1LCAyMjcsIDc4LCA2OSwgMjIsIAorICAgIDIsIDEyNSwgMTQ2LCA2OSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDY5LCAyMiwgMiwgMTI1LCAxNTksIDY5LCAyMiwgMiwgCisgICAgMTI1LCAyMjcsIDc4LCA2OSwgMSwgMjI0LCA1NSwgMjIyLCAyMDMsIDY5LCAxLCAyMjQsIDU1LCAyMzAsIDE0OSwgNjksIDEsIAorICAgIDIyNCwgNTUsIDI0OCwgMTk4LCA2OSwgMSwgMjI0LCA1NSwgMjQ4LCAxOTMsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgCisgICAgMjAxLCAyMDEsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMTkyLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDIyOCwgCisgICAgMTEzLCA2OSwgMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIxMywgOTAsIDY5LCAyMiwgMiwgMjEzLCA5NiwgMjI5LCAyMzcsIAorICAgIDI0MCwgMjM4LCA2OSwgMTQzLCAxMzEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMzcsIDc5LCA2OSwgMTQzLCAxMzEsIDIxMywgCisgICAgOTYsIDIyOSwgMjM3LCAyMjksIDIwMiwgMjE4LCAxODAsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAorICAgIDIwOSwgMTA4LCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMTcsIDE1MiwgNjksIDIyLCAyLCAyMDQsIAorICAgIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDI0MCwgMjM4LCA2OSwgMjIsIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCisgICAgMjA3LCAyNCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNjAsIDY5LCAyLCAyMDQsIDQ0LCAKKyAgICAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU5LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIAorICAgIDE1OCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTcsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIAorICAgIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjIxLCAyMjcsIAorICAgIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDIsIDE3NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgCisgICAgMjI5LCAyMzcsIDIzOCwgODQsIDY5LCAyMiwgMiwgMjM4LCAxODYsIDIyOSwgMjM3LCA3NSwgNjksIDIyLCAyLCAyMjksIAorICAgIDIwNywgMjIwLCA3MywgNjksIDIyLCAyLCAyMjksIDIwNywgNjgsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDI0MSwgMTYxLCA2OSwgCisgICAgMSwgMjEzLCA2NywgMTczLCA2OSwgMSwgMjEzLCA2NywgMjI5LCAxNDQsIDY5LCAxLCAyMTMsIDY3LCAyMzksIDgsIDY5LCAxLCAKKyAgICAyMTMsIDY3LCAyNDcsIDkyLCA2OSwgMSwgMjEzLCA2NywgMjAyLCAxMTYsIDY5LCAxLCAyMTMsIDY3LCAyMjEsIDExLCA2OSwgCisgICAgMSwgMjEzLCA2NywgMjQ0LCAyMTIsIDY5LCAxLCAyMTMsIDY3LCAyMDEsIDIwMSwgNjksIDEsIDIxMywgNjcsIDIxOCwgMjA4LCAKKyAgICA2OSwgMSwgMjEzLCA2NywgMjQwLCAxMDgsIDY5LCAxLCAyMTMsIDY3LCAyNDksIDMyLCA2OSwgMSwgMjEzLCA2NywgMjA5LCAKKyAgICAxMDgsIDY5LCAxLCAyMTMsIDY3LCAxNTIsIDY5LCAxMDksIDIsIDIxMywgNjcsIDE3NCwgMjA0LCAxMTEsIDY5LCAyMiwgMiwgCisgICAgMjEzLCA2NywgMjUyLCAyNSwgNjksIDIyLCAyLCAyMTMsIDY3LCA3NCwgNjksIDIyLCAyLCAyMTMsIDY3LCAxODgsIDU1LCAKKyAgICA2OSwgMjIsIDIsIDIxMywgNjcsIDQ2LCAyMDMsIDEyNCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCAKKyAgICA2NywgMjA4LCAxNTgsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NiwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU1LCA2OSwgMiwgCisgICAgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU4LCA2OSwgMiwgCisgICAgMjEzLCA2NywgMjQ1LCAxNTYsIDI0MSwgOTUsIDIwOCwgMTYxLCA2OSwgMSwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyNDAsIAorICAgIDEwOCwgNjksIDIsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjA4LCAxNTYsIDY5LCAyMTMsIDY3LCAxNywgMjAyLCA4NCwgNjksIAorICAgIDIxMywgNjcsIDE3LCAxMDUsIDY5LCAyMTMsIDY3LCAxNywgMTA4LCA2OSwgMjEzLCA2NywgMTcsIDE0NywgNjksIDIxMywgCisgICAgNjcsIDE3LCAxNDksIDY5LCAyMTMsIDY3LCAxNywgMTcwLCA2OSwgMjEzLCA2NywgMTcsIDE5NSwgNjksIDIxMywgNjcsIDE3LCAKKyAgICAyMTMsIDExMSwgNjksIDIxMywgNjcsIDE3LCAxOTksIDY5LCAyMTMsIDY3LCAxNywgMjIyLCA2MywgNjksIDIsIDIyOSwgCisgICAgMTM3LCAyMDgsIDE2MCwgNjksIDIsIDIyOSwgMTM3LCAyMDgsIDE1OCwgNjksIDIyLCAyLCAyNTEsIDUxLCA2MywgNjksIDIyLCAKKyAgICAyLCAyNTEsIDUxLCAyNTEsIDY0LCA2OSwgMTYsIDIxMywgNjcsIDEwNSwgNjksIDE2LCAyMTMsIDY3LCAyNDAsIDIxMSwgCisgICAgMTE0LCA2LCAxLCAyNTAsIDIzMSwgMTE0LCA2LCAxLCAyNDgsIDI0MiwgMTE0LCA2LCAxLCAyMzgsIDIzNCwgMTE0LCA2LCAxLCAKKyAgICAyNDMsIDkzLCAxMTQsIDYsIDEsIDI0MSwgOTIsIDExNCwgNiwgMSwgMjA1LCAyMTMsIDExNCwgNiwgMSwgMjAyLCA4NywgCisgICAgMTE0LCA2LCAxLCAyMDksIDIzMCwgMTE0LCA2LCAxLCAyMzEsIDQ5LCAxMTQsIDYsIDEsIDIzMCwgNCwgMTE0LCA2LCAxLCAKKyAgICAyMjgsIDIsIDExNCwgNiwgMSwgMjI1LCAxMjIsIDExNCwgNiwgMSwgMjIzLCA3NCwgMTE0LCA2LCAxLCAyMjAsIDMxLCAxMTQsIAorICAgIDYsIDEsIDIxOSwgOTEsIDExNCwgNiwgMSwgMjAyLCA3NiwgMTE0LCA2LCAxLCAyMTYsIDIwMiwgMTE0LCA2LCAxLCAyMTQsIAorICAgIDI0MywgMTE0LCA2LCAxLCAyMDksIDIxOCwgMTE0LCA2LCAxLCAyMDYsIDI1NSwgMTE0LCA2LCAxLCAyMTgsIDIwMCwgMTE0LCAKKyAgICA2LCAxLCAyMjksIDEzMiwgMTE0LCA2LCAxLCAyMzgsIDExMCwgMTE0LCA2LCAxLCAyMTcsIDExMSwgMTE0LCA2LCAxLCAyMTIsIAorICAgIDI1NSwgMTE0LCA2LCAxLCAyNDYsIDEyOSwgMTE0LCA2LCAxLCAyNDcsIDYxLCAxMTQsIDYsIDEsIDIzMCwgMTMzLCAxMTQsIAorICAgIDYsIDEsIDI0NiwgNjgsIDExNCwgNiwgMSwgMjQ2LCAxODMsIDExNCwgNiwgMSwgMjAzLCAxODAsIDExNCwgNiwgMSwgMjMwLCAKKyAgICAxNDYsIDExNCwgNiwgMSwgMjM3LCAxNTQsIDExNCwgNiwgMSwgMjM3LCA2NywgMTE0LCA2LCAxLCAyMzYsIDI1NCwgMTE0LCAKKyAgICA2LCAxLCAyMDQsIDYyLCAxMTQsIDYsIDEsIDIzNywgOTIsIDExNCwgNiwgMSwgMjM2LCAxMzIsIDExNCwgNiwgMSwgMjAyLCAKKyAgICAyNDksIDExNCwgNiwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyNTAsIDIzMSwgMTE0LCAxLCAyNDgsIDI0MiwgMTE0LCAxLCAyMzgsIAorICAgIDIzNCwgMTE0LCAxLCAyNDMsIDkzLCAxMTQsIDEsIDI0MSwgOTIsIDExNCwgMSwgMjA1LCAyMTMsIDExNCwgMSwgMjAyLCA4NywgCisgICAgMTE0LCAxLCAyMDksIDIzMCwgMTE0LCAxLCAyMzEsIDQ5LCAxMTQsIDEsIDIzMCwgNCwgMTE0LCAxLCAyMjgsIDIsIDExNCwgCisgICAgMSwgMjI1LCAxMjIsIDExNCwgMSwgMjIzLCA3NCwgMTE0LCAxLCAyMjAsIDMxLCAxMTQsIDEsIDIxOSwgOTEsIDExNCwgMSwgCisgICAgMjAyLCA3NiwgMTE0LCAxLCAyMTYsIDIwMiwgMTE0LCAxLCAyMTQsIDI0MywgMTE0LCAxLCAyMDksIDIxOCwgMTE0LCAxLCAKKyAgICAyMDYsIDI1NSwgMTE0LCAxLCAyMTgsIDIwMCwgMTE0LCAxLCAyMjksIDEzMiwgMTE0LCAxLCAyMzgsIDExMCwgMTE0LCAxLCAKKyAgICAyMTcsIDExMSwgMTE0LCAxLCAyMTIsIDI1NSwgMTE0LCAxLCAyNDYsIDEyOSwgMTE0LCAxLCAyNDcsIDYxLCAxMTQsIDEsIAorICAgIDIzMCwgMTMzLCAxMTQsIDEsIDI0NiwgNjgsIDExNCwgMSwgMjQ2LCAxODMsIDExNCwgMSwgMjAzLCAxODAsIDExNCwgMSwgCisgICAgMjMwLCAxNDYsIDExNCwgMSwgMjM3LCAxNTQsIDExNCwgMSwgMjM3LCA2NywgMTE0LCAxLCAyMzYsIDI1NCwgMTE0LCAxLCAKKyAgICAyMDQsIDYyLCAxMTQsIDEsIDIzNywgOTIsIDExNCwgMSwgMjM2LCAxMzIsIDExNCwgMSwgMjQwLCAyNiwgMTE0LCAxLCAyMDIsIAorICAgIDI0OSwgMTE0LCAxLCAyNDEsIDExMCwgMTE0LCAxLCAyMDcsIDE3NCwgMjM4LCAyMzQsIDExNCwgMSwgMjUxLCA1OSwgMTE0LCAKKyAgICAyMTksIDg5LCAyMTMsIDEzMCwgNjUsIDEsIDExNCwgMjIzLCA3NCwgMTE0LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDIzNywgOTEsIAorICAgIDU0LCAxMTQsIDEsIDIyOCwgMTA0LCA1NCwgMjgsIDEyMywgMjI5LCA1OSwgMjgsIDEyMywgMjExLCAxNTYsIDI4LCAxMjMsIAorICAgIDIyMiwgOTMsIDI4LCAxMjMsIDIwOCwgMjQwLCAyOCwgMTIzLCAyMTEsIDE0NSwgMjgsIDEyMywgMjE2LCA0NywgMjgsIDEyMywgCisgICAgMjI0LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUzLCAyOCwgMTIzLCAyMTEsIDE1MywgMjgsIDEyMywgMjEyLCAxMTEsIDI4LCAKKyAgICAxMjMsIDIxMSwgMTUwLCAyOCwgMTIzLCAyMzEsIDEwNiwgMjgsIDEyMywgMjQ2LCA3NCwgMjgsIDEyMywgMjExLCAxNjAsIAorICAgIDI4LCAxMjMsIDI0NiwgMTM4LCAyOCwgMTIzLCAyMjksIDEyMCwgMjgsIDEyMywgMjA5LCA2NiwgMjgsIDEyMywgMjE4LCAKKyAgICAxOTAsIDI4LCAxMjMsIDIzNiwgMjUxLCAyOCwgMTIzLCAyMjIsIDg5LCAyOCwgMTIzLCAyMTEsIDE1NCwgMjgsIDEyMywgCisgICAgMjIyLCA4MywgMjgsIDEyMywgMjIyLCA4NywgMjgsIDEyMywgMjA4LCAyMzcsIDI4LCAxMjMsIDIxNiwgMzUsIDI4LCAxMjMsIAorICAgIDIxMSwgMTUyLCAyOCwgMTIzLCAyMTYsIDQ1LCAyOCwgMTIzLCAyMjksIDI0MywgMjgsIDEyMywgMjI0LCAxMzQsIDI4LCAKKyAgICAxMjMsIDIyOSwgMjQ2LCAyOCwgMTIzLCAyMTgsIDE0OCwgMjgsIDEyMywgMjE4LCAxNDYsIDI4LCAxMjMsIDIxOCwgMTM0LCAKKyAgICAyOCwgMTIzLCAyMTgsIDE0MiwgMjgsIDEyMywgMjE4LCAxNDAsIDI4LCAxMjMsIDIxOCwgMTM3LCAyOCwgMTIzLCAyMTgsIAorICAgIDEzOSwgMjgsIDEyMywgMjE4LCAxMzYsIDI4LCAxMjMsIDIxOCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MSwgMjgsIDEyMywgCisgICAgMjE4LCAxNTIsIDI4LCAxMjMsIDIxOCwgMTM1LCAyOCwgMTIzLCAyMTgsIDE0NSwgMjgsIDEyMywgMjI5LCAyNDQsIDI4LCAKKyAgICAxMjMsIDIyOSwgMjQyLCAyOCwgMTIzLCAyMTIsIDEwNCwgMjgsIDEyMywgMjEyLCAxMDIsIDI4LCAxMjMsIDIxMiwgOTQsIAorICAgIDI4LCAxMjMsIDIxMiwgOTcsIDI4LCAxMjMsIDIxMiwgMTAzLCAyOCwgMTIzLCAyMTIsIDk5LCAyOCwgMTIzLCAyMTIsIDk4LCAKKyAgICAyOCwgMTIzLCAyMTIsIDk2LCAyOCwgMTIzLCAyMTIsIDEwNywgMjgsIDEyMywgMjEyLCAxMDksIDI4LCAxMjMsIDIxMiwgCisgICAgMTEwLCAyOCwgMTIzLCAyMTIsIDEwNSwgMjgsIDEyMywgMjEyLCA5NSwgMjgsIDEyMywgMjEyLCAxMDAsIDI4LCAxMjMsIAorICAgIDIxMiwgMTA4LCAyOCwgMTIzLCAyNDYsIDEyMCwgMjgsIDEyMywgMjQ2LCAxMTgsIDI4LCAxMjMsIDI0NiwgMjEwLCAyOCwgCisgICAgMTIzLCAyNDYsIDIwOCwgMjgsIDEyMywgMjE5LCAxMDcsIDI4LCAxMjMsIDIzMSwgMTAxLCAyOCwgMTIzLCAyMzEsIDkyLCAKKyAgICAyOCwgMTIzLCAyMzEsIDEwMCwgMjgsIDEyMywgMjMxLCA5NywgMjgsIDEyMywgMjMxLCA5NSwgMjgsIDEyMywgMjMxLCA5OSwgCisgICAgMjgsIDEyMywgMjExLCAxNTcsIDI4LCAxMjMsIDIzMSwgMTA0LCAyOCwgMTIzLCAyMzEsIDEwNSwgMjgsIDEyMywgMjMxLCAKKyAgICA5MywgMjgsIDEyMywgMjMxLCA5OCwgMjgsIDEyMywgMjAzLCAyOSwgMjgsIDEyMywgMjQ2LCA3MywgMjgsIDEyMywgMjQ2LCAKKyAgICAxMjEsIDI4LCAxMjMsIDI0NiwgMTE5LCAyOCwgMTIzLCAyNDYsIDIxMSwgMjgsIDEyMywgMjQ2LCAyMDksIDI4LCAxMjMsIAorICAgIDI0NiwgMTM2LCAyOCwgMTIzLCAyNDYsIDEzNywgMjgsIDEyMywgMjQ2LCAxMjIsIDI4LCAxMjMsIDI0NiwgMjEyLCAyOCwgCisgICAgMTIzLCAyMTgsIDE4OCwgMjgsIDEyMywgMjI5LCAyNDUsIDI4LCAxMjMsIDIxMSwgMTU4LCAyOCwgMTIzLCAyMDMsIDM1LCAKKyAgICAyOCwgMTIzLCAyMjksIDUwLCAyOCwgMTIzLCAyMjIsIDg1LCAyOCwgMTIzLCAyMjIsIDkxLCAyOCwgMTIzLCAyMjIsIDkwLCAKKyAgICAyOCwgMTIzLCAyMDgsIDIzNCwgMjgsIDEyMywgMjQwLCA3LCAyOCwgMTc2LCAyNDAsIDcsIDI4LCAxNzYsIDYzLCAyOCwgCisgICAgMTc2LCAyNTEsIDEwOSwgMjgsIDE3NiwgMTk4LCAyOCwgMTc2LCAyMDMsIDk5LCAyOCwgMTc2LCAyNDEsIDU1LCAyOCwgMTc2LCAKKyAgICA3NCwgMjgsIDE3NiwgMjAzLCAzOSwgMjgsIDE3NiwgMjAzLCA1MiwgMjgsIDE3NiwgNzgsIDI4LCAxNzYsIDIwNCwgMTExLCAKKyAgICAyOCwgMTc2LCAyMDQsIDEwNywgMjgsIDE3NiwgMjIwLCA3MywgMjgsIDE3NiwgMjAyLCAyNDcsIDI4LCAxNzYsIDY4LCAyOCwgCisgICAgMTc2LCAyMDQsIDQ4LCAyOCwgMTc2LCAyMDQsIDYyLCAyOCwgMTc2LCAyMDQsIDMwLCAyOCwgMTc2LCAyMDIsIDIxMywgMjgsIAorICAgIDE3NiwgMjQwLCAyMzgsIDI4LCAxNzYsIDIwMywgMTEsIDI4LCAxNzYsIDc1LCAyOCwgMTc2LCAyNTUsIDIwLCAyOCwgMTc2LCAKKyAgICAyNTUsIDE5LCAyOCwgMTc2LCAyMDMsIDExMywgMjgsIDE3NiwgMjAzLCAxMTEsIDI4LCAxNzYsIDI0MSwgNTMsIDI4LCAxNzYsIAorICAgIDI0MSwgNTIsIDI4LCAxNzYsIDI0MSwgNTQsIDI4LCAxNzYsIDIwMywgMzgsIDI4LCAxNzYsIDIwMywgMzcsIDI4LCAxNzYsIAorICAgIDIyMCwgMTgxLCAyOCwgMTc2LCAyMjAsIDE4MiwgMjgsIDE3NiwgMjIwLCAxNzUsIDI4LCAxNzYsIDIyMCwgMTgwLCAyOCwgCisgICAgMTc2LCAyMjAsIDE3OCwgMjgsIDE3NiwgMjAyLCAyNDEsIDI4LCAxNzYsIDIwMiwgMjQwLCAyOCwgMTc2LCAyMDIsIDIzOSwgCisgICAgMjgsIDE3NiwgMjAyLCAyNDIsIDI4LCAxNzYsIDIwMiwgMjQzLCAyOCwgMTc2LCAyMDcsIDk3LCAyOCwgMTc2LCAyMDcsIDk2LCAKKyAgICAyOCwgMTc2LCAyMDcsIDk0LCAyOCwgMTc2LCAyMDcsIDkwLCAyOCwgMTc2LCAyMDcsIDkxLCAyOCwgMTc2LCAyMDIsIDIxMiwgCisgICAgMjgsIDE3NiwgMjAyLCAyMDksIDI4LCAxNzYsIDIwMiwgMjEwLCAyOCwgMTc2LCAyMDIsIDIwNCwgMjgsIDE3NiwgMjAyLCAKKyAgICAyMDUsIDI4LCAxNzYsIDIwMiwgMjA2LCAyOCwgMTc2LCAyMDIsIDIwOCwgMjgsIDE3NiwgMjQwLCAyMzIsIDI4LCAxNzYsIAorICAgIDI0MCwgMjM0LCAyOCwgMTc2LCAyMDMsIDEwLCAyOCwgMTc2LCAyMzUsIDIwNSwgMjgsIDE3NiwgMjM1LCAxOTcsIDI4LCAKKyAgICAxNzYsIDIzNSwgMjAwLCAyOCwgMTc2LCAyMzUsIDE5OCwgMjgsIDE3NiwgMjM1LCAyMDIsIDI4LCAxNzYsIDIzNSwgMjA0LCAKKyAgICAyOCwgMTc2LCAyNTAsIDEzNywgMjgsIDE3NiwgMjUwLCAxMzQsIDI4LCAxNzYsIDI1MCwgMTMyLCAyOCwgMTc2LCAyNTAsIAorICAgIDEzMywgMjgsIDE3NiwgMjExLCAxNjEsIDI4LCAxNzYsIDI1NSwgMjEsIDI4LCAxNzYsIDIwMywgMTEyLCAyOCwgMTc2LCAKKyAgICAyMDMsIDM2LCAyOCwgMTc2LCAyMjAsIDE3NywgMjgsIDE3NiwgMjIwLCAxNzYsIDI4LCAxMDcsIDIyOSwgNTksIDI4LCAxMDcsIAorICAgIDIxMSwgMTU2LCAyOCwgMTA3LCAyMjksIDUyLCAyOCwgMTA3LCAyMjIsIDkzLCAyOCwgMTA3LCAyMjIsIDkxLCAyOCwgMTA3LCAKKyAgICAyMjIsIDkwLCAyOCwgMTA3LCAyMDgsIDI0MCwgMjgsIDEwNywgMjE2LCA0NywgMjgsIDEwNywgMjE2LCA0MiwgMjgsIDEwNywgCisgICAgMjE2LCAzOSwgMjgsIDEwNywgMjE2LCAzMiwgMjgsIDEwNywgMjE2LCAyNywgMjgsIDEwNywgMjE2LCAyMiwgMjgsIDEwNywgCisgICAgMjE2LCAzMywgMjgsIDEwNywgMjE2LCA0NSwgMjgsIDEwNywgMjI0LCAxNDEsIDI4LCAxMDcsIDIxOCwgMTUzLCAyOCwgMTA3LCAKKyAgICAyMTgsIDE0MiwgMjgsIDEwNywgMjEyLCAxMTEsIDI4LCAxMDcsIDIxMSwgMTUwLCAyOCwgMTA3LCAyMzEsIDEwNiwgMjgsIAorICAgIDEwNywgMjQ2LCA3NCwgMjgsIDEwNywgMjQ2LCAxMzgsIDI4LCAxMDcsIDIyOSwgMTIwLCAyOCwgMTA3LCAyMDksIDY2LCAyOCwgCisgICAgMTA3LCAyMTgsIDE5MCwgMjgsIDEwNywgMjM2LCAyNTEsIDI4LCAxMDcsIDIyOSwgNTMsIDI4LCAxMDcsIDIyOSwgNTEsIDI4LCAKKyAgICAxMDcsIDIyMiwgODksIDI4LCAxMDcsIDIyMiwgODMsIDI4LCAxMDcsIDIyMiwgODUsIDI4LCAxMDcsIDIyMiwgODgsIDI4LCAKKyAgICAxMDcsIDIyMiwgODQsIDI4LCAxMDcsIDIwOCwgMjM3LCAyOCwgMTA3LCAyMDgsIDIzNCwgMjgsIDEwNywgMjE2LCA0MCwgMjgsIAorICAgIDEwNywgMjE2LCAzNSwgMjgsIDEwNywgMjE2LCAyMSwgMjgsIDEwNywgMjE2LCAyMCwgMjgsIDEwNywgMjExLCAxNTIsIDI4LCAKKyAgICAxMDcsIDIxNiwgMzcsIDI4LCAxMDcsIDIxNiwgMzYsIDI4LCAxMDcsIDIxNiwgMjksIDI4LCAxMDcsIDIxNiwgMzEsIDI4LCAKKyAgICAxMDcsIDIxNiwgNDQsIDI4LCAxMDcsIDIxNiwgMjQsIDI4LCAxMDcsIDIxNiwgMzQsIDI4LCAxMDcsIDIxNiwgNDMsIDI4LCAKKyAgICAxMDcsIDIxNiwgMTksIDI4LCAxMDcsIDIyNCwgMTM3LCAyOCwgMTA3LCAyMjQsIDEzMiwgMjgsIDEwNywgMjI0LCAxMzQsIAorICAgIDI4LCAxMDcsIDIyNCwgMTMxLCAyOCwgMTA3LCAyMjQsIDEyOSwgMjgsIDEwNywgMjI0LCAxMzUsIDI4LCAxMDcsIDIyNCwgCisgICAgMTQwLCAyOCwgMTA3LCAyMjQsIDEzOCwgMjgsIDEwNywgMjI5LCAyNDYsIDI4LCAxMDcsIDIxOCwgMTQ0LCAyOCwgMTA3LCAKKyAgICAyMTgsIDE0NSwgMjgsIDEwNywgMjE4LCAxNTAsIDI4LCAxMDcsIDIyOSwgMjQ0LCAyOCwgMTA3LCAyMTIsIDEwNCwgMjgsIAorICAgIDEwNywgMjEyLCA5NCwgMjgsIDEwNywgMjEyLCA5NywgMjgsIDEwNywgMjEyLCA5OSwgMjgsIDEwNywgMjE5LCAxMDcsIDI4LCAKKyAgICAxMDcsIDIzMSwgMTAxLCAyOCwgMTA3LCAyMzEsIDk0LCAyOCwgMTA3LCAyMTEsIDE1NywgMjgsIDEwNywgMjMxLCAxMDIsIAorICAgIDI4LCAxMDcsIDIwMywgMjksIDI4LCAxMDcsIDIwMywgMjUsIDI4LCAxMDcsIDIwMywgMjYsIDI4LCAxMDcsIDIxOCwgMTg4LCAKKyAgICAyOCwgMTA3LCAyMjksIDI0NSwgMjgsIDEwNywgMjM2LCAyNDksIDI4LCAxMDcsIDIzNiwgMjQ3LCAyOCwgMTA3LCAyMzYsIAorICAgIDI1MCwgMjgsIDEwNywgMjM2LCAyNDgsIDI4LCAxMDcsIDIwMywgMzUsIDI4LCAxMDcsIDIyOSwgNTUsIDI4LCAxMDcsIDIyOSwgCisgICAgNTQsIDI4LCAxMDcsIDIyOSwgNTgsIDI4LCAxMDcsIDIyOSwgNTYsIDI4LCAxMDcsIDIyOSwgNTcsIDI4LCAxMDcsIDIxMSwgCisgICAgMTU0LCAzMywgNCwgMTUyLCAzMywgNCwgMjM2LCAyNiwgMzMsIDQsIDIzNywgMywgMzMsIDQsIDIzNywgMTU3LCAzMywgNCwgCisgICAgMjM3LCA0OCwgMzMsIDQsIDIzNywgNjcsIDMzLCA0LCAyMzYsIDEzNiwgMzMsIDQsIDIzNiwgMTM1LCAzMywgNCwgMjI4LCAKKyAgICAxMTMsIDMzLCA0LCAyMjYsIDIzOSwgMzMsIDQsIDIyNywgMTQ4LCAzMywgNCwgMjI4LCAxMTIsIDMzLCA0LCAyMjcsIDIyNiwgCisgICAgMzMsIDQsIDIyNywgMjM0LCAzMywgNCwgMjI3LCA0OSwgMzMsIDQsIDIyNiwgMjA3LCAzMywgNCwgMjM3LCAxMiwgMzMsIDQsIAorICAgIDIzNywgNiwgMzMsIDQsIDIzNywgOCwgMzMsIDQsIDIzNywgMTEsIDMzLCA0LCAyMzcsIDksIDMzLCA0LCAyMzcsIDEwLCAzMywgCisgICAgNCwgMjM3LCA3LCAzMywgNCwgMjM3LCA1LCAzMywgNCwgMTkyLCAzMywgNCwgMjIzLCAyNDYsIDMzLCA0LCAyMjQsIDE1NSwgCisgICAgMzMsIDQsIDIyNSwgMTc1LCAzMywgNCwgMjI1LCA4LCAzMywgNCwgMjI1LCAyMCwgMzMsIDQsIDIyNCwgODIsIDMzLCA0LCAKKyAgICAyMjMsIDE4MCwgMzMsIDQsIDIxMCwgODAsIDMzLCA0LCAyMTAsIDc0LCAzMywgNCwgMjEwLCA3NiwgMzMsIDQsIDIxMCwgNzksIAorICAgIDMzLCA0LCAyMTAsIDc3LCAzMywgNCwgMjEwLCA3OCwgMzMsIDQsIDIxMCwgNzUsIDMzLCA0LCAyMTAsIDczLCAzMywgNCwgCisgICAgMjE2LCAyMjAsIDMzLCA0LCAyMTUsIDE0NSwgMzMsIDQsIDIxNiwgNTcsIDMzLCA0LCAyMTYsIDIxNiwgMzMsIDQsIDIxNiwgCisgICAgMTM1LCAzMywgNCwgMjE2LCAxNTgsIDMzLCA0LCAyMTUsIDIyNywgMzMsIDQsIDIxNSwgMTExLCAzMywgNCwgMjE1LCAzNiwgCisgICAgMzMsIDQsIDIxMSwgMTAsIDMzLCA0LCAyMTIsIDE2MiwgMzMsIDQsIDIxNSwgMzMsIDMzLCA0LCAyMTQsIDE2NSwgMzMsIDQsIAorICAgIDIxNCwgMTc3LCAzMywgNCwgMjEyLCAxMywgMzMsIDQsIDIxMCwgMTcyLCAzMywgNCwgMjEzLCA5MCwgMzMsIDQsIDIxMiwgCisgICAgMTk5LCAzMywgNCwgMjEzLCAxMSwgMzMsIDQsIDIxMywgODUsIDMzLCA0LCAyMTMsIDQxLCAzMywgNCwgMjEzLCA0MywgMzMsIAorICAgIDQsIDIxMiwgMjQyLCAzMywgNCwgMjEyLCAxODAsIDMzLCA0LCAyMTcsIDEyNiwgMzMsIDQsIDIxNywgNjUsIDMzLCA0LCAKKyAgICAyMTcsIDg4LCAzMywgNCwgMjE3LCAxMjUsIDMzLCA0LCAyMTcsIDEwNSwgMzMsIDQsIDIxNywgMTA2LCAzMywgNCwgMjE3LCAKKyAgICA3NywgMzMsIDQsIDIxNywgNzYsIDMzLCA0LCAyMTcsIDE5LCAzMywgNCwgMjE3LCAxNSwgMzMsIDQsIDIxNywgMTgsIDMzLCAKKyAgICA0LCAyMTcsIDE2LCAzMywgNCwgMjE3LCAxNywgMzMsIDQsIDIxNywgMTAyLCAzMywgNCwgMjE3LCA5NCwgMzMsIDQsIDIxNywgCisgICAgOTcsIDMzLCA0LCAyMTcsIDEwMSwgMzMsIDQsIDIxNywgOTgsIDMzLCA0LCAyMTcsIDk5LCAzMywgNCwgMjE3LCA5NiwgMzMsIAorICAgIDQsIDIxNywgOTMsIDMzLCA0LCAyMTcsIDg5LCAzMywgNCwgMjE3LCA5MiwgMzMsIDQsIDIxNywgOTAsIDMzLCA0LCAyMTcsIAorICAgIDkxLCAzMywgNCwgMjQ5LCAzMiwgMzMsIDQsIDI0NywgMTkzLCAzMywgNCwgMjQ4LCA4NiwgMzMsIDQsIDI0OSwgMzAsIDMzLCAKKyAgICA0LCAyNDgsIDE1MCwgMzMsIDQsIDI0OCwgMTYyLCAzMywgNCwgMjQ4LCAyMywgMzMsIDQsIDI0NywgMTQyLCAzMywgNCwgCisgICAgMjA2LCA4NiwgMzMsIDQsIDIwNCwgMTYzLCAzMywgNCwgMjA1LCAyMzAsIDMzLCA0LCAyMDYsIDg1LCAzMywgNCwgMjA2LCAKKyAgICA1MCwgMzMsIDQsIDIwNiwgNTUsIDMzLCA0LCAyMDUsIDE4OSwgMzMsIDQsIDIwNCwgMTU0LCAzMywgNCwgMjEwLCAyMiwgMzMsIAorICAgIDQsIDIwNywgMjAzLCAzMywgNCwgMjA5LCAyLCAzMywgNCwgMjEwLCAxOCwgMzMsIDQsIDIwOSwgMTc2LCAzMywgNCwgMjA5LCAKKyAgICAxODcsIDMzLCA0LCAxMzUsIDMzLCA0LCAyMDcsIDE2MCwgMzMsIDQsIDI0NywgOTIsIDMzLCA0LCAyNDUsIDExMCwgMzMsIDQsIAorICAgIDI0NiwgNzksIDMzLCA0LCAyNDcsIDkxLCAzMywgNCwgMjQ2LCAyMzAsIDMzLCA0LCAyNDYsIDIzOCwgMzMsIDQsIDI0NSwgCisgICAgMjU0LCAzMywgNCwgMjQ1LCA3NCwgMzMsIDQsIDIwMywgMTgyLCAzMywgNCwgMjAzLCAxNTIsIDMzLCA0LCAyMDMsIDE3MCwgCisgICAgMzMsIDQsIDIwMywgMTgxLCAzMywgNCwgMjAzLCAxNzUsIDMzLCA0LCAyMDMsIDE3NiwgMzMsIDQsIDIwMywgMTYwLCAzMywgCisgICAgNCwgMjAzLCAxNTksIDMzLCA0LCAyMDMsIDE0NiwgMzMsIDQsIDIwMywgMTQyLCAzMywgNCwgMjAzLCAxNDUsIDMzLCA0LCAKKyAgICAyMDMsIDE0MywgMzMsIDQsIDIwMywgMTQ0LCAzMywgNCwgMjAxLCAyMDEsIDMzLCA0LCAyMjEsIDg0LCAzMywgNCwgMjIyLCAKKyAgICAxMDAsIDMzLCA0LCAyMjMsIDEwNiwgMzMsIDQsIDIyMiwgMjM1LCAzMywgNCwgMjIyLCAyNDAsIDMzLCA0LCAyMjEsIDE5MSwgCisgICAgMzMsIDQsIDIyMSwgMjAsIDMzLCA0LCAyMjEsIDExLCAzMywgNCwgMjIwLCAyMjYsIDMzLCA0LCAyMjAsIDI0OCwgMzMsIDQsIAorICAgIDIyMSwgMTAsIDMzLCA0LCAyMjEsIDAsIDMzLCA0LCAyMjEsIDEsIDMzLCA0LCAyMjAsIDIzMywgMzMsIDQsIDIyMCwgMjE2LCAKKyAgICAzMywgNCwgMjM4LCA0NSwgNjMsIDMzLCA0LCAyMzgsIDQ1LCA2OCwgMzMsIDQsIDIzOCwgNDUsIDc1LCAzMywgNCwgMjM4LCAKKyAgICA0NSwgMjUyLCAyNSwgMzMsIDQsIDIzOCwgNDUsIDI0MSwgMTYxLCAzMywgNCwgMjM4LCA0NSwgNzQsIDMzLCA0LCAyMzgsIAorICAgIDQ1LCA3OCwgMzMsIDQsIDIzOCwgNDUsIDIwNCwgMTExLCAzMywgNCwgMTczLCAzMywgNCwgMjI4LCAyMDksIDMzLCA0LCAKKyAgICAyMjksIDEwMCwgMzMsIDQsIDIzMCwgNDEsIDMzLCA0LCAyMjksIDE5OCwgMzMsIDQsIDIyOSwgMjAxLCAzMywgNCwgMjI5LCAKKyAgICAyNiwgMzMsIDQsIDIyOSwgMjUsIDMzLCA0LCAyMjgsIDE2NywgMzMsIDQsIDIyOCwgMTYwLCAzMywgNCwgMjI4LCAxNjYsIAorICAgIDMzLCA0LCAyMjgsIDE2MSwgMzMsIDQsIDIyOCwgMTYyLCAzMywgNCwgMjI4LCAxNTMsIDMzLCA0LCAyMjgsIDE0NywgMzMsIAorICAgIDQsIDIyOCwgMTQ5LCAzMywgNCwgMjI4LCAxNTIsIDMzLCA0LCAyMjgsIDE1MCwgMzMsIDQsIDIyOCwgMTUxLCAzMywgNCwgCisgICAgMjI4LCAxNDgsIDMzLCA0LCAyMjgsIDE0NiwgMzMsIDQsIDIyOCwgMTQyLCAzMywgNCwgMjI4LCAxNDUsIDMzLCA0LCAyMjgsIAorICAgIDE0MywgMzMsIDQsIDIyOCwgMTQ0LCAzMywgNCwgMjA0LCAxMTEsIDMzLCA0LCAyMDMsIDIxNywgMzMsIDQsIDIwNCwgMzAsIAorICAgIDMzLCA0LCAyMDQsIDExMCwgMzMsIDQsIDIwNCwgNTUsIDMzLCA0LCAyMDQsIDYyLCAzMywgNCwgMjA0LCAwLCAzMywgNCwgCisgICAgMjAzLCAyNTUsIDMzLCA0LCAyMTgsIDE5OSwgNjMsIDMzLCA0LCAyMTgsIDE5OSwgNjgsIDMzLCA0LCAyMTgsIDE5OSwgNzUsIAorICAgIDMzLCA0LCAyMTgsIDE5OSwgMjUyLCAyNSwgMzMsIDQsIDIxOCwgMTk5LCAyNDEsIDE2MSwgMzMsIDQsIDIxOCwgMTk5LCA3NCwgCisgICAgMzMsIDQsIDIxOCwgMTk5LCA3OCwgMzMsIDQsIDIwMiwgMTE2LCAzMywgNCwgMjAyLCA2LCAzMywgNCwgMjAyLCAzOSwgMzMsIAorICAgIDQsIDIwMiwgMTE0LCAzMywgNCwgMjAyLCA5MCwgMzMsIDQsIDIwMiwgOTIsIDMzLCA0LCAyMDIsIDE3LCAzMywgNCwgMjAxLCAKKyAgICAyNDksIDMzLCA0LCAyMDIsIDgwLCAzMywgNCwgMjAyLCA1NywgMzMsIDQsIDIwMiwgNjYsIDMzLCA0LCAyMDIsIDc5LCAzMywgCisgICAgNCwgMjAyLCA3MCwgMzMsIDQsIDIwMiwgNzEsIDMzLCA0LCAyMDIsIDYzLCAzMywgNCwgMjAyLCA0OCwgMzMsIDQsIDE5OCwgCisgICAgMzMsIDQsIDIwMiwgMjEzLCAzMywgNCwgMjAzLCAxMSwgMzMsIDQsIDIwMywgMTEwLCAzMywgNCwgMjAzLCA0OSwgMzMsIDQsIAorICAgIDIwMywgNTIsIDMzLCA0LCAyMDIsIDI0NywgMzMsIDQsIDIwMiwgMjM4LCAzMywgNCwgMjQ0LCAyMTIsIDMzLCA0LCAyNDIsIAorICAgIDQyLCAzMywgNCwgMjQzLCAyMzMsIDMzLCA0LCAyNDQsIDIxMSwgMzMsIDQsIDI0NCwgNjEsIDMzLCA0LCAyNDQsIDc1LCAzMywgCisgICAgNCwgMjQzLCAxMTMsIDMzLCA0LCAyNDIsIDEwLCAzMywgNCwgMjQ0LCAxMjAsIDMzLCA0LCAyNDQsIDg1LCAzMywgNCwgMjQ0LCAKKyAgICA5NywgMzMsIDQsIDI0NCwgMTE5LCAzMywgNCwgMjQ0LCAxMDcsIDMzLCA0LCAyNDQsIDEwOCwgMzMsIDQsIDI0NCwgOTAsIAorICAgIDMzLCA0LCAyNDQsIDc2LCAzMywgNCwgMjMwLCAxODEsIDMzLCA0LCAyMzAsIDgyLCAzMywgNCwgMjMwLCAxNDEsIDMzLCA0LCAKKyAgICAyMzAsIDE4MCwgMzMsIDQsIDIzMCwgMTU5LCAzMywgNCwgMjMwLCAxNjEsIDMzLCA0LCAyMzAsIDEwMSwgMzMsIDQsIDIzMCwgCisgICAgNjIsIDMzLCA0LCAyMzksIDgsIDMzLCA0LCAyMzcsIDIzMCwgMzMsIDQsIDIzOCwgODEsIDMzLCA0LCAyMzksIDUsIDMzLCA0LCAKKyAgICAyMzgsIDE4MiwgMzMsIDQsIDIzOCwgMTkwLCAzMywgNCwgMjM4LCAzOSwgMzMsIDQsIDIzOCwgMzgsIDMzLCA0LCAyMzcsIAorICAgIDE5MCwgMzMsIDQsIDIzNywgMTg2LCAzMywgNCwgMjM3LCAxODksIDMzLCA0LCAyMzcsIDE4NywgMzMsIDQsIDIzNywgMTg4LCAKKyAgICAzMywgNCwgMjM4LCAxNTUsIDMzLCA0LCAyMzgsIDEzNSwgMzMsIDQsIDIzOCwgMTQ1LCAzMywgNCwgMjM4LCAxNTQsIDMzLCAKKyAgICA0LCAyMzgsIDE0OSwgMzMsIDQsIDIzOCwgMTUwLCAzMywgNCwgMjM4LCAxMzksIDMzLCA0LCAyMzgsIDEyNCwgMzMsIDQsIAorICAgIDIwOSwgMTA4LCAzMywgNCwgMjA5LCAyMiwgMzMsIDQsIDIwOSwgNzAsIDMzLCA0LCAyMDksIDEwNywgMzMsIDQsIDIwOSwgCisgICAgOTAsIDMzLCA0LCAyMDksIDkyLCAzMywgNCwgMjA5LCA0NywgMzMsIDQsIDIwOSwgMTMsIDMzLCA0LCAyNDYsIDE5OSwgMzMsIAorICAgIDQsIDI0NiwgOTgsIDMzLCA0LCAyNDYsIDE0MiwgMzMsIDQsIDI0NiwgMTk4LCAzMywgNCwgMjQ2LCAxNjYsIDMzLCA0LCAKKyAgICAyNDYsIDE3MCwgMzMsIDQsIDI0NiwgMTE2LCAzMywgNCwgMjQ2LCA4NywgMzMsIDQsIDIxOCwgMjA4LCAzMywgNCwgMjE4LCAKKyAgICAxNzMsIDMzLCA0LCAyMTgsIDE5MiwgMzMsIDQsIDIxOCwgMjA3LCAzMywgNCwgMjE4LCAxOTQsIDMzLCA0LCAyMTgsIDE5NSwgCisgICAgMzMsIDQsIDIxOCwgMTgwLCAzMywgNCwgMjE4LCAxNjksIDMzLCA0LCAyMDgsIDIwLCAzMywgNCwgMjA3LCAyNDksIDMzLCA0LCAKKyAgICAyMDcsIDI1NSwgMzMsIDQsIDIwOCwgMTksIDMzLCA0LCAyMDgsIDEzLCAzMywgNCwgMjA4LCAxNCwgMzMsIDQsIDIwNywgCisgICAgMjUzLCAzMywgNCwgMjA3LCAyNDcsIDMzLCA0LCAyMDcsIDEwNiwgMzMsIDQsIDIwNywgOTgsIDMzLCA0LCAyMDcsIDEwMiwgCisgICAgMzMsIDQsIDIwNywgMTA1LCAzMywgNCwgMjA3LCAxMDMsIDMzLCA0LCAyMDcsIDEwNCwgMzMsIDQsIDIwNywgMTAwLCAzMywgCisgICAgNCwgMjA3LCA5OSwgMzMsIDQsIDI0MCwgMTA4LCAzMywgNCwgMjM5LCAxMDgsIDMzLCA0LCAyNDAsIDI2LCAzMywgNCwgMjQwLCAKKyAgICAxMDcsIDMzLCA0LCAyNDAsIDUzLCAzMywgNCwgMjQwLCA2MCwgMzMsIDQsIDIzOSwgMTg2LCAzMywgNCwgMjM5LCA4NiwgMzMsIAorICAgIDQsIDE4NSwgMzMsIDQsIDIxNywgMTkxLCAzMywgNCwgMjE4LCAxNjcsIDMzLCA0LCAyMTksIDE2OCwgMzMsIDQsIDIxOSwgCisgICAgMjMsIDMzLCA0LCAyMTksIDM0LCAzMywgNCwgMjE4LCA2OSwgMzMsIDQsIDIxNywgMTUyLCAzMywgNCwgMjE1LCAxMDEsIDMzLCAKKyAgICA0LCAyMjMsIDE2OSwgMzMsIDQsIDIzOSwgODAsIDMzLCAzOSwgMjM4LCAxNzksIDI1LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgCisgICAgMzksIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAzOSwgMjM4LCAxNzksIDgyLCAzMywgMjE0LCAxNjgsIDgyLCAzMywgMjAzLCAKKyAgICAyMzcsIDMzLCAyMzksIDEwMiwgMjExLCA2MSwgMzMsIDI0NSwgMjMzLCAzMywgMjEzLCAxNDMsIDMzLCAyNDUsIDI0MiwgMzMsIAorICAgIDIxNywgMjQ2LCAyNDUsIDI0MiwgMzMsIDIxNywgNDcsIDgyLCAzMywgMjE5LCA4OSwgMjEzLCAxMzAsIDMzLCAxNywgMTA1LCAKKyAgICAzMywgMTcsIDEwOCwgMzMsIDE3LCAxNDcsIDMzLCAxNywgMTQ5LCAzMywgMTcsIDE3MCwgMzMsIDE3LCAxOTUsIDMzLCAxNywgCisgICAgMjEzLCAxMTEsIDMzLCAxNywgMTk5LCAzMywgMTcsIDIyMiwgNjMsIDMzLCA0MiwgMjA5LCAxNTIsIDMzLCA0MiwgMjA3LCAKKyAgICAxNTEsIDMzLCA0MiwgMjA5LCA1MywgMzMsIDQyLCAyMzksIDE1MywgMzMsIDQyLCAyNDAsIDE4LCAzMywgNDIsIDIxMiwgNzQsIAorICAgIDMzLCA0MiwgMjEzLCAxMDUsIDMzLCA0MiwgMjQxLCAxMzQsIDMzLCA0MiwgMjIyLCA1OCwgMzMsIDQyLCAyMzYsIDExLCAzMywgCisgICAgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAzMywgNCwgMjE0LCAxNzMsIDIyMywgMTgwLCAzMywgNCwgMjIzLCAxNzYsIDMzLCA0LCAKKyAgICAyMjMsIDE3NywgMzMsIDQsIDIyMywgMTc4LCAzMywgNCwgMjE0LCAxNzMsIDI0NywgMTQyLCAzMywgNCwgMjQ3LCAxMzksIAorICAgIDMzLCA0LCAyNDcsIDE0MCwgMzMsIDQsIDI0NywgMTQxLCAzMywgNCwgMjE0LCAxNzMsIDIzOSwgODYsIDMzLCA0LCAyMzksIAorICAgIDgyLCAzMywgNCwgMjM5LCA4MywgMzMsIDQsIDIzOSwgODQsIDMzLCA0LCAyMTQsIDE3MywgMjE3LCAxNTIsIDMzLCA0LCAKKyAgICAyMTcsIDE0OCwgMzMsIDQsIDIxNywgMTQ5LCAzMywgNCwgMjE3LCAxNTAsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMDIsIDI1MCwgCisgICAgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NCwgMjIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAKKyAgICAyMTIsIDIyOCwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjQzLCAyMDcsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjksIAorICAgIDE3OSwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NiwgMTI0LCAzMywgMjA4LCAxNjIsIDEzMSwgMjM3LCAwLCAzMywgMjA4LCAKKyAgICAxNjIsIDEzMSwgMjQ0LCAyMSwgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOCwgMTgxLCA5MCwgMSwgNjMsIDkwLCAxLCA3NCwgOTAsIAorICAgIDEsIDc1LCA5MCwgMSwgNzgsIDkwLCAxLCA2OCwgOTAsIDEsIDIwNiwgMTY0LCA5MCwgMSwgMjM5LCA4LCA5MCwgMSwgMTczLCAKKyAgICA5MCwgMSwgMjM4LCAxOTAsIDkwLCAxLCAyMzgsIDgxLCA5MCwgMSwgMjM4LCAzOSwgOTAsIDEsIDIzNywgMjMwLCA5MCwgMSwgCisgICAgMjM3LCAxOTIsIDkwLCAxLCAxNTIsIDkwLCAxLCAyMzcsIDY3LCA5MCwgMSwgMjM3LCAzLCA5MCwgMSwgMjM2LCAxMzYsIDkwLCAKKyAgICAxLCAyMzYsIDI2LCA5MCwgMSwgMjM1LCAyNTUsIDkwLCAxLCAyMjgsIDExMywgOTAsIDEsIDIyNywgMjM0LCA5MCwgMSwgCisgICAgMjI3LCAxNDgsIDkwLCAxLCAyMjcsIDQ5LCA5MCwgMSwgMjI2LCAyMzksIDkwLCAxLCAyMjYsIDIwOCwgOTAsIDEsIDE5MiwgCisgICAgOTAsIDEsIDIyNSwgMjAsIDkwLCAxLCAyMjQsIDE1NSwgOTAsIDEsIDIyNCwgODIsIDkwLCAxLCAyMjMsIDI0NiwgOTAsIDEsIAorICAgIDIwMSwgMjAxLCA5MCwgMSwgMjM2LCAxNjAsIDkwLCAxLCAyMjMsIDkzLCA5MCwgMSwgMjIyLCAyNDAsIDkwLCAxLCAyMjIsIAorICAgIDEwMCwgOTAsIDEsIDIyMSwgMTkxLCA5MCwgMSwgMjIxLCA4NCwgOTAsIDEsIDIyMSwgMjIsIDkwLCAxLCAyMTcsIDY0LCA5MCwgCisgICAgMSwgMjE3LCA1MCwgOTAsIDEsIDIxNywgNDMsIDkwLCAxLCAyMTcsIDM0LCA5MCwgMSwgMjE3LCAyMywgOTAsIDEsIDIxNywgCisgICAgMjEsIDkwLCAxLCAyMTUsIDM2LCA5MCwgMSwgMTk0LCA5MCwgMSwgMjE0LCAxNzcsIDkwLCAxLCAyMTIsIDE2MiwgOTAsIDEsIAorICAgIDIxMiwgMTMsIDkwLCAxLCAyMTEsIDEwLCA5MCwgMSwgMjEwLCAxNzcsIDkwLCAxLCAyNDQsIDIxMiwgOTAsIDEsIDIxMCwgCisgICAgMjIsIDkwLCAxLCAyNDQsIDc1LCA5MCwgMSwgMjA5LCAxODcsIDkwLCAxLCAyNDMsIDIzMywgOTAsIDEsIDIwOSwgMiwgOTAsIAorICAgIDEsIDI0MywgMTEzLCA5MCwgMSwgMjQyLCA0MiwgOTAsIDEsIDI0MiwgMTMsIDkwLCAxLCAyNDMsIDEyNCwgOTAsIDEsIDIwOCwgCisgICAgMTkwLCA5MCwgMSwgMjA4LCAxODksIDkwLCAxLCAyMDgsIDE3OCwgOTAsIDEsIDIwOCwgMTc3LCA5MCwgMSwgMjA4LCAxNzYsIAorICAgIDkwLCAxLCAyMDgsIDE3NSwgOTAsIDEsIDIwOCwgMjAsIDkwLCAxLCAyMDgsIDE0LCA5MCwgMSwgMjA3LCAyNTUsIDkwLCAxLCAKKyAgICAyMDcsIDI1MywgOTAsIDEsIDIwNywgMjQ5LCA5MCwgMSwgMjA3LCAyNDgsIDkwLCAxLCAyMDQsIDExMSwgOTAsIDEsIDIwNCwgCisgICAgNjIsIDkwLCAxLCAyMDQsIDMwLCA5MCwgMSwgMjA0LCAwLCA5MCwgMSwgMjAzLCAyMTcsIDkwLCAxLCAyMDMsIDIwNCwgOTAsIAorICAgIDEsIDE5OCwgOTAsIDEsIDIwMywgNTIsIDkwLCAxLCAyMDMsIDExLCA5MCwgMSwgMjAyLCAyNDcsIDkwLCAxLCAyMDIsIDIxMywgCisgICAgOTAsIDEsIDIwMiwgMTc3LCA5MCwgMSwgMjIzLCAxODcsIDkwLCA1LCAxLCAyMDMsIDUyLCA5MCwgNSwgMSwgMjAzLCAxMSwgCisgICAgOTAsIDUsIDEsIDIwMiwgMjQ3LCA5MCwgNSwgMSwgMjAyLCAyMTMsIDkwLCA1LCAxLCAyMDIsIDE3NywgOTAsIDUsIDEsIAorICAgIDIyMywgMTg3LCAxOSwgMjAsIDIzNSwgMjIwLCAxOSwgMjAsIDc0LCAxOSwgMjAsIDI1MSwgMjQ1LCAxOSwgMjAsIDc1LCAxOSwgCisgICAgMjAsIDIzMSwgODMsIDE5LCAyMCwgNzgsIDE5LCAyMCwgMjIwLCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjIwLCAxOCwgMTksIAorICAgIDIwLCA4OCwgMjQxLCAxNjEsIDE5LCAyMCwgODgsIDc1LCAxOSwgMjAsIDYzLCAxOSwgMjAsIDI1MiwgMjUsIDE5LCAyMCwgCisgICAgMjA0LCA2MiwgMTksIDIwLCAxOTYsIDIwNCwgNjIsIDE5LCAyMCwgMjA0LCAzMCwgMTksIDIwLCAxOTYsIDIwNCwgMzAsIDE5LCAKKyAgICAyMCwgMjA0LCAxOSwgMTksIDIwLCAxOTYsIDIwNCwgMTksIDE5LCAyMCwgMjA0LCAwLCAxOSwgMjAsIDE5NiwgMjA0LCAwLCAKKyAgICAxOSwgMjAsIDIwMywgMjQ0LCAxOSwgMjAsIDE5NiwgMjAzLCAyNDQsIDE5LCAyMCwgMjIzLCA2OCwgMjAzLCAyNDQsIDE5LCAKKyAgICAyMCwgMjA0LCAxMTEsIDE5LCAyMCwgMTk2LCAyMDQsIDExMSwgMTksIDIwLCAyMDQsIDExMCwgMTksIDIwLCAxOTYsIDIwNCwgCisgICAgMTEwLCAxOSwgMjAsIDIyMywgNjgsIDIwNCwgMTEwLCAxOSwgMjAsIDI1MSwgNjQsIDE5LCAyMCwgMjAzLCAxMjMsIDIwNCwgCisgICAgMTQ0LCAxOSwgMjAsIDIzOCwgNDUsIDIxMSwgNjEsIDE5LCAyMCwgNDYsIDE2NSwgMTksIDIwLCA0NiwgMjM3LCAyNTMsIDE5LCAKKyAgICAyMCwgNDYsIDI0NywgMjQ4LCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMDgsIDE0NSwgMTYyLCAyMTUsIDI1MiwgMTksIAorICAgIDIwLCA0NiwgNTAsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCA1MiwgMTY1LCAxOSwgCisgICAgMjAsIDQ2LCA1MiwgMjEyLCAyMjgsIDgwLCAyMTEsIDE5LCAxOSwgMjAsIDQ2LCAxMDEsIDI0MywgODUsIDE5LCAyMCwgNDYsIAorICAgIDIxMiwgMjI4LCAyMzYsIDEwNiwgOTUsIDE5LCAyMCwgNDYsIDIxOCwgNzYsIDE5LCAyMCwgNDYsIDEyMSwgMjEwLCAzLCAxOSwgCisgICAgMjAsIDI0MSwgOTIsIDE5LCAyMCwgMjMxLCA0OSwgMTksIDIwLCAyMjAsIDMxLCAxOSwgMjAsIDI1MCwgMjMxLCAxOSwgMjAsIAorICAgIDIxOSwgMzQsIDE5LCAyMCwgMjE5LCAxNjYsIDE5LCAyMCwgMjE4LCAxNjcsIDE5LCAyMCwgMjE4LCAxMjksIDE5LCAyMCwgCisgICAgMjE4LCA2OSwgMTksIDIwLCAyMTgsIDQ1LCAxOSwgMjAsIDIwMywgMTIzLCAyMTgsIDQ1LCAxOSwgMjAsIDg4LCAyMzcsIDQ4LCAKKyAgICAxOSwgMjAsIDg4LCAyMzcsIDMsIDE5LCAyMCwgMTg1LCAxOSwgMjAsIDIxOSwgMTY4LCAxOSwgMjAsIDIxNywgMTUwLCAxOSwgCisgICAgMjAsIDE5NiwgMjE3LCAxNTAsIDE5LCAyMCwgMjE3LCAxNDgsIDE5LCAyMCwgMTk2LCAyMTcsIDE0OCwgMTksIDIwLCAyMTcsIAorICAgIDE0NywgMTksIDIwLCAxOTYsIDIxNywgMTQ3LCAxOSwgMjAsIDIxNywgMTQ1LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDUsIDE5LCAKKyAgICAyMCwgMjE3LCAxNDQsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NCwgMTksIDIwLCAyMTcsIDE1MiwgMTksIDIwLCAxOTYsIDIxNywgCisgICAgMTUyLCAxOSwgMjAsIDIxNywgMTUxLCAxOSwgMjAsIDE5NiwgMjE3LCAxNTEsIDE5LCAyMCwgMjAzLCAxMjMsIDIxNywgMTUxLCAKKyAgICAxOSwgMjAsIDIxOSwgMTg0LCAxOSwgMjAsIDE5NiwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMTcxLCAxOSwgMjAsIAorICAgIDIwOSwgMTg3LCAxOSwgMjAsIDIxMCwgMTYsIDE5LCAyMCwgMjA5LCAyLCAxOSwgMjAsIDIwOCwgMjQyLCAxOSwgMjAsIDEzNSwgCisgICAgMTksIDIwLCAyMDgsIDE0OCwgMTksIDIwLCAyMDMsIDEyMywgMjA4LCAxNDgsIDE5LCAyMCwgODgsIDI0NCwgNjEsIDE5LCAKKyAgICAyMCwgODgsIDI0MywgMjMzLCAxOSwgMjAsIDIxMCwgMjIsIDE5LCAyMCwgMjEwLCAxOCwgMTksIDIwLCAyMDcsIDE1OCwgMTksIAorICAgIDIwLCAxOTYsIDIwNywgMTU4LCAxOSwgMjAsIDIwNywgMTQwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNDAsIDE5LCAyMCwgMjA3LCAKKyAgICAxMzksIDE5LCAyMCwgMTk2LCAyMDcsIDEzOSwgMTksIDIwLCAxMDgsIDE5LCAyMCwgMTk2LCAxMDgsIDE5LCAyMCwgMjA3LCAKKyAgICAxMzAsIDE5LCAyMCwgMTk2LCAyMDcsIDEzMCwgMTksIDIwLCAyMDcsIDE2MCwgMTksIDIwLCAxOTYsIDIwNywgMTYwLCAxOSwgCisgICAgMjAsIDIwNywgMTU5LCAxOSwgMjAsIDE5NiwgMjA3LCAxNTksIDE5LCAyMCwgMjIzLCA2OCwgMjA3LCAxNTksIDE5LCAyMCwgCisgICAgMjEwLCA2OSwgMTksIDIwLCAyMDcsIDIzNiwgMTksIDIwLCAyMDcsIDIyMCwgMTksIDIwLCAyMDcsIDIxOCwgMTksIDIwLCAKKyAgICAyMDcsIDI0MSwgMTksIDIwLCAyMjksIDIwMSwgMTksIDIwLCAyMzAsIDM2LCAxOSwgMjAsIDIyOSwgMTAwLCAxOSwgMjAsIAorICAgIDIyOSwgODcsIDE5LCAyMCwgMjI5LCAyNiwgMTksIDIwLCAyMjksIDYsIDE5LCAyMCwgMjAzLCAxMjMsIDIyOSwgNiwgMTksIAorICAgIDIwLCAxNzMsIDE5LCAyMCwgMjMwLCA0MSwgMTksIDIwLCAyMjgsIDE2MiwgMTksIDIwLCAxOTYsIDIyOCwgMTYyLCAxOSwgCisgICAgMjAsIDIyOCwgMTYwLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjAsIDE5LCAyMCwgMjI4LCAxNTksIDE5LCAyMCwgMTk2LCAyMjgsIAorICAgIDE1OSwgMTksIDIwLCAyMjgsIDE1NywgMTksIDIwLCAxOTYsIDIyOCwgMTU3LCAxOSwgMjAsIDIyOCwgMTU2LCAxOSwgMjAsIAorICAgIDE5NiwgMjI4LCAxNTYsIDE5LCAyMCwgMjI4LCAxNjcsIDE5LCAyMCwgMTk2LCAyMjgsIDE2NywgMTksIDIwLCAyMjgsIDE2NiwgCisgICAgMTksIDIwLCAxOTYsIDIyOCwgMTY2LCAxOSwgMjAsIDIyMywgNjgsIDIyOCwgMTY2LCAxOSwgMjAsIDIzMCwgNTQsIDE5LCAKKyAgICAyMCwgMjI4LCAxNjgsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgMTkxLCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDg4LCAxOSwgCisgICAgMjAsIDIxMSwgMjM3LCAyMjksIDIwLCAxOSwgMjAsIDIxMSwgMjM3LCAyMzAsIDIwLCAxOSwgMjAsIDI0NiwgMjM4LCAxOSwgCisgICAgMjAsIDI0NywgOTAsIDE5LCAyMCwgMjQ2LCA3OSwgMTksIDIwLCAyNDYsIDY5LCAxOSwgMjAsIDI0NSwgMjU0LCAxOSwgMjAsIAorICAgIDI0NSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyNDUsIDE4MCwgMTksIDIwLCAyNDcsIDkyLCAxOSwgMjAsIDI0NywgOTEsIAorICAgIDE5LCAyMCwgMjQ1LCA3MiwgMTksIDIwLCAxOTYsIDI0NSwgNzIsIDE5LCAyMCwgMjQ1LCA3MCwgMTksIDIwLCAxOTYsIDI0NSwgCisgICAgNzAsIDE5LCAyMCwgMjQ1LCA2OSwgMTksIDIwLCAxOTYsIDI0NSwgNjksIDE5LCAyMCwgMjQ1LCA2OCwgMTksIDIwLCAxOTYsIAorICAgIDI0NSwgNjgsIDE5LCAyMCwgMjQ1LCA2NywgMTksIDIwLCAxOTYsIDI0NSwgNjcsIDE5LCAyMCwgMjQ1LCA3NCwgMTksIDIwLCAKKyAgICAxOTYsIDI0NSwgNzQsIDE5LCAyMCwgMjQ1LCA3MywgMTksIDIwLCAxOTYsIDI0NSwgNzMsIDE5LCAyMCwgMjIzLCA2OCwgCisgICAgMjQ1LCA3MywgMTksIDIwLCAyNDcsIDEyNSwgMTksIDIwLCAyMTQsIDIwNiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI1LCAyMCwgCisgICAgMTksIDIwLCAyMjUsIDE3NCwgMTksIDIwLCAyMjQsIDE1NSwgMTksIDIwLCAyMjQsIDEyNSwgMTksIDIwLCAyMjQsIDgyLCAKKyAgICAxOSwgMjAsIDIyNCwgMzUsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNCwgMzUsIDE5LCAyMCwgMTkyLCAxOSwgMjAsIDIyNSwgCisgICAgMTc1LCAxOSwgMjAsIDIyMywgMTc4LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzgsIDE5LCAyMCwgMjIzLCAxNzYsIDE5LCAyMCwgCisgICAgMTk2LCAyMjMsIDE3NiwgMTksIDIwLCAyMjMsIDE3NSwgMTksIDIwLCAxOTYsIDIyMywgMTc1LCAxOSwgMjAsIDIyMywgMTc0LCAKKyAgICAxOSwgMjAsIDE5NiwgMjIzLCAxNzQsIDE5LCAyMCwgMjIzLCAxNzMsIDE5LCAyMCwgMTk2LCAyMjMsIDE3MywgMTksIDIwLCAKKyAgICAyMjMsIDE4MCwgMTksIDIwLCAxOTYsIDIyMywgMTgwLCAxOSwgMjAsIDIyMywgMTc5LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzksIAorICAgIDE5LCAyMCwgMjIzLCA2OCwgMjIzLCAxNzksIDE5LCAyMCwgMjI2LCAxODUsIDE5LCAyMCwgMTk2LCAyMjYsIDE4NSwgMTksIAorICAgIDIwLCAyMjQsIDE1OSwgMTksIDIwLCAyNTAsIDQ4LCAyMjYsIDE4NSwgMTksIDIwLCAyMTQsIDIwNiwgMjI2LCAxODUsIDE5LCAKKyAgICAyMCwgMjIyLCAyNDAsIDE5LCAyMCwgMjIzLCAxMDUsIDE5LCAyMCwgMjIyLCAxMDAsIDE5LCAyMCwgMjIyLCA3NSwgMTksIAorICAgIDIwLCAyMjEsIDE5MSwgMTksIDIwLCAyMjEsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjIxLCAxODAsIDE5LCAyMCwgMjAxLCAKKyAgICAyMDEsIDE5LCAyMCwgMjIzLCAxMDYsIDE5LCAyMCwgMjIxLCAxOCwgMTksIDIwLCAxOTYsIDIyMSwgMTgsIDE5LCAyMCwgCisgICAgMjIxLCAyMCwgMTksIDIwLCAxOTYsIDIyMSwgMjAsIDE5LCAyMCwgMjIxLCAxOSwgMTksIDIwLCAxOTYsIDIyMSwgMTksIDE5LCAKKyAgICAyMCwgMjIzLCA2OCwgMjIxLCAxOSwgMTksIDIwLCAyMjMsIDE2MywgMTksIDIwLCA4OCwgMjIyLCAyMDUsIDE5LCAyMCwgCisgICAgMjIyLCAxMDUsIDE5LCAyMCwgMjI3LCAyMzQsIDE5LCAyMCwgMjI4LCAxMTEsIDE5LCAyMCwgMjI3LCAxNDgsIDE5LCAyMCwgCisgICAgMjI3LCAxMzAsIDE5LCAyMCwgMjI3LCA0OSwgMTksIDIwLCAyMjcsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjcsIDE4LCAKKyAgICAxOSwgMjAsIDIyOCwgMTEzLCAxOSwgMjAsIDIyOCwgMTEyLCAxOSwgMjAsIDIyNiwgMjA1LCAxOSwgMjAsIDE5NiwgMjI2LCAKKyAgICAyMDUsIDE5LCAyMCwgMjI2LCAyMDQsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNCwgMTksIDIwLCAyMjYsIDIwMywgMTksIDIwLCAKKyAgICAxOTYsIDIyNiwgMjAzLCAxOSwgMjAsIDIyNiwgMjAyLCAxOSwgMjAsIDE5NiwgMjI2LCAyMDIsIDE5LCAyMCwgMjI2LCAyMDEsIAorICAgIDE5LCAyMCwgMTk2LCAyMjYsIDIwMSwgMTksIDIwLCAyMjYsIDIwNywgMTksIDIwLCAxOTYsIDIyNiwgMjA3LCAxOSwgMjAsIAorICAgIDIyNiwgMjA2LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDYsIDE5LCAyMCwgMTU5LCAxOSwgMjAsIDE5NiwgMTU5LCAxOSwgMjAsIAorICAgIDE3NCwgMTU5LCAxOSwgMjAsIDIxNCwgMTc3LCAxOSwgMjAsIDIxNSwgMzEsIDE5LCAyMCwgMjEyLCAxNjIsIDE5LCAyMCwgCisgICAgMjEyLCAxNDIsIDE5LCAyMCwgMjEyLCAxMywgMTksIDIwLCAyMTEsIDI1MCwgMTksIDIwLCAyMDMsIDEyMywgMjExLCAyNTAsIAorICAgIDE5LCAyMCwgMjE1LCAzNiwgMTksIDIwLCAyMTUsIDMzLCAxOSwgMjAsIDIxMCwgMTY4LCAxOSwgMjAsIDE5NiwgMjEwLCAKKyAgICAxNjgsIDE5LCAyMCwgMjEwLCAxNjIsIDE5LCAyMCwgMTk2LCAyMTAsIDE2MiwgMTksIDIwLCAyMTAsIDE2MSwgMTksIDIwLCAKKyAgICAxOTYsIDIxMCwgMTYxLCAxOSwgMjAsIDIxMCwgMTU3LCAxOSwgMjAsIDE5NiwgMjEwLCAxNTcsIDE5LCAyMCwgMjEwLCAxNTYsIAorICAgIDE5LCAyMCwgMTk2LCAyMTAsIDE1NiwgMTksIDIwLCAyMTAsIDE3MiwgMTksIDIwLCAxOTYsIDIxMCwgMTcyLCAxOSwgMjAsIAorICAgIDIxMCwgMTcxLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzEsIDE5LCAyMCwgMjIzLCA2OCwgMjEwLCAxNzEsIDE5LCAyMCwgMTk0LCAKKyAgICAxOSwgMjAsIDI1MCwgNDgsIDE5NCwgMTksIDIwLCAyMTAsIDE3MywgMTksIDIwLCAyNDgsIDQwLCAxOTQsIDE5LCAyMCwgCisgICAgMjI0LCAyOCwgMjEyLCA3MCwgMTksIDIwLCAyMjMsIDY4LCAyMTIsIDYxLCAxOSwgMjAsIDIyMywgNjgsIDIxNSwgOTIsIDE5LCAKKyAgICAyMCwgMjIzLCA2OCwgMjExLCAxNzksIDE5LCAyMCwgMjIzLCA2OCwgMjExLCAxMywgMTksIDIwLCAyMjMsIDY4LCAyMTIsIAorICAgIDYwLCAxOSwgMjAsIDIyMywgNjgsIDIxNCwgMTgwLCAxOSwgMjAsIDIxMywgNDMsIDE5LCAyMCwgMjEzLCAxMSwgMTksIDIwLCAKKyAgICAyMTMsIDYsIDE5LCAyMCwgMjEyLCAyNDIsIDE5LCAyMCwgMjEyLCAyMzYsIDE5LCAyMCwgMjEzLCA5MCwgMTksIDIwLCAyMTMsIAorICAgIDg1LCAxOSwgMjAsIDIxMiwgMTc3LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzcsIDE5LCAyMCwgMjEyLCAxNzYsIDE5LCAyMCwgCisgICAgMTk2LCAyMTIsIDE3NiwgMTksIDIwLCAyMTIsIDE3NSwgMTksIDIwLCAxOTYsIDIxMiwgMTc1LCAxOSwgMjAsIDIxMiwgMTc0LCAKKyAgICAxOSwgMjAsIDE5NiwgMjEyLCAxNzQsIDE5LCAyMCwgMjEyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMTIsIDE3MywgMTksIDIwLCAKKyAgICAyMTIsIDE4MCwgMTksIDIwLCAxOTYsIDIxMiwgMTgwLCAxOSwgMjAsIDIxMiwgMTc5LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzksIAorICAgIDE5LCAyMCwgMjEzLCA5MiwgMTksIDIwLCAyMDMsIDUyLCAxOSwgMjAsIDIwMywgMTA4LCAxOSwgMjAsIDIwMywgMTEsIDE5LCAKKyAgICAyMCwgMjAzLCAyLCAxOSwgMjAsIDIwMiwgMjQ3LCAxOSwgMjAsIDIwMiwgMjMyLCAxOSwgMjAsIDIwMywgMTIzLCAyMDIsIAorICAgIDIzMiwgMTksIDIwLCAxOTgsIDE5LCAyMCwgMjAzLCAxMTAsIDE5LCAyMCwgMjAyLCAxNzQsIDE5LCAyMCwgMTk2LCAyMDIsIAorICAgIDE3NCwgMTksIDIwLCAyMDIsIDE3MywgMTksIDIwLCAxOTYsIDIwMiwgMTczLCAxOSwgMjAsIDIwMiwgMTcyLCAxOSwgMjAsIAorICAgIDE5NiwgMjAyLCAxNzIsIDE5LCAyMCwgMjAyLCAxNzEsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MSwgMTksIDIwLCAyMDIsIDE3MCwgCisgICAgMTksIDIwLCAxOTYsIDIwMiwgMTcwLCAxOSwgMjAsIDIwMiwgMTc2LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzYsIDE5LCAyMCwgCisgICAgMjAyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NSwgMTksIDIwLCAyMjMsIDY4LCAyMDIsIDE3NSwgMTksIDIwLCAyMDMsIAorICAgIDEyNCwgMTksIDIwLCAyNDgsIDg0LCAyMDMsIDEyNCwgMTksIDIwLCAxOTYsIDIwMywgMTI0LCAxOSwgMjAsIDIxNCwgMjA2LCAKKyAgICAyMDMsIDExLCAxOSwgMjAsIDIxNiwgMTU4LCAxOSwgMjAsIDIxNywgMCwgMjE2LCAxNTgsIDE5LCAyMCwgMTk2LCAyMjcsIAorICAgIDIzNCwgMTksIDIwLCAyMTYsIDIxNSwgMTksIDIwLCAyMTYsIDU3LCAxOSwgMjAsIDIxNiwgMywgMTksIDIwLCAyMTUsIDIyNywgCisgICAgMTksIDIwLCAyMTUsIDIwOCwgMTksIDIwLCAxOTYsIDIyNywgNDksIDE5LCAyMCwgMjE2LCAyMjAsIDE5LCAyMCwgMjE2LCAKKyAgICAyMTYsIDE5LCAyMCwgMTk2LCAyMjgsIDExMywgMTksIDIwLCAyMTUsIDExMCwgMTksIDIwLCAxOTYsIDIxNSwgMTEwLCAxOSwgCisgICAgMjAsIDE0NiwgMTksIDIwLCAxOTYsIDE0NiwgMTksIDIwLCAxNzQsIDE0NiwgMTksIDIwLCAyNDAsIDYwLCAxOSwgMjAsIAorICAgIDI0MCwgMTA1LCAxOSwgMjAsIDI0MCwgMjYsIDE5LCAyMCwgMjQwLCAxMiwgMTksIDIwLCAyMzksIDE4NiwgMTksIDIwLCAKKyAgICAyMzksIDE3NSwgMTksIDIwLCAyNDAsIDEwOCwgMTksIDIwLCAyNDAsIDEwNywgMTksIDIwLCAyMzksIDg1LCAxOSwgMjAsIAorICAgIDE5NiwgMjM5LCA4NSwgMTksIDIwLCAyNDAsIDE3NCwgMTksIDIwLCAyMDksIDkyLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIAorICAgIDkyLCAxOSwgMjAsIDIwOSwgNzAsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCA2NCwgMTksIDIwLCAKKyAgICAyMjMsIDE2MSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDQ3LCAxOSwgMjAsIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDgsIAorICAgIDE5LCAyMCwgMjA5LCAxMDcsIDE5LCAyMCwgMjA5LCAxMiwgMTksIDIwLCAxOTYsIDIwOSwgMTIsIDE5LCAyMCwgMjA5LCAKKyAgICAxMTAsIDE5LCAyMCwgMjA3LCAyMjcsIDE5LCAyMCwgMjA3LCAyMjUsIDE5LCAyMCwgMjA3LCAyMjQsIDE5LCAyMCwgMjA3LCAKKyAgICAyMjksIDE5LCAyMCwgMjA3LCAyMzAsIDE5LCAyMCwgMjA3LCAxMjQsIDE5LCAyMCwgMjA3LCAxMjMsIDE5LCAyMCwgMjA3LCAKKyAgICAxMjIsIDE5LCAyMCwgMjA3LCAxMjYsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCA2NywgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDMsIAorICAgIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAyMzksIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAxMzYsIDE5LCAyMCwgMjIxLCAzOSwgCisgICAgMjM2LCAxMTcsIDE5LCAyMCwgMjIxLCAzOSwgMTUyLCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMTU3LCAxOSwgMjAsIDIyMSwgCisgICAgMzksIDIzNywgMTcxLCAxOSwgMjAsIDIyMSwgMzgsIDIzNywgMTcxLCAxOSwgMjAsIDIzNiwgMjI2LCAxOSwgMjAsIDIxNywgCisgICAgMTIyLCAxOSwgMjAsIDIxNywgODgsIDE5LCAyMCwgMjE3LCA4MywgMTksIDIwLCAyMTcsIDc3LCAxOSwgMjAsIDIxNywgNzIsIAorICAgIDE5LCAyMCwgMjE3LCAxMjYsIDE5LCAyMCwgMjE3LCAxMjUsIDE5LCAyMCwgMjE3LCAxMzQsIDE5LCAyMCwgMjA4LCAxODYsIAorICAgIDE5LCAyMCwgMjA4LCAxODQsIDE5LCAyMCwgMjA4LCAxODMsIDE5LCAyMCwgMjA4LCAxODcsIDE5LCAyMCwgMTk2LCAyMTYsIAorICAgIDE1OCwgMTksIDIwLCAxOTYsIDIxNiwgNTcsIDE5LCAyMCwgMTk2LCAyMTUsIDIyNywgMTksIDIwLCAxOTYsIDIxNiwgMjIwLCAKKyAgICAxOSwgMjAsIDIyMiwgMjAxLCAxOSwgMjAsIDIyMiwgMTUxLCAxOSwgMjAsIDIyMiwgMTQ3LCAxOSwgMjAsIDIyMiwgMTI4LCAKKyAgICAxOSwgMjAsIDIyMiwgMTIzLCAxOSwgMjAsIDIyMiwgMjAzLCAxOSwgMjAsIDIyMiwgMjAyLCAxOSwgMjAsIDIyMiwgMjA1LCAKKyAgICAxOSwgMjAsIDIyMSwgMjIwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDQzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDExLCAKKyAgICAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDI0MiwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA5MCwgMTksIDIwLCAyMDMsIDI0MiwgCisgICAgMjA5LCA5MiwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3MCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA0NywgMTksIDIwLCAKKyAgICAyMDMsIDI0MiwgMjA5LCAxMDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNywgMTU1LCAxOSwgMjAsIAorICAgIDIyNywgMTU0LCAxOSwgMjAsIDIyNywgMTUzLCAxOSwgMjAsIDIyNywgMTUyLCAxOSwgMjAsIDIyNywgMTYxLCAxOSwgMjAsIAorICAgIDIyNywgMTYwLCAxOSwgMjAsIDIyNywgMTYyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDkyLCAxOSwgMjAsIDIwOSwgMTA5LCAKKyAgICAyMDksIDcwLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDQ3LCAxOSwgMjAsIAorICAgIDIwOSwgMTA5LCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDEwOCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAKKyAgICAxMDcsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTEwLCAxOSwgMjAsIDI1MSwgNTAsIDI0OSwgMjU1LCAxOSwgMjAsIDI0OCwgCisgICAgNDAsIDc0LCAxOSwgMjAsIDI0OCwgNDAsIDc1LCAxOSwgMjAsIDI0OCwgNDAsIDc4LCAxOSwgMjAsIDI0OCwgNDAsIDYzLCAKKyAgICAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgNjIsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAzMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIAorICAgIDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxMTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjIyLCAyNDAsIDE5LCAyMCwgMjQ4LCA0MCwgCisgICAgMjIyLCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjIxLCAxOTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjAxLCAyMDEsIDE5LCAyMCwgCisgICAgMjQ4LCA0MCwgMjI5LCAyMDEsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAyNiwgCisgICAgMTksIDIwLCAyNDgsIDQwLCAxNzMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgNjcsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgCisgICAgMywgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDE1MiwgMTksIDIwLCA4OCwgMjM4LCAKKyAgICA4NywgMTksIDIwLCA4OCwgMjM4LCA5MSwgMTksIDIwLCA4OCwgMjM4LCAxMDUsIDE5LCAyMCwgODgsIDIzOCwgMTA0LCAxOSwgCisgICAgMjAsIDg4LCAyMzgsIDkzLCAxOSwgMjAsIDg4LCAyMzgsIDExOSwgMTksIDIwLCA4OCwgMjE1LCAxNDUsIDE5LCAyMCwgODgsIAorICAgIDIxNSwgMjI3LCAxOSwgMjAsIDg4LCAyMTYsIDE1OCwgMTksIDIwLCA4OCwgMjE2LCAxMzUsIDE5LCAyMCwgODgsIDIxNiwgCisgICAgNTcsIDE5LCAyMCwgODgsIDIxNiwgMjIwLCAxOSwgMjAsIDg4LCAyMDMsIDIxNywgMTksIDIwLCA4OCwgMjA0LCAwLCAxOSwgCisgICAgMjAsIDg4LCAyMDQsIDYyLCAxOSwgMjAsIDg4LCAyMDQsIDU1LCAxOSwgMjAsIDg4LCAyMDQsIDMwLCAxOSwgMjAsIDg4LCAKKyAgICAyMDQsIDExMSwgMTksIDIwLCA4OCwgMjM1LCAyNDcsIDE5LCAyMCwgODgsIDIzNSwgMjQ4LCAxOSwgMjAsIDg4LCAyMzUsIAorICAgIDI1MSwgMTksIDIwLCA4OCwgMjM1LCAyNTAsIDE5LCAyMCwgODgsIDIzNSwgMjQ5LCAxOSwgMjAsIDg4LCAyMzUsIDI1NCwgCisgICAgMTksIDIwLCA4OCwgMjA5LCAyMiwgMTksIDIwLCA4OCwgMjA5LCA0NywgMTksIDIwLCA4OCwgMjA5LCA5MiwgMTksIDIwLCAKKyAgICA4OCwgMjA5LCA5MCwgMTksIDIwLCA4OCwgMjA5LCA3MCwgMTksIDIwLCA4OCwgMjA5LCAxMDgsIDE5LCAyMCwgODgsIDIwNywgCisgICAgMjA4LCAxOSwgMjAsIDg4LCAyMDcsIDIxOCwgMTksIDIwLCA4OCwgMjA3LCAyMzYsIDE5LCAyMCwgODgsIDIwNywgMjM1LCAKKyAgICAxOSwgMjAsIDg4LCAyMDcsIDIyMCwgMTksIDIwLCA4OCwgMjA3LCAyNDEsIDE5LCAyMCwgODgsIDIxNywgMTkxLCAxOSwgMjAsIAorICAgIDg4LCAyMTgsIDY5LCAxOSwgMjAsIDg4LCAyMTksIDM0LCAxOSwgMjAsIDg4LCAyMTksIDIzLCAxOSwgMjAsIDg4LCAyMTgsIAorICAgIDE2NywgMTksIDIwLCA4OCwgMTg1LCAxOSwgMjAsIDg4LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAyMzAsIDE5LCAyMCwgCisgICAgODgsIDIzOCwgMzksIDE5LCAyMCwgODgsIDIzOCwgMTkwLCAxOSwgMjAsIDg4LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM4LCAKKyAgICA4MSwgMTksIDIwLCA4OCwgMjM5LCA4LCAxOSwgMjAsIDg4LCAyMjksIDEwOSwgMTksIDIwLCA4OCwgMjI5LCAxMTUsIDE5LCAKKyAgICAyMCwgODgsIDIyOSwgMTI5LCAxOSwgMjAsIDg4LCAyMjksIDEyOCwgMTksIDIwLCA4OCwgMjI5LCAxMjIsIDE5LCAyMCwgODgsIAorICAgIDIyOSwgMTQ0LCAxOSwgMjAsIDg4LCAyMjksIDQyLCAxOSwgMjAsIDg4LCAyMjksIDQzLCAxOSwgMjAsIDg4LCAyMjksIDQ2LCAKKyAgICAxOSwgMjAsIDg4LCAyMjksIDQ1LCAxOSwgMjAsIDg4LCAyMjksIDQ0LCAxOSwgMjAsIDg4LCAyMjksIDQ3LCAxOSwgMjAsIAorICAgIDg4LCAyMjksIDQ4LCAxOSwgMjAsIDg4LCAyMjEsIDg0LCAxOSwgMjAsIDg4LCAyMjEsIDE5MSwgMTksIDIwLCA4OCwgMjIyLCAKKyAgICAyNDAsIDE5LCAyMCwgODgsIDIyMiwgMjM1LCAxOSwgMjAsIDg4LCAyMjIsIDEwMCwgMTksIDIwLCA4OCwgMjAxLCAyMDEsIAorICAgIDE5LCAyMCwgODgsIDIyMywgMjQ2LCAxOSwgMjAsIDg4LCAyMjQsIDgyLCAxOSwgMjAsIDg4LCAyMjUsIDIwLCAxOSwgMjAsIAorICAgIDg4LCAyMjUsIDgsIDE5LCAyMCwgODgsIDIyNCwgMTU1LCAxOSwgMjAsIDg4LCAxOTIsIDE5LCAyMCwgODgsIDIwMiwgMjEzLCAKKyAgICAxOSwgMjAsIDg4LCAyMDIsIDI0NywgMTksIDIwLCA4OCwgMjAzLCA1MiwgMTksIDIwLCA4OCwgMjAzLCA0OSwgMTksIDIwLCAKKyAgICA4OCwgMjAzLCAxMSwgMTksIDIwLCA4OCwgMTk4LCAxOSwgMjAsIDg4LCAyMzAsIDgyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIAorICAgIDgyLCAxOSwgMjAsIDg4LCAyMzAsIDEwMSwgMTksIDIwLCA4OCwgMjMwLCAxNjEsIDE5LCAyMCwgODgsIDIzMCwgMTU5LCAxOSwgCisgICAgMjAsIDg4LCAyMzAsIDE0MSwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAxNDEsIDE5LCAyMCwgODgsIDIzMCwgMTgxLCAxOSwgCisgICAgMjAsIDg4LCAyMzAsIDExNCwgMTksIDIwLCA4OCwgMjMwLCAxMTgsIDE5LCAyMCwgODgsIDIzMCwgMTI4LCAxOSwgMjAsIDg4LCAKKyAgICAyMzAsIDEyNywgMTksIDIwLCA4OCwgMjMwLCAxMjYsIDE5LCAyMCwgODgsIDIzMCwgMTI5LCAxOSwgMjAsIDg4LCAyMjYsIAorICAgIDIzOSwgMTksIDIwLCA4OCwgMjI3LCA0OSwgMTksIDIwLCA4OCwgMjI3LCAyMzQsIDE5LCAyMCwgODgsIDIyNywgMjI2LCAxOSwgCisgICAgMjAsIDg4LCAyMjcsIDE0OCwgMTksIDIwLCA4OCwgMjI4LCAxMTMsIDE5LCAyMCwgODgsIDI0MywgMTE3LCAxOSwgMjAsIDg4LCAKKyAgICAyNDMsIDExOCwgMTksIDIwLCA4OCwgMjQzLCAxMjMsIDE5LCAyMCwgODgsIDI0MywgMTIyLCAxOSwgMjAsIDg4LCAyNDMsIAorICAgIDExOSwgMTksIDIwLCA4OCwgMjQzLCAxMjQsIDE5LCAyMCwgODgsIDIyNywgMTUxLCAxOSwgMjAsIDg4LCAyMjcsIDE1MywgCisgICAgMTksIDIwLCA4OCwgMjI3LCAxNTcsIDE5LCAyMCwgODgsIDIyNywgMTU2LCAxOSwgMjAsIDg4LCAyMjcsIDE1NSwgMTksIDIwLCAKKyAgICA4OCwgMjI3LCAxNjEsIDE5LCAyMCwgODgsIDIwOCwgMTgxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MywgMTksIDIwLCA4OCwgCisgICAgMjA4LCAxODYsIDE5LCAyMCwgODgsIDIwOCwgMTg1LCAxOSwgMjAsIDg4LCAyMDgsIDE4NCwgMTksIDIwLCA4OCwgMjA4LCAKKyAgICAxODcsIDE5LCAyMCwgODgsIDIwOCwgMTc2LCAxOSwgMjAsIDg4LCAyMDgsIDE3NywgMTksIDIwLCA4OCwgMjA4LCAxODksIAorICAgIDE5LCAyMCwgODgsIDIwOCwgMTg4LCAxOSwgMjAsIDg4LCAyMDgsIDE3OCwgMTksIDIwLCA4OCwgMjA4LCAxOTAsIDE5LCAyMCwgCisgICAgODgsIDIwMiwgNiwgMTksIDIwLCA4OCwgMjAyLCAxNywgMTksIDIwLCA4OCwgMjAyLCA5MiwgMTksIDIwLCA4OCwgMjAyLCAKKyAgICA5MCwgMTksIDIwLCA4OCwgMjAyLCAzOSwgMTksIDIwLCA4OCwgMjAyLCAxMTYsIDE5LCAyMCwgODgsIDIwMiwgMTU5LCAxOSwgCisgICAgMjAsIDg4LCA4MSwgMjAyLCAxNTksIDE5LCAyMCwgODgsIDI0MSwgMjQyLCAxOSwgMjAsIDg4LCAyNDEsIDI0MywgMTksIDIwLCAKKyAgICA4OCwgMjQxLCAyNTIsIDE5LCAyMCwgODgsIDI0MSwgMjUxLCAxOSwgMjAsIDg4LCAyNDEsIDI0NiwgMTksIDIwLCA4OCwgCisgICAgMjQxLCAyNTUsIDE5LCAyMCwgODgsIDIxMSwgMTAsIDE5LCAyMCwgODgsIDIxMiwgMTMsIDE5LCAyMCwgODgsIDIxNCwgMTc3LCAKKyAgICAxOSwgMjAsIDg4LCAyMTQsIDE2NSwgMTksIDIwLCA4OCwgMjEyLCAxNjIsIDE5LCAyMCwgODgsIDIxNSwgMzYsIDE5LCAyMCwgCisgICAgODgsIDIxMiwgMTk5LCAxOSwgMjAsIDg4LCAyMTIsIDI0MiwgMTksIDIwLCA4OCwgMjEzLCA0MywgMTksIDIwLCA4OCwgMjEzLCAKKyAgICA0MSwgMTksIDIwLCA4OCwgMjEzLCAxMSwgMTksIDIwLCA4OCwgMjEzLCA5MCwgMTksIDIwLCA4OCwgMjEzLCA5MiwgMTksIAorICAgIDIwLCA4OCwgMjA3LCAyNDksIDE5LCAyMCwgODgsIDIwNywgMjUzLCAxOSwgMjAsIDg4LCAyMDgsIDE0LCAxOSwgMjAsIDg4LCAKKyAgICAyMDgsIDEzLCAxOSwgMjAsIDg4LCAyMDcsIDI1NSwgMTksIDIwLCA4OCwgMjA4LCAyMCwgMTksIDIwLCA4OCwgMjQ2LCA5OCwgCisgICAgMTksIDIwLCA4OCwgMjQ2LCAxMTYsIDE5LCAyMCwgODgsIDI0NiwgMTcwLCAxOSwgMjAsIDg4LCAyNDYsIDE2NiwgMTksIDIwLCAKKyAgICA4OCwgMjQ2LCAxNDIsIDE5LCAyMCwgODgsIDI0NiwgMTk5LCAxOSwgMjAsIDg4LCAyMDcsIDIxMSwgMTksIDIwLCA4OCwgCisgICAgMjA3LCAyMTIsIDE5LCAyMCwgODgsIDIwNywgMjE1LCAxOSwgMjAsIDg4LCAyMDcsIDIxNCwgMTksIDIwLCA4OCwgMjA3LCAKKyAgICAyMTMsIDE5LCAyMCwgODgsIDIwNywgMjE2LCAxOSwgMjAsIDI0NiwgMTQzLCA1NCwgMTksIDIwLCAyMzksIDEwMiwgMjExLCAKKyAgICA2MSwgMTksIDIwLCAyMTcsIDExOCwgMTksIDIwLCAyMjIsIDE5OSwgMTksIDIwLCAyMjEsIDIxNywgMTksIDIwLCAyMjEsIAorICAgIDIxNiwgMTksIDIwLCAyMjEsIDIxNSwgMTksIDIwLCAyMjEsIDIxNCwgMTksIDIwLCAyMjEsIDIxOSwgMTksIDIwLCAyMjEsIAorICAgIDIxOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA5LCAxOSwgMjAsIDIwMywgCisgICAgMjQyLCAyMDksIDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA2LCAxOSwgMjAsIAorICAgIDIwMywgMjQyLCAyMDksIDEzLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEyLCAxOSwgMjAsIDIwMywgMjQyLCA0NiwgMjA5LCAKKyAgICAxMTAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxNDQsIDIyMCwgNjQsIDIxMSwgMjI5LCA4MiwgMjIwLCA2NCwgMSwgMjQ4LCAKKyAgICAxMzIsIDIyMCwgNjQsIDEsIDIyNiwgMjI1LCAyMjAsIDY0LCAxLCAyNDAsIDU3LCAyMjAsIDY0LCAxLCAyMTUsIDE2LCAyMjAsIAorICAgIDY0LCAxLCAyMjIsIDU2LCAyMjAsIDY0LCAxLCAyMDcsIDM2LCAyMjAsIDY0LCAxLCAyNDQsIDE4NiwgMjIwLCA2NCwgMSwgCisgICAgMjA4LCAyMTQsIDIyMCwgNjQsIDEsIDI0NSwgMjQ1LCAyMjAsIDY0LCAxLCAyNDYsIDIyNSwgMjIwLCA2NCwgMSwgMjIzLCAKKyAgICAyMzMsIDIyMCwgNjQsIDEsIDIzOCwgMjAsIDIyMCwgNjQsIDEsIDIyMiwgMTg5LCAyMjAsIDY0LCAxLCAyMTEsIDU0LCAyMjAsIAorICAgIDY0LCAxLCAyMTUsIDEzOCwgMjIwLCA2NCwgMSwgMjUxLCA2MSwgMjIwLCA2NCwgMSwgMjIwLCAyMiwgMjIwLCA2NCwgMSwgCisgICAgMjA2LCAyMTAsIDIyMCwgNjQsIDEsIDI0MSwgMTg3LCAyMjAsIDY0LCAxLCAyMzAsIDIzMywgMjIwLCA2NCwgMSwgMjQxLCAKKyAgICAxODgsIDIyMCwgNjQsIDEsIDIxOSwgMjQ0LCAyMjAsIDY0LCAxLCAyMDcsIDE1LCAyMjAsIDY0LCAxLCAyMzEsIDg5LCAyMjAsIAorICAgIDY0LCAxLCAyNDEsIDE4NSwgMjIwLCA2NCwgMSwgMjE5LCAxMywgMjIwLCA2NCwgMjQwLCA1NiwgODIsIDIyMCwgNjQsIDIxNiwgCisgICAgNzMsIDI0MCwgNTYsIDgyLCAxOTcsIDEsIDI0MCwgNDYsIDI0MCwgMzgsIDI0MCwgNjEsIDI0MCwgMTc0LCAxOTcsIDEsIAorICAgIDIwNiwgMTY0LCAxOTcsIDEsIDIwNiwgMTk1LCAyMDYsIDIxMSwgNjgsIDE5NywgMSwgMjAyLCAyMTYsIDE5NywgMSwgMjAzLCAKKyAgICAxMjQsIDE5NywgMSwgMjA0LCAxNDQsIDE5NywgMSwgMjA5LCAxNSwgMjA5LCAxNCwgMjA5LCA0MCwgMTk3LCAxLCAyNDAsIAorICAgIDI0MywgMTk3LCAxLCAyNTAsIDE5OSwgNjMsIDE5NywgMSwgMjE5LCAyMjgsIDc4LCAxOTcsIDEsIDI1MSwgMTQyLCA2MywgCisgICAgMTk3LCAxLCAyNTEsIDkzLCAxOTcsIDEsIDIyNywgMjQsIDc4LCAxOTcsIDEsIDIxMiwgMjIxLCA3OCwgMTk3LCAxLCA3OCwgCisgICAgMTk3LCAxLCAyMjAsIDczLCAxOTcsIDEsIDIyMCwgMzEsIDE5NywgMSwgMjE2LCAxOTUsIDIxNiwgMjA4LCAyMTYsIDEyMCwgCisgICAgMTQ2LCAxOTcsIDEsIDIyOSwgMjE2LCAxOTcsIDEsIDI0NiwgMjIxLCAxOTcsIDEsIDIyOSwgMjE3LCAyMzAsIDU0LCAxOTcsIAorICAgIDEsIDIzOSwgNzUsIDE5NywgMSwgMjQxLCA3OCwgMTk3LCAxLCAyMzgsIDE4NSwgMjM3LCAxNzcsIDIzOSwgNzUsIDE5NywgMSwgCisgICAgMjM4LCAyMjQsIDE5NywgMSwgMjAzLCAyMDksIDIwMywgMjAwLCAyMDQsIDE0NCwgMTk3LCAxLCAyMzcsIDE0OSwgMjM3LCAKKyAgICAxNzEsIDE5NywgMSwgMjM3LCAxNTMsIDIzNywgMTcxLCAxOTcsIDEsIDIyNywgMjYsIDIzNywgMTcxLCAxOTcsIDEsIDIxMiwgCisgICAgMjI0LCAyMzcsIDE3MSwgMTk3LCAxLCAyMjMsIDYzLCAyMjEsIDIsIDIyMywgNjQsIDIyMywgMTYzLCAxOTcsIDEsIDIxMiwgCisgICAgMjIyLCAyMjMsIDE2MywgMTk3LCAxLCAyNDIsIDgwLCAxOTcsIDEsIDIzMCwgMjEyLCAyMzAsIDIxNiwgMjMwLCAyMDMsIDc1LCAKKyAgICAxOTcsIDEsIDc0LCAxOTcsIDEsIDIzMCwgMTUyLCAyMzAsIDE4NCwgMTk3LCAxLCAyMzgsIDE2OSwgMTk3LCAxLCAyMjcsIAorICAgIDI3LCAyNTEsIDEwOSwgMTk3LCAxLCAyMTIsIDIyNiwgNjMsIDE5NywgMSwgMjMwLCAxOTUsIDI0MSwgNTEsIDE5NywgMSwgCisgICAgMjE4LCAyMjYsIDIxOCwgMjUxLCAyMTksIDE4NCwgMTk3LCAxLCAyNTEsIDIzLCAyNDEsIDQ5LCAxOTcsIDEsIDIxMSwgMjM0LCAKKyAgICAxOTQsIDE5NywgMSwgMjEyLCAxNDYsIDIyNywgMjMsIDE5NCwgMTk3LCAxLCAyMTIsIDIyMCwgMTk0LCAxOTcsIDEsIDI0NywgCisgICAgMTI1LCAxOTcsIDEsIDIwMiwgMTU5LCAxOTcsIDEsIDIwOCwgMTk1LCAyMDgsIDIwNywgMjA3LCAxMDgsIDIxMCwgNjksIAorICAgIDE5NywgMSwgMjEyLCAyMTksIDIxMCwgNjksIDE5NywgMSwgMjQ1LCA1MSwgMTk3LCAxLCAyNDgsIDExMSwgMjQ4LCAxMTQsIAorICAgIDI0OCwgNDYsIDI0OSwgMjU1LCAxOTcsIDEsIDIxMiwgMjI1LCAyNDksIDI1NSwgMTk3LCAxLCAyNDIsIDc5LCAxOTcsIDEsIAorICAgIDIyMCwgMiwgMTk3LCAxLCAyNDEsIDE0NiwgMjQxLCAxNDgsIDc0LCAxOTcsIDEsIDIyNSwgMTEzLCAyMjUsIDEyMywgMjI2LCAKKyAgICAxODUsIDE5NywgMSwgMjI3LCAyNSwgMjI2LCAxODUsIDE5NywgMSwgMjEyLCAyMjMsIDIyNiwgMTg1LCAxOTcsIDEsIDIyNywgCisgICAgMjQ5LCAyMjgsIDkxLCAyMjcsIDM0LCAxNTksIDE5NywgMSwgMjQyLCA4MSwgMTk3LCAxLCAyMzEsIDIzLCAxOTcsIDEsIAorICAgIDIzMSwgMjQsIDE5NywgMSwgMjQ0LCAyMDAsIDI0NCwgMjA2LCAyNDUsIDUxLCAxOTcsIDEsIDIxOSwgMjIyLCAyNDAsIDI0MiwgCisgICAgNzgsIDE5NywgMSwgMjQxLCAxODMsIDE5NywgMSwgMjMwLCAyMzIsIDE5NywgMSwgMjQ1LCA3MSwgMTk3LCAxLCAyNDcsIDc1LCAKKyAgICAxOTcsIDEsIDI0NiwgMjM3LCAxOTcsIDEsIDIxMSwgOTksIDE5NywgMSwgMjI3LCAyMiwgMTk3LCAxLCAyMTIsIDIxOCwgCisgICAgMTk3LCAxLCAyMzUsIDE2MSwgMTk3LCAxLCAyMTcsIDEzNCwgMTk3LCAxLCAyMDMsIDE5NiwgMTk3LCAyMTIsIDEyMCwgMjE3LCAKKyAgICAxNzgsIDE5NywgMjIzLCAyMjYsIDIxNywgMTc4LCAxOTcsIDI0NSwgMTMxLCAyMTcsIDE3OCwgMTk3LCAyNTAsIDEwOCwgOTcsIAorICAgIDE5NywgMjA3LCAxNjIsIDk3LCAxOTcsIDI0OCwgMTMwLCA5NywgMTk3LCAxLCAyMzAsIDU0LCAxOTcsIDEsIDIxMywgOTIsIAorICAgIDE5NywgMSwgMjIwLCAxOCwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjE5LCAyMjcsIDE5NywgMSwgMjM5LCAxMzEsIAorICAgIDI0NywgMjAsIDIzMCwgMjE1LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNDEsIDE0NywgMTk3LCAxLCAyMzksIDEzMSwgCisgICAgMjQ3LCAyMCwgMjUxLCAxNDEsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI1MSwgOTMsIDIwOSwgMjU0LCAxLCA2MywgCisgICAgMjA5LCAyNTQsIDEsIDc1LCAyMDksIDI1NCwgMSwgNjgsIDIwOSwgMjU0LCAxLCAxNzMsIDIwOSwgMjU0LCAxLCAyMzksIDgsIAorICAgIDIwOSwgMjU0LCAxLCAyMjIsIDIwMywgMjA5LCAyNTQsIDEsIDIxMCwgMjIsIDIwOSwgMjU0LCAxLCAyNDQsIDIxMiwgMjA5LCAKKyAgICAyNTQsIDEsIDIwMSwgMjAxLCAyMDksIDI1NCwgMSwgMTg1LCAyMDksIDI1NCwgMSwgMjQ5LCAzMiwgMjA5LCAyNTQsIDEsIAorICAgIDE5MiwgMjA5LCAyNTQsIDEsIDE5OCwgMjA5LCAyNTQsIDEsIDIyOCwgMTEzLCAyMDksIDI1NCwgMSwgMjA0LCAxMTEsIDIwOSwgCisgICAgMjU0LCAxLCAyMTUsIDM2LCAyMDksIDI1NCwgMSwgMTUyLCAyMDksIDI1NCwgMjIsIDIsIDc1LCAyMDksIDI1NCwgMjIsIDIsIAorICAgIDY4LCAyMDksIDI1NCwgMiwgMjA1LCAyMDQsIDIzNywgOTYsIDEsIDYzLCAyMzcsIDk2LCAxLCA3NSwgMjM3LCA5NiwgMSwgCisgICAgNjgsIDIzNywgOTYsIDEsIDE3MywgMjM3LCA5NiwgMSwgMjM5LCA4LCAyMzcsIDk2LCAxLCAyMjIsIDIwMywgMjM3LCA5NiwgCisgICAgMSwgMjEwLCAyMiwgMjM3LCA5NiwgMSwgMjQ0LCAyMTIsIDIzNywgOTYsIDEsIDIwMSwgMjAxLCAyMzcsIDk2LCAxLCAxODUsIAorICAgIDIzNywgOTYsIDEsIDI0OSwgMzIsIDIzNywgOTYsIDEsIDE5MiwgMjM3LCA5NiwgMSwgMTk4LCAyMzcsIDk2LCAxLCAyMTYsIAorICAgIDIyMCwgMjM3LCA5NiwgMSwgMjI4LCAxMTMsIDIzNywgOTYsIDEsIDIwNCwgMTExLCAyMzcsIDk2LCAxLCAyMTUsIDM2LCAKKyAgICAyMzcsIDk2LCAxLCAxNTIsIDIzNywgOTYsIDIyLCAyLCA3NSwgMjM3LCA5NiwgMjIsIDIsIDY4LCAyMzcsIDk2LCAyLCAyMTksIAorICAgIDEyNCwgMjE4LCAxODUsIDIxMiwgMTIwLCAyMTcsIDE3OCwgMjE4LCAxODUsIDUyLCAyMTcsIDE3OCwgMjQ3LCAxODUsIDEsIAorICAgIDYzLCAyNDcsIDE4NSwgMSwgNzUsIDI0NywgMTg1LCAxLCA2OCwgMjQ3LCAxODUsIDEsIDE3MywgMjQ3LCAxODUsIDEsIDIzOSwgCisgICAgOCwgMjQ3LCAxODUsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NSwgMSwgMjEwLCAyMiwgMjQ3LCAxODUsIDEsIDI0NCwgMjEyLCAKKyAgICAyNDcsIDE4NSwgMSwgMjAxLCAyMDEsIDI0NywgMTg1LCAxLCAxODUsIDI0NywgMTg1LCAxLCAyNDksIDMyLCAyNDcsIDE4NSwgCisgICAgMSwgMTkyLCAyNDcsIDE4NSwgMSwgMTk4LCAyNDcsIDE4NSwgMSwgMjE2LCAyMjAsIDI0NywgMTg1LCAxLCAyMjgsIDExMywgCisgICAgMjQ3LCAxODUsIDEsIDIwNCwgMTExLCAyNDcsIDE4NSwgMSwgMjE1LCAzNiwgMjQ3LCAxODUsIDEsIDE1MiwgMjQ3LCAxODUsIAorICAgIDIyLCAyLCA3NSwgMjQ3LCAxODUsIDIyLCAyLCA2OCwgMjA5LCAyNTMsIDEsIDYzLCAyMDksIDI1MywgMSwgNzUsIDIwOSwgCisgICAgMjUzLCAxLCA2OCwgMjA5LCAyNTMsIDEsIDE3MywgMjA5LCAyNTMsIDEsIDIzOSwgOCwgMjA5LCAyNTMsIDEsIDIyMiwgMjAzLCAKKyAgICAyMDksIDI1MywgMSwgMjEwLCAyMiwgMjA5LCAyNTMsIDEsIDI0NCwgMjEyLCAyMDksIDI1MywgMSwgMjAxLCAyMDEsIDIwOSwgCisgICAgMjUzLCAxLCAxODUsIDIwOSwgMjUzLCAxLCAyNDksIDMyLCAyMDksIDI1MywgMSwgMTkyLCAyMDksIDI1MywgMSwgMTk4LCAKKyAgICAyMDksIDI1MywgMSwgMjI4LCAxMTMsIDIwOSwgMjUzLCAxLCAyMDQsIDExMSwgMjA5LCAyNTMsIDEsIDIxNSwgMzYsIDIwOSwgCisgICAgMjUzLCAyMiwgMiwgNzUsIDIwOSwgMjUzLCAyMiwgMiwgNjgsIDg1LCAxLCAxNzMsIDg1LCAxLCAyMjksIDE0NCwgODUsIDEsIAorICAgIDIyOSwgMjYsIDg1LCAxLCAyMjksIDExNSwgODUsIDEsIDIyMiwgMTI4LCA4NSwgMSwgMjQ3LCA5MiwgODUsIDEsIDI0NiwgCisgICAgMTk5LCA4NSwgMSwgMjQ1LCAyNTQsIDg1LCAxLCAyNDYsIDExNiwgODUsIDEsIDIyMCwgMjMzLCA4NSwgMSwgMjQ0LCAyMTIsIAorICAgIDg1LCAxLCAyMDcsIDIyOSwgODUsIDEsIDI0MywgMTEzLCA4NSwgMSwgMjA3LCAyMjQsIDg1LCAxLCAyMjEsIDE5NywgODUsIAorICAgIDEsIDIxMCwgMjIsIDg1LCAxLCAyMDksIDEwOCwgODUsIDEsIDEzNSwgODUsIDEsIDIwOSwgNDcsIDg1LCAxLCAyMjEsIDE5MSwgCisgICAgODUsIDEsIDI0OSwgMzIsIDg1LCAxLCAyMTgsIDIwOCwgODUsIDEsIDIxOCwgNjksIDg1LCAxLCAyMTgsIDE4MCwgODUsIDEsIAorICAgIDIyNCwgODIsIDg1LCAxLCAyMDIsIDI0NywgODUsIDEsIDIxNSwgMjI3LCA4NSwgMSwgMjI3LCA0OSwgODUsIDEsIDIwNSwgCisgICAgMTg5LCA4NSwgMSwgMjEzLCA5MCwgODUsIDEsIDIxMSwgMTI0LCA4NSwgMSwgMjE1LCAzNiwgODUsIDEsIDE1MiwgODUsIDEsIAorICAgIDIyOCwgMTEzLCA4NSwgMSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTIsIDg1LCAyMzEsIDM2LCAyMiwgCisgICAgMjE3LCAxMjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4OCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDgzLCA4NSwgMjMxLCAKKyAgICAzNiwgMjIsIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAzNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDIzLCA4NSwgCisgICAgMjMxLCAzNiwgMjIsIDIxNywgMjIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAKKyAgICA5NSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE5OSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE4OCwgODUsIDIzMSwgMzYsIAorICAgIDIyLCAyMTcsIDEwNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIAorICAgIDEyMSwgMTA1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgMTIxLCAxMDgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAKKyAgICAxMDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUwLCAxNDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUyLCAyNSwgODUsIDIyLCAyLCAyNTIsIAorICAgIDI1LCA4NSwgMjIsIDIsIDc1LCA4NSwgMjIsIDIsIDIzMSwgODMsIDg1LCAyMiwgMiwgMjAzLCAxMjQsIDg1LCAyMiwgMiwgCisgICAgMjAyLCAxNjksIDg1LCAyMiwgMiwgNjgsIDg1LCAyMiwgMiwgMjA2LCAxNzgsIDg1LCAyMiwgMiwgMjA3LCAzOSwgODUsIDIyLCAKKyAgICAyLCAyMjAsIDczLCA4NSwgMjIsIDIsIDE5OCwgODUsIDIyLCAyLCAyMzEsIDExMCwgODUsIDIyLCAyLCA3NCwgODUsIDIyLCAKKyAgICAyLCAyNTEsIDEwOSwgODUsIDIyLCAyLCAyNTEsIDY0LCA4NSwgMjIsIDIsIDIyMCwgMTgsIDg1LCAyMiwgMiwgMjUwLCAzNCwgCisgICAgODUsIDIsIDIyMiwgNzMsIDg1LCAyLCAyMTYsIDE1NiwgODUsIDIsIDIwMiwgMTgwLCA4NSwgMiwgMjIzLCAxOTAsIDg1LCAyLCAKKyAgICAyMDgsIDczLCA4NSwgMiwgMjQ4LCAyMzMsIDg1LCAyLCAyMTUsIDIyMiwgODUsIDIsIDIwOCwgMTcxLCA4NSwgMiwgMjMwLCAKKyAgICAxMSwgODUsIDIsIDI1MSwgNjYsIDg1LCAyLCAyMTQsIDI0NCwgMjE0LCAyMzcsIDg1LCAyLCAyMDUsIDIwMSwgODUsIDIsIAorICAgIDI0NSwgMjQ4LCA4NSwgMiwgMjQ4LCAyMDUsIDg1LCAyLCAyMjksIDEzNiwgODUsIDIsIDI0OCwgMjI4LCA4NSwgMiwgMjQ3LCAKKyAgICA2NCwgMjE4LCAxMzAsIDIyOCwgMTczLCA4NSwgMiwgMjI3LCAyMDMsIDIwOCwgMTQ4LCA4NSwgMiwgMjQ4LCAxMDAsIDg1LCAKKyAgICAyLCAyMTgsIDE4MiwgMjIzLCAyNDMsIDg1LCAyLCAyMjksIDQsIDg1LCAyNDUsIDkyLCAxNiwgMjE2LCA0OSwgODUsIDIsIAorICAgIDI1MCwgMTYsIDg1LCAyLCAyNTAsIDM3LCA4NSwgMTcsIDIwMiwgODQsIDg1LCAxNywgMTA1LCA4NSwgMTcsIDEwOCwgODUsIAorICAgIDE3LCAxNDcsIDg1LCAxNywgMTQ5LCA4NSwgMTcsIDE3MCwgODUsIDE3LCAxOTUsIDg1LCAxNywgMjEzLCAxMTEsIDg1LCAxNywgCisgICAgMTk5LCA4NSwgMTcsIDIyMiwgNjMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxMSwgMjUzLCA4NSwgMTYsIDIyNywgCisgICAgMjAzLCAyNTAsIDM5LCAyMjMsIDIxMCwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxMjksIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDI0OCwgMTMzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyNDcsIDE2NSwgODUsIDE2LCAyMjcsIAorICAgIDIwMywgMjUwLCAzOSwgMjE4LCA3LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEsIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDIxNywgMjU1LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDUsIDg1LCAxNiwgMjI3LCAKKyAgICAyMDMsIDI1MCwgMzksIDIxOCwgMywgOTQsIDI0OCwgNTksIDk0LCAyNDEsIDEwOCwgOTQsIDI0NSwgMjMzLCA5NCwgMjM5LCAKKyAgICAxMDIsIDIxMSwgNjEsIDk0LCAyNDUsIDI0MiwgOTQsIDIzOSwgMTQ3LCAyNDMsIDgzLCA5NCwgMjA4LCAxNzAsIDIxMiwgNywgCisgICAgMjM1LCAyMjAsIDk0LCAyMTIsIDE2MCwgNCwgMjQ3LCAyNDQsIDIyNSwgODgsIDk0LCAyMjUsIDExOSwgMjQ1LCAyMzMsIDk0LCAKKyAgICAyMjUsIDExOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDk0LCAyMjIsIDU0LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgCisgICAgMTA1LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTA4LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTQ3LCAKKyAgICA5NCwgMjIsIDIxMywgMTMwLCA5NCwgMTcsIDIwMiwgODQsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDEwOCwgOTQsIDE3LCAxNDcsIAorICAgIDk0LCAxNywgMTQ5LCA5NCwgMTcsIDE3MCwgOTQsIDE3LCAxOTUsIDk0LCAxNywgMjEzLCAxMTEsIDk0LCAxNywgMTk5LCA5NCwgCisgICAgMTcsIDIyMiwgNjMsIDk0LCAxLCA2MywgOTQsIDEsIDc0LCA5NCwgMSwgNzUsIDk0LCAxLCA3OCwgOTQsIDEsIDY4LCA5NCwgCisgICAgMSwgMjIwLCA3MywgOTQsIDEsIDIwNywgMjQsIDk0LCAxLCAyNDEsIDE2MSwgOTQsIDEsIDIwMSwgMjAxLCA5NCwgMSwgMjUwLCAKKyAgICAyMjMsIDk0LCAxLCAyNDksIDMyLCA5NCwgMSwgMTg1LCA5NCwgMSwgMjE3LCAxMjYsIDk0LCAxLCAyMzksIDgsIDk0LCAxLCAKKyAgICAxOTIsIDk0LCAxLCAyMjgsIDExMywgOTQsIDEsIDIxNSwgMzYsIDk0LCAxLCAyMTMsIDkwLCA5NCwgMSwgMjEwLCAyMiwgOTQsIAorICAgIDEsIDI0NCwgMjEyLCA5NCwgMSwgMjQ2LCAxOTksIDk0LCAxLCAyMzAsIDE4MSwgOTQsIDEsIDE5OCwgOTQsIDEsIDIxNiwgCisgICAgMjIwLCA5NCwgMSwgMjA0LCAxMTEsIDk0LCAxLCAyNDAsIDEwOCwgOTQsIDEsIDE3MywgOTQsIDEsIDIyOSwgMTQ0LCA5NCwgCisgICAgMSwgMjA4LCAyMCwgOTQsIDEsIDIwMiwgMTE2LCA5NCwgMSwgMjM3LCAxNTcsIDk0LCAxLCAyMDIsIDEwLCA5NCwgMSwgMjI3LCAKKyAgICAxNjEsIDk0LCAxLCAyMDIsIDY2LCA5NCwgMSwgMjQ2LCAxNDIsIDk0LCAxLCAyMDgsIDE3MCwgMTYzLCAyMiwgNTQsIDk0LCAKKyAgICAxLCAyMDgsIDE3MCwgNzQsIDk0LCAxLCAyMDgsIDE3MCwgNzUsIDk0LCAxLCAyMDgsIDE3MCwgNzgsIDk0LCAxLCAyMDgsIAorICAgIDE3MCwgNjgsIDk0LCAxLCAyMDgsIDE3MCwgMjIwLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAyMDcsIDI0LCA5NCwgMSwgMjA4LCAKKyAgICAxNzAsIDI1MCwgMjIzLCA5NCwgMSwgMjA4LCAxNzAsIDI0OSwgMzIsIDk0LCAxLCAyMDgsIDE3MCwgMTg1LCA5NCwgMSwgCisgICAgMjA4LCAxNzAsIDIxNywgMTI2LCA5NCwgMSwgMjA4LCAxNzAsIDIzOSwgOCwgOTQsIDEsIDIwOCwgMTcwLCAxOTIsIDk0LCAxLCAKKyAgICAyMDgsIDE3MCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDQsIDIxMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDYsIDE5OSwgCisgICAgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE4MSwgOTQsIDEsIDIwOCwgMTcwLCAyMDgsIDIwLCA5NCwgMSwgMjA4LCAxNzAsIAorICAgIDE5OCwgOTQsIDEsIDIwOCwgMTcwLCAyMDQsIDExMSwgOTQsIDEsIDIwOCwgMTcwLCAxNzMsIDk0LCAxLCAyMDgsIDE3MCwgCisgICAgMjM5LCA1LCA5NCwgMSwgMjA4LCAxNzAsIDIzNywgMTU3LCA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTQwLCA5NCwgMSwgMjA4LCAKKyAgICAxNzAsIDIyMiwgOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjQxLCAyNTUsIDk0LCAxLCAyMTIsIDE2MCwgNzQsIDk0LCAxLCAyMTIsIAorICAgIDE2MCwgNzUsIDk0LCAxLCAyMTIsIDE2MCwgMjMwLCAxOTIsIDk0LCAxLCAyMTIsIDE2MCwgMjA3LCAyNCwgOTQsIDEsIDIxMiwgCisgICAgMTYwLCA2OCwgOTQsIDEsIDIxMiwgMTYwLCAyNTAsIDIyMywgOTQsIDEsIDIxMiwgMTYwLCAxNzMsIDk0LCAxLCAyMTIsIAorICAgIDE2MCwgMjM5LCA4LCA5NCwgMSwgMjEyLCAxNjAsIDE1MiwgOTQsIDEsIDIxMiwgMTYwLCAxODUsIDk0LCAxLCAyMTIsIDE2MCwgCisgICAgMjEzLCA5MCwgOTQsIDEsIDIxMiwgMTYwLCAyMTAsIDIyLCA5NCwgMSwgMjEyLCAxNjAsIDI0NCwgMjEyLCA5NCwgMSwgMjEyLCAKKyAgICAxNjAsIDIzMCwgMTgxLCA5NCwgMSwgMjEyLCAxNjAsIDI0MCwgMTA4LCA5NCwgMSwgMjEyLCAxNjAsIDIzOSwgNSwgOTQsIDEsIAorICAgIDIxMiwgMTYwLCAyMzcsIDE1NywgOTQsIDEsIDIxMiwgMTYwLCAyMDgsIDIwLCA5NCwgMSwgMjEyLCAxNjAsIDIwMiwgMTE2LCAKKyAgICA5NCwgMSwgMjEyLCAxNjAsIDIxNiwgMjE2LCA5NCwgMSwgMjEyLCAxNjAsIDI0NiwgMTk5LCA5NCwgMSwgMjEyLCAxNjAsIAorICAgIDIwMiwgODAsIDk0LCAxLCAyMjUsIDExOSwgNzUsIDk0LCAxLCAyMjUsIDExOSwgMTczLCA5NCwgMSwgMjI1LCAxMTksIDIxNiwgCisgICAgMjIwLCA5NCwgMSwgMjI1LCAxMTksIDI0MCwgMTA4LCA5NCwgMSwgMjI1LCAxMTksIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKKyAgICAyMzgsIDI0NCwgMjUwLCAxODEsIDEwNSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDUsIDIwMCwgMTA1LCA5NCwgMSwgCisgICAgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTc0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMzQsIDk0LCAxLCAKKyAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAyMzksIDIwNywgMzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ4LCAyNDUsIAorICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTI2LCAyNDgsIDI0NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA2MywgCisgICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA3NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNzMsIDk0LCAxLCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDIyOSwgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyNDQsIDEyMCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMjEsIDIyNywgOTQsIDEsIDI1MSwgCisgICAgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjEyLCA5NCwgMSwgMjUxLCAKKyAgICAyMiwgMjM4LCAyNDQsIDE4NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTgsIDIwOCwgOTQsIDEsIDI1MSwgMjIsIAorICAgIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCisgICAgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI1MSwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgCisgICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIAorICAgIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzOCwgMTE5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIAorICAgIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIAorICAgIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAxNDksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKKyAgICAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDEwNCwgOTQsIDEsIDIyNSwgCisgICAgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAKKyAgICAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMjQ1LCA2NSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIAorICAgIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAKKyAgICA2OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIDE5OCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAorICAgIDI0NCwgMjQ4LCA5OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIwMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAorICAgIDIyLCAyMzgsIDI0NCwgMjI3LCAxNjEsIDE5LCAyMCwgMjE5LCAxODgsIDE5LCAyMCwgMjUwLCA4LCAxOSwgMjAsIDI1MSwgCisgICAgMjM2LCAxOSwgMjAsIDIwNCwgNjUsIDE5LCAyMCwgMjE4LCAxMywgMTksIDIwLCAyMTksIDQzLCAxOSwgMjAsIDIxNywgMTQzLCAKKyAgICAxOSwgMjAsIDIwOSwgMTk2LCAxOSwgMjAsIDIyOSwgMjA4LCAxOSwgMjAsIDIyOCwgMTY0LCAxOSwgMjAsIDIyNSwgNjMsIAorICAgIDE5LCAyMCwgMjIxLCAxNDksIDE5LCAyMCwgMjIzLCA1OSwgMTksIDIwLCAyMjcsIDI0NCwgMTksIDIwLCAyMTEsIDIzMiwgCisgICAgMTksIDIwLCAyMTQsIDIwOCwgMTksIDIwLCAyMTIsIDIwNywgMTksIDIwLCAyMTMsIDQ3LCAxOSwgMjAsIDIxMiwgMTcyLCAKKyAgICAxOSwgMjAsIDIwMiwgMjIyLCAxOSwgMjAsIDIwMywgNTgsIDE5LCAyMCwgMjE2LCAxNjUsIDE5LCAyMCwgMjIxLCAxNywgMTksIAorICAgIDIwLCAyMjAsIDUzLCAyMjEsIDE3LCAxOSwgMjAsIDIyMSwgMTYsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNiwgMTksIDIwLCAKKyAgICAyMjEsIDE1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTUsIDE5LCAyMCwgMjIxLCAxNCwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIAorICAgIDE0LCAxOSwgMjAsIDIxNSwgMTA3LCAxOSwgMjAsIDIxNSwgMTA2LCAxOSwgMjAsIDIxNSwgMTA1LCAxOSwgMjAsIDIxNSwgCisgICAgMTA0LCAxOSwgMjAsIDIxNSwgMTAzLCAxOSwgMjAsIDIxNSwgMTExLCAxOSwgMjAsIDIyMCwgNTMsIDIxOSwgMTg0LCAxOSwgCisgICAgMjAsIDIyMCwgNTMsIDIxMCwgNjksIDE5LCAyMCwgMjIwLCA1MywgMjMwLCA1NCwgMTksIDIwLCAyMjAsIDUzLCAyNDcsIAorICAgIDEyNSwgMTksIDIwLCAyMjAsIDUzLCAyMjYsIDE4NSwgMTksIDIwLCAyMjAsIDUzLCAyMjMsIDE2MywgMTksIDIwLCAyMjAsIAorICAgIDUzLCAxOTQsIDE5LCAyMCwgMjIwLCA1MywgMjEzLCA5MiwgMTksIDIwLCAyNDEsIDE3NCwgMjA0LCAxNDQsIDE5LCAyMCwgCisgICAgMjA0LCA0NCwgMjA0LCAxNDQsIDE5LCAyMCwgNDYsIDUsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTYsIDE4OCwgMjQzLCAKKyAgICA4NSwgMTksIDIwLCAyMTcsIDAsIDIxNSwgMTA4LCAxOSwgMjAsIDE5NiwgMjI3LCAxOCwgMTksIDIwLCAxOTYsIDIyOCwgCisgICAgMTEyLCAxOSwgMjAsIDIwOSwgMTEsIDE5LCAyMCwgMjA5LCAxMywgMTksIDIwLCAyMDcsIDIyMSwgMTksIDIwLCAyMDcsIAorICAgIDIyMywgMTksIDIwLCAyMDcsIDIyOCwgMTksIDIwLCAyMDgsIDE4MCwgMTksIDIwLCAyMDgsIDE4MiwgMTksIDIwLCAyMTQsIAorICAgIDIwNiwgMjEyLCAxNzcsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjM2LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDExNywgCisgICAgMTksIDIwLCA4OCwgMjM3LCAxODUsIDE5LCAyMCwgODgsIDI0NCwgMzUsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzksIDUsIAorICAgIDE5LCAyMCwgODgsIDIzNywgMTkwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDY0LCAxOSwgMjAsIDg4LCAyMzAsIDYyLCAxOSwgCisgICAgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNTksIDE5LCAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE0NiwgMTksIDIwLCA4OCwgCisgICAgMjQ0LCAzMCwgMTk0LCAyMjcsIDEyNCwgMjA1LCAxNjksIDIyNywgMTc0LCAyMjcsIDEyNCwgMSwgMTczLCAyMjcsIDEyNCwgCisgICAgMSwgMjI5LCAxNDQsIDIyNywgMTI0LCAxLCAyMzksIDgsIDIyNywgMTI0LCAxLCAyMzgsIDExOSwgMjI3LCAxMjQsIDEsIAorICAgIDIyMiwgMjAzLCAyMjcsIDEyNCwgMSwgMjQ3LCA5MiwgMjI3LCAxMjQsIDEsIDI0NiwgMTk5LCAyMjcsIDEyNCwgMSwgMjMwLCAKKyAgICAxODEsIDIyNywgMTI0LCAxLCAyMzAsIDE0OSwgMjI3LCAxMjQsIDEsIDIwMywgNzgsIDIyNywgMTI0LCAxLCAyMTAsIDIyLCAKKyAgICAyMjcsIDEyNCwgMSwgMjA5LCAxMDgsIDIyNywgMTI0LCAxLCAyNDQsIDIxMiwgMjI3LCAxMjQsIDEsIDI0NCwgMSwgMjI3LCAKKyAgICAxMjQsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgMSwgMTg1LCAyMjcsIDEyNCwgMSwgMjE4LCAyMDgsIDIyNywgMTI0LCAxLCAKKyAgICAyNDksIDMyLCAyMjcsIDEyNCwgMSwgMjQ4LCA5OCwgMjI3LCAxMjQsIDEsIDE5MiwgMjI3LCAxMjQsIDEsIDE5OCwgMjI3LCAKKyAgICAxMjQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMSwgMjI4LCAxMTMsIDIyNywgMTI0LCAxLCAyMDQsIDExMSwgMjI3LCAxMjQsIAorICAgIDEsIDIxMywgOTAsIDIyNywgMTI0LCAxLCAyMTEsIDE2NCwgMjI3LCAxMjQsIDEsIDIxNSwgMzYsIDIyNywgMTI0LCAxLCAKKyAgICAxNTIsIDIyNywgMTI0LCAxLCAyMzcsIDE4MSwgMjI3LCAxMjQsIDEsIDIwOCwgMTE5LCAyMjcsIDEyNCwgMjIsIDIsIDYzLCAKKyAgICAyMjcsIDEyNCwgMjIsIDIsIDc1LCAyMjcsIDEyNCwgMjIsIDIsIDY4LCAyMjcsIDEyNCwgMjIsIDIsIDI0MSwgMTYxLCAyMjcsIAorICAgIDEyNCwgMjIsIDIsIDI1MSwgNjQsIDIyNywgMTI0LCAyMiwgMiwgMjIwLCAxOCwgMjI3LCAxMjQsIDIyLCAyLCAyNTAsIDM0LCAKKyAgICAyMjcsIDEyNCwgMjIsIDIsIDc0LCAyMjcsIDEyNCwgMjIsIDIsIDc4LCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDE5OCwgCisgICAgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjI3LCAKKyAgICAxMjQsIDUsIDEsIDE3MywgMjI3LCAxMjQsIDUsIDEsIDIyMiwgMjAzLCAyMjcsIDEyNCwgNSwgMSwgMjUwLCAxODAsIDIyNywgCisgICAgMTI0LCA1LCAxLCAyMTAsIDIyLCAyMjcsIDEyNCwgNSwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCA1LCAxLCAxODUsIDIyNywgCisgICAgMTI0LCA1LCAxLCAxOTIsIDIyNywgMTI0LCA1LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDUsIDEsIDIyOCwgMTEzLCAyMjcsIAorICAgIDEyNCwgMiwgMjIzLCAyMzEsIDIyNywgMTI0LCAyLCAyMjksIDE4NiwgMjI3LCAxMjQsIDIsIDIxNSwgMzQsIDIyNywgMTI0LCAKKyAgICAyLCAyMjcsIDE4LCAyMjcsIDEyNCwgMjQwLCAyMTIsIDgyLCAyMjcsIDEyNCwgMjE3LCA0NywgODIsIDIyNywgMTI0LCAxNywgCisgICAgMjAyLCA4NCwgMjI3LCAxMjQsIDE3LCAxMDUsIDIyNywgMTI0LCAxNywgMTA4LCAyMjcsIDEyNCwgMTcsIDE0NywgMjI3LCAKKyAgICAxMjQsIDE3LCAxNDksIDIyNywgMTI0LCAxNywgMTcwLCAyMjcsIDEyNCwgMTcsIDE5NSwgMjI3LCAxMjQsIDE3LCAyMTMsIAorICAgIDExMSwgMjI3LCAxMjQsIDE3LCAxOTksIDIyNywgMTI0LCAxNywgMjIyLCA2MywgNDUsIDIyNywgMjM1LCAxLCAxNzMsIDQ1LCAKKyAgICAyMjcsIDIzNSwgMSwgMjAzLCAxODIsIDQ1LCAyMjcsIDIzNSwgMSwgMjIyLCAyMDMsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKKyAgICAyMCwgNDUsIDIyNywgMjM1LCAxLCAyMTUsIDM2LCA0NSwgMjI3LCAyMzUsIDEsIDE5OCwgNDUsIDIyNywgMjM1LCAxLCAyMTAsIAorICAgIDIyLCA0NSwgMjI3LCAyMzUsIDEsIDIwOSwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIyOCwgMTEzLCA0NSwgMjI3LCAyMzUsIAorICAgIDEsIDE4NSwgNDUsIDIyNywgMjM1LCAxLCAyMTgsIDIwOCwgNDUsIDIyNywgMjM1LCAxLCAxOTIsIDQ1LCAyMjcsIDIzNSwgMSwgCisgICAgMjQwLCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA2LCA4NiwgNDUsIDIyNywgMjM1LCAxLCAxNTIsIDQ1LCAyMjcsIDIzNSwgCisgICAgMSwgMjE3LCAxMjYsIDQ1LCAyMjcsIDIzNSwgMSwgMjI5LCAxNDQsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxMCwgNDUsIAorICAgIDIyNywgMjM1LCAxLCAyMDEsIDIwMSwgNDUsIDIyNywgMjM1LCAxLCA2MywgNDUsIDIyNywgMjM1LCAxLCA3NSwgNDUsIDIyNywgCisgICAgMjM1LCAxLCAyNDEsIDE2MSwgNDUsIDIyNywgMjM1LCAxLCAyNDEsIDE0NywgNDUsIDIyNywgMjM1LCAxLCA2OCwgNDUsIAorICAgIDIyNywgMjM1LCAxLCAyMjAsIDE4LCA0NSwgMjI3LCAyMzUsIDEsIDc4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNywgMjQsIDQ1LCAKKyAgICAyMjcsIDIzNSwgMSwgNzQsIDQ1LCAyMjcsIDIzNSwgMSwgMjUwLCAzMiwgNDUsIDIyNywgMjM1LCAxLCAyNTEsIDY0LCA0NSwgCisgICAgMjI3LCAyMzUsIDEsIDIwOCwgMTU5LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU4LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCisgICAgMTU3LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU2LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU1LCAyMjIsIDIxNCwgNDUsIAorICAgIDIyNiwgMjMzLCAxLCAxMzgsIDIxNywgMTI2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNywgMTI2LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIAorICAgIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCisgICAgMTI0LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAzLCAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKKyAgICAyMzMsIDEsIDEyNCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA4LCAyMCwgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTUsIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5OCwgMjIyLCAKKyAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDgsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNSwgCisgICAgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTk4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAorICAgIDIxMCwgMjIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKKyAgICAyMzMsIDEsIDEzOCwgMjAxLCAyMDEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjEwLCAyMiwgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDEsIDIwMSwgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE4LCAKKyAgICAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAorICAgIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTgsIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCisgICAgMTI0LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKKyAgICAyMzMsIDEsIDEzOCwgMjA2LCA4NiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDExMywgMjIyLCAyMTQsIAorICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDYsIDg2LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTEzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAorICAgIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCisgICAgMTM4LCAyNDksIDMyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMSwgMTI0LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDksIDMyLCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgMTQ5LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAorICAgIDIwMywgMTQ5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCisgICAgMSwgMTI0LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMiwgMjEyLCAyMTYsIDIyMiwgMjE0LCAKKyAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTIsIDI1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMxLCA4MywgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDY4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAKKyAgICAxNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAorICAgIDI1MSwgMTA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAKKyAgICAyLCAyMjAsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA3LCAyNCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAorICAgIDIzMywgMjIsIDIsIDI1MCwgOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MSwgMjM2LCAyMjIsIDIxNCwgCisgICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMTksIDE4OCwgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyMCwgOTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKKyAgICAyMDcsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMwLCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAorICAgIDEsIDQ2LCAyMDYsIDE2NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyMiwgMjA1LCAyMjIsIDIxNCwgNDUsIAorICAgIDIyNiwgMjMzLCAxLCA0NiwgMjIzLCAxNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjYsIDE4NSwgMjIyLCAKKyAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIzMCwgNTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDUsIAorICAgIDUxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ5LCAyNTUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgCisgICAgMjI1LCA5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAyMjUsIDkxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKKyAgICAxNywgMjAyLCA4NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDEwNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIAorICAgIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0OSwgCisgICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5NSwgMjIyLCAKKyAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIxMywgMTExLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk5LCAyMjIsIAorICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjIyLCA2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTA0LCAxNywgMTA1LCAKKyAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk2LCAKKyAgICA4NSwgMTYsIDIxOSwgNTEsIDg1LCAxNiwgMjIzLCAyMTEsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAxMzAsIDIyOSwgMjIsIAorICAgIDg1LCAxNiwgMjQ4LCAxMzQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ3LCAxNjYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA4LCAKKyAgICAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDAsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAKKyAgICA2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgNCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE2MSwgMjI5LCAyMiwgODUsIDE2LCAKKyAgICAyNDQsIDE1NywgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NiwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1OSwgMjI5LCAyMiwgCisgICAgODUsIDE2LCAyNDQsIDE1OCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NSwgMjI5LCAyMiwgODUsIDE2LCAyMDcsIDE2NywgCisgICAgODUsIDE2LCAyMjMsIDIxMSwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAxMzAsIDIxNSwgMjIwLCA4NSwgMTYsIDI0OCwgMTM0LCAKKyAgICAyMTUsIDIyMCwgODUsIDE2LCAyNDcsIDE2NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA4LCAyMTUsIDIyMCwgODUsIDE2LCAKKyAgICAyMTgsIDIsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA2LCAyMTUsIDIyMCwgODUsIAorICAgIDE2LCAyMTgsIDQsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTYxLCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NywgMjE1LCAKKyAgICAyMjAsIDg1LCAxNiwgMjQ0LCAxNTYsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU5LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIAorICAgIDE1OCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTUsIDIxNSwgMjIwLCAyNDcsIDE4NiwgMSwgMTczLCAyNDcsIDE4NiwgMSwgCisgICAgMjM5LCA4LCAyNDcsIDE4NiwgMSwgMjIyLCAyMDMsIDI0NywgMTg2LCAxLCAyMjIsIDE0NiwgMjQ3LCAxODYsIDEsIDE4NSwgCisgICAgMjQ3LCAxODYsIDEsIDI0OSwgMzIsIDI0NywgMTg2LCAxLCAxOTIsIDI0NywgMTg2LCAxLCAyMjMsIDI1MCwgMjQ3LCAxODYsIAorICAgIDEsIDIxMCwgMjIsIDI0NywgMTg2LCAxLCAyNDQsIDIxMiwgMjQ3LCAxODYsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NiwgMSwgCisgICAgMjIxLCAxNDcsIDI0NywgMTg2LCAxLCAyNDcsIDkyLCAyNDcsIDE4NiwgMSwgMjMwLCAxODEsIDI0NywgMTg2LCAxLCAyMjEsIAorICAgIDExLCAyNDcsIDE4NiwgMSwgMjIxLCAzLCAyNDcsIDE4NiwgMSwgMTk4LCAyNDcsIDE4NiwgMSwgMjE2LCAyMjAsIDI0NywgCisgICAgMTg2LCAxLCAyMjgsIDExMywgMjQ3LCAxODYsIDEsIDIwNiwgODYsIDI0NywgMTg2LCAxLCAyMTUsIDM2LCAyNDcsIDE4NiwgCisgICAgMSwgNjMsIDI0NywgMTg2LCAxLCAxNTIsIDI0NywgMTg2LCAyMiwgMiwgNzUsIDI0NywgMTg2LCAyMiwgMiwgNjgsIDI0NywgCisgICAgMTg2LCAyMiwgMiwgNzQsIDI0NywgMTg2LCAyMiwgMiwgNzgsIDI0NywgMTg2LCAyMiwgMiwgMjUxLCAxMDksIDI0NywgMTg2LCAKKyAgICAyMTksIDEzNiwgMjQ3LCAxODYsIDI0MSwgODQsIDc2LCAyMTQsIDE2NywgNDUsIDEwNCwgMSwgMTM4LCAxNzMsIDQ1LCAxMDQsIAorICAgIDEsIDEzOCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDEzOCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMTczLCA0NSwgCisgICAgMTA0LCAxLCAxMjQsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAyMjIsIDIwMywgCisgICAgNDUsIDEwNCwgMSwgMTM4LCAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMzgsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAxMjQsIAorICAgIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTI0LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgCisgICAgMjIxLCAxMSwgNDUsIDEwNCwgMSwgMjE2LCAxNzEsIDQ1LCAxMDQsIDEsIDEzOCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIAorICAgIDI0NCwgMjEyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAyMTYsIDE4MCwgNDUsIDEwNCwgMSwgCisgICAgMTM4LCAyMTAsIDIyLCA0NSwgMTA0LCAxLCAxMzgsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxMCwgMjIsIDQ1LCAKKyAgICAxMDQsIDEsIDEyNCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDIwMSwgMjAxLCA0NSwgMTA0LCAxLCAyNDksIDMyLCA0NSwgCisgICAgMTA0LCAxLCAxMzgsIDE4NSwgNDUsIDEwNCwgMSwgMTM4LCAyMTgsIDIwOCwgNDUsIDEwNCwgMSwgMTM4LCAyNDAsIDEwOCwgCisgICAgNDUsIDEwNCwgMSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEsIDEyNCwgMjQwLCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjE4LCAKKyAgICAyMDgsIDQ1LCAxMDQsIDEsIDE5MiwgNDUsIDEwNCwgMSwgMTI0LCAxOTgsIDQ1LCAxMDQsIDEsIDEzOCwgMTk4LCA0NSwgCisgICAgMTA0LCAxLCAyMTYsIDIyMCwgNDUsIDEwNCwgMSwgMjE1LCAxNDAsIDQ1LCAxMDQsIDEsIDIyOCwgMTEzLCA0NSwgMTA0LCAxLCAKKyAgICAyMjYsIDIzMiwgNDUsIDEwNCwgMSwgMjA0LCAxMTEsIDQ1LCAxMDQsIDEsIDEzOCwgMjEzLCA5MCwgNDUsIDEwNCwgMSwgCisgICAgMTM4LCAyMTEsIDE2NCwgNDUsIDEwNCwgMSwgMTM4LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMzgsIDE1MiwgNDUsIDEwNCwgCisgICAgMSwgMjI3LCA3NywgNDUsIDEwNCwgMSwgNjMsIDQ1LCAxMDQsIDEsIDEyNCwgMTUyLCA0NSwgMTA0LCAxLCA3NSwgNDUsIAorICAgIDEwNCwgMSwgMjMxLCA4MywgNDUsIDEwNCwgMSwgNjgsIDQ1LCAxMDQsIDEsIDIwNiwgMTc4LCA0NSwgMTA0LCAxLCAyNDEsIAorICAgIDE2MSwgNDUsIDEwNCwgMSwgMjIwLCAxOCwgNDUsIDEwNCwgMSwgMjI4LCA5NywgNDUsIDEwNCwgMSwgMjM3LCAyNDksIDIxNSwgCisgICAgMzYsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCA0NSwgCisgICAgMTA0LCAxMDksIDIsIDIyOCwgMTE0LCAyMDksIDIyOCwgMjI4LCA4NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIzMCwgMSwgCisgICAgMjI4LCA4NiwgNDUsIDEwNCwgMTA5LCAyLCA0NiwgMjIyLCAyMDMsIDQ1LCAxMDQsIDEwOSwgMiwgMTI0LCAxODUsIDQ1LCAKKyAgICAxMDQsIDEwOSwgMiwgMTM4LCAyMTYsIDE3MCwgMjE5LCAyNDUsIDEyNCwgMTg1LCA0NSwgMTA0LCAxMDksIDIsIDE5MiwgNDUsIAorICAgIDEwNCwgMTA5LCAyLCAyNDksIDMyLCA0NSwgMTA0LCAxMDksIDIsIDIxNSwgMzYsIDQ1LCAxMDQsIDIsIDIxNSwgMTAsIDQ1LCAKKyAgICAxMDQsIDIyLCAyLCA2MywgNDUsIDEwNCwgMjIsIDIsIDIyNSwgMTQxLCAyMTQsIDIyNSwgNDUsIDEwNCwgMjIsIDIsIDI1MiwgCisgICAgMjUsIDQ1LCAxMDQsIDIyLCAyLCAyMDksIDIzNCwgMjUyLCAyNSwgNDUsIDEwNCwgMjIsIDIsIDc1LCA0NSwgMTA0LCAyMiwgCisgICAgMiwgMjMxLCA4MywgNDUsIDEwNCwgMjIsIDIsIDIwNywgMjQsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3NywgNDUsIDEwNCwgCisgICAgMjIsIDIsIDY4LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzgsIDQ1LCAxMDQsIDIyLCAyLCA3OCwgNDUsIDEwNCwgMjIsIDIsIAorICAgIDIyMCwgOTgsIDU2LCA0NSwgMTA0LCAyMiwgMiwgMjE5LCAxODgsIDQ1LCAxMDQsIDIyLCAyLCA3NCwgNDUsIDEwNCwgMjIsIAorICAgIDIsIDI1MSwgMTA5LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCAxOCwgNDUsIDEwNCwgMjIsIDIsIDI1MSwgNjQsIDQ1LCAxMDQsIAorICAgIDIyLCAyLCAxMDQsIDI1MSwgNjQsIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDk4LCA1NSwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIAorICAgIDIzMCwgMCwgNDUsIDEwNCwgMiwgMjA4LCAxNjAsIDQ1LCAxMDQsIDIsIDIwOCwgMTU5LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgCisgICAgMjA4LCAxNTgsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NywgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU2LCAKKyAgICA0NSwgMTA0LCAyLCAyMTYsIDIyMSwgMjM3LCAxNTYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMTQsIDI1MywgNDUsIDEwNCwgCisgICAgMiwgMjI5LCAxMDQsIDIyOSwgMjM5LCA0NSwgMTA0LCAzOSwgMjQ1LCAxMTMsIDI0MywgODUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAKKyAgICAxNywgMjAyLCA4NCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA4LCA0NSwgCisgICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE0NywgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDksIDQ1LCAxMDQsIDIzNiwgMTA4LCAKKyAgICAxNywgMTcwLCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE5NSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMTMsIDExMSwgNDUsIAorICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTksIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjIyLCA2MywgNDUsIDEwNCwgMTA0LCAxNywgCisgICAgMjAyLCA4NCwgNDUsIDEwNCwgMTA0LCAxNywgMTA1LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDgsIDQ1LCAxMDQsIDEwNCwgMTcsIAorICAgIDE0NywgNDUsIDEwNCwgMTA0LCAxNywgMTQ5LCA0NSwgMTA0LCAxMDQsIDE3LCAxNzAsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5NSwgCisgICAgNDUsIDEwNCwgMTA0LCAxNywgMjEzLCAxMTEsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5OSwgNDUsIDEwNCwgMTA0LCAxNywgMjIyLCAKKyAgICA2MywgNDUsIDEwNCwgMiwgMjA0LCAyOSwgNDUsIDEwNCwgMiwgMjA0LCAyOCwgNDUsIDEwNCwgMiwgMjE0LCAyMTIsIDQ1LCAKKyAgICAxMDQsIDIsIDIyOSwgMTc1LCA0NSwgMTA0LCAyLCAyMzYsIDM2LCA0NSwgMTA0LCAyLCAyNDMsIDk5LCA0NSwgMTA0LCAyLCAKKyAgICAyMTYsIDczLCAyMTUsIDE5OCwgMjE2LCAxODAsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMDMsIDc5LCA0NSwgMTA0LCAyLCAKKyAgICAyMzAsIDM1LCA0NSwgMTA0LCAyLCAyMzAsIDM0LCA0NSwgMTA0LCAyLCAyMTQsIDIyMCwgNDUsIDEwNCwgMiwgMjE0LCAyMTksIAorICAgIDQ1LCAxMDQsIDIsIDIzNywgOTgsIDQ1LCAxMDQsIDIsIDI0NywgODksIDM5LCAyNDIsIDc1LCAyNDYsIDUzLCAyNTEsIDEzOCwgCisgICAgMzksIDI0MywgMjMwLCAzOSwgMjMxLCAyNywgMzksIDE4MywgNDcsIDM5LCAyMDgsIDcwLCAyNDMsIDg1LCAzOSwgMjAzLCAKKyAgICAxOTUsIDU2LCAzOSwgMjA0LCAyMSwgMjI3LCAxMTUsIDU2LCAzOSwgMTcxLCAxMzEsIDU2LCAzOSwgNTIsIDE3MSwgMTMxLCAKKyAgICA1NiwgMzksIDE1NywgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAzOSwgMjExLCAxOCwgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAKKyAgICAzOSwgMjE5LCA3OCwgNTUsIDM5LCA1MiwgMjE5LCA3OCwgNTUsIDM5LCAyMTksIDc4LCA1NiwgMzksIDIxOSwgNzgsIDIxOSwgCisgICAgMTk5LCAxMzAsIDIsIDIwNywgOSwgMjE2LCA1MSwgMTMwLCAyLCAyMDcsIDksIDI0NywgNTQsIDEzMCwgMiwgMjQ2LCAyMzQsIAorICAgIDEzMCwgMiwgMjEwLCAxOTEsIDEzMCwgMiwgMjQ4LCA1NiwgMTMwLCAxLCAyNTEsIDQ1LCAxMzAsIDEsIDI1MSwgNDYsIDIwOSwgCisgICAgMTc4LCAxMzAsIDEsIDIzMSwgNzksIDEzMCwgMSwgMjMxLCA4MCwgMjA5LCAxNzgsIDEzMCwgMSwgMjA3LCAxMiwgMTMwLCAxLCAKKyAgICAyMDcsIDEzLCAyMDksIDE3OCwgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgCisgICAgMTA0LCAyMDksIDE3OCwgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk4LCAKKyAgICAyMDksIDE3OCwgMTMwLCAxLCAyNDEsIDEyNywgMTMwLCAxLCAyNTEsIDYyLCAxMzAsIDEsIDIyMCwgNDksIDEzMCwgMSwgCisgICAgMjIwLCA1MCwgMjA5LCAxNzgsIDEzMCwgMSwgMTczLCAxMzAsIDEsIDIzMCwgNDQsIDIyNSwgMTQ0LCAxMzAsIDEsIDIzOSwgCisgICAgOCwgMTMwLCAxLCAyMzksIDksIDIzOCwgMjUsIDEzMCwgMSwgMjIyLCAyMDMsIDEzMCwgMSwgMjQ3LCA5MiwgMTMwLCAxLCAKKyAgICAyNDcsIDkzLCAyMjgsIDEwMCwgMTMwLCAxLCAyMzAsIDE4MSwgMTMwLCAxLCAyMzAsIDE4MiwgMjMwLCAxNTMsIDEzMCwgMSwgCisgICAgMjIxLCAxMSwgMTMwLCAxLCAyMTAsIDIzLCAyMjcsIDI1MywgMTMwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAorICAgIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyNTEsIDQsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCisgICAgMTMwLCAxLCAyMjMsIDExMSwgMjE2LCAxODMsIDEzMCwgMSwgMjEwLCAyMiwgMTMwLCAxLCAyMTAsIDIzLCAyMDksIDIwMCwgCisgICAgMTMwLCAxLCAyNDQsIDIxMiwgMTMwLCAxLCAyNDQsIDIxMywgMjI1LCAxNjMsIDEzMCwgMSwgMjAxLCAyMDEsIDEzMCwgMSwgCisgICAgMTg1LCAxMzAsIDEsIDIxOSwgMTY5LCAyMjksIDI1MSwgMTMwLCAxLCAyNDksIDMyLCAxMzAsIDEsIDI0OSwgMzMsIDIyOSwgCisgICAgMTg3LCAxMzAsIDEsIDE5MiwgMTMwLCAxLCAxOTgsIDEzMCwgMSwgMjE2LCAyMjAsIDEzMCwgMSwgMjI4LCAxMTMsIDEzMCwgCisgICAgMSwgMjA0LCAxMTEsIDEzMCwgMSwgMjE1LCAzNywgMjE1LCAyMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTQsIDIzMiwgMTMwLCAxLCAKKyAgICAyMTUsIDM2LCAxMzAsIDEsIDE1MiwgMTMwLCAyLCAyMTYsIDk0LCAxMzAsIDIyLCAyLCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgCisgICAgMjA3LCA4LCAxMzAsIDIyLCAyLCAyMDcsIDksIDIxNCwgMjI4LCAxMzAsIDIyLCAyLCAyMTAsIDIyNCwgMTMwLCAyMiwgMiwgCisgICAgMjEwLCAyMjUsIDIzMSwgNzEsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIAorICAgIDIxNiwgMTA0LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgCisgICAgMjI3LCAxOTgsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNSwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTAzLCAKKyAgICAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwNCwgMjA5LCAxNzgsIAorICAgIDEzMCwgMjIsIDIsIDIxOCwgMjQ5LCAxMzAsIDIyLCAyLCAyMTgsIDI1MCwgMjA5LCAxNzgsIDEzMCwgMjUxLCAxMTcsIDI1MSwgCisgICAgMTE2LCAxMzAsIDEsIDIzMCwgMjMsIDIxNCwgMjI3LCAxMzAsIDEsIDIyOSwgMTExLCAyMTQsIDIyNywgMTMwLCAxLCAyMDcsIAorICAgIDEwMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjQxLCAxNTUsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNiwgNTYsIDIxNCwgMjI3LCAKKyAgICAxMzAsIDEsIDIwMiwgMTA2LCAyMTQsIDIyNywgMTMwLCAxLCAyNTAsIDUyLCAyMTQsIDIyNywgMTMwLCAxNywgMjAyLCA4NCwgCisgICAgMTMwLCAxNywgMTA1LCAxMzAsIDE3LCAxMDgsIDEzMCwgMTcsIDE0NywgMTMwLCAxNywgMTQ5LCAxMzAsIDE3LCAxNzAsIAorICAgIDEzMCwgMTcsIDE5NSwgMTMwLCAxNywgMjEzLCAxMTEsIDEzMCwgMTcsIDE5OSwgMTMwLCAxNywgMjIyLCA2MywgMTMwLCAKKyAgICAyMTksIDEwNCwgMTMwLCAyMTksIDEzMCwgMTMwLCAyMDQsIDE0LCAxMzAsIDI0NywgMzEsIDIxOSwgMTIzLCAxMzAsIDI0NywgCisgICAgMzEsIDIxMiwgMTM5LCAxMzAsIDI0NywgMzEsIDIxOSwgNzUsIDEzMCwgMjE5LCAxMjksIDEzMCwgMzEsIDE2LCAyNDMsIDkxLCAKKyAgICAxMzAsIDMxLCAxNiwgMjQ0LCAzNCwgMTMwLCAzMSwgMTYsIDI0MiwgMjcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NCwgMTMwLCAKKyAgICAzMSwgMTYsIDI0NCwgMTY1LCAyMTAsIDE5MSwgMTMwLCAzMSwgMTYsIDI0MywgMTc1LCAxMzAsIDMxLCAxNiwgMjQ0LCAyMDUsIAorICAgIDEzMCwgMzEsIDE2LCAyNDQsIDEwLCAxMzAsIDMxLCAxNiwgMjQ0LCAxODcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NSwgMjM4LCAKKyAgICAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjA5LCAxNzEsIDEzMCwgMzEsIDE2LCAzOSwgMjQxLCA4MiwgMTMwLCAzMSwgMTYsIAorICAgIDM5LCAyMjksIDE4MiwgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMzAsIDE1NywgMTMwLCAKKyAgICAzMSwgMTYsIDM5LCAyMjksIDE4MywgMywgMjMwLCAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODUsIDMsIDIzMCwgCisgICAgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDI0OCwgMTE5LCAxMzAsIDMxLCAxNiwgMzksIDIzOCwgMjksIDEzMCwgMzEsIDE2LCAKKyAgICAyMTYsIDE0LCAxNzEsIDI0MiwgMzcsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAxNzEsIDI0NCwgMjAzLCAxMzAsIDMxLCAxNiwgCisgICAgMjE2LCAxNCwgMjQ2LCAxNiwgMjA3LCAxOTUsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAyNDYsIDE2LCAyMDksIDI0NCwgMTMwLCAKKyAgICAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOSwgMTE4LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE3LCAxNzcsIAorICAgIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgMjE4LCA5NCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAKKyAgICAyMTgsIDgwLCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE4LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEwMSwgCisgICAgMjEwLCAyMTMsIDIsIDIxOSwgMTE0LCAyMTAsIDIxMywgMiwgMjE5LCAxMTAsIDIxMCwgMjEzLCAxLCA2MywgMjEwLCAyMTMsIAorICAgIDEsIDc1LCAyMTAsIDIxMywgMSwgNjgsIDIxMCwgMjEzLCAxLCAyNTEsIDEwOSwgMjEwLCAyMTMsIDEsIDc4LCAyMTAsIDIxMywgCisgICAgMSwgNzQsIDIxMCwgMjEzLCAxLCAyNDAsIDIzOCwgMjEwLCAyMTMsIDEsIDE3MywgMjEwLCAyMTMsIDEsIDIxNywgMTI2LCAKKyAgICAyMTAsIDIxMywgMSwgMjM5LCA4LCAyMTAsIDIxMywgMSwgMjIyLCAyMDMsIDIxMCwgMjEzLCAxLCAyNDcsIDkyLCAyMTAsIAorICAgIDIxMywgMSwgMjMwLCAxODEsIDIxMCwgMjEzLCAxLCAyMDIsIDExNiwgMjEwLCAyMTMsIDEsIDIyMSwgMTEsIDIxMCwgMjEzLCAKKyAgICAxLCAyMTAsIDIyLCAyMTAsIDIxMywgMSwgMjQ0LCAyMTIsIDIxMCwgMjEzLCAxLCAyMDEsIDIwMSwgMjEwLCAyMTMsIDEsIAorICAgIDE4NSwgMjEwLCAyMTMsIDEsIDI0MCwgMTA4LCAyMTAsIDIxMywgMSwgMjA2LCA4NiwgMjEwLCAyMTMsIDEsIDI0OSwgMzIsIAorICAgIDIxMCwgMjEzLCAxLCAxOTIsIDIxMCwgMjEzLCAxLCAxOTgsIDIxMCwgMjEzLCAxLCAyMTYsIDIyMCwgMjEwLCAyMTMsIDEsIAorICAgIDIyOCwgMTEzLCAyMTAsIDIxMywgMSwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMTUsIDM2LCAyMTAsIDIxMywgMSwgMjAzLCAKKyAgICAxODIsIDIxMCwgMjEzLCAxLCAxNTIsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTI3LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIAorICAgIDEwMywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMDAsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTcsIDIxMCwgMjEzLCAyMiwgCisgICAgMiwgMjE5LCA5OSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEyMSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEwOSwgMjEwLCAKKyAgICAyMTMsIDIyLCAyLCAyMTksIDEyOCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTMxLCAKKyAgICAyMTAsIDIxMywgMiwgMjA1LCAyMDQsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgNjQsIDE5MiwgMjEwLCAyMTMsIDEwOSwgMiwgCisgICAgMjE5LCA2NCwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMjksIDE0NCwgMjEwLCAyMTMsIDEsIDIxMCwgMTUwLCAyMTAsIAorICAgIDIxMywgMTcsIDIwMiwgODQsIDIxMCwgMjEzLCAxNywgMTA1LCAyMTAsIDIxMywgMTcsIDEwOCwgMjEwLCAyMTMsIDE3LCAKKyAgICAxNDcsIDIxMCwgMjEzLCAxNywgMTQ5LCAyMTAsIDIxMywgMTcsIDE3MCwgMjEwLCAyMTMsIDE3LCAxOTUsIDIxMCwgMjEzLCAKKyAgICAxNywgMjEzLCAxMTEsIDIxMCwgMjEzLCAxNywgMTk5LCAyMTAsIDIxMywgMTcsIDIyMiwgNjMsIDIxMCwgMjEzLCAyNTAsIAorICAgIDE3LCAyMTAsIDIxMywgMSwgMjE2LCA3NiwgMjEwLCAyMTMsIDEsIDIyNywgMTcxLCAyMTAsIDIxMywgMSwgMjQ4LCA5OCwgCisgICAgMjEwLCAyMTMsIDEsIDQ2LCAyMzAsIDU0LCAyMTAsIDIxMywgMSwgNDYsIDIyNiwgMTg1LCAyNDgsIDIwOCwgMSwgNjMsIAorICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgNjMsIDI0OCwgMjA4LCAxLCAxNTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTUyLCAKKyAgICAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDE1MiwgMjQ4LCAyMDgsIDEsIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAyMjksIDIzNiwgCisgICAgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxODUsIDI0OCwgMjA4LCAxLCAyMDEsIAorICAgIDIwMSwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMDEsIDIwMSwgMjQ4LCAyMDgsIDEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgCisgICAgMjEyLCAxMzEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjE5LCAxNDMsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjM5LCA4LCAKKyAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIzOSwgOCwgMjQ4LCAyMDgsIDEsIDIzMCwgMTgxLCAyNDgsIDIwOCwgMSwgMjQ0LCAKKyAgICAyMTIsIDI0OCwgMjA4LCAxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIAorICAgIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxOTIsIDI0OCwgMjA4LCAxLCAyMTEsIDIzNiwgMjEwLCAyMiwgMjQ4LCAKKyAgICAyMDgsIDEsIDIyMSwgMTcwLCAyMTAsIDIyLCAyNDgsIDIwOCwgMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAKKyAgICAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAxOTgsIDI0OCwgMjA4LCAxLCAKKyAgICAyMTIsIDEzMSwgMTk4LCAyNDgsIDIwOCwgMSwgMjIyLCAyMDMsIDI0OCwgMjA4LCAxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIAorICAgIDIxMiwgMTMxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIDIyMSwgMTEsIDI0OCwgMjA4LCAxLCAyNDcsIDkyLCAyNDgsIDIwOCwgCisgICAgMSwgMjIzLCAyNSwgMjQ4LCAyMDgsIDEsIDIyNSwgNTQsIDI0OCwgMjA4LCAxLCA3NSwgMjQ4LCAyMDgsIDEsIDY4LCAyNDgsIAorICAgIDIwOCwgMiwgMjA4LCAxNjQsIDI0OCwgMjA4LCAyMiwgMiwgNzQsIDI0OCwgMjA4LCAyMiwgMiwgMjE5LCAxNDMsIDc0LCAKKyAgICAyNDgsIDIwOCwgMjIsIDIsIDI0MSwgMTYxLCAyNDgsIDIwOCwgMjIsIDIsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgCisgICAgMjM2LCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCA3OCwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIDIzNiwgNzgsIDI0OCwgMjA4LCAKKyAgICAyMiwgMiwgNjgsIDI0OCwgMjA4LCAyMiwgMiwgMTA2LCAzNSwgMjEyLCAxMzEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxMDksIDIsIAorICAgIDIyMiwgMjA1LCAyNDgsIDIwOCwgMTA5LCAyLCAyMzcsIDE3MSwgMjQ4LCAyMDgsIDIxOSwgMTEyLCAyNDgsIDIwOCwgMjE5LCAKKyAgICAxMDgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjIzLCAxMTEsIDIyNCwgMjE4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIAorICAgIDIxOCwgMTIyLCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIzMCwgNzksIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjE5LCAKKyAgICAxMTIsIDIyNywgMTgxLCAxLCAxNzMsIDIyNywgMTgxLCAxLCAyMjksIDQwLCAyMjcsIDE4MSwgMSwgMjI5LCAxNDQsIDIyNywgCisgICAgMTgxLCAxLCAyMzksIDgsIDIyNywgMTgxLCAxLCAyMzgsIDUxLCAyMjcsIDE4MSwgMSwgMjIyLCAyMDMsIDIyNywgMTgxLCAxLCAKKyAgICAyNDcsIDkyLCAyMjcsIDE4MSwgMSwgMjQ2LCAxOTksIDIyNywgMTgxLCAxLCAyMzAsIDE4MSwgMjI3LCAxODEsIDEsIDIyMSwgCisgICAgMTEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAyMjcsIDE4MSwgMSwgMjA5LCAxMDgsIDIyNywgMTgxLCAxLCAyNDQsIDIxMiwgCisgICAgMjI3LCAxODEsIDEsIDIwMSwgMjAxLCAyMjcsIDE4MSwgMSwgMTg1LCAyMjcsIDE4MSwgMSwgMjE4LCA5OCwgMjI3LCAxODEsIAorICAgIDEsIDIxOCwgMjA4LCAyMjcsIDE4MSwgMSwgMjQwLCAxMDgsIDIyNywgMTgxLCAxLCAyMzksIDIyNywgMjI3LCAxODEsIDEsIAorICAgIDI0OSwgMzIsIDIyNywgMTgxLCAxLCAyNDgsIDQ0LCAyMjcsIDE4MSwgMSwgMTkyLCAyMjcsIDE4MSwgMSwgMjI0LCA4OSwgCisgICAgMjI3LCAxODEsIDEsIDIwOCwgMjAsIDIyNywgMTgxLCAxLCAyMDgsIDEwLCAyMjcsIDE4MSwgMSwgMjQxLCAyNTUsIDIyNywgCisgICAgMTgxLCAxLCAxOTgsIDIyNywgMTgxLCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDEsIDIyOCwgMTEzLCAyMjcsIDE4MSwgMSwgCisgICAgMTUyLCAyMjcsIDE4MSwgMSwgMjM2LCAyMjQsIDIyNywgMTgxLCAxLCAyMDYsIDg2LCAyMjcsIDE4MSwgMSwgMjE1LCAzNiwgCisgICAgMjI3LCAxODEsIDEsIDIxMywgOTAsIDIyNywgMTgxLCAxLCAyMDQsIDExMSwgMjI3LCAxODEsIDEsIDYzLCAyMjcsIDE4MSwgCisgICAgMjEwLCAyNTQsIDEsIDE5OCwgMjI3LCAxODEsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDIyLCAyLCAyNTIsIAorICAgIDI1LCAyMjcsIDE4MSwgMjIsIDIsIDc1LCAyMjcsIDE4MSwgMjIsIDIsIDc4LCAyMjcsIDE4MSwgMjIsIDIsIDIyMCwgMTgsIAorICAgIDIyNywgMTgxLCAyMiwgMiwgNjgsIDIyNywgMTgxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNywgMTgxLCAyMiwgMiwgNzQsIDIyNywgCisgICAgMTgxLCAxMDksIDIsIDIzMCwgNTQsIDIyNywgMTgxLCAxMDksIDIsIDIyNiwgMTg1LCAyMjcsIDE4MSwgMTA5LCAyLCAxNTksIAorICAgIDIyNywgMTgxLCAxMDksIDIsIDIyMywgMTYzLCAyMjcsIDE4MSwgMTA5LCAyLCAyMTksIDE4NCwgMjI3LCAxODEsIDEwOSwgMiwgCisgICAgMTQ2LCAyMjcsIDE4MSwgMTA5LCAyLCAyMTAsIDY5LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjAsIDI0MSwgMjI3LCAxODEsIAorICAgIDEwOSwgMiwgMjMwLCAwLCAyMjcsIDE4MSwgMiwgMjE2LCAxODEsIDIyNywgMTgxLCAyLCAyMjEsIDUxLCAyMjcsIDE4MSwgCisgICAgMjE3LCAxNzksIDIxMCwgMjAsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjIwLCAyNTIsIDIwOSwgNSwgMjEwLCAyMCwgMjI3LCAKKyAgICAxODEsIDIxNywgMTc5LCAyNDYsIDIwNiwgMjI3LCAxODEsIDIxNywgMTc5LCAyMDgsIDIsIDI0NiwgMjA2LCAyMjcsIDE4MSwgCisgICAgMjE3LCAxNzksIDIwOCwgMSwgMjI3LCAxODEsIDE3LCAyMDIsIDg0LCAyMjcsIDE4MSwgMTcsIDEwNSwgMjI3LCAxODEsIDE3LCAKKyAgICAxMDgsIDIyNywgMTgxLCAxNywgMTQ3LCAyMjcsIDE4MSwgMTcsIDE0OSwgMjI3LCAxODEsIDE3LCAxNzAsIDIyNywgMTgxLCAKKyAgICAxNywgMTk1LCAyMjcsIDE4MSwgMTcsIDIxMywgMTExLCAyMjcsIDE4MSwgMTcsIDE5OSwgMjI3LCAxODEsIDE3LCAyMjIsIAorICAgIDYzLCAyMjcsIDE4MSwgMSwgMjA3LCAyNDEsIDIyNywgMTgxLCAxLCAyMDcsIDIyOSwgMjI3LCAxODEsIDEsIDI0NCwgMTIwLCAKKyAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDIwMiwgODQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTA1LCAyMjAsIDQ3LCAyNDYsIAorICAgIDEzNSwgMTcsIDEwOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ5LCAKKyAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE3MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTUsIDIyMCwgNDcsIDI0NiwgCisgICAgMTM1LCAxNywgMjEzLCAxMTEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIAorICAgIDIyMiwgNjMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgNDksIAorICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDgxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCAyMjMsIDIyMCwgNDcsIAorICAgIDI0NiwgMTM1LCAxLCAyNTEsIDM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAKKyAgICAxLCAyNTEsIDI0MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjQ0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAKKyAgICAyNDIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDIzNywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgMTQ4LCAyMjAsIAorICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMTUsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzEsIDg0LCAyMjAsIDQ3LCAyNDYsIAorICAgIDEzNSwgMSwgMjMwLCAyMzYsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIyNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIAorICAgIDIyNiwgMjM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAzMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMjksIAorICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDIyOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMTcwLCAyMjAsIDQ3LCAKKyAgICAyNDYsIDEzNSwgMSwgMjI3LCAyMzQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDQ2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgCisgICAgMSwgMjQxLCAxNjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDkyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCAKKyAgICAyMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgNDksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIxOSwgMjIwLCAKKyAgICA0NywgMjQ2LCAxMzUsIDEsIDIyMCwgOTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIwNiwgMjIwLCA0NywgMjQ2LCAKKyAgICAxMzUsIDEsIDIyMCwgNjAsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NywgMjA3LCAyMDYsIDIyMCwgNDcsIDI0NiwgCisgICAgMTM1LCAyMzksIDMsIDIwNywgMjA3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDUsIDIwNywgMjA3LCAyMjAsIDQ3LCAKKyAgICAyNDYsIDEzNSwgMjE2LCAxMTgsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTgsIDIwNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDI1MSwgCisgICAgNzIsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgMjIzLCAyNDEsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgCisgICAgNTIsIDIyMywgMjQxLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxMCwgMTg0LCAyMTAsIDIxMywgMjE3LCAxNzksIAorICAgIDI0OCwgNjQsIDIxOSwgMTEzLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxNywgMTY3LCAyMTAsIDIxMywgMjE3LCAKKyAgICAxNzksIDI0OCwgNjQsIDI0NywgNzcsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjI3LCAxNzIsIDIxNCwgMjI0LCAKKyAgICAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIzMCwgNDQsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgCisgICAgNjQsIDI0NCwgMjEzLCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyNDksIDMzLCAyMTQsIDIyNCwgCisgICAgMjA2LCA1MiwgMTQzLCAyMjksIDIzNCwgMjA2LCA1MiwgMTQzLCAyMTMsIDU4LCAyMDYsIDUyLCAxNDMsIDIxNywgMjQ1LCAKKyAgICAyMDYsIDUyLCAyLCAyMjIsIDc2LCAyMDYsIDUyLCAyLCAyMDMsIDg3LCAyMjQsIDE0NiwgMjEwLCAxNzUsIDIwNiwgNTIsIAorICAgIDE0MywgMjAzLCA4NywgMjUxLCA3NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjMxLCAzNiwgCisgICAgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKKyAgICAxNDMsIDI0NywgNTUsIDU2LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NiwgCisgICAgMjE0LCAxOTQsIDIwNiwgNTIsIDE0MywgNTIsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwOCwgNzAsIDIxMCwgMTc1LCAKKyAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjIyLCAyNTAsIDE4MiwgMjA2LCA1MiwgMTQzLCA3MCwgNTYsIDIwNiwgNTIsIDE0MywgCisgICAgMTIwLCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDEyNiwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAyMTYsIDQsIDIyOSwgMjMzLCAKKyAgICAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyNTAsIDQ3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgCisgICAgMjA1LCAyMDAsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCisgICAgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCisgICAgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIAorICAgIDIsIDIwNSwgMjAwLCAyNTAsIDE4MywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyNTAsIDE5NywgMjA2LCAKKyAgICA1MiwgMiwgMjUwLCAxODEsIDI0OSwgMiwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNiwgNzcsIDIwNiwgNTIsIDIsIDI1MCwgCisgICAgMTgxLCAyMDYsIDc4LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjA4LCAyMDEsIDIwNiwgNTIsIDIsIDIzNywgMTUsIAorICAgIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDIxNSwgMTQ3LCAxNjMsIDI1MCwgCisgICAgMTgwLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA3LCAzMywgMjIzLCAyMzIsIDIwNiwgNTIsIDIsIDI1MCwgMTIyLCAyMDYsIAorICAgIDUyLCAyLCAyMTUsIDE5OCwgMjUwLCAxMjIsIDIwNiwgNTIsIDE0MywgMjQ3LCA1NSwgNTUsIDIwNiwgNTIsIDIsIDIzMCwgCisgICAgMTM1LCAyMDYsIDUyLCAyLCAyMDYsIDIyMiwgMjA2LCA1MiwgMTQzLCAyMTUsIDI1MywgNTUsIDIwNiwgNTIsIDE0MywgNTIsIAorICAgIDIxNSwgMjUzLCA1NSwgOCwgMSwgNSwgNiwgNjMsIDgsIDEsIDUsIDYsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCisgICAgMjUxLCAxMDksIDgsIDEsIDUsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgOCwgMSwgNSwgNiwgMjQ3LCAxMjUsIDgsIDEsIDUsIAorICAgIDYsIDI0NSwgNTEsIDgsIDEsIDUsIDYsIDI0MCwgMjQzLCA4LCAxLCA1LCA2LCA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE3MSwgCisgICAgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCA3NSwgOCwgMSwgNSwgNiwgMjMwLCAxODQsIDgsIDEsIDUsIDYsIDIzMCwgNTQsIDgsIAorICAgIDEsIDUsIDYsIDIyOCwgMTMxLCAzLCA5NSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDIyMywgCisgICAgMTYzLCA4LCAxLCA1LCA2LCA3OCwgOCwgMSwgNSwgNiwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDc4LCA4LCA1LCAxLCAKKyAgICAyMTIsIDE1NCwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIAorICAgIDczLCA4LCAxLCA1LCA2LCAyMTksIDIxNiwgOCwgNSwgMSwgMjA4LCAxNDUsIDE2MiwgNzgsIDgsIDUsIDEsIDI0NywgMjQ4LCAKKyAgICAxNjIsIDc4LCA4LCAxLCA1LCA2LCAyMTksIDE4NCwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMTQ2LCA4LCAxLCA1LCA2LCAyMDcsIAorICAgIDE3NCwgMTQ2LCA4LCAxLCA1LCA2LCAyMTAsIDY5LCA4LCAxLCA1LCA2LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDY4LCA4LCAKKyAgICA1LCAxLCAyMTIsIDE1NCwgMjQzLCAyMjksIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAKKyAgICAxLCA1LCA2LCAyMDYsIDE2NCwgOCwgMSwgNSwgNiwgMjA0LCAxNDQsIDgsIDEsIDUsIDYsIDIwMiwgMTU5LCA4LCAxLCA1LCAKKyAgICA2LCAyNDAsIDE3NywgOCwgMSwgMjA1LCAxODYsIDIyOCwgMywgMjExLCAyMDAsIDgsIDEsIDI1MSwgNTksIDMwLCAxLCA1LCAKKyAgICA2LCAyMzgsIDIzNSwgMzAsIDEsIDUsIDYsIDIyOCwgMjQsIDMwLCAxLCA1LCA2LCAyMTgsIDE2NywgMzAsIDEsIDUsIDYsIAorICAgIDIxNiwgNTksIDMwLCAxLCA1LCA2LCAyMTcsIDIwMiwgMzYsIDEsIDUsIDYsIDI0MSwgMTIyLCA2NSwgMSwgNiwgNjMsIDY1LCAKKyAgICAxLCA2LCAyNTEsIDEwOSwgNjUsIDEsIDYsIDI0OSwgMjU1LCA2NSwgMSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA2NSwgMSwgCisgICAgNiwgMjQ1LCA1MSwgNjUsIDEsIDYsIDc0LCA2NSwgMSwgNiwgMjE2LCA3MywgNzQsIDY1LCAxLCA2LCAyMzksIDc1LCA2NSwgCisgICAgMSwgNiwgMjM3LCAxNzEsIDY1LCAxLCA2LCA3NSwgNjUsIDEsIDYsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjMwLCA1NCwgNjUsIAorICAgIDEsIDYsIDE1OSwgNjUsIDEsIDYsIDIyNiwgMTg1LCA2NSwgMSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA2LCAyMTYsIDczLCAKKyAgICAyMjMsIDE2MywgNjUsIDEsIDYsIDc4LCA2NSwgMSwgNiwgMjE5LCAyMTYsIDY1LCAxLCA2LCAyMTksIDE4NCwgNjUsIDEsIDYsIAorICAgIDE0NiwgNjUsIDEsIDYsIDIxMCwgNjksIDY1LCAxLCA2LCA2OCwgNjUsIDEsIDYsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgNjMsIAorICAgIDY1LCAxLCA1LCAyMDcsIDE3NCwgNjMsIDY1LCAxLCA1LCAyNTEsIDIsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjUxLCAxMDksIAorICAgIDY1LCAxLCA1LCAyNDksIDI1NSwgNjUsIDEsIDUsIDI0NSwgNTEsIDY1LCAxLCA1LCA3NCwgNjUsIDEsIDUsIDIxNCwgMTkyLCAKKyAgICA2NSwgMSwgNSwgMTcxLCA3NCwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjM5LCA3NSwgNjUsIDEsIAorICAgIDUsIDIwNywgMTc0LCA3NSwgNjUsIDEsIDUsIDIzMCwgNTQsIDY1LCAxLCA1LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDI0MSwgCisgICAgNzgsIDY1LCAxLCA1LCA3OCwgNjUsIDEsIDUsIDE3MSwgNzgsIDY1LCAxLCA1LCAyMDgsIDE0NSwgMTYyLCA3OCwgNjUsIDEsIAorICAgIDUsIDI0NywgMjQ4LCAxNjIsIDc4LCA2NSwgMSwgNSwgMjE5LCAxODQsIDY1LCAxLCA1LCAyMTAsIDY5LCA2NSwgMSwgNSwgCisgICAgNjgsIDY1LCAxLCA1LCAyMTIsIDE1NCwgNjgsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODUsIDY1LCAxLCA1LCAyMDYsIAorICAgIDE2NCwgNjUsIDEsIDUsIDI1MSwgNTksIDY1LCAxLCA1LCAyNDgsIDEwNiwgNjUsIDEsIDUsIDMwLCAyMzgsIDIzNSwgNjUsIAorICAgIDEsIDUsIDI0NCwgMzcsIDY1LCAxLCA1LCAzMCwgMjE4LCAxOTIsIDY1LCAxLCA1LCAyNDYsIDE0MiwgOCwgMjEwLCAyNDYsIAorICAgIDUsIDEsIDc1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTQ2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjgsIDgsIDIxMCwgMjQ2LCA1LCAKKyAgICAxLCAyMDYsIDE2NCwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyNDgsIDEwNiwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMzgsIDIzNSwgCisgICAgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTYsIDU5LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxOCwgMTkyLCAzMCwgMjEwLCAyNDYsIAorICAgIDUsIDEsIDI0NiwgMTQyLCA4LCA1LCAxLCAyMDcsIDI0LCA4LCA1LCAxLCA2NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjQ1LCA1MiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAorICAgIDIyNiwgMTg2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjE5LCAxODUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNywgMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCisgICAgMjE3LCAxLCAzLCAyMzksIDI0MSwgMjUsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDEwMSwgMjA4LCAKKyAgICAyMjcsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxMDEsIDIwOCwgCisgICAgMjI3LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM5LCA3NSwgNjUsIDEsIDM2LCAyNDEsIDkyLCA4LCA1LCAxLCAyMzEsIDQsIAorICAgIDIzOSwgNzUsIDgsIDUsIDEsIDIwOSwgMTExLCAzLCAyMTEsIDM2LCA4LCA1LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIAorICAgIDUsIDEsIDIzMCwgMjMxLCAzLCA5NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDk1LCA4LCA1LCA2LCAxLCAxMDYsIDMsIDk1LCAKKyAgICA4LCA1LCAxLCAyMDYsIDIxNywgMywgOTUsIDgsIDUsIDEsIDY2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDUsIAorICAgIDUyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM5LCAKKyAgICA3NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI4LCAKKyAgICAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjMsIAorICAgIDE2NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNywgCisgICAgMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQxLCA4LCAKKyAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAzLCAxOTcsIAorICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAzNCwgMywgCisgICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNTEsIDMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjM2LCAKKyAgICAxMTYsIDI1LCAyMDksIDI0OCwgOCwgNSwgMSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgMTg4LCAzLCAKKyAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNCwgCisgICAgMTkzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgCisgICAgMTU4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDMsIAorICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAKKyAgICAyNTEsIDIsIDY1LCAxLCA1LCAyNDcsIDEyNSwgNjUsIDEsIDUsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA2NSwgMSwgNSwgCisgICAgMjQwLCAyNDMsIDY1LCAxLCA1LCAyMTYsIDczLCAxNzEsIDc0LCA2NSwgMSwgNSwgMjQwLCAxNzQsIDY1LCAxLCA1LCAyNDMsIAorICAgIDg0LCAyMzAsIDE4NSwgMywgOTUsIDY1LCAxLCA1LCAxMzIsIDIzOSwgNzUsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjM3LCAKKyAgICAxNzEsIDY1LCAxLCA1LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDIzMCwgNjUsIDEsIDUsIDYsIDc1LCA2NSwgCisgICAgMSwgNSwgNiwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA2NSwgMSwgNSwgMjI4LCAKKyAgICAxMzEsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA2NSwgMSwgNSwgNiwgCisgICAgMTU5LCA2NSwgMSwgNSwgMjI2LCAxODYsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAKKyAgICAyMjcsIDIxMCwgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIAorICAgIDExMywgNjUsIDEsIDUsIDYsIDIyMywgMTYzLCA2NSwgMSwgNSwgMjQ4LCAyMjUsIDc4LCA2NSwgMSwgNSwgMjE4LCAxOTIsIAorICAgIDY1LCAxLCA1LCAyMTUsIDk0LCAzLCAxMTMsIDY1LCAxLCA1LCAyNDEsIDcsIDY1LCAxLCA1LCAyMTAsIDcwLCAzLCAyMTksIAorICAgIDE0MiwgMTEzLCA2NSwgMSwgNSwgMTA2LCAxNDIsIDY1LCAxLCA1LCAyMDYsIDIxNiwgNjUsIDEsIDUsIDYsIDY4LCA2NSwgMSwgCisgICAgNSwgMjA2LCAxNjUsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMDYsIDE2NCwgNjUsIDEsIDUsIDIwMiwgMTU5LCAKKyAgICA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA2NSwgCisgICAgMSwgNSwgMjQwLCAxNzcsIDY1LCAxLCA1LCAyMDksIDc0LCAzOSwgMjQyLCA4MywgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgCisgICAgMjQyLCA4MywgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjEyLCAyNSwgNTYsIDM5LCAyMTAsIDE4MiwgODIsIDM5LCAyMjUsIAorICAgIDE2OSwgMzksIDIzNywgMjUxLCAzOSwgMjI1LCAxNjcsIDM5LCAyNTEsIDEyNCwgMzksIDIzNywgMjUyLCAzOSwgMjUxLCAKKyAgICAxMjUsIDM5LCA4LCA1LCAxLCAyMTcsIDEsIDU2LCAzOSwgMjQ3LCAyMTMsIDM5LCAyMjUsIDE2OCwgMzksIDUyLCAyNDYsIAorICAgIDUzLCA1NSwgMzksIDIyMCwgNjMsIDU1LCAzOSwgMjAyLCAzMCwgNTYsIDM5LCAyMzAsIDIxNiwgNTYsIDM5LCAyMDYsIDIxMSwgCisgICAgNTUsIDM5LCAyMDYsIDE5NCwgNTUsIDM5LCA4LCA1LCAxLCAyMzksIDIxNCwgMTcxLCAzNCwgNTUsIDM5LCA4LCA1LCAxLCAKKyAgICAyNTEsIDEwOSwgMzksIDgsIDUsIDEsIDI1MCwgMTc4LCAzOSwgOCwgNSwgMSwgMjUwLCAxOCwgMzksIDgsIDUsIDEsIDI0NywgCisgICAgMTI2LCAyNDYsIDIzMSwgMzksIDgsIDUsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDI0MCwgMjQzLCAzOSwgCisgICAgOCwgNSwgMSwgMjM5LCA3NSwgMzksIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDM5LCA4LCA1LCAxLCAyMzAsIDU0LCAzOSwgOCwgCisgICAgNSwgMSwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDM5LCA4LCA1LCAxLCAKKyAgICAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMTQ2LCAzOSwgOCwgNSwgMSwgCisgICAgMjE3LCAxLCAyMTUsIDE5MiwgMzksIDgsIDUsIDEsIDE5NCwgMzksIDgsIDUsIDEsIDE2MywgMTk0LCAzOSwgOCwgNSwgMSwgCisgICAgMjAyLCAxNTksIDM5LCA4LCA1LCAxLCAyNTEsIDIsIDM5LCA4LCA1LCAxLCAyNDksIDI1NSwgMzksIDgsIDUsIDEsIDI0OCwgCisgICAgMTA2LCAzOSwgOCwgNSwgMSwgMjE0LCAxOTIsIDM5LCA4LCA1LCAxLCAyNDAsIDE3NCwgMzksIDgsIDUsIDEsIDIyOCwgMTMxLCAKKyAgICAzLCA1MiwgMTAxLCAyMDgsIDIyNywgMzksIDgsIDUsIDEsIDE1OCwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIDM5LCA4LCA1LCAKKyAgICAxLCAyMTksIDE4NCwgMzksIDgsIDUsIDEsIDI0MSwgNywgMzksIDgsIDUsIDEsIDEwNiwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIAorICAgIDM5LCA4LCA1LCAxLCAyMDQsIDE0NCwgMzksIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDE1OCwgMywgCisgICAgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzOSwgMTEyLCAyMTAsIDQsIDU1LCAzOSwgNTIsIAorICAgIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU2LCAzOSwgNDksIDI1MCwgOTUsIAorICAgIDU1LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMjEsIDI1MCwgOTUsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCAKKyAgICA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU1LCA4LCA1LCAxLCA2NiwgMywgNzAsIAorICAgIDU1LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA1LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA2LCAxLCA2NiwgMywgMjI3LCAKKyAgICAxMTUsIDU2LCA4LCA1LCAxLCA2NiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIAorICAgIDI1LCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgCisgICAgNzAsIDU1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNSwgCisgICAgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDI0NSwgCisgICAgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIAorICAgIDI0NiwgMjMxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgCisgICAgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgCisgICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgCisgICAgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCAKKyAgICA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDYsIDEsIAorICAgIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCAKKyAgICA4LCA2LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzksIAorICAgIDc2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgCisgICAgNTUsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAorICAgIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIAorICAgIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIAorICAgIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCA1NiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCAKKyAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCAKKyAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKKyAgICAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA2LCAKKyAgICAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCisgICAgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKKyAgICA3MCwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIAorICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKKyAgICAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAKKyAgICAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCisgICAgMjI2LCAxODYsIDMsIDE2NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDE2NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCAKKyAgICA1NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCisgICAgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIAorICAgIDcwLCA1NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNiwgCisgICAgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgCisgICAgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIAorICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCAKKyAgICA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAKKyAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgCisgICAgMjUsIDE2NSwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNiwgMSwgCisgICAgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAKKyAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNywgMSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCisgICAgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDUsIAorICAgIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIAorICAgIDU2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAKKyAgICAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCisgICAgNzAsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCisgICAgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIAorICAgIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIAorICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAKKyAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCAKKyAgICA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCisgICAgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjEwLCAKKyAgICA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgCisgICAgMjMyLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCAKKyAgICA2LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIAorICAgIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIAorICAgIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNiwgMSwgCisgICAgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIwNiwgMTY1LCAKKyAgICAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgCisgICAgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMTY1LCA4LCA1LCAxLCAyMDQsIAorICAgIDE0NSwgMywgMTY1LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIAorICAgIDIzMSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgCisgICAgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIAorICAgIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCAKKyAgICA1LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMywgCisgICAgMTI1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCAKKyAgICA1MiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgCisgICAgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCisgICAgMjM3LCAxNzIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgCisgICAgMTQ1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDM0LCAzLCAKKyAgICA1MCwgMTYyLCAyMTUsIDI1MiwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE2MywgMjE1LCAKKyAgICA5NCwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDIxMywgNTcsIAorICAgIDE5NCwgOCwgNSwgMSwgMjQ0LCAzNywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgCisgICAgNiwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIAorICAgIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCAKKyAgICA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgCisgICAgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIAorICAgIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIAorICAgIDcwLCA1NiwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIAorICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgCisgICAgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKKyAgICAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCAKKyAgICA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAKKyAgICAxODgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjM2LCAxMTYsIAorICAgIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIAorICAgIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKKyAgICAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAKKyAgICAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgCisgICAgMTE2LCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAKKyAgICA1MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgCisgICAgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjM1LCAKKyAgICAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAorICAgIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIAorICAgIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgCisgICAgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAKKyAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCAKKyAgICA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAKKyAgICAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIAorICAgIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIAorICAgIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCisgICAgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIAorICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgCisgICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAorICAgIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAorICAgIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAorICAgIDEwNiwgMywgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDExNiwgCisgICAgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKKyAgICA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgCisgICAgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAKKyAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCisgICAgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCisgICAgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIAorICAgIDUsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAzLCAKKyAgICAxMjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIAorICAgIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAKKyAgICAyMjcsIDgsIDYsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA1LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNiwgMSwgCisgICAgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAKKyAgICAyMjcsIDE0LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI3LCAxNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIAorICAgIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAKKyAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIAorICAgIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAKKyAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAKKyAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgCisgICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAorICAgIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MSwgMzgsIAorICAgIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTcsIAorICAgIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAKKyAgICAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAKKyAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIAorICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIAorICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCisgICAgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIAorICAgIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAorICAgIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCisgICAgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDAsIAorICAgIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgCisgICAgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAorICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAorICAgIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCisgICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAKKyAgICAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIAorICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAorICAgIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAKKyAgICAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIAorICAgIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIzMCwgCisgICAgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIAorICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAKKyAgICAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIAorICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgCisgICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAorICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgCisgICAgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAKKyAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzUsIAorICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAKKyAgICAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgCisgICAgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIAorICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAKKyAgICAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgCisgICAgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgCisgICAgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAorICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAKKyAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgCisgICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAorICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKKyAgICAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCisgICAgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAKKyAgICAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKKyAgICAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgCisgICAgMSwgMjUxLCAzLCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIAorICAgIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIAorICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgNzAsIDMwLCAKKyAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgCisgICAgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAKKyAgICAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIAorICAgIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgCisgICAgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCisgICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgCisgICAgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAorICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIAorICAgIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAKKyAgICAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAorICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgCisgICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgCisgICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKKyAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAorICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKKyAgICAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCisgICAgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIAorICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAKKyAgICAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCisgICAgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAKKyAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAorICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgCisgICAgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIAorICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCisgICAgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAKKyAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgCisgICAgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIAorICAgIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgCisgICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIAorICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCisgICAgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCisgICAgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAKKyAgICAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIAorICAgIDIyMSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKKyAgICAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCisgICAgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIAorICAgIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgCisgICAgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCisgICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKKyAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAorICAgIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAorICAgIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAKKyAgICAzLCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAorICAgIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAKKyAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAyMDksIAorICAgIDMwLCAyMjgsIDI1MiwgMzAsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTUsIDMwLCAyMTgsIDIzOSwgMzAsIDI0MywgMjI1LCAyNSwgCisgICAgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAKKyAgICAyNDksIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKKyAgICAxLCAyNDAsIDI0OSwgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgCisgICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIAorICAgIDI0MCwgMjQ5LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKKyAgICAyNDksIDMsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCisgICAgMzAsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAKKyAgICAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgCisgICAgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE4LCAKKyAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAKKyAgICAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIAorICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgMjQ0LCAKKyAgICAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgCisgICAgMjA1LCAxNjcsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAKKyAgICAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKKyAgICAxLCAyMTYsIDYwLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIxNiwgNjAsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAKKyAgICAyMTcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAKKyAgICAxLCAyMDYsIDIxNywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMDYsIAorICAgIDIxNywgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIxNiwgNjAsIDMsIAorICAgIDI0NCwgMTQxLCAzMCwgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDIwNiwgCisgICAgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAKKyAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAorICAgIDM3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKKyAgICAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAKKyAgICAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAorICAgIDIwOSwgMzAsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDEsIDI0MSwgOTMsIDIxNywgNjIsIDI0MSwgMTA0LCAyMTcsIDYyLCAKKyAgICAyNDEsIDkzLCAyMTEsIDIyOCwgMjQxLCAxMDQsIDIxMSwgMjI4LCAyMDksIDI4LCAyMTEsIDIyOCwgMjM5LCAxNDUsIDIxMSwgCisgICAgMjI4LCAyMTIsIDg2LCAyMTEsIDIyOCwgMjQwLCAxNiwgMjExLCAyMjgsIDIxNywgMTc5LCAyMTEsIDIyOCwgMjA5LCA2MywgCisgICAgMjExLCAyMjgsIDIzNywgMTQ2LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgCisgICAgMjQsIDIyMSwgMTgzLCAyMDIsIDg1LCAyMDQsIDI0LCAyMzAsIDk2LCAyMjcsIDIxMywgODIsIDIxNiwgNywgODIsIDIzNSwgCisgICAgMjIwLCAyMjEsIDE4NCwgMjM1LCAyMjAsIDI0MCwgMTYsIDI0NCwgMTQ0LCAyNDEsIDkzLCAyNDQsIDE0NCwgMjQxLCAxMDQsIAorICAgIDI0NCwgMTQ0LCAyMzYsIDEwNiwgMTQyLCA1MiwgODAsIDIyNywgMTE0LCA1MiwgMTI0LCAyMjcsIDExNCwgNDksIDIxMiwgCisgICAgMTIwLCAyMTcsIDMxLCA4MiwgNTAsIDIxMiwgMTIwLCAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIyNiwgMjU1LCAyMTcsIDMxLCAKKyAgICA4MiwgMjEyLCAxMjAsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgNDksIDUyLCAyMTcsIDMxLCA4MiwgNTAsIDUyLCAyMTcsIAorICAgIDMxLCA4MiwgNTIsIDIyNiwgMjU1LCAyMTcsIDMxLCA4MiwgNTIsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgMjQ0LCAxOTUsIAorICAgIDUyLCAyNDQsIDE5NSwgMjQ3LCAxNzcsIDIwOCwgODIsIDI0NywgMTc3LCAxMTgsIDcwLCAyMjcsIDIzMiwgMTIwLCA3MCwgCisgICAgMjI3LCAyMzIsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMjM1LCAyMTgsIDIxOCwgNjIsIDIyNywgMTE1LCAyMTMsIDEzMCwgMjE5LCAKKyAgICA4OSwgMjEzLCAxMzAsIDIyNywgMjEzLCAyNDEsIDEwMiwgMjE2LCA3LCAyNDEsIDEwMiwgMjE4LCA0MiwgMjQzLCAxNjUsIAorICAgIDIzOSwgMTU3LCAyMjcsIDIxMywgMjE5LCAxOTYsIDIxNiwgNywgMjE5LCAxOTYsIDIyMywgNzMsIDIyMSwgMTkwLCAyMTEsIAorICAgIDIyOCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgMjE3LCAyMzYsIAorICAgIDUyLCAyMTcsIDIzNiwgMjA4LCA3MCwgMjE3LCAyMzYsIDIxNiwgNzMsIDIxNywgMjM2LCAyMTYsIDczLCA1MiwgMjE3LCAKKyAgICAyMzYsIDIxNiwgNzMsIDIwOCwgNzAsIDIxNywgMjM2LCAyNDcsIDMzLCAyMTIsIDEyMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAKKyAgICAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjE2LCAxMzQsIDgyLCA1MiwgCisgICAgMjQwLCAyMTIsIDgyLCAyMzAsIDI0NywgMjE5LCAxOTgsIDIwNiwgMjQzLCAxNjcsIDIwOCwgMjUwLCAyNDcsIDM0LCAyMzEsIAorICAgIDgsIDIxOCwgNjIsIDI1MCwgNTcsIDIzNSwgMjIxLCAyNDcsIDE3NywgMjM5LCAxMzgsIDIxMiwgNTcsIDQ5LCA1MSwgMjQ3LCAKKyAgICAyMjcsIDMsIDIxNywgNDEsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIxNywgNDEsIDUyLCAyMTcsIDQ3LCA4MiwgMjE3LCA0NywgCisgICAgMjQwLCAyMTIsIDgyLCAyNDAsIDIxMiwgMjE3LCA0NywgODIsIDIwOCwgMjAzLCAyLCAyNDAsIDI1MCwgMjE2LCA3MywgMjE4LCAKKyAgICAxMjYsIDU0LCA2MiwgOTYsIDI0NywgMTc3LCA2MiwgODYsIDI0NywgMTc3LCAxMjQsIDI1MCwgNTksIDIxNiwgNzMsIDIxMywgCisgICAgMTQzLCAyNDYsIDE3LCAyMDYsIDIyNCwgMTIwLCAyNTAsIDU4LCAyNTEsIDE4LCAyMDUsIDI0MywgMjQ1LCAyMzEsIDIyNCwgCisgICAgMTAzLCA1NCwgMjEwLCAxNTMsIDI0NCwgMTQ0LCAyMzAsIDIzOSwgMjA2LCAyNDMsIDIzOSwgMTk4LCAyMTcsIDE3OSwgODIsIAorICAgIDEyNiwgNzAsIDIxNywgMTc4LCAyMTcsIDU4LCAyMTcsIDIzNiwgMjM5LCAxNDcsIDcwLCAyMTcsIDE3OCwgMjM5LCAyMzMsIAorICAgIDcwLCAyMTcsIDE3OCwgMTIwLCA3MCwgMjE3LCAxNzgsIDIzOSwgMTQ3LCA3MCwgODIsIDI0MiwgODMsIDI0NSwgMTMwLCAKKyAgICAyMDgsIDgxLCA4MCwgMjM5LCAxNDcsIDI0MywgODMsIDIyNSwgMTAsIDEzLCAyMTEsIDIyOCwgMjAzLCAyMzgsIDIzMCwgOTYsIAorICAgIDIzOSwgMTAwLCAyNTAsIDE1NSwgMjMwLCAyMzcsIDIwOCwgMjE5LCAyMzAsIDIzNywgMjEzLCAxMzAsIDIzMCwgMjM3LCAKKyAgICAyMTgsIDc2LCAyMjcsIDIxMywgMjMwLCAyMDcsIDIxNiwgNywgMjMwLCAyMDcsIDIzOSwgMjQ1LCAyMTEsIDE4LCAyMzAsIAorICAgIDIwNywgMjE4LCA0MiwgMjQzLCAxNjUsIDIzMCwgMjA3LCAyMzEsIDIwLCAyMTAsIDEwMSwgMjEwLCAxNzAsIDI1MSwgMTI4LCAKKyAgICAyMTAsIDEwMSwgMjEwLCAxNzAsIDIzMSwgMjAsIDEwLCAyMzksIDE1OSwgMjEzLCA2MSwgMjUxLCAxMjgsIDEwLCAyMzksIAorICAgIDE1OSwgMjEzLCA2MSwgMjIzLCA2NywgMTcsIDIxMywgNjIsIDIyMSwgMTg2LCAxNywgMjEzLCA2MiwgMjEwLCAxOTksIDIwMiwgCisgICAgODQsIDIxMCwgMTk5LCA4LCA1LCAxLCA3NSwgMjEwLCAxOTksIDE0OSwgMjEwLCAxOTksIDE3MCwgMjEwLCAxOTksIDE5NSwgCisgICAgMjEwLCAxOTksIDIxMywgMTExLCAyMTAsIDE5OSwgMTk5LCAyMTAsIDE5OSwgMjIyLCA2MywgMjEwLCAxOTksIDkxLCA1NCwgCisgICAgMjEwLCAxOTksIDIyNCwgMTAyLCAyMTAsIDE5OSwgMjQxLCAzNSwgNTQsIDIxMCwgMTk5LCA0OSwgMjE5LCA3NiwgMjEwLCAKKyAgICAxOTksIDUwLCAyMTksIDc2LCAyMTAsIDE5OSwgOCwgNSwgMSwgMjIzLCAxNjMsIDIxMCwgMjQ2LCAyMDIsIDg0LCAyMTAsIAorICAgIDI0NiwgMTA1LCAyMTAsIDI0NiwgMTA4LCAyMTAsIDI0NiwgMTQ3LCAyMTAsIDI0NiwgMTQ5LCAyMTAsIDI0NiwgMTcwLCAKKyAgICAyMTAsIDI0NiwgMTk1LCAyMTAsIDI0NiwgMjEzLCAxMTEsIDIxMCwgMjQ2LCAxOTksIDIxMCwgMjQ2LCAyMjIsIDYzLCAyMTAsIAorICAgIDI0NiwgOTEsIDU0LCAyMTAsIDI0NiwgMjI0LCAxMDIsIDIxMCwgMjQ2LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDYsIDQ5LCAKKyAgICAyMTksIDc2LCAyMTAsIDI0NiwgNTAsIDIxOSwgNzYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2MywgOCwgMjEwLCAyNDYsIDUsIDEsIAorICAgIDc0LCA4LCAyMTAsIDI0NiwgNSwgMSwgNzgsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMDMsIDE5NiwgOCwgMjEwLCAyNDYsIDUsIAorICAgIDEsIDIxNCwgMTkyLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjM3LCAxNzEsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzAsIDU0LCA4LCAKKyAgICAyMTAsIDI0NiwgNSwgMSwgMTU5LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjI2LCAxODUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjMsIAorICAgIDE2MywgOCwgMjEwLCAyNDYsIDUsIDEsIDIxOSwgMTg0LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTk0LCA4LCAyMTAsIDI0NiwgNSwgCisgICAgMSwgMjEwLCA2OSwgMjQwLCAyMjksIDU0LCAyNDUsIDI0MywgNTQsIDI0NSwgMTE1LCA1NCwgMjM5LCAxMjgsIDIzOSwgMTMyLCAKKyAgICA1NCwgMjI3LCA5NCwgNTQsIDIyNCwgMTE3LCA1NCwgMjIzLCA5MCwgNTQsIDIxOCwgMjI0LCA1NCwgMjE1LCAxMjAsIDU0LCAKKyAgICAyMDMsIDI0NiwgNTQsIDIyMiwgMjE0LCAyMTMsIDI5LCA1NCwgMjQzLCA5MiwgNTQsIDI0MCwgMjMwLCA1NCwgMjI5LCA3OSwgCisgICAgNTQsIDIwNywgMTk2LCA1NCwgMjQyLCA2NiwgNTQsIDIzOCwgMTY2LCAyMTksIDIsIDU0LCAyMTgsIDIyMSwgNTQsIDIzNywgCisgICAgMjI1LCA1NCwgMjUwLCAyNCwgNTQsIDIzNiwgMzIsIDU0LCAyNDYsIDIzMywgNTQsIDIyNywgODQsIDIwOCwgMTI1LCA1NCwgCisgICAgMjExLCAyMDksIDU0LCAyMDksIDE1MCwgNTQsIDIzMSwgMzQsIDIxNSwgMTIwLCA1NCwgMjA3LCAxNzcsIDIyNywgOTQsIDU0LCAKKyAgICAyMjEsIDE3MywgMTMxLCA1NCwgMjI1LCAxMjAsIDU0LCAyMTUsIDE0MiwgNTQsIDIyOCwgNCwgNTQsIDM5LCA0OSwgMjM3LCAKKyAgICA4NywgNTUsIDM5LCA1MCwgMjM3LCA4NywgNTUsIDM5LCAxNjMsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyMTIsIAorICAgIDIyOCwgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCA1MywgNTUsIDM5LCAyNDYsIDE4LCA1MywgNTUsIAorICAgIDM5LCA0OSwgNTMsIDU1LCAzOSwgNTAsIDUzLCA1NSwgMzksIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDI0NiwgMTgsIDIxNSwgCisgICAgMjUzLCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAxMjYsIDE4NywgNTUsIDM5LCAKKyAgICAyMzksIDE0NywgMTg3LCA1NSwgMzksIDI0MSwgODgsIDI0NiwgNjEsIDM5LCAyNDEsIDg4LCAyMTEsIDE3NywgMzksIDI0MSwgCisgICAgODgsIDI0MywgMjIxLCAzOSwgMjQxLCA4OCwgMjQ2LCA2MiwgMjQ5LCAyMCwgMzksIDQ5LCA1MCwgNTMsIDU1LCAzOSwgMjQxLCAKKyAgICA4OCwgMjE0LCAxODQsIDM5LCAyNDEsIDg4LCAyMjksIDE0NywgMzksIDI0MSwgODgsIDIwNiwgMjE0LCAyMTgsIDU5LCAyMDgsIAorICAgIDg1LCAzOSwgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDUyLCA4MCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAKKyAgICAyNTAsIDIwNCwgOTcsIDM5LCAyMDgsIDcwLCAyMDYsIDI0NSwgMzksIDIwNCwgMjcsIDI0NywgMjA4LCA1NSwgMzksIDk2LCAKKyAgICA1MywgMjE5LCAxOTksIDM5LCAxNjMsIDUyLCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgODYsIDIzNywgODcsIDMsIDE1MCwgCisgICAgMjQyLCA2OCwgMzksIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDM5LCA0OSwgNTMsIDU2LCAzOSwgNTAsIDUzLCAKKyAgICA1NiwgMzksIDI1MCwgNjAsIDU1LCAyNTEsIDEzNCwgMjIwLCA2OSwgMjUxLCAxMTgsIDIwOCwgMTczLCAyMDksIDkzLCAyMTAsIAorICAgIDI1NSwgMTY5LCA2LCAyNDcsIDEyNSwgMjQ0LCA1NSwgMjQ2LCAyMjMsIDI0NiwgMjE4LCAyMjcsIDExNSwgOTcsIDI0NywgCisgICAgMzUsIDIyMCwgNjksIDI0NywgODQsIDIwNiwgMjU0LCAyNDAsIDIzMSwgMjQ1LCAyMDAsIDIxNCwgMTgxLCAyNDQsIDU1LCAKKyAgICAyNDAsIDkwLCAxMzIsIDUsIDIzOSwgNzUsIDEzMiwgNiwgMjM3LCAxNzEsIDI0OCwgNDEsIDYsIDIzNywgMTcxLCAxNjksIDYsIAorICAgIDIzNywgMTcxLCAyMTgsIDkzLCAyNDUsIDIwMCwgMjE4LCA5MywgMjQ1LCAyMDEsIDExNSwgMTIwLCAyMTgsIDE2NywgMTMyLCAKKyAgICA2LCA3NSwgMjQ4LCA0MSwgNiwgNzUsIDEzMiwgNiwgMTU5LCAxMzIsIDUsIDE1OSwgMjI4LCAxMzEsIDY2LCAyNDgsIDIzMSwgCisgICAgOTcsIDE2OSwgNiwgMjIzLCAxNjMsIDIyMSwgNDIsIDU0LCAyMTEsIDI0MSwgMjE2LCAxNDYsIDI0NSwgMTY4LCAxMzIsIDYsIAorICAgIDIxOSwgMTg0LCAxNjksIDYsIDIxOSwgMTg0LCAxNjksIDYsIDIxNywgMTM0LCAxMzIsIDYsIDE0NiwgMjQ4LCA0MSwgNiwgCisgICAgMTQ2LCAxNjksIDYsIDE0NiwgMjE3LCAyNDMsIDIwOSwgMjQxLCAyMTYsIDg2LCAyMTMsIDEyMiwgODIsIDIwOSwgMTYyLCAKKyAgICA1NCwgMjA4LCAxMTUsIDEzMSwgNTQsIDIwNiwgMzksIDE2OSwgNiwgMjAyLCAxNTksIDIxOSwgMjE1LCA1NCwgMjIwLCA1OSwgCisgICAgNTQsIDIzMCwgMjM5LCAyMjAsIDU5LCA1NCwgMjQ4LCA0MSwgNiwgMjAyLCAxNTksIDIwNywgMTc0LCAzMCwgNSwgMSwgMjMwLCAKKyAgICAyMzAsIDIyOSwgMTg4LCA1NCwgMjUwLCAyMTMsIDU0LCAxMzIsIDYsIDI0OSwgMjU1LCAyNDgsIDQxLCA2LCAyNDcsIDEyNSwgCisgICAgMjQwLCAyNTUsIDk3LCAxMzIsIDUsIDc0LCAxMzIsIDYsIDc0LCAxMzIsIDYsIDI0MCwgMTc0LCAyMDcsIDE3NCwgNiwgMjQwLCAKKyAgICAxNzQsIDEzMiwgNiwgMjI2LCAxODUsIDEzMiwgNSwgNzgsIDEzNywgOTcsIDI0OCwgMTA5LCA5NywgMjM4LCA2OCwgOTcsIAorICAgIDI0NCwgMTc5LCA5NywgMjMxLCAyNSwgMjExLCAyMzksIDIxNSwgMTk4LCA2LCAyMTcsIDEzNCwgMjQwLCA5MywgNTQsIDE2OSwgCisgICAgNSwgMjE4LCAxNjcsIDE2OSwgNSwgMjM4LCAyMzUsIDE2OSwgNiwgMjM4LCAyMzUsIDE2OSwgNiwgMjE4LCAxNjcsIDE2OSwgCisgICAgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMDcsIDE3NCwgNDEsIDYsIDIzOSwgNzUsIDIwNywgMTc0LCA0MSwgNiwgMTU5LCAyMTYsIAorICAgIDczLCA0MSwgNiwgMTU5LCAyMDcsIDE3NCwgNDEsIDYsIDIwMywgMTI0LCAxNjksIDM3LCA2LCAyNDUsIDUxLCAxNjksIDM3LCAKKyAgICA1LCAyNDUsIDUxLCAxNjksIDM3LCA1LCA3NCwgMTY5LCAzNywgNSwgNzUsIDE2OSwgMzcsIDUsIDIzMCwgMTg0LCAyMTcsIAorICAgIDIxMiwgMjI3LCAxMTQsIDIwNywgMTc0LCAyNTAsIDIzNSwgMjE4LCAyNDcsIDU0LCAyNTEsIDQxLCAyMDcsIDE3NCwgNSwgCisgICAgMjQwLCAxNzQsIDE2LCAzNSwgMjE0LCAyNTIsIDIxMSwgMjM5LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjEzLCAxMDcsIAorICAgIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMjIsIDU3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCAxNDMsIDIwNCwgCisgICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjA5LCA1NywgMjA0LCAxNjEsIAorICAgIDIzOSwgMTM4LCAxMTgsIDI0MCwgMjEsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKKyAgICAxMzgsIDEyNiwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDE0NywgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCisgICAgMTM4LCAxMTgsIDIxMiwgNzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIxMiwgNzYsIDIwNCwgMTYxLCAyMzksIAorICAgIDEzOCwgMTE4LCAyNDEsIDEzOCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAKKyAgICAxMzgsIDIzOSwgMjMzLCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjQxLCAxMzYsIDIzOSwgCisgICAgMTM4LCAyMjEsIDQzLCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDgsIDIxNSwgCisgICAgMjEwLCAyMjEsIDQ0LCAxNDcsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDIxNSwgCisgICAgMjEwLCAyMjEsIDQ0LCAxOTUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTMsIDExMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgCisgICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgMjE1LCAyMTAsIDIyMSwgCisgICAgNDQsIDI0MSwgMTEyLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA3LCAxNTQsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCAKKyAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMzYsIDExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzYsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDUsIDIxNSwgMjEwLCAKKyAgICAyMjEsIDQ0LCAxMDgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDcsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDUsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTUsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKKyAgICAyMTMsIDExMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDUsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MSwgMTEyLCA1LCAyMTUsIDIxMCwgCisgICAgMjIxLCA0NCwgMjA3LCAxNTQsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCisgICAgMTE4LCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIAorICAgIDQ0LCAxMTgsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzcsIDI0NywgMTI2LCAyNDUsIDUxLCAKKyAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MywgMjA5LCAKKyAgICAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxNiwgNzMsIDExOCwgMjM2LCAxMSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjUsIAorICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTIsIDg4LCAyMjcsIDI1NSwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAKKyAgICAyNDEsIDE4MiwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgCisgICAgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIwMiwgODUsIDIwOSwgNTcsIDIwNywgMTc0LCAKKyAgICAxNywgMTA4LCAyMDcsIDE3NCwgMTcsIDE0NywgOTYsIDQ3LCAxNzcsIDQ3LCA4NiwgNDcsIDE4MywgNDcsIDQ5LCA1MCwgNDcsIAorICAgIDExMiwgMTIxLCA0NywgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyNDEsIDE3NiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCisgICAgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgOTYsIDUzLCAzLCA5NSwgODYsIDUzLCAzLCA5NSwgOTYsIDIwNCwgNzYsIDQ3LCAKKyAgICA4NiwgMjA0LCA3NiwgNDcsIDk2LCAxMjAsIDIzNywgNjIsIDQ3LCAxNzcsIDEyMCwgMjM3LCA2MiwgNDcsIDg2LCAxMjAsIAorICAgIDIzNywgNjIsIDQ3LCAxODMsIDEyMCwgMjM3LCA2MiwgNDcsIDk2LCA1MywgMywgMjA5LCAyNDgsIDg2LCA1MywgMywgMjA5LCAKKyAgICAyNDgsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUzLCAyMzksIDEyMCwgCisgICAgMTQyLCAxODMsIDUzLCAyMzksIDEyMCwgMTQyLCAxMTIsIDEyMSwgNTMsIDMsIDI0OCwgMjE4LCA5NiwgNTMsIDMsIDExMywgCisgICAgODYsIDUzLCAzLCAxMTMsIDk2LCA1MywgMywgMjI3LCAxNCwgODYsIDUzLCAzLCAyMjcsIDE0LCA0OSwgNTAsIDIwNCwgNzYsIAorICAgIDQ3LCA0OSwgNTAsIDUzLCAzLCA5NSwgMTgzLCAyMDIsIDMwLCA0NywgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAKKyAgICAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjE2LCA1LCAxODMsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE4MywgNTMsIDMsIAorICAgIDIwOCwgMjExLCAyMTYsIDUsIDg2LCA1MywgMywgMjQ1LCAxNjYsIDI0MiwgNjgsIDE4MywgNTMsIDMsIDI0NSwgMTY2LCAKKyAgICAyMjcsIDIxMiwgMjUwLCAxOTQsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgNDcsIDI0NiwgMTgsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgCisgICAgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAxNjMsIDE0MiwgOTYsIDUzLCAyMDgsIDE3MywgMjQ4LCAyMzEsIAorICAgIDExNSwgODYsIDUzLCAyMDgsIDE3MywgMTQyLCAyNTAsIDE5NCwgMTcxLCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMTcxLCAKKyAgICAyNDYsIDYyLCA0NywgOTYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIAorICAgIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDUsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDIzNywgCisgICAgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDE4MywgMjM3LCA4NywgMywgMTUwLCAKKyAgICAyMTYsIDUsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDUzLCAxMTUsIDk2LCA0NywgMTc3LCA1MywgOTYsIAorICAgIDc2LCAxODMsIDQ3LCA5NiwgNTMsIDExNSwgODYsIDQ3LCA5NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjE5LCAxNDYsIAorICAgIDI1MCwgOTEsIDg2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTgzLCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDIzNywgODcsIDExNSwgCisgICAgODYsIDIzNywgODYsIDg2LCAyMzcsIDg3LCAxMTUsIDk2LCAyMzcsIDg2LCA5NiwgNTIsIDUzLCAzLCA5NSwgNDksIDUwLCAKKyAgICA1MiwgNTMsIDMsIDk1LCA4NiwgNTIsIDUzLCAzLCA5NSwgOTYsIDUyLCA0NywgMTc3LCA1MiwgNDcsIDg2LCA1MiwgNDcsIAorICAgIDE4MywgNTIsIDQ3LCA0OSwgNTAsIDUyLCA0NywgMTEyLCAxMjEsIDUyLCA0NywgMTUzLCAyMDQsIDQ2LCA1MiwgNDcsIDE1MywgCisgICAgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MiwgNDcsIAorICAgIDk2LCAyMDgsIDcwLCA0NywgODYsIDIwOCwgNzAsIDQ3LCA5NiwgMjExLCAxNzEsIDQ3LCA4NiwgMjExLCAxNzEsIDQ3LCAKKyAgICAxNzcsIDUzLCAzLCA1MiwgOTUsIDE4MywgNTMsIDMsIDUyLCA5NSwgOTYsIDI0NCwgMTQzLCA0NywgMTc3LCAyNDQsIDE0MywgCisgICAgNDcsIDg2LCAyNDQsIDE0MywgNDcsIDE4MywgMjQ0LCAxNDMsIDQ3LCA5NiwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgCisgICAgMjA4LCAxNzMsIDE0MiwgOTYsIDYxLCA0NywgMTc3LCA2MSwgNDcsIDg2LCA2MSwgNDcsIDE4MywgNjEsIDQ3LCAxNzcsIDYxLCAKKyAgICA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAKKyAgICAyMTksIDI3LCAzLCAyMzYsIDEwNiwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNywgMywgODAsIDE0MiwgCisgICAgMTc3LCA2MSwgNTIsIDQ3LCAxNzcsIDYxLCA1MiwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDg2LCA2MSwgNTMsIDIzOSwgMTIwLCAKKyAgICAyMDQsIDk5LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMjQ1LCAxNjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIAorICAgIDIwOCwgMTczLCAyNDUsIDE2NSwgMTEyLCAxMjEsIDYxLCA0NywgNTAsIDUzLCAzLCA1LCAyNDYsIDYxLCAxODMsIDUzLCA5NiwgCisgICAgNzYsIDE3NywgNDcsIDEyNiwgODYsIDI1MCwgOTEsIDk2LCA1MywgMywgODAsIDk1LCA4NiwgNTMsIDMsIDgwLCA5NSwgNDksIAorICAgIDUwLCA1MywgMywgODAsIDk1LCA5NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCA1MywgMywgNTIsIDgwLCA5NSwgNDksIDUwLCAKKyAgICA1MywgMywgNTIsIDgwLCA5NSwgOTYsIDIyMCwgNiwgNDcsIDg2LCAyMjAsIDYsIDQ3LCA0OSwgNTAsIDIyMCwgNiwgNDcsIAorICAgIDM1LCAyNTEsIDE0LCAyNDUsIDIyOCwgMjE5LCA2OSwgMjQzLCAyMDUsIDIwOSwgODMsIDI0MCwgMjA3LCAyMDksIDgzLCAKKyAgICAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0MCwgMjA4LCAyNDEsIDk0LCAyMTMsIDExNywgMjMxLCAzOCwgMjIzLCAxMDEsIDI0MSwgCisgICAgMTE1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMjUwLCAyMzIsIDI0MSwgMTE1LCAyMjAsIDY5LCA1LCAyNDEsIDExNSwgMjIwLCAKKyAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAKKyAgICAyMjQsIDI0NCwgNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDEsIDg0LCA3NiwgMjE3LCAyMTQsIDIyMywgCisgICAgMTYyLCAyMTcsIDIyNCwgMjIzLCAxNjIsIDI0NSwgMTcxLCAyMjMsIDE2MiwgMjEwLCAyMTcsIDIyNCwgMTAzLCA1NCwgMjI0LCAKKyAgICAxMDEsIDU0LCA3MCwgMjE4LCA3NiwgMjQzLCAxMzcsIDIxMiwgNTcsIDIxMywgMTE4LCAyMjQsIDEwMiwgMjUwLCA2MCwgCisgICAgMjE5LCAyNTQsIDIxNSwgMjUzLCAyMTksIDI1NCwgMjQ3LCAxNzgsIDIxOSwgMjU0LCA1MSwgMjE1LCAyMDQsIDI0NSwgMTA2LCAKKyAgICAyMTUsIDIwNCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAyMTcsIDIxMCwgMTM1LCAyMzEsIDI3LCA1MCwgMjUwLCAyMTcsIDI1MCwgCisgICAgMjE3LCAyMjUsIDE3LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE3LCAyNDMsIDEzOSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKKyAgICAyNDMsIDE0MywgMjE5LCA4MiwgMTM1LCAyMjEsIDE2NiwgMjE5LCA4MiwgMTM1LCAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAKKyAgICAzNywgMjE5LCAyNDQsIDIzMCwgMjQ0LCAyMDYsIDIzNywgMjMxLCAyLCA1MiwgMjMxLCAyLCAyMDgsIDcwLCAyMzEsIDIsIAorICAgIDI0NSwgMTg4LCAyMzEsIDIsIDIxMCwgMTg5LCAyMzEsIDIsIDIwNSwgMTc4LCAyMzEsIDIsIDI0NiwgMTgsIDIzMSwgMiwgCisgICAgMjQ2LCAxOCwgMjQ1LCAxODgsIDIzMSwgMiwgMjUwLCAxOTQsIDI0NSwgMTg4LCAyMzEsIDIsIDIwOSwgODIsIDI0OCwgMTUyLCAKKyAgICAyMTYsIDE2OCwgMjE3LCAyMTEsIDcwLCAyMjQsIDEwMiwgMjQwLCAyMTUsIDIzOCwgMTcyLCAyMTcsIDIxMSwgMjM2LCAxMjEsIAorICAgIDIwOCwgMjI4LCAyMTksIDI1NCwgMjE2LCA3MywgMjA4LCAyMjcsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCAyMTIsIDEyMiwgCisgICAgMjA0LCA3NSwgMjAzLCAyMjYsIDIxNywgMjI0LCAyMjEsIDE2NiwgMjA4LCAyMjcsIDIyNCwgMTAzLCAyMDgsIDIyNywgMjUwLCAKKyAgICA1MywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTAsIDUzLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgCisgICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNTEsIDEyNywgMTU2LCAxMzUsIDIyMiwgMjMyLCAyNTAsIDE1MSwgMjIxLCAxNzUsIAorICAgIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjUxLCA3LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDI1MSwgNywgCisgICAgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIwOCwgMjI3LCAyNTEsIDE1LCAxNTYsIDEzNSwgMjQxLCAzMCwgCisgICAgMTM1LCAyMzgsIDE3MSwgMjQxLCAzMCwgMTM1LCAyNDMsIDIwNiwgMjQ4LCAxMDMsIDI1MCwgMTUzLCAyMDksIDkzLCAyMjcsIAorICAgIDEyMiwgMjM4LCAxNzEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIwOSwgOTMsIDIzMSwgCisgICAgNjUsIDIyMCwgNjksIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNDUsIDI0MywgMjQxLCAKKyAgICAzNCwgMjQxLCAzNSwgMjQ1LCAyNDIsIDIxNSwgMjUzLCAyMzEsIDUwLCAxNTYsIDEzNSwgMjE1LCAyNTMsIDE1NiwgMTM1LCAKKyAgICAyNDUsIDE1OSwgMTM1LCAyNDAsIDI1NCwgMjQxLCAzMywgMTM1LCAyMTEsIDk1LCAyNDEsIDM0LCAyNDQsIDM4LCAxNTYsIAorICAgIDEzNSwgMTU2LCAyMDgsIDE3MywgMjQ3LCAxMzcsIDI0NCwgNTYsIDIyNSwgMTcsIDI0NywgMTM2LCAyMTcsIDQ1LCAxNTYsIAorICAgIDEzNSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzUsIDE1NCwgMTM1LCAyMjEsIDE2NiwgMjM1LCAxNTQsIDEzNSwgMjExLCAzOSwgCisgICAgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDE1NiwgMTM1LCAKKyAgICAyMjcsIDE3OSwgMTE1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDExNSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgCisgICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyNDAsIAorICAgIDIyNywgMTc4LCAyMjMsIDI0MCwgMjM3LCAyNDYsIDI0OCwgMTAzLCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMjEsIDE2NiwgCisgICAgMjI3LCAxNzgsIDIyMSwgMTY2LCAyMzcsIDI0NiwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMTU2LCAxMzUsIAorICAgIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgCisgICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDI0MSwgMzAsIAorICAgIDEzNSwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIzNywgCisgICAgMjQ2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIyNywgMTc4LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyMzcsIAorICAgIDI0NiwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjI3LCAxNzgsIDIxNywgMjQ5LCAyMTAsIDIzNiwgMjE3LCAKKyAgICAyNTAsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDIxOSwgCisgICAgMjQ1LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAorICAgIDIxNywgMjUyLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM4LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjEwLCAxOTgsIDIyMCwgCisgICAgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAyNDUsIDIyMCwgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAxOTgsIDIyMCwgNjksIAorICAgIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIyLCAKKyAgICAyMzIsIDM0LCAyMTAsIDI0NSwgNzYsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDM0LCAyMTAsIDE5OCwgNzYsIAorICAgIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCAzLCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMywgCisgICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDIyMSwgMjIzLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjA2LCAyMzcsIDUxLCAKKyAgICAyMzEsIDY1LCAyMjAsIDY5LCA1MSwgMjE5LCAyMzYsIDIyMCwgNjksIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgCisgICAgMTM1LCA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyNDcsIDQ4LCA1MSwgMjQ1LCA5OSwgNDMsIAorICAgIDIxOCwgNzYsIDQzLCAyMjQsIDEwMiwgNDMsIDIwOCwgMjE5LCA0MywgMjQzLCAxMzcsIDIxMiwgNTcsIDQzLCA3MCwgMjE5LCAKKyAgICAyNTQsIDQzLCAyMTUsIDI1MywgMjE5LCAyNTQsIDQzLCAyNTAsIDYwLCAyMTksIDI1NCwgNDMsIDI0MSwgMzQsIDQzLCAyNDQsIAorICAgIDE0NCwgMTAzLCAyMTgsIDc2LCAxMDMsIDIyNCwgMTAyLCAxMDMsIDIwOCwgMjE5LCAxMDMsIDcwLCAyMTksIDI1NCwgNTAsIAorICAgIDIxMCwgMywgNDksIDIxMCwgMywgMTIxLCAyMTAsIDMsIDExMiwgMjEwLCAzLCAyNTAsIDYzLCAyMjQsIDc3LCAyMDgsIDQ5LCAKKyAgICAyMzksIDE2NSwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgCisgICAgMjA3LCAxNzMsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAyMDUsIDIyMSwgMTY2LCAyMDgsIDQ5LCAyNDMsIDEwNCwgMjIxLCAKKyAgICAxNjYsIDIzOSwgMTY2LCAyMjIsIDIzNCwgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAyMDcsIDE3MywgMjE3LCAyNTAsIAorICAgIDIwNiwgMjQ4LCAyMTYsIDExNywgMjEwLCAyMzcsIDIwNiwgMjQ4LCAyMTYsIDExNywgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCAKKyAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgCisgICAgMTU2LCAxMzUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxOSwgCisgICAgMjM2LCAyMjAsIDY5LCAyMzEsIDY1LCAyMjAsIDY5LCAyMjMsIDIyOCwgMjM3LCAyNCwgMjQ1LCAyMDUsIDIyNSwgNjksIAorICAgIDIzMCwgMjU1LCAyMDMsIDE1NiwgMjIzLCA4MSwgMjIxLCAxNzQsIDUwLCAyNTAsIDIxOCwgMywgMjUwLCAxMjgsIDUwLCAKKyAgICAyMDgsIDg1LCAyMjMsIDE2MiwgMjI3LCAzNywgMjUwLCAyMjYsIDIyMywgMTYyLCAyMjcsIDM3LCAyMTksIDI0NCwgMjIzLCAKKyAgICAxNjIsIDIzMCwgMjQ0LCAyMjMsIDE2MiwgMjA2LCAyMzcsIDI0MywgMjIyLCAyMTksIDI1NCwgNzAsIDIxOSwgMjU0LCAyMTEsIAorICAgIDk1LCAyMTksIDI1NCwgMjQzLCAxMzcsIDIwOCwgMjE5LCAyNDcsIDIzNCwgNDksIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIAorICAgIDE0MiwgMjE3LCAyMjQsIDUwLCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAxNDIsIDIxNywgMjI0LCA0OSwgMjEzLCAxNDIsIAorICAgIDIxNywgMjI0LCA1MCwgMjEzLCAxNDIsIDIxNywgMjI0LCAyMTYsIDczLCAyMDgsIDIyOCwgMjQxLCAzNCwgMjQ1LCA5MywgCisgICAgMjI3LCAzNywgMjE5LCAyNDQsIDI0NSwgOTMsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjEwLCAyNDQsIDUyLCAyMTAsIAorICAgIDE5NywgNTIsIDIzMCwgMjQ0LCA1MiwgMjA2LCAyMzcsIDIxOCwgMTAzLCAxNTYsIDI1LCAyMTksIDgyLCAxMzUsIDIyNywgCisgICAgMTc5LCAzLCAyNDMsIDg1LCAyMzcsIDI0NywgMywgMjQzLCA4NSwgMjA1LCAyNDIsIDIyMywgMjQwLCAyMjcsIDE3OCwgMjA1LCAKKyAgICAyNDIsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjI3LCAxNzksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgCisgICAgMjM3LCAyNDcsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAorICAgIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKKyAgICAyMTcsIDI0OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIxMCwgMjM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgCisgICAgMjUzLCAyMTksIDI0NSwgMjQxLCAzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOSwgMjE5LCAyNDUsIDI0MSwgMzYsIAorICAgIDIyMSwgMTY2LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDUxLCAyMTksIDIzNiwgCisgICAgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAKKyAgICA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIDIyMSwgCisgICAgMTY2LCAyNDEsIDMwLCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjE3LCAyNTAsIAorICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAKKyAgICAxMzUsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIDY5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAKKyAgICAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAxNTYsIAorICAgIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIAorICAgIDI0MSwgMzYsIDgwLCAyNDEsIDEwOCwgMjI0LCAxNDYsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMTEyLCA1MCwgMjQzLCAyMjgsIAorICAgIDI0MSwgMTA4LCAxMjEsIDUwLCAyNDMsIDIyOCwgMjQxLCAxMDgsIDI0MSwgMTE1LCA3NiwgMywgMTYzLCAyMzYsIDEwNiwgCisgICAgOTUsIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAKKyAgICAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgMjQxLCAKKyAgICAxMTUsIDc2LCAzLCA3MCwgNTUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAyMDMsIDUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAKKyAgICAyMDMsIDI0MSwgMTE1LCA3NiwgMywgMjA2LCAyNDYsIDI0MSwgMTE1LCA3NiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAxOSwgCisgICAgMjQ1LCAxOTQsIDMsIDE2MywgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIAorICAgIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgCisgICAgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgMjAyLCAxNjAsIAorICAgIDIyMSwgMTY0LCAyNDksIDExLCAyMjQsIDI0MywgMjQzLCAyMjMsIDU0LCAyNDEsIDExNywgNDcsIDIzNiwgMzgsIDExMiwgCisgICAgMjUwLCA5NCwgMTIxLCAyNTAsIDk0LCAyMTcsIDIxOCwgMjE4LCAyMjcsIDIwNCwgNzIsIDIyNywgMTE0LCA0OSwgMjQ2LCAKKyAgICAyMjYsIDUwLCAyNDYsIDIyNiwgNDksIDIzOSwgMjA0LCA1MCwgMjM5LCAyMDQsIDI0NywgMjQ4LCA1MCwgMjQ1LCAxMzIsIAorICAgIDI0NywgMjQ4LCA0OSwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAxMzIsIAorICAgIDIxNiwgNzMsIDIyMSwgMTY2LCA1NCwgNTEsIDIyNiwgMjQ2LCAyNTAsIDEyOCwgMjE0LCAxNTgsIDIxNCwgMTY2LCAyMDksIAorICAgIDE2MiwgMjE2LCAxNDcsIDIxOCwgMzQsIDIzMSwgMzEsIDIwNSwgMjE4LCAyMTEsIDE3NywgMjE4LCA5NywgNzYsIDIzMCwgCisgICAgMjU0LCA1NCwgMjA3LCAxNzQsIDIyMSwgMTY2LCA1NCwgMjA0LCA4MiwgMjM2LCA0MCwgMjA4LCAxNDUsIDQ5LCAyNDUsIAorICAgIDE2NSwgMjA4LCAxNDUsIDUwLCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDQ5LCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDUwLCAyNDUsIAorICAgIDE2NSwgMjA4LCAxNDUsIDE2MiwgMjMxLCAyLCAyNDcsIDI0OCwgMTYyLCAyMzEsIDIsIDIzOSwgMTE1LCAyMTIsIDMxLCAKKyAgICAxMTIsIDI1MCwgOTUsIDI0OCwgMTA0LCAxMjAsIDIzNiwgMTA2LCAyNDgsIDIyMCwgMjE5LCAyNDcsIDIyOSwgMTUxLCAyNDEsIAorICAgIDI2LCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAxNiwgMjAzLCAxOTcsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgMjQ3LCAKKyAgICAyMzMsIDIyOSwgMTQ5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjUwLCAyMTgsIDE1NSwgMjQxLCAyNiwgCisgICAgMjA4LCAxNzMsIDIwOSwgOTMsIDIyNywgMjIyLCAyNDgsIDExNSwgMjE1LCAyNTIsIDI0NSwgNjEsIDI1MSwgMTUsIDI1MCwgCisgICAgMTAzLCAyMTAsIDEwMCwgMjA4LCAxMzAsIDIxNSwgMTI1LCAyNDMsIDE4NSwgMjE5LCAyMzcsIDI0NSwgMjA5LCAyMDksIAorICAgIDIyMCwgMjEyLCA0NCwgMjQ1LCAxNTUsIDI0NSwgMTU0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzNSwgMjAzLCAyNTAsIAorICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgMTY5LCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MSwgCisgICAgMzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQzLCAxNDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKKyAgICA2MywgMjQzLCAyMjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyMTcsIDYzLCAyNDYsIDYxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIxMSwgNjksIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTIsIDU4LCAxNDIsIDI1MCwgCisgICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ5LCAyMSwgMTQyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIxMiwgNTcsIAorICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAKKyAgICAyMjcsIDE3OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzcsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCA5NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA4NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyMTcsIDYzLCA5NiwgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgODYsIDQ3LCAyNTAsIDE2OSwgCisgICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIwNiwgCisgICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKKyAgICA2MywgMTIxLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgMzcsIDI1MCwgMTY5LCAyMzksIAorICAgIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTc3LCAyMDYsIDc2LCAyNTAsIAorICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE3NywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIAorICAgIDIxOSwgMjAzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCisgICAgMjE3LCA2MywgMTEyLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgNDgsIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTgzLCAyMDYsIDc2LCAKKyAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE4MywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgCisgICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKKyAgICAxNiwgMjQzLCAyMjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgODksIDIwNiwgMjQ2LCAyNTAsIAorICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEyLCAKKyAgICAyNDAsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIAorICAgIDE2LCAyNDYsIDYyLCAyMTEsIDk0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NSwgMjQyLCAyNTAsIDE2OSwgCisgICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyNDMsIAorICAgIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDk1LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKKyAgICAyMzAsIDg5LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDMsIDIzMSwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAxMjEsIDIxMiwgMjQwLCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDQ5LCAyMTIsIDI0MCwgCisgICAgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDgsIDIyOCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAKKyAgICAxNiwgMjM3LCAyNDcsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NSwgMjM0LCAxNDIsIDI1MCwgMTY5LCAKKyAgICAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjAyLCAyOSwgMjUwLCAxNjksIAorICAgIDIzOSwgOTgsIDE2LCAyMTEsIDcwLCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTMsIDE0NCwgMjA2LCAKKyAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjIxLCAxNjYsIDI0MSwgMzYsIDI1MCwgMTY5LCAyMzksIAorICAgIDk4LCAxNiwgMjE3LCA2MywgMjE3LCA0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDI0NywgMzQsIDIwOCwgMjI3LCAKKyAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjQ3LCAzNCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCisgICAgMjMwLCAyMzAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE2LCA1OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMjAsIDM2LCAKKyAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQxLCAzOCwgCisgICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCAyMzEsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCisgICAgMTYsIDIyMCwgMzcsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMiwgMjIxLCAxNjYsIDI0NiwgMTY5LCAKKyAgICA4MiwgNTAsIDI1MCwgMjE4LCAzLCAxODMsIDIwMiwgMzAsIDQ3LCAyMTIsIDIxMCwgMTcxLCAyNDcsIDIzMywgMjQ4LCAxMjksIAorICAgIDk3LCA4MCwgMjI3LCAxMTUsIDMsIDEwMSwgMjQzLCA4NSwgMjMxLCA4LCA5NywgMjQ1LCAxODksIDIwNiwgMjQ0LCA5NywgCisgICAgMjQzLCAxNTgsIDIwNiwgMjQ0LCA5NywgMjQxLCA5NiwgOTcsIDI0NSwgMjI0LCA5NywgNjEsIDUxLCAzLCAyNDYsIDIxOCwgCisgICAgODAsIDIyNywgMTE0LCAyNDEsIDY4LCA5NywgMjUwLCAyNTAsIDIyOSwgMTUyLCA5NywgMjM3LCAzNywgOTcsIDQzLCAyMzYsIAorICAgIDEwNiwgMjQ4LCAyMzEsIDMsIDIyMSwgMTYzLCA0MywgMjA4LCA4NiwgMjQyLCA3MCwgMjQ3LCAyMDMsIDI0NiwgNjIsIDMsIAorICAgIDIyMSwgMTY5LCA0NywgMjA2LCAyNDIsIDk3LCAyMjQsIDQwLCA5NywgMjM1LCAyMTYsIDk3LCAyMjAsIDcsIDIzNywgMTcwLCAKKyAgICA5NywgMjIwLCA3LCAyMjgsIDEyOSwgOTcsIDIxOSwgNTksIDk3LCAyMTksIDU4LCA5NywgMjQzLCAxNjcsIDI0NSwgOTEsIAorICAgIDE2LCAyMzksIDE1OSwgMTA4LCAyMTIsIDUsIDk3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjIsIDI0NCwgNjgsIAorICAgIDIxMywgMTMxLCAyMjksIDE1MiwgOTcsIDIxNywgMjM4LCAyMTksIDE1MywgMjIyLCAyMDgsIDIxOSwgMTUzLCAyMTcsIDIzNCwgCisgICAgMjE0LCAxODUsIDk3LCAyNDYsIDMzLCAyMTQsIDE4NSwgOTcsIDQ5LCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA0OSwgMjE5LCAKKyAgICA3NywgMjQwLCAyMDAsIDQ5LCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA1MCwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNTAsIAorICAgIDIxOSwgNzcsIDI0MCwgMjAwLCA1MCwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNDksIDUxLCAyNDcsIDIyNywgMjA2LCAKKyAgICAyMjEsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAyNDAsIDIwMCwgNDksIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIAorICAgIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyMDYsIDIyMSwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDI0MCwgCisgICAgMjAwLCA1MCwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgMjQ1LCAxNjUsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKKyAgICAyMjEsIDExMywgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIAorICAgIDIyNiwgMjUxLCAxMTMsIDI0NSwgOTMsIDI0NywgMjI3LCAyNDAsIDIwMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAorICAgIDIyMSwgMTEzLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgCisgICAgMjI2LCAyNTEsIDExMywgMjMxLCAzLCAyNDAsIDIwMCwgMjM2LCAxMDYsIDIyNywgMTE1LCAyNDAsIDIwMCwgMjA2LCAyMjEsIAorICAgIDQ5LCAyMTksIDI0NSwgMjI2LCAyNTEsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIwNiwgMjIxLCA1MCwgCisgICAgMjE5LCAyNDUsIDIyNiwgMjUxLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMTAsIDIxOCwgMjA4LCAxNDQsIAorICAgIDIxMCwgMjE4LCAyNDcsIDI0NywgMjA4LCAxNDUsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIAorICAgIDI0NywgMjI3LCAxMTUsIDIwOCwgMTQ1LCA1MSwgMTU1LCA0MCwgMTYsIDI0NywgMjQ3LCA0OSwgODAsIDk4LCAyMjcsIDExNCwgCisgICAgNTAsIDgwLCA5OCwgMjI3LCAxMTQsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTMsIDIzNiwgMTA2LCAyMTQsIDIwMiwgCisgICAgMjI3LCAxMTIsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTEsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTAsIAorICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgCisgICAgMjQ3LCAyNDgsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAKKyAgICAxMjEsIDI1LCAyMzYsIDEwNiwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIAorICAgIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAKKyAgICAyMzYsIDEwNiwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwOCwgODUsIAorICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDYsIAorICAgIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgCisgICAgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAKKyAgICAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIyNywgMjIyLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDI0NywgMjQ4LCAyMjcsIAorICAgIDIyMiwgNTEsIDIzOSwgMTcyLCAyMTYsIDc4LCA5NywgMjQxLCAxMzEsIDk3LCA4MCwgMjI3LCAxMTUsIDI0MCwgMjAwLCAKKyAgICAyMjQsIDIxNCwgMjQ3LCAyMTQsIDIyNCwgMjE0LCAxNjMsIDExNSwgMjEyLCAyMjcsIDIyNCwgMjE0LCAyMTIsIDIyOCwgCisgICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDEyMCwgMjEyLCAyMTMsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAKKyAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAyMzAsIDk3LCAyMjQsIDIxNCwgMjA4LCA2NiwgMjI0LCAKKyAgICAyMTQsIDIwOSwgMTI0LCAyMjQsIDIxNCwgMjE4LCAyNTMsIDI0MSwgMTgwLCAyMzcsIDIzOSwgMjM5LCA5MiwgMjA4LCAxNDUsIAorICAgIDIxOSwgNzYsIDI0NywgMjQ4LCAyMTksIDc2LCAyMDgsIDE0NSwgMjQ1LCA5MywgMTU1LCAyNDcsIDI0OCwgMjQ1LCA5MywgCisgICAgMTU1LCAyMDgsIDE0NSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjQ3LCAyNDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAorICAgIDYxLCAyMDgsIDEwMSwgMjQ4LCAxMTUsIDIxNSwgMjUzLCAzLCAyNDYsIDYxLCAyMTEsIDUxLCAyMzksIDIxNSwgMjUxLCAKKyAgICAxNDIsIDI0NSwgOTAsIDI0MSwgMTE2LCAyMzAsIDI0NCwgMjQ0LCA2OCwgMjQwLCAyMDQsIDk3LCA2MiwgMjE2LCAxMSwgNTIsIAorICAgIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNTIsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNTIsIDIwOCwgODUsIDYyLCAyNDIsIAorICAgIDY5LCA1MiwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDUyLCAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjI3LCAyMTcsIDUyLCAKKyAgICAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjE2LCAxMSwgMjA4LCA4NiwgMywgNTIsIDgwLCAxNDIsIDI1MSwgMzQsIDI0NiwgCisgICAgMTksIDIxMSwgNTgsIDIwOCwgMjIwLCAyNDYsIDE5LCAyMzYsIDQxLCAzLCAyMzksIDE5NSwgMjE0LCAyNDEsIDYyLCAyMjUsIAorICAgIDEwLCAyMjcsIDIxNywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMDYsIAorICAgIDIyMywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODUsIDUyLCA4MCwgMTQyLCA2MiwgNTEsIDM1LCAKKyAgICAyMTEsIDYxLCA2MiwgMjQ2LCA2MiwgMzUsIDIxNiwgMTQ4LCAxNiwgMzUsIDIyMSwgNDgsIDE2LCAzNSwgMjExLCA5MCwgNzYsIAorICAgIDIzNywgNjEsIDE2LCAzNSwgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgCisgICAgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDE2LCAzNSwgMjQxLCA3MSwgMTYsIDM1LCAyNTEsIDEzMCwgMTYsIDM1LCAKKyAgICAyNDgsIDEyOCwgMTYsIDM1LCAyNDksIDE5LCAxNiwgMzUsIDIzNiwgMTA2LCAyMTAsIDUsIDE2LCAzNSwgMjI3LCAxMTUsIAorICAgIDI0MCwgNTEsIDE2LCAzNSwgODAsIDIxMCwgNSwgMTYsIDM1LCAyMzksIDE1OSwgMjQwLCA1MSwgMTYsIDM1LCAyNDcsIDI1LCAKKyAgICAyMTYsIDc3LCAxNiwgMzUsIDIxMywgNywgMjE5LCAyMTEsIDE2LCAzNSwgMjEzLCA3LCAyMzEsIDQ5LCAxNiwgMzUsIDI0NCwgCisgICAgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMTYsIDM1LCAyNDQsIDgsIAorICAgIDI0NSwgMTg0LCAxMDgsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ3LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIAorICAgIDE0OSwgMTYsIDM1LCAxODIsIDI1MSwgMTMwLCAxNiwgMzUsIDIxMCwgOTUsIDIzMSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIAorICAgIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMTYsIDM1LCAyNDcsIDU5LCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMjUsIDksIDE2LCAKKyAgICAzNSwgMjEwLCAyNDIsIDE2LCAzNSwgMjQxLCA5LCAxNiwgMzUsIDI0MCwgMTEsIDIxMywgMTMwLCAxNiwgMzUsIDIzNywgCisgICAgMjM4LCAyMTMsIDEzMCwgMTYsIDM1LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDE2LCAzNSwgMjA2LCAyMzYsIDIxMywgMTMwLCAKKyAgICAxNiwgMzUsIDIxMSwgMjI4LCAxNiwgMzUsIDI0NCwgNDYsIDI0OCwgMzcsIDk3LCAxNzEsIDI0NywgMjMzLCAxNiwgMzUsIAorICAgIDIyMiwgMjExLCAxNiwgMzUsIDI0NCwgNDcsIDIzOSwgMTU5LCAxMDgsIDE2LCAzNSwgMjEwLCAyNDMsIDIzOSwgMTU5LCAKKyAgICAxMDgsIDIyMCwgODIsIDExMywgMjIwLCA4MiwgMjQ2LCAxOTQsIDIyMCwgODIsIDIzOSwgMTYyLCAyMjAsIDgyLCAyMzAsIAorICAgIDIzOSwgMjM5LCAxNjIsIDIyMCwgODIsIDI0OCwgMTI1LCAyNDcsIDE5MCwgMjIwLCA4MiwgMjQ3LCAyNDEsIDIwOCwgMjUwLCAKKyAgICAyMjAsIDgyLCAyNDcsIDIyNCwgMjQ4LCAyMzYsIDIzNSwgMTUzLCAyMjAsIDgyLCAyNTAsIDIzNywgNzYsIDI0NiwgMTY4LCAKKyAgICAyMjAsIDgyLCAyNDQsIDE0NCwgMjIwLCA4MiwgMjQ1LCA4MCwgMjUxLCAxMzQsIDIyMSwgNDYsIDIyMCwgODIsIDUyLCAyNDksIAorICAgIDIwLCA0MywgMTcsIDEwNSwgNDMsIDE3LCAxMDgsIDQzLCAxNywgMTQ3LCA0MywgMTcsIDE0OSwgNDMsIDE3LCAxNzAsIDQzLCAKKyAgICAxNywgMTk1LCA0MywgMTcsIDIxMywgMTExLCA0MywgMTcsIDE5OSwgNDMsIDE3LCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgCisgICAgMTUyLCA0MywgNDIsIDI0MSwgMTEyLCA0MywgNDIsIDIwNywgMTU0LCA0MywgNDIsIDIwOSwgNTUsIDQzLCA0MiwgMjM5LCAKKyAgICAxNDEsIDQzLCA0MiwgMjQwLCAyMiwgNDMsIDQyLCAyMTIsIDgyLCA0MywgNDIsIDIxMywgMTA4LCA0MywgNDIsIDI0MSwgCisgICAgMTQwLCA0MywgNDIsIDIyMiwgNjAsIDQzLCA0MiwgMjA3LCAxNTEsIDEwMiwgMTcsIDEwNSwgMTAyLCAxNywgMTA4LCAxMDIsIAorICAgIDE3LCAxNDcsIDEwMiwgMTcsIDE0OSwgMTAyLCAxNywgMTcwLCAxMDIsIDE3LCAxOTUsIDEwMiwgMTcsIDIxMywgMTExLCAKKyAgICAxMDIsIDE3LCAxOTksIDEwMiwgMTcsIDIyMiwgNjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAxMDIsIDQyLCAyNDEsIDExMiwgCisgICAgMTAyLCA0MiwgMjA3LCAxNTQsIDEwMiwgNDIsIDIwOSwgNTUsIDEwMiwgNDIsIDIzOSwgMTQxLCAxMDIsIDQyLCAyNDAsIDIyLCAKKyAgICAxMDIsIDQyLCAyMTIsIDgyLCAxMDIsIDQyLCAyMTMsIDEwOCwgMTAyLCA0MiwgMjQxLCAxNDAsIDEwMiwgNDIsIDIyMiwgNjAsIAorICAgIDEwMiwgNDIsIDIwNywgMTUxLCAxNywgMTE4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDEyMCwgMjM5LCAxMDIsIDIxMSwgCisgICAgNjEsIDE3LCAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAxNDcsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAKKyAgICAyMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEyLCA4OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTMsIDExMiwgCisgICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyNDEsIDE0MywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMjIsIDY0LCAyMzksIAorICAgIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgMTUzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTEzLCAyMzksIDEwMiwgCisgICAgMjExLCA2MSwgNDIsIDIwNywgMTU1LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgNTYsIDIzOSwgMTAyLCAyMTEsIDYxLCAKKyAgICA0MiwgMjM5LCAxNDIsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQwLCAyMywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTIsIAorICAgIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMywgMTA5LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTQxLCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIyMiwgNjEsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA3LCAxNTIsIDIzOSwgCisgICAgMTAyLCAyMTEsIDYxLCAxMDIsIDgsIDUsIDEsIDYzLCAxMDIsIDgsIDUsIDEsIDI0OSwgMjU1LCAxMDIsIDgsIDUsIDEsIAorICAgIDI0NywgMTI1LCAxMDIsIDgsIDUsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNSwgMSwgNzQsIDEwMiwgOCwgNSwgMSwgMjQwLCAKKyAgICAxNzQsIDEwMiwgOCwgNSwgMSwgMjM5LCA3NSwgMTAyLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTAyLCA4LCA1LCAxLCA3NSwgCisgICAgMTAyLCA4LCA1LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA1LCAxLCAyMzAsIDU0LCAxMDIsIDgsIDUsIDEsIDE1OSwgMTAyLCA4LCAKKyAgICA1LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA1LCAxLCAyMjMsIDE2MywgMTAyLCA4LCA1LCAxLCA3OCwgMTAyLCA4LCA1LCAxLCAKKyAgICAyMTksIDE4NCwgMTAyLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA1LCAxLCAxNDYsIDEwMiwgOCwgNSwgMSwgMTk0LCAKKyAgICAxMDIsIDgsIDUsIDEsIDIxMCwgNjksIDEwMiwgOCwgNSwgMSwgNjgsIDEwMiwgOCwgNSwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgCisgICAgNSwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNSwgMSwgMjAzLCAxOTYsIDEwMiwgOCwgNSwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgCisgICAgNSwgMSwgMjAyLCAxNTksIDQzLCA4LCA2LCAxLCA2MywgNDMsIDgsIDYsIDEsIDI0OSwgMjU1LCA0MywgOCwgNiwgMSwgMjQ3LCAKKyAgICAxMjUsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCA0MywgOCwgNiwgMSwgNzQsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgNDMsIDgsIAorICAgIDYsIDEsIDIzOSwgNzUsIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgNDMsIDgsIDYsIDEsIDc1LCA0MywgOCwgNiwgMSwgMjMwLCAKKyAgICAxODQsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCA0MywgOCwgNiwgMSwgMTU5LCA0MywgOCwgNiwgMSwgMjI2LCAxODUsIDQzLCAKKyAgICA4LCA2LCAxLCAyMjMsIDE2MywgNDMsIDgsIDYsIDEsIDc4LCA0MywgOCwgNiwgMSwgMjE5LCAxODQsIDQzLCA4LCA2LCAxLCAKKyAgICAyMTcsIDEzNCwgNDMsIDgsIDYsIDEsIDE0NiwgNDMsIDgsIDYsIDEsIDE5NCwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDQzLCAKKyAgICA4LCA2LCAxLCA2OCwgNDMsIDgsIDYsIDEsIDIwNiwgMTY0LCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDQzLCA4LCA2LCAxLCAKKyAgICAyMDMsIDE5NiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDQzLCA4LCA1LCAxLCA2MywgCisgICAgNDMsIDgsIDUsIDEsIDI0OSwgMjU1LCA0MywgOCwgNSwgMSwgMjQ3LCAxMjUsIDQzLCA4LCA1LCAxLCAyNDUsIDUxLCA0MywgCisgICAgOCwgNSwgMSwgNzQsIDQzLCA4LCA1LCAxLCAyNDAsIDE3NCwgNDMsIDgsIDUsIDEsIDIzOSwgNzUsIDQzLCA4LCA1LCAxLCAKKyAgICAyMzcsIDE3MSwgNDMsIDgsIDUsIDEsIDc1LCA0MywgOCwgNSwgMSwgMjMwLCAxODQsIDQzLCA4LCA1LCAxLCAyMzAsIDU0LCAKKyAgICA0MywgOCwgNSwgMSwgMTU5LCA0MywgOCwgNSwgMSwgMjI2LCAxODUsIDQzLCA4LCA1LCAxLCAyMjMsIDE2MywgNDMsIDgsIDUsIAorICAgIDEsIDc4LCA0MywgOCwgNSwgMSwgMjE5LCAxODQsIDQzLCA4LCA1LCAxLCAyMTcsIDEzNCwgNDMsIDgsIDUsIDEsIDE0NiwgCisgICAgNDMsIDgsIDUsIDEsIDE5NCwgNDMsIDgsIDUsIDEsIDIxMCwgNjksIDQzLCA4LCA1LCAxLCA2OCwgNDMsIDgsIDUsIDEsIAorICAgIDIwNiwgMTY0LCA0MywgOCwgNSwgMSwgMjA0LCAxNDQsIDQzLCA4LCA1LCAxLCAyMDMsIDE5NiwgNDMsIDgsIDUsIDEsIDIwMywgCisgICAgMTI0LCA0MywgOCwgNSwgMSwgMjAyLCAxNTksIDQzLCAxNywgMjAyLCA4NCwgMTgyLCA0MywgNDIsIDI0MSwgMTEyLCAxODIsIAorICAgIDQzLCA0MiwgMjA3LCAxNTQsIDE4MiwgNDMsIDQyLCAyMDksIDU1LCAxODIsIDQzLCA0MiwgMjM5LCAxNDEsIDE4MiwgNDMsIAorICAgIDQyLCAyNDAsIDIyLCAxODIsIDQzLCA0MiwgMjEyLCA4MiwgMTgyLCA0MywgNDIsIDIxMywgMTA4LCAxODIsIDQzLCA0MiwgCisgICAgMjQxLCAxNDAsIDE4MiwgNDMsIDQyLCAyMjIsIDYwLCAxODIsIDQzLCA0MiwgMjA3LCAxNTEsIDUyLCA0MywgMTcsIDEwNSwgCisgICAgNTIsIDQzLCAxNywgMTA4LCA1MiwgNDMsIDE3LCAxNDcsIDUyLCA0MywgMTcsIDE0OSwgNTIsIDQzLCAxNywgMTcwLCA1MiwgCisgICAgNDMsIDE3LCAxOTUsIDUyLCA0MywgMTcsIDIxMywgMTExLCA1MiwgNDMsIDE3LCAxOTksIDUyLCA0MywgMTcsIDIyMiwgNjMsIAorICAgIDUyLCA0MywgNDIsIDIwOSwgMTUyLCAxODIsIDQzLCAxNywgMjAyLCA4NCwgOTgsIDExNiwgMTU3LCAyMzYsIDEwNSwgOTgsIAorICAgIDExNiwgNzksIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDYsIDM4LCA5OCwgMTE2LCAKKyAgICAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIAorICAgIDEwNSwgOTgsIDExNiwgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgCisgICAgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIAorICAgIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgCisgICAgOTgsIDExNiwgNzksIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIxNiwgMTYsIAorICAgIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIAorICAgIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKKyAgICAxMjEsIDE1NywgMjUsIDQ5LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAKKyAgICA3OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAxNTcsIAorICAgIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgCisgICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIAorICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMjcsIAorICAgIDIyMiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgCisgICAgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgCisgICAgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgCisgICAgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDUwLCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCA4MCwgCisgICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDQ5LCAKKyAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKKyAgICA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgCisgICAgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgCisgICAgNzksIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgCisgICAgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgCisgICAgMTIxLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIAorICAgIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgCisgICAgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAKKyAgICAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgCisgICAgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAKKyAgICA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAKKyAgICAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAKKyAgICAxMTYsIDE1NywgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDgwLCAyMjcsIDEzNCwgOTgsIAorICAgIDExNiwgNTAsIDc5LCAyNSwgNDksIDgwLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIAorICAgIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKKyAgICAxMTIsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgCisgICAgMTE2LCA0OSwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTEyLCA3OSwgMjUsIDQ5LCAKKyAgICAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA0OSwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgCisgICAgMTIxLCA3OSwgMjUsIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDExMiwgMjM2LCAxMDYsIAorICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgNTAsIDE1NywgCisgICAgMjUsIDQ5LCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNzksIAorICAgIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDUyLCAKKyAgICAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgNTIsIAorICAgIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA1MiwgMjM2LCAxMDUsIDk4LCAxMTYsIDUyLCAyMDYsIDM4LCA5OCwgMTE2LCAKKyAgICAxMjEsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKKyAgICAxMTYsIDUyLCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMjEsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKKyAgICAxMTYsIDEyMSwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCisgICAgMTEyLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCisgICAgMTE2LCA1MiwgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCisgICAgMTE2LCAxMTIsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAorICAgIDgwLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCA4MCwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKKyAgICAxMTYsIDUyLCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCisgICAgMTE2LCA4MCwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKKyAgICAxMjEsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCAyMzYsIDEwNiwgCisgICAgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIAorICAgIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgCisgICAgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAKKyAgICA4MCwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAKKyAgICAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMjcsIAorICAgIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIAorICAgIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgCisgICAgMjUxLCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIAorICAgIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDI0NSwgMTMwLCA5OCwgMTE2LCAxNTcsIDIyNywgMjIyLCA5OCwgCisgICAgMTE2LCAxNTcsIDIwNiwgMjI0LCA5OCwgMTE2LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQyLCA3MCwgOTgsIAorICAgIDExNiwgNzksIDIyNywgMjIyLCA5OCwgMTE2LCA3OSwgMjA2LCAyMjQsIDk4LCAxMTYsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAKKyAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgMTU3LCA0OSwgMjUsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIAorICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCA3OSwgNDksIDI1LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAKKyAgICAxNTcsIDI0MiwgNzAsIDIwNiwgMjIxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAKKyAgICAyMjYsIDI1MSwgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAKKyAgICAyNTEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDIzOSwgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgCisgICAgMjE3LCA1NCwgMjQ4LCAzMywgMjI2LCAyNTEsIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgMjM5LCAxMDIsIDI0OCwgCisgICAgMzMsIDQ5LCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxMjYsIDIxNywgNTQsIDI0OCwgMzMsIDQ5LCAyMzksIAorICAgIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxNjIsIDI0OCwgMzMsIDQ5LCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgCisgICAgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCA0OSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgNTAsIDE2MiwgMjQ4LCAzMywgMTU3LCAKKyAgICAyMTMsIDc5LCAyMjUsIDEwLCAyMTMsIDc5LCAyNDQsIDE1MCwgMjEzLCA3OSwgMjA2LCAyMjEsIDExOCwgMjQxLCAxMzksIAorICAgIDI0OCwgMzMsIDUwLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAyMTcsIDYwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDIxNywgCisgICAgNjAsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCAKKyAgICA0OSwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAKKyAgICAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIAorICAgIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgCisgICAgMjE3LCA2MCwgMjA2LCAyMjEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMjcsIAorICAgIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDYyLCAKKyAgICAyMTEsIDE3NywgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgNjEsIDUxLCAyNDUsIDE5NSwgCisgICAgNjIsIDUsIDIxMSwgMTc3LCA1MSwgMywgMjM2LCAxMDYsIDI0MCwgOSwgNTEsIDMsIDgwLCAyNDAsIDksIDUxLCAzLCAyMTksIAorICAgIDIyOSwgMjQ1LCAxMjUsIDI0MCwgOSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCA1MCwgMjQwLCAKKyAgICA5LCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAyNTEsIDQ5LCAyNDAsIDksIDUxLCAzLCAyNDMsIDIyOCwgCisgICAgMjQ1LCAxMjUsIDI0MCwgOSwgNjIsIDUsIDIxMSwgMTc3LCA2MSwgNSwgMjExLCAxNzcsIDYyLCAyMTYsIDE0MywgNjEsIAorICAgIDIxNiwgMTQzLCA2MiwgODAsIDIxNiwgMTQzLCA2MSwgODAsIDIxNiwgMTQzLCA2MiwgMjE5LCA4MCwgNjEsIDIxOSwgODAsIAorICAgIDYyLCAyMDYsIDIyMywgMjA4LCA4NSwgNjEsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIAorICAgIDYxLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIwOCwgODUsIDYxLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgCisgICAgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMTgsIDYwLCA2MSwgCisgICAgMjE2LCAxMSwgMjE4LCA2MCwgNjIsIDI0MiwgNjksIDIwOCwgODUsIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA2MiwgMjQyLCAKKyAgICA2OSwgNSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDUsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgMjA4LCA4NSwgNjEsIDIyNywgCisgICAgMjE3LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYxLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjIsIAorICAgIDIyNywgMjE3LCAyMTgsIDYwLCA2MSwgMjI3LCAyMTcsIDIxOCwgNjAsIDYyLCAyNDMsIDIyMSwgNjEsIDI0MywgMjIxLCA2MSwgCisgICAgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQzLCAyMjEsIDIzOSwgMjQyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjEsIAorICAgIDI0MiwgODMsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDgwLCAyNDAsIDksIDI0NywgMTczLCA2MiwgMjQ2LCA2MSwgMjQ2LCA2MiwgCisgICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIAorICAgIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIAorICAgIDUwLCAyMTcsIDYwLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyNTEsIDE1LCAyNDcsIDE0OCwgMjA2LCAyMjEsIDQ5LCAyMTcsIAorICAgIDYwLCAyNDgsIDQzLCA0OSwgMTYyLCA2MiwgMjQ2LCA2MSwgNTAsIDE2MiwgNjIsIDI0NiwgNjEsIDIzMCwgMjQwLCAyNDcsIAorICAgIDE3NywgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIyNiwgCisgICAgMjUxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIAorICAgIDEyOCwgMjA2LCAyMjEsIDUwLCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDUwLCAyMTcsIDYwLCAKKyAgICAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjA2LCAyMjEsIAorICAgIDE2MiwgMjQ2LCA2MSwgMjI2LCAyNTEsIDE2MiwgMjQ2LCA2MSwgNjIsIDIyNiwgMjUxLCA1MCwgMjA4LCA4NSwgNjIsIDIyNiwgCisgICAgMjUxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA1MCwgMjA4LCA4NSwgCisgICAgNjEsIDI0NywgMTc3LCA1MSwgMywgNDksIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAKKyAgICAyMDYsIDIyMSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDI0MywgMjI4LCAxNjIsIAorICAgIDI0OCwgNDMsIDYxLCA1MSwgMywgODAsIDI0OCwgNTUsIDIyNywgMTE0LCA2MSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDI0MywgCisgICAgODUsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNTAsIAorICAgIDE2MiwgMjQ4LCA0MywgMjI4LCA4LCAyNDYsIDYxLCA2MSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAKKyAgICAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgNTEsIDMsIAorICAgIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgCisgICAgNjIsIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIAorICAgIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCAyMDYsIDIyMSwgNTAsIAorICAgIDIwOCwgODUsIDIyNiwgMjUxLCA0OSwgMjA4LCA4NSwgNjEsIDIyNSwgMTAsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgMjExLCAKKyAgICAxNzcsIDYxLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIAorICAgIDIwOCwgODUsIDYyLCAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDI0NiwgNywgMjA3LCAzLCAyMTIsIDE1LCAyNDUsIDIzNiwgCisgICAgNjIsIDIxMSwgOTQsIDYxLCAyMTEsIDk0LCAyMjcsIDEzMSwgMjA5LCAxNywgMjEwLCAyMTQsIDI1MCwgNzgsIDIyMSwgMTg4LCAKKyAgICAyNDQsIDE5LCAyMjEsIDE4OCwgMjQ1LCAyMDQsIDIxOSwgMjUwLCA2MiwgMjA5LCAxNjEsIDYxLCAyMDksIDE2MSwgMjQ4LCAKKyAgICAyNDgsIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDI0NiwgMTY4LCAyNDgsIDI0OCwgOTgsIDMsIDIwMywgMTk2LCAyMTQsIAorICAgIDI1NCwgMjA3LCA0LCAzLCAyMTYsIDE5MSwgMjQyLCA0OCwgMjM2LCA0NywgMjQ4LCAxMDIsIDYxLCAyMTIsIDIzNywgMjE4LCAKKyAgICAxNTksIDYyLCAyMTIsIDIzNywgMjE4LCAxNTksIDIxMywgNjgsIDIxNiwgNzMsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCAKKyAgICA1NiwgMjQ3LCAxNzcsIDYyLCA0OSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNDksIAorICAgIDIxOCwgNTksIDIzMSwgMzUsIDYxLCAxMTIsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgCisgICAgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAyNDcsIDExLCA1NCwgMjE2LCAyMDMsIAorICAgIDU0LCAyNDgsIDYyLCA1NCwgMjQ3LCA4MywgMjUwLCAyMDgsIDIxOSwgMjMwLCAyNDUsIDEzMCwgMjQ2LCAxNDMsIDIxNiwgCisgICAgNTksIDI0NSwgMTMxLCA3NiwgMjI3LCA5LCAyNDUsIDEzMSwgNzYsIDIzMCwgMTUxLCAyMTEsIDk1LCAyNSwgMjQ1LCAxMzgsIAorICAgIDI0MCwgNzUsIDk3LCAyNTEsIDExNSwgMjEzLCA3MCwgMjM3LCAxMzEsIDI1LCAyMTIsIDE1OSwgMjE5LCAzMywgOTcsIDIwMywgCisgICAgMSwgMjAzLCA3NiwgMjA4LCA3NSwgMzUsIDIzNywgNTEsIDIwOCwgNzUsIDM1LCAyMjgsIDMzLCAyMDgsIDc1LCAzNSwgMjM5LCAKKyAgICAyNDksIDIwOCwgNzUsIDM1LCAyMDksIDE4LCAyMDgsIDc1LCAzNSwgMjA0LCAxNiwgMjA4LCA3NSwgMzUsIDIwNCwgODAsIAorICAgIDIwOCwgNzUsIDM1LCAyMjQsIDEyLCAyMDgsIDc1LCAzNSwgMjQxLCAxNzksIDIwNCwgMzcsIDc2LCAyNDMsIDI0OSwgNjEsIAorICAgIDIzOSwgMTE0LCAyNDAsIDEwMiwgNjEsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MiwgMjEyLCAzMCwgMjQwLCAxMDIsIDYxLCAKKyAgICAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDI5LCAyMjgsIDEsIDIxNywgNTYsIDIyNCwgCisgICAgMjksIDIyNCwgMjM0LCAyNDAsIDQzLCA1NCwgMjQxLCAxNzksIDIyNSwgMTI3LCA1NCwgMjMwLCA2OSwgMjE0LCAyMTgsIAorICAgIDIwNiwgMjA1LCAyMjIsIDIyNCwgMjE4LCA3MywgMjUwLCAxMTQsIDIwOSwgMjA1LCAyMzgsIDE3OCwgMjQ3LCA1NywgMjI3LCAKKyAgICAxODQsIDIwNSwgMjAyLCAyMjcsIDE0NSwgMjE0LCAxODcsIDIxNSwgMjAsIDI0NywgNDMsIDI1MCwgMTQ1LCAyMTgsIDEwOCwgCisgICAgNjEsIDI0NiwgMTUwLCAyMjksIDgxLCA2MSwgMjQ2LCAxNTAsIDIxNywgNDgsIDYxLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYxLCAKKyAgICAyNDYsIDE1MCwgMjQ4LCA1NCwgNjEsIDI0NiwgMTUwLCAyMjksIDMxLCA2MSwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyNDYsIAorICAgIDE1MCwgMjI5LCA4MSwgNjIsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MiwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MiwgMjQ2LCAKKyAgICAxNTAsIDI0OCwgNTQsIDYyLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjIsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjExLCAyMjYsIAorICAgIDIxMCwgMjI3LCA2MSwgMjM3LCA1NiwgMjEwLCAyMjcsIDYxLCAyNDMsIDIyMiwgMjEwLCAyMjcsIDYyLCAyNDYsIDUsIDIxMCwgCisgICAgMjI3LCA2MSwgMjExLCAyMjYsIDIxMCwgMjI3LCA2MiwgMjM3LCA1NiwgMjEwLCAyMjcsIDYyLCAyNDMsIDIyMiwgMjEwLCAKKyAgICAyMjcsIDYxLCAyNDYsIDUsIDIxMCwgMjI3LCAyMzYsIDQ3LCAyMTEsIDE4MiwgMjE3LCA1NiwgMjIxLCAxNjAsIDI0MSwgCisgICAgMTM5LCAyMjEsIDE2MCwgMjQ4LCAxNTgsIDI0MSwgMTM5LCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDIxMiwgODEsIDIyMSwgMTU1LCAKKyAgICAyMjMsIDE5NSwgMjM5LCAyMTcsIDU0LCAyMjMsIDE5NSwgMjIzLCA2NiwgNTQsIDIyMywgMTk1LCAyMTMsIDU3LCA1NCwgCisgICAgMjA0LCA0NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDI0MSwgMTc2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjA2LCAyMzMsIDIxNiwgCisgICAgMTM5LCA5NywgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMjAsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE4LCAKKyAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTUsIAorICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTEzLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMSwgCisgICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMDksIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIzOCwgMTc2LCAKKyAgICAyMjUsIDcwLCA2MiwgMjA2LCAyMzMsIDIxNiwgMTM5LCA5NywgMjE2LCAxNDAsIDIxOSwgOTUsIDk3LCAyMTksIDY4LCAyMTksIAorICAgIDk1LCA5NywgMjE4LCAyMzgsIDIxOSwgOTUsIDU0LCAyMDQsIDM1LCA5NywgMjQzLCAyMTQsIDI0MCwgMTAxLCAyNDMsIDIxNCwgCisgICAgMjQwLCAxMDAsIDI0MywgMjE0LCAyNDAsIDk5LCAyNDMsIDIxNCwgMjQwLCA5OCwgMjQzLCAyMTQsIDI0MCwgOTcsIDI0MywgCisgICAgMjE0LCAyNDAsIDk2LCA2MSwgMjQ2LCA2MiwgMywgNzAsIDIxNiwgMTYsIDYxLCAyNDYsIDYyLCAzLCAxMjAsIDI0MywgODMsIAorICAgIDYyLCAyNDYsIDYyLCAzLCA2MSwgNzAsIDIxNiwgMTYsIDYyLCAyNDYsIDYyLCAzLCAxMjAsIDYxLCAyNDMsIDgzLCAyMjQsIAorICAgIDQ1LCAzNSwgMjAzLCA3NiwgMjI0LCA0NSwgMzUsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCA3NiwgCisgICAgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDc2LCAyNDMsIAorICAgIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDAsIDYxLCAyMzksIDIyNSwgNjIsIDIzOSwgMjI1LCAyMzcsIDEzMSwgMjUsIDIxOCwgCisgICAgMTYzLCAyNTAsIDIyOCwgMjQ1LCAxMjgsIDIxMCwgMTU0LCAyMTEsIDEwMywgNzYsIDI1MSwgOTIsIDIxNCwgMjAzLCAyNTEsIAorICAgIDI5LCAyMzksIDE5NywgMjM4LCAxODcsIDIxMSwgMTAzLCA3NiwgMjM3LCAyNiwgMjUwLCA0MiwgOTcsIDIzOSwgMjEzLCAKKyAgICAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDEyNiwgMjI3LCAxMDksIDI0NSwgMTgxLCAyMTYsIDE2LCAxMjYsIDIyNywgMTA5LCAKKyAgICAyNDUsIDE4MSwgMjI3LCAyMjIsIDIwNCwgOTEsIDU0LCAxMzgsIDIwNSwgMTc5LCA1NCwgMjQyLCA3NSwgMjQwLCA0MywgNTQsIAorICAgIDI0MiwgNzUsIDIyNSwgMTI3LCA1NCwgMjMwLCAyNTAsIDI0MCwgNDMsIDI1LCAyMjUsIDEyNywgNTQsIDIyNSwgMTI3LCAyNSwgCisgICAgMjQwLCA0MywgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDI1LCAyMjUsIAorICAgIDEyNywgMjUsIDI0MCwgNDMsIDU0LCA4MCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMzYsIDEwNiwgMjI1LCAxMjcsIAorICAgIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEwLCA2MSwgMjQ2LCA2MSwgMjI1LCAxMCwgNjIsIDI0NiwgNjEsIDIyNSwgMTAsIDUsIAorICAgIDYxLCAyNDYsIDYxLCAyMjUsIDg2LCA5NywgMjQzLCAxMzUsIDk3LCAyMDYsIDIzMCwgMjE5LCA2NywgOTcsIDI0NSwgMjQ3LCAKKyAgICAyMzksIDk3LCAyMDYsIDIwMSwgMjIyLCAyMTcsIDI0NiwgMjAzLCAyMTksIDEzNywgMjMwLCA3NSwgMjA1LCAyNDAsIDI0NiwgCisgICAgMTIzLCA2MiwgMjI0LCAzMCwgMjI3LCAxMjgsIDIxMywgMTAxLCAyMTMsIDE0MCwgMjE3LCAzOCwgMjEzLCAxMjAsIDIxMiwgCisgICAgMTAsIDI0OCwgMjUxLCAyNDgsIDIxNywgMTAzLCAyMjksIDE1MSwgNjEsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MSwgMjQyLCAKKyAgICA1OCwgMjI5LCA4MSwgNjIsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MiwgMjQyLCA1OCwgMjI5LCA4MSwgMjEyLCAxNiwgMjA0LCAKKyAgICAzLCAyMTIsIDE5LCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgNywgMjE2LCAxOTAsIDYyLCAyMTIsIDE1LCAyMDksIDE5LCAKKyAgICAyNDYsIDgsIDI1LCAyMTYsIDE5MCwgMjA3LCAxNzQsIDYxLCAyMTIsIDIzNywgMjE4LCAxNTksIDIwNywgMTc0LCA2MiwgCisgICAgMjEyLCAyMzcsIDIxOCwgMTU5LCA2MSwgMjQzLCAyMjIsIDIzMSwgNTAsIDIxMSwgMTc3LCAyNDUsIDEyNCwgMjI4LCAxNSwgCisgICAgMjQzLCAxNjIsIDI0NywgMzksIDIxOSwgMjUzLCAyMTgsIDE2MywgMjQ3LCA0MCwgMjEyLCA0OCwgMjM3LCAzNiwgMywgNjEsIAorICAgIDI0NSwgMTMwLCA0MywgMjQ1LCAxMjQsIDIyOCwgMTUsIDI0NiwgMTk1LCAyMjEsIDE5MiwgMjQxLCA2MiwgMjUwLCAyNTUsIAorICAgIDIyMCwgMjYsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYxLCAKKyAgICAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgNDksIDIyOCwgMTYsIDIyNCwgMjMzLCA2MSwgNDksIDIyOCwgCisgICAgMTYsIDIyNCwgMjMzLCAyNDIsIDUzLCAyMTIsIDQwLCA1NCwgNzksIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA0OSwgMjQ2LCAKKyAgICAxNiwgMjQxLCA2MiwgMTAzLCAyMTQsIDI1NCwgMjQwLCA4NCwgMjQzLCAyMjgsIDIzMSwgNTAsIDYxLCAyNDYsIDYyLCAyMzEsIAorICAgIDUwLCA2MiwgMjExLCAxNzcsIDYyLCAyMDgsIDUwLCAyMTYsIDg0LCA0OSwgMjQxLCA2MSwgMjE2LCA4NCwgNDksIDI0MSwgCisgICAgNjAsIDI1MCwgNTQsIDE2LCAzNSwgMjA2LCAyMDUsIDc5LCAyNDYsIDYyLCAzLCAyMTEsIDMyLCAyNSwgMTIwLCAxODcsIDU1LCAKKyAgICAyMTgsIDI1NCwgMjE2LCAxMywgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMjcsIDIxOSwgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMzAsIAorICAgIDIzOSwgMjE4LCAyNTQsIDYyLCAyNDUsIDEzMSwgMjIwLCAzMiwgMjEzLCA4LCAyMTIsIDI1MiwgMjEyLCAyMDMsIDI0NiwgCisgICAgOTAsIDI0NywgMTksIDIzNiwgMjMxLCAyMTIsIDg5LCAyMzgsIDE4OCwgMjA0LCAzLCAyMzYsIDIzLCAyMzgsIDE4OCwgMywgCisgICAgMjM3LCAxMDEsIDIyNSwgMTA3LCAxNiwgMzUsIDIyNywgMTMzLCAyMjQsIDEyLCAyMDcsIDQsIDIyMCwgMzIsIDIzNywgMjM5LCAKKyAgICAyMzksIDE0OCwgMjM5LCAyMjYsIDIzMSwgNTAsIDIzNiwgMTI2LCAyNDAsIDM0LCAyMTUsIDE1LCA1MSwgMjM5LCAxNDcsIAorICAgIDI0NSwgMTY0LCAyMTIsIDY2LCAyMzUsIDE2MywgMjEyLCA2OSwgMjE4LCAyMzAsIDMsIDI0OCwgMjUxLCAyMDksIDE0NCwgCisgICAgMjMwLCAxNjksIDI0OCwgMjM2LCA5NywgMjM3LCA1OSwgMjM3LCAyNTAsIDk3LCAyMzksIDEwNSwgMjE3LCAxODAsIDI0NSwgCisgICAgMTAwLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDYxLCAyMzksIDIyNiwgMywgMjM2LCAxMDYsIDEwMSwgNjIsIDIxMSwgMzMsIAorICAgIDYyLCAyMTUsIDI1LCAyMTQsIDE5MCwgMjA2LCAyMjEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MiwgMjE0LCAxOTAsIDIyNiwgCisgICAgMjUxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjEsIDIxNCwgMTkwLCA2MSwgNzksIDI0NiwgMTY5LCA4MiwgMjA5LCAxNjIsIAorICAgIDIyNywgNDcsIDU0LCAyMDksIDIyMSwgMjQyLCA1MiwgMjUxLCA1MiwgMjQxLCA1NywgMjE2LCAxODgsIDIzOSwgMjM4LCAKKyAgICAyMTYsIDE4OCwgMjM3LCAxMjMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjAzLCAyMjAsIDIzNywgMTIzLCAyMjYsIDI1MSwgNTAsIAorICAgIDIxOSwgOCwgMjE5LCA4LCAyMDYsIDIyMSwgNTAsIDIxOSwgOCwgNjEsIDIyMiwgOTcsIDYyLCAyMjIsIDk3LCAyNDYsIDE2OSwgCisgICAgODIsIDc5LCAyNDYsIDE2OSwgODIsIDIyMywgMjI0LCAyMDMsIDE5NiwgNzksIDIyMywgMjI0LCAyMDMsIDE5NiwgMjQ4LCAKKyAgICAyNDgsIDIwMywgMTk2LCA3OSwgMjQ4LCAyNDgsIDIwMywgMTk2LCAyMTksIDIwNywgMzAsIDI0NSwgMTMwLCA3OSwgMzAsIAorICAgIDI0NSwgMTMwLCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgNzksIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA4LCAyNDUsIAorICAgIDEzMCwgMjEzLCA3NywgNjEsIDgsIDI0NSwgMTMwLCAyMTksIDIwNywgOCwgMjQ1LCAxMzAsIDIyNSwgMTI0LCAyNDUsIDEzMCwgCisgICAgMjExLCA5NSwgNzYsIDI0NCwgMTM3LCAyMzksIDE0NywgMjA5LCAxODAsIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgCisgICAgMjUwLCA1OSwgNzksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0NiwgMywgMjUwLCA1OSwgNjIsIAorICAgIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDIxMSwgMjIxLCAKKyAgICAyMTEsIDQyLCAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDQzLCA2MSwgMjExLCA5NCwgMTcxLCAyNDYsIDIxOCwgNjIsIDIxMSwgCisgICAgOTQsIDYyLCAyNDYsIDIxOCwgNjEsIDIxMSwgOTQsIDIxOSwgMjA3LCA2MiwgMjExLCA5NCwgNzksIDIxOSwgMjA3LCA2MiwgCisgICAgMjExLCA5NCwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMywgNzcsIDYxLCAyMTEsIDk0LCA3OSwgMjUwLCA1OSwgMTcxLCAyNDYsIAorICAgIDIxOCwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgCisgICAgOTQsIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAorICAgIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIDE0MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAKKyAgICAxNDEsIDYyLCAyMTEsIDk0LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODMsIDIxOCwgNjEsIDI1MCwgCisgICAgNTksIDIwOSwgMTgwLCAyNTAsIDU5LCAxNzEsIDI0NiwgMjE4LCAyMDksIDE4MCwgMjUwLCA1OSwgNzksIDIwOSwgMTgwLCAKKyAgICAyNTAsIDU5LCAyMTIsIDg4LCAyMTgsIDIxOCwgNjIsIDI1LCA2MSwgMjM5LCAyMDAsIDYyLCAyMzksIDIwMCwgNjEsIDIzOSwgCisgICAgMjAwLCAyNDEsIDE0MywgMjE4LCAyMTgsIDIxOSwgMjA3LCA2MiwgMjM5LCAyMDAsIDQzLCAxNzEsIDI0NiwgMjE4LCAyNDEsIAorICAgIDE0MywgMjE4LCA2MSwgMjExLCA5NCwgNzksIDIwOSwgMTgwLCAyMTgsIDExOCwgMjUwLCA1OSwgMjEyLCAxNywgMjA4LCAKKyAgICAyNDQsIDIwOCwgNzgsIDIxMiwgMTcsIDc5LCAyNDYsIDE0NiwgMjEyLCAxNywgMjExLCAyMjMsIDc5LCAyMTEsIDIyMywgCisgICAgMjQ4LCAyNDksIDI1MCwgNTksIDI0MSwgMTQzLCAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDc5LCAyNDEsIDE0MywgCisgICAgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCAyNDUsIDEzMSwgODIsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAxODIsIAorICAgIDEwMywgMjQ1LCAxMzEsIDgyLCAyMjYsIDI1MSwgNTAsIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKKyAgICAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAorICAgIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgNjIsIDIxNywgNDcsIDEzMSwgMjE5LCAyMzMsIDYxLCAyMTcsIDQ3LCAxMzEsIDIxOSwgCisgICAgMjMzLCA2MSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDYyLCAyNDMsIDIyMiwgMjI0LCAxMDMsIDYxLCAyMDMsIDE5NiwgCisgICAgNzksIDI0MCwgMjEyLCAxMzEsIDk3LCAxNTcsIDgwLCAxNDIsIDIyNSwgMTAsIDgwLCAxNDIsIDc5LCA4MCwgMTQyLCA3OSwgCisgICAgMjEyLCAxMjAsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIxMiwgMTIwLCAyNDUsIAorICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCisgICAgMjE5LCAyMzMsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDIxMiwgMTIwLCAKKyAgICAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAorICAgIDIxOSwgMjMzLCAyNDUsIDg2LCAyMTEsIDc4LCAyMTksIDg5LCAyLCAyMTksIDIzMywgNzksIDI0MCwgMjEyLCAxMzEsIDIxOSwgCisgICAgMjMzLCA3OSwgMjM3LCA1NiwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDc5LCA2MiwgMjM3LCA1NSwgMjE1LCAxOTgsIDc5LCAKKyAgICA2MiwgMjM3LCA1NiwgMjQ3LCAxNzcsIDIzOSwgMjAxLCAyMzcsIDU1LCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgNTYsIAorICAgIDI0NywgMTc3LCAyMjUsIDEwLCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDUwLCAyMTksIDc3LCAyMTksIDIzMywgCisgICAgMjI1LCAxMCwgMjM5LCAyMTQsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgMjM5LCAyMTQsIDUwLCAyMTksIDc3LCAKKyAgICAyMTksIDIzMywgMjI1LCAxMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDIxNiwgCisgICAgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgCisgICAgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAKKyAgICAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgCisgICAgMTU3LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMTU3LCA1MCwgMjA4LCAxMzMsIDIxMywgCisgICAgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAKKyAgICAxMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxMDUsIDI0MywgCisgICAgMTc0LCAxODIsIDQzLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKKyAgICAxNDksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5NSwgMjQzLCAxNzQsIAorICAgIDE4MiwgNDMsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCisgICAgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKKyAgICAxNzQsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIAorICAgIDE0OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5NSwgMjQzLCAxNzQsIDQzLCAKKyAgICA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjIyLCAKKyAgICA2MywgMjQzLCAxNzQsIDQzLCA0MSwgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCisgICAgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCAKKyAgICA0MywgNDEsIDE3LCAxNDksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAKKyAgICAxNywgMTk1LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgCisgICAgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDQyLCAyMDksIAorICAgIDE1MiwgNzksIDIwNCwgMjYsIDg2LCA0NywgNzksIDkxLCA1NCwgNzksIDIyNCwgMTAzLCA1NCwgNzksIDI0MywgMTM3LCA1NCwgCisgICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCA4NiwgNDcsIDc5LCAxNTMsIDI0MSwgMTc2LCA0NywgMjQyLCA2MywgCisgICAgMjE4LCA2MywgODYsIDQ3LCA3OSwgMjE1LCAxOTAsIDg2LCA0NywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjA4LCA4NCwgODYsIAorICAgIDQ3LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNjIsIDg2LCA0NywgCisgICAgMjA5LCAzMSwgMjA4LCAxNDMsIDg2LCAyNTAsIDk0LCAyMDksIDMxLCAyNDcsIDI0NiwgODYsIDI1MCwgOTQsIDYyLCA4NiwgCisgICAgMjUwLCA5NCwgNzksIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA4NiwgNDcsIDc5LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgODYsIAorICAgIDQ3LCAyMTEsIDE3NCwgNjIsIDg2LCA0NywgNzksIDI0NSwgMjE3LCA2MiwgODYsIDQ3LCAyMTYsIDEwLCA2MSwgODYsIDQ3LCAKKyAgICAyMjcsIDIxNiwgNjEsIDg2LCA0NywgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDg2LCA0NywgMjM5LCAxMTcsIDIxMywgNzcsIAorICAgIDYxLCA4NiwgNDcsIDc5LCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA3OSwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIAorICAgIDg2LCA0NywgMjIxLCAxNjIsIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDI0NSwgOTMsIDIyNywgMTQsIDIyMSwgCisgICAgMTYyLCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA0MywgNzksIDYxLCA4NiwgNDcsIDIwNCwgMzIsIDg2LCA0NywgCisgICAgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMjQ4LCA0MiwgODYsIDQ3LCAyNDgsIDQyLCAxNTMsIDI0MSwgMTc2LCAKKyAgICA0NywgNzksIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCAyNDgsIDQyLCA4NiwgNDcsIDc5LCAyNDgsIAorICAgIDQyLCAxNTMsIDI0MSwgMTc2LCA0NywgMjA5LCAxODIsIDg2LCA0NywgNzksIDIwOSwgMTgxLCA4NiwgNDcsIDIwNCwgNTYsIAorICAgIDg2LCA0NywgNzksIDIwNCwgNTYsIDg2LCA0NywgMjIwLCAzLCA4NiwgNDcsIDUyLCAyNDUsIDkzLCAyMjcsIDE0LCAxMjYsIAorICAgIDI0MywgMTg0LCAyNTAsIDIxNywgNjEsIDIwOCwgODYsIDI0NSwgMTk1LCA1LCA2MSwgMjA4LCA4NSwgMjE4LCAyMzMsIDE3MSwgCisgICAgMjEwLCAyNDQsIDE3MSwgMjEwLCAxOTcsIDQ5LCAyMTUsIDkzLCAyNDksIDExLCAyNDQsIDQzLCA1MCwgMjE1LCA5MywgMjQ5LCAKKyAgICAxMSwgMjQ0LCA0MywgMjE5LCAyNDUsIDMsIDcwLCAyMzEsIDYsIDIxNiwgNzQsIDIxMiwgMSwgMjE3LCAyNDgsIDIxMCwgCisgICAgMjQ0LCAyMTAsIDE5OCwgMjE3LCAyNDgsIDIxMiwgMCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDEzLCAyMTUsIAorICAgIDI0NSwgMjQzLCAyMjcsIDE2MywgMjQzLCAxMzYsIDEzLCAyNDAsIDg0LCAyNDMsIDIyNywgMTAzLCAyMjcsIDM3LCAyNTAsIAorICAgIDIyNiwgMTAzLCAyMjcsIDM3LCAyMTksIDI0NCwgNjEsIDI0MywgMjIyLCAzLCAyNDYsIDIxNiwgMjQzLCA4NSwgMjUsIDMsIAorICAgIDI0MywgODUsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyMDYsIDIxMiwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMywgMjQzLCAKKyAgICA4NSwgMjA2LCAyMjEsIDQ5LCAyNDUsIDE2NiwgMywgMjQzLCA4NSwgNDksIDIxOSwgMjA5LCAyMzAsIDk5LCA1MCwgMjE5LCAKKyAgICAyMDksIDIzMCwgOTksIDIzOSwgMTAyLCAyMTksIDIwOSwgMjMwLCA5OSwgMjI4LCA4LCAxMTIsIDIxMCwgMywgMjI4LCA4LCAKKyAgICAxMjEsIDIxMCwgMywgNDksIDI1LCA1MCwgNTIsIDIwNywgMTczLCA0OSwgMjUsIDUwLCAyMTAsIDMsIDQ5LCAyMjMsIDIyOCwgCisgICAgMTYzLCA1MCwgMjEwLCAzLCAxNjMsIDQ5LCAyMTAsIDMsIDExMiwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NSwgMjI2LCAyNDcsIAorICAgIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDIxNSwgMTM1LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIxLCA2MSwgMjQ1LCAKKyAgICAyMTYsIDI0MywgMjIyLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjIsIDMsIDg2LCAyMDgsIDI1NCwgCisgICAgNjEsIDUxLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCA1MSwgMywgODYsIDIwOCwgMjU0LCAxMywgNDksIDYxLCA1MSwgMTU1LCAKKyAgICAxMywgNTAsIDYxLCA1MSwgMTU1LCAxMywgNDksIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgMjUwLCAyMTgsIDE1NSwgMTMsIAorICAgIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDQ5LCA2MSwgMjA4LCAxMzMsIAorICAgIDIxMywgMzMsIDE1NSwgMTMsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMTMsIDQ5LCAyMzksIDIxNCwgMjE5LCAKKyAgICA3NiwgMTMsIDUwLCAyMzksIDIxNCwgMjE5LCA3NiwgMTc3LCAyMTcsIDU4LCA0NywgMTgzLCAyMTcsIDU4LCA0NywgMjUwLCAKKyAgICAxOTQsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCA1MCwgNTMsIDMsIAorICAgIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCA0NywgMTYzLCA4NiwgNDcsIDE2MywgNDksIDUwLCA0NywgMTYzLCA5NiwgNTIsIDQ3LCAKKyAgICAxNjMsIDg2LCA1MiwgNDcsIDE2MywgNDksIDUwLCA1MiwgNDcsIDE2MywgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIAorICAgIDg2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCA1MiwgNTMsIAorICAgIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDIxMSwgMTcxLCA0NywgNTgsIDU5LCAyNDgsIDM2LCA1OCwgNTksIDI0MywgODIsIAorICAgIDU4LCA1OSwgMjQyLCAyMTAsIDU4LCA1OSwgMjQzLCA4MSwgNTgsIDU5LCAyNDIsIDE0NiwgNTgsIDU5LCAyNDMsIDE3LCA1OCwgCisgICAgNTksIDI0MiwgMjA5LCA1OCwgNTksIDI0MywgODAsIDU4LCA1OSwgMjQyLCAxMTQsIDU4LCA1OSwgMjQyLCAyNDEsIDU4LCAKKyAgICA1OSwgMjQyLCAxNzcsIDU4LCA1OSwgMjQzLCA0OCwgNTgsIDU5LCAyNDIsIDE0NSwgNTgsIDU5LCAyNDMsIDE2LCA1OCwgNTksIAorICAgIDI0MiwgMjA4LCA1OCwgNTksIDI0MywgNzksIDU4LCA1OSwgMjQyLCA5OCwgNTgsIDU5LCAyNDIsIDIyNSwgNTgsIDU5LCAKKyAgICAyNDIsIDE2MSwgNTgsIDU5LCAyNDMsIDMyLCA1OCwgNTksIDI0MiwgMTI5LCA1OCwgNTksIDI0MywgMCwgNTgsIDU5LCAyNDIsIAorICAgIDE5MiwgNTgsIDU5LCAyNDMsIDYzLCA1OCwgNTksIDI0MiwgMTEzLCA1OCwgNTksIDI0MiwgMjQwLCA1OCwgNTksIDI0MiwgCisgICAgMTc2LCA1OCwgNTksIDI0MywgNDcsIDU4LCA1OSwgMjQyLCAxNDQsIDU4LCA1OSwgMjQzLCAxNSwgNTgsIDU5LCAyNDIsIAorICAgIDIwNywgNTgsIDU5LCAyNDMsIDc4LCA1OCwgNTksIDI0MiwgOTAsIDU4LCA1OSwgMjQyLCAyMTcsIDU4LCA1OSwgMjQyLCAKKyAgICAxNTMsIDU4LCA1OSwgMjQzLCAyNCwgNTgsIDU5LCAyNDIsIDEyMSwgNTgsIDU5LCAyNDIsIDI0OCwgNTgsIDU5LCAyNDIsIAorICAgIDE4NCwgNTgsIDU5LCAyNDMsIDU1LCA1OCwgNTksIDI0MiwgMTA1LCA1OCwgNTksIDI0MiwgMjMyLCA1OCwgNTksIDI0MiwgCisgICAgMTY4LCA1OCwgNTksIDI0MywgMzksIDU4LCA1OSwgMjQyLCAxMzYsIDU4LCA1OSwgMjQzLCA3LCA1OCwgNTksIDI0MiwgMTk5LCAKKyAgICA1OCwgNTksIDI0MywgNzAsIDU4LCA1OSwgMjQyLCA5NywgNTgsIDU5LCAyNDIsIDIyNCwgNTgsIDU5LCAyNDIsIDE2MCwgNTgsIAorICAgIDU5LCAyNDMsIDMxLCA1OCwgNTksIDI0MiwgMTI4LCA1OCwgNTksIDI0MiwgMjU1LCA1OCwgNTksIDI0MiwgMTkxLCA1OCwgCisgICAgNTksIDI0MywgNjIsIDU4LCA1OSwgMjQyLCAxMTIsIDU4LCA1OSwgMjQyLCAyMzksIDU4LCA1OSwgMjQyLCAxNzUsIDU4LCAKKyAgICA1OSwgMjQzLCA0NiwgNTgsIDU5LCAyNDIsIDE0MywgNTgsIDU5LCAyNDMsIDE0LCA1OCwgNTksIDI0MiwgMjA2LCA1OCwgNTksIAorICAgIDI0MywgNzcsIDU4LCA1OSwgMjQyLCA4NiwgNTgsIDU5LCAyNDIsIDIxMywgNTgsIDU5LCAyNDIsIDE0OSwgNTgsIDU5LCAKKyAgICAyNDMsIDIwLCA1OCwgNTksIDI0MiwgMTE3LCA1OCwgNTksIDI0MiwgMjQ0LCA1OCwgNTksIDI0MiwgMTgwLCA1OCwgNTksIAorICAgIDI0MywgNTEsIDU4LCA1OSwgMjQyLCAxMDEsIDU4LCA1OSwgMjQyLCAyMjgsIDU4LCA1OSwgMjQyLCAxNjQsIDU4LCA1OSwgCisgICAgMjQzLCAzNSwgNTgsIDU5LCAyNDIsIDEzMiwgNTgsIDU5LCAyNDMsIDMsIDU4LCA1OSwgMjQyLCAxOTUsIDU4LCA1OSwgMjQzLCAKKyAgICA2NiwgNTgsIDU5LCAyNDIsIDkzLCA1OCwgNTksIDI0MiwgMjIwLCA1OCwgNTksIDI0MiwgMTU2LCA1OCwgNTksIDI0MywgMjcsIAorICAgIDU4LCA1OSwgMjQyLCAxMjQsIDU4LCA1OSwgMjQyLCAyNTEsIDU4LCA1OSwgMjQyLCAxODcsIDU4LCA1OSwgMjQzLCA1OCwgCisgICAgNTgsIDU5LCAyNDIsIDEwOCwgNTgsIDU5LCAyNDIsIDIzNSwgNTgsIDU5LCAyNDIsIDE3MSwgNTgsIDU5LCAyNDMsIDQyLCAKKyAgICA1OCwgNTksIDI0MiwgMTM5LCA1OCwgNTksIDI0MywgMTAsIDU4LCA1OSwgMjQyLCAyMDIsIDU4LCA1OSwgMjQzLCA3MywgNTgsIAorICAgIDU5LCAyNDIsIDg5LCA1OCwgNTksIDI0MiwgMjE2LCA1OCwgNTksIDI0MiwgMTUyLCA1OCwgNTksIDI0MywgMjMsIDU4LCA1OSwgCisgICAgMjQyLCAxMjAsIDU4LCA1OSwgMjQyLCAyNDcsIDU4LCA1OSwgMjQyLCAxODMsIDU4LCA1OSwgMjQzLCA1NCwgNTgsIDU5LCAKKyAgICAyNDIsIDEwNCwgNTgsIDU5LCAyNDIsIDIzMSwgNTgsIDU5LCAyNDIsIDE2NywgNTgsIDU5LCAyNDMsIDM4LCA1OCwgNTksIAorICAgIDI0MiwgMTM1LCA1OCwgNTksIDI0MywgNiwgNTgsIDU5LCAyNDIsIDE5OCwgNTgsIDU5LCAyNDMsIDY5LCA1OCwgNTksIDI0MiwgCisgICAgOTYsIDU4LCA1OSwgMjQyLCAyMjMsIDU4LCA1OSwgMjQyLCAxNTksIDU4LCA1OSwgMjQzLCAzMCwgNTgsIDU5LCAyNDIsIAorICAgIDEyNywgNTgsIDU5LCAyNDIsIDI1NCwgNTgsIDU5LCAyNDIsIDE5MCwgNTgsIDU5LCAyNDMsIDYxLCA1OCwgNTksIDI0MiwgCisgICAgMTExLCA1OCwgNTksIDI0MiwgMjM4LCA1OCwgNTksIDI0MiwgMTc0LCA1OCwgNTksIDI0MywgNDUsIDU4LCA1OSwgMjQyLCAKKyAgICAxNDIsIDU4LCA1OSwgMjQzLCAxMywgNTgsIDU5LCAyNDIsIDIwNSwgNTgsIDU5LCAyNDMsIDc2LCA1OCwgNTksIDI0MiwgODQsIAorICAgIDU4LCA1OSwgMjQyLCAyMTEsIDU4LCA1OSwgMjQyLCAxNDcsIDU4LCA1OSwgMjQzLCAxOCwgNTgsIDU5LCAyNDIsIDExNSwgCisgICAgNTgsIDU5LCAyNDIsIDI0MiwgNTgsIDU5LCAyNDIsIDE3OCwgNTgsIDU5LCAyNDMsIDQ5LCA1OCwgNTksIDI0MiwgOTksIDU4LCAKKyAgICA1OSwgMjQyLCAyMjYsIDU4LCA1OSwgMjQyLCAxNjIsIDU4LCA1OSwgMjQzLCAzMywgNTgsIDU5LCAyNDIsIDEzMCwgNTgsIAorICAgIDU5LCAyNDMsIDEsIDU4LCA1OSwgMjQyLCAxOTMsIDU4LCA1OSwgMjQzLCA2NCwgNTgsIDU5LCAyNDIsIDkxLCA1OCwgNTksIAorICAgIDI0MiwgMjE4LCA1OCwgNTksIDI0MiwgMTU0LCA1OCwgNTksIDI0MywgMjUsIDU4LCA1OSwgMjQyLCAxMjIsIDU4LCA1OSwgCisgICAgMjQyLCAyNDksIDU4LCA1OSwgMjQyLCAxODUsIDU4LCA1OSwgMjQzLCA1NiwgNTgsIDU5LCAyNDIsIDEwNiwgNTgsIDU5LCAKKyAgICAyNDIsIDIzMywgNTgsIDU5LCAyNDIsIDE2OSwgNTgsIDU5LCAyNDMsIDQwLCA1OCwgNTksIDI0MiwgMTM3LCA1OCwgNTksIAorICAgIDI0MywgOCwgNTgsIDU5LCAyNDIsIDIwMCwgNTgsIDU5LCAyNDMsIDcxLCA1OCwgNTksIDI0MiwgODcsIDU4LCA1OSwgMjQyLCAKKyAgICAyMTQsIDU4LCA1OSwgMjQyLCAxNTAsIDU4LCA1OSwgMjQzLCAyMSwgNTgsIDU5LCAyNDIsIDExOCwgNTgsIDU5LCAyNDIsIAorICAgIDI0NSwgNTgsIDU5LCAyNDIsIDE4MSwgNTgsIDU5LCAyNDMsIDUyLCA1OCwgNTksIDI0MiwgMTAyLCA1OCwgNTksIDI0MiwgCisgICAgMjI5LCA1OCwgNTksIDI0MiwgMTY1LCA1OCwgNTksIDI0MywgMzYsIDU4LCA1OSwgMjQyLCAxMzMsIDU4LCA1OSwgMjQzLCA0LCAKKyAgICA1OCwgNTksIDI0MiwgMTk2LCA1OCwgNTksIDI0MywgNjcsIDU4LCA1OSwgMjQyLCA5NCwgNTgsIDU5LCAyNDIsIDIyMSwgNTgsIAorICAgIDU5LCAyNDIsIDE1NywgNTgsIDU5LCAyNDMsIDI4LCA1OCwgNTksIDI0MiwgMTI1LCA1OCwgNTksIDI0MiwgMjUyLCA1OCwgCisgICAgNTksIDI0MiwgMTg4LCA1OCwgNTksIDI0MywgNTksIDU4LCA1OSwgMjQyLCAxMDksIDU4LCA1OSwgMjQyLCAyMzYsIDU4LCAKKyAgICA1OSwgMjQyLCAxNzIsIDU4LCA1OSwgMjQzLCA0MywgNTgsIDU5LCAyNDIsIDE0MCwgNTgsIDU5LCAyNDMsIDExLCA1OCwgNTksIAorICAgIDI0MiwgMjAzLCA1OCwgNTksIDI0MywgNzQsIDU4LCA1OSwgMjQyLCA4NSwgNTgsIDU5LCAyNDIsIDIxMiwgNTgsIDU5LCAKKyAgICAyNDIsIDE0OCwgNTgsIDU5LCAyNDMsIDE5LCA1OCwgNTksIDI0MiwgMTE2LCA1OCwgNTksIDI0MiwgMjQzLCA1OCwgNTksIAorICAgIDI0MiwgMTc5LCA1OCwgNTksIDI0MywgNTAsIDU4LCA1OSwgMjQyLCAxMDAsIDU4LCA1OSwgMjQyLCAyMjcsIDU4LCA1OSwgCisgICAgMjQyLCAxNjMsIDU4LCA1OSwgMjQzLCAzNCwgNTgsIDU5LCAyNDIsIDEzMSwgNTgsIDU5LCAyNDMsIDIsIDU4LCA1OSwgMjQyLCAKKyAgICAxOTQsIDU4LCA1OSwgMjQzLCA2NSwgNTgsIDU5LCAyNDIsIDkyLCA1OCwgNTksIDI0MiwgMjE5LCA1OCwgNTksIDI0MiwgCisgICAgMTU1LCA1OCwgNTksIDI0MywgMjYsIDU4LCA1OSwgMjQyLCAxMjMsIDU4LCA1OSwgMjQyLCAyNTAsIDU4LCA1OSwgMjQyLCAKKyAgICAxODYsIDU4LCA1OSwgMjQzLCA1NywgNTgsIDU5LCAyNDIsIDEwNywgNTgsIDU5LCAyNDIsIDIzNCwgNTgsIDU5LCAyNDIsIAorICAgIDE3MCwgNTgsIDU5LCAyNDMsIDQxLCA1OCwgNTksIDI0MiwgMTM4LCA1OCwgNTksIDI0MywgOSwgNTgsIDU5LCAyNDIsIDIwMSwgCisgICAgNTgsIDU5LCAyNDMsIDcyLCA1OCwgNTksIDI0MiwgODgsIDU4LCA1OSwgMjQyLCAyMTUsIDU4LCA1OSwgMjQyLCAxNTEsIDU4LCAKKyAgICA1OSwgMjQzLCAyMiwgNTgsIDU5LCAyNDIsIDExOSwgNTgsIDU5LCAyNDIsIDI0NiwgNTgsIDU5LCAyNDIsIDE4MiwgNTgsIAorICAgIDU5LCAyNDMsIDUzLCA1OCwgNTksIDI0MiwgMTAzLCA1OCwgNTksIDI0MiwgMjMwLCA1OCwgNTksIDI0MiwgMTY2LCA1OCwgCisgICAgNTksIDI0MywgMzcsIDU4LCA1OSwgMjQyLCAxMzQsIDU4LCA1OSwgMjQzLCA1LCA1OCwgNTksIDI0MiwgMTk3LCA1OCwgNTksIAorICAgIDI0MywgNjgsIDU4LCA1OSwgMjQyLCA5NSwgNTgsIDU5LCAyNDIsIDIyMiwgNTgsIDU5LCAyNDIsIDE1OCwgNTgsIDU5LCAKKyAgICAyNDMsIDI5LCA1OCwgNTksIDI0MiwgMTI2LCA1OCwgNTksIDI0MiwgMjUzLCA1OCwgNTksIDI0MiwgMTg5LCA1OCwgNTksIAorICAgIDI0MywgNjAsIDU4LCA1OSwgMjQyLCAxMTAsIDU4LCA1OSwgMjQyLCAyMzcsIDU4LCA1OSwgMjQyLCAxNzMsIDU4LCA1OSwgCisgICAgMjQzLCA0NCwgNTgsIDU5LCAyNDIsIDE0MSwgNTgsIDU5LCAyNDMsIDEyLCA1OCwgNTksIDI0MiwgMjA0LCA1OCwgNTksIAorICAgIDI0MywgNzUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCA5NSwgCisgICAgOTYsIDUyLCA1MywgMywgODAsIDk1LCA4NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDQ5LCA1MCwgNTIsIDUzLCAzLCA4MCwgOTUsIAorICAgIDg2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MiwgNTMsIAorICAgIDIzOSwgMTIwLCAxNDIsIDE4MywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIAorICAgIDIwOCwgNzAsIDQ3LCAxODMsIDIwOCwgNzAsIDQ3LCA5NiwgNTIsIDI0NCwgMTQ1LCA0NywgODYsIDUyLCAyNDQsIDE0NSwgCisgICAgNDcsIDk2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDcsIDEzNCwgCisgICAgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDE3NywgNTMsIDIwOCwgMTczLCAKKyAgICAxNDIsIDE4MywgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDUzLCAzLCAKKyAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDg2LCAyMDcsIDEzNCwgNTMsIAorICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCisgICAgMjUwLCA5NiwgODYsIDI1MCwgOTYsIDk2LCA1MiwgMjUwLCA5NiwgODYsIDUyLCAyNTAsIDk2LCA5NiwgNTMsIDIwOCwgMTczLCAKKyAgICA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgOTYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIAorICAgIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAyMDgsIDE3MywgNjIsIDI0MywgCisgICAgMjIxLCAxNTMsIDIwNCwgNDYsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyNSwgMjExLCAKKyAgICAyMzgsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIAorICAgIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDMsIDExMywgMjExLCAyMzgsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjA0LCAKKyAgICA0NiwgNTMsIDI1LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAorICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgCisgICAgNTMsIDI1LCAxNTMsIDIwNCwgNDYsIDQ3LCAyMTUsIDI0NSwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyNDAsIDg0LCAyNDMsIAorICAgIDIyNywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTUsIDI0NSwgMjQzLCAyMjcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCisgICAgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAyMTEsIDIzOCwgCisgICAgMjQxLCAxNzYsIDQ3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTUsIDI0NSwgCisgICAgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIAorICAgIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjA0LCA3NiwgCisgICAgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMTYsIDE2LCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDIwNiwgCisgICAgMjEyLCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDI0MiwgNjgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgCisgICAgODQsIDI0NSwgODQsIDIyNywgMjEyLCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAyNDUsIDg0LCAyMTYsIDUsIDIxNiwgCisgICAgOCwgMjUwLCAxMjksIDI0NiwgMTgsIDQ3LCAyMjcsIDIxNSwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIAorICAgIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDI0NywgMjQ4LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgMjUwLCAKKyAgICAxMjksIDI0NiwgMTgsIDUzLCAzLCAyMjQsIDEwMiwgMjA4LCAxNDUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNTMsIDMsIDIxOCwgCisgICAgNzYsIDIyNiwgMjUxLCA1MCwgMjEzLCAxNDUsIDI0NiwgMTgsIDQ3LCAyMjYsIDI1MSwgNDksIDIxMywgMTQ1LCAyNTAsIAorICAgIDE5NCwgNDcsIDI1MCwgMTk0LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIAorICAgIDg2LCA1MywgODcsIDIxMiwgMjI4LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxMiwgMjI4LCA4NiwgNDcsIDIxMiwgMjI4LCA4NiwgCisgICAgNTMsIDg3LCA5NiwgNDcsIDg2LCA1MywgMywgOTEsIDU2LCA5NiwgNTMsIDMsIDkxLCA1NiwgODYsIDUzLCAyMDksIDI1LCAKKyAgICAyMDMsIDE5NiwgNDksIDUwLCA1MywgMjA5LCAyNSwgNSwgMjQ2LCA2MSwgMTc3LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAKKyAgICA1LCAyNDYsIDYxLCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAKKyAgICAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAxNTAsIDQ5LCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCisgICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAKKyAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAorICAgIDE1MCwgNDksIDIzNywgODYsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgODYsIDIzNywgODcsIAorICAgIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDE4MywgCisgICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgCisgICAgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgCisgICAgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgCisgICAgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgMTc3LCAKKyAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAKKyAgICAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAKKyAgICAyMzksIDEyMCwgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgCisgICAgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIDIzNywgODcsIDMsIAorICAgIDE1MCwgMjQyLCA3MCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIAorICAgIDIxNiwgMTYsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDE4MywgCisgICAgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA5NiwgMjM3LCAKKyAgICA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgOTYsIDIzNywgODcsIDMsIDE1MCwgCisgICAgMTIxLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIAorICAgIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgODcsIDk2LCAyMzcsIDg3LCAzLCAKKyAgICAxNTAsIDI0MiwgNzAsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgMjQ0LCAxNDQsIDk2LCAyMzcsIDg3LCAKKyAgICAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgCisgICAgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDE3NywgMjM3LCAKKyAgICA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCAxODMsIDIzNywgODcsIDMsIAorICAgIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgNTAsIDUyLCA1MywgMywgMjE1LCAKKyAgICAxODksIDIzNywgNjQsIDI0MSwgMzUsIDIsIDg3LCA4NiwgNDcsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDg2LCA0NywgOTYsIAorICAgIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIAorICAgIDI1MSwgNywgMTU2LCAxMzUsIDIyNywgMTc5LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIyNywgMTc4LCAyMzcsIAorICAgIDI0NywgODcsIDg2LCA0NywgMjEwLCAyNDUsIDg3LCA4NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjEwLCAyNDQsIDIxMCwgCisgICAgMTk4LCA4NywgOTYsIDQ3LCA0OSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCA1MCwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMTIsIAorICAgIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTIxLCAyMzksIDI0NCwgMjA5LCAyNDgsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ0LCAKKyAgICA0MywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTEsIDE4OCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMDcsIDEyMSwgMjQ1LCAyNDIsIAorICAgIDQ5LCA2MSwgMjQ1LCA5MywgMTU1LCA1MCwgNjEsIDI0NSwgOTMsIDE1NSwgNDksIDYxLCAyMTksIDc2LCA1MCwgNjEsIDIxOSwgCisgICAgNzYsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDIzMSwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgMjMxLCAKKyAgICA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyNDgsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIAorICAgIDI0OCwgNjUsIDE1NSwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA2LCAyNDYsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgCisgICAgMjQ2LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA1MCwgNTEsIAorICAgIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAKKyAgICAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgCisgICAgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA0OSwgMjUwLCAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA1MCwgMjUwLCAKKyAgICAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA0OSwgMjUwLCAxMjksIDIyNywgMTc5LCAxNTUsIDUwLCAyNTAsIDEyOSwgCisgICAgMjM3LCAyNDcsIDE1NSwgNTIsIDQ5LCAyNTAsIDEyOSwgMjM3LCAyNDcsIDE1NSwgNTIsIDUwLCAyNTAsIDEyOSwgMjI3LCAKKyAgICAxNzksIDE1NSwgNDksIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAorICAgIDI0MiwgODMsIDI0MCwgNDAsIDgwLCAyMDIsIDMwLCAyMjcsIDExNCwgMjI1LCAxNywgMjUwLCAyMTgsIDIyMCwgMSwgMjI3LCAKKyAgICAyMjIsIDUwLCAyNTAsIDIxOCwgMjA2LCA2OSwgMywgMjExLCAxNzcsIDIyNSwgMTcsIDUwLCAyNTAsIDIxOCwgMywgMjQzLCAKKyAgICA4NSwgMjUwLCAyMTgsIDMsIDIxNSwgOTQsIDIzMSwgNiwgMjUxLCAxMjYsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTgsIAorICAgIDIyMCwgMSwgMjI3LCAyMjIsIDIxMSwgMjA4LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjA3LCAxNzQsIDI1MCwgCisgICAgMjE3LCAyMTYsIDczLCAyNTAsIDIxNywgMjUwLCAyMTgsIDMsIDIwNiwgMjQ2LCAyMTYsIDczLCAyNTAsIDIxOCwgMywgMjA2LCAKKyAgICAyNDYsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyNDIsIAorICAgIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIAorICAgIDExMiwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCAKKyAgICA1MywgMjE4LCA1OSwgMTEyLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIAorICAgIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgCisgICAgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAKKyAgICAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA1MCwgMjUsIDIwNiwgMjI0LCAKKyAgICAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAKKyAgICAyNSwgMjA2LCAyMjQsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgCisgICAgMjE4LCA1OSwgNTAsIDI1LCAyNDIsIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgCisgICAgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAyNSwgMjQyLCA3MCwgMjE2LCA3MywgMjQxLCA5NCwgMjEzLCAxMTcsIDI0MSwgCisgICAgOTQsIDIxMywgMTE4LCAzLCAyMTksIDIwMywgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDUsIDI0NiwgNjIsIDU1LCAyNDEsIDk0LCAKKyAgICAyMTMsIDExOCwgMywgNTAsIDUzLCA1NSwgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDQ5LCA1MywgNTUsIDI0NiwgNjIsIDMsIAorICAgIDIzNiwgMTA2LCAxNDIsIDQzLCA4MCwgMTQyLCA0MywgMjE5LCA4MSwgNDMsIDIxNiwgNzQsIDIxMiwgMCwgNDMsIDIxOCwgCisgICAgMjMzLCAyNDYsIDYyLCAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMjUsIDIwOCwgMTQ1LCAxNjIsIAorICAgIDI0MywgMTQyLCAyNDcsIDEzNywgODAsIDE0MiwgMjQ2LCA2MiwgMywgMjEwLCAyMDAsIDIwMywgMTk2LCA0MywgMjUwLCAKKyAgICAxOTIsIDI0MywgMTM3LCA1NCwgMTEyLCA1MywgMjA5LCAyNSwgMjQ2LCA2MSwgNDMsIDYxLCAyNDcsIDE3NywgNDMsIDI0NywgCisgICAgMTc3LCA0MywgMjI3LCAxNzgsIDQzLCAyMzcsIDI0NiwgMjQ2LCA2MiwgMywgNSwgMjQ2LCA2MiwgMjA4LCAxNzMsIDIwOSwgCisgICAgOTMsIDIxNiwgMTYsIDI0NiwgNjIsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMjAsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIAorICAgIDE2LCAxMDMsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjEyLCA1NywgMTAzLCAyNDAsIDg0LCAyNDMsIDIyOCwgMjEyLCA1NywgCisgICAgMTAzLCAyNTAsIDU5LCAxMDMsIDUsIDI0NiwgNjEsIDEwMywgMjExLCAxNzcsIDEyMCwgMjMwLCA5OCwgMjExLCAxNzUsIAorICAgIDIwOCwgODYsIDMsIDcwLCA1NSwgMjA4LCA4NiwgMywgMjA2LCAyNDYsIDIxNSwgOTQsIDIzMSwgNTAsIDIwOCwgODUsIDIwOCwgCisgICAgODYsIDMsIDIxMywgMTI0LCAyNTAsIDUwLCAyNDcsIDI0NywgNTAsIDIwOCwgODYsIDg3LCA0OSwgMjA4LCA4NSwgNDksIAorICAgIDIwOCwgODYsIDI0OCwgMTEwLCA4MCwgMTQyLCA4MCwgMjQ4LCAyMzEsIDI0OCwgMTEwLCA1MCwgMjA4LCA4NSwgMjQ3LCAKKyAgICAyMzUsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NywgMjM1LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQ3LCAyMzQsIAorICAgIDIzLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMywgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjEsIDIzNiwgNDAsIDYyLCAyMzYsIAorICAgIDQwLCA0OSwgMjA0LCAyMSwgMjQwLCA0MCwgNTAsIDIwNCwgMjEsIDI0MCwgNDAsIDQ5LCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgCisgICAgNTAsIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAyMzEsIDQyLCAyMzEsIDI3LCAyMDgsIDI1MSwgMTE1LCAyMzEsIDI3LCAyMzEsIAorICAgIDI4LCAyMjIsIDIzNCwgMywgODAsIDE0MiwgMjQyLCA3NywgMjIzLCAyMjgsIDUxLCAzLCAyNDUsIDE4NywgMjE5LCAyMDgsIAorICAgIDIzMSwgMzksIDI1MCwgODEsIDIxMiwgMTkzLCAyMTcsIDIyNCwgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODEsIAorICAgIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgNTUsIDIzNSwgMTU0LCAyMDgsIDE3MywgCisgICAgMjUsIDIxMiwgNTksIDIxOSwgODEsIDIzOCwgNDgsIDIxMSwgOTMsIDIwOSwgODEsIDI0MiwgNjksIDIwOCwgODYsIDMsIDQ5LCAKKyAgICAxNjIsIDI0OCwgNDMsIDI0MiwgNjksIDIwOCwgODYsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDMsIDIyMiwgMywgCisgICAgMTIxLCA0NywgNjIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgMTIxLCA0NywgNjIsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIAorICAgIDI0MSwgMjAsIDYxLCAyMTEsIDE3NywgMjQxLCAyMCwgNjIsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MSwgMjQzLCAyMjEsIDI0MSwgCisgICAgMjAsIDYyLCAyNDMsIDIyMSwgMjQxLCAyMCwgNjEsIDI0NiwgNjEsIDI0MSwgMjAsIDYyLCAyNDYsIDYxLCAyMTUsIDEzNCwgCisgICAgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDI1NCwgMjEyLCAxLCAzLCAyMTksIDIwMywgMjE2LCA3NCwgMjEyLCAxLCAzLCAyMzYsIAorICAgIDEwNiwgOTUsIDI0OCwgNzMsIDIxMiwgMCwgMjQ4LCA3MywgMjE2LCA3NCwgMjEyLCAwLCA1MiwgMjE4LCA3NiwgMjA4LCA3MCwgCisgICAgMjE4LCA3NiwgMjI3LCAyMTcsIDI0NSwgODYsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI0NSwgODYsIDI1MCwgMjE4LCAKKyAgICAxNTUsIDIwOCwgMjEyLCAyMjQsIDEwMCwgMjIzLCAxNjIsIDQzLCA3MCwgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgOTEsIAorICAgIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDIzLCAyMTksIDI1NCwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgCisgICAgMjQzLCA4NSwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgMjE4LCA3NiwgMjIzLCAxNjIsIDUxLCAyMzAsIAorICAgIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCA1MSwgMjA2LCAyMzgsIDIxOSwgMjU0LCAxMjAsIDIyNywgMzcsIDI1LCAyMTksIAorICAgIDI1NCwgMTIwLCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCAyMywgMjE5LCAyNTQsIDIyNCwgNTgsIAorICAgIDEyMCwgMjEwLCAyMjAsIDIxMCwgMjE4LCAzLCAyMzEsIDIsIDIxNywgNTgsIDIzMSwgMywgMjE5LCAyNTQsIDIzOSwgMjUyLCAKKyAgICAyMTksIDcxLCAyMzEsIDIsIDIzMSwgMywgMywgNTIsIDk1LCAyMzEsIDMsIDI1MCwgMTUsIDMsIDIxMiwgNTcsIDI0NiwgNTQsIAorICAgIDIzOSwgOTksIDI1MCwgMTk0LCAyMzEsIDAsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxNiwgMTQyLCAyMTksIDUyLCAyNTAsIAorICAgIDEwNCwgMjE4LCA1MywgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjEzLCAxNDUsIDIxOSwgNTIsIDI1MCwgMTA0LCAyMTgsIDUzLCAKKyAgICAyMjcsIDExNSwgMjMxLCAxLCAyMjEsIDE2NiwgMjMxLCA0NCwgMjA5LCA5MywgMjE4LCA1MywgMjMxLCAzLCAyNTAsIDEwNCwgCisgICAgMzQsIDIxOCwgNjMsIDIxOSwgMjU0LCAyMTcsIDUyLCAyMzEsIDMsIDIxOSwgMjU0LCAyMzEsIDMsIDMsIDk2LCA1MywgMywgCisgICAgMTEzLCAyMzEsIDMsIDMsIDIzLCA1NCwgMjMxLCAzLCAzLCAyMzAsIDI0NCwgMjMxLCAzLCAzLCAyMDYsIDIzNywgMjMxLCAzLCAKKyAgICAzLCAyMTksIDIwMywgMjMxLCAzLCAzLCAyMDYsIDI0NiwgMjMwLCA5OSwgMjI4LCA4LCA0OSwgMjA4LCA4NiwgMjE5LCAyNTQsIAorICAgIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDI0NSwgMjIzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAKKyAgICAyMTgsIDExNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjE3LCAyMTksIDkxLCAyLCAzLCA1LCAyNDYsIDYyLCAKKyAgICA1NSwgOTEsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM5LCA1NSwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NSwgOTEsIDIsIDMsIAorICAgIDcwLCA1NiwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NiwgOTEsIDIsIDMsIDIxMCwgMjQ2LCAxMDgsIDkxLCAyLCAzLCA2MiwgCisgICAgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDMsIDI0NSwgMjM0LCA1NSwgMjI0LCAxMDMsIDIsIDMsIDcwLCA1NiwgMjI0LCAxMDMsIAorICAgIDIsIDMsIDI0MCwgODQsIDI0MywgODMsIDIyNCwgMTAzLCAyLCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgOTEsIDIsIDIzMSwgCisgICAgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDkxLCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIDYxLCAyMDYsIDU0LCAyMTksIAorICAgIDI0NSwgMjQ1LCAxMzEsIDIxNywgMjI0LCAyMjMsIDIyNCwgMiwgMywgNzAsIDU1LCAyMjMsIDIyNCwgMiwgMywgMjA2LCAKKyAgICAyNDYsIDIxMywgMTQyLCAyMTcsIDIyNSwgMywgMjQ3LCAyNDgsIDI0NiwgMTUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjMsIAorICAgIDIyNCwgMiwgMjMxLCA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgCisgICAgNjEsIDQzLCAyMjMsIDIyNCwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MiwgMjQ2LCAKKyAgICA2MSwgNDMsIDI0MywgMTM3LCA1NCwgOTEsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAyMzEsIDUwLCAyMDgsIAorICAgIDg1LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjMwLCAyNTMsIDIxNywgMjI0LCAyMTYsIDYsIDIzMCwgMjUzLCAKKyAgICAyMTcsIDIyNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDExNiwgMjQ1LCAyMjMsIDI1MCwgMjQ1LCAyMTksIDI0NSwgCisgICAgMjQ1LCAxNzEsIDIzMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMDYsIDIzOCwgMywgMjI0LCAxMDMsIDU0LCAyMDYsIDIzOCwgMywgCisgICAgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIyNywgMzcsIDI1MCwgMjI2LCAyMDYsIAorICAgIDIzOCwgMywgMjI3LCAzNywgMjE5LCAyNDQsIDIwNiwgMjM4LCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjA2LCAKKyAgICAyMzcsIDIwNiwgMjM4LCA4NywgMjQ4LCAyMzEsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyNDgsIDIzMSwgODcsIAorICAgIDIwNiwgMjM3LCAyMDYsIDIzOCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMDYsIDIzNywgMjMwLCAyNDUsIDI0OCwgCisgICAgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjMwLCAyNDQsIDI0NiwgMTYsIDIwNiwgMjM4LCAzLCAyMTMsIDEyMywgMjQ2LCAxNiwgCisgICAgMjMwLCAyNDUsIDMsIDIxMywgMTIzLCA1MiwgNTEsIDIzMCwgMjQ0LCA1MiwgNTEsIDIwNiwgMjM3LCAyNDYsIDE2LCAyMDYsIAorICAgIDIzOCwgMywgMjEzLCAxMjQsIDI1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjI3LCAzNywgMjUsIDMsIDcwLCA1NSwgMjI3LCAzNywgCisgICAgMjE5LCAyNDUsIDMsIDcwLCA1NSwgNTIsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjI3LCAzNywgMjE5LCAyNDQsIDEyMCwgCisgICAgMjMwLCAyNDYsIDIyNywgMzcsIDI1MCwgMjI2LCAxMjAsIDIzMCwgMjQ2LCAyMjcsIDM3LCAyMTksIDI0NCwgMjEyLCA0MywgCisgICAgMjI4LCA4LCAyMTksIDI0NCwgMjEyLCA0MywgMjI4LCA4LCAyNTAsIDIyNiwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjAwLCAKKyAgICAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAzNywgMjUsIDMsIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAorICAgIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjUsIDMsIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAorICAgIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjUsIDMsIDIwNiwgCisgICAgMjQ2LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIwNiwgMjQ2LCA1LCAyMDYsIDUxLCAzLCAyMDYsIDI0NiwgMjI3LCAzNywgMjE5LCAKKyAgICAyNDUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIDUyLCAyMDYsIDI0NiwgMjAyLCAxNjAsIDIyMSwgCisgICAgMTY0LCAyNDMsIDk0LCAyNTAsIDE4NCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDE3OSwgMjUwLCAxODQsIDI0MSwgMzUsIAorICAgIDIsIDMsIDcwLCA1NiwgMjM1LCAxNTQsIDMsIDcwLCA1NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCA1MiwgCisgICAgODAsIDk1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDIwOCwgNzAsIDgwLCA5NSwgMjA4LCAyMjgsIDIxOSwgCisgICAgMjU1LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAyMTksIDI1NSwgMywgMjE1LCAyNDUsIDI0MywgODMsIDIxMiwgMTI5LCAyMjQsIAorICAgIDEwMywgMjEyLCAxMjgsIDI0NSwgMjEwLCAzLCA3MCwgNTUsIDI0MSwgMzUsIDMsIDI1MCwgNTksIDI1MSwgNywgMTU2LCAKKyAgICAyMDgsIDE3MywgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDI1MCwgMTUxLCAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAKKyAgICAzNSwgMiwgODcsIDkxLCA1NCwgOTEsIDIsIDg3LCAyNDEsIDM1LCA1NCwgMjQxLCAzNSwgMiwgODcsIDIwOCwgMjI4LCAyMTksIAorICAgIDI1NCwgNTIsIDI0NSwgMjQzLCAyNDEsIDM2LCAxMjAsIDI0NSwgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMTI2LCAyNDUsIAorICAgIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDI0MSwgMzUsIDIsIDMsIDEyMCwgMTg3LCA4NywgMjUsIDEyMCwgMTg3LCA1NiwgCisgICAgMjQxLCAzMCwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDIyNywgMTc5LCAzLCAyNDYsIDYyLCAyMzEsIDYsIDIzNywgMjQ3LCAzLCAKKyAgICAyNDYsIDYyLCAyMzEsIDYsIDIyNywgMTc5LCAzLCAyMTcsIDQ3LCAxMzEsIDU1LCAyMzcsIDI0NywgMywgMjE3LCA0NywgCisgICAgMTMxLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIAorICAgIDU5LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAKKyAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIDIyNywgMTc5LCAyMTksIAorICAgIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgCisgICAgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgCisgICAgODcsIDIxNiwgMTYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDg3LCAyMjcsIAorICAgIDIyMiwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjI3LCAKKyAgICAxNzksIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgCisgICAgMTU2LCAxMzUsIDIyNywgMTc5LCAyNSwgMjIxLCAxNjYsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjUsIDIyMSwgMTY2LCAyNTAsIAorICAgIDE1MiwgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAxNTYsIDg3LCAyMzcsIDI0NiwgMjM3LCAyNDcsIDg3LCAyNDIsIDc2LCAKKyAgICAxNTYsIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIzNywgMjQ3LCAKKyAgICA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDYsIAorICAgIDIzNywgMjQ3LCA4NywgMjEyLCAxMjksIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMzcsIDI0NywgODcsIDI0MiwgCisgICAgNzYsIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIAorICAgIDIxMiwgNTksIDE1NiwgODcsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAKKyAgICAxNTYsIDg3LCAyMjcsIDE3OSwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCisgICAgMjQ1LCAyMjcsIDE3OCwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIDU5LCAxNTYsIAorICAgIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzksIDMsIDcwLCAyMzEsIDYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCisgICAgMjQ1LCAyMzcsIDI0NywgMywgNzAsIDIzMSwgNiwgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAKKyAgICAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAKKyAgICAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgCisgICAgMjQ2LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIyNywgMTc4LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIAorICAgIDEyOSwgODcsIDIyNywgMTc5LCA4NywgMjQxLCAzNSwgNTQsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDEsIDM1LCAKKyAgICA1NCwgNTIsIDIyMiwgMjIxLCAyMjcsIDE3OCwgNTIsIDIyMiwgMjIxLCAyMzcsIDI0NiwgNTIsIDIyMiwgMjIxLCAyMjcsIAorICAgIDE3OSwgMywgMjA2LCAyNDYsIDIzNywgMjQ3LCAyMTksIDIwMCwgMjI3LCAxNzgsIDIzNywgMjQ3LCAyNDgsIDExMCwgMjI3LCAKKyAgICAxNzgsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4NywgMjM3LCAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAKKyAgICAyNDUsIDg3LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIAorICAgIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDM1LCAyMDksIDk3LCAKKyAgICAyMjgsIDYsIDIwOSwgOTcsIDIxMiwgMzUsIDIwOSwgOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjI4LCA2LCAyMDksIDk4LCAKKyAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgMzUsIDIsIDMsIDI0NywgMTcwLCA1NSwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCisgICAgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKKyAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIAorICAgIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMTU2LCAKKyAgICAxMzUsIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDI1MSwgNywgMTU2LCAxMzUsIAorICAgIDIxMCwgMjM3LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgCisgICAgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgNTIsIDIxNywgMjQ5LCA1MiwgMjEwLCAyMzYsIAorICAgIDIxMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMTAsIDE5OCwgMywgMjQzLCA4NSwgMjEwLCAyNDUsIDMsIDkxLCAyLCA1NiwgMjEwLCAKKyAgICAxOTgsIDMsIDkxLCAyLCA1NiwgMjEwLCAyNDUsIDMsIDIyMywgMjI0LCAyLCA1NiwgMjEwLCAxOTgsIDMsIDIyMywgMjI0LCAKKyAgICAyLCA1NiwgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDE5OCwgNzYsIAorICAgIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMjQ1LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIAorICAgIDE5OCwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDE5OCwgCisgICAgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMTk4LCAKKyAgICA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAorICAgIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCA1MSwgNDksIDE3MSwgOTgsIDIxOSwgMjU0LCA1MSwgNTAsIDE3MSwgOTgsIAorICAgIDIxOSwgMjU0LCAyNDYsIDE2LCAyMTAsIDI0NCwgMjQ2LCAxNiwgMjEwLCAxOTcsIDI0NiwgMTYsIDIxMCwgMjQ1LCAyMTksIAorICAgIDI0NSwgMTU2LCAxMzUsIDI0NiwgMTYsIDIxMCwgMTk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA4NywgMjEwLCAKKyAgICAxOTcsIDIxMCwgMTk4LCA4NywgMjEwLCAyNDQsIDIxMCwgMjQ1LCA4NywgMjEwLCAyNDQsIDIxMCwgMTk4LCA4NywgMjEwLCAKKyAgICAxOTcsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjEwLCAyNDQsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDI0NywgCisgICAgMTM3LCAyNDQsIDE0NSwgMywgMjEwLCAyNDQsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyNDIsIDY4LCAyMTgsIDEwNCwgMywgCisgICAgMjA5LCAxNzcsIDIwOCwgMTQ0LCAyMDgsIDEwMiwgMjMwLCAyNDQsIDIzOSwgMTYwLCAyMjEsIDE4MSwgMjEyLCAyMjgsIDQ5LCAKKyAgICAyMTAsIDMsIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgMjEyLCAyMjgsIDExMiwgMjEwLCAzLCAyMTgsIDIzNCwgMywgMTk0LCAKKyAgICA4MCwgMjQ4LCAyMzEsIDIwOCwgNzAsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNDksIDIwNywgMTczLCA4MCwgCisgICAgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDE2MywgMjQ0LCAKKyAgICAxNDUsIDIzOSwgMTIwLCA0OSwgMjI0LCAyNDUsIDc2LCA1MiwgMjA2LCAzOCwgMjEyLCAyMjgsIDEyMSwgMjEwLCA0LCAzLCAKKyAgICAyMTksIDIwMywgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCAzLCAyMDYsIDI0NiwgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCA4NywgCisgICAgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCA1MiwgMTIxLCAyMTAsIDMsIDUyLCAxMTIsIDIxMCwgMywgNTIsIDIxMSwgMzIsIAorICAgIDIyMSwgMTY2LCA1NCwgMjE2LCA3MywgNTIsIDIxMSwgMzIsIDIyMSwgMTY2LCA1NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKKyAgICAyNDMsIDE0NCwgMywgMjE2LCA3MywgMjIyLCAyMzMsIDIxMiwgNTcsIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTUsIAorICAgIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTYsIDEyMSwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NiwgMjE5LCA4MiwgMywgCisgICAgMjM2LCAxMDYsIDk1LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ4LCAKKyAgICA2NywgMjE2LCAxMTcsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAyMDgsIDcwLCAyNDUsIDI0MywgCisgICAgMjE5LCAyNTQsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMjcsIDE3OCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIzNywgMjQ2LCAyNDIsIAorICAgIDc2LCAyMTIsIDU5LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDIsIDc2LCAyMTIsIDU5LCAyMzcsIDI0NywgCisgICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMTIsIDEsIDI0OCwgNjcsIDIxNiwgMTE3LCAyMjgsIDgsIDIwOCwgNzAsIAorICAgIDgwLCAyNDgsIDIzMSwgMjE5LCAyNTQsIDUyLCAyMTIsIDEsIDIxOSwgMjU0LCA2MSwgODAsIDE0MiwgMjIzLCAxNjIsIDYxLCAKKyAgICA4MCwgMTQyLCAxNTMsIDI0MSwgMTc2LCA2MSwgNDcsIDE1MywgMjA0LCA0NiwgNjEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAorICAgIDYxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYxLCA0NywgNDksIDUwLCA2MSwgNDcsIDk2LCA2MiwgNDcsIDE3NywgNjIsIAorICAgIDQ3LCAxODMsIDYyLCA0NywgMTUzLCAyNDEsIDE3NiwgNjIsIDQ3LCAxNTMsIDIwNCwgNDYsIDYyLCA0NywgMjExLCAyMzgsIAorICAgIDI0MSwgMTc2LCA2MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MiwgNDcsIDQ5LCA1MCwgNjIsIDQ3LCAxMTIsIDEyMSwgCisgICAgNjIsIDQ3LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIAorICAgIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgOTYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDUxLCAzLCAyMDgsIDE0NSwgCisgICAgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjQzLCAKKyAgICAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIAorICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjA4LCAKKyAgICAxNDUsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDI0MiwgODMsIDIxMSwgCisgICAgMTc3LCA2MiwgMjI4LCA4LCAyMTEsIDE3NywgNjEsIDIyOCwgOCwgMjExLCAxNzcsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKKyAgICAxNzcsIDYxLCAyMDUsIDI0MiwgNSwgMjExLCAxNzcsIDYyLCAyMTgsIDI1NSwgNjEsIDIxOCwgMjU1LCA2MSwgMjM3LCAxNywgCisgICAgNjIsIDIzNywgMTcsIDIzNiwgMTA2LCA2MiwgMjM3LCAxNywgNjIsIDIyOCwgOCwgMjQ2LCA2MSwgNjIsIDIyNSwgMTAsIAorICAgIDI0MywgMjIxLCA2MSwgMjI1LCAxMCwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCAyMjYsIDI0NiwgNjEsIDIyNSwgMTAsIDIyNiwgCisgICAgMjQ2LCA2MiwgNSwgMjQzLCAyMjEsIDYyLCA1LCAyMjYsIDI0NiwgNjEsIDUsIDIyNiwgMjQ2LCA2MiwgMjM2LCAxMDYsIAorICAgIDI0MSwgMTA5LCA2MSwgMjM2LCAxMDYsIDI0MSwgMTA5LCA2MiwgODAsIDI0MSwgMTA5LCA2MSwgODAsIDI0MSwgMTA5LCA0OSwgCisgICAgNTMsIDMsIDUsIDI0NiwgNjEsIDEyNiwgOTYsIDI1MCwgOTEsIDQ5LCA1MywgMywgNDMsIDIxOCwgNzYsIDE2MywgOTYsIAorICAgIDIxMSwgMTcxLCA0NywgOTYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIAorICAgIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgMjA3LCAxMzQsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgCisgICAgOTYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCA5NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCA1MywgMywgCisgICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA5NiwgMjA3LCAxMzQsIDUzLCAKKyAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAorICAgIDUzLCAyMDksIDI1LCAyMDMsIDE5NiwgMjA0LCA3NiwgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMjcsIDIyMiwgMjQxLCAzNSwgCisgICAgMiwgODcsIDk2LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTYsIAorICAgIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCA4NiwgNTMsIDIwOSwgMjUsIDIzNywgMjQ2LCA4NiwgNTMsIDIwOSwgMjUsIDIxMCwgCisgICAgMTk3LCA5NiwgMjE3LCA1OCwgNDcsIDg2LCAyMTcsIDU4LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCisgICAgODYsIDQ3LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKKyAgICA5NiwgNDcsIDk2LCA1MywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDk2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIAorICAgIDI1NCwgODYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU0LCAxODMsIDIwOCwgODQsIDIwMiwgMzAsIDQ3LCAKKyAgICAyMTIsIDIyOCwgMjEyLCA1OSwgMTUzLCA0NywgMjEyLCAyMjgsIDI0OSwgMjIsIDIxMSwgMjM4LCA0NywgNjEsIDIyNSwgMTAsIAorICAgIDIxMSwgOTQsIDYyLCA1LCAyMTEsIDk0LCA2MSwgNSwgMjExLCA5NCwgNjIsIDIxNiwgMTEsIDIxOCwgMjU1LCA2MSwgMjE2LCAKKyAgICAxMSwgMjE4LCAyNTUsIDc5LCAyMjgsIDgsIDI0NiwgNjEsIDc5LCAyMTksIDIwNSwgMywgMjE5LCAyMDUsIDIzMSwgNiwgNzksIAorICAgIDI0NiwgNjIsIDMsIDI0NiwgNjIsIDIzMSwgNiwgNzksIDI0NiwgNjEsIDc5LCA0MywgMjE0LCAyNTQsIDIxMiwgNTksIDE1MywgCisgICAgNTMsIDMsIDIzNiwgMTE1LCAyMzcsIDY0LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgMTE1LCAyMDksIDI0OCwgCisgICAgMjEyLCA1OSwgMTUzLCA1MywgMywgMjM2LCAxMDYsIDIwOSwgMjQ4LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgCisgICAgMTA2LCAyMDksIDI0OCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDIxMiwgCisgICAgMjI4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgOTYsIDIwOCwgODQsIDQ3LCAKKyAgICAxNzcsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNDcsIDQ5LCA1MCwgMjA4LCA4NCwgNDcsIAorICAgIDExMiwgMTIxLCAyMDgsIDg0LCA0NywgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgMTUzLCAyNDEsIDE3NiwgMjA4LCA4NCwgCisgICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgOTYsIAorICAgIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMTc3LCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDg2LCAyMDgsIDg0LCAyNDQsIDE0MywgCisgICAgNDcsIDE4MywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAyNDYsIDE4LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNTAsIAorICAgIDE5NCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgOTYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIwOCwgCisgICAgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE4MywgMjA4LCA4NCwgNTMsIAorICAgIDIwOCwgMTczLCAxNDIsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE1MywgMjQxLCAxNzYsIAorICAgIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgCisgICAgMTQyLCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDk2LCAyMDgsIDg0LCA1MywgMywgCisgICAgNTIsIDIzNiwgMTA2LCA5NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgODYsIDIwOCwgODQsIDUzLCAKKyAgICAzLCA1MiwgMjM2LCAxMDYsIDk1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCAyMzYsIDEwNiwgCisgICAgMjEwLCAxMSwgMjI5LCAxNTEsIDgwLCAyMTAsIDExLCAyMjksIDE1MSwgOTYsIDIwOCwgODQsIDUzLCAxMTUsIDg2LCAyMDgsIAorICAgIDg0LCA0NywgMTc3LCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxODMsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNTMsIDExNSwgCisgICAgOTYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE3NywgMjA4LCA4NCwgNDcsIDk2LCAyMDgsIDg0LCAKKyAgICAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgODYsIDIwOCwgODQsIDIxOSwgCisgICAgMTQ2LCAyNTAsIDkxLCAxODMsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgNjIsIDQzLCA2MSwgNDcsIDE3NywgCisgICAgNjIsIDQzLCA2MSwgNDcsIDg2LCA2MiwgNDMsIDYxLCA0NywgMTgzLCA2MiwgNDMsIDYxLCA0NywgMjUwLCAxOTQsIDIwOCwgCisgICAgODQsIDUwLCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDI0NywgMjQ4LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIAorICAgIDIwOCwgODQsIDQ5LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDIwOCwgMTQ1LCAyMDcsIDkyLCA0NywgMjE2LCAKKyAgICA3OCwgMjI3LCAyMjIsIDIxNiwgNzgsIDIxNiwgMTYsIDIyMiwgMjEyLCAyMjcsIDIyMiwgMjIyLCAyMTIsIDIxNiwgMTYsIAorICAgIDIzOSwgMTQ3LCAyNDUsIDE2NiwgMjUwLCA5MiwgMjQ2LCA1NywgMjUwLCAxOTMsIDg2LCA2MiwgNDcsIDIwOSwgMzEsIDIwOCwgCisgICAgMTQzLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjE2LCAxMiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIAorICAgIDMxLCAyMDgsIDE0MywgODYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIyNywgMjE4LCAxODMsIDI0MSwgMzEsIDI1MCwgCisgICAgOTQsIDYyLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDg2LCAyNDEsIDMxLCAKKyAgICAyNTAsIDk0LCA2MiwgMTgzLCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAKKyAgICAyMjcsIDIxMiwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAxNzcsIDIwOCwgODQsIDUzLCAKKyAgICAzLCAxNjMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTc3LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAKKyAgICA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIwNiwgMjEyLCA4NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgCisgICAgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCAyMDgsIAorICAgIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDk2LCA0NywgNjIsIDI0NSwgCisgICAgODYsIDE4MywgMjUsIDg2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIDk2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIAorICAgIDg2LCA0NywgNjIsIDI0NSwgODYsIDk2LCAyNSwgMTc3LCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTc3LCA0NywgNjIsIAorICAgIDI0NSwgODYsIDk2LCAyNSwgMTgzLCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTgzLCA0NywgMjE2LCA1NSwgNTMsIDEyMSwgCisgICAgMjI3LCAyMjIsIDIxNiwgNTUsIDUzLCAxMjEsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCAxMTIsIDIyNywgMjIyLCAyMTYsIDU1LCAKKyAgICA1MywgMTEyLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgNDksIDIwNiwgMjI0LCAyMTYsIDU1LCA1MywgNTAsIDIwNiwgMjI0LCAKKyAgICAyMTYsIDU1LCA1MywgNDksIDI0MiwgNzAsIDIxNiwgNTUsIDUzLCA1MCwgMjQyLCA3MCwgMTc3LCA2MSwgNTMsIDIzOSwgCisgICAgMTIwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDE0MiwgMTEyLCAyNTAsIDk1LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIAorICAgIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDE1NywgMjAzLCAxOTYsIDQzLCAyMDMsIDE5NiwgNDMsIDI2LCAyMDMsIDE5NiwgCisgICAgNjIsIDUxLCAyNDYsIDIxNSwgNjIsIDI0MywgMjIyLCAyNDYsIDIxNSwgMjA3LCAxNzQsIDYyLCAyMTgsIDI1NSwgMjM2LCAKKyAgICAxMDYsIDYyLCAyMjAsIDgxLCA2MiwgMjIwLCA4MSwgNjIsIDIyNSwgMTAsIDIwNiwgMjIzLCAyMDgsIDg2LCAyNDYsIDIxNSwgCisgICAgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODYsIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjI3LCAyMTcsIDIwOCwgODYsIAorICAgIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDIwOCwgMTQ1LCAxNjIsIDYyLCAKKyAgICAyNDYsIDYxLCAyNDcsIDI0OCwgMTYyLCA2MiwgMjQ2LCA2MSwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIAorICAgIDIxNSwgMTk4LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAKKyAgICAyNDUsIDgyLCAyMTUsIDE5OCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyNDUsIDgyLCA1MSwgMjE4LCAzNCwgMjMxLCAzMSwgCisgICAgMjA2LCAyNTAsIDU0LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxNzcsIDIwNywgMTM0LCA1MywgCisgICAgMywgMjA4LCA4NiwgMjUwLCA5MywgODYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgzLCAyMDcsIAorICAgIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MCwgNiwgMSwgMjUwLCAwLCAxODAsIDYsIDEsIDI0NywgMTgxLCAKKyAgICAxODAsIDYsIDEsIDIwNiwgNTMsIDE4MCwgNiwgMSwgMjM4LCA1MCwgMTgwLCA2LCAxLCAyNDMsIDEwOCwgMTgwLCA2LCAxLCAKKyAgICAyMDMsIDI0LCAxODAsIDYsIDEsIDIwMiwgNjQsIDE4MCwgNiwgMSwgMjQxLCAyNTAsIDE4MCwgNiwgMSwgMjAyLCA4OSwgCisgICAgMTgwLCA2LCAxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA4MSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgNzUsIDE4MCwgNiwgMSwgCisgICAgMjQzLCAxMjgsIDE4MCwgNiwgMSwgMjMwLCAxMCwgMTgwLCA2LCAxLCAyMjcsIDc5LCAxODAsIDYsIDEsIDIyMywgMTY3LCAKKyAgICAxODAsIDYsIDEsIDIyMywgNjksIDE4MCwgNiwgMSwgMjIwLCAyMCwgMTgwLCA2LCAxLCAyMTgsIDU2LCAxODAsIDYsIDEsIAorICAgIDIxNSwgMjQ0LCAxODAsIDYsIDEsIDIxMiwgNDEsIDE4MCwgNiwgMSwgMjA3LCAxNjEsIDE4MCwgNiwgMSwgMjA3LCAxMCwgCisgICAgMTgwLCA2LCAxLCAyMzksIDEyMywgMTgwLCA2LCAxLCAyMzcsIDIzLCAxODAsIDYsIDEsIDIxOSwgMjE3LCAxODAsIDYsIDEsIAorICAgIDIxOSwgMzQsIDE4MCwgNiwgMSwgMjEyLCAyMDIsIDE4MCwgNiwgMSwgMjA3LCAyNTUsIDE4MCwgNiwgMSwgMjQ2LCAxMDQsIAorICAgIDE4MCwgNiwgMSwgMjEzLCA5MCwgMTgwLCA2LCAxLCAyMDMsIDMwLCAxODAsIDYsIDEsIDIwMywgMzIsIDE4MCwgNiwgMSwgCisgICAgMjAzLCA2NCwgMTgwLCA2LCAxLCAyMTEsIDIwNCwgMTUyLCAxODAsIDYsIDEsIDIwMiwgMjEzLCAxODAsIDYsIDEsIDUsIAorICAgIDIwMiwgMTgzLCAxODAsIDYsIDEsIDUsIDIwMiwgMTg0LCAzLCAyMDksIDI0OCwgMTgwLCA2LCAxLCAyMDIsIDI0NywgMTgwLCAKKyAgICA2LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgCisgICAgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDIzOSwgMjM1LCAxODAsIDYsIDEsIDIzMCwgMTg2LCAKKyAgICAxODAsIDYsIDEsIDIxMiwgMjAxLCAxODAsIDYsIDEsIDIwOCwgNjAsIDYzLCAxODAsIDYsIDEsIDIyNywgMjUyLCAyMjMsIAorICAgIDE2NywgMTgwLCA1LCAxLCAyNTAsIDAsIDE4MCwgNSwgMSwgMjQ3LCAxODEsIDE4MCwgNSwgMSwgMjA2LCA1MywgMTgwLCA1LCAKKyAgICAxLCAyMzgsIDUwLCAxODAsIDUsIDEsIDI0MywgMTA4LCAxODAsIDUsIDEsIDIwMywgMjQsIDE4MCwgNSwgMSwgMjAyLCA2NCwgCisgICAgMTgwLCA1LCAxLCAyNDEsIDI1MCwgMTgwLCA1LCAxLCAyMDIsIDg5LCAxODAsIDUsIDEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIAorICAgIDgxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCA3NSwgMTgwLCA1LCAxLCAyNDMsIDEyOCwgMTgwLCA1LCAxLCAyMzAsIDEwLCAKKyAgICAxODAsIDUsIDEsIDIyNywgNzksIDE4MCwgNSwgMSwgMjIzLCAxNjcsIDE4MCwgNSwgMSwgMjIzLCA2OSwgMTgwLCA1LCAxLCAKKyAgICAyMjAsIDIwLCAxODAsIDUsIDEsIDIxOCwgNTYsIDE4MCwgNSwgMSwgMjE1LCAyNDQsIDE4MCwgNSwgMSwgMjEyLCA0MSwgCisgICAgMTgwLCA1LCAxLCAyMDcsIDE2MSwgMTgwLCA1LCAxLCAyMDcsIDEwLCAxODAsIDUsIDEsIDIzOSwgMTIzLCAxODAsIDUsIDEsIAorICAgIDIzNywgMjMsIDE4MCwgNSwgMSwgMjE5LCAyMTcsIDE4MCwgNSwgMSwgMjE5LCAzNCwgMTgwLCA1LCAxLCAyMTIsIDIwMiwgCisgICAgMTgwLCA1LCAxLCAyMDcsIDI1NSwgMTgwLCA1LCAxLCAyNDYsIDEwNCwgMTgwLCA1LCAxLCAyMTMsIDkwLCAxODAsIDUsIDEsIAorICAgIDIwMywgMzAsIDE4MCwgNSwgMSwgMjAzLCAzMiwgMTgwLCA1LCAxLCAyMDMsIDY0LCAxODAsIDUsIDEsIDIxMSwgMjA0LCAKKyAgICAxNTIsIDE4MCwgNSwgMSwgMjAyLCAyMTMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODQsIAorICAgIDMsIDIwOSwgMjQ4LCAxODAsIDUsIDEsIDIwMiwgMjQ3LCAxODAsIDUsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCAKKyAgICA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgCisgICAgMSwgMjM5LCAyMzUsIDE4MCwgNSwgMSwgMjMwLCAxODYsIDE4MCwgNSwgMSwgMjEyLCAyMDEsIDE4MCwgNSwgMSwgMjA4LCAKKyAgICA2MCwgNjMsIDE4MCwgNSwgMSwgMjI3LCAyNTIsIDIyMywgMTY3LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgCisgICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA2LCAxLCAKKyAgICAyMTksIDE4NSwgMywgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIDM0LCAzLCA5NSwgOCwgNSwgCisgICAgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjM3LCAKKyAgICAxNzIsIDMsIDI0NCwgMjAsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NCwgCisgICAgMjAsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNiwgCisgICAgMSwgMjUxLCAyLCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgMTEzLCA4LCA2LCAxLCAyMDcsIDE3NCwgNjMsIDgsIDYsIDEsIAorICAgIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA1MCwgMTEzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgCisgICAgMTEzLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQ1LCA5NSwgOCwgNiwgMSwgCisgICAgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMjA5LCAyNDYsIDIxOCwgMTkyLCA4LCA1LCAKKyAgICAxLCAxODgsIDMsIDIyMSwgMTYzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCisgICAgMTU4LCAzLCAxMjQsIDIxNSwgMjUzLCAyMzEsIDYsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCA3NCwgOCwgMjEwLCAyNDYsIDUsIAorICAgIDEsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjA2LCAxNjQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgCisgICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgODQsIDYsIDEsIDI1MSwgMjQsIDg0LCA1LCAxLCAKKyAgICAyNTEsIDI0LCA4NCwgNiwgMSwgMjA1LCAyMjcsIDg0LCA1LCAxLCAyMDUsIDIyNywgODQsIDYsIDEsIDIzOCwgMjM1LCA4NCwgCisgICAgNSwgMSwgMjM4LCAyMzUsIDg0LCA2LCAxLCAyNDQsIDE4MCwgODQsIDUsIDEsIDI0NCwgMTgwLCA4NCwgNiwgMSwgMjQxLCAKKyAgICAxNDQsIDg0LCA1LCAxLCAyNDEsIDE0NCwgODQsIDYsIDEsIDIxMSwgMjQzLCA4NCwgNSwgMSwgMjExLCAyNDMsIDg0LCA2LCAKKyAgICAxLCAyMDIsIDk5LCA4NCwgNSwgMSwgMjAyLCA5OSwgODQsIDYsIDEsIDIzNywgODAsIDg0LCA1LCAxLCAyMzcsIDgwLCA4NCwgCisgICAgNiwgMSwgMjA5LCA3MiwgODQsIDUsIDEsIDIwOSwgNzIsIDg0LCA2LCAxLCAyMzUsIDE2OCwgODQsIDUsIDEsIDIzNSwgMTY4LCAKKyAgICA4NCwgNiwgMSwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyMjksIDI1MiwgODQsIDYsIDEsIDIyNywgMjQ4LCA4NCwgNSwgMSwgCisgICAgMjI3LCAyNDgsIDg0LCA2LCAxLCAyMjQsIDE1NSwgODQsIDUsIDEsIDIyNCwgMTU1LCA4NCwgNiwgMSwgMjIyLCAxMDAsIDg0LCAKKyAgICA1LCAxLCAyMjIsIDEwMCwgODQsIDYsIDEsIDIyOCwgMjI1LCA4NCwgNSwgMSwgMjI4LCAyMjUsIDg0LCA2LCAxLCA3OCwgODQsIAorICAgIDUsIDEsIDc4LCA4NCwgNiwgMSwgMjE4LCAxNjcsIDg0LCA1LCAxLCAyMTgsIDE2NywgODQsIDYsIDEsIDIxNSwgMjI3LCA4NCwgCisgICAgNSwgMSwgMjE1LCAyMjcsIDg0LCA2LCAxLCAyMTIsIDEzMiwgODQsIDUsIDEsIDIxMiwgMTMyLCA4NCwgNiwgMSwgMjA5LCAKKyAgICAyMDcsIDg0LCA1LCAxLCAyMDksIDIwNywgODQsIDYsIDEsIDIwNywgMzksIDg0LCA1LCAxLCAyMDcsIDM5LCA4NCwgNiwgMSwgCisgICAgMjQwLCAyNiwgODQsIDUsIDEsIDI0MCwgMjYsIDg0LCA2LCAxLCAyMjksIDEyMiwgODQsIDUsIDEsIDIyOSwgMTIyLCA4NCwgCisgICAgNiwgMSwgMjE3LCAyMDIsIDg0LCA1LCAxLCAyMTcsIDIwMiwgODQsIDYsIDEsIDIyMCwgMTIsIDg0LCA1LCAxLCAyMjAsIDEyLCAKKyAgICA4NCwgNiwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDYsIDEsIDM4LCAKKyAgICA4NCwgMjUxLCA1OSwgODQsIDUsIDEsIDM4LCA4NCwgMjUxLCA1OSwgODQsIDYsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIAorICAgIDUsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjksIDI1MiwgODQsIDUsIDEsIDI0MywgCisgICAgMjI2LCAyMjksIDI1MiwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyMjIsIAorICAgIDEwMCwgODQsIDYsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDYsIAorICAgIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDUsIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDYsIDEsIDIxNCwgMjQ2LCA4NCwgNSwgCisgICAgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCAKKyAgICA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNiwgMSwgMzgsIDg0LCAKKyAgICAyNDEsIDcsIDg0LCA1LCAxLCAzOCwgODQsIDI0MSwgNywgODQsIDYsIDEsIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNSwgMSwgCisgICAgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjM2LCAKKyAgICAxMDcsIDg0LCA2LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDYsIDEsIAorICAgIDM4LCA4NCwgMTUyLCA4NCwgNSwgMSwgMzgsIDg0LCAxNTIsIDg0LCA2LCAxLCAyMjgsIDEzMCwgMTUyLCA4NCwgNSwgMSwgCisgICAgMjI4LCAxMzAsIDE1MiwgODQsIDYsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIAorICAgIDYsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDYsIDEsIDM4LCA4NCwgMjM4LCAKKyAgICAyMzAsIDg0LCA1LCAxLCAzOCwgODQsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDUsIDEsIAorICAgIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgCisgICAgNiwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA2LCAxLCAzOCwgCisgICAgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA2LCAxLCAzOCwgMjIxLCAKKyAgICA1NCwgMjIwLCAyNDgsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIwLCAyNDgsIDg0LCA2LCAxLCAzOCwgMjIxLCA1NCwgCisgICAgMjA0LCA3NywgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMDQsIDc3LCA4NCwgMTYsIDIzMCwgMTgsIDg0LCAxNiwgMjI0LCAKKyAgICAxNTYsIDIxNSwgMjI3LCA4NCwgMTYsIDIxOCwgMTY4LCAyMTUsIDIyNywgODQsIDE2LCAyMTEsIDg1LCA4NCwgMTYsIDIwOSwgCisgICAgMjA4LCAyMTUsIDIyNywgODQsIDE2LCAyMjksIDEyMywgMjE1LCAyMjcsIDg0LCAxNiwgMjEzLCAyLCAyMTIsIDEzMiwgODQsIAorICAgIDYsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDUsIDExMywgCisgICAgMjM4LCAyMzAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjM4LCAyMzAsIDg0LCAzOSwgMjIyLCAxMDEsIDU1LCA4NCwgMzksIAorICAgIDIxMSwgMTk3LCAyNTAsIDY3LCA4NCwgMzksIDIxMSwgMTk3LCAyMjcsIDE4NiwgODQsIDYsIDEsIDI0OCwgMTYsIDIyOSwgCisgICAgMTI3LCA4NCwgNSwgMSwgMjQ4LCAxNiwgMjI5LCAxMjcsIDg0LCAzOCwgMjIxLCA1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAKKyAgICAzOCwgMjIxLCA1NCwgMjQzLCAxNjcsIDIxNywgNDcsIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIzMSwgMzAsIDIxNywgNDcsIAorICAgIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIwNiwgNDAsIDI0MywgMTQxLCA4NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDg0LCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgODQsIDIyNCwgMjUsIDI0MywgMTQxLCAxMTQsIDUsIDEsIDI1MCwgMjMxLCAxMTQsIDUsIDEsIAorICAgIDI0OCwgMjQyLCAxMTQsIDUsIDEsIDIzOCwgMjM0LCAxMTQsIDUsIDEsIDI0MywgOTMsIDExNCwgNSwgMSwgMjQxLCA5MiwgCisgICAgMTE0LCA1LCAxLCAyMDUsIDIxMywgMTE0LCA1LCAxLCAyMDIsIDg3LCAxMTQsIDUsIDEsIDIwOSwgMjMwLCAxMTQsIDUsIDEsIAorICAgIDIzMSwgNDksIDExNCwgNSwgMSwgMjMwLCA0LCAxMTQsIDUsIDEsIDIyOCwgMiwgMTE0LCA1LCAxLCAyMjUsIDEyMiwgMTE0LCAKKyAgICA1LCAxLCAyMjMsIDc0LCAxMTQsIDUsIDEsIDIyMCwgMzEsIDExNCwgNSwgMSwgMjE5LCA5MSwgMTE0LCA1LCAxLCAyMDIsIAorICAgIDc2LCAxMTQsIDUsIDEsIDIxNiwgMjAyLCAxMTQsIDUsIDEsIDIxNCwgMjQzLCAxMTQsIDUsIDEsIDIwOSwgMjE4LCAxMTQsIAorICAgIDUsIDEsIDIwNiwgMjU1LCAxMTQsIDUsIDEsIDIxOCwgMjAwLCAxMTQsIDUsIDEsIDIyOSwgMTMyLCAxMTQsIDUsIDEsIDIzOCwgCisgICAgMTEwLCAxMTQsIDUsIDEsIDIxNywgMTExLCAxMTQsIDUsIDEsIDIxMiwgMjU1LCAxMTQsIDUsIDEsIDI0NiwgMTI5LCAxMTQsIAorICAgIDUsIDEsIDI0NywgNjEsIDExNCwgNSwgMSwgMjMwLCAxMzMsIDExNCwgNSwgMSwgMjQ2LCA2OCwgMTE0LCA1LCAxLCAyNDYsIAorICAgIDE4MywgMTE0LCA1LCAxLCAyMDMsIDE4MCwgMTE0LCA1LCAxLCAyMzAsIDE0NiwgMTE0LCA1LCAxLCAyMzcsIDE1NCwgMTE0LCAKKyAgICA1LCAxLCAyMzcsIDY3LCAxMTQsIDUsIDEsIDIzNiwgMjU0LCAxMTQsIDUsIDEsIDIwNCwgNjIsIDExNCwgNSwgMSwgMjM3LCAKKyAgICA5MiwgMTE0LCA1LCAxLCAyMzYsIDEzMiwgMTE0LCA1LCAxLCAyMDIsIDI0OSwgMTE0LCA1LCAxLCAyNTEsIDk4LCAyMDgsIAorICAgIDI0NywgMSwgMTk4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDYsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNSwgMjA4LCAyNDcsIDEsIAorICAgIDIwMywgOTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDkzLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAyMDMsIDg4LCAKKyAgICAyMDgsIDI0NywgMSwgMjAzLCA4OCwgMjA4LCAyNDcsIDEsIDIwMywgMTAzLCAyMDgsIDI0NywgMSwgMjAzLCAxMDAsIDIwOCwgCisgICAgMjQ3LCAxLCAyMDMsIDEwMiwgMjA4LCAyNDcsIDEsIDIwMywgMTAxLCAyMDgsIDI0NywgMSwgMjAzLCAxNSwgMjA4LCAyNDcsIAorICAgIDEsIDIwMywgOTcsIDIwOCwgMjQ3LCAxLCAyMDMsIDg2LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODYsIDIwOCwgCisgICAgMjQ3LCAxLCAyMDMsIDgzLCAyMDgsIDI0NywgMSwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgCisgICAgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjAzLCA5MCwgMjA4LCAyNDcsIAorICAgIDEsIDIwMywgMTEwLCAyMDgsIDI0NywgMSwgMjAzLCA4NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg0LCAyMDgsIAorICAgIDI0NywgMSwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjAzLCAxMSwgCisgICAgMjA4LCAyNDcsIDEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyNTEsIDcxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjA3LCAKKyAgICAyMDAsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDgyLCAyMDgsIDI0NywgMSwgMjAzLCA4MSwgMjA4LCAyNDcsIDEsIAorICAgIDIwMywgNzgsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDc2LCAKKyAgICAyMDgsIDI0NywgMSwgMjAzLCA3NCwgMjA4LCAyNDcsIDEsIDIwMiwgMjEzLCAyMDgsIDI0NywgMSwgMjAzLCA3MSwgMjA4LCAKKyAgICAyNDcsIDEsIDIwMywgNzAsIDIwOCwgMjQ3LCAxLCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTQsIAorICAgIDIwOCwgMjQ3LCAxLCAyNTAsIDQsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDY5LCAyMDgsIDI0NywgMSwgMjAzLCA2NywgCisgICAgMjA4LCAyNDcsIDEsIDIwMywgNjgsIDIwOCwgMjQ3LCAxLCAyMDMsIDY2LCAyMDgsIDI0NywgMSwgMjAzLCA2NSwgMjA4LCAKKyAgICAyNDcsIDEsIDIwMywgMTA0LCAyMDgsIDI0NywgMSwgMjAzLCA2MywgMjA4LCAyNDcsIDEsIDIwMywgNjEsIDIwOCwgMjQ3LCAKKyAgICAxLCAyMDMsIDYwLCAyMDgsIDI0NywgMSwgMjAzLCA1OCwgMjA4LCAyNDcsIDEsIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDksIAorICAgIDE5OSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwMywgNTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDUyLCAyMDgsIDI0NywgMSwgCisgICAgMjAyLCAyNDcsIDIwOCwgMjQ3LCA2NSwgMSwgMjI4LCAxMDMsIDgyLCAyMDgsIDI0NywgMjEzLCAxMzEsIDgyLCAyMDgsIAorICAgIDI0NywgMTA5LCAyMzAsIDk2LCAzMywgNCwgMjI3LCA0OCwgMzMsIDQsIDIyNCwgODEsIDMzLCA0LCAyMTUsIDIyNSwgMzMsIAorICAgIDQsIDIxMiwgMTIsIDMzLCA0LCAyMTIsIDI0MSwgMzMsIDQsIDI0OCwgMjIsIDMzLCA0LCAyMDgsIDE3MiwgMzMsIDQsIDI0NSwgCisgICAgMjUzLCAzMywgNCwgMjIxLCAxODksIDMzLCA0LCAyMjAsIDIzMiwgMzMsIDQsIDIzOCwgNDUsIDIyMCwgOTcsIDMzLCA0LCAKKyAgICAyMDIsIDE2LCAzMywgNCwgMjQzLCAxMTEsIDMzLCA0LCAyNDQsIDg5LCAzMywgNCwgMjMwLCAxMDAsIDMzLCA0LCAyMDksIAorICAgIDQ2LCAzMywgNCwgMjQ2LCAxMTUsIDMzLCA0LCAyMTgsIDE3OSwgMzMsIDQsIDIxOCwgNjgsIDMzLCA0LCAyMzgsIDEyNSwgCisgICAgMzMsIDQsIDIzOCwgMTIxLCAzMywgNCwgMjM4LCAxMjIsIDMzLCA0LCAyMzgsIDEyMywgMzMsIDQsIDIxMSwgMTY0LCAzMywgCisgICAgNCwgMjExLCAxMTksIDMzLCA0LCAyMTEsIDEzMiwgMzMsIDQsIDIxMSwgMTYzLCAzMywgNCwgMjExLCAxMzcsIDMzLCA0LCAKKyAgICAyMTEsIDEzOCwgMzMsIDQsIDIxMSwgMTI0LCAzMywgNCwgMjQ3LCA1LCAzMywgNCwgMjQ2LCAyNDAsIDMzLCA0LCAyNDYsIAorICAgIDI0MiwgMzMsIDQsIDI0NywgNCwgMzMsIDQsIDI0NywgMiwgMzMsIDQsIDI0NywgMywgMzMsIDQsIDI0NiwgMjQxLCAzMywgNCwgCisgICAgMjAxLCAyMzUsIDMzLCA0LCAyMDEsIDIxMywgMzMsIDQsIDIwMSwgMjI2LCAzMywgNCwgMjAxLCAyMzQsIDMzLCA0LCAyMDEsIAorICAgIDIyOSwgMzMsIDQsIDIwMSwgMjMwLCAzMywgNCwgMjAxLCAyMTgsIDMzLCA0LCAyNDcsIDAsIDMzLCA0LCAyNDYsIDI0MywgCisgICAgMzMsIDQsIDI0NiwgMjQ1LCAzMywgNCwgMjQ2LCAyNTUsIDMzLCA0LCAyNDYsIDI1MywgMzMsIDQsIDI0NiwgMjU0LCAzMywgCisgICAgNCwgMjQ2LCAyNDQsIDMzLCA0LCAyMTcsIDEzLCAzMywgNCwgMjE3LCAzLCAzMywgNCwgMjE3LCA5LCAzMywgNCwgMjE3LCAKKyAgICAxMiwgMzMsIDQsIDIxNywgMTAsIDMzLCA0LCAyMTcsIDExLCAzMywgNCwgMjE3LCA4LCAzMywgNCwgMjI4LCAxNDEsIDMzLCAKKyAgICA0LCAyMjgsIDEzMywgMzMsIDQsIDIyOCwgMTM2LCAzMywgNCwgMjI4LCAxNDAsIDMzLCA0LCAyMjgsIDEzNywgMzMsIDQsIAorICAgIDIyOCwgMTM4LCAzMywgNCwgMjI4LCAxMzQsIDMzLCA0LCAyMDMsIDE0MCwgMzMsIDQsIDIwMywgMTI3LCAzMywgNCwgMjAzLCAKKyAgICAxMzUsIDMzLCA0LCAyMDMsIDEzOSwgMzMsIDQsIDIwMywgMTM3LCAzMywgNCwgMjAzLCAxMzgsIDMzLCA0LCAyMDMsIDEzNCwgCisgICAgMzMsIDQsIDIzNywgMTgzLCAzMywgNCwgMjM3LCAxNzMsIDMzLCA0LCAyMzcsIDE3NiwgMzMsIDQsIDIzNywgMTgyLCAzMywgCisgICAgNCwgMjM3LCAxNzgsIDMzLCA0LCAyMzcsIDE3OSwgMzMsIDQsIDIzNywgMTc1LCAzOSwgMzYsIDEsIDI0OCwgMTYyLCAzOSwgCisgICAgMzYsIDEsIDIwNiwgNTUsIDM5LCAzNiwgMSwgMjM4LCAxMDUsIDM5LCAzNiwgMSwgMjQ0LCA3NSwgMzksIDM2LCAxLCAyMDIsIAorICAgIDcxLCAzOSwgMzYsIDEsIDIwMiwgOTIsIDM5LCAzNiwgMSwgMTczLCAzOSwgMzYsIDEsIDI0MSwgMTIyLCAzOSwgMzYsIDEsIAorICAgIDI0MSwgMTAzLCAzOSwgMzYsIDEsIDI0MSwgOTIsIDM5LCAzNiwgMSwgNzgsIDM5LCAzNiwgMSwgMjE5LCAzNCwgMzksIDM2LCAKKyAgICAxLCAyNDEsIDI4LCAzOSwgMzYsIDEsIDI0MSwgMTcsIDM5LCAzNiwgMSwgMjA5LCAxODcsIDM5LCAzNiwgMSwgMTUyLCAzOSwgCisgICAgMzYsIDEsIDIwOCwgMTQsIDM5LCAzNiwgMSwgMjQ2LCAxNzAsIDM5LCAzNiwgMSwgMjEzLCA5MCwgMzksIDM2LCAxLCAyMTMsIAorICAgIDQ2LCAzOSwgMzYsIDEsIDIzOSwgMjM1LCAzOSwgMzYsIDEsIDI0MSwgMTMsIDM5LCAzNiwgMSwgNjMsIDM5LCAzNiwgMSwgCisgICAgMjMxLCAxMTAsIDM5LCAzNiwgMSwgMjQzLCAxMjksIDM5LCAzNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzksIDM2LCAxLCAKKyAgICAyMDMsIDY2LCAzOSwgMzYsIDEsIDIwMiwgMjEzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCA2MywgMzksIDM2LCAxLCAyMjcsIAorICAgIDg2LCAyMDIsIDE4MywgMzksIDM2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzksIDM2LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgCisgICAgMjAyLCAxODMsIDUwLCAyNTAsIDIxOCwgMjEwLCAyNDEsIDIyNSwgODgsIDUwLCAyNTAsIDIxOCwgMjQyLCA4MywgMjEwLCAKKyAgICAyNDEsIDIyNSwgODgsIDQ5LCAyMTAsIDI0MSwgMTU1LCA1MCwgMjEwLCAyNDEsIDE1NSwgNDksIDI0MiwgODMsIDIxMCwgCisgICAgMjQxLCAxNTUsIDUwLCAyNDIsIDgzLCAyMTAsIDI0MSwgMTU1LCAyMTYsIDE4OCwgMjMwLCAyNDksIDIyNSwgODgsIDIxNiwgCisgICAgMTg4LCAyNDIsIDgzLCAyMzAsIDI0OSwgMjI1LCA4OCwgMjQyLCA4MywgMjA4LCAxMDMsIDIyNSwgODgsIDQ5LCAyMDgsIAorICAgIDEwMywgMTU1LCA1MCwgMjA4LCAxMDMsIDE1NSwgMjE2LCAxODgsIDIxMSwgMTc3LCA0OSwgMjE2LCAxODgsIDIyMCwgMzMsIAorICAgIDE1NSwgNTAsIDIxNiwgMTg4LCAyMjAsIDMzLCAxNTUsIDI0MSwgMTYyLCAyNDUsIDE2MywgMjE5LCA4NywgMjM5LCAxNjEsIAorICAgIDIxOSwgODcsIDIxNiwgNzMsIDIzOSwgMTYxLCAyMTksIDg3LCAyMzUsIDIxNywgMjQyLCA4MywgMjIwLCA5MiwgMTgzLCAKKyAgICAyNTAsIDIyNywgMTc3LCAyNTAsIDIyNywgMjQyLCA4MywgMjE2LCAxMSwgMjUwLCAyMTcsIDUyLCAyMjAsIDg5LCAyMzUsIAorICAgIDIyMCwgMjMwLCAyMzksIDIzMCwgMjQ3LCAyMTksIDEzNSwgMjQ3LCAyMjMsIDIzNSwgMjIxLCAzLCAyNDMsIDIzMSwgMjA4LCAKKyAgICAyMjgsIDMsIDIxNSwgMjUzLCA1NSwgNDksIDEyNCwgMjE5LCA3OSwgMTU1LCA1MCwgMTI0LCAyMTksIDc5LCAxNTUsIDIwOCwgCisgICAgMjI4LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAzLCA3MCwgNTYsIDQ5LCA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDUwLCAKKyAgICA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDIwOCwgMTQ1LCA0OSwgMTYyLCAxNTUsIDIwOCwgMTQ1LCA1MCwgMTYyLCAxNTUsIAorICAgIDI0NywgMjQ4LCA0OSwgMTYyLCAxNTUsIDI0NywgMjQ4LCA1MCwgMTYyLCAxNTUsIDQ5LCAyMTIsIDE1NCwgMTA2LCAxNTUsIAorICAgIDUwLCAyMTIsIDE1NCwgMTA2LCAxNTUsIDQ5LCA1MiwgMjE5LCA3NiwgNTAsIDUyLCAyMTksIDc2LCAxMjAsIDE4NywgMTE1LCAKKyAgICAxMTgsIDcwLCAyMTcsIDE3OCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgMjE3LCAxNzgsIDEwMywgMjM5LCAxNDcsIDcwLCAKKyAgICAyMTcsIDE3OCwgMjM5LCAyMzMsIDcwLCA4MiwgMjE2LCA3MywgMjE3LCA0NywgODIsIDgwLCAyMDgsIDIyNywgMjE1LCAyNTMsIAorICAgIDIxOCwgNjIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMTAxLCAyNDMsIDg1LCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDIxNiwgMTg4LCAKKyAgICAyNDMsIDg1LCAyMTYsIDE4OCwgMjQ1LCAyMzMsIDIwNywgMTc0LCAyMTMsIDE0MywgMjQ0LCAxOTYsIDMsIDQ5LCAyMzcsIAorICAgIDIyNCwgMjQ0LCAxOTYsIDMsIDUwLCAyMzcsIDIyNCwgMjA3LCAxNzQsIDI0NCwgMTk1LCAyMDgsIDE0NSwgMTYyLCAyMTQsIAorICAgIDE2OCwgNTQsIDIwNywgMTM1LCAyNDQsIDE0NCwgMjA5LCAzMCwgMjQ0LCAxNDQsIDIxMSwgNzYsIDIzOSwgMTAyLCAyMTEsIAorICAgIDYxLCA4MCwgMjEyLCA4OCwgMjQzLCA4MywgMjA0LCAyMSwgODAsIDIyNywgMTE0LCAyNDcsIDQ2LCA1MiwgMjM1LCAyMjAsIAorICAgIDIxNiwgNzMsIDI0NSwgMjMzLCA1MiwgMjI2LCAyNTIsIDIxNywgMzEsIDgyLCAxMiwgNDAsIDIxNiwgMTAwLCAxMiwgNDAsIAorICAgIDI0NiwgMjYsIDEyLCA0MCwgMjE0LCAxNzEsIDEwNSwgMTIsIDQwLCAyMTQsIDE3MSwgMTA4LCAxMiwgNDAsIDIxNCwgMTcxLCAKKyAgICAxNDcsIDEyLCA0MCwgMjE4LCAyMjksIDEyLCA0MCwgMjQ3LCAyMzMsIDEyLCA0MCwgMjEwLCA4LCAxMiwgNDAsIDIyOSwgMzQsIAorICAgIDEwNSwgMTIsIDQwLCAyMjksIDM0LCAxMDgsIDEyLCA0MCwgMjQzLCAxMzgsIDEyLCA0MCwgMjE0LCAxNzUsIDEyLCA0MCwgNSwgCisgICAgMTA1LCAxMiwgNDAsIDUsIDEwOCwgMTIsIDQwLCAyMjgsIDIzLCAxMDUsIDEyLCA0MCwgMjI4LCAyMywgMTA4LCAxMiwgNDAsIAorICAgIDIyOCwgMjMsIDE0NywgMTIsIDQwLCAyMjgsIDIzLCAxNDksIDEyLCA0MCwgMjEyLCAyNCwgMTIsIDQwLCAyMDksIDMzLCAxMiwgCisgICAgNDAsIDIxMiwgMjIsIDEwNSwgMTIsIDQwLCAyMTIsIDIyLCAxMDgsIDEyLCA0MCwgMjM3LCA1NiwgMTA1LCAxMiwgNDAsIAorICAgIDIzNywgNTYsIDEwOCwgMTIsIDQwLCAyMzcsIDEyMywgMTIsIDQwLCAyMTYsIDE3OCwgMTIsIDQwLCAyNDYsIDExMiwgMTIsIAorICAgIDQwLCAyMTAsIDIxNCwgMTIsIDQwLCAyMjQsIDI5LCAxMiwgNDAsIDI0NCwgNzMsIDEyLCA0MCwgMjI0LCAyMCwgMTIsIDQwLCAKKyAgICAyNDYsIDQ0LCAxMiwgNDAsIDIwNCwgODEsIDEwNSwgMTIsIDQwLCAyMDQsIDgxLCAxMDgsIDEyLCA0MCwgMjM5LCAyNDksIAorICAgIDEyLCA0MCwgMjE5LCA0NiwgMTA1LCAxMiwgNDAsIDIxOSwgNDYsIDEwOCwgMTIsIDQwLCAyMTIsIDEyNywgMTYyLCAyMDgsIAorICAgIDk2LCAyMDgsIDI1LCAxMiwgNDAsIDI0NSwgMTQ5LCAxMiwgNDAsIDI0MywgMTAyLCAxMiwgNDAsIDIzMCwgMTc2LCAxMiwgCisgICAgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCAxMiwgNDAsIDI0MCwgMTkxLCAxMiwgNDAsIDIxMSwgMTk5LCAxMDUsIDEyLCAKKyAgICA0MCwgMjExLCAxOTksIDEwOCwgMTIsIDQwLCAyNDgsIDI0NCwgMTIsIDQwLCAyMTIsIDEzNCwgMTIsIDQwLCAyNDcsIDEyMiwgCisgICAgMjEyLCAxMzQsIDEyLCA0MCwgMjIyLCAyMjAsIDEwNSwgMTIsIDQwLCAyMjIsIDIyMCwgMTA4LCAxMiwgNDAsIDIyMiwgMjIwLCAKKyAgICAxNDcsIDEyLCA0MCwgMjIyLCAyMjAsIDE0OSwgMTIsIDQwLCAyMjQsIDIyNywgMTIsIDQwLCAyMTMsIDM3LCAxMiwgNDAsIAorICAgIDIxNiwgMTg0LCAxMiwgNDAsIDI0MCwgMjE5LCAxMiwgNDAsIDIyMCwgNDUsIDEyLCA0MCwgMjQ3LCAyMDEsIDEwNSwgMTIsIAorICAgIDQwLCAyNDcsIDIwMSwgMTA4LCAxMiwgNDAsIDIyNSwgMTUsIDEyLCA0MCwgMjI0LCAyNCwgMTIsIDQwLCAyMzgsIDEsIDEwNSwgCisgICAgMTIsIDQwLCAyMzgsIDEsIDEwOCwgMTIsIDQwLCAyMzgsIDEsIDE0NywgMTIsIDQwLCAyMDgsIDI0NSwgMTIsIDQwLCAyNDYsIAorICAgIDksIDEyLCA0MCwgMjA0LCA0NiwgMTA1LCAxMiwgNDAsIDIwNCwgNDYsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjE0LCAKKyAgICAxNjUsIDEyLCA0MCwgMjEyLCAxMjcsIDIzNiwgNTMsIDEyLCA0MCwgMjM2LCA1MywgMTIsIDQwLCAyNDcsIDEyMiwgMjExLCAKKyAgICAyMTEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMywgMzIsIDEyLCA0MCwgMjM5LCAxNzIsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0NywgCisgICAgMjMsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMTAxLCAxMiwgNDAsIDIwNCwgMTAyLCAxMDUsIDEyLCA0MCwgMjA0LCAxMDIsIAorICAgIDEwOCwgMTIsIDQwLCAyNDYsIDQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDMxLCAxMiwgNDAsIDE2MywgMTA1LCAxMiwgCisgICAgNDAsIDE2MywgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDIxNiwgMTIsIAorICAgIDQwLCAyMjQsIDE2LCAxMDUsIDEyLCA0MCwgMjI0LCAxNiwgMTA4LCAxMiwgNDAsIDIxNiwgMTkwLCAxMiwgNDAsIDI0OCwgCisgICAgMjUsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOSwgMjI0LCAyMjcsIDIyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyMjksIDEyLCAKKyAgICA0MCwgMjQ3LCAxMjIsIDIwNCwgMTYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMTkwLCAxMiwgNDAsIDI0MSwgMTczLCAxMDUsIAorICAgIDEyLCA0MCwgMjQxLCAxNzMsIDEwOCwgMTIsIDQwLCAyNDEsIDE3MywgMTQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyNDEsIDE3MiwgCisgICAgMTIsIDQwLCAyMzcsIDY0LCAxMiwgNDAsIDI0NywgMTIyLCAyMzYsIDQ5LCAxMiwgNDAsIDI0OCwgMTEsIDEyLCA0MCwgMjM4LCAKKyAgICA4OSwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAyNDMsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0OCwgNjAsIDEyLCA0MCwgMjQ3LCAKKyAgICAxMjIsIDIxNSwgMSwgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAzOCwgMTIsIDQwLCAyMTIsIDEyNywgMjAzLCA0NCwgMTIsIAorICAgIDQwLCAyNDcsIDEyMiwgMjM5LCAxMjEsIDEyLCA0MCwgMjMwLCAxODMsIDI0MCwgMjI0LCAxMiwgNDAsIDI0NywgMTIyLCAKKyAgICAyNDAsIDIyNCwgMTIsIDQwLCAyMzAsIDE4MywgMjA4LCAxNDYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOCwgMTQ2LCAxMiwgNDAsIAorICAgIDIzMCwgMTgzLCAyNDIsIDYxLCAxMiwgNDAsIDI0NywgMTIyLCAyNDIsIDYxLCAxMiwgNDAsIDIwNywgMTcxLCAxMiwgNDAsIAorICAgIDIzMCwgMTgzLCAyMDcsIDE3MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA3LCAxNzEsIDcxLCA0MCwgMTA1LCA3MSwgNDAsIDIyNywgCisgICAgMTE0LCA3MSwgNDAsIDI0MywgODUsIDcxLCA0MCwgMjEyLCA1NywgNzEsIDQwLCAyMTQsIDE3MCwgNzEsIDQwLCAxMTMsIDcxLCAKKyAgICA0MCwgMTA4LCA3MSwgNDAsIDIyNywgMTQzLCA3MSwgNDAsIDIyNSwgMTIyLCA3MSwgNDAsIDIyNywgMjA3LCA3MSwgNDAsIAorICAgIDI0MSwgNjcsIDcxLCA0MCwgMTk5LCA3MSwgNDAsIDEyMSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjQ1LCAxNTEsIDcxLCA0MCwgCisgICAgMjM1LCAxNjIsIDcxLCA0MCwgMjEwLCA4LCA3MSwgNDAsIDE3MSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjI5LCAzMywgNzEsIDQwLCAKKyAgICAyMTgsIDE2LCA3MSwgNDAsIDIwMywgMjI4LCA3MSwgNDAsIDIxMSwgMTkwLCA3MSwgNDAsIDUwLCAxNzEsIDI0NywgMjMzLCAKKyAgICA3MSwgNDAsIDIzNiwgMjU1LCAyNDEsIDg3LCA3MSwgNDAsIDIwOSwgMTUyLCA3MSwgNDAsIDI0MywgMTM4LCA3MSwgNDAsIAorICAgIDIxNCwgMTc1LCA3MSwgNDAsIDI0NiwgMjYsIDcxLCA0MCwgMjE3LCAyMjYsIDcxLCA0MCwgMjUxLCA4MCwgNzEsIDQwLCAKKyAgICAyMjQsIDcsIDcxLCA0MCwgMjQxLCA4NywgNzEsIDQwLCAyNDEsIDE3OSwgNzEsIDQwLCAyMTQsIDE5NywgNzEsIDQwLCAyMzgsIAorICAgIDM5LCA3MSwgNDAsIDIzOCwgNDAsIDIxMiwgMzgsIDcxLCA0MCwgMjQwLCAyMjMsIDcxLCA0MCwgMjQ4LCA3MiwgNzEsIDQwLCAKKyAgICAyMDMsIDI1MCwgNzEsIDQwLCAyNDYsIDEzMywgNzEsIDQwLCAyMTUsIDIwNywgNzEsIDQwLCAyMzEsIDQ1LCA3MSwgNDAsIAorICAgIDIxMiwgMzYsIDcxLCA0MCwgMjI4LCAyMiwgNzEsIDQwLCAyNDUsIDE2MSwgNzEsIDQwLCAyMTEsIDE4MSwgNzEsIDQwLCAKKyAgICAyMjQsIDEyLCA3MSwgNDAsIDIxNSwgMjQxLCA3MSwgNDAsIDIwMywgMjM1LCA3MSwgNDAsIDIyMCwgMjUsIDcxLCA0MCwgCisgICAgMjA3LCAxODAsIDcxLCA0MCwgMjQyLCA0NCwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAzMywgNzEsIDQwLCAyNDIsIDgzLCAKKyAgICAyNDYsIDI2LCA3MSwgNDAsIDE2MywgMjExLCAzOCwgNzEsIDQwLCAxMjAsIDIzNywgOTksIDcxLCA0MCwgMjEyLCAyMzQsIAorICAgIDcxLCA0MCwgMjQ3LCAyNDAsIDcxLCA0MCwgMjEyLCAyMSwgNzEsIDQwLCAyNDcsIDIwNSwgNzEsIDQwLCAyMTEsIDc1LCA3MSwgCisgICAgNDAsIDIzNywgNTUsIDcxLCA0MCwgMjM3LCAxMzgsIDcxLCA0MCwgMjQzLCA4OCwgNzEsIDQwLCAyMzcsIDEyMywgNzEsIDQwLCAKKyAgICAyNDcsIDIyMywgNzEsIDQwLCAyMTYsIDE3OCwgNzEsIDQwLCAyMTQsIDE4MywgNzEsIDQwLCAyNDMsIDE2OSwgNzEsIDQwLCAKKyAgICAyNTAsIDksIDcxLCA0MCwgMjExLCAxNzcsIDcxLCA0MCwgMjIxLCAxNjUsIDcxLCA0MCwgMjEwLCAyMTQsIDcxLCA0MCwgCisgICAgMjE0LCAyMDgsIDcxLCA0MCwgMjI0LCAyOSwgNzEsIDQwLCAyMDgsIDk1LCA3MSwgNDAsIDIyOCwgOTksIDcxLCA0MCwgMjExLCAKKyAgICA2MSwgNzEsIDQwLCAyNDQsIDczLCA3MSwgNDAsIDIwNCwgNjEsIDcxLCA0MCwgMjQzLCAxMTQsIDIyMSwgMTY1LCA3MSwgNDAsIAorICAgIDI0NSwgMjI5LCA3MSwgNDAsIDIzOSwgOTUsIDcxLCA0MCwgMjQ2LCAzOCwgNzEsIDQwLCAyMTEsIDgwLCA3MSwgNDAsIDIwNCwgCisgICAgODAsIDcxLCA0MCwgMjM5LCAyNDksIDcxLCA0MCwgMjQ2LCAzNCwgNzEsIDQwLCAyNDAsIDY3LCA3MSwgNDAsIDUyLCAyMDMsIAorICAgIDE5NiwgNzEsIDQwLCAxNjIsIDIwOCwgOTYsIDIwOCwgMjUsIDcxLCA0MCwgMjEyLCA1MCwgNzEsIDQwLCAyNDAsIDc5LCA3MSwgCisgICAgNDAsIDI0NSwgMTQ5LCA3MSwgNDAsIDI0MywgMTAyLCA3MSwgNDAsIDIxNywgMjIzLCA3MSwgNDAsIDIzMCwgMTc2LCA3MSwgCisgICAgNDAsIDIyNCwgMjQ5LCA3MSwgNDAsIDIwOCwgMjI2LCA3MSwgNDAsIDIxMCwgMTY0LCA3MSwgNDAsIDIyNywgMTM3LCA3MSwgCisgICAgNDAsIDIwNiwgMTkxLCA3MSwgNDAsIDI0MCwgMjQsIDcxLCA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDcxLCA0MCwgMjEyLCAKKyAgICAxNTgsIDcxLCA0MCwgMjQyLCA4MywgMjA5LCAxNDQsIDcxLCA0MCwgMjA0LCAzMywgNzEsIDQwLCAyMTIsIDY1LCA3MSwgNDAsIAorICAgIDI0MywgMTU2LCA3MSwgNDAsIDI0MCwgMTkxLCA3MSwgNDAsIDIxMSwgMjE0LCA3MSwgNDAsIDQ3LCA3MSwgNDAsIDIxMSwgCisgICAgNjMsIDcxLCA0MCwgMjExLCAxOTgsIDcxLCA0MCwgMjA4LCAxMTgsIDcxLCA0MCwgMjM4LCAxMCwgNzEsIDQwLCAyNDcsIDEwLCAKKyAgICA3MSwgNDAsIDIxMSwgOTgsIDcxLCA0MCwgMjQ4LCAyNDQsIDcxLCA0MCwgMjE2LCA1MiwgNzEsIDQwLCAyMTIsIDEzNCwgNzEsIAorICAgIDQwLCAyMzAsIDE2OCwgNzEsIDQwLCAyMjIsIDIxOSwgNzEsIDQwLCAyMTMsIDM3LCA3MSwgNDAsIDI0MCwgNTUsIDcxLCA0MCwgCisgICAgMjIwLCA0NSwgNzEsIDQwLCAyNTAsIDIyNiwgNzEsIDQwLCAyMTgsIDgzLCA3MSwgNDAsIDI0MSwgMTgzLCA3MSwgNDAsIAorICAgIDI0NywgMjAwLCA3MSwgNDAsIDIyNSwgMTUsIDcxLCA0MCwgMjI0LCAxMDQsIDcxLCA0MCwgMjEzLCAxNDksIDcxLCA0MCwgCisgICAgMjUwLCA5OCwgNzEsIDQwLCAyMjQsIDI0LCA3MSwgNDAsIDIwOCwgMTUwLCA3MSwgNDAsIDIxOSwgMjUyLCA3MSwgNDAsIAorICAgIDI0OCwgMTksIDcxLCA0MCwgMjExLCA1OSwgNzEsIDQwLCAyNDUsIDI0MSwgNzEsIDQwLCAyMzgsIDAsIDcxLCA0MCwgMjA4LCAKKyAgICAyNDUsIDcxLCA0MCwgMjMxLCA5LCA3MSwgNDAsIDI0OCwgMzEsIDcxLCA0MCwgMjA0LCAxMDIsIDI0MSwgODcsIDcxLCA0MCwgCisgICAgMjQ2LCA5LCA3MSwgNDAsIDIwNCwgNDUsIDcxLCA0MCwgMjE0LCAxNjUsIDcxLCA0MCwgMjM2LCA1MywgNzEsIDQwLCAyMTEsIAorICAgIDIxMSwgNzEsIDQwLCAyMDYsIDc5LCA3MSwgNDAsIDI0OCwgMTU3LCA3MSwgNDAsIDIxOCwgMTMxLCA3MSwgNDAsIDI0OSwgCisgICAgMTMsIDcxLCA0MCwgMjEzLCAzMiwgNzEsIDQwLCAyMTYsIDEzNywgNzEsIDQwLCAyMTUsIDEyOCwgNzEsIDQwLCAyMzksIAorICAgIDE3MiwgNzEsIDQwLCAyNDgsIDE3LCA3MSwgNDAsIDI0NywgMjMsIDcxLCA0MCwgMjQ4LCA0OCwgNzEsIDQwLCAyMjQsIDI2LCAKKyAgICA3MSwgNDAsIDIwNCwgMTAxLCA3MSwgNDAsIDI0NiwgNDcsIDcxLCA0MCwgMjA0LCAxMiwgNzEsIDQwLCAyNDMsIDE0OSwgNzEsIAorICAgIDQwLCAyMDUsIDIxNCwgNzEsIDQwLCAyMzgsIDMxLCA3MSwgNDAsIDIyNywgMjgsIDcxLCA0MCwgMjM4LCAyMTYsIDcxLCA0MCwgCisgICAgMjI0LCAxNSwgNzEsIDQwLCAyMTIsIDU2LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDI0NywgMjQ4LCA2MCwgNzEsIDQwLCAKKyAgICAyMTYsIDE5MCwgNzEsIDQwLCAyNDgsIDI1LCA3MSwgNDAsIDIwMywgMjE5LCA3MSwgNDAsIDI0MCwgMTAyLCA3MSwgNDAsIAorICAgIDIyNywgMjI4LCA3MSwgNDAsIDIwOSwgMjI0LCAyMjcsIDIyOCwgNzEsIDQwLCAyMjcsIDIyNCwgNzEsIDQwLCAyMTEsIDI0MCwgCisgICAgNzEsIDQwLCAyMjcsIDIyOSwgNzEsIDQwLCAyMDQsIDE2LCA3MSwgNDAsIDIzOSwgMTkwLCA3MSwgNDAsIDI0MSwgMTcyLCAKKyAgICA3MSwgNDAsIDIzNywgNjQsIDcxLCA0MCwgMjM5LCAxMzYsIDcxLCA0MCwgMjM2LCA0OSwgNzEsIDQwLCAyNDgsIDExLCA3MSwgCisgICAgNDAsIDIwOSwgMjMzLCA3MSwgNDAsIDIzNywgMTQ1LCA3MSwgNDAsIDI0MCwgMTcsIDcxLCA0MCwgMjE1LCAzMCwgMjA0LCAKKyAgICAxMiwgNzEsIDQwLCAyNDcsIDEyLCA3MSwgNDAsIDIzOCwgODksIDcxLCA0MCwgMjM5LCAyNDMsIDcxLCA0MCwgMjQ4LCA2MCwgCisgICAgNzEsIDQwLCAyMTUsIDEsIDcxLCA0MCwgMjQ0LCA1OCwgNzEsIDQwLCAyMDQsIDM4LCA3MSwgNDAsIDIzNywgMzQsIDcxLCAKKyAgICA0MCwgMjAzLCA0NCwgNzEsIDQwLCAyMjQsIDExNSwgNzEsIDQwLCAyNDgsIDQzLCA3MSwgNDAsIDI0MSwgOTksIDcxLCA0MCwgCisgICAgMjM5LCAxMjEsIDcxLCA0MCwgMjA4LCA2NywgNzEsIDQwLCAyNDIsIDQ2LCA3MSwgNDAsIDIxNiwgMTcyLCA3MSwgNDAsIAorICAgIDIyMSwgMTY3LCA3MSwgNDAsIDI0MCwgMjI0LCA3MSwgNDAsIDIwOCwgMTQ2LCA3MSwgNDAsIDI0MiwgNjEsIDcxLCA0MCwgCisgICAgMjA3LCAxNzEsIDcxLCA0MCwgMjM5LCAxOTMsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIDIxNiwgMTYsIAorICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAKKyAgICAxMDEsIDI1LCAyMTYsIDE2LCAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCAxMDEsIDI1LCA1NiwgMTM5LCAyNDQsIAorICAgIDE4LCAxNjcsIDIzOSwgMTAyLCAyMTAsIDE4NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTUsIAorICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIAorICAgIDIzOSwgMTIwLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIyNywgCisgICAgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMTM5LCAyNDQsIAorICAgIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjI2LCAyNTEsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjE5LCAKKyAgICAyMDIsIDEzOSwgMjExLCAyMjgsIDEzOSwgMjQ1LCAyMzMsIDEzOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0MywgMTQ2LCA4MiwgCisgICAgMjMwLCAxNjksIDIzMSwgMjksIDIxMSwgOTcsIDk3LCAxMzksIDIzMCwgMTk5LCA4MiwgMTM5LCAyNDYsIDEyLCA4MiwgMTM5LCAKKyAgICA0MiwgMjAyLCA4NCwgNDksIDI1MCwgMjE4LCAxNTUsIDUwLCAyNTAsIDIxOCwgMTU1LCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAorICAgIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgNDksIDI0NSwgMTY2LCAxNTUsIDUwLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjEsIDI0NSwgCisgICAgMTY2LCAxNTUsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjIsIDIyNywgMTg1LCAKKyAgICAxNTUsIDIxOCwgMjksIDgyLCAyMzgsIDE1OCwgODIsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgMjA4LCAxMzMsIAorICAgIDIxMywgMzMsIDE1NSwgNDksIDYxLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjEsIDIyNywgMTg1LCAxNTUsIDQ5LCA2MSwgMjA4LCAKKyAgICAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDUxLCAxNTUsIDUwLCAKKyAgICA2MSwgNTEsIDE1NSwgMjA0LCA3NiwgMjQ0LCAxNDQsIDIxNiwgNzMsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDUyLCAKKyAgICAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDEyNCwgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMjE4LCAyOSwgMTMxLCAyNDAsIAorICAgIDEwMiwgMjM3LCA5NywgMjIxLCA0NCwgMTA1LCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDgsIDIzNywgOTcsIDIyMSwgNDQsIDE0NywgCisgICAgMjM3LCA5NywgMjIxLCA0NCwgMTQ5LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNzAsIDIzNywgOTcsIDIyMSwgNDQsIDE5NSwgMjM3LCAKKyAgICA5NywgMjIxLCA0NCwgMjEzLCAxMTEsIDIzNywgOTcsIDIyMSwgNDQsIDE5OSwgMjM3LCA5NywgMjIxLCA0NCwgMjIyLCA2MywgCisgICAgMTM5LCAyMjcsIDE2NywgMTQzLCA4MiwgMTM5LCAyMTUsIDI0NSwgMTQzLCA4MiwgMTM5LCAyNDQsIDI3LCAxNDMsIDgyLCAKKyAgICAxMzksIDI0MSwgNjYsIDE0MywgODIsIDI4LCAyMTIsIDEyMCwgNzAsIDE0MywgODIsIDI4LCA1MiwgNzAsIDE0MywgODIsIAorICAgIDIwNCwgNzIsIDI0NCwgMTQ0LCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAKKyAgICAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIAorICAgIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAyMDUsIDE4NiwgMjExLCAyNDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCA4MCwgCisgICAgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMjYsIDI1MSwgMjM3LCAxMzcsIDQzLCAyMTgsIDI5LCA4MiwgMTM5LCAyMDksIAorICAgIDE2NCwgMjI3LCAxMTUsIDI0MCwgNTIsIDIxMywgMTMxLCA5NywgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCAxNTIsIDIzNywgCisgICAgOTcsIDIyMSwgNDQsIDIwNywgMTUxLCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDUzLCA4MCwgMTM5LCAyMzAsIDE5OSwgODIsIAorICAgIDIyNSwgNzIsIDgyLCAyMTksIDcxLCAyNTAsIDI1MSwgODIsIDEzOSwgNTcsIDIzMSwgMzEsIDEzOSwgMTYyLCAyNDAsIDEwLCAKKyAgICAyMTEsIDIyOCwgMTcyLCAxLCA1LCA2MywgMTcyLCAxLCA2MywgMTcyLCAxLCA1LCA3NSwgMTcyLCAxLCA3NSwgMTcyLCAxLCAKKyAgICA1LCA2OCwgMTcyLCAxLCA2OCwgMTcyLCAxLCA1LCA3NCwgMTcyLCAxLCA3NCwgMTcyLCAxLCA1LCA3OCwgMTcyLCAxLCA3OCwgCisgICAgMTcyLCAxLCAxNzMsIDE3MiwgMSwgMjM5LCA4LCAxNzIsIDEsIDIyOSwgMTAwLCAxNzIsIDEsIDIzOCwgODEsIDE3MiwgMSwgCisgICAgMjI4LCAyMDksIDE3MiwgMSwgMjM3LCAyMzAsIDE3MiwgMSwgMjI5LCAyMDEsIDE3MiwgMSwgMjM4LCAxOTAsIDE3MiwgMSwgCisgICAgMjI5LCAyNiwgMTcyLCAxLCAyMzgsIDM5LCAxNzIsIDEsIDIxNSwgMzYsIDE3MiwgMSwgMjAyLCAxMTYsIDE3MiwgMSwgMjEyLCAKKyAgICAxNjIsIDE3MiwgMSwgMjAyLCAzOSwgMTcyLCAxLCAyMTEsIDEwLCAxNzIsIDEsIDIwMiwgNiwgMTcyLCAxLCAyMTQsIDE3NywgCisgICAgMTcyLCAxLCAyMDIsIDkyLCAxNzIsIDEsIDIxMiwgMTMsIDE3MiwgMSwgMjAyLCAxNywgMTcyLCAxLCAyMTAsIDIyLCAxNzIsIAorICAgIDEsIDI0NCwgMjEyLCAxNzIsIDEsIDIwOSwgMiwgMTcyLCAxLCAyNDMsIDIzMywgMTcyLCAxLCA1LCAyMDcsIDIwMywgMTcyLCAKKyAgICAxLCAyMDcsIDIwMywgMTcyLCAxLCAyNDIsIDQyLCAxNzIsIDEsIDIwOSwgMTg3LCAxNzIsIDEsIDI0NCwgNzUsIDE3MiwgMSwgCisgICAgMTM1LCAxNzIsIDEsIDI0MywgMTEzLCAxNzIsIDEsIDIwMSwgMjAxLCAxNzIsIDEsIDIyMiwgMTAwLCAxNzIsIDEsIDIyMSwgCisgICAgODQsIDE3MiwgMSwgMjIyLCAyNDAsIDE3MiwgMSwgMjIxLCAxOTEsIDE3MiwgMSwgMTUyLCAxNzIsIDEsIDI0OSwgMzIsIAorICAgIDE3MiwgMSwgMTg1LCAxNzIsIDEsIDIzNywgMywgMTcyLCAxLCAyNDgsIDg2LCAxNzIsIDEsIDIxOCwgMTY3LCAxNzIsIDEsIAorICAgIDIzNiwgMjYsIDE3MiwgMSwgMjQ3LCAxOTMsIDE3MiwgMSwgMjE3LCAxOTEsIDE3MiwgMSwgMjM3LCA2NywgMTcyLCAxLCAKKyAgICAyNDgsIDE2MiwgMTcyLCAxLCAyMTksIDM0LCAxNzIsIDEsIDIzNiwgMTM2LCAxNzIsIDEsIDI0OCwgMjMsIDE3MiwgMSwgCisgICAgMjE4LCA2OSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjI0LCAxNTUsIDE3MiwgMSwgMjIzLCAyNDYsIDE3MiwgMSwgMjI1LCAKKyAgICAyMCwgMTcyLCAxLCAyMjQsIDgyLCAxNzIsIDEsIDUsIDE5OCwgMTcyLCAxLCAxOTgsIDE3MiwgMSwgNSwgMjAyLCAyMTMsIAorICAgIDE3MiwgMSwgMjAyLCAyMTMsIDE3MiwgMSwgNSwgMjAyLCAyNDcsIDE3MiwgMSwgMjAyLCAyNDcsIDE3MiwgMSwgMjE2LCAKKyAgICAyMjAsIDE3MiwgMSwgMjE2LCA1NywgMTcyLCAxLCAyMTUsIDE0NSwgMTcyLCAxLCAyMTYsIDE1OCwgMTcyLCAxLCAyMTUsIAorICAgIDIyNywgMTcyLCAxLCA1LCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDMwLCAxNzIsIDEsIDIwNCwgCisgICAgNjIsIDE3MiwgMSwgMjA0LCAwLCAxNzIsIDEsIDIyMywgMTYzLCAxNzIsIDEsIDIwNCwgMTYzLCAxNzIsIDEsIDUsIDE3MywgCisgICAgMTcyLCAxLCA1LCAyMjksIDIwMSwgMzksIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAzOSwgMjI5LCAyMjUsIAorICAgIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjEzLCAKKyAgICAxNDgsIDIxMSwgMjQxLCA4MiwgMTcyLCAyMzAsIDE5OSwgODIsIDE3MiwgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgMTcyLCAKKyAgICAyNDMsIDE5MiwgMjAyLCAyMjgsIDIyOSwgMjI1LCA1MiwgMjM1LCAyMjAsIDY3LCAxLCA1LCA2MywgNjcsIDEsIDYzLCA2NywgCisgICAgMSwgNSwgNzUsIDY3LCAxLCA3NSwgNjcsIDEsIDUsIDY4LCA2NywgMSwgNjgsIDY3LCAxLCA1LCA3NCwgNjcsIDEsIDc0LCAKKyAgICA2NywgMSwgNSwgNzgsIDY3LCAxLCA3OCwgNjcsIDEsIDE3MywgNjcsIDEsIDIzOSwgOCwgNjcsIDEsIDIyOSwgMTAwLCA2NywgCisgICAgMSwgMjM4LCA4MSwgNjcsIDEsIDIyOCwgMjA5LCA2NywgMSwgMjM3LCAyMzAsIDY3LCAxLCAyMjksIDIwMSwgNjcsIDEsIAorICAgIDIzOCwgMTkwLCA2NywgMSwgMjI5LCAyNiwgNjcsIDEsIDIzOCwgMzksIDY3LCAxLCAyMTUsIDM2LCA2NywgMSwgMjAyLCAKKyAgICAxMTYsIDY3LCAxLCAyMTIsIDE2MiwgNjcsIDEsIDIwMiwgMzksIDY3LCAxLCAyMTEsIDEwLCA2NywgMSwgMjAyLCA2LCA2NywgCisgICAgMSwgMjE0LCAxNzcsIDY3LCAxLCAyMDIsIDkyLCA2NywgMSwgMjEyLCAxMywgNjcsIDEsIDIwMiwgMTcsIDY3LCAxLCAyMTAsIAorICAgIDIyLCA2NywgMSwgMjQ0LCAyMTIsIDY3LCAxLCAyMDksIDIsIDY3LCAxLCAyNDMsIDIzMywgNjcsIDEsIDUsIDIwNywgMjAzLCAKKyAgICA2NywgMSwgMjA3LCAyMDMsIDY3LCAxLCAyNDIsIDQyLCA2NywgMSwgMjA5LCAxODcsIDY3LCAxLCAyNDQsIDc1LCA2NywgMSwgCisgICAgMTM1LCA2NywgMSwgMjQzLCAxMTMsIDY3LCAxLCAyMDEsIDIwMSwgNjcsIDEsIDIyMiwgMTAwLCA2NywgMSwgMjIxLCA4NCwgCisgICAgNjcsIDEsIDIyMiwgMjQwLCA2NywgMSwgMjIxLCAxOTEsIDY3LCAxLCAxNTIsIDY3LCAxLCAyNDksIDMyLCA2NywgMSwgMTg1LCAKKyAgICA2NywgMSwgMjM3LCAzLCA2NywgMSwgMjQ4LCA4NiwgNjcsIDEsIDIxOCwgMTY3LCA2NywgMSwgMjM2LCAyNiwgNjcsIDEsIAorICAgIDI0NywgMTkzLCA2NywgMSwgMjE3LCAxOTEsIDY3LCAxLCAyMzcsIDY3LCA2NywgMSwgMjQ4LCAxNjIsIDY3LCAxLCAyMTksIAorICAgIDM0LCA2NywgMSwgMjM2LCAxMzYsIDY3LCAxLCAyNDgsIDIzLCA2NywgMSwgMjE4LCA2OSwgNjcsIDEsIDE5MiwgNjcsIDEsIAorICAgIDIyNCwgMTU1LCA2NywgMSwgMjIzLCAyNDYsIDY3LCAxLCAyMjUsIDIwLCA2NywgMSwgMjI0LCA4MiwgNjcsIDEsIDUsIDE5OCwgCisgICAgNjcsIDEsIDE5OCwgNjcsIDEsIDUsIDIwMiwgMjEzLCA2NywgMSwgMjAyLCAyMTMsIDY3LCAxLCA1LCAyMDIsIDI0NywgNjcsIAorICAgIDEsIDIwMiwgMjQ3LCA2NywgMSwgMjE2LCAyMjAsIDY3LCAxLCAyMTYsIDU3LCA2NywgMSwgMjE1LCAxNDUsIDY3LCAxLCAKKyAgICAyMTYsIDE1OCwgNjcsIDEsIDIxNSwgMjI3LCA2NywgMSwgNSwgMjA0LCAxMTEsIDY3LCAxLCAyMDQsIDExMSwgNjcsIDEsIAorICAgIDIwNCwgMzAsIDY3LCAxLCAyMDQsIDYyLCA2NywgMSwgMjA0LCAwLCA2NywgMSwgMjIzLCAxNjMsIDY3LCAxLCAyMDQsIDE2MywgCisgICAgNjcsIDEsIDUsIDE3MywgNjcsIDEsIDUsIDIyOSwgMjAxLCA2NywgMSwgMjA2LCA4NiwgNjcsIDEsIDIwNSwgMjMwLCA2NywgCisgICAgMSwgMjA2LCA1NSwgNjcsIDEsIDIwNSwgMTg5LCA2NywgMTAxLCAyNDMsIDg1LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgCisgICAgMjQxLCA4MiwgNjcsIDIzMCwgMTk5LCA4MiwgNjcsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDY3LCAyNDMsIDE5MiwgMjI4LCAKKyAgICAyNDksIDI0OCwgMSwgMSwgMjQ5LCAyNTUsIDI0OCwgMSwgMSwgMjE5LCAxODQsIDI0OCwgMSwgMSwgMjI2LCAxODUsIDI0OCwgCisgICAgMSwgMSwgMjQwLCAxNzQsIDI0OCwgMSwgMSwgMjQ1LCA1MSwgMjQ4LCAxLCAxLCAyMTAsIDY5LCAyNDgsIDEsIDEsIDIyMywgCisgICAgMTYzLCAyNDgsIDEsIDEsIDE1OSwgMjQ4LCAxLCAxLCAyMzksIDc1LCAyNDgsIDEsIDEsIDIzMCwgNTQsIDI0OCwgMSwgMSwgCisgICAgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjMwLCAxODQsIDI0OCwgMSwgMSwgMjE3LCAxMzQsIDI0OCwgMSwgMSwgMjAzLCAxOTYsIAorICAgIDI0OCwgMSwgMSwgMjAyLCA4MSwgMjQ4LCAxLCAxLCAyNDYsIDIwMCwgMjQ4LCAxLCAxLCAyMTMsIDkyLCAyNDgsIDEsIDEsIAorICAgIDE0NiwgMjQ4LCAxLCAxLCAyMDIsIDE1OSwgMjQ4LCAxLCAxLCAyNDcsIDEyNSwgMjQ4LCAxLCAxLCAxOTQsIDI0OCwgMSwgMSwgCisgICAgNjMsIDI0OCwgMSwgMSwgNzgsIDI0OCwgMSwgMSwgNzQsIDI0OCwgMSwgMSwgMjQxLCAxNDcsIDI0OCwgMSwgMSwgMjUxLCAKKyAgICA2NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NSwgMjQ4LCAxLCAxLCAyNTAsIDM0LCAyNDgsIDEsIDEsIDIxOSwgMjE2LCAyNDgsIDEsIAorICAgIDEsIDI1MCwgMjMxLCAyNDgsIDEsIDEsIDI0MSwgOTIsIDI0OCwgMSwgMSwgMjUwLCAyMjMsIDI0OCwgMSwgMSwgMjQxLCA3OCwgCisgICAgMjQ4LCAxLCAxLCAyNDEsIDI4LCAyNDgsIDEsIDEsIDc1LCAyNDgsIDEsIDEsIDY4LCAyNDgsIDEsIDEsIDIzMCwgMTk3LCAKKyAgICAyNDgsIDEsIDEsIDIwNiwgMTY0LCAyNDgsIDEsIDEsIDIyMiwgMjA1LCAyNDgsIDEsIDEsIDIzOCwgNDMsIDI0OCwgMSwgMSwgCisgICAgMjMxLCA4NCwgMjgsIDEsIDIyOSwgNTksIDI4LCAxLCAyMTEsIDE1NiwgMjgsIDEsIDIyOSwgNTIsIDI4LCAxLCAyMjIsIDkzLCAKKyAgICAyOCwgMSwgMjIyLCA5MSwgMjgsIDEsIDIyMiwgOTAsIDI4LCAxLCAyMDgsIDI0MCwgMjgsIDEsIDIxMSwgMTQ1LCAyOCwgMSwgCisgICAgMjE2LCA0NywgMjgsIDEsIDIxNiwgNDIsIDI4LCAxLCAyMTYsIDM5LCAyOCwgMSwgMjE2LCAzMiwgMjgsIDEsIDIxNiwgMjcsIAorICAgIDI4LCAxLCAyMTYsIDIyLCAyOCwgMSwgMjE2LCAzMywgMjgsIDEsIDIxNiwgNDUsIDI4LCAxLCAyMjQsIDE0MSwgMjgsIDEsIAorICAgIDIxOCwgMTUzLCAyOCwgMSwgMjExLCAxNTMsIDI4LCAxLCAyMTgsIDE0MiwgMjgsIDEsIDIxMiwgMTExLCAyOCwgMSwgMjExLCAKKyAgICAxNTAsIDI4LCAxLCAyMzEsIDEwNiwgMjgsIDEsIDI0NiwgNzQsIDI4LCAxLCAyMTEsIDE2MCwgMjgsIDEsIDI0NiwgMTM4LCAKKyAgICAyOCwgMSwgMjI5LCAxMjAsIDI4LCAxLCAyMDksIDY2LCAyOCwgMSwgMjE4LCAxOTAsIDI4LCAxLCAyMzYsIDI1MSwgMjgsIDEsIAorICAgIDYzLCAyOCwgMSwgMjUxLCAxMDksIDI4LCAxLCAxOTgsIDI4LCAxLCAyMDMsIDk5LCAyOCwgMSwgMjQxLCA1NSwgMjgsIDEsIAorICAgIDc0LCAyOCwgMSwgMjAzLCAzOSwgMjgsIDEsIDIwMywgNTIsIDI4LCAxLCA3OCwgMjgsIDEsIDIwNCwgMTExLCAyOCwgMSwgCisgICAgMjA0LCAxMDcsIDI4LCAxLCAyMjAsIDczLCAyOCwgMSwgMjAyLCAyNDcsIDI4LCAxLCA2OCwgMjgsIDEsIDIwNCwgNDgsIDI4LCAKKyAgICAxLCAyMDQsIDYyLCAyOCwgMSwgMjA0LCAzMCwgMjgsIDEsIDIwMiwgMjEzLCAyOCwgMSwgMjQwLCAyMzgsIDI4LCAxLCAyMDMsIAorICAgIDExLCAyOCwgMSwgNzUsIDI4LCAyNDAsIDcsIDI4LCAxLCAyMTEsIDE1NCwgMjgsIDEsIDIyMiwgODMsIDI4LCAxLCAyMjIsIAorICAgIDg1LCAyOCwgMSwgMjIyLCA4OCwgMjgsIDEsIDIxNiwgNDAsIDI4LCAxLCAyMTYsIDIxLCAyOCwgMSwgMjE2LCAyOSwgMjgsIAorICAgIDEsIDIxNiwgMzQsIDI4LCAxLCAyMTYsIDE5LCAyOCwgMSwgMjI0LCAxMzQsIDI4LCAxLCAyMjQsIDEzMSwgMjgsIDEsIDIyNCwgCisgICAgMTM1LCAyOCwgMSwgMjI5LCAyNDYsIDI4LCAxLCAyMTgsIDE0OCwgMjgsIDEsIDIxOCwgMTM0LCAyOCwgMSwgMjE4LCAxNDAsIAorICAgIDI4LCAxLCAyMTgsIDEzNywgMjgsIDEsIDIxOCwgMTUxLCAyOCwgMSwgMjE4LCAxMzUsIDI4LCAxLCAyMjksIDI0NCwgMjgsIAorICAgIDEsIDIyOSwgMjQyLCAyOCwgMSwgMjEyLCAxMDQsIDI4LCAxLCAyMTIsIDEwMiwgMjgsIDEsIDIxMiwgOTQsIDI4LCAxLCAKKyAgICAyMTIsIDk5LCAyOCwgMSwgMjEyLCAxMDksIDI4LCAxLCAyMTksIDEwNywgMjgsIDEsIDIxMSwgMTU3LCAyOCwgMSwgMjAzLCAKKyAgICAyOSwgMjgsIDEsIDIwMywgMjUsIDI4LCAxLCAyMDMsIDI2LCAyOCwgMSwgMjI5LCAyNDUsIDI4LCAxLCAyMTEsIDE1OCwgMjgsIAorICAgIDEsIDIwMywgMzUsIDI4LCAxLCAyMDIsIDI0MSwgMjgsIDEsIDIwMiwgMjQwLCAyOCwgMSwgMjAyLCAyNDMsIDI4LCAxLCAKKyAgICAyMDIsIDIwNCwgMjgsIDEsIDIwMiwgMjA1LCAyOCwgMSwgMjAyLCAyMDgsIDI4LCAxLCAyNTAsIDEzNywgMjgsIDEsIDI1MCwgCisgICAgMTMxLCAxMzksIDI1MCwgMjA1LCAyMjcsIDEwMywgODIsIDEzOSwgMjUwLCAyMDUsIDIxNiwgNzQsIDgyLCAxMzksIDI1MCwgCisgICAgMjA1LCAxMTgsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjAsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjYsIDgyLCAxMzksIDI1MCwgCisgICAgMjA1LCAyMzksIDE0NywgODIsIDEzOSwgMjUwLCAyMDUsIDIwOCwgMTQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTAxLCA4MiwgCisgICAgMTM5LCAyNTAsIDIwNSwgMjQ3LCAyNDgsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDI0NSwgODIsIDEzOSwgMjUwLCAyMDUsIAorICAgIDIxNCwgMTcxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA5LCA2MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMTQwLCA4MiwgCisgICAgMTM5LCAyNTAsIDIwNSwgMjM3LCA1MiwgODIsIDEzOSwgMjUwLCAyMDUsIDI0MSwgMTgwLCA4MiwgMTM5LCAyNTAsIDIwNSwgCisgICAgMjI1LCAxMjMsIDgyLCAyNDgsIDEsIDEsIDI0NywgMTkzLCAyNDgsIDEsIDEsIDIwMiwgMzksIDI0OCwgMSwgMSwgMjMwLCAKKyAgICAxNDEsIDI0OCwgMSwgMSwgMjM3LCAyMzAsIDI0OCwgMSwgMSwgMjQxLCAxNjEsIDI0OCwgMSwgMSwgMjQxLCA3NSwgMjQ4LCAKKyAgICAxLCAxLCAyMjAsIDE4LCAyNDgsIDEsIDEsIDIyMCwgMjIsIDI0OCwgMSwgMSwgMjMwLCAyMjQsIDI0OCwgMSwgMSwgMjUwLCAKKyAgICAyMDcsIDI0OCwgMSwgMSwgMjMxLCAxNiwgMjQ4LCAxLCAxLCAyMDYsIDIyOSwgMjQ4LCAxLCAxLCAyMzEsIDY2LCAyNDgsIDEsIAorICAgIDEsIDIyMiwgMTgzLCAyNDgsIDEsIDEsIDI1MSwgNTgsIDI0OCwgMSwgMSwgMjUwLCAyOSwgMjQ4LCAxLCAxLCAyNTAsIDI0NywgCisgICAgMjQ4LCAxLCAxLCAyMjAsIDM5LCAyNDgsIDEsIDEsIDIyMCwgMjQsIDI0OCwgMSwgMSwgMjMxLCAxMywgMjQ4LCAxLCA0NiwgCisgICAgMSwgMjE5LCAxODQsIDI0OCwgMSwgNDYsIDEsIDIxMCwgNjksIDI0OCwgMSwgNDYsIDEsIDIzMCwgNTQsIDI0OCwgMSwgNDYsIAorICAgIDEsIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzOCwgMTIwLCAyNDgsIDEsIDEsIDIyNywgMTYyLCAyNDgsIDEsIDEsIDIwMSwgCisgICAgMjQyLCAxMiwgMjExLCAzMiwgMjEwLCA2OSwgMTIsIDIxMSwgMzIsIDIwNCwgNDEsIDEyLCAyMTEsIDMyLCAyMDMsIDE3MSwgCisgICAgMTIsIDIxMSwgMzIsIDI0NywgMTM4LCAxMiwgMjExLCAzMiwgMjEwLCAxNzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMCwgMTIsIAorICAgIDIxMSwgMzIsIDIzNSwgMjE0LCAxMiwgMjExLCAzMiwgMjM2LCAzNSwgMTIsIDIxMSwgMzIsIDIzNSwgMjExLCAxMiwgMjExLCAKKyAgICAzMiwgMjEwLCA3MiwgMTIsIDIxMSwgMzIsIDIzNSwgMjEzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDksIDEyLCAyMTEsIDMyLCAKKyAgICAyMzYsIDMzLCAxMiwgMjExLCAzMiwgMjM1LCAyMTIsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOCwgMTIsIDIxMSwgMzIsIDIyMywgCisgICAgMTYzLCAxMiwgMjExLCAzMiwgMjM3LCAxNzEsIDEyLCAyMTEsIDMyLCAxOTQsIDEyLCAyMTEsIDMyLCAyMTksIDE4NCwgMTIsIAorICAgIDIxMSwgMzIsIDIxMSwgMjMxLCAxMiwgMjExLCAzMiwgMjQ1LCA1MSwgMTIsIDIxMSwgMzIsIDIzNSwgMjE1LCAxMiwgMjExLCAKKyAgICAzMiwgMjM3LCAxMywgMTIsIDIxMSwgMzIsIDIxMCwgODEsIDEyLCAyMTEsIDMyLCAyMTAsIDE1MiwgMTIsIDIxMSwgMzIsIAorICAgIDIxMSwgMTA4LCAxMiwgMjExLCAzMiwgMjEzLCA5OCwgMTIsIDIxMSwgMzIsIDIxOSwgMzgsIDEyLCAyMTEsIDMyLCAyMTcsIAorICAgIDEzNiwgMTIsIDIxMSwgMzIsIDIwOCwgMTc0LCAxMiwgMjExLCAzMiwgMjEwLCA3MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTYzLCAKKyAgICAxMiwgMjExLCAzMiwgMjM1LCAyMjMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwNywgMTIsIDIxMSwgMzIsIDIxOCwgMjEwLCAxMiwgCisgICAgMjExLCAzMiwgMjE3LCAxMzQsIDY3LCAxLCA1LCAyMjgsIDIwOSwgNjcsIDEsIDUsIDIxMiwgMTYyLCA2NywgMSwgNSwgMjExLCAKKyAgICAxMCwgNjcsIDEsIDUsIDEzNSwgNjcsIDEsIDUsIDIyMSwgODQsIDY3LCAxLCA1LCAxNTIsIDY3LCAxLCA1LCAyMzcsIDMsIAorICAgIDY3LCAxLCA1LCAyMzYsIDI2LCA2NywgMSwgNSwgMjM3LCA2NywgNjcsIDEsIDUsIDIzNiwgMTM2LCA2NywgMSwgNSwgMjIzLCAKKyAgICAyNDYsIDY3LCAxLCA1LCAyMTYsIDIyMCwgNjcsIDEsIDUsIDIxNiwgNTcsIDY3LCAxLCA1LCAyMTUsIDE0NSwgNjcsIDEsIDUsIAorICAgIDIxNiwgMTU4LCA2NywgMSwgNSwgMjE1LCAyMjcsIDEwMiwgMjgsIDIyOSwgNTksIDEwMiwgMjgsIDIyMiwgOTMsIDEwMiwgCisgICAgMjgsIDIwOCwgMjQwLCAxMDIsIDI4LCAyMTYsIDQ3LCAxMDIsIDI4LCAyMjQsIDE0MSwgMTAyLCAyOCwgMjE4LCAxNTMsIAorICAgIDEwMiwgMjgsIDIxMiwgMTExLCAxMDIsIDI4LCAyMzEsIDEwNiwgMTAyLCAyOCwgMjQ2LCA3NCwgMTAyLCAyOCwgMjQ2LCAKKyAgICAxMzgsIDEwMiwgMjgsIDIyOSwgMTIwLCAxMDIsIDI4LCAyMDksIDY2LCAxMDIsIDI4LCAyMTgsIDE5MCwgMTAyLCAyOCwgCisgICAgMjM2LCAyNTEsIDEwMiwgMjgsIDIyOSwgNjAsIDYzLCAxMDIsIDI4LCAyMjIsIDk0LCA2MywgMTAyLCAyOCwgMjA4LCAyNDEsIAorICAgIDYzLCAxMDIsIDI4LCAyMTYsIDQ4LCA2MywgMTAyLCAyOCwgMjI0LCAxNDIsIDYzLCAxMDIsIDI4LCAyMTgsIDE1NCwgNjMsIAorICAgIDEwMiwgMjgsIDIxMiwgMTEyLCA2MywgMTAyLCAyOCwgMjMxLCAxMDcsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2MywgMTAyLCAKKyAgICAyOCwgMjQ2LCAxMzksIDYzLCAxMDIsIDI4LCAyMjksIDEyMSwgNjMsIDEwMiwgMjgsIDIwOSwgNjcsIDYzLCAxMDIsIDI4LCAKKyAgICAyMTgsIDE5MSwgNjMsIDEwMiwgMjgsIDIzNiwgMjUyLCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjgsIDEwMiwgMjI4LCAyNTMsIAorICAgIDE2NywgMjIwLCA1NCwgMTAyLCAyMjgsIDI1MywgMTY3LCAxNTgsIDIzNiwgMjYsIDEwMiwgMTg5LCAxMDUsIDEwMiwgMTg5LCAKKyAgICAxMDgsIDEwMiwgMTg5LCAxNDcsIDEwMiwgMTg5LCAxNDksIDEwMiwgMTg5LCAxNzAsIDEwMiwgMTg5LCAxOTUsIDEwMiwgCisgICAgMTg5LCAyMTMsIDExMSwgMTAyLCAxODksIDE5OSwgMTAyLCAxODksIDIyMiwgNjMsIDEwMiwgMTg5LCAyMDksIDE1MiwgMTAyLCAKKyAgICAxODksIDIyNCwgMjksIDEwMiwgMTg5LCAyMzksIDI0OSwgMTAyLCAxODksIDIwNCwgODAsIDEwMiwgMTg5LCAyMDMsIDI0MywgCisgICAgMTAyLCAxODksIDIyNCwgMjIwLCAxMDIsIDE4OSwgMjQxLCAxNzksIDEwMiwgMTg5LCAyMTAsIDIxNCwgMTAyLCAxODksIAorICAgIDIxMSwgNjQsIDEwMiwgMTg5LCAyMzcsIDc0LCAxMDIsIDE4OSwgMjEyLCA5LCAxMDIsIDE4OSwgMjIzLCA4NCwgMTAyLCAKKyAgICAxODksIDIxMSwgMjEzLCAxMDIsIDE4OSwgMjQwLCA0LCAxMDIsIDE4OSwgMjQ1LCAyMTEsIDEwMiwgMTg5LCAyMjgsIDEwMiwgCisgICAgMTAyLCAxODksIDIxNiwgOTUsIDEwMiwgMTg5LCAyNDcsIDcxLCAxMDIsIDE4OSwgMjExLCAxNCwgMTAyLCAxODksIDIxMCwgCisgICAgMTk2LCAxMDIsIDE4OSwgMjQxLCA2NSwgMTAyLCAxODksIDIxNiwgODcsIDEwMiwgMTg5LCAyNTEsIDEwLCAxMDIsIDE4OSwgCisgICAgMjQwLCAzMywgMTAyLCAxODksIDIxNiwgODUsIDEwMiwgMTg5LCAyMTMsIDE0OSwgMTAyLCAxODksIDIxNiwgMTU3LCA0MywgCisgICAgMTg5LCAyMTcsIDQ2LCA0MywgMTg5LCAyMjksIDgzLCA0MywgMTg5LCAyMTQsIDE5NSwgNDMsIDE4OSwgMjI4LCAyNDksIDQzLCAKKyAgICA0MiwgMjA5LCAxNTMsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMDcsIDE1MiwgMjIwLCAzMiwgNjIsIDIxMSwgCisgICAgMTc3LCA0MywgNDIsIDIwOSwgNTQsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMzksIDE1NCwgMjIwLCAzMiwgCisgICAgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDI0MCwgMTksIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTIsIDc1LCAKKyAgICAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEzLCAxMDYsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAKKyAgICAyNDEsIDEzNSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCAyMTksIDY3LCA1NCwgNDMsIDQyLCAyMDcsIDE1MiwgMTA1LCA0MywgCisgICAgNDIsIDIwNywgMTUyLCAxMDgsIDQzLCA0MiwgMjA3LCAxNTIsIDE0NywgNDMsIDQyLCAyMDcsIDE1MiwgMTQ5LCA0MywgNDIsIAorICAgIDIwNywgMTUyLCAxNzAsIDQzLCA0MiwgMjA3LCAxNTIsIDE5NSwgNDMsIDQyLCAyMDcsIDE1MiwgMjEzLCAxMTEsIDQzLCA0MiwgCisgICAgMjA3LCAxNTIsIDE5OSwgNDMsIDQyLCAyMDcsIDE1MiwgMjIyLCA2MywgNDMsIDQyLCAyMDksIDUzLCA0MywgNDIsIDIwOSwgCisgICAgNTQsIDEwNSwgNDMsIDQyLCAyMDksIDU0LCAxMDgsIDQzLCA0MiwgMjA5LCA1NCwgMTQ3LCA0MywgNDIsIDIwOSwgNTQsIAorICAgIDE0OSwgNDMsIDQyLCAyMDksIDU0LCAxNzAsIDQzLCAyOCwgMjI5LCA1OSwgNDMsIDI4LCAyMjIsIDkzLCA0MywgMjgsIDIwOCwgCisgICAgMjQwLCA0MywgMjgsIDIxNiwgNDcsIDQzLCAyOCwgMjI0LCAxNDEsIDQzLCAyOCwgMjE4LCAxNTMsIDQzLCAyOCwgMjEyLCAKKyAgICAxMTEsIDQzLCAyOCwgMjMxLCAxMDYsIDQzLCAyOCwgMjQ2LCA3NCwgNDMsIDI4LCAyNDYsIDEzOCwgNDMsIDI4LCAyMjksIAorICAgIDEyMCwgNDMsIDI4LCAyMDksIDY2LCA0MywgMjgsIDIxOCwgMTkwLCA0MywgMjgsIDIzNiwgMjUxLCA0MywgMjgsIDIyOSwgCisgICAgNjAsIDYzLCA0MywgMjgsIDIyMiwgOTQsIDYzLCA0MywgMjgsIDIwOCwgMjQxLCA2MywgNDMsIDI4LCAyMTYsIDQ4LCA2MywgCisgICAgNDMsIDI4LCAyMjQsIDE0MiwgNjMsIDQzLCAyOCwgMjE4LCAxNTQsIDYzLCA0MywgMjgsIDIxMiwgMTEyLCA2MywgNDMsIDI4LCAKKyAgICAyMzEsIDEwNywgNjMsIDQzLCAyOCwgMjQ2LCA3NSwgNjMsIDQzLCAyOCwgMjQ2LCAxMzksIDYzLCA0MywgMjgsIDIyOSwgCisgICAgMTIxLCA2MywgNDMsIDI4LCAyMDksIDY3LCA2MywgNDMsIDI4LCAyMTgsIDE5MSwgNjMsIDQzLCAyOCwgMjM2LCAyNTIsIDYzLCAKKyAgICA0MywgMjI4LCAyNTMsIDE2NywgMjQ2LCAxODksIDQzLCAyMjgsIDI1MywgMTY3LCAyMzAsIDc4LCA0MywgMjgsIDIzMSwgCisgICAgMTA3LCA2OCwgMjI4LCAyNTMsIDIxMSwgOTcsIDk3LCA0MywgMTg5LCAxMDUsIDQzLCAxODksIDEwOCwgNDMsIDE4OSwgMTQ3LCAKKyAgICA0MywgMTg5LCAxNDksIDQzLCAxODksIDE3MCwgNDMsIDE4OSwgMTk1LCA0MywgMTg5LCAyMTMsIDExMSwgNDMsIDE4OSwgCisgICAgMTk5LCA0MywgMTg5LCAyMjIsIDYzLCA0MywgMTg5LCAyMDksIDE1MiwgNDMsIDE4OSwgMjI0LCAyOSwgNDMsIDE4OSwgMjM5LCAKKyAgICAyNDksIDQzLCAxODksIDIwNCwgODAsIDQzLCAxODksIDIwMywgMjQzLCA0MywgMTg5LCAyMjQsIDIyMCwgNDMsIDE4OSwgCisgICAgMjQxLCAxNzksIDQzLCAxODksIDIxMCwgMjE0LCA0MywgMTg5LCAyMTEsIDY0LCA0MywgMTg5LCAyMzcsIDc0LCA0MywgMTg5LCAKKyAgICAyMTIsIDksIDQzLCAxODksIDIyMywgODQsIDQzLCAxODksIDIxMSwgMjEzLCA0MywgMTg5LCAyNDAsIDQsIDQzLCAxODksIAorICAgIDI0NSwgMjExLCA0MywgMTg5LCAyMjgsIDEwMiwgNDMsIDE4OSwgMjE0LCAxNjksIDQzLCAxODksIDIyNSwgMTI2LCA0MywgCisgICAgMTg5LCAyNDAsIDQyLCA0MywgMTg5LCAyMTAsIDIyNiwgNDMsIDE4OSwgMjQwLCAyMTYsIDQzLCAxODksIDIxNywgMjMzLCAKKyAgICA0MywgMTg5LCAyNTAsIDM4LCA0MywgMTg5LCAyMzAsIDIwMCwgNDMsIDE4OSwgMjE2LCA4NSwgNDMsIDE4OSwgMjQ1LCAxNzAsIAorICAgIDQzLCAxODksIDI0NSwgMTYwLCA0MywgMTg5LCAyMzYsIDI0NCwgNDMsIDE4OSwgMjQ2LCAyMTcsIDQzLCAxODksIDIyNywgMCwgCisgICAgNDMsIDE4OSwgMjI3LCAyMjIsIDQzLCAxODksIDIxNiwgMTYsIDQzLCAxODksIDIyNSwgMTEsIDQzLCAxODksIDIxNiwgMTEyLCAKKyAgICA0MywgMTg5LCAyMTEsIDE0LCA0MywgMTg5LCAyMTAsIDE5NiwgNDMsIDE4OSwgMjQxLCA2NSwgNDMsIDE4OSwgMjE2LCA4NywgCisgICAgNDMsIDE4OSwgMjUxLCAxMCwgNDMsIDE4OSwgMjIyLCA3OSwgNDMsIDQyLCAyMDksIDU0LCAxOTUsIDQzLCA0MiwgMjA5LCAKKyAgICA1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjA5LCA1NCwgMTk5LCA0MywgNDIsIDIwOSwgNTQsIDIyMiwgNjMsIDQzLCA0MiwgCisgICAgMjM5LCAxNTMsIDQzLCA0MiwgMjM5LCAxNTQsIDEwNSwgNDMsIDQyLCAyMzksIDE1NCwgMTA4LCA0MywgNDIsIDIzOSwgMTU0LCAKKyAgICAxNDcsIDQzLCA0MiwgMjM5LCAxNTQsIDE0OSwgNDMsIDQyLCAyMzksIDE1NCwgMTcwLCA0MywgNDIsIDIzOSwgMTU0LCAxOTUsIAorICAgIDQzLCA0MiwgMjM5LCAxNTQsIDIxMywgMTExLCA0MywgNDIsIDIzOSwgMTU0LCAxOTksIDQzLCA0MiwgMjM5LCAxNTQsIDIyMiwgCisgICAgNjMsIDQzLCA0MiwgMjQwLCAxOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDE3MSwgMTM5LCAyMDksIDE2NCwgMTYsIAorICAgIDM1LCAyNDAsIDU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgOTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAKKyAgICAxNTAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc2LCAxMzksIAorICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAzMCwgMTM5LCAyMDksIDE2NCwgCisgICAgMTYsIDM1LCAyMTMsIDEyOSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjAsIDc5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIyMSwgMTUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgNzAsIDUxLCAyMzcsIDEzLCA1MSwgMjQxLCAyNCwgNTEsIAorICAgIDI0MCwgMjI2LCAyMjcsIDEyMCwgMjI3LCAxNDcsIDU0LCA0MywgNjcsIDYzLCA0MywgNjcsIDc1LCA0MywgNjcsIDY4LCA0MywgCisgICAgNjcsIDc0LCA0MywgNjcsIDc4LCA0MywgNjcsIDE3MywgNDMsIDY3LCAyMjksIDEwMCwgNDMsIDY3LCAyMjgsIDIwOSwgNDMsIAorICAgIDY3LCAyMjksIDIwMSwgNDMsIDY3LCAyMjksIDI2LCA0MywgNjcsIDIxNSwgMzYsIDQzLCA2NywgMjEyLCAxNjIsIDQzLCA2NywgCisgICAgMjExLCAxMCwgNDMsIDY3LCAyMTQsIDE3NywgNDMsIDY3LCAyMTIsIDEzLCA0MywgNjcsIDIxMCwgMjIsIDQzLCA2NywgMjA5LCAKKyAgICAyLCA0MywgNjcsIDIwNywgMjAzLCA0MywgNjcsIDIwOSwgMTg3LCA0MywgNjcsIDEzNSwgNDMsIDY3LCAyMDEsIDIwMSwgNDMsIAorICAgIDY3LCAyMjIsIDEwMCwgNDMsIDY3LCAyMjEsIDg0LCA0MywgNjcsIDIyMiwgMjQwLCA0MywgNjcsIDIyMSwgMTkxLCA0MywgCisgICAgNjcsIDE1MiwgNDMsIDY3LCAyMzcsIDMsIDQzLCA2NywgMjM2LCAyNiwgNDMsIDY3LCAyMzcsIDY3LCA0MywgNjcsIDIzNiwgCisgICAgMTM2LCA0MywgNjcsIDE5MiwgNDMsIDY3LCAyMjQsIDE1NSwgNDMsIDY3LCAyMjMsIDI0NiwgNDMsIDY3LCAyMjUsIDIwLCAKKyAgICA0MywgNjcsIDIyNCwgODIsIDQzLCA2NywgMTk4LCA0MywgNjcsIDIwMiwgMjEzLCA0MywgNjcsIDIwMiwgMjQ3LCA0MywgNjcsIAorICAgIDIxNiwgMjIwLCA0MywgNjcsIDIxNiwgNTcsIDQzLCA2NywgMjE1LCAxNDUsIDQzLCA2NywgMjE2LCAxNTgsIDQzLCA2NywgCisgICAgMjE1LCAyMjcsIDQzLCA2NywgMjA0LCAxMTEsIDQzLCA2NywgMjA0LCAzMCwgNDMsIDY3LCAyMDQsIDYyLCA0MywgNjcsIAorICAgIDIwNCwgMCwgNTEsIDI1MCwgMTc0LCA1MSwgMjUwLCA4MywgNTEsIDI1MCwgMjAxLCA1MSwgMjUxLCAyMzksIDUxLCAyMzEsIAorICAgIDE4LCA1MSwgMjMwLCAyNDIsIDUxLCAyMDYsIDIyNywgNTEsIDI0MCwgMjUzLCA1MSwgMjQxLCAxNTgsIDUxLCAyMjAsIDIxLCAKKyAgICA1MSwgMjIwLCAxNCwgNTEsIDIzMCwgMTYsIDUxLCAyMjksIDIzOCwgNTEsIDIyOSwgMjM1LCA1MSwgMjM4LCAyMjAsIDUxLCAKKyAgICAyMzgsIDIyOSwgNTEsIDIzOCwgNzAsIDUxLCAyMzgsIDY2LCA1MSwgMjI4LCAxMzIsIDUxLCAyMzgsIDU4LCA1MSwgMjI5LCAKKyAgICA3NSwgNTEsIDIyOSwgNzQsIDUxLCAyMjksIDczLCA1MSwgMjI5LCA3MiwgNTEsIDIzNywgMjAwLCA1MSwgMjM3LCAxOTksIAorICAgIDUxLCAyMjgsIDE4MCwgNTEsIDIyOCwgMTgyLCA1MSwgMjI5LCAxOTQsIDUxLCAyMjgsIDI1MSwgNTEsIDIyOSwgMywgNTEsIAorICAgIDIxNSwgMTcsIDUxLCAyMTQsIDIzNiwgNTEsIDIxMiwgOTIsIDUxLCAyMTMsIDEzNCwgNTEsIDIxMywgMTMzLCA1MSwgMjQ0LCAKKyAgICAyMDksIDUxLCAyNDQsIDE0LCA1MSwgMjQzLCA4NiwgNTEsIDIwOCwgMTYzLCA1MSwgMjIzLCA3OSwgNTEsIDIyMSwgMTU0LCAKKyAgICA1MSwgMjM3LCAxNDIsIDUxLCAyMTksIDE2MywgNTEsIDIxOSwgMTYyLCA1MSwgMjQ5LCAyOSwgNTEsIDIxOCwgMTY0LCA1MSwgCisgICAgMjE4LCAxMjcsIDUxLCAyMTgsIDEyOCwgNTEsIDI0OCwgNTcsIDUxLCAyMzYsIDI0LCA1MSwgMjM2LCAxOSwgNTEsIDI0NywgCisgICAgMTUxLCA1MSwgMjM2LCA0LCA1MSwgMjM3LCAzOSwgNTEsIDIxOCwgMjIwLCA1MSwgMjE5LCA0LCA1MSwgMjM3LCAyMiwgNTEsIAorICAgIDIxOSwgMCwgNTEsIDIxOSwgMTgsIDUxLCAyNDgsIDE0NSwgNTEsIDIxOCwgNTgsIDUxLCAyNDcsIDI1MywgNTEsIDIzNiwgCisgICAgMTIwLCA1MSwgMjE4LCA0NiwgNTEsIDIzNiwgMTExLCA1MSwgMjM2LCAxMTMsIDUxLCAyMjUsIDEzOCwgNTEsIDIyNSwgMTM0LCAKKyAgICA1MSwgMjI1LCAxNDMsIDUxLCAyMjUsIDgzLCA1MSwgMjI1LCAxMTAsIDUxLCAyMjQsIDEyMSwgNTEsIDIyNCwgOTcsIDUxLCAKKyAgICAyMjQsIDk2LCA1MSwgMjI1LCAwLCA1MSwgMjI0LCAyNTMsIDUxLCAyMjUsIDEsIDUxLCAyMDMsIDEwOSwgNTEsIDIwMywgCisgICAgMTA3LCA1MSwgMjAyLCAyMDIsIDUxLCAyMTUsIDI0MywgNTEsIDIxNSwgMjQ3LCA1MSwgMjE1LCAxMTksIDUxLCAyMTUsIAorICAgIDExMywgNTEsIDIxNiwgMTA5LCA1MSwgMjE2LCAxMDYsIDUxLCAyMDQsIDc4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgCisgICAgNDMsIDIwMiwgODQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDIzNiwgNDMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCisgICAgMjM2LCA0MywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIAorICAgIDE2LCAzNSwgMjM2LCA0MywgMTk5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjMsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxMTIsIAorICAgIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgCisgICAgMjA5LCA1NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIAorICAgIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxNDAsIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIAorICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyMzYsIDQzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAorICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NywgNTEsIDIzNiwgMzQsIDUxLCAyNDQsIDIxMiwgNTEsIDI1MCwgMzQsIAorICAgIDUxLCAxNDIsIDUxLCAyMTksIDIwNiwgNTEsIDIxOSwgMzksIDUxLCAyNDMsIDExNSwgNTEsIDI0MywgMTE2LCAyMTEsIDE3NiwgCisgICAgNTEsIDI0MywgMTE2LCAyNDUsIDEwNSwgNTEsIDIzMCwgMTk3LCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjM3LCA0MCwgNTEsIAorICAgIDI0MSwgMjcsIDIyMywgODUsIDIxMCwgOTIsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMDksIDI0NSwgNTEsIDI0MSwgMjcsIAorICAgIDIyMywgODUsIDIyNCwgMjUyLCA1MSwgMjQ1LCAxNjIsIDUxLCAyMTksIDE2OSwgMjUwLCAyMzMsIDUxLCAyMDEsIDIwMSwgCisgICAgNTEsIDIyMywgMjQ3LCA2MywgNTEsIDE5MiwgNTEsIDE3MywgNTEsIDIyOSwgMjA0LCA1MSwgMjI1LCA1OSwgNTEsIDIzOCwgCisgICAgMjA4LCA1MSwgMjQ3LCA3NiwgNTEsIDIyOSwgMjAzLCA1MSwgMjE4LCAyMTEsIDUxLCAyMjIsIDIwNywgNTEsIDIyMywgMjQ3LCAKKyAgICAyNDAsIDE3NCwgNTEsIDIyMywgMjQ3LCAyMzksIDc1LCA1MSwgMjI0LCAxOTYsIDUxLCAyMjksIDE0NiwgNTEsIDIzNSwgCisgICAgMjE1LCA1MSwgMjI5LCAxMDIsIDUxLCAyMjQsIDE1NywgNTEsIDIzOCwgODMsIDUxLCAyMDksIDQsIDUxLCAyMjMsIDI0NywgCisgICAgMTU5LCA1MSwgMjI0LCA5MCwgNTEsIDI0MywgMTI1LCA1MSwgMjI5LCA0MSwgNTEsIDIzOSwgMTg4LCA1MSwgMjIxLCAyMjksIAorICAgIDUxLCAyMjMsIDI0NywgMjI2LCAxODUsIDUxLCAyMjQsIDg3LCA1MSwgMjQ1LCAyNTUsIDUxLCAyMjksIDM1LCA1MSwgMjI0LCAKKyAgICA4OCwgMjExLCAxNzYsIDUxLCAyNDYsIDAsIDIxMSwgMTc2LCA1MSwgMjI2LCAxODYsIDIxMSwgMTc2LCA1MSwgMjI5LCAzNiwgCisgICAgMjExLCAxNzYsIDUxLCAyMjQsIDg4LCAyNDUsIDEwNSwgNTEsIDI0NiwgMCwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMjQ1LCAKKyAgICAxMDUsIDUxLCAyMjksIDM2LCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAxMTUsIDE5NCwgNTEsIDIyNiwgMTg2LCAxMTUsIAorICAgIDIxNSwgOTQsIDIxMSwgMTc2LCA1MSwgMTg1LCA1MSwgMjI4LCAyNDQsIDUxLCAyMjMsIDI1MCwgNTEsIDIzOCwgMTUsIDUxLCAKKyAgICAyMTYsIDIwNywgNTEsIDIxNiwgMjA4LCAxMTUsIDE5NCwgNTEsIDIxNiwgMjA4LCAxMTUsIDIxNSwgOTQsIDIxMSwgMTc2LCAKKyAgICA1MSwgMjE3LCAyMDQsIDUxLCAyMjEsIDEyMiwgNTEsIDIyMywgMjQ3LCAxOTQsIDUxLCAyMjMsIDI0OCwgNTEsIDIxNywgCisgICAgMTU0LCA1MSwgMjIxLCAyMiwgNTEsIDIyMywgMjQ3LCAyMDYsIDE2NCwgNTEsIDIyMywgMTg3LCA1MSwgMjI4LCAxNzAsIDUxLCAKKyAgICAyMjMsIDE4OCwgMjI1LCAwLCA1MSwgMjE3LCAxNTMsIDUxLCAyMjEsIDIxLCA1MSwgMjIzLCAyNDcsIDIwNCwgMTQ0LCA1MSwgCisgICAgMjIzLCAxODEsIDUxLCAyMjgsIDE2OCwgNTEsIDIyMywgMTgyLCAyMjUsIDAsIDUxLCAyMzAsIDU1LCAyMjAsIDU4LCA1MSwgCisgICAgMjI2LCAxODYsIDIyMCwgNTgsIDUxLCAyNTAsIDI0NywgNTEsIDI0NywgMjI5LCA1MSwgMjQ3LCA2LCA1MSwgMjQ2LCAyMzksIAorICAgIDUxLCAyNDcsIDEyNiwgMTE1LCAyMjksIDE0NiwgNTEsIDI0NSwgMjU0LCA1MSwgMjQ0LCAxMjksIDUxLCAyMzcsIDE4NCwgCisgICAgNTEsIDE1MiwgNTEsIDIzNiwgMzUsIDUxLCAyMzEsIDQ5LCA1MSwgMjI5LCA0OCwgNTEsIDIyOSwgMzYsIDI0NywgNDcsIDUxLCAKKyAgICAyMjgsIDIxMSwgNTEsIDIyNywgNTIsIDUxLCAyMjcsIDUxLCA1MSwgMjI3LCAzOCwgNTEsIDIyNiwgMjAwLCA1MSwgMjI1LCAKKyAgICA2MCwgMjEyLCAzNiwgNTEsIDIyNCwgMTIwLCA1MSwgMjI0LCA1NiwgNTEsIDIxOCwgMjA5LCA1MSwgMjE4LCA3MiwgNTEsIAorICAgIDIxOCwgMTEsIDUxLCAyMTgsIDksIDUxLCAyMTEsIDE2OCwgNTEsIDIxMCwgMTc3LCA1MSwgMjA0LCA2NCwgNTEsIDIwNiwgCisgICAgMTY1LCAxMTUsIDIyNiwgMTg1LCA1MSwgMzQsIDExNSwgMjI2LCAxODUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAKKyAgICAxMzMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIAorICAgIDM1LCAyNDQsIDEzMywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIAorICAgIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTksIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAorICAgIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDExMiwgMTM5LCAyMDksIDE2NCwgMTYsIAorICAgIDM1LCAyNDQsIDEzMywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTUsIDEzOSwgCisgICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKKyAgICAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxNDAsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCisgICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKKyAgICAyNDQsIDEzMywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQyLCAxMzksIDIwOSwgCisgICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKKyAgICAxNDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAorICAgIDI0NCwgMTMzLCAyMDcsIDE0NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNTAsIDEzOSwgMjA5LCAKKyAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ2LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIAorICAgIDUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDUyLCA1MSwgMjM4LCAyNDYsIDIzNywgMTYsIDM1LCAKKyAgICAyMDksIDkzLCAyNDUsIDE0MiwgMjM3LCA1MSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIxNiwgMTUxLCAyNDEsIDE3OSwgCisgICAgMjM3LCAxNiwgMzUsIDI0MywgMjAzLCAyNTAsIDUwLCAyMDksIDkzLCAyNDgsIDE0MCwgMjM3LCAxNiwgMzUsIDIwMiwgMjI2LCAKKyAgICAyMzksIDE4MCwgMjM3LCAxNiwgMzUsIDIwNCwgMTAzLCAyMzcsIDE2LCAzNSwgMjQ1LCAyMTQsIDIzNywgMTYsIDM1LCAyMDksIAorICAgIDkzLCAyNTAsIDEwNSwgMjM3LCAxNiwgMzUsIDIzNiwgMTI3LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIDUsIDIwOSwgMjMxLCAKKyAgICAyMzcsIDE2LCAzNSwgMjA4LCA5NywgMjM3LCAxNiwgMzUsIDIxOSwgMzIsIDIzNywgMTYsIDM1LCAyMTEsIDk2LCAyMzcsIAorICAgIDE2LCAzNSwgMjQwLCA0NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDMyLCAyMzcsIDE2LCAzNSwgMjI0LCA3NSwgCisgICAgMjM3LCAxNiwgMzUsIDI0MSwgNjQsIDIzNywgMTYsIDM1LCAyMzksIDE4MSwgMjM3LCAxNiwgMzUsIDIwMywgMjM2LCAyMjAsIAorICAgIDMyLCAyMDksIDkzLCAyNDQsIDcxLCAyMzcsIDE2LCAzNSwgMjUwLCAxNTQsIDIzNywgMTYsIDM1LCAyNDUsIDE5MywgMjM3LCAKKyAgICAxNiwgMzUsIDI0OCwgNDksIDIwOSwgMjQsIDIzNywgMTYsIDM1LCAyMzgsIDEzLCAyMzcsIDE2LCAzNSwgMjExLCAxOTIsIAorICAgIDI1MCwgMTczLCAyMzcsIDE2LCAzNSwgMjE2LCA3NywgMjM3LCAxNiwgMzUsIDIzMSwgMTIsIDIzNywgMTYsIDM1LCAyMzcsIAorICAgIDI0OSwgMjA5LCAyMzEsIDIzNywgMTYsIDM1LCAyMjQsIDgsIDI0NSwgMTY0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxNywgCisgICAgMjQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjUxLCAxNDMsIDIwNCwgODAsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDYsIAorICAgIDI0LCAyMzksIDI0OSwgMjM3LCAxNiwgMzUsIDIzMSwgMjYsIDIzNywgMTYsIDM1LCAyNDIsIDIwLCAyMzcsIDE2LCAzNSwgCisgICAgMjE2LCA4MCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDE2LCAyMzcsIDE2LCAzNSwgMjE3LCAyMjEsIDIzNywgMTYsIAorICAgIDM1LCAyNDQsIDE0OSwgNzYsIDIwOSwgOTMsIDIyNywgMTM0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQwLCA4MiwgMjM3LCAKKyAgICAxNiwgMzUsIDIxOSwgMjUwLCAyMzcsIDE2LCAzNSwgMjIwLCA4NSwgMjM3LCAxNiwgMzUsIDI0NCwgNDIsIDIzNywgMTYsIAorICAgIDM1LCAyNDQsIDYzLCAyMzcsIDE2LCAzNSwgMjMxLCA0MCwgMjM3LCAxNiwgMzUsIDI0NywgMjE3LCAyMzcsIDE2LCAzNSwgCisgICAgMjQ1LCAyMzUsIDIwOCwgMTczLCAyMjUsIDMsIDIzNywgMTYsIDM1LCAyMzgsIDIxNSwgMjA4LCAxNjksIDIzNywgMTYsIDM1LCAKKyAgICAyMTcsIDE2MywgMjA2LCAyMTMsIDIzNywgMTYsIDM1LCAyMTksIDI0OSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgNTAsIAorICAgIDIzNywgMTYsIDM1LCAyMTYsIDY4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ3LCAxMiwgMjM3LCAxNiwgMzUsIDIwOSwgCisgICAgOTMsIDI1MCwgMTAxLCAyMDksIDE4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI5LCAxOTUsIDIxMSwgNjgsIDIyNCwgMTIsIAorICAgIDIzNywgMTYsIDM1LCAyNDQsIDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjUsIDg1LCAyMjUsIDEzOSwgMjM3LCAxNiwgCisgICAgMzUsIDI1MSwgMTQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA5NiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzOCwgCisgICAgMTczLCAyMDQsIDE2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjMwLCA4NCwgMjI4LCAzMywgMjM3LCAxNiwgMzUsIDI0MywgCisgICAgMTUzLCAyMzcsIDE2LCAzNSwgMjI3LCAxMjEsIDIzNywgMTYsIDM1LCAyMzEsIDE1LCAyMDgsIDI0LCAyMzcsIDE2LCAzNSwgCisgICAgNSwgMjE3LCAyNDQsIDIzNywgMTYsIDM1LCAyNTEsIDgyLCAyNDUsIDIyNiwgMjM3LCAxNiwgMzUsIDI0OCwgMTQzLCAyNDUsIAorICAgIDIyNiwgMTEsIDQsIDIzMCwgMjAxLCAxMSwgNCwgMjMwLCAxOTMsIDExLCA0LCA3NSwgMTEsIDQsIDIzMCwgMjI3LCAxMSwgNCwgCisgICAgMjMxLCAxMDgsIDExLCA0LCAyMzEsIDkxLCAxMSwgNCwgMjMxLCAxMTAsIDExLCA0LCAyMzEsIDEwOSwgMTEsIDQsIDI1MCwgCisgICAgNDksIDExLCA0LCAyNTAsIDEwLCAxMSwgNCwgNjMsIDExLCA0LCAyNTAsIDE3NSwgMTEsIDQsIDIwNiwgMjI1LCAxMSwgNCwgCisgICAgMjA2LCAyMjgsIDExLCA0LCAyMDYsIDIyNiwgMTEsIDQsIDIxOSwgMjI0LCAxMSwgNCwgMjE5LCAxOTMsIDExLCA0LCA3OCwgCisgICAgMTEsIDQsIDIyMCwgOSwgMTEsIDQsIDI0MCwgMjE3LCAxMSwgNCwgNzQsIDExLCA0LCAyMDMsIDIxNywgMTEsIDQsIDI0OCwgCisgICAgNTEsIDExLCA0LCAyNDgsIDQ3LCAxMSwgNCwgMjQ4LCA4NiwgMTEsIDQsIDI0OCwgNjEsIDExLCA0LCAyNDgsIDc1LCAxMSwgCisgICAgNCwgMjQ4LCA3NCwgMTEsIDQsIDI0OCwgNzcsIDExLCA0LCAyNDgsIDc2LCAxMSwgNCwgMjQ4LCAyMDksIDExLCA0LCAyNDgsIAorICAgIDIwMSwgMTEsIDQsIDI0OSwgMzIsIDExLCA0LCAyNDgsIDIzMiwgMTEsIDQsIDI0NywgMTYzLCAxMSwgNCwgMjQ3LCAxNjcsIAorICAgIDExLCA0LCAyNDcsIDE2NCwgMTEsIDQsIDI0NywgMjUyLCAxMSwgNCwgMjQ3LCAyMzMsIDExLCA0LCAyNDgsIDIzLCAxMSwgNCwgCisgICAgMjQ4LCAyLCAxMSwgNCwgMjQ4LCAxMDEsIDExLCA0LCAyNDgsIDE2MiwgMTEsIDQsIDI0OCwgMTEzLCAxMSwgNCwgMjQ3LCAKKyAgICAxNDcsIDExLCA0LCAyNDcsIDE0MywgMTEsIDQsIDI0NywgMTkzLCAxMSwgNCwgMjQ3LCAxNjIsIDExLCA0LCAyNDcsIDE1NSwgCisgICAgMTEsIDQsIDI0NywgMTYwLCAxMSwgNCwgMjQ3LCAxMzEsIDExLCA0LCAyNDcsIDEyOSwgMTEsIDQsIDI0NywgMTM2LCAxMSwgCisgICAgNCwgMjQ3LCAxMzQsIDExLCA0LCAyNDcsIDEzMiwgMTEsIDQsIDI0NywgMTMzLCAxMSwgNCwgMjE4LCAxMDUsIDExLCA0LCAKKyAgICAyMTgsIDEwMSwgMTEsIDQsIDIxOCwgMTY3LCAxMSwgNCwgMjE4LCAxMTcsIDExLCA0LCAyMTgsIDEzMywgMTEsIDQsIDIxOCwgCisgICAgMTYwLCAxMSwgNCwgMjE4LCAxNTYsIDExLCA0LCAyMTksIDU1LCAxMSwgNCwgMjE5LCA0NCwgMTEsIDQsIDE4NSwgMTEsIDQsIAorICAgIDIxOSwgOTYsIDExLCA0LCAyMTcsIDE3MywgMTEsIDQsIDIxNywgMTc1LCAxMSwgNCwgMjE3LCAxNzQsIDExLCA0LCAyMTgsIAorICAgIDI1LCAxMSwgNCwgMjE4LCAxNCwgMTEsIDQsIDIxOCwgNjksIDExLCA0LCAyMTgsIDQxLCAxMSwgNCwgMjE3LCAxNTksIDExLCAKKyAgICA0LCAyMTcsIDE1NSwgMTEsIDQsIDIxNywgMTkxLCAxMSwgNCwgMjE3LCAxNzIsIDExLCA0LCAyMTcsIDE2NCwgMTEsIDQsIAorICAgIDIxNywgMTcwLCAxMSwgNCwgMjE3LCAxMzgsIDExLCA0LCAyMTcsIDEzNywgMTEsIDQsIDIxNywgMTQyLCAxMSwgNCwgMjE3LCAKKyAgICAxNDEsIDExLCA0LCAyMTcsIDEzOSwgMTEsIDQsIDIxNywgMTQwLCAxMSwgNCwgMjQ4LCAxODMsIDExLCA0LCAyNDgsIDE4MiwgCisgICAgMTEsIDQsIDI0OCwgMTg5LCAxMSwgNCwgMjQ4LCAxODQsIDExLCA0LCAyNDgsIDE4NiwgMTEsIDQsIDI0OCwgMTg1LCAxMSwgCisgICAgNCwgMjQ4LCAxODgsIDExLCA0LCAyNDgsIDE4NywgMTEsIDQsIDI0OCwgMTk1LCAxMSwgNCwgMjQ4LCAxOTQsIDExLCA0LCAKKyAgICAyNDgsIDE5OCwgMTEsIDQsIDI0OCwgMTk2LCAxMSwgNCwgMjQ4LCAxNzQsIDExLCA0LCAyNDgsIDE3NiwgMTEsIDQsIDI0OCwgCisgICAgMTc1LCAxMSwgNCwgMjQ4LCAxNzksIDExLCA0LCAyNDgsIDE3OCwgMTEsIDQsIDI0OCwgMTgxLCAxMSwgNCwgMjQ4LCAxODAsIAorICAgIDExLCA0LCAyNDgsIDE5MCwgMTEsIDQsIDI0OCwgMTkzLCAxMSwgNCwgMjQ4LCAxOTEsIDExLCA0LCAyNDgsIDE3MCwgMTEsIAorICAgIDQsIDI0OCwgMTY5LCAxMSwgNCwgMjQ4LCAxNzcsIDExLCA0LCAyNDgsIDE3MywgMTEsIDQsIDI0OCwgMTcxLCAxMSwgNCwgCisgICAgMjQ4LCAxNzIsIDExLCA0LCAyNDgsIDE2NiwgMTEsIDQsIDI0OCwgMTY1LCAxMSwgNCwgMjQ4LCAxNjgsIDExLCA0LCAyNDgsIAorICAgIDE2NywgMTEsIDQsIDIyMywgNDcsIDExLCA0LCAyMjMsIDQ2LCAxMSwgNCwgMjIzLCA1MiwgMTEsIDQsIDIyMywgNDgsIDExLCAKKyAgICA0LCAyMjMsIDQ5LCAxMSwgNCwgMjIzLCA1MSwgMTEsIDQsIDIyMywgNTAsIDExLCA0LCAyMjMsIDU1LCAxMSwgNCwgMjIzLCAKKyAgICA1NCwgMTEsIDQsIDIyMywgNTcsIDExLCA0LCAyMjMsIDU2LCAxMSwgNCwgMjIzLCA0MywgMTEsIDQsIDIyMywgNDIsIDExLCAKKyAgICA0LCAyMjMsIDQ1LCAxMSwgNCwgMjIzLCA0NCwgMTEsIDQsIDIyMywgMzYsIDExLCA0LCAyMjMsIDM1LCAxMSwgNCwgMjIzLCAKKyAgICA0MCwgMTEsIDQsIDIyMywgMzksIDExLCA0LCAyMjMsIDM3LCAxMSwgNCwgMjIzLCAzOCwgMTEsIDQsIDIyMywgMzAsIDExLCAKKyAgICA0LCAyMjMsIDI5LCAxMSwgNCwgMjIzLCAzNCwgMTEsIDQsIDIyMywgMzMsIDExLCA0LCAyMjMsIDMxLCAxMSwgNCwgMjIzLCAKKyAgICAzMiwgMTEsIDQsIDIzNiwgMTgwLCAxMSwgNCwgMjM2LCAxNzksIDExLCA0LCAyMzYsIDE4NSwgMTEsIDQsIDIzNiwgMTgxLCAKKyAgICAxMSwgNCwgMjM2LCAxODIsIDExLCA0LCAyMzYsIDE4NCwgMTEsIDQsIDIzNiwgMTgzLCAxMSwgNCwgMjM2LCAxODgsIDExLCAKKyAgICA0LCAyMzYsIDE4NywgMTEsIDQsIDIzNiwgMTkwLCAxMSwgNCwgMjM2LCAxODksIDExLCA0LCAyMzYsIDE3MSwgMTEsIDQsIAorICAgIDIzNiwgMTczLCAxMSwgNCwgMjM2LCAxNzIsIDExLCA0LCAyMzYsIDE3NiwgMTEsIDQsIDIzNiwgMTc1LCAxMSwgNCwgMjM2LCAKKyAgICAxNzgsIDExLCA0LCAyMzYsIDE3NywgMTEsIDQsIDIzNiwgMTY3LCAxMSwgNCwgMjM2LCAxNjYsIDExLCA0LCAyMzYsIDE3NCwgCisgICAgMTEsIDQsIDIzNiwgMTcwLCAxMSwgNCwgMjM2LCAxNjgsIDExLCA0LCAyMzYsIDE2OSwgMTEsIDQsIDIzNiwgMTYxLCAxMSwgCisgICAgNCwgMjM2LCAxNjUsIDExLCA0LCAyMzYsIDE2NCwgMTEsIDQsIDIzNiwgMTYyLCAxMSwgNCwgMjM2LCAxNjMsIDExLCA0LCAKKyAgICAyMjQsIDkzLCAxMSwgNCwgMjI0LCA5MiwgMTEsIDQsIDIyNCwgMTU1LCAxMSwgNCwgMjI0LCA5OSwgMTEsIDQsIDIyNCwgCisgICAgMTI3LCAxMSwgNCwgMjI0LCAxNDUsIDExLCA0LCAyMjQsIDE0MywgMTEsIDQsIDIyNSwgNzEsIDExLCA0LCAyMjUsIDY2LCAKKyAgICAxMSwgNCwgMTkyLCAxMSwgNCwgMjI1LCAxMDYsIDExLCA0LCAyMjMsIDIxMywgMTEsIDQsIDIyMywgMjEyLCAxMSwgNCwgCisgICAgMjIzLCAyMTYsIDExLCA0LCAyMjMsIDIxNCwgMTEsIDQsIDIyNCwgMjEsIDExLCA0LCAyMjMsIDI1MiwgMTEsIDQsIDIyNCwgCisgICAgODIsIDExLCA0LCAyMjQsIDI3LCAxMSwgNCwgMjI0LCAyMDcsIDExLCA0LCAyMjUsIDIwLCAxMSwgNCwgMjIzLCAxOTMsIDExLCAKKyAgICA0LCAyMjMsIDE4OSwgMTEsIDQsIDIyMywgMjQ2LCAxMSwgNCwgMjIzLCAyMDksIDExLCA0LCAyMjMsIDIwMiwgMTEsIDQsIAorICAgIDIyMywgMjA3LCAxMSwgNCwgMjIzLCAxNjYsIDExLCA0LCAyMjMsIDE2NSwgMTEsIDQsIDIyMywgMTcxLCAxMSwgNCwgMjIzLCAKKyAgICAxNjgsIDExLCA0LCAyMzksIDIzNiwgMTEsIDQsIDIzOSwgMjMwLCAxMSwgNCwgMjQwLCAyNiwgMTEsIDQsIDIzOSwgMjUxLCAKKyAgICAxMSwgNCwgMjQwLCA3MywgMTEsIDQsIDI0MCwgNjQsIDExLCA0LCAyNDAsIDEwOCwgMTEsIDQsIDI0MCwgNzgsIDExLCA0LCAKKyAgICAyMzksIDEzOSwgMTEsIDQsIDIzOSwgMTg2LCAxMSwgNCwgMjM5LCAxNjcsIDExLCA0LCAyMzksIDkxLCAxMSwgNCwgMjM5LCAKKyAgICA5MCwgMTEsIDQsIDIzOSwgMTA4LCAxMSwgNCwgMjM5LCA5NiwgMTEsIDQsIDIzOSwgOTQsIDExLCA0LCAyMzksIDk1LCAxMSwgCisgICAgNCwgMjM5LCA3OCwgMTEsIDQsIDIzOSwgNzcsIDExLCA0LCAyMzksIDgxLCAxMSwgNCwgMjM5LCA3OSwgMTEsIDQsIDIwNSwgCisgICAgMTk2LCAxMSwgNCwgMjA1LCAxOTEsIDExLCA0LCAyMDUsIDIzMCwgMTEsIDQsIDIwNSwgMjA1LCAxMSwgNCwgMjA1LCAyMTksIAorICAgIDExLCA0LCAyMDUsIDIxNiwgMTEsIDQsIDIwNSwgMjIyLCAxMSwgNCwgMjA1LCAyMjEsIDExLCA0LCAyMDYsIDYzLCAxMSwgNCwgCisgICAgMjA2LCA1OCwgMTEsIDQsIDIwNiwgODYsIDExLCA0LCAyMDYsIDc1LCAxMSwgNCwgMjA1LCAxNzIsIDExLCA0LCAyMDUsIAorICAgIDE2OCwgMTEsIDQsIDIwNSwgMTg5LCAxMSwgNCwgMjA1LCAxNzQsIDExLCA0LCAyMDUsIDIzMywgMTEsIDQsIDIwNiwgNDQsIAorICAgIDExLCA0LCAyMDQsIDE1NywgMTEsIDQsIDIwNCwgMTU1LCAxMSwgNCwgMjA0LCAxNjMsIDExLCA0LCAyMDQsIDE2MCwgMTEsIAorICAgIDQsIDIwNCwgMTU4LCAxMSwgNCwgMjA0LCAxNTksIDExLCA0LCAyMDQsIDE0OCwgMTEsIDQsIDIwNCwgMTQ3LCAxMSwgNCwgCisgICAgMjA0LCAxNTIsIDExLCA0LCAyMDQsIDE1MSwgMTEsIDQsIDIwNCwgMTQ5LCAxMSwgNCwgMjA0LCAxNTAsIDExLCA0LCAyNDMsIAorICAgIDE0NywgMTEsIDQsIDI0MywgMTM0LCAxMSwgNCwgMjQzLCAyMzMsIDExLCA0LCAyNDMsIDE3MywgMTEsIDQsIDI0MywgMjA4LCAKKyAgICAxMSwgNCwgMjQzLCAyMTMsIDExLCA0LCAyNDMsIDIxMiwgMTEsIDQsIDI0NCwgMTQwLCAxMSwgNCwgMjQ0LCAxMzQsIDExLCAKKyAgICA0LCAyNDQsIDIxMiwgMTEsIDQsIDI0NCwgMTYwLCAxMSwgNCwgMjQyLCAyNSwgMTEsIDQsIDI0MiwgMjYsIDExLCA0LCAyNDMsIAorICAgIDg1LCAxMSwgNCwgMjQyLCA2NywgMTEsIDQsIDI0MywgMTEzLCAxMSwgNCwgMjQzLCA4NywgMTEsIDQsIDI0NCwgNywgMTEsIAorICAgIDQsIDI0NCwgNzUsIDExLCA0LCAyNDQsIDI4LCAxMSwgNCwgMjQyLCAxNiwgMTEsIDQsIDI0MiwgMTQsIDExLCA0LCAyNDIsIAorICAgIDQyLCAxMSwgNCwgMjQyLCAyNCwgMTEsIDQsIDI0MiwgMTksIDExLCA0LCAyNDIsIDIyLCAxMSwgNCwgMjA4LCAyMDAsIDExLCAKKyAgICA0LCAyMDgsIDE5MiwgMTEsIDQsIDIwOSwgMiwgMTEsIDQsIDIwOCwgMjEwLCAxMSwgNCwgMjA4LCAyNDgsIDExLCA0LCAyMDgsIAorICAgIDI1MCwgMTEsIDQsIDIwOCwgMjQ5LCAxMSwgNCwgMjA5LCAyMTIsIDExLCA0LCAyMDksIDE5OCwgMTEsIDQsIDIxMCwgMjIsIAorICAgIDExLCA0LCAyMDksIDIyMiwgMTEsIDQsIDIwNywgMTg1LCAxMSwgNCwgMjA3LCAxODQsIDExLCA0LCAyMDcsIDE4NywgMTEsIAorICAgIDQsIDIwNywgMTg2LCAxMSwgNCwgMjA4LCAxMzEsIDExLCA0LCAyMDgsIDEyMSwgMTEsIDQsIDEzNSwgMTEsIDQsIDIwOCwgCisgICAgMTQ0LCAxMSwgNCwgMjA5LCAxMTQsIDExLCA0LCAyMDksIDE4NywgMTEsIDQsIDIwOSwgMTM5LCAxMSwgNCwgMjA3LCAxNjgsIAorICAgIDExLCA0LCAyMDcsIDE2MywgMTEsIDQsIDIwNywgMjAzLCAxMSwgNCwgMjA3LCAxODMsIDExLCA0LCAyMDcsIDE2OSwgMTEsIAorICAgIDQsIDIwNywgMTgxLCAxMSwgNCwgMjQ0LCA5MiwgMTEsIDQsIDI0NCwgOTEsIDExLCA0LCAyNDQsIDk3LCAxMSwgNCwgMjQ0LCAKKyAgICA5MywgMTEsIDQsIDI0NCwgOTQsIDExLCA0LCAyNDQsIDk2LCAxMSwgNCwgMjQ0LCA5NSwgMTEsIDQsIDI0NCwgMTEzLCAxMSwgCisgICAgNCwgMjQ0LCAxMTIsIDExLCA0LCAyNDQsIDEyMCwgMTEsIDQsIDI0NCwgMTE0LCAxMSwgNCwgMjQ0LCA4MiwgMTEsIDQsIAorICAgIDI0NCwgODQsIDExLCA0LCAyNDQsIDgzLCAxMSwgNCwgMjQ0LCA4NywgMTEsIDQsIDI0NCwgODYsIDExLCA0LCAyNDQsIDkwLCAKKyAgICAxMSwgNCwgMjQ0LCA4OCwgMTEsIDQsIDI0NCwgMTA1LCAxMSwgNCwgMjQ0LCAxMDgsIDExLCA0LCAyNDQsIDEwNiwgMTEsIDQsIAorICAgIDI0NCwgNzgsIDExLCA0LCAyNDQsIDc3LCAxMSwgNCwgMjQ0LCA4NSwgMTEsIDQsIDI0NCwgODEsIDExLCA0LCAyNDQsIDc5LCAKKyAgICAxMSwgNCwgMjQ0LCA4MCwgMTEsIDQsIDIyMywgMywgMTEsIDQsIDIyMywgMiwgMTEsIDQsIDIyMywgMTAsIDExLCA0LCAyMjMsIAorICAgIDUsIDExLCA0LCAyMjMsIDYsIDExLCA0LCAyMjMsIDcsIDExLCA0LCAyMjMsIDE5LCAxMSwgNCwgMjIzLCAxOCwgMTEsIDQsIAorICAgIDIyMywgMjUsIDExLCA0LCAyMjMsIDIwLCAxMSwgNCwgMjIyLCAyNTEsIDExLCA0LCAyMjIsIDI1MCwgMTEsIDQsIDIyMywgMSwgCisgICAgMTEsIDQsIDIyMiwgMjUyLCAxMSwgNCwgMjIzLCAxMSwgMTEsIDQsIDIyMywgMTcsIDExLCA0LCAyMjMsIDE1LCAxMSwgNCwgCisgICAgMjIyLCAyNDMsIDExLCA0LCAyMjIsIDI0MiwgMTEsIDQsIDIyMiwgMjQ4LCAxMSwgNCwgMjIyLCAyNDYsIDExLCA0LCAyMjIsIAorICAgIDI0NCwgMTEsIDQsIDIyMiwgMjQ1LCAxMSwgNCwgMjM2LCAxNDYsIDExLCA0LCAyMzYsIDE0NSwgMTEsIDQsIDIzNiwgMTUyLCAKKyAgICAxMSwgNCwgMjM2LCAxNDcsIDExLCA0LCAyMzYsIDE0OSwgMTEsIDQsIDIzNiwgMTQ4LCAxMSwgNCwgMjM2LCAxNTEsIDExLCAKKyAgICA0LCAyMzYsIDE1MCwgMTEsIDQsIDIzNiwgMTU4LCAxMSwgNCwgMjM2LCAxNTYsIDExLCA0LCAyMzYsIDE2MCwgMTEsIDQsIAorICAgIDIzNiwgMTU5LCAxMSwgNCwgMjM2LCAxMzksIDExLCA0LCAyMzYsIDE0MCwgMTEsIDQsIDIzNiwgMTQzLCAxMSwgNCwgMjM2LCAKKyAgICAxNDIsIDExLCA0LCAyMzYsIDE0NCwgMTEsIDQsIDIzNiwgMTUzLCAxMSwgNCwgMjM2LCAxNTUsIDExLCA0LCAyMzYsIDE1NCwgCisgICAgMTEsIDQsIDIzNiwgMTM4LCAxMSwgNCwgMjIyLCA1MiwgMTEsIDQsIDIyMiwgNTAsIDExLCA0LCAyMjIsIDEwMCwgMTEsIDQsIAorICAgIDIyMiwgNTUsIDExLCA0LCAyMjIsIDgyLCAxMSwgNCwgMjIyLCA5NiwgMTEsIDQsIDIyMiwgOTUsIDExLCA0LCAyMjMsIDYxLCAKKyAgICAxMSwgNCwgMjAxLCAyMDEsIDExLCA0LCAyMjMsIDc2LCAxMSwgNCwgMjIxLCAzMiwgMTEsIDQsIDIyMSwgMzQsIDExLCA0LCAKKyAgICAyMjEsIDMzLCAxMSwgNCwgMjIxLCAxNjUsIDExLCA0LCAyMjEsIDE1MCwgMTEsIDQsIDIyMSwgMTkxLCAxMSwgNCwgMjIxLCAKKyAgICAxNzYsIDExLCA0LCAyMjIsIDIwOSwgMTEsIDQsIDIyMiwgMjQwLCAxMSwgNCwgMjIyLCAyMjUsIDExLCA0LCAyMjEsIDI3LCAKKyAgICAxMSwgNCwgMjIxLCAyMywgMTEsIDQsIDIyMSwgODQsIDExLCA0LCAyMjEsIDMxLCAxMSwgNCwgMjIxLCAyOSwgMTEsIDQsIAorICAgIDIyMSwgMzAsIDExLCA0LCAyMzYsIDIxMSwgMTEsIDQsIDIzNiwgMjEwLCAxMSwgNCwgMjM2LCAyMTYsIDExLCA0LCAyMzYsIAorICAgIDIxMiwgMTEsIDQsIDIzNiwgMjEzLCAxMSwgNCwgMjM2LCAyMTUsIDExLCA0LCAyMzYsIDIxNCwgMTEsIDQsIDIzNiwgMjIyLCAKKyAgICAxMSwgNCwgMjM2LCAyMjAsIDExLCA0LCAyMzYsIDIyNCwgMTEsIDQsIDIzNiwgMjIzLCAxMSwgNCwgMjM2LCAyMDMsIDExLCAKKyAgICA0LCAyMzYsIDIwNSwgMTEsIDQsIDIzNiwgMjA0LCAxMSwgNCwgMjM2LCAyMDcsIDExLCA0LCAyMzYsIDIwOSwgMTEsIDQsIAorICAgIDIzNiwgMjA4LCAxMSwgNCwgMjM2LCAyMTcsIDExLCA0LCAyMzYsIDIxOSwgMTEsIDQsIDIzNiwgMjE4LCAxMSwgNCwgMjM2LCAKKyAgICAxOTksIDExLCA0LCAyMzYsIDE5OCwgMTEsIDQsIDIzNiwgMjA2LCAxMSwgNCwgMjM2LCAyMDIsIDExLCA0LCAyMzYsIDIwMCwgCisgICAgMTEsIDQsIDIzNiwgMjAxLCAxMSwgNCwgMjM2LCAxOTMsIDExLCA0LCAyMzYsIDE5MiwgMTEsIDQsIDIzNiwgMTk3LCAxMSwgCisgICAgNCwgMjM2LCAxOTYsIDExLCA0LCAyMzYsIDE5NCwgMTEsIDQsIDIzNiwgMTk1LCAxMSwgNCwgMjI3LCA5MCwgMTEsIDQsIAorICAgIDIyNywgODIsIDExLCA0LCAyMjcsIDE0OCwgMTEsIDQsIDIyNywgMTAwLCAxMSwgNCwgMjI3LCAxMzksIDExLCA0LCAyMjcsIAorICAgIDEzOCwgMTEsIDQsIDIyNywgMTQyLCAxMSwgNCwgMjI3LCAxNDAsIDExLCA0LCAyMjgsIDAsIDExLCA0LCAyMjcsIDI0NSwgCisgICAgMTEsIDQsIDIyOCwgMTEzLCAxMSwgNCwgMjI4LCAxMSwgMTEsIDQsIDIyNiwgMjE3LCAxMSwgNCwgMjI2LCAyMTYsIDExLCA0LCAKKyAgICAyMjYsIDIxOSwgMTEsIDQsIDIyNiwgMjE4LCAxMSwgNCwgMjI3LCA2LCAxMSwgNCwgMjI2LCAyNDgsIDExLCA0LCAyMjcsIAorICAgIDQ5LCAxMSwgNCwgMjI3LCAxMSwgMTEsIDQsIDIyNywgMTY1LCAxMSwgNCwgMjI3LCAyMzQsIDExLCA0LCAyMjcsIDE4MiwgCisgICAgMTEsIDQsIDIyNiwgMjExLCAxMSwgNCwgMjI2LCAyMDksIDExLCA0LCAyMjYsIDIzOSwgMTEsIDQsIDIyNiwgMjE1LCAxMSwgCisgICAgNCwgMjI2LCAyMTMsIDExLCA0LCAyMjYsIDIxNCwgMTEsIDQsIDIyNiwgMTkwLCAxMSwgNCwgMjI2LCAxODksIDExLCA0LCAKKyAgICAyMjYsIDE5OSwgMTEsIDQsIDIyNiwgMTkzLCAxMSwgNCwgMjI2LCAxOTEsIDExLCA0LCAyMjYsIDE5MiwgMTEsIDQsIDIzOCwgCisgICAgNTQsIDExLCA0LCAyMzgsIDUzLCAxMSwgNCwgMjM4LCA4MSwgMTEsIDQsIDIzOCwgNjUsIDExLCA0LCAyMzgsIDczLCAxMSwgCisgICAgNCwgMjM4LCA3MiwgMTEsIDQsIDIzOCwgNzUsIDExLCA0LCAyMzgsIDc0LCAxMSwgNCwgMjM4LCAyMTcsIDExLCA0LCAyMzgsIAorICAgIDIxMiwgMTEsIDQsIDIzOSwgOCwgMTEsIDQsIDIzOCwgMjI3LCAxMSwgNCwgMjM3LCAyMDUsIDExLCA0LCAyMzcsIDIwNCwgCisgICAgMTEsIDQsIDIzNywgMjA3LCAxMSwgNCwgMjM3LCAyMDYsIDExLCA0LCAyMzgsIDE4LCAxMSwgNCwgMjM4LCAxNiwgMTEsIDQsIAorICAgIDIzOCwgMzksIDExLCA0LCAyMzgsIDI2LCAxMSwgNCwgMjM4LCAxNTksIDExLCA0LCAyMzgsIDE1NywgMTEsIDQsIDIzOCwgCisgICAgMTkwLCAxMSwgNCwgMjM4LCAxNzAsIDExLCA0LCAyMzcsIDE5NCwgMTEsIDQsIDIzNywgMTkzLCAxMSwgNCwgMjM3LCAyMzAsIAorICAgIDExLCA0LCAyMzcsIDIwMywgMTEsIDQsIDIzNywgMTk1LCAxMSwgNCwgMjM3LCAyMDIsIDExLCA0LCAyMjksIDY0LCAxMSwgNCwgCisgICAgMjI5LCA2MSwgMTEsIDQsIDIyOSwgMTAwLCAxMSwgNCwgMjI5LCA3OCwgMTEsIDQsIDIyOSwgODksIDExLCA0LCAyMjksIDkzLCAKKyAgICAxMSwgNCwgMjI5LCA5MSwgMTEsIDQsIDIyOSwgMjI2LCAxMSwgNCwgMjI5LCAyMDksIDExLCA0LCAxNzMsIDExLCA0LCAyMjksIAorICAgIDI1MywgMTEsIDQsIDIyOCwgMTg3LCAxMSwgNCwgMjI4LCAxOTIsIDExLCA0LCAyMjgsIDE4OSwgMTEsIDQsIDIyOCwgMjUwLCAKKyAgICAxMSwgNCwgMjI4LCAyNDUsIDExLCA0LCAyMjksIDI2LCAxMSwgNCwgMjI5LCAxLCAxMSwgNCwgMjI5LCAxNzAsIDExLCA0LCAKKyAgICAyMjksIDE1MywgMTEsIDQsIDIyOSwgMjAxLCAxMSwgNCwgMjI5LCAxNzQsIDExLCA0LCAyMjgsIDE3NSwgMTEsIDQsIDIyOCwgCisgICAgMTcxLCAxMSwgNCwgMjI4LCAyMDksIDExLCA0LCAyMjgsIDE4NiwgMTEsIDQsIDIyOCwgMTc5LCAxMSwgNCwgMjI4LCAxODMsIAorICAgIDExLCA0LCAyMzgsIDE0MSwgMTEsIDQsIDIzOCwgMTQwLCAxMSwgNCwgMjM4LCAxNDUsIDExLCA0LCAyMzgsIDE0MiwgMTEsIAorICAgIDQsIDIzOCwgMTQ0LCAxMSwgNCwgMjM4LCAxNDMsIDExLCA0LCAyMzgsIDE1MiwgMTEsIDQsIDIzOCwgMTUxLCAxMSwgNCwgCisgICAgMjM4LCAxNTUsIDExLCA0LCAyMzgsIDE1MywgMTEsIDQsIDIzOCwgMTMyLCAxMSwgNCwgMjM4LCAxMzEsIDExLCA0LCAyMzgsIAorICAgIDEzNCwgMTEsIDQsIDIzOCwgMTMzLCAxMSwgNCwgMjM4LCAxMzcsIDExLCA0LCAyMzgsIDEzNiwgMTEsIDQsIDIzOCwgMTM5LCAKKyAgICAxMSwgNCwgMjM4LCAxMzgsIDExLCA0LCAyMzgsIDE0NywgMTEsIDQsIDIzOCwgMTQ2LCAxMSwgNCwgMjM4LCAxNTAsIDExLCAKKyAgICA0LCAyMzgsIDE0OCwgMTEsIDQsIDIzOCwgMTI3LCAxMSwgNCwgMjM4LCAxMjYsIDExLCA0LCAyMzgsIDEzNSwgMTEsIDQsIAorICAgIDIzOCwgMTMwLCAxMSwgNCwgMjM4LCAxMjgsIDExLCA0LCAyMzgsIDEyOSwgMTEsIDQsIDIyNCwgMTc0LCAxMSwgNCwgMjI0LCAKKyAgICAxNzUsIDExLCA0LCAyMjQsIDE5MywgMTEsIDQsIDIyNCwgMTkyLCAxMSwgNCwgMjI0LCAxOTUsIDExLCA0LCAyMjQsIDE5NCwgCisgICAgMTEsIDQsIDIyNCwgMTY1LCAxMSwgNCwgMjI0LCAxNjcsIDExLCA0LCAyMjQsIDE2NiwgMTEsIDQsIDIyNCwgMTcwLCAxMSwgCisgICAgNCwgMjI0LCAxNjksIDExLCA0LCAyMjQsIDE3MiwgMTEsIDQsIDIyNCwgMTcxLCAxMSwgNCwgMjI0LCAxNzYsIDExLCA0LCAKKyAgICAyMjQsIDE3OCwgMTEsIDQsIDIyNCwgMTc3LCAxMSwgNCwgMjI0LCAxNjEsIDExLCA0LCAyMjQsIDE2MCwgMTEsIDQsIDIyNCwgCisgICAgMTY4LCAxMSwgNCwgMjI0LCAxNjQsIDExLCA0LCAyMjQsIDE2MiwgMTEsIDQsIDIyNCwgMTYzLCAxMSwgNCwgMjM1LCAyMzMsIAorICAgIDExLCA0LCAyMzUsIDIzMiwgMTEsIDQsIDIzNSwgMjM5LCAxMSwgNCwgMjM1LCAyMzQsIDExLCA0LCAyMzUsIDIzNiwgMTEsIAorICAgIDQsIDIzNSwgMjM1LCAxMSwgNCwgMjM1LCAyMzgsIDExLCA0LCAyMzUsIDIzNywgMTEsIDQsIDIzNSwgMjQ0LCAxMSwgNCwgCisgICAgMjM1LCAyNDMsIDExLCA0LCAyMzUsIDI0NiwgMTEsIDQsIDIzNSwgMjQ1LCAxMSwgNCwgMjM1LCAyMjUsIDExLCA0LCAyMzUsIAorICAgIDIyNCwgMTEsIDQsIDIzNSwgMjI3LCAxMSwgNCwgMjM1LCAyMjYsIDExLCA0LCAyMzUsIDIyOSwgMTEsIDQsIDIzNSwgMjI4LCAKKyAgICAxMSwgNCwgMjM1LCAyMzEsIDExLCA0LCAyMzUsIDIzMCwgMTEsIDQsIDIzNSwgMjQwLCAxMSwgNCwgMjM1LCAyNDIsIDExLCAKKyAgICA0LCAyMzUsIDI0MSwgMTEsIDQsIDIyMiwgMTQ4LCAxMSwgNCwgMjIyLCAxNTAsIDExLCA0LCAyMjIsIDE0OSwgMTEsIDQsIAorICAgIDIyMiwgMTkzLCAxMSwgNCwgMjIyLCAxOTEsIDExLCA0LCAyMjIsIDIwMywgMTEsIDQsIDIyMiwgMTk2LCAxMSwgNCwgMjIyLCAKKyAgICAxMTAsIDExLCA0LCAyMjIsIDEwOSwgMTEsIDQsIDIyMiwgMTExLCAxMSwgNCwgMjIyLCAxMjAsIDExLCA0LCAyMjIsIDExNywgCisgICAgMTEsIDQsIDIyMiwgMTI4LCAxMSwgNCwgMjIyLCAxMjIsIDExLCA0LCAyMjIsIDE4NCwgMTEsIDQsIDIyMiwgMTkwLCAxMSwgCisgICAgNCwgMjIyLCAxODYsIDExLCA0LCAyMzYsIDIzMCwgMTEsIDQsIDIzNiwgMjQ1LCAxMSwgNCwgMjM2LCAyNTQsIDExLCA0LCAKKyAgICAyMzcsIDgzLCAxMSwgNCwgMjM3LCA3MiwgMTEsIDQsIDE1MiwgMTEsIDQsIDIzNywgOTQsIDExLCA0LCAyMzYsIDYsIDExLCAKKyAgICA0LCAyMzYsIDUsIDExLCA0LCAyMzYsIDgsIDExLCA0LCAyMzYsIDcsIDExLCA0LCAyMzYsIDQ2LCAxMSwgNCwgMjM2LCAzNywgCisgICAgMTEsIDQsIDIzNiwgMTM2LCAxMSwgNCwgMjM2LCAxMDksIDExLCA0LCAyMzcsIDE4LCAxMSwgNCwgMjM3LCA2NywgMTEsIDQsIAorICAgIDIzNywgMzAsIDExLCA0LCAyMDQsIDgzLCAxMSwgNCwgMjA0LCA2OCwgMTEsIDQsIDIwNCwgMTExLCAxMSwgNCwgMjA0LCA5MywgCisgICAgMTEsIDQsIDIwMywgMjA2LCAxMSwgNCwgMjAzLCAyMDgsIDExLCA0LCAyMDMsIDIwNywgMTEsIDQsIDIwMywgMjI5LCAxMSwgCisgICAgNCwgMjA0LCAwLCAxMSwgNCwgMjAzLCAyMzksIDExLCA0LCAyMDQsIDQyLCAxMSwgNCwgMjA0LCA2MiwgMTEsIDQsIDIwNCwgCisgICAgNDcsIDExLCA0LCAyMDIsIDI0LCAxMSwgNCwgMjAyLCAyMywgMTEsIDQsIDIwMiwgMzksIDExLCA0LCAyMDIsIDI3LCAxMSwgCisgICAgNCwgMjAyLCAzMiwgMTEsIDQsIDIwMiwgMzQsIDExLCA0LCAyMDIsIDMzLCAxMSwgNCwgMjAyLCAxMDAsIDExLCA0LCAyMDIsIAorICAgIDk3LCAxMSwgNCwgMjAyLCAxMTYsIDExLCA0LCAyMDIsIDEwNCwgMTEsIDQsIDIwMSwgMjU1LCAxMSwgNCwgMjAyLCAxLCAxMSwgCisgICAgNCwgMjAyLCAwLCAxMSwgNCwgMjAyLCAxMywgMTEsIDQsIDIwMiwgMTIsIDExLCA0LCAyMDIsIDE3LCAxMSwgNCwgMjAyLCAKKyAgICAxNCwgMTEsIDQsIDIwMiwgODIsIDExLCA0LCAyMDIsIDkyLCAxMSwgNCwgMjAyLCA4NiwgMTEsIDQsIDIwMSwgMjUxLCAxMSwgCisgICAgNCwgMjAxLCAyNTAsIDExLCA0LCAyMDIsIDYsIDExLCA0LCAyMDEsIDI1NCwgMTEsIDQsIDIwMSwgMjUyLCAxMSwgNCwgMjAxLCAKKyAgICAyNTMsIDExLCA0LCAyMDEsIDIzNywgMTEsIDQsIDIwMSwgMjM2LCAxMSwgNCwgMjAxLCAyNDIsIDExLCA0LCAyMDEsIDI0MCwgCisgICAgMTEsIDQsIDIwMSwgMjM4LCAxMSwgNCwgMjAxLCAyMzksIDExLCA0LCAyNDYsIDUwLCAxMSwgNCwgMjQ2LCA0MywgMTEsIDQsIAorICAgIDI0NiwgNzksIDExLCA0LCAyNDYsIDYzLCAxMSwgNCwgMjQ2LCA3NiwgMTEsIDQsIDI0NiwgNzAsIDExLCA0LCAyNDYsIDc4LCAKKyAgICAxMSwgNCwgMjQ2LCA3NywgMTEsIDQsIDI0NywgMTcsIDExLCA0LCAyNDcsIDksIDExLCA0LCAyNDcsIDkyLCAxMSwgNCwgCisgICAgMjQ3LCA0OCwgMTEsIDQsIDI0NSwgMTAxLCAxMSwgNCwgMjQ1LCAxMDMsIDExLCA0LCAyNDUsIDEwMiwgMTEsIDQsIDI0NSwgCisgICAgMTU4LCAxMSwgNCwgMjQ1LCAxNDgsIDExLCA0LCAyNDUsIDI1NCwgMTEsIDQsIDI0NSwgMTc1LCAxMSwgNCwgMjQ2LCAyMDIsIAorICAgIDExLCA0LCAyNDYsIDIzOCwgMTEsIDQsIDI0NiwgMjA3LCAxMSwgNCwgMjQ1LCA3NywgMTEsIDQsIDI0NSwgNzUsIDExLCA0LCAKKyAgICAyNDUsIDExMCwgMTEsIDQsIDI0NSwgOTksIDExLCA0LCAyNDUsIDgzLCAxMSwgNCwgMjQ1LCA5NiwgMTEsIDQsIDI0NSwgNTQsIAorICAgIDExLCA0LCAyNDUsIDUzLCAxMSwgNCwgMjQ1LCA2NiwgMTEsIDQsIDI0NSwgNjAsIDExLCA0LCAyNDUsIDU1LCAxMSwgNCwgCisgICAgMjQ1LCA1NywgMTEsIDQsIDIwMSwgMjIwLCAxMSwgNCwgMjAxLCAyMTksIDExLCA0LCAyMDEsIDIyNiwgMTEsIDQsIDIwMSwgCisgICAgMjIxLCAxMSwgNCwgMjAxLCAyMjMsIDExLCA0LCAyMDEsIDIyMiwgMTEsIDQsIDIwMSwgMjI1LCAxMSwgNCwgMjAxLCAyMjQsIAorICAgIDExLCA0LCAyMDEsIDIzMiwgMTEsIDQsIDIwMSwgMjMxLCAxMSwgNCwgMjAxLCAyMzUsIDExLCA0LCAyMDEsIDIzMywgMTEsIAorICAgIDQsIDIwMSwgMjE2LCAxMSwgNCwgMjAxLCAyMTgsIDExLCA0LCAyMDEsIDIxNywgMTEsIDQsIDIwMSwgMjI3LCAxMSwgNCwgCisgICAgMjAxLCAyMzAsIDExLCA0LCAyMDEsIDIyOCwgMTEsIDQsIDIwMSwgMjA5LCAxMSwgNCwgMjAxLCAyMTMsIDExLCA0LCAyMDEsIAorICAgIDIxMiwgMTEsIDQsIDIwMSwgMjEwLCAxMSwgNCwgMjAxLCAyMTEsIDExLCA0LCAyMDEsIDIwMywgMTEsIDQsIDIwMSwgMjAyLCAKKyAgICAxMSwgNCwgMjAxLCAyMDgsIDExLCA0LCAyMDEsIDIwNiwgMTEsIDQsIDIwMSwgMjA0LCAxMSwgNCwgMjAxLCAyMDUsIDExLCAKKyAgICA0LCAyMjAsIDIwMSwgMTEsIDQsIDIyMCwgMjAwLCAxMSwgNCwgMjIwLCAyMDYsIDExLCA0LCAyMjAsIDIwMiwgMTEsIDQsIAorICAgIDIyMCwgMjAzLCAxMSwgNCwgMjIwLCAyMDUsIDExLCA0LCAyMjAsIDIwNCwgMTEsIDQsIDIyMCwgMjExLCAxMSwgNCwgMjIwLCAKKyAgICAyMTAsIDExLCA0LCAyMjAsIDIxNCwgMTEsIDQsIDIyMCwgMjEzLCAxMSwgNCwgMjIwLCAxOTQsIDExLCA0LCAyMjAsIDE5NSwgCisgICAgMTEsIDQsIDIyMCwgMTk4LCAxMSwgNCwgMjIwLCAxOTksIDExLCA0LCAyMjAsIDIwNywgMTEsIDQsIDIyMCwgMjA5LCAxMSwgCisgICAgNCwgMjIwLCAxODksIDExLCA0LCAyMjAsIDE5NywgMTEsIDQsIDIyMCwgMTkzLCAxMSwgNCwgMjIwLCAxOTAsIDExLCA0LCAKKyAgICAyMjAsIDE5MSwgMTEsIDQsIDIyMCwgMTg0LCAxMSwgNCwgMjIwLCAxODMsIDExLCA0LCAyMjAsIDE4OCwgMTEsIDQsIDIyMCwgCisgICAgMTg3LCAxMSwgNCwgMjIwLCAxODUsIDExLCA0LCAyMjAsIDE4NiwgMTEsIDQsIDIxMiwgOTAsIDExLCA0LCAxOTUsIDExLCA0LCAKKyAgICAyMTIsIDE2MiwgMTEsIDQsIDIxMiwgOTMsIDExLCA0LCAyMTIsIDE1MCwgMTEsIDQsIDIxMiwgMTUzLCAxMSwgNCwgMjEyLCAKKyAgICAxNTEsIDExLCA0LCAyMTQsIDIyNSwgMTEsIDQsIDIxNCwgMjExLCAxMSwgNCwgMjE1LCAzNiwgMTEsIDQsIDIxNCwgMjMzLCAKKyAgICAxMSwgNCwgMjEwLCAyMDQsIDExLCA0LCAyMTAsIDIwNiwgMTEsIDQsIDIxMCwgMjA1LCAxMSwgNCwgMjExLCAyNDQsIDExLCAKKyAgICA0LCAyMTEsIDIzMywgMTEsIDQsIDIxMiwgMTMsIDExLCA0LCAyMTEsIDI0OCwgMTEsIDQsIDIxMywgMTAzLCAxMSwgNCwgCisgICAgMjE0LCAxNzcsIDExLCA0LCAyMTMsIDEzMiwgMTEsIDQsIDIxMCwgMTgxLCAxMSwgNCwgMjEwLCAxNzgsIDExLCA0LCAyMTEsIAorICAgIDEwLCAxMSwgNCwgMjEwLCAyMDMsIDExLCA0LCAyMTAsIDE4NSwgMTEsIDQsIDIxMCwgMTkzLCAxMSwgNCwgMjEwLCA4MywgCisgICAgMTEsIDQsIDIxMCwgODIsIDExLCA0LCAyMTAsIDE1MSwgMTEsIDQsIDIxMCwgOTEsIDExLCA0LCAyMTAsIDg1LCAxMSwgNCwgCisgICAgMjEwLCA5MCwgMTEsIDQsIDIxMSwgMTI2LCAxMSwgNCwgMjExLCAxMjUsIDExLCA0LCAyMTEsIDEzMiwgMTEsIDQsIDIxMSwgCisgICAgMTI3LCAxMSwgNCwgMjExLCAxMjksIDExLCA0LCAyMTEsIDEzMSwgMTEsIDQsIDIxMSwgMTMwLCAxMSwgNCwgMjExLCAxNDEsIAorICAgIDExLCA0LCAyMTEsIDEzOSwgMTEsIDQsIDIxMSwgMTY0LCAxMSwgNCwgMjExLCAxNDIsIDExLCA0LCAyMTEsIDEyMSwgMTEsIAorICAgIDQsIDIxMSwgMTIwLCAxMSwgNCwgMjExLCAxMjQsIDExLCA0LCAyMTEsIDEyMiwgMTEsIDQsIDIxMSwgMTM1LCAxMSwgNCwgCisgICAgMjExLCAxMzgsIDExLCA0LCAyMTEsIDEzNiwgMTEsIDQsIDIxMSwgMTE3LCAxMSwgNCwgMjExLCAxMTUsIDExLCA0LCAyMTEsIAorICAgIDExOSwgMTEsIDQsIDIxMSwgMTE4LCAxMSwgNCwgMjExLCAxMTAsIDExLCA0LCAyMTEsIDEwOSwgMTEsIDQsIDIxMSwgMTE0LCAKKyAgICAxMSwgNCwgMjExLCAxMTMsIDExLCA0LCAyMTEsIDExMSwgMTEsIDQsIDIxMSwgMTEyLCAxMSwgNCwgMjAyLCA3NSwgMTEsIDQsIAorICAgIDIwMiwgNzQsIDExLCA0LCAyMDIsIDgwLCAxMSwgNCwgMjAyLCA3NywgMTEsIDQsIDIwMiwgNTQsIDExLCA0LCAyMDIsIDU2LCAKKyAgICAxMSwgNCwgMjAyLCA1NSwgMTEsIDQsIDIwMiwgNTksIDExLCA0LCAyMDIsIDU4LCAxMSwgNCwgMjAyLCA2MywgMTEsIDQsIAorICAgIDIwMiwgNjAsIDExLCA0LCAyMDIsIDY4LCAxMSwgNCwgMjAyLCA2NywgMTEsIDQsIDIwMiwgNzEsIDExLCA0LCAyMDIsIDY5LCAKKyAgICAxMSwgNCwgMjAyLCA1MCwgMTEsIDQsIDIwMiwgNDksIDExLCA0LCAyMDIsIDU3LCAxMSwgNCwgMjAyLCA1MywgMTEsIDQsIAorICAgIDIwMiwgNTEsIDExLCA0LCAyMDIsIDUyLCAxMSwgNCwgMjAyLCA0MiwgMTEsIDQsIDIwMiwgNDEsIDExLCA0LCAyMDIsIDQ2LCAKKyAgICAxMSwgNCwgMjAyLCA0NSwgMTEsIDQsIDIwMiwgNDMsIDExLCA0LCAyMDIsIDQ0LCAxMSwgNCwgMjQ2LCAxNzYsIDExLCA0LCAKKyAgICAyNDYsIDE3MiwgMTEsIDQsIDI0NiwgMTk5LCAxMSwgNCwgMjQ2LCAxODUsIDExLCA0LCAyNDYsIDk0LCAxMSwgNCwgMjQ2LCAKKyAgICA5MywgMTEsIDQsIDI0NiwgOTYsIDExLCA0LCAyNDYsIDk1LCAxMSwgNCwgMjQ2LCAxMDksIDExLCA0LCAyNDYsIDEwOCwgMTEsIAorICAgIDQsIDI0NiwgMTE2LCAxMSwgNCwgMjQ2LCAxMTEsIDExLCA0LCAyNDYsIDE0NywgMTEsIDQsIDI0NiwgMTQ1LCAxMSwgNCwgCisgICAgMjQ2LCAxNzAsIDExLCA0LCAyNDYsIDE1NSwgMTEsIDQsIDI0NiwgODgsIDExLCA0LCAyNDYsIDk4LCAxMSwgNCwgMjQ2LCAKKyAgICA5MiwgMTEsIDQsIDI0NiwgODksIDExLCA0LCAyNDYsIDkxLCAxMSwgNCwgMjQ2LCA4MSwgMTEsIDQsIDI0NiwgODAsIDExLCAKKyAgICA0LCAyNDYsIDg1LCAxMSwgNCwgMjQ2LCA4NCwgMTEsIDQsIDI0NiwgODIsIDExLCA0LCAyNDYsIDgzLCAxMSwgNCwgMjE1LCAKKyAgICAxODEsIDExLCA0LCAyMTUsIDE4NSwgMTEsIDQsIDIxNSwgMTYzLCAxMSwgNCwgMjE1LCAxNjQsIDExLCA0LCAyMTUsIDE2OCwgCisgICAgMTEsIDQsIDIxNSwgMTY3LCAxMSwgNCwgMjE1LCAxNzEsIDExLCA0LCAyMTUsIDE2OSwgMTEsIDQsIDIxNSwgMTc1LCAxMSwgCisgICAgNCwgMjE1LCAxNzQsIDExLCA0LCAyMTUsIDE4MCwgMTEsIDQsIDIxNSwgMTc2LCAxMSwgNCwgMjE1LCAxNTksIDExLCA0LCAKKyAgICAyMTUsIDE1NywgMTEsIDQsIDIxNSwgMTY1LCAxMSwgNCwgMjE1LCAxNjIsIDExLCA0LCAyMTUsIDE2MCwgMTEsIDQsIDIxNSwgCisgICAgMTYxLCAxMSwgNCwgMjE1LCAxNTIsIDExLCA0LCAyMTUsIDE1MSwgMTEsIDQsIDIxNSwgMTU2LCAxMSwgNCwgMjE1LCAxNTUsIAorICAgIDExLCA0LCAyMTUsIDE1MywgMTEsIDQsIDIxNSwgMTU0LCAxMSwgNCwgMjIxLCAxNDUsIDExLCA0LCAyMjEsIDE0NCwgMTEsIAorICAgIDQsIDIyMSwgMTQ3LCAxMSwgNCwgMjIxLCAxNDYsIDExLCA0LCAyMjEsIDEzNiwgMTEsIDQsIDIyMSwgMTM4LCAxMSwgNCwgCisgICAgMjIxLCAxMzcsIDExLCA0LCAyMjEsIDE0MCwgMTEsIDQsIDIyMSwgMTM5LCAxMSwgNCwgMjIxLCAxNDMsIDExLCA0LCAyMjEsIAorICAgIDE0MiwgMTEsIDQsIDIyMSwgMTMwLCAxMSwgNCwgMjIxLCAxMjksIDExLCA0LCAyMjEsIDEzNSwgMTEsIDQsIDIyMSwgMTMzLCAKKyAgICAxMSwgNCwgMjIxLCAxMzEsIDExLCA0LCAyMjEsIDEzMiwgMTEsIDQsIDIyMSwgMTI0LCAxMSwgNCwgMjIxLCAxMjMsIDExLCAKKyAgICA0LCAyMjEsIDEyOCwgMTEsIDQsIDIyMSwgMTI3LCAxMSwgNCwgMjIxLCAxMjUsIDExLCA0LCAyMjEsIDEyNiwgMTEsIDQsIAorICAgIDIxMywgNTMsIDExLCA0LCAyMTMsIDQ4LCAxMSwgNCwgMjEzLCA5MCwgMTEsIDQsIDIxMywgNjQsIDExLCA0LCAyMTIsIDE4OCwgCisgICAgMTEsIDQsIDIxMiwgMTkwLCAxMSwgNCwgMjEyLCAxODksIDExLCA0LCAyMTIsIDIxMiwgMTEsIDQsIDIxMiwgMjA4LCAxMSwgCisgICAgNCwgMjEyLCAyNDIsIDExLCA0LCAyMTIsIDIzMiwgMTEsIDQsIDIxMywgMjEsIDExLCA0LCAyMTMsIDE0LCAxMSwgNCwgMjEzLCAKKyAgICA0MywgMTEsIDQsIDIxMywgMzAsIDExLCA0LCAyMTIsIDE4NCwgMTEsIDQsIDIxMiwgMTgxLCAxMSwgNCwgMjEyLCAxOTksIAorICAgIDExLCA0LCAyMTIsIDE4NywgMTEsIDQsIDIxMiwgMTg1LCAxMSwgNCwgMjEyLCAxODYsIDExLCA0LCAyMTIsIDE2NSwgMTEsIAorICAgIDQsIDIxMiwgMTY0LCAxMSwgNCwgMjEyLCAxNzEsIDExLCA0LCAyMTIsIDE2OCwgMTEsIDQsIDIxMiwgMTY2LCAxMSwgNCwgCisgICAgMjEyLCAxNjcsIDExLCA0LCAyMTYsIDE3MiwgMTEsIDQsIDIxNiwgMTY2LCAxMSwgNCwgMjE2LCAyMjAsIDExLCA0LCAyMTYsIAorICAgIDE3OCwgMTEsIDQsIDIxNSwgMTIyLCAxMSwgNCwgMjE1LCAxMjQsIDExLCA0LCAyMTUsIDEyMywgMTEsIDQsIDIxNSwgMTk5LCAKKyAgICAxMSwgNCwgMjE1LCAxODcsIDExLCA0LCAyMTUsIDIyNywgMTEsIDQsIDIxNSwgMjAzLCAxMSwgNCwgMjE2LCA2NiwgMTEsIDQsIAorICAgIDIxNiwgMTU4LCAxMSwgNCwgMjE2LCAxMDUsIDExLCA0LCAyMTUsIDExNSwgMTEsIDQsIDIxNSwgMTEyLCAxMSwgNCwgMjE1LCAKKyAgICAxNDUsIDExLCA0LCAyMTUsIDEyMSwgMTEsIDQsIDIxNSwgMTE3LCAxMSwgNCwgMjE1LCAxMTgsIDExLCA0LCAyMTUsIDk3LCAKKyAgICAxMSwgNCwgMjE1LCA5NiwgMTEsIDQsIDIxNSwgMTAyLCAxMSwgNCwgMjE1LCAxMDAsIDExLCA0LCAyMTUsIDk4LCAxMSwgNCwgCisgICAgMjE1LCA5OSwgMTEsIDQsIDIzMCwgMTMxLCAxMSwgNCwgMjMwLCAxMzAsIDExLCA0LCAyMzAsIDE0MSwgMTEsIDQsIDIzMCwgCisgICAgMTMyLCAxMSwgNCwgMjMwLCAxMzcsIDExLCA0LCAyMzAsIDEzNiwgMTEsIDQsIDIzMCwgMTM5LCAxMSwgNCwgMjMwLCAxMzgsIAorICAgIDExLCA0LCAyMzAsIDcyLCAxMSwgNCwgMjMwLCA3MSwgMTEsIDQsIDIzMCwgNzQsIDExLCA0LCAyMzAsIDczLCAxMSwgNCwgCisgICAgMjMwLCA4OCwgMTEsIDQsIDIzMCwgODYsIDExLCA0LCAyMzAsIDEwMSwgMTEsIDQsIDIzMCwgOTAsIDExLCA0LCAyMzAsIDY1LCAKKyAgICAxMSwgNCwgMjMwLCA2MywgMTEsIDQsIDIzMCwgODIsIDExLCA0LCAyMzAsIDcwLCAxMSwgNCwgMjMwLCA2NywgMTEsIDQsIAorICAgIDIzMCwgNjgsIDExLCA0LCAyMzAsIDU3LCAxMSwgNCwgMjMwLCA1NiwgMTEsIDQsIDIzMCwgNjEsIDExLCA0LCAyMzAsIDYwLCAKKyAgICAxMSwgNCwgMjMwLCA1OCwgMTEsIDQsIDIzMCwgNTksIDExLCA0LCAyMTcsIDgxLCAxMSwgNCwgMjE3LCA3OSwgMTEsIDQsIAorICAgIDIxNywgODgsIDExLCA0LCAyMTcsIDgyLCAxMSwgNCwgMjE3LCA4NSwgMTEsIDQsIDIxNywgODQsIDExLCA0LCAyMTcsIDg3LCAKKyAgICAxMSwgNCwgMjE3LCA4NiwgMTEsIDQsIDIxNywgMzIsIDExLCA0LCAyMTcsIDI5LCAxMSwgNCwgMjE3LCAzNCwgMTEsIDQsIAorICAgIDIxNywgMzMsIDExLCA0LCAyMTcsIDY4LCAxMSwgNCwgMjE3LCA2NywgMTEsIDQsIDIxNywgNzcsIDExLCA0LCAyMTcsIDcxLCAKKyAgICAxMSwgNCwgMjE3LCAyNCwgMTEsIDQsIDIxNywgMjAsIDExLCA0LCAyMTcsIDY1LCAxMSwgNCwgMjE3LCAyOCwgMTEsIDQsIAorICAgIDIxNywgMjYsIDExLCA0LCAyMTcsIDI3LCAxMSwgNCwgMjE3LCA0LCAxMSwgNCwgMjE3LCAyLCAxMSwgNCwgMjE3LCAxNCwgCisgICAgMTEsIDQsIDIxNywgNywgMTEsIDQsIDIxNywgNSwgMTEsIDQsIDIxNywgNiwgMTEsIDQsIDIzMCwgMTIwLCAxMSwgNCwgMjMwLCAKKyAgICAxMTksIDExLCA0LCAyMzAsIDEyNiwgMTEsIDQsIDIzMCwgMTIxLCAxMSwgNCwgMjMwLCAxMjMsIDExLCA0LCAyMzAsIDEyMiwgCisgICAgMTEsIDQsIDIzMCwgMTI1LCAxMSwgNCwgMjMwLCAxMjQsIDExLCA0LCAyMzAsIDExMSwgMTEsIDQsIDIzMCwgMTEzLCAxMSwgCisgICAgNCwgMjMwLCAxMTIsIDExLCA0LCAyMzAsIDExNiwgMTEsIDQsIDIzMCwgMTE1LCAxMSwgNCwgMjMwLCAxMTgsIDExLCA0LCAKKyAgICAyMzAsIDExNywgMTEsIDQsIDIzMCwgMTA3LCAxMSwgNCwgMjMwLCAxMDYsIDExLCA0LCAyMzAsIDExNCwgMTEsIDQsIDIzMCwgCisgICAgMTEwLCAxMSwgNCwgMjMwLCAxMDgsIDExLCA0LCAyMzAsIDEwOSwgMTEsIDQsIDIzMCwgMTAzLCAxMSwgNCwgMjMwLCAxMDIsIAorICAgIDExLCA0LCAyMzAsIDEwNSwgMTEsIDQsIDIzMCwgMTA0LCAxMSwgNCwgMjIyLCAyNSwgMTEsIDQsIDIyMiwgMjQsIDExLCA0LCAKKyAgICAyMjIsIDMyLCAxMSwgNCwgMjIyLCAyNiwgMTEsIDQsIDIyMiwgMjgsIDExLCA0LCAyMjIsIDI3LCAxMSwgNCwgMjIyLCAzMSwgCisgICAgMTEsIDQsIDIyMiwgMjksIDExLCA0LCAyMjIsIDE0LCAxMSwgNCwgMjIyLCAxNSwgMTEsIDQsIDIyMiwgMjAsIDExLCA0LCAKKyAgICAyMjIsIDE5LCAxMSwgNCwgMjIyLCAyMywgMTEsIDQsIDIyMiwgMjEsIDExLCA0LCAyMjIsIDksIDExLCA0LCAyMjIsIDE4LCAKKyAgICAxMSwgNCwgMjIyLCAxMywgMTEsIDQsIDIyMiwgMTAsIDExLCA0LCAyMjIsIDExLCAxMSwgNCwgMjIyLCA0LCAxMSwgNCwgCisgICAgMjIyLCAzLCAxMSwgNCwgMjIyLCA4LCAxMSwgNCwgMjIyLCA3LCAxMSwgNCwgMjIyLCA1LCAxMSwgNCwgMjIyLCA2LCAxMSwgCisgICAgNCwgMjIwLCAyMzYsIDExLCA0LCAyMjAsIDIzNSwgMTEsIDQsIDIyMCwgMjQ4LCAxMSwgNCwgMjIwLCAyNDAsIDExLCA0LCAKKyAgICAyMjAsIDI0NSwgMTEsIDQsIDIyMCwgMjQ0LCAxMSwgNCwgMjIwLCAyNDcsIDExLCA0LCAyMjAsIDI0NiwgMTEsIDQsIDIyMCwgCisgICAgMjIxLCAxMSwgNCwgMjIwLCAyMjMsIDExLCA0LCAyMjAsIDIyMiwgMTEsIDQsIDIyMCwgMjI4LCAxMSwgNCwgMjIwLCAyMjcsIAorICAgIDExLCA0LCAyMjAsIDIzMywgMTEsIDQsIDIyMCwgMjI5LCAxMSwgNCwgMjIwLCAyMTksIDExLCA0LCAyMjAsIDIxNywgMTEsIAorICAgIDQsIDIyMCwgMjI2LCAxMSwgNCwgMjIwLCAyMjAsIDExLCA0LCAyMDMsIDE2MiwgMTEsIDQsIDIwMywgMTYxLCAxMSwgNCwgCisgICAgMjAzLCAxNzAsIDExLCA0LCAyMDMsIDE2NCwgMTEsIDQsIDIwMywgMTY2LCAxMSwgNCwgMjAzLCAxNjUsIDExLCA0LCAyMDMsIAorICAgIDE2OCwgMTEsIDQsIDIwMywgMTY3LCAxMSwgNCwgMjAzLCAxNTAsIDExLCA0LCAyMDMsIDE1MSwgMTEsIDQsIDIwMywgMTU1LCAKKyAgICAxMSwgNCwgMjAzLCAxNTQsIDExLCA0LCAyMDMsIDE2MCwgMTEsIDQsIDIwMywgMTU4LCAxMSwgNCwgMjAzLCAxMjgsIDExLCAKKyAgICA0LCAyMDMsIDEyNiwgMTEsIDQsIDIwMywgMTQxLCAxMSwgNCwgMjAzLCAxMzEsIDExLCA0LCAyMDMsIDEyOSwgMTEsIDQsIAorICAgIDIwMywgMTMwLCAxMSwgNCwgMjAyLCAyNTMsIDExLCA0LCAyMDIsIDI1MSwgMTEsIDQsIDIwMywgMTEsIDExLCA0LCAyMDIsIAorICAgIDI1NCwgMTEsIDQsIDIwMywgNSwgMTEsIDQsIDIwMywgNCwgMTEsIDQsIDIwMywgOCwgMTEsIDQsIDIwMywgNiwgMTEsIDQsIAorICAgIDIwMiwgMTkxLCAxMSwgNCwgMjAyLCAxOTAsIDExLCA0LCAyMDIsIDE5NCwgMTEsIDQsIDIwMiwgMTkyLCAxMSwgNCwgMjAyLCAKKyAgICAyMjcsIDExLCA0LCAyMDIsIDIyMywgMTEsIDQsIDIwMiwgMjQ3LCAxMSwgNCwgMjAyLCAyMzEsIDExLCA0LCAyMDIsIDE4MiwgCisgICAgMTEsIDQsIDIwMiwgMTc4LCAxMSwgNCwgMjAyLCAyMTMsIDExLCA0LCAyMDIsIDE4OSwgMTEsIDQsIDIwMiwgMTg1LCAxMSwgCisgICAgNCwgMjAyLCAxODYsIDExLCA0LCAyMDIsIDE2MiwgMTEsIDQsIDIwMiwgMTYxLCAxMSwgNCwgMjAyLCAxNjksIDExLCA0LCAKKyAgICAyMDIsIDE2NSwgMTEsIDQsIDIwMiwgMTYzLCAxMSwgNCwgMjAyLCAxNjQsIDExLCA0MCwgMjE3LCA2OCwgMTEsIDQwLCAyMjcsIAorICAgIDE0OCwgMTEsIDQwLCAyMjksIDY0LCAxMSwgNDAsIDIyMCwgMjQwLCAxMSwgNDAsIDI0NSwgNjAsIDExLCA0MCwgMjExLCAKKyAgICAxMzIsIDExLCA0MCwgMjM4LCAxMzgsIDExLCA0MCwgMjM4LCAxNzAsIDExLCA0MCwgMjI0LCAxNTUsIDExLCA0MCwgMjM1LCAKKyAgICAyMzMsIDExLCA0MCwgMjI2LCAxOTIsIDExLCA0MCwgMjQ4LCAxNzAsIDExLCA0MCwgMjI0LCAyNywgMTEsIDQwLCAyMDIsIAorICAgIDI0NywgMTEsIDQwLCAyMTcsIDE1OSwgMTEsIDQwLCAyMzUsIDIyNywgMTEsIDQwLCAyMDksIDIxMiwgMTEsIDQwLCAyMzksIAorICAgIDgsIDExLCA0MCwgMjAxLCAyNTQsIDExLCA0MCwgMjQ1LCA1NCwgMTEsIDQwLCAyNDQsIDgwLCAxMSwgNDAsIDI0NywgMTYwLCAKKyAgICAxMSwgNDAsIDIzOCwgMTM0LCAxMSwgNDAsIDIyMCwgMjI5LCAxMSwgNDAsIDIwNywgMjAzLCAxMSwgNDAsIDIyMCwgOSwgMTEsIAorICAgIDQwLCAyMzAsIDEwNywgMTEsIDQwLCAyMDIsIDEzLCAxMSwgNDAsIDIxNywgMTM4LCAxMSwgNDAsIDIzNiwgMTc4LCAxMSwgCisgICAgNDAsIDIwMiwgMjUzLCAxMSwgNDAsIDIwNCwgMTU5LCAxMSwgNDAsIDIxMiwgMTcxLCAxMSwgNDAsIDIwNiwgNDQsIDExLCAKKyAgICA0MCwgMjAyLCAxMTYsIDExLCA0MCwgMjMwLCAxMDEsIDExLCA0MCwgMjIwLCAxOTMsIDExLCA0MCwgMjMwLCAxMDUsIDExLCAKKyAgICA0MCwgMjM4LCAxOCwgMTEsIDQwLCAyMzAsIDEyNSwgMTEsIDQwLCAyMDQsIDAsIDExLCA0MCwgMjQyLCA0MiwgMTEsIDQwLCAKKyAgICAyMTIsIDE4NiwgMTEsIDQwLCAyMjcsIDE0MiwgMTEsIDQwLCAyNDUsIDY2LCAxMSwgNDAsIDI0NSwgMTAyLCAxMSwgNDAsIAorICAgIDI0NiwgNjMsIDExLCA0MCwgMjM1LCAyMzAsIDExLCA0MCwgMjEzLCA1MywgMTEsIDQwLCAyMDEsIDI1MywgMTEsIDQwLCAKKyAgICAyMTIsIDIzMiwgMTEsIDQwLCAyNDYsIDE3MCwgMTEsIDQwLCAyMDEsIDIyMywgMTEsIDQwLCAyMjMsIDUxLCAxMSwgNDAsIAorICAgIDIyOSwgMjAxLCAyMjcsIDkxLCAxLCAyNDksIDMyLCAyMjcsIDkxLCAxLCAxODUsIDIyNywgOTEsIDEsIDIxOCwgMjA4LCAKKyAgICAyMjcsIDkxLCAxLCAyNDQsIDIxMiwgMjI3LCA5MSwgMSwgMjEwLCAyMiwgMjI3LCA5MSwgMSwgMjA5LCAxMDgsIDIyNywgOTEsIAorICAgIDEsIDIzOSwgOCwgMjI3LCA5MSwgMSwgMTczLCAyMjcsIDkxLCAxLCAyMjksIDE0NCwgMjI3LCA5MSwgMSwgMjMwLCAxODEsIAorICAgIDIyNywgOTEsIDEsIDI0NywgOTIsIDIyNywgOTEsIDEsIDI0NiwgMTk5LCAyMjcsIDkxLCAxLCAyNDEsIDI1NSwgMjI3LCA5MSwgCisgICAgMSwgMjA4LCAyMCwgMjI3LCA5MSwgMSwgMjA4LCAxMCwgMjI3LCA5MSwgMSwgMTkyLCAyMjcsIDkxLCAxLCAyMDEsIDIwMSwgCisgICAgMjI3LCA5MSwgMSwgMjI4LCAxMTMsIDIyNywgOTEsIDEsIDIxNSwgMzYsIDIyNywgOTEsIDEsIDIwMiwgODAsIDIyNywgOTEsIAorICAgIDEsIDIwMiwgMTE2LCAyMjcsIDkxLCAxLCAyMjIsIDIwMywgMjI3LCA5MSwgMSwgMTUyLCAyMjcsIDkxLCAxLCAyMDMsIDE4MiwgCisgICAgMjI3LCA5MSwgMSwgMjM3LCAxMiwgMjI3LCA5MSwgMSwgMjQwLCAxMDgsIDIyNywgOTEsIDEsIDIwNCwgMTExLCAyMjcsIDkxLCAKKyAgICAxLCAyMTMsIDkwLCAyMjcsIDkxLCAxLCAxOTgsIDIyNywgOTEsIDEsIDIzOCwgMTE5LCAyMjcsIDkxLCAxLCA2MywgMjI3LCAKKyAgICA5MSwgMSwgMjUxLCAxMDksIDIyNywgOTEsIDEsIDc0LCAyMjcsIDkxLCAxLCAyNDAsIDIzOCwgMjI3LCA5MSwgMSwgNzUsIAorICAgIDIyNywgOTEsIDEsIDc4LCAyMjcsIDkxLCAxLCA2OCwgMjI3LCA5MSwgMSwgMjA3LCAyNCwgMjI3LCA5MSwgMSwgMjA3LCAxOCwgCisgICAgMjI3LCA5MSwgMSwgMjIwLCA3MywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjA5LCAyLCAyMjcsIDkxLCAxLCAxNDMsIAorICAgIDIyMywgMTExLCAyMTgsIDY5LCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyNDUsIDY1LCAyMjcsIDkxLCAxLCAxNDMsIAorICAgIDIyMywgMTcwLCAyNDgsIDIzLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDEsIDIwMSwgMjI3LCA5MSwgMSwgMTQzLCAKKyAgICAyMjMsIDE3MCwgMjMwLCAxNTAsIDIyNywgOTEsIDIxNywgMTc5LCAyNDUsIDIzMywgMjI3LCA5MSwgMjE3LCAxNzksIDIzOSwgCisgICAgMTAyLCAyMTEsIDYxLCA0OCwgNCwgMjQxLCAxNjEsIDQ4LCA0LCAyNDEsIDE1NywgNDgsIDQsIDIzNywgNDgsIDQ4LCA0LCAKKyAgICAyMDQsIDU1LCA0OCwgNCwgMjA0LCA1NCwgNDgsIDQsIDIxOSwgMjMsIDQ4LCA0LCAyNDgsIDkzLCA0OCwgNCwgMjQ4LCAxNTAsIAorICAgIDQ4LCA0LCAyMjUsIDQ2LCA0OCwgNCwgMjI4LCAyMzksIDQ4LCA0LCAyMjQsIDE4NywgNDgsIDQsIDIzOCwgMjAzLCA0OCwgNCwgCisgICAgMjQwLCA1MywgNDgsIDQsIDIwNiwgNTAsIDQ4LCA0LCAyMDksIDE3NiwgNDgsIDQsIDIwOSwgOTAsIDQ4LCA0LCAyNDMsIAorICAgIDI0NywgNDgsIDQsIDI0MywgMjQ0LCA0OCwgNCwgMjI3LCAyMjYsIDQ4LCA0LCAyMTYsIDEzNSwgNDgsIDQsIDI0NCwgNjEsIAorICAgIDQ4LCA0LCAyMjMsIDE2LCA0OCwgNCwgMjE0LCAxNjUsIDQ4LCA0LCAyMTMsIDQxLCA0OCwgNCwgMjAyLCA5MCwgNDgsIDQsIAorICAgIDIwMiwgNzAsIDQ4LCA0LCAyNDYsIDIzMCwgNDgsIDQsIDIzMCwgMTU5LCA0OCwgNCwgMjIyLCAzOSwgNDgsIDQsIDIwMywgCisgICAgNDksIDQ4LCA0LCAyMjksIDE5OCwgNDgsIDQsIDIyMiwgMTc2LCA0OCwgNCwgMjM4LCAxODIsIDQ4LCA0LCAyMjUsIDgsIDQ4LCAKKyAgICA0LCAyMjIsIDIzNSwgNDgsIDQsIDIyMSwgMCwgNDgsIDQsIDc1LCA0OCwgNCwgMjMxLCA0OSwgNDgsIDQsIDIzNywgMywgNDgsIAorICAgIDQsIDIzNiwgMjM4LCA0OCwgNCwgMjA0LCAzMCwgNDgsIDQsIDIwNCwgMTgsIDQ4LCA0LCAyMTgsIDE2NywgNDgsIDQsIDI0OCwgCisgICAgOTEsIDQ4LCA0LCAyNDgsIDg2LCA0OCwgNCwgMjI1LCAzOSwgNDgsIDQsIDIyOCwgMjM2LCA0OCwgNCwgMjI0LCAxODQsIDQ4LCAKKyAgICA0LCAyMzgsIDE5OSwgNDgsIDQsIDI0MCwgMjYsIDQ4LCA0LCAyMDUsIDIzMCwgNDgsIDQsIDIwOSwgMiwgNDgsIDQsIDIwOSwgCisgICAgNzAsIDQ4LCA0LCAyNDMsIDIzOSwgNDgsIDQsIDI0MywgMjQzLCA0OCwgNCwgMjI3LCAxNDgsIDQ4LCA0LCAyMTYsIDU3LCAKKyAgICA0OCwgNCwgMjQzLCAyMzMsIDQ4LCA0LCAyMjMsIDEwLCA0OCwgNCwgMjEyLCAxNjIsIDQ4LCA0LCAyMTMsIDExLCA0OCwgNCwgCisgICAgMjAyLCAzOSwgNDgsIDQsIDIwMiwgNjYsIDQ4LCA0LCAyNDYsIDc5LCA0OCwgNCwgMjMwLCAxNDEsIDQ4LCA0LCAyMjIsIDMyLCAKKyAgICA0OCwgNCwgMjAzLCAxMSwgNDgsIDQsIDIyOSwgMTAwLCA0OCwgNCwgMjIyLCAxNjgsIDQ4LCA0LCAyMzgsIDgxLCA0OCwgNCwgCisgICAgMjI0LCAxNTUsIDQ4LCA0LCAyMjIsIDEwMCwgNDgsIDQsIDIyMCwgMjQ4LCA0OCwgNCwgNjMsIDQ4LCA0LCAyNTAsIDIzMSwgCisgICAgNDgsIDQsIDIyMiwgMTk4LCA0OCwgNCwgMTUyLCA0OCwgNCwgMjM3LCAxMjYsIDQ4LCA0LCAyMDQsIDExMSwgNDgsIDQsIAorICAgIDIwNCwgOTcsIDQ4LCA0LCAxODUsIDQ4LCA0LCAyNDgsIDk4LCA0OCwgNCwgMjQ5LCAzMiwgNDgsIDQsIDIyNSwgNTQsIDQ4LCAKKyAgICA0LCAyMjgsIDI0NCwgNDgsIDQsIDIyOCwgMjQyLCA0OCwgNCwgMjI0LCAxOTEsIDQ4LCA0LCAyMzgsIDIwNywgNDgsIDQsIAorICAgIDI0MCwgMTA4LCA0OCwgNCwgMjA2LCA4NiwgNDgsIDQsIDIxMCwgMjIsIDQ4LCA0LCAyMDksIDEwOCwgNDgsIDQsIDI0NCwgMSwgCisgICAgNDgsIDQsIDI0MywgMjQ2LCA0OCwgNCwgMjI4LCAxMTMsIDQ4LCA0LCAyMTYsIDIyMCwgNDgsIDQsIDI0NCwgMjEyLCA0OCwgCisgICAgNCwgMjIzLCAyNSwgNDgsIDQsIDIxNSwgMzYsIDQ4LCA0LCAyMTMsIDkwLCA0OCwgNCwgMjAyLCAxMTYsIDQ4LCA0LCAyMDIsIAorICAgIDgwLCA0OCwgNCwgMjQ3LCA5MiwgNDgsIDQsIDIzMCwgMTgxLCA0OCwgNCwgMjIyLCA0OCwgNDgsIDQsIDE5OCwgNDgsIDQsIAorICAgIDE3MywgNDgsIDQsIDIzMCwgNCwgNDgsIDQsIDIyMiwgMTgyLCA0OCwgNCwgMjM5LCA4LCA0OCwgNCwgMTkyLCA0OCwgNCwgCisgICAgMjAxLCAyMDEsIDQ4LCA0LCAyMjEsIDExLCA0OCwgNCwgMjIwLCAxOCwgNDgsIDQsIDIyMCwgMTMsIDQ4LCA0LCAyMzYsIAorICAgIDExNywgNDgsIDQsIDIwMywgMjQ0LCA0OCwgNCwgMjAzLCAyNDAsIDQ4LCA0LCAyMTgsIDQ1LCA0OCwgNCwgMjQ4LCA4OSwgCisgICAgNDgsIDQsIDI0OCwgMTAsIDQ4LCA0LCAyMjUsIDM0LCA0OCwgNCwgMjI4LCAyMzQsIDQ4LCA0LCAyMjQsIDE4MCwgNDgsIDQsIAorICAgIDIzOCwgMTk1LCA0OCwgNCwgMjM5LCAxNzUsIDQ4LCA0LCAyMDUsIDE3NiwgNDgsIDQsIDIwOCwgMTQ4LCA0OCwgNCwgMjA5LCAKKyAgICA0MiwgNDgsIDQsIDI0MywgMjM2LCA0OCwgNCwgMjQzLCAyNDEsIDQ4LCA0LCAyMjcsIDE4LCA0OCwgNCwgMjE1LCAyMDgsIAorICAgIDQ4LCA0LCAyNDMsIDkwLCA0OCwgNCwgMjIyLCAyNTMsIDQ4LCA0LCAyMTEsIDI1MCwgNDgsIDQsIDIxMiwgMjM2LCA0OCwgNCwgCisgICAgMjAyLCAxNSwgNDgsIDQsIDIwMiwgNjEsIDQ4LCA0LCAyNDUsIDE4MCwgNDgsIDQsIDIzMCwgOTEsIDQ4LCA0LCAyMjIsIDIyLCAKKyAgICA0OCwgNCwgMjAyLCAyMzIsIDQ4LCA0LCAyMjksIDYsIDQ4LCA0LCAyMjIsIDE2NiwgNDgsIDQsIDIzOCwgMjgsIDQ4LCA0LCAKKyAgICAyMjQsIDM1LCA0OCwgNCwgMjIxLCAxODAsIDQ4LCA0LCAyMjAsIDIzMCwgNDgsIDQsIDY4LCA0OCwgNCwgMjA2LCAyNTUsIAorICAgIDQ4LCA0LCAyMzYsIDI2LCA0OCwgNCwgMjM2LCAxMywgNDgsIDQsIDIwMywgMjE3LCA0OCwgNCwgMjAzLCAyMTAsIDQ4LCA0LCAKKyAgICAyMTcsIDE5MSwgNDgsIDQsIDI0OCwgODgsIDQ4LCA0LCAyNDcsIDE5MywgNDgsIDQsIDIyNSwgMzMsIDQ4LCA0LCAyMjgsIAorICAgIDIzMiwgNDgsIDQsIDIyNCwgMTc5LCA0OCwgNCwgMjM4LCAxOTQsIDQ4LCA0LCAyMzksIDEwOCwgNDgsIDQsIDIwNCwgMTYzLCAKKyAgICA0OCwgNCwgMjA3LCAyMDMsIDQ4LCA0LCAyMDksIDIyLCA0OCwgNCwgMjQzLCAyMzQsIDQ4LCA0LCAyNDMsIDI0MCwgNDgsIDQsIAorICAgIDIyNiwgMjM5LCA0OCwgNCwgMjE1LCAxNDUsIDQ4LCA0LCAyNDIsIDQyLCA0OCwgNCwgMjIyLCAyNDgsIDQ4LCA0LCAyMTEsIAorICAgIDEwLCA0OCwgNCwgMjEyLCAxOTksIDQ4LCA0LCAyMDIsIDYsIDQ4LCA0LCAyMDIsIDU3LCA0OCwgNCwgMjQ1LCAxMTAsIDQ4LCAKKyAgICA0LCAyMzAsIDgyLCA0OCwgNCwgMjIyLCAxOCwgNDgsIDQsIDIwMiwgMjEzLCA0OCwgNCwgMjI4LCAyMDksIDQ4LCA0LCAyMjIsIAorICAgIDE2NSwgNDgsIDQsIDIzNywgMjMwLCA0OCwgNCwgMjIzLCAyNDYsIDQ4LCA0LCAyMjEsIDg0LCA0OCwgNCwgMjIwLCAyMjYsIAorICAgIDQ4LCA0LCA3OCwgNDgsIDQsIDIyMCwgMzEsIDQ4LCA0LCAyMjIsIDEyNCwgNDgsIDQsIDIzNiwgMTM2LCA0OCwgNCwgMjM2LCAKKyAgICAxMjAsIDQ4LCA0LCAyMDQsIDAsIDQ4LCA0LCAyMDMsIDI0NSwgNDgsIDQsIDIxOCwgNjksIDQ4LCA0LCAyNDgsIDkwLCA0OCwgCisgICAgNCwgMjQ4LCAyMywgNDgsIDQsIDIyNSwgMzUsIDQ4LCA0LCAyMjgsIDIzNSwgNDgsIDQsIDIyNCwgMTgyLCA0OCwgNCwgMjM4LCAKKyAgICAxOTcsIDQ4LCA0LCAyMzgsIDE5NiwgNDgsIDQsIDIzOSwgMTg2LCA0OCwgNCwgMjA1LCAxODksIDQ4LCA0LCAxMzUsIDQ4LCAKKyAgICA0LCAyMDksIDQ3LCA0OCwgNCwgMjQzLCAyMzcsIDQ4LCA0LCAyNDMsIDI0MiwgNDgsIDQsIDIyNywgNDksIDQ4LCA0LCAyMTUsIAorICAgIDIyNywgNDgsIDQsIDI0MywgMTEzLCA0OCwgNCwgMjIzLCAxLCA0OCwgNCwgMjEyLCAxMywgNDgsIDQsIDIxMiwgMjQyLCA0OCwgCisgICAgNCwgMjAyLCAxNywgNDgsIDQsIDIwMiwgNjMsIDQ4LCA0LCAyNDUsIDI1NCwgNDgsIDQsIDIzMCwgMTAxLCA0OCwgNCwgMjIyLCAKKyAgICAyMywgNDgsIDQsIDIwMiwgMjQ3LCA0OCwgNCwgMjI5LCAyNiwgNDgsIDQsIDIyMiwgMTY3LCA0OCwgNCwgMjM4LCAzOSwgNDgsIAorICAgIDQsIDIyNCwgODIsIDQ4LCA0LCAyMjEsIDE5MSwgNDgsIDQsIDIyMCwgMjMzLCA0OCwgNCwgNzQsIDQ4LCA0LCAyNDEsIDkyLCAKKyAgICA0OCwgNCwgMjIyLCAxODcsIDQ4LCA0LCAyMzcsIDY3LCA0OCwgNCwgMjM3LCAzMywgNDgsIDQsIDIwNCwgNjIsIDQ4LCA0LCAKKyAgICAyMDQsIDQ5LCA0OCwgNCwgMjE5LCAzNCwgNDgsIDQsIDI0OCwgOTQsIDQ4LCA0LCAyNDgsIDE2MiwgNDgsIDQsIDIyNSwgNDcsIAorICAgIDQ4LCA0LCAyMjgsIDI0MCwgNDgsIDQsIDIyOCwgMjM4LCA0OCwgNCwgMjI0LCAxODgsIDQ4LCA0LCAyMzgsIDIwNCwgNDgsIAorICAgIDQsIDIzOCwgMjAyLCA0OCwgNCwgMjQwLCA2MCwgNDgsIDQsIDIwNiwgNTUsIDQ4LCA0LCAyMDksIDE4NywgNDgsIDQsIDIwOSwgCisgICAgOTIsIDQ4LCA0LCAyNDMsIDI0OCwgNDgsIDQsIDI0MywgMjQ1LCA0OCwgNCwgMjI3LCAyMzQsIDQ4LCA0LCAyMTYsIDE1OCwgCisgICAgNDgsIDQsIDI0NCwgNzUsIDQ4LCA0LCAyMjMsIDE3LCA0OCwgNCwgMjE0LCAxNzcsIDQ4LCA0LCAyMTMsIDQzLCA0OCwgNCwgCisgICAgMjAyLCA5MiwgNDgsIDQsIDIwMiwgNzEsIDQ4LCA0LCAyNDYsIDIzOCwgNDgsIDQsIDIzMCwgMTYxLCA0OCwgNCwgMjIyLCAKKyAgICA0MSwgNDgsIDQsIDIwMywgNTIsIDQ4LCA0LCAyMjksIDIwMSwgNDgsIDQsIDIyMiwgMTc3LCA0OCwgNCwgMjIyLCAxNzMsIAorICAgIDQ4LCA0LCAyMzgsIDE5MCwgNDgsIDQsIDIzOCwgMTc3LCA0OCwgNCwgMjI1LCAyMCwgNDgsIDQsIDIyMiwgMjQwLCA0OCwgNCwgCisgICAgMjIxLCAxLCA0OCwgNCwgMjIyLCAyMDUsIDQ4LCA0LCAyMjcsIDE4OCwgNDgsIDI0NSwgMjMzLCA0OCwgMjM5LCAxMDIsIAorICAgIDIxMSwgNjEsIDQ4LCAyMTcsIDQ3LCA4MiwgNDgsIDQsIDIyMywgMCwgMjQwLCAxMDgsIDQ4LCA0LCAyMjMsIDAsIDE3MywgCisgICAgNDgsIDQsIDIyMywgMCwgMjExLCAyNTAsIDQ4LCAxNiwgMjQwLCA0OSwgNDgsIDE2LCAyMjksIDE5NiwgNDgsIDE2LCAyMDgsIAorICAgIDIxNSwgNDgsIDE2LCAyMjIsIDc1LCA0OCwgMTYsIDI0OCwgMjM3LCA0OCwgMTYsIDI0MCwgMTA3LCA0OCwgMTYsIDIxMCwgCisgICAgMTgsIDQ4LCAxNiwgMjQ0LCAxNjQsIDQ4LCAxNiwgMjQzLCA4OSwgNDgsIDE2LCAyMjgsIDE5MywgNDgsIDE2LCAyMDgsIAorICAgIDE1MiwgNDgsIDE2LCAyNDMsIDExMiwgNDgsIDE2LCAyMzAsIDkyLCA0OCwgMTcsIDIwMiwgODQsIDQ4LCAxNywgMTA1LCA0OCwgCisgICAgMTcsIDEwOCwgNDgsIDE3LCAxNDcsIDQ4LCAxNywgMTQ5LCA0OCwgMTcsIDE3MCwgNDgsIDE3LCAxOTUsIDQ4LCAxNywgMjEzLCAKKyAgICAxMTEsIDQ4LCAxNywgMTk5LCA0OCwgMTcsIDIyMiwgNjMsIDQ4LCA0LCAyMjMsIDAsIDE5MiwgNDgsIDQsIDIyMywgMCwgCisgICAgMjQzLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDg4LCAzNiwgNSwgMSwgMjAyLCA4OCwgMzYsIDYsIDEsIDI0MSwgMjUwLCAzNiwgCisgICAgNSwgMSwgMjQxLCAyNTAsIDM2LCA2LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAKKyAgICAzNiwgNiwgMSwgMjMwLCAyMzAsIDM2LCA1LCAxLCAyMzAsIDIzMCwgMzYsIDYsIDEsIDI0MywgMTI5LCAzNiwgNSwgMSwgCisgICAgMjQzLCAxMjksIDM2LCA2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDYsIAorICAgIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNSwgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjIsIDIxNiwgCisgICAgMjAzLCAzNCwgMzYsIDUsIDEsIDIyMiwgMjE2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAKKyAgICAzNCwgMzYsIDUsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgCisgICAgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCAyMTMsIDM2LCA1LCAxLCAyMTYsIAorICAgIDczLCAyMDIsIDIxMywgMzYsIDYsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDUsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDYsIDEsIAorICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAKKyAgICAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAorICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgCisgICAgMTgzLCAzNiwgNiwgMSwgMjAyLCAyNDksIDM2LCA1LCAxLCAyMDIsIDI0OSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIAorICAgIDM2LCA1LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDQsIDc1LCAzNiwgNSwgMSwgMjEyLCA3LCAKKyAgICAyNDQsIDc1LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA2LCAKKyAgICAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDYsIDEsIDIyNCwgNDcsIDc4LCAKKyAgICAzNiwgNSwgMSwgMjI0LCA0NywgNzgsIDM2LCA2LCAxLCAyNDgsIDYzLCA3OCwgMzYsIDUsIDEsIDI0OCwgNjMsIDc4LCAzNiwgCisgICAgNiwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgNSwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgMSwgMjIzLCAyMjcsIDc4LCAKKyAgICAzOSwgMzYsIDIwNCwgMTQ2LCAzOSwgMzYsIDIwOSwgMTUzLCAyMjQsIDExNCwgNTQsIDM5LCAzNiwgMjM2LCAxMiwgMjI0LCAKKyAgICAxMTQsIDU0LCAzOSwgMzYsIDIwOSwgMzcsIDIyNCwgMTE0LCA1NCwgMjEyLCA1NSwgMjUwLCA1OSwgMzksIDM2LCAxLCAyMDcsIAorICAgIDExLCAyMzEsIDExMCwgMzksIDM2LCAxLCA3NSwgMzksIDM2LCAxLCAyMDMsIDExLCAzOSwgMzYsIDEsIDY4LCAzOSwgMzYsIAorICAgIDEsIDIzNywgOTEsIDU0LCAzOSwgMzYsIDEsIDIwMywgMzAsIDM5LCAzNiwgMSwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAKKyAgICAyMjAsIDM2LCAzOSwgMzYsIDIyOSwgMjEzLCAzOSwgMzYsIDIxOSwgNDEsIDM2LCAyMjksIDIxMywgMzYsIDIxOSwgNDEsIAorICAgIDM2LCA2LCAxLCAyNDIsIDksIDM2LCA1LCAxLCAyNDIsIDksIDM2LCA2LCAxLCAyNDEsIDI0MSwgMzYsIDUsIDEsIDI0MSwgCisgICAgMjQxLCAzNiwgNiwgMSwgMjAyLCA0NywgMzYsIDUsIDEsIDIwMiwgNDcsIDM2LCA2LCAxLCAyNDYsIDI1NCwgMzYsIDUsIDEsIAorICAgIDI0NiwgMjU0LCAzNiwgNiwgMSwgMjQxLCAyMzgsIDM2LCA1LCAxLCAyNDEsIDIzOCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAKKyAgICAxMDEsIDExMywgMzYsIDUsIDEsIDIwOSwgMTg4LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwNywgMTU4LCAzNiwgNSwgMSwgCisgICAgMjA3LCAxNTgsIDM2LCA2LCAxLCAyMDcsIDI0NSwgMzYsIDUsIDEsIDIwNywgMjQ1LCAzNiwgNiwgMSwgMjA3LCAyNTAsIDM2LCAKKyAgICA1LCAxLCAyMDcsIDI1MCwgMzYsIDYsIDEsIDIwOSwgMTkzLCAzNiwgNSwgMSwgMjA5LCAxOTMsIDM2LCA2LCAxLCAyMzUsIAorICAgIDI1MSwgMzYsIDUsIDEsIDIzNSwgMjUxLCAzNiwgNiwgMSwgMjEyLCAxNzcsIDM2LCA1LCAxLCAyMTIsIDE3NywgMzYsIDYsIAorICAgIDEsIDUyLCA3OCwgMzYsIDUsIDEsIDUyLCA3OCwgMzYsIDYsIDEsIDI0NSwgMTI4LCA3OCwgMzYsIDUsIDEsIDI0NSwgMTI4LCAKKyAgICA3OCwgNjUsIDEsIDM2LCAyMzcsIDkxLCA1NCwgNjUsIDEsIDM2LCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIDI0MSwgMTU0LCAKKyAgICAzOSwgMzYsIDEsIDIzMCwgMjI4LCA3NCwgMjQsIDEsIDYzLCAyNCwgMSwgMTczLCAyNCwgMSwgNjgsIDI0LCAxLCAyMjgsIAorICAgIDIwOSwgMjQsIDEsIDI0MSwgMTYxLCAyNCwgMSwgMjE2LCAxMzUsIDI0LCAxLCAyMTAsIDEsIDI0LCAxLCA3OCwgMjQsIDEsIAorICAgIDIyMCwgMjQ4LCAyNCwgMSwgNzUsIDI0LCAxLCAyMjgsIDExMywgMjQsIDEsIDE4NSwgMjQsIDEsIDIxNiwgMywgMjQsIDEsIAorICAgIDIxNiwgNTAsIDI0LCAxLCAyMjcsIDIyNSwgMjQsIDEsIDIyNSwgNywgMjQsIDEsIDIxMCwgMTgsIDI0LCAxLCAyMjMsIDIzLCAKKyAgICAyNCwgMSwgMjIyLCA0NiwgMjQsIDEsIDIyNiwgMTg1LCAyNCwgMSwgMjEwLCAxNzksIDI0LCAxLCAyMjMsIDI0NiwgMjQsIDEsIAorICAgIDIxMywgNiwgMjQsIDEsIDIxMiwgMTYyLCAyNCwgMSwgMjEzLCAxNiwgMjQsIDEsIDIxMywgMTEzLCAyNCwgMSwgMjI4LCAKKyAgICAxMzcsIDI0LCAxLCAyMjksIDE3MCwgMjQsIDEsIDIyMSwgNTUsIDI0LCAxLCAyMjEsIDg0LCAyNCwgMSwgMjIyLCAxNywgMjQsIAorICAgIDEsIDIwMiwgMjI5LCAyNCwgMSwgMjEyLCAxOTksIDI0LCAxLCAyMDIsIDE4NywgMjQsIDEsIDE5OCwgMjQsIDEsIDIyMSwgCisgICAgMTE4LCAyNCwgMSwgMjI5LCAxNTYsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyMiwgMzksIDI0LCAxLCAyMjEsIDk5LCAKKyAgICAyNCwgMSwgMjE3LCAxODMsIDI0LCAxLCAyMDMsIDIxNCwgMjQsIDEsIDIxOSwgMjMsIDI0LCAxLCAyNDAsIDUzLCAyNCwgMSwgCisgICAgMjE1LCAxNDUsIDI0LCAxLCAyMjYsIDIzOSwgMjQsIDEsIDIyNCwgMTU1LCAyNCwgMSwgMjIyLCAxMDAsIDI0LCAxLCAyMTYsIAorICAgIDc1LCAyNCwgMSwgMjE2LCAyMDIsIDI0LCAxLCAyMjksIDE4MCwgMjQsIDEsIDIyMiwgMTMxLCAyNCwgMSwgMjIyLCAxODIsIAorICAgIDI0LCAxLCAyMjIsIDIwMywgMjQsIDEsIDIxMiwgMjQyLCAyNCwgMSwgMjE3LCAxODgsIDI0LCAxLCAyMzksIDEwOCwgMjQsIAorICAgIDEsIDIzOSwgMTc5LCAyNCwgMSwgMjA0LCAxMTEsIDI0LCAxLCAyMDEsIDIwMSwgMjQsIDEsIDIyNywgMTQ4LCAyNCwgMSwgCisgICAgMjE4LCAxNjcsIDI0LCAxLCAyMjcsIDEwLCAyNCwgMSwgMjI5LCAyNiwgMjQsIDEsIDIyNSwgNDQsIDI0LCAxLCAyMTYsIAorICAgIDEwNywgMjQsIDEsIDIyNCwgMjQwLCAyNCwgMSwgMTkyLCAyNCwgMSwgMjA5LCAyLCAyNCwgMSwgMjI5LCAxMDAsIDI0LCAxLCAKKyAgICAyMjQsIDgyLCAyNCwgMSwgMjI1LCA1MiwgMjQsIDEsIDIwOSwgMTMyLCAyNCwgMSwgMjI4LCAyNDQsIDI0LCAxLCAyMDksIAorICAgIDE1MiwgMjQsIDEsIDIyMSwgODYsIDI0LCAxLCAyMTQsIDI1MSwgMjQsIDEsIDI0MCwgMTA0LCAyNCwgMSwgMjI4LCAyNDYsIAorICAgIDI0LCAxLCAyMjksIDIxLCAyNCwgMzksIDEzMSwgMjI4LCAyNTUsIDI0LCAzOSwgMTMxLCAyMDcsIDE5NCwgMjQsIDIyMiwgCisgICAgNDUsIDI0LCAyMzksIDEwMiwgMjExLCA2MSwgMjQsIDI0NSwgMjQyLCAyNCwgMjQ1LCAyMzMsIDI0LCAyMTMsIDE0MywgMjQsIAorICAgIDIxNywgNDcsIDgyLCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAKKyAgICAxNDMsIDIwMywgNzcsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTMsIDY1LCA2NSwgMSwgCisgICAgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjEzLCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE3LCA2NSwgCisgICAgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIAorICAgIDIxNSwgMTQ1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE1LCAxNDUsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCAKKyAgICA4MywgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIAorICAgIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAxNDMsIAorICAgIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIAorICAgIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAKKyAgICAxMjQsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAyMjcsIDIxNCwgCisgICAgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyMjcsIDIxNCwgMTQzLCAKKyAgICAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyMjcsIDIxNCwgMTQzLCAxNDIsIAorICAgIDY1LCAxLCAyNDAsIDE5NywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgNzAsIDgwLCAxNDIsIDY1LCAxLCA3MCwgMjEyLCAKKyAgICA1NywgNjUsIDEsIDcwLCAyMzYsIDEwNiwgMTQyLCA2NSwgMSwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMjUwLCAyMTcsIAorICAgIDY1LCAxLCAyMTYsIDE4OCwgMTEyLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAxMjEsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDI0MCwgCisgICAgMjEyLCA4MiwgNjUsIDEsIDIxNiwgMTg4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMTI0LCAyMzAsIDIzOSwgCisgICAgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTI0LCAKKyAgICAyMDgsIDE2MSwgOCwgNiwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA2LCAKKyAgICAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDYsIDEsIDIzNywgMzEsIDgsIDUsIAorICAgIDEsIDIzNywgMzEsIDgsIDYsIDEsIDIwNywgMTA3LCA4LCA1LCAxLCAyMDcsIDEwNywgOCwgNiwgMSwgMjA4LCA4OSwgOCwgNSwgCisgICAgMSwgMjA4LCA4OSwgOCwgNiwgMSwgMjQ1LCAxMDcsIDgsIDUsIDEsIDI0NSwgMTA3LCA4LCA2LCAxLCAyNDUsIDEwOCwgMywgCisgICAgMjQ1LCAyMzMsIDgsIDUsIDEsIDI0NSwgMTA4LCAzLCAyNDUsIDIzMywgOCwgMSwgNSwgNiwgMjQwLCAxNzQsIDgsIDEsIDUsIAorICAgIDYsIDE5NCwgOCwgNiwgMSwgMjUyLCAyNSwgOCwgNSwgMSwgMjUyLCAyNSwgOCwgNiwgMSwgMjUwLCAxNzgsIDgsIDUsIDEsIAorICAgIDI1MCwgMTc4LCA4LCA2LCAxLCAyNTAsIDM0LCA4LCA1LCAxLCAyNTAsIDM0LCA4LCA2LCAxLCAyNTAsIDE4LCA4LCA1LCAxLCAKKyAgICAyNTAsIDE4LCA4LCA2LCAxLCAyNTAsIDE5LCAzLCAyMzYsIDEwNiwgMTQyLCA4LCA1LCAxLCAyNTAsIDE5LCAzLCAyMzYsIAorICAgIDEwNiwgMTQyLCA4LCA2LCAxLCAyNTAsIDgsIDgsIDUsIDEsIDI1MCwgOCwgOCwgNiwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIAorICAgIDMsIDI0MywgODUsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAzLCAyNDMsIDg1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKKyAgICA5NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgCisgICAgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCAKKyAgICA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyNDcsIDIwMywgMTU5LCAKKyAgICA4LCA1LCAxLCAyNDcsIDIwMywgMTU5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTM4LCA5NSwgOCwgNSwgMSwgMjI4LCAxMzEsIAorICAgIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDE1OCwgMywgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNSwgMSwgMTU4LCAzLCAKKyAgICAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA2LCAxLCAxNTgsIDMsIDIyNywgMTQsIDgsIDUsIDEsIDE1OCwgMywgMjI3LCAKKyAgICAxNCwgOCwgNiwgMSwgMjIwLCAxOCwgOCwgNSwgMSwgMjIwLCAxOCwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIAorICAgIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAKKyAgICAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjE5LCAKKyAgICAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgCisgICAgNiwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAyMTEsIAorICAgIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMTcsIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMTcsIAorICAgIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTcsIDEsIDIxNSwgCisgICAgMTkyLCA4LCA2LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNiwgMSwgCisgICAgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgCisgICAgMjA0LCAxNTIsIDgsIDUsIDEsIDIwNCwgMTUyLCA4LCA2LCAxLCAyMDUsIDE5NywgMjAyLCAxNTksIDgsIDUsIDEsIDIwNSwgCisgICAgMTk3LCAyMDIsIDE1OSwgOCwgNiwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA2LCAxLCAKKyAgICAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIAorICAgIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMDYsIDQ1LCA4LCA1LCAxLCAyMDYsIDQ1LCA4LCA2LCAxLCAyNDAsIDI1MCwgOCwgNSwgCisgICAgMSwgMjQwLCAyNTAsIDgsIDYsIDEsIDIzMCwgMjE1LCA4LCA1LCAxLCAyMzAsIDIxNSwgOCwgNiwgMSwgMjQ1LCAyMTgsIDgsIAorICAgIDUsIDEsIDI0NSwgMjE4LCA2NSwgMSwgMjA2LCAxOTMsIDgsIDUsIDEsIDI0MiwgMzIsIDgsIDUsIDEsIDIyNiwgMjIyLCA4LCAKKyAgICA1LCAxLCAyMjMsIDIyMCwgOCwgNSwgMSwgMjIxLCA0NywgOCwgNSwgMSwgMjE1LCAxMzEsIDgsIDEsIDUsIDYsIDIxNSwgCisgICAgMTMxLCA4LCA1LCAxLCAyMDcsIDE5MSwgOCwgNSwgMSwgMjA3LCA2LCA4LCA2LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDUsIAorICAgIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNiwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgOCwgNSwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgCisgICAgOCwgNiwgMSwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA1LCAxLCAKKyAgICAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMTU5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCisgICAgMTU5LCA4LCA2LCAxLCAyMzEsIDQsIDE0NiwgOCwgNSwgMSwgMjMxLCA0LCAxNDYsIDgsIDYsIDEsIDIzMSwgNCwgMTk0LCA4LCAKKyAgICA1LCAxLCAyMzEsIDQsIDE5NCwgOCwgNiwgMSwgMjMxLCA0LCAyMTAsIDY5LCA4LCA1LCAxLCAyMzEsIDQsIDIxMCwgNjksIAorICAgIDY1LCAxLCAxMjQsIDI0NiwgNTMsIDI1MSwgMTM4LCA2NSwgMSwgMjQ1LCAyNDIsIDY1LCAxLCAyMTIsIDIyOCwgMjQxLCAzNSwgCisgICAgNTQsIDgsIDYsIDEsIDIxNCwgMjU1LCA4LCA1LCAxLCAyMTQsIDI1NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCAKKyAgICA1LCAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMjM2LCAxMTYsIDI1LCAyNDgsIDEyNCwgOCwgMSwgMjEyLCAxMTQsIDI0MywgCisgICAgODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNiwgCisgICAgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIAorICAgIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjM5LCAKKyAgICAxOTksIDgsIDUsIDEsIDY2LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDk1LCA4LCA1LCAxLCAyNDAsIAorICAgIDE3NSwgMywgOTUsIDgsIDYsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCAKKyAgICA2LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNSwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDYsIDEsIDIwNSwgMTgyLCAKKyAgICAyMDcsIDI0LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjA3LCAyNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIAorICAgIDUsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgCisgICAgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjIzLCAKKyAgICAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIAorICAgIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjIwLCAKKyAgICA4OSwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDYsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDYsIDEsIAorICAgIDEzMiwgMjM5LCA3NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgCisgICAgOCwgNiwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNiwgMSwgMjQ2LCAKKyAgICAxNDIsIDgsIDYsIDEsIDI0OCwgMTA2LCA4LCA1LCAxLCAyNDgsIDEwNiwgOCwgNiwgMSwgMjIwLCAzNiwgOCwgNSwgMSwgCisgICAgMjIwLCAzNiwgOCwgMjQxLCA0MCwgMSwgMjEyLCAxNTQsIDc1LCA2NSwgMSwgNiwgMjM3LCAxNzIsIDMsIDk1LCA2NSwgMSwgCisgICAgNSwgMzIsIDIyMCwgNzMsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgCisgICAgMjQwLCAxNzQsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIDIxOSwgMTg0LCA4LCAyNDEsIDQwLCAxLCAyMzAsIDIzOSwgMjI2LCAKKyAgICAxODUsIDgsIDI0MSwgNDAsIDEsIDIzNSwgMjA2LCAyMjcsIDIwLCA4LCAyNDEsIDQwLCAxLCAyNTAsIDEyNiwgMjI2LCAxODUsIAorICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgCisgICAgMjQyLCAxMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzQsIDIxMCwgMTQ5LCAKKyAgICAyMjMsIDk0LCAxLCA3OCwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDIzNywgODUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIAorICAgIDI2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAxMTUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDM5LCAyMTAsIAorICAgIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCA5MSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDI1MCwgMTgwLCAyMTAsIDE0OSwgMjIzLCAKKyAgICA5NCwgMSwgMjQ1LCAyNTQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDYsIDExNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAorICAgIDIzMCwgMTAxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjMwLCAxNDMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIxOCwgCisgICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjI0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ0LCA5MCwgMjEwLCAxNDksIAorICAgIDIyMywgOTQsIDEsIDI0NCwgOTksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAxMzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKKyAgICAyMDksIDQ3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAxMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDIzNywgCisgICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyMSwgMTkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE4LCA2OSwgMjEwLCAxNDksIAorICAgIDIyMywgOTQsIDEsIDIxOCwgMTgwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ4LCAyMywgMjEwLCAxNDksIDIyMywgOTQsIAorICAgIDEsIDI0OCwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjQsIDgyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAKKyAgICAyMjcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjcsIDQ5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAxNzEsIDIxMCwgCisgICAgMTQ5LCAyMjMsIDk0LCAxLCAyMTIsIDEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM2LCAxMzYsIDIxMCwgMTQ5LCAyMjMsIAorICAgIDk0LCAyMiwgMiwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgCisgICAgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgMjIwLCAxOCwgMjEwLCAKKyAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkxLCAyMTAsIAorICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgODksIDE1MywgCisgICAgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgCisgICAgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgCisgICAgODAsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgCisgICAgMjEyLCA3OSwgMTUzLCAyMzEsIDMzLCAyMTcsIDU2LCA4MiwgMTUzLCAyMzEsIDMzLCAyMTgsIDk2LCA4MiwgMTUzLCAyMzEsIAorICAgIDMzLCAyMTUsIDEyMCwgODIsIDE1MywgMjMxLCAzMywgMjE3LCA1NywgODIsIDIxOCwgMjA0LCAxLCAxNzMsIDIxOCwgMjA0LCAKKyAgICAxLCAyMjksIDE0NCwgMjE4LCAyMDQsIDEsIDIzOSwgOCwgMjE4LCAyMDQsIDEsIDIyMiwgMjAzLCAyMTgsIDIwNCwgMSwgCisgICAgMjQ3LCA5MiwgMjE4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMTgsIDIwNCwgMSwgMjMwLCAxODEsIDIxOCwgMjA0LCAxLCAyMjEsIAorICAgIDExLCAyMTgsIDIwNCwgMSwgMjEwLCAyMiwgMjE4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMTgsIDIwNCwgMSwgMjQ0LCAyMTIsIAorICAgIDIxOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjE4LCAyMDQsIDEsIDE4NSwgMjE4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMTgsIDIwNCwgCisgICAgMSwgMjQ5LCAzMiwgMjE4LCAyMDQsIDEsIDE5MiwgMjE4LCAyMDQsIDEsIDIwOCwgMjAsIDIxOCwgMjA0LCAxLCAyMDgsIDEwLCAKKyAgICAyMTgsIDIwNCwgMSwgMjQxLCAyNTUsIDIxOCwgMjA0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDEsIDIwMiwgODAsIDIxOCwgCisgICAgMjA0LCAxLCAyMDIsIDExNiwgMjE4LCAyMDQsIDEsIDUsIDYzLCAyMTgsIDIwNCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgMjE2LCAKKyAgICAyMjAsIDIxOCwgMjA0LCAxLCAyMjgsIDExMywgMjE4LCAyMDQsIDEsIDIxMywgOTAsIDIxOCwgMjA0LCAxLCAyMTUsIDM2LCAKKyAgICAyMTgsIDIwNCwgMSwgMTUyLCAyMTgsIDIwNCwgMSwgNjMsIDIxOCwgMjA0LCAxLCA3NSwgMjE4LCAyMDQsIDEsIDY4LCAyMTgsIAorICAgIDIwNCwgMSwgNzQsIDIxOCwgMjA0LCAxLCA3OCwgMjE4LCAyMDQsIDEsIDIxNywgMTI2LCAyMTgsIDIwNCwgMSwgMjAzLCAKKyAgICAxODIsIDIxOCwgMjA0LCAxLCAyNDAsIDEwOCwgMjE4LCAyMDQsIDEsIDIzOCwgMTU1LCAyMTgsIDIwNCwgMSwgMjQxLCAxNjEsIAorICAgIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgCisgICAgMjA3LCAyNDEsIDIxOCwgMjA0LCAxLCAyMDcsIDIyOSwgMjE4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMTgsIDIwNCwgMSwgMjIxLCAKKyAgICAyMjcsIDIxOCwgMjA0LCAxLCAyNTAsIDI1NSwgMTk4LCAyMTgsIDIwNCwgMSwgMjA1LCAxODUsIDIxMywgOTAsIDIxOCwgCisgICAgMjA0LCAxLCAyMDUsIDE4NiwgMTUyLCAyMTgsIDIwNCwgMSwgMjUwLCA2NiwgMjQwLCAxMDgsIDIxOCwgMjA0LCAyMTAsIAorICAgIDI1NCwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAyMTAsIDIwMSwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAxLCAyNDcsIDUyLCAKKyAgICAyMTgsIDIwNCwgMjEyLCAxMjAsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgNTIsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgCisgICAgMTMxLCAyMTMsIDgyLCAyMTgsIDIwNCwgMTMxLCA1MiwgMjEzLCA4MiwgMjE0LCAyMTUsIDIsIDI1MCwgMTgwLCAyMTQsIAorICAgIDIxNSwgMiwgMjA1LCAxOTksIDIxNCwgMjE1LCAxLCA2MywgMjE0LCAyMTUsIDEsIDI1MiwgMjUsIDIxNCwgMjE1LCAxLCA3NSwgCisgICAgMjE0LCAyMTUsIDEsIDIzMSwgODMsIDIxNCwgMjE1LCAxLCA2OCwgMjE0LCAyMTUsIDEsIDIwNiwgMTc4LCAyMTQsIDIxNSwgCisgICAgMSwgMTI1LCAxNDYsIDIxNCwgMjE1LCAxLCAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMSwgMTI1LCAxNTksIDIxNCwgMjE1LCAKKyAgICAxLCAxMjUsIDIyNywgNzgsIDIxNCwgMjE1LCAxLCA3NCwgMjE0LCAyMTUsIDEsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMSwgCisgICAgMjUxLCA2NCwgMjE0LCAyMTUsIDEsIDc4LCAyMTQsIDIxNSwgMSwgMjIwLCAxOCwgMjE0LCAyMTUsIDEsIDI1MCwgMzQsIAorICAgIDIxNCwgMjE1LCAxLCAxNzMsIDIxNCwgMjE1LCAxLCAyMjksIDE0NCwgMjE0LCAyMTUsIDEsIDIzOSwgOCwgMjE0LCAyMTUsIAorICAgIDEsIDIzOCwgMTE5LCAyMTQsIDIxNSwgMSwgMjIyLCAyMDMsIDIxNCwgMjE1LCAxLCAyNDcsIDkyLCAyMTQsIDIxNSwgMSwgCisgICAgMjQ2LCAxOTksIDIxNCwgMjE1LCAxLCAyMzAsIDE4MSwgMjE0LCAyMTUsIDEsIDIzMCwgMTQ5LCAyMTQsIDIxNSwgMSwgMjIxLCAKKyAgICAxMSwgMjE0LCAyMTUsIDEsIDIwNywgMjQxLCAyMTQsIDIxNSwgMSwgMjA3LCAyMjksIDIxNCwgMjE1LCAxLCAyNDQsIDEyMCwgCisgICAgMjE0LCAyMTUsIDEsIDI0NCwgMTA0LCAyMTQsIDIxNSwgMSwgMjIxLCAyMjcsIDIxNCwgMjE1LCAxLCAyMTAsIDIyLCAyMTQsIAorICAgIDIxNSwgMSwgMjA5LCAxMDgsIDIxNCwgMjE1LCAxLCAyNDQsIDIxMiwgMjE0LCAyMTUsIDEsIDI0NCwgMSwgMjE0LCAyMTUsIAorICAgIDEsIDIwMSwgMjAxLCAyMTQsIDIxNSwgMSwgMTg1LCAyMTQsIDIxNSwgMSwgMjE4LCAyMDgsIDIxNCwgMjE1LCAxLCAyNDksIAorICAgIDMyLCAyMTQsIDIxNSwgMSwgMjQ4LCA5OCwgMjE0LCAyMTUsIDEsIDE5MiwgMjE0LCAyMTUsIDEsIDE5OCwgMjE0LCAyMTUsIAorICAgIDEsIDIxNiwgMjIwLCAyMTQsIDIxNSwgMSwgMjI4LCAxMTMsIDIxNCwgMjE1LCAxLCAyMDYsIDg2LCAyMTQsIDIxNSwgMSwgCisgICAgMjEzLCA5MCwgMjE0LCAyMTUsIDEsIDIxMSwgMTY0LCAyMTQsIDIxNSwgMSwgMjE1LCAzNiwgMjE0LCAyMTUsIDEsIDE1MiwgCisgICAgMjE0LCAyMTUsIDEsIDIyNywgNzcsIDIxNCwgMjE1LCAxMDksIDIsIDIzNywgMTU1LCAyMTQsIDIxNSwgMjIsIDIsIDI1MiwgCisgICAgMjUsIDIxNCwgMjE1LCAyMiwgMiwgNzUsIDIxNCwgMjE1LCAyMiwgMiwgMjMxLCA4MywgMjE0LCAyMTUsIDIyLCAyLCA2OCwgCisgICAgMjE0LCAyMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDIyLCAyLCAKKyAgICAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTU5LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgCisgICAgMjE0LCAyMTUsIDIyLCAyLCA3NCwgMjE0LCAyMTUsIDIyLCAyLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDIyLCAyLCAyNTEsIDY0LCAKKyAgICAyMTQsIDIxNSwgMjIsIDIsIDc4LCAyMTQsIDIxNSwgMjIsIDIsIDIyMCwgMTgsIDIxNCwgMjE1LCAyMiwgMiwgMjUwLCAzNCwgCisgICAgMjE0LCAyMTUsIDIsIDIwNSwgMjA0LCAyMTQsIDIxNSwgMjQ0LCAxNjYsIDIxNCwgMjE1LCA1MiwgMjQ0LCAxNjYsIDIxNCwgCisgICAgMjE1LCAxNywgMjAyLCA4NCwgMjE0LCAyMTUsIDE3LCAxMDUsIDIxNCwgMjE1LCAxNywgMTA4LCAyMTQsIDIxNSwgMTcsIAorICAgIDE0NywgMjE0LCAyMTUsIDE3LCAxNDksIDIxNCwgMjE1LCAxNywgMTcwLCAyMTQsIDIxNSwgMTcsIDE5NSwgMjE0LCAyMTUsIAorICAgIDE3LCAyMTMsIDExMSwgMjE0LCAyMTUsIDE3LCAxOTksIDIxNCwgMjE1LCAxNywgMjIyLCA2MywgMzksIDkyLCAxNywgMjAyLCAKKyAgICA4NCwgMzksIDkyLCAxNywgMTA1LCAzOSwgOTIsIDE3LCAxMDgsIDM5LCA5MiwgMTcsIDE0NywgMzksIDkyLCAxNywgMTQ5LCAKKyAgICAzOSwgOTIsIDE3LCAxNzAsIDM5LCA5MiwgMTcsIDE5NSwgMzksIDkyLCAxNywgMjEzLCAxMTEsIDM5LCA5MiwgMTcsIDE5OSwgCisgICAgMzksIDkyLCAxNywgMjIyLCA2MywgMzksIDkyLCAxLCA2MywgMzksIDkyLCAxLCA2OCwgMzksIDkyLCAxLCAxNzMsIDM5LCAKKyAgICA5MiwgMSwgMjAxLCAyMDEsIDM5LCA5MiwgMSwgMTg1LCAzOSwgOTIsIDEsIDIxNiwgMjIwLCAzOSwgOTIsIDEsIDIwNSwgCisgICAgMjMwLCAzOSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyLCAyMTEsIDIyNywgMjQ3LCA1MiwgOTIsIDIsIDI0NywgNTMsIDIwNSwgCisgICAgMjA0LCA5MiwgMiwgNTIsIDI0NywgNTMsIDIwNSwgMjA0LCA5MiwgMiwgMjQ3LCA1MywgMTA4LCA5MiwgMiwgMjQ3LCA1MywgCisgICAgMTQ3LCA5MiwgMiwgMjQ3LCA1MywgMjUwLCAxNywgOTIsIDIsIDIxNywgMTYyLCA5MiwgMjM4LCAyMjgsIDI0MCwgNywgOTIsIAorICAgIDI0NywgMzMsIDkyLCAyMzcsIDU4LCA5MiwgMiwgMjEyLCAxNTcsIDkyLCAyMzAsIDE3MywgMjIwLCAzOSwgMjI5LCAyMDcsIAorICAgIDIyNywgMTQ5LCAxNywgMjAyLCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTA1LCAyMjksIDIwNywgMjI3LCAxNDksIAorICAgIDE3LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0NywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ5LCAyMjksIAorICAgIDIwNywgMjI3LCAxNDksIDE3LCAxNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKKyAgICAxNywgMjEzLCAxMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5OSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMjIyLCAKKyAgICA2MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjI5LCAxNDQsIDIyOSwgCisgICAgMjA3LCAyMjcsIDE0OSwgMSwgMjM5LCA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMiwgMjAzLCAyMjksIDIwNywgMjI3LCAKKyAgICAxNDksIDEsIDIxNSwgMzYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEzLCA5MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKKyAgICAyMDIsIDExNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjEsIDExLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMCwgMjIsIAorICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjM2LCAzMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDEsIDIwMSwgMjI5LCAKKyAgICAyMDcsIDIyNywgMTQ5LCAxLCAxODUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE4LCAyMDgsIDIyOSwgMjA3LCAyMjcsIAorICAgIDE0OSwgMSwgMTkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NCwgMjEyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0OSwgCisgICAgMzIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE2LCAyMjAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTk4LCAyMjksIAorICAgIDIwNywgMjI3LCAxNDksIDEsIDIyOCwgMTEzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwNCwgMTExLCAyMjksIDIwNywgCisgICAgMjI3LCAxNDksIDEsIDIwOSwgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE1MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKKyAgICAyMDYsIDg2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NywgOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNjMsIDIyOSwgCisgICAgMjA3LCAyMjcsIDE0OSwgMSwgMjIwLCA3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA3NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKKyAgICAxLCAyMjAsIDE4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyMDcsIDI0LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA3NCwgCisgICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDI0MSwgMTYxLCAyMjksIDIwNywgCisgICAgMjI3LCAxNDksIDIyLCA3OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCisgICAgMTQzLCAyNDcsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjQ3LCA2OSwgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgCisgICAgMTQ5LCAyLCAyNDUsIDcwLCAyMjksIDIwNywgMjI3LCAxNDksIDIsIDIxMiwgMTcwLCAyMTYsIDExOSwgMSwgMTczLCAyMTYsIAorICAgIDExOSwgMSwgMjM5LCA4LCAyMTYsIDExOSwgMSwgMjIyLCAyMDMsIDIxNiwgMTE5LCAxLCAyMTAsIDIyLCAyMTYsIDExOSwgMSwgCisgICAgMjQ0LCAyMTIsIDIxNiwgMTE5LCAxLCAyMDEsIDIwMSwgMjE2LCAxMTksIDEsIDE4NSwgMjE2LCAxMTksIDEsIDI0OSwgMzIsIAorICAgIDIxNiwgMTE5LCAxLCAxOTIsIDIxNiwgMTE5LCAxLCAyNDcsIDkyLCAyMTYsIDExOSwgMSwgMjMwLCAxODEsIDIxNiwgMTE5LCAKKyAgICAxLCAyMjEsIDExLCAyMTYsIDExOSwgMSwgMjE1LCAzNiwgMjE2LCAxMTksIDEsIDIxNiwgMjIwLCAyMTYsIDExOSwgMSwgCisgICAgMjI4LCAxMTMsIDIxNiwgMTE5LCAxLCAxOTgsIDIxNiwgMTE5LCAxLCAyMDQsIDExMSwgMjE2LCAxMTksIDEsIDE1MiwgMjE2LCAKKyAgICAxMTksIDEsIDIyNSwgNTQsIDIxNiwgMTE5LCAxLCAyMjIsIDE4MiwgMjE2LCAxMTksIDEsIDIyMywgMjUsIDIxNiwgMTE5LCAKKyAgICAxLCAyMjAsIDIzNCwgMjE2LCAxMTksIDEsIDYzLCAyMTYsIDExOSwgMjIsIDIsIDc1LCAyMTYsIDExOSwgMjIsIDIsIDY4LCAKKyAgICAyMTYsIDExOSwgMjIsIDIsIDc0LCAyMTYsIDExOSwgMjIsIDIsIDI1MSwgNjQsIDIxNiwgMTE5LCAyMiwgMiwgNzgsIDIxNiwgCisgICAgMTE5LCAyMiwgMiwgMjUwLCAzNCwgMjE2LCAxMTksIDIyLCAyLCAyNDAsIDIzOCwgMjE2LCAxMTksIDIyLCAyLCAyNDEsIAorICAgIDE4OSwgMjE2LCAxMTksIDEwOSwgMiwgMjIyLCAyMDUsIDIxNiwgMTE5LCAxMDksIDIsIDIyMywgMTYzLCAyMTYsIDExOSwgCisgICAgMTA5LCAyLCAxNDYsIDIxNiwgMTE5LCAxMDksIDIsIDIzNywgMTcxLCAyMTYsIDExOSwgMjA1LCAyMDQsIDIxNiwgMTE5LCAKKyAgICAyMTQsIDE2OCwgODIsIDI4LCAxMjMsIDIwOCwgMjM2LCAyOCwgMTIzLCAyMDgsIDIzNSwgMjgsIDEyMywgMjA4LCAyMzMsIAorICAgIDI4LCAxMjMsIDIwOCwgMjM4LCAyOCwgMTIzLCAyMTYsIDQyLCAyOCwgMTIzLCAyMTYsIDI2LCAyOCwgMTIzLCAyMTYsIDIxLCAKKyAgICAyOCwgMTIzLCAyMTYsIDIzLCAyOCwgMTIzLCAyMTYsIDM5LCAyOCwgMTIzLCAyMTYsIDMyLCAyOCwgMTIzLCAyMTYsIDI1LCAKKyAgICAyOCwgMTIzLCAyMTYsIDQ0LCAyOCwgMTIzLCAyMTYsIDI3LCAyOCwgMTIzLCAyMTYsIDQ2LCAyOCwgMTIzLCAyMTYsIDQzLCAKKyAgICAyOCwgMTIzLCAyMjQsIDEzNywgMjgsIDEyMywgMjI0LCAxMjgsIDI4LCAxMjMsIDIyNCwgMTMxLCAyOCwgMTIzLCAyMTgsIAorICAgIDEzOCwgMjgsIDEyMywgMjE4LCAxNDksIDI4LCAxMjMsIDIxOCwgMTUwLCAyOCwgMTIzLCAyMTEsIDE0OCwgMjgsIDEyMywgCisgICAgMjMxLCA5NiwgMjgsIDEyMywgMjMxLCAxMDMsIDI4LCAxMjMsIDIxMSwgMTU5LCAyOCwgMTIzLCAyMTEsIDE0NiwgMjgsIAorICAgIDEyMywgMjE4LCAxODksIDI4LCAxMjMsIDIzNiwgMjQ2LCAyOCwgMTIzLCAyMTEsIDE0MywgMTkwLCAyLCAyMTksIDEwMiwgCisgICAgMTkwLCAyLCAyNDYsIDIzNSwgMTkwLCAyLCAyMjcsIDI0MiwgMTkwLCAyLCAyMDQsIDIwLCAxOTAsIDEsIDYzLCAxOTAsIDEsIAorICAgIDIzNSwgMjA2LCAyMjksIDIxMSwgMTkwLCAxLCA3NSwgMTkwLCAxLCAyMzEsIDgzLCAxOTAsIDEsIDY4LCAxOTAsIDEsIDIxOSwgCisgICAgMTY5LCAyNDYsIDIwNSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDEsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAyLCAKKyAgICAyMTYsIDE3MywgMTkwLCAxLCA3NCwgMTkwLCAxLCAyNTEsIDY0LCAxOTAsIDEsIDc4LCAxOTAsIDEsIDE3MywgMTkwLCAxLCAKKyAgICAyMzAsIDQ0LCAyMTQsIDIyNywgMTkwLCAxLCAyMzAsIDQ0LCAyMjMsIDIwNSwgMTkwLCAxLCAyMzksIDgsIDE5MCwgMSwgCisgICAgMjM5LCA5LCAyMjMsIDIwNSwgMTkwLCAxLCAyMjIsIDIwMywgMTkwLCAxLCAyNDcsIDkyLCAxOTAsIDEsIDI0NywgOTMsIAorICAgIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgxLCAxOTAsIDEsIDIyMSwgMTIsIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgyLCAKKyAgICAyMjUsIDE0NCwgMTkwLCAxLCAyMjEsIDExLCAxOTAsIDEsIDIwNywgMjQxLCAxOTAsIDEsIDIwNywgMjQyLCAyMjUsIDE0NCwgCisgICAgMTkwLCAxLCAyNDQsIDEyMCwgMTkwLCAxLCAyNDQsIDEyMSwgMjI1LCAxNDQsIDE5MCwgMSwgMjIzLCAxMTEsIDIyMywgMjA1LCAKKyAgICAxOTAsIDEsIDIxMCwgMjIsIDE5MCwgMSwgMjEwLCAyMywgMjIzLCAyMDUsIDE5MCwgMSwgMjQ0LCAyMTIsIDE5MCwgMSwgCisgICAgMjQ0LCAyMTMsIDIyNSwgMTQ0LCAxOTAsIDEsIDIwMSwgMjAxLCAxOTAsIDEsIDE4NSwgMTkwLCAxLCAyMTksIDE2OSwgMjIzLCAKKyAgICAyMDUsIDE5MCwgMSwgMjQ5LCAzMiwgMTkwLCAxLCAyNDksIDMzLCAyMjMsIDIwNSwgMTkwLCAxLCAxOTIsIDE5MCwgMSwgCisgICAgMTk4LCAxOTAsIDEsIDIxNiwgMjIwLCAxOTAsIDEsIDIxNiwgMjIxLCAyNTEsIDc0LCAxOTAsIDEsIDIyOCwgMTEzLCAxOTAsIAorICAgIDEsIDIwNCwgMTExLCAxOTAsIDEsIDIxNSwgMzcsIDIyMywgMjA1LCAxOTAsIDEsIDIxNSwgMzcsIDIyNSwgMTQ0LCAxOTAsIAorICAgIDEsIDIxNSwgMzYsIDE5MCwgMSwgMTUyLCAxOTAsIDIsIDI0NiwgMjM2LCAyMDksIDE1NSwgMTkwLCAyMiwgMiwgMjA5LCAKKyAgICAyMTQsIDE5MCwgMjIsIDIsIDIwOCwgMTY2LCAxOTAsIDIyLCAyLCAyMDMsIDIxMSwgMTkwLCAyMiwgMiwgMjAzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxOTAsIDIyLCAyLCAyMTAsIDIyNCwgMTkwLCAyMiwgMiwgMjEwLCAyMjUsIDIyNCwgMjM5LCAxOTAsIDIyLCAKKyAgICAyLCAyMDksIDIzNSwgMTkwLCAyMiwgMiwgMjQzLCAxNjMsIDIyMywgMjA0LCAxOTAsIDIyLCAyLCAyMTgsIDI0OSwgMTkwLCAKKyAgICAxMDksIDIsIDIyOSwgMTczLCAxOTAsIDEwOSwgMiwgMjE5LCA2LCAxOTAsIDEwOSwgMiwgMjQ3LCA3NywgMTkwLCAyMTksIAorICAgIDExNSwgMTkwLCA0OSwgMjE2LCA5MywgMTkwLCA1MCwgMjE2LCA5MywgMTkwLCAyMTksIDE1OCwgMjUwLCAyMjUsIDE5MCwgCisgICAgMjE5LCAxNTgsIDIyNSwgMTYyLCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyNiwgMTkwLCAyMTksIDE1OCwgMjA0LCAxNCwgMTkwLCAKKyAgICAyMTksIDE1OCwgMjE5LCAxMTYsIDE5MCwgMjE5LCAxNTgsIDIyNywgMTA2LCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyMCwgCisgICAgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTYsIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE3LCAyNTEsIDExNiwgMTkwLCAyMTksIAorICAgIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjA3LCAxNzQsIDIxOSwgMTU4LCAyMTgsIDEwNywgMTkwLCAyMTksIDExMSwgMTkwLCAxNywgCisgICAgMjAyLCA4NCwgMTkwLCAxNywgMTA1LCAxOTAsIDE3LCAxMDgsIDE5MCwgMTcsIDE0NywgMTkwLCAxNywgMTQ5LCAxOTAsIDE3LCAKKyAgICAxNzAsIDE5MCwgMTcsIDE5NSwgMTkwLCAxNywgMjEzLCAxMTEsIDE5MCwgMTcsIDE5OSwgMTkwLCAxNywgMjIyLCA2MywgCisgICAgMTkwLCAyMTksIDE1OCwgMjA4LCAyMDIsIDIwNywgMTg5LCAxOTAsIDIxOSwgMTU4LCAyMzAsIDIxMSwgNjksIDEsIDIxMywgCisgICAgNjcsIDIzOCwgMTE5LCA2OSwgMSwgMjEzLCA2NywgMjQ2LCAxOTksIDY5LCAxLCAyMTMsIDY3LCAyMzAsIDE0OSwgNjksIDEsIAorICAgIDIxMywgNjcsIDIyMSwgMjI3LCA2OSwgMSwgMjEzLCA2NywgMjQ4LCA5OCwgNjksIDIsIDIxMywgNjcsIDIxNCwgMjEzLCA2OSwgCisgICAgNjUsIDEsIDIxMywgNjcsIDIxNiwgMTM2LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgMTEsIDY5LCAxLCA0NSwgMjI4LCAKKyAgICA4NSwgMjQwLCAxMDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM5LCA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOCwgMTE5LCAKKyAgICA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTgxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTQ5LCA2OSwgMSwgNDUsIAorICAgIDIyOCwgODUsIDI0NCwgMTIwLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMTA0LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgCisgICAgMjI3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMDIsIDg0LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxMDUsIDY5LCA0NSwgMjI4LCAKKyAgICA4NSwgMTcsIDEwOCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDksIDY5LCA0NSwgCisgICAgMjI4LCA4NSwgMTcsIDE3MCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk1LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMTMsIAorICAgIDExMSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk5LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMjIsIDYzLCA2OSwgMSwgNDUsIAorICAgIDIyOCwgODUsIDIyNywgNzcsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAyMTIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAKKyAgICAxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OSwgMzIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ4LCA5OCwgMjQ2LCAxOTIsIDEsIAorICAgIDYzLCAyNDYsIDE5MiwgMSwgNzUsIDI0NiwgMTkyLCAxLCA2OCwgMjQ2LCAxOTIsIDEsIDc0LCAyNDYsIDE5MiwgMSwgMjUxLCAKKyAgICA2NCwgMjQ2LCAxOTIsIDEsIDc4LCAyNDYsIDE5MiwgMSwgMTczLCAyNDYsIDE5MiwgMSwgMjI5LCAxNDQsIDI0NiwgMTkyLCAKKyAgICAxLCAyMzksIDgsIDI0NiwgMTkyLCAxLCAyMzgsIDExOSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTEyLCAyNDYsIDE5MiwgMSwgCisgICAgMjIyLCAyMDMsIDI0NiwgMTkyLCAxLCAyNDYsIDE5OSwgMjQ2LCAxOTIsIDEsIDI0NiwgMTQ0LCAyNDYsIDE5MiwgMSwgMjMwLCAKKyAgICAxODEsIDI0NiwgMTkyLCAxLCAyMzAsIDE0OSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTAyLCAyNDYsIDE5MiwgMSwgMjIyLCAxMDQsIAorICAgIDI0NiwgMTkyLCAxLCAyMjIsIDEwMywgMjQ2LCAxOTIsIDEsIDIxMCwgMjIsIDI0NiwgMTkyLCAxLCAyMDksIDEwOCwgMjQ2LCAKKyAgICAxOTIsIDEsIDI0NCwgMjEyLCAyNDYsIDE5MiwgMSwgMjQ0LCAxLCAyNDYsIDE5MiwgMSwgMjIxLCA1MywgMjQ2LCAxOTIsIDEsIAorICAgIDIwMSwgMjAxLCAyNDYsIDE5MiwgMSwgMjQ0LCAxMjAsIDI0NiwgMTkyLCAxLCAxODUsIDI0NiwgMTkyLCAxLCAyMTgsIDEyLCAKKyAgICAyNDYsIDE5MiwgMSwgMjE4LCAyMDgsIDI0NiwgMTkyLCAxLCAyNDksIDMyLCAyNDYsIDE5MiwgMSwgMjQ4LCA5OCwgMjQ2LCAKKyAgICAxOTIsIDEsIDIyMywgMjM4LCAyNDYsIDE5MiwgMSwgMTkyLCAyNDYsIDE5MiwgMSwgMjQ4LCAxOTgsIDI0NiwgMTkyLCAxLCAKKyAgICAxOTgsIDI0NiwgMTkyLCAxLCAyMTYsIDIyMCwgMjQ2LCAxOTIsIDEsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMSwgMjA2LCA4NiwgCisgICAgMjQ2LCAxOTIsIDEsIDIxMSwgMTY0LCAyNDYsIDE5MiwgMSwgMjE1LCAzNiwgMjQ2LCAxOTIsIDEsIDE1MiwgMjQ2LCAxOTIsIAorICAgIDIyLCAyLCAyNTIsIDI1LCAyNDYsIDE5MiwgMjIsIDIsIDc1LCAyNDYsIDE5MiwgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkyLCAKKyAgICAyMiwgMiwgMjQxLCAxNDUsIDI0NiwgMTkyLCAyMiwgMiwgNjgsIDI0NiwgMTkyLCAyMiwgMiwgMjIwLCA3MywgMjQ2LCAxOTIsIAorICAgIDIyLCAyLCA3OCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTEsIDY0LCAyNDYsIDE5MiwgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkyLCAKKyAgICAyMiwgMiwgMjA3LCAyNCwgMjQ2LCAxOTIsIDEwOSwgMiwgMTk4LCAyNDYsIDE5MiwgMTA5LCAyLCAyMTYsIDIyMCwgMjQ2LCAKKyAgICAxOTIsIDEwOSwgMiwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxMDksIDIsIDIwNCwgMTExLCAyNDYsIDE5MiwgMSwgNDYsIDIzMCwgCisgICAgNTQsIDI0NiwgMTkyLCAxLCA0NiwgMjM5LCA3NSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEwOSwgCisgICAgMiwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMSwgNDYsIDI0NiwgMjAwLCAyNDYsIDE5MiwgMSwgNDYsIDIxMCwgNjksIAorICAgIDI0NiwgMTkyLCAxLCA0NiwgMjIzLCAxNjMsIDI0NiwgMTkyLCAxLCA0NiwgMjE5LCAxODQsIDI0NiwgMTkyLCAxLCA0NiwgCisgICAgMjAzLCAxMjQsIDI0NiwgMTkyLCAxLCA0NiwgMTQ2LCAyNDYsIDE5MiwgMSwgNDYsIDE1OSwgMjQ2LCAxOTIsIDEsIDQ2LCAKKyAgICAyMTEsIDE2NywgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIyNiwgMTg1LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjM3LCAxNzEsIAorICAgIDI0NiwgMTkyLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTIsIDE3LCAxMDUsIDI0NiwgMTkyLCAxNywgMTA4LCAyNDYsIDE5MiwgCisgICAgMTcsIDE0NywgMjQ2LCAxOTIsIDE3LCAxNDksIDI0NiwgMTkyLCAxNywgMTcwLCAyNDYsIDE5MiwgMTcsIDE5NSwgMjQ2LCAKKyAgICAxOTIsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTIsIDE3LCAxOTksIDI0NiwgMTkyLCAxNywgMjIyLCA2MywgMjQ2LCAxOTIsIAorICAgIDIxNywgMTc5LCAyMTEsIDIwMSwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCA1MiwgCisgICAgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjA4LCA3MCwgMjQ0LCAxNjYsIDY5LCAxLCAyMjksIDEzNywgMjM5LCA4LCAKKyAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NywgOTIsIDY5LCAxLCAyMjksIDEzNywgMjQ2LCAxOTksIDY5LCAxLCAyMjksIDEzNywgCisgICAgMjMwLCAxODEsIDY5LCAxLCAyMjksIDEzNywgMjMwLCAxNDksIDY5LCAxLCAyMjksIDEzNywgMjIxLCAxMSwgNjksIDEsIAorICAgIDIyOSwgMTM3LCAyMDcsIDI0MSwgNjksIDEsIDIyOSwgMTM3LCAyMDcsIDIyOSwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEyMCwgCisgICAgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEwNCwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEsIDY5LCAxLCAyMjksIDEzNywgMjAxLCAKKyAgICAyMDEsIDY5LCAxLCAyMjksIDEzNywgMjE1LCAzNiwgNjksIDEsIDIyOSwgMTM3LCAxNTIsIDY5LCAxLCAyMjksIDEzNywgCisgICAgMjM3LCAxMiwgNjksIDEsIDIyOSwgMTM3LCAyNDAsIDEwOCwgNjksIDY1LCAxLCAyMjksIDEzNywgMjE2LCAxMzYsIDY5LCAxLCAKKyAgICAyMjksIDEzNywgMjAzLCAxODIsIDY5LCAxLCAyMjksIDEzNywgMjAyLCAxMTYsIDY5LCAxLCAyMjksIDEzNywgMjE2LCAyMjAsIAorICAgIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjIwLCA5NCwgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMTcsIDc4LCA2OSwgMjI3LCAKKyAgICAzNiwgMjI5LCAxMzcsIDIzNiwgMTkxLCA2OSwgMTYsIDI1MSwgNTEsIDI0MCwgMjExLCA2OSwgMTYsIDI1MSwgNTEsIDEwNSwgCisgICAgNjksIDE2LCAyNTEsIDUxLCAxMDgsIDY5LCAxLCAyNTEsIDUxLCAyMTYsIDIyMCwgNjksIDIsIDIxOSwgOTgsIDIyOSwgMjM3LCAKKyAgICAyMDgsIDE2MSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1OSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1NiwgNjksIAorICAgIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjQ2LCAxOTksIDY5LCAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDIxMywgOTAsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAKKyAgICAxLCAxMjQsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKKyAgICAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM4LCAzOSwgCisgICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOCwgMzksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjIsIDEyOCwgNDUsIDIwNSwgCisgICAgMjIwLCAxLCAxMzgsIDIyMiwgMTI4LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgCisgICAgMTM4LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NiwgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ2LCAKKyAgICAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTIsIDEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjEyLCAxMywgNDUsIAorICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgCisgICAgMSwgMTI0LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCisgICAgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA5LCA0NywgNDUsIDIwNSwgCisgICAgMjIwLCAxLCAxMzgsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAKKyAgICAxMzgsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ4LCAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0OCwgCisgICAgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDY5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCA2OSwgNDUsIAorICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgCisgICAgMSwgMTI0LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCisgICAgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDIsIDI0NywgCisgICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwMiwgMjQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE1LCAyMjcsIDQ1LCAyMDUsIAorICAgIDIyMCwgMSwgMTM4LCAyMTUsIDIyNywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgCisgICAgMTM4LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA1LCAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDUsIAorICAgIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzNiwgMTM2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM2LCAxMzYsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMSwgMTI0LCA3OCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAKKyAgICAyMzAsIDAsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MiwgMjUsIDQ1LCAyMDUsIDIyMCwgMjIsIDc1LCA0NSwgMjA1LCAyMjAsIAorICAgIDIyLCAyMDcsIDI0LCA0NSwgMjA1LCAyMjAsIDIyLCA2OCwgNDUsIDIwNSwgMjIwLCAyMiwgNzQsIDQ1LCAyMDUsIDIyMCwgCisgICAgMjIsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAyMjksIDExOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjM1LCAxNzEsIDQ1LCAKKyAgICAyMDUsIDIyMCwgMjIsIDIwNywgMjMsIDQ1LCAyMDUsIDIyMCwgMjIsIDIwNywgMzksIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgCisgICAgMzIsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAyMzEsIDQ1LCAyMDUsIDIyMCwgCisgICAgMjIsIDI1MCwgMjQ3LCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCA0NSwgMjA1LCAyMjAsIDE0MywgCisgICAgMjI1LCAxNDEsIDIyMSwgNTIsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAKKyAgICAxNDMsIDIyNSwgMTQxLCAyMTEsIDI1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjI5LCA5LCA0NSwgMjA1LCAyMjAsIDE2LCAyMjEsIAorICAgIDUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMTQsIDI1MywgNDUsIDIwNSwgMjIwLCAxNiwgMjM2LCAxMzcsIDIzNiwgMTMxLCA0NSwgCisgICAgMjA1LCAyMjAsIDE2LCAyMjksIDE5LCAyMjksIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc0LCAyMjUsIDIsIDIyNSwgNjEsIAorICAgIDEsIDc4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NiwgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMTEsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMSwgMjA3LCAyNDEsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA3LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjQ0LCAxMjAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ0LCAxMDQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAyMjcsIAorICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjEzLCA5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTEsIDE2NCwgMjI1LCAyLCAyMjUsIAorICAgIDYxLCAyMiwgMiwgMjMxLCA4MywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNSwgMiwgMjI1LCA2MSwgCisgICAgMjIsIDIsIDI1MSwgMjQ1LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDM0LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAKKyAgICAyNTEsIDIzOCwgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OSwgMjI1LCAyLCAyMjUsIDYxLCAyNTEsIDcwLCAyMjksIDEwNywgCisgICAgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDIwOSwgMjI1LCAyLCAyMjUsIDYxLCA0LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIAorICAgIDYxLCAyMDMsIDIzOCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNSwgMTk5LCAyMjUsIDIsIDIyNSwgCisgICAgNjEsIDIwNSwgMjA0LCAzMywgNCwgMjA3LCAyMjIsIDMzLCA0LCAyMDcsIDIyNSwgMzMsIDQsIDIwNywgMjI4LCAzMywgNCwgCisgICAgMjA3LCAyMjYsIDMzLCA0LCAyMDcsIDIyNywgMzMsIDQsIDIwNywgMjI0LCAzMywgNCwgMjQ0LCA5OCwgMzMsIDQsIDI0NCwgCisgICAgMTAwLCAzMywgNCwgMjQ0LCAxMDMsIDMzLCA0LCAyNDQsIDEwMSwgMzMsIDQsIDI0NCwgMTAyLCAzMywgNCwgMjQ0LCA5OSwgCisgICAgMzMsIDQsIDI0MSwgMjQyLCAzMywgNCwgMjQxLCAyNDYsIDMzLCA0LCAyNDEsIDI1NCwgMzMsIDQsIDI0MSwgMjUxLCAzMywgCisgICAgNCwgMjQxLCAyNTIsIDMzLCA0LCAyNDEsIDI0MywgMzMsIDQsIDI0NiwgMjUyLCAzMywgNCwgMjQ2LCAyNDYsIDMzLCA0LCAKKyAgICAyNDYsIDI0OCwgMzMsIDQsIDI0NiwgMjUxLCAzMywgNCwgMjQ2LCAyNDksIDMzLCA0LCAyNDYsIDI1MCwgMzMsIDQsIDI0NiwgCisgICAgMjQ3LCAzMywgNCwgMjQ4LCAxOTgsIDMzLCA0LCAyNDgsIDE3NywgMzMsIDQsIDI0OCwgMTg5LCAzMywgNCwgMjQ4LCAxOTcsIAorICAgIDMzLCA0LCAyNDgsIDE5MiwgMzMsIDQsIDI0OCwgMTkzLCAzMywgNCwgMjQ4LCAxODEsIDgsIDUsIDEsIDI0OCwgMjI1LCAKKyAgICAyNTEsIDIsIDgsIDUsIDEsIDM0LCAyMTYsIDcxLCA4LCA1LCAxLCAyNDgsIDM5LCA3NCwgOCwgNSwgMSwgMjQ4LCAyMjUsIAorICAgIDc0LCA4LCA1LCAxLCAxODgsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMjcsIDE4NywgMjQwLCAxNzQsIDgsIDUsIDEsIDEzMiwgCisgICAgMjM5LCA3NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgOCwgCisgICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMTUsIAorICAgIDI1MiwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCAxMjYsIDgsIAorICAgIDUsIDEsIDI0MSwgNzksIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyNDgsIDM5LCA3OCwgOCwgNSwgMSwgMjQ4LCAzOSwgMTU4LCAKKyAgICAzLCA5NSwgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjIwLCA3MywgOCwgNSwgMSwgCisgICAgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCA3NCwgMywgMjM2LCAxMDYsIDk1LCA4LCAKKyAgICA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNSwgMywgOTUsIDgsIDUsIAorICAgIDEsIDIxMSwgNjYsIDE0NiwgOCwgMSwgNSwgNiwgMjE3LCAxLCAzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgCisgICAgMjA0LCAzLCAyMzcsIDEwMiwgOCwgNSwgMSwgNTIsIDE0NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgCisgICAgMSwgNTIsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDEzMiwgMTQ2LCA4LCA1LCAxLCAxMzIsIDIxNywgMSwgMywgCisgICAgMjE1LCAyNTIsIDgsIDUsIDEsIDI0OCwgMjE2LCAyNDEsIDcsIDgsIDUsIDEsIDEwNiwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIAorICAgIDIxMCwgOCwgNSwgMSwgMTA2LCAyNDgsIDIzMSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNywgCisgICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNywgMTcsIDgsIDUsIDEsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjQ2LCAxNDIsIAorICAgIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNDksIAorICAgIDIxMywgMTI1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAKKyAgICAxNjMsIDQ5LCAyMjcsIDIxMCwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAyNSwgMTI0LCA1MCwgCisgICAgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMywgMjEzLCAxMjUsIDgsIDUsIDEsIAorICAgIDIwMywgMTI1LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA2NSwgMjQ3LCAyMTUsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgCisgICAgNjUsIDEsIDUsIDIzNywgMzEsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDY1LCAxLCAKKyAgICA1LCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgNjUsIDEsIDUsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjE1LCAKKyAgICAxMSwgMjAzLCA2NiwgOCwgNSwgMSwgMjMwLCAyMjgsIDc0LCA4LCA1LCAxLCAxNzEsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNiwgCisgICAgMjI4LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjUxLCAyLCAzMCwgMSwgNSwgNiwgMjIwLCAzNiwgOTAsIDUsIDEsIDYzLCA5MCwgCisgICAgNSwgMSwgNzQsIDkwLCA1LCAxLCA3NSwgOTAsIDUsIDEsIDc4LCA5MCwgNSwgMSwgNjgsIDkwLCA1LCAxLCAyMDYsIDE2NCwgCisgICAgOTAsIDUsIDEsIDIzOSwgOCwgOTAsIDUsIDEsIDE3MywgOTAsIDUsIDEsIDIzOCwgMTkwLCA5MCwgNSwgMSwgMjM4LCA4MSwgCisgICAgOTAsIDUsIDEsIDIzOCwgMzksIDkwLCA1LCAxLCAyMzcsIDIzMCwgOTAsIDUsIDEsIDIzNywgMTkyLCA5MCwgNSwgMSwgMTUyLCAKKyAgICA5MCwgNSwgMSwgMjM3LCA2NywgOTAsIDUsIDEsIDIzNywgMywgOTAsIDUsIDEsIDIzNiwgMTM2LCA5MCwgNSwgMSwgMjM2LCAKKyAgICAyNiwgOTAsIDUsIDEsIDIzNSwgMjU1LCA5MCwgNSwgMSwgMjI4LCAxMTMsIDkwLCA1LCAxLCAyMjcsIDIzNCwgOTAsIDUsIDEsIAorICAgIDIyNywgMTQ4LCA5MCwgNSwgMSwgMjI3LCA0OSwgOTAsIDUsIDEsIDIyNiwgMjM5LCA5MCwgNSwgMSwgMjI2LCAyMDgsIDkwLCAKKyAgICA1LCAxLCAxOTIsIDkwLCA1LCAxLCAyMjUsIDIwLCA5MCwgNSwgMSwgMjI0LCAxNTUsIDkwLCA1LCAxLCAyMjQsIDgyLCA5MCwgCisgICAgNSwgMSwgMjIzLCAyNDYsIDkwLCA1LCAxLCAyMDEsIDIwMSwgOTAsIDUsIDEsIDIzNiwgMTYwLCA5MCwgNSwgMSwgMjIzLCAKKyAgICA5MywgOTAsIDUsIDEsIDIyMiwgMjQwLCA5MCwgNSwgMSwgMjIyLCAxMDAsIDkwLCA1LCAxLCAyMjEsIDE5MSwgOTAsIDUsIDEsIAorICAgIDIyMSwgODQsIDkwLCA1LCAxLCAyMjEsIDIyLCA5MCwgNSwgMSwgMjE3LCA2NCwgOTAsIDUsIDEsIDIxNywgNTAsIDkwLCA1LCAKKyAgICAxLCAyMTcsIDQzLCA5MCwgNSwgMSwgMjE3LCAzNCwgOTAsIDUsIDEsIDIxNywgMjMsIDkwLCA1LCAxLCAyMTcsIDIxLCA5MCwgCisgICAgNSwgMSwgMjE1LCAzNiwgOTAsIDUsIDEsIDE5NCwgOTAsIDUsIDEsIDIxNCwgMTc3LCA5MCwgNSwgMSwgMjEyLCAxNjIsIDkwLCAKKyAgICA1LCAxLCAyMTIsIDEzLCA5MCwgNSwgMSwgMjExLCAxMCwgOTAsIDUsIDEsIDIxMCwgMTc3LCA5MCwgNSwgMSwgMjQ0LCAyMTIsIAorICAgIDkwLCA1LCAxLCAyMTAsIDIyLCA5MCwgNSwgMSwgMjQ0LCA3NSwgOTAsIDUsIDEsIDIwOSwgMTg3LCA5MCwgNSwgMSwgMjQzLCAKKyAgICAyMzMsIDkwLCA1LCAxLCAyMDksIDIsIDkwLCA1LCAxLCAyNDMsIDExMywgOTAsIDUsIDEsIDI0MiwgNDIsIDkwLCA1LCAxLCAKKyAgICAyNDIsIDEzLCA5MCwgNSwgMSwgMjQzLCAxMjQsIDkwLCA1LCAxLCAyMDgsIDE5MCwgOTAsIDUsIDEsIDIwOCwgMTg5LCA5MCwgCisgICAgNSwgMSwgMjA4LCAxNzgsIDkwLCA1LCAxLCAyMDgsIDE3NywgOTAsIDUsIDEsIDIwOCwgMTc2LCA5MCwgNSwgMSwgMjA4LCAKKyAgICAxNzUsIDkwLCA1LCAxLCAyMDgsIDIwLCA5MCwgNSwgMSwgMjA4LCAxNCwgOTAsIDUsIDEsIDIwNywgMjU1LCA5MCwgNSwgMSwgCisgICAgMjA3LCAyNTMsIDkwLCA1LCAxLCAyMDcsIDI0OSwgOTAsIDUsIDEsIDIwNywgMjQ4LCA5MCwgNSwgMSwgMjA0LCAxMTEsIDkwLCAKKyAgICA1LCAxLCAyMDQsIDYyLCA5MCwgNSwgMSwgMjA0LCAzMCwgOTAsIDUsIDEsIDIwNCwgMCwgOTAsIDUsIDEsIDIwMywgMjE3LCAKKyAgICA5MCwgNSwgMSwgMjAzLCAyMDQsIDkwLCA1LCAxLCAxOTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNiwgMjI1LCAyLCAKKyAgICAyMjUsIDYxLCAxLCAyMTQsIDI1MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjgsIDg2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDIyNCwgOTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMTg1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMSwgMjAxLCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDI0NiwgMTM0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDIyOSwgMTEwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOSwgMzksIDIyNSwgCisgICAgMiwgMjI1LCA2MSwgMSwgMjA0LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAzLCA3NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKKyAgICAyMzYsIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNiwgMjU1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc1LCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDIxOCwgMjAyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI1MCwgNDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCisgICAgMjM4LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTYsIDE5NywgMjI1LCAKKyAgICAyLCAyMjUsIDYxLCAxLCAyNDksIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTMzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIAorICAgIDI0MywgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzOCwgODgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQzLCAyMzUsIDIyNSwgCisgICAgMiwgMjI1LCA2MSwgMSwgMjQ4LCA5NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE3LCAyMjcsIDE5LCAyMjUsIDIsIAorICAgIDIyNSwgNjEsIDEsIDIyOCwgODcsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI0LCA5NCwgMjI3LCAxOSwgMjI1LCAKKyAgICAyLCAyMjUsIDYxLCAxLCAyMTksIDE2OSwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjMsIDExMSwgMjI3LCAxOSwgCisgICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIzMCwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOSwgMjI3LCAKKyAgICAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzUsIDIwNiwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjIwLCAKKyAgICAzMCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjMxLCA0NywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAyMzAsIAorICAgIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwMywgNDEsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIxMSwgMjQyLCAyMjUsIAorICAgIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDI1MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjQ2LCAxNTcsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMjIsIDIsIDIyMSwgMzcsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTgsIDIyNSwgMiwgMjI1LCA2MSwgMjI2LCAKKyAgICAyMjMsIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMTQ5LCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCisgICAgMjAyLCA4NCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDgsIDIyNSwgMiwgMjI1LCAKKyAgICA2MSwgMTcsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTQ5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNzAsIDIyNSwgMiwgCisgICAgMjI1LCA2MSwgMTcsIDE5NSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjEzLCAxMTEsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAorICAgIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjIyLCA2MywgMjgsIDE3NiwgMjIwLCAxNzQsIDI4LCAxNzYsIDIyMCwgMTc5LCAKKyAgICAyOCwgMTc2LCAyMDIsIDI0NiwgMjgsIDE3NiwgMjAyLCAyNDUsIDI4LCAxNzYsIDIwMiwgMjQ0LCAyOCwgMTc2LCAyMDcsIAorICAgIDg5LCAyOCwgMTc2LCAyMDcsIDkzLCAyOCwgMTc2LCAyMDIsIDIxMSwgMjgsIDE3NiwgMjAyLCAyMDcsIDI4LCAxNzYsIDI0MCwgCisgICAgMjM3LCAyOCwgMTc2LCAyNDAsIDIzNSwgMjgsIDE3NiwgMjQwLCAyMzYsIDI4LCAxNzYsIDI0MCwgMjMzLCAyOCwgMTc2LCAKKyAgICAyMzUsIDE5NiwgMjgsIDE3NiwgMjM1LCAxOTUsIDI4LCAxNzYsIDIzNSwgMTkzLCAyOCwgMTc2LCAyMzUsIDE5NCwgMjgsIAorICAgIDE3NiwgMjM1LCAxOTksIDI4LCAxNzYsIDIzNSwgMTkyLCAyOCwgMTc2LCAyMzUsIDE5MSwgMjgsIDE3NiwgMjM1LCAyMDEsIAorICAgIDI4LCAxNzYsIDI1MCwgMTM2LCAyOCwgMTc2LCAyNTAsIDEzNSwgMjgsIDEwNywgMjIyLCA4NiwgMjgsIDEwNywgMjIyLCA5MiwgCisgICAgMjgsIDEwNywgMjExLCAxNDUsIDI4LCAxMDcsIDIxMSwgMTQ0LCAyOCwgMTA3LCAyMDgsIDIzNSwgMjgsIDEwNywgMjA4LCAKKyAgICAyMzMsIDI4LCAxMDcsIDIwOCwgMjMyLCAyOCwgMTA3LCAyMDgsIDIzOCwgMjgsIDEwNywgMjA4LCAyMzksIDI4LCAxMDcsIAorICAgIDIwOCwgMjMxLCAyOCwgMTA3LCAyMTYsIDI2LCAyOCwgMTA3LCAyMTYsIDQxLCAyOCwgMTA3LCAyMTEsIDE1MSwgMjgsIDEwNywgCisgICAgMjE2LCAzOCwgMjgsIDEwNywgMjE2LCAyOCwgMjgsIDEwNywgMjE2LCAzMCwgMjgsIDEwNywgMjE2LCAxNywgMjgsIDEwNywgCisgICAgMjE2LCAxOCwgMjgsIDEwNywgMjI5LCAyNDMsIDI4LCAxMDcsIDIyNCwgMTM2LCAyOCwgMTA3LCAyMjQsIDEzMCwgMjgsIAorICAgIDEwNywgMjExLCAxNTUsIDI4LCAxMDcsIDIyNCwgMTMzLCAyOCwgMTA3LCAyMjQsIDEzOSwgMjgsIDEwNywgMjE4LCAxMzQsIAorICAgIDI4LCAxMDcsIDIxOCwgMTQzLCAyOCwgMTA3LCAyMTgsIDE0NywgMjgsIDEwNywgMjExLCAxNTMsIDI4LCAxMDcsIDIxOCwgCisgICAgMTM3LCAyOCwgMTA3LCAyMTgsIDE1MSwgMjgsIDEwNywgMjE4LCAxNTIsIDI4LCAxMDcsIDIxMiwgMTAzLCAyOCwgMTA3LCAKKyAgICAyMTIsIDEwNiwgMjgsIDEwNywgMjExLCAxNDksIDI4LCAxMDcsIDIxMSwgMTQ3LCAyOCwgMTA3LCAyMTIsIDEwMSwgMjgsIAorICAgIDEwNywgMjEyLCAxMDksIDI4LCAxMDcsIDIxMiwgMTEwLCAyOCwgMTA3LCAyMTIsIDk1LCAyOCwgMTA3LCAyMTIsIDEwOCwgCisgICAgMjgsIDEwNywgMjE5LCAxMDUsIDI4LCAxMDcsIDIxOSwgMTA2LCAyOCwgMTA3LCAyMDMsIDI3LCAyOCwgMTA3LCAyMDMsIDI4LCAKKyAgICAyOCwgMTA3LCAyNDYsIDcyLCAyOCwgMTA3LCAyNDYsIDcxLCAyOCwgMTA3LCAyMTEsIDE2MCwgMjgsIDEwNywgMjE4LCAxODcsIAorICAgIDI4LCAxMDcsIDIxOCwgMTg2LCAxMiwgMTUsIDIzMywgNzQsIDEyLCAxNSwgMjMzLCA3MywgMTIsIDE1LCAyMzMsIDcyLCAxMiwgCisgICAgMTUsIDIzMywgNzEsIDEyLCAxNSwgMjMzLCA3MCwgMTIsIDE1LCAyMzMsIDY5LCAxMiwgMTUsIDIzMywgNjgsIDEyLCAxNSwgCisgICAgMjMzLCA2NywgMTIsIDE1LCAyMzMsIDY2LCAxMiwgMTUsIDIzMywgNjUsIDEyLCAxNSwgMjMzLCA2NCwgMTIsIDE1LCAyMzMsIAorICAgIDYzLCAxMiwgMTUsIDIzMywgNjIsIDEyLCAxNSwgMjMzLCA2MSwgMTIsIDE1LCAyMzMsIDYwLCAxMiwgMTUsIDIzMywgNTksIAorICAgIDEyLCAxNSwgMjMzLCA1OCwgMTIsIDE1LCAyMzMsIDU3LCAxMiwgMTUsIDIzMywgNTYsIDEyLCAxNSwgMjMzLCA1NSwgMTIsIAorICAgIDE1LCAyMzMsIDU0LCAxMiwgMTUsIDIzMywgNTMsIDEyLCAxNSwgMjMzLCA1MiwgMTIsIDE1LCAyMzMsIDUxLCAxMiwgMTUsIAorICAgIDIzMywgNTAsIDEyLCAxNSwgMjMzLCA0OSwgMTIsIDE1LCAyMzMsIDQ4LCAxMiwgMTUsIDIzMywgNDcsIDEyLCAxNSwgMjMzLCAKKyAgICA0NiwgMTIsIDE1LCAyMzMsIDQ1LCAxMiwgMTUsIDIzMywgNDQsIDEyLCAxNSwgMjMzLCA0MywgMTIsIDE1LCAyMzMsIDQyLCAKKyAgICAxMiwgMTUsIDIzMywgNDEsIDEyLCAxNSwgMjMzLCA0MCwgMTIsIDE1LCAyMzMsIDM5LCAxMiwgMTUsIDIzMywgMzgsIDEyLCAKKyAgICAxNSwgMjMzLCAzNywgMTIsIDE1LCAyMzMsIDM2LCAxMiwgMTUsIDIzMywgMzUsIDEyLCAxNSwgMjMzLCAzNCwgMTIsIDE1LCAKKyAgICAyMzMsIDMzLCAxMiwgMTUsIDIzMywgMzIsIDEyLCAxNSwgMjMzLCAzMSwgMTIsIDE1LCAyMzMsIDMwLCAxMiwgMTUsIDIzMywgCisgICAgMjksIDEyLCAxNSwgMjMzLCAyOCwgMTIsIDE1LCAyMzMsIDI3LCAxMiwgMTUsIDIzMywgMjYsIDEyLCAxNSwgMjMzLCAyNSwgCisgICAgMTIsIDE1LCAyMzMsIDI0LCAxMiwgMTUsIDIzMywgMjMsIDEyLCAxNSwgMjMzLCAyMiwgMTIsIDE1LCAyMzMsIDIxLCAxMiwgCisgICAgMTUsIDIzMywgMjAsIDEyLCAxNSwgMjMzLCAxOSwgMTIsIDE1LCAyMzMsIDE4LCAxMiwgMTUsIDIzMywgMTcsIDEyLCAxNSwgCisgICAgMjMzLCAxNiwgMTIsIDE1LCAyMzMsIDE1LCAxMiwgMTUsIDIzMywgMTQsIDEyLCAxNSwgMjMzLCAxMywgMTIsIDE1LCAyMzMsIAorICAgIDEyLCAxMiwgMTUsIDIzMywgMTEsIDEyLCAxNSwgMjMzLCAxMCwgMTIsIDE1LCAyMzMsIDksIDEyLCAxNSwgMjMzLCA4LCAxMiwgCisgICAgMTUsIDIzMywgNywgMTIsIDE1LCAyMzMsIDYsIDEyLCAxNSwgMjMzLCA1LCAxMiwgMTUsIDIzMywgNCwgMTIsIDE1LCAyMzMsIAorICAgIDMsIDEyLCAxNSwgMjMzLCAyLCAxMiwgMTUsIDIzMywgMSwgMTIsIDE1LCAyMzMsIDAsIDEyLCAxNSwgMjMyLCAyNTUsIDEyLCAKKyAgICAxNSwgMjMyLCAyNTQsIDEyLCAxNSwgMjMyLCAyNTMsIDEyLCAxNSwgMjMyLCAyNTIsIDEyLCAxNSwgMjMyLCAyNTEsIDEyLCAKKyAgICAxNSwgMjMyLCAyNTAsIDEyLCAxNSwgMjMyLCAyNDksIDEyLCAxNSwgMjMyLCAyNDgsIDEyLCAxNSwgMjMyLCAyNDcsIDEyLCAKKyAgICAxNSwgMjMyLCAyNDYsIDEyLCAxNSwgMjMyLCAyNDUsIDEyLCAxNSwgMjMyLCAyNDQsIDEyLCAxNSwgMjMyLCAyNDMsIDEyLCAKKyAgICAxNSwgMjMyLCAyNDIsIDEyLCAxNSwgMjMyLCAyNDEsIDEyLCAxNSwgMjMyLCAyNDAsIDEyLCAxNSwgMjMyLCAyMzksIDEyLCAKKyAgICAxNSwgMjMyLCAyMzgsIDEyLCAxNSwgMjMyLCAyMzcsIDEyLCAxNSwgMjMyLCAyMzYsIDEyLCAxNSwgMjMyLCAyMzUsIDEyLCAKKyAgICAxNSwgMjMyLCAyMzQsIDEyLCAxNSwgMjMyLCAyMzMsIDEyLCAxNSwgMjMyLCAyMzIsIDEyLCAxNSwgMjMyLCAyMzEsIDEyLCAKKyAgICAxNSwgMjMyLCAyMzAsIDEyLCAxNSwgMjMyLCAyMjksIDEyLCAxNSwgMjMyLCAyMjgsIDEyLCAxNSwgMjMyLCAyMjcsIDEyLCAKKyAgICAxNSwgMjMyLCAyMjYsIDEyLCAxNSwgMjMyLCAyMjUsIDEyLCAxNSwgMjMyLCAyMjQsIDEyLCAxNSwgMjMyLCAyMjMsIDEyLCAKKyAgICAxNSwgMjMyLCAyMjIsIDEyLCAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAKKyAgICAxNSwgMjMyLCAyMTgsIDEyLCAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTQsIDEyLCAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTAsIDEyLCAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDYsIDEyLCAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDIsIDEyLCAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAKKyAgICAxNSwgMjMyLCAxOTgsIDEyLCAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTQsIDEyLCAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTAsIDEyLCAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAKKyAgICAxNSwgMjMyLCAxODYsIDEyLCAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAKKyAgICAxNSwgMjMyLCAxODIsIDEyLCAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAKKyAgICAxNSwgMjMyLCAxNzgsIDEyLCAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzQsIDEyLCAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzAsIDEyLCAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjYsIDEyLCAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjIsIDEyLCAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAKKyAgICAxNSwgMjMyLCAxNTgsIDEyLCAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTQsIDEyLCAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTAsIDEyLCAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDYsIDEyLCAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDIsIDEyLCAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAKKyAgICAxNSwgMjMyLCAxMzgsIDEyLCAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzQsIDEyLCAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzAsIDEyLCAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjYsIDEyLCAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjIsIDEyLCAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAKKyAgICAxNSwgMjMyLCAxMTgsIDEyLCAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTQsIDEyLCAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTAsIDEyLCAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDYsIDEyLCAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDIsIDEyLCAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIAorICAgIDE1LCAyMzIsIDk4LCAxMiwgMTUsIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIAorICAgIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCAKKyAgICA5MCwgMTIsIDE1LCAyMzIsIDg5LCAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAKKyAgICAxMiwgMTUsIDIzMiwgODUsIDEyLCAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAKKyAgICAxNSwgMjMyLCA4MSwgMTIsIDE1LCAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAKKyAgICAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgCisgICAgNzMsIDEyLCAxNSwgMjMyLCA3MiwgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgCisgICAgMTIsIDE1LCAyMzIsIDY4LCAxMiwgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgCisgICAgMTUsIDIzMiwgNjQsIDEyLCAxNSwgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgCisgICAgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIAorICAgIDU2LCAxMiwgMTUsIDIzMiwgNTUsIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIAorICAgIDEyLCAxNSwgMjMyLCA1MSwgMTIsIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIAorICAgIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIAorICAgIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAKKyAgICAzOSwgMTIsIDE1LCAyMzIsIDM4LCAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAKKyAgICAxMiwgMTUsIDIzMiwgMzQsIDEyLCAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAKKyAgICAxNSwgMjMyLCAzMCwgMTIsIDE1LCAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAKKyAgICAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgCisgICAgMjIsIDEyLCAxNSwgMjMyLCAyMSwgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgCisgICAgMTIsIDE1LCAyMzIsIDE3LCAxMiwgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgCisgICAgMTUsIDIzMiwgMTMsIDEyLCAxNSwgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgCisgICAgMjMyLCA5LCAxMiwgMTUsIDIzMiwgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgCisgICAgMTIsIDE1LCAyMzIsIDQsIDEyLCAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgCisgICAgMjMyLCAwLCAxMiwgMTUsIDIzMSwgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIAorICAgIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIAorICAgIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIAorICAgIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIAorICAgIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIAorICAgIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIAorICAgIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIAorICAgIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIAorICAgIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIAorICAgIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIAorICAgIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIAorICAgIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIAorICAgIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIAorICAgIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIAorICAgIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIAorICAgIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIAorICAgIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIAorICAgIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIAorICAgIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIAorICAgIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIAorICAgIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIAorICAgIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIAorICAgIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIAorICAgIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIAorICAgIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIAorICAgIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIAorICAgIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIAorICAgIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIAorICAgIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIAorICAgIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIAorICAgIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIAorICAgIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIAorICAgIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIAorICAgIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIAorICAgIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIAorICAgIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgMTE1LCA4LCA1LCAzMiwgMjQwLCAzMCwgOCwgNSwgMzIsIDI0MCwgMjYsIDgsIDUsIAorICAgIDMyLCAyMzksIDIyOCwgOCwgNSwgMzIsIDI0MCwgMjksIDgsIDUsIDMyLCAyNDAsIDI4LCA4LCA1LCAzMiwgMTYzLCAyMTUsIAorICAgIDk0LCAyMTAsIDY5LCA4LCA1LCAzMiwgMjExLCAxMDgsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMjEsIDE1MiwgMTc4LCA1LCAKKyAgICAzMiwgMjI0LCAyNDEsIDI0MSwgMTY3LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjMxLCAxOSwgMTc4LCA1LCAzMiwgMjA1LCAKKyAgICAyMzUsIDIyMSwgMTUyLCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjAzLCAxNzQsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDIzNiwgCisgICAgMjMyLCAxMTAsIDIxOCwgNjMsIDIzMCwgODEsIDIwNiwgNjcsIDExMCwgMzIsIDIwMywgOSwgMjAyLCAyMzcsIDIwMiwgMjM3LCAKKyAgICAyMTksIDU0LCAxMTAsIDEsIDI1MCwgMjUwLCAyNTAsIDMsIDExMCwgMSwgMjA0LCAyNywgMjUxLCAzMCwgMTEwLCAxLCAyMDQsIAorICAgIDI3LCAyNDQsIDE3OCwgMTEwLCAxLCAyMDQsIDI3LCAyMzcsIDY3LCAxMTAsIDEsIDIwNCwgMjcsIDIzMCwgMjIsIDExMCwgMSwgCisgICAgMjA0LCAyNywgMjI4LCAyMCwgMTEwLCAxLCAyMDQsIDI3LCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjA0LCAyNywgMjE2LCAKKyAgICA5MSwgMTEwLCAxLCAyMDQsIDI3LCAyMDksIDIwMywgMTEwLCAxLCAyNTAsIDI1MCwgOTEsIDU0LCAxMTAsIDEsIDIxMywgMCwgCisgICAgMywgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAKKyAgICAzLCAyNDQsIDE5OCwgMjUsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk4LCAyNSwgMjEyLCAKKyAgICAxMjQsIDI0MywgODUsIDExMCwgMSwgMTM3LCAzLCAyMTksIDU0LCAxMTAsIDEsIDEzNywgMywgMjE3LCAxMTQsIDExMCwgMSwgCisgICAgMTM3LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM4LCA2OCwgMywgMjQ0LCAKKyAgICAxOTcsIDExMCwgMSwgMjQ0LCAxNzksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzNywgNjgsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIAorICAgIDIwNiwgNjAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgOTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMTMzLCAzLCAKKyAgICAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDIzNywgMywgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIzMCwgMjMsIDMsIDI0NCwgCisgICAgMTk3LCAxMTAsIDEsIDIzMCwgMjMsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyOCwgMjEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIAorICAgIDIyNCwgMjQ4LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjEsIDQxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTQsIDI1MCwgMywgCisgICAgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAKKyAgICAxMTAsIDEsIDIwOCwgMTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNywgNzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNiwgCisgICAgOTIsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAyMDQsIDMsIDI0NCwgCisgICAgMTk3LCAxMTAsIDEsIDIwNiwgNjAsIDMsIDIzNiwgMTI4LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAKKyAgICAyMzAsIDIzLCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAyMTksIDM1LCAzLCAyMTYsIDIwMCwgMTEwLCAzMiwgMTM3LCAyMjgsIAorICAgIDIwLCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgCisgICAgMTQ5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDgxLCAxOCwgMTAsIDEsIAorICAgIDI0OCwgMTQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNjQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNDYsIDE4LCAxMCwgMSwgCisgICAgMjE5LCAxNywgODEsIDE4LCAxMCwgMSwgMjE5LCAxNywgMTc0LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA2NCwgMTgsIDEwLCAxLCAKKyAgICAyNDgsIDEzNywgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDgxLCAxOCwgMTAsIDEsIDI0OCwgMTM3LCAxNzQsIDE4LCAxMCwgCisgICAgMSwgMjA3LCAyMzIsIDY0LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgODEsIDE4LCAKKyAgICAxMCwgMSwgMjA3LCAyMzIsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDIwOSwgMTY4LCA4MSwgMTgsIDEwLCAxLCAyMDksIDE2OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCAKKyAgICA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDgxLCAxOCwgMTAsIDEsIDIwNywgCisgICAgMjM0LCAxNzQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNjQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNDYsIDE4LCAxMCwgMSwgMjA2LCAKKyAgICA0OSwgODEsIDE4LCAxMCwgMSwgMjA2LCA0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDY0LCAxOCwgMTAsIDEsIDIxOSwgCisgICAgMTUsIDQ2LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDIsIAorICAgIDYsIDY0LCAxOCwgMTAsIDEsIDI0MiwgNiwgNDYsIDE4LCAxMCwgMSwgMjQyLCA2LCA4MSwgMTgsIDEwLCAxLCAyNDIsIDYsIAorICAgIDE3NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNjQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDQ2LCAxOCwgMTAsIDEsIDIyMCwgCisgICAgMjU1LCA4MSwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA2NCwgMTgsIDEwLCAxLCAKKyAgICAyMDksIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTkyLCAxNzQsIDE4LCAxMCwgCisgICAgMSwgMjA5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MCwgODEsIDE4LCAKKyAgICAxMCwgMSwgMjA5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDI0NCwgMTkyLCA2NCwgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjQyLCAzNCwgNjQsIAorICAgIDE4LCAxMCwgMSwgMjQyLCAzNCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA0NiwgCisgICAgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNjQsIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCAKKyAgICA2NCwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCisgICAgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgODEsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAKKyAgICAyMzgsIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA4MSwgMTgsIDEwLCAKKyAgICAxLCAyMzgsIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNDYsIDE4LCAKKyAgICAxMCwgMSwgMjM3LCAyMTgsIDgxLCAxOCwgMTAsIDEsIDIzNywgMjE4LCAxNzQsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDY0LCAKKyAgICAxOCwgMTAsIDEsIDIyMiwgMTI3LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDEyNywgODEsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIAorICAgIDE3NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDQ2LCAKKyAgICAxOCwgMTAsIDEsIDIxNSwgMjMxLCA2NCwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNDYsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIAorICAgIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMywgODksIDg3LCA2NCwgMTgsIDEwLCAKKyAgICAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIzNywgNDQsIDIzOCwgMzcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDgxLCAxOCwgMTAsIDEsIDIzNywgCisgICAgNDQsIDIzOCwgMzcsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCisgICAgMjQzLCAxMTAsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIAorICAgIDExMCwgMTc0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA0NiwgMTgsIAorICAgIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAKKyAgICAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDE2LCA3MCwgNTUsIDEwLCAxNiwgNzAsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAKKyAgICA1NSwgMTAsIDE2LCAxMjAsIDE4NywgNTYsIDEwLCAxNiwgMTI2LCAxODcsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCA1NiwgMTAsIAorICAgIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NiwgMTAsIAorICAgIDE2LCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDE2LCAyMzksIDE0NywgMTg3LCA1NiwgMTAsIDE2LCA1MiwgODAsIDI0OCwgCisgICAgMjMxLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTYsIAorICAgIDEwLCAxNiwgMjE1LCAyNTIsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU1LCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NiwgMTAsIAorICAgIDEsIDIyMiwgMjA2LCA2NCwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgNDYsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDgxLCAxOCwgCisgICAgMTAsIDEsIDIyMiwgMjA2LCAxNzQsIDE4LCAxMCwgMSwgMTA2LCA2NCwgMTgsIDEwLCAxLCAxMDYsIDQ2LCAxOCwgMTAsIDEsIAorICAgIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAKKyAgICAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIAorICAgIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIyOSwgNzYsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAyMjksIAorICAgIDc2LCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTg4LCA2NCwgMTgsIDEwLCAxLCAxODgsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgCisgICAgODEsIDE4LCAxMCwgMSwgMTg4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAKKyAgICAxMzAsIDgxLCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgMTMwLCAxNzQsIDE4LCAKKyAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIAorICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA2NCwgMTgsIDEwLCAzMiwgCisgICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKKyAgICAyMDQsIDcxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCisgICAgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAKKyAgICAyMTQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgODEsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAorICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKKyAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCisgICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgODEsIDE4LCAxMCwgMSwgMjQwLCA3NSwgCisgICAgODksIDY0LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgODEsIDE4LCAxMCwgCisgICAgMSwgMjQwLCA3NSwgODksIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCisgICAgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCisgICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCisgICAgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAorICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDE4NCwgNjQsIDE4LCAxMCwgCisgICAgMzIsIDIwOSwgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAxODQsIAorICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxNTEsIDY0LCAxOCwgMTAsIAorICAgIDMyLCAyMjksIDE0MSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjE0LCAxNjIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDIxNCwgMTYyLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgCisgICAgMjksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKKyAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCisgICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKKyAgICA2NCwgMTgsIDEwLCAzMiwgMjAyLCAxMTEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA2NCwgMTgsIAorICAgIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjM4LCAxMTUsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKKyAgICA0OCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAorICAgIDQ4LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKKyAgICAyNDAsIDQ4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIAorICAgIDEyMCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDIxNywgMTIwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCisgICAgMjMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIAorICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIAorICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCisgICAgMjMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKKyAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKKyAgICAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA2NCwgMTgsIAorICAgIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODMsIAorICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCisgICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIAorICAgIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCisgICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA2NCwgCisgICAgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAorICAgIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAorICAgIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxMDEsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDEyMywgCisgICAgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAKKyAgICAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjI4LCAKKyAgICA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQwLCA3MiwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgCisgICAgMTczLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAKKyAgICAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjE2LCAxMjMsIDQ2LCAxOCwgCisgICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIAorICAgIDEyOCwgODcsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIxLCAxNzksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAorICAgIDIzNywgMTI4LCA4NywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyNDgsIDEzOSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyNDgsIDEzOSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMTYsIDEyMywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCisgICAgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIAorICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKKyAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAKKyAgICAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIAorICAgIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDIzMCwgMjMsIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyMzAsIDIzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMzAsIDIzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAKKyAgICAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIAorICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMTYsIDEyMywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgCisgICAgMywgMjEwLCAxOTksIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKKyAgICAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjEsIDE3OSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCisgICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgCisgICAgNDQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIAorICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4MywgODEsIAorICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgCisgICAgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAKKyAgICAyNDQsIDIwOCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCisgICAgMjQ0LCAyMDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwMiwgCisgICAgMTExLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIAorICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE1MSwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgCisgICAgMjMwLCAyMywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAKKyAgICAyMywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAzMiwgCisgICAgMjMwLCAyMywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKKyAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAorICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCisgICAgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKKyAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCisgICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAorICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMjEwLCAKKyAgICAxOTksIDEzNywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIAorICAgIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDE3NCwgCisgICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCAKKyAgICAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAxNzQsIAorICAgIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgMTc0LCAKKyAgICAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgCisgICAgMjEzLCA4MSwgMywgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIAorICAgIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgCisgICAgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAKKyAgICAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAKKyAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIAorICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCisgICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIAorICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIAorICAgIDQwLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKKyAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCisgICAgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAKKyAgICAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgCisgICAgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMjUxLCA2MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgMjM4LCAxMTUsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgCisgICAgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA0NiwgMTgsIAorICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIAorICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKKyAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNDYsIAorICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCAKKyAgICA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAKKyAgICAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIAorICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIAorICAgIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDE3NCwgMTgsIDEwLCAKKyAgICAzMiwgMjAyLCAxMTEsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDEzNywgMywgMjQwLCA3MCwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDEzNywgMywgMjQwLCA3MCwgNjQsIDE4LCAyMTksIDIzMSwgNDksIDIxOSwgNzYsIDIxOSwgMjMxLCA1MCwgMjE5LCA3NiwgCisgICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIAorICAgIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAKKyAgICAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxNTEsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgCisgICAgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgCisgICAgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAKKyAgICAxNjIsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKKyAgICA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIAorICAgIDE2MiwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDQ2LCAKKyAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAzLCAKKyAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKKyAgICAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgCisgICAgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIAorICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAorICAgIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgCisgICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKKyAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIAorICAgIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyNTEsIDYwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIAorICAgIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgCisgICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIAorICAgIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgCisgICAgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAKKyAgICAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCisgICAgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKKyAgICAyMjgsIDI5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIAorICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKKyAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDgxLCAKKyAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4MywgODEsIAorICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgMTUxLCA4MSwgCisgICAgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDE4NCwgCisgICAgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAKKyAgICAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIAorICAgIDQ0LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgCisgICAgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKKyAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIAorICAgIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIAorICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIAorICAgIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgCisgICAgMTcwLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIAorICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTM3LCAyMjUsIAorICAgIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIAorICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKKyAgICAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCisgICAgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAorICAgIDIwOCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIAorICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgCisgICAgMzIsIDg5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAorICAgIDgzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCisgICAgMjIxLCAxNzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAKKyAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODksIAorICAgIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKKyAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCisgICAgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAorICAgIDIyOCwgMjksIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCAxNTEsIDQ2LCAxOCwgCisgICAgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgCisgICAgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKKyAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCAKKyAgICA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAKKyAgICAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIAorICAgIDE3OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgNCwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAKKyAgICAyMTEsIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMTYsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgMjExLCAKKyAgICA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgMTMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDQ0LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjI0LCA1NywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNSwgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTc0LCA2NCwgMTgsIDEwLCAKKyAgICAzMiwgMjUxLCAzMywgNjQsIDE4LCAxMCwgMzIsIDIwNCwgOTAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDY0LCAxOCwgMTAsIAorICAgIDMyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODksIDEwLCAzMiwgMjMwLCAxNzIsIDIxNiwgNTYsIDU0LCAxMCwgMzIsIDI0OCwgCisgICAgNTMsIDI1MCwgMTQyLCAyNTAsIDE0MywgNTcsIDIxNCwgMTQ5LCA1NywgMjE0LCAzOCwgNTcsIDIxMywgMjI2LCA1NywgMjEzLCAKKyAgICAyMTUsIDU3LCAyMTMsIDIwNCwgNTcsIDIxMywgMTkzLCA1NywgMjEzLCAxODIsIDU3LCAyMTMsIDE3MSwgNTcsIDIxMywgCisgICAgMTYwLCA1NywgMjE0LCAxNDgsIDU3LCAyMTQsIDEzNywgNTcsIDIxNCwgMTI2LCA1NywgMjE0LCAxMTUsIDU3LCAyMTQsIAorICAgIDEwNCwgNTcsIDIxNCwgOTMsIDU3LCAyMTQsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyMzMsIDIxNywgCisgICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIDI0NSwgMjMzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAKKyAgICAyMzksIDEwMiwgMjExLCA2MSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjQyLCAyMTcsIDI0MSwgMjM5LCAKKyAgICAxNTksIDM1LCA4MCwgMjEzLCAxNDMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDAsIDIxMiwgODIsIDIxNywgCisgICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMTcsIDQ3LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgCisgICAgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjI3LCAxODUsIDI0NywgMjI1LCAKKyAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjM2LCAxMDYsIDI0MSwgMTA4LCAzOSwgMzIsIDQ5LCAyMzcsIDEzNywgMzksIAorICAgIDMyLCA1MCwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDQ5LCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNTAsIAorICAgIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDQ5LCAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA1MCwgMjM3LCAxMzcsIDM5LCAKKyAgICAyNDUsIDIwNiwgMjI1LCAxNzAsIDM5LCAzMiwgNDksIDE2MiwgNTYsIDM5LCAzMiwgNTAsIDE2MiwgNTYsIDM5LCAyMDgsIAorICAgIDIyOCwgNDksIDE2MiwgNTYsIDM5LCAyMDgsIDIyOCwgNTAsIDE2MiwgNTYsIDM5LCAyMjUsIDE3MSwgNDksIDE2MiwgNTYsIAorICAgIDM5LCAyMjUsIDE3MSwgNTAsIDE2MiwgNTYsIDM5LCAyNDUsIDIwNiwgMjI1LCAxNzEsIDU2LCAzOSwgMzYsIDIwOCwgMTk4LCAKKyAgICA0OSwgMjM3LCAxMzcsIDM5LCAzNiwgMjA4LCAxOTgsIDUwLCAyMzcsIDEzNywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAorICAgIDEyMCwgNzAsIDIyNywgMjMyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCAxMDQsIDI0NCwgMTQ0LCAyMTcsIAorICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCA5MywgMjQ0LCAxNDQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKKyAgICAxMjQsIDIyNywgMTE0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgMjE3LCAKKyAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMTksIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIxOSwgCisgICAgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKKyAgICA4MCwgNTAsIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgCisgICAgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDIxNywgMjQxLCAKKyAgICAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgCisgICAgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAorICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgCisgICAgMzUsIDgwLCA0OSwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyNTAsIDIxOCwgMTU1LCAKKyAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAorICAgIDgwLCA1MCwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgMjQ1LCAxNjYsIDE1NSwgCisgICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgMjEzLCAxMjEsIDI0MywgODUsIDYxLCAKKyAgICAyMTMsIDEyMSwgMjQzLCA4NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MSwgMTU1LCAyMTcsIDI0MSwgCisgICAgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUxLCAxNTUsIDI0NCwgMTQzLCAyMTksIDE5OCwgMjQ2LCAyMTQsIDIxOSwgMTk4LCAKKyAgICAyMDQsIDcyLCAyMTksIDE5OCwgNTIsIDIwNCwgNzIsIDIxOSwgMTk4LCAyNDQsIDE0MywgMTI0LCAyMjcsIDExNCwgMjQ2LCAKKyAgICAyMTQsIDEyNCwgMjI3LCAxMTQsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDUsIDI0NSwgMjMzLCA1LCAxMzksIDI0NSwgCisgICAgMjMzLCA1LCAyMzksIDEwMiwgMjExLCA2MSwgNSwgMjEzLCAxNDMsIDUsIDI0NSwgMjQyLCA1LCAyMTcsIDQ3LCA4MiwgNSwgCisgICAgMjQwLCAyMTIsIDgyLCA1LCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDUsIDQ5LCAyMTksIDc2LCA1LCA1MCwgMjE5LCA3NiwgNSwgCisgICAgNDksIDI0NSwgOTMsIDE1NSwgNSwgNTAsIDI0NSwgOTMsIDE1NSwgNSwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIAorICAgIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCA0MiwgNTQsIDUsIDI1MCwgMjM1LCA1LCAyNTAsIDU5LCA1LCA5MSwgCisgICAgNTQsIDUsIDIzNSwgMjE5LCA1LCAyMjcsIDE3OSwgNTQsIDUsIDIzNywgMjQ3LCA1NCwgNSwgMjQxLCAzNSwgNTQsIDUsIAorICAgIDIxNiwgNzQsIDIxMiwgMCwgNSwgMjQzLCA5NywgNTQsIDUsIDIxOCwgMjQ2LCA1NCwgNSwgMjQ1LCAyMzEsIDI1MCwgNDksIAorICAgIDEwLCAyNDAsIDcwLCA2NCwgMTgsIDEwLCAyMDksIDIxMCwgMywgMjQwLCA3MCwgNTUsIDEwLCAyNDQsIDE3MSwgNjQsIDE4LCAKKyAgICAxMCwgMjA5LCAyNDksIDIzOSwgMTM3LCAxMCwgMjI5LCAyMjgsIDY0LCAxOCwgMTAsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIAorICAgIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAyNDQsIDE3MywgNjQsIDE4LCAxMCwgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAyMjksIAorICAgIDIzMCwgNjQsIDE4LCAxMCwgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAyMTMsIDgxLCA2NCwgMTgsIDEwLCAyMTMsIDgxLCAKKyAgICAxNzQsIDE4LCAxMCwgMjEwLCAyMjMsIDY0LCAxOCwgMTAsIDIxMCwgMjIzLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAxMjgsIAorICAgIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgCisgICAgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKKyAgICA0NiwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgCisgICAgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDEsIDEzNywgCisgICAgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA4MSwgMTgsIDEwLCAxLCAKKyAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAxNzQsIDE4LCAxMCwgMSwgMTM3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDQ2LCAxOCwgMTAsIAorICAgIDEsIDI0OCwgMTM5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDgxLCAxOCwgCisgICAgMTAsIDEsIDI0OCwgMTM5LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDY0LCAxOCwgMTAsIDEsIDIwOSwgCisgICAgMTcwLCAyMjUsIDk5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDIwOSwgMTcwLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgODksIDY0LCAKKyAgICAxOCwgMTAsIDEsIDIwOSwgODksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgODksIDgxLCAxOCwgMTAsIDEsIDIwOSwgODksIDE3NCwgCisgICAgMTgsIDEwLCAxLCAxODQsIDY0LCAxOCwgMTAsIDEsIDE4NCwgNDYsIDE4LCAxMCwgMSwgMTg0LCA4MSwgMTgsIDEwLCAxLCAKKyAgICAxODQsIDE3NCwgMTgsIDEwLCAxLCAxNTEsIDY0LCAxOCwgMTAsIDEsIDE1MSwgNDYsIDE4LCAxMCwgMSwgMTUxLCA4MSwgMTgsIAorICAgIDEwLCAxLCAxNTEsIDE3NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTg1LCA2NCwgCisgICAgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCAKKyAgICA0NiwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgCisgICAgMTA4LCA2NCwgMTgsIDEwLCAxLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDY0LCAxOCwgMTAsIDEsIAorICAgIDIxNCwgMTYyLCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgODEsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDE3NCwgMTgsIDEwLCAKKyAgICAxLCAyMTMsIDQwLCA2NCwgMTgsIDEwLCAxLCAyMTMsIDQwLCA0NiwgMTgsIDEwLCAxLCAyMTMsIDQwLCA4MSwgMTgsIDEwLCAKKyAgICAxLCAyMTMsIDQwLCAxNzQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNDYsIDE4LCAxMCwgCisgICAgMSwgMjE1LCAyOSwgODEsIDE4LCAxMCwgMSwgMjE1LCAyOSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA2NCwgMTgsIDEwLCAKKyAgICAxLCAyNDQsIDIwOCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDgxLCAxOCwgMTAsIDEsIDI0NCwgMjA4LCAxNzQsIDE4LCAKKyAgICAxMCwgMSwgMjA5LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDI1MiwgODEsIAorICAgIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIAorICAgIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA4MSwgMTgsIDEwLCAxLCAyMDIsIDExMSwgMTc0LCAxOCwgMTAsIDEsIDI1MSwgCisgICAgNjAsIDY0LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDQ2LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDgxLCAxOCwgMTAsIDEsIDI1MSwgCisgICAgNjAsIDE3NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNjQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDQ2LCAxOCwgMTAsIDEsIAorICAgIDIzOCwgMTE1LCA4MSwgMTgsIDEwLCAxLCAyMzgsIDExNSwgMTc0LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDY0LCAxOCwgMTAsIAorICAgIDEsIDI0MCwgNDgsIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNDgsIDE3NCwgMTgsIDEwLCAKKyAgICAxLCAyMTcsIDEyMCwgNjQsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDQ2LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA4MSwgMTgsIAorICAgIDEwLCAxLCAyMTcsIDEyMCwgMTc0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDQ2LCAxOCwgCisgICAgMTAsIDEsIDIzMCwgMjMsIDgxLCAxOCwgMTAsIDEsIDIzMCwgMjMsIDE3NCwgMTgsIDEwLCAxLCAyMjgsIDI5LCA2NCwgMTgsIAorICAgIDEwLCAxLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAxLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMjgsIDI5LCAxNzQsIDE4LCAKKyAgICAxMCwgMSwgODMsIDY0LCAxOCwgMTAsIDEsIDgzLCA0NiwgMTgsIDEwLCAxLCA4MywgODEsIDE4LCAxMCwgMSwgODMsIDE3NCwgCisgICAgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAKKyAgICA4MSwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAorICAgIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAKKyAgICA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAxLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAxLCAxMzcsIAorICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAxLCA4OSwgNjQsIDE4LCAxMCwgMSwgODksIDQ2LCAxOCwgMTAsIDEsIDg5LCA4MSwgCisgICAgMTgsIDEwLCAxLCA4OSwgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAKKyAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCisgICAgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCisgICAgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAzMiwgCisgICAgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIAorICAgIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDQ2LCAxOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjIxLCAxOTAsIDIxMSwgCisgICAgMjI4LCAxNTQsIDI0MCwgMjEyLCA4MiwgMTU0LCAyMTcsIDMxLCA4MiwgMTU0LCA0MiwgNTQsIDE1NCwgMjQzLCA5NywgNTQsIAorICAgIDE1NCwgMjE4LCAyNDYsIDU0LCAxNTQsIDI1MCwgMjM1LCAxNTQsIDI1MCwgMTYwLCAxNTQsIDQ5LCAyMTksIDc2LCAxNTQsIAorICAgIDUwLCAyMTksIDc2LCAxNTQsIDI1MCwgNTksIDE1NCwgOTEsIDU0LCAxNTQsIDI0NSwgMjMzLCAxNTQsIDIzNSwgMjE5LCAKKyAgICAxNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNTQsIDIxMiwgMCwgMTU0LCAxNywgMjAyLCA4NCwgMTU0LCAxNywgMTA1LCAxNTQsIAorICAgIDE3LCAxMDgsIDE1NCwgMTcsIDE0NywgMTU0LCAxNywgMTQ5LCAxNTQsIDE3LCAxNzAsIDE1NCwgMTcsIDE5NSwgMTU0LCAxNywgCisgICAgMjEzLCAxMTEsIDE1NCwgMTcsIDE5OSwgMTU0LCAxNywgMjIyLCA2MywgMTU0LCAyNDUsIDI0MiwgMTU0LCAyMTMsIDE0MywgCisgICAgMTU0LCAyMjcsIDE3OSwgNTQsIDE1NCwgMjQxLCAzNSwgNTQsIDE1NCwgMjM3LCAyNDcsIDU0LCAxNTQsIDIxNywgNDcsIDgyLCAKKyAgICAxNTQsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNTQsIDgsIDYsIDEsIDYzLCAxNTQsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIAorICAgIDYsIDEsIDI0NywgMTI1LCAxNTQsIDgsIDYsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNiwgMSwgNzQsIDE1NCwgOCwgNiwgMSwgCisgICAgMjQwLCAxNzQsIDE1NCwgOCwgNiwgMSwgMjM5LCA3NSwgMTU0LCA4LCA2LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA2LCAxLCAKKyAgICA3NSwgMTU0LCA4LCA2LCAxLCAyMzAsIDE4NCwgMTU0LCA4LCA2LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDYsIDEsIDE1OSwgCisgICAgMTU0LCA4LCA2LCAxLCAyMjYsIDE4NSwgMTU0LCA4LCA2LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA2LCAxLCA3OCwgMTU0LCA4LCAKKyAgICA2LCAxLCAyMTksIDE4NCwgMTU0LCA4LCA2LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA2LCAxLCAxNDYsIDE1NCwgOCwgNiwgMSwgCisgICAgMTk0LCAxNTQsIDgsIDYsIDEsIDIxMCwgNjksIDE1NCwgOCwgNiwgMSwgNjgsIDE1NCwgOCwgNiwgMSwgMjA2LCAxNjQsIAorICAgIDE1NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE1NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNiwgMSwgMjAzLCAxMjQsIAorICAgIDE1NCwgOCwgNiwgMSwgMjAyLCAxNTksIDE1NCwgNDksIDUxLCAxNTUsIDE1NCwgMjE2LCA3NCwgMjEyLCAwLCAxNTQsIDUwLCAKKyAgICA1MSwgMTU1LCAxNTQsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNTQsIDEyNCwgMjI3LCAxMTQsIDE1NCwgMjM3LCAyNTQsIDI1MSwgCisgICAgMTM4LCAxNTQsIDgsIDUsIDEsIDYzLCAxNTQsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIDUsIDEsIDI0NywgMTI1LCAKKyAgICAxNTQsIDgsIDUsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNSwgMSwgNzQsIDE1NCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE1NCwgOCwgCisgICAgNSwgMSwgMjM5LCA3NSwgMTU0LCA4LCA1LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA1LCAxLCA3NSwgMTU0LCA4LCA1LCAxLCAKKyAgICAyMzAsIDE4NCwgMTU0LCA4LCA1LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDUsIDEsIDE1OSwgMTU0LCA4LCA1LCAxLCAyMjYsIAorICAgIDE4NSwgMTU0LCA4LCA1LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA1LCAxLCA3OCwgMTU0LCA4LCA1LCAxLCAyMTksIDE4NCwgCisgICAgMTU0LCA4LCA1LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA1LCAxLCAxNDYsIDE1NCwgOCwgNSwgMSwgMTk0LCAxNTQsIDgsIDUsIAorICAgIDEsIDIxMCwgNjksIDE1NCwgOCwgNSwgMSwgNjgsIDE1NCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE1NCwgOCwgNSwgMSwgMjA0LCAKKyAgICAxNDQsIDE1NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE1NCwgOCwgNSwgMSwgMjAyLCAKKyAgICAxNTksIDE1NCwgNDksIDI0NSwgOTMsIDE1NSwgMTU0LCA4MCwgMjI3LCAxMTQsIDE1NCwgNTAsIDI0NSwgOTMsIDE1NSwgCisgICAgMTU0LCAyMDgsIDIyNywgMTU0LCA0OSwgNjEsIDIxOSwgNzYsIDE1NCwgNTAsIDYxLCAyMTksIDc2LCAxMjcsIDEzOSwgMjM5LCAKKyAgICAxMDIsIDIxMSwgNjEsIDEyNywgNDksIDI0NSwgMTY2LCAxNTUsIDEyNywgNTAsIDI0NSwgMTY2LCAxNTUsIDEyNywgMTM5LCAKKyAgICAyNDUsIDIzMywgMTI3LCA2NywgMTAxLCAyNDMsIDg1LCAxMjcsIDY3LCAxLCAyMDQsIDAsIDEyNywgNjcsIDEsIDUsIDYzLCAKKyAgICAxMjcsIDY3LCAxLCA1LCA3NSwgMTI3LCA2NywgMSwgNSwgNjgsIDEyNywgNjcsIDEsIDUsIDc0LCAxMjcsIDY3LCAxLCA1LCAKKyAgICA3OCwgMTI3LCA2NywgMSwgNSwgMTk4LCAxMjcsIDY3LCAxLCA1LCAyMDIsIDIxMywgMTI3LCA2NywgMSwgNSwgMjAyLCAyNDcsIAorICAgIDEyNywgNjcsIDEsIDUsIDIwNywgMjAzLCAxMjcsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAyNDEsIDgyLCAxMjcsIDY3LCAKKyAgICAxLCA2MywgMTI3LCA2NywgMSwgNzUsIDEyNywgNjcsIDEsIDY4LCAxMjcsIDY3LCAxLCA3NCwgMTI3LCA2NywgMSwgNzgsIAorICAgIDEyNywgNjcsIDEsIDE3MywgMTI3LCA2NywgMSwgMjI5LCAxMDAsIDEyNywgNjcsIDEsIDIyOCwgMjA5LCAxMjcsIDY3LCAxLCAKKyAgICAyMjksIDIwMSwgMTI3LCA2NywgMSwgMjI5LCAyNiwgMTI3LCA2NywgMSwgMjE1LCAzNiwgMTI3LCA2NywgMSwgMjEyLCAxNjIsIAorICAgIDEyNywgNjcsIDEsIDIxMSwgMTAsIDEyNywgNjcsIDEsIDIxNCwgMTc3LCAxMjcsIDY3LCAxLCAyMTIsIDEzLCAxMjcsIDY3LCAKKyAgICAxLCAyMTAsIDIyLCAxMjcsIDY3LCAxLCAyMDksIDIsIDEyNywgNjcsIDEsIDIwNywgMjAzLCAxMjcsIDY3LCAxLCAyMDksIAorICAgIDE4NywgMTI3LCA2NywgMSwgMTM1LCAxMjcsIDY3LCAxLCAyMDEsIDIwMSwgMTI3LCA2NywgMSwgMjIyLCAxMDAsIDEyNywgCisgICAgNjcsIDEsIDIyMSwgODQsIDEyNywgNjcsIDEsIDIyMiwgMjQwLCAxMjcsIDY3LCAxLCAyMjEsIDE5MSwgMTI3LCA2NywgMSwgCisgICAgMTUyLCAxMjcsIDY3LCAxLCAyMzcsIDMsIDEyNywgNjcsIDEsIDIzNiwgMjYsIDEyNywgNjcsIDEsIDIzNywgNjcsIDEyNywgCisgICAgNjcsIDEsIDIzNiwgMTM2LCAxMjcsIDY3LCAxLCAxOTIsIDEyNywgNjcsIDEsIDIyNCwgMTU1LCAxMjcsIDY3LCAxLCAyMjMsIAorICAgIDI0NiwgMTI3LCA2NywgMSwgMjI1LCAyMCwgMTI3LCA2NywgMSwgMjI0LCA4MiwgMTI3LCA2NywgMSwgMTk4LCAxMjcsIDY3LCAKKyAgICAxLCAyMDIsIDIxMywgMTI3LCA2NywgMSwgMjAyLCAyNDcsIDEyNywgNjcsIDEsIDIxNiwgMjIwLCAxMjcsIDY3LCAxLCAyMTYsIAorICAgIDU3LCAxMjcsIDY3LCAxLCAyMTUsIDE0NSwgMTI3LCA2NywgMSwgMjE2LCAxNTgsIDEyNywgNjcsIDEsIDIxNSwgMjI3LCAKKyAgICAxMjcsIDY3LCAxLCAyMDQsIDExMSwgMTI3LCA2NywgMSwgMjIzLCAxNjMsIDEyNywgNjcsIDIwNSwgMTg2LCAyMTEsIDI0MSwgCisgICAgODIsIDEyNywgNjcsIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDEyNywgMjgsIDI0MCwgNywgMTI3LCAyOCwgMSwgMjI5LCAKKyAgICA1OSwgMTI3LCAyOCwgMSwgMjExLCAxNTYsIDEyNywgMjgsIDEsIDIyOSwgNTIsIDEyNywgMjgsIDEsIDIyMiwgOTMsIDEyNywgCisgICAgMjgsIDEsIDIyMiwgOTEsIDEyNywgMjgsIDEsIDIyMiwgOTAsIDEyNywgMjgsIDEsIDIwOCwgMjQwLCAxMjcsIDI4LCAxLCAKKyAgICAyMTEsIDE0NSwgMTI3LCAyOCwgMSwgMjE2LCA0NywgMTI3LCAyOCwgMSwgMjE2LCA0MiwgMTI3LCAyOCwgMSwgMjE2LCAzOSwgCisgICAgMTI3LCAyOCwgMSwgMjE2LCAzMiwgMTI3LCAyOCwgMSwgMjE2LCAyNywgMTI3LCAyOCwgMSwgMjE2LCAyMiwgMTI3LCAyOCwgCisgICAgMSwgMjE2LCAzMywgMTI3LCAyOCwgMSwgMjE2LCA0NSwgMTI3LCAyOCwgMSwgMjI0LCAxNDEsIDEyNywgMjgsIDEsIDIxOCwgCisgICAgMTUzLCAxMjcsIDI4LCAxLCAyMTEsIDE1MywgMTI3LCAyOCwgMSwgMjE4LCAxNDIsIDEyNywgMjgsIDEsIDIxMiwgMTExLCAKKyAgICAxMjcsIDI4LCAxLCAyMTEsIDE1MCwgMTI3LCAyOCwgMSwgMjMxLCAxMDYsIDEyNywgMjgsIDEsIDI0NiwgNzQsIDEyNywgMjgsIAorICAgIDEsIDIxMSwgMTYwLCAxMjcsIDI4LCAxLCAyNDYsIDEzOCwgMTI3LCAyOCwgMSwgMjI5LCAxMjAsIDEyNywgMjgsIDEsIDIwOSwgCisgICAgNjYsIDEyNywgMjgsIDEsIDIxOCwgMTkwLCAxMjcsIDI4LCAxLCAyMzYsIDI1MSwgMTI3LCAyOCwgMSwgNjMsIDEyNywgMjgsIAorICAgIDEsIDI1MSwgMTA5LCAxMjcsIDI4LCAxLCAxOTgsIDEyNywgMjgsIDEsIDIwMywgOTksIDEyNywgMjgsIDEsIDI0MSwgNTUsIAorICAgIDEyNywgMjgsIDEsIDc0LCAxMjcsIDI4LCAxLCAyMDMsIDM5LCAxMjcsIDI4LCAxLCAyMDMsIDUyLCAxMjcsIDI4LCAxLCA3OCwgCisgICAgMTI3LCAyOCwgMSwgMjA0LCAxMTEsIDEyNywgMjgsIDEsIDIwNCwgMTA3LCAxMjcsIDI4LCAxLCAyMjAsIDczLCAxMjcsIDI4LCAKKyAgICAxLCAyMDIsIDI0NywgMTI3LCAyOCwgMSwgNjgsIDEyNywgMjgsIDEsIDIwNCwgNDgsIDEyNywgMjgsIDEsIDIwNCwgNjIsIAorICAgIDEyNywgMjgsIDEsIDIwNCwgMzAsIDEyNywgMjgsIDEsIDIwMiwgMjEzLCAxMjcsIDI4LCAxLCAyNDAsIDIzOCwgMTI3LCAyOCwgCisgICAgMSwgMjAzLCAxMSwgMTI3LCAyOCwgMSwgNzUsIDE1NCwgMjQ2LCAyMjAsIDU0LCAxNTQsIDIxOCwgMjAsIDU0LCAxNTQsIAorICAgIDIyMSwgMTY2LCA1NCwgMTU0LCAyMjUsIDE3MCwgMTU0LCAyNDcsIDIwMywgMTQyLCAxNTQsIDIwMywgNDMsIDU0LCAxNTQsIAorICAgIDIwMywgMjQ2LCA1NCwgMTI3LCAyMzksIDE1NiwgMTU3LCAyMDYsIDM4LCAxMjcsIDk2LCA0NywgMTI3LCAxNzcsIDQ3LCAKKyAgICAxMjcsIDg2LCA0NywgMTI3LCAxODMsIDQ3LCAxMjcsIDYyLCAyMTEsIDE3NywgMTI3LCA2MSwgMjQ2LCA2MSwgMjMwLCAyNTEsIAorICAgIDI1MCwgMjA1LCAyNTAsIDIyOCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAyMTMsIDEzMCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAKKyAgICAyMDksIDEzOCwgMjIwLCA5MCwgMjE2LCA5NiwgMjQ2LCAxODIsIDIxNiwgOTYsIDI0NiwgMTgyLCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMjM5LCA2MywgMjksIDY2LCA0LCAyNDksIDIwOCwgNzQsIDI5LCA2NiwgNCwgMjQ5LCAyMTcsIDc1LCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMTg1LCA3OCwgMjksIDY2LCA0LCAyNDksIDIzNSwgNjgsIDI5LCA2NiwgNCwgMjQ5LCAyNTQsIDI0NCwgMjEyLCAyOSwgCisgICAgNjYsIDQsIDI0OSwgMjAxLCAyNDQsIDc1LCAyOSwgNjYsIDQsIDI0OSwgMjQxLCAyNDMsIDIzMywgMjksIDY2LCA0LCAyNDksIAorICAgIDIzMSwgMjQzLCAxMTMsIDI5LCA2NiwgNCwgMjQ5LCAxOTUsIDI0MiwgNDIsIDI5LCA2NiwgNCwgMjQ5LCAxODksIDIzMCwgCisgICAgMTgxLCAyOSwgNjYsIDQsIDI0OSwgMjAwLCAyMzAsIDE2MSwgMjksIDY2LCA0LCAyNDksIDIxMCwgMjMwLCAxMDEsIDI5LCAKKyAgICA2NiwgNCwgMjQ5LCAxODEsIDIzMCwgODIsIDI5LCA2NiwgNCwgMjQ5LCAxNjksIDE3MywgMjksIDY2LCA0LCAyNDksIDIwMiwgCisgICAgMjI5LCAyMDEsIDI5LCA2NiwgNCwgMjQ5LCAxNzksIDIyOSwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgMTc2LCAyMjksIDI2LCAKKyAgICAyOSwgNjYsIDQsIDI0OSwgMTY1LCAyMjgsIDIwOSwgMjksIDY2LCA0LCAyNDksIDE2NiwgMTkyLCAyOSwgNjYsIDQsIDI0OSwgCisgICAgMjMyLCAyMjUsIDIwLCAyOSwgNjYsIDQsIDI0OSwgMTczLCAyMjQsIDE1NSwgMjksIDY2LCA0LCAyNDksIDIzMCwgMjI0LCAKKyAgICA4MiwgMjksIDY2LCA0LCAyNDksIDIyMiwgMjIzLCAyNDYsIDI5LCA2NiwgNCwgMjQ5LCAyNDMsIDIwMSwgMjAxLCAyOSwgNjYsIAorICAgIDQsIDI0OSwgMjIxLCAyMjIsIDI0MCwgMjksIDY2LCA0LCAyNDksIDIxNSwgMjIyLCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAKKyAgICAxOTQsIDIyMSwgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMTkxLCAyMjEsIDg0LCAyOSwgNjYsIDQsIDI0OSwgMjUwLCAxODUsIAorICAgIDI5LCA2NiwgNCwgMjQ5LCAxNzQsIDIxOSwgMzQsIDI5LCA2NiwgNCwgMjQ5LCAyMDcsIDIxOCwgMTY3LCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMjM0LCAyMTgsIDY5LCAyOSwgNjYsIDQsIDI0OSwgMTk2LCAyMTcsIDE5MSwgMjksIDY2LCA0LCAyNDksIDIyOSwgCisgICAgMjE3LCAxMjYsIDI5LCA2NiwgNCwgMjQ5LCAxNjgsIDIxNywgMTA2LCAyOSwgNjYsIDQsIDI0OSwgMjI0LCAyMTcsIDg4LCAKKyAgICAyOSwgNjYsIDQsIDI0OSwgMjEzLCAyMTcsIDc3LCAyOSwgNjYsIDQsIDI0OSwgMTg2LCAyMTYsIDIyMCwgMjksIDY2LCA0LCAKKyAgICAyNDksIDIxOCwgMjE2LCAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxOTMsIDIxNiwgNTcsIDI5LCA2NiwgNCwgMjQ5LCAyNTIsIAorICAgIDIxNSwgMjI3LCAyOSwgNjYsIDQsIDI0OSwgMjE5LCAyMTUsIDE0NSwgMjksIDY2LCA0LCAyNDksIDIxNCwgMjE1LCAzNiwgCisgICAgMjksIDY2LCA0LCAyNDksIDIzNywgMjE0LCAxNzcsIDI5LCA2NiwgNCwgMjQ5LCAyMDUsIDIxMiwgMTYyLCAyOSwgNjYsIDQsIAorICAgIDI0OSwgMjMzLCAyMTIsIDEzLCAyOSwgNjYsIDQsIDI0OSwgMTg4LCAyMTEsIDEwLCAyOSwgNjYsIDQsIDI0OSwgMTg3LCAKKyAgICAyMTAsIDIyLCAyOSwgNjYsIDQsIDI0OSwgMjQ4LCAyMDksIDE4NywgMjksIDY2LCA0LCAyNDksIDIwOSwgMjA5LCAyLCAyOSwgCisgICAgNjYsIDQsIDI0OSwgMjQ2LCAxMzUsIDI5LCA2NiwgNCwgMjQ5LCAxNzcsIDIwNywgMjAzLCAyOSwgNjYsIDQsIDI0OSwgMTkyLCAKKyAgICAyMDQsIDExMSwgMjksIDY2LCA0LCAyNDksIDE3MSwgMjA0LCA2MiwgMjksIDY2LCA0LCAyNDksIDIwNiwgMjA0LCAzMCwgMjksIAorICAgIDY2LCA0LCAyNDksIDIwNCwgMjA0LCAwLCAyOSwgNjYsIDQsIDI0OSwgMjI4LCAyMDIsIDExNiwgMjksIDY2LCA0LCAyNDksIAorICAgIDE3MiwgMjAyLCA5MiwgMjksIDY2LCA0LCAyNDksIDIyNSwgMjAyLCAxNywgMjksIDY2LCA0LCAyNDksIDIyMCwgMjU0LCAzNCwgCisgICAgMjksIDY2LCA0LCAyNDksIDIwMywgMjUzLCAxNzgsIDI5LCA2NiwgNCwgMjQ5LCAxNjIsIDI1MCwgMzQsIDI5LCA2NiwgNCwgCisgICAgMjQ5LCAxNzUsIDI0MiwgOSwgMjksIDY2LCA0LCAyNDksIDE1OCwgMjQyLCA4LCAyOSwgNjYsIDQsIDI0OSwgMTk4LCAyMjEsIAorICAgIDIwLCAyOSwgNjYsIDQsIDI0OSwgMjE2LCAyMTcsIDE4OSwgMjksIDY2LCA0LCAyNDksIDE4NCwgMjE3LCAxOTMsIDI5LCA2NiwgCisgICAgNCwgMjQ5LCAxNzAsIDIxNiwgMjE4LCAyOSwgNjYsIDQsIDI0OSwgMjEyLCAyMTYsIDIxNywgMjksIDY2LCA0LCAyNDksIAorICAgIDE3OCwgMjE1LCAyMjYsIDI5LCA2NiwgNCwgMjQ5LCAxODAsIDIxMCwgMTksIDI5LCA2NiwgNCwgMjQ5LCAxNjAsIDIwNywgCisgICAgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTU3LCAxMDgsIDI5LCA2NiwgMTYsIDI0OSwgMjI3LCAyOSwgNjYsIDE2LCAyNDksIAorICAgIDIyNiwgMjksIDY2LCAxNiwgMjQ5LCAyMjMsIDI5LCA2NiwgMTYsIDI0OSwgMjExLCAyOSwgNjYsIDE2LCAyNDksIDE5OSwgCisgICAgMjksIDY2LCAxNiwgMjQ5LCAxOTcsIDI5LCA2NiwgMTYsIDI0OSwgMTkwLCAyOSwgNjYsIDE2LCAyNDksIDE4MywgMjksIDY2LCAKKyAgICAxNiwgMjQ5LCAxODIsIDI5LCA2NiwgMTYsIDI0OSwgMTY3LCAyOSwgNjYsIDE2LCAyNDksIDE2NCwgMjksIDY2LCAxNiwgCisgICAgMjQ5LCAxNjMsIDI5LCA2NiwgMTYsIDI0OSwgMTYxLCAyOSwgNjYsIDE2LCAyNDksIDE1OSwgMjksIDY2LCAxMzMsIDI0OSwgCisgICAgMTU2LCAyMjUsIDEyMiwgMjksIDY2LCAxMzMsIDI0OSwgMTU1LCAyMDMsIDI1MCwgMjksIDY2LCAxMzMsIDI0OSwgMTU0LCAKKyAgICAyNDQsIDU4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNTMsIDI0MSwgMzIsIDI5LCA2NiwgMTMzLCAyNDksIDE1MiwgMjI1LCA5MywgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgMTUxLCAyMTEsIDEwMSwgMjksIDY2LCAxMzMsIDI0OSwgMTUwLCAyNDAsIDIxOSwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgMTQ5LCAyMTYsIDE4NCwgMjksIDY2LCAxMzMsIDI0OSwgMTQ4LCAyMTMsIDQyLCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCAxNDcsIDIzNywgNjYsIDI5LCA2NiwgMTMzLCAyNDksIDE0NiwgMjExLCAyMzUsIDI5LCA2NiwgMTMzLCAyNDksIAorICAgIDE0NSwgMjQ4LCAyMSwgMjksIDY2LCAxMzMsIDI0OSwgMTQ0LCAyNDUsIDE0OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQzLCAKKyAgICAyNDcsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQyLCAyMDQsIDM4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDEsIDI0OCwgCisgICAgMjI3LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDAsIDIyMCwgNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEzOSwgMjExLCAyMDcsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDEzOCwgMjQ1LCA1OSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzNywgMjI5LCAyNDksIDI5LCA2NiwgCisgICAgMjI0LCA0NSwgMjQ5LCAxMzYsIDIzMCwgMiwgMjksIDY2LCAxMzMsIDI0OSwgMTM1LCAyMjAsIDU1LCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCAxMzQsIDIwNCwgMTIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMywgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMiwgMjUwLCAKKyAgICAxMTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzEsIDIyNCwgMjMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzAsIDI0NywgCisgICAgMjAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjksIDIzOCwgMzEsIDI5LCA2NiwgMTMzLCAyNDksIDEyOCwgMjksIDY2LCAxMzMsIAorICAgIDI0OSwgMTI3LCAyMDMsIDI0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTI2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMjUsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDEyNCwgMjM2LCA1MywgMjksIDY2LCAxMzMsIDI0OSwgMTIzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjIsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDEyMSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDExOSwgMjA3LCAxNzIsIDI5LCA2NiwgMTMzLCAyNDksIAorICAgIDExOCwgMjksIDY2LCAxMzMsIDI0OSwgMTE3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTYsIDI0NiwgMTAsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDExNSwgMjksIDY2LCAxMzMsIDI0OSwgMTE0LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTMsIDIzOCwgMjIxLCAyOSwgNjYsIAorICAgIDEzMywgMjQ5LCAxMTIsIDI1MCwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTEsIDI5LCA2NiwgMTMzLCAyNDksIDExMCwgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgMTA5LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDgsIDI5LCA2NiwgMTMzLCAyNDksIDEwNywgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDUsIDI5LCA2NiwgMTMzLCAyNDksIDEwNCwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgMTAzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMDIsIDIyNCwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDEwMSwgMjksIAorICAgIDY2LCAxMzMsIDI0OSwgMTAwLCAyMDgsIDk1LCAyOSwgNjYsIDEzMywgMjQ5LCA5OSwgMjksIDY2LCAxMzMsIDI0OSwgOTgsIAorICAgIDI5LCA2NiwgMTMzLCAyNDksIDk3LCAyOSwgNjYsIDEzMywgMjQ5LCA5NiwgMjksIDY2LCAxMzMsIDI0OSwgOTUsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDk0LCAyOSwgNjYsIDEzMywgMjQ5LCA5MywgMjksIDY2LCAxMzMsIDI0OSwgOTIsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDkxLCAyOSwgNjYsIDEzMywgMjQ5LCA5MCwgMjksIDY2LCAxMzMsIDI0OSwgODksIDI5LCA2NiwgMTMzLCAyNDksIAorICAgIDg4LCAyMzcsIDM1LCAyOSwgNjYsIDEzMywgMjQ5LCA2NywgMjM5LCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDY0LCAyNDgsIAorICAgIDIwNCwgMjksIDY2LCAxMzMsIDI0OSwgNTksIDIxMSwgMjE0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OCwgNDcsIDI5LCA2NiwgCisgICAgMTMzLCAyNDksIDU3LCAyOSwgNjYsIDEzMywgMjQ5LCA1NiwgMjEwLCAxNTUsIDI5LCA2NiwgMTMzLCAyNDksIDU1LCAyOSwgCisgICAgNjYsIDEzMywgMjQ5LCA1NCwgMjksIDY2LCAxMzMsIDI0OSwgNTMsIDIwNCwgMzQsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgCisgICAgMjQ5LCA1MiwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDUxLCAyNDYsIDE4MCwgMjM5LCAxMzQsIDI5LCA2NiwgMTMzLCAKKyAgICAyNDksIDUwLCAyMDQsIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCA0OSwgMjksIDY2LCAxMzMsIDI0OSwgNDgsIDI5LCA2NiwgCisgICAgMjI0LCA0NSwgMjQ5LCA0NywgMjQzLCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDQ2LCAyOSwgNjYsIDEzMywgMjQ5LCA0NSwgCisgICAgMjksIDY2LCAxMzMsIDI0OSwgNDMsIDI5LCA2NiwgMTMzLCAyNDksIDQyLCAyOSwgNjYsIDEzMywgMjQ5LCA0MSwgMjksIDY2LCAKKyAgICAxMzMsIDI0OSwgNDAsIDI0NCwgMTQ3LCAyOSwgNjYsIDEzMywgMjQ5LCAzOSwgMjksIDY2LCAxMzMsIDI0OSwgMzgsIDI5LCAKKyAgICA2NiwgMTMzLCAyNDksIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgMzUsIDI5LCA2NiwgCisgICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCAxMjAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NywgMjksIDY2LCAxMzMsIAorICAgIDIwNSwgMjQxLCAyNDksIDg2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCisgICAgMjQ5LCA4NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODIsIAorICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgwLCAyOSwgNjYsIAorICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNzksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OCwgMjksIDY2LCAxMzMsIDIwNSwgCisgICAgMjQxLCAyNDksIDc3LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAKKyAgICA3NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzMsIDI5LCAKKyAgICA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcxLCAyOSwgNjYsIDEzMywgCisgICAgMjA1LCAyNDEsIDI0OSwgNzAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKKyAgICAyNDksIDY4LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NSwgCisgICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjIsIDI5LCA2NiwgCisgICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYwLCAyOSwgNjYsIDEzMywgMjA1LCAKKyAgICAyNDEsIDI0OSwgNDQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAzNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIAorICAgIDEzMSwgMjI3LCAxMTQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDI0MywgODUsIDI1MSwgMTAyLCAyNDYsIDE2OSwgCisgICAgODIsIDI1MSwgMTAyLCA0MiwgMTA1LCAyNTEsIDEwMiwgNDIsIDEwOCwgMjUxLCAxMDIsIDQyLCAxNDcsIDI1MSwgMTAyLCAKKyAgICA0MiwgMTQ5LCAyNTEsIDEwMiwgNDIsIDE3MCwgMjUxLCAxMDIsIDQyLCAxOTUsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTEsIAorICAgIDI1MSwgMTAyLCA0MiwgMTk5LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjMsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTIsIDI1MSwgCisgICAgMTAyLCA0MiwgMjA3LCAxNTEsIDI1MSwgMTAyLCA0MiwgMjA5LCA1MywgMjUxLCAxMDIsIDQyLCAyMzksIDE1MywgMjUxLCAKKyAgICAxMDIsIDQyLCAyNDAsIDE4LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzQsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDUsIDI1MSwgCisgICAgMTAyLCA0MiwgMjQxLCAxMzQsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OCwgMjUxLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIAorICAgIDI1MSwgMTAyLCA0MiwgMTIwLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDEyNiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAKKyAgICAyMzksIDE0NywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTIsIAorICAgIDg4LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAKKyAgICAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMDksIDM2LCAyNTEsIAorICAgIDEwMiwgNDIsIDEyMCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAxMjYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAKKyAgICAxNDcsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA4OCwgCisgICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgMjA5LCAKKyAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyNTEsIAorICAgIDEwMiwgNDIsIDIwNywgMTUyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgCisgICAgMjM5LCAxNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDc1LCAKKyAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTM1LCAyMDksIAorICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTksIDIwOSwgMzYsIDI1MSwgMTAyLCAyMDQsIDUxLCAyNDgsIDIxOSwgMjA2LCAKKyAgICAyMzUsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMTQsIDE3MSwgCisgICAgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMDksIDYxLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgCisgICAgMTQwLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDI0MiwgNDUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIAorICAgIDIyNywgOTUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIxNCwgMTcxLCAyMTAsIAorICAgIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIwOSwgNjEsIDIxMCwgMjQwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgCisgICAgMjE3LCA1NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNywgMTM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIAorICAgIDExOCwgMjQyLCA2NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxNzAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOCwgCisgICAgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAorICAgIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgCisgICAgMzYsIDIzOSwgMjMzLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAyMzcsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIAorICAgIDEyLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAyMzcsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAorICAgIDIzMywgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIxMSwgODgsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgCisgICAgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKKyAgICAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMTEsIAorICAgIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCisgICAgMzYsIDI0MCwgMTksIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIyNCwgODUsIAorICAgIDMwLCAyNTEsIDEyOSwgMjM3LCAyOSwgMTE4LCAyMTgsIDg2LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDEwNSwgMzAsIDI1MSwgCisgICAgMTI5LCAyMzcsIDI1LCAxMDUsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTA4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIAorICAgIDEwOCwgMzAsIDI1MSwgMTI5LCAyNDUsIDU2LCAxMjAsIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTIwLCAKKyAgICAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDE3MCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MiwgMzAsIAorICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MywgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDIwOSwgCisgICAgMTUyLCAzMCwgMjUxLCAxMjksIDIyNCwgMjIyLCAyMDksIDE1MiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDE1MiwgCisgICAgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDUzLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDI0MCwgMTgsIDMwLCAyNTEsIAorICAgIDEyOSwgMjA4LCA2MSwgMjQwLCAxOSwgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDI0MCwgMTgsIDMwLCAKKyAgICAyNTEsIDEyOSwgMjA5LCA3NiwgMjQwLCAxOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIzNiwgMTEsIDMwLCAyNTEsIAorICAgIDEyOSwgMjA5LCA3NiwgMTI2LCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgCisgICAgMjUxLCAxMjksIDIwOCwgNjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIzOSwgMjMzLCAKKyAgICAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0NywgMjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIyMywgNjAsIAorICAgIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAKKyAgICAyMDksIDc2LCAyMzksIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNDQsIDQwLCAyMzksIDIzMywgMjI0LCA4NSwgMzAsIAorICAgIDI1MSwgMTI5LCAyMTEsIDQ5LCAyNDAsIDE5LCAyMjQsIDg1LCAzMCwgMTE4LCAxNjIsIDU0LCAzMCwgMTE4LCAxNjIsIDIsIAorICAgIDI1MCwgMjU1LCAxOCwgMzAsIDEyMCwgMjA5LCA1OCwgNTQsIDMwLCAxMjYsIDIxNywgNTQsIDU0LCAzMCwgMjAzLCA1MCwgCisgICAgNTQsIDMwLCAyMDksIDIzOCwgNTQsIDMwLCAyNDIsIDY2LCA1NCwgMzAsIDIyMCwgODcsIDU0LCAzMCwgMTIwLCAyMjAsIDg2LCAKKyAgICA1NCwgMzAsIDEyNiwgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDE0NywgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDIzMywgMjIwLCAKKyAgICA4NiwgNTQsIDMwLCAyMjQsIDIxNiwgNTQsIDMwLCAyMjgsIDEzOSwgMjQ4LCAyMTksIDU0LCAzMCwgMjI3LCA4OCwgNTQsIAorICAgIDMwLCAyMTksIDIxMywgNTQsIDMwLCAyMDMsIDE3MywgNTQsIDMwLCAyNTAsIDg3LCA1NCwgMzAsIDI1MCwgMTAyLCA1NCwgCisgICAgMzAsIDIzOCwgNywgNTQsIDMwLCAyMDgsIDIzLCAyNDgsIDIxOSwgNTQsIDMwLCAyMDIsIDg1LCA1NCwgMzAsIDExOCwgMjE3LCAKKyAgICA1NiwgNTQsIDMwLCAyMTIsIDExMywgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMiwgNTQsIDIxNSwgMjEwLCAyMDYsIDI0OSwgNTQsIAorICAgIDIxNSwgMjEwLCAyMTMsIDEzNSwgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMCwgNTQsIDIxNSwgMjEwLCAyNDMsIDE4MywgMjEzLCAKKyAgICAxMDAsIDU0LCAyMTUsIDIxMCwgMjEyLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjQ0LCAzNiwgNTQsIDIxNSwgMjEwLCAyMTcsIAorICAgIDM5LCA1NCwgMjE1LCAyMTAsIDIxMywgMTE5LCA1NCwgMjE1LCAyMTAsIDI0MiwgMjMsIDU0LCAyMTUsIDIxMCwgMjUwLCA4MiwgCisgICAgNTQsIDIxNSwgMjEwLCAyNDYsIDIxMywgNTQsIDMwLCAxNiwgMjA5LCAyMDgsIDIxNiwgNTksIDIxOCwgMjAzLCAyNDMsIAorICAgIDE2MCwgMiwgMjE5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDc4LCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAKKyAgICAxNjAsIDIsIDIwOSwgMjExLCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgNDIsIDIxOCwgMjAzLCAyNDMsIAorICAgIDE2MCwgMiwgMjQ2LCAxMzMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjAzLCAyNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCisgICAgMjM3LCAzNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzgsIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDksIDAsIAorICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgNDcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNDAsIDIxOCwgMjAzLCAKKyAgICAyNDMsIDE2MCwgMiwgMjEzLCA4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NiwgNCwgMjE4LCAyMDMsIDI0MywgMTYwLCAKKyAgICAyLCAyMjUsIDEyMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjUsIDY4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNCwgCisgICAgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTQzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgNSwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI2LCAyMTgsIDkxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MywgOTgsIDIxOCwgCisgICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ1LCAyMzksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjEyLCA0NiwgMjE4LCAyMDMsIAorICAgIDI0MywgMTYwLCAyLCAyNDUsIDI0MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE0NywgMjE4LCAyMDMsIDI0MywgCisgICAgMTYwLCAyLCAyMTIsIDI1MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzYsIDUzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAorICAgIDIzNywgMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDE3NCwgMjI3LCAyMTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCisgICAgMjQ3LCAxNywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTYsIDE4NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDEsIAorICAgIDE4NiwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDIsIDcxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNywgMTg4LCAKKyAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgOTIsIDIwOCwgOTUsIAorICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA1LCAyMTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE5LCA5MiwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyMTUsIDIwMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDEyNywgMjE4LCAyMDMsIAorICAgIDI0MywgMTYwLCAyLCAyMTksIDE5NCwgMjQ5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzksIDE5MywgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAyMzcsIDI1NSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTEsIDUwLCAyMTgsIDIwMywgCisgICAgMjQzLCAxNjAsIDIsIDUsIDI1MCwgOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDQsIDcyLCAyNDgsIDIzOCwgMjE4LCAKKyAgICAyMDMsIDI0MywgMTYwLCAyLCAzOSwgMjIwLCA4OSwgOTUsIDIyNiwgMTk3LCAxLCA2MywgMjI2LCAxOTcsIDEsIDc0LCAyMjYsIAorICAgIDE5NywgMSwgMjQ5LCAyNTUsIDIyNiwgMTk3LCAxLCAyNDgsIDk5LCAyMjYsIDE5NywgMSwgMjM5LCA3NSwgMjI2LCAxOTcsIAorICAgIDEsIDI0NSwgNTEsIDIyNiwgMTk3LCAxLCA3NSwgMjI2LCAxOTcsIDEsIDIwNCwgMTQ0LCAyMjYsIDE5NywgMSwgMjAyLCAKKyAgICAxNTksIDIyNiwgMTk3LCAxLCAyMDksIDExMCwgMjI2LCAxOTcsIDEsIDIzMCwgMTg0LCAyMjYsIDE5NywgMSwgMjMwLCA1NCwgCisgICAgMjI2LCAxOTcsIDEsIDIxNywgMTM0LCAyMjYsIDE5NywgMSwgMTU5LCAyMjYsIDE5NywgMSwgMjI2LCAxODUsIDIyNiwgMTk3LCAKKyAgICAxLCAyMjMsIDE2MywgMjI2LCAxOTcsIDEsIDIyNCwgODcsIDIyNiwgMTk3LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTcsIDEsIAorICAgIDY4LCAyMjYsIDE5NywgMSwgMjE5LCAxODQsIDIyNiwgMTk3LCAxLCAyMjksIDQ4LCAyMjYsIDE5NywgMSwgMTQ2LCAyMjYsIAorICAgIDE5NywgMSwgMTk0LCAyMjYsIDE5NywgMSwgMjEwLCA2OSwgMjI2LCAxOTcsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NywgMSwgCisgICAgMjUwLCAyMzEsIDIyNiwgMTk3LCAxLCAyNDEsIDkyLCAyMjYsIDE5NywgMSwgMjM3LCAxNzEsIDIyNiwgMTk3LCAxLCAyMDMsIAorICAgIDE5NiwgMjQ3LCAzMiwgMSwgNjMsIDI0NywgMzIsIDEsIDIxOSwgMTcwLCAyNDcsIDMyLCAxLCAyNDUsIDUxLCAyNDcsIDMyLCAKKyAgICAxLCAxNTksIDI0NywgMzIsIDEsIDIwNiwgMTc2LCAyNDcsIDMyLCAxLCAxNDYsIDI0NywgMzIsIDEsIDIyNywgMjM4LCAyNDcsIAorICAgIDMyLCAxLCAyNTQsIDM0LCAyNDcsIDMyLCAxLCAyMTcsIDEzNCwgMjQ3LCAzMiwgMSwgMjQ5LCAyNTUsIDI0NywgMzIsIDEsIAorICAgIDIyNiwgMTg1LCAyNDcsIDMyLCAxLCA3OCwgMjQ3LCAzMiwgMSwgMjQ0LCAyMTQsIDI0NywgMzIsIDEsIDIxMCwgNjksIDI0NywgCisgICAgMzIsIDEsIDIxMywgOTIsIDI0NywgMzIsIDEsIDIxMywgOTEsIDI0NywgMzIsIDEsIDE5NCwgMjQ3LCAzMiwgMSwgMjQ3LCAKKyAgICAxMjQsIDI0NywgMzIsIDEsIDY4LCAyNDcsIDMyLCAxLCAyMjEsIDIyOCwgMjQ3LCAzMiwgMSwgMjAzLCAxOTYsIDI0NywgMzIsIAorICAgIDEsIDIyMywgMTYzLCAyNDcsIDMyLCAxLCAyMDcsIDI0MywgMjQ3LCAzMiwgMSwgMjE5LCAxODQsIDI0NywgMzIsIDEsIDIxMSwgCisgICAgMTY3LCAyNDcsIDMyLCAxLCA3NSwgMjQ3LCAzMiwgMSwgNzQsIDI0NywgMzIsIDEsIDIwNiwgMTczLCAyNDcsIDMyLCAxLCAKKyAgICAyMzAsIDU0LCAyNDcsIDMyLCAxLCAyMzAsIDQ1LCAyNDcsIDMyLCAxLCAyMjMsIDI3LCAyNDcsIDMyLCAxLCAyMDYsIDE3OCwgCisgICAgMjQ3LCAzMiwgMSwgMjM5LCA3NSwgMjQ3LCAzMiwgMSwgMjM5LCAxMCwgMjQ3LCAzMiwgMSwgMjExLCAxMDgsIDI0NywgMzIsIAorICAgIDEsIDIxMSwgMTA3LCAyNDcsIDMyLCAxLCAyMjIsIDIwNSwgMjQ3LCAzMiwgMSwgMjMxLCA4MywgMjQ3LCAzMiwgMSwgMjQ3LCAKKyAgICAxMjMsIDI0NywgMzIsIDEsIDIwNywgMjQ0LCAyNDcsIDMyLCAxLCAyMDYsIDE3NSwgMjQ3LCAzMiwgMSwgMjE1LCAxODYsIAorICAgIDI0NywgMzIsIDEsIDIyNSwgNTksIDI0NywgMzIsIDEsIDIyNSwgNTgsIDI0NywgMzIsIDEsIDIyNSwgNTcsIDI0NywgMzIsIAorICAgIDEsIDIyNSwgNTYsIDI0NywgMzIsIDEsIDIyNywgMjM3LCAyNDcsIDMyLCAxLCAyNDEsIDE5MCwgMjQ3LCAzMiwgMSwgMjA2LCAKKyAgICAxNzQsIDg0LCAyNDEsIDQ0LCAyMDksIDM1LCA4MiwgODQsIDI0MSwgNDQsIDE3LCAxMDUsIDg0LCAyNDEsIDQ0LCAxNywgCisgICAgMTA4LCA4NCwgMjQxLCA0NCwgMTcsIDE0NywgODQsIDI0MSwgNDQsIDE3LCAxNDksIDg0LCAyNDEsIDQ0LCAxNywgMTcwLCAKKyAgICA4NCwgMjQxLCA0NCwgMTcsIDE5NSwgODQsIDI0MSwgNDQsIDE3LCAyMTMsIDExMSwgODQsIDI0MSwgNDQsIDE3LCAxOTksIAorICAgIDg0LCAyNDEsIDQ0LCAxNywgMjIyLCA2MywgODQsIDI0MSwgNDQsIDQyLCAyMDksIDE1MiwgODQsIDI0MSwgNDQsIDQyLCAKKyAgICAyMDcsIDE1MSwgODQsIDI0MSwgNDQsIDQyLCAyMDksIDUzLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTUzLCA4NCwgMjQxLCAKKyAgICA0NCwgNDIsIDI0MCwgMTgsIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA3NCwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDEwNSwgODQsIAorICAgIDI0MSwgNDQsIDQyLCAyNDEsIDEzNCwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDU4LCA4NCwgMjQxLCA0NCwgNDIsIDExOCwgCisgICAgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjAsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTI2LCAyMzYsIDExLCAKKyAgICA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAKKyAgICA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIAorICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgCisgICAgMzgsIDM3LCAxLCA2MywgMzgsIDM3LCAxLCAyNDgsIDE2MiwgMzgsIDM3LCAxLCAyMjksIDIwMSwgMzgsIDM3LCAxLCAyNDQsIAorICAgIDc1LCAzOCwgMzcsIDEsIDc0LCAzOCwgMzcsIDEsIDIwNiwgNTUsIDM4LCAzNywgMSwgMjAyLCA5MiwgMzgsIDM3LCAxLCAKKyAgICAyMzcsIDY3LCAzOCwgMzcsIDEsIDIwOSwgOTIsIDM4LCAzNywgMSwgNzUsIDM4LCAzNywgMSwgMTczLCAzOCwgMzcsIDEsIAorICAgIDI0MSwgMTIyLCAzOCwgMzcsIDEsIDI0MSwgMTAzLCAzOCwgMzcsIDEsIDI0MSwgOTIsIDM4LCAzNywgMSwgMjQxLCA3LCAzOCwgCisgICAgMzcsIDEsIDc4LCAzOCwgMzcsIDEsIDIxOSwgMzQsIDM4LCAzNywgMSwgMjEzLCA0MywgMzgsIDM3LCAxLCAyMjgsIDIwOSwgCisgICAgMzgsIDM3LCAxLCAyNDEsIDI4LCAzOCwgMzcsIDEsIDI0MSwgMTcsIDM4LCAzNywgMSwgMjA5LCAxODcsIDM4LCAzNywgMSwgCisgICAgNjgsIDM4LCAzNywgMSwgMjQxLCAxMjUsIDM4LCAzNywgMSwgMjE4LCAxOTUsIDM4LCAzNywgMSwgMjI5LCAxMjksIDM4LCAKKyAgICAzNywgMSwgMjQxLCAxNTQsIDM4LCAzNywgMSwgMjQxLCAxOSwgMzgsIDM3LCAxLCAyNDYsIDE3MCwgMzgsIDM3LCAxLCAyMzEsIAorICAgIDgzLCAzOCwgMzcsIDEsIDIwNiwgMTc4LCAzOCwgMzcsIDEsIDI0MSwgMCwgMzgsIDM3LCAyMjEsIDQ0LCAxMDUsIDM4LCAzNywgCisgICAgMjIxLCA0NCwgMTcwLCAzOCwgMzcsIDIyMSwgNDQsIDIwOSwgMTUyLCAzOCwgMzcsIDIyMSwgNDQsIDI0MCwgMTgsIDIzOCwgCisgICAgMTcsIDEsIDI1MSwgNjcsIDIzOCwgMTcsIDEsIDI0OCwgMjU1LCAyMzgsIDE3LCAxLCAyMzgsIDc4LCAyMzgsIDE3LCAxLCAKKyAgICAyNDQsIDE5NCwgMjM4LCAxNywgMSwgMjUxLCA2MywgMjM4LCAxNywgMSwgMjE3LCAxMTcsIDIzOCwgMTcsIDEsIDIzMCwgCisgICAgMTk2LCAyMzgsIDE3LCAxLCAyMzcsIDE1MCwgMjM4LCAxNywgMSwgMjA5LCA0OSwgMjM4LCAxNywgMSwgMjQxLCAxMzMsIAorICAgIDIzOCwgMTcsIDEsIDIyOCwgMTc2LCAyMzgsIDE3LCAxLCAyMjgsIDkwLCAyMzgsIDE3LCAxLCAyMjUsIDExNCwgMjM4LCAxNywgCisgICAgMSwgMjIzLCA2MiwgMjM4LCAxNywgMSwgMjMwLCAxNTQsIDIzOCwgMTcsIDEsIDIwNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTksIAorICAgIDE0NSwgMjM4LCAxNywgMSwgMjIyLCA1OCwgMjM4LCAxNywgMSwgMjE2LCAxOTYsIDIzOCwgMTcsIDEsIDIxNCwgMjE2LCAKKyAgICAyMzgsIDE3LCAxLCAyMDksIDE2NiwgMjM4LCAxNywgMSwgMjA0LCAxMCwgMjM4LCAxNywgMSwgMjQwLCA4OCwgMjM4LCAxNywgCisgICAgMSwgMjMxLCA4NywgMjM4LCAxNywgMSwgMjM1LCAyNTIsIDIzOCwgMTcsIDEsIDIxOSwgMjIzLCAyMzgsIDE3LCAxLCAyMjIsIAorICAgIDY0LCAyMzYsIDExLCAzOCwgMjE4LCAyMzcsIDEsIDI1MCwgMjMxLCAzOCwgMjE4LCAyMzcsIDEsIDI0NywgMTYwLCAzOCwgCisgICAgMjE4LCAyMzcsIDEsIDIzOCwgMjQ4LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOCwgMjE4LCAyMzcsIDEsIDc0LCAKKyAgICAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgNjIsIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDcsIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjAyLCA5OSwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NSwgMzgsIDIxOCwgMjM3LCAxLCA3NSwgMzgsIDIxOCwgMjM3LCAxLCAKKyAgICAyMjksIDE1LCAzOCwgMjE4LCAyMzcsIDEsIDIyNywgMjA2LCAzOCwgMjE4LCAyMzcsIDEsIDIyNCwgMjM4LCAzOCwgMjE4LCAKKyAgICAyMzcsIDEsIDIyMiwgMjI4LCAzOCwgMjE4LCAyMzcsIDEsIDIwNSwgMTc1LCAzOCwgMjE4LCAyMzcsIDEsIDIxOSwgMjIsIAorICAgIDM4LCAyMTgsIDIzNywgMSwgMjE2LCAxMjEsIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjA5LCAyNTAsIDM4LCAyMTgsIDIzNywgMSwgNjgsIDM4LCAyMTgsIDIzNywgMSwgMjQ2LCAxNTEsIDM4LCAyMTgsIDIzNywgCisgICAgMSwgMjEyLCAyMzUsIDM4LCAyMTgsIDIzNywgMSwgMjEzLCA0NSwgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDIxNSwgMzgsIAorICAgIDIxOCwgMjM3LCAxLCAyMDMsIDMwLCAzOCwgMjE4LCAyMzcsIDEsIDc4LCAzOCwgMjE4LCAyMzcsIDEsIDIyMCwgMTgsIDM4LCAKKyAgICAyMTgsIDIzNywgMSwgMjQxLCAxNTQsIDM4LCAyMTgsIDIzNywgMSwgMTUyLCAzOCwgMjE4LCAyMzcsIDEsIDIwNywgMjU0LCAKKyAgICAzOCwgMjE4LCAyMzcsIDEsIDIwNiwgNDMsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAzNCwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIAorICAgIDMyLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgNjYsIDM4LCAyMTgsIDIzNywgMSwgMjMxLCAxMTAsIDM4LCAyMTgsIDIzNywgMSwgCisgICAgMjAyLCAyMTMsIDM4LCAyMTgsIDIzNywgMSwgMTk4LCAzOCwgMjE4LCAyMzcsIDEsIDIzNSwgMTcxLCAzOSwgMzgsIDIxOCwgCisgICAgMjM3LCAxLCAyNTAsIDIzMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIAorICAgIDIwMiwgOTksIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIyMiwgMjI4LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgCisgICAgMjA3LCAxOSwgMSwgMjUxLCA2LCAyMDcsIDE5LCAxLCAyNDgsIDEwNiwgMjA3LCAxOSwgMSwgMjM4LCAyMzYsIDIwNywgMTksIAorICAgIDEsIDIyOSwgMTQ0LCAyMDcsIDE5LCAxLCAyNDQsIDM3LCAyMDcsIDE5LCAxLCAyMzYsIDEzNiwgMjA3LCAxOSwgMSwgMjA0LCAKKyAgICAwLCAyMDcsIDE5LCAxLCAyMDIsIDgzLCAyMDcsIDE5LCAxLCAyMzYsIDQ1LCAyMDcsIDE5LCAxLCAyMDksIDEzMiwgMjA3LCAKKyAgICAxOSwgMSwgMjAyLCAyMzYsIDIwNywgMTksIDEsIDIzMCwgMjIsIDIwNywgMTksIDEsIDIxMiwgMjU1LCAyMDcsIDE5LCAxLCAKKyAgICAyMjgsIDI0LCAyMDcsIDE5LCAxLCAyMjQsIDI0NywgMjA3LCAxOSwgMSwgMjQzLCAyNTMsIDIwNywgMTksIDEsIDIyMSwgNDAsIAorICAgIDIwNywgMTksIDEsIDIwMiwgNiwgMjA3LCAxOSwgMSwgMjE0LCAyNDgsIDIwNywgMTksIDEsIDI1MSwgNTksIDIwNywgMTksIAorICAgIDEsIDIxNywgMTkxLCAyMDcsIDE5LCAxLCAyMTUsIDI3LCAyMDcsIDE5LCAxLCAyMTcsIDcwLCAyMDcsIDE5LCAxLCAyMTYsIAorICAgIDE3NSwgMjA3LCAxOSwgMSwgMjA5LCA5NiwgMjA3LCAxOSwgMSwgMjM4LCAxMTQsIDIwNywgMTksIDEsIDEzNSwgMjA3LCAxOSwgCisgICAgMSwgNzUsIDIwNywgMTksIDEsIDY4LCAyMDcsIDE5LCAxLCAyMTEsIDExOSwgMjA3LCAxOSwgMjAzLCAyMzgsIDI0MywgMTQxLCAKKyAgICAzOCwgMjE4LCAyMzEsIDIsIDYzLCAzOCwgMjE4LCAyMzEsIDIsIDc1LCAzOCwgMjE4LCAyMzEsIDIsIDY4LCAzOCwgMjE4LCAKKyAgICAyMzEsIDIsIDE3MywgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIDIwOSwgMzgsIDIxOCwgMjMxLCAyLCAyMzksIDgsIDM4LCAyMTgsIAorICAgIDIzMSwgMiwgMjM3LCAyMzAsIDM4LCAyMTgsIDIzMSwgMiwgMjAzLCAxODIsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCA5MiwgCisgICAgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE4MSwgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE0MSwgMzgsIDIxOCwgMjMxLCAyLCAKKyAgICAyMTAsIDIyLCAzOCwgMjE4LCAyMzEsIDIsIDIwNywgMjAzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMjEyLCAzOCwgMjE4LCAKKyAgICAyMzEsIDIsIDI0MywgMjMzLCAzOCwgMjE4LCAyMzEsIDIsIDI0MiwgNDIsIDM4LCAyMTgsIDIzMSwgMiwgMjA5LCAxMDgsIAorICAgIDM4LCAyMTgsIDIzMSwgMiwgMTg1LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgMzIsIDM4LCAyMTgsIDIzMSwgMiwgMjQwLCAKKyAgICAxMDgsIDM4LCAyMTgsIDIzMSwgMiwgMjAxLCAyMDEsIDM4LCAyMTgsIDIzMSwgMiwgMjIxLCA4NCwgMzgsIDIxOCwgMjMxLCAKKyAgICAyLCAxOTIsIDM4LCAyMTgsIDIzMSwgMiwgMjI0LCAxNTUsIDM4LCAyMTgsIDIzMSwgMiwgMjIzLCAyNDYsIDM4LCAyMTgsIAorICAgIDIzMSwgMiwgMTk4LCAzOCwgMjE4LCAyMzEsIDIsIDIwNiwgODYsIDM4LCAyMTgsIDIzMSwgMiwgMjA1LCAyMzAsIDM4LCAKKyAgICAyMTgsIDIzMSwgMiwgMjE2LCAyMjAsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAxNDUsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAKKyAgICAxMTMsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAzNiwgMzgsIDIxOCwgMjMxLCAyLCAyMDIsIDExNiwgMzgsIDIxOCwgMjMxLCAKKyAgICAyLCAyMTMsIDkwLCAzOCwgMjE4LCAyMzEsIDIsIDIxMSwgMTY0LCAzOCwgMjE4LCAyMzEsIDIsIDE1MiwgMzgsIDIxOCwgCisgICAgMjMxLCAyLCAyNTAsIDI4LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjcsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNiwgMzgsIAorICAgIDIxOCwgMjMxLCAyLCAyMDMsIDE1MywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDE5MCwgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIAorICAgIDE4OSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDgsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCAxNDQsIDM4LCAyMTgsIDIzMSwgCisgICAgMjAzLCAyMzgsIDI0MywgMTQxLCAzOCwgMjE4LCAyMzEsIDQyLCAxMDUsIDM4LCAyMTgsIDIzMSwgNDIsIDEwOCwgMzgsIAorICAgIDIxOCwgMjMxLCA0MiwgMjA5LCAxNTIsIDM4LCAyMTgsIDIzMSwgNDIsIDIwNywgMTUxLCAzOCwgMjE4LCAyMzEsIDQyLCAKKyAgICAyMzYsIDExLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA2LCAxLCAKKyAgICAxNjMsIDYzLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDYsIAorICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgCisgICAgNzQsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCisgICAgMTcsIDYsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIAorICAgIDI1MCwgOCwgMjQ0LCAxNywgNiwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDYsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyMDMsIDQ5LCAyNDQsIDE3LCA2LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNiwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDYsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA2LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA2LCAxLCAKKyAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNiwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDYsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA2LCAKKyAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDYsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDYsIAorICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA2LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA2LCAKKyAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDYsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDYsIDEsIAorICAgIDI0MSwgMjgsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQxLCA5MiwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNiwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNiwgMSwgCisgICAgMjQwLCAyMjAsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDUsIDEsIAorICAgIDE2MywgNjMsIDI0NCwgMTcsIDUsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNSwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNSwgCisgICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAKKyAgICA3NCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKKyAgICAxNywgNSwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgCisgICAgMjUwLCA4LCAyNDQsIDE3LCA1LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNSwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDUsIDEsIAorICAgIDIwMywgNDksIDI0NCwgMTcsIDUsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA1LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNSwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDUsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDUsIDEsIAorICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA1LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNSwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDUsIAorICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNSwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNSwgCisgICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDUsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDUsIAorICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNywgMjQ0LCAxNywgNSwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNSwgMSwgCisgICAgMjQxLCAyOCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDEsIDkyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA1LCAxLCAKKyAgICAyNDAsIDIyMCwgMjEzLCA1MCwgMSwgMjE5LCAyMCwgMjEzLCA1MCwgMSwgMjA4LCAxMzEsIDIxMywgNTAsIDEsIDIyOSwgOTYsIAorICAgIDIxMywgNTAsIDEsIDI0MCwgNTMsIDIxMywgNTAsIDEsIDIwOSwgNjUsIDIxMywgNTAsIDEsIDIxMiwgMTMsIDIxMywgNTAsIAorICAgIDEsIDIxMCwgMTkwLCAyMTMsIDUwLCAxLCAyNDYsIDkwLCAyMTMsIDUwLCAxLCAyMDMsIDUxLCAyMTMsIDUwLCAxLCAyMzYsIAorICAgIDksIDIxMywgNTAsIDEsIDI0OCwgODUsIDIxMywgNTAsIDEsIDI0NCwgNzQsIDIxMywgNTAsIDEsIDIzOCwgMjUwLCAyMTMsIAorICAgIDUwLCAxLCAyMDUsIDE3MCwgMjEzLCA1MCwgMSwgMjA5LCA3MSwgMjEzLCA1MCwgMSwgMjAyLCAxNSwgMjEzLCA1MCwgMSwgCisgICAgMjI1LCAxOCwgMjEzLCA1MCwgMSwgMjMwLCA4MCwgMjEzLCA1MCwgMSwgMjAzLCAyNTQsIDIxMywgNTAsIDEsIDIzNywgMTU5LCAKKyAgICAyMTMsIDUwLCAxLCAyMjcsIDMzLCAyMTMsIDUwLCAxLCAyMjQsIDExMSwgMjEzLCA1MCwgMSwgMjMxLCA5MCwgMjEzLCA1MCwgCisgICAgMSwgMjQxLCAxNTIsIDIxMywgNTAsIDEsIDI1MCwgNzUsIDIxMywgNTAsIDEsIDI1MSwgMTEzLCAyMTMsIDUwLCAxLCAyMjAsIAorICAgIDMxLCAyMTMsIDUwLCAxLCAyMDMsIDI0MSwgMjEzLCA1MCwgMSwgMjE5LCAyMTEsIDIxMywgNTAsIDEsIDI1MSwgNzMsIDIxMywgCisgICAgNTAsIDEsIDIxNSwgMjI0LCAyMTMsIDUwLCAxLCAyMjEsIDQwLCAyMTMsIDUwLCAxLCAyNDEsIDE3MiwgMjEzLCA1MCwgMSwgCisgICAgMjUxLCA3OCwgMjEzLCA1MCwgMSwgMjM1LCAxNjIsIDIxMywgNTAsIDEsIDIwNiwgMjI0LCAyMTMsIDUwLCAxLCAyMjAsIDk1LCAKKyAgICAyMTMsIDUwLCAxLCAyMjAsIDEwLCAyMTMsIDUwLCAxLCAyMjAsIDU1LCAyMTMsIDUwLCAxLCAyNTAsIDExLCAyMTMsIDUwLCAKKyAgICAxLCAyNTAsIDEyMSwgMjEzLCA1MCwgMSwgMjE5LCAyNDQsIDIxMywgNTAsIDEsIDI1MSwgNTQsIDIxMywgNTAsIDEsIDI0MSwgCisgICAgMjEsIDIxMywgNTAsIDEsIDI1MCwgOTksIDIxMywgNTAsIDEsIDI0MSwgMTgzLCAyMTMsIDUwLCAxLCAyMzUsIDE3MCwgMjEzLCAKKyAgICA1MCwgMSwgMjAzLCAxNiwgMjE5LCAyMjUsIDEsIDI1MSwgMzAsIDIxOSwgMjI1LCAxLCAyNDksIDMyLCAyMTksIDIyNSwgMSwgCisgICAgMjEwLCAyMiwgMjE5LCAyMjUsIDEsIDIzMCwgMTgxLCAyMTksIDIyNSwgMSwgMjAzLCAxODIsIDIxOSwgMjI1LCAxLCAyMjksIAorICAgIDE0NCwgMjE5LCAyMjUsIDEsIDI0NCwgNjAsIDIxOSwgMjI1LCAxLCAyMTYsIDIyMCwgMjE5LCAyMjUsIDEsIDIxNSwgMzYsIAorICAgIDIxOSwgMjI1LCAxLCAyMTMsIDUsIDIxOSwgMjI1LCAxLCAyNDQsIDEsIDIxOSwgMjI1LCAxLCAyNDcsIDcsIDIxOSwgMjI1LCAKKyAgICAxLCAyMzksIDgsIDIxOSwgMjI1LCAxLCAyNDAsIDEwOCwgMjE5LCAyMjUsIDEsIDIxNywgMTI0LCAyMTksIDIyNSwgMSwgCisgICAgMjMwLCAzOCwgMjE5LCAyMjUsIDEsIDIyOCwgMTA4LCAyMTksIDIyNSwgMSwgMjI0LCAxMjQsIDIxOSwgMjI1LCAxLCAyMjEsIAorICAgIDI0LCAyMTksIDIyNSwgMSwgMjA0LCA3MCwgMjE5LCAyMjUsIDEsIDE1MiwgMjE5LCAyMjUsIDEsIDE5OCwgMjE5LCAyMjUsIAorICAgIDEsIDYzLCAyMTksIDIyNSwgMSwgNzQsIDIxOSwgMjI1LCAxLCA3NSwgMjE5LCAyMjUsIDEsIDc4LCAyMTksIDIyNSwgMSwgCisgICAgNjgsIDIxOSwgMjI1LCAxLCAyNTIsIDI1LCAyMTksIDIyNSwgMSwgMjQxLCAxNjEsIDIxOSwgMjI1LCAxLCAyMjAsIDE4LCAKKyAgICAyMTksIDIyNSwgMTcsIDIwMiwgODQsIDIxOSwgMjI1LCAxNywgMTA1LCAyMTksIDIyNSwgMTcsIDEwOCwgMjE5LCAyMjUsIAorICAgIDE3LCAxNDcsIDIxOSwgMjI1LCAxNywgMTQ5LCAyMTksIDIyNSwgMTcsIDE3MCwgMjE5LCAyMjUsIDE3LCAxOTUsIDIxOSwgCisgICAgMjI1LCAxNywgMjEzLCAxMTEsIDIxOSwgMjI1LCAxNywgMTk5LCAyMTksIDIyNSwgMTcsIDIyMiwgNjMsIDI0MSwgMTE4LCAxLCAKKyAgICA2MywgMjQxLCAxMTgsIDEsIDI0OCwgMTYyLCAyNDEsIDExOCwgMSwgMjQ2LCAyMzgsIDI0MSwgMTE4LCAxLCAyNDYsIDE3MCwgCisgICAgMjQxLCAxMTgsIDEsIDI0NCwgNzUsIDI0MSwgMTE4LCAxLCAyMjMsIDE3LCAyNDEsIDExOCwgMSwgMjQzLCAyNDgsIDI0MSwgCisgICAgMTE4LCAxLCAyNDEsIDE0NSwgMjQxLCAxMTgsIDEsIDc0LCAyNDEsIDExOCwgMSwgMjQwLCA2MCwgMjQxLCAxMTgsIDEsIAorICAgIDIzOCwgMTkwLCAyNDEsIDExOCwgMSwgMjM4LCA1MiwgMjQxLCAxMTgsIDEsIDIzNywgNjcsIDI0MSwgMTE4LCAxLCA3NSwgCisgICAgMjQxLCAxMTgsIDEsIDIzMCwgMTYxLCAyNDEsIDExOCwgMSwgMjI5LCAyMDEsIDI0MSwgMTE4LCAxLCAyMjcsIDIzNCwgMjQxLCAKKyAgICAxMTgsIDEsIDIyNywgNzMsIDI0MSwgMTE4LCAxLCAyMjUsIDIwLCAyNDEsIDExOCwgMSwgMjIyLCAyNDAsIDI0MSwgMTE4LCAKKyAgICAxLCAyMDEsIDIwMSwgMjQxLCAxMTgsIDEsIDIyMiwgNDEsIDI0MSwgMTE4LCAxLCA3OCwgMjQxLCAxMTgsIDEsIDIxOSwgMzQsIAorICAgIDI0MSwgMTE4LCAxLCAyMTcsIDEwNiwgMjQxLCAxMTgsIDEsIDIxNiwgMTU4LCAyNDEsIDExOCwgMSwgMjE1LCAxODAsIDI0MSwgCisgICAgMTE4LCAxLCAyMTQsIDE3NywgMjQxLCAxMTgsIDEsIDIxMywgNDMsIDI0MSwgMTE4LCAxLCAyMDksIDE4NywgMjQxLCAxMTgsIAorICAgIDEsIDIwOSwgOTIsIDI0MSwgMTE4LCAxLCA2OCwgMjQxLCAxMTgsIDEsIDIwNiwgNTUsIDI0MSwgMTE4LCAxLCAyMDMsIDE3NiwgCisgICAgMjQxLCAxMTgsIDEsIDIwMywgMTI0LCAyNDEsIDExOCwgMSwgMjAyLCA5MiwgMjQxLCAxMTgsIDEsIDIwMiwgNzEsIDI0MSwgCisgICAgMTE4LCAxLCAyMzgsIDEwNSwgMjQxLCAxMTgsIDEsIDIzOCwgMTExLCAyNDEsIDExOCwgMSwgMjI5LCAxMjksIDI0NywgMTQsIAorICAgIDI1MSwgMzEsIDEsIDI1MSwgMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ4LCAxMDgsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAorICAgIDIzOCwgNjksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NCwgMTQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDE3MSwgCisgICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgMTgzLCAyNDcsIDE0LCAKKyAgICAyNTEsIDMxLCAxLCAyMDIsIDY1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDksIDIxMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCisgICAgMjQ2LCAxOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMjI0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDgwLCAKKyAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIyMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA5MCwgMjQ3LCAxNCwgCisgICAgMjUxLCAzMSwgMSwgMjI4LCAxNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMzUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAorICAgIDIwMywgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDIsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgMzksIDI0NywgCisgICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDI0MCwgMjQ3LCAxNCwgMjUxLCAKKyAgICAzMSwgMSwgMjI2LCAxOTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzNywgMTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgCisgICAgMTA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNTAsIDE3NywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxMDcsIDI0NywgCisgICAgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDUsIDYzLCAyNDcsIDE0LCAyNTEsIDMxLCAKKyAgICAxLCAyMjUsIDEwMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAxMTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMSwgCisgICAgMTUxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA3MywgMjQ3LCAKKyAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNjIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMCwgMzEsIDI0NywgMTQsIDI1MSwgMzEsIAorICAgIDEsIDIwNywgMTI1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDgzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI1MywgCisgICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNzYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOSwgOSwgMjQ3LCAxNCwgMjUxLCAKKyAgICAzMSwgMSwgMjM4LCA5NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE2LCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgCisgICAgOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwNSwgMjMyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDgsIDE5MywgMjQ3LCAKKyAgICAxNCwgMjUxLCAzMSwgMSwgMjEyLCAyMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTk0LCAyNDcsIDE0LCAyNTEsIAorICAgIDMxLCAxLCAyNDUsIDY0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMywgCisgICAgNTYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOCwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDYyLCAyNDcsIDE0LCAKKyAgICAyNTEsIDMxLCAyNDYsIDQ5LCA4MiwgMjksIDM0LCAyLCAyNTEsIDIzMSwgMjksIDM0LCAyLCAyNTEsIDIzMCwgMjksIDM0LCAKKyAgICAyLCAyNTEsIDIyOSwgMjksIDM0LCAyLCAyNTEsIDIyOCwgMjksIDM0LCAyLCAyNTEsIDIyNywgMjksIDM0LCAyLCAyNTEsIAorICAgIDIyNiwgMjksIDM0LCAyLCAyNTEsIDIyNSwgMjksIDM0LCAyLCAyNTEsIDIyNCwgMjksIDM0LCAyLCAyNTEsIDIyMywgMjksIAorICAgIDM0LCAyLCAyNTEsIDIyMiwgMjksIDM0LCAyLCAyNTEsIDIyMSwgMjksIDM0LCAyLCAyNTEsIDIyMCwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDIxOSwgMjksIDM0LCAyLCAyNTEsIDIxOCwgMjksIDM0LCAyLCAyNTEsIDIxNywgMjksIDM0LCAyLCAyNTEsIDIxNiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDIxNSwgMjksIDM0LCAyLCAyNTEsIDIxNCwgMjksIDM0LCAyLCAyNTEsIDIxMywgMjksIDM0LCAyLCAKKyAgICAyNTEsIDIxMiwgMjksIDM0LCAyLCAyNTEsIDIxMSwgMjksIDM0LCAyLCAyNTEsIDIxMCwgMjksIDM0LCAyLCAyNTEsIDIwOSwgCisgICAgMjksIDM0LCAyLCAyNTEsIDIwOCwgMjksIDM0LCAyLCAyNTEsIDIwNywgMjksIDM0LCAyLCAyNTEsIDIwNiwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDIwNSwgMjksIDM0LCAyLCAyNTQsIDIzOSwgMjksIDM0LCAyLCAyNTEsIDIwNCwgMjksIDM0LCAyLCAyNTEsIDIwMywgCisgICAgMjksIDM0LCAyLCAyNTEsIDIwMiwgMjksIDM0LCAyLCAyNTEsIDIwMSwgMjksIDM0LCAyLCAyNTEsIDIwMCwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE5OSwgMjksIDM0LCAyLCAyNTEsIDE5OCwgMjksIDM0LCAyLCAyNTEsIDE5NywgMjksIDM0LCAyLCAyNTEsIDE5NiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE5NSwgMjksIDM0LCAyLCAyNTEsIDE5NCwgMjksIDM0LCAyLCAyNTEsIDE5MywgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE5MiwgMjksIDM0LCAyLCAyNTEsIDE5MSwgMjksIDM0LCAyLCAyNTEsIDE5MCwgMjksIDM0LCAyLCAyNTEsIDE4OSwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE4OCwgMjksIDM0LCAyLCAyNTEsIDE4NywgMjksIDM0LCAyLCAyNTEsIDE4NiwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE4NSwgMjksIDM0LCAyLCAyNTEsIDE4NCwgMjksIDM0LCAyLCAyNTEsIDE4MywgMjksIDM0LCAyLCAyNTEsIDE4MiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE4MSwgMjksIDM0LCAyLCAyNTEsIDE4MCwgMjksIDM0LCAyLCAyNTEsIDE3OSwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE3OCwgMjksIDM0LCAyLCAyNTEsIDE3NywgMjksIDM0LCAyLCAyNTEsIDE3NiwgMjksIDM0LCAyLCAyNTEsIDE3NSwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE3NCwgMjksIDM0LCAyLCAyNTEsIDE3MywgMjksIDM0LCAyLCAyNTEsIDE3MiwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE3MSwgMjksIDM0LCAyLCAyNTEsIDE3MCwgMjksIDM0LCAyLCAyNTEsIDE2OSwgMjksIDM0LCAyLCAyNTEsIDE2OCwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE2NywgMjksIDM0LCAyLCAyNTEsIDE2NiwgMjksIDM0LCAyLCAyNTEsIDE2NSwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE2NCwgMjksIDM0LCAyLCAyNTEsIDE2MywgMjksIDM0LCAyLCAyNTEsIDE2MiwgMjksIDM0LCAyLCAyNTQsIDE1MiwgCisgICAgMjksIDM0LCAyLCAyNTEsIDE2MSwgMjksIDM0LCAyLCAyNTEsIDE2MCwgMjksIDM0LCAyLCAyNTQsIDExNywgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE1OSwgMjksIDM0LCAyLCAyNTEsIDE1OCwgMjksIDM0LCAyLCAyNTEsIDE1NywgMjksIDM0LCAyLCAyNTEsIDE1NiwgCisgICAgMjksIDM0LCAyLCAyNTQsIDEwNCwgMjksIDM0LCAyLCAyNTEsIDE1NSwgMjksIDM0LCAyLCAyNTEsIDE1NCwgMjksIDM0LCAyLCAKKyAgICAyNTEsIDE1MywgMjksIDM0LCAyLCAyNTEsIDE1MiwgMjksIDM0LCAyLCAyNTEsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE3NiwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE3NSwgMjksIDM0LCAyLCAyNTMsIDE3NCwgMjksIDM0LCAyLCAyNTMsIDE3MywgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE3MiwgMjksIDM0LCAyLCAyNTMsIDE3MSwgMjksIDM0LCAyLCAyNTMsIDE3MCwgMjksIDM0LCAyLCAyNTMsIDE2OSwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE2NywgMjksIDM0LCAyLCAyNTMsIDE2NiwgMjksIDM0LCAyLCAyNTMsIDE2NSwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE2NCwgMjksIDM0LCAyLCAyNTMsIDE2MywgMjksIDM0LCAyLCAyNTMsIDE2MiwgMjksIDM0LCAyLCAyNTMsIDE2MCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE1OSwgMjksIDM0LCAyLCAyNTMsIDE1OCwgMjksIDM0LCAyLCAyNTMsIDE1NywgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE1NiwgMjksIDM0LCAyLCAyNTMsIDE1NSwgMjksIDM0LCAyLCAyNTMsIDE1NCwgMjksIDM0LCAyLCAyNTMsIDE1MywgCisgICAgMjksIDM0LCAyLCAyNTMsIDE1MiwgMjksIDM0LCAyLCAyNTMsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE1MCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE0OSwgMjksIDM0LCAyLCAyNTMsIDE0OCwgMjksIDM0LCAyLCAyNTMsIDE0NywgMjksIDM0LCAyLCAyNTMsIDE0NiwgCisgICAgMjksIDM0LCAyLCAyNTMsIDE0NSwgMjksIDM0LCAyLCAyNTMsIDE0NCwgMjksIDM0LCAyLCAyNTMsIDE0MywgMjksIDM0LCAyLCAKKyAgICAyNTMsIDE0MiwgMjksIDM0LCAyLCAyNTMsIDE0MCwgMjksIDM0LCAyLCAyNTMsIDEzOSwgMjksIDM0LCAyLCAyNTMsIDEzOCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDEzNCwgMjksIDM0LCAyLCAyNTMsIDEzMywgMjksIDM0LCAyLCAyNTMsIDEzMiwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDEzMSwgMjksIDM0LCAyLCAyNTMsIDEyNywgMjksIDM0LCAyLCAyNTMsIDEyNiwgMjksIDM0LCAyLCAyNTMsIDEyNSwgCisgICAgMjksIDM0LCAyLCAyNTMsIDEyNCwgMjksIDM0LCAyLCAyNTMsIDEyMywgMjksIDM0LCAyLCAyNTMsIDEyMiwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDEyMSwgMjksIDM0LCAyLCAyNTMsIDEyMCwgMjksIDM0LCAyLCAyNTMsIDExOSwgMjksIDM0LCAyLCAyNTMsIDExOCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDExNywgMjksIDM0LCAyLCAyNTMsIDExNiwgMjksIDM0LCAyLCAyNTMsIDExNSwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDExNCwgMjksIDM0LCAyLCAyNTMsIDExMywgMjksIDM0LCAyLCAyNTMsIDExMiwgMjksIDM0LCAyLCAyNTMsIDExMSwgCisgICAgMjksIDM0LCAyLCAyNTMsIDExMCwgMjksIDM0LCAyLCAyNTMsIDEwOSwgMjksIDM0LCAyLCAyNTMsIDEwOCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDEwNywgMjksIDM0LCAyLCAyNTMsIDEwNiwgMjksIDM0LCAyLCAyNTMsIDEwNSwgMjksIDM0LCAyLCAyNTMsIDEwMywgCisgICAgMjksIDM0LCAyLCAyNTMsIDEwMiwgMjksIDM0LCAyLCAyNTMsIDEwMSwgMjksIDM0LCAyLCAyNTMsIDEwMCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDk5LCAyOSwgMzQsIDIsIDI1MywgOTcsIDI5LCAzNCwgMiwgMjUzLCA5NiwgMjksIDM0LCAyLCAyNTMsIDk1LCAyOSwgCisgICAgMzQsIDIsIDI1MywgOTQsIDI5LCAzNCwgMiwgMjUzLCA5MiwgMjksIDM0LCAyLCAyNTMsIDkxLCAyOSwgMzQsIDIsIDI1MywgCisgICAgOTAsIDI5LCAzNCwgMiwgMjUzLCA1NiwgMjksIDM0LCAyLCAyNTMsIDU0LCAyOSwgMzQsIDIsIDI1MywgNTIsIDI5LCAzNCwgCisgICAgMiwgMjUzLCA1MCwgMjksIDM0LCAyLCAyNTMsIDQ4LCAyOSwgMzQsIDIsIDI1MywgNDYsIDI5LCAzNCwgMiwgMjUzLCA0NCwgCisgICAgMjksIDM0LCAyLCAyNTMsIDQyLCAyOSwgMzQsIDIsIDI1MywgNDAsIDI5LCAzNCwgMiwgMjUzLCAzOCwgMjksIDM0LCAyLCAKKyAgICAyNTMsIDM2LCAyOSwgMzQsIDIsIDI1MywgMzMsIDI5LCAzNCwgMiwgMjUzLCAzMSwgMjksIDM0LCAyLCAyNTMsIDI5LCAyOSwgCisgICAgMzQsIDIsIDI1MywgMjcsIDI5LCAzNCwgMiwgMjUzLCAyNSwgMjksIDM0LCAyLCAyNTMsIDIzLCAyOSwgMzQsIDIsIDI1MywgCisgICAgMjEsIDI5LCAzNCwgMiwgMjUzLCAxOSwgMjksIDM0LCAyLCAyNTIsIDE5MywgMjksIDM0LCAyLCAyNTIsIDE5MiwgMjksIDM0LCAKKyAgICAyLCAyNTIsIDE5MSwgMjksIDM0LCAyLCAyNTIsIDE5MCwgMjksIDM0LCAyLCAyNTIsIDE4OSwgMjksIDM0LCAyLCAyNTIsIAorICAgIDE4OCwgMjksIDM0LCAyLCAyNTIsIDE4NiwgMjksIDM0LCAyLCAyNTIsIDE4NSwgMjksIDM0LCAyLCAyNTIsIDE4NCwgMjksIAorICAgIDM0LCAyLCAyNTIsIDE4MywgMjksIDM0LCAyLCAyNTIsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDE4MSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE3OSwgMjksIDM0LCAyLCAyNTIsIDE3OCwgMjksIDM0LCAyLCAyNTIsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDE3MywgCisgICAgMjksIDM0LCAyLCAyNTIsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDE3MCwgMjksIDM0LCAyLCAyNTIsIDE2OSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE2OCwgMjksIDM0LCAyLCAyNTIsIDE2NywgMjksIDM0LCAyLCAyNTIsIDE2NiwgMjksIDM0LCAyLCAyNTIsIDE2NSwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE2NCwgMjksIDM0LCAyLCAyNTIsIDE2MywgMjksIDM0LCAyLCAyNTIsIDE2MiwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDE2MCwgMjksIDM0LCAyLCAyNTIsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDE1OCwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE1NywgMjksIDM0LCAyLCAyNTIsIDE1NiwgMjksIDM0LCAyLCAyNTIsIDE1NSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE1NCwgMjksIDM0LCAyLCAyNTIsIDE1MywgMjksIDM0LCAyLCAyNTIsIDE1MiwgMjksIDM0LCAyLCAyNTIsIDE1MSwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE1MCwgMjksIDM0LCAyLCAyNTIsIDE0OSwgMjksIDM0LCAyLCAyNTIsIDE0OCwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE0NywgMjksIDM0LCAyLCAyNTIsIDE0NiwgMjksIDM0LCAyLCAyNTIsIDE0NSwgMjksIDM0LCAyLCAyNTIsIDE0NCwgCisgICAgMjksIDM0LCAyLCAyNTIsIDE0MywgMjksIDM0LCAyLCAyNTIsIDE0MiwgMjksIDM0LCAyLCAyNTIsIDE0MSwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDE0MCwgMjksIDM0LCAyLCAyNTIsIDEzOSwgMjksIDM0LCAyLCAyNTIsIDEzOCwgMjksIDM0LCAyLCAyNTIsIDEzNywgCisgICAgMjksIDM0LCAyLCAyNTIsIDEzNiwgMjksIDM0LCAyLCAyNTIsIDEzNSwgMjksIDM0LCAyLCAyNTIsIDEzNCwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDEzMywgMjksIDM0LCAyLCAyNTIsIDEzMiwgMjksIDM0LCAyLCAyNTIsIDEzMSwgMjksIDM0LCAyLCAyNTIsIDEzMCwgCisgICAgMjksIDM0LCAyLCAyNTIsIDEyOSwgMjksIDM0LCAyLCAyNTIsIDEyOCwgMjksIDM0LCAyLCAyNTIsIDEyNywgMjksIDM0LCAyLCAKKyAgICAyNTIsIDEyNiwgMjksIDM0LCAyLCAyNTIsIDEyNSwgMjksIDM0LCAyLCAyNTIsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDEyMywgCisgICAgMjksIDM0LCAyLCAyNTIsIDEyMiwgMjksIDM0LCAyLCAyNTIsIDEyMSwgMjksIDM0LCAyLCAyNTIsIDEyMCwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDExOSwgMjksIDM0LCAyLCAyNTIsIDExOCwgMjksIDM0LCAyLCAyNTIsIDExNywgMjksIDM0LCAyLCAyNTIsIDExNiwgCisgICAgMjksIDM0LCAyLCAyNTIsIDExNSwgMjksIDM0LCAyLCAyNTIsIDExNCwgMjksIDM0LCAyLCAyNTIsIDExMywgMjksIDM0LCAyLCAKKyAgICAyNTIsIDExMiwgMjksIDM0LCAyLCAyNTIsIDExMSwgMjksIDM0LCAyLCAyNTIsIDExMCwgMjksIDM0LCAyLCAyNTIsIDEwOSwgCisgICAgMjksIDM0LCAyLCAyNTIsIDEwOCwgMjksIDM0LCAyLCAyNTIsIDEwNywgMjksIDM0LCAyLCAyNTIsIDEwNiwgMjksIDM0LCAyLCAKKyAgICAyNTIsIDEwNSwgMjksIDM0LCAyLCAyNTIsIDEwNCwgMjksIDM0LCAyLCAyNTIsIDEwMywgMjksIDM0LCAyLCAyNTIsIDEwMiwgCisgICAgMjksIDM0LCAyLCAyNTIsIDEwMSwgMjksIDM0LCAyLCAyNTIsIDEwMCwgMjksIDM0LCAyLCAyNTIsIDk5LCAyOSwgMzQsIDIsIAorICAgIDI1MiwgOTgsIDI5LCAzNCwgMiwgMjUyLCA5NywgMjksIDM0LCAyLCAyNTIsIDk2LCAyOSwgMzQsIDIsIDI1MiwgOTUsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA5NCwgMjksIDM0LCAyLCAyNTIsIDkzLCAyOSwgMzQsIDIsIDI1MiwgOTIsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICA5MSwgMjksIDM0LCAyLCAyNTIsIDkwLCAyOSwgMzQsIDIsIDI1MiwgODksIDI5LCAzNCwgMiwgMjUyLCA4OCwgMjksIDM0LCAKKyAgICAyLCAyNTIsIDg3LCAyOSwgMzQsIDIsIDI1MiwgODYsIDI5LCAzNCwgMiwgMjUyLCA4NSwgMjksIDM0LCAyLCAyNTIsIDg0LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgODMsIDI5LCAzNCwgMiwgMjUyLCA4MiwgMjksIDM0LCAyLCAyNTIsIDgxLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgODAsIDI5LCAzNCwgMiwgMjUyLCA3OSwgMjksIDM0LCAyLCAyNTIsIDc4LCAyOSwgMzQsIDIsIDI1MiwgNzcsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA3NiwgMjksIDM0LCAyLCAyNTIsIDc1LCAyOSwgMzQsIDIsIDI1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICA3MywgMjksIDM0LCAyLCAyNTIsIDcyLCAyOSwgMzQsIDIsIDI1MiwgNzEsIDI5LCAzNCwgMiwgMjUyLCA3MCwgMjksIDM0LCAKKyAgICAyLCAyNTIsIDY5LCAyOSwgMzQsIDIsIDI1MiwgNjgsIDI5LCAzNCwgMiwgMjUyLCA2NywgMjksIDM0LCAyLCAyNTIsIDY2LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgNjUsIDI5LCAzNCwgMiwgMjUyLCA2NCwgMjksIDM0LCAyLCAyNTIsIDYzLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgNjIsIDI5LCAzNCwgMiwgMjUyLCA2MSwgMjksIDM0LCAyLCAyNTIsIDYwLCAyOSwgMzQsIDIsIDI1MiwgNTksIDI5LCAKKyAgICAzNCwgMiwgMjUyLCA1OCwgMjksIDM0LCAyLCAyNTIsIDU3LCAyOSwgMzQsIDIsIDI1MiwgNTYsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICA1NSwgNjMsIDI5LCAzNCwgMiwgMjUyLCA1NCwgMjQ5LCAyNTUsIDI5LCAzNCwgMiwgMjUyLCA1MywgMjQ1LCA1MSwgMjksIAorICAgIDM0LCAyLCAyNTIsIDUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIDUxLCAyNDAsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDUwLCAKKyAgICAyMzcsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDQ5LCAyMzAsIDE4NCwgMjksIDM0LCAyLCAyNTIsIDQ4LCAyMzAsIDU0LCAyOSwgCisgICAgMzQsIDIsIDI1MiwgNDcsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDQ2LCAyMjgsIDExOCwgMjksIDM0LCAyLCAyNTIsIDQ1LCAKKyAgICAyMjgsIDExNywgMjksIDM0LCAyLCAyNTIsIDQ0LCAyMjgsIDExNiwgMjksIDM0LCAyLCAyNTIsIDQzLCAyMjgsIDExNSwgMjksIAorICAgIDM0LCAyLCAyNTIsIDQyLCAyMDQsIDE0NCwgMjksIDM0LCAyLCAyNTIsIDQxLCAyMDMsIDE5NiwgMjksIDM0LCAyLCAyNTIsIAorICAgIDQwLCAyMDMsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDM5LCAyMjAsIDM2LCAyOSwgMzQsIDIsIDI1MiwgMzgsIDI1MSwgMTQ3LCAKKyAgICAyOSwgMzQsIDIsIDI1MiwgMzcsIDI0OCwgMTk5LCAyOSwgMzQsIDIsIDI1MiwgMzYsIDI0NCwgMTIyLCAyOSwgMzQsIDIsIAorICAgIDI1MiwgMzUsIDI0MCwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMzQsIDIzMCwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMzMsIDI5LCAKKyAgICAzNCwgMiwgMjUyLCAzMiwgMjksIDM0LCAyLCAyNTIsIDMxLCAyOSwgMzQsIDIsIDI1MiwgMzAsIDI5LCAzNCwgMiwgMjUyLCAKKyAgICAyOSwgMjksIDM0LCAyLCAyNTIsIDI4LCAyOSwgMzQsIDIsIDI1MiwgMjcsIDI5LCAzNCwgMiwgMjUyLCAyNiwgMjQ1LCA1OCwgCisgICAgNCwgNjMsIDI0NSwgNTgsIDQsIDc0LCAyNDUsIDU4LCA0LCA3NSwgMjQ1LCA1OCwgNCwgNzgsIDI0NSwgNTgsIDQsIDY4LCAKKyAgICAyNDUsIDU4LCA0LCAyMzAsIDE4MSwgMjQ1LCA1OCwgNCwgMjMwLCAxMDEsIDI0NSwgNTgsIDQsIDE3MywgMjQ1LCA1OCwgNCwgCisgICAgMjI5LCAyMDEsIDI0NSwgNTgsIDQsIDIyOSwgMTAwLCAyNDUsIDU4LCA0LCAyMjksIDI2LCAyNDUsIDU4LCA0LCAyMjgsIAorICAgIDIwOSwgMjQ1LCA1OCwgNCwgMjI4LCAxMTMsIDI0NSwgNTgsIDQsIDIyNywgMjM0LCAyNDUsIDU4LCA0LCAyMjcsIDE0OCwgCisgICAgMjQ1LCA1OCwgNCwgMjI3LCA0OSwgMjQ1LCA1OCwgNCwgMjI2LCAyMzksIDI0NSwgNTgsIDQsIDE5MiwgMjQ1LCA1OCwgNCwgCisgICAgMjI1LCAyMCwgMjQ1LCA1OCwgNCwgMjI0LCAxNTUsIDI0NSwgNTgsIDQsIDIyNCwgODIsIDI0NSwgNTgsIDQsIDIyMywgMjQ2LCAKKyAgICAyNDUsIDU4LCA0LCAyMDEsIDIwMSwgMjQ1LCA1OCwgNCwgMjIyLCAyNDAsIDI0NSwgNTgsIDQsIDIyMiwgMTAwLCAyNDUsIAorICAgIDU4LCA0LCAyMjEsIDE5MSwgMjQ1LCA1OCwgNCwgMjIxLCA4NCwgMjQ1LCA1OCwgNCwgMTg1LCAyNDUsIDU4LCA0LCAyMTksIAorICAgIDM0LCAyNDUsIDU4LCA0LCAyMTgsIDE2NywgMjQ1LCA1OCwgNCwgMjE4LCA2OSwgMjQ1LCA1OCwgNCwgMjE3LCAxOTEsIDI0NSwgCisgICAgNTgsIDQsIDIxNiwgMjIwLCAyNDUsIDU4LCA0LCAyMTYsIDE1OCwgMjQ1LCA1OCwgNCwgMjE2LCA1NywgMjQ1LCA1OCwgNCwgCisgICAgMjE1LCAyMjcsIDI0NSwgNTgsIDQsIDIxNSwgMTQ1LCAyNDUsIDU4LCA0LCAyMTUsIDM2LCAyNDUsIDU4LCA0LCAyMTQsIAorICAgIDE3NywgMjQ1LCA1OCwgNCwgMjEyLCAxNjIsIDI0NSwgNTgsIDQsIDIxMiwgMTMsIDI0NSwgNTgsIDQsIDIxMSwgMTAsIDI0NSwgCisgICAgNTgsIDQsIDIxMCwgMjIsIDI0NSwgNTgsIDQsIDIwOSwgMTg3LCAyNDUsIDU4LCA0LCAyMDksIDIsIDI0NSwgNTgsIDQsIAorICAgIDEzNSwgMjQ1LCA1OCwgNCwgMjA3LCAyMDMsIDI0NSwgNTgsIDQsIDIwNCwgMTExLCAyNDUsIDU4LCA0LCAyMDQsIDYyLCAKKyAgICAyNDUsIDU4LCA0LCAyMDQsIDMwLCAyNDUsIDU4LCA0LCAyMDQsIDAsIDI0NSwgNTgsIDQsIDIwMywgMTgyLCAyNDUsIDU4LCAKKyAgICA0LCAyMDMsIDE3NiwgMjQ1LCA1OCwgNCwgMjAyLCAxMTYsIDI0NSwgNTgsIDQsIDIwMiwgMTcsIDIzMSwgNTEsIDI1MCwgCisgICAgMTMwLCAxLCAyNTEsIDI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ4LCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKKyAgICAyMzgsIDY3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ0LCAxNzcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMzcsIDY3LCAKKyAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA0LCA3MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwMiwgOTUsIDIzMSwgNTEsIAorICAgIDI1MCwgMTMwLCAxLCAyMzcsIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAxMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAKKyAgICAxLCAyMDIsIDIzNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOSwgMjUwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI4LCAKKyAgICAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyNCwgMjQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjIxLCA0MCwgMjMxLCAKKyAgICA1MSwgMjUwLCAxMzAsIDEsIDIxNCwgMjQ5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjUwLCAzLCAyMzEsIDUxLCAyNTAsIAorICAgIDEzMCwgMSwgMjE5LCAzNCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNSwgMjYsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKKyAgICAyMTcsIDY5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE2LCA5MSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxMiwgMjU1LCAKKyAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAyMDEsIDIzMSwgNTEsIDI1MCwgMTMwLCAyMTQsIDE2OCwgNTQsIDIzMSwgNTEsIAorICAgIDI1MCwgMTMwLCA0MiwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDEwOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAKKyAgICAxNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTIsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA3LCAxNTEsIAorICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjA5LCAzNiwgCisgICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjE5LCAxMzQsIDEsIDI1MSwgMjgsIDIxOSwgMTM0LCAKKyAgICAxLCAyNDgsIDEwNSwgMjE5LCAxMzQsIDEsIDIzOCwgNjcsIDIxOSwgMTM0LCAxLCAyNDQsIDE3NywgMjE5LCAxMzQsIDEsIAorICAgIDIzNywgNjcsIDIxOSwgMTM0LCAxLCAyMDQsIDcwLCAyMTksIDEzNCwgMSwgMjAyLCA5NSwgMjE5LCAxMzQsIDEsIDIzNywgCisgICAgMTksIDIxOSwgMTM0LCAxLCAyMDksIDEyOCwgMjE5LCAxMzQsIDEsIDIwMiwgMjM1LCAyMTksIDEzNCwgMSwgMjI5LCAyNTAsIAorICAgIDIxOSwgMTM0LCAxLCAyMjgsIDE5LCAyMTksIDEzNCwgMSwgMjI0LCAyNDcsIDIxOSwgMTM0LCAxLCA0NiwgMjIxLCA0MCwgCisgICAgMjE5LCAxMzQsIDEsIDIyMSwgNDAsIDIxOSwgMTM0LCAxLCAyMTQsIDI0OSwgMjE5LCAxMzQsIDEsIDI1MCwgMywgMjE5LCAKKyAgICAxMzQsIDEsIDIxOSwgMzQsIDIxOSwgMTM0LCAxLCAyMTUsIDI2LCAyMTksIDEzNCwgMSwgMjE3LCA2OSwgMjE5LCAxMzQsIDEsIAorICAgIDIxNiwgOTEsIDIxOSwgMTM0LCAxLCAyMTIsIDI1NSwgMjE5LCAxMzQsIDEsIDIwOSwgMjAxLCAyMTksIDEzNCwgMjI3LCAKKyAgICAyMTcsIDIzOSwgMjEyLCAyMTksIDEzNCwgMjE2LCAxMSwgMjM5LCAyMTIsIDIxOSwgMTM0LCA0MiwgMTA1LCAyMTksIDEzNCwgCisgICAgNDIsIDEwOCwgMjE5LCAxMzQsIDQyLCAxNDcsIDIxOSwgMTM0LCA0MiwgMTQ5LCAyMTksIDEzNCwgNDIsIDE3MCwgMjE5LCAKKyAgICAxMzQsIDQyLCAyMDksIDE1MiwgMjE5LCAxMzQsIDQyLCAyMDcsIDE1MSwgMjIzLCAxMDIsIDEsIDQ2LCAyNTEsIDI4LCAyMjMsIAorICAgIDEwMiwgMSwgMjUxLCAyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyNDgsIDEwNSwgMjIzLCAxMDIsIDEsIDI0OCwgMTA1LCAyMjMsIAorICAgIDEwMiwgMSwgMjM4LCA2NywgMjIzLCAxMDIsIDEsIDI0NCwgMTc3LCAyMjMsIDEwMiwgMSwgNDYsIDIzNywgNjcsIDIyMywgCisgICAgMTAyLCAxLCAyMzcsIDY3LCAyMjMsIDEwMiwgMSwgMjA0LCA3MCwgMjIzLCAxMDIsIDEsIDIwMiwgOTUsIDIyMywgMTAyLCAxLCAKKyAgICAyMzcsIDE5LCAyMjMsIDEwMiwgMSwgMjA5LCAxMjgsIDIyMywgMTAyLCAxLCA0NiwgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCAKKyAgICAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgCisgICAgNDYsIDIyOCwgMTksIDIyMywgMTAyLCAxLCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgNDYsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgCisgICAgMSwgMjI0LCAyNDcsIDIyMywgMTAyLCAxLCA0NiwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAKKyAgICAyMTQsIDI0OSwgMjIzLCAxMDIsIDEsIDI1MCwgMywgMjIzLCAxMDIsIDEsIDIxOSwgMzQsIDIyMywgMTAyLCAxLCAyMTUsIAorICAgIDI2LCAyMjMsIDEwMiwgMSwgMjE3LCA2OSwgMjIzLCAxMDIsIDEsIDIxNiwgOTEsIDIyMywgMTAyLCAxLCA0NiwgMjEyLCAKKyAgICAyNTUsIDIyMywgMTAyLCAxLCAyMTIsIDI1NSwgMjIzLCAxMDIsIDEsIDIwOSwgMjAxLCAyMjMsIDEwMiwgNDIsIDEwNSwgCisgICAgMjIzLCAxMDIsIDQyLCAxMDgsIDIyMywgMTAyLCA0MiwgMTQ3LCAyMjMsIDEwMiwgNDIsIDE0OSwgMjIzLCAxMDIsIDI0NSwgCisgICAgMTE2LCA0MiwgMTQ5LCAyMjMsIDEwMiwgNDIsIDE3MCwgMjIzLCAxMDIsIDQyLCAyMDksIDE1MiwgMjIzLCAxMDIsIDQyLCAKKyAgICAyMDcsIDE1MSwgMjIzLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIDIzNywgNzgsIDEsIDI1MSwgMjgsIDIzNywgNzgsIDEsIAorICAgIDI0OCwgMTA1LCAyMzcsIDc4LCAxLCAyMzgsIDY3LCAyMzcsIDc4LCAxLCAyNDQsIDE3NiwgMjM3LCA3OCwgMSwgMjM3LCA2NywgCisgICAgMjM3LCA3OCwgMSwgMjA0LCA3MCwgMjM3LCA3OCwgMSwgMjAyLCA5NCwgMjM3LCA3OCwgMSwgMjM3LCAxOSwgMjM3LCA3OCwgCisgICAgMSwgMjA5LCAxMjgsIDIzNywgNzgsIDEsIDIwMiwgMjM1LCAyMzcsIDc4LCAxLCAyMjksIDI1MCwgMjM3LCA3OCwgMSwgMjI4LCAKKyAgICAxOSwgMjM3LCA3OCwgMSwgMjI0LCAyNDcsIDIzNywgNzgsIDEsIDIyMSwgNDAsIDIzNywgNzgsIDEsIDIxNCwgMjQ5LCAyMzcsIAorICAgIDc4LCAxLCAyNTAsIDIsIDIzNywgNzgsIDEsIDIxOSwgMzQsIDIzNywgNzgsIDEsIDIxNSwgMjYsIDIzNywgNzgsIDEsIDIxNywgCisgICAgNjksIDIzNywgNzgsIDEsIDIxMiwgMjU1LCAyMzcsIDc4LCAxLCAyMDksIDIwMSwgMjM3LCA3OCwgNDIsIDEwNSwgMjM3LCAKKyAgICA3OCwgNDIsIDE3MCwgMjM3LCA3OCwgNDIsIDIwOSwgMTUyLCAyMzcsIDc4LCA0MiwgMjA3LCAxNTEsIDIzNywgNzgsIDQyLCAKKyAgICAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCAxLCAyNTEsIDI1LCAyMTgsIDE3OCwgMSwgMjQ4LCAxMDgsIDIxOCwgMTc4LCAxLCAKKyAgICAyMzgsIDIzNywgMjE4LCAxNzgsIDEsIDI0NCwgMzksIDIxOCwgMTc4LCAxLCAyMzcsIDY3LCAyMTgsIDE3OCwgMSwgMjA0LCAKKyAgICA3NywgMjE4LCAxNzgsIDEsIDIwMiwgMTA5LCAyMTgsIDE3OCwgMSwgMjM3LCAyMSwgMjE4LCAxNzgsIDEsIDIwOSwgMTMyLCAKKyAgICAyMTgsIDE3OCwgMSwgMjAyLCAyMzYsIDIxOCwgMTc4LCAxLCAyMzAsIDIyLCAyMTgsIDE3OCwgMSwgMjI4LCAyNSwgMjE4LCAKKyAgICAxNzgsIDEsIDIyNCwgMjQ3LCAyMTgsIDE3OCwgMSwgMjIxLCA0MCwgMjE4LCAxNzgsIDEsIDIxMywgMTM3LCAyMTgsIDE3OCwgCisgICAgMSwgMjUxLCA1OSwgMjE4LCAxNzgsIDEsIDIxOSwgMzQsIDIxOCwgMTc4LCAxLCAyMTUsIDI3LCAyMTgsIDE3OCwgMSwgMjE3LCAKKyAgICA3NCwgMjE4LCAxNzgsIDEsIDIxNSwgMjAwLCAyMTgsIDE3OCwgMSwgMjEyLCAyNTUsIDIxOCwgMTc4LCAxLCAyMDksIDIwNywgCisgICAgMjE4LCAxNzgsIDQyLCAxMDUsIDIxOCwgMTc4LCA0MiwgMjA5LCAxNTIsIDIxOCwgMTc4LCA0MiwgMjA3LCAxNTEsIDIxOCwgCisgICAgMTc4LCA0MiwgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgNDIsIDEwOCwgMjE4LCAxNzgsIDQyLCAxNDcsIDIxOCwgMTc4LCAKKyAgICAyMDMsIDIzOCwgMjEzLCAxMzAsIDIyNiwgMTk2LCAxLCA2MywgMjI2LCAxOTYsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NiwgMSwgCisgICAgMjM5LCA3NSwgMjI2LCAxOTYsIDEsIDI0NSwgNTEsIDIyNiwgMTk2LCAxLCA3NCwgMjI2LCAxOTYsIDEsIDIwNiwgMTY0LCAKKyAgICAyMjYsIDE5NiwgMSwgNzUsIDIyNiwgMTk2LCAxLCAyMDMsIDEyNCwgMjI2LCAxOTYsIDEsIDIzMCwgNTQsIDIyNiwgMTk2LCAKKyAgICAxLCAxNTksIDIyNiwgMTk2LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTYsIDEsIDIyMywgMTYzLCAyMjYsIDE5NiwgMSwgNzgsIAorICAgIDIyNiwgMTk2LCAxLCAxNDYsIDIyNiwgMTk2LCAxLCAyMTEsIDE2NywgMjI2LCAxOTYsIDEsIDIxMCwgNjksIDIyNiwgMTk2LCAKKyAgICAxLCA2OCwgMjI2LCAxOTYsIDEsIDI0MCwgMTc0LCAyMjYsIDE5NiwgMSwgMjE3LCAxMzQsIDIyNiwgMTk2LCAxLCAxOTQsIAorICAgIDIyNiwgMTk2LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTYsIDEsIDI1MCwgMjMxLCAyMjYsIDE5NiwgMSwgMjQxLCA5MiwgMjI2LCAKKyAgICAxOTYsIDEsIDIyNiwgMTk5LCAyMjYsIDE5NiwgMSwgMjIxLCAyMjgsIDIyNiwgMTk2LCAxLCAyNDcsIDEyNSwgMjI2LCAxOTYsIAorICAgIDIwOCwgODIsIDgyLCAxMjksIDIzNiwgMjUzLCAxLCA2MywgMTI5LCAyMzYsIDI1MywgMSwgNzQsIDEyOSwgMjM2LCAyNTMsIAorICAgIDEsIDc1LCAxMjksIDIzNiwgMjUzLCAxLCA3OCwgMTI5LCAyMzYsIDI1MywgMSwgMTk4LCAxMjksIDIzNiwgMjUzLCAxLCAKKyAgICAyMDQsIDExMSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMiwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMSwgMTI5LCAyMzYsIAorICAgIDI1MywgMSwgMTg1LCAxMjksIDIzNiwgMjUzLCAxLCAxOTIsIDEyOSwgMjM2LCAyNTMsIDEsIDIwMSwgMjAxLCAxMjksIDIzNiwgCisgICAgMjUzLCAxLCAyMjMsIDExMCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyNDAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjM5LCAKKyAgICAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIyMCwgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMTksIDEyOSwgMjM2LCAyNTMsIDEsIAorICAgIDIyOCwgMTEzLCAxMjksIDIzNiwgMjUzLCAxLCAyMjksIDE0NCwgMTI5LCAyMzYsIDI1MywgMSwgMjM3LCAxMiwgMTI5LCAKKyAgICAyMzYsIDI1MywgMSwgMjE1LCAzNiwgMTI5LCAyMzYsIDI1MywgMSwgMjE1LCAzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjE0LCAKKyAgICAxNzcsIDEyOSwgMjM2LCAyNTMsIDEsIDE3MywgMTI5LCAyMzYsIDI1MywgMSwgMjE3LCAxMjYsIDEyOSwgMjM2LCAyNTMsIDEsIAorICAgIDIxMCwgMjIsIDEyOSwgMjM2LCAyNTMsIDEsIDIxMCwgMjEsIDEyOSwgMjM2LCAyNTMsIDEsIDIwOSwgMTg3LCAxMjksIDIzNiwgCisgICAgMjUzLCAxLCAyMDksIDE4NiwgMTI5LCAyMzYsIDI1MywgMSwgMTM1LCAxMjksIDIzNiwgMjUzLCAxLCAyNDQsIDIxMiwgMTI5LCAKKyAgICAyMzYsIDI1MywgMTYsIDIwNSwgMjI0LCAxMjksIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjMsIDEyOSwgMTkxLCAxLCA2MywgCisgICAgMTI5LCAxOTEsIDEsIDc0LCAxMjksIDE5MSwgMSwgNzUsIDEyOSwgMTkxLCAxLCA3OCwgMTI5LCAxOTEsIDEsIDE5OCwgMTI5LCAKKyAgICAxOTEsIDEsIDIwNCwgMTExLCAxMjksIDE5MSwgMSwgMjQ5LCAzMiwgMTI5LCAxOTEsIDEsIDE4NSwgMTI5LCAxOTEsIDEsIAorICAgIDE5MiwgMTI5LCAxOTEsIDEsIDIwMSwgMjAxLCAxMjksIDE5MSwgMSwgMjIyLCAyNDAsIDEyOSwgMTkxLCAxLCAyMTYsIDIyMCwgCisgICAgMTI5LCAxOTEsIDEsIDIyOCwgMTEzLCAxMjksIDE5MSwgMSwgMjI5LCAxNDQsIDEyOSwgMTkxLCAxLCAyMzcsIDEyLCAxMjksIAorICAgIDE5MSwgMSwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDI1MCwgMTI2LCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjE0LCAxNzcsIAorICAgIDEyOSwgMTkxLCAxLCAxNzMsIDEyOSwgMTkxLCAxLCAyMTcsIDEyNiwgMTI5LCAxOTEsIDEsIDIxMCwgMjIsIDEyOSwgMTkxLCAKKyAgICAxLCAyMDksIDE4NywgMTI5LCAxOTEsIDEsIDEzNSwgMTI5LCAxOTEsIDEsIDI0NCwgMjEyLCAxMjksIDE5MSwgMjM5LCAxMzgsIAorICAgIDI0MSwgMTEzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxMjksIDE5MSwgMjI3LCAzNiwgCisgICAgMjE1LCAyMzMsIDEyOSwgMTkxLCAyMjcsIDM2LCAyMzEsIDU2LCAxMjksIDE5MSwgNDIsIDEwNSwgMTI5LCAxOTEsIDQyLCAKKyAgICAxMDgsIDEyOSwgMTkxLCA0MiwgMTQ3LCAxMjksIDE5MSwgNDIsIDE0OSwgMTI5LCAxOTEsIDQyLCAxNzAsIDEyOSwgMTkxLCAKKyAgICA0MiwgMTk1LCAxMjksIDE5MSwgNDIsIDIxMywgMTExLCAxMjksIDE5MSwgNDIsIDE5OSwgMTI5LCAxOTEsIDQyLCAyMjIsIAorICAgIDYzLCAxMjksIDE5MSwgNDIsIDIwOSwgMTUyLCAxMjksIDE5MSwgNDIsIDIwNywgMTUxLCAxMjksIDE5MSwgNDIsIDIwOSwgCisgICAgNTMsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTMsIDEyOSwgMTkxLCA0MiwgMjQwLCAxOCwgMTI5LCAxOTEsIDQyLCAyMTIsIDc0LCAKKyAgICAxMjksIDE5MSwgNDIsIDIxMywgMTA1LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjAsIAorICAgIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKKyAgICAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDEyOSwgCisgICAgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDEyOSwgMTkxLCAKKyAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAyMDksIAorICAgIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjA5LCAzNiwgMTI5LCAKKyAgICAxOTEsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAorICAgIDIxMywgMTEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgCisgICAgNjQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTIsIAorICAgIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE1NCwgMjA5LCAzNiwgCisgICAgMTI5LCAxOTEsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgNzUsIDIwOSwgMzYsIDEyOSwgMTkxLCAKKyAgICA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxMzUsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCisgICAgMjIyLCA1OSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAKKyAgICAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIAorICAgIDE0NywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAKKyAgICAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDEyLCAyMDksIAorICAgIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgNjQsIDIzNiwgCisgICAgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMDcsIDE1NywgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjAsIAorICAgIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyNiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAKKyAgICAxNDcsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgCisgICAgMTM4LCAyMTIsIDg4LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAKKyAgICAyMzksIDEzOCwgMjQxLCAxNDMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIyMiwgNjQsIDIwNywgMTU2LCAxMjksIAorICAgIDE5MSwgMjM5LCAxMzgsIDIwOSwgMTUzLCAyMDcsIDE1NiwgMjI5LCAxMzEsIDEsIDYzLCAyMjksIDEzMSwgMjIsIDIsIDc1LCAKKyAgICAyMjksIDEzMSwgMjIsIDIsIDY4LCAyMjksIDEzMSwgMjIsIDIsIDEyNSwgMTQ2LCAyMjksIDEzMSwgMjIsIDIsIDc0LCAyMjksIAorICAgIDEzMSwgMjIsIDIsIDc4LCAyMjksIDEzMSwgMjIsIDIyNywgMTk2LCA4MiwgMjI5LCAxMzEsIDIsIDUyLCAyMTUsIDI1MywgCisgICAgNTYsIDIyOSwgMTMxLCAyLCAyNTAsIDE4MCwgMjI5LCAxMzEsIDIsIDIwNSwgMTk5LCAyMjksIDEzMSwgMSwgMTczLCAyMjksIAorICAgIDEzMSwgMSwgMjI5LCAxNDQsIDIyOSwgMTMxLCAxLCAyMzksIDgsIDIyOSwgMTMxLCAxLCAyMzgsIDExOSwgMjI5LCAxMzEsIAorICAgIDEsIDI0NywgOTIsIDIyOSwgMTMxLCAxLCAyNDYsIDE5OSwgMjI5LCAxMzEsIDEsIDIzMCwgMTgxLCAyMjksIDEzMSwgMSwgCisgICAgMjIxLCAxMSwgMjI5LCAxMzEsIDEsIDIwNywgMjQxLCAyMjksIDEzMSwgMSwgMjA3LCAyMjksIDIyOSwgMTMxLCAxLCAyNDQsIAorICAgIDEyMCwgMjI5LCAxMzEsIDEsIDI0NCwgMTA0LCAyMjksIDEzMSwgMSwgMjIxLCAyMjcsIDIyOSwgMTMxLCAxLCAyMTAsIDIyLCAKKyAgICAyMjksIDEzMSwgMSwgMjA5LCAxMDgsIDIyOSwgMTMxLCAxLCAyNDQsIDIxMiwgMjI5LCAxMzEsIDEsIDI0NCwgMSwgMjI5LCAKKyAgICAxMzEsIDEsIDIwMSwgMjAxLCAyMjksIDEzMSwgMSwgMTg1LCAyMjksIDEzMSwgMSwgMjE4LCAyMDgsIDIyOSwgMTMxLCAxLCAKKyAgICAyNDksIDMyLCAyMjksIDEzMSwgMSwgMjQ4LCA5OCwgMjI5LCAxMzEsIDEsIDE5MiwgMjI5LCAxMzEsIDEsIDE5OCwgMjI5LCAKKyAgICAxMzEsIDEsIDIxNiwgMjIwLCAyMjksIDEzMSwgMSwgMjI4LCAxMTMsIDIyOSwgMTMxLCAxLCAyMDYsIDg2LCAyMjksIDEzMSwgCisgICAgMSwgMjEzLCA5MCwgMjI5LCAxMzEsIDEsIDIxMSwgMTY0LCAyMjksIDEzMSwgMSwgMjE1LCAzNiwgMjI5LCAxMzEsIDEsIAorICAgIDIwMiwgMTE2LCAyMjksIDEzMSwgMSwgMTUyLCAyMjksIDEzMSwgMSwgMjI5LCA0NywgMjI5LCAxMzEsIDEsIDIwNywgMjA5LCAKKyAgICAyMjksIDEzMSwgMiwgMjQ4LCAyMzEsIDU1LCAyMjksIDEzMSwgMiwgMjQ3LCAxMywgMjI5LCAxMzEsIDIsIDcwLCA1NiwgCisgICAgMjI5LCAxMzEsIDIwNSwgMjA0LCAyMjksIDEzMSwgMTcsIDEwNSwgMjI5LCAxMzEsIDE3LCAxMDgsIDIyOSwgMTMxLCAxNywgCisgICAgMTQ3LCAyMjksIDEzMSwgMTcsIDE0OSwgMjI5LCAxMzEsIDQyLCAyMDksIDE1MiwgMjI5LCAxMzEsIDQyLCAyMDcsIDE1MSwgCisgICAgMjI5LCAxMzEsIDQyLCAxMTgsIDIzNiwgMTEsIDIyOSwgMTMxLCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDEzMSwgMjE3LCAKKyAgICAxNzksIDI0MywgODUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgNSwgMjQ2LCA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDYsIAorICAgIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI1LCAxMTYsIDIyOSwgCisgICAgMTMxLCAyMTcsIDE3OSwgMjI3LCA1LCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIAorICAgIDUyLCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjcsIDEwOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjM3LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI4LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjM3LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI0LCAyNDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxNywgNjksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwNCwgNzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxMiwgMjU1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTYsIDkxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyNDgsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAyMDEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxNCwgMjI1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDI1MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjIxLCA0MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAxMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIxNSwgMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNCwgMjQ5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyNDAsIDYwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyNTAsIDIsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjU0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMzgsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDQsIDE3NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjM4LCAxMDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMTI4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKKyAgICAyMDIsIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCisgICAgMjAyLCAyMzUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAorICAgIDIwOSwgNzMsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAKKyAgICAyNDAsIDE4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxNDEsIDIzMSwgMzEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIAorICAgIDQzLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI4LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgMTQ4LCAzOCwgCisgICAgMTUzLCAyNTAsIDE0MSwgMSwgMjI1LCA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjE3LCAxMTksIDM4LCAxNTMsIDI1MCwgCisgICAgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIAorICAgIDIxNiwgMTIyLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQ4LCAxMzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDE2OSwgCisgICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTYsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzAsIDIyLCAzOCwgMTUzLCAKKyAgICAyNTAsIDE0MSwgMSwgMjIxLCAxNzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjksIDE0MCwgMzgsIDE1MywgMjUwLCAxNDEsIAorICAgIDEsIDIxNSwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQwLCA0NywgCisgICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDU5LCAzOCwgMTUzLCAKKyAgICAyNTAsIDE0MSwgMSwgMjQ0LCAyMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDE4MSwgMzgsIDE1MywgMjUwLCAxNDEsIAorICAgIDEsIDI0NCwgMTg0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIAorICAgIDI1MSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwMiwgMTA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxMDAsIDM4LCAKKyAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMDMsIDQ3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCA4OCwgMzgsIDE1MywgMjUwLCAKKyAgICAxNDEsIDEsIDIwMiwgMTEwLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDksIAorICAgIDE1MiwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDcsIDE1MSwgMjI1LCAxMTUsIDEsIDI1MSwgMjgsIDIyNSwgMTE1LCAxLCAKKyAgICAyNDgsIDEwNSwgMjI1LCAxMTUsIDEsIDI0OCwgOTIsIDIyNSwgMTE1LCAxLCAyMzgsIDY3LCAyMjUsIDExNSwgMSwgMjM4LCAKKyAgICA5MiwgMjI1LCAxMTUsIDEsIDI0NCwgMTc3LCAyMjUsIDExNSwgMSwgMjM3LCA2NywgMjI1LCAxMTUsIDEsIDIwNCwgNzAsIAorICAgIDIyNSwgMTE1LCAyLCAyMDcsIDI5LCAyMjUsIDExNSwgMSwgMjAyLCA5NSwgMjI1LCAxMTUsIDEsIDIwMiwgNzMsIDIyNSwgCisgICAgMTE1LCAxLCAyMzAsIDE2MywgMjI1LCAxMTUsIDEsIDIzMCwgMTQ1LCAyMjUsIDExNSwgMSwgMjM3LCAxOSwgMjI1LCAxMTUsIAorICAgIDEsIDIwOSwgMTI4LCAyMjUsIDExNSwgMSwgMjAyLCAyMzUsIDIyNSwgMTE1LCAxLCAyMjksIDI1MCwgMjI1LCAxMTUsIDEsIAorICAgIDIwMywgMTc5LCAyMjUsIDExNSwgMSwgMjI5LCAxMzMsIDIyNSwgMTE1LCAxLCAyMjgsIDE5LCAyMjUsIDExNSwgMSwgMjQzLCAKKyAgICAyNTAsIDIyNSwgMTE1LCAxLCAyMDksIDk5LCAyMjUsIDExNSwgMSwgMjI0LCAyNDcsIDIyNSwgMTE1LCAxLCAyMjEsIDQwLCAKKyAgICAyMjUsIDExNSwgMSwgMjE0LCAyNDksIDIyNSwgMTE1LCAxLCAyNTAsIDMsIDIyNSwgMTE1LCAxLCAyNTEsIDIzNCwgMjI1LCAKKyAgICAxMTUsIDEsIDIxOSwgMzQsIDIyNSwgMTE1LCAxLCAyNDAsIDYwLCAyMjUsIDExNSwgMSwgMjE1LCAyNiwgMjI1LCAxMTUsIDEsIAorICAgIDIxNywgNjksIDIyNSwgMTE1LCAxLCAyMDMsIDE1NywgMjI1LCAxMTUsIDEsIDIxNywgOTUsIDIyNSwgMTE1LCAxLCAyMTYsIAorICAgIDkxLCAyMjUsIDExNSwgMSwgMjEyLCAyNTUsIDIyNSwgMTE1LCAxLCAyMTEsIDEzMywgMjI1LCAxMTUsIDEsIDIwOSwgMjAxLCAKKyAgICAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTUsIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NiwgMjI1LCAxMTUsIDQyLCAKKyAgICAxMDUsIDIyNSwgMTE1LCA0MiwgMTcwLCAyMjUsIDExNSwgNDIsIDIwOSwgMTUyLCAyMjUsIDExNSwgNDIsIDIwNywgMTUxLCAKKyAgICAyMjUsIDExNSwgNDIsIDExOCwgMjM2LCAxMSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyMTEsIDk0LCAyMjUsIDExNSwgMjE3LCAKKyAgICAxNzksIDIzOSwgMjEyLCAyMjUsIDExNSwgMjE3LCAxNzksIDUyLCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgCisgICAgMjE3LCAxNzksIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjQzLCA4NSwgMjI1LCAxMTUsIAorICAgIDIxNywgMTc5LCAxMjAsIDI0MywgODMsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjI3LCAxMTUsIDI0MCwgNywgMjUwLCAxNCwgMSwgCisgICAgNjMsIDI1MCwgMTQsIDEsIDI1MiwgMjUsIDI1MCwgMTQsIDEsIDI1MCwgMTc4LCAyNTAsIDE0LCAxLCAyNTEsIDI0MCwgMjUwLCAKKyAgICAxNCwgMSwgMjUwLCAyMzEsIDI1MCwgMTQsIDEsIDI1MSwgMjQxLCAyNTAsIDE0LCAxLCAyNTEsIDEwOSwgMjUwLCAxNCwgMSwgCisgICAgMjUxLCAxMDUsIDI1MCwgMTQsIDEsIDc0LCAyNTAsIDE0LCAxLCAyNDEsIDE2MSwgMjUwLCAxNCwgMSwgNzgsIDI1MCwgMTQsIAorICAgIDEsIDIyMCwgMTgsIDI1MCwgMTQsIDEsIDc1LCAyNTAsIDE0LCAxLCAyMzEsIDgzLCAyNTAsIDE0LCAxLCA2OCwgMjUwLCAxNCwgCisgICAgMSwgMjA2LCAxNzgsIDI1MCwgMTQsIDEsIDIyOSwgMjAxLCAyNTAsIDE0LCAxLCAyMDMsIDE3NiwgMjUwLCAxNCwgMSwgMjAzLCAKKyAgICAxMzgsIDI1MCwgMTQsIDEsIDIwMywgMTQ4LCAyNTAsIDE0LCAxLCAyMzgsIDE5MCwgMjUwLCAxNCwgMSwgMjM4LCAxNTAsIAorICAgIDI1MCwgMTQsIDEsIDIzOCwgMTA1LCAyNTAsIDE0LCAxLCAyNDYsIDIzOCwgMjUwLCAxNCwgMSwgMjMwLCAxNjEsIDI1MCwgCisgICAgMTQsIDEsIDIwOSwgMTg3LCAyNTAsIDE0LCAxLCAyMDksIDkyLCAyNTAsIDE0LCAxLCAyNDQsIDc1LCAyNTAsIDE0LCAxLCAKKyAgICAyNDMsIDI0OCwgMjUwLCAxNCwgMSwgMjA3LCAyMzYsIDI1MCwgMTQsIDEsIDIxOSwgMzQsIDI1MCwgMTQsIDEsIDI0MCwgNjAsIAorICAgIDI1MCwgMTQsIDEsIDI0OCwgMTYyLCAyNTAsIDE0LCAxLCAyNDgsIDk0LCAyNTAsIDE0LCAxLCAyMjIsIDE5MCwgMjUwLCAxNCwgCisgICAgMSwgMjIyLCAxMDYsIDI1MCwgMTQsIDEsIDIyMiwgMTA3LCAyNTAsIDE0LCAxLCAyMjIsIDI0MCwgMjUwLCAxNCwgMSwgMjIxLCAKKyAgICAxLCAyNTAsIDE0LCAxLCAyMjEsIDIyMiwgMjUwLCAxNCwgMSwgMjI1LCAyMCwgMjUwLCAxNCwgMSwgMjM2LCAxODYsIDI1MCwgCisgICAgMTQsIDEsIDIwMiwgMTY2LCAyNTAsIDE0LCAxLCAyMDMsIDUyLCAyNTAsIDE0LCAxLCAyMDYsIDU1LCAyNTAsIDE0LCAxLCAKKyAgICAyMTYsIDE1OCwgMjUwLCAxNCwgMSwgMjI3LCAyMzQsIDI1MCwgMTQsIDEsIDIxNCwgMTc3LCAyNTAsIDE0LCAxLCAyMDIsIAorICAgIDkyLCAyNTAsIDE0LCAxLCAyMTMsIDQzLCAyNTAsIDE0LCAxLCAyMDIsIDcxLCAyNTAsIDE0LCAxLCAyMTIsIDE2OSwgMjUwLCAKKyAgICAxNCwgMSwgMjExLCAxMzQsIDI1MCwgMTQsIDEsIDIzNywgNjcsIDI1MCwgMTQsIDI1MSwgMTQ2LCA4MiwgMjA4LCAyMTMsIAorICAgIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCA1LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgCisgICAgMjI4LCA4LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgMjI4LCA4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAKKyAgICAyMTcsIDE3OCwgMjI4LCA4LCAxMjAsIDIxNSwgMjUwLCAxMTUsIDExOCwgMjE1LCAyNTMsIDIxNywgMTc4LCAyMjgsIDgsIAorICAgIDExOCwgMjE1LCAyNTMsIDExNSwgMTIwLCAyMTUsIDI1MCwgMjE3LCAxNzgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI1MSwgCisgICAgMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAKKyAgICAyMTksIDcwLCAxLCAyNDQsIDE3NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgCisgICAgMjA0LCA3MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCAxOSwgMjMxLCAKKyAgICAxMCwgMjE5LCA3MCwgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIAorICAgIDcwLCAxLCAyMjksIDI1MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI0LCAKKyAgICAyNDcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNCwgMjQ5LCAyMzEsIAorICAgIDEwLCAyMTksIDcwLCAxLCAyNTAsIDMsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgNzAsIAorICAgIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNywgNjksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNiwgOTEsIAorICAgIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgCisgICAgMjE5LCA3MCwgNDIsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0NywgCisgICAgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIAorICAgIDcwLCA0MiwgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgNzAsIAorICAgIDQyLCAxMTgsIDIwOSwgMzYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCisgICAgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAorICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjMxLCAxMCwgCisgICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgCisgICAgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOSwgCisgICAgMjUwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMzEsIAorICAgIDEwLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMzEsIDEwLCAyMTksIAorICAgIDE0OSwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKKyAgICAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwNSwgCisgICAgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMzEsIDEwLCAyMTksIAorICAgIDE0OSwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKKyAgICAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCisgICAgMTE4LCAyMDksIDM2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ4LCAKKyAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCisgICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIxNywgMjAzLCAKKyAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIAorICAgIDEsIDIwMiwgMjM1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOSwgMjUwLCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOCwgCisgICAgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjE3LCAKKyAgICAyMDMsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTksIDM0LCAyMTcsIDIwMywgCisgICAgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjEyLCAyNTUsIDIxNywgMjAzLCAyMTksIAorICAgIDE0OSwgMSwgMjA5LCAyMDEsIDIxNywgMjAzLCAyMTksIDE0OSwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIAorICAgIDIwNywgMTc0LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQ1LCAxMzAsIAorICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQzLCA4NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgCisgICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMDgsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDE0NywgMjE3LCAyMDMsIAorICAgIDIxOSwgMTQ5LCA0MiwgMTQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKKyAgICA0MiwgMjA3LCAxNTEsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAorICAgIDIzNSwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAKKyAgICAxMDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc1LCAzOCwgCisgICAgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3OCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTEsIDEwNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjQxLCAxMDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNTAsIDIzMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgMjIzLCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNDEsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTcsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjE5LCAyMzUsIDI0MSwgNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgOSwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjM1LCAxNjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgCisgICAgMjAzLCA0MCwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIwMywgNDAsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMDMsIDQwLCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NiwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUwLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NCwgMzgsIDIwNywgMTc4LCAxLCAKKyAgICAyMTksIDIzNSwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIAorICAgIDIxOSwgMjM1LCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCisgICAgMjM1LCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKKyAgICAyMzUsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAorICAgIDIzNSwgMjE5LCAyMjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0OCwgMjE1LCAzOCwgMTQ1LCA2LCAxLCA2MywgCisgICAgMzgsIDE0NSwgNiwgMSwgMjUyLCAyNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjQyLCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjYsIAorICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY1LCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNiwgMSwgNzQsIDM4LCAKKyAgICAxNDUsIDYsIDEsIDI0NiwgMTcsIDc0LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTQsIAorICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKKyAgICAxNDcsIDM4LCAxNDUsIDYsIDEsIDc1LCAzOCwgMTQ1LCA2LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEzMiwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjksIDM4LCAxNDUsIDYsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMjMyLCAKKyAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyMiwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCisgICAgMTAzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDkyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA2LCAxLCA3OCwgCisgICAgMzgsIDE0NSwgNiwgMSwgMjIwLCAxOCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgCisgICAgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNDYsIDM4LCAKKyAgICAxNDUsIDYsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDYsIDEsIDIxMiwgMjI4LCAyNDEsIAorICAgIDI4LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNiwgMSwgMjQwLCAKKyAgICAyNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNzAsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAorICAgIDE2NywgMzgsIDE0NSwgNiwgMSwgNjgsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAKKyAgICAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyMTUsIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMjYsIDM4LCAKKyAgICAxNDUsIDYsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA2OSwgNTQsIAorICAgIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTkzLCAzOCwgMTQ1LCA1LCAxLCA2MywgMzgsIDE0NSwgNSwgMSwgMjUyLCAyNSwgMzgsIAorICAgIDE0NSwgNSwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjQyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2OSwgCisgICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY1LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgNzQsIDM4LCAxNDUsIDUsIDEsIDI0NiwgMTcsIDc0LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTQsIDM4LCAxNDUsIDUsIDEsIDI0MSwgCisgICAgMTUzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNDcsIDM4LCAxNDUsIDUsIDEsIDc1LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjksIAorICAgIDM4LCAxNDUsIDUsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMjMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyMiwgCisgICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTAzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDkyLCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA1LCAxLCA3OCwgMzgsIDE0NSwgNSwgMSwgMjIwLCAxOCwgMzgsIAorICAgIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNSwgMSwgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIAorICAgIDUsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNDYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIAorICAgIDUsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDIxMiwgMjI4LCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE3LCAKKyAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNzAsIAorICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NywgMzgsIDE0NSwgNSwgMSwgNjgsIDM4LCAKKyAgICAxNDUsIDUsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyMTUsIAorICAgIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCAKKyAgICA1LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA2OSwgNTQsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMTkzLCAzOCwgCisgICAgMTQ1LCA0MiwgMTA1LCAzOCwgMTQ1LCA0MiwgMTcwLCAzOCwgMTQ1LCA0MiwgMjA5LCAxNTIsIDM4LCAxNDUsIDQyLCAyNDAsIAorICAgIDE4LCAzOCwgMTQ1LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMTQ1LCA0MiwgMTE4LCAyMDksIDM2LCAyMTUsIDEyOSwgMTcsIAorICAgIDEwNSwgMjE1LCAxMjksIDE3LCAxMDgsIDIxNSwgMTI5LCAxNywgMTQ3LCAyMTUsIDEyOSwgMTcsIDE0OSwgMjE1LCAxMjksIAorICAgIDE3LCAxNzAsIDIxNSwgMTI5LCAxNywgMTk1LCAyMTUsIDEyOSwgMTcsIDIxMywgMTExLCAyMTUsIDEyOSwgMTcsIDE5OSwgCisgICAgMjE1LCAxMjksIDE3LCAyMjIsIDYzLCAyMTUsIDEyOSwgNDIsIDIwOSwgMTUyLCAyMTUsIDEyOSwgNDIsIDIwNywgMTUxLCAKKyAgICAyMTUsIDEyOSwgNDIsIDIwOSwgNTMsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNTMsIDIxNSwgMTI5LCA0MiwgMjQwLCAxOCwgCisgICAgMjE1LCAxMjksIDQyLCAyMTIsIDc0LCAyMTUsIDEyOSwgNDIsIDIxMywgMTA1LCAyMTUsIDEyOSwgNDIsIDI0MSwgMTM0LCAKKyAgICAyMTUsIDEyOSwgNDIsIDIyMiwgNTgsIDIxNSwgMTI5LCA0MiwgMTE4LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyMCwgCisgICAgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjYsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAorICAgIDIxNSwgMTI5LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMjE1LCAKKyAgICAxMjksIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMjE1LCAxMjksIAorICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIxNSwgMTI5LCAyMzksIAorICAgIDEzOCwgMTE4LCAyMTcsIDU1LCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjE1LCAxMjksIDIzOSwgMTM4LCAKKyAgICAxMjAsIDIwOSwgNTcsIDE0NCwgMiwgMjQ3LCA1MiwgMTQ0LCAyLCAyNTAsIDE4MCwgMTQ0LCAyLCAyMDUsIDE5OSwgMTQ0LCAKKyAgICAyLCAyMzAsIDEzNSwgMTQ0LCAyLCAyMDYsIDIyMiwgMTQ0LCAxLCA2MywgMTQ0LCAxLCAyNTIsIDI1LCAxNDQsIDEsIDc1LCAKKyAgICAxNDQsIDEsIDIzMSwgODMsIDE0NCwgMSwgNjgsIDE0NCwgMSwgMjA2LCAxNzgsIDE0NCwgMSwgMTI1LCAxNDYsIDE0NCwgMSwgCisgICAgMTI1LCAyMTUsIDE4NiwgMTQ0LCAxLCAxMjUsIDE1OSwgMTQ0LCAxLCAxMjUsIDIyNywgNzgsIDE0NCwgMSwgNzQsIDE0NCwgCisgICAgMSwgMjUxLCA2NCwgMTQ0LCAxLCA3OCwgMTQ0LCAxLCAyNTAsIDM0LCAxNDQsIDEsIDE3MywgMTQ0LCAxLCAyMjksIDE0NCwgCisgICAgMTQ0LCAxLCAyMzksIDgsIDE0NCwgMSwgMjM4LCAxMTksIDE0NCwgMSwgMjIyLCAyMDMsIDE0NCwgMSwgMjQ3LCA5MiwgMTQ0LCAKKyAgICAxLCAyNDYsIDE5OSwgMTQ0LCAxLCAyMzAsIDE4MSwgMTQ0LCAxLCAyMzAsIDE0OSwgMTQ0LCAxLCAyMjEsIDExLCAxNDQsIDEsIAorICAgIDIwNywgMjQxLCAxNDQsIDEsIDIwNywgMjI5LCAxNDQsIDEsIDI0NCwgMTIwLCAxNDQsIDEsIDI0NCwgMTA0LCAxNDQsIDEsIAorICAgIDIyMSwgMjI3LCAxNDQsIDEsIDIxMCwgMjIsIDE0NCwgMSwgMjA5LCAxMDgsIDE0NCwgMSwgMjQ0LCAyMTIsIDE0NCwgMSwgCisgICAgMjQ0LCAxLCAxNDQsIDEsIDIwMSwgMjAxLCAxNDQsIDEsIDE4NSwgMTQ0LCAxLCAyMTgsIDIwOCwgMTQ0LCAxLCAyNDksIDMyLCAKKyAgICAxNDQsIDEsIDI0OCwgOTgsIDE0NCwgMSwgMTkyLCAxNDQsIDEsIDE5OCwgMTQ0LCAxLCAyMTYsIDIyMCwgMTQ0LCAxLCAyMjgsIAorICAgIDExMywgMTQ0LCAxLCAyMDYsIDg2LCAxNDQsIDEsIDIxMywgOTAsIDE0NCwgMSwgMjExLCAxNjQsIDE0NCwgMSwgMjE1LCAzNiwgCisgICAgMTQ0LCAxLCAxNTIsIDE0NCwgMSwgMjI3LCA3NywgMTQ0LCAxLCAzOCwgNDQsIDIyNywgNjgsIDE0NCwgMSwgMzgsIDQ0LCAKKyAgICAyMTUsIDE4NSwgMTQ0LCAxLCAzOCwgNDQsIDIyMSwgMjA5LCAxNDQsIDIyLCAyLCAyNTIsIDI1LCAxNDQsIDIyLCAyLCAyNDgsIAorICAgIDk1LCAyNTIsIDI1LCAxNDQsIDIyLCAyLCA3NSwgMTQ0LCAyMiwgMiwgMjMxLCA4MywgMTQ0LCAyMiwgMiwgNjgsIDE0NCwgCisgICAgMjIsIDIsIDIwNiwgMTc4LCAxNDQsIDIyLCAyLCAxMjUsIDE0NiwgMTQ0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTQ0LCAKKyAgICAyMiwgMiwgMTI1LCAxNTksIDE0NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTQ0LCAyMiwgMiwgNzQsIDE0NCwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDE0NCwgMjIsIDIsIDc4LCAxNDQsIDIyLCAyLCAyNTAsIDM0LCAxNDQsIDIwNSwgMjA0LCAxNDQsIDI0NCwgCisgICAgMTY2LCAxNDQsIDUyLCAyNDQsIDE2NiwgMTQ0LCAyMTcsIDE3OSwgMjQzLCA4NSwgMTQ0LCAyMTcsIDE3OSwgNTIsIDI0MywgCisgICAgODUsIDE0NCwgMjE3LCAxNzksIDIyNywgMTE0LCAxNDQsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAxNDQsIDIxNywgMTc5LCAKKyAgICAyMjcsIDUsIDE0NCwgNDIsIDEwNSwgMTQ0LCA0MiwgMTA4LCAxNDQsIDQyLCAxNDcsIDE0NCwgNDIsIDE0OSwgMTQ0LCA0MiwgCisgICAgMTcwLCAxNDQsIDQyLCAxOTUsIDE0NCwgNDIsIDIxMywgMTExLCAxNDQsIDQyLCAxOTksIDE0NCwgNDIsIDIyMiwgNjMsIAorICAgIDE0NCwgNDIsIDIwOSwgMTUyLCAxNDQsIDQyLCAyMDcsIDE1MSwgMTQ0LCA0MiwgMjA5LCA1MywgMTQ0LCA0MiwgMjM5LCAKKyAgICAxNTMsIDE0NCwgNDIsIDI0MCwgMTgsIDE0NCwgNDIsIDIxMiwgNzQsIDE0NCwgNDIsIDIxMywgMTA1LCAxNDQsIDQyLCAyNDEsIAorICAgIDEzNCwgMTQ0LCA0MiwgMjIyLCA1OCwgMTQ0LCA0MiwgMTE4LCAyMzYsIDExLCAxNDQsIDQyLCAxMTgsIDIwOSwgMzYsIDE0NCwgCisgICAgMTcsIDIwMiwgODQsIDE0NCwgMTcsIDEwNSwgMTQ0LCAxNywgMTA4LCAxNDQsIDE3LCAxNDcsIDE0NCwgMTcsIDE0OSwgMTQ0LCAKKyAgICAxNywgMTcwLCAxNDQsIDE3LCAxOTUsIDE0NCwgMTcsIDIxMywgMTExLCAxNDQsIDE3LCAxOTksIDE0NCwgMTcsIDIyMiwgNjMsIAorICAgIDE0NCwgNDIsIDIzMCwgOTYsIDIzMCwgMTUsIDIsIDI0NywgNTIsIDIzMCwgMTUsIDIsIDI1MCwgMTgwLCAyMzAsIDE1LCAyLCAKKyAgICAyMDUsIDE5OSwgMjMwLCAxNSwgMSwgNjMsIDIzMCwgMTUsIDEsIDI1MiwgMjUsIDIzMCwgMTUsIDEsIDc1LCAyMzAsIDE1LCAKKyAgICAxLCAyMzEsIDgzLCAyMzAsIDE1LCAxLCA2OCwgMjMwLCAxNSwgMSwgMjA2LCAxNzgsIDIzMCwgMTUsIDEsIDc0LCAyMzAsIAorICAgIDE1LCAxLCAyNTEsIDY0LCAyMzAsIDE1LCAxLCA3OCwgMjMwLCAxNSwgMSwgMjUwLCAzNCwgMjMwLCAxNSwgMSwgMTczLCAKKyAgICAyMzAsIDE1LCAxLCAyMjksIDE0NCwgMjMwLCAxNSwgMSwgMjM5LCA4LCAyMzAsIDE1LCAxLCAyMzgsIDExOSwgMjMwLCAxNSwgCisgICAgMSwgMjIyLCAyMDMsIDIzMCwgMTUsIDEsIDI0NywgOTIsIDIzMCwgMTUsIDEsIDI0NiwgMTk5LCAyMzAsIDE1LCAxLCAyMzAsIAorICAgIDE4MSwgMjMwLCAxNSwgMSwgMjMwLCAxNDksIDIzMCwgMTUsIDEsIDIyMSwgMTEsIDIzMCwgMTUsIDEsIDIwNywgMjQxLCAKKyAgICAyMzAsIDE1LCAxLCAyMDcsIDIyOSwgMjMwLCAxNSwgMSwgMjQ0LCAxMjAsIDIzMCwgMTUsIDEsIDI0NCwgMTA5LCAyMzAsIAorICAgIDE1LCAxLCAyNDQsIDEwNCwgMjMwLCAxNSwgMSwgMjE2LCA2MSwgMjMwLCAxNSwgMSwgMjIxLCAyMjcsIDIzMCwgMTUsIDEsIAorICAgIDIxMCwgMjIsIDIzMCwgMTUsIDEsIDIwOSwgMTA4LCAyMzAsIDE1LCAxLCAyNDQsIDIxMiwgMjMwLCAxNSwgMSwgMjQ0LCAxLCAKKyAgICAyMzAsIDE1LCAxLCAyMDEsIDIwMSwgMjMwLCAxNSwgMSwgMTg1LCAyMzAsIDE1LCAxLCAyMTgsIDIwOCwgMjMwLCAxNSwgMSwgCisgICAgMjQ5LCAzMiwgMjMwLCAxNSwgMSwgMjQ4LCA5OCwgMjMwLCAxNSwgMSwgMTkyLCAyMzAsIDE1LCAxLCAxOTgsIDIzMCwgMTUsIAorICAgIDEsIDIxNiwgMjIwLCAyMzAsIDE1LCAxLCAyMjgsIDExMywgMjMwLCAxNSwgMSwgMjA2LCA4NiwgMjMwLCAxNSwgMSwgMjEzLCAKKyAgICA5MCwgMjMwLCAxNSwgMSwgMjExLCAxNjQsIDIzMCwgMTUsIDEsIDIxNSwgMzYsIDIzMCwgMTUsIDEsIDE1MiwgMjMwLCAxNSwgCisgICAgMjIsIDIsIDI1MiwgMjUsIDIzMCwgMTUsIDIyLCAyLCA3NSwgMjMwLCAxNSwgMjIsIDIsIDIzMSwgODMsIDIzMCwgMTUsIDIyLCAKKyAgICAyLCA2OCwgMjMwLCAxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMzAsIDE1LCAyMiwgMiwgNzQsIDIzMCwgMTUsIDIyLCAyLCAyNTEsIAorICAgIDY0LCAyMzAsIDE1LCAyMiwgMiwgNzgsIDIzMCwgMTUsIDIyLCAyLCAyNTAsIDM0LCAyMzAsIDE1LCAyLCAyMDUsIDIwNCwgCisgICAgMjMwLCAxNSwgMiwgMjIxLCA1MSwgMjMwLCAxNSwgMjUxLCAxNDYsIDU0LCAyMzAsIDE1LCAyNDEsIDU5LCA1NCwgMjMwLCAKKyAgICAxNSwgNDIsIDU0LCAyMzAsIDE1LCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIDUyLCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIAorICAgIDI0NCwgMTY2LCAyMzAsIDE1LCA1MiwgMjQ0LCAxNjYsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE1LCAxOSwgMjExLCAKKyAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDksIDI1MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDksIDUsIDIxMSwgMjQ2LCAyMTEsIAorICAgIDI1NCwgMSwgMjQ3LCA4MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDQsIDE5MywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKKyAgICAyMzgsIDI0OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjIsIAorICAgIDIwMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjgsIDg5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMywgOTMsIDIxMSwgCisgICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA2LCA4MiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTksIDE1MCwgMjExLCAyNDYsIAorICAgIDIxMSwgMjU0LCAxLCAyMDMsIDkxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNiwgMTk5LCAyMTEsIDI0NiwgMjExLCAKKyAgICAyNTQsIDEsIDIzNywgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMCwgMjAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCisgICAgMjMwLCAxNzUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIxLCA4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI1MSwgNzMsIAorICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQxLCAxNTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMxLCA4NCwgMjExLCAKKyAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDcsIDE4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMCwgNjAsIDIxMSwgMjQ2LCAyMTEsIAorICAgIDI1NCwgMSwgMjQxLCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNjEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgCisgICAgMTcsIDIwMiwgODQsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwNSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA4LCAKKyAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0OSwgMjExLCAyNDYsIDIxMSwgCisgICAgMjU0LCAxNywgMTcwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIxMywgCisgICAgMTExLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIyMiwgNjMsIDI0NiwgCisgICAgMTkzLCAyLCAyNDcsIDUyLCAyNDYsIDE5MywgMiwgMjUwLCAxODAsIDI0NiwgMTkzLCAyLCAyMDUsIDE5OSwgMjQ2LCAxOTMsIAorICAgIDEsIDI1MiwgMjUsIDI0NiwgMTkzLCAxLCA3NSwgMjQ2LCAxOTMsIDEsIDY4LCAyNDYsIDE5MywgMSwgNzQsIDI0NiwgMTkzLCAKKyAgICAxLCAyMzAsIDQxLCAyNDYsIDE5MywgMSwgMjI5LCAxNDMsIDI0NiwgMTkzLCAxLCAyMzksIDUsIDI0NiwgMTkzLCAxLCAyMzgsIAorICAgIDExOCwgMjQ2LCAxOTMsIDEsIDIyMiwgMjAyLCAyNDYsIDE5MywgMSwgMjQ3LCA5MSwgMjQ2LCAxOTMsIDEsIDI0NiwgMTk4LCAKKyAgICAyNDYsIDE5MywgMSwgMjMwLCAxODAsIDI0NiwgMTkzLCAxLCAyMzAsIDE0OCwgMjQ2LCAxOTMsIDEsIDIyMSwgMTAsIDI0NiwgCisgICAgMTkzLCAxLCAyMDcsIDI0MCwgMjQ2LCAxOTMsIDEsIDIwNywgMjI4LCAyNDYsIDE5MywgMSwgMjQ0LCAxMTksIDI0NiwgMTkzLCAKKyAgICAxLCAyNDQsIDEwMywgMjQ2LCAxOTMsIDEsIDIyMSwgMjI2LCAyNDYsIDE5MywgMSwgMjEwLCAxOCwgMjQ2LCAxOTMsIDEsIAorICAgIDIwOSwgMTA3LCAyNDYsIDE5MywgMSwgMjQ0LCAyMTEsIDI0NiwgMTkzLCAxLCAyNDQsIDAsIDI0NiwgMTkzLCAxLCAyMjMsIAorICAgIDEwNiwgMjQ2LCAxOTMsIDEsIDIxOSwgMTY4LCAyNDYsIDE5MywgMSwgMjE4LCAyMDcsIDI0NiwgMTkzLCAxLCAyNDksIDMwLCAKKyAgICAyNDYsIDE5MywgMSwgMjQ4LCA5NywgMjQ2LCAxOTMsIDEsIDIyNSwgMTc1LCAyNDYsIDE5MywgMSwgMjAyLCAxNjcsIDI0NiwgCisgICAgMTkzLCAxLCAyMDMsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNiwgMjE2LCAyNDYsIDE5MywgMSwgMjI4LCAxMTIsIDI0NiwgMTkzLCAKKyAgICAxLCAyMDQsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNSwgMzMsIDI0NiwgMTkzLCAxLCAyMzcsIDE1NywgMjQ2LCAxOTMsIDIyLCAKKyAgICAyLCA2MywgMjQ2LCAxOTMsIDIyLCAyLCA3NSwgMjQ2LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MywgMjIsIDIsIAorICAgIDY4LCAyNDYsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAyNDYsIDE5MywgMjIsIDIsIDc0LCAyNDYsIDE5MywgMjIsIDIsIDI1MSwgCisgICAgNjQsIDI0NiwgMTkzLCAyMiwgMiwgNzgsIDI0NiwgMTkzLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTMsIDIyLCAyLCAyMjAsIAorICAgIDU3LCAyNDYsIDE5MywgMTU4LCA4MiwgMjQ2LCAxOTMsIDI1MCwgMzUsIDgyLCAyNDYsIDE5MywgMjA1LCAyMDQsIDI0NiwgCisgICAgMTkzLCAyMjUsIDE3MywgMjQ2LCAxOTMsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MywgMTcsIDEwNSwgMjQ2LCAxOTMsIDE3LCAKKyAgICAxMDgsIDI0NiwgMTkzLCAxNywgMTQ3LCAyNDYsIDE5MywgMTcsIDE0OSwgMjQ2LCAxOTMsIDE3LCAxNzAsIDI0NiwgMTkzLCAKKyAgICAxNywgMTk1LCAyNDYsIDE5MywgMTcsIDIxMywgMTExLCAyNDYsIDE5MywgMTcsIDE5OSwgMjQ2LCAxOTMsIDE3LCAyMjIsIAorICAgIDYzLCAyNDYsIDE5MywgMjE0LCAxNjgsIDgyLCAyNDYsIDE5MywgMjQ0LCAxNjYsIDI0NiwgMTkzLCA1MiwgMjQ0LCAxNjYsIAorICAgIDI0NiwgMTkzLCAyMTcsIDQ3LCA4MiwgMjI1LCAxNDYsIDEsIDYzLCAyMjUsIDE0NiwgMSwgNzUsIDIyNSwgMTQ2LCAxLCA2OCwgCisgICAgMjI1LCAxNDYsIDEsIDc0LCAyMjUsIDE0NiwgMSwgNzgsIDIyNSwgMTQ2LCAxLCAxNzMsIDIyNSwgMTQ2LCAxLCAyMjksIAorICAgIDE0NCwgMjI1LCAxNDYsIDEsIDIzOSwgOCwgMjI1LCAxNDYsIDEsIDIzOCwgMTE5LCAyMjUsIDE0NiwgMSwgMjQ3LCA5MiwgCisgICAgMjI1LCAxNDYsIDEsIDI0NiwgMTk5LCAyMjUsIDE0NiwgMSwgMjMwLCAxODEsIDIyNSwgMTQ2LCAxLCAyMzAsIDE0OSwgMjI1LCAKKyAgICAxNDYsIDEsIDIyMSwgMTEsIDIyNSwgMTQ2LCAxLCAyMDcsIDI0MSwgMjI1LCAxNDYsIDEsIDIwNywgMjI5LCAyMjUsIDE0NiwgCisgICAgMSwgMjQ0LCAxMjAsIDIyNSwgMTQ2LCAxLCAyNDQsIDEwNCwgMjI1LCAxNDYsIDEsIDIyMSwgMjI3LCAyMjUsIDE0NiwgMSwgCisgICAgMjEwLCAyMiwgMjI1LCAxNDYsIDEsIDIwOSwgMTA4LCAyMjUsIDE0NiwgMSwgMjQ0LCAyMTIsIDIyNSwgMTQ2LCAxLCAyNDQsIAorICAgIDEsIDIyNSwgMTQ2LCAxLCAyMDEsIDIwMSwgMjI1LCAxNDYsIDEsIDE4NSwgMjI1LCAxNDYsIDEsIDIxOCwgMjA4LCAyMjUsIAorICAgIDE0NiwgMSwgMjQ5LCAzMiwgMjI1LCAxNDYsIDEsIDI0OCwgOTgsIDIyNSwgMTQ2LCAxLCAxOTIsIDIyNSwgMTQ2LCAxLCAKKyAgICAyMTYsIDIyMCwgMjI1LCAxNDYsIDEsIDIyOCwgMTEzLCAyMjUsIDE0NiwgMSwgMjA2LCA4NiwgMjI1LCAxNDYsIDEsIDIxNSwgCisgICAgMzYsIDIyNSwgMTQ2LCAxLCAxNTIsIDIyNSwgMTQ2LCAxLCAyMTUsIDE4NSwgMjI1LCAxNDYsIDIsIDIyMSwgNTEsIDIyNSwgCisgICAgMTQ2LCAyNTEsIDE0NiwgNTQsIDIyNSwgMTQ2LCAyMTQsIDE2OCwgODIsIDIyNSwgMTQ2LCAzMiwgMjEyLCAyMDYsIDE4MSwgCisgICAgMiwgMjQ3LCA1MiwgMTgxLCAyLCAyNTAsIDE4MCwgMTgxLCAyLCAyMDUsIDE5OSwgMTgxLCAxLCA2MywgMTgxLCAxLCAyNTIsIAorICAgIDI1LCAxODEsIDEsIDc1LCAxODEsIDEsIDIzMSwgODMsIDE4MSwgMSwgNjgsIDE4MSwgMSwgMjA2LCAxNzgsIDE4MSwgMSwgCisgICAgMTI1LCAxNDYsIDE4MSwgMSwgMTI1LCAyMTUsIDE4NiwgMTgxLCAxLCAxMjUsIDE1OSwgMTgxLCAxLCAxMjUsIDIyNywgNzgsIAorICAgIDE4MSwgMSwgNzQsIDE4MSwgMSwgMjUxLCA2NCwgMTgxLCAxLCA3OCwgMTgxLCAxLCAyNTAsIDM0LCAxODEsIDEsIDE3MywgCisgICAgMTgxLCAxLCAyMjksIDE0NCwgMTgxLCAxLCAyMzksIDgsIDE4MSwgMSwgMjM4LCAxMTksIDE4MSwgMSwgMjIyLCAyMDMsIAorICAgIDE4MSwgMSwgMjQ3LCA5MiwgMTgxLCAxLCAyNDYsIDE5OSwgMTgxLCAxLCAyMzAsIDE4MSwgMTgxLCAxLCAyMzAsIDE0OSwgCisgICAgMTgxLCAxLCAyMjEsIDExLCAxODEsIDEsIDIwNywgMjQxLCAxODEsIDEsIDIwNywgMjI5LCAxODEsIDEsIDI0NCwgMTIwLCAKKyAgICAxODEsIDEsIDI0NCwgMTA0LCAxODEsIDEsIDIyMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDE4MSwgMSwgMjA5LCAxMDgsIAorICAgIDE4MSwgMSwgMjQ0LCAyMTIsIDE4MSwgMSwgMjQ0LCAxLCAxODEsIDEsIDIwMSwgMjAxLCAxODEsIDEsIDE4NSwgMTgxLCAxLCAKKyAgICAyMTgsIDIwOCwgMTgxLCAxLCAyNDksIDMyLCAxODEsIDEsIDI0OCwgOTgsIDE4MSwgMSwgMTkyLCAxODEsIDEsIDE5OCwgCisgICAgMTgxLCAxLCAyMTYsIDIyMCwgMTgxLCAxLCAyMjgsIDExMywgMTgxLCAxLCAyMjcsIDc3LCAxODEsIDEsIDIwNiwgODYsIAorICAgIDE4MSwgMSwgMjEzLCA5MCwgMTgxLCAxLCAyMTEsIDE2NCwgMTgxLCAxLCAyMTUsIDM2LCAxODEsIDEsIDE1MiwgMTgxLCAyMiwgCisgICAgMiwgMjUyLCAyNSwgMTgxLCAyMiwgMiwgNzUsIDE4MSwgMjIsIDIsIDIzMSwgODMsIDE4MSwgMjIsIDIsIDY4LCAxODEsIDIyLCAKKyAgICAyLCAyMDYsIDE3OCwgMTgxLCAyMiwgMiwgMTI1LCAxNDYsIDE4MSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4MSwgMjIsIDIsIAorICAgIDEyNSwgMTU5LCAxODEsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE4MSwgMjIsIDIsIDc0LCAxODEsIDIyLCAyLCAyNTEsIDY0LCAKKyAgICAxODEsIDIyLCAyLCA3OCwgMTgxLCAyMiwgMiwgMjUwLCAzNCwgMTgxLCAyLCAyMDUsIDIwNCwgMTgxLCAyLCAyNTAsIDE3LCAKKyAgICAxODEsIDIsIDIzMCwgMTM1LCAxODEsIDIsIDIwNiwgMjIyLCAxODEsIDIyMCwgMzksIDE4MSwgMjQ0LCAxNjYsIDE4MSwgNTIsIAorICAgIDI0NCwgMTY2LCAxODEsIDI1MSwgMTQ2LCA1NCwgMTgxLCAyMTMsIDEzMCwgMTgxLCAyMTQsIDIzOSwgODIsIDE4MSwgMiwgCisgICAgMjIxLCA1MSwgMTgxLCAyMiwgNjUsIDgyLCAxODEsIDI0MCwgMTk5LCAyMTIsIDIyOCwgMjIsIDgyLCAxODEsIDIxMCwgMTgwLCAKKyAgICA4MiwgMTgxLCAxNywgMjAyLCA4NCwgMTgxLCAxNywgMTA1LCAxODEsIDE3LCAxMDgsIDE4MSwgMTcsIDE0NywgMTgxLCAxNywgCisgICAgMTQ5LCAxODEsIDE3LCAxNzAsIDE4MSwgMTcsIDE5NSwgMTgxLCAxNywgMjEzLCAxMTEsIDE4MSwgMTcsIDE5OSwgMTgxLCAKKyAgICAxNywgMjIyLCA2MywgMTgxLCAyNDEsIDEyOCwgMTgxLCAyLCAyMTIsIDE1NywgMTgxLCAyMzcsIDU4LCAxODEsIDI0NSwgCisgICAgMTkxLCA1NCwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MiwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MSwgMTQwLCAyNTAsIDEyNiwgCisgICAgMTcsIDEwNSwgMTQwLCAyNTAsIDEyNiwgMTcsIDEwOCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE0NywgMTQwLCAyNTAsIDEyNiwgCisgICAgMTcsIDE0OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE3MCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5NSwgMTQwLCAyNTAsIDEyNiwgCisgICAgMTcsIDIxMywgMTExLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk5LCAxNDAsIDI1MCwgMTI2LCAxNywgMjIyLCA2MywgMTQwLCAKKyAgICAyNTAsIDEyNiwgNDIsIDIwOSwgMTUyLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjA3LCAxNTEsIDE0MCwgMjUwLCAxMjYsIDQyLCAKKyAgICAyMDksIDUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjM5LCAxNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyNDAsIDE4LCAxNDAsIAorICAgIDI1MCwgMTI2LCA0MiwgMjEyLCA3NCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIxMywgMTA1LCAxNDAsIDI1MCwgMTI2LCA0MiwgCisgICAgMjQxLCAxMzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMjIsIDU4LCAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMzYsIDExLCAKKyAgICAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDExNCwgMSwgNjMsIDIyOSwgMTE0LCAxLCAyNTIsIDI1LCAKKyAgICAyMjksIDExNCwgMSwgNzUsIDIyOSwgMTE0LCAxLCA2OCwgMjI5LCAxMTQsIDEsIDc0LCAyMjksIDExNCwgMSwgMjUxLCA2NCwgCisgICAgMjI5LCAxMTQsIDEsIDc4LCAyMjksIDExNCwgMSwgMjUwLCAzNCwgMjI5LCAxMTQsIDEsIDE3MywgMjI5LCAxMTQsIDEsIAorICAgIDIyOSwgMTQ0LCAyMjksIDExNCwgMSwgMjM5LCA4LCAyMjksIDExNCwgMSwgMjM4LCAxNTUsIDIyOSwgMTE0LCAxLCAyMzgsIAorICAgIDExOSwgMjI5LCAxMTQsIDEsIDIyMiwgMjAzLCAyMjksIDExNCwgMSwgMjQ3LCA5MiwgMjI5LCAxMTQsIDEsIDI0NiwgMTk5LCAKKyAgICAyMjksIDExNCwgMSwgMjMwLCAxODEsIDIyOSwgMTE0LCAxLCAyMzAsIDEyOSwgMjI5LCAxMTQsIDEsIDIyMSwgMTEsIDIyOSwgCisgICAgMTE0LCAxLCAyMDcsIDI0MSwgMjI5LCAxMTQsIDEsIDIwNywgMjI5LCAyMjksIDExNCwgMSwgMjQ0LCAxMjAsIDIyOSwgMTE0LCAKKyAgICAxLCAyNDQsIDEwNCwgMjI5LCAxMTQsIDEsIDIyMSwgMjI3LCAyMjksIDExNCwgMSwgMjEwLCAyMiwgMjI5LCAxMTQsIDEsIAorICAgIDIwOSwgMTA4LCAyMjksIDExNCwgMSwgMjQ0LCAyMTIsIDIyOSwgMTE0LCAxLCAyNDQsIDExMCwgMjI5LCAxMTQsIDEsIDI0NCwgCisgICAgMSwgMjI5LCAxMTQsIDEsIDIwMSwgMjAxLCAyMjksIDExNCwgMSwgMTg1LCAyMjksIDExNCwgMSwgMjE4LCAyMDgsIDIyOSwgCisgICAgMTE0LCAxLCAyNDksIDMyLCAyMjksIDExNCwgMSwgMjQ4LCAxOTgsIDIyOSwgMTE0LCAxLCAyNDgsIDk4LCAyMjksIDExNCwgCisgICAgMSwgMTkyLCAyMjksIDExNCwgMSwgMTk4LCAyMjksIDExNCwgMSwgMjE2LCAyMjAsIDIyOSwgMTE0LCAxLCAyMjgsIDExMywgCisgICAgMjI5LCAxMTQsIDEsIDIwNiwgODYsIDIyOSwgMTE0LCAxLCAyMTUsIDM2LCAyMjksIDExNCwgMSwgMTUyLCAyMjksIDExNCwgCisgICAgMSwgMjI3LCA3NywgMjI5LCAxMTQsIDIyLCAyLCAyNTIsIDI1LCAyMjksIDExNCwgMjIsIDIsIDc1LCAyMjksIDExNCwgMjIsIAorICAgIDIsIDIzMSwgODMsIDIyOSwgMTE0LCAyMiwgMiwgNjgsIDIyOSwgMTE0LCAyMiwgMiwgNzQsIDIyOSwgMTE0LCAyMiwgMiwgCisgICAgMjUxLCA2NCwgMjI5LCAxMTQsIDIyLCAyLCA3OCwgMjI5LCAxMTQsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDExNCwgMiwgMjUwLCAKKyAgICAxODAsIDIyOSwgMTE0LCAyLCAyMDUsIDIwNCwgMjI5LCAxMTQsIDIsIDIyMSwgNTEsIDIyOSwgMTE0LCAyLCAyMTMsIDgwLCAKKyAgICAyMjksIDExNCwgMjQ0LCAxNjYsIDIyOSwgMTE0LCA1MiwgMjQ0LCAxNjYsIDIyOSwgMTE0LCAyMDMsIDIzOCwgMjEzLCAxMzAsIAorICAgIDIyOSwgMTE0LCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCA1MiwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgMjUxLCAxNDYsIAorICAgIDU0LCAyMjMsIDIzMCwgMSwgNjMsIDIyMywgMjMwLCAxLCA3NSwgMjIzLCAyMzAsIDEsIDY4LCAyMjMsIDIzMCwgMSwgNzQsIAorICAgIDIyMywgMjMwLCAxLCAxNzMsIDIyMywgMjMwLCAxLCAyMjksIDE0NCwgMjIzLCAyMzAsIDEsIDIzOSwgOCwgMjIzLCAyMzAsIAorICAgIDEsIDIzOCwgMTE5LCAyMjMsIDIzMCwgMSwgMjQ3LCA5MiwgMjIzLCAyMzAsIDEsIDI0NiwgMTk5LCAyMjMsIDIzMCwgMSwgCisgICAgMjMwLCAxODEsIDIyMywgMjMwLCAxLCAyMzAsIDEyOSwgMjIzLCAyMzAsIDEsIDIyMSwgMTEsIDIyMywgMjMwLCAxLCAyMDcsIAorICAgIDI0MSwgMjIzLCAyMzAsIDEsIDIwNywgMjI5LCAyMjMsIDIzMCwgMSwgMjQ0LCAxMjAsIDIyMywgMjMwLCAxLCAyNDQsIDExMCwgCisgICAgMjIzLCAyMzAsIDEsIDI0NCwgMTA0LCAyMjMsIDIzMCwgMSwgMjIxLCAyMjcsIDIyMywgMjMwLCAxLCAyMTAsIDIyLCAyMjMsIAorICAgIDIzMCwgMSwgMjA5LCAxMDgsIDIyMywgMjMwLCAxLCAyNDQsIDIxMiwgMjIzLCAyMzAsIDEsIDI0NCwgMSwgMjIzLCAyMzAsIAorICAgIDEsIDIwMSwgMjAxLCAyMjMsIDIzMCwgMSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE4LCAyMDgsIDIyMywgMjMwLCAxLCAyNDksIAorICAgIDMyLCAyMjMsIDIzMCwgMSwgMjQ4LCA5OCwgMjIzLCAyMzAsIDEsIDE5MiwgMjIzLCAyMzAsIDEsIDE5OCwgMjIzLCAyMzAsIAorICAgIDEsIDIxNiwgMjIwLCAyMjMsIDIzMCwgMSwgMjI4LCAxMTMsIDIyMywgMjMwLCAxLCAyMDYsIDg2LCAyMjMsIDIzMCwgMSwgCisgICAgMjE1LCAzNiwgMjIzLCAyMzAsIDEsIDE1MiwgMjIzLCAyMzAsIDEsIDIxNSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE2LCA2MSwgCisgICAgMjIzLCAyMzAsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMDYsIDEsIDYzLCAyMjksIDEwNiwgMSwgMjUyLCAyNSwgMjI5LCAxMDYsIAorICAgIDEsIDc1LCAyMjksIDEwNiwgMSwgMjMxLCA4MywgMjI5LCAxMDYsIDEsIDY4LCAyMjksIDEwNiwgMSwgMjA2LCAxNzgsIDIyOSwgCisgICAgMTA2LCAxLCA3NCwgMjI5LCAxMDYsIDEsIDI1MSwgNjQsIDIyOSwgMTA2LCAxLCA3OCwgMjI5LCAxMDYsIDEsIDI1MCwgMzQsIAorICAgIDIyOSwgMTA2LCAxLCAxNzMsIDIyOSwgMTA2LCAxLCAyMjksIDE0NCwgMjI5LCAxMDYsIDEsIDIzOSwgOCwgMjI5LCAxMDYsIAorICAgIDEsIDIzOCwgMTU1LCAyMjksIDEwNiwgMSwgMjM4LCAxMTksIDIyOSwgMTA2LCAxLCAyMjIsIDIwMywgMjI5LCAxMDYsIDEsIAorICAgIDI0NywgOTIsIDIyOSwgMTA2LCAxLCAyNDYsIDE5OSwgMjI5LCAxMDYsIDEsIDIzMCwgMTgxLCAyMjksIDEwNiwgMSwgMjMwLCAKKyAgICAxMjksIDIyOSwgMTA2LCAxLCAyMzAsIDE0OSwgMjI5LCAxMDYsIDEsIDIyMSwgMTEsIDIyOSwgMTA2LCAxLCAyMDcsIDI0MSwgCisgICAgMjI5LCAxMDYsIDEsIDIwNywgMjI5LCAyMjksIDEwNiwgMSwgMjQ0LCAxMjAsIDIyOSwgMTA2LCAxLCAyNDQsIDExMCwgMjI5LCAKKyAgICAxMDYsIDEsIDIxNSwgMTg1LCAyMjksIDEwNiwgMSwgMjQ0LCAxMDQsIDIyOSwgMTA2LCAxLCAyMjEsIDIyNywgMjI5LCAxMDYsIAorICAgIDEsIDIxMCwgMjIsIDIyOSwgMTA2LCAxLCAyMDksIDEwOCwgMjI5LCAxMDYsIDEsIDI0NCwgMjEyLCAyMjksIDEwNiwgMSwgCisgICAgMjQ0LCAxLCAyMjksIDEwNiwgMSwgMjAxLCAyMDEsIDIyOSwgMTA2LCAxLCAxODUsIDIyOSwgMTA2LCAxLCAyMTgsIDIwOCwgCisgICAgMjI5LCAxMDYsIDEsIDI0OSwgMzIsIDIyOSwgMTA2LCAxLCAyNDgsIDE5OCwgMjI5LCAxMDYsIDEsIDI0OCwgOTgsIDIyOSwgCisgICAgMTA2LCAxLCAxOTIsIDIyOSwgMTA2LCAxLCAxOTgsIDIyOSwgMTA2LCAxLCAyMTYsIDIyMCwgMjI5LCAxMDYsIDEsIDIyOCwgCisgICAgMTEzLCAyMjksIDEwNiwgMSwgMjA2LCA4NiwgMjI5LCAxMDYsIDEsIDIxMywgOTAsIDIyOSwgMTA2LCAxLCAyMTUsIDM2LCAKKyAgICAyMjksIDEwNiwgMSwgMTUyLCAyMjksIDEwNiwgMiwgMjUwLCAxODAsIDIyOSwgMTA2LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAKKyAgICAxMDYsIDIyLCAyLCA3NSwgMjI5LCAxMDYsIDIyLCAyLCAyMzEsIDgzLCAyMjksIDEwNiwgMjIsIDIsIDY4LCAyMjksIDEwNiwgCisgICAgMjIsIDIsIDIwNiwgMTc4LCAyMjksIDEwNiwgMjIsIDIsIDc0LCAyMjksIDEwNiwgMjIsIDIsIDI1MSwgNjQsIDIyOSwgMTA2LCAKKyAgICAyMiwgMiwgNzgsIDIyOSwgMTA2LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMDYsIDIsIDIyMSwgNTEsIDIyOSwgMTA2LCAyLCAKKyAgICAyMDUsIDIwNCwgMjI5LCAxMDYsIDE3LCAyMDIsIDg0LCAyMjksIDEwNiwgMTcsIDEwNSwgMjI5LCAxMDYsIDE3LCAxMDgsIAorICAgIDIyOSwgMTA2LCAxNywgMTQ3LCAyMjksIDEwNiwgMTcsIDE0OSwgMjI5LCAxMDYsIDE3LCAxNzAsIDIyOSwgMTA2LCAxNywgCisgICAgMTk1LCAyMjksIDEwNiwgMTcsIDIxMywgMTExLCAyMjksIDEwNiwgMTcsIDE5OSwgMjI5LCAxMDYsIDE3LCAyMjIsIDYzLCAKKyAgICAyMzgsIDYsIDIsIDM5LCAyNTAsIDE4MSwgNTUsIDIzOCwgNiwgMiwgMjQ3LCA1MiwgMjM4LCA2LCAyLCAyNTAsIDE4MCwgCisgICAgMjM4LCA2LCAyLCAyMDUsIDE5OSwgMjM4LCA2LCAxLCA2MywgMjM4LCA2LCAxLCAyNTIsIDI1LCAyMzgsIDYsIDEsIDc1LCAKKyAgICAyMzgsIDYsIDEsIDIzMSwgODMsIDIzOCwgNiwgMSwgNjgsIDIzOCwgNiwgMSwgMjA2LCAxNzgsIDIzOCwgNiwgMSwgMTI1LCAKKyAgICAxNDYsIDIzOCwgNiwgMSwgMTI1LCAxNTksIDIzOCwgNiwgMSwgMjQxLCAxNjEsIDIzOCwgNiwgMSwgMjUxLCA2NCwgMjM4LCAKKyAgICA2LCAxLCAyMjAsIDE4LCAyMzgsIDYsIDEsIDI1MCwgMzQsIDIzOCwgNiwgMSwgMTczLCAyMzgsIDYsIDEsIDIyOSwgMTQ0LCAKKyAgICAyMzgsIDYsIDEsIDIzOSwgOCwgMjM4LCA2LCAxLCAyMzgsIDExOSwgMjM4LCA2LCAxLCAyMjIsIDIwMywgMjM4LCA2LCAxLCAKKyAgICAyNDcsIDkyLCAyMzgsIDYsIDEsIDI0NiwgMTk5LCAyMzgsIDYsIDEsIDIzMCwgMTgxLCAyMzgsIDYsIDEsIDIzMCwgMTQ5LCAKKyAgICAyMzgsIDYsIDEsIDIyMSwgMTEsIDIzOCwgNiwgMSwgMjA3LCAyNDEsIDIzOCwgNiwgMSwgMjA3LCAyMjksIDIzOCwgNiwgMSwgCisgICAgMjQ0LCAxMjAsIDIzOCwgNiwgMSwgMjQ0LCAxMDQsIDIzOCwgNiwgMSwgMjIxLCAyMjcsIDIzOCwgNiwgMSwgMjEwLCAyMiwgCisgICAgMjM4LCA2LCAxLCAyMDksIDEwOCwgMjM4LCA2LCAxLCAyNDQsIDIxMiwgMjM4LCA2LCAxLCAyNDQsIDEsIDIzOCwgNiwgMSwgCisgICAgMjAxLCAyMDEsIDIzOCwgNiwgMSwgMTg1LCAyMzgsIDYsIDEsIDIxOCwgMjA4LCAyMzgsIDYsIDEsIDI0OSwgMzIsIDIzOCwgCisgICAgNiwgMSwgMjQ4LCA5OCwgMjM4LCA2LCAxLCAxOTIsIDIzOCwgNiwgMSwgMTk4LCAyMzgsIDYsIDEsIDIxNiwgMjIwLCAyMzgsIAorICAgIDYsIDEsIDIyOCwgMTEzLCAyMzgsIDYsIDEsIDIyNywgNzcsIDIzOCwgNiwgMSwgMjA2LCA4NiwgMjM4LCA2LCAxLCAyMTMsIAorICAgIDkwLCAyMzgsIDYsIDEsIDIxMSwgMTY0LCAyMzgsIDYsIDEsIDIxNSwgMzYsIDIzOCwgNiwgMSwgMTUyLCAyMzgsIDYsIDIsIAorICAgIDIyMSwgNTEsIDIzOCwgNiwgMiwgMjUwLCAxNywgMjM4LCA2LCAyMiwgMiwgMjUyLCAyNSwgMjM4LCA2LCAyMiwgMiwgNzUsIAorICAgIDIzOCwgNiwgMjIsIDIsIDIzMSwgODMsIDIzOCwgNiwgMjIsIDIsIDY4LCAyMzgsIDYsIDIyLCAyLCAyMDYsIDE3OCwgMjM4LCAKKyAgICA2LCAyMiwgMiwgMTI1LCAxNDYsIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMjIsIDIsIDI0MSwgCisgICAgMTYxLCAyMzgsIDYsIDIyLCAyLCAyNTEsIDY0LCAyMzgsIDYsIDIyLCAyLCAyMjAsIDE4LCAyMzgsIDYsIDIyLCAyLCAyNTAsIAorICAgIDM0LCAyMzgsIDYsIDIsIDIwNSwgMjA0LCAyMzgsIDYsIDIyMCwgMzksIDIzOCwgNiwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAKKyAgICAyMzgsIDYsIDIsIDIxOCwgNzQsIDIzOCwgNiwgMSwgMjA2LCA1MiwgMjUwLCAxODAsIDIzOCwgNiwgMSwgMjA2LCA1MiwgNTIsIAorICAgIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMSwgMTI1LCAyMjcsIDc4LCAyMzgsIDYsIDIyLCAKKyAgICAyLCAxMjUsIDE1OSwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAzOSwgMjM4LCA2LCAxNywgMjAyLCA4NCwgMzksIAorICAgIDIzOCwgNiwgMTcsIDEwNSwgMzksIDIzOCwgNiwgMTcsIDEwOCwgMzksIDIzOCwgNiwgMTcsIDE0NywgMzksIDIzOCwgNiwgCisgICAgMTcsIDE0OSwgMzksIDIzOCwgNiwgMTcsIDE3MCwgMzksIDIzOCwgNiwgMTcsIDE5NSwgMzksIDIzOCwgNiwgMSwgNjMsIDM5LCAKKyAgICAyMzgsIDYsIDEsIDE3MywgMzksIDIzOCwgNiwgMSwgMjAxLCAyMDEsIDM5LCAyMzgsIDYsIDEsIDIwNSwgMjMwLCAzOSwgCisgICAgMjM4LCA2LCAxLCAxODUsIDIwOCwgMjA0LCAyNTAsIDIwOSwgMjA4LCAyMDQsIDEsIDYzLCAyMDgsIDIwNCwgMSwgMjUyLCAKKyAgICAyNSwgMjA4LCAyMDQsIDEsIDc1LCAyMDgsIDIwNCwgMSwgMjMxLCA4MywgMjA4LCAyMDQsIDEsIDY4LCAyMDgsIDIwNCwgMSwgCisgICAgMjA2LCAxNzgsIDIwOCwgMjA0LCAxLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDEsIDEyNSwgMjE1LCAxODYsIDIwOCwgMjA0LCAxLCAKKyAgICAxMjUsIDE1OSwgMjA4LCAyMDQsIDEsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIDEsIDc0LCAyMDgsIDIwNCwgMSwgMjUxLCAKKyAgICA2NCwgMjA4LCAyMDQsIDEsIDc4LCAyMDgsIDIwNCwgMSwgMjUwLCAzNCwgMjA4LCAyMDQsIDEsIDE3MywgMjA4LCAyMDQsIDEsIAorICAgIDIyOSwgMTQ0LCAyMDgsIDIwNCwgMSwgMjM5LCA4LCAyMDgsIDIwNCwgMSwgMjM4LCAxMTksIDIwOCwgMjA0LCAxLCAyMjIsIAorICAgIDIwMywgMjA4LCAyMDQsIDEsIDI0NywgOTIsIDIwOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjA4LCAyMDQsIDEsIDIzMCwgMTgxLCAKKyAgICAyMDgsIDIwNCwgMSwgMjMwLCAxNDksIDIwOCwgMjA0LCAxLCAyMjEsIDExLCAyMDgsIDIwNCwgMSwgMjA3LCAyNDEsIDIwOCwgCisgICAgMjA0LCAxLCAyMDcsIDIyOSwgMjA4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMDgsIDIwNCwgMSwgMjQ0LCAxMDQsIDIwOCwgMjA0LCAKKyAgICAxLCAyMjEsIDIyNywgMjA4LCAyMDQsIDEsIDIxMCwgMjIsIDIwOCwgMjA0LCAxLCAyMDksIDEwOCwgMjA4LCAyMDQsIDEsIAorICAgIDI0NCwgMjEyLCAyMDgsIDIwNCwgMSwgMjQ0LCAxLCAyMDgsIDIwNCwgMSwgMjAxLCAyMDEsIDIwOCwgMjA0LCAxLCAxODUsIAorICAgIDIwOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjA4LCAyMDQsIDEsIDI0OSwgMzIsIDIwOCwgMjA0LCAxLCAyNDgsIDk4LCAyMDgsIAorICAgIDIwNCwgMSwgMTkyLCAyMDgsIDIwNCwgMSwgMTk4LCAyMDgsIDIwNCwgMSwgMjE2LCAyMjAsIDIwOCwgMjA0LCAxLCAyMjgsIAorICAgIDExMywgMjA4LCAyMDQsIDEsIDIwNiwgODYsIDIwOCwgMjA0LCAxLCAyMTMsIDkwLCAyMDgsIDIwNCwgMSwgMjExLCAxNjQsIAorICAgIDIwOCwgMjA0LCAxLCAyMTUsIDM2LCAyMDgsIDIwNCwgMSwgMTUyLCAyMDgsIDIwNCwgMjIsIDIsIDI1MiwgMjUsIDIwOCwgCisgICAgMjA0LCAyMiwgMiwgNzUsIDIwOCwgMjA0LCAyMiwgMiwgMjMxLCA4MywgMjA4LCAyMDQsIDIyLCAyLCA2OCwgMjA4LCAyMDQsIAorICAgIDIyLCAyLCAyMDYsIDE3OCwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIxNSwgCisgICAgMTg2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTU5LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIAorICAgIDIyLCAyLCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjUxLCA2NCwgMjA4LCAKKyAgICAyMDQsIDIyLCAyLCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjUwLCAzNCwgCisgICAgMjA4LCAyMDQsIDIsIDI0NywgNTIsIDIwOCwgMjA0LCAyLCAyNTAsIDE4MCwgMjA4LCAyMDQsIDIsIDIwNSwgMTk5LCAyMDgsIAorICAgIDIwNCwgMiwgMjA1LCAyMDQsIDIwOCwgMjA0LCAyLCAyMjEsIDUxLCAyMDgsIDIwNCwgMiwgMjUwLCAxNywgMjA4LCAyMDQsIAorICAgIDIzNywgMTkxLCAyMDgsIDIwNCwgMjUxLCAxNDYsIDU0LCAyMDgsIDIwNCwgMjIwLCAzOSwgMjA4LCAyMDQsIDE3LCAyMDIsIAorICAgIDg0LCAyMDgsIDIwNCwgMTcsIDEwNSwgMjA4LCAyMDQsIDE3LCAxMDgsIDIwOCwgMjA0LCAxNywgMTQ3LCAyMDgsIDIwNCwgCisgICAgMTcsIDE0OSwgMjA4LCAyMDQsIDE3LCAxNzAsIDIwOCwgMjA0LCAxNywgMTk1LCAyMDgsIDIwNCwgMTcsIDIxMywgMTExLCAKKyAgICAyMDgsIDIwNCwgMTcsIDE5OSwgMjA4LCAyMDQsIDE3LCAyMjIsIDYzLCAxODYsIDEsIDYzLCAxODYsIDEsIDI1MiwgMjUsIAorICAgIDE4NiwgMSwgNzUsIDE4NiwgMSwgMjMxLCA4MywgMTg2LCAxLCA2OCwgMTg2LCAxLCAyMDYsIDE3OCwgMTg2LCAxLCAxMjUsIAorICAgIDE0NiwgMTg2LCAxLCAxMjUsIDIxNSwgMTg2LCAxODYsIDEsIDEyNSwgMTU5LCAxODYsIDEsIDEyNSwgMjI3LCA3OCwgMTg2LCAKKyAgICAxLCA3NCwgMTg2LCAxLCAyNTEsIDY0LCAxODYsIDEsIDc4LCAxODYsIDEsIDI1MCwgMzQsIDE4NiwgMSwgMTczLCAxODYsIDEsIAorICAgIDIyOSwgMTQ0LCAxODYsIDEsIDIzOSwgOCwgMTg2LCAxLCAyMzgsIDExOSwgMTg2LCAxLCAyMjIsIDIwMywgMTg2LCAxLCAKKyAgICAyNDcsIDkyLCAxODYsIDEsIDI0NiwgMTk5LCAxODYsIDEsIDIzMCwgMTgxLCAxODYsIDEsIDIzMCwgMTQ5LCAxODYsIDEsIAorICAgIDIyMSwgMTEsIDE4NiwgMSwgMjA3LCAyNDEsIDE4NiwgMSwgMjA3LCAyMjksIDE4NiwgMSwgMjQ0LCAxMjAsIDE4NiwgMSwgCisgICAgMjQ0LCAxMDQsIDE4NiwgMSwgMjIxLCAyMjcsIDE4NiwgMSwgMjEwLCAyMiwgMTg2LCAxLCAyMDksIDEwOCwgMTg2LCAxLCAKKyAgICAyNDQsIDIxMiwgMTg2LCAxLCAyNDQsIDEsIDE4NiwgMSwgMjAxLCAyMDEsIDE4NiwgMSwgMTg1LCAxODYsIDEsIDIxOCwgCisgICAgMjA4LCAxODYsIDEsIDI0OSwgMzIsIDE4NiwgMSwgMjQ4LCA5OCwgMTg2LCAxLCAxOTIsIDE4NiwgMSwgMTk4LCAxODYsIDEsIAorICAgIDIxNiwgMjIwLCAxODYsIDEsIDIyOCwgMTEzLCAxODYsIDEsIDIwNiwgODYsIDE4NiwgMSwgMjEzLCA5MCwgMTg2LCAxLCAKKyAgICAyMTEsIDE2NCwgMTg2LCAxLCAyMTUsIDM2LCAxODYsIDEsIDE1MiwgMTg2LCAyMiwgMiwgMjUyLCAyNSwgMTg2LCAyMiwgMiwgCisgICAgNzUsIDE4NiwgMjIsIDIsIDIzMSwgODMsIDE4NiwgMjIsIDIsIDY4LCAxODYsIDIyLCAyLCAyMDYsIDE3OCwgMTg2LCAyMiwgCisgICAgMiwgMTI1LCAxNDYsIDE4NiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAyNTEsIAorICAgIDY0LCAxODYsIDIyLCAyLCA3OCwgMTg2LCAyMiwgMiwgMjUwLCAzNCwgMTg2LCAyLCAyNDcsIDUyLCAxODYsIDIsIDI1MCwgCisgICAgMTgwLCAxODYsIDIsIDIwNSwgMTk5LCAxODYsIDIsIDIwNSwgMjA0LCAxODYsIDIsIDIyMSwgNTEsIDE4NiwgMiwgMjEyLCAKKyAgICAxNTcsIDE4NiwgMjQ0LCAxNjYsIDE4NiwgNTIsIDI0NCwgMTY2LCAxODYsIDIxMywgMTMxLCAyNDMsIDg1LCAxODYsIDIxMywgCisgICAgMTMxLCAxNDIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkxLCAxODYsIDIxNiwgOTgsIAorICAgIDIyNSwgOTAsIDE4NiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEzLCA4MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAKKyAgICAyNSwgMjA3LCA5MiwgMjE5LCAyMzIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgMjUsIDI0MiwgODMsIDI0NSwgCisgICAgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjQ1LCAxMzcsIDE4NiwgMjE0LCAKKyAgICAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgCisgICAgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAKKyAgICAyNTIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgMjUzLCAzLCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAKKyAgICAzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIAorICAgIDEzMSwgMywgMjE3LCA1OCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjEzLCAxMjgsIDI0NSwgMTM3LCAKKyAgICAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIAorICAgIDU5LCAyNSwgMTIwLCAyNDEsIDg2LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMzksIDE0NywgMjQxLCAKKyAgICA4NiwgMTg2LCAxLCAyMDksIDMyLCAyNTAsIDI1NSwgNzUsIDE4NiwgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCA3NSwgMTg2LCAKKyAgICAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDIzMSwgODMsIDE4NiwgMSwgMjUwLCAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIAorICAgIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgMjU1LCAyMDYsIDE3OCwgMjI0LCA3NCwgMSwgNjMsIDIyNCwgNzQsIDEsIDI1MiwgCisgICAgMjUsIDIyNCwgNzQsIDEsIDc1LCAyMjQsIDc0LCAxLCAyMzEsIDgzLCAyMjQsIDc0LCAxLCA2OCwgMjI0LCA3NCwgMSwgMjA2LCAKKyAgICAxNzgsIDIyNCwgNzQsIDEsIDEyNSwgMTQ2LCAyMjQsIDc0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAxLCAxMjUsIAorICAgIDE1OSwgMjI0LCA3NCwgMSwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAxLCA3NCwgMjI0LCA3NCwgMSwgMjUxLCA2NCwgMjI0LCAKKyAgICA3NCwgMSwgNzgsIDIyNCwgNzQsIDEsIDI1MCwgMzQsIDIyNCwgNzQsIDEsIDE3MywgMjI0LCA3NCwgMSwgMjI5LCAxNDQsIAorICAgIDIyNCwgNzQsIDEsIDIzOSwgOCwgMjI0LCA3NCwgMSwgMjM4LCAxMTksIDIyNCwgNzQsIDEsIDIyMiwgMjAzLCAyMjQsIDc0LCAKKyAgICAxLCAyNDcsIDkyLCAyMjQsIDc0LCAxLCAyNDYsIDE5OSwgMjI0LCA3NCwgMSwgMjMwLCAxODEsIDIyNCwgNzQsIDEsIDIzMCwgCisgICAgMTQ5LCAyMjQsIDc0LCAxLCAyMjEsIDExLCAyMjQsIDc0LCAxLCAyMDcsIDI0MSwgMjI0LCA3NCwgMSwgMjA3LCAyMjksIAorICAgIDIyNCwgNzQsIDEsIDI0NCwgMTIwLCAyMjQsIDc0LCAxLCAyNDQsIDEwNCwgMjI0LCA3NCwgMSwgMjIxLCAyMjcsIDIyNCwgCisgICAgNzQsIDEsIDIxMCwgMjIsIDIyNCwgNzQsIDEsIDIwOSwgMTA4LCAyMjQsIDc0LCAxLCAyNDQsIDIxMiwgMjI0LCA3NCwgMSwgCisgICAgMjQ0LCAxLCAyMjQsIDc0LCAxLCAyMDEsIDIwMSwgMjI0LCA3NCwgMSwgMTg1LCAyMjQsIDc0LCAxLCAyMTgsIDIwOCwgMjI0LCAKKyAgICA3NCwgMSwgMjQ5LCAzMiwgMjI0LCA3NCwgMSwgMjQ4LCA5OCwgMjI0LCA3NCwgMSwgMTkyLCAyMjQsIDc0LCAxLCAxOTgsIAorICAgIDIyNCwgNzQsIDEsIDIxNiwgMjIwLCAyMjQsIDc0LCAxLCAyMjgsIDExMywgMjI0LCA3NCwgMSwgMjA2LCA4NiwgMjI0LCA3NCwgCisgICAgMSwgMjEzLCA5MCwgMjI0LCA3NCwgMSwgMjExLCAxNjQsIDIyNCwgNzQsIDEsIDIxNSwgMzYsIDIyNCwgNzQsIDEsIDE1MiwgCisgICAgMjI0LCA3NCwgMSwgMjI3LCA3NywgMjI0LCA3NCwgMjIsIDIsIDI1MiwgMjUsIDIyNCwgNzQsIDIyLCAyLCA3NSwgMjI0LCAKKyAgICA3NCwgMjIsIDIsIDIzMSwgODMsIDIyNCwgNzQsIDIyLCAyLCA2OCwgMjI0LCA3NCwgMjIsIDIsIDIwNiwgMTc4LCAyMjQsIAorICAgIDc0LCAyMiwgMiwgMTI1LCAxNDYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAKKyAgICAxNTksIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDIyLCAyLCA3NCwgMjI0LCA3NCwgMjIsIDIsIAorICAgIDI1MSwgNjQsIDIyNCwgNzQsIDIyLCAyLCA3OCwgMjI0LCA3NCwgMjIsIDIsIDI1MCwgMzQsIDIyNCwgNzQsIDIsIDI1MCwgCisgICAgMTgwLCAyMjQsIDc0LCAyLCAyMDUsIDE5OSwgMjI0LCA3NCwgMiwgMjA1LCAyMDQsIDIyNCwgNzQsIDIsIDI1MCwgMTIzLCAKKyAgICAyMjQsIDc0LCAyNDQsIDE2NiwgMjI0LCA3NCwgNTIsIDI0NCwgMTY2LCAyMjQsIDc0LCAyNTEsIDE0NiwgNTQsIDIyNCwgNzQsIAorICAgIDIsIDIzNiwgMCwgMjI0LCA3NCwgMTcsIDIwMiwgODQsIDIyNCwgNzQsIDE3LCAxMDUsIDIyNCwgNzQsIDE3LCAxMDgsIDIyNCwgCisgICAgNzQsIDE3LCAxNDcsIDIyNCwgNzQsIDE3LCAxNDksIDIyNCwgNzQsIDE3LCAxNzAsIDIyNCwgNzQsIDE3LCAxOTUsIDIyNCwgCisgICAgNzQsIDE3LCAyMTMsIDExMSwgMjI0LCA3NCwgMTcsIDE5OSwgMjI0LCA3NCwgMTcsIDIyMiwgNjMsIDIwOSwgMjM5LCAxLCAKKyAgICA2MywgMjA5LCAyMzksIDEsIDI1MiwgMjUsIDIwOSwgMjM5LCAxLCA3NSwgMjA5LCAyMzksIDEsIDIzMSwgODMsIDIwOSwgCisgICAgMjM5LCAxLCA2OCwgMjA5LCAyMzksIDEsIDIwNiwgMTc4LCAyMDksIDIzOSwgMSwgNzQsIDIwOSwgMjM5LCAxLCAyNTEsIDY0LCAKKyAgICAyMDksIDIzOSwgMSwgNzgsIDIwOSwgMjM5LCAxLCAyNTAsIDM0LCAyMDksIDIzOSwgMSwgMTczLCAyMDksIDIzOSwgMSwgCisgICAgMjI5LCAxNDQsIDIwOSwgMjM5LCAxLCAyMzksIDgsIDIwOSwgMjM5LCAxLCAyMzgsIDExOSwgMjA5LCAyMzksIDEsIDIyMiwgCisgICAgMjAzLCAyMDksIDIzOSwgMSwgMjQ3LCA5MiwgMjA5LCAyMzksIDEsIDI0NiwgMTk5LCAyMDksIDIzOSwgMSwgMjMwLCAxODEsIAorICAgIDIwOSwgMjM5LCAxLCAyMzAsIDE0OSwgMjA5LCAyMzksIDEsIDIyMSwgMTEsIDIwOSwgMjM5LCAxLCAyMDcsIDI0MSwgMjA5LCAKKyAgICAyMzksIDEsIDIwNywgMjI5LCAyMDksIDIzOSwgMSwgMjQ0LCAxMjAsIDIwOSwgMjM5LCAxLCAyNDQsIDEwNCwgMjA5LCAyMzksIAorICAgIDEsIDIyMSwgMjI3LCAyMDksIDIzOSwgMSwgMjEwLCAyMiwgMjA5LCAyMzksIDEsIDIwOSwgMTA4LCAyMDksIDIzOSwgMSwgCisgICAgMjQ0LCAyMTIsIDIwOSwgMjM5LCAxLCAyNDQsIDEsIDIwOSwgMjM5LCAxLCAyMDEsIDIwMSwgMjA5LCAyMzksIDEsIDE4NSwgCisgICAgMjA5LCAyMzksIDEsIDIxOCwgMjA4LCAyMDksIDIzOSwgMSwgMjQ5LCAzMiwgMjA5LCAyMzksIDEsIDI0OCwgOTgsIDIwOSwgCisgICAgMjM5LCAxLCAxOTIsIDIwOSwgMjM5LCAxLCAxOTgsIDIwOSwgMjM5LCAxLCAyMTYsIDIyMCwgMjA5LCAyMzksIDEsIDIyOCwgCisgICAgMTEzLCAyMDksIDIzOSwgMSwgMjA2LCA4NiwgMjA5LCAyMzksIDEsIDIxMywgOTAsIDIwOSwgMjM5LCAxLCAyMTUsIDM2LCAKKyAgICAyMDksIDIzOSwgMSwgMTUyLCAyMDksIDIzOSwgMSwgMjE1LCAxODUsIDIwOSwgMjM5LCAyLCAyNTAsIDE4MCwgMjA5LCAyMzksIAorICAgIDIsIDIwNSwgMTk5LCAyMDksIDIzOSwgMjIsIDIsIDI1MiwgMjUsIDIwOSwgMjM5LCAyMiwgMiwgNzUsIDIwOSwgMjM5LCAyMiwgCisgICAgMiwgMjMxLCA4MywgMjA5LCAyMzksIDIyLCAyLCA2OCwgMjA5LCAyMzksIDIyLCAyLCAyMDYsIDE3OCwgMjA5LCAyMzksIDIyLCAKKyAgICAyLCA3NCwgMjA5LCAyMzksIDIyLCAyLCAyNTEsIDY0LCAyMDksIDIzOSwgMjIsIDIsIDc4LCAyMDksIDIzOSwgMjIsIDIsIAorICAgIDI1MCwgMzQsIDIwOSwgMjM5LCAyLCAyMDUsIDIwNCwgMjA5LCAyMzksIDIsIDIyMSwgNTEsIDIwOSwgMjM5LCAxNywgMjAyLCAKKyAgICA4NCwgMjA5LCAyMzksIDE3LCAxMDUsIDIwOSwgMjM5LCAxNywgMTA4LCAyMDksIDIzOSwgMTcsIDE0NywgMjA5LCAyMzksIAorICAgIDE3LCAxNDksIDIwOSwgMjM5LCAxNywgMTcwLCAyMDksIDIzOSwgMTcsIDE5NSwgMjA5LCAyMzksIDE3LCAyMTMsIDExMSwgCisgICAgMjA5LCAyMzksIDE3LCAxOTksIDIwOSwgMjM5LCAxNywgMjIyLCA2MywgMjUxLCA2OCwgMSwgMTczLCAyNTEsIDY4LCAxLCAKKyAgICAyMjksIDE0NCwgMjUxLCA2OCwgMSwgMjIyLCAyMDMsIDI1MSwgNjgsIDEsIDIwMSwgMjAxLCAyNTEsIDY4LCAxLCAyMTAsIAorICAgIDIyLCAyNTEsIDY4LCAxLCAyNTAsIDI1NSwgMjEwLCAyMiwgMjUxLCA2OCwgMSwgMTg1LCAyNTEsIDY4LCAxLCAyMTgsIDIwOCwgCisgICAgMjUxLCA2OCwgMSwgMjQ5LCAzMiwgMjUxLCA2OCwgMSwgMTkyLCAyNTEsIDY4LCAxLCAyMzAsIDE4MSwgMjUxLCA2OCwgMSwgCisgICAgMjQ2LCAxOTksIDI1MSwgNjgsIDEsIDIwOSwgMTA4LCAyNTEsIDY4LCAxLCAyMTYsIDIyMCwgMjUxLCA2OCwgMSwgMjI4LCAKKyAgICAxMTMsIDI1MSwgNjgsIDEsIDIxNSwgMzYsIDI1MSwgNjgsIDEsIDIyMSwgMTEsIDI1MSwgNjgsIDEsIDE1MiwgMjUxLCA2OCwgCisgICAgMSwgNjMsIDI1MSwgNjgsIDEsIDI0NCwgMjEyLCAyNTEsIDY4LCAxLCAyNDQsIDEsIDI1MSwgNjgsIDEsIDIzOSwgOCwgMjUxLCAKKyAgICA2OCwgMSwgMjUwLCAyNTUsIDIzOSwgOCwgMjUxLCA2OCwgMSwgMjM4LCAxMTksIDI1MSwgNjgsIDEsIDI0OCwgOTgsIDI1MSwgCisgICAgNjgsIDEsIDIzMCwgMTQ5LCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAKKyAgICAyMTYsIDIyMCwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyNywgMTM1LCAyMTYsIDIyMCwgMjUxLCA2OCwgMjIsIDIsIDYzLCAKKyAgICAyNTEsIDY4LCAyMiwgMiwgMjUyLCAyNSwgMjUxLCA2OCwgMjIsIDIsIDc1LCAyNTEsIDY4LCAyMiwgMiwgMjMxLCA4MywgCisgICAgMjUxLCA2OCwgMjIsIDIsIDY4LCAyNTEsIDY4LCAyMiwgMiwgMjA2LCAxNzgsIDI1MSwgNjgsIDIyLCAyLCA3NCwgMjUxLCAKKyAgICA2OCwgMjIsIDIsIDI1MCwgMTMsIDI1MSwgNjgsIDIyLCAyLCA3OCwgMjUxLCA2OCwgMjIsIDIsIDI1MSwgNjQsIDI1MSwgNjgsIAorICAgIDIyLCAyLCAyNTAsIDI0NywgMjUxLCA2OCwgMiwgMjI5LCA4NiwgMjUxLCA2OCwgMTcsIDIwMiwgODQsIDI1MSwgNjgsIDE3LCAKKyAgICAxMDUsIDI1MSwgNjgsIDE3LCAxMDgsIDI1MSwgNjgsIDE3LCAxNDcsIDI1MSwgNjgsIDE3LCAxNDksIDI1MSwgNjgsIDE3LCAKKyAgICAxNzAsIDI1MSwgNjgsIDE3LCAxOTUsIDI1MSwgNjgsIDE3LCAyMTMsIDExMSwgMjUxLCA2OCwgMTcsIDE5OSwgMjUxLCA2OCwgCisgICAgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDQyLCAyMDksIDE1MiwgMjUxLCA2OCwgNDIsIDIwNywgMTUxLCAyNTEsIDY4LCAyLCA1LCAKKyAgICAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNSwgMTM2LCAyNTEsIDY4LCAxNiwgMjA1LCAKKyAgICAyMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMiwgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA2MywgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA0LCAzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIAorICAgIDI0NiwgNDgsIDYsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIAorICAgIDYsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKKyAgICA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjIzLCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzksIDgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDYsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKKyAgICAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjAsIAorICAgIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDcsIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIxLCAzNywgCisgICAgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ0LCAyMTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgNDksIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNiwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA2LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCisgICAgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAorICAgIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIyLCAKKyAgICAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDQsIDMwLCAyMDQsIAorICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA1LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCisgICAgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3OCwgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyMjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzOSwgOCwgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNSwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCAKKyAgICA0OCwgNSwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAorICAgIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMCwgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgCisgICAgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjEsIDM3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDQsIDIxMiwgCisgICAgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCA0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyNDcsIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgCisgICAgMjQ2LCA0OCwgNSwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIAorICAgIDQ4LCA1LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKKyAgICAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIAorICAgIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjAyLCA4NCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDEwNSwgMjA0LCAKKyAgICA5MiwgMjQ2LCA0OCwgMTcsIDEwOCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE0NywgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIAorICAgIDE0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE3MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5NSwgMjA0LCA5MiwgMjQ2LCAKKyAgICA0OCwgMTcsIDIxMywgMTExLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjIyLCAKKyAgICA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgMTUyLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA3LCAxNTEsIDIwNCwgCisgICAgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDUzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjM5LCAxNTMsIDIwNCwgOTIsIDI0NiwgCisgICAgNDgsIDQyLCAyNDAsIDE4LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjEyLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIAorICAgIDIxMywgMTA1LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjQxLCAxMzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMjIsIDU4LCAKKyAgICAyMDQsIDkyLCAyNDYsIDQ4LCAyMjAsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxODUsIDIxOSwgNDksIAorICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE3MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjI4LCAxMTMsIDIxOSwgCisgICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE5MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ0LCAyMTIsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMiwgMTE2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKKyAgICAyMDYsIDg2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjIsIDIwMywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKKyAgICA3NywgMSwgMTUyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMzksIDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDEsIDIyOSwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTUsIDM2LCAyMTksIDQ5LCAyNDYsIDY2LCAKKyAgICAyMzcsIDc3LCAxLCAyNDksIDMyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDcsIDkyLCAyMTksIDQ5LCAyNDYsIAorICAgIDY2LCAyMzcsIDc3LCAxLCAyMTAsIDIyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDksIDEwOCwgMjE5LCA0OSwgCisgICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAxLCAyMDEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxOCwgMjA4LCAKKyAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTYsIDIyMCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCisgICAgMjQwLCAxMDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NiwgMTk5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAorICAgIDc3LCAxLCA2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDEsIDc1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCisgICAgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwNywgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAorICAgIDIzNSwgMTcxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjE5LCAxODQsIDIxOSwgNDksIDI0NiwgNjYsIAorICAgIDIzNywgNzcsIDEsIDQ2LCAyMzAsIDU0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjEwLCA2OSwgMjE5LCAKKyAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyNiwgMTg1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgCisgICAgMjIzLCAxNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAxNTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDEsIDQ2LCAyMDQsIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyMiwgMjA1LCAyMTksIDQ5LCAKKyAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjAzLCAxMjQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAKKyAgICAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAyMDgsIDE2MSwgMjE5LCA0OSwgCisgICAgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDIxNSwgMjQ1LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMTQzLCAKKyAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCisgICAgNzcsIDIxNCwgMjM5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMTYzLCAKKyAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCAKKyAgICA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIAorICAgIDYyLCAyMDYsIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCAKKyAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKKyAgICAyMjYsIDI1NCwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMjA4LCAxNjEsIAorICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAorICAgIDIyNiwgMjU0LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMTQzLCAKKyAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgOSwgMiwgNjMsIDksIAorICAgIDIsIDM0LCAyMywgNjMsIDksIDIsIDM0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMzQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIAorICAgIDksIDIsIDM0LCAyMywgMTUyLCA5LCAyLCAzNCwgMjMsIDIzMSwgODUsIDksIDIsIDM0LCAyMywgMjI4LCA5MywgMjM3LCAKKyAgICAyMDgsIDksIDIsIDM0LCAyMywgMjIzLCAxOTksIDksIDIsIDM0LCAyMywgMjE1LCAyMiwgOSwgMiwgMjU0LCAzNCwgOSwgMiwgCisgICAgMjUxLCAyMzIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjUwLCA3MywgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNDIsIDMwLCAyMzcsIAorICAgIDIwOCwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDI0NiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDIzMywgMjA5LCAKKyAgICAxNDEsIDksIDIsIDI1MSwgMjMzLCAyMywgMTUyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKKyAgICAyLCAyNTEsIDIzMywgMjMsIDIzMSwgNTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjI4LCA5NCwgOSwgMiwgMjUxLCAyMzMsIAorICAgIDIzLCAyMTMsIDI3LCA5LCAyLCAyNTEsIDIzMywgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyNTEsIDIzMywgCisgICAgMjM3LCAyMDgsIDksIDIsIDI1MSwgMTQ5LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNTEsIDE1MCwgCisgICAgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCisgICAgMjUxLCAxNTAsIDIzLCAyMTMsIDg4LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNTEsIDEyMiwgOSwgCisgICAgMiwgMjUxLCA0NywgOSwgMiwgMjUxLCA0OCwgMjMsIDI0MSwgMjIsIDksIDIsIDI1MSwgNDgsIDIzLCAyMTIsIDI0NSwgOTEsIAorICAgIDIzOCwgNTUsIDksIDIsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgCisgICAgMjQzLCAxODYsIDksIDIsIDI1MSwgNDAsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNTEsIDQwLCAyMywgMTUyLCA5LCAyLCAyNTEsIAorICAgIDQwLCAyMywgMjMwLCAyNywgOSwgMiwgMjUxLCA0MCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyNTEsIDQwLCAyMywgMjEzLCA0MywgCisgICAgOSwgMiwgMjUxLCA0MCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNTEsIDM2LCA5LCAyLCAyNTEsIDI4LCA5LCAyLCAyNTAsIAorICAgIDI0MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDExNSwgCisgICAgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMjYsIDIwOCwgMjE5LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIAorICAgIDIxOSwgMjUxLCAyNTAsIDIzMiwgOTEsIDIyMywgOTYsIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgMjExLCAxNzYsIAorICAgIDksIDIsIDI1MCwgMjAwLCA5LCAyLCAyNTAsIDE3MCwgOSwgMiwgMjUwLCAxMzgsIDksIDIsIDI1MCwgMTM5LCAyMywgMjI4LCAKKyAgICAxODMsIDksIDIsIDI1MCwgMTEwLCA5LCAyLCAyNTAsIDgwLCA5LCAyLCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAyMDIsIAorICAgIDM1LCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCAKKyAgICA3NiwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMTksIDk2LCA5LCAyLCAyNTAsIAorICAgIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgCisgICAgNzYsIDI0NSwgMTI0LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3MywgOSwgMiwgCisgICAgMjUwLCA2OSwgOSwgMiwgMjQ5LCAzMiwgOSwgMiwgMjQ5LCAxNSwgOSwgMiwgMjQ5LCA5LCA5LCAyLCAyNDksIDMsIDksIDIsIAorICAgIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1NCwgMTE1LCAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTIsIDksIDIsIDE0MiwgOSwgMiwgCisgICAgMjQ4LCAyMzAsIDksIDIsIDI0OCwgODYsIDksIDIsIDI0OCwgODcsIDIzLCA2MywgOSwgMiwgMjQ4LCA4NywgMjMsIDIzOCwgCisgICAgMjI0LCA5LCAyLCAyNDgsIDg3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0NywgMTkzLCA5LCAyLCAyNDcsIAorICAgIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjUxLCAyMzIsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMDYsIDI1NSwgOSwgCisgICAgMiwgMjQ3LCAxOTQsIDI0NSwgMTI0LCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTcyLCAxMTUsIAorICAgIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE2MCwgOSwgMiwgMjQ3LCAxNTksIDksIDIsIDI0NCwgMjEyLCA5LCAyLCAyNDQsIDIwMywgCisgICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAzNCwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKKyAgICAyMywgMjUwLCAyNDMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjQ4LCAyNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIAorICAgIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzksIDgsIDksIDIsIDI0NCwgMjA0LCAKKyAgICAyMjksIDY5LCAyMywgMjM5LCA5LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDgxLCAKKyAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM3LCAKKyAgICAyMTksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMTUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgCisgICAgMjI0LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgMjI1LCA5MSwgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAKKyAgICAyMjksIDY5LCAyMywgMjMwLCAxMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjgsIDExMywgOSwgMiwgMjQ0LCAKKyAgICAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDI0MCwgOTEsIAorICAgIDIyNSwgNzgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKKyAgICAyMywgMjIyLCAyNDAsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIAorICAgIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjEyLCAxNjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA5LCAyNDIsIAorICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA3LCA0MSwgOTEsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIAorICAgIDY5LCAyMywgMjA2LCAxODYsIDksIDIsIDI0NCwgMTc1LCA5LCAyLCAyNDQsIDE1NCwgOSwgMiwgMjQ0LCAxNTMsIDksIDIsIAorICAgIDI0NCwgMTUyLCA5LCAyLCAyNDMsIDIzMywgOSwgMiwgMjQzLCAyMTUsIDksIDIsIDI0MywgMTg4LCA5LCAyLCAyNDMsIDE4OSwgCisgICAgMjMsIDIxMywgNDMsIDksIDIsIDI0MywgMTg2LCA5LCAyLCAyNDMsIDE3NiwgOSwgMiwgMjQzLCAxNzcsIDIyOSwgMjMyLCAKKyAgICAxMDYsIDIzNywgMjA5LCAyNDMsIDE1NiwgOSwgMiwgMjQzLCAxNTYsIDksIDIsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIAorICAgIDExNSwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgMjM3LCAyMDgsIDksIDIsIDI0MiwgNDMsIDIxMywgMjQsIDksIDIsIDI0MiwgCisgICAgNDAsIDksIDIsIDI0MiwgNDEsIDIzLCAyNDEsIDQsIDksIDIsIDI0MiwgMzksIDksIDIsIDI0MiwgMzcsIDksIDIsIDI0MiwgCisgICAgMzYsIDksIDIsIDI0MiwgMzUsIDksIDIsIDI0MiwgMzEsIDksIDIsIDI0MiwgMjksIDksIDIsIDI0MiwgMzAsIDIzNywgMjA4LCAKKyAgICA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMjgsIDksIDIsIDI0MiwgMjEsIDksIDIsIAorICAgIDc0LCA5LCAyLCAxODgsIDIzLCAyMTksIDk2LCA5LCAyLCAxODgsIDExNSwgMTg4LCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIAorICAgIDksIDIsIDI0MSwgMTkwLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDM0LCA5MSwgMjM3LCAxNjAsIDkxLCAyNDQsIDIxMiwgOSwgMiwgCisgICAgMjQxLCAxOTEsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQxLCAxOTEsIDIzLCAKKyAgICAyMTUsIDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQxLCAxOTEsIDIzLCA2OCwgOSwgMiwgMjQxLCAKKyAgICAxNjMsIDksIDIsIDI0MSwgMTUxLCA5LCAyLCAyNDEsIDEyMiwgOSwgMiwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjMsIAorICAgIDIzOCwgMjMyLCA5LCAyLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNDEsIDkzLCAyMywgMjI1LCAKKyAgICAyMCwgOSwgMiwgMjQxLCA5MywgMjQ1LCAxMjQsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIxOSwgMjUxLCAyNDEsIDkyLCAKKyAgICA5LCAyLCAyNDEsIDkzLCAyMTEsIDE3NiwgOSwgMiwgMjQxLCAyNSwgOSwgMiwgMjQxLCAyMiwgOSwgMiwgMjQxLCA0LCA5LCAKKyAgICAyLCAyNDAsIDE3OSwgOSwgMiwgMjQwLCAxODAsIDIzLCA2MywgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIAorICAgIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKKyAgICAyNTAsIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDksIDE1LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgCisgICAgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKKyAgICAxNTIsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzMSwgODYsIAorICAgIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMyLCAKKyAgICAyMTEsIDE3NiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDExMywgOSwgCisgICAgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjcsIDE0OCwgOSwgCisgICAgMiwgMjQwLCAxODAsIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyNDAsIDE4MCwgCisgICAgMjMsIDIwNywgMjksIDksIDIsIDIzOSwgOCwgOSwgMiwgMjM5LCA5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA2LCA5LCAyLCAKKyAgICAyMzksIDcsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDE1MiwgOSwgCisgICAgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzksIDcsIDIzLCAyNTEsIDE1MCwgMjA5LCAxNDIsIDkxLCAKKyAgICAyMTAsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCA3NSwgOSwgMiwgCisgICAgMjM5LCA3LCAyMywgMjUwLCA3NCwgOTEsIDIzOCwgMjQ2LCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzksIAorICAgIDcsIDIzLCAyNDgsIDIzMSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDcsIDE2MCwgOSwgMiwgMjM5LCA3LCAKKyAgICAyMywgMjQ3LCAxNjEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ0LCAyMTIsIDksIDIsIDIzOSwgNywgMjMsIAorICAgIDI0MywgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgCisgICAgNDAsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMywgOTEsIDIyOCwgMTEzLCAKKyAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgCisgICAgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI0LCA5LCAKKyAgICAyLCAyMzksIDcsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDc5LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIAorICAgIDgwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNjQsIDkxLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAKKyAgICAyMzcsIDE2MCwgOTEsIDIyNiwgMjQwLCA5MSwgMjQxLCA0LCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDE0MCwgOSwgMiwgCisgICAgMjM5LCA3LCAyMywgMjM3LCAxNDEsIDkxLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCA0LCA5MSwgMjI3LCAKKyAgICAxNDgsIDksIDIsIDIzOSwgNywgMjMsIDIzNiwgMjEsIDksIDIsIDIzOSwgNywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKKyAgICAyLCAyMzksIDcsIDIzLCAyMzAsIDIxMCwgOTEsIDIzNiwgMjcsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzAsIAorICAgIDEyLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCA5NCwgOSwgMiwgMjM5LCA3LCAKKyAgICAyMywgMjI5LCA5NSwgOTEsIDIyOCwgMzAsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjA4LCA5MSwgMjUwLCAyMzEsIDksIDIsIAorICAgIDIzOSwgNywgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjM5LCAKKyAgICA3LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDEsIAorICAgIDExNSwgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMTg1LCA5LCAyLCAyMzksIDcsIDIzLCAyMTUsIDgsIDksIDIsIDIzOSwgCisgICAgNywgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQ0LCAKKyAgICA5MSwgMjA3LCAxODEsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgOSwgOSwgMiwgMjM5LCA3LCAyMywgMjEwLCAyMjAsIDksIDIsIAorICAgIDIzOSwgNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzksIDcsIDIzLCA2OCwgOSwgMiwgMjM5LCA3LCAyMywgMjA3LCAyOSwgOSwgCisgICAgMiwgMjM5LCA3LCAyMywgMjA3LCAzMCwgOTEsIDI0MiwgNDIsIDksIDIsIDIzOSwgNywgMTE1LCAyMzksIDYsIDksIDIsIAorICAgIDIzOSwgMSwgOSwgMiwgMjM5LCAyLCAyNDUsIDEyNCwgMjM5LCAxLCA5LCAyLCAyMzgsIDI1NSwgOSwgMiwgMjM5LCAwLCAKKyAgICAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ2LCA5LCAyLCAyMzgsIDI0NywgCisgICAgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ1LCA5LCAyLCAyMzgsIAorICAgIDI0MywgOSwgMiwgMjM4LCAyMzQsIDksIDIsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgCisgICAgMjMzLCAxMTUsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjQ1LCAxMjQsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIyNCwgCisgICAgOSwgMiwgMjM4LCAyMjMsIDksIDIsIDIzOCwgMjE4LCA5LCAyLCAyMzgsIDE2MiwgOSwgMiwgMjM4LCAxNjMsIDIzLCAyMjgsIAorICAgIDE4MywgOSwgMiwgMjM4LCA4MSwgOSwgMiwgMjM4LCA4MiwgMjMsIDc0LCA5LCAyLCAyMzgsIDgyLCAyMywgNjgsIDksIDIsIAorICAgIDIzOCwgODIsIDI0NSwgMTI0LCAyMzgsIDgxLCA5LCAyLCAyMzgsIDc5LCA5LCAyLCAyMzgsIDgwLCAxMTUsIDIzOCwgNzksIAorICAgIDksIDIsIDIzOCwgODAsIDI0NSwgMTI0LCAyMzgsIDc5LCA5LCAyLCAyMzgsIDc2LCA5LCAyLCAyMzgsIDYzLCA5LCAyLCAKKyAgICAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgMjM4LCA2MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgCisgICAgMiwgMjM4LCA2MiwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDIzMSwgODUsIDksIDIsIAorICAgIDIzOCwgNjIsIDIzLCAyMjYsIDI0MCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOCwgNjIsIDIzLCAxODUsIDksIDIsIDIzOCwgCisgICAgNTcsIDksIDIsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyMywgCisgICAgMjQ5LCAxNSwgOSwgMiwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjM3LCAKKyAgICAyMzAsIDksIDIsIDIzNywgMjMxLCAyNDUsIDEyNCwgMjM3LCAyMzAsIDksIDIsIDIzNywgMjI4LCA5LCAyLCAyMzcsIDIyOSwgCisgICAgMjMsIDIzMCwgMTIsIDksIDIsIDIzNywgMjI5LCAyMywgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAKKyAgICAyMzcsIDIyOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgMjI5LCAyMywgMjE1LCA5LCA5MSwgMjA3LCAxOTcsIDksIDIsIAorICAgIDIzNywgMjI5LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAyMTksIDksIDIsIDIzNywgMjIwLCAyMywgMzQsIDkxLCAyMjgsIDE4MywgCisgICAgOSwgMiwgMjM3LCAyMjAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM3LCAyMjAsIDExNSwgMjM3LCAyMjAsIDIyNiwgMjMwLCA5LCAKKyAgICAyLCAyMzcsIDIxMiwgOSwgMiwgMjM3LCAyMTAsIDksIDIsIDIzNywgMjExLCAyMywgMjEzLCA0MywgOSwgMiwgMjM3LCAyMDIsIAorICAgIDksIDIsIDIzNywgMjAxLCA5LCAyLCAyMzcsIDE5NywgOSwgMiwgMjM3LCAxOTYsIDksIDIsIDE1MiwgOSwgMiwgMjM3LCAKKyAgICAxNjAsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDIzNywgMTQwLCA5LCAyLCAyMzcsIDMsIDksIAorICAgIDIsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIzNywgNCwgMjMsIDI0OSwgCisgICAgMTUsIDksIDIsIDIzNywgNCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMzcsIDQsIDIzLCAyMzgsIDI1NSwgOSwgMiwgMjM3LCA0LCAKKyAgICAyMywgMjI5LCA4NCwgOSwgMiwgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCA0LCAyMywgMjEzLCA0MywgOSwgMiwgCisgICAgMjM3LCA0LCAyMywgNjgsIDksIDIsIDIzNiwgMjYsIDksIDIsIDIzNiwgMjEsIDksIDIsIDIzNiwgMjIsIDIzLCAyNTAsIAorICAgIDIzMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDIzNywgMTQwLCA5LCAyLCAyMzYsIDIyLCAyMywgMjI5LCAyMzEsIDksIDIsIDIzNiwgCisgICAgMjIsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMzYsIDIyLCAyMywgMjA3LCAyOSwgOSwgMiwgMjM2LCAxNywgOSwgMiwgNzUsIDksIAorICAgIDIsIDIzNSwgMjA2LCA2MywgOSwgMiwgMjM1LCAxNjYsIDksIDIsIDIzMSwgMTEzLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAKKyAgICAyMzEsIDExNCwgMjQ3LCAxNjAsIDksIDIsIDIzMSwgMTE0LCAxMTUsIDIzMSwgMTE0LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCAKKyAgICA4OCwgOSwgMiwgMjMxLCA4NSwgOSwgMiwgMjMxLCA4NiwgMjQzLCAyMTUsIDksIDIsIDIzMSwgODYsIDIxNiwgNTcsIDksIDIsIAorICAgIDIzMSwgODYsIDExNSwgMjMxLCA4NiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDIwNywgMzAsIDExNSwgMjA3LCAyOSwgOSwgCisgICAgMiwgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMSwgNzcsIDksIDIsIDIzMSwgNzgsIDIzLCAyMzgsIDIzMywgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIzMSwgNzYsIDksIDIsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIzLCAyMDksIDI0MiwgOSwgMiwgCisgICAgMjMxLCA2NywgMjQ1LCAxMjQsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIxOSwgMjUxLCAyMzEsIDY2LCA5LCAyLCAyMzEsIAorICAgIDY3LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCA1OSwgOSwgMiwgMjMxLCA0OSwgOSwgMiwgMjMwLCAyMjQsIDksIDIsIDIzMCwgCisgICAgMjA5LCA5LCAyLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MSwgMTIyLCA5LCAyLCAKKyAgICAyMzAsIDQ0LCAyMywgMjUxLCAxMjMsIDkxLCAyMjgsIDIwNywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzMsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCAyNTIsIDksIDIsIDIzMCwgNDQsIDIzLCAKKyAgICAxNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQxLCAyMiwgOSwgMiwgMjMwLCAKKyAgICA0NCwgMjMsIDI0MSwgNCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOSwgOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjQ2LCAKKyAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMjQsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMzgsIDIyNSwgOTEsIDIxMywgODksIDkxLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgODEsIAorICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgOTEsIDIxNCwgMjMwLCA5LCAKKyAgICAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIzMCwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjAxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjMwLCA0NCwgCisgICAgMjMsIDIzMSwgNjYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI5LCAxMDAsIDksIAorICAgIDIsIDIzMCwgNDQsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI3LCAxNDgsIDksIDIsIDIzMCwgNDQsIDIzLCAKKyAgICAyMjYsIDIzOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgCisgICAgMjQyLCA0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDgxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAKKyAgICAyMSwgOTEsIDIwOSwgMTg3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIAorICAgIDE1NiwgOTEsIDIyMSwgMzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMSwgCisgICAgNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNSwgMTQ1LCA5LCAyLCAyMzAsIAorICAgIDQ0LCAyMywgMjE1LCAzNiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5MCwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgNDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDksIDksIDIsIDIzMCwgNDQsIDIzLCAKKyAgICAyMTIsIDE5OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgMTQ5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEwLCAyMjksIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMDksIDIxOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDY4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCA0MCwgCisgICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjksIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwMiwgMzksIDksIDIsIDIzMCwgNDIsIDksIDIsIAorICAgIDIzMCwgNDMsIDI0NSwgMTI0LCAyMzAsIDQyLCA5LCAyLCAyMzAsIDMyLCA5LCAyLCAyMzAsIDI5LCA5LCAyLCAyMzAsIDI3LCAKKyAgICA5LCAyLCAyMzAsIDI2LCA5LCAyLCAyMzAsIDI0LCA5LCAyLCAyMzAsIDI1LCAxMTUsIDIzMCwgMjQsIDksIDIsIDIzMCwgMTIsIAorICAgIDksIDIsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMwLCA4LCA5LCAyLCAyMzAsIDksIDIzLCAKKyAgICAyNDksIDE1LCA5LCAyLCAyMzAsIDksIDI0NSwgMTI0LCAyMzAsIDgsIDksIDIsIDIzMCwgNiwgOSwgMiwgMjMwLCA1LCA5LCAKKyAgICAyLCAyMjksIDIzMSwgOSwgMiwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAKKyAgICAyLCAyMjksIDIzMiwgMTE1LCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIAorICAgIDIyOSwgMTcxLCA5LCAyLCAyMjksIDEwMCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjksIDEwMSwgCisgICAgMjMsIDY4LCA5LCAyLCAyMjksIDEwMSwgMjMsIDIwNywgMjksIDksIDIsIDIyOSwgOTQsIDksIDIsIDIyOSwgODQsIDksIDIsIAorICAgIDIyOSwgNzEsIDksIDIsIDIyOSwgNzAsIDksIDIsIDIyOSwgNjgsIDksIDIsIDIyOSwgNjksIDExNSwgMjI5LCA2OCwgOSwgMiwgCisgICAgMjI4LCAyMDksIDksIDIsIDIyOCwgMjEwLCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzQsIDIyOCwgMjEwLCAxMTUsIDIzNywgCisgICAgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDIwNSwgOSwgMiwgMjI4LCAyMDYsIDIwNiwgNjksIAorICAgIDE4LCA5LCAyLCAyMjgsIDIwNCwgOSwgMiwgMjI4LCAxOTYsIDksIDIsIDIyOCwgMTk3LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKKyAgICAxOTUsIDksIDIsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE4NCwgMjE5LCAyNTEsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE3NywgCisgICAgOSwgMiwgMjI4LCAxNTUsIDksIDIsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgNjMsIDksIAorICAgIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAKKyAgICAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MSwgMzksIAorICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgNzYsIDIwMiwgMzUsIDIwOSwgCisgICAgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OCwgODYsIDksIDIsIDIyOCwgCisgICAgOTUsIDIzLCAyNDQsIDE1NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzksIDgsIAorICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAKKyAgICAyMywgMjM3LCAyMjAsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIAorICAgIDIzNywgMTQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgCisgICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAKKyAgICAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgMjI2LCAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIAorICAgIDEwMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgODQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAKKyAgICA5NSwgMjMsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAxOTcsIDkxLCAyMzcsIDQsIDkxLCA2MywgOSwgMiwgCisgICAgMjI4LCA5NSwgMjMsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAKKyAgICAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNSwgMjAsIDksIDIsIDIyOCwgCisgICAgOTUsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyMywgMTk5LCA5LCAyLCAyMjgsIDk1LCAKKyAgICAyMywgMjIyLCAyNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIAorICAgIDIzLCAyMTIsIDI0NSwgOTEsIDIzOCwgNTYsIDkxLCAyNDEsIDIyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAyNDUsIDkxLCAKKyAgICAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAKKyAgICAxOTgsIDkxLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAKKyAgICAyNTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMTg4LCA5MSwgMzQsIAorICAgIDkxLCAyMTEsIDExLCA5MSwgMjAxLCAyMDEsIDksIDIsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgCisgICAgOTEsIDYzLCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIAorICAgIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgOTUsIDIzLCAyMDYsIDE4NiwgCisgICAgOSwgMiwgMjI4LCA5NSwgMjExLCAxNzYsIDksIDIsIDIyOCwgOTIsIDksIDIsIDIyOCwgOTMsIDIzLCAyMTMsIDQzLCA5LCAyLCAKKyAgICAyMjgsIDkzLCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDkzLCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKKyAgICA5MywgMjM3LCAyMDksIDExNSwgMjI4LCA5MywgMjM3LCAyMDksIDIxMywgNDMsIDksIDIsIDIyOCwgODgsIDksIDIsIDIyOCwgCisgICAgMzAsIDksIDIsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDI4LCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAKKyAgICAxODMsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIDE4NCwgOTEsIDIxNSwgMTQ1LCA5LCAyLCAyMjcsIDE0OCwgOSwgMiwgCisgICAgMjI3LCAxMjksIDksIDIsIDIyNywgMTE3LCA5LCAyLCAyMjcsIDkyLCA5LCAyLCAyMjYsIDIzOSwgOSwgMiwgMjI2LCAyNDAsIAorICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNTEsIDM5LCA5LCAyLCAyMjYsIDIzOCwgCisgICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNSwgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgNCwgCisgICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI5LCA5LCAKKyAgICAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOCwgOTEsIDI1MCwgNzUsIDksIDIsIAorICAgIDIyNiwgMjM4LCAyMywgMjI5LCAxMDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI4LCAxMTQsIDkxLCAyNTAsIDc1LCA5LCAyLCAKKyAgICAyMjYsIDIzOCwgMjMsIDIyOCwgOTQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAorICAgIDIyNiwgMjM4LCAyMywgMjIyLCAyNDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjIxLCA4NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAKKyAgICAyMTIsIDE2MywgOTEsIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxNDEsIDkxLCAyNDcsIDE5MywgOSwgMiwgCisgICAgMjI2LCAyMzgsIDIzLCAyMDcsIDE5NywgOSwgMiwgMjI2LCAyMzgsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjQ1LCAKKyAgICAxMjQsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjE5LCAyNTEsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjExLCAKKyAgICAxNzYsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI0LCA5LCAyLCAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzAsIDksIDIsIDIyNiwgCisgICAgMjMxLCAxMTUsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgMjE5LCAyNTEsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgCisgICAgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMjcsIDksIDIsIDIyNiwgMjI0LCA5LCAyLCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIAorICAgIDExNSwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAxMTUsIDIyNiwgMjIzLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgCisgICAgMiwgMTkyLCA5LCAyLCAyMjUsIDE3NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjUsIDE3NywgMjM3LCAyMDgsIDksIDIsIAorICAgIDIyNSwgMTc2LCA5LCAyLCAyMjUsIDE0OCwgOSwgMiwgMjI1LCAxMDAsIDksIDIsIDIyNSwgNzksIDksIDIsIDIyNSwgNzgsIAorICAgIDksIDIsIDIyNSwgMjAsIDksIDIsIDIyNCwgMjI4LCA5LCAyLCAyMjQsIDE1NSwgOSwgMiwgMjI0LCAxMTAsIDksIDIsIDIyMywgCisgICAgMjQ2LCA5LCAyLCAyMjMsIDI0NywgMTE1LCAyMjMsIDI0NiwgOSwgMiwgMjIzLCAyMzUsIDksIDIsIDIyMywgMjM2LCAyMzcsIAorICAgIDIwOCwgOSwgMiwgMjIzLCAyMTcsIDksIDIsIDIyMywgMjAzLCA5LCAyLCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDIzLCAKKyAgICA2MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCisgICAgMjIzLCAyMDAsIDExNSwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMzQsIDkxLCAyMDEsIAorICAgIDIwMSwgOSwgMiwgMjIzLCAyMDAsIDI0NSwgMTI0LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAxOTcsIDksIDIsIDIyMywgMTk4LCAKKyAgICAyMywgNjMsIDksIDIsIDIyMywgMTk4LCAyMywgMzQsIDkxLCAyNDMsIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzLCAyNDMsIAorICAgIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzNywgMjA4LCA5LCAyLCAyMDEsIDIwMSwgOSwgMiwgMjIzLCAxMDksIDksIDIsIDIyMywgCisgICAgOTYsIDksIDIsIDIyMywgOTcsIDIzMCwgMjM4LCA5LCAyLCAyMjMsIDk3LCAyMywgMjEyLCAyMDAsIDIwOSwgMTQxLCA5LCAyLCAKKyAgICAyMjMsIDk3LCAyMTksIDI1MSwgMjIzLCA5NiwgOSwgMiwgMjIzLCA5NSwgOSwgMiwgMjIzLCA4OCwgMjIxLCAyNiwgOSwgMiwgCisgICAgMjIzLCA4NywgOSwgMiwgMjIzLCA4NiwgOSwgMiwgMjIyLCAyNDAsIDksIDIsIDIyMiwgMjQxLCAyMywgNjMsIDksIDIsIAorICAgIDIyMiwgMjQxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjIyLCAyNDEsIDIxMywgMjQsIDksIDIsIDIyMiwgMTAwLCA5LCAyLCAKKyAgICAyMjIsIDEwMSwgMjMsIDc0LCA5LCAyLCAyMjIsIDk5LCA5LCAyLCAyMjIsIDY5LCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAKKyAgICAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAyMjUsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIAorICAgIDIyMiwgNjUsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgNzUsIDksIDIsIAorICAgIDIyMiwgNjYsIDIzLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjE5LCA5LCAyLCAKKyAgICAyMjIsIDY2LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMiwgCisgICAgMjQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIxLCA0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDMsIDksIDIsIDIyMiwgCisgICAgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMzQsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgCisgICAgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIAorICAgIDIzLCAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjIsIDUzLCA5LCAKKyAgICAyLCAyMjEsIDg0LCA5LCAyLCAyMjEsIDU2LCA5LCAyLCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgCisgICAgMjM4LCAyMjQsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMjUsIDc5LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAKKyAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjE1LCA5LCAxMTUsIDIyMSwgNDEsIDIyOCwgOTMsIAorICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIxLCA0MSwgMjA5LCAKKyAgICAxNDEsIDksIDIsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDAsIDksIDIsIAorICAgIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQxLCAyMjgsIDkzLCAxMTUsIDIyOCwgOTIsIDksIDIsIDIyMSwgMzUsIDksIDIsIAorICAgIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDgsIDg2LCA5LCAKKyAgICAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0MiwgMzcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjM3LCAyMTksIAorICAgIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAKKyAgICAyMywgMjMwLCAyNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMjgsIDExMywgOSwgMiwgMjIxLCAzNiwgMjUxLCAKKyAgICAxNTAsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMTIsIDEzOCwgOSwgMiwgMjIxLCAzNiwgCisgICAgMjUxLCAxNTAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjEsIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjIxLCAKKyAgICAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODcsIDY4LCA5LCAyLCAxODUsIDksIDIsIDIxOSwgMTU5LCA5LCAyLCAyMTksIDEyMiwgCisgICAgOSwgMiwgMjE5LCA5NiwgOSwgMiwgMjE4LCAyMjIsIDksIDIsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDYzLCA5LCAKKyAgICAyLCAyMTgsIDE2OCwgMjMsIDI1MSwgMjMyLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDI0OCwgODYsIDksIDIsIDIxOCwgMTY4LCAKKyAgICAyMywgMjQ3LCAxOTMsIDksIDIsIDIxOCwgMTY4LCAyMywgNzQsIDksIDIsIDIxOCwgMTY4LCAyMywgNzUsIDksIDIsIDIxOCwgCisgICAgMTY4LCAyMywgMjM1LCAxNjYsIDksIDIsIDIxOCwgMTY4LCAyMywgNjgsIDksIDIsIDIxOCwgMTY4LCAyMywgMjA3LCA0MCwgCisgICAgOSwgMiwgMjE4LCAxNjgsIDI0NSwgMTI0LCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxMDksIDksIDIsIDIxOCwgMTEwLCAyMywgCisgICAgMjMwLCA4LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwNywgMjksIDksIDIsIDIxOCwgMTEwLCAyMywgMjAyLCAxMTYsIDksIDIsIAorICAgIDIxOCwgMTEwLCAyMTksIDI1MSwgMjE4LCAxMDksIDksIDIsIDIxNiwgMjIwLCA5LCAyLCAyMTYsIDIxNCwgOSwgMiwgMjE2LCAKKyAgICA1NywgOSwgMiwgMjE1LCAxNDUsIDksIDIsIDIxNSwgMzYsIDksIDIsIDIxNSwgMjMsIDIyMSwgMjYsIDksIDIsIDIxNSwgMjIsIAorICAgIDksIDIsIDIxNSwgMjMsIDIzLCA2MywgOSwgMiwgMjE1LCAyMywgMjMsIDI0MiwgNDIsIDksIDIsIDIxNSwgMjMsIDIzLCAKKyAgICAyNDIsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjMwLCAxMiwgOSwgMiwgMjE1LCAKKyAgICAyMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI2LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjQsIAorICAgIDE1NSwgOSwgMiwgMjE1LCAyMywgMjMsIDIyMSwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMTUsIDgsIDksIDIsIDIxNSwgCisgICAgMjMsIDIzLCAyMTMsIDksIDksIDIsIDIxNSwgMjMsIDIzLCAyMTAsIDEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA0MCwgCisgICAgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgMzUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDYsIDksIDIsIDIxNSwgMjMsIDIzLCAKKyAgICAyMDYsIDIxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMTUsIDIzLCAxMTUsIDIxNSwgMjIsIDksIDIsIAorICAgIDIxNSwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTUsIDgsIDksIDIsIDIxNSwgOSwgMjI4LCA5NSwgMjMsIDI1MCwgNzMsIDksIAorICAgIDIsIDIxNCwgMjM4LCA5LCAyLCAyMTQsIDIzMCwgOSwgMiwgMjEzLCA5MCwgOSwgMiwgMjEzLCA4OCwgOSwgMiwgMjEzLCA4OSwgCisgICAgMjMsIDYzLCA5LCAyLCAyMTMsIDg5LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjEzLCA4OSwgMjMsIDIzOCwgNTUsIDksIDIsIAorICAgIDIxMywgODksIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjEzLCA4OSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMTMsIDg5LCAyMywgCisgICAgMjA3LCAxODEsIDksIDIsIDIxMywgODksIDIzLCA2OCwgOSwgMiwgMjEzLCA4OSwgMjMsIDEwNiwgOTEsIDYzLCA5LCAyLCAKKyAgICAyMTMsIDg2LCA5LCAyLCAyMTMsIDg0LCA5LCAyLCAyMTMsIDU5LCA5LCAyLCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCAyMzYsIAorICAgIDI2LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCisgICAgMjI0LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjM4LCAyMjUsIDExNSwgCisgICAgMjM4LCAyMjQsIDksIDIsIDIxMywgMzYsIDksIDIsIDIxMywgMzEsIDksIDIsIDIxMywgMjcsIDksIDIsIDIxMywgMjYsIDksIAorICAgIDIsIDIxMywgMjMsIDksIDIsIDIxMywgOSwgOSwgMiwgMjEzLCAxMCwgMjMsIDYzLCA5LCAyLCAyMTMsIDEwLCAyMywgMjMxLCAKKyAgICA2NiwgOSwgMiwgMjEzLCAzLCA5LCAyLCAyMTMsIDQsIDIzLCA2MywgOSwgMiwgMjEzLCA0LCAyMywgMjQ4LCAyNTMsIDksIDIsIAorICAgIDIxMywgNCwgMjMsIDI0NywgMTcxLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjEzLCA0LCAyMywgMjM4LCAKKyAgICAyMjQsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODUsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKKyAgICAyLCAyMTMsIDQsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjEzLCA0LCAyMywgMjI2LCAyMjQsIDksIDIsIDIxMywgNCwgMjMsIAorICAgIDIyMywgMjM1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMTUsIDgsIDksIDIsIDIxMiwgMjUzLCA5LCAyLCAyMTIsIDI0OCwgOSwgMiwgCisgICAgMjEyLCAyNDksIDIwOSwgMTQxLCA5LCAyLCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKKyAgICAxNjAsIDksIDIsIDIxMiwgMjQ0LCA5LCAyLCAyMTIsIDE5OSwgOSwgMiwgMjEyLCAyMDAsIDExNSwgMjMwLCAyMzksIDIxMiwgCisgICAgMTk5LCA5LCAyLCAyMTIsIDE5NywgOSwgMiwgMjEyLCAxOTYsIDksIDIsIDIxMiwgMTYyLCA5LCAyLCAyMTIsIDE2MywgMjM3LCAKKyAgICAyMDgsIDksIDIsIDIxMiwgMTQ5LCA5LCAyLCAyMTIsIDE0NywgOSwgMiwgMjEyLCAxNDgsIDExNSwgMjEyLCAxNDgsIDIxMiwgCisgICAgMTk3LCA5LCAyLCAyMTIsIDE0MCwgOSwgMiwgMjEyLCAxMzgsIDksIDIsIDIxMSwgMTAsIDksIDIsIDIxMSwgMTEsIDExNSwgCisgICAgMjExLCAxMCwgOSwgMiwgMjEwLCAyMzIsIDksIDIsIDIxMCwgMjMxLCA5LCAyLCAyMTAsIDIyOSwgOSwgMiwgMjEwLCAyMjAsIAorICAgIDksIDIsIDIxMCwgMjE5LCA5LCAyLCAyMTAsIDE5MywgOSwgMiwgMjEwLCAxOTIsIDksIDIsIDIxMCwgMjIsIDksIDIsIDIxMCwgCisgICAgMjMsIDI1MCwgNTksIDksIDIsIDIxMCwgMjMsIDIzLCAyMzcsIDMsIDksIDIsIDIxMCwgMjMsIDIzLCAyMjQsIDE1NSwgOSwgCisgICAgMiwgMjEwLCAyMywgMjM3LCAyMDgsIDksIDIsIDIxMCwgMTAsIDksIDIsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjIyLCAKKyAgICAxMDEsIDExNSwgMjIyLCAxMDEsIDI0MywgMTU3LCAxMTUsIDI0MywgMTU2LCA5LCAyLCAyMTAsIDExLCAyMTEsIDE3NiwgOSwgCisgICAgMiwgMjA5LCAyNTUsIDksIDIsIDE2MCwgMjMsIDI0OCwgODYsIDksIDIsIDE2MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAxNjAsIAorICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAxNjAsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMTYwLCAyMywgMjA3LCAxOTcsIDksIDIsIDE2MCwgCisgICAgMjMsIDIwNywgMjksIDksIDIsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDIxOCwgOSwgMiwgMjA5LCAxODcsIDksIDIsIDIwOSwgCisgICAgMTg4LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAyLCA5LCAyLCAyMDksIDMsIDIwOSwgMTQxLCA5LCAyLCAyMDgsIDIyOSwgOSwgCisgICAgMiwgMjA4LCAyMDYsIDksIDIsIDIwOCwgMjA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA2LCAKKyAgICA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNywgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKKyAgICAyMjQsIDksIDIsIDIwNywgMjAzLCA5LCAyLCAyMDcsIDE5NywgOSwgMiwgMjA3LCAxOTUsIDksIDIsIDIwNywgMTkxLCA5LCAKKyAgICAyLCAyMDcsIDE4MSwgOSwgMiwgMjA3LCAxODIsIDExNSwgMjA3LCAxODIsIDIwMiwgMTE3LCAxMTUsIDIwMiwgMTE2LCA5LCAKKyAgICAyLCA2OCwgOSwgMiwgMTA2LCAyMzcsIDIxOSwgOSwgMiwgMTA2LCAxMDYsIDY4LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTksIAorICAgIDE2OSwgMTE1LCAyMTksIDE2OSwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxMCwgCisgICAgMTk0LCAxMTUsIDIxMCwgMTkzLCA5LCAyLCAxMDYsIDExNSwgMTA2LCAxMDYsIDIxNiwgNzMsIDExNSwgMTA2LCAyMTYsIDcyLCAKKyAgICA5LCAyLCAyMDcsIDQwLCA5LCAyLCAyMDcsIDM1LCA5LCAyLCAyMDcsIDI5LCA5LCAyLCAyMDcsIDMwLCAyMjgsIDE3NywgOSwgCisgICAgMiwgMjA3LCAzMCwgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMzAsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjA3LCAzMCwgMjMsIAorICAgIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMDcsIDMwLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgMTA2LCAyMzcsIDIwOCwgCisgICAgOSwgMiwgMjA3LCAzMCwgMjM3LCAyMDgsIDksIDIsIDIwNywgMzAsIDIxMywgMjQsIDksIDIsIDIwNywgMzAsIDIxMywgMjUsIAorICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDI1LCA5LCAyLCAyMDcsIDYsIDksIDIsIDIwNywgNywgMjMsIDIyOCwgOTQsIDksIAorICAgIDIsIDIwNywgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDQsIDIxMiwgOSwgMiwgMjA3LCA3LCAyMywgMjEzLCA4OCwgOSwgMiwgCisgICAgMjA3LCA3LCAyMywgNjgsIDksIDIsIDIwNywgNSwgOSwgMiwgMjA3LCAxLCA5LCAyLCAyMDcsIDIsIDIzLCAyMjksIDIzMSwgCisgICAgOSwgMiwgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAyMDYsIDI1NSwgOSwgMiwgMjA3LCAwLCAyMzcsIDIwOCwgOSwgMiwgMjA2LCAKKyAgICAyMTAsIDksIDIsIDIwNiwgMjExLCAyNDUsIDEyNCwgMjA2LCAyMTAsIDksIDIsIDIwNiwgMjExLCAyMTMsIDI0LCA5LCAyLCAKKyAgICAyMDYsIDIwOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIDE1MiwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIAorICAgIDIwMSwgMjAxLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDI1MSwgMzksIDksIDIsIDIwNiwgMjA5LCAyMywgMTUyLCA5LCAyLCAKKyAgICAyMDYsIDIwOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAKKyAgICAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQxLCA5MSwgMjQ4LCA4NiwgOSwgMiwgCisgICAgMjA2LCAyMDcsIDksIDIsIDIwNiwgMjA0LCA5LCAyLCAyMDYsIDIwMywgOSwgMiwgMjA2LCAxOTksIDksIDIsIDIwNiwgMjAwLCAKKyAgICAyMywgNjMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNDIsIDksIDIsIDIwNiwgCisgICAgMjAwLCAyMywgMjQyLCAzMSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKKyAgICAyNDYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCisgICAgMjI0LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzNywgMjMwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE1MiwgOSwgMiwgMjA2LCAKKyAgICAyMDAsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMSwgNjYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMwLCAKKyAgICAyMDksIDksIDIsIDIwNiwgMjAwLCAyMywgMjI5LCAxMDAsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMjIsIDksIDIsIAorICAgIDIwNiwgMjAwLCAyMywgMjI0LCAxMTAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMywgCisgICAgNDMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEyLCAxNDcsIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyMDMsIDksIDIsIAorICAgIDIwNiwgMjAwLCAyMywgMTA2LCA5MSwgMjM3LCAyMTksIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAKKyAgICAyMDAsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk4LCAyMywgNjgsIDksIDIsIDIwNiwgCisgICAgMTg2LCA5LCAyLCAyMDYsIDE4NywgMjMsIDYzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIyOCwgMjA5LCA5LCAyLCAyMDYsIAorICAgIDE4NywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDYsIDE4MiwgOSwgMiwgCisgICAgMjA2LCAxODUsIDksIDIsIDIwNiwgMTgzLCA5LCAyLCAyMDYsIDE3OSwgOSwgMiwgMjA2LCAxNjcsIDksIDIsIDIwNiwgMTY4LCAKKyAgICAyMywgMjI5LCAyMzEsIDksIDIsIDIwNiwgMTY2LCA5LCAyLCAyMDIsIDExNiwgOSwgMiwgMjAyLCAxMTcsIDIwOSwgMTQxLCAKKyAgICA5LCAyLCAyMDIsIDExNywgMTAzLCAyMywgMjI4LCAxODMsIDksIDIsIDIwMiwgMTEyLCA5LCAyLCAyMDIsIDEwNSwgOSwgMiwgCisgICAgMjAyLCA5MSwgOSwgMiwgMjAyLCAzOSwgOSwgMiwgMjAyLCA0MCwgMTE1LCAyMDIsIDM5LCA5LCAyLCAyMDIsIDM4LCA5LCAyLCAKKyAgICAyMDIsIDM2LCA5LCAyLCAyMDIsIDM3LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjAyLCAzMSwgOSwgMiwgMjAyLCAyMiwgCisgICAgOSwgMiwgMjAyLCA2LCA5LCAyLCAyMDIsIDQsIDksIDIsIDIwMiwgNSwgMjMsIDYzLCA5LCAyLCAyMDIsIDMsIDksIDIsIAorICAgIDIwMiwgMiwgOSwgMiwgMjI5LCAyNTQsIDI0MSwgMTE5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDAsIDksIDIsIDI1MSwgCisgICAgMTUwLCAyMywgNjMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjI4LCAxOTgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgCisgICAgMjA3LCA0MSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjAyLCA5LCAyLCAyNDMsIDE1NywgOTEsIDIxMiwgMTk5LCA5LCAyLCAKKyAgICAyNDIsIDQxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAKKyAgICAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMiwgOTEsIDIzMCwgMTMsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAKKyAgICAyMywgMjUwLCA3MywgOSwgMiwgMjM4LCAxODksIDksIDIsIDIzOCwgNzEsIDksIDIsIDIzNiwgMywgOSwgMiwgMjMwLCA0NCwgCisgICAgMjMsIDI1MCwgMjAwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTUsIDksIAorICAgIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIAorICAgIDIzMCwgNDQsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDE4NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgCisgICAgMTkyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyMDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDYsIDIwOCwgOSwgMiwgMjI4LCAKKyAgICA5NSwgMjMsIDIzOCwgODEsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIAorICAgIDIzLCAyNDEsIDUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAyMjQsIDIyNywgOSwgCisgICAgMiwgMjIzLCAxOTgsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjIzLCAxMDgsIDksIDIsIDIyMiwgNjgsIDksIDIsIDIyMiwgNjcsIAorICAgIDksIDIsIDIyMiwgNjYsIDIzLCAyNDgsIDI1MywgOSwgMiwgMjIyLCA2NiwgMjMsIDIzOCwgODEsIDksIDIsIDIyMSwgNTcsIAorICAgIDIxNSwgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMTgsIDIyMywgMjUwLCA1OSwgOSwgMiwgMjE4LCAxMTMsIDksIAorICAgIDIsIDIxNSwgMjMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAxLCA5LCAyLCAyMDcsIDcsIDIzLCAyMjUsIAorICAgIDIwLCA5LCAyLCAxMDYsIDY4LCA5LCAxNDEsIDIsIDEyMCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzUsIDksIAorICAgIDE0MSwgMiwgMjM5LCAxNDcsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEyLCAKKyAgICA4OCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjUwLCA3NSwgCisgICAgOSwgMTQxLCAyLCAyMjIsIDY0LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAKKyAgICAxNDcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyNDMsIAorICAgIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI0MywgMTU2LCA5LCAKKyAgICAxNDEsIDIsIDIyMiwgNjQsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCA2OCwgOSwgMTQxLCAyLCAyMzksIDIzMywgCisgICAgNjgsIDksIDE0MSwgMiwgMjEyLCA4OCwgNjgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDY4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAKKyAgICA2OCwgOSwgMTQxLCAyLCAyMjIsIDY0LCA2OCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyMCwgCisgICAgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTI2LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjQsIDksIAorICAgIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMywgCisgICAgMTEyLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjM4LCAKKyAgICAxNjQsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjAsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyNiwgCisgICAgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2MSwgCisgICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKKyAgICA2MCwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTksIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCisgICAgNTksIDksIDE0MSwgMiwgMjEyLCA4OCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAKKyAgICAyNDEsIDE0MywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDExOCwgMjEzLCA1NCwgCisgICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKKyAgICA1NSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTQsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCisgICAgNTQsIDksIDE0MSwgMiwgMjEzLCA2MCwgMjMsIDIzOCwgMjQ3LCA5MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEzLCA2MCwgCisgICAgMjMsIDIzOCwgMjQ3LCA5MSwgMjI0LCAxMTAsIDksIDE0MSwgMiwgMTE4LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIAorICAgIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NywgMjA2LCA2OSwgCisgICAgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDcsIDE1NiwgOSwgMTQxLCAKKyAgICAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAyNDEsIDYsIDksIDE0MSwgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgCisgICAgMjQxLCAzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTgsIDksIDE0MSwgMiwgMjM5LCAKKyAgICAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExNiwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIAorICAgIDIyNywgMTE5LCA2MywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE5LCAyNDksIDI1NSwgCisgICAgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMDYsIDY5LCAyMzksIDE1OSwgMjUwLCA3MSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCAKKyAgICA2OSwgMjM5LCAxNTksIDIzMSwgNTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAKKyAgICA2MywgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIDI0OSwgMjU1LCA5LCAxNDEsIDIsIAorICAgIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIDE1OSwgMjA2LCAxODEsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgCisgICAgMTU5LCAyMDYsIDE4MCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NCwgOSwgMTQxLCAyLCAKKyAgICAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3MywgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIAorICAgIDE1OSwgMjMxLCA3MiwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NSwgNjMsIDksIDE0MSwgCisgICAgMiwgMTIwLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIAorICAgIDIzOSwgMTQ3LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIAorICAgIDE0MSwgMiwgMjEyLCA4OCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTE4LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAKKyAgICAxMjAsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDEyNiwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQwLCAKKyAgICA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgCisgICAgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA3NywgOSwgCisgICAgMTQxLCAyLCAyMjIsIDc4LCA5LCAxNDEsIDIsIDExOCwgMjQxLCAyLCA5LCAxNDEsIDIsIDEyMCwgMjQxLCAyLCA5LCAxNDEsIAorICAgIDIsIDExOCwgMjA5LCA2MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAKKyAgICAyMzksIDIzMywgMjEyLCA3NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTE4LCAyMDksIDYxLCAyMDYsIDY5LCAyMzksIDE1OSwgCisgICAgNjMsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyMDYsIDY5LCAyMzksIDE1OSwgNjMsIDksIDE0MSwgMiwgMTE4LCAyNDEsIAorICAgIDEzOSwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgNTYsIDI1MCwgNzUsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIAorICAgIDExOCwgMjEyLCA3OCwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgMTE4LCAyMTcsIDU1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCAKKyAgICA1NiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMTE4LCAxNjIsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMTgsIAorICAgIDIwOSwgNjAsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDEyMCwgMjA5LCA1NywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjM5LCAKKyAgICAxNTMsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDI0MCwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDEwNiwgMjA2LCA2OSwgMTgsIAorICAgIDksIDE0MSwgMiwgMjM5LCAyMzMsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjEyLCA4OCwgMTA2LCAyMDYsIDY5LCAKKyAgICAxOCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMTA2LCAyMDYsIAorICAgIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAxMDYsIDIwNiwgNjksIDE4LCA5LCAyMTcsIDE3OSwgMiwgMzgsIDI1MCwgCisgICAgNjIsIDIwMywgMjM4LCAyNDMsIDE0MSwgOSwgMjE3LCAxNzksIDIsIDgwLCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIAorICAgIDI0MywgMjI4LCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIDI0MywgMjI4LCAyMDgsIDgxLCA5LCAyMTcsIDE3OSwgMiwgCisgICAgMjQzLCAyMjgsIDIxNywgNjEsIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MSwgMjA5LCAxNDEsIDksIDIsIDI1MSwgMjMzLCAKKyAgICAyMywgMjEyLCAxOTcsIDksIDIsIDI1MSwgMTIzLCAyMywgMjQxLCA0LCA5LCAyLCAyNDksIDE2LCAyMywgMjQzLCAxNTcsIAorICAgIDIwOSwgMTQxLCA5LCAyLCAyNDksIDQsIDIzLCAyNTEsIDE0OSwgOSwgMiwgMjQ5LCA0LCAyMywgMjIyLCAxMDAsIDksIDIsIAorICAgIDI0OSwgNCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjMsIDIyMywgMTA5LCA5LCAyLCAKKyAgICAyNDQsIDIxMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNDQsIDIwNCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDMsIDE4OSwgMjMsIAorICAgIDIzMSwgODUsIDksIDIsIDI0MywgMTg5LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyNDMsIDE4NywgMjMsIDIwNywgMjksIAorICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MiwgMzgsIAorICAgIDIzLCAyNTAsIDc2LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyNDIsIAorICAgIDM4LCAyMywgMjQyLCAzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MSwgMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzksIDgsIAorICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDgxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIAorICAgIDI0MiwgMzgsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMTUyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM3LCAzLCAKKyAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgCisgICAgMjQyLCAzOCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAxNzcsIDksIDIsIDI0MiwgMzgsIDIzLCAKKyAgICAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCA4MiwgOSwgMiwgMjQyLCAzOCwgMjMsIAorICAgIDIyOCwgMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAKKyAgICAyMjYsIDIyOCwgOTEsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjUsIDc5LCA5LCAyLCAyNDIsIDM4LCAyMywgCisgICAgMjI0LCAyMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKKyAgICAyNDIsIDM4LCAyMywgMjE4LCAxNjcsIDksIDIsIDI0MiwgMzgsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDIsIDM4LCAyMywgCisgICAgMjEyLCAxNjMsIDIzNywgMjA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIAorICAgIDIxOSwgOTYsIDksIDIsIDI0MSwgMjMsIDIwMywgMTk2LCA5LCAyLCAyNDEsIDUsIDI0NSwgMTI0LCAyNDEsIDQsIDksIDIsIAorICAgIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzcsIDMsIDksIAorICAgIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgCisgICAgMjI4LCAxMTMsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIAorICAgIDIzLCAyMjUsIDIwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyNCwgMjI4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAKKyAgICAyNSwgMjMsIDIxMSwgMTAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAzLCAKKyAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMzEsIAorICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKKyAgICAyNDEsIDI1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzksIDgsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjQzLCAKKyAgICAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjIyLCAyNDAsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgCisgICAgMTYwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAorICAgIDIyOCwgMjgsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM5LCA3LCAyMywgMjI2LCAKKyAgICAyMjcsIDksIDIsIDIzOSwgNywgMjMsIDIyMywgMTk5LCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCAKKyAgICA3LCAyMywgMjIyLCAyNDEsIDkxLCAyNDEsIDE5MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDEsIDkxLCAyMzgsIDgxLCAKKyAgICA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDMsIDksIDIsIDIzOSwgNywgMjMsIDIwMiwgMjIsIDksIDIsIDIzOSwgMiwgMjE1LCAKKyAgICAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIzOCwgMTYzLCAyMywgNjgsIDksIDIsIDIzOCwgNTYsIDIzLCAyMzgsIAorICAgIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAKKyAgICAyMjAsIDkxLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzNywgMTYwLCAyMDksIDE0MiwgMjM3LCAyMDgsIDksIDIsIAorICAgIDIzNywgNCwgMjMsIDI1MCwgNzYsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0NywgCisgICAgMTkzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyMzAsIAorICAgIDQ0LCAyMywgMjA2LCAyMTAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDIsIDcsIDExNSwgMjAyLCA2LCA5LCAyLCAyMjgsIDgzLCAKKyAgICA5LCAyLCAyMjgsIDgxLCA5LCAyLCAyMjgsIDgwLCA5LCAyLCAyMjgsIDc5LCA5LCAyLCAyMjgsIDc4LCA5LCAyLCAyMjgsIAorICAgIDc3LCA5LCAyLCAyMjgsIDc2LCA5LCAyLCAyMjgsIDc1LCAxMTUsIDIyOCwgNzUsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDc0LCAKKyAgICA5LCAyLCAyMjgsIDczLCAxMTUsIDIyOCwgNzIsIDksIDIsIDIyOCwgNzEsIDksIDIsIDIyOCwgNzAsIDksIDIsIDIyOCwgNjksIAorICAgIDksIDIsIDIyOCwgNjgsIDksIDIsIDIyOCwgNjcsIDksIDIsIDIyOCwgNjYsIDksIDIsIDIyOCwgNjUsIDksIDIsIDIyOCwgCisgICAgNjQsIDksIDIsIDIyOCwgNjMsIDksIDIsIDIyOCwgNjIsIDksIDIsIDIyOCwgNjEsIDksIDIsIDIyOCwgNjAsIDksIDIsIAorICAgIDIyOCwgNTksIDksIDIsIDIyOCwgNTgsIDksIDIsIDIyOCwgNTcsIDksIDIsIDIyOCwgNTYsIDksIDIsIDIyOCwgNTUsIDksIAorICAgIDIsIDIyOCwgNTQsIDksIDIsIDIyOCwgNTIsIDksIDIsIDIyOCwgNTMsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjI4LCA1MywgCisgICAgMjMsIDIzMSwgODUsIDksIDIsIDIyOCwgNTMsIDIzLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAKKyAgICAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgMjA3LCA0MSwgOTEsIDI0OSwgCisgICAgMzIsIDksIDIsIDIyOCwgNTEsIDksIDIsIDIyOCwgNTAsIDksIDIsIDIyOCwgNDksIDksIDIsIDIyOCwgNDgsIDksIDIsIAorICAgIDIyOCwgNDcsIDksIDIsIDIyOCwgNDYsIDksIDIsIDIyOCwgNDUsIDksIDIsIDIyOCwgNDQsIDksIDIsIDIyOCwgNDMsIDksIAorICAgIDIsIDIyOCwgNDIsIDksIDIsIDIyOCwgNDAsIDksIDIsIDIyOCwgNDEsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDQxLCAyMywgCisgICAgMjQ5LCAxNSwgOSwgMiwgMjI4LCA0MSwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA0MSwgCisgICAgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDIxOCwgCisgICAgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMTg3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA3LCA0MCwgOSwgMiwgMjI4LCA0MSwgCisgICAgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgNDEsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzOSwgOSwgMiwgMjI4LCAzNywgCisgICAgOSwgMiwgMjI4LCAzOCwgMjMsIDI0MiwgNDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzksIDgsIDksIDIsIDIyOCwgMzgsIDIzLCAKKyAgICAyMzEsIDg1LCA5LCAyLCAyMjgsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgMzgsIDIzLCAyMjIsIAorICAgIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgCisgICAgMzgsIDIzLCAyMTMsIDI4LCA5MSwgMjI5LCAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDM4LCAKKyAgICAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzUsIDksIDIsIDIyOCwgMzQsIDksIDIsIDIyNiwgMjM4LCAyMzcsIDIwOSwgMjMsIAorICAgIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQzLCAxNTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCAxNDAsIDksIAorICAgIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIAorICAgIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjQsIDE1NiwgOTEsIDIwMiwgMTE1LCA5LCAKKyAgICAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIAorICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMjIsIDY2LCAyMywgCisgICAgMjM4LCA1NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAzLCA5LCAyLCAKKyAgICAyMjIsIDY2LCAyMywgMjI5LCAxNzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjgsIDc4LCA5LCAyLCAyMjIsIDY2LCAyMywgCisgICAgMjI1LCA3OSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAyMjIsIDY2LCAyMywgNjgsIAorICAgIDksIDIsIDIyMiwgNjYsIDIzLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMTUsIAorICAgIDIzLCAyMzcsIDIwOSwgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDI0MSwgOTIsIDksIDIsIDIxNSwgMjMsIDIzLCAKKyAgICAyMTMsIDQ0LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMTMsIDg3LCAKKyAgICAyMDksIDE0MSwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjM2LCAyMSwgOSwgMiwgCisgICAgMjEzLCA0NCwgOTEsIDIyMywgODYsIDksIDIsIDIxMywgNDQsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAKKyAgICAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIDIxMiwgMTk4LCA5MSwgMjQxLCAxOTEsIDIzLCAyNTAsIDIzMSwgOSwgMiwgCisgICAgMjEyLCAxNjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyNDMsIDkxLCAyMTUsIDIyLCA5LCAyLCAyMDcsIDE5MiwgMjMsIAorICAgIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA3LCAxOTIsIDIzLCAxMjYsIDI0MywgMTU2LCA5LCAyLCAyMDYsIDIwOSwgCisgICAgMjMwLCAyMzgsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNDQsIDE1MywgOSwgCisgICAgMiwgMjA2LCAyMDAsIDIzLCAyMjgsIDM2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjM2LCA5LCAyLCAyMDIsIDExNSwgCisgICAgOSwgMiwgMjAyLCA3LCAxMTUsIDIwMiwgNywgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMDIsIDUsIDIzLCAxMjYsIDI0MywgMTU3LCAKKyAgICAyMDksIDE0MSwgMTQsIDcsIDI1NSwgMTgsIDE0LCA3LCAyNTUsIDE3LCAxNCwgNywgMjU1LCAxNiwgMTQsIDcsIDI1NSwgMTUsIAorICAgIDE0LCA3LCAyNTUsIDE0LCAxNCwgNywgMjU1LCAxMywgMTQsIDcsIDI1NSwgMTIsIDE0LCA3LCAyNTUsIDExLCAxNCwgNywgCisgICAgMjU1LCAxMCwgMTQsIDcsIDI1NSwgOSwgMTQsIDcsIDI1NSwgOCwgMTQsIDcsIDI1NSwgNywgMTQsIDcsIDI1NSwgNiwgMTQsIAorICAgIDcsIDI1NSwgNCwgMTQsIDcsIDI1NSwgMywgMTQsIDcsIDI1NSwgMiwgMTQsIDcsIDI1NSwgMSwgMTQsIDcsIDI1NSwgMCwgCisgICAgMTQsIDcsIDI1NCwgMjU1LCAxNCwgNywgMjU0LCAyNTQsIDE0LCA3LCAyNTQsIDI1MywgMTQsIDcsIDI1NCwgMjUyLCAxNCwgCisgICAgNywgMjU0LCAyNTEsIDE0LCA3LCAyNTQsIDI1MCwgMTQsIDcsIDI1NCwgMjQ5LCAxNCwgNywgMjU0LCAyNDgsIDE0LCA3LCAKKyAgICAyNTQsIDI0NywgMTQsIDcsIDI1NCwgMjQ2LCAxNCwgNywgMjU0LCAyNDUsIDE0LCA3LCAyNTQsIDI0NCwgMTQsIDcsIDI1NCwgCisgICAgMjQzLCAxNCwgNywgMjU0LCAyNDEsIDE0LCA3LCAyNTQsIDI0MCwgMTQsIDcsIDI1NCwgMjM4LCAxNCwgNywgMjU0LCAyMzcsIAorICAgIDE0LCA3LCAyNTQsIDIzNiwgMTQsIDcsIDI1NCwgMjM1LCAxNCwgNywgMjU0LCAyMzQsIDE0LCA3LCAyNTQsIDIzMywgMTQsIAorICAgIDcsIDI1NCwgMjMyLCAxNCwgNywgMjU0LCAyMzEsIDE0LCA3LCAyNTQsIDIzMCwgMTQsIDcsIDI1NCwgMjI5LCAxNCwgNywgCisgICAgMjU0LCAyMjgsIDE0LCA3LCAyNTQsIDIyNywgMTQsIDcsIDI1NCwgMjI1LCAxNCwgNywgMjU0LCAyMjQsIDE0LCA3LCAyNTQsIAorICAgIDIyMywgMTQsIDcsIDI1NCwgMjIxLCAxNCwgNywgMjU0LCAyMjAsIDE0LCA3LCAyNTQsIDIxOSwgMTQsIDcsIDI1NCwgMjE4LCAKKyAgICAxNCwgNywgMjU0LCAyMTcsIDE0LCA3LCAyNTQsIDIxNiwgMTQsIDcsIDI1NCwgMjE1LCAxNCwgNywgMjU0LCAyMTQsIDE0LCAKKyAgICA3LCAyNTQsIDIxMSwgMTQsIDcsIDI1NCwgMjEwLCAxNCwgNywgMjU0LCAyMDksIDE0LCA3LCAyNTQsIDIwOCwgMTQsIDcsIAorICAgIDI1NCwgMjA3LCAxNCwgNywgMjU0LCAyMDYsIDE0LCA3LCAyNTQsIDIwNSwgMTQsIDcsIDI1NCwgMjA0LCAxNCwgNywgMjU0LCAKKyAgICAyMDMsIDE0LCA3LCAyNTQsIDIwMiwgMTQsIDcsIDI1NCwgMjAxLCAxNCwgNywgMjU0LCAyMDAsIDE0LCA3LCAyNTQsIDE5OSwgCisgICAgMTQsIDcsIDI1NCwgMTk4LCAxNCwgNywgMjU0LCAxOTcsIDE0LCA3LCAyNTQsIDE5NiwgMTQsIDcsIDI1NCwgMTk1LCAxNCwgCisgICAgNywgMjU0LCAxOTQsIDE0LCA3LCAyNTQsIDE5MywgMTQsIDcsIDI1NCwgMTkyLCAxNCwgNywgMjU0LCAxODgsIDE0LCA3LCAKKyAgICAyNTQsIDE4NywgMTQsIDcsIDI1NCwgMTg2LCAxNCwgNywgMjU0LCAxODUsIDE0LCA3LCAyNDksIDI1MywgMTQsIDcsIDI0OSwgCisgICAgMjUxLCAxNCwgNywgMjQ5LCAyNDksIDE0LCA3LCAyNDksIDI0NywgMTQsIDcsIDI0OSwgMjQ1LCAxNCwgNywgMjQ5LCAyNDQsIAorICAgIDE0LCA3LCAyNDksIDI0MiwgMTQsIDcsIDI0OSwgMjQwLCAxNCwgNywgMjQ5LCAyMzgsIDE0LCA3LCAyNDksIDIzNiwgMTQsIAorICAgIDcsIDI0NywgMTIxLCAxNCwgNywgMjQ3LCAxMjAsIDE0LCA3LCAyNDcsIDExOSwgMTQsIDcsIDI0NywgMTE4LCAxNCwgNywgCisgICAgMjQ3LCAxMTcsIDE0LCA3LCAyNDcsIDExNiwgMTQsIDcsIDI0NywgMTE1LCAxNCwgNywgMjQ3LCAxMTQsIDE0LCA3LCAyNDcsIAorICAgIDExMywgMTQsIDcsIDI0NywgMTEyLCAxNCwgNywgMjQ3LCAxMTEsIDE0LCA3LCAyNDcsIDExMCwgMTQsIDcsIDI0NywgMTA5LCAKKyAgICAxNCwgNywgMjQ3LCAxMDgsIDE0LCA3LCAyNDcsIDEwNywgMTQsIDcsIDI0NywgMTA2LCAxNCwgNywgMjQ3LCAxMDUsIDE0LCAKKyAgICA3LCAyNDcsIDEwNCwgMTQsIDcsIDI0NywgMTAzLCAxNCwgNywgMjQ3LCAxMDIsIDE0LCA3LCAyNDcsIDEwMSwgMTQsIDcsIAorICAgIDI0NywgMTAwLCAxNCwgNywgMjQ3LCA5OSwgMTQsIDcsIDI0NywgOTgsIDE0LCA3LCAyNDcsIDk3LCAxNCwgNywgMjQ3LCA5NiwgCisgICAgMTQsIDcsIDI0NywgOTUsIDE0LCA3LCAyNDcsIDk0LCAxNCwgNywgMjQ1LCA1MCwgMTQsIDcsIDI0NSwgNDksIDE0LCA3LCAKKyAgICAyNDUsIDQ4LCAxNCwgNywgMjQ1LCA0NywgMTQsIDcsIDI0NSwgNDYsIDE0LCA3LCAyNDUsIDQ1LCAxNCwgNywgMjQ1LCA0NCwgCisgICAgMTQsIDcsIDI0NSwgNDMsIDE0LCA3LCAyNDUsIDQyLCAxNCwgNywgMjQ1LCA0MSwgMTQsIDcsIDI0NSwgNDAsIDE0LCA3LCAKKyAgICAyNDUsIDM5LCAxNCwgNywgMjQ1LCAzOCwgMTQsIDcsIDI0NSwgMzcsIDE0LCA3LCAyNDUsIDM2LCAxNCwgNywgMjQ1LCAzNSwgCisgICAgMTQsIDcsIDI0NSwgMzQsIDE0LCA3LCAyNDUsIDMzLCAxNCwgNywgMjQ1LCAzMiwgMTQsIDcsIDI0NSwgMzEsIDE0LCA3LCAKKyAgICAyNDUsIDMwLCAxNCwgNywgMjQ1LCAyOSwgMTQsIDcsIDI0NSwgMjgsIDE0LCA3LCAyNDUsIDI3LCAxNCwgNywgMjQ1LCAyNiwgCisgICAgMTQsIDcsIDI0NSwgMjUsIDE0LCA3LCAyNDUsIDI0LCAxNCwgNywgMjQ1LCAyMywgMTQsIDcsIDI0NSwgMjIsIDE0LCA3LCAKKyAgICAyNDUsIDIxLCAxNCwgNywgMjQ1LCAyMCwgMTQsIDcsIDI0NSwgMTksIDE0LCA3LCAyNDUsIDE4LCAxNCwgNywgMjQ1LCAxNywgCisgICAgMTQsIDcsIDI0NSwgMTYsIDE0LCA3LCAyNDUsIDE1LCAxNCwgNywgMjQ1LCAxNCwgMTQsIDcsIDI0NSwgMTMsIDE0LCA3LCAKKyAgICAyNDUsIDEyLCAxNCwgNywgMjQ1LCAxMSwgMTQsIDcsIDI0NSwgMTAsIDE0LCA3LCAyNDUsIDksIDE0LCA3LCAyNDUsIDgsIAorICAgIDE0LCA3LCAyNDUsIDcsIDE0LCA3LCAyNDUsIDYsIDE0LCA3LCAyNDUsIDUsIDE0LCA3LCAyNDUsIDQsIDE0LCA3LCAyNDUsIAorICAgIDMsIDE0LCA3LCAyNDUsIDIsIDE0LCA3LCAyNDUsIDEsIDE0LCA3LCAyNDUsIDAsIDE0LCA3LCAyNDQsIDI1NSwgMTQsIDcsIAorICAgIDI0NCwgMjU0LCAxNCwgNywgMjQ0LCAyNTMsIDE0LCA3LCAyNDQsIDI1MiwgMTQsIDcsIDI0NCwgMjUxLCAxNCwgNywgMjQ0LCAKKyAgICAyNTAsIDE0LCA3LCAyNDQsIDI0OSwgMTQsIDcsIDI0NCwgMjQ4LCAxNCwgNywgMjQ0LCAyNDcsIDE0LCA3LCAyNDQsIDI0NiwgCisgICAgMTQsIDcsIDI0NCwgMjQ1LCAxNCwgNywgMjQ0LCAyNDQsIDE0LCA3LCAyNDQsIDI0MywgMTQsIDcsIDI0NCwgMjQyLCAxNCwgCisgICAgNywgMjQ0LCAyNDEsIDE0LCA3LCAyNDQsIDI0MCwgMTQsIDcsIDI0NCwgMjM5LCAxNCwgNywgMjQ0LCAyMzgsIDE0LCA3LCAKKyAgICAyNDQsIDIzNywgMTQsIDcsIDI0NCwgMjM2LCAxNCwgNywgMjQ0LCAyMzUsIDE0LCA3LCAyNDQsIDIzNCwgMTQsIDcsIDI0NCwgCisgICAgMjMzLCAxNCwgNywgMjQ0LCAyMzIsIDE0LCA3LCAyNDQsIDIzMSwgMTQsIDcsIDI0NCwgMjMwLCAxNCwgNywgMjQ0LCAyMjksIAorICAgIDE0LCA3LCAyNDQsIDIyOCwgMTQsIDcsIDI0NCwgMjI3LCAxNCwgNywgMjQ0LCAyMjYsIDE0LCA3LCAyNDQsIDIyNSwgMTQsIAorICAgIDcsIDI0NCwgMjI0LCAxNCwgNywgMjQ0LCAyMjMsIDE0LCA3LCAyNDQsIDIyMiwgMTQsIDcsIDI0NCwgMjIxLCAxNCwgNywgCisgICAgMjQ0LCAyMjAsIDE0LCA3LCAyNDQsIDIxOSwgMTQsIDcsIDI0NCwgMjE4LCAxNCwgNywgMjQ0LCAyMTcsIDE0LCA3LCAyNDQsIAorICAgIDIxNiwgMTQsIDcsIDI0NCwgMjE1LCAxNCwgNywgMjQxLCAyMzUsIDE0LCA3LCAyNDEsIDIzNCwgMTQsIDcsIDI0MSwgMjMzLCAKKyAgICAxNCwgNywgMjQxLCAyMzIsIDE0LCA3LCAyNDEsIDIzMSwgMTQsIDcsIDI0MSwgMjMwLCAxNCwgNywgMjQxLCAyMjksIDE0LCAKKyAgICA3LCAyNDEsIDIyOCwgMTQsIDcsIDI0MSwgMjI3LCAxNCwgNywgMjQxLCAyMjYsIDE0LCA3LCAyNDEsIDIyNSwgMTQsIDcsIAorICAgIDI0MSwgMjI0LCAxNCwgNywgMjQxLCAyMjMsIDE0LCA3LCAyNDEsIDIyMiwgMTQsIDcsIDI0MSwgMjIxLCAxNCwgNywgMjQxLCAKKyAgICAyMjAsIDE0LCA3LCAyNDEsIDIxOSwgMTQsIDcsIDI0MSwgMjE4LCAxNCwgNywgMjQxLCAyMTcsIDE0LCA3LCAyNDEsIDIxNiwgCisgICAgMTQsIDcsIDI0MSwgMjE1LCAxNCwgNywgMjQxLCAyMTQsIDE0LCA3LCAyNDEsIDIxMywgMTQsIDcsIDI0MSwgMjEyLCAxNCwgCisgICAgNywgMjQxLCAyMTEsIDE0LCA3LCAyNDEsIDIxMCwgMTQsIDcsIDI0MSwgMjA5LCAxNCwgNywgMjQxLCAyMDgsIDE0LCA3LCAKKyAgICAyNDEsIDIwNywgMTQsIDcsIDI0MSwgMjA2LCAxNCwgNywgMjQxLCAyMDUsIDE0LCA3LCAyNDEsIDIwNCwgMTQsIDcsIDI0MSwgCisgICAgMjAzLCAxNCwgNywgMjQxLCAyMDIsIDE0LCA3LCAyNDEsIDIwMSwgMTQsIDcsIDI0MSwgMjAwLCAxNCwgNywgMjQxLCAxOTksIAorICAgIDE0LCA3LCAyNDEsIDE5OCwgMTQsIDcsIDI0MSwgMTk3LCAxNCwgNywgMjQxLCAxOTYsIDE0LCA3LCAyNDEsIDE5NSwgMTQsIAorICAgIDcsIDI0MSwgMTk0LCAxNCwgNywgMjQxLCAxOTMsIDE0LCA3LCAyNDEsIDE5MiwgMTQsIDcsIDI0MCwgMTczLCAxNCwgNywgCisgICAgMjQwLCAxNzIsIDE0LCA3LCAyNDAsIDE3MSwgMTQsIDcsIDI0MCwgMTcwLCAxNCwgNywgMjQwLCAxNjksIDE0LCA3LCAyNDAsIAorICAgIDE2OCwgMTQsIDcsIDI0MCwgMTY3LCAxNCwgNywgMjQwLCAxNjYsIDE0LCA3LCAyNDAsIDE2NSwgMTQsIDcsIDI0MCwgMTY0LCAKKyAgICAxNCwgNywgMjQwLCAxNjMsIDE0LCA3LCAyNDAsIDE2MiwgMTQsIDcsIDI0MCwgMTYxLCAxNCwgNywgMjQwLCAxNjAsIDE0LCAKKyAgICA3LCAyNDAsIDE1OSwgMTQsIDcsIDI0MCwgMTU4LCAxNCwgNywgMjQwLCAxNTcsIDE0LCA3LCAyNDAsIDE1NiwgMTQsIDcsIAorICAgIDI0MCwgMTU1LCAxNCwgNywgMjQwLCAxNTQsIDE0LCA3LCAyNDAsIDE1MywgMTQsIDcsIDI0MCwgMTUyLCAxNCwgNywgMjQwLCAKKyAgICAxNTEsIDE0LCA3LCAyNDAsIDE1MCwgMTQsIDcsIDI0MCwgMTQ5LCAxNCwgNywgMjQwLCAxNDgsIDE0LCA3LCAyNDAsIDE0NywgCisgICAgMTQsIDcsIDI0MCwgMTQ2LCAxNCwgNywgMjQwLCAxNDUsIDE0LCA3LCAyNDAsIDE0NCwgMTQsIDcsIDI0MCwgMTQzLCAxNCwgCisgICAgNywgMjQwLCAxNDIsIDE0LCA3LCAyNDAsIDE0MSwgMTQsIDcsIDI0MCwgMTQwLCAxNCwgNywgMjQwLCAxMzksIDE0LCA3LCAKKyAgICAyNDAsIDEzOCwgMTQsIDcsIDI0MCwgMTM3LCAxNCwgNywgMjQwLCAxMzYsIDE0LCA3LCAyNDAsIDEzNSwgMTQsIDcsIDI0MCwgCisgICAgMTM0LCAxNCwgNywgMjQwLCAxMzMsIDE0LCA3LCAyNDAsIDEzMiwgMTQsIDcsIDI0MCwgMTMxLCAxNCwgNywgMjQwLCAxMzAsIAorICAgIDE0LCA3LCAyNDAsIDEyOSwgMTQsIDcsIDI0MCwgMTI4LCAxNCwgNywgMjQwLCAxMjcsIDE0LCA3LCAyNDAsIDEyNiwgMTQsIAorICAgIDcsIDI0MCwgMTI1LCAxNCwgNywgMjQwLCAxMjQsIDE0LCA3LCAyNDAsIDEyMywgMTQsIDcsIDI0MCwgMTIyLCAxNCwgNywgCisgICAgMjQwLCAxMjEsIDE0LCA3LCAyNDAsIDEyMCwgMTQsIDcsIDI0MCwgMTE5LCAxNCwgNywgMjQwLCAxMTgsIDE0LCA3LCAyNDAsIAorICAgIDExNywgMTQsIDcsIDI0MCwgMTE2LCAxNCwgNywgMjQwLCAxMTUsIDE0LCA3LCAyNDAsIDExNCwgMTQsIDcsIDI0MCwgMTEzLCAKKyAgICAxNCwgNywgMjQwLCAxMTIsIDE0LCA3LCAyNDAsIDExMSwgMTQsIDcsIDI0MCwgMTEwLCAxNCwgNywgMjQwLCAxMDksIDE0LCAKKyAgICA3LCAyMzksIDc0LCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgMjM5LCAKKyAgICA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIDE0LCAKKyAgICA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgMjM5LCAKKyAgICA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIDE0LCAKKyAgICA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgMjM5LCAKKyAgICA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIDE0LCAKKyAgICA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgMjM5LCAKKyAgICA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIDE0LCAKKyAgICA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgMjM5LCAKKyAgICAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIDE0LCAKKyAgICA3LCAyMzksIDI5LCAxNCwgNywgMjM5LCAyOCwgMTQsIDcsIDIzOSwgMjcsIDE0LCA3LCAyMzksIDI2LCAxNCwgNywgMjM5LCAKKyAgICAyNSwgMTQsIDcsIDIzOSwgMjQsIDE0LCA3LCAyMzksIDIzLCAxNCwgNywgMjM5LCAyMiwgMTQsIDcsIDIzOSwgMjEsIDE0LCAKKyAgICA3LCAyMzksIDIwLCAxNCwgNywgMjM5LCAxOSwgMTQsIDcsIDIzOSwgMTgsIDE0LCA3LCAyMzksIDE3LCAxNCwgNywgMjM5LCAKKyAgICAxNiwgMTQsIDcsIDIzOSwgMTUsIDE0LCA3LCAyMzksIDE0LCAxNCwgNywgMjM5LCAxMywgMTQsIDcsIDIzOSwgMTIsIDE0LCAKKyAgICA3LCAyMzksIDExLCAxNCwgNywgMjM3LCAxNjksIDE0LCA3LCAyMzcsIDE2OCwgMTQsIDcsIDIzNywgMTY3LCAxNCwgNywgCisgICAgMjM3LCAxNjYsIDE0LCA3LCAyMzcsIDE2NSwgMTQsIDcsIDIzNywgMTY0LCAxNCwgNywgMjM3LCAxNjMsIDE0LCA3LCAyMzcsIAorICAgIDE2MiwgMTQsIDcsIDIzNywgMTYxLCAxNCwgNywgMjM1LCAxOTAsIDE0LCA3LCAyMzUsIDE4OSwgMTQsIDcsIDIzNSwgMTg4LCAKKyAgICAxNCwgNywgMjM1LCAxODcsIDE0LCA3LCAyMzUsIDE4NiwgMTQsIDcsIDIzNSwgMTg1LCAxNCwgNywgMjM1LCAxODQsIDE0LCAKKyAgICA3LCAyMzUsIDE4MywgMTQsIDcsIDIzNSwgMTgyLCAxNCwgNywgMjM1LCAxODEsIDE0LCA3LCAyMzUsIDE4MCwgMTQsIDcsIAorICAgIDIzNSwgMTc5LCAxNCwgNywgMjM1LCAxNzgsIDE0LCA3LCAyMzUsIDE3NywgMTQsIDcsIDIzNSwgMTc2LCAxNCwgNywgMjM1LCAKKyAgICAxNzUsIDE0LCA3LCAyMzUsIDE3NCwgMTQsIDcsIDIzNSwgMTczLCAxNCwgNywgMjM1LCAxNzIsIDE0LCA3LCAyMzAsIDUzLCAKKyAgICAxNCwgNywgMjMwLCA1MiwgMTQsIDcsIDIzMCwgNTEsIDE0LCA3LCAyMzAsIDUwLCAxNCwgNywgMjMwLCA0OSwgMTQsIDcsIAorICAgIDIzMCwgNDgsIDE0LCA3LCAyMzAsIDQ3LCAxNCwgNywgMjMwLCA0NiwgMTQsIDcsIDIyOCwgMTI4LCAxNCwgNywgMjI4LCAKKyAgICAxMjcsIDE0LCA3LCAyMjgsIDEyNiwgMTQsIDcsIDIyOCwgMTI1LCAxNCwgNywgMjI4LCAxMjQsIDE0LCA3LCAyMjgsIDEyMywgCisgICAgMTQsIDcsIDIyOCwgMTIyLCAxNCwgNywgMjI4LCAxMjEsIDE0LCA3LCAyMjgsIDEyMCwgMTQsIDcsIDIyOCwgMTE5LCAxNCwgCisgICAgNywgMjI2LCAxODMsIDE0LCA3LCAyMjYsIDE4MiwgMTQsIDcsIDIyNiwgMTgxLCAxNCwgNywgMjI2LCAxNzksIDE0LCA3LCAKKyAgICAyMjYsIDE3NywgMTQsIDcsIDIyNiwgMTc2LCAxNCwgNywgMjI2LCAxNzQsIDE0LCA3LCAyMjYsIDE3MiwgMTQsIDcsIDIyNiwgCisgICAgMTcwLCAxNCwgNywgMjI2LCAxNjgsIDE0LCA3LCAyMjYsIDE2NiwgMTQsIDcsIDIyNiwgMTY0LCAxNCwgNywgMjI2LCAxNjIsIAorICAgIDE0LCA3LCAyMjYsIDE2MSwgMTQsIDcsIDIyNiwgMTU5LCAxNCwgNywgMjI2LCAxNTcsIDE0LCA3LCAyMjYsIDE1NiwgMTQsIAorICAgIDcsIDIyNiwgMTU1LCAxNCwgNywgMjI2LCAxNTQsIDE0LCA3LCAyMjYsIDE1MywgMTQsIDcsIDIyNiwgMTUyLCAxNCwgNywgCisgICAgMjI2LCAxNTEsIDE0LCA3LCAyMjYsIDE1MCwgMTQsIDcsIDIyNiwgMTQ5LCAxNCwgNywgMjI2LCAxNDcsIDE0LCA3LCAyMjYsIAorICAgIDE0NSwgMTQsIDcsIDIyNiwgMTQzLCAxNCwgNywgMjI2LCAxNDIsIDE0LCA3LCAyMjYsIDE0MCwgMTQsIDcsIDIyNiwgMTM5LCAKKyAgICAxNCwgNywgMjI2LCAxMzcsIDE0LCA3LCAyMjYsIDEzNiwgMTQsIDcsIDIyNiwgMTM0LCAxNCwgNywgMjI2LCAxMzIsIDE0LCAKKyAgICA3LCAyMjYsIDEzMCwgMTQsIDcsIDIyNiwgMTI4LCAxNCwgNywgMjI2LCAxMjYsIDE0LCA3LCAyMjYsIDEyNSwgMTQsIDcsIAorICAgIDIyNiwgMTIzLCAxNCwgNywgMjI2LCAxMjEsIDE0LCA3LCAyMjYsIDEyMCwgMTQsIDcsIDIyNiwgMTE4LCAxNCwgNywgMjI2LCAKKyAgICAxMTYsIDE0LCA3LCAyMjYsIDExNCwgMTQsIDcsIDIyNiwgMTEyLCAxNCwgNywgMjI2LCAxMTEsIDE0LCA3LCAyMjYsIDEwOSwgCisgICAgMTQsIDcsIDIyNiwgMTA3LCAxNCwgNywgMjI2LCAxMDUsIDE0LCA3LCAyMjYsIDEwNCwgMTQsIDcsIDIyNiwgMTAyLCAxNCwgCisgICAgNywgMjI2LCAxMDAsIDE0LCA3LCAyMjYsIDk5LCAxNCwgNywgMjI2LCA5OCwgMTQsIDcsIDIyNiwgOTYsIDE0LCA3LCAyMjYsIAorICAgIDk0LCAxNCwgNywgMjI2LCA5MiwgMTQsIDcsIDIyNiwgOTAsIDE0LCA3LCAyMjYsIDg4LCAxNCwgNywgMjI2LCA4NiwgMTQsIAorICAgIDcsIDIyNiwgODQsIDE0LCA3LCAyMjYsIDgzLCAxNCwgNywgMjI2LCA4MSwgMTQsIDcsIDIyNiwgNzksIDE0LCA3LCAyMjYsIAorICAgIDc3LCAxNCwgNywgMjI2LCA3NSwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgMjIzLCAxNTksIDE0LCA3LCAyMjMsIDE1OCwgCisgICAgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NSwgMTQsIDcsIDIyMywgMTU0LCAxNCwgCisgICAgNywgMjIzLCAxNTMsIDE0LCA3LCAyMjMsIDE1MiwgMTQsIDcsIDIyMywgMTUxLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAKKyAgICAyMjMsIDE0OSwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDcsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgCisgICAgMTQ1LCAxNCwgNywgMjIzLCAxNDQsIDE0LCA3LCAyMjMsIDE0MywgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIAorICAgIDE0LCA3LCAyMjMsIDE0MCwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzgsIDE0LCA3LCAyMjMsIDEzNywgMTQsIAorICAgIDcsIDIyMywgMTM2LCAxNCwgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzNCwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgCisgICAgMjIzLCAxMzIsIDE0LCA3LCAyMjMsIDEzMSwgMTQsIDcsIDIyMywgMTMwLCAxNCwgNywgMjIzLCAxMjksIDE0LCA3LCAyMjMsIAorICAgIDEyOCwgMTQsIDcsIDIyMywgMTI3LCAxNCwgNywgMjIzLCAxMjYsIDE0LCA3LCAyMjMsIDEyNSwgMTQsIDcsIDIyMywgMTI0LCAKKyAgICAxNCwgNywgMjIzLCAxMjMsIDE0LCA3LCAyMjMsIDEyMiwgMTQsIDcsIDIyMywgMTIxLCAxNCwgNywgMjIzLCAxMjAsIDE0LCAKKyAgICA3LCAyMjMsIDExOSwgMTQsIDcsIDIyMywgMTE4LCAxNCwgNywgMjIzLCAxMTcsIDE0LCA3LCAyMjMsIDExNiwgMTQsIDcsIAorICAgIDIyMywgMTE1LCAxNCwgNywgMjIzLCAxMTQsIDE0LCA3LCAyMjMsIDExMywgMTQsIDcsIDIyMywgMTEyLCAxNCwgNywgMjIxLCAKKyAgICAyNTIsIDE0LCA3LCAyMjEsIDI1MSwgMTQsIDcsIDIyMSwgMjUwLCAxNCwgNywgMjIxLCAyNDksIDE0LCA3LCAyMjEsIDI0OCwgCisgICAgMTQsIDcsIDIyMSwgMjQ3LCAxNCwgNywgMjIxLCAyNDYsIDE0LCA3LCAyMjEsIDI0NSwgMTQsIDcsIDIyMSwgMjQ0LCAxNCwgCisgICAgNywgMjIxLCAyNDMsIDE0LCA3LCAyMjEsIDI0MiwgMTQsIDcsIDIyMSwgMjQxLCAxNCwgNywgMjIxLCAyNDAsIDE0LCA3LCAKKyAgICAyMjEsIDIzOSwgMTQsIDcsIDIyMSwgMjM4LCAxNCwgNywgMjIxLCAyMzcsIDE0LCA3LCAyMjEsIDIzNiwgMTQsIDcsIDIyMSwgCisgICAgMjM1LCAxNCwgNywgMjIxLCAyMzQsIDE0LCA3LCAyMjEsIDIzMywgMTQsIDcsIDIyMSwgMjMyLCAxNCwgNywgMjIxLCAyMzEsIAorICAgIDE0LCA3LCAyMjEsIDgzLCAxNCwgNywgMjIxLCA4MiwgMTQsIDcsIDIyMSwgODEsIDE0LCA3LCAyMjEsIDgwLCAxNCwgNywgCisgICAgMjIxLCA3OSwgMTQsIDcsIDIyMSwgNzgsIDE0LCA3LCAyMjEsIDc3LCAxNCwgNywgMjIxLCA3NiwgMTQsIDcsIDIyMSwgNzUsIAorICAgIDE0LCA3LCAyMjEsIDc0LCAxNCwgNywgMjIxLCA3MywgMTQsIDcsIDIyMSwgNzIsIDE0LCA3LCAyMjEsIDcxLCAxNCwgNywgCisgICAgMjIxLCA3MCwgMTQsIDcsIDIyMSwgNjksIDE0LCA3LCAyMjEsIDY4LCAxNCwgNywgMjIxLCA2NywgMTQsIDcsIDIyMSwgNjYsIAorICAgIDE0LCA3LCAyMjEsIDY1LCAxNCwgNywgMjIxLCA2NCwgMTQsIDcsIDIyMSwgNjMsIDE0LCA3LCAyMjEsIDYyLCAxNCwgNywgCisgICAgMjIxLCA2MSwgMTQsIDcsIDIyMSwgNjAsIDE0LCA3LCAyMjEsIDU5LCAxNCwgNywgMjIxLCA1OCwgMTQsIDcsIDIyMCwgMTczLCAKKyAgICAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCAKKyAgICA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIAorICAgIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCA3LCAyMjAsIDE2MiwgMTQsIDcsIDIyMCwgMTYxLCAxNCwgNywgMjIwLCAKKyAgICAxNjAsIDE0LCA3LCAyMjAsIDE1OSwgMTQsIDcsIDIyMCwgMTU4LCAxNCwgNywgMjIwLCAxNTcsIDE0LCA3LCAyMjAsIDE1NiwgCisgICAgMTQsIDcsIDIyMCwgMTU1LCAxNCwgNywgMjIwLCAxNTQsIDE0LCA3LCAyMjAsIDE1MywgMTQsIDcsIDIyMCwgMTUyLCAxNCwgCisgICAgNywgMjIwLCAxNTEsIDE0LCA3LCAyMjAsIDE1MCwgMTQsIDcsIDIyMCwgMTQ5LCAxNCwgNywgMjIwLCAxNDgsIDE0LCA3LCAKKyAgICAyMjAsIDE0NywgMTQsIDcsIDIyMCwgMTQ2LCAxNCwgNywgMjIwLCAxNDUsIDE0LCA3LCAyMjAsIDE0NCwgMTQsIDcsIDIyMCwgCisgICAgMTQzLCAxNCwgNywgMjIwLCAxNDIsIDE0LCA3LCAyMjAsIDE0MSwgMTQsIDcsIDIyMCwgMTQwLCAxNCwgNywgMjIwLCAxMzksIAorICAgIDE0LCA3LCAyMjAsIDEzOCwgMTQsIDcsIDIyMCwgMTM3LCAxNCwgNywgMjIwLCAxMzYsIDE0LCA3LCAyMjAsIDEzNSwgMTQsIAorICAgIDcsIDIyMCwgMTM0LCAxNCwgNywgMjIwLCAxMzMsIDE0LCA3LCAyMjAsIDEzMiwgMTQsIDcsIDIyMCwgMTMxLCAxNCwgNywgCisgICAgMjIwLCAxMzAsIDE0LCA3LCAyMjAsIDEyOSwgMTQsIDcsIDIyMCwgMTI4LCAxNCwgNywgMjIwLCAxMjcsIDE0LCA3LCAyMjAsIAorICAgIDEyNiwgMTQsIDcsIDIyMCwgMTI1LCAxNCwgNywgMjIwLCAxMjQsIDE0LCA3LCAyMjAsIDEyMywgMTQsIDcsIDIyMCwgMTIyLCAKKyAgICAxNCwgNywgMjIwLCAxMjEsIDE0LCA3LCAyMjAsIDEyMCwgMTQsIDcsIDIyMCwgMTE5LCAxNCwgNywgMjIwLCAxMTgsIDE0LCAKKyAgICA3LCAyMjAsIDExNywgMTQsIDcsIDIyMCwgMTE2LCAxNCwgNywgMjIwLCAxMTUsIDE0LCA3LCAyMjAsIDExNCwgMTQsIDcsIAorICAgIDIyMCwgMTEzLCAxNCwgNywgMjIwLCAxMTIsIDE0LCA3LCAyMjAsIDExMSwgMTQsIDcsIDIyMCwgMTEwLCAxNCwgNywgMjIwLCAKKyAgICAxMDksIDE0LCA3LCAyMjAsIDEwOCwgMTQsIDcsIDIyMCwgMTA3LCAxNCwgNywgMjIwLCAxMDYsIDE0LCA3LCAyMjAsIDEwNSwgCisgICAgMTQsIDcsIDIyMCwgMTA0LCAxNCwgNywgMjIwLCAxMDMsIDE0LCA3LCAyMjAsIDEwMiwgMTQsIDcsIDIyMCwgMTAxLCAxNCwgCisgICAgNywgMjIwLCAxMDAsIDE0LCA3LCAyMjAsIDk5LCAxNCwgNywgMjE5LCAxODMsIDE0LCA3LCAyMTksIDE4MiwgMTQsIDcsIAorICAgIDIxOSwgMTgxLCAxNCwgNywgMjE5LCAxODAsIDE0LCA3LCAyMTksIDE3OSwgMTQsIDcsIDIxOSwgMTc4LCAxNCwgNywgMjE5LCAKKyAgICAxNzcsIDE0LCA3LCAyMTksIDE3NiwgMTQsIDcsIDIxOSwgMTc1LCAxNCwgNywgMjE5LCAxNzQsIDE0LCA3LCAyMTksIDE3MywgCisgICAgMTQsIDcsIDIxOSwgMTcyLCAxNCwgNywgMjE5LCAxNzEsIDE0LCA3LCAyMTcsIDEzMywgMTQsIDcsIDIxNywgMTMyLCAxNCwgCisgICAgNywgMjE3LCAxMzEsIDE0LCA3LCAyMTcsIDEzMCwgMTQsIDcsIDIxNywgMTI5LCAxNCwgNywgMjE3LCAxMjgsIDE0LCA3LCAKKyAgICAyMTcsIDEyNywgMTQsIDcsIDIxNiwgMjU1LCAxNCwgNywgMjE2LCAyNTQsIDE0LCA3LCAyMTYsIDI1MywgMTQsIDcsIDIxNiwgCisgICAgMjUyLCAxNCwgNywgMjE2LCAyNTEsIDE0LCA3LCAyMTYsIDI1MCwgMTQsIDcsIDIxNiwgMjQ5LCAxNCwgNywgMjE2LCAyNDgsIAorICAgIDE0LCA3LCAyMTYsIDI0NywgMTQsIDcsIDIxNiwgMjQ2LCAxNCwgNywgMjE2LCAyNDUsIDE0LCA3LCAyMTYsIDI0NCwgMTQsIAorICAgIDcsIDIxNiwgMjQzLCAxNCwgNywgMjE2LCAyNDIsIDE0LCA3LCAyMTYsIDI0MSwgMTQsIDcsIDIxNiwgMjQwLCAxNCwgNywgCisgICAgMjE2LCAyMzksIDE0LCA3LCAyMTYsIDIzOCwgMTQsIDcsIDIxNiwgMjM3LCAxNCwgNywgMjE2LCAyMzYsIDE0LCA3LCAyMTYsIAorICAgIDIzNSwgMTQsIDcsIDIxNiwgMjM0LCAxNCwgNywgMjE2LCAyMzMsIDE0LCA3LCAyMTYsIDIzMiwgMTQsIDcsIDIxNiwgMjMxLCAKKyAgICAxNCwgNywgMjE2LCAyMzAsIDE0LCA3LCAyMTYsIDIyOSwgMTQsIDcsIDIxNiwgMjI4LCAxNCwgNywgMjE2LCAyMjcsIDE0LCAKKyAgICA3LCAyMTYsIDIyNiwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIAorICAgIDIxNiwgMjIyLCAxNCwgNywgMjE1LCA5MSwgMTQsIDcsIDIxNSwgOTAsIDE0LCA3LCAyMTUsIDg5LCAxNCwgNywgMjE1LCA4OCwgCisgICAgMTQsIDcsIDIxNSwgODcsIDE0LCA3LCAyMTUsIDg2LCAxNCwgNywgMjE1LCA4NSwgMTQsIDcsIDIxNSwgODQsIDE0LCA3LCAKKyAgICAyMTUsIDgzLCAxNCwgNywgMjE1LCA4MiwgMTQsIDcsIDIxNSwgODEsIDE0LCA3LCAyMTUsIDgwLCAxNCwgNywgMjE1LCA3OSwgCisgICAgMTQsIDcsIDIxNSwgNzgsIDE0LCA3LCAyMTUsIDc3LCAxNCwgNywgMjE1LCA3NiwgMTQsIDcsIDIxNSwgNzUsIDE0LCA3LCAKKyAgICAyMTUsIDc0LCAxNCwgNywgMjE1LCA3MywgMTQsIDcsIDIxNSwgNzIsIDE0LCA3LCAyMTUsIDcxLCAxNCwgNywgMjE1LCA3MCwgCisgICAgMTQsIDcsIDIxNSwgNjksIDE0LCA3LCAyMTUsIDY4LCAxNCwgNywgMjE1LCA2NywgMTQsIDcsIDIxNSwgNjYsIDE0LCA3LCAKKyAgICAyMTUsIDY1LCAxNCwgNywgMjE1LCA2NCwgMTQsIDcsIDIxNSwgNjMsIDE0LCA3LCAyMTUsIDYyLCAxNCwgNywgMjE1LCA2MSwgCisgICAgMTQsIDcsIDIxNSwgNjAsIDE0LCA3LCAyMTUsIDU5LCAxNCwgNywgMjE1LCA1OCwgMTQsIDcsIDIxNSwgNTcsIDE0LCA3LCAKKyAgICAyMTUsIDU2LCAxNCwgNywgMjE1LCA1NSwgMTQsIDcsIDIxNSwgNTQsIDE0LCA3LCAyMTUsIDUzLCAxNCwgNywgMjE1LCA1MiwgCisgICAgMTQsIDcsIDIxNSwgNTEsIDE0LCA3LCAyMTUsIDUwLCAxNCwgNywgMjE1LCA0OSwgMTQsIDcsIDIxNSwgNDgsIDE0LCA3LCAKKyAgICAyMTUsIDQ3LCAxNCwgNywgMjE1LCA0NiwgMTQsIDcsIDIxNSwgNDUsIDE0LCA3LCAyMTUsIDQ0LCAxNCwgNywgMjE1LCA0MywgCisgICAgMTQsIDcsIDIxNSwgNDIsIDE0LCA3LCAyMTUsIDQxLCAxNCwgNywgMjE1LCA0MCwgMTQsIDcsIDIxNSwgMzksIDE0LCA3LCAKKyAgICAyMTUsIDM4LCAxNCwgNywgMjEwLCA2NywgMTQsIDcsIDIxMCwgNjYsIDE0LCA3LCAyMTAsIDY1LCAxNCwgNywgMjEwLCA2NCwgCisgICAgMTQsIDcsIDIxMCwgNjMsIDE0LCA3LCAyMTAsIDYyLCAxNCwgNywgMjEwLCA2MSwgMTQsIDcsIDIxMCwgNjAsIDE0LCA3LCAKKyAgICAyMTAsIDU5LCAxNCwgNywgMjEwLCA1OCwgMTQsIDcsIDIxMCwgNTcsIDE0LCA3LCAyMTAsIDU2LCAxNCwgNywgMjEwLCA1NSwgCisgICAgMTQsIDcsIDIxMCwgNTQsIDE0LCA3LCAyMTAsIDUzLCAxNCwgNywgMjEwLCA1MiwgMTQsIDcsIDIxMCwgNTEsIDE0LCA3LCAKKyAgICAyMTAsIDUwLCAxNCwgNywgMjEwLCA0OSwgMTQsIDcsIDIxMCwgNDgsIDE0LCA3LCAyMTAsIDQ3LCAxNCwgNywgMjEwLCA0NiwgCisgICAgMTQsIDcsIDIxMCwgNDUsIDE0LCA3LCAyMTAsIDQ0LCAxNCwgNywgMjEwLCA0MywgMTQsIDcsIDIxMCwgNDIsIDE0LCA3LCAKKyAgICAyMTAsIDQxLCAxNCwgNywgMjEwLCA0MCwgMTQsIDcsIDIxMCwgMzksIDE0LCA3LCAyMTAsIDM4LCAxNCwgNywgMjEwLCAzNywgCisgICAgMTQsIDcsIDIxMCwgMzYsIDE0LCA3LCAyMTAsIDM1LCAxNCwgNywgMjEwLCAzNCwgMTQsIDcsIDIxMCwgMzMsIDE0LCA3LCAKKyAgICAyMTAsIDMyLCAxNCwgNywgMjEwLCAzMSwgMTQsIDcsIDIxMCwgMzAsIDE0LCA3LCAyMTAsIDI5LCAxNCwgNywgMjEwLCAyOCwgCisgICAgMTQsIDcsIDIxMCwgMjcsIDE0LCA3LCAyMTAsIDI2LCAxNCwgNywgMjEwLCAyNSwgMTQsIDcsIDIxMCwgMjQsIDE0LCA3LCAKKyAgICAyMDcsIDg4LCAxNCwgNywgMjA3LCA4NywgMTQsIDcsIDIwNywgODYsIDE0LCA3LCAyMDcsIDg1LCAxNCwgNywgMjA3LCA4NCwgCisgICAgMTQsIDcsIDIwNywgODMsIDE0LCA3LCAyMDcsIDgyLCAxNCwgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAKKyAgICAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgCisgICAgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAKKyAgICAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgCisgICAgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAKKyAgICAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgCisgICAgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAKKyAgICAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgCisgICAgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAKKyAgICAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNiwgMTYzLCAxNCwgNywgMjA2LCAxNjIsIDE0LCA3LCAyMDYsIAorICAgIDE2MSwgMTQsIDcsIDIwNiwgMTYwLCAxNCwgNywgMjA2LCAxNTksIDE0LCA3LCAyMDYsIDE1OCwgMTQsIDcsIDIwNiwgMTU3LCAKKyAgICAxNCwgNywgMjA2LCAxNTYsIDE0LCA3LCAyMDYsIDE1NSwgMTQsIDcsIDIwNiwgMTU0LCAxNCwgNywgMjA2LCAxNTMsIDE0LCAKKyAgICA3LCAyMDYsIDE1MiwgMTQsIDcsIDIwNiwgMTUxLCAxNCwgNywgMjA2LCAxNTAsIDE0LCA3LCAyMDYsIDE0OSwgMTQsIDcsIAorICAgIDIwNiwgMTQ4LCAxNCwgNywgMjA2LCAxNDcsIDE0LCA3LCAyMDYsIDE0NiwgMTQsIDcsIDIwNiwgMTQ1LCAxNCwgNywgMjA2LCAKKyAgICAxNDQsIDE0LCA3LCAyMDYsIDE0MywgMTQsIDcsIDIwNiwgMTQyLCAxNCwgNywgMjA2LCAxNDEsIDE0LCA3LCAyMDYsIDE0MCwgCisgICAgMTQsIDcsIDIwNiwgMTM5LCAxNCwgNywgMjA2LCAxMzgsIDE0LCA3LCAyMDYsIDEzNywgMTQsIDcsIDIwNiwgMTM2LCAxNCwgCisgICAgNywgMjA2LCAxMzUsIDE0LCA3LCAyMDYsIDEzNCwgMTQsIDcsIDIwNiwgMTMzLCAxNCwgNywgMjA2LCAxMzIsIDE0LCA3LCAKKyAgICAyMDYsIDEzMSwgMTQsIDcsIDIwNiwgMTMwLCAxNCwgNywgMjA2LCAxMjksIDE0LCA3LCAyMDYsIDEyOCwgMTQsIDcsIDIwNiwgCisgICAgMTI3LCAxNCwgNywgMjA2LCAxMjYsIDE0LCA3LCAyMDYsIDEyNSwgMTQsIDcsIDIwNiwgMTI0LCAxNCwgNywgMjA2LCAxMjMsIAorICAgIDE0LCA3LCAyMDYsIDEyMiwgMTQsIDcsIDIwNiwgMTIxLCAxNCwgNywgMjA2LCAxMjAsIDE0LCA3LCAyMDYsIDExOSwgMTQsIAorICAgIDcsIDIwNiwgMTE4LCAxNCwgNywgMjA2LCAxMTcsIDE0LCA3LCAyMDYsIDExNiwgMTQsIDcsIDIwNiwgMTE1LCAxNCwgNywgCisgICAgMjA2LCAxMTQsIDE0LCA3LCAyMDYsIDExMywgMTQsIDcsIDIwNiwgMTEyLCAxNCwgNywgMjA2LCAxMTEsIDE0LCA3LCAyMDYsIAorICAgIDExMCwgMTQsIDcsIDIwNiwgMTA5LCAxNCwgNywgMjA2LCAxMDgsIDE0LCA3LCAyMDYsIDEwNywgMTQsIDcsIDIwNiwgMTA2LCAKKyAgICAxNCwgNywgMjA2LCAxMDUsIDE0LCA3LCAyMDYsIDEwNCwgMTQsIDcsIDIwNiwgMTAzLCAxNCwgNywgMjA2LCAxMDIsIDE0LCAKKyAgICA3LCAyMDYsIDEwMSwgMTQsIDcsIDIwNiwgMTAwLCAxNCwgNywgMjA2LCA5OSwgMTQsIDcsIDIwNiwgOTgsIDE0LCA3LCAyMDYsIAorICAgIDk3LCAxNCwgNywgMjA2LCA5NiwgMTQsIDcsIDIwNiwgOTUsIDE0LCA3LCAyMDYsIDk0LCAxNCwgNywgMjA2LCA5MywgMTQsIAorICAgIDcsIDIwNiwgOTIsIDE0LCA3LCAyMDYsIDkxLCAxNCwgNywgMjA2LCA5MCwgMTQsIDcsIDIwNiwgODksIDE0LCA3LCAyMDYsIAorICAgIDg4LCAxNCwgNywgMjA2LCA4NywgMTQsIDcsIDIwNCwgMTQzLCAxNCwgNywgMjA0LCAxNDIsIDE0LCA3LCAyMDQsIDE0MSwgCisgICAgMTQsIDcsIDIwNCwgMTQwLCAxNCwgNywgMjA0LCAxMzksIDE0LCA3LCAyMDQsIDEzOCwgMTQsIDcsIDIwNCwgMTM3LCAxNCwgCisgICAgNywgMjA0LCAxMzYsIDE0LCA3LCAyMDQsIDEzNSwgMTQsIDcsIDIwNCwgMTM0LCAxNCwgNywgMjA0LCAxMzMsIDE0LCA3LCAKKyAgICAyMDQsIDEzMiwgMTQsIDcsIDIwNCwgMTMxLCAxNCwgNywgMjA0LCAxMzAsIDE0LCA3LCAyMDQsIDEyOSwgMTQsIDcsIDIwNCwgCisgICAgMTI4LCAxNCwgNywgMjA0LCAxMjcsIDE0LCA3LCAyMDQsIDEyNiwgMTQsIDcsIDIwNCwgMTI1LCAxNCwgNywgMjA0LCAxMjQsIAorICAgIDE0LCA3LCAyMDQsIDEyMywgMTQsIDcsIDIwNCwgMTIyLCAxNCwgNywgMjA0LCAxMjEsIDE0LCA3LCAyMDQsIDEyMCwgMTQsIAorICAgIDcsIDIwNCwgMTE5LCAxNCwgNywgMjA0LCAxMTgsIDE0LCA3LCAyMDQsIDExNywgMTQsIDcsIDIwNCwgMTE2LCAxNCwgNywgCisgICAgMjA0LCAxMTUsIDE0LCA3LCAyMDQsIDExNCwgMTQsIDcsIDIwNCwgMTEzLCAxNCwgNywgMjA0LCAxMTIsIDE0LCA3LCAyMDMsIAorICAgIDE5NCwgMTQsIDcsIDIwMywgMTkzLCAxNCwgNywgMjAzLCAxOTIsIDE0LCA3LCAyMDMsIDE5MSwgMTQsIDcsIDIwMywgMTkwLCAKKyAgICAxNCwgNywgMjAzLCAxODksIDE0LCA3LCAyMDMsIDE4OCwgMTQsIDcsIDIwMywgMTg3LCAxNCwgNywgMjAzLCAxODYsIDE0LCAKKyAgICA3LCAyMDMsIDE4NSwgMTQsIDcsIDIwMywgMTg0LCAxNCwgNywgMjAzLCAxODMsIDE0LCA3LCAyMDMsIDEyMiwgMTQsIDcsIAorICAgIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgNywgMjAzLCAKKyAgICAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAyMDIsIDE1OCwgCisgICAgMTQsIDcsIDIwMiwgMTU3LCAxNCwgNywgMjAyLCAxNTYsIDE0LCA3LCAyMDIsIDE1NSwgMTQsIDcsIDIwMiwgMTU0LCAxNCwgCisgICAgNywgMjAyLCAxNTMsIDE0LCA3LCAyMDIsIDE1MiwgMTQsIDcsIDIwMiwgMTUxLCAxNCwgNywgMjAyLCAxNTAsIDE0LCA3LCAKKyAgICAyMDIsIDE0OSwgMTQsIDcsIDIwMiwgMTQ4LCAxNCwgNywgMjAyLCAxNDcsIDE0LCA3LCAyMDIsIDE0NiwgMTQsIDcsIDIwMiwgCisgICAgMTQ1LCAxNCwgNywgMjAyLCAxNDQsIDE0LCA3LCAyMDIsIDE0MywgMTQsIDcsIDIwMiwgMTQyLCAxNCwgNywgMjAyLCAxNDEsIAorICAgIDE0LCA3LCAyMDIsIDE0MCwgMTQsIDcsIDIwMiwgMTM5LCAxNCwgNywgMjAyLCAxMzgsIDE0LCA3LCAyMDIsIDEzNywgMTQsIAorICAgIDcsIDIwMiwgMTM2LCAxNCwgNywgMjAyLCAxMzUsIDE0LCA3LCAyMDIsIDEzNCwgMTQsIDcsIDIwMiwgMTMzLCAxNCwgNywgCisgICAgMjAyLCAxMzIsIDE0LCA3LCAyMDIsIDEzMSwgMTQsIDcsIDIwMiwgMTMwLCAxNCwgNywgMjAyLCAxMjksIDE0LCA3LCAyMDIsIAorICAgIDEyOCwgMTQsIDcsIDIwMiwgMTI3LCAxNCwgNywgMjAyLCAxMjYsIDE0LCA3LCAyMDIsIDEyNSwgMTQsIDcsIDIwMiwgMTI0LCAKKyAgICAxNCwgNywgMjAyLCAxMjMsIDE0LCA3LCAyMDIsIDEyMiwgMTQsIDcsIDIwMiwgMTIxLCAxNCwgNywgMjAyLCAxMjAsIDE0LCAKKyAgICA3LCAyMDIsIDExOSwgMTQsIDcsIDIwMiwgMTE4LCAxNCwgNywgMjUyLCAyNCwgMTQsIDcsIDI1MiwgMjMsIDE0LCA3LCAyNTIsIAorICAgIDIyLCAxNCwgNywgMjUyLCAyMSwgMTQsIDcsIDI1MiwgMjAsIDE0LCA3LCAyNTIsIDE5LCAxNCwgNywgMjUyLCAxOCwgMTQsIAorICAgIDcsIDI1MiwgMTcsIDE0LCA3LCAyNTIsIDE2LCAxNCwgNywgMjUyLCAxNSwgMTQsIDcsIDI1MiwgMTQsIDE0LCA3LCAyNTIsIAorICAgIDEzLCAxNCwgNywgMjUyLCAxMiwgMTQsIDcsIDI1MiwgMTEsIDE0LCA3LCAyNTIsIDEwLCAxNCwgNywgMjUyLCA5LCAxNCwgNywgCisgICAgMjUyLCA4LCAxNCwgNywgMjUyLCA3LCAxNCwgNywgMjUyLCA2LCAxNCwgNywgMjUyLCA1LCAxNCwgNywgMjUyLCA0LCAxNCwgCisgICAgNywgMjUyLCAzLCAxNCwgNywgMjUyLCAyLCAxNCwgNywgMjUyLCAxLCAxNCwgNywgMjUyLCAwLCAxNCwgNywgMjUxLCAyNTUsIAorICAgIDE0LCA3LCAyNTEsIDI1NCwgMTQsIDcsIDI1MSwgMjUzLCAxNCwgNywgMjUxLCAyNTIsIDE0LCA3LCAyNTEsIDI1MSwgMTQsIAorICAgIDcsIDI1MSwgMjUwLCAxNCwgNywgMjUxLCAyNDksIDE0LCA3LCAyNTEsIDI0OCwgMTQsIDcsIDI1MSwgMjQ3LCAyNywgNywgCisgICAgMjU1LCAxOCwgMjcsIDcsIDI1NSwgMTcsIDI3LCA3LCAyNTUsIDE2LCAyNywgNywgMjU1LCAxNSwgMjcsIDcsIDI1NSwgMTQsIAorICAgIDI3LCA3LCAyNTUsIDEyLCAyNywgNywgMjU1LCA5LCAyNywgNywgMjU1LCA4LCAyNywgNywgMjU1LCA3LCAyNywgNywgMjU1LCAKKyAgICA2LCAyNywgNywgMjU1LCA1LCAyNywgNywgMjU1LCA0LCAyNywgNywgMjU1LCAzLCAyNywgNywgMjU1LCAyLCAyNywgNywgCisgICAgMjU1LCAxLCAyNywgNywgMjU0LCAyNTUsIDI3LCA3LCAyNTQsIDI1NCwgMjcsIDcsIDI1NCwgMjUzLCAyNywgNywgMjU0LCAKKyAgICAyNTEsIDI3LCA3LCAyNTQsIDI1MCwgMjcsIDcsIDI1NCwgMjQ5LCAyNywgNywgMjU0LCAyNDgsIDI3LCA3LCAyNTQsIDI0NywgCisgICAgMjcsIDcsIDI1NCwgMjQ2LCAyNywgNywgMjU0LCAyNDUsIDI3LCA3LCAyNTQsIDI0NCwgMjcsIDcsIDI1NCwgMjQzLCAyNywgCisgICAgNywgMjU0LCAyNDIsIDI3LCA3LCAyNTQsIDI0MSwgMjcsIDcsIDI1NCwgMjQwLCAyNywgNywgMjU0LCAyMzgsIDI3LCA3LCAKKyAgICAyNTQsIDIzNywgMjcsIDcsIDI1NCwgMjM2LCAyNywgNywgMjU0LCAyMzUsIDI3LCA3LCAyNTQsIDIzMywgMjcsIDcsIDI1NCwgCisgICAgMjMyLCAyNywgNywgMjU0LCAyMzEsIDI3LCA3LCAyNTQsIDIzMCwgMjcsIDcsIDI1NCwgMjI5LCAyNywgNywgMjU0LCAyMjgsIAorICAgIDI3LCA3LCAyNTQsIDIyNywgMjcsIDcsIDI1NCwgMjI2LCAyNywgNywgMjU0LCAyMjUsIDI3LCA3LCAyNTQsIDIyMywgMjcsIAorICAgIDcsIDI1NCwgMjIyLCAyNywgNywgMjU0LCAyMjEsIDI3LCA3LCAyNTQsIDIxOSwgMjcsIDcsIDI1NCwgMjE3LCAyNywgNywgCisgICAgMjU0LCAyMTYsIDI3LCA3LCAyNTQsIDIxNSwgMjcsIDcsIDI1NCwgMjE0LCAyNywgNywgMjU0LCAyMTMsIDI3LCA3LCAyNTQsIAorICAgIDIxMiwgMjcsIDcsIDI1NCwgMjExLCAyNywgNywgMjU0LCAyMTAsIDI3LCA3LCAyNTQsIDIwOSwgMjcsIDcsIDI1NCwgMjA4LCAKKyAgICAyNywgNywgMjU0LCAyMDcsIDI3LCA3LCAyNTQsIDIwNiwgMjcsIDcsIDI1NCwgMjA1LCAyNywgNywgMjU0LCAyMDQsIDI3LCAKKyAgICA3LCAyNTQsIDIwMywgMjcsIDcsIDI1NCwgMjAyLCAyNywgNywgMjU0LCAyMDEsIDI3LCA3LCAyNTQsIDIwMCwgMjcsIDcsIAorICAgIDI1NCwgMTk5LCAyNywgNywgMjU0LCAxOTgsIDI3LCA3LCAyNTQsIDE5NywgMjcsIDcsIDI1NCwgMTk2LCAyNywgNywgMjU0LCAKKyAgICAxOTUsIDI3LCA3LCAyNTQsIDE5NCwgMjcsIDcsIDI1NCwgMTkzLCAyNywgNywgMjU0LCAxOTIsIDI3LCA3LCAyNTQsIDE5MSwgCisgICAgMjcsIDcsIDI1NCwgMTkwLCAyNywgNywgMjU0LCAxODksIDI3LCA3LCAyNTQsIDE4OCwgMjcsIDcsIDI1NCwgMTg3LCAyNywgCisgICAgNywgMjU0LCAxODYsIDI3LCA3LCAyNTQsIDE4NSwgMjcsIDcsIDI1NCwgMTg0LCAyNywgNywgMjU0LCAxODMsIDI3LCA3LCAKKyAgICAyNTQsIDE4MiwgMjcsIDcsIDI1NCwgMTgxLCAyNywgNywgMjU0LCAxODAsIDI3LCA3LCAyNTQsIDE3OSwgMjcsIDcsIDI1NCwgCisgICAgMTc4LCAyNywgNywgMjU0LCAxNzcsIDI3LCA3LCAyNTQsIDE3NiwgMjcsIDcsIDI1NCwgMTc1LCAyNywgNywgMjU0LCAxNzQsIAorICAgIDI3LCA3LCAyNTQsIDE3MywgMjcsIDcsIDI1NCwgMTcyLCAyNywgNywgMjU0LCAxNzEsIDI3LCA3LCAyNTQsIDE3MCwgMjcsIAorICAgIDcsIDI1NCwgMTY5LCAyNywgNywgMjU0LCAxNjgsIDI3LCA3LCAyNTQsIDE2NywgMjcsIDcsIDI1NCwgMTY2LCAyNywgNywgCisgICAgMjU0LCAxNjUsIDI3LCA3LCAyNTQsIDE2NCwgMjcsIDcsIDI1NCwgMTYzLCAyNywgNywgMjU0LCAxNjIsIDI3LCA3LCAyNTQsIAorICAgIDE2MSwgMjcsIDcsIDI1NCwgMTYwLCAyNywgNywgMjU0LCAxNTksIDI3LCA3LCAyNTQsIDE1OCwgMjcsIDcsIDI1NCwgMTU3LCAKKyAgICAyNywgNywgMjU0LCAxNTYsIDI3LCA3LCAyNTQsIDE1NSwgMjcsIDcsIDI1NCwgMTU0LCAyNywgNywgMjU0LCAxNTMsIDI3LCAKKyAgICA3LCAyNTQsIDE1MSwgMjcsIDcsIDI1NCwgMTUwLCAyNywgNywgMjU0LCAxNDksIDI3LCA3LCAyNTQsIDE0OCwgMjcsIDcsIAorICAgIDI1NCwgMTQ3LCAyNywgNywgMjU0LCAxNDYsIDI3LCA3LCAyNTQsIDE0NSwgMjcsIDcsIDI1NCwgMTQ0LCAyNywgNywgMjU0LCAKKyAgICAxNDMsIDI3LCA3LCAyNTQsIDE0MiwgMjcsIDcsIDI1NCwgMTQxLCAyNywgNywgMjU0LCAxNDAsIDI3LCA3LCAyNTQsIDEzOSwgCisgICAgMjcsIDcsIDI1NCwgMTM4LCAyNywgNywgMjU0LCAxMzcsIDI3LCA3LCAyNTQsIDEzNiwgMjcsIDcsIDI1NCwgMTM1LCAyNywgCisgICAgNywgMjU0LCAxMzQsIDI3LCA3LCAyNTQsIDEzMywgMjcsIDcsIDI1NCwgMTMyLCAyNywgNywgMjU0LCAxMzEsIDI3LCA3LCAKKyAgICAyNTQsIDEzMCwgMjcsIDcsIDI1NCwgMTI5LCAyNywgNywgMjU0LCAxMjgsIDI3LCA3LCAyNTQsIDEyNywgMjcsIDcsIDI1NCwgCisgICAgMTI2LCAyNywgNywgMjU0LCAxMjUsIDI3LCA3LCAyNTQsIDEyNCwgMjcsIDcsIDI1NCwgMTIzLCAyNywgNywgMjU0LCAxMjIsIAorICAgIDI3LCA3LCAyNTQsIDEyMSwgMjcsIDcsIDI1NCwgMTIwLCAyNywgNywgMjU0LCAxMTksIDI3LCA3LCAyNTQsIDExOCwgMjcsIAorICAgIDcsIDI1NCwgMTE2LCAyNywgNywgMjU0LCAxMTUsIDI3LCA3LCAyNTQsIDExNCwgMjcsIDcsIDI1NCwgMTEzLCAyNywgNywgCisgICAgMjU0LCAxMTIsIDI3LCA3LCAyNTQsIDExMSwgMjcsIDcsIDI1NCwgMTEwLCAyNywgNywgMjU0LCAxMDksIDI3LCA3LCAyNTQsIAorICAgIDEwOCwgMjcsIDcsIDI1NCwgMTA3LCAyNywgNywgMjU0LCAxMDYsIDI3LCA3LCAyNTQsIDEwNSwgMjcsIDcsIDI1NCwgMTAzLCAKKyAgICAyNywgNywgMjU0LCAxMDIsIDI3LCA3LCAyNTQsIDEwMSwgMjcsIDcsIDI1NCwgMTAwLCAyNywgNywgMjU0LCA5OSwgMjcsIDcsIAorICAgIDI1NCwgOTgsIDI3LCA3LCAyNTQsIDk3LCAyNywgNywgMjU0LCA5NiwgMjcsIDcsIDI1NCwgOTUsIDI3LCA3LCAyNTQsIDk0LCAKKyAgICAyNywgNywgMjU0LCA5MywgMjcsIDcsIDI1NCwgOTIsIDI3LCA3LCAyNTQsIDkxLCAyNywgNywgMjU0LCA5MCwgMjcsIDcsIAorICAgIDI1NCwgODksIDI3LCA3LCAyNTQsIDg4LCAyNywgNywgMjU0LCA4NywgMjcsIDcsIDI1NCwgODYsIDI3LCA3LCAyNTQsIDg1LCAKKyAgICAyNywgNywgMjU0LCA4NCwgMjcsIDcsIDI1NCwgODMsIDI3LCA3LCAyNTQsIDgyLCAyNywgNywgMjU0LCA4MSwgMjcsIDcsIAorICAgIDI1NCwgODAsIDI3LCA3LCAyNTQsIDc5LCAyNywgNywgMjU0LCA3OCwgMjcsIDcsIDI1NCwgNzcsIDI3LCA3LCAyNTQsIDc2LCAKKyAgICAyNywgNywgMjU0LCA3NSwgMjcsIDcsIDI1NCwgNzQsIDI3LCA3LCAyNTQsIDczLCAyNywgNywgMjU0LCA3MiwgMjcsIDcsIAorICAgIDI1NCwgNzEsIDI3LCA3LCAyNTQsIDcwLCAyNywgNywgMjU0LCA2OSwgMjcsIDcsIDI1NCwgNjgsIDI3LCA3LCAyNTQsIDY3LCAKKyAgICAyNywgNywgMjU0LCA2NiwgMjcsIDcsIDI1NCwgNjUsIDI3LCA3LCAyNTQsIDY0LCAyNywgNywgMjU0LCA2MywgMjcsIDcsIAorICAgIDI1NCwgNjIsIDI3LCA3LCAyNTQsIDYxLCAyNywgNywgMjU0LCA2MCwgMjcsIDcsIDI1NCwgNTksIDI3LCA3LCAyNTQsIDU4LCAKKyAgICAyNywgNywgMjU0LCA1NywgMjcsIDcsIDI1NCwgNTYsIDI3LCA3LCAyNTQsIDU1LCAyNywgNywgMjU0LCA1NCwgMjcsIDcsIAorICAgIDI1NCwgNTMsIDI3LCA3LCAyNTQsIDUyLCAyNywgNywgMjU0LCA1MSwgMjcsIDcsIDI1NCwgNTAsIDI3LCA3LCAyNTQsIDQ5LCAKKyAgICAyNywgNywgMjU0LCA0OCwgMjcsIDcsIDI1NCwgNDcsIDI3LCA3LCAyNTQsIDQ2LCAyNywgNywgMjU0LCA0NSwgMjcsIDcsIAorICAgIDI1NCwgNDQsIDI3LCA3LCAyNTQsIDQzLCAyNywgNywgMjU0LCA0MiwgMjcsIDcsIDI1NCwgNDEsIDI3LCA3LCAyNTQsIDQwLCAKKyAgICAyNywgNywgMjU0LCAzOSwgMjcsIDcsIDI1NCwgMzgsIDI3LCA3LCAyNTQsIDM3LCAyNywgNywgMjU0LCAzNiwgMjcsIDcsIAorICAgIDI1NCwgMzUsIDI3LCA3LCAyNTQsIDMzLCAyNywgNywgMjU0LCAzMiwgMjcsIDcsIDI1NCwgMzEsIDI3LCA3LCAyNTQsIDMwLCAKKyAgICAyNywgNywgMjU0LCAyOSwgMjcsIDcsIDI1NCwgMjgsIDI3LCA3LCAyNTQsIDI3LCAyNywgNywgMjU0LCAyNiwgMjcsIDcsIAorICAgIDI1NCwgMjUsIDI3LCA3LCAyNTQsIDI0LCAyNywgNywgMjU0LCAyMywgMjcsIDcsIDI1NCwgMjIsIDI3LCA3LCAyNTQsIDIxLCAKKyAgICAyNywgNywgMjU0LCAyMCwgMjcsIDcsIDI1NCwgMTksIDI3LCA3LCAyNTQsIDE4LCAyNywgNywgMjU0LCAxNywgMjcsIDcsIAorICAgIDI1NCwgMTYsIDI3LCA3LCAyNTQsIDE1LCAyNywgNywgMjU0LCAxNCwgMjcsIDcsIDI1NCwgMTMsIDI3LCA3LCAyNTQsIDEyLCAKKyAgICAyNywgNywgMjU0LCAxMSwgMjcsIDcsIDI1NCwgMTAsIDI3LCA3LCAyNTQsIDksIDI3LCA3LCAyNTQsIDgsIDI3LCA3LCAyNTQsIAorICAgIDcsIDI3LCA3LCAyNTQsIDYsIDI3LCA3LCAyNTQsIDUsIDI3LCA3LCAyNTQsIDQsIDI3LCA3LCAyNTQsIDMsIDI3LCA3LCAKKyAgICAyNTQsIDIsIDI3LCA3LCAyNTQsIDEsIDI3LCA3LCAyNTQsIDAsIDI3LCA3LCAyNTMsIDI1NSwgMjcsIDcsIDI1MywgMjU0LCAKKyAgICAyNywgNywgMjUzLCAyNTMsIDI3LCA3LCAyNTMsIDI1MiwgMjcsIDcsIDI1MywgMjUxLCAyNywgNywgMjUzLCAyNTAsIDI3LCAKKyAgICA3LCAyNTMsIDI0OSwgMjcsIDcsIDI1MywgMjQ4LCAyNywgNywgMjUzLCAyNDcsIDI3LCA3LCAyNTMsIDI0NiwgMjcsIDcsIAorICAgIDI1MywgMjQ1LCAyNywgNywgMjUzLCAyNDQsIDI3LCA3LCAyNTMsIDI0MywgMjcsIDcsIDI1MywgMjQyLCAyNywgNywgMjUzLCAKKyAgICAyNDEsIDI3LCA3LCAyNTMsIDI0MCwgMjcsIDcsIDI1MywgMjM5LCAyNywgNywgMjUzLCAyMzgsIDI3LCA3LCAyNTMsIDIzNywgCisgICAgMjcsIDcsIDI1MywgMjM2LCAyNywgNywgMjUzLCAyMzUsIDI3LCA3LCAyNTMsIDIzNCwgMjcsIDcsIDI1MywgMjMzLCAyNywgCisgICAgNywgMjUzLCAyMzIsIDI3LCA3LCAyNTMsIDIzMSwgMjcsIDcsIDI1MywgMjMwLCAyNywgNywgMjUzLCAyMjksIDI3LCA3LCAKKyAgICAyNTMsIDIyOCwgMjcsIDcsIDI1MywgMjI3LCAyNywgNywgMjUzLCAyMjYsIDI3LCA3LCAyNTMsIDIyNSwgMjcsIDcsIDI1MywgCisgICAgMjI0LCAyNywgNywgMjUzLCAyMjMsIDI3LCA3LCAyNTMsIDIyMiwgMjcsIDcsIDI1MywgMjIxLCAyNywgNywgMjUzLCAyMjAsIAorICAgIDI3LCA3LCAyNTMsIDIxOSwgMjcsIDcsIDI1MywgMjE4LCAyNywgNywgMjUzLCAyMTcsIDI3LCA3LCAyNTMsIDIxNiwgMjcsIAorICAgIDcsIDI1MywgMjE1LCAyNywgNywgMjUzLCAyMTQsIDI3LCA3LCAyNTMsIDIxMywgMjcsIDcsIDI1MywgMjEyLCAyNywgNywgCisgICAgMjUzLCAyMTEsIDI3LCA3LCAyNTMsIDIxMCwgMjcsIDcsIDI1MywgMjA5LCAyNywgNywgMjUzLCAyMDgsIDI3LCA3LCAyNTMsIAorICAgIDIwNywgMjcsIDcsIDI1MywgMjA2LCAyNywgNywgMjUzLCAyMDUsIDI3LCA3LCAyNTMsIDIwNCwgMjcsIDcsIDI1MywgMjAzLCAKKyAgICAyNywgNywgMjUzLCAyMDIsIDI3LCA3LCAyNTMsIDIwMSwgMjcsIDcsIDI1MywgMjAwLCAyNywgNywgMjUzLCAxOTksIDI3LCAKKyAgICA3LCAyNTMsIDE5OCwgMjcsIDcsIDI1MywgMTk3LCAyNywgNywgMjUzLCAxOTYsIDI3LCA3LCAyNTMsIDE5NSwgMjcsIDcsIAorICAgIDI1MywgMTk0LCAyNywgNywgMjUzLCAxOTMsIDI3LCA3LCAyNTMsIDE5MiwgMjcsIDcsIDI1MywgMTkxLCAyNywgNywgMjUzLCAKKyAgICAxOTAsIDI3LCA3LCAyNTMsIDE4OSwgMjcsIDcsIDI1MywgMTg4LCAyNywgNywgMjUzLCAxODcsIDI3LCA3LCAyNTMsIDE4NiwgCisgICAgMjcsIDcsIDI1MywgMTg1LCAyNywgNywgMjUzLCAxODQsIDI3LCA3LCAyNTMsIDE4MywgMjcsIDcsIDI1MywgMTgyLCAyNywgCisgICAgNywgMjUzLCAxODEsIDI3LCA3LCAyNTMsIDE4MCwgMjcsIDcsIDI1MywgMTc5LCAyNywgNywgMjUzLCAxNzcsIDI3LCA3LCAKKyAgICAyNTMsIDE3NiwgMjcsIDcsIDI1MywgMTc1LCAyNywgNywgMjUzLCAxNzQsIDI3LCA3LCAyNTMsIDE3MywgMjcsIDcsIDI1MywgCisgICAgMTcyLCAyNywgNywgMjUzLCAxNzEsIDI3LCA3LCAyNTMsIDE3MCwgMjcsIDcsIDI1MywgMTY5LCAyNywgNywgMjUzLCAxNjgsIAorICAgIDI3LCA3LCAyNTMsIDE2NywgMjcsIDcsIDI1MywgMTY0LCAyNywgNywgMjUzLCAxNjMsIDI3LCA3LCAyNTMsIDE2MiwgMjcsIAorICAgIDcsIDI1MywgMTYxLCAyNywgNywgMjUzLCAxNTcsIDI3LCA3LCAyNTMsIDE1NiwgMjcsIDcsIDI1MywgMTU1LCAyNywgNywgCisgICAgMjUzLCAxNTQsIDI3LCA3LCAyNTMsIDE1MywgMjcsIDcsIDI1MywgMTUyLCAyNywgNywgMjUzLCAxNTEsIDI3LCA3LCAyNTMsIAorICAgIDE1MCwgMjcsIDcsIDI1MywgMTQ5LCAyNywgNywgMjUzLCAxNDgsIDI3LCA3LCAyNTMsIDE0NywgMjcsIDcsIDI1MywgMTQ2LCAKKyAgICAyNywgNywgMjUzLCAxNDUsIDI3LCA3LCAyNTMsIDE0NCwgMjcsIDcsIDI1MywgMTQzLCAyNywgNywgMjUzLCAxNDIsIDI3LCAKKyAgICA3LCAyNTMsIDE0MSwgMjcsIDcsIDI1MywgMTQwLCAyNywgNywgMjUzLCAxMzksIDI3LCA3LCAyNTMsIDEzNywgMjcsIDcsIAorICAgIDI1MywgMTM2LCAyNywgNywgMjUzLCAxMzUsIDI3LCA3LCAyNTMsIDEzNCwgMjcsIDcsIDI1MywgMTMzLCAyNywgNywgMjUzLCAKKyAgICAxMzIsIDI3LCA3LCAyNTMsIDEzMSwgMjcsIDcsIDI1MywgMTMwLCAyNywgNywgMjUzLCAxMjksIDI3LCA3LCAyNTMsIDEyOCwgCisgICAgMjcsIDcsIDI1MywgMTI3LCAyNywgNywgMjUzLCAxMjYsIDI3LCA3LCAyNTMsIDEyNSwgMjcsIDcsIDI1MywgMTI0LCAyNywgCisgICAgNywgMjUzLCAxMjMsIDI3LCA3LCAyNTMsIDEyMiwgMjcsIDcsIDI1MywgMTIxLCAyNywgNywgMjUzLCAxMjAsIDI3LCA3LCAKKyAgICAyNTMsIDExOSwgMjcsIDcsIDI1MywgMTE4LCAyNywgNywgMjUzLCAxMTcsIDI3LCA3LCAyNTMsIDExNiwgMjcsIDcsIDI1MywgCisgICAgMTE1LCAyNywgNywgMjUzLCAxMTQsIDI3LCA3LCAyNTMsIDExMywgMjcsIDcsIDI1MywgMTEyLCAyNywgNywgMjUzLCAxMTEsIAorICAgIDI3LCA3LCAyNTMsIDExMCwgMjcsIDcsIDI1MywgMTA5LCAyNywgNywgMjUzLCAxMDgsIDI3LCA3LCAyNTMsIDEwNywgMjcsIAorICAgIDcsIDI1MywgMTA2LCAyNywgNywgMjUzLCAxMDUsIDI3LCA3LCAyNTMsIDEwNCwgMjcsIDcsIDI1MywgMTAzLCAyNywgNywgCisgICAgMjUzLCAxMDIsIDI3LCA3LCAyNTMsIDEwMSwgMjcsIDcsIDI1MywgMTAwLCAyNywgNywgMjUzLCA5OSwgMjcsIDcsIDI1MywgCisgICAgOTgsIDI3LCA3LCAyNTMsIDk3LCAyNywgNywgMjUzLCA5NiwgMjcsIDcsIDI1MywgOTUsIDI3LCA3LCAyNTMsIDk0LCAyNywgCisgICAgNywgMjUzLCA5MywgMjcsIDcsIDI1MywgOTIsIDI3LCA3LCAyNTMsIDkxLCAyNywgNywgMjUzLCA5MCwgMjcsIDcsIDI1MywgCisgICAgODksIDI3LCA3LCAyNTMsIDg4LCAyNywgNywgMjUzLCA4NywgMjcsIDcsIDI1MywgODYsIDI3LCA3LCAyNTMsIDg1LCAyNywgCisgICAgNywgMjUzLCA4NCwgMjcsIDcsIDI1MywgODMsIDI3LCA3LCAyNTMsIDgyLCAyNywgNywgMjUzLCA4MSwgMjcsIDcsIDI1MywgCisgICAgODAsIDI3LCA3LCAyNTMsIDc5LCAyNywgNywgMjUzLCA3OCwgMjcsIDcsIDI1MywgNzcsIDI3LCA3LCAyNTMsIDc2LCAyMTYsIAorICAgIDIyMSwgMjE5LCAyNDUsIDIxNiwgNTcsIDI3LCA3LCAyNTMsIDc1LCAyNywgNywgMjUzLCA3NCwgMjcsIDcsIDI1MywgNzMsIAorICAgIDI3LCA3LCAyNTMsIDcyLCAyNywgNywgMjUzLCA3MSwgMjcsIDcsIDI1MywgNzAsIDI3LCA3LCAyNTMsIDY5LCAyNywgNywgCisgICAgMjUzLCA2OCwgMjcsIDcsIDI1MywgNjcsIDI3LCA3LCAyNTMsIDY2LCAyNywgNywgMjUzLCA2NSwgMjcsIDcsIDI1MywgNjQsIAorICAgIDE5OSwgMjcsIDcsIDI1MywgNjMsIDI3LCA3LCAyNTMsIDYyLCAyNywgNywgMjUzLCA2MSwgMjcsIDcsIDI1MywgNjAsIDI3LCAKKyAgICA3LCAyNTMsIDU5LCAyNywgNywgMjUzLCA1OCwgMjcsIDcsIDI1MywgNTcsIDI3LCA3LCAyNTMsIDU1LCAyNywgNywgMjUzLCAKKyAgICA1MywgMjcsIDcsIDI1MywgNTEsIDI3LCA3LCAyNTMsIDQ5LCAyNywgNywgMjUzLCA0NywgMjcsIDcsIDI1MywgNDUsIDI3LCAKKyAgICA3LCAyNTMsIDQzLCAyNywgNywgMjUzLCA0MSwgMjcsIDcsIDI1MywgMzksIDI3LCA3LCAyNTMsIDM3LCAyNDgsIDE0MiwgCisgICAgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM1LCAyNDEsIDg0LCAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzQsIDI3LCA3LCAKKyAgICAyNTMsIDMyLCAyNywgNywgMjUzLCAzMCwgMjcsIDcsIDI1MywgMjgsIDI3LCA3LCAyNTMsIDI2LCAyNywgNywgMjUzLCAyNCwgCisgICAgMjcsIDcsIDI1MywgMjIsIDI3LCA3LCAyNTMsIDIwLCAyNywgNywgMjUzLCAxOCwgMjcsIDcsIDI1MywgMTcsIDI3LCA3LCAKKyAgICAyNTMsIDE2LCAyNywgNywgMjUzLCAxNSwgMjcsIDcsIDI1MywgMTQsIDI3LCA3LCAyNTMsIDEzLCAyNywgNywgMjUzLCAxMiwgCisgICAgMjcsIDcsIDI1MywgMTEsIDI3LCA3LCAyNTMsIDEwLCAyNywgNywgMjUzLCA5LCAyNywgNywgMjUzLCA4LCAyNywgNywgMjUzLCAKKyAgICA3LCAyNywgNywgMjUzLCA2LCAyNywgNywgMjUzLCA1LCAyNywgNywgMjUzLCA0LCAyNywgNywgMjUzLCAzLCAyNywgNywgCisgICAgMjUzLCAyLCAyNywgNywgMjUzLCAxLCAyNywgNywgMjUzLCAwLCAyNywgNywgMjUyLCAyNTUsIDI3LCA3LCAyNTIsIDI1NCwgCisgICAgMjcsIDcsIDI1MiwgMjUzLCAyNywgNywgMjUyLCAyNTIsIDI3LCA3LCAyNTIsIDI1MSwgMjcsIDcsIDI1MiwgMjUwLCAyNywgCisgICAgNywgMjUyLCAyNDksIDI3LCA3LCAyNTIsIDI0OCwgMjcsIDcsIDI1MiwgMjQ3LCAyNywgNywgMjUyLCAyNDYsIDI3LCA3LCAKKyAgICAyNTIsIDI0NSwgMjcsIDcsIDI1MiwgMjQ0LCAyNywgNywgMjUyLCAyNDMsIDI3LCA3LCAyNTIsIDI0MiwgMjcsIDcsIDI1MiwgCisgICAgMjQxLCAyNywgNywgMjUyLCAyNDAsIDI3LCA3LCAyNTIsIDIzOSwgMjcsIDcsIDI1MiwgMjM4LCAyNywgNywgMjUyLCAyMzcsIAorICAgIDI3LCA3LCAyNTIsIDIzNiwgMjcsIDcsIDI1MiwgMjM1LCAyNywgNywgMjUyLCAyMzQsIDI3LCA3LCAyNTIsIDIzMywgMjcsIAorICAgIDcsIDI1MiwgMjMyLCAyNywgNywgMjUyLCAyMzEsIDI3LCA3LCAyNTIsIDIzMCwgMjcsIDcsIDI1MiwgMjI5LCAyNywgNywgCisgICAgMjUyLCAyMjgsIDI3LCA3LCAyNTIsIDIyNywgMjcsIDcsIDI1MiwgMjI2LCAyNywgNywgMjUyLCAyMjUsIDI3LCA3LCAyNTIsIAorICAgIDIyNCwgMjcsIDcsIDI1MiwgMjIzLCAyNywgNywgMjUyLCAyMjIsIDI3LCA3LCAyNTIsIDIyMSwgMjcsIDcsIDI1MiwgMjIwLCAKKyAgICAyNywgNywgMjUyLCAyMTksIDI3LCA3LCAyNTIsIDIxOCwgMjcsIDcsIDI1MiwgMjE3LCAyNywgNywgMjUyLCAyMTYsIDI3LCAKKyAgICA3LCAyNTIsIDIxNSwgMjcsIDcsIDI1MiwgMjE0LCAyNywgNywgMjUyLCAyMTMsIDI3LCA3LCAyNTIsIDIxMiwgMjcsIDcsIAorICAgIDI1MiwgMjExLCAyNywgNywgMjUyLCAyMTAsIDI3LCA3LCAyNTIsIDIwOSwgMjcsIDcsIDI1MiwgMjA4LCAyNywgNywgMjUyLCAKKyAgICAyMDcsIDI3LCA3LCAyNTIsIDIwNiwgMjcsIDcsIDI1MiwgMjA1LCAyNywgNywgMjUyLCAyMDQsIDI3LCA3LCAyNTIsIDIwMywgCisgICAgMjcsIDcsIDI1MiwgMjAyLCAyNywgNywgMjUyLCAyMDEsIDI3LCA3LCAyNTIsIDIwMCwgMjcsIDcsIDI1MiwgMTk5LCAyNywgCisgICAgNywgMjUyLCAxOTgsIDI3LCA3LCAyNTIsIDE5NywgMjcsIDcsIDI1MiwgMTk2LCAyNywgNywgMjUyLCAxOTUsIDI3LCA3LCAKKyAgICAyNTIsIDE5NCwgMjcsIDcsIDI1MiwgMTkzLCAyNywgNywgMjUyLCAxOTIsIDI3LCA3LCAyNTIsIDE5MSwgMjcsIDcsIDI1MiwgCisgICAgMTkwLCAyNywgNywgMjUyLCAxODksIDI3LCA3LCAyNTIsIDE4OCwgMjcsIDcsIDI1MiwgMTg3LCAyNywgNywgMjUyLCAxODYsIAorICAgIDI3LCA3LCAyNTIsIDE4NSwgMjcsIDcsIDI1MiwgMTg0LCAyNywgNywgMjUyLCAxODMsIDI3LCA3LCAyNTIsIDE4MiwgMjcsIAorICAgIDcsIDI1MiwgMTgxLCAyNywgNywgMjUyLCAxODAsIDI3LCA3LCAyNTIsIDE3OSwgMjcsIDcsIDI1MiwgMTc4LCAyNywgNywgCisgICAgMjUyLCAxNzcsIDI3LCA3LCAyNTIsIDE3NiwgMjcsIDcsIDI1MiwgMTc1LCAyNywgNywgMjUyLCAxNzQsIDI3LCA3LCAyNTIsIAorICAgIDE3MywgMjcsIDcsIDI1MiwgMTcyLCAyNywgNywgMjUyLCAxNzEsIDI3LCA3LCAyNTIsIDE3MCwgMjcsIDcsIDI1MiwgMTY5LCAKKyAgICAyNywgNywgMjUyLCAxNjgsIDI3LCA3LCAyNTIsIDE2NywgMjcsIDcsIDI1MiwgMTY2LCAyNywgNywgMjUyLCAxNjUsIDI3LCAKKyAgICA3LCAyNTIsIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDEzNiwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAKKyAgICAxOTgsIDIzOSwgMTc4LCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxMDcsIDIyNCwgMTk3LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTk1LCAyNCwgMSwgMjE4LCAxOTgsIDIwOCwgMTk5LCAyMjQsIDE5NywgMjQsIDEsIAorICAgIDIxOCwgMTk4LCAyMjAsIDIxNSwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyNTQsIDIxOSwgMTY5LCAyMjIsIAorICAgIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTYsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjA3LCAyMDQsIDIyNSwgMTU3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTk3LCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyNSwgMTUzLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTExLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTg2LCAyNCwgCisgICAgMSwgMjE4LCAxOTgsIDIxMywgMTE0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKKyAgICAxNjMsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMCwgMTc5LCAyNCwgMSwgMjE4LCAxOTgsIAorICAgIDIyMiwgMTM1LCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAxNzYsIDIyOCwgMTc1LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjQsIDIwNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE2MCwgMjQsIDEsIAorICAgIDIxOCwgMTk4LCAyMTksIDYyLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTI1LCAKKyAgICAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgNTUsIDIyMiwgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMTk2LCAyMjQsIDIwOCwgCisgICAgMjQsIDEsIDIxOCwgMTk4LCAxMDYsIDIwMiwgMTg4LCAyMjMsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMSwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjIxLCAxMDIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCA5MSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMjQsIDE5MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDMxLCAyNCwgCisgICAgMSwgMjE4LCAxOTgsIDIzMCwgMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjksIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMywgMjYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgMjE5LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgCisgICAgMTU0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNzQsIDI0LCAxLCAyMTgsIDE5OCwgMjE3LCAxNzIsIDI0LCAxLCAyMTgsIAorICAgIDE5OCwgMjA3LCAyMDEsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNTEsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjA5LCAxMTcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKKyAgICAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAyMiwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDE4OCwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMjQsIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMjksIDI0LCAxLCAKKyAgICAyMTgsIDE5OCwgMjM5LCAyNDYsIDI0LCAxLCAyMTgsIDE5OCwgMjE1LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAyMzMsIAorICAgIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMDcsIDIxOCwgMTU3LCAyNCwgMSwgCisgICAgMjE4LCAxOTgsIDIxMiwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjMwLCAKKyAgICAyMjEsIDExMSwgMjAyLCAxOTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyMzcsIDIyNCwgNTEsIDI0LCAxLCAyMTgsIDE5OCwgCisgICAgMjE5LCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyLCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgMjMxLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMiwgMTczLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNDQsIDI0LCAKKyAgICAxLCAyMTgsIDE5OCwgMjI1LCA0OSwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMDksIAorICAgIDEyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2NSwgMjQsIDEsIDIxOCwgCisgICAgMTk4LCAyMjEsIDExNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1OCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI0OCwgMjQsIAorICAgIDEsIDIxOCwgMTk4LCAyMjksIDI0MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIAorICAgIDUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMjMwLCAyNCwgMSwgMjE4LCAKKyAgICAxOTgsIDIyMywgNzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCA0OCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDExMywgMjQsIDEsIAorICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjI1LCAxNTUsIDI0LCAxLCAyMTgsIDE5NywgMjEyLCAxNTIsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjEzLCAxMTgsIDIwNywgMjAzLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMzEsIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjI1LCA1NSwgMjI1LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCA5MiwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDE4LCAKKyAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNTAsIDI0LCAxLCAyMTgsIDE5NywgMjMwLCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgCisgICAgMTksIDI0LCAxLCAyMTgsIDE5NywgMjAzLCA5NiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5NywgMjI4LCAyOSwgMjIxLCAKKyAgICAxMTEsIDIyMSwgNiwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDk0LCAyMTMsIDE3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgCisgICAgMjQ5LCAyMjIsIDQ3LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTgsIDI0LCAxLCAyMTgsIDE5NywgMjE4LCAxMDUsIDI0LCAxLCAKKyAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyMSwgMTA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxMywgMjIsIDIyMiwgNDIsIDI0LCAxLCAKKyAgICAyMTgsIDE5NywgMjEzLCAxOCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDE5OCwgMjA5LCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjI1LCAzNywgMjI1LCA1MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjAsIDI0OSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyMjksIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTU1LCAyNCwgMSwgCisgICAgMjE4LCAxOTcsIDIyOCwgMTA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgNjUsIDI0LCAxLCAyMTgsIDE5NywgMjA1LCAyMzcsIAorICAgIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMzcsIDIyMywgMTg0LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTcyLCAyMjUsIDMzLCAKKyAgICAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMjE1LCAyNCwgMSwgMjE4LCAxOTcsIDIxNSwgMTIsIDI0LCAxLCAyMTgsIDE5NywgCisgICAgMjEwLCAxNCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIxMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE1NiwgMjQsIDEsIAorICAgIDIxOCwgMTk3LCAyMjIsIDE1NywgMjI4LCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjAwLCAyNCwgMSwgMjE4LCAxOTcsIAorICAgIDIxMCwgMjMwLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNDEsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAzNiwgMjQsIDEsIDIxOCwgCisgICAgMTk3LCAyMjEsIDksIDI0LCAxLCAyMTgsIDE5NywgMjE3LCAxNzYsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDksIDIyMiwgCisgICAgMTc0LCAyNCwgMSwgMjE4LCAxOTcsIDI0MCwgMzEsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAyOCwgMjQsIDEsIDIxOCwgMTk3LCAKKyAgICAyNDAsIDUzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTY3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDM2LCAKKyAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMTc1LCAyNCwgMSwgCisgICAgMjE4LCAxOTcsIDIyMiwgMTgwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIDE5MiwgMjQsIAorICAgIDEsIDIxOCwgMTk3LCAyMjksIDc3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDEzNiwgCisgICAgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyMCwgMjE0LCAyNCwgMSwgMTY4LCAyMDIsIDE5NiwgMjQsIDEsIDE2OCwgMjA0LCAKKyAgICA5NSwgMjQsIDEsIDE2OCwgMjIyLCAxNzMsIDI0LCAxLCAxNjgsIDIyMywgMTQsIDI0LCAxLCAxNjgsIDIyMiwgMTQzLCAyNCwgCisgICAgMSwgMTY4LCAyMzgsIDEwOCwgMjQsIDEsIDE2OCwgMjI1LCA0NSwgMjQsIDEsIDE2OCwgMjM4LCAyMDUsIDI0LCAxLCAxNjgsIAorICAgIDIyMCwgMjM5LCAyMjQsIDkxLCAyMjQsIDIxMiwgMjQsIDEsIDE2OCwgMjIxLCA4OSwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgCisgICAgMjI1LCA0MiwgMjQsIDEsIDE2OCwgMjE4LCAxMTEsIDI0LCAxLCAxNjgsIDIyMiwgMjU1LCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAKKyAgICAyNDcsIDg4LCAyNCwgMSwgMTY4LCAyMjksIDE1NywgMjQsIDEsIDE2OCwgMjM4LCAxMDksIDI0LCAxLCAxNjgsIDIyOSwgCisgICAgMTY0LCAyNCwgMSwgMTY4LCAyMDIsIDIxNCwgMjIzLCAyMTUsIDI0LCAxLCAxNjgsIDIyMCwgMjA4LCAyNCwgMSwgMTY4LCAKKyAgICAyMjUsIDMwLCAyNCwgMSwgMTY4LCAyMjEsIDExOSwgMjQsIDEsIDE2OCwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgMjAzLCAxOSwgCisgICAgMjQsIDEsIDE2OCwgMjI4LCAyNDEsIDI0LCAxLCAxNjgsIDIzMCwgNDEsIDI0LCAxLCAxNjgsIDIxMywgMTEzLCAyNCwgMSwgCisgICAgMTY4LCAyMjMsIDgsIDI0LCAxLCAxNjgsIDIxMCwgMTIsIDI0LCAxLCAxNjgsIDIyMiwgMTYsIDI0LCAxLCAxNjgsIDIwOCwgCisgICAgMTk5LCAyMDIsIDE5OSwgMjQsIDEsIDE2OCwgMjExLCA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MywgMjIxLCA2LCAyNCwgMSwgCisgICAgMTY4LCAyMDUsIDIzNiwgMjQsIDEsIDE2OCwgMjIzLCA3OCwgMjQsIDEsIDE2OCwgMjI1LCAxNzcsIDIyOSwgMTY2LCAyNCwgCisgICAgMSwgMTY4LCAyMjEsIDEwMiwgMjQsIDEsIDE2OCwgMjIyLCAxNTgsIDI0LCAxLCAxNjgsIDIyOCwgMTEsIDI0LCAxLCAxNjgsIAorICAgIDIyNSwgMzgsIDI0LCAxLCAxNjgsIDIyNCwgMTg5LCAyNCwgMSwgMTY4LCAyMjEsIDk2LCAyNCwgMSwgMTY4LCAyMDksIDExNiwgCisgICAgMjQsIDEsIDE2OCwgMjIyLCAxNjAsIDI0LCAxLCAxNjgsIDIzOSwgMTA2LCAyNCwgMSwgMTY4LCAyMjMsIDEzLCAyNCwgMSwgCisgICAgMTY4LCAyMjEsIDEyMSwgMjQsIDEsIDE2OCwgMjIxLCAxMTcsIDI0LCAxLCAxNjgsIDI0NywgMTY5LCAyNCwgMSwgMTY4LCAKKyAgICAyMDUsIDIzOCwgMjQsIDEsIDE2OCwgMjI1LCA0MywgMjQsIDEsIDE2OCwgMjE1LCAxNDUsIDI0LCAxLCAxNjgsIDIyMiwgNDYsIAorICAgIDI0LCAxLCAxNjgsIDIyOCwgMjgsIDI0LCAxLCAxNjgsIDIwOCwgMTk2LCAyNCwgMSwgMTY4LCAyMjEsIDEwMywgMjIyLCAKKyAgICAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMzgsIDI0LCAxLCAxNjgsIDIyOSwgMTcwLCAyNCwgMSwgMTY4LCAyMjIsIDE2NSwgMjQsIAorICAgIDEsIDE2OCwgMjI1LCAxNTAsIDI0LCAxLCAxNjgsIDIyNSwgMzEsIDI0LCAxLCAxNjgsIDIyNiwgMjM5LCAyNCwgMSwgMTY4LCAKKyAgICAyMjgsIDE3NSwgMjQsIDEsIDE2OCwgMjIyLCA0NCwgMjQsIDEsIDE2OCwgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIwMywgCisgICAgMjA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MSwgMjQsIDEsIDE2OCwgMjIxLCAxMDYsIDI0LCAxLCAxNjgsIDIyMSwgOTgsIDI0LCAKKyAgICAxLCAxNjgsIDIyOCwgMTkwLCAyMjIsIDIsIDI0LCAxLCAxNjgsIDIyMSwgMTA0LCAyNCwgMSwgMTY4LCAyMjMsIDIxLCAyNCwgCisgICAgMSwgMTY4LCAyMjUsIDE3NywgMjIxLCAxMDksIDI0LCAxLCAxNjgsIDIwMywgMTEwLCAyNCwgMSwgMTY4LCAyMjMsIDIwLCAKKyAgICAyNCwgMSwgMTY4LCAyMTIsIDE5NCwgMjQsIDEsIDE2OCwgMjEzLCAxMTYsIDI0LCAxLCAxNjgsIDIyNSwgMzksIDI0LCAxLCAKKyAgICAxNjgsIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjUsIDQ5LCAyNCwgMSwgMTY4LCAyMjksIDE1OCwgMjQsIDEsIDE2OCwgCisgICAgMjI1LCA0MCwgMjQsIDEsIDE2OCwgMjI5LCAxNjIsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIDIxOCwgMTYyLCAyNCwgMSwgMTY4LCAKKyAgICAyMDIsIDE3OSwgMjQsIDEsIDE2OCwgMjIyLCAzNCwgMjQsIDEsIDE2OCwgMjI0LCAxNDQsIDI0LCAxLCAxNjgsIDIyMywgCisgICAgMjQ0LCAyNCwgMSwgMTY4LCAyMTIsIDI1MCwgMjQsIDEsIDE2OCwgMjI5LCAxODEsIDIyNywgMjQ2LCAyNCwgMSwgMTY4LCAKKyAgICAyMjksIDE4MSwgMjQwLCA2NiwgMjQsIDEsIDE2OCwgMjIyLCAxOTUsIDI0LCAxLCAxNjgsIDIyMywgNzUsIDI0LCAxLCAxNjgsIAorICAgIDIyNywgOTYsIDI0LCAxLCAxNjgsIDIxOCwgMTIzLCAyNCwgMSwgMTY4LCAyMTksIDksIDI0LCAxLCAxNjgsIDIwOSwgMTMyLCAKKyAgICAyNCwgMSwgMTM0LCAyMjUsIDI5LCAyNCwgMSwgMTM0LCAyMDQsIDkzLCAyNCwgMSwgMTM0LCAyMjIsIDMyLCAyNCwgMSwgCisgICAgMTM0LCAyMjQsIDE5NywgMjQsIDEsIDEzNCwgMjIyLCAzMCwgMjQsIDEsIDEzNCwgMjI3LCAxNDEsIDI0LCAxLCAxMzQsIAorICAgIDIyMiwgMzUsIDI0LCAxLCAxMzQsIDIyMSwgMTE2LCAyNCwgMSwgMTM0LCAyMjIsIDE3OSwgMjQsIDEsIDEzNCwgMjIxLCA2LCAKKyAgICAyNCwgMSwgMTM0LCAyMDMsIDIxNiwgMjQsIDEsIDEzNCwgMjIyLCAxMzMsIDI0LCAxLCAxMzQsIDIxMywgNDEsIDI0LCAxLCAKKyAgICAxMzQsIDIyMiwgMTQ0LCAyNCwgMSwgMTM0LCAyMjksIDE2NSwgMjQsIDEsIDEzNCwgMjA5LCAxMTgsIDI0LCAxLCAxMzQsIAorICAgIDIxMywgMjAsIDI0LCAxLCAxMzQsIDIyMiwgNDMsIDI0LCAxLCAxMzQsIDIxMCwgMjMwLCAyNCwgMSwgMTM0LCAyMjksIDE3MCwgCisgICAgMjQsIDEsIDEzNCwgMjAzLCA5OCwgMjQsIDEsIDEzNCwgMjI4LCAxOTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMzLCAyNCwgMSwgCisgICAgMTM0LCAyMjQsIDIwMiwgMjQsIDEsIDEzNCwgMjIzLCAxMiwgMjQsIDEsIDEzNCwgMjI1LCAxMjUsIDI0LCAxLCAxMzQsIAorICAgIDIyNCwgMjA4LCAyNCwgMSwgMTM0LCAyMTMsIDExNSwgMjQsIDEsIDEzNCwgMjAzLCA0MiwgMjQsIDEsIDEzNCwgMjIyLCAzNywgCisgICAgMjQsIDEsIDEzNCwgMjI5LCAxNjEsIDIyNSwgMzIsIDI0LCAxLCAxMzQsIDIyMiwgMTQwLCAyNCwgMSwgMTM0LCAyMDcsIAorICAgIDIwMywgMjQsIDEsIDEzNCwgMjM4LCAxMTgsIDI0LCAxLCAxMzQsIDIyMiwgMTMwLCAyNCwgMSwgMTM0LCAyNDAsIDMyLCAyNCwgCisgICAgMSwgMTM0LCAyMjMsIDE2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MSwgMjQsIDEsIDEzNCwgMjI3LCAxNjksIDI0LCAxLCAxMzQsIAorICAgIDIyMiwgMjU0LCAyNCwgMSwgMTM0LCAyMjQsIDUwLCAyNCwgMSwgMTM0LCAyMjQsIDE4NSwgMjQsIDEsIDEzNCwgMjE3LCAKKyAgICAxNTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgzLCAyNCwgMSwgMTM0LCAyMjQsIDE5OSwgMjQsIDEsIDEzNCwgMjI2LCAyMjIsIAorICAgIDI0LCAxLCAxMzQsIDIyMSwgMTA4LCAyNCwgMSwgMTM0LCAyMjUsIDUyLCAyNCwgMSwgMTM0LCAyMjgsIDE2NSwgMjQsIDEsIAorICAgIDEzNCwgMjIwLCAyNTEsIDI0LCAxLCAxMzQsIDIwOSwgMTIxLCAyNCwgMSwgMTM0LCAyMTEsIDI0NCwgMjQsIDEsIDEzNCwgCisgICAgMjAyLCAxNzksIDI0LCAxLCAxMzQsIDIyOSwgMTYyLCAyNCwgMSwgMTM0LCAyMTYsIDIwMSwgMjQsIDEsIDEzNCwgMjA5LCAKKyAgICAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTQxLCAyNCwgMSwgMTM0LCAyMjQsIDIwNCwgMjQsIDEsIDEzNCwgMjIxLCAxMDcsIAorICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYwLCAyNCwgMSwgMTM0LCAyMTgsIDExNywgMjQsIDEsIDEzNCwgMjE4LCAyMTMsIDI0LCAxLCAKKyAgICAxMzQsIDIyMCwgMjI1LCAyNCwgMSwgMTM0LCAyMjcsIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxODAsIDI0LCAxLCAxMzQsIAorICAgIDIyNCwgMjAxLCAyNCwgMSwgMTM0LCAyMjIsIDE1MywgMjQsIDEsIDEzNCwgMjAyLCAxOTMsIDI0LCAxLCAxMzQsIDIxOSwgCisgICAgOTYsIDI0LCAxLCAxMzQsIDIwMiwgMTkyLCAyNCwgMSwgMTM0LCAyMjMsIDIxLCAyNCwgMSwgMTM0LCAyMjEsIDk3LCAyNCwgCisgICAgMSwgMTM0LCAyMTEsIDcsIDI0LCAxLCAxMzQsIDIyOCwgMTk1LCAyNCwgMSwgMTM0LCAyMjIsIDE2OSwgMjQsIDEsIDEzNCwgCisgICAgMjIyLCAxMzgsIDI0LCAxLCAxMzQsIDIwNywgMTg1LCAyNCwgMSwgMTM0LCAyMjQsIDIxMiwgMjQsIDEsIDEzNCwgMjI4LCAKKyAgICAxODUsIDI0LCAxLCAxMzQsIDIyMSwgMTA1LCAyNCwgMSwgMTM0LCAyMDksIDExOSwgMjQsIDEsIDEzNCwgMjI1LCAxNTIsIAorICAgIDI0LCAxLCAxMzQsIDIyMiwgMTc4LCAyNCwgMSwgMTM0LCAyMjcsIDE2OCwgMjQsIDEsIDEzNCwgMjIyLCAxNTksIDI0LCAxLCAKKyAgICAxMzQsIDIyMSwgMTEwLCAyNCwgMSwgMTM0LCAyMjIsIDE2LCAyNCwgMSwgMTM0LCAyMzgsIDEwMiwgMjQsIDEsIDEzNCwgCisgICAgMjI4LCAyMDksIDI0LCAxLCAxMzQsIDIxNiwgMTA4LCAyMjAsIDQ1LCAyNCwgMSwgMTM0LCAyMTAsIDEsIDI0LCAxLCAxMzQsIAorICAgIDIwOCwgMTQxLCAyNCwgMSwgMTM0LCAyMjAsIDI0OCwgMjQsIDEsIDEzNCwgMjE2LCAzLCAyNCwgMSwgMTM0LCAyMjcsIDIyNSwgCisgICAgMjQsIDEsIDEzNCwgMjI1LCA3LCAyNCwgMSwgMTM0LCAyMjYsIDE4NSwgMjQsIDEsIDEzNCwgMjEwLCAxNzksIDI0LCAxLCAKKyAgICAxMzQsIDIyMywgMjQ2LCAyNCwgMSwgMTM0LCAyMTMsIDYsIDI0LCAxLCAxMzQsIDIxMywgMTYsIDI0LCAxLCAxMzQsIDIyOCwgCisgICAgMTM3LCAyNCwgMSwgMTM0LCAyMjEsIDg0LCAyNCwgMSwgMTM0LCAyMTIsIDE5OSwgMjQsIDEsIDEzNCwgMjIxLCA5OSwgMjQsIAorICAgIDEsIDEzNCwgMjE5LCAyMywgMjQsIDEsIDEzNCwgMjIyLCAxMDAsIDI0LCAxLCAxMzQsIDIxMiwgMjI5LCAyNCwgMSwgMTM0LCAKKyAgICAyMTcsIDE3MSwgMjQsIDEsIDEzNCwgMjIzLCAxODQsIDI0LCAxLCAxMzQsIDIyNywgMTAsIDI0LCAxLCAxMzQsIDIxNiwgCisgICAgMTA4LCAyMjMsIDIzOSwgMjQsIDEsIDEzNCwgMjA5LCAyLCAyNCwgMSwgMTM0LCAyMjEsIDg2LCAyNCwgMSwgMTM0LCAyMjUsIAorICAgIDUzLCAyMTMsIDExMSwgMjQsIDEsIDEzNCwgMjE0LCAyMzEsIDI0LCAxLCAxMzQsIDI0MCwgMTA3LCAyNCwgMSwgOTMsIDIyMywgCisgICAgMjAsIDI0LCAxLCA5MywgMjA4LCAxNDcsIDI0LCAxLCA5MywgMjI1LCA0MiwgMjQsIDEsIDkzLCAyMjgsIDExLCAyNCwgMSwgCisgICAgOTMsIDIwNSwgMTc3LCAyNCwgMSwgOTMsIDIyNywgMTYsIDI0LCAxLCA5MywgMjE5LCAxNjgsIDI0LCAxLCA5MywgMjExLCAKKyAgICAyNTUsIDI0LCAxLCA5MywgMjE2LCAxNzYsIDI0LCAxLCA5MywgMjIxLCAxMTIsIDI0LCAxLCA5MywgMjIyLCAyNDcsIDI0LCAKKyAgICAxLCA5MywgMjE3LCAxODgsIDI0LCAxLCA5MywgMjA5LCAyMzIsIDI0LCAxLCA5MywgMjIyLCAxNDYsIDI0LCAxLCA5MywgCisgICAgMjI4LCAyMzcsIDI0LCAxLCA5MywgMjAzLCAyMDgsIDI0LCAxLCA5MywgMjE0LCAxNjUsIDI0LCAxLCA5MywgMjIyLCAxNzAsIAorICAgIDI0LCAxLCA5MywgMjE5LCAxNjUsIDI0LCAxLCA5MywgMjA4LCAxNDgsIDI0LCAxLCA5MywgMjI4LCAxODksIDI0LCAxLCA5MywgCisgICAgMjI3LCAzMCwgMjQsIDEsIDkzLCAyMjEsIDExNSwgMjQsIDEsIDkzLCAyMjIsIDEyMiwgMjQsIDEsIDkzLCAyMjUsIDE1OCwgCisgICAgMjQsIDEsIDkzLCAyMjIsIDEzOSwgMjQsIDEsIDkzLCAyMjIsIDEyMSwgMjQsIDEsIDkzLCAyMjEsIDExNCwgMjQsIDEsIDkzLCAKKyAgICAyMTYsIDAsIDI0LCAxLCA5MywgMjIyLCAzNCwgMjQsIDEsIDkzLCAyMTksIDIxLCAyNCwgMSwgOTMsIDIxNSwgMzMsIDI0LCAKKyAgICAxLCA5MywgMjIyLCAxNTQsIDI0LCAxLCA5MywgMjI0LCAxOTEsIDI0LCAxLCA5MywgMjM4LCA5NiwgMjQsIDEsIDkzLCAyMjIsIAorICAgIDE0MiwgMjQsIDEsIDkzLCAyMjIsIDQ1LCAyNCwgMSwgOTMsIDIyNSwgMTA2LCAyNCwgMSwgOTMsIDIyNywgMTIsIDI0LCAxLCAKKyAgICA5MywgMjIyLCAxNzUsIDI0LCAxLCA5MywgMjIzLCA0LCAyNCwgMSwgOTMsIDIxMCwgMCwgMjIxLCA5NywgMjQsIDEsIDkzLCAKKyAgICAyMTMsIDExNywgMjQsIDEsIDkzLCAyMTcsIDE4MSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMTIsIDYsIDI0LCAxLCA5MywgCisgICAgMjIyLCAxNjIsIDIyMSwgNiwgMjQsIDEsIDkzLCAyMDMsIDcsIDI0LCAxLCA5MywgMjM4LCA5NywgMjQsIDEsIDkzLCAyMDcsIAorICAgIDIwMiwgMjQsIDEsIDkzLCAyMDMsIDIyLCAyNCwgMSwgOTMsIDIxOCwgNjksIDI0LCAxLCA5MywgMjA3LCAxOTAsIDI0LCAxLCAKKyAgICA5MywgMjI5LCAxNjgsIDI0LCAxLCA5MywgMjExLCA2LCAyNCwgMSwgOTMsIDIwOSwgMTIwLCAyNCwgMSwgOTMsIDIwNSwgCisgICAgMjM5LCAyNCwgMSwgOTMsIDIwNCwgNDMsIDI0LCAxLCA5MywgMjI4LCAxMTAsIDI0LCAxLCA5MywgMjE3LCAxOTEsIDI0LCAxLCAKKyAgICA5MywgMjEwLCAxMywgMjQsIDEsIDkzLCAyMzgsIDExNywgMjQsIDEsIDkzLCAyMjIsIDE4NSwgMjQsIDEsIDkzLCAyMTMsIAorICAgIDE5LCAyNCwgMSwgOTMsIDIyNCwgMTg2LCAyNCwgMSwgOTMsIDIyNSwgNDYsIDI0LCAxLCA5MywgMjIwLCAyMTIsIDI0LCAxLCAKKyAgICA5MywgMjIxLCAyNTQsIDI0LCAxLCA5MywgMjM4LCAyMDEsIDI0LCAxLCA5MywgMjA3LCAxOTEsIDI0LCAxLCA5MywgMjI4LCAKKyAgICAxOTksIDI0LCAxLCA5MywgMjAzLCA3NCwgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ2LCAzMiwgMjQsIDEsIDkzLCAyMDIsIAorICAgIDI1MywgMjQsIDEsIDkzLCAyMjQsIDIwMywgMjQsIDEsIDkzLCAyMjMsIDksIDI0LCAxLCA5MywgMjE4LCAxNTgsIDI0LCAxLCAKKyAgICA5MywgMjAyLCAxOTgsIDI0LCAxLCA5MywgMjI3LCAxNzAsIDI0LCAxLCA5MywgMjM5LCAxMDYsIDI0LCAxLCA5MywgMjM4LCAKKyAgICAyMDAsIDI0LCAxLCA5MywgMjIyLCAxMzIsIDI0LCAxLCA5MywgMjI5LCAxNzAsIDI0LCAxLCA5MywgMjI1LCAxNjEsIDI0LCAKKyAgICAxLCA5MywgMjIyLCAxNDUsIDI0LCAxLCA5MywgMjM4LCAxMDMsIDI0LCAxLCA5MywgMjQwLCAxMDgsIDI0LCAxLCA5MywgCisgICAgMjIxLCA4NywgMjQsIDEsIDkzLCAyMTgsIDIxNCwgMjQsIDEsIDkzLCAyMDMsIDIwLCAyNCwgMSwgOTMsIDIyMiwgMTcxLCAKKyAgICAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDgsIDEwMywgMjQsIDEsIDkzLCAyMjAsIDE5MiwgMjQsIDEsIDkzLCAyMTgsIDQzLCAKKyAgICAyNCwgMSwgOTMsIDIyNCwgMTQ0LCAyNCwgMSwgOTMsIDIzOSwgMTA0LCAyNCwgMSwgOTMsIDIyMywgMTAwLCAyNCwgMSwgOTMsIAorICAgIDIyMywgMjQ0LCAyNCwgMSwgOTMsIDIzOCwgMTAyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCA3NSwgMjQsIDEsIDkzLCAyMjMsIAorICAgIDE4NSwgMjQsIDEsIDkzLCAyMTcsIDE4NywgMjQsIDEsIDkzLCAyMjIsIDEzNCwgMjQsIDEsIDkzLCAyMjgsIDE3NSwgMjQsIAorICAgIDEsIDkzLCAyMTgsIDE1NSwgMjQsIDEsIDkzLCAyMjEsIDEwMCwgMjQsIDEsIDkzLCAyMDMsIDIxLCAyNCwgMSwgOTMsIDIyMiwgCisgICAgMTU1LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIDI1MiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjQ3LCA3MSwgMjQsIDEsIAorICAgIDkzLCAyMzksIDE3OSwgMjQsIDEsIDkzLCAyMjIsIDM5LCAyNCwgMSwgOTMsIDYzLCAyNCwgMSwgOTMsIDIwOCwgMTQxLCAyNCwgCisgICAgMSwgOTMsIDc4LCAyNCwgMSwgOTMsIDc1LCAyNCwgMSwgOTMsIDIyOCwgOSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAKKyAgICA3NywgMjQsIDEsIDkzLCAyMTAsIDE4LCAyNCwgMSwgOTMsIDIwOSwgMjE5LCAyNCwgMSwgOTMsIDIyMywgMjQsIDIyMywgCisgICAgMTcyLCAyMzYsIDM4LCAyNCwgMSwgOTMsIDIxMiwgMjUwLCAyNCwgMSwgOTMsIDIwMywgMTcsIDI0LCAxLCA5MywgMjIyLCAKKyAgICAxMTUsIDI0LCAxLCA5MywgMjAyLCAyMDMsIDI0LCAxLCA5MywgMjAyLCAyMzAsIDIxMCwgMTU5LCAyNCwgMSwgOTMsIDIwMiwgCisgICAgMjMwLCAyNDUsIDE1MSwgMjQsIDEsIDkzLCAyMDIsIDE4NywgMjQsIDEsIDkzLCAyMDIsIDE5NSwgMjQsIDEsIDkzLCAyMjksIAorICAgIDE1NiwgMjQsIDEsIDkzLCAyMTgsIDIxMiwgMjQsIDEsIDkzLCAyMjIsIDQwLCAyNDEsIDM5LCAyNCwgMSwgOTMsIDIxNywgCisgICAgMTgzLCAyNCwgMSwgOTMsIDIwMywgMjE0LCAyNCwgMSwgOTMsIDI0MCwgNTMsIDI0LCAxLCA5MywgMjA2LCA1MCwgMjQsIDEsIAorICAgIDkzLCAyMjYsIDIzOSwgMjQsIDEsIDkzLCAyMjQsIDE1NSwgMjQsIDEsIDkzLCAyMTYsIDc1LCAyNCwgMSwgOTMsIDIxNiwgCisgICAgMjAyLCAyNCwgMSwgOTMsIDIyMiwgMTE0LCAyNCwgMSwgOTMsIDIyMiwgMjAzLCAyNCwgMSwgOTMsIDIxMiwgMjQyLCAyNCwgCisgICAgMSwgOTMsIDIxMiwgMjI5LCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyMTYsIDExMSwgMjQsIDEsIDkzLCAyMDEsIDIwMSwgMjQsIAorICAgIDEsIDkzLCAyMTgsIDE2NywgMjQsIDEsIDkzLCAyMjcsIDEwLCAyNCwgMSwgOTMsIDIyOSwgMjYsIDI0LCAxLCA5MywgMjI0LCAKKyAgICAyNDAsIDI0LCAxLCA5MywgMTkyLCAyNCwgMSwgOTMsIDIyNSwgMTAzLCAyNCwgMSwgOTMsIDIwOSwgMTIyLCAyNCwgMSwgOTMsIAorICAgIDIyOSwgMTAwLCAyNCwgMSwgOTMsIDIyNCwgNTQsIDI0LCAxLCA5MywgMjA5LCAxNTIsIDI0LCAxLCA5MywgMjQwLCA3NywgCisgICAgMjQsIDEsIDkzLCAyMzgsIDkwLCAyNCwgMSwgMjE4LCAxOTYsIDE3MywgMjQsIDEsIDIxOCwgMTk2LCA2OCwgMjQsIDEsIAorICAgIDIxOCwgMTk2LCAyMjgsIDIwOSwgMjQsIDEsIDIxOCwgMTk2LCAyNDEsIDE2MSwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEzNSwgCisgICAgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDEsIDI0LCAxLCAyMTgsIDE5NiwgMjIwLCAyNDgsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAKKyAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNTAsIDI0LCAxLCAyMTgsIDE5NiwgCisgICAgMjI1LCA3LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjIzLCAyMywgMjQsIDEsIDIxOCwgCisgICAgMTk2LCAyMjIsIDQ2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNiwgMTg1LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTc5LCAyNCwgCisgICAgMSwgMjE4LCAxOTYsIDIxMywgNiwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE2MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTMsIAorICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIDEzNywgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDE3MCwgMjQsIDEsIDIxOCwgCisgICAgMTk2LCAyMjEsIDU1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgODQsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxNywgMjQsIDEsIAorICAgIDIxOCwgMTk2LCAyMDIsIDIyOSwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE5OSwgMjQsIDEsIDIxOCwgMTk2LCAxOTgsIDI0LCAKKyAgICAxLCAyMTgsIDE5NiwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjE4LCAyMTIsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCAKKyAgICA5OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDMsIDIxNCwgMjQsIDEsIDIxOCwgMTk2LCAyMTksIDIzLCAyNCwgMSwgMjE4LCAxOTYsIAorICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTAwLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNzUsIDI0LCAxLCAKKyAgICAyMTgsIDE5NiwgMjI5LCAxODAsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMzEsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxODIsIAorICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAyNDIsIDI0LCAxLCAyMTgsIDE5NiwgMjE3LCAxODgsIDI0LCAxLCAyMTgsIDE5NiwgCisgICAgMjM5LCAxNzksIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxMTEsIDI0LCAxLCAyMTgsIDE5NiwgMjI3LCAxNDgsIDI0LCAxLCAKKyAgICAyMTgsIDE5NiwgMjI3LCAxMCwgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDI2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNDQsIAorICAgIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMDcsIDI0LCAxLCAyMTgsIDE5NiwgMTkyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNCwgCisgICAgODIsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA1MiwgMjQsIDEsIDIxOCwgMTk2LCAyMDksIDEzMiwgMjQsIDEsIDIxOCwgMTk2LCAKKyAgICAyMjgsIDI0NCwgMjQsIDEsIDIxOCwgMTk2LCAyMTQsIDI1MSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDE2MiwgMjIzLCAyNDksIAorICAgIDEsIDIxMCwgMjIsIDIyMywgMjQ5LCAxLCAyMjIsIDE1MSwgMjIzLCAyNDksIDEsIDIwMiwgMjQ3LCAyMjMsIDI0OSwgMSwgCisgICAgMjI0LCAxMTIsIDIyMywgMjQ5LCAxLCAyNDksIDMyLCAyMjMsIDI0OSwgMSwgMjQ0LCAyMTIsIDIyMywgMjQ5LCAxLCA2MywgCisgICAgMjIzLCAyNDksIDEsIDIxOCwgMTkyLCAyMjMsIDI0OSwgMSwgMjI5LCAxMzksIDIyMywgMjQ5LCAxLCAyMzcsIDk1LCAyMjMsIAorICAgIDI0OSwgMSwgMjQ0LCAxODgsIDIyMywgMjQ5LCAxLCAyNDYsIDk4LCAyMjMsIDI0OSwgMSwgMjI5LCAyMDAsIDIyMywgMjQ5LCAKKyAgICAxLCAyMjAsIDQ2LCAyMjMsIDI0OSwgMSwgMjI1LCAxNTgsIDIyMywgMjQ5LCAxLCAyMjIsIDY4LCAyMjMsIDI0OSwgMSwgCisgICAgMTg1LCAyMjMsIDI0OSwgMSwgMjIwLCAxOCwgMjIzLCAyNDksIDEsIDc4LCAyMjMsIDI0OSwgMSwgMjE1LCAyMjcsIDIyMywgCisgICAgMjQ5LCAxLCAyMTMsIDExLCAyMjMsIDI0OSwgMSwgMjA5LCA5MSwgMjIzLCAyNDksIDEsIDI0MSwgMTg5LCAyMjMsIDI0OSwgCisgICAgMSwgMjA0LCAxMTEsIDIyMywgMjQ5LCAxLCA3NCwgMjIzLCAyNDksIDEsIDIyOSwgMjYsIDIyMywgMjQ5LCAxLCAyMjgsIDE3LCAKKyAgICAyMjMsIDI0OSwgMSwgMjI4LCAxMTMsIDIyMywgMjQ5LCAxLCAyMzcsIDE0NywgMjIzLCAyNDksIDEsIDIxNiwgNTcsIDIyMywgCisgICAgMjQ5LCAxLCAyMDksIDE2NSwgMjIzLCAyNDksIDE3LCAyMDIsIDg0LCAyMjMsIDI0OSwgMTcsIDEwNSwgMjIzLCAyNDksIDE3LCAKKyAgICAxMDgsIDIyMywgMjQ5LCAxNywgMTQ3LCAyMjMsIDI0OSwgMTcsIDE0OSwgMjIzLCAyNDksIDE3LCAxNzAsIDIyMywgMjQ5LCAKKyAgICAxNywgMTk1LCAyMjMsIDI0OSwgMTcsIDIxMywgMTExLCAyMjMsIDI0OSwgMTcsIDE5OSwgMjIzLCAyNDksIDE3LCAyMjIsIAorICAgIDYzLCAyMjMsIDI0OSwgMjQ0LCAxNjYsIDIyMywgMjQ5LCA1MiwgMjQ0LCAxNjYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKKyAgICAyNDEsIDc0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTczLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjE0LCAxNzcsIDI0OCwgCisgICAgMjEyLCAyMDYsIDgzLCAxLCAyNDAsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyNSwgNDcsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAxLCAyMDMsIDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDI0OSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MywgCisgICAgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI4LCAyNDMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzAsIDEwMSwgMjQ4LCAKKyAgICAyMTIsIDIwNiwgODMsIDEsIDIzNSwgMjUzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMTEsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAxLCAyMDIsIDE3LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAxOTQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKKyAgICAyNDMsIDExMywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0NiwgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA2LCAxNzEsIAorICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxMzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDksIDMyLCAyNDgsIDIxMiwgMjA2LCAKKyAgICA4MywgMSwgMjA0LCAxNjMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDMsIDQ2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCisgICAgMTg1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2MywgMjQ4LCAyMTIsIAorICAgIDIwNiwgODMsIDEsIDc4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjIwLCAxOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDY4LCAKKyAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQxLCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgCisgICAgODMsIDEsIDc1LCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDEzOCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgCisgICAgMTI0LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMjQsIDE1MCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIAorICAgIDgzLCAzOSwgMjI2LCAyNTMsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIzNiwgMjQyLCAyMDgsIDE2MSwgCisgICAgMjQ4LCAyMTIsIDIwNiwgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxMTksIDExNywgMjIsIDIyOSwgMTk3LCAxMTksIDExNywgCisgICAgMjIsIDIyOSwgMTkzLCAxMTksIDExNywgMjIsIDIyOSwgOTcsIDExOSwgMTE3LCAyMiwgMjI5LCA2MywgMTE5LCAxMTcsIDIyLCAKKyAgICAyMjksIDIxOCwgMTE5LCAxMTcsIDIyLCAyMjksIDIxNSwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMCwgMTE5LCAxMTcsIDIyLCAKKyAgICAyMjgsIDE3MiwgMTE5LCAxMTcsIDIyLCAyMjksIDE5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDE1NCwgMTE5LCAxMTcsIDIyLCAKKyAgICAyMzAsIDE3LCAxMTksIDExNywgMjIsIDIzMCwgMTQsIDExOSwgMTE3LCAyMiwgMjI5LCA1LCAxMTksIDExNywgMjIsIDIyOSwgCisgICAgMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMCwgMTE5LCAxMTcsIDIyLCAyMjgsIAorICAgIDIwMiwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMSwgMTE5LCAxMTcsIDIyLCAyMjksIDIzLCAxMTksIDExNywgMjIsIDIyOCwgCisgICAgMjQ3LCAxMTksIDExNywgMjIsIDIyOSwgOTksIDExOSwgMTE3LCAyMiwgMjI5LCA5OCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMyLCAKKyAgICAxMTksIDExNywgMjIsIDIyOSwgMjE0LCAxMTksIDExNywgMjIsIDIyOCwgMTYzLCAxMTksIDExNywgMjIsIDIyOCwgMTU0LCAKKyAgICAxMTksIDExNywgMjIsIDIzMCwgNDAsIDExOSwgMTE3LCAyMiwgMjMwLCAzMywgMTE5LCAxMTcsIDEwOSwgMjA2LCA2MSwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjIxLCA5MCwgMTE5LCAxMTcsIDEwOSwgMjI3LCAyNTEsIDExOSwgMTE3LCAxMDksIDIzNywgNzYsIAorICAgIDExOSwgMTE3LCAxMDksIDIyMSwgMjMwLCAxMTksIDExNywgMTA5LCAyMTYsIDE2NywgMTE5LCAxMTcsIDEwOSwgMjIyLCAxLCAKKyAgICAxMTksIDExNywgMTA5LCAyMTcsIDEwMCwgMTE5LCAxMTcsIDEwOSwgMjAzLCA2MiwgMTE5LCAxMTcsIDEwOSwgMjM2LCAyMjEsIAorICAgIDExOSwgMTE3LCAxMDksIDIyNSwgNjcsIDExOSwgMTE3LCAxMDksIDI0NiwgMTc0LCAxMTksIDExNywgMTA5LCAyMjMsIDI4LCAKKyAgICAxMTksIDExNywgMTA5LCAyMzYsIDE1NywgMTE5LCAxMTcsIDEwOSwgMjE4LCA4NSwgMTE5LCAxMTcsIDEwOSwgMjIxLCA5NSwgCisgICAgMTE5LCAxMTcsIDEwOSwgMjIzLCA2NSwgMTE5LCAxMTcsIDEwOSwgMjUwLCAzNCwgMTE5LCAxMTcsIDEwOSwgMjAzLCAxNzgsIAorICAgIDExOSwgMTE3LCAxMDksIDI0NywgMTUsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwNywgMTk5LCAxMTksIDExNywgMTMxLCAKKyAgICAyNDYsIDY3LCAyMTIsIDEzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMjksIDE3MiwgMTE5LCAxMTcsIDEzMSwgMjQ2LCAKKyAgICA2NywgMjI5LCAxMzAsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIxMSwgNCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgCisgICAgMjM2LCAxMjMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwOSwgMjA2LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgCisgICAgNDQsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA4LCA5LCAyNDYsIDIyOSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NiwgCisgICAgMTYzLCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgNjksIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjQwLCA1MCwgMTE5LCAKKyAgICAxMTcsIDIsIDIwMywgMTM2LCAyMjEsIDg1LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDIxNiwgNTksIDExOSwgMTE3LCAyLCAKKyAgICAyMDMsIDEzNiwgMjA4LCAxMjQsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjQwLCA4OSwgMTE5LCAxMTcsIDIsIDIwNSwgCisgICAgMTczLCAyMTQsIDE1OSwgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjExLCA4LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyMSwgCisgICAgMTM0LCAxMTksIDExNywgMiwgMjM1LCAxNjcsIDIwMywgODEsIDExOSwgMTE3LCAyLCAyMDMsIDE3NywgMTE5LCAxMTcsIDIsIAorICAgIDI0NiwgNjcsIDIwNywgMjUyLCAyMTUsIDIxNiwgMTE5LCAxMTcsIDE3LCAyMDIsIDg0LCAxMTksIDExNywgMTcsIDEwNSwgCisgICAgMTE5LCAxMTcsIDE3LCAxMDgsIDExOSwgMTE3LCAxNywgMTQ3LCAxMTksIDExNywgMTcsIDE0OSwgMTE5LCAxMTcsIDE3LCAKKyAgICAxNzAsIDExOSwgMTE3LCAxNywgMTk1LCAxMTksIDExNywgMTcsIDIxMywgMTExLCAxMTksIDExNywgMTcsIDE5OSwgMTE5LCAKKyAgICAxMTcsIDE3LCAyMjIsIDYzLCAxMTksIDExNywgNDIsIDIwOSwgMTQ3LCAxMTksIDExNywgNDIsIDIzNiwgMTAsIDExOSwgCisgICAgMTE3LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDExOSwgMTE3LCA0MiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjM2LCAKKyAgICAxMiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNTMsIDI0OCwgNjgsIDExOSwgMTE3LCA0MiwgMjA4LCA3MiwgCisgICAgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjYsIDIzNCwgMTE5LCAxMTcsIDIsIDIwMywgMTMzLCAxMTksIDExNywgMiwgMjM2LCAKKyAgICAyMTYsIDExOSwgMTE3LCAyLCAyMDksIDU5LCAyMzYsIDIxNiwgMTE5LCAxMTcsIDIsIDIwMSwgMjQ3LCAyMDksIDEwMiwgCisgICAgMTE5LCAxMTcsIDIsIDIzNiwgMTQxLCAxMTksIDExNywgMiwgMjIxLCAxNDgsIDExOSwgMTE3LCAyLCAyMDMsIDE2OSwgMTE5LCAKKyAgICAxMTcsIDIsIDIyMSwgODgsIDExOSwgMTE3LCAyLCAyNTAsIDE4LCAxMTksIDExNywgMiwgMjA3LCAxMjksIDI0NiwgMjI4LCAKKyAgICAxMTksIDExNywgMiwgMjI1LCA2LCAyMDgsIDEyLCAxMTksIDExNywgMiwgMjA5LCAyMDcsIDExOSwgMTE3LCAyLCAyMjcsIDcsIAorICAgIDExOSwgMTE3LCAyLCAyMjMsIDIwMSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIzNywgMTQzLCAyMjYsIDIxMiwgMjIxLCA5MywgCisgICAgMjIxLCA5MiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NSwgMTA5LCAyMDgsIDMsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKKyAgICAyMDcsIDEyNywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIwNywgMTI4LCAyNDYsIDg2LCAxMTksIDExNywgMiwgMjQ2LCA2NywgCisgICAgMjE3LCAxODYsIDI0NCwgMTM1LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjIxLCAxNDEsIDIwOCwgMTMyLCAxMTksIDExNywgCisgICAgMjQ2LCAzOSwgMiwgMjA4LCA3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA0OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAorICAgIDIyNywgOTMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjcsIDI1MCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgMTMyLCAKKyAgICAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCA2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCA3MywgMTE5LCAxMTcsIAorICAgIDI0NiwgMzksIDIsIDIyMywgMjQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA5LCA0NSwgMTE5LCAxMTcsIDI0NiwgMzksIAorICAgIDIsIDIwOCwgMTcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMTgsIDIwNSwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgCisgICAgMTQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCAxMzMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDYsIDgwLCAxMTksIAorICAgIDExNywgMjQ2LCAzOSwgMiwgMjQwLCA4NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgODgsIDExOSwgMTE3LCAyNDYsIAorICAgIDM5LCAyLCAyMDcsIDI0NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOCwgMTU4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCisgICAgMjA0LCAxNTMsIDExMSwgMSwgMTg1LCAxMTEsIDEsIDI0OSwgMzIsIDExMSwgMSwgMTEsIDE4NSwgMTExLCAxLCAyMTgsIDk4LCAKKyAgICAxMTEsIDEsIDE5MiwgMTExLCAxLCAyMjQsIDE1OCwgMTExLCAxLCAyNTAsIDEyNiwgMTkyLCAxMTEsIDEsIDI0MCwgMTA4LCAKKyAgICAxMTEsIDEsIDIwNiwgODYsIDExMSwgMSwgMjA1LCAyMzEsIDExMSwgMSwgMjEwLCAyMiwgMTExLCAxLCAyNDQsIDIxMiwgCisgICAgMTExLCAxLCAxMSwgMjA3LCAyNDEsIDExMSwgMSwgMTEsIDIxMCwgMjIsIDExMSwgMSwgMjA3LCAyNDEsIDExMSwgMSwgMjQ0LCAKKyAgICAxMjAsIDExMSwgMSwgMjAxLCAyMDEsIDExMSwgMSwgMjIyLCAxMDQsIDExMSwgMSwgMTEsIDIyMSwgMjI3LCAxMTEsIDEsIAorICAgIDI1MCwgMTI2LCAyMDEsIDIwMSwgMTExLCAxLCAyMjEsIDIyNywgMTExLCAxLCAyMjEsIDIxMywgMTExLCAxLCAyMjgsIDExMywgCisgICAgMTExLCAxLCAyMjYsIDE5OCwgMTExLCAxLCAyMjcsIDE2MSwgMTExLCAxLCAyMjcsIDE1MCwgMTExLCAxLCAyMDgsIDE4NywgCisgICAgMTExLCAxLCAyNDMsIDEyMSwgMTExLCAxLCAyMDgsIDE3OSwgMTExLCAxLCAyNDMsIDEyMCwgMTExLCAxLCAxNzMsIDExMSwgCisgICAgMSwgMjM5LCA4LCAxMTEsIDEsIDExLCAxNzMsIDExMSwgMSwgMjE3LCAxMjYsIDExMSwgMSwgMjE3LCAxMDMsIDExMSwgMSwgCisgICAgMjIyLCAyMDMsIDExMSwgMSwgMjIyLCAxNTIsIDExMSwgMSwgMjUwLCAxMjYsIDIyMiwgMjAzLCAxMTEsIDEsIDE1MiwgMTExLCAKKyAgICAxLCAyMDMsIDE4MiwgMTExLCAxLCAyMzgsIDExOSwgMTExLCAxLCAyMzgsIDk0LCAxMTEsIDEsIDIwNywgMjUxLCAxMTEsIDEsIAorICAgIDI0MSwgMjM5LCAxMTEsIDEsIDIyMSwgMTEsIDExMSwgMSwgMjIwLCAyNTAsIDExMSwgMSwgMjA4LCAxMCwgMTExLCAxLCAKKyAgICAyNDEsIDI0OSwgMTExLCAxLCAxMSwgMjA4LCAxMCwgMTExLCAxLCAxMSwgMjQxLCAyNDksIDExMSwgMSwgMjE2LCAxMzMsIAorICAgIDIwOCwgMTAsIDExMSwgMSwgMjEzLCA5MCwgMTExLCAxLCAyMTEsIDE2NCwgMTExLCAxLCAyMDIsIDgwLCAxMTEsIDEsIDIwMiwgCisgICAgOCwgMTExLCAxLCAyMDgsIDIwLCAxMTEsIDEsIDI0MSwgMjU1LCAxMTEsIDEsIDExLCAyMDgsIDIwLCAxMTEsIDEsIDIxNSwgCisgICAgMzYsIDExMSwgMSwgMjAyLCAxMTYsIDExMSwgMSwgMjAyLCA5LCAxMTEsIDEsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjE1LCAKKyAgICAxMTEsIDEsIDI1MCwgMTI2LCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIwNywgMTExLCAxLCAyMDEsIDIxNCwgMTExLCAxLCAKKyAgICAyMDQsIDExMSwgMTExLCAxLCAyNTEsIDczLCAxMTEsIDEsIDIzNywgMTIsIDExMSwgMSwgMjIzLCA3MCwgMTExLCAyLCAyNTAsIAorICAgIDY1LCAxMTEsIDIsIDIxNiwgMTMzLCAyMDUsIDE4NCwgMTExLCAyLCAyMTYsIDEzMywgMjUwLCA2NSwgMTExLCAyMiwgMiwgCisgICAgNjMsIDExMSwgMjIsIDIsIDI1MiwgMjUsIDExMSwgMjIsIDIsIDI1MSwgNjksIDExMSwgMjIsIDIsIDI1MCwgMjMxLCAxMTEsIAorICAgIDIyLCAyLCAyNTAsIDIyMywgMTExLCAyMiwgMiwgNzgsIDExMSwgMjIsIDIsIDIyMCwgMTgsIDExMSwgMjIsIDIsIDIwNCwgMCwgCisgICAgMTExLCAyMiwgMiwgMjA0LCAxNDQsIDExMSwgMjIsIDIsIDc0LCAxMTEsIDIyLCAyLCAyNDEsIDkyLCAxMTEsIDIyLCAyLCAKKyAgICAyNDEsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDcwLCAxMTEsIDIyLCAyLCA3NSwgMTExLCAyMiwgMiwgMjM1LCAxNzEsIDExMSwgCisgICAgMjIsIDIsIDIzNSwgMTcwLCAxMTEsIDIyLCAyLCAyMzUsIDE2OSwgMTExLCAyMiwgMiwgMjMwLCAyMzQsIDExMSwgMjIsIDIsIAorICAgIDIzMSwgMTEwLCAxMTEsIDIyLCAyLCAyMzEsIDgzLCAxMTEsIDIyLCAyLCAyMzAsIDE5NywgMTExLCAyMiwgMiwgMjMxLCAyNCwgCisgICAgMTExLCAyMiwgMiwgNjgsIDExMSwgMjIsIDIsIDIwNywgMzksIDExMSwgMjIsIDIsIDIwNywgMzgsIDExMSwgMjIsIDIsIAorICAgIDIwNywgMzcsIDExMSwgMjIsIDIsIDIwNiwgMTc4LCAxMTEsIDIyLCAyLCAyMDcsIDIxLCAxMTEsIDIyLCAyLCAyMDYsIDI0MSwgCisgICAgMTExLCAyMiwgMiwgMjAzLCAxMjQsIDExMSwgMjIsIDIsIDIwMywgMTEsIDExMSwgMjIsIDIsIDI1MSwgMTA5LCAxMTEsIDIyLCAKKyAgICAyLCAyNTEsIDEwNSwgMTExLCAyMiwgMiwgMjQxLCAyMSwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjEsIDExMSwgMjIsIAorICAgIDIsIDI0MSwgMjgsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyNTEsIDY0LCAxMTEsIDIyLCAKKyAgICAyLCAyNDEsIDE0NSwgMTExLCAyMiwgMiwgMjUwLCAzNCwgMTExLCAyMiwgMiwgMjE5LCAyMTYsIDExMSwgMjIsIDIsIDIyMywgCisgICAgMTYzLCAxMTEsIDIyLCAyLCAyMjIsIDIwNSwgMTExLCAxNDMsIDIxNiwgMTYsIDExMSwgMTQzLCAyMDgsIDE0NSwgMjE2LCAKKyAgICAxNiwgMTExLCAxNDMsIDU1LCAxMTEsIDE0MywgNTYsIDExMSwgMSwgMjA4LCAxNTksIDExMSwgMSwgMjA4LCAxNTgsIDExMSwgCisgICAgMSwgMjA4LCAxNTcsIDExMSwgMSwgMjA4LCAxNTYsIDExMSwgMSwgMjA4LCAxNTUsIDExMSwgMSwgMjA4LCAxNTQsIDExMSwgCisgICAgMSwgMjA4LCAxNTMsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTYwLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1OSwgMTExLCAKKyAgICAxLCAyMTYsIDEzMywgMjA4LCAxNTcsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU2LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIAorICAgIDE1NSwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTMsIDY3LCAxLCAyNTAsIDEyNiwgNzQsIDE3MiwgMSwgMjUwLCAxMjYsIAorICAgIDIwMywgNTIsIDEwMCwgMSwgMjM3LCAxNzEsIDEwMCwgMSwgMjAzLCAxOTYsIDEwMCwgMSwgMjE5LCAxODQsIDEwMCwgMSwgCisgICAgMjEwLCA2OSwgMTAwLCAxLCAyNDAsIDE3NCwgMTAwLCAxLCAyMzAsIDU0LCAxMDAsIDEsIDE1OSwgMTAwLCAxLCAyNDksIAorICAgIDI1NSwgMTAwLCAxLCAyNDUsIDUxLCAxMDAsIDEsIDIwNiwgMTY0LCAxMDAsIDEsIDIzOSwgNzUsIDEwMCwgMSwgMTQ2LCAKKyAgICAxMDAsIDEsIDIxOSwgMTg1LCAyMjMsIDE2MywgMTAwLCAxLCAyNDUsIDUyLCAxOTQsIDEwMCwgMSwgMjQwLCAxNzUsIDIyMywgCisgICAgMTYzLCAxMDAsIDEsIDIzMCwgNTUsIDIyNiwgMTg1LCAxMDAsIDEsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIwOSwgMTEwLCAKKyAgICAxMDAsIDEsIDIxMiwgNDUsIDI0NCwgMiwgMTAwLCAxLCAyNDQsIDIsIDEwMCwgMSwgMjI5LCA0OCwgMTAwLCAxLCAyMTIsIAorICAgIDQ1LCAyMzAsIDE4NCwgMTAwLCAxLCAyMzYsIDIyNSwgMTAwLCAxLCAyMjcsIDE2MiwgMTAwLCAxLCAyMTYsIDYyLCAxMDAsIAorICAgIDEsIDIyNiwgMTg1LCAxMDAsIDEsIDIyMywgMTYzLCAxMDAsIDEsIDIzMCwgMTg0LCAxMDAsIDEsIDE5NCwgMTAwLCAxLCAKKyAgICAyMjYsIDE4NiwgMjIzLCAxNjMsIDEwMCwgMSwgMjIzLCAxNjQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIAorICAgIDE4NSwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDE4NCwgMTAwLCAxLCAyMjYsIDE4NiwgMywgMjQzLCA4NSwgMTAwLCAxLCAKKyAgICAyMjMsIDE2NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgCisgICAgMTg3LCAyMzEsIDcsIDI1LCA1NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDcwLCAKKyAgICA1NiwgMTAwLCAxLCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDE5NCwgCisgICAgMTAwLCAxLCAyMTUsIDk0LCAxOTQsIDEwMCwgMSwgMjI2LCAxODYsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIAorICAgIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAKKyAgICAxODUsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAKKyAgICAxNjMsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjEwLCA2OSwgMTAwLCAxLCAKKyAgICAyMTUsIDk0LCAyMTAsIDcwLCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAxODQsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAKKyAgICAxODUsIDE0NiwgMTAwLCAxLCAyMTAsIDcwLCAxOTQsIDEwMCwgMSwgMjEwLCA3MCwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCisgICAgMjA0LCAxNDQsIDEwMCwgMSwgMjA0LCA0MCwgMTAwLCAxLCAyMDQsIDE0NSwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIyMywgCisgICAgMTYzLCAxMDAsIDEsIDIxNSwgOTQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgNTUsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAorICAgIDIzOSwgNzYsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NSwgCisgICAgMTQ2LCAxMDAsIDEsIDYzLCAxMDAsIDEsIDIxMiwgNDUsIDIxOSwgMTk1LCAxMDAsIDEsIDIyMCwgOTcsIDEwMCwgMSwgNzgsIAorICAgIDEwMCwgMSwgMjUwLCAxNzYsIDEwMCwgMSwgNzUsIDEwMCwgMSwgNzQsIDEwMCwgMSwgMjMxLCAxMTAsIDEwMCwgMSwgMjEyLCAKKyAgICAyMjgsIDc1LCAxMDAsIDEsIDIwNywgMTcsIDEwMCwgMSwgMjQxLCAxNjEsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNDcsIAorICAgIDEwMCwgMSwgMjE1LCAyMDksIDc1LCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTYxLCAxMDAsIDEsIDE2MywgNzUsIDEwMCwgMSwgCisgICAgMjAzLCA1MiwgMTAwLCAxLCA2OCwgMTAwLCAxLCAyNDAsIDIzOCwgMTAwLCAxLCAyMDMsIDE0NywgMTAwLCAxLCAxMDYsIAorICAgIDIyMywgMTYzLCAxMDAsIDEsIDE2MywgNjgsIDEwMCwgMSwgMjE1LCAyMDksIDY4LCAxMDAsIDEsIDIwNywgMTgsIDEwMCwgMSwgCisgICAgMjEyLCA0NSwgNjgsIDEwMCwgMSwgMjIwLCAxNSwgMTAwLCAxLCAyMTksIDE5NSwgMTAwLCAxLCAyMTksIDIxNiwgMTAwLCAxLCAKKyAgICAyMDQsIDExMSwgMTAwLCAxLCAyMDQsIDAsIDEwMCwgMSwgMjA0LCAzMCwgMTAwLCAxLCAyMDQsIDUzLCAxMDAsIDEsIDIwMywgCisgICAgMjMwLCAxMDAsIDEsIDIyMywgNzIsIDY4LCAxMDAsIDEsIDIyMywgNzIsIDc4LCAxMDAsIDEsIDIyMywgNzIsIDc1LCAxMDAsIAorICAgIDEsIDIyMywgNzIsIDYzLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyNDcsIAorICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCA5MiwgMTAwLCAxLCAyMTIsIDQ1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTIsIDQ1LCAKKyAgICAyMjAsIDMxLCAxMDAsIDEsIDEyNSwgMjI2LCAxODUsIDEwMCwgMjUxLCA4OCwgNDksIDIzNiwgMTA2LCAyMTQsIDE3MiwgCisgICAgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgMjM2LCAxMDYsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDUwLCAyMzYsIDEwNiwgCisgICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTI0LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDgwLCAKKyAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMzgsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMTQsIAorICAgIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMjcsIDIxMywgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgCisgICAgMjA5LCAyMjYsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAyNDgsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMTg4LCAKKyAgICAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjM1LCAyMDYsIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIAorICAgIDIyNywgMTEzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTY1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAKKyAgICAyNTEsIDg4LCAxMzgsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAKKyAgICAxMzgsIDI0MywgODUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEzOCwgMjI3LCAxMTQsIAorICAgIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDQsIDc1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAKKyAgICAxMjQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMzcsIDI1MywgCisgICAgMTAwLCAyNTEsIDg4LCAxMjQsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTI0LCAyNDMsIDg1LCAxMDAsIDI1MSwgCisgICAgODgsIDEyNCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIyNywgMTE0LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA0LCAKKyAgICA3NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgMTI0LCA0NywgMTAwLCAyLCAxNTgsIDMsIAorICAgIDI0NSwgMTMwLCAxMDAsIDIwOSwgNjgsIDEsIDIxNCwgMTUwLCAxMDAsIDUyLCA4MiwgMTAwLCAyMTcsIDE3OSwgMjQ2LCAKKyAgICAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAKKyAgICAxNTgsIDI0NSwgMTkwLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxMjEsIDIxMSwgNzUsIDIxMiwgMjE1LCAyMzksIAorICAgIDE1OCwgMTEyLCAyMTEsIDc1LCA2MCwgMzEsIDE2LCAyMTcsIDE5NSwgNjAsIDMxLCAxNiwgMjQ0LCAxNDYsIDYwLCAzMSwgCisgICAgMTYsIDIxOCwgMjM5LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDMsIAorICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MywgMTcxLCA2MCwgCisgICAgMzEsIDE2LCAyMjksIDIyMSwgNjAsIDMxLCAxNiwgMjEwLCA4NiwgNjAsIDMxLCAxNiwgMjE5LCA4MywgNjAsIDMxLCAxNiwgCisgICAgMjAyLCAyMTksIDYwLCAzMSwgMTYsIDIwMiwgMjIwLCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjI4LCAyMjYsIDYwLCAzMSwgCisgICAgMTYsIDI1MCwgMTcxLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjQwLCAyMDYsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDksIAorICAgIDE2MywgNjAsIDMxLCAxNiwgMjI5LCAxNzYsIDYwLCAzMSwgMTYsIDI1MCwgMTYxLCA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgCisgICAgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIxMCwgOTMsIDYwLCAzMSwgMTYsIDIwOSwgNTAsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIAorICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE3LCAxOTQsIDYwLCAzMSwgCisgICAgMTYsIDI0NiwgMTkwLCA2MCwgMzEsIDE2LCAyMDYsIDYyLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjUwLCAxMjQsIDYwLCAKKyAgICAzMSwgMTYsIDIyOSwgMTc4LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKKyAgICAyMTQsIDIxMCwgNjAsIDMxLCAxNiwgMjE5LCA3MywgNjAsIDMxLCAxNiwgMjExLCA4NCwgMjUwLCAxNjQsIDYwLCAzMSwgMTYsIAorICAgIDIxOSwgMTkxLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA2LCA3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAKKyAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNTksIDYwLCAzMSwgMTYsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIxNiwgNjksIAorICAgIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA4LCAyMTcsIDYwLCAzMSwgMTYsIDI1MCwgCisgICAgMjI5LCA2MCwgMzEsIDE2LCAyMTQsIDE1MywgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAorICAgIDIxMCwgOTcsIDIyNCwgMjIxLCAyMTEsIDgyLCA2MCwgMzEsIDE2LCAyMTksIDE4NiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAorICAgIDIwOSwgODYsIDYwLCAzMSwgMTYsIDIyNywgMjAwLCA2MCwgMzEsIDE2LCAyNDIsIDIsIDYwLCAzMSwgMTYsIDIwOCwgODcsIAorICAgIDYwLCAzMSwgMTYsIDIwOSwgMTM0LCA2MCwgMzEsIDE2LCAyMjgsIDIyOSwgNjAsIDMxLCAxNiwgMjUwLCAxNzEsIDI0MCwgCisgICAgMjA2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzEsIDYyLCA2MCwgCisgICAgMzEsIDE2LCAyMDgsIDU3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAyMjQsIDIwOCwgNTYsIDYwLCAzMSwgMTYsIAorICAgIDIxOSwgMTEsIDYwLCAzMSwgMTYsIDIxNywgMTk5LCA2MCwgMzEsIDE2LCAyMjksIDcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAKKyAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE2LCAxNzcsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDI1MCwgMTI0LCA2MCwgMzEsIAorICAgIDE2LCAyMTksIDg0LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM1LCAxNjAsIDYwLCAzMSwgMTYsIDIyMywgODIsIDYwLCAzMSwgCisgICAgMTYsIDIxOCwgMjE3LCA2MCwgMzEsIDE2LCAyMjksIDgsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjA4LCA1NywgMjUxLCA5LCAKKyAgICA2MCwgMzEsIDE2LCAyMTEsIDU1LCA2MCwgMzEsIDE2LCAyMzcsIDI0MCwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDIyMiwgCisgICAgMjI2LCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDIyMiwgMjI2LCA2MCwgCisgICAgMzEsIDE2LCAyMTgsIDIxNiwgNjAsIDMxLCAxNiwgMjI4LCAyNDgsIDYwLCAzMSwgMTYsIDIxOCwgMjE1LCA2MCwgMzEsIDE2LCAKKyAgICAyMjgsIDIyOCwgNjAsIDMxLCAxNiwgMjE5LCAxMiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgCisgICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIwMiwgMjE3LCAKKyAgICA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTYzLCAyMTAsIDk0LCAyMjIsIDIyNiwgCisgICAgNjAsIDMxLCAxNiwgMjAyLCAyMTgsIDYwLCAzMSwgMTYsIDIyOCwgMjI3LCA2MCwgMzEsIDE2LCAyNDEsIDEyMSwgNjAsIDMxLCAKKyAgICAxNiwgMjQ2LCAxOTEsIDYwLCAzMSwgMTYsIDIyNCwgMTIyLCAyMzAsIDIwNSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjIyLCAKKyAgICAyMjYsIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE3LCAyMDAsIDIyMiwgMjI2LCA2MCwgCisgICAgMzEsIDE2LCAyMjAsIDM4LCA2MCwgMzEsIDE2LCAyNTAsIDE4OSwgNjAsIDMxLCAxNiwgMjI2LCAxOTUsIDYwLCAzMSwgMTYsIAorICAgIDIxOSwgODQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIAorICAgIDIxOSwgODUsIDYwLCAzMSwgMTYsIDIyOCwgMTM1LCA2MCwgMzEsIDE2LCAyNTAsIDE5MCwgNjAsIDMxLCAxNiwgMjA4LCA1NywgCisgICAgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgMTI0LCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyMjIsIDIyNiwgNjAsIDMxLCAKKyAgICAxNiwgMjEwLCA4NywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDQzLCA2MCwgMzEsIAorICAgIDE2LCAyMTQsIDE1NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwMywgMTYzLCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMDgsIAorICAgIDU0LCA2MCwgMzEsIDE2LCAyMTcsIDIwMSwgNjAsIDMxLCAxNiwgMjA4LCA1OCwgNjAsIDMxLCAxNiwgMjA4LCA1NSwgNjAsIAorICAgIDMxLCAxNiwgMjE3LCAxOTgsIDYwLCAzMSwgMTYsIDIwOCwgNTMsIDYwLCAzMSwgMTYsIDIxNywgMTk3LCA2MCwgMzEsIDE2LCAKKyAgICAyMzgsIDIyLCA2MCwgMzEsIDE2LCAyNTAsIDExNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIDI1MCwgMTE2LCA2MCwgMzEsIAorICAgIDE2LCAyMTksIDE4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwOSwgODUsIDI0MSwgMSwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgCisgICAgMjQwLCAyMDUsIDYwLCAzMSwgMTYsIDIwOSwgODcsIDI1MCwgMTY2LCA2MCwgMzEsIDE2LCAyMDksIDc5LCAyMzAsIDE5LCAKKyAgICAyNTAsIDE1OCwgNjAsIDMxLCAxNiwgMjI5LCAyMjMsIDYwLCAzMSwgMTYsIDI0MSwgODAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIAorICAgIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjExLCA4MywgNjAsIDMxLCAxNiwgCisgICAgMjI5LCAzOSwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIAorICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjIyLCAyMjYsIAorICAgIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjcsIDYwLCAzMSwgMTYsIDI0MywgCisgICAgMTcxLCA2MCwgMzEsIDE2LCAyMDgsIDY4LCA2MCwgMzEsIDE2LCAyMDksIDEyNSwgNjAsIDMxLCAxNiwgMjI4LCAyNTIsIDYwLCAKKyAgICAzMSwgMTYsIDIyNywgMjA1LCAyNDEsIDczLCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDI0MiwgMywgMjQ2LCAKKyAgICAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDgsIDcxLCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOSwgCisgICAgMTM2LCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIzMSwgNTcsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMzgsIAorICAgIDIzLCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI1MCwgMTEyLCA2MCwgMzEsIAorICAgIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDI0MywgMTk2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgCisgICAgMjE5LCA3NCwgMjUwLCAxMTMsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjUwLCAxMTMsIAorICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyMDgsIDc2LCA2MCwgCisgICAgMzEsIDE2LCAyNTAsIDExNywgNjAsIDMxLCAxNiwgMjMxLCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTksIDYwLCAzMSwgMTYsIAorICAgIDI1MSwgNzUsIDIxOCwgNTIsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyNTAsIDExNSwgNjAsIDMxLCAxNiwgCisgICAgMjUxLCA3NSwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIyNCwgMjE1LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAKKyAgICAyMjQsIDIyNiwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyMSwgNjAsIAorICAgIDMxLCAxNiwgMjUxLCA3NSwgMjE4LCA1MiwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDcsIDIzNSwgCisgICAgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyMTcsIDIwNywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgCisgICAgODQsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAKKyAgICAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNjMsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDc3LCA2MCwgMzEsIAorICAgIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMjcsIDIwOSwgCisgICAgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIyNywgMjA5LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCisgICAgMjE4LCA5NSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzMCwgMjEzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIAorICAgIDI1MCwgMTYzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIDI0MCwgODAsIDIwOSwgMTI3LCA2MCwgMzEsIDE2LCAKKyAgICAyNDAsIDgwLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCisgICAgMjA2LCA2NiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgCisgICAgMjI1LCA4NCwgMjE4LCA5NSwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjUwLCAKKyAgICAxNjYsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNDMsIDE3MCwgNjAsIDMxLCAxNiwgMjQxLCA5MCwgMjMwLCAKKyAgICAxOSwgMjM5LCAxMTAsIDIwNSwgMTcxLCA2MCwgMzEsIDE2LCAyMzEsIDYzLCA2MCwgMzEsIDE2LCAyMzEsIDYxLCA2MCwgMzEsIAorICAgIDE2LCAyMzksIDExMCwgMjUwLCAxMjUsIDI0NCwgNCwgMjM1LCAxNTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgCisgICAgMTg1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMywgODIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjMsIAorICAgIDc3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAKKyAgICAxMTAsIDIxMiwgNjQsIDI0MywgMjE2LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjksIAorICAgIDIwMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAKKyAgICAyMTcsIDIyMiwgMTAxLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjIsIDEwMSwgMjUwLCAKKyAgICAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMzksIAorICAgIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDI3LCAyMTIsIDY0LCAyNDYsIDEwMiwgCisgICAgMjA2LCA2NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMTAsIDk4LCA2MCwgMzEsIDE2LCAKKyAgICAyMzksIDExMCwgMjIyLCAyMjksIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMDEsIDI0MSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIAorICAgIDIyOSwgMzcsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMTEsIDIxOSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIzNSwgMjA2LCAKKyAgICAyMDMsIDEzLCAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MSwgOTEsIDI1MCwgMTkxLCA2MCwgMzEsIDE2LCAKKyAgICAyMDMsIDEzLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIAorICAgIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIAorICAgIDI0MywgMjEwLCAyMjQsIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNDMsIDE5MywgCisgICAgMjQwLCAyMTgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAKKyAgICAzMSwgMTYsIDIwMywgMTMsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMjQsIAorICAgIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDI0MywgMTkzLCAyNDAsIDIxOCwgMjQzLCAKKyAgICAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMzgsIAorICAgIDE3NSwgMjQzLCAyMDksIDYwLCAzMSwgMTYsIDIzOCwgMTc1LCAyMDMsIDEyLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAKKyAgICAxNjgsIDIyNCwgMTIzLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAxNjgsIDIyNCwgMjU1LCA2MCwgMzEsIDE2LCAyNDMsIAorICAgIDIxOCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyMDksIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKKyAgICA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKKyAgICA3OCwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDIwOSwgMTIzLCA2MCwgMzEsIDE2LCAyMTIsIAorICAgIDEzMCwgMjUwLCA4OCwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIAorICAgIDEzMCwgMjUwLCA4OSwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDIwOSwgMTIzLCA2MCwgMzEsIAorICAgIDE2LCAyNDMsIDE5NCwgMjM4LCAxNTYsIDYwLCAzMSwgMTYsIDI0MywgMjAxLCAyMTksIDIxNiwgNjAsIDMxLCAxNiwgMjExLCAKKyAgICA3MSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDE4NSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwNSwgMTcxLCA2MCwgMzEsIAorICAgIDE2LCAyNTAsIDEwOSwgMjM5LCA4LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDI1MCwgCisgICAgMTA5LCAyMjksIDIwMSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMjIsIAorICAgIDEwMCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgCisgICAgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAKKyAgICAxNzgsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAzOSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOCwgCisgICAgMjMsIDIyMiwgMjI3LCAyMjksIDIyMCwgMzEsIDE2LCAyMTIsIDEyMCwgMjQ4LCAyMjYsIDMxLCAxNiwgNTIsIDI0OCwgMjI2LCAKKyAgICAzMSwgMTYsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyMTYsIDc0LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjQ0LCAxNDMsIAorICAgIDI0OCwgMjI2LCAzMSwgMTYsIDIxMiwgMjI4LCAyNDgsIDIyNiwgMzEsIDE2LCA0OSwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIAorICAgIDUwLCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgMjE2LCAxMDEsIDI0MywgODMsIDMxLCAxNiwgMjQ0LCAxODUsIDIxNCwgMTU3LCAKKyAgICAzMSwgMTYsIDI0NCwgMjEzLCAyNDcsIDQ1LCAzMSwgMTYsIDIxNCwgMTU3LCAzMSwgMTYsIDI0NSwgMjUwLCAzMSwgMTYsIAorICAgIDIxNiwgOTksIDI0MCwgMTUsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxNCwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDEzLCAzMSwgCisgICAgMTYsIDI0MCwgMzYsIDMxLCAxNiwgMjQwLCAzNywgNTYsIDMxLCAxNiwgMjQ3LCAyMTYsIDgyLCAzMSwgMTYsIDI0NywgODIsIAorICAgIDMxLCAxNiwgMjQ3LCAyMjgsIDMxLCAxNiwgMTU1LCAzMSwgMTYsIDIyMCwgMjgsIDIxMSwgMTAyLCAzMSwgMTYsIDIwNywgCisgICAgMTMzLCAyMTEsIDEwMiwgMzEsIDE2LCAyMDksIDI5LCAyMTEsIDEwMiwgMzEsIDE2LCAyMzksIDE0NiwgMjExLCAxMDIsIDMxLCAKKyAgICAxNiwgMjM5LCAyMzIsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODcsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODUsIDIzOSwgCisgICAgMTI3LCAzMSwgMTYsIDIzOSwgMTQ0LCAyMzksIDEyNywgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMwLCAzMSwgMTYsIDIzOSwgCisgICAgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCisgICAgMjExLCAzMSwgMTYsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgCisgICAgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKKyAgICAyMTEsIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI4LCAzMSwgMTYsIDIyMywgCisgICAgMjI2LCAyMjUsIDE5LCAyMTYsIDg1LCAzMSwgMTYsIDUyLCAyMTMsIDU2LCAzMSwgMTYsIDUyLCAyMzksIDIxNiwgMzEsIDE2LCAKKyAgICAyMzksIDIxNywgMjA2LCAyMjQsIDMxLCAxNiwgMjM5LCAyMTcsIDI0MiwgNzAsIDMxLCAxNiwgMjIzLCA2NiwgMjA2LCAyMjQsIAorICAgIDMxLCAxNiwgMjIzLCA2NiwgMjQyLCA3MCwgMzEsIDE2LCAyMTMsIDU3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTMsIDU3LCAKKyAgICAyNDIsIDcwLCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjEzLCA1NiwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIzOSwgMjE2LCAKKyAgICAzMSwgMTYsIDI0NSwgMjMwLCAyMDgsIDIyMSwgMzEsIDE2LCAyNDUsIDc4LCAyMDgsIDIyMSwgMzEsIDE2LCAyMTksIDIxOCwgCisgICAgMjUxLCAwLCAzMSwgMTYsIDIxOSwgMjE4LCAyNDgsIDIxMSwgMzEsIDE2LCAyMTcsIDM3LCAyNTEsIDAsIDMxLCAxNiwgMjE3LCAKKyAgICAzNywgMjQ4LCAyMTEsIDMxLCAxNiwgMjIzLCAyMjksIDIxNiwgODUsIDMxLCAxNiwgMjA0LCAzMSwgMjE2LCA4NSwgMzEsIAorICAgIDE2LCAxNjIsIDIxNiwgODUsIDMxLCAxNiwgMjE3LCA1NiwgMjE2LCA4NSwgMzEsIDE2LCAyNDEsIDEzOSwgMjE2LCA4NSwgCisgICAgMzEsIDE2LCAyMTIsIDgxLCAyMTYsIDg1LCAzMSwgMTYsIDIwOSwgNTEsIDIxNiwgODUsIDMxLCAxNiwgMjEyLCA3MywgMjE2LCAKKyAgICA4NSwgMzEsIDE2LCAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMTYsIDg1LCAzMSwgMTYsIDIwMywgMTk3LCAyMjEsIDE1NiwgCisgICAgMzEsIDE2LCA5MSwgMjIxLCAxNTYsIDMxLCAxNiwgMjQ2LCA2MiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAzMSwgMTYsIDUxLCAKKyAgICAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCA1MSwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAKKyAgICAxNTcsIDExMiwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgCisgICAgODYsIDIyMSwgMTU3LCA0OSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNDksIDI0OCwgNDMsIDMxLCAKKyAgICAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjQ4LCAKKyAgICA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAKKyAgICAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCAKKyAgICA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAKKyAgICAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgCisgICAgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIxOSwgNzcsIDIyMSwgMTU2LCAzMSwgCisgICAgMTYsIDIwNSwgMTgzLCAyMjEsIDE1NiwgMzEsIDE2LCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMjEsIDQ5LCAyMjEsIAorICAgIDE1NiwgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDI0OCwgCisgICAgNDMsIDMxLCAxNiwgMjQ3LCAyMTQsIDMxLCAxNiwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgMTYyLCAyMjEsIDE2MCwgCisgICAgMzEsIDE2LCAyMTcsIDU2LCAyMjEsIDE2MCwgMzEsIDE2LCAyNDEsIDEzOSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA4MSwgCisgICAgMjIxLCAxNjAsIDMxLCAxNiwgMjA5LCA1MSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA3MywgMjIxLCAxNjAsIDMxLCAxNiwgCisgICAgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjIxLCAxNjAsIDMxLCAxNiwgMzksIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIxMSwgCisgICAgMTg0LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMDgsIDk0LCAzMSwgMTYsIDM5LCAyMDgsIDkzLCAzMSwgMTYsIDM5LCAyMDgsIAorICAgIDkyLCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5NCwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTMsIDMxLCAxNiwgMjQwLCAwLCAKKyAgICAyMDgsIDkyLCAzMSwgMTYsIDM5LCAyNTAsIDMxLCAyNDMsIDg1LCAzMSwgMTYsIDM5LCAyMzksIDIyNCwgMzEsIDE2LCAzOSwgCisgICAgMjM5LCAyMjMsIDMxLCAxNiwgMzksIDIzOSwgMjIyLCAzMSwgMTYsIDM5LCAyMzksIDIyMSwgMzEsIDE2LCAzOSwgMjM5LCAKKyAgICAyMjAsIDMxLCAxNiwgMjQ4LCAxNDIsIDI0OCwgMTU5LCAzMSwgMTYsIDI0MSwgODQsIDI0OCwgMTU5LCAzMSwgMTYsIDI0OCwgCisgICAgMTQyLCAyMDgsIDI1MCwgMzEsIDE2LCAyNDEsIDg0LCAyMDgsIDI1MCwgMzEsIDE2LCAyNDgsIDE0MiwgMjEyLCAzNywgMzEsIAorICAgIDE2LCAyNDEsIDg0LCAyMTIsIDM3LCAzMSwgMTYsIDI0OCwgMTQyLCAyMTgsIDE3NCwgMzEsIDE2LCAyNDEsIDg0LCAyMTgsIAorICAgIDE3NCwgMzEsIDE2LCAzOSwgMjUxLCAxMzgsIDMxLCAxNiwgMzksIDIxMSwgMTA1LCAzMSwgMTYsIDM5LCAyMDksIDE0MCwgCisgICAgMzEsIDE2LCAzOSwgMjExLCAxMDYsIDMxLCAxNiwgMzksIDIyNSwgOTYsIDMxLCAxNiwgMzksIDIyNSwgOTUsIDMxLCAxNiwgCisgICAgMzksIDI1MSwgMTM3LCAzMSwgMTYsIDM5LCAyMjcsIDIsIDMxLCAxNiwgMjUwLCAxMDAsIDIwNiwgMjI0LCAzMSwgMTYsIAorICAgIDI1MCwgMTAwLCAyNDIsIDcwLCAzMSwgMTYsIDM5LCAyNDMsIDEwMCwgMzEsIDE2LCAzOSwgMjE1LCAyNDksIDMxLCAxNiwgCisgICAgMzksIDIzOSwgMjA2LCAzMSwgMTYsIDM5LCAyMTIsIDMzLCAzMSwgMTYsIDM5LCAyNDgsIDEyMCwgMzEsIDE2LCAzOSwgNTIsIAorICAgIDIwOCwgMTUwLCAzMSwgMTYsIDM5LCAyMDgsIDcwLCAyMDgsIDE1MCwgMzEsIDE2LCAyMTUsIDI1NCwgMzEsIDE2LCAyMTEsIAorICAgIDAsIDMxLCAxNiwgMjAyLCAxNTksIDMxLCAxNiwgMjE4LCAxNjYsIDMxLCAxNiwgMjI0LCAyMDYsIDMxLCAxNiwgMjM5LCAKKyAgICAxNTUsIDMxLCAxNiwgMjQ1LCAxNDAsIDMxLCAxNiwgMjQ0LCA2MiwgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjEyLCAKKyAgICA1NywgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjIxLCAxOTIsIDIxMiwgNTcsIDMxLCAxNiwgMjA4LCAxMjAsIDMxLCAKKyAgICAxNiwgMjA3LCAxNzUsIDMxLCAxNiwgMjMwLCAyMzksIDIwNywgMTc1LCAzMSwgMTYsIDIwNywgMTc2LCAyMTIsIDU3LCAzMSwgCisgICAgMTYsIDIwNywgMTc2LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAzMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKKyAgICAyOCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNywgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNiwgMzEsIDE2LCAyMTksIAorICAgIDIzNCwgMjExLCAyNSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMywgMzEsIAorICAgIDE2LCAyMTksIDIzNCwgMjExLCAyMiwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKKyAgICAzMCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyOSwgMzEsIDE2LCAyMzcsIDc1LCAzMSwgMTYsIDIyMiwgMjM4LCAzMSwgMTYsIAorICAgIDI0MSwgODQsIDc2LCAyMTEsIDY3LCAzMSwgMTYsIDI0NCwgNTUsIDIxMiwgNTcsIDMxLCAxNiwgMzksIDEyMSwgMjQ3LCAKKyAgICAyNDAsIDMxLCAxNiwgMzksIDExMiwgMjQ3LCAyNDAsIDMxLCAxNiwgMzksIDIzNywgODgsIDMxLCAxNiwgMzksIDIxMiwgMjMsIAorICAgIDIxOCwgOTksIDMxLCAxNiwgMjE5LCAyOCwgODIsIDMxLCAxNiwgMjE5LCAyOCwgMTEyLCA4MiwgMzEsIDE2LCAxNjIsIDIxOSwgCisgICAgMjgsIDgyLCAzMSwgMTYsIDIzOCwgNDcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOCwgNDcsIDI0MiwgNzAsIDMxLCAxNiwgMywgCisgICAgMjM5LCAyNTUsIDMxLCAxNiwgMjQ0LCAxNjgsIDMxLCAxNiwgMjQ0LCAxNjksIDI1MSwgMTQsIDMxLCAxNiwgMjI1LCA2NSwgCisgICAgMzEsIDE2LCAyMjcsIDIwLCAzMSwgMTYsIDI0NywgMjExLCAzMSwgMTYsIDIxMywgMTQ3LCAyMDQsIDMzLCAzMSwgMTYsIAorICAgIDIxMywgMTQ3LCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMTA2LCAzMSwgMTYsIDIyNCwgMTA3LCAyNDgsIDQzLCAzMSwgMTYsIAorICAgIDIxMywgMTQxLCAyMDQsIDMzLCAzMSwgMTYsIDIxMywgMTQxLCAyNDgsIDQzLCAzMSwgMTYsIDIzOSwgOTMsIDIwNCwgMzMsIAorICAgIDMxLCAxNiwgMjM5LCA5MywgMjQ4LCA0MywgMzEsIDE2LCAyMjcsIDIxLCAyMTgsIDI0NCwgMjE2LCA4NSwgMzEsIDE2LCAKKyAgICAyMjcsIDIxLCAyMzEsIDU0LCAyMTYsIDg1LCAzMSwgMTYsIDI0NywgMjEyLCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQ3LCAKKyAgICAyMTYsIDg1LCAzMSwgMTYsIDIyNCwgMTA3LCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQxLCAyMTYsIDg1LCAzMSwgMTYsIAorICAgIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAKKyAgICAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAKKyAgICAyMTcsIDIxNiwgMjE4LCAyNDQsIDI0MywgMTgxLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAKKyAgICAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIAorICAgIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODEsIDMxLCAxNiwgCisgICAgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODAsIDMxLCAxNiwgMjA5LCAKKyAgICAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxNzksIDMxLCAxNiwgMjQ1LCAxMzMsIAorICAgIDMxLCAxNiwgMjM3LCAyNDMsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDIzNywgMjQzLCAyNDAsIDE3NSwgMjQ2LCAzMCwgCisgICAgMzEsIDE2LCA1MSwgMjQ5LCAyNTUsIDMxLCAxNiwgMjA1LCAyMDMsIDMxLCAxNiwgMjE4LCA2NiwgMzEsIDE2LCAyNDYsIDIxLCAKKyAgICAzMSwgMTYsIDIxNCwgMjAwLCAzMSwgMTYsIDI0NiwgMjUsIDMxLCAxNiwgMjA4LCAxMzgsIDMxLCAxNiwgMjE4LCAzNiwgMzEsIAorICAgIDE2LCAyMTgsIDM3LCAyMzksIDIwOSwgMzEsIDE2LCAyMTQsIDIwMSwgMjM5LCAyMDksIDMxLCAxNiwgMjA4LCAxMzksIDIxNiwgCisgICAgODIsIDMxLCAxNiwgMjE4LCAyMjUsIDIxMCwgMjQ3LCAzMSwgMTYsIDIyOSwgOTAsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgCisgICAgMTYsIDIyOSwgOTAsIDI0MSwgODQsIDc2LCAyMTgsIDE1OSwgMzEsIDE2LCAyMjksIDkwLCA0NiwgMjIxLCAxNjAsIDMxLCAKKyAgICAxNiwgMjI5LCA5MCwgMjE2LCAxNTAsIDgyLCAzMSwgMTYsIDIyOSwgOTAsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIAorICAgIDIyOSwgOTAsIDE2MiwgMjIxLCAxNjAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgCisgICAgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgCisgICAgOTAsIDI0MSwgMTM5LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCA3MCwgMzEsIDE2LCAyMjksIDkwLCAyNDEsIDEzOSwgMjIxLCAKKyAgICAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgOTAsIDIzOSwgMjE3LCA1NCwgMzAsIDIwNSwgMTg4LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxNDgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDEyNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTEyLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDUsIAorICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwMywgMzAsIAorICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjA1LCAKKyAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDQsIDMwLCAyMDUsIDE4OCwgCisgICAgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MiwgMzAsIDIwNSwgMTg4LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxNDEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDEzOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTM2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzQsIAorICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIAorICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTEwLCAzMCwgMjA1LCAKKyAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDgsIDMwLCAyMDUsIDE4OCwgCisgICAgMjIxLCAxNjQsIDIxMCwgMTA3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKKyAgICAyMTAsIDEzNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTIsIAorICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjMxLCAKKyAgICA1LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIzMSwgNSwgMjIxLCAKKyAgICAxNjQsIDIxMCwgMTQ0LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAorICAgIDE0MCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAKKyAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgMjMxLCA1LCAKKyAgICAyMjEsIDE2NCwgMjEwLCAxMzEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAorICAgIDIxMCwgMTI5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNiwgCisgICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjQsIDMwLCAyMzEsIAorICAgIDUsIDIyMSwgMTY0LCAyMTAsIDEyMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIyLCAzMCwgMjMxLCA1LCAyMjEsIAorICAgIDE2NCwgMjEwLCAxMjEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCisgICAgMTE4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNiwgMzAsIAorICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTQsIDMwLCAyMzEsIDUsIAorICAgIDIyMSwgMTY0LCAyMTAsIDExMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCisgICAgMjEwLCAxMTAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA4LCAKKyAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDcsIDM5LCAzMCwgMzEsIDIwOCwgNjYsIDM5LCAzMCwgMzEsIDIwOSwgCisgICAgMTI0LCAzOSwgMzAsIDMxLCAyMTgsIDI1MywgMzAsIDMxLCAyMjcsIDIwNCwgMjI0LCA0NSwgMzUsIDI0MSwgMTc5LCAyNDMsIAorICAgIDE5NSwgMzUsIDIzNywgNTAsIDI0MSwgMTc5LCAyNDMsIDE5NSwgMzUsIDIzNiwgMTYsIDI0MSwgMTc5LCAyNDMsIDE5NSwgCisgICAgMzUsIDI0MSwgMTc4LCAyMzcsIDUxLCAyNDMsIDE5NSwgMzUsIDI0MSwgMTc4LCAyMzYsIDE1LCAyNDMsIDE5NSwgMzUsIAorICAgIDI0MSwgMTc5LCAyMDksIDEyNiwgMzUsIDI0NiwgMjE3LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAyLCAyNDYsIDYxLCAyMDksIAorICAgIDEyNiwgMzUsIDIyNCwgOTgsIDIwOSwgMTI2LCAzNSwgMjQ4LCAyMjEsIDIwOSwgMTI2LCAzNSwgMjI5LCAxOTUsIDIxMiwgCisgICAgMzYsIDIwOSwgMTI2LCAzNSwgMjQ1LCAxODUsIDIwOSwgMTI2LCAzNSwgMjUwLCA3NywgMjA5LCAxMjYsIDM1LCAyMTksIAorICAgIDI1MCwgMjA5LCAxMjYsIDM1LCAyNDcsIDIyMSwgMjE5LCAyMTEsIDIwOSwgMTI2LCAzNSwgMjQ0LCA1NywgMjE5LCAyNDUsIAorICAgIDI0MywgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTQ1LCAyMDksIDEyNiwgMzUsIDIwMiwgMjI1LCAyMDksIDEyNiwgMzUsIAorICAgIDIzMSwgNDAsIDIwOSwgMTI2LCAzNSwgMjE5LCA3LCAyMDksIDEyNiwgMzUsIDIxNiwgMTU3LCAyMDksIDEyNiwgMzUsIDI0NSwgCisgICAgMTk3LCAyMDksIDEyNiwgMzUsIDIzNiwgMTI3LCAyNDksIDI1LCAyMDksIDEyNiwgMzUsIDIwNCwgMTAzLCAyMDksIDEyNiwgCisgICAgMzUsIDIzOSwgMTgxLCAyMDksIDEyNiwgMzUsIDI1MSwgMTEyLCAyMDksIDEyNiwgMzUsIDIxNiwgMTE0LCAyMDksIDEyNiwgCisgICAgMzUsIDIxNiwgODksIDIwOSwgMTI2LCAzNSwgMjQxLCAxNzcsIDIwOSwgMTI2LCAzNSwgMjMwLCA4NSwgMjA5LCAxMjYsIDM1LCAKKyAgICAyNDUsIDE5MiwgMjA5LCAxMjYsIDM1LCAyNDEsIDgzLCAyMDksIDEyNiwgMzUsIDI0MiwgMTUsIDIwOSwgMTI2LCAzNSwgCisgICAgMjQ2LCAxODYsIDIwOSwgMTI2LCAzNSwgMjQ0LCA2NywgMjA5LCAxMjYsIDM1LCAyNiwgMjE2LCA4OCwgMjA5LCAxMjYsIDM1LCAKKyAgICAyMTksIDE2MCwgMjA5LCAxMjYsIDM1LCAyMjcsIDIwOCwgMjA5LCAxMjYsIDM1LCAyNDYsIDE0LCAyMDksIDEyNiwgMzUsIAorICAgIDIyOSwgODAsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTQsIDIwOSwgMTI2LCAzNSwgMjExLCA0MywgMjA5LCAxMjYsIDM1LCAKKyAgICAyMTcsIDE2OCwgMjA5LCAxMjYsIDM1LCAyMzksIDEwMSwgMjA5LCAxMjYsIDM1LCAyMTYsIDkwLCAyMDksIDEyNiwgMzUsIAorICAgIDIyNywgMjQ3LCAyMTksIDI0NSwgMjI0LCA3OCwgMjA5LCAxMjYsIDM1LCAyMTYsIDg2LCAyMDksIDEyNiwgMzUsIDIzOCwgCisgICAgMzMsIDIwOCwgMTczLCAyMjUsIDMsIDIwOSwgMTI2LCAzNSwgMjQxLCA4NSwgMjA5LCAxMjYsIDM1LCAyMTEsIDU2LCAyMDksIAorICAgIDEyNiwgMzUsIDIzNywgMjQ1LCAyMDksIDEyNiwgMzUsIDI0MSwgNzYsIDIwOSwgMTI2LCAzNSwgMjE5LCA1MCwgMjA5LCAKKyAgICAxMjYsIDM1LCAyMTUsIDI0MiwgMjA5LCAxMjYsIDM1LCAyMzksIDIwNywgMjA5LCAxMjYsIDM1LCAyMDYsIDY0LCAyMTksIAorICAgIDI0NSwgMjA0LCA4NCwgMjA5LCAxMjYsIDM1LCAyNDUsIDIwMiwgMjA5LCAxMjYsIDM1LCAyMjUsIDE4LCAyMDksIDEyNiwgCisgICAgMzUsIDI0MCwgMjQ1LCAyMDksIDEyNiwgMzUsIDIwNiwgMjM0LCAyMDksIDEyNiwgMzUsIDI0MywgMTgyLCAyMDksIDEyNiwgCisgICAgMzUsIDI0NiwgMTYsIDIyNCwgNywgMjA5LCAxMjYsIDM1LCAyMzcsIDIyMiwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNSwgMjMxLCAKKyAgICA0OSwgMjA5LCAxMjYsIDM1LCAyMjUsIDczLCAyMDksIDEyNiwgMzUsIDI1MSwgMTMzLCAyMDksIDEyNiwgMzUsIDI0MSwgCisgICAgMTAxLCAyMDksIDEyNiwgMzUsIDI0MiwgNzQsIDIwOSwgMTI2LCAzNSwgMjA0LCA4MiwgMjA5LCAxMjYsIDM1LCAyMTIsIAorICAgIDExNSwgMjA5LCAxMjYsIDM1LCAyMzEsIDE0LCAyMDksIDEyNiwgMzUsIDI0NCwgMjUsIDIwOSwgMTI2LCAzNSwgMjQ0LCAKKyAgICAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNzgsIDIwOSwgMTI2LCAzNSwgMjQwLCAyMDksIDIwOSwgMTI2LCAzNSwgMjEzLCAKKyAgICAxMDQsIDIwOSwgMTI2LCAzNSwgMjExLCA2MCwgMjA5LCAxMjYsIDM1LCAyMzcsIDkwLCAyMDksIDEyNiwgMzUsIDI0NSwgCisgICAgMjI2LCAyMDksIDEyNiwgMzUsIDI0NiwgMTEsIDIwOSwgMTI2LCAzNSwgMjQwLCA4NywgMjA5LCAxMjYsIDM1LCAyNTEsIDc2LCAKKyAgICAyMDksIDEyNiwgMzUsIDI0NSwgMjI1LCAyMDksIDEyNiwgMzUsIDIyMCwgMzIsIDIwOSwgOTMsIDIwNiwgNDEsIDIwOSwgCisgICAgMTI2LCAzNSwgMjQzLCAyMDQsIDIwOSwgMTI2LCAzNSwgMjI4LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjM5LCAxNTAsIDI0NSwgCisgICAgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDgsIAorICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAKKyAgICAxNDksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIAorICAgIDE3LCAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAKKyAgICAyMDYsIDIzNiwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIyMiwgNjMsIDI0NSwgMTUzLCAKKyAgICAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDgsIDI0NSwgCisgICAgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDksIAorICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAKKyAgICAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIAorICAgIDE0OCwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIyMiwgNjMsIDEzLCAyNiwgNiwgNjMsIAorICAgIDEzLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCA2LCAKKyAgICA3NCwgMTMsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCA2LCAyMzksIDc1LCAxMywgMjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIAorICAgIDYsIDc1LCAxMywgMjYsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgNiwgMTU5LCAxMywgMjYsIAorICAgIDYsIDIyNiwgMTg1LCAxMywgMjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDYsIDc4LCAxMywgMjYsIDYsIDIxOSwgMTg0LCAxMywgCisgICAgMjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDYsIDE0NiwgMTMsIDI2LCA2LCAxOTQsIDEzLCAyNiwgNiwgMjEwLCA2OSwgMTMsIAorICAgIDI2LCA2LCA2OCwgMTMsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCA2LCAyMDMsIDE5NiwgCisgICAgMTMsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCA1LCA2MywgMTMsIDI2LCA1LCAyNDksIAorICAgIDI1NSwgMTMsIDI2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDUsIDc0LCAxMywgMjYsIDUsIAorICAgIDI0MCwgMTc0LCAxMywgMjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgNSwgNzUsIDEzLCAyNiwgCisgICAgNSwgMjMwLCAxODQsIDEzLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDI2LCA1LCAxNTksIDEzLCAyNiwgNSwgMjI2LCAxODUsIDEzLCAKKyAgICAyNiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgNSwgNzgsIDEzLCAyNiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgNSwgMjE3LCAxMzQsIAorICAgIDEzLCAyNiwgNSwgMTQ2LCAxMywgMjYsIDUsIDE5NCwgMTMsIDI2LCA1LCAyMTAsIDY5LCAxMywgMjYsIDUsIDY4LCAxMywgCisgICAgMjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDUsIAorICAgIDIwMywgMTI0LCAxMywgMjYsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDYsIDYzLCAxMywgMzcsIDYsIDI0OSwgMjU1LCAxMywgCisgICAgMzcsIDYsIDI0NywgMTI1LCAxMywgMzcsIDYsIDI0NSwgNTEsIDEzLCAzNywgNiwgNzQsIDEzLCAzNywgNiwgMjQwLCAxNzQsIAorICAgIDEzLCAzNywgNiwgMjM5LCA3NSwgMTMsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDM3LCA2LCA3NSwgMTMsIDM3LCA2LCAyMzAsIAorICAgIDE4NCwgMTMsIDM3LCA2LCAyMzAsIDU0LCAxMywgMzcsIDYsIDE1OSwgMTMsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDM3LCA2LCAKKyAgICAyMjMsIDE2MywgMTMsIDM3LCA2LCA3OCwgMTMsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIAorICAgIDM3LCA2LCAxNDYsIDEzLCAzNywgNiwgMTk0LCAxMywgMzcsIDYsIDIxMCwgNjksIDEzLCAzNywgNiwgNjgsIDEzLCAzNywgNiwgCisgICAgMjA2LCAxNjQsIDEzLCAzNywgNiwgMjA0LCAxNDQsIDEzLCAzNywgNiwgMjAzLCAxOTYsIDEzLCAzNywgNiwgMjAzLCAxMjQsIAorICAgIDEzLCAzNywgNiwgMjAyLCAxNTksIDEzLCAzNywgNSwgNjMsIDEzLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAzNywgNSwgMjQ3LCAKKyAgICAxMjUsIDEzLCAzNywgNSwgMjQ1LCA1MSwgMTMsIDM3LCA1LCA3NCwgMTMsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDM3LCA1LCAKKyAgICAyMzksIDc1LCAxMywgMzcsIDUsIDc1LCAxMywgMzcsIDUsIDIzMCwgMTg0LCAxMywgMzcsIDUsIDIzMCwgNTQsIDEzLCAzNywgCisgICAgNSwgMTU5LCAxMywgMzcsIDUsIDIyNiwgMTg1LCAxMywgMzcsIDUsIDIyMywgMTYzLCAxMywgMzcsIDUsIDc4LCAxMywgMzcsIAorICAgIDUsIDIxOSwgMTg0LCAxMywgMzcsIDUsIDIxNywgMTM0LCAxMywgMzcsIDUsIDE0NiwgMTMsIDM3LCA1LCAxOTQsIDEzLCAzNywgCisgICAgNSwgMjEwLCA2OSwgMTMsIDM3LCA1LCA2OCwgMTMsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIAorICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAzNywgNiwgCisgICAgNjMsIDEzLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAzNywgNiwgMjQ1LCAKKyAgICA1MSwgMTMsIDI2LCAzNywgNiwgNzQsIDEzLCAyNiwgMzcsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDM3LCA2LCAyMzksIDc1LCAKKyAgICAxMywgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNiwgNzUsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgCisgICAgMjYsIDM3LCA2LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA2LCAxNTksIDEzLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgMjYsIAorICAgIDM3LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNiwgNzgsIDEzLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDM3LCAKKyAgICA2LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNiwgMTQ2LCAxMywgMjYsIDM3LCA2LCAxOTQsIDEzLCAyNiwgMzcsIDYsIDIxMCwgCisgICAgNjksIDEzLCAyNiwgMzcsIDYsIDY4LCAxMywgMjYsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAzNywgNiwgMjA0LCAxNDQsIAorICAgIDEzLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAzNywgNiwgMjAyLCAKKyAgICAxNTksIDEzLCAyNiwgMzcsIDUsIDYzLCAxMywgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIAorICAgIDEzLCAyNiwgMzcsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMzcsIDUsIDc0LCAxMywgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIAorICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDUsIDc1LCAxMywgMjYsIAorICAgIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNSwgMTU5LCAxMywgMjYsIDM3LCAKKyAgICA1LCAyMjYsIDE4NSwgMTMsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDUsIDc4LCAxMywgMjYsIDM3LCA1LCAKKyAgICAyMTksIDE4NCwgMTMsIDI2LCAzNywgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDI2LCAzNywgNSwgCisgICAgMTk0LCAxMywgMjYsIDM3LCA1LCAyMTAsIDY5LCAxMywgMjYsIDM3LCA1LCA2OCwgMTMsIDI2LCAzNywgNSwgMjA2LCAxNjQsIAorICAgIDEzLCAyNiwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNSwgMjAzLCAKKyAgICAxMjQsIDEzLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMTMyLCA2LCA2MywgMTMsIDEzMiwgNiwgMjQ3LCAxMjUsIDEzLCAKKyAgICAxMzIsIDYsIDI0NSwgNTEsIDEzLCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMTMyLCA2LCAKKyAgICAyMzAsIDU0LCAxMywgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDEzMiwgNiwgNzgsIDEzLCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgCisgICAgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDEzMiwgNiwgMTk0LCAxMywgMTMyLCA2LCAyMTAsIDY5LCAxMywgMTMyLCA2LCA2OCwgCisgICAgMTMsIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAorICAgIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMTMyLCA1LCA2MywgMTMsIDEzMiwgNSwgMjQ5LCAKKyAgICAyNTUsIDEzLCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMTMyLCA1LCAyNDUsIDUxLCAxMywgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIAorICAgIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAxMzIsIDUsIDc1LCAxMywgMTMyLCA1LCAyMzAsIDE4NCwgMTMsIDEzMiwgNSwgMjMwLCAKKyAgICA1NCwgMTMsIDEzMiwgNSwgMTU5LCAxMywgMTMyLCA1LCAyMjYsIDE4NSwgMTMsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAxMzIsIAorICAgIDUsIDIxOSwgMTg0LCAxMywgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDEzMiwgNSwgMTQ2LCAxMywgMTMyLCA1LCAxOTQsIDEzLCAKKyAgICAxMzIsIDUsIDIxMCwgNjksIDEzLCAxMzIsIDUsIDY4LCAxMywgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIDEzMiwgNSwgMjA0LCAKKyAgICAxNDQsIDEzLCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMTMyLCA1LCAyMDMsIDEyNCwgMTMsIDEzMiwgNSwgMjAyLCAxNTksIAorICAgIDEzLCAyNiwgMTMyLCA2LCA2MywgMTMsIDI2LCAxMzIsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNiwgMjQ3LCAxMjUsIAorICAgIDEzLCAyNiwgMTMyLCA2LCAyNDUsIDUxLCAxMywgMjYsIDEzMiwgNiwgNzQsIDEzLCAyNiwgMTMyLCA2LCAyNDAsIDE3NCwgCisgICAgMTMsIDI2LCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAyNiwgMTMyLCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDYsIDc1LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNiwgMTU5LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjI2LCAxODUsIDEzLCAyNiwgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDYsIDc4LCAKKyAgICAxMywgMjYsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDYsIDE0NiwgCisgICAgMTMsIDI2LCAxMzIsIDYsIDE5NCwgMTMsIDI2LCAxMzIsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA2LCA2OCwgMTMsIDI2LCAKKyAgICAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAorICAgIDI2LCAxMzIsIDYsIDIwMywgMTI0LCAxMywgMjYsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTMyLCA1LCA2MywgMTMsIAorICAgIDI2LCAxMzIsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTMyLCA1LCAyNDUsIDUxLCAKKyAgICAxMywgMjYsIDEzMiwgNSwgNzQsIDEzLCAyNiwgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxMzIsIDUsIDIzOSwgNzUsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDUsIDc1LCAxMywgMjYsIDEzMiwgNSwgMjMwLCAxODQsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNSwgMTU5LCAxMywgMjYsIDEzMiwgNSwgMjI2LCAxODUsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDUsIDc4LCAxMywgMjYsIDEzMiwgNSwgMjE5LCAxODQsIAorICAgIDEzLCAyNiwgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDUsIDE0NiwgMTMsIDI2LCAxMzIsIDUsIDE5NCwgMTMsIAorICAgIDI2LCAxMzIsIDUsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA1LCA2OCwgMTMsIDI2LCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgCisgICAgMjYsIDEzMiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTI0LCAKKyAgICAxMywgMjYsIDEzMiwgNSwgMjAyLCAxNTksIDEzLCAxNjYsIDYsIDYzLCAxMywgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDE2NiwgCisgICAgNiwgMjQ1LCA1MSwgMTMsIDE2NiwgNiwgNzQsIDEzLCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMTY2LCA2LCAyMzksIDc1LCAKKyAgICAxMywgMTY2LCA2LCAyMzAsIDE4NCwgMTMsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDE2NiwgNiwgMTU5LCAxMywgMTY2LCA2LCAKKyAgICAyMjYsIDE4NSwgMTMsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAxNjYsIDYsIDc4LCAxMywgMTY2LCA2LCAyMTksIDE4NCwgMTMsIAorICAgIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAxNjYsIDYsIDE5NCwgMTMsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDE2NiwgNiwgNjgsIAorICAgIDEzLCAxNjYsIDYsIDIwNiwgMTY0LCAxMywgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAKKyAgICAxNjYsIDYsIDIwMywgMTI0LCAxMywgMTY2LCA1LCA2MywgMTMsIDE2NiwgNSwgMjQ5LCAyNTUsIDEzLCAxNjYsIDUsIDI0NywgCisgICAgMTI1LCAxMywgMTY2LCA1LCAyNDUsIDUxLCAxMywgMTY2LCA1LCA3NCwgMTMsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAxNjYsIAorICAgIDUsIDIzOSwgNzUsIDEzLCAxNjYsIDUsIDIzNywgMTcxLCAxMywgMTY2LCA1LCA3NSwgMTMsIDE2NiwgNSwgMjMwLCAxODQsIAorICAgIDEzLCAxNjYsIDUsIDIzMCwgNTQsIDEzLCAxNjYsIDUsIDE1OSwgMTMsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAxNjYsIDUsIAorICAgIDIyMywgMTYzLCAxMywgMTY2LCA1LCA3OCwgMTMsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAxNjYsIDUsIDIxNywgMTM0LCAxMywgCisgICAgMTY2LCA1LCAxNDYsIDEzLCAxNjYsIDUsIDE5NCwgMTMsIDE2NiwgNSwgMjEwLCA2OSwgMTMsIDE2NiwgNSwgNjgsIDEzLCAKKyAgICAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMTY2LCA1LCAyMDQsIDE0NCwgMTMsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAxNjYsIDUsIAorICAgIDIwMywgMTI0LCAxMywgMTY2LCA1LCAyMDIsIDE1OSwgMTMsIDE2OSwgNiwgNjMsIDEzLCAxNjksIDYsIDI0OSwgMjU1LCAxMywgCisgICAgMTY5LCA2LCAyNDUsIDUxLCAxMywgMTY5LCA2LCA3NCwgMTMsIDE2OSwgNiwgMjQwLCAxNzQsIDEzLCAxNjksIDYsIDIzOSwgCisgICAgNzUsIDEzLCAxNjksIDYsIDc1LCAxMywgMTY5LCA2LCAyMzAsIDE4NCwgMTMsIDE2OSwgNiwgMjMwLCA1NCwgMTMsIDE2OSwgCisgICAgNiwgMTU5LCAxMywgMTY5LCA2LCAyMjYsIDE4NSwgMTMsIDE2OSwgNiwgNzgsIDEzLCAxNjksIDYsIDE5NCwgMTMsIDE2OSwgCisgICAgNiwgMjEwLCA2OSwgMTMsIDE2OSwgNiwgNjgsIDEzLCAxNjksIDYsIDIwNiwgMTY0LCAxMywgMTY5LCA2LCAyMDQsIDE0NCwgCisgICAgMTMsIDE2OSwgNiwgMjAzLCAxOTYsIDEzLCAxNjksIDYsIDIwMywgMTI0LCAxMywgMTY5LCA1LCA2MywgMTMsIDE2OSwgNSwgCisgICAgMjQ5LCAyNTUsIDEzLCAxNjksIDUsIDI0NywgMTI1LCAxMywgMTY5LCA1LCAyNDUsIDUxLCAxMywgMTY5LCA1LCA3NCwgMTMsIAorICAgIDE2OSwgNSwgMjQwLCAxNzQsIDEzLCAxNjksIDUsIDIzOSwgNzUsIDEzLCAxNjksIDUsIDIzNywgMTcxLCAxMywgMTY5LCA1LCAKKyAgICA3NSwgMTMsIDE2OSwgNSwgMjMwLCAxODQsIDEzLCAxNjksIDUsIDIzMCwgNTQsIDEzLCAxNjksIDUsIDE1OSwgMTMsIDE2OSwgCisgICAgNSwgMjI2LCAxODUsIDEzLCAxNjksIDUsIDIyMywgMTYzLCAxMywgMTY5LCA1LCA3OCwgMTMsIDE2OSwgNSwgMjE5LCAxODQsIAorICAgIDEzLCAxNjksIDUsIDIxNywgMTM0LCAxMywgMTY5LCA1LCAxNDYsIDEzLCAxNjksIDUsIDE5NCwgMTMsIDE2OSwgNSwgMjEwLCAKKyAgICA2OSwgMTMsIDE2OSwgNSwgNjgsIDEzLCAxNjksIDUsIDIwNiwgMTY0LCAxMywgMTY5LCA1LCAyMDQsIDE0NCwgMTMsIDE2OSwgCisgICAgNSwgMjAzLCAxOTYsIDEzLCAxNjksIDUsIDIwMywgMTI0LCAxMywgMTY5LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDYzLCAxMywgMjYsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDYsIAorICAgIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCA2LCA3NCwgMTMsIDI2LCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNiwgNzUsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA2LCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNiwgNzgsIDEzLCAyNiwgMTY2LCA2LCAKKyAgICAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNiwgMTQ2LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMTk0LCAxMywgMjYsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxNjYsIDYsIDY4LCAxMywgMjYsIDE2NiwgNiwgMjA2LCAKKyAgICAxNjQsIDEzLCAyNiwgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxNjYsIDYsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNiwgCisgICAgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDYzLCAxMywgMjYsIDE2NiwgNSwgCisgICAgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCAKKyAgICA1LCA3NCwgMTMsIDI2LCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNSwgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA1LCAxNTksIDEzLCAyNiwgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNSwgNzgsIDEzLCAyNiwgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAorICAgIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNSwgMTQ2LCAxMywgMjYsIDE2NiwgNSwgMTk0LCAxMywgMjYsIDE2NiwgNSwgMjEwLCAKKyAgICA2OSwgMTMsIDI2LCAxNjYsIDUsIDY4LCAxMywgMjYsIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgMTY2LCA1LCAyMDQsIAorICAgIDE0NCwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA1LCAKKyAgICAyMDIsIDE1OSwgMTMsIDQxLCA2LCA2MywgMTMsIDQxLCA2LCAyNDksIDI1NSwgMTMsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIAorICAgIDQxLCA2LCAyNDUsIDUxLCAxMywgNDEsIDYsIDc0LCAxMywgNDEsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDYsIDIzOSwgNzUsIAorICAgIDEzLCA0MSwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgNiwgNzUsIDEzLCA0MSwgNiwgMjMwLCAxODQsIDEzLCA0MSwgNiwgMjMwLCAKKyAgICA1NCwgMTMsIDQxLCA2LCAxNTksIDEzLCA0MSwgNiwgMjI2LCAxODUsIDEzLCA0MSwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgNiwgCisgICAgNzgsIDEzLCA0MSwgNiwgMjE5LCAxODQsIDEzLCA0MSwgNiwgMjE3LCAxMzQsIDEzLCA0MSwgNiwgMTQ2LCAxMywgNDEsIDYsIAorICAgIDE5NCwgMTMsIDQxLCA2LCAyMTAsIDY5LCAxMywgNDEsIDYsIDY4LCAxMywgNDEsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDYsIAorICAgIDIwNCwgMTQ0LCAxMywgNDEsIDYsIDIwMywgMTk2LCAxMywgNDEsIDYsIDIwMywgMTI0LCAxMywgNDEsIDYsIDIwMiwgMTU5LCAKKyAgICAxMywgNDEsIDUsIDYzLCAxMywgNDEsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDUsIDI0NywgMTI1LCAxMywgNDEsIDUsIDI0NSwgCisgICAgNTEsIDEzLCA0MSwgNSwgNzQsIDEzLCA0MSwgNSwgMjQwLCAxNzQsIDEzLCA0MSwgNSwgMjM5LCA3NSwgMTMsIDQxLCA1LCAKKyAgICAyMzcsIDE3MSwgMTMsIDQxLCA1LCA3NSwgMTMsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDQxLCA1LCAyMzAsIDU0LCAxMywgNDEsIAorICAgIDUsIDE1OSwgMTMsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDQxLCA1LCA3OCwgMTMsIDQxLCAKKyAgICA1LCAyMTksIDE4NCwgMTMsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDQxLCA1LCAxNDYsIDEzLCA0MSwgNSwgMTk0LCAxMywgNDEsIAorICAgIDUsIDIxMCwgNjksIDEzLCA0MSwgNSwgNjgsIDEzLCA0MSwgNSwgMjA2LCAxNjQsIDEzLCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAKKyAgICA0MSwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgNSwgMjAzLCAxMjQsIDEzLCA0MSwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDYsIAorICAgIDYzLCAxMywgNDEsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDYsIDI0NSwgCisgICAgNTEsIDEzLCA0MSwgMjYsIDYsIDc0LCAxMywgNDEsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgNiwgMjM5LCA3NSwgCisgICAgMTMsIDQxLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDYsIDc1LCAxMywgNDEsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIAorICAgIDQxLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNiwgMTU5LCAxMywgNDEsIDI2LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDYsIDc4LCAxMywgNDEsIDI2LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgCisgICAgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDYsIDE0NiwgMTMsIDQxLCAyNiwgNiwgMTk0LCAxMywgNDEsIDI2LCA2LCAyMTAsIAorICAgIDY5LCAxMywgNDEsIDI2LCA2LCA2OCwgMTMsIDQxLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDYsIDIwNCwgMTQ0LCAKKyAgICAxMywgNDEsIDI2LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDYsIDIwMiwgCisgICAgMTU5LCAxMywgNDEsIDI2LCA1LCA2MywgMTMsIDQxLCAyNiwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDUsIDI0NywgMTI1LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCA1LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjQwLCAxNzQsIDEzLCAKKyAgICA0MSwgMjYsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA1LCA3NSwgMTMsIDQxLCAKKyAgICAyNiwgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDUsIDE1OSwgMTMsIDQxLCAyNiwgCisgICAgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDUsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA1LCA3OCwgMTMsIDQxLCAyNiwgNSwgCisgICAgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDUsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDUsIAorICAgIDE5NCwgMTMsIDQxLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgNSwgNjgsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMTY0LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDUsIDIwMywgCisgICAgMTI0LCAxMywgNDEsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNiwgNjMsIDEzLCA0MSwgMzcsIDYsIDI0OSwgMjU1LCAKKyAgICAxMywgNDEsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAzNywgNiwgNzQsIDEzLCAKKyAgICA0MSwgMzcsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAorICAgIDQxLCAzNywgNiwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMzAsIDU0LCAxMywgNDEsIAorICAgIDM3LCA2LCAxNTksIDEzLCA0MSwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAzNywgCisgICAgNiwgNzgsIDEzLCA0MSwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAzNywgNiwgCisgICAgMTQ2LCAxMywgNDEsIDM3LCA2LCAxOTQsIDEzLCA0MSwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMzcsIDYsIDY4LCAxMywgCisgICAgNDEsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMzcsIDYsIDIwMywgMTk2LCAKKyAgICAxMywgNDEsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDUsIDYzLCAxMywgCisgICAgNDEsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDUsIDI0NSwgNTEsIDEzLCAKKyAgICA0MSwgMzcsIDUsIDc0LCAxMywgNDEsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAKKyAgICAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMzcsIDUsIDc1LCAxMywgNDEsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgCisgICAgNSwgMjMwLCA1NCwgMTMsIDQxLCAzNywgNSwgMTU5LCAxMywgNDEsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNSwgCisgICAgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIDUsIDc4LCAxMywgNDEsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNSwgMjE3LCAKKyAgICAxMzQsIDEzLCA0MSwgMzcsIDUsIDE0NiwgMTMsIDQxLCAzNywgNSwgMTk0LCAxMywgNDEsIDM3LCA1LCAyMTAsIDY5LCAxMywgCisgICAgNDEsIDM3LCA1LCA2OCwgMTMsIDQxLCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIAorICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAzNywgNSwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDUsIDIwMiwgMTU5LCAxMywgCisgICAgNDEsIDI2LCAzNywgNiwgNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NywgCisgICAgMTI1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDYsIDc0LCAxMywgNDEsIDI2LCAzNywgCisgICAgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKKyAgICA0MSwgMjYsIDM3LCA2LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAKKyAgICA1NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgCisgICAgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIAorICAgIDI2LCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAxOTQsIDEzLCAKKyAgICA0MSwgMjYsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDI2LCAzNywgNiwgNjgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIAorICAgIDE2NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgNjMsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDI2LCAzNywgCisgICAgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NSwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCA0MSwgCisgICAgMjYsIDM3LCA1LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAxMzQsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTAsIAorICAgIDY5LCAxMywgNDEsIDI2LCAzNywgNSwgNjgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDEyNCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgNjMsIDEzLCAyMjQsIDQxLCA2LCAyNDksIAorICAgIDI1NSwgMTMsIDIyNCwgNDEsIDYsIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNiwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDYsIAorICAgIDc0LCAxMywgMjI0LCA0MSwgNiwgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA2LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCA2LCA3NSwgMTMsIDIyNCwgNDEsIDYsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDYsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA2LCA3OCwgMTMsIDIyNCwgNDEsIDYsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCisgICAgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA2LCAxNDYsIDEzLCAyMjQsIDQxLCA2LCAxOTQsIDEzLCAyMjQsIDQxLCA2LCAyMTAsIAorICAgIDY5LCAxMywgMjI0LCA0MSwgNiwgNjgsIDEzLCAyMjQsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDYsIDIwNCwgCisgICAgMTQ0LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxOTYsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDYsIAorICAgIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNSwgNjMsIDEzLCAyMjQsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDIyNCwgNDEsIDUsIAorICAgIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNSwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDUsIDc0LCAxMywgMjI0LCA0MSwgNSwgCisgICAgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA1LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNSwgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCAKKyAgICA1LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDUsIAorICAgIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNSwgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA1LCAKKyAgICA3OCwgMTMsIDIyNCwgNDEsIDUsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA1LCAKKyAgICAxNDYsIDEzLCAyMjQsIDQxLCA1LCAxOTQsIDEzLCAyMjQsIDQxLCA1LCAyMTAsIDY5LCAxMywgMjI0LCA0MSwgNSwgNjgsIAorICAgIDEzLCAyMjQsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDUsIDIwNCwgMTQ0LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAKKyAgICAxOTYsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDI0MywgCisgICAgODQsIDc1LCAxMywgMzcsIDUsIDI0MywgODQsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDI1MSwgMiwgMTMsIDI2LCA2LCAyNDgsIAorICAgIDEwNiwgMTMsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDI2LCA2LCAyNDQsIDM3LCAxMywgMjYsIDYsIDI0MSwgMzcsIDEzLCAyNiwgCisgICAgNiwgMjAyLCA4MywgMTMsIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCA2LCAyMDksIDc0LCAxMywgMjYsIDYsIDIzMCwgMjMwLCAKKyAgICAxMywgMjYsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDYsIDIyOCwgMjQsIDEzLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCAyNiwgNiwgCisgICAgMjIxLCA4NCwgMTMsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCA2LCAyMjAsIDM0LCAxMywgMjYsIDYsIDIxOCwgMTY3LCAKKyAgICAxMywgMjYsIDYsIDIxNiwgNTksIDEzLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCAyNiwgCisgICAgNiwgMjA5LCAyMDcsIDEzLCAyNiwgNiwgMjA2LCAyMTYsIDEzLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCAyNiwgNiwgMjQ2LCAKKyAgICAxNDIsIDEzLCAyNiwgNiwgMjE3LCAyMDIsIDEzLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDI2LCAyMjMsIDEwMSwgMTMsIDI2LCAKKyAgICA1LCAyNTEsIDIsIDEzLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCAyNiwgNSwgMjQ0LCAzNywgCisgICAgMTMsIDI2LCA1LCAyNDEsIDM3LCAxMywgMjYsIDUsIDIwMiwgODMsIDEzLCAyNiwgNSwgMjQwLCAyNDgsIDEzLCAyNiwgNSwgCisgICAgMjA5LCA3NCwgMTMsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCA1LCAyMjksIDI0NywgMTMsIDI2LCA1LCAyMjgsIDI0LCAKKyAgICAxMywgMjYsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDUsIDIyMSwgODQsIDEzLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCAyNiwgNSwgCisgICAgMjIwLCAzNCwgMTMsIDI2LCA1LCAyMTgsIDE2NywgMTMsIDI2LCA1LCAyMTYsIDU5LCAxMywgMjYsIDUsIDQ2LCAyMTIsIAorICAgIDE0NCwgMTMsIDI2LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCA1LCAyMDksIDIwNywgMTMsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIAorICAgIDI2LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDI2LCA1LCAKKyAgICAyMjAsIDM2LCAxMywgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDI0MSwgMzgsIDk3LCAxMywgMjYsIDIwOSwgNzUsIAorICAgIDk3LCAxMywgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCAKKyAgICAyNiwgMjE4LCAxNjgsIDk3LCAxMywgMzcsIDYsIDI1MSwgMiwgMTMsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDM3LCA2LCAyMzgsIAorICAgIDIzNSwgMTMsIDM3LCA2LCAyNDQsIDM3LCAxMywgMzcsIDYsIDI0MSwgMzcsIDEzLCAzNywgNiwgMjAyLCA4MywgMTMsIDM3LCAKKyAgICA2LCAyNDAsIDI0OCwgMTMsIDM3LCA2LCAyMDksIDc0LCAxMywgMzcsIDYsIDIzMCwgMjMwLCAxMywgMzcsIDYsIDIyOSwgCisgICAgMjQ3LCAxMywgMzcsIDYsIDIyOCwgMjQsIDEzLCAzNywgNiwgMjIzLCAyNDYsIDEzLCAzNywgNiwgMjIxLCA4NCwgMTMsIDM3LCAKKyAgICA2LCAyMDMsIDE3MCwgMTMsIDM3LCA2LCAyMjAsIDM0LCAxMywgMzcsIDYsIDIxOCwgMTY3LCAxMywgMzcsIDYsIDIxNiwgNTksIAorICAgIDEzLCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCAzNywgNiwgMjEyLCAxNDQsIDEzLCAzNywgNiwgMjA5LCAyMDcsIDEzLCAzNywgCisgICAgNiwgMjA2LCAyMTYsIDEzLCAzNywgNiwgMjE4LCAxOTIsIDEzLCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAzNywgNiwgMjE3LCAKKyAgICAyMDIsIDEzLCAzNywgNiwgMjIwLCAzNiwgMTMsIDM3LCAyMjMsIDEwMSwgMTMsIDM3LCA1LCAyNTEsIDIsIDEzLCAzNywgNSwgCisgICAgMjQ4LCAxMDYsIDEzLCAzNywgNSwgMjM4LCAyMzUsIDEzLCAzNywgNSwgMjQ0LCAzNywgMTMsIDM3LCA1LCAyNDEsIDM3LCAKKyAgICAxMywgMzcsIDUsIDIwMiwgODMsIDEzLCAzNywgNSwgMjQwLCAyNDgsIDEzLCAzNywgNSwgMjA5LCA3NCwgMTMsIDM3LCA1LCAKKyAgICAyMzAsIDIzMCwgMTMsIDM3LCA1LCAyMjksIDI0NywgMTMsIDM3LCA1LCAyMjgsIDI0LCAxMywgMzcsIDUsIDIyMywgMjQ2LCAKKyAgICAxMywgMzcsIDUsIDIyMSwgODQsIDEzLCAzNywgNSwgMjAzLCAxNzAsIDEzLCAzNywgNSwgMjIwLCAzNCwgMTMsIDM3LCA1LCAKKyAgICAyMTgsIDE2NywgMTMsIDM3LCA1LCAyMTYsIDU5LCAxMywgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDM3LCA1LCAyMTIsIAorICAgIDE0NCwgMTMsIDM3LCA1LCAyMDksIDIwNywgMTMsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIAorICAgIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDM3LCA1LCAyMjAsIDM2LCAxMywgMzcsIDIxOSwgCisgICAgNjksIDI0MywgMjA1LCAxMywgMzcsIDI0MSwgMzgsIDk3LCAxMywgMzcsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDIyOSwgMjQ4LCAKKyAgICA5NywgMTMsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCAzNywgMjE2LCA2MCwgOTcsIDEzLCAzNywgMjE4LCAxNjgsIDk3LCAxMywgCisgICAgMjYsIDM3LCA2LCAyNTEsIDIsIDEzLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIAorICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDI2LCAzNywgNiwgMjAyLCA4MywgMTMsIAorICAgIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMjMwLCAxMywgCisgICAgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDI2LCAzNywgNiwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCAKKyAgICAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgCisgICAgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIAorICAgIDEzLCAyNiwgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNiwgMjA2LCAKKyAgICAyMTYsIDEzLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNiwgCisgICAgMjE3LCAyMDIsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgMjYsIDM3LCA1LCAKKyAgICAyNTEsIDIsIDEzLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCAzNywgNSwgCisgICAgMjQ0LCAzNywgMTMsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDI2LCAzNywgNSwgCisgICAgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDUsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDM3LCA1LCAKKyAgICAyMjksIDI0NywgMTMsIDI2LCAzNywgNSwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCAyNiwgMzcsIDUsIAorICAgIDIyMSwgODQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgMjYsIDM3LCA1LCAKKyAgICAyMTgsIDE2NywgMTMsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMjYsIAorICAgIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMjE2LCAxMywgCisgICAgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAKKyAgICAxMywgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAzNywgMjQxLCAKKyAgICAzOCwgOTcsIDEzLCAyNiwgMzcsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMzcsIAorICAgIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjUxLCAyLCAxMywgNDEsIDI2LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCisgICAgMjYsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDYsIDIwMiwgODMsIDEzLCA0MSwgCisgICAgMjYsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDYsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDYsIDIyMywgMjQ2LCAxMywgNDEsIAorICAgIDI2LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDQxLCAKKyAgICAyNiwgNiwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgCisgICAgNDEsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMjE2LCAKKyAgICAxMywgNDEsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDYsIDIxNywgCisgICAgMjAyLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMjMsIDEwMSwgMTMsIDQxLCAyNiwgNSwgMjUxLCAyLCAKKyAgICAxMywgNDEsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDUsIDI0NCwgMzcsIAorICAgIDEzLCA0MSwgMjYsIDUsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMjQ4LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyMDksIDc0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgNSwgMjI5LCAyNDcsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCA1LCAyMjEsIDg0LCAKKyAgICAxMywgNDEsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgNSwgMjE4LCAxNjcsIAorICAgIDEzLCA0MSwgMjYsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjEyLCAKKyAgICAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgNSwgCisgICAgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDUsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgCisgICAgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDI0MSwgMzgsIDk3LCAxMywgCisgICAgNDEsIDI2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE5MywgOTcsIAorICAgIDEzLCA0MSwgMjYsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCA2LCAKKyAgICAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAorICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIAorICAgIDgzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCAKKyAgICAzNywgNiwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOCwgMjQsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIAorICAgIDQxLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMzcsIAorICAgIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIDIxNiwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA2LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIAorICAgIDQxLCAyNiwgMzcsIDUsIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNSwgCisgICAgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDQxLCAKKyAgICAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgCisgICAgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAKKyAgICAzNywgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMjIxLCA4NCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIAorICAgIDUsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgCisgICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIAorICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAKKyAgICAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMzcsIDI0MSwgMzgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjA5LCA3NSwgCisgICAgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCA0MSwgCisgICAgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDI2LCA2LCAyNDMsIDE5OSwgCisgICAgMTMsIDI2LCA1LCAyNDMsIDE5OSwgMTMsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDI2LCAxNywgMTA1LCAxMywgMjYsIDE3LCAKKyAgICAxMDgsIDEzLCAyNiwgMTcsIDE0NywgMTMsIDI2LCAxNywgMTQ5LCAxMywgMjYsIDE3LCAxNzAsIDEzLCAyNiwgMTcsIDE5NSwgCisgICAgMTMsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCAyNiwgMTcsIDE5OSwgMTMsIDI2LCAxNywgMjIyLCA2MywgMTMsIDE2OSwgMTcsIAorICAgIDIwMiwgODQsIDEzLCAxNjksIDE3LCAxMDUsIDEzLCAxNjksIDE3LCAxMDgsIDEzLCAxNjksIDE3LCAxNDcsIDEzLCAxNjksIAorICAgIDE3LCAxNDksIDEzLCAxNjksIDE3LCAxNzAsIDEzLCAxNjksIDE3LCAxOTUsIDEzLCAxNjksIDE3LCAyMTMsIDExMSwgMTMsIAorICAgIDE2OSwgMTcsIDE5OSwgMTMsIDE2OSwgMTcsIDIyMiwgNjMsIDEzLCA0MSwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMTcsIDEwNSwgCisgICAgMTMsIDQxLCAxNywgMTA4LCAxMywgNDEsIDE3LCAxNDcsIDEzLCA0MSwgMTcsIDE0OSwgMTMsIDQxLCAxNywgMTcwLCAxMywgCisgICAgNDEsIDE3LCAxOTUsIDEzLCA0MSwgMTcsIDIxMywgMTExLCAxMywgNDEsIDE3LCAxOTksIDEzLCA0MSwgMTcsIDIyMiwgNjMsIAorICAgIDEzLCA0MSwgMjYsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDI2LCAxNywgMTA1LCAxMywgNDEsIDI2LCAxNywgMTA4LCAxMywgCisgICAgNDEsIDI2LCAxNywgMTQ3LCAxMywgNDEsIDI2LCAxNywgMTQ5LCAxMywgNDEsIDI2LCAxNywgMTcwLCAxMywgNDEsIDI2LCAKKyAgICAxNywgMTk1LCAxMywgNDEsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMjYsIDE3LCAxOTksIDEzLCA0MSwgMjYsIDE3LCAKKyAgICAyMjIsIDYzLCAxMywgMjI0LCA0MSwgMTcsIDIwMiwgODQsIDEzLCAyMjQsIDQxLCAxNywgMTA1LCAxMywgMjI0LCA0MSwgMTcsIAorICAgIDEwOCwgMTMsIDIyNCwgNDEsIDE3LCAxNDcsIDEzLCAyMjQsIDQxLCAxNywgMTQ5LCAxMywgMjI0LCA0MSwgMTcsIDE3MCwgCisgICAgMTMsIDIyNCwgNDEsIDE3LCAxOTUsIDEzLCAyMjQsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCAyMjQsIDQxLCAxNywgMTk5LCAKKyAgICAxMywgMjI0LCA0MSwgMTcsIDIyMiwgNjMsIDIxLCAxMjgsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMCwgMjMxLCAzNSwgMjEsIAorICAgIDIzNywgMTE2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDUsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjMxLCAzNSwgMjEsIDIzNywgCisgICAgMTIyLCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKKyAgICAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAKKyAgICAxMjgsIDEyMiwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMjI3LCAKKyAgICAwLCAyMSwgMjM3LCAxMjAsIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMCwgCisgICAgMTIyLCAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE2LCAxODgsIAorICAgIDIyOSwgMjgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzUsIAorICAgIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwNywgMjEsIAorICAgIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEwMSwgCisgICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgCisgICAgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIAorICAgIDEyNywgMjEsIDEyOCwgMTAxLCAyNDgsIDExOCwgMTE1LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE4LCAxMTUsIAorICAgIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjA5LCAyMSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjA5LCAyMSwgCisgICAgMjEsIDEyOCwgMTIyLCAxMDEsIDIxMSwgNTMsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExOCwgCisgICAgMTQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgCisgICAgMjM2LCAyMTEsIDE4NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjEyLCAKKyAgICAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDIzNiwgCisgICAgMjM2LCAxMDEsIDExMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDExMiwgMjExLCAxODYsIDE0OCwgMjM5LCAKKyAgICAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NiwgNjAsIAorICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMTE0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDIzNSwgMjEsIAorICAgIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAxMDEsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAKKyAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgCisgICAgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDEyOCwgMTAxLCAxNDgsIDIzNiwgMTE1LCAKKyAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgCisgICAgMTAxLCAyNDUsIDIwOCwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyOCwgMTQ4LCAKKyAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCisgICAgMjQ1LCAyMDgsIDI0NSwgOTgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNDUsIDk4LCAxMjIsIDIwNiwgCisgICAgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA5OCwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAKKyAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKKyAgICAyNTAsIDIxNiwgMjE5LCAyMTIsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNTAsIDIxNiwgMjMxLCA1MCwgCisgICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDQzLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgCisgICAgMTQ4LCAyNDUsIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMSwgMjEsIAorICAgIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTUsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgCisgICAgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgMjQ1LCAxMjcsIDIxLCAxMjgsIAorICAgIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIzNiwgCisgICAgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIAorICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjM2LCAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAKKyAgICAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA4LCAyMTEsIAorICAgIDE5MywgMjEsIDIzNywgMTE4LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMzksIDE0NywgMjM5LCAKKyAgICAyNTQsIDI0NSwgMjA4LCAyNDgsIDExNywgMjEsIDIzNywgMTA5LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgCisgICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIAorICAgIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCisgICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAorICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAKKyAgICAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgCisgICAgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAKKyAgICAyMTEsIDE4NSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIAorICAgIDEwOSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAxMDUsIDIzOSwgMjMzLCAyMzksIAorICAgIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzUsIDIxLCAKKyAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAorICAgIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAKKyAgICAxMTAsIDIxLCAyMzcsIDExMSwgMjQ4LCAxMDQsIDIxOSwgMTM1LCAyNDAsIDk0LCAyMSwgMjM3LCAxMTEsIDIzNywgNDUsIAorICAgIDIxLCAyMzcsIDExMSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAxNDgsIDIxMiwgMTU1LCAyMSwgCisgICAgMjM3LCAxMTEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTExLCAyMTEsIAorICAgIDE5NCwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxNywgMjEsIDIzNywgMTExLCAKKyAgICAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIAorICAgIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjI3LCA4NSwgMjEsIDIzNywgMTE3LCAyMSwgCisgICAgMjM3LCAxMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExOCwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExOCwgCisgICAgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTA3LCAyNDUsIDk0LCAyMSwgMjM3LCAxMDYsIDIxLCAyMzcsIDExNiwgMjIwLCA4LCAKKyAgICAyMSwgMjM3LCAxMTUsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTYsIDE0OCwgMjEyLCAKKyAgICAxNTUsIDIxLCAyMzcsIDExNiwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAyMjEsIDE5MiwgMjA5LCAKKyAgICAyMSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMzksIDE1MSwgMjEsIAorICAgIDIzNywgMTE0LCAyMjAsIDgsIDIxLCAyMzcsIDExMywgMjEsIDIzNywgMTE5LCAyMSwgMjM3LCAxMDQsIDIxLCAyMzcsIDEwNSwgCisgICAgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA1LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA1LCAxNDgsIDIzOSwgCisgICAgMTUxLCAyMSwgMjM3LCAxMDksIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIAorICAgIDEwOCwgMjEsIDIzNywgMTA5LCAyMTIsIDM2LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCisgICAgMTA5LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDksIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCisgICAgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTQ4LCAyMTIsIDE1NiwgMjA4LCAxMjcsIDIzMSwgMzUsIDIxLCAKKyAgICAyMzcsIDEwOSwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTIxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCisgICAgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIAorICAgIDI1MiwgMjEsIDIzNywgMTIyLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NSwgMjEsIDEyOCwgCisgICAgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIAorICAgIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDIsIDcwLCAyMSwgCisgICAgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAKKyAgICAyNDUsIDg1LCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxOSwgMjIwLCAyNDYsIDYwLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDYsIAorICAgIDIyNCwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgMjI3LCA4NiwgCisgICAgMjA2LCAyMjQsIDIxLCAyMzcsIDEwNSwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMjA2LCAKKyAgICAyMjQsIDIxLCAxMjgsIDIyNywgODYsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIAorICAgIDEyOCwgMjI3LCA4NiwgMjA4LCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCisgICAgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDIyNywgODYsIAorICAgIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgCisgICAgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAKKyAgICAyMzcsIDEyMCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjIsIAorICAgIDIyNywgODYsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAKKyAgICAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDIxNSwgMjUyLCAyMSwgCisgICAgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAKKyAgICAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjQyLCA3MCwgMjEsIAorICAgIDIzNywgMTA5LCAyMTUsIDI1MywgMTIxLCAxMjIsIDE0OCwgMjM2LCAxMTYsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjIsIDIxNSwgCisgICAgMjUzLCAxMjEsIDEwMSwgMTQ4LCAxMjIsIDI0NSwgMTMwLCAyMSwgMTI4LCAyMTUsIDI1MywgMjA2LCAyMjQsIDIxLCAxMjgsIAorICAgIDIxNSwgMjUzLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgCisgICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwNSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMjE1LCAKKyAgICAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjQsIDE0OCwgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjQ1LCAKKyAgICAyMDcsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgMTI4LCAyMTUsIDI1MywgMjMxLCAKKyAgICAzNSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNywgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAxMjgsIAorICAgIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCisgICAgMTE0LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgCisgICAgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIAorICAgIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjA2LCAyNDcsIDIxLCAyMzcsIDExNiwgMTIyLCAyMTUsIDI1MywgMjI3LCAKKyAgICA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIAorICAgIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgCisgICAgMjQyLCA3MCwgMjEsIDIzNywgMTA5LCAyMjQsIDE0OCwgMjEsIDEyOCwgMTAxLCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAKKyAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAxMDEsIDExMiwgMTQ4LCAKKyAgICAyMTIsIDE1NSwgMjEsIDIzNywgMTA3LCAxMDEsIDIwOSwgMjEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMjcsIDg1LCAyMSwgCisgICAgMTI4LCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTAxLCAKKyAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTE0LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgCisgICAgMjM3LCAxMTYsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgCisgICAgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgCisgICAgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAorICAgIDEyMCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCAKKyAgICA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxMiwgMTU1LCAKKyAgICAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAKKyAgICAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjMxLCA0OSwgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAKKyAgICAyMjcsIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTA5LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAKKyAgICAxNTUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgCisgICAgMjQzLCAyMjcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAxNDgsIAorICAgIDIxMiwgMTU2LCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKKyAgICAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMjQ3LCAyNTEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIAorICAgIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzksIDE1MiwgMTIyLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIAorICAgIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAxMTMsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKKyAgICAyNDUsIDk0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAyMzcsIDExOCwgMTIyLCAxNDgsIAorICAgIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMDYsIDI0NywgMjEsIDEyOCwgCisgICAgMTIyLCAxNDgsIDI0NiwgNjEsIDIxLCAyMzcsIDExNiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMTQ4LCAKKyAgICAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjI4LCA3LCAKKyAgICAyMSwgMjM3LCAxMDksIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAzNiwgMjEsIDIzNywgCisgICAgMTIyLCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAxNDgsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgCisgICAgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAxNDgsIDIzNywgNDUsIDIxLCAxMjgsIDE0OCwgMjEyLCAKKyAgICAxNTYsIDI0MywgMjI3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgCisgICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMjI0LCAxNDgsIAorICAgIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDIxNSwgMjUzLCAKKyAgICAyMjcsIDg1LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjAsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMTIwLCAKKyAgICAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTI2LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgCisgICAgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMjM5LCAxNDcsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgCisgICAgMjM3LCAxMTIsIDIxLCAxMjgsIDIzNywgNDUsIDIxLCAyMDgsIDEyOSwgMjEyLCAxMTksIDIxLCAyMDgsIDEyOSwgMjIzLCAKKyAgICAyMjUsIDIxLCAyMDgsIDEyOSwgMjQ4LCAxMDMsIDIxLCAyMzgsIDIsIDIxMiwgMTE5LCAyMSwgMjM4LCAyLCAyMjMsIDIyNSwgCisgICAgMjEsIDIzOCwgMiwgMjQ4LCAxMDMsIDIxLCAyMTEsIDM3LCAyMTIsIDExOSwgMjEsIDIxMSwgMzcsIDIyMywgMjI1LCAyMSwgCisgICAgMjExLCAzNywgMjQ4LCAxMDMsIDIxLCAyNDcsIDIwMSwgMjEyLCAxMTksIDIxLCAyNDcsIDIwMSwgMjIzLCAyMjUsIDIxLCAKKyAgICAyNDcsIDIwMSwgMjQ4LCAxMDMsIDIxLCAyMTUsIDE0MywgMjEyLCAxMTksIDIxLCAyMTUsIDE0MywgMjIzLCAyMjUsIDIxLCAKKyAgICAyMTUsIDE0MywgMjQ4LCAxMDMsIDIxLCAyMTAsIDE4OSwgMjEwLCAxMDIsIDIxLCAyMTAsIDE4OSwgMjQ4LCAxMDMsIDIxLCAKKyAgICAyMTEsIDE3MywgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCA1LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCAyMjgsIAorICAgIDgsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDUsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDIxMywgMTI2LCAyMSwgMjM5LCAKKyAgICAyMDgsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgNSwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgMjI4LCA4LCAKKyAgICAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCA1LCAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCAyMTMsIDEyNiwgMjEsIDIxMSwgCisgICAgMTczLCAyMzksIDIwOCwgMjUwLCAyNTIsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgCisgICAgMTIxLCAyMTIsIDM2LCAyMSwgMjI0LCAwLCAxMTIsIDIxMywgMTI2LCAyMSwgMjI0LCAwLCAxMjEsIDIxMywgMTI2LCAyMSwgCisgICAgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMTIsIAorICAgIDM2LCAyMSwgMjI0LCAwLCAyMTIsIDE1NiwgMjA4LCAxNzMsIDIxMiwgMTU2LCAyMTQsIDE5MCwgMjEsIDIyMywgMjU1LCAKKyAgICAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAKKyAgICAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgCisgICAgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA1LCAyMSwgCisgICAgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDIxMSwgNTIsIDIxLCAKKyAgICAyMjMsIDI1NSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjUwLCAyNTIsIDIxLCAyMjMsIAorICAgIDI1NSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxMzAsIDIxLCAyMjMsIAorICAgIDI1NSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIDIxMSwgCisgICAgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MiwgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MywgMjAzLCAKKyAgICAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAKKyAgICAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjEyLCAzNiwgCisgICAgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjMsIAorICAgIDI1NSwgMjQ1LCAxNjYsIDIxNSwgMTk2LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIAorICAgIDI0NiwgMTY5LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIyOCwgNywgMjEsIDIyMywgMjU1LCA5OCwgMjEyLCAKKyAgICAzNiwgMjEsIDIyMywgMjU1LCA5OCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgCisgICAgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgCisgICAgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI1LCA5LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgCisgICAgOTksIDIxNSwgMTk0LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjE1LCAKKyAgICAxOTUsIDIxMiwgMTE5LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgCisgICAgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTMsIDcxLCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyMTIsIAorICAgIDExOSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAKKyAgICAyMTEsIDIwMiwgMjA4LCA2OSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgCisgICAgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIAorICAgIDIyNCwgMiwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIDIsIDIwOCwgCisgICAgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAKKyAgICAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgCisgICAgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIAorICAgIDEwNCwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAKKyAgICAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDUsIAorICAgIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgCisgICAgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCAKKyAgICA1MywgMjI4LCA1LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgCisgICAgMjExLCA1MiwgMjEsIDIyNCwgMSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUyLCAKKyAgICAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ1LCAxMzAsIDIxLCAKKyAgICAyMjQsIDEsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgCisgICAgMjExLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIDI1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIAorICAgIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDgsIDEyMCwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIxMiwgCisgICAgMzYsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjQsIAorICAgIDEsIDI0NiwgMTY4LCAyMSwgMjI0LCAxLCA5OCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgOTgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgCisgICAgOTgsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI1LCA5LCAKKyAgICAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIAorICAgIDIxOSwgMzAsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAKKyAgICAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjUwLCAKKyAgICAyNTIsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNDIsIDc4LCAKKyAgICAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAorICAgIDI0NSwgODgsIDIxNywgNTYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI1LCA5LCAyMSwgCisgICAgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIAorICAgIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAKKyAgICAxMzYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCisgICAgODgsIDIzNywgMTM2LCAyMjgsIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjEyLCAzNiwgCisgICAgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgCisgICAgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI4LCA3LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjI1LCA5LCAyMSwgMjIzLCAKKyAgICAyNTUsIDIyNywgMTUsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCA1LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIAorICAgIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjUsIAorICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKKyAgICAyNDUsIDg4LCAyMDgsIDcwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyNSwgCisgICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKKyAgICA4OCwgMjA5LCA4NCwgMjExLCA1MiwgMjEsIDIyMywgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjEyLCAzNiwgMjEsIDIyMywgCisgICAgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjI1LCA5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjE1LCAxOTQsIAorICAgIDI0MiwgNzgsIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTQsIDIxLCAyMjMsIDI1NSwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKKyAgICAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIAorICAgIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgCisgICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjEyLCAKKyAgICAxMjAsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCA1MiwgMjM2LCAyMjksIDIzOSwgMTE5LCAKKyAgICAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIAorICAgIDI1NSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIAorICAgIDE0OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCisgICAgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIAorICAgIDE5NCwgNTIsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMTQ5LCAKKyAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAorICAgIDI0MywgMjI4LCAyMTksIDUyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIyOCwgCisgICAgNywgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAKKyAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAKKyAgICAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIAorICAgIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAKKyAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgCisgICAgMjI3LCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIxMiwgCisgICAgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAorICAgIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIAorICAgIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAKKyAgICAyMSwgMjE1LCAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAKKyAgICAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjI0LCAxLCAyNDUsIAorICAgIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgCisgICAgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAorICAgIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIAorICAgIDIyOSwgMjM5LCAyMDUsIDIwOCwgNzAsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIAorICAgIDIwNSwgMjA4LCA3MCwgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAorICAgIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjEyLCAxMTksIAorICAgIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgCisgICAgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIAorICAgIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDcsIDIxLCAyMTUsIAorICAgIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIDIzOSwgMjA0LCAKKyAgICAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIxMiwgMzYsIAorICAgIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAKKyAgICAyNDUsIDg4LCAyMjgsIDUsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDI0NSwgMjM3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMTIsIAorICAgIDM2LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMTIsIDI0LCAyMSwgMjI0LCAKKyAgICAxLCAyMDQsIDc2LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMjgsIDcsIDIxLCAyMTUsIDE5NSwgMjEyLCAxMTksIAorICAgIDIxLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MiwgMjEsIDIyNCwgMSwgMjEzLCA3MiwgMjE5LCAKKyAgICA4MSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIAorICAgIDI0NiwgNjIsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyNDIsIDc4LCAKKyAgICAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgCisgICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAorICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKKyAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIAorICAgIDIyOSwgMjA0LCAxMDAsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAKKyAgICAxMDAsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIAorICAgIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDIxMiwgMTE5LCAyMSwgCisgICAgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIAorICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAyNDYsIDYyLCAKKyAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyMTIsIDExOSwgMjEsIAorICAgIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAKKyAgICAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIDIyOSwgMjA0LCAxMDAsIAorICAgIDI0MiwgNzgsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIxMiwgMzYsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIyOCwgNywgMjEsIAorICAgIDI0MiwgNCwgMjQwLCA3NCwgMjEsIDI0MiwgNCwgMjEyLCAzOSwgMjEsIDI0MiwgNCwgMjA5LCAxNDUsIDIxLCAyNDIsIDQsIAorICAgIDIxNiwgMTE1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjYsIDI1MCwgMjUyLCAyMSwgMjQyLCAKKyAgICA0LCAyNDAsIDIyMSwgMjE5LCAyMjEsIDIwOCwgMjIxLCAyMSwgMjQyLCA0LCAyMzgsIDEyLCAyMSwgMjM3LCA2NCwgMjEsIAorICAgIDIzNywgNjUsIDIxNiwgMSwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIAorICAgIDIwOCwgMjI0LCAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDI0NSwgODcsIAorICAgIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDI0NSwgODcsIDIxLCAyMzcsIDY1LCAyMjQsIDQsIDI0NiwgNjEsIDIxLCAyNDAsIDEwMywgCisgICAgMjQzLCAxNjYsIDIxOCwgMzQsIDIyMSwgMTY4LCAyMzksIDE1MiwgMjA4LCAyMjIsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIAorICAgIDIxOCwgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAyNDIsIDcwLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAyMTgsIAorICAgIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMTIxLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMDYsIAorICAgIDIyNCwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMjIsIDIxNSwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyNDIsIDcwLCAyMSwgCisgICAgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgMjE2LCAyNDIsIDcwLCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDEyMSwgMjIyLCAKKyAgICAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTEyLCAyMjIsIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIAorICAgIDIxNiwgMjA2LCAyMjQsIDIxLCAyMzksIDE2NCwgMjIyLCAyMTUsIDIxLCAyMzksIDE2NCwgMjQ1LCAxOTcsIDIxLCAyMzksIAorICAgIDE2NCwgMjAzLCAyMjQsIDIxLCAyNDAsIDE4NSwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIxMSwgMTcyLCAyMSwgMjQwLCAKKyAgICAxODUsIDI0NiwgMTUsIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgMjEyLCAxMTksIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgCisgICAgMjIzLCAyMjUsIDIxLCAyNDAsIDE4NSwgMTYyLCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNywgMjIwLCA4LCAyMSwgCisgICAgMjQwLCAxODUsIDE2MiwgMjQ2LCAxNSwgMjEsIDI0MCwgMTg1LCAyMDQsIDI1LCAyMjQsIDMsIDIxLCAyNDAsIDE5MiwgMjA0LCAKKyAgICA5LCAyMSwgMjQwLCAxODYsIDIwNiwgMjI0LCAyMSwgMjQwLCAxODYsIDI0MiwgNzAsIDIxLCAyNDAsIDE4NiwgMjM5LCAxOTEsIAorICAgIDIxLCAyNDAsIDE4OCwgMjExLCA1MiwgMjEsIDI0MCwgMTg4LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgMjQwLCAxODgsIDIxMSwgCisgICAgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MywgMjQyLCA3OCwgMjEsIAorICAgIDI0MCwgMTg5LCAyMTEsIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg4LCAyNDUsIDg1LCAyMSwgMjQwLCAxODksIDI0NSwgCisgICAgODUsIDIxLCAyNDAsIDE4OCwgMjQ2LCA1NiwgMjEsIDI0NiwgMTY0LCAyMTcsIDE4MiwgMjEsIDI0NiwgMTY0LCAyMjIsIAorICAgIDIxNSwgMjEsIDI0NiwgMTY0LCAyMTAsIDIzNCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjM2LCAyNDQsIDIxLCAyMDksIAorICAgIDE0NiwgMjQ2LCAxNjQsIDIyNCwgMTQ4LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMjcsIDAsIDIxLCAyNDEsIDE4MSwgCisgICAgMjEsIDIyMSwgMTY4LCAyMjIsIDIxNSwgMjEsIDIyMSwgMTY4LCAyNDUsIDE5NywgMjEsIDIyMSwgMTY4LCAyMDMsIDIyMiwgCisgICAgMjEsIDIyMSwgMTY4LCAyMDQsIDIyLCAyMSwgMjUxLCA1NSwgMjQ4LCAyNywgMjE5LCAyMTEsIDIxLCAyNTEsIDU1LCAyMTAsIAorICAgIDIzMywgMjMxLCA0OSwgMjEsIDI1MSwgNTUsIDI0OCwgMjksIDUsIDIxNSwgMTkzLCAyMSwgMjUxLCA1NSwgMjEwLCAyMzUsIAorICAgIDUsIDIxNSwgMTkzLCAyMSwgMjQ3LCAyMTYsIDIzMSwgMjIsIDIxLCAyNDcsIDIxNiwgMjQwLCAyMTAsIDIxLCAyMjQsIDgsIAorICAgIDI0NiwgMTYsIDIyMiwgMjE1LCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgCisgICAgMjQ1LCAxOTcsIDIxLCAyMjQsIDgsIDIxMiwgMzEsIDIxLCAyMjQsIDgsIDIxMiwgMzIsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAKKyAgICAyMTIsIDMyLCAyMjAsIDgsIDIxLCAyMjQsIDgsIDIzOSwgMTE1LCAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjAzLCAyMjQsIAorICAgIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMjAsIDgsIDIxLCAyMjQsIDgsIDE3MSwgMjQ2LCA2MSwgMjEsIDIyNCwgOCwgMTcxLCAKKyAgICAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMTcxLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNCwgMjEsIDIyNCwgCisgICAgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgNTksIDIxLCAyMjQsIAorICAgIDgsIDE3MSwgMjE2LCAxNDMsIDIxLCAyMjQsIDgsIDE3MSwgMjE2LCAxNDQsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIAorICAgIDIxNiwgMTQ0LCAyMDMsIDU5LCAyMSwgMjI0LCA4LCAyMjksIDY2LCAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMzksIDE1MSwgCisgICAgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDIwOSwgMTQ1LCAyMSwgMjI0LCA4LCAyMDksIAorICAgIDE0NiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDIwOSwgMTQ2LCAyMTAsIDIzNCwgMjEsIDIyNywgOTksIDIxNywgMjM5LCAKKyAgICAyMDgsIDE2OSwgMjEsIDIyNywgMTAxLCAyMjYsIDI1MSwgMTE1LCAyMDYsIDIyMCwgMjEsIDIyNywgMTAxLCAyMDYsIDIyMSwgCisgICAgMTE1LCAyMjYsIDI1MCwgMjEsIDIyNCwgOCwgMjQ1LCAxNjQsIDIxLCAyMjQsIDgsIDIwMywgMjIzLCAyMTIsIDExOSwgMjEsIAorICAgIDIyNCwgOCwgMjAzLCAyMjMsIDI0MiwgNzgsIDIxLCAyMDgsIDE1MSwgMjExLCA3MiwgMjE5LCAyMTIsIDI0MCwgNzYsIDIxLCAKKyAgICAyMDgsIDE1MSwgMjI3LCAxNDQsIDIyNywgOTgsIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDI0OCwgMTA0LCAyMjcsIDk4LCAKKyAgICAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyMDgsIDEyNywgMjMxLCA3LCAyMjQsIDcsIDIxLCAyMDgsIDE1MSwgMjMxLCA3LCAKKyAgICAyMjQsIDgsIDIxNiwgMTE1LCAyMSwgMjA4LCAxNTEsIDIyMywgMjU0LCAyNTEsIDc5LCAyNDYsIDE2NSwgMjEsIDIwOCwgCisgICAgMTUxLCAyNDYsIDIxOCwgMjExLCA3MiwgMjE5LCAyMTEsIDIxLCAyMDgsIDE1MSwgMjQ2LCAyMTgsIDIzMSwgNywgMjI0LCA3LCAKKyAgICAyMSwgMjA5LCAxNzIsIDIxLCAyMDksIDE3MywgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUwLCAyMSwgCisgICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUxLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OCwgMjEsIAorICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk5LCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjQ4LCA1MCwgMjI3LCA5OCwgMjEsIAorICAgIDIyMywgMjU1LCAyMzAsIDE2NSwgMjEsIDIyNCwgMSwgMjMwLCAxNjUsIDIxLCAyMjIsIDIzNywgMjEsIDIzNywgMTQ1LCAyMSwgCisgICAgMjQwLCAyMTMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxMSwgMjAzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTgsIAorICAgIDMzLCAyMSwgMjA0LCA5OCwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMjQsIDYsIDIxLCAyMzksIDIwMywgMjEyLCAyMTEsIDIzNiwgCisgICAgMjM0LCAyMjQsIDYsIDIxLCAyMTIsIDIxMSwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMDQsIDEwNCwgMjEsIDIwOCwgMTM0LCAKKyAgICAyMTEsIDUzLCAyMTEsIDQxLCAyMSwgMjA4LCAxMzQsIDI0NSwgODYsIDI0OCwgMTIwLCAyMSwgMjA4LCAxMzUsIDIwNywgCisgICAgMTM3LCAyMSwgMjA2LCAyMjEsIDI0OCwgMTgsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjM2LCAyMzQsIDIzMCwgOTUsIDIxLCAKKyAgICAyMjcsIDEyNiwgMjQ1LCAyMzgsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTUsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTQsIDIxLCAKKyAgICAyMjcsIDEyNiwgMjI3LCAxOTMsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTIsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTEsIDIxLCAKKyAgICAyMjcsIDEyNiwgMjI3LCAxOTAsIDIxLCAyMjcsIDEyNiwgMjI3LCAxODksIDIxLCAyNDAsIDIsIDIxLCAyMjcsIDQ1LCAyMTEsIAorICAgIDIyOCwgMjEsIDIyNywgNDYsIDIxMSwgMjI4LCAyMSwgMjI3LCA0NywgMjM3LCA0MSwgMjEsIDIyNywgNDcsIDIwNCwgMjMsIAorICAgIDIxLCAyMjcsIDQ3LCAyNDQsIDI0LCAyMSwgMjI3LCA0NywgMjM3LCA2NSwgMjIyLCAyMzcsIDIxLCAyMjcsIDQ3LCAyMDgsIAorICAgIDEzNiwgMjEsIDIyNywgNDcsIDIyNywgMTI1LCAyNDMsIDE5OCwgMjEsIDI0NSwgMjMzLCAyMSwgMjM5LCAxMDIsIDIxMSwgCisgICAgNjEsIDIxLCAyMTMsIDE0MywgMjEsIDI0NSwgMjQyLCAyMSwgMjE5LCA3NiwgMjEsIDI0MCwgMTAsIDIyNCwgNjYsIDIxLCAKKyAgICAyNDAsIDEwLCAyMjQsIDY1LCAyMSwgMjQwLCAxMCwgMjI0LCA2NCwgMjEsIDI0MCwgMTAsIDIyNCwgNjMsIDIxLCAyNDAsIAorICAgIDEwLCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjYsIDIxLCAyMTUsIDE5NywgMjI0LCA2NSwgMjEsIDIxNSwgMTk3LCAKKyAgICAyMjQsIDY0LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjMsIDIxLCAyMTUsIDE5NywgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIAorICAgIDYxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjAsIDIxLCAyMTUsIDE5NywgMjI0LCA1OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDczLCAKKyAgICAyMSwgMjE1LCAxOTcsIDIyNCwgNzIsIDIxLCAyMTUsIDE5NywgMjI0LCA3MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDcwLCAyMSwgCisgICAgMjE1LCAxOTcsIDIyNCwgNjksIDIxLCAyMTUsIDE5NywgMjI0LCA2OCwgMjEsIDIxNSwgMTk3LCAyMjQsIDY3LCA3MywgNzIsIAorICAgIDQsIDIyNiwgMTg0LCAyMjksIDEwMCwgNzMsIDcyLCA0LCAyMjYsIDE4MCwgMTczLCA3MywgNzIsIDQsIDIyNiwgMTc4LCAKKyAgICAyMjgsIDIwOSwgNzMsIDcyLCA0LCAyMjYsIDU0LCAyMjksIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDI0LCAyMjksIDIwMSwgNzMsIAorICAgIDcyLCA0LCAyMjYsIDQzLCAyMjksIDYsIDczLCA3MiwgNCwgMjI2LCA3MSwgMjI5LCAyNiwgNzMsIDcyLCA0LCAyMjUsIDE5NiwgCisgICAgMjI4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxNzUsIDIwNCwgMzAsIDczLCA3MiwgNCwgMjI2LCAxNzMsIDIwNCwgMTExLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMTcxLCAyMDMsIDIxNywgNzMsIDcyLCA0LCAyMjUsIDI0OSwgMjA0LCA1NSwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDEsIDIwNCwgNjIsIDczLCA3MiwgNCwgMjI2LCA1LCAyMDMsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDc0LCAyMDQsIDAsIAorICAgIDczLCA3MiwgNCwgMjI1LCAxODEsIDIwMywgMjEzLCA3MywgNzIsIDQsIDIyNSwgMjMyLCAyMDQsIDUzLCA3MywgNzIsIDQsIAorICAgIDIyNiwgNTgsIDIwMywgMjAxLCA3MywgNzIsIDQsIDIyNiwgNzAsIDIwMywgMjAzLCA3MywgNzIsIDQsIDIyNSwgMjM2LCAKKyAgICAyMDMsIDIwMiwgNzMsIDcyLCA0LCAyMjYsIDE2OSwgMjI0LCAxMTAsIDczLCA3MiwgNCwgMjI2LCAxNjcsIDIyNSwgMTIyLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMTY1LCAyMjMsIDIxOSwgNzMsIDcyLCA0LCAyMjYsIDYwLCAyMjQsIDI0MCwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDI1LCAyMjQsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjIxLCAyMjMsIDI0MywgNzMsIDcyLCA0LCAyMjUsIDE4NiwgCisgICAgMjIzLCAyMzcsIDczLCA3MiwgNCwgMjI2LCAxNjMsIDI0OCwgODYsIDczLCA3MiwgNCwgMjI2LCAxNjAsIDI0OSwgMzIsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxNTgsIDI0NywgMTkzLCA3MywgNzIsIDQsIDIyNSwgMjI1LCAyNDgsIDE1MCwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDIyLCAyNDgsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDE2LCAyNDgsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjM3LCAyNDgsIDIzLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgMTQ4LCA3NSwgNzMsIDcyLCA0LCAyMjYsIDE0NiwgNjMsIDczLCA3MiwgNCwgMjI2LCAxNDQsIAorICAgIDY4LCA3MywgNzIsIDQsIDIyNSwgMjEyLCAyNDEsIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDE5LCA3NCwgNzMsIDcyLCA0LCAKKyAgICAyMjUsIDIxMCwgMjIwLCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyOCwgNzgsIDczLCA3MiwgNCwgMjI1LCAyMzgsIDI0MSwgCisgICAgMTQ1LCA3MywgNzIsIDQsIDIyNSwgMjQ0LCAyMzEsIDQ5LCA3MywgNzIsIDQsIDIyNSwgMjQwLCAyMzEsIDQ5LCA3MywgNzIsIAorICAgIDQsIDIyNSwgMTgwLCAyNTAsIDIzMSwgNzMsIDcyLCA0LCAyMjUsIDE5NywgMjQxLCA5MiwgNzMsIDcyLCA0LCAyMjYsIDEzMywgCisgICAgMjEyLCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxMzEsIDIxNSwgMzYsIDczLCA3MiwgNCwgMjI2LCAxMjksIDIxMSwgMTAsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyMTMsIDIxNCwgMTY1LCA3MywgNzIsIDQsIDIyNiwgMywgMjE0LCAxNzcsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAyMzksIDIxMSwgMjUwLCA3MywgNzIsIDQsIDIyNiwgNDAsIDIxMiwgMTMsIDczLCA3MiwgNCwgMjI1LCAxNzksIDIxMiwgCisgICAgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTE5LCAyMjcsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDExNywgMjI4LCAxMTMsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxMTUsIDIyNiwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMzUsIDIyNywgMjI2LCA3MywgNzIsIDQsIDIyNiwgCisgICAgNDYsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgNjUsIDIyNywgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjIsIDIyNywgNDksIAorICAgIDczLCA3MiwgNCwgMjI2LCA5LCAxNjMsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgMTQxLCAyNDMsIDIzMywgNzMsIDcyLCAKKyAgICA0LCAyMjYsIDEzOCwgMjQ0LCAyMTIsIDczLCA3MiwgNCwgMjI2LCAxMzUsIDI0MiwgNDIsIDczLCA3MiwgNCwgMjI2LCAzMCwgCisgICAgMjQ0LCA2MSwgNzMsIDcyLCA0LCAyMjUsIDE5NSwgMjQzLCA5MCwgNzMsIDcyLCA0LCAyMjUsIDE5NCwgMjQzLCAxMTMsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxMjcsIDIwOSwgMiwgNzMsIDcyLCA0LCAyMjYsIDEyNCwgMjEwLCAyMiwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDEyMiwgMjA3LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAyOCwgMjA5LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA2NCwgMjA5LCAKKyAgICAxODcsIDczLCA3MiwgNCwgMjI2LCAxNSwgMjA4LCAxNDgsIDczLCA3MiwgNCwgMjI2LCA1MCwgMTM1LCA3MywgNzIsIDQsIAorICAgIDIyNiwgMTEzLCAyMzAsIDE0MSwgNzMsIDcyLCA0LCAyMjYsIDExMCwgMjMwLCAxODEsIDczLCA3MiwgNCwgMjI2LCAxMDgsIAorICAgIDIzMCwgODIsIDczLCA3MiwgNCwgMjI1LCAyMTgsIDIzMCwgMTU5LCA3MywgNzIsIDQsIDIyNiwgNiwgMjMwLCAxNjEsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyMTUsIDIzMCwgOTEsIDczLCA3MiwgNCwgMjI2LCA1NiwgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI1LCAKKyAgICAyMDAsIDE2MywgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI2LCAxMDYsIDIwMywgMTEsIDczLCA3MiwgNCwgMjI2LCAxMDMsIAorICAgIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDEwMSwgMjAyLCAyMTMsIDczLCA3MiwgNCwgMjI2LCAxMCwgMjAzLCA0OSwgNzMsIDcyLCAKKyAgICA0LCAyMjYsIDM5LCAyMDMsIDUyLCA3MywgNzIsIDQsIDIyNSwgMjM0LCAyMDIsIDIzMiwgNzMsIDcyLCA0LCAyMjUsIDI1NCwgCisgICAgMjAyLCAyNDcsIDczLCA3MiwgNCwgMjI2LCA5NywgMjQwLCAyNiwgNzMsIDcyLCA0LCAyMjYsIDk1LCAyNDAsIDEwOCwgNzMsIAorICAgIDcyLCA0LCAyMjYsIDkzLCAyMzksIDEwOCwgNzMsIDcyLCA0LCAyMjYsIDQxLCAyNDAsIDUzLCA3MywgNzIsIDQsIDIyNiwgCisgICAgNDQsIDI0MCwgNjAsIDczLCA3MiwgNCwgMjI1LCAyNDIsIDIzOSwgMTc1LCA3MywgNzIsIDQsIDIyNiwgMzEsIDIzOSwgMTg2LCAKKyAgICA3MywgNzIsIDQsIDIyNSwgMTc4LCAyMzksIDEwNywgNzMsIDcyLCA0LCAyMjYsIDE4LCAyNDAsIDgxLCA3MywgNzIsIDQsIAorICAgIDIyNiwgOTEsIDIyMiwgNjgsIDczLCA3MiwgNCwgMjI2LCA4OSwgMjIzLCA4MywgNzMsIDcyLCA0LCAyMjYsIDg3LCAyMjEsIAorICAgIDQwLCA3MywgNzIsIDQsIDIyNiwgMiwgMjIyLCAyMzAsIDczLCA3MiwgNCwgMjI1LCAyMDYsIDIyMSwgMTg1LCA3MywgNzIsIAorICAgIDQsIDIyNSwgMTk5LCAyMzcsIDMsIDczLCA3MiwgNCwgMjI2LCA4MiwgMTUyLCA3MywgNzIsIDQsIDIyNSwgMTg5LCAyMzYsIAorICAgIDI2LCA3MywgNzIsIDQsIDIyNiwgODUsIDIzNywgNDgsIDczLCA3MiwgNCwgMjI2LCAyMywgMjM3LCA2NywgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDgwLCAyMzYsIDExNywgNzMsIDcyLCA0LCAyMjUsIDIzNSwgMjM2LCAxMzYsIDczLCA3MiwgNCwgMjI2LCAzNiwgCisgICAgMjM3LCA0NywgNzMsIDcyLCA0LCAyMjUsIDI0NywgMjM2LCAxMTAsIDczLCA3MiwgNCwgMjI2LCA2NiwgMjM2LCAyMzgsIDczLCAKKyAgICA3MiwgNCwgMjI1LCAyNDUsIDIzNywgMTI2LCA3MywgNzIsIDQsIDIyNiwgMzIsIDIzNiwgMTMsIDczLCA3MiwgNCwgMjI2LCAKKyAgICA2NywgMjM3LCAzMywgNzMsIDcyLCA0LCAyMjUsIDE4MiwgMjM2LCAxMjAsIDczLCA3MiwgNCwgMjI2LCA3MywgMjM2LCAyNSwgCisgICAgNzMsIDcyLCA0LCAyMjYsIDI5LCAyMjIsIDE2OCwgNzMsIDcyLCA0LCAyMjYsIDc4LCAyMjIsIDE4MiwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDM3LCAyMjIsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDQsIDIyMiwgMTc2LCA3MywgNzIsIDQsIDIyNSwgMjI5LCAyMjIsIAorICAgIDE3NywgNzMsIDcyLCA0LCAyMjUsIDIxOSwgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAyNTUsIDIyMiwgMTY3LCA3MywgCisgICAgNzIsIDQsIDIyNSwgMjE2LCAyMjIsIDE4MSwgNzMsIDcyLCA0LCAyMjUsIDI0OCwgMjIyLCAxNjQsIDczLCA3MiwgNCwgMjI2LCAKKyAgICAzMywgMTYzLCAyMjIsIDE3NywgNzMsIDcyLCA0LCAyMjYsIDEzLCAxNjMsIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMTkyLCAxNjMsIDIyMiwgMTY3LCA3MywgNzIsIDQsIDIyNSwgMjIwLCAyMzgsIDgxLCA3MywgNzIsIDQsIDIyNiwgOCwgMjM5LCAKKyAgICA4LCA3MywgNzIsIDQsIDIyNSwgMjA3LCAyMzcsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE4NSwgMjM4LCAxODIsIDczLCA3MiwgCisgICAgNCwgMjI1LCAyMDksIDIzNywgMjE2LCA3MywgNzIsIDQsIDIyNSwgMjA4LCAyMzcsIDIyNiwgNzMsIDcyLCA0LCAyMjUsIAorICAgIDE5MSwgMjIyLCAxODcsIDczLCA3MiwgNCwgMjI2LCA2MiwgMjIyLCAxMjQsIDczLCA3MiwgNCwgMjI1LCAxOTgsIDIyMiwgCisgICAgMTEzLCA3MywgNzIsIDQsIDIyNiwgNTEsIDIxOCwgMTY3LCA3MywgNzIsIDQsIDIyNiwgMjAsIDE4NSwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDY5LCAyMTcsIDE5MSwgNzMsIDcyLCA0LCAyMjYsIDM4LCAyMTksIDIzLCA3MywgNzIsIDQsIDIyNiwgNjgsIDIxOSwgCisgICAgMzQsIDczLCA3MiwgNCwgMjI2LCAxNywgMjE4LCA0NSwgNzMsIDcyLCA0LCAyMjYsIDUzLCAyMTgsIDY5LCA3MywgNzIsIDQsIAorICAgIDIyNSwgMjMwLCAyMjUsIDM5LCA3MywgNzIsIDQsIDIyNiwgNTcsIDIyNSwgNTQsIDczLCA3MiwgNCwgMjI1LCAyNTMsIDIyNSwgCisgICAgMzMsIDczLCA3MiwgNCwgMjI2LCA3MiwgMjI1LCA0NiwgNzMsIDcyLCA0LCAyMjUsIDE4NywgMjI1LCA0NiwgNzMsIDcyLCA0LCAKKyAgICAyMjYsIDQ3LCAyMjUsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjAzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjAxLCAyMjUsIAorICAgIDM1LCA3MywgNzIsIDQsIDIyNSwgMTg4LCAyMjUsIDI3LCA3MywgNzIsIDQsIDIyNSwgMjE0LCAxNjMsIDIyNSwgNDcsIDczLCAKKyAgICA3MiwgNCwgMjI2LCAxNCwgMTYzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjMzLCAxNjMsIDIyNSwgMzUsIDczLCA3MiwgCisgICAgNCwgMjI1LCAyNDMsIDIyOCwgMjM2LCA3MywgNzIsIDQsIDIyNiwgMjcsIDIyOCwgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNDUsIAorICAgIDIyOCwgMjMyLCA3MywgNzIsIDQsIDIyNiwgNzYsIDIyOCwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMTEsIDIyOCwgMjQwLCA3MywgCisgICAgNzIsIDQsIDIyNiwgNywgMjI4LCAyMzQsIDczLCA3MiwgNCwgMjI1LCAyMTcsIDIyOCwgMjM1LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMjUxLCAyMzgsIDE5OSwgNzMsIDcyLCA0LCAyMjYsIDYzLCAyMzgsIDIwNywgNzMsIDcyLCA0LCAyMjUsIDIyNywgMjM4LCAKKyAgICAxOTQsIDczLCA3MiwgNCwgMjI2LCAyNiwgMjM4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxMiwgMjM4LCAyMDQsIDczLCA3MiwgCisgICAgNCwgMjI2LCA0OCwgMjM4LCAxOTUsIDczLCA3MiwgNCwgMjI2LCA0OSwgMjM4LCAxOTcsIDczLCA3MiwgNCwgMjI1LCAyMDQsIAorICAgIDIxNiwgMjIwLCA3MywgNzIsIDQsIDIyNSwgMjUyLCAyMjMsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjQ2LCAyMjMsIDI1LCA3MywgCisgICAgNzIsIDQsIDIyNSwgMjUwLCAyMjIsIDI0OCwgNzMsIDcyLCA0LCAyMjUsIDE4NCwgMjIzLCAxNiwgNzMsIDcyLCA0LCAyMjYsIAorICAgIDAsIDIyMywgMTcsIDczLCA3MiwgNCwgMjI2LCA1MiwgMjIyLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1NSwgMjIzLCAxLCA3MywgCisgICAgNzIsIDQsIDIyNSwgMjIzLCAyMjIsIDQ4LCA3MywgNzIsIDQsIDIyNSwgMTgzLCAyMjIsIDE4LCA3MywgNzIsIDQsIDIyNSwgCisgICAgMjI2LCAyMjIsIDM5LCA3MywgNzIsIDQsIDIyNSwgMjQxLCAyMjIsIDIyLCA3MywgNzIsIDQsIDIyNSwgMTkzLCAyMDUsIAorICAgIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE5MCwgMjA2LCA4NiwgNzMsIDcyLCA0LCAyMjUsIDIyNCwgMjA0LCAxNjMsIDczLCA3MiwgCisgICAgNCwgMjI1LCAyMDIsIDIwNiwgNTAsIDczLCA3MiwgNCwgMjI2LCAzNCwgMjA2LCA1NSwgNzMsIDcyLCA0LCAyMjUsIDIzMSwgCisgICAgMjA1LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA0MiwgMjA1LCAxODksIDczLCA3MiwgNCwgMjI1LCAyMTEsIDIyMCwgMjQyLCAKKyAgICA3MywgNzIsIDQsIDIyNiwgNjEsIDIyMSwgNSwgNzMsIDcyLCA0LCAyMjUsIDIwNSwgMjIwLCAyMjQsIDczLCA3MiwgNCwgCisgICAgMjI2LCAyMSwgMjIwLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1OSwgMjIwLCAyMzEsIDczLCA3MiwgMTcsIDEwNSwgNzMsIDcyLCAKKyAgICAxNywgMTA4LCA3MywgNzIsIDE3LCAxNDcsIDczLCA3MiwgMTcsIDE0OSwgNzMsIDcyLCAxNywgMTcwLCA3MywgNzIsIDE3LCAKKyAgICAxOTUsIDczLCA3MiwgMTcsIDIxMywgMTExLCA3MywgNzIsIDE3LCAxOTksIDczLCA3MiwgMTcsIDIyMiwgNjMsIDczLCA3MiwgCisgICAgMzksIDQyLCAyMDksIDE3NCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTQ3LCA3MywgNzIsIDM5LCA0MiwgMjM2LCAxMCwgNzMsIAorICAgIDcyLCAzOSwgNDIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIAorICAgIDIzNiwgMTIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMjQsIDExMywgMTAsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDI0OCwgCisgICAgMTM4LCAxMCwgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjAyLCAKKyAgICAxMDcsIDEwLCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjAzLCA0NywgMTAsIDEzLCAyMzAsIAorICAgIDIyLCAxMCwgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyMSwgMTc4LCAxMCwgMTMsIDIxNCwgMTYxLCAKKyAgICAxMCwgMTMsIDI1MSwgNTksIDEwLCAxMywgMjQwLCA0NywgMTAsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIxNywgMTE5LCAxMCwgCisgICAgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIxMywgMzksIDEwLCAxMywgMjA5LCAxNjksIDEwLCAxMywgMjA5LCA4OCwgMTAsIDEzLCAKKyAgICAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDEwMCwgMTAsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKKyAgICAyMzgsIDExNCwgMTAsIDEzLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIDEzLCAKKyAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyNDgsIDEzOCwgMTAsIAorICAgIDEzLCA4MSwgMjMwLCAxNTgsIDEwLCAxMywgODEsIDIzNywgNDMsIDEwLCAxMywgODEsIDIzNywgMTQ4LCAxMCwgMTMsIDgxLCAKKyAgICAyMDMsIDQ3LCAxMCwgMTMsIDgxLCAyMzAsIDIyLCAxMCwgMTMsIDgxLCAyMjgsIDI4LCAxMCwgMTMsIDgxLCAyMjUsIDUsIAorICAgIDEwLCAxMywgODEsIDIyMSwgMTc4LCAxMCwgMTMsIDgxLCAyMTQsIDE2MSwgMTAsIDEzLCA4MSwgMjUxLCA1OSwgMTAsIDEzLCAKKyAgICA4MSwgMjQwLCA0NywgMTAsIDEzLCA4MSwgMjE1LCAyOCwgMTAsIDEzLCA4MSwgMjE3LCAxMTksIDEwLCAxMywgODEsIDIxMywgCisgICAgMzksIDEwLCAxMywgODEsIDIwOSwgMTY5LCAxMCwgMTMsIDgxLCAyMDksIDg4LCAxMCwgMTMsIDgxLCAyMjksIDE0MCwgMTAsIAorICAgIDEzLCA4MSwgMjQ0LCAyMDcsIDEwLCAxMywgODEsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzAsIDE1OCwgMTAsIAorICAgIDEzLCAyMDksIDI0NywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNDcsIDIwMywgNDcsIDEwLCAxMywgMjA5LCAyNDcsIDIyOCwgCisgICAgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIyMSwgMTc4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTQsIDE2MSwgMTAsIDEzLCAyMDksIAorICAgIDI0NywgMjUxLCA1OSwgMTAsIDEzLCAyMDksIDI0NywgMjE1LCAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjE3LCAxMTksIDEwLCAKKyAgICAxMywgMjA5LCAyNDcsIDIxMywgMzksIDEwLCAxMywgMjA5LCAyNDcsIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDQsIAorICAgIDIwNywgMTAsIDEzLCAyMDksIDI0NywgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgCisgICAgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIAorICAgIDQwLCAyMzAsIDE1OCwgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDQzLCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgMTQ4LCAxMCwgCisgICAgMTMsIDIxMSwgNDAsIDIwOSwgMjUxLCAxMCwgMTMsIDIxMSwgNDAsIDIwMywgNDcsIDEwLCAxMywgMjExLCA0MCwgMjMwLCAKKyAgICAyMiwgMTAsIDEzLCAyMTEsIDQwLCAyMjUsIDUsIDEwLCAxMywgMjExLCA0MCwgMjIxLCAxNzgsIDEwLCAxMywgMjExLCA0MCwgCisgICAgMjE0LCAxNjEsIDEwLCAxMywgMjExLCA0MCwgMjUxLCA1OSwgMTAsIDEzLCAyMTEsIDQwLCAyNDAsIDQ3LCAxMCwgMTMsIAorICAgIDIxMSwgNDAsIDIxNSwgMjgsIDEwLCAxMywgMjExLCA0MCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjEzLCAzOSwgCisgICAgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDE2OSwgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDg4LCAxMCwgMTMsIDIxMSwgNDAsIAorICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIxMSwgNDAsIDI0NCwgMjA3LCAxMCwgMTMsIDIxMSwgNDAsIDIwMiwgMTEwLCAxMCwgMTMsIAorICAgIDIxMSwgNDAsIDIzOCwgMTE0LCAxMCwgMTMsIDIxMSwgNDAsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgNDAsIAorICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDgsIDEzOCwgCisgICAgMTAsIDEzLCAyMjcsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMjcsIDEzLCAKKyAgICAyMzcsIDQzLCAxMCwgMTMsIDIyNywgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMDcsIDEwLCAxMywgCisgICAgMjI3LCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjI3LCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjI3LCAxMywgMjAzLCA0NywgCisgICAgMTAsIDEzLCAyMjcsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjcsIDEzLCAyMjEsIAorICAgIDE3OCwgMTAsIDEzLCAyMjcsIDEzLCAyMTQsIDE2MSwgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDIyNywgCisgICAgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMTcsIDExOSwgMTAsIDEzLCAKKyAgICAyMjcsIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMjcsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMTY5LCAKKyAgICAxMCwgMTMsIDIyNywgMTMsIDIwOSwgODgsIDEwLCAxMywgMjI3LCAxMywgMjI5LCAxNDAsIDEwLCAxMywgMjI3LCAxMywgCisgICAgMjA5LCAxMDAsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCisgICAgMjI3LCAxMywgMjM4LCAxMTQsIDEwLCAxMywgMTY5LCAyNDgsIDEzOCwgMTAsIDEzLCAxNjksIDIzMCwgMTU4LCAxMCwgMTMsIAorICAgIDE2OSwgMjQ0LCAxODQsIDEwLCAxMywgMTY5LCAyMDQsIDcwLCAxMCwgMTMsIDE2OSwgMjAyLCAxMDcsIDEwLCAxMywgMTY5LCAKKyAgICAyMzcsIDE0OCwgMTAsIDEzLCAxNjksIDIwOSwgMjUxLCAxMCwgMTMsIDE2OSwgMjAzLCA0NywgMTAsIDEzLCAxNjksIDIyOCwgCisgICAgMjgsIDEwLCAxMywgMTY5LCAyMjUsIDUsIDEwLCAxMywgMTY5LCAyMjEsIDE3OCwgMTAsIDEzLCAxNjksIDIxNCwgMTYxLCAKKyAgICAxMCwgMTMsIDE2OSwgMjUxLCA1OSwgMTAsIDEzLCAxNjksIDI0MCwgNDcsIDEwLCAxMywgMTY5LCAyMTUsIDI4LCAxMCwgMTMsIAorICAgIDE2OSwgMjE3LCAxMTksIDEwLCAxMywgMTY5LCAyMTYsIDEyMiwgMTAsIDEzLCAxNjksIDIxMywgMzksIDEwLCAxMywgMTY5LCAKKyAgICAyMDksIDE2OSwgMTAsIDEzLCAxNjksIDIwOSwgODgsIDEwLCAxMywgMTY5LCAyMjksIDE0MCwgMTAsIDEzLCAxNjksIDIwOSwgCisgICAgMTAwLCAxMCwgMTMsIDE2OSwgMjQ0LCAyMDcsIDEwLCAxMywgMTY5LCAyMDIsIDExMCwgMTAsIDEzLCAxNjksIDIzOCwgMTE0LCAKKyAgICAxMCwgMTMsIDIxOSwgMjU1LCA4MywgMywgMTUxLCAzLCAyMDksIDIwOSwgMTAsIDEzLCAyMTksIDI1NSwgMTUxLCAzLCAyNDQsIAorICAgIDE4NCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE3NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAyMTEsIDIzOCwgMjA0LCAxNiwgCisgICAgMjI1LCAxNDIsIDk5LCAyMDQsIDQ2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDE1MywgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAKKyAgICAyMTYsIDEzOCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAyMzcsIDI0NCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCA2MSwgCisgICAgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDYsIAorICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCisgICAgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIAorICAgIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIAorICAgIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgCisgICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ4LCAKKyAgICAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIAorICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgCisgICAgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjIyLCAKKyAgICA2NCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgCisgICAgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKKyAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0NiwgCisgICAgNTgsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ2LCAKKyAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTgsIDc5LCAyMjUsIDE0MiwgCisgICAgOTksIDIxOSwgMjQyLCAyMjUsIDE0MiwgOTksIDI0OCwgMjQ0LCAyMjUsIDE0MiwgOTksIDI0NiwgOTksIDIyNSwgMTQyLCAKKyAgICA5OSwgMjExLCAxODMsIDIyNSwgMTQyLCA5OSwgMjEwLCAyMTYsIDIyNSwgMTQyLCA5OSwgMjUwLCAyMSwgMjI1LCAxNDIsIAorICAgIDk5LCAyMDQsIDcsIDIyNSwgMTQyLCA5OSwgMjMwLCA5NCwgMjI1LCAxNDIsIDk5LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIAorICAgIDEwNiwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAxMDQsIDE2MSwgOTksIDIzNiwgMTAzLCAxNjEsIDk5LCAyMzYsIDEwMiwgCisgICAgMTYxLCA5OSwgMjM2LCAxMDEsIDE2MSwgOTksIDIzNiwgMTAwLCAxNjEsIDk5LCAyMzYsIDk5LCAxNjEsIDk5LCAyMzYsIDk4LCAKKyAgICAxNjEsIDk5LCAyMzYsIDk3LCAxNjEsIDk5LCAyMzYsIDk2LCAxNjEsIDk5LCAyMzYsIDk1LCAxNjEsIDk5LCAyMzYsIDk0LCAKKyAgICAxNjEsIDk5LCAyMzYsIDkzLCAxNjEsIDk5LCAyMzYsIDkyLCAxNjEsIDk5LCAyMzYsIDkxLCAxNjEsIDk5LCAyMzYsIDkwLCAKKyAgICAxNjEsIDk5LCAyMzYsIDg5LCAxNjEsIDk5LCAyMzYsIDg4LCAxNjEsIDk5LCAyMzYsIDg3LCAxNjEsIDk5LCAyMzYsIDg2LCAKKyAgICAxNjEsIDk5LCAyMzYsIDg1LCAxNjEsIDk5LCAyMzYsIDg0LCAxNjEsIDk5LCAyMzYsIDgzLCAxNjEsIDk5LCAyMzYsIDgyLCAKKyAgICAxNjEsIDk5LCAyMzYsIDgxLCAxNjEsIDk5LCAyMzYsIDgwLCAxNjEsIDk5LCAyMzYsIDc5LCAxNjEsIDk5LCAyMzYsIDc4LCAKKyAgICAxNjEsIDk5LCAyMzYsIDc3LCAxNjEsIDk5LCAyMzYsIDc2LCAxNjEsIDk5LCAyMzYsIDc1LCAxNjEsIDk5LCAyMzYsIDc0LCAKKyAgICAxNjEsIDk5LCAyMzYsIDczLCAxNjEsIDk5LCAyMzYsIDcyLCAxNjEsIDk5LCAyMzYsIDcxLCAxNjEsIDk5LCAyMzYsIDcwLCAKKyAgICAxNjEsIDk5LCAyMzYsIDY5LCAxNjEsIDk5LCAyMzYsIDY4LCAxNjEsIDk5LCAyMzYsIDY3LCAxNjEsIDk5LCAyMzYsIDY2LCAKKyAgICAxNjEsIDk5LCAyMzYsIDY1LCAxNjEsIDk5LCAyMzYsIDY0LCAxNjEsIDk5LCAyMzYsIDYzLCAxNjEsIDk5LCAyMzYsIDYyLCAKKyAgICAxNjEsIDk5LCAyMzYsIDYxLCAxNjEsIDk5LCAyMzYsIDYwLCAxNjEsIDk5LCAyMzYsIDU5LCAxNjEsIDk5LCAyMzYsIDU4LCAKKyAgICAxNjEsIDk5LCAyMzYsIDU3LCAxNjEsIDk5LCAyMzYsIDU2LCAxNjEsIDk5LCA4MCwgMjQ5LCAyNSwgMTYxLCA5OSwgMjA2LCAKKyAgICAzNywgMTYxLCA5OSwgMjA2LCAzNiwgMTYxLCA5OSwgMjA2LCAzNSwgMTYxLCA5OSwgMjA2LCAzNCwgMTYxLCA5OSwgMjA2LCAKKyAgICAzMywgMTYxLCA5OSwgMjA2LCAzMiwgMTYxLCA5OSwgMjA2LCAzMSwgMTYxLCA5OSwgMjA2LCAzMCwgMTYxLCA5OSwgMjA2LCAKKyAgICAyOSwgMTYxLCA5OSwgMjA2LCAyOCwgMTYxLCA5OSwgMjA2LCAyNywgMTYxLCA5OSwgMjA2LCAyNiwgMTYxLCA5OSwgMjA2LCAKKyAgICAyNSwgMTYxLCA5OSwgMjA2LCAyNCwgMTYxLCA5OSwgMjA2LCAyMywgMTYxLCA5OSwgMjA2LCAyMiwgMTYxLCA5OSwgMjA2LCAKKyAgICAyMSwgMTYxLCA5OSwgMjA2LCAyMCwgMTYxLCA5OSwgMjA2LCAxOSwgMTYxLCA5OSwgMjA2LCAxOCwgMTYxLCA5OSwgMjA2LCAKKyAgICAxNywgMTYxLCA5OSwgMjA2LCAxNiwgMTYxLCA5OSwgMjA2LCAxNSwgMTYxLCA5OSwgMjA2LCAxNCwgMTYxLCA5OSwgMjA2LCAKKyAgICAxMywgMTYxLCA5OSwgMjA2LCAxMiwgMTYxLCA5OSwgMjA2LCAxMSwgMTYxLCA5OSwgMjA2LCAxMCwgMTYxLCA5OSwgMjA2LCAKKyAgICA5LCAxNjEsIDk5LCAyMDYsIDgsIDE2MSwgOTksIDIwNiwgNywgMTYxLCA5OSwgMjA2LCA2LCAxNjEsIDk5LCAyMDYsIDUsIAorICAgIDE2MSwgOTksIDIwNiwgNCwgMTYxLCA5OSwgMjA2LCAzLCAxNjEsIDk5LCAyMDYsIDIsIDE2MSwgOTksIDIwNiwgMSwgMTYxLCAKKyAgICA5OSwgMjA2LCAwLCAxNjEsIDk5LCAyMDUsIDI1NSwgMTYxLCA5OSwgMjA1LCAyNTQsIDE2MSwgOTksIDIwNSwgMjUzLCAxNjEsIAorICAgIDk5LCAyMDUsIDI1MiwgMTYxLCA5OSwgMjA1LCAyNTEsIDE2MSwgOTksIDIwNSwgMjUwLCAxNjEsIDk5LCAyMDUsIDI0OSwgCisgICAgMTYxLCA5OSwgMjA1LCAyNDgsIDE2MSwgOTksIDIwNSwgMjQ3LCAxNjEsIDk5LCAyMDUsIDI0NiwgMTYxLCA5OSwgMjA1LCAKKyAgICAyNDUsIDIxOCwgODgsIDI0NywgMzgsIDI0OSwgMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjExLCAyMjUsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMTEsIDIyNSwgCisgICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAKKyAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIAorICAgIDExMiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjExLCAyMjUsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAKKyAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIAorICAgIDgyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKKyAgICAzOCwgMTIwLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKKyAgICAzOCwgMjM5LCAxNDcsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDIzNywgNTMsIDIxOCwgCisgICAgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDIzNywgCisgICAgNTMsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgCisgICAgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgCisgICAgMjMwLCAxNzksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyMzcsIDUzLCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMTYsIDEzOCwgMjMwLCA5NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDMsIAorICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0MywgCisgICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIAorICAgIDIzMywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgCisgICAgMzgsIDIxMywgMTEyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjQzLCAyMjAsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAKKyAgICAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgCisgICAgMjI5LCAzMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgNjIsIDIzMCwgOTQsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDYsIDIsIDIxOCwgCisgICAgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDYsIDIsIAorICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgCisgICAgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAKKyAgICAxNDMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIAorICAgIDIwOSwgMTUzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgCisgICAgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0NiwgMiwgMjE4LCAKKyAgICA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgNjEsIDIzMCwgOTQsIDIxOCwgODgsIAorICAgIDI0NywgMzgsIDIzOSwgMTczLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM3LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMzLCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMDgsIDMyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMwLCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMDgsIDI5LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDI4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ3LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ2LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMDgsIDQ0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQyLCAyMTgsIDg4LCAKKyAgICAyNDcsIDM4LCAyMDgsIDQxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM5LCAKKyAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM2LCAyMTgsIDg4LCAyNDcsIDM4LCAKKyAgICAyMDgsIDM1LCAxNywgMjAyLCA4NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMDIsIDg1LCAyNDUsIDIzMywgMTcsIDExOCwgCisgICAgMjQ1LCAyMzMsIDE3LCAxMjAsIDI0NSwgMjMzLCAxNywgMTI2LCAyNDUsIDIzMywgMTcsIDIzOSwgMTQ3LCAyNDUsIDIzMywgCisgICAgMTcsIDIzOSwgMjMzLCAyNDUsIDIzMywgMTcsIDIxMiwgODgsIDI0NSwgMjMzLCAxNywgMjEzLCAxMTIsIDI0NSwgMjMzLCAKKyAgICAxNywgMjQxLCAxNDMsIDI0NSwgMjMzLCAxNywgMjIyLCA2NCwgMjQ1LCAyMzMsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMDIsIAorICAgIDg0LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMDIsIDg0LCAxMDIsIDgsIDYsIDEsIDYzLCAxMDIsIDgsIDYsIDEsIAorICAgIDI0OSwgMjU1LCAxMDIsIDgsIDYsIDEsIDI0NywgMTI1LCAxMDIsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNiwgMSwgCisgICAgNzQsIDEwMiwgOCwgNiwgMSwgMjQwLCAxNzQsIDEwMiwgOCwgNiwgMSwgMjM5LCA3NSwgMTAyLCA4LCA2LCAxLCAyMzcsIAorICAgIDE3MSwgMTAyLCA4LCA2LCAxLCA3NSwgMTAyLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA2LCAxLCAyMzAsIDU0LCAKKyAgICAxMDIsIDgsIDYsIDEsIDE1OSwgMTAyLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAyLCAKKyAgICA4LCA2LCAxLCA3OCwgMTAyLCA4LCA2LCAxLCAyMTksIDE4NCwgMTAyLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA2LCAKKyAgICAxLCAxNDYsIDEwMiwgOCwgNiwgMSwgMTk0LCAxMDIsIDgsIDYsIDEsIDIxMCwgNjksIDEwMiwgOCwgNiwgMSwgNjgsIDEwMiwgCisgICAgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgNiwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMiwgCisgICAgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgNiwgMSwgMjAyLCAxNTksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCisgICAgOCwgNiwgMSwgMTk0LCA0MywgMzcsIDgsIDYsIDEsIDI0NywgMTI1LCA0MywgMzcsIDgsIDYsIDEsIDE0NiwgNDMsIDI0NiwgCisgICAgMjM5LCA0MywgMjAzLCAxOTgsIDEwMywgOCwgNiwgMSwgNjMsIDEwMywgOCwgNiwgMSwgMjQ5LCAyNTUsIDEwMywgOCwgNiwgCisgICAgMSwgMjQ3LCAxMjUsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTAzLCA4LCA2LCAxLCA3NCwgMTAzLCA4LCA2LCAxLCAyNDAsIAorICAgIDE3NCwgMTAzLCA4LCA2LCAxLCAyMzksIDc1LCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxMDMsIDgsIDYsIDEsIDc1LCAKKyAgICAxMDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDEwMywgOCwgNiwgMSwgMTU5LCAxMDMsIDgsIAorICAgIDYsIDEsIDIyNiwgMTg1LCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDMsIDgsIDYsIDEsIDc4LCAxMDMsIDgsIDYsIDEsIAorICAgIDIxOSwgMTg0LCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDMsIDgsIDYsIDEsIDE0NiwgMTAzLCA4LCA2LCAxLCAxOTQsIAorICAgIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTAzLCA4LCA2LCAxLCA2OCwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTAzLCA4LCAKKyAgICA2LCAxLCAyMDQsIDE0NCwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTAzLCA4LCAKKyAgICA2LCAxLCAyMDIsIDE1OSwgMTAzLCAyMzUsIDI1NSwgMTAzLCAyMjMsIDE4NywgMTAzLCAyMTQsIDE3OSwgMTAzLCAyMTEsIAorICAgIDE2NywgMTAzLCAyMTgsIDEwLCAxMDMsIDIwNCwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCAKKyAgICAyNDksIDI1NSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgNDMsIAorICAgIDgsIDYsIDEsIDc0LCAxODIsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjM5LCA3NSwgMTgyLCAKKyAgICA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgNDMsIDgsIDYsIDEsIDc1LCAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDE4NCwgCisgICAgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCA0MywgOCwgNiwgMSwgMTU5LCAxODIsIDQzLCA4LCA2LCAxLCAyMjYsIAorICAgIDE4NSwgMTgyLCA0MywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDc4LCAxODIsIDQzLCA4LCA2LCAxLCAKKyAgICAyMTksIDE4NCwgMTgyLCA0MywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgNDMsIDgsIDYsIDEsIDE0NiwgMTgyLCA0MywgOCwgCisgICAgNiwgMSwgMTk0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIDQzLCA4LCA2LCAxLCA2OCwgMTgyLCA0MywgOCwgCisgICAgNiwgMSwgMjA2LCAxNjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDE5NiwgCisgICAgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMTYsIDE4OCwgMjI1LCAKKyAgICAyNiwgNTQsIDIxNiwgMTg4LCAyMjUsIDIzLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDYzLCAxODIsIDEwMywgOCwgNiwgMSwgCisgICAgMjQ5LCAyNTUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgCisgICAgMTAzLCA4LCA2LCAxLCA3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjM5LCAKKyAgICA3NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDEwMywgOCwgNiwgMSwgNzUsIDE4MiwgMTAzLCA4LCA2LCAKKyAgICAxLCAyMzAsIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAxNTksIDE4MiwgCisgICAgMTAzLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDEwMywgOCwgNiwgMSwgCisgICAgNzgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDEwMywgCisgICAgOCwgNiwgMSwgMTQ2LCAxODIsIDEwMywgOCwgNiwgMSwgMTk0LCAxODIsIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCAKKyAgICAxMDMsIDgsIDYsIDEsIDY4LCAxODIsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDQsIAorICAgIDE0NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgMTAzLCAKKyAgICA4LCA2LCAxLCAyMDIsIDE1OSwgMjQ1LCAxMjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDIzNSwgCisgICAgMTY0LCAxODIsIDEwMywgMTg1LCAxODIsIDEwMywgMjE1LCAzNiwgMTgyLCAxMDMsIDI1MSwgMjMyLCAxODIsIDEwMywgMjA0LCAKKyAgICA2MywgNTEsIDI0MywgMTMyLCAxMDMsIDI0NiwgNDIsIDEwMywgMjQ1LCAxNzYsIDEwMywgMjM5LCAxMjksIDEwMywgMjM1LCAKKyAgICAxNTUsIDEwMywgMjIyLCAyMTMsIDEwMywgMjIyLCAyMDUsIDEwMywgMjIwLCA1MSwgMTAzLCAyMTEsIDI0NSwgMTAzLCAxMTIsIAorICAgIDMsIDI0MCwgMjEyLCA4MiwgMTAzLCAyMDUsIDE2NiwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA2MywgMjE2LCAxMzAsIAorICAgIDIzMSwgMzIsIDE2LCAxLCAyNDksIDI1NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyNDcsIDEyNSwgMjE2LCAxMzAsIAorICAgIDIzMSwgMzIsIDE2LCAxLCAyNDUsIDUxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgCisgICAgMTYsIDEsIDI0MCwgMTc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzOSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAKKyAgICAxNiwgMSwgMjM3LCAxNzEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCisgICAgMjMwLCAxODQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjMwLCA1NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKKyAgICAxNTksIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjI2LCAxODUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjIzLCAKKyAgICAxNjMsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE5LCAxODQsIAorICAgIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE3LCAxMzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTQ2LCAyMTYsIAorICAgIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE5NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTAsIDY5LCAyMTYsIDEzMCwgCisgICAgMjMxLCAzMiwgMTYsIDEsIDY4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwNiwgMTY0LCAyMTYsIDEzMCwgMjMxLCAKKyAgICAzMiwgMTYsIDEsIDIwNCwgMTQ0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMywgMTk2LCAyMTYsIDEzMCwgMjMxLCAKKyAgICAzMiwgMTYsIDEsIDIwMywgMTI0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMiwgMTU5LCA1MSwgMTcyLCAyMzYsIAorICAgIDEzMCwgMTAzLCA2NywgMjI5LCAxNCwgMTAzLCA2NywgMjE1LCAzNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTAwLCAKKyAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMiwgMTAzLCA2NywgMjQ0LCAKKyAgICA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDYsIDEwMywgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDc4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDExOCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg1LCAxMDMsIDEyLCAKKyAgICAyMDYsIDIzOSwgMjMzLCA5NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICAxMDEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTMsIDEwMywgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDExNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDg0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA3LCAxMDMsIDEyLCAKKyAgICAyMDYsIDIzOSwgMjMzLCAxMDksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICA5OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMiwgMTAzLCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgMTIxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCisgICAgMTAyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMSwgMTAzLCAxMiwgCisgICAgMjA2LCAyMzksIDIzMywgOTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKKyAgICA5OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgwLCAxMDMsIDEyLCAyMDYsIAorICAgIDIzOSwgMjMzLCAxMTAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MCwgCisgICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgzLCAxMDMsIDEyLCAyMDYsIAorICAgIDIzOSwgMjMzLCAxMTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwOCwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKKyAgICAxMiwgMjA2LCAyMzksIDIzMywgODksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIAorICAgIDEyMSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAyMDgsIDEzMywgMjEzLCAKKyAgICAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIAorICAgIDIwNiwgMjM5LCAyMzMsIDg2LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA5OSwgCisgICAgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgODIsIDIwOCwgMTMzLCAyMTMsIDMzLCAKKyAgICAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAKKyAgICAyMzksIDIzMywgOTUsIDQzLCAxODksIDI1MSwgMTExLCA0MywgMTg5LCAyNTEsIDEzNiwgMjQ1LCA2MiwgMjM5LCAxODQsIAorICAgIDI0NiwgMTYsIDIwNywgMywgMjIyLCA4MCwgMywgMjExLCA5MSwgMjEwLCAyMDksIDExNSwgMjI0LCAxMSwgMjEwLCAyMDgsIAorICAgIDI0NiwgNDYsIDI1MCwgNTAsIDI0MiwgMTcsIDIxMCwgMjA3LCAxMTUsIDI0NywgMTgyLCAyMTYsIDE4OSwgMjQ3LCAyMDgsIAorICAgIDI1MCwgNTAsIDIyMiwgNzksIDIwNCwgODEsIDIwNCwgNzUsIDIwNSwgMTgxLCAyMjQsIDExOCwgMjA0LCA2NSwgMjQxLCAKKyAgICAxODAsIDIzOCwgNDYsIDI0MCwgMjI4LCAyNDEsIDE4MCwgMjM4LCA0NiwgMjUwLCAyMzgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAKKyAgICAyNTAsIDY4LCAyMzgsIDQ2LCAzLCAyMjQsIDIzMSwgMjIyLCAyMTQsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyNDUsIDEzOSwgCisgICAgMjI0LCAzMCwgOTcsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjM4LCA3NywgMjI0LCAzMCwgCisgICAgOTcsIDIzOSwgMTAyLCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjM4LCA3NywgMjI0LCAzMCwgOTcsIDIyOCwgMSwgMjE3LCAKKyAgICA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDI0NSwgMTM5LCAyMjQsIDMwLCA5NywgMjQ1LCAxMzksIDIyNCwgMjksIDIyMiwgCisgICAgMjE0LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMjgsIAorICAgIDEsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDEwMiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIxMCwgCisgICAgMjE1LCAzLCAyNDAsIDEwMiwgMjM4LCA0NCwgMjExLCA5NCwgMjEyLCAyMzMsIDIxMSwgOTQsIDIwOSwgODAsIDYyLCAyNDIsIAorICAgIDQ5LCA2MSwgMjEwLCAyMTQsIDYxLCAyMTAsIDIxNSwgMywgNSwgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAKKyAgICAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgOCwgMywgMjE2LCAxOTAsIDI0NiwgOCwgMywgMjE2LCAxOTAsIAorICAgIDI0NiwgOCwgMywgMjEyLCAxOSwgMjQ2LCA4LCAzLCAyMjcsIDEzMSwgMjQ2LCA4LCAzLCAyMDgsIDEzNywgMjM5LCAxODUsIAorICAgIDIwNCwgMTcsIDI0OCwgMjcsIDI0MCwgMTAyLCAyMzYsIDQ3LCAyNDMsIDEwMiwgMjEwLCAyLCAyNDcsIDE1OCwgMjQ2LCAKKyAgICAxNDgsIDIxNCwgMTYzLCAyNDAsIDIyMiwgMjA4LCA5NSwgMjQ0LCA2OSwgMjA4LCA5NSwgMjE5LCAxMzUsIDIwOCwgOTUsIAorICAgIDI0NywgODUsIDIzNiwgNDcsIDIxOCwgMjQ4LCAyMDcsIDE5MywgMjQ2LCAxNTIsIDI0OCwgMzAsIDIxNSwgMjAyLCAyMzcsIAorICAgIDIsIDIxMCwgMjEyLCAyNDgsIDMwLCAyNDEsIDE4NCwgNzYsIDIyNSwgMTMxLCAyNDEsIDE4NCwgNzYsIDIxNiwgNTIsIDIzNywgCisgICAgMjgsIDIzOSwgMTQ3LCAyMjcsIDIzMCwgMjQ2LCA2LCAyMjUsIDEwNCwgMjI3LCAyMjksIDI0MCwgODUsIDIyNywgMjI5LCAKKyAgICAyMjcsIDIzMCwgMjM5LCAxOTIsIDIzMSwgNTAsIDIwNCwgMTYsIDIyMywgMTk2LCAyMDgsIDE2NSwgMjUwLCAzMywgMjM4LCAKKyAgICA1LCAyMjQsIDI0OSwgMjA0LCA3OSwgMjA5LCAyMjUsIDIyNywgMTk5LCAyNDgsIDIzOSwgMjE4LCAxMjAsIDIxNiwgMTM4LCAKKyAgICAyNTAsIDE1NywgMjM3LCAyNDQsIDI1MCwgMTU3LCAyMTksIDI5LCAyMTksIDMxLCAyNDYsIDE1MywgMjExLCA0NSwgMjM3LCAKKyAgICAxMzIsIDIxMiwgNTEsIDc2LCAyMTgsIDEwMCwgMjI1LCAxNiwgMjIwLCAzMiwgMjQ4LCAxMSwgMjE4LCAyMSwgMjI3LCAyMTAsIAorICAgIDIxNiwgNTMsIDI0NSwgMTQ1LCAyMTYsIDUzLCAyNDgsIDI1MSwgMjQ1LCAxNzksIDIxNiwgNTIsIDI0NSwgODksIDI1LCAKKyAgICAyMTYsIDUyLCAyMTEsIDc5LCAyNDcsIDIzNywgMjExLCAyMjQsIDI0NywgMjE5LCAyMzksIDEyOCwgMjM5LCAxMjQsIDIxNSwgCisgICAgMjIzLCAyMTAsIDE2NSwgMjE4LCAyMywgMjQ0LCAxNjMsIDIyMCwgNzUsIDIxMCwgMTgzLCAyMzksIDEyNSwgMjEyLCAyMDQsIAorICAgIDIzOSwgMjQ0LCAyNDcsIDc5LCAzLCAyMTAsIDE1OCwgMjQ0LCAxMywgMjEyLCA3LCAyMzUsIDE2MywgMjQ1LCAxNDMsIDIxMywgCisgICAgNTEsIDIzNSwgMTYyLCAyMzUsIDE2MywgMjQ1LCAxNDMsIDI0MiwgNzMsIDI0NSwgMTc4LCAyNDYsIDExNCwgMTQyLCAyNDcsIAorICAgIDUxLCAyMjcsIDMyLCAyNDUsIDgxLCAyMzYsIDExOSwgMjE4LCAyNSwgMjEyLCAyMTcsIDI0OCwgMTE2LCAyNDcsIDIzMywgCisgICAgMjE4LCAyNiwgNzYsIDIzOSwgMTc0LCAyNDUsIDE3NywgMjM5LCAxNjMsIDI1LCAyMjksIDMzLCAyMDksIDE4NCwgMjA0LCAzLCAKKyAgICAyMzcsIDEwMiwgMjE1LCAxMywgMjQ3LCAyNTAsIDI1LCAyNDUsIDk5LCAyMDQsIDEzLCAyMzgsIDQ5LCAyNDUsIDI1MSwgCisgICAgMjM4LCA0OSwgMjA4LCA1MSwgMjQyLCA1NCwgMjQ4LCAxNDYsIDIyMywgMjM1LCAyNDYsIDIzLCAyNDgsIDE0NiwgMjIzLCAKKyAgICAyMzQsIDI0OSwgMjgsIDI0NywgMjQ5LCAyMzksIDE2MywgMjUsIDIyOSwgMzQsIDMsIDIxOCwgODksIDI0NywgMjUwLCAzLCAKKyAgICAyMTgsIDM4LCAyNDUsIDE2NywgMjE4LCA0MCwgMjE2LCA1NCwgMjAzLCAyMjcsIDIxNywgMjQyLCAyNDgsIDU4LCAyNDcsIAorICAgIDc4LCAyMzAsIDE3OCwgMjQ2LCAxMDYsIDIwOCwgOTUsIDI0MCwgNjgsIDI0NiwgMTA1LCAyMzksIDI0NywgMjM5LCAyNDgsIAorICAgIDIxMSwgMjIyLCAyNDgsIDI1MCwgMjE5LCA2NiwgMjE4LCAzOSwgMjQ1LCAyMTUsIDI0OCwgMjUxLCAyMDksIDIyOSwgMjA4LCAKKyAgICA5NSwgMjQ1LCAxMjgsIDIzOSwgMjE5LCAyMTgsIDEyMSwgMjQ0LCA2NiwgMjMwLCAxNjksIDI0MywgOTYsIDI0NywgMjcsIAorICAgIDIxMSwgNDQsIDIwNCwgMTcsIDI0NiwgMTMwLCAyMjQsIDMwLCAyMDUsIDIxNywgMjQ2LCAyMDQsIDIxNCwgMTk2LCAyMTQsIAorICAgIDIyMywgMjM4LCAxMSwgMjQ3LCA0OCwgMjM3LCA1NiwgMywgMjA4LCAyMTEsIDIyMCwgMzIsIDIwOSwgOTMsIDIyNywgMjIyLCAKKyAgICAyNDcsIDI0MywgNzYsIDIzOSwgMTk2LCAyMjQsIDExOSwgMjI1LCAxMywgMjE2LCAxMTAsIDIxNiwgNTQsIDMxLCAyMjksIAorICAgIDE1MCwgMywgMjMwLCAxNzcsIDIxMSwgMTUsIDIyNCwgMTUyLCAyMjcsIDE2NywgMjEyLCA0OSwgMjQ1LCAxODQsIDIyOSwgCisgICAgMzAsIDI0OCwgMTU4LCAyNTAsIDc4LCAzMSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyNDQsIDE5LCAzMSwgMjIxLCAxNTUsIAorICAgIDI0MCwgNiwgMjM5LCAxMzMsIDI1MSwgMTE0LCAyMDgsIDI1MiwgMjQ3LCAyOCwgMjM2LCA0OSwgMjQwLCAzNSwgMjA0LCAzNiwgCisgICAgMjE1LCAyMTMsIDI0NSwgMjUyLCAyMzksIDIzOSwgMjE4LCA1NCwgMjUsIDIzOSwgMjQzLCAyMjQsIDE1MiwgMjIzLCAyNTMsIAorICAgIDI0NywgNjUsIDI0NiwgNjUsIDIzNywgNjAsIDI1MCwgODUsIDIxOSwgMTM4LCAyMDgsIDE0NSwgMjM3LCA4MywgMjQ2LCA1MSwgCisgICAgMjA5LCAxNDQsIDIwOCwgMjUzLCAyNDYsIDM3LCAyNDgsIDIwLCAyMTgsIDI0MSwgMjUwLCA4NCwgMjA1LCAyMjYsIDIzOCwgCisgICAgMjM4LCAyNDMsIDE2NywgMjM2LCAyMzAsIDIxMiwgNDIsIDIyNSwgMTcyLCAyNDgsIDY5LCAyMzgsIDIzOSwgMjQzLCAyMTMsIAorICAgIDI0NywgMjM2LCAyMzksIDE5OCwgMjE4LCA4OCwgMjQ3LCAzNiwgMzEsIDIyMSwgMTYwLCAyMjMsIDIyNiwgMzEsIDIyMSwgCisgICAgMTU1LCAyMTQsIDIwOSwgMjM3LCAyMTQsIDMxLCAyMjksIDE0OSwgMjA4LCAyNywgMjA1LCAyMDYsIDMxLCAyMTQsIDE4OSwgCisgICAgMjE1LCAxMjYsIDIxMiwgMjQ2LCAzLCAyMTQsIDIyNiwgMjA5LCAxNDksIDIxNiwgMjA5LCAyNSwgMjQ4LCAyNTEsIDIxMiwgCisgICAgNjcsIDI1LCAyMTIsIDY3LCAyNDgsIDQsIDI0OCwgMjEzLCAyNSwgMjM2LCAxMTIsIDI0NiwgMTU0LCAyMzksIDIyNSwgMjEyLCAKKyAgICAxOCwgMjE1LCAxMjcsIDIxMCwgMTg4LCAyMTEsIDE4OSwgMjI1LCAxMywgMjA4LCA1MiwgMjM2LCA1MCwgMjE2LCAyMTAsIAorICAgIDI1MCwgMjM5LCAyMzksIDE3MSwgMjE1LCAxMzksIDIzOSwgMTcxLCAyMTAsIDE2MCwgMjA0LCA1MSwgMjI3LCAxMzYsIDIzOCwgCisgICAgMzAsIDIxNiwgMjExLCAyMjQsIDE4LCAyMTYsIDIxMSwgMjQ3LCAzOSwgMjQ1LCAxMzYsIDI0OCwgMjEwLCAyNSwgMjQ4LCAKKyAgICAyNTEsIDIwNSwgMTgwLCAyNDAsIDI1LCAyMzYsIDEzMywgMjExLCA3MywgMjUsIDI0OCwgMjUxLCAyMzUsIDE2MywgMjM2LCAKKyAgICAxMzMsIDIxMSwgNzMsIDI1LCAyMTcsIDE4NCwgMjEwLCA5LCAyMDksIDE0OSwgMjE5LCAxNTYsIDI1LCAyNDgsIDI1MSwgCisgICAgMjEyLCAyMCwgMjQ3LCA0NCwgMjI0LCAxMiwgMjQ3LCA2MywgMjQ4LCAxNjEsIDMsIDIwNywgMywgMjQ3LCAxODQsIDI0NSwgCisgICAgMTk4LCAyMzYsIDM5LCAyNDcsIDE4MiwgMjQ2LCA0NSwgMjQ0LCAyMywgMjM2LCAzOSwgMjQ3LCAxODMsIDI0NiwgMzUsIAorICAgIDI0NywgMTgzLCAyNDQsIDE1LCAyNDQsIDE2LCAyMzAsIDIwOCwgMjIzLCA2NywgMjE5LCA3MiwgMjExLCAxMDQsIDIzNiwgCisgICAgMzksIDI0NywgMTgzLCAyMzYsIDM5LCAzLCAyMzgsIDIyMiwgMjIwLCA2NywgMjQ3LCAxODMsIDIzMCwgMTY5LCAyMTgsIDMxLCAKKyAgICAyMjAsIDY2LCAyNDAsIDIyNywgMjE4LCAzMSwgMjIwLCA2NiwgMjM2LCA0OCwgMjQ4LCAyMzUsIDI1MCwgMjMsIDIwOSwgCisgICAgMTU3LCAyMjUsIDE3MiwgMjM2LCA0NCwgMjI3LCAxLCAyMzYsIDQ0LCAyNDUsIDE4MiwgMjExLCA1NywgMjE0LCAxOTUsIAorICAgIDI0NCwgMjYsIDIxMSwgNTcsIDI0MCwgOTEsIDIzMCwgMTg5LCAyMjgsIDEzLCAyMzAsIDE2OSwgMjQ3LCAxOSwgMjQwLCAKKyAgICAyMjcsIDI0NywgMTksIDYxLCAyMTksIDMsIDYyLCAyMTksIDMsIDIwNCwgNzMsIDYxLCAyMzksIDIyNSwgMjA0LCA3MywgNjIsIAorICAgIDIzOSwgMjI1LCAyMTUsIDIwMSwgNjIsIDIxNSwgMjAxLCAyMjgsIDEwNSwgMjQ5LCAxMiwgMjE2LCAyMDksIDI1LCAyMTIsIAorICAgIDE4MywgMjQ3LCAyNDEsIDI1LCA0NywgMjUwLCAyMzQsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTksIDI0MSwgCisgICAgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTYsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTQsIDI0MSwgOTgsIDY1LCAKKyAgICAyMzksIDIzNCwgMjA3LCAxMTIsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTAsIDIxNiwgMTcyLCAyMjQsIDksIAorICAgIDIxOSwgMTkzLCAyMDQsIDgxLCAyNDcsIDE4OCwgMjQ1LCAxNDksIDIwOCwgMjQ1LCAyMjcsIDE4MywgMjE2LCAyMTIsIDI0NywgCisgICAgMTcsIDI0MiwgNjEsIDI0NSwgMTM1LCAyMDQsIDM5LCAyMTIsIDI2LCAyMTIsIDI0LCAyMzYsIDQ5LCAyMTYsIDE4NCwgMjM4LCAKKyAgICAzNSwgMjEzLCAzNywgMjI0LCA0OCwgMjE1LCAyMDUsIDI0NiwgMTQwLCAyNDMsIDEwMiwgMjE4LCAxMzEsIDI0OCwgMjEsIAorICAgIDI0MSwgMTE0LCAyMjAsIDc4LCAyMTEsIDIwMiwgMjEzLCAzMiwgMjQ3LCAxODcsIDI1MCwgMTk4LCAyMzYsIDExOCwgMjI4LCAKKyAgICA5OCwgMjQ4LCAxNDQsIDIzOSwgMjQzLCAyMDgsIDUxLCAyMzksIDI0MywgMjQ4LCAyOCwgMjA3LCAxNzEsIDIzNywgODEsIAorICAgIDI0NiwgMTQxLCAyNDksIDI4LCAyNDYsIDE0MSwgMjM5LCAxMTgsIDI0OSwgMjgsIDI0NiwgMTQxLCAyNDgsIDYwLCAyMTksIAorICAgIDUsIDIyOSwgMjQsIDIxOCwgNDQsIDI0MiwgNTEsIDI0NywgNjcsIDI0OSwgMTcsIDI0NywgNjcsIDI0MywgOTUsIDIyNCwgCisgICAgMTAsIDI0MCwgMTAyLCAyNDUsIDE1MCwgMjQwLCAxMDIsIDIwOCwgMjQ2LCAyNDAsIDEwMiwgMjE2LCAyMTMsIDI0MCwgMTAyLCAKKyAgICAyNDcsIDE4LCAyNDAsIDEwMiwgMjQyLCA2MiwgMjQwLCAxMDIsIDIxMSwgMTg3LCAyMDQsIDM5LCAyMzYsIDUwLCAyNDAsIAorICAgIDEwMiwgMjI0LCA0OSwgMjQwLCAxMDIsIDI0MywgMTAzLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDI0MCwgMTAyLCAyMzksIDEyMiwgCisgICAgMjQwLCAxMDIsIDIzNywgMTI5LCAyNDAsIDEwMiwgMjAzLCAyNTMsIDI0MCwgMTAyLCAyNDgsIDE1NiwgMjQwLCAxMDIsIAorICAgIDIxOSwgMTIwLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDIyMSwgMTY3LCAyMTksIDQ2LCAyMTcsIDIzMCwgMjQ2LCAxMjUsIDI0MCwgCisgICAgMTg0LCAyNDAsIDE5MSwgMjQxLCAxODMsIDIyMSwgMTY3LCAyMjQsIDcsIDIwOCwgMTUwLCA2MSwgMTEyLCAyMTgsIDU5LCAKKyAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNDksIDIxOCwgNTksIAorICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjM5LCAyMzcsIDIzNywgMTI0LCAKKyAgICA1NCwgMjA0LCA3MywgMjM3LCAxMjQsIDU0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIDIwOSwgMjAsIDExMiwgNTQsIDIwOSwgCisgICAgMjAsIDEyMSwgNTQsIDI0NiwgMzYsIDIzNywgMTAwLCA1NCwgMTcxLCAyMzcsIDEwMCwgNTQsIDI0NSwgMTIyLCAyMDMsIAorICAgIDI0OSwgMjM3LCA4MywgMjQwLCAxODcsIDIyMiwgMjM2LCAyMTAsIDY4LCAyMzAsIDE2MCwgMjQyLCA1NiwgMjI5LCA4NSwgCisgICAgMjQ4LCA3MSwgMjAzLCAyNDksIDI0NiwgOSwgMjE3LCAxNjUsIDIzNywgMTAzLCAyMTgsIDIyLCAyMjUsIDExMiwgMjEyLCAKKyAgICAyMzksIDI1MCwgNDYsIDIxMiwgMjM5LCAyMzYsIDI0MywgMjEyLCAyMzksIDIwMywgMjQ5LCAyMTQsIDI0MCwgMjAzLCAyNDksIAorICAgIDI0OCwgMywgMjM5LCAxNjksIDI0NywgMTUwLCAyMzEsIDUwLCAyMTIsIDEzNiwgMjQ3LCAxNDksIDIzMSwgNTAsIDIxMiwgCisgICAgMTM2LCAyNDcsIDIzMiwgMjM4LCA2MCwgMjI1LCAxMjIsIDIwMywgMjUwLCAyNDAsIDgyLCAyMjUsIDEyMywgMjUsIDIwMywgCisgICAgMjUxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMjQsIDI0MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjAzLCAyNDgsIAorICAgIDIzNiwgMTI3LCAyMzcsIDk5LCAyMTgsIDUxLCAyMjAsIDY1LCAyMDMsIDI1MSwgMywgMjQ3LCAxNjgsIDI0MSwgMTgxLCAKKyAgICAyNDcsIDIwOSwgMywgMjA2LCA0NiwgMjE4LCAyMzAsIDMsIDI0OCwgMzIsIDIzNywgMTQ1LCAyMjUsIDEyMywgMywgMjM3LCAKKyAgICAyMjcsIDIxOCwgMTY4LCAyMjUsIDEwOCwgMjI1LCAxMjMsIDMsIDIwNywgMTgwLCAyMjAsIDQ0LCAyMjUsIDEyMiwgMjIwLCAKKyAgICA0NCwgMjAzLCAyNTAsIDI0OSwgMjcsIDI0NSwgMTk5LCAyMDMsIDIzNCwgMjE3LCAyMzUsIDIzMCwgMTY5LCAyMjAsIDYxLCAKKyAgICAyMzAsIDE2OSwgMjM4LCAzNCwgMjM4LCA4OSwgMjQ5LCAyOCwgMjUwLCAyMjEsIDI0MCwgMTk2LCAyNTEsIDIwLCAyNTEsIAorICAgIDIxLCAyMjQsIDM5LCAyMzEsIDU1LCAyMTIsIDYyLCAyMzEsIDI1LCAyNDQsIDEyLCAyMTgsIDIyOSwgMjM3LCAyMjEsIDI0NCwgCisgICAgMTY3LCAyMjcsIDk3LCAyMjMsIDkxLCAyMTgsIDUwLCAyNDAsIDEwMywgMjI1LCA3NCwgMjM3LCAxNDQsIDI0OCwgMjI5LCAKKyAgICAyMTgsIDUzLCAyMTAsIDg4LCAyMTgsIDEyNCwgMjI5LCA2NywgODIsIDIyNywgMSwgMjI3LCAxNzQsIDIxNSwgMjUyLCAyMzgsIAorICAgIDE4MCwgMjExLCA2MywgMjI5LCA2NiwgMjQ3LCAyNDIsIDI0NSwgMTUyLCAzLCAyMzcsIDU1LCAyMDQsIDU4LCAyNDgsIDE1NCwgCisgICAgMjM3LCA1NSwgMjQ3LCAyMDMsIDIzNywgNTUsIDEyMCwgMjM3LCA1MywgMjExLCAyMjAsIDIzNywgNTUsIDIzNywgMjM3LCAKKyAgICAyMzcsIDU1LCAyMzcsIDU2LCAzLCA0NywgMjQ4LCAyNiwgMjM3LCA1NSwgMjM3LCAyNDQsIDIzNywgNTUsIDIwMywgNDUsIAorICAgIDIzNywgNTUsIDIxNywgMTY2LCAyMzcsIDU1LCAyMzcsIDU2LCAzLCAyMTYsIDU0LCAyMTYsIDY3LCAyMzcsIDUzLCAyMzcsIAorICAgIDU2LCAyNDQsIDY2LCAyNDMsIDIyMiwgMjEzLCA2MywgMywgMzQsIDcwLCAyMzEsIDYsIDI0MSwgMTE3LCAxNTcsIDI0NywgCisgICAgMTgwLCAyNTAsIDIyMCwgOTcsIDI0OCwgMTIsIDIxMiwgNTQsIDk3LCAyNDUsIDI0NCwgOTcsIDIxMSwgMTk2LCAyMTAsIAorICAgIDE2NywgOTcsIDI0MiwgNDksIDI0NCwgMTQ1LCA5NywgMjE4LCAxMjUsIDc2LCAyMTgsIDQ1LCAyMzksIDIxMCwgMjQ4LCA4MywgCisgICAgMjQzLCAxMzMsIDk3LCAyMTEsIDIxMiwgMjQ4LCAyNTAsIDIwOSwgMzgsIDI0OCwgMjUwLCA2MSwgMjM5LCAxOTcsIDIzNiwgCisgICAgMTIsIDIxOCwgNTcsIDk3LCAyMjQsIDUzLCAyNDksIDEwLCAyNDUsIDkyLCAyNDAsIDIxNCwgNzksIDI0MywgOTcsIDU0LCAKKyAgICAyNDUsIDE0MSwgMjQ3LCAzNywgMjQ4LCAyMzQsIDMsIDIwMywgNDMsIDU0LCAyNDgsIDIzNCwgMywgMjQzLCA5NywgNTQsIAorICAgIDI0OCwgMjM0LCAzLCAyNDAsIDIzMCwgNTQsIDI0OCwgMjM0LCAzLCAyMTgsIDIwLCA1NCwgMjI0LCA1MywgMywgMjA0LCAxMSwgCisgICAgMjQ2LCAxNzgsIDMsIDE3NywgMjA4LCA5MSwgMjUsIDIwMywgNDMsIDU0LCAyMTQsIDE3NCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAKKyAgICAyNDcsIDIwNywgMjI0LCAxMDgsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjE5LCAyNDgsIDI0MywgMTU5LCAyNDIsIDEyLCAyNDAsIAorICAgIDExLCAyMzksIDE4MiwgMTcxLCAyNDAsIDExLCAyMzksIDE4MiwgMjE5LCAxNTQsIDMsIDI0NSwgOTUsIDIxOSwgMTU0LCAKKyAgICAyNDAsIDk1LCAyMDYsIDIyNCwgMjQ3LCA3MiwgMjA5LCAxODMsIDI0NywgNzIsIDI0NywgMzgsIDIzMSwgMzUsIDI0NiwgCisgICAgMTc4LCAzLCAxNzcsIDIwOCwgOTAsIDI0NiwgMTc4LCAzLCAxODMsIDIwOCwgOTAsIDI0OCwgMjMxLCAyNDYsIDE3NywgMjQ2LCAKKyAgICAyMiwgMjE3LCAxNjEsIDIxNSwgMTkxLCAyMTcsIDE2MSwgMjE5LCA5NCwgMjExLCA1MywgMjE1LCAxMzMsIDIwOCwgODIsIAorICAgIDIxNSwgMTMzLCAyNDgsIDgsIDIxMCwgNywgMjI3LCAyMjcsIDIyMSwgMTU4LCAyMjEsIDE1OSwgMywgMjQ0LCA2NSwgMjQ1LCAKKyAgICAxNTEsIDI0NiwgMTYsIDI0OCwgOSwgMTcxLCAyNDgsIDksIDIzNywgMjQ0LCAyNDgsIDksIDI0OCwgMjYsIDI0OCwgOSwgCisgICAgMjE5LCAyNDMsIDI0OCwgOSwgMjQ4LCA2LCAyMjMsIDg1LCAyNDksIDE0LCAyMTQsIDE4MiwgMjI0LCAyNDIsIDIwOSwgMTYyLCAKKyAgICAyMTYsIDE1MiwgMjE5LCAxNTIsIDI0MCwgNjUsIDIyNSwgMTcyLCAyMTQsIDIyMiwgMjUwLCAxOTUsIDIxNywgMTg1LCAyNTEsIAorICAgIDExOSwgMjI3LCAzLCAyNDYsIDE2MiwgMjI0LCAyNTQsIDIxOSwgMjEwLCAyMDgsIDk4LCAyMzEsIDQ2LCAyMDgsIDk4LCAKKyAgICAyMTksIDE2MSwgMjQxLCAyMzYsIDk3LCAyMzEsIDQzLCAyNDEsIDU3LCAyNDEsIDU4LCAzLCAxODMsIDUzLCA1NSwgMjQ2LCAKKyAgICAxNiwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAyMzksIDIyNSwgMjQ2LCAxNiwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIAorICAgIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgCisgICAgMjM5LCAyMjUsIDIxOCwgMjgsIDIxOCwgMjksIDIzNiwgNTMsIDIyMiwgMjEwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjI0LCAKKyAgICA4MCwgMjE4LCAxNzcsIDMsIDg2LCA1MywgMjUwLCA1MCwgMjI3LCAyMjIsIDIwNSwgMjI5LCAyMjQsIDc5LCAyMjQsIDgwLCAKKyAgICAyMTgsIDE3NywgMjIwLCA2OCwgMjIxLCAxOTIsIDIyNCwgODAsIDIxOCwgMTc1LCAyNTAsIDE5NiwgMywgMjQ4LCAyMjAsIAorICAgIDI0NywgNjUsIDI0NywgNjYsIDMsIDIzOSwgMjE4LCAyMDUsIDIyNiwgMjQ3LCA2NSwgMjA5LCAxNTksIDIxNiwgMjA0LCAKKyAgICAyMDUsIDIyNSwgMjQwLCA2LCAyMTcsIDIxNywgMjE4LCAzNSwgMjExLCA3NCwgMjE3LCAyNTQsIDI0OCwgMTYwLCAyMDcsIAorICAgIDEzOCwgODYsIDI1MCwgOTEsIDI0NiwgMTgsIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjQ2LCAxOCwgCisgICAgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkyLCAzLCA0MywgMTE4LCAyMTksIDE5OSwgMjQ2LCAxOCwgMTgzLCAKKyAgICAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI1MCwgMTk0LCAxODMsIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgCisgICAgMjUwLCA5MSwgMTI0LCAyNDcsIDIwNiwgOTcsIDEzOCwgMjQ3LCAyMDYsIDk3LCAyMTEsIDIxNywgMywgMjQ3LCA1OCwgOTUsIAorICAgIDIxMSwgMjE2LCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgMjExLCAyMTcsIDMsIDEyNiwgMjExLCAKKyAgICAyNDEsIDIwNCwgNzQsIDI0OCwgMjAzLCAyNDEsIDExNywgMjE4LCA4MSwgMjI3LCAyMTcsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAKKyAgICAyMTYsIDExLCAyMjUsIDE0OSwgMjM4LCA0OSwgMjI3LCA0MywgMywgMjMxLCAxNywgMjE5LCA5LCAyNDYsIDE2LCAyMjcsIAorICAgIDQzLCAzLCAyMjksIDE1MSwgMjI5LCAxNTEsIDIyNywgNDIsIDE3MSwgMjI3LCA0MiwgMjQ4LCAxMjgsIDI0OCwgMTI5LCAzLCAKKyAgICAyNDcsIDU4LCA5NSwgMjQ4LCA3LCAyMjcsIDEwNSwgOTcsIDIxNiwgMjA1LCAyNDcsIDE0NSwgMjQ5LCAyNiwgMywgOTYsIAorICAgIDUzLCA1NSwgMjQxLCA4NCwgMywgOTYsIDUzLCA1NSwgMjIwLCAzMiwgMywgMjQwLCAyMTIsIDEzMSwgMywgNDksIDUwLCA1MywgCisgICAgNTUsIDIxMSwgMjQ5LCAzLCA4NiwgNTMsIDU1LCAyMDgsIDE0NSwgMywgMTc3LCA1MywgNTUsIDIyMSwgMTkyLCAxMTgsIAorICAgIDIwNiwgMjQ4LCAyNDEsIDE0MSwgOTcsIDIyOSwgMTQ4LCAyMDksIDE1MiwgMjMxLCAxMSwgMTYsIDM1LCA4LCA2LCAyMjcsIAorICAgIDE3MywgMjMxLCAxMSwgMTYsIDM1LCA4LCA1LCAyMjcsIDE3MywgMjMxLCAxMSwgMTYsIDM1LCAyMjEsIDQ1LCAyMzEsIDExLCAKKyAgICAxNiwgMzUsIDIxMCwgMTAyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDIyNywgMTczLCAyMzksIDI0OSwgMjQxLCAxMTcsIDIwOCwgCisgICAgMTQwLCAyMDMsIDIyNSwgMjM3LCAxMzAsIDIyMSwgMjgsIDI1LCAyNDgsIDE0LCAyMzYsIDEzNCwgMjE4LCAxMDYsIDIyNCwgCisgICAgMTUxLCAyMDksIDE2MCwgMjQ1LCAxMTIsIDI0OCwgMjUxLCAyMTIsIDg4LCAyMTgsIDYxLCAyMTEsIDk1LCAzLCAxMDEsIAorICAgIDI0MywgODUsIDIzMCwgMTY5LCAxNiwgMzUsIDI0OCwgMTQxLCAyMDgsIDgwLCAyNDEsIDEwMCwgNjIsIDUxLCAyNDcsIDE0NSwgCisgICAgNjEsIDUxLCAyNDcsIDE0NSwgMjI4LCA4LCAyMTYsIDEzOCwgMjQ2LCA2MSwgMjI4LCA4LCAyNDgsIDI2LCAyNDYsIDYxLCAKKyAgICAyMjgsIDgsIDIxOSwgMjQzLCAyNDMsIDIyMSwgMjI4LCA4LCAyNDgsIDI2LCAyNDMsIDIyMSwgNSwgMjE5LCAyNDMsIDI0MywgCisgICAgMjIxLCA1LCAyNDgsIDI2LCAyNDMsIDIyMSwgMjA2LCAyMjMsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCAyMTYsIAorICAgIDEzOCwgMjA4LCA4NSwgMjA2LCAyMjMsIDUsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCA1LCAyMTYsIDEzOCwgMjA4LCAKKyAgICA4NSwgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCAKKyAgICA2MSwgNDMsIDI0NSwgMTMxLCAyMTgsIDQ4LCAyNDUsIDEzMSwgMjE4LCA0OSwgMywgMjM3LCAxMzYsIDU2LCAyNDUsIDEzMSwgCisgICAgMjE4LCA0OCwgMjIxLCAxNjIsIDQ5LCAyMTMsIDE0NiwgMywgMTI2LCAyNDMsIDgzLCAyMjEsIDE2MiwgNTAsIDIxMywgMTQ2LCAKKyAgICAzLCAxMjYsIDI0MywgODMsIDE2LCAzNSwgMjI1LCA4NywgMjQ2LCAxODQsIDYxLCA4LCAyNDUsIDEzMCwgNzksIDgsIDI0NSwgCisgICAgMTMwLCAyNDYsIDIyMiwgMjQ1LCAxMzAsIDIyMCwgNDAsIDk3LCAyNDIsIDcyLCA3NiwgMjE5LCAzMiwgMjMwLCAzOSwgMjI0LCAKKyAgICAyMiwgMjEwLCA5NiwgMjI0LCAyMzcsIDMsIDIyMiwgNjQsIDI0NywgMjIyLCAyNDcsIDIzOCwgNzYsIDIzNSwgMjIyLCAyNDYsIAorICAgIDIwLCAyNDAsIDEwMywgMTE4LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMTIwLCAyMjAsIDgzLCAyNDYsIDIwLCAKKyAgICAyNDAsIDEwMywgMTI2LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDcsIDIyMCwgODMsIDI0NiwgMjAsIAorICAgIDI0MCwgMTAzLCAyMzksIDIzMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODgsIDIyMCwgODMsIDI0NiwgCisgICAgMjAsIDI0MCwgMTAzLCAyMTMsIDExMiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTQzLCAyMjAsIDgzLCAKKyAgICAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2NCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwOSwgMTUzLCAyMjAsIAorICAgIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1NSwgCisgICAgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMCwgMjcsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDEzMiwgMjQ2LCAKKyAgICAyMCwgMjQwLCAxMDMsIDIwOSwgMjYsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0MywgMjQ2LCAyMCwgMjQwLCAxMDMsIAorICAgIDIzOSwgMjMxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4NCwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMywgMTEwLCAyNDYsIAorICAgIDIwLCAyNDAsIDEwMywgMjQxLCAxNDIsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDYyLCAyNDYsIDIwLCAyNDAsIDEwMywgCisgICAgMjA5LCAxNTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTUzLCA1MCwgCisgICAgMjExLCAyMTYsIDUwLCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgNTAsIDIxMSwgMjE3LCAzLCAxMjYsIAorICAgIDIxMSwgMjQxLCAyMDQsIDc0LCAyNDcsIDE3NSwgMjQ3LCAxNzYsIDMsIDIxMSwgMjQxLCAyMDQsIDc0LCAyMTUsIDI1MSwgCisgICAgMjQ4LCAxMjgsIDI0OCwgOSwgMjQ3LCA1NiwgMjI1LCAxMDksIDI0NiwgMTksIDYyLCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIAorICAgIDIyMSwgMTkyLCAyMTgsIDExMiwgMjM2LCAxMjYsIDIyNSwgMTIzLCAyMzEsIDUwLCAyNDcsIDE1MiwgMjEwLCAyMjgsIDIyNywgCisgICAgMTY2LCAyMTIsIDUyLCAyMTksIDI0NSwgMjExLCAxNzgsIDI0NCwgMTUwLCAyMTAsIDIxMCwgMjExLCAyMDUsIDIxMSwgMjA2LCAKKyAgICAyMDQsIDU5LCAyMzAsIDgzLCA0OSwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgMjA5LCAxNjIsIDIxNiwgMTUzLCAKKyAgICAzLCAyMTksIDE1MywgNTAsIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDYxLCAyMDgsIDEyNiwgMjA5LCAxNjEsIAorICAgIDYyLCAyMDgsIDEyNiwgMjA5LCAxNjEsIDIwOSwgMTYyLCAyMjAsIDMyLCAyMDgsIDE0NSwgNzYsIDIyNCwgNzYsIDI0NiwgCisgICAgNDAsIDIyNCwgODAsIDIxOCwgMTc2LCAyNDksIDI2LCA3NiwgMjQxLCA1NywgMjExLCAxMDAsIDI0MSwgNTcsIDI0MSwgNTgsIAorICAgIDMsIDIyNywgMTMxLCAyMzksIDE4OSwgMjQxLCA1NywgMjE5LCAxMCwgMTE1LCAyMTEsIDEwMCwgMjQxLCA1NywgMjI3LCAKKyAgICAxMDQsIDIxOSwgOTMsIDYyLCAyMTcsIDE2MSwgMjI2LCAyNTEsIDQ5LCAyMTksIDgsIDIyNiwgMjUxLCA0OSwgMjQ4LCAyNDYsIAorICAgIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMzksIDE0OSwgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIxOSwgMTQ3LCAyMjYsIDI1MSwgCisgICAgNDksIDI0NSwgMTQ0LCA0OSwgMjAzLCAyMjAsIDIzNywgMTIzLCAyMDcsIDE3NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAKKyAgICAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjE2LCAxODgsIDIzNywgMTI0LCAKKyAgICAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIwOSwgMjAsIDExMiwgNTQsIDIxNiwgNzMsIDIwOSwgMjAsIDEyMSwgCisgICAgNTQsIDIxNiwgNzMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjE2LCA3MywgMjM3LCAxMjQsIDMsIDEwMSwgMjQwLCAzLCAyNDAsIAorICAgIDIwMSwgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMTksIDcxLCAyNDgsIDEwNCwgMTAxLCAyNSwgMjE1LCAyNTMsIDIzOSwgCisgICAgMjUzLCA2MSwgMTIxLCAyMTgsIDU5LCA0OSwgMjM3LCAxMjQsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNDksIDIxOCwgNTksIAorICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNDksIDIxOCwgNTksIAorICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA0OSwgMjE4LCA1OSwgMjQ5LCAyMywgCisgICAgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDExMiwgMjE4LCA1OSwgCisgICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTEyLCAyMTgsIDU5LCAKKyAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDExMiwgMjE4LCA1OSwgMjQ5LCAyMywgCisgICAgMjMxLCAzNSwgNjIsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjQ0LCAxMSwgMjQ1LCAyMjAsIDIyOSwgMTUwLCAKKyAgICAyNSwgMjI0LCA5LCAxMjYsIDIyMiwgMjE4LCAyNDUsIDIxOSwgMjE3LCAyMzEsIDIxOCwgNjcsIDI0NywgNzQsIDYyLCAyMzcsIAorICAgIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDYxLCAyMzcsIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAKKyAgICAxNTQsIDIxMiwgNywgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCAyMDksIDIyMSwgMjQ3LCAyMiwgMjA0LCA2LCAyMjksIAorICAgIDE0OSwgMTE4LCAyNDcsIDE0NiwgMjI0LCA5LCAxMjAsIDI0NywgMTQ2LCAyMjQsIDksIDEyNiwgMjQ3LCAxNDYsIDIyNCwgOSwgCisgICAgMjA4LCAxMTcsIDM4LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIDIzNywgOTEsIDI0MywgMTU0LCAyMTQsIDE4NCwgMjE3LCAyMzIsIAorICAgIDIzNSwgMTU2LCAyNDAsIDY1LCAyMzUsIDE1NiwgMjE5LCAyNDgsIDI0MywgMTYwLCAyMzUsIDE1NiwgMjQzLCAxMDcsIDMsIAorICAgIDIwOSwgMTEyLCAyNDMsIDEwNywgMywgMjA5LCAxMTMsIDI1LCAyMTgsIDE2MSwgMjQzLCAxMDcsIDMsIDIxOCwgMTYxLCAKKyAgICAyMzksIDEzNSwgMywgMjE4LCAxNjEsIDIzOSwgMTM1LCAzLCAyMDgsIDIyNSwgMjM5LCAxMzUsIDMsIDI1MCwgMjMyLCAyMDMsIAorICAgIDE5NiwgNjIsIDIzOSwgMTgyLCAyMzksIDE4MiwgMTcxLCAyMzksIDE4MiwgMjQ3LCAzOCwgMTIyLCAyNDMsIDE0MCwgMjQ3LCAKKyAgICAzOCwgMjQwLCAxMSwgMjQ3LCAyMzMsIDI0MCwgMTEsIDI0NywgODcsIDI0MSwgOTQsIDIyMSwgMTYwLCAyNDEsIDk0LCAyMjEsIAorICAgIDE2MSwgMjE5LCAxNTMsIDI0MSwgOTQsIDIyMSwgMTYxLCAyMTksIDE1OSwgMjIxLCAxNjAsIDIyMSwgMTYxLCAyMTksIDE1MywgCisgICAgMjIxLCAxNjEsIDIxOSwgMTU5LCAyNDEsIDk0LCAyNDMsIDEwNiwgMjQxLCA5NCwgMjE5LCAxNTMsIDI0MSwgOTQsIDIxOSwgCisgICAgMTUxLCAyNDMsIDEwNiwgMjE5LCAxNTMsIDIxOSwgMTUxLCAyMDQsIDg1LCAyMTEsIDIwMiwgMjIxLCAxNjEsIDIxOSwgMTU5LCAKKyAgICAyMTEsIDIwMiwgMjQ3LCA3MywgMjE5LCAxNTksIDI0NCwgMTEsIDIwNCwgMTUsIDIyNCwgMTA1LCAyMjUsIDY0LCAyMTksIAorICAgIDIwMSwgMjQ2LCAxOCwgNTAsIDI1LCA0OSwgMjEzLCAxNDYsIDI1MCwgOTEsIDI0NywgNTgsIDIwMywgMTk2LCAyMzEsIDQxLCAKKyAgICAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NCwgNjQsIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ1LCAyMjEsIDM4LCAyMjksIAorICAgIDE1MSwgMjE1LCAyMTQsIDIyMiwgMjEwLCAyMTksIDE1NCwgMywgNDMsIDIwOSwgMTEyLCAyMTEsIDY1LCAyNDYsIDE3NywgCisgICAgMjQ0LCAxOTYsIDIyOSwgMzMsIDIyNywgOTgsIDIxMSwgMjE1LCAyMzcsIDY1LCAyMzEsIDUwLCAyMTIsIDEzNiwgMTI2LCAKKyAgICAyMTYsIDE2MywgNTUsIDEyNiwgMjE2LCAxNjMsIDU2LCAxMjYsIDIxNiwgMTYzLCAyMjcsIDIyMiwgMTI2LCAyMTYsIDE2MywgCisgICAgMjE2LCAxNiwgNDksIDIxMSwgMjEyLCAyNDcsIDE5MiwgNTAsIDIxMSwgMjEyLCAyNDcsIDE5MiwgMTIwLCAyMTEsIDIxMiwgCisgICAgMjQ3LCAxOTEsIDEyNiwgMjExLCAyMTIsIDI0NywgMTkxLCA0OSwgMjA5LCAzOCwgMjQ3LCAxOTIsIDUwLCAyMDksIDM4LCAKKyAgICAyNDcsIDE5MiwgNDksIDI1MCwgMjIwLCAyNDcsIDE5MiwgNTAsIDI1MCwgMjIwLCAyNDcsIDE5MiwgMjI0LCAzNCwgMjQ3LCAKKyAgICAxOTIsIDIyNywgMTMyLCAyMjQsIDM0LCAyNDcsIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzMsIDI0OCwgMjQ4LCA5OCwgMywgCisgICAgMjQ4LCAyNDcsIDI0OCwgMjQ4LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDEzMiwgMjAzLCAxOTYsIDI0OCwgCisgICAgMjQ4LCAyNiwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMTMyLCAyMDMsIDE5NiwgMTU3LCAyNDYsIAorICAgIDE2OSwgODIsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDI0NiwgMTY4LCAyMDMsIDIzMywgMjI1LCAxMDYsIDIyNCwgMTQsIDIzOSwgCisgICAgMTAzLCAyMDgsIDE2NywgMjA4LCAxMjIsIDIxMSwgODYsIDc2LCAyMjcsIDE0NiwgMjEyLCAxMzcsIDc2LCAyMzAsIDE3MCwgCisgICAgMjIzLCAyNTEsIDIzNywgMjQxLCAyNDAsIDEwMiwgMjM3LCAyNDEsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgCisgICAgMjQwLCAxMDMsIDMsIDIwOSwgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAKKyAgICAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyMTIsIDMwLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAKKyAgICAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAKKyAgICAyMjQsIDgsIDI1LCAyMDgsIDI0MywgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDEzNSwgMjEyLCAzMCwgCisgICAgMjQwLCAxMDMsIDMsIDIzNiwgNTIsIDIwNCwgOCwgMjQwLCAxMDIsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAKKyAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDIxNCwgMjE0LCAyNDQsIDQ1LCAyMzksIDE3NCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMTIsIAorICAgIDMwLCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTAsIDIxMCwgMjEyLCAKKyAgICAyOSwgMjQwLCAxMDIsIDIyMiwgMjE2LCAyNDAsIDEwMiwgMjQwLCAyMDMsIDI0MCwgMTAyLCAyMDYsIDI1MywgMjQwLCAxMDIsIAorICAgIDI0MCwgMTAzLCAzLCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxOSwgMSwgMjQwLCAxMDIsIDI0NSwgMjEyLCAyNDAsIDEwMiwgCisgICAgMjQ1LCAyMTMsIDI0MCwgMTAyLCAyMjksIDY1LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwOSwgMjMsIDM0LCAyMjksIDY2LCAKKyAgICAyMjksIDY1LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAKKyAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUwLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIAorICAgIDI1LCAyMDQsIDgsIDI0MCwgMTkxLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIDI1LCAyMDgsIDI0MywgMjQwLCAKKyAgICAxODQsIDI0MywgMTYxLCAyNDAsIDEwMiwgMjAzLCAyMzIsIDI0MCwgMTAyLCAyNTAsIDIxNCwgMjQwLCAxMDIsIDIxOCwgMTksIAorICAgIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQwLCAxMDIsIDIxOCwgMjMyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDIyNywgMTcsIAorICAgIDc2LCAyMDgsIDYyLCAyNDMsIDE2MSwgMjQ3LCAxNDgsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjM5LCAxMTQsIDI0MCwgMTAzLCAKKyAgICAzLCAxNzEsIDIyNCwgNywgMjUwLCAyMTIsIDI0MCwgMTAyLCAyNDAsIDU4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQwLCAxMDIsIAorICAgIDIxMiwgNTMsIDI0MCwgMTAyLCAyMDgsIDIwNSwgMjQwLCAxMDIsIDIzNywgMjQyLCAyNDAsIDEwMiwgMjI3LCA0LCAyNDUsIAorICAgIDExNCwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjM2LCAyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAorICAgIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyNDAsIDEwMywgMjE0LCAxODYsIDIzMSwgNTAsIDI0MCwgCisgICAgNTksIDI1MCwgNTYsIDI0MCwgMTAyLCAyMzksIDE5NCwgMjQwLCAxMDIsIDIxMiwgNTQsIDI0MCwgMTAyLCAyNDMsIDEzMywgCisgICAgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDQsIDMsIDIyNCwgNywgMjQwLCAxMDMsIDMsIDIyNSwgMTIsIDIyNSwgNzYsIDIzNywgCisgICAgMjQxLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDksIAorICAgIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjEyLCAzMCwgCisgICAgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjAzLCAyMTgsIAorICAgIDIxMiwgMzEsIDIyOSwgNjUsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAyNDAsIDE4NCwgMjE4LCAxOSwgMjQ3LCAKKyAgICAxOCwgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDcsIDE4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQ3LCAxOCwgMjQwLCAxMDIsIAorICAgIDIxMiwgNDcsIDIzOSwgMTE0LCAyNDAsIDEwMiwgMjEyLCA0NywgMjEyLCAzMCwgMjQwLCAxMDIsIDIwNiwgMjE4LCAyNDAsIAorICAgIDEwMiwgMjQwLCAxMDMsIDMsIDIxNSwgMjEyLCAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIyMSwgMTkyLCAyMzgsIDI3LCAKKyAgICAyMzgsIDE2MCwgMjQwLCAxMDMsIDMsIDIyMCwgNTIsIDIzOCwgMTYwLCAyMTgsIDIzMCwgMjQ3LCAyMzksIDI0NCwgNTksIAorICAgIDIxNCwgMTY0LCAyMjQsIDQ4LCAyMzcsIDU3LCAyMjQsIDQ4LCAyMTEsIDIxOCwgMjI0LCA0OCwgMjM3LCA5MywgMjE4LCAKKyAgICAyMzAsIDIxNiwgMTg3LCAxMTgsIDIzNywgMTIzLCAyMTgsIDIzMCwgMjE2LCAxODcsIDI0NywgMjUxLCAyMzcsIDEwMCwgCisgICAgMjMxLCA1MCwgMjQ2LCAyMjQsIDIxOCwgMjMwLCAyMzksIDExMywgMjE4LCAyMzAsIDMsIDIxOCwgMTksIDI0MCwgMTAyLCAKKyAgICAyMTgsIDIzMCwgMywgMjM5LCAxODMsIDIzNywgOTksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCisgICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCisgICAgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgCisgICAgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyNDEsIAorICAgIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAKKyAgICAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIAorICAgIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgCisgICAgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAKKyAgICAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIAorICAgIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCAKKyAgICA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjA0LCAKKyAgICA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjQxLCAKKyAgICAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDIxMSwgCisgICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAKKyAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIAorICAgIDIzMywgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAyMTIsIDIsIDIxNywgCisgICAgNDAsIDUxLCAyMTksIDIzMywgMjEyLCAyLCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgCisgICAgOTYsIDIxNSwgMjE4LCAxNzcsIDIxNSwgMjE4LCA4NiwgMjE1LCAyMTgsIDE4MywgMjE1LCAyMTgsIDEzMiwgMzIsIDI0MCwgCisgICAgMjUxLCAyMTksIDIzMywgNzksIDEzMiwgMzIsIDI0MCwgMjUxLCAyMTksIDIzMywgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgCisgICAgMjMzLCA3OSwgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgMjMzLCA3OSwgMjUwLCAyMzYsIDIxOSwgMjMzLCAyMTAsIDE2OSwgCisgICAgMjUwLCAyMzYsIDIxOSwgMjMzLCA0MSwgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAKKyAgICAyMzMsIDQxLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA0MSwgNzksIDEyNCwgNTIsIDI0NSwgCisgICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjMwLCAyNDgsIDIxOSwgMjMzLCA0MSwgMjMwLCAyNDgsIDIxOSwgCisgICAgMjMzLCA3OSwgNDEsIDIzMCwgMjQ4LCAyMTksIDIzMywgMjA1LCAyNDIsIDc5LCAyMTIsIDAsIDIwNSwgMjQyLCA3OSwgMjE2LCAKKyAgICA3NCwgMjEyLCAwLCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE2LCA3NCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNSwgMjE4LCAyMzcsIAorICAgIDM4LCAyMTEsIDgxLCAyMjcsIDQwLCAyMTYsIDE5MywgMjQ3LCAzOSwgMjM2LCAyNDAsIDIwOCwgMTEwLCAyMzYsIDI0MCwgCisgICAgMjA4LCAxMTEsIDMsIDI0NywgMTc4LCAyMjEsIDE2NywgMjA4LCAxMTAsIDIyNCwgMjEzLCAxNTcsIDIxNiwgMTk0LCAyMTEsIAorICAgIDg3LCAyMDgsIDEwOCwgMjA4LCAxMDksIDI0NywgMzksIDI0NywgMTUzLCAyMjAsIDI5LCAyNDcsIDE1MywgMjA4LCA1OSwgCisgICAgMjQ3LCAxNTQsIDIxMSwgNjEsIDIyNCwgMTA5LCAyNTAsIDI0MCwgMjM5LCAyNTAsIDI0MSwgNzcsIDIxOCwgNTEsIDI0NywgCisgICAgMzksIDIyMCwgMjksIDIxOCwgNTEsIDI0NywgMzksIDIwOSwgMTk3LCAyMjAsIDI5LCAyMDksIDE5NywgMjUwLCAyMiwgMjIwLCAKKyAgICAyOSwgMjUwLCAyMiwgMjE2LCAxNDUsIDIwNiwgNDcsIDI0NCwgNDEsIDIwOCwgNTAsIDI1MCwgODYsIDIyNywgOCwgMjA4LCAKKyAgICAxMTYsIDIyNCwgNDIsIDIyNCwgMTMsIDIxNiwgMTkyLCAyMTAsIDE4MiwgMjE2LCAxOTIsIDIyNCwgMTMsIDI0NywgODYsIAorICAgIDI1MSwgOTUsIDIwOCwgMTA3LCAyMTIsIDI1MSwgMjE1LCAxODgsIDIxMSwgMjEwLCAyMzYsIDEwNiwgMjA4LCAxMTQsIDIyNywgCisgICAgMTM0LCA4MCwgMjA4LCAxMTQsIDIyNywgMTM0LCAyNDUsIDE5OSwgNTQsIDIxOCwgNTEsIDI0NywgMjQsIDIxNiwgNjcsIAorICAgIDIyNywgMTM0LCAyMDgsIDgyLCAyMzksIDIyNiwgMjIwLCAzMiwgMjE4LCAzMCwgMjQzLCA4OCwgMjIxLCAxOTIsIDI0MSwgCisgICAgNjMsIDU0LCAyMTIsIDI4LCA5NywgMjIxLCAxOTIsIDIxMiwgMjgsIDk3LCAyMTcsIDE2MCwgMjI3LCA4NywgMjMxLCA1MCwgCisgICAgMjMwLCAxOTgsIDIxOCwgOTcsIDk3LCAyNDMsIDExNCwgMjIxLCAxNjYsIDIyNywgODcsIDk3LCAyMTgsIDI0LCAyMDQsIDgxLCAKKyAgICA5NywgMjIxLCAxODIsIDIwNCwgODEsIDk3LCAyNDgsIDgyLCAyMjEsIDE5MiwgMjQ4LCA4MSwgMjQ4LCA4MCwgMjI0LCAxMywgCisgICAgMjQ4LCA4MCwgMjE5LCAyNSwgMjIxLCAxOTIsIDIxOSwgMjQsIDI0NiwgMTMyLCAyNDUsIDEyMywgMjI0LCAyMzYsIDk3LCAKKyAgICAyMDMsIDI0NywgOTcsIDIxNiwgODMsIDI0OSwgMjgsIDk3LCAyMDgsIDE2OCwgMjA0LCA4MSwgMjQ2LCAxMywgMjEyLCAyMDksIAorICAgIDI0OCwgMjA2LCAyNDgsIDIwNCwgMjE5LCA1NywgMjQ1LCAxODMsIDI0NSwgNzksIDI0OSwgNywgMjQ2LCA0MSwgNDksIDIyNiwgCisgICAgMjI5LCAyMDgsIDg2LCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDIxNywgMjIwLCA1NCwgNDMsIDIzMSwgMjUsIDIxMSwgMjM5LCAKKyAgICAyNDcsIDIzMSwgOTcsIDIzOCwgNTksIDk3LCAyNDUsIDE1NywgMjUsIDIyOCwgMTgsIDIxMiwgNTQsIDI1MSwgMTM1LCAyMTIsIAorICAgIDIzMSwgMjQ5LCA2LCAyNDgsIDEyNywgMjQ4LCAxMjgsIDI0OCwgMTUxLCAyMTgsIDk3LCA3NiwgMjAzLCAyMzEsIDIzNywgCisgICAgMTMxLCAyNSwgMjAzLCAyMjUsIDIxMywgOCwgMjIwLCA1NiwgMjQyLCA0NiwgMjI0LCAxNywgMjE2LCAxOTMsIDIwOCwgMTE4LCAKKyAgICAyMjQsIDE5LCAyNDgsIDE5LCAyMDYsIDIyMywgMjI0LCAxMTksIDI1MSwgNTIsIDIwNiwgMjIzLCAyNTEsIDUyLCAyMDYsIAorICAgIDIyMywgNSwgMjUxLCA1MiwgNSwgMjUxLCA1MiwgMjIxLCAxNzEsIDI1MSwgNTIsIDI1MSwgNTMsIDI0NCwgMjUsIDI1MSwgCisgICAgNTMsIDI1MCwgOTcsIDIxNCwgMjIxLCAyMjAsIDI5LCAyMzksIDI1MCwgMjQxLCA3NywgMjQzLCAyMTEsIDIyNywgNDAsIAorICAgIDIxOSwgNjAsIDIxMiwgMjUxLCAxMzYsIDE2LCAzNSwgMjE3LCAzNiwgMTM2LCAxNiwgMzUsIDI1MSwgNTQsIDEzNiwgMTYsIAorICAgIDM1LCAyMzksIDI0OSwgMTM2LCAxNiwgMzUsIDI0MSwgMTc5LCAxMzYsIDE2LCAzNSwgMjA0LCA4MCwgMTM2LCAxNiwgMzUsIAorICAgIDI1MCwgMTQ2LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgMTMyLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgCisgICAgMTMxLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk1LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk0LCAKKyAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMDksIDEzNiwgMTYsIDM1LCAyMDUsIDIwOCwgMTM2LCAxNiwgMzUsIDIwNSwgMjA3LCAxMzYsIAorICAgIDE2LCAzNSwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCAyMTgsIDE4NCwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCA2MiwgMjEwLCAKKyAgICAyMjEsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTIsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTEsIAorICAgIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTAsIDEzNiwgMTYsIDM1LCAyNDYsIDY0LCAxMzYsIDE2LCAzNSwgMjE1LCAKKyAgICAxLCAxMzYsIDE2LCAzNSwgMjIyLCA1MSwgMTM2LCAxNiwgMzUsIDIwNSwgMTkzLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTIsIAorICAgIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAxLCAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMCwgMTM2LCAxNiwgCisgICAgMzUsIDIzOCwgMzEsIDEzNiwgMTYsIDM1LCAyMTIsIDEzMywgMTM2LCAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOSwgMTM2LCAKKyAgICAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIAorICAgIDM1LCAyMTYsIDEyOCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxNzQsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCisgICAgMjMwLCAyMTksIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIAorICAgIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDI0NSwgMTcyLCAxMzYsIDE2LCAzNSwgCisgICAgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAzNSwgMjE1LCAyLCA3NiwgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAKKyAgICAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDIwNiwgNDIsIDEzNiwgMTYsIAorICAgIDM1LCAyMDgsIDIxOCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMjcsIDIzMywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKKyAgICAyNTAsIDE4NywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgCisgICAgMjE1LCAyLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAKKyAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMTAsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODYsIAorICAgIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjcsIDEzNiwgMTYsIDM1LCAKKyAgICAyMTYsIDEyNiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjQsIDEzNiwgMTYsIDM1LCAyNTEsIAorICAgIDE3LCAxMzYsIDE2LCAzNSwgMjUxLCAxNiwgMTM2LCAxNiwgMzUsIDIyNSwgOTcsIDEzNiwgMTYsIDM1LCAyMTUsIDcsIDEzNiwgCisgICAgMTYsIDM1LCAyNTAsIDkwLCAxMzYsIDE2LCAzNSwgMjE2LCAxNTUsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NCwgMTM2LCAxNiwgCisgICAgMzUsIDI1MCwgMjUsIDEzNiwgMTYsIDM1LCAyNDgsIDUyLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIwOSwgMjE2LCAxMzYsIAorICAgIDE2LCAzNSwgMjA5LCAyMTUsIDEzNiwgMTYsIDM1LCAyMTcsIDQyLCAyMjcsIDEyMywgMTM2LCAxNiwgMzUsIDI0OCwgMCwgCisgICAgMTM2LCAxNiwgMzUsIDI0NywgMjU1LCAxMzYsIDE2LCAzNSwgMjQ3LCAyNTQsIDEzNiwgMTYsIDM1LCAyNTAsIDI0OSwgMTM2LCAKKyAgICAxNiwgMzUsIDIyMCwgNTUsIDEzNiwgMTYsIDM1LCAyMTEsIDE5OCwgMTM2LCAxNiwgMzUsIDIwOCwgMjE2LCAxMzYsIDE2LCAKKyAgICAzNSwgMjM3LCAyMTAsIDEzNiwgMTYsIDM1LCAyMDQsIDY4LCAxMzYsIDE2LCAzNSwgMjE4LCAxOCwgMTM2LCAxNiwgMzUsIAorICAgIDI0NywgNzAsIDEzNiwgMTYsIDM1LCAyMDcsIDE2NiwgMTM2LCAxNiwgMzUsIDI0NywgNDEsIDIyNCwgMjMsIDEzNiwgMTYsIAorICAgIDM1LCAyMTQsIDE5OSwgNzYsIDIzMCwgODcsIDEzNiwgMTYsIDM1LCAyNDcsIDgzLCAxMzYsIDE2LCAzNSwgMjA4LCA3OSwgCisgICAgMTM2LCAxNiwgMzUsIDIxMSwgOTIsIDIwOCwgNzksIDEzNiwgMTYsIDM1LCAyMjcsIDM5LCAxMzYsIDE2LCAzNSwgMjEyLCAKKyAgICAxMSwgMTM2LCAxNiwgMzUsIDIwNiwgMjAyLCAxMzYsIDE2LCAzNSwgMjM2LCA1MCwgMjQyLCAyNywgMTM2LCAxNiwgMzUsIAorICAgIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyMTgsIDI2LCAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjQ3LCAyMTAsIDEzNiwgMTYsIAorICAgIDM1LCAyMTgsIDE3LCAyNDcsIDIxMCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ2LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAKKyAgICAyMDIsIDIxMSwgNDcsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIDIwMiwgMjExLCA0NiwgMTM2LCAxNiwgMzUsIDIxMCwgCisgICAgMjQ5LCAxMzYsIDE2LCAzNSwgMjE3LCAyNDcsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MCwgMTM2LCAxNiwgMzUsIDI0MywgMTUyLCAKKyAgICAxMzYsIDE2LCAzNSwgMjQzLCAxNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDE2OSwgMTM2LCAxNiwgMzUsIDIxNywgMTU4LCAxMzYsIAorICAgIDE2LCAzNSwgMjQ1LCAxMjEsIDEzNiwgMTYsIDM1LCAyNDUsIDEyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE5LCAxMzYsIDE2LCAKKyAgICAzNSwgMjQ1LCAxMTgsIDEzNiwgMTYsIDM1LCAyNDUsIDExNywgMTM2LCAxNiwgMzUsIDI1MSwgMjksIDEzNiwgMTYsIDM1LCAKKyAgICAyNDgsIDIwNywgNzYsIDIyNSwgODEsIDEzNiwgMTYsIDM1LCAyNDgsIDIwNywgNzYsIDIwNiwgNzQsIDEzNiwgMTYsIDM1LCAKKyAgICAyMTYsIDgxLCAxMzYsIDE2LCAzNSwgMjM2LCA0MiwgMTM2LCAxNiwgMzUsIDIyMiwgNzksIDEzNiwgMTYsIDM1LCAyNDQsIAorICAgIDEzMiwgMTM2LCAxNiwgMzUsIDIyNCwgMzcsIDEzNiwgMTYsIDM1LCAxNjIsIDI0MiwgNTksIDEzNiwgMTYsIDM1LCAxNjIsIAorICAgIDIxOSwgMjE0LCA2MiwgMjI3LCAyMTcsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCAyMzAsIDIwNCwgCisgICAgNTAsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyNDIsIDY5LCAyMzAsIDIwNCwgCisgICAgNTAsIDIwOCwgODUsIDYyLCAyMTIsIDQ3LCA1LCAyNDYsIDYxLCAyMjUsIDEwLCAyNiwgNjEsIDI0NiwgNjEsIDI2LCA2MSwgCisgICAgMjQ2LCA2MSwgNzksIDYxLCAyNDYsIDYxLCAyMDUsIDI0MiwgNzksIDYxLCAyNDYsIDYxLCAyNDAsIDE5NSwgNzksIDYxLCAKKyAgICAyNDYsIDYxLCA2MSwgMjQ2LCA2MiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDYsIDYxLCAyMTUsIDE5MSwgMjA5LCAyMTcsIDYyLCAKKyAgICAyMDgsIDIxMywgMjExLCAxNzcsIDYyLCAyMTIsIDQ3LCA1LCAyMTEsIDE3NywgMTU3LCA2MSwgMjExLCAxNzcsIDIyNSwgMTAsIAorICAgIDYxLCAyMTEsIDE3NywgMjYsIDYxLCAyMTEsIDE3NywgNzksIDYxLCAyMTEsIDE3NywgMjA1LCAyNDIsIDc5LCA2MSwgMjExLCAKKyAgICAxNzcsIDI0MCwgMTk1LCA3OSwgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCisgICAgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjI1LCAxMCwgMjExLCAxNzcsIDUxLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAKKyAgICAyNDMsIDIyMSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAKKyAgICAyMjIsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgCisgICAgMjI1LCAxMCwgMjQzLCAyMjEsIDI0MywgMjIyLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAyMjYsIDI0NiwgNjIsIDIwNSwgCisgICAgMjQyLCA1LCAyMjYsIDI0NiwgNjIsIDIyNSwgMTAsIDUsIDIyNiwgMjQ2LCA2MSwgMjI2LCAyNDcsIDI0NSwgMTk1LCA2MiwgCisgICAgNSwgMjI2LCAyNDYsIDIwOSwgNjMsIDMwLCAyNDUsIDEzMCwgMTU3LCAzMCwgMjQ1LCAxMzAsIDIyNSwgMTAsIDMwLCAyNDUsIAorICAgIDEzMCwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCA3OSwgMzAsIDI0NSwgCisgICAgMTMwLCAyNDAsIDE5NSwgNzksIDMwLCAyNDUsIDEzMCwgMjA5LCA2MywgMjE0LCAyNTQsIDE1NywgMjE0LCAyNTQsIDIyNSwgCisgICAgMTAsIDIxNCwgMjU0LCAyNiwgMjE0LCAyNTQsIDc5LCAyMTQsIDI1NCwgMjA1LCAyNDIsIDc5LCAyMTQsIDI1NCwgMjQwLCAKKyAgICAxOTUsIDc5LCAyMTQsIDI1NCwgMTU3LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIDIzOSwgMjMzLCAKKyAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIzOSwgMjMzLCAyMTEsIAorICAgIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCA3OSwgCisgICAgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAKKyAgICAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjEyLCA4OCwgCisgICAgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCAKKyAgICA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIAorICAgIDEwLCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAKKyAgICAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAKKyAgICAxNTcsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDEyNiwgCisgICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAKKyAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIzOSwgCisgICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAKKyAgICAyMTYsIDc0LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIDIzMywgMjE4LCAKKyAgICA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMzksIDIzMywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIxMiwgODgsIAorICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgCisgICAgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMjUsIDEwLCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIAorICAgIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKKyAgICA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgCisgICAgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCAyMTgsIAorICAgIDExOCwgMjExLCA5NCwgOTYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyMDgsIDg2LCAKKyAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIAorICAgIDk2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCAKKyAgICA5NCwgODYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAKKyAgICAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI4LCA4LCAyMDgsIAorICAgIDg2LCAyNTAsIDk0LCA4NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI4LCA4LCAKKyAgICAyMDgsIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDI0MSwgMzEsIAorICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgCisgICAgOTYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA4NiwgNTMsIDMsIAorICAgIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDI0MSwgMzEsIAorICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIAorICAgIDk0LCA3OSwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAKKyAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyMjgsIDgsIAorICAgIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCAxODMsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDk2LCAyMDgsIDg0LCAKKyAgICA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgODYsIDIwOCwgCisgICAgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA5NiwgCisgICAgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIAorICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCAKKyAgICA3NSwgOTYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIAorICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCA5NiwgCisgICAgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgODYsIDIwOCwgCisgICAgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDk2LCAyMDgsIDg0LCAKKyAgICA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIAorICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgCisgICAgNzksIDIxMywgNzUsIDk2LCAyNDAsIDEsIDQ3LCAxNzcsIDI0MCwgMSwgNDcsIDg2LCAyNDAsIDEsIDQ3LCAxODMsIDI0MCwgCisgICAgMSwgNDcsIDk2LCAxMDMsIDQ3LCAxNzcsIDEwMywgNDcsIDg2LCAxMDMsIDQ3LCAxODMsIDEwMywgNDcsIDk2LCAyNDUsIAorICAgIDIyMiwgNDcsIDE3NywgMjQ1LCAyMjIsIDQ3LCA4NiwgMjQ1LCAyMjIsIDQ3LCAxODMsIDI0NSwgMjIyLCA0NywgOTYsIDc5LCAKKyAgICAyNDUsIDIyMiwgNDcsIDE3NywgNzksIDI0NSwgMjIyLCA0NywgODYsIDc5LCAyNDUsIDIyMiwgNDcsIDE4MywgNzksIDI0NSwgCisgICAgMjIyLCA0NywgOTYsIDc5LCA0NywgMTc3LCA3OSwgNDcsIDg2LCA3OSwgNDcsIDE4MywgNzksIDQ3LCA5NiwgNDEsIDQ3LCAKKyAgICAxNzcsIDQxLCA0NywgODYsIDQxLCA0NywgMTgzLCA0MSwgNDcsIDE1MywgMjA0LCA0NiwgNDEsIDQ3LCAxNTMsIDI0MSwgCisgICAgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDEsIDQ3LCA0OSwgCisgICAgNTAsIDQxLCA0NywgMTEyLCAxMjEsIDQxLCA0NywgMjA0LCAyNiwgOTYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKKyAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTU3LCAxNTAsIDQ3LCAyMDQsIAorICAgIDI2LCAxNTMsIDIwNCwgNDYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAKKyAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIAorICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKKyAgICAxNTMsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIAorICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKKyAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMjUsIDEwLCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIAorICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgCisgICAgMjExLCAyMzgsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgCisgICAgMTc3LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDc5LCAxNTAsIDQ3LCAKKyAgICAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgCisgICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDc5LCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDIwNSwgMjQyLCA3OSwgCisgICAgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMDUsIDI0MiwgNzksIAorICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgCisgICAgMTc2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA1LCAyNDIsIDc5LCAKKyAgICAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCA5NiwgMjA4LCA4NiwgCisgICAgMjUwLCA5NCwgMTc3LCAyMDgsIDg2LCAyNTAsIDk0LCA4NiwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCAyMDgsIDg2LCAyNTAsIAorICAgIDk0LCA5NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIAorICAgIDI1MCwgOTQsIDg2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA2MSwgNTMsIDIwNCwgNSwgMjA4LCAKKyAgICA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE3NywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIAorICAgIDI0OCwgODYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE4MywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgNzksIAorICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCA3OSwgCisgICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjM3LCAxMzcsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMDksIAorICAgIDYwLCA5NiwgMjQ3LCAyNDUsIDYxLCA0NywgODYsIDI0NywgMjQ4LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMDgsIDE0NSwgCisgICAgMjEzLCA3OCwgNjEsIDQ3LCA4NiwgMjA4LCAxNDUsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIyNywgMjE2LCA2MSwgNDcsIDg2LCAKKyAgICAyMTYsIDEwLCA2MSwgNDcsIDk2LCAyMTYsIDEwLCA2MSwgNDcsIDg2LCAyMjcsIDIxNiwgNjEsIDQ3LCA5NiwgMjQ5LCAyNCwgCisgICAgMjEzLCA3NywgNjEsIDQ3LCA4NiwgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDQ3LCA5NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCAKKyAgICA0NywgODYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgNDcsIDYxLCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA2MSwgNTMsIAorICAgIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgMjAyLCAyNiwgMjQwLCAxMDIsIDIyNCwgNTIsIDI0MCwgMTAyLCAKKyAgICAyNDAsIDEwMywgMywgMjA5LCA4MCwgMjIyLCAyMjIsIDI0MCwgMTAyLCAyMDksIDYyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAorICAgIDIzNywgNjMsIDIxNSwgMjIxLCAyNDAsIDEwMiwgMjM2LCAyMCwgMjQwLCAxMDIsIDIsIDc2LCAyMDksIDkzLCAyMzYsIDUyLCAKKyAgICAyNDUsIDE0NiwgMjI3LCAxMDIsIDI0MCwgMTAyLCAyMTQsIDE4OCwgMjA3LCAxNzksIDIwNiwgMjQwLCAyNDAsIDEwMiwgCisgICAgMjQ2LCAxNjEsIDIwNCwgNTcsIDEyLCAxNSwgMjM1LCAxNTIsIDEyLCAxNSwgMjM1LCAxNTEsIDEyLCAxNSwgMjM1LCAxNTAsIAorICAgIDEyLCAxNSwgMjM1LCAxNDksIDEyLCAxNSwgMjM1LCAxNDgsIDEyLCAxNSwgMjM1LCAxNDcsIDEyLCAxNSwgMjM1LCAxNDYsIAorICAgIDEyLCAxNSwgMjM1LCAxNDUsIDEyLCAxNSwgMjM1LCAxNDQsIDEyLCAxNSwgMjM1LCAxNDMsIDEyLCAxNSwgMjM1LCAxNDIsIAorICAgIDEyLCAxNSwgMjM1LCAxNDEsIDEyLCAxNSwgMjM1LCAxNDAsIDEyLCAxNSwgMjM1LCAxMzksIDEyLCAxNSwgMjM1LCAxMzgsIAorICAgIDEyLCAxNSwgMjM1LCAxMzcsIDEyLCAxNSwgMjM1LCAxMzYsIDEyLCAxNSwgMjM1LCAxMzUsIDEyLCAxNSwgMjM1LCAxMzQsIAorICAgIDEyLCAxNSwgMjM1LCAxMzMsIDEyLCAxNSwgMjM1LCAxMzIsIDEyLCAxNSwgMjM1LCAxMzEsIDEyLCAxNSwgMjM1LCAxMzAsIAorICAgIDEyLCAxNSwgMjM1LCAxMjksIDEyLCAxNSwgMjM1LCAxMjgsIDEyLCAxNSwgMjM1LCAxMjcsIDEyLCAxNSwgMjM1LCAxMjYsIAorICAgIDEyLCAxNSwgMjM1LCAxMjUsIDEyLCAxNSwgMjM1LCAxMjQsIDEyLCAxNSwgMjM1LCAxMjMsIDEyLCAxNSwgMjM1LCAxMjIsIAorICAgIDEyLCAxNSwgMjM1LCAxMjEsIDEyLCAxNSwgMjM1LCAxMjAsIDEyLCAxNSwgMjM1LCAxMTksIDEyLCAxNSwgMjM1LCAxMTgsIAorICAgIDEyLCAxNSwgMjM1LCAxMTcsIDEyLCAxNSwgMjM1LCAxMTYsIDEyLCAxNSwgMjM1LCAxMTUsIDEyLCAxNSwgMjM1LCAxMTQsIAorICAgIDEyLCAxNSwgMjM1LCAxMTMsIDEyLCAxNSwgMjM1LCAxMTIsIDEyLCAxNSwgMjM1LCAxMTEsIDEyLCAxNSwgMjM1LCAxMTAsIAorICAgIDEyLCAxNSwgMjM1LCAxMDksIDEyLCAxNSwgMjM1LCAxMDgsIDEyLCAxNSwgMjM1LCAxMDcsIDEyLCAxNSwgMjM1LCAxMDYsIAorICAgIDEyLCAxNSwgMjM1LCAxMDUsIDEyLCAxNSwgMjM1LCAxMDQsIDEyLCAxNSwgMjM1LCAxMDMsIDEyLCAxNSwgMjM1LCAxMDIsIAorICAgIDEyLCAxNSwgMjM1LCAxMDEsIDEyLCAxNSwgMjM1LCAxMDAsIDEyLCAxNSwgMjM1LCA5OSwgMTIsIDE1LCAyMzUsIDk4LCAxMiwgCisgICAgMTUsIDIzNSwgOTcsIDEyLCAxNSwgMjM1LCA5NiwgMTIsIDE1LCAyMzUsIDk1LCAxMiwgMTUsIDIzNSwgOTQsIDEyLCAxNSwgCisgICAgMjM1LCA5MywgMTIsIDE1LCAyMzUsIDkyLCAxMiwgMTUsIDIzNSwgOTEsIDEyLCAxNSwgMjM1LCA5MCwgMTIsIDE1LCAyMzUsIAorICAgIDg5LCAxMiwgMTUsIDIzNSwgODgsIDEyLCAxNSwgMjM1LCA4NywgMTIsIDE1LCAyMzUsIDg2LCAxMiwgMTUsIDIzNSwgODUsIAorICAgIDEyLCAxNSwgMjM1LCA4NCwgMTIsIDE1LCAyMzUsIDgzLCAxMiwgMTUsIDIzNSwgODIsIDEyLCAxNSwgMjM1LCA4MSwgMTIsIAorICAgIDE1LCAyMzUsIDgwLCAxMiwgMTUsIDIzNSwgNzksIDEyLCAxNSwgMjM1LCA3OCwgMTIsIDE1LCAyMzUsIDc3LCAxMiwgMTUsIAorICAgIDIzNSwgNzYsIDEyLCAxNSwgMjM1LCA3NSwgMTIsIDE1LCAyMzUsIDc0LCAxMiwgMTUsIDIzNSwgNzMsIDEyLCAxNSwgMjM1LCAKKyAgICA3MiwgMTIsIDE1LCAyMzUsIDcxLCAxMiwgMTUsIDIzNSwgNzAsIDEyLCAxNSwgMjM1LCA2OSwgMTIsIDE1LCAyMzUsIDY4LCAKKyAgICAxMiwgMTUsIDIzNSwgNjcsIDEyLCAxNSwgMjM1LCA2NiwgMTIsIDE1LCAyMzUsIDY1LCAxMiwgMTUsIDIzNSwgNjQsIDEyLCAKKyAgICAxNSwgMjM1LCA2MywgMTIsIDE1LCAyMzUsIDYyLCAxMiwgMTUsIDIzNSwgNjEsIDEyLCAxNSwgMjM1LCA2MCwgMTIsIDE1LCAKKyAgICAyMzUsIDU5LCAxMiwgMTUsIDIzNSwgNTgsIDEyLCAxNSwgMjM1LCA1NywgMTIsIDE1LCAyMzUsIDU2LCAxMiwgMTUsIDIzNSwgCisgICAgNTUsIDEyLCAxNSwgMjM1LCA1NCwgMTIsIDE1LCAyMzUsIDUzLCAxMiwgMTUsIDIzNSwgNTIsIDEyLCAxNSwgMjM1LCA1MSwgCisgICAgMTIsIDE1LCAyMzUsIDUwLCAxMiwgMTUsIDIzNSwgNDksIDEyLCAxNSwgMjM1LCA0OCwgMTIsIDE1LCAyMzUsIDQ3LCAxMiwgCisgICAgMTUsIDIzNSwgNDYsIDEyLCAxNSwgMjM1LCA0NSwgMTIsIDE1LCAyMzUsIDQ0LCAxMiwgMTUsIDIzNSwgNDMsIDEyLCAxNSwgCisgICAgMjM1LCA0MiwgMTIsIDE1LCAyMzUsIDQxLCAxMiwgMTUsIDIzNSwgNDAsIDEyLCAxNSwgMjM1LCAzOSwgMTIsIDE1LCAyMzUsIAorICAgIDM4LCAxMiwgMTUsIDIzNSwgMzcsIDEyLCAxNSwgMjM1LCAzNiwgMTIsIDE1LCAyMzUsIDM1LCAxMiwgMTUsIDIzNSwgMzQsIAorICAgIDEyLCAxNSwgMjM1LCAzMywgMTIsIDE1LCAyMzUsIDMyLCAxMiwgMTUsIDIzNSwgMzEsIDEyLCAxNSwgMjM1LCAzMCwgMTIsIAorICAgIDE1LCAyMzUsIDI5LCAxMiwgMTUsIDIzNSwgMjgsIDEyLCAxNSwgMjM1LCAyNywgMTIsIDE1LCAyMzUsIDI2LCAxMiwgMTUsIAorICAgIDIzNSwgMjUsIDEyLCAxNSwgMjM1LCAyNCwgMTIsIDE1LCAyMzUsIDIzLCAxMiwgMTUsIDIzNSwgMjIsIDEyLCAxNSwgMjM1LCAKKyAgICAyMSwgMTIsIDE1LCAyMzUsIDIwLCAxMiwgMTUsIDIzNSwgMTksIDEyLCAxNSwgMjM1LCAxOCwgMTIsIDE1LCAyMzUsIDE3LCAKKyAgICAxMiwgMTUsIDIzNSwgMTYsIDEyLCAxNSwgMjM1LCAxNSwgMTIsIDE1LCAyMzUsIDE0LCAxMiwgMTUsIDIzNSwgMTMsIDEyLCAKKyAgICAxNSwgMjM1LCAxMiwgMTIsIDE1LCAyMzUsIDExLCAxMiwgMTUsIDIzNSwgMTAsIDEyLCAxNSwgMjM1LCA5LCAxMiwgMTUsIAorICAgIDIzNSwgOCwgMTIsIDE1LCAyMzUsIDcsIDEyLCAxNSwgMjM1LCA2LCAxMiwgMTUsIDIzNSwgNSwgMTIsIDE1LCAyMzUsIDQsIAorICAgIDEyLCAxNSwgMjM1LCAzLCAxMiwgMTUsIDIzNSwgMiwgMTIsIDE1LCAyMzUsIDEsIDEyLCAxNSwgMjM1LCAwLCAxMiwgMTUsIAorICAgIDIzNCwgMjU1LCAxMiwgMTUsIDIzNCwgMjU0LCAxMiwgMTUsIDIzNCwgMjUzLCAxMiwgMTUsIDIzNCwgMjUyLCAxMiwgMTUsIAorICAgIDIzNCwgMjUxLCAxMiwgMTUsIDIzNCwgMjUwLCAxMiwgMTUsIDIzNCwgMjQ5LCAxMiwgMTUsIDIzNCwgMjQ4LCAxMiwgMTUsIAorICAgIDIzNCwgMjQ3LCAxMiwgMTUsIDIzNCwgMjQ2LCAxMiwgMTUsIDIzNCwgMjQ1LCAxMiwgMTUsIDIzNCwgMjQ0LCAxMiwgMTUsIAorICAgIDIzNCwgMjQzLCAxMiwgMTUsIDIzNCwgMjQyLCAxMiwgMTUsIDIzNCwgMjQxLCAxMiwgMTUsIDIzNCwgMjQwLCAxMiwgMTUsIAorICAgIDIzNCwgMjM5LCAxMiwgMTUsIDIzNCwgMjM4LCAxMiwgMTUsIDIzNCwgMjM3LCAxMiwgMTUsIDIzNCwgMjM2LCAxMiwgMTUsIAorICAgIDIzNCwgMjM1LCAxMiwgMTUsIDIzNCwgMjM0LCAxMiwgMTUsIDIzNCwgMjMzLCAxMiwgMTUsIDIzNCwgMjMyLCAxMiwgMTUsIAorICAgIDIzNCwgMjMxLCAxMiwgMTUsIDIzNCwgMjMwLCAxMiwgMTUsIDIzNCwgMjI5LCAxMiwgMTUsIDIzNCwgMjI4LCAxMiwgMTUsIAorICAgIDIzNCwgMjI3LCAxMiwgMTUsIDIzNCwgMjI2LCAxMiwgMTUsIDIzNCwgMjI1LCAxMiwgMTUsIDIzNCwgMjI0LCAxMiwgMTUsIAorICAgIDIzNCwgMjIzLCAxMiwgMTUsIDIzNCwgMjIyLCAxMiwgMTUsIDIzNCwgMjIxLCAxMiwgMTUsIDIzNCwgMjIwLCAxMiwgMTUsIAorICAgIDIzNCwgMjE5LCAxMiwgMTUsIDIzNCwgMjE4LCAxMiwgMTUsIDIzNCwgMjE3LCAxMiwgMTUsIDIzNCwgMjE2LCAxMiwgMTUsIAorICAgIDIzNCwgMjE1LCAxMiwgMTUsIDIzNCwgMjE0LCAxMiwgMTUsIDIzNCwgMjEzLCAxMiwgMTUsIDIzNCwgMjEyLCAxMiwgMTUsIAorICAgIDIzNCwgMjExLCAxMiwgMTUsIDIzNCwgMjEwLCAxMiwgMTUsIDIzNCwgMjA5LCAxMiwgMTUsIDIzNCwgMjA4LCAxMiwgMTUsIAorICAgIDIzNCwgMjA3LCAxMiwgMTUsIDIzNCwgMjA2LCAxMiwgMTUsIDIzNCwgMjA1LCAxMiwgMTUsIDIzNCwgMjA0LCAxMiwgMTUsIAorICAgIDIzNCwgMjAzLCAxMiwgMTUsIDIzNCwgMjAyLCAxMiwgMTUsIDIzNCwgMjAxLCAxMiwgMTUsIDIzNCwgMjAwLCAxMiwgMTUsIAorICAgIDIzNCwgMTk5LCAxMiwgMTUsIDIzNCwgMTk4LCAxMiwgMTUsIDIzNCwgMTk3LCAxMiwgMTUsIDIzNCwgMTk2LCAxMiwgMTUsIAorICAgIDIzNCwgMTk1LCAxMiwgMTUsIDIzNCwgMTk0LCAxMiwgMTUsIDIzNCwgMTkzLCAxMiwgMTUsIDIzNCwgMTkyLCAxMiwgMTUsIAorICAgIDIzNCwgMTkxLCAxMiwgMTUsIDIzNCwgMTkwLCAxMiwgMTUsIDIzNCwgMTg5LCAxMiwgMTUsIDIzNCwgMTg4LCAxMiwgMTUsIAorICAgIDIzNCwgMTg3LCAxMiwgMTUsIDIzNCwgMTg2LCAxMiwgMTUsIDIzNCwgMTg1LCAxMiwgMTUsIDIzNCwgMTg0LCAxMiwgMTUsIAorICAgIDIzNCwgMTgzLCAxMiwgMTUsIDIzNCwgMTgyLCAxMiwgMTUsIDIzNCwgMTgxLCAxMiwgMTUsIDIzNCwgMTgwLCAxMiwgMTUsIAorICAgIDIzNCwgMTc5LCAxMiwgMTUsIDIzNCwgMTc4LCAxMiwgMTUsIDIzNCwgMTc3LCAxMiwgMTUsIDIzNCwgMTc2LCAxMiwgMTUsIAorICAgIDIzNCwgMTc1LCAxMiwgMTUsIDIzNCwgMTc0LCAxMiwgMTUsIDIzNCwgMTczLCAxMiwgMTUsIDIzNCwgMTcyLCAxMiwgMTUsIAorICAgIDIzNCwgMTcxLCAxMiwgMTUsIDIzNCwgMTcwLCAxMiwgMTUsIDIzNCwgMTY5LCAxMiwgMTUsIDIzNCwgMTY4LCAxMiwgMTUsIAorICAgIDIzNCwgMTY3LCAxMiwgMTUsIDIzNCwgMTY2LCAxMiwgMTUsIDIzNCwgMTY1LCAxMiwgMTUsIDIzNCwgMTY0LCAxMiwgMTUsIAorICAgIDIzNCwgMTYzLCAxMiwgMTUsIDIzNCwgMTYyLCAxMiwgMTUsIDIzNCwgMTYxLCAxMiwgMTUsIDIzNCwgMTYwLCAxMiwgMTUsIAorICAgIDIzNCwgMTU5LCAxMiwgMTUsIDIzNCwgMTU4LCAxMiwgMTUsIDIzNCwgMTU3LCAxMiwgMTUsIDIzNCwgMTU2LCAxMiwgMTUsIAorICAgIDIzNCwgMTU1LCAxMiwgMTUsIDIzNCwgMTU0LCAxMiwgMTUsIDIzNCwgMTUzLCAxMiwgMTUsIDIzNCwgMTUyLCAxMiwgMTUsIAorICAgIDIzNCwgMTUxLCAxMiwgMTUsIDIzNCwgMTUwLCAxMiwgMTUsIDIzNCwgMTQ5LCAxMiwgMTUsIDIzNCwgMTQ4LCAxMiwgMTUsIAorICAgIDIzNCwgMTQ3LCAxMiwgMTUsIDIzNCwgMTQ2LCAxMiwgMTUsIDIzNCwgMTQ1LCAxMiwgMTUsIDIzNCwgMTQ0LCAxMiwgMTUsIAorICAgIDIzNCwgMTQzLCAxMiwgMTUsIDIzNCwgMTQyLCAxMiwgMTUsIDIzNCwgMTQxLCAxMiwgMTUsIDIzNCwgMTQwLCAxMiwgMTUsIAorICAgIDIzNCwgMTM5LCAxMiwgMTUsIDIzNCwgMTM4LCAxMiwgMTUsIDIzNCwgMTM3LCAxMiwgMTUsIDIzNCwgMTM2LCAxMiwgMTUsIAorICAgIDIzNCwgMTM1LCAxMiwgMTUsIDIzNCwgMTM0LCAxMiwgMTUsIDIzNCwgMTMzLCAxMiwgMTUsIDIzNCwgMTMyLCAxMiwgMTUsIAorICAgIDIzNCwgMTMxLCAxMiwgMTUsIDIzNCwgMTMwLCAxMiwgMTUsIDIzNCwgMTI5LCAxMiwgMTUsIDIzNCwgMTI4LCAxMiwgMTUsIAorICAgIDIzNCwgMTI3LCAxMiwgMTUsIDIzNCwgMTI2LCAxMiwgMTUsIDIzNCwgMTI1LCAxMiwgMTUsIDIzNCwgMTI0LCAxMiwgMTUsIAorICAgIDIzNCwgMTIzLCAxMiwgMTUsIDIzNCwgMTIyLCAxMiwgMTUsIDIzNCwgMTIxLCAxMiwgMTUsIDIzNCwgMTIwLCAxMiwgMTUsIAorICAgIDIzNCwgMTE5LCAxMiwgMTUsIDIzNCwgMTE4LCAxMiwgMTUsIDIzNCwgMTE3LCAxMiwgMTUsIDIzNCwgMTE2LCAxMiwgMTUsIAorICAgIDIzNCwgMTE1LCAxMiwgMTUsIDIzNCwgMTE0LCAxMiwgMTUsIDIzNCwgMTEzLCAxMiwgMTUsIDIzNCwgMTEyLCAxMiwgMTUsIAorICAgIDIzNCwgMTExLCAxMiwgMTUsIDIzNCwgMTEwLCAxMiwgMTUsIDIzNCwgMTA5LCAxMiwgMTUsIDIzNCwgMTA4LCAxMiwgMTUsIAorICAgIDIzNCwgMTA3LCAxMiwgMTUsIDIzNCwgMTA2LCAxMiwgMTUsIDIzNCwgMTA1LCAxMiwgMTUsIDIzNCwgMTA0LCAxMiwgMTUsIAorICAgIDIzNCwgMTAzLCAxMiwgMTUsIDIzNCwgMTAyLCAxMiwgMTUsIDIzNCwgMTAxLCAxMiwgMTUsIDIzNCwgMTAwLCAxMiwgMTUsIAorICAgIDIzNCwgOTksIDEyLCAxNSwgMjM0LCA5OCwgMTIsIDE1LCAyMzQsIDk3LCAxMiwgMTUsIDIzNCwgOTYsIDEyLCAxNSwgMjM0LCAKKyAgICA5NSwgMTIsIDE1LCAyMzQsIDk0LCAxMiwgMTUsIDIzNCwgOTMsIDEyLCAxNSwgMjM0LCA5MiwgMTIsIDE1LCAyMzQsIDkxLCAKKyAgICAxMiwgMTUsIDIzNCwgOTAsIDEyLCAxNSwgMjM0LCA4OSwgMTIsIDE1LCAyMzQsIDg4LCAxMiwgMTUsIDIzNCwgODcsIDEyLCAKKyAgICAxNSwgMjM0LCA4NiwgMTIsIDE1LCAyMzQsIDg1LCAxMiwgMTUsIDIzNCwgODQsIDEyLCAxNSwgMjM0LCA4MywgMTIsIDE1LCAKKyAgICAyMzQsIDgyLCAxMiwgMTUsIDIzNCwgODEsIDEyLCAxNSwgMjM0LCA4MCwgMTIsIDE1LCAyMzQsIDc5LCAxMiwgMTUsIDIzNCwgCisgICAgNzgsIDEyLCAxNSwgMjM0LCA3NywgMTIsIDE1LCAyMzQsIDc2LCAxMiwgMTUsIDIzNCwgNzUsIDEyLCAxNSwgMjM0LCA3NCwgCisgICAgMTIsIDE1LCAyMzQsIDczLCAxMiwgMTUsIDIzNCwgNzIsIDEyLCAxNSwgMjM0LCA3MSwgMTIsIDE1LCAyMzQsIDcwLCAxMiwgCisgICAgMTUsIDIzNCwgNjksIDEyLCAxNSwgMjM0LCA2OCwgMTIsIDE1LCAyMzQsIDY3LCAxMiwgMTUsIDIzNCwgNjYsIDEyLCAxNSwgCisgICAgMjM0LCA2NSwgMTIsIDE1LCAyMzQsIDY0LCAxMiwgMTUsIDIzNCwgNjMsIDEyLCAxNSwgMjM0LCA2MiwgMTIsIDE1LCAyMzQsIAorICAgIDYxLCAxMiwgMTUsIDIzNCwgNjAsIDEyLCAxNSwgMjM0LCA1OSwgMTIsIDE1LCAyMzQsIDU4LCAxMiwgMTUsIDIzNCwgNTcsIAorICAgIDEyLCAxNSwgMjM0LCA1NiwgMTIsIDE1LCAyMzQsIDU1LCAxMiwgMTUsIDIzNCwgNTQsIDEyLCAxNSwgMjM0LCA1MywgMTIsIAorICAgIDE1LCAyMzQsIDUyLCAxMiwgMTUsIDIzNCwgNTEsIDEyLCAxNSwgMjM0LCA1MCwgMTIsIDE1LCAyMzQsIDQ5LCAxMiwgMTUsIAorICAgIDIzNCwgNDgsIDEyLCAxNSwgMjM0LCA0NywgMTIsIDE1LCAyMzQsIDQ2LCAxMiwgMTUsIDIzNCwgNDUsIDEyLCAxNSwgMjM0LCAKKyAgICA0NCwgMTIsIDE1LCAyMzQsIDQzLCAxMiwgMTUsIDIzNCwgNDIsIDEyLCAxNSwgMjM0LCA0MSwgMTIsIDE1LCAyMzQsIDQwLCAKKyAgICAxMiwgMTUsIDIzNCwgMzksIDEyLCAxNSwgMjM0LCAzOCwgMTIsIDE1LCAyMzQsIDM3LCAxMiwgMTUsIDIzNCwgMzYsIDEyLCAKKyAgICAxNSwgMjM0LCAzNSwgMTIsIDE1LCAyMzQsIDM0LCAxMiwgMTUsIDIzNCwgMzMsIDEyLCAxNSwgMjM0LCAzMiwgMTIsIDE1LCAKKyAgICAyMzQsIDMxLCAxMiwgMTUsIDIzNCwgMzAsIDEyLCAxNSwgMjM0LCAyOSwgMTIsIDE1LCAyMzQsIDI4LCAxMiwgMTUsIDIzNCwgCisgICAgMjcsIDEyLCAxNSwgMjM0LCAyNiwgMTIsIDE1LCAyMzQsIDI1LCAxMiwgMTUsIDIzNCwgMjQsIDEyLCAxNSwgMjM0LCAyMywgCisgICAgMTIsIDE1LCAyMzQsIDIyLCAxMiwgMTUsIDIzNCwgMjEsIDEyLCAxNSwgMjM0LCAyMCwgMTIsIDE1LCAyMzQsIDE5LCAxMiwgCisgICAgMTUsIDIzNCwgMTgsIDEyLCAxNSwgMjM0LCAxNywgMTIsIDE1LCAyMzQsIDE2LCAxMiwgMTUsIDIzNCwgMTUsIDEyLCAxNSwgCisgICAgMjM0LCAxNCwgMTIsIDE1LCAyMzQsIDEzLCAxMiwgMTUsIDIzNCwgMTIsIDEyLCAxNSwgMjM0LCAxMSwgMTIsIDE1LCAyMzQsIAorICAgIDEwLCAxMiwgMTUsIDIzNCwgOSwgMTIsIDE1LCAyMzQsIDgsIDEyLCAxNSwgMjM0LCA3LCAxMiwgMTUsIDIzNCwgNiwgMTIsIAorICAgIDE1LCAyMzQsIDUsIDEyLCAxNSwgMjM0LCA0LCAxMiwgMTUsIDIzNCwgMywgMTIsIDE1LCAyMzQsIDIsIDEyLCAxNSwgMjM0LCAKKyAgICAxLCAxMiwgMTUsIDIzNCwgMCwgMTIsIDE1LCAyMzMsIDI1NSwgMTIsIDE1LCAyMzMsIDI1NCwgMTIsIDE1LCAyMzMsIDI1MywgCisgICAgMTIsIDE1LCAyMzMsIDI1MiwgMTIsIDE1LCAyMzMsIDI1MSwgMTIsIDE1LCAyMzMsIDI1MCwgMTIsIDE1LCAyMzMsIDI0OSwgCisgICAgMTIsIDE1LCAyMzMsIDI0OCwgMTIsIDE1LCAyMzMsIDI0NywgMTIsIDE1LCAyMzMsIDI0NiwgMTIsIDE1LCAyMzMsIDI0NSwgCisgICAgMTIsIDE1LCAyMzMsIDI0NCwgMTIsIDE1LCAyMzMsIDI0MywgMTIsIDE1LCAyMzMsIDI0MiwgMTIsIDE1LCAyMzMsIDI0MSwgCisgICAgMTIsIDE1LCAyMzMsIDI0MCwgMTIsIDE1LCAyMzMsIDIzOSwgMTIsIDE1LCAyMzMsIDIzOCwgMTIsIDE1LCAyMzMsIDIzNywgCisgICAgMTIsIDE1LCAyMzMsIDIzNiwgMTIsIDE1LCAyMzMsIDIzNSwgMTIsIDE1LCAyMzMsIDIzNCwgMTIsIDE1LCAyMzMsIDIzMywgCisgICAgMTIsIDE1LCAyMzMsIDIzMiwgMTIsIDE1LCAyMzMsIDIzMSwgMTIsIDE1LCAyMzMsIDIzMCwgMTIsIDE1LCAyMzMsIDIyOSwgCisgICAgMTIsIDE1LCAyMzMsIDIyOCwgMTIsIDE1LCAyMzMsIDIyNywgMTIsIDE1LCAyMzMsIDIyNiwgMTIsIDE1LCAyMzMsIDIyNSwgCisgICAgMTIsIDE1LCAyMzMsIDIyNCwgMTIsIDE1LCAyMzMsIDIyMywgMTIsIDE1LCAyMzMsIDIyMiwgMTIsIDE1LCAyMzMsIDIyMSwgCisgICAgMTIsIDE1LCAyMzMsIDIyMCwgMTIsIDE1LCAyMzMsIDIxOSwgMTIsIDE1LCAyMzMsIDIxOCwgMTIsIDE1LCAyMzMsIDIxNywgCisgICAgMTIsIDE1LCAyMzMsIDIxNiwgMTIsIDE1LCAyMzMsIDIxNSwgMTIsIDE1LCAyMzMsIDIxNCwgMTIsIDE1LCAyMzMsIDIxMywgCisgICAgMTIsIDE1LCAyMzMsIDIxMiwgMTIsIDE1LCAyMzMsIDIxMSwgMTIsIDE1LCAyMzMsIDIxMCwgMTIsIDE1LCAyMzMsIDIwOSwgCisgICAgMTIsIDE1LCAyMzMsIDIwOCwgMTIsIDE1LCAyMzMsIDIwNywgMTIsIDE1LCAyMzMsIDIwNiwgMTIsIDE1LCAyMzMsIDIwNSwgCisgICAgMTIsIDE1LCAyMzMsIDIwNCwgMTIsIDE1LCAyMzMsIDIwMywgMTIsIDE1LCAyMzMsIDIwMiwgMTIsIDE1LCAyMzMsIDIwMSwgCisgICAgMTIsIDE1LCAyMzMsIDIwMCwgMTIsIDE1LCAyMzMsIDE5OSwgMTIsIDE1LCAyMzMsIDE5OCwgMTIsIDE1LCAyMzMsIDE5NywgCisgICAgMTIsIDE1LCAyMzMsIDE5NiwgMTIsIDE1LCAyMzMsIDE5NSwgMTIsIDE1LCAyMzMsIDE5NCwgMTIsIDE1LCAyMzMsIDE5MywgCisgICAgMTIsIDE1LCAyMzMsIDE5MiwgMTIsIDE1LCAyMzMsIDE5MSwgMTIsIDE1LCAyMzMsIDE5MCwgMTIsIDE1LCAyMzMsIDE4OSwgCisgICAgMTIsIDE1LCAyMzMsIDE4OCwgMTIsIDE1LCAyMzMsIDE4NywgMTIsIDE1LCAyMzMsIDE4NiwgMTIsIDE1LCAyMzMsIDE4NSwgCisgICAgMTIsIDE1LCAyMzMsIDE4NCwgMTIsIDE1LCAyMzMsIDE4MywgMTIsIDE1LCAyMzMsIDE4MiwgMTIsIDE1LCAyMzMsIDE4MSwgCisgICAgMTIsIDE1LCAyMzMsIDE4MCwgMTIsIDE1LCAyMzMsIDE3OSwgMTIsIDE1LCAyMzMsIDE3OCwgMTIsIDE1LCAyMzMsIDE3NywgCisgICAgMTIsIDE1LCAyMzMsIDE3NiwgMTIsIDE1LCAyMzMsIDE3NSwgMTIsIDE1LCAyMzMsIDE3NCwgMTIsIDE1LCAyMzMsIDE3MywgCisgICAgMTIsIDE1LCAyMzMsIDE3MiwgMTIsIDE1LCAyMzMsIDE3MSwgMTIsIDE1LCAyMzMsIDE3MCwgMTIsIDE1LCAyMzMsIDE2OSwgCisgICAgMTIsIDE1LCAyMzMsIDE2OCwgMTIsIDE1LCAyMzMsIDE2NywgMTIsIDE1LCAyMzMsIDE2NiwgMTIsIDE1LCAyMzMsIDE2NSwgCisgICAgMTIsIDE1LCAyMzMsIDE2NCwgMTIsIDE1LCAyMzMsIDE2MywgMTIsIDE1LCAyMzMsIDE2MiwgMTIsIDE1LCAyMzMsIDE2MSwgCisgICAgMTIsIDE1LCAyMzMsIDE2MCwgMTIsIDE1LCAyMzMsIDE1OSwgMTIsIDE1LCAyMzMsIDE1OCwgMTIsIDE1LCAyMzMsIDE1NywgCisgICAgMTIsIDE1LCAyMzMsIDE1NiwgMTIsIDE1LCAyMzMsIDE1NSwgMTIsIDE1LCAyMzMsIDE1NCwgMTIsIDE1LCAyMzMsIDE1MywgCisgICAgMTIsIDE1LCAyMzMsIDE1MiwgMTIsIDE1LCAyMzMsIDE1MSwgMTIsIDE1LCAyMzMsIDE1MCwgMTIsIDE1LCAyMzMsIDE0OSwgCisgICAgMTIsIDE1LCAyMzMsIDE0OCwgMTIsIDE1LCAyMzMsIDE0NywgMTIsIDE1LCAyMzMsIDE0NiwgMTIsIDE1LCAyMzMsIDE0NSwgCisgICAgMTIsIDE1LCAyMzMsIDE0NCwgMTIsIDE1LCAyMzMsIDE0MywgMTIsIDE1LCAyMzMsIDE0MiwgMTIsIDE1LCAyMzMsIDE0MSwgCisgICAgMTIsIDE1LCAyMzMsIDE0MCwgMTIsIDE1LCAyMzMsIDEzOSwgMTIsIDE1LCAyMzMsIDEzOCwgMTIsIDE1LCAyMzMsIDEzNywgCisgICAgMTIsIDE1LCAyMzMsIDEzNiwgMTIsIDE1LCAyMzMsIDEzNSwgMTIsIDE1LCAyMzMsIDEzNCwgMTIsIDE1LCAyMzMsIDEzMywgCisgICAgMTIsIDE1LCAyMzMsIDEzMiwgMTIsIDE1LCAyMzMsIDEzMSwgMTIsIDE1LCAyMzMsIDEzMCwgMTIsIDE1LCAyMzMsIDEyOSwgCisgICAgMTIsIDE1LCAyMzMsIDEyOCwgMTIsIDE1LCAyMzMsIDEyNywgMTIsIDE1LCAyMzMsIDEyNiwgMTIsIDE1LCAyMzMsIDEyNSwgCisgICAgMTIsIDE1LCAyMzMsIDEyNCwgMTIsIDE1LCAyMzMsIDEyMywgMjI4LCAxNCwgMjA5LCAyNTUsIDE2MCwgMjExLCAyMjgsIAorICAgIDE2MCwgMjQwLCAyMTIsIDgyLCAxNjAsIDIxNywgMzEsIDgyLCAxNjAsIDQyLCA1NCwgMTYwLCAyNDMsIDk3LCA1NCwgMTYwLCAKKyAgICAyMTgsIDI0NiwgNTQsIDE2MCwgMjUwLCAyMzUsIDE2MCwgMjUwLCAxNjAsIDE2MCwgNDksIDIxOSwgNzYsIDE2MCwgNTAsIAorICAgIDIxOSwgNzYsIDE2MCwgMjUwLCA1OSwgMTYwLCA5MSwgNTQsIDE2MCwgMjQ1LCAyMzMsIDE2MCwgMjM1LCAyMTksIDE2MCwgCisgICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE2MCwgMjEyLCAwLCAxNjAsIDE3LCAyMDIsIDg0LCAxNjAsIDE3LCAxMDUsIDE2MCwgMTcsIAorICAgIDEwOCwgMTYwLCAxNywgMTQ3LCAxNjAsIDE3LCAxNDksIDE2MCwgMTcsIDE3MCwgMTYwLCAxNywgMTk1LCAxNjAsIDE3LCAKKyAgICAyMTMsIDExMSwgMTYwLCAxNywgMTk5LCAxNjAsIDE3LCAyMjIsIDYzLCAxNjAsIDI0NSwgMjQyLCAxNjAsIDIxMywgMTQzLCAKKyAgICAxNjAsIDIyNywgMTc5LCA1NCwgMTYwLCAyNDEsIDM1LCA1NCwgMTYwLCAyMzcsIDI0NywgNTQsIDE2MCwgMjE3LCA0NywgODIsIAorICAgIDE2MCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE2MCwgOCwgNiwgMSwgNjMsIDE2MCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgCisgICAgNiwgMSwgMjQ3LCAxMjUsIDE2MCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA2LCAxLCA3NCwgMTYwLCA4LCA2LCAxLCAKKyAgICAyNDAsIDE3NCwgMTYwLCA4LCA2LCAxLCAyMzksIDc1LCAxNjAsIDgsIDYsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDYsIDEsIAorICAgIDc1LCAxNjAsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNjAsIDgsIDYsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNiwgMSwgMTU5LCAKKyAgICAxNjAsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNjAsIDgsIDYsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDYsIDEsIDc4LCAxNjAsIDgsIAorICAgIDYsIDEsIDIxOSwgMTg0LCAxNjAsIDgsIDYsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDYsIDEsIDE0NiwgMTYwLCA4LCA2LCAxLCAKKyAgICAxOTQsIDE2MCwgOCwgNiwgMSwgMjEwLCA2OSwgMTYwLCA4LCA2LCAxLCA2OCwgMTYwLCA4LCA2LCAxLCAyMDYsIDE2NCwgCisgICAgMTYwLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTYwLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA2LCAxLCAyMDMsIDEyNCwgCisgICAgMTYwLCA4LCA2LCAxLCAyMDIsIDE1OSwgMTYwLCA0OSwgNTEsIDE1NSwgMTYwLCAyMTYsIDc0LCAyMTIsIDAsIDE2MCwgNTAsIAorICAgIDUxLCAxNTUsIDE2MCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE2MCwgMTI0LCAyMjcsIDExNCwgMTYwLCAyMzcsIDI1NCwgMjUxLCAKKyAgICAxMzgsIDE2MCwgOCwgNSwgMSwgNjMsIDE2MCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAorICAgIDE2MCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA1LCAxLCA3NCwgMTYwLCA4LCA1LCAxLCAyNDAsIDE3NCwgMTYwLCA4LCAKKyAgICA1LCAxLCAyMzksIDc1LCAxNjAsIDgsIDUsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDUsIDEsIDc1LCAxNjAsIDgsIDUsIDEsIAorICAgIDIzMCwgMTg0LCAxNjAsIDgsIDUsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNSwgMSwgMTU5LCAxNjAsIDgsIDUsIDEsIDIyNiwgCisgICAgMTg1LCAxNjAsIDgsIDUsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDUsIDEsIDc4LCAxNjAsIDgsIDUsIDEsIDIxOSwgMTg0LCAKKyAgICAxNjAsIDgsIDUsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDUsIDEsIDE0NiwgMTYwLCA4LCA1LCAxLCAxOTQsIDE2MCwgOCwgNSwgCisgICAgMSwgMjEwLCA2OSwgMTYwLCA4LCA1LCAxLCA2OCwgMTYwLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTYwLCA4LCA1LCAxLCAyMDQsIAorICAgIDE0NCwgMTYwLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTYwLCA4LCA1LCAxLCAyMDIsIAorICAgIDE1OSwgMTYwLCA0OSwgMjQ1LCA5MywgMTU1LCAxNjAsIDgwLCAyMjcsIDExNCwgMTYwLCA1MCwgMjQ1LCA5MywgMTU1LCAKKyAgICAxNjAsIDIwOCwgMjI3LCAyNDcsIDYwLCAyMDksIDI1NSwgNTcsIDIxNCwgNzEsIDU3LCAyMTQsIDYwLCA1NywgMjE0LCA0OSwgCisgICAgNTcsIDIxNCwgMzcsIDU3LCAyMTQsIDI2LCA1NywgMjE0LCAxNSwgNTcsIDIxNCwgNCwgNTcsIDIxMywgMjQ5LCA1NywgMjEzLCAKKyAgICAyMzgsIDU3LCAyMTMsIDIzMCwgNTcsIDIxMywgMjI5LCA1NywgMjEzLCAyMjgsIDU3LCAyMTMsIDIyNywgNTcsIDIxMywgCisgICAgMjI1LCA1NywgMjEzLCAyMjQsIDU3LCAyMTMsIDIyMywgNTcsIDIxMywgMjIyLCA1NywgMjEzLCAyMjEsIDU3LCAyMTMsIAorICAgIDIyMCwgNTcsIDIxMywgMjE5LCA1NywgMjEzLCAyMTgsIDU3LCAyMTMsIDIxNywgNTcsIDIxMywgMjE2LCA1NywgMjEzLCAKKyAgICAyMTQsIDU3LCAyMTMsIDIxMywgNTcsIDIxMywgMjEyLCA1NywgMjEzLCAyMTEsIDU3LCAyMTMsIDIxMCwgNTcsIDIxMywgCisgICAgMjA5LCA1NywgMjEzLCAyMDgsIDU3LCAyMTMsIDIwNywgNTcsIDIxMywgMjA2LCA1NywgMjEzLCAyMDUsIDU3LCAyMTMsIAorICAgIDIwMywgNTcsIDIxMywgMjAyLCA1NywgMjEzLCAyMDEsIDU3LCAyMTMsIDIwMCwgNTcsIDIxMywgMTk5LCA1NywgMjEzLCAKKyAgICAxOTgsIDU3LCAyMTMsIDE5NywgNTcsIDIxMywgMTk2LCA1NywgMjEzLCAxOTUsIDU3LCAyMTMsIDE5NCwgNTcsIDIxMywgCisgICAgMTkyLCA1NywgMjEzLCAxOTEsIDU3LCAyMTMsIDE5MCwgNTcsIDIxMywgMTg5LCA1NywgMjEzLCAxODgsIDU3LCAyMTMsIAorICAgIDE4NywgNTcsIDIxMywgMTg2LCA1NywgMjEzLCAxODUsIDU3LCAyMTMsIDE4NCwgNTcsIDIxMywgMTgzLCA1NywgMjEzLCAKKyAgICAxODEsIDU3LCAyMTMsIDE4MCwgNTcsIDIxMywgMTc5LCA1NywgMjEzLCAxNzgsIDU3LCAyMTMsIDE3NywgNTcsIDIxMywgCisgICAgMTc2LCA1NywgMjEzLCAxNzUsIDU3LCAyMTMsIDE3NCwgNTcsIDIxMywgMTczLCA1NywgMjEzLCAxNzIsIDU3LCAyMTMsIAorICAgIDE3MCwgNTcsIDIxMywgMTY5LCA1NywgMjEzLCAxNjgsIDU3LCAyMTMsIDE2NywgNTcsIDIxMywgMTY2LCA1NywgMjEzLCAKKyAgICAxNjUsIDU3LCAyMTMsIDE2NCwgNTcsIDIxMywgMTYzLCA1NywgMjEzLCAxNjIsIDU3LCAyMTMsIDE2MSwgNTcsIDIxMywgCisgICAgMTU5LCA1NywgMjEzLCAxNTgsIDU3LCAyMTMsIDE1NywgNTcsIDIxMywgMTU2LCA1NywgMjEzLCAxNTUsIDU3LCAyMTMsIAorICAgIDE1NCwgNTcsIDIxMywgMTUzLCA1NywgMjEzLCAxNTIsIDU3LCAyMTMsIDE1MSwgNTcsIDIxMywgMTUwLCA1NywgMjE0LCAKKyAgICAxNDcsIDU3LCAyMTQsIDE0NiwgNTcsIDIxNCwgMTQ1LCA1NywgMjE0LCAxNDQsIDU3LCAyMTQsIDE0MywgNTcsIDIxNCwgCisgICAgMTQyLCA1NywgMjE0LCAxNDEsIDU3LCAyMTQsIDE0MCwgNTcsIDIxNCwgMTM5LCA1NywgMjE0LCAxMzgsIDU3LCAyMTQsIAorICAgIDEzNiwgNTcsIDIxNCwgMTM1LCA1NywgMjE0LCAxMzQsIDU3LCAyMTQsIDEzMywgNTcsIDIxNCwgMTMyLCA1NywgMjE0LCAKKyAgICAxMzEsIDU3LCAyMTQsIDEzMCwgNTcsIDIxNCwgMTI5LCA1NywgMjE0LCAxMjgsIDU3LCAyMTQsIDEyNywgNTcsIDIxNCwgCisgICAgMTI1LCA1NywgMjE0LCAxMjQsIDU3LCAyMTQsIDEyMywgNTcsIDIxNCwgMTIyLCA1NywgMjE0LCAxMjEsIDU3LCAyMTQsIAorICAgIDEyMCwgNTcsIDIxNCwgMTE5LCA1NywgMjE0LCAxMTgsIDU3LCAyMTQsIDExNywgNTcsIDIxNCwgMTE2LCA1NywgMjE0LCAKKyAgICAxMTQsIDU3LCAyMTQsIDExMywgNTcsIDIxNCwgMTEyLCA1NywgMjE0LCAxMTEsIDU3LCAyMTQsIDExMCwgNTcsIDIxNCwgCisgICAgMTA5LCA1NywgMjE0LCAxMDgsIDU3LCAyMTQsIDEwNywgNTcsIDIxNCwgMTA2LCA1NywgMjE0LCAxMDUsIDU3LCAyMTQsIAorICAgIDEwMywgNTcsIDIxNCwgMTAyLCA1NywgMjE0LCAxMDEsIDU3LCAyMTQsIDEwMCwgNTcsIDIxNCwgOTksIDU3LCAyMTQsIDk4LCAKKyAgICA1NywgMjE0LCA5NywgNTcsIDIxNCwgOTYsIDU3LCAyMTQsIDk1LCA1NywgMjE0LCA5NCwgNTcsIDIxNCwgOTIsIDU3LCAyMTQsIAorICAgIDkxLCA1NywgMjE0LCA5MCwgNTcsIDIxNCwgODksIDU3LCAyMTQsIDg4LCA1NywgMjE0LCA4NywgNTcsIDIxNCwgODYsIDU3LCAKKyAgICAyMTQsIDg1LCA1NywgMjE0LCA4NCwgNTcsIDIxNCwgODMsIDU3LCAyMTQsIDgxLCA1NywgMjE0LCA4MCwgNTcsIDIxNCwgNzksIAorICAgIDU3LCAyMTQsIDc4LCA1NywgMjE0LCA3NywgNTcsIDIxNCwgNzYsIDU3LCAyMTQsIDc1LCA1NywgMjE0LCA3NCwgNTcsIDIxNCwgCisgICAgNzMsIDU3LCAyMTQsIDcyLCA1NywgMjE0LCA3MCwgNTcsIDIxNCwgNjksIDU3LCAyMTQsIDY4LCA1NywgMjE0LCA2NywgNTcsIAorICAgIDIxNCwgNjYsIDU3LCAyMTQsIDY1LCA1NywgMjE0LCA2NCwgNTcsIDIxNCwgNjMsIDU3LCAyMTQsIDYyLCA1NywgMjE0LCA2MSwgCisgICAgNTcsIDIxNCwgNTksIDU3LCAyMTQsIDU4LCA1NywgMjE0LCA1NywgNTcsIDIxNCwgNTYsIDU3LCAyMTQsIDU1LCA1NywgMjE0LCAKKyAgICA1NCwgNTcsIDIxNCwgNTMsIDU3LCAyMTQsIDUyLCA1NywgMjE0LCA1MSwgNTcsIDIxNCwgNTAsIDU3LCAyMTQsIDQ4LCA1NywgCisgICAgMjE0LCA0NywgNTcsIDIxNCwgNDYsIDU3LCAyMTQsIDQ1LCA1NywgMjE0LCA0NCwgNTcsIDIxNCwgNDMsIDU3LCAyMTQsIDQyLCAKKyAgICA1NywgMjE0LCA0MSwgNTcsIDIxNCwgNDAsIDU3LCAyMTQsIDM5LCA1NywgMjE0LCAzNiwgNTcsIDIxNCwgMzUsIDU3LCAyMTQsIAorICAgIDM0LCA1NywgMjE0LCAzMywgNTcsIDIxNCwgMzIsIDU3LCAyMTQsIDMxLCA1NywgMjE0LCAzMCwgNTcsIDIxNCwgMjksIDU3LCAKKyAgICAyMTQsIDI4LCA1NywgMjE0LCAyNywgNTcsIDIxNCwgMjUsIDU3LCAyMTQsIDI0LCA1NywgMjE0LCAyMywgNTcsIDIxNCwgMjIsIAorICAgIDU3LCAyMTQsIDIxLCA1NywgMjE0LCAyMCwgNTcsIDIxNCwgMTksIDU3LCAyMTQsIDE4LCA1NywgMjE0LCAxNywgNTcsIDIxNCwgCisgICAgMTYsIDU3LCAyMTQsIDE0LCA1NywgMjE0LCAxMywgNTcsIDIxNCwgMTIsIDU3LCAyMTQsIDExLCA1NywgMjE0LCAxMCwgNTcsIAorICAgIDIxNCwgOSwgNTcsIDIxNCwgOCwgNTcsIDIxNCwgNywgNTcsIDIxNCwgNiwgNTcsIDIxNCwgNSwgNTcsIDIxNCwgMywgNTcsIAorICAgIDIxNCwgMiwgNTcsIDIxNCwgMSwgNTcsIDIxNCwgMCwgNTcsIDIxMywgMjU1LCA1NywgMjEzLCAyNTQsIDU3LCAyMTMsIDI1MywgCisgICAgNTcsIDIxMywgMjUyLCA1NywgMjEzLCAyNTEsIDU3LCAyMTMsIDI1MCwgNTcsIDIxMywgMjQ4LCA1NywgMjEzLCAyNDcsIDU3LCAKKyAgICAyMTMsIDI0NiwgNTcsIDIxMywgMjQ1LCA1NywgMjEzLCAyNDQsIDU3LCAyMTMsIDI0MywgNTcsIDIxMywgMjQyLCA1NywgCisgICAgMjEzLCAyNDEsIDU3LCAyMTMsIDI0MCwgNTcsIDIxMywgMjM5LCA1NywgMjEzLCAyMzcsIDU3LCAyMTMsIDIzNiwgNTcsIAorICAgIDIxMywgMjM1LCA1NywgMjEzLCAyMzQsIDU3LCAyMTMsIDIzMywgNTcsIDIxMywgMjMyLCA1NywgMjEzLCAyMzEsIDIyMSwgCisgICAgNDgsIDIyMSwgNTAsIDIxMSwgOTAsIDc2LCAyMzcsIDYxLCAyMTIsIDMsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMjExLCAKKyAgICAxMiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAyNDAsIDI0MCwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAyNDEsIDQ3LCAyNDEsIAorICAgIDcxLCAyNDEsIDcyLCAyNTEsIDEzMCwgMjUxLCAxMzEsIDI1MSwgMjcsIDI0OCwgMTMxLCAyNDksIDE5LCAyNDcsIDE5OSwgCisgICAgMTY3LCAyMTAsIDUsIDIzNiwgMTA2LCAyMTAsIDUsIDIzNiwgMzEsIDIxMCwgMTAsIDIyNywgMTE1LCAyNDAsIDUxLCAyMjIsIAorICAgIDIxNCwgMjI3LCAxMTQsIDI0MSwgODQsIDc2LCAyMjcsIDExNCwgMjI3LCAxNjMsIDIyMSwgMjUzLCAyNDEsIDUwLCAyMjcsIAorICAgIDExNSwgMjEwLCA1LCA4MCwgMjEwLCA1LCAyMDQsIDE2NSwgMjM5LCAxNTksIDI0MCwgNTEsIDI0MCwgMzAsIDI0NywgMjUsIAorICAgIDIxNiwgNzcsIDI0NSwgMTQ3LCAyMTMsIDcsIDIxOSwgMjExLCAyMjcsIDQxLCAxMDUsIDIxMiwgMTMsIDIxMywgNywgMjMxLCAKKyAgICA0OSwgMjI3LCA0MSwgMjAyLCA4NCwgMjEyLCAxNjIsIDI0NCwgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAyNDMsIDEyMywgCisgICAgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAyNDQsIDEyOCwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA4LCAyNDQsIDEyNywgMjQ0LCA4LCAKKyAgICAyNDUsIDE4NCwgMTQ3LCAyNDQsIDEyNiwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ5LCAyNDQsIDEyNSwgMTgyLCAyNTEsIDEzMCwgCisgICAgMjIzLCA4OSwgMjEwLCA5NSwgMjMxLCAxMTIsIDIxMCwgOTksIDI0MSwgODQsIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMjQwLCAKKyAgICAyNDcsIDI0NywgNTksIDI0NywgNjEsIDI0MSwgODQsIDc2LCAyMjUsIDksIDI0MSwgNDgsIDIxMCwgMjQyLCAyMTEsIDMsIAorICAgIDI0MSwgOSwgMjQxLCAxMCwgMjMxLCAyNSwgMjEzLCAxMzEsIDE0OSwgMjQwLCAxMSwgMjEzLCAxMzAsIDIzOSwgMTEyLCAKKyAgICAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ3LCAyMzcsIDIzOCwgMjEzLCAxMzAsIDIzNywgMjM1LCAyMzEsIDI1LCAyMTMsIDEzMSwgCisgICAgMTA4LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDIxNSwgMTUwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTA1LCAyMDYsIDIzNiwgMjEzLCAKKyAgICAxMzAsIDIwNiwgMTkzLCAyMTEsIDIzMSwgMjQ0LCA0NiwgMjQ0LCA0OCwgMjE5LCAxNTcsIDI0NiwgMTgyLCAyMTksIDE1OSwgCisgICAgMTM4LCAyMjAsIDgwLCAyMTcsIDI0MCwgMjM2LCAxMDksIDI0NywgMjE4LCAyMTgsIDIzNiwgMjM3LCAyNywgMjQ3LCAyMzAsIAorICAgIDIyMSwgMTkyLCAyNDcsIDIxOCwgMjM3LCAyNywgMjIzLCA1MywgMjMxLCAzNSwgMjMxLCAzNywgMjIyLCAyMDgsIDIyNywgCisgICAgMTE0LCAyMjIsIDIzMSwgMjExLCA5MCwgNzYsIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjExLCAxNjQsIDI0MSwgODQsIDc2LCAKKyAgICAyMTQsIDE1MiwgMjUwLCAxMjAsIDI0MSwgMTIsIDE2NywgMjEwLCA2LCAyMTMsIDExNywgMjM2LCAxMDYsIDIxMCwgNiwgCisgICAgMjEzLCAxMTcsIDIzNiwgMjgsIDE2NywgMjEwLCA2LCAzLCAyMzAsIDY2LCAyMzYsIDEwNiwgMjEwLCA2LCAzLCAyMzAsIDY2LCAKKyAgICAyMzYsIDI5LCAyMjcsIDExNSwgMjEwLCA2LCAyMTMsIDExNywgODAsIDIxMCwgNiwgMjEzLCAxMTcsIDIwNCwgMTY0LCAyMTksIAorICAgIDY5LCAyMjcsIDExNSwgMjM5LCAxNTEsIDIxOSwgNjksIDIyNywgMTE1LCAyNDIsIDcwLCAyMTgsIDg3LCAyMTksIDY5LCAKKyAgICAyMjcsIDExNSwgMjQ5LCAxOCwgMjE5LCA2OSwgMjI3LCAxMTUsIDIwNiwgMjI0LCAyMTgsIDgyLCAyMTYsIDc0LCAyMjcsIAorICAgIDExNSwgMjQwLCA1MSwgMjE2LCA3NCwgMjMxLCAzNSwgMjE2LCA1NywgMjEyLCAxMjAsIDIxMywgNywgMTA4LCAyMTIsIDExNywgCisgICAgMjExLCAxNjYsIDIxMiwgMTIwLCAyMTMsIDcsIDE0NywgMjEyLCAxMTYsIDIxMSwgMTY1LCAyNDQsIDgsIDI0NSwgMTg0LCAKKyAgICAyMTEsIDM0LCAyNDQsIDEyMywgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDUsIDIxNywgMjI3LCAyMDYsIDE5MCwgMjE3LCAxOTAsIAorICAgIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA4LCAyMTcsIDIyNywgMjA2LCAxODksIDIxNywgMTg5LCAyMTMsIDExOCwgMjA4LCAKKyAgICAxMDQsIDIxMSwgODksIDIxMSwgMTcsIDI0NywgNjAsIDI0NiwgMTgyLCAyNDcsIDEsIDIyNCwgMjI0LCAyMDQsIDEwMywgCisgICAgMjIzLCAxODEsIDIxMSwgOTAsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDIxMSwgOTAsIDc2LCAyMTcsIDIwOCwgMjUwLCAKKyAgICAxMjAsIDIxMSwgMjMwLCAyNDEsIDg0LCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyNDEsIDg0LCA3NiwgMjE3LCAyMDgsIAorICAgIDI1MCwgMTIwLCAyNDEsIDQ1LCAyMTEsIDkwLCA3NiwgMjExLCAzNCwgMjExLCAyNDUsIDIxMiwgMTIwLCAyMzgsIDMsIDE2NywgCisgICAgMjMwLCAyNDEsIDIxMywgOTUsIDIxMiwgMTIwLCAxNjcsIDIzMCwgMjQxLCAyMTQsIDE5MSwgMjQ1LCAxODQsIDIxMywgMTI3LCAKKyAgICAyMzAsIDI0MSwgMjQ1LCAxMTEsIDIxMSwgMzUsIDIwOSwgMTM4LCAyMTEsIDEwOCwgMjIwLCAwLCAyMTAsIDg0LCAyNDUsIAorICAgIDIzMiwgMjE5LCAyMjYsIDIxNywgMjI4LCAyMjQsIDIyMywgMjE4LCA3MiwgMjUwLCAxNTYsIDIxNywgMjIyLCAyNDUsIDIzMiwgCisgICAgMjUwLCAxNzIsIDIyMywgNDEsIDIxMiwgMTcxLCA4LCA2LCAxLCAyMzgsIDExOSwgOCwgNSwgMSwgMjM4LCAxMTksIDI0NiwgCisgICAgMjAxLCAyNTEsIDgsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIwMCwgMSwgMjI3LCAKKyAgICA2OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDIzOSwgMTc4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjQwLCA2MywgMjI4LCAKKyAgICAxMiwgMSwgMjE1LCAyMjcsIDIyOCwgMTIsIDEsIDIyNywgNDksIDc3LCAxMzEsIDI0OCwgNDUsIDIxMiwgMjM4LCAyMzgsIAorICAgIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgMjM5LCA4OSwgMjM5LCA4OCwgMjM5LCA4NywgMjIzLCAxODMsIDIwMSwgMjQzLCAKKyAgICAyMDEsIDI0NCwgMjAxLCAyNDYsIDIyNiwgMjQzLCAyMTUsIDIzNSwgMjI2LCAyNDUsIDIxNSwgMjM3LCAyMTksIDM3LCAyMjYsIAorICAgIDI0MiwgMjE1LCAyMzQsIDIyMSwgMjIzLCAyMjQsIDg2LCAyMDQsIDIsIDIyNiwgMjQ0LCAyMTUsIDIzNiwgMjM5LCAxMTEsIAorICAgIDIxOSwgMzYsIDIwNCwgNTIsIDI0MSwgMTA3LCAyMzksIDk5LCAyMjQsIDE1NCwgMjIwLCAzMiwgMjA2LCAxOTQsIDk3LCAKKyAgICAyMjQsIDE1NCwgMjQ0LCAxNDUsIDk3LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCisgICAgMywgNTIsIDgwLCA5NSwgMTEsIDQsIDIzMCwgMTk5LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgCisgICAgMjI3LCAxODUsIDE1NSwgMjA1LCAxNjUsIDIwNSwgNTQsIDIwNCwgMjQyLCAyMDQsIDIzMSwgMjA0LCAyMjAsIDIwNCwgMjA5LCAKKyAgICAyMDQsIDE5OCwgMjA0LCAxODcsIDIwNCwgMTc2LCAyMDUsIDE2NCwgMjA1LCAxNTMsIDIwNSwgMTQyLCAyMDUsIDEzMSwgCisgICAgMjA1LCAxMjAsIDIwNSwgMTA5LCAyMDUsIDk4LCAyNDcsIDEzMCwgMjE5LCAyNDEsIDgyLCAyNDgsIDEzLCAyMDEsIDI0NSwgCisgICAgOSwgMiwgMjIxLCA1NywgMjA5LCAxNDEsIDksIDIsIDIyMSwgNTcsIDExNSwgMjIxLCA1NywgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKKyAgICAxNjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjA2LCA2NSwgMjA1LCA4NywgMjA1LCA3NiwgCisgICAgMjA1LCA2NSwgMjA1LCA1MywgMjA1LCA0MiwgMjA1LCAzMSwgMjA1LCAyMCwgMjA1LCA5LCAyMDQsIDI1NCwgMjA0LCAyNDYsIAorICAgIDIwNCwgMjQ1LCAyMDQsIDI0NCwgMjA0LCAyNDMsIDIwNCwgMjQxLCAyMDQsIDI0MCwgMjA0LCAyMzksIDIwNCwgMjM4LCAKKyAgICAyMDQsIDIzNywgMjA0LCAyMzYsIDIwNCwgMjM1LCAyMDQsIDIzNCwgMjA0LCAyMzMsIDIwNCwgMjMyLCAyMDQsIDIzMCwgCisgICAgMjA0LCAyMjksIDIwNCwgMjI4LCAyMDQsIDIyNywgMjA0LCAyMjYsIDIwNCwgMjI1LCAyMDQsIDIyNCwgMjA0LCAyMjMsIAorICAgIDIwNCwgMjIyLCAyMDQsIDIyMSwgMjA0LCAyMTksIDIwNCwgMjE4LCAyMDQsIDIxNywgMjA0LCAyMTYsIDIwNCwgMjE1LCAKKyAgICAyMDQsIDIxNCwgMjA0LCAyMTMsIDIwNCwgMjEyLCAyMDQsIDIxMSwgMjA0LCAyMTAsIDIwNCwgMjA4LCAyMDQsIDIwNywgCisgICAgMjA0LCAyMDYsIDIwNCwgMjA1LCAyMDQsIDIwNCwgMjA0LCAyMDMsIDIwNCwgMjAyLCAyMDQsIDIwMSwgMjA0LCAyMDAsIAorICAgIDIwNCwgMTk5LCAyMDQsIDE5NywgMjA0LCAxOTYsIDIwNCwgMTk1LCAyMDQsIDE5NCwgMjA0LCAxOTMsIDIwNCwgMTkyLCAKKyAgICAyMDQsIDE5MSwgMjA0LCAxOTAsIDIwNCwgMTg5LCAyMDQsIDE4OCwgMjA0LCAxODYsIDIwNCwgMTg1LCAyMDQsIDE4NCwgCisgICAgMjA0LCAxODMsIDIwNCwgMTgyLCAyMDQsIDE4MSwgMjA0LCAxODAsIDIwNCwgMTc5LCAyMDQsIDE3OCwgMjA0LCAxNzcsIAorICAgIDIwNCwgMTc1LCAyMDQsIDE3NCwgMjA0LCAxNzMsIDIwNCwgMTcyLCAyMDQsIDE3MSwgMjA0LCAxNzAsIDIwNCwgMTY5LCAKKyAgICAyMDQsIDE2OCwgMjA0LCAxNjcsIDIwNCwgMTY2LCAyMDUsIDE2MywgMjA1LCAxNjIsIDIwNSwgMTYxLCAyMDUsIDE2MCwgCisgICAgMjA1LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE1NywgMjA1LCAxNTYsIDIwNSwgMTU1LCAyMDUsIDE1NCwgMjA1LCAxNTIsIAorICAgIDIwNSwgMTUxLCAyMDUsIDE1MCwgMjA1LCAxNDksIDIwNSwgMTQ4LCAyMDUsIDE0NywgMjA1LCAxNDYsIDIwNSwgMTQ1LCAKKyAgICAyMDUsIDE0NCwgMjA1LCAxNDMsIDIwNSwgMTQxLCAyMDUsIDE0MCwgMjA1LCAxMzksIDIwNSwgMTM4LCAyMDUsIDEzNywgCisgICAgMjA1LCAxMzYsIDIwNSwgMTM1LCAyMDUsIDEzNCwgMjA1LCAxMzMsIDIwNSwgMTMyLCAyMDUsIDEzMCwgMjA1LCAxMjksIAorICAgIDIwNSwgMTI4LCAyMDUsIDEyNywgMjA1LCAxMjYsIDIwNSwgMTI1LCAyMDUsIDEyNCwgMjA1LCAxMjMsIDIwNSwgMTIyLCAKKyAgICAyMDUsIDEyMSwgMjA1LCAxMTksIDIwNSwgMTE4LCAyMDUsIDExNywgMjA1LCAxMTYsIDIwNSwgMTE1LCAyMDUsIDExNCwgCisgICAgMjA1LCAxMTMsIDIwNSwgMTEyLCAyMDUsIDExMSwgMjA1LCAxMTAsIDIwNSwgMTA4LCAyMDUsIDEwNywgMjA1LCAxMDYsIAorICAgIDIwNSwgMTA1LCAyMDUsIDEwNCwgMjA1LCAxMDMsIDIwNSwgMTAyLCAyMDUsIDEwMSwgMjA1LCAxMDAsIDIwNSwgOTksIDIwNSwgCisgICAgOTcsIDIwNSwgOTYsIDIwNSwgOTUsIDIwNSwgOTQsIDIwNSwgOTMsIDIwNSwgOTIsIDIwNSwgOTEsIDIwNSwgOTAsIDIwNSwgCisgICAgODksIDIwNSwgODgsIDIwNSwgODYsIDIwNSwgODUsIDIwNSwgODQsIDIwNSwgODMsIDIwNSwgODIsIDIwNSwgODEsIDIwNSwgCisgICAgODAsIDIwNSwgNzksIDIwNSwgNzgsIDIwNSwgNzcsIDIwNSwgNzUsIDIwNSwgNzQsIDIwNSwgNzMsIDIwNSwgNzIsIDIwNSwgCisgICAgNzEsIDIwNSwgNzAsIDIwNSwgNjksIDIwNSwgNjgsIDIwNSwgNjcsIDIwNSwgNjYsIDIwNSwgNjQsIDIwNSwgNjMsIDIwNSwgCisgICAgNjIsIDIwNSwgNjEsIDIwNSwgNjAsIDIwNSwgNTksIDIwNSwgNTgsIDIwNSwgNTcsIDIwNSwgNTYsIDIwNSwgNTUsIDIwNSwgCisgICAgNTIsIDIwNSwgNTEsIDIwNSwgNTAsIDIwNSwgNDksIDIwNSwgNDgsIDIwNSwgNDcsIDIwNSwgNDYsIDIwNSwgNDUsIDIwNSwgCisgICAgNDQsIDIwNSwgNDMsIDIwNSwgNDEsIDIwNSwgNDAsIDIwNSwgMzksIDIwNSwgMzgsIDIwNSwgMzcsIDIwNSwgMzYsIDIwNSwgCisgICAgMzUsIDIwNSwgMzQsIDIwNSwgMzMsIDIwNSwgMzIsIDIwNSwgMzAsIDIwNSwgMjksIDIwNSwgMjgsIDIwNSwgMjcsIDIwNSwgCisgICAgMjYsIDIwNSwgMjUsIDIwNSwgMjQsIDIwNSwgMjMsIDIwNSwgMjIsIDIwNSwgMjEsIDIwNSwgMTksIDIwNSwgMTgsIDIwNSwgCisgICAgMTcsIDIwNSwgMTYsIDIwNSwgMTUsIDIwNSwgMTQsIDIwNSwgMTMsIDIwNSwgMTIsIDIwNSwgMTEsIDIwNSwgMTAsIDIwNSwgCisgICAgOCwgMjA1LCA3LCAyMDUsIDYsIDIwNSwgNSwgMjA1LCA0LCAyMDUsIDMsIDIwNSwgMiwgMjA1LCAxLCAyMDUsIDAsIDIwNCwgCisgICAgMjU1LCAyMDQsIDI1MywgMjA0LCAyNTIsIDIwNCwgMjUxLCAyMDQsIDI1MCwgMjA0LCAyNDksIDIwNCwgMjQ4LCAyMDQsIAorICAgIDI0NywgOCwgNiwgMSwgMzQsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MSwgCisgICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDE4OCwgMywgODAsIAorICAgIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIAorICAgIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAKKyAgICAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIAorICAgIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgCisgICAgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIAorICAgIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgCisgICAgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAKKyAgICAxNjUsIDgsIDUsIDEsIDIyMiwgMjA2LCAzLCAyMDgsIDIyOCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKKyAgICA1NiwgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCisgICAgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAKKyAgICAyNTMsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAKKyAgICA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCAKKyAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgCisgICAgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIyMCwgCisgICAgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MywgCisgICAgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIAorICAgIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKKyAgICAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAKKyAgICAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgCisgICAgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIAorICAgIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIwOCwgCisgICAgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgCisgICAgNjMsIDI1LCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIAorICAgIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIzMCwgMTg1LCAKKyAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjgsIAorICAgIDEzMSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjI2LCAxODYsIDMsIAorICAgIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIAorICAgIDgsIDUsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgCisgICAgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgCisgICAgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIAorICAgIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgCisgICAgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjM3LCAyNTMsIAorICAgIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgMjA3LCAKKyAgICAxNzQsIDIwNiwgMTY1LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY1LCAzLCAxNjUsIDgsIDUsIDEsIAorICAgIDIxNCwgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE0LCAxOTMsIDMsIDE2NSwgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgCisgICAgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgMTkzLCAzLCAxNjUsIDEwLCAyMTMsIDEyNywgODksIAorICAgIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAzMCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIAorICAgIDcwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMjksIDEwLCAyMTMsIDEyNywgCisgICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3MywgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKKyAgICA2OCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxMywgMTAsIDIxMywgMTI3LCA4OSwgMywgCisgICAgMjM3LCAxMjgsIDg3LCAzLCA3NCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDEwOSwgMTAsIAorICAgIDIxMywgMTI3LCAyMjEsIDE3OSwgMywgMjI5LCAxODksIDE3OSwgMSwgMjI5LCAxMTksIDQ0LCAxMDksIDIzMCwgNTQsIDQ0LCAKKyAgICAxMDksIDIyMiwgMjA1LCA0NCwgMTA5LCAyNDcsIDEyNSwgNDQsIDEwOSwgMjIxLCAxMywgNDQsIDEwOSwgMjA3LCAyNDQsIAorICAgIDQ0LCAxMDksIDIyMSwgMjI4LCA0NCwgMTA5LCAyMTAsIDY5LCA0NCwgMTA5LCAyMjMsIDE2MywgNDQsIDEwOSwgMjE5LCAKKyAgICAxODQsIDQ0LCAxMDksIDIyNiwgMTg1LCA0NCwgMTA5LCAyMDMsIDEyNCwgNDQsIDEwOSwgMTQ2LCA0NCwgMTA5LCAxNTksIAorICAgIDQ0LCAxMDksIDIwNiwgMTY0LCA0NCwgMTA5LCAyMjcsIDY5LCA0NCwgMTA5LCAyMjcsIDc4LCA0NCwgMTA5LCAyMTUsIDE4NiwgCisgICAgNDQsIDEwOSwgMjIxLCAyMTAsIDQ0LCAxMDksIDIzMCwgMTg0LCA0NCwgMTA5LCAyMTMsIDkyLCA0NCwgMTA5LCAyMTEsIAorICAgIDE2NywgNDQsIDEwOSwgMTk0LCA0NCwgMTA5LCAyMzcsIDE3MSwgNDQsIDEwOSwgMjI4LCAyMjQsIDQ0LCA0LCAyMzAsIDQxLCAKKyAgICA0NCwgNCwgMjI5LCAxMDAsIDQ0LCA0LCAyMjksIDg3LCA0NCwgNCwgMjI4LCAyMDksIDQ0LCA0LCAyMjgsIDE3NCwgNDQsIDQsIAorICAgIDIyOSwgMjAxLCA0NCwgNCwgMjI5LCAxOTgsIDQ0LCA0LCAyMzAsIDE4LCA0NCwgNCwgMjI5LCAyNiwgNDQsIDQsIDIyOSwgNiwgCisgICAgNDQsIDQsIDIyOSwgMjE5LCA0NCwgNCwgMjIyLCAyMDIsIDQ0LCA0LCAyMjIsIDE1MSwgNDQsIDQsIDIyMiwgMTQ3LCA0NCwgCisgICAgNCwgMjIyLCAxMTYsIDQ0LCA0LCAyMjIsIDEwOCwgNDQsIDQsIDIyMiwgMTkwLCA0NCwgNCwgMjIyLCAxODgsIDQ0LCA0LCAKKyAgICAyMjIsIDE5OSwgNDQsIDQsIDIyMiwgMTI4LCA0NCwgNCwgMjIyLCAxMjMsIDQ0LCA0LCAyMjIsIDE5MiwgNDQsIDQsIDI0NywgCisgICAgOTEsIDQ0LCA0LCAyNDYsIDc5LCA0NCwgNCwgMjQ2LCA2OSwgNDQsIDQsIDI0NSwgMTEwLCA0NCwgNCwgMjQ1LCA3NiwgNDQsIAorICAgIDQsIDI0NiwgMjM4LCA0NCwgNCwgMjQ2LCAyMzAsIDQ0LCA0LCAyNDcsIDgwLCA0NCwgNCwgMjQ1LCAyNTQsIDQ0LCA0LCAKKyAgICAyNDUsIDE4MCwgNDQsIDQsIDI0NywgMTUsIDQ0LCA0LCAyMjEsIDEwLCA0NCwgNCwgMjIwLCAyNDgsIDQ0LCA0LCAyMjAsIAorICAgIDI0MywgNDQsIDQsIDIyMCwgMjI2LCA0NCwgNCwgMjIwLCAyMTgsIDQ0LCA0LCAyMjEsIDEsIDQ0LCA0LCAyMjEsIDAsIDQ0LCAKKyAgICA0LCAyMjEsIDcsIDQ0LCA0LCAyMjAsIDIzMywgNDQsIDQsIDIyMCwgMjMwLCA0NCwgNCwgMjIxLCA0LCA0NCwgNCwgMjA3LCAKKyAgICAyNDAsIDQ0LCA0LCAyMDcsIDIyMCwgNDQsIDQsIDIwNywgMjE5LCA0NCwgNCwgMjA3LCAyMDgsIDQ0LCA0LCAyMDcsIDIwNSwgCisgICAgNDQsIDQsIDIwNywgMjM2LCA0NCwgNCwgMjA3LCAyMzUsIDQ0LCA0LCAyMDcsIDIzOSwgNDQsIDQsIDIwNywgMjE4LCA0NCwgCisgICAgNCwgMjA3LCAyMTcsIDQ0LCA0LCAyMDcsIDIzOCwgNDQsIDQsIDIyMSwgMjI2LCA0NCwgNCwgMjIxLCAyMTIsIDQ0LCA0LCAKKyAgICAyMjEsIDIxMSwgNDQsIDQsIDIyMSwgMTk1LCA0NCwgNCwgMjIxLCAxOTQsIDQ0LCA0LCAyMjEsIDIyMiwgNDQsIDQsIDIyMSwgCisgICAgMjIxLCA0NCwgNCwgMjIxLCAyMjUsIDQ0LCA0LCAyMjEsIDE5NywgNDQsIDQsIDIyMSwgMTk2LCA0NCwgNCwgMjIxLCAyMjQsIAorICAgIDQ0LCA0LCAyMTAsIDE4LCA0NCwgNCwgMjA5LCAyLCA0NCwgNCwgMjA4LCAyNDIsIDQ0LCA0LCAyMDcsIDIwMywgNDQsIDQsIAorICAgIDIwNywgMTY1LCA0NCwgNCwgMjA5LCAxODcsIDQ0LCA0LCAyMDksIDE3NiwgNDQsIDQsIDIwOSwgMjUwLCA0NCwgNCwgMTM1LCAKKyAgICA0NCwgNCwgMjA4LCAxNDgsIDQ0LCA0LCAyMDksIDIwNywgNDQsIDQsIDIyMywgMTA2LCA0NCwgNCwgMjIyLCAxMDAsIDQ0LCAKKyAgICA0LCAyMjIsIDc1LCA0NCwgNCwgMjIxLCA4NCwgNDQsIDQsIDIyMSwgMjUsIDQ0LCA0LCAyMjIsIDI0MCwgNDQsIDQsIDIyMiwgCisgICAgMjM1LCA0NCwgNCwgMjIzLCA5MiwgNDQsIDQsIDIyMSwgMTkxLCA0NCwgNCwgMjIxLCAxODAsIDQ0LCA0LCAyMjMsIDY1LCAKKyAgICA0NCwgNCwgMjE5LCAxNjgsIDQ0LCA0LCAyMTgsIDE2NywgNDQsIDQsIDIxOCwgMTI5LCA0NCwgNCwgMjE3LCAxOTEsIDQ0LCAKKyAgICA0LCAyMTcsIDE1NywgNDQsIDQsIDIxOSwgMzQsIDQ0LCA0LCAyMTksIDIzLCA0NCwgNCwgMjE5LCAxNDgsIDQ0LCA0LCAyMTgsIAorICAgIDY5LCA0NCwgNCwgMjE4LCA0NSwgNDQsIDQsIDIxOSwgNDgsIDQ0LCA0LCAyMjUsIDE3NSwgNDQsIDQsIDIyNCwgMTU1LCA0NCwgCisgICAgNCwgMjI0LCAxMjUsIDQ0LCA0LCAyMjMsIDI0NiwgNDQsIDQsIDIyMywgMTkyLCA0NCwgNCwgMjI1LCAyMCwgNDQsIDQsIAorICAgIDIyNSwgOCwgNDQsIDQsIDIyNSwgMTQwLCA0NCwgNCwgMjI0LCA4MiwgNDQsIDQsIDIyNCwgMzUsIDQ0LCA0LCAyMjUsIDY3LCAKKyAgICA0NCwgNCwgMjAzLCAxMTAsIDQ0LCA0LCAyMDMsIDExLCA0NCwgNCwgMjAzLCAyLCA0NCwgNCwgMjAyLCAyMTMsIDQ0LCA0LCAKKyAgICAyMDIsIDE4MSwgNDQsIDQsIDIwMywgNTIsIDQ0LCA0LCAyMDMsIDQ5LCA0NCwgNCwgMjAzLCA4OSwgNDQsIDQsIDIwMiwgCisgICAgMjQ3LCA0NCwgNCwgMjAyLCAyMzIsIDQ0LCA0LCAyMDMsIDYyLCA0NCwgNCwgMjE2LCAyMTYsIDQ0LCA0LCAyMTYsIDU3LCAKKyAgICA0NCwgNCwgMjE2LCAzLCA0NCwgNCwgMjE1LCAxNDUsIDQ0LCA0LCAyMTUsIDExNCwgNDQsIDQsIDIxNiwgMTU4LCA0NCwgNCwgCisgICAgMjE2LCAxMzUsIDQ0LCA0LCAyMTYsIDE5NywgNDQsIDQsIDIxNSwgMjI3LCA0NCwgNCwgMjE1LCAyMDgsIDQ0LCA0LCAyMTYsIAorICAgIDE2NywgNDQsIDQsIDIyOCwgMTEyLCA0NCwgNCwgMjI3LCAxNDgsIDQ0LCA0LCAyMjcsIDEzMCwgNDQsIDQsIDIyNiwgMjM5LCAKKyAgICA0NCwgNCwgMjI2LCAyMTAsIDQ0LCA0LCAyMjcsIDIzNCwgNDQsIDQsIDIyNywgMjI2LCA0NCwgNCwgMjI4LCA4NiwgNDQsIDQsIAorICAgIDIyNywgNDksIDQ0LCA0LCAyMjcsIDE4LCA0NCwgNCwgMjI3LCAyNTEsIDQ0LCA0LCAyMDYsIDg1LCA0NCwgNCwgMjA1LCAKKyAgICAyMzAsIDQ0LCA0LCAyMDUsIDIxNSwgNDQsIDQsIDIwNCwgMTYzLCA0NCwgNCwgMjA0LCAxNTYsIDQ0LCA0LCAyMDYsIDU1LCAKKyAgICA0NCwgNCwgMjA2LCA1MCwgNDQsIDQsIDIwNiwgODEsIDQ0LCA0LCAyMDUsIDE4OSwgNDQsIDQsIDIwNSwgMTc2LCA0NCwgNCwgCisgICAgMjA2LCA2MSwgNDQsIDQsIDIyNywgNjcsIDQ0LCA0LCAyMjcsIDYyLCA0NCwgNCwgMjI3LCA2MSwgNDQsIDQsIDIyNywgNTgsIAorICAgIDQ0LCA0LCAyMjcsIDU3LCA0NCwgNCwgMjI3LCA2NCwgNDQsIDQsIDIyNywgNjMsIDQ0LCA0LCAyMjcsIDY2LCA0NCwgNCwgCisgICAgMjI3LCA2MCwgNDQsIDQsIDIyNywgNTksIDQ0LCA0LCAyMjcsIDY1LCA0NCwgNCwgMjI3LCA3NiwgNDQsIDQsIDIyNywgNzEsIAorICAgIDQ0LCA0LCAyMjcsIDcwLCA0NCwgNCwgMjI3LCA1NCwgNDQsIDQsIDIyNywgNTMsIDQ0LCA0LCAyMjcsIDczLCA0NCwgNCwgCisgICAgMjI3LCA3MiwgNDQsIDQsIDIyNywgNzUsIDQ0LCA0LCAyMjcsIDU2LCA0NCwgNCwgMjI3LCA1NSwgNDQsIDQsIDIyNywgNzQsIAorICAgIDQ0LCA0LCAyMTUsIDE4NCwgNDQsIDQsIDIxNSwgMTczLCA0NCwgNCwgMjE1LCAxNzIsIDQ0LCA0LCAyMTUsIDE2NSwgNDQsIAorICAgIDQsIDIxNSwgMTU4LCA0NCwgNCwgMjE1LCAxODAsIDQ0LCA0LCAyMTUsIDE3OSwgNDQsIDQsIDIxNSwgMTgzLCA0NCwgNCwgCisgICAgMjE1LCAxNzEsIDQ0LCA0LCAyMTUsIDE3MCwgNDQsIDQsIDIxNSwgMTgyLCA0NCwgNCwgMjIxLCAyMDgsIDQ0LCA0LCAyMjEsIAorICAgIDIwMywgNDQsIDQsIDIyMSwgMjAyLCA0NCwgNCwgMjIxLCAxOTksIDQ0LCA0LCAyMjEsIDE5OCwgNDQsIDQsIDIyMSwgMjA1LCAKKyAgICA0NCwgNCwgMjIxLCAyMDQsIDQ0LCA0LCAyMjEsIDIwNywgNDQsIDQsIDIyMSwgMjAxLCA0NCwgNCwgMjIxLCAyMDAsIDQ0LCAKKyAgICA0LCAyMjEsIDIwNiwgNDQsIDQsIDIzMCwgMTgwLCA0NCwgNCwgMjMwLCAxNDEsIDQ0LCA0LCAyMzAsIDEzNCwgNDQsIDQsIAorICAgIDIzMCwgODIsIDQ0LCA0LCAyMzAsIDY0LCA0NCwgNCwgMjMwLCAxNjEsIDQ0LCA0LCAyMzAsIDE1OSwgNDQsIDQsIDIzMCwgCisgICAgMTc0LCA0NCwgNCwgMjMwLCAxMDEsIDQ0LCA0LCAyMzAsIDkxLCA0NCwgNCwgMjMwLCAxNjcsIDQ0LCA0LCAyMTMsIDg1LCAKKyAgICA0NCwgNCwgMjEzLCAxMSwgNDQsIDQsIDIxMywgNiwgNDQsIDQsIDIxMiwgMTk5LCA0NCwgNCwgMjEyLCAxODIsIDQ0LCA0LCAKKyAgICAyMTMsIDQzLCA0NCwgNCwgMjEzLCA0MSwgNDQsIDQsIDIxMywgNzQsIDQ0LCA0LCAyMTIsIDI0MiwgNDQsIDQsIDIxMiwgCisgICAgMjM2LCA0NCwgNCwgMjEzLCA1MiwgNDQsIDQsIDIxMSwgMTYzLCA0NCwgNCwgMjExLCAxMzIsIDQ0LCA0LCAyMTEsIDEyOCwgCisgICAgNDQsIDQsIDIxMSwgMTE5LCA0NCwgNCwgMjExLCAxMTYsIDQ0LCA0LCAyMTEsIDEzOCwgNDQsIDQsIDIxMSwgMTM3LCA0NCwgCisgICAgNCwgMjExLCAxNjIsIDQ0LCA0LCAyMTEsIDEyNCwgNDQsIDQsIDIxMSwgMTIzLCA0NCwgNCwgMjExLCAxNDAsIDQ0LCA0LCAKKyAgICAyMTUsIDMzLCA0NCwgNCwgMjEyLCAxNjIsIDQ0LCA0LCAyMTIsIDE0MiwgNDQsIDQsIDIxMSwgMTAsIDQ0LCA0LCAyMTAsIAorICAgIDE3OSwgNDQsIDQsIDIxNCwgMTc3LCA0NCwgNCwgMjE0LCAxNjUsIDQ0LCA0LCAyMTUsIDE4LCA0NCwgNCwgMjEyLCAxMywgCisgICAgNDQsIDQsIDIxMSwgMjUwLCA0NCwgNCwgMjE0LCAyMTcsIDQ0LCA0LCAyMzcsIDE1NywgNDQsIDQsIDIzNywgMywgNDQsIDQsIAorICAgIDIzNiwgMjM5LCA0NCwgNCwgMjM2LCAyNiwgNDQsIDQsIDIzNiwgMSwgNDQsIDQsIDIzNywgNjcsIDQ0LCA0LCAyMzcsIDQ4LCAKKyAgICA0NCwgNCwgMjM3LCAxNDcsIDQ0LCA0LCAyMzYsIDEzNiwgNDQsIDQsIDIzNiwgMTE3LCA0NCwgNCwgMjM3LCA3NiwgNDQsIDQsIAorICAgIDIyOCwgMjIzLCA0NCwgNCwgMjI4LCAyMjIsIDQ0LCA0LCAyMjgsIDIxNywgNDQsIDQsIDIyOCwgMjE2LCA0NCwgNCwgMjI4LCAKKyAgICAyMTMsIDQ0LCA0LCAyMjgsIDIxMiwgNDQsIDQsIDIyOCwgMjE5LCA0NCwgNCwgMjI4LCAyMTgsIDQ0LCA0LCAyMjgsIDIyMSwgCisgICAgNDQsIDQsIDIyOCwgMjE1LCA0NCwgNCwgMjI4LCAyMTQsIDQ0LCA0LCAyMjgsIDIyMCwgNDQsIDQsIDIxMiwgMjA1LCAxNDAsIAorICAgIDEwOSwgMiwgMjAzLCA3NSwgMTQwLCAxMDksIDIsIDIxNiwgMTg2LCAxNDAsIDEwOSwgMiwgMjE2LCAxMDIsIDExNCwgMSwgCisgICAgMjA3LCA5NSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE3MywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTQ0LCA4NSwgCisgICAgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAyNiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTE1LCA4NSwgMTA5LCAyLCAKKyAgICAyNDUsIDI0OSwgMjIyLCAxMjgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDcsIDkyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCisgICAgMjQ2LCAxOTksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDUsIDI1NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NiwgMTE2LCAKKyAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIwLCAyMzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDQsIDIxMiwgODUsIDEwOSwgCisgICAgMiwgMjQ1LCAyNDksIDIwNywgMjI5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQzLCAxMTMsIDg1LCAxMDksIDIsIDI0NSwgCisgICAgMjQ5LCAyMDcsIDIyNCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwMSwgMjAxLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjEwLCAKKyAgICAyMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwOSwgMTA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTM1LCA4NSwgMTA5LCAKKyAgICAyLCAyNDUsIDI0OSwgMjA5LCA0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMSwgMTkxLCA4NSwgMTA5LCAyLCAyNDUsIAorICAgIDI0OSwgMjQ5LCAzMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMjA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAKKyAgICA2OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMTgwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI0LCA4MiwgODUsIAorICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIwMiwgMjQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAyMjcsIDg1LCAxMDksIDIsIAorICAgIDI0NSwgMjQ5LCAyMjcsIDQ5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA1LCAxODksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKKyAgICAyMTMsIDkwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjExLCAxNjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDM2LCAKKyAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTUyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI4LCAxMTMsIDg1LCAyMiwgMiwgCisgICAgMjQ1LCAyNDksIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgCisgICAgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCA5NSwgODUsIAorICAgIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCAxMDYsIDg1LCAyMiwgMiwgMjIwLCAzOSwgODUsIDIyLCAyLCAyNTEsIAorICAgIDI0MiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDIwMywgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgMTcyLCAxLCAyNDgsIAorICAgIDc5LCAyMjIsIDExNiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIAorICAgIDEsIDI0OCwgNzksIDIyMiwgMjAzLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDExNiwgCisgICAgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAxLCAyNTEsIDU3LCAyNDYsIAorICAgIDIzOCwgNjcsIDEsIDI1MSwgNTcsIDIwNywgMjAzLCA2NywgMSwgMjUxLCA1NywgMTM1LCA2NywgMSwgMjUxLCA1NywgMjE5LCAKKyAgICAxODQsIDY1LCAxLCAyNDAsIDE5OCwgMjQwLCAxOTcsIDI0NSwgMTg4LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDAsIAorICAgIDE5OCwgMjQ1LCAxODgsIDE0MywgMTQyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tfb2Zmc2V0MVtdID0gewogICAgIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgCiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCi0gICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgCi0gICAgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgCi0gICAgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAKLSAgICAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgCi0gICAgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDEyOSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTMwLCAxMzEsIAotICAgIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAKLSAgICAxNDYsIDE0NywgODcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNTMsIDg3LCAKLSAgICAxNTQsIDE1NSwgMTU2LCA4NywgMTU3LCA4NywgMTU4LCA4NywgODcsIDg3LCAxNTksIDg3LCA4NywgODcsIDE2MCwgMTYxLCAKLSAgICAxNjIsIDE2MywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTY0LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAotICAgIDE2OSwgMTcwLCAxNzEsIDg3LCAxNzIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCi0gICAgMTc5LCAxODAsIDE4MSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4MiwgCi0gICAgMTgzLCAxODQsIDE4NSwgMTg2LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxODcsIDE4OCwgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICAxODksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCi0gICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCA4NywgMTk1LCAKLSAgICA4NywgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgMjA0LCAyMDUsIDg3LCA4NywgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDg3LCAyMTEsIDIxMiwgMjEzLCAyMTQsIAotICAgIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjAsIDIyMSwgCi0gICAgMjIyLCAyMjMsIDIyNCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKLSAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMjI1LCA4NywgMjI2LCAyMjcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAotICAgIDg3LCA4NywgODcsIDg3LCAKKyAgICAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTQsIDU1LCA1NiwgNTcsIDU4LCAKKyAgICA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY2LCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKKyAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDUyLCA4NywgNTIsIDg4LCAKKyAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA5OCwgOTksIDEwMCwgCisgICAgMTAxLCAxMDIsIDEwMywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNCwgMTA1LCAxMDYsIAorICAgIDEwNywgMTA4LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICAxMDksIDExMCwgMTExLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCAxMTIsIDExMywgMTE0LCAxMTUsIDUyLCA1MiwgNTIsIDExNiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTksIDEyMCwgCisgICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzEsIDUyLCAxMzIsIDEzMywgMTM0LCAKKyAgICAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQyLCAxNDMsIDE0NCwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NSwgMTQ2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NywgMTQ4LCAxNDksIAorICAgIDE1MCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBwaHJhc2Vib29rX29mZnNldDJbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKLSAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU4LCA2MCwgNjIsIDY0LCA2NiwgNjksIDcyLCAKLSAgICA3NSwgNzgsIDgyLCA4NiwgOTEsIDk2LCAxMDEsIDEwNSwgMTEwLCAxMTUsIDEyMCwgMTI0LCAxMjksIDEzNCwgMTM4LCAxNDIsIAotICAgIDE0NywgMTUxLCAxNTYsIDE2MSwgMTY1LCAxNzAsIDE3NSwgMTc5LCAxODQsIDE4OSwgMTk0LCAxOTksIDIwNCwgMjA3LCAKLSAgICAyMTEsIDIxNCwgMjE4LCAyMjEsIDIyNSwgMjI5LCAyMzQsIDIzOSwgMjQ0LCAyNDgsIDI1MywgMjU4LCAyNjMsIDI2NywgCi0gICAgMjcyLCAyNzcsIDI4MSwgMjg1LCAyOTAsIDI5NCwgMjk5LCAzMDQsIDMwOCwgMzEzLCAzMTgsIDMyMiwgMzI3LCAzMzIsIAotICAgIDMzNywgMzQyLCAzNDcsIDM1MSwgMzU0LCAzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OSwgMzYzLCAzNjgsIAotICAgIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OCwgMzkxLCAzOTcsIDQwNSwgNDA4LCA0MTIsIDQxNSwgNDE3LCAKLSAgICA0MjAsIDQyMywgNDI2LCA0MjksIDQzMywgNDM2LCA0MzksIDQ0MywgNDQ1LCA0NDgsIDQ1NCwgNDYyLCA0NjksIDQ3NiwgCi0gICAgNDgzLCA0ODgsIDQ5NSwgNTAxLCA1MDgsIDUxNCwgNTIxLCA1MjksIDUzNCwgNTQyLCA1NDksIDU1NSwgNTYyLCA1NjksIAotICAgIDU3NywgNTg0LCA1OTIsIDYwMCwgNjA1LCA2MTIsIDYxOSwgNjI1LCA2MzIsIDYzOCwgNjQ1LCA2NDgsIDY1NCwgNjYxLCAKLSAgICA2NjcsIDY3NCwgNjgxLCA2ODgsIDY5MywgNzAwLCA3MDcsIDcxMywgNzIwLCA3MjYsIDczMywgNzQxLCA3NDYsIDc1NCwgCi0gICAgNzYxLCA3NjcsIDc3NCwgNzgxLCA3ODksIDc5NiwgODA0LCA4MTIsIDgxNywgODI0LCA4MzEsIDgzNywgODQ0LCA4NTAsIAotICAgIDg1NywgODYwLCA4NjYsIDg3MywgODc5LCA4ODYsIDg5MywgOTAwLCA5MDUsIDkxMywgOTIwLCA5MjcsIDkzNCwgOTQxLCAKLSAgICA5NDgsIDk1NSwgOTYyLCA5NjksIDk3NywgOTg1LCA5OTMsIDEwMDEsIDEwMDksIDEwMTcsIDEwMjUsIDEwMzMsIDEwNDAsIAotICAgIDEwNDcsIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjUsIAotICAgIDExMzMsIDExNDEsIDExNDksIDExNTcsIDExNjUsIDExNzMsIDExODEsIDExODksIDExOTcsIDEyMDQsIDEyMTEsIDEyMTgsIAotICAgIDEyMjUsIDEyMzMsIDEyNDEsIDEyNDksIDEyNTcsIDEyNjUsIDEyNzMsIDEyODEsIDEyODcsIDEyOTIsIDEyOTcsIDEzMDUsIAotICAgIDEzMTMsIDEzMjEsIDEzMjksIDEzMzQsIDEzNDEsIDEzNDgsIDEzNTYsIDEzNjQsIDEzNzIsIDEzODAsIDEzOTAsIDE0MDAsIAotICAgIDE0MDcsIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzYsIDE0NDQsIDE0NTIsIDE0NjAsIDE0NzEsIDE0NzYsIDE0ODEsIDE0ODgsIAotICAgIDE0OTUsIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MjgsIDE1MzMsIDE1NDAsIDE1NDcsIDE1NTUsIDE1NjMsIDE1NzEsIAotICAgIDE1NzksIDE1ODYsIDE1OTMsIDE2MDEsIDE2MDksIDE2MTcsIDE2MjUsIDE2MzMsIDE2NDEsIDE2NDksIDE2NTcsIDE2NjUsIAotICAgIDE2NzMsIDE2ODAsIDE2ODcsIDE2OTMsIDE2OTksIDE3MDYsIDE3MTMsIDE3MjAsIDE3MjcsIDE3MzUsIDE3NDMsIDE3NTAsIAotICAgIDE3NTcsIDE3NjQsIDE3NzEsIDE3NzksIDE3ODcsIDE3OTUsIDE4MDMsIDE4MTEsIDE4MTgsIDE4MjUsIDE4MzMsIDE4NDEsIAotICAgIDE4NDksIDE4NTcsIDE4NjMsIDE4NjksIDE4NzUsIDE4ODIsIDE4ODksIDE4OTQsIDE4OTksIDE5MDQsIDE5MTEsIDE5MTgsIAotICAgIDE5MjUsIDE5MzIsIDE5NDAsIDE5NDgsIDE5NTUsIDE5NjEsIDE5NjYsIDE5NzEsIDE5NzgsIDE5ODUsIDE5OTIsIDE5OTcsIAotICAgIDIwMDIsIDIwMDcsIDIwMTQsIDIwMjEsIDIwMjgsIDIwMzUsIDIwNDIsIDIwNDgsIDIwNTYsIDIwNjYsIDIwNzQsIDIwODEsIAotICAgIDIwODgsIDIwOTMsIDIwOTgsIDIxMDUsIDIxMTIsIDIxMTYsIDIxMjEsIDIxMjYsIDIxMzEsIDIxMzksIDIxNDgsIDIxNTUsIAotICAgIDIxNjIsIDIxNzEsIDIxNzgsIDIxODUsIDIxOTAsIDIxOTcsIDIyMDQsIDIyMTEsIDIyMTgsIDIyMjUsIDIyMzAsIDIyMzcsIAotICAgIDIyNDQsIDIyNTIsIDIyNTcsIDIyNjIsIDIyNjcsIDIyNzcsIDIyODEsIDIyODcsIDIyOTMsIDIyOTksIDIzMDUsIDIzMTMsIAotICAgIDIzMjYsIDIzMzQsIDIzMzksIDIzNDksIDIzNTQsIDIzNTksIDIzNjksIDIzNzQsIDIzODEsIDIzODgsIDIzOTYsIDI0MDQsIAotICAgIDI0MTEsIDI0MTgsIDI0MjUsIDI0MzIsIDI0NDIsIDI0NTIsIDI0NjEsIDI0NzAsIDI0ODAsIDI0OTAsIDI1MDAsIDI1MTAsIAotICAgIDI1MTYsIDI1MjYsIDI1MzYsIDI1NDYsIDI1NTYsIDI1NjQsIDI1NzIsIDI1NzksIDI1ODYsIDI1OTQsIDI2MDIsIDI2MTAsIAotICAgIDI2MTgsIDI2MjUsIDI2MzIsIDI2NDIsIDI2NTIsIDI2NjAsIDI2NjgsIDI2NzYsIDI2ODEsIDI2OTEsIDI2OTYsIDI3MDMsIAotICAgIDI3MTAsIDI3MTUsIDI3MjAsIDI3MjgsIDI3MzYsIDI3NDYsIDI3NTYsIDI3NjMsIDI3NzAsIDI3NzksIDI3ODgsIDI3OTYsIAotICAgIDI4MDQsIDI4MTMsIDI4MjIsIDI4MzAsIDI4MzgsIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODQsIDI4OTQsIDI5MDIsIAotICAgIDI5MTAsIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTYsIDI5NjYsIDI5NzQsIDI5ODIsIDI5OTEsIDMwMDAsIDMwMDksIAotICAgIDMwMTgsIDMwMjcsIDMwMzYsIDMwNDEsIDMwNDYsIDMwNTQsIDMwNjIsIDMwNzIsIDMwODAsIDMwODUsIDMwOTAsIDMwOTcsIAotICAgIDMxMDQsIDMxMTEsIDMxMTgsIDMxMjUsIDMxMzIsIDMxNDIsIDMxNTIsIDMxNjIsIDMxNzIsIDMxNzksIDMxODYsIDMxOTYsIAotICAgIDMyMDYsIDMyMTQsIDMyMjIsIDMyMzAsIDMyMzgsIDMyNDYsIDMyNTMsIDMyNjAsIDMyNjcsIDMyNzMsIDMyODAsIDMyODcsIAotICAgIDMyOTQsIDMzMDMsIDMzMTMsIDMzMjMsIDMzMzAsIDMzMzcsIDMzNDMsIDMzNDgsIDMzNTUsIDMzNjEsIDMzNjcsIDMzNzQsIAotICAgIDMzODEsIDMzOTIsIDM0MDIsIDM0MDksIDM0MTYsIDM0MjMsIDM0MzAsIDM0MzYsIDM0NDEsIDM0NDgsIDM0NTQsIDM0NTksIAotICAgIDM0NjcsIDM0NzUsIDM0ODIsIDM0ODgsIDM0OTMsIDM1MDAsIDM1MDUsIDM1MTIsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDYsIAotICAgIDM1NTIsIDM1NTgsIDM1NjMsIDM1NzAsIDM1NzcsIDM1ODQsIDM1OTEsIDM1OTgsIDM2MDMsIDM2MDgsIDM2MTcsIDM2MjUsIAotICAgIDM2MzQsIDM2MzksIDM2NDUsIDM2NTYsIDM2NjMsIDM2NzEsIDM2ODAsIDM2ODYsIDM2OTIsIDM2OTgsIDM3MDUsIDM3MTAsIAotICAgIDM3MTYsIDM3MjcsIDM3MzYsIDM3NDUsIDM3NTMsIDM3NjEsIDM3NzEsIDM3NzYsIDM3ODMsIDM3OTAsIDM3OTUsIDM4MDcsIAotICAgIDM4MTYsIDM4MjQsIDM4MzEsIDM4NDAsIDM4NDUsIDM4NTAsIDM4NTcsIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODQsIDM4OTMsIAotICAgIDM5MDEsIDM5MDYsIDM5MTQsIDM5MjAsIDM5MjgsIDM5MzYsIDM5NDIsIDM5NDgsIDM5NTQsIDM5NjEsIDM5NjksIDM5NzUsIAotICAgIDM5ODMsIDM5OTAsIDM5OTUsIDQwMDIsIDQwMTAsIDQwMjAsIDQwMjcsIDQwMzQsIDQwNDQsIDQwNTEsIDQwNTgsIDQwNjgsIAotICAgIDQwNzUsIDQwODIsIDQwODksIDQwOTUsIDQxMDEsIDQxMTEsIDQxMjQsIDQxMjksIDQxMzYsIDQxNDEsIDQxNDUsIDQxNTEsIAotICAgIDQxNjAsIDQxNjcsIDQxNzIsIDQxNzcsIDQxODEsIDQxODYsIDQxOTIsIDQxOTYsIDQyMDIsIDQyMDgsIDQyMTQsIDQyMjAsIAotICAgIDQyMjgsIDQyMzMsIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTQsIDQyNTYsIDQyNjEsIDQyNjUsIDQyNzEsIDQyNzcsIDQyODMsIAotICAgIDQyODgsIDQyOTUsIDQzMDIsIDQzMDgsIDQzMTUsIDQzMjMsIDQzMzEsIDQzMzYsIDQzNDEsIDQzNDUsIDQzNTAsIDQzNTIsIAotICAgIDQzNTQsIDQzNTcsIDQzNTksIDQzNjEsIDQzNjYsIDQzNzEsIDQzNzcsIDQzODIsIDQzODYsIDQzOTEsIDQzOTYsIDQ0MDUsIAotICAgIDQ0MTEsIDQ0MTYsIDQ0MjIsIDQ0MjcsIDQ0MzMsIDQ0NDEsIDQ0NDksIDQ0NTMsIDQ0NTcsIDQ0NjIsIDQ0NjgsIDQ0NzQsIAotICAgIDQ0ODAsIDQ0ODYsIDQ0OTEsIDQ0OTksIDQ1MDgsIDQ1MTcsIDQ1MjEsIDQ1MjcsIDQ1MzQsIDQ1NDEsIDQ1NDgsIDQ1NTUsIAotICAgIDQ1NTksIDQ1NjQsIDQ1NjksIDQ1NzQsIDQ1NzksIDQ1ODQsIDQ1ODYsIDQ1ODksIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIAotICAgIDQ2MDUsIDQ2MDksIDQ2MTUsIDQ2MTgsIDQ2MjMsIDQ2MjksIDQ2MzUsIDQ2MzgsIDQ2NDMsIDQ2NDksIDQ2NTMsIDQ2NTksIAotICAgIDQ2NjUsIDQ2NzEsIDQ2NzcsIDQ2ODIsIDQ2ODcsIDQ2OTIsIDQ2OTUsIDQ3MDEsIDQ3MDYsIDQ3MTEsIDQ3MTUsIDQ3MjAsIAotICAgIDQ3MjYsIDQ3MzIsIDQ3MzUsIDQ3MzksIDQ3NDMsIDQ3NDcsIDQ3NTAsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjksIDQ3NzMsIAotICAgIDQ3NzksIDQ3ODMsIDQ3ODksIDQ3OTMsIDQ3OTcsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTgsIDQ4MjQsIDQ4MzEsIDQ4MzcsIAotICAgIDQ4NDMsIDQ4NDksIDQ4NTIsIDQ4NTYsIDQ4NjAsIDQ4NjMsIDQ4NjcsIDQ4NzIsIDQ4NzcsIDQ4ODEsIDQ4ODUsIDQ4OTEsIAotICAgIDQ4OTUsIDQ4OTksIDQ5MDQsIDQ5MTAsIDQ5MTUsIDQ5MjEsIDQ5MjUsIDQ5MzIsIDQ5MzcsIDQ5NDIsIDQ5NDcsIDQ5NTIsIAotICAgIDQ5NTgsIDQ5NjEsIDQ5NjUsIDQ5NzAsIDQ5NzUsIDQ5ODQsIDQ5OTAsIDQ5OTUsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIAotICAgIDUwMTcsIDUwMjEsIDUwMjYsIDUwMjksIDUwMzUsIDUwNDAsIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzEsIAotICAgIDUwNzcsIDUwODMsIDUwODgsIDUwOTMsIDUwOTksIDUxMDUsIDUxMTEsIDUxMTYsIDUxMjEsIDUxMjgsIDUxMzUsIDUxMzksIAotICAgIDUxNDUsIDUxNTIsIDAsIDAsIDUxNTksIDUxNjIsIDUxNzEsIDUxODAsIDUxOTEsIDAsIDAsIDAsIDAsIDAsIDUxOTUsIAotICAgIDUxOTgsIDUyMDMsIDUyMTEsIDUyMTYsIDUyMjQsIDUyMzIsIDAsIDUyNDAsIDAsIDUyNDgsIDUyNTYsIDUyNjQsIDUyNzUsIAotICAgIDUyODAsIDUyODUsIDUyOTAsIDUyOTUsIDUzMDAsIDUzMDUsIDUzMTAsIDUzMTUsIDUzMjAsIDUzMjUsIDUzMzAsIDUzMzUsIAotICAgIDUzNDAsIDUzNDUsIDUzNTAsIDUzNTUsIDAsIDUzNjAsIDUzNjUsIDUzNzAsIDUzNzUsIDUzODAsIDUzODUsIDUzOTAsIAotICAgIDUzOTUsIDU0MDMsIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTQsIDU0NTksIDU0NjQsIDU0NjksIDU0NzQsIAotICAgIDU0NzksIDU0ODQsIDU0ODksIDU0OTQsIDU0OTksIDU1MDQsIDU1MDksIDU1MTQsIDU1MTksIDU1MjQsIDU1MjksIDU1MzQsIAotICAgIDU1MzksIDU1NDUsIDU1NTAsIDU1NTUsIDU1NjAsIDU1NjUsIDU1NzAsIDU1NzUsIDU1ODAsIDU1ODgsIDU1OTYsIDU2MDQsIAotICAgIDU2MTIsIDU2MjAsIDU2MjUsIDU2MjksIDU2MzMsIDU2NDAsIDU2NTAsIDU2NjAsIDU2NjQsIDU2NjgsIDU2NzIsIDU2NzgsIAotICAgIDU2ODUsIDU2ODksIDU2OTQsIDU2OTgsIDU3MDMsIDU3MDcsIDU3MTIsIDU3MTYsIDU3MjEsIDU3MjYsIDU3MzEsIDU3MzYsIAotICAgIDU3NDEsIDU3NDYsIDU3NTEsIDU3NTYsIDU3NjEsIDU3NjYsIDU3NzEsIDU3NzYsIDU3ODEsIDU3ODYsIDU3OTEsIDU3OTUsIAotICAgIDU3OTksIDU4MDUsIDU4MDksIDU4MTQsIDU4MjAsIDU4MjgsIDU4MzMsIDU4MzgsIDU4NDUsIDU4NTAsIDU4NTUsIDU4NjIsIAotICAgIDU4NzEsIDU4ODAsIDU4OTEsIDU4OTksIDU5MDQsIDU5MDksIDU5MTQsIDU5MjEsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDIsIAotICAgIDU5NDcsIDU5NTIsIDU5NTcsIDU5NjIsIDU5NzAsIDU5NzYsIDU5ODEsIDU5ODUsIDU5OTAsIDU5OTUsIDYwMDAsIDYwMDUsIAotICAgIDYwMTAsIDYwMTUsIDYwMjAsIDYwMjQsIDYwMzAsIDYwMzQsIDYwMzksIDYwNDQsIDYwNDksIDYwNTMsIDYwNTgsIDYwNjMsIAotICAgIDYwNjgsIDYwNzMsIDYwNzcsIDYwODIsIDYwODYsIDYwOTEsIDYwOTYsIDYxMDEsIDYxMDYsIDYxMTIsIDYxMTcsIDYxMjMsIAotICAgIDYxMjcsIDYxMzIsIDYxMzYsIDYxNDAsIDYxNDUsIDYxNTAsIDYxNTUsIDYxNjAsIDYxNjUsIDYxNzAsIDYxNzUsIDYxNzksIAotICAgIDYxODUsIDYxODksIDYxOTQsIDYxOTksIDYyMDQsIDYyMDgsIDYyMTMsIDYyMTgsIDYyMjMsIDYyMjgsIDYyMzIsIDYyMzcsIAotICAgIDYyNDEsIDYyNDYsIDYyNTEsIDYyNTYsIDYyNjEsIDYyNjcsIDYyNzIsIDYyNzgsIDYyODIsIDYyODcsIDYyOTEsIDYyOTksIAotICAgIDYzMDQsIDYzMDksIDYzMTQsIDYzMjEsIDYzMjYsIDYzMzIsIDYzMzcsIDYzNDIsIDYzNDcsIDYzNTIsIDYzNTcsIDYzNjIsIAotICAgIDYzNzAsIDYzNzYsIDYzODEsIDYzODYsIDYzOTEsIDYzOTYsIDY0MDEsIDY0MDcsIDY0MTMsIDY0MjAsIDY0MjcsIDY0MzYsIAotICAgIDY0NDUsIDY0NTIsIDY0NTksIDY0NjgsIDY0NzcsIDY0ODIsIDY0ODcsIDY0OTIsIDY0OTcsIDY1MDIsIDY1MDcsIDY1MTIsIAotICAgIDY1MTcsIDY1MjgsIDY1MzksIDY1NDQsIDY1NDksIDY1NTYsIDY1NjMsIDY1NzEsIDY1NzksIDY1ODQsIDY1ODksIDY1OTQsIAotICAgIDY1OTksIDY2MDMsIDY2MDcsIDY2MTEsIDY2MTcsIDY2MjMsIDY2MjcsIDY2MzQsIDY2MzksIDY2NDksIDY2NTksIDY2NjUsIAotICAgIDY2NzEsIDY2NzksIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTAsIDY3MTcsIDY3MjYsIDY3MzUsIDY3NDMsIDY3NTEsIDY3NTksIAotICAgIDY3NjcsIDY3NzUsIDY3ODMsIDY3OTEsIDY3OTksIDY4MDYsIDY4MTMsIDY4MTksIDY4MjUsIDY4MzMsIDY4NDEsIDY4NDgsIAotICAgIDY4NTUsIDY4NjQsIDY4NzMsIDY4NzksIDY4ODUsIDY4OTMsIDY5MDEsIDY5MDksIDY5MTcsIDY5MjMsIDY5MjksIDY5MzcsIAotICAgIDY5NDUsIDY5NTMsIDY5NjEsIDY5NjgsIDY5NzUsIDY5ODMsIDY5OTEsIDY5OTksIDcwMDcsIDcwMTIsIDcwMTcsIDcwMjQsIAotICAgIDcwMzEsIDcwNDEsIDcwNTEsIDcwNTUsIDcwNjMsIDcwNzEsIDcwNzgsIDcwODUsIDcwOTMsIDcxMDEsIDcxMDgsIDcxMTUsIAotICAgIDcxMjMsIDcxMzEsIDcxMzgsIDcxNDUsIDcxNTMsIDcxNjEsIDcxNjYsIDcxNzMsIDcxODAsIDcxODcsIDcxOTQsIDcyMDAsIAotICAgIDcyMDYsIDcyMTQsIDcyMjIsIDcyMjcsIDcyMzIsIDcyNDAsIDcyNDgsIDcyNTYsIDcyNjQsIDcyNzIsIDcyODAsIDcyODcsIAotICAgIDcyOTQsIDczMDIsIDczMTAsIDczMTgsIDczMjYsIDczMzMsIDczNDAsIDczNDYsIDczNTIsIDczNjEsIDczNzAsIDczNzcsIAotICAgIDczODQsIDczOTEsIDczOTgsIDc0MDUsIDc0MTIsIDc0MTksIDc0MjYsIDc0MzQsIDc0NDIsIDc0NTAsIDc0NTgsIDc0NjYsIAotICAgIDc0NzQsIDc0ODQsIDc0OTQsIDc1MDEsIDc1MDgsIDc1MTUsIDc1MjIsIDc1MjksIDc1MzYsIDc1NDMsIDc1NTAsIDc1NTcsIAotICAgIDc1NjQsIDc1NzEsIDc1NzgsIDc1ODUsIDc1OTIsIDc1OTksIDc2MDYsIDc2MTMsIDc2MjAsIDc2MjcsIDc2MzQsIDc2NDEsIAotICAgIDc2NDgsIDc2NTUsIDc2NjIsIDc2NjcsIDc2NzIsIDc2NzcsIDc2ODIsIDc2ODcsIDc2OTIsIDc2OTcsIDc3MDIsIDc3MDcsIAotICAgIDc3MTIsIDc3MTgsIDc3MjQsIDc3MzMsIDc3NDIsIDc3NTEsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDc3OTIsIDc3OTcsIDc4MDIsIDc4MDcsIDc4MTIsIDc4MTcsIDc4MjIsIDc4MjcsIDc4MzIsIAotICAgIDc4MzYsIDc4NDEsIDc4NDYsIDc4NTEsIDc4NTYsIDc4NjEsIDc4NjYsIDc4NzEsIDc4NzYsIDc4ODEsIDc4ODYsIDc4OTEsIAotICAgIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzAsIDc5MzUsIDc5NDAsIDc5NDUsIDc5NTAsIAotICAgIDc5NTUsIDc5NjAsIDc5NjUsIDc5NzAsIDc5NzUsIDAsIDAsIDc5ODAsIDc5ODcsIDc5OTAsIDc5OTQsIDc5OTgsIDgwMDEsIAotICAgIDgwMDUsIDAsIDgwMDksIDgwMTQsIDgwMTksIDgwMjQsIDgwMjksIDgwMzQsIDgwMzksIDgwNDQsIDgwNDksIDgwNTMsIAotICAgIDgwNTgsIDgwNjMsIDgwNjgsIDgwNzMsIDgwNzgsIDgwODMsIDgwODgsIDgwOTMsIDgwOTgsIDgxMDMsIDgxMDgsIDgxMTMsIAotICAgIDgxMTgsIDgxMjMsIDgxMjgsIDgxMzMsIDgxMzgsIDgxNDMsIDgxNDcsIDgxNTIsIDgxNTcsIDgxNjIsIDgxNjcsIDgxNzIsIAotICAgIDgxNzcsIDgxODIsIDgxODcsIDgxOTIsIDgxOTcsIDAsIDgyMDQsIDgyMDksIDAsIDAsIDAsIDAsIDgyMTIsIDAsIDgyMTYsIAotICAgIDgyMjEsIDgyMjYsIDgyMzEsIDgyMzgsIDgyNDUsIDgyNTAsIDgyNTUsIDgyNjAsIDgyNjUsIDgyNzAsIDgyNzUsIDgyODAsIAotICAgIDgyODcsIDgyOTIsIDgyOTksIDgzMDYsIDgzMTEsIDgzMTgsIDgzMjMsIDgzMjgsIDgzMzMsIDgzNDAsIDgzNDUsIDgzNTAsIAotICAgIDgzNTcsIDgzNjYsIDgzNzEsIDgzNzYsIDgzODEsIDgzODYsIDgzOTIsIDgzOTcsIDg0MDQsIDg0MTEsIDg0MTgsIDg0MjMsIAotICAgIDg0MjgsIDg0MzMsIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTgsIDg0NjMsIDg0NzEsIDg0NzYsIDg0ODEsIDg0ODYsIDg0OTEsIAotICAgIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTgsIDg1MjQsIDg1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1MzgsIDg1NDIsIAotICAgIDg1NDYsIDg1NTAsIDg1NTQsIDg1NTgsIDg1NjIsIDg1NjYsIDg1NzAsIDg1NzQsIDg1NzgsIDg1ODMsIDg1ODcsIDg1OTEsIAotICAgIDg1OTYsIDg2MDAsIDg2MDUsIDg2MDksIDg2MTMsIDg2MTcsIDg2MjIsIDg2MjYsIDg2MzEsIDg2MzUsIDg2MzksIDg2NDMsIAotICAgIDg2NDcsIDAsIDAsIDAsIDAsIDAsIDg2NTEsIDg2NTgsIDg2NjYsIDg2NzMsIDg2NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDg2ODMsIDg2ODYsIDg2OTAsIDg2OTUsIDg2OTksIDAsIDg3MDMsIDg3MDksIDg3MTUsIDg3MTgsIAotICAgIDg3MjUsIDg3MzQsIDg3MzcsIDg3NDAsIDg3NDUsIDg3NTEsIDg3NTUsIDg3NjMsIDg3NjksIDg3NzUsIDg3ODMsIDg3ODcsIAotICAgIDg3OTIsIDg4MDMsIDg4MDgsIDg4MTIsIDg4MTYsIDg4MjAsIDg4MjMsIDAsIDg4MjYsIDg4MzMsIDg4MzcsIDg4NDMsIAotICAgIDg4NDcsIDg4NTQsIDg4NjAsIDg4NjcsIDg4NzMsIDg4NzksIDg4ODMsIDg4ODcsIDg4OTMsIDg4OTcsIDg5MDEsIDg5MDUsIAotICAgIDg5MDksIDg5MTMsIDg5MTcsIDg5MjEsIDg5MjUsIDg5MjksIDg5MzMsIDg5MzcsIDg5NDEsIDg5NDUsIDg5NDksIDg5NTMsIAotICAgIDg5NTcsIDg5NjEsIDg5NjksIDg5NzcsIDg5ODcsIDg5OTYsIDkwMDUsIDkwMDgsIDkwMTIsIDkwMTYsIDkwMjAsIDkwMjQsIAotICAgIDkwMjgsIDkwMzIsIDkwMzYsIDkwNDAsIDkwNDUsIDkwNDksIDkwNTIsIDkwNTUsIDkwNTgsIDkwNjEsIDkwNjQsIDkwNjcsIAotICAgIDkwNzAsIDkwNzMsIDkwNzcsIDkwODAsIDkwODMsIDkwODgsIDkwOTMsIDkwOTksIDkxMDIsIDkxMDksIDkxMTgsIDkxMjMsIAotICAgIDkxMjgsIDkxMzUsIDkxNDAsIDkxNDUsIDkxNDksIDkxNTMsIDkxNTcsIDkxNjEsIDkxNjUsIDkxNjksIDkxNzMsIDkxNzcsIAotICAgIDkxODEsIDkxODUsIDkxOTAsIDkxOTUsIDkyMDIsIDkyMDgsIDkyMTQsIDkyMjAsIDkyMjUsIDkyMzMsIDkyNDEsIDkyNDYsIAotICAgIDkyNTIsIDkyNTgsIDkyNjQsIDkyNzAsIDkyNzQsIDkyNzgsIDkyODIsIDkyODksIDkyOTksIDkzMDMsIDkzMDcsIDkzMTEsIAotICAgIDkzMTcsIDkzMjUsIDkzMjksIDkzMzMsIDkzNDAsIDkzNDQsIDkzNDgsIDkzNTIsIDkzNTksIDkzNjYsIDkzNzgsIDkzODIsIAotICAgIDkzODYsIDkzOTAsIDk0MDAsIDk0MDksIDk0MTMsIDk0MjEsIDk0MjgsIDk0MzUsIDk0NDQsIDk0NTUsIDk0NjMsIDk0NjcsIAotICAgIDk0NzYsIDk0ODcsIDk0OTUsIDk1MDgsIDk1MTYsIDk1MjQsIDk1MzIsIDk1NDAsIDk1NDYsIDk1NTUsIDk1NjIsIDk1NjYsIAotICAgIDk1NzQsIDk1NzgsIDk1ODUsIDk1OTMsIDk1OTcsIDk2MDMsIDk2MTAsIDk2MTcsIDk2MjEsIDk2MjksIDk2MzMsIDk2NDAsIAotICAgIDk2NDQsIDk2NTIsIDk2NTYsIDk2NjQsIDk2NzIsIDk2NzksIDk2ODcsIDk2OTUsIDk3MDIsIDk3MDgsIDk3MTIsIDk3MTksIAotICAgIDk3MjcsIDk3MzMsIDk3NDAsIDk3NDcsIDk3NTMsIDk3NjIsIDk3NzAsIDk3NzcsIDk3ODMsIDk3ODcsIDk3OTAsIDk3OTQsIAotICAgIDk4MDAsIDk4MDgsIDk4MTIsIDk4MTgsIDk4MjQsIDk4MzEsIDk4MzgsIDk4NDEsIDk4NDgsIDk4NTMsIDk4NjEsIDk4NjYsIAotICAgIDk4NzAsIDk4ODMsIDk4OTYsIDk5MDIsIDk5MDksIDk5MTQsIDk5MjAsIDk5MjUsIDk5MzEsIDk5NDEsIDk5NDgsIDk5NTcsIAotICAgIDk5NjcsIDk5NzMsIDk5NzgsIDk5ODMsIDk5ODcsIDk5OTEsIDk5OTYsIDEwMDAxLCAxMDAwNywgMTAwMTUsIDEwMDIzLCAKLSAgICAxMDAzNCwgMTAwMzksIDEwMDQ4LCAxMDA1NywgMTAwNjQsIDEwMDcwLCAxMDA3NiwgMTAwODIsIDEwMDg4LCAxMDA5NCwgCi0gICAgMTAxMDAsIDEwMTA2LCAxMDExMiwgMTAxMTgsIDEwMTI1LCAxMDEzMiwgMTAxMzksIDEwMTQ1LCAxMDE1MywgMTAxNjIsIAotICAgIDEwMTY4LCAxMDE3NSwgMTAxODIsIDEwMTg3LCAxMDE5MiwgMTAxOTYsIDEwMjAzLCAxMDIxMCwgMTAyMTksIDEwMjI4LCAKLSAgICAxMDIzMSwgMTAyMzYsIDEwMjQxLCAwLCAxMDI0NiwgMTAyNTAsIDEwMjU0LCAxMDI2MCwgMTAyNjQsIDEwMjY4LCAxMDI3NCwgCi0gICAgMTAyNzgsIDEwMjg2LCAxMDI5MCwgMTAyOTQsIDEwMjk4LCAxMDMwMiwgMTAzMDYsIDEwMzEyLCAxMDMxNiwgMTAzMjIsIAotICAgIDEwMzI2LCAxMDMzMCwgMTAzMzQsIDEwMzM4LCAxMDM0MiwgMTAzNDcsIDEwMzUwLCAxMDM1NCwgMTAzNjAsIDEwMzY0LCAKLSAgICAxMDM2OCwgMTAzNzIsIDEwMzc2LCAxMDM4MCwgMTAzODYsIDEwMzkyLCAxMDM5OCwgMTA0MDIsIDEwNDA2LCAxMDQxMSwgCi0gICAgMTA0MTUsIDEwNDE5LCAxMDQyNCwgMTA0MjgsIDEwNDMyLCAxMDQzOSwgMTA0NDYsIDEwNDUwLCAxMDQ1NCwgMTA0NTksIAotICAgIDEwNDYzLCAxMDQ2NywgMTA0NzAsIDEwNDc1LCAxMDQ3OCwgMTA0ODEsIDEwNDg2LCAxMDQ5MSwgMTA0OTUsIDEwNDk5LCAKLSAgICAxMDUwNSwgMTA1MTEsIDEwNTE0LCAwLCAwLCAxMDUxNywgMTA1MjMsIDEwNTI5LCAxMDUzNSwgMTA1NDUsIDEwNTU3LCAKLSAgICAxMDU2OSwgMTA1ODYsIDEwNTk4LCAxMDYwOSwgMTA2MTcsIDEwNjI0LCAxMDYzNSwgMTA2NTAsIDEwNjYxLCAxMDY2NywgCi0gICAgMTA2NzYsIDEwNjg0LCAxMDY5NiwgMTA3MDYsIDEwNzE0LCAxMDcyNiwgMTA3MzMsIDEwNzQxLCAxMDc1MywgMTA3NTksIAotICAgIDEwNzY1LCAxMDc3MywgMTA3ODEsIDEwNzg5LCAxMDc5NSwgMTA4MDUsIDEwODEyLCAxMDgyMiwgMTA4MzIsIDEwODQ1LCAKLSAgICAxMDg1OSwgMTA4NzMsIDEwODgzLCAxMDg5NCwgMTA5MDUsIDEwOTE4LCAxMDkzMSwgMTA5NDUsIDEwOTU3LCAxMDk2OSwgCi0gICAgMTA5ODIsIDEwOTk1LCAxMTAwNywgMTEwMjAsIDExMDI5LCAxMTAzNywgMTEwNDIsIDExMDQ3LCAxMTA1MiwgMTEwNTcsIAotICAgIDExMDYyLCAxMTA2NywgMTEwNzIsIDExMDc3LCAxMTA4MiwgMTEwODcsIDExMDkyLCAxMTA5NywgMTExMDIsIDExMTA3LCAKLSAgICAxMTExMiwgMTExMTcsIDExMTIyLCAxMTEyNywgMTExMzIsIDExMTM3LCAxMTE0MiwgMTExNDcsIDExMTUyLCAxMTE1NywgCi0gICAgMTExNjIsIDExMTY3LCAxMTE3MiwgMTExNzcsIDExMTgyLCAxMTE4NywgMTExOTIsIDExMTk3LCAxMTIwMSwgMTEyMDYsIAotICAgIDExMjExLCAxMTIxNiwgMTEyMjEsIDExMjI2LCAxMTIzMCwgMTEyMzQsIDExMjM4LCAxMTI0MiwgMTEyNDYsIDExMjUwLCAKLSAgICAxMTI1NCwgMTEyNTgsIDExMjYyLCAxMTI2NiwgMTEyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDExMjc1LCAxMTI4MCwgMTEyODQsIDExMjg4LCAxMTI5MiwgMTEyOTYsIDExMzAwLCAxMTMwNCwgMTEzMDgsIDExMzEyLCAKLSAgICAxMTMxNiwgMTEzMjAsIDExMzI1LCAxMTMyOSwgMTEzMzMsIDExMzM3LCAxMTM0MiwgMTEzNDYsIDExMzUxLCAxMTM1NiwgCi0gICAgMTEzNjEsIDExMzY1LCAxMTM3MCwgMTEzNzUsIDExMzgwLCAxMTM4NSwgMTEzODksIDExMzk0LCAxMTM5OCwgMTE0MDMsIAotICAgIDExNDA4LCAxMTQxMiwgMTE0MTcsIDExNDI0LCAxMTQyOCwgMTE0MzMsIDExNDM3LCAxMTQ0MSwgMTE0NDYsIDExNDUwLCAKLSAgICAxMTQ1NywgMTE0NjQsIDExNDcxLCAxMTQ3NywgMTE0ODUsIDExNDkzLCAxMTUwMiwgMTE1MTAsIDExNTE3LCAxMTUyNCwgCi0gICAgMTE1MzIsIDExNTM4LCAxMTU0NCwgMTE1NTAsIDExNTU2LCAxMTU2MywgMTE1NjgsIDExNTcyLCAxMTU3NywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTE1ODEsIDExNTg2LCAxMTU5MSwgMTE1OTYsIDExNjAxLCAxMTYwNiwgMTE2MTEsIDExNjE2LCAxMTYyMSwgCi0gICAgMTE2MjYsIDExNjMxLCAxMTYzNiwgMTE2NDEsIDExNjQ2LCAxMTY1MSwgMTE2NTYsIDExNjYxLCAxMTY2NiwgMTE2NzEsIAotICAgIDExNjc2LCAxMTY4MSwgMTE2ODYsIDExNjkxLCAxMTY5NiwgMTE3MDEsIDExNzA2LCAxMTcxMSwgMTE3MTksIDExNzI2LCAKLSAgICAxMTczMiwgMTE3MzcsIDExNzQ1LCAxMTc1MiwgMTE3NTgsIDExNzY1LCAxMTc3MSwgMTE3NzYsIDExNzgzLCAxMTc5MCwgCi0gICAgMTE3OTYsIDExODAxLCAxMTgwNiwgMTE4MTIsIDExODE3LCAxMTgyMiwgMTE4MjgsIDAsIDAsIDExODMzLCAxMTgzOSwgCi0gICAgMTE4NDUsIDExODUxLCAxMTg1NywgMTE4NjMsIDExODY5LCAxMTg3NCwgMTE4ODIsIDExODg4LCAxMTg5NCwgMTE5MDAsIAotICAgIDExOTA2LCAxMTkxMiwgMTE5MjAsIDAsIDExOTI2LCAxMTkzMSwgMTE5MzYsIDExOTQxLCAxMTk0NiwgMTE5NTEsIDExOTU2LCAKLSAgICAxMTk2MSwgMTE5NjYsIDExOTcxLCAxMTk3NiwgMTE5ODEsIDExOTg2LCAxMTk5MSwgMTE5OTYsIDEyMDAxLCAxMjAwNiwgCi0gICAgMTIwMTEsIDEyMDE2LCAxMjAyMSwgMTIwMjYsIDEyMDMxLCAxMjAzNiwgMTIwNDEsIDEyMDQ2LCAxMjA1MSwgMTIwNTYsIAotICAgIDEyMDYxLCAwLCAwLCAxMjA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OSwgNjEsIDY0LCA2NiwgNjgsIDcxLCA3NCwgCisgICAgNzcsIDgwLCA4NCwgODgsIDkzLCA5OCwgMTAzLCAxMDcsIDExMiwgMTE3LCAxMjIsIDEyNiwgMTMxLCAxMzYsIDE0MCwgMTQ1LCAKKyAgICAxNTAsIDE1NCwgMTU5LCAxNjQsIDE2OCwgMTcyLCAxNzcsIDE4MSwgMTg2LCAxOTEsIDE5NiwgMjAxLCAyMDYsIDIwOSwgCisgICAgMjEzLCAyMTYsIDIyMCwgMjIzLCAyMjcsIDIzMSwgMjM2LCAyNDEsIDI0NiwgMjUwLCAyNTUsIDI2MCwgMjY1LCAyNjksIAorICAgIDI3NCwgMjc5LCAyODMsIDI4OCwgMjkzLCAyOTcsIDMwMiwgMzA3LCAzMTEsIDMxNSwgMzIwLCAzMjQsIDMyOSwgMzM0LCAKKyAgICAzMzksIDM0NCwgMzQ5LCAzNTMsIDM1NiwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjIsIDM2NiwgMzcxLCAKKyAgICAzNzQsIDM3NywgMzgwLCAzODMsIDM4NiwgMzg5LCAzOTEsIDM5NCwgNDAwLCA0MDgsIDQxMSwgNDE1LCA0MTgsIDQyMCwgCisgICAgNDIzLCA0MjYsIDQyOSwgNDMyLCA0MzYsIDQzOSwgNDQyLCA0NDUsIDQ0NywgNDUwLCA0NTYsIDQ2NCwgNDcxLCA0NzgsIAorICAgIDQ4NSwgNDkwLCA0OTcsIDUwMywgNTEwLCA1MTcsIDUyNCwgNTMyLCA1MzcsIDU0NSwgNTUyLCA1NTgsIDU2NSwgNTcyLCAKKyAgICA1ODAsIDU4NywgNTk1LCA2MDMsIDYwOCwgNjE2LCA2MjMsIDYyOSwgNjM2LCA2NDMsIDY1MCwgNjUzLCA2NTksIDY2NiwgCisgICAgNjcyLCA2NzksIDY4NiwgNjkzLCA2OTgsIDcwNCwgNzExLCA3MTcsIDcyNCwgNzMxLCA3MzgsIDc0NiwgNzUxLCA3NTksIAorICAgIDc2NiwgNzcyLCA3NzksIDc4NiwgNzk0LCA4MDEsIDgwOSwgODE3LCA4MjIsIDgzMCwgODM3LCA4NDMsIDg1MCwgODU3LCAKKyAgICA4NjQsIDg2NywgODczLCA4ODAsIDg4NiwgODkzLCA5MDAsIDkwNywgOTEyLCA5MjAsIDkyNywgOTM0LCA5NDEsIDk0OCwgCisgICAgOTU1LCA5NjIsIDk2OSwgOTc2LCA5ODQsIDk5MiwgMTAwMCwgMTAwOCwgMTAxNiwgMTAyNCwgMTAzMiwgMTA0MCwgMTA0NywgCisgICAgMTA1NCwgMTA2MSwgMTA2OCwgMTA3NSwgMTA4MiwgMTA4OSwgMTA5NiwgMTEwMywgMTExMCwgMTExNywgMTEyNCwgMTEzMiwgCisgICAgMTE0MCwgMTE0OCwgMTE1NiwgMTE2NCwgMTE3MiwgMTE4MCwgMTE4OCwgMTE5NiwgMTIwNCwgMTIxMSwgMTIxOCwgMTIyNiwgCisgICAgMTIzNCwgMTI0MiwgMTI1MCwgMTI1OCwgMTI2NiwgMTI3NCwgMTI4MiwgMTI5MCwgMTI5NiwgMTMwMSwgMTMwNiwgMTMxNCwgCisgICAgMTMyMiwgMTMzMCwgMTMzOCwgMTM0MywgMTM1MCwgMTM1NywgMTM2NSwgMTM3MywgMTM4MSwgMTM4OSwgMTM5OCwgMTQwNywgCisgICAgMTQxNCwgMTQyMSwgMTQyOCwgMTQzNSwgMTQ0MywgMTQ1MSwgMTQ1OSwgMTQ2NywgMTQ3OCwgMTQ4MywgMTQ4OCwgMTQ5NSwgCisgICAgMTUwMiwgMTUwOSwgMTUxNiwgMTUyMywgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NywgMTU1NCwgMTU2MiwgMTU3MCwgMTU3OCwgCisgICAgMTU4NiwgMTU5MywgMTYwMCwgMTYwOCwgMTYxNiwgMTYyNCwgMTYzMiwgMTY0MCwgMTY0OCwgMTY1NiwgMTY2NCwgMTY3MiwgCisgICAgMTY4MCwgMTY4NywgMTY5NCwgMTcwMSwgMTcwOCwgMTcxNSwgMTcyMiwgMTcyOSwgMTczNiwgMTc0NCwgMTc1MiwgMTc1OSwgCisgICAgMTc2NiwgMTc3MywgMTc4MCwgMTc4OCwgMTc5NiwgMTgwNCwgMTgxMiwgMTgyMCwgMTgyNywgMTgzNCwgMTg0MiwgMTg1MCwgCisgICAgMTg1OCwgMTg2NiwgMTg3MSwgMTg3NywgMTg4MywgMTg5MCwgMTg5NywgMTkwMiwgMTkwNywgMTkxMiwgMTkxOSwgMTkyNiwgCisgICAgMTkzMywgMTk0MCwgMTk0OCwgMTk1NiwgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NiwgMTk5MywgMjAwMCwgMjAwNSwgCisgICAgMjAxMCwgMjAxNSwgMjAyMiwgMjAyOSwgMjAzNiwgMjA0MywgMjA1MCwgMjA1NywgMjA2NSwgMjA3NSwgMjA4MywgMjA5MCwgCisgICAgMjA5NywgMjEwMiwgMjEwNywgMjExNCwgMjEyMSwgMjEyNSwgMjEzMCwgMjEzNSwgMjE0MCwgMjE0OCwgMjE1NywgMjE2NCwgCisgICAgMjE3MSwgMjE4MCwgMjE4NywgMjE5NCwgMjE5OSwgMjIwNiwgMjIxMywgMjIyMCwgMjIyNywgMjIzNCwgMjIzOSwgMjI0NiwgCisgICAgMjI1MywgMjI2MSwgMjI2NiwgMjI3MSwgMjI3NiwgMjI4NiwgMjI5MCwgMjI5NiwgMjMwMiwgMjMwOCwgMjMxNCwgMjMyMiwgCisgICAgMjMzNSwgMjM0MywgMjM0OCwgMjM1OCwgMjM2MywgMjM2OCwgMjM3OCwgMjM4MywgMjM5MCwgMjM5NywgMjQwNSwgMjQxMywgCisgICAgMjQyMCwgMjQyNywgMjQzNCwgMjQ0MSwgMjQ1MSwgMjQ2MSwgMjQ3MCwgMjQ3OSwgMjQ4OSwgMjQ5OSwgMjUwOSwgMjUxOSwgCisgICAgMjUyNSwgMjUzNSwgMjU0NSwgMjU1NSwgMjU2NSwgMjU3MywgMjU4MSwgMjU4OCwgMjU5NSwgMjYwMywgMjYxMSwgMjYxOSwgCisgICAgMjYyNywgMjYzNCwgMjY0MSwgMjY1MSwgMjY2MSwgMjY2OSwgMjY3NywgMjY4NSwgMjY5MCwgMjcwMCwgMjcwNSwgMjcxMiwgCisgICAgMjcxOSwgMjcyNCwgMjcyOSwgMjczNywgMjc0NSwgMjc1NSwgMjc2NSwgMjc3MiwgMjc3OSwgMjc4OCwgMjc5NywgMjgwNSwgCisgICAgMjgxMywgMjgyMiwgMjgzMSwgMjgzOSwgMjg0NywgMjg1NiwgMjg2NSwgMjg3NCwgMjg4MywgMjg5MywgMjkwMywgMjkxMSwgCisgICAgMjkxOSwgMjkyOCwgMjkzNywgMjk0NiwgMjk1NSwgMjk2NSwgMjk3NSwgMjk4MywgMjk5MSwgMzAwMCwgMzAwOSwgMzAxOCwgCisgICAgMzAyNywgMzAzNiwgMzA0NSwgMzA1MCwgMzA1NSwgMzA2MywgMzA3MSwgMzA4MSwgMzA4OSwgMzA5NCwgMzA5OSwgMzEwNiwgCisgICAgMzExMywgMzEyMCwgMzEyNywgMzEzNCwgMzE0MSwgMzE1MSwgMzE2MSwgMzE3MSwgMzE4MSwgMzE4OCwgMzE5NSwgMzIwNSwgCisgICAgMzIxNSwgMzIyMywgMzIzMSwgMzIzOSwgMzI0NywgMzI1NSwgMzI2MiwgMzI2OSwgMzI3NiwgMzI4MiwgMzI4OSwgMzI5NiwgCisgICAgMzMwMywgMzMxMiwgMzMyMiwgMzMzMiwgMzMzOSwgMzM0NiwgMzM1MiwgMzM1NywgMzM2NCwgMzM3MCwgMzM3NiwgMzM4MywgCisgICAgMzM5MCwgMzQwMSwgMzQxMSwgMzQxOCwgMzQyNSwgMzQzMiwgMzQzOSwgMzQ0NSwgMzQ1MCwgMzQ1NywgMzQ2MywgMzQ2OCwgCisgICAgMzQ3NiwgMzQ4NCwgMzQ5MSwgMzQ5NywgMzUwMiwgMzUwOSwgMzUxNCwgMzUyMSwgMzUzMCwgMzUzOSwgMzU0OCwgMzU1NSwgCisgICAgMzU2MSwgMzU2NywgMzU3MiwgMzU3OSwgMzU4NiwgMzU5MywgMzYwMCwgMzYwNywgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCisgICAgMzY0MywgMzY0OCwgMzY1NSwgMzY2NiwgMzY3MywgMzY4MSwgMzY5MCwgMzY5NiwgMzcwMiwgMzcwOCwgMzcxNSwgMzcyMCwgCisgICAgMzcyNiwgMzczNywgMzc0NiwgMzc1NSwgMzc2MywgMzc3MSwgMzc4MSwgMzc4NiwgMzc5MywgMzgwMCwgMzgwNSwgMzgxNywgCisgICAgMzgyNiwgMzgzNCwgMzg0MSwgMzg1MCwgMzg1NSwgMzg2MCwgMzg2NywgMzg3NCwgMzg4MSwgMzg4OCwgMzg5NCwgMzkwMywgCisgICAgMzkxMSwgMzkxNiwgMzkyNCwgMzkzMCwgMzkzOCwgMzk0NiwgMzk1MiwgMzk1OCwgMzk2NCwgMzk3MSwgMzk3OSwgMzk4NSwgCisgICAgMzk5MywgNDAwMCwgNDAwNSwgNDAxMiwgNDAyMCwgNDAzMCwgNDAzNywgNDA0NCwgNDA1NCwgNDA2MSwgNDA2OCwgNDA3OCwgCisgICAgNDA4NSwgNDA5MiwgNDA5OSwgNDEwNSwgNDExMSwgNDEyMSwgNDEzNCwgNDEzOSwgNDE0NiwgNDE1MSwgNDE1NSwgNDE2MSwgCisgICAgNDE3MCwgNDE3NywgNDE4MiwgNDE4NywgNDE5MSwgNDE5NiwgNDIwMiwgNDIwNiwgNDIxMiwgNDIxOCwgNDIyNCwgNDIzMCwgCisgICAgNDIzOCwgNDI0MywgNDI0OCwgNDI1MywgNDI1OCwgNDI2NCwgNDI2NiwgNDI3MSwgNDI3NSwgNDI4MSwgNDI4NywgNDI5MywgCisgICAgNDI5OCwgNDMwNSwgNDMxMiwgNDMxOCwgNDMyNSwgNDMzMywgNDM0MSwgNDM0NiwgNDM1MSwgNDM1NSwgNDM2MCwgNDM2MiwgCisgICAgNDM2NCwgNDM2NywgNDM2OSwgNDM3MiwgNDM3NywgNDM4MiwgNDM4OCwgNDM5MywgNDM5NywgNDQwMSwgNDQwNiwgNDQxNSwgCisgICAgNDQyMSwgNDQyNiwgNDQzMiwgNDQzNywgNDQ0MywgNDQ1MSwgNDQ1OSwgNDQ2MywgNDQ2NywgNDQ3MiwgNDQ3OCwgNDQ4NCwgCisgICAgNDQ5MCwgNDQ5NiwgNDUwMSwgNDUwOCwgNDUxNiwgNDUyNCwgNDUyOSwgNDUzNSwgNDU0MiwgNDU0OSwgNDU1NiwgNDU2MywgCisgICAgNDU2NywgNDU3MiwgNDU3NywgNDU4MiwgNDU4NywgNDU5MiwgNDU5NSwgNDU5OCwgNDYwMSwgNDYwNCwgNDYwNywgNDYxMCwgCisgICAgNDYxNCwgNDYxOCwgNDYyNCwgNDYyNywgNDYzMiwgNDYzOCwgNDY0NCwgNDY0NywgNDY1MiwgNDY1OCwgNDY2MiwgNDY2OCwgCisgICAgNDY3NCwgNDY4MCwgNDY4NiwgNDY5MSwgNDY5NiwgNDcwMSwgNDcwNCwgNDcxMCwgNDcxNSwgNDcyMCwgNDcyNCwgNDcyOSwgCisgICAgNDczNSwgNDc0MSwgNDc0NCwgNDc0OCwgNDc1MiwgNDc1NiwgNDc1OSwgNDc2MiwgNDc2NywgNDc3MSwgNDc3OCwgNDc4MiwgCisgICAgNDc4OCwgNDc5MiwgNDc5OCwgNDgwMiwgNDgwNiwgNDgxMCwgNDgxNSwgNDgyMCwgNDgyNywgNDgzMywgNDg0MCwgNDg0NiwgCisgICAgNDg1MiwgNDg1OCwgNDg2MSwgNDg2NSwgNDg2OSwgNDg3MywgNDg3NywgNDg4MiwgNDg4NywgNDg5MSwgNDg5NSwgNDkwMSwgCisgICAgNDkwNSwgNDkwOSwgNDkxNCwgNDkyMCwgNDkyNSwgNDkzMSwgNDkzNSwgNDk0MiwgNDk0NywgNDk1MSwgNDk1NiwgNDk2MSwgCisgICAgNDk2NywgNDk3MCwgNDk3NCwgNDk3OSwgNDk4NCwgNDk5MywgNDk5OSwgNTAwNCwgNTAwOCwgNTAxMywgNTAxNywgNTAyMiwgCisgICAgNTAyNiwgNTAzMCwgNTAzNSwgNTAzOSwgNTA0NSwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MCwgNTA3NSwgNTA4MSwgCisgICAgNTA4NywgNTA5MywgNTA5OSwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyNywgNTEzMiwgNTEzOSwgNTE0NiwgNTE1MCwgCisgICAgNTE1NiwgNTE2MywgMCwgMCwgNTE3MCwgNTE3MywgNTE4MiwgNTE5MSwgNTIwMiwgNTIwNiwgMCwgMCwgMCwgMCwgNTIxMSwgCisgICAgNTIxNCwgNTIxOSwgNTIyNywgNTIzMiwgNTI0MCwgNTI0OCwgMCwgNTI1NiwgMCwgNTI2NCwgNTI3MiwgNTI4MCwgNTI5MSwgCisgICAgNTI5NiwgNTMwMSwgNTMwNiwgNTMxMSwgNTMxNiwgNTMyMSwgNTMyNiwgNTMzMSwgNTMzNiwgNTM0MSwgNTM0NiwgNTM1MSwgCisgICAgNTM1NiwgNTM2MSwgNTM2NiwgNTM3MSwgMCwgNTM3NiwgNTM4MSwgNTM4NiwgNTM5MSwgNTM5NiwgNTQwMSwgNTQwNiwgCisgICAgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1MSwgNTQ1OSwgNTQ3MCwgNTQ3NSwgNTQ4MCwgNTQ4NSwgNTQ5MCwgCisgICAgNTQ5NSwgNTUwMCwgNTUwNSwgNTUxMCwgNTUxNSwgNTUyMCwgNTUyNSwgNTUzMCwgNTUzNSwgNTU0MCwgNTU0NSwgNTU1MCwgCisgICAgNTU1NSwgNTU2MSwgNTU2NiwgNTU3MSwgNTU3NiwgNTU4MSwgNTU4NiwgNTU5MSwgNTU5NiwgNTYwNCwgNTYxMiwgNTYyMCwgCisgICAgNTYyOCwgNTYzNiwgNTY0MSwgNTY0NSwgNTY0OSwgNTY1NiwgNTY2NiwgNTY3NiwgNTY4MCwgNTY4NCwgNTY4OCwgNTY5NCwgCisgICAgNTcwMSwgNTcwNSwgNTcxMCwgNTcxNCwgNTcxOSwgNTcyMywgNTcyOCwgNTczMiwgNTczNywgNTc0MiwgNTc0NywgNTc1MiwgCisgICAgNTc1NywgNTc2MiwgNTc2NywgNTc3MiwgNTc3NywgNTc4MiwgNTc4NywgNTc5MiwgNTc5NywgNTgwMiwgNTgwNywgNTgxMSwgCisgICAgNTgxNSwgNTgyMSwgNTgyNSwgNTgzMCwgNTgzNiwgNTg0NCwgNTg0OSwgNTg1NCwgNTg2MSwgNTg2NiwgNTg3MSwgNTg3OCwgCisgICAgNTg4NywgNTg5NiwgNTkwNywgNTkxNSwgNTkyMCwgNTkyNSwgNTkzMCwgNTkzNywgNTk0MiwgNTk0OCwgNTk1MywgNTk1OCwgCisgICAgNTk2MywgNTk2OCwgNTk3MywgNTk3OCwgNTk4NiwgNTk5MiwgNTk5NywgNjAwMSwgNjAwNiwgNjAxMSwgNjAxNiwgNjAyMSwgCisgICAgNjAyNiwgNjAzMSwgNjAzNiwgNjA0MCwgNjA0NiwgNjA1MCwgNjA1NSwgNjA2MCwgNjA2NSwgNjA2OSwgNjA3NCwgNjA3OSwgCisgICAgNjA4NCwgNjA4OSwgNjA5MywgNjA5OCwgNjEwMiwgNjEwNywgNjExMiwgNjExNywgNjEyMiwgNjEyOCwgNjEzMywgNjEzOSwgCisgICAgNjE0MywgNjE0OCwgNjE1MiwgNjE1NiwgNjE2MSwgNjE2NiwgNjE3MSwgNjE3NiwgNjE4MSwgNjE4NiwgNjE5MSwgNjE5NSwgCisgICAgNjIwMSwgNjIwNSwgNjIxMCwgNjIxNSwgNjIyMCwgNjIyNCwgNjIyOSwgNjIzNCwgNjIzOSwgNjI0NCwgNjI0OCwgNjI1MywgCisgICAgNjI1NywgNjI2MiwgNjI2NywgNjI3MiwgNjI3NywgNjI4MywgNjI4OCwgNjI5NCwgNjI5OCwgNjMwMywgNjMwNywgNjMxNSwgCisgICAgNjMyMCwgNjMyNSwgNjMzMCwgNjMzNywgNjM0MiwgNjM0OCwgNjM1MywgNjM1OCwgNjM2MywgNjM2OCwgNjM3MywgNjM3OCwgCisgICAgNjM4NiwgNjM5MiwgNjM5NywgNjQwMiwgNjQwNywgNjQxMiwgNjQxNywgNjQyMywgNjQyOSwgNjQzNiwgNjQ0MywgNjQ1MiwgCisgICAgNjQ2MSwgNjQ2OCwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjQ5OCwgNjUwMywgNjUwOCwgNjUxMywgNjUxOCwgNjUyMywgNjUyOCwgCisgICAgNjUzMywgNjU0NCwgNjU1NSwgNjU2MCwgNjU2NSwgNjU3MiwgNjU3OSwgNjU4NywgNjU5NSwgNjYwMCwgNjYwNSwgNjYxMCwgCisgICAgNjYxNSwgNjYxOSwgNjYyMywgNjYyNywgNjYzMywgNjYzOSwgNjY0MywgNjY1MCwgNjY1NSwgNjY2NSwgNjY3NSwgNjY4MSwgCisgICAgNjY4NywgNjY5NSwgNjcwMywgNjcxMSwgNjcxOSwgNjcyNiwgNjczMywgNjc0MSwgNjc0OSwgNjc1NywgNjc2NSwgNjc3MywgCisgICAgNjc4MSwgNjc4OSwgNjc5NywgNjgwNSwgNjgxMywgNjgyMCwgNjgyNywgNjgzMywgNjgzOSwgNjg0NywgNjg1NSwgNjg2MiwgCisgICAgNjg2OSwgNjg3NywgNjg4NSwgNjg5MSwgNjg5NywgNjkwNSwgNjkxMywgNjkyMSwgNjkyOSwgNjkzNSwgNjk0MSwgNjk0OSwgCisgICAgNjk1NywgNjk2NSwgNjk3MywgNjk4MCwgNjk4NywgNjk5NSwgNzAwMywgNzAxMSwgNzAxOSwgNzAyNCwgNzAyOSwgNzAzNiwgCisgICAgNzA0MywgNzA1MywgNzA2MywgNzA2NywgNzA3NSwgNzA4MywgNzA5MCwgNzA5NywgNzEwNSwgNzExMywgNzEyMCwgNzEyNywgCisgICAgNzEzNSwgNzE0MywgNzE1MCwgNzE1NywgNzE2NSwgNzE3MywgNzE3OCwgNzE4NSwgNzE5MiwgNzE5OSwgNzIwNiwgNzIxMiwgCisgICAgNzIxOCwgNzIyNiwgNzIzNCwgNzIzOSwgNzI0NCwgNzI1MiwgNzI2MCwgNzI2OCwgNzI3NiwgNzI4NCwgNzI5MiwgNzI5OSwgCisgICAgNzMwNiwgNzMxNCwgNzMyMiwgNzMzMCwgNzMzOCwgNzM0NSwgNzM1MiwgNzM1OCwgNzM2NCwgNzM3MywgNzM4MiwgNzM4OSwgCisgICAgNzM5NiwgNzQwMywgNzQxMCwgNzQxNywgNzQyNCwgNzQzMSwgNzQzOCwgNzQ0NiwgNzQ1NCwgNzQ2MiwgNzQ3MCwgNzQ3OCwgCisgICAgNzQ4NiwgNzQ5NiwgNzUwNiwgNzUxMywgNzUyMCwgNzUyNywgNzUzNCwgNzU0MSwgNzU0OCwgNzU1NSwgNzU2MiwgNzU2OSwgCisgICAgNzU3NiwgNzU4MywgNzU5MCwgNzU5NywgNzYwNCwgNzYxMSwgNzYxOCwgNzYyNSwgNzYzMiwgNzYzOSwgNzY0NiwgNzY1MywgCisgICAgNzY2MCwgNzY2NywgNzY3NCwgNzY3OSwgNzY4NCwgNzY4OSwgNzY5NCwgNzY5OSwgNzcwNCwgNzcwOSwgNzcxNCwgNzcxOSwgCisgICAgNzcyNCwgNzczMCwgNzczNiwgNzc0NCwgNzc1MiwgNzc2MCwgNzc2OCwgNzc3NiwgNzc4NCwgNzc5MiwgNzgwMCwgNzgwOCwgCisgICAgNzgxNiwgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0NCwgMCwgNzg1MiwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgCisgICAgNzg3NywgNzg4MiwgNzg4NywgNzg5MiwgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgCisgICAgNzkzNiwgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgCisgICAgNzk5NiwgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgMCwgMCwgODA0MSwgODA0OCwgCisgICAgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2NiwgMCwgODA3MCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgCisgICAgODEwMCwgODEwNSwgODExMCwgODExNCwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgCisgICAgODE1OSwgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgCisgICAgODIxOSwgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgMCwgODI2NiwgODI3MSwgMCwgCisgICAgMCwgODI3NCwgODI4MCwgODI4NiwgMCwgODI5MCwgODI5NSwgODMwMCwgODMwNSwgODMxMiwgODMxOSwgODMyNCwgODMyOSwgCisgICAgODMzNCwgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM2MSwgODM2NiwgODM3MywgODM4MCwgODM4NSwgODM5MiwgODM5NywgCisgICAgODQwMiwgODQwNywgODQxNCwgODQxOSwgODQyNCwgODQzMSwgODQ0MCwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NiwgCisgICAgODQ3MSwgODQ3OCwgODQ4NSwgODQ5MiwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUzMiwgODUzNywgCisgICAgODU0NiwgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MywgODU4MCwgODU4NywgODU5MywgODU5OSwgODYwNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxMywgODYxNywgODYyMSwgODYyNSwgODYyOSwgODYzMywgODYzNywgODY0MSwgODY0NSwgCisgICAgODY0OSwgODY1MywgODY1OCwgODY2MiwgODY2NiwgODY3MSwgODY3NSwgODY4MCwgODY4NCwgODY4OCwgODY5MiwgODY5NywgCisgICAgODcwMSwgODcwNiwgODcxMCwgODcxNCwgODcxOCwgODcyMiwgMCwgMCwgMCwgMCwgMCwgODcyNiwgODczMywgODc0MSwgCisgICAgODc0OCwgODc1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc1OCwgODc2MSwgODc2NSwgODc3MCwgCisgICAgODc3NCwgODc3OCwgODc4MiwgODc4OCwgODc5NCwgODc5NywgODgwNCwgODgxMywgODgxNiwgODgxOSwgODgyNCwgODgzMCwgCisgICAgODgzNCwgODg0MiwgODg0OCwgODg1NCwgODg2MiwgODg2NiwgODg3MSwgODg4MiwgODg4NywgODg5MSwgODg5NSwgODg5OSwgCisgICAgODkwMiwgMCwgODkwNSwgODkxMiwgODkxNiwgODkyMiwgODkyNiwgODkzMywgODk0MCwgODk0OCwgODk1NSwgODk2MiwgCisgICAgODk2NiwgODk3MCwgODk3NiwgODk4MCwgODk4NCwgODk4OCwgODk5MiwgODk5NiwgOTAwMCwgOTAwNCwgOTAwOCwgOTAxMiwgCisgICAgOTAxNiwgOTAyMCwgOTAyNCwgOTAyOCwgOTAzMiwgOTAzNiwgOTA0MCwgOTA0NCwgOTA1MiwgOTA2MCwgOTA3MCwgOTA3OSwgCisgICAgOTA4OCwgOTA5MSwgOTA5NSwgOTA5OSwgOTEwMywgOTEwNywgOTExMSwgOTExNSwgOTExOSwgOTEyMywgOTEyOCwgOTEzMiwgCisgICAgOTEzNSwgOTEzOCwgOTE0MSwgOTE0NCwgOTE0NywgOTE1MCwgOTE1MywgOTE1NiwgOTE2MCwgOTE2NCwgOTE2OCwgOTE3MywgCisgICAgOTE3OCwgOTE4NCwgOTE4NywgOTE5NCwgOTIwMywgOTIwOCwgOTIxMywgOTIyMCwgOTIyNiwgOTIzMSwgOTIzNSwgOTIzOSwgCisgICAgOTI0MywgOTI0NywgOTI1MSwgOTI1NSwgOTI2MCwgOTI2NCwgOTI2OSwgOTI3MywgOTI3OCwgOTI4MywgOTI5MCwgOTI5NiwgCisgICAgOTMwMiwgOTMwOCwgOTMxMywgOTMyMiwgOTMzMSwgOTMzNiwgOTM0MywgOTM1MCwgOTM1NywgOTM2NCwgOTM2OCwgOTM3MiwgCisgICAgOTM3NiwgOTM4MywgOTM5MywgOTM5NywgOTQwMSwgOTQwNSwgOTQxMiwgOTQyMCwgOTQyNCwgOTQyOCwgOTQzNSwgOTQzOSwgCisgICAgOTQ0MywgOTQ0NywgOTQ1NCwgOTQ2MSwgOTQ3MywgOTQ3NywgOTQ4MSwgOTQ4NSwgOTQ5NSwgOTUwNCwgOTUwOCwgOTUxNiwgCisgICAgOTUyMywgOTUzMCwgOTUzOSwgOTU1MCwgOTU1OCwgOTU2MiwgOTU3MSwgOTU4MiwgOTU5MCwgOTYwMywgOTYxMSwgOTYxOSwgCisgICAgOTYyNywgOTYzNSwgOTY0MSwgOTY1MCwgOTY1NywgOTY2MSwgOTY2OSwgOTY3MywgOTY4MCwgOTY4OCwgOTY5MiwgOTY5OCwgCisgICAgOTcwNSwgOTcxMiwgOTcxNiwgOTcyNCwgOTcyOCwgOTczNSwgOTczOSwgOTc0NywgOTc1MSwgOTc1OSwgOTc2NywgOTc3NCwgCisgICAgOTc4MiwgOTc5MCwgOTc5NywgOTgwMywgOTgwNywgOTgxNCwgOTgyMiwgOTgyOCwgOTgzNSwgOTg0MiwgOTg0OCwgOTg1OCwgCisgICAgOTg2NiwgOTg3MywgOTg3OSwgOTg4MywgOTg4NiwgOTg5MCwgOTg5NiwgOTkwNCwgOTkwOCwgOTkxNCwgOTkyMCwgOTkyNywgCisgICAgOTkzNCwgOTkzNywgOTk0NCwgOTk0OSwgOTk1OCwgOTk2MywgOTk2NywgOTk4MCwgOTk5MywgOTk5OSwgMTAwMDYsIDEwMDExLCAKKyAgICAxMDAxNywgMTAwMjIsIDEwMDI4LCAxMDAzOCwgMTAwNDUsIDEwMDU0LCAxMDA2NCwgMTAwNzAsIDEwMDc1LCAxMDA4MCwgCisgICAgMTAwODQsIDEwMDg4LCAxMDA5MywgMTAwOTgsIDEwMTA0LCAxMDExMiwgMTAxMjAsIDEwMTMxLCAxMDEzNiwgMTAxNDUsIAorICAgIDEwMTU0LCAxMDE2MSwgMTAxNjcsIDEwMTczLCAxMDE3OSwgMTAxODUsIDEwMTkxLCAxMDE5NywgMTAyMDQsIDEwMjEwLCAKKyAgICAxMDIxNywgMTAyMjQsIDEwMjMxLCAxMDIzOCwgMTAyNDQsIDEwMjUyLCAxMDI2MSwgMTAyNjgsIDEwMjc2LCAxMDI4NCwgCisgICAgMTAyOTAsIDEwMjk2LCAxMDMwMiwgMTAzMTAsIDEwMzE4LCAxMDMyOCwgMTAzMzgsIDEwMzQyLCAxMDM0OCwgMTAzNTQsIDAsIAorICAgIDEwMzYwLCAxMDM2NSwgMTAzNzAsIDEwMzc3LCAxMDM4MiwgMTAzODcsIDEwMzk0LCAxMDM5OSwgMTA0MDgsIDEwNDEzLCAKKyAgICAxMDQxOCwgMTA0MjMsIDEwNDI4LCAxMDQzMywgMTA0NDAsIDEwNDQ1LCAxMDQ1MiwgMTA0NTcsIDEwNDYyLCAxMDQ2NywgCisgICAgMTA0NzIsIDEwNDc3LCAxMDQ4MywgMTA0ODcsIDEwNDkyLCAxMDQ5OSwgMTA1MDQsIDEwNTA5LCAxMDUxNCwgMTA1MTksIAorICAgIDEwNTI0LCAxMDUzMSwgMTA1MzgsIDEwNTQ1LCAxMDU1MCwgMTA1NTUsIDEwNTYxLCAxMDU2NiwgMTA1NzEsIDEwNTc3LCAKKyAgICAxMDU4MiwgMTA1ODcsIDEwNTk1LCAxMDYwMywgMTA2MDgsIDEwNjEzLCAxMDYxOSwgMTA2MjQsIDEwNjI5LCAxMDYzMywgCisgICAgMTA2MzksIDEwNjQzLCAxMDY0NywgMTA2NTMsIDEwNjU5LCAxMDY2NCwgMTA2NjksIDEwNjc2LCAxMDY4MywgMTA2ODcsIDAsIAorICAgIDAsIDEwNjkxLCAxMDY5OCwgMTA3MDUsIDEwNzEyLCAxMDcyMiwgMTA3MzQsIDEwNzQ1LCAxMDc2MSwgMTA3NzMsIDEwNzg0LCAKKyAgICAxMDc5MiwgMTA3OTksIDEwODA5LCAxMDgyNCwgMTA4MzUsIDEwODQxLCAxMDg1MCwgMTA4NTgsIDEwODY5LCAxMDg3OSwgCisgICAgMTA4ODcsIDEwODk4LCAxMDkwNSwgMTA5MTMsIDEwOTI0LCAxMDkzMCwgMTA5MzYsIDEwOTQ0LCAxMDk1MiwgMTA5NjAsIAorICAgIDEwOTY2LCAxMDk3NiwgMTA5ODQsIDEwOTk0LCAxMTAwNCwgMTEwMTcsIDExMDMxLCAxMTA0NSwgMTEwNTUsIDExMDY2LCAKKyAgICAxMTA3NywgMTEwOTAsIDExMTAzLCAxMTExNywgMTExMjksIDExMTQxLCAxMTE1NCwgMTExNjcsIDExMTc5LCAxMTE5MiwgCisgICAgMTEyMDEsIDExMjA5LCAxMTIxNCwgMTEyMTksIDExMjI0LCAxMTIyOSwgMTEyMzQsIDExMjM5LCAxMTI0NCwgMTEyNDksIAorICAgIDExMjU0LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NCwgMTEyNzksIDExMjg0LCAxMTI4OSwgMTEyOTQsIDExMjk5LCAKKyAgICAxMTMwNCwgMTEzMDksIDExMzE0LCAxMTMxOSwgMTEzMjQsIDExMzI5LCAxMTMzNCwgMTEzMzksIDExMzQ0LCAxMTM0OSwgCisgICAgMTEzNTQsIDExMzU5LCAxMTM2NCwgMTEzNjksIDExMzczLCAxMTM3OCwgMTEzODMsIDExMzg4LCAxMTM5MywgMTEzOTgsIAorICAgIDExNDAyLCAxMTQwNiwgMTE0MTAsIDExNDE0LCAxMTQxOCwgMTE0MjIsIDExNDI2LCAxMTQzMCwgMTE0MzQsIDExNDM4LCAKKyAgICAxMTQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NDcsIDExNDUyLCAxMTQ1NiwgCisgICAgMTE0NjAsIDExNDY0LCAxMTQ2OCwgMTE0NzIsIDExNDc2LCAxMTQ4MSwgMTE0ODUsIDExNDkwLCAxMTQ5NCwgMTE0OTksIAorICAgIDExNTAzLCAxMTUwNywgMTE1MTEsIDExNTE2LCAxMTUyMCwgMTE1MjUsIDExNTMwLCAxMTUzNSwgMTE1MzksIDExNTQ0LCAKKyAgICAxMTU0OSwgMTE1NTQsIDExNTU5LCAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OSwgMTE1ODQsIDExNTg4LCAxMTU5MywgCisgICAgMTE2MDAsIDExNjA0LCAxMTYwOSwgMTE2MTQsIDExNjE4LCAxMTYyMywgMTE2MjcsIDExNjM0LCAxMTY0MSwgMTE2NDgsIAorICAgIDExNjU1LCAxMTY2MywgMTE2NzEsIDExNjgwLCAxMTY4OCwgMTE2OTUsIDExNzAyLCAxMTcxMCwgMTE3MTYsIDExNzIyLCAKKyAgICAxMTcyOCwgMTE3MzQsIDExNzQxLCAxMTc0NiwgMTE3NTAsIDExNzU1LCAwLCAwLCAwLCAwLCAwLCAxMTc1OSwgMTE3NjQsIAorICAgIDExNzY5LCAxMTc3NCwgMTE3NzksIDExNzg0LCAxMTc4OSwgMTE3OTQsIDExNzk5LCAxMTgwNCwgMTE4MDksIDExODE0LCAKKyAgICAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNCwgMTE4MzksIDExODQ0LCAxMTg0OSwgMTE4NTQsIDExODU5LCAxMTg2NCwgCisgICAgMTE4NjksIDExODc0LCAxMTg3OSwgMTE4ODQsIDExODg5LCAxMTg5NywgMTE5MDQsIDExOTEwLCAxMTkxNSwgMTE5MjMsIAorICAgIDExOTMwLCAxMTkzNiwgMTE5NDMsIDExOTQ5LCAxMTk1NCwgMTE5NjEsIDExOTY4LCAxMTk3NCwgMTE5NzksIDExOTg0LCAKKyAgICAxMTk5MCwgMTE5OTUsIDEyMDAwLCAxMjAwNiwgMCwgMCwgMTIwMTEsIDEyMDE3LCAxMjAyMywgMTIwMjksIDEyMDM1LCAKKyAgICAxMjA0MSwgMTIwNDcsIDEyMDUyLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3OCwgMTIwODQsIDEyMDkwLCAxMjA5OCwgMCwgCisgICAgMTIxMDQsIDEyMTA5LCAxMjExNCwgMTIxMTksIDEyMTI0LCAxMjEyOSwgMTIxMzQsIDEyMTM5LCAxMjE0NCwgMTIxNDksIAorICAgIDEyMTU0LCAxMjE1OSwgMTIxNjQsIDEyMTY5LCAxMjE3NCwgMTIxNzksIDEyMTg0LCAxMjE4OSwgMTIxOTQsIDEyMTk5LCAKKyAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjQsIDEyMjI5LCAxMjIzNCwgMTIyMzksIDAsIDAsIDEyMjQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0OCwgMTIyNTcsIDEyMjY1LCAKKyAgICAxMjI3MiwgMTIyODAsIDEyMjkyLCAxMjI5OSwgMTIzMDYsIDEyMzEzLCAxMjMyNSwgMTIzMzYsIDEyMzQzLCAxMjM1MSwgCisgICAgMTIzNTcsIDEyMzYyLCAxMjM3MCwgMTIzNzgsIDEyMzg2LCAxMjM5MiwgMTI0MDIsIDEyNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQxNywgMTI0MjMsIDEyNDI4LCAKKyAgICAxMjQzMywgMTI0MzgsIDEyNDQzLCAxMjQ0OCwgMTI0NTMsIDEyNDU4LCAxMjQ2MywgMTI0NjgsIDEyNDczLCAxMjQ3OCwgCisgICAgMTI0ODMsIDEyNDg3LCAxMjQ5MSwgMTI0OTUsIDEyNTAwLCAxMjUwNiwgMTI1MTIsIDEyNTE4LCAxMjUyMywgMTI1MjgsIAorICAgIDEyNTMzLCAxMjUzOCwgMTI1NDQsIDEyNTUzLCAxMjU2MSwgMTI1NjcsIDEyNTc1LCAxMjU4MSwgMTI1ODUsIDEyNTg5LCAKKyAgICAxMjU5MywgMTI1OTgsIDEyNjAxLCAxMjYwNSwgMTI2MDgsIDEyNjEyLCAxMjYxNSwgMTI2MTksIDEyNjIzLCAxMjYyNywgCisgICAgMTI2MzIsIDEyNjM3LCAxMjY0MCwgMTI2NDQsIDEyNjQ5LCAxMjY1NCwgMTI2NTcsIDEyNjYxLCAxMjY2NCwgMTI2NjgsIAorICAgIDEyNjcyLCAxMjY3NiwgMTI2ODAsIDEyNjg0LCAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAKKyAgICAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNCwgMTI3MjgsIDEyNzMyLCAxMjczNiwgMTI3NDAsIDEyNzQ0LCAxMjc0NywgCisgICAgMTI3NTEsIDEyNzU1LCAxMjc1OSwgMTI3NjIsIDEyNzY1LCAxMjc2OSwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIAorICAgIDEyNzg5LCAxMjc5MywgMTI3OTcsIDEyODAxLCAxMjgwNCwgMTI4MDksIDEyODE0LCAxMjgxOCwgMTI4MjIsIDEyODI3LCAKKyAgICAxMjgzMSwgMTI4MzYsIDEyODQwLCAxMjg0NSwgMTI4NTAsIDEyODU2LCAxMjg2MiwgMTI4NjgsIDEyODcyLCAxMjg3NywgCisgICAgMTI4ODMsIDEyODg5LCAxMjg5MywgMTI4OTgsIDEyOTAyLCAxMjkwOCwgMTI5MTMsIDEyOTE2LCAxMjkyMiwgMTI5MjgsIAorICAgIDEyOTMzLCAxMjkzOCwgMTI5NDUsIDEyOTUwLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAKKyAgICAxMjk3OSwgMTI5ODMsIDEyOTg3LCAxMjk5MiwgMTI5OTcsIDEzMDAyLCAxMzAwOCwgMTMwMTEsIDEzMDE1LCAxMzAxOSwgCisgICAgMTMwMjIsIDEzMDI1LCAxMzAyOCwgMTMwMzEsIDEzMDM0LCAxMzAzNywgMTMwNDEsIDEzMDQ0LCAxMzA0OCwgMTMwNTIsIAorICAgIDEzMDU5LCAxMzA2NCwgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA5MCwgMTMwOTQsIDEzMDk4LCAKKyAgICAxMzEwMiwgMTMxMDYsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTIzLCAxMzEyNywgMTMxMzEsIDAsIDEzMTM1LCAxMzEzOCwgCisgICAgMTMxNDIsIDEzMTQ1LCAxMzE0OSwgMTMxNTIsIDEzMTU2LCAxMzE2MCwgMCwgMCwgMTMxNjQsIDEzMTY3LCAwLCAwLCAKKyAgICAxMzE3MSwgMTMxNzQsIDEzMTc4LCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5MywgMTMxOTcsIDEzMjAxLCAxMzIwNSwgCisgICAgMTMyMDksIDEzMjEzLCAxMzIxNywgMTMyMjEsIDEzMjI1LCAxMzIyOSwgMTMyMzMsIDEzMjM3LCAxMzI0MSwgMTMyNDUsIAorICAgIDEzMjQ5LCAxMzI1MywgMCwgMTMyNTcsIDEzMjYwLCAxMzI2NCwgMTMyNjgsIDEzMjcyLCAxMzI3NSwgMTMyNzgsIDAsIAorICAgIDEzMjgyLCAwLCAwLCAwLCAxMzI4NiwgMTMyOTAsIDEzMjk0LCAxMzI5OCwgMCwgMCwgMTMzMDEsIDEzMzA1LCAxMzMwOSwgCisgICAgMTMzMTQsIDEzMzE4LCAxMzMyMywgMTMzMjcsIDEzMzMyLCAxMzMzNywgMCwgMCwgMTMzNDMsIDEzMzQ3LCAwLCAwLCAKKyAgICAxMzM1MiwgMTMzNTYsIDEzMzYxLCAxMzM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNzEsIDAsIDAsIDAsIDAsIAorICAgIDEzMzc3LCAxMzM4MSwgMCwgMTMzODUsIDEzMzg5LCAxMzM5NCwgMTMzOTksIDEzNDA0LCAwLCAwLCAxMzQxMCwgMTM0MTQsIAorICAgIDEzNDE3LCAxMzQyMCwgMTM0MjMsIDEzNDI2LCAxMzQyOSwgMTM0MzIsIDEzNDM2LCAxMzQzOSwgMTM0NDMsIDEzNDUxLCAKKyAgICAxMzQ2MCwgMTM0NjQsIDEzNDY4LCAxMzQ3NCwgMTM0ODAsIDEzNDg2LCAxMzQ5MiwgMTM1MDYsIDEzNTEzLCAxMzUxNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTM1MjAsIDEzNTI3LCAxMzUzMiwgMCwgMTM1MzcsIDEzNTQxLCAxMzU0NiwgMTM1NTAsIDEzNTU1LCAKKyAgICAxMzU1OSwgMCwgMCwgMCwgMCwgMTM1NjQsIDEzNTY5LCAwLCAwLCAxMzU3NCwgMTM1NzksIDEzNTg0LCAxMzU4OCwgMTM1OTMsIAorICAgIDEzNTk4LCAxMzYwMywgMTM2MDgsIDEzNjEzLCAxMzYxOCwgMTM2MjMsIDEzNjI4LCAxMzYzMywgMTM2MzgsIDEzNjQzLCAKKyAgICAxMzY0OCwgMTM2NTMsIDEzNjU4LCAxMzY2MywgMTM2NjgsIDEzNjczLCAxMzY3OCwgMCwgMTM2ODMsIDEzNjg3LCAxMzY5MiwgCisgICAgMTM2OTcsIDEzNzAyLCAxMzcwNiwgMTM3MTAsIDAsIDEzNzE1LCAxMzcyMCwgMCwgMTM3MjUsIDEzNzMwLCAwLCAxMzczNSwgCisgICAgMTM3NDAsIDAsIDAsIDEzNzQ0LCAwLCAxMzc0OSwgMTM3NTUsIDEzNzYwLCAxMzc2NiwgMTM3NzEsIDAsIDAsIDAsIDAsIAorICAgIDEzNzc3LCAxMzc4MywgMCwgMCwgMTM3ODksIDEzNzk1LCAxMzgwMSwgMCwgMCwgMCwgMTM4MDYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzODExLCAxMzgxNiwgMTM4MjEsIDEzODI2LCAwLCAxMzgzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MzYsIAorICAgIDEzODQxLCAxMzg0NSwgMTM4NDksIDEzODUzLCAxMzg1NywgMTM4NjEsIDEzODY1LCAxMzg3MCwgMTM4NzQsIDEzODc5LCAKKyAgICAxMzg4MywgMTM4ODcsIDEzODkxLCAxMzg5NSwgMTM5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTA2LCAxMzkxMSwgMTM5MTYsIDAsIDEzOTIxLCAxMzkyNSwgMTM5MzAsIDEzOTM0LCAxMzkzOSwgMTM5NDMsIDEzOTQ4LCAKKyAgICAxMzk1MywgMTM5NTgsIDAsIDEzOTY0LCAxMzk2OCwgMTM5NzMsIDAsIDEzOTc5LCAxMzk4MywgMTM5ODgsIDEzOTkyLCAKKyAgICAxMzk5NywgMTQwMDIsIDE0MDA3LCAxNDAxMiwgMTQwMTcsIDE0MDIyLCAxNDAyNywgMTQwMzIsIDE0MDM3LCAxNDA0MiwgCisgICAgMTQwNDcsIDE0MDUyLCAxNDA1NywgMTQwNjIsIDE0MDY3LCAxNDA3MiwgMTQwNzcsIDE0MDgyLCAwLCAxNDA4NywgMTQwOTEsIAorICAgIDE0MDk2LCAxNDEwMSwgMTQxMDYsIDE0MTEwLCAxNDExNCwgMCwgMTQxMTksIDE0MTI0LCAwLCAxNDEyOSwgMTQxMzQsIAorICAgIDE0MTM5LCAxNDE0NCwgMTQxNDksIDAsIDAsIDE0MTUzLCAxNDE1OCwgMTQxNjMsIDE0MTY5LCAxNDE3NCwgMTQxODAsIAorICAgIDE0MTg1LCAxNDE5MSwgMTQxOTcsIDE0MjA0LCAwLCAxNDIxMSwgMTQyMTYsIDE0MjIyLCAwLCAxNDIyOSwgMTQyMzQsIAorICAgIDE0MjQwLCAwLCAwLCAxNDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNDksIAorICAgIDE0MjU1LCAxNDI2MSwgMTQyNjcsIDAsIDAsIDE0Mjc0LCAxNDI3OSwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgMTQyOTUsIAorICAgIDE0Mjk5LCAxNDMwMywgMTQzMDgsIDE0MzEyLCAxNDMxNywgMTQzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzI3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDMzMiwgMTQzMzYsIDE0MzQwLCAwLCAxNDM0NCwgMTQzNDcsIDE0MzUxLCAxNDM1NCwgCisgICAgMTQzNTgsIDE0MzYxLCAxNDM2NSwgMTQzNjksIDAsIDAsIDE0MzczLCAxNDM3NiwgMCwgMCwgMTQzODAsIDE0MzgzLCAKKyAgICAxNDM4NywgMTQzOTAsIDE0Mzk0LCAxNDM5OCwgMTQ0MDIsIDE0NDA2LCAxNDQxMCwgMTQ0MTQsIDE0NDE4LCAxNDQyMiwgCisgICAgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQyLCAxNDQ0NiwgMTQ0NTAsIDE0NDU0LCAxNDQ1OCwgMTQ0NjIsIDAsIAorICAgIDE0NDY2LCAxNDQ2OSwgMTQ0NzMsIDE0NDc3LCAxNDQ4MSwgMTQ0ODQsIDE0NDg3LCAwLCAxNDQ5MSwgMTQ0OTUsIDAsIAorICAgIDE0NDk5LCAxNDUwMywgMTQ1MDcsIDE0NTExLCAxNDUxNSwgMCwgMCwgMTQ1MTgsIDE0NTIyLCAxNDUyNiwgMTQ1MzEsIAorICAgIDE0NTM1LCAxNDU0MCwgMTQ1NDQsIDE0NTQ5LCAxNDU1NCwgMCwgMCwgMTQ1NjAsIDE0NTY0LCAwLCAwLCAxNDU2OSwgCisgICAgMTQ1NzMsIDE0NTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU4MiwgMTQ1ODgsIDAsIDAsIDAsIDAsIDE0NTk0LCAKKyAgICAxNDU5OCwgMCwgMTQ2MDIsIDE0NjA2LCAxNDYxMSwgMTQ2MTYsIDE0NjIxLCAwLCAwLCAxNDYyNywgMTQ2MzEsIDE0NjM0LCAKKyAgICAxNDYzNywgMTQ2NDAsIDE0NjQzLCAxNDY0NiwgMTQ2NDksIDE0NjUzLCAxNDY1NiwgMTQ2NjAsIDE0NjYzLCAxNDY2NywgCisgICAgMTQ2NzMsIDE0Njc5LCAxNDY4NSwgMTQ2OTEsIDE0Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDcwMywgCisgICAgMTQ3MDcsIDAsIDE0NzExLCAxNDcxNCwgMTQ3MTgsIDE0NzIxLCAxNDcyNSwgMTQ3MjgsIDAsIDAsIDAsIDE0NzMyLCAKKyAgICAxNDczNSwgMTQ3MzksIDAsIDE0NzQzLCAxNDc0NiwgMTQ3NTAsIDE0NzU0LCAwLCAwLCAwLCAxNDc1NywgMTQ3NjEsIDAsIAorICAgIDE0NzY1LCAwLCAxNDc2OSwgMTQ3NzMsIDAsIDAsIDAsIDE0Nzc3LCAxNDc4MSwgMCwgMCwgMCwgMTQ3ODUsIDE0Nzg5LCAKKyAgICAxNDc5MywgMCwgMCwgMCwgMTQ3OTYsIDE0Nzk5LCAxNDgwMiwgMTQ4MDYsIDE0ODEwLCAxNDgxNCwgMTQ4MTgsIDE0ODIyLCAKKyAgICAxNDgyNiwgMTQ4MzAsIDE0ODM0LCAxNDgzOCwgMCwgMCwgMCwgMCwgMTQ4NDEsIDE0ODQ2LCAxNDg1MCwgMTQ4NTUsIAorICAgIDE0ODU5LCAwLCAwLCAwLCAxNDg2NCwgMTQ4NjgsIDE0ODczLCAwLCAxNDg3OCwgMTQ4ODIsIDE0ODg3LCAxNDg5MiwgMCwgMCwgCisgICAgMTQ4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDkwNSwgMTQ5MDksIDE0OTEyLCAxNDkxNSwgMTQ5MTgsIDE0OTIxLCAxNDkyNCwgMTQ5MjcsIDE0OTMxLCAxNDkzNCwgCisgICAgMTQ5MzgsIDE0OTQyLCAxNDk0NywgMTQ5NTIsIDE0OTU2LCAxNDk2MCwgMTQ5NjQsIDE0OTY4LCAxNDk3MiwgMTQ5NzcsIAorICAgIDE0OTgxLCAwLCAwLCAwLCAwLCAwLCAxNDk4NCwgMTQ5OTAsIDE0OTk0LCAxNDk5OCwgMCwgMTUwMDIsIDE1MDA1LCAxNTAwOSwgCisgICAgMTUwMTIsIDE1MDE2LCAxNTAxOSwgMTUwMjMsIDE1MDI3LCAwLCAxNTAzMSwgMTUwMzQsIDE1MDM4LCAwLCAxNTA0MiwgCisgICAgMTUwNDUsIDE1MDQ5LCAxNTA1MywgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAxNTA3NiwgMTUwODAsIAorICAgIDE1MDg0LCAxNTA4OCwgMTUwOTIsIDE1MDk2LCAxNTEwMCwgMTUxMDQsIDE1MTA4LCAxNTExMiwgMTUxMTYsIDE1MTIwLCAKKyAgICAxNTEyNCwgMTUxMjgsIDAsIDE1MTMyLCAxNTEzNSwgMTUxMzksIDE1MTQzLCAxNTE0NywgMTUxNTAsIDE1MTUzLCAxNTE1NywgCisgICAgMTUxNjEsIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAwLCAwLCAwLCAxNTE5MiwgCisgICAgMTUxOTYsIDE1MjAxLCAxNTIwNSwgMTUyMTAsIDE1MjE0LCAxNTIxOSwgMTUyMjQsIDAsIDE1MjMwLCAxNTIzNCwgMTUyMzksIAorICAgIDAsIDE1MjQ0LCAxNTI0OCwgMTUyNTMsIDE1MjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI2MiwgMTUyNjYsIDAsIAorICAgIDE1MjcyLCAxNTI3NiwgMTUyODAsIDAsIDAsIDAsIDAsIDAsIDE1Mjg0LCAxNTI4OSwgMTUyOTQsIDE1Mjk5LCAwLCAwLCAKKyAgICAxNTMwNSwgMTUzMDksIDE1MzEyLCAxNTMxNSwgMTUzMTgsIDE1MzIxLCAxNTMyNCwgMTUzMjcsIDE1MzMxLCAxNTMzNCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzgsIDE1MzUxLCAxNTM2MywgMTUzNzUsIDE1Mzg3LCAxNTM5OSwgMTU0MTEsIAorICAgIDE1NDIzLCAwLCAxNTQyNywgMTU0MzEsIDE1NDM1LCAwLCAxNTQzOSwgMTU0NDIsIDE1NDQ2LCAxNTQ0OSwgMTU0NTMsIAorICAgIDE1NDU2LCAxNTQ2MCwgMTU0NjQsIDAsIDE1NDY4LCAxNTQ3MSwgMTU0NzUsIDAsIDE1NDc5LCAxNTQ4MiwgMTU0ODYsIAorICAgIDE1NDkwLCAxNTQ5MywgMTU0OTcsIDE1NTAxLCAxNTUwNSwgMTU1MDksIDE1NTEzLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAKKyAgICAxNTUyOSwgMTU1MzMsIDE1NTM3LCAxNTU0MSwgMTU1NDUsIDE1NTQ5LCAxNTU1MywgMTU1NTcsIDE1NTYxLCAxNTU2NSwgMCwgCisgICAgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1ODAsIDE1NTg0LCAxNTU4NywgMTU1OTAsIDE1NTk0LCAxNTU5OCwgMTU2MDIsIDAsIAorICAgIDE1NjA2LCAxNTYxMCwgMTU2MTQsIDE1NjE4LCAxNTYyMiwgMCwgMCwgMTU2MjUsIDE1NjI5LCAxNTYzMywgMTU2MzgsIAorICAgIDE1NjQyLCAxNTY0NywgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMCwgMTU2NjcsIDE1NjcxLCAxNTY3NiwgMCwgMTU2ODEsIAorICAgIDE1Njg1LCAxNTY5MCwgMTU2OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Njk5LCAxNTcwMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTU3MDksIDAsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQxLCAKKyAgICAxNTc0NCwgMTU3NDcsIDE1NzUwLCAxNTc1MywgMTU3NTYsIDE1NzYwLCAxNTc2MywgMCwgMTU3NjcsIDE1NzcxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc3NSwgMTU3NzksIDE1NzgzLCAwLCAxNTc4NywgMTU3OTAsIAorICAgIDE1Nzk0LCAxNTc5NywgMTU4MDEsIDE1ODA0LCAxNTgwOCwgMTU4MTIsIDAsIDE1ODE2LCAxNTgxOSwgMTU4MjMsIDAsIAorICAgIDE1ODI3LCAxNTgzMCwgMTU4MzQsIDE1ODM4LCAxNTg0MSwgMTU4NDUsIDE1ODQ5LCAxNTg1MywgMTU4NTcsIDE1ODYxLCAKKyAgICAxNTg2NSwgMTU4NjksIDE1ODczLCAxNTg3NywgMTU4ODEsIDE1ODg1LCAxNTg4OSwgMTU4OTMsIDE1ODk3LCAxNTkwMSwgCisgICAgMTU5MDUsIDE1OTA5LCAxNTkxMywgMTU5MTcsIDE1OTIxLCAxNTkyNCwgMTU5MjgsIDE1OTMyLCAxNTkzNiwgMTU5MzksIAorICAgIDE1OTQyLCAxNTk0NiwgMTU5NTAsIDE1OTU0LCAxNTk1OCwgMTU5NjIsIDE1OTY2LCAxNTk3MCwgMTU5NzQsIDE1OTc4LCAKKyAgICAxNTk4MSwgMCwgMCwgMTU5ODUsIDE1OTg5LCAxNTk5NCwgMTU5OTgsIDE2MDAzLCAxNjAwNywgMTYwMTIsIDE2MDE3LCAwLCAKKyAgICAxNjAyMywgMTYwMjcsIDE2MDMyLCAwLCAxNjAzNywgMTYwNDEsIDE2MDQ2LCAxNjA1MSwgMTYwNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA2NiwgMTYwNzIsIDE2MDc3LCAxNjA4MiwgMTYwODcsIAorICAgIDAsIDAsIDE2MDkzLCAxNjA5NywgMTYxMDAsIDE2MTAzLCAxNjEwNiwgMTYxMDksIDE2MTEyLCAxNjExNSwgMTYxMTksIAorICAgIDE2MTIyLCAxNjEyNiwgMTYxMzAsIDE2MTM1LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAwLCAwLCAwLCAxNjE1OCwgMTYxNjIsIAorICAgIDE2MTY4LCAxNjE3NCwgMTYxODAsIDE2MTg1LCAxNjE5MSwgMCwgMCwgMTYxOTcsIDE2MjAxLCAwLCAxNjIwNSwgMTYyMDksIAorICAgIDE2MjEzLCAxNjIxNywgMTYyMjEsIDE2MjI1LCAxNjIyOSwgMTYyMzMsIDE2MjM3LCAxNjI0MSwgMTYyNDUsIDE2MjQ5LCAKKyAgICAxNjI1MywgMTYyNTcsIDE2MjYxLCAxNjI2NSwgMTYyNjksIDE2MjczLCAwLCAwLCAwLCAxNjI3NywgMTYyODMsIDE2Mjg5LCAKKyAgICAxNjI5NSwgMTYzMDEsIDE2MzA3LCAxNjMxMywgMTYzMTksIDE2MzI1LCAxNjMzMSwgMTYzMzcsIDE2MzQzLCAxNjM1MSwgCisgICAgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTMsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIAorICAgIDE2NDE3LCAwLCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIDE2NDUzLCAxNjQ1NywgMTY0NjMsIDE2NDY3LCAKKyAgICAwLCAxNjQ3MSwgMCwgMCwgMTY0NzcsIDE2NDgxLCAxNjQ4NywgMTY0OTMsIDE2NDk5LCAxNjUwMywgMTY1MDksIDAsIDAsIDAsIAorICAgIDE2NTEzLCAwLCAwLCAwLCAwLCAxNjUxNywgMTY1MjIsIDE2NTI5LCAxNjUzNiwgMTY1NDMsIDE2NTUwLCAwLCAxNjU1NywgMCwgCisgICAgMTY1NjQsIDE2NTY5LCAxNjU3NCwgMTY1ODEsIDE2NTg4LCAxNjU5NywgMTY2MDgsIDE2NjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNjYyMiwgMTY2MjgsIDE2NjMzLCAxNjYzOCwgMTY2NDMsIDE2NjQ4LCAxNjY1MywgMTY2NTgsIDE2NjY0LCAxNjY2OSwgMCwgCisgICAgMCwgMTY2NzUsIDE2NjgyLCAxNjY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAxLCAKKyAgICAxNjcwOCwgMTY3MTUsIDE2NzIyLCAxNjcyOSwgMTY3MzYsIDE2NzQzLCAxNjc1MCwgMTY3NTcsIDE2NzY0LCAxNjc3MSwgCisgICAgMTY3NzgsIDE2Nzg1LCAxNjc5MiwgMTY3OTksIDE2ODA2LCAxNjgxMywgMTY4MjAsIDE2ODI3LCAxNjgzNCwgMTY4NDEsIAorICAgIDE2ODQ4LCAxNjg1NSwgMTY4NjIsIDE2ODY5LCAxNjg3NiwgMTY4ODMsIDE2ODkwLCAxNjg5NywgMTY5MDQsIDE2OTExLCAKKyAgICAxNjkxOCwgMTY5MjQsIDE2OTMxLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjIsIDE2OTY5LCAxNjk3NiwgCisgICAgMTY5ODMsIDE2OTkwLCAxNjk5NywgMTcwMDMsIDE3MDEwLCAxNzAxNSwgMTcwMjEsIDE3MDI4LCAxNzAzNSwgMTcwNDIsIAorICAgIDE3MDQ4LCAxNzA1NSwgMTcwNjIsIDE3MDY5LCAxNzA3NSwgMTcwODIsIDAsIDAsIDAsIDAsIDE3MDg3LCAxNzA5NCwgCisgICAgMTcxMDAsIDE3MTA3LCAxNzExMywgMTcxMjIsIDE3MTMxLCAxNzEzNiwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNjAsIAorICAgIDE3MTY3LCAxNzE3NCwgMTcxNzksIDE3MTg0LCAxNzE4OSwgMTcxOTQsIDE3MTk5LCAxNzIwMywgMTcyMDcsIDE3MjExLCAKKyAgICAxNzIxNSwgMTcyMTksIDE3MjIzLCAxNzIyOCwgMTcyMzIsIDE3MjM3LCAxNzI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcyNDcsIDE3MjUyLCAwLCAxNzI1OSwgMCwgMCwgMTcyNjYsIDE3MjcxLCAwLCAxNzI3NiwgMCwgCisgICAgMCwgMTcyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE3Mjg4LCAxNzI5MywgMTcyOTcsIDE3MzA0LCAwLCAxNzMxMSwgMTczMTYsIAorICAgIDE3MzIxLCAxNzMyNiwgMTczMzMsIDE3MzQwLCAxNzM0NywgMCwgMTczNTQsIDE3MzU5LCAxNzM2NCwgMCwgMTczNzEsIDAsIAorICAgIDE3Mzc4LCAwLCAwLCAxNzM4MywgMTczOTAsIDAsIDE3Mzk3LCAxNzQwMSwgMTc0MDgsIDE3NDEyLCAxNzQxNywgMTc0MjUsIAorICAgIDE3NDMxLCAxNzQzNywgMTc0NDIsIDE3NDQ4LCAxNzQ1NCwgMTc0NjAsIDE3NDY1LCAwLCAxNzQ3MSwgMTc0NzksIDE3NDg2LCAKKyAgICAwLCAwLCAxNzQ5MywgMTc0OTgsIDE3NTA0LCAxNzUwOSwgMTc1MTUsIDAsIDE3NTIxLCAwLCAxNzUyNywgMTc1MzQsIAorICAgIDE3NTQxLCAxNzU0OCwgMTc1NTUsIDE3NTYwLCAwLCAwLCAxNzU2NCwgMTc1NjksIDE3NTczLCAxNzU3NywgMTc1ODEsIAorICAgIDE3NTg1LCAxNzU4OSwgMTc1OTMsIDE3NTk4LCAxNzYwMiwgMCwgMCwgMTc2MDcsIDE3NjEzLCAxNzYxOSwgMTc2MjYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NjMzLCAxNzYzNywgMTc2NDgsIDE3NjYzLCAxNzY3OCwgMTc2ODgsIDE3Njk5LCAKKyAgICAxNzcxMiwgMTc3MjMsIDE3NzI5LCAxNzczNywgMTc3NDcsIDE3NzUzLCAxNzc2MSwgMTc3NjUsIDE3NzcxLCAxNzc3NywgCisgICAgMTc3ODUsIDE3Nzk1LCAxNzgwMywgMTc4MTYsIDE3ODIyLCAxNzgzMCwgMTc4MzgsIDE3ODUwLCAxNzg1NywgMTc4NjUsIAorICAgIDE3ODczLCAxNzg4MSwgMTc4ODksIDE3ODk3LCAxNzkwNSwgMTc5MTUsIDE3OTE5LCAxNzkyMiwgMTc5MjUsIDE3OTI4LCAKKyAgICAxNzkzMSwgMTc5MzQsIDE3OTM3LCAxNzk0MSwgMTc5NDQsIDE3OTQ4LCAxNzk1MiwgMTc5NTYsIDE3OTYwLCAxNzk2NCwgCisgICAgMTc5NjgsIDE3OTcyLCAxNzk3NywgMTc5ODEsIDE3OTg2LCAxNzk5MSwgMTc5OTcsIDE4MDA3LCAxODAyMSwgMTgwMzEsIAorICAgIDE4MDM3LCAxODA0MywgMTgwNTEsIDE4MDU5LCAxODA2NywgMTgwNzUsIDE4MDgxLCAxODA4NywgMTgwOTAsIDE4MDk0LCAKKyAgICAxODA5OCwgMTgxMDIsIDE4MTA2LCAxODExMCwgMTgxMTQsIDAsIDE4MTE4LCAxODEyMiwgMTgxMjYsIDE4MTMwLCAxODEzNCwgCisgICAgMTgxMzgsIDE4MTQyLCAxODE0NiwgMTgxNTAsIDE4MTU0LCAxODE1OCwgMTgxNjIsIDE4MTY1LCAxODE2OSwgMTgxNzMsIAorICAgIDE4MTc3LCAxODE4MCwgMTgxODQsIDE4MTg4LCAxODE5MiwgMTgxOTYsIDE4MjAwLCAxODIwNCwgMTgyMDgsIDE4MjEyLCAKKyAgICAxODIxNSwgMTgyMTksIDE4MjIzLCAxODIyNywgMTgyMzEsIDE4MjM1LCAxODIzOCwgMTgyNDEsIDE4MjQ1LCAxODI1MSwgCisgICAgMTgyNTUsIDAsIDAsIDAsIDAsIDE4MjU5LCAxODI2NCwgMTgyNjgsIDE4MjczLCAxODI3NywgMTgyODIsIDE4Mjg3LCAKKyAgICAxODI5MywgMTgyOTgsIDE4MzA0LCAxODMwOCwgMTgzMTMsIDE4MzE3LCAxODMyMiwgMTgzMzIsIDE4MzM4LCAxODM0NCwgCisgICAgMTgzNTEsIDE4MzYxLCAxODM2NywgMTgzNzEsIDE4Mzc1LCAxODM4MSwgMTgzODcsIDE4Mzk1LCAxODQwMSwgMTg0MDksIAorICAgIDE4NDE3LCAxODQyNSwgMTg0MzUsIDE4NDQzLCAxODQ1MywgMTg0NTgsIDE4NDY0LCAxODQ3MCwgMTg0NzYsIDE4NDgyLCAKKyAgICAxODQ4OCwgMTg0OTQsIDAsIDE4NTAwLCAxODUwNiwgMTg1MTIsIDE4NTE4LCAxODUyNCwgMTg1MzAsIDE4NTM2LCAxODU0MiwgCisgICAgMTg1NDgsIDE4NTU0LCAxODU2MCwgMTg1NjYsIDE4NTcxLCAxODU3NywgMTg1ODMsIDE4NTg5LCAxODU5NCwgMTg2MDAsIAorICAgIDE4NjA2LCAxODYxMiwgMTg2MTgsIDE4NjI0LCAxODYzMCwgMTg2MzYsIDE4NjQyLCAxODY0NywgMTg2NTMsIDE4NjU5LCAKKyAgICAxODY2NSwgMTg2NzEsIDE4Njc3LCAxODY4MiwgMTg2ODcsIDE4NjkzLCAxODcwMSwgMTg3MDgsIDAsIDE4NzE2LCAxODcyMywgCisgICAgMTg3MzYsIDE4NzQzLCAxODc1MCwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5NCwgMTg3OTksIAorICAgIDE4ODA1LCAxODgxNSwgMTg4MjUsIDAsIDE4ODM1LCAxODg0NSwgMTg4NTMsIDE4ODY1LCAxODg3NywgMTg4ODMsIDE4ODk3LCAKKyAgICAxODkxMiwgMTg5MTcsIDE4OTIyLCAxODkzMCwgMTg5MzgsIDE4OTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxODk1NCwgMTg5NTcsIDE4OTYxLCAxODk2NSwgMTg5NjksIDE4OTczLCAxODk3NywgMTg5ODEsIDE4OTg1LCAKKyAgICAxODk4OSwgMTg5OTMsIDE4OTk3LCAxOTAwMSwgMTkwMDUsIDE5MDA5LCAxOTAxMywgMTkwMTcsIDE5MDIxLCAxOTAyNSwgCisgICAgMTkwMjksIDE5MDMzLCAxOTAzNywgMTkwNDAsIDE5MDQ0LCAxOTA0OCwgMTkwNTIsIDE5MDU1LCAxOTA1OCwgMTkwNjIsIAorICAgIDE5MDY2LCAxOTA3MCwgMTkwNzQsIDE5MDc3LCAxOTA4MSwgMTkwODQsIDE5MDg5LCAxOTA5MiwgMTkwOTYsIDE5MDk5LCAKKyAgICAxOTEwMywgMTkxMDYsIDE5MTExLCAxOTExNCwgMTkxMTgsIDE5MTI1LCAxOTEzMCwgMTkxMzQsIDE5MTM5LCAxOTE0MywgCisgICAgMTkxNDgsIDE5MTUyLCAxOTE1NywgMTkxNjQsIDE5MTcwLCAxOTE3NSwgMTkxNzksIDE5MTgzLCAxOTE4NywgMTkxOTEsIAorICAgIDE5MTk1LCAxOTIwMCwgMTkyMDYsIDE5MjEyLCAxOTIxNywgMTkyMjMsIDE5MjI3LCAxOTIzMCwgMTkyMzMsIDE5MjM2LCAKKyAgICAxOTIzOSwgMTkyNDIsIDE5MjQ1LCAxOTI0OSwgMTkyNTIsIDE5MjU2LCAxOTI2MiwgMTkyNjYsIDE5MjcwLCAxOTI3NCwgCisgICAgMTkyNzgsIDE5MjgyLCAxOTI4NiwgMTkyOTAsIDE5Mjk0LCAxOTI5OSwgMTkzMDMsIDE5MzA4LCAxOTMxMywgMTkzMTksIAorICAgIDE5MzI0LCAxOTMzMCwgMTkzMzYsIDE5MzQyLCAxOTM0OCwgMTkzNTQsIDE5MzYyLCAxOTM2OSwgMTkzNzcsIDE5Mzg1LCAKKyAgICAxOTM5NCwgMTk0MDMsIDE5NDE0LCAxOTQyNCwgMTk0MzQsIDE5NDQ1LCAxOTQ1NiwgMTk0NjYsIDE5NDc2LCAxOTQ4NiwgCisgICAgMTk0OTYsIDE5NTA2LCAxOTUxNiwgMTk1MjYsIDE5NTM2LCAxOTU0NCwgMTk1NTEsIDE5NTU3LCAxOTU2NCwgMTk1NjksIAorICAgIDE5NTc1LCAxOTU4MSwgMTk1ODcsIDE5NTkzLCAxOTU5OSwgMTk2MDUsIDE5NjExLCAxOTYxNywgMTk2MjMsIDE5NjI5LCAKKyAgICAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY1NSwgMTk2NjEsIDE5NjY4LCAxOTY3NiwgMTk2ODIsIDE5Njg4LCAxOTY5NCwgCisgICAgMTk3MDAsIDE5NzA4LCAxOTcxNiwgMTk3MjYsIDE5NzM0LCAxOTc0MiwgMTk3NDgsIDE5NzUzLCAxOTc1OCwgMTk3NjMsIAorICAgIDE5NzY4LCAxOTc3MywgMTk3NzgsIDE5Nzg0LCAxOTc4OSwgMTk3OTUsIDE5ODAxLCAxOTgwNywgMTk4MTMsIDE5ODIwLCAKKyAgICAxOTgyNSwgMTk4MzEsIDE5ODM2LCAxOTg0MSwgMTk4NDYsIDE5ODUxLCAxOTg1NiwgMTk4NjEsIDE5ODY2LCAxOTg3MSwgCisgICAgMTk4NzYsIDE5ODgxLCAxOTg4NiwgMTk4OTEsIDE5ODk2LCAxOTkwMSwgMTk5MDYsIDE5OTExLCAxOTkxNiwgMTk5MjEsIAorICAgIDE5OTI2LCAxOTkzMSwgMTk5MzYsIDE5OTQxLCAxOTk0NiwgMTk5NTEsIDE5OTU2LCAxOTk2MSwgMTk5NjYsIDE5OTcxLCAKKyAgICAxOTk3NiwgMTk5ODEsIDE5OTg2LCAxOTk5MSwgMTk5OTYsIDIwMDAxLCAyMDAwNiwgMjAwMTEsIDIwMDE2LCAwLCAyMDAyMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjAwMjYsIDAsIDAsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIAorICAgIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAKKyAgICAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgCisgICAgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIAorICAgIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMjAxLCAyMDIwNSwgMjAyMTAsIDIwMjE1LCAKKyAgICAyMDIxOSwgMjAyMjQsIDIwMjI5LCAyMDIzMywgMjAyMzcsIDIwMjQxLCAyMDI0NSwgMjAyNDksIDIwMjUzLCAyMDI1NywgCisgICAgMjAyNjEsIDIwMjY1LCAyMDI2OSwgMjAyNzMsIDIwMjc3LCAyMDI4MSwgMjAyODUsIDIwMjg5LCAyMDI5MywgMjAyOTcsIAorICAgIDIwMzAxLCAyMDMwNSwgMjAzMDksIDIwMzEzLCAyMDMxNywgMjAzMjEsIDIwMzI1LCAyMDMyOSwgMjAzMzMsIDIwMzM3LCAKKyAgICAyMDM0MSwgMjAzNDUsIDIwMzQ5LCAyMDM1MywgMjAzNTcsIDIwMzYxLCAyMDM2NSwgMjAzNjksIDIwMzczLCAyMDM3NywgCisgICAgMjAzODEsIDIwMzg1LCAyMDM4OSwgMjAzOTMsIDIwMzk3LCAyMDQwMSwgMjA0MDUsIDIwNDA5LCAyMDQxMywgMjA0MTcsIAorICAgIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIDIwNDU3LCAKKyAgICAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MywgMjA0NzcsIDIwNDgxLCAyMDQ4NSwgMjA0ODksIDIwNDkzLCAyMDQ5NywgCisgICAgMjA1MDEsIDIwNTA1LCAyMDUwOSwgMjA1MTMsIDIwNTE3LCAyMDUyMSwgMjA1MjUsIDIwNTI5LCAyMDUzMywgMjA1MzcsIAorICAgIDIwNTQxLCAyMDU0NSwgMjA1NDksIDIwNTUzLCAyMDU1NywgMjA1NjEsIDIwNTY1LCAyMDU2OSwgMjA1NzMsIDIwNTc3LCAKKyAgICAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIDIwNjAxLCAyMDYwNSwgMjA2MDksIDIwNjEzLCAyMDYxNywgCisgICAgMjA2MjAsIDIwNjI0LCAyMDYyNywgMjA2MzEsIDIwNjM1LCAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY0OSwgMjA2NTMsIAorICAgIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAKKyAgICAyMDY5NSwgMjA2OTksIDIwNzAzLCAyMDcwNywgMjA3MTEsIDIwNzE1LCAyMDcxOSwgMjA3MjMsIDIwNzI3LCAyMDczMSwgCisgICAgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIAorICAgIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAKKyAgICAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgCisgICAgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIAorICAgIDIwODk1LCAyMDg5OSwgMjA5MDMsIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAKKyAgICAyMDkzNSwgMjA5MzksIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgCisgICAgMjA5NzUsIDIwOTc5LCAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTEsIAorICAgIDIxMDE1LCAyMTAxOSwgMjEwMjMsIDIxMDI3LCAyMTAzMSwgMjEwMzUsIDIxMDM5LCAyMTA0MywgMjEwNDcsIDIxMDUxLCAKKyAgICAyMTA1NSwgMjEwNTksIDIxMDYzLCAyMTA2NywgMjEwNzEsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgCisgICAgMjEwOTUsIDIxMDk5LCAyMTEwMywgMjExMDcsIDIxMTExLCAyMTExNSwgMjExMTksIDIxMTIzLCAyMTEyNywgMjExMzEsIAorICAgIDIxMTM1LCAyMTEzOSwgMjExNDMsIDIxMTQ3LCAyMTE1MSwgMjExNTUsIDIxMTU5LCAyMTE2MywgMjExNjcsIDIxMTcxLCAKKyAgICAyMTE3NSwgMjExNzksIDIxMTgzLCAyMTE4NywgMjExOTEsIDIxMTk1LCAyMTE5OSwgMjEyMDMsIDIxMjA3LCAyMTIxMSwgCisgICAgMjEyMTUsIDIxMjE5LCAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTAsIAorICAgIDIxMjU0LCAyMTI1OCwgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAKKyAgICAyMTI5NCwgMjEyOTgsIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgCisgICAgMjEzMzQsIDIxMzM4LCAyMTM0MiwgMjEzNDUsIDIxMzQ5LCAyMTM1MywgMjEzNTcsIDIxMzYxLCAyMTM2NSwgMjEzNjksIAorICAgIDIxMzczLCAyMTM3NywgMjEzODEsIDIxMzg1LCAyMTM4OSwgMjEzOTMsIDIxMzk3LCAyMTQwMSwgMjE0MDUsIDIxNDA5LCAKKyAgICAyMTQxMywgMjE0MTcsIDIxNDIxLCAyMTQyNSwgMjE0MjksIDIxNDMzLCAyMTQzNywgMjE0NDEsIDIxNDQ1LCAyMTQ0OSwgCisgICAgMjE0NTMsIDIxNDU3LCAyMTQ2MSwgMjE0NjUsIDIxNDY5LCAyMTQ3MywgMjE0NzcsIDIxNDgxLCAyMTQ4NSwgMjE0ODksIAorICAgIDIxNDkzLCAyMTQ5NywgMjE1MDEsIDIxNTA1LCAyMTUwOSwgMjE1MTMsIDIxNTE3LCAyMTUyMSwgMjE1MjUsIDIxNTI5LCAKKyAgICAyMTUzMywgMCwgMjE1MzcsIDIxNTQxLCAyMTU0NSwgMjE1NDksIDAsIDAsIDIxNTUzLCAyMTU1NywgMjE1NjEsIDIxNTY1LCAKKyAgICAyMTU2OSwgMjE1NzMsIDIxNTc3LCAwLCAyMTU4MSwgMCwgMjE1ODUsIDIxNTg5LCAyMTU5MywgMjE1OTcsIDAsIDAsIAorICAgIDIxNjAxLCAyMTYwNSwgMjE2MDksIDIxNjEzLCAyMTYxNywgMjE2MjEsIDIxNjI1LCAyMTYyOSwgMjE2MzMsIDIxNjM3LCAKKyAgICAyMTY0MSwgMjE2NDUsIDIxNjQ5LCAyMTY1MywgMjE2NTcsIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgCisgICAgMjE2ODEsIDIxNjg1LCAyMTY4OSwgMjE2OTIsIDIxNjk2LCAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIAorICAgIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTIsIDIxNzU2LCAKKyAgICAyMTc2MCwgMCwgMjE3NjQsIDIxNzY4LCAyMTc3MiwgMjE3NzYsIDAsIDAsIDIxNzgwLCAyMTc4NCwgMjE3ODgsIDIxNzkyLCAKKyAgICAyMTc5NiwgMjE4MDAsIDIxODA0LCAyMTgwOCwgMjE4MTIsIDIxODE2LCAyMTgyMCwgMjE4MjQsIDIxODI4LCAyMTgzMiwgCisgICAgMjE4MzYsIDIxODQwLCAyMTg0NCwgMjE4NDksIDIxODU0LCAyMTg1OSwgMjE4NjUsIDIxODcxLCAyMTg3NiwgMjE4ODEsIAorICAgIDIxODg3LCAyMTg5MCwgMjE4OTQsIDIxODk4LCAyMTkwMiwgMjE5MDYsIDIxOTEwLCAyMTkxNCwgMjE5MTgsIDAsIDIxOTIyLCAKKyAgICAyMTkyNiwgMjE5MzAsIDIxOTM0LCAwLCAwLCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAKKyAgICAyMTk2MiwgMCwgMjE5NjYsIDAsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAwLCAwLCAyMTk4NiwgMjE5OTAsIAorICAgIDIxOTk0LCAyMTk5OCwgMjIwMDIsIDIyMDA2LCAyMjAxMCwgMjIwMTQsIDIyMDE4LCAyMjAyMywgMjIwMjgsIDIyMDMzLCAKKyAgICAyMjAzOSwgMjIwNDUsIDIyMDUwLCAwLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCisgICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAorICAgIDIyMTIyLCAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAKKyAgICAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAyMjE4NiwgMjIxOTAsIDIyMTk0LCAyMjE5OCwgCisgICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDIyMjE4LCAyMjIyMiwgMjIyMjYsIDIyMjMwLCAyMjIzNCwgMjIyMzgsIAorICAgIDIyMjQyLCAyMjI0NiwgMjIyNTAsIDIyMjU0LCAyMjI1OCwgMjIyNjIsIDIyMjY2LCAyMjI3MCwgMjIyNzQsIDIyMjc4LCAwLCAKKyAgICAyMjI4MiwgMjIyODYsIDIyMjkwLCAyMjI5NCwgMCwgMCwgMjIyOTgsIDIyMzAyLCAyMjMwNiwgMjIzMTAsIDIyMzE0LCAKKyAgICAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgCisgICAgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIAorICAgIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAKKyAgICAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTQsIDIyNDU4LCAyMjQ2MiwgMjI0NjYsIDIyNDcwLCAyMjQ3NCwgCisgICAgMjI0NzgsIDIyNDgyLCAyMjQ4NiwgMjI0OTAsIDIyNDk0LCAyMjQ5OCwgMjI1MDIsIDIyNTA2LCAyMjUxMCwgMjI1MTQsIAorICAgIDIyNTE4LCAyMjUyMiwgMjI1MjUsIDIyNTI5LCAyMjUzMywgMjI1MzcsIDIyNTQxLCAyMjU0NSwgMjI1NDksIDIyNTUzLCAKKyAgICAyMjU1NywgMjI1NjEsIDAsIDAsIDIyNTY1LCAyMjU3NCwgMjI1ODAsIDIyNTg1LCAyMjU4OSwgMjI1OTIsIDIyNTk3LCAKKyAgICAyMjYwMCwgMjI2MDMsIDIyNjA2LCAyMjYxMSwgMjI2MTUsIDIyNjIwLCAyMjYyMywgMjI2MjYsIDIyNjI5LCAyMjYzMiwgCisgICAgMjI2MzUsIDIyNjM4LCAyMjY0MiwgMjI2NDUsIDIyNjQ5LCAyMjY1MywgMjI2NTcsIDIyNjYxLCAyMjY2NSwgMjI2NjksIAorICAgIDIyNjczLCAyMjY3NywgMjI2ODEsIDIyNjg1LCAyMjY4OSwgMCwgMCwgMCwgMjI2OTUsIDIyNzAxLCAyMjcwNSwgMjI3MDksIAorICAgIDIyNzEzLCAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDksIDIyNzU1LCAKKyAgICAyMjc1OSwgMjI3NjMsIDIyNzY3LCAyMjc3MywgMjI3NzksIDIyNzg1LCAyMjc5MywgMjI3OTksIDIyODA1LCAyMjgxMSwgCisgICAgMjI4MTcsIDIyODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjgyOSwgMjI4MzIsIDIyODM1LCAyMjgzOCwgMjI4NDEsIDIyODQ0LCAKKyAgICAyMjg0OCwgMjI4NTIsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc4LCAyMjg4MiwgCisgICAgMjI4ODYsIDIyODkwLCAyMjg5NCwgMjI4OTgsIDIyOTAyLCAyMjkwNiwgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjIsIAorICAgIDIyOTI1LCAyMjkyOSwgMjI5MzMsIDIyOTM3LCAyMjk0MSwgMjI5NDUsIDIyOTQ5LCAyMjk1MywgMjI5NTcsIDIyOTYxLCAKKyAgICAyMjk2NSwgMjI5NjksIDIyOTczLCAyMjk3NywgMjI5ODEsIDIyOTg1LCAyMjk4OSwgMjI5OTMsIDIyOTk3LCAyMzAwMSwgCisgICAgMjMwMDQsIDIzMDA4LCAyMzAxMiwgMjMwMTYsIDIzMDIwLCAyMzAyNCwgMjMwMjgsIDIzMDMyLCAyMzAzNiwgMjMwNDAsIAorICAgIDIzMDQ0LCAyMzA0OCwgMjMwNTIsIDIzMDU2LCAyMzA2MCwgMjMwNjQsIDIzMDY4LCAyMzA3MiwgMjMwNzYsIDIzMDgwLCAKKyAgICAyMzA4NCwgMjMwODgsIDIzMDkyLCAyMzA5NiwgMjMxMDAsIDIzMTA0LCAyMzEwOCwgMjMxMTIsIDIzMTE2LCAyMzEyMCwgCisgICAgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUxLCAyMzE1NSwgMjMxNTksIDAsIAorICAgIDAsIDIzMTYzLCAyMzE2OCwgMjMxNzMsIDIzMTc4LCAyMzE4MywgMjMxODgsIDAsIDAsIDIzMTkzLCAyMzE5NywgMjMyMDAsIAorICAgIDIzMjA0LCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIxOCwgMjMyMjQsIDIzMjI5LCAyMzIzMywgMjMyMzYsIDIzMjQwLCAKKyAgICAyMzI0NCwgMjMyNDksIDIzMjUzLCAyMzI1OCwgMjMyNjIsIDIzMjY3LCAyMzI3MSwgMjMyNzYsIDIzMjgwLCAyMzI4NSwgCisgICAgMjMyOTEsIDIzMjk1LCAyMzMwMCwgMjMzMDQsIDIzMzA5LCAyMzMxNSwgMjMzMTksIDIzMzI1LCAyMzMzMSwgMjMzMzUsIAorICAgIDIzMzQwLCAyMzM0OCwgMjMzNTYsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzgyLCAyMzM4OCwgMjMzOTYsIDIzNDAxLCAKKyAgICAyMzQwNywgMjM0MTEsIDIzNDE1LCAyMzQxOSwgMjM0MjMsIDIzNDI3LCAyMzQzMSwgMjM0MzUsIDIzNDM5LCAyMzQ0MywgCisgICAgMjM0NDcsIDIzNDUzLCAyMzQ1OCwgMjM0NjMsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIDIzNDc5LCAyMzQ4MywgMjM0ODgsIAorICAgIDIzNDkyLCAyMzQ5NywgMjM1MDEsIDIzNTA2LCAyMzUxMCwgMjM1MTUsIDIzNTE5LCAyMzUyNCwgMjM1MjgsIDIzNTMzLCAKKyAgICAyMzUzOSwgMjM1NDMsIDIzNTQ4LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTcyLCAyMzU3NiwgCisgICAgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMjM1OTYsIDIzNjAwLCAyMzYwNCwgMjM2MDksIDIzNjEzLCAyMzYxOCwgMjM2MjIsIAorICAgIDIzNjI3LCAyMzYzMCwgMjM2MzQsIDIzNjM4LCAyMzY0MywgMjM2NDcsIDIzNjUyLCAyMzY1NiwgMjM2NjEsIDIzNjY3LCAKKyAgICAyMzY3MSwgMjM2NzUsIDIzNjc5LCAyMzY4MywgMjM2ODcsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgCisgICAgMjM3MTEsIDIzNzE3LCAyMzcyMCwgMjM3MjQsIDIzNzI4LCAyMzczMywgMjM3MzcsIDIzNzQyLCAyMzc0NiwgMjM3NTEsIAorICAgIDIzNzU1LCAyMzc2MCwgMjM3NjQsIDIzNzY5LCAyMzc3MywgMjM3NzgsIDIzNzgyLCAyMzc4NywgMjM3OTMsIDIzNzk3LCAKKyAgICAyMzgwMSwgMjM4MDcsIDIzODEzLCAyMzgxOSwgMjM4MjUsIDIzODI5LCAyMzgzMywgMjM4MzcsIDIzODQxLCAyMzg0NSwgCisgICAgMjM4NDksIDIzODU1LCAyMzg1OSwgMjM4NjMsIDIzODY3LCAyMzg3MiwgMjM4NzYsIDIzODgxLCAyMzg4NSwgMjM4OTAsIAorICAgIDIzODk0LCAyMzg5OSwgMjM5MDMsIDIzOTA4LCAyMzkxMiwgMjM5MTcsIDIzOTIxLCAyMzkyNiwgMjM5MzIsIDIzOTM2LCAKKyAgICAyMzk0MiwgMjM5NDYsIDIzOTUwLCAyMzk1NCwgMjM5NTgsIDIzOTYyLCAyMzk2NiwgMjM5NzIsIDIzOTc1LCAyMzk3OSwgCisgICAgMjM5ODMsIDIzOTg4LCAyMzk5MiwgMjM5OTcsIDI0MDAxLCAyNDAwNiwgMjQwMTAsIDI0MDE1LCAyNDAxOSwgMjQwMjQsIAorICAgIDI0MDI4LCAyNDAzMywgMjQwMzcsIDI0MDQyLCAyNDA0OCwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDczLCAKKyAgICAyNDA3NywgMjQwODEsIDI0MDg1LCAyNDA4OSwgMjQwOTMsIDI0MDk3LCAyNDEwMywgMjQxMDcsIDI0MTExLCAyNDExNSwgCisgICAgMjQxMjAsIDI0MTI0LCAyNDEyOSwgMjQxMzMsIDI0MTM4LCAyNDE0NCwgMjQxNDgsIDI0MTUzLCAyNDE1NywgMjQxNjEsIAorICAgIDI0MTY1LCAyNDE2OSwgMjQxNzMsIDI0MTc3LCAyNDE4MSwgMjQxODcsIDI0MTkxLCAyNDE5NSwgMjQxOTksIDI0MjA0LCAKKyAgICAyNDIwOCwgMjQyMTMsIDI0MjE3LCAyNDIyMiwgMjQyMjYsIDI0MjMxLCAyNDIzNSwgMjQyNDAsIDI0MjQ0LCAyNDI0OSwgCisgICAgMjQyNTMsIDI0MjU4LCAyNDI2MSwgMjQyNjUsIDI0MjY5LCAyNDI3MywgMjQyNzcsIDI0MjgxLCAyNDI4NSwgMjQyODksIAorICAgIDI0MjkzLCAyNDI5OSwgMjQzMDMsIDI0MzA3LCAyNDMxMSwgMjQzMTYsIDI0MzIwLCAyNDMyNSwgMjQzMjksIDI0MzM0LCAKKyAgICAyNDMzOCwgMjQzNDMsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NSwgMjQzNzAsIDI0Mzc2LCAyNDM3OSwgCisgICAgMjQzODQsIDI0Mzg4LCAyNDM5MywgMjQzOTksIDI0NDA1LCAyNDQxMSwgMjQ0MTcsIDI0NDIzLCAyNDQyOSwgMjQ0MzUsIAorICAgIDI0NDM5LCAyNDQ0MywgMjQ0NDcsIDI0NDUxLCAyNDQ1NSwgMjQ0NTksIDI0NDYzLCAyNDQ2NywgMjQ0NzIsIDI0NDc2LCAKKyAgICAyNDQ4MSwgMjQ0ODUsIDI0NDkwLCAyNDQ5NCwgMjQ0OTksIDI0NTAzLCAyNDUwOCwgMjQ1MTIsIDI0NTE3LCAyNDUyMSwgCisgICAgMjQ1MjYsIDI0NTMwLCAyNDUzNCwgMjQ1MzgsIDI0NTQyLCAyNDU0NiwgMjQ1NTAsIDI0NTU0LCAyNDU2MCwgMjQ1NjMsIAorICAgIDI0NTY3LCAyNDU3MSwgMjQ1NzYsIDI0NTgwLCAyNDU4NSwgMjQ1ODksIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAKKyAgICAyNDYxMiwgMjQ2MTYsIDI0NjIxLCAyNDYyNSwgMjQ2MzAsIDI0NjM2LCAyNDY0MCwgMjQ2NDYsIDI0NjUxLCAyNDY1NywgCisgICAgMjQ2NjEsIDI0NjY3LCAyNDY3MiwgMjQ2NzYsIDI0NjgwLCAyNDY4NCwgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIAorICAgIDI0NzA1LCAyNDcxMCwgMjQ3MTQsIDI0NzE5LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAKKyAgICAyNDc0NiwgMjQ3NTAsIDI0NzU0LCAyNDc1OCwgMjQ3NjIsIDI0NzY2LCAyNDc3MSwgMjQ3NzUsIDI0Nzc5LCAyNDc4NSwgCisgICAgMjQ3ODksIDI0Nzk1LCAyNDc5OSwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgMjQ4MTcsIDI0ODIxLCAyNDgyNSwgMjQ4MzAsIAorICAgIDI0ODM0LCAyNDgzOCwgMjQ4NDIsIDI0ODQ2LCAyNDg1MCwgMjQ4NTQsIDI0ODU4LCAyNDg2MiwgMjQ4NjYsIDI0ODcwLCAKKyAgICAyNDg3NiwgMjQ4ODIsIDI0ODg4LCAyNDg5NCwgMjQ5MDAsIDI0OTA1LCAyNDkxMSwgMjQ5MTcsIDI0OTIzLCAyNDkyNywgCisgICAgMjQ5MzEsIDI0OTM1LCAyNDkzOSwgMjQ5NDMsIDI0OTQ3LCAyNDk1MSwgMjQ5NTUsIDI0OTU5LCAyNDk2MywgMjQ5NjcsIAorICAgIDI0OTcxLCAyNDk3NSwgMjQ5ODAsIDI0OTg1LCAyNDk5MCwgMjQ5OTUsIDI0OTk5LCAyNTAwMywgMjUwMDcsIDI1MDExLCAKKyAgICAyNTAxNSwgMjUwMTksIDI1MDIzLCAyNTAyNywgMjUwMzEsIDI1MDM3LCAyNTA0MywgMjUwNDksIDI1MDU1LCAyNTA2MSwgCisgICAgMjUwNjcsIDI1MDczLCAyNTA3OSwgMjUwODUsIDI1MDg5LCAyNTA5MywgMjUwOTcsIDI1MTAxLCAyNTEwNSwgMjUxMDksIAorICAgIDI1MTEzLCAyNTExOSwgMjUxMjUsIDI1MTMxLCAyNTEzNywgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNjEsIDI1MTY3LCAKKyAgICAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTMsIDI1MTk5LCAyNTIwNSwgMjUyMTEsIDI1MjE3LCAyNTIyMywgCisgICAgMjUyMjksIDI1MjM1LCAyNTI0MSwgMjUyNDcsIDI1MjUzLCAyNTI1OCwgMjUyNjQsIDI1MjcwLCAyNTI3NiwgMjUyODEsIAorICAgIDI1Mjg2LCAyNTI5MSwgMjUyOTYsIDI1MzAxLCAyNTMwNiwgMjUzMTEsIDI1MzE2LCAyNTMyMSwgMjUzMjYsIDI1MzMxLCAKKyAgICAyNTMzNiwgMjUzNDEsIDI1MzQ2LCAyNTM1MSwgMjUzNTYsIDI1MzYxLCAyNTM2NiwgMjUzNzEsIDI1Mzc2LCAyNTM4MSwgCisgICAgMjUzODYsIDI1MzkxLCAyNTM5NiwgMjU0MDEsIDI1NDA2LCAyNTQxMSwgMjU0MTYsIDI1NDIxLCAyNTQyNiwgMjU0MzEsIAorICAgIDI1NDM2LCAyNTQ0MSwgMjU0NDYsIDI1NDUxLCAyNTQ1NiwgMjU0NjEsIDI1NDY2LCAyNTQ3MSwgMjU0NzYsIDI1NDgxLCAKKyAgICAyNTQ4NiwgMjU0OTAsIDI1NDk1LCAyNTUwMCwgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgCisgICAgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIAorICAgIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAKKyAgICAyNTYzNSwgMjU2NDAsIDI1NjQ1LCAyNTY0OSwgMjU2NTQsIDI1NjU5LCAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OCwgCisgICAgMjU2ODMsIDI1Njg5LCAyNTY5NCwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTUsIDI1NzIwLCAyNTcyNSwgMjU3MzAsIAorICAgIDI1NzM1LCAyNTc0MCwgMjU3NDUsIDI1NzUwLCAyNTc1NSwgMjU3NjAsIDI1NzY1LCAyNTc3MCwgMjU3NzUsIDI1NzgwLCAKKyAgICAyNTc4NSwgMjU3OTAsIDI1Nzk1LCAyNTgwMCwgMjU4MDUsIDI1ODEwLCAyNTgxNSwgMjU4MjAsIDI1ODI1LCAyNTgzMCwgCisgICAgMjU4MzUsIDI1ODQwLCAyNTg0NSwgMjU4NTAsIDI1ODU1LCAyNTg2MCwgMjU4NjUsIDI1ODcwLCAyNTg3NSwgMjU4ODAsIAorICAgIDI1ODg1LCAyNTg5MCwgMjU4OTUsIDI1OTAwLCAyNTkwNSwgMjU5MTAsIDI1OTE1LCAyNTkyMCwgMjU5MjUsIDI1OTMwLCAKKyAgICAyNTkzNSwgMjU5NDEsIDI1OTQ2LCAyNTk1MSwgMjU5NTYsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTc2LCAyNTk4MSwgCisgICAgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAyNjAyNiwgMjYwMzEsIAorICAgIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgMjYwNzYsIDI2MDgxLCAKKyAgICAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTExLCAyNjExNiwgMjYxMjEsIDI2MTI2LCAyNjEzMSwgCisgICAgMjYxMzcsIDI2MTQxLCAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1NywgMjYxNjEsIDI2MTY1LCAyNjE2OSwgMjYxNzUsIAorICAgIDI2MTgxLCAyNjE4NywgMjYxOTMsIDI2MTk5LCAyNjIwNSwgMjYyMTEsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCAKKyAgICAyNjIzOSwgMjYyNDQsIDI2MjQ5LCAyNjI1NCwgMjYyNTksIDI2MjY0LCAyNjI2OSwgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgCisgICAgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIDI2MzI0LCAyNjMyOSwgMjYzMzQsIAorICAgIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDAsIDAsIDAsIDI2MzcxLCAyNjM4MSwgMjYzODUsIAorICAgIDI2MzkyLCAyNjM5NiwgMjY0MDAsIDI2NDA0LCAyNjQxMiwgMjY0MTYsIDI2NDIxLCAyNjQyNiwgMjY0MzEsIDI2NDM1LCAKKyAgICAyNjQ0MCwgMjY0NDUsIDI2NDQ4LCAyNjQ1MiwgMjY0NTYsIDI2NDY1LCAyNjQ2OSwgMjY0NzMsIDI2NDc5LCAyNjQ4MywgCisgICAgMjY0ODcsIDI2NDk1LCAyNjQ5OSwgMjY1MDcsIDI2NTEzLCAyNjUxOSwgMjY1MjUsIDI2NTMxLCAyNjU0MSwgMjY1NDcsIAorICAgIDI2NTUxLCAyNjU2MCwgMjY1NjMsIDI2NTY5LCAyNjU3MywgMjY1NzksIDI2NTg0LCAyNjU5MCwgMjY1OTgsIDI2NjA0LCAKKyAgICAyNjYwOSwgMjY2MTYsIDI2NjIxLCAyNjYyNSwgMjY2MjksIDI2NjM5LCAyNjY0NSwgMjY2NDksIDI2NjU5LCAyNjY2NSwgCisgICAgMjY2NjksIDI2NjczLCAyNjY4MCwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDksIDI2NzEzLCAyNjcxNywgMjY3MjEsIAorICAgIDI2NzI5LCAyNjczNiwgMjY3NDAsIDI2NzQ0LCAyNjc0OCwgMjY3NTIsIDI2NzU2LCAyNjc2MCwgMjY3NjQsIDI2NzY4LCAKKyAgICAyNjc3MiwgMjY3NzYsIDI2NzgwLCAyNjc4NSwgMjY3OTAsIDI2Nzk1LCAyNjc5OSwgMjY4MDMsIDI2ODA3LCAyNjgxMSwgCisgICAgMjY4MTUsIDI2ODE5LCAyNjgyNywgMjY4MzUsIDI2ODQzLCAyNjg1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4NTksIAorICAgIDI2ODYzLCAyNjg2NywgMjY4NzEsIDI2ODc1LCAyNjg4MCwgMjY4ODUsIDI2ODkwLCAyNjg5NSwgMjY5MDAsIDI2OTA0LCAKKyAgICAyNjkwOSwgMjY5MTMsIDAsIDI2OTE3LCAyNjkyMiwgMjY5MjcsIDI2OTMyLCAyNjkzNiwgMjY5NDEsIDI2OTQ2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk1MSwgMjY5NTUsIDI2OTU5LCAyNjk2MywgMjY5NjcsIDI2OTcyLCAKKyAgICAyNjk3NywgMjY5ODIsIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDAxLCAyNzAwNSwgMjcwMDksIDI3MDE0LCAyNzAxOSwgCisgICAgMjcwMjQsIDI3MDI5LCAyNzAzMywgMjcwMzgsIDI3MDQzLCAyNzA0OCwgMjcwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3MDU5LCAyNzA2MywgMjcwNjcsIDI3MDcxLCAyNzA3NSwgMjcwODAsIDI3MDg1LCAyNzA5MCwgMjcwOTUsIDI3MTAwLCAKKyAgICAyNzEwNCwgMjcxMDksIDI3MTEzLCAyNzExNywgMjcxMjIsIDI3MTI3LCAyNzEzMiwgMjcxMzcsIDI3MTQxLCAyNzE0NiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxNTEsIDI3MTU1LCAyNzE1OSwgMjcxNjMsIDI3MTY3LCAKKyAgICAyNzE3MiwgMjcxNzcsIDI3MTgyLCAyNzE4NywgMjcxOTIsIDI3MTk2LCAyNzIwMSwgMjcyMDUsIDAsIDI3MjA5LCAyNzIxNCwgCisgICAgMjcyMTksIDAsIDI3MjI0LCAyNzIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyMzQsIDI3MjM3LCAKKyAgICAyNzI0MSwgMjcyNDUsIDI3MjQ5LCAyNzI1MywgMjcyNTcsIDI3MjYxLCAyNzI2NSwgMjcyNjksIDI3MjczLCAyNzI3NywgCisgICAgMjcyODEsIDI3Mjg1LCAyNzI4OSwgMjcyOTMsIDI3Mjk3LCAyNzMwMSwgMjczMDQsIDI3MzA4LCAyNzMxMiwgMjczMTYsIAorICAgIDI3MzIwLCAyNzMyNCwgMjczMjgsIDI3MzMyLCAyNzMzNiwgMjczNDAsIDI3MzQ0LCAyNzM0OCwgMjczNTIsIDI3MzU2LCAKKyAgICAyNzM2MCwgMjczNjMsIDI3MzY3LCAyNzM3MSwgMjczNzcsIDI3MzgzLCAyNzM4OSwgMjczOTUsIDI3NDAxLCAyNzQwNywgCisgICAgMjc0MTMsIDI3NDE5LCAyNzQyNSwgMjc0MzEsIDI3NDM3LCAyNzQ0MywgMjc0NDksIDI3NDU1LCAyNzQ2NCwgMjc0NzMsIAorICAgIDI3NDc5LCAyNzQ4NSwgMjc0OTEsIDI3NDk2LCAyNzUwMCwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MTksIDI3NTI0LCAKKyAgICAyNzUyOSwgMjc1MzQsIDI3NTM4LCAyNzU0MywgMjc1NDcsIDI3NTUyLCAyNzU1NywgMjc1NjIsIDI3NTY3LCAyNzU3MSwgCisgICAgMjc1NzUsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkxLCAyNzU5NSwgMjc1OTksIDI3NjAzLCAyNzYwNywgMjc2MTMsIAorICAgIDI3NjE3LCAyNzYyMSwgMjc2MjUsIDI3NjI5LCAyNzYzMywgMjc2NDEsIDI3NjQ3LCAyNzY1MSwgMjc2NTcsIDI3NjYxLCAKKyAgICAyNzY2NywgMjc2NzEsIDAsIDAsIDI3Njc1LCAyNzY3OSwgMjc2ODIsIDI3Njg1LCAyNzY4OCwgMjc2OTEsIDI3Njk0LCAKKyAgICAyNzY5NywgMjc3MDEsIDI3NzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcwOCwgMjc3MTYsIDI3NzI0LCAyNzczMiwgMjc3NDAsIAorICAgIDI3NzQ4LCAyNzc1NiwgMjc3NjQsIDI3NzcyLCAyNzc4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3ODgsIDI3NzkxLCAyNzc5NCwgCisgICAgMjc3OTcsIDI3ODAyLCAyNzgwNSwgMjc4MTAsIDI3ODE3LCAyNzgyNSwgMjc4MzAsIDI3ODM3LCAyNzg0MCwgMjc4NDcsIAorICAgIDI3ODU0LCAyNzg2MSwgMCwgMjc4NjUsIDI3ODY5LCAyNzg3MiwgMjc4NzUsIDI3ODc4LCAyNzg4MSwgMjc4ODQsIDI3ODg3LCAKKyAgICAyNzg5MSwgMjc4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODk4LCAyNzkwMSwgMjc5MDQsIDI3OTA3LCAyNzkxMCwgMjc5MTMsIAorICAgIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQwLCAyNzk0NCwgMjc5NDgsIDI3OTUxLCAKKyAgICAyNzk1NSwgMjc5NTksIDI3OTYzLCAyNzk2NywgMjc5NzEsIDI3OTc1LCAyNzk3OSwgMjc5ODIsIDI3OTg2LCAyNzk5MCwgCisgICAgMjc5OTQsIDI3OTk3LCAyODAwMSwgMjgwMDUsIDI4MDA5LCAyODAxMywgMjgwMTcsIDI4MDIxLCAyODAyNSwgMjgwMjksIAorICAgIDI4MDM2LCAyODA0MSwgMjgwNDYsIDI4MDUxLCAyODA1NiwgMjgwNjIsIDI4MDY4LCAyODA3NCwgMjgwODAsIDI4MDg1LCAKKyAgICAyODA5MSwgMjgwOTcsIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzIsIDI4MTM3LCAyODE0MywgCisgICAgMjgxNDgsIDI4MTU0LCAyODE2MCwgMjgxNjYsIDI4MTcyLCAyODE3OCwgMjgxODMsIDI4MTg4LCAyODE5NCwgMjgyMDAsIAorICAgIDI4MjA1LCAyODIxMSwgMjgyMTYsIDI4MjIyLCAyODIyNywgMjgyMzIsIDI4MjM4LCAyODI0NCwgMjgyNTAsIDI4MjU2LCAKKyAgICAyODI2MiwgMjgyNjgsIDI4Mjc0LCAyODI4MCwgMjgyODYsIDI4MjkyLCAyODI5OCwgMjgzMDQsIDI4MzA5LCAyODMxNCwgCisgICAgMjgzMjAsIDI4MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODMzMiwgMjgzNDEsIDI4MzUwLCAyODM1OCwgMjgzNjYsIAorICAgIDI4Mzc2LCAyODM4NCwgMjgzOTMsIDI4NDAwLCAyODQwNywgMjg0MTQsIDI4NDIyLCAyODQzMCwgMjg0MzgsIDI4NDQ2LCAKKyAgICAyODQ1NCwgMjg0NjIsIDI4NDcwLCAyODQ3OCwgMjg0ODUsIDI4NDkzLCAyODUwMSwgMjg1MDksIDI4NTE3LCAyODUyNSwgCisgICAgMjg1MzUsIDI4NTQ1LCAyODU1NSwgMjg1NjUsIDI4NTc1LCAyODU4NSwgMjg1OTUsIDI4NjA1LCAyODYxNSwgMjg2MjUsIAorICAgIDI4NjM1LCAyODY0NSwgMjg2NTUsIDI4NjY1LCAyODY3MywgMjg2ODEsIDI4NjkxLCAyODY5OSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjg3MDksIDI4NzEzLCAyODcxNywgMjg3MjEsIDI4NzI1LCAyODcyOSwgMjg3MzMsIDI4NzM3LCAyODc0MSwgMjg3NDUsIAorICAgIDI4NzQ5LCAyODc1MywgMjg3NTcsIDI4NzYxLCAyODc2NSwgMjg3NjksIDI4NzczLCAyODc3NywgMjg3ODEsIDI4Nzg1LCAKKyAgICAyODc4OSwgMjg3OTMsIDI4Nzk3LCAyODgwMSwgMjg4MDcsIDI4ODExLCAyODgxNywgMjg4MjEsIDI4ODI3LCAyODgzMSwgCisgICAgMjg4MzcsIDI4ODQxLCAyODg0NSwgMjg4NDksIDI4ODUzLCAyODg1NywgMjg4NjEsIDI4ODY3LCAyODg3MywgMjg4NzksIAorICAgIDI4ODg1LCAyODg5MSwgMjg4OTcsIDI4OTAyLCAyODkwOCwgMjg5MTQsIDI4OTIwLCAyODkyNiwgMjg5MzMsIDI4OTM5LCAKKyAgICAyODk0NCwgMjg5NDksIDI4OTUzLCAyODk1NywgMjg5NjEsIDI4OTY1LCAyODk2OSwgMjg5NzMsIDI4OTc3LCAyODk4MywgCisgICAgMjg5ODksIDI4OTk1LCAyOTAwMCwgMjkwMDcsIDI5MDEyLCAyOTAxNywgMjkwMjMsIDI5MDI4LCAyOTAzNSwgMjkwNDIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MDQ4LCAyOTA1NCwgMjkwNTgsIDI5MDYzLCAyOTA2OCwgMjkwNzMsIAorICAgIDI5MDc4LCAyOTA4MywgMjkwODgsIDI5MDkzLCAyOTA5OCwgMjkxMDMsIDI5MTA4LCAyOTExMywgMjkxMTgsIDI5MTIzLCAKKyAgICAyOTEyOCwgMjkxMzIsIDI5MTM3LCAyOTE0MiwgMjkxNDcsIDI5MTUxLCAyOTE1NSwgMjkxNjAsIDI5MTY1LCAyOTE3MCwgCisgICAgMjkxNzUsIDI5MTgwLCAyOTE4NSwgMjkxODksIDI5MTk0LCAwLCAyOTE5OSwgMjkyMDQsIDI5MjA5LCAyOTIxNCwgMjkyMjAsIAorICAgIDI5MjI2LCAyOTIzMiwgMjkyMzgsIDI5MjQzLCAyOTI0OCwgMjkyNTQsIDI5MjYxLCAwLCAwLCAwLCAwLCAyOTI2OCwgCisgICAgMjkyNzMsIDI5Mjc5LCAyOTI4NSwgMjkyOTEsIDI5Mjk3LCAyOTMwMiwgMjkzMDcsIDI5MzEzLCAyOTMxOSwgMjkzMjQsIAorICAgIDI5MzI5LCAwLCAwLCAwLCAwLCAyOTMzNCwgMCwgMCwgMCwgMjkzMzksIDI5MzQ0LCAyOTM0OSwgMjkzNTQsIDI5MzU4LCAKKyAgICAyOTM2MiwgMjkzNjYsIDI5MzcwLCAyOTM3NCwgMjkzNzgsIDI5MzgzLCAyOTM4NywgMjkzOTIsIDI5Mzk3LCAyOTQwMywgCisgICAgMjk0MDksIDI5NDE1LCAyOTQyMSwgMjk0MjYsIDI5NDMyLCAyOTQzOCwgMjk0NDQsIDI5NDQ5LCAyOTQ1NSwgMjk0NjAsIAorICAgIDI5NDY2LCAyOTQ3MiwgMjk0NzcsIDI5NDgzLCAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNiwgMjk1MTEsIDI5NTE3LCAKKyAgICAyOTUyMywgMjk1MjgsIDI5NTM0LCAyOTUzOSwgMjk1NDUsIDI5NTUwLCAyOTU1NiwgMCwgMCwgMjk1NjIsIDI5NTY4LCAKKyAgICAyOTU3NCwgMjk1ODAsIDI5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTU5MiwgMjk2MDEsIAorICAgIDI5NjEwLCAyOTYxOCwgMjk2MjcsIDI5NjM2LCAyOTY0NCwgMjk2NTMsIDI5NjYyLCAyOTY3MSwgMjk2ODAsIDI5Njg4LCAKKyAgICAyOTY5NywgMjk3MDYsIDI5NzE0LCAyOTcyMywgMjk3MzIsIDI5NzQxLCAyOTc1MCwgMjk3NTksIDI5NzY4LCAyOTc3NiwgCisgICAgMjk3ODUsIDI5NzkzLCAyOTgwMSwgMjk4MTAsIDI5ODE4LCAyOTgyNywgMjk4MzYsIDI5ODQ1LCAyOTg1NCwgMjk4NjMsIAorICAgIDI5ODcyLCAyOTg4MCwgMjk4ODksIDI5ODk4LCAyOTkwNiwgMjk5MTUsIDI5OTI0LCAyOTkzMywgMjk5NDIsIDI5OTUxLCAKKyAgICAyOTk2MCwgMjk5NjksIDAsIDAsIDAsIDAsIDI5OTc4LCAyOTk4OCwgMjk5OTcsIDMwMDA2LCAzMDAxNCwgMzAwMjMsIAorICAgIDMwMDMxLCAzMDA0MCwgMzAwNDgsIDMwMDU3LCAzMDA2NiwgMzAwNzUsIDMwMDg0LCAzMDA5MywgMzAxMDIsIDMwMTExLCAKKyAgICAzMDEyMCwgMzAxMjksIDMwMTM4LCAzMDE0NywgMzAxNTYsIDMwMTY1LCAzMDE3NCwgMzAxODMsIDMwMTkyLCAzMDIwMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzAyMDgsIDMwMjE2LCAzMDIyMywgMzAyMzAsIDMwMjM3LCAzMDI0NCwgMzAyNTEsIDMwMjU4LCAKKyAgICAzMDI2NiwgMzAyNzMsIDMwMjgxLCAwLCAwLCAwLCAzMDI4OSwgMzAyOTcsIDMwMzA1LCAzMDMwOSwgMzAzMTUsIDMwMzIxLCAKKyAgICAzMDMyNywgMzAzMzMsIDMwMzM5LCAzMDM0NSwgMzAzNTEsIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgCisgICAgMzAzODcsIDMwMzkzLCAzMDM5OSwgMzA0MDMsIDMwNDA5LCAzMDQxNSwgMzA0MjEsIDMwNDI3LCAzMDQzMywgMzA0MzksIAorICAgIDMwNDQ1LCAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMzA0NzUsIDMwNDgxLCAzMDQ4NywgMzA0OTMsIDMwNDk3LCAKKyAgICAzMDUwMiwgMzA1MDcsIDMwNTEyLCAzMDUxNiwgMzA1MjEsIDMwNTI1LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NSwgCisgICAgMzA1NTAsIDMwNTU1LCAzMDU2MCwgMzA1NjUsIDMwNTcwLCAzMDU3NCwgMzA1NzksIDMwNTg0LCAzMDU4OSwgMzA1OTQsIAorICAgIDMwNTk4LCAzMDYwMiwgMzA2MDcsIDMwNjEyLCAzMDYxNywgMzA2MjIsIDAsIDAsIDMwNjI4LCAzMDYzMiwgMzA2MzksIAorICAgIDMwNjQ0LCAzMDY1MCwgMzA2NTYsIDMwNjYxLCAzMDY2NywgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2OTAsIDMwNjk2LCAKKyAgICAzMDcwMiwgMzA3MDgsIDMwNzEzLCAzMDcxOCwgMzA3MjQsIDMwNzI5LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCisgICAgMzA3NTgsIDMwNzY0LCAzMDc2OSwgMzA3NzQsIDMwNzc5LCAzMDc4NSwgMzA3OTEsIDMwNzk2LCAzMDgwMiwgMzA4MDgsIAorICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI3LCAzMDgzMiwgMzA4MzcsIDMwODQyLCAzMDg0NywgMzA4NTMsIDMwODU5LCAKKyAgICAzMDg2NSwgMzA4NzAsIDMwODc1LCAzMDg3OSwgMzA4ODQsIDMwODg4LCAzMDg5MywgMzA4OTcsIDMwOTAyLCAzMDkwNywgCisgICAgMzA5MTIsIDMwOTE3LCAzMDkyNCwgMzA5MzEsIDMwOTM4LCAzMDk0OCwgMzA5NTcsIDMwOTY0LCAzMDk3MCwgMzA5ODEsIAorICAgIDMwOTg2LCAzMDk5MiwgMCwgMzA5OTgsIDMxMDAzLCAzMTAwOCwgMzEwMTYsIDMxMDIyLCAzMTAzMCwgMzEwMzUsIDMxMDQxLCAKKyAgICAzMTA0NywgMzEwNTMsIDMxMDU4LCAzMTA2NCwgMzEwNjksIDMxMDc2LCAzMTA4MiwgMzEwODcsIDMxMDkzLCAzMTA5OSwgCisgICAgMzExMDUsIDMxMTEyLCAzMTExOSwgMzExMjYsIDMxMTMxLCAzMTEzNiwgMzExNDMsIDMxMTUwLCAzMTE1NywgMzExNjQsIAorICAgIDMxMTcxLCAwLCAwLCAzMTE3OCwgMzExODUsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNiwgMzEyMjIsIAorICAgIDMxMjI4LCAzMTIzNSwgMzEyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjQ4LCAzMTI1NCwgMzEyNTksIDMxMjY0LCAzMTI2OSwgCisgICAgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMwMSwgMzEzMDYsIDMxMzExLCAKKyAgICAzMTMxNiwgMzEzMjEsIDMxMzI2LCAzMTMzMSwgMzEzNDAsIDMxMzQ3LCAzMTM1MiwgMzEzNTcsIDMxMzYyLCAzMTM2NywgCisgICAgMzEzNzIsIDAsIDAsIDMxMzc3LCAzMTM4NCwgMzEzODcsIDMxMzkwLCAzMTM5MywgMzEzOTgsIDMxNDAyLCAzMTQwOCwgCisgICAgMzE0MTIsIDMxNDE3LCAzMTQyNCwgMzE0MzIsIDMxNDM2LCAzMTQ0MSwgMzE0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNDUwLCAzMTQ1NiwgMzE0NjIsIDMxNDY2LCAzMTQ3MCwgMzE0NzQsIAorICAgIDMxNDc4LCAzMTQ4NCwgMzE0ODgsIDMxNDk0LCAzMTQ5OCwgMzE1MDQsIDMxNTEwLCAzMTUxOCwgMzE1MjQsIDMxNTMyLCAKKyAgICAzMTUzNiwgMzE1NDAsIDMxNTQ0LCAzMTU1MCwgMzE1NTMsIDMxNTU5LCAzMTU2MywgMzE1NjksIDMxNTczLCAzMTU3NywgCisgICAgMzE1ODMsIDMxNTg3LCAzMTU5MywgMzE1OTcsIDMxNjAzLCAzMTYxMSwgMzE2MTksIDMxNjI3LCAzMTYzMywgMzE2MzcsIAorICAgIDMxNjQzLCAzMTY0NywgMzE2NTMsIDMxNjU3LCAzMTY2MCwgMzE2NjYsIDMxNjcwLCAzMTY3NiwgMzE2NzksIDMxNjgyLCAKKyAgICAzMTY4NiwgMzE2OTAsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEwLCAzMTcxMywgMzE3MTcsIDMxNzIyLCAzMTcyNywgCisgICAgMzE3MzQsIDMxNzM5LCAzMTc0NiwgMzE3NTMsIDMxNzYyLCAzMTc2OSwgMzE3NzgsIDMxNzgzLCAzMTc5MCwgMzE3OTcsIAorICAgIDMxODA2LCAzMTgxMSwgMzE4MTgsIDMxODIzLCAzMTgyOSwgMzE4MzUsIDMxODQxLCAzMTg0NywgMzE4NTMsIDMxODU5LCAwLCAKKyAgICAwLCAwLCAwLCAzMTg2NSwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDMxODgxLCAzMTg4NCwgMzE4ODcsIDMxODkxLCAKKyAgICAzMTg5NCwgMzE4OTgsIDMxOTAxLCAzMTkwNCwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI1LCAzMTkzMCwgCisgICAgMzE5MzUsIDMxOTQwLCAzMTk0NSwgMzE5NTIsIDMxOTU3LCAzMTk2MiwgMzE5NjcsIDMxOTcyLCAzMTk3OSwgMzE5ODUsIAorICAgIDMxOTkxLCAzMTk5NywgMzIwMDMsIDMyMDA5LCAzMjAxOCwgMzIwMjcsIDMyMDMzLCAzMjAzOSwgMzIwNDcsIDMyMDU1LCAKKyAgICAzMjA2NCwgMzIwNzMsIDMyMDgxLCAzMjA4OSwgMzIwOTgsIDMyMTA3LCAwLCAwLCAwLCAzMjExNSwgMzIxMjAsIDMyMTI1LCAKKyAgICAzMjEzMCwgMzIxMzQsIDMyMTM4LCAzMjE0MiwgMzIxNDcsIDMyMTUxLCAzMjE1NSwgMzIxNjAsIDMyMTY0LCAzMjE2OSwgCisgICAgMzIxNzQsIDMyMTc5LCAzMjE4NCwgMzIxODksIDMyMTk0LCAzMjE5OSwgMzIyMDQsIDMyMjA5LCAzMjIxNCwgMzIyMTgsIAorICAgIDMyMjIzLCAzMjIyOCwgMzIyMzMsIDMyMjM3LCAzMjI0MSwgMzIyNDYsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAKKyAgICAzMjI3MCwgMzIyNzYsIDMyMjgyLCAzMjI4OCwgMzIyOTQsIDMyMzAwLCAzMjMwNiwgMzIzMTIsIDMyMzE4LCAzMjMyNCwgCisgICAgMzIzMjksIDMyMzM0LCAzMjM0MSwgMzIzNDksIDMyMzU0LCAzMjM1OSwgMzIzNjQsIDMyMzY4LCAzMjM3MiwgMzIzNzYsIAorICAgIDMyMzgwLCAzMjM4NCwgMzIzODgsIDMyMzkzLCAzMjM5NywgMzI0MDIsIDMyNDA2LCAzMjQxMSwgMzI0MTYsIDMyNDIxLCAKKyAgICAzMjQyNywgMzI0MzMsIDMyNDM3LCAzMjQ0MywgMzI0NDcsIDMyNDUzLCAzMjQ1OSwgMzI0NjQsIDMyNDcxLCAzMjQ3NSwgCisgICAgMzI0ODEsIDMyNDg2LCAzMjQ5MywgMzI0OTgsIDMyNTA1LCAzMjUxMiwgMzI1MTcsIDMyNTI0LCAzMjUyOSwgMzI1MzQsIAorICAgIDMyNTM5LCAzMjU0NiwgMzI1NTAsIDMyNTU2LCAzMjU2MywgMzI1NzAsIDMyNTc1LCAzMjU4MiwgMzI1ODksIDMyNTkzLCAKKyAgICAzMjU5OSwgMzI2MDQsIDMyNjA5LCAzMjYxNiwgMzI2MjEsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAzMjY0NCwgCisgICAgMzI2NDksIDMyNjU0LCAzMjY2MSwgMzI2NjcsIDMyNjcyLCAzMjY3OSwgMzI2ODQsIDMyNjkxLCAzMjY5NiwgMzI3MDYsIAorICAgIDMyNzEyLCAzMjcxOCwgMzI3MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzI2LCAzMjczNSwgMzI3NDIsIDMyNzQ5LCAKKyAgICAzMjc1NiwgMzI3NjAsIDMyNzY1LCAzMjc3MCwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjgwMCwgCisgICAgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI1LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NCwgMzI4NDksIAorICAgIDMyODU0LCAzMjg1OSwgMzI4NjMsIDMyODY4LCAzMjg3MywgMzI4NzgsIDMyODgzLCAzMjg4NywgMzI4OTIsIDMyODk3LCAKKyAgICAzMjkwMSwgMzI5MDYsIDMyOTExLCAzMjkxNiwgMzI5MjEsIDMyOTI2LCAzMjkzMCwgMzI5MzYsIDMyOTQzLCAzMjk0OSwgCisgICAgMzI5NTQsIDMyOTU5LCAzMjk2NSwgMzI5NzAsIDMyOTc2LCAzMjk4MSwgMzI5ODcsIDMyOTkzLCAzMjk5OCwgMzMwMDQsIAorICAgIDMzMDEwLCAzMzAxNSwgMzMwMjEsIDMzMDI3LCAzMzAzMywgMzMwMzgsIDAsIDAsIDAsIDMzMDQzLCAzMzA0OSwgMzMwNTksIAorICAgIDMzMDY1LCAzMzA3MywgMzMwNzksIDMzMDg0LCAzMzA4OCwgMzMwOTIsIDMzMDk2LCAzMzEwMCwgMzMxMDQsIDMzMTA4LCAKKyAgICAzMzExMywgMzMxMTcsIDAsIDAsIDAsIDMzMTIyLCAzMzEyNywgMzMxMzIsIDMzMTM3LCAzMzE0NCwgMzMxNTAsIDMzMTU2LCAKKyAgICAzMzE2MiwgMzMxNjgsIDMzMTc0LCAzMzE4MCwgMzMxODcsIDMzMTkzLCAzMzIwMCwgMzMyMDcsIDMzMjE0LCAzMzIyMSwgCisgICAgMzMyMjgsIDMzMjM1LCAzMzI0MiwgMzMyNDksIDMzMjU2LCAzMzI2MywgMzMyNzAsIDMzMjc3LCAzMzI4NCwgMzMyOTEsIAorICAgIDMzMjk4LCAzMzMwNSwgMzMzMTIsIDMzMzE5LCAzMzMyNiwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAKKyAgICAzMzM2OCwgMzMzNzUsIDMzMzgyLCAzMzM4OSwgMzMzOTYsIDMzNDAzLCAzMzQxMCwgMzM0MTgsIDMzNDI2LCAzMzQzNCwgCisgICAgMzM0NDAsIDMzNDQ2LCAzMzQ1MiwgMzM0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDMzNDY5LCAzMzQ3NywgMzM0ODUsIDMzNDkzLCAzMzUwMSwgMzM1MTEsIDMzNTIxLCAzMzUzMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzM1NDEsIDMzNTQ2LCAzMzU1MSwgMzM1NTYsIDMzNTYxLCAzMzU3MCwgMzM1ODEsIDMzNTkwLCAzMzYwMSwgCisgICAgMzM2MDcsIDMzNjIwLCAzMzYyNiwgMzM2MzMsIDMzNjQwLCAzMzY0NSwgMzM2NTEsIDMzNjU3LCAzMzY2OCwgMzM2NzcsIAorICAgIDMzNjg0LCAzMzY5MSwgMzM3MDAsIDMzNzA3LCAzMzcxNiwgMzM3MjYsIDMzNzM2LCAzMzc0MywgMzM3NTAsIDMzNzU3LCAKKyAgICAzMzc2NywgMzM3NzIsIDMzNzgwLCAzMzc4NiwgMzM3OTQsIDMzODAzLCAzMzgwOCwgMzM4MTUsIDMzODIxLCAzMzgyNiwgMCwgCisgICAgMzM4MzEsIDMzODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMzg0NCwgMzM4NDksIDMzODU1LCAzMzg2MiwgMzM4NzAsIDMzODc2LCAKKyAgICAzMzg4MiwgMzM4ODgsIDMzODkzLCAzMzkwMCwgMzM5MDYsIDMzOTEyLCAzMzkxOCwgMzM5MjYsIDMzOTMyLCAzMzk0MCwgCisgICAgMzM5NDUsIDMzOTUxLCAzMzk1NywgMzM5NjQsIDMzOTcyLCAzMzk3OSwgMzM5ODUsIDMzOTkyLCAzMzk5OSwgMzQwMDUsIAorICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNiwgMzQwNDQsIDM0MDUzLCAzNDA1OSwgMzQwNjUsIDM0MDcxLCAKKyAgICAzNDA3NywgMzQwODUsIDM0MDg5LCAzNDA5NSwgMzQxMDEsIDM0MTA3LCAzNDExMywgMzQxMTksIDM0MTI1LCAzNDEyOSwgCisgICAgMzQxMzQsIDM0MTM5LCAzNDE0NiwgMzQxNTEsIDM0MTU1LCAzNDE2MSwgMzQxNjYsIDM0MTcxLCAzNDE3NSwgMzQxODAsIAorICAgIDM0MTg1LCAzNDE4OSwgMzQxOTQsIDM0MTk5LCAzNDIwNiwgMzQyMTAsIDM0MjE1LCAzNDIyMCwgMzQyMjQsIDM0MjI5LCAKKyAgICAzNDIzMywgMzQyMzgsIDM0MjQyLCAzNDI0OCwgMzQyNTMsIDM0MjYwLCAzNDI2NSwgMzQyNzAsIDM0Mjc0LCAzNDI3OSwgCisgICAgMzQyODQsIDM0MjkxLCAzNDI5NiwgMzQzMDIsIDM0MzA3LCAzNDMxMiwgMzQzMTcsIDM0MzIxLCAzNDMyNiwgMzQzMzMsIAorICAgIDM0MzQwLCAzNDM0NSwgMzQzNTAsIDM0MzU0LCAzNDM2MCwgMzQzNjcsIDM0MzcyLCAzNDM3NywgMzQzODIsIDM0Mzg4LCAKKyAgICAzNDM5MywgMzQzOTksIDM0NDA0LCAzNDQxMCwgMzQ0MTYsIDM0NDIyLCAzNDQyOSwgMzQ0MzYsIDM0NDQzLCAzNDQ1MCwgCisgICAgMzQ0NTcsIDM0NDY0LCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDQsIDM0NTEzLCAzNDUyMiwgMzQ1MzEsIAorICAgIDM0NTQzLCAzNDU1MiwgMzQ1NjEsIDM0NTcwLCAzNDU3NywgMzQ1ODIsIDM0NTg5LCAzNDU5NywgMzQ2MDUsIDM0NjEyLCAKKyAgICAzNDYxOSwgMzQ2MjYsIDM0NjMzLCAzNDY0MSwgMzQ2NTAsIDM0NjU5LCAzNDY2OCwgMzQ2NzcsIDM0Njg2LCAzNDY5NSwgCisgICAgMzQ3MDQsIDM0NzEzLCAzNDcyMiwgMzQ3MzEsIDM0NzQwLCAzNDc0OSwgMzQ3NTgsIDM0NzY3LCAzNDc3NSwgMzQ3ODQsIAorICAgIDM0Nzk1LCAzNDgwMywgMzQ4MTIsIDM0ODIzLCAzNDgzMiwgMzQ4NDEsIDM0ODUwLCAzNDg1OSwgMzQ4NjcsIDM0ODc2LCAKKyAgICAzNDg4MywgMzQ4ODgsIDM0ODk2LCAzNDkwMSwgMzQ5MDgsIDM0OTEzLCAzNDkyMiwgMzQ5MjgsIDM0OTM1LCAzNDk0MiwgCisgICAgMzQ5NDcsIDM0OTUyLCAzNDk2MCwgMzQ5NjgsIDM0OTc3LCAzNDk4NiwgMzQ5OTEsIDM0OTk4LCAzNTAwOSwgMzUwMTcsIAorICAgIDM1MDI2LCAzNTAzMiwgMzUwMzgsIDM1MDQzLCAzNTA1MCwgMzUwNTUsIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAKKyAgICAzNTA4NiwgMzUwOTMsIDM1MDk4LCAzNTEwNywgMzUxMTUsIDM1MTIwLCAzNTEyNSwgMzUxMzIsIDM1MTM5LCAzNTE0MywgCisgICAgMzUxNDcsIDM1MTUwLCAzNTE1MywgMzUxNTYsIDM1MTU5LCAzNTE2MiwgMzUxNjUsIDM1MTcyLCAzNTE3NSwgMzUxNzgsIAorICAgIDM1MTgzLCAzNTE4NywgMzUxOTEsIDM1MTk1LCAzNTE5OSwgMzUyMDMsIDM1MjEyLCAzNTIxOCwgMzUyMjQsIDM1MjMwLCAKKyAgICAzNTIzOCwgMzUyNDYsIDM1MjUyLCAzNTI1OCwgMzUyNjUsIDM1MjcxLCAzNTI3NiwgMzUyODIsIDM1Mjg5LCAzNTI5NSwgCisgICAgMzUzMDIsIDM1MzA4LCAzNTMxNiwgMzUzMjEsIDM1MzI3LCAzNTMzMywgMzUzMzksIDM1MzQ1LCAzNTM1MSwgMzUzNTcsIAorICAgIDM1MzYzLCAzNTM3NCwgMzUzODQsIDM1MzkwLCAzNTM5NiwgMzU0MDYsIDM1NDEyLCAzNTQyMCwgMzU0MjgsIDM1NDM2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzNTQ0MSwgMzU0NDgsIDM1NDU1LCAzNTQ2MCwgMzU0NjksIDM1NDc3LCAzNTQ4NSwgMzU0OTIsIAorICAgIDM1NDk5LCAzNTUwNiwgMzU1MTMsIDM1NTIxLCAzNTUyOSwgMzU1MzksIDM1NTQ5LCAzNTU1NywgMzU1NjUsIDM1NTczLCAKKyAgICAzNTU4MSwgMzU1OTAsIDM1NTk5LCAzNTYwNywgMzU2MTUsIDM1NjI0LCAzNTYzMywgMzU2NDMsIDM1NjUzLCAzNTY2MiwgCisgICAgMzU2NzEsIDM1Njc5LCAzNTY4NywgMzU2OTUsIDM1NzAzLCAzNTcxMywgMzU3MjMsIDM1NzMxLCAzNTczOSwgMzU3NDcsIAorICAgIDM1NzU1LCAzNTc2MywgMzU3NzEsIDM1Nzc5LCAzNTc4NywgMzU3OTUsIDM1ODAzLCAzNTgxMSwgMzU4MTksIDM1ODI4LCAKKyAgICAzNTgzNywgMzU4NDYsIDM1ODU1LCAzNTg2NSwgMzU4NzUsIDM1ODgyLCAzNTg4OSwgMzU4OTcsIDM1OTA1LCAzNTkxNCwgCisgICAgMzU5MjMsIDM1OTMxLCAzNTkzOSwgMzU5NTEsIDM1OTYzLCAzNTk3MiwgMzU5ODEsIDM1OTkwLCAzNTk5OSwgMzYwMDYsIAorICAgIDM2MDEzLCAzNjAyMSwgMzYwMjksIDM2MDM3LCAzNjA0NSwgMzYwNTMsIDM2MDYxLCAzNjA2OSwgMzYwNzcsIDM2MDg2LCAKKyAgICAzNjA5NSwgMzYxMDQsIDM2MTEzLCAzNjEyMiwgMzYxMzEsIDM2MTQxLCAzNjE1MSwgMzYxNjEsIDM2MTcxLCAzNjE4MCwgCisgICAgMzYxODksIDM2MTk2LCAzNjIwMywgMzYyMTEsIDM2MjE5LCAzNjIyNywgMzYyMzUsIDM2MjQzLCAzNjI1MSwgMzYyNjMsIAorICAgIDM2Mjc1LCAzNjI4NCwgMzYyOTMsIDM2MzAxLCAzNjMwOSwgMzYzMTcsIDM2MzI1LCAzNjMzNiwgMzYzNDcsIDM2MzU4LCAKKyAgICAzNjM2OSwgMzYzODEsIDM2MzkzLCAzNjQwMSwgMzY0MDksIDM2NDE3LCAzNjQyNSwgMzY0MzQsIDM2NDQzLCAzNjQ1MiwgCisgICAgMzY0NjEsIDM2NDY5LCAzNjQ3NywgMzY0ODUsIDM2NDkzLCAzNjUwMSwgMzY1MDksIDM2NTE4LCAzNjUyNywgMzY1MzcsIAorICAgIDM2NTQ3LCAzNjU1NSwgMzY1NjMsIDM2NTcxLCAzNjU3OSwgMzY1ODcsIDM2NTk1LCAzNjYwMiwgMzY2MDksIDM2NjE3LCAKKyAgICAzNjYyNSwgMzY2MzMsIDM2NjQxLCAzNjY0OSwgMzY2NTcsIDM2NjY1LCAzNjY3MywgMzY2ODEsIDM2Njg5LCAzNjY5NywgCisgICAgMzY3MDUsIDM2NzEzLCAzNjcyMSwgMzY3MjksIDM2NzM3LCAzNjc0NiwgMzY3NTUsIDM2NzY0LCAzNjc3MiwgMzY3ODEsIAorICAgIDM2NzkwLCAzNjc5OSwgMzY4MDgsIDM2ODE4LCAzNjgyNywgMzY4MzMsIDM2ODM4LCAzNjg0NSwgMzY4NTIsIDM2ODYwLCAKKyAgICAzNjg2OCwgMzY4NzcsIDM2ODg2LCAzNjg5NiwgMzY5MDYsIDM2OTE3LCAzNjkyOCwgMzY5MzgsIDM2OTQ4LCAzNjk1OCwgCisgICAgMzY5NjgsIDM2OTc3LCAzNjk4NiwgMzY5OTYsIDM3MDA2LCAzNzAxNywgMzcwMjgsIDM3MDM4LCAzNzA0OCwgMzcwNTgsIAorICAgIDM3MDY4LCAzNzA3NSwgMzcwODIsIDM3MDkwLCAzNzA5OCwgMzcxMDUsIDM3MTEyLCAzNzEyMSwgMzcxMzAsIDM3MTQwLCAKKyAgICAzNzE1MCwgMzcxNjEsIDM3MTcyLCAzNzE4MiwgMzcxOTIsIDM3MjAyLCAzNzIxMiwgMzcyMjEsIDM3MjMwLCAzNzIzOCwgCisgICAgMzcyNDYsIDM3MjUzLCAzNzI2MCwgMzcyNjgsIDM3Mjc2LCAzNzI4NSwgMzcyOTQsIDM3MzA0LCAzNzMxNCwgMzczMjUsIAorICAgIDM3MzM2LCAzNzM0NiwgMzczNTYsIDM3MzY2LCAzNzM3NiwgMzczODUsIDM3Mzk0LCAzNzQwNCwgMzc0MTQsIDM3NDI1LCAKKyAgICAzNzQzNiwgMzc0NDYsIDM3NDU2LCAzNzQ2NiwgMzc0NzYsIDM3NDgzLCAzNzQ5MCwgMzc0OTgsIDM3NTA2LCAzNzUxNSwgCisgICAgMzc1MjQsIDM3NTM0LCAzNzU0NCwgMzc1NTUsIDM3NTY2LCAzNzU3NiwgMzc1ODYsIDM3NTk2LCAzNzYwNiwgMzc2MTQsIAorICAgIDM3NjIyLCAzNzYzMCwgMzc2MzgsIDM3NjQ3LCAzNzY1NiwgMzc2NjQsIDM3NjcyLCAzNzY3OSwgMzc2ODYsIDM3NjkzLCAKKyAgICAzNzcwMCwgMzc3MDgsIDM3NzE2LCAzNzcyNCwgMzc3MzIsIDM3NzQzLCAzNzc1NCwgMzc3NjUsIDM3Nzc2LCAzNzc4NywgCisgICAgMzc3OTgsIDM3ODA2LCAzNzgxNCwgMzc4MjUsIDM3ODM2LCAzNzg0NywgMzc4NTgsIDM3ODY5LCAzNzg4MCwgMzc4ODgsIAorICAgIDM3ODk2LCAzNzkwNywgMzc5MTgsIDM3OTI5LCAwLCAwLCAzNzk0MCwgMzc5NDgsIDM3OTU2LCAzNzk2NywgMzc5NzgsIAorICAgIDM3OTg5LCAwLCAwLCAzODAwMCwgMzgwMDgsIDM4MDE2LCAzODAyNywgMzgwMzgsIDM4MDQ5LCAzODA2MCwgMzgwNzEsIAorICAgIDM4MDgyLCAzODA5MCwgMzgwOTgsIDM4MTA5LCAzODEyMCwgMzgxMzEsIDM4MTQyLCAzODE1MywgMzgxNjQsIDM4MTcyLCAKKyAgICAzODE4MCwgMzgxOTEsIDM4MjAyLCAzODIxMywgMzgyMjQsIDM4MjM1LCAzODI0NiwgMzgyNTQsIDM4MjYyLCAzODI3MywgCisgICAgMzgyODQsIDM4Mjk1LCAzODMwNiwgMzgzMTcsIDM4MzI4LCAzODMzNiwgMzgzNDQsIDM4MzU1LCAzODM2NiwgMzgzNzcsIDAsIAorICAgIDAsIDM4Mzg4LCAzODM5NiwgMzg0MDQsIDM4NDE1LCAzODQyNiwgMzg0MzcsIDAsIDAsIDM4NDQ4LCAzODQ1NiwgMzg0NjQsIAorICAgIDM4NDc1LCAzODQ4NiwgMzg0OTcsIDM4NTA4LCAzODUxOSwgMCwgMzg1MzAsIDAsIDM4NTM4LCAwLCAzODU0OSwgMCwgCisgICAgMzg1NjAsIDM4NTcxLCAzODU3OSwgMzg1ODcsIDM4NTk4LCAzODYwOSwgMzg2MjAsIDM4NjMxLCAzODY0MiwgMzg2NTMsIAorICAgIDM4NjYxLCAzODY2OSwgMzg2ODAsIDM4NjkxLCAzODcwMiwgMzg3MTMsIDM4NzI0LCAzODczNSwgMzg3NDMsIDM4NzUxLCAKKyAgICAzODc1OSwgMzg3NjcsIDM4Nzc1LCAzODc4MywgMzg3OTEsIDM4Nzk5LCAzODgwNywgMzg4MTUsIDM4ODIzLCAzODgzMSwgCisgICAgMzg4MzksIDAsIDAsIDM4ODQ3LCAzODg1OCwgMzg4NjksIDM4ODgzLCAzODg5NywgMzg5MTEsIDM4OTI1LCAzODkzOSwgCisgICAgMzg5NTMsIDM4OTY0LCAzODk3NSwgMzg5ODksIDM5MDAzLCAzOTAxNywgMzkwMzEsIDM5MDQ1LCAzOTA1OSwgMzkwNzAsIAorICAgIDM5MDgxLCAzOTA5NSwgMzkxMDksIDM5MTIzLCAzOTEzNywgMzkxNTEsIDM5MTY1LCAzOTE3NiwgMzkxODcsIDM5MjAxLCAKKyAgICAzOTIxNSwgMzkyMjksIDM5MjQzLCAzOTI1NywgMzkyNzEsIDM5MjgyLCAzOTI5MywgMzkzMDcsIDM5MzIxLCAzOTMzNSwgCisgICAgMzkzNDksIDM5MzYzLCAzOTM3NywgMzkzODgsIDM5Mzk5LCAzOTQxMywgMzk0MjcsIDM5NDQxLCAzOTQ1NSwgMzk0NjksIAorICAgIDM5NDgzLCAzOTQ5MSwgMzk0OTksIDM5NTEwLCAzOTUxOCwgMCwgMzk1MjksIDM5NTM3LCAzOTU0OCwgMzk1NTYsIDM5NTY0LCAKKyAgICAzOTU3MiwgMzk1ODAsIDM5NTg4LCAzOTU5MSwgMzk1OTQsIDM5NTk3LCAzOTYwMCwgMzk2MDYsIDM5NjE3LCAzOTYyNSwgMCwgCisgICAgMzk2MzYsIDM5NjQ0LCAzOTY1NSwgMzk2NjMsIDM5NjcxLCAzOTY3OSwgMzk2ODcsIDM5Njk1LCAzOTcwMSwgMzk3MDcsIAorICAgIDM5NzEzLCAzOTcyMSwgMzk3MjksIDM5NzQwLCAwLCAwLCAzOTc1MSwgMzk3NTksIDM5NzcwLCAzOTc3OCwgMzk3ODYsIAorICAgIDM5Nzk0LCAwLCAzOTgwMiwgMzk4MDgsIDM5ODE0LCAzOTgyMCwgMzk4MjgsIDM5ODM2LCAzOTg0NywgMzk4NTgsIDM5ODY2LCAKKyAgICAzOTg3NCwgMzk4ODIsIDM5ODkzLCAzOTkwMSwgMzk5MDksIDM5OTE3LCAzOTkyNSwgMzk5MzMsIDM5OTM5LCAzOTk0NSwgMCwgCisgICAgMCwgMzk5NDgsIDM5OTU5LCAzOTk2NywgMCwgMzk5NzgsIDM5OTg2LCAzOTk5NywgNDAwMDUsIDQwMDEzLCA0MDAyMSwgCisgICAgNDAwMjksIDQwMDM3LCA0MDA0MCwgMCwgNDAwNDMsIDQwMDQ3LCA0MDA1MSwgNDAwNTUsIDQwMDU5LCA0MDA2MywgNDAwNjcsIAorICAgIDQwMDcxLCA0MDA3NSwgNDAwNzksIDQwMDgzLCA0MDA4NywgNDAwOTMsIDQwMDk5LCA0MDEwNSwgNDAxMDgsIDQwMTExLCAKKyAgICA0MDExMywgNDAxMTcsIDQwMTIxLCA0MDEyNSwgNDAxMjksIDQwMTMyLCA0MDEzNiwgNDAxNDAsIDQwMTQ2LCA0MDE1MiwgCisgICAgNDAxNTksIDQwMTY2LCA0MDE3MSwgNDAxNzYsIDQwMTgyLCA0MDE4OCwgNDAxOTAsIDQwMTkzLCA0MDE5NSwgNDAxOTksIAorICAgIDQwMjAzLCA0MDIwNywgNDAyMTEsIDQwMjE1LCA0MDIxOSwgNDAyMjMsIDQwMjI3LCA0MDIzMSwgNDAyMzcsIDQwMjQxLCAKKyAgICA0MDI0NSwgNDAyNTEsIDQwMjU2LCA0MDI2MywgNDAyNjUsIDQwMjY4LCA0MDI3MiwgNDAyNzYsIDQwMjgxLCA0MDI4NywgCisgICAgNDAyODksIDQwMjk4LCA0MDMwNywgNDAzMTAsIDQwMzE0LCA0MDMxNiwgNDAzMTgsIDQwMzIwLCA0MDMyMywgNDAzMjksIAorICAgIDQwMzMxLCA0MDMzNSwgNDAzMzksIDQwMzQ2LCA0MDM1MywgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzIsIDQwMzc3LCAKKyAgICA0MDM4MSwgNDAzODUsIDQwMzg4LCA0MDM5MiwgNDAzOTYsIDQwNDAzLCA0MDQwOCwgNDA0MTIsIDQwNDE2LCA0MDQyMSwgCisgICAgNDA0MjUsIDQwNDI5LCA0MDQzNCwgNDA0MzksIDQwNDQzLCA0MDQ0NywgNDA0NTEsIDQwNDUzLCA0MDQ1OCwgNDA0NjMsIAorICAgIDQwNDY3LCA0MDQ3MSwgNDA0NzUsIDQwNDc5LCAwLCA0MDQ4MywgNDA0ODcsIDQwNDkxLCA0MDQ5NywgNDA1MDMsIDQwNTA5LCAKKyAgICA0MDUxNSwgNDA1MjIsIDQwNTI5LCA0MDUzNCwgNDA1MzksIDQwNTQzLCAwLCAwLCA0MDU0OSwgNDA1NTIsIDQwNTU1LCAKKyAgICA0MDU1OCwgNDA1NjIsIDQwNTY1LCA0MDU2OSwgNDA1NzMsIDQwNTc3LCA0MDU4MiwgNDA1ODcsIDQwNTkyLCA0MDU5OSwgCisgICAgNDA2MDMsIDQwNjA2LCA0MDYwOSwgNDA2MTIsIDQwNjE1LCA0MDYxOCwgNDA2MjEsIDQwNjI1LCA0MDYyOCwgNDA2MzIsIAorICAgIDQwNjM2LCA0MDY0MCwgNDA2NDUsIDQwNjUwLCAwLCA0MDY1NSwgNDA2NjEsIDQwNjY3LCA0MDY3MywgNDA2ODAsIDQwNjg3LCAKKyAgICA0MDY5NCwgNDA3MDEsIDQwNzA3LCA0MDcxNCwgNDA3MjEsIDQwNzI4LCA0MDczNCwgMCwgMCwgMCwgNDA3NDEsIDQwNzQ0LCAKKyAgICA0MDc0NywgNDA3NTAsIDQwNzU1LCA0MDc1OCwgNDA3NjEsIDQwNzY0LCA0MDc2NywgNDA3NzAsIDQwNzczLCA0MDc3OCwgCisgICAgNDA3ODEsIDQwNzg0LCA0MDc4NywgNDA3OTAsIDQwNzkzLCA0MDc5OCwgNDA4MDEsIDQwODA0LCA0MDgwNywgNDA4MTAsIAorICAgIDQwODEzLCA0MDgxOCwgNDA4MjEsIDQwODI0LCA0MDgyOSwgNDA4MzQsIDQwODM4LCA0MDg0MSwgNDA4NDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwODQ3LCA0MDg1MiwgNDA4NTcsIDQwODY0LCAKKyAgICA0MDg3MiwgNDA4NzcsIDQwODgyLCA0MDg4NiwgNDA4OTAsIDQwODk1LCA0MDkwMiwgNDA5MDksIDQwOTEzLCA0MDkxOCwgCisgICAgNDA5MjMsIDQwOTI4LCA0MDkzMywgNDA5NDAsIDQwOTQ1LCA0MDk1MCwgNDA5NTUsIDQwOTY0LCA0MDk3MSwgNDA5NzgsIAorICAgIDQwOTgyLCA0MDk4NywgNDA5OTMsIDQwOTk4LCA0MTAwNSwgNDEwMTMsIDQxMDIxLCA0MTAyNSwgNDEwMjksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMDMzLCA0MTAzNywgNDEwNDUsIDQxMDQ5LCA0MTA1MywgCisgICAgNDEwNTgsIDQxMDYyLCA0MTA2NiwgNDEwNzAsIDQxMDcyLCA0MTA3NiwgNDEwODAsIDQxMDg0LCA0MTA4OSwgNDEwOTMsIAorICAgIDQxMDk3LCA0MTEwNSwgNDExMDgsIDQxMTEyLCA0MTExNSwgNDExMTgsIDQxMTI0LCA0MTEyOCwgNDExMzEsIDQxMTM3LCAKKyAgICA0MTE0MSwgNDExNDUsIDQxMTQ5LCA0MTE1MiwgNDExNTYsIDQxMTU5LCA0MTE2MywgNDExNjUsIDQxMTY4LCA0MTE3MSwgCisgICAgNDExNzUsIDQxMTc3LCA0MTE4MSwgNDExODQsIDQxMTg3LCA0MTE5MiwgNDExOTcsIDQxMjA0LCA0MTIwNywgNDEyMTAsIAorICAgIDQxMjE0LCA0MTIxOSwgNDEyMjIsIDQxMjI1LCA0MTIyOCwgNDEyMzIsIDQxMjM3LCA0MTI0MSwgNDEyNDQsIDQxMjQ2LCAKKyAgICA0MTI0OSwgNDEyNTIsIDQxMjU1LCA0MTI1OSwgNDEyNjQsIDQxMjY3LCA0MTI3MSwgNDEyNzUsIDQxMjc5LCA0MTI4MywgCisgICAgNDEyODgsIDQxMjk0LCA0MTI5OSwgNDEzMDQsIDQxMzEwLCA0MTMxNSwgNDEzMjAsIDQxMzI0LCA0MTMyOCwgNDEzMzMsIAorICAgIDQxMzM3LCA0MTM0MSwgNDEzNDQsIDQxMzQ2LCA0MTM1MSwgNDEzNTcsIDQxMzY0LCA0MTM3MSwgNDEzNzgsIDQxMzg1LCAKKyAgICA0MTM5MiwgNDEzOTksIDQxNDA2LCA0MTQxMywgNDE0MjEsIDQxNDI4LCA0MTQzNiwgNDE0NDMsIDQxNDUwLCA0MTQ1OCwgCisgICAgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODEsIDQxNDg2LCA0MTQ5MSwgNDE0OTYsIDQxNTAxLCA0MTUwNywgNDE1MTIsIAorICAgIDQxNTE4LCA0MTUyNCwgNDE1MzAsIDQxNTM2LCA0MTU0MiwgNDE1NDksIDQxNTU3LCA0MTU2NCwgNDE1NzAsIDQxNTc2LCAKKyAgICA0MTU4MiwgNDE1ODgsIDQxNTk0LCA0MTYwMCwgNDE2MDcsIDQxNjEzLCA0MTYyMCwgNDE2MjcsIDQxNjM0LCA0MTY0MSwgCisgICAgNDE2NDgsIDQxNjU2LCA0MTY2NSwgNDE2NzMsIDQxNjg0LCA0MTY5MiwgNDE3MDAsIDQxNzA5LCA0MTcxNiwgNDE3MjUsIAorICAgIDQxNzM0LCA0MTc0MiwgNDE3NTEsIDQxNzU5LCA0MTc2MywgMCwgMCwgMCwgMCwgNDE3NjcsIDQxNzY5LCA0MTc3MSwgCisgICAgNDE3NzMsIDQxNzc1LCA0MTc3OCwgNDE3ODEsIDQxNzg1LCA0MTc4OSwgNDE3OTQsIDQxNzk5LCA0MTgwMywgNDE4MDcsIAorICAgIDQxODExLCA0MTgxNSwgNDE4MjAsIDQxODI1LCA0MTgzMCwgNDE4MzUsIDQxODQwLCA0MTg0NSwgNDE4NTAsIDQxODU1LCAKKyAgICA0MTg2MCwgNDE4NjUsIDQxODcxLCA0MTg3NSwgNDE4NzksIDQxODg0LCA0MTg4OSwgNDE4OTQsIDQxODk5LCA0MTkwMywgCisgICAgNDE5MTAsIDQxOTE3LCA0MTkyNCwgNDE5MzEsIDQxOTM4LCA0MTk0NSwgNDE5NTIsIDQxOTU5LCA0MTk2NywgNDE5NzksIAorICAgIDQxOTg1LCA0MTk5MSwgNDE5OTgsIDQyMDA1LCA0MjAxMiwgNDIwMTksIDQyMDI2LCA0MjAzMywgNDIwNDAsIDQyMDQ3LCAKKyAgICA0MjA1MiwgNDIwNTgsIDQyMDYzLCA0MjA2OCwgNDIwNzMsIDQyMDc4LCA0MjA4MywgNDIwOTAsIDQyMDk3LCA0MjEwMiwgCisgICAgNDIxMDgsIDQyMTEzLCA0MjExNiwgNDIxMTksIDQyMTIyLCA0MjEyNSwgNDIxMjksIDQyMTMzLCA0MjEzOCwgNDIxNDMsIAorICAgIDQyMTQ5LCA0MjE1NSwgNDIxNTksIDQyMTYzLCA0MjE2NywgNDIxNzEsIDQyMTc2LCA0MjE4MSwgNDIxODUsIDQyMTg5LCAKKyAgICA0MjE5MywgNDIxOTcsIDQyMjAyLCA0MjIwNywgNDIyMTAsIDQyMjEzLCA0MjIxNiwgNDIyMTksIDQyMjI1LCA0MjIzMiwgCisgICAgNDIyNDMsIDQyMjUzLCA0MjI1NywgNDIyNjUsIDQyMjcyLCA0MjI4MCwgNDIyODksIDQyMjkzLCA0MjI5OSwgNDIzMDUsIAorICAgIDQyMzA5LCA0MjMxNCwgNDIzMTksIDQyMzI1LCA0MjMzMSwgNDIzMzcsIDQyMzQ0LCA0MjM0OCwgNDIzNTIsIDQyMzU3LCAKKyAgICA0MjM2MCwgNDIzNjIsIDQyMzY2LCA0MjM3MCwgNDIzNzgsIDQyMzgyLCA0MjM4NCwgNDIzODYsIDQyMzkwLCA0MjM5OCwgCisgICAgNDI0MDMsIDQyNDA5LCA0MjQxOSwgNDI0MjYsIDQyNDMxLCA0MjQzNSwgNDI0MzksIDQyNDQzLCA0MjQ0NiwgNDI0NDksIAorICAgIDQyNDUyLCA0MjQ1NiwgNDI0NjAsIDQyNDY0LCA0MjQ2OCwgNDI0NzIsIDQyNDc1LCA0MjQ3OSwgNDI0ODMsIDQyNDg2LCAKKyAgICA0MjQ4OCwgNDI0OTEsIDQyNDkzLCA0MjQ5NywgNDI1MDEsIDQyNTAzLCA0MjUwOSwgNDI1MTIsIDQyNTE3LCA0MjUyMSwgCisgICAgNDI1MjUsIDQyNTI3LCA0MjUyOSwgNDI1MzEsIDQyNTM0LCA0MjUzOCwgNDI1NDIsIDQyNTQ2LCA0MjU1MCwgNDI1NTQsIAorICAgIDQyNTYwLCA0MjU2NiwgNDI1NjgsIDQyNTcwLCA0MjU3MiwgNDI1NzQsIDQyNTc3LCA0MjU3OSwgNDI1ODMsIDQyNTg1LCAKKyAgICA0MjU4OSwgNDI1OTMsIDQyNTk4LCA0MjYwMiwgNDI2MDYsIDQyNjEwLCA0MjYxNCwgNDI2MTgsIDQyNjI0LCA0MjYyOCwgCisgICAgNDI2MzgsIDQyNjQ4LCA0MjY1MiwgNDI2NTgsIDQyNjY1LCA0MjY2OSwgNDI2NzMsIDQyNjc2LCA0MjY4MSwgNDI2ODUsIAorICAgIDQyNjkxLCA0MjY5NSwgNDI3MDgsIDQyNzE3LCA0MjcyMSwgNDI3MjUsIDQyNzMxLCA0MjczNSwgNDI3MzgsIDQyNzQwLCAKKyAgICA0Mjc0MywgNDI3NDcsIDQyNzUxLCA0Mjc1OCwgNDI3NjIsIDQyNzY2LCA0Mjc3MCwgNDI3NzMsIDQyNzc4LCA0Mjc4MywgCisgICAgNDI3ODksIDQyNzk1LCA0MjgwMCwgNDI4MDUsIDQyODEzLCA0MjgyMSwgNDI4MjUsIDQyODI5LCA0MjgzMSwgNDI4MzYsIAorICAgIDQyODQwLCA0Mjg0NCwgNDI4NTIsIDQyODYwLCA0Mjg2NywgNDI4NzQsIDQyODgzLCA0Mjg5MiwgNDI4OTgsIDQyOTA0LCAKKyAgICA0MjkxMiwgNDI5MjAsIDQyOTIyLCA0MjkyNCwgNDI5MzAsIDQyOTM2LCA0Mjk0MywgNDI5NTAsIDQyOTU2LCA0Mjk2MiwgCisgICAgNDI5NjYsIDQyOTcwLCA0Mjk3NywgNDI5ODQsIDQyOTkxLCA0Mjk5OCwgNDMwMDgsIDQzMDE4LCA0MzAyNiwgNDMwMzQsIAorICAgIDQzMDM2LCA0MzA0MCwgNDMwNDQsIDQzMDQ5LCA0MzA1NCwgNDMwNjIsIDQzMDcwLCA0MzA3MywgNDMwNzYsIDQzMDc5LCAKKyAgICA0MzA4MiwgNDMwODUsIDQzMDkwLCA0MzA5NCwgNDMwOTksIDQzMTA0LCA0MzEwNywgNDMxMTAsIDQzMTEzLCA0MzExNiwgCisgICAgNDMxMTksIDQzMTIzLCA0MzEyNiwgNDMxMjksIDQzMTMyLCA0MzEzNSwgNDMxMzcsIDQzMTM5LCA0MzE0MSwgNDMxNDMsIAorICAgIDQzMTUxLCA0MzE1OSwgNDMxNjUsIDQzMTY5LCA0MzE3NSwgNDMxODUsIDQzMTkxLCA0MzE5NywgNDMyMDMsIDQzMjExLCAKKyAgICA0MzIyMCwgNDMyMzIsIDQzMjM2LCA0MzI0MCwgNDMyNDIsIDQzMjQ4LCA0MzI1MCwgNDMyNTIsIDQzMjU0LCA0MzI1NiwgCisgICAgNDMyNjIsIDQzMjY1LCA0MzI3MSwgNDMyNzcsIDQzMjgxLCA0MzI4NSwgNDMyODksIDQzMjkyLCA0MzI5NiwgNDMzMDAsIAorICAgIDQzMzAyLCA0MzMxMSwgNDMzMjAsIDQzMzI1LCA0MzMzMCwgNDMzMzYsIDQzMzQyLCA0MzM0OCwgNDMzNTEsIDQzMzU0LCAKKyAgICA0MzM1NywgNDMzNjAsIDQzMzYyLCA0MzM2NywgNDMzNzIsIDQzMzc3LCA0MzM4MywgNDMzODksIDQzMzk4LCA0MzQwNywgCisgICAgNDM0MTQsIDQzNDIxLCA0MzQyOCwgNDM0MzUsIDQzNDQ1LCA0MzQ1NSwgNDM0NjUsIDQzNDc1LCA0MzQ4NSwgNDM0OTUsIAorICAgIDQzNTA0LCA0MzUxMywgNDM1MjIsIDQzNTMxLCA0MzUzOSwgNDM1NTEsIDQzNTYyLCA0MzU3OCwgNDM1ODEsIDQzNTg3LCAKKyAgICA0MzU5MywgNDM1OTksIDQzNjA3LCA0MzYyMiwgNDM2MzgsIDQzNjQ0LCA0MzY1MCwgNDM2NTcsIDQzNjYzLCA0MzY3MiwgCisgICAgNDM2NzksIDQzNjkzLCA0MzcwOCwgNDM3MTMsIDQzNzE5LCA0MzcyNywgNDM3MzAsIDQzNzMzLCA0MzczNSwgNDM3MzgsIAorICAgIDQzNzQxLCA0Mzc0MywgNDM3NDUsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU4LCA0Mzc2MSwgNDM3NjYsIDQzNzcxLCAKKyAgICA0Mzc3NiwgNDM3ODEsIDQzNzg2LCA0Mzc4OSwgNDM3OTEsIDQzNzkzLCA0Mzc5NSwgNDM3OTksIDQzODAzLCA0MzgwNywgCisgICAgNDM4MTMsIDQzODE4LCA0MzgyMCwgNDM4MjIsIDQzODI3LCA0MzgzMiwgNDM4MzcsIDQzODQyLCA0Mzg0NywgNDM4NTIsIAorICAgIDQzODU0LCA0Mzg1NiwgNDM4NjYsIDQzODcwLCA0Mzg3OCwgNDM4ODcsIDQzODg5LCA0Mzg5NCwgNDM4OTksIDQzOTA3LCAKKyAgICA0MzkxMSwgNDM5MTMsIDQzOTE3LCA0MzkxOSwgNDM5MjMsIDQzOTI3LCA0MzkzMSwgNDM5MzMsIDQzOTM1LCA0MzkzNywgCisgICAgNDM5NDQsIDQzOTUzLCA0Mzk2MiwgNDM5NzEsIDQzOTgwLCA0Mzk4OSwgNDM5OTgsIDQ0MDA3LCA0NDAxNiwgNDQwMjQsIAorICAgIDQ0MDMyLCA0NDA0MSwgNDQwNTAsIDQ0MDU5LCA0NDA2OCwgNDQwNzYsIDQ0MDg0LCA0NDA5MywgNDQxMDIsIDQ0MTExLCAKKyAgICA0NDEyMSwgNDQxMzAsIDQ0MTQwLCA0NDE0OSwgNDQxNTksIDQ0MTY3LCA0NDE3NiwgNDQxODYsIDQ0MTk1LCA0NDIwNSwgCisgICAgNDQyMTQsIDQ0MjI0LCA0NDIzMiwgNDQyNDEsIDQ0MjUwLCA0NDI1OSwgNDQyNjgsIDQ0Mjc3LCA0NDI4NiwgNDQyOTYsIAorICAgIDQ0MzA1LCA0NDMxNCwgNDQzMjMsIDQ0MzMzLCA0NDM0MiwgNDQzNTEsIDQ0MzYwLCA0NDM2OSwgNDQzNzksIDQ0Mzg5LCAKKyAgICA0NDM5OCwgNDQ0MDcsIDQ0NDE1LCA0NDQyNCwgNDQ0MzEsIDQ0NDQwLCA0NDQ0OSwgNDQ0NjAsIDQ0NDY5LCA0NDQ3OSwgCisgICAgNDQ0ODksIDQ0NDk2LCA0NDUwMywgNDQ1MTAsIDQ0NTE5LCA0NDUyOCwgNDQ1MzcsIDQ0NTQ2LCA0NDU1MywgNDQ1NTgsIAorICAgIDQ0NTY2LCA0NDU3MSwgNDQ1NzQsIDQ0NTgxLCA0NDU4NCwgNDQ1ODksIDQ0NTk0LCA0NDU5NywgNDQ2MDAsIDQ0NjA4LCAKKyAgICA0NDYxMSwgNDQ2MTYsIDQ0NjE5LCA0NDYyNywgNDQ2MzIsIDQ0NjQwLCA0NDY0MywgNDQ2NDYsIDQ0NjQ5LCA0NDY1NCwgCisgICAgNDQ2NTksIDQ0NjYyLCA0NDY2NSwgNDQ2NzMsIDQ0Njc2LCA0NDY4MywgNDQ2OTAsIDQ0Njk0LCA0NDY5OCwgNDQ3MDMsIAorICAgIDQ0NzA4LCA0NDcxNCwgNDQ3MTksIDQ0NzI1LCA0NDczMSwgNDQ3MzYsIDQ0NzQyLCA0NDc1MCwgNDQ3NTYsIDQ0NzY0LCAKKyAgICA0NDc3MiwgNDQ3NzgsIDQ0Nzg2LCA0NDc5NCwgNDQ4MDIsIDQ0ODEwLCA0NDgxNiwgNDQ4MjQsIDQ0ODMyLCA0NDg0MCwgCisgICAgNDQ4NDQsIDQ0ODUwLCA0NDg2NCwgNDQ4NzgsIDQ0ODgyLCA0NDg4NiwgNDQ4OTAsIDQ0ODk0LCA0NDkwNCwgNDQ5MDgsIAorICAgIDQ0OTEzLCA0NDkxOCwgNDQ5MjQsIDQ0OTMwLCA0NDkzNiwgNDQ5NDIsIDQ0OTUyLCA0NDk2MiwgNDQ5NzAsIDQ0OTgxLCAKKyAgICA0NDk5MiwgNDUwMDAsIDQ1MDExLCA0NTAyMiwgNDUwMzAsIDQ1MDQxLCA0NTA1MiwgNDUwNjAsIDQ1MDY4LCA0NTA3OCwgCisgICAgNDUwODgsIDQ1MDkxLCA0NTA5NCwgNDUwOTcsIDQ1MTAyLCA0NTEwNiwgNDUxMTIsIDQ1MTE5LCA0NTEyNiwgNDUxMzQsIAorICAgIDQ1MTQxLCA0NTE0NSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgNDUxNTksIDQ1MTYzLCA0NTE2NywgNDUxNzIsIDQ1MTc3LCAKKyAgICA0NTE4NCwgNDUxOTEsIDQ1MTk0LCA0NTIwMSwgNDUyMDMsIDQ1MjA1LCA0NTIwOSwgNDUyMTMsIDQ1MjE4LCA0NTIyNCwgCisgICAgNDUyMzAsIDQ1MjM2LCA0NTI0MiwgNDUyNTEsIDQ1MjYwLCA0NTI2OSwgNDUyNzMsIDQ1Mjc1LCA0NTI3OSwgNDUyODYsIAorICAgIDQ1MjkzLCA0NTMwMCwgNDUzMDcsIDQ1MzE0LCA0NTMxNywgNDUzMjIsIDAsIDAsIDAsIDAsIDAsIDQ1MzI4LCA0NTMzMiwgCisgICAgNDUzMzksIDQ1MzQ2LCA0NTM1MywgNDUzNjAsIDQ1MzY0LCA0NTM2OCwgNDUzNzIsIDQ1Mzc2LCA0NTM4MiwgNDUzODgsIAorICAgIDQ1MzkzLCA0NTM5OSwgNDU0MDUsIDQ1NDExLCA0NTQxNywgNDU0MjUsIDQ1NDMyLCA0NTQzOSwgNDU0NDYsIDQ1NDUzLCAKKyAgICA0NTQ1OCwgNDU0NjQsIDQ1NDczLCA0NTQ3NywgNDU0ODQsIDQ1NDg4LCA0NTQ5MiwgNDU0OTgsIDQ1NTA0LCA0NTUxMCwgCisgICAgNDU1MTYsIDQ1NTIwLCA0NTUyNCwgNDU1MjcsIDQ1NTMwLCA0NTUzNCwgNDU1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NTQ4LCA0NTU1MSwgNDU1NTUsIAorICAgIDQ1NTU5LCA0NTU2NSwgNDU1NzEsIDQ1NTc3LCA0NTU4NSwgNDU1OTIsIDQ1NTk2LCA0NTYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU2MDksIDQ1NjEyLCA0NTYxNSwgNDU2MTgsIAorICAgIDQ1NjIxLCA0NTYyNCwgNDU2MjcsIDQ1NjMxLCA0NTYzNCwgNDU2MzgsIDQ1NjQyLCA0NTY0NiwgNDU2NTAsIDQ1NjU0LCAKKyAgICA0NTY1OCwgNDU2NjIsIDQ1NjY2LCA0NTY3MCwgNDU2NzQsIDQ1Njc4LCA0NTY4MiwgNDU2ODUsIDQ1Njg4LCA0NTY5MSwgCisgICAgNDU2OTQsIDQ1Njk3LCA0NTcwMCwgNDU3MDQsIDQ1NzA3LCA0NTcxMSwgNDU3MTUsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAorICAgIDQ1NzMxLCA0NTczNSwgNDU3MzksIDQ1NzQzLCA0NTc0NywgNDU3NTEsIDQ1NzU1LCA0NTc2MSwgNDU3NjcsIDQ1NzczLCAKKyAgICA0NTc4MCwgNDU3ODcsIDQ1Nzk0LCA0NTgwMSwgNDU4MDgsIDQ1ODE1LCA0NTgyMiwgNDU4MjksIDQ1ODM2LCA0NTg0MywgCisgICAgNDU4NTAsIDQ1ODU3LCA0NTg2NCwgNDU4NzEsIDQ1ODc4LCA0NTg4NSwgNDU4OTIsIDQ1ODk3LCA0NTkwMywgNDU5MDksIAorICAgIDQ1OTE1LCA0NTkyMCwgNDU5MjYsIDQ1OTMyLCA0NTkzOCwgNDU5NDMsIDQ1OTQ5LCA0NTk1NSwgNDU5NjAsIDQ1OTY2LCAKKyAgICA0NTk3MiwgNDU5NzcsIDQ1OTgzLCA0NTk4OSwgNDU5OTQsIDQ1OTk5LCA0NjAwNSwgNDYwMTAsIDQ2MDE2LCA0NjAyMiwgCisgICAgNDYwMjgsIDQ2MDM0LCA0NjA0MCwgNDYwNDUsIDQ2MDUxLCA0NjA1NywgNDYwNjMsIDQ2MDY4LCA0NjA3NCwgNDYwODAsIAorICAgIDQ2MDg2LCA0NjA5MSwgNDYwOTcsIDQ2MTAzLCA0NjEwOCwgNDYxMTQsIDQ2MTIwLCA0NjEyNSwgNDYxMzEsIDQ2MTM3LCAKKyAgICA0NjE0MiwgNDYxNDcsIDQ2MTUzLCA0NjE1OCwgNDYxNjQsIDQ2MTcwLCA0NjE3NiwgNDYxODIsIDQ2MTg4LCA0NjE5MywgCisgICAgNDYxOTksIDQ2MjA1LCA0NjIxMSwgNDYyMTYsIDQ2MjIyLCA0NjIyOCwgNDYyMzQsIDQ2MjM5LCA0NjI0NSwgNDYyNTEsIAorICAgIDQ2MjU2LCA0NjI2MiwgNDYyNjgsIDQ2MjczLCA0NjI3OSwgNDYyODUsIDQ2MjkwLCA0NjI5NSwgNDYzMDEsIDQ2MzA2LCAKKyAgICA0NjMxMiwgNDYzMTgsIDQ2MzI0LCA0NjMzMCwgNDYzMzYsIDQ2MzQwLCA0NjM0NSwgNDYzNTAsIDQ2MzU1LCA0NjM2MCwgCisgICAgNDYzNjUsIDQ2MzcwLCA0NjM3NSwgNDYzODAsIDQ2Mzg1LCA0NjM5MCwgNDYzOTQsIDQ2Mzk4LCA0NjQwMiwgNDY0MDYsIAorICAgIDQ2NDEwLCA0NjQxNCwgNDY0MTksIDQ2NDIzLCA0NjQyOCwgNDY0MzMsIDQ2NDM4LCA0NjQ0MywgNDY0NDgsIDQ2NDUzLCAKKyAgICA0NjQ1OCwgNDY0NjcsIDQ2NDc2LCA0NjQ4NSwgNDY0OTQsIDQ2NTAzLCA0NjUxMiwgNDY1MjEsIDQ2NTMwLCA0NjUzNywgCisgICAgNDY1NDUsIDQ2NTUzLCA0NjU2MCwgNDY1NjcsIDQ2NTc1LCA0NjU4MywgNDY1OTAsIDQ2NTk3LCA0NjYwNSwgNDY2MTMsIAorICAgIDQ2NjIwLCA0NjYyNywgNDY2MzUsIDQ2NjQzLCA0NjY1MCwgNDY2NTcsIDQ2NjY1LCA0NjY3NCwgNDY2ODMsIDQ2NjkxLCAKKyAgICA0NjcwMCwgNDY3MDksIDQ2NzE2LCA0NjcyMywgNDY3MzEsIDQ2NzQwLCA0Njc0OSwgNDY3NTcsIDQ2NzY2LCA0Njc3NSwgCisgICAgNDY3ODIsIDQ2Nzg5LCA0Njc5OCwgNDY4MDcsIDQ2ODE2LCA0NjgyNSwgNDY4MzQsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIAorICAgIDQ2ODY2LCA0Njg3NSwgNDY4ODQsIDQ2ODkzLCA0NjkwMiwgNDY5MTEsIDQ2OTE4LCA0NjkyNSwgNDY5MzQsIDQ2OTQzLCAKKyAgICA0Njk1MiwgNDY5NjIsIDQ2OTcyLCA0Njk4MSwgNDY5OTEsIDQ3MDAxLCA0NzAxMSwgNDcwMjEsIDQ3MDMxLCA0NzA0MSwgCisgICAgNDcwNTAsIDQ3MDU5LCA0NzA2NiwgNDcwNzQsIDQ3MDgyLCA0NzA5MCwgNDcwOTgsIDQ3MTAzLCA0NzEwOCwgNDcxMTcsIAorICAgIDQ3MTI1LCA0NzEzMiwgNDcxNDEsIDQ3MTQ5LCA0NzE1NiwgNDcxNjUsIDQ3MTczLCA0NzE4MCwgNDcxODksIDQ3MTk3LCAKKyAgICA0NzIwNCwgNDcyMTMsIDQ3MjIxLCA0NzIyOCwgNDcyMzcsIDQ3MjQ1LCA0NzI1MiwgNDcyNjIsIDQ3MjcxLCA0NzI3OCwgCisgICAgNDcyODgsIDQ3Mjk3LCA0NzMwNCwgNDczMTQsIDQ3MzIzLCA0NzMzMCwgNDczMzksIDQ3MzQ4LCA0NzM1NywgNDczNjYsIAorICAgIDQ3MzgwLCA0NzM5NCwgNDc0MDEsIDQ3NDA2LCA0NzQxMSwgNDc0MTYsIDQ3NDIxLCA0NzQyNiwgNDc0MzEsIDQ3NDM2LCAKKyAgICA0NzQ0MSwgNDc0NDksIDQ3NDU3LCA0NzQ2NSwgNDc0NzMsIDQ3NDc4LCA0NzQ4NSwgNDc0OTIsIDQ3NDk5LCA0NzUwNCwgCisgICAgNDc1MTIsIDQ3NTE5LCA0NzUyNywgNDc1MzEsIDQ3NTM4LCA0NzU0NCwgNDc1NTEsIDQ3NTU1LCA0NzU2MSwgNDc1NjcsIAorICAgIDQ3NTczLCA0NzU3NywgNDc1ODAsIDQ3NTg0LCA0NzU4OCwgNDc1OTUsIDQ3NjAxLCA0NzYwNywgNDc2MTMsIDQ3NjE5LCAKKyAgICA0NzYzMywgNDc2NDMsIDQ3NjU3LCA0NzY3MSwgNDc2NzcsIDQ3Njg3LCA0NzcwMSwgNDc3MDQsIDQ3NzA3LCA0NzcxNCwgCisgICAgNDc3MjIsIDQ3NzI4LCA0NzczMywgNDc3NDEsIDQ3NzUzLCA0Nzc2NSwgNDc3NzMsIDQ3Nzc3LCA0Nzc4MSwgNDc3ODQsIAorICAgIDQ3Nzg3LCA0Nzc5MSwgNDc3OTUsIDQ3Nzk4LCA0NzgwMSwgNDc4MDYsIDQ3ODExLCA0NzgxNywgNDc4MjMsIDQ3ODI4LCAKKyAgICA0NzgzMywgNDc4MzksIDQ3ODQ1LCA0Nzg1MCwgNDc4NTUsIDQ3ODYwLCA0Nzg2NSwgNDc4NzEsIDQ3ODc3LCA0Nzg4MiwgCisgICAgNDc4ODcsIDQ3ODkzLCA0Nzg5OSwgNDc5MDQsIDQ3OTA5LCA0NzkxMiwgNDc5MTUsIDQ3OTI0LCA0NzkyNiwgNDc5MjgsIAorICAgIDQ3OTMxLCA0NzkzNSwgNDc5NDEsIDQ3OTQzLCA0Nzk0NiwgNDc5NTMsIDQ3OTYwLCA0Nzk2OCwgNDc5NzYsIDQ3OTg2LCAKKyAgICA0ODAwMCwgNDgwMDUsIDQ4MDEwLCA0ODAxNCwgNDgwMTksIDQ4MDI3LCA0ODAzNSwgNDgwNDQsIDQ4MDUzLCA0ODA2MiwgCisgICAgNDgwNzEsIDQ4MDc2LCA0ODA4MSwgNDgwODcsIDQ4MDkzLCA0ODA5OSwgNDgxMDUsIDQ4MTA4LCA0ODExNCwgNDgxMjAsIAorICAgIDQ4MTMwLCA0ODE0MCwgNDgxNDgsIDQ4MTU2LCA0ODE2NSwgNDgxNzQsIDQ4MTc4LCA0ODE4NiwgNDgxOTQsIDQ4MjAyLCAKKyAgICA0ODIxMCwgNDgyMTksIDQ4MjI4LCA0ODIzNywgNDgyNDYsIDQ4MjUxLCA0ODI1NiwgNDgyNjEsIDQ4MjY2LCA0ODI3MSwgCisgICAgNDgyNzcsIDQ4MjgzLCA0ODI4OCwgNDgyOTQsIDQ4Mjk2LCA0ODI5OCwgNDgzMDAsIDQ4MzAyLCA0ODMwNSwgNDgzMDgsIAorICAgIDQ4MzEwLCA0ODMxMiwgNDgzMTQsIDQ4MzE4LCA0ODMyMiwgNDgzMjQsIDQ4MzI2LCA0ODMyOSwgNDgzMzIsIDQ4MzM2LCAKKyAgICA0ODM0MiwgNDgzNDgsIDQ4MzUwLCA0ODM1NywgNDgzNjEsIDQ4MzY2LCA0ODM3MSwgNDgzNzMsIDQ4MzgzLCA0ODM4OSwgCisgICAgNDgzOTUsIDQ4NDAxLCA0ODQwNywgNDg0MTMsIDQ4NDE5LCA0ODQyNCwgNDg0MjcsIDQ4NDMwLCA0ODQzMywgNDg0MzUsIAorICAgIDQ4NDM3LCA0ODQ0MSwgNDg0NDUsIDQ4NDUwLCA0ODQ1NSwgNDg0NjAsIDQ4NDYzLCA0ODQ2NywgNDg0NzIsIDQ4NDc1LCAKKyAgICA0ODQ3OSwgNDg0ODQsIDQ4NDg5LCA0ODQ5NCwgNDg0OTksIDQ4NTA0LCA0ODUwOSwgNDg1MTQsIDQ4NTE5LCA0ODUyNCwgCisgICAgNDg1MjksIDQ4NTM0LCA0ODUzOSwgNDg1NDUsIDQ4NTUxLCA0ODU1NywgNDg1NTksIDQ4NTYyLCA0ODU2NCwgNDg1NjcsIAorICAgIDQ4NTY5LCA0ODU3MSwgNDg1NzMsIDQ4NTc1LCA0ODU3NywgNDg1NzksIDQ4NTgxLCA0ODU4MywgNDg1ODUsIDQ4NTg3LCAKKyAgICA0ODU4OSwgNDg1OTEsIDQ4NTkzLCA0ODU5NSwgNDg1OTcsIDQ4NTk5LCA0ODYwMSwgNDg2MDYsIDQ4NjExLCA0ODYxNiwgCisgICAgNDg2MjEsIDQ4NjI2LCA0ODYzMSwgNDg2MzYsIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjYsIAorICAgIDQ4NjcxLCA0ODY3NiwgNDg2ODEsIDQ4Njg2LCA0ODY5MSwgNDg2OTYsIDQ4NzAxLCA0ODcwNSwgNDg3MDksIDQ4NzEzLCAKKyAgICA0ODcxOSwgNDg3MjUsIDQ4NzMwLCA0ODczNSwgNDg3NDAsIDQ4NzQ2LCA0ODc1MiwgNDg3NTcsIDQ4NzY1LCA0ODc3MywgCisgICAgNDg3ODEsIDQ4Nzg5LCA0ODc5NywgNDg4MDUsIDQ4ODEzLCA0ODgyMSwgNDg4MjcsIDQ4ODMyLCA0ODgzNywgNDg4NDIsIAorICAgIDQ4ODQ1LCA0ODg0OSwgNDg4NTMsIDQ4ODU3LCA0ODg2MSwgNDg4NjUsIDQ4ODY5LCA0ODg3NiwgNDg4ODMsIDQ4ODkxLCAKKyAgICA0ODg5OSwgNDg5MDQsIDQ4OTA5LCA0ODkxNiwgNDg5MjMsIDQ4OTMwLCA0ODkzNywgNDg5NDAsIDQ4OTQzLCA0ODk0OCwgCisgICAgNDg5NTAsIDQ4OTU0LCA0ODk1OSwgNDg5NjEsIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcyLCA0ODk3NSwgNDg5NzcsIAorICAgIDQ4OTgyLCA0ODk4OSwgNDg5OTYsIDQ4OTk5LCA0OTAwMywgNDkwMDgsIDQ5MDEzLCA0OTAyMSwgNDkwMjcsIDQ5MDMzLCAKKyAgICA0OTA0NSwgNDkwNTIsIDQ5MDYwLCA0OTA2NSwgNDkwNzAsIDQ5MDc2LCA0OTA3OSwgNDkwODIsIDQ5MDg3LCA0OTA4OSwgCisgICAgNDkwOTMsIDQ5MDk1LCA0OTA5NywgNDkwOTksIDQ5MTAxLCA0OTEwMywgNDkxMDUsIDQ5MTEwLCA0OTExMiwgNDkxMTQsIAorICAgIDQ5MTE2LCA0OTExOCwgNDkxMjIsIDQ5MTI0LCA0OTEyNywgNDkxMzIsIDQ5MTM3LCA0OTE0MiwgNDkxNDcsIDQ5MTUzLCAKKyAgICA0OTE1OSwgNDkxNjEsIDQ5MTY0LCA0OTE3MSwgNDkxNzgsIDQ5MTg1LCA0OTE5MiwgNDkxOTYsIDQ5MjAwLCA0OTIwMiwgCisgICAgNDkyMDQsIDQ5MjA4LCA0OTIxNCwgNDkyMTksIDQ5MjIxLCA0OTIyNSwgNDkyMzQsIDQ5MjQyLCA0OTI1MCwgNDkyNTYsIAorICAgIDQ5MjYyLCA0OTI2NywgNDkyNzMsIDQ5Mjc4LCA0OTI4MSwgNDkyOTUsIDQ5Mjk4LCA0OTMwMywgNDkzMDgsIDQ5MzE0LCAKKyAgICA0OTMyNCwgNDkzMjYsIDQ5MzMyLCA0OTMzOCwgNDkzNDIsIDQ5MzQ5LCA0OTM1MywgNDkzNTUsIDQ5MzU3LCA0OTM2MSwgCisgICAgNDkzNjcsIDQ5MzcyLCA0OTM3OCwgNDkzODAsIDQ5Mzg2LCA0OTM4OCwgNDkzOTQsIDQ5Mzk2LCA0OTM5OCwgNDk0MDMsIAorICAgIDQ5NDA1LCA0OTQwOSwgNDk0MTQsIDQ5NDE2LCA0OTQyMSwgNDk0MjYsIDQ5NDMwLCA0OTQzNywgNDk0NDcsIDQ5NDUyLCAKKyAgICA0OTQ1OCwgNDk0NjEsIDQ5NDY3LCA0OTQ3MCwgNDk0NzUsIDQ5NDgwLCA0OTQ4NCwgNDk0ODYsIDQ5NDg4LCA0OTQ5MiwgCisgICAgNDk0OTYsIDQ5NTAwLCA0OTUwNCwgNDk1MDksIDQ5NTExLCA0OTUxNiwgNDk1MTksIDQ5NTIyLCA0OTUyNSwgNDk1MjksIAorICAgIDQ5NTMzLCA0OTUzOCwgNDk1NDIsIDQ5NTQ3LCA0OTU1MiwgNDk1NTYsIDQ5NTYxLCA0OTU2NywgNDk1NzAsIDQ5NTc2LCAKKyAgICA0OTU4MSwgNDk1ODUsIDQ5NTkwLCA0OTU5NiwgNDk2MDIsIDQ5NjA5LCA0OTYxNSwgNDk2MjIsIDQ5NjI5LCA0OTYzMSwgCisgICAgNDk2MzgsIDQ5NjQyLCA0OTY0OCwgNDk2NTQsIDQ5NjU5LCA0OTY2NSwgNDk2NjksIDQ5Njc0LCA0OTY3NywgNDk2ODIsIAorICAgIDQ5Njg4LCA0OTY5NSwgNDk3MDMsIDQ5NzEwLCA0OTcxOSwgNDk3MjksIDQ5NzM2LCA0OTc0MiwgNDk3NDYsIDQ5NzUzLCAKKyAgICA0OTc1OCwgNDk3NjcsIDQ5NzcwLCA0OTc3MywgNDk3ODIsIDQ5NzkyLCA0OTc5OSwgNDk4MDEsIDQ5ODA3LCA0OTgxMiwgCisgICAgNDk4MTQsIDQ5ODE3LCA0OTgyMSwgNDk4MjksIDQ5ODM4LCA0OTg0MSwgNDk4NDYsIDQ5ODUxLCA0OTg1OSwgNDk4NjcsIAorICAgIDQ5ODc1LCA0OTg4MywgNDk4ODksIDQ5ODk1LCA0OTkwMSwgNDk5MDksIDQ5OTE0LCA0OTkxNywgNDk5MjEsIDQ5OTI0LCAKKyAgICA0OTkzNiwgNDk5NDYsIDQ5OTU3LCA0OTk2NiwgNDk5NzcsIDQ5OTg3LCA0OTk5NiwgNTAwMDIsIDUwMDEwLCA1MDAxNCwgCisgICAgNTAwMjIsIDUwMDI2LCA1MDAzNCwgNTAwNDEsIDUwMDQ4LCA1MDA1NywgNTAwNjYsIDUwMDc2LCA1MDA4NiwgNTAwOTYsIAorICAgIDUwMTA2LCA1MDExNSwgNTAxMjQsIDUwMTM0LCA1MDE0NCwgNTAxNTMsIDUwMTYyLCA1MDE2OCwgNTAxNzQsIDUwMTgwLCAKKyAgICA1MDE4NiwgNTAxOTIsIDUwMTk4LCA1MDIwNSwgNTAyMTEsIDUwMjE4LCA1MDIyNSwgNTAyMzEsIDUwMjM3LCA1MDI0MywgCisgICAgNTAyNDksIDUwMjU1LCA1MDI2MSwgNTAyNjgsIDUwMjc0LCA1MDI4MSwgNTAyODgsIDUwMjk1LCA1MDMwMiwgNTAzMDksIAorICAgIDUwMzE2LCA1MDMyMywgNTAzMzAsIDUwMzM4LCA1MDM0NSwgNTAzNTMsIDUwMzYxLCA1MDM2NiwgNTAzNjksIDUwMzczLCAKKyAgICA1MDM3NywgNTAzODMsIDUwMzg2LCA1MDM5MSwgNTAzOTcsIDUwNDAyLCA1MDQwNiwgNTA0MTEsIDUwNDE3LCA1MDQyNCwgCisgICAgNTA0MjcsIDUwNDM0LCA1MDQ0MSwgNTA0NDUsIDUwNDUzLCA1MDQ2MSwgNTA0NjYsIDUwNDcyLCA1MDQ3NywgNTA0ODIsIAorICAgIDUwNDg5LCA1MDQ5NiwgNTA1MDQsIDUwNTEyLCA1MDUyMSwgNTA1MjUsIDUwNTM0LCA1MDUzOSwgNTA1NDMsIDUwNTUwLCAKKyAgICA1MDU1NCwgNTA1NjAsIDUwNTY4LCA1MDU3MywgNTA1ODAsIDUwNTg0LCA1MDU4OSwgNTA1OTMsIDUwNTk4LCA1MDYwMiwgCisgICAgNTA2MDcsIDUwNjEyLCA1MDYyMSwgNTA2MjMsIDUwNjI2LCA1MDYyOSwgNTA2MzYsIDUwNjQzLCA1MDY0OSwgNTA2NTcsIAorICAgIDUwNjYzLCA1MDY3MCwgNTA2NzUsIDUwNjc4LCA1MDY4MywgNTA2ODgsIDUwNjkzLCA1MDcwMSwgNTA3MDUsIDUwNzEyLCAKKyAgICA1MDcyMCwgNTA3MjgsIDUwNzMzLCA1MDczOCwgNTA3NDQsIDUwNzQ5LCA1MDc1NCwgNTA3NjAsIDUwNzY1LCA1MDc2OCwgCisgICAgNTA3NzIsIDUwNzc2LCA1MDc4MywgNTA3OTMsIDUwNzk4LCA1MDgwNywgNTA4MTYsIDUwODIyLCA1MDgyOCwgNTA4MzMsIAorICAgIDUwODM4LCA1MDg0MywgNTA4NDgsIDUwODU0LCA1MDg2MCwgNTA4NjgsIDUwODc2LCA1MDg4MiwgNTA4ODgsIDUwODkyLCAKKyAgICA1MDg5NiwgNTA5MDMsIDUwOTEwLCA1MDkxNiwgNTA5MTksIDUwOTIyLCA1MDkyNiwgNTA5MzAsIDUwOTM0LCA1MDkzOSwgCisgICAgNTA5NDUsIDUwOTUxLCA1MDk1OCwgNTA5NjUsIDUwOTcwLCA1MDk3NCwgNTA5NzgsIDUwOTgyLCA1MDk4NiwgNTA5OTAsIAorICAgIDUwOTk0LCA1MDk5OCwgNTEwMDIsIDUxMDA2LCA1MTAxMCwgNTEwMTQsIDUxMDE4LCA1MTAyMiwgNTEwMjYsIDUxMDMwLCAKKyAgICA1MTAzNCwgNTEwMzgsIDUxMDQyLCA1MTA0NiwgNTEwNTAsIDUxMDU0LCA1MTA1OCwgNTEwNjIsIDUxMDY2LCA1MTA3MCwgCisgICAgNTEwNzQsIDUxMDc4LCA1MTA4MiwgNTEwODYsIDUxMDkwLCA1MTA5NCwgNTEwOTgsIDUxMTAyLCA1MTEwNiwgNTExMTAsIAorICAgIDUxMTE0LCA1MTExOCwgNTExMjIsIDUxMTI2LCA1MTEzMCwgNTExMzQsIDUxMTM4LCA1MTE0MiwgNTExNDYsIDUxMTUwLCAKKyAgICA1MTE1NCwgNTExNTgsIDUxMTYyLCA1MTE2NiwgNTExNzAsIDUxMTc0LCA1MTE3OCwgNTExODIsIDUxMTg2LCA1MTE5MCwgCisgICAgNTExOTQsIDUxMTk4LCA1MTIwMiwgNTEyMDYsIDUxMjEwLCA1MTIxNCwgNTEyMTgsIDUxMjIyLCA1MTIyNiwgNTEyMzAsIAorICAgIDUxMjM0LCA1MTIzOCwgNTEyNDIsIDUxMjQ2LCA1MTI1MCwgNTEyNTQsIDUxMjU4LCA1MTI2MiwgNTEyNjYsIDUxMjcwLCAKKyAgICA1MTI3NCwgNTEyNzgsIDUxMjgyLCA1MTI4NiwgNTEyOTAsIDUxMjk0LCA1MTI5OCwgNTEzMDIsIDUxMzA2LCA1MTMxMCwgCisgICAgNTEzMTQsIDUxMzE4LCA1MTMyMiwgNTEzMjYsIDUxMzMwLCA1MTMzNCwgNTEzMzgsIDUxMzQyLCA1MTM0NiwgNTEzNTAsIAorICAgIDUxMzU0LCA1MTM1OCwgNTEzNjIsIDUxMzY2LCA1MTM3MCwgNTEzNzQsIDUxMzc4LCA1MTM4MiwgNTEzODYsIDUxMzkwLCAKKyAgICA1MTM5NCwgNTEzOTgsIDUxNDAyLCA1MTQwNiwgNTE0MTAsIDUxNDE0LCA1MTQxOCwgNTE0MjIsIDUxNDI2LCA1MTQzMCwgCisgICAgNTE0MzQsIDUxNDM4LCA1MTQ0MiwgNTE0NDYsIDUxNDUwLCA1MTQ1NCwgNTE0NTgsIDUxNDYyLCA1MTQ2NiwgNTE0NzAsIAorICAgIDUxNDc0LCA1MTQ3OCwgNTE0ODIsIDUxNDg2LCA1MTQ5MCwgNTE0OTQsIDUxNDk4LCA1MTUwMiwgNTE1MDYsIDUxNTEwLCAKKyAgICA1MTUxNCwgNTE1MTgsIDUxNTIyLCA1MTUyNiwgNTE1MzAsIDUxNTM0LCA1MTUzOCwgNTE1NDIsIDUxNTQ2LCA1MTU1MCwgCisgICAgNTE1NTQsIDUxNTU4LCA1MTU2MiwgNTE1NjYsIDUxNTcwLCA1MTU3NCwgNTE1NzgsIDUxNTgyLCA1MTU4NiwgNTE1OTAsIAorICAgIDUxNTk0LCA1MTU5OCwgNTE2MDIsIDUxNjA2LCA1MTYxMCwgNTE2MTQsIDUxNjE4LCA1MTYyMiwgNTE2MjYsIDUxNjMwLCAKKyAgICA1MTYzNCwgNTE2MzgsIDUxNjQyLCA1MTY0NiwgNTE2NTAsIDUxNjU0LCA1MTY1OCwgNTE2NjIsIDUxNjY2LCA1MTY3MCwgCisgICAgNTE2NzQsIDUxNjc4LCA1MTY4MiwgNTE2ODYsIDUxNjkwLCA1MTY5NCwgNTE2OTgsIDUxNzAyLCA1MTcwNiwgNTE3MTAsIAorICAgIDUxNzE0LCA1MTcxOCwgNTE3MjIsIDUxNzI2LCA1MTczMCwgNTE3MzQsIDUxNzM4LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCAKKyAgICA1MTc1NCwgNTE3NTgsIDUxNzYyLCA1MTc2NiwgNTE3NzAsIDUxNzc0LCA1MTc3OCwgNTE3ODIsIDUxNzg2LCA1MTc5MCwgCisgICAgNTE3OTQsIDUxNzk4LCA1MTgwMiwgNTE4MDYsIDUxODEwLCA1MTgxNCwgNTE4MTgsIDUxODIyLCA1MTgyNiwgNTE4MzAsIAorICAgIDUxODM0LCA1MTgzOCwgNTE4NDIsIDUxODQ2LCA1MTg1MCwgNTE4NTQsIDUxODU4LCA1MTg2MiwgNTE4NjYsIDUxODcwLCAKKyAgICA1MTg3NCwgNTE4NzgsIDUxODgyLCA1MTg4NiwgNTE4OTAsIDUxODk0LCA1MTg5OCwgNTE5MDIsIDUxOTA2LCA1MTkxMCwgCisgICAgNTE5MTQsIDUxOTE4LCA1MTkyMiwgNTE5MjYsIDUxOTMwLCA1MTkzNCwgNTE5MzgsIDUxOTQyLCA1MTk0NiwgNTE5NTAsIAorICAgIDUxOTU0LCA1MTk1OCwgNTE5NjIsIDUxOTY2LCA1MTk3MCwgNTE5NzQsIDUxOTc4LCA1MTk4MiwgNTE5ODYsIDUxOTkwLCAKKyAgICA1MTk5NCwgNTIwMDEsIDUyMDA5LCA1MjAxNSwgNTIwMjEsIDUyMDI4LCA1MjAzNSwgNTIwNDEsIDUyMDQ3LCA1MjA1MywgCisgICAgNTIwNTksIDUyMDYzLCA1MjA2NywgNTIwNzIsIDUyMDc3LCA1MjA4MywgNTIwODksIDUyMDk3LCA1MjEwNCwgNTIxMDksIAorICAgIDUyMTE0LCA1MjEyMiwgNTIxMzEsIDUyMTM4LCA1MjE0OCwgNTIxNTksIDUyMTYyLCA1MjE2NSwgNTIxNjksIDUyMTczLCAKKyAgICA1MjE4MCwgNTIxODcsIDUyMTk4LCA1MjIwOSwgNTIyMTgsIDUyMjI3LCA1MjIzMywgNTIyMzksIDUyMjQ2LCA1MjI1MywgCisgICAgNTIyNjIsIDUyMjcyLCA1MjI4MywgNTIyOTMsIDUyMzAzLCA1MjMxMywgNTIzMjQsIDUyMzM1LCA1MjM0NSwgNTIzNTYsIAorICAgIDUyMzY2LCA1MjM3NiwgNTIzODUsIDUyMzk1LCA1MjQwNSwgNTI0MTUsIDUyNDI1LCA1MjQzMiwgNTI0MzksIDUyNDQ2LCAKKyAgICA1MjQ1MywgNTI0NjMsIDUyNDczLCA1MjQ4MSwgNTI0ODksIDUyNDk2LCA1MjUwMywgNTI1MTAsIDUyNTE3LCA1MjUyNCwgCisgICAgNTI1MjksIDUyNTM0LCA1MjU0MCwgNTI1NDgsIDUyNTU3LCA1MjU2NSwgNTI1NzMsIDUyNTgxLCA1MjU4OSwgNTI1OTcsIAorICAgIDUyNjA1LCA1MjYxMywgNTI2MjEsIDUyNjMwLCA1MjYzOSwgNTI2NDgsIDUyNjU3LCA1MjY2NiwgNTI2NzUsIDUyNjg0LCAKKyAgICA1MjY5MywgNTI3MDIsIDUyNzExLCA1MjcyMCwgNTI3MjksIDUyNzM4LCA1Mjc0NywgNTI3NTYsIDUyNzY1LCA1Mjc3OSwgCisgICAgNTI3OTQsIDUyODA4LCA1MjgyMywgNTI4MzcsIDUyODUxLCA1Mjg2NSwgNTI4NzksIDUyODg5LCA1MjkwMCwgNTI5MTAsIAorICAgIDUyOTIxLCA1MjkzNiwgNTI5NTEsIDUyOTU5LCA1Mjk2NSwgNTI5NzIsIDUyOTc5LCA1Mjk4NiwgNTI5OTMsIDUyOTk4LCAKKyAgICA1MzAwNCwgNTMwMDksIDUzMDE0LCA1MzAyMCwgNTMwMjUsIDUzMDMwLCA1MzAzNSwgNTMwNDAsIDUzMDQ1LCA1MzA1MiwgCisgICAgNTMwNTgsIDUzMDY2LCA1MzA3MSwgNTMwNzYsIDUzMDgwLCA1MzA4NCwgNTMwOTIsIDUzMTAwLCA1MzEwOCwgNTMxMTYsIAorICAgIDUzMTIzLCA1MzEzMCwgNTMxNDMsIDUzMTU2LCA1MzE2OSwgNTMxODIsIDUzMTkwLCA1MzE5OCwgNTMyMDQsIDUzMjEwLCAKKyAgICA1MzIxNywgNTMyMjQsIDUzMjMxLCA1MzIzOCwgNTMyNDIsIDUzMjQ3LCA1MzI1NSwgNTMyNjMsIDUzMjcxLCA1MzI3OCwgCisgICAgNTMyODIsIDUzMjkwLCA1MzI5OCwgNTMzMDIsIDUzMzA2LCA1MzMxMSwgNTMzMTgsIDUzMzI2LCA1MzMzNCwgNTMzNTMsIAorICAgIDUzMzcyLCA1MzM5MSwgNTM0MTAsIDUzNDI5LCA1MzQ0OCwgNTM0NjcsIDUzNDg2LCA1MzQ5MiwgNTM0OTksIDUzNTA4LCAKKyAgICA1MzUxNiwgNTM1MjQsIDUzNTMwLCA1MzUzMywgNTM1MzYsIDUzNTQxLCA1MzU0NCwgNTM1NjQsIDUzNTcxLCA1MzU3NywgCisgICAgNTM1ODMsIDUzNTg3LCA1MzU5MCwgNTM1OTMsIDUzNTk2LCA1MzYwOCwgNTM2MjIsIDUzNjI5LCA1MzYzNiwgNTM2MzksIAorICAgIDUzNjQzLCA1MzY0NiwgNTM2NTEsIDUzNjU2LCA1MzY2MSwgNTM2NjcsIDUzNjc2LCA1MzY4MywgNTM2OTAsIDUzNjk4LCAKKyAgICA1MzcwNSwgNTM3MTIsIDUzNzE1LCA1MzcyMSwgNTM3MjcsIDUzNzMwLCA1MzczMywgNTM3MzgsIDUzNzQzLCA1Mzc0OSwgCisgICAgNTM3NTUsIDUzNzU5LCA1Mzc2NCwgNTM3NzEsIDUzNzc1LCA1Mzc4MSwgNTM3ODUsIDUzNzg5LCA1Mzc5NywgNTM4MDksIAorICAgIDUzODE4LCA1MzgyMiwgNTM4MjQsIDUzODMzLCA1Mzg0MiwgNTM4NDgsIDUzODUxLCA1Mzg1NywgNTM4NjMsIDUzODY4LCAKKyAgICA1Mzg3MywgNTM4NzgsIDUzODgzLCA1Mzg4OCwgNTM4OTMsIDUzODk1LCA1MzkwMSwgNTM5MDYsIDUzOTE0LCA1MzkxOCwgCisgICAgNTM5MjQsIDUzOTI3LCA1MzkzMSwgNTM5MzgsIDUzOTQ1LCA1Mzk0NywgNTM5NDksIDUzOTU1LCA1Mzk2MSwgNTM5NjcsIAorICAgIDUzOTc2LCA1Mzk4NSwgNTM5OTIsIDUzOTk5LCA1NDAwNSwgNTQwMTIsIDU0MDE3LCA1NDAyMiwgNTQwMjcsIDU0MDMzLCAKKyAgICA1NDAzOSwgNTQwNDQsIDU0MDUxLCA1NDA1NSwgNTQwNTksIDU0MDcyLCA1NDA4NSwgNTQwOTcsIDU0MTA2LCA1NDExMiwgCisgICAgNTQxMTksIDU0MTI0LCA1NDEyOSwgNTQxMzQsIDU0MTM5LCA1NDE0NCwgNTQxNDYsIDU0MTUzLCA1NDE2MSwgNTQxNjksIAorICAgIDU0MTc3LCA1NDE4NCwgNTQxOTIsIDU0MTk4LCA1NDIwMywgNTQyMDksIDU0MjE1LCA1NDIyMSwgNTQyMjgsIDU0MjM0LCAKKyAgICA1NDI0MiwgNTQyNTAsIDU0MjU4LCA1NDI2NiwgNTQyNzQsIDU0MjgwLCA1NDI4NiwgNTQyOTUsIDU0Mjk5LCA1NDMwOCwgCisgICAgNTQzMTcsIDU0MzI2LCA1NDMzNCwgNTQzMzgsIDU0MzQ0LCA1NDM1MSwgNTQzNTgsIDU0MzYyLCA1NDM2OCwgNTQzNzYsIAorICAgIDU0MzgyLCA1NDM4NywgNTQzOTMsIDU0Mzk4LCA1NDQwMywgNTQ0MTAsIDU0NDE3LCA1NDQyMiwgNTQ0MjcsIDU0NDM1LCAKKyAgICA1NDQ0MywgNTQ0NTMsIDU0NDYzLCA1NDQ3MCwgNTQ0NzcsIDU0NDgxLCA1NDQ4NSwgNTQ0OTcsIDU0NTAzLCA1NDUxMCwgCisgICAgNTQ1MTUsIDU0NTIwLCA1NDUyNywgNTQ1MzQsIDU0NTQwLCA1NDU0NiwgNTQ1NTYsIDU0NTYzLCA1NDU3MSwgNTQ1NzksIAorICAgIDU0NTg4LCA1NDU5NSwgNTQ2MDEsIDU0NjA4LCA1NDYxNCwgNTQ2MjIsIDU0NjMwLCA1NDYzOCwgNTQ2NDYsIDU0NjUyLCAKKyAgICA1NDY1NywgNTQ2NjcsIDU0Njc4LCA1NDY4NSwgNTQ2OTQsIDU0NzAwLCA1NDcwNSwgNTQ3MTAsIDU0NzIwLCA1NDcyNywgCisgICAgNTQ3MzMsIDU0NzM5LCA1NDc0NywgNTQ3NTIsIDU0NzU5LCA1NDc2NiwgNTQ3NzcsIDU0Nzg0LCA1NDc5MSwgNTQ3OTgsIAorICAgIDU0ODA1LCA1NDgxMiwgNTQ4MjAsIDU0ODI4LCA1NDg0MSwgNTQ4NTQsIDU0ODY2LCA1NDg3OCwgNTQ4OTIsIDU0OTA2LCAKKyAgICA1NDkxMiwgNTQ5MTgsIDU0OTI3LCA1NDkzNiwgNTQ5NDMsIDU0OTUwLCA1NDk1OSwgNTQ5NjgsIDU0OTc3LCA1NDk4NiwgCisgICAgNTQ5OTQsIDU1MDAyLCA1NTAxMiwgNTUwMjIsIDU1MDM2LCA1NTA1MCwgNTUwNTksIDU1MDY4LCA1NTA4MSwgNTUwOTQsIAorICAgIDU1MTAzLCA1NTExMiwgNTUxMjMsIDU1MTM0LCA1NTE0MCwgNTUxNDYsIDU1MTU1LCA1NTE2NCwgNTUxNjksIDU1MTc0LCAKKyAgICA1NTE4MiwgNTUxODgsIDU1MTk0LCA1NTIwMiwgNTUyMTAsIDU1MjIzLCA1NTIzNiwgNTUyNDAsIDU1MjQ0LCA1NTI1MiwgCisgICAgNTUyNjAsIDU1MjY3LCA1NTI3NSwgNTUyODMsIDU1MjkyLCA1NTMwMSwgNTUzMDcsIDU1MzEzLCA1NTMyMCwgNTUzMjcsIAorICAgIDU1MzM0LCA1NTM0MSwgNTUzNTAsIDU1MzU5LCA1NTM2MiwgNTUzNjUsIDU1MzcwLCA1NTM3NSwgNTUzODEsIDU1Mzg3LCAKKyAgICA1NTM5NCwgNTU0MDEsIDU1NDEyLCA1NTQyMywgNTU0MzAsIDU1NDM3LCA1NTQ0NSwgNTU0NTMsIDU1NDYxLCA1NTQ2OSwgCisgICAgNTU0NzcsIDU1NDg1LCA1NTQ5MSwgNTU0OTcsIDU1NTAxLCA1NTUwNSwgNTU1MTMsIDU1NTIxLCA1NTUyNiwgNTU1MzEsIAorICAgIDU1NTM2LCA1NTU0MSwgNTU1NDcsIDU1NTYxLCA1NTU2OCwgNTU1NzUsIDU1NTc5LCA1NTU4MSwgNTU1ODMsIDU1NTg4LCAKKyAgICA1NTU5MywgNTU1OTgsIDU1NjAyLCA1NTYxMCwgNTU2MTcsIDU1NjI0LCA1NTYzMiwgNTU2NDQsIDU1NjUyLCA1NTY2MCwgCisgICAgNTU2NzEsIDU1Njc1LCA1NTY3OSwgNTU2ODUsIDU1NjkzLCA1NTcwNiwgNTU3MTMsIDU1NzIwLCA1NTcyNywgNTU3MzMsIAorICAgIDU1NzQwLCA1NTc0OSwgNTU3NTgsIDU1NzY0LCA1NTc3MCwgNTU3NzYsIDU1Nzg2LCA1NTc5NiwgNTU4MDQsIDU1ODEzLCAKKyAgICA1NTgxOCwgNTU4MjEsIDU1ODI2LCA1NTgzMSwgNTU4MzYsIDU1ODQyLCA1NTg0OCwgNTU4NTIsIDU1ODU1LCA1NTg1OCwgCisgICAgNTU4NjEsIDU1ODY2LCA1NTg3MSwgNTU4NzcsIDU1ODgzLCA1NTg4NywgNTU4OTEsIDU1ODk4LCA1NTkwNSwgNTU5MTIsIAorICAgIDU1OTE5LCA1NTkyNiwgNTU5MzMsIDU1OTQzLCA1NTk1MywgNTU5NjAsIDU1OTY3LCA1NTk3NSwgNTU5ODMsIDU1OTg3LCAKKyAgICA1NTk5MiwgNTU5OTcsIDU2MDAzLCA1NjAwOSwgNTYwMTIsIDU2MDE1LCA1NjAxOCwgNTYwMjEsIDU2MDI2LCA1NjAzMSwgCisgICAgNTYwMzYsIDU2MDQxLCA1NjA0NiwgNTYwNTEsIDU2MDU1LCA1NjA1OSwgNTYwNjMsIDU2MDY4LCA1NjA3MywgNTYwNzcsIAorICAgIDU2MDgxLCA1NjA4NywgNTYwOTEsIDU2MDk3LCA1NjEwMiwgNTYxMDksIDU2MTE3LCA1NjEyNCwgNTYxMzIsIDU2MTM5LCAKKyAgICA1NjE0NywgNTYxNTYsIDU2MTYzLCA1NjE3MywgNTYxODQsIDU2MTkwLCA1NjE5OSwgNTYyMDUsIDU2MjE0LCA1NjIyMywgCisgICAgNTYyMjksIDU2MjM1LCA1NjIzOSwgNTYyNDMsIDU2MjUyLCA1NjI2MSwgNTYyNjgsIDU2Mjc1LCA1NjI4NCwgNTYyOTMsIAorICAgIDU2Mjk5LCA1NjMwNSwgNTYzMTIsIDU2MzE3LCA1NjMyMSwgNTYzMjUsIDU2MzMwLCA1NjMzNSwgNTYzNDAsIDU2MzQ4LCAKKyAgICA1NjM1NiwgNTYzNTksIDU2MzYzLCA1NjM3MiwgNTYzODIsIDU2MzkxLCA1NjQwMSwgNTY0MTIsIDU2NDI1LCA1NjQyOSwgCisgICAgNTY0MzMsIDU2NDM3LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NywgNTY0NjMsIDU2NDcwLCA1NjQ3NywgNTY0ODMsIAorICAgIDU2NDg5LCA1NjQ5NSwgNTY1MDEsIDU2NTA5LCA1NjUxNywgNTY1MjQsIDU2NTMxLCA1NjUzOCwgMCwgMCwgNTY1NDUsIAorICAgIDU2NTU0LCA1NjU2MywgNTY1NzMsIDU2NTgzLCA1NjU5MiwgNTY2MDEsIDU2NjEwLCA1NjYxOSwgNTY2MjUsIDU2NjMwLCAKKyAgICA1NjYzOSwgNTY2NDksIDU2NjU4LCA1NjY2OCwgNTY2NzUsIDU2NjgyLCA1NjY4OSwgNTY2OTYsIDU2NzAxLCA1NjcwNiwgCisgICAgNTY3MTEsIDU2NzE2LCA1NjcyNCwgNTY3MzMsIDU2NzQxLCA1Njc1MCwgNTY3NTQsIDU2NzU4LCA1Njc2MiwgNTY3NjYsIAorICAgIDU2Nzc2LCAwLCAwLCA1Njc3OSwgNTY3ODgsIDU2Nzk3LCA1NjgwNiwgNTY4MTUsIDU2ODIxLCA1NjgyNywgNTY4MzMsIAorICAgIDU2ODM5LCA1Njg0OSwgNTY4NTksIDU2ODY5LCA1Njg3OSwgNTY4ODksIDU2ODk5LCA1NjkwOSwgNTY5MTksIDU2OTI2LCAKKyAgICA1NjkzMywgNTY5NDAsIDU2OTQ3LCA1Njk1NCwgNTY5NjEsIDU2OTY4LCA1Njk3NSwgNTY5ODEsIDU2OTg3LCA1Njk5MywgCisgICAgNTY5OTksIDU3MDA1LCA1NzAxMSwgNTcwMTcsIDU3MDIzLCA1NzAzNCwgMCwgMCwgMCwgNTcwNDQsIDU3MDUxLCA1NzA1NCwgCisgICAgNTcwNTgsIDU3MDYyLCA1NzA2NywgNTcwNzIsIDU3MDc3LCA1NzA4MCwgNTcwODksIDU3MDk4LCA1NzEwNywgMCwgNTcxMTYsIAorICAgIDU3MTIyLCA1NzEyOCwgNTcxMzYsIDU3MTQ2LCA1NzE1MywgNTcxNjIsIDU3MTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzE3MCwgNTcxNzksIAorICAgIDU3MTg4LCA1NzE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcyMDYsIAorICAgIDU3MjExLCA1NzIxNiwgNTcyMjEsIDU3MjI2LCA1NzIzMSwgNTcyMzYsIDU3MjQxLCA1NzI0NiwgNTcyNTEsIDU3MjU2LCAKKyAgICA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCA1NzI5MSwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgCisgICAgNTczMTEsIDU3MzE2LCA1NzMyMSwgNTczMjYsIDU3MzMxLCA1NzMzNiwgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTYsIAorICAgIDU3MzYxLCA1NzM2NiwgNTczNzEsIDU3Mzc2LCA1NzM4MiwgNTczODcsIDU3MzkzLCA1NzQwMiwgNTc0MDcsIDU3NDE1LCAKKyAgICA1NzQyMiwgNTc0MzEsIDU3NDM2LCA1NzQ0MSwgNTc0NDYsIDU3NDUyLCAwLCA1NzQ1OSwgNTc0NjQsIDU3NDY5LCA1NzQ3NCwgCisgICAgNTc0NzksIDU3NDg0LCA1NzQ4OSwgNTc0OTQsIDU3NDk5LCA1NzUwNCwgNTc1MDksIDU3NTE1LCA1NzUxOSwgNTc1MjQsIAorICAgIDU3NTI5LCA1NzUzNCwgNTc1MzksIDU3NTQ0LCA1NzU0OSwgNTc1NTQsIDU3NTU5LCA1NzU2NCwgNTc1NjksIDU3NTc0LCAKKyAgICA1NzU3OSwgNTc1ODQsIDU3NTg5LCA1NzU5NCwgNTc1OTksIDU3NjA0LCA1NzYwOSwgNTc2MTQsIDU3NjE5LCA1NzYyNCwgCisgICAgNTc2MjksIDU3NjM1LCA1NzY0MCwgNTc2NDYsIDU3NjU1LCA1NzY2MCwgNTc2NjgsIDU3Njc1LCA1NzY4NCwgNTc2ODksIAorICAgIDU3Njk0LCA1NzY5OSwgNTc3MDUsIDAsIDU3NzEyLCA1NzcyMCwgNTc3MjgsIDU3NzM3LCA1Nzc0NCwgNTc3NTIsIDU3NzU4LCAKKyAgICA1Nzc2NywgNTc3NzUsIDU3NzgzLCA1Nzc5MSwgNTc3OTksIDU3ODA3LCA1NzgxNSwgNTc4MjAsIDU3ODI3LCA1NzgzMywgCisgICAgNTc4NDAsIDU3ODQ4LCA1Nzg1NSwgNTc4NjIsIDU3ODcwLCA1Nzg3NiwgNTc4ODIsIDU3ODg5LCA1Nzg5NiwgNTc5MDYsIAorICAgIDU3OTE2LCA1NzkyMywgNTc5MzAsIDU3OTM1LCA1Nzk0NSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzAsIDU3OTc1LCAKKyAgICA1Nzk4MCwgNTc5ODUsIDU3OTkwLCA1Nzk5NSwgNTgwMDAsIDU4MDA1LCA1ODAxMCwgNTgwMTUsIDU4MDIwLCA1ODAyNSwgCisgICAgNTgwMzAsIDU4MDM1LCA1ODA0MCwgNTgwNDUsIDU4MDUwLCA1ODA1NSwgNTgwNjAsIDU4MDY1LCA1ODA3MCwgNTgwNzUsIAorICAgIDU4MDgwLCA1ODA4NSwgNTgwOTAsIDU4MDk1LCA1ODEwMCwgNTgxMDUsIDU4MTA5LCA1ODExMywgNTgxMTgsIDU4MTIzLCAKKyAgICA1ODEyOCwgNTgxMzMsIDU4MTM4LCA1ODE0MywgNTgxNDgsIDU4MTUzLCA1ODE1OCwgNTgxNjMsIDU4MTY4LCA1ODE3MywgCisgICAgNTgxNzgsIDU4MTgzLCA1ODE4OCwgNTgxOTMsIDU4MTk4LCA1ODIwMywgNTgyMTAsIDU4MjE3LCA1ODIyNCwgNTgyMzEsIAorICAgIDU4MjM4LCA1ODI0NSwgNTgyNTIsIDU4MjU5LCA1ODI2NiwgNTgyNzMsIDU4MjgwLCA1ODI4NywgNTgyOTQsIDU4MzAxLCAKKyAgICA1ODMwNiwgNTgzMTEsIDU4MzE4LCA1ODMyNSwgNTgzMzIsIDU4MzM5LCA1ODM0NiwgNTgzNTMsIDU4MzYwLCA1ODM2NywgCisgICAgNTgzNzQsIDU4MzgxLCA1ODM4OCwgNTgzOTUsIDU4NDAxLCA1ODQwNywgNTg0MTMsIDU4NDE5LCA1ODQyNiwgNTg0MzMsIAorICAgIDU4NDQwLCA1ODQ0NywgNTg0NTQsIDU4NDYxLCA1ODQ2OCwgNTg0NzUsIDU4NDgyLCA1ODQ4OSwgNTg0OTcsIDU4NTA1LCAKKyAgICA1ODUxMywgNTg1MjEsIDU4NTI5LCA1ODUzNywgNTg1NDUsIDU4NTUzLCA1ODU1NywgNTg1NjMsIDU4NTY5LCA1ODU3MywgCisgICAgNTg1NzksIDU4NTg1LCA1ODU5MSwgNTg1OTgsIDU4NjA1LCA1ODYxMiwgNTg2MTksIDU4NjI0LCA1ODYzMCwgNTg2MzYsIAorICAgIDU4NjQzLCAwLCAwLCAwLCAwLCAwLCA1ODY1MCwgNTg2NTgsIDU4NjY3LCA1ODY3NiwgNTg2ODQsIDU4NjkwLCA1ODY5NSwgCisgICAgNTg3MDAsIDU4NzA1LCA1ODcxMCwgNTg3MTUsIDU4NzIwLCA1ODcyNSwgNTg3MzAsIDU4NzM1LCA1ODc0MCwgNTg3NDUsIAorICAgIDU4NzUwLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCAKKyAgICA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgCisgICAgNTg4NTAsIDU4ODU1LCA1ODg2MCwgNTg4NjUsIDU4ODcwLCA1ODg3NSwgNTg4ODAsIDU4ODg1LCAwLCA1ODg5MCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTg4OTUsIDAsIDAsIDU4OTAwLCA1ODkwNCwgNTg5MDksIDU4OTE0LCA1ODkxOSwgNTg5MjQsIDU4OTMzLCAKKyAgICA1ODkzOCwgNTg5NDMsIDU4OTQ4LCA1ODk1MywgNTg5NTgsIDU4OTYzLCA1ODk2OCwgNTg5NzMsIDU4OTgwLCA1ODk4NSwgCisgICAgNTg5OTAsIDU4OTk5LCA1OTAwNiwgNTkwMTEsIDU5MDE2LCA1OTAyMSwgNTkwMjgsIDU5MDMzLCA1OTA0MCwgNTkwNDUsIAorICAgIDU5MDUwLCA1OTA1NywgNTkwNjQsIDU5MDY5LCA1OTA3NCwgNTkwNzksIDU5MDg2LCA1OTA5MywgNTkwOTgsIDU5MTAzLCAKKyAgICA1OTEwOCwgNTkxMTMsIDU5MTE4LCA1OTEyNSwgNTkxMzIsIDU5MTM3LCA1OTE0MiwgNTkxNDcsIDU5MTUyLCA1OTE1NywgCisgICAgNTkxNjIsIDU5MTY3LCA1OTE3MiwgNTkxNzcsIDU5MTgyLCA1OTE4NywgNTkxOTQsIDU5MTk5LCA1OTIwNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTkyMDksIDU5MjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTIyMSwgNTkyMjYsIDU5MjMwLCA1OTIzNCwgNTkyMzgsIDU5MjQyLCA1OTI0NiwgNTkyNTAsIDU5MjU0LCA1OTI1OCwgCisgICAgNTkyNjIsIDU5MjY2LCA1OTI3MiwgNTkyNzYsIDU5MjgwLCA1OTI4NCwgNTkyODgsIDU5MjkyLCA1OTI5NiwgNTkzMDAsIAorICAgIDU5MzA0LCA1OTMwOCwgNTkzMTIsIDU5MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTMyMCwgNTkzMjQsIAorICAgIDU5MzI4LCA1OTMzMiwgNTkzMzYsIDU5MzQwLCA1OTM0NCwgMCwgNTkzNDgsIDU5MzUyLCA1OTM1NiwgNTkzNjAsIDU5MzY0LCAKKyAgICA1OTM2OCwgNTkzNzIsIDAsIDU5Mzc2LCA1OTM4MCwgNTkzODQsIDU5Mzg4LCA1OTM5MiwgNTkzOTYsIDU5NDAwLCAwLCAKKyAgICA1OTQwNCwgNTk0MDgsIDU5NDEyLCA1OTQxNiwgNTk0MjAsIDU5NDI0LCA1OTQyOCwgMCwgNTk0MzIsIDU5NDM2LCA1OTQ0MCwgCisgICAgNTk0NDQsIDU5NDQ4LCA1OTQ1MiwgNTk0NTYsIDAsIDU5NDYwLCA1OTQ2NCwgNTk0NjgsIDU5NDcyLCA1OTQ3NiwgNTk0ODAsIAorICAgIDU5NDg0LCAwLCA1OTQ4OCwgNTk0OTIsIDU5NDk2LCA1OTUwMCwgNTk1MDQsIDU5NTA4LCA1OTUxMiwgMCwgNTk1MTYsIAorICAgIDU5NTIwLCA1OTUyNCwgNTk1MjgsIDU5NTMyLCA1OTUzNiwgNTk1NDAsIDAsIDU5NTQ0LCA1OTU0OSwgNTk1NTQsIDU5NTU5LCAKKyAgICA1OTU2NCwgNTk1NjksIDU5NTc0LCA1OTU3OCwgNTk1ODMsIDU5NTg4LCA1OTU5MywgNTk1OTcsIDU5NjAyLCA1OTYwNywgCisgICAgNTk2MTIsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMxLCA1OTYzNiwgNTk2NDEsIDU5NjQ2LCA1OTY1MSwgNTk2NTUsIAorICAgIDU5NjYwLCA1OTY2NSwgNTk2NzIsIDU5Njc3LCA1OTY4MiwgNTk2ODgsIDU5Njk1LCA1OTcwMiwgNTk3MTEsIDU5NzE4LCAKKyAgICA1OTcyNywgNTk3MzEsIDU5NzM1LCA1OTc0MSwgNTk3NDcsIDU5NzUzLCA1OTc2MSwgNTk3NjcsIDU5NzcxLCA1OTc3NSwgCisgICAgNTk3NzksIDU5Nzg1LCA1OTc5MSwgNTk3OTUsIDU5Nzk3LCA1OTgwMSwgNTk4MDcsIDU5ODA5LCA1OTgxMywgNTk4MTYsIAorICAgIDU5ODE5LCA1OTgyNSwgNTk4MzAsIDU5ODM0LCA1OTgzOCwgNTk4NDMsIDU5ODQ5LCA1OTg1NCwgNTk4NTksIDU5ODY0LCAKKyAgICA1OTg2OSwgNTk4NzYsIDU5ODgzLCA1OTg4OCwgNTk4OTMsIDU5ODk4LCA1OTkwMywgNTk5MDgsIDU5OTEzLCA1OTkxNywgCisgICAgNTk5MjEsIDU5OTI4LCA1OTkzNSwgNTk5NDEsIDU5OTQ1LCA1OTk1MCwgNTk5NTMsIDU5OTU3LCA1OTk2NCwgNTk5NjgsIAorICAgIDU5OTcyLCA1OTk3NiwgNTk5ODAsIDU5OTg2LCA1OTk5MiwgNTk5OTYsIDYwMDAyLCA2MDAwNiwgNjAwMTAsIDYwMDE2LCAKKyAgICA2MDAyMSwgNjAwMjYsIDYwMDI4LCA2MDAzMSwgNjAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDU0LCA2MDA1OSwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgxLCAKKyAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgNjAxMDIsIDYwMTA3LCA2MDExMiwgNjAxMTcsIDYwMTIyLCA2MDEyNiwgCisgICAgNjAxMzAsIDYwMTM1LCA2MDE0MCwgNjAxNDUsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIDYwMTYyLCA2MDE2NiwgNjAxNzAsIAorICAgIDYwMTc0LCA2MDE3OCwgNjAxODIsIDYwMTg3LCA2MDE5MiwgNjAxOTYsIDYwMjAxLCA2MDIwNiwgNjAyMTUsIDYwMjE5LCAKKyAgICA2MDIyMywgNjAyMjcsIDYwMjM0LCA2MDIzOCwgNjAyNDMsIDYwMjQ4LCA2MDI1MiwgNjAyNTYsIDYwMjYyLCA2MDI2NywgCisgICAgNjAyNzIsIDYwMjc3LCA2MDI4MiwgNjAyODYsIDYwMjkwLCA2MDI5NCwgNjAyOTgsIDYwMzAyLCA2MDMwNywgNjAzMTIsIAorICAgIDYwMzE2LCA2MDMyMCwgNjAzMjUsIDYwMzMwLCA2MDMzNSwgNjAzMzksIDYwMzQzLCA2MDM0OCwgNjAzNTMsIDYwMzU5LCAKKyAgICA2MDM2NSwgNjAzNjksIDYwMzc1LCA2MDM4MSwgNjAzODUsIDYwMzkxLCA2MDM5NywgNjA0MDIsIDYwNDA3LCA2MDQxMSwgCisgICAgNjA0MTcsIDYwNDIxLCA2MDQyNSwgNjA0MzEsIDYwNDM3LCA2MDQ0MiwgNjA0NDcsIDYwNDUxLCA2MDQ1NSwgNjA0NjMsIAorICAgIDYwNDY5LCA2MDQ3NSwgNjA0ODEsIDYwNDg2LCA2MDQ5MSwgNjA0OTYsIDYwNTAyLCA2MDUwNiwgNjA1MTIsIDYwNTE2LCAKKyAgICA2MDUyMCwgNjA1MjYsIDYwNTMyLCA2MDUzOCwgNjA1NDQsIDYwNTUwLCA2MDU1NiwgNjA1NjIsIDYwNTY4LCA2MDU3NCwgCisgICAgNjA1ODAsIDYwNTg2LCA2MDU5MiwgNjA1OTYsIDYwNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDYwOCwgNjA2MTEsIDYwNjE1LCA2MDYxOSwgNjA2MjMsIDYwNjI3LCA2MDYzMCwgNjA2MzMsIDYwNjM3LCA2MDY0MSwgCisgICAgNjA2NDUsIDYwNjQ5LCA2MDY1MiwgNjA2NTcsIDYwNjYxLCA2MDY2NSwgNjA2NjksIDYwNjc0LCA2MDY3OCwgNjA2ODIsIAorICAgIDYwNjg2LCA2MDY5MCwgNjA2OTYsIDYwNzAyLCA2MDcwNiwgNjA3MTAsIDYwNzE0LCA2MDcxOCwgNjA3MjIsIDYwNzI2LCAKKyAgICA2MDczMCwgNjA3MzQsIDYwNzM4LCA2MDc0MiwgNjA3NDYsIDYwNzUyLCA2MDc1NiwgNjA3NjAsIDYwNzY0LCA2MDc2OCwgCisgICAgNjA3NzIsIDYwNzc2LCA2MDc4MCwgNjA3ODQsIDYwNzg4LCA2MDc5MiwgNjA3OTYsIDYwODAwLCA2MDgwNCwgNjA4MDgsIAorICAgIDYwODEyLCA2MDgxNiwgNjA4MjIsIDYwODI4LCA2MDgzMywgNjA4MzgsIDYwODQyLCA2MDg0NiwgNjA4NTAsIDYwODU0LCAKKyAgICA2MDg1OCwgNjA4NjIsIDYwODY2LCA2MDg3MCwgNjA4NzQsIDYwODc4LCA2MDg4MiwgNjA4ODYsIDYwODkwLCA2MDg5NCwgCisgICAgNjA4OTgsIDYwOTAyLCA2MDkwNiwgNjA5MTAsIDYwOTE0LCA2MDkxOCwgNjA5MjIsIDYwOTI2LCA2MDkzMCwgNjA5MzQsIAorICAgIDYwOTQwLCA2MDk0NCwgNjA5NDgsIDYwOTUyLCA2MDk1NiwgNjA5NjAsIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCAKKyAgICA2MDk4NCwgNjA5ODgsIDYwOTkyLCA2MDk5NiwgNjEwMDAsIDYxMDA0LCA2MTAwOCwgNjEwMTIsIDYxMDE2LCA2MTAyMCwgCisgICAgNjEwMjQsIDYxMDI4LCA2MTAzMiwgNjEwMzksIDYxMDQzLCA2MTA0OSwgNjEwNTMsIDYxMDU3LCA2MTA2MSwgNjEwNjUsIAorICAgIDYxMDY5LCA2MTA3MiwgNjEwNzYsIDYxMDgwLCA2MTA4NCwgNjEwODgsIDYxMDkyLCA2MTA5NiwgNjExMDAsIDYxMTA0LCAKKyAgICA2MTEwOCwgNjExMTIsIDYxMTE2LCA2MTEyMCwgNjExMjQsIDYxMTI4LCA2MTEzMiwgNjExMzYsIDYxMTQwLCA2MTE0NCwgCisgICAgNjExNDgsIDYxMTUyLCA2MTE1NiwgNjExNjAsIDYxMTY0LCA2MTE2OCwgNjExNzIsIDYxMTc2LCA2MTE4MCwgNjExODQsIAorICAgIDYxMTg4LCA2MTE5MiwgNjExOTYsIDYxMjAwLCA2MTIwNiwgNjEyMTAsIDYxMjE0LCA2MTIxOCwgNjEyMjIsIDYxMjI2LCAKKyAgICA2MTIzMCwgNjEyMzQsIDYxMjM4LCA2MTI0MiwgNjEyNDYsIDYxMjUwLCA2MTI1NCwgNjEyNTgsIDYxMjYyLCA2MTI2NiwgCisgICAgNjEyNzAsIDYxMjc0LCA2MTI3OCwgNjEyODIsIDYxMjg2LCA2MTI5MCwgNjEyOTQsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIAorICAgIDYxMzEwLCA2MTMxNCwgNjEzMjIsIDYxMzI2LCA2MTMzMCwgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzUyLCAKKyAgICA2MTM1NiwgNjEzNjAsIDYxMzY0LCA2MTM2OCwgNjEzNzIsIDYxMzc2LCA2MTM4MCwgNjEzODQsIDYxMzg4LCA2MTM5MiwgCisgICAgNjEzOTYsIDYxNDAwLCA2MTQwNiwgNjE0MTAsIDYxNDE0LCA2MTQxOCwgNjE0MjIsIDYxNDI2LCA2MTQzMCwgNjE0MzQsIAorICAgIDYxNDM4LCA2MTQ0MiwgNjE0NDYsIDYxNDUwLCA2MTQ1NCwgNjE0NTgsIDYxNDYyLCA2MTQ2NiwgNjE0NzAsIDYxNDc0LCAKKyAgICA2MTQ3OCwgNjE0ODIsIDYxNDg2LCA2MTQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0OTQsIDYxNTAzLCA2MTUxMSwgNjE1MjIsIDYxNTMyLCAKKyAgICA2MTU0MCwgNjE1NDksIDYxNTU4LCA2MTU2OCwgNjE1ODAsIDYxNTkyLCA2MTYwNCwgMCwgMCwgMCwgMCwgNjE2MTAsIAorICAgIDYxNjEzLCA2MTYxNiwgNjE2MjEsIDYxNjI0LCA2MTYzMSwgNjE2MzUsIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCAKKyAgICA2MTY1NiwgNjE2NjEsIDYxNjY1LCA2MTY2OSwgNjE2NzQsIDYxNjc5LCA2MTY4NCwgNjE2ODksIDYxNjkyLCA2MTY5NSwgCisgICAgNjE3MDEsIDYxNzA3LCA2MTcxMiwgNjE3MTcsIDYxNzI0LCA2MTczMSwgNjE3MzUsIDYxNzM5LCA2MTc0MywgNjE3NTEsIAorICAgIDYxNzU3LCA2MTc2NCwgNjE3NjksIDYxNzc0LCA2MTc3OSwgNjE3ODQsIDYxNzg5LCA2MTc5NCwgNjE3OTksIDYxODA1LCAKKyAgICA2MTgxMCwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM2LCA2MTg0MiwgNjE4NDcsIDYxODUxLCA2MTg1NywgCisgICAgNjE4NjgsIDYxODc4LCA2MTg5MywgNjE5MDMsIDYxOTA3LCA2MTkxNywgNjE5MjMsIDYxOTI5LCA2MTkzNSwgNjE5NDAsIAorICAgIDYxOTQzLCA2MTk0OCwgNjE5NTIsIDAsIDYxOTU4LCA2MTk2MiwgNjE5NjUsIDYxOTY5LCA2MTk3MiwgNjE5NzYsIDYxOTc5LCAKKyAgICA2MTk4MywgNjE5ODYsIDYxOTkwLCA2MTk5MywgNjE5OTYsIDYyMDAwLCA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgCisgICAgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTYsIAorICAgIDYyMDYwLCA2MjA2NCwgNjIwNjgsIDYyMDcyLCA2MjA3NiwgNjIwODAsIDYyMDg0LCA2MjA4OCwgNjIwOTMsIDYyMDk3LCAKKyAgICA2MjEwMSwgNjIxMDUsIDYyMTA5LCA2MjExMiwgNjIxMTYsIDYyMTIwLCA2MjEyNCwgNjIxMjgsIDYyMTMyLCA2MjEzNiwgCisgICAgNjIxMzksIDYyMTQzLCA2MjE0NiwgNjIxNTAsIDYyMTU0LCA2MjE1OCwgNjIxNjIsIDYyMTY2LCA2MjE3MCwgNjIxNzQsIAorICAgIDYyMTc4LCA2MjE4MiwgNjIxODYsIDYyMTkwLCA2MjE5NCwgNjIxOTcsIDYyMjAxLCA2MjIwNSwgNjIyMDksIDYyMjEzLCAKKyAgICA2MjIxNywgNjIyMjAsIDYyMjI1LCA2MjIyOSwgNjIyMzQsIDYyMjM4LCA2MjI0MiwgNjIyNDYsIDYyMjUwLCA2MjI1NCwgCisgICAgNjIyNTgsIDYyMjYzLCA2MjI2NywgNjIyNzEsIDYyMjc1LCA2MjI3OSwgNjIyODMsIDYyMjg3LCA2MjI5MSwgMCwgMCwgCisgICAgNjIyOTYsIDYyMzA0LCA2MjMxMiwgNjIzMTksIDYyMzI2LCA2MjMzMCwgNjIzMzYsIDYyMzQxLCA2MjM0NiwgNjIzNTAsIAorICAgIDYyMzUzLCA2MjM1NywgNjIzNjAsIDYyMzY0LCA2MjM2NywgNjIzNzEsIDYyMzc0LCA2MjM3OCwgNjIzODEsIDYyMzg0LCAKKyAgICA2MjM4OCwgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDQsIDYyNDA4LCA2MjQxMiwgNjI0MTYsIDYyNDIwLCA2MjQyNCwgCisgICAgNjI0MjgsIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTIsIDYyNDU2LCA2MjQ2MCwgNjI0NjQsIAorICAgIDYyNDY4LCA2MjQ3MiwgNjI0NzYsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCA2MjQ5NywgNjI1MDAsIDYyNTA0LCAKKyAgICA2MjUwOCwgNjI1MTIsIDYyNTE2LCA2MjUyMCwgNjI1MjQsIDYyNTI3LCA2MjUzMSwgNjI1MzQsIDYyNTM4LCA2MjU0MiwgCisgICAgNjI1NDYsIDYyNTUwLCA2MjU1NCwgNjI1NTgsIDYyNTYyLCA2MjU2NiwgNjI1NzAsIDYyNTc0LCA2MjU3OCwgNjI1ODIsIAorICAgIDYyNTg1LCA2MjU4OSwgNjI1OTMsIDYyNTk3LCA2MjYwMSwgNjI2MDUsIDYyNjA4LCA2MjYxMywgNjI2MTcsIDYyNjIyLCAKKyAgICA2MjYyNiwgNjI2MzAsIDYyNjM0LCA2MjYzOCwgNjI2NDIsIDYyNjQ2LCA2MjY1MSwgNjI2NTUsIDYyNjU5LCA2MjY2MywgCisgICAgNjI2NjcsIDYyNjcxLCA2MjY3NSwgNjI2NzksIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIAorICAgIDYyNzExLCA2MjcxNSwgNjI3MjEsIDAsIDAsIDAsIDAsIDAsIDYyNzI2LCA2MjczMSwgNjI3MzYsIDYyNzQxLCA2Mjc0NiwgCisgICAgNjI3NTEsIDYyNzU2LCA2Mjc2MSwgNjI3NjUsIDYyNzcwLCA2Mjc3NSwgNjI3ODAsIDYyNzg1LCA2Mjc5MCwgNjI3OTUsIAorICAgIDYyODAwLCA2MjgwNSwgNjI4MTAsIDYyODE0LCA2MjgxOSwgNjI4MjQsIDYyODI4LCA2MjgzMiwgNjI4MzYsIDYyODQwLCAKKyAgICA2Mjg0NSwgNjI4NTAsIDYyODU1LCA2Mjg2MCwgNjI4NjUsIDYyODcwLCA2Mjg3NSwgNjI4ODAsIDYyODg1LCA2Mjg5MCwgCisgICAgNjI4OTQsIDYyODk4LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgMCwgMCwgMCwgNjI5MjMsIDYyOTI3LCA2MjkzMSwgCisgICAgNjI5MzUsIDYyOTM5LCA2Mjk0MywgNjI5NDcsIDYyOTUxLCA2Mjk1NSwgNjI5NTksIDYyOTYzLCA2Mjk2NywgNjI5NzEsIAorICAgIDYyOTc1LCA2Mjk3OSwgNjI5ODMsIDYyOTg3LCA2Mjk5MSwgNjI5OTUsIDYyOTk5LCA2MzAwMywgNjMwMDcsIDYzMDExLCAKKyAgICA2MzAxNSwgNjMwMTksIDYzMDIzLCA2MzAyNywgNjMwMzEsIDYzMDM1LCA2MzAzOSwgNjMwNDMsIDYzMDQ2LCA2MzA1MCwgCisgICAgNjMwNTMsIDYzMDU3LCA2MzA2MSwgNjMwNjQsIDYzMDY4LCA2MzA3MiwgNjMwNzUsIDYzMDc5LCA2MzA4MywgNjMwODcsIAorICAgIDYzMDkxLCA2MzA5NCwgNjMwOTgsIDYzMTAyLCA2MzEwNiwgNjMxMTAsIDYzMTE0LCA2MzExOCwgNjMxMjEsIDYzMTI0LCAKKyAgICA2MzEyOCwgNjMxMzIsIDYzMTM2LCA2MzE0MCwgNjMxNDQsIDYzMTQ4LCA2MzE1MiwgNjMxNTYsIDYzMTYwLCA2MzE2NCwgCisgICAgNjMxNjgsIDYzMTcyLCA2MzE3NiwgNjMxODAsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIDYzMTk2LCA2MzIwMCwgNjMyMDQsIAorICAgIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCA2MzIzNiwgNjMyNDAsIDYzMjQ0LCAKKyAgICA2MzI0OCwgNjMyNTIsIDYzMjU2LCA2MzI2MCwgNjMyNjQsIDYzMjY4LCA2MzI3MiwgNjMyNzYsIDYzMjgwLCA2MzI4NCwgCisgICAgNjMyODgsIDAsIDYzMjkyLCA2MzI5OCwgNjMzMDQsIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI1LCA2MzMzMSwgNjMzMzYsIAorICAgIDYzMzQyLCA2MzM0OCwgNjMzNTQsIDYzMzYwLCA2MzM2NiwgNjMzNzIsIDYzMzc4LCA2MzM4NCwgNjMzODksIDYzMzk0LCAKKyAgICA2MzM5OSwgNjM0MDQsIDYzNDA5LCA2MzQxNCwgNjM0MTksIDYzNDI0LCA2MzQyOSwgNjM0MzQsIDYzNDM5LCA2MzQ0NCwgCisgICAgNjM0NDksIDYzNDU0LCA2MzQ1OSwgNjM0NjQsIDYzNDY5LCA2MzQ3NCwgNjM0NzksIDYzNDg0LCA2MzQ5MCwgNjM0OTYsIAorICAgIDYzNTAyLCA2MzUwOCwgNjM1MTMsIDYzNTE4LCAwLCAwLCAwLCAwLCAwLCA2MzUyMywgNjM1MjgsIDYzNTMzLCA2MzUzOCwgCisgICAgNjM1NDMsIDYzNTQ4LCA2MzU1MywgNjM1NTgsIDYzNTYzLCA2MzU2OCwgNjM1NzMsIDYzNTc4LCA2MzU4MywgNjM1ODgsIAorICAgIDYzNTkzLCA2MzU5OCwgNjM2MDMsIDYzNjA4LCA2MzYxMiwgNjM2MTcsIDYzNjIyLCA2MzYyNywgNjM2MzIsIDYzNjM3LCAKKyAgICA2MzY0MiwgNjM2NDcsIDYzNjUyLCA2MzY1NywgNjM2NjIsIDYzNjY3LCA2MzY3MiwgNjM2NzcsIDYzNjgyLCA2MzY4NywgCisgICAgNjM2OTIsIDYzNjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcwMiwgNjM3MDcsIDYzNzEyLCAKKyAgICA2MzcxNywgNjM3MjEsIDYzNzI2LCA2MzczMCwgNjM3MzUsIDYzNzQwLCA2Mzc0NSwgNjM3NTAsIDYzNzU1LCA2Mzc2MCwgCisgICAgNjM3NjUsIDYzNzcwLCA2Mzc3NSwgNjM3ODAsIDYzNzg0LCA2Mzc4OCwgNjM3OTIsIDYzNzk2LCA2MzgwMCwgNjM4MDQsIAorICAgIDYzODA4LCA2MzgxMiwgNjM4MTYsIDYzODIwLCA2MzgyNCwgNjM4MjgsIDYzODMyLCA2MzgzNiwgNjM4NDEsIDYzODQ2LCAKKyAgICA2Mzg1MSwgNjM4NTYsIDYzODYxLCA2Mzg2NiwgNjM4NzEsIDYzODc2LCA2Mzg4MSwgNjM4ODYsIDYzODkxLCA2Mzg5NiwgCisgICAgNjM5MDEsIDYzOTA2LCA2MzkxMSwgNjM5MTcsIDAsIDYzOTI0LCA2MzkyNywgNjM5MzAsIDYzOTMzLCA2MzkzNiwgNjM5MzksIAorICAgIDYzOTQyLCA2Mzk0NiwgNjM5NDksIDYzOTUzLCA2Mzk1NywgNjM5NjEsIDYzOTY1LCA2Mzk2OSwgNjM5NzMsIDYzOTc3LCAKKyAgICA2Mzk4MSwgNjM5ODUsIDYzOTg5LCA2Mzk5MywgNjM5OTcsIDY0MDAxLCA2NDAwNSwgNjQwMDksIDY0MDEzLCA2NDAxNywgCisgICAgNjQwMjEsIDY0MDI1LCA2NDAyOSwgNjQwMzMsIDY0MDM3LCA2NDA0MSwgNjQwNDUsIDY0MDQ5LCA2NDA1MywgNjQwNTcsIAorICAgIDY0MDYxLCA2NDA2NSwgNjQwNjksIDY0MDczLCA2NDA3NywgNjQwODYsIDY0MDk1LCA2NDEwNCwgNjQxMTMsIDY0MTIyLCAKKyAgICA2NDEzMSwgNjQxNDAsIDY0MTQ5LCA2NDE1MiwgNjQxNTcsIDY0MTYyLCA2NDE2NywgNjQxNzIsIDY0MTc3LCA2NDE4MiwgCisgICAgNjQxODgsIDY0MTkzLCA2NDE5OSwgNjQyMDMsIDY0MjA4LCA2NDIxMywgNjQyMTgsIDY0MjIzLCA2NDIyOCwgNjQyMzIsIAorICAgIDY0MjM2LCA2NDI0MCwgNjQyNDQsIDY0MjQ4LCA2NDI1MiwgNjQyNTYsIDY0MjYwLCA2NDI2NCwgNjQyNjgsIDY0MjcyLCAKKyAgICA2NDI3NiwgNjQyODAsIDY0Mjg0LCA2NDI4OSwgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgCisgICAgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIDY0MzQ0LCA2NDM0OSwgNjQzNTQsIDY0MzYwLCA2NDM2NiwgNjQzNzEsIAorICAgIDY0Mzc2LCA2NDM3OSwgNjQzODIsIDY0Mzg1LCA2NDM4OCwgNjQzOTEsIDY0Mzk0LCA2NDM5OCwgNjQ0MDEsIDY0NDA1LCAKKyAgICA2NDQwOSwgNjQ0MTMsIDY0NDE3LCA2NDQyMSwgNjQ0MjUsIDY0NDI5LCA2NDQzMywgNjQ0MzcsIDY0NDQxLCA2NDQ0NSwgCisgICAgNjQ0NDksIDY0NDUzLCA2NDQ1NywgNjQ0NjEsIDY0NDY1LCA2NDQ2OSwgNjQ0NzMsIDY0NDc3LCA2NDQ4MSwgNjQ0ODUsIAorICAgIDY0NDg5LCA2NDQ5MywgNjQ0OTcsIDY0NTAxLCA2NDUwNSwgNjQ1MDksIDY0NTEzLCA2NDUxNywgNjQ1MjEsIDY0NTI1LCAKKyAgICA2NDUyOSwgNjQ1MzMsIDY0NTM3LCA2NDU0MSwgNjQ1NDUsIDY0NTQ5LCA2NDU1MywgNjQ1NTcsIDY0NTYxLCA2NDU2NSwgCisgICAgNjQ1NzAsIDY0NTc2LCA2NDU4MSwgNjQ1ODcsIDY0NTkxLCA2NDU5NiwgNjQ2MDEsIDY0NjA2LCA2NDYxMSwgNjQ2MTYsIAorICAgIDY0NjIxLCA2NDYyNywgNjQ2MzIsIDY0NjM4LCA2NDY0MiwgNjQ2NDksIDY0NjU2LCA2NDY2MywgNjQ2NzAsIDY0Njc3LCAKKyAgICA2NDY4NCwgNjQ2OTEsIDY0Njk4LCA2NDcwNSwgNjQ3MTIsIDY0NzE5LCA2NDcyNiwgNjQ3MjksIDY0NzMyLCA2NDczNSwgCisgICAgNjQ3NDAsIDY0NzQzLCA2NDc0NiwgNjQ3NDksIDY0NzUyLCA2NDc1NSwgNjQ3NTgsIDY0NzYyLCA2NDc2NiwgNjQ3NzAsIAorICAgIDY0Nzc0LCA2NDc3OCwgNjQ3ODIsIDY0Nzg2LCA2NDc5MCwgNjQ3OTQsIDY0Nzk4LCA2NDgwMiwgNjQ4MDYsIDY0ODEwLCAKKyAgICA2NDgxMywgNjQ4MTcsIDY0ODIxLCA2NDgyNSwgNjQ4MjksIDY0ODMzLCA2NDgzNiwgNjQ4NDAsIDY0ODQ0LCA2NDg0OCwgCisgICAgNjQ4NTIsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzQsIDY0ODc4LCA2NDg4MiwgNjQ4ODYsIAorICAgIDY0ODkwLCA2NDg5NCwgNjQ4OTgsIDY0OTAyLCA2NDkwNiwgNjQ5MTAsIDY0OTE0LCAwLCA2NDkxOCwgNjQ5MjEsIDY0OTI0LCAKKyAgICA2NDkyNywgNjQ5MzAsIDY0OTMzLCA2NDkzNiwgNjQ5MzksIDY0OTQyLCA2NDk0NSwgNjQ5NDgsIDY0OTUxLCA2NDk1NCwgCisgICAgNjQ5NTcsIDY0OTYwLCA2NDk2MywgNjQ5NjYsIDY0OTY5LCA2NDk3MiwgNjQ5NzUsIDY0OTc4LCA2NDk4MSwgNjQ5ODQsIAorICAgIDY0OTg3LCA2NDk5MCwgNjQ5OTMsIDY0OTk2LCA2NDk5OSwgNjUwMDIsIDY1MDA1LCA2NTAwOCwgNjUwMTEsIDY1MDE0LCAKKyAgICA2NTAxNywgNjUwMjAsIDY1MDIzLCA2NTAyNiwgNjUwMjksIDY1MDMyLCA2NTAzNSwgNjUwMzgsIDY1MDQxLCA2NTA0NCwgCisgICAgNjUwNDcsIDY1MDUwLCA2NTA1MywgNjUwNTYsIDY1MDU5LCA2NTA2MiwgNjUwNjUsIDY1MDY4LCA2NTA3MSwgNjUwNzQsIAorICAgIDY1MDc3LCA2NTA4MCwgNjUwODMsIDY1MDg2LCA2NTA4OSwgNjUwOTIsIDY1MDk1LCA2NTA5OCwgNjUxMDEsIDY1MTA0LCAKKyAgICA2NTEwNywgNjUxMTAsIDY1MTEzLCA2NTExNiwgNjUxMTksIDY1MTIyLCA2NTEyNSwgNjUxMjgsIDY1MTMxLCA2NTEzNCwgCisgICAgNjUxMzcsIDY1MTQwLCA2NTE0MywgNjUxNDYsIDY1MTQ5LCA2NTE1MiwgNjUxNTUsIDY1MTU4LCA2NTE2MSwgNjUxNjQsIAorICAgIDY1MTY3LCA2NTE3MCwgNjUxNzMsIDY1MTc2LCA2NTE3OSwgNjUxODIsIDY1MTkxLCA2NTE5OSwgNjUyMDcsIDY1MjE1LCAKKyAgICA2NTIyMywgNjUyMzEsIDY1MjM5LCA2NTI0OCwgNjUyNTYsIDY1MjY1LCA2NTI3NCwgNjUyODMsIDY1MjkyLCA2NTMwMSwgCisgICAgNjUzMTAsIDY1MzE5LCA2NTMyOCwgNjUzMzcsIDY1MzQ2LCA2NTM1NSwgNjUzNjQsIDY1MzczLCA2NTM4MiwgNjUzOTEsIAorICAgIDY1NDAwLCA2NTQwMywgNjU0MDYsIDY1NDA5LCA2NTQxMSwgNjU0MTQsIDY1NDE3LCA2NTQyMCwgNjU0MjUsIDY1NDMwLCAKKyAgICA2NTQzMywgNjU0NDAsIDY1NDQ3LCA2NTQ1NCwgNjU0NjEsIDY1NDY0LCA2NTQ2OSwgNjU0NzIsIDY1NDc2LCA2NTQ3OCwgCisgICAgNjU0ODAsIDY1NDgzLCA2NTQ4NiwgNjU0ODksIDY1NDkyLCA2NTQ5NSwgNjU0OTgsIDY1NTAxLCA2NTUwNiwgNjU1MTEsIAorICAgIDY1NTE0LCA2NTUxNywgNjU1MjAsIDY1NTIzLCA2NTUyNiwgNjU1MjksIDY1NTMyLCA2NTUzNiwgNjU1MzksIDY1NTQyLCAKKyAgICA2NTU0NSwgNjU1NDgsIDY1NTUxLCA2NTU1NiwgNjU1NTksIDY1NTYyLCA2NTU2NSwgNjU1NzAsIDY1NTc1LCA2NTU4MCwgCisgICAgNjU1ODUsIDY1NTkwLCA2NTU5NSwgNjU2MDAsIDY1NjA1LCA2NTYxMCwgNjU2MTgsIDY1NjIwLCA2NTYyMywgNjU2MjYsIAorICAgIDY1NjI5LCA2NTYzMiwgNjU2MzcsIDY1NjQ1LCA2NTY0OCwgNjU2NTEsIDY1NjU1LCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKKyAgICA2NTY2OSwgNjU2NzIsIDY1Njc1LCA2NTY4MCwgNjU2ODMsIDY1Njg2LCA2NTY5MSwgNjU2OTQsIDY1Njk3LCA2NTcwMiwgCisgICAgNjU3MDcsIDY1NzEyLCA2NTcxNSwgNjU3MTgsIDY1NzIxLCA2NTcyNCwgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIAorICAgIDY1NzQxLCA2NTc0NCwgNjU3NDcsIDY1NzUwLCA2NTc1NSwgNjU3NTgsIDY1NzYxLCA2NTc2NCwgNjU3NjcsIDY1NzcwLCAKKyAgICA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgCisgICAgNjU4MDgsIDY1ODEzLCA2NTgyMSwgNjU4MjksIDY1ODM3LCA2NTg0NSwgNjU4NTMsIDY1ODYxLCA2NTg3MCwgNjU4NzgsIAorICAgIDY1ODg3LCA2NTg5NiwgNjU5MDUsIDY1OTE0LCA2NTkyMywgNjU5MzIsIDY1OTQxLCA2NTk1MCwgNjU5NTksIDY1OTY4LCAKKyAgICA2NTk3NywgNjU5ODYsIDY1OTk1LCA2NjAwNCwgNjYwMTMsIDY2MDIyLCA2NjAzMSwgNjYwNDAsIDY2MDQ5LCA2NjA1OCwgCisgICAgNjYwNjcsIDY2MDc2LCA2NjA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIwNzAsIDAsIDEyMDc5LCAxMjA4NiwgMTIwOTQsIDEyMTA2LCAxMjExMywgMTIxMjAsIDEyMTI3LCAxMjEzOCwgMTIxNDksIAotICAgIDEyMTU2LCAxMjE2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxNzAsIDEyMTc1LCAxMjE4MCwgMTIxODUsIDEyMTkwLCAKLSAgICAxMjE5NSwgMTIyMDAsIDEyMjA1LCAxMjIxMCwgMTIyMTUsIDEyMjIwLCAxMjIyNSwgMTIyMzAsIDEyMjM0LCAxMjIzOCwgCi0gICAgMTIyNDIsIDEyMjQ3LCAxMjI1MywgMTIyNTksIDEyMjY1LCAxMjI3MCwgMTIyNzUsIDEyMjgwLCAxMjI4NSwgMTIyOTEsIAotICAgIDEyMzAwLCAxMjMwOCwgMCwgMTIzMTQsIDEyMzIwLCAxMjMyNCwgMTIzMjgsIDEyMzMyLCAxMjMzNywgMTIzNDAsIDEyMzQ0LCAKLSAgICAxMjM0NywgMTIzNTEsIDEyMzU0LCAxMjM1OCwgMTIzNjIsIDEyMzY2LCAxMjM3MSwgMTIzNzYsIDEyMzc5LCAxMjM4MywgCi0gICAgMTIzODgsIDEyMzkzLCAxMjM5NiwgMTI0MDAsIDEyNDAzLCAxMjQwNywgMTI0MTEsIDEyNDE1LCAxMjQxOSwgMTI0MjMsIAotICAgIDEyNDI3LCAxMjQzMSwgMTI0MzUsIDEyNDM5LCAxMjQ0MywgMTI0NDcsIDEyNDUxLCAxMjQ1NSwgMTI0NTksIDEyNDYzLCAKLSAgICAxMjQ2NywgMTI0NzEsIDEyNDc1LCAxMjQ3OCwgMTI0ODIsIDEyNDg1LCAxMjQ4OSwgMTI0OTMsIDEyNDk3LCAxMjUwMCwgCi0gICAgMTI1MDMsIDEyNTA2LCAxMjUxMCwgMTI1MTQsIDEyNTE4LCAxMjUyMiwgMTI1MjYsIDEyNTMwLCAxMjUzNCwgMTI1MzcsIAotICAgIDEyNTQwLCAxMjU0NSwgMTI1NTAsIDEyNTU0LCAxMjU1OCwgMTI1NjMsIDEyNTY3LCAxMjU3MiwgMTI1NzYsIDEyNTgxLCAKLSAgICAxMjU4NiwgMTI1OTIsIDEyNTk4LCAxMjYwNCwgMTI2MDgsIDEyNjEzLCAxMjYxOSwgMTI2MjUsIDEyNjI5LCAxMjYzNCwgCi0gICAgMTI2MzgsIDEyNjQ0LCAxMjY0OSwgMTI2NTIsIDEyNjU4LCAxMjY2NCwgMTI2NjksIDEyNjc0LCAxMjY4MSwgMTI2ODYsIAotICAgIDEyNjkxLCAxMjY5NSwgMTI2OTksIDEyNzAzLCAxMjcwNywgMTI3MTEsIDEyNzE1LCAxMjcxOSwgMTI3MjMsIDEyNzI4LCAKLSAgICAxMjczMywgMTI3MzgsIDEyNzQ0LCAxMjc0NywgMTI3NTEsIDEyNzU1LCAxMjc1OCwgMTI3NjEsIDEyNzY0LCAxMjc2NywgCi0gICAgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgyLCAxMjc4NiwgMTI3OTMsIDEyNzk4LCAxMjgwMiwgMTI4MDYsIAotICAgIDEyODEwLCAxMjgxNCwgMCwgMTI4MTgsIDEyODIyLCAxMjgyNiwgMTI4MzAsIDEyODM0LCAxMjg0MCwgMTI4NDQsIDAsIAotICAgIDEyODQ4LCAxMjg1MiwgMTI4NTYsIDAsIDEyODYwLCAxMjg2MywgMTI4NjcsIDEyODcwLCAxMjg3NCwgMTI4NzcsIDEyODgxLCAKLSAgICAxMjg4NSwgMCwgMCwgMTI4ODksIDEyODkyLCAwLCAwLCAxMjg5NiwgMTI4OTksIDEyOTAzLCAxMjkwNiwgMTI5MTAsIAotICAgIDEyOTE0LCAxMjkxOCwgMTI5MjIsIDEyOTI2LCAxMjkzMCwgMTI5MzQsIDEyOTM4LCAxMjk0MiwgMTI5NDYsIDEyOTUwLCAKLSAgICAxMjk1NCwgMTI5NTgsIDEyOTYyLCAxMjk2NiwgMTI5NzAsIDEyOTc0LCAxMjk3OCwgMCwgMTI5ODEsIDEyOTg0LCAxMjk4OCwgCi0gICAgMTI5OTIsIDEyOTk2LCAxMjk5OSwgMTMwMDIsIDAsIDEzMDA1LCAwLCAwLCAwLCAxMzAwOSwgMTMwMTMsIDEzMDE3LCAKLSAgICAxMzAyMCwgMCwgMCwgMTMwMjMsIDEzMDI3LCAxMzAzMSwgMTMwMzYsIDEzMDQwLCAxMzA0NSwgMTMwNDksIDEzMDU0LCAKLSAgICAxMzA1OSwgMCwgMCwgMTMwNjUsIDEzMDY5LCAwLCAwLCAxMzA3NCwgMTMwNzgsIDEzMDgzLCAxMzA4NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTMwOTMsIDAsIDAsIDAsIDAsIDEzMDk5LCAxMzEwMywgMCwgMTMxMDcsIDEzMTExLCAxMzExNiwgCi0gICAgMTMxMjEsIDEzMTI2LCAwLCAwLCAxMzEzMiwgMTMxMzYsIDEzMTM5LCAxMzE0MiwgMTMxNDUsIDEzMTQ4LCAxMzE1MSwgCi0gICAgMTMxNTQsIDEzMTU3LCAxMzE2MCwgMTMxNjMsIDEzMTcyLCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5NSwgMTMyMDEsIAotICAgIDEzMjA3LCAxMzIxMywgMTMyMjcsIDEzMjM0LCAxMzIzNywgMCwgMCwgMCwgMCwgMCwgMTMyNDEsIDEzMjQ3LCAxMzI1MSwgMCwgCi0gICAgMTMyNTUsIDEzMjU4LCAxMzI2MiwgMTMyNjUsIDEzMjY5LCAxMzI3MiwgMCwgMCwgMCwgMCwgMTMyNzYsIDEzMjgwLCAwLCAwLCAKLSAgICAxMzI4NCwgMTMyODgsIDEzMjkyLCAxMzI5NSwgMTMyOTksIDEzMzAzLCAxMzMwNywgMTMzMTEsIDEzMzE1LCAxMzMxOSwgCi0gICAgMTMzMjMsIDEzMzI3LCAxMzMzMSwgMTMzMzUsIDEzMzM5LCAxMzM0MywgMTMzNDcsIDEzMzUxLCAxMzM1NSwgMTMzNTksIAotICAgIDEzMzYzLCAxMzM2NywgMCwgMTMzNzAsIDEzMzczLCAxMzM3NywgMTMzODEsIDEzMzg1LCAxMzM4OCwgMTMzOTEsIDAsIAotICAgIDEzMzk0LCAxMzM5OCwgMCwgMTM0MDIsIDEzNDA2LCAwLCAxMzQxMCwgMTM0MTMsIDAsIDAsIDEzNDE2LCAwLCAxMzQyMCwgCi0gICAgMTM0MjUsIDEzNDI5LCAxMzQzNCwgMTM0MzgsIDAsIDAsIDAsIDAsIDEzNDQzLCAxMzQ0OCwgMCwgMCwgMTM0NTMsIDEzNDU4LCAKLSAgICAxMzQ2MywgMCwgMCwgMCwgMTM0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDcxLCAxMzQ3NSwgMTM0NzksIDEzNDgzLCAKLSAgICAwLCAxMzQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0OTEsIDEzNDk1LCAxMzQ5OCwgMTM1MDEsIDEzNTA0LCAxMzUwNywgCi0gICAgMTM1MTAsIDEzNTEzLCAxMzUxNiwgMTM1MTksIDEzNTIyLCAxMzUyNSwgMTM1MjgsIDEzNTMxLCAxMzUzNCwgMTM1MzksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTQzLCAxMzU0NywgMTM1NTEsIDAsIDEzNTU1LCAxMzU1OCwgCi0gICAgMTM1NjIsIDEzNTY1LCAxMzU2OSwgMTM1NzIsIDEzNTc2LCAxMzU4MCwgMTM1ODQsIDAsIDEzNTg5LCAxMzU5MiwgMTM1OTYsIAotICAgIDAsIDEzNjAxLCAxMzYwNCwgMTM2MDgsIDEzNjExLCAxMzYxNSwgMTM2MTksIDEzNjIzLCAxMzYyNywgMTM2MzEsIDEzNjM1LCAKLSAgICAxMzYzOSwgMTM2NDMsIDEzNjQ3LCAxMzY1MSwgMTM2NTUsIDEzNjU5LCAxMzY2MywgMTM2NjcsIDEzNjcxLCAxMzY3NSwgCi0gICAgMTM2NzksIDEzNjgzLCAwLCAxMzY4NiwgMTM2ODksIDEzNjkzLCAxMzY5NywgMTM3MDEsIDEzNzA0LCAxMzcwNywgMCwgCi0gICAgMTM3MTAsIDEzNzE0LCAwLCAxMzcxOCwgMTM3MjIsIDEzNzI2LCAxMzczMCwgMTM3MzMsIDAsIDAsIDEzNzM2LCAxMzc0MCwgCi0gICAgMTM3NDQsIDEzNzQ5LCAxMzc1MywgMTM3NTgsIDEzNzYyLCAxMzc2NywgMTM3NzIsIDEzNzc4LCAwLCAxMzc4NCwgMTM3ODgsIAotICAgIDEzNzkzLCAwLCAxMzc5OSwgMTM4MDMsIDEzODA4LCAwLCAwLCAxMzgxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTM4MTUsIDEzODIwLCAxMzgyNSwgMTM4MzAsIDAsIDAsIDEzODM2LCAxMzg0MCwgMTM4NDMsIAotICAgIDEzODQ2LCAxMzg0OSwgMTM4NTIsIDEzODU1LCAxMzg1OCwgMTM4NjEsIDEzODY0LCAxMzg2NywgMTM4NzEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODc1LCAxMzg3OSwgMTM4ODMsIDAsIDEzODg3LCAxMzg5MCwgCi0gICAgMTM4OTQsIDEzODk3LCAxMzkwMSwgMTM5MDQsIDEzOTA4LCAxMzkxMiwgMCwgMCwgMTM5MTYsIDEzOTE5LCAwLCAwLCAKLSAgICAxMzkyMywgMTM5MjYsIDEzOTMwLCAxMzkzMywgMTM5MzcsIDEzOTQxLCAxMzk0NSwgMTM5NDksIDEzOTUzLCAxMzk1NywgCi0gICAgMTM5NjEsIDEzOTY1LCAxMzk2OSwgMTM5NzMsIDEzOTc3LCAxMzk4MSwgMTM5ODUsIDEzOTg5LCAxMzk5MywgMTM5OTcsIAotICAgIDE0MDAxLCAxNDAwNSwgMCwgMTQwMDgsIDE0MDExLCAxNDAxNSwgMTQwMTksIDE0MDIzLCAxNDAyNiwgMTQwMjksIDAsIAotICAgIDE0MDMyLCAxNDAzNiwgMCwgMTQwNDAsIDE0MDQ0LCAxNDA0OCwgMTQwNTIsIDE0MDU1LCAwLCAwLCAxNDA1OCwgMTQwNjIsIAotICAgIDE0MDY2LCAxNDA3MSwgMTQwNzUsIDE0MDgwLCAxNDA4NCwgMTQwODksIDE0MDk0LCAwLCAwLCAxNDEwMCwgMTQxMDQsIDAsIAotICAgIDAsIDE0MTA5LCAxNDExMywgMTQxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MTIyLCAxNDEyOCwgMCwgMCwgMCwgMCwgCi0gICAgMTQxMzQsIDE0MTM4LCAwLCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAxNDE1NiwgMTQxNjEsIDAsIDAsIDE0MTY3LCAxNDE3MSwgCi0gICAgMTQxNzQsIDE0MTc3LCAxNDE4MCwgMTQxODMsIDE0MTg2LCAxNDE4OSwgMTQxOTIsIDE0MTk1LCAxNDE5OCwgMTQyMDEsIAotICAgIDE0MjA1LCAxNDIxMSwgMTQyMTcsIDE0MjIzLCAxNDIyOSwgMTQyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0MjQxLCAxNDI0NSwgMCwgMTQyNDksIDE0MjUyLCAxNDI1NiwgMTQyNTksIDE0MjYzLCAxNDI2NiwgMCwgMCwgMCwgCi0gICAgMTQyNzAsIDE0MjczLCAxNDI3NywgMCwgMTQyODEsIDE0Mjg0LCAxNDI4OCwgMTQyOTIsIDAsIDAsIDAsIDE0Mjk1LCAKLSAgICAxNDI5OSwgMCwgMTQzMDMsIDAsIDE0MzA3LCAxNDMxMSwgMCwgMCwgMCwgMTQzMTUsIDE0MzE5LCAwLCAwLCAwLCAxNDMyMywgCi0gICAgMTQzMjYsIDE0MzMwLCAwLCAwLCAwLCAxNDMzMywgMTQzMzYsIDE0MzM5LCAxNDM0MiwgMTQzNDYsIDE0MzUwLCAxNDM1NCwgCi0gICAgMTQzNTgsIDE0MzYyLCAxNDM2NiwgMTQzNzAsIDE0MzczLCAwLCAwLCAwLCAwLCAxNDM3NiwgMTQzODEsIDE0Mzg1LCAKLSAgICAxNDM5MCwgMTQzOTQsIDAsIDAsIDAsIDE0Mzk5LCAxNDQwMywgMTQ0MDgsIDAsIDE0NDEzLCAxNDQxNywgMTQ0MjIsIAotICAgIDE0NDI3LCAwLCAwLCAxNDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE0NDQwLCAxNDQ0NCwgMTQ0NDcsIDE0NDUwLCAxNDQ1MywgMTQ0NTYsIDE0NDU5LCAxNDQ2MiwgCi0gICAgMTQ0NjUsIDE0NDY4LCAxNDQ3MSwgMTQ0NzUsIDE0NDgwLCAxNDQ4NSwgMTQ0ODksIDE0NDkzLCAxNDQ5NywgMTQ1MDEsIAotICAgIDE0NTA1LCAxNDUxMCwgMTQ1MTQsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTE3LCAxNDUyMSwgMTQ1MjUsIDAsIDE0NTI5LCAKLSAgICAxNDUzMiwgMTQ1MzYsIDE0NTM5LCAxNDU0MywgMTQ1NDYsIDE0NTUwLCAxNDU1NCwgMCwgMTQ1NTgsIDE0NTYxLCAxNDU2NSwgCi0gICAgMCwgMTQ1NjksIDE0NTcyLCAxNDU3NiwgMTQ1ODAsIDE0NTgzLCAxNDU4NywgMTQ1OTEsIDE0NTk1LCAxNDU5OSwgMTQ2MDMsIAotICAgIDE0NjA3LCAxNDYxMSwgMTQ2MTUsIDE0NjE5LCAxNDYyMywgMTQ2MjcsIDE0NjMxLCAxNDYzNSwgMTQ2MzksIDE0NjQzLCAKLSAgICAxNDY0NywgMTQ2NTEsIDE0NjU1LCAwLCAxNDY1OCwgMTQ2NjEsIDE0NjY1LCAxNDY2OSwgMTQ2NzMsIDE0Njc2LCAxNDY3OSwgCi0gICAgMTQ2ODIsIDE0Njg2LCAxNDY5MCwgMCwgMTQ2OTQsIDE0Njk4LCAxNDcwMiwgMTQ3MDYsIDE0NzA5LCAwLCAwLCAwLCAKLSAgICAxNDcxMiwgMTQ3MTYsIDE0NzIxLCAxNDcyNSwgMTQ3MzAsIDE0NzM0LCAxNDczOSwgMTQ3NDQsIDAsIDE0NzUwLCAxNDc1NCwgCi0gICAgMTQ3NTksIDAsIDE0NzY0LCAxNDc2OCwgMTQ3NzMsIDE0Nzc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MiwgMTQ3ODYsIAotICAgIDAsIDE0NzkyLCAxNDc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4MDAsIDE0ODA1LCAxNDgxMCwgMTQ4MTUsIDAsIDAsIAotICAgIDE0ODIxLCAxNDgyNSwgMTQ4MjgsIDE0ODMxLCAxNDgzNCwgMTQ4MzcsIDE0ODQwLCAxNDg0MywgMTQ4NDYsIDE0ODQ5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg1MiwgMTQ4NjUsIDE0ODc3LCAxNDg4OSwgMTQ5MDEsIDE0OTEzLCAxNDkyNSwgCi0gICAgMTQ5MzcsIDAsIDAsIDE0OTQxLCAxNDk0NSwgMCwgMTQ5NDksIDE0OTUyLCAxNDk1NiwgMTQ5NTksIDE0OTYzLCAxNDk2NiwgCi0gICAgMTQ5NzAsIDE0OTc0LCAwLCAxNDk3OCwgMTQ5ODEsIDE0OTg1LCAwLCAxNDk4OSwgMTQ5OTIsIDE0OTk2LCAxNTAwMCwgCi0gICAgMTUwMDMsIDE1MDA3LCAxNTAxMSwgMTUwMTUsIDE1MDE5LCAxNTAyMywgMTUwMjcsIDE1MDMxLCAxNTAzNSwgMTUwMzksIAotICAgIDE1MDQzLCAxNTA0NywgMTUwNTEsIDE1MDU1LCAxNTA1OSwgMTUwNjMsIDE1MDY3LCAxNTA3MSwgMTUwNzUsIDAsIDE1MDc4LCAKLSAgICAxNTA4MSwgMTUwODUsIDE1MDg5LCAxNTA5MywgMTUwOTYsIDE1MDk5LCAxNTEwMiwgMTUxMDYsIDE1MTEwLCAwLCAxNTExNCwgCi0gICAgMTUxMTgsIDE1MTIyLCAxNTEyNiwgMTUxMjksIDAsIDAsIDE1MTMyLCAxNTEzNiwgMTUxNDAsIDE1MTQ1LCAxNTE0OSwgCi0gICAgMTUxNTQsIDE1MTU4LCAxNTE2MywgMTUxNjgsIDAsIDE1MTc0LCAxNTE3OCwgMTUxODMsIDAsIDE1MTg4LCAxNTE5MiwgCi0gICAgMTUxOTcsIDE1MjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTIwNiwgMTUyMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1MjE2LCAwLCAxNTIyMCwgMTUyMjUsIDE1MjMwLCAxNTIzNSwgMCwgMCwgMTUyNDEsIDE1MjQ1LCAxNTI0OCwgMTUyNTEsIAotICAgIDE1MjU0LCAxNTI1NywgMTUyNjAsIDE1MjYzLCAxNTI2NiwgMTUyNjksIDAsIDE1MjcyLCAxNTI3NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyODAsIDE1Mjg0LCAwLCAxNTI4OCwgMTUyOTEsIDE1Mjk1LCAKLSAgICAxNTI5OCwgMTUzMDIsIDE1MzA1LCAxNTMwOSwgMTUzMTMsIDAsIDE1MzE3LCAxNTMyMCwgMTUzMjQsIDAsIDE1MzI4LCAKLSAgICAxNTMzMSwgMTUzMzUsIDE1MzM5LCAxNTM0MiwgMTUzNDYsIDE1MzUwLCAxNTM1NCwgMTUzNTgsIDE1MzYyLCAxNTM2NiwgCi0gICAgMTUzNzAsIDE1Mzc0LCAxNTM3OCwgMTUzODIsIDE1Mzg2LCAxNTM5MCwgMTUzOTQsIDE1Mzk4LCAxNTQwMiwgMTU0MDYsIAotICAgIDE1NDEwLCAxNTQxNCwgMTU0MTcsIDE1NDIxLCAxNTQyNCwgMTU0MjgsIDE1NDMyLCAxNTQzNiwgMTU0MzksIDE1NDQyLCAKLSAgICAxNTQ0NSwgMTU0NDksIDE1NDUzLCAxNTQ1NywgMTU0NjEsIDE1NDY1LCAxNTQ2OSwgMTU0NzMsIDE1NDc2LCAxNTQ3OSwgMCwgCi0gICAgMCwgMTU0ODMsIDE1NDg3LCAxNTQ5MiwgMTU0OTYsIDE1NTAxLCAxNTUwNSwgMTU1MTAsIDE1NTE1LCAwLCAxNTUyMSwgCi0gICAgMTU1MjUsIDE1NTMwLCAwLCAxNTUzNSwgMTU1MzksIDE1NTQ0LCAxNTU0OSwgMTU1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU2NCwgMTU1NjksIDE1NTc0LCAxNTU3OSwgMCwgMCwgCi0gICAgMTU1ODUsIDE1NTg5LCAxNTU5MiwgMTU1OTUsIDE1NTk4LCAxNTYwMSwgMTU2MDQsIDE1NjA3LCAxNTYxMCwgMTU2MTMsIAotICAgIDE1NjE2LCAxNTYyMCwgMTU2MjUsIDE1NjMwLCAxNTYzNiwgMTU2NDIsIDAsIDAsIDAsIDE1NjQ4LCAxNTY1MiwgMTU2NTgsIAotICAgIDE1NjY0LCAxNTY3MCwgMTU2NzUsIDE1NjgxLCAwLCAwLCAxNTY4NywgMTU2OTEsIDAsIDE1Njk1LCAxNTY5OSwgMTU3MDMsIAotICAgIDE1NzA3LCAxNTcxMSwgMTU3MTUsIDE1NzE5LCAxNTcyMywgMTU3MjcsIDE1NzMxLCAxNTczNSwgMTU3MzksIDE1NzQzLCAKLSAgICAxNTc0NywgMTU3NTEsIDE1NzU1LCAxNTc1OSwgMTU3NjMsIDAsIDAsIDAsIDE1NzY3LCAxNTc3MywgMTU3NzksIDE1Nzg1LCAKLSAgICAxNTc5MSwgMTU3OTcsIDE1ODAzLCAxNTgwOSwgMTU4MTUsIDE1ODIxLCAxNTgyNywgMTU4MzMsIDE1ODQxLCAxNTg0NywgCi0gICAgMTU4NTMsIDE1ODU5LCAxNTg2NSwgMTU4NzEsIDE1ODc3LCAxNTg4MywgMTU4ODksIDE1ODk1LCAxNTkwMSwgMTU5MDcsIDAsIAotICAgIDE1OTEzLCAxNTkxOSwgMTU5MjUsIDE1OTMxLCAxNTkzNywgMTU5NDMsIDE1OTQ3LCAxNTk1MywgMTU5NTcsIDAsIDE1OTYxLCAKLSAgICAwLCAwLCAxNTk2NywgMTU5NzEsIDE1OTc3LCAxNTk4MywgMTU5ODksIDE1OTkzLCAxNTk5OSwgMCwgMCwgMCwgMTYwMDMsIDAsIAotICAgIDAsIDAsIDAsIDE2MDA3LCAxNjAxMiwgMTYwMTksIDE2MDI2LCAxNjAzMywgMTYwNDAsIDAsIDE2MDQ3LCAwLCAxNjA1NCwgCi0gICAgMTYwNTksIDE2MDY0LCAxNjA3MSwgMTYwNzgsIDE2MDg3LCAxNjA5OCwgMTYxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTEyLCAxNjExOSwgMTYxMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE2MTMxLCAxNjEzNywgMTYxNDMsIDE2MTQ5LCAxNjE1NSwgMTYxNjEsIDE2MTY3LCAxNjE3MywgCi0gICAgMTYxNzksIDE2MTg1LCAxNjE5MSwgMTYxOTcsIDE2MjAzLCAxNjIwOSwgMTYyMTUsIDE2MjIxLCAxNjIyNywgMTYyMzMsIAotICAgIDE2MjM5LCAxNjI0NSwgMTYyNTEsIDE2MjU3LCAxNjI2MywgMTYyNjksIDE2Mjc1LCAxNjI4MSwgMTYyODcsIDE2MjkzLCAKLSAgICAxNjI5OSwgMTYzMDUsIDE2MzExLCAxNjMxNywgMTYzMjMsIDE2MzI4LCAxNjMzNCwgMTYzNDAsIDE2MzQ0LCAxNjM1MCwgCi0gICAgMTYzNTQsIDE2MzYwLCAxNjM2NiwgMTYzNzIsIDE2Mzc4LCAxNjM4NCwgMTYzOTAsIDE2Mzk1LCAxNjQwMSwgMTY0MDUsIAotICAgIDE2NDEwLCAxNjQxNiwgMTY0MjIsIDE2NDI4LCAxNjQzMywgMTY0MzksIDE2NDQ1LCAxNjQ1MSwgMTY0NTYsIDE2NDYyLCAwLCAKLSAgICAwLCAwLCAwLCAxNjQ2NiwgMTY0NzIsIDE2NDc3LCAxNjQ4MywgMTY0ODgsIDE2NDk2LCAxNjUwNCwgMTY1MDgsIDE2NTEyLCAKLSAgICAxNjUxNiwgMTY1MjIsIDE2NTI4LCAxNjUzNCwgMTY1NDAsIDE2NTQ0LCAxNjU0OCwgMTY1NTIsIDE2NTU2LCAxNjU2MCwgCi0gICAgMTY1NjMsIDE2NTY2LCAxNjU2OSwgMTY1NzIsIDE2NTc1LCAxNjU3OCwgMTY1ODEsIDE2NTg0LCAxNjU4NywgMTY1OTEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NTk1LCAxNjYwMCwgMCwgMTY2MDcsIDAsIDAsIDE2NjE0LCAKLSAgICAxNjYxOSwgMCwgMTY2MjQsIDAsIDAsIDE2NjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjYzNiwgMTY2NDEsIDE2NjQ1LCAKLSAgICAxNjY1MiwgMCwgMTY2NTksIDE2NjY0LCAxNjY2OSwgMTY2NzQsIDE2NjgxLCAxNjY4OCwgMTY2OTUsIDAsIDE2NzAyLCAKLSAgICAxNjcwNywgMTY3MTIsIDAsIDE2NzE5LCAwLCAxNjcyNiwgMCwgMCwgMTY3MzEsIDE2NzM4LCAwLCAxNjc0NSwgMTY3NDksIAotICAgIDE2NzU2LCAxNjc2MCwgMTY3NjUsIDE2NzczLCAxNjc3OSwgMTY3ODUsIDE2NzkwLCAxNjc5NiwgMTY4MDIsIDE2ODA4LCAKLSAgICAxNjgxMywgMCwgMTY4MTksIDE2ODI3LCAxNjgzNCwgMCwgMCwgMTY4NDEsIDE2ODQ2LCAxNjg1MiwgMTY4NTcsIDE2ODYzLCAKLSAgICAwLCAxNjg2OSwgMCwgMTY4NzUsIDE2ODgyLCAxNjg4OSwgMTY4OTYsIDE2OTAzLCAxNjkwOCwgMCwgMCwgMTY5MTIsIAotICAgIDE2OTE3LCAxNjkyMSwgMTY5MjUsIDE2OTI5LCAxNjkzMywgMTY5MzcsIDE2OTQxLCAxNjk0NSwgMTY5NDksIDAsIDAsIAotICAgIDE2OTUzLCAxNjk1OSwgMTY5NjUsIDE2OTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjk3OSwgMTY5ODMsIDE2OTk0LCAKLSAgICAxNzAwOSwgMTcwMjQsIDE3MDM0LCAxNzA0NSwgMTcwNTgsIDE3MDY5LCAxNzA3NSwgMTcwODMsIDE3MDkzLCAxNzA5OSwgCi0gICAgMTcxMDcsIDE3MTExLCAxNzExNywgMTcxMjMsIDE3MTMxLCAxNzE0MSwgMTcxNDksIDE3MTYyLCAxNzE2OCwgMTcxNzYsIAotICAgIDE3MTg0LCAxNzE5NiwgMTcyMDMsIDE3MjExLCAxNzIxOSwgMTcyMjcsIDE3MjM1LCAxNzI0MywgMTcyNTEsIDE3MjYxLCAKLSAgICAxNzI2NSwgMTcyNjgsIDE3MjcxLCAxNzI3NCwgMTcyNzcsIDE3MjgwLCAxNzI4MywgMTcyODYsIDE3Mjg5LCAxNzI5MiwgCi0gICAgMTcyOTYsIDE3MzAwLCAxNzMwNCwgMTczMDgsIDE3MzEyLCAxNzMxNiwgMTczMjAsIDE3MzI0LCAxNzMyOCwgMTczMzMsIAotICAgIDE3MzM5LCAxNzM0OSwgMTczNjMsIDE3MzczLCAxNzM3OSwgMTczODUsIDE3MzkzLCAxNzQwMSwgMTc0MDksIDE3NDE3LCAKLSAgICAxNzQyMywgMTc0MjksIDE3NDMyLCAxNzQzNiwgMTc0NDAsIDE3NDQ0LCAxNzQ0OCwgMTc0NTIsIDE3NDU2LCAwLCAxNzQ2MCwgCi0gICAgMTc0NjQsIDE3NDY4LCAxNzQ3MiwgMTc0NzYsIDE3NDgwLCAxNzQ4NCwgMTc0ODgsIDE3NDkyLCAxNzQ5NiwgMTc1MDAsIAotICAgIDE3NTAzLCAxNzUwNiwgMTc1MTAsIDE3NTE0LCAxNzUxOCwgMTc1MjEsIDE3NTI1LCAxNzUyOSwgMTc1MzMsIDE3NTM3LCAKLSAgICAxNzU0MSwgMTc1NDUsIDE3NTQ5LCAxNzU1MywgMTc1NTYsIDE3NTU5LCAxNzU2MywgMTc1NjcsIDE3NTcxLCAxNzU3NCwgCi0gICAgMTc1NzcsIDE3NTgwLCAxNzU4NCwgMTc1ODksIDE3NTkzLCAwLCAwLCAwLCAwLCAxNzU5NywgMTc2MDIsIDE3NjA2LCAKLSAgICAxNzYxMSwgMTc2MTUsIDE3NjIwLCAxNzYyNSwgMTc2MzEsIDE3NjM2LCAxNzY0MiwgMTc2NDYsIDE3NjUxLCAxNzY1NSwgCi0gICAgMTc2NjAsIDE3NjcwLCAxNzY3NiwgMTc2ODIsIDE3Njg5LCAxNzY5OSwgMTc3MDUsIDE3NzA5LCAxNzcxMywgMTc3MTksIAotICAgIDE3NzI1LCAxNzczMywgMTc3MzksIDE3NzQ3LCAxNzc1NSwgMTc3NjMsIDE3NzczLCAxNzc4MSwgMTc3OTEsIDE3Nzk2LCAKLSAgICAxNzgwMiwgMTc4MDgsIDE3ODE0LCAxNzgyMCwgMTc4MjYsIDE3ODMyLCAwLCAxNzgzOCwgMTc4NDQsIDE3ODUwLCAxNzg1NiwgCi0gICAgMTc4NjIsIDE3ODY4LCAxNzg3NCwgMTc4ODAsIDE3ODg2LCAxNzg5MiwgMTc4OTgsIDE3OTAzLCAxNzkwOCwgMTc5MTQsIAotICAgIDE3OTIwLCAxNzkyNiwgMTc5MzEsIDE3OTM3LCAxNzk0MywgMTc5NDksIDE3OTU1LCAxNzk2MSwgMTc5NjcsIDE3OTczLCAKLSAgICAxNzk3OSwgMTc5ODQsIDE3OTg5LCAxNzk5NSwgMTgwMDEsIDE4MDA3LCAxODAxMiwgMTgwMTcsIDE4MDIyLCAxODAyOCwgCi0gICAgMTgwMzYsIDE4MDQzLCAwLCAxODA1MCwgMTgwNTcsIDE4MDcwLCAxODA3NywgMTgwODQsIDE4MDkyLCAxODEwMCwgMTgxMDYsIAotICAgIDE4MTEyLCAxODExOCwgMTgxMjgsIDE4MTMzLCAxODEzOSwgMTgxNDksIDE4MTU5LCAwLCAxODE2OSwgMTgxNzksIDE4MTg3LCAKLSAgICAxODE5OSwgMTgyMTEsIDE4MjE3LCAxODIzMSwgMTgyNDYsIDE4MjUxLCAxODI1NiwgMTgyNjQsIDE4MjcyLCAxODI4MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgyODgsIDE4MjkxLCAxODI5NSwgMTgyOTksIDE4MzAzLCAKLSAgICAxODMwNywgMTgzMTEsIDE4MzE1LCAxODMxOSwgMTgzMjMsIDE4MzI3LCAxODMzMSwgMTgzMzUsIDE4MzM5LCAxODM0MywgCi0gICAgMTgzNDcsIDE4MzUxLCAxODM1NSwgMTgzNTksIDE4MzYzLCAxODM2NywgMTgzNzAsIDE4MzczLCAxODM3NywgMTgzODEsIAotICAgIDE4Mzg1LCAxODM4OCwgMTgzOTEsIDE4Mzk0LCAxODM5OCwgMTg0MDIsIDE4NDA1LCAxODQwOCwgMTg0MTIsIDE4NDE1LCAKLSAgICAxODQyMCwgMTg0MjMsIDE4NDI3LCAxODQzMCwgMTg0MzQsIDE4NDM3LCAxODQ0MiwgMTg0NDUsIDE4NDQ5LCAxODQ1NiwgCi0gICAgMTg0NjEsIDE4NDY1LCAxODQ3MCwgMTg0NzQsIDE4NDc5LCAxODQ4MywgMTg0ODgsIDE4NDk1LCAxODUwMSwgMTg1MDYsIAotICAgIDE4NTEwLCAxODUxNCwgMTg1MTgsIDE4NTIyLCAxODUyNiwgMTg1MzEsIDE4NTM2LCAxODU0MiwgMTg1NDcsIDE4NTUyLCAKLSAgICAxODU1NiwgMTg1NTksIDE4NTYyLCAxODU2NSwgMTg1NjgsIDE4NTcxLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAxODU4MywgCi0gICAgMTg1ODksIDE4NTkzLCAxODU5NywgMTg2MDEsIDE4NjA1LCAxODYwOSwgMTg2MTMsIDE4NjE3LCAxODYyMSwgMTg2MjYsIAotICAgIDE4NjMwLCAxODYzNSwgMTg2NDAsIDE4NjQ2LCAxODY1MSwgMTg2NTcsIDE4NjYzLCAxODY2OSwgMTg2NzUsIDE4NjgxLCAKLSAgICAxODY4OCwgMTg2OTUsIDE4NzAzLCAxODcxMSwgMTg3MjAsIDE4NzI5LCAxODc0MCwgMTg3NTAsIDE4NzYwLCAxODc3MSwgCi0gICAgMTg3ODIsIDE4NzkyLCAxODgwMiwgMTg4MTIsIDE4ODIyLCAxODgzMiwgMTg4NDIsIDE4ODUyLCAxODg2MiwgMTg4NzAsIAotICAgIDE4ODc3LCAxODg4MywgMTg4OTAsIDE4ODk1LCAxODkwMSwgMTg5MDcsIDE4OTEzLCAxODkxOSwgMTg5MjUsIDE4OTMxLCAKLSAgICAxODkzNiwgMTg5NDIsIDE4OTQ4LCAxODk1NCwgMTg5NjAsIDE4OTY1LCAxODk3MywgMTg5ODAsIDE4OTg2LCAxODk5MywgCi0gICAgMTkwMDEsIDE5MDA3LCAxOTAxMywgMTkwMTksIDE5MDI1LCAxOTAzMywgMTkwNDEsIDE5MDUxLCAxOTA1OSwgMTkwNjcsIAotICAgIDE5MDczLCAxOTA3OCwgMTkwODMsIDE5MDg4LCAxOTA5MywgMTkwOTgsIDE5MTAzLCAxOTEwOCwgMTkxMTMsIDE5MTE4LCAKLSAgICAxOTEyNCwgMTkxMzAsIDE5MTM2LCAxOTE0MywgMTkxNDgsIDE5MTU0LCAxOTE1OSwgMTkxNjQsIDE5MTY5LCAxOTE3NCwgCi0gICAgMTkxNzksIDE5MTg0LCAxOTE4OSwgMTkxOTQsIDE5MTk5LCAxOTIwNCwgMTkyMDksIDE5MjE0LCAxOTIxOSwgMTkyMjQsIAotICAgIDE5MjI5LCAxOTIzNCwgMTkyMzksIDE5MjQ0LCAxOTI0OSwgMTkyNTQsIDE5MjU5LCAxOTI2NCwgMTkyNjksIDE5Mjc0LCAKLSAgICAxOTI3OSwgMTkyODQsIDE5Mjg5LCAxOTI5NCwgMTkyOTksIDE5MzA0LCAxOTMwOSwgMTkzMTQsIDE5MzE5LCAxOTMyNCwgCi0gICAgMTkzMjksIDE5MzM0LCAxOTMzOSwgMCwgMTkzNDQsIDAsIDAsIDAsIDAsIDAsIDE5MzQ5LCAwLCAwLCAxOTM1NCwgMTkzNTgsIAotICAgIDE5MzYyLCAxOTM2NiwgMTkzNzAsIDE5Mzc0LCAxOTM3OCwgMTkzODIsIDE5Mzg2LCAxOTM5MCwgMTkzOTQsIDE5Mzk4LCAKLSAgICAxOTQwMiwgMTk0MDYsIDE5NDEwLCAxOTQxNCwgMTk0MTgsIDE5NDIyLCAxOTQyNiwgMTk0MzAsIDE5NDM0LCAxOTQzOCwgCi0gICAgMTk0NDIsIDE5NDQ2LCAxOTQ1MCwgMTk0NTQsIDE5NDU4LCAxOTQ2MiwgMTk0NjYsIDE5NDcwLCAxOTQ3NCwgMTk0NzgsIAotICAgIDE5NDgyLCAxOTQ4NiwgMTk0OTAsIDE5NDk0LCAxOTQ5OCwgMTk1MDIsIDE5NTA2LCAxOTUxMCwgMTk1MTQsIDE5NTE4LCAKLSAgICAxOTUyNCwgMTk1MjgsIDE5NTMzLCAxOTUzOCwgMTk1NDIsIDE5NTQ3LCAxOTU1MiwgMTk1NTYsIDE5NTYwLCAxOTU2NCwgCi0gICAgMTk1NjgsIDE5NTcyLCAxOTU3NiwgMTk1ODAsIDE5NTg0LCAxOTU4OCwgMTk1OTIsIDE5NTk2LCAxOTYwMCwgMTk2MDQsIAotICAgIDE5NjA4LCAxOTYxMiwgMTk2MTYsIDE5NjIwLCAxOTYyNCwgMTk2MjgsIDE5NjMyLCAxOTYzNiwgMTk2NDAsIDE5NjQ0LCAKLSAgICAxOTY0OCwgMTk2NTIsIDE5NjU2LCAxOTY2MCwgMTk2NjQsIDE5NjY4LCAxOTY3MiwgMTk2NzYsIDE5NjgwLCAxOTY4NCwgCi0gICAgMTk2ODgsIDE5NjkyLCAxOTY5NiwgMTk3MDAsIDE5NzA0LCAxOTcwOCwgMTk3MTIsIDE5NzE2LCAxOTcyMCwgMTk3MjQsIAotICAgIDE5NzI4LCAxOTczMiwgMTk3MzYsIDE5NzQwLCAxOTc0NCwgMTk3NDgsIDE5NzUyLCAxOTc1NiwgMTk3NjAsIDE5NzY0LCAKLSAgICAxOTc2OCwgMTk3NzIsIDE5Nzc2LCAxOTc4MCwgMTk3ODQsIDE5Nzg4LCAxOTc5MiwgMTk3OTYsIDE5ODAwLCAxOTgwNCwgCi0gICAgMTk4MDgsIDE5ODEyLCAxOTgxNiwgMTk4MjAsIDE5ODI0LCAxOTgyOCwgMTk4MzIsIDE5ODM2LCAxOTg0MCwgMTk4NDQsIAotICAgIDE5ODQ4LCAxOTg1MiwgMTk4NTYsIDE5ODYwLCAxOTg2NCwgMTk4NjgsIDE5ODcyLCAxOTg3NiwgMTk4ODAsIDE5ODg0LCAKLSAgICAxOTg4OCwgMTk4OTIsIDE5ODk2LCAxOTkwMCwgMTk5MDQsIDE5OTA4LCAxOTkxMiwgMTk5MTYsIDE5OTIwLCAxOTkyNCwgCi0gICAgMTk5MjgsIDE5OTMyLCAxOTkzNiwgMTk5NDAsIDE5OTQzLCAxOTk0NywgMTk5NTAsIDE5OTU0LCAxOTk1OCwgMTk5NjEsIAotICAgIDE5OTY1LCAxOTk2OSwgMTk5NzIsIDE5OTc2LCAxOTk4MCwgMTk5ODQsIDE5OTg4LCAxOTk5MSwgMTk5OTUsIDE5OTk5LCAKLSAgICAyMDAwMywgMjAwMDcsIDIwMDExLCAyMDAxNSwgMjAwMTgsIDIwMDIyLCAyMDAyNiwgMjAwMzAsIDIwMDM0LCAyMDAzOCwgCi0gICAgMjAwNDIsIDIwMDQ2LCAyMDA1MCwgMjAwNTQsIDIwMDU4LCAyMDA2MiwgMjAwNjYsIDIwMDcwLCAyMDA3NCwgMjAwNzgsIAotICAgIDIwMDgyLCAyMDA4NiwgMjAwOTAsIDIwMDk0LCAyMDA5OCwgMjAxMDIsIDIwMTA2LCAyMDExMCwgMjAxMTQsIDIwMTE4LCAKLSAgICAyMDEyMiwgMjAxMjYsIDIwMTMwLCAyMDEzNCwgMjAxMzgsIDIwMTQyLCAyMDE0NiwgMjAxNTAsIDIwMTU0LCAyMDE1OCwgCi0gICAgMjAxNjIsIDIwMTY2LCAyMDE3MCwgMjAxNzQsIDIwMTc4LCAyMDE4MiwgMjAxODYsIDIwMTkwLCAyMDE5NCwgMjAxOTgsIAotICAgIDIwMjAyLCAyMDIwNiwgMjAyMTAsIDIwMjE0LCAyMDIxOCwgMjAyMjIsIDIwMjI2LCAyMDIzMCwgMjAyMzQsIDIwMjM4LCAKLSAgICAyMDI0MiwgMjAyNDYsIDIwMjUwLCAyMDI1NCwgMjAyNTgsIDIwMjYyLCAyMDI2NiwgMjAyNzAsIDIwMjc0LCAyMDI3OCwgCi0gICAgMjAyODIsIDIwMjg2LCAyMDI5MCwgMjAyOTQsIDIwMjk4LCAyMDMwMiwgMjAzMDYsIDIwMzEwLCAyMDMxNCwgMjAzMTgsIAotICAgIDIwMzIyLCAyMDMyNiwgMjAzMzAsIDIwMzM0LCAyMDMzOCwgMjAzNDIsIDIwMzQ2LCAyMDM1MCwgMjAzNTQsIDIwMzU4LCAKLSAgICAyMDM2MiwgMjAzNjYsIDIwMzcwLCAyMDM3NCwgMjAzNzgsIDIwMzgyLCAyMDM4NiwgMjAzOTAsIDIwMzk0LCAyMDM5OCwgCi0gICAgMjA0MDIsIDIwNDA2LCAyMDQxMCwgMjA0MTQsIDIwNDE4LCAyMDQyMiwgMjA0MjYsIDIwNDMwLCAyMDQzNCwgMjA0MzgsIAotICAgIDIwNDQyLCAyMDQ0NiwgMjA0NTAsIDIwNDU0LCAyMDQ1OCwgMjA0NjIsIDIwNDY2LCAyMDQ3MCwgMjA0NzQsIDIwNDc4LCAKLSAgICAyMDQ4MiwgMjA0ODYsIDIwNDkwLCAyMDQ5NCwgMjA0OTgsIDIwNTAyLCAyMDUwNiwgMjA1MTAsIDIwNTE0LCAyMDUxOCwgCi0gICAgMjA1MjIsIDIwNTI2LCAyMDUzMCwgMjA1MzQsIDIwNTM4LCAyMDU0MiwgMjA1NDYsIDIwNTUwLCAyMDU1NCwgMjA1NTgsIAotICAgIDIwNTYyLCAyMDU2NiwgMjA1NzAsIDIwNTczLCAyMDU3NywgMjA1ODEsIDIwNTg1LCAyMDU4OSwgMjA1OTMsIDIwNTk3LCAKLSAgICAyMDYwMSwgMjA2MDUsIDIwNjA5LCAyMDYxMywgMjA2MTcsIDIwNjIxLCAyMDYyNSwgMjA2MjksIDIwNjMzLCAyMDYzNywgCi0gICAgMjA2NDEsIDIwNjQ1LCAyMDY0OSwgMjA2NTMsIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIAotICAgIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAyMDY5NiwgMjA3MDAsIDIwNzA0LCAyMDcwOCwgMjA3MTIsIDIwNzE2LCAKLSAgICAyMDcyMCwgMjA3MjQsIDIwNzI4LCAyMDczMSwgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgCi0gICAgMjA3NTksIDIwNzYyLCAyMDc2NiwgMjA3NzAsIDIwNzc0LCAyMDc3OCwgMjA3ODIsIDIwNzg2LCAyMDc5MCwgMjA3OTQsIAotICAgIDIwNzk4LCAyMDgwMiwgMjA4MDYsIDIwODEwLCAyMDgxNCwgMjA4MTgsIDIwODIyLCAyMDgyNiwgMjA4MzAsIDIwODM0LCAKLSAgICAyMDgzOCwgMjA4NDIsIDIwODQ2LCAyMDg1MCwgMjA4NTQsIDAsIDIwODU4LCAyMDg2MiwgMjA4NjYsIDIwODcwLCAwLCAwLCAKLSAgICAyMDg3NCwgMjA4NzgsIDIwODgyLCAyMDg4NiwgMjA4OTAsIDIwODk0LCAyMDg5OCwgMCwgMjA5MDIsIDAsIDIwOTA2LCAKLSAgICAyMDkxMCwgMjA5MTQsIDIwOTE4LCAwLCAwLCAyMDkyMiwgMjA5MjYsIDIwOTMwLCAyMDkzNCwgMjA5MzgsIDIwOTQyLCAKLSAgICAyMDk0NiwgMjA5NTAsIDIwOTU0LCAyMDk1OCwgMjA5NjIsIDIwOTY2LCAyMDk3MCwgMjA5NzQsIDIwOTc4LCAyMDk4MiwgCi0gICAgMjA5ODYsIDIwOTkwLCAyMDk5NCwgMjA5OTgsIDIxMDAyLCAyMTAwNiwgMjEwMTAsIDIxMDEzLCAyMTAxNywgMjEwMjEsIAotICAgIDIxMDI1LCAyMTAyOSwgMjEwMzMsIDIxMDM3LCAyMTA0MSwgMjEwNDUsIDIxMDQ5LCAyMTA1MywgMjEwNTcsIDIxMDYxLCAKLSAgICAyMTA2NSwgMjEwNjksIDIxMDczLCAyMTA3NywgMjEwODEsIDAsIDIxMDg1LCAyMTA4OSwgMjEwOTMsIDIxMDk3LCAwLCAwLCAKLSAgICAyMTEwMSwgMjExMDQsIDIxMTA4LCAyMTExMiwgMjExMTYsIDIxMTIwLCAyMTEyNCwgMjExMjgsIDIxMTMyLCAyMTEzNiwgCi0gICAgMjExNDAsIDIxMTQ0LCAyMTE0OCwgMjExNTIsIDIxMTU2LCAyMTE2MCwgMjExNjQsIDIxMTY5LCAyMTE3NCwgMjExNzksIAotICAgIDIxMTg1LCAyMTE5MSwgMjExOTYsIDIxMjAxLCAyMTIwNywgMjEyMTAsIDIxMjE0LCAyMTIxOCwgMjEyMjIsIDIxMjI2LCAKLSAgICAyMTIzMCwgMjEyMzQsIDIxMjM4LCAwLCAyMTI0MiwgMjEyNDYsIDIxMjUwLCAyMTI1NCwgMCwgMCwgMjEyNTgsIDIxMjYyLCAKLSAgICAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDAsIDIxMjg2LCAwLCAyMTI5MCwgMjEyOTQsIDIxMjk4LCAKLSAgICAyMTMwMiwgMCwgMCwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIDIxMzM0LCAKLSAgICAyMTMzOCwgMjEzNDMsIDIxMzQ4LCAyMTM1MywgMjEzNTksIDIxMzY1LCAyMTM3MCwgMCwgMjEzNzUsIDIxMzc5LCAyMTM4MywgCi0gICAgMjEzODcsIDIxMzkxLCAyMTM5NSwgMjEzOTksIDIxNDAzLCAyMTQwNywgMjE0MTEsIDIxNDE1LCAyMTQxOSwgMjE0MjMsIAotICAgIDIxNDI3LCAyMTQzMSwgMjE0MzUsIDIxNDM5LCAyMTQ0MiwgMjE0NDYsIDIxNDUwLCAyMTQ1NCwgMjE0NTgsIDIxNDYyLCAKLSAgICAyMTQ2NiwgMjE0NzAsIDIxNDc0LCAyMTQ3OCwgMjE0ODIsIDIxNDg2LCAyMTQ5MCwgMjE0OTQsIDIxNDk4LCAyMTUwMiwgCi0gICAgMjE1MDYsIDIxNTEwLCAyMTUxNCwgMjE1MTgsIDIxNTIyLCAyMTUyNiwgMjE1MzAsIDIxNTM0LCAyMTUzOCwgMjE1NDIsIAotICAgIDIxNTQ2LCAyMTU1MCwgMjE1NTQsIDIxNTU4LCAyMTU2MiwgMjE1NjYsIDIxNTcwLCAyMTU3NCwgMjE1NzgsIDIxNTgyLCAKLSAgICAyMTU4NiwgMjE1OTAsIDIxNTk0LCAyMTU5OCwgMCwgMjE2MDIsIDIxNjA2LCAyMTYxMCwgMjE2MTQsIDAsIDAsIDIxNjE4LCAKLSAgICAyMTYyMiwgMjE2MjYsIDIxNjMwLCAyMTYzNCwgMjE2MzgsIDIxNjQyLCAyMTY0NiwgMjE2NTAsIDIxNjU0LCAyMTY1OCwgCi0gICAgMjE2NjIsIDIxNjY2LCAyMTY3MCwgMjE2NzQsIDIxNjc4LCAyMTY4MiwgMjE2ODYsIDIxNjkwLCAyMTY5NCwgMjE2OTgsIAotICAgIDIxNzAyLCAyMTcwNiwgMjE3MTAsIDIxNzE0LCAyMTcxOCwgMjE3MjIsIDIxNzI2LCAyMTczMCwgMjE3MzQsIDIxNzM4LCAKLSAgICAyMTc0MiwgMjE3NDYsIDIxNzUwLCAyMTc1NCwgMjE3NTgsIDIxNzYyLCAyMTc2NiwgMjE3NzAsIDIxNzc0LCAyMTc3OCwgCi0gICAgMjE3ODIsIDIxNzg2LCAyMTc5MCwgMjE3OTQsIDIxNzk4LCAyMTgwMiwgMjE4MDYsIDIxODEwLCAyMTgxNCwgMjE4MTgsIAotICAgIDIxODIyLCAyMTgyNiwgMjE4MzAsIDIxODM0LCAyMTgzOCwgMjE4NDIsIDIxODQ1LCAyMTg0OSwgMjE4NTMsIDIxODU3LCAKLSAgICAyMTg2MSwgMjE4NjUsIDIxODY5LCAyMTg3MywgMjE4NzcsIDIxODgxLCAwLCAwLCAyMTg4NSwgMjE4OTQsIDIxOTAwLCAKLSAgICAyMTkwNSwgMjE5MDksIDIxOTEyLCAyMTkxNywgMjE5MjAsIDIxOTIzLCAyMTkyNiwgMjE5MzEsIDIxOTM1LCAyMTk0MCwgCi0gICAgMjE5NDMsIDIxOTQ2LCAyMTk0OSwgMjE5NTIsIDIxOTU1LCAyMTk1OCwgMjE5NjEsIDIxOTY0LCAyMTk2NywgMjE5NzEsIAotICAgIDIxOTc1LCAyMTk3OSwgMjE5ODMsIDIxOTg3LCAyMTk5MSwgMjE5OTUsIDIxOTk5LCAyMjAwMywgMjIwMDcsIDAsIDAsIDAsIAotICAgIDIyMDEzLCAyMjAxOSwgMjIwMjMsIDIyMDI3LCAyMjAzMSwgMjIwMzcsIDIyMDQxLCAyMjA0NSwgMjIwNDksIDIyMDU1LCAKLSAgICAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MywgMjIwNzcsIDIyMDgxLCAyMjA4NSwgMjIwOTEsIDIyMDk3LCAyMjEwMywgCi0gICAgMjIxMTEsIDIyMTE3LCAyMjEyMywgMjIxMjksIDIyMTM1LCAyMjE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMjIxNDcsIDIyMTUwLCAKLSAgICAyMjE1MywgMjIxNTYsIDIyMTU5LCAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3MywgMjIxNzcsIDIyMTgxLCAyMjE4NSwgCi0gICAgMjIxODksIDIyMTkzLCAyMjE5NiwgMjIyMDAsIDIyMjA0LCAyMjIwOCwgMjIyMTIsIDIyMjE2LCAyMjIyMCwgMjIyMjQsIAotICAgIDIyMjI4LCAyMjIzMiwgMjIyMzYsIDIyMjQwLCAyMjI0MywgMjIyNDcsIDIyMjUxLCAyMjI1NSwgMjIyNTksIDIyMjYyLCAKLSAgICAyMjI2NiwgMjIyNzAsIDIyMjc0LCAyMjI3OCwgMjIyODIsIDIyMjg2LCAyMjI5MCwgMjIyOTQsIDIyMjk4LCAyMjMwMiwgCi0gICAgMjIzMDYsIDIyMzEwLCAyMjMxNCwgMjIzMTcsIDIyMzIxLCAyMjMyNSwgMjIzMjksIDIyMzMzLCAyMjMzNywgMjIzNDEsIAotICAgIDIyMzQ1LCAyMjM0OSwgMjIzNTMsIDIyMzU3LCAyMjM2MSwgMjIzNjUsIDIyMzY5LCAyMjM3MywgMjIzNzcsIDIyMzgxLCAKLSAgICAyMjM4NSwgMjIzODksIDIyMzkzLCAyMjM5NywgMjI0MDEsIDIyNDA1LCAyMjQwOSwgMjI0MTMsIDIyNDE3LCAyMjQyMSwgCi0gICAgMjI0MjUsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NSwgMjI0NDksIDIyNDUzLCAyMjQ1NiwgMjI0NjAsIAotICAgIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyNDc2LCAyMjQ4MCwgCi0gICAgMjI0ODMsIDIyNDg3LCAyMjQ5MCwgMjI0OTQsIDIyNDk3LCAyMjUwMSwgMjI1MDcsIDIyNTEyLCAyMjUxNiwgMjI1MTksIAotICAgIDIyNTIzLCAyMjUyNywgMjI1MzIsIDIyNTM2LCAyMjU0MSwgMjI1NDUsIDIyNTUwLCAyMjU1NCwgMjI1NTksIDIyNTYzLCAKLSAgICAyMjU2OCwgMjI1NzQsIDIyNTc4LCAyMjU4MywgMjI1ODcsIDIyNTkyLCAyMjU5OCwgMjI2MDIsIDIyNjA4LCAyMjYxNCwgCi0gICAgMjI2MTgsIDIyNjIzLCAyMjYzMSwgMjI2MzksIDIyNjQ2LCAyMjY1MSwgMjI2NTYsIDIyNjY1LCAyMjY3MiwgMjI2NzksIAotICAgIDIyNjg0LCAyMjY5MCwgMjI2OTQsIDIyNjk4LCAyMjcwMiwgMjI3MDYsIDIyNzEwLCAyMjcxNCwgMjI3MTgsIDIyNzIyLCAKLSAgICAyMjcyNiwgMjI3MzAsIDIyNzM2LCAyMjc0MSwgMjI3NDYsIDIyNzQ5LCAyMjc1MywgMjI3NTcsIDIyNzYyLCAyMjc2NiwgCi0gICAgMjI3NzEsIDIyNzc1LCAyMjc4MCwgMjI3ODQsIDIyNzg5LCAyMjc5MywgMjI3OTgsIDIyODAyLCAyMjgwNywgMjI4MTEsIAotICAgIDIyODE2LCAyMjgyMiwgMjI4MjYsIDIyODMxLCAyMjgzNiwgMjI4NDAsIDIyODQ0LCAyMjg0OCwgMjI4NTIsIDIyODU1LCAKLSAgICAyMjg1OSwgMjI4NjUsIDIyODcwLCAyMjg3NSwgMjI4NzksIDIyODgzLCAyMjg4NywgMjI4OTIsIDIyODk2LCAyMjkwMSwgCi0gICAgMjI5MDUsIDIyOTEwLCAyMjkxMywgMjI5MTcsIDIyOTIxLCAyMjkyNiwgMjI5MzAsIDIyOTM1LCAyMjkzOSwgMjI5NDQsIAotICAgIDIyOTUwLCAyMjk1NCwgMjI5NTgsIDIyOTYyLCAyMjk2NiwgMjI5NzAsIDIyOTc0LCAyMjk3OCwgMjI5ODIsIDIyOTg2LCAKLSAgICAyMjk5MCwgMjI5OTQsIDIzMDAwLCAyMzAwMywgMjMwMDcsIDIzMDExLCAyMzAxNiwgMjMwMjAsIDIzMDI1LCAyMzAyOSwgCi0gICAgMjMwMzQsIDIzMDM4LCAyMzA0MywgMjMwNDcsIDIzMDUyLCAyMzA1NiwgMjMwNjEsIDIzMDY1LCAyMzA3MCwgMjMwNzYsIAotICAgIDIzMDgwLCAyMzA4NCwgMjMwOTAsIDIzMDk2LCAyMzEwMiwgMjMxMDgsIDIzMTEyLCAyMzExNiwgMjMxMjAsIDIzMTI0LCAKLSAgICAyMzEyOCwgMjMxMzIsIDIzMTM4LCAyMzE0MiwgMjMxNDYsIDIzMTUwLCAyMzE1NSwgMjMxNTksIDIzMTY0LCAyMzE2OCwgCi0gICAgMjMxNzMsIDIzMTc3LCAyMzE4MiwgMjMxODYsIDIzMTkxLCAyMzE5NSwgMjMyMDAsIDIzMjA0LCAyMzIwOSwgMjMyMTUsIAotICAgIDIzMjE5LCAyMzIyNSwgMjMyMjksIDIzMjMzLCAyMzIzNywgMjMyNDEsIDIzMjQ1LCAyMzI0OSwgMjMyNTUsIDIzMjU4LCAKLSAgICAyMzI2MiwgMjMyNjYsIDIzMjcxLCAyMzI3NSwgMjMyODAsIDIzMjg0LCAyMzI4OSwgMjMyOTMsIDIzMjk4LCAyMzMwMiwgCi0gICAgMjMzMDcsIDIzMzExLCAyMzMxNiwgMjMzMjAsIDIzMzI1LCAyMzMzMSwgMjMzMzQsIDIzMzM4LCAyMzM0MiwgMjMzNDcsIAotICAgIDIzMzUyLCAyMzM1NiwgMjMzNjAsIDIzMzY0LCAyMzM2OCwgMjMzNzIsIDIzMzc2LCAyMzM4MiwgMjMzODUsIDIzMzg5LCAKLSAgICAyMzM5MywgMjMzOTgsIDIzNDAyLCAyMzQwNywgMjM0MTEsIDIzNDE2LCAyMzQyMiwgMjM0MjYsIDIzNDMxLCAyMzQzNSwgCi0gICAgMjM0MzksIDIzNDQzLCAyMzQ0NywgMjM0NTEsIDIzNDU1LCAyMzQ1OSwgMjM0NjUsIDIzNDY5LCAyMzQ3MywgMjM0NzcsIAotICAgIDIzNDgyLCAyMzQ4NiwgMjM0OTEsIDIzNDk1LCAyMzUwMCwgMjM1MDQsIDIzNTA5LCAyMzUxMywgMjM1MTgsIDIzNTIyLCAKLSAgICAyMzUyNywgMjM1MzEsIDIzNTM2LCAyMzUzOSwgMjM1NDMsIDIzNTQ3LCAyMzU1MSwgMjM1NTUsIDIzNTU5LCAyMzU2MywgCi0gICAgMjM1NjcsIDIzNTcxLCAyMzU3NywgMjM1ODAsIDIzNTg0LCAyMzU4OCwgMjM1OTMsIDIzNTk3LCAyMzYwMiwgMjM2MDYsIAotICAgIDIzNjExLCAyMzYxNSwgMjM2MjAsIDIzNjI0LCAyMzYyOSwgMjM2MzMsIDIzNjM4LCAyMzY0MiwgMjM2NDcsIDIzNjUzLCAKLSAgICAyMzY1NywgMjM2NjMsIDIzNjY3LCAyMzY3MywgMjM2NzksIDIzNjg1LCAyMzY5MSwgMjM2OTcsIDIzNzAzLCAyMzcwOSwgCi0gICAgMjM3MTUsIDIzNzE5LCAyMzcyMywgMjM3MjcsIDIzNzMxLCAyMzczNSwgMjM3MzksIDIzNzQzLCAyMzc0NywgMjM3NTIsIAotICAgIDIzNzU2LCAyMzc2MSwgMjM3NjUsIDIzNzcwLCAyMzc3NCwgMjM3NzksIDIzNzgzLCAyMzc4OCwgMjM3OTIsIDIzNzk3LCAKLSAgICAyMzgwMSwgMjM4MDYsIDIzODEwLCAyMzgxNCwgMjM4MTgsIDIzODIyLCAyMzgyNiwgMjM4MzAsIDIzODM0LCAyMzg0MCwgCi0gICAgMjM4NDMsIDIzODQ3LCAyMzg1MSwgMjM4NTYsIDIzODYwLCAyMzg2NSwgMjM4NjksIDIzODc0LCAyMzg3OCwgMjM4ODMsIAotICAgIDIzODg3LCAyMzg5MiwgMjM4OTYsIDIzOTAxLCAyMzkwNSwgMjM5MTAsIDIzOTE2LCAyMzkyMCwgMjM5MjYsIDIzOTMxLCAKLSAgICAyMzkzNywgMjM5NDEsIDIzOTQ3LCAyMzk1MiwgMjM5NTYsIDIzOTYwLCAyMzk2NCwgMjM5NjgsIDIzOTcyLCAyMzk3NywgCi0gICAgMjM5ODAsIDIzOTg0LCAyMzk4OSwgMjM5OTMsIDIzOTk4LCAyNDAwMSwgMjQwMDUsIDI0MDA5LCAyNDAxMywgMjQwMTcsIAotICAgIDI0MDIxLCAyNDAyNSwgMjQwMjksIDI0MDMzLCAyNDAzNywgMjQwNDEsIDI0MDQ1LCAyNDA1MCwgMjQwNTQsIDI0MDU4LCAKLSAgICAyNDA2NCwgMjQwNjgsIDI0MDc0LCAyNDA3OCwgMjQwODQsIDI0MDg4LCAyNDA5MiwgMjQwOTYsIDI0MTAwLCAyNDEwNCwgCi0gICAgMjQxMDksIDI0MTEzLCAyNDExNywgMjQxMjEsIDI0MTI1LCAyNDEyOSwgMjQxMzMsIDI0MTM3LCAyNDE0MSwgMjQxNDUsIAotICAgIDI0MTQ5LCAyNDE1NSwgMjQxNjEsIDI0MTY3LCAyNDE3MywgMjQxNzksIDI0MTg0LCAyNDE5MCwgMjQxOTYsIDI0MjAyLCAKLSAgICAyNDIwNiwgMjQyMTAsIDI0MjE0LCAyNDIxOCwgMjQyMjIsIDI0MjI2LCAyNDIzMCwgMjQyMzQsIDI0MjM4LCAyNDI0MiwgCi0gICAgMjQyNDYsIDI0MjUwLCAyNDI1NCwgMjQyNTksIDI0MjY0LCAyNDI2OSwgMjQyNzMsIDI0Mjc3LCAyNDI4MSwgMjQyODUsIAotICAgIDI0Mjg5LCAyNDI5MywgMjQyOTcsIDI0MzAxLCAyNDMwNSwgMjQzMDksIDI0MzE1LCAyNDMyMSwgMjQzMjcsIDI0MzMzLCAKLSAgICAyNDMzOSwgMjQzNDUsIDI0MzUxLCAyNDM1NywgMjQzNjMsIDI0MzY3LCAyNDM3MSwgMjQzNzUsIDI0Mzc5LCAyNDM4MywgCi0gICAgMjQzODcsIDI0MzkxLCAyNDM5NywgMjQ0MDMsIDI0NDA5LCAyNDQxNSwgMjQ0MjEsIDI0NDI3LCAyNDQzMywgMjQ0MzksIAotICAgIDI0NDQ1LCAyNDQ1MCwgMjQ0NTUsIDI0NDYwLCAyNDQ2NSwgMjQ0NzEsIDI0NDc3LCAyNDQ4MywgMjQ0ODksIDI0NDk1LCAKLSAgICAyNDUwMSwgMjQ1MDcsIDI0NTEyLCAyNDUxOCwgMjQ1MjQsIDI0NTMwLCAyNDUzNSwgMjQ1NDEsIDI0NTQ3LCAyNDU1MywgCi0gICAgMjQ1NTgsIDI0NTYzLCAyNDU2OCwgMjQ1NzMsIDI0NTc4LCAyNDU4MywgMjQ1ODgsIDI0NTkzLCAyNDU5OCwgMjQ2MDMsIAotICAgIDI0NjA4LCAyNDYxMywgMjQ2MTcsIDI0NjIyLCAyNDYyNywgMjQ2MzIsIDI0NjM3LCAyNDY0MiwgMjQ2NDcsIDI0NjUyLCAKLSAgICAyNDY1NywgMjQ2NjIsIDI0NjY3LCAyNDY3MiwgMjQ2NzcsIDI0NjgyLCAyNDY4NywgMjQ2OTIsIDI0Njk3LCAyNDcwMiwgCi0gICAgMjQ3MDcsIDI0NzEyLCAyNDcxNywgMjQ3MjIsIDI0NzI3LCAyNDczMiwgMjQ3MzcsIDI0NzQyLCAyNDc0NywgMjQ3NTIsIAotICAgIDI0NzU3LCAyNDc2MiwgMjQ3NjYsIDI0NzcxLCAyNDc3NiwgMjQ3ODEsIDI0Nzg2LCAyNDc5MSwgMjQ3OTYsIDI0ODAxLCAKLSAgICAyNDgwNiwgMjQ4MTEsIDI0ODE2LCAyNDgyMSwgMjQ4MjYsIDI0ODMxLCAyNDgzNiwgMjQ4NDEsIDI0ODQ2LCAyNDg1MSwgCi0gICAgMjQ4NTYsIDI0ODYxLCAyNDg2NiwgMjQ4NzEsIDI0ODc2LCAyNDg4MSwgMjQ4ODYsIDI0ODkxLCAyNDg5NSwgMjQ5MDAsIAotICAgIDI0OTA1LCAyNDkxMCwgMjQ5MTUsIDI0OTIwLCAyNDkyNCwgMjQ5MjksIDI0OTM0LCAyNDkzOSwgMjQ5NDQsIDI0OTQ5LCAKLSAgICAyNDk1MywgMjQ5NTgsIDI0OTY0LCAyNDk2OSwgMjQ5NzQsIDI0OTc5LCAyNDk4NCwgMjQ5OTAsIDI0OTk1LCAyNTAwMCwgCi0gICAgMjUwMDUsIDI1MDEwLCAyNTAxNSwgMjUwMjAsIDI1MDI1LCAyNTAzMCwgMjUwMzUsIDI1MDQwLCAyNTA0NSwgMjUwNTAsIAotICAgIDI1MDU1LCAyNTA2MCwgMjUwNjUsIDI1MDcwLCAyNTA3NSwgMjUwODAsIDI1MDg1LCAyNTA5MCwgMjUwOTUsIDI1MTAwLCAKLSAgICAyNTEwNSwgMjUxMTAsIDI1MTE1LCAyNTEyMCwgMjUxMjUsIDI1MTMwLCAyNTEzNSwgMjUxNDAsIDI1MTQ1LCAyNTE1MCwgCi0gICAgMjUxNTUsIDI1MTYwLCAyNTE2NSwgMjUxNzAsIDI1MTc1LCAyNTE4MCwgMjUxODUsIDI1MTkwLCAyNTE5NSwgMjUyMDAsIAotICAgIDI1MjA1LCAyNTIxMCwgMjUyMTYsIDI1MjIxLCAyNTIyNiwgMjUyMzEsIDI1MjM2LCAyNTI0MSwgMjUyNDYsIDI1MjUxLCAKLSAgICAyNTI1NiwgMjUyNjEsIDI1MjY2LCAyNTI3MSwgMjUyNzUsIDI1MjgwLCAyNTI4NSwgMjUyOTAsIDI1Mjk1LCAyNTMwMCwgCi0gICAgMjUzMDUsIDI1MzEwLCAyNTMxNSwgMjUzMjAsIDI1MzI1LCAyNTMzMCwgMjUzMzUsIDI1MzQwLCAyNTM0NSwgMjUzNTAsIAotICAgIDI1MzU1LCAyNTM2MCwgMjUzNjUsIDI1MzcwLCAyNTM3NSwgMjUzODAsIDI1Mzg1LCAyNTM5MCwgMjUzOTUsIDI1NDAwLCAKLSAgICAyNTQwNSwgMjU0MTEsIDI1NDE1LCAyNTQxOSwgMjU0MjMsIDI1NDI3LCAyNTQzMSwgMjU0MzUsIDI1NDM5LCAyNTQ0MywgCi0gICAgMjU0NDksIDI1NDU1LCAyNTQ2MSwgMjU0NjcsIDI1NDczLCAyNTQ3OSwgMjU0ODUsIDI1NDkyLCAyNTQ5OCwgMjU1MDMsIAotICAgIDI1NTA4LCAyNTUxMywgMjU1MTgsIDI1NTIzLCAyNTUyOCwgMjU1MzMsIDI1NTM4LCAyNTU0MywgMjU1NDgsIDI1NTUzLCAKLSAgICAyNTU1OCwgMjU1NjMsIDI1NTY4LCAyNTU3MywgMjU1NzgsIDI1NTgzLCAyNTU4OCwgMjU1OTMsIDI1NTk4LCAyNTYwMywgCi0gICAgMjU2MDgsIDI1NjEzLCAyNTYxOCwgMjU2MjMsIDI1NjI4LCAyNTYzMywgMjU2MzgsIDAsIDAsIDAsIDI1NjQ1LCAyNTY1NSwgCi0gICAgMjU2NTksIDI1NjY2LCAyNTY3MCwgMjU2NzQsIDI1Njc4LCAyNTY4NiwgMjU2OTAsIDI1Njk1LCAyNTcwMCwgMjU3MDUsIAotICAgIDI1NzA5LCAyNTcxNCwgMjU3MTksIDI1NzIyLCAyNTcyNiwgMjU3MzAsIDI1NzM5LCAyNTc0MywgMjU3NDcsIDI1NzUzLCAKLSAgICAyNTc1NywgMjU3NjEsIDI1NzY5LCAyNTc3MywgMjU3ODEsIDI1Nzg3LCAyNTc5MywgMjU3OTksIDI1ODA1LCAyNTgxNSwgCi0gICAgMjU4MjEsIDI1ODI1LCAyNTgzNCwgMjU4MzcsIDI1ODQzLCAyNTg0NywgMjU4NTMsIDI1ODU4LCAyNTg2NCwgMjU4NzIsIAotICAgIDI1ODc4LCAyNTg4NCwgMjU4OTIsIDI1ODk4LCAyNTkwMiwgMjU5MDYsIDI1OTE2LCAyNTkyMiwgMjU5MjYsIDI1OTM2LCAKLSAgICAyNTk0MiwgMjU5NDYsIDI1OTUwLCAyNTk1NywgMjU5NjQsIDI1OTY5LCAyNTk3NCwgMjU5ODMsIDI1OTg3LCAyNTk5MSwgCi0gICAgMjU5OTUsIDI2MDAzLCAyNjAxMCwgMjYwMTQsIDI2MDE4LCAyNjAyMiwgMjYwMjYsIDI2MDMwLCAyNjAzNCwgMjYwMzgsIAotICAgIDI2MDQyLCAyNjA0NiwgMjYwNTAsIDI2MDU0LCAyNjA1OSwgMjYwNjQsIDI2MDY5LCAyNjA3MywgMjYwNzcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MDgxLCAyNjA4NSwgMjYwODksIDI2MDkzLCAyNjA5NywgCi0gICAgMjYxMDIsIDI2MTA3LCAyNjExMiwgMjYxMTcsIDI2MTIxLCAyNjEyNSwgMjYxMzAsIDI2MTM0LCAwLCAyNjEzOCwgMjYxNDMsIAotICAgIDI2MTQ4LCAyNjE1MiwgMjYxNTYsIDI2MTYxLCAyNjE2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjYxNzEsIDI2MTc1LCAyNjE3OSwgMjYxODMsIDI2MTg3LCAyNjE5MiwgMjYxOTcsIDI2MjAyLCAyNjIwNywgMjYyMTEsIAotICAgIDI2MjE1LCAyNjIyMCwgMjYyMjQsIDI2MjI4LCAyNjIzMiwgMjYyMzcsIDI2MjQyLCAyNjI0NiwgMjYyNTAsIDI2MjU1LCAKLSAgICAyNjI2MCwgMjYyNjUsIDI2MjcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjI3NiwgMjYyODAsIDI2Mjg0LCAKLSAgICAyNjI4OCwgMjYyOTIsIDI2Mjk3LCAyNjMwMiwgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI1LCAyNjMyOSwgCi0gICAgMjYzMzMsIDI2MzM3LCAyNjM0MiwgMjYzNDcsIDI2MzUxLCAyNjM1NSwgMjYzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2MzY1LCAyNjM2OSwgMjYzNzMsIDI2Mzc3LCAyNjM4MSwgMjYzODYsIDI2MzkxLCAyNjM5NiwgCi0gICAgMjY0MDEsIDI2NDA1LCAyNjQwOSwgMjY0MTQsIDI2NDE4LCAwLCAyNjQyMiwgMjY0MjcsIDI2NDMyLCAwLCAyNjQzNiwgCi0gICAgMjY0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NDQ2LCAyNjQ0OSwgMjY0NTMsIDI2NDU3LCAKLSAgICAyNjQ2MSwgMjY0NjUsIDI2NDY5LCAyNjQ3MywgMjY0NzcsIDI2NDgxLCAyNjQ4NSwgMjY0ODksIDI2NDkzLCAyNjQ5NywgCi0gICAgMjY1MDEsIDI2NTA1LCAyNjUwOSwgMjY1MTMsIDI2NTE2LCAyNjUyMCwgMjY1MjQsIDI2NTI4LCAyNjUzMiwgMjY1MzYsIAotICAgIDI2NTQwLCAyNjU0NCwgMjY1NDgsIDI2NTUyLCAyNjU1NiwgMjY1NjAsIDI2NTY0LCAyNjU2OCwgMjY1NzEsIDI2NTc0LCAKLSAgICAyNjU3OCwgMjY1ODIsIDI2NTg4LCAyNjU5NCwgMjY2MDAsIDI2NjA2LCAyNjYxMiwgMjY2MTgsIDI2NjI0LCAyNjYzMCwgCi0gICAgMjY2MzYsIDI2NjQyLCAyNjY0OCwgMjY2NTQsIDI2NjYwLCAyNjY2NiwgMjY2NzUsIDI2Njg0LCAyNjY5MCwgMjY2OTYsIAotICAgIDI2NzAyLCAyNjcwNywgMjY3MTEsIDI2NzE2LCAyNjcyMSwgMjY3MjYsIDI2NzMwLCAyNjczNSwgMjY3NDAsIDI2NzQ1LCAKLSAgICAyNjc0OSwgMjY3NTQsIDI2NzU4LCAyNjc2MywgMjY3NjgsIDI2NzczLCAyNjc3OCwgMjY3ODIsIDI2Nzg2LCAyNjc5MCwgCi0gICAgMjY3OTQsIDI2Nzk4LCAyNjgwMiwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTgsIDI2ODI0LCAyNjgyOCwgMjY4MzIsIAotICAgIDI2ODM2LCAyNjg0MCwgMjY4NDQsIDI2ODUyLCAyNjg1OCwgMjY4NjIsIDI2ODY4LCAyNjg3MiwgMjY4NzgsIDI2ODgyLCAwLCAKLSAgICAwLCAyNjg4NiwgMjY4OTAsIDI2ODkzLCAyNjg5NiwgMjY4OTksIDI2OTAyLCAyNjkwNSwgMjY5MDgsIDI2OTExLCAyNjkxNCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjY5MTcsIDI2OTI1LCAyNjkzMywgMjY5NDEsIDI2OTQ5LCAyNjk1NywgMjY5NjUsIDI2OTczLCAKLSAgICAyNjk4MSwgMjY5ODksIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTk3LCAyNzAwMCwgMjcwMDMsIDI3MDA2LCAyNzAxMSwgMjcwMTQsIAotICAgIDI3MDE5LCAyNzAyNiwgMjcwMzQsIDI3MDM5LCAyNzA0NiwgMjcwNDksIDI3MDU2LCAyNzA2MywgMjcwNzAsIDAsIDI3MDc0LCAKLSAgICAyNzA3OCwgMjcwODEsIDI3MDg0LCAyNzA4NywgMjcwOTAsIDI3MDkzLCAyNzA5NiwgMjcwOTksIDI3MTAyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNzEwNSwgMjcxMDgsIDI3MTExLCAyNzExNCwgMjcxMTcsIDI3MTIwLCAyNzEyNCwgMjcxMjgsIDI3MTMyLCAKLSAgICAyNzEzNSwgMjcxMzksIDI3MTQzLCAyNzE0NiwgMjcxNTAsIDI3MTU0LCAyNzE1NywgMjcxNjEsIDI3MTY0LCAyNzE2OCwgCi0gICAgMjcxNzIsIDI3MTc2LCAyNzE4MCwgMjcxODQsIDI3MTg3LCAyNzE5MCwgMjcxOTQsIDI3MTk4LCAyNzIwMSwgMjcyMDUsIAotICAgIDI3MjA5LCAyNzIxMywgMjcyMTcsIDI3MjIxLCAyNzIyNSwgMjcyMjksIDI3MjMzLCAyNzI0MCwgMjcyNDUsIDI3MjUwLCAKLSAgICAyNzI1NSwgMjcyNjAsIDI3MjY2LCAyNzI3MiwgMjcyNzgsIDI3Mjg0LCAyNzI4OSwgMjcyOTUsIDI3MzAxLCAyNzMwNiwgCi0gICAgMjczMTIsIDI3MzE4LCAyNzMyNCwgMjczMzAsIDI3MzM2LCAyNzM0MSwgMjczNDcsIDI3MzUyLCAyNzM1OCwgMjczNjQsIAotICAgIDI3MzcwLCAyNzM3NiwgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTgsIDI3NDA0LCAyNzQwOSwgMjc0MTUsIDI3NDIwLCAKLSAgICAyNzQyNiwgMjc0MzEsIDI3NDM2LCAyNzQ0MiwgMjc0NDgsIDI3NDU0LCAyNzQ2MCwgMjc0NjYsIDI3NDcyLCAyNzQ3OCwgCi0gICAgMjc0ODQsIDI3NDkwLCAyNzQ5NiwgMjc1MDIsIDI3NTA4LCAyNzUxMywgMjc1MTgsIDI3NTIzLCAyNzUyOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjc1MzUsIDI3NTQ0LCAyNzU1MywgMjc1NjEsIDI3NTY5LCAyNzU3OSwgMjc1ODcsIDI3NTk2LCAKLSAgICAyNzYwMywgMjc2MTAsIDI3NjE3LCAyNzYyNSwgMjc2MzMsIDI3NjQxLCAyNzY0OSwgMjc2NTcsIDI3NjY1LCAyNzY3MywgCi0gICAgMjc2ODEsIDI3Njg4LCAyNzY5NiwgMjc3MDQsIDI3NzEyLCAyNzcyMCwgMjc3MjgsIDI3NzM4LCAyNzc0OCwgMjc3NTgsIAotICAgIDI3NzY4LCAyNzc3OCwgMjc3ODgsIDI3Nzk4LCAyNzgwOCwgMjc4MTgsIDI3ODI4LCAyNzgzOCwgMjc4NDgsIDI3ODU4LCAKLSAgICAyNzg2OCwgMjc4NzYsIDI3ODg0LCAyNzg5NCwgMjc5MDIsIDAsIDAsIDAsIDAsIDAsIDI3OTEyLCAyNzkxNiwgMjc5MjAsIAotICAgIDI3OTI0LCAyNzkyOCwgMjc5MzIsIDI3OTM2LCAyNzk0MCwgMjc5NDQsIDI3OTQ4LCAyNzk1MiwgMjc5NTYsIDI3OTYwLCAKLSAgICAyNzk2NCwgMjc5NjgsIDI3OTcyLCAyNzk3NiwgMjc5ODAsIDI3OTg0LCAyNzk4OCwgMjc5OTIsIDI3OTk2LCAyODAwMCwgCi0gICAgMjgwMDQsIDI4MDEwLCAyODAxNCwgMjgwMjAsIDI4MDI0LCAyODAzMCwgMjgwMzQsIDI4MDQwLCAyODA0NCwgMjgwNDgsIAotICAgIDI4MDUyLCAyODA1NiwgMjgwNjAsIDI4MDY0LCAyODA3MCwgMjgwNzYsIDI4MDgyLCAyODA4OCwgMjgwOTMsIDI4MDk5LCAKLSAgICAyODEwNSwgMjgxMTEsIDI4MTE3LCAyODEyMywgMjgxMjksIDI4MTM2LCAyODE0MiwgMjgxNDcsIDI4MTUyLCAyODE1NiwgCi0gICAgMjgxNjAsIDI4MTY0LCAyODE2OCwgMjgxNzIsIDI4MTc2LCAyODE4MCwgMjgxODYsIDI4MTkyLCAyODE5OCwgMjgyMDMsIAotICAgIDI4MjEwLCAyODIxNSwgMjgyMjAsIDI4MjI2LCAyODIzMSwgMjgyMzgsIDI4MjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyODI1MiwgMjgyNTgsIDI4MjYyLCAyODI2NywgMjgyNzIsIDI4Mjc3LCAyODI4MiwgMjgyODcsIDI4MjkyLCAKLSAgICAyODI5NywgMjgzMDIsIDI4MzA3LCAyODMxMiwgMjgzMTcsIDI4MzIyLCAyODMyNywgMjgzMzEsIDI4MzM1LCAyODM0MCwgCi0gICAgMjgzNDUsIDI4MzUwLCAyODM1NCwgMjgzNTgsIDI4MzYyLCAyODM2NywgMjgzNzIsIDI4Mzc3LCAyODM4MiwgMjgzODYsIDAsIAotICAgIDAsIDAsIDI4MzkwLCAyODM5NSwgMjg0MDAsIDI4NDA1LCAyODQxMSwgMjg0MTcsIDI4NDIzLCAyODQyOSwgMjg0MzQsIAotICAgIDI4NDM5LCAyODQ0NSwgMjg0NTEsIDAsIDAsIDAsIDAsIDI4NDU4LCAyODQ2MywgMjg0NjksIDI4NDc1LCAyODQ4MSwgCi0gICAgMjg0ODYsIDI4NDkxLCAyODQ5NiwgMjg1MDEsIDI4NTA3LCAyODUxMiwgMjg1MTcsIDAsIDAsIDAsIDAsIDI4NTIyLCAwLCAwLCAKLSAgICAwLCAyODUyNywgMjg1MzIsIDI4NTM3LCAyODU0MiwgMjg1NDYsIDI4NTUwLCAyODU1NCwgMjg1NTgsIDI4NTYyLCAyODU2NiwgCi0gICAgMjg1NzAsIDI4NTc0LCAyODU3OCwgMjg1ODMsIDI4NTg5LCAyODU5NSwgMjg2MDEsIDI4NjA2LCAyODYxMSwgMjg2MTcsIAotICAgIDI4NjIzLCAyODYyOSwgMjg2MzQsIDI4NjQwLCAyODY0NSwgMjg2NTEsIDI4NjU3LCAyODY2MiwgMjg2NjgsIDI4Njc0LCAKLSAgICAyODY4MCwgMjg2ODUsIDI4NjkwLCAyODY5NSwgMjg3MDEsIDI4NzA3LCAyODcxMiwgMjg3MTgsIDI4NzIzLCAyODcyOSwgCi0gICAgMjg3MzQsIDI4NzQwLCAwLCAwLCAyODc0NiwgMjg3NTIsIDI4NzU4LCAyODc2NCwgMjg3NzAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4Nzc2LCAyODc4MywgMjg3OTAsIDI4Nzk2LCAyODgwMywgMjg4MTAsIDI4ODE2LCAyODgyMywgCi0gICAgMjg4MzAsIDI4ODM3LCAyODg0MywgMjg4NDksIDI4ODU2LCAyODg2MiwgMjg4NjgsIDI4ODc1LCAyODg4MiwgMjg4ODgsIAotICAgIDI4ODk1LCAyODkwMiwgMjg5MDgsIDI4OTE0LCAyODkyMSwgMjg5MjcsIDI4OTMzLCAyODk0MCwgMjg5NDYsIDI4OTUzLCAKLSAgICAyODk2MCwgMjg5NjcsIDI4OTc0LCAyODk4MSwgMjg5ODgsIDI4OTk0LCAyOTAwMSwgMjkwMDgsIDI5MDE0LCAyOTAyMSwgCi0gICAgMjkwMjgsIDI5MDM1LCAyOTA0MiwgMjkwNDksIDI5MDU2LCAyOTA2MywgMCwgMCwgMCwgMCwgMjkwNzAsIDI5MDc4LCAKLSAgICAyOTA4NSwgMjkwOTIsIDI5MDk4LCAyOTEwNSwgMjkxMTEsIDI5MTE4LCAyOTEyNCwgMjkxMzEsIDI5MTM4LCAyOTE0NSwgCi0gICAgMjkxNTIsIDI5MTU5LCAyOTE2NiwgMjkxNzMsIDI5MTgwLCAyOTE4NywgMjkxOTQsIDI5MjAxLCAyOTIwOCwgMjkyMTQsIAotICAgIDI5MjIxLCAyOTIyOCwgMjkyMzUsIDI5MjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTI0NywgMjkyNTMsIDI5MjU4LCAyOTI2MywgCi0gICAgMjkyNjgsIDI5MjczLCAyOTI3OCwgMjkyODMsIDI5Mjg4LCAyOTI5MywgMjkyOTgsIDAsIDAsIDAsIDI5MzA0LCAyOTMxMCwgCi0gICAgMjkzMTYsIDI5MzIwLCAyOTMyNiwgMjkzMzIsIDI5MzM4LCAyOTM0NCwgMjkzNTAsIDI5MzU2LCAyOTM2MiwgMjkzNjgsIAotICAgIDI5Mzc0LCAyOTM4MCwgMjkzODYsIDI5MzkyLCAyOTM5OCwgMjk0MDQsIDI5NDEwLCAyOTQxNCwgMjk0MjAsIDI5NDI2LCAKLSAgICAyOTQzMiwgMjk0MzgsIDI5NDQ0LCAyOTQ1MCwgMjk0NTYsIDI5NDYyLCAyOTQ2OCwgMjk0NzQsIDI5NDgwLCAyOTQ4NiwgCi0gICAgMjk0OTIsIDI5NDk4LCAyOTUwNCwgMjk1MDgsIDI5NTEzLCAyOTUxOCwgMjk1MjMsIDI5NTI3LCAyOTUzMiwgMjk1MzYsIAotICAgIDI5NTQxLCAyOTU0NiwgMjk1NTEsIDI5NTU1LCAyOTU2MCwgMjk1NjUsIDI5NTcwLCAyOTU3NSwgMjk1ODAsIDI5NTg0LCAKLSAgICAyOTU4OCwgMjk1OTMsIDI5NTk4LCAyOTYwMiwgMjk2MDYsIDI5NjEwLCAyOTYxNSwgMjk2MjAsIDI5NjI1LCAyOTYzMCwgMCwgCi0gICAgMCwgMjk2MzYsIDI5NjQwLCAyOTY0NywgMjk2NTIsIDI5NjU4LCAyOTY2NCwgMjk2NjksIDI5Njc1LCAyOTY4MSwgMjk2ODYsIAotICAgIDI5NjkyLCAyOTY5OCwgMjk3MDQsIDI5NzA5LCAyOTcxNSwgMjk3MjAsIDI5NzI1LCAyOTczMSwgMjk3MzYsIDI5NzQyLCAKLSAgICAyOTc0NywgMjk3NTMsIDI5NzU5LCAyOTc2NSwgMjk3NzEsIDI5Nzc1LCAyOTc4MCwgMjk3ODUsIDI5NzkxLCAyOTc5NywgCi0gICAgMjk4MDIsIDI5ODA4LCAyOTgxNCwgMjk4MTgsIDI5ODIzLCAyOTgyOCwgMjk4MzIsIDI5ODM3LCAyOTg0MiwgMjk4NDcsIAotICAgIDI5ODUyLCAyOTg1OCwgMjk4NjQsIDI5ODY5LCAyOTg3NCwgMjk4NzksIDI5ODgzLCAyOTg4OCwgMjk4OTIsIDI5ODk3LCAKLSAgICAyOTkwMSwgMjk5MDYsIDI5OTExLCAyOTkxNiwgMjk5MjEsIDI5OTI3LCAyOTkzMywgMjk5NDAsIDI5OTUwLCAyOTk1OSwgCi0gICAgMjk5NjYsIDI5OTcyLCAyOTk4MiwgMjk5ODcsIDI5OTkzLCAwLCAyOTk5OCwgMzAwMDMsIDMwMDA4LCAzMDAxNiwgMzAwMjIsIAotICAgIDMwMDMwLCAzMDAzNSwgMzAwNDEsIDMwMDQ3LCAzMDA1MywgMzAwNTgsIDMwMDY0LCAzMDA2OSwgMzAwNzYsIDMwMDgyLCAKLSAgICAzMDA4NywgMzAwOTMsIDMwMDk5LCAzMDEwNSwgMzAxMTIsIDMwMTE5LCAzMDEyNiwgMzAxMzEsIDMwMTM2LCAzMDE0MywgCi0gICAgMzAxNTAsIDMwMTU3LCAzMDE2NCwgMzAxNzEsIDAsIDAsIDMwMTc4LCAzMDE4NSwgMzAxOTIsIDMwMTk4LCAzMDIwNCwgCi0gICAgMzAyMTAsIDMwMjE2LCAzMDIyMiwgMzAyMjgsIDMwMjM0LCAzMDI0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAyNDYsIDMwMjUyLCAKLSAgICAzMDI1NywgMzAyNjIsIDMwMjY3LCAzMDI3MiwgMzAyNzcsIDMwMjgyLCAzMDI4NywgMzAyOTIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDMwMjk3LCAzMDMwMiwgMzAzMDcsIDMwMzEyLCAzMDMxNywgMzAzMjIsIDMwMzI3LCAzMDMzNiwgMzAzNDMsIDMwMzQ4LCAKLSAgICAzMDM1MywgMzAzNTgsIDMwMzYzLCAzMDM2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjYwODgsIDY2MDk3LCA2NjEwNiwgNjYxMTcsIDY2MTI0LCA2NjEyOSwgNjYxMzQsIDY2MTQxLCA2NjE0OCwgNjYxNTQsIAorICAgIDY2MTU5LCA2NjE2NCwgNjYxNjksIDY2MTc0LCA2NjE4MSwgNjYxODYsIDY2MTkxLCA2NjE5NiwgNjYyMDcsIDY2MjEyLCAKKyAgICA2NjIxNywgNjYyMjQsIDY2MjI5LCA2NjIzNiwgNjYyNDEsIDY2MjQ2LCA2NjI1MywgNjYyNjAsIDY2MjY3LCA2NjI3NiwgCisgICAgNjYyODUsIDY2MjkwLCA2NjI5NSwgNjYzMDAsIDY2MzA3LCA2NjMxMiwgNjYzMjIsIDY2MzI5LCA2NjMzNCwgNjYzMzksIAorICAgIDY2MzQ0LCA2NjM0OSwgNjYzNTQsIDY2MzU5LCA2NjM2OCwgNjYzNzUsIDY2MzgyLCA2NjM4NywgNjYzOTQsIDY2Mzk5LCAKKyAgICA2NjQwNiwgNjY0MTUsIDY2NDI2LCA2NjQzMSwgNjY0NDAsIDY2NDQ1LCA2NjQ1MiwgNjY0NjEsIDY2NDcwLCA2NjQ3NSwgCisgICAgNjY0ODAsIDY2NDg3LCA2NjQ5MywgNjY1MDAsIDY2NTA3LCA2NjUxMSwgNjY1MTUsIDY2NTE4LCA2NjUyMiwgNjY1MjYsIAorICAgIDY2NTMwLCA2NjUzNCwgNjY1MzgsIDY2NTQyLCA2NjU0NiwgNjY1NDksIDY2NTUzLCA2NjU1NywgNjY1NjEsIDY2NTY1LCAKKyAgICA2NjU2OSwgNjY1NzMsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg3LCA2NjU5MSwgNjY1OTUsIDY2NTk5LCA2NjYwMywgCisgICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAorICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKKyAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCisgICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAorICAgIDY2NzY2LCA2Njc3MCwgNjY3NzQsIDY2Nzc4LCA2Njc4MiwgNjY3ODYsIDY2NzkwLCA2Njc5NCwgNjY3OTgsIDY2ODAyLCAKKyAgICA2NjgwNiwgNjY4MTAsIDY2ODE0LCA2NjgxOCwgNjY4MjIsIDY2ODI2LCA2NjgzMCwgNjY4MzQsIDY2ODM4LCA2Njg0MiwgCisgICAgNjY4NDYsIDY2ODUwLCA2Njg1NCwgNjY4NTgsIDY2ODYyLCA2Njg2NiwgNjY4NzAsIDY2ODc0LCA2Njg3OCwgNjY4ODIsIAorICAgIDY2ODg2LCA2Njg5MCwgNjY4OTQsIDY2ODk4LCA2NjkwMiwgNjY5MDYsIDY2OTEwLCA2NjkxNCwgNjY5MTgsIDY2OTIyLCAKKyAgICA2NjkyNiwgNjY5MzAsIDY2OTM0LCA2NjkzOCwgNjY5NDIsIDY2OTQ2LCA2Njk1MCwgNjY5NTQsIDY2OTU4LCA2Njk2MiwgCisgICAgNjY5NjYsIDY2OTcwLCA2Njk3NCwgNjY5NzgsIDY2OTgyLCA2Njk4NiwgNjY5OTAsIDY2OTk0LCA2Njk5OCwgNjcwMDIsIAorICAgIDY3MDA2LCA2NzAxMCwgNjcwMTQsIDY3MDE4LCA2NzAyMiwgNjcwMjYsIDY3MDMwLCA2NzAzNCwgNjcwMzgsIDY3MDQyLCAKKyAgICA2NzA0NiwgNjcwNTAsIDY3MDU0LCA2NzA1OCwgNjcwNjIsIDY3MDY2LCA2NzA3MCwgNjcwNzQsIDY3MDc4LCA2NzA4MiwgCisgICAgNjcwODYsIDY3MDkwLCA2NzA5NCwgNjcwOTgsIDY3MTAyLCA2NzEwNiwgNjcxMTAsIDY3MTE0LCA2NzExOCwgNjcxMjIsIAorICAgIDY3MTI2LCA2NzEzMCwgNjcxMzQsIDY3MTM4LCA2NzE0MiwgNjcxNDYsIDY3MTUwLCA2NzE1NCwgNjcxNTgsIDY3MTYyLCAKKyAgICA2NzE2NiwgNjcxNzAsIDY3MTc0LCA2NzE3OCwgNjcxODIsIDY3MTg2LCA2NzE5MCwgNjcxOTQsIDY3MTk4LCA2NzIwMiwgCisgICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjM0LCA2NzIzNywgNjcyNDEsIAorICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKKyAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCisgICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAorICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKKyAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCisgICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAorICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKKyAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCisgICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAorICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKKyAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCisgICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAwLCA2NzcwNCwgNjc3MDgsIDY3NzEyLCA2NzcxNiwgNjc3MjAsIAorICAgIDY3NzI0LCA2NzcyOCwgNjc3MzIsIDY3NzM2LCA2Nzc0MCwgNjc3NDQsIDY3NzQ4LCA2Nzc1MiwgNjc3NTYsIDY3NzYwLCAKKyAgICA2Nzc2NCwgNjc3NjgsIDY3NzcyLCA2Nzc3NiwgNjc3ODAsIDY3Nzg0LCA2Nzc4OCwgNjc3OTIsIDY3Nzk2LCA2NzgwMCwgCisgICAgNjc4MDQsIDY3ODA4LCA2NzgxMiwgNjc4MTYsIDY3ODIwLCA2NzgyNCwgNjc4MjgsIDY3ODMyLCA2NzgzNiwgNjc4NDAsIAorICAgIDY3ODQ0LCA2Nzg0OCwgNjc4NTIsIDY3ODU2LCA2Nzg2MCwgNjc4NjQsIDY3ODY4LCA2Nzg3MiwgNjc4NzYsIDY3ODgwLCAKKyAgICA2Nzg4NCwgNjc4ODgsIDY3ODkyLCA2Nzg5NiwgNjc5MDAsIDY3OTA0LCA2NzkwOCwgNjc5MTIsIDY3OTE2LCA2NzkyMCwgCisgICAgNjc5MjQsIDY3OTI4LCA2NzkzMiwgNjc5MzYsIDY3OTQwLCA2Nzk0NCwgNjc5NDgsIDY3OTUyLCA2Nzk1NiwgNjc5NjAsIAorICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKKyAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCisgICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAorICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKKyAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCisgICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAorICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKKyAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCisgICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAorICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKKyAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCisgICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAorICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKKyAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCisgICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NSwgNjg1NTksIAorICAgIDY4NTYzLCA2ODU2NywgNjg1NzEsIDY4NTc1LCA2ODU3OSwgNjg1ODMsIDY4NTg3LCA2ODU5MSwgNjg1OTUsIDY4NTk5LCAKKyAgICA2ODYwMywgNjg2MDcsIDY4NjExLCA2ODYxNSwgNjg2MTksIDY4NjIzLCA2ODYyNywgNjg2MzEsIDY4NjM1LCA2ODYzOSwgCisgICAgNjg2NDMsIDY4NjQ3LCA2ODY1MSwgNjg2NTUsIDY4NjU5LCA2ODY2MywgNjg2NjcsIDY4NjcxLCA2ODY3NSwgNjg2NzksIAorICAgIDY4NjgzLCA2ODY4NywgNjg2OTEsIDY4Njk1LCA2ODY5OSwgNjg3MDMsIDY4NzA3LCA2ODcxMSwgNjg3MTUsIDY4NzE5LCAKKyAgICA2ODcyMywgNjg3MjcsIDY4NzMxLCA2ODczNSwgNjg3MzksIDY4NzQzLCA2ODc0NywgNjg3NTEsIDY4NzU1LCA2ODc1OSwgCisgICAgNjg3NjMsIDY4NzY3LCA2ODc3MSwgNjg3NzUsIDY4Nzc5LCA2ODc4MywgNjg3ODcsIDY4NzkxLCA2ODc5NSwgNjg3OTksIAorICAgIDY4ODAzLCA2ODgwNywgNjg4MTEsIDY4ODE1LCA2ODgxOSwgNjg4MjMsIDY4ODI3LCA2ODgzMSwgNjg4MzUsIDY4ODM5LCAKKyAgICA2ODg0MywgNjg4NDcsIDY4ODUxLCA2ODg1NSwgNjg4NTksIDY4ODYzLCA2ODg2NywgNjg4NzEsIDY4ODc1LCA2ODg3OSwgCisgICAgNjg4ODMsIDY4ODg3LCA2ODg5MSwgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDcsIDY4OTExLCA2ODkxNSwgNjg5MTksIAorICAgIDY4OTIzLCA2ODkyNywgNjg5MzEsIDY4OTM1LCA2ODkzOSwgNjg5NDMsIDY4OTQ3LCA2ODk1MSwgNjg5NTUsIDY4OTU5LCAKKyAgICA2ODk2MywgNjg5NjcsIDY4OTcxLCA2ODk3NSwgNjg5NzksIDY4OTgzLCA2ODk4NywgNjg5OTEsIDY4OTk1LCA2ODk5OSwgCisgICAgNjkwMDMsIDY5MDA3LCA2OTAxMCwgNjkwMTQsIDY5MDE4LCA2OTAyMiwgNjkwMjYsIDY5MDMwLCA2OTAzNCwgNjkwMzgsIAorICAgIDY5MDQyLCA2OTA0NiwgNjkwNTAsIDY5MDU0LCA2OTA1OCwgNjkwNjIsIDY5MDY2LCA2OTA3MCwgNjkwNzQsIDY5MDc4LCAKKyAgICA2OTA4MiwgNjkwODYsIDY5MDkwLCA2OTA5NCwgNjkwOTgsIDY5MTAyLCA2OTEwNiwgNjkxMTAsIDY5MTE0LCA2OTExOCwgCisgICAgNjkxMjIsIDY5MTI2LCA2OTEzMCwgNjkxMzQsIDY5MTM4LCA2OTE0MiwgNjkxNDYsIDY5MTUwLCA2OTE1NCwgNjkxNTgsIAorICAgIDY5MTYyLCA2OTE2NiwgNjkxNzAsIDY5MTc0LCA2OTE3OCwgNjkxODIsIDY5MTg2LCA2OTE5MCwgNjkxOTQsIDY5MTk4LCAKKyAgICA2OTIwMiwgNjkyMDYsIDY5MjEwLCA2OTIxNCwgNjkyMTgsIDY5MjIyLCA2OTIyNiwgNjkyMzAsIDY5MjM0LCA2OTIzOCwgCisgICAgNjkyNDIsIDY5MjQ2LCA2OTI1MCwgNjkyNTQsIDY5MjU4LCA2OTI2MiwgNjkyNjYsIDY5MjcwLCA2OTI3NCwgNjkyNzgsIAorICAgIDY5MjgyLCA2OTI4NiwgNjkyOTAsIDY5Mjk0LCA2OTI5OCwgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzE4LCAKKyAgICA2OTMyMiwgNjkzMjYsIDY5MzMwLCA2OTMzNCwgNjkzMzgsIDY5MzQyLCA2OTM0NiwgNjkzNTAsIDY5MzU0LCA2OTM1OCwgCisgICAgNjkzNjIsIDY5MzY2LCA2OTM3MCwgNjkzNzQsIDY5Mzc4LCA2OTM4MiwgNjkzODYsIDY5MzkwLCA2OTM5NCwgNjkzOTgsIAorICAgIDY5NDAyLCA2OTQwNiwgNjk0MTAsIDY5NDE0LCA2OTQxOCwgNjk0MjIsIDY5NDI2LCA2OTQzMCwgNjk0MzQsIDY5NDM4LCAKKyAgICA2OTQ0MiwgNjk0NDYsIDY5NDUwLCA2OTQ1NCwgNjk0NTgsIDY5NDYyLCA2OTQ2NiwgNjk0NzAsIDY5NDc0LCA2OTQ3OCwgCisgICAgNjk0ODIsIDY5NDg2LCA2OTQ5MCwgNjk0OTQsIDY5NDk4LCA2OTUwMiwgNjk1MDYsIDY5NTEwLCA2OTUxNCwgNjk1MTgsIAorICAgIDY5NTIyLCA2OTUyNiwgNjk1MzAsIDY5NTM0LCA2OTUzOCwgNjk1NDIsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIDY5NTU4LCAKKyAgICA2OTU2MiwgNjk1NjYsIDY5NTcwLCA2OTU3NCwgNjk1NzgsIDY5NTgyLCA2OTU4NiwgNjk1OTAsIDY5NTk0LCA2OTU5OCwgCisgICAgNjk2MDIsIDY5NjA2LCA2OTYxMCwgNjk2MTMsIDY5NjE3LCA2OTYyMSwgNjk2MjUsIDY5NjI5LCA2OTYzMywgNjk2MzcsIAorICAgIDY5NjQxLCA2OTY0NSwgNjk2NDksIDY5NjUzLCA2OTY1NywgNjk2NjEsIDY5NjY1LCA2OTY2OSwgNjk2NzMsIDY5Njc3LCAKKyAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5MywgNjk2OTcsIDY5NzAxLCA2OTcwNSwgNjk3MDksIDY5NzEzLCA2OTcxNywgCisgICAgNjk3MjEsIDY5NzI1LCA2OTcyOSwgNjk3MzMsIDY5NzM3LCA2OTc0MSwgNjk3NDUsIDY5NzQ5LCA2OTc1MywgNjk3NTcsIAorICAgIDY5NzYxLCA2OTc2NSwgNjk3NjksIDY5NzczLCA2OTc3NywgNjk3ODEsIDY5Nzg1LCA2OTc4OSwgNjk3OTMsIDY5Nzk3LCAKKyAgICA2OTgwMSwgNjk4MDUsIDY5ODA5LCA2OTgxMywgNjk4MTcsIDY5ODIxLCA2OTgyNSwgNjk4MjksIDY5ODMzLCA2OTgzNywgCisgICAgNjk4NDEsIDY5ODQ1LCA2OTg0OSwgNjk4NTMsIDY5ODU3LCA2OTg2MSwgNjk4NjUsIDY5ODY5LCA2OTg3MywgNjk4NzcsIAorICAgIDY5ODgxLCA2OTg4NSwgNjk4ODksIDY5ODkzLCA2OTg5NywgNjk5MDEsIDY5OTA1LCA2OTkwOSwgNjk5MTMsIDY5OTE3LCAKKyAgICA2OTkyMSwgNjk5MjUsIDY5OTI5LCA2OTkzMywgNjk5MzcsIDY5OTQxLCA2OTk0NSwgNjk5NDksIDY5OTUzLCA2OTk1NywgCisgICAgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIDY5OTg5LCA2OTk5MywgNjk5OTcsIAorICAgIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNywgNzAwMjEsIDcwMDI1LCA3MDAyOSwgNzAwMzMsIDcwMDM3LCAKKyAgICA3MDA0MSwgNzAwNDUsIDcwMDQ5LCA3MDA1MywgNzAwNTcsIDcwMDYxLCA3MDA2NSwgNzAwNjksIDcwMDczLCA3MDA3NywgCisgICAgNzAwODEsIDcwMDg1LCA3MDA4OSwgNzAwOTMsIDcwMDk3LCA3MDEwMSwgNzAxMDUsIDcwMTA5LCA3MDExMywgNzAxMTcsIAorICAgIDcwMTIxLCA3MDEyNSwgNzAxMjksIDcwMTMzLCA3MDEzNywgNzAxNDEsIDcwMTQ1LCA3MDE0OSwgNzAxNTMsIDcwMTU3LCAKKyAgICA3MDE2MSwgNzAxNjUsIDcwMTY5LCA3MDE3MywgNzAxNzcsIDcwMTgxLCA3MDE4NSwgNzAxODksIDcwMTkzLCA3MDE5NywgCisgICAgNzAyMDEsIDcwMjA1LCA3MDIwOSwgNzAyMTMsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCA3MDIzMywgNzAyMzcsIAorICAgIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgNzAyNzMsIDcwMjc3LCAKKyAgICA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIDcwMzEzLCA3MDMxNywgCisgICAgNzAzMjEsIDcwMzI1LCA3MDMyOSwgNzAzMzMsIDcwMzM3LCA3MDM0MSwgNzAzNDUsIDcwMzQ5LCA3MDM1MywgNzAzNTcsIAorICAgIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCAKKyAgICA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgCisgICAgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIAorICAgIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCAKKyAgICA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgCisgICAgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIAorICAgIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCAKKyAgICA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgCisgICAgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIAorICAgIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCAKKyAgICA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgCisgICAgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIAorICAgIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCAKKyAgICA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgCisgICAgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIAorICAgIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCAKKyAgICA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgCisgICAgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIAorICAgIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCAKKyAgICA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCAwLCAwLCAwLCAKKyAgICA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgCisgICAgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIAorICAgIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCAKKyAgICA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgCisgICAgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIAorICAgIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEzNzcsIAorICAgIDcxMzgyLCA3MTM4NiwgNzEzOTEsIDcxMzk2LCA3MTQwMSwgNzE0MDYsIDcxNDExLCA3MTQxNSwgNzE0MjAsIDcxNDI1LCAKKyAgICA3MTQzMCwgNzE0MzUsIDcxNDQwLCA3MTQ0NSwgNzE0NTAsIDcxNDU0LCA3MTQ1OSwgNzE0NjQsIDcxNDY5LCA3MTQ3NCwgCisgICAgNzE0NzksIDcxNDg0LCA3MTQ4OCwgNzE0OTMsIDcxNDk4LCA3MTUwMywgNzE1MDgsIDcxNTEzLCA3MTUxNywgNzE1MjIsIAorICAgIDcxNTI2LCA3MTUzMSwgNzE1MzUsIDcxNTQwLCA3MTU0NCwgNzE1NDgsIDcxNTUyLCA3MTU1NywgNzE1NjIsIDcxNTY3LCAKKyAgICA3MTU3NSwgNzE1ODMsIDcxNTkxLCA3MTU5OSwgNzE2MDcsIDcxNjE1LCA3MTYyMSwgNzE2MjksIDcxNjMzLCA3MTYzNywgCisgICAgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIAorICAgIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCAKKyAgICA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgCisgICAgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc2LCA3MTc4MCwgNzE3ODQsIDcxNzg4LCA3MTc5MiwgNzE3OTYsIAorICAgIDcxODAwLCA3MTgwNCwgNzE4MDgsIDcxODEyLCA3MTgxNiwgNzE4MjAsIDcxODI0LCA3MTgyOCwgNzE4MzIsIDcxODM2LCAKKyAgICA3MTg0MCwgNzE4NDQsIDcxODQ4LCA3MTg1MiwgNzE4NTYsIDcxODYwLCA3MTg2NCwgNzE4NjgsIDcxODcyLCA3MTg3NiwgCisgICAgNzE4ODAsIDcxODg0LCA3MTg4OCwgNzE4OTIsIDcxODk2LCA3MTkwMCwgNzE5MDQsIDcxOTA4LCA3MTkxMiwgNzE5MTYsIAorICAgIDcxOTIwLCA3MTkyMywgNzE5MjcsIDcxOTMxLCA3MTkzNCwgNzE5MzgsIDcxOTQyLCA3MTk0NiwgNzE5NDksIDcxOTUzLCAKKyAgICA3MTk1NywgNzE5NjEsIDcxOTY1LCA3MTk2OSwgNzE5NzMsIDcxOTc3LCA3MTk4MSwgNzE5ODUsIDcxOTg5LCA3MTk5MywgCisgICAgNzE5OTcsIDcyMDAxLCA3MjAwNSwgNzIwMDksIDcyMDEzLCA3MjAxNywgNzIwMjEsIDcyMDI1LCA3MjAyOSwgNzIwMzMsIAorICAgIDcyMDM3LCA3MjA0MSwgNzIwNDUsIDcyMDQ4LCA3MjA1MSwgNzIwNTUsIDcyMDU5LCA3MjA2MywgNzIwNjYsIDcyMDcwLCAKKyAgICA3MjA3NCwgNzIwNzgsIDcyMDgyLCA3MjA4NiwgNzIwOTAsIDcyMDk0LCA3MjA5OCwgNzIxMDIsIDcyMTA2LCA3MjExMCwgCisgICAgNzIxMTQsIDcyMTE4LCA3MjEyMiwgNzIxMjYsIDcyMTMwLCA3MjEzNCwgNzIxMzgsIDcyMTQyLCA3MjE0NiwgNzIxNTAsIAorICAgIDcyMTU0LCA3MjE1OCwgNzIxNjIsIDcyMTY2LCA3MjE3MCwgNzIxNzQsIDcyMTc4LCA3MjE4MiwgNzIxODYsIDcyMTkwLCAKKyAgICA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNiwgNzIyMTAsIDcyMjE0LCA3MjIxOCwgNzIyMjEsIDcyMjI1LCA3MjIyOSwgCisgICAgNzIyMzMsIDcyMjM3LCA3MjI0MSwgNzIyNDUsIDcyMjQ5LCA3MjI1MywgNzIyNTcsIDcyMjYxLCA3MjI2NSwgNzIyNjksIAorICAgIDcyMjczLCA3MjI3NywgNzIyODEsIDcyMjg1LCA3MjI4OSwgNzIyOTMsIDcyMjk3LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCAKKyAgICA3MjMxMywgNzIzMTcsIDcyMzIxLCA3MjMyNSwgNzIzMjksIDcyMzMzLCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OSwgCisgICAgNzIzNTMsIDcyMzU3LCA3MjM2MSwgNzIzNjUsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIAorICAgIDcyMzkyLCA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjQsIDcyNDI4LCAKKyAgICA3MjQzMiwgNzI0MzUsIDcyNDM5LCA3MjQ0MywgNzI0NDcsIDcyNDUxLCA3MjQ1NSwgNzI0NTksIDcyNDYzLCA3MjQ2NywgCisgICAgNzI0NzEsIDcyNDc1LCA3MjQ3OSwgNzI0ODMsIDcyNDg3LCA3MjQ5MSwgNzI0OTUsIDcyNDk5LCA3MjUwMywgNzI1MDcsIAorICAgIDcyNTExLCA3MjUxNSwgNzI1MTksIDcyNTIyLCA3MjUyNiwgNzI1MzAsIDcyNTM0LCA3MjUzOCwgNzI1NDIsIDcyNTQ2LCAKKyAgICA3MjU1MCwgNzI1NTQsIDcyNTU4LCA3MjU2MiwgNzI1NjYsIDcyNTcwLCA3MjU3NCwgNzI1NzgsIDcyNTgyLCA3MjU4NiwgCisgICAgNzI1OTAsIDcyNTk0LCA3MjU5OCwgNzI2MDIsIDcyNjA2LCA3MjYxMCwgNzI2MTQsIDcyNjE4LCA3MjYyMiwgNzI2MjYsIAorICAgIDcyNjMwLCA3MjYzNCwgNzI2MzgsIDcyNjQyLCA3MjY0NiwgNzI2NTAsIDcyNjU0LCA3MjY1OCwgNzI2NjIsIDcyNjY2LCAKKyAgICA3MjY3MCwgNzI2NzQsIDcyNjc4LCA3MjY4MiwgNzI2ODYsIDcyNjkwLCA3MjY5NCwgNzI2OTcsIDcyNzAyLCA3MjcwNiwgCisgICAgNzI3MTIsIDcyNzE3LCA3MjcyMywgNzI3MjcsIDcyNzMxLCA3MjczNSwgNzI3MzksIDcyNzQzLCA3Mjc0NywgNzI3NTEsIAorICAgIDcyNzU1LCA3Mjc1OSwgNzI3NjMsIDcyNzY3LCA3Mjc3MSwgNzI3NzUsIDcyNzc5LCA3Mjc4MiwgNzI3ODUsIDcyNzg4LCAKKyAgICA3Mjc5MSwgNzI3OTQsIDcyNzk3LCA3MjgwMSwgNzI4MDQsIDcyODA4LCA3MjgxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4MTksIDcyODI0LCA3MjgyOSwgNzI4MzQsIDcyODM5LCAKKyAgICA3Mjg0NiwgNzI4NTMsIDcyODU4LCA3Mjg2MywgNzI4NjgsIDcyODczLCA3Mjg4MCwgNzI4ODcsIDcyODk0LCA3MjkwMSwgCisgICAgNzI5MDgsIDcyOTE1LCA3MjkyNSwgNzI5MzUsIDcyOTQyLCA3Mjk0OSwgNzI5NTYsIDcyOTYzLCA3Mjk2OSwgNzI5NzUsIAorICAgIDcyOTg0LCA3Mjk5MywgNzMwMDAsIDczMDA3LCA3MzAxOCwgNzMwMjksIDczMDM0LCA3MzAzOSwgNzMwNDYsIDczMDUzLCAKKyAgICA3MzA2MCwgNzMwNjcsIDczMDc0LCA3MzA4MSwgNzMwODgsIDczMDk1LCA3MzEwMSwgNzMxMDcsIDczMTEzLCA3MzExOSwgCisgICAgNzMxMjYsIDczMTMzLCA3MzEzOCwgNzMxNDIsIDczMTQ5LCA3MzE1NiwgNzMxNjMsIDczMTY3LCA3MzE3NCwgNzMxNzgsIAorICAgIDczMTgzLCA3MzE4NywgNzMxOTMsIDczMTk4LCA3MzIwNCwgNzMyMDksIDczMjEzLCA3MzIxNywgNzMyMjAsIDczMjIzLCAKKyAgICA3MzIyOCwgNzMyMzMsIDczMjM4LCA3MzI0MywgNzMyNDgsIDczMjUzLCA3MzI1OCwgNzMyNjMsIDczMjY4LCA3MzI3MywgCisgICAgNzMyODEsIDczMjg5LCA3MzI5NCwgNzMyOTksIDczMzA0LCA3MzMwOSwgNzMzMTQsIDczMzE5LCA3MzMyNCwgNzMzMjksIAorICAgIDczMzM0LCA3MzMzOSwgNzMzNDQsIDczMzQ5LCA3MzM1NCwgNzMzNTksIDczMzY1LCA3MzM3MSwgNzMzNzcsIDczMzgzLCAKKyAgICA3MzM4OCwgNzMzOTQsIDczMzk3LCA3MzQwMCwgNzM0MDMsIDczNDA3LCA3MzQxMSwgNzM0MTUsIDczNDE5LCA3MzQyMiwgCisgICAgNzM0MjYsIDczNDI5LCA3MzQzMywgNzM0MzYsIDczNDQwLCA3MzQ0NCwgNzM0NDgsIDczNDUyLCA3MzQ1NiwgNzM0NjAsIAorICAgIDczNDY0LCA3MzQ2OCwgNzM0NzIsIDczNDc2LCA3MzQ4MCwgNzM0ODQsIDczNDg4LCA3MzQ5MiwgNzM0OTYsIDczNTAwLCAKKyAgICA3MzUwNCwgNzM1MDgsIDczNTEyLCA3MzUxNiwgNzM1MjAsIDczNTI0LCA3MzUyNywgNzM1MzEsIDczNTM1LCA3MzUzOSwgCisgICAgNzM1NDMsIDczNTQ3LCA3MzU1MSwgNzM1NTUsIDczNTU5LCA3MzU2MywgNzM1NjcsIDczNTcxLCA3MzU3NSwgNzM1NzksIAorICAgIDczNTgzLCA3MzU4NywgNzM1OTEsIDczNTk1LCA3MzU5OSwgNzM2MDMsIDczNjA3LCA3MzYxMSwgNzM2MTUsIDczNjE5LCAKKyAgICA3MzYyMywgNzM2MjcsIDczNjMxLCA3MzYzNSwgNzM2MzksIDczNjQzLCA3MzY0NywgNzM2NTEsIDczNjU1LCA3MzY1OCwgCisgICAgNzM2NjIsIDczNjY2LCA3MzY3MCwgNzM2NzQsIDczNjc4LCA3MzY4MiwgNzM2ODYsIDczNjkwLCA3MzY5NCwgNzM2OTgsIAorICAgIDczNzAyLCA3MzcwNiwgNzM3MTEsIDczNzE2LCA3MzcxOSwgNzM3MjQsIDczNzI3LCA3MzczMCwgNzM3MzMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDczNzM3LCA3Mzc0NiwgNzM3NTUsIDczNzY0LCA3Mzc3MywgNzM3ODIsIDczNzkxLCA3MzgwMCwgCisgICAgNzM4MDksIDczODE3LCA3MzgyNCwgNzM4MzIsIDczODM5LCA3Mzg0NywgNzM4NTcsIDczODY2LCA3Mzg3NiwgNzM4ODUsIAorICAgIDczODk1LCA3MzkwMywgNzM5MTAsIDczOTE4LCA3MzkyNSwgNzM5MzMsIDczOTM4LCA3Mzk0MywgNzM5NDksIDczOTU4LCAKKyAgICA3Mzk2NCwgNzM5NzAsIDczOTc3LCA3Mzk4NiwgNzM5OTQsIDc0MDAyLCA3NDAxMCwgNzQwMTcsIDc0MDI0LCA3NDAzMSwgCisgICAgNzQwMzgsIDc0MDQzLCA3NDA0OCwgNzQwNTMsIDc0MDU4LCA3NDA2MywgNzQwNjgsIDc0MDczLCA3NDA3OCwgNzQwODYsIAorICAgIDc0MDk0LCA3NDEwMCwgNzQxMDUsIDc0MTEwLCA3NDExNSwgNzQxMjAsIDc0MTI1LCA3NDEzMCwgNzQxMzUsIDc0MTQwLCAKKyAgICA3NDE0NSwgNzQxNTQsIDc0MTYzLCA3NDE2OCwgNzQxNzMsIDc0MTgzLCA3NDE5MywgNzQyMDAsIDc0MjA3LCA3NDIxNiwgCisgICAgNzQyMjUsIDc0MjM3LCA3NDI0OSwgNzQyNTUsIDc0MjYxLCA3NDI2OSwgNzQyNzcsIDc0Mjg3LCA3NDI5NywgNzQzMDQsIAorICAgIDc0MzExLCA3NDMxNiwgNzQzMjEsIDc0MzMzLCA3NDM0NSwgNzQzNTMsIDc0MzYxLCA3NDM3MSwgNzQzODEsIDc0MzkzLCAKKyAgICA3NDQwNSwgNzQ0MTQsIDc0NDIzLCA3NDQzMCwgNzQ0MzcsIDc0NDQ0LCA3NDQ1MSwgNzQ0NjAsIDc0NDY5LCA3NDQ3NCwgCisgICAgNzQ0NzksIDc0NDg2LCA3NDQ5MywgNzQ1MDAsIDc0NTA3LCA3NDUxOSwgNzQ1MzEsIDc0NTM2LCA3NDU0MSwgNzQ1NDYsIAorICAgIDc0NTUxLCA3NDU1NiwgNzQ1NjEsIDc0NTY2LCA3NDU3MSwgNzQ1NzUsIDc0NTgwLCA3NDU4NSwgNzQ1OTAsIDc0NTk1LCAKKyAgICA3NDYwMCwgNzQ2MDYsIDc0NjExLCA3NDYxNiwgNzQ2MjMsIDc0NjMwLCA3NDYzNywgNzQ2NDQsIDc0NjUxLCA3NDY2MCwgCisgICAgNzQ2NjksIDc0Njc1LCA3NDY4MSwgNzQ2ODcsIDc0NjkzLCA3NDY5OSwgNzQ3MDUsIDc0NzEyLCA3NDcxOSwgNzQ3MjYsIAorICAgIDc0NzMwLCA3NDczNywgNzQ3NDIsIDc0NzQ3LCA3NDc1NCwgNzQ3NjcsIDc0NzczLCA3NDc4MSwgNzQ3ODksIDc0Nzk2LCAKKyAgICA3NDgwMywgNzQ4MTIsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTYsIDc0ODYzLCA3NDg3MCwgCisgICAgNzQ4NzcsIDc0ODg0LCA3NDg5MSwgNzQ5MDAsIDc0OTA5LCA3NDkxOCwgNzQ5MjcsIDc0OTM2LCA3NDk0NSwgNzQ5NTQsIAorICAgIDc0OTYzLCA3NDk3MiwgNzQ5ODEsIDc0OTg4LCA3NDk5NSwgNzUwMDEsIDAsIDAsIDc1MDA5LCA3NTAxNiwgNzUwMjMsIAorICAgIDc1MDMxLCA3NTAzNiwgNzUwNDEsIDc1MDQ2LCA3NTA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzNzMsIDMwMzc5LCAKLSAgICAzMDM4NSwgMzAzODksIDMwMzkzLCAzMDM5NywgMzA0MDEsIDMwNDA3LCAzMDQxMSwgMzA0MTcsIDMwNDIxLCAzMDQyNywgCi0gICAgMzA0MzMsIDMwNDQxLCAzMDQ0NywgMzA0NTUsIDMwNDU5LCAzMDQ2MywgMzA0NjcsIDMwNDczLCAzMDQ3NiwgMzA0ODIsIAotICAgIDMwNDg2LCAzMDQ5MiwgMzA0OTYsIDMwNTAwLCAzMDUwNiwgMzA1MTAsIDMwNTE2LCAzMDUyMCwgMzA1MjYsIDMwNTM0LCAKLSAgICAzMDU0MiwgMzA1NTAsIDMwNTU2LCAzMDU2MCwgMzA1NjYsIDMwNTcwLCAzMDU3NiwgMzA1NzksIDMwNTgyLCAzMDU4OCwgCi0gICAgMzA1OTIsIDMwNTk4LCAzMDYwMSwgMzA2MDQsIDMwNjA3LCAzMDYxMSwgMzA2MTUsIDMwNjIxLCAzMDYyNywgMzA2MzAsIAotICAgIDMwNjMzLCAzMDYzNywgMzA2NDIsIDMwNjQ3LCAzMDY1NCwgMzA2NTksIDMwNjY2LCAzMDY3MywgMzA2ODIsIDMwNjg5LCAKLSAgICAzMDY5OCwgMzA3MDMsIDMwNzEwLCAzMDcxNywgMzA3MjYsIDMwNzMxLCAzMDczOCwgMzA3NDMsIDMwNzQ5LCAzMDc1NSwgCi0gICAgMzA3NjEsIDMwNzY3LCAzMDc3MywgMzA3NzksIDAsIDAsIDAsIDAsIDMwNzg1LCAzMDc4OSwgMzA3OTIsIDMwNzk1LCAKLSAgICAzMDc5OCwgMzA4MDEsIDMwODA0LCAzMDgwNywgMzA4MTAsIDMwODEzLCAzMDgxNiwgMzA4MTksIDMwODIyLCAzMDgyNSwgCi0gICAgMzA4MzAsIDMwODM1LCAzMDg0MCwgMzA4NDMsIDMwODQ4LCAzMDg1MywgMzA4NTgsIDMwODYzLCAzMDg3MCwgMzA4NzUsIAotICAgIDMwODgwLCAzMDg4NSwgMzA4OTAsIDMwODk3LCAzMDkwMywgMzA5MDksIDMwOTE1LCAzMDkyMSwgMzA5MjcsIDMwOTM2LCAKLSAgICAzMDk0NSwgMzA5NTEsIDMwOTU3LCAzMDk2NSwgMzA5NzMsIDMwOTgyLCAzMDk5MSwgMzA5OTksIDMxMDA3LCAzMTAxNiwgCi0gICAgMzEwMjUsIDAsIDAsIDAsIDMxMDMzLCAzMTAzNywgMzEwNDEsIDMxMDQ1LCAzMTA0OCwgMzEwNTEsIDMxMDU0LCAzMTA1OCwgCi0gICAgMzEwNjEsIDMxMDY0LCAzMTA2OCwgMzEwNzEsIDMxMDc1LCAzMTA3OSwgMzEwODMsIDMxMDg3LCAzMTA5MSwgMzEwOTUsIAotICAgIDMxMDk5LCAzMTEwMywgMzExMDcsIDMxMTEwLCAzMTExMywgMzExMTcsIDMxMTIxLCAzMTEyNSwgMzExMjgsIDMxMTMxLCAKLSAgICAzMTEzNCwgMzExMzgsIDMxMTQyLCAzMTE0NSwgMzExNDksIDMxMTUyLCAzMTE1NywgMzExNjIsIDMxMTY3LCAzMTE3MiwgCi0gICAgMzExNzcsIDMxMTgyLCAzMTE4NywgMzExOTIsIDMxMTk3LCAzMTIwMSwgMzEyMDUsIDMxMjExLCAzMTIxOCwgMzEyMjIsIAotICAgIDMxMjI2LCAzMTIzMCwgMzEyMzMsIDMxMjM2LCAzMTIzOSwgMzEyNDIsIDMxMjQ1LCAzMTI0OCwgMzEyNTEsIDMxMjU0LCAKLSAgICAzMTI1NywgMzEyNjAsIDMxMjY0LCAzMTI2OCwgMzEyNzIsIDMxMjc3LCAzMTI4MSwgMzEyODUsIDMxMjkxLCAzMTI5NSwgCi0gICAgMzEzMDEsIDMxMzA3LCAzMTMxMiwgMzEzMTksIDMxMzIzLCAzMTMyOSwgMzEzMzMsIDMxMzM5LCAzMTM0NCwgMzEzNTEsIAotICAgIDMxMzU4LCAzMTM2MywgMzEzNzAsIDMxMzc1LCAzMTM4MCwgMzEzODQsIDMxMzkwLCAzMTM5NCwgMzE0MDAsIDMxNDA3LCAKLSAgICAzMTQxNCwgMzE0MTgsIDMxNDI0LCAzMTQzMCwgMzE0MzQsIDMxNDQwLCAzMTQ0NSwgMzE0NTAsIDMxNDU3LCAzMTQ2MiwgCi0gICAgMzE0NjcsIDMxNDcyLCAzMTQ3NywgMzE0ODEsIDMxNDg1LCAzMTQ5MCwgMzE0OTUsIDMxNTAyLCAzMTUwOCwgMzE1MTMsIAotICAgIDMxNTIwLCAzMTUyNSwgMzE1MzIsIDMxNTM3LCAzMTU0NiwgMzE1NTIsIDMxNTU4LCAzMTU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzE1NjYsIDMxNTc1LCAzMTU4MiwgMzE1ODksIDMxNTk2LCAzMTU5OSwgMzE2MDMsIDMxNjA3LCAzMTYxMSwgCi0gICAgMzE2MTUsIDMxNjE5LCAzMTYyMywgMzE2MjcsIDMxNjMxLCAzMTYzNSwgMzE2MzksIDMxNjQzLCAzMTY0NywgMzE2NTAsIAotICAgIDMxNjUzLCAzMTY1NywgMzE2NjEsIDMxNjY1LCAzMTY2OSwgMzE2NzMsIDMxNjc3LCAzMTY4MCwgMzE2ODQsIDMxNjg4LCAKLSAgICAzMTY5MiwgMzE2OTYsIDMxNjk5LCAzMTcwMiwgMzE3MDYsIDMxNzA5LCAzMTcxMywgMzE3MTcsIDMxNzIwLCAzMTcyNCwgCi0gICAgMzE3MjgsIDMxNzMxLCAzMTczNiwgMzE3NDEsIDMxNzQ2LCAzMTc1MCwgMzE3NTQsIDMxNzU5LCAzMTc2MywgMzE3NjgsIAotICAgIDMxNzcyLCAzMTc3NywgMzE3ODEsIDMxNzg1LCAzMTc5MCwgMzE3OTUsIDMxNzk5LCAzMTgwNCwgMzE4MDksIDMxODE0LCAKLSAgICAzMTgxOCwgMCwgMCwgMCwgMzE4MjIsIDMxODI3LCAzMTgzNiwgMzE4NDEsIDMxODQ4LCAzMTg1MywgMzE4NTcsIDMxODYwLCAKLSAgICAzMTg2MywgMzE4NjYsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAzMTg4MSwgMCwgMCwgMCwgMzE4ODQsIDMxODg4LCAKLSAgICAzMTg5MiwgMzE4OTYsIDMxOTAzLCAzMTkwOSwgMzE5MTUsIDMxOTIxLCAzMTkyNywgMzE5MzMsIDMxOTM5LCAzMTk0NSwgCi0gICAgMzE5NTEsIDMxOTU3LCAzMTk2NCwgMzE5NzEsIDMxOTc4LCAzMTk4NSwgMzE5OTIsIDMxOTk5LCAzMjAwNiwgMzIwMTMsIAotICAgIDMyMDIwLCAzMjAyNywgMzIwMzQsIDMyMDQxLCAzMjA0OCwgMzIwNTUsIDMyMDYyLCAzMjA2OSwgMzIwNzYsIDMyMDgzLCAKLSAgICAzMjA5MCwgMzIwOTcsIDMyMTA0LCAzMjExMSwgMzIxMTgsIDMyMTI1LCAzMjEzMiwgMzIxMzksIDMyMTQ2LCAzMjE1MywgCi0gICAgMzIxNjAsIDMyMTY3LCAzMjE3NSwgMzIxODMsIDMyMTkxLCAzMjE5NywgMzIyMDMsIDMyMjA5LCAzMjIxNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyMjYsIDMyMjMzLCAzMjI0MCwgMzIyNDcsIDMyMjU0LCAKLSAgICAzMjI2MywgMzIyNzIsIDMyMjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjI5MCwgMzIyOTUsIDMyMzAwLCAzMjMwNSwgCi0gICAgMzIzMTAsIDMyMzE5LCAzMjMzMCwgMzIzMzksIDMyMzUwLCAzMjM1NiwgMzIzNjksIDMyMzc1LCAzMjM4MiwgMzIzODksIAotICAgIDMyMzk0LCAzMjQwMCwgMzI0MDYsIDMyNDE3LCAzMjQyNiwgMzI0MzMsIDMyNDQwLCAzMjQ0OSwgMzI0NTYsIDMyNDY1LCAKLSAgICAzMjQ3NSwgMzI0ODUsIDMyNDkyLCAzMjQ5OSwgMzI1MDYsIDMyNTE2LCAzMjUyMSwgMzI1MjksIDMyNTM1LCAzMjU0MywgCi0gICAgMzI1NTIsIDMyNTU3LCAzMjU2NCwgMzI1NzAsIDMyNTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjU4MCwgCi0gICAgMzI1ODUsIDMyNTkxLCAzMjU5OCwgMzI2MDYsIDMyNjEyLCAzMjYxOCwgMzI2MjQsIDMyNjI5LCAzMjYzNiwgMzI2NDIsIAotICAgIDMyNjQ4LCAzMjY1NCwgMzI2NjIsIDMyNjY3LCAzMjY3NSwgMzI2ODAsIDMyNjg2LCAzMjY5MiwgMzI2OTksIDMyNzA3LCAKLSAgICAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczNCwgMzI3NDAsIDMyNzQ3LCAzMjc1NCwgMzI3NjAsIDMyNzY1LCAzMjc3MSwgCi0gICAgMzI3NzksIDMyNzg3LCAzMjc5MywgMzI3OTksIDMyODA1LCAzMjgxMSwgMzI4MTksIDMyODIzLCAzMjgyOSwgMzI4MzUsIAotICAgIDMyODQxLCAzMjg0NywgMzI4NTMsIDMyODU5LCAzMjg2MywgMzI4NjgsIDMyODczLCAzMjg4MCwgMzI4ODUsIDMyODg5LCAKLSAgICAzMjg5NSwgMzI5MDAsIDMyOTA1LCAzMjkwOSwgMzI5MTQsIDMyOTE5LCAzMjkyMywgMzI5MjcsIDMyOTMyLCAzMjkzOSwgCi0gICAgMzI5NDMsIDMyOTQ4LCAzMjk1MywgMzI5NTcsIDMyOTYyLCAzMjk2NiwgMzI5NzEsIDMyOTc1LCAzMjk4MSwgMzI5ODYsIAotICAgIDMyOTkzLCAzMjk5OCwgMzMwMDMsIDMzMDA3LCAzMzAxMiwgMzMwMTcsIDMzMDI0LCAzMzAyOSwgMzMwMzUsIDMzMDQwLCAKLSAgICAzMzA0NCwgMzMwNDksIDMzMDUzLCAzMzA1OCwgMzMwNjUsIDMzMDcyLCAzMzA3NywgMzMwODIsIDMzMDg2LCAzMzA5MiwgCi0gICAgMzMwOTgsIDMzMTAzLCAzMzEwOCwgMzMxMTMsIDMzMTE5LCAzMzEyNCwgMzMxMzAsIDMzMTM1LCAzMzE0MSwgMzMxNDcsIAotICAgIDMzMTUzLCAzMzE2MCwgMzMxNjcsIDMzMTc0LCAzMzE4MSwgMzMxODgsIDMzMTk1LCAzMzIwMCwgMzMyMDgsIDMzMjE3LCAKLSAgICAzMzIyNiwgMzMyMzUsIDMzMjQ0LCAzMzI1MywgMzMyNjIsIDMzMjc0LCAzMzI4MywgMzMyOTIsIDMzMzAxLCAzMzMwOCwgCi0gICAgMzMzMTMsIDMzMzIwLCAzMzMyOCwgMzMzMzYsIDMzMzQzLCAzMzM1MCwgMzMzNTcsIDMzMzY0LCAzMzM3MiwgMzMzODEsIAotICAgIDMzMzkwLCAzMzM5OSwgMzM0MDgsIDMzNDE3LCAzMzQyNiwgMzM0MzUsIDMzNDQ0LCAzMzQ1MywgMzM0NjIsIDMzNDcxLCAKLSAgICAzMzQ4MCwgMzM0ODksIDMzNDk4LCAzMzUwNiwgMzM1MTUsIDMzNTI2LCAzMzUzNCwgMzM1NDMsIDMzNTU0LCAzMzU2MywgCi0gICAgMzM1NzIsIDMzNTgxLCAzMzU5MCwgMzM1OTgsIDMzNjA3LCAzMzYxNCwgMzM2MTksIDMzNjI3LCAzMzYzMiwgMzM2MzksIAotICAgIDMzNjQ0LCAzMzY1MywgMzM2NTksIDMzNjY2LCAzMzY3MywgMzM2NzgsIDMzNjgzLCAzMzY5MSwgMzM2OTksIDMzNzA4LCAKLSAgICAzMzcxNywgMzM3MjIsIDMzNzI5LCAzMzc0MCwgMzM3NDgsIDMzNzU3LCAzMzc2MywgMzM3NjksIDMzNzc0LCAzMzc4MSwgCi0gICAgMzM3ODYsIDMzNzk1LCAzMzgwMCwgMzM4MDUsIDMzODEwLCAzMzgxNywgMzM4MjQsIDMzODI5LCAzMzgzOCwgMzM4NDYsIAotICAgIDMzODUxLCAzMzg1NiwgMzM4NjMsIDMzODcwLCAzMzg3NCwgMzM4NzgsIDMzODgxLCAzMzg4NCwgMzM4ODcsIDMzODkwLCAKLSAgICAzMzg5MywgMzM4OTYsIDMzOTAzLCAzMzkwNiwgMzM5MDksIDMzOTE0LCAzMzkxOCwgMzM5MjIsIDMzOTI2LCAzMzkzMCwgCi0gICAgMzM5MzQsIDMzOTQzLCAzMzk0OSwgMzM5NTUsIDMzOTYxLCAzMzk2OSwgMzM5NzcsIDMzOTgzLCAzMzk4OSwgMzM5OTYsIAotICAgIDM0MDAyLCAzNDAwNywgMzQwMTMsIDM0MDE5LCAzNDAyNSwgMzQwMzIsIDM0MDM4LCAzNDA0NiwgMzQwNTIsIDM0MDU5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA2NSwgMzQwNzIsIAotICAgIDM0MDc5LCAzNDA4NCwgMzQwOTMsIDM0MTAxLCAzNDEwOSwgMzQxMTYsIDM0MTIzLCAzNDEzMCwgMzQxMzcsIDM0MTQ1LCAKLSAgICAzNDE1MywgMzQxNjMsIDM0MTczLCAzNDE4MSwgMzQxODksIDM0MTk3LCAzNDIwNSwgMzQyMTQsIDM0MjIzLCAzNDIzMSwgCi0gICAgMzQyMzksIDM0MjQ4LCAzNDI1NywgMzQyNjcsIDM0Mjc3LCAzNDI4NiwgMzQyOTUsIDM0MzAzLCAzNDMxMSwgMzQzMTksIAotICAgIDM0MzI3LCAzNDMzNywgMzQzNDcsIDM0MzU1LCAzNDM2MywgMzQzNzEsIDM0Mzc5LCAzNDM4NywgMzQzOTUsIDM0NDAzLCAKLSAgICAzNDQxMSwgMzQ0MTksIDM0NDI3LCAzNDQzNSwgMzQ0NDMsIDM0NDUyLCAzNDQ2MSwgMzQ0NzAsIDM0NDc5LCAzNDQ4OSwgCi0gICAgMzQ0OTksIDM0NTA2LCAzNDUxMywgMzQ1MjEsIDM0NTI5LCAzNDUzOCwgMzQ1NDcsIDM0NTU1LCAzNDU2MywgMzQ1NzUsIAotICAgIDM0NTg3LCAzNDU5NiwgMzQ2MDUsIDM0NjE0LCAzNDYyMywgMzQ2MzAsIDM0NjM3LCAzNDY0NSwgMzQ2NTMsIDM0NjYxLCAKLSAgICAzNDY2OSwgMzQ2NzcsIDM0Njg1LCAzNDY5MywgMzQ3MDEsIDM0NzEwLCAzNDcxOSwgMzQ3MjgsIDM0NzM3LCAzNDc0NiwgCi0gICAgMzQ3NTUsIDM0NzY1LCAzNDc3NSwgMzQ3ODUsIDM0Nzk1LCAzNDgwNCwgMzQ4MTMsIDM0ODIwLCAzNDgyNywgMzQ4MzUsIAotICAgIDM0ODQzLCAzNDg1MSwgMzQ4NTksIDM0ODY3LCAzNDg3NSwgMzQ4ODcsIDM0ODk5LCAzNDkwOCwgMzQ5MTcsIDM0OTI1LCAKLSAgICAzNDkzMywgMzQ5NDEsIDM0OTQ5LCAzNDk2MCwgMzQ5NzEsIDM0OTgyLCAzNDk5MywgMzUwMDUsIDM1MDE3LCAzNTAyNSwgCi0gICAgMzUwMzMsIDM1MDQxLCAzNTA0OSwgMzUwNTgsIDM1MDY3LCAzNTA3NiwgMzUwODUsIDM1MDkzLCAzNTEwMSwgMzUxMDksIAotICAgIDM1MTE3LCAzNTEyNSwgMzUxMzMsIDM1MTQyLCAzNTE1MSwgMzUxNjEsIDM1MTcxLCAzNTE3OCwgMzUxODUsIDM1MTkzLCAKLSAgICAzNTIwMSwgMzUyMDksIDM1MjE3LCAzNTIyNCwgMzUyMzEsIDM1MjM5LCAzNTI0NywgMzUyNTUsIDM1MjYzLCAzNTI3MSwgCi0gICAgMzUyNzksIDM1Mjg3LCAzNTI5NSwgMzUzMDMsIDM1MzExLCAzNTMxOSwgMzUzMjcsIDM1MzM1LCAzNTM0MywgMzUzNTEsIAotICAgIDM1MzU5LCAzNTM2OCwgMzUzNzcsIDM1Mzg2LCAzNTM5NCwgMzU0MDMsIDM1NDEyLCAzNTQyMSwgMzU0MzAsIDM1NDQwLCAKLSAgICAzNTQ0OSwgMzU0NTYsIDM1NDYxLCAzNTQ2OCwgMzU0NzUsIDM1NDgzLCAzNTQ5MSwgMzU1MDAsIDM1NTA5LCAzNTUxOSwgCi0gICAgMzU1MjksIDM1NTQwLCAzNTU1MSwgMzU1NjAsIDM1NTY5LCAzNTU3OSwgMzU1ODksIDM1NTk4LCAzNTYwNywgMzU2MTcsIAotICAgIDM1NjI3LCAzNTYzOCwgMzU2NDksIDM1NjU4LCAzNTY2NywgMzU2NzcsIDM1Njg3LCAzNTY5NCwgMzU3MDEsIDM1NzA5LCAKLSAgICAzNTcxNywgMzU3MjMsIDM1NzI5LCAzNTczOCwgMzU3NDcsIDM1NzU3LCAzNTc2NywgMzU3NzgsIDM1Nzg5LCAzNTc5OCwgCi0gICAgMzU4MDcsIDM1ODE3LCAzNTgyNywgMzU4MzYsIDM1ODQ1LCAzNTg1MywgMzU4NjEsIDM1ODY4LCAzNTg3NSwgMzU4ODMsIAotICAgIDM1ODkxLCAzNTkwMCwgMzU5MDksIDM1OTE5LCAzNTkyOSwgMzU5NDAsIDM1OTUxLCAzNTk2MCwgMzU5NjksIDM1OTc5LCAKLSAgICAzNTk4OSwgMzU5OTgsIDM2MDA3LCAzNjAxNywgMzYwMjcsIDM2MDM4LCAzNjA0OSwgMzYwNTgsIDM2MDY3LCAzNjA3NywgCi0gICAgMzYwODcsIDM2MDk0LCAzNjEwMSwgMzYxMDksIDM2MTE3LCAzNjEyNiwgMzYxMzUsIDM2MTQ1LCAzNjE1NSwgMzYxNjYsIAotICAgIDM2MTc3LCAzNjE4NiwgMzYxOTUsIDM2MjA1LCAzNjIxNSwgMzYyMjMsIDM2MjMxLCAzNjIzOSwgMzYyNDcsIDM2MjU2LCAKLSAgICAzNjI2NSwgMzYyNzIsIDM2Mjc5LCAzNjI4NiwgMzYyOTMsIDM2MzAwLCAzNjMwNywgMzYzMTUsIDM2MzIzLCAzNjMzMSwgCi0gICAgMzYzMzksIDM2MzUwLCAzNjM2MSwgMzYzNzIsIDM2MzgzLCAzNjM5NCwgMzY0MDUsIDM2NDEzLCAzNjQyMSwgMzY0MzIsIAotICAgIDM2NDQzLCAzNjQ1NCwgMzY0NjUsIDM2NDc2LCAzNjQ4NywgMzY0OTUsIDM2NTAzLCAzNjUxNCwgMzY1MjUsIDM2NTM2LCAwLCAKLSAgICAwLCAzNjU0NywgMzY1NTUsIDM2NTYzLCAzNjU3NCwgMzY1ODUsIDM2NTk2LCAwLCAwLCAzNjYwNywgMzY2MTUsIDM2NjIzLCAKLSAgICAzNjYzNCwgMzY2NDUsIDM2NjU2LCAzNjY2NywgMzY2NzgsIDM2Njg5LCAzNjY5NywgMzY3MDUsIDM2NzE2LCAzNjcyNywgCi0gICAgMzY3MzgsIDM2NzQ5LCAzNjc2MCwgMzY3NzEsIDM2Nzc5LCAzNjc4NywgMzY3OTgsIDM2ODA5LCAzNjgyMCwgMzY4MzEsIAotICAgIDM2ODQyLCAzNjg1MywgMzY4NjEsIDM2ODY5LCAzNjg4MCwgMzY4OTEsIDM2OTAyLCAzNjkxMywgMzY5MjQsIDM2OTM1LCAKLSAgICAzNjk0MywgMzY5NTEsIDM2OTYyLCAzNjk3MywgMzY5ODQsIDAsIDAsIDM2OTk1LCAzNzAwMywgMzcwMTEsIDM3MDIyLCAKLSAgICAzNzAzMywgMzcwNDQsIDAsIDAsIDM3MDU1LCAzNzA2MywgMzcwNzEsIDM3MDgyLCAzNzA5MywgMzcxMDQsIDM3MTE1LCAKLSAgICAzNzEyNiwgMCwgMzcxMzcsIDAsIDM3MTQ1LCAwLCAzNzE1NiwgMCwgMzcxNjcsIDM3MTc4LCAzNzE4NiwgMzcxOTQsIAotICAgIDM3MjA1LCAzNzIxNiwgMzcyMjcsIDM3MjM4LCAzNzI0OSwgMzcyNjAsIDM3MjY4LCAzNzI3NiwgMzcyODcsIDM3Mjk4LCAKLSAgICAzNzMwOSwgMzczMjAsIDM3MzMxLCAzNzM0MiwgMzczNTAsIDM3MzU4LCAzNzM2NiwgMzczNzQsIDM3MzgyLCAzNzM5MCwgCi0gICAgMzczOTgsIDM3NDA2LCAzNzQxNCwgMzc0MjIsIDM3NDMwLCAzNzQzOCwgMzc0NDYsIDAsIDAsIDM3NDU0LCAzNzQ2NSwgCi0gICAgMzc0NzYsIDM3NDkwLCAzNzUwNCwgMzc1MTgsIDM3NTMyLCAzNzU0NiwgMzc1NjAsIDM3NTcxLCAzNzU4MiwgMzc1OTYsIAotICAgIDM3NjEwLCAzNzYyNCwgMzc2MzgsIDM3NjUyLCAzNzY2NiwgMzc2NzcsIDM3Njg4LCAzNzcwMiwgMzc3MTYsIDM3NzMwLCAKLSAgICAzNzc0NCwgMzc3NTgsIDM3NzcyLCAzNzc4MywgMzc3OTQsIDM3ODA4LCAzNzgyMiwgMzc4MzYsIDM3ODUwLCAzNzg2NCwgCi0gICAgMzc4NzgsIDM3ODg5LCAzNzkwMCwgMzc5MTQsIDM3OTI4LCAzNzk0MiwgMzc5NTYsIDM3OTcwLCAzNzk4NCwgMzc5OTUsIAotICAgIDM4MDA2LCAzODAyMCwgMzgwMzQsIDM4MDQ4LCAzODA2MiwgMzgwNzYsIDM4MDkwLCAzODA5OCwgMzgxMDYsIDM4MTE3LCAKLSAgICAzODEyNSwgMCwgMzgxMzYsIDM4MTQ0LCAzODE1NSwgMzgxNjMsIDM4MTcxLCAzODE3OSwgMzgxODcsIDM4MTk1LCAzODE5OCwgCi0gICAgMzgyMDEsIDM4MjA0LCAzODIwNywgMzgyMTMsIDM4MjI0LCAzODIzMiwgMCwgMzgyNDMsIDM4MjUxLCAzODI2MiwgMzgyNzAsIAotICAgIDM4Mjc4LCAzODI4NiwgMzgyOTQsIDM4MzAyLCAzODMwOCwgMzgzMTQsIDM4MzIwLCAzODMyOCwgMzgzMzYsIDM4MzQ3LCAwLCAKLSAgICAwLCAzODM1OCwgMzgzNjYsIDM4Mzc3LCAzODM4NSwgMzgzOTMsIDM4NDAxLCAwLCAzODQwOSwgMzg0MTUsIDM4NDIxLCAKLSAgICAzODQyNywgMzg0MzUsIDM4NDQzLCAzODQ1NCwgMzg0NjUsIDM4NDczLCAzODQ4MSwgMzg0ODksIDM4NTAwLCAzODUwOCwgCi0gICAgMzg1MTYsIDM4NTI0LCAzODUzMiwgMzg1NDAsIDM4NTQ2LCAzODU1MiwgMCwgMCwgMzg1NTUsIDM4NTY2LCAzODU3NCwgMCwgCi0gICAgMzg1ODUsIDM4NTkzLCAzODYwNCwgMzg2MTIsIDM4NjIwLCAzODYyOCwgMzg2MzYsIDM4NjQ0LCAzODY0NywgMCwgMzg2NTAsIAotICAgIDM4NjU0LCAzODY1OCwgMzg2NjIsIDM4NjY2LCAzODY3MCwgMzg2NzQsIDM4Njc4LCAzODY4MiwgMzg2ODYsIDM4NjkwLCAKLSAgICAzODY5NCwgMzg3MDAsIDM4NzA2LCAzODcxMiwgMzg3MTUsIDM4NzE4LCAzODcyMCwgMzg3MjQsIDM4NzI4LCAzODczMiwgCi0gICAgMzg3MzYsIDM4NzM4LCAzODc0MiwgMzg3NDYsIDM4NzUyLCAzODc1OCwgMzg3NjUsIDM4NzcyLCAzODc3NywgMzg3ODIsIAotICAgIDM4Nzg4LCAzODc5NCwgMzg3OTYsIDM4Nzk5LCAzODgwMSwgMzg4MDUsIDM4ODA5LCAzODgxMywgMzg4MTYsIDM4ODIwLCAKLSAgICAzODgyNCwgMzg4MjgsIDM4ODMyLCAzODgzNiwgMzg4NDIsIDM4ODQ2LCAzODg1MCwgMzg4NTYsIDM4ODYxLCAzODg2OCwgCi0gICAgMzg4NzAsIDM4ODczLCAzODg3NywgMzg4ODEsIDM4ODg2LCAzODg5MiwgMzg4OTQsIDM4OTAzLCAzODkxMiwgMzg5MTUsIAotICAgIDM4OTE5LCAzODkyMSwgMzg5MjMsIDM4OTI1LCAzODkyOCwgMzg5MzQsIDM4OTM2LCAzODk0MCwgMzg5NDQsIDM4OTUxLCAKLSAgICAzODk1OCwgMzg5NjIsIDM4OTY3LCAzODk3MiwgMzg5NzcsIDM4OTgyLCAzODk4NiwgMzg5OTAsIDM4OTkzLCAzODk5NywgCi0gICAgMzkwMDEsIDM5MDA4LCAzOTAxMywgMzkwMTcsIDM5MDIxLCAzOTAyNiwgMzkwMzAsIDM5MDM0LCAzOTAzOSwgMzkwNDQsIAotICAgIDM5MDQ4LCAzOTA1MiwgMzkwNTYsIDM5MDU4LCAzOTA2MywgMzkwNjgsIDM5MDcyLCAzOTA3NiwgMzkwODAsIDM5MDg0LCAwLCAKLSAgICAzOTA4OCwgMzkwOTIsIDM5MDk2LCAzOTEwMiwgMzkxMDgsIDM5MTE0LCAzOTEyMCwgMzkxMjcsIDM5MTM0LCAzOTEzOSwgCi0gICAgMzkxNDQsIDM5MTQ4LCAwLCAwLCAzOTE1NCwgMzkxNTcsIDM5MTYwLCAzOTE2MywgMzkxNjYsIDM5MTY5LCAzOTE3MiwgCi0gICAgMzkxNzYsIDM5MTgwLCAzOTE4NSwgMzkxOTAsIDM5MTk1LCAzOTIwMiwgMzkyMDYsIDM5MjA5LCAzOTIxMiwgMzkyMTUsIAotICAgIDM5MjE4LCAzOTIyMSwgMzkyMjQsIDM5MjI3LCAzOTIzMCwgMzkyMzMsIDM5MjM3LCAzOTI0MSwgMzkyNDYsIDM5MjUxLCAwLCAKLSAgICAzOTI1NiwgMzkyNjIsIDM5MjY4LCAzOTI3NCwgMzkyODEsIDM5Mjg4LCAzOTI5NSwgMzkzMDIsIDM5MzA4LCAzOTMxNCwgCi0gICAgMzkzMjEsIDM5MzI4LCAzOTMzNSwgMCwgMCwgMCwgMzkzNDIsIDM5MzQ1LCAzOTM0OCwgMzkzNTEsIDM5MzU2LCAzOTM1OSwgCi0gICAgMzkzNjIsIDM5MzY1LCAzOTM2OCwgMzkzNzEsIDM5Mzc0LCAzOTM3OCwgMzkzODEsIDM5Mzg0LCAzOTM4NywgMzkzOTAsIAotICAgIDM5MzkzLCAzOTM5OCwgMzk0MDEsIDM5NDA0LCAzOTQwNywgMzk0MTAsIDM5NDEzLCAzOTQxOCwgMzk0MjEsIDM5NDI0LCAKLSAgICAzOTQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzk0MzQsIDM5NDM5LCAzOTQ0NCwgMzk0NTEsIDM5NDU5LCAzOTQ2NCwgMzk0NjksIDM5NDczLCAzOTQ3NywgMzk0ODIsIAotICAgIDM5NDg5LCAzOTQ5NiwgMzk1MDAsIDM5NTA1LCAzOTUxMCwgMzk1MTUsIDM5NTIwLCAzOTUyNywgMzk1MzIsIDM5NTM3LCAKLSAgICAzOTU0MiwgMzk1NTEsIDM5NTU4LCAzOTU2NSwgMzk1NjksIDM5NTc0LCAzOTU4MCwgMzk1ODUsIDM5NTkyLCAzOTYwMSwgCi0gICAgMzk2MTAsIDM5NjE0LCAzOTYxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2MjIsIAotICAgIDM5NjI2LCAzOTYzNCwgMzk2MzgsIDM5NjQyLCAzOTY0NywgMzk2NTEsIDM5NjU1LCAzOTY1OSwgMzk2NjEsIDM5NjY1LCAKLSAgICAzOTY2OSwgMzk2NzMsIDM5Njc4LCAzOTY4MiwgMzk2ODYsIDM5Njk0LCAzOTY5NywgMzk3MDEsIDM5NzA0LCAzOTcwNywgCi0gICAgMzk3MTMsIDM5NzE3LCAzOTcyMCwgMzk3MjYsIDM5NzMwLCAzOTczNCwgMzk3MzgsIDM5NzQxLCAzOTc0NSwgMzk3NDgsIAotICAgIDM5NzUyLCAzOTc1NCwgMzk3NTcsIDM5NzYwLCAzOTc2NCwgMzk3NjYsIDM5NzcwLCAzOTc3MywgMzk3NzYsIDM5NzgxLCAKLSAgICAzOTc4NiwgMzk3OTMsIDM5Nzk2LCAzOTc5OSwgMzk4MDMsIDM5ODA4LCAzOTgxMSwgMzk4MTQsIDM5ODE3LCAzOTgyMSwgCi0gICAgMzk4MjYsIDM5ODI5LCAzOTgzMiwgMzk4MzQsIDM5ODM3LCAzOTg0MCwgMzk4NDMsIDM5ODQ3LCAzOTg1MiwgMzk4NTUsIAotICAgIDM5ODU5LCAzOTg2MywgMzk4NjcsIDM5ODcxLCAzOTg3NiwgMzk4ODIsIDM5ODg3LCAzOTg5MiwgMzk4OTgsIDM5OTAzLCAKLSAgICAzOTkwOCwgMzk5MTIsIDM5OTE2LCAzOTkyMSwgMzk5MjUsIDM5OTI5LCAzOTkzMiwgMzk5MzQsIDM5OTM5LCAzOTk0NSwgCi0gICAgMzk5NTIsIDM5OTU5LCAzOTk2NiwgMzk5NzMsIDM5OTgwLCAzOTk4NywgMzk5OTQsIDQwMDAxLCA0MDAwOSwgNDAwMTYsIAotICAgIDQwMDI0LCA0MDAzMSwgNDAwMzgsIDQwMDQ2LCA0MDA1NCwgNDAwNTksIDQwMDY0LCA0MDA2OSwgNDAwNzQsIDQwMDc5LCAKLSAgICA0MDA4NCwgNDAwODksIDQwMDk0LCA0MDA5OSwgNDAxMDQsIDQwMTEwLCA0MDExNiwgNDAxMjIsIDQwMTI4LCA0MDEzNSwgCi0gICAgNDAxNDMsIDQwMTUwLCA0MDE1NiwgNDAxNjIsIDQwMTY4LCA0MDE3NCwgNDAxODAsIDQwMTg2LCA0MDE5MiwgNDAxOTgsIAotICAgIDQwMjA0LCA0MDIxMSwgNDAyMTgsIDQwMjI1LCA0MDIzMiwgNDAyNDAsIDQwMjQ5LCA0MDI1NywgNDAyNjgsIDQwMjc2LCAKLSAgICA0MDI4NCwgNDAyOTMsIDQwMzAwLCA0MDMwOSwgNDAzMTgsIDQwMzI2LCA0MDMzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzNDMsIAotICAgIDQwMzQ1LCA0MDM0OCwgNDAzNTAsIDQwMzUzLCA0MDM1NiwgNDAzNTksIDQwMzY0LCA0MDM2OSwgNDAzNzQsIDQwMzc5LCAKLSAgICA0MDM4MywgNDAzODcsIDQwMzkxLCA0MDM5NSwgNDA0MDAsIDQwNDA2LCA0MDQxMSwgNDA0MTcsIDQwNDIyLCA0MDQyNywgCi0gICAgNDA0MzIsIDQwNDM4LCA0MDQ0MywgNDA0NDksIDQwNDU1LCA0MDQ1OSwgNDA0NjMsIDQwNDY4LCA0MDQ3MywgNDA0NzgsIAotICAgIDQwNDgzLCA0MDQ4OCwgNDA0OTYsIDQwNTA0LCA0MDUxMiwgNDA1MjAsIDQwNTI3LCA0MDUzNSwgNDA1NDIsIDQwNTQ5LCAKLSAgICA0MDU1OCwgNDA1NzAsIDQwNTc2LCA0MDU4MiwgNDA1OTAsIDQwNTk4LCA0MDYwNywgNDA2MTYsIDQwNjI0LCA0MDYzMiwgCi0gICAgNDA2NDEsIDQwNjUwLCA0MDY1NSwgNDA2NjMsIDQwNjY4LCA0MDY3MywgNDA2NzksIDQwNjg0LCA0MDY5MCwgNDA2OTcsIAotICAgIDQwNzA0LCA0MDcwOSwgNDA3MTUsIDQwNzIwLCA0MDcyMywgNDA3MjcsIDQwNzMwLCA0MDczNCwgNDA3MzgsIDQwNzQyLCAKLSAgICA0MDc0OCwgNDA3NTQsIDQwNzYwLCA0MDc2NiwgNDA3NzAsIDQwNzc0LCA0MDc3OCwgNDA3ODIsIDQwNzg4LCA0MDc5NCwgCi0gICAgNDA3OTgsIDQwODAzLCA0MDgwNywgNDA4MTIsIDQwODE3LCA0MDgyMiwgNDA4MjUsIDQwODI5LCA0MDgzMiwgNDA4MzYsIAotICAgIDQwODQzLCA0MDg1MSwgNDA4NjIsIDQwODczLCA0MDg3OCwgNDA4ODcsIDQwODk0LCA0MDkwMywgNDA5MTIsIDQwOTE2LCAKLSAgICA0MDkyMiwgNDA5MzAsIDQwOTM0LCA0MDkzOSwgNDA5NDQsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY5LCA0MDk3MywgCi0gICAgNDA5NzcsIDQwOTgyLCA0MDk4NSwgNDA5ODcsIDQwOTkxLCA0MDk5NSwgNDEwMDMsIDQxMDA3LCA0MTAwOSwgNDEwMTEsIAotICAgIDQxMDE1LCA0MTAyMywgNDEwMjgsIDQxMDM0LCA0MTA0NCwgNDEwNTEsIDQxMDU2LCA0MTA2MCwgNDEwNjQsIDQxMDY4LCAKLSAgICA0MTA3MSwgNDEwNzQsIDQxMDc3LCA0MTA4MSwgNDEwODUsIDQxMDg5LCA0MTA5MywgNDEwOTcsIDQxMTAwLCA0MTEwNCwgCi0gICAgNDExMDgsIDQxMTExLCA0MTExMywgNDExMTYsIDQxMTE4LCA0MTEyMiwgNDExMjYsIDQxMTI4LCA0MTEzNCwgNDExMzcsIAotICAgIDQxMTQyLCA0MTE0NiwgNDExNTAsIDQxMTUyLCA0MTE1NCwgNDExNTYsIDQxMTU5LCA0MTE2MywgNDExNjcsIDQxMTcxLCAKLSAgICA0MTE3NSwgNDExNzksIDQxMTg1LCA0MTE5MSwgNDExOTMsIDQxMTk1LCA0MTE5NywgNDExOTksIDQxMjAyLCA0MTIwNCwgCi0gICAgNDEyMDgsIDQxMjEwLCA0MTIxNCwgNDEyMTcsIDQxMjIzLCA0MTIyNywgNDEyMzEsIDQxMjM0LCA0MTIzNywgNDEyNDEsIAotICAgIDQxMjQ3LCA0MTI1MSwgNDEyNjEsIDQxMjcxLCA0MTI3NSwgNDEyODEsIDQxMjg3LCA0MTI5MCwgNDEyOTQsIDQxMjk3LCAKLSAgICA0MTMwMiwgNDEzMDYsIDQxMzEyLCA0MTMxNiwgNDEzMjgsIDQxMzM2LCA0MTM0MCwgNDEzNDQsIDQxMzUwLCA0MTM1NCwgCi0gICAgNDEzNTcsIDQxMzU5LCA0MTM2MiwgNDEzNjYsIDQxMzcwLCA0MTM3NywgNDEzODEsIDQxMzg1LCA0MTM4OSwgNDEzOTIsIAotICAgIDQxMzk3LCA0MTQwMiwgNDE0MDcsIDQxNDEyLCA0MTQxNywgNDE0MjIsIDQxNDMwLCA0MTQzOCwgNDE0NDIsIDQxNDQ2LCAKLSAgICA0MTQ0OCwgNDE0NTMsIDQxNDU3LCA0MTQ2MSwgNDE0NjksIDQxNDc3LCA0MTQ4MywgNDE0ODksIDQxNDk4LCA0MTUwNywgCi0gICAgNDE1MTIsIDQxNTE3LCA0MTUyNSwgNDE1MzMsIDQxNTM1LCA0MTUzNywgNDE1NDIsIDQxNTQ3LCA0MTU1MywgNDE1NTksIAotICAgIDQxNTY1LCA0MTU3MSwgNDE1NzUsIDQxNTc5LCA0MTU4NiwgNDE1OTMsIDQxNTk5LCA0MTYwNSwgNDE2MTUsIDQxNjI1LCAKLSAgICA0MTYzMywgNDE2NDEsIDQxNjQzLCA0MTY0NywgNDE2NTEsIDQxNjU2LCA0MTY2MSwgNDE2NjgsIDQxNjc1LCA0MTY3OCwgCi0gICAgNDE2ODEsIDQxNjg0LCA0MTY4NywgNDE2OTAsIDQxNjk1LCA0MTY5OSwgNDE3MDQsIDQxNzA5LCA0MTcxMiwgNDE3MTUsIAotICAgIDQxNzE4LCA0MTcyMSwgNDE3MjQsIDQxNzI4LCA0MTczMSwgNDE3MzQsIDQxNzM3LCA0MTc0MCwgNDE3NDIsIDQxNzQ0LCAKLSAgICA0MTc0NiwgNDE3NDgsIDQxNzU2LCA0MTc2NCwgNDE3NzAsIDQxNzc0LCA0MTc4MCwgNDE3OTAsIDQxNzk2LCA0MTgwMiwgCi0gICAgNDE4MDgsIDQxODE2LCA0MTgyNCwgNDE4MzUsIDQxODM5LCA0MTg0MywgNDE4NDUsIDQxODUxLCA0MTg1MywgNDE4NTUsIAotICAgIDQxODU3LCA0MTg1OSwgNDE4NjUsIDQxODY4LCA0MTg3NCwgNDE4ODAsIDQxODg0LCA0MTg4OCwgNDE4OTIsIDQxODk1LCAKLSAgICA0MTg5OSwgNDE5MDMsIDQxOTA1LCA0MTkxNCwgNDE5MjMsIDQxOTI4LCA0MTkzMywgNDE5MzksIDQxOTQ1LCA0MTk1MSwgCi0gICAgNDE5NTQsIDQxOTU3LCA0MTk2MCwgNDE5NjMsIDQxOTY1LCA0MTk3MCwgNDE5NzUsIDQxOTgwLCA0MTk4NiwgNDE5OTIsIAotICAgIDQyMDAwLCA0MjAwOCwgNDIwMTQsIDQyMDIwLCA0MjAyNiwgNDIwMzIsIDQyMDQxLCA0MjA1MCwgNDIwNTksIDQyMDY4LCAKLSAgICA0MjA3NywgNDIwODYsIDQyMDk1LCA0MjEwNCwgNDIxMTMsIDQyMTIyLCA0MjEzMCwgNDIxNDIsIDQyMTUyLCA0MjE2NywgCi0gICAgNDIxNzAsIDQyMTc1LCA0MjE4MSwgNDIxODcsIDQyMTk0LCA0MjIwOCwgNDIyMjMsIDQyMjI5LCA0MjIzNSwgNDIyNDIsIAotICAgIDQyMjQ4LCA0MjI1NiwgNDIyNjIsIDQyMjc1LCA0MjI4OSwgNDIyOTQsIDQyMzAwLCA0MjMwNywgNDIzMTAsIDQyMzEzLCAKLSAgICA0MjMxNSwgNDIzMTgsIDQyMzIxLCA0MjMyMywgNDIzMjUsIDQyMzI5LCA0MjMzMiwgNDIzMzUsIDQyMzM4LCA0MjM0MSwgCi0gICAgNDIzNDYsIDQyMzUxLCA0MjM1NiwgNDIzNjEsIDQyMzY2LCA0MjM2OSwgNDIzNzEsIDQyMzczLCA0MjM3NSwgNDIzNzksIAotICAgIDQyMzgzLCA0MjM4NywgNDIzOTMsIDQyMzk4LCA0MjQwMCwgNDI0MDIsIDQyNDA3LCA0MjQxMiwgNDI0MTcsIDQyNDIyLCAKLSAgICA0MjQyNywgNDI0MzIsIDQyNDM0LCA0MjQzNiwgNDI0NDUsIDQyNDQ5LCA0MjQ1NywgNDI0NjYsIDQyNDY4LCA0MjQ3MywgCi0gICAgNDI0NzgsIDQyNDg2LCA0MjQ5MCwgNDI0OTIsIDQyNDk2LCA0MjQ5OCwgNDI1MDIsIDQyNTA2LCA0MjUxMCwgNDI1MTIsIAotICAgIDQyNTE0LCA0MjUxNiwgNDI1MjMsIDQyNTMyLCA0MjU0MSwgNDI1NTAsIDQyNTU5LCA0MjU2OCwgNDI1NzcsIDQyNTg2LCAKLSAgICA0MjU5NSwgNDI2MDMsIDQyNjExLCA0MjYyMCwgNDI2MjksIDQyNjM4LCA0MjY0NywgNDI2NTUsIDQyNjYzLCA0MjY3MiwgCi0gICAgNDI2ODEsIDQyNjkwLCA0MjcwMCwgNDI3MDksIDQyNzE5LCA0MjcyOCwgNDI3MzgsIDQyNzQ3LCA0Mjc1NywgNDI3NjcsIAotICAgIDQyNzc2LCA0Mjc4NiwgNDI3OTUsIDQyODA1LCA0MjgxNCwgNDI4MjQsIDQyODMzLCA0Mjg0MiwgNDI4NTEsIDQyODYwLCAKLSAgICA0Mjg2OSwgNDI4NzksIDQyODg4LCA0Mjg5NywgNDI5MDYsIDQyOTE2LCA0MjkyNSwgNDI5MzQsIDQyOTQzLCA0Mjk1MiwgCi0gICAgNDI5NjIsIDQyOTcyLCA0Mjk4MSwgNDI5OTAsIDQyOTk4LCA0MzAwNiwgNDMwMTMsIDQzMDIxLCA0MzAzMCwgNDMwNDEsIAotICAgIDQzMDUwLCA0MzA1OSwgNDMwNjgsIDQzMDc1LCA0MzA4MiwgNDMwODksIDQzMDk4LCA0MzEwNywgNDMxMTYsIDQzMTI1LCAKLSAgICA0MzEzMiwgNDMxMzcsIDQzMTQ2LCA0MzE1MSwgNDMxNTQsIDQzMTYyLCA0MzE2NSwgNDMxNzAsIDQzMTc1LCA0MzE3OCwgCi0gICAgNDMxODEsIDQzMTg5LCA0MzE5MiwgNDMxOTcsIDQzMjAwLCA0MzIwNywgNDMyMTIsIDQzMjIwLCA0MzIyMywgNDMyMjYsIAotICAgIDQzMjI5LCA0MzIzNCwgNDMyMzksIDQzMjQyLCA0MzI0NSwgNDMyNTMsIDQzMjU2LCA0MzI2MywgNDMyNzAsIDQzMjc0LCAKLSAgICA0MzI3OCwgNDMyODMsIDQzMjg4LCA0MzI5NCwgNDMyOTksIDQzMzA1LCA0MzMxMSwgNDMzMTYsIDQzMzIyLCA0MzMzMCwgCi0gICAgNDMzMzYsIDQzMzQ0LCA0MzM1MiwgNDMzNTgsIDQzMzY2LCA0MzM3NCwgNDMzODMsIDQzMzkxLCA0MzM5NywgNDM0MDUsIAotICAgIDQzNDE0LCA0MzQyMiwgNDM0MjYsIDQzNDMxLCA0MzQ0NCwgNDM0NTcsIDQzNDYxLCA0MzQ2NSwgNDM0NjksIDQzNDczLCAKLSAgICA0MzQ4MywgNDM0ODcsIDQzNDkyLCA0MzQ5NywgNDM1MDIsIDQzNTA3LCA0MzUxMiwgNDM1MTcsIDQzNTI3LCA0MzUzNywgCi0gICAgNDM1NDUsIDQzNTU1LCA0MzU2NSwgNDM1NzMsIDQzNTgzLCA0MzU5MywgNDM2MDEsIDQzNjExLCA0MzYyMSwgNDM2MjksIAotICAgIDQzNjM3LCA0MzY0NywgNDM2NTcsIDQzNjYwLCA0MzY2MywgNDM2NjYsIDQzNjcxLCA0MzY3NSwgNDM2ODEsIDQzNjg4LCAKLSAgICA0MzY5NSwgNDM3MDMsIDQzNzEwLCA0MzcxNCwgNDM3MTgsIDQzNzIyLCA0MzcyNiwgNDM3MjgsIDQzNzMyLCA0MzczNiwgCi0gICAgNDM3NDEsIDQzNzQ2LCA0Mzc1MywgNDM3NjAsIDQzNzYzLCA0Mzc3MCwgNDM3NzIsIDQzNzc0LCA0Mzc3OCwgNDM3ODIsIAotICAgIDQzNzg3LCA0Mzc5MywgNDM3OTksIDQzODA1LCA0MzgxMSwgNDM4MjAsIDQzODI5LCA0MzgzOCwgNDM4NDIsIDQzODQ0LCAKLSAgICA0Mzg0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM4NTUsIDQzODU5LCA0Mzg2NiwgNDM4NzMsIAotICAgIDQzODgwLCA0Mzg4NywgNDM4OTEsIDQzODk1LCA0Mzg5OSwgNDM5MDMsIDQzOTA4LCA0MzkxNCwgNDM5MTksIDQzOTI1LCAKLSAgICA0MzkzMSwgNDM5MzcsIDQzOTQzLCA0Mzk1MSwgNDM5NTgsIDQzOTY1LCA0Mzk3MiwgNDM5NzksIDQzOTg0LCA0Mzk5MCwgCi0gICAgNDM5OTksIDQ0MDAzLCA0NDAxMCwgNDQwMTQsIDQ0MDE4LCA0NDAyNCwgNDQwMzAsIDQ0MDM2LCA0NDA0MiwgNDQwNDYsIAotICAgIDQ0MDUwLCA0NDA1MywgNDQwNTYsIDQ0MDYwLCA0NDA2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQwNzQsIDQ0MDc3LCA0NDA4MSwgNDQwODUsIDQ0MDkxLCAKLSAgICA0NDA5NywgNDQxMDMsIDQ0MTExLCA0NDExOCwgNDQxMjIsIDQ0MTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEzNSwgNDQxMzgsIDQ0MTQxLCA0NDE0NCwgNDQxNDcsIAotICAgIDQ0MTUwLCA0NDE1MywgNDQxNTYsIDQ0MTU5LCA0NDE2MiwgNDQxNjYsIDQ0MTcwLCA0NDE3NCwgNDQxNzgsIDQ0MTgyLCAKLSAgICA0NDE4NiwgNDQxOTAsIDQ0MTk0LCA0NDE5OCwgNDQyMDIsIDQ0MjA2LCA0NDIwOSwgNDQyMTIsIDQ0MjE1LCA0NDIxOCwgCi0gICAgNDQyMjEsIDQ0MjI0LCA0NDIyNywgNDQyMzAsIDQ0MjMzLCA0NDIzNywgNDQyNDEsIDQ0MjQ1LCA0NDI0OSwgNDQyNTMsIAotICAgIDQ0MjU3LCA0NDI2MSwgNDQyNjUsIDQ0MjY5LCA0NDI3MywgNDQyNzcsIDQ0MjgzLCA0NDI4OSwgNDQyOTUsIDQ0MzAyLCAKLSAgICA0NDMwOSwgNDQzMTYsIDQ0MzIzLCA0NDMzMCwgNDQzMzcsIDQ0MzQ0LCA0NDM1MSwgNDQzNTgsIDQ0MzY1LCA0NDM3MiwgCi0gICAgNDQzNzksIDQ0Mzg2LCA0NDM5MywgNDQ0MDAsIDQ0NDA3LCA0NDQxNCwgNDQ0MTksIDQ0NDI1LCA0NDQzMSwgNDQ0MzcsIAotICAgIDQ0NDQyLCA0NDQ0OCwgNDQ0NTQsIDQ0NDYwLCA0NDQ2NSwgNDQ0NzEsIDQ0NDc3LCA0NDQ4MiwgNDQ0ODcsIDQ0NDkzLCAKLSAgICA0NDQ5OCwgNDQ1MDQsIDQ0NTEwLCA0NDUxNSwgNDQ1MjEsIDQ0NTI3LCA0NDUzMiwgNDQ1MzgsIDQ0NTQ0LCA0NDU1MCwgCi0gICAgNDQ1NTYsIDQ0NTYyLCA0NDU2NywgNDQ1NzMsIDQ0NTc5LCA0NDU4NSwgNDQ1OTAsIDQ0NTk2LCA0NDYwMiwgNDQ2MDgsIAotICAgIDQ0NjEzLCA0NDYxOSwgNDQ2MjUsIDQ0NjMwLCA0NDYzNSwgNDQ2NDEsIDQ0NjQ2LCA0NDY1MiwgNDQ2NTgsIDQ0NjYzLCAKLSAgICA0NDY2OSwgNDQ2NzUsIDQ0NjgwLCA0NDY4NiwgNDQ2OTIsIDQ0Njk4LCA0NDcwNCwgNDQ3MTAsIDQ0NzE1LCA0NDcyMSwgCi0gICAgNDQ3MjcsIDQ0NzMzLCA0NDczOCwgNDQ3NDQsIDQ0NzUwLCA0NDc1NiwgNDQ3NjEsIDQ0NzY3LCA0NDc3MywgNDQ3NzgsIAotICAgIDQ0NzgzLCA0NDc4OSwgNDQ3OTQsIDQ0ODAwLCA0NDgwNiwgNDQ4MTEsIDQ0ODE3LCA0NDgyMywgNDQ4MjgsIDQ0ODM0LCAKLSAgICA0NDg0MCwgNDQ4NDYsIDQ0ODUyLCA0NDg1OCwgNDQ4NjIsIDQ0ODY3LCA0NDg3MiwgNDQ4NzcsIDQ0ODgyLCA0NDg4NywgCi0gICAgNDQ4OTIsIDQ0ODk3LCA0NDkwMiwgNDQ5MDcsIDQ0OTEyLCA0NDkxNiwgNDQ5MjAsIDQ0OTI0LCA0NDkyOCwgNDQ5MzIsIAotICAgIDQ0OTM2LCA0NDk0MCwgNDQ5NDQsIDQ0OTQ4LCA0NDk1MywgNDQ5NTgsIDQ0OTYzLCA0NDk2OCwgNDQ5NzMsIDQ0OTc4LCAKLSAgICA0NDk4NywgNDQ5OTYsIDQ1MDA1LCA0NTAxNCwgNDUwMjMsIDQ1MDMyLCA0NTA0MSwgNDUwNTAsIDQ1MDU3LCA0NTA2NSwgCi0gICAgNDUwNzMsIDQ1MDgwLCA0NTA4NywgNDUwOTUsIDQ1MTAzLCA0NTExMCwgNDUxMTcsIDQ1MTI1LCA0NTEzMywgNDUxNDAsIAotICAgIDQ1MTQ3LCA0NTE1NSwgNDUxNjMsIDQ1MTcwLCA0NTE3NywgNDUxODUsIDQ1MTk0LCA0NTIwMywgNDUyMTEsIDQ1MjIwLCAKLSAgICA0NTIyOSwgNDUyMzYsIDQ1MjQzLCA0NTI1MSwgNDUyNjAsIDQ1MjY5LCA0NTI3NywgNDUyODYsIDQ1Mjk1LCA0NTMwMiwgCi0gICAgNDUzMDksIDQ1MzE4LCA0NTMyNywgNDUzMzUsIDQ1MzQzLCA0NTM1MiwgNDUzNjEsIDQ1MzY4LCA0NTM3NSwgNDUzODQsIAotICAgIDQ1MzkzLCA0NTQwMSwgNDU0MDksIDQ1NDE4LCA0NTQyNywgNDU0MzQsIDQ1NDQxLCA0NTQ1MCwgNDU0NTksIDQ1NDY3LCAKLSAgICA0NTQ3NiwgNDU0ODUsIDQ1NDkzLCA0NTUwMywgNDU1MTMsIDQ1NTIzLCA0NTUzMywgNDU1NDIsIDQ1NTUxLCA0NTU2MCwgCi0gICAgNDU1NjksIDQ1NTc2LCA0NTU4NCwgNDU1OTIsIDQ1NjAwLCA0NTYwOCwgNDU2MTMsIDQ1NjE4LCA0NTYyNywgNDU2MzUsIAotICAgIDQ1NjQyLCA0NTY1MSwgNDU2NTksIDQ1NjY2LCA0NTY3NSwgNDU2ODMsIDQ1NjkwLCA0NTY5OSwgNDU3MDcsIDQ1NzE0LCAKLSAgICA0NTcyMywgNDU3MzEsIDQ1NzM4LCA0NTc0NywgNDU3NTUsIDQ1NzYyLCA0NTc3MSwgNDU3NzksIDQ1Nzg2LCA0NTc5NSwgCi0gICAgNDU4MDMsIDQ1ODEwLCA0NTgxOSwgNDU4MjcsIDQ1ODM0LCA0NTg0MywgNDU4NTIsIDQ1ODYxLCA0NTg3MCwgNDU4ODQsIAotICAgIDQ1ODk4LCA0NTkwNSwgNDU5MTAsIDQ1OTE1LCA0NTkyMCwgNDU5MjUsIDQ1OTMwLCA0NTkzNSwgNDU5NDAsIDQ1OTQ1LCAKLSAgICA0NTk1MywgNDU5NjEsIDQ1OTY5LCA0NTk3NywgNDU5ODIsIDQ1OTg5LCA0NTk5NiwgNDYwMDMsIDQ2MDA4LCA0NjAxNiwgCi0gICAgNDYwMjMsIDQ2MDMxLCA0NjAzNSwgNDYwNDIsIDQ2MDQ4LCA0NjA1NSwgNDYwNTksIDQ2MDY1LCA0NjA3MSwgNDYwNzcsIAotICAgIDQ2MDgxLCA0NjA4NCwgNDYwODgsIDQ2MDkyLCA0NjA5OSwgNDYxMDUsIDQ2MTExLCA0NjExNywgNDYxMjMsIDQ2MTM3LCAKLSAgICA0NjE0NywgNDYxNjEsIDQ2MTc1LCA0NjE4MSwgNDYxOTEsIDQ2MjA1LCA0NjIwOCwgNDYyMTEsIDQ2MjE4LCA0NjIyNiwgCi0gICAgNDYyMzEsIDQ2MjM2LCA0NjI0NCwgNDYyNTYsIDQ2MjY4LCA0NjI3NiwgNDYyODAsIDQ2Mjg0LCA0NjI4NywgNDYyOTAsIAotICAgIDQ2Mjk0LCA0NjI5OCwgNDYzMDEsIDQ2MzA0LCA0NjMwOSwgNDYzMTQsIDQ2MzIwLCA0NjMyNiwgNDYzMzEsIDQ2MzM2LCAKLSAgICA0NjM0MiwgNDYzNDgsIDQ2MzUzLCA0NjM1OCwgNDYzNjMsIDQ2MzY4LCA0NjM3NCwgNDYzODAsIDQ2Mzg1LCA0NjM5MCwgCi0gICAgNDYzOTYsIDQ2NDAyLCA0NjQwNywgNDY0MTIsIDQ2NDE1LCA0NjQxOCwgNDY0MjcsIDQ2NDI5LCA0NjQzMSwgNDY0MzQsIAotICAgIDQ2NDM4LCA0NjQ0NCwgNDY0NDYsIDQ2NDQ5LCA0NjQ1NiwgNDY0NjMsIDQ2NDcxLCA0NjQ3OSwgNDY0ODksIDQ2NTAzLCAKLSAgICA0NjUwOCwgNDY1MTMsIDQ2NTE3LCA0NjUyMiwgNDY1MzAsIDQ2NTM4LCA0NjU0NywgNDY1NTYsIDQ2NTY1LCA0NjU3NCwgCi0gICAgNDY1NzksIDQ2NTg0LCA0NjU5MCwgNDY1OTYsIDQ2NjAyLCA0NjYwOCwgNDY2MTEsIDQ2NjE3LCA0NjYyMywgNDY2MzMsIAotICAgIDQ2NjQzLCA0NjY1MSwgNDY2NTksIDQ2NjY4LCA0NjY3NywgNDY2ODEsIDQ2Njg5LCA0NjY5NywgNDY3MDUsIDQ2NzEzLCAKLSAgICA0NjcyMiwgNDY3MzEsIDQ2NzQwLCA0Njc0OSwgNDY3NTQsIDQ2NzU5LCA0Njc2NCwgNDY3NjksIDQ2Nzc0LCA0Njc4MCwgCi0gICAgNDY3ODYsIDQ2NzkxLCA0Njc5NywgNDY3OTksIDQ2ODAxLCA0NjgwMywgNDY4MDUsIDQ2ODA4LCA0NjgxMSwgNDY4MTMsIAotICAgIDQ2ODE1LCA0NjgxNywgNDY4MjEsIDQ2ODI1LCA0NjgyNywgNDY4MjksIDQ2ODMyLCA0NjgzNSwgNDY4MzksIDQ2ODQ1LCAKLSAgICA0Njg1MSwgNDY4NTMsIDQ2ODYwLCA0Njg2NCwgNDY4NjksIDQ2ODc0LCA0Njg3NiwgNDY4ODYsIDQ2ODkyLCA0Njg5OCwgCi0gICAgNDY5MDQsIDQ2OTEwLCA0NjkxNiwgNDY5MjIsIDQ2OTI3LCA0NjkzMCwgNDY5MzMsIDQ2OTM2LCA0NjkzOCwgNDY5NDAsIAotICAgIDQ2OTQ0LCA0Njk0OCwgNDY5NTMsIDQ2OTU4LCA0Njk2MywgNDY5NjYsIDQ2OTcwLCA0Njk3NSwgNDY5NzgsIDQ2OTgyLCAKLSAgICA0Njk4NywgNDY5OTIsIDQ2OTk3LCA0NzAwMiwgNDcwMDcsIDQ3MDEyLCA0NzAxNywgNDcwMjIsIDQ3MDI3LCA0NzAzMiwgCi0gICAgNDcwMzcsIDQ3MDQyLCA0NzA0OCwgNDcwNTQsIDQ3MDYwLCA0NzA2MiwgNDcwNjUsIDQ3MDY3LCA0NzA3MCwgNDcwNzIsIAotICAgIDQ3MDc0LCA0NzA3NiwgNDcwNzgsIDQ3MDgwLCA0NzA4MiwgNDcwODQsIDQ3MDg2LCA0NzA4OCwgNDcwOTAsIDQ3MDkyLCAKLSAgICA0NzA5NCwgNDcwOTYsIDQ3MDk4LCA0NzEwMCwgNDcxMDIsIDQ3MTA0LCA0NzEwOSwgNDcxMTQsIDQ3MTE5LCA0NzEyNCwgCi0gICAgNDcxMjksIDQ3MTM0LCA0NzEzOSwgNDcxNDQsIDQ3MTQ5LCA0NzE1NCwgNDcxNTksIDQ3MTY0LCA0NzE2OSwgNDcxNzQsIAotICAgIDQ3MTc5LCA0NzE4NCwgNDcxODksIDQ3MTk0LCA0NzE5OSwgNDcyMDQsIDQ3MjA4LCA0NzIxMiwgNDcyMTYsIDQ3MjIyLCAKLSAgICA0NzIyOCwgNDcyMzMsIDQ3MjM4LCA0NzI0MywgNDcyNDgsIDQ3MjUzLCA0NzI1OCwgNDcyNjYsIDQ3Mjc0LCA0NzI4MiwgCi0gICAgNDcyOTAsIDQ3Mjk4LCA0NzMwNiwgNDczMTQsIDQ3MzIyLCA0NzMyOCwgNDczMzMsIDQ3MzM4LCA0NzM0MywgNDczNDYsIAotICAgIDQ3MzUwLCA0NzM1NCwgNDczNTgsIDQ3MzYyLCA0NzM2NiwgNDczNzAsIDQ3Mzc3LCA0NzM4NCwgNDczOTIsIDQ3NDAwLCAKLSAgICA0NzQwNSwgNDc0MTAsIDQ3NDE3LCA0NzQyNCwgNDc0MzEsIDQ3NDM4LCA0NzQ0MSwgNDc0NDQsIDQ3NDQ5LCA0NzQ1MSwgCi0gICAgNDc0NTUsIDQ3NDYwLCA0NzQ2MiwgNDc0NjQsIDQ3NDY2LCA0NzQ2OCwgNDc0NzMsIDQ3NDc2LCA0NzQ3OCwgNDc0ODMsIAotICAgIDQ3NDkwLCA0NzQ5NywgNDc1MDAsIDQ3NTA0LCA0NzUwOSwgNDc1MTQsIDQ3NTIyLCA0NzUyOCwgNDc1MzQsIDQ3NTQ2LCAKLSAgICA0NzU1MywgNDc1NjAsIDQ3NTY1LCA0NzU3MCwgNDc1NzYsIDQ3NTc5LCA0NzU4MiwgNDc1ODcsIDQ3NTg5LCA0NzU5MywgCi0gICAgNDc1OTUsIDQ3NTk3LCA0NzU5OSwgNDc2MDEsIDQ3NjAzLCA0NzYwNSwgNDc2MTAsIDQ3NjEyLCA0NzYxNCwgNDc2MTYsIAotICAgIDQ3NjE4LCA0NzYyMiwgNDc2MjQsIDQ3NjI3LCA0NzYzMiwgNDc2MzcsIDQ3NjQyLCA0NzY0NywgNDc2NTMsIDQ3NjU5LCAKLSAgICA0NzY2MSwgNDc2NjQsIDQ3NjcxLCA0NzY3OCwgNDc2ODUsIDQ3NjkyLCA0NzY5NiwgNDc3MDAsIDQ3NzAyLCA0NzcwNCwgCi0gICAgNDc3MDgsIDQ3NzE0LCA0NzcxOSwgNDc3MjEsIDQ3NzI1LCA0NzczNCwgNDc3NDIsIDQ3NzUwLCA0Nzc1NiwgNDc3NjIsIAotICAgIDQ3NzY3LCA0Nzc3MywgNDc3NzgsIDQ3NzgxLCA0Nzc5NSwgNDc3OTgsIDQ3ODAzLCA0NzgwOCwgNDc4MTQsIDQ3ODI0LCAKLSAgICA0NzgyNiwgNDc4MzIsIDQ3ODM4LCA0Nzg0MiwgNDc4NDksIDQ3ODUzLCA0Nzg1NSwgNDc4NTcsIDQ3ODYxLCA0Nzg2NywgCi0gICAgNDc4NzIsIDQ3ODc4LCA0Nzg4MCwgNDc4ODYsIDQ3ODg4LCA0Nzg5NCwgNDc4OTYsIDQ3ODk4LCA0NzkwMywgNDc5MDUsIAotICAgIDQ3OTA5LCA0NzkxNCwgNDc5MTYsIDQ3OTIxLCA0NzkyNiwgNDc5MzAsIDQ3OTM3LCAwLCA0Nzk0NywgNDc5NTMsIDQ3OTU2LCAKLSAgICA0Nzk2MiwgNDc5NjUsIDQ3OTcwLCA0Nzk3NSwgNDc5NzksIDQ3OTgxLCA0Nzk4MywgNDc5ODcsIDQ3OTkxLCA0Nzk5NSwgCi0gICAgNDc5OTksIDQ4MDA0LCA0ODAwNiwgNDgwMTEsIDQ4MDE0LCA0ODAxNywgNDgwMjAsIDQ4MDI0LCA0ODAyOCwgNDgwMzMsIAotICAgIDQ4MDM3LCA0ODA0MiwgNDgwNDcsIDQ4MDUxLCA0ODA1NiwgNDgwNjIsIDQ4MDY1LCA0ODA3MSwgNDgwNzYsIDQ4MDgwLCAKLSAgICA0ODA4NSwgNDgwOTEsIDQ4MDk3LCA0ODEwNCwgNDgxMTAsIDQ4MTE3LCA0ODEyNCwgNDgxMjYsIDQ4MTMzLCA0ODEzNywgCi0gICAgNDgxNDMsIDQ4MTQ5LCA0ODE1NCwgNDgxNjAsIDQ4MTY0LCA0ODE2OSwgNDgxNzIsIDQ4MTc3LCA0ODE4MywgNDgxOTAsIAotICAgIDQ4MTk4LCA0ODIwNSwgNDgyMTQsIDQ4MjI0LCA0ODIzMSwgNDgyMzcsIDQ4MjQxLCA0ODI0OCwgNDgyNTMsIDQ4MjYyLCAKLSAgICA0ODI2NSwgNDgyNjgsIDQ4Mjc3LCA0ODI4NywgNDgyOTQsIDQ4Mjk2LCA0ODMwMiwgNDgzMDcsIDQ4MzA5LCA0ODMxMiwgCi0gICAgNDgzMTYsIDQ4MzI0LCA0ODMzMywgNDgzMzYsIDQ4MzQxLCA0ODM0NiwgNDgzNTQsIDQ4MzYyLCA0ODM3MCwgNDgzNzgsIAotICAgIDQ4Mzg0LCA0ODM5MCwgNDgzOTYsIDQ4NDA0LCA0ODQwOSwgNDg0MTIsIDQ4NDE2LCA0ODQxOSwgNDg0MzEsIDQ4NDQxLCAKLSAgICA0ODQ1MiwgNDg0NjEsIDQ4NDcyLCA0ODQ4MiwgNDg0OTEsIDQ4NDk3LCA0ODUwNSwgNDg1MDksIDQ4NTE3LCA0ODUyMSwgCi0gICAgNDg1MjksIDQ4NTM2LCA0ODU0MywgNDg1NTIsIDQ4NTYxLCA0ODU3MSwgNDg1ODEsIDQ4NTkxLCA0ODYwMSwgNDg2MTAsIAotICAgIDQ4NjE5LCA0ODYyOSwgNDg2MzksIDQ4NjQ4LCA0ODY1NywgNDg2NjMsIDQ4NjY5LCA0ODY3NSwgNDg2ODEsIDQ4Njg3LCAKLSAgICA0ODY5MywgNDg2OTksIDQ4NzA1LCA0ODcxMSwgNDg3MTgsIDQ4NzI0LCA0ODczMCwgNDg3MzYsIDQ4NzQyLCA0ODc0OCwgCi0gICAgNDg3NTQsIDQ4NzYwLCA0ODc2NiwgNDg3NzIsIDQ4Nzc5LCA0ODc4NiwgNDg3OTMsIDQ4ODAwLCA0ODgwNywgNDg4MTQsIAotICAgIDQ4ODIxLCA0ODgyOCwgNDg4MzUsIDQ4ODQyLCA0ODg1MCwgNDg4NTUsIDQ4ODU4LCA0ODg2MiwgNDg4NjYsIDQ4ODcyLCAKLSAgICA0ODg3NSwgNDg4ODEsIDQ4ODg3LCA0ODg5MiwgNDg4OTYsIDQ4OTAxLCA0ODkwNywgNDg5MTQsIDQ4OTE3LCA0ODkyNCwgCi0gICAgNDg5MzEsIDQ4OTM1LCA0ODk0NCwgNDg5NTMsIDQ4OTU4LCA0ODk2NCwgNDg5NjksIDQ4OTc0LCA0ODk4MSwgNDg5ODgsIAotICAgIDQ4OTk2LCA0OTAwNCwgNDkwMTMsIDQ5MDE3LCA0OTAyNiwgNDkwMzEsIDQ5MDM1LCA0OTA0MiwgNDkwNDYsIDQ5MDUzLCAKLSAgICA0OTA2MSwgNDkwNjYsIDQ5MDc0LCA0OTA3OCwgNDkwODMsIDQ5MDg3LCA0OTA5MiwgNDkwOTYsIDQ5MTAxLCA0OTEwNiwgCi0gICAgNDkxMTUsIDQ5MTE3LCA0OTEyMCwgNDkxMjMsIDQ5MTMwLCA0OTEzNywgNDkxNDIsIDQ5MTUwLCA0OTE1NiwgNDkxNjIsIAotICAgIDQ5MTY3LCA0OTE3MCwgNDkxNzUsIDQ5MTgwLCA0OTE4NSwgNDkxOTMsIDQ5MTk3LCA0OTIwNCwgNDkyMTIsIDQ5MjIwLCAKLSAgICA0OTIyNSwgNDkyMzAsIDQ5MjM2LCA0OTI0MSwgNDkyNDYsIDQ5MjUyLCA0OTI1NywgNDkyNjAsIDQ5MjY0LCA0OTI2OCwgCi0gICAgNDkyNzUsIDQ5Mjg0LCA0OTI4OSwgNDkyOTgsIDQ5MzA3LCA0OTMxMywgNDkzMTksIDQ5MzI0LCA0OTMyOSwgNDkzMzQsIAotICAgIDQ5MzM5LCA0OTM0NSwgNDkzNTEsIDQ5MzU5LCA0OTM2NywgNDkzNzMsIDQ5Mzc5LCA0OTM4NCwgNDkzODksIDQ5Mzk2LCAKLSAgICA0OTQwMywgNDk0MDksIDQ5NDEyLCA0OTQxNSwgNDk0MTksIDQ5NDIzLCA0OTQyNywgNDk0MzIsIDQ5NDM4LCA0OTQ0NCwgCi0gICAgNDk0NTEsIDQ5NDU4LCA0OTQ2MywgNDk0NjcsIDQ5NDcxLCA0OTQ3NSwgNDk0NzksIDQ5NDgzLCA0OTQ4NywgNDk0OTEsIAotICAgIDQ5NDk1LCA0OTQ5OSwgNDk1MDMsIDQ5NTA3LCA0OTUxMSwgNDk1MTUsIDQ5NTE5LCA0OTUyMywgNDk1MjcsIDQ5NTMxLCAKLSAgICA0OTUzNSwgNDk1MzksIDQ5NTQzLCA0OTU0NywgNDk1NTEsIDQ5NTU1LCA0OTU1OSwgNDk1NjMsIDQ5NTY3LCA0OTU3MSwgCi0gICAgNDk1NzUsIDQ5NTc5LCA0OTU4MywgNDk1ODcsIDQ5NTkxLCA0OTU5NSwgNDk1OTksIDQ5NjAzLCA0OTYwNywgNDk2MTEsIAotICAgIDQ5NjE1LCA0OTYxOSwgNDk2MjMsIDQ5NjI3LCA0OTYzMSwgNDk2MzUsIDQ5NjM5LCA0OTY0MywgNDk2NDcsIDQ5NjUxLCAKLSAgICA0OTY1NSwgNDk2NTksIDQ5NjYzLCA0OTY2NywgNDk2NzEsIDQ5Njc1LCA0OTY3OSwgNDk2ODMsIDQ5Njg3LCA0OTY5MSwgCi0gICAgNDk2OTUsIDQ5Njk5LCA0OTcwMywgNDk3MDcsIDQ5NzExLCA0OTcxNSwgNDk3MTksIDQ5NzIzLCA0OTcyNywgNDk3MzEsIAotICAgIDQ5NzM1LCA0OTczOSwgNDk3NDMsIDQ5NzQ3LCA0OTc1MSwgNDk3NTUsIDQ5NzU5LCA0OTc2MywgNDk3NjcsIDQ5NzcxLCAKLSAgICA0OTc3NSwgNDk3NzksIDQ5NzgzLCA0OTc4NywgNDk3OTEsIDQ5Nzk1LCA0OTc5OSwgNDk4MDMsIDQ5ODA3LCA0OTgxMSwgCi0gICAgNDk4MTUsIDQ5ODE5LCA0OTgyMywgNDk4MjcsIDQ5ODMxLCA0OTgzNSwgNDk4MzksIDQ5ODQzLCA0OTg0NywgNDk4NTEsIAotICAgIDQ5ODU1LCA0OTg1OSwgNDk4NjMsIDQ5ODY3LCA0OTg3MSwgNDk4NzUsIDQ5ODc5LCA0OTg4MywgNDk4ODcsIDQ5ODkxLCAKLSAgICA0OTg5NSwgNDk4OTksIDQ5OTAzLCA0OTkwNywgNDk5MTEsIDQ5OTE1LCA0OTkxOSwgNDk5MjMsIDQ5OTI3LCA0OTkzMSwgCi0gICAgNDk5MzUsIDQ5OTM5LCA0OTk0MywgNDk5NDcsIDQ5OTUxLCA0OTk1NSwgNDk5NTksIDQ5OTYzLCA0OTk2NywgNDk5NzEsIAotICAgIDQ5OTc1LCA0OTk3OSwgNDk5ODMsIDQ5OTg3LCA0OTk5MSwgNDk5OTUsIDQ5OTk5LCA1MDAwMywgNTAwMDcsIDUwMDExLCAKLSAgICA1MDAxNSwgNTAwMTksIDUwMDIzLCA1MDAyNywgNTAwMzEsIDUwMDM1LCA1MDAzOSwgNTAwNDMsIDUwMDQ3LCA1MDA1MSwgCi0gICAgNTAwNTUsIDUwMDU5LCA1MDA2MywgNTAwNjcsIDUwMDcxLCA1MDA3NSwgNTAwNzksIDUwMDgzLCA1MDA4NywgNTAwOTEsIAotICAgIDUwMDk1LCA1MDA5OSwgNTAxMDMsIDUwMTA3LCA1MDExMSwgNTAxMTUsIDUwMTE5LCA1MDEyMywgNTAxMjcsIDUwMTMxLCAKLSAgICA1MDEzNSwgNTAxMzksIDUwMTQzLCA1MDE0NywgNTAxNTEsIDUwMTU1LCA1MDE1OSwgNTAxNjMsIDUwMTY3LCA1MDE3MSwgCi0gICAgNTAxNzUsIDUwMTc5LCA1MDE4MywgNTAxODcsIDUwMTkxLCA1MDE5NSwgNTAxOTksIDUwMjAzLCA1MDIwNywgNTAyMTEsIAotICAgIDUwMjE1LCA1MDIxOSwgNTAyMjMsIDUwMjI3LCA1MDIzMSwgNTAyMzUsIDUwMjM5LCA1MDI0MywgNTAyNDcsIDUwMjUxLCAKLSAgICA1MDI1NSwgNTAyNTksIDUwMjYzLCA1MDI2NywgNTAyNzEsIDUwMjc1LCA1MDI3OSwgNTAyODMsIDUwMjg3LCA1MDI5MSwgCi0gICAgNTAyOTUsIDUwMjk5LCA1MDMwMywgNTAzMDcsIDUwMzExLCA1MDMxNSwgNTAzMTksIDUwMzIzLCA1MDMyNywgNTAzMzEsIAotICAgIDUwMzM1LCA1MDMzOSwgNTAzNDMsIDUwMzQ3LCA1MDM1MSwgNTAzNTUsIDUwMzU5LCA1MDM2MywgNTAzNjcsIDUwMzcxLCAKLSAgICA1MDM3NSwgNTAzNzksIDUwMzgzLCA1MDM4NywgNTAzOTEsIDUwMzk1LCA1MDM5OSwgNTA0MDMsIDUwNDA3LCA1MDQxMSwgCi0gICAgNTA0MTUsIDUwNDE5LCA1MDQyMywgNTA0MjcsIDUwNDMxLCA1MDQzNSwgNTA0MzksIDUwNDQzLCA1MDQ0NywgNTA0NTEsIAotICAgIDUwNDU1LCA1MDQ1OSwgNTA0NjMsIDUwNDY3LCA1MDQ3MSwgNTA0NzUsIDUwNDc5LCA1MDQ4MywgNTA0ODcsIDUwNDk0LCAKLSAgICA1MDUwMiwgNTA1MDgsIDUwNTE0LCA1MDUyMSwgNTA1MjgsIDUwNTM0LCA1MDU0MCwgNTA1NDYsIDUwNTUyLCA1MDU1NywgCi0gICAgNTA1NjIsIDUwNTY3LCA1MDU3MiwgNTA1NzgsIDUwNTg0LCA1MDU5MiwgNTA1OTksIDUwNjA1LCA1MDYxMSwgNTA2MTksIAotICAgIDUwNjI4LCA1MDYzNSwgNTA2NDUsIDUwNjU2LCA1MDY1OSwgNTA2NjIsIDUwNjY2LCA1MDY3MCwgNTA2NzcsIDUwNjg0LCAKLSAgICA1MDY5NSwgNTA3MDYsIDUwNzE2LCA1MDcyNiwgNTA3MzMsIDUwNzQwLCA1MDc0NywgNTA3NTQsIDUwNzY1LCA1MDc3NiwgCi0gICAgNTA3ODcsIDUwNzk4LCA1MDgwOCwgNTA4MTgsIDUwODMwLCA1MDg0MiwgNTA4NTMsIDUwODY0LCA1MDg3NiwgNTA4ODgsIAotICAgIDUwODk3LCA1MDkwNywgNTA5MTcsIDUwOTI4LCA1MDkzOSwgNTA5NDYsIDUwOTUzLCA1MDk2MCwgNTA5NjcsIDUwOTc3LCAKLSAgICA1MDk4NywgNTA5OTUsIDUxMDAzLCA1MTAxMCwgNTEwMTcsIDUxMDI0LCA1MTAzMSwgNTEwMzgsIDUxMDQzLCA1MTA0OCwgCi0gICAgNTEwNTQsIDUxMDYyLCA1MTA3MiwgNTEwODIsIDUxMDkyLCA1MTEwMiwgNTExMTIsIDUxMTIyLCA1MTEzMiwgNTExNDIsIAotICAgIDUxMTUyLCA1MTE2MiwgNTExNzIsIDUxMTgzLCA1MTE5NCwgNTEyMDQsIDUxMjE0LCA1MTIyNSwgNTEyMzYsIDUxMjQ2LCAKLSAgICA1MTI1NiwgNTEyNjcsIDUxMjc4LCA1MTI4OCwgNTEyOTgsIDUxMzA5LCA1MTMyMCwgNTEzMzYsIDUxMzU1LCA1MTM3MSwgCi0gICAgNTEzOTAsIDUxNDA2LCA1MTQyMiwgNTE0MzgsIDUxNDU0LCA1MTQ2NSwgNTE0NzcsIDUxNDg4LCA1MTUwMCwgNTE1MTksIAotICAgIDUxNTM4LCA1MTU0NiwgNTE1NTIsIDUxNTU5LCA1MTU2NiwgNTE1NzMsIDUxNTgwLCA1MTU4NSwgNTE1OTEsIDUxNTk2LCAKLSAgICA1MTYwMSwgNTE2MDcsIDUxNjEyLCA1MTYxNywgNTE2MjIsIDUxNjI3LCA1MTYzMiwgNTE2MzksIDUxNjQ0LCA1MTY1MSwgCi0gICAgNTE2NTYsIDUxNjYxLCA1MTY2NSwgNTE2NjksIDUxNjc2LCA1MTY4MywgNTE2OTAsIDUxNjk3LCA1MTcwNCwgNTE3MTEsIAotICAgIDUxNzI0LCA1MTczNywgNTE3NTAsIDUxNzYzLCA1MTc3MSwgNTE3NzksIDUxNzg1LCA1MTc5MSwgNTE3OTgsIDUxODA1LCAKLSAgICA1MTgxMiwgNTE4MTksIDUxODIzLCA1MTgyOCwgNTE4MzYsIDUxODQ0LCA1MTg1MiwgNTE4NTksIDUxODYzLCA1MTg3MSwgCi0gICAgNTE4NzksIDUxODgzLCA1MTg4NywgNTE4OTIsIDUxODk5LCA1MTkwNywgNTE5MTUsIDUxOTM0LCA1MTk1MywgNTE5NzIsIAotICAgIDUxOTkxLCA1MjAxMCwgNTIwMjksIDUyMDQ4LCA1MjA2NywgNTIwNzMsIDUyMDgwLCA1MjA4OSwgNTIwOTcsIDUyMTA1LCAKLSAgICA1MjExMCwgNTIxMTMsIDUyMTE2LCA1MjEyMSwgNTIxMjQsIDUyMTQzLCA1MjE1MCwgNTIxNTYsIDUyMTYyLCA1MjE2NiwgCi0gICAgNTIxNjksIDUyMTcyLCA1MjE3NSwgNTIxODcsIDUyMjAwLCA1MjIwNywgNTIyMTQsIDUyMjE3LCA1MjIyMSwgNTIyMjQsIAotICAgIDUyMjI5LCA1MjIzNCwgNTIyMzksIDUyMjQ1LCA1MjI1NCwgNTIyNjEsIDUyMjY4LCA1MjI3NiwgNTIyODMsIDUyMjkwLCAKLSAgICA1MjI5MywgNTIyOTksIDUyMzA1LCA1MjMwOCwgNTIzMTEsIDUyMzE2LCA1MjMyMSwgNTIzMjcsIDUyMzMzLCA1MjMzNywgCi0gICAgNTIzNDIsIDUyMzQ5LCA1MjM1MywgNTIzNTksIDUyMzYzLCA1MjM2NywgNTIzNzUsIDUyMzg3LCA1MjM5NiwgNTI0MDAsIAotICAgIDUyNDAyLCA1MjQxMSwgNTI0MjAsIDUyNDI2LCA1MjQyOSwgNTI0MzUsIDUyNDQxLCA1MjQ0NiwgNTI0NTEsIDUyNDU2LCAKLSAgICA1MjQ2MSwgNTI0NjYsIDUyNDcxLCA1MjQ3MywgNTI0NzksIDUyNDg0LCA1MjQ5MSwgNTI0OTUsIDUyNTAxLCA1MjUwNCwgCi0gICAgNTI1MDgsIDUyNTE1LCA1MjUyMiwgNTI1MjQsIDUyNTI2LCA1MjUzMiwgNTI1MzgsIDUyNTQ0LCA1MjU1MywgNTI1NjIsIAotICAgIDUyNTY5LCA1MjU3NiwgNTI1ODIsIDUyNTg4LCA1MjU5MywgNTI1OTgsIDUyNjAzLCA1MjYwOSwgNTI2MTUsIDUyNjIwLCAKLSAgICA1MjYyNywgNTI2MzEsIDUyNjM1LCA1MjY0OCwgNTI2NjEsIDUyNjczLCA1MjY4MiwgNTI2ODgsIDUyNjk1LCA1MjcwMCwgCi0gICAgNTI3MDUsIDUyNzEwLCA1MjcxNSwgNTI3MjAsIDUyNzIyLCA1MjcyOSwgNTI3MzYsIDUyNzQzLCA1Mjc1MCwgNTI3NTcsIAotICAgIDUyNzY1LCA1Mjc3MSwgNTI3NzYsIDUyNzgyLCA1Mjc4OCwgNTI3OTQsIDUyODAxLCA1MjgwNywgNTI4MTUsIDUyODIzLCAKLSAgICA1MjgzMSwgNTI4MzksIDUyODQ2LCA1Mjg1MiwgNTI4NTgsIDUyODY3LCA1Mjg3MSwgNTI4ODAsIDUyODg5LCA1Mjg5OCwgCi0gICAgNTI5MDYsIDUyOTEwLCA1MjkxNiwgNTI5MjMsIDUyOTMwLCA1MjkzNCwgNTI5NDAsIDUyOTQ3LCA1Mjk1MiwgNTI5NTcsIAotICAgIDUyOTYzLCA1Mjk2OCwgNTI5NzMsIDUyOTgwLCA1Mjk4NywgNTI5OTIsIDUyOTk3LCA1MzAwNSwgNTMwMTMsIDUzMDIzLCAKLSAgICA1MzAzMywgNTMwNDAsIDUzMDQ3LCA1MzA1MSwgNTMwNTUsIDUzMDY3LCA1MzA3MywgNTMwNzksIDUzMDg0LCA1MzA4OSwgCi0gICAgNTMwOTYsIDUzMTAzLCA1MzEwOSwgNTMxMTUsIDUzMTI0LCA1MzEzMiwgNTMxNDAsIDUzMTQ3LCA1MzE1NCwgNTMxNjEsIAotICAgIDUzMTY3LCA1MzE3NCwgNTMxODAsIDUzMTg3LCA1MzE5NCwgNTMyMDEsIDUzMjA4LCA1MzIxNCwgNTMyMTksIDUzMjI4LCAKLSAgICA1MzIzOCwgNTMyNDUsIDUzMjU0LCA1MzI2MCwgNTMyNjUsIDUzMjcwLCA1MzI4MCwgNTMyODYsIDUzMjkyLCA1MzI5OCwgCi0gICAgNTMzMDYsIDUzMzExLCA1MzMxOCwgNTMzMjUsIDUzMzM2LCA1MzM0MywgNTMzNTAsIDUzMzU3LCA1MzM2NCwgNTMzNzEsIAotICAgIDUzMzc4LCA1MzM4NSwgNTMzOTcsIDUzNDA5LCA1MzQyMCwgNTM0MzEsIDUzNDQ0LCA1MzQ1NywgNTM0NjIsIDUzNDY3LCAKLSAgICA1MzQ3NiwgNTM0ODUsIDUzNDkyLCA1MzQ5OSwgNTM1MDgsIDUzNTE3LCA1MzUyNSwgNTM1MzMsIDUzNTQxLCA1MzU0OSwgCi0gICAgNTM1NTksIDUzNTY5LCA1MzU4MywgNTM1OTcsIDUzNjA1LCA1MzYxMywgNTM2MjUsIDUzNjM3LCA1MzY0NSwgNTM2NTMsIAotICAgIDUzNjYzLCA1MzY3MywgNTM2NzgsIDUzNjgzLCA1MzY5MiwgNTM3MDEsIDUzNzA2LCA1MzcxMSwgNTM3MTksIDUzNzI1LCAKLSAgICA1MzczMSwgNTM3MzksIDUzNzQ3LCA1Mzc2MCwgNTM3NzMsIDUzNzc3LCA1Mzc4MSwgNTM3ODgsIDUzNzk1LCA1MzgwMiwgCi0gICAgNTM4MTAsIDUzODE4LCA1MzgyNywgNTM4MzYsIDUzODQyLCA1Mzg0OCwgNTM4NTUsIDUzODYyLCA1Mzg2OSwgNTM4NzYsIAotICAgIDUzODg1LCA1Mzg5NCwgNTM4OTcsIDUzOTAwLCA1MzkwNSwgNTM5MTAsIDUzOTE2LCA1MzkyMiwgNTM5MjksIDUzOTM2LCAKLSAgICA1Mzk0NiwgNTM5NTYsIDUzOTYzLCA1Mzk3MCwgNTM5NzgsIDUzOTg2LCA1Mzk5NCwgNTQwMDIsIDU0MDEwLCA1NDAxOCwgCi0gICAgNTQwMjQsIDU0MDMwLCA1NDAzNCwgNTQwMzgsIDU0MDQ1LCA1NDA1MiwgNTQwNTcsIDU0MDYyLCA1NDA2NywgNTQwNzIsIAotICAgIDU0MDc4LCA1NDA5MiwgNTQwOTksIDU0MTA2LCA1NDExMCwgNTQxMTIsIDU0MTE0LCA1NDExOSwgNTQxMjQsIDU0MTI5LCAKLSAgICA1NDEzNCwgNTQxNDIsIDU0MTQ5LCA1NDE1NiwgNTQxNjQsIDU0MTc2LCA1NDE4NCwgNTQxOTIsIDU0MjAzLCA1NDIwNywgCi0gICAgNTQyMTEsIDU0MjE3LCA1NDIyNSwgNTQyMzgsIDU0MjQ1LCA1NDI1MiwgNTQyNTksIDU0MjY0LCA1NDI3MSwgNTQyODAsIAotICAgIDU0Mjg4LCA1NDI5NCwgNTQzMDAsIDU0MzA2LCA1NDMxNSwgNTQzMjQsIDU0MzMyLCA1NDM0MSwgNTQzNDYsIDU0MzQ5LCAKLSAgICA1NDM1NCwgNTQzNjAsIDU0MzY2LCA1NDM3MiwgNTQzNzgsIDU0MzgyLCA1NDM4NSwgNTQzODksIDU0MzkzLCA1NDM5OSwgCi0gICAgNTQ0MDUsIDU0NDExLCA1NDQxNywgNTQ0MjEsIDU0NDI1LCA1NDQzMiwgNTQ0MzksIDU0NDQ2LCA1NDQ1MywgNTQ0NjAsIAotICAgIDU0NDY3LCA1NDQ3NywgNTQ0ODcsIDU0NDk0LCA1NDUwMSwgNTQ1MDksIDU0NTE3LCA1NDUyMSwgNTQ1MjYsIDU0NTMxLCAKLSAgICA1NDUzNywgNTQ1NDMsIDU0NTQ2LCA1NDU0OSwgNTQ1NTIsIDU0NTU1LCA1NDU1OSwgNTQ1NjQsIDU0NTY5LCA1NDU3NCwgCi0gICAgNTQ1NzksIDU0NTg0LCA1NDU4OCwgNTQ1OTIsIDU0NTk2LCA1NDYwMCwgNTQ2MDQsIDU0NjA4LCA1NDYxMiwgNTQ2MTgsIAotICAgIDU0NjIyLCA1NDYyOCwgNTQ2MzMsIDU0NjQwLCA1NDY0OCwgNTQ2NTUsIDU0NjYzLCA1NDY3MCwgNTQ2NzgsIDU0Njg3LCAKLSAgICA1NDY5NCwgNTQ3MDQsIDU0NzE1LCA1NDcyMSwgNTQ3MzAsIDU0NzM2LCA1NDc0NSwgNTQ3NTQsIDU0NzYwLCA1NDc2NiwgCi0gICAgNTQ3NzAsIDU0Nzc0LCA1NDc4MywgNTQ3OTIsIDU0Nzk5LCA1NDgwNiwgNTQ4MTUsIDAsIDAsIDAsIDU0ODI0LCA1NDgyOSwgCi0gICAgNTQ4MzMsIDU0ODM3LCA1NDg0MiwgNTQ4NDcsIDU0ODUyLCA1NDg2MCwgNTQ4NjgsIDU0ODcxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA3NTA1NiwgNzUwNjMsIDc1MDcwLCA3NTA3NiwgNzUwODQsIDc1MDkyLCA3NTEwMCwgNzUxMDgsIDc1MTE2LCAKKyAgICA3NTEyNCwgNzUxMzAsIDc1MTM2LCA3NTE0MywgNzUxNDksIDc1MTU1LCA3NTE2MSwgNzUxNjgsIDc1MTc1LCA3NTE4MiwgCisgICAgNzUxODksIDc1MTk2LCA3NTIwMywgNzUyMTAsIDc1MjE3LCA3NTIyNCwgNzUyMzEsIDc1MjM4LCA3NTI0NSwgNzUyNTIsIAorICAgIDc1MjU5LCA3NTI2NSwgNzUyNzIsIDc1Mjc5LCA3NTI4NiwgNzUyOTMsIDc1MzAwLCA3NTMwNywgNzUzMTQsIDc1MzIxLCAKKyAgICA3NTMyOCwgNzUzMzUsIDc1MzQyLCA3NTM0OSwgNzUzNTYsIDc1MzYzLCA3NTM3MCwgNzUzNzcsIDc1Mzg0LCA3NTM5MSwgCisgICAgNzUzOTksIDc1NDA3LCA3NTQxNSwgNzU0MjMsIDAsIDAsIDAsIDAsIDc1NDMxLCA3NTQzOSwgNzU0NDcsIDc1NDU1LCAKKyAgICA3NTQ2MywgNzU0NzEsIDc1NDc5LCA3NTQ4NSwgNzU0OTEsIDc1NDk3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NTUwMywgNzU1MDcsIAorICAgIDc1NTEyLCA3NTUxNywgNzU1MjIsIDc1NTI3LCA3NTUzMiwgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTIsIDc1NTU3LCAKKyAgICA3NTU2MiwgNzU1NjYsIDc1NTcxLCA3NTU3NiwgNzU1ODAsIDc1NTg1LCA3NTU5MCwgNzU1OTUsIDc1NjAwLCA3NTYwNSwgCisgICAgNzU2MTAsIDc1NjE1LCA3NTYxOSwgNzU2MjQsIDc1NjI5LCA3NTYzNCwgNzU2MzksIDc1NjQzLCA3NTY0NywgNzU2NTEsIAorICAgIDc1NjU1LCA3NTY1OSwgNzU2NjMsIDc1NjY4LCA3NTY3MywgNzU2NzgsIDc1NjgzLCA3NTY4OCwgNzU2OTUsIDc1NzAxLCAKKyAgICA3NTcwNiwgNzU3MTEsIDc1NzE2LCA3NTcyMSwgNzU3MjcsIDc1NzM0LCA3NTc0MCwgNzU3NDcsIDc1NzU0LCA3NTc2MSwgCisgICAgNzU3NjYsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzkwLCA3NTc5NSwgNzU4MDAsIAorICAgIDc1ODA0LCA3NTgwOSwgNzU4MTMsIDc1ODE4LCA3NTgyMiwgNzU4MjcsIDc1ODMyLCA3NTgzOCwgNzU4NDMsIDc1ODQ5LCAKKyAgICA3NTg1MywgNzU4NTgsIDc1ODYzLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MSwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgCisgICAgNzU5MDEsIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDYsIAorICAgIDc1OTUxLCA3NTk1NiwgNzU5NjEsIDc1OTY2LCA3NTk3MSwgNzU5NzYsIDc1OTgwLCA3NTk4NSwgNzU5OTAsIDc1OTk1LCAKKyAgICA3NTk5OSwgNzYwMDMsIDc2MDA4LCA3NjAxMywgNzYwMTgsIDc2MDIzLCA3NjAyOCwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCisgICAgNzYwNDgsIDc2MDU0LCA3NjA1OSwgNzYwNjUsIDc2MDcwLCA3NjA3NiwgNzYwODIsIDc2MDg5LCA3NjA5NSwgNzYxMDIsIAorICAgIDc2MTA3LCA3NjExMywgNzYxMTksIDc2MTI0LCA3NjEzMCwgNzYxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2MTQxLCA3NjE0NSwgNzYxNTAsIDc2MTU1LCA3NjE1OSwgNzYxNjMsIDc2MTY3LCA3NjE3MSwgNzYxNzUsIDc2MTc5LCAKKyAgICA3NjE4NCwgNzYxODgsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTkzLCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAorICAgIDc2MjE4LCA3NjIyMiwgNzYyMjcsIDc2MjMxLCA3NjIzNiwgNzYyNDAsIDc2MjQ0LCA3NjI0OCwgNzYyNTMsIDc2MjU3LCAKKyAgICA3NjI2MiwgNzYyNjcsIDc2MjcyLCA3NjI3OCwgNzYyODQsIDc2MjkxLCA3NjI5NiwgNzYzMDEsIDc2MzA3LCA3NjMxMSwgCisgICAgNzYzMTYsIDc2MzE5LCA3NjMyMiwgNzYzMjYsIDAsIDAsIDc2MzMxLCA3NjMzOCwgNzYzNDQsIDc2MzUwLCA3NjM1NiwgCisgICAgNzYzNjIsIDc2MzY4LCA3NjM3NCwgNzYzODEsIDc2Mzg3LCA3NjM5NCwgNzY0MDAsIDc2NDA3LCA3NjQxNCwgNzY0MjEsIAorICAgIDc2NDI4LCA3NjQzNSwgNzY0NDIsIDc2NDQ5LCA3NjQ1NiwgNzY0NjMsIDc2NDcwLCA3NjQ3NiwgNzY0ODMsIDc2NDg5LCAKKyAgICA3NjQ5NiwgNzY1MDMsIDc2NTEwLCA3NjUxNiwgNzY1MjMsIDc2NTMwLCA3NjUzNywgNzY1NDMsIDc2NTUwLCA3NjU1NywgCisgICAgNzY1NjMsIDc2NTcwLCA3NjU3NiwgNzY1ODMsIDc2NTkwLCA3NjU5NiwgNzY2MDIsIDc2NjA5LCA3NjYxNSwgNzY2MjIsIAorICAgIDc2NjI5LCA3NjYzOCwgNzY2NDUsIDc2NjUyLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCAKKyAgICA3NjY4NSwgNzY2OTAsIDc2Njk0LCA3NjY5OSwgNzY3MDQsIDc2NzA5LCA3NjcxNCwgNzY3MTksIDc2NzI0LCA3NjcyOCwgCisgICAgNzY3MzMsIDc2NzM3LCA3Njc0MiwgNzY3NDcsIDc2NzUyLCA3Njc1NywgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzYsIAorICAgIDc2NzgyLCA3Njc4NywgNzY3OTMsIDc2Nzk5LCA3NjgwNSwgNzY4MTEsIDc2ODE3LCA3NjgyMiwgNzY4MjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2ODMyLCA3NjgzNywgNzY4NDEsIDc2ODQ1LCA3Njg0OSwgNzY4NTMsIDc2ODU3LCAKKyAgICA3Njg2MSwgNzY4NjUsIDc2ODY5LCA3Njg3MywgNzY4NzcsIDc2ODgxLCA3Njg4NSwgNzY4ODksIDc2ODkzLCA3Njg5NywgCisgICAgNzY5MDEsIDc2OTA1LCA3NjkwOSwgNzY5MTMsIDc2OTE3LCA3NjkyMSwgNzY5MjUsIDc2OTI5LCA3NjkzMywgNzY5MzcsIAorICAgIDc2OTQxLCA3Njk0NSwgNzY5NDksIDAsIDAsIDAsIDc2OTUzLCA3Njk1NywgNzY5NjEsIDc2OTY1LCA3Njk2OSwgNzY5NzIsIAorICAgIDc2OTc4LCA3Njk4MSwgNzY5ODUsIDc2OTg4LCA3Njk5NCwgNzcwMDAsIDc3MDA4LCA3NzAxMSwgNzcwMTUsIDc3MDE4LCAKKyAgICA3NzAyMSwgNzcwMjcsIDc3MDMzLCA3NzAzNywgNzcwNDMsIDc3MDQ3LCA3NzA1MSwgNzcwNTcsIDc3MDYxLCA3NzA2NywgCisgICAgNzcwNzMsIDc3MDc3LCA3NzA4MSwgNzcwODcsIDc3MDkxLCA3NzA5NywgNzcxMDMsIDc3MTA3LCA3NzExMywgNzcxMTcsIAorICAgIDc3MTIzLCA3NzEyNywgNzcxMzAsIDc3MTM2LCA3NzE0MCwgNzcxNDYsIDc3MTQ5LCA3NzE1MiwgNzcxNTYsIDc3MTYyLCAKKyAgICA3NzE2NiwgNzcxNzAsIDc3MTc2LCA3NzE4MiwgNzcxODYsIDc3MTg5LCA3NzE5NSwgNzcyMDAsIDc3MjA1LCA3NzIxMCwgCisgICAgNzcyMTcsIDc3MjIyLCA3NzIyOSwgNzcyMzQsIDc3MjQxLCA3NzI0NiwgNzcyNTEsIDc3MjU2LCA3NzI2MSwgNzcyNjQsIAorICAgIDc3MjY4LCA3NzI3MiwgNzcyNzcsIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCAKKyAgICA3NzMxOSwgNzczMjQsIDAsIDc3MzMxLCA3NzMzNCwgNzczMzgsIDc3MzQxLCA3NzM0NCwgNzczNDcsIDc3MzUwLCA3NzM1MywgCisgICAgNzczNTYsIDc3MzYwLCA3NzM2MywgMCwgMCwgMCwgMCwgNzczNjcsIDc3Mzc0LCA3NzM3OSwgNzczODUsIDc3MzkxLCAKKyAgICA3NzM5NywgNzc0MDMsIDc3NDA5LCA3NzQxNSwgNzc0MjIsIDc3NDI5LCA3NzQzNiwgNzc0NDMsIDc3NDUwLCA3NzQ1NywgCisgICAgNzc0NjQsIDc3NDcxLCA3NzQ3OCwgNzc0ODUsIDc3NDkyLCA3NzQ5OCwgNzc1MDQsIDc3NTEwLCA3NzUxNiwgNzc1MjIsIAorICAgIDc3NTI4LCA3NzUzNSwgNzc1NDEsIDc3NTQ4LCA3NzU1NSwgNzc1NjIsIDc3NTY5LCA3NzU3NiwgMCwgNzc1ODMsIDc3NTg3LCAKKyAgICA3NzU5MSwgNzc1OTUsIDc3NTk5LCA3NzYwNCwgNzc2MDgsIDc3NjEyLCA3NzYxNywgNzc2MjIsIDc3NjI3LCA3NzYzMiwgCisgICAgNzc2MzcsIDc3NjQyLCA3NzY0NywgNzc2NTIsIDc3NjU3LCA3NzY2MiwgNzc2NjcsIDc3NjcyLCA3NzY3NywgNzc2ODIsIAorICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAyLCA3NzcwNywgNzc3MTEsIDc3NzE2LCA3NzcyMSwgNzc3MjYsIDc3NzMxLCAKKyAgICA3NzczNiwgNzc3NDAsIDc3NzQ1LCA3Nzc0OSwgNzc3NTQsIDc3NzU5LCA3Nzc2NCwgNzc3NjksIDc3Nzc0LCA3Nzc3OCwgCisgICAgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc4MDEsIDc3ODA2LCA3NzgxMiwgNzc4MTcsIDc3ODIzLCA3NzgyOSwgNzc4MzUsIAorICAgIDc3ODQwLCA3Nzg0NiwgNzc4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODU4LCA3Nzg2NCwgNzc4NzAsIAorICAgIDc3ODc2LCA3Nzg4MywgNzc4ODksIDc3ODk1LCA3NzkwMSwgNzc5MDcsIDc3OTEzLCA3NzkxOCwgNzc5MjMsIDc3OTI5LCAKKyAgICA3NzkzNiwgMCwgMCwgNzc5NDMsIDc3OTQ4LCA3Nzk1MiwgNzc5NTYsIDc3OTYwLCA3Nzk2NCwgNzc5NjgsIDc3OTcyLCAKKyAgICA3Nzk3NywgNzc5ODEsIDAsIDAsIDc3OTg2LCA3Nzk5MiwgNzc5OTgsIDc4MDA1LCA3ODAxMywgNzgwMTksIDc4MDI1LCAKKyAgICA3ODAzMSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NywgNzgwNzMsIDc4MDc5LCA3ODA4NSwgCisgICAgNzgwOTEsIDc4MDk2LCA3ODEwMiwgNzgxMDgsIDc4MTE1LCA3ODEyMSwgNzgxMjcsIDc4MTMzLCA3ODE0MCwgNzgxNDcsIAorICAgIDc4MTU0LCA3ODE2MCwgNzgxNjUsIDc4MTcwLCA3ODE3NiwgNzgxODQsIDc4MTkxLCA3ODE5OCwgNzgyMDYsIDc4MjE0LCAKKyAgICA3ODIyMSwgNzgyMjgsIDc4MjM1LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCisgICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNiwgNzgzMzMsIDc4MzQwLCA3ODM0NywgNzgzNTQsIAorICAgIDc4MzYwLCA3ODM2NiwgNzgzNzMsIDc4MzgwLCA3ODM4NywgNzgzOTQsIDc4NDAxLCA3ODQwOCwgNzg0MTUsIDc4NDIyLCAKKyAgICA3ODQyOSwgNzg0MzYsIDc4NDQzLCA3ODQ1MCwgNzg0NTcsIDc4NDY0LCA3ODQ3MSwgNzg0NzgsIDc4NDg1LCA3ODQ5MiwgCisgICAgNzg0OTksIDc4NTA2LCA3ODUxMywgNzg1MjAsIDc4NTI3LCA3ODUzNCwgNzg1NDAsIDc4NTQ2LCA3ODU1MywgNzg1NTksIAorICAgIDc4NTY0LCA3ODU3MCwgNzg1NzUsIDc4NTgwLCA3ODU4NSwgNzg1OTIsIDc4NTk4LCA3ODYwNCwgNzg2MTAsIDc4NjE2LCAKKyAgICA3ODYyMiwgNzg2MjgsIDc4NjM0LCA3ODY0MiwgNzg2NTAsIDc4NjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY2NiwgNzg2NzIsIDc4Njc4LCA3ODY4NCwgCisgICAgNzg2OTIsIDc4NzAwLCA3ODcwNiwgNzg3MTIsIDc4NzE5LCA3ODcyNiwgNzg3MzMsIDc4NzQwLCA3ODc0NywgNzg3NTQsIAorICAgIDc4NzYxLCA3ODc2OCwgNzg3NzUsIDc4NzgzLCA3ODc5MSwgNzg3OTksIDc4ODA3LCA3ODgxNSwgNzg4MjEsIDc4ODI5LCAKKyAgICA3ODgzNSwgNzg4NDMsIDc4ODUyLCA3ODg2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg4NjYsIDc4ODcwLCAKKyAgICA3ODg3NCwgNzg4NzgsIDc4ODgyLCA3ODg4NiwgMCwgMCwgNzg4OTAsIDc4ODk0LCA3ODg5OCwgNzg5MDIsIDc4OTA2LCAKKyAgICA3ODkxMCwgMCwgMCwgNzg5MTQsIDc4OTE4LCA3ODkyMiwgNzg5MjYsIDc4OTMwLCA3ODkzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzg5MzgsIDc4OTQyLCA3ODk0NiwgNzg5NTAsIDc4OTU0LCA3ODk1OCwgNzg5NjIsIDAsIDc4OTY2LCAKKyAgICA3ODk3MCwgNzg5NzQsIDc4OTc4LCA3ODk4MiwgNzg5ODYsIDc4OTkwLCAwLCA3ODk5NCwgNzkwMDEsIDc5MDA3LCA3OTAxMywgCisgICAgNzkwMTksIDc5MDI2LCA3OTAzMywgNzkwNDIsIDc5MDUzLCA3OTA2MywgNzkwNzIsIDc5MDgwLCA3OTA4OCwgNzkwOTYsIAorICAgIDc5MTAyLCA3OTExMCwgNzkxMTcsIDc5MTI0LCA3OTEzMywgNzkxNDQsIDc5MTUyLCA3OTE2MiwgNzkxNjgsIDc5MTc4LCAKKyAgICA3OTE4NywgNzkxOTIsIDc5MjAwLCA3OTIwOSwgNzkyMTQsIDc5MjIzLCA3OTIzMCwgNzkyNDAsIDc5MjUyLCA3OTI1NywgCisgICAgNzkyNjQsIDc5MjcxLCA3OTI3NiwgNzkyODYsIDc5Mjk2LCA3OTMwNiwgNzkzMTYsIDc5MzMxLCA3OTM0NCwgNzkzNTUsIAorICAgIDc5MzYzLCA3OTM2OCwgNzkzNzksIDc5Mzg4LCA3OTM5NSwgNzk0MDIsIDc5NDA4LCA3OTQxNCwgNzk0MTksIDc5NDI2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQzMiwgNzk0MzYsIDc5NDQwLCA3OTQ0NCwgNzk0NDgsIDc5NDUyLCAKKyAgICA3OTQ1NywgNzk0NjIsIDc5NDY2LCA3OTQ3MSwgNzk0NzYsIDc5NDgxLCA3OTQ4NiwgNzk0OTEsIDc5NDk1LCA3OTUwMCwgCisgICAgNzk1MDUsIDc5NTEwLCA3OTUxNSwgNzk1MjAsIDc5NTI1LCA3OTUzMCwgNzk1MzUsIDc5NTQwLCA3OTU0NSwgNzk1NTAsIAorICAgIDc5NTU0LCA3OTU1OSwgNzk1NjQsIDc5NTY5LCA3OTU3NCwgNzk1NzksIDc5NTg0LCA3OTU4OSwgNzk1OTQsIDc5NTk5LCAKKyAgICA3OTYwNCwgNzk2MDksIDc5NjE0LCA3OTYxOSwgNzk2MjQsIDc5NjI5LCA3OTYzNCwgNzk2MzksIDc5NjQ0LCA3OTY0OSwgCisgICAgNzk2NTMsIDc5NjU4LCA3OTY2MywgNzk2NjgsIDc5NjczLCA3OTY3OCwgNzk2ODMsIDc5Njg4LCA3OTY5MywgNzk2OTgsIAorICAgIDc5NzAzLCA3OTcwOCwgNzk3MTMsIDc5NzE4LCA3OTcyMywgNzk3MjgsIDc5NzMzLCA3OTczOCwgNzk3NDMsIDc5NzQ4LCAKKyAgICA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzMsIDc5Nzc4LCA3OTc4MywgNzk3ODgsIDc5NzkzLCA3OTc5OCwgCisgICAgNzk4MDMsIDc5ODA4LCA3OTgxMywgNzk4MTgsIDc5ODIyLCA3OTgyOSwgNzk4MzYsIDc5ODQzLCA3OTg1MCwgNzk4NTYsIAorICAgIDc5ODYzLCA3OTg3MCwgNzk4NzcsIDc5ODg0LCA3OTg5MSwgNzk4OTgsIDc5OTA1LCA3OTkxMiwgNzk5MTksIDc5OTI2LCAKKyAgICA3OTkzMiwgNzk5MzksIDc5OTQ2LCA3OTk1MywgNzk5NjAsIDc5OTY3LCA3OTk3NCwgNzk5ODEsIDc5OTg4LCA3OTk5NSwgCisgICAgODAwMDIsIDgwMDA5LCA4MDAxOCwgODAwMjcsIDgwMDM2LCA4MDA0NSwgODAwNTQsIDgwMDYzLCA4MDA3MiwgODAwODEsIAorICAgIDgwMDg5LCA4MDA5NywgODAxMDUsIDgwMTEzLCA4MDEyMSwgODAxMjksIDgwMTM3LCA4MDE0NSwgODAxNTEsIDgwMTU5LCAwLCAKKyAgICAwLCA4MDE2NywgODAxNzQsIDgwMTgwLCA4MDE4NiwgODAxOTIsIDgwMTk4LCA4MDIwNCwgODAyMTAsIDgwMjE3LCA4MDIyMywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4NzUsIDU0ODgwLCA1NDg4NSwgCi0gICAgNTQ4OTAsIDU0ODk1LCA1NDkwMCwgNTQ5MDUsIDU0OTEwLCA1NDkxNSwgNTQ5MjAsIDU0OTI1LCA1NDkzMSwgNTQ5MzUsIAotICAgIDU0OTQwLCA1NDk0NSwgNTQ5NTAsIDU0OTU1LCA1NDk2MCwgNTQ5NjUsIDU0OTcwLCA1NDk3NSwgNTQ5ODAsIDU0OTg1LCAKLSAgICA1NDk5MCwgNTQ5OTUsIDU1MDAwLCA1NTAwNSwgNTUwMTAsIDU1MDE1LCA1NTAyMCwgNTUwMjUsIDU1MDMwLCA1NTAzNSwgCi0gICAgNTUwNDAsIDU1MDQ1LCA1NTA1MSwgNTUwNTYsIDU1MDYyLCA1NTA3MSwgNTUwNzYsIDU1MDg0LCA1NTA5MSwgNTUxMDAsIAotICAgIDU1MTA1LCA1NTExMCwgNTUxMTUsIDU1MTIxLCAwLCA1NTEyOCwgNTUxMzMsIDU1MTM4LCA1NTE0MywgNTUxNDgsIDU1MTUzLCAKLSAgICA1NTE1OCwgNTUxNjMsIDU1MTY4LCA1NTE3MywgNTUxNzgsIDU1MTg0LCA1NTE4OCwgNTUxOTMsIDU1MTk4LCA1NTIwMywgCi0gICAgNTUyMDgsIDU1MjEzLCA1NTIxOCwgNTUyMjMsIDU1MjI4LCA1NTIzMywgNTUyMzgsIDU1MjQzLCA1NTI0OCwgNTUyNTMsIAotICAgIDU1MjU4LCA1NTI2MywgNTUyNjgsIDU1MjczLCA1NTI3OCwgNTUyODMsIDU1Mjg4LCA1NTI5MywgNTUyOTgsIDU1MzA0LCAKLSAgICA1NTMwOSwgNTUzMTUsIDU1MzI0LCA1NTMyOSwgNTUzMzcsIDU1MzQ0LCA1NTM1MywgNTUzNTgsIDU1MzYzLCA1NTM2OCwgCi0gICAgNTUzNzQsIDAsIDU1MzgxLCA1NTM4OSwgNTUzOTcsIDU1NDA2LCA1NTQxMywgNTU0MjEsIDU1NDI3LCA1NTQzNiwgNTU0NDQsIAotICAgIDU1NDUyLCA1NTQ2MCwgNTU0NjgsIDU1NDc2LCA1NTQ4NCwgNTU0ODksIDU1NDk2LCA1NTUwMiwgNTU1MDksIDU1NTE3LCAKLSAgICA1NTUyNCwgNTU1MzEsIDU1NTM5LCA1NTU0NSwgNTU1NTEsIDU1NTU4LCA1NTU2NSwgNTU1NzUsIDU1NTg1LCA1NTU5MiwgCi0gICAgNTU1OTksIDU1NjA0LCA1NTYxNCwgNTU2MjQsIDU1NjI5LCA1NTYzNCwgNTU2MzksIDU1NjQ0LCA1NTY0OSwgNTU2NTQsIAotICAgIDU1NjU5LCA1NTY2NCwgNTU2NjksIDU1Njc0LCA1NTY3OSwgNTU2ODQsIDU1Njg5LCA1NTY5NCwgNTU2OTksIDU1NzA0LCAKLSAgICA1NTcwOSwgNTU3MTQsIDU1NzE5LCA1NTcyNCwgNTU3MjksIDU1NzM0LCA1NTczOSwgNTU3NDQsIDU1NzQ5LCA1NTc1NCwgCi0gICAgNTU3NTksIDU1NzY0LCA1NTc2OSwgNTU3NzQsIDU1Nzc4LCA1NTc4MiwgNTU3ODcsIDU1NzkyLCA1NTc5NywgNTU4MDIsIAotICAgIDU1ODA3LCA1NTgxMiwgNTU4MTcsIDU1ODIyLCA1NTgyNywgNTU4MzIsIDU1ODM3LCA1NTg0MiwgNTU4NDcsIDU1ODUyLCAKLSAgICA1NTg1NywgNTU4NjIsIDU1ODY3LCA1NTg3MiwgNTU4NzksIDU1ODg2LCA1NTg5MywgNTU5MDAsIDU1OTA3LCA1NTkxNCwgCi0gICAgNTU5MjEsIDU1OTI4LCA1NTkzNSwgNTU5NDIsIDU1OTQ5LCA1NTk1NiwgNTU5NjMsIDU1OTcwLCA1NTk3NSwgNTU5ODAsIAotICAgIDU1OTg3LCA1NTk5NCwgNTYwMDEsIDU2MDA4LCA1NjAxNSwgNTYwMjIsIDU2MDI5LCA1NjAzNiwgNTYwNDMsIDU2MDUwLCAKLSAgICA1NjA1NywgNTYwNjQsIDU2MDcwLCA1NjA3NiwgNTYwODIsIDU2MDg4LCA1NjA5NSwgNTYxMDIsIDU2MTA5LCA1NjExNiwgCi0gICAgNTYxMjMsIDU2MTMwLCA1NjEzNywgNTYxNDQsIDU2MTUxLCA1NjE1OCwgNTYxNjYsIDU2MTc0LCA1NjE4MiwgNTYxOTAsIAotICAgIDU2MTk4LCA1NjIwNiwgNTYyMTQsIDU2MjIyLCA1NjIyNiwgNTYyMzIsIDU2MjM4LCA1NjI0MiwgNTYyNDgsIDU2MjU0LCAKLSAgICA1NjI2MCwgNTYyNjcsIDU2Mjc0LCA1NjI4MSwgNTYyODgsIDU2MjkzLCA1NjI5OSwgNTYzMDUsIDU2MzEyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NjMxOSwgNTYzMjcsIDU2MzM2LCA1NjM0NSwgNTYzNTMsIDU2MzU5LCA1NjM2NCwgNTYzNjksIDU2Mzc0LCAKLSAgICA1NjM3OSwgNTYzODQsIDU2Mzg5LCA1NjM5NCwgNTYzOTksIDU2NDA0LCA1NjQwOSwgNTY0MTQsIDU2NDE5LCA1NjQyNCwgCi0gICAgNTY0MjksIDU2NDM0LCA1NjQzOSwgNTY0NDQsIDU2NDQ5LCA1NjQ1NCwgNTY0NTksIDU2NDY0LCA1NjQ2OSwgNTY0NzQsIAotICAgIDU2NDc5LCA1NjQ4NCwgNTY0ODksIDU2NDk0LCA1NjQ5OSwgNTY1MDQsIDU2NTA5LCA1NjUxNCwgNTY1MTksIDU2NTI0LCAKLSAgICA1NjUyOSwgNTY1MzQsIDU2NTM5LCA1NjU0NCwgNTY1NDksIDU2NTU0LCAwLCA1NjU1OSwgMCwgMCwgMCwgMCwgMCwgNTY1NjQsIAotICAgIDAsIDAsIDU2NTY5LCA1NjU3MywgNTY1NzgsIDU2NTgzLCA1NjU4OCwgNTY1OTMsIDU2NjAyLCA1NjYwNywgNTY2MTIsIAotICAgIDU2NjE3LCA1NjYyMiwgNTY2MjcsIDU2NjMyLCA1NjYzNywgNTY2NDIsIDU2NjQ5LCA1NjY1NCwgNTY2NTksIDU2NjY4LCAKLSAgICA1NjY3NSwgNTY2ODAsIDU2Njg1LCA1NjY5MCwgNTY2OTcsIDU2NzAyLCA1NjcwOSwgNTY3MTQsIDU2NzE5LCA1NjcyNiwgCi0gICAgNTY3MzMsIDU2NzM4LCA1Njc0MywgNTY3NDgsIDU2NzU1LCA1Njc2MiwgNTY3NjcsIDU2NzcyLCA1Njc3NywgNTY3ODIsIAotICAgIDU2Nzg3LCA1Njc5NCwgNTY4MDEsIDU2ODA2LCA1NjgxMSwgNTY4MTYsIDU2ODIxLCA1NjgyNiwgNTY4MzEsIDU2ODM2LCAKLSAgICA1Njg0MSwgNTY4NDYsIDU2ODUxLCA1Njg1NiwgNTY4NjMsIDU2ODY4LCA1Njg3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTY4NzgsIDU2ODg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njg5MCwgNTY4OTUsIAotICAgIDU2ODk5LCA1NjkwMywgNTY5MDcsIDU2OTExLCA1NjkxNSwgNTY5MTksIDU2OTIzLCA1NjkyNywgNTY5MzEsIDU2OTM1LCAKLSAgICA1Njk0MSwgNTY5NDUsIDU2OTQ5LCA1Njk1MywgNTY5NTcsIDU2OTYxLCA1Njk2NSwgNTY5NjksIDU2OTczLCA1Njk3NywgCi0gICAgNTY5ODEsIDU2OTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Njk4OSwgNTY5OTMsIDU2OTk3LCA1NzAwMSwgCi0gICAgNTcwMDUsIDU3MDA5LCA1NzAxMywgMCwgNTcwMTcsIDU3MDIxLCA1NzAyNSwgNTcwMjksIDU3MDMzLCA1NzAzNywgNTcwNDEsIAotICAgIDAsIDU3MDQ1LCA1NzA0OSwgNTcwNTMsIDU3MDU3LCA1NzA2MSwgNTcwNjUsIDU3MDY5LCAwLCA1NzA3MywgNTcwNzcsIAotICAgIDU3MDgxLCA1NzA4NSwgNTcwODksIDU3MDkzLCA1NzA5NywgMCwgNTcxMDEsIDU3MTA1LCA1NzEwOSwgNTcxMTMsIDU3MTE3LCAKLSAgICA1NzEyMSwgNTcxMjUsIDAsIDU3MTI5LCA1NzEzMywgNTcxMzcsIDU3MTQxLCA1NzE0NSwgNTcxNDksIDU3MTUzLCAwLCAKLSAgICA1NzE1NywgNTcxNjEsIDU3MTY1LCA1NzE2OSwgNTcxNzMsIDU3MTc3LCA1NzE4MSwgMCwgNTcxODUsIDU3MTg5LCA1NzE5MywgCi0gICAgNTcxOTcsIDU3MjAxLCA1NzIwNSwgNTcyMDksIDAsIDU3MjEzLCA1NzIxOCwgNTcyMjMsIDU3MjI4LCA1NzIzMywgNTcyMzgsIAotICAgIDU3MjQzLCA1NzI0NywgNTcyNTIsIDU3MjU3LCA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCAKLSAgICA1NzI5MCwgNTcyOTUsIDU3MzAwLCA1NzMwNSwgNTczMTAsIDU3MzE1LCA1NzMyMCwgNTczMjQsIDU3MzI5LCA1NzMzNCwgCi0gICAgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTcsIDU3MzY0LCA1NzM3MSwgNTczODAsIDU3Mzg3LCA1NzM5NiwgNTc0MDAsIAotICAgIDU3NDA0LCA1NzQxMCwgNTc0MTYsIDU3NDIyLCA1NzQzMCwgNTc0MzYsIDU3NDQwLCA1NzQ0NCwgNTc0NDgsIDU3NDU0LCAKLSAgICA1NzQ2MCwgNTc0NjQsIDU3NDY2LCA1NzQ3MCwgNTc0NzYsIDU3NDc4LCA1NzQ4MiwgNTc0ODYsIDU3NDkwLCA1NzQ5NiwgCi0gICAgNTc1MDEsIDU3NTA1LCA1NzUwOSwgNTc1MTQsIDU3NTIwLCA1NzUyNSwgNTc1MzAsIDU3NTM1LCA1NzU0MCwgNTc1NDcsIAotICAgIDU3NTU0LCA1NzU1OSwgNTc1NjQsIDU3NTY5LCA1NzU3NCwgNTc1NzksIDU3NTg0LCA1NzU4OCwgNTc1OTIsIDU3NTk5LCAKLSAgICA1NzYwNiwgNTc2MTIsIDU3NjE2LCA1NzYyMSwgNTc2MjMsIDU3NjI3LCA1NzYzNSwgNTc2MzksIDU3NjQzLCA1NzY0NywgCi0gICAgNTc2NTEsIDU3NjU3LCA1NzY2MywgNTc2NjcsIDU3NjczLCA1NzY3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyMzAsIDgwMjM0LCA4MDIzOCwgODAyNDIsIAorICAgIDgwMjQ2LCA4MDI1MCwgODAyNTQsIDgwMjU4LCA4MDI2MiwgODAyNjYsIDgwMjcwLCA4MDI3NCwgODAyNzgsIDgwMjgyLCAKKyAgICA4MDI4NiwgODAyOTAsIDgwMjk0LCA4MDI5OCwgODAzMDIsIDgwMzA2LCA4MDMxMCwgODAzMTQsIDgwMzE4LCAwLCAwLCAwLCAKKyAgICAwLCA4MDMyMiwgODAzMjYsIDgwMzMwLCA4MDMzNCwgODAzMzgsIDgwMzQyLCA4MDM0NiwgODAzNTAsIDgwMzU0LCA4MDM1OCwgCisgICAgODAzNjIsIDgwMzY2LCA4MDM3MCwgODAzNzQsIDgwMzc4LCA4MDM4MiwgODAzODYsIDgwMzkwLCA4MDM5NCwgODAzOTgsIAorICAgIDgwNDAyLCA4MDQwNiwgODA0MTAsIDgwNDE0LCA4MDQxOCwgODA0MjIsIDgwNDI2LCA4MDQzMCwgODA0MzQsIDgwNDM4LCAKKyAgICA4MDQ0MiwgODA0NDYsIDgwNDUwLCA4MDQ1NCwgODA0NTgsIDgwNDYyLCA4MDQ2NiwgODA0NzAsIDgwNDc0LCA4MDQ3OCwgCisgICAgODA0ODIsIDgwNDg2LCA4MDQ5MCwgODA0OTQsIDgwNDk4LCA4MDUwMiwgODA1MDYsIDgwNTEwLCA4MDUxNCwgMCwgMCwgMCwgCisgICAgMCwgODA1MTgsIDgwNTIyLCA4MDUyNiwgODA1MzAsIDgwNTM0LCA4MDUzOCwgODA1NDIsIDgwNTQ2LCA4MDU1MCwgODA1NTQsIAorICAgIDgwNTU4LCA4MDU2MiwgODA1NjYsIDgwNTcwLCA4MDU3NCwgODA1NzgsIDgwNTgyLCA4MDU4NiwgODA1OTAsIDgwNTk0LCAKKyAgICA4MDU5OCwgODA2MDIsIDgwNjA2LCA4MDYxMCwgODA2MTQsIDgwNjE4LCA4MDYyMiwgODA2MjYsIDgwNjMwLCA4MDYzNCwgCisgICAgODA2MzgsIDgwNjQyLCA4MDY0NiwgODA2NTAsIDgwNjU0LCA4MDY1OCwgODA2NjIsIDgwNjY2LCA4MDY3MCwgODA2NzQsIAorICAgIDgwNjc4LCA4MDY4MiwgODA2ODYsIDgwNjkwLCA4MDY5NCwgODA2OTgsIDgwNzAyLCA4MDcwNiwgODA3MTAsIDgwNzE0LCAKKyAgICA4MDcxOCwgODA3MjIsIDgwNzI2LCA4MDczMCwgODA3MzQsIDgwNzM4LCA4MDc0MiwgODA3NDYsIDgwNzUwLCA4MDc1NCwgCisgICAgODA3NTgsIDgwNzYyLCA4MDc2NiwgODA3NzAsIDgwNzc0LCA4MDc3OCwgODA3ODIsIDgwNzg2LCA4MDc5MCwgODA3OTQsIAorICAgIDgwNzk4LCA4MDgwMiwgODA4MDYsIDgwODEwLCA4MDgxNCwgODA4MTgsIDgwODIyLCA4MDgyNiwgODA4MzAsIDgwODM0LCAKKyAgICA4MDgzOCwgODA4NDIsIDgwODQ2LCA4MDg1MCwgODA4NTQsIDgwODU4LCA4MDg2MiwgODA4NjYsIDgwODcwLCA4MDg3NCwgCisgICAgODA4NzgsIDgwODgyLCA4MDg4NiwgODA4OTAsIDgwODk0LCA4MDg5OCwgODA5MDIsIDgwOTA2LCA4MDkxMCwgODA5MTQsIAorICAgIDgwOTE4LCA4MDkyMiwgODA5MjYsIDgwOTMwLCA4MDkzNCwgODA5MzgsIDgwOTQyLCA4MDk0NiwgODA5NTAsIDgwOTU0LCAKKyAgICA4MDk1OCwgODA5NjIsIDgwOTY2LCA4MDk3MCwgODA5NzQsIDgwOTc4LCA4MDk4MiwgODA5ODYsIDgwOTkwLCA4MDk5NCwgCisgICAgODA5OTgsIDgxMDAyLCA4MTAwNiwgODEwMTAsIDgxMDE0LCA4MTAxOCwgODEwMjIsIDgxMDI2LCA4MTAzMCwgODEwMzQsIAorICAgIDgxMDM4LCA4MTA0MiwgODEwNDYsIDgxMDUwLCA4MTA1NCwgODEwNTgsIDgxMDYyLCA4MTA2NiwgODEwNzAsIDgxMDc0LCAKKyAgICA4MTA3OCwgODEwODIsIDgxMDg2LCA4MTA5MCwgODEwOTQsIDgxMDk4LCA4MTEwMiwgODExMDYsIDgxMTEwLCA4MTExNCwgCisgICAgODExMTgsIDgxMTIyLCA4MTEyNiwgODExMzAsIDgxMTM0LCA4MTEzOCwgODExNDIsIDgxMTQ2LCA4MTE1MCwgODExNTQsIAorICAgIDgxMTU4LCA4MTE2MiwgODExNjYsIDgxMTcwLCA4MTE3NCwgODExNzgsIDgxMTgyLCA4MTE4NiwgODExOTAsIDgxMTk0LCAKKyAgICA4MTE5OCwgODEyMDIsIDgxMjA2LCA4MTIxMCwgODEyMTQsIDgxMjE4LCA4MTIyMiwgODEyMjYsIDgxMjMwLCA4MTIzNCwgCisgICAgODEyMzgsIDgxMjQyLCA4MTI0NiwgODEyNTAsIDgxMjU0LCA4MTI1OCwgODEyNjIsIDgxMjY2LCA4MTI3MCwgODEyNzQsIAorICAgIDgxMjc4LCA4MTI4MiwgODEyODYsIDgxMjkwLCA4MTI5NCwgODEyOTgsIDgxMzAyLCA4MTMwNiwgODEzMTAsIDgxMzE0LCAKKyAgICA4MTMxOCwgODEzMjIsIDgxMzI2LCA4MTMzMCwgODEzMzQsIDgxMzM4LCA4MTM0MiwgODEzNDYsIDgxMzUwLCA4MTM1NCwgCisgICAgODEzNTgsIDgxMzYyLCA4MTM2NiwgODEzNzAsIDgxMzc0LCA4MTM3OCwgODEzODIsIDgxMzg2LCA4MTM5MCwgODEzOTQsIAorICAgIDgxMzk4LCA4MTQwMiwgODE0MDYsIDgxNDEwLCA4MTQxNCwgODE0MTgsIDgxNDIyLCA4MTQyNiwgODE0MzAsIDgxNDM0LCAKKyAgICA4MTQzOCwgODE0NDIsIDgxNDQ2LCA4MTQ1MCwgODE0NTQsIDgxNDU4LCA4MTQ2MiwgODE0NjYsIDgxNDcwLCA4MTQ3NCwgCisgICAgODE0NzgsIDgxNDgyLCA4MTQ4NiwgODE0OTAsIDgxNDk0LCA4MTQ5OCwgODE1MDIsIDgxNTA2LCA4MTUxMCwgODE1MTQsIAorICAgIDgxNTE4LCA4MTUyMiwgODE1MjYsIDgxNTMwLCA4MTUzNCwgODE1MzgsIDgxNTQyLCA4MTU0NiwgODE1NTAsIDgxNTU0LCAKKyAgICA4MTU1OCwgODE1NjIsIDgxNTY2LCA4MTU3MCwgODE1NzQsIDgxNTc4LCA4MTU4MiwgODE1ODYsIDgxNTkwLCA4MTU5NCwgCisgICAgODE1OTgsIDgxNjAyLCA4MTYwNiwgODE2MTAsIDgxNjE0LCA4MTYxOCwgODE2MjIsIDgxNjI2LCA4MTYzMCwgODE2MzQsIAorICAgIDgxNjM4LCA4MTY0MiwgODE2NDYsIDgxNjUwLCA4MTY1NCwgODE2NTgsIDgxNjYyLCA4MTY2NiwgODE2NzAsIDgxNjc0LCAKKyAgICA4MTY3OCwgODE2ODIsIDgxNjg2LCA4MTY5MCwgODE2OTQsIDgxNjk4LCA4MTcwMiwgODE3MDYsIDgxNzEwLCA4MTcxNCwgCisgICAgODE3MTgsIDgxNzIyLCA4MTcyNiwgODE3MzAsIDgxNzM0LCA4MTczOCwgODE3NDIsIDgxNzQ2LCA4MTc1MCwgODE3NTQsIAorICAgIDgxNzU4LCA4MTc2MiwgODE3NjYsIDgxNzcwLCA4MTc3NCwgODE3NzgsIDgxNzgyLCA4MTc4NiwgODE3OTAsIDgxNzk0LCAKKyAgICA4MTc5OCwgODE4MDIsIDgxODA2LCA4MTgxMCwgODE4MTQsIDgxODE4LCA4MTgyMiwgODE4MjYsIDgxODMwLCA4MTgzNCwgCisgICAgODE4MzgsIDgxODQyLCA4MTg0NiwgODE4NTAsIDgxODU0LCA4MTg1OCwgODE4NjIsIDgxODY2LCA4MTg3MCwgODE4NzQsIAorICAgIDgxODc4LCA4MTg4MiwgODE4ODYsIDgxODkwLCA4MTg5NCwgODE4OTgsIDgxOTAyLCA4MTkwNiwgODE5MTAsIDgxOTE0LCAKKyAgICA4MTkxOCwgODE5MjIsIDgxOTI2LCA4MTkzMCwgODE5MzQsIDgxOTM4LCA4MTk0MiwgODE5NDYsIDgxOTUwLCA4MTk1NCwgCisgICAgODE5NTgsIDgxOTYyLCA4MTk2NiwgODE5NzAsIDgxOTc0LCA4MTk3OCwgMCwgMCwgODE5ODIsIDgxOTg2LCA4MTk5MCwgCisgICAgODE5OTQsIDgxOTk4LCA4MjAwMiwgODIwMDYsIDgyMDEwLCA4MjAxNCwgODIwMTgsIDgyMDIyLCA4MjAyNiwgODIwMzAsIAorICAgIDgyMDM0LCA4MjAzOCwgODIwNDIsIDgyMDQ2LCA4MjA1MCwgODIwNTQsIDgyMDU4LCA4MjA2MiwgODIwNjYsIDgyMDcwLCAKKyAgICA4MjA3NCwgODIwNzgsIDgyMDgyLCA4MjA4NiwgODIwOTAsIDgyMDk0LCA4MjA5OCwgODIxMDIsIDgyMTA2LCA4MjExMCwgCisgICAgODIxMTQsIDgyMTE4LCA4MjEyMiwgODIxMjYsIDgyMTMwLCA4MjEzNCwgODIxMzgsIDgyMTQyLCA4MjE0NiwgODIxNTAsIAorICAgIDgyMTU0LCA4MjE1OCwgODIxNjIsIDgyMTY2LCA4MjE3MCwgODIxNzQsIDgyMTc4LCA4MjE4MiwgODIxODYsIDgyMTkwLCAKKyAgICA4MjE5NCwgODIxOTgsIDgyMjAyLCA4MjIwNiwgODIyMTAsIDgyMjE0LCA4MjIxOCwgODIyMjIsIDgyMjI2LCA4MjIzMCwgCisgICAgODIyMzQsIDgyMjM4LCA4MjI0MiwgODIyNDYsIDgyMjUwLCA4MjI1NCwgODIyNTgsIDgyMjYyLCA4MjI2NiwgODIyNzAsIAorICAgIDgyMjc0LCA4MjI3OCwgODIyODIsIDgyMjg2LCA4MjI5MCwgODIyOTQsIDgyMjk4LCA4MjMwMiwgODIzMDYsIDgyMzEwLCAKKyAgICA4MjMxNCwgODIzMTgsIDgyMzIyLCA4MjMyNiwgODIzMzAsIDgyMzM0LCA4MjMzOCwgODIzNDIsIDgyMzQ2LCA4MjM1MCwgCisgICAgODIzNTQsIDgyMzU4LCA4MjM2MiwgODIzNjYsIDgyMzcwLCA4MjM3NCwgODIzNzgsIDgyMzgyLCA4MjM4NiwgODIzOTAsIAorICAgIDgyMzk0LCA4MjM5OCwgODI0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNDA2LCAKKyAgICA4MjQxMSwgODI0MTYsIDgyNDIxLCA4MjQyNiwgODI0MzEsIDgyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA4MjQ0NCwgODI0NTEsIDgyNDU4LCA4MjQ2NSwgODI0NzIsIDAsIDAsIDAsIDAsIDAsIDgyNDc5LCA4MjQ4NiwgCisgICAgODI0OTMsIDgyNTAzLCA4MjUwOSwgODI1MTUsIDgyNTIxLCA4MjUyNywgODI1MzMsIDgyNTM5LCA4MjU0NiwgODI1NTIsIAorICAgIDgyNTU4LCA4MjU2NCwgODI1NzMsIDgyNTgyLCA4MjU5NCwgODI2MDYsIDgyNjEyLCA4MjYxOCwgODI2MjQsIDgyNjMxLCAKKyAgICA4MjYzOCwgODI2NDUsIDgyNjUyLCA4MjY1OSwgMCwgODI2NjYsIDgyNjczLCA4MjY4MCwgODI2ODgsIDgyNjk1LCAwLCAKKyAgICA4MjcwMiwgMCwgODI3MDksIDgyNzE2LCAwLCA4MjcyMywgODI3MzEsIDAsIDgyNzM4LCA4Mjc0NSwgODI3NTIsIDgyNzU5LCAKKyAgICA4Mjc2NiwgODI3NzMsIDgyNzgwLCA4Mjc4NywgODI3OTQsIDgyODAxLCA4MjgwNiwgODI4MTMsIDgyODIwLCA4MjgyNiwgCisgICAgODI4MzIsIDgyODM4LCA4Mjg0NCwgODI4NTAsIDgyODU2LCA4Mjg2MiwgODI4NjgsIDgyODc0LCA4Mjg4MCwgODI4ODYsIAorICAgIDgyODkyLCA4Mjg5OCwgODI5MDQsIDgyOTEwLCA4MjkxNiwgODI5MjIsIDgyOTI4LCA4MjkzNCwgODI5NDAsIDgyOTQ2LCAKKyAgICA4Mjk1MiwgODI5NTgsIDgyOTY0LCA4Mjk3MCwgODI5NzYsIDgyOTgyLCA4Mjk4OCwgODI5OTQsIDgzMDAwLCA4MzAwNiwgCisgICAgODMwMTIsIDgzMDE4LCA4MzAyNCwgODMwMzAsIDgzMDM2LCA4MzA0MiwgODMwNDgsIDgzMDU0LCA4MzA2MCwgODMwNjYsIAorICAgIDgzMDcyLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDIsIDgzMTA4LCA4MzExNCwgODMxMjAsIDgzMTI2LCAKKyAgICA4MzEzMiwgODMxMzgsIDgzMTQ0LCA4MzE1MCwgODMxNTYsIDgzMTYyLCA4MzE2OCwgODMxNzQsIDgzMTgwLCA4MzE4NiwgCisgICAgODMxOTIsIDgzMTk4LCA4MzIwNCwgODMyMTAsIDgzMjE2LCA4MzIyMiwgODMyMjgsIDgzMjM0LCA4MzI0MCwgODMyNDYsIAorICAgIDgzMjUyLCA4MzI1OCwgODMyNjQsIDgzMjcwLCA4MzI3NiwgODMyODQsIDgzMjkyLCA4MzI5OCwgODMzMDQsIDgzMzEwLCAKKyAgICA4MzMxNiwgODMzMjUsIDgzMzM0LCA4MzM0MiwgODMzNTAsIDgzMzU4LCA4MzM2NiwgODMzNzQsIDgzMzgyLCA4MzM5MCwgCisgICAgODMzOTgsIDgzNDA1LCA4MzQxMiwgODM0MjMsIDgzNDM0LCA4MzQzOCwgODM0NDIsIDgzNDQ3LCA4MzQ1MiwgODM0NTcsIAorICAgIDgzNDYyLCA4MzQ3MCwgODM0NzgsIDgzNDg0LCA4MzQ5MCwgODM0OTcsIDgzNTA0LCA4MzUxMSwgODM1MTUsIDgzNTIxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzUyNywgODM1MzMsIDgzNTM5LCAKKyAgICA4MzU0NSwgODM1NTEsIDgzNTU2LCA4MzU2MSwgODM1NjcsIDgzNTczLCA4MzU3OSwgODM1ODUsIDgzNTk0LCA4MzYwMCwgCisgICAgODM2MDYsIDgzNjE0LCA4MzYyMiwgODM2MzAsIDgzNjM4LCA4MzY0MywgODM2NDgsIDgzNjUzLCA4MzY1OCwgODM2NzEsIAorICAgIDgzNjg0LCA4MzY5NSwgODM3MDYsIDgzNzE4LCA4MzczMCwgODM3NDIsIDgzNzU0LCA4Mzc2NSwgODM3NzYsIDgzNzg4LCAKKyAgICA4MzgwMCwgODM4MTIsIDgzODI0LCA4MzgzNSwgODM4NDYsIDgzODU3LCA4Mzg3NCwgODM4OTEsIDgzOTA4LCA4MzkxNSwgCisgICAgODM5MjIsIDgzOTI5LCA4MzkzNiwgODM5NDcsIDgzOTU4LCA4Mzk2OSwgODM5ODIsIDgzOTkzLCA4NDAwMSwgODQwMDksIAorICAgIDg0MDE4LCA4NDAyNiwgODQwMzYsIDg0MDQ0LCA4NDA1MiwgODQwNjAsIDg0MDY5LCA4NDA3NywgODQwODcsIDg0MDk1LCAKKyAgICA4NDEwMywgODQxMTEsIDg0MTIxLCA4NDEyOSwgODQxMzYsIDg0MTQzLCA4NDE1MCwgODQxNTcsIDg0MTY1LCA4NDE3MywgCisgICAgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDYsIDg0MjE0LCA4NDIyMiwgODQyMzAsIDg0MjM4LCA4NDI0NiwgODQyNTUsIAorICAgIDg0MjYzLCA4NDI3MSwgODQyNzksIDg0Mjg3LCA4NDI5NSwgODQzMDMsIDg0MzExLCA4NDMxOSwgODQzMjcsIDg0MzM1LCAKKyAgICA4NDM0NCwgODQzNTIsIDg0MzYyLCA4NDM3MCwgODQzNzgsIDg0Mzg2LCA4NDM5NiwgODQ0MDQsIDg0NDEyLCA4NDQyMCwgCisgICAgODQ0MjgsIDg0NDM3LCA4NDQ0NiwgODQ0NTQsIDg0NDY0LCA4NDQ3MiwgODQ0ODAsIDg0NDg4LCA4NDQ5NywgODQ1MDUsIAorICAgIDg0NTE1LCA4NDUyMywgODQ1MzAsIDg0NTM3LCA4NDU0NSwgODQ1NTIsIDg0NTYxLCA4NDU2OCwgODQ1NzYsIDg0NTg0LCAKKyAgICA4NDU5MywgODQ2MDEsIDg0NjExLCA4NDYxOSwgODQ2MjcsIDg0NjM1LCA4NDY0NSwgODQ2NTMsIDg0NjYwLCA4NDY2NywgCisgICAgODQ2NzUsIDg0NjgyLCA4NDY5MSwgODQ2OTgsIDg0NzA4LCA4NDcxOCwgODQ3MjksIDg0NzM4LCA4NDc0NywgODQ3NTYsIAorICAgIDg0NzY1LCA4NDc3NCwgODQ3ODQsIDg0Nzk2LCA4NDgwOCwgODQ4MTksIDg0ODMxLCA4NDg0NCwgODQ4NTUsIDg0ODY0LCAKKyAgICA4NDg3MywgODQ4ODEsIDg0ODkwLCA4NDkwMCwgODQ5MDgsIDg0OTE3LCA4NDkyNiwgODQ5MzQsIDg0OTQzLCA4NDk1MywgCisgICAgODQ5NjEsIDg0OTcwLCA4NDk3OSwgODQ5ODcsIDg0OTk2LCA4NTAwNiwgODUwMTQsIDg1MDI0LCA4NTAzMiwgODUwNDIsIAorICAgIDg1MDUwLCA4NTA1OCwgODUwNjcsIDg1MDc1LCA4NTA4NSwgODUwOTMsIDg1MTAxLCA4NTExMSwgODUxMTksIDg1MTI2LCAKKyAgICA4NTEzMywgODUxNDIsIDg1MTUxLCA4NTE1OSwgODUxNjgsIDg1MTc4LCA4NTE4NiwgODUxOTcsIDg1MjA1LCA4NTIxMywgCisgICAgODUyMjAsIDg1MjI4LCA4NTIzNywgODUyNDQsIDg1MjU1LCA4NTI2NiwgODUyNzgsIDg1Mjg5LCA4NTMwMSwgODUzMDksIAorICAgIDg1MzE3LCA4NTMyNiwgODUzMzQsIDg1MzQzLCA4NTM1MSwgODUzNTksIDg1MzY4LCA4NTM3NiwgODUzODUsIDg1MzkzLCAKKyAgICA4NTQwMCwgODU0MDcsIDg1NDE0LCA4NTQyMSwgODU0MjksIDg1NDM3LCA4NTQ0NSwgODU0NTMsIDg1NDYyLCA4NTQ3MCwgCisgICAgODU0NzgsIDg1NDg3LCA4NTQ5NSwgODU1MDMsIDg1NTExLCA4NTUyMCwgODU1MjgsIDg1NTM2LCA4NTU0NCwgODU1NTIsIAorICAgIDg1NTYwLCA4NTU2OCwgODU1NzYsIDg1NTg0LCA4NTU5MiwgODU2MDEsIDg1NjA5LCA4NTYxNywgODU2MjUsIDg1NjMzLCAKKyAgICA4NTY0MSwgODU2NTAsIDg1NjU5LCA4NTY2NywgODU2NzUsIDg1NjgzLCA4NTY5MiwgODU3MDAsIDg1NzA5LCA4NTcxNiwgCisgICAgODU3MjMsIDg1NzMxLCA4NTczOCwgODU3NDYsIDg1NzU0LCA4NTc2MywgODU3NzEsIDg1NzgwLCA4NTc4OCwgODU3OTYsIAorICAgIDg1ODA2LCA4NTgxMywgODU4MjAsIDg1ODI4LCA4NTgzNSwgODU4NDMsIDg1ODU0LCA4NTg2NiwgODU4NzQsIDg1ODgzLCAKKyAgICA4NTg5MSwgODU5MDAsIDg1OTA4LCA4NTkxNywgODU5MjUsIDg1OTM0LCA4NTk0MiwgODU5NTEsIDg1OTYwLCA4NTk2OCwgCisgICAgODU5NzYsIDg1OTg0LCA4NTk5MywgODYwMDAsIDg2MDA4LCA4NjAxNywgODYwMjYsIDg2MDM1LCA4NjA0NSwgODYwNTMsIAorICAgIDg2MDYzLCA4NjA3MSwgODYwODEsIDg2MDg5LCA4NjA5OSwgODYxMDcsIDg2MTE3LCA4NjEyNSwgODYxMzQsIDg2MTQxLCAKKyAgICA4NjE1MCwgODYxNTcsIDg2MTY3LCA4NjE3NSwgODYxODUsIDg2MTkzLCA4NjIwMywgODYyMTEsIDg2MjE5LCA4NjIyNywgCisgICAgODYyMzYsIDg2MjQ0LCA4NjI1MywgODYyNjIsIDg2MjcxLCA4NjI4MCwgODYyOTAsIDg2Mjk4LCA4NjMwOCwgODYzMTYsIAorICAgIDg2MzI2LCA4NjMzNCwgODYzNDQsIDg2MzUyLCA4NjM2MiwgODYzNzAsIDg2Mzc5LCA4NjM4NiwgODYzOTUsIDg2NDAyLCAKKyAgICA4NjQxMiwgODY0MjAsIDg2NDMwLCA4NjQzOCwgODY0NDgsIDg2NDU2LCA4NjQ2NCwgODY0NzIsIDg2NDgxLCA4NjQ4OSwgCisgICAgODY0OTgsIDg2NTA3LCA4NjUxNiwgODY1MjUsIDg2NTMzLCA4NjU0MSwgODY1NTAsIDg2NTU4LCA4NjU2NywgODY1NzYsIAorICAgIDg2NTg0LCA4NjU5MiwgODY2MDAsIDg2NjA5LCA4NjYxNywgODY2MjUsIDg2NjM0LCA4NjY0MiwgODY2NTAsIDg2NjU4LCAKKyAgICA4NjY2NiwgODY2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2Njc2LCAKKyAgICA4NjY4NiwgODY2OTYsIDg2NzA2LCA4NjcxNiwgODY3MjcsIDg2NzM3LCA4Njc0NywgODY3NTgsIDg2NzY3LCA4Njc3NiwgCisgICAgODY3ODUsIDg2Nzk2LCA4NjgwNiwgODY4MTYsIDg2ODI4LCA4NjgzOCwgODY4NDgsIDg2ODU4LCA4Njg2OCwgODY4NzgsIAorICAgIDg2ODg4LCA4Njg5OCwgODY5MDgsIDg2OTE4LCA4NjkyOCwgODY5MzgsIDg2OTQ5LCA4Njk2MCwgODY5NzAsIDg2OTgwLCAKKyAgICA4Njk5MiwgODcwMDMsIDg3MDE0LCA4NzAyNCwgODcwMzQsIDg3MDQ0LCA4NzA1NCwgODcwNjQsIDg3MDc0LCA4NzA4NCwgCisgICAgODcwOTYsIDg3MTA2LCA4NzExNiwgODcxMjgsIDg3MTM5LCA4NzE1MCwgODcxNjAsIDg3MTcwLCA4NzE4MCwgODcxOTAsIAorICAgIDg3MjAyLCA4NzIxMiwgODcyMjIsIDg3MjMzLCA4NzI0NCwgODcyNTQsIDg3MjY0LCA4NzI3MywgODcyODIsIDg3MjkxLCAKKyAgICA4NzMwMCwgODczMDksIDg3MzE5LCAwLCAwLCA4NzMyOSwgODczMzksIDg3MzQ5LCA4NzM1OSwgODczNjksIDg3MzgxLCAKKyAgICA4NzM5MSwgODc0MDEsIDg3NDEzLCA4NzQyMywgODc0MzUsIDg3NDQ0LCA4NzQ1MywgODc0NjQsIDg3NDc0LCA4NzQ4NiwgCisgICAgODc0OTcsIDg3NTEwLCA4NzUyMCwgODc1MzIsIDg3NTQxLCA4NzU1MiwgODc1NjMsIDg3NTc2LCA4NzU4NiwgODc1OTYsIAorICAgIDg3NjA2LCA4NzYxNiwgODc2MjYsIDg3NjM1LCA4NzY0NCwgODc2NTMsIDg3NjYyLCA4NzY3MiwgODc2ODIsIDg3NjkyLCAKKyAgICA4NzcwMiwgODc3MTIsIDg3NzIyLCA4NzczMiwgODc3NDIsIDg3NzUyLCA4Nzc2MiwgODc3NzIsIDg3NzgyLCA4Nzc5MSwgCisgICAgODc4MDAsIDg3ODA5LCA4NzgxOSwgODc4MjksIDg3ODM5LCA4Nzg0OSwgODc4NTksIDg3ODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzY4MSwgNTc2ODUsIDU3Njg5LCA1NzY5NCwgNTc2OTksIDU3NzA0LCAKLSAgICA1NzcwOCwgNTc3MTIsIDU3NzE2LCA1NzcyMSwgNTc3MjYsIDU3NzMwLCA1NzczNCwgNTc3MzgsIDU3NzQyLCA1Nzc0NywgCi0gICAgNTc3NTIsIDU3NzU3LCA1Nzc2MiwgNTc3NjYsIDU3NzcwLCA1Nzc3NSwgNTc3ODAsIDU3Nzg1LCA1Nzc5MCwgNTc3OTQsIDAsIAotICAgIDU3Nzk4LCA1NzgwMiwgNTc4MDYsIDU3ODEwLCA1NzgxNCwgNTc4MTgsIDU3ODIyLCA1NzgyNywgNTc4MzIsIDU3ODM2LCAKLSAgICA1Nzg0MSwgNTc4NDYsIDU3ODU1LCA1Nzg1OSwgNTc4NjMsIDU3ODY3LCA1Nzg3NCwgNTc4NzgsIDU3ODgzLCA1Nzg4OCwgCi0gICAgNTc4OTIsIDU3ODk2LCA1NzkwMiwgNTc5MDcsIDU3OTEyLCA1NzkxNywgNTc5MjIsIDU3OTI2LCA1NzkzMCwgNTc5MzQsIAotICAgIDU3OTM4LCA1Nzk0MiwgNTc5NDcsIDU3OTUyLCA1Nzk1NiwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIDU3OTc5LCAKLSAgICA1Nzk4MywgNTc5ODgsIDU3OTkzLCA1Nzk5OSwgNTgwMDUsIDU4MDA5LCA1ODAxNSwgNTgwMjEsIDU4MDI1LCA1ODAzMSwgCi0gICAgNTgwMzcsIDU4MDQyLCA1ODA0NywgNTgwNTEsIDU4MDU3LCA1ODA2MSwgNTgwNjUsIDU4MDcxLCA1ODA3NywgNTgwODIsIAotICAgIDU4MDg3LCA1ODA5MSwgNTgwOTUsIDU4MTAzLCA1ODEwOSwgNTgxMTUsIDU4MTIxLCA1ODEyNiwgNTgxMzEsIDU4MTM2LCAKLSAgICA1ODE0MiwgNTgxNDYsIDU4MTUyLCA1ODE1NiwgNTgxNjAsIDU4MTY2LCA1ODE3MiwgNTgxNzgsIDU4MTg0LCA1ODE5MCwgCi0gICAgNTgxOTYsIDU4MjAyLCA1ODIwOCwgNTgyMTQsIDU4MjIwLCA1ODIyNiwgNTgyMzIsIDU4MjM2LCA1ODI0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgyNDgsIDU4MjUxLCA1ODI1NSwgNTgyNTksIDU4MjYzLCA1ODI2NywgCi0gICAgNTgyNzAsIDU4MjczLCA1ODI3NywgNTgyODEsIDU4Mjg1LCA1ODI4OSwgNTgyOTIsIDU4Mjk3LCA1ODMwMSwgNTgzMDUsIAotICAgIDU4MzA5LCA1ODMxNCwgNTgzMTgsIDU4MzIyLCA1ODMyNiwgNTgzMzAsIDU4MzM2LCA1ODM0MiwgNTgzNDYsIDU4MzUwLCAKLSAgICA1ODM1NCwgNTgzNTgsIDU4MzYyLCA1ODM2NiwgNTgzNzAsIDU4Mzc0LCA1ODM3OCwgNTgzODIsIDU4Mzg2LCA1ODM5MiwgCi0gICAgNTgzOTYsIDU4NDAwLCA1ODQwNCwgNTg0MDgsIDU4NDEyLCA1ODQxNiwgNTg0MjAsIDU4NDI0LCA1ODQyOCwgNTg0MzIsIAotICAgIDU4NDM2LCA1ODQ0MCwgNTg0NDQsIDU4NDQ4LCA1ODQ1MiwgNTg0NTYsIDU4NDYyLCA1ODQ2OCwgNTg0NzMsIDU4NDc4LCAKLSAgICA1ODQ4MiwgNTg0ODYsIDU4NDkwLCA1ODQ5NCwgNTg0OTgsIDU4NTAyLCA1ODUwNiwgNTg1MTAsIDU4NTE0LCA1ODUxOCwgCi0gICAgNTg1MjIsIDU4NTI2LCA1ODUzMCwgNTg1MzQsIDU4NTM4LCA1ODU0MiwgNTg1NDYsIDU4NTUwLCA1ODU1NCwgNTg1NTgsIAotICAgIDU4NTYyLCA1ODU2NiwgNTg1NzAsIDU4NTc0LCA1ODU4MCwgNTg1ODQsIDU4NTg4LCA1ODU5MiwgNTg1OTYsIDU4NjAwLCAKLSAgICA1ODYwNCwgNTg2MDgsIDU4NjEyLCA1ODYxNywgNTg2MjQsIDU4NjI4LCA1ODYzMiwgNTg2MzYsIDU4NjQwLCA1ODY0NCwgCi0gICAgNTg2NDgsIDU4NjUyLCA1ODY1NiwgNTg2NjAsIDU4NjY0LCA1ODY2OCwgNTg2NzIsIDU4Njc5LCA1ODY4MywgNTg2ODksIAotICAgIDU4NjkzLCA1ODY5NywgNTg3MDEsIDU4NzA1LCA1ODcwOSwgNTg3MTIsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDU4NzI4LCAKLSAgICA1ODczMiwgNTg3MzYsIDU4NzQwLCA1ODc0NCwgNTg3NDgsIDU4NzUyLCA1ODc1NiwgNTg3NjAsIDU4NzY0LCA1ODc2OCwgCi0gICAgNTg3NzIsIDU4Nzc2LCA1ODc4MCwgNTg3ODQsIDU4Nzg4LCA1ODc5MiwgNTg3OTYsIDU4ODAwLCA1ODgwNCwgNTg4MDgsIAotICAgIDU4ODEyLCA1ODgxNiwgNTg4MjAsIDU4ODI0LCA1ODgyOCwgNTg4MzIsIDU4ODM2LCA1ODg0MCwgNTg4NDYsIDU4ODUwLCAKLSAgICA1ODg1NCwgNTg4NTgsIDU4ODYyLCA1ODg2NiwgNTg4NzAsIDU4ODc0LCA1ODg3OCwgNTg4ODIsIDU4ODg2LCA1ODg5MCwgCi0gICAgNTg4OTQsIDU4ODk4LCA1ODkwMiwgNTg5MDYsIDU4OTEwLCA1ODkxNCwgNTg5MTgsIDU4OTIyLCA1ODkyNiwgNTg5MzAsIAotICAgIDU4OTM0LCA1ODkzOCwgNTg5NDIsIDU4OTQ2LCA1ODk1MCwgNTg5NTQsIDU4OTYyLCA1ODk2NiwgNTg5NzAsIDU4OTc0LCAKLSAgICA1ODk3OCwgNTg5ODIsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCA1OTAwNCwgNTkwMDgsIDU5MDEyLCA1OTAxNiwgCi0gICAgNTkwMjAsIDU5MDI0LCA1OTAyOCwgNTkwMzIsIDU5MDM2LCA1OTA0MCwgNTkwNDYsIDU5MDUwLCA1OTA1NCwgNTkwNTgsIAotICAgIDU5MDYyLCA1OTA2NiwgNTkwNzAsIDU5MDc0LCA1OTA3OCwgNTkwODIsIDU5MDg2LCA1OTA5MCwgNTkwOTQsIDU5MDk4LCAKLSAgICA1OTEwMiwgNTkxMDYsIDU5MTEwLCA1OTExNCwgNTkxMTgsIDU5MTIyLCA1OTEyNiwgNTkxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MTM0LCA1OTE0MywgCi0gICAgNTkxNTEsIDU5MTYzLCA1OTE3NCwgNTkxODIsIDU5MTkxLCA1OTIwMCwgNTkyMTAsIDU5MjIyLCA1OTIzNCwgNTkyNDYsIDAsIAotICAgIDAsIDAsIDAsIDU5MjUyLCA1OTI1NSwgNTkyNTgsIDU5MjYzLCA1OTI2NiwgNTkyNzMsIDU5Mjc3LCA1OTI4MSwgNTkyODUsIAotICAgIDU5Mjg5LCA1OTI5MywgNTkyOTgsIDU5MzAzLCA1OTMwNywgNTkzMTEsIDU5MzE2LCA1OTMyMSwgNTkzMjYsIDU5MzMxLCAKLSAgICA1OTMzNCwgNTkzMzcsIDU5MzQzLCA1OTM0OSwgNTkzNTQsIDU5MzU5LCA1OTM2NiwgNTkzNzMsIDU5Mzc3LCA1OTM4MSwgCi0gICAgNTkzODUsIDU5MzkzLCA1OTM5OSwgNTk0MDYsIDU5NDExLCA1OTQxNiwgNTk0MjEsIDU5NDI2LCA1OTQzMSwgNTk0MzYsIAotICAgIDU5NDQxLCA1OTQ0NiwgNTk0NTEsIDU5NDU2LCA1OTQ2MSwgNTk0NjYsIDU5NDcxLCA1OTQ3NiwgNTk0ODIsIDU5NDg3LCAKLSAgICA1OTQ5MSwgNTk0OTcsIDU5NTA4LCA1OTUxOCwgNTk1MzMsIDU5NTQzLCA1OTU0NywgNTk1NTcsIDU5NTYzLCA1OTU2OSwgCi0gICAgNTk1NzUsIDU5NTgwLCA1OTU4MywgNTk1ODgsIDU5NTkyLCAwLCA1OTU5OCwgNTk2MDIsIDU5NjA1LCA1OTYwOSwgNTk2MTIsIAotICAgIDU5NjE2LCA1OTYxOSwgNTk2MjMsIDU5NjI2LCA1OTYzMCwgNTk2MzMsIDU5NjM2LCA1OTY0MCwgNTk2NDQsIDU5NjQ4LCAKLSAgICA1OTY1MiwgNTk2NTYsIDU5NjYwLCA1OTY2NCwgNTk2NjgsIDU5NjcyLCA1OTY3NSwgNTk2NzksIDU5NjgzLCA1OTY4NywgCi0gICAgNTk2OTEsIDU5Njk1LCA1OTY5OSwgNTk3MDMsIDU5NzA3LCA1OTcxMSwgNTk3MTUsIDU5NzE5LCA1OTcyMywgNTk3MjcsIAotICAgIDU5NzMyLCA1OTczNiwgNTk3NDAsIDU5NzQ0LCA1OTc0OCwgNTk3NTEsIDU5NzU1LCA1OTc1OCwgNTk3NjIsIDU5NzY2LCAKLSAgICA1OTc3MCwgNTk3NzQsIDU5Nzc3LCA1OTc4MSwgNTk3ODQsIDU5Nzg4LCA1OTc5MiwgNTk3OTYsIDU5ODAwLCA1OTgwNCwgCi0gICAgNTk4MDgsIDU5ODEyLCA1OTgxNiwgNTk4MjAsIDU5ODI0LCA1OTgyOCwgNTk4MzIsIDU5ODM1LCA1OTgzOSwgNTk4NDMsIAotICAgIDU5ODQ3LCA1OTg1MSwgNTk4NTUsIDU5ODU4LCA1OTg2MywgNTk4NjcsIDU5ODcyLCA1OTg3NiwgNTk4NzksIDU5ODgzLCAKLSAgICA1OTg4NywgNTk4OTEsIDU5ODk1LCA1OTkwMCwgNTk5MDQsIDU5OTA4LCA1OTkxMiwgNTk5MTYsIDU5OTIwLCA1OTkyNCwgCi0gICAgNTk5MjgsIDAsIDAsIDU5OTMzLCA1OTk0MSwgNTk5NDksIDU5OTU2LCA1OTk2MywgNTk5NjcsIDU5OTczLCA1OTk3OCwgCi0gICAgNTk5ODMsIDU5OTg3LCA1OTk5MCwgNTk5OTQsIDU5OTk3LCA2MDAwMSwgNjAwMDQsIDYwMDA4LCA2MDAxMSwgNjAwMTUsIAotICAgIDYwMDE4LCA2MDAyMSwgNjAwMjUsIDYwMDI5LCA2MDAzMywgNjAwMzcsIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDUzLCAKLSAgICA2MDA1NywgNjAwNjAsIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIDYwMDg4LCA2MDA5MiwgCi0gICAgNjAwOTYsIDYwMTAwLCA2MDEwNCwgNjAxMDgsIDYwMTEyLCA2MDExNywgNjAxMjEsIDYwMTI1LCA2MDEyOSwgNjAxMzMsIAotICAgIDYwMTM2LCA2MDE0MCwgNjAxNDMsIDYwMTQ3LCA2MDE1MSwgNjAxNTUsIDYwMTU5LCA2MDE2MiwgNjAxNjYsIDYwMTY5LCAKLSAgICA2MDE3MywgNjAxNzcsIDYwMTgxLCA2MDE4NSwgNjAxODksIDYwMTkzLCA2MDE5NywgNjAyMDEsIDYwMjA1LCA2MDIwOSwgCi0gICAgNjAyMTMsIDYwMjE3LCA2MDIyMCwgNjAyMjQsIDYwMjI4LCA2MDIzMiwgNjAyMzYsIDYwMjQwLCA2MDI0MywgNjAyNDgsIAotICAgIDYwMjUyLCA2MDI1NywgNjAyNjEsIDYwMjY0LCA2MDI2OCwgNjAyNzIsIDYwMjc2LCA2MDI4MCwgNjAyODUsIDYwMjg5LCAKLSAgICA2MDI5MywgNjAyOTcsIDYwMzAxLCA2MDMwNSwgNjAzMDksIDYwMzEzLCA2MDMxOCwgNjAzMjIsIDYwMzI2LCA2MDMzMCwgCi0gICAgNjAzMzQsIDYwMzM5LCA2MDM0NiwgNjAzNTAsIDYwMzU2LCAwLCAwLCAwLCAwLCAwLCA2MDM2MSwgNjAzNjYsIDYwMzcxLCAKLSAgICA2MDM3NSwgNjAzODAsIDYwMzg1LCA2MDM5MCwgNjAzOTUsIDYwMzk5LCA2MDQwNCwgNjA0MDksIDYwNDE0LCA2MDQxOSwgCi0gICAgNjA0MjQsIDYwNDI5LCA2MDQzNCwgNjA0MzksIDYwNDQ0LCA2MDQ0OCwgNjA0NTMsIDYwNDU4LCA2MDQ2MywgNjA0NjcsIAotICAgIDYwNDcxLCA2MDQ3NSwgNjA0ODAsIDYwNDg1LCA2MDQ5MCwgNjA0OTUsIDYwNTAwLCA2MDUwNSwgNjA1MTAsIDYwNTE1LCAKLSAgICA2MDUyMCwgNjA1MjUsIDYwNTI5LCA2MDUzMywgNjA1MzgsIDYwNTQzLCA2MDU0OCwgNjA1NTMsIDAsIDAsIDAsIDYwNTU4LCAKLSAgICA2MDU2MiwgNjA1NjYsIDYwNTcwLCA2MDU3NCwgNjA1NzgsIDYwNTgyLCA2MDU4NiwgNjA1OTAsIDYwNTk0LCA2MDU5OCwgCi0gICAgNjA2MDIsIDYwNjA2LCA2MDYxMCwgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjYsIDYwNjMwLCA2MDYzNCwgNjA2MzgsIAotICAgIDYwNjQyLCA2MDY0NiwgNjA2NTAsIDYwNjU0LCA2MDY1OCwgNjA2NjIsIDYwNjY2LCA2MDY3MCwgNjA2NzQsIDYwNjc4LCAKLSAgICA2MDY4MSwgNjA2ODUsIDYwNjg4LCA2MDY5MiwgNjA2OTYsIDYwNjk5LCA2MDcwMywgNjA3MDcsIDYwNzEwLCA2MDcxNCwgCi0gICAgNjA3MTgsIDYwNzIyLCA2MDcyNiwgNjA3MjksIDYwNzMzLCA2MDczNywgNjA3NDEsIDYwNzQ1LCA2MDc0OSwgNjA3NTMsIAotICAgIDYwNzU2LCA2MDc1OSwgNjA3NjMsIDYwNzY3LCA2MDc3MSwgNjA3NzUsIDYwNzc5LCA2MDc4MywgNjA3ODcsIDYwNzkxLCAKLSAgICA2MDc5NSwgNjA3OTksIDYwODAzLCA2MDgwNywgNjA4MTEsIDYwODE1LCA2MDgxOSwgNjA4MjMsIDYwODI3LCA2MDgzMSwgCi0gICAgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCA2MDg2NywgNjA4NzEsIAotICAgIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCA2MDg5MSwgNjA4OTUsIDYwODk5LCA2MDkwMywgNjA5MDcsIDYwOTExLCAKLSAgICA2MDkxNSwgNjA5MTksIDYwOTIzLCAwLCA2MDkyNywgNjA5MzMsIDYwOTM5LCA2MDk0NCwgNjA5NDksIDYwOTU0LCA2MDk2MCwgCi0gICAgNjA5NjYsIDYwOTcyLCA2MDk3OCwgNjA5ODQsIDYwOTkwLCA2MDk5NiwgNjEwMDIsIDYxMDA4LCA2MTAxNCwgNjEwMjAsIAotICAgIDYxMDI1LCA2MTAzMCwgNjEwMzUsIDYxMDQwLCA2MTA0NSwgNjEwNTAsIDYxMDU1LCA2MTA2MCwgNjEwNjUsIDYxMDcwLCAKLSAgICA2MTA3NSwgNjEwODAsIDYxMDg1LCA2MTA5MCwgNjEwOTUsIDYxMTAwLCA2MTEwNSwgNjExMTAsIDYxMTE1LCA2MTEyMCwgCi0gICAgNjExMjYsIDYxMTMyLCA2MTEzOCwgNjExNDQsIDYxMTQ5LCA2MTE1NCwgMCwgMCwgMCwgMCwgMCwgNjExNTksIDYxMTY0LCAKLSAgICA2MTE2OSwgNjExNzQsIDYxMTc5LCA2MTE4NCwgNjExODksIDYxMTk0LCA2MTE5OSwgNjEyMDQsIDYxMjA5LCA2MTIxNCwgCi0gICAgNjEyMTksIDYxMjI0LCA2MTIyOSwgNjEyMzQsIDYxMjM5LCA2MTI0NCwgNjEyNDksIDYxMjU0LCA2MTI1OSwgNjEyNjQsIAotICAgIDYxMjY5LCA2MTI3NCwgNjEyNzksIDYxMjg0LCA2MTI4OSwgNjEyOTQsIDYxMjk5LCA2MTMwNCwgNjEzMDksIDYxMzE0LCAKLSAgICA2MTMxOSwgNjEzMjQsIDYxMzI5LCA2MTMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEzMzksIAotICAgIDYxMzQ0LCA2MTM0OSwgNjEzNTQsIDYxMzU4LCA2MTM2MywgNjEzNjcsIDYxMzcyLCA2MTM3NywgNjEzODIsIDYxMzg3LCAKLSAgICA2MTM5MiwgNjEzOTYsIDYxNDAxLCA2MTQwNiwgNjE0MTEsIDYxNDE2LCA2MTQyMCwgNjE0MjQsIDYxNDI4LCA2MTQzMiwgCi0gICAgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDgsIDYxNDUyLCA2MTQ1NiwgNjE0NjAsIDYxNDY0LCA2MTQ2OCwgNjE0NzIsIAotICAgIDYxNDc3LCA2MTQ4MiwgNjE0ODcsIDYxNDkyLCA2MTQ5NywgNjE1MDIsIDYxNTA3LCA2MTUxMiwgNjE1MTcsIDYxNTIyLCAKLSAgICA2MTUyNywgNjE1MzIsIDYxNTM3LCA2MTU0MiwgNjE1NDcsIDYxNTUzLCAwLCA2MTU2MCwgNjE1NjMsIDYxNTY2LCA2MTU2OSwgCi0gICAgNjE1NzIsIDYxNTc1LCA2MTU3OCwgNjE1ODEsIDYxNTg0LCA2MTU4NywgNjE1OTEsIDYxNTk1LCA2MTU5OSwgNjE2MDMsIAotICAgIDYxNjA3LCA2MTYxMSwgNjE2MTUsIDYxNjE5LCA2MTYyMywgNjE2MjcsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCAKLSAgICA2MTY0NywgNjE2NTEsIDYxNjU1LCA2MTY1OSwgNjE2NjMsIDYxNjY3LCA2MTY3MSwgNjE2NzUsIDYxNjc5LCA2MTY4MywgCi0gICAgNjE2ODcsIDYxNjkxLCA2MTY5NSwgNjE2OTksIDYxNzAzLCA2MTcwNywgNjE3MTEsIDYxNzIwLCA2MTcyOSwgNjE3MzgsIAotICAgIDYxNzQ3LCA2MTc1NiwgNjE3NjUsIDYxNzc0LCA2MTc4MywgNjE3ODYsIDYxNzkxLCA2MTc5NiwgNjE4MDEsIDYxODA2LCAKLSAgICA2MTgxMSwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM1LCA2MTg0MCwgNjE4NDUsIDYxODUwLCA2MTg1NSwgCi0gICAgNjE4NjAsIDYxODY0LCA2MTg2OCwgNjE4NzIsIDYxODc2LCA2MTg4MCwgNjE4ODQsIDYxODg4LCA2MTg5MiwgNjE4OTYsIAotICAgIDYxOTAwLCA2MTkwNCwgNjE5MDgsIDYxOTEyLCA2MTkxNiwgNjE5MjEsIDYxOTI2LCA2MTkzMSwgNjE5MzYsIDYxOTQxLCAKLSAgICA2MTk0NiwgNjE5NTEsIDYxOTU2LCA2MTk2MSwgNjE5NjYsIDYxOTcxLCA2MTk3NiwgNjE5ODEsIDYxOTg2LCA2MTk5MiwgCi0gICAgNjE5OTgsIDYyMDAzLCA2MjAwOCwgNjIwMTEsIDYyMDE0LCA2MjAxNywgNjIwMjAsIDYyMDIzLCA2MjAyNiwgNjIwMjksIAotICAgIDYyMDMyLCA2MjAzNSwgNjIwMzksIDYyMDQzLCA2MjA0NywgNjIwNTEsIDYyMDU1LCA2MjA1OSwgNjIwNjMsIDYyMDY3LCAKLSAgICA2MjA3MSwgNjIwNzUsIDYyMDc5LCA2MjA4MywgNjIwODcsIDYyMDkxLCA2MjA5NSwgNjIwOTksIDYyMTAzLCA2MjEwNywgCi0gICAgNjIxMTEsIDYyMTE1LCA2MjExOSwgNjIxMjMsIDYyMTI3LCA2MjEzMSwgNjIxMzUsIDYyMTM5LCA2MjE0MywgNjIxNDcsIAotICAgIDYyMTUxLCA2MjE1NSwgNjIxNTksIDYyMTYzLCA2MjE2NywgNjIxNzEsIDYyMTc1LCA2MjE3OSwgNjIxODMsIDYyMTg3LCAKLSAgICA2MjE5MSwgNjIxOTUsIDYyMjAwLCA2MjIwNSwgNjIyMTAsIDYyMjE1LCA2MjIxOSwgNjIyMjQsIDYyMjI5LCA2MjIzNCwgCi0gICAgNjIyMzksIDYyMjQ0LCA2MjI0OSwgNjIyNTQsIDYyMjU5LCA2MjI2NCwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODksIAotICAgIDYyMjk2LCA2MjMwMywgNjIzMTAsIDYyMzE3LCA2MjMyNCwgNjIzMzEsIDYyMzM4LCA2MjM0NSwgNjIzNTIsIDYyMzU1LCAKLSAgICA2MjM1OCwgNjIzNjEsIDYyMzY2LCA2MjM2OSwgNjIzNzIsIDYyMzc1LCA2MjM3OCwgNjIzODEsIDYyMzg0LCA2MjM4OCwgCi0gICAgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDMsIDYyNDA3LCA2MjQxMSwgNjI0MTUsIDYyNDE5LCA2MjQyMywgNjI0MjcsIAotICAgIDYyNDMxLCA2MjQzNSwgNjI0MzgsIDYyNDQxLCA2MjQ0NSwgNjI0NDksIDYyNDUzLCA2MjQ1NywgNjI0NjAsIDYyNDY0LCAKLSAgICA2MjQ2OCwgNjI0NzIsIDYyNDc2LCA2MjQ3OSwgNjI0ODMsIDYyNDg3LCA2MjQ5MSwgNjI0OTUsIDYyNDk4LCA2MjUwMiwgCi0gICAgNjI1MDYsIDYyNTA5LCA2MjUxMywgNjI1MTcsIDYyNTIxLCA2MjUyNSwgNjI1MjksIDYyNTMzLCA2MjUzNywgMCwgNjI1NDEsIAotICAgIDYyNTQ0LCA2MjU0NywgNjI1NTAsIDYyNTUzLCA2MjU1NiwgNjI1NTksIDYyNTYyLCA2MjU2NSwgNjI1NjgsIDYyNTcxLCAKLSAgICA2MjU3NCwgNjI1NzcsIDYyNTgwLCA2MjU4MywgNjI1ODYsIDYyNTg5LCA2MjU5MiwgNjI1OTUsIDYyNTk4LCA2MjYwMSwgCi0gICAgNjI2MDQsIDYyNjA3LCA2MjYxMCwgNjI2MTMsIDYyNjE2LCA2MjYxOSwgNjI2MjIsIDYyNjI1LCA2MjYyOCwgNjI2MzEsIAotICAgIDYyNjM0LCA2MjYzNywgNjI2NDAsIDYyNjQzLCA2MjY0NiwgNjI2NDksIDYyNjUyLCA2MjY1NSwgNjI2NTgsIDYyNjYxLCAKLSAgICA2MjY2NCwgNjI2NjcsIDYyNjcwLCA2MjY3MywgNjI2NzYsIDYyNjc5LCA2MjY4MiwgNjI2ODUsIDYyNjg4LCA2MjY5MSwgCi0gICAgNjI2OTQsIDYyNjk3LCA2MjcwMCwgNjI3MDMsIDYyNzA2LCA2MjcwOSwgNjI3MTIsIDYyNzE1LCA2MjcxOCwgNjI3MjEsIAotICAgIDYyNzI0LCA2MjcyNywgNjI3MzAsIDYyNzMzLCA2MjczNiwgNjI3MzksIDYyNzQyLCA2Mjc0NSwgNjI3NDgsIDYyNzUxLCAKLSAgICA2Mjc1NCwgNjI3NTcsIDYyNzYwLCA2Mjc2MywgNjI3NjYsIDYyNzY5LCA2Mjc3MiwgNjI3NzUsIDYyNzc4LCA2Mjc4MSwgCi0gICAgNjI3ODQsIDYyNzg3LCA2Mjc5MCwgNjI3OTMsIDYyNzk2LCA2Mjc5OSwgNjI4MDIsIDYyODA1LCA2MjgxNCwgNjI4MjIsIAotICAgIDYyODMwLCA2MjgzOCwgNjI4NDYsIDYyODU0LCA2Mjg2MiwgNjI4NzAsIDYyODc4LCA2Mjg4NiwgNjI4OTUsIDYyOTA0LCAKLSAgICA2MjkxMywgNjI5MjIsIDYyOTMxLCA2Mjk0MCwgNjI5NDksIDYyOTU4LCA2Mjk2NywgNjI5NzYsIDYyOTg1LCA2Mjk5NCwgCi0gICAgNjMwMDMsIDYzMDEyLCA2MzAyMSwgNjMwMjQsIDYzMDI3LCA2MzAzMCwgNjMwMzIsIDYzMDM1LCA2MzAzOCwgNjMwNDEsIAotICAgIDYzMDQ2LCA2MzA1MSwgNjMwNTQsIDYzMDYxLCA2MzA2OCwgNjMwNzUsIDYzMDgyLCA2MzA4NSwgNjMwOTAsIDYzMDkyLCAKLSAgICA2MzA5NiwgNjMwOTgsIDYzMTAwLCA2MzEwMywgNjMxMDYsIDYzMTA5LCA2MzExMiwgNjMxMTUsIDYzMTE4LCA2MzEyMSwgCi0gICAgNjMxMjYsIDYzMTMxLCA2MzEzNCwgNjMxMzcsIDYzMTQwLCA2MzE0MywgNjMxNDYsIDYzMTQ5LCA2MzE1MiwgNjMxNTYsIAotICAgIDYzMTU5LCA2MzE2MiwgNjMxNjUsIDYzMTY4LCA2MzE3MSwgNjMxNzUsIDYzMTc4LCA2MzE4MSwgNjMxODQsIDYzMTg5LCAKLSAgICA2MzE5NCwgNjMxOTksIDYzMjA0LCA2MzIwOSwgNjMyMTQsIDYzMjE5LCA2MzIyNCwgNjMyMzAsIDYzMjM4LCA2MzI0MCwgCi0gICAgNjMyNDMsIDYzMjQ2LCA2MzI0OSwgNjMyNTIsIDYzMjU4LCA2MzI2NiwgNjMyNjksIDYzMjcyLCA2MzI3NywgNjMyODAsIAotICAgIDYzMjgzLCA2MzI4NiwgNjMyOTEsIDYzMjk0LCA2MzI5NywgNjMzMDIsIDYzMzA1LCA2MzMwOCwgNjMzMTMsIDYzMzE2LCAKLSAgICA2MzMxOSwgNjMzMjQsIDYzMzI5LCA2MzMzNCwgNjMzMzcsIDYzMzQwLCA2MzM0MywgNjMzNDYsIDYzMzUyLCA2MzM1NSwgCi0gICAgNjMzNTgsIDYzMzYxLCA2MzM2MywgNjMzNjYsIDYzMzY5LCA2MzM3MiwgNjMzNzcsIDYzMzgwLCA2MzM4MywgNjMzODYsIAotICAgIDYzMzg5LCA2MzM5MiwgNjMzOTcsIDYzNDAwLCA2MzQwMywgNjM0MDYsIDYzNDA5LCA2MzQxMiwgNjM0MTUsIDYzNDE4LCAKLSAgICA2MzQyMSwgNjM0MjQsIDYzNDI5LCA2MzQzMywgNjM0NDEsIDYzNDQ5LCA2MzQ1NywgNjM0NjUsIDYzNDczLCA2MzQ4MSwgCi0gICAgNjM0ODksIDYzNDk3LCA2MzUwNSwgNjM1MTQsIDYzNTIzLCA2MzUzMiwgNjM1NDEsIDYzNTUwLCA2MzU1OSwgNjM1NjgsIAotICAgIDYzNTc3LCA2MzU4NiwgNjM1OTUsIDYzNjA0LCA2MzYxMywgNjM2MjIsIDYzNjMxLCA2MzY0MCwgNjM2NDksIDYzNjU4LCAKLSAgICA2MzY2NywgNjM2NzYsIDYzNjg1LCA2MzY5NCwgNjM3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3ODgwLCA4Nzg5NSwgODc5MTAsIDg3OTE2LCA4NzkyMiwgODc5MjgsIAorICAgIDg3OTM0LCA4Nzk0MCwgODc5NDYsIDg3OTUyLCA4Nzk1OCwgODc5NjYsIDg3OTcwLCA4Nzk3MywgMCwgMCwgODc5ODEsIAorICAgIDg3OTg0LCA4Nzk4NywgODc5OTAsIDg3OTkzLCA4Nzk5NiwgODc5OTksIDg4MDAyLCA4ODAwNSwgODgwMDgsIDg4MDExLCAKKyAgICA4ODAxNCwgODgwMTcsIDg4MDIwLCA4ODAyMywgODgwMjYsIDg4MDI5LCA4ODAzNywgODgwNDYsIDg4MDU3LCA4ODA2NSwgCisgICAgODgwNzMsIDg4MDgyLCA4ODA5MSwgODgxMDIsIDg4MTE0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODEyNCwgODgxMjksIDg4MTM0LCAKKyAgICA4ODE0MSwgODgxNDgsIDg4MTU0LCA4ODE2MCwgODgxNjUsIDg4MTcwLCA4ODE3NSwgODgxODEsIDg4MTg3LCA4ODE5MywgCisgICAgODgxOTksIDg4MjA1LCA4ODIxMiwgODgyMTksIDg4MjI5LCA4ODIzOSwgODgyNDksIDg4MjU4LCA4ODI2OSwgODgyNzgsIAorICAgIDg4Mjg3LCA4ODI5NywgODgzMDcsIDg4MzE5LCA4ODMzMSwgODgzNDIsIDg4MzUzLCA4ODM2NCwgODgzNzUsIDg4Mzg1LCAKKyAgICA4ODM5NSwgODg0MDUsIDg4NDE1LCA4ODQyNiwgODg0MzcsIDg4NDQxLCA4ODQ0NiwgODg0NTUsIDg4NDY0LCA4ODQ2OCwgCisgICAgODg0NzIsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg0OTksIDg4NTAzLCAwLCA4ODUwOCwgODg1MTEsIAorICAgIDg4NTE0LCA4ODUxOCwgODg1MjIsIDg4NTI3LCA4ODUzMSwgODg1MzUsIDg4NTQwLCA4ODU0NSwgODg1NTIsIDg4NTU5LCAKKyAgICA4ODU2MiwgODg1NjUsIDg4NTY4LCA4ODU3MSwgODg1NzQsIDg4NTc4LCA4ODU4MiwgMCwgODg1ODYsIDg4NTkxLCA4ODU5NSwgCisgICAgODg1OTksIDAsIDAsIDAsIDAsIDg4NjA0LCA4ODYwOSwgODg2MTYsIDg4NjIxLCA4ODYyNiwgMCwgODg2MzEsIDg4NjM2LCAKKyAgICA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NywgCisgICAgODg2OTYsIDg4NzA1LCA4ODcxNCwgODg3MjMsIDg4NzMzLCA4ODc0MywgODg3NTMsIDg4NzYzLCA4ODc3MiwgODg3ODEsIAorICAgIDg4NzkwLCA4ODc5OSwgODg4MDQsIDg4ODA5LCA4ODgxNSwgODg4MjEsIDg4ODI3LCA4ODgzMywgODg4NDEsIDg4ODQ5LCAKKyAgICA4ODg1NSwgODg4NjEsIDg4ODY3LCA4ODg3MywgODg4NzksIDg4ODg1LCA4ODg5MSwgODg4OTcsIDg4OTAyLCA4ODkwNywgCisgICAgODg5MTIsIDg4OTE3LCA4ODkyMiwgODg5MjcsIDg4OTMyLCA4ODkzNywgODg5NDMsIDg4OTQ5LCA4ODk1NSwgODg5NjEsIAorICAgIDg4OTY3LCA4ODk3MywgODg5NzksIDg4OTg1LCA4ODk5MSwgODg5OTcsIDg5MDAzLCA4OTAwOSwgODkwMTUsIDg5MDIxLCAKKyAgICA4OTAyNywgODkwMzMsIDg5MDM5LCA4OTA0NSwgODkwNTEsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc1LCA4OTA4MSwgCisgICAgODkwODcsIDg5MDkzLCA4OTA5OSwgODkxMDUsIDg5MTExLCA4OTExNywgODkxMjMsIDg5MTI5LCA4OTEzNSwgODkxNDEsIAorICAgIDg5MTQ3LCA4OTE1MywgODkxNTksIDg5MTY1LCA4OTE3MSwgODkxNzcsIDg5MTgzLCA4OTE4OSwgODkxOTUsIDg5MjAxLCAKKyAgICA4OTIwNywgODkyMTMsIDg5MjE5LCA4OTIyNSwgODkyMzEsIDg5MjM3LCA4OTI0MywgODkyNDksIDg5MjU1LCA4OTI2MSwgCisgICAgODkyNjcsIDg5MjczLCA4OTI3OSwgODkyODUsIDg5MjkxLCA4OTI5NywgODkzMDIsIDg5MzA3LCA4OTMxMiwgODkzMTcsIAorICAgIDg5MzIzLCA4OTMyOSwgODkzMzUsIDg5MzQxLCA4OTM0NywgODkzNTMsIDg5MzU5LCA4OTM2NSwgODkzNzEsIDg5Mzc3LCAKKyAgICA4OTM4NCwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQyMywgODk0MzUsIDg5NDQ3LCA4OTQ1OSwgCisgICAgODk0NzIsIDg5NDg1LCA4OTQ5MywgMCwgMCwgODk1MDEsIDAsIDg5NTA5LCA4OTUxMywgODk1MTcsIDg5NTIwLCA4OTUyNCwgCisgICAgODk1MjgsIDg5NTMxLCA4OTUzNCwgODk1MzgsIDg5NTQyLCA4OTU0NSwgODk1NDgsIDg5NTUxLCA4OTU1NCwgODk1NTksIAorICAgIDg5NTYyLCA4OTU2NiwgODk1NjksIDg5NTcyLCA4OTU3NSwgODk1NzgsIDg5NTgxLCA4OTU4NCwgODk1ODgsIDg5NTkxLCAKKyAgICA4OTU5NSwgODk1OTgsIDg5NjAxLCA4OTYwNSwgODk2MDksIDg5NjEzLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMywgCisgICAgODk2MzksIDg5NjQ1LCA4OTY1MCwgODk2NTYsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc5LCA4OTY4NSwgODk2OTAsIAorICAgIDg5Njk2LCA4OTcwMiwgODk3MDcsIDg5NzEzLCA4OTcxOSwgODk3MjQsIDg5NzI5LCA4OTczNSwgODk3NDAsIDg5NzQ2LCAKKyAgICA4OTc1MiwgODk3NTgsIDg5NzY0LCA4OTc3MCwgODk3NzQsIDg5Nzc5LCA4OTc4MywgODk3ODgsIDg5NzkyLCA4OTc5NywgCisgICAgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI1LCA4OTgzMSwgODk4MzcsIDg5ODQzLCA4OTg0OCwgODk4NTQsIAorICAgIDg5ODYwLCA4OTg2NSwgODk4NzEsIDg5ODc3LCA4OTg4MiwgODk4ODgsIDg5ODk0LCA4OTg5OSwgODk5MDQsIDg5OTEwLCAKKyAgICA4OTkxNSwgODk5MjEsIDg5OTI3LCA4OTkzMywgODk5MzksIDg5OTQ1LCA4OTk1MCwgODk5NTQsIDg5OTU5LCA4OTk2MiwgCisgICAgODk5NjcsIDg5OTcyLCA4OTk3OCwgODk5ODMsIDg5OTg4LCA4OTk5MiwgODk5OTcsIDkwMDAyLCA5MDAwNywgOTAwMTIsIAorICAgIDkwMDE3LCA5MDAyMiwgOTAwMjcsIDkwMDMyLCA5MDAzOCwgOTAwNDQsIDkwMDUwLCA5MDA1OCwgOTAwNjIsIDkwMDY2LCAKKyAgICA5MDA3MCwgOTAwNzQsIDkwMDc4LCA5MDA4MiwgOTAwODcsIDkwMDkyLCA5MDA5NywgOTAxMDIsIDkwMTA3LCA5MDExMiwgCisgICAgOTAxMTcsIDkwMTIyLCA5MDEyNywgOTAxMzIsIDkwMTM3LCA5MDE0MiwgOTAxNDcsIDkwMTUxLCA5MDE1NiwgOTAxNjEsIAorICAgIDkwMTY2LCA5MDE3MSwgOTAxNzYsIDkwMTgwLCA5MDE4NSwgOTAxOTAsIDkwMTk1LCA5MDIwMCwgOTAyMDQsIDkwMjA5LCAKKyAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOCwgOTAyMzMsIDkwMjM4LCA5MDI0MywgOTAyNDgsIDkwMjUzLCA5MDI1OCwgCisgICAgOTAyNjMsIDkwMjY4LCA5MDI3MywgOTAyODAsIDkwMjg3LCA5MDI5MSwgOTAyOTYsIDkwMzAxLCA5MDMwNiwgOTAzMTEsIAorICAgIDkwMzE2LCA5MDMyMSwgOTAzMjYsIDkwMzMxLCA5MDMzNiwgOTAzNDEsIDkwMzQ2LCA5MDM1MSwgOTAzNTYsIDkwMzYxLCAKKyAgICA5MDM2NiwgOTAzNzEsIDkwMzc2LCA5MDM4MSwgOTAzODYsIDkwMzkxLCA5MDM5NiwgOTA0MDEsIDkwNDA2LCA5MDQxMSwgCisgICAgOTA0MTYsIDkwNDIxLCA5MDQyNiwgOTA0MzEsIDkwNDM2LCAwLCAwLCAwLCA5MDQ0MSwgOTA0NDUsIDkwNDUwLCA5MDQ1NCwgCisgICAgOTA0NTksIDkwNDY0LCAwLCAwLCA5MDQ2OCwgOTA0NzMsIDkwNDc4LCA5MDQ4MiwgOTA0ODcsIDkwNDkyLCAwLCAwLCAKKyAgICA5MDQ5NywgOTA1MDIsIDkwNTA2LCA5MDUxMSwgOTA1MTYsIDkwNTIxLCAwLCAwLCA5MDUyNiwgOTA1MzEsIDkwNTM2LCAwLCAKKyAgICAwLCAwLCA5MDU0MCwgOTA1NDQsIDkwNTQ4LCA5MDU1MiwgOTA1NTUsIDkwNTU5LCA5MDU2MywgMCwgOTA1NjcsIDkwNTczLCAKKyAgICA5MDU3NiwgOTA1NzksIDkwNTgyLCA5MDU4NSwgOTA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwNTkzLCAKKyAgICA5MDU5OSwgOTA2MDUsIDkwNjExLCA5MDYxNywgMCwgMCwgOTA2MjEsIDkwNjI3LCA5MDYzMywgOTA2MzksIDkwNjQ1LCAKKyAgICA5MDY1MSwgOTA2NTgsIDkwNjY1LCA5MDY3MiwgOTA2NzksIDkwNjg2LCA5MDY5MywgMCwgOTA3MDAsIDkwNzA3LCA5MDcxNCwgCisgICAgOTA3MjAsIDkwNzI3LCA5MDczNCwgOTA3NDEsIDkwNzQ4LCA5MDc1NCwgOTA3NjEsIDkwNzY4LCA5MDc3NSwgOTA3ODIsIAorICAgIDkwNzg5LCA5MDc5NiwgOTA4MDMsIDkwODEwLCA5MDgxNywgOTA4MjMsIDkwODMwLCA5MDgzNywgOTA4NDQsIDkwODUxLCAKKyAgICA5MDg1OCwgOTA4NjUsIDkwODcyLCAwLCA5MDg3OSwgOTA4ODYsIDkwODkzLCA5MDkwMCwgOTA5MDcsIDkwOTE0LCA5MDkyMSwgCisgICAgOTA5MjgsIDkwOTM1LCA5MDk0MiwgOTA5NDksIDkwOTU2LCA5MDk2MywgOTA5NzAsIDkwOTc2LCA5MDk4MywgOTA5OTAsIAorICAgIDkwOTk3LCA5MTAwNCwgMCwgOTEwMTEsIDkxMDE4LCAwLCA5MTAyNSwgOTEwMzIsIDkxMDM5LCA5MTA0NiwgOTEwNTMsIAorICAgIDkxMDYwLCA5MTA2NywgOTEwNzQsIDkxMDgxLCA5MTA4OCwgOTEwOTUsIDkxMTAyLCA5MTEwOSwgOTExMTYsIDkxMTIzLCAwLCAKKyAgICAwLCA5MTEyOSwgOTExMzQsIDkxMTM5LCA5MTE0NCwgOTExNDksIDkxMTU0LCA5MTE1OSwgOTExNjQsIDkxMTY5LCA5MTE3NCwgCisgICAgOTExNzksIDkxMTg0LCA5MTE4OSwgOTExOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTk5LCA5MTIwNiwgCisgICAgOTEyMTMsIDkxMjIwLCA5MTIyNywgOTEyMzQsIDkxMjQxLCA5MTI0OCwgOTEyNTUsIDkxMjYyLCA5MTI2OSwgOTEyNzYsIAorICAgIDkxMjgzLCA5MTI5MCwgOTEyOTcsIDkxMzA0LCA5MTMxMSwgOTEzMTgsIDkxMzI1LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCAKKyAgICA5MTM1NSwgOTEzNjIsIDkxMzY3LCA5MTM3NSwgOTEzODMsIDkxMzkwLCA5MTM5NywgOTE0MDIsIDkxNDA5LCA5MTQxNCwgCisgICAgOTE0MTksIDkxNDI2LCA5MTQzMSwgOTE0MzYsIDkxNDQxLCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NiwgOTE0NzEsIAorICAgIDkxNDc2LCA5MTQ4MywgOTE0OTAsIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCAKKyAgICA5MTUzMCwgOTE1MzUsIDkxNTQyLCA5MTU0NywgOTE1NTQsIDkxNTU5LCA5MTU2NCwgOTE1NjksIDkxNTc0LCA5MTU3OSwgCisgICAgOTE1ODQsIDkxNTg5LCA5MTU5NCwgOTE1OTksIDkxNjA0LCA5MTYwOSwgOTE2MTYsIDkxNjIzLCA5MTYzMCwgOTE2MzcsIAorICAgIDkxNjQzLCA5MTY0OCwgOTE2NTUsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgxLCA5MTY5MCwgOTE2OTcsIDkxNzAyLCAKKyAgICA5MTcwNywgOTE3MTUsIDkxNzIwLCA5MTcyNSwgOTE3MzAsIDkxNzM1LCA5MTc0MCwgOTE3NDcsIDkxNzUyLCA5MTc1NywgCisgICAgOTE3NjIsIDkxNzY3LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE4MDAsIDkxODA3LCA5MTgxNCwgOTE4MjEsIAorICAgIDkxODI4LCA5MTgzNSwgOTE4NDIsIDkxODQ5LCA5MTg1NiwgOTE4NjMsIDkxODcwLCA5MTg3NywgOTE4ODQsIDkxODkxLCAKKyAgICA5MTg5OCwgOTE5MDUsIDkxOTEyLCA5MTkxOSwgOTE5MjYsIDkxOTMzLCA5MTk0MCwgOTE5NDcsIDkxOTU0LCA5MTk2MSwgCisgICAgOTE5NjgsIDAsIDAsIDAsIDAsIDAsIDkxOTc1LCA5MTk4MywgOTE5OTEsIDAsIDAsIDAsIDAsIDkxOTk2LCA5MjAwMCwgCisgICAgOTIwMDQsIDkyMDA4LCA5MjAxMiwgOTIwMTYsIDkyMDIwLCA5MjAyNSwgOTIwMjksIDkyMDM0LCA5MjAzOSwgOTIwNDQsIAorICAgIDkyMDQ5LCA5MjA1NCwgOTIwNTksIDkyMDY0LCA5MjA2OSwgOTIwNzQsIDkyMDc5LCA5MjA4NSwgOTIwOTEsIDkyMDk3LCAKKyAgICA5MjEwNCwgOTIxMTEsIDkyMTE4LCA5MjEyNSwgOTIxMzIsIDkyMTM5LCA5MjE0NSwgOTIxNTEsIDkyMTU3LCA5MjE2NCwgCisgICAgOTIxNzEsIDkyMTc4LCA5MjE4NSwgOTIxOTIsIDkyMTk5LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNywgOTIyMzQsIAorICAgIDkyMjQxLCA5MjI0OCwgOTIyNTUsIDAsIDAsIDAsIDkyMjYyLCA5MjI3MCwgOTIyNzgsIDkyMjg2LCA5MjI5NCwgOTIzMDIsIAorICAgIDkyMzEyLCA5MjMyMiwgOTIzMzAsIDkyMzM4LCA5MjM0NiwgOTIzNTQsIDkyMzYyLCA5MjM2OCwgOTIzNzUsIDkyMzg0LCAKKyAgICA5MjM5MywgOTI0MDIsIDkyNDExLCA5MjQyMCwgOTI0MjksIDkyNDM5LCA5MjQ1MCwgOTI0NjAsIDkyNDcxLCA5MjQ4MCwgCisgICAgOTI0ODksIDkyNDk4LCA5MjUwOCwgOTI1MTksIDkyNTI5LCA5MjU0MCwgOTI1NTEsIDkyNTYwLCA5MjU2OCwgOTI1NzQsIAorICAgIDkyNTgwLCA5MjU4NiwgOTI1OTIsIDkyNjAwLCA5MjYwOCwgOTI2MTQsIDkyNjIxLCA5MjYzMSwgOTI2MzgsIDkyNjQ1LCAKKyAgICA5MjY1MiwgOTI2NTksIDkyNjY2LCA5MjY3NiwgOTI2ODMsIDkyNjkwLCA5MjY5OCwgOTI3MDYsIDkyNzE1LCA5MjcyNCwgCisgICAgOTI3MzMsIDkyNzQyLCA5Mjc1MSwgOTI3NTksIDkyNzY4LCA5Mjc3NywgOTI3ODYsIDkyNzkwLCA5Mjc5NywgOTI4MDIsIAorICAgIDkyODA3LCA5MjgxMSwgOTI4MTUsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMzLCA5MjgzOSwgOTI4NDUsIDkyODQ5LCAKKyAgICA5Mjg1NSwgOTI4NTksIDkyODYzLCA5Mjg2NywgOTI4NzEsIDkyODc1LCA5Mjg3OSwgOTI4ODUsIDkyODg5LCA5Mjg5NCwgMCwgCisgICAgMCwgMCwgOTI4OTgsIDkyOTAzLCA5MjkwOCwgOTI5MTMsIDkyOTE4LCA5MjkyNSwgOTI5MzAsIDkyOTM1LCA5Mjk0MCwgCisgICAgOTI5NDUsIDkyOTUwLCA5Mjk1NSwgMCwgMCwgMCwgMCwgOTI5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDYzNzA2LCA2MzcxNSwgNjM3MjQsIDYzNzM1LCA2Mzc0MiwgNjM3NDcsIDYzNzUyLCA2Mzc1OSwgNjM3NjYsIAotICAgIDYzNzcyLCA2Mzc3NywgNjM3ODIsIDYzNzg3LCA2Mzc5MiwgNjM3OTksIDYzODA0LCA2MzgwOSwgNjM4MTQsIDYzODI1LCAKLSAgICA2MzgzMCwgNjM4MzUsIDYzODQyLCA2Mzg0NywgNjM4NTQsIDYzODU5LCA2Mzg2NCwgNjM4NzEsIDYzODc4LCA2Mzg4NSwgCi0gICAgNjM4OTQsIDYzOTAzLCA2MzkwOCwgNjM5MTMsIDYzOTE4LCA2MzkyNSwgNjM5MzAsIDYzOTQwLCA2Mzk0NywgNjM5NTIsIAotICAgIDYzOTU3LCA2Mzk2MiwgNjM5NjcsIDYzOTcyLCA2Mzk3NywgNjM5ODYsIDYzOTkzLCA2NDAwMCwgNjQwMDUsIDY0MDEyLCAKLSAgICA2NDAxNywgNjQwMjQsIDY0MDMzLCA2NDA0NCwgNjQwNDksIDY0MDU4LCA2NDA2MywgNjQwNzAsIDY0MDc5LCA2NDA4OCwgCi0gICAgNjQwOTMsIDY0MDk4LCA2NDEwNSwgNjQxMTEsIDY0MTE4LCA2NDEyNSwgNjQxMjksIDY0MTMzLCA2NDEzNiwgNjQxNDAsIAotICAgIDY0MTQ0LCA2NDE0OCwgNjQxNTIsIDY0MTU2LCA2NDE2MCwgNjQxNjQsIDY0MTY3LCA2NDE3MSwgNjQxNzUsIDY0MTc5LCAKLSAgICA2NDE4MywgNjQxODcsIDY0MTkxLCA2NDE5NCwgNjQxOTgsIDY0MjAyLCA2NDIwNSwgNjQyMDksIDY0MjEzLCA2NDIxNywgCi0gICAgNjQyMjEsIDY0MjI1LCA2NDIyOSwgNjQyMzMsIDY0MjM3LCA2NDI0MSwgNjQyNDUsIDY0MjQ5LCA2NDI1MywgNjQyNTcsIAotICAgIDY0MjYxLCA2NDI2NSwgNjQyNjksIDY0MjczLCA2NDI3NywgNjQyODEsIDY0Mjg1LCA2NDI4OSwgNjQyOTMsIDY0Mjk3LCAKLSAgICA2NDMwMSwgNjQzMDUsIDY0MzA5LCA2NDMxMywgNjQzMTcsIDY0MzIxLCA2NDMyNSwgNjQzMjksIDY0MzMzLCA2NDMzNywgCi0gICAgNjQzNDEsIDY0MzQ1LCA2NDM0OSwgNjQzNTMsIDY0MzU3LCA2NDM2MSwgNjQzNjUsIDY0MzY5LCA2NDM3MywgNjQzNzcsIAotICAgIDY0MzgxLCA2NDM4NCwgNjQzODgsIDY0MzkyLCA2NDM5NiwgNjQ0MDAsIDY0NDA0LCA2NDQwOCwgNjQ0MTIsIDY0NDE2LCAKLSAgICA2NDQyMCwgNjQ0MjQsIDY0NDI4LCA2NDQzMiwgNjQ0MzYsIDY0NDQwLCA2NDQ0NCwgNjQ0NDgsIDY0NDUyLCA2NDQ1NiwgCi0gICAgNjQ0NjAsIDY0NDY0LCA2NDQ2OCwgNjQ0NzIsIDY0NDc2LCA2NDQ4MCwgNjQ0ODQsIDY0NDg4LCA2NDQ5MiwgNjQ0OTYsIAotICAgIDY0NTAwLCA2NDUwNCwgNjQ1MDgsIDY0NTEyLCA2NDUxNiwgNjQ1MjAsIDY0NTI0LCA2NDUyOCwgNjQ1MzIsIDY0NTM2LCAKLSAgICA2NDU0MCwgNjQ1NDQsIDY0NTQ4LCA2NDU1MiwgNjQ1NTYsIDY0NTYwLCA2NDU2NCwgNjQ1NjgsIDY0NTcyLCA2NDU3NiwgCi0gICAgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCA2NDYwMCwgNjQ2MDQsIDY0NjA4LCA2NDYxMiwgNjQ2MTYsIAotICAgIDY0NjIwLCA2NDYyNCwgNjQ2MjgsIDY0NjMyLCA2NDYzNiwgNjQ2NDAsIDY0NjQ0LCA2NDY0OCwgNjQ2NTIsIDY0NjU2LCAKLSAgICA2NDY2MCwgNjQ2NjQsIDY0NjY4LCA2NDY3MiwgNjQ2NzYsIDY0NjgwLCA2NDY4NCwgNjQ2ODgsIDY0NjkyLCA2NDY5NiwgCi0gICAgNjQ3MDAsIDY0NzA0LCA2NDcwOCwgNjQ3MTIsIDY0NzE2LCA2NDcyMCwgNjQ3MjQsIDY0NzI4LCA2NDczMiwgNjQ3MzYsIAotICAgIDY0NzQwLCA2NDc0NCwgNjQ3NDgsIDY0NzUyLCA2NDc1NiwgNjQ3NjAsIDY0NzY0LCA2NDc2OCwgNjQ3NzIsIDY0Nzc2LCAKLSAgICA2NDc4MCwgNjQ3ODQsIDY0Nzg4LCA2NDc5MiwgNjQ3OTYsIDY0ODAwLCA2NDgwNCwgNjQ4MDgsIDY0ODEyLCA2NDgxNiwgCi0gICAgNjQ4MjAsIDY0ODI0LCA2NDgyOCwgNjQ4MzIsIDY0ODM2LCA2NDg0MCwgNjQ4NDQsIDY0ODQ4LCA2NDg1MiwgNjQ4NTUsIAotICAgIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NSwgNjQ4NzksIDY0ODgzLCA2NDg4NywgNjQ4OTEsIDY0ODk1LCAKLSAgICA2NDg5OSwgNjQ5MDMsIDY0OTA3LCA2NDkxMSwgNjQ5MTUsIDY0OTE5LCA2NDkyMywgNjQ5MjcsIDY0OTMxLCA2NDkzNSwgCi0gICAgNjQ5MzksIDY0OTQzLCA2NDk0NywgNjQ5NTEsIDY0OTU1LCA2NDk1OSwgNjQ5NjMsIDY0OTY3LCA2NDk3MSwgNjQ5NzUsIAotICAgIDY0OTc5LCA2NDk4MywgNjQ5ODcsIDY0OTkxLCA2NDk5NSwgNjQ5OTksIDY1MDAzLCA2NTAwNywgNjUwMTEsIDY1MDE1LCAKLSAgICA2NTAxOSwgNjUwMjMsIDY1MDI3LCA2NTAzMSwgNjUwMzUsIDY1MDM5LCA2NTA0MywgNjUwNDcsIDY1MDUxLCA2NTA1NSwgCi0gICAgNjUwNTksIDY1MDYzLCA2NTA2NywgNjUwNzEsIDY1MDc1LCA2NTA3OSwgNjUwODMsIDY1MDg3LCA2NTA5MSwgNjUwOTUsIAotICAgIDY1MDk5LCA2NTEwMywgNjUxMDcsIDY1MTExLCA2NTExNSwgNjUxMTksIDY1MTIzLCA2NTEyNywgNjUxMzEsIDY1MTM1LCAKLSAgICA2NTEzOSwgNjUxNDMsIDY1MTQ3LCA2NTE1MSwgNjUxNTUsIDY1MTU5LCA2NTE2MywgNjUxNjcsIDY1MTcxLCA2NTE3NSwgCi0gICAgNjUxNzksIDY1MTgzLCA2NTE4NywgNjUxOTEsIDY1MTk1LCA2NTE5OSwgNjUyMDMsIDY1MjA3LCA2NTIxMSwgNjUyMTUsIAotICAgIDY1MjE5LCA2NTIyMywgNjUyMjcsIDY1MjMxLCA2NTIzNSwgNjUyMzksIDY1MjQzLCA2NTI0NywgNjUyNTEsIDY1MjU1LCAKLSAgICA2NTI1OSwgNjUyNjMsIDY1MjY3LCA2NTI3MSwgNjUyNzUsIDY1Mjc5LCA2NTI4MywgNjUyODcsIDY1MjkxLCA2NTI5NSwgCi0gICAgNjUyOTksIDY1MzAzLCA2NTMwNywgNjUzMTEsIDY1MzE1LCA2NTMxOCwgNjUzMjIsIDY1MzI2LCA2NTMzMCwgNjUzMzQsIAotICAgIDY1MzM4LCA2NTM0MiwgNjUzNDYsIDY1MzUwLCA2NTM1NCwgNjUzNTgsIDY1MzYyLCA2NTM2NiwgNjUzNzAsIDY1Mzc0LCAKLSAgICA2NTM3OCwgNjUzODIsIDY1Mzg2LCA2NTM5MCwgNjUzOTQsIDY1Mzk4LCA2NTQwMiwgNjU0MDYsIDY1NDEwLCA2NTQxNCwgCi0gICAgNjU0MTgsIDY1NDIyLCA2NTQyNiwgNjU0MzAsIDY1NDM0LCA2NTQzOCwgNjU0NDIsIDY1NDQ2LCA2NTQ1MCwgNjU0NTQsIAotICAgIDY1NDU4LCA2NTQ2MiwgNjU0NjYsIDY1NDcwLCA2NTQ3NCwgNjU0NzgsIDY1NDgyLCA2NTQ4NiwgNjU0OTAsIDY1NDk0LCAKLSAgICA2NTQ5OCwgNjU1MDIsIDY1NTA2LCA2NTUxMCwgNjU1MTQsIDY1NTE4LCA2NTUyMiwgNjU1MjYsIDY1NTMwLCA2NTUzNCwgCi0gICAgNjU1MzgsIDY1NTQyLCA2NTU0NiwgNjU1NTAsIDY1NTU0LCA2NTU1OCwgNjU1NjIsIDY1NTY2LCA2NTU3MCwgNjU1NzQsIAotICAgIDY1NTc4LCA2NTU4MiwgNjU1ODYsIDY1NTkwLCA2NTU5NCwgNjU1OTgsIDY1NjAyLCA2NTYwNiwgNjU2MTAsIDY1NjE0LCAKLSAgICA2NTYxOCwgNjU2MjIsIDY1NjI2LCA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgCi0gICAgNjU2NTgsIDY1NjYyLCA2NTY2NiwgNjU2NzAsIDY1Njc0LCA2NTY3NywgNjU2ODEsIDY1Njg1LCA2NTY4OSwgNjU2OTMsIAotICAgIDY1Njk3LCA2NTcwMSwgNjU3MDUsIDY1NzA5LCA2NTcxMywgNjU3MTcsIDY1NzIxLCA2NTcyNSwgNjU3MjksIDY1NzMzLCAKLSAgICA2NTczNywgNjU3NDEsIDY1NzQ1LCA2NTc0OSwgNjU3NTMsIDY1NzU3LCA2NTc2MSwgNjU3NjUsIDY1NzY5LCA2NTc3MywgCi0gICAgNjU3NzcsIDY1NzgxLCA2NTc4NSwgNjU3ODksIDY1NzkzLCA2NTc5NywgNjU4MDEsIDY1ODA1LCA2NTgwOSwgNjU4MTMsIAotICAgIDY1ODE3LCA2NTgyMSwgNjU4MjUsIDY1ODI5LCA2NTgzMywgNjU4MzcsIDY1ODQxLCA2NTg0NSwgNjU4NDksIDY1ODUzLCAKLSAgICA2NTg1NywgNjU4NjEsIDY1ODY1LCA2NTg2OSwgNjU4NzMsIDY1ODc3LCA2NTg4MSwgNjU4ODUsIDY1ODg5LCA2NTg5MywgCi0gICAgNjU4OTcsIDY1OTAxLCA2NTkwNSwgNjU5MDksIDY1OTEzLCA2NTkxNywgNjU5MjEsIDY1OTI1LCA2NTkyOSwgNjU5MzMsIAotICAgIDY1OTM3LCA2NTk0MSwgNjU5NDUsIDY1OTQ5LCA2NTk1MywgNjU5NTcsIDY1OTYxLCA2NTk2NSwgNjU5NjksIDY1OTczLCAKLSAgICA2NTk3NywgNjU5ODEsIDY1OTg1LCA2NTk4OSwgNjU5OTMsIDY1OTk3LCA2NjAwMSwgNjYwMDUsIDY2MDA5LCA2NjAxMywgCi0gICAgNjYwMTcsIDY2MDIxLCA2NjAyNSwgNjYwMjksIDY2MDMzLCA2NjAzNywgNjYwNDEsIDY2MDQ1LCA2NjA0OSwgNjYwNTMsIAotICAgIDY2MDU3LCA2NjA2MSwgNjYwNjUsIDY2MDY5LCA2NjA3MywgNjYwNzcsIDY2MDgxLCA2NjA4NSwgNjYwODksIDY2MDkzLCAKLSAgICA2NjA5NywgNjYxMDEsIDY2MTA1LCA2NjEwOSwgNjYxMTMsIDY2MTE3LCA2NjEyMSwgNjYxMjUsIDY2MTI5LCA2NjEzMywgCi0gICAgNjYxMzcsIDY2MTQxLCA2NjE0NSwgNjYxNDksIDY2MTUzLCA2NjE1NywgNjYxNjEsIDY2MTY1LCA2NjE2OSwgNjYxNzIsIAotICAgIDY2MTc2LCA2NjE4MCwgNjYxODQsIDY2MTg4LCA2NjE5MiwgNjYxOTYsIDY2MjAwLCA2NjIwNCwgNjYyMDgsIDY2MjEyLCAKLSAgICA2NjIxNiwgNjYyMjAsIDY2MjI0LCA2NjIyOCwgNjYyMzIsIDY2MjM2LCA2NjI0MCwgNjYyNDQsIDY2MjQ4LCA2NjI1MiwgCi0gICAgNjYyNTYsIDY2MjYwLCA2NjI2NCwgNjYyNjgsIDY2MjcyLCA2NjI3NiwgNjYyODAsIDY2Mjg0LCA2NjI4OCwgNjYyOTIsIAotICAgIDY2Mjk2LCA2NjMwMCwgNjYzMDQsIDY2MzA4LCA2NjMxMiwgNjYzMTYsIDY2MzIwLCA2NjMyNCwgNjYzMjgsIDY2MzMyLCAKLSAgICA2NjMzNiwgNjYzNDAsIDY2MzQ0LCA2NjM0OCwgNjYzNTIsIDY2MzU2LCA2NjM2MCwgNjYzNjQsIDY2MzY4LCA2NjM3MiwgCi0gICAgNjYzNzYsIDY2MzgwLCA2NjM4NCwgNjYzODgsIDY2MzkyLCA2NjM5NiwgNjY0MDAsIDY2NDA0LCA2NjQwOCwgNjY0MTIsIAotICAgIDY2NDE2LCA2NjQyMCwgNjY0MjQsIDY2NDI4LCA2NjQzMiwgNjY0MzYsIDY2NDQwLCA2NjQ0NCwgNjY0NDgsIDY2NDUyLCAKLSAgICA2NjQ1NiwgNjY0NjAsIDY2NDY0LCA2NjQ2OCwgNjY0NzIsIDY2NDc2LCA2NjQ4MCwgNjY0ODQsIDY2NDg4LCA2NjQ5MiwgCi0gICAgNjY0OTYsIDY2NTAwLCA2NjUwNCwgNjY1MDgsIDY2NTEyLCA2NjUxNiwgNjY1MjAsIDY2NTI0LCA2NjUyOCwgNjY1MzIsIAotICAgIDY2NTM2LCA2NjU0MCwgNjY1NDQsIDY2NTQ4LCA2NjU1MiwgNjY1NTYsIDY2NTYwLCA2NjU2NCwgNjY1NjgsIDY2NTcyLCAKLSAgICA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4OCwgNjY1OTIsIDY2NTk2LCA2NjYwMCwgNjY2MDQsIDY2NjA4LCA2NjYxMiwgCi0gICAgNjY2MTYsIDY2NjIwLCA2NjYyNCwgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCA2NjY0NywgNjY2NTEsIAotICAgIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgNjY2ODcsIDY2NjkxLCAKLSAgICA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIDY2NzI3LCA2NjczMSwgCi0gICAgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCA2Njc2NywgNjY3NzEsIAotICAgIDY2Nzc1LCA2Njc3OSwgNjY3ODMsIDY2Nzg3LCA2Njc5MSwgNjY3OTUsIDY2Nzk5LCA2NjgwMywgNjY4MDcsIDY2ODExLCAKLSAgICA2NjgxNSwgNjY4MTksIDY2ODIzLCA2NjgyNywgNjY4MzEsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIDY2ODQ3LCA2Njg1MSwgCi0gICAgNjY4NTUsIDY2ODU5LCA2Njg2MywgNjY4NjcsIDY2ODcxLCA2Njg3NSwgNjY4NzksIDY2ODgzLCA2Njg4NywgNjY4OTEsIAotICAgIDY2ODk1LCA2Njg5OSwgNjY5MDMsIDY2OTA3LCA2NjkxMSwgNjY5MTUsIDY2OTE5LCA2NjkyMywgNjY5MjcsIDY2OTMxLCAKLSAgICA2NjkzNSwgNjY5MzksIDY2OTQzLCA2Njk0NywgNjY5NTEsIDY2OTU1LCA2Njk1OSwgNjY5NjMsIDY2OTY3LCA2Njk3MSwgCi0gICAgNjY5NzUsIDY2OTc5LCA2Njk4MywgNjY5ODcsIDY2OTkxLCA2Njk5NSwgNjY5OTksIDY3MDAzLCA2NzAwNywgNjcwMTEsIAotICAgIDY3MDE1LCA2NzAxOSwgNjcwMjMsIDY3MDI3LCA2NzAzMSwgNjcwMzUsIDY3MDM5LCA2NzA0MywgNjcwNDcsIDY3MDUxLCAKLSAgICA2NzA1NSwgNjcwNTksIDY3MDYzLCA2NzA2NywgNjcwNzEsIDY3MDc1LCA2NzA3OSwgNjcwODMsIDY3MDg3LCA2NzA5MSwgCi0gICAgNjcwOTUsIDY3MDk5LCA2NzEwMywgNjcxMDcsIDY3MTExLCA2NzExNSwgNjcxMTksIDY3MTIzLCA2NzEyNywgNjcxMzEsIAotICAgIDY3MTM1LCA2NzEzOSwgNjcxNDMsIDY3MTQ3LCA2NzE1MSwgNjcxNTUsIDY3MTU5LCA2NzE2MywgNjcxNjcsIDY3MTcxLCAKLSAgICA2NzE3NSwgNjcxNzksIDY3MTgzLCA2NzE4NywgNjcxOTEsIDY3MTk1LCA2NzE5OSwgNjcyMDMsIDY3MjA3LCA2NzIxMSwgCi0gICAgNjcyMTUsIDY3MjE5LCA2NzIyMywgNjcyMjcsIDY3MjMwLCA2NzIzNCwgNjcyMzgsIDY3MjQyLCA2NzI0NiwgNjcyNTAsIAotICAgIDY3MjU0LCA2NzI1OCwgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgNjcyODUsIDY3Mjg5LCAKLSAgICA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIDY3MzI1LCA2NzMyOSwgCi0gICAgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCA2NzM2NSwgNjczNjksIAotICAgIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgNjc0MDUsIDY3NDA5LCAKLSAgICA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIDY3NDQ1LCA2NzQ0OSwgCi0gICAgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCA2NzQ4NSwgNjc0ODksIAotICAgIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgNjc1MjUsIDY3NTI5LCAKLSAgICA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIDY3NTY1LCA2NzU2OSwgCi0gICAgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCA2NzYwNSwgNjc2MDksIAotICAgIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgNjc2NDUsIDY3NjQ5LCAKLSAgICA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIDY3Njg1LCA2NzY4OSwgCi0gICAgNjc2OTMsIDY3Njk3LCA2NzcwMSwgNjc3MDUsIDY3NzA5LCA2NzcxMywgNjc3MTcsIDY3NzIxLCA2NzcyNSwgNjc3MjksIAotICAgIDY3NzMzLCA2NzczNywgNjc3NDEsIDY3NzQ1LCA2Nzc0OSwgNjc3NTMsIDY3NzU3LCA2Nzc2MSwgNjc3NjUsIDY3NzY5LCAKLSAgICA2Nzc3MywgNjc3NzcsIDY3NzgxLCA2Nzc4NSwgNjc3ODksIDY3NzkzLCA2Nzc5NywgNjc4MDEsIDY3ODA1LCA2NzgwOSwgCi0gICAgNjc4MTMsIDY3ODE3LCA2NzgyMSwgNjc4MjUsIDY3ODI5LCA2NzgzMywgNjc4MzcsIDY3ODQxLCA2Nzg0NSwgNjc4NDksIAotICAgIDY3ODUzLCA2Nzg1NywgNjc4NjEsIDY3ODY1LCA2Nzg2OSwgNjc4NzMsIDY3ODc3LCA2Nzg4MSwgNjc4ODUsIDY3ODg5LCAKLSAgICA2Nzg5MywgNjc4OTcsIDY3OTAxLCA2NzkwNSwgNjc5MDksIDY3OTEzLCA2NzkxNywgNjc5MjEsIDY3OTI1LCA2NzkyOSwgCi0gICAgNjc5MzMsIDY3OTM3LCA2Nzk0MSwgNjc5NDUsIDY3OTQ5LCA2Nzk1MywgNjc5NTcsIDY3OTYxLCA2Nzk2NSwgNjc5NjksIAotICAgIDY3OTczLCA2Nzk3NywgNjc5ODEsIDY3OTg1LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgNjgwMDQsIDY4MDA4LCAKLSAgICA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIDY4MDQ0LCA2ODA0OCwgCi0gICAgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCA2ODA4NCwgNjgwODgsIAotICAgIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgNjgxMjQsIDY4MTI4LCAKLSAgICA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIDY4MTY0LCA2ODE2OCwgCi0gICAgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCA2ODIwNCwgNjgyMDgsIAotICAgIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgNjgyNDQsIDY4MjQ4LCAKLSAgICA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIDY4Mjg0LCA2ODI4OCwgCi0gICAgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCA2ODMyNCwgNjgzMjgsIAotICAgIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgNjgzNjQsIDY4MzY4LCAKLSAgICA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIDY4NDA0LCA2ODQwOCwgCi0gICAgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCA2ODQ0NCwgNjg0NDgsIAotICAgIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgNjg0ODQsIDY4NDg4LCAKLSAgICA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIDY4NTI0LCA2ODUyOCwgCi0gICAgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTYsIDY4NTYwLCA2ODU2NCwgNjg1NjgsIAotICAgIDY4NTcyLCA2ODU3NiwgNjg1ODAsIDY4NTg0LCA2ODU4OCwgNjg1OTIsIDY4NTk2LCA2ODYwMCwgNjg2MDQsIDY4NjA4LCAKLSAgICA2ODYxMiwgNjg2MTYsIDY4NjIwLCA2ODYyNCwgNjg2MjgsIDY4NjMyLCA2ODYzNiwgNjg2NDAsIDY4NjQ0LCA2ODY0OCwgCi0gICAgNjg2NTIsIDY4NjU2LCA2ODY2MCwgNjg2NjQsIDY4NjY4LCA2ODY3MiwgNjg2NzYsIDY4NjgwLCA2ODY4NCwgNjg2ODgsIAotICAgIDY4NjkyLCA2ODY5NiwgNjg3MDAsIDY4NzA0LCA2ODcwOCwgNjg3MTIsIDY4NzE2LCA2ODcyMCwgNjg3MjQsIDY4NzI4LCAKLSAgICA2ODczMiwgNjg3MzYsIDY4NzQwLCA2ODc0NCwgNjg3NDgsIDY4NzUyLCA2ODc1NiwgNjg3NjAsIDY4NzY0LCA2ODc2OCwgMCwgCi0gICAgMCwgMCwgNjg3NzIsIDY4Nzc2LCA2ODc4MCwgNjg3ODQsIDY4Nzg4LCA2ODc5MiwgNjg3OTYsIDY4ODAwLCA2ODgwNCwgCi0gICAgNjg4MDgsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI0LCA2ODgyOCwgNjg4MzIsIDY4ODM2LCA2ODg0MCwgNjg4NDQsIAotICAgIDY4ODQ4LCA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgNjg4ODAsIDY4ODg0LCAKLSAgICA2ODg4OCwgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIDY4OTIwLCA2ODkyNCwgCi0gICAgNjg5MjgsIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCA2ODk2MCwgNjg5NjQsIAotICAgIDY4OTY4LCA2ODk3MiwgNjg5NzYsIDY4OTgwLCA2ODk4NCwgNjg5ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY4OTkyLCA2ODk5NywgNjkwMDEsIDY5MDA2LCA2OTAxMSwgNjkwMTYsIDY5MDIxLCA2OTAyNiwgNjkwMzAsIDY5MDM1LCAKLSAgICA2OTA0MCwgNjkwNDUsIDY5MDUwLCA2OTA1NSwgNjkwNjAsIDY5MDY1LCA2OTA2OSwgNjkwNzMsIDY5MDc4LCA2OTA4MiwgCi0gICAgNjkwODcsIDY5MDkyLCA2OTA5NywgNjkxMDEsIDY5MTA2LCA2OTExMSwgNjkxMTYsIDY5MTIxLCA2OTEyNiwgNjkxMzAsIAotICAgIDY5MTM1LCA2OTEzOSwgNjkxNDQsIDY5MTQ4LCA2OTE1MywgNjkxNTcsIDY5MTYxLCA2OTE2NSwgNjkxNzAsIDY5MTc1LCAKLSAgICA2OTE4MCwgNjkxODgsIDY5MTk2LCA2OTIwNCwgNjkyMTIsIDY5MjE5LCA2OTIyNywgNjkyMzMsIDY5MjQxLCA2OTI0NSwgCi0gICAgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCA2OTI4MSwgNjkyODUsIAotICAgIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAxLCA2OTMwNSwgNjkzMDksIDY5MzEzLCA2OTMxNywgNjkzMjEsIDY5MzI1LCAKLSAgICA2OTMyOSwgNjkzMzMsIDY5MzM3LCA2OTM0MSwgNjkzNDUsIDY5MzQ5LCA2OTM1MywgNjkzNTcsIDY5MzYxLCA2OTM2NSwgCi0gICAgNjkzNjksIDY5MzczLCA2OTM3NywgNjkzODEsIDY5Mzg1LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCA2OTQwMCwgNjk0MDQsIAotICAgIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgNjk0NDAsIDY5NDQ0LCAKLSAgICA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIDY5NDgwLCA2OTQ4NCwgCi0gICAgNjk0ODgsIDY5NDkyLCA2OTQ5NiwgNjk1MDAsIDY5NTA0LCA2OTUwOCwgNjk1MTIsIDY5NTE2LCA2OTUyMCwgNjk1MjQsIAotICAgIDY5NTI4LCA2OTUzMiwgNjk1MzUsIDY5NTM5LCA2OTU0MywgNjk1NDYsIDY5NTUwLCA2OTU1NCwgNjk1NTgsIDY5NTYxLCAKLSAgICA2OTU2NSwgNjk1NjksIDY5NTczLCA2OTU3NywgNjk1ODEsIDY5NTg1LCA2OTU4OSwgNjk1OTMsIDY5NTk3LCA2OTYwMSwgCi0gICAgNjk2MDUsIDY5NjA5LCA2OTYxMywgNjk2MTcsIDY5NjIwLCA2OTYyNCwgNjk2MjgsIDY5NjMxLCA2OTYzNSwgNjk2MzksIAotICAgIDY5NjQzLCA2OTY0NywgNjk2NTEsIDY5NjU1LCA2OTY1OCwgNjk2NjEsIDY5NjY1LCA2OTY2OSwgNjk2NzMsIDY5Njc2LCAKLSAgICA2OTY3OSwgNjk2ODMsIDY5Njg3LCA2OTY5MSwgNjk2OTUsIDY5Njk5LCA2OTcwMywgNjk3MDcsIDY5NzExLCA2OTcxNSwgCi0gICAgNjk3MTksIDY5NzIzLCA2OTcyNywgNjk3MzEsIDY5NzM1LCA2OTczOSwgNjk3NDMsIDY5NzQ3LCA2OTc1MSwgNjk3NTUsIAotICAgIDY5NzU5LCA2OTc2MywgNjk3NjcsIDY5NzcxLCA2OTc3NSwgNjk3NzksIDY5NzgzLCA2OTc4NywgNjk3OTEsIDY5Nzk1LCAKLSAgICA2OTc5OSwgNjk4MDMsIDY5ODA3LCA2OTgxMSwgNjk4MTUsIDY5ODE5LCA2OTgyMywgNjk4MjcsIDY5ODMwLCA2OTgzNCwgCi0gICAgNjk4MzgsIDY5ODQyLCA2OTg0NiwgNjk4NTAsIDY5ODU0LCA2OTg1OCwgNjk4NjIsIDY5ODY2LCA2OTg3MCwgNjk4NzQsIAotICAgIDY5ODc4LCA2OTg4MiwgNjk4ODYsIDY5ODkwLCA2OTg5NCwgNjk4OTgsIDY5OTAyLCA2OTkwNiwgNjk5MTAsIDY5OTE0LCAKLSAgICA2OTkxOCwgNjk5MjIsIDY5OTI2LCA2OTkzMCwgNjk5MzQsIDY5OTM4LCA2OTk0MiwgNjk5NDYsIDY5OTUwLCA2OTk1NCwgCi0gICAgNjk5NTgsIDY5OTYyLCA2OTk2NiwgNjk5NzAsIDY5OTc0LCA2OTk3NywgNjk5ODEsIDY5OTg1LCA2OTk4OSwgNjk5OTMsIAotICAgIDY5OTk3LCA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTcsIDcwMDIxLCA3MDAyNSwgNzAwMjksIDcwMDMzLCAKLSAgICA3MDAzNywgNzAwNDEsIDcwMDQ0LCA3MDA0OCwgNzAwNTIsIDcwMDU2LCA3MDA2MCwgNzAwNjQsIDcwMDY4LCA3MDA3MiwgCi0gICAgNzAwNzYsIDcwMDgwLCA3MDA4NCwgNzAwODgsIDcwMDkyLCA3MDA5NiwgNzAxMDAsIDcwMTA0LCA3MDEwOCwgNzAxMTIsIAotICAgIDcwMTE2LCA3MDEyMCwgNzAxMjQsIDcwMTI4LCA3MDEzMSwgNzAxMzUsIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUxLCAKLSAgICA3MDE1NSwgNzAxNTksIDcwMTYzLCA3MDE2NywgNzAxNzEsIDcwMTc1LCA3MDE3OSwgNzAxODMsIDcwMTg3LCA3MDE5MSwgCi0gICAgNzAxOTUsIDcwMTk5LCA3MDIwMywgNzAyMDcsIDcwMjExLCA3MDIxNSwgNzAyMTksIDcwMjIzLCA3MDIyNywgNzAyMzEsIAotICAgIDcwMjM1LCA3MDIzOSwgNzAyNDMsIDcwMjQ3LCA3MDI1MSwgNzAyNTUsIDcwMjU5LCA3MDI2MywgNzAyNjcsIDcwMjcxLCAKLSAgICA3MDI3NSwgNzAyNzksIDcwMjgzLCA3MDI4NywgNzAyOTEsIDcwMjk1LCA3MDI5OSwgNzAzMDMsIDcwMzA2LCA3MDMxMSwgCi0gICAgNzAzMTUsIDcwMzIxLCA3MDMyNiwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ4LCA3MDM1MiwgNzAzNTYsIAotICAgIDcwMzYwLCA3MDM2NCwgNzAzNjgsIDcwMzcyLCA3MDM3NiwgNzAzODAsIDcwMzg0LCA3MDM4OCwgNzAzOTEsIDcwMzk0LCAKLSAgICA3MDM5NywgNzA0MDAsIDcwNDAzLCA3MDQwNiwgNzA0MDksIDcwNDEyLCA3MDQxNSwgNzA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcwNDI2LCA3MDQzMSwgNzA0MzYsIDcwNDQxLCAKLSAgICA3MDQ0NiwgNzA0NTMsIDcwNDYwLCA3MDQ2NSwgNzA0NzAsIDcwNDc1LCA3MDQ4MCwgNzA0ODcsIDcwNDk0LCA3MDUwMSwgCi0gICAgNzA1MDgsIDcwNTE1LCA3MDUyMiwgNzA1MzIsIDcwNTQyLCA3MDU0OSwgNzA1NTYsIDcwNTYzLCA3MDU3MCwgNzA1NzYsIAotICAgIDcwNTgyLCA3MDU5MSwgNzA2MDAsIDcwNjA3LCA3MDYxNCwgNzA2MjUsIDcwNjM2LCA3MDY0MSwgNzA2NDYsIDcwNjUzLCAKLSAgICA3MDY2MCwgNzA2NjcsIDcwNjc0LCA3MDY4MSwgNzA2ODgsIDcwNjk1LCA3MDcwMiwgNzA3MDgsIDcwNzE0LCA3MDcyMCwgCi0gICAgNzA3MjYsIDcwNzMzLCA3MDc0MCwgNzA3NDUsIDcwNzQ5LCA3MDc1NiwgNzA3NjMsIDcwNzcwLCA3MDc3NCwgNzA3ODEsIAotICAgIDcwNzg1LCA3MDc5MCwgNzA3OTQsIDcwODAwLCA3MDgwNSwgNzA4MTEsIDcwODE2LCA3MDgyMCwgNzA4MjQsIDcwODI3LCAKLSAgICA3MDgzMCwgNzA4MzUsIDcwODQwLCA3MDg0NSwgNzA4NTAsIDcwODU1LCA3MDg2MCwgNzA4NjUsIDcwODcwLCA3MDg3NSwgCi0gICAgNzA4ODAsIDcwODg5LCA3MDg5OCwgNzA5MDMsIDcwOTA4LCA3MDkxMywgNzA5MTgsIDcwOTIzLCA3MDkyOCwgNzA5MzMsIAotICAgIDcwOTM4LCA3MDk0MywgNzA5NDgsIDcwOTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MDk1OCwgNzA5NjQsIDcwOTY3LCAKLSAgICA3MDk3MCwgNzA5NzMsIDcwOTc3LCA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MiwgNzA5OTYsIDcwOTk5LCA3MTAwMywgCi0gICAgNzEwMDYsIDcxMDEwLCA3MTAxNCwgNzEwMTgsIDcxMDIyLCA3MTAyNiwgNzEwMzAsIDcxMDM0LCA3MTAzNywgNzEwNDEsIAotICAgIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIDcxMDgxLCAKLSAgICA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NiwgNzExMDAsIDcxMTA0LCA3MTEwOCwgNzExMTIsIDcxMTE2LCA3MTEyMCwgCi0gICAgNzExMjQsIDcxMTI4LCA3MTEzMiwgNzExMzYsIDcxMTQwLCA3MTE0NCwgNzExNDgsIDcxMTUyLCA3MTE1NiwgNzExNjAsIAotICAgIDcxMTY0LCA3MTE2OCwgNzExNzIsIDcxMTc2LCA3MTE4MCwgNzExODQsIDcxMTg4LCA3MTE5MiwgNzExOTUsIDcxMTk5LCAKLSAgICA3MTIwMywgNzEyMDcsIDcxMjExLCA3MTIxNSwgNzEyMTksIDcxMjIzLCA3MTIyNiwgNzEyMzAsIDcxMjM0LCA3MTIzOCwgCi0gICAgNzEyNDIsIDcxMjQ2LCA3MTI1MCwgNzEyNTQsIDcxMjU4LCA3MTI2MiwgNzEyNjYsIDcxMjcwLCA3MTI3NCwgNzEyNzksIAotICAgIDcxMjg0LCA3MTI4NywgNzEyOTIsIDcxMjk1LCA3MTI5OCwgNzEzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMzA1LCAKLSAgICA3MTMxNCwgNzEzMjMsIDcxMzMyLCA3MTM0MSwgNzEzNTAsIDcxMzU5LCA3MTM2OCwgNzEzNzcsIDcxMzg1LCA3MTM5MiwgCi0gICAgNzE0MDAsIDcxNDA3LCA3MTQxNSwgNzE0MjUsIDcxNDM0LCA3MTQ0NCwgNzE0NTMsIDcxNDYzLCA3MTQ3MSwgNzE0NzgsIAotICAgIDcxNDg2LCA3MTQ5MywgNzE1MDEsIDcxNTA2LCA3MTUxMSwgNzE1MTYsIDcxNTI1LCA3MTUzMSwgNzE1MzcsIDcxNTQ0LCAKLSAgICA3MTU1MywgNzE1NjEsIDcxNTY5LCA3MTU3NywgNzE1ODQsIDcxNTkxLCA3MTU5OCwgNzE2MDUsIDcxNjEwLCA3MTYxNSwgCi0gICAgNzE2MjAsIDcxNjI1LCA3MTYzMCwgNzE2MzUsIDcxNjQwLCA3MTY0NSwgNzE2NTMsIDcxNjYxLCA3MTY2NywgNzE2NzMsIAotICAgIDcxNjc4LCA3MTY4MywgNzE2ODgsIDcxNjkzLCA3MTY5OCwgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MjEsIDcxNzI5LCAKLSAgICA3MTczNCwgNzE3MzksIDcxNzQ5LCA3MTc1OSwgNzE3NjYsIDcxNzczLCA3MTc4MiwgNzE3OTEsIDcxODAzLCA3MTgxNSwgCi0gICAgNzE4MjEsIDcxODI3LCA3MTgzNSwgNzE4NDMsIDcxODUzLCA3MTg2MywgNzE4NzAsIDcxODc3LCA3MTg4MiwgNzE4ODcsIAotICAgIDcxODk5LCA3MTkxMSwgNzE5MTksIDcxOTI3LCA3MTkzNywgNzE5NDcsIDcxOTU5LCA3MTk3MSwgNzE5ODAsIDcxOTg5LCAKLSAgICA3MTk5NiwgNzIwMDMsIDcyMDEwLCA3MjAxNywgNzIwMjYsIDcyMDM1LCA3MjA0MCwgNzIwNDUsIDcyMDUyLCA3MjA1OSwgCi0gICAgNzIwNjYsIDcyMDczLCA3MjA4NSwgNzIwOTcsIDcyMTAyLCA3MjEwNywgNzIxMTIsIDcyMTE3LCA3MjEyMiwgNzIxMjcsIAotICAgIDcyMTMyLCA3MjEzNywgNzIxNDEsIDcyMTQ2LCA3MjE1MSwgNzIxNTYsIDcyMTYxLCA3MjE2NiwgNzIxNzIsIDcyMTc3LCAKLSAgICA3MjE4MiwgNzIxODksIDcyMTk2LCA3MjIwMywgNzIyMTAsIDcyMjE3LCA3MjIyNiwgNzIyMzUsIDcyMjQxLCA3MjI0NywgCi0gICAgNzIyNTMsIDcyMjU5LCA3MjI2NiwgNzIyNzMsIDcyMjgwLCA3MjI4NywgNzIyOTQsIDcyMjk4LCA3MjMwNSwgNzIzMTAsIAotICAgIDcyMzE1LCA3MjMyMiwgMCwgNzIzMzUsIDcyMzQzLCA3MjM1MSwgNzIzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjQwMSwgNzI0MTAsIDcyNDE5LCA3MjQyOCwgNzI0MzcsIAotICAgIDcyNDQ2LCA3MjQ1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI0NjIsIDcyNDY5LCA3MjQ3NSwgNzI0ODIsIDcyNDkwLCA3MjQ5OCwgCi0gICAgNzI1MDUsIDcyNTEzLCA3MjUyMCwgNzI1MjYsIDcyNTMyLCA3MjUzOSwgNzI1NDUsIDcyNTUxLCA3MjU1NywgNzI1NjQsIAotICAgIDcyNTcxLCA3MjU3OCwgNzI1ODUsIDcyNTkyLCA3MjU5OSwgNzI2MDYsIDcyNjEzLCA3MjYyMCwgNzI2MjcsIDcyNjM0LCAKLSAgICA3MjY0MSwgNzI2NDgsIDcyNjU1LCA3MjY2MSwgNzI2NjgsIDcyNjc1LCA3MjY4MiwgNzI2ODksIDcyNjk2LCA3MjcwMywgCi0gICAgNzI3MTAsIDcyNzE3LCA3MjcyNCwgNzI3MzEsIDcyNzM4LCA3Mjc0NSwgNzI3NTIsIDcyNzU5LCA3Mjc2NiwgNzI3NzMsIAotICAgIDcyNzgwLCA3Mjc4NywgNzI3OTUsIDcyODAzLCA3MjgxMSwgNzI4MTksIDAsIDAsIDAsIDAsIDcyODI3LCA3MjgzNiwgCi0gICAgNzI4NDUsIDcyODU0LCA3Mjg2MywgNzI4NzIsIDcyODgxLCA3Mjg4OCwgNzI4OTUsIDcyOTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3MjkwOSwgNzI5MTMsIDcyOTE4LCA3MjkyMywgNzI5MjgsIDcyOTMzLCA3MjkzOCwgNzI5NDMsIDcyOTQ4LCA3Mjk1MywgCi0gICAgNzI5NTgsIDcyOTYzLCA3Mjk2NywgNzI5NzEsIDcyOTc2LCA3Mjk4MSwgNzI5ODUsIDcyOTkwLCA3Mjk5NSwgNzMwMDAsIAotICAgIDczMDA1LCA3MzAxMCwgNzMwMTUsIDczMDIwLCA3MzAyNCwgNzMwMjgsIDczMDMzLCA3MzAzOCwgNzMwNDIsIDczMDQ2LCAKLSAgICA3MzA1MCwgNzMwNTQsIDczMDU4LCA3MzA2MiwgNzMwNjYsIDczMDcxLCA3MzA3NiwgNzMwODEsIDczMDg2LCA3MzA5MSwgCi0gICAgNzMwOTgsIDczMTA0LCA3MzEwOSwgNzMxMTQsIDczMTE5LCA3MzEyNCwgNzMxMzAsIDczMTM3LCA3MzE0MywgNzMxNTAsIAotICAgIDczMTU2LCA3MzE2MiwgNzMxNjcsIDczMTc0LCA3MzE4MCwgNzMxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczMTkxLCAKLSAgICA3MzE5NSwgNzMxOTksIDczMjAyLCA3MzIwNiwgNzMyMDksIDczMjEzLCA3MzIxNiwgNzMyMjAsIDczMjI0LCA3MzIyOSwgCi0gICAgNzMyMzMsIDczMjM4LCA3MzI0MSwgNzMyNDUsIDczMjQ5LCA3MzI1MiwgNzMyNTYsIDczMjYwLCA3MzI2MywgNzMyNjcsIAotICAgIDczMjcxLCA3MzI3NSwgNzMyNzksIDczMjgzLCA3MzI4NywgNzMyOTEsIDczMjk1LCA3MzI5OSwgNzMzMDMsIDczMzA3LCAKLSAgICA3MzMxMSwgNzMzMTUsIDczMzE5LCA3MzMyMywgNzMzMjcsIDczMzMxLCA3MzMzNSwgNzMzMzgsIDczMzQxLCA3MzM0NSwgCi0gICAgNzMzNDksIDczMzUzLCA3MzM1NiwgNzMzNTksIDczMzYyLCA3MzM2NiwgNzMzNzAsIDczMzc0LCA3MzM3OCwgNzMzODEsIAotICAgIDczMzg0LCA3MzM4OCwgNzMzOTMsIDczMzk4LCA3MzQwMiwgNzM0MDcsIDczNDExLCA3MzQxNiwgNzM0MjEsIDczNDI3LCAKLSAgICA3MzQzMiwgNzM0MzgsIDczNDQyLCA3MzQ0NywgNzM0NTIsIDczNDU2LCA3MzQ2MSwgNzM0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDczNDcwLCA3MzQ3MywgNzM0NzcsIDczNDgxLCA3MzQ4NCwgNzM0ODcsIDczNDkwLCA3MzQ5MywgNzM0OTYsIAotICAgIDczNDk5LCA3MzUwMiwgNzM1MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDczNTA4LCA3MzUxMywgNzM1MTcsIDczNTIxLCA3MzUyNSwgCi0gICAgNzM1MjksIDczNTMzLCA3MzUzNywgNzM1NDEsIDczNTQ1LCA3MzU0OSwgNzM1NTMsIDczNTU3LCA3MzU2MSwgNzM1NjUsIAotICAgIDczNTY5LCA3MzU3MywgNzM1NzgsIDczNTgzLCA3MzU4OSwgNzM1OTUsIDczNjAyLCA3MzYwNywgNzM2MTIsIDczNjE4LCAKLSAgICA3MzYyMiwgNzM2MjcsIDczNjMwLCAwLCAwLCAwLCAwLCA3MzYzMywgNzM2NDAsIDczNjQ2LCA3MzY1MiwgNzM2NTgsIAotICAgIDczNjY0LCA3MzY3MCwgNzM2NzYsIDczNjgyLCA3MzY4OCwgNzM2OTQsIDczNzAwLCA3MzcwNywgNzM3MTQsIDczNzIxLCAKLSAgICA3MzcyNywgNzM3MzQsIDczNzQxLCA3Mzc0OCwgNzM3NTUsIDczNzYyLCA3Mzc2OCwgNzM3NzQsIDczNzgxLCA3Mzc4NywgCi0gICAgNzM3OTQsIDczODAxLCA3MzgwNywgNzM4MTMsIDczODIwLCA3MzgyNywgNzM4MzQsIDczODQwLCA3Mzg0NywgNzM4NTQsIAotICAgIDczODYwLCA3Mzg2NywgNzM4NzMsIDczODgwLCA3Mzg4NywgNzM4OTMsIDczODk5LCA3MzkwNiwgNzM5MTIsIDczOTE5LCAKLSAgICA3MzkyNiwgNzM5MzUsIDczOTQyLCA3Mzk0OSwgNzM5NTMsIDczOTU4LCA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3NywgCi0gICAgNzM5ODEsIDczOTg2LCA3Mzk5MCwgNzM5OTUsIDc0MDAwLCA3NDAwNSwgNzQwMDksIDc0MDEzLCA3NDAxOCwgNzQwMjIsIAotICAgIDc0MDI3LCA3NDAzMSwgNzQwMzYsIDc0MDQxLCA3NDA0NiwgNzQwNTEsIDc0MDU1LCA3NDA2MCwgNzQwNjUsIDc0MDcwLCAKLSAgICA3NDA3NiwgNzQwODEsIDc0MDg3LCA3NDA5MywgNzQwOTksIDc0MTA1LCA3NDExMSwgNzQxMTYsIDc0MTIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDEyNiwgNzQxMzEsIDc0MTM1LCA3NDEzOSwgNzQxNDMsIDc0MTQ3LCA3NDE1MSwgCi0gICAgNzQxNTUsIDc0MTU5LCA3NDE2MywgNzQxNjcsIDc0MTcxLCA3NDE3NSwgNzQxNzksIDc0MTgzLCA3NDE4NywgNzQxOTEsIAotICAgIDc0MTk1LCA3NDE5OSwgNzQyMDMsIDc0MjA3LCA3NDIxMSwgNzQyMTUsIDc0MjE5LCA3NDIyMywgNzQyMjcsIDc0MjMxLCAKLSAgICA3NDIzNSwgNzQyMzksIDc0MjQzLCAwLCAwLCAwLCA3NDI0NywgNzQyNTEsIDc0MjU1LCA3NDI1OSwgNzQyNjMsIDc0MjY2LCAKLSAgICA3NDI3MiwgNzQyNzUsIDc0Mjc5LCA3NDI4MiwgNzQyODgsIDc0Mjk0LCA3NDMwMiwgNzQzMDUsIDc0MzA5LCA3NDMxMiwgCi0gICAgNzQzMTUsIDc0MzIxLCA3NDMyNywgNzQzMzEsIDc0MzM3LCA3NDM0MSwgNzQzNDUsIDc0MzUxLCA3NDM1NSwgNzQzNjEsIAotICAgIDc0MzY3LCA3NDM3MSwgNzQzNzUsIDc0MzgxLCA3NDM4NSwgNzQzOTEsIDc0Mzk3LCA3NDQwMSwgNzQ0MDcsIDc0NDExLCAKLSAgICA3NDQxNywgNzQ0MjAsIDc0NDIzLCA3NDQyOSwgNzQ0MzMsIDc0NDM5LCA3NDQ0MiwgNzQ0NDUsIDc0NDQ4LCA3NDQ1NCwgCi0gICAgNzQ0NTgsIDc0NDYyLCA3NDQ2OCwgNzQ0NzQsIDc0NDc3LCA3NDQ4MCwgNzQ0ODYsIDc0NDkxLCA3NDQ5NiwgNzQ1MDEsIAotICAgIDc0NTA4LCA3NDUxMywgNzQ1MjAsIDc0NTI1LCA3NDUzMiwgNzQ1MzcsIDc0NTQyLCA3NDU0NywgNzQ1NTIsIDc0NTU1LCAKLSAgICA3NDU1OSwgNzQ1NjMsIDc0NTY4LCA3NDU3MywgNzQ1NzgsIDc0NTgzLCA3NDU4OCwgNzQ1OTMsIDc0NTk4LCA3NDYwMywgCi0gICAgNzQ2MTAsIDc0NjE1LCAwLCA3NDYyMiwgNzQ2MjUsIDc0NjI5LCA3NDYzMiwgNzQ2MzUsIDc0NjM4LCA3NDY0MSwgNzQ2NDQsIAotICAgIDc0NjQ3LCA3NDY1MCwgNzQ2NTMsIDAsIDAsIDAsIDAsIDc0NjU2LCA3NDY2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzQ2NjgsIDc0NjcxLCA3NDY3NCwgNzQ2NzcsIDc0NjgwLCA3NDY4NCwgNzQ2ODcsIDc0NjkwLCA3NDY5NCwgNzQ2OTgsIAotICAgIDc0NzAyLCA3NDcwNiwgNzQ3MTAsIDc0NzE0LCA3NDcxOCwgNzQ3MjIsIDc0NzI2LCA3NDczMCwgNzQ3MzQsIDc0NzM4LCAKLSAgICA3NDc0MiwgNzQ3NDYsIDc0NzUwLCA3NDc1NCwgNzQ3NTgsIDc0NzYxLCA3NDc2NSwgNzQ3NjgsIDc0NzcyLCA3NDc3NiwgCi0gICAgNzQ3ODAsIDc0Nzg0LCA3NDc4OCwgNzQ3OTEsIDc0Nzk1LCA3NDc5OCwgNzQ4MDEsIDc0ODA1LCA3NDgwOSwgNzQ4MTMsIAotICAgIDc0ODE2LCA3NDgxOSwgNzQ4MjQsIDc0ODI4LCA3NDgzMywgNzQ4MzgsIDc0ODQyLCA3NDg0NywgNzQ4NTEsIDc0ODU2LCAKLSAgICA3NDg2MSwgNzQ4NjYsIDc0ODcwLCA3NDg3NCwgNzQ4NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODg0LCAKLSAgICA3NDg4OSwgNzQ4OTQsIDc0ODk5LCA3NDkwNSwgNzQ5MTAsIDc0OTE1LCA3NDkyMCwgNzQ5MjUsIDc0OTMwLCA3NDkzNCwgCi0gICAgNzQ5MzgsIDc0OTQzLCA3NDk0OCwgMCwgMCwgNzQ5NTQsIDc0OTU4LCA3NDk2MSwgNzQ5NjQsIDc0OTY3LCA3NDk3MCwgCi0gICAgNzQ5NzMsIDc0OTc2LCA3NDk3OSwgNzQ5ODIsIDAsIDAsIDc0OTg1LCA3NDk5MCwgNzQ5OTUsIDc1MDAxLCA3NTAwOCwgCi0gICAgNzUwMTQsIDc1MDIwLCA3NTAyNiwgNzUwMzIsIDc1MDM4LCA3NTA0NCwgNzUwNTAsIDc1MDU2LCA3NTA2MiwgNzUwNjgsIAotICAgIDc1MDc0LCA3NTA3OSwgNzUwODQsIDc1MDg5LCA3NTA5NSwgNzUxMDEsIDc1MTA4LCA3NTExNCwgNzUxMjAsIDc1MTI1LCAKLSAgICA3NTEzMiwgNzUxMzksIDc1MTQ2LCA3NTE1MiwgNzUxNTcsIDc1MTYyLCA3NTE2NywgMCwgMCwgMCwgMCwgNzUxNzUsIAotICAgIDc1MTgxLCA3NTE4NywgNzUxOTMsIDc1MTk5LCA3NTIwNSwgNzUyMTEsIDc1MjE3LCA3NTIyMywgNzUyMjksIDc1MjM1LCAKLSAgICA3NTI0MSwgNzUyNDcsIDc1MjUzLCA3NTI1OSwgNzUyNjUsIDc1MjcxLCA3NTI3NywgNzUyODMsIDc1Mjg5LCA3NTI5NSwgCi0gICAgNzUzMDAsIDc1MzA1LCA3NTMxMSwgNzUzMTcsIDc1MzIzLCA3NTMyOSwgNzUzMzUsIDc1MzQxLCA3NTM0NywgNzUzNTMsIAotICAgIDc1MzU5LCA3NTM2NSwgNzUzNzEsIDc1Mzc3LCA3NTM4MywgNzUzODksIDc1Mzk1LCA3NTQwMSwgNzU0MDcsIDc1NDEzLCAKLSAgICA3NTQxOSwgNzU0MjUsIDc1NDMxLCA3NTQzNywgNzU0NDMsIDc1NDQ5LCA3NTQ1NCwgNzU0NTksIDc1NDY1LCA3NTQ3MCwgCi0gICAgNzU0NzQsIDc1NDc5LCA3NTQ4MywgNzU0ODcsIDc1NDkxLCA3NTQ5NywgNzU1MDIsIDc1NTA3LCA3NTUxMiwgNzU1MTcsIAotICAgIDc1NTIyLCA3NTUyNywgNzU1MzIsIDc1NTM5LCA3NTU0NiwgNzU1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTYwLCA3NTU2NSwgNzU1NzAsIDc1NTc1LCAKLSAgICA3NTU4MiwgNzU1ODksIDc1NTkzLCA3NTU5NywgNzU2MDIsIDc1NjA3LCA3NTYxMiwgNzU2MTcsIDc1NjIyLCA3NTYyNywgCi0gICAgNzU2MzIsIDc1NjM3LCA3NTY0MiwgNzU2NDgsIDc1NjU0LCA3NTY2MCwgNzU2NjYsIDc1NjcyLCA3NTY3NiwgNzU2ODIsIAotICAgIDc1Njg2LCA3NTY5MiwgNzU2OTksIDc1NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTcwOSwgNzU3MTMsIAotICAgIDc1NzE3LCA3NTcyMSwgNzU3MjUsIDc1NzI5LCAwLCAwLCA3NTczMywgNzU3MzcsIDc1NzQxLCA3NTc0NSwgNzU3NDksIAotICAgIDc1NzUzLCAwLCAwLCA3NTc1NywgNzU3NjEsIDc1NzY1LCA3NTc2OSwgNzU3NzMsIDc1Nzc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3NTc4MSwgNzU3ODUsIDc1Nzg5LCA3NTc5MywgNzU3OTcsIDc1ODAxLCA3NTgwNSwgMCwgNzU4MDksIAotICAgIDc1ODEzLCA3NTgxNywgNzU4MjEsIDc1ODI1LCA3NTgyOSwgNzU4MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyOTY2LCA5Mjk3MywgOTI5ODIsIDkyOTkxLCA5Mjk5OCwgCisgICAgOTMwMDUsIDkzMDEyLCA5MzAxOSwgOTMwMjYsIDkzMDMzLCA5MzAzOSwgOTMwNDYsIDkzMDUzLCA5MzA2MCwgOTMwNjcsIAorICAgIDkzMDc0LCA5MzA4MSwgOTMwODgsIDkzMDk1LCA5MzEwNCwgOTMxMTEsIDkzMTE4LCA5MzEyNSwgOTMxMzIsIDkzMTM5LCAKKyAgICA5MzE0NiwgOTMxNTMsIDkzMTYwLCA5MzE2OSwgOTMxNzYsIDkzMTgzLCA5MzE5MCwgOTMxOTcsIDkzMjA0LCA5MzIxMSwgCisgICAgOTMyMjAsIDkzMjI3LCA5MzIzNCwgOTMyNDEsIDkzMjQ4LCA5MzI1NywgOTMyNjQsIDkzMjcxLCA5MzI3OCwgOTMyODYsIAorICAgIDkzMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNywgOTMzMjIsIAorICAgIDkzMzI3LCA5MzMzMiwgOTMzMzYsIDkzMzQxLCA5MzM0NiwgOTMzNTEsIDkzMzU2LCA5MzM2MSwgOTMzNjYsIDkzMzcwLCAKKyAgICA5MzM3NSwgOTMzODAsIDkzMzg1LCA5MzM5MCwgOTMzOTQsIDkzMzk5LCA5MzQwNCwgOTM0MDgsIDkzNDEyLCA5MzQxNywgCisgICAgOTM0MjIsIDkzNDI3LCA5MzQzMiwgOTM0MzcsIDAsIDAsIDAsIDkzNDQyLCA5MzQ0NiwgOTM0NTEsIDkzNDU2LCA5MzQ2MCwgCisgICAgOTM0NjUsIDkzNDY5LCA5MzQ3NCwgOTM0NzksIDkzNDg0LCA5MzQ4OSwgOTM0OTQsIDkzNDk4LCA5MzUwMywgOTM1MDgsIAorICAgIDkzNTEzLCA5MzUxOCwgOTM1MjIsIDkzNTI3LCA5MzUzMSwgOTM1MzYsIDkzNTQxLCA5MzU0NiwgOTM1NTEsIDkzNTU2LCAKKyAgICA5MzU2MSwgOTM1NjUsIDkzNTY5LCA5MzU3NCwgOTM1NzksIDkzNTg0LCA5MzU4OSwgOTM1OTQsIDkzNTk5LCA5MzYwNCwgCisgICAgOTM2MDksIDkzNjE0LCA5MzYxOSwgOTM2MjQsIDkzNjI5LCA5MzYzNCwgOTM2MzksIDkzNjQ0LCA5MzY0OSwgOTM2NTQsIAorICAgIDkzNjU5LCA5MzY2NCwgOTM2NjksIDkzNjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5MzY3OSwgOTM2ODUsIDkzNjkwLCA5MzY5NSwgOTM3MDAsIDkzNzA1LCA5MzcxMCwgOTM3MTUsIDkzNzIxLCA5MzcyNiwgCisgICAgOTM3MzIsIDkzNzM4LCA5Mzc0NCwgOTM3NTAsIDkzNzU2LCA5Mzc2MiwgOTM3NjgsIDkzNzc0LCA5Mzc4MCwgOTM3ODYsIAorICAgIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE1LCA5MzgyMywgOTM4MzEsIDkzODM5LCA5Mzg0NywgMCwgMCwgMCwgMCwgCisgICAgOTM4NTUsIDkzODU5LCA5Mzg2NCwgOTM4NjksIDkzODc0LCA5Mzg3OCwgOTM4ODMsIDkzODg4LCA5Mzg5MywgOTM4OTgsIAorICAgIDkzOTAyLCA5MzkwNiwgOTM5MTEsIDkzOTE2LCA5MzkyMSwgOTM5MjYsIDkzOTMwLCA5MzkzNSwgOTM5NDAsIDkzOTQ1LCAKKyAgICA5Mzk1MCwgOTM5NTUsIDkzOTYwLCA5Mzk2NCwgOTM5NjksIDkzOTc0LCA5Mzk3OSwgOTM5ODQsIDkzOTg5LCA5Mzk5NCwgCisgICAgOTM5OTksIDk0MDA0LCA5NDAwOSwgOTQwMTQsIDk0MDE5LCA5NDAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQwMzEsIDk0MDM2LCA5NDA0MSwgOTQwNDYsIDk0MDUxLCA5NDA1NiwgOTQwNjEsIDk0MDY2LCA5NDA3MSwgCisgICAgOTQwNzYsIDk0MDgxLCA5NDA4NiwgOTQwOTEsIDk0MDk2LCA5NDEwMSwgOTQxMDYsIDk0MTExLCA5NDExNiwgOTQxMjEsIAorICAgIDk0MTI2LCA5NDEzMSwgOTQxMzYsIDk0MTQxLCA5NDE0NiwgOTQxNTEsIDk0MTU2LCA5NDE2MSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQxNjgsIDk0MTc0LCA5NDE4MCwgOTQxODYsIDk0MTkyLCA5NDE5NywgOTQyMDMsIDk0MjA5LCA5NDIxNSwgOTQyMjEsIAorICAgIDk0MjI2LCA5NDIzMiwgOTQyMzgsIDk0MjQ0LCA5NDI1MCwgOTQyNTYsIDk0MjYyLCA5NDI2OCwgOTQyNzQsIDk0MjgwLCAKKyAgICA5NDI4NSwgOTQyOTEsIDk0Mjk3LCA5NDMwMywgOTQzMDksIDk0MzE1LCA5NDMyMCwgOTQzMjYsIDk0MzMyLCA5NDMzNywgCisgICAgOTQzNDMsIDk0MzQ5LCA5NDM1NSwgOTQzNjEsIDk0MzY3LCA5NDM3MywgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTcsIAorICAgIDk0NDA0LCA5NDQxMSwgOTQ0MTgsIDAsIDAsIDAsIDAsIDAsIDk0NDI1LCA5NDQzMCwgOTQ0MzUsIDk0NDQwLCA5NDQ0NSwgCisgICAgOTQ0NTAsIDk0NDU1LCA5NDQ2MCwgOTQ0NjUsIDk0NDcwLCA5NDQ3NSwgOTQ0ODAsIDk0NDg1LCA5NDQ5MCwgOTQ0OTUsIAorICAgIDk0NTAwLCA5NDUwNSwgOTQ1MTAsIDk0NTE1LCA5NDUyMCwgOTQ1MjUsIDk0NTMwLCA5NDUzNSwgOTQ1NDAsIDk0NTQ1LCAKKyAgICA5NDU1MCwgOTQ1NTUsIDk0NTU5LCA5NDU2MywgOTQ1NjcsIDAsIDk0NTcyLCA5NDU3OCwgOTQ1ODMsIDk0NTg4LCA5NDU5MywgCisgICAgOTQ1OTgsIDk0NjA0LCA5NDYxMCwgOTQ2MTYsIDk0NjIyLCA5NDYyOCwgOTQ2MzQsIDk0NjQwLCA5NDY0NiwgOTQ2NTIsIAorICAgIDk0NjU4LCA5NDY2NCwgOTQ2NzAsIDk0Njc2LCA5NDY4MSwgOTQ2ODcsIDk0NjkzLCA5NDY5OSwgOTQ3MDUsIDk0NzEwLCAKKyAgICA5NDcxNiwgOTQ3MjIsIDk0NzI3LCA5NDczMywgOTQ3MzksIDk0NzQ1LCA5NDc1MSwgOTQ3NTcsIDk0NzYzLCA5NDc2OSwgCisgICAgOTQ3NzUsIDk0NzgxLCAwLCAwLCAwLCAwLCA5NDc4NiwgOTQ3OTIsIDk0Nzk4LCA5NDgwNCwgOTQ4MTAsIDk0ODE2LCAKKyAgICA5NDgyMiwgOTQ4MjgsIDk0ODM0LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgOTQ4NjMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1ODM3LCA3NTg0MiwgNzU4NDcsIDc1ODUyLCAKLSAgICA3NTg1NywgNzU4NjEsIDc1ODY1LCA3NTg3MCwgNzU4NzUsIDc1ODgwLCA3NTg4NSwgNzU4OTAsIDc1ODk1LCA3NTkwMCwgCi0gICAgNzU5MDUsIDc1OTEwLCA3NTkxNCwgNzU5MTksIDc1OTI0LCA3NTkyOSwgNzU5MzQsIDc1OTM5LCA3NTk0NCwgNzU5NDksIAotICAgIDc1OTU0LCA3NTk1OSwgNzU5NjQsIDc1OTY5LCA3NTk3NiwgNzU5ODMsIDc1OTkwLCA3NTk5NywgNzYwMDQsIDc2MDExLCAKLSAgICA3NjAxOCwgNzYwMjUsIDc2MDMxLCA3NjAzNywgNzYwNDMsIDc2MDQ5LCA3NjA1NSwgNzYwNjEsIDc2MDY3LCA3NjA3MywgCi0gICAgNzYwNzcsIDc2MDgzLCAwLCAwLCA3NjA4OSwgNzYwOTQsIDc2MDk4LCA3NjEwMiwgNzYxMDYsIDc2MTEwLCA3NjExNCwgCi0gICAgNzYxMTgsIDc2MTIyLCA3NjEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ4NjksIDk0ODc1LCA5NDg4MSwgOTQ4ODcsIDk0ODk0LCAKKyAgICA5NDkwMCwgOTQ5MDcsIDk0OTE0LCA5NDkyMSwgOTQ5MjgsIDk0OTM2LCA5NDk0MywgOTQ5NTEsIDk0OTU3LCA5NDk2MywgCisgICAgOTQ5NjksIDk0OTc1LCA5NDk4MSwgOTQ5ODcsIDk0OTkzLCA5NDk5OSwgOTUwMDUsIDk1MDExLCA5NTAxNywgOTUwMjMsIAorICAgIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgOTUwNTksIDk1MDY1LCA5NTA3MSwgOTUwNzcsIDk1MDgzLCAKKyAgICA5NTA4OSwgOTUwOTUsIDk1MTAxLCA5NTEwNywgOTUxMTMsIDk1MTE5LCA5NTEyNSwgOTUxMzEsIDk1MTM3LCA5NTE0NCwgCisgICAgOTUxNTAsIDk1MTU3LCA5NTE2NCwgOTUxNzEsIDk1MTc4LCA5NTE4NiwgOTUxOTMsIDk1MjAxLCA5NTIwNywgOTUyMTMsIAorICAgIDk1MjE5LCA5NTIyNSwgOTUyMzEsIDk1MjM3LCA5NTI0MywgOTUyNDksIDk1MjU1LCA5NTI2MSwgOTUyNjcsIDk1MjczLCAKKyAgICA5NTI3OSwgOTUyODUsIDk1MjkxLCA5NTI5NywgOTUzMDMsIDk1MzA5LCA5NTMxNSwgOTUzMjEsIDk1MzI3LCA5NTMzMywgCisgICAgOTUzMzksIDk1MzQ1LCA5NTM1MSwgOTUzNTcsIDk1MzYzLCA5NTM2OSwgOTUzNzQsIDk1Mzc5LCA5NTM4NCwgOTUzODksIAorICAgIDk1Mzk0LCA5NTM5OSwgOTU0MDQsIDk1NDA5LCA5NTQxNCwgOTU0MTksIDk1NDI0LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCAKKyAgICA5NTQ0NCwgOTU0NDksIDk1NDU0LCA5NTQ1OSwgOTU0NjQsIDk1NDY5LCA5NTQ3NCwgOTU0NzksIDk1NDg0LCA5NTQ4OSwgCisgICAgOTU0OTQsIDk1NDk5LCA5NTUwNCwgOTU1MDksIDk1NTE0LCA5NTUxOSwgOTU1MjQsIDk1NTI5LCA5NTUzNCwgOTU1MzksIAorICAgIDk1NTQ0LCA5NTU0OSwgOTU1NTQsIDk1NTU5LCA5NTU2NCwgOTU1NjksIDk1NTc0LCA5NTU3OSwgOTU1ODQsIDk1NTg5LCAKKyAgICA5NTU5NCwgOTU1OTksIDk1NjA0LCA5NTYwOSwgOTU2MTQsIDk1NjE5LCA5NTYyNCwgOTU2MjksIDk1NjM0LCA5NTYzOSwgCisgICAgOTU2NDQsIDk1NjQ5LCA5NTY1NCwgOTU2NTksIDk1NjY0LCA5NTY2OSwgOTU2NzQsIDk1Njc5LCA5NTY4NCwgOTU2ODksIAorICAgIDk1Njk0LCA5NTY5OSwgOTU3MDQsIDk1NzA5LCA5NTcxMywgOTU3MTcsIDk1NzIxLCA5NTcyNSwgOTU3MjksIDk1NzMzLCAKKyAgICA5NTczNywgOTU3NDIsIDk1NzQ3LCAwLCAwLCA5NTc1MiwgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCAKKyAgICA5NTc3NywgOTU3ODEsIDk1Nzg2LCA5NTc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIDc2MTQ2LCAKLSAgICA3NjE1MCwgNzYxNTQsIDc2MTU4LCA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCA3NjE4NiwgCi0gICAgNzYxOTAsIDc2MTk0LCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIDc2MjE4LCAwLCAwLCAwLCAwLCAKLSAgICA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCA3NjI1OCwgCi0gICAgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgNzYyOTgsIAotICAgIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIDc2MzM4LCAKLSAgICA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCA3NjM3OCwgCi0gICAgNzYzODIsIDc2Mzg2LCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCA3NjQwMiwgNzY0MDYsIDc2NDEwLCA3NjQxNCwgMCwgMCwgMCwgCi0gICAgMCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgNzY0NDIsIDc2NDQ2LCA3NjQ1MCwgNzY0NTQsIAotICAgIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIDc2NDgyLCA3NjQ4NiwgNzY0OTAsIDc2NDk0LCAKLSAgICA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCA3NjUyMiwgNzY1MjYsIDc2NTMwLCA3NjUzNCwgCi0gICAgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgNzY1NjIsIDc2NTY2LCA3NjU3MCwgNzY1NzQsIAotICAgIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIDc2NjAyLCA3NjYwNiwgNzY2MTAsIDc2NjE0LCAKLSAgICA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCA3NjY0MiwgNzY2NDYsIDc2NjUwLCA3NjY1NCwgCi0gICAgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgNzY2ODIsIDc2Njg2LCA3NjY5MCwgNzY2OTQsIAotICAgIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDc2NzIyLCA3NjcyNiwgNzY3MzAsIDc2NzM0LCAKLSAgICA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCA3Njc2MiwgNzY3NjYsIDc2NzcwLCA3Njc3NCwgCi0gICAgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgNzY4MDIsIDc2ODA2LCA3NjgxMCwgNzY4MTQsIAotICAgIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIDc2ODQyLCA3Njg0NiwgNzY4NTAsIDc2ODU0LCAKLSAgICA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCA3Njg4MiwgNzY4ODYsIDc2ODkwLCA3Njg5NCwgCi0gICAgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIDc2OTI2LCA3NjkzMCwgNzY5MzQsIAotICAgIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIDc2OTYyLCA3Njk2NiwgNzY5NzAsIDc2OTc0LCAKLSAgICA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIDc2OTk4LCA3NzAwMiwgNzcwMDYsIDc3MDEwLCA3NzAxNCwgCi0gICAgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCA3NzAzOCwgNzcwNDIsIDc3MDQ2LCA3NzA1MCwgNzcwNTQsIAotICAgIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgNzcwNzgsIDc3MDgyLCA3NzA4NiwgNzcwOTAsIDc3MDk0LCAKLSAgICA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIDc3MTE4LCA3NzEyMiwgNzcxMjYsIDc3MTMwLCA3NzEzNCwgCi0gICAgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCA3NzE1OCwgNzcxNjIsIDc3MTY2LCA3NzE3MCwgNzcxNzQsIAotICAgIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgNzcxOTgsIDc3MjAyLCA3NzIwNiwgNzcyMTAsIDc3MjE0LCAKLSAgICA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIDc3MjM4LCA3NzI0MiwgNzcyNDYsIDc3MjUwLCA3NzI1NCwgCi0gICAgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCA3NzI3OCwgNzcyODIsIDc3Mjg2LCA3NzI5MCwgNzcyOTQsIAotICAgIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgNzczMTgsIDc3MzIyLCA3NzMyNiwgNzczMzAsIDc3MzM0LCAKLSAgICA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIDc3MzU4LCA3NzM2MiwgNzczNjYsIDc3MzcwLCA3NzM3NCwgCi0gICAgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDc3Mzk0LCA3NzM5OCwgNzc0MDIsIDc3NDA2LCA3NzQxMCwgNzc0MTQsIAotICAgIDc3NDE4LCA3NzQyMiwgNzc0MjYsIDc3NDMwLCA3NzQzNCwgNzc0MzgsIDc3NDQyLCA3NzQ0NiwgNzc0NTAsIDc3NDU0LCAKLSAgICA3NzQ1OCwgNzc0NjIsIDc3NDY2LCA3NzQ3MCwgNzc0NzQsIDc3NDc4LCA3NzQ4MiwgNzc0ODYsIDc3NDkwLCA3NzQ5NCwgCi0gICAgNzc0OTgsIDc3NTAyLCA3NzUwNiwgNzc1MTAsIDc3NTE0LCA3NzUxOCwgNzc1MjIsIDc3NTI2LCA3NzUzMCwgNzc1MzQsIAotICAgIDc3NTM4LCA3NzU0MiwgNzc1NDYsIDc3NTUwLCA3NzU1NCwgNzc1NTgsIDc3NTYyLCA3NzU2NiwgNzc1NzAsIDc3NTc0LCAKLSAgICA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTQsIDc3NTk4LCA3NzYwMiwgNzc2MDYsIDc3NjEwLCA3NzYxNCwgCi0gICAgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzAsIDc3NjM0LCA3NzYzOCwgNzc2NDIsIDc3NjQ2LCA3NzY1MCwgNzc2NTQsIAotICAgIDc3NjU4LCA3NzY2MiwgNzc2NjYsIDc3NjcwLCA3NzY3NCwgNzc2NzgsIDc3NjgyLCA3NzY4NiwgNzc2OTAsIDc3Njk0LCAKLSAgICA3NzY5OCwgNzc3MDIsIDc3NzA2LCA3NzcxMCwgNzc3MTQsIDc3NzE4LCA3NzcyMiwgNzc3MjYsIDc3NzMwLCA3NzczNCwgCi0gICAgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY2LCA3Nzc3MCwgNzc3NzQsIAotICAgIDc3Nzc4LCA3Nzc4MiwgNzc3ODYsIDc3NzkwLCA3Nzc5NCwgNzc3OTgsIDc3ODAyLCA3NzgwNiwgNzc4MTAsIDc3ODE0LCAKLSAgICA3NzgxOCwgNzc4MjIsIDc3ODI2LCA3NzgzMCwgNzc4MzQsIDc3ODM4LCA3Nzg0MiwgNzc4NDYsIDc3ODUwLCA3Nzg1NCwgCi0gICAgNzc4NTgsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc0LCA3Nzg3OCwgMCwgMCwgNzc4ODIsIDc3ODg2LCA3Nzg5MCwgCi0gICAgNzc4OTQsIDc3ODk4LCA3NzkwMiwgNzc5MDYsIDc3OTEwLCA3NzkxNCwgNzc5MTgsIDc3OTIyLCA3NzkyNiwgNzc5MzAsIAotICAgIDc3OTM0LCA3NzkzOCwgNzc5NDIsIDc3OTQ2LCA3Nzk1MCwgNzc5NTQsIDc3OTU4LCA3Nzk2MiwgNzc5NjYsIDc3OTcwLCAKLSAgICA3Nzk3NCwgNzc5NzgsIDc3OTgyLCA3Nzk4NiwgNzc5OTAsIDc3OTk0LCA3Nzk5OCwgNzgwMDIsIDc4MDA2LCA3ODAxMCwgCi0gICAgNzgwMTQsIDc4MDE4LCA3ODAyMiwgNzgwMjYsIDc4MDMwLCA3ODAzNCwgNzgwMzgsIDc4MDQyLCA3ODA0NiwgNzgwNTAsIAotICAgIDc4MDU0LCA3ODA1OCwgNzgwNjIsIDc4MDY2LCA3ODA3MCwgNzgwNzQsIDc4MDc4LCA3ODA4MiwgNzgwODYsIDc4MDkwLCAKLSAgICA3ODA5NCwgNzgwOTgsIDc4MTAyLCA3ODEwNiwgNzgxMTAsIDc4MTE0LCA3ODExOCwgNzgxMjIsIDc4MTI2LCA3ODEzMCwgCi0gICAgNzgxMzQsIDc4MTM4LCA3ODE0MiwgNzgxNDYsIDc4MTUwLCA3ODE1NCwgNzgxNTgsIDc4MTYyLCA3ODE2NiwgNzgxNzAsIAotICAgIDc4MTc0LCA3ODE3OCwgNzgxODIsIDc4MTg2LCA3ODE5MCwgNzgxOTQsIDc4MTk4LCA3ODIwMiwgNzgyMDYsIDc4MjEwLCAKLSAgICA3ODIxNCwgNzgyMTgsIDc4MjIyLCA3ODIyNiwgNzgyMzAsIDc4MjM0LCA3ODIzOCwgNzgyNDIsIDc4MjQ2LCA3ODI1MCwgCi0gICAgNzgyNTQsIDc4MjU4LCA3ODI2MiwgNzgyNjYsIDc4MjcwLCA3ODI3NCwgNzgyNzgsIDc4MjgyLCA3ODI4NiwgNzgyOTAsIAotICAgIDc4Mjk0LCA3ODI5OCwgNzgzMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4MzA2LCAKLSAgICA3ODMxMSwgNzgzMTYsIDc4MzIxLCA3ODMyNiwgNzgzMzEsIDc4MzM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3ODM0NCwgNzgzNTEsIDc4MzU4LCA3ODM2NSwgNzgzNzIsIDAsIDAsIDAsIDAsIDAsIDc4Mzc5LCA3ODM4NiwgCi0gICAgNzgzOTMsIDc4NDAzLCA3ODQwOSwgNzg0MTUsIDc4NDIxLCA3ODQyNywgNzg0MzMsIDc4NDM5LCA3ODQ0NiwgNzg0NTIsIAotICAgIDc4NDU4LCA3ODQ2NCwgNzg0NzMsIDc4NDgyLCA3ODQ5NCwgNzg1MDYsIDc4NTEyLCA3ODUxOCwgNzg1MjQsIDc4NTMxLCAKLSAgICA3ODUzOCwgNzg1NDUsIDc4NTUyLCA3ODU1OSwgMCwgNzg1NjYsIDc4NTczLCA3ODU4MCwgNzg1ODgsIDc4NTk1LCAwLCAKLSAgICA3ODYwMiwgMCwgNzg2MDksIDc4NjE2LCAwLCA3ODYyMywgNzg2MzEsIDAsIDc4NjM4LCA3ODY0NSwgNzg2NTIsIDc4NjU5LCAKLSAgICA3ODY2NiwgNzg2NzMsIDc4NjgwLCA3ODY4NywgNzg2OTQsIDc4NzAxLCA3ODcwNiwgNzg3MTMsIDc4NzIwLCA3ODcyNiwgCi0gICAgNzg3MzIsIDc4NzM4LCA3ODc0NCwgNzg3NTAsIDc4NzU2LCA3ODc2MiwgNzg3NjgsIDc4Nzc0LCA3ODc4MCwgNzg3ODYsIAotICAgIDc4NzkyLCA3ODc5OCwgNzg4MDQsIDc4ODEwLCA3ODgxNiwgNzg4MjIsIDc4ODI4LCA3ODgzNCwgNzg4NDAsIDc4ODQ2LCAKLSAgICA3ODg1MiwgNzg4NTgsIDc4ODY0LCA3ODg3MCwgNzg4NzYsIDc4ODgyLCA3ODg4OCwgNzg4OTQsIDc4OTAwLCA3ODkwNiwgCi0gICAgNzg5MTIsIDc4OTE4LCA3ODkyNCwgNzg5MzAsIDc4OTM2LCA3ODk0MiwgNzg5NDgsIDc4OTU0LCA3ODk2MCwgNzg5NjYsIAotICAgIDc4OTcyLCA3ODk3OCwgNzg5ODQsIDc4OTkwLCA3ODk5NiwgNzkwMDIsIDc5MDA4LCA3OTAxNCwgNzkwMjAsIDc5MDI2LCAKLSAgICA3OTAzMiwgNzkwMzgsIDc5MDQ0LCA3OTA1MCwgNzkwNTYsIDc5MDYyLCA3OTA2OCwgNzkwNzQsIDc5MDgwLCA3OTA4NiwgCi0gICAgNzkwOTIsIDc5MDk4LCA3OTEwNCwgNzkxMTAsIDc5MTE2LCA3OTEyMiwgNzkxMjgsIDc5MTM0LCA3OTE0MCwgNzkxNDYsIAotICAgIDc5MTUyLCA3OTE1OCwgNzkxNjQsIDc5MTcwLCA3OTE3NiwgNzkxODQsIDc5MTkyLCA3OTE5OCwgNzkyMDQsIDc5MjEwLCAKLSAgICA3OTIxNiwgNzkyMjUsIDc5MjM0LCA3OTI0MiwgNzkyNTAsIDc5MjU4LCA3OTI2NiwgNzkyNzQsIDc5MjgyLCA3OTI5MCwgCi0gICAgNzkyOTgsIDc5MzA1LCA3OTMxMiwgNzkzMjIsIDc5MzMyLCA3OTMzNiwgNzkzNDAsIDc5MzQ1LCA3OTM1MCwgNzkzNTUsIAotICAgIDc5MzYwLCA3OTM2OSwgNzkzNzgsIDc5Mzg0LCA3OTM5MCwgNzkzOTcsIDc5NDA0LCA3OTQxMSwgNzk0MTUsIDc5NDIxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQyNywgNzk0MzMsIDc5NDM5LCAKLSAgICA3OTQ0NSwgNzk0NTEsIDc5NDU2LCA3OTQ2MSwgNzk0NjcsIDc5NDczLCA3OTQ3OSwgNzk0ODUsIDc5NDkzLCA3OTQ5OSwgCi0gICAgNzk1MDUsIDc5NTEzLCA3OTUyMSwgNzk1MjksIDc5NTM3LCA3OTU0MiwgNzk1NDcsIDc5NTUyLCA3OTU1NywgNzk1NzAsIAotICAgIDc5NTgzLCA3OTU5MywgNzk2MDMsIDc5NjE0LCA3OTYyNSwgNzk2MzYsIDc5NjQ3LCA3OTY1NywgNzk2NjcsIDc5Njc4LCAKLSAgICA3OTY4OSwgNzk3MDAsIDc5NzExLCA3OTcyMSwgNzk3MzEsIDc5NzQxLCA3OTc1NywgNzk3NzMsIDc5Nzg5LCA3OTc5NiwgCi0gICAgNzk4MDMsIDc5ODEwLCA3OTgxNywgNzk4MjcsIDc5ODM3LCA3OTg0NywgNzk4NTksIDc5ODY5LCA3OTg3NywgNzk4ODUsIAotICAgIDc5ODk0LCA3OTkwMiwgNzk5MTIsIDc5OTIwLCA3OTkyOCwgNzk5MzYsIDc5OTQ1LCA3OTk1MywgNzk5NjMsIDc5OTcxLCAKLSAgICA3OTk3OSwgNzk5ODcsIDc5OTk3LCA4MDAwNSwgODAwMTIsIDgwMDE5LCA4MDAyNiwgODAwMzMsIDgwMDQxLCA4MDA0OSwgCi0gICAgODAwNTcsIDgwMDY1LCA4MDA3MywgODAwODIsIDgwMDkwLCA4MDA5OCwgODAxMDYsIDgwMTE0LCA4MDEyMiwgODAxMzEsIAotICAgIDgwMTM5LCA4MDE0NywgODAxNTUsIDgwMTYzLCA4MDE3MSwgODAxNzksIDgwMTg3LCA4MDE5NSwgODAyMDMsIDgwMjExLCAKLSAgICA4MDIyMCwgODAyMjgsIDgwMjM4LCA4MDI0NiwgODAyNTQsIDgwMjYyLCA4MDI3MiwgODAyODAsIDgwMjg4LCA4MDI5NiwgCi0gICAgODAzMDQsIDgwMzEzLCA4MDMyMiwgODAzMzAsIDgwMzQwLCA4MDM0OCwgODAzNTYsIDgwMzY0LCA4MDM3MywgODAzODEsIAotICAgIDgwMzkxLCA4MDM5OSwgODA0MDYsIDgwNDEzLCA4MDQyMSwgODA0MjgsIDgwNDM3LCA4MDQ0NCwgODA0NTIsIDgwNDYwLCAKLSAgICA4MDQ2OSwgODA0NzcsIDgwNDg3LCA4MDQ5NSwgODA1MDMsIDgwNTExLCA4MDUyMSwgODA1MjksIDgwNTM2LCA4MDU0MywgCi0gICAgODA1NTEsIDgwNTU4LCA4MDU2NywgODA1NzQsIDgwNTg0LCA4MDU5NCwgODA2MDUsIDgwNjE0LCA4MDYyMywgODA2MzIsIAotICAgIDgwNjQxLCA4MDY1MCwgODA2NjAsIDgwNjcxLCA4MDY4MiwgODA2OTIsIDgwNzAzLCA4MDcxNSwgODA3MjUsIDgwNzM0LCAKLSAgICA4MDc0MywgODA3NTEsIDgwNzYwLCA4MDc3MCwgODA3NzgsIDgwNzg3LCA4MDc5NiwgODA4MDQsIDgwODEzLCA4MDgyMywgCi0gICAgODA4MzEsIDgwODQwLCA4MDg0OSwgODA4NTcsIDgwODY2LCA4MDg3NiwgODA4ODQsIDgwODk0LCA4MDkwMiwgODA5MTIsIAotICAgIDgwOTIwLCA4MDkyOCwgODA5MzcsIDgwOTQ1LCA4MDk1NSwgODA5NjMsIDgwOTcxLCA4MDk4MSwgODA5ODksIDgwOTk2LCAKLSAgICA4MTAwMywgODEwMTIsIDgxMDIxLCA4MTAyOSwgODEwMzgsIDgxMDQ4LCA4MTA1NiwgODEwNjcsIDgxMDc1LCA4MTA4MywgCi0gICAgODEwOTAsIDgxMDk4LCA4MTEwNywgODExMTQsIDgxMTI0LCA4MTEzNCwgODExNDUsIDgxMTU1LCA4MTE2NiwgODExNzQsIAotICAgIDgxMTgyLCA4MTE5MSwgODExOTksIDgxMjA4LCA4MTIxNiwgODEyMjQsIDgxMjMzLCA4MTI0MSwgODEyNTAsIDgxMjU4LCAKLSAgICA4MTI2NSwgODEyNzIsIDgxMjc5LCA4MTI4NiwgODEyOTQsIDgxMzAyLCA4MTMxMCwgODEzMTgsIDgxMzI3LCA4MTMzNSwgCi0gICAgODEzNDMsIDgxMzUyLCA4MTM2MCwgODEzNjgsIDgxMzc2LCA4MTM4NSwgODEzOTMsIDgxNDAxLCA4MTQwOSwgODE0MTcsIAotICAgIDgxNDI1LCA4MTQzMywgODE0NDEsIDgxNDQ5LCA4MTQ1NywgODE0NjYsIDgxNDc0LCA4MTQ4MiwgODE0OTAsIDgxNDk4LCAKLSAgICA4MTUwNiwgODE1MTUsIDgxNTI0LCA4MTUzMiwgODE1NDAsIDgxNTQ4LCA4MTU1NywgODE1NjUsIDgxNTc0LCA4MTU4MSwgCi0gICAgODE1ODgsIDgxNTk2LCA4MTYwMywgODE2MTEsIDgxNjE5LCA4MTYyOCwgODE2MzYsIDgxNjQ1LCA4MTY1MywgODE2NjEsIAotICAgIDgxNjcxLCA4MTY3OCwgODE2ODUsIDgxNjkzLCA4MTcwMCwgODE3MDgsIDgxNzE4LCA4MTcyOSwgODE3MzcsIDgxNzQ2LCAKLSAgICA4MTc1NCwgODE3NjMsIDgxNzcxLCA4MTc4MCwgODE3ODgsIDgxNzk3LCA4MTgwNSwgODE4MTQsIDgxODIzLCA4MTgzMSwgCi0gICAgODE4MzksIDgxODQ3LCA4MTg1NiwgODE4NjMsIDgxODcxLCA4MTg4MCwgODE4ODksIDgxODk4LCA4MTkwOCwgODE5MTYsIAotICAgIDgxOTI2LCA4MTkzNCwgODE5NDQsIDgxOTUyLCA4MTk2MiwgODE5NzAsIDgxOTgwLCA4MTk4OCwgODE5OTcsIDgyMDA0LCAKLSAgICA4MjAxMywgODIwMjAsIDgyMDMwLCA4MjAzOCwgODIwNDgsIDgyMDU2LCA4MjA2NiwgODIwNzQsIDgyMDgyLCA4MjA5MCwgCi0gICAgODIwOTksIDgyMTA3LCA4MjExNiwgODIxMjUsIDgyMTM0LCA4MjE0MywgODIxNTMsIDgyMTYxLCA4MjE3MSwgODIxNzksIAotICAgIDgyMTg5LCA4MjE5NywgODIyMDcsIDgyMjE1LCA4MjIyNSwgODIyMzMsIDgyMjQyLCA4MjI0OSwgODIyNTgsIDgyMjY1LCAKLSAgICA4MjI3NSwgODIyODMsIDgyMjkzLCA4MjMwMSwgODIzMTEsIDgyMzE5LCA4MjMyNywgODIzMzUsIDgyMzQ0LCA4MjM1MiwgCi0gICAgODIzNjEsIDgyMzcwLCA4MjM3OSwgODIzODgsIDgyMzk2LCA4MjQwNCwgODI0MTMsIDgyNDIxLCA4MjQzMCwgODI0MzksIAotICAgIDgyNDQ3LCA4MjQ1NSwgODI0NjMsIDgyNDcyLCA4MjQ4MCwgODI0ODgsIDgyNDk3LCA4MjUwNSwgODI1MTMsIDgyNTIxLCAKLSAgICA4MjUyOSwgODI1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNTM5LCAKLSAgICA4MjU0OSwgODI1NTksIDgyNTY5LCA4MjU3OSwgODI1OTAsIDgyNjAwLCA4MjYxMCwgODI2MjEsIDgyNjMwLCA4MjYzOSwgCi0gICAgODI2NDgsIDgyNjU5LCA4MjY2OSwgODI2NzksIDgyNjkxLCA4MjcwMSwgODI3MTEsIDgyNzIxLCA4MjczMSwgODI3NDEsIAotICAgIDgyNzUxLCA4Mjc2MSwgODI3NzEsIDgyNzgxLCA4Mjc5MSwgODI4MDEsIDgyODEyLCA4MjgyMywgODI4MzMsIDgyODQzLCAKLSAgICA4Mjg1NSwgODI4NjYsIDgyODc3LCA4Mjg4NywgODI4OTcsIDgyOTA3LCA4MjkxNywgODI5MjcsIDgyOTM3LCA4Mjk0NywgCi0gICAgODI5NTksIDgyOTY5LCA4Mjk3OSwgODI5OTEsIDgzMDAyLCA4MzAxMywgODMwMjMsIDgzMDMzLCA4MzA0MywgODMwNTMsIAotICAgIDgzMDY1LCA4MzA3NSwgODMwODUsIDgzMDk2LCA4MzEwNywgODMxMTcsIDgzMTI3LCA4MzEzNiwgODMxNDUsIDgzMTU0LCAKLSAgICA4MzE2MywgODMxNzIsIDgzMTgyLCAwLCAwLCA4MzE5MiwgODMyMDIsIDgzMjEyLCA4MzIyMiwgODMyMzIsIDgzMjQ0LCAKLSAgICA4MzI1NCwgODMyNjQsIDgzMjc2LCA4MzI4NiwgODMyOTgsIDgzMzA3LCA4MzMxNiwgODMzMjcsIDgzMzM3LCA4MzM0OSwgCi0gICAgODMzNjAsIDgzMzczLCA4MzM4MywgODMzOTUsIDgzNDA0LCA4MzQxNSwgODM0MjYsIDgzNDM5LCA4MzQ0OSwgODM0NTksIAotICAgIDgzNDY5LCA4MzQ3OSwgODM0ODksIDgzNDk4LCA4MzUwNywgODM1MTYsIDgzNTI1LCA4MzUzNSwgODM1NDUsIDgzNTU1LCAKLSAgICA4MzU2NSwgODM1NzUsIDgzNTg1LCA4MzU5NSwgODM2MDUsIDgzNjE1LCA4MzYyNSwgODM2MzUsIDgzNjQ1LCA4MzY1NCwgCi0gICAgODM2NjMsIDgzNjcyLCA4MzY4MiwgODM2OTIsIDgzNzAyLCA4MzcxMiwgODM3MjIsIDgzNzMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Mzc0MywgODM3NTgsIDgzNzczLCA4Mzc3OSwgODM3ODUsIDgzNzkxLCAKLSAgICA4Mzc5NywgODM4MDMsIDgzODA5LCA4MzgxNSwgODM4MjEsIDgzODI5LCA4MzgzMywgODM4MzYsIDAsIDAsIDgzODQ0LCAKLSAgICA4Mzg0NywgODM4NTAsIDgzODUzLCA4Mzg1NiwgODM4NTksIDgzODYyLCA4Mzg2NSwgODM4NjgsIDgzODcxLCA4Mzg3NCwgCi0gICAgODM4NzcsIDgzODgwLCA4Mzg4MywgODM4ODYsIDgzODg5LCA4Mzg5MiwgODM5MDAsIDgzOTA5LCA4MzkyMCwgODM5MjgsIAotICAgIDgzOTM2LCA4Mzk0NSwgODM5NTQsIDgzOTY1LCA4Mzk3NywgMCwgMCwgMCwgMCwgMCwgMCwgODM5ODYsIDgzOTkxLCA4Mzk5NiwgCi0gICAgODQwMDMsIDg0MDEwLCA4NDAxNiwgODQwMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0MDI3LCA4NDAzNywgCi0gICAgODQwNDcsIDg0MDU3LCA4NDA2NiwgODQwNzcsIDg0MDg2LCA4NDA5NSwgODQxMDUsIDg0MTE1LCA4NDEyNywgODQxMzksIAotICAgIDg0MTUwLCA4NDE2MSwgODQxNzIsIDg0MTgzLCA4NDE5MywgODQyMDMsIDg0MjEzLCA4NDIyMywgODQyMzQsIDg0MjQ1LCAKLSAgICA4NDI0OSwgODQyNTQsIDg0MjYzLCA4NDI3MiwgODQyNzYsIDg0MjgwLCA4NDI4NCwgODQyODksIDg0Mjk0LCA4NDI5OSwgCi0gICAgODQzMDQsIDg0MzA3LCA4NDMxMSwgMCwgODQzMTYsIDg0MzE5LCA4NDMyMiwgODQzMjYsIDg0MzMwLCA4NDMzNSwgODQzMzksIAotICAgIDg0MzQzLCA4NDM0OCwgODQzNTMsIDg0MzYwLCA4NDM2NywgODQzNzAsIDg0MzczLCA4NDM3NiwgODQzNzksIDg0MzgyLCAKLSAgICA4NDM4NiwgODQzOTAsIDAsIDg0Mzk0LCA4NDM5OSwgODQ0MDMsIDg0NDA3LCAwLCAwLCAwLCAwLCA4NDQxMiwgODQ0MTcsIAotICAgIDg0NDI0LCA4NDQyOSwgODQ0MzQsIDAsIDg0NDM5LCA4NDQ0NCwgODQ0NDksIDg0NDU0LCA4NDQ1OSwgODQ0NjQsIDg0NDY5LCAKLSAgICA4NDQ3NCwgODQ0NzksIDg0NDg0LCA4NDQ4OSwgODQ0OTQsIDg0NTAzLCA4NDUxMiwgODQ1MjAsIDg0NTI4LCA4NDUzNywgCi0gICAgODQ1NDYsIDg0NTU1LCA4NDU2NCwgODQ1NzIsIDg0NTgwLCA4NDU4OCwgODQ1OTYsIDg0NjAxLCA4NDYwNiwgODQ2MTIsIAotICAgIDg0NjE4LCA4NDYyNCwgODQ2MzAsIDg0NjM4LCA4NDY0NiwgODQ2NTIsIDg0NjU4LCA4NDY2NCwgODQ2NzAsIDg0Njc2LCAKLSAgICA4NDY4MiwgODQ2ODgsIDg0Njk0LCA4NDY5OSwgODQ3MDQsIDg0NzA5LCA4NDcxNCwgODQ3MTksIDg0NzI0LCA4NDcyOSwgCi0gICAgODQ3MzQsIDg0NzQwLCA4NDc0NiwgODQ3NTIsIDg0NzU4LCA4NDc2NCwgODQ3NzAsIDg0Nzc2LCA4NDc4MiwgODQ3ODgsIAotICAgIDg0Nzk0LCA4NDgwMCwgODQ4MDYsIDg0ODEyLCA4NDgxOCwgODQ4MjQsIDg0ODMwLCA4NDgzNiwgODQ4NDIsIDg0ODQ4LCAKLSAgICA4NDg1NCwgODQ4NjAsIDg0ODY2LCA4NDg3MiwgODQ4NzgsIDg0ODg0LCA4NDg5MCwgODQ4OTYsIDg0OTAyLCA4NDkwOCwgCi0gICAgODQ5MTQsIDg0OTIwLCA4NDkyNiwgODQ5MzIsIDg0OTM4LCA4NDk0NCwgODQ5NTAsIDg0OTU2LCA4NDk2MiwgODQ5NjgsIAotICAgIDg0OTc0LCA4NDk4MCwgODQ5ODYsIDg0OTkyLCA4NDk5OCwgODUwMDQsIDg1MDEwLCA4NTAxNiwgODUwMjIsIDg1MDI4LCAKLSAgICA4NTAzNCwgODUwNDAsIDg1MDQ2LCA4NTA1MiwgODUwNTgsIDg1MDY0LCA4NTA3MCwgODUwNzYsIDg1MDgyLCA4NTA4OCwgCi0gICAgODUwOTQsIDg1MDk5LCA4NTEwNCwgODUxMDksIDg1MTE0LCA4NTEyMCwgODUxMjYsIDg1MTMyLCA4NTEzOCwgODUxNDQsIAotICAgIDg1MTUwLCA4NTE1NiwgODUxNjIsIDg1MTY4LCA4NTE3NCwgODUxODEsIDg1MTg4LCA4NTE5MywgODUxOTgsIDg1MjAzLCAKLSAgICA4NTIwOCwgODUyMjAsIDg1MjMyLCA4NTI0MywgODUyNTQsIDg1MjY2LCA4NTI3OCwgODUyODYsIDAsIDAsIDg1Mjk0LCAwLCAKLSAgICA4NTMwMiwgODUzMDYsIDg1MzEwLCA4NTMxMywgODUzMTcsIDg1MzIxLCA4NTMyNCwgODUzMjcsIDg1MzMxLCA4NTMzNSwgCi0gICAgODUzMzgsIDg1MzQxLCA4NTM0NCwgODUzNDcsIDg1MzUyLCA4NTM1NSwgODUzNTksIDg1MzYyLCA4NTM2NSwgODUzNjgsIAotICAgIDg1MzcxLCA4NTM3NCwgODUzNzcsIDg1MzgwLCA4NTM4MywgODUzODYsIDg1Mzg5LCA4NTM5MiwgODUzOTYsIDg1NDAwLCAKLSAgICA4NTQwNCwgODU0MDgsIDg1NDEzLCA4NTQxOCwgODU0MjQsIDg1NDMwLCA4NTQzNiwgODU0NDEsIDg1NDQ3LCA4NTQ1MywgCi0gICAgODU0NTksIDg1NDY0LCA4NTQ3MCwgODU0NzYsIDg1NDgxLCA4NTQ4NiwgODU0OTIsIDg1NDk3LCA4NTUwMywgODU1MDksIAotICAgIDg1NTE0LCA4NTUyMCwgODU1MjYsIDg1NTMxLCA4NTUzNywgODU1NDMsIDg1NTQ5LCA4NTU1NSwgODU1NjEsIDg1NTY1LCAKLSAgICA4NTU3MCwgODU1NzQsIDg1NTc5LCA4NTU4MywgODU1ODgsIDg1NTkzLCA4NTU5OSwgODU2MDUsIDg1NjExLCA4NTYxNiwgCi0gICAgODU2MjIsIDg1NjI4LCA4NTYzNCwgODU2MzksIDg1NjQ1LCA4NTY1MSwgODU2NTYsIDg1NjYxLCA4NTY2NywgODU2NzIsIAotICAgIDg1Njc4LCA4NTY4NCwgODU2ODksIDg1Njk1LCA4NTcwMSwgODU3MDYsIDg1NzEyLCA4NTcxOCwgODU3MjQsIDg1NzMwLCAKLSAgICA4NTczNiwgODU3NDEsIDg1NzQ1LCA4NTc1MCwgODU3NTIsIDg1NzU3LCA4NTc2MiwgODU3NjgsIDg1NzczLCA4NTc3OCwgCi0gICAgODU3ODIsIDg1Nzg4LCA4NTc5MywgODU3OTgsIDg1ODAzLCA4NTgwOCwgODU4MTMsIDg1ODE4LCA4NTgyMywgODU4MjksIAotICAgIDg1ODM1LCA4NTg0MSwgODU4NDksIDg1ODUzLCA4NTg1NywgODU4NjEsIDg1ODY1LCA4NTg2OSwgODU4NzMsIDg1ODc4LCAKLSAgICA4NTg4MywgODU4ODgsIDg1ODkzLCA4NTg5NywgODU5MDIsIDg1OTA3LCA4NTkxMiwgODU5MTcsIDg1OTIyLCA4NTkyNywgCi0gICAgODU5MzIsIDg1OTM3LCA4NTk0MSwgODU5NDUsIDg1OTUwLCA4NTk1NSwgODU5NjAsIDg1OTY1LCA4NTk2OSwgODU5NzQsIAotICAgIDg1OTc5LCA4NTk4NCwgODU5ODksIDg1OTkzLCA4NTk5OCwgODYwMDMsIDg2MDA4LCA4NjAxMywgODYwMTcsIDg2MDIyLCAKLSAgICA4NjAyNywgODYwMzEsIDg2MDM2LCA4NjA0MSwgODYwNDYsIDg2MDUxLCA4NjA1NiwgODYwNjEsIDg2MDY4LCA4NjA3NSwgCi0gICAgODYwNzksIDg2MDg0LCA4NjA4OSwgODYwOTQsIDg2MDk5LCA4NjEwNCwgODYxMDksIDg2MTE0LCA4NjExOSwgODYxMjQsIAotICAgIDg2MTI5LCA4NjEzNCwgODYxMzksIDg2MTQ0LCA4NjE0OSwgODYxNTQsIDg2MTU5LCA4NjE2NCwgODYxNjksIDg2MTc0LCAKLSAgICA4NjE3OSwgODYxODQsIDg2MTg5LCA4NjE5NCwgODYxOTksIDg2MjA0LCA4NjIwOSwgODYyMTQsIDg2MjE5LCA4NjIyNCwgMCwgCi0gICAgMCwgMCwgODYyMjksIDg2MjMzLCA4NjIzOCwgODYyNDIsIDg2MjQ3LCA4NjI1MiwgMCwgMCwgODYyNTYsIDg2MjYxLCAKLSAgICA4NjI2NiwgODYyNzAsIDg2Mjc1LCA4NjI4MCwgMCwgMCwgODYyODUsIDg2MjkwLCA4NjI5NCwgODYyOTksIDg2MzA0LCAKLSAgICA4NjMwOSwgMCwgMCwgODYzMTQsIDg2MzE5LCA4NjMyNCwgMCwgMCwgMCwgODYzMjgsIDg2MzMyLCA4NjMzNiwgODYzNDAsIAotICAgIDg2MzQzLCA4NjM0NywgODYzNTEsIDAsIDg2MzU1LCA4NjM2MSwgODYzNjQsIDg2MzY4LCA4NjM3MSwgODYzNzUsIDg2Mzc5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjM4MywgODYzODksIDg2Mzk1LCA4NjQwMSwgODY0MDcsIDAsIDAsIAotICAgIDg2NDExLCA4NjQxNywgODY0MjMsIDg2NDI5LCA4NjQzNSwgODY0NDEsIDg2NDQ4LCA4NjQ1NSwgODY0NjIsIDg2NDY5LCAKLSAgICA4NjQ3NiwgODY0ODMsIDAsIDg2NDkwLCA4NjQ5NywgODY1MDQsIDg2NTEwLCA4NjUxNywgODY1MjQsIDg2NTMxLCA4NjUzOCwgCi0gICAgODY1NDQsIDg2NTUxLCA4NjU1OCwgODY1NjUsIDg2NTcyLCA4NjU3OCwgODY1ODUsIDg2NTkyLCA4NjU5OSwgODY2MDYsIAotICAgIDg2NjEyLCA4NjYxOSwgODY2MjYsIDg2NjMzLCA4NjY0MCwgODY2NDcsIDg2NjU0LCA4NjY2MSwgMCwgODY2NjgsIDg2Njc0LCAKLSAgICA4NjY4MSwgODY2ODgsIDg2Njk1LCA4NjcwMiwgODY3MDgsIDg2NzE1LCA4NjcyMiwgODY3MjksIDg2NzM2LCA4Njc0MywgCi0gICAgODY3NTAsIDg2NzU3LCA4Njc2MywgODY3NzAsIDg2Nzc3LCA4Njc4NCwgODY3OTEsIDAsIDg2Nzk4LCA4NjgwNSwgMCwgCi0gICAgODY4MTIsIDg2ODE5LCA4NjgyNiwgODY4MzMsIDg2ODQwLCA4Njg0NywgODY4NTQsIDg2ODYxLCA4Njg2OCwgODY4NzUsIAotICAgIDg2ODgyLCA4Njg4OSwgODY4OTYsIDg2OTAzLCA4NjkxMCwgMCwgMCwgODY5MTYsIDg2OTIxLCA4NjkyNiwgODY5MzEsIAotICAgIDg2OTM2LCA4Njk0MSwgODY5NDYsIDg2OTUxLCA4Njk1NiwgODY5NjEsIDg2OTY2LCA4Njk3MSwgODY5NzYsIDg2OTgxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Njk4NiwgODY5OTMsIDg3MDAwLCA4NzAwNywgODcwMTQsIDg3MDIxLCAKLSAgICA4NzAyOCwgODcwMzUsIDg3MDQyLCA4NzA0OSwgODcwNTYsIDg3MDYzLCA4NzA3MCwgODcwNzcsIDg3MDg0LCA4NzA5MSwgCi0gICAgODcwOTgsIDg3MTA1LCA4NzExMiwgODcxMTksIDg3MTI3LCA4NzEzNSwgODcxNDIsIDg3MTQ5LCA4NzE1NCwgODcxNjIsIAotICAgIDg3MTcwLCA4NzE3NywgODcxODQsIDg3MTg5LCA4NzE5NiwgODcyMDEsIDg3MjA2LCA4NzIxMywgODcyMTgsIDg3MjIzLCAKLSAgICA4NzIyOCwgODcyMzYsIDg3MjQxLCA4NzI0NiwgODcyNTMsIDg3MjU4LCA4NzI2MywgODcyNzAsIDg3Mjc3LCA4NzI4MiwgCi0gICAgODcyODcsIDg3MjkyLCA4NzI5NywgODczMDIsIDg3MzA3LCA4NzMxMiwgODczMTcsIDg3MzIyLCA4NzMyOSwgODczMzQsIAotICAgIDg3MzQxLCA4NzM0NiwgODczNTEsIDg3MzU2LCA4NzM2MSwgODczNjYsIDg3MzcxLCA4NzM3NiwgODczODEsIDg3Mzg2LCAKLSAgICA4NzM5MSwgODczOTYsIDg3NDAzLCA4NzQxMCwgODc0MTcsIDg3NDI0LCA4NzQzMCwgODc0MzUsIDg3NDQyLCA4NzQ0NywgCi0gICAgODc0NTIsIDg3NDYxLCA4NzQ2OCwgODc0NzcsIDg3NDg0LCA4NzQ4OSwgODc0OTQsIDg3NTAyLCA4NzUwNywgODc1MTIsIAotICAgIDg3NTE3LCA4NzUyMiwgODc1MjcsIDg3NTM0LCA4NzUzOSwgODc1NDQsIDg3NTQ5LCA4NzU1NCwgODc1NTksIDg3NTY2LCAKLSAgICA4NzU3MywgODc1ODAsIDg3NTg3LCA4NzU5NCwgODc2MDEsIDg3NjA4LCA4NzYxNSwgODc2MjIsIDg3NjI5LCA4NzYzNiwgCi0gICAgODc2NDMsIDg3NjUwLCA4NzY1NywgODc2NjQsIDg3NjcxLCA4NzY3OCwgODc2ODUsIDg3NjkyLCA4NzY5OSwgODc3MDYsIAotICAgIDg3NzEzLCA4NzcyMCwgODc3MjcsIDg3NzM0LCA4Nzc0MSwgODc3NDgsIDg3NzU1LCAwLCAwLCAwLCAwLCAwLCA4Nzc2MiwgCi0gICAgODc3NzAsIDg3Nzc4LCAwLCAwLCAwLCAwLCA4Nzc4MywgODc3ODcsIDg3NzkxLCA4Nzc5NSwgODc3OTksIDg3ODAzLCAKLSAgICA4NzgwNywgODc4MTEsIDg3ODE1LCA4NzgxOSwgODc4MjQsIDg3ODI5LCA4NzgzNCwgODc4MzksIDg3ODQ0LCA4Nzg0OSwgCi0gICAgODc4NTQsIDg3ODU5LCA4Nzg2NCwgODc4NzAsIDg3ODc2LCA4Nzg4MiwgODc4ODksIDg3ODk2LCA4NzkwMywgODc5MTAsIAotICAgIDg3OTE3LCA4NzkyNCwgODc5MzAsIDg3OTM2LCA4Nzk0MiwgODc5NDksIDg3OTU2LCA4Nzk2MywgODc5NzAsIDg3OTc3LCAKLSAgICA4Nzk4NCwgODc5OTEsIDg3OTk4LCA4ODAwNSwgODgwMTIsIDg4MDE5LCA4ODAyNiwgODgwMzMsIDg4MDQwLCAwLCAwLCAwLCAKLSAgICA4ODA0NywgODgwNTUsIDg4MDYzLCA4ODA3MSwgODgwNzksIDg4MDg3LCA4ODA5NywgODgxMDcsIDg4MTE1LCA4ODEyMywgCi0gICAgODgxMzEsIDg4MTM5LCA4ODE0NywgODgxNTMsIDg4MTYwLCA4ODE2OSwgODgxNzgsIDg4MTg3LCA4ODE5NiwgODgyMDUsIAotICAgIDg4MjE0LCA4ODIyNCwgODgyMzUsIDg4MjQ1LCA4ODI1NiwgODgyNjUsIDg4Mjc0LCA4ODI4MywgODgyOTMsIDg4MzA0LCAKLSAgICA4ODMxNCwgODgzMjUsIDg4MzM2LCA4ODM0NSwgODgzNTMsIDg4MzU5LCA4ODM2NSwgODgzNzEsIDg4Mzc3LCA4ODM4NSwgCi0gICAgODgzOTMsIDg4Mzk5LCA4ODQwNiwgODg0MTYsIDg4NDIzLCA4ODQzMCwgODg0MzcsIDg4NDQ0LCA4ODQ1MSwgODg0NjEsIAotICAgIDg4NDY4LCA4ODQ3NSwgODg0ODMsIDg4NDkxLCA4ODUwMCwgODg1MDksIDg4NTE4LCA4ODUyNywgODg1MzYsIDg4NTQ0LCAKLSAgICA4ODU1MywgODg1NjIsIDg4NTcxLCA4ODU3NSwgODg1ODIsIDg4NTg3LCA4ODU5MiwgODg1OTYsIDg4NjAwLCA4ODYwNCwgCi0gICAgODg2MDgsIDg4NjEzLCA4ODYxOCwgODg2MjQsIDg4NjMwLCA4ODYzNCwgODg2NDAsIDg4NjQ0LCA4ODY0OCwgODg2NTIsIAotICAgIDg4NjU2LCA4ODY2MCwgODg2NjQsIDg4NjcwLCAwLCAwLCAwLCAwLCAwLCA4ODY3NCwgODg2NzksIDg4Njg0LCA4ODY4OSwgCi0gICAgODg2OTQsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCA4ODcyMSwgODg3MjYsIDg4NzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODczNiwgCi0gICAgODg3NDMsIDg4NzUyLCA4ODc2MSwgODg3NjgsIDg4Nzc1LCA4ODc4MiwgODg3ODksIDg4Nzk2LCA4ODgwMywgODg4MDksIAotICAgIDg4ODE2LCA4ODgyMywgODg4MzAsIDg4ODM3LCA4ODg0NCwgODg4NTEsIDg4ODU4LCA4ODg2NSwgODg4NzQsIDg4ODgxLCAKLSAgICA4ODg4OCwgODg4OTUsIDg4OTAyLCA4ODkwOSwgODg5MTYsIDg4OTIzLCA4ODkzMCwgODg5MzksIDg4OTQ2LCA4ODk1MywgCi0gICAgODg5NjAsIDg4OTY3LCA4ODk3NCwgODg5ODEsIDg4OTkwLCA4ODk5NywgODkwMDQsIDg5MDExLCA4OTAxOCwgODkwMjcsIAotICAgIDg5MDM0LCA4OTA0MSwgODkwNDgsIDg5MDU2LCA4OTA2NSwgMCwgMCwgODkwNzQsIDg5MDc4LCA4OTA4MiwgODkwODcsIAotICAgIDg5MDkyLCA4OTA5NywgODkxMDIsIDg5MTA2LCA4OTExMSwgODkxMTYsIDg5MTIxLCA4OTEyNiwgODkxMzEsIDg5MTM2LCAKLSAgICA4OTE0MCwgODkxNDQsIDg5MTQ5LCA4OTE1NCwgODkxNTksIDg5MTYzLCA4OTE2OCwgODkxNzMsIDg5MTc3LCA4OTE4MiwgCi0gICAgODkxODcsIDg5MTkyLCA4OTE5NywgODkyMDIsIDg5MjA3LCAwLCAwLCAwLCA4OTIxMiwgODkyMTYsIDg5MjIxLCA4OTIyNiwgCi0gICAgODkyMzAsIDg5MjM1LCA4OTIzOSwgODkyNDQsIDg5MjQ5LCA4OTI1NCwgODkyNTksIDg5MjYzLCA4OTI2NywgODkyNzIsIAotICAgIDg5Mjc3LCA4OTI4MiwgODkyODcsIDg5MjkyLCA4OTI5NywgODkzMDEsIDg5MzA2LCA4OTMxMSwgODkzMTYsIDg5MzIxLCAKLSAgICA4OTMyNiwgODkzMzEsIDg5MzM1LCA4OTMzOSwgODkzNDQsIDg5MzQ5LCA4OTM1NCwgODkzNTksIDg5MzY0LCA4OTM2OSwgCi0gICAgODkzNzQsIDg5Mzc5LCA4OTM4NCwgODkzODksIDg5Mzk0LCA4OTM5OSwgODk0MDQsIDg5NDA5LCA4OTQxNCwgODk0MTksIAotICAgIDg5NDI0LCA4OTQyOSwgODk0MzQsIDg5NDM5LCA4OTQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk0NDksIDg5NDUzLCA4OTQ1OCwgODk0NjMsIDg5NDY4LCA4OTQ3MiwgCi0gICAgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIDg5NDk2LCA4OTUwMCwgODk1MDUsIDg5NTEwLCA4OTUxNSwgODk1MjAsIAotICAgIDg5NTI0LCA4OTUyOSwgODk1MzQsIDg5NTM5LCA4OTU0NCwgODk1NDksIDg5NTU0LCA4OTU1OCwgODk1NjMsIDg5NTY4LCAKLSAgICA4OTU3MywgODk1NzgsIDg5NTgzLCA4OTU4OCwgODk1OTMsIDAsIDg5NTk4LCA4OTYwMywgODk2MDgsIDg5NjE0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTYyMCwgODk2MjUsIDg5NjMwLCA4OTYzNSwgODk2NDAsIDg5NjQ1LCAKLSAgICA4OTY1MCwgODk2NTUsIDg5NjYwLCA4OTY2NSwgODk2NzAsIDg5Njc1LCA4OTY4MCwgODk2ODUsIDg5NjkwLCA4OTY5NSwgCi0gICAgODk3MDAsIDg5NzA1LCA4OTcxMCwgODk3MTUsIDg5NzIwLCA4OTcyNSwgODk3MzAsIDg5NzM1LCA4OTc0MCwgODk3NDUsIAotICAgIDg5NzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTc1NywgODk3NjIsIDg5NzY3LCA4OTc3MiwgODk3NzcsIDg5NzgyLCA4OTc4NywgCi0gICAgODk3OTIsIDg5Nzk3LCA4OTgwMiwgODk4MDcsIDg5ODEyLCA4OTgxNywgODk4MjIsIDg5ODI3LCA4OTgzMiwgODk4MzcsIAotICAgIDg5ODQyLCA4OTg0NywgODk4NTIsIDg5ODU3LCA4OTg2MiwgODk4NjcsIDg5ODcyLCA4OTg3NywgODk4ODIsIDg5ODg3LCAKLSAgICA4OTg5MSwgODk4OTUsIDg5ODk5LCAwLCA4OTkwNCwgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNiwgCi0gICAgODk5NDIsIDg5OTQ4LCA4OTk1NCwgODk5NjAsIDg5OTY2LCA4OTk3MiwgODk5NzgsIDg5OTg0LCA4OTk5MCwgODk5OTYsIAotICAgIDkwMDAyLCA5MDAwOCwgOTAwMTMsIDkwMDE5LCA5MDAyNSwgOTAwMzAsIDkwMDM2LCA5MDA0MSwgOTAwNDcsIDkwMDUzLCAKLSAgICA5MDA1OCwgOTAwNjQsIDkwMDcwLCA5MDA3NSwgOTAwODEsIDkwMDg3LCA5MDA5MiwgOTAwOTgsIDkwMTA0LCA5MDExMCwgMCwgCi0gICAgMCwgMCwgMCwgOTAxMTUsIDkwMTIxLCA5MDEyNywgOTAxMzMsIDkwMTM5LCA5MDE0NSwgOTAxNTEsIDkwMTU3LCA5MDE2MywgCi0gICAgOTAxNzAsIDkwMTc1LCA5MDE4MCwgOTAxODYsIDkwMTkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5MDE5OCwgOTAyMDMsIDkwMjA4LCA5MDIxMywgOTAyMTksIDkwMjI0LCA5MDIzMCwgOTAyMzYsIAotICAgIDkwMjQyLCA5MDI0OCwgOTAyNTUsIDkwMjYxLCA5MDI2OCwgOTAyNzMsIDkwMjc4LCA5MDI4MywgOTAyODgsIDkwMjkzLCAKLSAgICA5MDI5OCwgOTAzMDMsIDkwMzA4LCA5MDMxMywgOTAzMTgsIDkwMzIzLCA5MDMyOCwgOTAzMzMsIDkwMzM4LCA5MDM0MywgCi0gICAgOTAzNDgsIDkwMzUzLCA5MDM1OCwgOTAzNjMsIDkwMzY4LCA5MDM3MywgOTAzNzgsIDkwMzgzLCA5MDM4OCwgOTAzOTMsIAotICAgIDkwMzk4LCA5MDQwMywgOTA0MDgsIDkwNDEzLCA5MDQxOCwgOTA0MjMsIDkwNDI5LCA5MDQzNCwgOTA0NDAsIDkwNDQ2LCAKLSAgICA5MDQ1MiwgOTA0NTgsIDkwNDY1LCA5MDQ3MSwgOTA0NzgsIDkwNDgzLCA5MDQ4OCwgOTA0OTMsIDkwNDk4LCA5MDUwMywgCi0gICAgOTA1MDgsIDkwNTEzLCA5MDUxOCwgOTA1MjMsIDkwNTI4LCA5MDUzMywgOTA1MzgsIDkwNTQzLCA5MDU0OCwgOTA1NTMsIAotICAgIDkwNTU4LCA5MDU2MywgOTA1NjgsIDkwNTczLCA5MDU3OCwgOTA1ODMsIDkwNTg4LCA5MDU5MywgOTA1OTgsIDkwNjAzLCAKLSAgICA5MDYwOCwgOTA2MTMsIDkwNjE4LCA5MDYyMywgOTA2MjgsIDkwNjMzLCA5MDYzOCwgOTA2NDMsIDkwNjQ4LCA5MDY1MywgCi0gICAgOTA2NTgsIDkwNjYzLCA5MDY2OCwgOTA2NzMsIDkwNjc4LCA5MDY4MywgOTA2ODgsIDkwNjkzLCA5MDY5OCwgOTA3MDMsIAotICAgIDkwNzA4LCA5MDcxMywgOTA3MTgsIDkwNzIzLCA5MDcyOCwgOTA3MzMsIDkwNzM4LCA5MDc0MywgOTA3NDgsIDkwNzUzLCAKLSAgICA5MDc1OCwgOTA3NjMsIDkwNzY4LCA5MDc3MywgOTA3NzgsIDkwNzgzLCA5MDc4OCwgOTA3OTMsIDkwNzk4LCA5MDgwMywgCi0gICAgOTA4MDgsIDkwODEzLCA5MDgxOCwgOTA4MjMsIDkwODI4LCA5MDgzMywgOTA4MzgsIDkwODQzLCA5MDg0OCwgOTA4NTMsIAotICAgIDkwODU4LCA5MDg2MywgOTA4NjgsIDkwODczLCA5MDg3OCwgOTA4ODMsIDkwODg4LCA5MDg5MywgOTA4OTcsIDkwOTAxLCAKLSAgICA5MDkwNiwgOTA5MTEsIDkwOTE2LCA5MDkyMSwgOTA5MjYsIDkwOTMxLCA5MDkzNiwgOTA5NDEsIDkwOTQ2LCA5MDk1MSwgCi0gICAgOTA5NTYsIDkwOTYwLCA5MDk2NCwgOTA5NjgsIDkwOTcyLCA5MDk3NiwgOTA5ODAsIDkwOTg0LCA5MDk4OSwgOTA5OTQsIDAsIAotICAgIDAsIDkwOTk5LCA5MTAwNCwgOTEwMDgsIDkxMDEyLCA5MTAxNiwgOTEwMjAsIDkxMDI0LCA5MTAyOCwgOTEwMzIsIDkxMDM2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTA0MCwgOTEwNDQsIDkxMDQ4LCA5MTA1MiwgCi0gICAgOTEwNTYsIDkxMDYwLCAwLCAwLCA5MTA2NSwgMCwgOTEwNzAsIDkxMDc0LCA5MTA3OSwgOTEwODQsIDkxMDg5LCA5MTA5NCwgCi0gICAgOTEwOTksIDkxMTA0LCA5MTEwOSwgOTExMTQsIDkxMTE5LCA5MTEyMywgOTExMjgsIDkxMTMzLCA5MTEzOCwgOTExNDMsIAotICAgIDkxMTQ3LCA5MTE1MiwgOTExNTcsIDkxMTYyLCA5MTE2NywgOTExNzEsIDkxMTc2LCA5MTE4MSwgOTExODYsIDkxMTkxLCAKLSAgICA5MTE5NSwgOTEyMDAsIDkxMjA1LCA5MTIxMCwgOTEyMTUsIDkxMjE5LCA5MTIyNCwgOTEyMjksIDkxMjM0LCA5MTIzOSwgCi0gICAgOTEyNDQsIDkxMjQ5LCA5MTI1NCwgOTEyNTgsIDkxMjYzLCA5MTI2OCwgOTEyNzMsIDkxMjc4LCAwLCA5MTI4MywgOTEyODgsIAotICAgIDAsIDAsIDAsIDkxMjkzLCAwLCAwLCA5MTI5OCwgOTEzMDMsIDkxMzEwLCA5MTMxNywgOTEzMjQsIDkxMzMxLCA5MTMzOCwgCi0gICAgOTEzNDUsIDkxMzUyLCA5MTM1OSwgOTEzNjYsIDkxMzczLCA5MTM4MCwgOTEzODcsIDkxMzk0LCA5MTQwMSwgOTE0MDgsIAotICAgIDkxNDE1LCA5MTQyMiwgOTE0MjksIDkxNDM2LCA5MTQ0MywgOTE0NTAsIDAsIDkxNDU3LCA5MTQ2NCwgOTE0NzAsIDkxNDc2LCAKLSAgICA5MTQ4MiwgOTE0ODksIDkxNDk2LCA5MTUwNCwgOTE1MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNTIxLCA5MTUyNiwgCi0gICAgOTE1MzEsIDkxNTM2LCA5MTU0MSwgOTE1NDYsIDkxNTUxLCA5MTU1NiwgOTE1NjEsIDkxNTY2LCA5MTU3MSwgOTE1NzYsIAotICAgIDkxNTgxLCA5MTU4NiwgOTE1OTEsIDkxNTk2LCA5MTYwMSwgOTE2MDYsIDkxNjExLCA5MTYxNiwgOTE2MjEsIDkxNjI2LCAKLSAgICA5MTYzMSwgOTE2MzUsIDkxNjQwLCA5MTY0NSwgOTE2NTEsIDkxNjU1LCAwLCAwLCAwLCA5MTY1OSwgOTE2NjUsIDkxNjY5LCAKLSAgICA5MTY3NCwgOTE2NzksIDkxNjg0LCA5MTY4OCwgOTE2OTMsIDkxNjk3LCA5MTcwMiwgOTE3MDcsIDkxNzExLCA5MTcxNSwgCi0gICAgOTE3MjAsIDkxNzI0LCA5MTcyOCwgOTE3MzMsIDkxNzM4LCA5MTc0MiwgOTE3NDcsIDkxNzUyLCA5MTc1NywgOTE3NjIsIAotICAgIDkxNzY3LCA5MTc3MiwgOTE3NzcsIDkxNzgyLCAwLCAwLCAwLCAwLCAwLCA5MTc4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3OTIsIDkxNzk4LCA5MTgwNCwgOTE4MTAsIDkxODE2LCA5MTgyMiwgOTE4MjksIAotICAgIDkxODM2LCA5MTg0MywgOTE4NDksIDkxODU1LCA5MTg2MSwgOTE4NjgsIDkxODc1LCA5MTg4MiwgOTE4ODgsIDkxODk1LCAKLSAgICA5MTkwMiwgOTE5MDksIDkxOTE2LCA5MTkyMiwgOTE5MjksIDkxOTM2LCA5MTk0MiwgOTE5NDksIDkxOTU2LCA5MTk2MywgCi0gICAgOTE5NzAsIDkxOTc3LCA5MTk4MywgOTE5OTAsIDkxOTk3LCA5MjAwNCwgOTIwMTAsIDkyMDE2LCA5MjAyMiwgOTIwMjgsIAotICAgIDkyMDM0LCA5MjA0MSwgOTIwNDgsIDkyMDU0LCA5MjA2MCwgOTIwNjYsIDkyMDczLCA5MjA3OSwgOTIwODYsIDkyMDkzLCAKLSAgICA5MjEwMCwgOTIxMDYsIDkyMTE0LCA5MjEyMSwgOTIxMjcsIDkyMTM0LCA5MjE0MSwgOTIxNDgsIDkyMTU0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5MjE2MSwgOTIxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDkyMTc3LCA5MjE4MSwgOTIxODYsIDkyMTkxLCAwLCA5MjE5NywgOTIyMDIsIDAsIDAsIDAsIDAsIDAsIDkyMjA3LCA5MjIxMywgCi0gICAgOTIyMjAsIDkyMjI1LCA5MjIzMCwgOTIyMzQsIDkyMjM5LCA5MjI0NCwgMCwgOTIyNDksIDkyMjU0LCA5MjI1OSwgMCwgCi0gICAgOTIyNjQsIDkyMjY5LCA5MjI3NCwgOTIyNzksIDkyMjg0LCA5MjI4OSwgOTIyOTQsIDkyMjk5LCA5MjMwNCwgOTIzMDksIAotICAgIDkyMzE0LCA5MjMxOCwgOTIzMjIsIDkyMzI3LCA5MjMzMiwgOTIzMzcsIDkyMzQxLCA5MjM0NSwgOTIzNDksIDkyMzU0LCAKLSAgICA5MjM1OSwgOTIzNjQsIDkyMzY5LCA5MjM3MywgOTIzNzgsIDkyMzgyLCA5MjM4NywgMCwgMCwgMCwgMCwgOTIzOTIsIAotICAgIDkyMzk4LCA5MjQwMywgMCwgMCwgMCwgMCwgOTI0MDgsIDkyNDEyLCA5MjQxNiwgOTI0MjAsIDkyNDI0LCA5MjQyOCwgCi0gICAgOTI0MzMsIDkyNDM4LCA5MjQ0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI0NTAsIDkyNDU2LCA5MjQ2MywgOTI0NjksIAotICAgIDkyNDc2LCA5MjQ4MiwgOTI0ODgsIDkyNDk0LCA5MjUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI1MDcsIDkyNTE1LCAKLSAgICA5MjUyMywgOTI1MzEsIDkyNTM5LCA5MjU0NywgOTI1NTUsIDkyNTYzLCA5MjU3MSwgOTI1NzksIDkyNTg3LCA5MjU5NSwgCi0gICAgOTI2MDMsIDkyNjExLCA5MjYxOSwgOTI2MjcsIDkyNjM1LCA5MjY0MywgOTI2NTEsIDkyNjU5LCA5MjY2NywgOTI2NzUsIAotICAgIDkyNjgzLCA5MjY5MSwgOTI2OTksIDkyNzA3LCA5MjcxNSwgOTI3MjMsIDkyNzMxLCA5MjczOSwgOTI3NDYsIDkyNzU0LCAKLSAgICA5Mjc2MiwgOTI3NjYsIDkyNzcxLCA5Mjc3NiwgOTI3ODEsIDkyNzg2LCA5Mjc5MSwgOTI3OTYsIDkyODAxLCA5MjgwNSwgCi0gICAgOTI4MTAsIDkyODE0LCA5MjgxOSwgOTI4MjMsIDkyODI4LCA5MjgzMiwgOTI4MzcsIDkyODQyLCA5Mjg0NywgOTI4NTIsIAotICAgIDkyODU3LCA5Mjg2MiwgOTI4NjcsIDkyODcyLCA5Mjg3NywgOTI4ODIsIDkyODg3LCA5Mjg5MiwgOTI4OTcsIDkyOTAyLCAKLSAgICA5MjkwNywgOTI5MTIsIDkyOTE3LCA5MjkyMiwgOTI5MjcsIDkyOTMyLCA5MjkzNywgOTI5NDIsIDkyOTQ3LCA5Mjk1MiwgCi0gICAgOTI5NTcsIDkyOTYyLCA5Mjk2NywgOTI5NzIsIDkyOTc3LCA5Mjk4MiwgOTI5ODcsIDkyOTkyLCA5Mjk5NywgOTMwMDIsIAotICAgIDkzMDA3LCA5MzAxMiwgOTMwMTcsIDkzMDIyLCAwLCAwLCAwLCA5MzAyNywgOTMwMzIsIDkzMDQxLCA5MzA0OSwgOTMwNTgsIAotICAgIDkzMDY3LCA5MzA3OCwgOTMwODksIDkzMDk2LCA5MzEwMywgOTMxMTAsIDkzMTE3LCA5MzEyNCwgOTMxMzEsIDkzMTM4LCAKLSAgICA5MzE0NSwgOTMxNTIsIDkzMTU5LCA5MzE2NiwgOTMxNzMsIDkzMTgwLCA5MzE4NywgOTMxOTQsIDkzMjAxLCA5MzIwOCwgCi0gICAgOTMyMTUsIDkzMjIyLCA5MzIyOSwgOTMyMzYsIDAsIDAsIDkzMjQzLCA5MzI0OSwgOTMyNTUsIDkzMjYxLCA5MzI2NywgCi0gICAgOTMyNzQsIDkzMjgxLCA5MzI4OSwgOTMyOTcsIDkzMzA0LCA5MzMxMSwgOTMzMTgsIDkzMzI1LCA5MzMzMiwgOTMzMzksIAotICAgIDkzMzQ2LCA5MzM1MywgOTMzNjAsIDkzMzY3LCA5MzM3NCwgOTMzODEsIDkzMzg4LCA5MzM5NSwgOTM0MDIsIDkzNDA5LCAKLSAgICA5MzQxNiwgOTM0MjMsIDAsIDAsIDAsIDAsIDAsIDkzNDMwLCA5MzQzNiwgOTM0NDIsIDkzNDQ4LCA5MzQ1NCwgOTM0NjEsIAotICAgIDkzNDY4LCA5MzQ3NiwgOTM0ODQsIDkzNDkwLCA5MzQ5NiwgOTM1MDMsIDkzNTA5LCA5MzUxNSwgOTM1MjEsIDkzNTI3LCAKLSAgICA5MzUzNCwgOTM1NDEsIDkzNTQ4LCA5MzU1NSwgOTM1NjIsIDkzNTY5LCA5MzU3NiwgOTM1ODMsIDkzNTkwLCA5MzU5NywgCi0gICAgOTM2MDQsIDkzNjExLCA5MzYxOCwgOTM2MjUsIDkzNjMyLCA5MzYzOSwgOTM2NDYsIDkzNjUzLCA5MzY2MCwgOTM2NjcsIAotICAgIDkzNjc0LCA5MzY4MSwgOTM2ODgsIDkzNjk1LCA5MzcwMiwgOTM3MDksIDkzNzE2LCA5MzcyMywgOTM3MzAsIDkzNzM3LCAKLSAgICA5Mzc0NCwgOTM3NTEsIDkzNzU4LCA5Mzc2NSwgOTM3NzIsIDkzNzc5LCA5Mzc4NiwgOTM3OTMsIDkzODAwLCA5MzgwNywgCi0gICAgOTM4MTQsIDkzODIxLCA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg3MCwgOTM4NzcsIAotICAgIDkzODg0LCA5Mzg5MSwgOTM4OTgsIDkzOTA1LCA5MzkxMiwgOTM5MTksIDkzOTI2LCA5MzkzMywgOTM5NDAsIDkzOTQ3LCAKLSAgICA5Mzk1NCwgOTM5NjEsIDkzOTY4LCA5Mzk3NSwgOTM5ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1Nzk1LCA5NTc5OSwgOTU4MDQsIDk1ODA5LCA5NTgxNCwgOTU4MTksIDk1ODI0LCA5NTgyOSwgOTU4MzQsIDk1ODM4LCAKKyAgICA5NTg0MywgOTU4NDgsIDk1ODUzLCA5NTg1OCwgOTU4NjIsIDk1ODY3LCA5NTg3MiwgOTU4NzcsIDk1ODgyLCA5NTg4NywgCisgICAgOTU4OTIsIDk1ODk3LCA5NTkwMiwgOTU5MDYsIDk1OTExLCA5NTkxNiwgOTU5MjEsIDk1OTI2LCA5NTkzMSwgOTU5MzYsIAorICAgIDk1OTQxLCA5NTk0NiwgOTU5NTAsIDk1OTU1LCA5NTk2MCwgOTU5NjUsIDk1OTcwLCA5NTk3NSwgOTU5ODAsIDk1OTg1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTk5MCwgOTU5OTcsIDk2MDA0LCA5NjAxMSwgOTYwMTgsIDk2MDI1LCA5NjAzMiwgCisgICAgOTYwMzksIDk2MDQ2LCA5NjA1MywgOTYwNjAsIDk2MDY3LCA5NjA3NCwgOTYwODEsIDk2MDg4LCA5NjA5NSwgOTYxMDIsIAorICAgIDk2MTA5LCA5NjExNiwgOTYxMjMsIDk2MTMwLCA5NjEzNywgOTYxNDQsIDk2MTUxLCA5NjE1OCwgOTYxNjUsIDk2MTcyLCAKKyAgICA5NjE3OSwgOTYxODYsIDk2MTkzLCA5NjIwMCwgOTYyMDcsIDk2MjE0LCA5NjIyMSwgOTYyMjgsIDk2MjM1LCA5NjI0MiwgCisgICAgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNzAsIDk2Mjc3LCA5NjI4NCwgOTYyOTEsIDk2Mjk4LCA5NjMwNSwgOTYzMTIsIAorICAgIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTYzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzOTg5LCA5Mzk5MywgCi0gICAgOTM5OTcsIDk0MDAxLCA5NDAwNSwgOTQwMDksIDk0MDEzLCA5NDAxNywgOTQwMjEsIDk0MDI1LCA5NDAzMCwgOTQwMzUsIAotICAgIDk0MDQwLCA5NDA0NSwgOTQwNTAsIDk0MDU1LCA5NDA2MCwgOTQwNjUsIDk0MDcwLCA5NDA3NiwgOTQwODIsIDk0MDg4LCAKLSAgICA5NDA5NSwgOTQxMDIsIDk0MTA5LCA5NDExNiwgOTQxMjMsIDk0MTMwLCA5NDEzNywgOTQxNDQsIDk0MTUxLCAwLCA5NDE1OCwgCi0gICAgOTQxNjIsIDk0MTY2LCA5NDE3MCwgOTQxNzQsIDk0MTc4LCA5NDE4MSwgOTQxODUsIDk0MTg4LCA5NDE5MiwgOTQxOTUsIAotICAgIDk0MTk5LCA5NDIwMywgOTQyMDgsIDk0MjEyLCA5NDIxNywgOTQyMjAsIDk0MjI0LCA5NDIyNywgOTQyMzEsIDk0MjM0LCAKLSAgICA5NDIzOCwgOTQyNDIsIDk0MjQ2LCA5NDI1MCwgOTQyNTQsIDk0MjU4LCA5NDI2MiwgOTQyNjYsIDk0MjcwLCA5NDI3NCwgCi0gICAgOTQyNzgsIDk0MjgyLCA5NDI4NiwgOTQyOTAsIDk0Mjk0LCA5NDI5OCwgOTQzMDIsIDk0MzA2LCA5NDMwOSwgOTQzMTIsIAotICAgIDk0MzE2LCA5NDMyMCwgOTQzMjQsIDk0MzI3LCA5NDMzMCwgOTQzMzMsIDk0MzM3LCA5NDM0MSwgOTQzNDUsIDk0MzQ5LCAKLSAgICA5NDM1MiwgOTQzNTUsIDk0MzU5LCA5NDM2NSwgOTQzNzEsIDk0Mzc3LCA5NDM4MiwgOTQzODksIDk0MzkzLCA5NDM5OCwgCi0gICAgOTQ0MDIsIDk0NDA3LCA5NDQxMiwgOTQ0MTgsIDk0NDIzLCA5NDQyOSwgOTQ0MzMsIDk0NDM4LCA5NDQ0MiwgOTQ0NDcsIAotICAgIDk0NDUwLCA5NDQ1MywgOTQ0NTcsIDk0NDYyLCA5NDQ2OCwgOTQ0NzMsIDk0NDc5LCAwLCAwLCAwLCAwLCA5NDQ4NCwgCi0gICAgOTQ0ODcsIDk0NDkwLCA5NDQ5MywgOTQ0OTYsIDk0NDk5LCA5NDUwMiwgOTQ1MDUsIDk0NTA4LCA5NDUxMSwgOTQ1MTUsIAotICAgIDk0NTE5LCA5NDUyMywgOTQ1MjcsIDk0NTMxLCA5NDUzNSwgOTQ1MzksIDk0NTQzLCA5NDU0NywgOTQ1NTIsIDk0NTU3LCAKLSAgICA5NDU2MSwgOTQ1NjQsIDk0NTY3LCA5NDU3MCwgOTQ1NzMsIDk0NTc2LCA5NDU3OSwgOTQ1ODIsIDk0NTg1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDU4OCwgOTQ1OTMsIDk0NTk4LCA5NDYwMywgOTQ2MDcsIAotICAgIDk0NjEyLCA5NDYxNiwgOTQ2MjEsIDk0NjI1LCA5NDYzMCwgOTQ2MzQsIDk0NjM5LCA5NDY0MywgOTQ2NDgsIDk0NjUyLCAKLSAgICA5NDY1NywgOTQ2NjIsIDk0NjY3LCA5NDY3MiwgOTQ2NzcsIDk0NjgyLCA5NDY4NywgOTQ2OTIsIDk0Njk3LCA5NDcwMiwgCi0gICAgOTQ3MDcsIDk0NzEyLCA5NDcxNywgOTQ3MjIsIDk0NzI3LCA5NDczMiwgOTQ3MzcsIDk0NzQyLCA5NDc0NywgOTQ3NTIsIAotICAgIDk0NzU2LCA5NDc2MCwgOTQ3NjUsIDk0NzcwLCA5NDc3NSwgOTQ3NzksIDk0NzgzLCA5NDc4NywgOTQ3OTIsIDk0Nzk3LCAKLSAgICA5NDgwMiwgOTQ4MDcsIDk0ODExLCA5NDgxNSwgOTQ4MjEsIDk0ODI2LCA5NDgzMiwgOTQ4MzcsIDk0ODQzLCA5NDg0OCwgCi0gICAgOTQ4NTQsIDk0ODU5LCA5NDg2NSwgOTQ4NzAsIDk0ODc1LCA5NDg4MCwgOTQ4ODUsIDk0ODg5LCA5NDg5NCwgOTQ5MDAsIAotICAgIDk0OTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDkwOSwgOTQ5MTYsIDk0OTIzLCAKLSAgICA5NDkzMCwgOTQ5MzcsIDk0OTQ0LCA5NDk1MSwgOTQ5NTgsIDk0OTY1LCA5NDk3MiwgOTQ5NzksIDk0OTg2LCA5NDk5MywgCi0gICAgOTUwMDAsIDk1MDA3LCA5NTAxNCwgOTUwMjEsIDk1MDI4LCA5NTAzNSwgOTUwNDIsIDk1MDQ5LCA5NTA1NiwgOTUwNjMsIAotICAgIDk1MDcwLCA5NTA3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUwODQsIDk1MDkxLCA5NTA5NywgOTUxMDMsIDk1MTA5LCAKLSAgICA5NTExNSwgOTUxMjEsIDk1MTI3LCA5NTEzMywgOTUxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDk1MTQ1LCA5NTE1MCwgOTUxNTUsIAotICAgIDk1MTYwLCA5NTE2NSwgOTUxNjksIDk1MTczLCA5NTE3NywgOTUxODIsIDk1MTg3LCA5NTE5MiwgOTUxOTcsIDk1MjAyLCAKLSAgICA5NTIwNywgOTUyMTIsIDk1MjE3LCA5NTIyMiwgOTUyMjcsIDk1MjMyLCA5NTIzNywgOTUyNDIsIDk1MjQ3LCA5NTI1MiwgCi0gICAgOTUyNTcsIDk1MjYyLCA5NTI2NywgOTUyNzIsIDk1Mjc3LCA5NTI4MiwgOTUyODcsIDk1MjkyLCA5NTI5NywgOTUzMDIsIAotICAgIDk1MzA3LCA5NTMxMiwgOTUzMTcsIDk1MzIyLCA5NTMyNywgOTUzMzIsIDk1MzM3LCA5NTM0MiwgOTUzNDcsIDk1MzUzLCAKLSAgICA5NTM1OCwgOTUzNjQsIDk1MzY5LCA5NTM3NSwgOTUzODAsIDk1Mzg2LCA5NTM5MiwgOTUzOTYsIDk1NDAxLCA5NTQwNSwgMCwgCi0gICAgOTU0MDksIDk1NDE0LCA5NTQxOCwgOTU0MjIsIDk1NDI2LCA5NTQzMCwgOTU0MzQsIDk1NDM4LCA5NTQ0MiwgOTU0NDYsIAotICAgIDk1NDUwLCA5NTQ1NSwgOTU0NTksIDk1NDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTQ2OSwgCi0gICAgOTU0NzMsIDk1NDc3LCA5NTQ4MSwgOTU0ODQsIDk1NDg4LCA5NTQ5MSwgOTU0OTUsIDk1NDk4LCA5NTUwMiwgOTU1MDYsIAotICAgIDk1NTExLCA5NTUxNSwgOTU1MjAsIDk1NTIzLCA5NTUyNywgOTU1MzAsIDk1NTM0LCA5NTUzNywgOTU1NDEsIDk1NTQ1LCAKLSAgICA5NTU0OSwgOTU1NTMsIDk1NTU3LCA5NTU2MSwgOTU1NjUsIDk1NTY5LCA5NTU3MywgOTU1NzcsIDk1NTgxLCA5NTU4NSwgCi0gICAgOTU1ODksIDk1NTkzLCA5NTU5NywgOTU2MDEsIDk1NjA1LCA5NTYwOSwgOTU2MTIsIDk1NjE1LCA5NTYxOSwgOTU2MjMsIAotICAgIDk1NjI3LCA5NTYzMCwgOTU2MzMsIDk1NjM2LCA5NTY0MCwgOTU2NDQsIDk1NjQ4LCA5NTY1MiwgOTU2NTYsIDk1NjU5LCAKLSAgICA5NTY2MiwgOTU2NjcsIDk1NjcxLCA5NTY3NiwgOTU2ODAsIDk1Njg1LCA5NTY5MCwgOTU2OTYsIDk1NzAxLCA5NTcwNywgCi0gICAgOTU3MTEsIDk1NzE2LCA5NTcyMCwgOTU3MjUsIDk1NzI5LCA5NTczMywgOTU3MzcsIDk1NzQxLCA5NTc0NCwgOTU3NDcsIAotICAgIDk1NzUxLCA5NTc1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU3NTgsIDk1NzYyLCA5NTc2NSwgOTU3NjgsIDk1NzcxLCAKLSAgICA5NTc3NCwgOTU3NzcsIDk1NzgwLCA5NTc4MywgOTU3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDk1Nzg5LCA5NTc5MywgOTU3OTgsIDk1ODAyLCA5NTgwNywgOTU4MTEsIDk1ODE2LCA5NTgyMCwgOTU4MjUsIDk1ODI5LCAKLSAgICA5NTgzNCwgOTU4MzgsIDk1ODQzLCA5NTg0OCwgOTU4NTMsIDk1ODU4LCA5NTg2MywgOTU4NjgsIDk1ODczLCA5NTg3OCwgCi0gICAgOTU4ODMsIDk1ODg4LCA5NTg5MywgOTU4OTgsIDk1OTAzLCA5NTkwOCwgOTU5MTMsIDk1OTE4LCA5NTkyMywgOTU5MjgsIAotICAgIDk1OTMyLCA5NTkzNiwgOTU5NDEsIDk1OTQ2LCA5NTk1MSwgOTU5NTUsIDk1OTU5LCA5NTk2MywgOTU5NjgsIDk1OTczLCAKLSAgICA5NTk3OCwgOTU5ODIsIDk1OTg2LCA5NTk5MSwgOTU5OTYsIDk2MDAxLCA5NjAwNywgOTYwMTIsIDk2MDE4LCA5NjAyMywgCi0gICAgOTYwMjksIDk2MDM0LCA5NjA0MCwgOTYwNDUsIDk2MDUxLCA5NjA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTYwNjEsIAotICAgIDk2MDY2LCA5NjA3MCwgOTYwNzQsIDk2MDc4LCA5NjA4MiwgOTYwODYsIDk2MDkwLCA5NjA5NCwgOTYwOTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDk2MTAyLCA5NjEwNSwgOTYxMTAsIDk2MTE2LCA5NjEyNCwgOTYxMjksIDk2MTM1LCA5NjE0MywgOTYxNDksIAotICAgIDk2MTU1LCA5NjE1OSwgOTYxNjMsIDk2MTcwLCA5NjE3OSwgOTYxODYsIDk2MTk1LCA5NjIwMSwgOTYyMTAsIDk2MjE3LCAKLSAgICA5NjIyNCwgOTYyMzEsIDk2MjQxLCA5NjI0NywgOTYyNTEsIDk2MjU4LCA5NjI2NywgOTYyNzcsIDk2Mjg0LCA5NjI5MSwgCi0gICAgOTYyOTUsIDk2Mjk5LCA5NjMwNiwgOTYzMTYsIDk2MzIwLCA5NjMyNywgOTYzMzQsIDk2MzQxLCA5NjM0NywgOTYzNTQsIAotICAgIDk2MzYxLCA5NjM2OCwgOTYzNzUsIDk2Mzc5LCA5NjM4MywgOTYzODcsIDk2Mzk0LCA5NjM5OCwgOTY0MDUsIDk2NDEyLCAKLSAgICA5NjQyNiwgOTY0MzUsIDk2NDM5LCA5NjQ0MywgOTY0NDcsIDk2NDU0LCA5NjQ1OCwgOTY0NjIsIDk2NDY2LCA5NjQ3NCwgCi0gICAgOTY0ODIsIDk2NTAxLCA5NjUxMSwgOTY1MzEsIDk2NTM1LCA5NjUzOSwgOTY1NDMsIDk2NTQ3LCA5NjU1MSwgOTY1NTUsIAotICAgIDk2NTU5LCA5NjU2NiwgOTY1NzAsIDk2NTczLCA5NjU3NywgOTY1ODEsIDk2NTg3LCA5NjU5NCwgOTY2MDMsIDk2NjA3LCAKLSAgICA5NjYxNiwgOTY2MjUsIDk2NjMzLCA5NjYzNywgOTY2NDQsIDk2NjQ4LCA5NjY1MiwgOTY2NTYsIDk2NjYwLCA5NjY3MSwgCi0gICAgOTY2ODAsIDk2Njg5LCA5NjY5OCwgOTY3MDcsIDk2NzE5LCA5NjcyOCwgOTY3MzcsIDk2NzQ2LCA5Njc1NCwgOTY3NjMsIAotICAgIDk2Nzc1LCA5Njc4NCwgOTY3OTMsIDk2ODAyLCA5NjgxNCwgOTY4MjMsIDk2ODMyLCA5Njg0NCwgOTY4NTMsIDk2ODYyLCAKLSAgICA5Njg3NCwgOTY4ODMsIDk2ODg3LCA5Njg5MSwgOTY4OTUsIDk2ODk5LCA5NjkwMywgOTY5MDcsIDk2OTExLCA5NjkxOCwgCi0gICAgOTY5MjIsIDk2OTI2LCA5NjkzNywgOTY5NDEsIDk2OTQ1LCA5Njk1MiwgOTY5NTgsIDk2OTY0LCA5Njk2OCwgOTY5NzUsIAotICAgIDk2OTc5LCA5Njk4MywgOTY5ODcsIDk2OTkxLCA5Njk5NSwgOTY5OTksIDk3MDA1LCA5NzAxMywgOTcwMTcsIDk3MDIxLCAKLSAgICA5NzAyNCwgOTcwMzAsIDk3MDQwLCA5NzA0NCwgOTcwNTYsIDk3MDYzLCA5NzA3MCwgOTcwNzcsIDk3MDg0LCA5NzA5MCwgCi0gICAgOTcwOTQsIDk3MDk4LCA5NzEwMiwgOTcxMDYsIDk3MTEzLCA5NzEyMiwgOTcxMjksIDk3MTM3LCA5NzE0NSwgOTcxNTEsIAotICAgIDk3MTU1LCA5NzE1OSwgOTcxNjMsIDk3MTY3LCA5NzE3MywgOTcxODIsIDk3MTk0LCA5NzIwMSwgOTcyMDgsIDk3MjE3LCAKLSAgICA5NzIyOCwgOTcyMzQsIDk3MjQzLCA5NzI1MiwgOTcyNTksIDk3MjY4LCA5NzI3NSwgOTcyODIsIDk3MjkyLCA5NzI5OSwgCi0gICAgOTczMDYsIDk3MzEzLCA5NzMyMCwgOTczMjQsIDk3MzMwLCA5NzMzNCwgOTczNDUsIDk3MzUzLCA5NzM2MiwgOTczNzQsIAotICAgIDk3MzgxLCA5NzM4OCwgOTczOTgsIDk3NDA1LCA5NzQxNCwgOTc0MjEsIDk3NDMwLCA5NzQzNywgOTc0NDQsIDk3NDU0LCAKLSAgICA5NzQ2MSwgOTc0NjgsIDk3NDc4LCA5NzQ4NSwgOTc0OTcsIDk3NTA2LCA5NzUxMywgOTc1MjAsIDk3NTI3LCA5NzUzNiwgCi0gICAgOTc1NDYsIDk3NTU5LCA5NzU2NiwgOTc1NzYsIDk3NTg2LCA5NzU5MywgOTc2MDIsIDk3NjE1LCA5NzYyMiwgOTc2MjksIAotICAgIDk3NjM2LCA5NzY0NiwgOTc2NTYsIDk3NjYzLCA5NzY3MywgOTc2ODAsIDk3Njg3LCA5NzY5NywgOTc3MDMsIDk3NzEwLCAKLSAgICA5NzcxNywgOTc3MjQsIDk3NzM0LCA5Nzc0MSwgOTc3NDgsIDk3NzU1LCA5Nzc2MSwgOTc3NjgsIDk3Nzc4LCA5Nzc4NSwgCi0gICAgOTc3ODksIDk3Nzk3LCA5NzgwMSwgOTc4MTMsIDk3ODE3LCA5NzgzMSwgOTc4MzUsIDk3ODM5LCA5Nzg0MywgOTc4NDcsIAotICAgIDk3ODUzLCA5Nzg2MCwgOTc4NjgsIDk3ODcyLCA5Nzg3NiwgOTc4ODAsIDk3ODg0LCA5Nzg5MSwgOTc4OTUsIDk3OTAxLCAKLSAgICA5NzkwNywgOTc5MTUsIDk3OTE5LCA5NzkyNiwgOTc5MzQsIDk3OTM4LCA5Nzk0MiwgOTc5NDgsIDk3OTUyLCA5Nzk2MSwgCi0gICAgOTc5NzAsIDk3OTc3LCA5Nzk4NywgOTc5OTMsIDk3OTk3LCA5ODAwMSwgOTgwMDksIDk4MDE2LCA5ODAyMywgOTgwMjksIAotICAgIDk4MDMzLCA5ODA0MSwgOTgwNDUsIDk4MDUyLCA5ODA2NCwgOTgwNzEsIDk4MDgxLCA5ODA4NywgOTgwOTEsIDk4MTAwLCAKLSAgICA5ODEwNywgOTgxMTYsIDk4MTIwLCA5ODEyNCwgOTgxMzEsIDk4MTM1LCA5ODEzOSwgOTgxNDMsIDk4MTQ3LCA5ODE1MCwgCi0gICAgOTgxNTYsIDk4MTYyLCA5ODE2NiwgOTgxNzAsIDk4MTc3LCA5ODE4NCwgOTgxOTEsIDk4MTk4LCA5ODIwNSwgOTgyMTIsIAotICAgIDk4MjE5LCA5ODIyNiwgOTgyMzIsIDk4MjM2LCA5ODI0MCwgOTgyNDcsIDk4MjU0LCA5ODI2MSwgOTgyNjgsIDk4Mjc1LCAKLSAgICA5ODI3OSwgOTgyODIsIDk4Mjg3LCA5ODI5MSwgOTgyOTUsIDk4MzA0LCA5ODMxMywgOTgzMTcsIDk4MzIxLCA5ODMyNywgCi0gICAgOTgzMzMsIDk4MzUwLCA5ODM1NiwgOTgzNjAsIDk4MzY5LCA5ODM3MywgOTgzNzcsIDk4Mzg0LCA5ODM5MiwgOTg0MDAsIAotICAgIDk4NDA2LCA5ODQxMCwgOTg0MTQsIDk4NDE4LCA5ODQyMiwgOTg0MjUsIDk4NDMxLCA5ODQzOCwgOTg0NDgsIDk4NDU1LCAKLSAgICA5ODQ2MiwgOTg0NjksIDk4NDc1LCA5ODQ4MiwgOTg0ODksIDk4NDk2LCA5ODUwMywgOTg1MTAsIDk4NTE5LCA5ODUyNiwgCi0gICAgOTg1MzgsIDk4NTQ1LCA5ODU1MiwgOTg1NjIsIDk4NTczLCA5ODU4MCwgOTg1ODcsIDk4NTk0LCA5ODYwMSwgOTg2MDgsIAotICAgIDk4NjE1LCA5ODYyMiwgOTg2MjksIDk4NjM2LCA5ODY0MywgOTg2NTMsIDk4NjYzLCA5ODY3MywgOTg2ODAsIDk4NjkwLCAKLSAgICA5ODY5NywgOTg3MDQsIDk4NzExLCA5ODcxOCwgOTg3MjQsIDk4NzMxLCA5ODczOCwgOTg3NDUsIDk4NzUyLCA5ODc1OSwgCi0gICAgOTg3NjYsIDk4NzczLCA5ODc4MCwgOTg3ODYsIDk4NzkzLCA5ODgwMCwgOTg4MDksIDk4ODE2LCA5ODgyMywgOTg4MjcsIAotICAgIDk4ODM1LCA5ODgzOSwgOTg4NDMsIDk4ODQ3LCA5ODg1MSwgOTg4NTUsIDk4ODYyLCA5ODg2NiwgOTg4NzUsIDk4ODc5LCAKLSAgICA5ODg4NiwgOTg4OTQsIDk4ODk4LCA5ODkwMiwgOTg5MDYsIDk4OTE5LCA5ODkzNSwgOTg5MzksIDk4OTQzLCA5ODk1MCwgCi0gICAgOTg5NTYsIDk4OTYzLCA5ODk2NywgOTg5NzEsIDk4OTc1LCA5ODk3OSwgOTg5ODMsIDk4OTkwLCA5ODk5NCwgOTkwMTIsIAotICAgIDk5MDE2LCA5OTAyMCwgOTkwMjcsIDk5MDMxLCA5OTAzNSwgOTkwNDEsIDk5MDQ1LCA5OTA0OSwgOTkwNTcsIDk5MDYxLCAKLSAgICA5OTA2NSwgOTkwNjksIDk5MDczLCA5OTA3OSwgOTkwOTAsIDk5MDk5LCA5OTEwOCwgOTkxMTUsIDk5MTIyLCA5OTEzMywgCi0gICAgOTkxNDAsIDk5MTQ3LCA5OTE1NCwgOTkxNjEsIDk5MTY4LCA5OTE3NSwgOTkxODIsIDk5MTkyLCA5OTE5OCwgOTkyMDUsIAotICAgIDk5MjE1LCA5OTIyNCwgOTkyMzEsIDk5MjQwLCA5OTI1MCwgOTkyNTcsIDk5MjY0LCA5OTI3MSwgOTkyNzgsIDk5MjkwLCAKLSAgICA5OTI5NywgOTkzMDQsIDk5MzExLCA5OTMxOCwgOTkzMjUsIDk5MzM1LCA5OTM0MiwgOTkzNDksIDk5MzU5LCA5OTM3MiwgCi0gICAgOTkzODQsIDk5MzkxLCA5OTQwMSwgOTk0MDgsIDk5NDE1LCA5OTQyMiwgOTk0MzYsIDk5NDQyLCA5OTQ1MCwgOTk0NjAsIAotICAgIDk5NDcwLCA5OTQ3NywgOTk0ODQsIDk5NDkwLCA5OTQ5NCwgOTk1MDEsIDk5NTExLCA5OTUxNywgOTk1MzAsIDk5NTM0LCAKLSAgICA5OTUzOCwgOTk1NDUsIDk5NTQ5LCA5OTU1NiwgOTk1NjYsIDk5NTcwLCA5OTU3NCwgOTk1NzgsIDk5NTgyLCA5OTU4NiwgCi0gICAgOTk1OTMsIDk5NTk3LCA5OTYwNCwgOTk2MTEsIDk5NjE4LCA5OTYyNywgOTk2MzYsIDk5NjQ2LCA5OTY1MywgOTk2NjAsIAotICAgIDk5NjY3LCA5OTY3NywgOTk2ODQsIDk5Njk0LCA5OTcwMSwgOTk3MTEsIDk5NzE4LCA5OTcyNSwgOTk3MzUsIDk5NzQ1LCAKLSAgICA5OTc1MiwgOTk3NTgsIDk5NzY2LCA5OTc3NCwgOTk3ODAsIDk5Nzg2LCA5OTc5MCwgOTk3OTQsIDk5ODAxLCA5OTgwOSwgCi0gICAgOTk4MTUsIDk5ODE5LCA5OTgyMywgOTk4MjcsIDk5ODM0LCA5OTg0NiwgOTk4NDksIDk5ODU2LCA5OTg2MiwgOTk4NjYsIAotICAgIDk5ODcwLCA5OTg3NCwgOTk4NzgsIDk5ODgyLCA5OTg4NiwgOTk4OTAsIDk5ODk0LCA5OTg5OCwgOTk5MDIsIDk5OTA5LCAKLSAgICA5OTkxMywgOTk5MTksIDk5OTIzLCA5OTkyNywgOTk5MzEsIDk5OTM3LCA5OTk0NCwgOTk5NTEsIDk5OTU4LCA5OTk2OSwgCi0gICAgOTk5NzcsIDk5OTgxLCA5OTk4NywgOTk5OTYsIDEwMDAwMywgMTAwMDA5LCAxMDAwMTIsIDEwMDAxNiwgMTAwMDIwLCAKLSAgICAxMDAwMjYsIDEwMDAzNSwgMTAwMDQzLCAxMDAwNDcsIDEwMDA1MywgMTAwMDU3LCAxMDAwNjEsIDEwMDA2NSwgMTAwMDcxLCAKLSAgICAxMDAwNzgsIDEwMDA4NCwgMTAwMDg4LCAxMDAwOTQsIDEwMDA5OCwgMTAwMTAyLCAxMDAxMTEsIDEwMDEyMywgMTAwMTI3LCAKLSAgICAxMDAxMzQsIDEwMDE0MSwgMTAwMTUxLCAxMDAxNTgsIDEwMDE3MCwgMTAwMTc3LCAxMDAxODQsIDEwMDE5MSwgMTAwMjAyLCAKLSAgICAxMDAyMTIsIDEwMDIyNSwgMTAwMjM1LCAxMDAyNDIsIDEwMDI0NiwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjY3LCAKLSAgICAxMDAyNzYsIDEwMDI4NSwgMTAwMzAyLCAxMDAzMTEsIDEwMDMxNywgMTAwMzI0LCAxMDAzMzIsIDEwMDM0NSwgMTAwMzQ5LCAKLSAgICAxMDAzNTgsIDEwMDM2NywgMTAwMzc2LCAxMDAzODUsIDEwMDM5NiwgMTAwNDA1LCAxMDA0MTQsIDEwMDQyMywgMTAwNDMyLCAKLSAgICAxMDA0NDEsIDEwMDQ1MCwgMTAwNDYwLCAxMDA0NjMsIDEwMDQ2NywgMTAwNDcxLCAxMDA0NzUsIDEwMDQ3OSwgMTAwNDgzLCAKLSAgICAxMDA0ODksIDEwMDQ5NiwgMTAwNTAzLCAxMDA1MTAsIDEwMDUxNiwgMTAwNTIyLCAxMDA1MjksIDEwMDUzNSwgMTAwNTQyLCAKLSAgICAxMDA1NTAsIDEwMDU1NCwgMTAwNTYxLCAxMDA1NjgsIDEwMDU3NSwgMTAwNTgzLCAxMDA1ODYsIDEwMDU5MCwgMTAwNTk0LCAKLSAgICAxMDA1OTgsIDEwMDYwMSwgMTAwNjA3LCAxMDA2MTEsIDEwMDYxNywgMTAwNjI0LCAxMDA2MzEsIDEwMDYzNywgMTAwNjQ0LCAKLSAgICAxMDA2NTEsIDEwMDY1OCwgMTAwNjY1LCAxMDA2NzIsIDEwMDY3OSwgMTAwNjg2LCAxMDA2OTMsIDEwMDcwMCwgMTAwNzA3LCAKLSAgICAxMDA3MTQsIDEwMDcyMSwgMTAwNzI4LCAxMDA3MzUsIDEwMDc0MSwgMTAwNzQ1LCAxMDA3NTQsIDEwMDc1OCwgMTAwNzYyLCAKLSAgICAxMDA3NjYsIDEwMDc3MCwgMTAwNzc2LCAxMDA3ODMsIDEwMDc5MCwgMTAwNzk3LCAxMDA4MDQsIDEwMDgxMSwgMTAwODE3LCAKLSAgICAxMDA4MjUsIDEwMDgyOSwgMTAwODMzLCAxMDA4MzcsIDEwMDg0MSwgMTAwODQ3LCAxMDA4NjQsIDEwMDg4MSwgMTAwODg1LCAKLSAgICAxMDA4ODksIDEwMDg5MywgMTAwODk3LCAxMDA5MDEsIDEwMDkwNSwgMTAwOTExLCAxMDA5MTgsIDEwMDkyMiwgMTAwOTI4LCAKLSAgICAxMDA5MzUsIDEwMDk0MiwgMTAwOTQ5LCAxMDA5NTYsIDEwMDk2MywgMTAwOTcyLCAxMDA5NzksIDEwMDk4NiwgMTAwOTkzLCAKLSAgICAxMDEwMDAsIDEwMTAwNCwgMTAxMDA4LCAxMDEwMTQsIDEwMTAyNiwgMTAxMDMwLCAxMDEwMzQsIDEwMTA0MywgMTAxMDQ3LCAKLSAgICAxMDEwNTEsIDEwMTA1NSwgMTAxMDYxLCAxMDEwNjUsIDEwMTA2OSwgMTAxMDc4LCAxMDEwODIsIDEwMTA4NiwgMTAxMDkwLCAKLSAgICAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMDksIDEwMTExMywgMTAxMTE3LCAxMDExMjEsIDEwMTEyNSwgMTAxMTI5LCAKLSAgICAxMDExMzUsIDEwMTE0MiwgMTAxMTQ5LCAxMDExNTUsIDEwMTE1OSwgMTAxMTc2LCAxMDExODIsIDEwMTE4NiwgMTAxMTkyLCAKLSAgICAxMDExOTgsIDEwMTIwNCwgMTAxMjEwLCAxMDEyMTYsIDEwMTIyMiwgMTAxMjI2LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjQwLCAKLSAgICAxMDEyNDQsIDEwMTI1MCwgMTAxMjU0LCAxMDEyNTgsIDEwMTI2NSwgMTAxMjcyLCAxMDEyODksIDEwMTI5MywgMTAxMjk3LCAKLSAgICAxMDEzMDEsIDEwMTMwNSwgMTAxMzA5LCAxMDEzMjEsIDEwMTMyNCwgMTAxMzI5LCAxMDEzMzQsIDEwMTM0OSwgMTAxMzU5LCAKLSAgICAxMDEzNzEsIDEwMTM3NSwgMTAxMzc5LCAxMDEzODMsIDEwMTM4OSwgMTAxMzk2LCAxMDE0MDMsIDEwMTQxMywgMTAxNDI1LCAKLSAgICAxMDE0MzEsIDEwMTQzNywgMTAxNDQ2LCAxMDE0NTAsIDEwMTQ1NCwgMTAxNDYxLCAxMDE0NzEsIDEwMTQ3OCwgMTAxNDg0LCAKLSAgICAxMDE0ODgsIDEwMTQ5MiwgMTAxNDk5LCAxMDE1MDUsIDEwMTUwOSwgMTAxNTE1LCAxMDE1MTksIDEwMTUyNywgMTAxNTMzLCAKLSAgICAxMDE1MzcsIDEwMTU0NSwgMTAxNTUzLCAxMDE1NjAsIDEwMTU2NiwgMTAxNTczLCAxMDE1ODAsIDEwMTU5MCwgMTAxNjAwLCAKLSAgICAxMDE2MDQsIDEwMTYwOCwgMTAxNjEyLCAxMDE2MTYsIDEwMTYyMiwgMTAxNjI5LCAxMDE2MzUsIDEwMTY0MiwgMTAxNjQ5LCAKLSAgICAxMDE2NTYsIDEwMTY2NSwgMTAxNjcyLCAxMDE2NzksIDEwMTY4NSwgMTAxNjkyLCAxMDE2OTksIDEwMTcwNiwgMTAxNzEzLCAKLSAgICAxMDE3MjAsIDEwMTcyNywgMTAxNzMzLCAxMDE3NDAsIDEwMTc0NywgMTAxNzU0LCAxMDE3NjMsIDEwMTc3MCwgMTAxNzc3LCAKLSAgICAxMDE3ODEsIDEwMTc4NywgMTAxNzkxLCAxMDE3OTcsIDEwMTgwNCwgMTAxODExLCAxMDE4MTgsIDEwMTgyMiwgMTAxODI2LCAKLSAgICAxMDE4MzAsIDEwMTgzNCwgMTAxODM4LCAxMDE4NDUsIDEwMTg0OSwgMTAxODUzLCAxMDE4NTksIDEwMTg2NywgMTAxODcxLCAKLSAgICAxMDE4NzUsIDEwMTg3OSwgMTAxODgzLCAxMDE4OTAsIDEwMTg5NCwgMTAxODk4LCAxMDE5MDYsIDEwMTkxMCwgMTAxOTE0LCAKLSAgICAxMDE5MTgsIDEwMTkyMiwgMTAxOTI4LCAxMDE5MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwMTkzNiwgMTAxOTQyLCAxMDE5NDgsIDEwMTk1NSwgMTAxOTYyLCAxMDE5NjksIDEwMTk3NiwgMTAxOTgzLCAKLSAgICAxMDE5OTAsIDEwMTk5NiwgMTAyMDAzLCAxMDIwMTAsIDEwMjAxNywgMTAyMDI0LCAxMDIwMzEsIDEwMjAzOCwgMTAyMDQ0LCAKLSAgICAxMDIwNTAsIDEwMjA1NiwgMTAyMDYyLCAxMDIwNjgsIDEwMjA3NCwgMTAyMDgwLCAxMDIwODYsIDEwMjA5MiwgMTAyMDk5LCAKLSAgICAxMDIxMDYsIDEwMjExMywgMTAyMTIwLCAxMDIxMjcsIDEwMjEzNCwgMTAyMTQwLCAxMDIxNDYsIDEwMjE1MiwgMTAyMTU5LCAKLSAgICAxMDIxNjYsIDEwMjE3MiwgMTAyMTc4LCAxMDIxODcsIDEwMjE5NCwgMTAyMjAxLCAxMDIyMDgsIDEwMjIxNSwgMTAyMjIyLCAKLSAgICAxMDIyMjksIDEwMjIzNSwgMTAyMjQxLCAxMDIyNDcsIDEwMjI1NiwgMTAyMjYzLCAxMDIyNzAsIDEwMjI4MSwgMTAyMjkyLCAKLSAgICAxMDIyOTgsIDEwMjMwNCwgMTAyMzEwLCAxMDIzMTksIDEwMjMyNiwgMTAyMzMzLCAxMDIzNDMsIDEwMjM1MywgMTAyMzY0LCAKLSAgICAxMDIzNzUsIDEwMjM4NywgMTAyNDAwLCAxMDI0MTEsIDEwMjQyMiwgMTAyNDM0LCAxMDI0NDcsIDEwMjQ1OCwgMTAyNDY5LCAKLSAgICAxMDI0ODAsIDEwMjQ5MSwgMTAyNTAyLCAxMDI1MTQsIDEwMjUyMiwgMTAyNTMwLCAxMDI1MzksIDEwMjU0OCwgMTAyNTU3LCAKLSAgICAxMDI1NjMsIDEwMjU2OSwgMTAyNTc1LCAxMDI1ODIsIDEwMjU5MiwgMTAyNTk5LCAxMDI2MDksIDEwMjYxNCwgMTAyNjE5LCAKLSAgICAxMDI2MjUsIDEwMjYzMSwgMTAyNjM5LCAxMDI2NDcsIDEwMjY1NiwgMTAyNjY3LCAxMDI2NzgsIDEwMjY4NiwgMTAyNjk0LCAKLSAgICAxMDI3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjcxMiwgMTAyNzIzLCAxMDI3MzAsIAotICAgIDEwMjczOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNzQ2LCAxMDI3NTAsIDEwMjc1NCwgCi0gICAgMTAyNzU4LCAxMDI3NjIsIDEwMjc2NiwgMTAyNzcwLCAxMDI3NzQsIDEwMjc3OCwgMTAyNzgyLCAxMDI3ODYsIDEwMjc5MCwgCi0gICAgMTAyNzk0LCAxMDI3OTgsIDEwMjgwMiwgMTAyODA2LCAxMDI4MTAsIDEwMjgxNCwgMTAyODE4LCAxMDI4MjIsIDEwMjgyNiwgCi0gICAgMTAyODMwLCAxMDI4MzQsIDEwMjgzOCwgMTAyODQyLCAxMDI4NDYsIDEwMjg1MCwgMTAyODU0LCAxMDI4NTgsIDEwMjg2MiwgCi0gICAgMTAyODY2LCAxMDI4NzAsIDEwMjg3NCwgMTAyODc4LCAxMDI4ODIsIDEwMjg4NiwgMTAyODkwLCAxMDI4OTQsIDEwMjg5OCwgCi0gICAgMTAyOTAyLCAxMDI5MDYsIDEwMjkxMCwgMTAyOTE0LCAxMDI5MTgsIDEwMjkyMiwgMTAyOTI2LCAxMDI5MzAsIDEwMjkzNCwgCi0gICAgMTAyOTM4LCAxMDI5NDIsIDEwMjk0NiwgMTAyOTUwLCAxMDI5NTQsIDEwMjk1OCwgMTAyOTYyLCAxMDI5NjYsIDEwMjk3MCwgCi0gICAgMTAyOTc0LCAxMDI5NzgsIDEwMjk4MiwgMTAyOTg2LCAxMDI5OTAsIDEwMjk5NCwgMTAyOTk4LCAxMDMwMDIsIDEwMzAwNiwgCi0gICAgMTAzMDEwLCAxMDMwMTQsIDEwMzAxOCwgMTAzMDIyLCAxMDMwMjYsIDEwMzAzMCwgMTAzMDM0LCAxMDMwMzgsIDEwMzA0MiwgCi0gICAgMTAzMDQ2LCAxMDMwNTAsIDEwMzA1NCwgMTAzMDU4LCAxMDMwNjIsIDEwMzA2NiwgMTAzMDcwLCAxMDMwNzQsIDEwMzA3OCwgCi0gICAgMTAzMDgyLCAxMDMwODYsIDEwMzA5MCwgMTAzMDk0LCAxMDMwOTgsIDEwMzEwMiwgMTAzMTA2LCAxMDMxMTAsIDEwMzExNCwgCi0gICAgMTAzMTE4LCAxMDMxMjIsIDEwMzEyNiwgMTAzMTMwLCAxMDMxMzQsIDEwMzEzOCwgMTAzMTQyLCAxMDMxNDYsIDEwMzE1MCwgCi0gICAgMTAzMTU0LCAxMDMxNTgsIDEwMzE2MiwgMTAzMTY2LCAxMDMxNzAsIDEwMzE3NCwgMTAzMTc4LCAxMDMxODIsIDEwMzE4NiwgCi0gICAgMTAzMTkwLCAxMDMxOTQsIDEwMzE5OCwgMTAzMjAyLCAxMDMyMDYsIDEwMzIxMCwgMTAzMjE0LCAxMDMyMTgsIDEwMzIyMiwgCi0gICAgMTAzMjI2LCAxMDMyMzAsIDEwMzIzNCwgMTAzMjM4LCAxMDMyNDIsIDEwMzI0NiwgMTAzMjUwLCAxMDMyNTQsIDEwMzI1OCwgCi0gICAgMTAzMjYyLCAxMDMyNjYsIDEwMzI3MCwgMTAzMjc0LCAxMDMyNzgsIDEwMzI4MiwgMTAzMjg2LCAxMDMyOTAsIDEwMzI5NCwgCi0gICAgMTAzMjk4LCAxMDMzMDIsIDEwMzMwNiwgMTAzMzEwLCAxMDMzMTQsIDEwMzMxOCwgMTAzMzIyLCAxMDMzMjYsIDEwMzMzMCwgCi0gICAgMTAzMzM0LCAxMDMzMzgsIDEwMzM0MiwgMTAzMzQ2LCAxMDMzNTAsIDEwMzM1NCwgMTAzMzU4LCAxMDMzNjIsIDEwMzM2NiwgCi0gICAgMTAzMzcwLCAxMDMzNzQsIDEwMzM3OCwgMTAzMzgyLCAxMDMzODYsIDEwMzM5MCwgMTAzMzk0LCAxMDMzOTgsIDEwMzQwMiwgCi0gICAgMTAzNDA2LCAxMDM0MTAsIDEwMzQxNCwgMTAzNDE4LCAxMDM0MjIsIDEwMzQyNiwgMTAzNDMwLCAxMDM0MzQsIDEwMzQzOCwgCi0gICAgMTAzNDQyLCAxMDM0NDYsIDEwMzQ1MCwgMTAzNDU0LCAxMDM0NTgsIDEwMzQ2MiwgMTAzNDY2LCAxMDM0NzAsIDEwMzQ3NCwgCi0gICAgMTAzNDc4LCAxMDM0ODIsIDEwMzQ4NiwgMTAzNDkwLCAxMDM0OTQsIDEwMzQ5OCwgMTAzNTAyLCAxMDM1MDYsIDEwMzUxMCwgCi0gICAgMTAzNTE0LCAxMDM1MTgsIDEwMzUyMiwgMTAzNTI2LCAxMDM1MzAsIDEwMzUzNCwgMTAzNTM4LCAxMDM1NDIsIDEwMzU0NiwgCi0gICAgMTAzNTUwLCAxMDM1NTQsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjYsIDEwMzU3MCwgMTAzNTc0LCAxMDM1NzgsIDEwMzU4MiwgCi0gICAgMTAzNTg2LCAxMDM1OTAsIDEwMzU5NCwgMTAzNTk4LCAxMDM2MDIsIDEwMzYwNiwgMTAzNjEwLCAxMDM2MTQsIDEwMzYxOCwgCi0gICAgMTAzNjIyLCAxMDM2MjYsIDEwMzYzMCwgMTAzNjM0LCAxMDM2MzgsIDEwMzY0MiwgMTAzNjQ2LCAxMDM2NTAsIDEwMzY1NCwgCi0gICAgMTAzNjU4LCAxMDM2NjIsIDEwMzY2NiwgMTAzNjcwLCAxMDM2NzQsIDEwMzY3OCwgMTAzNjgyLCAxMDM2ODYsIDEwMzY5MCwgCi0gICAgMTAzNjk0LCAxMDM2OTgsIDEwMzcwMiwgMTAzNzA2LCAxMDM3MTAsIDEwMzcxNCwgMTAzNzE4LCAxMDM3MjIsIDEwMzcyNiwgCi0gICAgMTAzNzMwLCAxMDM3MzQsIDEwMzczOCwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MCwgMTAzNzU0LCAxMDM3NTgsIDEwMzc2MiwgCi0gICAgMTAzNzY2LCAxMDM3NzAsIDEwMzc3NCwgMTAzNzc4LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkwLCAxMDM3OTQsIDEwMzc5OCwgCi0gICAgMTAzODAyLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE0LCAxMDM4MTgsIDEwMzgyMiwgMTAzODI2LCAxMDM4MzAsIDEwMzgzNCwgCi0gICAgMTAzODM4LCAxMDM4NDIsIDEwMzg0NiwgMTAzODUwLCAxMDM4NTQsIDEwMzg1OCwgMTAzODYyLCAxMDM4NjYsIDEwMzg3MCwgCi0gICAgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAxMDM5MDIsIDEwMzkwNiwgCi0gICAgMTAzOTEwLCAxMDM5MTQsIDEwMzkxOCwgMTAzOTIyLCAxMDM5MjYsIDEwMzkzMCwgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MiwgCi0gICAgMTAzOTQ2LCAxMDM5NTAsIDEwMzk1NCwgMTAzOTU4LCAxMDM5NjIsIDEwMzk2NiwgMTAzOTcwLCAxMDM5NzQsIDEwMzk3OCwgCi0gICAgMTAzOTgyLCAxMDM5ODYsIDEwMzk5MCwgMTAzOTk0LCAxMDM5OTgsIDEwNDAwMiwgMTA0MDA2LCAxMDQwMTAsIDEwNDAxNCwgCi0gICAgMTA0MDE4LCAxMDQwMjIsIDEwNDAyNiwgMTA0MDMwLCAxMDQwMzQsIDEwNDAzOCwgMTA0MDQyLCAxMDQwNDYsIDEwNDA1MCwgCi0gICAgMTA0MDU0LCAxMDQwNTgsIDEwNDA2MiwgMTA0MDY2LCAxMDQwNzAsIDEwNDA3NCwgMTA0MDc4LCAxMDQwODIsIDEwNDA4NiwgCi0gICAgMTA0MDkwLCAxMDQwOTQsIDEwNDA5OCwgMTA0MTAyLCAxMDQxMDYsIDEwNDExMCwgMTA0MTE0LCAxMDQxMTgsIDEwNDEyMiwgCi0gICAgMTA0MTI2LCAxMDQxMzAsIDEwNDEzNCwgMTA0MTM4LCAxMDQxNDIsIDEwNDE0NiwgMTA0MTUwLCAxMDQxNTQsIDEwNDE1OCwgCi0gICAgMTA0MTYyLCAxMDQxNjYsIDEwNDE3MCwgMTA0MTc0LCAxMDQxNzgsIDEwNDE4MiwgMTA0MTg2LCAxMDQxOTAsIDEwNDE5NCwgCi0gICAgMTA0MTk4LCAxMDQyMDIsIDEwNDIwNiwgMTA0MjEwLCAxMDQyMTQsIDEwNDIxOCwgMTA0MjIyLCAxMDQyMjYsIDEwNDIzMCwgCi0gICAgMTA0MjM0LCAxMDQyMzgsIDEwNDI0MiwgMTA0MjQ2LCAxMDQyNTAsIDEwNDI1NCwgMTA0MjU4LCAxMDQyNjIsIDEwNDI2NiwgCi0gICAgMTA0MjcwLCAxMDQyNzQsIDEwNDI3OCwgMTA0MjgyLCAxMDQyODYsIDEwNDI5MCwgMTA0Mjk0LCAxMDQyOTgsIDEwNDMwMiwgCi0gICAgMTA0MzA2LCAxMDQzMTAsIDEwNDMxNCwgMTA0MzE4LCAxMDQzMjIsIDEwNDMyNiwgMTA0MzMwLCAxMDQzMzQsIDEwNDMzOCwgCi0gICAgMTA0MzQyLCAxMDQzNDYsIDEwNDM1MCwgMTA0MzU0LCAxMDQzNTgsIDEwNDM2MiwgMTA0MzY2LCAxMDQzNzAsIDEwNDM3NCwgCi0gICAgMTA0Mzc4LCAxMDQzODIsIDEwNDM4NiwgMTA0MzkwLCAxMDQzOTQsIDEwNDM5OCwgMTA0NDAyLCAxMDQ0MDYsIDEwNDQxMCwgCi0gICAgMTA0NDE0LCAxMDQ0MTgsIDEwNDQyMiwgMTA0NDI2LCAxMDQ0MzAsIDEwNDQzNCwgMTA0NDM4LCAxMDQ0NDIsIDEwNDQ0NiwgCi0gICAgMTA0NDUwLCAxMDQ0NTQsIDEwNDQ1OCwgMTA0NDYyLCAxMDQ0NjYsIDEwNDQ3MCwgMTA0NDc0LCAxMDQ0NzgsIDEwNDQ4MiwgCi0gICAgMTA0NDg2LCAxMDQ0OTAsIDEwNDQ5NCwgMTA0NDk4LCAxMDQ1MDIsIDEwNDUwNiwgMTA0NTEwLCAxMDQ1MTQsIDEwNDUxOCwgCi0gICAgMTA0NTIyLCAxMDQ1MjYsIDEwNDUzMCwgMTA0NTM0LCAxMDQ1MzgsIDEwNDU0MiwgMTA0NTQ2LCAxMDQ1NTAsIDEwNDU1NCwgCi0gICAgMTA0NTU4LCAxMDQ1NjIsIDEwNDU2NiwgMTA0NTcwLCAxMDQ1NzQsIDEwNDU3OCwgMTA0NTgyLCAxMDQ1ODYsIDEwNDU5MCwgCi0gICAgMTA0NTk0LCAxMDQ1OTgsIDEwNDYwMiwgMTA0NjA2LCAxMDQ2MTAsIDEwNDYxNCwgMTA0NjE4LCAxMDQ2MjIsIDEwNDYyNiwgCi0gICAgMTA0NjMwLCAxMDQ2MzQsIDEwNDYzOCwgMTA0NjQyLCAxMDQ2NDYsIDEwNDY1MCwgMTA0NjU0LCAxMDQ2NTgsIDEwNDY2MiwgCi0gICAgMTA0NjY2LCAxMDQ2NzAsIDEwNDY3NCwgMTA0Njc4LCAxMDQ2ODIsIDEwNDY4NiwgMTA0NjkwLCAxMDQ2OTQsIDEwNDY5OCwgCi0gICAgMTA0NzAyLCAxMDQ3MDYsIDEwNDcxMCwgMTA0NzE0LCAxMDQ3MTgsIDEwNDcyMiwgMTA0NzI2LCAxMDQ3MzAsIDEwNDczNCwgCi0gICAgMTA0NzM4LCAxMDQ3NDIsIDEwNDc0NiwgMTA0NzUwLCAxMDQ3NTQsIDEwNDc1OCwgMTA0NzYyLCAxMDQ3NjYsIDEwNDc3MCwgCi0gICAgMTA0Nzc0LCAxMDQ3NzgsIDEwNDc4MiwgMTA0Nzg2LCAxMDQ3OTAsIDEwNDc5NCwgMTA0Nzk4LCAxMDQ4MDIsIDEwNDgwNiwgCi0gICAgMTA0ODEwLCAxMDQ4MTQsIDEwNDgxOCwgMTA0ODIyLCAxMDQ4MjYsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIDEwNDg0MiwgCi0gICAgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1NCwgMTA0ODU4LCAxMDQ4NjIsIDEwNDg2NiwgMTA0ODcwLCAxMDQ4NzQsIDEwNDg3OCwgCi0gICAgMTA0ODgyLCAxMDQ4ODYsIDEwNDg5MCwgMTA0ODk0LCAxMDQ4OTgsIDEwNDkwMiwgMTA0OTA2LCAxMDQ5MTAsIDEwNDkxNCwgCi0gICAgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIDEwNDk1MCwgCi0gICAgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODIsIDEwNDk4NiwgCi0gICAgMTA0OTkwLCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAyLCAxMDUwMDYsIDEwNTAxMCwgMTA1MDE0LCAxMDUwMTgsIDEwNTAyMiwgCi0gICAgMTA1MDI2LCAxMDUwMzAsIDEwNTAzNCwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NiwgMTA1MDUwLCAxMDUwNTQsIDEwNTA1OCwgCi0gICAgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MCwgMTA1MDc0LCAxMDUwNzgsIDEwNTA4MiwgMTA1MDg2LCAxMDUwOTAsIDEwNTA5NCwgCi0gICAgMTA1MDk4LCAxMDUxMDIsIDEwNTEwNiwgMTA1MTEwLCAxMDUxMTQsIDEwNTExOCwgMTA1MTIyLCAxMDUxMjYsIDEwNTEzMCwgCi0gICAgMTA1MTM0LCAxMDUxMzgsIDEwNTE0MiwgMTA1MTQ2LCAxMDUxNTAsIDEwNTE1NCwgMTA1MTU4LCAxMDUxNjIsIDEwNTE2NiwgCi0gICAgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIDEwNTIwMiwgCi0gICAgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNiwgMTA1MjMwLCAxMDUyMzQsIDEwNTIzOCwgCi0gICAgMTA1MjQyLCAxMDUyNDYsIDEwNTI1MCwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MiwgMTA1MjY2LCAxMDUyNzAsIDEwNTI3NCwgCi0gICAgMTA1Mjc4LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAyLCAxMDUzMDYsIDEwNTMxMCwgCi0gICAgMTA1MzE0LCAxMDUzMTgsIDEwNTMyMiwgMTA1MzI2LCAxMDUzMzAsIDEwNTMzNCwgMTA1MzM4LCAxMDUzNDIsIDEwNTM0NiwgCi0gICAgMTA1MzUwLCAxMDUzNTQsIDEwNTM1OCwgMTA1MzYyLCAxMDUzNjYsIDEwNTM3MCwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MiwgCi0gICAgMTA1Mzg2LCAxMDUzOTAsIDEwNTM5NCwgMTA1Mzk4LCAxMDU0MDIsIDEwNTQwNiwgMTA1NDEwLCAxMDU0MTQsIDEwNTQxOCwgCi0gICAgMTA1NDIyLCAxMDU0MjYsIDEwNTQzMCwgMTA1NDM0LCAxMDU0MzgsIDEwNTQ0MiwgMTA1NDQ2LCAxMDU0NTAsIDEwNTQ1NCwgCi0gICAgMTA1NDU4LCAxMDU0NjIsIDEwNTQ2NiwgMTA1NDcwLCAxMDU0NzQsIDEwNTQ3OCwgMTA1NDgyLCAxMDU0ODYsIDEwNTQ5MCwgCi0gICAgMTA1NDk0LCAxMDU0OTgsIDEwNTUwMiwgMTA1NTA2LCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE4LCAxMDU1MjIsIDEwNTUyNiwgCi0gICAgMTA1NTMwLCAxMDU1MzQsIDEwNTUzOCwgMTA1NTQyLCAxMDU1NDYsIDEwNTU1MCwgMTA1NTU0LCAxMDU1NTgsIDEwNTU2MiwgCi0gICAgMTA1NTY2LCAxMDU1NzAsIDEwNTU3NCwgMTA1NTc4LCAxMDU1ODIsIDEwNTU4NiwgMTA1NTkwLCAxMDU1OTQsIDEwNTU5OCwgCi0gICAgMTA1NjAyLCAxMDU2MDYsIDEwNTYxMCwgMTA1NjE0LCAxMDU2MTgsIDEwNTYyMiwgMTA1NjI2LCAxMDU2MzAsIDEwNTYzNCwgCi0gICAgMTA1NjM4LCAxMDU2NDIsIDEwNTY0NiwgMTA1NjUwLCAxMDU2NTQsIDEwNTY1OCwgMTA1NjYyLCAxMDU2NjYsIDEwNTY3MCwgCi0gICAgMTA1Njc0LCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTAsIDEwNTY5NCwgMTA1Njk4LCAxMDU3MDIsIDEwNTcwNiwgCi0gICAgMTA1NzEwLCAxMDU3MTQsIDEwNTcxOCwgMTA1NzIyLCAxMDU3MjYsIDEwNTczMCwgMTA1NzM0LCAxMDU3MzgsIDEwNTc0MiwgCi0gICAgMTA1NzQ2LCAxMDU3NTAsIDEwNTc1NCwgMTA1NzU4LCAxMDU3NjIsIDEwNTc2NiwgMTA1NzcwLCAxMDU3NzQsIDEwNTc3OCwgCi0gICAgMTA1NzgyLCAxMDU3ODYsIDEwNTc5MCwgMTA1Nzk0LCAxMDU3OTgsIDEwNTgwMiwgMTA1ODA2LCAxMDU4MTAsIDEwNTgxNCwgCi0gICAgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzQsIDEwNTgzOCwgMTA1ODQyLCAxMDU4NDYsIDEwNTg1MCwgCi0gICAgMTA1ODU0LCAxMDU4NTgsIDEwNTg2MiwgMTA1ODY2LCAxMDU4NzAsIDEwNTg3NCwgMTA1ODc4LCAxMDU4ODIsIDEwNTg4NiwgCi0gICAgMTA1ODkwLCAxMDU4OTQsIDEwNTg5OCwgMTA1OTAyLCAxMDU5MDYsIDEwNTkxMCwgMTA1OTE0LCAxMDU5MTgsIDEwNTkyMiwgCi0gICAgMTA1OTI2LCAxMDU5MzAsIDEwNTkzNCwgMTA1OTM4LCAxMDU5NDIsIDEwNTk0NiwgMTA1OTUwLCAxMDU5NTQsIDEwNTk1OCwgCi0gICAgMTA1OTYyLCAxMDU5NjYsIDEwNTk3MCwgMTA1OTc0LCAxMDU5NzgsIDEwNTk4MiwgMTA1OTg2LCAxMDU5OTAsIDEwNTk5NCwgCi0gICAgMTA1OTk4LCAxMDYwMDIsIDEwNjAwNiwgMTA2MDEwLCAxMDYwMTQsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjYsIDEwNjAzMCwgCi0gICAgMTA2MDM0LCAxMDYwMzgsIDEwNjA0MiwgMTA2MDQ2LCAxMDYwNTAsIDEwNjA1NCwgMTA2MDU4LCAxMDYwNjIsIDEwNjA2NiwgCi0gICAgMTA2MDcwLCAxMDYwNzQsIDEwNjA3OCwgMTA2MDgyLCAxMDYwODYsIDEwNjA5MCwgMTA2MDk0LCAxMDYwOTgsIDEwNjEwMiwgCi0gICAgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNiwgMTA2MTMwLCAxMDYxMzQsIDEwNjEzOCwgCi0gICAgMTA2MTQyLCAxMDYxNDYsIDEwNjE1MCwgMTA2MTU0LCAxMDYxNTgsIDEwNjE2MiwgMTA2MTY2LCAxMDYxNzAsIDEwNjE3NCwgCi0gICAgMTA2MTc4LCAxMDYxODIsIDEwNjE4NiwgMTA2MTkwLCAxMDYxOTQsIDEwNjE5OCwgMTA2MjAyLCAxMDYyMDYsIDEwNjIxMCwgCi0gICAgMTA2MjE0LCAxMDYyMTgsIDEwNjIyMiwgMTA2MjI2LCAxMDYyMzAsIDEwNjIzNCwgMTA2MjM4LCAxMDYyNDIsIDEwNjI0NiwgCi0gICAgMTA2MjUwLCAxMDYyNTQsIDEwNjI1OCwgMTA2MjYyLCAxMDYyNjYsIDEwNjI3MCwgMTA2Mjc0LCAxMDYyNzgsIDEwNjI4MiwgCi0gICAgMTA2Mjg2LCAxMDYyOTAsIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTQsIDEwNjMxOCwgCi0gICAgMTA2MzIyLCAxMDYzMjYsIDEwNjMzMCwgMTA2MzM0LCAxMDYzMzgsIDEwNjM0MiwgMTA2MzQ2LCAxMDYzNTAsIDEwNjM1NCwgCi0gICAgMTA2MzU4LCAxMDYzNjIsIDEwNjM2NiwgMTA2MzcwLCAxMDYzNzQsIDEwNjM3OCwgMTA2MzgyLCAxMDYzODYsIDEwNjM5MCwgCi0gICAgMTA2Mzk0LCAxMDYzOTgsIDEwNjQwMiwgMTA2NDA2LCAxMDY0MTAsIDEwNjQxNCwgMTA2NDE4LCAxMDY0MjIsIDEwNjQyNiwgCi0gICAgMTA2NDMwLCAxMDY0MzQsIDEwNjQzOCwgMTA2NDQyLCAxMDY0NDYsIDEwNjQ1MCwgMTA2NDU0LCAxMDY0NTgsIDEwNjQ2MiwgCi0gICAgMTA2NDY2LCAxMDY0NzAsIDEwNjQ3NCwgMTA2NDc4LCAxMDY0ODIsIDEwNjQ4NiwgMTA2NDkwLCAxMDY0OTQsIDEwNjQ5OCwgCi0gICAgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMCwgMTA2NTE0LCAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIDEwNjUzNCwgCi0gICAgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NiwgMTA2NTUwLCAxMDY1NTQsIDEwNjU1OCwgMTA2NTYyLCAxMDY1NjYsIDEwNjU3MCwgCi0gICAgMTA2NTc0LCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg2LCAxMDY1OTAsIDEwNjU5NCwgMTA2NTk4LCAxMDY2MDIsIDEwNjYwNiwgCi0gICAgMTA2NjEwLCAxMDY2MTQsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYzMCwgMTA2NjM0LCAxMDY2MzgsIDEwNjY0MiwgCi0gICAgMTA2NjQ2LCAxMDY2NTAsIDEwNjY1NCwgMTA2NjU4LCAxMDY2NjIsIDEwNjY2NiwgMTA2NjcwLCAxMDY2NzQsIDEwNjY3OCwgCi0gICAgMTA2NjgyLCAxMDY2ODYsIDEwNjY5MCwgMTA2Njk0LCAxMDY2OTgsIDEwNjcwMiwgMTA2NzA2LCAxMDY3MTAsIDEwNjcxNCwgCi0gICAgMTA2NzE4LCAxMDY3MjIsIDEwNjcyNiwgMTA2NzMwLCAxMDY3MzQsIDEwNjczOCwgMTA2NzQyLCAxMDY3NDYsIDEwNjc1MCwgCi0gICAgMTA2NzU0LCAxMDY3NTgsIDEwNjc2MiwgMTA2NzY2LCAxMDY3NzAsIDEwNjc3NCwgMTA2Nzc4LCAxMDY3ODIsIDEwNjc4NiwgCi0gICAgMTA2NzkwLCAxMDY3OTQsIDEwNjc5OCwgMTA2ODAyLCAxMDY4MDYsIDEwNjgxMCwgMTA2ODE0LCAxMDY4MTgsIDEwNjgyMiwgCi0gICAgMTA2ODI2LCAxMDY4MzAsIDEwNjgzNCwgMTA2ODM4LCAxMDY4NDIsIDEwNjg0NiwgMTA2ODUwLCAxMDY4NTQsIDEwNjg1OCwgCi0gICAgMTA2ODYyLCAxMDY4NjYsIDEwNjg3MCwgMTA2ODc0LCAxMDY4NzgsIDEwNjg4MiwgMTA2ODg2LCAxMDY4OTAsIDEwNjg5NCwgCi0gICAgMTA2ODk4LCAxMDY5MDIsIDEwNjkwNiwgMTA2OTEwLCAxMDY5MTQsIDEwNjkxOCwgMTA2OTIyLCAxMDY5MjYsIDEwNjkzMCwgCi0gICAgMTA2OTM0LCAxMDY5MzgsIDEwNjk0MiwgMTA2OTQ2LCAxMDY5NTAsIDEwNjk1NCwgMTA2OTU4LCAxMDY5NjIsIDEwNjk2NiwgCi0gICAgMTA2OTcwLCAxMDY5NzQsIDEwNjk3OCwgMTA2OTgyLCAxMDY5ODYsIDEwNjk5MCwgMTA2OTk0LCAxMDY5OTgsIDEwNzAwMiwgCi0gICAgMTA3MDA2LCAxMDcwMTAsIDEwNzAxNCwgMTA3MDE4LCAxMDcwMjIsIDEwNzAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA3MDMwLCAxMDcwMzcsIDEwNzA0NCwgMTA3MDUzLCAxMDcwNjIsIDEwNzA2OSwgMTA3MDc0LCAxMDcwODEsIAotICAgIDEwNzA4OCwgMTA3MDk3LCAxMDcxMDgsIDEwNzExOSwgMTA3MTI0LCAxMDcxMzEsIDEwNzEzNiwgMTA3MTQxLCAxMDcxNDYsIAotICAgIDEwNzE1MSwgMTA3MTU2LCAxMDcxNjEsIDEwNzE2NiwgMTA3MTcxLCAxMDcxNzYsIDEwNzE4MSwgMTA3MTg2LCAxMDcxOTMsIAotICAgIDEwNzIwMCwgMTA3MjA1LCAxMDcyMTAsIDEwNzIxNSwgMTA3MjIwLCAxMDcyMjcsIDEwNzIzNCwgMTA3MjQyLCAxMDcyNDcsIAotICAgIDEwNzI1NCwgMTA3MjU5LCAxMDcyNjQsIDEwNzI2OSwgMTA3Mjc0LCAxMDcyNzksIDEwNzI4NiwgMTA3MjkzLCAxMDcyOTgsIAotICAgIDEwNzMwMywgMTA3MzA4LCAxMDczMTMsIDEwNzMxOCwgMTA3MzIzLCAxMDczMjgsIDEwNzMzMywgMTA3MzM4LCAxMDczNDMsIAotICAgIDEwNzM0OCwgMTA3MzUzLCAxMDczNTgsIDEwNzM2MywgMTA3MzY4LCAxMDczNzMsIDEwNzM3OCwgMTA3MzgzLCAxMDczODgsIAotICAgIDEwNzM5NSwgMTA3NDAwLCAxMDc0MDUsIDEwNzQxNCwgMTA3NDIxLCAxMDc0MjYsIDEwNzQzMSwgMTA3NDM2LCAxMDc0NDEsIAotICAgIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY2LCAxMDc0NzEsIDEwNzQ3NiwgMTA3NDgxLCAxMDc0ODYsIAotICAgIDEwNzQ5MSwgMTA3NDk2LCAxMDc1MDEsIDEwNzUwNiwgMTA3NTExLCAxMDc1MTYsIDEwNzUyMSwgMTA3NTI2LCAxMDc1MzIsIAotICAgIDEwNzU0MCwgMTA3NTQ2LCAxMDc1NTQsIDEwNzU2MiwgMTA3NTcwLCAxMDc1NzYsIDEwNzU4MiwgMTA3NTg4LCAxMDc1OTQsIAotICAgIDEwNzYwMCwgMTA3NjA4LCAxMDc2MTgsIDEwNzYyNiwgMTA3NjM0LCAxMDc2NDAsIDEwNzY0NiwgMTA3NjU0LCAxMDc2NjIsIAotICAgIDEwNzY2OCwgMTA3Njc2LCAxMDc2ODQsIDEwNzY5MiwgMTA3Njk4LCAxMDc3MDQsIDEwNzcxMCwgMTA3NzE2LCAxMDc3MjIsIAotICAgIDEwNzcyOCwgMTA3NzM2LCAxMDc3NDQsIDEwNzc1MCwgMTA3NzU2LCAxMDc3NjIsIDEwNzc2OCwgMTA3Nzc0LCAxMDc3ODIsIAotICAgIDEwNzc4OCwgMTA3Nzk0LCAxMDc4MDAsIDEwNzgwNiwgMTA3ODEyLCAxMDc4MTgsIDEwNzgyNiwgMTA3ODMyLCAxMDc4MzgsIAotICAgIDEwNzg0NCwgMTA3ODUwLCAxMDc4NTgsIDEwNzg2NiwgMTA3ODcyLCAxMDc4NzgsIDEwNzg4NCwgMTA3ODg5LCAxMDc4OTUsIAotICAgIDEwNzkwMSwgMTA3OTA4LCAxMDc5MTMsIDEwNzkxOCwgMTA3OTIzLCAxMDc5MjgsIDEwNzkzMywgMTA3OTM4LCAxMDc5NDMsIAotICAgIDEwNzk0OCwgMTA3OTUzLCAxMDc5NjIsIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTkxLCAxMDc5OTYsIAotICAgIDEwODAwMSwgMTA4MDA2LCAxMDgwMTMsIDEwODAxOCwgMTA4MDIzLCAxMDgwMjgsIDEwODAzMywgMTA4MDM4LCAxMDgwNDMsIAotICAgIDEwODA0OCwgMTA4MDUzLCAxMDgwNTgsIDEwODA2MywgMTA4MDY4LCAxMDgwNzUsIDEwODA4MCwgMTA4MDg3LCAxMDgwOTIsIAotICAgIDEwODA5NywgMTA4MTA0LCAxMDgxMDksIDEwODExNCwgMTA4MTE5LCAxMDgxMjQsIDEwODEyOSwgMTA4MTM0LCAxMDgxMzksIAotICAgIDEwODE0NCwgMTA4MTQ5LCAxMDgxNTQsIDEwODE1OSwgMTA4MTY0LCAxMDgxNjksIDEwODE3NCwgMTA4MTc5LCAxMDgxODQsIAotICAgIDEwODE4OSwgMTA4MTk0LCAxMDgxOTksIDEwODIwNiwgMTA4MjExLCAxMDgyMTYsIDEwODIyMSwgMTA4MjI2LCAxMDgyMzEsIAotICAgIDEwODIzNiwgMTA4MjQxLCAxMDgyNDYsIDEwODI1MSwgMTA4MjU2LCAxMDgyNjEsIDEwODI2NiwgMTA4MjcxLCAxMDgyNzgsIAotICAgIDEwODI4MywgMTA4Mjg4LCAxMDgyOTUsIDEwODMwMCwgMTA4MzA1LCAxMDgzMTAsIDEwODMxNSwgMTA4MzIwLCAxMDgzMjUsIAotICAgIDEwODMzMCwgMTA4MzM1LCAxMDgzNDAsIDEwODM0NSwgMTA4MzUyLCAxMDgzNTcsIDEwODM2MiwgMTA4MzY3LCAxMDgzNzIsIAotICAgIDEwODM3NywgMTA4Mzg0LCAxMDgzOTEsIDEwODM5NiwgMTA4NDAxLCAxMDg0MDYsIDEwODQxMSwgMTA4NDE2LCAxMDg0MjEsIAotICAgIDEwODQyNiwgMTA4NDMxLCAxMDg0MzYsIDEwODQ0MSwgMTA4NDQ2LCAxMDg0NTEsIDEwODQ1NiwgMTA4NDYxLCAxMDg0NjYsIAotICAgIDEwODQ3MSwgMTA4NDc2LCAxMDg0ODEsIDEwODQ4NiwgMTA4NDkxLCAxMDg0OTYsIDEwODUwMSwgMTA4NTA2LCAxMDg1MTEsIAotICAgIDEwODUxNiwgMTA4NTIxLCAxMDg1MjYsIDEwODUzMSwgMTA4NTM2LCAxMDg1NDEsIDEwODU0NiwgMTA4NTUxLCAxMDg1NTYsIAotICAgIDEwODU2MSwgMTA4NTY2LCAxMDg1NzEsIDEwODU3OCwgMTA4NTgzLCAxMDg1ODgsIDEwODU5MywgMTA4NTk4LCAxMDg2MDMsIAotICAgIDEwODYwOCwgMTA4NjEzLCAxMDg2MTgsIDEwODYyMywgMTA4NjI4LCAxMDg2MzMsIDEwODYzOCwgMTA4NjQzLCAxMDg2NDgsIAotICAgIDEwODY1MywgMTA4NjU4LCAxMDg2NjMsIDEwODY2OCwgMTA4NjczLCAxMDg2NzgsIDEwODY4MywgMTA4Njg4LCAxMDg2OTMsIAotICAgIDEwODY5OCwgMTA4NzAzLCAxMDg3MDgsIDEwODcxMywgMTA4NzE4LCAxMDg3MjMsIDEwODcyOCwgMTA4NzMzLCAxMDg3MzgsIAotICAgIDEwODc0MywgMTA4NzQ4LCAxMDg3NTMsIDEwODc1OCwgMTA4NzYzLCAxMDg3NjgsIDEwODc3MywgMTA4Nzc4LCAxMDg3ODMsIAotICAgIDEwODc4OCwgMTA4NzkzLCAxMDg3OTgsIDEwODgwMywgMTA4ODA4LCAxMDg4MTMsIDEwODgxOCwgMTA4ODIzLCAxMDg4MjgsIAotICAgIDEwODgzMywgMTA4ODM4LCAxMDg4NDMsIDEwODg0OCwgMTA4ODUzLCAxMDg4NTgsIDEwODg2MywgMTA4ODY4LCAxMDg4NzUsIAotICAgIDEwODg4MCwgMTA4ODg1LCAxMDg4OTAsIDEwODg5NSwgMTA4OTAwLCAxMDg5MDUsIDEwODkwOSwgMTA4OTE0LCAxMDg5MTksIAotICAgIDEwODkyNCwgMTA4OTI5LCAxMDg5MzQsIDEwODkzOSwgMTA4OTQ0LCAxMDg5NDksIDEwODk1NCwgMTA4OTU5LCAxMDg5NjQsIAotICAgIDEwODk2OSwgMTA4OTc0LCAxMDg5NzksIDEwODk4NiwgMTA4OTkxLCAxMDg5OTYsIDEwOTAwMiwgMTA5MDA3LCAxMDkwMTIsIAotICAgIDEwOTAxNywgMTA5MDIyLCAxMDkwMjcsIDEwOTAzMiwgMTA5MDM3LCAxMDkwNDIsIDEwOTA0NywgMTA5MDUyLCAxMDkwNTcsIAotICAgIDEwOTA2MiwgMTA5MDY3LCAxMDkwNzIsIDEwOTA3NywgMTA5MDgyLCAxMDkwODcsIDEwOTA5MiwgMTA5MDk3LCAxMDkxMDIsIAotICAgIDEwOTEwNywgMTA5MTEyLCAxMDkxMTcsIDEwOTEyMiwgMTA5MTI3LCAxMDkxMzIsIDEwOTEzNywgMTA5MTQyLCAxMDkxNDcsIAotICAgIDEwOTE1MiwgMTA5MTU3LCAxMDkxNjIsIDEwOTE2NywgMTA5MTcyLCAxMDkxNzcsIDEwOTE4MiwgMTA5MTg3LCAxMDkxOTIsIAotICAgIDEwOTE5NywgMTA5MjAyLCAxMDkyMDcsIDEwOTIxMiwgMTA5MjE3LCAxMDkyMjQsIDEwOTIyOSwgMTA5MjM0LCAxMDkyNDEsIAotICAgIDEwOTI0OCwgMTA5MjUzLCAxMDkyNTgsIDEwOTI2MywgMTA5MjY4LCAxMDkyNzMsIDEwOTI3OCwgMTA5MjgzLCAxMDkyODgsIAotICAgIDEwOTI5MywgMTA5Mjk4LCAxMDkzMDMsIDEwOTMwOCwgMTA5MzEzLCAxMDkzMTgsIDEwOTMyMywgMTA5MzI4LCAxMDkzMzMsIAotICAgIDEwOTMzOCwgMTA5MzQzLCAxMDkzNDgsIDEwOTM1MywgMTA5MzU4LCAxMDkzNjMsIDEwOTM2OCwgMTA5MzczLCAxMDkzODAsIAotICAgIDEwOTM4NSwgMTA5MzkwLCAxMDkzOTUsIDEwOTQwMCwgMTA5NDA1LCAxMDk0MTAsIDEwOTQxNSwgMTA5NDIwLCAxMDk0MjUsIAotICAgIDEwOTQzMCwgMTA5NDM1LCAxMDk0NDAsIDEwOTQ0NSwgMTA5NDUwLCAxMDk0NTUsIDEwOTQ2MCwgMTA5NDY1LCAxMDk0NzAsIAotICAgIDEwOTQ3NywgMTA5NDgyLCAxMDk0ODcsIDEwOTQ5MiwgMTA5NDk3LCAxMDk1MDIsIDEwOTUwNywgMTA5NTEyLCAxMDk1MTgsIAotICAgIDEwOTUyMywgMTA5NTI4LCAxMDk1MzMsIDEwOTUzOCwgMTA5NTQzLCAxMDk1NDgsIDEwOTU1MywgMTA5NTU4LCAxMDk1NjUsIAotICAgIDEwOTU3MiwgMTA5NTc3LCAxMDk1ODIsIDEwOTU4NiwgMTA5NTkxLCAxMDk1OTUsIDEwOTU5OSwgMTA5NjA0LCAxMDk2MTEsIAotICAgIDEwOTYxNiwgMTA5NjIxLCAxMDk2MzAsIDEwOTYzNSwgMTA5NjQwLCAxMDk2NDUsIDEwOTY1MCwgMTA5NjU3LCAxMDk2NjQsIAotICAgIDEwOTY2OSwgMTA5Njc0LCAxMDk2NzksIDEwOTY4NCwgMTA5NjkxLCAxMDk2OTYsIDEwOTcwMSwgMTA5NzA2LCAxMDk3MTEsIAotICAgIDEwOTcxNiwgMTA5NzIxLCAxMDk3MjYsIDEwOTczMSwgMTA5NzM2LCAxMDk3NDEsIDEwOTc0NiwgMTA5NzUxLCAxMDk3NTgsIAotICAgIDEwOTc2MiwgMTA5NzY3LCAxMDk3NzIsIDEwOTc3NywgMTA5NzgyLCAxMDk3ODYsIDEwOTc5MSwgMTA5Nzk2LCAxMDk4MDEsIAotICAgIDEwOTgwNiwgMTA5ODExLCAxMDk4MTYsIDEwOTgyMSwgMTA5ODI2LCAxMDk4MzEsIDEwOTgzNywgMTA5ODQzLCAxMDk4NDksIAotICAgIDEwOTg1NSwgMTA5ODYxLCAxMDk4NjcsIDEwOTg3MywgMTA5ODc5LCAxMDk4ODUsIDEwOTg5MSwgMTA5ODk3LCAxMDk5MDMsIAotICAgIDEwOTkwOCwgMTA5OTE0LCAxMDk5MjAsIDEwOTkyNiwgMTA5OTMyLCAxMDk5MzgsIDEwOTk0NCwgMTA5OTUwLCAxMDk5NTYsIAotICAgIDEwOTk2MiwgMTA5OTY4LCAxMDk5NzQsIDEwOTk3OSwgMTA5OTg1LCAxMDk5OTEsIDEwOTk5NywgMTEwMDAzLCAxMTAwMDksIAotICAgIDExMDAxNSwgMTEwMDIxLCAxMTAwMjcsIDExMDAzMywgMTEwMDM5LCAxMTAwNDUsIDExMDA1MSwgMTEwMDU3LCAxMTAwNjMsIAotICAgIDExMDA2OSwgMTEwMDc1LCAxMTAwODEsIDExMDA4NywgMTEwMDkzLCAxMTAwOTksIDExMDEwNCwgMTEwMTEwLCAxMTAxMTYsIAotICAgIDExMDEyMiwgMTEwMTI4LCAxMTAxMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDE0MCwgMTEwMTQzLCAxMTAxNDcsIDExMDE1MSwgMTEwMTU1LCAxMTAxNTgsIAotICAgIDExMDE2MiwgMTEwMTY3LCAxMTAxNzEsIDExMDE3NSwgMTEwMTc5LCAxMTAxODMsIDExMDE4NywgMTEwMTkyLCAxMTAxOTcsIAotICAgIDExMDIwMSwgMTEwMjA1LCAxMTAyMDgsIDExMDIxMiwgMTEwMjE3LCAxMTAyMjIsIDExMDIyNiwgMTEwMjMwLCAxMTAyMzQsIAotICAgIDExMDIzOCwgMTEwMjQyLCAxMTAyNDYsIDExMDI1MCwgMTEwMjU0LCAxMTAyNTgsIDExMDI2MiwgMTEwMjY1LCAxMTAyNjksIAotICAgIDExMDI3MywgMTEwMjc3LCAxMTAyODEsIDExMDI4NSwgMTEwMjg5LCAxMTAyOTUsIDExMDI5OCwgMTEwMzAyLCAxMTAzMDYsIAotICAgIDExMDMxMCwgMTEwMzE0LCAxMTAzMTgsIDExMDMyMiwgMTEwMzI2LCAxMTAzMzAsIDExMDMzNCwgMTEwMzM5LCAxMTAzNDQsIAotICAgIDExMDM1MCwgMTEwMzU0LCAxMTAzNTgsIDExMDM2MiwgMTEwMzY2LCAxMTAzNzAsIDExMDM3NCwgMTEwMzc5LCAxMTAzODIsIAotICAgIDExMDM4NiwgMTEwMzkwLCAxMTAzOTQsIDExMDM5OCwgMTEwNDA0LCAxMTA0MDgsIDExMDQxMiwgMTEwNDE2LCAxMTA0MjAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDQyNCwgMTEwNDI4LCAxMTA0MzIsIDExMDQzOCwgMTEwNDQ0LCAKLSAgICAxMTA0NDgsIDExMDQ1MywgMTEwNDU4LCAxMTA0NjMsIDExMDQ2OCwgMTEwNDcyLCAxMTA0NzcsIDExMDQ4MiwgMTEwNDg3LCAKLSAgICAxMTA0OTEsIDExMDQ5NiwgMTEwNTAxLCAxMTA1MDYsIDExMDUxMCwgMTEwNTE1LCAxMTA1MjAsIDExMDUyNSwgMTEwNTMwLCAKLSAgICAxMTA1MzUsIDExMDU0MCwgMTEwNTQ1LCAxMTA1NTAsIDExMDU1NCwgMTEwNTU5LCAxMTA1NjQsIDExMDU2OSwgMTEwNTc0LCAKLSAgICAxMTA1NzksIDExMDU4NCwgMTEwNTg5LCAxMTA1OTQsIDExMDU5OSwgMTEwNjA0LCAxMTA2MDksIDExMDYxNiwgMTEwNjIxLCAKLSAgICAxMTA2MjgsIDExMDYzMywgMTEwNjM4LCAxMTA2NDMsIDExMDY0OCwgMTEwNjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2NTgsIDExMDY2MiwgMTEwNjY4LCAxMTA2NzEsIDExMDY3NCwgMTEwNjc4LCAKLSAgICAxMTA2ODIsIDExMDY4NiwgMTEwNjkwLCAxMTA2OTQsIDExMDY5OCwgMTEwNzAyLCAxMTA3MDgsIDExMDcxNCwgMTEwNzIwLCAKLSAgICAxMTA3MjYsIDExMDczMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTEwNzM4LCAxMTA3NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDc0OSwgMTEwNzU0LCAxMTA3NTksIAotICAgIDExMDc2NCwgMTEwNzcxLCAxMTA3NzgsIDExMDc4NSwgMTEwNzkyLCAxMTA3OTcsIDExMDgwMiwgMTEwODA3LCAxMTA4MTIsIAotICAgIDExMDgxOSwgMTEwODI0LCAxMTA4MzEsIDExMDgzOCwgMTEwODQzLCAxMTA4NDgsIDExMDg1MywgMTEwODYwLCAxMTA4NjUsIAotICAgIDExMDg3MCwgMTEwODc3LCAxMTA4ODQsIDExMDg4OSwgMTEwODk0LCAxMTA4OTksIDExMDkwNiwgMTEwOTEzLCAxMTA5MjAsIAotICAgIDExMDkyNSwgMTEwOTMwLCAxMTA5MzcsIDExMDk0NCwgMTEwOTUxLCAxMTA5NTgsIDExMDk2MywgMTEwOTY4LCAxMTA5NzMsIAotICAgIDExMDk4MCwgMTEwOTg1LCAxMTA5OTAsIDExMDk5NSwgMTExMDAyLCAxMTEwMTEsIDExMTAxOCwgMTExMDIzLCAxMTEwMjgsIAotICAgIDExMTAzMywgMTExMDM4LCAxMTEwNDMsIDExMTA0OCwgMTExMDU3LCAxMTEwNjQsIDExMTA2OSwgMTExMDc2LCAxMTEwODMsIAotICAgIDExMTA4OCwgMTExMDkzLCAxMTEwOTgsIDExMTEwNSwgMTExMTEwLCAxMTExMTcsIDExMTEyNCwgMTExMTI5LCAxMTExMzQsIAotICAgIDExMTEzOSwgMTExMTQ2LCAxMTExNTMsIDExMTE1OCwgMTExMTYzLCAxMTExNzAsIDExMTE3NywgMTExMTg0LCAxMTExODksIAotICAgIDExMTE5NCwgMTExMTk5LCAxMTEyMDQsIDExMTIxMSwgMTExMjIwLCAxMTEyMjksIDExMTIzNCwgMTExMjQxLCAxMTEyNTAsIAotICAgIDExMTI1NSwgMTExMjYwLCAxMTEyNjUsIDExMTI3MCwgMTExMjc3LCAxMTEyODQsIDExMTI5MSwgMTExMjk4LCAxMTEzMDMsIAotICAgIDExMTMwOCwgMTExMzEzLCAxMTEzMjAsIDExMTMyNywgMTExMzM0LCAxMTEzMzksIDExMTM0NCwgMTExMzUxLCAxMTEzNTYsIAotICAgIDExMTM2MywgMTExMzY4LCAxMTEzNzUsIDExMTM4MCwgMTExMzg3LCAxMTEzOTQsIDExMTM5OSwgMTExNDA0LCAxMTE0MDksIAotICAgIDExMTQxNCwgMTExNDE5LCAxMTE0MjQsIDExMTQyOSwgMTExNDM0LCAxMTE0MzksIDExMTQ0NiwgMTExNDUzLCAxMTE0NjAsIAotICAgIDExMTQ2NywgMTExNDc0LCAxMTE0ODMsIDExMTQ4OCwgMTExNDkzLCAxMTE1MDAsIDExMTUwNywgMTExNTEyLCAxMTE1MTksIAotICAgIDExMTUyNiwgMTExNTMzLCAxMTE1NDAsIDExMTU0NywgMTExNTU0LCAxMTE1NTksIDExMTU2NCwgMTExNTY5LCAxMTE1NzQsIAotICAgIDExMTU3OSwgMTExNTg4LCAxMTE1OTcsIDExMTYwNiwgMTExNjE1LCAxMTE2MjQsIDExMTYzMywgMTExNjQyLCAxMTE2NTEsIAotICAgIDExMTY1NiwgMTExNjY3LCAxMTE2NzgsIDExMTY4NywgMTExNjkyLCAxMTE2OTcsIDExMTcwMiwgMTExNzA3LCAxMTE3MTYsIAotICAgIDExMTcyMywgMTExNzMwLCAxMTE3MzcsIDExMTc0NCwgMTExNzUxLCAxMTE3NTgsIDExMTc2NywgMTExNzc2LCAxMTE3ODcsIAotICAgIDExMTc5NiwgMTExODA3LCAxMTE4MTYsIDExMTgyMywgMTExODMyLCAxMTE4NDMsIDExMTg1MiwgMTExODYxLCAxMTE4NzAsIAotICAgIDExMTg3OSwgMTExODg2LCAxMTE4OTMsIDExMTkwMCwgMTExOTA5LCAxMTE5MTgsIDExMTkyOSwgMTExOTM4LCAxMTE5NDcsIAotICAgIDExMTk1OCwgMTExOTYzLCAxMTE5NjgsIDExMTk3OSwgMTExOTg3LCAxMTE5OTYsIDExMjAwNSwgMTEyMDE0LCAxMTIwMjUsIAotICAgIDExMjAzNCwgMTEyMDQzLCAxMTIwNTQsIDExMjA2NSwgMTEyMDc2LCAxMTIwODcsIDExMjA5OCwgMTEyMTA5LCAxMTIxMTYsIAotICAgIDExMjEyMywgMTEyMTMwLCAxMTIxMzcsIDExMjE0OCwgMTEyMTU3LCAxMTIxNjQsIDExMjE3MSwgMTEyMTc4LCAxMTIxODksIAotICAgIDExMjIwMCwgMTEyMjExLCAxMTIyMjIsIDExMjIzMywgMTEyMjQ0LCAxMTIyNTUsIDExMjI2NiwgMTEyMjczLCAxMTIyODAsIAotICAgIDExMjI4OSwgMTEyMjk4LCAxMTIzMDUsIDExMjMxMiwgMTEyMzE5LCAxMTIzMjgsIDExMjMzNywgMTEyMzQ2LCAxMTIzNTMsIAotICAgIDExMjM2MiwgMTEyMzcxLCAxMTIzODAsIDExMjM4NywgMTEyMzk0LCAxMTIzOTksIDExMjQwNSwgMTEyNDEyLCAxMTI0MTksIAotICAgIDExMjQyNiwgMTEyNDMzLCAxMTI0NDAsIDExMjQ0NywgMTEyNDU2LCAxMTI0NjUsIDExMjQ3NCwgMTEyNDgzLCAxMTI0OTAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjQ5OSwgMTEyNTA1LCAxMTI1MTAsIDExMjUxNSwgMTEyNTIyLCAKLSAgICAxMTI1MjgsIDExMjUzNCwgMTEyNTQwLCAxMTI1NDYsIDExMjU1MiwgMTEyNTU4LCAxMTI1NjQsIDExMjU2OCwgMTEyNTcyLCAKLSAgICAxMTI1NzgsIDExMjU4NCwgMTEyNTkwLCAxMTI1OTQsIDExMjU5OSwgMTEyNjA0LCAxMTI2MDgsIDExMjYxMiwgMTEyNjE1LCAKLSAgICAxMTI2MjEsIDExMjYyNywgMTEyNjMzLCAxMTI2MzksIDExMjY0NSwgMTEyNjUxLCAxMTI2NTcsIDExMjY2MywgMTEyNjY5LCAKLSAgICAxMTI2NzksIDExMjY4OSwgMTEyNjk1LCAxMTI3MDEsIDExMjcxMSwgMTEyNzIxLCAxMTI3MjcsIDAsIDAsIDExMjczMywgCi0gICAgMTEyNzQxLCAxMTI3NDYsIDExMjc1MSwgMTEyNzU3LCAxMTI3NjMsIDExMjc2OSwgMTEyNzc1LCAxMTI3ODEsIDExMjc4NywgCi0gICAgMTEyNzk0LCAxMTI4MDEsIDExMjgwNywgMTEyODEzLCAxMTI4MTksIDExMjgyNSwgMTEyODMxLCAxMTI4MzcsIDExMjg0MywgCi0gICAgMTEyODQ5LCAxMTI4NTQsIDExMjg2MCwgMTEyODY2LCAxMTI4NzIsIDExMjg3OCwgMTEyODg0LCAxMTI4OTMsIDExMjg5OSwgCi0gICAgMTEyOTA0LCAxMTI5MTIsIDExMjkxOSwgMTEyOTI2LCAxMTI5MzUsIDExMjk0NCwgMTEyOTUzLCAxMTI5NjIsIDExMjk3MSwgCi0gICAgMTEyOTgwLCAxMTI5ODksIDExMjk5OCwgMTEzMDA4LCAxMTMwMTgsIDExMzAyNiwgMTEzMDM0LCAxMTMwNDMsIDExMzA1MiwgCi0gICAgMTEzMDU4LCAxMTMwNjQsIDExMzA3MCwgMTEzMDc2LCAxMTMwODQsIDExMzA5MiwgMTEzMDk2LCAxMTMxMDIsIDExMzEwNywgCi0gICAgMTEzMTEzLCAxMTMxMTksIDExMzEyNSwgMTEzMTMxLCAxMTMxMzcsIDExMzE0NiwgMTEzMTUxLCAxMTMxNTgsIDExMzE2MywgCi0gICAgMTEzMTY4LCAxMTMxNzMsIDExMzE3OSwgMTEzMTg1LCAxMTMxOTEsIDExMzE5OCwgMTEzMjAzLCAxMTMyMDgsIDExMzIxMywgCi0gICAgMTEzMjE4LCAxMTMyMjMsIDExMzIyOSwgMTEzMjM1LCAxMTMyNDEsIDExMzI0NywgMTEzMjUzLCAxMTMyNTksIDExMzI2NSwgCi0gICAgMTEzMjcxLCAxMTMyNzYsIDExMzI4MSwgMTEzMjg2LCAxMTMyOTEsIDExMzI5NiwgMTEzMzAxLCAxMTMzMDYsIDExMzMxMSwgCi0gICAgMTEzMzE3LCAxMTMzMjMsIDExMzMyOCwgMTEzMzMzLCAxMTMzMzgsIDExMzM0MywgMTEzMzQ4LCAxMTMzNTQsIDExMzM2MSwgCi0gICAgMTEzMzY1LCAxMTMzNjksIDExMzM3MywgMTEzMzc3LCAxMTMzODEsIDExMzM4NSwgMTEzMzg5LCAxMTMzOTMsIDExMzQwMSwgCi0gICAgMTEzNDExLCAxMTM0MTUsIDExMzQxOSwgMTEzNDI1LCAxMTM0MzEsIDExMzQzNywgMTEzNDQzLCAxMTM0NDksIDExMzQ1NSwgCi0gICAgMTEzNDYxLCAxMTM0NjcsIDExMzQ3MywgMTEzNDc5LCAxMTM0ODUsIDExMzQ5MSwgMTEzNDk3LCAxMTM1MDMsIDExMzUwNywgCi0gICAgMTEzNTExLCAxMTM1MTgsIDExMzUyNCwgMTEzNTMwLCAxMTM1MzYsIDExMzU0MSwgMTEzNTQ4LCAxMTM1NTMsIDExMzU1OSwgCi0gICAgMTEzNTY1LCAxMTM1NzEsIDExMzU3NywgMTEzNTgyLCAxMTM1ODYsIDExMzU5MiwgMTEzNTk2LCAxMTM2MDAsIDExMzYwNCwgCi0gICAgMTEzNjEwLCAxMTM2MTYsIDExMzYyMCwgMTEzNjI2LCAxMTM2MzIsIDExMzYzOCwgMTEzNjQ0LCAxMTM2NTAsIDExMzY1OCwgCi0gICAgMTEzNjY2LCAxMTM2NzIsIDExMzY3OCwgMTEzNjg0LCAxMTM2OTAsIDExMzcwMiwgMTEzNzE0LCAxMTM3MjgsIDExMzc0MCwgCi0gICAgMTEzNzUyLCAxMTM3NjYsIDExMzc4MCwgMTEzNzk0LCAxMTM3OTgsIDExMzgwNiwgMTEzODE0LCAxMTM4MTksIDExMzgyMywgCi0gICAgMTEzODI3LCAxMTM4MzEsIDExMzgzNSwgMTEzODM5LCAxMTM4NDMsIDExMzg0NywgMTEzODUzLCAxMTM4NTksIDExMzg2NSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzODcxLCAxMTM4NzcsIDExMzg4MywgMTEzODg5LCAxMTM4OTUsIAotICAgIDExMzkwMSwgMTEzOTA3LCAxMTM5MTMsIDExMzkxOSwgMTEzOTI1LCAxMTM5MzEsIDExMzkzNywgMTEzOTQzLCAxMTM5NDksIAotICAgIDExMzk1NSwgMTEzOTYxLCAxMTM5NjcsIDExMzk3MywgMTEzOTc5LCAxMTM5ODUsIDExMzk5MSwgMTEzOTk3LCAxMTQwMDMsIAotICAgIDExNDAwOSwgMTE0MDE1LCAxMTQwMjEsIDExNDAyNywgMTE0MDMzLCAxMTQwMzksIDExNDA0NSwgMTE0MDUxLCAxMTQwNTcsIAotICAgIDExNDA2MywgMTE0MDY5LCAxMTQwNzUsIDExNDA4MSwgMTE0MDg3LCAxMTQwOTMsIDExNDA5OSwgMTE0MTA1LCAxMTQxMTEsIAotICAgIDExNDExNywgMTE0MTIzLCAxMTQxMjksIDExNDEzNSwgMTE0MTQxLCAxMTQxNDcsIDExNDE1MywgMTE0MTU5LCAxMTQxNjUsIAotICAgIDExNDE3MSwgMTE0MTc3LCAxMTQxODMsIDExNDE4OSwgMTE0MTk1LCAxMTQyMDEsIDExNDIwNywgMTE0MjEzLCAxMTQyMTksIAotICAgIDExNDIyNSwgMTE0MjMxLCAxMTQyMzcsIDExNDI0MywgMTE0MjQ5LCAxMTQyNTUsIDExNDI2MSwgMTE0MjY3LCAxMTQyNzIsIAotICAgIDExNDI3NywgMTE0MjgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQyODYsIDExNDI5MSwgMTE0Mjk4LCAKLSAgICAxMTQzMDUsIDExNDMxMiwgMTE0MzE5LCAxMTQzMjQsIDExNDMyOCwgMTE0MzM0LCAxMTQzMzgsIDExNDM0MiwgMTE0MzQ4LCAKLSAgICAxMTQzNTIsIDExNDM1NiwgMTE0MzYwLCAxMTQzNjYsIDExNDM3MywgMTE0Mzc3LCAxMTQzODEsIDExNDM4NSwgMTE0Mzg5LCAKLSAgICAxMTQzOTMsIDExNDM5NywgMTE0NDAzLCAxMTQ0MDcsIDExNDQxMSwgMTE0NDE1LCAxMTQ0MTksIDExNDQyMywgMTE0NDI3LCAKLSAgICAxMTQ0MzEsIDExNDQzNSwgMTE0NDM5LCAxMTQ0NDMsIDExNDQ0NywgMTE0NDUxLCAxMTQ0NTYsIDExNDQ2MCwgMTE0NDY0LCAKLSAgICAxMTQ0NjgsIDExNDQ3MiwgMTE0NDc2LCAxMTQ0ODAsIDExNDQ4NCwgMTE0NDg4LCAxMTQ0OTIsIDExNDQ5OSwgMTE0NTAzLCAKLSAgICAxMTQ1MTEsIDExNDUxNSwgMTE0NTE5LCAxMTQ1MjMsIDExNDUyNywgMTE0NTMxLCAxMTQ1MzUsIDExNDUzOSwgMTE0NTQ2LCAKLSAgICAxMTQ1NTAsIDExNDU1NCwgMTE0NTU4LCAxMTQ1NjIsIDExNDU2NiwgMTE0NTcyLCAxMTQ1NzYsIDExNDU4MiwgMTE0NTg2LCAKLSAgICAxMTQ1OTAsIDExNDU5NCwgMTE0NTk4LCAxMTQ2MDIsIDExNDYwNiwgMTE0NjEwLCAxMTQ2MTQsIDExNDYxOCwgMTE0NjIyLCAKLSAgICAxMTQ2MjYsIDExNDYzMCwgMTE0NjM0LCAxMTQ2MzgsIDExNDY0MiwgMTE0NjQ2LCAxMTQ2NTAsIDExNDY1NCwgMTE0NjU4LCAKLSAgICAxMTQ2NjYsIDExNDY3MCwgMTE0Njc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ2NzgsIDExNDY4NiwgCi0gICAgMTE0Njk0LCAxMTQ3MDIsIDExNDcxMCwgMTE0NzE4LCAxMTQ3MjYsIDExNDczNCwgMTE0NzQyLCAxMTQ3NTAsIDExNDc1OCwgCi0gICAgMTE0NzY2LCAxMTQ3NzQsIDExNDc4MiwgMTE0NzkwLCAxMTQ3OTgsIDExNDgwNiwgMTE0ODE0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ4MjIsIDExNDgyNiwgMTE0ODMxLCAxMTQ4MzYsIDExNDg0MSwgMTE0ODQ1LCAKLSAgICAxMTQ4NTAsIDExNDg1NSwgMTE0ODYwLCAxMTQ4NjQsIDExNDg2OSwgMTE0ODc0LCAxMTQ4NzgsIDExNDg4MiwgMTE0ODg3LCAKLSAgICAxMTQ4OTEsIDExNDg5NiwgMTE0OTAxLCAxMTQ5MDUsIDExNDkxMCwgMTE0OTE1LCAxMTQ5MTksIDExNDkyNCwgMTE0OTI5LCAKLSAgICAxMTQ5MzQsIDExNDkzOSwgMTE0OTQ0LCAxMTQ5NDgsIDExNDk1MywgMTE0OTU4LCAxMTQ5NjMsIDExNDk2NywgMTE0OTcyLCAKLSAgICAxMTQ5NzcsIDExNDk4MiwgMTE0OTg2LCAxMTQ5OTEsIDExNDk5NiwgMTE1MDAwLCAxMTUwMDQsIDExNTAwOSwgMTE1MDEzLCAKLSAgICAxMTUwMTgsIDExNTAyMywgMTE1MDI3LCAxMTUwMzIsIDExNTAzNywgMTE1MDQxLCAxMTUwNDYsIDExNTA1MSwgMTE1MDU2LCAKLSAgICAxMTUwNjEsIDExNTA2NiwgMTE1MDcwLCAxMTUwNzUsIDExNTA4MCwgMTE1MDg1LCAxMTUwODksIDExNTA5NCwgMTE1MDk5LCAKLSAgICAxMTUxMDQsIDExNTEwOCwgMTE1MTEzLCAxMTUxMTgsIDExNTEyMiwgMTE1MTI2LCAxMTUxMzEsIDExNTEzNSwgMTE1MTQwLCAKLSAgICAxMTUxNDUsIDExNTE0OSwgMTE1MTU0LCAxMTUxNTksIDExNTE2MywgMTE1MTY4LCAxMTUxNzMsIDExNTE3OCwgMTE1MTgzLCAKLSAgICAxMTUxODgsIDExNTE5MiwgMTE1MTk3LCAxMTUyMDIsIDExNTIwNywgMTE1MjExLCAxMTUyMTYsIDAsIDExNTIyMSwgCi0gICAgMTE1MjI1LCAxMTUyMzAsIDExNTIzNSwgMTE1MjM5LCAxMTUyNDMsIDExNTI0OCwgMTE1MjUyLCAxMTUyNTcsIDExNTI2MiwgCi0gICAgMTE1MjY2LCAxMTUyNzEsIDExNTI3NiwgMTE1MjgwLCAxMTUyODUsIDExNTI5MCwgMTE1Mjk1LCAxMTUzMDAsIDExNTMwNSwgCi0gICAgMTE1MzEwLCAxMTUzMTYsIDExNTMyMiwgMTE1MzI4LCAxMTUzMzMsIDExNTMzOSwgMTE1MzQ1LCAxMTUzNTEsIDExNTM1NiwgCi0gICAgMTE1MzYyLCAxMTUzNjgsIDExNTM3MywgMTE1Mzc4LCAxMTUzODQsIDExNTM4OSwgMTE1Mzk1LCAxMTU0MDEsIDExNTQwNiwgCi0gICAgMTE1NDEyLCAxMTU0MTgsIDExNTQyMywgMTE1NDI5LCAxMTU0MzUsIDExNTQ0MSwgMTE1NDQ3LCAxMTU0NTMsIDExNTQ1OCwgCi0gICAgMTE1NDY0LCAxMTU0NzAsIDExNTQ3NiwgMTE1NDgxLCAxMTU0ODcsIDExNTQ5MywgMTE1NDk5LCAxMTU1MDQsIDExNTUxMCwgCi0gICAgMTE1NTE2LCAxMTU1MjEsIDExNTUyNiwgMTE1NTMyLCAxMTU1MzcsIDExNTU0MywgMTE1NTQ5LCAxMTU1NTQsIDExNTU2MCwgCi0gICAgMTE1NTY2LCAxMTU1NzEsIDExNTU3NywgMTE1NTgzLCAxMTU1ODksIDExNTU5NSwgMTE1NjAxLCAwLCAxMTU2MDUsIAotICAgIDExNTYxMCwgMCwgMCwgMTE1NjE1LCAwLCAwLCAxMTU2MjAsIDExNTYyNSwgMCwgMCwgMTE1NjMwLCAxMTU2MzUsIDExNTYzOSwgCi0gICAgMTE1NjQ0LCAwLCAxMTU2NDksIDExNTY1NCwgMTE1NjU5LCAxMTU2NjMsIDExNTY2OCwgMTE1NjczLCAxMTU2NzgsIAotICAgIDExNTY4MywgMTE1Njg4LCAxMTU2OTIsIDExNTY5NywgMTE1NzAyLCAwLCAxMTU3MDcsIDAsIDExNTcxMiwgMTE1NzE3LCAKLSAgICAxMTU3MjEsIDExNTcyNiwgMTE1NzMxLCAxMTU3MzUsIDExNTczOSwgMCwgMTE1NzQ0LCAxMTU3NDksIDExNTc1NCwgCi0gICAgMTE1NzU4LCAxMTU3NjMsIDExNTc2OCwgMTE1NzcyLCAxMTU3NzcsIDExNTc4MiwgMTE1Nzg3LCAxMTU3OTIsIDExNTc5NywgCi0gICAgMTE1ODAyLCAxMTU4MDgsIDExNTgxNCwgMTE1ODIwLCAxMTU4MjUsIDExNTgzMSwgMTE1ODM3LCAxMTU4NDMsIDExNTg0OCwgCi0gICAgMTE1ODU0LCAxMTU4NjAsIDExNTg2NSwgMTE1ODcwLCAxMTU4NzYsIDExNTg4MSwgMTE1ODg3LCAxMTU4OTMsIDExNTg5OCwgCi0gICAgMTE1OTA0LCAxMTU5MTAsIDExNTkxNSwgMTE1OTIxLCAxMTU5MjcsIDExNTkzMywgMTE1OTM5LCAxMTU5NDUsIDExNTk1MCwgCi0gICAgMTE1OTU2LCAxMTU5NjIsIDExNTk2OCwgMTE1OTczLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTYsIDExNjAwMiwgCi0gICAgMTE2MDA4LCAxMTYwMTMsIDExNjAxOCwgMTE2MDI0LCAxMTYwMjksIDExNjAzNSwgMTE2MDQxLCAxMTYwNDYsIDExNjA1MiwgCi0gICAgMTE2MDU4LCAxMTYwNjMsIDExNjA2OSwgMTE2MDc1LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTcsIDAsIAotICAgIDExNjEwMiwgMTE2MTA3LCAxMTYxMTEsIDExNjExNiwgMCwgMCwgMTE2MTIxLCAxMTYxMjYsIDExNjEzMSwgMTE2MTM1LCAKLSAgICAxMTYxMzksIDExNjE0NCwgMTE2MTQ4LCAxMTYxNTMsIDAsIDExNjE1OCwgMTE2MTYzLCAxMTYxNjgsIDExNjE3MiwgCi0gICAgMTE2MTc3LCAxMTYxODIsIDExNjE4NywgMCwgMTE2MTkyLCAxMTYxOTYsIDExNjIwMSwgMTE2MjA2LCAxMTYyMTEsIAotICAgIDExNjIxNSwgMTE2MjIwLCAxMTYyMjUsIDExNjIzMCwgMTE2MjM0LCAxMTYyMzksIDExNjI0NCwgMTE2MjQ4LCAxMTYyNTIsIAotICAgIDExNjI1NywgMTE2MjYxLCAxMTYyNjYsIDExNjI3MSwgMTE2Mjc1LCAxMTYyODAsIDExNjI4NSwgMTE2Mjg5LCAxMTYyOTQsIAotICAgIDExNjI5OSwgMTE2MzA0LCAxMTYzMDksIDExNjMxNCwgMTE2MzE4LCAwLCAxMTYzMjMsIDExNjMyOCwgMTE2MzMyLCAKLSAgICAxMTYzMzcsIDAsIDExNjM0MiwgMTE2MzQ2LCAxMTYzNTEsIDExNjM1NiwgMTE2MzYwLCAwLCAxMTYzNjQsIDAsIDAsIDAsIAotICAgIDExNjM2OCwgMTE2MzczLCAxMTYzNzgsIDExNjM4MiwgMTE2Mzg3LCAxMTYzOTIsIDExNjM5NywgMCwgMTE2NDAyLCAKLSAgICAxMTY0MDYsIDExNjQxMSwgMTE2NDE2LCAxMTY0MjEsIDExNjQyNSwgMTE2NDMwLCAxMTY0MzUsIDExNjQ0MCwgMTE2NDQ0LCAKLSAgICAxMTY0NDksIDExNjQ1NCwgMTE2NDU4LCAxMTY0NjIsIDExNjQ2NywgMTE2NDcxLCAxMTY0NzYsIDExNjQ4MSwgMTE2NDg1LCAKLSAgICAxMTY0OTAsIDExNjQ5NSwgMTE2NDk5LCAxMTY1MDQsIDExNjUwOSwgMTE2NTE0LCAxMTY1MTksIDExNjUyNCwgMTE2NTI5LCAKLSAgICAxMTY1MzUsIDExNjU0MSwgMTE2NTQ3LCAxMTY1NTIsIDExNjU1OCwgMTE2NTY0LCAxMTY1NzAsIDExNjU3NSwgMTE2NTgxLCAKLSAgICAxMTY1ODcsIDExNjU5MiwgMTE2NTk3LCAxMTY2MDMsIDExNjYwOCwgMTE2NjE0LCAxMTY2MjAsIDExNjYyNSwgMTE2NjMxLCAKLSAgICAxMTY2MzcsIDExNjY0MiwgMTE2NjQ4LCAxMTY2NTQsIDExNjY2MCwgMTE2NjY2LCAxMTY2NzIsIDExNjY3NywgMTE2NjgzLCAKLSAgICAxMTY2ODksIDExNjY5NSwgMTE2NzAwLCAxMTY3MDYsIDExNjcxMiwgMTE2NzE4LCAxMTY3MjMsIDExNjcyOSwgMTE2NzM1LCAKLSAgICAxMTY3NDAsIDExNjc0NSwgMTE2NzUxLCAxMTY3NTYsIDExNjc2MiwgMTE2NzY4LCAxMTY3NzMsIDExNjc3OSwgMTE2Nzg1LCAKLSAgICAxMTY3OTAsIDExNjc5NiwgMTE2ODAyLCAxMTY4MDgsIDExNjgxNCwgMTE2ODIwLCAxMTY4MjQsIDExNjgyOSwgMTE2ODM0LCAKLSAgICAxMTY4MzksIDExNjg0MywgMTE2ODQ4LCAxMTY4NTMsIDExNjg1OCwgMTE2ODYyLCAxMTY4NjcsIDExNjg3MiwgMTE2ODc2LCAKLSAgICAxMTY4ODAsIDExNjg4NSwgMTE2ODg5LCAxMTY4OTQsIDExNjg5OSwgMTE2OTAzLCAxMTY5MDgsIDExNjkxMywgMTE2OTE3LCAKLSAgICAxMTY5MjIsIDExNjkyNywgMTE2OTMyLCAxMTY5MzcsIDExNjk0MiwgMTE2OTQ2LCAxMTY5NTEsIDExNjk1NiwgMTE2OTYxLCAKLSAgICAxMTY5NjUsIDExNjk3MCwgMTE2OTc1LCAxMTY5ODAsIDExNjk4NCwgMTE2OTg5LCAxMTY5OTQsIDExNjk5OCwgMTE3MDAyLCAKLSAgICAxMTcwMDcsIDExNzAxMSwgMTE3MDE2LCAxMTcwMjEsIDExNzAyNSwgMTE3MDMwLCAxMTcwMzUsIDExNzAzOSwgMTE3MDQ0LCAKLSAgICAxMTcwNDksIDExNzA1NCwgMTE3MDU5LCAxMTcwNjQsIDExNzA2OSwgMTE3MDc1LCAxMTcwODEsIDExNzA4NywgMTE3MDkyLCAKLSAgICAxMTcwOTgsIDExNzEwNCwgMTE3MTEwLCAxMTcxMTUsIDExNzEyMSwgMTE3MTI3LCAxMTcxMzIsIDExNzEzNywgMTE3MTQzLCAKLSAgICAxMTcxNDgsIDExNzE1NCwgMTE3MTYwLCAxMTcxNjUsIDExNzE3MSwgMTE3MTc3LCAxMTcxODIsIDExNzE4OCwgMTE3MTk0LCAKLSAgICAxMTcyMDAsIDExNzIwNiwgMTE3MjEyLCAxMTcyMTcsIDExNzIyMywgMTE3MjI5LCAxMTcyMzUsIDExNzI0MCwgMTE3MjQ2LCAKLSAgICAxMTcyNTIsIDExNzI1OCwgMTE3MjYzLCAxMTcyNjksIDExNzI3NSwgMTE3MjgwLCAxMTcyODUsIDExNzI5MSwgMTE3Mjk2LCAKLSAgICAxMTczMDIsIDExNzMwOCwgMTE3MzEzLCAxMTczMTksIDExNzMyNSwgMTE3MzMwLCAxMTczMzYsIDExNzM0MiwgMTE3MzQ4LCAKLSAgICAxMTczNTQsIDExNzM2MCwgMTE3MzY1LCAxMTczNzEsIDExNzM3NywgMTE3MzgzLCAxMTczODgsIDExNzM5NCwgMTE3NDAwLCAKLSAgICAxMTc0MDYsIDExNzQxMSwgMTE3NDE3LCAxMTc0MjMsIDExNzQyOCwgMTE3NDMzLCAxMTc0MzksIDExNzQ0NCwgMTE3NDUwLCAKLSAgICAxMTc0NTYsIDExNzQ2MSwgMTE3NDY3LCAxMTc0NzMsIDExNzQ3OCwgMTE3NDg0LCAxMTc0OTAsIDExNzQ5NiwgMTE3NTAyLCAKLSAgICAxMTc1MDgsIDExNzUxMywgMTE3NTE5LCAxMTc1MjUsIDExNzUzMSwgMTE3NTM2LCAxMTc1NDIsIDExNzU0OCwgMTE3NTU0LCAKLSAgICAxMTc1NTksIDExNzU2NSwgMTE3NTcxLCAxMTc1NzYsIDExNzU4MSwgMTE3NTg3LCAxMTc1OTIsIDExNzU5OCwgMTE3NjA0LCAKLSAgICAxMTc2MDksIDExNzYxNSwgMTE3NjIxLCAxMTc2MjYsIDExNzYzMiwgMTE3NjM4LCAxMTc2NDQsIDExNzY1MCwgMTE3NjU2LCAKLSAgICAxMTc2NjIsIDExNzY2OSwgMTE3Njc2LCAxMTc2ODMsIDExNzY4OSwgMTE3Njk2LCAxMTc3MDMsIDExNzcxMCwgMTE3NzE2LCAKLSAgICAxMTc3MjMsIDExNzczMCwgMTE3NzM2LCAxMTc3NDIsIDExNzc0OSwgMTE3NzU1LCAxMTc3NjIsIDExNzc2OSwgMTE3Nzc1LCAKLSAgICAxMTc3ODIsIDExNzc4OSwgMTE3Nzk1LCAxMTc4MDIsIDExNzgwOSwgMTE3ODE2LCAxMTc4MjMsIDExNzgzMCwgMTE3ODM2LCAKLSAgICAxMTc4NDMsIDExNzg1MCwgMTE3ODU3LCAxMTc4NjMsIDExNzg3MCwgMTE3ODc3LCAxMTc4ODQsIDExNzg5MCwgMTE3ODk3LCAKLSAgICAxMTc5MDQsIDExNzkxMCwgMTE3OTE2LCAxMTc5MjMsIDExNzkyOSwgMTE3OTM2LCAxMTc5NDMsIDExNzk0OSwgMTE3OTU2LCAKLSAgICAxMTc5NjMsIDExNzk2OSwgMTE3OTc2LCAxMTc5ODMsIDExNzk5MCwgMTE3OTk3LCAxMTgwMDQsIDExODAwOSwgMTE4MDE1LCAKLSAgICAxMTgwMjEsIDExODAyNywgMTE4MDMyLCAxMTgwMzgsIDExODA0NCwgMTE4MDUwLCAxMTgwNTUsIDExODA2MSwgMTE4MDY3LCAKLSAgICAxMTgwNzIsIDExODA3NywgMTE4MDgzLCAxMTgwODgsIDExODA5NCwgMTE4MTAwLCAxMTgxMDUsIDExODExMSwgMTE4MTE3LCAKLSAgICAxMTgxMjIsIDExODEyOCwgMTE4MTM0LCAxMTgxNDAsIDExODE0NiwgMTE4MTUyLCAxMTgxNTcsIDExODE2MywgMTE4MTY5LCAKLSAgICAxMTgxNzUsIDExODE4MCwgMTE4MTg2LCAxMTgxOTIsIDExODE5OCwgMTE4MjAzLCAxMTgyMDksIDExODIxNSwgMTE4MjIwLCAKLSAgICAxMTgyMjUsIDExODIzMSwgMTE4MjM2LCAxMTgyNDIsIDExODI0OCwgMTE4MjUzLCAxMTgyNTksIDExODI2NSwgMTE4MjcwLCAKLSAgICAxMTgyNzYsIDExODI4MiwgMTE4Mjg4LCAxMTgyOTQsIDExODMwMCwgMTE4MzA2LCAwLCAwLCAxMTgzMTMsIDExODMxOCwgCi0gICAgMTE4MzIzLCAxMTgzMjgsIDExODMzMywgMTE4MzM4LCAxMTgzNDMsIDExODM0OCwgMTE4MzUzLCAxMTgzNTgsIDExODM2MywgCi0gICAgMTE4MzY4LCAxMTgzNzMsIDExODM3OCwgMTE4MzgzLCAxMTgzODgsIDExODM5MywgMTE4Mzk4LCAxMTg0MDQsIDExODQwOSwgCi0gICAgMTE4NDE0LCAxMTg0MTksIDExODQyNCwgMTE4NDI5LCAxMTg0MzQsIDExODQzOSwgMTE4NDQzLCAxMTg0NDgsIDExODQ1MywgCi0gICAgMTE4NDU4LCAxMTg0NjMsIDExODQ2OCwgMTE4NDczLCAxMTg0NzgsIDExODQ4MywgMTE4NDg4LCAxMTg0OTMsIDExODQ5OCwgCi0gICAgMTE4NTAzLCAxMTg1MDgsIDExODUxMywgMTE4NTE4LCAxMTg1MjMsIDExODUyOCwgMTE4NTM0LCAxMTg1MzksIDExODU0NCwgCi0gICAgMTE4NTQ5LCAxMTg1NTQsIDExODU1OSwgMTE4NTY0LCAxMTg1NjksIDExODU3NSwgMTE4NTgwLCAxMTg1ODUsIDExODU5MCwgCi0gICAgMTE4NTk1LCAxMTg2MDAsIDExODYwNSwgMTE4NjEwLCAxMTg2MTUsIDExODYyMCwgMTE4NjI1LCAxMTg2MzAsIDExODYzNSwgCi0gICAgMTE4NjQwLCAxMTg2NDUsIDExODY1MCwgMTE4NjU1LCAxMTg2NjAsIDExODY2NSwgMTE4NjcwLCAxMTg2NzUsIDExODY4MCwgCi0gICAgMTE4Njg1LCAxMTg2OTAsIDExODY5NiwgMTE4NzAxLCAxMTg3MDYsIDExODcxMSwgMTE4NzE2LCAxMTg3MjEsIDExODcyNiwgCi0gICAgMTE4NzMxLCAxMTg3MzUsIDExODc0MCwgMTE4NzQ1LCAxMTg3NTAsIDExODc1NSwgMTE4NzYwLCAxMTg3NjUsIDExODc3MCwgCi0gICAgMTE4Nzc1LCAxMTg3ODAsIDExODc4NSwgMTE4NzkwLCAxMTg3OTUsIDExODgwMCwgMTE4ODA1LCAxMTg4MTAsIDExODgxNSwgCi0gICAgMTE4ODIwLCAxMTg4MjYsIDExODgzMSwgMTE4ODM2LCAxMTg4NDEsIDExODg0NiwgMTE4ODUxLCAxMTg4NTYsIDExODg2MSwgCi0gICAgMTE4ODY3LCAxMTg4NzIsIDExODg3NywgMTE4ODgyLCAxMTg4ODcsIDExODg5MiwgMTE4ODk3LCAxMTg5MDMsIDExODkwOSwgCi0gICAgMTE4OTE1LCAxMTg5MjEsIDExODkyNywgMTE4OTMzLCAxMTg5MzksIDExODk0NSwgMTE4OTUxLCAxMTg5NTcsIDExODk2MywgCi0gICAgMTE4OTY5LCAxMTg5NzUsIDExODk4MSwgMTE4OTg3LCAxMTg5OTMsIDExODk5OSwgMTE5MDA2LCAxMTkwMTIsIDExOTAxOCwgCi0gICAgMTE5MDI0LCAxMTkwMzAsIDExOTAzNiwgMTE5MDQyLCAxMTkwNDgsIDExOTA1MywgMTE5MDU5LCAxMTkwNjUsIDExOTA3MSwgCi0gICAgMTE5MDc3LCAxMTkwODMsIDExOTA4OSwgMTE5MDk1LCAxMTkxMDEsIDExOTEwNywgMTE5MTEzLCAxMTkxMTksIDExOTEyNSwgCi0gICAgMTE5MTMxLCAxMTkxMzcsIDExOTE0MywgMTE5MTQ5LCAxMTkxNTUsIDExOTE2MiwgMTE5MTY4LCAxMTkxNzQsIDExOTE4MCwgCi0gICAgMTE5MTg2LCAxMTkxOTIsIDExOTE5OCwgMTE5MjA0LCAxMTkyMTEsIDExOTIxNywgMTE5MjIzLCAxMTkyMjksIDExOTIzNSwgCi0gICAgMTE5MjQxLCAxMTkyNDcsIDExOTI1MywgMTE5MjU5LCAxMTkyNjUsIDExOTI3MSwgMTE5Mjc3LCAxMTkyODMsIDExOTI4OSwgCi0gICAgMTE5Mjk1LCAxMTkzMDEsIDExOTMwNywgMTE5MzEzLCAxMTkzMTksIDExOTMyNSwgMTE5MzMxLCAxMTkzMzcsIDExOTM0MywgCi0gICAgMTE5MzQ5LCAxMTkzNTYsIDExOTM2MiwgMTE5MzY4LCAxMTkzNzQsIDExOTM4MCwgMTE5Mzg2LCAxMTkzOTIsIDExOTM5OCwgCi0gICAgMTE5NDAzLCAxMTk0MDksIDExOTQxNSwgMTE5NDIxLCAxMTk0MjcsIDExOTQzMywgMTE5NDM5LCAxMTk0NDUsIDExOTQ1MSwgCi0gICAgMTE5NDU3LCAxMTk0NjMsIDExOTQ2OSwgMTE5NDc1LCAxMTk0ODEsIDExOTQ4NywgMTE5NDkzLCAxMTk0OTksIDExOTUwNSwgCi0gICAgMTE5NTEyLCAxMTk1MTgsIDExOTUyNCwgMTE5NTMwLCAxMTk1MzYsIDExOTU0MiwgMTE5NTQ4LCAxMTk1NTQsIDExOTU2MSwgCi0gICAgMTE5NTY3LCAxMTk1NzMsIDExOTU3OSwgMTE5NTg1LCAxMTk1OTEsIDExOTU5NywgMTE5NjA0LCAxMTk2MTEsIDExOTYxOCwgCi0gICAgMTE5NjI1LCAxMTk2MzIsIDExOTYzOSwgMTE5NjQ2LCAxMTk2NTMsIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgCi0gICAgMTE5Njg4LCAxMTk2OTUsIDExOTcwMiwgMTE5NzA5LCAxMTk3MTYsIDExOTcyNCwgMTE5NzMxLCAxMTk3MzgsIDExOTc0NSwgCi0gICAgMTE5NzUyLCAxMTk3NTksIDExOTc2NiwgMTE5NzczLCAxMTk3NzksIDExOTc4NiwgMTE5NzkzLCAxMTk4MDAsIDExOTgwNywgCi0gICAgMTE5ODE0LCAxMTk4MjEsIDExOTgyOCwgMTE5ODM1LCAxMTk4NDIsIDExOTg0OSwgMTE5ODU2LCAxMTk4NjMsIDExOTg3MCwgCi0gICAgMTE5ODc3LCAxMTk4ODQsIDExOTg5MSwgMTE5ODk4LCAxMTk5MDYsIDExOTkxMywgMTE5OTIwLCAxMTk5MjcsIDExOTkzNCwgCi0gICAgMTE5OTQxLCAxMTk5NDgsIDExOTk1NSwgMTE5OTYzLCAxMTk5NzAsIDExOTk3NywgMTE5OTg0LCAxMTk5OTEsIDExOTk5OCwgCi0gICAgMTIwMDA1LCAxMjAwMTAsIDAsIDAsIDEyMDAxNSwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMyLCAxMjAwMzYsIAotICAgIDEyMDA0MCwgMTIwMDQ0LCAxMjAwNDgsIDEyMDA1MiwgMTIwMDU2LCAxMjAwNjEsIDEyMDA2NSwgMTIwMDY5LCAxMjAwNzMsIAotICAgIDEyMDA3NywgMTIwMDgxLCAxMjAwODUsIDEyMDA4OSwgMTIwMDkzLCAxMjAwOTcsIDEyMDEwMiwgMTIwMTA2LCAxMjAxMTAsIAotICAgIDEyMDExNCwgMTIwMTE4LCAxMjAxMjIsIDEyMDEyNiwgMTIwMTMwLCAxMjAxMzQsIDEyMDEzOCwgMTIwMTQ0LCAxMjAxNDksIAotICAgIDEyMDE1NCwgMTIwMTU5LCAxMjAxNjQsIDEyMDE2OSwgMTIwMTc0LCAxMjAxNzksIDEyMDE4NCwgMTIwMTg5LCAxMjAxOTUsIAotICAgIDEyMDIwMCwgMTIwMjA1LCAxMjAyMTAsIDEyMDIxNSwgMTIwMjIwLCAxMjAyMjUsIDEyMDIzMCwgMTIwMjM1LCAxMjAyNDAsIAotICAgIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDAsIDEyMDI1NiwgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAKLSAgICAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAKLSAgICAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjQsIDEyMDMyOCwgMTIwMzMyLCAxMjAzMzYsIDEyMDM0MCwgMTIwMzQ0LCAKLSAgICAxMjAzNDgsIDEyMDM1NCwgMTIwMzYwLCAxMjAzNjYsIDAsIDEyMDM3MiwgMTIwMzc3LCAwLCAxMjAzODIsIDAsIDAsIAotICAgIDEyMDM4NywgMCwgMTIwMzkyLCAxMjAzOTcsIDEyMDQwMiwgMTIwNDA3LCAxMjA0MTIsIDEyMDQxNywgMTIwNDIyLCAKLSAgICAxMjA0MjcsIDEyMDQzMiwgMTIwNDM3LCAwLCAxMjA0NDIsIDEyMDQ0NywgMTIwNDUyLCAxMjA0NTcsIDAsIDEyMDQ2MiwgMCwgCi0gICAgMTIwNDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA0NzIsIDAsIDAsIDAsIDAsIDEyMDQ3OCwgMCwgMTIwNDg0LCAwLCAKLSAgICAxMjA0OTAsIDAsIDEyMDQ5NiwgMTIwNTAyLCAxMjA1MDgsIDAsIDEyMDUxNCwgMTIwNTIwLCAwLCAxMjA1MjYsIDAsIDAsIAotICAgIDEyMDUzMiwgMCwgMTIwNTM4LCAwLCAxMjA1NDQsIDAsIDEyMDU1MCwgMCwgMTIwNTU4LCAwLCAxMjA1NjYsIDEyMDU3MiwgMCwgCi0gICAgMTIwNTc4LCAwLCAwLCAxMjA1ODQsIDEyMDU5MCwgMTIwNTk2LCAxMjA2MDIsIDAsIDEyMDYwOCwgMTIwNjE0LCAxMjA2MjAsIAotICAgIDEyMDYyNiwgMTIwNjMyLCAxMjA2MzgsIDEyMDY0NCwgMCwgMTIwNjUwLCAxMjA2NTYsIDEyMDY2MiwgMTIwNjY4LCAwLCAKLSAgICAxMjA2NzQsIDEyMDY4MCwgMTIwNjg2LCAxMjA2OTIsIDAsIDEyMDcwMCwgMCwgMTIwNzA4LCAxMjA3MTQsIDEyMDcyMCwgCi0gICAgMTIwNzI2LCAxMjA3MzIsIDEyMDczOCwgMTIwNzQ0LCAxMjA3NTAsIDEyMDc1NiwgMTIwNzYyLCAwLCAxMjA3NjgsIAotICAgIDEyMDc3NCwgMTIwNzgwLCAxMjA3ODYsIDEyMDc5MiwgMTIwNzk4LCAxMjA4MDQsIDEyMDgxMCwgMTIwODE2LCAxMjA4MjIsIAotICAgIDEyMDgyOCwgMTIwODM0LCAxMjA4NDAsIDEyMDg0NiwgMTIwODUyLCAxMjA4NTgsIDEyMDg2NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIwODcwLCAxMjA4NzUsIDEyMDg4MCwgMCwgMTIwODg1LCAxMjA4OTAsIDEyMDg5NSwgMTIwOTAwLCAxMjA5MDUsIDAsIAotICAgIDEyMDkxMCwgMTIwOTE1LCAxMjA5MjAsIDEyMDkyNSwgMTIwOTMwLCAxMjA5MzUsIDEyMDk0MCwgMTIwOTQ1LCAxMjA5NTAsIAotICAgIDEyMDk1NSwgMTIwOTYwLCAxMjA5NjUsIDEyMDk3MCwgMTIwOTc1LCAxMjA5ODAsIDEyMDk4NSwgMTIwOTkwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjA5OTUsIDEyMTAwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxMDEzLCAKLSAgICAxMjEwMjAsIDEyMTAyNywgMTIxMDM0LCAxMjEwNDEsIDEyMTA0OCwgMTIxMDU1LCAxMjEwNjEsIDEyMTA2OCwgMTIxMDc1LCAKLSAgICAxMjEwODIsIDEyMTA5MCwgMTIxMDk4LCAxMjExMDYsIDEyMTExNCwgMTIxMTIyLCAxMjExMzAsIDEyMTEzNywgMTIxMTQ0LCAKLSAgICAxMjExNTEsIDEyMTE1OSwgMTIxMTY3LCAxMjExNzUsIDEyMTE4MywgMTIxMTkxLCAxMjExOTksIDEyMTIwNiwgMTIxMjEzLCAKLSAgICAxMjEyMjAsIDEyMTIyOCwgMTIxMjM2LCAxMjEyNDQsIDEyMTI1MiwgMTIxMjYwLCAxMjEyNjgsIDEyMTI3MywgMTIxMjc4LCAKLSAgICAxMjEyODMsIDEyMTI4OCwgMTIxMjkzLCAxMjEyOTgsIDEyMTMwMywgMTIxMzA4LCAxMjEzMTMsIDAsIDAsIDAsIDAsIAotICAgIDEyMTMxOCwgMTIxMzIzLCAxMjEzMjcsIDEyMTMzMSwgMTIxMzM1LCAxMjEzMzksIDEyMTM0MywgMTIxMzQ3LCAxMjEzNTEsIAotICAgIDEyMTM1NSwgMTIxMzU5LCAxMjEzNjMsIDEyMTM2NywgMTIxMzcxLCAxMjEzNzUsIDEyMTM3OSwgMTIxMzgzLCAxMjEzODcsIAotICAgIDEyMTM5MSwgMTIxMzk1LCAxMjEzOTksIDEyMTQwMywgMTIxNDA3LCAxMjE0MTEsIDEyMTQxNSwgMTIxNDE5LCAxMjE0MjMsIAotICAgIDEyMTQyNywgMTIxNDMxLCAxMjE0MzUsIDEyMTQzOSwgMTIxNDQzLCAxMjE0NDcsIDEyMTQ1MSwgMTIxNDU1LCAxMjE0NTksIAotICAgIDEyMTQ2MywgMTIxNDY3LCAxMjE0NzEsIDEyMTQ3NSwgMTIxNDc5LCAxMjE0ODMsIDEyMTQ4NywgMTIxNDkxLCAxMjE0OTUsIAotICAgIDEyMTQ5OSwgMTIxNTAzLCAxMjE1MDcsIDEyMTUxMSwgMTIxNTE1LCAxMjE1MTksIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIAotICAgIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIAotICAgIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIAotICAgIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIAotICAgIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIAotICAgIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAxMjE3MDAsIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIAotICAgIDEyMTcxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIxNzIwLCAxMjE3MjYsIDEyMTczNSwgCi0gICAgMTIxNzQzLCAxMjE3NTEsIDEyMTc2MCwgMTIxNzY5LCAxMjE3NzgsIDEyMTc4NywgMTIxNzk2LCAxMjE4MDUsIDEyMTgxNCwgCi0gICAgMTIxODIzLCAxMjE4MzIsIDEyMTg0MSwgMCwgMCwgMTIxODUwLCAxMjE4NTksIDEyMTg2NywgMTIxODc1LCAxMjE4ODQsIAotICAgIDEyMTg5MywgMTIxOTAyLCAxMjE5MTEsIDEyMTkyMCwgMTIxOTI5LCAxMjE5MzgsIDEyMTk0NywgMTIxOTU2LCAxMjE5NjUsIAotICAgIDAsIDAsIDEyMTk3NCwgMTIxOTgzLCAxMjE5OTEsIDEyMTk5OSwgMTIyMDA4LCAxMjIwMTcsIDEyMjAyNiwgMTIyMDM1LCAKLSAgICAxMjIwNDQsIDEyMjA1MywgMTIyMDYyLCAxMjIwNzEsIDEyMjA4MCwgMTIyMDg5LCAxMjIwOTgsIDAsIDEyMjEwNSwgCi0gICAgMTIyMTE0LCAxMjIxMjIsIDEyMjEzMCwgMTIyMTM5LCAxMjIxNDgsIDEyMjE1NywgMTIyMTY2LCAxMjIxNzUsIDEyMjE4NCwgCi0gICAgMTIyMTkzLCAxMjIyMDIsIDEyMjIxMSwgMTIyMjIwLCAxMjIyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjIzNiwgCi0gICAgMTIyMjQzLCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NSwgMTIyMjcwLCAxMjIyNzUsIDEyMjI4MCwgCi0gICAgMTIyMjg1LCAwLCAwLCAwLCAwLCAwLCAxMjIyOTAsIDEyMjI5NSwgMTIyMzAxLCAxMjIzMDcsIDEyMjMxMywgMTIyMzE4LCAKLSAgICAxMjIzMjQsIDEyMjMzMCwgMTIyMzM2LCAxMjIzNDEsIDEyMjM0NywgMTIyMzUzLCAxMjIzNTgsIDEyMjM2MywgMTIyMzY5LCAKLSAgICAxMjIzNzQsIDEyMjM4MCwgMTIyMzg2LCAxMjIzOTEsIDEyMjM5NywgMTIyNDAzLCAxMjI0MDgsIDEyMjQxNCwgMTIyNDIwLCAKLSAgICAxMjI0MjYsIDEyMjQzMiwgMTIyNDM4LCAxMjI0NDksIDEyMjQ1NiwgMTIyNDYyLCAxMjI0NjUsIDAsIDEyMjQ2OCwgCi0gICAgMTIyNDczLCAxMjI0NzksIDEyMjQ4NSwgMTIyNDkxLCAxMjI0OTYsIDEyMjUwMiwgMTIyNTA4LCAxMjI1MTQsIDEyMjUxOSwgCi0gICAgMTIyNTI1LCAxMjI1MzEsIDEyMjUzNiwgMTIyNTQxLCAxMjI1NDcsIDEyMjU1MiwgMTIyNTU4LCAxMjI1NjQsIDEyMjU2OSwgCi0gICAgMTIyNTc1LCAxMjI1ODEsIDEyMjU4NiwgMTIyNTkyLCAxMjI1OTgsIDEyMjYwNCwgMTIyNjEwLCAxMjI2MTYsIDEyMjYxOSwgCi0gICAgMTIyNjIyLCAxMjI2MjUsIDEyMjYyOCwgMTIyNjMxLCAxMjI2MzQsIDEyMjY0MCwgMTIyNjQ3LCAxMjI2NTQsIDEyMjY2MSwgCi0gICAgMTIyNjY3LCAxMjI2NzQsIDEyMjY4MSwgMTIyNjg4LCAxMjI2OTQsIDEyMjcwMSwgMTIyNzA4LCAxMjI3MTQsIDEyMjcyMCwgCi0gICAgMTIyNzI3LCAxMjI3MzMsIDEyMjc0MCwgMTIyNzQ3LCAxMjI3NTMsIDEyMjc2MCwgMTIyNzY3LCAxMjI3NzMsIDEyMjc4MCwgCi0gICAgMTIyNzg3LCAxMjI3OTQsIDEyMjgwMSwgMTIyODA4LCAxMjI4MTMsIDAsIDAsIDAsIDAsIDEyMjgxOCwgMTIyODI0LCAKLSAgICAxMjI4MzEsIDEyMjgzOCwgMTIyODQ1LCAxMjI4NTEsIDEyMjg1OCwgMTIyODY1LCAxMjI4NzIsIDEyMjg3OCwgMTIyODg1LCAKLSAgICAxMjI4OTIsIDEyMjg5OCwgMTIyOTA0LCAxMjI5MTEsIDEyMjkxNywgMTIyOTI0LCAxMjI5MzEsIDEyMjkzNywgMTIyOTQ0LCAKLSAgICAxMjI5NTEsIDEyMjk1NywgMTIyOTY0LCAxMjI5NzEsIDEyMjk3OCwgMTIyOTg1LCAxMjI5OTIsIDEyMzAwMSwgMTIzMDA1LCAKLSAgICAxMjMwMDgsIDEyMzAxMSwgMTIzMDE1LCAxMjMwMTksIDEyMzAyMiwgMTIzMDI1LCAxMjMwMjgsIDEyMzAzMSwgMTIzMDM0LCAKLSAgICAxMjMwMzcsIDEyMzA0MCwgMTIzMDQzLCAxMjMwNDYsIDEyMzA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzMDU1LCAxMjMwNjIsIDEyMzA3MCwgCi0gICAgMTIzMDc4LCAxMjMwODYsIDEyMzA5MywgMTIzMTAxLCAxMjMxMDksIDEyMzExNywgMTIzMTI0LCAxMjMxMzIsIDEyMzE0MCwgCi0gICAgMTIzMTQ3LCAxMjMxNTQsIDEyMzE2MiwgMTIzMTY5LCAxMjMxNzcsIDEyMzE4NSwgMTIzMTkyLCAxMjMyMDAsIDEyMzIwOCwgCi0gICAgMTIzMjE1LCAxMjMyMjMsIDEyMzIzMSwgMTIzMjM5LCAxMjMyNDcsIDEyMzI1NSwgMTIzMjU5LCAxMjMyNjMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzI2NiwgMTIzMjcyLCAxMjMyNzgsIDEyMzI4NCwgMTIzMjg4LCAKLSAgICAxMjMyOTQsIDEyMzMwMCwgMTIzMzA2LCAxMjMzMTIsIDEyMzMxOCwgMTIzMzI0LCAxMjMzMzAsIDEyMzMzNiwgMTIzMzQyLCAKLSAgICAxMjMzNDgsIDEyMzM1NCwgMTIzMzYwLCAxMjMzNjYsIDEyMzM3MiwgMTIzMzc4LCAxMjMzODQsIDEyMzM5MCwgMTIzMzk2LCAKLSAgICAxMjM0MDIsIDEyMzQwOCwgMTIzNDE0LCAxMjM0MjAsIDEyMzQyNiwgMTIzNDMyLCAxMjM0MzgsIDEyMzQ0NCwgMTIzNDUwLCAKLSAgICAxMjM0NTYsIDEyMzQ2MiwgMTIzNDY4LCAxMjM0NzQsIDEyMzQ4MCwgMTIzNDg2LCAxMjM0OTIsIDEyMzQ5OCwgMTIzNTA0LCAKLSAgICAxMjM1MTAsIDEyMzUxNiwgMCwgMCwgMCwgMCwgMCwgMTIzNTIyLCAxMjM1MzMsIDEyMzU0NCwgMTIzNTU1LCAxMjM1NjYsIAotICAgIDEyMzU3NywgMTIzNTg4LCAxMjM1OTksIDEyMzYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIzNjIxLCAxMjM2MjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzYyOSwgCi0gICAgMTIzNjMxLCAxMjM2MzMsIDEyMzYzNywgMTIzNjQyLCAxMjM2NDcsIDEyMzY0OSwgMTIzNjU1LCAxMjM2NjAsIDEyMzY2MiwgCi0gICAgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NCwgMTIzNjc4LCAxMjM2ODQsIDEyMzY5MCwgMTIzNjk2LCAxMjM3MDEsIDEyMzcwNSwgCi0gICAgMTIzNzEyLCAxMjM3MTksIDEyMzcyNiwgMTIzNzMxLCAxMjM3MzgsIDEyMzc0NSwgMTIzNzUyLCAxMjM3NTYsIDEyMzc2MiwgCi0gICAgMTIzNzcxLCAxMjM3ODAsIDEyMzc4NywgMTIzNzkyLCAxMjM3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyMzgwMCwgMTIzODAyLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDAsIDEyMzgxOCwgCi0gICAgMTIzODIwLCAxMjM4MjQsIDEyMzgyNiwgMTIzODI4LCAxMjM4MzAsIDEyMzgzMiwgMTIzODM3LCAxMjM4NDIsIDEyMzg0NCwgCi0gICAgMTIzODUwLCAxMjM4NTQsIDEyMzg1OCwgMTIzODY2LCAxMjM4NjgsIDEyMzg3MCwgMTIzODcyLCAxMjM4NzQsIDEyMzg3NiwgCi0gICAgMTIzODc4LCAxMjM4ODAsIDEyMzg4MiwgMTIzODg0LCAxMjM4ODYsIDEyMzg5MCwgMTIzODk0LCAxMjM4OTYsIDEyMzg5OCwgCi0gICAgMTIzOTAwLCAxMjM5MDIsIDEyMzkwNCwgMTIzOTA5LCAxMjM5MTUsIDEyMzkxOSwgMTIzOTIzLCAxMjM5MjcsIDEyMzkzMSwgCi0gICAgMTIzOTM2LCAxMjM5NDAsIDEyMzk0MiwgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1NCwgMTIzOTU2LCAxMjM5NTgsIDEyMzk2MCwgCi0gICAgMTIzOTY0LCAxMjM5NzMsIDEyMzk3OSwgMTIzOTgzLCAxMjM5ODcsIDEyMzk4OSwgMTIzOTkxLCAxMjM5OTQsIDEyMzk5NiwgCi0gICAgMTIzOTk4LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA2LCAxMjQwMTAsIDEyNDAxNSwgMTI0MDE3LCAxMjQwMjIsIDEyNDAyOCwgCi0gICAgMTI0MDM1LCAxMjQwMzksIDEyNDA0MywgMTI0MDQ3LCAxMjQwNTEsIDEyNDA1NywgMCwgMCwgMCwgMTI0MDYxLCAxMjQwNjMsIAotICAgIDEyNDA2NywgMTI0MDcxLCAxMjQwNzMsIDEyNDA3NywgMTI0MDgxLCAxMjQwODMsIDEyNDA4NywgMTI0MDg5LCAxMjQwOTMsIAotICAgIDEyNDA5NywgMTI0MTAxLCAxMjQxMDUsIDEyNDEwOSwgMTI0MTEzLCAxMjQxMTcsIDEyNDEyMSwgMTI0MTI3LCAxMjQxMzEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDEzNSwgMTI0MTM5LCAxMjQxNDMsIDEyNDE0NywgCi0gICAgMTI0MTU0LCAxMjQxNTYsIDEyNDE2MCwgMTI0MTYyLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE3OCwgCi0gICAgMTI0MTgyLCAxMjQxODYsIDEyNDE5MCwgMTI0MTk0LCAxMjQxOTgsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDYsIDEyNDIxMiwgCi0gICAgMTI0MjE1LCAxMjQyMjAsIDEyNDIyMiwgMTI0MjI0LCAxMjQyMjcsIDEyNDIyOSwgMTI0MjMxLCAxMjQyMzQsIDEyNDI0MSwgCi0gICAgMTI0MjQ4LCAxMjQyNTUsIDEyNDI2MCwgMTI0MjY0LCAxMjQyNjYsIDEyNDI2OCwgMCwgMTI0MjcwLCAxMjQyNzIsIAotICAgIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyNDI4NiwgMTI0MjkwLCAxMjQyOTUsIDEyNDI5OSwgMTI0MzA1LCAxMjQzMTEsIDEyNDMxMywgCi0gICAgMTI0MzE1LCAxMjQzMjEsIDEyNDMyMywgMTI0MzI3LCAxMjQzMzEsIDEyNDMzMywgMTI0MzM3LCAxMjQzMzksIDEyNDM0MywgCi0gICAgMTI0MzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQzNTEsIDEyNDM1MywgCi0gICAgMTI0MzU1LCAxMjQzNTcsIDEyNDM2MSwgMTI0MzYzLCAxMjQzNjUsIDEyNDM2NywgMTI0MzY5LCAxMjQzNzEsIDEyNDM3MywgCi0gICAgMTI0Mzc1LCAxMjQzNzcsIDEyNDM3OSwgMTI0MzgxLCAxMjQzODMsIDEyNDM4NSwgMTI0Mzg3LCAxMjQzODksIDEyNDM5MSwgCi0gICAgMTI0MzkzLCAxMjQzOTUsIDEyNDM5NywgMTI0Mzk5LCAxMjQ0MDEsIDEyNDQwMywgMTI0NDA1LCAxMjQ0MDksIDEyNDQxMSwgCi0gICAgMTI0NDEzLCAxMjQ0MTUsIDEyNDQxOSwgMTI0NDIxLCAxMjQ0MjUsIDEyNDQyNywgMTI0NDI5LCAxMjQ0MzMsIDEyNDQzNywgCi0gICAgMTI0NDQzLCAxMjQ0NDUsIDEyNDQ0NywgMTI0NDQ5LCAxMjQ0NTEsIDEyNDQ1NSwgMTI0NDU5LCAxMjQ0NjEsIDEyNDQ2NSwgCi0gICAgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIDEyNDUwMSwgCi0gICAgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAwLCAxMjQ1MzMsIDAsIAotICAgIDEyNDUzNSwgMTI0NTM3LCAxMjQ1MzksIDEyNDU0MSwgMTI0NTQzLCAxMjQ1NTEsIDEyNDU1OSwgMTI0NTY3LCAxMjQ1NzUsIAotICAgIDEyNDU4MCwgMTI0NTg1LCAxMjQ1OTAsIDEyNDU5NCwgMTI0NTk4LCAxMjQ2MDMsIDEyNDYwNywgMTI0NjA5LCAxMjQ2MTMsIAotICAgIDEyNDYxNSwgMTI0NjE3LCAxMjQ2MTksIDEyNDYyMSwgMTI0NjIzLCAxMjQ2MjUsIDEyNDYyNywgMTI0NjMxLCAxMjQ2MzMsIAotICAgIDEyNDYzNSwgMTI0NjM3LCAxMjQ2NDEsIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjU5LCAxMjQ2NjUsIAotICAgIDEyNDY3MSwgMTI0NjczLCAxMjQ2NzUsIDEyNDY3NywgMTI0Njc5LCAxMjQ2ODEsIDEyNDY5MCwgMTI0Njk3LCAxMjQ3MDQsIAotICAgIDEyNDcwOCwgMTI0NzE1LCAxMjQ3MjAsIDEyNDcyNywgMTI0NzM2LCAxMjQ3NDEsIDEyNDc0NSwgMTI0NzQ5LCAxMjQ3NTEsIAotICAgIDEyNDc1NSwgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY3LCAxMjQ3NzEsIDEyNDc3NSwgMTI0Nzc5LCAxMjQ3ODEsIAotICAgIDEyNDc4MywgMTI0Nzg5LCAxMjQ3OTEsIDEyNDc5MywgMTI0Nzk1LCAxMjQ3OTksIDEyNDgwMywgMTI0ODA1LCAxMjQ4MDksIAotICAgIDEyNDgxMSwgMTI0ODEzLCAxMjQ4MTYsIDEyNDgyMCwgMTI0ODIyLCAxMjQ4MjYsIDEyNDgyOCwgMTI0ODMwLCAxMjQ4MzUsIAotICAgIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OCwgMTI0ODUyLCAxMjQ4NTYsIDEyNDg2MCwgMTI0ODY0LCAxMjQ4NjgsIAotICAgIDEyNDg3MiwgMTI0ODc2LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTgsIDEyNDkwMywgMTI0OTA2LCAxMjQ5MDgsIAotICAgIDEyNDkxMSwgMTI0OTE0LCAxMjQ5MTksIDEyNDkyMSwgMTI0OTI0LCAxMjQ5MjksIDEyNDkzMywgMTI0OTM2LCAxMjQ5NDAsIAotICAgIDEyNDk0NCwgMTI0OTQ3LCAxMjQ5NTIsIDEyNDk1NiwgMTI0OTYwLCAxMjQ5NjQsIDEyNDk2OCwgMTI0OTc0LCAxMjQ5ODAsIAotICAgIDEyNDk4NiwgMTI0OTkyLCAxMjQ5OTcsIDEyNTAwOCwgMTI1MDEwLCAxMjUwMTQsIDEyNTAxNiwgMTI1MDE4LCAxMjUwMjIsIAotICAgIDEyNTAyNiwgMTI1MDI4LCAxMjUwMzIsIDEyNTAzNywgMTI1MDQyLCAxMjUwNDgsIDEyNTA1MCwgMTI1MDU0LCAxMjUwNTgsIAotICAgIDEyNTA2NSwgMTI1MDcyLCAxMjUwNzYsIDEyNTA3OCwgMTI1MDgwLCAxMjUwODQsIDEyNTA4NiwgMTI1MDkwLCAxMjUwOTQsIAotICAgIDEyNTA5OCwgMTI1MTAwLCAxMjUxMDIsIDEyNTEwOSwgMTI1MTEzLCAxMjUxMTYsIDEyNTEyMCwgMTI1MTI0LCAxMjUxMjgsIAotICAgIDEyNTEzMCwgMTI1MTM0LCAxMjUxMzYsIDEyNTEzOCwgMTI1MTQyLCAxMjUxNDQsIDEyNTE0OCwgMTI1MTUyLCAxMjUxNTgsIAotICAgIDEyNTE2MiwgMTI1MTY2LCAxMjUxNzAsIDEyNTE3MiwgMTI1MTc1LCAxMjUxNzksIDEyNTE4NiwgMTI1MTk1LCAxMjUyMDQsIAotICAgIDEyNTIxMiwgMTI1MjIwLCAxMjUyMjIsIDEyNTIyNiwgMTI1MjI4LCAxMjUyMzIsIDEyNTI0MywgMTI1MjQ3LCAxMjUyNTMsIAotICAgIDEyNTI1OSwgMTI1MjY0LCAwLCAxMjUyNjYsIDEyNTI3MCwgMTI1MjcyLCAxMjUyNzQsIDAsIDAsIDAsIDEyNTI3NiwgCi0gICAgMTI1MjgxLCAxMjUyOTEsIDEyNTMwNiwgMTI1MzE4LCAxMjUzMzAsIDEyNTMzNCwgMTI1MzM4LCAxMjUzNDQsIDEyNTM0NiwgCi0gICAgMTI1MzU0LCAxMjUzNjIsIDEyNTM2NCwgMTI1MzY4LCAxMjUzNzQsIDEyNTM4MCwgMTI1Mzg3LCAxMjUzOTQsIDEyNTM5NiwgCi0gICAgMTI1Mzk4LCAxMjU0MDEsIDEyNTQwMywgMTI1NDA5LCAxMjU0MTEsIDEyNTQxNCwgMTI1NDE4LCAxMjU0MjQsIDEyNTQzMCwgCi0gICAgMTI1NDQxLCAxMjU0NDcsIDEyNTQ1NCwgMTI1NDYyLCAxMjU0NjYsIDEyNTQ3NCwgMTI1NDgyLCAxMjU0ODgsIDEyNTQ5NCwgCi0gICAgMTI1NTAxLCAxMjU1MDMsIDEyNTUwNywgMTI1NTA5LCAxMjU1MTEsIDEyNTUxNiwgMTI1NTE4LCAxMjU1MjAsIDEyNTUyMiwgCi0gICAgMTI1NTI0LCAxMjU1MjgsIDEyNTUzOSwgMTI1NTQ1LCAxMjU1NDksIDEyNTU1MywgMTI1NTU3LCAxMjU1NjMsIDEyNTU2OSwgCi0gICAgMTI1NTc1LCAxMjU1ODEsIDEyNTU4NiwgMTI1NTkxLCAxMjU1OTcsIDEyNTYwMywgMTI1NjEwLCAwLCAwLCAxMjU2MTcsIAotICAgIDEyNTYyMiwgMTI1NjMwLCAxMjU2MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTY0MywgCi0gICAgMTI1NjUwLCAxMjU2NTcsIDEyNTY2NCwgMTI1NjcyLCAxMjU2ODAsIDEyNTY4OCwgMTI1Njk2LCAxMjU3MDQsIDEyNTcxMiwgCi0gICAgMTI1NzIwLCAxMjU3MjgsIDEyNTczNiwgMTI1NzQyLCAxMjU3NDgsIDEyNTc1NCwgMTI1NzYwLCAxMjU3NjYsIDEyNTc3MiwgCi0gICAgMTI1Nzc4LCAxMjU3ODQsIDEyNTc5MCwgMTI1Nzk2LCAxMjU4MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk2MzYxLCA5NjM2NiwgOTYzNzEsIDk2Mzc2LCA5NjM4MSwgOTYzODYsIDk2MzkxLCA5NjM5NiwgOTY0MDEsIAorICAgIDk2NDA2LCA5NjQxMSwgOTY0MTYsIDk2NDIxLCA5NjQyNiwgOTY0MzEsIDk2NDM2LCA5NjQ0MSwgOTY0NDYsIDk2NDUxLCAKKyAgICA5NjQ1NiwgOTY0NjEsIDk2NDY2LCA5NjQ3MSwgOTY0NzYsIDk2NDgxLCA5NjQ4NiwgOTY0OTEsIDk2NDk2LCA5NjUwMSwgCisgICAgOTY1MDYsIDk2NTExLCA5NjUxNiwgOTY1MjEsIDk2NTI2LCA5NjUzMSwgOTY1MzYsIDk2NTQxLCA5NjU0NiwgOTY1NTEsIAorICAgIDk2NTU2LCA5NjU2MSwgOTY1NjYsIDk2NTcxLCA5NjU3NiwgOTY1ODEsIDk2NTg2LCA5NjU5MSwgOTY1OTYsIDk2NjAxLCAKKyAgICA5NjYwNiwgOTY2MTEsIDk2NjE2LCA5NjYyMSwgOTY2MjYsIDk2NjMxLCA5NjYzNiwgOTY2NDEsIDk2NjQ2LCA5NjY1MSwgCisgICAgOTY2NTYsIDk2NjYxLCA5NjY2NiwgOTY2NzEsIDk2Njc2LCA5NjY4MSwgOTY2ODYsIDk2NjkxLCA5NjY5NiwgOTY3MDEsIAorICAgIDk2NzA2LCA5NjcxMSwgOTY3MTYsIDk2NzIxLCA5NjcyNiwgOTY3MzEsIDk2NzM2LCA5Njc0MSwgOTY3NDYsIDk2NzUxLCAKKyAgICA5Njc1NiwgOTY3NjEsIDk2NzY2LCA5Njc3MSwgOTY3NzYsIDk2NzgxLCA5Njc4NiwgOTY3OTEsIDk2Nzk2LCA5NjgwMSwgCisgICAgOTY4MDYsIDk2ODExLCA5NjgxNiwgOTY4MjEsIDk2ODI2LCA5NjgzMSwgOTY4MzYsIDk2ODQxLCA5Njg0NiwgOTY4NTEsIAorICAgIDk2ODU2LCA5Njg2MSwgOTY4NjYsIDk2ODcxLCA5Njg3NiwgOTY4ODEsIDk2ODg2LCA5Njg5MSwgOTY4OTYsIDk2OTAxLCAKKyAgICA5NjkwNiwgOTY5MTEsIDk2OTE2LCA5NjkyMSwgOTY5MjYsIDk2OTMxLCA5NjkzNiwgOTY5NDEsIDk2OTQ2LCA5Njk1MSwgCisgICAgOTY5NTYsIDk2OTYxLCA5Njk2NiwgOTY5NzEsIDk2OTc2LCA5Njk4MSwgOTY5ODYsIDk2OTkxLCA5Njk5NiwgOTcwMDEsIAorICAgIDk3MDA2LCA5NzAxMSwgOTcwMTYsIDk3MDIxLCA5NzAyNiwgOTcwMzEsIDk3MDM2LCA5NzA0MSwgOTcwNDYsIDk3MDUxLCAKKyAgICA5NzA1NiwgOTcwNjEsIDk3MDY2LCA5NzA3MSwgOTcwNzYsIDk3MDgxLCA5NzA4NiwgOTcwOTEsIDk3MDk2LCA5NzEwMSwgCisgICAgOTcxMDYsIDk3MTExLCA5NzExNiwgOTcxMjEsIDk3MTI2LCA5NzEzMSwgOTcxMzYsIDk3MTQxLCA5NzE0NiwgOTcxNTEsIAorICAgIDk3MTU2LCA5NzE2MSwgOTcxNjYsIDk3MTcxLCA5NzE3NiwgOTcxODEsIDk3MTg2LCA5NzE5MSwgOTcxOTYsIDk3MjAxLCAKKyAgICA5NzIwNiwgOTcyMTEsIDk3MjE2LCA5NzIyMSwgOTcyMjYsIDk3MjMxLCA5NzIzNiwgOTcyNDEsIDk3MjQ2LCA5NzI1MSwgCisgICAgOTcyNTYsIDk3MjYxLCA5NzI2NiwgOTcyNzEsIDk3Mjc2LCA5NzI4MSwgOTcyODYsIDk3MjkxLCA5NzI5NiwgOTczMDEsIAorICAgIDk3MzA2LCA5NzMxMSwgOTczMTYsIDk3MzIxLCA5NzMyNiwgOTczMzEsIDk3MzM2LCA5NzM0MSwgOTczNDYsIDk3MzUxLCAKKyAgICA5NzM1NiwgOTczNjEsIDk3MzY2LCA5NzM3MSwgOTczNzYsIDk3MzgxLCA5NzM4NiwgOTczOTEsIDk3Mzk2LCA5NzQwMSwgCisgICAgOTc0MDYsIDk3NDExLCA5NzQxNiwgOTc0MjEsIDk3NDI2LCA5NzQzMSwgOTc0MzYsIDk3NDQxLCA5NzQ0NiwgOTc0NTEsIAorICAgIDk3NDU2LCA5NzQ2MSwgOTc0NjYsIDk3NDcxLCA5NzQ3NiwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTAxLCAKKyAgICA5NzUwNiwgOTc1MTEsIDk3NTE2LCA5NzUyMSwgOTc1MjYsIDk3NTMxLCA5NzUzNiwgOTc1NDEsIDk3NTQ2LCA5NzU1MSwgCisgICAgOTc1NTYsIDk3NTYxLCA5NzU2NiwgOTc1NzEsIDk3NTc2LCA5NzU4MSwgOTc1ODYsIDk3NTkxLCA5NzU5NiwgOTc2MDEsIAorICAgIDk3NjA2LCA5NzYxMSwgOTc2MTYsIDk3NjIxLCA5NzYyNiwgOTc2MzEsIDk3NjM2LCA5NzY0MSwgOTc2NDYsIDk3NjUxLCAKKyAgICA5NzY1NiwgOTc2NjEsIDk3NjY2LCA5NzY3MSwgOTc2NzYsIDk3NjgxLCA5NzY4NiwgOTc2OTEsIDk3Njk2LCA5NzcwMSwgCisgICAgOTc3MDYsIDk3NzExLCA5NzcxNiwgOTc3MjEsIDk3NzI2LCA5NzczMSwgOTc3MzYsIDk3NzQxLCA5Nzc0NiwgOTc3NTEsIAorICAgIDk3NzU2LCA5Nzc2MSwgOTc3NjYsIDk3NzcxLCA5Nzc3NiwgOTc3ODEsIDk3Nzg2LCA5Nzc5MSwgOTc3OTYsIDk3ODAxLCAKKyAgICA5NzgwNiwgOTc4MTEsIDk3ODE2LCA5NzgyMSwgOTc4MjYsIDk3ODMxLCA5NzgzNiwgOTc4NDEsIDk3ODQ2LCA5Nzg1MSwgCisgICAgOTc4NTYsIDk3ODYxLCA5Nzg2NiwgOTc4NzEsIDk3ODc2LCA5Nzg4MSwgOTc4ODYsIDk3ODkxLCA5Nzg5NiwgOTc5MDEsIAorICAgIDk3OTA2LCA5NzkxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTc5MTYsIDk3OTIyLCA5NzkyOSwgOTc5MzYsIAorICAgIDk3OTQyLCA5Nzk0OSwgOTc5NTYsIDk3OTYzLCA5Nzk3MCwgOTc5NzYsIDk3OTgzLCA5Nzk5MCwgOTc5OTcsIDk4MDA0LCAKKyAgICA5ODAxMSwgOTgwMTgsIDk4MDI1LCA5ODAzMiwgOTgwMzksIDk4MDQ2LCA5ODA1MywgOTgwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk4MDY3LCA5ODA3MiwgOTgwNzcsIDk4MDgyLCA5ODA4NywgOTgwOTIsIDk4MDk3LCA5ODEwMiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1ODA4LCAxMjU4MTIsIDEyNTgxNiwgCi0gICAgMTI1ODIxLCAxMjU4MjYsIDEyNTgyOCwgMTI1ODMyLCAxMjU4NDEsIDEyNTg0OSwgMTI1ODU3LCAxMjU4NzAsIDEyNTg4MywgCi0gICAgMTI1ODk2LCAxMjU5MDMsIDEyNTkxMCwgMTI1OTE0LCAxMjU5MjMsIDEyNTkzMSwgMTI1OTM1LCAxMjU5NDQsIDEyNTk1MSwgCi0gICAgMTI1OTU1LCAxMjU5NTksIDEyNTk2MywgMTI1OTY3LCAxMjU5NzQsIDEyNTk3OCwgMTI1OTgyLCAxMjU5ODYsIDEyNTk5MCwgCi0gICAgMTI1OTk3LCAxMjYwMDYsIDEyNjAxNSwgMTI2MDIyLCAxMjYwMzQsIDEyNjA0NiwgMTI2MDUwLCAxMjYwNTQsIDEyNjA1OCwgCi0gICAgMTI2MDYyLCAxMjYwNjYsIDEyNjA3MCwgMTI2MDc4LCAxMjYwODYsIDEyNjA5NCwgMTI2MDk4LCAxMjYxMDIsIDEyNjEwNiwgCi0gICAgMTI2MTEwLCAxMjYxMTQsIDEyNjExOCwgMTI2MTI0LCAxMjYxMzAsIDEyNjEzNCwgMTI2MTQ1LCAxMjYxNTMsIDEyNjE1NywgCi0gICAgMTI2MTYxLCAxMjYxNjUsIDEyNjE2OSwgMTI2MTc1LCAxMjYxODIsIDEyNjE5MywgMTI2MjAzLCAxMjYyMTMsIDEyNjIyNCwgCi0gICAgMTI2MjMzLCAxMjYyNDQsIDEyNjI1MCwgMTI2MjU2LCAwLCAwLCAwLCAwLCAxMjYyNjIsIDEyNjI3MSwgMTI2Mjc4LCAKLSAgICAxMjYyODQsIDEyNjI4OCwgMTI2MjkyLCAxMjYyOTYsIDEyNjMwNSwgMTI2MzE3LCAxMjYzMjEsIDEyNjMyOCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2MzM1LCAKLSAgICAxMjYzMzcsIDEyNjMzOSwgMTI2MzQzLCAxMjYzNDcsIDEyNjM1MSwgMTI2MzYwLCAxMjYzNjIsIDEyNjM2NCwgMTI2MzY3LCAKLSAgICAxMjYzNjksIDEyNjM3MSwgMTI2Mzc1LCAxMjYzNzcsIDEyNjM4MSwgMTI2MzgzLCAxMjYzODcsIDEyNjM4OSwgMTI2MzkxLCAKLSAgICAxMjYzOTUsIDEyNjM5OSwgMTI2NDA1LCAxMjY0MDcsIDEyNjQxMSwgMTI2NDEzLCAxMjY0MTcsIDEyNjQyMSwgMTI2NDI1LCAKLSAgICAxMjY0MjksIDEyNjQzMSwgMTI2NDMzLCAxMjY0MzcsIDEyNjQ0MSwgMTI2NDQ1LCAxMjY0NDksIDEyNjQ1MSwgMTI2NDUzLCAKLSAgICAxMjY0NTUsIDEyNjQ2MCwgMTI2NDY1LCAxMjY0NjgsIDEyNjQ3NiwgMTI2NDg0LCAxMjY0ODYsIDEyNjQ5MSwgMTI2NDk0LCAKLSAgICAxMjY0OTksIDEyNjUxMCwgMTI2NTE3LCAxMjY1MjIsIDEyNjUyNywgMTI2NTI5LCAxMjY1MzMsIDEyNjUzNSwgMTI2NTM5LCAKLSAgICAxMjY1NDEsIDEyNjU0NSwgMTI2NTQ5LCAxMjY1NTIsIDEyNjU1NSwgMTI2NTU3LCAxMjY1NjAsIDEyNjU2MiwgMTI2NTY2LCAKLSAgICAxMjY1NjgsIDEyNjU3MCwgMTI2NTcyLCAxMjY1NzYsIDEyNjU3OCwgMTI2NTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjMsIDk4MTI3LCAwLCAwLCA5ODEzMiwgCisgICAgMCwgOTgxMzcsIDk4MTQxLCA5ODE0NiwgOTgxNTEsIDk4MTU2LCA5ODE2MSwgOTgxNjYsIDk4MTcxLCA5ODE3NiwgOTgxODEsIAorICAgIDk4MTg2LCA5ODE5MCwgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCAKKyAgICA5ODIzNSwgOTgyMzksIDk4MjQ0LCA5ODI0OSwgOTgyNTQsIDk4MjU5LCA5ODI2NCwgOTgyNjksIDk4Mjc0LCA5ODI3OSwgCisgICAgOTgyODQsIDk4Mjg5LCA5ODI5NCwgOTgyOTksIDk4MzA0LCA5ODMwOSwgOTgzMTQsIDk4MzE5LCA5ODMyNCwgOTgzMjgsIAorICAgIDk4MzMzLCA5ODMzOCwgOTgzNDMsIDk4MzQ4LCAwLCA5ODM1MywgOTgzNTgsIDAsIDAsIDAsIDk4MzYzLCAwLCAwLCA5ODM2OCwgCisgICAgOTgzNzMsIDk4MzgwLCA5ODM4NywgOTgzOTQsIDk4NDAxLCA5ODQwOCwgOTg0MTUsIDk4NDIyLCA5ODQyOSwgOTg0MzYsIAorICAgIDk4NDQzLCA5ODQ1MCwgOTg0NTcsIDk4NDY0LCA5ODQ3MSwgOTg0NzgsIDk4NDg1LCA5ODQ5MiwgOTg0OTksIDk4NTA2LCAKKyAgICA5ODUxMywgOTg1MjAsIDAsIDk4NTI3LCA5ODUzNCwgOTg1NDAsIDk4NTQ2LCA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3NCwgCisgICAgOTg1ODIsIDk4NTkxLCA5ODU5NiwgOTg2MDEsIDk4NjA2LCA5ODYxMSwgOTg2MTYsIDk4NjIxLCA5ODYyNiwgOTg2MzEsIAorICAgIDk4NjM2LCA5ODY0MSwgOTg2NDYsIDk4NjUxLCA5ODY1NiwgOTg2NjIsIDk4NjY3LCA5ODY3MiwgOTg2NzcsIDk4NjgyLCAKKyAgICA5ODY4NywgOTg2OTIsIDk4Njk3LCA5ODcwMiwgOTg3MDcsIDk4NzEzLCA5ODcxOSwgOTg3MjMsIDk4NzI3LCA5ODczMSwgCisgICAgOTg3MzUsIDk4NzM5LCA5ODc0NCwgOTg3NDksIDk4NzU1LCA5ODc2MCwgOTg3NjYsIDk4NzcxLCA5ODc3NiwgOTg3ODEsIAorICAgIDk4Nzg3LCA5ODc5MiwgOTg3OTcsIDk4ODAyLCA5ODgwNywgOTg4MTIsIDk4ODE4LCA5ODgyMywgOTg4MjksIDk4ODM0LCAKKyAgICA5ODg0MCwgOTg4NDUsIDk4ODUxLCA5ODg1NiwgOTg4NjIsIDk4ODY3LCA5ODg3MiwgOTg4NzcsIDk4ODgyLCA5ODg4NywgCisgICAgOTg4OTIsIDk4ODk3LCA5ODkwMywgOTg5MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTEzLCA5ODkxNywgOTg5MjEsIAorICAgIDk4OTI1LCA5ODkyOSwgOTg5MzUsIDk4OTM5LCA5ODk0NCwgOTg5NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCAKKyAgICA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgCisgICAgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIDk5MDQ1LCAwLCA5OTA1MCwgOTkwNTUsIDAsIDAsIDAsIDAsIDAsIDk5MDYwLCAKKyAgICA5OTA2NCwgOTkwNjgsIDk5MDczLCA5OTA3OCwgOTkwODQsIDk5MDg5LCA5OTA5NCwgOTkwOTksIDk5MTA0LCA5OTEwOSwgCisgICAgOTkxMTQsIDk5MTE5LCA5OTEyNCwgOTkxMjksIDk5MTM0LCA5OTEzOSwgOTkxNDQsIDk5MTQ5LCA5OTE1NCwgOTkxNTksIAorICAgIDk5MTY0LCA5OTE2OSwgOTkxNzQsIDk5MTc5LCA5OTE4NCwgOTkxODksIDk5MTk0LCA5OTE5OCwgOTkyMDMsIDk5MjA4LCAKKyAgICA5OTIxNCwgOTkyMTgsIDAsIDAsIDAsIDk5MjIyLCA5OTIyOCwgOTkyMzIsIDk5MjM3LCA5OTI0MiwgOTkyNDcsIDk5MjUxLCAKKyAgICA5OTI1NiwgOTkyNjAsIDk5MjY1LCA5OTI3MCwgOTkyNzQsIDk5Mjc5LCA5OTI4NCwgOTkyODgsIDk5MjkyLCA5OTI5NywgCisgICAgOTkzMDIsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIwLCA5OTMyNSwgOTkzMzAsIDk5MzM1LCA5OTM0MCwgOTkzNDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk5MzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMjY1ODUsIDEyNjU5MCwgMTI2NTk1LCAxMjY2MDAsIDEyNjYwNSwgMTI2NjEwLCAxMjY2MTUsIDEyNjYyMiwgCi0gICAgMTI2NjI5LCAxMjY2MzYsIDEyNjY0MywgMTI2NjQ4LCAxMjY2NTMsIDEyNjY1OCwgMTI2NjYzLCAxMjY2NzAsIDEyNjY3NiwgCi0gICAgMTI2NjgzLCAxMjY2OTAsIDEyNjY5NywgMTI2NzAyLCAxMjY3MDcsIDEyNjcxMiwgMTI2NzE3LCAxMjY3MjIsIDEyNjcyOSwgCi0gICAgMTI2NzM2LCAxMjY3NDEsIDEyNjc0NiwgMTI2NzUzLCAxMjY3NjAsIDEyNjc2OCwgMTI2Nzc2LCAxMjY3ODMsIDEyNjc5MCwgCi0gICAgMTI2Nzk4LCAxMjY4MDYsIDEyNjgxNCwgMTI2ODIxLCAxMjY4MzEsIDEyNjg0MiwgMTI2ODQ3LCAxMjY4NTQsIDEyNjg2MSwgCi0gICAgMTI2ODY4LCAxMjY4NzYsIDEyNjg4NCwgMTI2ODk1LCAxMjY5MDMsIDEyNjkxMSwgMTI2OTE5LCAxMjY5MjQsIDEyNjkyOSwgCi0gICAgMTI2OTM0LCAxMjY5MzksIDEyNjk0NCwgMTI2OTQ5LCAxMjY5NTQsIDEyNjk1OSwgMTI2OTY0LCAxMjY5NjksIDEyNjk3NCwgCi0gICAgMTI2OTc5LCAxMjY5ODYsIDEyNjk5MSwgMTI2OTk2LCAxMjcwMDMsIDEyNzAwOCwgMTI3MDEzLCAxMjcwMTgsIDEyNzAyMywgCi0gICAgMTI3MDI4LCAxMjcwMzMsIDEyNzAzOCwgMTI3MDQzLCAxMjcwNDgsIDEyNzA1MywgMTI3MDU4LCAxMjcwNjMsIDEyNzA3MCwgCi0gICAgMTI3MDc4LCAxMjcwODMsIDEyNzA4OCwgMTI3MDk1LCAxMjcxMDAsIDEyNzEwNSwgMTI3MTEwLCAxMjcxMTcsIDEyNzEyMiwgCi0gICAgMTI3MTI5LCAxMjcxMzQsIDEyNzE0MSwgMTI3MTQ2LCAxMjcxNTUsIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgCi0gICAgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAxMjcyMDQsIDEyNzIwOSwgMTI3MjE0LCAxMjcyMTksIDEyNzIyNCwgCi0gICAgMTI3MjI5LCAxMjcyMzcsIDEyNzI0NSwgMTI3MjUwLCAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjgyLCAxMjcyODYsIDEyNzI5MCwgMTI3Mjk0LCAKLSAgICAxMjcyOTgsIDEyNzMwMiwgMTI3MzA2LCAxMjczMTAsIDEyNzMxNCwgMTI3MzE4LCAxMjczMjIsIDEyNzMyNiwgMTI3MzMwLCAKLSAgICAxMjczMzQsIDEyNzMzOCwgMTI3MzQyLCAxMjczNDYsIDEyNzM1MCwgMTI3MzU0LCAxMjczNTgsIDEyNzM2MiwgMTI3MzY2LCAKLSAgICAxMjczNzAsIDEyNzM3NCwgMTI3Mzc4LCAxMjczODIsIDEyNzM4NiwgMTI3MzkwLCAxMjczOTQsIDEyNzM5OCwgMTI3NDAyLCAKLSAgICAxMjc0MDYsIDEyNzQxMCwgMTI3NDE0LCAxMjc0MTgsIDEyNzQyMiwgMTI3NDI2LCAxMjc0MzAsIDEyNzQzNCwgMTI3NDM4LCAKLSAgICAxMjc0NDIsIDEyNzQ0NiwgMTI3NDUwLCAxMjc0NTQsIDEyNzQ1OCwgMTI3NDYyLCAxMjc0NjYsIDEyNzQ3MCwgMTI3NDc0LCAKLSAgICAxMjc0NzgsIDEyNzQ4MiwgMTI3NDg2LCAxMjc0OTAsIDEyNzQ5NCwgMTI3NDk4LCAxMjc1MDIsIDEyNzUwNiwgMTI3NTEwLCAKLSAgICAxMjc1MTQsIDEyNzUxOCwgMTI3NTIyLCAxMjc1MjYsIDEyNzUzMCwgMTI3NTM0LCAxMjc1MzgsIDEyNzU0MiwgMTI3NTQ2LCAKLSAgICAxMjc1NTAsIDEyNzU1NCwgMTI3NTU4LCAxMjc1NjIsIDEyNzU2NiwgMTI3NTcwLCAxMjc1NzQsIDEyNzU3OCwgMTI3NTgyLCAKLSAgICAxMjc1ODYsIDEyNzU5MCwgMTI3NTk0LCAxMjc1OTgsIDEyNzYwMiwgMTI3NjA2LCAxMjc2MTAsIDEyNzYxNCwgMTI3NjE4LCAKLSAgICAxMjc2MjIsIDEyNzYyNiwgMTI3NjMwLCAxMjc2MzQsIDEyNzYzOCwgMTI3NjQyLCAxMjc2NDYsIDEyNzY1MCwgMTI3NjU0LCAKLSAgICAxMjc2NTgsIDEyNzY2MiwgMTI3NjY2LCAxMjc2NzAsIDEyNzY3NCwgMTI3Njc4LCAxMjc2ODIsIDEyNzY4NiwgMTI3NjkwLCAKLSAgICAxMjc2OTQsIDEyNzY5OCwgMTI3NzAyLCAxMjc3MDYsIDEyNzcxMCwgMTI3NzE0LCAxMjc3MTgsIDEyNzcyMiwgMTI3NzI2LCAKLSAgICAxMjc3MzAsIDEyNzczNCwgMTI3NzM4LCAxMjc3NDIsIDEyNzc0NiwgMTI3NzUwLCAxMjc3NTQsIDEyNzc1OCwgMTI3NzYyLCAKLSAgICAxMjc3NjYsIDEyNzc3MCwgMTI3Nzc0LCAxMjc3NzgsIDEyNzc4MiwgMTI3Nzg2LCAxMjc3OTAsIDEyNzc5NCwgMTI3Nzk4LCAKLSAgICAxMjc4MDIsIDEyNzgwNiwgMTI3ODEwLCAxMjc4MTQsIDEyNzgxOCwgMTI3ODIyLCAxMjc4MjYsIDEyNzgzMCwgMTI3ODM0LCAKLSAgICAxMjc4MzgsIDEyNzg0MiwgMTI3ODQ2LCAxMjc4NTAsIDEyNzg1NCwgMTI3ODU4LCAxMjc4NjIsIDEyNzg2NiwgMTI3ODcwLCAKLSAgICAxMjc4NzQsIDEyNzg3OCwgMTI3ODgyLCAxMjc4ODYsIDEyNzg5MCwgMTI3ODk0LCAxMjc4OTgsIDEyNzkwMiwgMTI3OTA2LCAKLSAgICAxMjc5MTAsIDEyNzkxNCwgMTI3OTE4LCAxMjc5MjIsIDEyNzkyNiwgMTI3OTMwLCAxMjc5MzQsIDEyNzkzOCwgMTI3OTQyLCAKLSAgICAxMjc5NDYsIDEyNzk1MCwgMTI3OTU0LCAxMjc5NTgsIDEyNzk2MiwgMTI3OTY2LCAxMjc5NzAsIDEyNzk3NCwgMTI3OTc4LCAKLSAgICAxMjc5ODIsIDEyNzk4NiwgMTI3OTkwLCAxMjc5OTQsIDEyNzk5OCwgMTI4MDAyLCAxMjgwMDYsIDEyODAxMCwgMTI4MDE0LCAKLSAgICAxMjgwMTgsIDEyODAyMiwgMTI4MDI2LCAxMjgwMzAsIDEyODAzNCwgMTI4MDM4LCAxMjgwNDIsIDEyODA0NiwgMTI4MDUwLCAKLSAgICAxMjgwNTQsIDEyODA1OCwgMTI4MDYyLCAxMjgwNjYsIDEyODA3MCwgMTI4MDc0LCAxMjgwNzgsIDEyODA4MiwgMTI4MDg2LCAKLSAgICAxMjgwOTAsIDEyODA5NCwgMTI4MDk4LCAxMjgxMDIsIDEyODEwNiwgMTI4MTEwLCAxMjgxMTQsIDEyODExOCwgMTI4MTIyLCAKLSAgICAxMjgxMjYsIDEyODEzMCwgMTI4MTM0LCAxMjgxMzgsIDEyODE0MiwgMTI4MTQ2LCAxMjgxNTAsIDEyODE1NCwgMTI4MTU4LCAKLSAgICAxMjgxNjIsIDEyODE2NiwgMTI4MTcwLCAxMjgxNzQsIDEyODE3OCwgMTI4MTgyLCAxMjgxODYsIDEyODE5MCwgMTI4MTk0LCAKLSAgICAxMjgxOTgsIDEyODIwMiwgMTI4MjA2LCAxMjgyMTAsIDEyODIxNCwgMTI4MjE4LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMwLCAKLSAgICAxMjgyMzQsIDEyODIzOCwgMTI4MjQyLCAxMjgyNDYsIDEyODI1MCwgMTI4MjU0LCAxMjgyNTgsIDEyODI2MiwgMTI4MjY2LCAKLSAgICAxMjgyNzAsIDEyODI3NCwgMTI4Mjc4LCAxMjgyODIsIDEyODI4NiwgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAKLSAgICAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTgsIDEyODMyMiwgMTI4MzI2LCAxMjgzMzAsIDEyODMzNCwgMTI4MzM4LCAKLSAgICAxMjgzNDIsIDEyODM0NiwgMTI4MzUwLCAxMjgzNTQsIDEyODM1OCwgMTI4MzYyLCAxMjgzNjYsIDEyODM3MCwgMTI4Mzc0LCAKLSAgICAxMjgzNzgsIDEyODM4MiwgMTI4Mzg2LCAxMjgzOTAsIDEyODM5NCwgMTI4Mzk4LCAxMjg0MDIsIDEyODQwNiwgMTI4NDEwLCAKLSAgICAxMjg0MTQsIDEyODQxOCwgMTI4NDIyLCAxMjg0MjYsIDEyODQzMCwgMTI4NDM0LCAxMjg0MzgsIDEyODQ0MiwgMTI4NDQ2LCAKLSAgICAxMjg0NTAsIDEyODQ1NCwgMTI4NDU4LCAxMjg0NjIsIDEyODQ2NiwgMTI4NDcwLCAxMjg0NzQsIDEyODQ3OCwgMTI4NDgyLCAKLSAgICAxMjg0ODYsIDEyODQ5MCwgMTI4NDk0LCAxMjg0OTgsIDEyODUwMiwgMTI4NTA2LCAxMjg1MTAsIDEyODUxNCwgMTI4NTE4LCAKLSAgICAxMjg1MjIsIDEyODUyNiwgMTI4NTMwLCAxMjg1MzQsIDEyODUzOCwgMTI4NTQyLCAxMjg1NDYsIDEyODU1MCwgMTI4NTU0LCAKLSAgICAxMjg1NTgsIDEyODU2MiwgMTI4NTY2LCAxMjg1NzAsIDEyODU3NCwgMTI4NTc4LCAxMjg1ODIsIDEyODU4NiwgMTI4NTkwLCAKLSAgICAxMjg1OTQsIDEyODU5OCwgMTI4NjAyLCAxMjg2MDYsIDEyODYxMCwgMTI4NjE0LCAxMjg2MTgsIDEyODYyMiwgMTI4NjI2LCAKLSAgICAxMjg2MzAsIDEyODYzNCwgMTI4NjM4LCAxMjg2NDIsIDEyODY0NiwgMTI4NjUwLCAxMjg2NTQsIDEyODY1OCwgMTI4NjYyLCAKLSAgICAxMjg2NjYsIDEyODY3MCwgMTI4Njc0LCAxMjg2NzgsIDEyODY4MiwgMTI4Njg2LCAxMjg2OTAsIDEyODY5NCwgMTI4Njk4LCAKLSAgICAxMjg3MDIsIDEyODcwNiwgMTI4NzEwLCAxMjg3MTQsIDEyODcxOCwgMTI4NzIyLCAxMjg3MjYsIDEyODczMCwgMTI4NzM0LCAKLSAgICAxMjg3MzgsIDEyODc0MiwgMTI4NzQ2LCAxMjg3NTAsIDEyODc1NCwgMTI4NzU4LCAxMjg3NjIsIDEyODc2NiwgMTI4NzcwLCAKLSAgICAxMjg3NzQsIDEyODc3OCwgMTI4NzgyLCAxMjg3ODYsIDEyODc5MCwgMTI4Nzk0LCAxMjg3OTgsIDEyODgwMiwgMTI4ODA2LCAKLSAgICAxMjg4MTAsIDEyODgxNCwgMTI4ODE4LCAxMjg4MjIsIDEyODgyNiwgMTI4ODMwLCAxMjg4MzQsIDEyODgzOCwgMTI4ODQyLCAKLSAgICAxMjg4NDYsIDEyODg1MCwgMTI4ODU0LCAxMjg4NTgsIDEyODg2MiwgMTI4ODY2LCAxMjg4NzAsIDEyODg3NCwgMTI4ODc4LCAKLSAgICAxMjg4ODIsIDEyODg4NiwgMTI4ODkwLCAxMjg4OTQsIDEyODg5OCwgMTI4OTAyLCAxMjg5MDYsIDEyODkxMCwgMTI4OTE0LCAKLSAgICAxMjg5MTgsIDEyODkyMiwgMTI4OTI2LCAxMjg5MzAsIDEyODkzNCwgMTI4OTM4LCAxMjg5NDIsIDEyODk0NiwgMTI4OTUwLCAKLSAgICAxMjg5NTQsIDEyODk1OCwgMTI4OTYyLCAxMjg5NjYsIDEyODk3MCwgMTI4OTc0LCAxMjg5NzgsIDEyODk4MiwgMTI4OTg2LCAKLSAgICAxMjg5OTAsIDEyODk5NCwgMTI4OTk4LCAxMjkwMDIsIDEyOTAwNiwgMTI5MDEwLCAxMjkwMTQsIDEyOTAxOCwgMTI5MDIyLCAKLSAgICAxMjkwMjYsIDEyOTAzMCwgMTI5MDM0LCAxMjkwMzgsIDEyOTA0MiwgMTI5MDQ2LCAxMjkwNTAsIDEyOTA1NCwgMTI5MDU4LCAKLSAgICAxMjkwNjIsIDEyOTA2NiwgMTI5MDcwLCAxMjkwNzQsIDEyOTA3OCwgMTI5MDgyLCAxMjkwODYsIDEyOTA5MCwgMTI5MDk0LCAKLSAgICAxMjkwOTgsIDEyOTEwMiwgMTI5MTA2LCAxMjkxMTAsIDEyOTExNCwgMTI5MTE4LCAxMjkxMjIsIDEyOTEyNiwgMTI5MTMwLCAKLSAgICAxMjkxMzQsIDEyOTEzOCwgMTI5MTQyLCAxMjkxNDYsIDEyOTE1MCwgMTI5MTU0LCAxMjkxNTgsIDEyOTE2MiwgMTI5MTY2LCAKLSAgICAxMjkxNzAsIDEyOTE3NCwgMTI5MTc4LCAxMjkxODIsIDEyOTE4NiwgMTI5MTkwLCAxMjkxOTQsIDEyOTE5OCwgMTI5MjAyLCAKLSAgICAxMjkyMDYsIDEyOTIxMCwgMTI5MjE0LCAxMjkyMTgsIDEyOTIyMiwgMTI5MjI2LCAxMjkyMzAsIDEyOTIzNCwgMTI5MjM4LCAKLSAgICAxMjkyNDIsIDEyOTI0NiwgMTI5MjUwLCAxMjkyNTQsIDEyOTI1OCwgMTI5MjYyLCAxMjkyNjYsIDEyOTI3MCwgMTI5Mjc0LCAKLSAgICAxMjkyNzgsIDEyOTI4MiwgMTI5Mjg2LCAxMjkyOTAsIDEyOTI5NCwgMTI5Mjk4LCAxMjkzMDIsIDEyOTMwNiwgMTI5MzEwLCAKLSAgICAxMjkzMTQsIDEyOTMxOCwgMTI5MzIyLCAxMjkzMjYsIDEyOTMzMCwgMTI5MzM0LCAxMjkzMzgsIDEyOTM0MiwgMTI5MzQ2LCAKLSAgICAxMjkzNTAsIDEyOTM1NCwgMTI5MzU4LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcwLCAxMjkzNzQsIDEyOTM3OCwgMTI5MzgyLCAKLSAgICAxMjkzODYsIDEyOTM5MCwgMTI5Mzk0LCAxMjkzOTgsIDEyOTQwMiwgMTI5NDA2LCAxMjk0MTAsIDEyOTQxNCwgMTI5NDE4LCAKLSAgICAxMjk0MjIsIDEyOTQyNiwgMTI5NDMwLCAxMjk0MzQsIDEyOTQzOCwgMTI5NDQyLCAxMjk0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzU1LCAKKyAgICA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIDk5Mzg2LCA5OTM5MiwgOTkzOTgsIDk5NDAzLCA5OTQwOCwgCisgICAgOTk0MTQsIDk5NDIwLCA5OTQyNiwgOTk0MzIsIDk5NDM4LCA5OTQ0NCwgOTk0NTAsIDk5NDU2LCA5OTQ2MiwgOTk0NjgsIAorICAgIDk5NDc0LCA5OTQ4MCwgOTk0ODUsIDk5NDkxLCA5OTQ5NywgOTk1MDMsIDk5NTA5LCA5OTUxNSwgOTk1MjAsIDk5NTI2LCAKKyAgICA5OTUzMiwgOTk1MzgsIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjMsIDk5NTY4LCA5OTU3MiwgCisgICAgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxOCwgOTk2MjMsIAorICAgIDk5NjI3LCA5OTYzMiwgOTk2MzcsIDk5NjQyLCA5OTY0NiwgMCwgMCwgMCwgMCwgOTk2NTEsIDk5NjU5LCA5OTY2NiwgCisgICAgOTk2NzIsIDk5Njc4LCA5OTY4MiwgOTk2ODYsIDk5NjkwLCA5OTY5NCwgOTk2OTgsIDk5NzAyLCA5OTcwNywgOTk3MTEsIAorICAgIDk5NzE2LCA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCAwLCAwLCA5OTc1MSwgOTk3NTcsIAorICAgIDk5NzYzLCA5OTc2OSwgOTk3NzYsIDk5NzgzLCA5OTc5MCwgOTk3OTcsIDk5ODA0LCA5OTgxMSwgOTk4MTcsIDk5ODIzLCAKKyAgICA5OTgyOSwgOTk4MzYsIDk5ODQzLCA5OTg1MCwgOTk4NTcsIDk5ODY0LCA5OTg3MSwgOTk4NzgsIDk5ODg1LCA5OTg5MiwgCisgICAgOTk4OTksIDk5OTA2LCA5OTkxMywgOTk5MjAsIDk5OTI3LCA5OTkzNCwgOTk5NDIsIDk5OTUwLCA5OTk1OCwgOTk5NjcsIAorICAgIDk5OTc2LCA5OTk4NSwgOTk5OTQsIDEwMDAwMywgMTAwMDEyLCAxMDAwMTksIDEwMDAyNiwgMTAwMDMzLCAxMDAwNDEsIAorICAgIDEwMDA0OSwgMTAwMDU3LCAxMDAwNjUsIDEwMDA3MywgMTAwMDgxLCAxMDAwODksIDEwMDA5MywgMTAwMDk4LCAxMDAxMDMsIAorICAgIDAsIDEwMDEwOSwgMTAwMTE0LCAwLCAwLCAwLCAwLCAwLCAxMDAxMTksIDEwMDEyNSwgMTAwMTMyLCAxMDAxMzcsIDEwMDE0MiwgCisgICAgMTAwMTQ2LCAxMDAxNTEsIDEwMDE1NiwgMCwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMCwgMTAwMTc2LCAxMDAxODEsIAorICAgIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIAorICAgIDEwMDIzMSwgMTAwMjM1LCAxMDAyNDAsIDEwMDI0NSwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjYzLCAxMDAyNjgsIAorICAgIDEwMDI3MywgMTAwMjc4LCAxMDAyODMsIDEwMDI4OCwgMTAwMjkzLCAxMDAyOTcsIDEwMDMwMiwgMCwgMCwgMCwgMCwgCisgICAgMTAwMzA3LCAxMDAzMTMsIDEwMDMxOCwgMCwgMCwgMCwgMCwgMTAwMzIzLCAxMDAzMjcsIDEwMDMzMSwgMTAwMzM1LCAKKyAgICAxMDAzMzksIDEwMDM0MywgMTAwMzQ4LCAxMDAzNTMsIDEwMDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMzY1LCAKKyAgICAxMDAzNzEsIDEwMDM3OCwgMTAwMzg0LCAxMDAzOTEsIDEwMDM5NywgMTAwNDAzLCAxMDA0MDksIDEwMDQxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTAwNDIyLCAxMDA0MzAsIDEwMDQzOCwgMTAwNDQ2LCAxMDA0NTQsIDEwMDQ2MiwgMTAwNDcwLCAKKyAgICAxMDA0NzgsIDEwMDQ4NiwgMTAwNDk0LCAxMDA1MDIsIDEwMDUxMCwgMTAwNTE4LCAxMDA1MjYsIDEwMDUzNCwgMTAwNTQyLCAKKyAgICAxMDA1NTAsIDEwMDU1OCwgMTAwNTY2LCAxMDA1NzQsIDEwMDU4MiwgMTAwNTkwLCAxMDA1OTgsIDEwMDYwNiwgMTAwNjE0LCAKKyAgICAxMDA2MjIsIDEwMDYzMCwgMTAwNjM4LCAxMDA2NDYsIDEwMDY1NCwgMTAwNjYxLCAxMDA2NjksIDEwMDY3NywgMTAwNjg0LCAKKyAgICAxMDA2OTEsIDEwMDY5OCwgMTAwNzA1LCAxMDA3MTIsIDEwMDcxOSwgMTAwNzI2LCAxMDA3MzMsIDEwMDc0MCwgMTAwNzQ3LCAKKyAgICAxMDA3NTQsIDEwMDc2MSwgMTAwNzY4LCAxMDA3NzUsIDEwMDc4MiwgMTAwNzg5LCAxMDA3OTYsIDEwMDgwMywgMTAwODEwLCAKKyAgICAxMDA4MTcsIDEwMDgyNCwgMTAwODMxLCAxMDA4MzgsIDEwMDg0NSwgMTAwODUyLCAxMDA4NTksIDEwMDg2NiwgMTAwODczLCAKKyAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA5MDAsIDEwMDkwNSwgMTAwOTEwLCAKKyAgICAxMDA5MTUsIDEwMDkyMCwgMTAwOTI1LCAxMDA5MzAsIDEwMDkzNSwgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAKKyAgICAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAxMDA5NzUsIDEwMDk4MCwgMTAwOTg1LCAxMDA5OTAsIDEwMDk5NSwgMTAxMDAwLCAKKyAgICAxMDEwMDUsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMwLCAxMDEwMzUsIDEwMTA0MCwgMTAxMDQ1LCAKKyAgICAxMDEwNTAsIDEwMTA1NSwgMTAxMDYwLCAxMDEwNjUsIDEwMTA3MCwgMTAxMDc1LCAxMDEwODAsIDEwMTA4NSwgMTAxMDkxLCAKKyAgICAwLCAwLCAwLCAwLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMTAsIDEwMTExNSwgMTAxMTIxLCAxMDExMjcsIAorICAgIDEwMTEzMywgMTAxMTQzLCAxMDExNTIsIDEwMTE1OCwgMTAxMTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDExNzMsIDEwMTE3NywgMTAxMTgyLCAxMDExODcsIDEwMTE5MiwgMTAxMTk3LCAxMDEyMDIsIDEwMTIwNywgMTAxMjEyLCAKKyAgICAxMDEyMTYsIDEwMTIyMSwgMTAxMjI1LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjM5LCAxMDEyNDMsIDEwMTI0OCwgMTAxMjUzLCAKKyAgICAxMDEyNTgsIDEwMTI2MywgMTAxMjY4LCAxMDEyNzMsIDEwMTI3OCwgMTAxMjgzLCAxMDEyODgsIDEwMTI5MywgMTAxMjk4LCAKKyAgICAxMDEzMDMsIDEwMTMwOCwgMTAxMzEzLCAxMDEzMTgsIDEwMTMyMywgMTAxMzI4LCAxMDEzMzMsIDEwMTMzOCwgMTAxMzQzLCAKKyAgICAxMDEzNDgsIDEwMTM1MywgMTAxMzU4LCAxMDEzNjMsIDEwMTM2OCwgMTAxMzczLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAKKyAgICAxMDEzOTMsIDEwMTM5OCwgMTAxNDAzLCAxMDE0MDgsIDEwMTQxMywgMTAxNDE4LCAxMDE0MjMsIDEwMTQyOCwgMTAxNDMzLCAKKyAgICAwLCAwLCAwLCAxMDE0MzgsIDEwMTQ0MywgMTAxNDUyLCAxMDE0NjAsIDEwMTQ2OSwgMTAxNDc4LCAxMDE0ODksIDEwMTUwMCwgCisgICAgMTAxNTA3LCAxMDE1MTQsIDEwMTUyMSwgMTAxNTI4LCAxMDE1MzUsIDEwMTU0MiwgMTAxNTQ5LCAxMDE1NTYsIDEwMTU2MywgCisgICAgMTAxNTcwLCAxMDE1NzcsIDEwMTU4NCwgMTAxNTkxLCAxMDE1OTgsIDEwMTYwNSwgMTAxNjEyLCAxMDE2MTksIDEwMTYyNiwgCisgICAgMTAxNjMzLCAxMDE2NDAsIDEwMTY0NywgMCwgMCwgMTAxNjU0LCAxMDE2NjAsIDEwMTY2NiwgMTAxNjcyLCAxMDE2NzgsIAorICAgIDEwMTY4NSwgMTAxNjkyLCAxMDE3MDAsIDEwMTcwOCwgMTAxNzE1LCAxMDE3MjIsIDEwMTcyOSwgMTAxNzM2LCAxMDE3NDMsIAorICAgIDEwMTc1MCwgMTAxNzU3LCAxMDE3NjQsIDEwMTc3MSwgMTAxNzc4LCAxMDE3ODUsIDEwMTc5MiwgMTAxNzk5LCAxMDE4MDYsIAorICAgIDEwMTgxMywgMTAxODIwLCAxMDE4MjcsIDEwMTgzNCwgMCwgMCwgMCwgMCwgMCwgMTAxODQxLCAxMDE4NDcsIDEwMTg1MywgCisgICAgMTAxODU5LCAxMDE4NjUsIDEwMTg3MiwgMTAxODc5LCAxMDE4ODcsIDEwMTg5NSwgMTAxOTAyLCAxMDE5MDksIDEwMTkxNiwgCisgICAgMTAxOTIzLCAxMDE5MzAsIDEwMTkzNywgMTAxOTQ0LCAxMDE5NTEsIDEwMTk1OCwgMTAxOTY1LCAxMDE5NzIsIDEwMTk3OSwgCisgICAgMTAxOTg2LCAxMDE5OTMsIDEwMjAwMCwgMTAyMDA3LCAxMDIwMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjAyMSwgCisgICAgMTAyMDI4LCAxMDIwMzcsIDEwMjA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDU3LCAKKyAgICAxMDIwNjMsIDEwMjA2OSwgMTAyMDc1LCAxMDIwODEsIDEwMjA4OCwgMTAyMDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk0NTAsIDAsIAorICAgIDEwMjEwMywgMTAyMTEwLCAxMDIxMTcsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjEsIAorICAgIDEwMjE2OSwgMTAyMTc3LCAxMDIxODUsIDEwMjE5MywgMTAyMjAxLCAxMDIyMDksIDEwMjIxNywgMTAyMjI1LCAxMDIyMzMsIAorICAgIDEwMjI0MSwgMTAyMjQ5LCAxMDIyNTcsIDEwMjI2NSwgMTAyMjczLCAxMDIyODEsIDEwMjI4OSwgMTAyMjk3LCAxMDIzMDUsIAorICAgIDEwMjMxMywgMTAyMzIxLCAxMDIzMjksIDEwMjMzNywgMTAyMzQ1LCAxMDIzNTMsIDEwMjM2MSwgMTAyMzY5LCAxMDIzNzcsIAorICAgIDEwMjM4NSwgMTAyMzkzLCAxMDI0MDEsIDEwMjQwOSwgMTAyNDE3LCAxMDI0MjUsIDEwMjQzMywgMTAyNDQxLCAxMDI0NDksIAorICAgIDEwMjQ1NywgMTAyNDY1LCAxMDI0NzMsIDEwMjQ4MSwgMTAyNDg5LCAxMDI0OTcsIDEwMjUwNSwgMTAyNTEzLCAxMDI1MjEsIAorICAgIDEwMjUyOSwgMTAyNTM3LCAxMDI1NDUsIDEwMjU1MywgMTAyNTYxLCAxMDI1NjksIDEwMjU3NywgMTAyNTg1LCAxMDI1OTMsIAorICAgIDEwMjYwMSwgMTAyNjA5LCAxMDI2MTcsIDEwMjYyNSwgMTAyNjMzLCAxMDI2NDEsIDEwMjY0OSwgMTAyNjU3LCAxMDI2NjUsIAorICAgIDEwMjY3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI5NDU0LCAxMjk0NTcsIDEyOTQ2MSwgMTI5NDY1LCAxMjk0NjgsIDEyOTQ3MiwgMTI5NDc2LCAKLSAgICAxMjk0NzksIDEyOTQ4MiwgMTI5NDg2LCAxMjk0OTAsIDEyOTQ5MywgMTI5NDk2LCAxMjk0OTksIDEyOTUwMiwgMTI5NTA3LCAKLSAgICAxMjk1MTAsIDEyOTUxNCwgMTI5NTE3LCAxMjk1MjAsIDEyOTUyMywgMTI5NTI2LCAxMjk1MjksIDEyOTUzMiwgMTI5NTM1LCAKLSAgICAxMjk1MzgsIDEyOTU0MSwgMTI5NTQ0LCAxMjk1NDcsIDEyOTU1MSwgMTI5NTU1LCAxMjk1NTksIDEyOTU2MywgMTI5NTY4LCAKLSAgICAxMjk1NzMsIDEyOTU3OSwgMTI5NTg1LCAxMjk1OTEsIDEyOTU5NiwgMTI5NjAyLCAxMjk2MDgsIDEyOTYxNCwgMTI5NjE5LCAKLSAgICAxMjk2MjUsIDEyOTYzMSwgMTI5NjM2LCAxMjk2NDEsIDEyOTY0NywgMTI5NjUyLCAxMjk2NTgsIDEyOTY2NCwgMTI5NjY5LCAKLSAgICAxMjk2NzUsIDEyOTY4MSwgMTI5Njg2LCAxMjk2OTIsIDEyOTY5OCwgMTI5NzA0LCAxMjk3MTAsIDEyOTcxNiwgMTI5NzIwLCAKLSAgICAxMjk3MjUsIDEyOTcyOSwgMTI5NzM0LCAxMjk3MzgsIDEyOTc0MywgMTI5NzQ4LCAxMjk3NTQsIDEyOTc2MCwgMTI5NzY2LCAKLSAgICAxMjk3NzEsIDEyOTc3NywgMTI5NzgzLCAxMjk3ODksIDEyOTc5NCwgMTI5ODAwLCAxMjk4MDYsIDEyOTgxMSwgMTI5ODE2LCAKLSAgICAxMjk4MjIsIDEyOTgyNywgMTI5ODMzLCAxMjk4MzksIDEyOTg0NCwgMTI5ODUwLCAxMjk4NTYsIDEyOTg2MSwgMTI5ODY3LCAKLSAgICAxMjk4NzMsIDEyOTg3OSwgMTI5ODg1LCAxMjk4OTEsIDEyOTg5NiwgMTI5OTAwLCAxMjk5MDUsIDEyOTkwNywgMTI5OTExLCAKLSAgICAxMjk5MTQsIDEyOTkxNywgMTI5OTIwLCAxMjk5MjMsIDEyOTkyNiwgMTI5OTI5LCAxMjk5MzIsIDEyOTkzNSwgMTI5OTM4LCAKLSAgICAxMjk5NDEsIDEyOTk0NCwgMTI5OTQ3LCAxMjk5NTAsIDEyOTk1MywgMTI5OTU2LCAxMjk5NTksIDEyOTk2MiwgMTI5OTY1LCAKLSAgICAxMjk5NjgsIDEyOTk3MSwgMTI5OTc0LCAxMjk5NzcsIDEyOTk4MCwgMTI5OTgzLCAxMjk5ODYsIDEyOTk4OSwgMTI5OTkyLCAKLSAgICAxMjk5OTUsIDEyOTk5OCwgMTMwMDAxLCAxMzAwMDQsIDEzMDAwNywgMTMwMDEwLCAxMzAwMTMsIDEzMDAxNiwgMTMwMDE5LCAKLSAgICAxMzAwMjIsIDEzMDAyNSwgMTMwMDI4LCAxMzAwMzEsIDEzMDAzNCwgMTMwMDM3LCAxMzAwNDAsIDEzMDA0MywgMTMwMDQ2LCAKLSAgICAxMzAwNDksIDEzMDA1MiwgMTMwMDU1LCAxMzAwNTgsIDEzMDA2MSwgMTMwMDY0LCAxMzAwNjcsIDEzMDA3MCwgMTMwMDczLCAKLSAgICAxMzAwNzYsIDEzMDA3OSwgMTMwMDgyLCAxMzAwODUsIDEzMDA4OCwgMTMwMDkxLCAxMzAwOTQsIDEzMDA5NywgMTMwMTAwLCAKLSAgICAxMzAxMDMsIDEzMDEwNiwgMTMwMTA5LCAxMzAxMTIsIDEzMDExNSwgMTMwMTE4LCAxMzAxMjEsIDEzMDEyNCwgMTMwMTI3LCAKLSAgICAxMzAxMzAsIDEzMDEzMywgMTMwMTM2LCAxMzAxMzksIDEzMDE0MiwgMTMwMTQ1LCAxMzAxNDgsIDEzMDE1MSwgMTMwMTU0LCAKLSAgICAxMzAxNTcsIDEzMDE2MCwgMTMwMTYzLCAxMzAxNjYsIDEzMDE2OSwgMTMwMTcyLCAxMzAxNzUsIDEzMDE3OCwgMTMwMTgxLCAKLSAgICAxMzAxODQsIDEzMDE4NywgMTMwMTkwLCAxMzAxOTMsIDEzMDE5NiwgMTMwMTk5LCAxMzAyMDIsIDEzMDIwNSwgMTMwMjA4LCAKLSAgICAxMzAyMTEsIDEzMDIxNCwgMTMwMjE3LCAxMzAyMjAsIDEzMDIyMywgMTMwMjI2LCAxMzAyMjksIDEzMDIzMiwgMTMwMjM1LCAKLSAgICAxMzAyMzgsIDEzMDI0MSwgMTMwMjQ0LCAxMzAyNDcsIDEzMDI1MCwgMTMwMjUzLCAxMzAyNTYsIDEzMDI1OSwgMTMwMjYyLCAKLSAgICAxMzAyNjUsIDEzMDI2OCwgMTMwMjcxLCAxMzAyNzQsIDEzMDI3NywgMTMwMjgwLCAxMzAyODMsIDEzMDI4NiwgMTMwMjg5LCAKLSAgICAxMzAyOTIsIDEzMDI5NSwgMTMwMjk4LCAxMzAzMDEsIDEzMDMwNCwgMTMwMzA3LCAxMzAzMTAsIDEzMDMxMywgMTMwMzE2LCAKLSAgICAxMzAzMTksIDEzMDMyMiwgMTMwMzI1LCAxMzAzMjgsIDEzMDMzMSwgMTMwMzM0LCAxMzAzMzcsIDEzMDM0MCwgMTMwMzQzLCAKLSAgICAxMzAzNDYsIDEzMDM0OSwgMTMwMzUyLCAxMzAzNTUsIDEzMDM1OCwgMTMwMzYxLCAxMzAzNjQsIDEzMDM2NywgMTMwMzcwLCAKLSAgICAxMzAzNzMsIDEzMDM3NiwgMTMwMzc5LCAxMzAzODIsIDEzMDM4NSwgMTMwMzg4LCAxMzAzOTEsIDEzMDM5NCwgMTMwMzk3LCAKLSAgICAxMzA0MDAsIDEzMDQwMywgMTMwNDA2LCAxMzA0MDksIDEzMDQxMiwgMTMwNDE1LCAxMzA0MTgsIDEzMDQyMSwgMTMwNDI0LCAKLSAgICAxMzA0MjcsIDEzMDQzMCwgMTMwNDMzLCAxMzA0MzYsIDEzMDQzOSwgMTMwNDQyLCAxMzA0NDUsIDEzMDQ0OCwgMTMwNDUxLCAKLSAgICAxMzA0NTQsIDEzMDQ1NywgMTMwNDYwLCAxMzA0NjMsIDEzMDQ2NiwgMTMwNDY5LCAxMzA0NzIsIDEzMDQ3NSwgMTMwNDc4LCAKLSAgICAxMzA0ODEsIDEzMDQ4NCwgMTMwNDg3LCAxMzA0OTAsIDEzMDQ5MywgMTMwNDk2LCAxMzA0OTksIDEzMDUwMiwgMTMwNTA1LCAKLSAgICAxMzA1MDgsIDEzMDUxMSwgMTMwNTE0LCAxMzA1MTcsIDEzMDUyMCwgMTMwNTIzLCAxMzA1MjYsIDEzMDUyOSwgMTMwNTMyLCAKLSAgICAxMzA1MzUsIDEzMDUzOCwgMTMwNTQxLCAxMzA1NDQsIDEzMDU0NywgMTMwNTUwLCAxMzA1NTMsIDEzMDU1NiwgMTMwNTU5LCAKLSAgICAxMzA1NjIsIDEzMDU2NSwgMTMwNTY4LCAxMzA1NzEsIDEzMDU3NCwgMTMwNTc3LCAxMzA1ODAsIDEzMDU4MywgMTMwNTg2LCAKLSAgICAxMzA1ODksIDEzMDU5MiwgMTMwNTk1LCAxMzA1OTgsIDEzMDYwMSwgMTMwNjA0LCAxMzA2MDcsIDEzMDYxMCwgMTMwNjEzLCAKLSAgICAxMzA2MTYsIDEzMDYxOSwgMTMwNjIyLCAxMzA2MjUsIDEzMDYyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMwNjMxLCAxMzA2MzMsIDEzMDYzNSwgMTMwNjQwLCAxMzA2NDIsIDEzMDY0NywgMTMwNjQ5LCAKLSAgICAxMzA2NTQsIDEzMDY1NiwgMTMwNjYxLCAxMzA2NjMsIDEzMDY2NSwgMTMwNjY3LCAxMzA2NjksIDEzMDY3MSwgMTMwNjczLCAKLSAgICAxMzA2NzUsIDEzMDY3NywgMTMwNjc5LCAxMzA2ODIsIDEzMDY4NSwgMTMwNjg3LCAxMzA2ODksIDEzMDY5MywgMTMwNjk2LCAKLSAgICAxMzA3MDEsIDEzMDcwMywgMTMwNzA1LCAxMzA3MDcsIDEzMDcxMSwgMTMwNzE0LCAxMzA3MTYsIDEzMDcyMCwgMTMwNzIyLCAKLSAgICAxMzA3MjYsIDEzMDcyOCwgMTMwNzMyLCAxMzA3MzUsIDEzMDczNywgMTMwNzQxLCAxMzA3NDUsIDEzMDc0NywgMTMwNzUzLCAKLSAgICAxMzA3NTUsIDEzMDc2MCwgMTMwNzYyLCAxMzA3NjcsIDEzMDc2OSwgMTMwNzc0LCAxMzA3NzYsIDEzMDc4MSwgMTMwNzgzLCAKLSAgICAxMzA3ODYsIDEzMDc4OCwgMTMwNzkyLCAxMzA3OTQsIDEzMDgwMSwgMTMwODAzLCAxMzA4MDUsIDEzMDgwNywgMTMwODEyLCAKLSAgICAxMzA4MTQsIDEzMDgxNiwgMTMwODE4LCAxMzA4MjAsIDEzMDgyMiwgMTMwODI3LCAxMzA4MzEsIDEzMDgzMywgMTMwODM4LCAKLSAgICAxMzA4NDIsIDEzMDg0NCwgMTMwODQ5LCAxMzA4NTMsIDEzMDg1NSwgMTMwODYwLCAxMzA4NjQsIDEzMDg2NiwgMTMwODY4LCAKLSAgICAxMzA4NzAsIDEzMDg3MiwgMTMwODc2LCAxMzA4NzgsIDEzMDg4MywgMTMwODg1LCAxMzA4OTEsIDEzMDg5MywgMTMwODk5LCAKLSAgICAxMzA5MDEsIDEzMDkwMywgMTMwOTA1LCAxMzA5MDksIDEzMDkxMSwgMTMwOTE4LCAxMzA5MjAsIDEzMDkyNywgMTMwOTI5LCAKLSAgICAxMzA5MzQsIDEzMDkzOSwgMTMwOTQxLCAxMzA5NDcsIDEzMDk1MywgMTMwOTU1LCAxMzA5NjEsIDEzMDk2NiwgMTMwOTY4LCAKLSAgICAxMzA5NzQsIDEzMDk4MCwgMTMwOTgyLCAxMzA5ODgsIDEzMDk5NCwgMTMwOTk2LCAxMzEwMDIsIDEzMTAwNiwgMTMxMDA4LCAKLSAgICAxMzEwMTMsIDEzMTAxNSwgMTMxMDE3LCAxMzEwMjIsIDEzMTAyNCwgMTMxMDI2LCAxMzEwMzIsIDEzMTAzNCwgMTMxMDM5LCAKLSAgICAxMzEwNDMsIDEzMTA0NSwgMTMxMDUwLCAxMzEwNTQsIDEzMTA1NiwgMTMxMDYyLCAxMzEwNjQsIDEzMTA2OCwgMTMxMDcwLCAKLSAgICAxMzEwNzQsIDEzMTA3NiwgMTMxMDgzLCAxMzEwOTAsIDEzMTA5MiwgMTMxMDk5LCAxMzExMDYsIDEzMTEwOCwgMTMxMTEzLCAKLSAgICAxMzExMTUsIDEzMTEyMiwgMTMxMTI0LCAxMzExMjksIDEzMTEzMSwgMTMxMTM3LCAxMzExMzksIDEzMTE0MywgMTMxMTQ1LCAKLSAgICAxMzExNTEsIDEzMTE1MywgMTMxMTU3LCAxMzExNTksIDEzMTE2NSwgMTMxMTY3LCAxMzExNjksIDEzMTE3MSwgMTMxMTc2LCAKLSAgICAxMzExODEsIDEzMTE4MywgMTMxMTg1LCAxMzExOTQsIDEzMTE5OCwgMTMxMjA1LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAKLSAgICAxMzEyMzQsIDEzMTIzNiwgMTMxMjM4LCAxMzEyNDAsIDEzMTI0MiwgMTMxMjQ0LCAxMzEyNDYsIDEzMTI0OCwgMTMxMjUwLCAKLSAgICAxMzEyNTIsIDEzMTI1NCwgMTMxMjU2LCAxMzEyNTgsIDEzMTI2MCwgMTMxMjYyLCAxMzEyNjQsIDEzMTI2NiwgMTMxMjY4LCAKLSAgICAxMzEyNzAsIDEzMTI3MiwgMTMxMjc0LCAxMzEyNzYsIDEzMTI4MiwgMTMxMjg5LCAxMzEyOTQsIDEzMTI5OSwgMTMxMzEwLCAKLSAgICAxMzEzMTIsIDEzMTMxNCwgMTMxMzE2LCAxMzEzMTgsIDEzMTMyMCwgMTMxMzIyLCAxMzEzMjQsIDEzMTMyNiwgMTMxMzI4LCAKLSAgICAxMzEzMzAsIDEzMTMzMiwgMTMxMzM0LCAxMzEzMzYsIDEzMTMzOCwgMTMxMzQwLCAxMzEzNDIsIDEzMTM0NywgMTMxMzQ5LCAKLSAgICAxMzEzNTEsIDEzMTM1NywgMTMxMzY5LCAxMzEzODAsIDEzMTM4MiwgMTMxMzg0LCAxMzEzODYsIDEzMTM4OCwgMTMxMzkwLCAKLSAgICAxMzEzOTIsIDEzMTM5NCwgMTMxMzk2LCAxMzEzOTgsIDEzMTQwMCwgMTMxNDAyLCAxMzE0MDQsIDEzMTQwNiwgMTMxNDA4LCAKLSAgICAxMzE0MTAsIDEzMTQxMiwgMTMxNDE0LCAxMzE0MTYsIDEzMTQxOCwgMTMxNDIwLCAxMzE0MjIsIDEzMTQyNCwgMTMxNDI2LCAKLSAgICAxMzE0MjgsIDEzMTQzMCwgMTMxNDMyLCAxMzE0MzQsIDEzMTQzNiwgMTMxNDM4LCAxMzE0NDAsIDEzMTQ0MiwgMTMxNDQ0LCAKLSAgICAxMzE0NDYsIDEzMTQ0OCwgMTMxNDUwLCAxMzE0NTIsIDEzMTQ1NCwgMTMxNDU2LCAxMzE0NTgsIDEzMTQ2MCwgMTMxNDYyLCAKLSAgICAxMzE0NjQsIDEzMTQ2NiwgMTMxNDY4LCAxMzE0NzAsIDEzMTQ3MiwgMTMxNDc0LCAxMzE0NzYsIDEzMTQ3OCwgMTMxNDgwLCAKLSAgICAxMzE0ODIsIDEzMTQ4NCwgMTMxNDg2LCAxMzE0ODgsIDEzMTQ5MCwgMTMxNDkyLCAxMzE0OTQsIDEzMTQ5NiwgMTMxNDk4LCAKLSAgICAxMzE1MDAsIDEzMTUwMiwgMTMxNTA0LCAxMzE1MDYsIDEzMTUwOCwgMTMxNTEwLCAxMzE1MTIsIDEzMTUxNCwgMTMxNTE2LCAKLSAgICAxMzE1MTgsIDEzMTUyMCwgMTMxNTIyLCAxMzE1MjQsIDEzMTUyNiwgMTMxNTI4LCAxMzE1MzAsIDEzMTUzMiwgMTMxNTM0LCAKLSAgICAxMzE1MzYsIDEzMTUzOCwgMTMxNTQwLCAxMzE1NDIsIDEzMTU0NCwgMTMxNTQ2LCAxMzE1NDgsIDEzMTU1MCwgMTMxNTUyLCAKLSAgICAxMzE1NTQsIDEzMTU1NiwgMTMxNTU4LCAxMzE1NjAsIDEzMTU2MiwgMTMxNTY0LCAxMzE1NjYsIDEzMTU2OCwgMTMxNTcwLCAKLSAgICAxMzE1NzIsIDEzMTU3NCwgMTMxNTc2LCAxMzE1NzgsIDEzMTU4MCwgMTMxNTgyLCAxMzE1ODQsIDEzMTU4NiwgMTMxNTg4LCAKLSAgICAxMzE1OTAsIDEzMTU5MiwgMTMxNTk0LCAxMzE1OTYsIDEzMTU5OCwgMTMxNjAwLCAxMzE2MDIsIDEzMTYwNCwgMTMxNjA2LCAKLSAgICAxMzE2MDgsIDEzMTYxMCwgMTMxNjEyLCAxMzE2MTQsIDEzMTYxNiwgMTMxNjE4LCAxMzE2MjAsIDEzMTYyMiwgMTMxNjI0LCAKLSAgICAxMzE2MjYsIDEzMTYyOCwgMTMxNjMwLCAxMzE2MzIsIDEzMTYzNCwgMTMxNjM2LCAxMzE2MzgsIDEzMTY0MCwgMTMxNjQyLCAKLSAgICAxMzE2NDQsIDEzMTY0NiwgMTMxNjQ4LCAxMzE2NTAsIDEzMTY1MiwgMTMxNjU0LCAxMzE2NTYsIDEzMTY1OCwgMTMxNjYwLCAKLSAgICAxMzE2NjIsIDEzMTY2NCwgMTMxNjY2LCAxMzE2NjgsIDEzMTY3MCwgMTMxNjcyLCAxMzE2NzQsIDEzMTY3NiwgMTMxNjc4LCAKLSAgICAxMzE2ODAsIDEzMTY4MiwgMTMxNjg0LCAxMzE2ODYsIDEzMTY4OCwgMTMxNjkwLCAxMzE2OTIsIDEzMTY5NCwgMTMxNjk2LCAKLSAgICAxMzE2OTgsIDEzMTcwMCwgMTMxNzAyLCAxMzE3MDQsIDEzMTcwNiwgMTMxNzA4LCAxMzE3MTAsIDEzMTcxMiwgMTMxNzE0LCAKLSAgICAxMzE3MTYsIDEzMTcxOCwgMTMxNzIwLCAxMzE3MjIsIDEzMTcyNCwgMTMxNzI2LCAxMzE3MjgsIDEzMTczMCwgMTMxNzMyLCAKLSAgICAxMzE3MzQsIDEzMTczNiwgMTMxNzM4LCAxMzE3NDAsIDEzMTc0MiwgMTMxNzQ0LCAxMzE3NDYsIDEzMTc0OCwgMTMxNzUwLCAKLSAgICAxMzE3NTIsIDEzMTc1NCwgMTMxNzU2LCAxMzE3NTgsIDEzMTc2MCwgMTMxNzYyLCAxMzE3NjQsIDEzMTc2NiwgMTMxNzY4LCAKLSAgICAxMzE3NzAsIDEzMTc3MiwgMTMxNzc0LCAxMzE3NzYsIDEzMTc3OCwgMTMxNzgwLCAxMzE3ODIsIDEzMTc4NCwgMTMxNzg2LCAKLSAgICAxMzE3ODgsIDEzMTc5MCwgMTMxNzkyLCAxMzE3OTQsIDEzMTc5NiwgMTMxNzk4LCAxMzE4MDAsIDEzMTgwMiwgMTMxODA0LCAKLSAgICAxMzE4MDYsIDEzMTgwOCwgMTMxODEwLCAxMzE4MTIsIDEzMTgxNCwgMTMxODE2LCAxMzE4MTgsIDEzMTgyMCwgMTMxODIyLCAKLSAgICAxMzE4MjQsIDEzMTgyNiwgMTMxODI4LCAxMzE4MzAsIDEzMTgzMiwgMTMxODM0LCAxMzE4MzYsIDEzMTgzOCwgMTMxODQwLCAKLSAgICAxMzE4NDIsIDEzMTg0NCwgMTMxODQ2LCAxMzE4NDgsIDEzMTg1MCwgMTMxODUyLCAxMzE4NTQsIDEzMTg1NiwgMTMxODU4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkyLCAxMDI2OTgsIDEwMjcwNCwgCisgICAgMTAyNzEwLCAxMDI3MTYsIDEwMjcyMiwgMTAyNzI4LCAxMDI3MzQsIDEwMjczOSwgMTAyNzQ2LCAxMDI3NTIsIDEwMjc1OCwgCisgICAgMTAyNzY0LCAxMDI3NzAsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODcsIDEwMjc5MywgMTAyNzk5LCAxMDI4MDUsIDEwMjgxMSwgCisgICAgMTAyODE3LCAxMDI4MjMsIDEwMjgyOSwgMTAyODM1LCAxMDI4NDEsIDEwMjg0NiwgMTAyODUyLCAxMDI4NjAsIDEwMjg2OCwgCisgICAgMTAyODc0LCAxMDI4ODAsIDEwMjg4NiwgMTAyODkyLCAxMDI5MDAsIDEwMjkwNiwgMTAyOTEyLCAxMDI5MTgsIDEwMjkyNCwgCisgICAgMTAyOTMwLCAxMDI5MzYsIDEwMjk0MSwgMTAyOTQ3LCAxMDI5NTUsIDEwMjk2MywgMTAyOTY5LCAxMDI5NzUsIDEwMjk4MSwgCisgICAgMTAyOTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAKKyAgICAxMDMwMTEsIDEwMzAxNywgMTAzMDIzLCAxMDMwMjksIDEwMzAzNSwgMTAzMDQxLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU5LCAKKyAgICAxMDMwNjUsIDEwMzA3MSwgMTAzMDc3LCAxMDMwODMsIDEwMzA4OSwgMTAzMDk0LCAxMDMxMDAsIDEwMzEwNiwgMTAzMTEyLCAKKyAgICAxMDMxMTgsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MiwgMTAzMTQ4LCAxMDMxNTQsIDEwMzE1OSwgMTAzMTY1LCAKKyAgICAxMDMxNzMsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTMsIDEwMzE5OSwgMTAzMjA1LCAxMDMyMTMsIDEwMzIxOSwgMTAzMjI1LCAKKyAgICAxMDMyMzEsIDEwMzIzNywgMTAzMjQzLCAxMDMyNDksIDEwMzI1NCwgMTAzMjYwLCAxMDMyNjgsIDEwMzI3NiwgMTAzMjgyLCAKKyAgICAxMDMyODgsIDEwMzI5NCwgMTAzMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMDcsIDEwMzMxMSwgMTAzMzE1LCAKKyAgICAxMDMzMjAsIDEwMzMyNSwgMTAzMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE4NjAsIDEzMTg3MCwgMTMxODgwLCAxMzE4ODksIDEzMTg5OCwgMTMxOTExLCAKLSAgICAxMzE5MjQsIDEzMTkzNiwgMTMxOTQ4LCAxMzE5NTgsIDEzMTk2OCwgMTMxOTc4LCAxMzE5ODgsIDEzMTk5OSwgMTMyMDEwLCAKLSAgICAxMzIwMjAsIDEzMjAyOSwgMTMyMDM4LCAxMzIwNDcsIDEzMjA2MCwgMTMyMDczLCAxMzIwODUsIDEzMjA5NywgMTMyMTA3LCAKLSAgICAxMzIxMTcsIDEzMjEyNywgMTMyMTM3LCAxMzIxNDYsIDEzMjE1NSwgMTMyMTY0LCAxMzIxNzMsIDEzMjE4MiwgMTMyMTkxLCAKLSAgICAxMzIyMDAsIDEzMjIwOSwgMTMyMjE4LCAxMzIyMjcsIDEzMjIzNiwgMTMyMjQ1LCAxMzIyNTYsIDEzMjI2NiwgMTMyMjc2LCAKLSAgICAxMzIyODksIDEzMjI5OSwgMTMyMzEyLCAxMzIzMTksIDEzMjMyOSwgMTMyMzM2LCAxMzIzNDMsIDEzMjM1MCwgMTMyMzU3LCAKLSAgICAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA3LCAxMzI0MTYsIDEzMjQyNSwgMTMyNDM0LCAKLSAgICAxMzI0NDMsIDEzMjQ1MSwgMTMyNDU5LCAxMzI0NjYsIDEzMjQ3NiwgMTMyNDg1LCAxMzI0OTMsIDEzMjUwMCwgMTMyNTEwLCAKLSAgICAxMzI1MTksIDEzMjUyOSwgMTMyNTM5LCAxMzI1NTAsIDEzMjU2MCwgMTMyNTY5LCAxMzI1NzksIDEzMjU4OCwgMTMyNTk4LCAKLSAgICAxMzI2MDYsIDEzMjYxMCwgMTMyNjE0LCAxMzI2MTgsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzNCwgMTMyNjM4LCAKLSAgICAxMzI2NDIsIDEzMjY0NiwgMTMyNjQ5LCAxMzI2NTMsIDEzMjY1NiwgMTMyNjU5LCAxMzI2NjMsIDEzMjY2NywgMTMyNjcxLCAKLSAgICAxMzI2NzUsIDEzMjY3OSwgMTMyNjgzLCAxMzI2ODcsIDEzMjY5MSwgMTMyNjk1LCAxMzI2OTksIDEzMjcwMywgMTMyNzA3LCAKLSAgICAxMzI3MTEsIDEzMjcxNSwgMTMyNzE5LCAxMzI3MjMsIDEzMjcyNywgMTMyNzMxLCAxMzI3MzUsIDEzMjczOSwgMTMyNzQzLCAKLSAgICAxMzI3NDcsIDEzMjc1MSwgMTMyNzU1LCAxMzI3NTksIDEzMjc2MywgMTMyNzY3LCAxMzI3NzEsIDEzMjc3NSwgMTMyNzc5LCAKLSAgICAxMzI3ODMsIDEzMjc4NywgMTMyNzkxLCAxMzI3OTUsIDEzMjc5OSwgMTMyODAzLCAxMzI4MDcsIDEzMjgxMSwgMTMyODE1LCAKLSAgICAxMzI4MTksIDEzMjgyMywgMTMyODI3LCAxMzI4MzEsIDEzMjgzNSwgMTMyODM5LCAxMzI4NDMsIDEzMjg0NywgMTMyODUxLCAKLSAgICAxMzI4NTUsIDEzMjg1OSwgMTMyODYzLCAxMzI4NjcsIDEzMjg3MSwgMTMyODc1LCAxMzI4NzksIDEzMjg4MywgMTMyODg3LCAKLSAgICAxMzI4OTEsIDEzMjg5NSwgMTMyODk5LCAxMzI5MDMsIDEzMjkwNywgMTMyOTExLCAxMzI5MTUsIDEzMjkxOSwgMTMyOTIzLCAKLSAgICAxMzI5MjcsIDEzMjkzMSwgMTMyOTM1LCAxMzI5MzksIDEzMjk0MywgMTMyOTQ3LCAxMzI5NTEsIDEzMjk1NSwgMTMyOTU5LCAKLSAgICAxMzI5NjMsIDEzMjk2NywgMTMyOTcxLCAxMzI5NzUsIDEzMjk3OSwgMTMyOTgzLCAxMzI5ODcsIDEzMjk5MSwgMTMyOTk1LCAKLSAgICAxMzI5OTksIDEzMzAwMiwgMTMzMDA2LCAxMzMwMTAsIDEzMzAxNCwgMTMzMDE4LCAxMzMwMjIsIDEzMzAyNiwgMTMzMDMwLCAKLSAgICAxMzMwMzQsIDEzMzAzOCwgMTMzMDQyLCAxMzMwNDYsIDEzMzA1MCwgMTMzMDU0LCAxMzMwNTgsIDEzMzA2MiwgMTMzMDY2LCAKLSAgICAxMzMwNzAsIDEzMzA3NCwgMTMzMDc4LCAxMzMwODIsIDEzMzA4NiwgMTMzMDkwLCAxMzMwOTQsIDEzMzA5OCwgMTMzMTAyLCAKLSAgICAxMzMxMDYsIDEzMzExMCwgMTMzMTE0LCAxMzMxMTgsIDEzMzEyMiwgMTMzMTI2LCAxMzMxMzAsIDEzMzEzNCwgMTMzMTM4LCAKLSAgICAxMzMxNDIsIDEzMzE0NiwgMTMzMTUwLCAxMzMxNTQsIDEzMzE1OCwgMTMzMTYyLCAxMzMxNjYsIDEzMzE3MCwgMTMzMTc0LCAKLSAgICAxMzMxNzgsIDEzMzE4MiwgMTMzMTg2LCAxMzMxOTAsIDEzMzE5NCwgMTMzMTk4LCAxMzMyMDIsIDEzMzIwNiwgMTMzMjEwLCAKLSAgICAxMzMyMTQsIDEzMzIxOCwgMTMzMjIyLCAxMzMyMjYsIDEzMzIzMCwgMTMzMjM0LCAxMzMyMzgsIDEzMzI0MiwgMTMzMjQ2LCAKLSAgICAxMzMyNTAsIDEzMzI1NCwgMTMzMjU4LCAxMzMyNjIsIDEzMzI2NiwgMTMzMjcwLCAxMzMyNzQsIDEzMzI3OCwgMTMzMjgyLCAKLSAgICAxMzMyODYsIDEzMzI5MCwgMTMzMjk0LCAxMzMyOTgsIDEzMzMwMiwgMTMzMzA2LCAxMzMzMTAsIDEzMzMxNCwgMTMzMzE4LCAKLSAgICAxMzMzMjIsIDEzMzMyNiwgMTMzMzMwLCAxMzMzMzQsIDEzMzMzOCwgMTMzMzQyLCAxMzMzNDYsIDEzMzM1MCwgMTMzMzU0LCAKLSAgICAxMzMzNTgsIDEzMzM2MiwgMTMzMzY2LCAxMzMzNzAsIDEzMzM3NCwgMTMzMzc4LCAxMzMzODIsIDEzMzM4NiwgMTMzMzkwLCAKLSAgICAxMzMzOTQsIDEzMzM5OCwgMTMzNDAyLCAxMzM0MDYsIDEzMzQxMCwgMTMzNDE0LCAxMzM0MTgsIDEzMzQyMiwgMTMzNDI2LCAKLSAgICAxMzM0MzAsIDEzMzQzNCwgMTMzNDM4LCAxMzM0NDIsIDEzMzQ0NiwgMTMzNDUwLCAxMzM0NTQsIDEzMzQ1OCwgMTMzNDYyLCAKLSAgICAxMzM0NjYsIDEzMzQ3MCwgMTMzNDc0LCAxMzM0NzgsIDEzMzQ4MiwgMTMzNDg2LCAxMzM0OTAsIDEzMzQ5NCwgMTMzNDk4LCAKLSAgICAxMzM1MDIsIDEzMzUwNiwgMTMzNTEwLCAxMzM1MTQsIDEzMzUxOCwgMTMzNTIyLCAxMzM1MjYsIDEzMzUzMCwgMTMzNTM0LCAKLSAgICAxMzM1MzgsIDEzMzU0MiwgMTMzNTQ2LCAxMzM1NTAsIDEzMzU1NCwgMTMzNTU4LCAxMzM1NjIsIDEzMzU2NiwgMTMzNTcwLCAKLSAgICAxMzM1NzQsIDEzMzU3OCwgMTMzNTgyLCAxMzM1ODYsIDEzMzU5MCwgMTMzNTk0LCAxMzM1OTgsIDEzMzYwMiwgMTMzNjA2LCAKLSAgICAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyNiwgMTMzNjMwLCAxMzM2MzQsIDEzMzYzOCwgMTMzNjQyLCAKLSAgICAxMzM2NDYsIDEzMzY1MCwgMTMzNjU0LCAxMzM2NTgsIDEzMzY2MiwgMTMzNjY2LCAxMzM2NzAsIDEzMzY3NCwgMTMzNjc4LCAKLSAgICAxMzM2ODIsIDEzMzY4NiwgMTMzNjkwLCAxMzM2OTQsIDEzMzY5OCwgMTMzNzAyLCAxMzM3MDYsIDEzMzcxMCwgMTMzNzE0LCAKLSAgICAxMzM3MTgsIDEzMzcyMiwgMTMzNzI2LCAxMzM3MzAsIDEzMzczNCwgMTMzNzM4LCAxMzM3NDIsIDEzMzc0NiwgMTMzNzUwLCAKLSAgICAxMzM3NTQsIDEzMzc1OCwgMTMzNzYyLCAxMzM3NjYsIDEzMzc3MSwgMTMzNzc2LCAxMzM3ODEsIDEzMzc4NSwgMTMzNzkxLCAKLSAgICAxMzM3OTgsIDEzMzgwNSwgMTMzODEyLCAxMzM4MTksIDEzMzgyNiwgMTMzODMzLCAxMzM4NDAsIDEzMzg0NywgMTMzODU0LCAKLSAgICAxMzM4NjEsIDEzMzg2OCwgMTMzODc1LCAxMzM4ODIsIDEzMzg4OCwgMTMzODk1LCAxMzM5MDIsIDEzMzkwOCwgMTMzOTE1LCAKLSAgICAxMzM5MjIsIDEzMzkyOSwgMTMzOTM2LCAxMzM5NDMsIDEzMzk1MCwgMTMzOTU3LCAxMzM5NjQsIDEzMzk3MSwgMTMzOTc4LCAKLSAgICAxMzM5ODUsIDEzMzk5MiwgMTMzOTk5LCAxMzQwMDUsIDEzNDAxMSwgMTM0MDE4LCAxMzQwMjUsIDEzNDAzNCwgMTM0MDQzLCAKLSAgICAxMzQwNTIsIDEzNDA2MSwgMTM0MDY2LCAxMzQwNzEsIDEzNDA3NywgMTM0MDgzLCAxMzQwODksIDEzNDA5NSwgMTM0MTAxLCAKLSAgICAxMzQxMDcsIDEzNDExMywgMTM0MTE5LCAxMzQxMjUsIDEzNDEzMSwgMTM0MTM3LCAxMzQxNDMsIDEzNDE0OCwgMTM0MTU0LCAKLSAgICAxMzQxNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMzNywgMTAzMzQxLCAxMDMzNDUsIDEwMzM0OSwgMTAzMzUzLCAxMDMzNTcsIAorICAgIDEwMzM2MSwgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NSwgMTAzMzgwLCAxMDMzODUsIDEwMzM5MCwgMTAzMzk1LCAxMDM0MDAsIAorICAgIDEwMzQwNSwgMTAzNDEwLCAxMDM0MTUsIDEwMzQyMCwgMTAzNDI2LCAxMDM0MzIsIDEwMzQzOCwgMTAzNDQ1LCAxMDM0NTIsIAorICAgIDEwMzQ1OSwgMTAzNDY2LCAxMDM0NzMsIDEwMzQ4MCwgMTAzNDg3LCAxMDM0OTQsIDEwMzUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMxLCAxMDM1MzUsIAorICAgIDEwMzUzOCwgMTAzNTQyLCAxMDM1NDUsIDEwMzU0OSwgMTAzNTUzLCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY3LCAxMDM1NzAsIAorICAgIDEwMzU3NCwgMTAzNTc3LCAxMDM1ODEsIDEwMzU4NCwgMTAzNTg4LCAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIAorICAgIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIAorICAgIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAxMDM2NjMsIDEwMzY2NywgMTAzNjcxLCAxMDM2NzUsIAorICAgIDEwMzY3OCwgMTAzNjgxLCAxMDM2ODUsIDEwMzY4OSwgMTAzNjkzLCAxMDM2OTcsIDEwMzcwMSwgMTAzNzA1LCAxMDM3MDgsIAorICAgIDEwMzcxMiwgMTAzNzE4LCAxMDM3MjQsIDEwMzczMCwgMTAzNzM1LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUxLCAxMDM3NTUsIAorICAgIDEwMzc2MCwgMTAzNzY1LCAxMDM3NzEsIDEwMzc3NiwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MSwgMTAzNzk1LCAxMDM4MDAsIAorICAgIDEwMzgwMywgMTAzODA2LCAxMDM4MTAsIDEwMzgxNSwgMTAzODIxLCAxMDM4MjYsIDEwMzgzMiwgMCwgMCwgMCwgMCwgCisgICAgMTAzODM3LCAxMDM4NDAsIDEwMzg0MywgMTAzODQ2LCAxMDM4NDksIDEwMzg1MiwgMTAzODU1LCAxMDM4NTksIDEwMzg2MiwgCisgICAgMTAzODY2LCAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgCisgICAgMTAzOTAyLCAxMDM5MDcsIDEwMzkxMiwgMTAzOTE2LCAxMDM5MTksIDEwMzkyMiwgMTAzOTI1LCAxMDM5MjgsIDEwMzkzMSwgCisgICAgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAzOTQ1LCAxMDM5NDksIDEwMzk1NCwgMTAzOTU5LCAxMDM5NjQsIDEwMzk2OCwgMTAzOTczLCAxMDM5NzcsIDEwMzk4MiwgCisgICAgMTAzOTg2LCAxMDM5OTEsIDEwMzk5NSwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOSwgMTA0MDEzLCAxMDQwMTgsIDEwNDAyMywgCisgICAgMTA0MDI4LCAxMDQwMzMsIDEwNDAzOCwgMTA0MDQzLCAxMDQwNDgsIDEwNDA1MywgMTA0MDU4LCAxMDQwNjMsIDEwNDA2OCwgCisgICAgMTA0MDczLCAxMDQwNzgsIDEwNDA4MywgMTA0MDg4LCAxMDQwOTMsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDgsIDEwNDExMywgCisgICAgMTA0MTE4LCAxMDQxMjIsIDEwNDEyNywgMTA0MTMyLCAxMDQxMzcsIDEwNDE0MSwgMTA0MTQ1LCAxMDQxNTAsIDEwNDE1NSwgCisgICAgMTA0MTYwLCAxMDQxNjUsIDEwNDE3MCwgMTA0MTc1LCAxMDQxNzksIDEwNDE4NSwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMSwgCisgICAgMTA0MjA3LCAxMDQyMTIsIDEwNDIxOCwgMTA0MjIzLCAxMDQyMjksIDEwNDIzNCwgMTA0MjM5LCAxMDQyNDQsIDEwNDI0OSwgCisgICAgMTA0MjUzLCAxMDQyNTgsIDEwNDI2NCwgMTA0MjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQyNzMsIDEwNDI4MCwgMTA0Mjg3LCAxMDQyOTQsIDEwNDMwMSwgMTA0MzA4LCAxMDQzMTUsIDEwNDMyMiwgMTA0MzI5LCAKKyAgICAxMDQzMzYsIDEwNDM0MywgMTA0MzUwLCAxMDQzNTcsIDEwNDM2NCwgMTA0MzcxLCAxMDQzNzgsIDEwNDM4NSwgMTA0MzkyLCAKKyAgICAxMDQzOTksIDEwNDQwNiwgMTA0NDEzLCAxMDQ0MjAsIDEwNDQyNywgMTA0NDM0LCAxMDQ0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNDQ0OCwgMTA0NDU1LCAxMDQ0NjEsIDEwNDQ2NywgMTA0NDczLCAxMDQ0NzksIDEwNDQ4NSwgMTA0NDkxLCAKKyAgICAxMDQ0OTgsIDEwNDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTExLCAxMDQ1MTYsIDEwNDUyMSwgMTA0NTI2LCAxMDQ1MzEsIAorICAgIDEwNDUzNSwgMTA0NTM5LCAxMDQ1NDMsIDEwNDU0OCwgMTA0NTUzLCAxMDQ1NTgsIDEwNDU2MywgMTA0NTY4LCAxMDQ1NzMsIAorICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDMsIDEwNDYwOCwgMTA0NjEzLCAxMDQ2MTgsIAorICAgIDEwNDYyMywgMTA0NjI4LCAxMDQ2MzMsIDEwNDYzOCwgMTA0NjQzLCAxMDQ2NDgsIDEwNDY1MywgMTA0NjU4LCAxMDQ2NjMsIAorICAgIDEwNDY2OCwgMTA0NjczLCAxMDQ2NzgsIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTMsIDEwNDY5OCwgMTA0NzAzLCAxMDQ3MDgsIAorICAgIDEwNDcxMywgMTA0NzE5LCAxMDQ3MjQsIDEwNDczMCwgMTA0NzM1LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUyLCAxMDQ3NTgsIAorICAgIDEwNDc2MiwgMTA0NzY3LCAxMDQ3NzEsIDAsIDEwNDc3NSwgMTA0NzgwLCAxMDQ3ODQsIDEwNDc4OCwgMTA0NzkyLCAKKyAgICAxMDQ3OTYsIDEwNDgwMCwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxMywgMTA0ODE4LCAxMDQ4MjMsIDEwNDgyNywgMTA0ODMyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzcsIDEwNDg0MSwgMTA0ODQ1LCAxMDQ4NDksIAorICAgIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjEsIDEwNDg2NiwgMTA0ODcxLCAxMDQ4NzYsIDEwNDg4MSwgMTA0ODg2LCAxMDQ4OTEsIAorICAgIDEwNDg5NiwgMTA0OTAxLCAxMDQ5MDYsIDEwNDkxMSwgMTA0OTE2LCAxMDQ5MjEsIDEwNDkyNiwgMTA0OTMxLCAxMDQ5MzYsIAorICAgIDEwNDk0MSwgMTA0OTQ2LCAxMDQ5NTEsIDEwNDk1NSwgMTA0OTYwLCAxMDQ5NjUsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzksIAorICAgIDEwNDk4NCwgMTA0OTg5LCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAzLCAxMDUwMDgsIDEwNTAxMywgMTA1MDE4LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwMjMsIDEwNTAyNywgMTA1MDMxLCAxMDUwMzUsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDUsIAorICAgIDEwNTA0OSwgMTA1MDUyLCAxMDUwNTYsIDEwNTA2MCwgMTA1MDY1LCAxMDUwNjksIDEwNTA3NCwgMTA1MDc3LCAxMDUwODEsIAorICAgIDEwNTA4NCwgMTA1MDg4LCAxMDUwOTEsIDEwNTA5NSwgMTA1MDk5LCAxMDUxMDMsIDEwNTEwNywgMTA1MTExLCAxMDUxMTUsIAorICAgIDEwNTExOSwgMTA1MTIzLCAxMDUxMjcsIDEwNTEzMSwgMTA1MTM1LCAxMDUxMzksIDEwNTE0MywgMTA1MTQ3LCAxMDUxNTEsIAorICAgIDEwNTE1NSwgMTA1MTU5LCAxMDUxNjMsIDEwNTE2NywgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODUsIAorICAgIDEwNTE4OCwgMTA1MTkyLCAxMDUxOTYsIDEwNTIwMCwgMTA1MjA0LCAxMDUyMDgsIDEwNTIxMiwgMTA1MjE2LCAxMDUyMTksIAorICAgIDEwNTIyNCwgMTA1MjI4LCAxMDUyMzMsIDEwNTIzNywgMTA1MjQyLCAxMDUyNDcsIDEwNTI1MywgMTA1MjU4LCAxMDUyNjQsIAorICAgIDEwNTI2OCwgMTA1MjczLCAxMDUyNzcsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDEsIAorICAgIDEwNTMwNCwgMTA1MzA4LCAxMDUzMTIsIDEwNTMxNSwgMTA1MzE5LCAxMDUzMjMsIDEwNTMyNywgMTA1MzM0LCAwLCAwLCAKKyAgICAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ1LCAxMDUzNDgsIDEwNTM1MSwgMTA1MzU0LCAxMDUzNTcsIDEwNTM2MCwgMTA1MzY0LCAKKyAgICAxMDUzNjcsIDEwNTM3MSwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MSwgMTA1Mzg1LCAxMDUzOTAsIDAsIDEwNTM5NSwgCisgICAgMTA1NDAwLCAxMDU0MDUsIDEwNTQxMCwgMTA1NDE1LCAxMDU0MjAsIDEwNTQyNSwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MiwgCisgICAgMTA1NDQ4LCAxMDU0NTQsIDEwNTQ2MCwgMTA1NDY2LCAxMDU0NzIsIDEwNTQ3OCwgMTA1NDg0LCAxMDU0OTAsIDEwNTQ5NiwgCisgICAgMTA1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjMsIAorICAgIDEwNTUyNywgMTA1NTMxLCAxMDU1MzYsIDEwNTU0MCwgMTA1NTQ1LCAxMDU1NDksIDEwNTU1NCwgMTA1NTU5LCAxMDU1NjQsIAorICAgIDEwNTU2OSwgMTA1NTc0LCAxMDU1NzksIDEwNTU4NCwgMTA1NTg5LCAwLCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAKKyAgICAxMDU2MDksIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAKKyAgICAxMDU2NTQsIDEwNTY1OCwgMTA1NjYzLCAxMDU2NjgsIDEwNTY3MywgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkxLCAKKyAgICAxMDU2OTYsIDEwNTcwMSwgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNSwgMTA1NzIxLCAxMDU3MjYsIDEwNTczMiwgMTA1NzM3LCAKKyAgICAxMDU3NDIsIDEwNTc0OCwgMTA1NzUzLCAxMDU3NTksIDEwNTc2NCwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1NzgzLCAKKyAgICAxMDU3ODgsIDEwNTc5NCwgMTA1Nzk5LCAxMDU4MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNTgxMCwgMTA1ODE0LCAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNSwgMCwgCisgICAgMTA1ODQwLCAwLCAxMDU4NDUsIDEwNTg1MCwgMTA1ODU1LCAxMDU4NjAsIDAsIDEwNTg2NSwgMTA1ODcwLCAxMDU4NzUsIAorICAgIDEwNTg4MCwgMTA1ODg1LCAxMDU4OTAsIDEwNTg5NSwgMTA1OTAwLCAxMDU5MDUsIDEwNTkxMCwgMTA1OTE1LCAxMDU5MjAsIAorICAgIDEwNTkyNSwgMTA1OTI5LCAxMDU5MzQsIDAsIDEwNTkzOSwgMTA1OTQ0LCAxMDU5NDgsIDEwNTk1MiwgMTA1OTU3LCAKKyAgICAxMDU5NjIsIDEwNTk2NywgMTA1OTcyLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU5OTEsIAorICAgIDEwNTk5NSwgMTA2MDAwLCAxMDYwMDQsIDEwNjAwOSwgMTA2MDEzLCAxMDYwMTgsIDEwNjAyMiwgMTA2MDI3LCAxMDYwMzEsIAorICAgIDEwNjAzNiwgMTA2MDQwLCAxMDYwNDUsIDEwNjA1MCwgMTA2MDU1LCAxMDYwNjAsIDEwNjA2NSwgMTA2MDcwLCAxMDYwNzUsIAorICAgIDEwNjA4MCwgMTA2MDg1LCAxMDYwOTAsIDEwNjA5NSwgMTA2MTAwLCAxMDYxMDUsIDEwNjExMCwgMTA2MTE1LCAxMDYxMjAsIAorICAgIDEwNjEyNSwgMTA2MTMwLCAxMDYxMzUsIDEwNjE0MCwgMTA2MTQ1LCAxMDYxNTAsIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjQsIAorICAgIDEwNjE2OSwgMTA2MTc0LCAxMDYxNzksIDEwNjE4MywgMTA2MTg3LCAxMDYxOTIsIDEwNjE5NywgMTA2MjAyLCAxMDYyMDcsIAorICAgIDEwNjIxMiwgMTA2MjE2LCAxMDYyMjEsIDEwNjIyNywgMTA2MjMyLCAxMDYyMzgsIDEwNjI0MywgMTA2MjQ5LCAxMDYyNTQsIAorICAgIDEwNjI2MCwgMTA2MjY1LCAxMDYyNzEsIDEwNjI3NiwgMCwgMCwgMCwgMCwgMCwgMTA2MjgxLCAxMDYyODYsIDEwNjI5MCwgCisgICAgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNSwgMTA2MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDYzMjQsIDEwNjMzMSwgMTA2MzM2LCAxMDYzNDEsIDAsIDEwNjM0NiwgMTA2MzUwLCAxMDYzNTUsIDEwNjM1OSwgCisgICAgMTA2MzY0LCAxMDYzNjgsIDEwNjM3MywgMTA2Mzc4LCAwLCAwLCAxMDYzODMsIDEwNjM4OCwgMCwgMCwgMTA2MzkzLCAKKyAgICAxMDYzOTgsIDEwNjQwMywgMTA2NDA3LCAxMDY0MTIsIDEwNjQxNywgMTA2NDIyLCAxMDY0MjcsIDEwNjQzMiwgMTA2NDM3LCAKKyAgICAxMDY0NDIsIDEwNjQ0NywgMTA2NDUyLCAxMDY0NTcsIDEwNjQ2MiwgMTA2NDY3LCAxMDY0NzIsIDEwNjQ3NywgMTA2NDgyLCAKKyAgICAxMDY0ODcsIDEwNjQ5MiwgMTA2NDk3LCAwLCAxMDY1MDIsIDEwNjUwNiwgMTA2NTExLCAxMDY1MTYsIDEwNjUyMSwgCisgICAgMTA2NTI1LCAxMDY1MjksIDAsIDEwNjUzNCwgMTA2NTM5LCAwLCAxMDY1NDQsIDEwNjU0OSwgMTA2NTU0LCAxMDY1NTksIAorICAgIDEwNjU2NCwgMCwgMCwgMTA2NTY4LCAxMDY1NzMsIDEwNjU3OCwgMTA2NTg0LCAxMDY1ODksIDEwNjU5NSwgMTA2NjAwLCAKKyAgICAxMDY2MDYsIDEwNjYxMiwgMCwgMCwgMTA2NjE5LCAxMDY2MjUsIDAsIDAsIDEwNjYzMSwgMTA2NjM3LCAxMDY2NDMsIDAsIDAsIAorICAgIDEwNjY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NjUyLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTksIDEwNjY2NCwgMTA2NjcxLCAKKyAgICAxMDY2NzksIDEwNjY4NSwgMTA2NjkxLCAxMDY2OTcsIDAsIDAsIDEwNjcwNCwgMTA2NzEwLCAxMDY3MTUsIDEwNjcyMCwgCisgICAgMTA2NzI1LCAxMDY3MzAsIDEwNjczNSwgMCwgMCwgMCwgMTA2NzQwLCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNjc2NywgMTA2NzcxLCAxMDY3NzUsIDEwNjc4MCwgMTA2Nzg0LCAxMDY3ODksIDEwNjc5MywgMTA2Nzk4LCAKKyAgICAxMDY4MDMsIDEwNjgwOSwgMTA2ODE0LCAxMDY4MjAsIDEwNjgyNCwgMTA2ODI5LCAxMDY4MzMsIDEwNjgzOCwgMTA2ODQyLCAKKyAgICAxMDY4NDcsIDEwNjg1MiwgMTA2ODU3LCAxMDY4NjIsIDEwNjg2NywgMTA2ODcyLCAxMDY4NzcsIDEwNjg4MiwgMTA2ODg3LCAKKyAgICAxMDY4OTIsIDEwNjg5NywgMTA2OTAyLCAxMDY5MDcsIDEwNjkxMiwgMTA2OTE3LCAxMDY5MjIsIDEwNjkyNywgMTA2OTMyLCAKKyAgICAxMDY5MzcsIDEwNjk0MSwgMTA2OTQ2LCAxMDY5NTEsIDEwNjk1NiwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTc0LCAKKyAgICAxMDY5NzksIDEwNjk4NCwgMTA2OTg5LCAxMDY5OTQsIDEwNjk5OCwgMTA3MDA0LCAxMDcwMDksIDEwNzAxNSwgMTA3MDIwLCAKKyAgICAxMDcwMjYsIDEwNzAzMiwgMTA3MDM5LCAxMDcwNDUsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjQsIDEwNzA3MCwgMTA3MDc1LCAKKyAgICAxMDcwODIsIDEwNzA4OCwgMTA3MDkzLCAxMDcwOTgsIDEwNzEwMywgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIyLCAKKyAgICAxMDcxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzEzMSwgMTA3MTM2LCAxMDcxNDAsIDEwNzE0NCwgMTA3MTQ4LCAKKyAgICAxMDcxNTIsIDEwNzE1NiwgMTA3MTYwLCAxMDcxNjUsIDEwNzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTc0LCAxMDcxNzcsIDEwNzE4MSwgMTA3MTg0LCAxMDcxODgsIAorICAgIDEwNzE5MSwgMTA3MTk1LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA4LCAxMDcyMTMsIDEwNzIxNiwgMTA3MjIwLCAxMDcyMjMsIAorICAgIDEwNzIyNywgMTA3MjMwLCAxMDcyMzQsIDEwNzIzOCwgMTA3MjQyLCAxMDcyNDYsIDEwNzI1MCwgMTA3MjU0LCAxMDcyNTgsIAorICAgIDEwNzI2MiwgMTA3MjY2LCAxMDcyNzAsIDEwNzI3NCwgMTA3Mjc4LCAxMDcyODIsIDEwNzI4NiwgMTA3MjkwLCAxMDcyOTQsIAorICAgIDEwNzI5OCwgMTA3MzAyLCAxMDczMDYsIDEwNzMwOSwgMTA3MzEzLCAxMDczMTcsIDEwNzMyMSwgMTA3MzI0LCAxMDczMjcsIAorICAgIDEwNzMzMSwgMTA3MzM1LCAxMDczMzksIDEwNzM0MywgMTA3MzQ3LCAxMDczNTEsIDEwNzM1NCwgMTA3MzU5LCAxMDczNjMsIAorICAgIDEwNzM2OCwgMTA3MzcyLCAxMDczNzcsIDEwNzM4MiwgMCwgMCwgMTA3Mzg4LCAxMDczOTIsIDEwNzM5NywgMTA3NDAxLCAKKyAgICAxMDc0MDYsIDEwNzQxMCwgMTA3NDE0LCAxMDc0MTgsIDEwNzQyMiwgMTA3NDI2LCAxMDc0MzAsIDEwNzQzMywgMTA3NDM3LCAKKyAgICAxMDc0NDIsIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY4LCAxMDc0ODAsIDEwNzQ5MiwgMTA3NTA0LCAKKyAgICAxMDc1MTcsIDEwNzUzMSwgMTA3NTM4LCAxMDc1NDgsIDEwNzU1NiwgMTA3NTY1LCAxMDc1NzQsIDEwNzU4MywgMTA3NTkzLCAKKyAgICAxMDc2MDQsIDEwNzYxNiwgMTA3NjIzLCAxMDc2MzAsIDEwNzYzOCwgMTA3NjQzLCAxMDc2NDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNzY1NiwgMTA3NjYwLCAxMDc2NjUsIDEwNzY2OSwgMTA3Njc0LCAxMDc2NzgsIDEwNzY4MywgCisgICAgMTA3Njg4LCAxMDc2OTQsIDEwNzY5OSwgMTA3NzA1LCAxMDc3MDksIDEwNzcxNCwgMTA3NzE4LCAxMDc3MjMsIDEwNzcyNywgCisgICAgMTA3NzMyLCAxMDc3MzcsIDEwNzc0MiwgMTA3NzQ3LCAxMDc3NTIsIDEwNzc1NywgMTA3NzYyLCAxMDc3NjcsIDEwNzc3MiwgCisgICAgMTA3Nzc3LCAxMDc3ODIsIDEwNzc4NywgMTA3NzkyLCAxMDc3OTcsIDEwNzgwMiwgMTA3ODA3LCAxMDc4MTIsIDEwNzgxNywgCisgICAgMTA3ODIyLCAxMDc4MjYsIDEwNzgzMSwgMTA3ODM2LCAxMDc4NDEsIDEwNzg0NSwgMTA3ODQ5LCAxMDc4NTQsIDEwNzg1OSwgCisgICAgMTA3ODY0LCAxMDc4NjksIDEwNzg3NCwgMTA3ODc5LCAxMDc4ODMsIDEwNzg4OCwgMTA3ODk0LCAxMDc4OTksIDEwNzkwNSwgCisgICAgMTA3OTEwLCAxMDc5MTYsIDEwNzkyMiwgMTA3OTI5LCAxMDc5MzUsIDEwNzk0MiwgMTA3OTQ3LCAxMDc5NTMsIDEwNzk1OCwgCisgICAgMTA3OTY0LCAxMDc5NjksIDEwNzk3NCwgMTA3OTc5LCAxMDc5ODQsIDEwNzk4OCwgMTA3OTkzLCAxMDc5OTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODAwMywgMTA4MDA4LCAxMDgwMTIsIDEwODAxNiwgMTA4MDIwLCAxMDgwMjQsIAorICAgIDEwODAyOCwgMTA4MDMyLCAxMDgwMzcsIDEwODA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA4MDQ2LCAxMDgwNTAsIDEwODA1NSwgMTA4MDU5LCAxMDgwNjQsIDEwODA2OCwgMTA4MDczLCAxMDgwNzcsIDEwODA4MiwgCisgICAgMTA4MDg2LCAxMDgwOTEsIDEwODA5NSwgMTA4MTAwLCAxMDgxMDUsIDEwODExMCwgMTA4MTE1LCAxMDgxMjAsIDEwODEyNSwgCisgICAgMTA4MTMwLCAxMDgxMzUsIDEwODE0MCwgMTA4MTQ1LCAxMDgxNTAsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjUsIDEwODE3MCwgCisgICAgMTA4MTc1LCAxMDgxODAsIDEwODE4NSwgMTA4MTkwLCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxMywgCisgICAgMTA4MjE3LCAxMDgyMjIsIDEwODIyNywgMTA4MjMyLCAxMDgyMzcsIDEwODI0MiwgMTA4MjQ2LCAxMDgyNTEsIDEwODI1NiwgCisgICAgMTA4MjYxLCAxMDgyNjcsIDEwODI3MiwgMTA4Mjc4LCAxMDgyODMsIDEwODI4OSwgMTA4Mjk0LCAxMDgzMDAsIDEwODMwNSwgCisgICAgMTA4MzExLCAxMDgzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODMyMSwgMTA4MzI2LCAxMDgzMzAsIDEwODMzNCwgCisgICAgMTA4MzM4LCAxMDgzNDIsIDEwODM0NiwgMTA4MzUwLCAxMDgzNTUsIDEwODM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzY0LCAKKyAgICAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAxMDgzODMsIDEwODM4OCwgMTA4Mzk1LCAxMDgzOTksIDEwODQwNCwgMTA4NDA5LCAKKyAgICAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUyLCAKKyAgICAxMDg0NTYsIDEwODQ2MSwgMTA4NDY2LCAxMDg0NzEsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDAsIDAsIDAsIDEwODQ5MywgCisgICAgMTA4NTAwLCAxMDg1MDcsIDEwODUxNiwgMTA4NTIxLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM4LCAxMDg1NDMsIDEwODU0OSwgCisgICAgMTA4NTU0LCAxMDg1NjAsIDEwODU2NSwgMTA4NTcxLCAxMDg1NzcsIDAsIDAsIDAsIDAsIDEwODU4MiwgMTA4NTg3LCAKKyAgICAxMDg1OTEsIDEwODU5NSwgMTA4NTk5LCAxMDg2MDMsIDEwODYwNywgMTA4NjExLCAxMDg2MTYsIDEwODYyMCwgMTA4NjI1LCAKKyAgICAxMDg2MzAsIDEwODYzNSwgMTA4NjQxLCAxMDg2NDYsIDEwODY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTA4NjU2LCAxMDg2NjQsIDEwODY3MSwgMTA4Njc5LCAxMDg2ODcsIDEwODY5NCwgMTA4NzAyLCAKKyAgICAxMDg3MTAsIDEwODcxOCwgMTA4NzI1LCAxMDg3MzIsIDEwODc0MCwgMTA4NzQ4LCAxMDg3NTYsIDEwODc2NCwgMTA4NzcyLCAKKyAgICAxMDg3ODAsIDEwODc4OCwgMTA4Nzk2LCAxMDg4MDQsIDEwODgxMiwgMTA4ODIwLCAxMDg4MjgsIDEwODgzNiwgMTA4ODQ0LCAKKyAgICAxMDg4NTIsIDEwODg2MCwgMTA4ODY4LCAxMDg4NzYsIDEwODg4NCwgMTA4ODkyLCAxMDg5MDAsIDEwODkwOCwgMTA4OTE2LCAKKyAgICAxMDg5MjMsIDEwODkzMSwgMTA4OTM5LCAxMDg5NDYsIDEwODk1NCwgMTA4OTYyLCAxMDg5NzAsIDEwODk3NywgMTA4OTg0LCAKKyAgICAxMDg5OTIsIDEwOTAwMCwgMTA5MDA4LCAxMDkwMTYsIDEwOTAyNCwgMTA5MDMyLCAxMDkwNDAsIDEwOTA0OCwgMTA5MDU2LCAKKyAgICAxMDkwNjQsIDEwOTA3MiwgMTA5MDgwLCAxMDkwODgsIDEwOTA5NiwgMTA5MTA0LCAxMDkxMTIsIDEwOTEyMCwgMTA5MTI4LCAKKyAgICAxMDkxMzYsIDEwOTE0NCwgMTA5MTUyLCAxMDkxNjAsIDEwOTE2NywgMTA5MTczLCAxMDkxNzksIDEwOTE4NSwgMTA5MTkxLCAKKyAgICAxMDkxOTcsIDEwOTIwMywgMTA5MjEwLCAxMDkyMTYsIDEwOTIyMywgMTA5MjMwLCAxMDkyMzcsIDEwOTI0NCwgMTA5MjUxLCAKKyAgICAxMDkyNTgsIDEwOTI2NSwgMTA5MjcyLCAxMDkyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA5MjkyLCAxMDkzMDAsIDEwOTMwOCwgMTA5MzE3LCAxMDkzMjUsIDEwOTMzNCwgMTA5MzQzLCAxMDkzNTIsIAorICAgIDEwOTM2MSwgMTA5MzY5LCAxMDkzNzgsIDEwOTM4NywgMTA5Mzk2LCAxMDk0MDUsIDEwOTQxNCwgMTA5NDIzLCAxMDk0MzIsIAorICAgIDEwOTQ0MSwgMTA5NDUwLCAxMDk0NTksIDEwOTQ2OCwgMTA5NDc3LCAxMDk0ODUsIDEwOTQ5MywgMTA5NTAxLCAxMDk1MDksIAorICAgIDEwOTUxNywgMTA5NTI2LCAxMDk1MzUsIDEwOTU0NSwgMTA5NTU1LCAxMDk1NjUsIDEwOTU3NSwgMTA5NTg1LCAxMDk1OTQsIAorICAgIDEwOTYwNCwgMTA5NjE0LCAxMDk2MjQsIDEwOTYzNSwgMTA5NjQ1LCAxMDk2NTcsIDEwOTY2OSwgMTA5NjgwLCAxMDk2OTQsIAorICAgIDEwOTcwNSwgMTA5NzE1LCAxMDk3MjcsIDEwOTczOCwgMTA5NzQ4LCAxMDk3NjAsIDEwOTc3MiwgMTA5NzgzLCAxMDk3OTQsIAorICAgIDEwOTgwNCwgMTA5ODE0LCAxMDk4MjYsIDEwOTgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5ODQ5LCAxMDk4NTIsIAorICAgIDEwOTg1NywgMTA5ODYzLCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgyLCAxMDk4OTAsIDEwOTg5NiwgMTA5OTAyLCAxMDk5MDYsIAorICAgIDEwOTkxMCwgMTA5OTE3LCAxMDk5MjYsIDEwOTkzMywgMTA5OTQyLCAxMDk5NDgsIDEwOTk1NywgMTA5OTY0LCAxMDk5NzEsIAorICAgIDEwOTk3OCwgMTA5OTg4LCAxMDk5OTQsIDEwOTk5OCwgMTEwMDA1LCAxMTAwMTQsIDExMDAyNCwgMTEwMDMxLCAxMTAwMzgsIAorICAgIDExMDA0MiwgMTEwMDQ2LCAxMTAwNTMsIDExMDA2MywgMTEwMDY3LCAxMTAwNzQsIDExMDA4MSwgMTEwMDg4LCAxMTAwOTQsIAorICAgIDExMDEwMSwgMTEwMTA4LCAxMTAxMTUsIDExMDEyMiwgMTEwMTI2LCAxMTAxMzAsIDExMDEzNCwgMTEwMTQxLCAxMTAxNDUsIAorICAgIDExMDE1MiwgMTEwMTU5LCAxMTAxNzMsIDExMDE4MiwgMTEwMTg2LCAxMTAxOTAsIDExMDE5NCwgMTEwMjAxLCAxMTAyMDUsIAorICAgIDExMDIwOSwgMTEwMjEzLCAxMTAyMjEsIDExMDIyOSwgMTEwMjQ4LCAxMTAyNTgsIDExMDI3OCwgMTEwMjgyLCAxMTAyODYsIAorICAgIDExMDI5MCwgMTEwMjk0LCAxMTAyOTgsIDExMDMwMiwgMTEwMzA2LCAxMTAzMTMsIDExMDMxNywgMTEwMzIwLCAxMTAzMjQsIAorICAgIDExMDMyOCwgMTEwMzM0LCAxMTAzNDEsIDExMDM1MCwgMTEwMzU0LCAxMTAzNjMsIDExMDM3MiwgMTEwMzgwLCAxMTAzODQsIAorICAgIDExMDM5MSwgMTEwMzk1LCAxMTAzOTksIDExMDQwMywgMTEwNDA3LCAxMTA0MTgsIDExMDQyNywgMTEwNDM2LCAxMTA0NDUsIAorICAgIDExMDQ1NCwgMTEwNDY2LCAxMTA0NzUsIDExMDQ4NCwgMTEwNDkzLCAxMTA1MDEsIDExMDUxMCwgMTEwNTIyLCAxMTA1MzEsIAorICAgIDExMDU0MCwgMTEwNTQ5LCAxMTA1NjEsIDExMDU3MCwgMTEwNTc5LCAxMTA1OTEsIDExMDYwMCwgMTEwNjA5LCAxMTA2MjEsIAorICAgIDExMDYzMCwgMTEwNjM0LCAxMTA2MzgsIDExMDY0MiwgMTEwNjQ2LCAxMTA2NTAsIDExMDY1NCwgMTEwNjU4LCAxMTA2NjUsIAorICAgIDExMDY2OSwgMTEwNjczLCAxMTA2ODQsIDExMDY4OCwgMTEwNjkyLCAxMTA2OTksIDExMDcwNSwgMTEwNzExLCAxMTA3MTUsIAorICAgIDExMDcyMiwgMTEwNzI2LCAxMTA3MzAsIDExMDczNCwgMTEwNzM4LCAxMTA3NDIsIDExMDc0NiwgMTEwNzUyLCAxMTA3NjAsIAorICAgIDExMDc2NCwgMTEwNzY4LCAxMTA3NzEsIDExMDc3NywgMTEwNzg3LCAxMTA3OTEsIDExMDgwMywgMTEwODEwLCAxMTA4MTcsIAorICAgIDExMDgyNCwgMTEwODMxLCAxMTA4MzcsIDExMDg0MSwgMTEwODQ1LCAxMTA4NDksIDExMDg1MywgMTEwODYwLCAxMTA4NjksIAorICAgIDExMDg3NiwgMTEwODg0LCAxMTA4OTIsIDExMDg5OCwgMTEwOTAyLCAxMTA5MDYsIDExMDkxMCwgMTEwOTE0LCAxMTA5MjAsIAorICAgIDExMDkyOSwgMTEwOTQxLCAxMTA5NDgsIDExMDk1NSwgMTEwOTY0LCAxMTA5NzUsIDExMDk4MSwgMTEwOTkwLCAxMTA5OTksIAorICAgIDExMTAwNiwgMTExMDE1LCAxMTEwMjIsIDExMTAyOSwgMTExMDM5LCAxMTEwNDYsIDExMTA1MywgMTExMDYwLCAxMTEwNjcsIAorICAgIDExMTA3MSwgMTExMDc3LCAxMTEwODEsIDExMTA5MiwgMTExMTAwLCAxMTExMDksIDExMTEyMSwgMTExMTI4LCAxMTExMzUsIAorICAgIDExMTE0NSwgMTExMTUyLCAxMTExNjIsIDExMTE2OSwgMTExMTc5LCAxMTExODYsIDExMTE5MywgMTExMjAzLCAxMTEyMTAsIAorICAgIDExMTIxNywgMTExMjI3LCAxMTEyMzQsIDExMTI0NiwgMTExMjU1LCAxMTEyNjIsIDExMTI2OSwgMTExMjc2LCAxMTEyODUsIAorICAgIDExMTI5NSwgMTExMzA4LCAxMTEzMTUsIDExMTMyNSwgMTExMzM1LCAxMTEzNDIsIDExMTM1MSwgMTExMzY0LCAxMTEzNzEsIAorICAgIDExMTM3OCwgMTExMzg1LCAxMTEzOTUsIDExMTQwNSwgMTExNDEyLCAxMTE0MjIsIDExMTQyOSwgMTExNDM2LCAxMTE0NDYsIAorICAgIDExMTQ1MiwgMTExNDU5LCAxMTE0NjYsIDExMTQ3MywgMTExNDgzLCAxMTE0OTAsIDExMTQ5NywgMTExNTA0LCAxMTE1MTAsIAorICAgIDExMTUxNywgMTExNTI3LCAxMTE1MzQsIDExMTUzOCwgMTExNTQ2LCAxMTE1NTAsIDExMTU2MiwgMTExNTY2LCAxMTE1ODAsIAorICAgIDExMTU4NCwgMTExNTg4LCAxMTE1OTIsIDExMTU5NiwgMTExNjAyLCAxMTE2MDksIDExMTYxNywgMTExNjIxLCAxMTE2MjUsIAorICAgIDExMTYyOSwgMTExNjMzLCAxMTE2NDAsIDExMTY0NCwgMTExNjUwLCAxMTE2NTYsIDExMTY2NCwgMTExNjY4LCAxMTE2NzUsIAorICAgIDExMTY4MywgMTExNjg3LCAxMTE2OTEsIDExMTY5NywgMTExNzAxLCAxMTE3MTAsIDExMTcxOSwgMTExNzI2LCAxMTE3MzYsIAorICAgIDExMTc0MiwgMTExNzQ2LCAxMTE3NTAsIDExMTc1OCwgMTExNzY1LCAxMTE3NzIsIDExMTc3OCwgMTExNzgyLCAxMTE3OTAsIAorICAgIDExMTc5NCwgMTExODAxLCAxMTE4MTMsIDExMTgyMCwgMTExODMwLCAxMTE4MzYsIDExMTg0MCwgMTExODQ5LCAxMTE4NTYsIAorICAgIDExMTg2NSwgMTExODY5LCAxMTE4NzMsIDExMTg4MCwgMTExODg0LCAxMTE4ODgsIDExMTg5MiwgMTExODk2LCAxMTE4OTksIAorICAgIDExMTkwNSwgMTExOTExLCAxMTE5MTUsIDExMTkxOSwgMTExOTI2LCAxMTE5MzMsIDExMTk0MCwgMTExOTQ3LCAxMTE5NTQsIAorICAgIDExMTk2MSwgMTExOTY4LCAxMTE5NzUsIDExMTk4MSwgMTExOTg1LCAxMTE5ODksIDExMTk5NiwgMTEyMDAzLCAxMTIwMTAsIAorICAgIDExMjAxNywgMTEyMDI0LCAxMTIwMjgsIDExMjAzMSwgMTEyMDM2LCAxMTIwNDAsIDExMjA0NCwgMTEyMDUzLCAxMTIwNjIsIAorICAgIDExMjA2NiwgMTEyMDcwLCAxMTIwNzYsIDExMjA4MiwgMTEyMDk5LCAxMTIxMDUsIDExMjEwOSwgMTEyMTE4LCAxMTIxMjIsIAorICAgIDExMjEyNiwgMTEyMTMzLCAxMTIxNDEsIDExMjE0OSwgMTEyMTU1LCAxMTIxNTksIDExMjE2MywgMTEyMTY3LCAxMTIxNzEsIAorICAgIDExMjE3NCwgMTEyMTgwLCAxMTIxODcsIDExMjE5NywgMTEyMjA0LCAxMTIyMTEsIDExMjIxOCwgMTEyMjI0LCAxMTIyMzEsIAorICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI1OSwgMTEyMjY4LCAxMTIyNzUsIDExMjI4NywgMTEyMjk0LCAxMTIzMDEsIAorICAgIDExMjMxMSwgMTEyMzIyLCAxMTIzMjksIDExMjMzNiwgMTEyMzQzLCAxMTIzNTAsIDExMjM1NywgMTEyMzY0LCAxMTIzNzEsIAorICAgIDExMjM3OCwgMTEyMzg1LCAxMTIzOTIsIDExMjQwMiwgMTEyNDEyLCAxMTI0MjIsIDExMjQyOSwgMTEyNDM5LCAxMTI0NDYsIAorICAgIDExMjQ1MywgMTEyNDYwLCAxMTI0NjcsIDExMjQ3NCwgMTEyNDgxLCAxMTI0ODgsIDExMjQ5NSwgMTEyNTAyLCAxMTI1MDksIAorICAgIDExMjUxNiwgMTEyNTIzLCAxMTI1MzAsIDExMjUzNiwgMTEyNTQzLCAxMTI1NTAsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzMsIAorICAgIDExMjU3NywgMTEyNTg1LCAxMTI1ODksIDExMjU5MywgMTEyNTk3LCAxMTI2MDEsIDExMjYwNSwgMTEyNjEyLCAxMTI2MTYsIAorICAgIDExMjYyNSwgMTEyNjI5LCAxMTI2MzYsIDExMjY0NCwgMTEyNjQ4LCAxMTI2NTIsIDExMjY1NiwgMTEyNjY5LCAxMTI2ODUsIAorICAgIDExMjY4OSwgMTEyNjkzLCAxMTI3MDAsIDExMjcwNiwgMTEyNzEzLCAxMTI3MTcsIDExMjcyMSwgMTEyNzI1LCAxMTI3MjksIAorICAgIDExMjczMywgMTEyNzQwLCAxMTI3NDQsIDExMjc2MiwgMTEyNzY2LCAxMTI3NzAsIDExMjc3NywgMTEyNzgxLCAxMTI3ODUsIAorICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODIzLCAxMTI4MjksIAorICAgIDExMjg0MCwgMTEyODQ5LCAxMTI4NTgsIDExMjg2NSwgMTEyODcyLCAxMTI4ODMsIDExMjg5MCwgMTEyODk3LCAxMTI5MDQsIAorICAgIDExMjkxMSwgMTEyOTE4LCAxMTI5MjUsIDExMjkzMiwgMTEyOTQyLCAxMTI5NDgsIDExMjk1NSwgMTEyOTY1LCAxMTI5NzQsIAorICAgIDExMjk4MSwgMTEyOTkwLCAxMTMwMDAsIDExMzAwNywgMTEzMDE0LCAxMTMwMjEsIDExMzAyOCwgMTEzMDQwLCAxMTMwNDcsIAorICAgIDExMzA1NCwgMTEzMDYxLCAxMTMwNjgsIDExMzA3NSwgMTEzMDg1LCAxMTMwOTIsIDExMzA5OSwgMTEzMTA5LCAxMTMxMjIsIAorICAgIDExMzEzNCwgMTEzMTQxLCAxMTMxNTEsIDExMzE1OCwgMTEzMTY1LCAxMTMxNzIsIDExMzE4NywgMTEzMTkzLCAxMTMyMDEsIAorICAgIDExMzIxMSwgMTEzMjIxLCAxMTMyMjgsIDExMzIzNSwgMTEzMjQxLCAxMTMyNDUsIDExMzI1MiwgMTEzMjYyLCAxMTMyNjgsIAorICAgIDExMzI4MSwgMTEzMjg1LCAxMTMyODksIDExMzI5NiwgMTEzMzAwLCAxMTMzMDcsIDExMzMxNywgMTEzMzIxLCAxMTMzMjUsIAorICAgIDExMzMyOSwgMTEzMzMzLCAxMTMzMzcsIDExMzM0NCwgMTEzMzQ4LCAxMTMzNTUsIDExMzM2MiwgMTEzMzY5LCAxMTMzNzgsIAorICAgIDExMzM4NywgMTEzMzk3LCAxMTM0MDQsIDExMzQxMSwgMTEzNDE4LCAxMTM0MjgsIDExMzQzNSwgMTEzNDQ1LCAxMTM0NTIsIAorICAgIDExMzQ2MiwgMTEzNDY5LCAxMTM0NzYsIDExMzQ4NiwgMTEzNDk2LCAxMTM1MDMsIDExMzUwOSwgMTEzNTE3LCAxMTM1MjUsIAorICAgIDExMzUzMSwgMTEzNTM3LCAxMTM1NDEsIDExMzU0NSwgMTEzNTUyLCAxMTM1NjAsIDExMzU2NiwgMTEzNTcwLCAxMTM1NzQsIAorICAgIDExMzU3OCwgMTEzNTg1LCAxMTM1OTcsIDExMzYwMCwgMTEzNjA3LCAxMTM2MTMsIDExMzYxNywgMTEzNjIxLCAxMTM2MjUsIAorICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MSwgMTEzNjQ1LCAxMTM2NDksIDExMzY1MywgMTEzNjYwLCAxMTM2NjQsIAorICAgIDExMzY3MCwgMTEzNjc0LCAxMTM2NzgsIDExMzY4MiwgMTEzNjg4LCAxMTM2OTUsIDExMzcwMiwgMTEzNzA5LCAxMTM3MjEsIAorICAgIDExMzcyOSwgMTEzNzMzLCAxMTM3MzksIDExMzc0OCwgMTEzNzU1LCAxMTM3NjEsIDExMzc2NSwgMTEzNzY5LCAxMTM3NzMsIAorICAgIDExMzc3OSwgMTEzNzg4LCAxMTM3OTYsIDExMzgwMCwgMTEzODA2LCAxMTM4MTAsIDExMzgxNCwgMTEzODE4LCAxMTM4MjQsIAorICAgIDExMzgzMSwgMTEzODM3LCAxMTM4NDEsIDExMzg0NywgMTEzODUxLCAxMTM4NTUsIDExMzg2NCwgMTEzODc2LCAxMTM4ODAsIAorICAgIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxMSwgMTEzOTIzLCAxMTM5MzAsIDExMzkzNywgMTEzOTQ0LCAxMTM5NTUsIAorICAgIDExMzk2NSwgMTEzOTc4LCAxMTM5ODgsIDExMzk5NSwgMTEzOTk5LCAxMTQwMDMsIDExNDAwNywgMTE0MDExLCAxMTQwMjAsIAorICAgIDExNDAyOSwgMTE0MDM4LCAxMTQwNTUsIDExNDA2NCwgMTE0MDcwLCAxMTQwNzcsIDExNDA4NSwgMTE0MDk4LCAxMTQxMDIsIAorICAgIDExNDExMSwgMTE0MTIwLCAxMTQxMjksIDExNDEzOCwgMTE0MTQ5LCAxMTQxNTgsIDExNDE2NywgMTE0MTc2LCAxMTQxODUsIAorICAgIDExNDE5NCwgMTE0MjAzLCAxMTQyMTMsIDExNDIxNiwgMTE0MjIwLCAxMTQyMjQsIDExNDIyOCwgMTE0MjMyLCAxMTQyMzYsIAorICAgIDExNDI0MiwgMTE0MjQ5LCAxMTQyNTYsIDExNDI2MywgMTE0MjY5LCAxMTQyNzUsIDExNDI4MiwgMTE0Mjg4LCAxMTQyOTUsIAorICAgIDExNDMwMywgMTE0MzA3LCAxMTQzMTQsIDExNDMyMSwgMTE0MzI4LCAxMTQzMzYsIDExNDM0MCwgMTE0MzQ0LCAxMTQzNDgsIAorICAgIDExNDM1MiwgMTE0MzU2LCAxMTQzNjIsIDExNDM2NiwgMTE0MzcyLCAxMTQzNzksIDExNDM4NiwgMTE0MzkyLCAxMTQzOTksIAorICAgIDExNDQwNiwgMTE0NDEzLCAxMTQ0MjAsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIAorICAgIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ5MCwgMTE0NDk2LCAxMTQ1MDAsIDExNDUwOSwgMTE0NTEzLCAxMTQ1MTcsIAorICAgIDExNDUyMSwgMTE0NTI1LCAxMTQ1MzEsIDExNDUzOCwgMTE0NTQ1LCAxMTQ1NTIsIDExNDU1OSwgMTE0NTY2LCAxMTQ1NzIsIAorICAgIDExNDU4MCwgMTE0NTg0LCAxMTQ1ODgsIDExNDU5MiwgMTE0NTk2LCAxMTQ2MDIsIDExNDYxOSwgMTE0NjM2LCAxMTQ2NDAsIAorICAgIDExNDY0NCwgMTE0NjQ4LCAxMTQ2NTIsIDExNDY1NiwgMTE0NjYwLCAxMTQ2NjYsIDExNDY3MywgMTE0Njc3LCAxMTQ2ODMsIAorICAgIDExNDY5MCwgMTE0Njk3LCAxMTQ3MDQsIDExNDcxMSwgMTE0NzE4LCAxMTQ3MjcsIDExNDczNCwgMTE0NzQxLCAxMTQ3NDgsIAorICAgIDExNDc1NSwgMTE0NzU5LCAxMTQ3NjMsIDExNDc2OSwgMTE0NzgxLCAxMTQ3ODUsIDExNDc4OSwgMTE0Nzk4LCAxMTQ4MDIsIAorICAgIDExNDgwNiwgMTE0ODEwLCAxMTQ4MTYsIDExNDgyMCwgMTE0ODI0LCAxMTQ4MzMsIDExNDgzNywgMTE0ODQxLCAxMTQ4NDUsIAorICAgIDExNDg1MiwgMTE0ODU2LCAxMTQ4NjAsIDExNDg2NCwgMTE0ODY4LCAxMTQ4NzIsIDExNDg3NiwgMTE0ODgwLCAxMTQ4ODQsIAorICAgIDExNDg5MCwgMTE0ODk3LCAxMTQ5MDQsIDExNDkxMCwgMTE0OTE0LCAxMTQ5MzEsIDExNDkzNywgMTE0OTQxLCAxMTQ5NDcsIAorICAgIDExNDk1MywgMTE0OTU5LCAxMTQ5NjUsIDExNDk3MSwgMTE0OTc3LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTg5LCAxMTQ5OTUsIAorICAgIDExNDk5OSwgMTE1MDA1LCAxMTUwMDksIDExNTAxMywgMTE1MDIwLCAxMTUwMjcsIDExNTA0NCwgMTE1MDQ4LCAxMTUwNTIsIAorICAgIDExNTA1NiwgMTE1MDYwLCAxMTUwNjQsIDExNTA3NiwgMTE1MDc5LCAxMTUwODQsIDExNTA4OSwgMTE1MTA0LCAxMTUxMTQsIAorICAgIDExNTEyNiwgMTE1MTMwLCAxMTUxMzQsIDExNTEzOCwgMTE1MTQ0LCAxMTUxNTEsIDExNTE1OCwgMTE1MTY4LCAxMTUxODAsIAorICAgIDExNTE4NiwgMTE1MTkyLCAxMTUyMDEsIDExNTIwNSwgMTE1MjA5LCAxMTUyMTYsIDExNTIyNiwgMTE1MjMzLCAxMTUyMzksIAorICAgIDExNTI0MywgMTE1MjQ3LCAxMTUyNTQsIDExNTI2MCwgMTE1MjY0LCAxMTUyNzAsIDExNTI3NCwgMTE1MjgyLCAxMTUyODgsIAorICAgIDExNTI5MiwgMTE1MzAwLCAxMTUzMDksIDExNTMxNiwgMTE1MzIyLCAxMTUzMjksIDExNTMzNiwgMTE1MzQ2LCAxMTUzNTYsIAorICAgIDExNTM2MCwgMTE1MzY0LCAxMTUzNjgsIDExNTM3MiwgMTE1Mzc4LCAxMTUzODUsIDExNTM5MSwgMTE1Mzk4LCAxMTU0MDUsIAorICAgIDExNTQxMiwgMTE1NDIxLCAxMTU0MjgsIDExNTQzNSwgMTE1NDQxLCAxMTU0NDgsIDExNTQ1NSwgMTE1NDYyLCAxMTU0NjksIAorICAgIDExNTQ3NiwgMTE1NDgzLCAxMTU0ODksIDExNTQ5NiwgMTE1NTAzLCAxMTU1MTAsIDExNTUxOSwgMTE1NTI2LCAxMTU1MzMsIAorICAgIDExNTUzNywgMTE1NTQzLCAxMTU1NDcsIDExNTU1MywgMTE1NTYwLCAxMTU1NjcsIDExNTU3NCwgMTE1NTc4LCAxMTU1ODIsIAorICAgIDExNTU4NiwgMTE1NTkwLCAxMTU1OTQsIDExNTYwMSwgMTE1NjA1LCAxMTU2MDksIDExNTYxNSwgMTE1NjIzLCAxMTU2MjcsIAorICAgIDExNTYzMSwgMTE1NjM1LCAxMTU2MzksIDExNTY0NiwgMTE1NjUwLCAxMTU2NTQsIDExNTY2MiwgMTE1NjY2LCAxMTU2NzAsIAorICAgIDExNTY3NCwgMTE1Njc4LCAxMTU2ODQsIDExNTY4OCwgMTE1NjkyLCAxMTU2OTgsIDExNTcwNSwgMTE1NzExLCAxMTU3MTgsIAorICAgIDExNTczMCwgMTE1NzM0LCAxMTU3NDEsIDExNTc0OCwgMTE1NzU1LCAxMTU3NjIsIDExNTc3NCwgMTE1NzgxLCAxMTU3ODUsIAorICAgIDExNTc4OSwgMTE1NzkzLCAxMTU4MDAsIDExNTgwNywgMTE1ODE0LCAxMTU4MjEsIDExNTgzMSwgMTE1ODM4LCAxMTU4NDQsIAorICAgIDExNTg1MSwgMTE1ODU4LCAxMTU4NjUsIDExNTg3MiwgMTE1ODgxLCAxMTU4OTEsIDExNTg5OCwgMTE1OTAyLCAxMTU5MDksIAorICAgIDExNTkxMywgMTE1OTE3LCAxMTU5MjEsIDExNTkyOCwgMTE1OTM1LCAxMTU5NDUsIDExNTk1MSwgMTE1OTU1LCAxMTU5NjQsIAorICAgIDExNTk2OCwgMTE1OTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTgsIDExNjAwNSwgCisgICAgMTE2MDEyLCAxMTYwMTksIDExNjAyNiwgMTE2MDMzLCAxMTYwMzksIDExNjA0NiwgMTE2MDUzLCAxMTYwNjAsIDExNjA2NywgCisgICAgMTE2MDc0LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTksIDExNjEwNSwgMTE2MTExLCAxMTYxMTcsIDExNjEyMywgCisgICAgMTE2MTI5LCAxMTYxMzUsIDExNjE0MiwgMTE2MTQ5LCAxMTYxNTYsIDExNjE2MywgMTE2MTcwLCAxMTYxNzcsIDExNjE4MywgCisgICAgMTE2MTg5LCAxMTYxOTUsIDExNjIwMiwgMTE2MjA5LCAxMTYyMTUsIDExNjIyMSwgMTE2MjMwLCAxMTYyMzcsIDExNjI0NCwgCisgICAgMTE2MjUxLCAxMTYyNTgsIDExNjI2NSwgMTE2MjcyLCAxMTYyNzgsIDExNjI4NCwgMTE2MjkwLCAxMTYyOTksIDExNjMwNiwgCisgICAgMTE2MzEzLCAxMTYzMjQsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDcsIDExNjM1MywgMTE2MzYyLCAxMTYzNjksIDExNjM3NiwgCisgICAgMTE2Mzg2LCAxMTYzOTYsIDExNjQwNywgMTE2NDE4LCAxMTY0MzAsIDExNjQ0MywgMTE2NDU0LCAxMTY0NjUsIDExNjQ3NywgCisgICAgMTE2NDkwLCAxMTY1MDEsIDExNjUxMiwgMTE2NTIzLCAxMTY1MzQsIDExNjU0NSwgMTE2NTU3LCAxMTY1NjUsIDExNjU3MywgCisgICAgMTE2NTgyLCAxMTY1OTEsIDExNjYwMCwgMTE2NjA2LCAxMTY2MTIsIDExNjYxOCwgMTE2NjI1LCAxMTY2MzUsIDExNjY0MiwgCisgICAgMTE2NjUyLCAxMTY2NTcsIDExNjY2MiwgMTE2NjY4LCAxMTY2NzQsIDExNjY4MiwgMTE2NjkwLCAxMTY2OTksIDExNjcxMCwgCisgICAgMTE2NzIxLCAxMTY3MjksIDExNjczNywgMTE2NzQ2LCAxMTY3NTUsIDExNjc2MywgMTE2NzcwLCAxMTY3NzgsIDExNjc4NiwgCisgICAgMTE2NzkzLCAxMTY4MDAsIDExNjgwOSwgMTE2ODE4LCAxMTY4MjcsIDExNjgzNiwgMTE2ODQ1LCAwLCAxMTY4NTQsIAorICAgIDExNjg2NSwgMTE2ODcyLCAxMTY4ODAsIDExNjg4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2ODk2LCAKKyAgICAxMTY5MDUsIDExNjkxMiwgMTE2OTE5LCAxMTY5MjgsIDExNjkzNSwgMTE2OTQyLCAxMTY5NDksIDExNjk1OSwgMTE2OTY2LCAKKyAgICAxMTY5NzMsIDExNjk4MCwgMTE2OTg4LCAxMTY5OTUsIDExNzAwMiwgMTE3MDA5LCAxMTcwMjAsIDExNzAyNywgMTE3MDM0LCAKKyAgICAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAxMTcwNjQsIDExNzA3MSwgMTE3MDc3LCAxMTcwODQsIDExNzA5MywgMTE3MTAwLCAKKyAgICAxMTcxMDcsIDExNzExNCwgMTE3MTI0LCAxMTcxMzEsIDExNzEzOCwgMTE3MTQ4LCAxMTcxNTgsIDExNzE2NSwgMTE3MTcyLCAKKyAgICAxMTcxNzksIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwOSwgMTE3MjE2LCAxMTcyMjMsIDExNzIyOSwgMTE3MjM3LCAKKyAgICAxMTcyNDYsIDExNzI1NSwgMTE3MjY2LCAxMTcyNzUsIDExNzI4NCwgMTE3MjkzLCAxMTczMDIsIDExNzMxMSwgMTE3MzE4LCAKKyAgICAxMTczMjUsIDExNzMzNCwgMTE3MzQ2LCAxMTczNTYsIDExNzM2MywgMTE3MzcwLCAxMTczODAsIDExNzM5MCwgMTE3Mzk5LCAKKyAgICAxMTc0MDksIDExNzQxNiwgMTE3NDI2LCAxMTc0MzMsIDExNzQ0MCwgMTE3NDQ3LCAxMTc0NTcsIDExNzQ2NywgMTE3NDc0LCAKKyAgICAxMTc0ODEsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDgsIDExNzUxNywgMTE3NTI3LCAxMTc1MzUsIDExNzU0OCwgMTE3NTU1LCAKKyAgICAxMTc1NjEsIDExNzU2OSwgMTE3NTc2LCAxMTc1ODYsIDExNzU5MCwgMTE3NTk0LCAxMTc1OTgsIDExNzYwMiwgMTE3NjA2LCAKKyAgICAxMTc2MTAsIDExNzYxNCwgMTE3NjIzLCAxMTc2MjcsIDExNzYzNCwgMTE3NjM4LCAxMTc2NDIsIDExNzY0NiwgMTE3NjUwLCAKKyAgICAxMTc2NTQsIDExNzY1OCwgMTE3NjYyLCAxMTc2NjYsIDExNzY3MCwgMTE3Njc0LCAxMTc2NzgsIDExNzY4MiwgMTE3Njg2LCAKKyAgICAxMTc2OTAsIDExNzY5NCwgMTE3Njk4LCAxMTc3MDIsIDExNzcwNiwgMTE3NzEwLCAxMTc3MTcsIDExNzcyNCwgMTE3NzM0LCAKKyAgICAxMTc3NDcsIDExNzc1NywgMTE3NzYxLCAxMTc3NjUsIDExNzc2OSwgMTE3NzczLCAxMTc3NzcsIDExNzc4MSwgMTE3Nzg1LCAKKyAgICAxMTc3ODksIDExNzc5MywgMTE3Nzk3LCAxMTc4MDEsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjYsIDExNzgzMywgMTE3ODQwLCAKKyAgICAxMTc4NDcsIDExNzg1NCwgMTE3ODYxLCAxMTc4NjgsIDExNzg3NSwgMTE3ODc5LCAxMTc4ODMsIDExNzg5MCwgMTE3ODk3LCAKKyAgICAxMTc5MDQsIDExNzkxMywgMTE3OTIwLCAxMTc5MzMsIDExNzk0MywgMTE3OTUwLCAxMTc5NTcsIDExNzk2MSwgMTE3OTY1LCAKKyAgICAxMTc5NzQsIDExNzk4MSwgMTE3OTg4LCAxMTc5OTUsIDExODAwOCwgMTE4MDE1LCAxMTgwMjIsIDExODAzMiwgMTE4MDQyLCAKKyAgICAxMTgwNTEsIDExODA1OCwgMTE4MDY1LCAxMTgwNzIsIDExODA3OSwgMTE4MDg2LCAxMTgwOTMsIDExODEwMywgMTE4MTA5LCAKKyAgICAxMTgxMTcsIDExODEyNCwgMTE4MTMyLCAxMTgxMzksIDExODE1MCwgMTE4MTU3LCAxMTgxNjMsIDExODE3MCwgMTE4MTc3LCAKKyAgICAxMTgxODQsIDExODE5MSwgMTE4MjAxLCAxMTgyMTEsIDExODIxOCwgMTE4MjI1LCAxMTgyMzQsIDExODI0MiwgMTE4MjQ4LCAKKyAgICAxMTgyNTUsIDExODI2MiwgMTE4MjY5LCAxMTgyNzYsIDExODI4MCwgMTE4MjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgzMDAsIDExODMwNCwgMTE4MzA4LCAxMTgzMTIsIAorICAgIDExODMxNiwgMTE4MzIwLCAxMTgzMjQsIDExODMyOCwgMTE4MzMyLCAxMTgzMzYsIDExODM0MCwgMTE4MzQ0LCAxMTgzNDgsIAorICAgIDExODM1MiwgMTE4MzU2LCAxMTgzNjAsIDExODM2NCwgMTE4MzY4LCAxMTgzNzIsIDExODM3NiwgMTE4MzgwLCAxMTgzODQsIAorICAgIDExODM4OCwgMTE4MzkyLCAxMTgzOTYsIDExODQwMCwgMTE4NDA0LCAxMTg0MDgsIDExODQxMiwgMTE4NDE2LCAxMTg0MjAsIAorICAgIDExODQyNCwgMTE4NDI4LCAxMTg0MzIsIDExODQzNiwgMTE4NDQwLCAxMTg0NDQsIDExODQ0OCwgMTE4NDUyLCAxMTg0NTYsIAorICAgIDExODQ2MCwgMTE4NDY0LCAxMTg0NjgsIDExODQ3MiwgMTE4NDc2LCAxMTg0ODAsIDExODQ4NCwgMTE4NDg4LCAxMTg0OTIsIAorICAgIDExODQ5NiwgMTE4NTAwLCAxMTg1MDQsIDExODUwOCwgMTE4NTEyLCAxMTg1MTYsIDExODUyMCwgMTE4NTI0LCAxMTg1MjgsIAorICAgIDExODUzMiwgMTE4NTM2LCAxMTg1NDAsIDExODU0NCwgMTE4NTQ4LCAxMTg1NTIsIDExODU1NiwgMTE4NTYwLCAxMTg1NjQsIAorICAgIDExODU2OCwgMTE4NTcyLCAxMTg1NzYsIDExODU4MCwgMTE4NTg0LCAxMTg1ODgsIDExODU5MiwgMTE4NTk2LCAxMTg2MDAsIAorICAgIDExODYwNCwgMTE4NjA4LCAxMTg2MTIsIDExODYxNiwgMTE4NjIwLCAxMTg2MjQsIDExODYyOCwgMTE4NjMyLCAxMTg2MzYsIAorICAgIDExODY0MCwgMTE4NjQ0LCAxMTg2NDgsIDExODY1MiwgMTE4NjU2LCAxMTg2NjAsIDExODY2NCwgMTE4NjY4LCAxMTg2NzIsIAorICAgIDExODY3NiwgMTE4NjgwLCAxMTg2ODQsIDExODY4OCwgMTE4NjkyLCAxMTg2OTYsIDExODcwMCwgMTE4NzA0LCAxMTg3MDgsIAorICAgIDExODcxMiwgMTE4NzE2LCAxMTg3MjAsIDExODcyNCwgMTE4NzI4LCAxMTg3MzIsIDExODczNiwgMTE4NzQwLCAxMTg3NDQsIAorICAgIDExODc0OCwgMTE4NzUyLCAxMTg3NTYsIDExODc2MCwgMTE4NzY0LCAxMTg3NjgsIDExODc3MiwgMTE4Nzc2LCAxMTg3ODAsIAorICAgIDExODc4NCwgMTE4Nzg4LCAxMTg3OTIsIDExODc5NiwgMTE4ODAwLCAxMTg4MDQsIDExODgwOCwgMTE4ODEyLCAxMTg4MTYsIAorICAgIDExODgyMCwgMTE4ODI0LCAxMTg4MjgsIDExODgzMiwgMTE4ODM2LCAxMTg4NDAsIDExODg0NCwgMTE4ODQ4LCAxMTg4NTIsIAorICAgIDExODg1NiwgMTE4ODYwLCAxMTg4NjQsIDExODg2OCwgMTE4ODcyLCAxMTg4NzYsIDExODg4MCwgMTE4ODg0LCAxMTg4ODgsIAorICAgIDExODg5MiwgMTE4ODk2LCAxMTg5MDAsIDExODkwNCwgMTE4OTA4LCAxMTg5MTIsIDExODkxNiwgMTE4OTIwLCAxMTg5MjQsIAorICAgIDExODkyOCwgMTE4OTMyLCAxMTg5MzYsIDExODk0MCwgMTE4OTQ0LCAxMTg5NDgsIDExODk1MiwgMTE4OTU2LCAxMTg5NjAsIAorICAgIDExODk2NCwgMTE4OTY4LCAxMTg5NzIsIDExODk3NiwgMTE4OTgwLCAxMTg5ODQsIDExODk4OCwgMTE4OTkyLCAxMTg5OTYsIAorICAgIDExOTAwMCwgMTE5MDA0LCAxMTkwMDgsIDExOTAxMiwgMTE5MDE2LCAxMTkwMjAsIDExOTAyNCwgMTE5MDI4LCAxMTkwMzIsIAorICAgIDExOTAzNiwgMTE5MDQwLCAxMTkwNDQsIDExOTA0OCwgMTE5MDUyLCAxMTkwNTYsIDExOTA2MCwgMTE5MDY0LCAxMTkwNjgsIAorICAgIDExOTA3MiwgMTE5MDc2LCAxMTkwODAsIDExOTA4NCwgMTE5MDg4LCAxMTkwOTIsIDExOTA5NiwgMTE5MTAwLCAxMTkxMDQsIAorICAgIDExOTEwOCwgMTE5MTEyLCAxMTkxMTYsIDExOTEyMCwgMTE5MTI0LCAxMTkxMjgsIDExOTEzMiwgMTE5MTM2LCAxMTkxNDAsIAorICAgIDExOTE0NCwgMTE5MTQ4LCAxMTkxNTIsIDExOTE1NiwgMTE5MTYwLCAxMTkxNjQsIDExOTE2OCwgMTE5MTcyLCAxMTkxNzYsIAorICAgIDExOTE4MCwgMTE5MTg0LCAxMTkxODgsIDExOTE5MiwgMTE5MTk2LCAxMTkyMDAsIDExOTIwNCwgMTE5MjA4LCAxMTkyMTIsIAorICAgIDExOTIxNiwgMTE5MjIwLCAxMTkyMjQsIDExOTIyOCwgMTE5MjMyLCAxMTkyMzYsIDExOTI0MCwgMTE5MjQ0LCAxMTkyNDgsIAorICAgIDExOTI1MiwgMTE5MjU2LCAxMTkyNjAsIDExOTI2NCwgMTE5MjY4LCAxMTkyNzIsIDExOTI3NiwgMTE5MjgwLCAxMTkyODQsIAorICAgIDExOTI4OCwgMTE5MjkyLCAxMTkyOTYsIDExOTMwMCwgMTE5MzA0LCAxMTkzMDgsIDExOTMxMiwgMTE5MzE2LCAxMTkzMjAsIAorICAgIDExOTMyNCwgMTE5MzI4LCAxMTkzMzIsIDExOTMzNiwgMTE5MzQwLCAxMTkzNDQsIDExOTM0OCwgMTE5MzUyLCAxMTkzNTYsIAorICAgIDExOTM2MCwgMTE5MzY0LCAxMTkzNjgsIDExOTM3MiwgMTE5Mzc2LCAxMTkzODAsIDExOTM4NCwgMTE5Mzg4LCAxMTkzOTIsIAorICAgIDExOTM5NiwgMTE5NDAwLCAxMTk0MDQsIDExOTQwOCwgMTE5NDEyLCAxMTk0MTYsIDExOTQyMCwgMTE5NDI0LCAxMTk0MjgsIAorICAgIDExOTQzMiwgMTE5NDM2LCAxMTk0NDAsIDExOTQ0NCwgMTE5NDQ4LCAxMTk0NTIsIDExOTQ1NiwgMTE5NDYwLCAxMTk0NjQsIAorICAgIDExOTQ2OCwgMTE5NDcyLCAxMTk0NzYsIDExOTQ4MCwgMTE5NDg0LCAxMTk0ODgsIDExOTQ5MiwgMTE5NDk2LCAxMTk1MDAsIAorICAgIDExOTUwNCwgMTE5NTA4LCAxMTk1MTIsIDExOTUxNiwgMTE5NTIwLCAxMTk1MjQsIDExOTUyOCwgMTE5NTMyLCAxMTk1MzYsIAorICAgIDExOTU0MCwgMTE5NTQ0LCAxMTk1NDgsIDExOTU1MiwgMTE5NTU2LCAxMTk1NjAsIDExOTU2NCwgMTE5NTY4LCAxMTk1NzIsIAorICAgIDExOTU3NiwgMTE5NTgwLCAxMTk1ODQsIDExOTU4OCwgMTE5NTkyLCAxMTk1OTYsIDExOTYwMCwgMTE5NjA0LCAxMTk2MDgsIAorICAgIDExOTYxMiwgMTE5NjE2LCAxMTk2MjAsIDExOTYyNCwgMTE5NjI4LCAxMTk2MzIsIDExOTYzNiwgMTE5NjQwLCAxMTk2NDQsIAorICAgIDExOTY0OCwgMTE5NjUyLCAxMTk2NTYsIDExOTY2MCwgMTE5NjY0LCAxMTk2NjgsIDExOTY3MiwgMTE5Njc2LCAxMTk2ODAsIAorICAgIDExOTY4NCwgMTE5Njg4LCAxMTk2OTIsIDExOTY5NiwgMTE5NzAwLCAxMTk3MDQsIDExOTcwOCwgMTE5NzEyLCAxMTk3MTYsIAorICAgIDExOTcyMCwgMTE5NzI0LCAxMTk3MjgsIDExOTczMiwgMTE5NzM2LCAxMTk3NDAsIDExOTc0NCwgMTE5NzQ4LCAxMTk3NTIsIAorICAgIDExOTc1NiwgMTE5NzYwLCAxMTk3NjQsIDExOTc2OCwgMTE5NzcyLCAxMTk3NzYsIDExOTc4MCwgMTE5Nzg0LCAxMTk3ODgsIAorICAgIDExOTc5MiwgMTE5Nzk2LCAxMTk4MDAsIDExOTgwNCwgMTE5ODA4LCAxMTk4MTIsIDExOTgxNiwgMTE5ODIwLCAxMTk4MjQsIAorICAgIDExOTgyOCwgMTE5ODMyLCAxMTk4MzYsIDExOTg0MCwgMTE5ODQ0LCAxMTk4NDgsIDExOTg1MiwgMTE5ODU2LCAxMTk4NjAsIAorICAgIDExOTg2NCwgMTE5ODY4LCAxMTk4NzIsIDExOTg3NiwgMTE5ODgwLCAxMTk4ODQsIDExOTg4OCwgMTE5ODkyLCAxMTk4OTYsIAorICAgIDExOTkwMCwgMTE5OTA0LCAxMTk5MDgsIDExOTkxMiwgMTE5OTE2LCAxMTk5MjAsIDExOTkyNCwgMTE5OTI4LCAxMTk5MzIsIAorICAgIDExOTkzNiwgMTE5OTQwLCAxMTk5NDQsIDExOTk0OCwgMTE5OTUyLCAxMTk5NTYsIDExOTk2MCwgMTE5OTY0LCAxMTk5NjgsIAorICAgIDExOTk3MiwgMTE5OTc2LCAxMTk5ODAsIDExOTk4NCwgMTE5OTg4LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAxMjAwMDQsIAorICAgIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMiwgMTIwMDM2LCAxMjAwNDAsIAorICAgIDEyMDA0NCwgMTIwMDQ4LCAxMjAwNTIsIDEyMDA1NiwgMTIwMDYwLCAxMjAwNjQsIDEyMDA2OCwgMTIwMDcyLCAxMjAwNzYsIAorICAgIDEyMDA4MCwgMTIwMDg0LCAxMjAwODgsIDEyMDA5MiwgMTIwMDk2LCAxMjAxMDAsIDEyMDEwNCwgMTIwMTA4LCAxMjAxMTIsIAorICAgIDEyMDExNiwgMTIwMTIwLCAxMjAxMjQsIDEyMDEyOCwgMTIwMTMyLCAxMjAxMzYsIDEyMDE0MCwgMTIwMTQ0LCAxMjAxNDgsIAorICAgIDEyMDE1MiwgMTIwMTU2LCAxMjAxNjAsIDEyMDE2NCwgMTIwMTY4LCAxMjAxNzIsIDEyMDE3NiwgMTIwMTgwLCAxMjAxODQsIAorICAgIDEyMDE4OCwgMTIwMTkyLCAxMjAxOTYsIDEyMDIwMCwgMTIwMjA0LCAxMjAyMDgsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIAorICAgIDEyMDIyNCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIAorICAgIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIAorICAgIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI0LCAxMjAzMjgsIAorICAgIDEyMDMzMiwgMTIwMzM2LCAxMjAzNDAsIDEyMDM0NCwgMTIwMzQ4LCAxMjAzNTIsIDEyMDM1NiwgMTIwMzYwLCAxMjAzNjQsIAorICAgIDEyMDM2OCwgMTIwMzcyLCAxMjAzNzYsIDEyMDM4MCwgMTIwMzg0LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjA0MDAsIAorICAgIDEyMDQwNCwgMTIwNDA4LCAxMjA0MTIsIDEyMDQxNiwgMTIwNDIwLCAxMjA0MjQsIDEyMDQyOCwgMTIwNDMyLCAxMjA0MzYsIAorICAgIDEyMDQ0MCwgMTIwNDQ0LCAxMjA0NDgsIDEyMDQ1MiwgMTIwNDU2LCAxMjA0NjAsIDEyMDQ2NCwgMTIwNDY4LCAxMjA0NzIsIAorICAgIDEyMDQ3NiwgMTIwNDgwLCAxMjA0ODQsIDEyMDQ4OCwgMTIwNDkyLCAxMjA0OTYsIDEyMDUwMCwgMTIwNTA0LCAxMjA1MDgsIAorICAgIDEyMDUxMiwgMTIwNTE2LCAxMjA1MjAsIDEyMDUyNCwgMTIwNTI4LCAxMjA1MzIsIDEyMDUzNiwgMTIwNTQwLCAxMjA1NDQsIAorICAgIDEyMDU0OCwgMTIwNTUyLCAxMjA1NTYsIDEyMDU2MCwgMTIwNTY0LCAxMjA1NjgsIDEyMDU3MiwgMTIwNTc2LCAxMjA1ODAsIAorICAgIDEyMDU4NCwgMTIwNTg4LCAxMjA1OTIsIDEyMDU5NiwgMTIwNjAwLCAxMjA2MDQsIDEyMDYwOCwgMTIwNjEyLCAxMjA2MTYsIAorICAgIDEyMDYyMCwgMTIwNjI0LCAxMjA2MjgsIDEyMDYzMiwgMTIwNjM2LCAxMjA2NDAsIDEyMDY0NCwgMTIwNjQ4LCAxMjA2NTIsIAorICAgIDEyMDY1NiwgMTIwNjYwLCAxMjA2NjQsIDEyMDY2OCwgMTIwNjcyLCAxMjA2NzYsIDEyMDY4MCwgMTIwNjg0LCAxMjA2ODgsIAorICAgIDEyMDY5MiwgMTIwNjk2LCAxMjA3MDAsIDEyMDcwNCwgMTIwNzA4LCAxMjA3MTIsIDEyMDcxNiwgMTIwNzIwLCAxMjA3MjQsIAorICAgIDEyMDcyOCwgMTIwNzMyLCAxMjA3MzYsIDEyMDc0MCwgMTIwNzQ0LCAxMjA3NDgsIDEyMDc1MiwgMTIwNzU2LCAxMjA3NjAsIAorICAgIDEyMDc2NCwgMTIwNzY4LCAxMjA3NzIsIDEyMDc3NiwgMTIwNzgwLCAxMjA3ODQsIDEyMDc4OCwgMTIwNzkyLCAxMjA3OTYsIAorICAgIDEyMDgwMCwgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIAorICAgIDEyMDgzNiwgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIAorICAgIDEyMDg3MiwgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIAorICAgIDEyMDkwOCwgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIAorICAgIDEyMDk0NCwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIAorICAgIDEyMDk4MCwgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIAorICAgIDEyMTAxNiwgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIAorICAgIDEyMTA1MiwgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIAorICAgIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIAorICAgIDEyMTEyNCwgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIAorICAgIDEyMTE2MCwgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIAorICAgIDEyMTE5NiwgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIAorICAgIDEyMTIzMiwgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIAorICAgIDEyMTI2OCwgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIAorICAgIDEyMTMwNCwgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIAorICAgIDEyMTM0MCwgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIAorICAgIDEyMTM3NiwgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIAorICAgIDEyMTQxMiwgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIAorICAgIDEyMTQ0OCwgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIAorICAgIDEyMTQ4NCwgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIAorICAgIDEyMTUyMCwgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIAorICAgIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIAorICAgIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIAorICAgIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIAorICAgIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIAorICAgIDEyMTcwMCwgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIAorICAgIDEyMTczNiwgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIAorICAgIDEyMTc3MiwgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIAorICAgIDEyMTgwOCwgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIAorICAgIDEyMTg0NCwgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIAorICAgIDEyMTg4MCwgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIAorICAgIDEyMTkxNiwgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIAorICAgIDEyMTk1MiwgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIAorICAgIDEyMTk4OCwgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIAorICAgIDEyMjAyNCwgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIAorICAgIDEyMjA2MCwgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIAorICAgIDEyMjA5NiwgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIAorICAgIDEyMjEzMiwgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIAorICAgIDEyMjE2OCwgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIAorICAgIDEyMjIwNCwgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIAorICAgIDEyMjI0MCwgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIAorICAgIDEyMjI3NiwgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIAorICAgIDEyMjMxMiwgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIAorICAgIDEyMjM0OCwgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIAorICAgIDEyMjM4NCwgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIAorICAgIDEyMjQyMCwgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIAorICAgIDEyMjQ1NiwgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIAorICAgIDEyMjQ5MiwgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIAorICAgIDEyMjUyOCwgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIAorICAgIDEyMjU2NCwgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgMTIyNjA0LCAxMjI2MDgsIAorICAgIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgMTIyNjQwLCAxMjI2NDQsIAorICAgIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgMTIyNjc2LCAxMjI2ODAsIAorICAgIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgMTIyNzEyLCAxMjI3MTYsIAorICAgIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgMTIyNzQ4LCAxMjI3NTIsIAorICAgIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgMTIyNzg0LCAxMjI3ODgsIAorICAgIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgMTIyODIwLCAxMjI4MjQsIAorICAgIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgMTIyODU2LCAxMjI4NjAsIAorICAgIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgMTIyODkyLCAxMjI4OTYsIAorICAgIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgMTIyOTI4LCAxMjI5MzIsIAorICAgIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgMTIyOTY0LCAxMjI5NjgsIAorICAgIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgMTIzMDAwLCAxMjMwMDQsIAorICAgIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgMTIzMDM2LCAxMjMwNDAsIAorICAgIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgMTIzMDcyLCAxMjMwNzYsIAorICAgIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgMTIzMTA4LCAxMjMxMTIsIAorICAgIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgMTIzMTQ0LCAxMjMxNDgsIAorICAgIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgMTIzMTgwLCAxMjMxODQsIAorICAgIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgMTIzMjE2LCAxMjMyMjAsIAorICAgIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgMTIzMjUyLCAxMjMyNTYsIAorICAgIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgMTIzMjg4LCAxMjMyOTIsIAorICAgIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgMTIzMzI0LCAxMjMzMjgsIAorICAgIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgMTIzMzYwLCAxMjMzNjQsIAorICAgIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgMTIzMzk2LCAxMjM0MDAsIAorICAgIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgMTIzNDMyLCAxMjM0MzYsIAorICAgIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgMTIzNDY4LCAxMjM0NzIsIAorICAgIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgMTIzNTA0LCAxMjM1MDgsIAorICAgIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgMTIzNTQwLCAxMjM1NDQsIAorICAgIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgMTIzNTc2LCAxMjM1ODAsIAorICAgIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgMTIzNjEyLCAxMjM2MTYsIAorICAgIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ4LCAxMjM2NTIsIAorICAgIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgMTIzNjg0LCAxMjM2ODgsIAorICAgIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgMTIzNzIwLCAxMjM3MjQsIAorICAgIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgMTIzNzU2LCAxMjM3NjAsIAorICAgIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgMTIzNzkyLCAxMjM3OTYsIAorICAgIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgMTIzODI4LCAxMjM4MzIsIAorICAgIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgMTIzODY0LCAxMjM4NjgsIAorICAgIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgMTIzOTAwLCAxMjM5MDQsIAorICAgIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDAsIAorICAgIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgMTIzOTcyLCAxMjM5NzYsIAorICAgIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA4LCAxMjQwMTIsIAorICAgIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgMTI0MDQ0LCAxMjQwNDgsIAorICAgIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgMTI0MDgwLCAxMjQwODQsIAorICAgIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgMTI0MTE2LCAxMjQxMjAsIAorICAgIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUyLCAxMjQxNTYsIAorICAgIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgMTI0MTg4LCAxMjQxOTIsIAorICAgIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgMTI0MjI0LCAxMjQyMjgsIAorICAgIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMTI0MjYwLCAxMjQyNjQsIAorICAgIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgMTI0Mjk2LCAxMjQzMDAsIAorICAgIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzI2LCAxMjQzMzAsIDEyNDMzNCwgMTI0MzM4LCAxMjQzNDIsIAorICAgIDEyNDM0NiwgMTI0MzUwLCAxMjQzNTQsIDEyNDM1OCwgMTI0MzYyLCAxMjQzNjYsIDEyNDM3MCwgMTI0Mzc1LCAxMjQzNzksIAorICAgIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIAorICAgIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0OCwgMTI0NDU3LCAxMjQ0NjEsIAorICAgIDEyNDQ2NSwgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIAorICAgIDEyNDUwMSwgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAxMjQ1MzMsIAorICAgIDEyNDUzNywgMTI0NTQxLCAxMjQ1NDUsIDEyNDU0OSwgMTI0NTUzLCAxMjQ1NTcsIDEyNDU2MSwgMTI0NTY1LCAxMjQ1NjksIAorICAgIDEyNDU3MywgMTI0NTc3LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg5LCAxMjQ1OTMsIDEyNDU5NywgMTI0NjAxLCAxMjQ2MDUsIAorICAgIDEyNDYwOSwgMTI0NjEzLCAxMjQ2MTcsIDEyNDYyMSwgMTI0NjI1LCAxMjQ2MjksIDEyNDYzMywgMTI0NjM3LCAxMjQ2NDEsIAorICAgIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjYxLCAxMjQ2NjUsIDEyNDY2OSwgMTI0NjczLCAxMjQ2NzcsIAorICAgIDEyNDY4MSwgMTI0Njg1LCAxMjQ2ODksIDEyNDY5MywgMTI0Njk3LCAxMjQ3MDEsIDEyNDcwNSwgMTI0NzA5LCAxMjQ3MTMsIAorICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjUsIDEyNDcyOSwgMTI0NzMzLCAxMjQ3MzcsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIAorICAgIDEyNDc1MywgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY5LCAxMjQ3NzMsIDEyNDc3NywgMTI0NzgxLCAxMjQ3ODUsIAorICAgIDEyNDc4OSwgMTI0NzkzLCAxMjQ3OTcsIDEyNDgwMSwgMTI0ODA1LCAxMjQ4MDksIDEyNDgxMywgMTI0ODE3LCAxMjQ4MjEsIAorICAgIDEyNDgyNSwgMTI0ODI5LCAxMjQ4MzMsIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OSwgMTI0ODUzLCAxMjQ4NTcsIAorICAgIDEyNDg2MSwgMTI0ODY1LCAxMjQ4NjksIDEyNDg3MywgMTI0ODc3LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTMsIAorICAgIDEyNDg5NywgMTI0OTAxLCAxMjQ5MDUsIDEyNDkwOSwgMTI0OTEzLCAxMjQ5MTcsIDEyNDkyMSwgMTI0OTI1LCAxMjQ5MjksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDkzMywgMTI0OTQxLCAKKyAgICAxMjQ5NDksIDEyNDk1OSwgMTI0OTY5LCAxMjQ5NzcsIDEyNDk4MywgMTI0OTkxLCAxMjQ5OTksIDEyNTAwOSwgMTI1MDIxLCAKKyAgICAxMjUwMzMsIDEyNTAzOSwgMTI1MDQ3LCAxMjUwNTMsIDEyNTA1OSwgMTI1MDY1LCAxMjUwNzEsIDEyNTA3NywgMTI1MDgzLCAKKyAgICAxMjUwODksIDEyNTA5NSwgMTI1MTAxLCAxMjUxMDcsIDEyNTExMywgMTI1MTIxLCAxMjUxMjksIDEyNTEzNSwgMTI1MTQxLCAKKyAgICAxMjUxNDcsIDEyNTE1MywgMTI1MTYxLCAxMjUxNjksIDEyNTE3OCwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5OCwgMTI1MjA0LCAKKyAgICAxMjUyMTAsIDEyNTIxNiwgMTI1MjIyLCAxMjUyMzAsIDEyNTIzOCwgMTI1MjQ0LCAxMjUyNTAsIDEyNTI1NiwgMTI1MjYyLCAKKyAgICAxMjUyNjgsIDEyNTI3NCwgMTI1MjgwLCAxMjUyODYsIDEyNTI5MiwgMTI1Mjk4LCAxMjUzMDQsIDEyNTMxMCwgMTI1MzE2LCAKKyAgICAxMjUzMjIsIDEyNTMyOCwgMTI1MzM0LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAxMjUzNjAsIDEyNTM2NiwgMTI1MzcyLCAKKyAgICAxMjUzODIsIDEyNTM5MCwgMTI1Mzk2LCAxMjU0MDIsIDEyNTQwOCwgMTI1NDE0LCAxMjU0MjAsIDEyNTQyNiwgMTI1NDMyLCAKKyAgICAxMjU0MzgsIDEyNTQ0NCwgMTI1NDUwLCAxMjU0NTYsIDEyNTQ2MiwgMTI1NDY4LCAxMjU0NzQsIDEyNTQ4MCwgMTI1NDg2LCAKKyAgICAxMjU0OTIsIDEyNTQ5OCwgMTI1NTA0LCAxMjU1MTAsIDEyNTUxNiwgMTI1NTIyLCAxMjU1MzAsIDEyNTUzNiwgMTI1NTQ0LCAKKyAgICAxMjU1NTIsIDEyNTU2MCwgMTI1NTY2LCAxMjU1NzIsIDEyNTU3OCwgMTI1NTg0LCAxMjU1OTAsIDEyNTU5OCwgMTI1NjA4LCAKKyAgICAxMjU2MTYsIDEyNTYyNCwgMTI1NjMwLCAxMjU2MzYsIDEyNTY0NCwgMTI1NjUyLCAxMjU2NTgsIDEyNTY2NiwgMTI1Njc0LCAKKyAgICAxMjU2ODIsIDEyNTY4OCwgMTI1Njk0LCAxMjU3MDAsIDEyNTcwNiwgMTI1NzEyLCAxMjU3MTgsIDEyNTcyNiwgMTI1NzM0LCAKKyAgICAxMjU3NDAsIDEyNTc0NiwgMTI1NzUyLCAxMjU3NTgsIDEyNTc2NCwgMTI1NzcyLCAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAKKyAgICAxMjU3OTYsIDEyNTgwMiwgMTI1ODA4LCAxMjU4MTYsIDEyNTgyMiwgMTI1ODI4LCAxMjU4MzQsIDEyNTg0MCwgMTI1ODQ4LCAKKyAgICAxMjU4NTYsIDEyNTg2MiwgMTI1ODY4LCAxMjU4NzQsIDEyNTg3OSwgMTI1ODg1LCAxMjU4OTEsIDEyNTg5OCwgMTI1OTAzLCAKKyAgICAxMjU5MDgsIDEyNTkxMywgMTI1OTE4LCAxMjU5MjMsIDEyNTkyOCwgMTI1OTMzLCAxMjU5MzgsIDEyNTk0MywgMTI1OTUyLCAKKyAgICAxMjU5NTksIDEyNTk2NCwgMTI1OTY5LCAxMjU5NzQsIDEyNTk4MSwgMTI1OTg2LCAxMjU5OTEsIDEyNTk5NiwgMTI2MDAzLCAKKyAgICAxMjYwMDgsIDEyNjAxMywgMTI2MDE4LCAxMjYwMjMsIDEyNjAyOCwgMTI2MDMzLCAxMjYwMzgsIDEyNjA0MywgMTI2MDQ4LCAKKyAgICAxMjYwNTMsIDEyNjA1OCwgMTI2MDY1LCAxMjYwNzAsIDEyNjA3NywgMTI2MDgyLCAxMjYwODcsIDEyNjA5NCwgMTI2MDk5LCAKKyAgICAxMjYxMDQsIDEyNjEwOSwgMTI2MTE0LCAxMjYxMTksIDEyNjEyNCwgMTI2MTI5LCAxMjYxMzQsIDEyNjEzOSwgMTI2MTQ0LCAKKyAgICAxMjYxNDksIDEyNjE1NCwgMTI2MTU5LCAxMjYxNjQsIDEyNjE2OSwgMTI2MTc0LCAxMjYxNzksIDEyNjE4NCwgMTI2MTg5LCAKKyAgICAxMjYxOTYsIDEyNjIwMSwgMTI2MjA2LCAxMjYyMTEsIDEyNjIxNiwgMTI2MjIxLCAxMjYyMjYsIDEyNjIzMSwgMTI2MjM2LCAKKyAgICAxMjYyNDEsIDEyNjI0NiwgMTI2MjUxLCAxMjYyNTYsIDEyNjI2MSwgMTI2MjY4LCAxMjYyNzMsIDEyNjI3OCwgMTI2Mjg1LCAKKyAgICAxMjYyOTAsIDEyNjI5NSwgMTI2MzAwLCAxMjYzMDUsIDEyNjMxMCwgMTI2MzE1LCAxMjYzMjAsIDEyNjMyNSwgMTI2MzMwLCAKKyAgICAxMjYzMzUsIDEyNjM0MiwgMTI2MzQ3LCAxMjYzNTIsIDEyNjM1NywgMTI2MzYyLCAxMjYzNjcsIDEyNjM3NCwgMTI2MzgxLCAKKyAgICAxMjYzODYsIDEyNjM5MSwgMTI2Mzk2LCAxMjY0MDEsIDEyNjQwNiwgMTI2NDExLCAxMjY0MTYsIDEyNjQyMSwgMTI2NDI2LCAKKyAgICAxMjY0MzEsIDEyNjQzNiwgMTI2NDQxLCAxMjY0NDYsIDEyNjQ1MSwgMTI2NDU2LCAxMjY0NjEsIDEyNjQ2NiwgMTI2NDcxLCAKKyAgICAxMjY0NzYsIDEyNjQ4MSwgMTI2NDg2LCAxMjY0OTEsIDEyNjQ5NiwgMTI2NTAxLCAxMjY1MDYsIDEyNjUxMSwgMTI2NTE2LCAKKyAgICAxMjY1MjEsIDEyNjUyNiwgMTI2NTMxLCAxMjY1MzYsIDEyNjU0MSwgMTI2NTQ2LCAxMjY1NTEsIDEyNjU1NiwgMTI2NTYxLCAKKyAgICAxMjY1NjgsIDEyNjU3MywgMTI2NTc4LCAxMjY1ODMsIDEyNjU4OCwgMTI2NTkzLCAxMjY1OTgsIDEyNjYwMywgMTI2NjA4LCAKKyAgICAxMjY2MTMsIDEyNjYxOCwgMTI2NjIzLCAxMjY2MjgsIDEyNjYzMywgMTI2NjM4LCAxMjY2NDMsIDEyNjY0OCwgMTI2NjUzLCAKKyAgICAxMjY2NTgsIDEyNjY2MywgMTI2NjY4LCAxMjY2NzMsIDEyNjY3OCwgMTI2NjgzLCAxMjY2ODgsIDEyNjY5MywgMTI2Njk4LCAKKyAgICAxMjY3MDMsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyMywgMTI2NzI4LCAxMjY3MzMsIDEyNjczOCwgMTI2NzQzLCAKKyAgICAxMjY3NDgsIDEyNjc1MywgMTI2NzU4LCAxMjY3NjMsIDEyNjc2OCwgMTI2NzczLCAxMjY3NzgsIDEyNjc4MywgMTI2Nzg4LCAKKyAgICAxMjY3OTMsIDEyNjc5OCwgMTI2ODAzLCAxMjY4MDgsIDEyNjgxMywgMTI2ODE4LCAxMjY4MjMsIDEyNjgyOCwgMTI2ODMzLCAKKyAgICAxMjY4MzgsIDEyNjg0MywgMTI2ODQ4LCAxMjY4NTMsIDEyNjg1OCwgMTI2ODY1LCAxMjY4NzAsIDEyNjg3NSwgMTI2ODgwLCAKKyAgICAxMjY4ODUsIDEyNjg5MCwgMTI2ODk1LCAxMjY5MDAsIDEyNjkwNSwgMTI2OTEwLCAxMjY5MTUsIDEyNjkyMCwgMTI2OTI1LCAKKyAgICAxMjY5MzAsIDEyNjkzNSwgMTI2OTQwLCAxMjY5NDUsIDEyNjk1MCwgMTI2OTU1LCAxMjY5NjAsIDEyNjk2NSwgMTI2OTcwLCAKKyAgICAxMjY5NzcsIDEyNjk4MiwgMTI2OTg3LCAxMjY5OTQsIDEyNjk5OSwgMTI3MDA0LCAxMjcwMDksIDEyNzAxNCwgMTI3MDE5LCAKKyAgICAxMjcwMjQsIDEyNzAyOSwgMTI3MDM0LCAxMjcwMzksIDEyNzA0NCwgMTI3MDQ5LCAxMjcwNTQsIDEyNzA1OSwgMTI3MDY0LCAKKyAgICAxMjcwNjksIDEyNzA3NCwgMTI3MDc5LCAxMjcwODQsIDEyNzA4OSwgMTI3MDk0LCAxMjcwOTksIDEyNzEwNCwgMTI3MTA5LCAKKyAgICAxMjcxMTQsIDEyNzExOSwgMTI3MTI0LCAxMjcxMjksIDEyNzEzNCwgMTI3MTM5LCAxMjcxNDQsIDEyNzE0OSwgMTI3MTU0LCAKKyAgICAxMjcxNTksIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAKKyAgICAxMjcyMDQsIDEyNzIwOSwgMTI3MjE2LCAxMjcyMjEsIDEyNzIyNiwgMTI3MjMzLCAxMjcyNDAsIDEyNzI0NSwgMTI3MjUwLCAKKyAgICAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NSwgMTI3MjgwLCAxMjcyODUsIDEyNzI5MCwgMTI3Mjk1LCAKKyAgICAxMjczMDAsIDEyNzMwNSwgMTI3MzEwLCAxMjczMTUsIDEyNzMyMCwgMTI3MzI1LCAxMjczMzAsIDEyNzMzNSwgMTI3MzQwLCAKKyAgICAxMjczNDUsIDEyNzM1MCwgMTI3MzU1LCAxMjczNjAsIDEyNzM2NSwgMTI3MzcyLCAxMjczNzcsIDEyNzM4MiwgMTI3Mzg3LCAKKyAgICAxMjczOTIsIDEyNzM5NywgMTI3NDAyLCAxMjc0MDcsIDEyNzQxMiwgMTI3NDE3LCAxMjc0MjIsIDEyNzQyNywgMTI3NDMyLCAKKyAgICAxMjc0MzcsIDEyNzQ0MiwgMTI3NDQ3LCAxMjc0NTIsIDEyNzQ1NywgMTI3NDYyLCAxMjc0NjksIDEyNzQ3NCwgMTI3NDc5LCAKKyAgICAxMjc0ODQsIDEyNzQ4OSwgMTI3NDk0LCAxMjc0OTksIDEyNzUwNCwgMTI3NTEwLCAxMjc1MTUsIDEyNzUyMCwgMTI3NTI1LCAKKyAgICAxMjc1MzAsIDEyNzUzNSwgMTI3NTQwLCAxMjc1NDUsIDEyNzU1MCwgMTI3NTU3LCAxMjc1NjQsIDEyNzU2OSwgMTI3NTc0LCAKKyAgICAxMjc1NzgsIDEyNzU4MywgMTI3NTg3LCAxMjc1OTEsIDEyNzU5NiwgMTI3NjAzLCAxMjc2MDgsIDEyNzYxMywgMTI3NjIyLCAKKyAgICAxMjc2MjcsIDEyNzYzMiwgMTI3NjM3LCAxMjc2NDIsIDEyNzY0OSwgMTI3NjU2LCAxMjc2NjEsIDEyNzY2NiwgMTI3NjcxLCAKKyAgICAxMjc2NzYsIDEyNzY4MywgMTI3Njg4LCAxMjc2OTMsIDEyNzY5OCwgMTI3NzAzLCAxMjc3MDgsIDEyNzcxMywgMTI3NzE4LCAKKyAgICAxMjc3MjMsIDEyNzcyOCwgMTI3NzMzLCAxMjc3MzgsIDEyNzc0MywgMTI3NzUwLCAxMjc3NTUsIDEyNzc2MCwgMTI3NzY1LCAKKyAgICAxMjc3NzAsIDEyNzc3NSwgMTI3Nzc5LCAxMjc3ODQsIDEyNzc4OSwgMTI3Nzk0LCAxMjc3OTksIDEyNzgwNCwgMTI3ODA5LCAKKyAgICAxMjc4MTQsIDEyNzgxOSwgMTI3ODI0LCAxMjc4MzAsIDEyNzgzNiwgMTI3ODQyLCAxMjc4NDgsIDEyNzg1NCwgMTI3ODYwLCAKKyAgICAxMjc4NjYsIDEyNzg3MiwgMTI3ODc4LCAxMjc4ODQsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKKyAgICAxMjc5MjAsIDEyNzkyNiwgMTI3OTMyLCAxMjc5MzgsIDEyNzk0NCwgMTI3OTUwLCAxMjc5NTYsIDEyNzk2MiwgMTI3OTY4LCAKKyAgICAxMjc5NzMsIDEyNzk3OSwgMTI3OTg1LCAxMjc5OTEsIDEyNzk5NywgMTI4MDAzLCAxMjgwMDksIDEyODAxNSwgMTI4MDIxLCAKKyAgICAxMjgwMjcsIDEyODAzMywgMTI4MDM5LCAxMjgwNDUsIDEyODA1MSwgMTI4MDU3LCAxMjgwNjMsIDEyODA2OSwgMTI4MDc1LCAKKyAgICAxMjgwODEsIDEyODA4NywgMTI4MDkzLCAxMjgwOTgsIDEyODEwNCwgMTI4MTEwLCAxMjgxMTYsIDEyODEyMiwgMTI4MTI4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgxMzQsIDEyODEzOSwgMTI4MTQ0LCAxMjgxNDksIDEyODE1NCwgMTI4MTU5LCAKKyAgICAxMjgxNjQsIDEyODE2OCwgMTI4MTczLCAxMjgxNzgsIDEyODE4MywgMTI4MTg4LCAxMjgxOTMsIDEyODE5OCwgMTI4MjAzLCAKKyAgICAxMjgyMDgsIDEyODIxMywgMTI4MjE3LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMxLCAxMjgyMzYsIDEyODI0MSwgMTI4MjQ2LCAKKyAgICAxMjgyNTEsIDEyODI1NSwgMTI4MjYwLCAxMjgyNjUsIDEyODI3MCwgMTI4Mjc1LCAxMjgyODAsIDAsIDEyODI4NSwgCisgICAgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTksIDEyODMyMywgCisgICAgMCwgMCwgMCwgMCwgMTI4MzI4LCAxMjgzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODMzNywgMTI4MzQ0LCAxMjgzNTAsIDEyODM1NywgMTI4MzY0LCAKKyAgICAxMjgzNzEsIDEyODM3OCwgMTI4Mzg1LCAxMjgzOTIsIDEyODM5OSwgMTI4NDA2LCAxMjg0MTMsIDEyODQyMCwgMTI4NDI3LCAKKyAgICAxMjg0MzQsIDEyODQ0MSwgMTI4NDQ4LCAxMjg0NTUsIDEyODQ2MSwgMTI4NDY4LCAxMjg0NzUsIDEyODQ4MiwgMTI4NDg4LCAKKyAgICAxMjg0OTUsIDEyODUwMSwgMTI4NTA3LCAxMjg1MTQsIDEyODUyMCwgMTI4NTI3LCAxMjg1MzMsIDAsIDAsIDEyODUzOSwgCisgICAgMTI4NTQ3LCAxMjg1NTUsIDEyODU2NCwgMTI4NTczLCAxMjg1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyODU5MCwgMTI4NTk1LCAxMjg2MDAsIDEyODYwNSwgMTI4NjEwLCAxMjg2MTUsIDEyODYyMCwgMTI4NjI1LCAxMjg2MzAsIAorICAgIDEyODYzNSwgMTI4NjQwLCAxMjg2NDUsIDEyODY1MCwgMTI4NjU1LCAxMjg2NjAsIDEyODY2NSwgMTI4NjcwLCAxMjg2NzUsIAorICAgIDEyODY4MCwgMTI4Njg1LCAxMjg2OTAsIDEyODY5NSwgMTI4NzAwLCAxMjg3MDUsIDEyODcxMCwgMTI4NzE1LCAxMjg3MjAsIAorICAgIDEyODcyNSwgMTI4NzMwLCAxMjg3MzUsIDEyODc0MCwgMTI4NzQ1LCAxMjg3NTAsIDEyODc1NSwgMTI4NzYwLCAxMjg3NjUsIAorICAgIDEyODc3MCwgMTI4Nzc1LCAxMjg3ODAsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIAorICAgIDEyODgxNSwgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM3LCAxMjg4NDQsIDEyODg1MSwgMTI4ODU4LCAxMjg4NjUsIAorICAgIDEyODg3MiwgMTI4ODc5LCAxMjg4ODYsIDEyODg5NSwgMTI4OTAyLCAxMjg5MDksIDEyODkxNiwgMTI4OTIzLCAxMjg5MzAsIAorICAgIDEyODkzNywgMTI4OTQ0LCAxMjg5NTEsIDEyODk1OCwgMTI4OTY1LCAxMjg5NzIsIDEyODk3NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NSwgMTI4OTk5LCAxMjkwMDMsIDEyOTAwNywgMTI5MDExLCAKKyAgICAxMjkwMTUsIDEyOTAyMCwgMTI5MDI0LCAwLCAxMjkwMjksIDEyOTAzNCwgMTI5MDM5LCAxMjkwNDYsIDEyOTA1MSwgCisgICAgMTI5MDU4LCAxMjkwNjUsIDAsIDEyOTA3MCwgMTI5MDc3LCAxMjkwODIsIDEyOTA4NywgMTI5MDk0LCAxMjkxMDEsIAorICAgIDEyOTEwNiwgMTI5MTExLCAxMjkxMTYsIDEyOTEyMSwgMTI5MTI2LCAxMjkxMzMsIDEyOTE0MCwgMTI5MTQ1LCAxMjkxNTAsIAorICAgIDEyOTE1NSwgMTI5MTY4LCAxMjkxNzcsIDEyOTE4NCwgMTI5MTkzLCAxMjkyMDIsIDAsIDAsIDAsIDAsIDAsIDEyOTIxMSwgCisgICAgMTI5MjE4LCAxMjkyMjUsIDEyOTIzMiwgMTI5MjM5LCAxMjkyNDYsIDEyOTI1MywgMTI5MjYwLCAxMjkyNjcsIDEyOTI3NCwgCisgICAgMTI5MjgxLCAxMjkyODgsIDEyOTI5NSwgMTI5MzAyLCAxMjkzMDksIDEyOTMxNiwgMTI5MzIzLCAxMjkzMzAsIDEyOTMzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5MzQ0LCAxMjkzNDcsIDEyOTM1MSwgCisgICAgMTI5MzU1LCAxMjkzNTksIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzEsIDEyOTM3NSwgMTI5Mzc5LCAxMjkzODMsIDEyOTM4NywgCisgICAgMTI5MzkxLCAxMjkzOTYsIDEyOTQwMSwgMTI5NDA1LCAxMjk0MDksIDEyOTQxMywgMTI5NDE3LCAxMjk0MjIsIDEyOTQyOCwgCisgICAgMTI5NDMyLCAxMjk0MzYsIDEyOTQ0MCwgMTI5NDQ0LCAxMjk0NDgsIDEyOTQ1MiwgMTI5NDU2LCAxMjk0NjAsIDEyOTQ2NCwgCisgICAgMTI5NDY4LCAxMjk0NzEsIDEyOTQ3NSwgMTI5NDc5LCAxMjk0ODMsIDEyOTQ4NywgMTI5NDkxLCAxMjk0OTUsIDEyOTUwMSwgCisgICAgMTI5NTA0LCAxMjk1MDgsIDEyOTUxMiwgMTI5NTE2LCAxMjk1MjAsIDEyOTUyNCwgMTI5NTI4LCAxMjk1MzIsIDEyOTUzNiwgCisgICAgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MCwgMTI5NTU2LCAxMjk1NjAsIDEyOTU2NCwgMTI5NTY4LCAxMjk1NzIsIDEyOTU3NiwgCisgICAgMTI5NTgwLCAxMjk1ODUsIDEyOTU4OSwgMTI5NTkzLCAxMjk1OTcsIDEyOTYwMSwgMTI5NjA1LCAxMjk2MTEsIDEyOTYxNSwgCisgICAgMTI5NjE5LCAxMjk2MjMsIDEyOTYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NjMxLCAxMjk2MzUsIAorICAgIDEyOTYzOSwgMTI5NjQ1LCAxMjk2NTEsIDEyOTY1NSwgMTI5NjYwLCAxMjk2NjUsIDEyOTY3MCwgMTI5Njc1LCAxMjk2NzksIAorICAgIDEyOTY4NCwgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OCwgMTI5NzAzLCAxMjk3MDgsIDEyOTcxMywgMTI5NzE3LCAxMjk3MjIsIAorICAgIDEyOTcyNywgMTI5NzMyLCAxMjk3MzcsIDEyOTc0MiwgMTI5NzQ3LCAxMjk3NTIsIDEyOTc1NywgMTI5NzYxLCAxMjk3NjYsIAorICAgIDEyOTc3MSwgMTI5Nzc2LCAxMjk3ODEsIDEyOTc4NiwgMTI5NzkxLCAxMjk3OTYsIDEyOTgwMSwgMTI5ODA2LCAxMjk4MTEsIAorICAgIDEyOTgxNiwgMTI5ODIzLCAxMjk4MjgsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2NSwgMTI5ODY5LCAxMjk4NzUsIAorICAgIDEyOTg3OCwgMTI5ODgxLCAxMjk4ODUsIDEyOTg4OSwgMTI5ODkzLCAxMjk4OTcsIDEyOTkwMSwgMTI5OTA1LCAxMjk5MDksIAorICAgIDEyOTkxNSwgMTI5OTIxLCAxMjk5MjcsIDEyOTkzMywgMTI5OTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NDUsIDEyOTk1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTU2LCAxMjk5NjAsIDEyOTk2NCwgMTI5OTY4LCAxMjk5NzIsIDEyOTk3NiwgCisgICAgMTI5OTgwLCAxMjk5ODMsIDEyOTk4NywgMTI5OTkxLCAxMjk5OTUsIDEyOTk5OSwgMTMwMDAyLCAxMzAwMDgsIDEzMDAxMywgCisgICAgMTMwMDE5LCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM0LCAxMzAwNDAsIDEzMDA0NCwgMTMwMDQ4LCAxMzAwNTQsIDEzMDA1OCwgCisgICAgMTMwMDYyLCAxMzAwNjYsIDEzMDA3MCwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg3LCAxMzAwOTMsIDEzMDA5OSwgCisgICAgMTMwMTA1LCAxMzAxMTIsIDEzMDExOSwgMTMwMTI2LCAxMzAxMzYsIDEzMDE0MywgMTMwMTUwLCAxMzAxNTUsIDEzMDE2MCwgCisgICAgMTMwMTY1LCAxMzAxNzAsIDEzMDE3NywgMTMwMTg0LCAxMzAxOTEsIDEzMDE5OCwgMTMwMjA3LCAxMzAyMTMsIDEzMDIyMCwgCisgICAgMTMwMjI2LCAxMzAyMzMsIDEzMDIzOSwgMTMwMjQ2LCAxMzAyNTEsIDEzMDI1OCwgMTMwMjYyLCAxMzAyNjYsIDEzMDI3MSwgCisgICAgMTMwMjc3LCAxMzAyODMsIDEzMDI5MCwgMTMwMjk3LCAxMzAzMDMsIDEzMDMxMCwgMTMwMzEzLCAxMzAzMTksIDEzMDMyMywgCisgICAgMTMwMzI2LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAxMzAzNDAsIDEzMDM0NSwgMTMwMzQ5LCAxMzAzNTMsIDEzMDM1OSwgCisgICAgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NCwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NSwgMTMwMzg5LCAxMzAzOTQsIDEzMDM5OCwgCisgICAgMTMwNDAzLCAxMzA0MDcsIDEzMDQxMiwgMTMwNDE2LCAxMzA0MjAsIDEzMDQyNCwgMTMwNDI4LCAxMzA0MzIsIDEzMDQzNiwgCisgICAgMTMwNDQwLCAxMzA0NDQsIDEzMDQ0OSwgMTMwNDU0LCAxMzA0NTksIDEzMDQ2NCwgMTMwNDcwLCAxMzA0NzYsIDEzMDQ4MiwgCisgICAgMTMwNDg4LCAxMzA0OTQsIDAsIDAsIDAsIDAsIDAsIDEzMDQ5OSwgMTMwNTA3LCAxMzA1MTYsIDEzMDUyNCwgMTMwNTMxLCAKKyAgICAxMzA1MzksIDEzMDU0NiwgMTMwNTUzLCAxMzA1NjIsIDEzMDU2OSwgMTMwNTc2LCAxMzA1ODMsIDEzMDU5MSwgMCwgMCwgMCwgCisgICAgMTMwNTk5LCAxMzA2MDQsIDEzMDYxMSwgMTMwNjE3LCAxMzA2MjQsIDEzMDYzMCwgMTMwNjM2LCAxMzA2NDIsIDEzMDY0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjU0LCAxMzA2NTksIDEzMDY2NiwgMTMwNjcyLCAxMzA2NzksIDEzMDY4NSwgCisgICAgMTMwNjkxLCAxMzA2OTcsIDEzMDcwMywgMTMwNzA5LCAwLCAwLCAxMzA3MTQsIDEzMDcyMCwgMTMwNzI2LCAxMzA3MjksIAorICAgIDEzMDczOCwgMTMwNzQ1LCAxMzA3NTMsIDEzMDc2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNzY3LCAxMzA3NzIsIDEzMDc3NywgMTMwNzgyLCAxMzA3ODksIDEzMDc5NiwgMTMwODAzLCAKKyAgICAxMzA4MTAsIDEzMDgxNSwgMTMwODIwLCAxMzA4MjUsIDEzMDgzMCwgMTMwODM3LCAxMzA4NDIsIDEzMDg0OSwgMTMwODU2LCAKKyAgICAxMzA4NjEsIDEzMDg2NiwgMTMwODcxLCAxMzA4NzgsIDEzMDg4MywgMTMwODg4LCAxMzA4OTUsIDEzMDkwMiwgMTMwOTA3LCAKKyAgICAxMzA5MTIsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQzLCAxMzA5NDgsIDEzMDk1NSwgMTMwOTYyLCAKKyAgICAxMzA5NjksIDEzMDk3NiwgMTMwOTgxLCAxMzA5ODYsIDEzMDk5MSwgMTMwOTk4LCAxMzEwMDMsIDEzMTAwOCwgMTMxMDEzLCAKKyAgICAxMzEwMjAsIDEzMTAyOSwgMTMxMDM2LCAxMzEwNDEsIDEzMTA0NiwgMTMxMDUxLCAxMzEwNTYsIDEzMTA2MSwgMTMxMDY2LCAKKyAgICAxMzEwNzUsIDEzMTA4MiwgMTMxMDg3LCAxMzEwOTQsIDEzMTEwMSwgMTMxMTA2LCAxMzExMTEsIDEzMTExNiwgMTMxMTIzLCAKKyAgICAxMzExMjgsIDEzMTEzNSwgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjQsIDEzMTE3MSwgMTMxMTc2LCAKKyAgICAxMzExODEsIDEzMTE4OCwgMTMxMTk1LCAxMzEyMDIsIDEzMTIwNywgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI5LCAKKyAgICAxMzEyMzgsIDEzMTI0NywgMTMxMjUyLCAxMzEyNTksIDEzMTI2OCwgMTMxMjczLCAxMzEyNzgsIDEzMTI4MywgMTMxMjg4LCAKKyAgICAxMzEyOTUsIDEzMTMwMiwgMTMxMzA5LCAxMzEzMTYsIDEzMTMyMSwgMTMxMzI2LCAxMzEzMzEsIDEzMTMzOCwgMTMxMzQ1LCAKKyAgICAxMzEzNTIsIDEzMTM1NywgMTMxMzYyLCAxMzEzNjksIDEzMTM3NCwgMTMxMzgxLCAxMzEzODYsIDEzMTM5MywgMTMxMzk4LCAKKyAgICAxMzE0MDUsIDEzMTQxMiwgMTMxNDE3LCAxMzE0MjIsIDEzMTQyNywgMTMxNDMyLCAxMzE0MzcsIDEzMTQ0MiwgMTMxNDQ3LCAKKyAgICAxMzE0NTIsIDEzMTQ1NywgMTMxNDY0LCAxMzE0NzEsIDEzMTQ3OCwgMTMxNDg1LCAxMzE0OTIsIDEzMTUwMSwgMTMxNTA2LCAKKyAgICAxMzE1MTEsIDEzMTUxOCwgMTMxNTI1LCAxMzE1MzAsIDEzMTUzNywgMTMxNTQ0LCAxMzE1NTEsIDEzMTU1OCwgMTMxNTY1LCAKKyAgICAxMzE1NzIsIDEzMTU3NywgMTMxNTgyLCAxMzE1ODcsIDEzMTU5MiwgMTMxNTk3LCAxMzE2MDYsIDEzMTYxNSwgMTMxNjI0LCAKKyAgICAxMzE2MzMsIDEzMTY0MiwgMTMxNjUxLCAxMzE2NjAsIDEzMTY2OSwgMTMxNjc0LCAxMzE2ODUsIDEzMTY5NiwgMTMxNzA1LCAKKyAgICAxMzE3MTAsIDEzMTcxNSwgMTMxNzIwLCAxMzE3MjUsIDEzMTczNCwgMTMxNzQxLCAxMzE3NDgsIDEzMTc1NSwgMTMxNzYyLCAKKyAgICAxMzE3NjksIDEzMTc3NiwgMTMxNzg1LCAxMzE3OTQsIDEzMTgwNSwgMTMxODE0LCAxMzE4MjUsIDEzMTgzNCwgMTMxODQxLCAKKyAgICAxMzE4NTAsIDEzMTg2MSwgMTMxODcwLCAxMzE4NzksIDEzMTg4OCwgMTMxODk3LCAxMzE5MDQsIDEzMTkxMSwgMTMxOTE4LCAKKyAgICAxMzE5MjcsIDEzMTkzNiwgMTMxOTQ3LCAxMzE5NTYsIDEzMTk2NSwgMTMxOTc2LCAxMzE5ODEsIDEzMTk4NiwgMTMxOTk3LCAKKyAgICAxMzIwMDUsIDEzMjAxNCwgMTMyMDIzLCAxMzIwMzIsIDEzMjA0MywgMTMyMDUyLCAxMzIwNjEsIDEzMjA3MiwgMTMyMDgzLCAKKyAgICAxMzIwOTQsIDEzMjEwNSwgMTMyMTE2LCAxMzIxMjcsIDEzMjEzNCwgMTMyMTQxLCAxMzIxNDgsIDEzMjE1NSwgMTMyMTY2LCAKKyAgICAxMzIxNzUsIDEzMjE4MiwgMTMyMTg5LCAxMzIxOTYsIDEzMjIwNywgMTMyMjE4LCAxMzIyMjksIDEzMjI0MCwgMTMyMjUxLCAKKyAgICAxMzIyNjIsIDEzMjI3MywgMTMyMjg0LCAxMzIyOTEsIDEzMjI5OCwgMTMyMzA3LCAxMzIzMTYsIDEzMjMyMywgMTMyMzMwLCAKKyAgICAxMzIzMzcsIDEzMjM0NiwgMTMyMzU1LCAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA1LCAKKyAgICAxMzI0MTIsIDEzMjQxNywgMTMyNDIzLCAxMzI0MzAsIDEzMjQzNywgMTMyNDQ0LCAxMzI0NTEsIDEzMjQ1OCwgMTMyNDY1LCAKKyAgICAxMzI0NzQsIDEzMjQ4MywgMTMyNDkyLCAxMzI1MDEsIDEzMjUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMyNTE3LCAxMzI1MjMsIDEzMjUyOCwgMTMyNTMzLCAxMzI1NDAsIDEzMjU0NiwgMTMyNTUyLCAxMzI1NTgsIDEzMjU2NCwgCisgICAgMTMyNTcwLCAxMzI1NzYsIDEzMjU4MiwgMTMyNTg2LCAxMzI1OTAsIDEzMjU5NiwgMTMyNjAyLCAxMzI2MDgsIDEzMjYxMiwgCisgICAgMTMyNjE3LCAxMzI2MjIsIDEzMjYyNiwgMTMyNjMwLCAxMzI2MzMsIDEzMjYzOSwgMTMyNjQ1LCAxMzI2NTEsIDEzMjY1NywgCisgICAgMTMyNjYzLCAxMzI2NjksIDEzMjY3NSwgMTMyNjgxLCAxMzI2ODcsIDEzMjY5NywgMTMyNzA3LCAxMzI3MTMsIDEzMjcxOSwgCisgICAgMTMyNzI5LCAxMzI3MzksIDEzMjc0NSwgMCwgMCwgMTMyNzUxLCAxMzI3NTksIDEzMjc2NCwgMTMyNzY5LCAxMzI3NzUsIAorICAgIDEzMjc4MSwgMTMyNzg3LCAxMzI3OTMsIDEzMjc5OSwgMTMyODA1LCAxMzI4MTIsIDEzMjgxOSwgMTMyODI1LCAxMzI4MzEsIAorICAgIDEzMjgzNywgMTMyODQzLCAxMzI4NDksIDEzMjg1NSwgMTMyODYxLCAxMzI4NjcsIDEzMjg3MiwgMTMyODc4LCAxMzI4ODQsIAorICAgIDEzMjg5MCwgMTMyODk2LCAxMzI5MDIsIDEzMjkxMSwgMTMyOTE3LCAxMzI5MjIsIDEzMjkzMCwgMTMyOTM3LCAxMzI5NDQsIAorICAgIDEzMjk1MywgMTMyOTYyLCAxMzI5NzEsIDEzMjk4MCwgMTMyOTg5LCAxMzI5OTgsIDEzMzAwNywgMTMzMDE2LCAxMzMwMjYsIAorICAgIDEzMzAzNiwgMTMzMDQ0LCAxMzMwNTIsIDEzMzA2MSwgMTMzMDcwLCAxMzMwNzYsIDEzMzA4MiwgMTMzMDg4LCAxMzMwOTQsIAorICAgIDEzMzEwMiwgMTMzMTEwLCAxMzMxMTQsIDEzMzEyMCwgMTMzMTI1LCAxMzMxMzEsIDEzMzEzNywgMTMzMTQzLCAxMzMxNDksIAorICAgIDEzMzE1NSwgMTMzMTY0LCAxMzMxNjksIDEzMzE3NiwgMTMzMTgxLCAxMzMxODYsIDEzMzE5MSwgMTMzMTk3LCAxMzMyMDMsIAorICAgIDEzMzIwOSwgMTMzMjE2LCAxMzMyMjEsIDEzMzIyNiwgMTMzMjMxLCAxMzMyMzYsIDEzMzI0MSwgMTMzMjQ3LCAxMzMyNTMsIAorICAgIDEzMzI1OSwgMTMzMjY1LCAxMzMyNzEsIDEzMzI3NywgMTMzMjgzLCAxMzMyODksIDEzMzI5NCwgMTMzMjk5LCAxMzMzMDQsIAorICAgIDEzMzMwOSwgMTMzMzE0LCAxMzMzMTksIDEzMzMyNCwgMTMzMzI5LCAxMzMzMzUsIDEzMzM0MSwgMTMzMzQ2LCAxMzMzNTEsIAorICAgIDEzMzM1NiwgMTMzMzYxLCAxMzMzNjYsIDEzMzM3MiwgMTMzMzc5LCAxMzMzODMsIDEzMzM4NywgMTMzMzkxLCAxMzMzOTUsIAorICAgIDEzMzM5OSwgMTMzNDAzLCAxMzM0MDcsIDEzMzQxMSwgMTMzNDE5LCAxMzM0MjksIDEzMzQzMywgMTMzNDM3LCAxMzM0NDMsIAorICAgIDEzMzQ0OSwgMTMzNDU1LCAxMzM0NjEsIDEzMzQ2NywgMTMzNDczLCAxMzM0NzksIDEzMzQ4NSwgMTMzNDkxLCAxMzM0OTcsIAorICAgIDEzMzUwMywgMTMzNTA5LCAxMzM1MTUsIDEzMzUyMSwgMTMzNTI1LCAxMzM1MjksIDEzMzUzNiwgMTMzNTQyLCAxMzM1NDgsIAorICAgIDEzMzU1NCwgMTMzNTU5LCAxMzM1NjYsIDEzMzU3MSwgMTMzNTc3LCAxMzM1ODMsIDEzMzU4OSwgMTMzNTk1LCAxMzM2MDAsIAorICAgIDEzMzYwNCwgMTMzNjEwLCAxMzM2MTQsIDEzMzYxOCwgMTMzNjIyLCAxMzM2MjgsIDEzMzYzNCwgMTMzNjM4LCAxMzM2NDQsIAorICAgIDEzMzY1MCwgMTMzNjU2LCAxMzM2NjIsIDEzMzY2OCwgMTMzNjc2LCAxMzM2ODQsIDEzMzY5MCwgMTMzNjk2LCAxMzM3MDIsIAorICAgIDEzMzcwOCwgMTMzNzIwLCAxMzM3MzIsIDEzMzc0NiwgMTMzNzU4LCAxMzM3NzAsIDEzMzc4NCwgMTMzNzk4LCAxMzM4MTIsIAorICAgIDEzMzgxNiwgMTMzODI0LCAxMzM4MzIsIDEzMzgzNywgMTMzODQxLCAxMzM4NDUsIDEzMzg0OSwgMTMzODUzLCAxMzM4NTcsIAorICAgIDEzMzg2MSwgMTMzODY1LCAxMzM4NzEsIDEzMzg3NywgMTMzODgzLCAxMzM4ODksIDEzMzg5NywgMTMzOTA2LCAxMzM5MTMsIAorICAgIDEzMzkyMCwgMTMzOTI4LCAxMzM5MzUsIDEzMzk0NywgMTMzOTU5LCAxMzM5NzEsIDEzMzk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzOTkwLCAxMzM5OTcsIAorICAgIDEzNDAwNCwgMTM0MDExLCAxMzQwMTgsIDEzNDAyNSwgMTM0MDMyLCAxMzQwMzksIDEzNDA0NiwgMTM0MDUzLCAxMzQwNjAsIAorICAgIDEzNDA2NywgMTM0MDc0LCAxMzQwODEsIDEzNDA4OCwgMTM0MDk1LCAxMzQxMDIsIDEzNDEwOSwgMTM0MTE2LCAxMzQxMjMsIAorICAgIDEzNDEzMCwgMTM0MTM3LCAxMzQxNDQsIDEzNDE1MSwgMTM0MTU4LCAxMzQxNjUsIDEzNDE3MiwgMTM0MTc5LCAxMzQxODYsIAorICAgIDEzNDE5MywgMTM0MjAwLCAxMzQyMDcsIDEzNDIxNCwgMTM0MjIxLCAxMzQyMjgsIDEzNDIzNSwgMTM0MjQyLCAxMzQyNDksIAorICAgIDEzNDI1NiwgMTM0MjYzLCAxMzQyNzAsIDEzNDI3NywgMTM0Mjg0LCAxMzQyOTEsIDEzNDI5OCwgMTM0MzA1LCAxMzQzMTIsIAorICAgIDEzNDMxOSwgMTM0MzI2LCAxMzQzMzMsIDEzNDM0MCwgMTM0MzQ3LCAxMzQzNTQsIDEzNDM2MSwgMTM0MzY4LCAxMzQzNzUsIAorICAgIDEzNDM4MiwgMTM0Mzg5LCAxMzQzOTYsIDEzNDQwMywgMTM0NDEwLCAxMzQ0MTcsIDEzNDQyNCwgMTM0NDMxLCAxMzQ0MzgsIAorICAgIDEzNDQ0NSwgMTM0NDUyLCAxMzQ0NTcsIDEzNDQ2MiwgMTM0NDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ0NzEsIDEzNDQ3NiwgMTM0NDgzLCAxMzQ0OTAsIDEzNDQ5NywgMTM0NTA0LCAKKyAgICAxMzQ1MDksIDEzNDUxNCwgMTM0NTIxLCAxMzQ1MjYsIDEzNDUzMSwgMTM0NTM4LCAxMzQ1NDMsIDEzNDU0OCwgMTM0NTUzLCAKKyAgICAxMzQ1NjAsIDEzNDU2OSwgMTM0NTc0LCAxMzQ1NzksIDEzNDU4NCwgMTM0NTg5LCAxMzQ1OTQsIDEzNDU5OSwgMTM0NjA2LCAKKyAgICAxMzQ2MTEsIDEzNDYxNiwgMTM0NjIxLCAxMzQ2MjYsIDEzNDYzMSwgMTM0NjM2LCAxMzQ2NDEsIDEzNDY0NiwgMTM0NjUxLCAKKyAgICAxMzQ2NTYsIDEzNDY2MSwgMTM0NjY2LCAxMzQ2NzIsIDEzNDY3NywgMTM0NjgyLCAxMzQ2ODcsIDEzNDY5MiwgMTM0Njk3LCAKKyAgICAxMzQ3MDIsIDEzNDcwNywgMTM0NzEyLCAxMzQ3MTcsIDEzNDcyNiwgMTM0NzMxLCAxMzQ3NDAsIDEzNDc0NSwgMTM0NzUwLCAKKyAgICAxMzQ3NTUsIDEzNDc2MCwgMTM0NzY1LCAxMzQ3NzAsIDEzNDc3NSwgMTM0Nzg0LCAxMzQ3ODksIDEzNDc5NCwgMTM0Nzk5LCAKKyAgICAxMzQ4MDQsIDEzNDgwOSwgMTM0ODE2LCAxMzQ4MjEsIDEzNDgyOCwgMTM0ODMzLCAxMzQ4MzgsIDEzNDg0MywgMTM0ODQ4LCAKKyAgICAxMzQ4NTMsIDEzNDg1OCwgMTM0ODYzLCAxMzQ4NjgsIDEzNDg3MywgMTM0ODc4LCAxMzQ4ODMsIDEzNDg4OCwgMTM0ODkzLCAKKyAgICAxMzQ4OTgsIDEzNDkwMywgMTM0OTA4LCAxMzQ5MTMsIDEzNDkxOCwgMTM0OTIzLCAxMzQ5MzIsIDEzNDkzNywgMTM0OTQyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ5NDcsIDEzNDk1NSwgMTM0OTYzLCAxMzQ5NzEsIDEzNDk3OSwgCisgICAgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwNCwgMTM1MDEyLCAxMzUwMjEsIDEzNTAyOSwgMTM1MDM3LCAxMzUwNDUsIDEzNTA1MywgCisgICAgMTM1MDYxLCAxMzUwNjksIDEzNTA3OCwgMTM1MDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUwOTUsIDEzNTA5OSwgMTM1MTA0LCAxMzUxMDksIDEzNTExNCwgMTM1MTE4LCAKKyAgICAxMzUxMjMsIDEzNTEyOCwgMTM1MTMzLCAxMzUxMzcsIDEzNTE0MiwgMTM1MTQ3LCAxMzUxNTEsIDEzNTE1NiwgMTM1MTYxLCAKKyAgICAxMzUxNjUsIDEzNTE3MCwgMTM1MTc1LCAxMzUxNzksIDEzNTE4MywgMTM1MTg4LCAxMzUxOTIsIDEzNTE5NywgMTM1MjAyLCAKKyAgICAxMzUyMDcsIDEzNTIxMiwgMTM1MjE3LCAxMzUyMjEsIDEzNTIyNiwgMTM1MjMxLCAxMzUyMzYsIDEzNTI0MCwgMTM1MjQ1LCAKKyAgICAxMzUyNTAsIDEzNTI1NSwgMTM1MjU5LCAxMzUyNjQsIDEzNTI2OSwgMTM1MjczLCAxMzUyNzgsIDEzNTI4MywgMTM1Mjg3LCAKKyAgICAxMzUyOTIsIDEzNTI5NywgMTM1MzAxLCAxMzUzMDUsIDEzNTMxMCwgMTM1MzE0LCAxMzUzMTksIDEzNTMyNCwgMTM1MzI5LCAKKyAgICAxMzUzMzQsIDEzNTMzOSwgMTM1MzQzLCAxMzUzNDgsIDEzNTM1MywgMTM1MzU4LCAxMzUzNjIsIDEzNTM2NywgMTM1MzcyLCAKKyAgICAxMzUzNzcsIDEzNTM4MSwgMTM1Mzg2LCAxMzUzOTEsIDEzNTM5NSwgMTM1NDAwLCAxMzU0MDUsIDEzNTQwOSwgMTM1NDE0LCAKKyAgICAxMzU0MTksIDEzNTQyMywgMTM1NDI3LCAxMzU0MzIsIDEzNTQzNiwgMTM1NDQxLCAxMzU0NDYsIDEzNTQ1MSwgMTM1NDU2LCAKKyAgICAxMzU0NjEsIDEzNTQ2NSwgMTM1NDcwLCAxMzU0NzUsIDEzNTQ4MCwgMTM1NDg0LCAxMzU0ODksIDAsIDEzNTQ5NCwgCisgICAgMTM1NDk4LCAxMzU1MDMsIDEzNTUwOCwgMTM1NTEyLCAxMzU1MTcsIDEzNTUyMiwgMTM1NTI2LCAxMzU1MzEsIDEzNTUzNiwgCisgICAgMTM1NTQwLCAxMzU1NDQsIDEzNTU0OSwgMTM1NTUzLCAxMzU1NTgsIDEzNTU2MywgMTM1NTY4LCAxMzU1NzMsIDEzNTU3OCwgCisgICAgMTM1NTgzLCAxMzU1ODksIDEzNTU5NSwgMTM1NjAxLCAxMzU2MDYsIDEzNTYxMiwgMTM1NjE4LCAxMzU2MjQsIDEzNTYyOSwgCisgICAgMTM1NjM1LCAxMzU2NDEsIDEzNTY0NiwgMTM1NjUyLCAxMzU2NTgsIDEzNTY2MywgMTM1NjY5LCAxMzU2NzUsIDEzNTY4MCwgCisgICAgMTM1Njg1LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAyLCAxMzU3MDgsIDEzNTcxNCwgMTM1NzIwLCAxMzU3MjYsIDEzNTczMSwgCisgICAgMTM1NzM3LCAxMzU3NDMsIDEzNTc0OSwgMTM1NzU0LCAxMzU3NjAsIDEzNTc2NiwgMTM1NzcyLCAxMzU3NzcsIDEzNTc4MywgCisgICAgMTM1Nzg5LCAxMzU3OTQsIDEzNTgwMCwgMTM1ODA2LCAxMzU4MTEsIDEzNTgxNywgMTM1ODIzLCAxMzU4MjgsIDEzNTgzMywgCisgICAgMTM1ODM5LCAxMzU4NDQsIDEzNTg1MCwgMTM1ODU2LCAxMzU4NjIsIDEzNTg2OCwgMTM1ODc0LCAwLCAxMzU4NzgsIAorICAgIDEzNTg4MywgMCwgMCwgMTM1ODg4LCAwLCAwLCAxMzU4OTMsIDEzNTg5OCwgMCwgMCwgMTM1OTAzLCAxMzU5MDgsIDEzNTkxMiwgCisgICAgMTM1OTE3LCAwLCAxMzU5MjIsIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzUsIDEzNTk0MCwgMTM1OTQ1LCAxMzU5NTAsIAorICAgIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjQsIDEzNTk2OSwgMTM1OTc0LCAwLCAxMzU5NzksIDAsIDEzNTk4NCwgMTM1OTg5LCAKKyAgICAxMzU5OTMsIDEzNTk5OCwgMTM2MDAzLCAxMzYwMDcsIDEzNjAxMiwgMCwgMTM2MDE3LCAxMzYwMjIsIDEzNjAyNywgCisgICAgMTM2MDMxLCAxMzYwMzUsIDEzNjA0MCwgMTM2MDQ0LCAxMzYwNDksIDEzNjA1NCwgMTM2MDU5LCAxMzYwNjQsIDEzNjA2OSwgCisgICAgMTM2MDc0LCAxMzYwODAsIDEzNjA4NiwgMTM2MDkyLCAxMzYwOTcsIDEzNjEwMywgMTM2MTA5LCAxMzYxMTUsIDEzNjEyMCwgCisgICAgMTM2MTI2LCAxMzYxMzIsIDEzNjEzNywgMTM2MTQzLCAxMzYxNDksIDEzNjE1NCwgMTM2MTYwLCAxMzYxNjYsIDEzNjE3MSwgCisgICAgMTM2MTc2LCAxMzYxODIsIDEzNjE4NywgMTM2MTkzLCAxMzYxOTksIDEzNjIwNSwgMTM2MjExLCAxMzYyMTcsIDEzNjIyMiwgCisgICAgMTM2MjI4LCAxMzYyMzQsIDEzNjI0MCwgMTM2MjQ1LCAxMzYyNTEsIDEzNjI1NywgMTM2MjYzLCAxMzYyNjgsIDEzNjI3NCwgCisgICAgMTM2MjgwLCAxMzYyODUsIDEzNjI5MSwgMTM2Mjk3LCAxMzYzMDIsIDEzNjMwOCwgMTM2MzE0LCAxMzYzMTksIDEzNjMyNCwgCisgICAgMTM2MzMwLCAxMzYzMzUsIDEzNjM0MSwgMTM2MzQ3LCAxMzYzNTMsIDEzNjM1OSwgMTM2MzY1LCAxMzYzNjksIDAsIAorICAgIDEzNjM3NCwgMTM2Mzc5LCAxMzYzODMsIDEzNjM4OCwgMCwgMCwgMTM2MzkzLCAxMzYzOTgsIDEzNjQwMywgMTM2NDA3LCAKKyAgICAxMzY0MTIsIDEzNjQxNywgMTM2NDIxLCAxMzY0MjYsIDAsIDEzNjQzMSwgMTM2NDM1LCAxMzY0NDAsIDEzNjQ0NCwgCisgICAgMTM2NDQ5LCAxMzY0NTQsIDEzNjQ1OSwgMCwgMTM2NDY0LCAxMzY0NjgsIDEzNjQ3MywgMTM2NDc4LCAxMzY0ODMsIAorICAgIDEzNjQ4NywgMTM2NDkyLCAxMzY0OTcsIDEzNjUwMiwgMTM2NTA2LCAxMzY1MTEsIDEzNjUxNiwgMTM2NTIwLCAxMzY1MjUsIAorICAgIDEzNjUzMCwgMTM2NTM0LCAxMzY1MzksIDEzNjU0NCwgMTM2NTQ4LCAxMzY1NTIsIDEzNjU1NywgMTM2NTYxLCAxMzY1NjYsIAorICAgIDEzNjU3MSwgMTM2NTc2LCAxMzY1ODEsIDEzNjU4NiwgMTM2NTkwLCAwLCAxMzY1OTUsIDEzNjYwMCwgMTM2NjA0LCAKKyAgICAxMzY2MDksIDAsIDEzNjYxNCwgMTM2NjE4LCAxMzY2MjMsIDEzNjYyOCwgMTM2NjMyLCAwLCAxMzY2MzcsIDAsIDAsIDAsIAorICAgIDEzNjY0MSwgMTM2NjQ1LCAxMzY2NTAsIDEzNjY1NCwgMTM2NjU5LCAxMzY2NjQsIDEzNjY2OSwgMCwgMTM2Njc0LCAKKyAgICAxMzY2NzgsIDEzNjY4MywgMTM2Njg4LCAxMzY2OTMsIDEzNjY5NywgMTM2NzAyLCAxMzY3MDcsIDEzNjcxMiwgMTM2NzE2LCAKKyAgICAxMzY3MjEsIDEzNjcyNiwgMTM2NzMwLCAxMzY3MzUsIDEzNjc0MCwgMTM2NzQ0LCAxMzY3NDksIDEzNjc1NCwgMTM2NzU4LCAKKyAgICAxMzY3NjIsIDEzNjc2NywgMTM2NzcxLCAxMzY3NzYsIDEzNjc4MSwgMTM2Nzg2LCAxMzY3OTEsIDEzNjc5NiwgMTM2ODAxLCAKKyAgICAxMzY4MDcsIDEzNjgxMywgMTM2ODE5LCAxMzY4MjQsIDEzNjgzMCwgMTM2ODM2LCAxMzY4NDIsIDEzNjg0NywgMTM2ODUzLCAKKyAgICAxMzY4NTksIDEzNjg2NCwgMTM2ODcwLCAxMzY4NzYsIDEzNjg4MSwgMTM2ODg3LCAxMzY4OTMsIDEzNjg5OCwgMTM2OTAzLCAKKyAgICAxMzY5MDksIDEzNjkxNCwgMTM2OTIwLCAxMzY5MjYsIDEzNjkzMiwgMTM2OTM4LCAxMzY5NDQsIDEzNjk0OSwgMTM2OTU1LCAKKyAgICAxMzY5NjEsIDEzNjk2NywgMTM2OTcyLCAxMzY5NzgsIDEzNjk4NCwgMTM2OTkwLCAxMzY5OTUsIDEzNzAwMSwgMTM3MDA3LCAKKyAgICAxMzcwMTIsIDEzNzAxOCwgMTM3MDI0LCAxMzcwMjksIDEzNzAzNSwgMTM3MDQxLCAxMzcwNDYsIDEzNzA1MSwgMTM3MDU3LCAKKyAgICAxMzcwNjIsIDEzNzA2OCwgMTM3MDc0LCAxMzcwODAsIDEzNzA4NiwgMTM3MDkyLCAxMzcwOTYsIDEzNzEwMSwgMTM3MTA2LCAKKyAgICAxMzcxMTEsIDEzNzExNSwgMTM3MTIwLCAxMzcxMjUsIDEzNzEzMCwgMTM3MTM0LCAxMzcxMzksIDEzNzE0NCwgMTM3MTQ4LCAKKyAgICAxMzcxNTMsIDEzNzE1OCwgMTM3MTYyLCAxMzcxNjcsIDEzNzE3MiwgMTM3MTc2LCAxMzcxODAsIDEzNzE4NSwgMTM3MTg5LCAKKyAgICAxMzcxOTQsIDEzNzE5OSwgMTM3MjA0LCAxMzcyMDksIDEzNzIxNCwgMTM3MjE4LCAxMzcyMjMsIDEzNzIyOCwgMTM3MjMzLCAKKyAgICAxMzcyMzcsIDEzNzI0MiwgMTM3MjQ3LCAxMzcyNTIsIDEzNzI1NiwgMTM3MjYxLCAxMzcyNjYsIDEzNzI3MCwgMTM3Mjc1LCAKKyAgICAxMzcyODAsIDEzNzI4NCwgMTM3Mjg5LCAxMzcyOTQsIDEzNzI5OCwgMTM3MzAyLCAxMzczMDcsIDEzNzMxMSwgMTM3MzE2LCAKKyAgICAxMzczMjEsIDEzNzMyNiwgMTM3MzMxLCAxMzczMzYsIDEzNzM0MSwgMTM3MzQ3LCAxMzczNTMsIDEzNzM1OSwgMTM3MzY0LCAKKyAgICAxMzczNzAsIDEzNzM3NiwgMTM3MzgyLCAxMzczODcsIDEzNzM5MywgMTM3Mzk5LCAxMzc0MDQsIDEzNzQxMCwgMTM3NDE2LCAKKyAgICAxMzc0MjEsIDEzNzQyNywgMTM3NDMzLCAxMzc0MzgsIDEzNzQ0MywgMTM3NDQ5LCAxMzc0NTQsIDEzNzQ2MCwgMTM3NDY2LCAKKyAgICAxMzc0NzIsIDEzNzQ3OCwgMTM3NDg0LCAxMzc0ODksIDEzNzQ5NSwgMTM3NTAxLCAxMzc1MDcsIDEzNzUxMiwgMTM3NTE4LCAKKyAgICAxMzc1MjQsIDEzNzUzMCwgMTM3NTM1LCAxMzc1NDEsIDEzNzU0NywgMTM3NTUyLCAxMzc1NTgsIDEzNzU2NCwgMTM3NTY5LCAKKyAgICAxMzc1NzUsIDEzNzU4MSwgMTM3NTg2LCAxMzc1OTEsIDEzNzU5NywgMTM3NjAyLCAxMzc2MDgsIDEzNzYxNCwgMTM3NjIwLCAKKyAgICAxMzc2MjYsIDEzNzYzMiwgMTM3NjM3LCAxMzc2NDMsIDEzNzY0OSwgMTM3NjU1LCAxMzc2NjAsIDEzNzY2NiwgMTM3NjcyLCAKKyAgICAxMzc2NzgsIDEzNzY4MywgMTM3Njg5LCAxMzc2OTUsIDEzNzcwMCwgMTM3NzA2LCAxMzc3MTIsIDEzNzcxNywgMTM3NzIzLCAKKyAgICAxMzc3MjksIDEzNzczNCwgMTM3NzM5LCAxMzc3NDUsIDEzNzc1MCwgMTM3NzU2LCAxMzc3NjIsIDEzNzc2OCwgMTM3Nzc0LCAKKyAgICAxMzc3ODAsIDEzNzc4NSwgMTM3NzkxLCAxMzc3OTcsIDEzNzgwMywgMTM3ODA4LCAxMzc4MTQsIDEzNzgyMCwgMTM3ODI2LCAKKyAgICAxMzc4MzEsIDEzNzgzNywgMTM3ODQzLCAxMzc4NDgsIDEzNzg1NCwgMTM3ODYwLCAxMzc4NjUsIDEzNzg3MSwgMTM3ODc3LCAKKyAgICAxMzc4ODIsIDEzNzg4NywgMTM3ODkzLCAxMzc4OTgsIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAKKyAgICAxMzc5MzQsIDEzNzk0MSwgMTM3OTQ4LCAxMzc5NTUsIDEzNzk2MSwgMTM3OTY4LCAxMzc5NzUsIDEzNzk4MiwgMTM3OTg4LCAKKyAgICAxMzc5OTUsIDEzODAwMiwgMTM4MDA4LCAxMzgwMTUsIDEzODAyMiwgMTM4MDI4LCAxMzgwMzUsIDEzODA0MiwgMTM4MDQ4LCAKKyAgICAxMzgwNTQsIDEzODA2MSwgMTM4MDY3LCAxMzgwNzQsIDEzODA4MSwgMTM4MDg4LCAxMzgwOTUsIDEzODEwMiwgMTM4MTA4LCAKKyAgICAxMzgxMTUsIDEzODEyMiwgMTM4MTI5LCAxMzgxMzUsIDEzODE0MiwgMTM4MTQ5LCAxMzgxNTYsIDEzODE2MiwgMTM4MTY5LCAKKyAgICAxMzgxNzYsIDEzODE4MiwgMTM4MTg5LCAxMzgxOTYsIDEzODIwMiwgMTM4MjA5LCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAKKyAgICAxMzgyMzUsIDEzODI0MSwgMTM4MjQ4LCAxMzgyNTUsIDEzODI2MiwgMTM4MjY5LCAxMzgyNzYsIDEzODI4MSwgMTM4Mjg3LCAKKyAgICAxMzgyOTMsIDEzODI5OSwgMTM4MzA0LCAxMzgzMTAsIDEzODMxNiwgMTM4MzIyLCAxMzgzMjcsIDEzODMzMywgMTM4MzM5LCAKKyAgICAxMzgzNDQsIDEzODM1MCwgMTM4MzU2LCAxMzgzNjEsIDEzODM2NywgMTM4MzczLCAxMzgzNzgsIDEzODM4MywgMTM4Mzg5LCAKKyAgICAxMzgzOTQsIDEzODQwMCwgMTM4NDA2LCAxMzg0MTIsIDEzODQxOCwgMTM4NDI0LCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKKyAgICAxMzg0NDcsIDEzODQ1MiwgMTM4NDU4LCAxMzg0NjQsIDEzODQ3MCwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDkyLCAKKyAgICAxMzg0OTgsIDEzODUwNCwgMTM4NTA5LCAxMzg1MTUsIDEzODUyMSwgMTM4NTI2LCAxMzg1MzEsIDEzODUzNywgMTM4NTQyLCAKKyAgICAxMzg1NDgsIDEzODU1NCwgMTM4NTYwLCAxMzg1NjYsIDEzODU3MiwgMTM4NTc4LCAwLCAwLCAxMzg1ODUsIDEzODU5MCwgCisgICAgMTM4NTk1LCAxMzg2MDAsIDEzODYwNSwgMTM4NjEwLCAxMzg2MTUsIDEzODYyMCwgMTM4NjI1LCAxMzg2MzAsIDEzODYzNSwgCisgICAgMTM4NjQwLCAxMzg2NDUsIDEzODY1MCwgMTM4NjU1LCAxMzg2NjAsIDEzODY2NSwgMTM4NjcwLCAxMzg2NzYsIDEzODY4MSwgCisgICAgMTM4Njg2LCAxMzg2OTEsIDEzODY5NiwgMTM4NzAxLCAxMzg3MDYsIDEzODcxMSwgMTM4NzE1LCAxMzg3MjAsIDEzODcyNSwgCisgICAgMTM4NzMwLCAxMzg3MzUsIDEzODc0MCwgMTM4NzQ1LCAxMzg3NTAsIDEzODc1NSwgMTM4NzYwLCAxMzg3NjUsIDEzODc3MCwgCisgICAgMTM4Nzc1LCAxMzg3ODAsIDEzODc4NSwgMTM4NzkwLCAxMzg3OTUsIDEzODgwMCwgMTM4ODA2LCAxMzg4MTEsIDEzODgxNiwgCisgICAgMTM4ODIxLCAxMzg4MjYsIDEzODgzMSwgMTM4ODM2LCAxMzg4NDEsIDEzODg0NywgMTM4ODUyLCAxMzg4NTcsIDEzODg2MiwgCisgICAgMTM4ODY3LCAxMzg4NzIsIDEzODg3NywgMTM4ODgyLCAxMzg4ODcsIDEzODg5MiwgMTM4ODk3LCAxMzg5MDIsIDEzODkwNywgCisgICAgMTM4OTEyLCAxMzg5MTcsIDEzODkyMiwgMTM4OTI3LCAxMzg5MzIsIDEzODkzNywgMTM4OTQyLCAxMzg5NDcsIDEzODk1MiwgCisgICAgMTM4OTU3LCAxMzg5NjIsIDEzODk2OCwgMTM4OTczLCAxMzg5NzgsIDEzODk4MywgMTM4OTg4LCAxMzg5OTMsIDEzODk5OCwgCisgICAgMTM5MDAzLCAxMzkwMDcsIDEzOTAxMiwgMTM5MDE3LCAxMzkwMjIsIDEzOTAyNywgMTM5MDMyLCAxMzkwMzcsIDEzOTA0MiwgCisgICAgMTM5MDQ3LCAxMzkwNTIsIDEzOTA1NywgMTM5MDYyLCAxMzkwNjcsIDEzOTA3MiwgMTM5MDc3LCAxMzkwODIsIDEzOTA4NywgCisgICAgMTM5MDkyLCAxMzkwOTgsIDEzOTEwMywgMTM5MTA4LCAxMzkxMTMsIDEzOTExOCwgMTM5MTIzLCAxMzkxMjgsIDEzOTEzMywgCisgICAgMTM5MTM5LCAxMzkxNDQsIDEzOTE0OSwgMTM5MTU0LCAxMzkxNTksIDEzOTE2NCwgMTM5MTY5LCAxMzkxNzUsIDEzOTE4MSwgCisgICAgMTM5MTg3LCAxMzkxOTMsIDEzOTE5OSwgMTM5MjA1LCAxMzkyMTEsIDEzOTIxNywgMTM5MjIzLCAxMzkyMjksIDEzOTIzNSwgCisgICAgMTM5MjQxLCAxMzkyNDcsIDEzOTI1MywgMTM5MjU5LCAxMzkyNjUsIDEzOTI3MSwgMTM5Mjc4LCAxMzkyODQsIDEzOTI5MCwgCisgICAgMTM5Mjk2LCAxMzkzMDIsIDEzOTMwOCwgMTM5MzE0LCAxMzkzMjAsIDEzOTMyNSwgMTM5MzMxLCAxMzkzMzcsIDEzOTM0MywgCisgICAgMTM5MzQ5LCAxMzkzNTUsIDEzOTM2MSwgMTM5MzY3LCAxMzkzNzMsIDEzOTM3OSwgMTM5Mzg1LCAxMzkzOTEsIDEzOTM5NywgCisgICAgMTM5NDAzLCAxMzk0MDksIDEzOTQxNSwgMTM5NDIxLCAxMzk0MjcsIDEzOTQzNCwgMTM5NDQwLCAxMzk0NDYsIDEzOTQ1MiwgCisgICAgMTM5NDU4LCAxMzk0NjQsIDEzOTQ3MCwgMTM5NDc2LCAxMzk0ODMsIDEzOTQ4OSwgMTM5NDk1LCAxMzk1MDEsIDEzOTUwNywgCisgICAgMTM5NTEzLCAxMzk1MTksIDEzOTUyNSwgMTM5NTMxLCAxMzk1MzcsIDEzOTU0MywgMTM5NTQ5LCAxMzk1NTUsIDEzOTU2MSwgCisgICAgMTM5NTY3LCAxMzk1NzMsIDEzOTU3OSwgMTM5NTg1LCAxMzk1OTEsIDEzOTU5NywgMTM5NjAzLCAxMzk2MDksIDEzOTYxNSwgCisgICAgMTM5NjIxLCAxMzk2MjgsIDEzOTYzNCwgMTM5NjQwLCAxMzk2NDYsIDEzOTY1MiwgMTM5NjU4LCAxMzk2NjQsIDEzOTY3MCwgCisgICAgMTM5Njc1LCAxMzk2ODEsIDEzOTY4NywgMTM5NjkzLCAxMzk2OTksIDEzOTcwNSwgMTM5NzExLCAxMzk3MTcsIDEzOTcyMywgCisgICAgMTM5NzI5LCAxMzk3MzUsIDEzOTc0MSwgMTM5NzQ3LCAxMzk3NTMsIDEzOTc1OSwgMTM5NzY1LCAxMzk3NzEsIDEzOTc3NywgCisgICAgMTM5Nzg0LCAxMzk3OTAsIDEzOTc5NiwgMTM5ODAyLCAxMzk4MDgsIDEzOTgxNCwgMTM5ODIwLCAxMzk4MjYsIDEzOTgzMywgCisgICAgMTM5ODM5LCAxMzk4NDUsIDEzOTg1MSwgMTM5ODU3LCAxMzk4NjMsIDEzOTg2OSwgMTM5ODc2LCAxMzk4ODMsIDEzOTg5MCwgCisgICAgMTM5ODk3LCAxMzk5MDQsIDEzOTkxMSwgMTM5OTE4LCAxMzk5MjUsIDEzOTkzMiwgMTM5OTM5LCAxMzk5NDYsIDEzOTk1MywgCisgICAgMTM5OTYwLCAxMzk5NjcsIDEzOTk3NCwgMTM5OTgxLCAxMzk5ODgsIDEzOTk5NiwgMTQwMDAzLCAxNDAwMTAsIDE0MDAxNywgCisgICAgMTQwMDI0LCAxNDAwMzEsIDE0MDAzOCwgMTQwMDQ1LCAxNDAwNTEsIDE0MDA1OCwgMTQwMDY1LCAxNDAwNzIsIDE0MDA3OSwgCisgICAgMTQwMDg2LCAxNDAwOTMsIDE0MDEwMCwgMTQwMTA3LCAxNDAxMTQsIDE0MDEyMSwgMTQwMTI4LCAxNDAxMzUsIDE0MDE0MiwgCisgICAgMTQwMTQ5LCAxNDAxNTYsIDE0MDE2MywgMTQwMTcwLCAxNDAxNzgsIDE0MDE4NSwgMTQwMTkyLCAxNDAxOTksIDE0MDIwNiwgCisgICAgMTQwMjEzLCAxNDAyMjAsIDE0MDIyNywgMTQwMjM1LCAxNDAyNDIsIDE0MDI0OSwgMTQwMjU2LCAxNDAyNjMsIDE0MDI3MCwgCisgICAgMTQwMjc3LCAxNDAyODIsIDAsIDAsIDE0MDI4NywgMTQwMjkyLCAxNDAyOTYsIDE0MDMwMCwgMTQwMzA0LCAxNDAzMDgsIAorICAgIDE0MDMxMiwgMTQwMzE2LCAxNDAzMjEsIDE0MDMyNSwgMTQwMzMwLCAxNDAzMzUsIDE0MDMzOSwgMTQwMzQzLCAxNDAzNDcsIAorICAgIDE0MDM1MSwgMTQwMzU1LCAxNDAzNTksIDE0MDM2NCwgMTQwMzY4LCAxNDAzNzMsIDE0MDM3OCwgMTQwMzgyLCAxNDAzODYsIAorICAgIDE0MDM5MCwgMTQwMzk0LCAxNDAzOTgsIDE0MDQwMiwgMTQwNDA3LCAxNDA0MTEsIDE0MDQxNiwgMTQwNDIyLCAxNDA0MjcsIAorICAgIDE0MDQzMiwgMTQwNDM3LCAxNDA0NDIsIDE0MDQ0NywgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIAorICAgIDE0MDQ4MCwgMTQwNDg1LCAxNDA0OTAsIDE0MDQ5NSwgMTQwNTAwLCAxNDA1MDUsIDE0MDUxMSwgMTQwNTE2LCAxNDA1MjIsIAorICAgIDE0MDUyNiwgMTQwNTMxLCAxNDA1MzYsIDE0MDU0MSwgMTQwNTQ2LCAxNDA1NTEsIDE0MDU1NiwgMTQwNTYyLCAxNDA1NzAsIAorICAgIDE0MDU3NywgMTQwNTgyLCAxNDA1ODcsIDE0MDU5NCwgMTQwNjAwLCAxNDA2MDUsIDE0MDYxMSwgMTQwNjE3LCAxNDA2MjUsIAorICAgIDE0MDYzMSwgMTQwNjM4LCAxNDA2NDYsIDE0MDY1MiwgMTQwNjYxLCAxNDA2NzAsIDE0MDY3OCwgMTQwNjg2LCAxNDA2OTIsIAorICAgIDE0MDY5OSwgMTQwNzA3LCAxNDA3MTUsIDE0MDcyMSwgMTQwNzI4LCAxNDA3MzcsIDE0MDc0NiwgMTQwNzUzLCAxNDA3NjQsIAorICAgIDE0MDc3NCwgMTQwNzg0LCAxNDA3OTQsIDE0MDgwNCwgMTQwODExLCAxNDA4MTgsIDE0MDgyNSwgMTQwODMyLCAxNDA4NDEsIAorICAgIDE0MDg1MCwgMTQwODYxLCAxNDA4NzIsIDE0MDg4MSwgMTQwODkwLCAxNDA5MDEsIDE0MDkxMCwgMTQwOTE5LCAxNDA5MzAsIAorICAgIDE0MDkzOSwgMTQwOTQ4LCAxNDA5NTYsIDE0MDk2NCwgMTQwOTc1LCAxNDA5ODYsIDE0MDk5NCwgMTQxMDAzLCAxNDEwMTIsIAorICAgIDE0MTAxOSwgMTQxMDMwLCAxNDEwNDEsIDE0MTA1MCwgMTQxMDU5LCAxNDEwNjYsIDE0MTA3NSwgMTQxMDg0LCAxNDEwOTMsIAorICAgIDE0MTEwNCwgMTQxMTEzLCAxNDExMjMsIDE0MTEzMiwgMTQxMTQxLCAxNDExNTIsIDE0MTE2NSwgMTQxMTgwLCAxNDExOTEsIAorICAgIDE0MTIwNCwgMTQxMjE2LCAxNDEyMjUsIDE0MTIzNiwgMTQxMjQ3LCAxNDEyNTYsIDE0MTI2NywgMTQxMjgxLCAxNDEyOTYsIAorICAgIDE0MTI5OSwgMTQxMzA4LCAxNDEzMTMsIDE0MTMxOSwgMTQxMzI3LCAxNDEzMzMsIDE0MTMzOSwgMTQxMzQ4LCAxNDEzNTUsIAorICAgIDE0MTM2NSwgMTQxMzc3LCAxNDEzODQsIDE0MTM4NywgMTQxMzkzLCAxNDE0MDAsIDE0MTQwNiwgMTQxNDExLCAxNDE0MTQsIAorICAgIDE0MTQxOSwgMTQxNDIyLCAxNDE0MjksIDE0MTQzNSwgMTQxNDQzLCAxNDE0NTAsIDE0MTQ1NywgMTQxNDYzLCAxNDE0NjgsIAorICAgIDE0MTQ3MSwgMTQxNDc0LCAxNDE0NzcsIDE0MTQ4MywgMTQxNDkwLCAxNDE0OTYsIDE0MTUwMSwgMTQxNTA4LCAxNDE1MTEsIAorICAgIDE0MTUxNiwgMTQxNTIzLCAxNDE1MjksIDE0MTUzNywgMTQxNTQ0LCAxNDE1NTQsIDE0MTU2MywgMTQxNTY2LCAxNDE1NzIsIAorICAgIDE0MTU3OSwgMTQxNTg2LCAxNDE1OTMsIDE0MTU5OCwgMTQxNjA2LCAxNDE2MTQsIDE0MTYyMywgMTQxNjI5LCAxNDE2MzgsIAorICAgIDE0MTY0NywgMTQxNjU2LCAxNDE2NjIsIDE0MTY3MSwgMTQxNjc4LCAxNDE2ODUsIDE0MTY5MiwgMTQxNzAwLCAxNDE3MDYsIAorICAgIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjcsIDE0MTczNCwgMTQxNzQyLCAxNDE3NTMsIDE0MTc2MywgMTQxNzY5LCAxNDE3NzYsIAorICAgIDE0MTc4MywgMTQxNzkwLCAxNDE3OTYsIDE0MTgwMywgMTQxODEwLCAxNDE4MTUsIDE0MTgyMiwgMTQxODMwLCAxNDE4MzksIAorICAgIDE0MTg0NSwgMTQxODU3LCAxNDE4NjgsIDE0MTg3NCwgMTQxODgyLCAxNDE4ODgsIDE0MTg5NSwgMTQxOTAyLCAxNDE5MDksIAorICAgIDE0MTkxNSwgMTQxOTIyLCAxNDE5MzEsIDE0MTkzNywgMTQxOTQzLCAxNDE5NTAsIDE0MTk1NywgMTQxOTY1LCAxNDE5NzUsIAorICAgIDE0MTk4NSwgMTQxOTk1LCAxNDIwMDUsIDE0MjAxMywgMTQyMDIxLCAxNDIwMzEsIDE0MjAzOSwgMTQyMDQ0LCAxNDIwNDksIAorICAgIDE0MjA1NCwgMTQyMDYwLCAxNDIwNjcsIDE0MjA3NCwgMTQyMDgwLCAxNDIwODYsIDE0MjA5MSwgMTQyMDk4LCAxNDIxMDYsIAorICAgIDE0MjExNiwgMTQyMTI0LCAxNDIxMzIsIDE0MjE0MiwgMTQyMTUyLCAxNDIxNjAsIDE0MjE3MCwgMTQyMTgwLCAxNDIxOTIsIAorICAgIDE0MjIwNCwgMTQyMjE2LCAxNDIyMjYsIDE0MjIzMiwgMTQyMjM4LCAxNDIyNDUsIDE0MjI1NCwgMTQyMjYzLCAxNDIyNzIsIAorICAgIDE0MjI4MSwgMTQyMjkxLCAxNDIzMDAsIDE0MjMwOSwgMTQyMzE4LCAxNDIzMjMsIDE0MjMyOSwgMTQyMzM4LCAxNDIzNDgsIAorICAgIDE0MjM1NywgMTQyMzYzLCAxNDIzNjksIDE0MjM3NiwgMTQyMzgzLCAxNDIzOTAsIDE0MjM5NiwgMTQyNDAzLCAxNDI0MTAsIAorICAgIDE0MjQxNywgMTQyNDIzLCAxNDI0MjcsIDE0MjQzMiwgMTQyNDM5LCAxNDI0NDYsIDE0MjQ1MywgMTQyNDU4LCAxNDI0NjYsIAorICAgIDE0MjQ3NCwgMTQyNDgzLCAxNDI0OTEsIDE0MjQ5OCwgMTQyNTA2LCAxNDI1MTUsIDE0MjUyNSwgMTQyNTI4LCAxNDI1MzIsIAorICAgIDE0MjUzNywgMTQyNTQyLCAxNDI1NDcsIDE0MjU1MiwgMTQyNTU3LCAxNDI1NjIsIDE0MjU2NywgMTQyNTcyLCAxNDI1NzcsIAorICAgIDE0MjU4MiwgMTQyNTg3LCAxNDI1OTIsIDE0MjU5NywgMTQyNjAyLCAxNDI2MDcsIDE0MjYxMiwgMTQyNjE3LCAxNDI2MjQsIAorICAgIDE0MjYzMCwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU1LCAxNDI2NjEsIDE0MjY2OCwgMTQyNjc0LCAxNDI2NzksIAorICAgIDE0MjY4NiwgMTQyNjkzLCAxNDI3MDAsIDE0MjcwNiwgMTQyNzEyLCAxNDI3MjEsIDE0MjczMCwgMTQyNzQxLCAxNDI3NDgsIAorICAgIDE0Mjc1NSwgMTQyNzY0LCAxNDI3NzMsIDE0Mjc4MiwgMTQyNzkxLCAxNDI4MDAsIDE0MjgwNiwgMTQyODE0LCAxNDI4MjAsIAorICAgIDE0MjgzMCwgMTQyODM1LCAxNDI4NDQsIDE0Mjg1MywgMTQyODYwLCAxNDI4NzEsIDE0Mjg3OCwgMTQyODg1LCAxNDI4OTIsIAorICAgIDE0Mjg5OSwgMTQyOTA2LCAxNDI5MTMsIDE0MjkyMCwgMTQyOTI3LCAxNDI5MzQsIDE0Mjk0MSwgMTQyOTQ3LCAxNDI5NTMsIAorICAgIDE0Mjk1OSwgMTQyOTY2LCAxNDI5NzMsIDE0Mjk4MCwgMTQyOTg3LCAxNDI5OTQsIDE0MzAwMSwgMTQzMDA4LCAxNDMwMTUsIAorICAgIDE0MzAyMiwgMTQzMDI5LCAxNDMwMzYsIDE0MzA0MywgMTQzMDQ4LCAxNDMwNTcsIDE0MzA2NiwgMTQzMDc1LCAxNDMwODIsIAorICAgIDE0MzA4OSwgMTQzMDk2LCAxNDMxMDMsIDE0MzExMCwgMTQzMTE3LCAxNDMxMjQsIDE0MzEzMSwgMTQzMTQwLCAxNDMxNDksIAorICAgIDE0MzE1OCwgMTQzMTY3LCAxNDMxNzYsIDE0MzE4NSwgMTQzMTk0LCAxNDMyMDMsIDE0MzIxMiwgMTQzMjIxLCAxNDMyMzAsIAorICAgIDE0MzIzOSwgMTQzMjQ4LCAxNDMyNTQsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzgsIDE0MzI4MywgMTQzMjkyLCAxNDMzMDEsIAorICAgIDE0MzMxMCwgMTQzMzIxLCAxNDMzMjYsIDE0MzMzMywgMTQzMzQwLCAxNDMzNDcsIDE0MzM1MiwgMTQzMzU4LCAxNDMzNjQsIAorICAgIDE0MzM3MCwgMTQzMzc3LCAxNDMzODQsIDE0MzM5MSwgMTQzMzk4LCAxNDM0MDUsIDE0MzQxMiwgMTQzNDE5LCAxNDM0MjYsIAorICAgIDE0MzQzMywgMTQzNDQwLCAxNDM0NDcsIDE0MzQ1NCwgMTQzNDU5LCAxNDM0NjgsIDE0MzQ3NywgMTQzNDg2LCAxNDM0OTUsIAorICAgIDE0MzUwNCwgMTQzNTEzLCAxNDM1MjIsIDE0MzUzMSwgMTQzNTQyLCAxNDM1NTMsIDE0MzU2MCwgMTQzNTY3LCAxNDM1NzQsIAorICAgIDE0MzU4MSwgMTQzNTg4LCAxNDM1OTUsIDE0MzYwMywgMTQzNjEzLCAxNDM2MjMsIDE0MzYzMywgMTQzNjQ0LCAxNDM2NTUsIAorICAgIDE0MzY2NiwgMTQzNjc1LCAxNDM2ODQsIDE0MzY5MywgMTQzNjk4LCAxNDM3MDMsIDE0MzcwOCwgMTQzNzEzLCAxNDM3MjQsIAorICAgIDE0MzczNSwgMTQzNzQ2LCAxNDM3NTcsIDE0Mzc2OCwgMTQzNzc4LCAxNDM3ODksIDE0Mzc5OCwgMTQzODA3LCAxNDM4MTYsIAorICAgIDE0MzgyNSwgMTQzODM0LCAxNDM4NDIsIDE0Mzg1MSwgMTQzODYyLCAxNDM4NzMsIDE0Mzg4NCwgMTQzODk1LCAxNDM5MDYsIAorICAgIDE0MzkxOCwgMTQzOTMxLCAxNDM5NDMsIDE0Mzk1NiwgMTQzOTY4LCAxNDM5ODEsIDE0Mzk5MywgMTQ0MDA2LCAxNDQwMTcsIAorICAgIDE0NDAyOCwgMTQ0MDM3LCAxNDQwNDUsIDE0NDA1NCwgMTQ0MDY1LCAxNDQwNzYsIDE0NDA4OCwgMTQ0MTAxLCAxNDQxMTUsIAorICAgIDE0NDEzMCwgMTQ0MTQyLCAxNDQxNTUsIDE0NDE2NywgMTQ0MTgwLCAxNDQxOTEsIDE0NDIwMiwgMTQ0MjExLCAxNDQyMTksIAorICAgIDE0NDIyOCwgMTQ0MjM1LCAxNDQyNDIsIDE0NDI0OSwgMTQ0MjU2LCAxNDQyNjMsIDE0NDI3MCwgMTQ0Mjc3LCAxNDQyODQsIAorICAgIDE0NDI5MSwgMTQ0Mjk4LCAxNDQzMDMsIDE0NDMwOCwgMTQ0MzEzLCAxNDQzMjAsIDE0NDMzMCwgMTQ0MzQxLCAxNDQzNTEsIAorICAgIDE0NDM2MiwgMTQ0Mzc2LCAxNDQzOTEsIDE0NDQwNiwgMTQ0NDIwLCAxNDQ0MzUsIDE0NDQ1MCwgMTQ0NDYxLCAxNDQ0NzIsIAorICAgIDE0NDQ4NSwgMTQ0NDk4LCAxNDQ1MDcsIDE0NDUxNiwgMTQ0NTI5LCAxNDQ1NDIsIDE0NDU0OSwgMTQ0NTU2LCAxNDQ1NjEsIAorICAgIDE0NDU2NiwgMTQ0NTcxLCAxNDQ1NzYsIDE0NDU4MSwgMTQ0NTg4LCAxNDQ1OTcsIDE0NDYwMiwgMTQ0NjA1LCAxNDQ2MTAsIAorICAgIDE0NDYxNywgMTQ0NjI0LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ1LCAxNDQ2NTIsIDE0NDY2NSwgMTQ0Njc5LCAxNDQ2OTQsIAorICAgIDE0NDcwMSwgMTQ0NzA4LCAxNDQ3MTUsIDE0NDcyNCwgMTQ0NzMyLCAxNDQ3NDAsIDE0NDc0OSwgMTQ0NzU0LCAxNDQ3NTksIAorICAgIDE0NDc2NCwgMTQ0NzY5LCAxNDQ3NzQsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIDE0NDc5OSwgMTQ0ODA2LCAxNDQ4MTIsIAorICAgIDE0NDgxOSwgMTQ0ODI0LCAxNDQ4MjksIDE0NDgzNCwgMTQ0ODM5LCAxNDQ4NDQsIDE0NDg1MSwgMTQ0ODU4LCAxNDQ4NjMsIAorICAgIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODIsIDE0NDg4NywgMTQ0ODkyLCAxNDQ4OTcsIDE0NDkwMiwgMTQ0OTA3LCAxNDQ5MTQsIAorICAgIDE0NDkyMSwgMTQ0OTI4LCAxNDQ5MzEsIDE0NDkzNiwgMTQ0OTQxLCAxNDQ5NDYsIDE0NDk1MSwgMTQ0OTU4LCAxNDQ5NjUsIAorICAgIDE0NDk3MywgMTQ0OTgxLCAxNDQ5ODYsIDE0NDk5MSwgMTQ0OTk4LCAxNDUwMDUsIDE0NTAxMiwgMTQ1MDE3LCAxNDUwMjQsIAorICAgIDE0NTAzMSwgMTQ1MDM2LCAxNDUwNDMsIDE0NTA1MCwgMTQ1MDU2LCAxNDUwNjIsIDE0NTA2OCwgMTQ1MDc0LCAxNDUwODIsIAorICAgIDE0NTA5MCwgMTQ1MDk2LCAxNDUxMDQsIDE0NTExMiwgMTQ1MTE3LCAxNDUxMjQsIDE0NTEzMSwgMTQ1MTM2LCAxNDUxNDMsIAorICAgIDE0NTE1MCwgMTQ1MTU3LCAxNDUxNjUsIDE0NTE3MywgMTQ1MTc4LCAxNDUxODUsIDE0NTE5MiwgMTQ1MjAxLCAxNDUyMDgsIAorICAgIDE0NTIxNywgMTQ1MjI4LCAxNDUyMzcsIDE0NTI0NiwgMTQ1MjU1LCAxNDUyNjQsIDE0NTI2NywgMTQ1MjcyLCAxNDUyNzksIAorICAgIDE0NTI4OCwgMTQ1Mjk1LCAxNDUzMDQsIDE0NTMxMSwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNCwgMTQ1MzI3LCAxNDUzMzAsIAorICAgIDE0NTMzNywgMTQ1MzQ0LCAxNDUzNTMsIDE0NTM2MiwgMTQ1MzcxLCAxNDUzNzgsIDE0NTM4NSwgMTQ1MzkwLCAxNDU0MDMsIAorICAgIDE0NTQwOCwgMTQ1NDEzLCAxNDU0MTgsIDE0NTQyMywgMTQ1NDI4LCAxNDU0MzMsIDE0NTQzOCwgMTQ1NDQzLCAxNDU0NDYsIAorICAgIDE0NTQ1MSwgMTQ1NDU2LCAxNDU0NjEsIDE0NTQ2NiwgMTQ1NDcxLCAxNDU0NzgsIDE0NTQ4MywgMTQ1NDkwLCAxNDU0OTMsIAorICAgIDE0NTQ5OCwgMTQ1NTAxLCAxNDU1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NTUwNywgMTQ1NTEyLCAxNDU1MTcsIDE0NTUyMiwgMTQ1NTI3LCAwLCAxNDU1MzIsIDE0NTUzNywgMTQ1NTQyLCAKKyAgICAxNDU1NDcsIDE0NTU1MiwgMTQ1NTU3LCAxNDU1NjIsIDE0NTU2NywgMTQ1NTcyLCAxNDU1NzcsIDE0NTU4MiwgMTQ1NTg3LCAKKyAgICAxNDU1OTIsIDE0NTU5NywgMTQ1NjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU2MDcsIDE0NTYxNCwgMTQ1NjIwLCAKKyAgICAxNDU2MjcsIDE0NTYzNCwgMTQ1NjQxLCAxNDU2NDgsIDE0NTY1NSwgMTQ1NjYyLCAxNDU2NjksIDE0NTY3NiwgMTQ1NjgzLCAKKyAgICAxNDU2OTAsIDE0NTY5NywgMTQ1NzA0LCAxNDU3MTEsIDE0NTcxOCwgMTQ1NzI1LCAxNDU3MzIsIDE0NTczOSwgMTQ1NzQ2LCAKKyAgICAxNDU3NTMsIDE0NTc2MCwgMTQ1NzY3LCAxNDU3NzQsIDE0NTc4MSwgMTQ1Nzg4LCAxNDU3OTUsIDE0NTgwMiwgMTQ1ODA5LCAKKyAgICAxNDU4MTYsIDE0NTgyMywgMTQ1ODMwLCAxNDU4MzcsIDE0NTg0NCwgMTQ1ODUwLCAxNDU4NTYsIDE0NTg2MiwgMTQ1ODY5LCAKKyAgICAxNDU4NzUsIDE0NTg4MiwgMTQ1ODg4LCAxNDU4OTUsIDE0NTkwMiwgMTQ1OTA5LCAxNDU5MTYsIDE0NTkyMywgMTQ1OTMwLCAKKyAgICAxNDU5MzcsIDE0NTk0NCwgMTQ1OTUxLCAxNDU5NTgsIDE0NTk2NSwgMTQ1OTcyLCAxNDU5NzksIDE0NTk4NiwgMTQ1OTkzLCAKKyAgICAxNDYwMDAsIDE0NjAwNywgMTQ2MDE0LCAxNDYwMjEsIDE0NjAyOCwgMTQ2MDM2LCAxNDYwNDMsIDE0NjA1MCwgMTQ2MDU3LCAKKyAgICAxNDYwNjQsIDE0NjA3MSwgMTQ2MDc4LCAxNDYwODUsIDE0NjA5MiwgMTQ2MDk5LCAxNDYxMDYsIDE0NjExMywgMTQ2MTIwLCAKKyAgICAxNDYxMjYsIDE0NjEzMywgMTQ2MTQwLCAxNDYxNDcsIDE0NjE1NCwgMTQ2MTYxLCAxNDYxNjgsIDE0NjE3NSwgMTQ2MTgzLCAKKyAgICAxNDYxOTAsIDE0NjE5NiwgMTQ2MjAzLCAxNDYyMTAsIDE0NjIxNywgMTQ2MjI0LCAxNDYyMzEsIDE0NjIzOCwgMTQ2MjQ1LCAKKyAgICAxNDYyNTIsIDE0NjI1OSwgMTQ2MjY2LCAxNDYyNzMsIDE0NjI4MCwgMTQ2Mjg3LCAxNDYyOTQsIDE0NjMwMSwgMTQ2MzA4LCAKKyAgICAxNDYzMTUsIDE0NjMyMiwgMTQ2MzI5LCAxNDYzMzYsIDE0NjM0MiwgMTQ2MzQ5LCAxNDYzNTYsIDE0NjM2MywgMTQ2MzcwLCAKKyAgICAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwNSwgMTQ2NDEyLCAxNDY0MTksIDE0NjQyNiwgMTQ2NDMzLCAKKyAgICAxNDY0NDAsIDE0NjQ0NywgMTQ2NDU0LCAxNDY0NjEsIDE0NjQ2OCwgMTQ2NDc1LCAxNDY0ODIsIDE0NjQ4OSwgMTQ2NDk2LCAKKyAgICAxNDY1MDQsIDE0NjUxMiwgMTQ2NTIwLCAxNDY1MjcsIDE0NjUzNCwgMTQ2NTQxLCAxNDY1NDgsIDE0NjU1NSwgMTQ2NTYyLCAKKyAgICAxNDY1NjksIDE0NjU3NiwgMTQ2NTgzLCAxNDY1OTAsIDE0NjU5NiwgMTQ2NjAzLCAxNDY2MTAsIDE0NjYxNywgMTQ2NjI0LCAKKyAgICAxNDY2MzEsIDE0NjYzOCwgMTQ2NjQ1LCAxNDY2NTIsIDE0NjY1OSwgMTQ2NjY2LCAxNDY2NzMsIDE0NjY4MCwgMTQ2Njg3LCAKKyAgICAxNDY2OTQsIDE0NjcwMiwgMTQ2NzEwLCAxNDY3MTgsIDE0NjcyNSwgMTQ2NzMyLCAxNDY3MzksIDE0Njc0NiwgMTQ2NzUzLCAKKyAgICAxNDY3NjAsIDE0Njc2NywgMTQ2Nzc0LCAxNDY3ODEsIDE0Njc4OCwgMTQ2Nzk1LCAxNDY4MDIsIDE0NjgwOSwgMTQ2ODE2LCAKKyAgICAxNDY4MjMsIDE0NjgzMCwgMTQ2ODM3LCAxNDY4NDQsIDE0Njg1MSwgMTQ2ODU4LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAKKyAgICAxNDY4ODYsIDE0Njg5MywgMTQ2OTAwLCAxNDY5MDcsIDE0NjkxNCwgMTQ2OTIxLCAxNDY5MjgsIDE0NjkzNSwgMTQ2OTQyLCAKKyAgICAxNDY5NDksIDE0Njk1NiwgMTQ2OTYzLCAxNDY5NzAsIDE0Njk3NywgMCwgMCwgMTQ2OTg0LCAxNDY5ODgsIDE0Njk5MiwgCisgICAgMTQ2OTk2LCAxNDcwMDAsIDE0NzAwNCwgMTQ3MDA4LCAxNDcwMTMsIDE0NzAxNywgMTQ3MDIyLCAxNDcwMjgsIDE0NzAzNCwgCisgICAgMTQ3MDQwLCAxNDcwNDYsIDE0NzA1NCwgMTQ3MDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDcwNjgsIDE0NzA3MiwgMTQ3MDc2LCAxNDcwODAsIDAsIDE0NzA4NCwgMTQ3MDg4LCAxNDcwOTIsIAorICAgIDE0NzA5NiwgMTQ3MTAwLCAxNDcxMDQsIDE0NzEwOCwgMTQ3MTEyLCAxNDcxMTYsIDE0NzEyMCwgMTQ3MTI0LCAxNDcxMjgsIAorICAgIDE0NzEzMiwgMTQ3MTM2LCAxNDcxNDAsIDE0NzE0NCwgMTQ3MTQ4LCAxNDcxNTIsIDE0NzE1NiwgMTQ3MTYwLCAxNDcxNjQsIAorICAgIDE0NzE2OCwgMTQ3MTcyLCAxNDcxNzYsIDE0NzE4MiwgMTQ3MTg4LCAxNDcxOTQsIDAsIDE0NzIwMCwgMTQ3MjA1LCAwLCAKKyAgICAxNDcyMTAsIDAsIDAsIDE0NzIxNSwgMCwgMTQ3MjIwLCAxNDcyMjUsIDE0NzIzMCwgMTQ3MjM1LCAxNDcyNDAsIDE0NzI0NSwgCisgICAgMTQ3MjUwLCAxNDcyNTUsIDE0NzI2MCwgMTQ3MjY1LCAwLCAxNDcyNzAsIDE0NzI3NSwgMTQ3MjgwLCAxNDcyODUsIDAsIAorICAgIDE0NzI5MCwgMCwgMTQ3Mjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDczMDAsIDAsIDAsIDAsIDAsIDE0NzMwNiwgMCwgCisgICAgMTQ3MzEyLCAwLCAxNDczMTgsIDAsIDE0NzMyNCwgMTQ3MzMwLCAxNDczMzYsIDAsIDE0NzM0MiwgMTQ3MzQ4LCAwLCAKKyAgICAxNDczNTQsIDAsIDAsIDE0NzM2MCwgMCwgMTQ3MzY2LCAwLCAxNDczNzIsIDAsIDE0NzM3OCwgMCwgMTQ3Mzg2LCAwLCAKKyAgICAxNDczOTQsIDE0NzQwMCwgMCwgMTQ3NDA2LCAwLCAwLCAxNDc0MTIsIDE0NzQxOCwgMTQ3NDI0LCAxNDc0MzAsIDAsIAorICAgIDE0NzQzNiwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1NCwgMTQ3NDYwLCAxNDc0NjYsIDE0NzQ3MiwgMCwgMTQ3NDc4LCAKKyAgICAxNDc0ODQsIDE0NzQ5MCwgMTQ3NDk2LCAwLCAxNDc1MDIsIDE0NzUwOCwgMTQ3NTE0LCAxNDc1MjAsIDAsIDE0NzUyOCwgMCwgCisgICAgMTQ3NTM2LCAxNDc1NDIsIDE0NzU0OCwgMTQ3NTU0LCAxNDc1NjAsIDE0NzU2NiwgMTQ3NTcyLCAxNDc1NzgsIDE0NzU4NCwgCisgICAgMTQ3NTkwLCAwLCAxNDc1OTYsIDE0NzYwMiwgMTQ3NjA4LCAxNDc2MTQsIDE0NzYyMCwgMTQ3NjI2LCAxNDc2MzIsIAorICAgIDE0NzYzOCwgMTQ3NjQ0LCAxNDc2NTAsIDE0NzY1NiwgMTQ3NjYyLCAxNDc2NjgsIDE0NzY3NCwgMTQ3NjgwLCAxNDc2ODYsIAorICAgIDE0NzY5MiwgMCwgMCwgMCwgMCwgMCwgMTQ3Njk4LCAxNDc3MDMsIDE0NzcwOCwgMCwgMTQ3NzEzLCAxNDc3MTgsIDE0NzcyMywgCisgICAgMTQ3NzI4LCAxNDc3MzMsIDAsIDE0NzczOCwgMTQ3NzQzLCAxNDc3NDgsIDE0Nzc1MywgMTQ3NzU4LCAxNDc3NjMsIAorICAgIDE0Nzc2OCwgMTQ3NzczLCAxNDc3NzgsIDE0Nzc4MywgMTQ3Nzg4LCAxNDc3OTMsIDE0Nzc5OCwgMTQ3ODAzLCAxNDc4MDgsIAorICAgIDE0NzgxMywgMTQ3ODE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MjMsIDE0NzgzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1NSwgMTQ3ODYyLCAxNDc4NjgsIDE0Nzg3NSwgMTQ3ODgyLCAKKyAgICAxNDc4ODgsIDE0Nzg5NSwgMTQ3OTAyLCAxNDc5MDksIDE0NzkxNywgMTQ3OTI1LCAxNDc5MzMsIDE0Nzk0MSwgMTQ3OTQ5LCAKKyAgICAxNDc5NTcsIDE0Nzk2NCwgMTQ3OTcxLCAxNDc5NzgsIDE0Nzk4NiwgMTQ3OTk0LCAxNDgwMDIsIDE0ODAxMCwgMTQ4MDE4LCAKKyAgICAxNDgwMjYsIDE0ODAzMywgMTQ4MDQwLCAxNDgwNDcsIDE0ODA1NSwgMTQ4MDYzLCAxNDgwNzEsIDE0ODA3OSwgMTQ4MDg3LCAKKyAgICAxNDgwOTUsIDE0ODEwMCwgMTQ4MTA1LCAxNDgxMTAsIDE0ODExNSwgMTQ4MTIwLCAxNDgxMjUsIDE0ODEzMCwgMTQ4MTM1LCAKKyAgICAxNDgxNDAsIDAsIDAsIDAsIDAsIDE0ODE0NSwgMTQ4MTUxLCAxNDgxNTUsIDE0ODE1OSwgMTQ4MTYzLCAxNDgxNjcsIAorICAgIDE0ODE3MSwgMTQ4MTc1LCAxNDgxNzksIDE0ODE4MywgMTQ4MTg3LCAxNDgxOTEsIDE0ODE5NSwgMTQ4MTk5LCAxNDgyMDMsIAorICAgIDE0ODIwNywgMTQ4MjExLCAxNDgyMTUsIDE0ODIxOSwgMTQ4MjIzLCAxNDgyMjcsIDE0ODIzMSwgMTQ4MjM1LCAxNDgyMzksIAorICAgIDE0ODI0MywgMTQ4MjQ3LCAxNDgyNTEsIDE0ODI1NSwgMTQ4MjU5LCAxNDgyNjMsIDE0ODI2NywgMTQ4MjcxLCAxNDgyNzUsIAorICAgIDE0ODI3OSwgMTQ4MjgzLCAxNDgyODcsIDE0ODI5MSwgMTQ4Mjk1LCAxNDgyOTksIDE0ODMwMywgMTQ4MzA3LCAxNDgzMTEsIAorICAgIDE0ODMxNSwgMTQ4MzE5LCAxNDgzMjMsIDE0ODMyNywgMTQ4MzMxLCAxNDgzMzUsIDE0ODMzOSwgMTQ4MzQzLCAxNDgzNDcsIAorICAgIDE0ODM1MiwgMTQ4MzU2LCAxNDgzNjAsIDE0ODM2NCwgMTQ4MzY4LCAxNDgzNzIsIDE0ODM3NiwgMTQ4MzgwLCAxNDgzODQsIAorICAgIDE0ODM4OCwgMTQ4MzkyLCAxNDgzOTYsIDE0ODQwMCwgMTQ4NDA0LCAxNDg0MDgsIDE0ODQxMiwgMTQ4NDE2LCAxNDg0MjAsIAorICAgIDE0ODQyNCwgMTQ4NDI4LCAxNDg0MzIsIDE0ODQzNiwgMTQ4NDQwLCAxNDg0NDQsIDE0ODQ0OCwgMTQ4NDUyLCAxNDg0NTYsIAorICAgIDE0ODQ2MCwgMTQ4NDY0LCAxNDg0NjgsIDE0ODQ3MiwgMTQ4NDc2LCAxNDg0ODAsIDE0ODQ4NCwgMTQ4NDg4LCAxNDg0OTIsIAorICAgIDE0ODQ5NiwgMTQ4NTAwLCAxNDg1MDQsIDE0ODUwOCwgMTQ4NTEyLCAxNDg1MTYsIDE0ODUyMCwgMTQ4NTI0LCAxNDg1MjgsIAorICAgIDE0ODUzMiwgMTQ4NTM2LCAxNDg1NDAsIDE0ODU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ4NTQ4LCAxNDg1NTQsIDE0ODU2MywgMTQ4NTcxLCAxNDg1NzksIDE0ODU4OCwgMTQ4NTk3LCAxNDg2MDYsIDE0ODYxNSwgCisgICAgMTQ4NjI0LCAxNDg2MzMsIDE0ODY0MiwgMTQ4NjUxLCAxNDg2NjAsIDE0ODY2OSwgMCwgMCwgMTQ4Njc4LCAxNDg2ODcsIAorICAgIDE0ODY5NSwgMTQ4NzAzLCAxNDg3MTIsIDE0ODcyMSwgMTQ4NzMwLCAxNDg3MzksIDE0ODc0OCwgMTQ4NzU3LCAxNDg3NjYsIAorICAgIDE0ODc3NSwgMTQ4Nzg0LCAxNDg3OTMsIDE0ODgwMiwgMCwgMTQ4ODEwLCAxNDg4MTksIDE0ODgyNywgMTQ4ODM1LCAKKyAgICAxNDg4NDQsIDE0ODg1MywgMTQ4ODYyLCAxNDg4NzEsIDE0ODg4MCwgMTQ4ODg5LCAxNDg4OTgsIDE0ODkwNywgMTQ4OTE2LCAKKyAgICAxNDg5MjUsIDE0ODkzNCwgMCwgMTQ4OTQxLCAxNDg5NTAsIDE0ODk1OCwgMTQ4OTY2LCAxNDg5NzUsIDE0ODk4NCwgCisgICAgMTQ4OTkzLCAxNDkwMDIsIDE0OTAxMSwgMTQ5MDIwLCAxNDkwMjksIDE0OTAzOCwgMTQ5MDQ3LCAxNDkwNTYsIDE0OTA2NSwgCisgICAgMTQ5MDcyLCAxNDkwNzgsIDE0OTA4NCwgMTQ5MDkwLCAxNDkwOTYsIDE0OTEwMiwgMTQ5MTA4LCAxNDkxMTQsIDE0OTEyMCwgCisgICAgMTQ5MTI2LCAxNDkxMzIsIDE0OTEzOCwgMTQ5MTQ0LCAxNDkxNTAsIDE0OTE1NiwgMTQ5MTYyLCAxNDkxNjgsIDE0OTE3NCwgCisgICAgMTQ5MTgwLCAxNDkxODYsIDE0OTE5MiwgMTQ5MTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDkyMDQsIAorICAgIDE0OTIxMSwgMTQ5MjE2LCAxNDkyMjAsIDE0OTIyNCwgMTQ5MjI4LCAxNDkyMzMsIDE0OTIzOCwgMTQ5MjQzLCAxNDkyNDgsIAorICAgIDE0OTI1MywgMTQ5MjU4LCAxNDkyNjUsIDAsIDAsIDAsIDE0OTI3MywgMTQ5Mjc4LCAxNDkyODQsIDE0OTI5MCwgMTQ5Mjk2LCAKKyAgICAxNDkzMDEsIDE0OTMwNywgMTQ5MzEzLCAxNDkzMTksIDE0OTMyNCwgMTQ5MzMwLCAxNDkzMzYsIDE0OTM0MSwgMTQ5MzQ3LCAKKyAgICAxNDkzNTMsIDE0OTM1OCwgMTQ5MzY0LCAxNDkzNzAsIDE0OTM3NSwgMTQ5MzgwLCAxNDkzODYsIDE0OTM5MSwgMTQ5Mzk3LCAKKyAgICAxNDk0MDMsIDE0OTQwOSwgMTQ5NDE1LCAxNDk0MjEsIDE0OTQzMSwgMTQ5NDM4LCAxNDk0NDQsIDE0OTQ0NywgMCwgCisgICAgMTQ5NDUwLCAxNDk0NTUsIDE0OTQ2MSwgMTQ5NDY3LCAxNDk0NzMsIDE0OTQ3OCwgMTQ5NDg0LCAxNDk0OTAsIDE0OTQ5NiwgCisgICAgMTQ5NTAxLCAxNDk1MDcsIDE0OTUxMywgMTQ5NTE4LCAxNDk1MjQsIDE0OTUzMCwgMTQ5NTM1LCAxNDk1NDEsIDE0OTU0NywgCisgICAgMTQ5NTUyLCAxNDk1NTcsIDE0OTU2MywgMTQ5NTY4LCAxNDk1NzQsIDE0OTU4MCwgMTQ5NTg2LCAxNDk1OTIsIDE0OTU5OCwgCisgICAgMTQ5NjAxLCAxNDk2MDQsIDE0OTYwNywgMTQ5NjEwLCAxNDk2MTMsIDE0OTYxNiwgMTQ5NjIyLCAxNDk2MjksIDE0OTYzNiwgCisgICAgMTQ5NjQzLCAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NzAsIDE0OTY3NiwgMTQ5NjgzLCAxNDk2OTAsIDE0OTY5NiwgCisgICAgMTQ5NzAzLCAxNDk3MTAsIDE0OTcxNiwgMTQ5NzIzLCAxNDk3MzAsIDE0OTczNiwgMTQ5NzQyLCAxNDk3NDksIDE0OTc1NSwgCisgICAgMTQ5NzYyLCAxNDk3NjksIDE0OTc3NiwgMTQ5NzgzLCAxNDk3OTAsIDE0OTc5NSwgMCwgMCwgMCwgMCwgMTQ5ODAwLCAKKyAgICAxNDk4MDYsIDE0OTgxMywgMTQ5ODIwLCAxNDk4MjcsIDE0OTgzMywgMTQ5ODQwLCAxNDk4NDcsIDE0OTg1NCwgMTQ5ODYwLCAKKyAgICAxNDk4NjcsIDE0OTg3NCwgMTQ5ODgwLCAxNDk4ODcsIDE0OTg5NCwgMTQ5OTAwLCAxNDk5MDcsIDE0OTkxNCwgMTQ5OTIwLCAKKyAgICAxNDk5MjYsIDE0OTkzMywgMTQ5OTM5LCAxNDk5NDYsIDE0OTk1MywgMTQ5OTYwLCAxNDk5NjcsIDE0OTk3NCwgMTQ5OTgzLCAKKyAgICAxNDk5ODcsIDE0OTk5MCwgMTQ5OTk0LCAxNDk5OTgsIDE1MDAwMiwgMTUwMDA1LCAxNTAwMDgsIDE1MDAxMSwgMTUwMDE0LCAKKyAgICAxNTAwMTcsIDE1MDAyMCwgMTUwMDIzLCAxNTAwMjYsIDE1MDAyOSwgMTUwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAwMzgsIDE1MDA0NSwgCisgICAgMTUwMDUzLCAxNTAwNjEsIDE1MDA2OSwgMTUwMDc2LCAxNTAwODQsIDE1MDA5MiwgMTUwMTAwLCAxNTAxMDcsIDE1MDExNSwgCisgICAgMTUwMTIzLCAxNTAxMzAsIDE1MDEzOCwgMTUwMTQ2LCAxNTAxNTMsIDE1MDE2MSwgMTUwMTY5LCAxNTAxNzYsIDE1MDE4MywgCisgICAgMTUwMTkxLCAxNTAxOTgsIDE1MDIwNiwgMTUwMjE0LCAxNTAyMjIsIDE1MDIzMCwgMTUwMjM4LCAxNTAyNDIsIDE1MDI0NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMjUwLCAxNTAyNTYsIDE1MDI2MiwgMTUwMjY4LCAKKyAgICAxNTAyNzIsIDE1MDI3OCwgMTUwMjg0LCAxNTAyOTAsIDE1MDI5NiwgMTUwMzAyLCAxNTAzMDgsIDE1MDMxNCwgMTUwMzIwLCAKKyAgICAxNTAzMjYsIDE1MDMzMiwgMTUwMzM4LCAxNTAzNDQsIDE1MDM1MCwgMTUwMzU2LCAxNTAzNjIsIDE1MDM2OCwgMTUwMzc0LCAKKyAgICAxNTAzODAsIDE1MDM4NiwgMTUwMzkyLCAxNTAzOTgsIDE1MDQwNCwgMTUwNDEwLCAxNTA0MTYsIDE1MDQyMiwgMTUwNDI4LCAKKyAgICAxNTA0MzQsIDE1MDQ0MCwgMTUwNDQ2LCAxNTA0NTIsIDE1MDQ1OCwgMTUwNDY0LCAxNTA0NzAsIDE1MDQ3NiwgMTUwNDgyLCAKKyAgICAxNTA0ODgsIDE1MDQ5NCwgMTUwNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTA1MDYsIDE1MDUxNywgMTUwNTI4LCAxNTA1MzksIAorICAgIDE1MDU1MCwgMTUwNTYxLCAxNTA1NzIsIDE1MDU4MywgMTUwNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MDUsIAorICAgIDE1MDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEzLCAxNTA2MTUsIDE1MDYxNywgMTUwNjIxLCAxNTA2MjYsIDE1MDYzMSwgCisgICAgMTUwNjMzLCAxNTA2MzksIDE1MDY0NCwgMTUwNjQ2LCAxNTA2NTIsIDE1MDY1NiwgMTUwNjU4LCAxNTA2NjIsIDE1MDY2OCwgCisgICAgMTUwNjc0LCAxNTA2ODAsIDE1MDY4NSwgMTUwNjkwLCAxNTA2OTcsIDE1MDcwNCwgMTUwNzExLCAxNTA3MTYsIDE1MDcyMywgCisgICAgMTUwNzMwLCAxNTA3MzcsIDE1MDc0MSwgMTUwNzQ4LCAxNTA3NTcsIDE1MDc2NiwgMTUwNzczLCAxNTA3NzgsIDE1MDc4MiwgCisgICAgMTUwNzg2LCAxNTA3ODgsIDE1MDc5MSwgMTUwNzk0LCAxNTA4MDEsIDE1MDgwOCwgMTUwODE4LCAxNTA4MjMsIDE1MDgyOCwgCisgICAgMTUwODMzLCAxNTA4MzgsIDE1MDg0MCwgMTUwODQ2LCAxNTA4NTAsIDE1MDg1MiwgMTUwODU0LCAxNTA4NTYsIDE1MDg1OCwgCisgICAgMTUwODYyLCAxNTA4NjYsIDE1MDg3MCwgMTUwODcyLCAxNTA4NzYsIDE1MDg3OCwgMTUwODgyLCAxNTA4ODQsIDE1MDg4NiwgCisgICAgMTUwODg4LCAxNTA4OTAsIDE1MDg5NSwgMTUwOTAwLCAxNTA5MDIsIDE1MDkwOCwgMTUwOTEyLCAxNTA5MTYsIDE1MDkyNCwgCisgICAgMTUwOTI2LCAxNTA5MjgsIDE1MDkzMCwgMTUwOTMyLCAxNTA5MzQsIDE1MDkzNiwgMTUwOTM4LCAxNTA5NDAsIDE1MDk0MiwgCisgICAgMTUwOTQ0LCAxNTA5NDgsIDE1MDk1MiwgMTUwOTU0LCAxNTA5NTYsIDE1MDk1OCwgMTUwOTYwLCAxNTA5NjIsIDE1MDk2NywgCisgICAgMTUwOTczLCAxNTA5NzcsIDE1MDk4MSwgMTUwOTg1LCAxNTA5ODksIDE1MDk5NCwgMTUwOTk4LCAxNTEwMDAsIDE1MTAwMiwgCisgICAgMTUxMDA2LCAxNTEwMTIsIDE1MTAxNCwgMTUxMDE2LCAxNTEwMTgsIDE1MTAyMiwgMTUxMDMxLCAxNTEwMzcsIDE1MTA0MSwgCisgICAgMTUxMDQ1LCAxNTEwNDcsIDE1MTA0OSwgMTUxMDUyLCAxNTEwNTQsIDE1MTA1NiwgMTUxMDU4LCAxNTEwNjIsIDE1MTA2NCwgCisgICAgMTUxMDY4LCAxNTEwNzMsIDE1MTA3NSwgMTUxMDgwLCAxNTEwODYsIDE1MTA5MywgMTUxMDk3LCAxNTExMDEsIDE1MTEwNSwgCisgICAgMTUxMTA5LCAxNTExMTUsIDE1MTExOSwgMTUxMTI3LCAxNTExMzQsIDE1MTEzNiwgMTUxMTM4LCAxNTExNDIsIDE1MTE0NiwgCisgICAgMTUxMTQ4LCAxNTExNTIsIDE1MTE1NiwgMTUxMTU4LCAxNTExNjIsIDE1MTE2NCwgMTUxMTY4LCAxNTExNzIsIDE1MTE3NiwgCisgICAgMTUxMTgwLCAxNTExODQsIDE1MTE4OCwgMTUxMTkyLCAxNTExOTYsIDE1MTIwMiwgMTUxMjA2LCAxNTEyMTAsIDE1MTIyMSwgCisgICAgMTUxMjI2LCAxNTEyMzAsIDE1MTIzNCwgMTUxMjQwLCAxNTEyNDQsIDE1MTI0OCwgMTUxMjUyLCAxNTEyNTksIDE1MTI2NiwgCisgICAgMTUxMjcwLCAxNTEyNzQsIDE1MTI3OCwgMTUxMjgyLCAxNTEyODYsIDE1MTI5MywgMTUxMjk1LCAxNTEyOTksIDE1MTMwMSwgCisgICAgMTUxMzAzLCAxNTEzMDcsIDE1MTMxMSwgMTUxMzE1LCAxNTEzMTcsIDE1MTMyMSwgMTUxMzI1LCAxNTEzMjksIDE1MTMzMywgCisgICAgMTUxMzM3LCAxNTEzMzksIDE1MTM0MywgMTUxMzQ1LCAxNTEzNTEsIDE1MTM1NCwgMTUxMzU5LCAxNTEzNjEsIDE1MTM2MywgCisgICAgMTUxMzY2LCAxNTEzNjgsIDE1MTM3MCwgMTUxMzczLCAxNTEzODAsIDE1MTM4NywgMTUxMzk0LCAxNTEzOTksIDE1MTQwMywgCisgICAgMTUxNDA1LCAxNTE0MDcsIDE1MTQwOSwgMTUxNDEzLCAxNTE0MTUsIDE1MTQxOSwgMTUxNDIzLCAxNTE0MjcsIDE1MTQyOSwgCisgICAgMTUxNDMzLCAxNTE0MzUsIDE1MTQzOSwgMTUxNDQzLCAxNTE0NTAsIDE1MTQ1MiwgMTUxNDYxLCAxNTE0NzAsIDE1MTQ3OSwgCisgICAgMTUxNDg1LCAxNTE0ODcsIDE1MTQ5MiwgMTUxNDk2LCAxNTE1MDAsIDE1MTUwMiwgMTUxNTA4LCAxNTE1MTIsIDE1MTUxNCwgCisgICAgMTUxNTE4LCAxNTE1MjIsIDE1MTUyNCwgMTUxNTI4LCAxNTE1MzMsIDE1MTUzNywgMTUxNTQzLCAxNTE1NDksIDE1MTU1MSwgCisgICAgMTUxNTUzLCAxNTE1NTksIDE1MTU2MSwgMTUxNTY1LCAxNTE1NjksIDE1MTU3MSwgMTUxNTc1LCAxNTE1NzcsIDE1MTU4MSwgCisgICAgMTUxNTg1LCAxNTE1ODksIDE1MTU5MiwgMTUxNTk1LCAxNTE2MDAsIDE1MTYwNSwgMTUxNjA3LCAxNTE2MTAsIDE1MTYxMiwgCisgICAgMTUxNjE5LCAxNTE2MjMsIDE1MTYyNSwgMTUxNjMyLCAxNTE2MzksIDE1MTY0NiwgMTUxNjUzLCAxNTE2NjAsIDE1MTY2MiwgCisgICAgMTUxNjY0LCAxNTE2NjYsIDE1MTY3MCwgMTUxNjcyLCAxNTE2NzQsIDE1MTY3NiwgMTUxNjc4LCAxNTE2ODAsIDE1MTY4MiwgCisgICAgMTUxNjg0LCAxNTE2ODYsIDE1MTY4OCwgMTUxNjkwLCAxNTE2OTIsIDE1MTY5NCwgMTUxNjk2LCAxNTE2OTgsIDE1MTcwMCwgCisgICAgMTUxNzAyLCAxNTE3MDQsIDE1MTcwNiwgMTUxNzA4LCAxNTE3MTAsIDE1MTcxMiwgMTUxNzE0LCAxNTE3MTgsIDE1MTcyMCwgCisgICAgMTUxNzIyLCAxNTE3MjQsIDE1MTcyOCwgMTUxNzMwLCAxNTE3MzQsIDE1MTczNiwgMTUxNzM4LCAxNTE3NDIsIDE1MTc0NiwgCisgICAgMTUxNzUyLCAxNTE3NTQsIDE1MTc1NiwgMTUxNzU4LCAxNTE3NjAsIDE1MTc2NCwgMTUxNzY4LCAxNTE3NzAsIDE1MTc3NCwgCisgICAgMTUxNzc4LCAxNTE3ODIsIDE1MTc4NiwgMTUxNzkwLCAxNTE3OTQsIDE1MTc5OCwgMTUxODAyLCAxNTE4MDYsIDE1MTgxMCwgCisgICAgMTUxODE0LCAxNTE4MTgsIDE1MTgyMiwgMTUxODI2LCAxNTE4MzAsIDE1MTgzNCwgMTUxODM4LCAxNTE4NDIsIDE1MTg0NCwgCisgICAgMTUxODQ2LCAxNTE4NDgsIDE1MTg1MCwgMTUxODUyLCAxNTE4NTQsIDE1MTg1NiwgMTUxODY0LCAxNTE4NzIsIDE1MTg4MCwgCisgICAgMTUxODg4LCAxNTE4OTMsIDE1MTg5OCwgMTUxOTAzLCAxNTE5MDcsIDE1MTkxMSwgMTUxOTE2LCAxNTE5MjAsIDE1MTkyMiwgCisgICAgMTUxOTI2LCAxNTE5MjgsIDE1MTkzMCwgMTUxOTMyLCAxNTE5MzQsIDE1MTkzNiwgMTUxOTM4LCAxNTE5NDAsIDE1MTk0NCwgCisgICAgMTUxOTQ2LCAxNTE5NDgsIDE1MTk1MCwgMTUxOTU0LCAxNTE5NTgsIDE1MTk2MiwgMTUxOTY2LCAxNTE5NzAsIDE1MTk3MiwgCisgICAgMTUxOTc4LCAxNTE5ODQsIDE1MTk4NiwgMTUxOTg4LCAxNTE5OTAsIDE1MTk5MiwgMTUxOTk0LCAxNTIwMDMsIDE1MjAxMCwgCisgICAgMTUyMDE3LCAxNTIwMjEsIDE1MjAyOCwgMTUyMDMzLCAxNTIwNDAsIDE1MjA0OSwgMTUyMDU0LCAxNTIwNTgsIDE1MjA2MiwgCisgICAgMTUyMDY0LCAxNTIwNjgsIDE1MjA3MCwgMTUyMDc0LCAxNTIwNzgsIDE1MjA4MCwgMTUyMDg0LCAxNTIwODgsIDE1MjA5MiwgCisgICAgMTUyMDk0LCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA0LCAxNTIxMDYsIDE1MjEwOCwgMTUyMTEyLCAxNTIxMTYsIDE1MjExOCwgCisgICAgMTUyMTIyLCAxNTIxMjQsIDE1MjEyNiwgMTUyMTI5LCAxNTIxMzMsIDE1MjEzNSwgMTUyMTM5LCAxNTIxNDEsIDE1MjE0MywgCisgICAgMTUyMTQ4LCAxNTIxNTAsIDE1MjE1NCwgMTUyMTU4LCAxNTIxNjEsIDE1MjE2NSwgMTUyMTY5LCAxNTIxNzMsIDE1MjE3NywgCisgICAgMTUyMTgxLCAxNTIxODUsIDE1MjE4OSwgMTUyMTk0LCAxNTIxOTgsIDE1MjIwMiwgMTUyMjExLCAxNTIyMTYsIDE1MjIxOSwgCisgICAgMTUyMjIxLCAxNTIyMjQsIDE1MjIyNywgMTUyMjMyLCAxNTIyMzQsIDE1MjIzNywgMTUyMjQyLCAxNTIyNDYsIDE1MjI0OSwgCisgICAgMTUyMjUzLCAxNTIyNTcsIDE1MjI2MCwgMTUyMjY1LCAxNTIyNjksIDE1MjI3MywgMTUyMjc3LCAxNTIyODEsIDE1MjI4NywgCisgICAgMTUyMjkzLCAxNTIyOTksIDE1MjMwNSwgMTUyMzEwLCAxNTIzMjAsIDE1MjMyMiwgMTUyMzI2LCAxNTIzMjgsIDE1MjMzMCwgCisgICAgMTUyMzM0LCAxNTIzMzgsIDE1MjM0MCwgMTUyMzQ0LCAxNTIzNDksIDE1MjM1NCwgMTUyMzYwLCAxNTIzNjIsIDE1MjM2NiwgCisgICAgMTUyMzcwLCAxNTIzNzYsIDE1MjM4MiwgMTUyMzg2LCAxNTIzODgsIDE1MjM5MCwgMTUyMzk0LCAxNTIzOTYsIDE1MjQwMCwgCisgICAgMTUyNDA0LCAxNTI0MDgsIDE1MjQxMCwgMTUyNDEyLCAxNTI0MTksIDE1MjQyMywgMTUyNDI2LCAxNTI0MzAsIDE1MjQzNCwgCisgICAgMTUyNDM4LCAxNTI0NDAsIDE1MjQ0NCwgMTUyNDQ2LCAxNTI0NDgsIDE1MjQ1MiwgMTUyNDU0LCAxNTI0NTgsIDE1MjQ2MiwgCisgICAgMTUyNDY4LCAxNTI0NzIsIDE1MjQ3NiwgMTUyNDgwLCAxNTI0ODIsIDE1MjQ4NSwgMTUyNDg5LCAxNTI0OTUsIDE1MjUwNCwgCisgICAgMTUyNTEzLCAxNTI1MjEsIDE1MjUyOSwgMTUyNTMxLCAxNTI1MzUsIDE1MjUzNywgMTUyNTQxLCAxNTI1NTIsIDE1MjU1NiwgCisgICAgMTUyNTYyLCAxNTI1NjgsIDE1MjU3MywgMTUyNTc1LCAxNTI1ODAsIDE1MjU4NCwgMTUyNTg2LCAxNTI1ODgsIDE1MjU5MCwgCisgICAgMTUyNTk0LCAxNTI1OTgsIDE1MjYwMiwgMTUyNjA3LCAxNTI2MTcsIDE1MjYzMiwgMTUyNjQyLCAxNTI2NTIsIDE1MjY1NiwgCisgICAgMTUyNjYwLCAxNTI2NjYsIDE1MjY2OCwgMTUyNjc2LCAxNTI2ODQsIDE1MjY4NiwgMTUyNjkwLCAxNTI2OTYsIDE1MjcwMiwgCisgICAgMTUyNzA5LCAxNTI3MTYsIDE1MjcxOCwgMTUyNzIwLCAxNTI3MjMsIDE1MjcyNSwgMTUyNzMxLCAxNTI3MzMsIDE1MjczNiwgCisgICAgMTUyNzQwLCAxNTI3NDYsIDE1Mjc1MiwgMTUyNzYzLCAxNTI3NjksIDE1Mjc3NSwgMTUyNzgzLCAxNTI3ODcsIDE1Mjc5NSwgCisgICAgMTUyODAzLCAxNTI4MDksIDE1MjgxNSwgMTUyODIyLCAxNTI4MjQsIDE1MjgyOCwgMTUyODMwLCAxNTI4MzIsIDE1MjgzNywgCisgICAgMTUyODM5LCAxNTI4NDEsIDE1Mjg0MywgMTUyODQ1LCAxNTI4NDksIDE1Mjg1OSwgMTUyODY1LCAxNTI4NjksIDE1Mjg3MywgCisgICAgMTUyODc3LCAxNTI4ODMsIDE1Mjg4OSwgMTUyODk1LCAxNTI5MDEsIDE1MjkwNiwgMTUyOTExLCAxNTI5MTcsIDE1MjkyMywgCisgICAgMTUyOTMwLCAxNTI5MzcsIDE1Mjk0NSwgMTUyOTUzLCAxNTI5NTgsIDE1Mjk2NiwgMTUyOTcwLCAxNTI5NzksIDE1Mjk4OCwgCisgICAgMTUyOTk0LCAxNTI5OTgsIDE1MzAwMiwgMTUzMDA2LCAxNTMwMDksIDE1MzAxNCwgMTUzMDE2LCAxNTMwMTgsIDE1MzAyMCwgCisgICAgMTUzMDI3LCAxNTMwMzIsIDE1MzAzOSwgMTUzMDQ2LCAxNTMwNTMsIDE1MzA2MSwgMTUzMDY5LCAxNTMwNzcsIDE1MzA4NSwgCisgICAgMTUzMDkzLCAxNTMxMDEsIDE1MzEwOSwgMTUzMTE3LCAxNTMxMjUsIDE1MzEzMSwgMTUzMTM3LCAxNTMxNDMsIDE1MzE0OSwgCisgICAgMTUzMTU1LCAxNTMxNjEsIDE1MzE2NywgMTUzMTczLCAxNTMxNzksIDE1MzE4NSwgMTUzMTkxLCAxNTMxOTcsIDE1MzIwMCwgCisgICAgMTUzMjA5LCAxNTMyMTgsIDE1MzIyMCwgMTUzMjI3LCAxNTMyMzEsIDE1MzIzMywgMTUzMjM1LCAxNTMyMzksIDE1MzI0NSwgCisgICAgMTUzMjQ5LCAxNTMyNTEsIDE1MzI2MSwgMTUzMjY3LCAxNTMyNzEsIDE1MzI3MywgMTUzMjc3LCAwLCAxNTMyNzksIAorICAgIDE1MzI4NiwgMTUzMjkzLCAxNTMzMDAsIDE1MzMwNSwgMTUzMzEwLCAxNTMzMTksIDE1MzMyNSwgMTUzMzMwLCAxNTMzMzQsIAorICAgIDE1MzMzOSwgMTUzMzQzLCAxNTMzNTAsIDE1MzM1NCwgMTUzMzU3LCAxNTMzNjIsIDE1MzM2OSwgMTUzMzc2LCAxNTMzODEsIAorICAgIDE1MzM4NiwgMTUzMzkxLCAxNTMzOTgsIDE1MzQwNywgMTUzNDE4LCAxNTM0MjQsIDE1MzQzMCwgMTUzNDM2LCAxNTM0NDYsIAorICAgIDE1MzQ2MSwgMTUzNDcwLCAxNTM0NzgsIDE1MzQ4NiwgMTUzNDk0LCAxNTM1MDIsIDE1MzUxMCwgMTUzNTE4LCAxNTM1MjYsIAorICAgIDE1MzUzNCwgMTUzNTQyLCAxNTM1NTAsIDE1MzU1OCwgMCwgMTUzNTY2LCAxNTM1NzAsIDE1MzU3NSwgMTUzNTgwLCAKKyAgICAxNTM1ODIsIDE1MzU4NiwgMTUzNTk1LCAxNTM2MDQsIDE1MzYxMiwgMTUzNjE2LCAxNTM2MjAsIDE1MzYyNSwgMTUzNjMwLCAKKyAgICAxNTM2MzUsIDE1MzYzNywgMTUzNjQyLCAxNTM2NDYsIDE1MzY0OCwgMTUzNjUyLCAxNTM2NTYsIDE1MzY2MiwgMTUzNjY3LCAKKyAgICAxNTM2NzUsIDE1MzY4MCwgMTUzNjg1LCAxNTM2OTAsIDE1MzY5NywgMTUzNzAwLCAxNTM3MDIsIDE1MzcwNSwgMTUzNzEwLCAKKyAgICAxNTM3MTYsIDE1MzcyMCwgMTUzNzI0LCAxNTM3MzAsIDE1MzczNiwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAKKyAgICAxNTM3NTQsIDE1Mzc1OCwgMTUzNzYwLCAxNTM3NjIsIDE1Mzc2NCwgMTUzNzY2LCAxNTM3NzIsIDE1Mzc3OCwgMTUzNzgyLCAKKyAgICAxNTM3ODQsIDE1Mzc4NiwgMTUzNzg4LCAxNTM3OTcsIDE1MzgwMSwgMTUzODA4LCAxNTM4MTUsIDE1MzgxNywgMTUzODIwLCAKKyAgICAxNTM4MjQsIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MCwgMTUzODQ4LCAxNTM4NTIsIDE1Mzg1NiwgMTUzODYxLCAKKyAgICAxNTM4NjYsIDE1Mzg3MSwgMTUzODc2LCAxNTM4ODEsIDE1Mzg4NiwgMTUzODkxLCAxNTM4OTYsIDE1MzkwMSwgMTUzOTA2LCAKKyAgICAxNTM5MTAsIDE1MzkxNiwgMTUzOTIwLCAxNTM5MjYsIDE1MzkzMSwgMTUzOTM4LCAxNTM5NDQsIDE1Mzk1MiwgMTUzOTU2LCAKKyAgICAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAxNTM5NzUsIDE1Mzk4MCwgMTUzOTg1LCAxNTM5ODcsIDE1Mzk5MSwgMTU0MDAwLCAKKyAgICAxNTQwMDgsIDE1NDAxNiwgMTU0MDI5LCAxNTQwNDIsIDE1NDA1NSwgMTU0MDYyLCAxNTQwNjksIDE1NDA3MywgMTU0MDgyLCAKKyAgICAxNTQwOTAsIDE1NDA5NCwgMTU0MTAzLCAxNTQxMTAsIDE1NDExNCwgMTU0MTE4LCAxNTQxMjIsIDE1NDEyNiwgMTU0MTMzLCAKKyAgICAxNTQxMzcsIDE1NDE0MSwgMTU0MTQ1LCAxNTQxNDksIDE1NDE1NiwgMTU0MTY1LCAxNTQxNzQsIDE1NDE4MSwgMTU0MTkzLCAKKyAgICAxNTQyMDUsIDE1NDIwOSwgMTU0MjEzLCAxNTQyMTcsIDE1NDIyMSwgMTU0MjI1LCAxNTQyMjksIDE1NDIzNywgMTU0MjQ1LCAKKyAgICAxNTQyNTMsIDE1NDI1NywgMTU0MjYxLCAxNTQyNjUsIDE1NDI2OSwgMTU0MjczLCAxNTQyNzcsIDE1NDI4MywgMTU0Mjg5LCAKKyAgICAxNTQyOTMsIDE1NDMwNCwgMTU0MzEyLCAxNTQzMTYsIDE1NDMyMCwgMTU0MzI0LCAxNTQzMjgsIDE1NDMzNCwgMTU0MzQxLCAKKyAgICAxNTQzNTIsIDE1NDM2MiwgMTU0MzcyLCAxNTQzODMsIDE1NDM5MiwgMTU0NDAzLCAxNTQ0MDksIDE1NDQxNSwgMTU0NDIxLCAKKyAgICAxNTQ0MjcsIDE1NDQzMywgMTU0NDM3LCAxNTQ0NDQsIDE1NDQ1MywgMTU0NDYwLCAxNTQ0NjYsIDE1NDQ3MCwgMTU0NDc0LCAKKyAgICAxNTQ0NzgsIDE1NDQ4NywgMTU0NDk5LCAxNTQ1MDMsIDE1NDUxMCwgMTU0NTE3LCAxNTQ1MjQsIDE1NDUzMiwgMTU0NTM5LCAKKyAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTY2LCAxNTQ1NzUsIDE1NDU4NSwgMTU0NTk0LCAxNTQ2MDQsIDE1NDYxMywgMTU0NjIzLCAKKyAgICAxNTQ2MzMsIDE1NDY0NCwgMTU0NjU0LCAxNTQ2NjUsIDE1NDY3MiwgMTU0NjgwLCAxNTQ2ODcsIDE1NDY5NSwgMTU0NzAzLCAKKyAgICAxNTQ3MTIsIDE1NDcyMCwgMTU0NzI5LCAxNTQ3MzYsIDE1NDc0OCwgMTU0NzU1LCAxNTQ3NjcsIDE1NDc3MCwgMTU0NzczLCAKKyAgICAxNTQ3NzYsIDE1NDc3OSwgMTU0Nzg1LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA1LCAxNTQ4MTAsIDE1NDgxNiwgMTU0ODI4LCAKKyAgICAxNTQ4MzgsIDE1NDg0OSwgMTU0ODU0LCAxNTQ4NTksIDE1NDg2NSwgMTU0ODcwLCAxNTQ4NzcsIDE1NDg4MSwgMTU0ODg3LCAKKyAgICAxNTQ4ODksIDE1NDg5MSwgMTU0ODk1LCAxNTQ4OTksIDE1NDkwMywgMTU0OTEyLCAxNTQ5MTQsIDE1NDkxNiwgMTU0OTE5LCAKKyAgICAxNTQ5MjEsIDE1NDkyMywgMTU0OTI3LCAxNTQ5MjksIDE1NDkzMywgMTU0OTM1LCAxNTQ5MzksIDE1NDk0MSwgMTU0OTQzLCAKKyAgICAxNTQ5NDcsIDE1NDk1MSwgMTU0OTU3LCAxNTQ5NTksIDE1NDk2MywgMTU0OTY1LCAxNTQ5NjksIDE1NDk3MywgMTU0OTc3LCAKKyAgICAxNTQ5ODEsIDE1NDk4MywgMTU0OTg1LCAxNTQ5ODksIDE1NDk5MywgMTU0OTk3LCAxNTUwMDEsIDE1NTAwMywgMTU1MDA1LCAKKyAgICAxNTUwMDcsIDE1NTAxMywgMTU1MDE4LCAxNTUwMjEsIDE1NTAyOSwgMTU1MDM3LCAxNTUwMzksIDE1NTA0NCwgMTU1MDQ3LCAKKyAgICAxNTUwNTIsIDE1NTA2MywgMTU1MDcwLCAxNTUwNzUsIDE1NTA4MCwgMTU1MDgyLCAxNTUwODYsIDE1NTA4OCwgMTU1MDkyLCAKKyAgICAxNTUwOTQsIDE1NTA5OCwgMTU1MTAyLCAxNTUxMDUsIDE1NTEwOCwgMTU1MTEwLCAxNTUxMTMsIDE1NTExNSwgMTU1MTE5LCAKKyAgICAxNTUxMjEsIDE1NTEyMywgMTU1MTI1LCAxNTUxMjksIDE1NTEzMSwgMTU1MTM1LCAxNTUxMzgsIDE1NTE0NSwgMTU1MTQ4LCAKKyAgICAxNTUxNTMsIDE1NTE1NiwgMTU1MTU5LCAxNTUxNjQsIDE1NTE2OCwgMTU1MTcyLCAxNTUxNzYsIDE1NTE3OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MTgzLCAxNTUxODgsIDE1NTE5MCwgMTU1MTk0LCAKKyAgICAxNTUxOTYsIDE1NTIwMCwgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNCwgMTU1MjE5LCAxNTUyMjIsIDE1NTIyNiwgMTU1MjMwLCAKKyAgICAwLCAwLCAwLCAxNTUyMzQsIDE1NTIzNiwgMTU1MjQyLCAxNTUyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE1NTI1MCwgMTU1MjU1LCAxNTUyNjAsIDE1NTI2NSwgMTU1MjcwLCAxNTUyNzUsIDE1NTI4MCwgMTU1Mjg3LCAKKyAgICAxNTUyOTQsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTMsIDE1NTMxOCwgMTU1MzIzLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQxLCAKKyAgICAxNTUzNDgsIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjcsIDE1NTM3MiwgMTU1Mzc3LCAxNTUzODIsIDE1NTM4NywgMTU1Mzk0LCAKKyAgICAxNTU0MDEsIDE1NTQwNiwgMTU1NDExLCAxNTU0MTgsIDE1NTQyNSwgMTU1NDMzLCAxNTU0NDEsIDE1NTQ0OCwgMTU1NDU1LCAKKyAgICAxNTU0NjMsIDE1NTQ3MSwgMTU1NDc5LCAxNTU0ODYsIDE1NTQ5NiwgMTU1NTA3LCAxNTU1MTIsIDE1NTUxOSwgMTU1NTI2LCAKKyAgICAxNTU1MzMsIDE1NTU0MSwgMTU1NTQ5LCAxNTU1NjAsIDE1NTU2OCwgMTU1NTc2LCAxNTU1ODQsIDE1NTU4OSwgMTU1NTk0LCAKKyAgICAxNTU1OTksIDE1NTYwNCwgMTU1NjA5LCAxNTU2MTQsIDE1NTYxOSwgMTU1NjI0LCAxNTU2MjksIDE1NTYzNCwgMTU1NjM5LCAKKyAgICAxNTU2NDQsIDE1NTY1MSwgMTU1NjU2LCAxNTU2NjEsIDE1NTY2OCwgMTU1NjczLCAxNTU2NzgsIDE1NTY4MywgMTU1Njg4LCAKKyAgICAxNTU2OTMsIDE1NTY5OCwgMTU1NzAzLCAxNTU3MDgsIDE1NTcxMywgMTU1NzE4LCAxNTU3MjMsIDE1NTcyOCwgMTU1NzM1LCAKKyAgICAxNTU3NDMsIDE1NTc0OCwgMTU1NzUzLCAxNTU3NjAsIDE1NTc2NSwgMTU1NzcwLCAxNTU3NzUsIDE1NTc4MiwgMTU1Nzg3LCAKKyAgICAxNTU3OTQsIDE1NTc5OSwgMTU1ODA2LCAxNTU4MTEsIDE1NTgyMCwgMTU1ODI5LCAxNTU4MzQsIDE1NTgzOSwgMTU1ODQ0LCAKKyAgICAxNTU4NDksIDE1NTg1NCwgMTU1ODU5LCAxNTU4NjQsIDE1NTg2OSwgMTU1ODc0LCAxNTU4NzksIDE1NTg4NCwgMTU1ODg5LCAKKyAgICAxNTU4OTQsIDE1NTkwMiwgMTU1OTEwLCAxNTU5MTUsIDE1NTkyMCwgMTU1OTI1LCAxNTU5MzAsIDE1NTkzNSwgMTU1OTQxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU5NDcsIDE1NTk1NSwgMTU1OTYzLCAxNTU5NzEsIAorICAgIDE1NTk3OSwgMTU1OTg1LCAxNTU5OTEsIDE1NTk5NSwgMTU1OTk5LCAxNTYwMDUsIDE1NjAxMSwgMTU2MDIwLCAxNTYwMjQsIAorICAgIDE1NjAyOSwgMTU2MDM1LCAxNTYwMzksIDE1NjA0NCwgMTU2MDQ4LCAxNTYwNTIsIDE1NjA1OCwgMTU2MDY0LCAxNTYwNzQsIAorICAgIDE1NjA4MywgMTU2MDg2LCAxNTYwOTEsIDE1NjA5NywgMTU2MTAzLCAxNTYxMTQsIDE1NjEyNCwgMTU2MTI4LCAxNTYxMzMsIAorICAgIDE1NjEzOSwgMTU2MTQ1LCAxNTYxNTQsIDE1NjE1OSwgMTU2MTYzLCAxNTYxNjgsIDE1NjE3MiwgMTU2MTc4LCAxNTYxODQsIAorICAgIDE1NjE5MCwgMTU2MTk0LCAxNTYxOTcsIDE1NjIwMSwgMTU2MjA0LCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMjQsIAorICAgIDE1NjIzMiwgMTU2MjM5LCAxNTYyNDYsIDE1NjI1NSwgMTU2MjY0LCAxNTYyNzEsIDE1NjI3OSwgMTU2Mjg2LCAxNTYyOTMsIAorICAgIDE1NjMwMiwgMTU2MzExLCAxNTYzMTgsIDE1NjMyNiwgMTU2MzMzLCAxNTYzNDAsIDE1NjM0OSwgMTU2MzU2LCAxNTYzNjQsIAorICAgIDE1NjM3MCwgMTU2Mzc5LCAxNTYzODcsIDE1NjM5NiwgMTU2NDAzLCAxNTY0MTMsIDE1NjQyNCwgMTU2NDMyLCAxNTY0NDAsIAorICAgIDE1NjQ0OSwgMTU2NDU3LCAxNTY0NjUsIDE1NjQ3NCwgMTU2NDgyLCAxNTY0OTIsIDE1NjUwMSwgMTU2NTA5LCAxNTY1MTcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjUyNiwgMTU2NTM0LCAKKyAgICAxNTY1NDIsIDE1NjU1MCwgMTU2NTU4LCAxNTY1NjcsIDE1NjU3NiwgMTU2NTg1LCAxNTY1OTQsIDE1NjYwMywgMTU2NjEyLCAKKyAgICAxNTY2MjEsIDAsIDAsIDAsIDAsIDE1NjYzMCwgMTU2NjM4LCAxNTY2NDYsIDE1NjY1NCwgMTU2NjYyLCAxNTY2NjksIAorICAgIDE1NjY3NiwgMTU2NjgzLCAxNTY2OTAsIDE1NjY5OCwgMTU2NzA2LCAxNTY3MTQsIDE1NjcyMiwgMTU2NzMyLCAxNTY3NDIsIAorICAgIDE1Njc1MiwgMTU2NzYyLCAxNTY3NzEsIDE1Njc4MCwgMTU2Nzg5LCAxNTY3OTgsIDE1NjgwNywgMTU2ODE2LCAxNTY4MjUsIAorICAgIDE1NjgzNCwgMTU2ODQyLCAxNTY4NTAsIDE1Njg1OCwgMTU2ODY2LCAxNTY4NzQsIDE1Njg4MiwgMTU2ODkwLCAxNTY4OTgsIAorICAgIDE1NjkwOCwgMTU2OTE4LCAxNTY5MjgsIDE1NjkzOCwgMTU2OTQyLCAxNTY5NDYsIDE1Njk1MCwgMTU2OTU0LCAxNTY5NTcsIAorICAgIDE1Njk2MCwgMTU2OTYzLCAxNTY5NjYsIDE1Njk3MCwgMTU2OTc0LCAxNTY5NzgsIDE1Njk4MiwgMTU2OTg3LCAxNTY5OTIsIAorICAgIDE1Njk5NywgMTU3MDAyLCAxNTcwMDUsIDE1NzAwOCwgMTU3MDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwMTQsIAorICAgIDE1NzAxNywgMTU3MDIwLCAxNTcwMjMsIDE1NzAyNiwgMTU3MDMxLCAxNTcwMzYsIDE1NzA0MiwgMTU3MDQ4LCAxNTcwNTIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzA1NiwgMTU3MDYyLCAxNTcwNjgsIDE1NzA3NCwgMTU3MDgwLCAxNTcwODgsIDE1NzA5NiwgCisgICAgMTU3MTA1LCAxNTcxMTQsIDE1NzExOSwgMTU3MTI0LCAxNTcxMjksIDE1NzEzNCwgMTU3MTQxLCAxNTcxNDgsIDE1NzE1NiwgCisgICAgMTU3MTY0LCAxNTcxNzEsIDE1NzE3OCwgMTU3MTg1LCAxNTcxOTIsIDE1NzIwMSwgMTU3MjEwLCAxNTcyMjAsIDE1NzIzMCwgCisgICAgMTU3MjM2LCAxNTcyNDIsIDE1NzI0OCwgMTU3MjU0LCAxNTcyNjIsIDE1NzI3MCwgMTU3Mjc5LCAxNTcyODgsIDE1NzI5NiwgCisgICAgMTU3MzA0LCAxNTczMTIsIDE1NzMyMCwgMTU3MzMwLCAxNTczNDAsIDE1NzM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTU3MzYyLCAxNTczNjcsIDE1NzM3MiwgMTU3Mzc3LCAxNTczODIsIDE1NzM5MSwgMTU3NDAwLCAxNTc0MDksIDE1NzQxOCwgCisgICAgMTU3NDI1LCAxNTc0MzIsIDE1NzQzOSwgMTU3NDQ2LCAxNTc0NTMsIDE1NzQ2MiwgMTU3NDcxLCAxNTc0ODAsIDE1NzQ4NSwgCisgICAgMTU3NDkyLCAxNTc0OTksIDE1NzUwNiwgMTU3NTExLCAxNTc1MTYsIDE1NzUyMSwgMTU3NTI2LCAxNTc1MzMsIDE1NzU0MCwgCisgICAgMTU3NTQ3LCAxNTc1NTQsIDE1NzU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NTcwLCAxNTc1NzQsIDE1NzU3OCwgMTU3NTgzLCAxNTc1ODcsIAorICAgIDE1NzU5MSwgMTU3NTk2LCAxNTc2MDAsIDE1NzYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjEwLCAxNTc2MTIsIAorICAgIDE1NzYxNiwgMTU3NjE4LCAxNTc2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI4LCAxNTc2MzIsIDE1NzYzNiwgMTU3NjQwLCAKKyAgICAxNTc2NDQsIDE1NzY0OCwgMTU3NjUyLCAxNTc2NTYsIDE1NzY2MCwgMTU3NjY0LCAxNTc2NjgsIDE1NzY3MiwgMTU3Njc2LCAKKyAgICAxNTc2ODAsIDE1NzY4NCwgMTU3Njg4LCAxNTc2OTIsIDE1NzY5NiwgMTU3NzAwLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEyLCAKKyAgICAxNTc3MTYsIDE1NzcyMCwgMTU3NzI0LCAxNTc3MjgsIDE1NzczMiwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgMTU3NzQ4LCAKKyAgICAxNTc3NTIsIDE1Nzc1NiwgMTU3NzYwLCAxNTc3NjQsIDE1Nzc2OCwgMTU3NzcyLCAxNTc3NzYsIDE1Nzc4MCwgMTU3Nzg0LCAKKyAgICAxNTc3ODgsIDE1Nzc5MiwgMTU3Nzk2LCAxNTc4MDAsIDE1NzgwNCwgMTU3ODA4LCAxNTc4MTIsIDE1NzgxNiwgMTU3ODIwLCAKKyAgICAxNTc4MjQsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzYsIDE1Nzg0MCwgMTU3ODQ0LCAxNTc4NDgsIDE1Nzg1MiwgMTU3ODU2LCAKKyAgICAxNTc4NjAsIDE1Nzg2NCwgMTU3ODY4LCAxNTc4NzIsIDE1Nzg3NiwgMTU3ODgwLCAxNTc4ODQsIDE1Nzg4OCwgMTU3ODkyLCAKKyAgICAxNTc4OTYsIDE1NzkwMCwgMTU3OTA0LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE2LCAxNTc5MjAsIDE1NzkyNCwgMTU3OTI4LCAKKyAgICAxNTc5MzIsIDE1NzkzNiwgMTU3OTQwLCAxNTc5NDQsIDE1Nzk0OCwgMTU3OTUyLCAxNTc5NTYsIDE1Nzk2MCwgMTU3OTY0LCAKKyAgICAxNTc5NjgsIDE1Nzk3MiwgMTU3OTc2LCAxNTc5ODAsIDE1Nzk4NCwgMTU3OTg4LCAxNTc5OTIsIDE1Nzk5NiwgMTU4MDAwLCAKKyAgICAxNTgwMDQsIDE1ODAwOCwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjgsIDE1ODAzMiwgMTU4MDM2LCAKKyAgICAxNTgwNDAsIDE1ODA0NCwgMTU4MDQ4LCAxNTgwNTIsIDE1ODA1NiwgMTU4MDYwLCAxNTgwNjQsIDE1ODA2OCwgMTU4MDcyLCAKKyAgICAxNTgwNzYsIDE1ODA4MCwgMTU4MDg0LCAxNTgwODgsIDE1ODA5MiwgMTU4MDk2LCAxNTgxMDAsIDE1ODEwNCwgMTU4MTA4LCAKKyAgICAxNTgxMTIsIDE1ODExNiwgMTU4MTIwLCAxNTgxMjQsIDE1ODEyOCwgMTU4MTMyLCAxNTgxMzYsIDE1ODE0MCwgMTU4MTQ0LCAKKyAgICAxNTgxNDgsIDE1ODE1MiwgMTU4MTU2LCAxNTgxNjAsIDE1ODE2NCwgMTU4MTY4LCAxNTgxNzIsIDE1ODE3NiwgMTU4MTgwLCAKKyAgICAxNTgxODQsIDE1ODE4OCwgMTU4MTkyLCAxNTgxOTYsIDE1ODIwMCwgMTU4MjA0LCAxNTgyMDgsIDE1ODIxMiwgMTU4MjE2LCAKKyAgICAxNTgyMjAsIDE1ODIyNCwgMTU4MjI4LCAxNTgyMzIsIDE1ODIzNiwgMTU4MjQwLCAxNTgyNDQsIDE1ODI0OCwgMTU4MjUyLCAKKyAgICAxNTgyNTYsIDE1ODI2MCwgMTU4MjY0LCAxNTgyNjgsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODAsIDE1ODI4NCwgMTU4Mjg4LCAKKyAgICAxNTgyOTIsIDE1ODI5NiwgMTU4MzAwLCAxNTgzMDQsIDE1ODMwOCwgMTU4MzEyLCAxNTgzMTYsIDE1ODMyMCwgMTU4MzI0LCAKKyAgICAxNTgzMjgsIDE1ODMzMiwgMTU4MzM2LCAxNTgzNDAsIDE1ODM0NCwgMTU4MzQ4LCAxNTgzNTIsIDE1ODM1NiwgMTU4MzYwLCAKKyAgICAxNTgzNjQsIDE1ODM2OCwgMTU4MzcyLCAxNTgzNzYsIDE1ODM4MCwgMTU4Mzg0LCAxNTgzODgsIDE1ODM5MiwgMTU4Mzk2LCAKKyAgICAxNTg0MDAsIDE1ODQwNCwgMTU4NDA4LCAxNTg0MTIsIDE1ODQxNiwgMTU4NDIwLCAxNTg0MjQsIDE1ODQyOCwgMTU4NDMyLCAKKyAgICAxNTg0MzYsIDE1ODQ0MCwgMTU4NDQ0LCAxNTg0NDgsIDE1ODQ1MiwgMTU4NDU2LCAxNTg0NjAsIDE1ODQ2NCwgMTU4NDY4LCAKKyAgICAxNTg0NzIsIDE1ODQ3NiwgMTU4NDgwLCAxNTg0ODQsIDE1ODQ4OCwgMTU4NDkyLCAxNTg0OTYsIDE1ODUwMCwgMTU4NTA0LCAKKyAgICAxNTg1MDgsIDE1ODUxMiwgMTU4NTE2LCAxNTg1MjAsIDE1ODUyNCwgMTU4NTI4LCAxNTg1MzIsIDE1ODUzNiwgMTU4NTQwLCAKKyAgICAxNTg1NDQsIDE1ODU0OCwgMTU4NTUyLCAxNTg1NTYsIDE1ODU2MCwgMTU4NTY0LCAxNTg1NjgsIDE1ODU3MiwgMTU4NTc2LCAKKyAgICAxNTg1ODAsIDE1ODU4NCwgMTU4NTg4LCAxNTg1OTIsIDE1ODU5NiwgMTU4NjAwLCAxNTg2MDQsIDE1ODYwOCwgMTU4NjEyLCAKKyAgICAxNTg2MTYsIDE1ODYyMCwgMTU4NjI0LCAxNTg2MjgsIDE1ODYzMiwgMTU4NjM2LCAxNTg2NDAsIDE1ODY0NCwgMTU4NjQ4LCAKKyAgICAxNTg2NTIsIDE1ODY1NiwgMTU4NjYwLCAxNTg2NjQsIDE1ODY2OCwgMTU4NjcyLCAxNTg2NzYsIDE1ODY4MCwgMTU4Njg0LCAKKyAgICAxNTg2ODgsIDE1ODY5MiwgMTU4Njk2LCAxNTg3MDAsIDE1ODcwNCwgMTU4NzA4LCAxNTg3MTIsIDE1ODcxNiwgMTU4NzIwLCAKKyAgICAxNTg3MjQsIDE1ODcyOCwgMTU4NzMyLCAxNTg3MzYsIDE1ODc0MCwgMTU4NzQ0LCAxNTg3NDgsIDE1ODc1MiwgMTU4NzU2LCAKKyAgICAxNTg3NjAsIDE1ODc2NCwgMTU4NzY4LCAxNTg3NzIsIDE1ODc3NiwgMTU4NzgwLCAxNTg3ODQsIDE1ODc4OCwgMTU4NzkyLCAKKyAgICAxNTg3OTYsIDE1ODgwMCwgMTU4ODA0LCAxNTg4MDgsIDE1ODgxMiwgMTU4ODE2LCAxNTg4MjAsIDE1ODgyNCwgMTU4ODI4LCAKKyAgICAxNTg4MzIsIDE1ODgzNiwgMTU4ODQwLCAxNTg4NDQsIDE1ODg0OCwgMTU4ODUyLCAxNTg4NTYsIDE1ODg2MCwgMTU4ODY0LCAKKyAgICAxNTg4NjgsIDE1ODg3MiwgMTU4ODc2LCAxNTg4ODAsIDE1ODg4NCwgMTU4ODg4LCAxNTg4OTIsIDE1ODg5NiwgMTU4OTAwLCAKKyAgICAxNTg5MDQsIDE1ODkwOCwgMTU4OTEyLCAxNTg5MTYsIDE1ODkyMCwgMTU4OTI0LCAxNTg5MjgsIDE1ODkzMiwgMTU4OTM2LCAKKyAgICAxNTg5NDAsIDE1ODk0NCwgMTU4OTQ4LCAxNTg5NTIsIDE1ODk1NiwgMTU4OTYwLCAxNTg5NjQsIDE1ODk2OCwgMTU4OTcyLCAKKyAgICAxNTg5NzYsIDE1ODk4MCwgMTU4OTg0LCAxNTg5ODgsIDE1ODk5MiwgMTU4OTk2LCAxNTkwMDAsIDE1OTAwNCwgMTU5MDA4LCAKKyAgICAxNTkwMTIsIDE1OTAxNiwgMTU5MDIwLCAxNTkwMjQsIDE1OTAyOCwgMTU5MDMyLCAxNTkwMzYsIDE1OTA0MCwgMTU5MDQ0LCAKKyAgICAxNTkwNDgsIDE1OTA1MiwgMTU5MDU2LCAxNTkwNjAsIDE1OTA2NCwgMTU5MDY4LCAxNTkwNzIsIDE1OTA3NiwgMTU5MDgwLCAKKyAgICAxNTkwODQsIDE1OTA4OCwgMTU5MDkyLCAxNTkwOTYsIDE1OTEwMCwgMTU5MTA0LCAxNTkxMDgsIDE1OTExMiwgMTU5MTE2LCAKKyAgICAxNTkxMjAsIDE1OTEyNCwgMTU5MTI4LCAxNTkxMzIsIDE1OTEzNiwgMTU5MTQwLCAxNTkxNDQsIDE1OTE0OCwgMTU5MTUyLCAKKyAgICAxNTkxNTYsIDE1OTE2MCwgMTU5MTY0LCAxNTkxNjgsIDE1OTE3MiwgMTU5MTc2LCAxNTkxODAsIDE1OTE4NCwgMTU5MTg4LCAKKyAgICAxNTkxOTIsIDE1OTE5NiwgMTU5MjAwLCAxNTkyMDQsIDE1OTIwOCwgMTU5MjEyLCAxNTkyMTYsIDE1OTIyMCwgMTU5MjI0LCAKKyAgICAxNTkyMjgsIDE1OTIzMiwgMTU5MjM2LCAxNTkyNDAsIDE1OTI0NCwgMTU5MjQ4LCAxNTkyNTIsIDE1OTI1NiwgMTU5MjYwLCAKKyAgICAxNTkyNjQsIDE1OTI2OCwgMTU5MjcyLCAxNTkyNzYsIDE1OTI4MCwgMTU5Mjg0LCAxNTkyODgsIDE1OTI5MiwgMTU5Mjk2LCAKKyAgICAxNTkzMDAsIDE1OTMwNCwgMTU5MzA4LCAxNTkzMTIsIDE1OTMxNiwgMTU5MzIwLCAxNTkzMjQsIDE1OTMyOCwgMTU5MzMyLCAKKyAgICAxNTkzMzYsIDE1OTM0MCwgMTU5MzQ0LCAxNTkzNDgsIDE1OTM1MiwgMTU5MzU2LCAxNTkzNjAsIDE1OTM2NCwgMTU5MzY4LCAKKyAgICAxNTkzNzIsIDE1OTM3NiwgMTU5MzgwLCAxNTkzODQsIDE1OTM4OCwgMTU5MzkyLCAxNTkzOTYsIDE1OTQwMCwgMTU5NDA0LCAKKyAgICAxNTk0MDgsIDE1OTQxMiwgMTU5NDE2LCAxNTk0MjAsIDE1OTQyNCwgMTU5NDI4LCAxNTk0MzIsIDE1OTQzNiwgMTU5NDQwLCAKKyAgICAxNTk0NDQsIDE1OTQ0OCwgMTU5NDUyLCAxNTk0NTYsIDE1OTQ2MCwgMTU5NDY0LCAxNTk0NjgsIDE1OTQ3MiwgMTU5NDc2LCAKKyAgICAxNTk0ODAsIDE1OTQ4NCwgMTU5NDg4LCAxNTk0OTIsIDE1OTQ5NiwgMTU5NTAwLCAxNTk1MDQsIDE1OTUwOCwgMTU5NTEyLCAKKyAgICAxNTk1MTYsIDE1OTUyMCwgMTU5NTI0LCAxNTk1MjgsIDE1OTUzMiwgMTU5NTM2LCAxNTk1NDAsIDE1OTU0NCwgMTU5NTQ4LCAKKyAgICAxNTk1NTIsIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgMTU5NTcyLCAxNTk1NzYsIDE1OTU4MCwgMTU5NTg0LCAKKyAgICAxNTk1ODgsIDE1OTU5MiwgMTU5NTk2LCAxNTk2MDAsIDE1OTYwNCwgMTU5NjA4LCAxNTk2MTIsIDE1OTYxNiwgMTU5NjIwLCAKKyAgICAxNTk2MjQsIDE1OTYyOCwgMTU5NjMyLCAxNTk2MzYsIDE1OTY0MCwgMTU5NjQ0LCAxNTk2NDgsIDE1OTY1MiwgMTU5NjU2LCAKKyAgICAxNTk2NjAsIDE1OTY2NCwgMTU5NjY4LCAxNTk2NzIsIDE1OTY3NiwgMTU5NjgwLCAxNTk2ODQsIDE1OTY4OCwgMTU5NjkyLCAKKyAgICAxNTk2OTYsIDE1OTcwMCwgMTU5NzA0LCAxNTk3MDgsIDE1OTcxMiwgMTU5NzE2LCAxNTk3MjAsIDE1OTcyNCwgMTU5NzI4LCAKKyAgICAxNTk3MzIsIDE1OTczNiwgMTU5NzQwLCAxNTk3NDQsIDE1OTc0OCwgMTU5NzUyLCAxNTk3NTYsIDE1OTc2MCwgMTU5NzY0LCAKKyAgICAxNTk3NjgsIDE1OTc3MiwgMTU5Nzc2LCAxNTk3ODAsIDE1OTc4NCwgMTU5Nzg4LCAxNTk3OTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1OTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5ODAwLCAxNTk4MDMsIDE1OTgwNywgMTU5ODExLCAKKyAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MjUsIDE1OTgyOCwgMTU5ODMyLCAxNTk4MzYsIDE1OTgzOSwgMTU5ODQyLCAKKyAgICAxNTk4NDUsIDE1OTg0OCwgMTU5ODUzLCAxNTk4NTYsIDE1OTg2MCwgMTU5ODYzLCAxNTk4NjYsIDE1OTg2OSwgMTU5ODcyLCAKKyAgICAxNTk4NzUsIDE1OTg3OCwgMTU5ODgyLCAxNTk4ODUsIDE1OTg4OSwgMTU5ODkyLCAxNTk4OTUsIDE1OTg5OSwgMTU5OTAzLCAKKyAgICAxNTk5MDcsIDE1OTkxMSwgMTU5OTE2LCAxNTk5MjEsIDE1OTkyNywgMTU5OTMzLCAxNTk5MzksIDE1OTk0NCwgMTU5OTUwLCAKKyAgICAxNTk5NTYsIDE1OTk2MiwgMTU5OTY3LCAxNTk5NzMsIDE1OTk3OSwgMTU5OTg0LCAxNTk5OTAsIDE1OTk5NiwgMTYwMDAxLCAKKyAgICAxNjAwMDcsIDE2MDAxMywgMTYwMDE4LCAxNjAwMjMsIDE2MDAyOSwgMTYwMDM0LCAxNjAwNDAsIDE2MDA0NiwgMTYwMDUyLCAKKyAgICAxNjAwNTgsIDE2MDA2NCwgMTYwMDY4LCAxNjAwNzMsIDE2MDA3NywgMTYwMDgyLCAxNjAwODYsIDE2MDA5MSwgMTYwMDk2LCAKKyAgICAxNjAxMDIsIDE2MDEwOCwgMTYwMTE0LCAxNjAxMTksIDE2MDEyNSwgMTYwMTMxLCAxNjAxMzcsIDE2MDE0MiwgMTYwMTQ4LCAKKyAgICAxNjAxNTQsIDE2MDE1OSwgMTYwMTY1LCAxNjAxNzEsIDE2MDE3NiwgMTYwMTgyLCAxNjAxODgsIDE2MDE5MywgMTYwMTk4LCAKKyAgICAxNjAyMDQsIDE2MDIwOSwgMTYwMjE1LCAxNjAyMjEsIDE2MDIyNywgMTYwMjMzLCAxNjAyMzksIDE2MDI0NCwgMTYwMjQ4LCAKKyAgICAxNjAyNTMsIDE2MDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMjYwLCAxNjAyNjMsIDE2MDI2NiwgMTYwMjY5LCAKKyAgICAxNjAyNzIsIDE2MDI3NSwgMTYwMjc4LCAxNjAyODEsIDE2MDI4NCwgMTYwMjg3LCAxNjAyOTAsIDE2MDI5MywgMTYwMjk2LCAKKyAgICAxNjAyOTksIDE2MDMwMiwgMTYwMzA1LCAxNjAzMDgsIDE2MDMxMSwgMTYwMzE0LCAxNjAzMTcsIDE2MDMyMCwgMTYwMzIzLCAKKyAgICAxNjAzMjYsIDE2MDMyOSwgMTYwMzMyLCAxNjAzMzUsIDE2MDMzOCwgMTYwMzQxLCAxNjAzNDQsIDE2MDM0NywgMTYwMzUwLCAKKyAgICAxNjAzNTMsIDE2MDM1NiwgMTYwMzU5LCAxNjAzNjIsIDE2MDM2NSwgMTYwMzY4LCAxNjAzNzEsIDE2MDM3NCwgMTYwMzc3LCAKKyAgICAxNjAzODAsIDE2MDM4MywgMTYwMzg2LCAxNjAzODksIDE2MDM5MiwgMTYwMzk1LCAxNjAzOTgsIDE2MDQwMSwgMTYwNDA0LCAKKyAgICAxNjA0MDcsIDE2MDQxMCwgMTYwNDEzLCAxNjA0MTYsIDE2MDQxOSwgMTYwNDIyLCAxNjA0MjUsIDE2MDQyOCwgMTYwNDMxLCAKKyAgICAxNjA0MzQsIDE2MDQzNywgMTYwNDQwLCAxNjA0NDMsIDE2MDQ0NiwgMTYwNDQ5LCAxNjA0NTIsIDE2MDQ1NSwgMTYwNDU4LCAKKyAgICAxNjA0NjEsIDE2MDQ2NCwgMTYwNDY3LCAxNjA0NzAsIDE2MDQ3MywgMTYwNDc2LCAxNjA0NzksIDE2MDQ4MiwgMTYwNDg1LCAKKyAgICAxNjA0ODgsIDE2MDQ5MSwgMTYwNDk0LCAxNjA0OTcsIDE2MDUwMCwgMTYwNTAzLCAxNjA1MDYsIDE2MDUwOSwgMTYwNTEyLCAKKyAgICAxNjA1MTUsIDE2MDUxOCwgMTYwNTIxLCAxNjA1MjQsIDE2MDUyNywgMTYwNTMwLCAxNjA1MzMsIDE2MDUzNiwgMTYwNTM5LCAKKyAgICAxNjA1NDIsIDE2MDU0NSwgMTYwNTQ4LCAxNjA1NTEsIDE2MDU1NCwgMTYwNTU3LCAxNjA1NjAsIDE2MDU2MywgMTYwNTY2LCAKKyAgICAxNjA1NjksIDE2MDU3MiwgMTYwNTc1LCAxNjA1NzgsIDE2MDU4MSwgMTYwNTg0LCAxNjA1ODcsIDE2MDU5MCwgMTYwNTkzLCAKKyAgICAxNjA1OTYsIDE2MDU5OSwgMTYwNjAyLCAxNjA2MDUsIDE2MDYwOCwgMTYwNjExLCAxNjA2MTQsIDE2MDYxNywgMTYwNjIwLCAKKyAgICAxNjA2MjMsIDE2MDYyNiwgMTYwNjI5LCAxNjA2MzIsIDE2MDYzNSwgMTYwNjM4LCAxNjA2NDEsIDE2MDY0NCwgMTYwNjQ3LCAKKyAgICAxNjA2NTAsIDE2MDY1MywgMTYwNjU2LCAxNjA2NTksIDE2MDY2MiwgMTYwNjY1LCAxNjA2NjgsIDE2MDY3MSwgMTYwNjc0LCAKKyAgICAxNjA2NzcsIDE2MDY4MCwgMTYwNjgzLCAxNjA2ODYsIDE2MDY4OSwgMTYwNjkyLCAxNjA2OTUsIDE2MDY5OCwgMTYwNzAxLCAKKyAgICAxNjA3MDQsIDE2MDcwNywgMTYwNzEwLCAxNjA3MTMsIDE2MDcxNiwgMTYwNzE5LCAxNjA3MjIsIDE2MDcyNSwgMTYwNzI4LCAKKyAgICAxNjA3MzEsIDE2MDczNCwgMTYwNzM3LCAxNjA3NDAsIDE2MDc0MywgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU1LCAKKyAgICAxNjA3NTgsIDE2MDc2MSwgMTYwNzY0LCAxNjA3NjcsIDE2MDc3MCwgMTYwNzczLCAxNjA3NzYsIDE2MDc3OSwgMTYwNzgyLCAKKyAgICAxNjA3ODUsIDE2MDc4OCwgMTYwNzkxLCAxNjA3OTQsIDE2MDc5NywgMTYwODAwLCAxNjA4MDMsIDE2MDgwNiwgMTYwODA5LCAKKyAgICAxNjA4MTIsIDE2MDgxNSwgMTYwODE4LCAxNjA4MjEsIDE2MDgyNCwgMTYwODI3LCAxNjA4MzAsIDE2MDgzMywgMTYwODM2LCAKKyAgICAxNjA4MzksIDE2MDg0MiwgMTYwODQ1LCAxNjA4NDgsIDE2MDg1MSwgMTYwODU0LCAxNjA4NTcsIDE2MDg2MCwgMTYwODYzLCAKKyAgICAxNjA4NjYsIDE2MDg2OSwgMTYwODcyLCAxNjA4NzUsIDE2MDg3OCwgMTYwODgxLCAxNjA4ODQsIDE2MDg4NywgMTYwODkwLCAKKyAgICAxNjA4OTMsIDE2MDg5NiwgMTYwODk5LCAxNjA5MDIsIDE2MDkwNSwgMTYwOTA4LCAxNjA5MTEsIDE2MDkxNCwgMTYwOTE3LCAKKyAgICAxNjA5MjAsIDE2MDkyMywgMTYwOTI2LCAxNjA5MjksIDE2MDkzMiwgMTYwOTM1LCAxNjA5MzgsIDE2MDk0MSwgMTYwOTQ0LCAKKyAgICAxNjA5NDcsIDE2MDk1MCwgMTYwOTUzLCAxNjA5NTYsIDE2MDk1OSwgMTYwOTYyLCAxNjA5NjUsIDE2MDk2OCwgMTYwOTcxLCAKKyAgICAxNjA5NzQsIDE2MDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwOTgwLCAKKyAgICAxNjA5ODIsIDE2MDk4NCwgMTYwOTg5LCAxNjA5OTEsIDE2MDk5NiwgMTYwOTk4LCAxNjEwMDMsIDE2MTAwNSwgMTYxMDEwLCAKKyAgICAxNjEwMTIsIDE2MTAxNCwgMTYxMDE2LCAxNjEwMTgsIDE2MTAyMCwgMTYxMDIyLCAxNjEwMjQsIDE2MTAyNiwgMTYxMDI4LCAKKyAgICAxNjEwMzEsIDE2MTAzNSwgMTYxMDM3LCAxNjEwMzksIDE2MTA0MywgMTYxMDQ3LCAxNjEwNTIsIDE2MTA1NCwgMTYxMDU2LCAKKyAgICAxNjEwNTgsIDE2MTA2MiwgMTYxMDY1LCAxNjEwNjcsIDE2MTA3MSwgMTYxMDczLCAxNjEwNzcsIDE2MTA3OSwgMTYxMDgzLCAKKyAgICAxNjEwODYsIDE2MTA4OCwgMTYxMDkyLCAxNjEwOTYsIDE2MTA5OCwgMTYxMTA0LCAxNjExMDYsIDE2MTExMSwgMTYxMTEzLCAKKyAgICAxNjExMTgsIDE2MTEyMCwgMTYxMTI1LCAxNjExMjcsIDE2MTEzMiwgMTYxMTM0LCAxNjExMzcsIDE2MTEzOSwgMTYxMTQzLCAKKyAgICAxNjExNDUsIDE2MTE1MiwgMTYxMTU0LCAxNjExNTYsIDE2MTE1OCwgMTYxMTYzLCAxNjExNjUsIDE2MTE2NywgMTYxMTY5LCAKKyAgICAxNjExNzEsIDE2MTE3MywgMTYxMTc4LCAxNjExODIsIDE2MTE4NCwgMTYxMTg5LCAxNjExOTMsIDE2MTE5NSwgMTYxMjAwLCAKKyAgICAxNjEyMDQsIDE2MTIwNiwgMTYxMjExLCAxNjEyMTUsIDE2MTIxNywgMTYxMjE5LCAxNjEyMjEsIDE2MTIyMywgMTYxMjI3LCAKKyAgICAxNjEyMjksIDE2MTIzNCwgMTYxMjM2LCAxNjEyNDIsIDE2MTI0NCwgMTYxMjUwLCAxNjEyNTIsIDE2MTI1NCwgMTYxMjU2LCAKKyAgICAxNjEyNjAsIDE2MTI2MiwgMTYxMjY5LCAxNjEyNzEsIDE2MTI3OCwgMTYxMjgwLCAxNjEyODUsIDE2MTI5MSwgMTYxMjkzLCAKKyAgICAxNjEyOTksIDE2MTMwNiwgMTYxMzA4LCAxNjEzMTQsIDE2MTMxOSwgMTYxMzIxLCAxNjEzMjcsIDE2MTMzMywgMTYxMzM1LCAKKyAgICAxNjEzNDEsIDE2MTM0NywgMTYxMzQ5LCAxNjEzNTUsIDE2MTM1OSwgMTYxMzYxLCAxNjEzNjYsIDE2MTM2OCwgMTYxMzcwLCAKKyAgICAxNjEzNzUsIDE2MTM3NywgMTYxMzc5LCAxNjEzODUsIDE2MTM4NywgMTYxMzkyLCAxNjEzOTYsIDE2MTM5OCwgMTYxNDAzLCAKKyAgICAxNjE0MDcsIDE2MTQwOSwgMTYxNDE1LCAxNjE0MTcsIDE2MTQyMSwgMTYxNDIzLCAxNjE0MjcsIDE2MTQyOSwgMTYxNDM2LCAKKyAgICAxNjE0NDMsIDE2MTQ0NSwgMTYxNDUyLCAxNjE0NTksIDE2MTQ2MSwgMTYxNDY2LCAxNjE0NjgsIDE2MTQ3NSwgMTYxNDc3LCAKKyAgICAxNjE0ODIsIDE2MTQ4NCwgMTYxNDkwLCAxNjE0OTIsIDE2MTQ5NiwgMTYxNDk4LCAxNjE1MDQsIDE2MTUwNiwgMTYxNTEwLCAKKyAgICAxNjE1MTIsIDE2MTUxOCwgMTYxNTIwLCAxNjE1MjIsIDE2MTUyNCwgMTYxNTI5LCAxNjE1MzQsIDE2MTUzNiwgMTYxNTM4LCAKKyAgICAxNjE1NDgsIDE2MTU1MiwgMTYxNTU5LCAxNjE1NjYsIDE2MTU3MSwgMTYxNTc2LCAxNjE1ODgsIDE2MTU5MCwgMTYxNTkyLCAKKyAgICAxNjE1OTQsIDE2MTU5NiwgMTYxNTk4LCAxNjE2MDAsIDE2MTYwMiwgMTYxNjA0LCAxNjE2MDYsIDE2MTYwOCwgMTYxNjEwLCAKKyAgICAxNjE2MTIsIDE2MTYxNCwgMTYxNjE2LCAxNjE2MTgsIDE2MTYyMCwgMTYxNjIyLCAxNjE2MjQsIDE2MTYyNiwgMTYxNjI4LCAKKyAgICAxNjE2MzAsIDE2MTYzNiwgMTYxNjQzLCAxNjE2NDgsIDE2MTY1NiwgMTYxNjY0LCAxNjE2NjksIDE2MTY4MCwgMTYxNjgyLCAKKyAgICAxNjE2ODQsIDE2MTY4NiwgMTYxNjg4LCAxNjE2OTAsIDE2MTY5MiwgMTYxNjk0LCAxNjE2OTYsIDE2MTY5OCwgMTYxNzAwLCAKKyAgICAxNjE3MDIsIDE2MTcwNCwgMTYxNzA2LCAxNjE3MDgsIDE2MTcxMCwgMTYxNzEyLCAxNjE3MTcsIDE2MTcxOSwgMTYxNzIxLCAKKyAgICAxNjE3MjcsIDE2MTczOSwgMTYxNzUwLCAxNjE3NTIsIDE2MTc1NCwgMTYxNzU2LCAxNjE3NTgsIDE2MTc2MCwgMTYxNzYyLCAKKyAgICAxNjE3NjQsIDE2MTc2NiwgMTYxNzY4LCAxNjE3NzAsIDE2MTc3MiwgMTYxNzc0LCAxNjE3NzYsIDE2MTc3OCwgMTYxNzgwLCAKKyAgICAxNjE3ODIsIDE2MTc4NCwgMTYxNzg2LCAxNjE3ODgsIDE2MTc5MCwgMTYxNzkyLCAxNjE3OTQsIDE2MTc5NiwgMTYxNzk4LCAKKyAgICAxNjE4MDAsIDE2MTgwMiwgMTYxODA0LCAxNjE4MDYsIDE2MTgwOCwgMTYxODEwLCAxNjE4MTIsIDE2MTgxNCwgMTYxODE2LCAKKyAgICAxNjE4MTgsIDE2MTgyMCwgMTYxODIyLCAxNjE4MjQsIDE2MTgyNiwgMTYxODI4LCAxNjE4MzAsIDE2MTgzMiwgMTYxODM0LCAKKyAgICAxNjE4MzYsIDE2MTgzOCwgMTYxODQwLCAxNjE4NDIsIDE2MTg0NCwgMTYxODQ2LCAxNjE4NDgsIDE2MTg1MCwgMTYxODUyLCAKKyAgICAxNjE4NTQsIDE2MTg1NiwgMTYxODU4LCAxNjE4NjAsIDE2MTg2MiwgMTYxODY0LCAxNjE4NjYsIDE2MTg2OCwgMTYxODcwLCAKKyAgICAxNjE4NzIsIDE2MTg3NCwgMTYxODc2LCAxNjE4NzgsIDE2MTg4MCwgMTYxODgyLCAxNjE4ODQsIDE2MTg4NiwgMTYxODg4LCAKKyAgICAxNjE4OTAsIDE2MTg5MiwgMTYxODk0LCAxNjE4OTYsIDE2MTg5OCwgMTYxOTAwLCAxNjE5MDIsIDE2MTkwNCwgMTYxOTA2LCAKKyAgICAxNjE5MDgsIDE2MTkxMCwgMTYxOTEyLCAxNjE5MTQsIDE2MTkxNiwgMTYxOTE4LCAxNjE5MjAsIDE2MTkyMiwgMTYxOTI0LCAKKyAgICAxNjE5MjYsIDE2MTkyOCwgMTYxOTMwLCAxNjE5MzIsIDE2MTkzNCwgMTYxOTM2LCAxNjE5MzgsIDE2MTk0MCwgMTYxOTQyLCAKKyAgICAxNjE5NDQsIDE2MTk0NiwgMTYxOTQ4LCAxNjE5NTAsIDE2MTk1MiwgMTYxOTU0LCAxNjE5NTYsIDE2MTk1OCwgMTYxOTYwLCAKKyAgICAxNjE5NjIsIDE2MTk2NCwgMTYxOTY2LCAxNjE5NjgsIDE2MTk3MCwgMTYxOTcyLCAxNjE5NzQsIDE2MTk3NiwgMTYxOTc4LCAKKyAgICAxNjE5ODAsIDE2MTk4MiwgMTYxOTg0LCAxNjE5ODYsIDE2MTk4OCwgMTYxOTkwLCAxNjE5OTIsIDE2MTk5NCwgMTYxOTk2LCAKKyAgICAxNjE5OTgsIDE2MjAwMCwgMTYyMDAyLCAxNjIwMDQsIDE2MjAwNiwgMTYyMDA4LCAxNjIwMTAsIDE2MjAxMiwgMTYyMDE0LCAKKyAgICAxNjIwMTYsIDE2MjAxOCwgMTYyMDIwLCAxNjIwMjIsIDE2MjAyNCwgMTYyMDI2LCAxNjIwMjgsIDE2MjAzMCwgMTYyMDMyLCAKKyAgICAxNjIwMzQsIDE2MjAzNiwgMTYyMDM4LCAxNjIwNDAsIDE2MjA0MiwgMTYyMDQ0LCAxNjIwNDYsIDE2MjA0OCwgMTYyMDUwLCAKKyAgICAxNjIwNTIsIDE2MjA1NCwgMTYyMDU2LCAxNjIwNTgsIDE2MjA2MCwgMTYyMDYyLCAxNjIwNjQsIDE2MjA2NiwgMTYyMDY4LCAKKyAgICAxNjIwNzAsIDE2MjA3MiwgMTYyMDc0LCAxNjIwNzYsIDE2MjA3OCwgMTYyMDgwLCAxNjIwODIsIDE2MjA4NCwgMTYyMDg2LCAKKyAgICAxNjIwODgsIDE2MjA5MCwgMTYyMDkyLCAxNjIwOTQsIDE2MjA5NiwgMTYyMDk4LCAxNjIxMDAsIDE2MjEwMiwgMTYyMTA0LCAKKyAgICAxNjIxMDYsIDE2MjEwOCwgMTYyMTEwLCAxNjIxMTIsIDE2MjExNCwgMTYyMTE2LCAxNjIxMTgsIDE2MjEyMCwgMTYyMTIyLCAKKyAgICAxNjIxMjQsIDE2MjEyNiwgMTYyMTI4LCAxNjIxMzAsIDE2MjEzMiwgMTYyMTM0LCAxNjIxMzYsIDE2MjEzOCwgMTYyMTQwLCAKKyAgICAxNjIxNDIsIDE2MjE0NCwgMTYyMTQ2LCAxNjIxNDgsIDE2MjE1MCwgMTYyMTUyLCAxNjIxNTQsIDE2MjE1NiwgMTYyMTU4LCAKKyAgICAxNjIxNjAsIDE2MjE2MiwgMTYyMTY0LCAxNjIxNjYsIDE2MjE2OCwgMTYyMTcwLCAxNjIxNzIsIDE2MjE3NCwgMTYyMTc2LCAKKyAgICAxNjIxNzgsIDE2MjE4MCwgMTYyMTgyLCAxNjIxODQsIDE2MjE4NiwgMTYyMTg4LCAxNjIxOTAsIDE2MjE5MiwgMTYyMTk0LCAKKyAgICAxNjIxOTYsIDE2MjE5OCwgMTYyMjAwLCAxNjIyMDIsIDE2MjIwNCwgMTYyMjA2LCAxNjIyMDgsIDE2MjIxMCwgMTYyMjEyLCAKKyAgICAxNjIyMTQsIDE2MjIxNiwgMTYyMjE4LCAxNjIyMjAsIDE2MjIyMiwgMTYyMjI0LCAxNjIyMjYsIDE2MjIyOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTYyMjMwLCAxNjIyNDAsIDE2MjI1MCwgMTYyMjU5LCAxNjIyNjgsIDE2MjI4MSwgMTYyMjk0LCAxNjIzMDYsIAorICAgIDE2MjMxOCwgMTYyMzI4LCAxNjIzMzgsIDE2MjM0OCwgMTYyMzU4LCAxNjIzNjksIDE2MjM4MCwgMTYyMzkwLCAxNjIzOTksIAorICAgIDE2MjQwOCwgMTYyNDE3LCAxNjI0MzAsIDE2MjQ0MywgMTYyNDU1LCAxNjI0NjcsIDE2MjQ3NywgMTYyNDg3LCAxNjI0OTcsIAorICAgIDE2MjUwNywgMTYyNTE2LCAxNjI1MjUsIDE2MjUzNSwgMTYyNTQ1LCAxNjI1NTQsIDE2MjU2MywgMTYyNTczLCAxNjI1ODMsIAorICAgIDE2MjU5MiwgMTYyNjAxLCAxNjI2MTEsIDE2MjYyMSwgMTYyNjMyLCAxNjI2NDMsIDE2MjY1MywgMTYyNjY2LCAxNjI2NzcsIAorICAgIDE2MjY5MSwgMTYyNjk5LCAxNjI3MTAsIDE2MjcxOCwgMTYyNzI2LCAxNjI3MzQsIDE2Mjc0MiwgMTYyNzUwLCAxNjI3NTgsIAorICAgIDE2Mjc2NywgMTYyNzc2LCAxNjI3ODYsIDE2Mjc5NiwgMTYyODA1LCAxNjI4MTQsIDE2MjgyNCwgMTYyODM0LCAxNjI4NDIsIAorICAgIDE2Mjg1MCwgMTYyODU3LCAxNjI4NjcsIDE2Mjg3NiwgMTYyODg0LCAxNjI4OTEsIDE2MjkwMSwgMTYyOTEwLCAxNjI5MjEsIAorICAgIDE2MjkzMiwgMTYyOTQ0LCAxNjI5NTUsIDE2Mjk2NSwgMTYyOTc2LCAxNjI5ODYsIDE2Mjk5NywgMTYzMDA1LCAxNjMwMDksIAorICAgIDE2MzAxMywgMTYzMDE3LCAxNjMwMjEsIDE2MzAyNSwgMTYzMDI5LCAxNjMwMzMsIDE2MzAzNywgMTYzMDQxLCAxNjMwNDUsIAorICAgIDE2MzA0OSwgMTYzMDUzLCAxNjMwNTYsIDE2MzA1OSwgMTYzMDYzLCAxNjMwNjcsIDE2MzA3MSwgMTYzMDc1LCAxNjMwNzksIAorICAgIDE2MzA4MywgMTYzMDg3LCAxNjMwOTEsIDE2MzA5NCwgMTYzMDk4LCAxNjMxMDIsIDE2MzEwNiwgMTYzMTEwLCAxNjMxMTQsIAorICAgIDE2MzExOCwgMTYzMTIyLCAxNjMxMjYsIDE2MzEzMCwgMTYzMTM0LCAxNjMxMzgsIDE2MzE0MiwgMTYzMTQ2LCAxNjMxNTAsIAorICAgIDE2MzE1NCwgMTYzMTU4LCAxNjMxNjIsIDE2MzE2NiwgMTYzMTcwLCAxNjMxNzQsIDE2MzE3OCwgMTYzMTgyLCAxNjMxODYsIAorICAgIDE2MzE5MCwgMTYzMTk0LCAxNjMxOTgsIDE2MzIwMiwgMTYzMjA2LCAxNjMyMTAsIDE2MzIxNCwgMTYzMjE4LCAxNjMyMjIsIAorICAgIDE2MzIyNiwgMTYzMjMwLCAxNjMyMzQsIDE2MzIzOCwgMTYzMjQyLCAxNjMyNDYsIDE2MzI1MCwgMTYzMjU0LCAxNjMyNTgsIAorICAgIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzAsIDE2MzI3NCwgMTYzMjc4LCAxNjMyODIsIDE2MzI4NiwgMTYzMjkwLCAxNjMyOTQsIAorICAgIDE2MzI5OCwgMTYzMzAyLCAxNjMzMDYsIDE2MzMxMCwgMTYzMzE0LCAxNjMzMTgsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMzAsIAorICAgIDE2MzMzNCwgMTYzMzM4LCAxNjMzNDIsIDE2MzM0NiwgMTYzMzUwLCAxNjMzNTQsIDE2MzM1OCwgMTYzMzYyLCAxNjMzNjYsIAorICAgIDE2MzM3MCwgMTYzMzc0LCAxNjMzNzgsIDE2MzM4MiwgMTYzMzg2LCAxNjMzOTAsIDE2MzM5NCwgMTYzMzk4LCAxNjM0MDEsIAorICAgIDE2MzQwNSwgMTYzNDA5LCAxNjM0MTMsIDE2MzQxNywgMTYzNDIxLCAxNjM0MjUsIDE2MzQyOSwgMTYzNDMzLCAxNjM0MzcsIAorICAgIDE2MzQ0MSwgMTYzNDQ1LCAxNjM0NDksIDE2MzQ1MywgMTYzNDU3LCAxNjM0NjEsIDE2MzQ2NSwgMTYzNDY5LCAxNjM0NzMsIAorICAgIDE2MzQ3NywgMTYzNDgxLCAxNjM0ODUsIDE2MzQ4OSwgMTYzNDkzLCAxNjM0OTcsIDE2MzUwMSwgMTYzNTA1LCAxNjM1MDksIAorICAgIDE2MzUxMywgMTYzNTE3LCAxNjM1MjEsIDE2MzUyNSwgMTYzNTI5LCAxNjM1MzMsIDE2MzUzNywgMTYzNTQxLCAxNjM1NDUsIAorICAgIDE2MzU0OSwgMTYzNTUzLCAxNjM1NTcsIDE2MzU2MSwgMTYzNTY1LCAxNjM1NjksIDE2MzU3MywgMTYzNTc3LCAxNjM1ODEsIAorICAgIDE2MzU4NSwgMTYzNTg5LCAxNjM1OTMsIDE2MzU5NywgMTYzNjAxLCAxNjM2MDUsIDE2MzYwOSwgMTYzNjEzLCAxNjM2MTcsIAorICAgIDE2MzYyMSwgMTYzNjI1LCAxNjM2MjksIDE2MzYzMywgMTYzNjM3LCAxNjM2NDEsIDE2MzY0NSwgMTYzNjQ5LCAxNjM2NTMsIAorICAgIDE2MzY1NywgMTYzNjYxLCAxNjM2NjUsIDE2MzY2OSwgMTYzNjczLCAxNjM2NzcsIDE2MzY4MSwgMTYzNjg1LCAxNjM2ODksIAorICAgIDE2MzY5MywgMTYzNjk3LCAxNjM3MDEsIDE2MzcwNSwgMTYzNzA5LCAxNjM3MTMsIDE2MzcxNywgMTYzNzIxLCAxNjM3MjUsIAorICAgIDE2MzcyOSwgMTYzNzMzLCAxNjM3MzcsIDE2Mzc0MSwgMTYzNzQ1LCAxNjM3NDksIDE2Mzc1MywgMTYzNzU3LCAxNjM3NjEsIAorICAgIDE2Mzc2NSwgMTYzNzY5LCAxNjM3NzMsIDE2Mzc3NywgMTYzNzgxLCAxNjM3ODUsIDE2Mzc4OSwgMTYzNzkzLCAxNjM3OTcsIAorICAgIDE2MzgwMSwgMTYzODA1LCAxNjM4MDksIDE2MzgxMywgMTYzODE3LCAxNjM4MjEsIDE2MzgyNSwgMTYzODI5LCAxNjM4MzMsIAorICAgIDE2MzgzNywgMTYzODQxLCAxNjM4NDUsIDE2Mzg0OSwgMTYzODUzLCAxNjM4NTcsIDE2Mzg2MSwgMTYzODY1LCAxNjM4NjksIAorICAgIDE2Mzg3MywgMTYzODc3LCAxNjM4ODEsIDE2Mzg4NSwgMTYzODg5LCAxNjM4OTMsIDE2Mzg5NywgMTYzOTAxLCAxNjM5MDUsIAorICAgIDE2MzkwOSwgMTYzOTEzLCAxNjM5MTcsIDE2MzkyMSwgMTYzOTI1LCAxNjM5MjksIDE2MzkzMywgMTYzOTM3LCAxNjM5NDEsIAorICAgIDE2Mzk0NSwgMTYzOTQ5LCAxNjM5NTMsIDE2Mzk1NywgMTYzOTYxLCAxNjM5NjUsIDE2Mzk2OSwgMTYzOTczLCAxNjM5NzcsIAorICAgIDE2Mzk4MSwgMTYzOTg1LCAxNjM5ODksIDE2Mzk5MywgMTYzOTk3LCAxNjQwMDEsIDE2NDAwNSwgMTY0MDA5LCAxNjQwMTMsIAorICAgIDE2NDAxNywgMTY0MDIxLCAxNjQwMjUsIDE2NDAyOSwgMTY0MDMzLCAxNjQwMzcsIDE2NDA0MSwgMTY0MDQ1LCAxNjQwNDksIAorICAgIDE2NDA1MywgMTY0MDU3LCAxNjQwNjEsIDE2NDA2NSwgMTY0MDY5LCAxNjQwNzMsIDE2NDA3NywgMTY0MDgxLCAxNjQwODUsIAorICAgIDE2NDA4OSwgMTY0MDkzLCAxNjQwOTcsIDE2NDEwMSwgMTY0MTA1LCAxNjQxMDksIDE2NDExMywgMTY0MTE3LCAxNjQxMjEsIAorICAgIDE2NDEyNSwgMTY0MTI5LCAxNjQxMzMsIDE2NDEzNywgMTY0MTQxLCAxNjQxNDUsIDE2NDE0OSwgMTY0MTUzLCAxNjQxNTcsIAorICAgIDE2NDE2MSwgMTY0MTY1LCAxNjQxNzAsIDE2NDE3NSwgMTY0MTgwLCAxNjQxODQsIDE2NDE5MCwgMTY0MTk3LCAxNjQyMDQsIAorICAgIDE2NDIxMSwgMTY0MjE4LCAxNjQyMjUsIDE2NDIzMiwgMTY0MjM5LCAxNjQyNDYsIDE2NDI1MywgMTY0MjYwLCAxNjQyNjcsIAorICAgIDE2NDI3NCwgMTY0MjgxLCAxNjQyODgsIDE2NDI5NSwgMTY0MzAyLCAxNjQzMDgsIDE2NDMxNSwgMTY0MzIyLCAxNjQzMjksIAorICAgIDE2NDMzNiwgMTY0MzQzLCAxNjQzNTAsIDE2NDM1NywgMTY0MzY0LCAxNjQzNzEsIDE2NDM3OCwgMTY0Mzg1LCAxNjQzOTIsIAorICAgIDE2NDM5OSwgMTY0NDA2LCAxNjQ0MTIsIDE2NDQxOSwgMTY0NDI2LCAxNjQ0MzUsIDE2NDQ0NCwgMTY0NDUzLCAxNjQ0NjIsIAorICAgIDE2NDQ2NywgMTY0NDcyLCAxNjQ0NzgsIDE2NDQ4NCwgMTY0NDkwLCAxNjQ0OTYsIDE2NDUwMiwgMTY0NTA4LCAxNjQ1MTQsIAorICAgIDE2NDUyMCwgMTY0NTI2LCAxNjQ1MzIsIDE2NDUzOCwgMTY0NTQ0LCAxNjQ1NDksIDE2NDU1NSwgMTY0NTY1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBjb2RlX2hhc2hbXSA9IHsKLSAgICA3NDIyNCwgNDg1MSwgMCwgNzgxNTYsIDc4NDk5LCAxMjg2ODUsIDc5MjksIDAsIDE5NDY4MiwgMTI3NzY2LCA3ODUwMCwgCi0gICAgNjY0ODAsIDAsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDAsIDU5NiwgOTgzODIxLCA2OTg1MCwgMTMxOTIsIDg2NTEsIDAsIDAsIAotICAgIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAwLCAwLCA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgCi0gICAgNDIzMywgNDIzNCwgNDIzMiwgOTE3ODM2LCA3NDQxNSwgMTIwMjEwLCA2Mzg0LCA5MTc4NDAsIDc4MTA4LCA4ODUxLCAwLCAKLSAgICAxMjg1NTMsIDAsIDQxNjAxLCA4ODc0LCA5ODM3ODMsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIAotICAgIDkxODgsIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAKLSAgICAzNDA0LCAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgOTQwMTQsIAotICAgIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDAsIDAsIDY1OTA4LCA5ODM0LCAzMDU1LCA5ODUyLCA5ODM4NjAsIAotICAgIDY1Mjg4LCAwLCAxMTM5OCwgMCwgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgCi0gICAgMzM1MCwgMTIwODE3LCA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIAotICAgIDc4NTczLCAwLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAKLSAgICAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCAKLSAgICA2NDEyOCwgMTI4NTg3LCAwLCAwLCA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgOTgzODQ0LCA0MzM3NCwgOTc3OSwgCi0gICAgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAKLSAgICAyODQzLCA1MzU1LCAxMjc5MjgsIDk4Mzk2NSwgMCwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDAsIDk4MzYyMCwgMCwgCi0gICAgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgMCwgMTA2MDIsIDgwMCwgNDI0OTksIAotICAgIDY2MTg2LCAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDExODg1OSwgCi0gICAgMTk0NjYxLCA2NDQ2OCwgMTA5MDYsIDEzNTMsIDY5NjAsIDAsIDAsIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgCi0gICAgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAwLCA3NDQwMSwgOTE3ODExLCA1ODcsIDAsIDEyODEzMSwgCi0gICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgOTgzOTQ5LCAxMjIxMywgMTk0Njc4LCAKLSAgICAyNzYwLCAwLCAwLCAwLCAxOTQ3OTQsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDAsIDY0MTUxLCA2NDE1MCwgMTI2NzksIAotICAgIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMCwgMCwgNDgzOSwgMCwgMCwgMTg3NCwgMTE5MDE2LCAwLCAKLSAgICA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgCi0gICAgOTI1NTAsIDY0MTIyLCA3NDQyMiwgNjY2MDksIDAsIDY0MTE3LCA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCAKLSAgICA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCAxMjczMDYsIAotICAgIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIAotICAgIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgCi0gICAgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCAKLSAgICA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAKLSAgICAxMjgzNDQsIDAsIDExNzYsIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjg2NjcsIDk4MzgzMSwgMCwgMTIwNTE5LCA2NjM3NiwgCi0gICAgNjYyNDIsIDExNDE1LCA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDAsIDAsIDc3MTQsIDY2MjIyLCAKLSAgICA2OTkwMiwgNzc2OCwgMCwgNDE5OSwgNjQ3MDgsIDk4MzQyMSwgMCwgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKLSAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgMCwgMTI2NTcwLCAwLCA2NDYxNSwgNDE5MTUsIAotICAgIDAsIDEyMDc1LCA3MDA2MiwgMCwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIDAsIDEyNjg1LCAxMjc5MDQsIAotICAgIDg0MDgsIDY0NzA0LCAwLCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCAKLSAgICA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgCi0gICAgOTMyMiwgMCwgMTIwNTk1LCA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAKLSAgICAwLCAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgCi0gICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIAotICAgIDAsIDQyNjI3LCAwLCAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDk4MzYwMCwgNDI4NzEsIDAsIAotICAgIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA5MjQ5NSwgMCwgCi0gICAgOTgzNDY2LCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDAsIDEyMDE5OSwgOTE3ODk3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKLSAgICA2NTAxNCwgMCwgMCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAKLSAgICAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgOTgzMTE4LCAxMDIwNywgODc4OSwgCi0gICAgOTgzMjI1LCAwLCAwLCA5ODM0NzIsIDkyMzQsIDAsIDYxODIsIDk4MzQ3NCwgNjUwNTgsIDAsIDk4MzQ3OCwgOTgzNDc1LCAwLCAKLSAgICA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgMCwgCi0gICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAwLCAwLCA2NTgxLCA1NTc2LCAwLCA2NDQwNSwgNDEzMzcsIDAsIAotICAgIDQxNjMxLCA4OTQ3LCA2ODM5MCwgMTI3ODQ0LCA0MTY5NCwgMCwgMCwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDAsIDY0NjE4LCAKLSAgICAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDEyNzAxMCwgMTIwNTA0LCAxOTQ4MjgsIDAsIDUwNTgsIDQxMDEwLCAKLSAgICA5OTkyLCAxMjgyOTksIDUwNTcsIDAsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIDAsIDE0MzcsIAotICAgIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAwLCAxMjg1MjksIAotICAgIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAotICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDk4Mzk1NiwgMTI3NTI0LCAwLCAwLCAwLCAKLSAgICAwLCAxOTUwODMsIDAsIDk4Mzg0MywgMCwgMCwgMCwgMCwgMCwgOTM0MSwgMTE5NTk2LCAyMzc5LCAxMTMyNSwgMCwgNjQ2NjgsIAotICAgIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDExOTE3NSwgOTE3OTQwLCAyMzY5LCAwLCA5ODM5NzIsIDk4Mzk3MywgCi0gICAgMTE5MjM1LCA3NDA5MiwgNzM5MzYsIDcwMDgsIDQzNjYwLCAwLCAwLCAwLCAyMzY3LCAxMjc4MjcsIDk4Mzg1NywgMjY0LCAKLSAgICAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMCwgNjAxOSwgMCwgMCwgNjk2MSwgMCwgMTE4ODM5LCAKLSAgICAwLCA4ODAwLCAwLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDE5NDY3NiwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIAotICAgIDY1MDQyLCAxMTg3OTcsIDEyMDgwMCwgOTgzMDQwLCAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIAotICAgIDk4MzEyOCwgMCwgNTA3NCwgNTA3MywgMTI4NzkwLCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA5ODM1NjEsIDUwNzIsIDkzOTc3LCAKLSAgICA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCAKLSAgICA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAKLSAgICAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA3NDQxOCwgMTI4MTksIDAsIDUwNzEsIDAsIDM2NDIsIDAsIDUwNzAsIAotICAgIDEwMDQyLCAxMTg4MzUsIDM5ODcsIDUwNjgsIDAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgCi0gICAgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIAotICAgIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIAotICAgIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMjAyMTEsIAotICAgIDAsIDExODk4NSwgNDkyOCwgMCwgMCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAKLSAgICAxMjc0ODUsIDExOTg1NSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgMTI3NDc0LCAxMjc0NzcsIDE2NzIsIDYyMDUsIAotICAgIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgMTI3NDY2LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCAKLSAgICAxMjY1MDMsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCAxMjAxMTMsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIAotICAgIDk1ODAsIDAsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDAsIDgxNDMsIDEyNzExNSwgCi0gICAgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAwLCA1MDc2LCAwLCAKLSAgICAxOTQ2MDksIDAsIDgyOTUsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAxMjAxMDIsIDcxMzgsIAotICAgIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIDY0Nzc1LCA1MDM2LCAKLSAgICA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAKLSAgICAxMjcyNzEsIDUwMzMsIDEyNzI3MywgMTI3MjcyLCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIAotICAgIDQzNzA0LCAxMjcyNjQsIDEyNzI1MSwgNjc1ODgsIDExOTAwMCwgMTI3MjUyLCAxMjcyNTUsIDg4NTgsIDY0MDksIDEyNzI1NiwgCi0gICAgMTIwMjUyLCAxMjgxMDAsIDAsIDAsIDY2MzIxLCAwLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgNjA5NCwgCi0gICAgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgOTgzMTc3LCA1MDMwLCAwLCAwLCAwLCAKLSAgICA3Mzg2OSwgOTYyMiwgMCwgNjk5NDQsIDY3ODcsIDAsIDAsIDAsIDk4MzU4MywgMTA1NDQsIDEyOTE5LCAwLCA5MjIxOCwgMCwgCi0gICAgMCwgNjk5MDYsIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgMTE5OTM1LCA3NjEzLCAKKyAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA2NjkxMCwgMTk0NjgyLCAxMjc3NjYsIAorICAgIDc4NTAwLCA2NjQ4MCwgNjQwMzgsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDcyMzg1LCA1OTYsIDk4MzgyMSwgNjk4NTAsIAorICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDEyNjU0MiwgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDExOTg1NiwgMTEzNzUyLCAKKyAgICA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgNDIzMywgNDIzNCwgNDIzMiwgMTIwODg5LCA3NDQxNSwgCisgICAgMTIwMjEwLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCisgICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgMCwgCisgICAgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKKyAgICA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAxMTkyMDUsIDY2NTc3LCAKKyAgICA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgNjk5NzAsIDEyODM4NywgNjU5MDgsIDk4MzQsIDMwNTUsIAorICAgIDk4NTIsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgCisgICAgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIDY0MzE4LCAxOTQ2OTgsIDc4MTIxLCAzMzkwLCAKKyAgICA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIAorICAgIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAKKyAgICAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgCisgICAgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCAKKyAgICA2NjAyMSwgNzQ1MDksIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIAorICAgIDk4MzM0MiwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAxMTM3MjQsIDEyODg3MiwgMCwgMCwgNzIzOTMsIAorICAgIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAKKyAgICAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIAorICAgIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTI4Nzc5LCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCAKKyAgICA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCA5MTc5MDcsIDgyOTcxLCAKKyAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAKKyAgICAyNzYwLCA4MzI4NCwgODMyODUsIDc4NzA4LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCAKKyAgICA2NDE1MCwgMTI2NzksIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgCisgICAgMCwgMTg3NCwgMTE5MDE2LCAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIAorICAgIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgCisgICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKKyAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIAorICAgIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAKKyAgICAxMjg1NDUsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCAKKyAgICA5MDU2LCA2NDMxMywgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgCisgICAgNjMsIDcyMzMsIDkyMjEyLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAKKyAgICAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIAorICAgIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMTIxMjcxLCA5ODM2NDksIDc3MTQsIDY2MjIyLCA2OTkwMiwgCisgICAgNzc2OCwgNzI0MDMsIDQxOTksIDY0NzA4LCA2NTA2NCwgNzAxMTcsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMjY1NzAsIDEyMTI1NiwgCisgICAgNjQ2MTUsIDQxOTE1LCAwLCAxMjA3NSwgNDIwNDEsIDE5NDgyNSwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIAorICAgIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIAorICAgIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCA3NTAzMSwgCisgICAgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgNjQwOTUsIDY0MDk0LCAKKyAgICA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAxMTQzNCwgNjQwODMsIAorICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCA5OTI3LCA0MTMzNSwgNDExOCwgCisgICAgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDgzMzA5LCAyOTgsIDgzMzAzLCA4MzMwNCwgODMzMDUsIDQyNjI3LCAKKyAgICAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgNDI4NzEsIDAsIDE5OTIzLCAKKyAgICA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA4MzMxNCwgNzE0NDQsIDk4MzQ2OCwgCisgICAgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKKyAgICA2NTAxNCwgOTgzNDIyLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIDgzMDM5LCAxMTg5MDQsIAorICAgIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgCisgICAgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgOTIzNCwgOTE3ODk1LCA2MTgyLCAKKyAgICA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzQ4MCwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCAKKyAgICA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAxNjIyLCA3NzY3LCAxOTAwLCAKKyAgICA0MTMzOSwgMTE0NTgsIDExOTA2MSwgMCwgNjU4MSwgNTU3NiwgMTI4NjE4LCA0Mzg1NSwgNDEzMzcsIDAsIDQxNjMxLCAKKyAgICA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5ODM4NDgsIDcyMzk2LCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgOTE3ODcyLCAKKyAgICA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgMTIwNTA0LCAxOTQ4MjgsIDEyODk2MSwgNTA1OCwgCisgICAgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgOTE3OTQxLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAKKyAgICAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgCisgICAgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIAorICAgIDU3NzMsIDk3OCwgMTI4MTM0LCA5ODM2OTksIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCAKKyAgICA3NDEzNSwgOTc0OCwgOTgzOTU2LCAxMjc1MjQsIDAsIDk4MzMxNiwgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgMCwgCisgICAgOTgzMzEzLCA5ODMzMDIsIDAsIDEyNzg2NSwgMCwgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgOTE3OTAyLCAKKyAgICA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgCisgICAgMTI3OTY2LCAxMTkyMzUsIDcxODY4LCA3MzkzNiwgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIAorICAgIDEyNzgyNywgOTgzODU3LCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIAorICAgIDYwMTksIDEyODk3NSwgMCwgNjk2MSwgMCwgNzA0MzUsIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgCisgICAgNjE5MiwgMTE5NjEwLCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgCisgICAgMCwgNjcxNDksIDc0ODk5LCA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgCisgICAgNTA3MywgMTIxMTY0LCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MTIzMSwgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAwLCAKKyAgICAxOTYsIDk4MzE1NCwgMCwgOTgzOTM2LCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMCwgMTI3OTg3LCAxMjE0NTUsIDQyODQ3LCAKKyAgICA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDk4Mzk4MSwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCA3MDE4MSwgNDI1ODQsIDAsIAorICAgIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA2NDY2NywgMTI4MTksIDk4Mzg3MCwgNTA3MSwgCisgICAgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgOTgzNDYwLCA4OTA5LCAKKyAgICA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIAorICAgIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyODAyOCwgMCwgNjQ3MDksIDgzMjY5LCAKKyAgICAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAxMjcyMTgsIDAsIDk1MjYsIDQ5MjAsIAorICAgIDEyODYxNywgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTEzNzc5LCAKKyAgICAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgCisgICAgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAKKyAgICAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgCisgICAgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDkyNzYxLCAxMjc0NjIsIDcwMDUsIAorICAgIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMTI3OTAwLCAKKyAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCisgICAgMCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTI5MTgyLCAKKyAgICA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIDE5NDYxMSwgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgCisgICAgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIAorICAgIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAxMjEzMTMsIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCAKKyAgICA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDkyOTU3LCA2NzU4OCwgNjgwNjEsIDEyNDk4MywgCisgICAgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDEyMDI1MiwgMTI4MTAwLCAxMTkwMDcsIDAsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIAorICAgIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgCisgICAgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCAKKyAgICA2OTk0NCwgNjc4NywgNjczNjEsIDk4MzI3MCwgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCAwLCAwLCAKKyAgICA2OTkwNiwgMTIwNzg5LCA5ODMwNDEsIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgCiAgICAgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCAKLSAgICA0MzU2NywgNzQwNTYsIDkxNzkxMCwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCi0gICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgNzIxNSwgOTgzODM2LCAKLSAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDExOTYxOCwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCi0gICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3NDI2NCwgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCi0gICAgODE1MCwgMTM1OSwgNjc2NTIsIDEyNzMyOSwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAKLSAgICAxMjczMjQsIDEyNzMyMSwgOTIyNzksIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyNzMxOCwgMTI3MzE1LCAxMjI4MywgCi0gICAgMTYxNiwgMzc5NSwgMCwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMCwgMCwgMzIzOSwgCi0gICAgMTI3MzExLCAwLCAwLCA4NDMxLCAwLCA0MjE2NCwgMCwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgMTE5MDczLCA1MDQwLCAKLSAgICAwLCAwLCA5ODM0NDMsIDc4NDIwLCAwLCA1MDM5LCAwLCA3ODQxOCwgMCwgNTAzOCwgMCwgMCwgMTMxODQsIDc0MjkzLCAwLCAKLSAgICA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDAsIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDAsIDM4NjMsIDczOTA5LCA0ODM1LCAKLSAgICA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIAotICAgIDAsIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDAsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIAotICAgIDEwMDYsIDc0MjQwLCAwLCAxNTUwLCA4MjAxLCA3MzczNywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgCi0gICAgNzc5MDcsIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDcwMDczLCAyNDQwLCA2NTc4MCwgNzc5MTMsIDg0NDksIDAsIAotICAgIDUwMDgsIDk4MzU3MiwgMjExOCwgMCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKLSAgICAyMTMzLCAxMTE5LCAxMjcwNjgsIDIxMTQsIDIxMTYsIDI0NTUsIDAsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgCi0gICAgODcxNCwgOTgzODIwLCAyMTEzLCAwLCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCAKLSAgICA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIAotICAgIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDY2NjYsIAotICAgIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAwLCA5MjIzNywgCi0gICAgNzQ4MDcsIDAsIDUwNDgsIDUwNDcsIDAsIDAsIDAsIDkyMzEzLCAwLCA3NDQ5NywgOTIzOTUsIDgwODksIDY5MjksIDYzOSwgCi0gICAgOTgzNTYzLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCAKLSAgICA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgOTQwMTcsIDk4Mzk3NiwgMzUzMCwgOTc1MCwgMTI4MzE3LCAKLSAgICAwLCA2NjU2LCA0MjYxOCwgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgCi0gICAgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMCwgNzg1MywgNzQwNjgsIDc0MDA0LCA5NjY5LCAKLSAgICAxMjM0MSwgMTI3MDMsIDg0MDIsIDAsIDExOTA3MCwgOTE3NjAwLCA0MTc1MCwgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAwLCAKLSAgICAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg1MzQsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDAsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDAsIDE5NDU5MSwgMCwgCi0gICAgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDEyMDQzOSwgNDg5LCAwLCA0MjUwLCAxMjA0NDEsIDEyMDQ1MiwgNDMxNTEsIAotICAgIDk4MzE3OCwgMTk0ODUxLCA2NjIwMCwgMCwgMCwgMCwgNzg0MjMsIDAsIDAsIDg3MTEsIDYxODMsIDAsIDAsIDAsIDEyMDQ0OCwgCi0gICAgNzYyMywgMTE4OTI1LCAxMTg4ODksIDkyMzUsIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIAotICAgIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDAsIDEyNjU5NywgMTIwNDM1LCAwLCA3NzI2LCAwLCAxOTkyMiwgMjY3LCAKLSAgICAzMzkzLCA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCAKLSAgICA0MTYxMiwgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDk4MzM0OCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIAotICAgIDEyODAxNywgMCwgMTA2MjUsIDAsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgMTI3NTM3LCAxMzAxNCwgCi0gICAgMTMwMTMsIDAsIDY2NzMsIDAsIDAsIDAsIDEyNDM4LCAwLCA5ODMzNDIsIDAsIDk4Mzg4MCwgMTI2NjM4LCA5MDUzLCAKLSAgICAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDk4MzgyOCwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgOTE3NzkzLCAKLSAgICA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDAsIDEyNzk0MCwgOTgzMzQxLCA3NDU0NywgMTI2NTg1LCAKLSAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDE5NTAwMiwgMTE5MjM4LCAxOTUwMDQsIDc4MDk5LCAxMjcwODUsIDAsIAotICAgIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgMCwgNzg0NTgsIDY2NzI4LCAxODE2LCAwLCA0MjUzMywgMTY4LCAKLSAgICA0Mjg0NSwgNDg5OCwgNjQyOTgsIDk4MzE0MSwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAwLCA3OTEsIDkxNjIsIAotICAgIDY5NzcsIDAsIDc4ODg5LCA3NDU2MSwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAxMTkzMDMsIDk4MzQ0OSwgNzU1NywgCi0gICAgMTE5MzM5LCAxMTkzMDEsIDgyMzQsIDcyNDEsIDAsIDEyMDY3MSwgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgCi0gICAgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgCi0gICAgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgMjQ1MiwgNzgwODMsIDEyODgyNCwgCi0gICAgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDkxNzkxNywgNzEzMDIsIDQ0MDgsIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCAKLSAgICAxOTQ5OTAsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAKLSAgICAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgMCwgMCwgNDE5NTIsIDAsIAotICAgIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIAotICAgIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgMTI3MSwgOTgzNjQwLCAwLCAKLSAgICA2NjAyNCwgNDE0ODIsIDM4NjQsIDc0NTM5LCAwLCAzODc5LCAwLCAxMjk3OCwgNDE2NiwgNDU3NCwgMCwgNzU2NywgNzQ1OSwgCi0gICAgOTgzMTYwLCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgOTgzOTEyLCAwLCA0MTM4OCwgNjQ0NDYsIAotICAgIDQxMzkyLCA2NDI4OCwgNDEzODcsIDAsIDg3MDYsIDU1NTIsIDk4MzE4NywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCAKLSAgICA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCAwLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgCi0gICAgOTI2MjYsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIAotICAgIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDE5NTA2NywgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIAotICAgIDY1MDM3LCA0NTc3LCA2NDYyNCwgMCwgMCwgMCwgOTgzNjQ5LCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIAotICAgIDk1MCwgMCwgOTIyNzMsIDY2NTgwLCAxMTg4OTUsIDY2NjgzLCAxMDU1NCwgOTE3Nzc4LCAxMTkxMjEsIDAsIDUwOTgsIAotICAgIDkxNzc3MCwgMCwgMTE5MDk5LCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgMTI4ODcwLCA5ODM3MDEsIDM2NTEsIDAsIAotICAgIDEyMDczMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIAotICAgIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgCi0gICAgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgMTIwNzkwLCAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAKLSAgICAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDEyNjU0MywgMCwgMjY3NiwgMjI3NywgMCwgNzM4MTIsIDYxOTAsIDg1OTksIAotICAgIDE5NTA1MywgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDkyNjIwLCAxMjEyOSwgMCwgODQ4MSwgMCwgCi0gICAgNjIwMiwgMTk1MDM1LCAxMDkyMCwgMTI4MjM3LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgNTEwOCwgNTEwNywgNjU4MTgsIAotICAgIDY2MDE5LCA5NzYyLCAwLCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCAKLSAgICA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIAotICAgIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMCwgNDMwMzQsIDExNDM4LCA2NDY3NCwgMCwgOTI2OTQsIDY4NDMxLCAKLSAgICA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgMTI3NTA5LCA2OTcyMCwgNjQ3NiwgCi0gICAgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDExOTAxMCwgMCwgOTMyLCAxMjA2MzMsIDY1NjcsIDIzOCwgNjk2NTYsIAotICAgIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgCi0gICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIAotICAgIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCAKLSAgICA5NzEyLCA2ODY4MCwgNDM5NzAsIDk4MzE5OCwgNjUxNjUsIDkyNzI1LCAwLCA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIAotICAgIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIAotICAgIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIAotICAgIDk0MDk1LCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgCi0gICAgMTIwNzcsIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAKLSAgICAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIAotICAgIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIAotICAgIDQyMzIxLCA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIDE5NDk1MiwgMTk0OTUxLCAxMjY2NDksIAotICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgCi0gICAgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgMCwgOTI1NDUsIDAsIAotICAgIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgMTI3MTU2LCAwLCAKLSAgICA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIDQxOTg0LCA5MjE3LCAwLCAwLCAwLCA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIAotICAgIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCAwLCA2OTg4MCwgNTE4NCwgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgCi0gICAgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAwLCA4MTIsIDM2MTUsIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCAKLSAgICA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDQyNjE2LCAKLSAgICAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgNjc2MzIsIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIAotICAgIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIAotICAgIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgCi0gICAgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCAKLSAgICA2NDczMSwgMTI2NTc4LCAwLCAwLCA2NjMyNSwgMzQ2NSwgMjQwNSwgOTI0MCwgMCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3ODEsIAotICAgIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgNzM5MTIsIDk3OTksIDAsIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAKLSAgICAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDAsIDEyMTEsIDAsIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIAotICAgIDAsIDY4MDA1LCAxMDYyMiwgOTgzNzc5LCAwLCA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAKLSAgICAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgCi0gICAgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCAKLSAgICA5ODMzNzcsIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIAotICAgIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgCi0gICAgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMCwgNzEzMDEsIDk4Mzg2MiwgMzQ3MywgNzcxOCwgMCwgMCwgCi0gICAgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzOTAsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzcwLCA4MDgwLCAKLSAgICA3MDA2LCAwLCA5ODMzNzEsIDY3NTcsIDY0MzUxLCAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNzIsIDYxNDYsIAotICAgIDAsIDc3MSwgOTgzMzczLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIAotICAgIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAotICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgCi0gICAgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgCi0gICAgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAwLCA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAKLSAgICAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIDEyMDU0NCwgMCwgMCwgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCAKLSAgICA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIAotICAgIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgCi0gICAgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgCi0gICAgOTgzMTUwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIDE3NzAsIDAsIDEyODg2NiwgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIAotICAgIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDExODkyOCwgMTExOCwgNzEzMzQsIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCAKLSAgICA3MjUyLCAwLCA1OTk2LCA2OTkyMSwgNDkwMywgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgMCwgNzEzOSwgMCwgCi0gICAgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIAotICAgIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCA5ODM0NzksIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgCi0gICAgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIAotICAgIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIAotICAgIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzg3LCAwLCA0MjI3OSwgCi0gICAgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCA5ODMzODQsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAKLSAgICAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIAotICAgIDk4MzY5NCwgMjQ2MCwgMCwgMTE5NDQsIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKLSAgICA1ODcwLCAwLCAyMDI0LCAxMjcxODAsIDAsIDAsIDUzOSwgMCwgMTI3NzY1LCA5NDA1MiwgMzg1MywgNjUxODAsIDEyNzkyMywgCi0gICAgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgCi0gICAgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAKLSAgICAxMDk0NiwgMTI3MzEwLCA1MDAwLCAwLCA5ODM1NzksIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgNjgwMTgsIAotICAgIDY3MDksIDAsIDc4ODg1LCA5ODM3MDgsIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgCi0gICAgMCwgNzM3OTEsIDAsIDAsIDAsIDAsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAKLSAgICAzODkzLCA5ODMyNjQsIDAsIDEyMjEwLCA3MjIxLCA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAKLSAgICAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgCi0gICAgMzU5MSwgNDE5NjksIDAsIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCAKLSAgICA0MTk2MiwgMzIwMiwgNzQzNTMsIDAsIDgzMTYsIDAsIDAsIDk0MDYwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAKLSAgICAxMTk4MDksIDQ4ODMsIDI4NSwgNDcyMywgNzAwOTksIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgCi0gICAgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDAsIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDEyNjUzNSwgMCwgMCwgMCwgMCwgNDI2MzQsIAotICAgIDk4MzM0MywgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgCi0gICAgMTE5MDIzLCAxNzI5LCAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAwLCA2NTE5NCwgNjYyMDEsIDAsIAotICAgIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCAKLSAgICA3Mzg4OSwgNzQxODIsIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgCi0gICAgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIDE5NDU3NSwgMjcyMSwgMTIwMDc0LCAKLSAgICAxMTkwOTYsIDE5OTI5LCAwLCAxOTQ1NzQsIDAsIDQyNDIsIDQyNjQsIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIAotICAgIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAwLCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIAotICAgIDk4MzIzOCwgNTUyODAsIDQyMTc0LCAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCAKLSAgICA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAxMjczMDksIDAsIDEyNjUyMSwgNDIyMDAsIDQyNTY2LCAwLCAwLCA1MDg4LCAKLSAgICA2OTQ4LCAwLCA4NTI0LCAwLCAwLCAxMjM4NSwgMCwgMCwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIAotICAgIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDAsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIAotICAgIDExNjYzLCAxNjY2LCA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMCwgNjM4OTYsIAotICAgIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCA5ODM4MzIsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAKLSAgICAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAKLSAgICAxMjA4MTgsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIAotICAgIDc4NTQ5LCA0MTIyMCwgMTMwMzIsIDAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAKLSAgICAyOTM1LCA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCAKLSAgICA2MzkwMSwgMCwgMzY1NywgMTI4NTcyLCA2NTIwMiwgNjAwMCwgMTE5MjA2LCAxMjQyNiwgMTI3MTgxLCAwLCA0MTc0MCwgCi0gICAgMTI0MjgsIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAwLCAwLCAxMjQyOSwgNjcyNywgMCwgNzU2MiwgMCwgNTE3MCwgMCwgCi0gICAgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIDYxNjIsIDAsIAotICAgIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgNDMwNzcsIDAsIDQyMjA3LCAKLSAgICA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMCwgOTE3Nzk5LCA4MzA4LCA5MTc3OTcsIDkxNzc5NiwgMCwgNjc4NjQsIAotICAgIDkxNzgwMSwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjk4MDUsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIAotICAgIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMCwgNjM4NjcsIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDAsIDc0NTYwLCAKLSAgICA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCA3ODUwNCwgNjcwNCwgNDU5MSwgMTI4MDI5LCAwLCAwLCA5NjgwLCAwLCAKLSAgICAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgNzg1MDgsIDQxNTAxLCAwLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIAotICAgIDAsIDQxNDk5LCAwLCAwLCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDAsIAotICAgIDI5MjQsIDAsIDEyMDUxMCwgMCwgMCwgMTE5MjEzLCA3Mzk0MSwgMCwgNDIzMzAsIDkxNzc4NCwgMzk2OSwgMCwgMCwgNzE2OSwgCi0gICAgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIDAsIDAsIDEyODgwMSwgMTk0ODM3LCAwLCAKLSAgICAzMjcsIDAsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIAotICAgIDEyNDMxLCA4NjY4LCAxMjQzNCwgOTgzODM1LCA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAKLSAgICAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMjgwMTQsIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIAotICAgIDkyNywgMCwgMCwgMTI0MzYsIDk4MzI0NSwgNDIwMjEsIDAsIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIAotICAgIDE5NTAxNiwgMCwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDk4MzgxMiwgCi0gICAgMjI5NiwgMTk0OTIzLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgCi0gICAgNjQ2NTEsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgNTY2NCwgMzk3MiwgMCwgMCwgCi0gICAgMCwgMTI4NTA4LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAKLSAgICAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCAKLSAgICA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAKLSAgICAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAxMTcyNCwgMCwgMCwgMTI3MTA0LCAKLSAgICAxMjY2MTksIDAsIDAsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgCi0gICAgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAKLSAgICAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMCwgOTgzODk1LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAKLSAgICAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCAKLSAgICA5ODMyNDEsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDAsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCAKLSAgICA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDAsIDg0MDcsIDAsIDEwODA1LCA4NTE4LCAxMDc3OSwgCi0gICAgMTIwMTg4LCA3MTMwMywgOTgzOTMzLCAxMjM2NywgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIDEyMDM3LCAKLSAgICA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAotICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDk4MzcwNSwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCAKLSAgICA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIAotICAgIDk4MDMsIDAsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgCi0gICAgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgCi0gICAgODk0OCwgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIAotICAgIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDk0MTA0LCA3ODU3MSwgMCwgNzEzMjgsIDE5NDU2MiwgNDE1NzYsIAotICAgIDQyMjE1LCA3ODU3MCwgMTE5MjA3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgCi0gICAgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIAotICAgIDczODU0LCAxMTczNywgOTcyMSwgMCwgMCwgMCwgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAKLSAgICAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCAKLSAgICA2NTgwNiwgNDM5OTcsIDAsIDQyMDAyLCAxMjQwNCwgOTgzNTUzLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIAotICAgIDQ5ODMsIDEyMDUwNywgODYxLCAwLCAwLCAwLCAwLCA0Mzc1NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCAKLSAgICA2NjMxLCAwLCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgCi0gICAgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgMCwgOTgzODg0LCA4NTMsIDQyNjkzLCAxOTUwMTQsIDAsIDk4MzY0NywgNTAxNiwgCi0gICAgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIAotICAgIDY1MDYwLCAxMjA3OTcsIDk5MDAsIDc3NTAsIDAsIDE5NDkxOSwgMCwgMTI3ODMwLCAwLCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAKLSAgICAxMjgxNTEsIDEyMTc3LCAwLCAwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAotICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDc4NTk0LCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAotICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAwLCAxMzA1MywgMCwgCi0gICAgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIDAsIDAsIDAsIDE5NDkxNSwgCi0gICAgNzI2NywgMCwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgMCwgMTI3MDYsIDc3ODQwLCAxODkzLCA3MjY2LCA2MzkxNSwgCi0gICAgNzI2NCwgNzI2NSwgMCwgMTM2MywgMCwgNjM5OTcsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMCwgMCwgMTUxMiwgNjk5MjksIAotICAgIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAwLCA0MzMzOSwgNzM3NzYsIDk4MzYsIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCAKLSAgICA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIAotICAgIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIAotICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDYzOTkyLCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAotICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDAsIDQ5MzksIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgCi0gICAgMTk0Njg4LCA5ODMxOTAsIDAsIDEyNjQ5LCAwLCAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAKLSAgICAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAxMTk4MjksIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIAotICAgIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCAxMTk2MDAsIDAsIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgCi0gICAgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgCi0gICAgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCAKLSAgICA5ODM2NjEsIDAsIDQzMTE5LCAwLCAxMjA3NTMsIDEyNDAzLCAyNTAwLCAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCAKLSAgICA3NDExMywgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDcwMDg3LCAKLSAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgOTgzODM5LCAxMjY0NSwgNTE0NiwgMTEzMjAsIAotICAgIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgNTE0NywgMCwgMCwgCi0gICAgNzQ1MjQsIDAsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAKLSAgICAwLCA3Nzg2OCwgNDIwNiwgMCwgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgODg5NywgMTIwMjM0LCAwLCA4MzU3LCAKLSAgICA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIAotICAgIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDAsIDQ0MDIsIAotICAgIDk5NzAsIDEyNDAyLCA5ODMxMzYsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAxMjQxMSwgCi0gICAgMTI5NjksIDEyMDgyNCwgNDE0NjUsIDk4MzU2NSwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgMCwgOTA5MywgMCwgOTE0NywgMTI4Nzg3LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDgyOTYsIAotICAgIDY3NTAsIDE5NTAxOCwgMCwgOTU5NCwgMCwgMCwgNDM1MjcsIDAsIDcyNywgMTk0NzAzLCAxOTUwMjMsIDU4MDUsIDAsIAotICAgIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDAsIDEyMzcyLCAxMjA2NDIsIAotICAgIDEyMDMwNywgMCwgOTIzNDMsIDAsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMCwgNjQ0NzgsIAotICAgIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAwLCA5ODMzMTMsIDc0ODM3LCAxMjAxNTUsIAotICAgIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgMCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgCi0gICAgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCAwLCA4Nzc0LCAwLCAxMjcwODYsIDk5NDEsIAotICAgIDEyMDE3MiwgMCwgMTkzMywgNjk2NTUsIDk1NjQsIDAsIDkyNDM1LCA3Mzg2NiwgMCwgMCwgMjQ4NywgNjc2MTQsIDMxMjEsIAotICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCAKLSAgICA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCAKLSAgICA2NDY2MywgMCwgMCwgNDU2MSwgMjEwMSwgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCAKLSAgICA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAxMjY1MTgsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMCwgMzMzLCAKLSAgICA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgOTgzNTk1LCAxMjQwNiwgMCwgMTk5MzEsIDExOTA4OSwgNjY3OCwgNzc2OSwgMCwgCi0gICAgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDAsIAotICAgIDQyMjAyLCAxMjc1NCwgMTk1MDIyLCAwLCAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgCi0gICAgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDEyOTg1LCA0NTMzLCAxOTUwMjEsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgCi0gICAgMTIwNzA0LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDAsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMCwgMCwgMTIwODAyLCAKLSAgICA2NDQ5LCA5NDk0LCAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDAsIDAsIDM0MzYsIAotICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgMCwgMCwgNjc1OTgsIDAsIDAsIDAsIDY1NTkxLCAKLSAgICA0MTU4MSwgNjU5MTYsIDE0NTMsIDAsIDAsIDAsIDg1MDAsIDQyMjIyLCAxMjAxNDIsIDczNzQzLCAxMjA0MDAsIDQzMTcsIAotICAgIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDAsIDY3NjA2LCAxMTkwODMsIDAsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIAotICAgIDY2NzIsIDAsIDAsIDAsIDk4Mzc0NywgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIAotICAgIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCAKLSAgICA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIAotICAgIDQxMzQsIDAsIDc0ODQ3LCA2NjU3NiwgMTI3OTE2LCAwLCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgCi0gICAgMTI3MjkxLCAxMjcyOTIsIDExOTE5LCA2NDk2MiwgMTI3Mjg3LCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIAotICAgIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgCi0gICAgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAxMTk1ODUsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCAKLSAgICA5ODIxLCA2NDMwNCwgMCwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDEyMDA2MiwgCi0gICAgOTI2NjksIDcxMzMyLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgCi0gICAgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIDAsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIAotICAgIDE5NDkyNCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIDQxMzk2LCAxMjA1MjQsIDQyNzIwLCAKLSAgICAxMjE0MCwgOTU3MiwgMCwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI2NDkwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCAKLSAgICA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCAKLSAgICA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDAsIDE5NDg2OSwgNjQ1MTQsIAotICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCAwLCA1ODUwLCA3NTgsIDc1MzYsIDAsIDkyMjM0LCA0MTQ0MSwgCi0gICAgMTA2OTMsIDY0MDA2LCA5ODM1NjcsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDAsIDExOTA1MCwgMCwgCi0gICAgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCA5ODMwOTQsIDEwNzc0LCAxMjgwMjAsIAotICAgIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAwLCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgCi0gICAgMTk0ODk5LCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAwLCAwLCAwLCA5MTAyLCA2MjcsIDEyNzc5NSwgCi0gICAgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgCi0gICAgMTAxOCwgMTE4OTcwLCAxOTQ5MDksIDE5NDg5NywgMTY4MiwgMTk0ODk2LCAxOTQ5MTEsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIAotICAgIDAsIDAsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIDE5NDgzMCwgNzEzMTYsIDExODg2MywgNDMzMTEsIDY0OTY2LCAKLSAgICAxMTU3NywgMCwgNDMwNDAsIDE4MzMsIDExNTc2LCAwLCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAKLSAgICAxOTQ4NDgsIDc1MzUsIDgwODUsIDQyNTI1LCAxMjAzODcsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAKLSAgICAxMjA0ODksIDE5NDcxMSwgNjQ0ODMsIDY1NjkzLCAwLCAwLCAwLCA2OTY5NSwgNDIyNDAsIDAsIDEyNjY1MSwgNDI4NjQsIAotICAgIDEyNjQ5OCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIDAsIAotICAgIDY2MTk3LCAwLCAxMDk4NiwgNjQ2ODMsIDk4Mzc4NSwgMCwgMzQ1NSwgMCwgMCwgOTg3OSwgMCwgMCwgNDE1OCwgMTI4MDUwLCAKLSAgICA2ODE2NiwgMCwgMCwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCAwLCA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDAsIAotICAgIDkyNDA0LCA3NDM3MywgMCwgNTUyMTcsIDAsIDYzODcwLCA0MzE2MywgMCwgMCwgOTIzOTAsIDQyODY3LCAxODM0LCAwLCAKLSAgICA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgMTE5MDQwLCA4NjYyLCAwLCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIAotICAgIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA5MjIzMywgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgCi0gICAgNzQ0NzQsIDEyMDMyNywgNzg2MjAsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgMTE4ODU0LCA2NTIzOCwgNjgzNzQsIAotICAgIDQ4MzIsIDY1NTczLCAwLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAwLCAxNjIwLCA2NDQzNiwgMzYwMSwgCi0gICAgMTk1MDk0LCAxMjgwNzMsIDk4MzU2MiwgNjA5LCAxMTU1NSwgOTgzMDk5LCAxMjQ5NiwgMTI3ODM5LCA3NDE4MSwgNDM0MywgCi0gICAgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgMCwgNDM1NjUsIAotICAgIDcxMzA2LCAxMjY0OTMsIDEyNjk2LCAxMjgyNTYsIDAsIDk0MDYyLCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIAotICAgIDQyODE4LCAxMjY2MzIsIDAsIDEyMDQ5MCwgMCwgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMCwgOTI0OTEsIDAsIDEyNjUxLCAwLCAKLSAgICA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgOTE3ODM4LCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAwLCAKLSAgICAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDAsIDAsIDEyMDMzLCA0MjE3OCwgMCwgNjk3NjAsIAotICAgIDQyNTcxLCA5MjYzNSwgMCwgMCwgMCwgMCwgMCwgMTI3MTc2LCAzMTc4LCAwLCAwLCA5MjcwNCwgMCwgOTA4MCwgMTI3MDAwLCAKLSAgICAxMjAzNTIsIDAsIDY4MjA5LCAwLCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgCi0gICAgMCwgMCwgMCwgMCwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCAwLCAxMTQ4NywgNjc4NTgsIDEyNDY0LCAwLCA0MzA0NSwgMCwgCi0gICAgMCwgNDMzNDUsIDAsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgMCwgNzQzNDgsIDAsIDQzMzQ2LCA4MTE2LCAKLSAgICA3OTUsIDAsIDAsIDEyNDYyLCAxMDkzMCwgMTA4MzEsIDAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5ODM2MDIsIDEyMDgxMSwgCi0gICAgMCwgMTI0NjgsIDg2MDcsIDEwMDgsIDAsIDEwMDkyLCAxOTUwNzgsIDkxNzg0MiwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgCi0gICAgMTc2NiwgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAwLCAwLCAwLCAxMzIyMywgMTI4NjY1LCA2NDU5NSwgMTI3Mjk0LCAKLSAgICAwLCA5MjMxMSwgNDM0NSwgMTI2MTYsIDAsIDAsIDAsIDc0NDY3LCAwLCAwLCAwLCA1MzgyLCAwLCAwLCAwLCAxMTkwNjAsIAotICAgIDY0OTUzLCA1NDA2LCAxOTkyMCwgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4NjQsIDExMzAsIDAsIDAsIDQyMDE2LCAxMTgyMywgCi0gICAgNDMwMjMsIDAsIDExODg5NiwgNzc0MiwgMCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgNzQ4MTIsIDc4NTg0LCAKLSAgICA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCAwLCA4NTY4LCAwLCAxMjA0OTYsIDczODE2LCAxMjA4MDMsIAotICAgIDk4Mzg0OCwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMCwgMTIwNjMxLCAwLCA0MzA2MywgNzQ1MTksIDEyNzE4MiwgMCwgCi0gICAgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIDU0MDAsIDExNTk0LCAxMjgyNDcsIAotICAgIDAsIDExODk5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMCwgNTU4NywgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCAKLSAgICA2NTA4NiwgODk4MSwgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAwLCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAKLSAgICAwLCA4NjQyLCAwLCA0Mjc2NiwgOTgzODY2LCAyMjEwLCA5OTgzLCAwLCA5NDAwOSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIAotICAgIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIDExOTEzMywgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMCwgNzYxNywgCi0gICAgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCA2NzY2OCwgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAwLCA0MTUxNywgCi0gICAgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCAKLSAgICA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgCi0gICAgMCwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIDAsIDY0NywgMCwgNjMzLCAxMjA3NDQsIDAsIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAKLSAgICAwLCAzOSwgMTI0ODcsIDAsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMCwgMzE5NSwgNTU1MCwgOTgzNTU0LCAKLSAgICA3ODk3LCAwLCAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgMCwgMjg3NywgMCwgMCwgMTY3NSwgCi0gICAgNjk4NDAsIDAsIDAsIDAsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAxOTQ3NzcsIDk4MzYxMSwgMCwgMCwgMCwgNDMyNDQsIAotICAgIDAsIDAsIDk4MzkxNiwgMTE5NTYxLCA5ODMwNzgsIDAsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAKLSAgICAwLCAwLCAyNzAsIDAsIDEwNzE0LCAwLCAwLCAwLCAwLCAwLCA2NTM3MiwgMCwgNzQwMzgsIDExOTU1OCwgNjI3MywgNjY2NzksIAotICAgIDM2NCwgOTU5NSwgMTk0OTA4LCAwLCAwLCA3MDcsIDAsIDAsIDkyODIsIDY2NDg5LCAyMjQsIDAsIDY4NjcwLCA5MzMyLCAKLSAgICA0OTY2LCA2ODY3NywgMCwgNjg2NDQsIDAsIDM4NDEsIDY4NjM0LCAwLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMCwgCi0gICAgMTI4OTAsIDI5MDksIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDk4MzcxOCwgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCAwLCAKLSAgICAxMTk2MiwgMTk0Njk0LCAxMjUwNywgMTE5NiwgMTI4Njg3LCAxMjgzMTEsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgCi0gICAgNjc2NzgsIDAsIDEyMTk4LCAwLCA2NDgyNCwgMTE5MzQzLCA5ODMyMzYsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgCi0gICAgNzgwMDAsIDI3MDUsIDkxNzk3NSwgNDE1MjAsIDAsIDAsIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIDI3MDEsIAotICAgIDAsIDEyNzAwMiwgNTc2NywgMCwgMCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgOTgzODE0LCA2Mzc0NSwgCi0gICAgMTc0OCwgNjM3NzAsIDAsIDAsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIDAsIDYzNzY0LCA2Mzc4NywgOTA2NywgCi0gICAgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAwLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIAotICAgIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAwLCAwLCA5MjUzNSwgMCwgMCwgMCwgNzQ1NzUsIDAsIDY1NzE5LCAxMzA4MywgCi0gICAgNjQ1NzQsIDY1MDEyLCAwLCAxNjQwLCAxMjQ5NSwgNjY2OTEsIDc2MjQsIDMxMzgsIDEwOTk2LCA5MjI0NywgMTkyMiwgMCwgCi0gICAgMTI0OTgsIDEwOTg3LCA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAwLCAxOTQ4NDIsIDk4MzU4OCwgNDkzLCAwLCAKLSAgICA0MzE5NywgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgCi0gICAgMTI0OTAsIDY0MzE1LCAwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDAsIDY0OTExLCAKLSAgICA5MjYxNSwgMjA5NiwgNjUxMjAsIDAsIDc4MjE5LCA5ODMwODEsIDgzNzgsIDExNjMyLCAxMjcwNDEsIDY2MjEzLCA2Mzg2NCwgCisgICAgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIAorICAgIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTgzNCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgCisgICAgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCisgICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCisgICAgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIAorICAgIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAKKyAgICAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCAKKyAgICA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgMCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIAorICAgIDczNzczLCA3MDE2OSwgNTA0MCwgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDAsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDAsIAorICAgIDUwMzgsIDAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCAxMjA5MzEsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKKyAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCAKKyAgICA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCA3MzgxMywgNzExLCAKKyAgICA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAKKyAgICA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDQzOTU3LCAKKyAgICA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIDcwNzg3LCA4NDQ5LCAwLCA1MDA4LCAKKyAgICA5ODM1NzIsIDIxMTgsIDEyNjUwOCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKKyAgICAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgCisgICAgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIDQzNzEzLCA1MDUyLCAKKyAgICA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgCisgICAgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCAKKyAgICA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgCisgICAgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAxOTQ4MzcsIDk4MzM4MCwgNzQyMDEsIDkyMzEzLCAKKyAgICAxOTQ4MDIsIDc0NDk3LCA4Mjk4MiwgODA4OSwgNjkyOSwgNjM5LCA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIAorICAgIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCAKKyAgICA2OTUxLCA5NDAxNywgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCAKKyAgICA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIAorICAgIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAKKyAgICAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCAKKyAgICA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NDY3LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAxMjEzMjYsIAorICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDE5NDg1NywgCisgICAgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAKKyAgICAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDkyNzM4LCA2NjIwMCwgMCwgMCwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCA5ODM0NzYsIAorICAgIDg3MTEsIDYxODMsIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgNjYzNzYsIDkyMzUsIAorICAgIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIAorICAgIDAsIDEyNjU5NywgMTIwNDM0LCAxOTQ4NTAsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIAorICAgIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKKyAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDk4MzM1MCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAorICAgIDEyOTEwNiwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAxMjExOTgsIAorICAgIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIDEzMDE1LCAKKyAgICA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCA0MjIxMiwgCisgICAgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY3MzQzLCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIDkyOTQxLCAKKyAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDEyODU5NSwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgMCwgCisgICAgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgNDM5NTIsIDQyNTMzLCAKKyAgICAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgNTc4LCAzNjUzLCAKKyAgICAxMjg5NDYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAKKyAgICAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIDExOTE2NywgCisgICAgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgCisgICAgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIAorICAgIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNjU2NCwgNzEzMDIsIDQ0MDgsIDQxMjIsIAorICAgIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCA2NDg1NSwgCisgICAgMTE5MzAwLCAxMTkyOTksIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAKKyAgICAxMjg2MzksIDAsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgCisgICAgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAKKyAgICAxMTg4NzMsIDEyNzEsIDk4MzY0MCwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDkyMDQsIDAsIDM4NzksIDAsIAorICAgIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCAKKyAgICA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIAorICAgIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgCisgICAgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgCisgICAgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIAorICAgIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgCisgICAgNjQ2MjQsIDAsIDAsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCAKKyAgICA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgMTA1NTQsIDExOTAwOCwgMTE5MTIxLCA2ODMyLCA1MDk4LCA5MTc3NjgsIAorICAgIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCA2NzI5NiwgOTI4OTYsIDM2NTEsIDAsIDY3Mjk0LCAKKyAgICA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgCisgICAgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgCisgICAgMCwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAKKyAgICAxOTQ5MjMsIDkxNTQsIDkxMTgsIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCAKKyAgICA4NTk5LCAxMjUxMTgsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIAorICAgIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgCisgICAgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAKKyAgICAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgCisgICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgCisgICAgNjQ2NzQsIDAsIDcwMTU4LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIAorICAgIDUxMDUsIDY1MjY2LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAKKyAgICAxMTM2ODMsIDY1NjcsIDIzOCwgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgCisgICAgNDEwNDQsIDY3NjQwLCA2NzMwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgCisgICAgOTMwMzksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIAorICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDAsIAorICAgIDY2NDY2LCAxMjQ5ODYsIDEyNzc4NCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCisgICAgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ2MDAsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDEyMTA1NiwgMzIyMiwgCisgICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCA5ODMwNDcsIDkzMDY3LCAxMDgzNCwgOTgzMTI3LCAwLCA2NTczMiwgOTQwOTUsIAorICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMjA3MzQsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAorICAgIDEyMDc3LCA3NDQzMywgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCA2NzI2MCwgMjQ3OSwgNjczMDYsIAorICAgIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDY3MjYzLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCAKKyAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCAxMjcxOTAsIAorICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ5NTAsIDE5NDk0OSwgNzQxMTUsIDE5NDk1MSwgMTI2NjQ5LCAKKyAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCAwLCA5ODM3ODQsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAorICAgIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCisgICAgMCwgNjc4MzUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgCisgICAgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIDkyMjE4LCAKKyAgICA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCA5Mjk4NSwgNjk4ODAsIDUxODQsIAorICAgIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIAorICAgIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgCisgICAgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgMTIwNjcwLCAyNDQyLCAKKyAgICAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgCisgICAgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgMTMxNDUsIDE5NDk2MywgCisgICAgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCA0MTExNywgMCwgOTI1ODAsIAorICAgIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgCisgICAgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCAKKyAgICA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCAKKyAgICA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMTI0OTY5LCAKKyAgICAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCAKKyAgICA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCAKKyAgICA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIAorICAgIDc0MTg2LCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCAKKyAgICA5ODMzNzksIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIAorICAgIDExOTAxNCwgNjc3MjAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgOTE3NjA0LCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCAKKyAgICA0MDAsIDEyNTk3LCAxMjA1ODYsIDEyODA5NywgMTI5MDcxLCA2NjYxLCA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKKyAgICAwLCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIDY4ODE0LCAwLCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAKKyAgICAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCAxMTg5MDIsIAorICAgIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIAorICAgIDEyMDY4MiwgMCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgMTIyMDAsIDY2NDIzLCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAKKyAgICAxMTk1NjAsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCAKKyAgICA3NDg5LCAzMzc5LCAwLCA3NDg3LCAxOTQ2MjQsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgCisgICAgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAKKyAgICAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCA5ODM3ODUsIDYwMTcsIDY1MzExLCA3NDkzNSwgCisgICAgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAxOTQ4ODIsIDEyMDU0NCwgMCwgMTI3OTUwLCAKKyAgICA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAKKyAgICAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIAorICAgIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgCisgICAgOTgzMzk2LCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCA2Njg0OSwgMTI1MTQxLCAwLCA4MzMwLCAwLCAwLCAKKyAgICA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTI1MDY3LCAxNTYwLCA0Mzk1OCwgCisgICAgOTIxNjcsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDAsIDEwODEsIAorICAgIDc0MzYsIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKKyAgICAxMzMwLCAxMjg2MTMsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAorICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3NDEsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCA4MzI1NiwgCisgICAgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIAorICAgIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA0MzQ5NCwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAKKyAgICAxMjEwMTAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMTI3ODkwLCA2ODE3OCwgCisgICAgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjg3MTcsIDk4MzM4OSwgMCwgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgCisgICAgOTgzMjI4LCA2ODUyNCwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDk4MzE1MywgCisgICAgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIDAsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCAKKyAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAKKyAgICAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKKyAgICA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIDcxODc5LCA1MzksIDAsIDEyMDMwMiwgNzAxMjAsIDM4NTMsIAorICAgIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAKKyAgICAxOTQ5NjksIDI0NzgsIDEyMDI0OCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCAKKyAgICA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCAKKyAgICA2OTY3MiwgODIxMywgNDM4MjQsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAxOTQ5NjcsIDc4ODg1LCAxMTkyNDMsIAorICAgIDY4MjM1LCAxMjA1ODIsIDc4NTQ3LCAxMTM3MDksIDEwMzAxLCAxMDMzMywgMTAzOTcsIDExOTA0NCwgMCwgNzM3OTEsIDAsIAorICAgIDgzMDMwLCAwLCAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAKKyAgICA3NDkwMywgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMTg4NDEsIAorICAgIDEyODA4NiwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgCisgICAgNDE5NzMsIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgCisgICAgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCAKKyAgICA5MzA1NSwgMTI5MDc0LCAwLCAxODQwLCAxMjc4MDksIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgCisgICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgNzQ2NDAsIAorICAgIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCAKKyAgICA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk1MDEzLCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIAorICAgIDkxMjUsIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTI0OTI5LCAKKyAgICA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIAorICAgIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgCisgICAgNTgsIDEyMDA4NCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKKyAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjg3OTcsIDkyOTc1LCA0MjQyLCA0MjY0LCAKKyAgICAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgOTgzMTk5LCAKKyAgICA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzI0MCwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIDQyNDMwLCAKKyAgICAwLCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIDY2NjY3LCAxMTkzNTEsIAorICAgIDE5NDk4MiwgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMjg5MjgsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDEyNTA0MCwgCisgICAgMCwgMTIzODUsIDAsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgNjUwMzgsIDEyMzkyLCAKKyAgICA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgCisgICAgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDEyNzg5NywgNjM4OTYsIDEyMDYxLCAKKyAgICA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIAorICAgIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIAorICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA2NjQxMywgCisgICAgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIAorICAgIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIDYzOTAxLCAwLCAKKyAgICAzNjU3LCAxMTk2MTEsIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDExOTkzNSwgNDE3NDAsIDEyNDI4LCAKKyAgICA0MTI4MywgNDE5MTYsIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgOTgzOTQ4LCA3NTYyLCAxMjUxMjksIDUxNzAsIAorICAgIDk4MzkxNSwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIAorICAgIDYxNjIsIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIAorICAgIDkxNzgyOCwgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCA5MTc3OTcsIAorICAgIDcwODA3LCAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIAorICAgIDQxMjksIDM1MzksIDAsIDYzODYxLCAwLCA3OTEzLCAwLCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEyOTA4NSwgNjM4NjcsIAorICAgIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDk4Mzg5NywgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCAKKyAgICA2NzA0LCA0NTkxLCAxMjgwMjksIDQzODczLCAxMjA3NTMsIDk2ODAsIDEyOTM3LCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgCisgICAgNjgzMjEsIDQxNTAxLCAxOTQ1ODEsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgMTI4MzA2LCA0MTQ5OSwgCisgICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKKyAgICAyOTI0LCA2NzE4MywgMTIwNTEwLCAwLCA5ODM5NzIsIDkyNzY2LCA3Mzk0MSwgNjcxODYsIDQyMzMwLCA2NzE4NywgMzk2OSwgCisgICAgMTIxNDA1LCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgMTIxMzQ5LCAwLCAKKyAgICAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCAKKyAgICA5MTc3ODEsIDEyMDIyMiwgODMxMjksIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgNTk5OSwgNzUwMTMsIAorICAgIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAxMTM3NTQsIAorICAgIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIDAsIDEyNDM2LCAKKyAgICAxMjAwODcsIDQyMDIxLCAwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAxMjc5NzIsIAorICAgIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDk4MzE4NCwgMCwgMTk5MTQsIDEyMTc5LCAxMjg3NDAsIDIyOTYsIAorICAgIDEyODkzMiwgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgMzQ0NCwgNjM4MTcsIDExMTc4LCAKKyAgICA5MTc1ODQsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxOTQ5MjIsIDY3Mjg1LCA1NjY0LCAzOTcyLCAKKyAgICAxMjA4OTEsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCAKKyAgICAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIDExOTg0NywgNDU5NiwgNjYzMzksIAorICAgIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAxMTQzLCAKKyAgICAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIAorICAgIDExNzI0LCAxMjc3ODcsIDAsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAKKyAgICAxMTQwMCwgNDM5NDMsIDE5NDc5OSwgNjY4MzMsIDEyODIzOSwgOTgzNzA3LCA5MjU1NywgOTM5NzYsIDEyNzUyMywgCisgICAgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgOTgzODczLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIAorICAgIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIAorICAgIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgODUxOSwgMTIxMjI2LCAzMDE0LCAKKyAgICA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCAKKyAgICA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgMTA4MDUsIDg1MTgsIDEwNzc5LCAKKyAgICAxMjAxODgsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMCwgNjcyOTAsIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgCisgICAgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIDEwNjQ5LCAKKyAgICA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIAorICAgIDcwODUxLCA2NjY1OSwgOTI2MDcsIDkxNzkzMywgNjY2ODQsIDEyODA2MywgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIAorICAgIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIAorICAgIDE5NDkyNiwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAKKyAgICAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDk4MzczMiwgCisgICAgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCAKKyAgICA3MTMxMSwgMCwgMTE5MTg1LCA0MjIyOSwgNzQ5NjMsIDEyMTAxNCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCisgICAgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEyODk1NSwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIAorICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCisgICAgMTE3MjMsIDAsIDc0MTIwLCAxMjY2NDIsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDY3MTc5LCAKKyAgICA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAorICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAorICAgIDQyMDAyLCAxMjQwNCwgNjgwOTIsIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgCisgICAgODYxLCA2NzY5OSwgNzQ4ODAsIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAwLCAxMTk1NiwgMTI0OTY3LCAKKyAgICAxMjEyNjMsIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAKKyAgICAxMjcyMSwgNDEwMSwgNjYxODUsIDAsIDU5OTIsIDc2MTYsIDE5NTA0NCwgMCwgMTI1NzcsIDkzMDE3LCAxMjgyODksIDg1MywgCisgICAgNDI2OTMsIDE5NDY0NywgMTE5MDI3LCA5ODMyODQsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIDk0OTEsIDkxNzkxMywgCisgICAgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCisgICAgMTI3ODk2LCA3NDYxOSwgMTE5MjY1LCA5ODM1ODcsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIAorICAgIDExOTg0MywgOTgzMjYwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAorICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDY2ODUyLCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAorICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDE5NDk1NCwgCisgICAgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIAorICAgIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIAorICAgIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgOTgzNTgwLCAKKyAgICA0MjkyMywgNjM5MTAsIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgCisgICAgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTIwNzI3LCA5ODM5MDksIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIAorICAgIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCA3NDkzMiwgCisgICAgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCA0MTk5NiwgCisgICAgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgCisgICAgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAwLCAxMjc3NzgsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAKKyAgICA3MDI4NSwgNjczOTgsIDEyODgyMCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgMjA0MiwgMTIwNzc1LCAKKyAgICA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgMTE5ODI5LCA3Nzg0MCwgMTE5ODE1LCAKKyAgICA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCA5ODMyMzcsIDkxNzYyOCwgCisgICAgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCisgICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKKyAgICAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIDAsIAorICAgIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKKyAgICAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMTI5MDQ2LCA3NDgzNCwgMTI4NTksIDcwMDg3LCAKKyAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgNDM2NDEsIDEyODE4MywgMTI2NDUsIDUxNDYsIAorICAgIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIDE5NDc4NiwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgCisgICAgNTE0NywgMTI1MDE5LCAwLCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIAorICAgIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIDc4NjYyLCAxMjkwMjksIDEyODI5OCwgNjcyNzcsIAorICAgIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCisgICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAxMjA5MzAsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCAKKyAgICA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKKyAgICA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIDEyODU2MywgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIAorICAgIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAorICAgIDExOTE2MywgNzAxMTksIDkwOTMsIDEyODUzNSwgNjgzMywgOTI1NzQsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgCisgICAgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAxMjA5MzgsIDQzNTI3LCAxMjExOTIsIDcyNywgCisgICAgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAKKyAgICA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgCisgICAgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgCisgICAgOTI0NzMsIDk4MzI0NywgMTIwNzEyLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgNjM5NjUsIAorICAgIDEyMDMwNSwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgCisgICAgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgCisgICAgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAwLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAKKyAgICAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgCisgICAgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCAKKyAgICA1MTAsIDY0NjYzLCAwLCAxMjE1MDAsIDQ1NjEsIDIxMDEsIDEzOTgsIDkxNzk3MiwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgCisgICAgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIAorICAgIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCAxMjExNTUsIDEyNDA2LCAKKyAgICA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgCisgICAgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAKKyAgICAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCAKKyAgICA0NTMzLCAxMjcyMTIsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgCisgICAgMTI4OTEyLCAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgCisgICAgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCA5ODMzNDEsIDAsIDM0MzYsIAorICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgMCwgMCwgMCwgCisgICAgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTk0OTkzLCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCisgICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMTI3ODMzLCA2NzYwNiwgMTE5MDgzLCAKKyAgICAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgNjM4NDEsIDk2MTMsIAorICAgIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgCisgICAgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIAorICAgIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3ODMxLCAKKyAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAKKyAgICAxMjcwODEsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAKKyAgICAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIAorICAgIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIAorICAgIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIAorICAgIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIAorICAgIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgCisgICAgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCA5ODMxMzIsIAorICAgIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIAorICAgIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCAKKyAgICA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDkyOTY4LCAxOTQ2MTAsIDY0NTE0LCAKKyAgICAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgOTgzNTU1LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIAorICAgIDQxNDQxLCAxMDY5MywgNjQwMDYsIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIAorICAgIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIAorICAgIDEwNzc0LCA2NzEwNCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDEyNzAwNiwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCAKKyAgICA2NDAzNCwgNjQwMzksIDY4MDY1LCAwLCA5ODM2OTAsIDkyOTEzLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAKKyAgICAwLCAxMjEzMjMsIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAorICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIAorICAgIDE2ODIsIDQzODYzLCAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCAKKyAgICA2NzY4LCAxMDcyOCwgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIAorICAgIDE4MzMsIDExNTc2LCA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCAKKyAgICA4MDg1LCA0MjUyNSwgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIAorICAgIDY0NDgzLCA2NTY5MywgOTgzNzExLCA5ODM0OTUsIDEyODYxNSwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgCisgICAgNDI4NjQsIDEyNjQ5OCwgNDMxNjgsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAorICAgIDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgMCwgOTg3OSwgMCwgCisgICAgMCwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIAorICAgIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCA4MzM3MiwgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIAorICAgIDAsIDAsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIAorICAgIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgODMzNTksIAorICAgIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgCisgICAgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAKKyAgICAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIAorICAgIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAxMjUwNSwgODI5NjAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgCisgICAgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIAorICAgIDEyNjk2LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIAorICAgIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAKKyAgICAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgCisgICAgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMTIxMDc3LCA5ODMyOTcsIAorICAgIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgCisgICAgMTI0OTUxLCA2ODMyNCwgMzE3OCwgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIAorICAgIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIAorICAgIDExOTExMiwgNzA0NzcsIDExMTcwLCA2ODY2MiwgMTI4MTIwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgCisgICAgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIDQzMDQ1LCA5ODM4MzEsIDcwMzQ1LCA0MzM0NSwgOTgzMjc2LCAxMDc3MCwgMTE4OTk0LCAKKyAgICA2ODA3LCA0NjUsIDk4MjksIDY5OTk3LCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIAorICAgIDEwOTMwLCAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDgzMDQ3LCA5ODM5MzMsIDEyNDY4LCAKKyAgICA4NjA3LCAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjUxMjIsIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgCisgICAgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAorICAgIDEyNzI5NCwgODMzNzQsIDY4NDg5LCA0MzQ1LCAxMjYxNiwgOTE3Nzg0LCAxMjg5NDcsIDk4MzE1NSwgNzQ0NjcsIDAsIAorICAgIDk4MzgxOSwgMTI4MjkxLCA1MzgyLCAxMjc3NzksIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgCisgICAgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDkxNzc2NiwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAKKyAgICAxMjEwMDIsIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgCisgICAgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgCisgICAgNzM4MTYsIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKKyAgICA0MzIzOSwgNjU2NzgsIDE5NDg0MCwgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIAorICAgIDU0MDAsIDExNTk0LCAxMjA0MDUsIDY4MzMzLCA4MzM5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMTI4MDEyLCA1NTg3LCAKKyAgICA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIAorICAgIDcwMjk0LCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCA4MzM4OCwgNDI3NjYsIDgzMzg3LCAyMjEwLCA5OTgzLCAKKyAgICAxMjg2ODksIDk0MDA5LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAKKyAgICAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAKKyAgICAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDEyODI0NywgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKKyAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKKyAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDEyMTE5MSwgNjU0LCAxMTM0NSwgNjUzLCAKKyAgICA2NTIsIDAsIDY0NywgODMyNjYsIDYzMywgMTIwNzQ0LCA5ODM4MDksIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIAorICAgIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDExOTYwNywgMzE5NSwgNTU1MCwgCisgICAgMTI5MTIxLCA3ODk3LCAxMjcwODksIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIAorICAgIDI4NzcsIDEyMTUxOCwgNzA0OTYsIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAKKyAgICAxOTQ3NzcsIDEyMTE2MiwgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgOTgzOTE2LCAKKyAgICAxMTk1NjEsIDk4MzA3OCwgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMCwgOTgzMTUxLCA3Nzg2MCwgMTI4OTQ4LCAKKyAgICA4MzQ0MCwgMjcwLCAwLCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgCisgICAgNzQwMzgsIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxOTQ4MzksIDEyODQwOSwgCisgICAgOTI4MiwgMTExNjMsIDIyNCwgMTI4NTg4LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDE5NDU4NiwgNjg2NDQsIAorICAgIDk4MzEzMSwgMzg0MSwgNjczNTcsIDY3MzQxLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMTI3MTgxLCAxMjg5MCwgMjkwOSwgCisgICAgNjg2MTksIDQ0MDA4LCA2ODYyNywgMTIwNjk5LCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDkxNzk0MywgMTE5NjIsIAorICAgIDEyMTM5NywgMTI1MDcsIDExOTYsIDY3Njg0LCA2NzEwMCwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgCisgICAgMTIxOTgsIDkxNzg4NywgNjQ4MjQsIDExOTM0MywgMTI3MjQzLCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAKKyAgICAyNzA1LCAxMjg2ODAsIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgCisgICAgMjcwMSwgMCwgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIAorICAgIDEyMTIzMywgNjM3NDUsIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgCisgICAgNzg2MDksIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAKKyAgICAxMjc3ODEsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCAKKyAgICA5MjUzNSwgMCwgMCwgNjgyNDksIDc0NTc1LCAxMjcwMTAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAorICAgIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDExMTcxLCAxOTIyLCAxMjcyNzUsIDEyNDk4LCAxMDk4NywgCisgICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyODExMiwgNDkzLCAwLCA0MzE5NywgMTcxNywgCisgICAgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAKKyAgICA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIDgzNTIxLCAKKyAgICAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgNjM4NjQsIAogICAgIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIAogICAgIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgNjM3NTksIAotICAgIDk4MzY1NCwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAotICAgIDEyNDkyLCAxMjY2OSwgMCwgMCwgNzQxNTMsIDAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgMCwgODYxMiwgNDg4NSwgCi0gICAgNzQwNTMsIDAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAwLCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCAKLSAgICA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCAKLSAgICA3MDAyOCwgNzgwMzQsIDQ1NzksIDEyODA5MCwgMCwgMTI1MTEsIDc0NDUzLCAxMjUxNCwgMCwgNzQ1NzksIDcyMzksIDcwMDEsIAotICAgIDg2MjMsIDk0MDExLCAxMjgwNTIsIDEyODA0OCwgNzM3OCwgMTI1MTIsIDExNjE1LCA2MTA0LCAwLCAwLCA2NTksIDYwOTgsIAotICAgIDAsIDEyMjM0LCAxMjczMDcsIDEyNzA2NywgODMxMSwgMTI1MTAsIDQxODAzLCAxMzAzOSwgMTI3MDcyLCAxMjUxMywgCi0gICAgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCA5ODM5MjAsIDAsIDAsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIAotICAgIDIzMTEsIDAsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAwLCAwLCAyMzA5LCAxMzEyLCA4MTczLCAxMjg4NzEsIDEyNDY5LCAKLSAgICAwLCA3ODUwNSwgNjQzMzUsIDEwNjA5LCAwLCAxMjgxMTEsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCAKLSAgICA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAwLCAKLSAgICA2NTQ1MSwgODE4NSwgMCwgOTE3ODMyLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIDc5NDgsIDkyMzYsIAotICAgIDkyNTcxLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCAwLCAwLCAxMTk5OCwgMTIwODIsIDEwOTI0LCAzMTQ3LCAKLSAgICAwLCAxMjA2ODQsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCA5MzgwLCA5Mzc3LCAKLSAgICA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCAwLCAwLCAxMzAxNiwgODIxMCwgCi0gICAgOTgzOTU4LCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgOTgzODM3LCA0MTU1LCAwLCAKLSAgICAwLCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMjc4MDUsIDEyNzI0MCwgMCwgOTkyMiwgNDMzMDksIAotICAgIDk4Mzg0MSwgMTI1MjUsIDk4MzQ3MSwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDAsIAotICAgIDAsIDExMDMwLCAwLCA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxOTQ2NjgsIAotICAgIDAsIDEyNTA2LCAwLCAxMjIzMSwgMCwgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgCi0gICAgNjYwOCwgNDEwNDcsIDEyMDMyMSwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAKLSAgICAxMjAzMjAsIDExMDcsIDAsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgCi0gICAgMTMyMjIsIDc0MTY1LCA3NDc4MiwgMTI2NTE0LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAKLSAgICA5ODM5NDcsIDQ5OCwgNjQ0NzEsIDEyMDMyNCwgMTI4NTY3LCAxMjUyOSwgODA0MiwgMCwgMjM0NCwgMTI1MjgsIDgwMzEsIAotICAgIDI0MTQsIDAsIDY5NzE5LCAzMjMxLCAwLCA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIAotICAgIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCAwLCA0MzYzLCAzMzEzLCA0MTQyOCwgCi0gICAgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDAsIDk5MjAsIAotICAgIDEyMjE1LCAwLCA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCA5NjA3LCAwLCA5NjYzLCA5ODMyMjgsIDExOTYzNCwgNjUwMywgCi0gICAgNDExMTAsIDAsIDE0OTEsIDAsIDAsIDEyNzMwNCwgNDEwNjEsIDAsIDE5NDgzOCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIAotICAgIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDc4NjAyLCA2NjQ3NiwgNDExMDgsIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgCi0gICAgNDE5OTIsIDQxNTA2LCAwLCA0MTY4NywgMCwgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODMzLCAKLSAgICA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNDExMzMsIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgCi0gICAgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMCwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIDEyOTEwLCA3ODU1NCwgNjY2NDQsIAotICAgIDEzMDI4LCA2NzM3LCAxMjUzNywgMCwgMCwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDAsIDk4MzEwMywgCi0gICAgMTMwMzAsIDY3MDIsIDQ1MjcsIDAsIDEyNTM4LCAxMjg4MTAsIDk4MzY0NSwgNjU1OTksIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAKLSAgICAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgMCwgNjExNywgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIAotICAgIDIzMjUsIDQxNTExLCAxMjY2MjUsIDEwMTQ5LCA3NDExOCwgMCwgMTI3Mjg2LCAxMjQ4MSwgMCwgMTI0ODgsIDY2NzEzLCAwLCAKLSAgICA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAwLCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCAKLSAgICA2NTAzMiwgNDE1MTMsIDk4MzE2NiwgMTE5MjcsIDY2NTg0LCA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3ODU1OCwgMCwgNzg1NTYsIAotICAgIDg0OCwgOTg2OCwgMCwgNjQyNCwgNzg1NjgsIDExOTMzOCwgNjk5MjIsIDc0MDMxLCA3ODU2MywgNzg1NjQsIDIzNTIsIAotICAgIDc4NTcyLCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIDAsIDEzMDI2LCA2NzYyLCA3ODU3OSwgNzg1ODAsIAotICAgIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMCwgMCwgMTM0MywgOTgzODIzLCAwLCA5MzI1LCA2ODE4LCAKLSAgICA2MjgzLCAxMTczOCwgMCwgOTgzOTM0LCAwLCAxMTc0MSwgMCwgMCwgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgCi0gICAgOTgzODI1LCAxOTQ3NTQsIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCAKLSAgICA5OTU2LCAwLCAwLCA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgCi0gICAgNzQzNDAsIDY5NjgxLCAwLCA0MzAwMSwgODAyOSwgMCwgMCwgOTgzNzgwLCAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIAorICAgIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAorICAgIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCisgICAgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgCisgICAgMTI5MDY2LCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCAKKyAgICA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAwLCAxMjUxMSwgCisgICAgNzQ0NTMsIDEyNTE0LCAwLCA3MTEzMCwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgMTI4MDQ4LCA3Mzc4LCAKKyAgICAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDEyMDkwMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAKKyAgICAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAKKyAgICAxMjgzNTQsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgCisgICAgMTI3MjgwLCA5ODMzMTEsIDgzMDIwLCAyMzA5LCAxMzEyLCA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgCisgICAgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCAKKyAgICA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIAorICAgIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCA3OTQ4LCAKKyAgICA5MjM2LCA3Nzk0MiwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIAorICAgIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKKyAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgCisgICAgMTMwMTYsIDgyMTAsIDEyMTA2MiwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIAorICAgIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgCisgICAgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDk4MzQ3MywgMTIwMTYsIDY1NzcwLCA5NTQ4LCAKKyAgICA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDE5NDY4OSwgMTI3MTkxLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgCisgICAgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgOTgzODM4LCAKKyAgICAxMTE0NiwgNzE0NzcsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIAorICAgIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAKKyAgICAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIAorICAgIDc0MTY1LCA3NDc4MiwgNDM0OTksIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCAKKyAgICA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgCisgICAgNjk3MTksIDMyMzEsIDkxNzgzNiwgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAKKyAgICAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCAKKyAgICA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIAorICAgIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCAKKyAgICA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgOTgzNDY3LCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCAKKyAgICA3MDQ1NCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCAKKyAgICA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDAsIAorICAgIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgzMywgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgCisgICAgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgCisgICAgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIAorICAgIDEyNTM3LCAwLCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCAKKyAgICA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIDEyODgxMCwgOTgzNjQ1LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCAKKyAgICA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAxMjYyMywgMCwgNjIwNywgOTgzMjI1LCA2MTE3LCA2NTkzMCwgODQxMiwgCisgICAgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDEyMDIzMywgMTI0ODEsIAorICAgIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAKKyAgICAxMTkyNDQsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIAorICAgIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCAKKyAgICA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgCisgICAgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCAKKyAgICA4MDk5LCAxMjc5ODQsIDAsIDEzNDMsIDkxNzk5OSwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgNzI0MzYsIAorICAgIDExMzcxMywgMTE3NDEsIDkxNzk4NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAKKyAgICAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgNDM5NTQsIAorICAgIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgCisgICAgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAKICAgICAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIAotICAgIDc4NTgxLCA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAKLSAgICAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIDAsIDEzMDQ2LCAKLSAgICA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDAsIDAsIDY4MTksIDEzMDQ5LCAKLSAgICA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA3Mzk0NCwgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgMTI3OTE5LCAKLSAgICA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIAotICAgIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgCi0gICAgMTI0MjAsIDQwMjQsIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgMCwgMCwgMCwgMCwgOTgzNzkxLCAKLSAgICA5MjIxMCwgOTI0MTEsIDAsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAxMTkxMSwgMCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgCi0gICAgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIDEzMDQzLCA4MDU2LCA5MjQ5NCwgNjU2ODEsIAotICAgIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgMCwgMCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCAwLCAxMjA2MzAsIAotICAgIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCAxMjY1OTYsIDAsIDExOTkzMywgMCwgMzExNSwgOTkxOCwgMCwgODI5NCwgCi0gICAgNDI5MTIsIDAsIDAsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCA5ODMyNzQsIDQxNTU4LCA0MTQ3MSwgCisgICAgNzg1ODEsIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCAKKyAgICA3NDU0MiwgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAKKyAgICA0MzkyNSwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDAsIAorICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgCisgICAgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIAorICAgIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxMjEwMzYsIDM5OTcsIDEyODA2LCAKKyAgICA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDEyODAwMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgCisgICAgNjgzMDcsIDkxNzg0MiwgMCwgMCwgOTgzNzkxLCA5MjIxMCwgOTI0MTEsIDEyOTMwMywgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIAorICAgIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIDQzMTgzLCA2NDAxLCAKKyAgICA1ODMxLCAwLCAxMjA4NjUsIDEzMDQzLCA4MDU2LCA3MDEwOCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgCisgICAgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgODI5NzIsIDgyOTczLCAzNjAzLCAKKyAgICA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCA5OTE4LCAxMjc4MjMsIDgyOTQsIAorICAgIDQyOTEyLCAwLCAxMjcyODcsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgCiAgICAgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCAKLSAgICA0MTU1OSwgMTg5NiwgNjYyNTYsIDEzMDUyLCAxOTQ2ODAsIDU2NjUsIDAsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAorICAgIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgNzg1OTQsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAogICAgIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIAotICAgIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCAxMTk5MzEsIAotICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDAsIDEwNTA5LCAyNzk1LCAKLSAgICA0OTEwLCAxOTQ3MjgsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCAKLSAgICA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIDkxNzgxMCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgMCwgCi0gICAgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCA4MjIsIDEyNzk4NCwgOTkwMywgNjQ3MjEsIDQyNzIyLCAKLSAgICA2OTg3NywgMTk0NjU5LCA3ODY1NSwgNzg2NjEsIDE5NDY2MCwgNzg2NjIsIDQxMjY1LCA1MzExLCAxNzk1LCA5NjUsIAotICAgIDExODc5MSwgMTA1ODcsIDc4MDU1LCAxMTI3OCwgNzg2MzIsIDE5NDY0MCwgMCwgMTI5NDYsIDE5NDY0MSwgMTE5MzQxLCAKLSAgICAxMjAzNDksIDYyOTQsIDMxNDQsIDE5NDY0OCwgMTk0NjQ3LCA2NTAxOSwgMTk0NjQ5LCA3Mzk5MCwgMCwgOTgzOTYwLCA3NDgsIAotICAgIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIAotICAgIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAxOTQ2MzUsIDQ4OTAsIAotICAgIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDk4MzYxNiwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgCi0gICAgNzgwNDYsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIDY5NzAyLCAwLCAwLCAxMTM3NSwgNjQ3NDYsIDIzMzIsIAotICAgIDc4MDYzLCA0MTIsIDc4MDYxLCA2NDkzMiwgNDI4ODAsIDQzNTg3LCAwLCAwLCAwLCAwLCA2NTE5NywgNzgwNjYsIDEyMjAzLCAKLSAgICA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgMTIwMzgxLCAxMjAzODksIDExODg4OCwgOTM0NCwgCi0gICAgODgyNiwgMTIwMzg2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDAsIAotICAgIDY1Njk2LCA5MjMzMSwgMCwgNjYyMTcsIDAsIDgzMzQsIDExOTM0NCwgMCwgMzQ0OSwgMCwgMCwgNzg0MTQsIDc4NDEzLCAKLSAgICAxMTg5NTAsIDc0MDExLCAwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAxMjcwMTQsIDAsIDEyNzkxNCwgCi0gICAgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgCi0gICAgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDExODg5MywgMjM2MSwgNzk3MSwgNzgwNzIsIDc4MDczLCAKLSAgICA1NTI0MywgNzgwNzEsIDAsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgMTA5NjAsIDQwOTYyLCAKLSAgICA4MzA1LCAxMjU3MywgOTgzNjA4LCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIAotICAgIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgCi0gICAgNzQwNDUsIDcwMDM5LCAwLCAwLCA0OTEzLCAwLCA5ODM5NTksIDcxMzMzLCA0MjMyNiwgMTI4MTk0LCAxMjcyOCwgOTI2ODUsIAotICAgIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAwLCAxMjU4OCwgODgyMSwgNjE1MywgMjg2NywgCi0gICAgMTk0NzA4LCA2NjMxMiwgNjk4LCAxMjgwMDcsIDE5NDYwNiwgMTAzNTYsIDcwMDE3LCAxOTQ3MTMsIDY1MSwgMTI2NDEsIDAsIAotICAgIDAsIDAsIDAsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzg0NjQsIDEyODg1MSwgNzg0NjEsIDE5NDY5NywgCi0gICAgNzQzNTYsIDY0OTQ1LCA0NzE2LCA0MzI3NywgMCwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDAsIDE5NDcwMCwgNTUyNjQsIAotICAgIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDkxNzYyOSwgOTgzNDk1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIAotICAgIDQxOTMzLCAwLCAwLCA2NjI1NCwgMTIwODIxLCAwLCAwLCAxMjg2NTQsIDAsIDExOTE5NCwgNzQwNTAsIDkyNzAxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMjI3OCwgMCwgMCwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCAwLCAwLCAyNjk5LCAwLCA3Mzg0NSwgCi0gICAgMjk4NSwgOTI1NjgsIDEyNjQ3NSwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIDk4MjcsIDExOTMxMCwgCi0gICAgMTE5MzExLCAxMTkzMDgsIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDc4NDgxLCAKLSAgICA3ODQ4MiwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIAotICAgIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAKLSAgICAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIDQxODksIDk0MTA4LCAKLSAgICA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAwLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAwLCA5MTc4MjcsIAotICAgIDY1NTU1LCAxMjU3NCwgMCwgMCwgMCwgNzQ0OTAsIDEyNzA5OSwgNDM2NTcsIDAsIDAsIDAsIDQyNjgyLCAxMjU3OCwgCi0gICAgMTI3MjAsIDAsIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgMCwgMCwgNzI1MSwgMCwgMCwgMTE4ODUwLCAKLSAgICAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDAsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgCi0gICAgOTIzMjMsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAwLCAwLCAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgNzEzMjUsIDAsIAotICAgIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCAKLSAgICA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMTIwMTYxLCAwLCAwLCA0MTkzNCwgNzQ2NSwgMCwgMTI4MTY4LCAKLSAgICA5ODMyNjgsIDQ3MTUsIDYxMDEsIDk0MTA2LCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCAKLSAgICA5NTg1LCA1Mzc0LCA5ODMyNjcsIDEyODA1OSwgMCwgMCwgMTI2NjE4LCAxMjAzOTAsIDAsIDY1NTY3LCAxMjA2MTQsIDE5MjksIAotICAgIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCA1Mzc4LCA3ODc5MSwgCi0gICAgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCAKLSAgICA5ODMxMTUsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIAotICAgIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgCi0gICAgMCwgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjU2MjYsIDc4NDYyLCAKLSAgICAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIAotICAgIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIAotICAgIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgCi0gICAgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgODA0NywgMCwgNzg4MjcsIDEyNjM0LCAKLSAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIDk4Mzc2MywgMTU4NCwgNjY2NDUsIAotICAgIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAwLCA3ODA2MiwgNzUzNywgMCwgMTEzNzAsIDAsIDEwMzMwLCAwLCAKLSAgICAxMDM5NCwgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgNzc5NTAsIDE5NDU3OCwgNzA3NCwgCi0gICAgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAxMTQxNCwgMTI4ODY4LCAyNTMxLCAxMzAzNCwgMCwgMCwgNDIxMSwgMTI1OSwgCi0gICAgNzUxNywgMCwgMCwgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgOTQwMzQsIDE5NDU2NiwgMTEwNjQsIAotICAgIDQxMTI5LCAwLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgCi0gICAgMTk0NTczLCA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgOTgzNDUyLCA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIAotICAgIDAsIDY3NTUsIDExODg2NCwgOTA0NiwgMTI3OTM0LCAxMjY2MDgsIDAsIDAsIDAsIDAsIDY3Njc1LCAwLCAwLCAwLCA2NDMzOCwgCi0gICAgMjU2MywgMTMwMzMsIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgNDY1MSwgNjk4OTUsIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgCi0gICAgMCwgNDE5MDMsIDQzNDQ3LCAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgNDE5MDUsIDAsIDAsIDEwNzc1LCAKLSAgICA5NzkzLCA1MDA5LCAwLCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIDQyODUzLCAKLSAgICAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA5ODM3NzYsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIAotICAgIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCAxMjgwNTgsIDY5ODQ0LCA0MzIwMCwgNTgzMiwgMCwgMCwgNTE0MSwgCi0gICAgNDI2MDAsIDAsIDQzMjAzLCAwLCA5ODM3OTksIDQzMjg2LCAwLCAxMjgyMTEsIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIAotICAgIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgMCwgMCwgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgCi0gICAgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCAKLSAgICA2Mzg4NSwgMTk0NzkyLCAxMTgyMiwgMCwgNDMxODksIDk4Mzg5OCwgMCwgMTc4OCwgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgCi0gICAgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgOTQwNTUsIDAsIDEyODUsIDY0ODgyLCA0MTI0MiwgNzAwODYsIDAsIDEyNjQwLCAKLSAgICAwLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgNDM3NTQsIDMzOTYsIDEyNjQyLCAKLSAgICA4NjY1LCAwLCAwLCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgMTIwNTE2LCAxMTg5ODksIDAsIDg4MTUsIAotICAgIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTE5MzE3LCAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgCi0gICAgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgMTIwMzIsIDAsIDk3MjUsIDAsIAotICAgIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgCi0gICAgNDM2OTgsIDY1Mzg2LCAyMjA4LCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgMTk0Nzk3LCA5MTc4MTksIDEwMDg1LCAKLSAgICAxMTk5OTIsIDAsIDExOTk5MywgNjYzNCwgOTIzNzMsIDAsIDExOTMyMywgODA3MiwgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgCi0gICAgNzc4MywgOTE3OTkyLCAxMjM5OCwgODIzNywgMCwgMCwgMTIzOTUsIDAsIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAyMjE3LCAKLSAgICA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIAotICAgIDE4MjksIDAsIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgMTIwNDIyLCAwLCAxNzEwLCAwLCAwLCA2NTYwNywgMCwgCi0gICAgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIAotICAgIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCAxMjgyMjUsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDEyMDY2NCwgNzg0NDUsIDAsIAotICAgIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgCi0gICAgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgCi0gICAgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgCi0gICAgNjYzMDksIDAsIDAsIDE0OTQsIDk4MzE0NiwgMTI2NjEzLCAwLCAxMTY5MywgMTI2NTEzLCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAKLSAgICAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCA3Mzc5NCwgMCwgODAyMiwgMCwgMTIwNDYyLCA3NDEwNiwgCi0gICAgMTI0MTMsIDk0MDY5LCA5MTc5OTQsIDkxNzk5MywgOTE3OTk1LCA1NTcwLCAxODgxLCA3MjEwLCAwLCAxMDEyLCA0Mzc1MiwgCi0gICAgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgOTgzMjQyLCA0MjMzOSwgMCwgNjA2MywgMCwgNzgzODMsIDExOTU5NCwgCi0gICAgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIDExODgxMCwgCi0gICAgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIAotICAgIDk4MzExNiwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgCi0gICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAKLSAgICAxMjAxMDEsIDU4OSwgNzA1MCwgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAKLSAgICAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAwLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIAotICAgIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDk4MzI1MSwgMCwgODEyMCwgCi0gICAgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAKLSAgICAwLCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA5ODM2NzEsIAotICAgIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgMCwgNzc5NzAsIDk4MzU2MCwgMCwgMTI4MTc1LCAKLSAgICAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCAKLSAgICA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgCi0gICAgOTE3OTU5LCA1ODUzLCAxMzA2MywgMTAzNjMsIDAsIDEyOTU2LCAxMjgxNjksIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgCi0gICAgMTIwNjAsIDAsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgCi0gICAgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgMTI3MDU3LCAyNjk1LCA0MjE3MSwgMCwgMCwgMCwgCi0gICAgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAwLCAxMTY0LCAxMjg4MTcsIDAsIDQxOTE4LCA5ODMxNjgsIAotICAgIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAxMjgwMDEsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIAotICAgIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgCi0gICAgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCAKLSAgICA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgODkyMiwgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAKLSAgICAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIAotICAgIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAKLSAgICAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgCi0gICAgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCAKLSAgICA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgMCwgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIAotICAgIDEyMTA0LCA3Nzk0MiwgNjIyMCwgOTAwNCwgNjU1NjEsIDAsIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgMCwgCi0gICAgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgCi0gICAgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAwLCAwLCA2NDY5LCA3NDIyNywgMCwgNjUzMDQsIAotICAgIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIDAsIDAsIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCAKLSAgICA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCA3NDYwNiwgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIAotICAgIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyNDQsIDY1MzEyLCA1NDQ3LCAwLCAxMjg5NSwgNjU1OTMsIDQwMTAsIDAsIAotICAgIDQxMTA2LCAwLCA2NDQ0OCwgMCwgNDExMDUsIDAsIDY1ODIwLCA2MjMyLCAwLCAxMjgyODAsIDAsIDQzNjA4LCAxMTkwOTEsIAotICAgIDAsIDY1MzgsIDQzMzUsIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgCi0gICAgMTIxNTUsIDk4MzY3NCwgNDI4NzgsIDExNTAwLCAwLCAwLCA3NDU3OCwgMCwgNjU4MzIsIDAsIDAsIDAsIDc3OTc1LCAKLSAgICAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgMCwgMCwgOTIzMDcsIDAsIDAsIDUxMzMsIDAsIDAsIDk1MDAsIAotICAgIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDAsIDAsIDI0OTYsIDExNTE2LCA5NDQsIDExODg1MSwgMzg5MCwgCi0gICAgMTIxNjgsIDE0MzgsIDAsIDk4MzExNywgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgMTI4NTU1LCAwLCAwLCAxNTcxLCAKLSAgICA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAwLCA3ODEyMCwgCi0gICAgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgCi0gICAgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgMCwgMCwgMTkwNiwgOTE3OTg2LCAxMTUzMiwgNzQwNzMsIAotICAgIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgOTE3ODk1LCA2NDI4NywgMCwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCAKLSAgICA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgOTIyMzAsIDAsIDYxMjksIDAsIAotICAgIDEyODUyOCwgMTI4MjY4LCAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDAsIDEzMTM2LCAwLCAwLCA3MDEwMiwgNjM4ODYsIAotICAgIDExODg4MSwgOTYwNSwgNzEzMDgsIDEzMjIwLCAxMjg3NzYsIDEyMDI3NCwgNTUxNCwgMCwgOTIyOCwgMCwgMCwgMCwgNTI0MCwgCi0gICAgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDk4MzM1MSwgNjY2NzYsIDY1ODczLCAwLCAwLCAwLCA5NTAxLCAwLCAxMjcyLCAKLSAgICA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDAsIDkxNzgxMiwgMCwgCi0gICAgMTE4ODk5LCAxMjE5MywgMCwgMCwgMCwgMCwgOTgzMzUzLCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAwLCAwLCAwLCA1Mjc1LCAKLSAgICAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgCi0gICAgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkxMSwgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCAKLSAgICA2NDU2MSwgNTUyMjQsIDQ5ODEsIDAsIDAsIDYzODc2LCAxMTY2NywgNDI2ODYsIDc3OTczLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIAotICAgIDQxNjQ5LCA3NTg5LCAwLCAwLCAzMjM3LCAwLCA2ODIxNSwgOTE3OTA0LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAKLSAgICAwLCAwLCAwLCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIAotICAgIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAwLCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAKLSAgICAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgMCwgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIAotICAgIDY1NDQ3LCAxMjY1MTEsIDAsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAwLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIAotICAgIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAKLSAgICAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgOTE3OTExLCAwLCAxMjg2ODgsIDM5ODUsIDkxNzkxMiwgNjU4NjAsIAotICAgIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgCi0gICAgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAwLCAKLSAgICAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAKLSAgICAxMDU5NCwgNjQ5NTEsIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDAsIDM4OTEsIDAsIDAsIAotICAgIDIzMzcsIDE3MzUsIDc0MzI0LCA2Nzg2MCwgMjM2MywgOTgzMTM1LCAwLCA0MzU2MSwgMCwgMCwgNzQxNDYsIDE4NjAsIAotICAgIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCAwLCAxMjAzNDcsIDc3MjcsIDAsIDg0OTgsIAotICAgIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgNzY5MCwgMCwgCi0gICAgMTI1MzMsIDk4Mzg3OSwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAwLCA2Nzk3NCwgMTE5ODAsIAotICAgIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCA4ODUwLCA3NDI3NSwgOTIzOCwgCi0gICAgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIDEyNzkxLCAwLCAwLCAxMjc4NDMsIDQ0NDcsIDczNzMyLCAxMjc5MywgCi0gICAgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMCwgNzgwODcsIDEyNzkwLCA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAKLSAgICAxOTQ5MzgsIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIDQxMzEwLCA5ODM4NjksIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgCi0gICAgMTI2OTAsIDAsIDAsIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgMCwgMjc4LCAwLCA0MTQwNSwgCi0gICAgMTE5MjU0LCAwLCAxMDA3NywgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgMCwgNDM1NTMsIDAsIDY3OTAzLCAwLCAKLSAgICAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAwLCAwLCAwLCA4NjQ2LCA5ODMxODYsIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgCi0gICAgNjU1MCwgMCwgMTk0MCwgMCwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgMTAwNDQsIDEyODMyMiwgMCwgMCwgCi0gICAgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgMCwgCi0gICAgMzk1OSwgMCwgMCwgMCwgMjQ2NywgMCwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgCi0gICAgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIAotICAgIDQxMDYwLCAwLCA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDEyMDI2MCwgMCwgNjUyNTYsIAotICAgIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTI4MjM2LCAwLCAxMjA0NzIsIAotICAgIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA3MzgyNywgNTQ0LCAxMjA0NSwgNjI3OCwgMCwgNTUxNSwgMCwgMCwgCi0gICAgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDAsIDAsIDc0ODQxLCA2Nzg4NCwgMCwgNjc4OTAsIDY3ODg1LCAKLSAgICA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMCwgMCwgNjc4NzksIDEyNzE4OCwgMTkwMiwgNjc4ODcsIDk2MzgsIAotICAgIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIAotICAgIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIDY3ODg5LCAwLCAxMzExLCA5MTc5NjYsIDQzMjYsIAotICAgIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMjg4ODAsIDY5MTcsIDc4MTU1LCAwLCA5NDksIDc4MTYyLCAwLCA2MTQ4LCAKLSAgICA4NjA1LCA0MjI1MywgNzgxNzcsIDAsIDAsIDQyNzE1LCAwLCAwLCAwLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIDY1MzAsIDAsIAotICAgIDY1MDU3LCAwLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDAsIDQ0MzEsIDQzMzEsIDk4MzcyOSwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgCi0gICAgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCA2NjAzNiwgMCwgMCwgNjQyOCwgNDIyNzAsIDAsIAotICAgIDk4MzU5NiwgNDMwNTksIDQyNjY2LCA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCA5ODM3MjIsIDk0OTMsIDk4Mzk2OCwgCi0gICAgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIDAsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCA5ODM4NTQsIDExOTYzMiwgMCwgCi0gICAgNjU2MCwgNzAxNiwgNzQyNzQsIDk4MzYxNSwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgCi0gICAgNTEzNSwgMTE4MTEsIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCAKLSAgICA1MTY4LCA3ODU1MiwgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgCi0gICAgMTk0NzUwLCA3MzkyLCA4MjMwLCA5MzY1LCAwLCAwLCA5ODM2MDcsIDAsIDAsIDQwNDEsIDAsIDIzNTcsIDQzMjQwLCAKLSAgICAxMjc4NiwgMjI5LCAxMTk4ODUsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIDY1NTU0LCAxMTk4ODIsIAotICAgIDExOTg3NywgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIDEyNjg2LCAxMTg5MTYsIAotICAgIDQyMzc1LCAwLCAxMjcyMzgsIDY2MzUyLCAxMDQ3MCwgMCwgMTEwNTksIDEwNzkxLCA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAwLCAKLSAgICAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgNzgyODQsIDY2MzM4LCAwLCAwLCAxODM5LCAKLSAgICAxMTg3OTksIDk4MzIxOSwgMTA5MjcsIDE3MDEsIDk4MzY2NCwgMjM4OCwgNDE3NDksIDQxNzYxLCA1NDUzLCA4MzYxLCAKLSAgICAxMTk4NjUsIDQxNzU4LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCAKLSAgICA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAwLCA2NTgxMiwgOTE3ODMxLCAwLCA0MTgyNCwgNjc5ODUsIAotICAgIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIAotICAgIDE5NDgwOCwgMCwgMCwgNDQ5MywgNDMzNiwgMCwgMjMxNCwgNDM2MDIsIDc4ODI2LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIAotICAgIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDcxMzMxLCAwLCAxOTQ3OTMsIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIAotICAgIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIDE0MTAsIDkyNjcxLCA5ODMyNTAsIDExODg3OCwgCi0gICAgMCwgMCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgNzgxODgsIDQ4OTIsIDc0MDE2LCAKLSAgICAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAxMjc4OCwgCi0gICAgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDEyNjU3MywgMzY2OCwgNjU3NTQsIDQzNTYwLCAxMjIyNiwgCi0gICAgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIDY1NzQ3LCAxMDkzNywgCi0gICAgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCA0MjcxNCwgOTk1MSwgNDM0MDksIAotICAgIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgNDE4MjAsIDIzMDAsIDIzOTUsIAotICAgIDEyODU2MywgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDEyMDA1OCwgNjgyMjAsIDEyODE0MywgNDI4MDksIDQyODA3LCAwLCAKLSAgICAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgMjM2MCwgNDE3OTQsIAotICAgIDkxNzk0MiwgNzEzMTQsIDEyNzgxOCwgMCwgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgCi0gICAgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCAKLSAgICA5MjIwMywgMCwgMTAzODQsIDk4MzIyMCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCA3Nzg3MiwgCi0gICAgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAKLSAgICAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgNzQxNDUsIAotICAgIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIDQ4NjIsIAotICAgIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgMTI5NjEsIDAsIDAsIDkyMjUzLCAKLSAgICAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIDQyNzI0LCAwLCAKLSAgICA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDk4MzkwOCwgMTIwMTYzLCA2NTI4LCAKLSAgICAxMjc1NTMsIDQzMDM1LCA2OTg5OCwgMjE4LCAwLCAxNTIwLCAwLCA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgNzgxNjcsIAotICAgIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgNzM5MDIsIAotICAgIDY5NzQwLCAwLCAwLCA5OTc1LCAxMjgwMzksIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIAotICAgIDc4ODEwLCAwLCAwLCA2Nzk4NywgMCwgMCwgMCwgNjc5ODksIDAsIDEwMDY1LCA4MjA3LCAwLCA5MjYxMywgMTI4MDExLCAwLCAKLSAgICA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCA5ODM0MjgsIDAsIDAsIDAsIDQxOTI5LCAwLCAwLCA2NjY3NCwgCi0gICAgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMCwgCi0gICAgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDAsIDkxNzk0NSwgCi0gICAgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgMTI4NTU3LCAKLSAgICAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIDIwMzYsIDk4NiwgCi0gICAgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIDY0MzM0LCAKLSAgICA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDc0MTkxLCAxMjA0MTAsIAotICAgIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIDY1NTE0LCAKLSAgICAwLCA2Mzk0MCwgMTI4NzA2LCA2NDUzMywgMTIwMTI5LCAwLCA2Nzg0MiwgMTE5OTAsIDkyNDMwLCA2MzkzOSwgNDMzNzUsIAotICAgIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDk4MzkxMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAKLSAgICA5ODMzNjEsIDc0Mjk0LCA5ODM5MTQsIDY5MjM5LCAwLCAxMTkwMjcsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgOTI1NzQsIAotICAgIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDAsIDAsIDAsIAotICAgIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIAotICAgIDg0MTcsIDQzNzk4LCA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKLSAgICAxMjMyMCwgMCwgMCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDAsIDAsIDAsIDAsIDEyOTEsIDc0ODI4LCAKLSAgICAwLCAwLCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAwLCAwLCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIAotICAgIDEyMDQzMiwgMCwgMCwgMCwgMTIwNDMzLCAwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgCi0gICAgMCwgMTk0OTQ4LCAwLCAwLCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCAwLCAKLSAgICAxMjYyNCwgMCwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIAotICAgIDExOTU5OCwgOTgyMCwgMCwgMTIxODcsIDAsIDAsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgMCwgMCwgMCwgMCwgCi0gICAgNzQ4MjYsIDY0NzMzLCAwLCAwLCAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgCi0gICAgOTI0ODMsIDc1MTQsIDk4MzM2NywgMCwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgMCwgMCwgNjM5MjUsIDAsIDc2MTAsIAotICAgIDIxOSwgMCwgMCwgNjkyLCA0MzU4OCwgNzQ0MzMsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgOTM5OTEsIAotICAgIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCAKLSAgICA1MjUzLCA3MDAyNSwgNTQ1OCwgMCwgMjg2NiwgMCwgMTI3ODYwLCA2NTExMSwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMCwgCi0gICAgMTIwNTgzLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgMCwgOTYwNCwgNzg3MDAsIDc0NDEsIAotICAgIDYzODI2LCA2Nzk3MCwgMTE4OTQxLCA2NDM5MiwgMTk0NzM1LCA5ODM2ODcsIDI4NDQsIDk4Mzk0MSwgNDE5NzQsIDAsIAotICAgIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDAsIDMxMDQsIDE5NDczNCwgMCwgMTk0NzY1LCA5ODMyMzMsIAotICAgIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCA5ODMwNzAsIDAsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCAKLSAgICA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAxODE0LCAwLCAxMDI0MCwgOTIzMzgsIDc0MzA1LCAwLCA3NDUyOCwgNjU5MDMsIAotICAgIDAsIDQyNjQ2LCA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA3Nzk1NiwgNjQ0ODIsIDEyNzMzNywgODE2MywgNjUyNzAsIDAsIAotICAgIDc3OTMyLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCAKLSAgICA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgMTE5ODk5LCAKLSAgICA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgOTgzODk0LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDAsIDEwNjI5LCAwLCAKLSAgICA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyODc5NywgMTI3MzI3LCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCA0Mzk2OSwgCi0gICAgNDMxOTMsIDEwNzM3LCAzNDYzLCA5ODMwNjUsIDAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgMTIzNDUsIAotICAgIDcwNDksIDExOTkxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgCi0gICAgNjU2MSwgMTk5MzksIDAsIDAsIDEyODUzNSwgMTE5OTA2LCAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCAKLSAgICA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDkxNzU2OCwgMCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgCi0gICAgODQzMCwgMCwgNzQxMzIsIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDAsIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIAotICAgIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgMCwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAKLSAgICAxMTcyMSwgMCwgNDc5OCwgMCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCAKLSAgICA2ODYxMCwgMCwgNjg2MjYsIDg5NCwgMzAwLCA5MTc4MTMsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMCwgMjU2MiwgCi0gICAgMTI2NTU1LCAwLCA0MjUwMywgMCwgMTE2NTIsIDAsIDAsIDExOTI0MSwgNjQ2OTksIDEyNjU2OSwgNTA5NiwgNTA5NSwgCi0gICAgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgMTA4MzIsIDUwOTMsIAotICAgIDAsIDY5ODUyLCAwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIAotICAgIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCA3MTI5OSwgMTI3MzcxLCA0Mjg4MSwgMCwgCi0gICAgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgMCwgMCwgMTk0Nzg5LCAwLCA5MDc0LCA0MzQ4LCAKLSAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDcxMzQ1LCA1ODYsIAotICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCAKLSAgICA2NjY2NiwgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIAotICAgIDc0NDA2LCAxMjc4MzEsIDAsIDk4MzkyMSwgMCwgNjYyMjUsIDAsIDAsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCi0gICAgMCwgMTAyOTEsIDEwMzIzLCAyODI2LCAwLCAwLCAwLCA0MjAwOCwgOTcwOCwgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgCi0gICAgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgMCwgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIAotICAgIDE3NjUsIDAsIDAsIDY1NTg4LCAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgCi0gICAgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKLSAgICAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAwLCAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIAotICAgIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCAwLCA0MzM4MiwgMCwgMTIwNzE5LCAKLSAgICAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIAotICAgIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCA5ODM3NDIsIDc3OTg2LCAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIAotICAgIDcxNzcsIDcwMTA1LCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIAotICAgIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzE2LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKLSAgICA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIDEzMTY1LCAKLSAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCi0gICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIAotICAgIDQxNDcwLCA2NDgwNSwgMCwgMCwgMTI4MjE1LCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAotICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMCwgMTA2NzcsIDYwNCwgCi0gICAgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAKLSAgICAwLCAwLCA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIAotICAgIDkxNzk1NiwgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODM3MjMsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIAotICAgIDEzMzEsIDAsIDAsIDAsIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDAsIDExOTEwOSwgMCwgMTI4NjgxLCAzMTksIAotICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDkyMzI1LCA3NjQwLCA5NiwgNTA4NiwgMCwgOTIzNzksIDAsIAotICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMCwgNDE0MjIsIDAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDAsIDAsIDUwMTEsIDAsIDAsIAotICAgIDEyNjU4NywgMCwgMTI3MTY1LCAxMjcyNDEsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIAotICAgIDExODkyMywgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAKLSAgICAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCA2OTg1MywgMzY3MSwgODk3NiwgMTI2NDc0LCAwLCA0MTI3NSwgNjM3MiwgCi0gICAgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCA0MTI3MywgOTgzNzMwLCAwLCA2NzI4LCAwLCA5NzE1LCAwLCAKLSAgICA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIDExODkxOSwgNDIsIDAsIDQzNjg4LCAwLCAwLCA3NDU4LCAwLCAwLCAKLSAgICA2NTM4NSwgMTE5OTAwLCAwLCAxMTk1OCwgMCwgOTE3ODIyLCAwLCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAKLSAgICAwLCAwLCA5ODM1OTcsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCi0gICAgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIAotICAgIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDAsIDM4MDUsIAotICAgIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgOTgzNzkwLCA3NTQ0LCA5ODMwNDUsIDQzNDY5LCAwLCAKLSAgICAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCAKLSAgICA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDkyNjMzLCAwLCAKLSAgICA5Mzk5OCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgODg4OSwgMCwgCi0gICAgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgOTgzODA1LCA3NDM2NSwgNzU1MiwgMCwgMCwgCi0gICAgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCi0gICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCA5ODMyOTMsIAotICAgIDk4Mzc5MiwgMCwgNDM1NywgMCwgMTE5ODM3LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgNDI4NjAsIDExOTgzOCwgCi0gICAgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgCi0gICAgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyNjU4MywgCi0gICAgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDQzODE5LCA5ODM3NzAsIDAsIDY0NzE0LCAwLCAwLCAxMjE2MiwgCi0gICAgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAKLSAgICAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCAKLSAgICA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAKLSAgICAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgCi0gICAgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCAKLSAgICA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKLSAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCAKLSAgICA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIAotICAgIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCAKLSAgICA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCAKLSAgICA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCA5ODMwNDMsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIAotICAgIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgOTgzMTMzLCAKLSAgICAxMjI4OCwgNzgwNTcsIDAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgCi0gICAgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDAsIDk4MzQzMSwgMCwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCAKLSAgICA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIAotICAgIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIAotICAgIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCA5ODM1OTIsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgCi0gICAgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgCi0gICAgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIAotICAgIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCA0NDAzLCAKLSAgICAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIAotICAgIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgNjM5NTIsIAotICAgIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgCi0gICAgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgMCwgCi0gICAgNzgyNDksIDAsIDEyODU1MSwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDExOTEzMSwgMCwgODY0OCwgMCwgCi0gICAgNjc0MSwgNDMwNDcsIDAsIDEzMTgwLCAxMjg1MTcsIDQxOCwgOTE3OTcyLCA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgCi0gICAgNDE3NTIsIDc0MzM5LCA4NjQxLCA0MTQ0OSwgMCwgNzQxMDAsIDAsIDEwOTExLCA2OTQyLCAwLCAxMDI0LCA0Mjg0OSwgCi0gICAgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgCi0gICAgMTE0MzcsIDQzNzQxLCA5MjE2MywgMTIwNzAwLCA2Mzk2NywgOTgzNDgzLCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgCi0gICAgNDMxNjYsIDAsIDExNjgwLCA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCAKLSAgICA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgCi0gICAgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIAotICAgIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgCi0gICAgNDI1NjQsIDAsIDE1ODIsIDk4MzcxNSwgNTUwOCwgMCwgMCwgMCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMCwgNzE3MywgNDk2LCAKLSAgICAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIAotICAgIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgCi0gICAgOTE3OTc2LCA5OTY0LCA3NDQwOSwgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgOTE3OTgyLCAwLCA3ODg1NywgNDIwODksIAotICAgIDc4ODU1LCA5MDA4LCAwLCAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgNzc5MjQsIDQyNTEzLCA3NzkyNywgCi0gICAgNDI4NDIsIDczOTg1LCA2NTI4NSwgMTE4OTc0LCAxMjcwMDMsIDk4MzcwMiwgMCwgMCwgMCwgMTEzMzUsIDY0MDY5LCAKLSAgICA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDk4MzczMiwgNjQzODQsIDkyMTY3LCA5Mzk4NCwgMzAyMSwgCi0gICAgNDIwMDQsIDAsIDAsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMCwgMCwgMCwgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIAotICAgIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIDQzOTk4LCAKLSAgICAxMTM2MCwgMCwgMCwgMCwgMTE4ODI2LCA0MjE0OSwgMCwgMCwgMCwgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgMCwgCi0gICAgNTUyNDcsIDQxMTAsIDY2MDA1LCA2OTU5LCAxMDkyOSwgMTE5MTEwLCAwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCAKLSAgICA2MDI1LCA2OTI0MiwgOTgzMTc2LCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3NiwgMTAxMTcsIDk4MzE2OSwgCi0gICAgOTIyOTcsIDQxNjM2LCAwLCAwLCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMCwgNjU2NjksIDEyODMzOSwgNDk2MywgMCwgCi0gICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgMCwgNDE5NDgsIDAsIDAsIDAsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgCi0gICAgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjgyMTAsIDQxNzY2LCAxMTkxMTQsIDY1ODgyLCA3ODg0OSwgCi0gICAgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgCi0gICAgNzM4MzUsIDc4ODgsIDAsIDM5ODAsIDAsIDQyNjU2LCA0MTUwNywgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCAKLSAgICA3ODY3LCA2OTIxOCwgNjIzNiwgOTgzMTM0LCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIAotICAgIDMxMDMsIDAsIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIAotICAgIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIAotICAgIDI2OTEsIDAsIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIAotICAgIDQxMjUxLCAwLCAwLCAzOTc5LCAwLCAwLCA3NDgxMywgOTgzNzM5LCAwLCAwLCAwLCA5MjUyNCwgNDEyNjYsIDAsIDY2NTY2LCAKLSAgICAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIAotICAgIDEwNzE2LCAwLCA0MjgyMiwgMCwgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIAotICAgIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAKLSAgICAxMjY1MzcsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIAotICAgIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgNDMyMTksIDEyODcwOSwgOTgzNDYwLCAxMjE4NSwgMTI4ODc5LCA3MDA3MiwgCi0gICAgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgOTgzMzk3LCA0MjA5LCAxMjA3MDIsIDAsIDY1ODc5LCA0MTUzOCwgCi0gICAgNjU2MTIsIDEyNzU0MywgNjY5LCA1Njc5LCAwLCA2OTc4NiwgOTI1NDAsIDAsIDk4MzQ2NCwgNTY3OCwgMTE4MjEsIDAsIAotICAgIDY3MTEsIDQ2MCwgMCwgMCwgOTgzNDYxLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIDAsIDk4MzQ2MiwgMCwgCi0gICAgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyODA3OSwgCi0gICAgNTc5MiwgMCwgMCwgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCAwLCA1NjgzLCA5ODMzOTIsIDAsIDc4MTE5LCAxNTQ5LCAwLCAwLCAKLSAgICAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDEyODUxMiwgNjk3NjgsIDE0NDksIAotICAgIDEwMjQxLCA3ODI5MCwgMTI4MjI4LCAwLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCAxMjg1NDgsIDg1ODQsIDY4MDMwLCA1NTY3LCAKLSAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5ODMyNTYsIDEyODAyNiwgMCwgNjU3MDgsIAotICAgIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgCi0gICAgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDAsIDY2NTk4LCAwLCA2NDY2NCwgMTA2NDcsIAotICAgIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCA0MzAwNiwgMTE5OTAzLCA4ODAyLCA3ODcxMCwgCi0gICAgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCAKLSAgICA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgNzg3MjUsIDc4NzIyLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAwLCAKLSAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAKLSAgICAxNjY3LCA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIAotICAgIDM2MTAsIDk4MzE5OSwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgCi0gICAgMTA4NzUsIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgCi0gICAgMzg3NCwgMCwgMCwgOTgzNjE5LCAxMjAzMzEsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKLSAgICAxMTk1NzAsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgCi0gICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgCi0gICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAotICAgIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCA5ODMyMTMsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCAKLSAgICA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDAsIDc0MzgyLCA3Mzc4MSwgNzkxOCwgNzM5ODgsIDAsIAotICAgIDAsIDkxNzg4NCwgMTcyOCwgMCwgNDM3NjQsIDE3OCwgMTI5NzIsIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCA5ODMzODEsIAotICAgIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIAotICAgIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKLSAgICAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzE1LCA2OTkxMSwgMTE5MTAsIAotICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKLSAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NTAsIDAsIDc0OTEsIAotICAgIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIAotICAgIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIDEyMDIzOSwgNjU1MTYsIDEyMzIxLCAKLSAgICAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIDEyMDI0OCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgCi0gICAgNjU4MDEsIDEyODgwOCwgMCwgNjY1NzIsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCA3ODQwMywgCi0gICAgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIDQzMjU5LCAwLCA2MTA3LCAwLCAKLSAgICAxMTkxNzcsIDAsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgCi0gICAgODcyMSwgMTIwMjMzLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgCi0gICAgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgOTgzMDcyLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgNzQ4MzEsIAotICAgIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgMCwgCi0gICAgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIAotICAgIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA5ODMxMDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCi0gICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgOTgzMTk3LCAwLCAwLCA3Mzg4MiwgNDk5LCAKLSAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDQsIDAsIDExOTY3LCAKLSAgICAxNzc1LCAwLCAwLCAwLCAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIAotICAgIDQyNzgyLCAwLCAwLCAwLCAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIAotICAgIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgCi0gICAgNDEwOCwgMzg4MCwgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgCi0gICAgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgCi0gICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIAotICAgIDY2NTk5LCA2NjcyMiwgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCAKLSAgICA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIAotICAgIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIAotICAgIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCAKLSAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCi0gICAgMTMyNjYsIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDk4MzMwNywgODEzNCwgCi0gICAgMTI4MDI4LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIAotICAgIDY2NTg1LCA3MTI5NywgMzE5NiwgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCAKLSAgICA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIAotICAgIDEyODc4MSwgNDExNjksIDg5MzksIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCAKLSAgICA0MTE3MiwgNzg1NSwgMCwgMCwgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzA4LCA2NDUsIDEyNjYxNiwgCisgICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgOTgzNTc4LCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIAorICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgCisgICAgNDkxMCwgMTI5MTkzLCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgCisgICAgNjQyMywgNDI3NzQsIDAsIDAsIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAKKyAgICAxMjA3MjEsIDkxNzgwOSwgODM0NiwgMTI4NDM4LCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgCisgICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgCisgICAgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAKKyAgICAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCAKKyAgICA3Mzk5MCwgNjUxMTEsIDk4Mzk2MCwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDE5NDYyOSwgCisgICAgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgNzQwNzYsIDgyOTQ5LCAyMzQyLCA4Mjk1MSwgCisgICAgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgCisgICAgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgNjQ2NTEsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIAorICAgIDY5NzAyLCA5ODM5MzcsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgCisgICAgNDM1ODcsIDEyMTA5OCwgMCwgMCwgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgCisgICAgNjU4NTQsIDQ4NzUsIDY1ODExLCA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgCisgICAgMTMxMDQsIDY3ODI4LCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTIxNDEyLCAKKyAgICA2NjIxNywgMTIxMTkwLCA4MzM0LCA5Mjc1NSwgODMyMDcsIDM0NDksIDEyMTI2NCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgCisgICAgODMyMTYsIDY2NDA1LCA3MDQzMCwgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAorICAgIDEyNzAxNCwgODMxOTgsIDY3ODI1LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCisgICAgODM1MTAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCAKKyAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgOTgzNTc1LCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCisgICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAKKyAgICAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgCisgICAgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCAKKyAgICA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgCisgICAgMTIwODI5LCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIAorICAgIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCA4MzEzOCwgMTI1MDk4LCAxMjA3MTAsIDEyOTA2NCwgNDE1NTIsIAorICAgIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgCisgICAgNDcxNiwgNDMyNzcsIDEyMDkzMiwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDEyMDkyOCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAorICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAKKyAgICA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAKKyAgICAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgMTIyNzgsIDc1MDExLCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAKKyAgICAxMjg5OSwgODMxNTUsIDAsIDI2OTksIDEyOTMwNCwgNzM4NDUsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAKKyAgICAxMTkzMTQsIDAsIDY2NDg5LCA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIAorICAgIDQxMjEwLCAxMTkzMDUsIDAsIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgCisgICAgNjA5MCwgNjQyNTcsIDc4MTIsIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIAorICAgIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgCisgICAgNjgyMTYsIDE5NDg3MSwgMTIxMzkwLCA1MjQ0LCA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgCisgICAgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIAorICAgIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIDEyNzA5OSwgMTE4MzgsIDc1MDAxLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCAKKyAgICA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDAsIDEyMDM4MiwgMTE4ODUwLCAKKyAgICAxMTkxNDEsIDEyODQ2MSwgNjYwMTUsIDY3MzMyLCA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIAorICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgMTI4ODQyLCAwLCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAxMDk3NiwgCisgICAgMCwgNzEzMjUsIDEyODM2NCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCA5MTc4MjMsIDkwMTIsIDE5OTU4LCA3NDQyMCwgCisgICAgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDY0MjYwLCAzNzQsIDQzMTk1LCA4MTYsIDkyNzgzLCAwLCA4MzE5MSwgCisgICAgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgMTI3ODk1LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIDgyOTY3LCA0ODc5LCAKKyAgICA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgMCwgMTI5MTg5LCAKKyAgICAxMjY2MTgsIDEyMDM5MCwgNzQ5NTMsIDY1NTY3LCAxMjA2MTQsIDE5MjksIDEyMDk4NCwgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIAorICAgIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIAorICAgIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgNjc3NTgsIDE3NjAsIDI0MjEsIAorICAgIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIAorICAgIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEyMTIyNCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgCisgICAgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgCisgICAgNTEzNywgMTk0NjE3LCAwLCA3Mjc3LCA2NTYyMiwgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgCisgICAgNDM5MTIsIDEyODM4NSwgNDc0OCwgOTIyMjgsIDEyOTE4NSwgMTk0NjAxLCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIAorICAgIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCAKKyAgICA5MTc3ODUsIDg0MTAsIDQ0NTQsIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgCisgICAgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDAsIAorICAgIDc4ODI3LCAxMjYzNCwgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDEyNDkzNCwgNzQ0NTIsIAorICAgIDk4Mzc2MywgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCAKKyAgICA3NTM3LCAxMjQ5OTEsIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMCwgCisgICAgMTI3OTI5LCA5NzgwLCAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAKKyAgICAxMTQxNCwgNjg3ODEsIDI1MzEsIDEzMDM0LCAxMjkxNTksIDAsIDQyMTEsIDEyNTksIDc1MTcsIDcwODY2LCA3MDE5OCwgCisgICAgODMxMjIsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA4MzEyNSwgMTk0NTY2LCAxMTA2NCwgNDExMjksIAorICAgIDEyMTI1MywgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgNzQyOTMsIDc0NTMwLCA2NDA5OCwgNjU3OTMsIAorICAgIDQ1MzUsIDEyMTI2NywgNDI3MSwgNzg0MTcsIDEyNzA1OSwgNjc2OSwgNDE0MTAsIDEyNzI1NywgNjQyNjIsIDY3NjcsIAorICAgIDQxNDA3LCA2NjI3MywgOTE3ODE2LCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEyMDg4NiwgMTI2NjA4LCA3MDgzMCwgMCwgCisgICAgODMyMzIsIDAsIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMjEyNTQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgCisgICAgMCwgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKKyAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDAsIDEwNzc1LCA5NzkzLCAKKyAgICA1MDA5LCAxMjg3NzQsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIAorICAgIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDY3MzQyLCAxMDIzNiwgNjU5MTgsIDQzNzgyLCAKKyAgICA3ODc2OSwgNzgwNjAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCA4MzI1MSwgNjk4NDQsIDQzMjAwLCA1ODMyLCAKKyAgICA3MTIwOCwgODMyNTAsIDUxNDEsIDQyNjAwLCA3MTg2NiwgNDMyMDMsIDEyNzIwOCwgMTIwMTI5LCA0MzI4NiwgMCwgCisgICAgMTI4MjExLCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIDcwMzEsIAorICAgIDg1OSwgMTI4NDg4LCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgMTI4NjM4LCAKKyAgICA2NTE5NiwgMTI1MDg0LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIDc2NjcsIAorICAgIDE5NDc5MiwgMTE4MjIsIDEyODU5MSwgMTExMzUsIDk4MzYwMCwgMCwgMTc4OCwgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgCisgICAgOTgzNDYxLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgNzAwODYsIAorICAgIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCA0Mzc1NCwgCisgICAgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgOTgzNjA5LCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCisgICAgNzA4MjUsIDExODk4OSwgMTI5NDA5LCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAKKyAgICAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMTIwNDc4LCAKKyAgICA5MjY0MywgMTIxMTE4LCAxOTQ2NzMsIDEyMDMyLCAwLCA5NzI1LCA5ODM0OTEsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIAorICAgIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgCisgICAgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMjg4NzUsIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIAorICAgIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMTkzMjEsIDQzNzAwLCAwLCA4ODcyLCA3NzgzLCA5MTc5OTEsIDEyMzk4LCAKKyAgICA4MjM3LCAwLCAwLCAxMjM5NSwgMCwgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCAKKyAgICA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAwLCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIAorICAgIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgCisgICAgNjcyMzQsIDQ5LCA2NjI3LCAwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIAorICAgIDY0NDE4LCAxNjQzLCA2NTIxMywgODQwNSwgMzQ3MCwgNjcyNDQsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDc4MDEzLCA3ODQ0NSwgCisgICAgMTI1MTI0LCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCAKKyAgICA3MDgyNCwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgCisgICAgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgCisgICAgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIAorICAgIDcxMjU1LCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMCwgMCwgNzg3NzEsIDY0NTgyLCAwLCAKKyAgICA3Mzc5NCwgNjczOTUsIDgwMjIsIDEyMDk4OSwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCAKKyAgICA3NTAwNywgNTU3MCwgMTg4MSwgNzIxMCwgMTIwNDI1LCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgCisgICAgNTU2OSwgMTk1MDA3LCA0MjMzOSwgOTI5OTcsIDYwNjMsIDY3ODg4LCA2OTk4MSwgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgCisgICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMCwgOTI5MDUsIDkyMTgwLCAxMDUwMywgNzAzODcsIDM0MjMsIDM4NzAsIAorICAgIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCA5ODMxMTYsIDAsIAorICAgIDc0OTYxLCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCAKKyAgICA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgMTEzNzAwLCA1ODksIDcwNTAsIAorICAgIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIAorICAgIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCA2NjU5MiwgCisgICAgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIDY2ODU0LCA4MTIwLCA3MDMxMSwgCisgICAgMTk0NTg1LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgCisgICAgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAKKyAgICAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIDc0MDk0LCA5MTc4ODgsIDEyNTA2MCwgNzc5NzAsIAorICAgIDkyMTcxLCAxMjcyMTksIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgCisgICAgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIAorICAgIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCA5ODM4OTgsIDEyOTU2LCAKKyAgICAxMTM2NjYsIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDEyODY0OCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAKKyAgICAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIAorICAgIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIDcwODA5LCA2ODMzNCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgCisgICAgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIAorICAgIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIAorICAgIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgOTgzOTMyLCA5ODczLCAKKyAgICAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgCisgICAgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgNjc4NDEsIDc0MzcwLCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIAorICAgIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIAorICAgIDc4ODM3LCAxMTQ3MywgNTQ0OSwgMTI1MiwgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgCisgICAgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAKKyAgICAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKKyAgICA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIAorICAgIDQ5ODYsIDEyMTg5LCAxMjc1MTIsIDY3NjQ4LCAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIAorICAgIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgCisgICAgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMCwgCisgICAgOTYzNSwgMTI2MDAsIDg4NzEsIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIAorICAgIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgCisgICAgMTI5MTU1LCAxMjgyNzksIDY3Mzc3LCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgCisgICAgNjczNjksIDY1NTUsIDEyOTE0OCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCAKKyAgICA1NDQ3LCAwLCAxMjg5NSwgNjU1OTMsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIAorICAgIDc0MTE0LCA2NTgyMCwgNjIzMiwgNjgyMzMsIDEyNjYyNSwgMCwgNDM2MDgsIDExOTA5MSwgNzgxMTgsIDY1MzgsIDQzMzUsIAorICAgIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDk4MzY3NCwgCisgICAgNDI4NzgsIDExNTAwLCA2NzQwNSwgMTI4MTUyLCA3NDU3OCwgMCwgNjU4MzIsIDEyODY2NywgMCwgNzA3ODksIDY3MzMzLCAKKyAgICAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgNjczMzYsIDk4Mzg3OSwgOTIzMDcsIDAsIDAsIDUxMzMsIAorICAgIDY3MzgyLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIAorICAgIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIAorICAgIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIAorICAgIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCAKKyAgICA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgCisgICAgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDc1MDcxLCAKKyAgICA2NDI4NywgMTI4NDA2LCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAwLCA2ODA4OCwgCisgICAgNzcwMywgODg0MCwgODAzNSwgMTIwNzExLCAwLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjg0MzcsIDc4NTg2LCAxMjgyNjgsIAorICAgIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMTEyMDYsIDEzMTM2LCAwLCAwLCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCAKKyAgICA3MTMwOCwgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIAorICAgIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAwLCAxMjgxNzksIDAsIDk1MDEsIDEyMDgzMiwgCisgICAgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCA2ODc1OSwgCisgICAgNzAzMTIsIDE5NTA4NSwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAxMjEzNzMsIDAsIDk4MzM1NSwgMTk5MzUsIAorICAgIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMjc5NTUsIDgzMTMzLCA5MzA1NywgNTI3NSwgMTIwMTk1LCAxMjg2MzIsIDg2MzcsIAorICAgIDQzNjgyLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIAorICAgIDI0MjYsIDEyMDQyLCA5MjE5NCwgOTgzOTExLCA5NTM3LCAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCAKKyAgICA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIAorICAgIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDAsIDMyMzcsIDAsIDY2ODk1LCA2ODI5NiwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgCisgICAgMCwgOTgzODE0LCA5NDA1NiwgMTExNzQsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCAKKyAgICA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDEyODY3OSwgNDE2OTksIAorICAgIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDExOTI0NSwgMTI4NDk0LCA4MTA2LCA0MTI4LCAwLCA2Mjc0LCA0NDk0LCA5ODMwODIsIAorICAgIDQwMTIsIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIAorICAgIDc2MTEsIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIAorICAgIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgCisgICAgMTIwMTY2LCAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgCisgICAgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAKKyAgICAxMTkyNjMsIDEyMDg1NSwgMTI3OTQ4LCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDE5NDg1NSwgMCwgNDI2NTcsIDcxMDc1LCAKKyAgICA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCAKKyAgICA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAxMjY0NzUsIDM4OTEsIDEyNzIwNSwgMCwgMjMzNywgCisgICAgMTczNSwgNzQzMjQsIDExMTM0LCAyMzYzLCAxMjEwMDgsIDkyNDQzLCA0MzU2MSwgNjc3MDYsIDEyODAzMiwgNzQxNDYsIAorICAgIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCA3ODc1MywgMTIwMzQ3LCA3NzI3LCAKKyAgICAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIAorICAgIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgNjc5NzQsIAorICAgIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCA4ODUwLCAKKyAgICA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAwLCA5NDA2OSwgCisgICAgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDk4MzQ0OSwgNzQ2MzksIDEyNzkwLCAKKyAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAorICAgIDQxMzEwLCAxMjA3MzAsIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgMTI2OTAsIDEyNzc2MywgMCwgNDM2NzIsIDEyNzg0MCwgCisgICAgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCA5ODM4MDgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgNDM4NzEsIDAsIDEwMDc3LCAKKyAgICA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCA2NzMzNSwgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIAorICAgIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgCisgICAgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAKKyAgICAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzgxNiwgNjgyOTAsIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIAorICAgIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIAorICAgIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAKKyAgICAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMjgwMTgsIAorICAgIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIAorICAgIDY3MzQ0LCA5ODMzNTIsIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyODIzNiwgNjczNTIsIAorICAgIDY3MzUxLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCAKKyAgICA1NTE1LCAxMjkxODYsIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDcwMTE2LCA3NDIyNSwgCisgICAgNzQ4NDEsIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgCisgICAgMTE4ODgzLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCAKKyAgICA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCAKKyAgICA0MjY3NywgNjc4ODksIDkzMDQwLCAxMzExLCAxMjg5NDksIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAKKyAgICAxMjg4ODAsIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIAorICAgIDc4MTc3LCA2NjkwNiwgMCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgOTgzMzczLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIAorICAgIDY1MzAsIDEyMTQxNCwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAKKyAgICA5ODM3MjksIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgCisgICAgNzgxNjUsIDY2MDM2LCA3MDE2NiwgMTIwOTM3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgCisgICAgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3NDk5MCwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIAorICAgIDEyMTE5NSwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDk4Mzg1NCwgMTE5NjMyLCA3MDQyNywgNjU2MCwgNzAxNiwgCisgICAgNzQyNzQsIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgCisgICAgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKKyAgICA0Mzg0NSwgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCA5MTc5MzEsIDQzNTYzLCA5MjIzMiwgMTI4OTE0LCAKKyAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgOTgzNjA3LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKKyAgICAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgNDM4MzQsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIAorICAgIDY1NTU0LCAxMTk4ODIsIDcxMzA1LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgCisgICAgMTI2ODYsIDQzODMxLCA0MjM3NSwgNjU3ODAsIDEyNDk0NCwgNjYzNTIsIDEwNDcwLCA3MTExOSwgMTEwNTksIDEwNzkxLCAKKyAgICA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKKyAgICA3ODI4NCwgNjYzMzgsIDY2Mzk1LCA5MTc4MzIsIDE4MzksIDExODc5OSwgOTgzMjE5LCAxMDkyNywgMTcwMSwgOTgzNjY0LCAKKyAgICAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIDExOTg2NSwgODk1LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAorICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIAorICAgIDEyODAxMywgNjU4MTIsIDEyMDY3NSwgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCisgICAgMTk0ODA1LCAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCisgICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCisgICAgNDQ4OSwgNjg3NTAsIDEyNTExNiwgMTk0NzkzLCAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAxOTQ3NjEsIDg4NjcsIAorICAgIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzEwNjQsIDE0MTAsIDc4NzYzLCA5ODMyNTIsIDExODg3OCwgOTgzNTY3LCAKKyAgICAxMjg3MTUsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCisgICAgMTIxNTAyLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAxMjcxNjcsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAKKyAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMjEyNzksIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCisgICAgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCA3MTQ2MywgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCAKKyAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAwLCAKKyAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA0MjgwOSwgNDI4MDcsIDcwNzk4LCA2NjI5MCwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIAorICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIAorICAgIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgCisgICAgMTAyNjAsIDExODk4MCwgNTUyODQsIDc4Njg2LCAxMjcxNzcsIDEwMzg0LCAxOTQ3OTQsIDEyMTE0NywgMTI5MTExLCA3NzUzLCAKKyAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgNjgwNjcsIAorICAgIDQzNTQ5LCA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgCisgICAgNjUwNDUsIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDkxNzc3OSwgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCAKKyAgICA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgNzg2ODQsIDkxNzU1NCwgOTIyNjAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCAKKyAgICA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCA5MjE3OCwgNjg4MjMsIDkwNjUsIDEyOTYxLCAwLCAxMjA0NTYsIDkyMjUzLCAKKyAgICAxMjgyMDQsIDI4OSwgMTI4NzE0LCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDczODkzLCAKKyAgICA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCAwLCA2Nzk5NCwgODIzOCwgMzExMCwgMTIwMTYyLCAzNTY1LCAKKyAgICAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCA0Nzg2LCA5ODMxNjgsIAorICAgIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAorICAgIDg4ODgsIDkyNzI0LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMTIxNDM2LCAwLCAKKyAgICA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAKKyAgICA2Nzk4NywgMCwgMTI4ODI4LCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIAorICAgIDEyMTAyOCwgNjYyLCAxMjg3MjAsIDkyNDQsIDE5NDg2MywgODMxODMsIDExOTI2MSwgOTgzNDMwLCAwLCAxMjA5MDEsIAorICAgIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgCisgICAgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAKKyAgICAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIAorICAgIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIDEyNTAxNCwgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIAorICAgIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIAorICAgIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgODM0NDQsIAorICAgIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3MTkwNywgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAKKyAgICAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCAKKyAgICA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgCisgICAgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCA5ODMzNjMsIDc0Mjk0LCA5ODM5MTQsIAorICAgIDY5MjM5LCAwLCA2Nzg3MSwgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIAorICAgIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIAorICAgIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCA3MTA1MywgNjU4NTgsIDE5NDgwNiwgMCwgNjc4MjksIDc4OTksIDAsIDg0MTcsIAorICAgIDQzNzk4LCA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKKyAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAwLCAKKyAgICAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDEyODE5OCwgCisgICAgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDAsIDEyMDQzMywgMCwgCisgICAgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDk4MzA5MiwgMTk0OTQ4LCA5MTc4NjYsIAorICAgIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgNzA3ODgsIDEzMjAsIAorICAgIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgCisgICAgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCA5ODMyMjcsIAorICAgIDAsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIAorICAgIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAKKyAgICAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIAorICAgIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIAorICAgIDkzOTkxLCAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIAorICAgIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCA5MTc2MjksIDI4NjYsIDEyOTA0NSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIAorICAgIDY3MDAsIDEyMDQ4NCwgMCwgMTIwNTgzLCAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCAKKyAgICA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAKKyAgICAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCA5ODM4OTksIDMxMDQsIAorICAgIDE5NDczNCwgMCwgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgCisgICAgMTk1MDg4LCA5Mjk2MywgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAKKyAgICAxODE0LCA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgCisgICAgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDAsIDc3OTMyLCAwLCAKKyAgICA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAorICAgIDY4MDU0LCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAxMjExMzYsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgOTI0MTUsIAorICAgIDY2NTg3LCAxMjQ5ODcsIDAsIDkyNDAxLCA0MzkyNywgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAxMjA5ODAsIDEwNjI5LCAKKyAgICAxMjc4NjksIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCisgICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgMTIwOTc1LCA5ODMzNTEsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgCisgICAgNTgxMSwgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgOTI5MzksIDAsIDAsIDEyODA0MSwgCisgICAgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgMTE5OTA2LCAKKyAgICA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIDAsIDkyOTQzLCAKKyAgICAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzEyMjMsIAorICAgIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgNjgzNzUsIDEwNzk2LCAKKyAgICA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgNzA4MDQsIAorICAgIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgCisgICAgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDExOTU3NCwgMjU2MiwgCisgICAgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIDExOTI0MSwgNjQ2OTksIAorICAgIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgNzA4NzMsIDAsIAorICAgIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAwLCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgCisgICAgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIAorICAgIDcxMjk5LCA2NjgxNywgNDI4ODEsIDAsIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIAorICAgIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAKKyAgICAxNzg2LCA2NjEsIDEyODExNiwgMCwgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAKKyAgICAxMjgyNjksIDY1NDY4LCAxOTQ5NjYsIDY1NzMxLCAwLCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMCwgCisgICAgNjU2MiwgMTI5MjgsIDE5NDkwNCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgCisgICAgMTIwNzUxLCAwLCAxMjExMTMsIDk4Mzk3NiwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgCisgICAgMTIwNjk0LCAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTEzODA5LCAxMjY1MTAsIDAsIDQyMDA4LCA5NzA4LCAKKyAgICA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAKKyAgICA5Njg5LCA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCisgICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI3MzA3LCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMTIxMjI1LCAKKyAgICAwLCA3MDgxOSwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIAorICAgIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMTIxMjgxLCAwLCAwLCA3ODc1NywgMCwgMTEzODE1LCAxMjEzMDIsIDAsIDk5OTQsIAorICAgIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCAKKyAgICAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAKKyAgICAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NSwgOTgzNzQyLCA3MDMxMywgMTI5MTQwLCAKKyAgICA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCisgICAgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMCwgNDEyOTAsIDk4MzcxNiwgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCAKKyAgICA3MTMwMCwgNzAzMiwgNTk1NCwgNjQ5MzEsIDQzMTQsIDEyODYwMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCAKKyAgICA3Nzk5MywgNzA4MTgsIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIAorICAgIDExMDA4LCA2OTM4LCA3MDAyNiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgCisgICAgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIAorICAgIDEyNzgxOCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCAKKyAgICA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIAorICAgIDM0MjUsIDEyNzQ4OCwgMTI2NTIzLCAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDExMzcxOCwgNDMyMDIsIDAsIDAsIDY1MTk5LCAKKyAgICAxNzM4LCAxMjgzMTEsIDY3NzA3LCAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDAsIDY2Mzc0LCA5MTc5NTYsIDExOTU1MiwgCisgICAgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAKKyAgICAxMjEzNzcsIDEyNzA4LCA5MTc5NTQsIDUwOTAsIDUwODksIDEyNzk3NywgOTE3OTUzLCAxMTkxMDksIDAsIDcwODI2LCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgOTgzNTk3LCA5MjM3OSwgMCwgCisgICAgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMTk2MTcsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDExOTA0MiwgCisgICAgMCwgNTAxMSwgMCwgOTgzMzI5LCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAKKyAgICAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAKKyAgICA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCAKKyAgICA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgCisgICAgNDEyNzMsIDEyMTQ0OCwgNzQ1MzEsIDY3MjgsIDAsIDk3MTUsIDEyOTI5NywgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAKKyAgICAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIDY4MjQzLCAwLCA3NDU4LCAwLCAwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAKKyAgICAxMTk1OCwgMTExNjUsIDkxNzgyMiwgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIAorICAgIDY3MTMyLCA2NzEzMSwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKKyAgICA1NTU4LCA4ODc4LCA0Mzg0NCwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgCisgICAgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgCisgICAgMTI1MDkyLCAzODA1LCAwLCA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgCisgICAgMTI0OTg5LCA0MzQ2OSwgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgCisgICAgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgCisgICAgMCwgMCwgMCwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKKyAgICA5OTYxLCA4ODQ1LCA2NjY5OCwgNjgzMjUsIDEwNzkyLCA4ODg5LCAxMjE0MDIsIDIwOTgsIDAsIDY0NzUxLCA3MDMwOSwgCisgICAgNjY2MjIsIDEyNjYyNiwgMCwgNzQzNjQsIDY4ODE2LCAxMjkxNTIsIDk4MzgwNSwgNDI5MDksIDc1NTIsIDcwMDkyLCAKKyAgICAxOTQ1NjcsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCisgICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgOTgzMjMzLCAxMjUwNDUsIDM4LCA4NTMzLCA2NjY2OSwgCisgICAgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCAKKyAgICA0Mjg2MCwgMTE5ODM4LCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAxMjAxMjYsIAorICAgIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIDExNjUwLCAKKyAgICA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgOTgzNzcwLCAwLCAKKyAgICA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIAorICAgIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIDY5NTcsIDAsIAorICAgIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMTI4MDI2LCAKKyAgICA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgMCwgCisgICAgNjM5NjgsIDEyNzgzNSwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCisgICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAorICAgIDEyODYwMSwgMTA1MjEsIDcwNzg2LCA0MjE3MywgOTcwNSwgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgCisgICAgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAxMjc4NjIsIDE0MDMsIDEyNTA1MywgMTM0NywgOTYzMSwgCisgICAgNzQ0NDQsIDk4Mzc1MywgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDAsIDI1OCwgMTY1NCwgMCwgMCwgOTgzNDc5LCAKKyAgICA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAxMjEwNTMsIAorICAgIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCA4MzQ2NSwgMzc2LCA2OTg3LCA5MjIxLCAKKyAgICAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAxMjgwNjcsIDEwMTU0LCA5ODMwNDMsIAorICAgIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCA4Mjk1MCwgNjk3OTEsIAorICAgIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDEyMTA1NywgMTIyODgsIDc4MDU3LCA2NzA4MCwgMTQ5MywgCisgICAgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAKKyAgICAxMzEzMSwgNjcwNzQsIDY3MDczLCAxMjg1MDYsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDc1MDczLCA0MTI3NywgCisgICAgNjQ2NTgsIDk4MzQ1NiwgNjQzODAsIDY2MjUsIDQyOTExLCAxOTkwNCwgMCwgMTIxMzA1LCA3MTE5MywgNjUzNzEsIDcwNzgsIAorICAgIDEyODY5OSwgODMzLCAxMjgyMjgsIDYzNjksIDE5NDgxNSwgMTA5NzksIDQxOTUzLCA5ODMzNzAsIDQxNDM0LCA2MDYyLCAwLCAKKyAgICAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgNzEyMDAsIDk4MzU5MiwgMTIxMjIzLCAKKyAgICAxMjY1NjcsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCA5Mjg5MCwgNDE2MjIsIDAsIDAsIAorICAgIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCA5MDAsIDAsIDYzOTU3LCAxMTk2MzgsIDAsIAorICAgIDM2MTIsIDAsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgOTI1OTcsIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAKKyAgICAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgODMyMjIsIDgzMjIzLCA2OTU2LCA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIAorICAgIDEyMTAwNSwgMTk0OTM5LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgCisgICAgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIAorICAgIDM2MDIsIDgzMjgsIDExNzY0LCA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCAKKyAgICA0MzUyNSwgMTI3OTk2LCAyODU0LCA4MzIxNCwgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCAKKyAgICA2NzExNywgNzgyNDksIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIAorICAgIDY3MTE2LCA4NjQ4LCAxMjgzNzcsIDY3NDEsIDQzMDQ3LCAxMTk5MDAsIDEzMTgwLCA3ODA3NywgNDE4LCAxMjA2NTMsIAorICAgIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIDQxNDQ5LCA4MzE5NCwgNzQxMDAsIAorICAgIDgzMTg2LCAxMDkxMSwgNjk0MiwgMTIwODc5LCAxMDI0LCA0Mjg0OSwgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIAorICAgIDQ1NTQsIDY2ODkyLCA5MDIzLCAxMTY4NSwgMTIxNDc2LCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgCisgICAgNjcxMTMsIDY3MTEyLCA2Mzk2NywgMTI5MDU2LCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMTIxMjc1LCAKKyAgICA4MTU5LCA5MjYxOSwgMTE2ODYsIDcxNDc4LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAxMjkwOTAsIDkyMTgzLCAKKyAgICA2NDUyMywgMTAzNDMsIDEwNDA3LCA5Mjc2NCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgMTIwNTAsIAorICAgIDY4MjAxLCAyODYwLCAwLCAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCAKKyAgICA0Mzg3NSwgNjcxMDMsIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDExODkxNywgNjc0MDQsIAorICAgIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTI3OTc1LCAxNTgyLCA5ODM3MTUsIDU1MDgsIDAsIDEyMDkwNCwgCisgICAgNzQ1ODgsIDEwODAxLCA2OTg3NiwgOTIzNTQsIDExOTIwNywgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCAKKyAgICA3ODYwLCAxMjgwNDksIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIAorICAgIDg0MDYsIDExNTMsIDgzMjYzLCA2NDc4OCwgODMyNjUsIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIAorICAgIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAKKyAgICAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDgzMjQ4LCA3NzkyNCwgNDI1MTMsIDc3OTI3LCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAKKyAgICA2ODMzOCwgODMyMzksIDgzMjQwLCA4MzI0MSwgODMyNDIsIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgCisgICAgOTE3ODY5LCAwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCisgICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKKyAgICAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgCisgICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDgzMjM1LCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKKyAgICA2ODUwOCwgOTE3OTkzLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCA3NDg4NSwgNTUyNDcsIDQxMTAsIDY2MDA1LCAKKyAgICA2OTU5LCAxMDkyOSwgNDI5MDcsIDEyODA4MCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgNjAyNSwgNjkyNDIsIAorICAgIDEyMTA2OCwgMTk0ODU0LCAxMjUxMzksIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgOTgzMTY5LCAKKyAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIDY1NjY5LCAKKyAgICAxMjgzMzksIDQ5NjMsIDAsIDY4NzY1LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgOTgzODQ5LCA0MTk0OCwgMTI1MDAzLCAwLCAKKyAgICA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyMDYxNiwgCisgICAgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgCisgICAgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCA0MTUwNywgCisgICAgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAwLCAxMDUwNSwgCisgICAgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgNzExMDksIDEyODYwNCwgCisgICAgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCA0MjU2MCwgNTM5MSwgCisgICAgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIDY1NTUzLCA3OTMzLCA1NTYyLCAKKyAgICA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAxMjcyNDIsIDAsIDM5NzksIAorICAgIDcxMjQ4LCAxOTQ4OTksIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCA3NDYzMywgNDEyNjYsIDY4ODM2LCAKKyAgICA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgCisgICAgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIAorICAgIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCAKKyAgICA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgCisgICAgMTU5NSwgNDE2MTUsIDEyMTAwMSwgMCwgNzQyNjAsIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAKKyAgICAxMTM4MTAsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgCisgICAgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCAKKyAgICA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAKKyAgICAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIDExOTAyMiwgMCwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIAorICAgIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjcwMTcsIDU3OTIsIDEyNjY0MywgMTI4MzE5LCAKKyAgICA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDk4MzcwMiwgNTY4MywgOTE3ODk2LCAxMjA4OTUsIDc4MTE5LCAxNTQ5LCAwLCAKKyAgICA5ODMyMjMsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIAorICAgIDY5NzY4LCAxNDQ5LCAxMDI0MSwgNzgyOTAsIDExOTU4NywgMTk0ODkxLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCA3MDMzMCwgCisgICAgODU4NCwgNjgwMzAsIDU1NjcsIDI3MTcsIDgzMTc5LCA3MTQ0OCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgCisgICAgOTE3NjExLCAxMjA4ODEsIDAsIDY1NzA4LCA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCAKKyAgICA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAKKyAgICA2ODA1MiwgNjY1OTgsIDExMDU5MiwgNjQ2NjQsIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCAKKyAgICA2NTcwMSwgMTkzNCwgNDMwMDYsIDgzMjgwLCA4ODAyLCA3ODcxMCwgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIAorICAgIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgCisgICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMjc4OTksIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAorICAgIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDEyNTA2MSwgNzI1NiwgMCwgNjgwOTQsIDE2NjcsIDQyMTYxLCAKKyAgICAxMjA5ODEsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKKyAgICA2ODQyMCwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAorICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAwLCAzODc0LCAwLCAKKyAgICAwLCA5ODM2MTksIDEyMDMzMSwgMTI4NzczLCAxMTM2NjUsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCisgICAgOTIwNywgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAxNDU1LCA3ODc0OSwgCisgICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCA3NTAyMSwgNDM1MjAsIAorICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKKyAgICAxOTAsIDExOTg5OSwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMjUxMjgsIAorICAgIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgCisgICAgMTE4NDEsIDc5MTgsIDczOTg4LCAwLCAxMTM2NjgsIDkxNzg4NCwgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgCisgICAgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgCisgICAgNzExMDcsIDExOTA1NCwgMTk0OTY4LCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAxMjEzMjcsIDc0MDcwLCAKKyAgICAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKKyAgICA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMTcsIAorICAgIDY5OTExLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCAKKyAgICA0MTc0NywgMCwgMTI4MTEwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAorICAgIDEyNzQ3LCA4MzAwLCAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgCisgICAgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgCisgICAgMTIwMjM4LCA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIAorICAgIDY4NDk0LCAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCA2ODM4LCAzNTYxLCAxMTk4NjcsIDAsIDEwNjEzLCAKKyAgICA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCAKKyAgICA3NDU1NSwgNjU5NDAsIDQzMjU5LCAxMjY1ODYsIDYxMDcsIDgzNDU1LCAxMTkxNzcsIDc3OTQxLCA3ODQwMSwgMTE5MjcwLCAKKyAgICAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDExOTU3MCwgMTE5MjI3LCA2MDkyLCAKKyAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMCwgMCwgMTAzODAsIDg3MzMsIAorICAgIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgMCwgNjg0ODIsIDY1Mzk5LCAKKyAgICA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTI4MzI2LCA3MDMyMSwgMjA2NSwgCisgICAgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIDk1NzksIAorICAgIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAxMDcwMCwgODgwNSwgCisgICAgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMCwgOTgzMTk3LCAxMjcyNTIsIDAsIDczODgyLCA0OTksIAorICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDMsIDAsIAorICAgIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAxMjgwMDksIDk0NTgsIDkyOTM1LCA2NDcwLCAKKyAgICA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMjgzMDcsIDAsIDQyNzgyLCAwLCAxMjQ5OTksIDk4MzEzNSwgMTI4MzA5LCA3Mzg0OSwgCisgICAgMTIwNjY5LCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAKKyAgICAxOTQ4NzAsIDgyNTQsIDAsIDEwOTc1LCA0MzUxOCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIAorICAgIDEyNzE1MywgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgOTgzMTE4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAKKyAgICAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCAKKyAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCA4MzI3NCwgNzg5MiwgMTI3MDY0LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgCisgICAgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEyNzA2MiwgNzExOTEsIAorICAgIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCAKKyAgICA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIAorICAgIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCAKKyAgICA0MTIxMiwgNjc3MTMsIDE1MzYsIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgCisgICAgMTI3NDQsIDQ3NSwgMTIwMzk0LCAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDc4ODQyLCA3MzkyNiwgNjYyOTEsIDEwNjQ1LCAKKyAgICAxMjEyLCA2NTQzLCA5ODMzMDksIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIAorICAgIDcxODkyLCAxMjA5OTYsIDg5MjMsIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ4MjcsIAorICAgIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgCisgICAgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAxMTM3ODcsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIAorICAgIDEyODc3NSwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgCisgICAgNzE0NzIsIDEwNDgwLCA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMjY2MTYsIAogICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCi0gICAgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgMCwgMTI4MTQwLCA2ODQxNSwgOTgzMDkzLCA0NTM4LCAxMjA0MDYsIAotICAgIDQzMTQxLCAwLCA5ODMyMTAsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAotICAgIDk4MzE1OSwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAKLSAgICAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCAKLSAgICA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCA5ODM0OTAsIDExOTU2NiwgMCwgMTI4MDgsIAotICAgIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgOTgzMTkzLCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAotICAgIDkxODcsIDk4MzYxNCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIDcxMzY2LCA2NjY4MCwgCi0gICAgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgOTgzMjk3LCAwLCAxMjAwODIsIDEyMDA4MSwgMTIwMDg0LCAKLSAgICA0MTAyNywgMTIwMDg2LCAwLCAxMjAwODgsIDczNjYsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAotICAgIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgMCwgCi0gICAgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIDc4NTEsIDAsIAotICAgIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgMTI4MDk1LCA5ODM4NjQsIAotICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgOTgzMDQ3LCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgCi0gICAgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgOTgzMjgzLCAwLCAwLCAKLSAgICA2NTgyNSwgOTU3NywgNjgxOTksIDAsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIAotICAgIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIAotICAgIDc4MDY5LCAxMjA4MDgsIDI1OSwgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMCwgNjUxMjUsIAotICAgIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgMjI3OCwgMCwgMCwgMCwgMCwgMTAyMTksIDAsIDAsIDAsIDAsIDQzMTc4LCAKLSAgICAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIAotICAgIDY5OTI3LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCAKLSAgICA3ODA3NywgNjk5MjgsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgCi0gICAgNzY3NiwgMTE2NjQsIDAsIDk4MzY1OCwgNjk3MDcsIDAsIDExODgxMiwgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgCi0gICAgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAxMjcxNzcsIDEyNzgzNSwgNDk4NSwgMTMyODgsIAotICAgIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgOTgzMDk2LCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAotICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgMTI4NTg0LCAxMjYyMiwgMCwgCi0gICAgMCwgMCwgMTk0NzE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCAxMjY5ODMsIDQyNzMxLCA2Nzk3MiwgCi0gICAgMCwgMCwgMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDAsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgCi0gICAgOTUxMCwgNjYyMzcsIDk4MzMwMiwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgMzUwNSwgODcwNywgCi0gICAgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCA2Njg2LCAKLSAgICAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCA5ODMzMDYsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAotICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgMCwgMTA5MjYsIDExNzU2LCAxMTc1NywgCi0gICAgNjQ4NzksIDkxNzk0OSwgOTE3OTUwLCAxMjc4NDgsIDEzMjI3LCAwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTE3OTUzLCAKLSAgICA0MTQxOCwgMCwgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDkxNzk2MSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgCi0gICAgMTE5MjU3LCA0Mjc0LCA5ODMzMDAsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgCi0gICAgMCwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKLSAgICAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjgwNDksIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgCi0gICAgMTA0MDAsIDAsIDEyODgxOCwgNzYwLCAwLCAxMjA4OCwgNTc4NiwgMCwgNDIyNTYsIDExOTg2OSwgMTE5ODYwLCA0MTcsIAotICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCAxMTk4NjcsIDY2NTgzLCAxMTkyMzEsIDY0ODc3LCAyMjg0LCA2NDQ4MSwgCi0gICAgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDEyNjk5NSwgMCwgMCwgMCwgNDIyNzMsIDU4MTksIDAsIDkxNzU1NiwgMCwgCi0gICAgMTI2NjQzLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIAotICAgIDExOTU3NiwgMCwgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgNDIwNjMsIDAsIDQyODExLCAxMDMxMiwgNjk4NDUsIAotICAgIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAwLCAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAwLCAxMTk4ODAsIAotICAgIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIDAsIDg5NDQsIDAsIDAsIDEwNDczLCAwLCAwLCA2MDcyLCA0MzAyNSwgCi0gICAgMTAyOTksIDAsIDAsIDEyMDYwOCwgNjYzMjYsIDk4MzQ0NywgMTI3Nzk0LCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKLSAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCA5ODM3ODIsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCAKLSAgICA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc3OTI4LCA3NDE0LCA3NzkyOSwgNDM5ODIsIAotICAgIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCAwLCA4NTIsIDAsIDEyMTYwLCAwLCAxMDIxMiwgCi0gICAgNjU0MzUsIDAsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAxMTAzNSwgMTA0MTEsIAotICAgIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNzM5MDAsIDAsIDQzMTUsIDEyNjQ0LCAxMjc1MTYsIAotICAgIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDc4Nzc3LCA5MTc5OTgsIDExNTAxLCA0MTE3NywgMTI4Njg5LCAwLCA5MTc3OTIsIDAsIAotICAgIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgMCwgNDMzMTMsIDAsIDQxMTc2LCAwLCA5OTQsIDAsIDg0NTIsIDEyNzEwMywgCi0gICAgNzM5NjYsIDAsIDAsIDU5MjEsIDAsIDI1OTcsIDAsIDU5MjIsIDExODkwMywgNzc5NDMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIAotICAgIDEyNzEwNSwgNjcxOCwgMCwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyNjUzMCwgNDQxMywgOTIxOTYsIAotICAgIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIAotICAgIDQzMTY5LCAxMDE3NiwgMCwgNzQyLCAwLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCAKLSAgICA2NzU2LCAxMjg1OTAsIDEyODY0NiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCAKLSAgICA0MjQwNywgODE1OSwgNzE4LCA3NTcyLCA5NzMsIDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIAotICAgIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAwLCAxMjAyLCAwLCAwLCAKLSAgICA2NTg2MywgMCwgMCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgCi0gICAgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgMCwgNjY1NjUsIDEwODIxLCAwLCAKLSAgICAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAwLCAwLCAwLCAKLSAgICAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIDAsIDEwMTQxLCAwLCAKLSAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAotICAgIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgMzkzMSwgMTIwMjk1LCAKLSAgICA3NDE0MywgMCwgMCwgMCwgNzg0NjAsIDExOTgyLCAwLCAwLCAwLCAxMjgwMTYsIDY0NDg0LCAwLCA0MTE2NywgMCwgNDE3MzUsIAotICAgIDk0MDE5LCA3MTcsIDEwNzU0LCAwLCAwLCAxMjc5NzksIDAsIDYzNzY3LCAwLCAxNzgwLCA2OTM2LCAwLCA5MjI1NCwgODE5LCAKLSAgICAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKLSAgICA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODMzOCwgNTc1LCAyNjgsIAotICAgIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIAotICAgIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDEyMDcyMSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgMTIwMzQ2LCAwLCAKLSAgICA3ODEzMiwgNTkyNiwgNzgxMjgsIDc4MTMwLCA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIAotICAgIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDAsIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIAotICAgIDEyODM1MCwgODU5NSwgMCwgOTE3OTQ3LCA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDAsIDEyMzgxLCAKLSAgICAzNDg4LCA1OTMzLCAxMDAzMywgNzM3MzgsIDY2MjQxLCA2NTU3MCwgMCwgMTIyOTcsIDExOTE1MywgMTk1NSwgMCwgNTM0OSwgCi0gICAgNDI1MzgsIDAsIDAsIDc0MTEsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDk4MzIyMSwgNzYzOCwgCi0gICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgNzQwMzcsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCi0gICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgMCwgMjAyNywgCi0gICAgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKLSAgICAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAxMjcxNDgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAKLSAgICAwLCA0MTI3NCwgNTc3OCwgNjMwMiwgMCwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNzc4ODksIDE5NDkxNCwgOTQ1MiwgMCwgCi0gICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDAsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCAKLSAgICA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgCi0gICAgMTIwNDEyLCA0MTI2NywgNDY0NiwgMTIwNDI1LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKLSAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDY0NzI4LCAwLCA3ODY3MywgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIAotICAgIDE5NTA4OSwgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgCi0gICAgMTE5MTQzLCAwLCAwLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCAKLSAgICAxOTUxMDEsIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAwLCAwLCAxMDIyOSwgCi0gICAgMTA2MzUsIDgyNiwgMTI4MDgxLCAxOTUwODIsIDE5NTA4NSwgMTk1MDg0LCAxOTUwODcsIDY0ODMsIDkyMjExLCAxODA4LCAKLSAgICA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgCi0gICAgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIAotICAgIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgCi0gICAgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgCi0gICAgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgOTgzNzAzLCAKLSAgICA0MzI1OCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCAwLCA5MTc1NDQsIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAKLSAgICA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKLSAgICA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgNzg4MDIsIDAsIDAsIDQzNDQyLCAKLSAgICA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODksIDAsIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAKLSAgICAwLCAxMTk5MjMsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCAwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDAsIAotICAgIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKLSAgICAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKLSAgICAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIAotICAgIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCAKLSAgICA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgCi0gICAgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNjgwMzEsIAotICAgIDExODgzOCwgMCwgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIAotICAgIDg4OTIsIDAsIDkyMzM5LCAwLCA5ODMwNzMsIDU3ODIsIDQyMCwgMCwgMCwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMCwgCi0gICAgNjQ4MTQsIDYzNzk2LCA3Nzk2NSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDAsIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIAotICAgIDAsIDQzNjc2LCAwLCA2OTY3MywgMCwgMCwgMCwgMzI5LCA3Nzk2OCwgOTI3MDcsIDkxNzU0OCwgNzM5OSwgMCwgNDExODgsIAotICAgIDEzMjQ0LCAxMjA0NjYsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIAotICAgIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDEyODU0MywgCi0gICAgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIAotICAgIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDk4MzYzMiwgNzM4NjgsIDExODk0NCwgCi0gICAgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCAwLCA3MDA3MSwgMTI4NjcwLCAKLSAgICA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCAKLSAgICA5MTc4ODgsIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIAotICAgIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAKLSAgICAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAotICAgIDEyNjYzNSwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAKLSAgICAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCAKLSAgICA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIDc5NDYsIDEyNTQxLCA4MTgyLCAKLSAgICA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIDY4MDExLCA4ODQ3LCAwLCAKLSAgICA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDk4MzIwOCwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgCi0gICAgOTgzODU4LCA1NjA3LCA0MTA4OSwgMCwgMCwgNzQyNTYsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIAotICAgIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCAwLCA2NTAxMSwgNDEwOTAsIDAsIDAsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgNjgwMTksIDM1NzIsIDEwMDIzLCA0OTU5LCAKLSAgICAxMzA3OSwgMCwgOTgzMjc2LCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAKLSAgICAxMzMwNCwgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCA5ODMzMDksIDk3MiwgCi0gICAgNDE0NTMsIDk4MzQ0MiwgMCwgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgOTgzNzM1LCAyMjg4LCAxOTk1NSwgOTUzOCwgMCwgCi0gICAgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCA5ODM0NDAsIDExMDE5LCAwLCAwLCAwLCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAKLSAgICAyNjEsIDU5MjcsIDc3OTEsIDAsIDczNjIsIDAsIDEwNjk2LCAwLCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIAotICAgIDkzOTk1LCAyODIsIDEyNjUxMCwgNjQzNywgNzQwNzgsIDEyODAwMCwgOTgwMSwgMCwgNzQxNzcsIDAsIDAsIDM0NzQsIAotICAgIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCA3ODg3NCwgNzQwNzYsIDc4ODc5LCAwLCAwLCAwLCAwLCAwLCA4NzUxLCAKLSAgICAxMTQ5OSwgMTIwMjczLCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDkyNjA4LCAxMjAyNzIsIDY4MDE3LCAKLSAgICA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIDQ2NjksIDAsIDY4MDk5LCAKLSAgICAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCA5MTc4NzUsIDg2NjQsIAotICAgIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCA5NzcyLCA3MjU1LCA4ODg2LCAKLSAgICAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgOTIzODEsIDEyMDI1NSwgCi0gICAgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIDEyMDI2MywgMTIwMjY0LCAxMDE3LCAKLSAgICA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgMTIwNjEzLCAxMjg3MDQsIDAsIAotICAgIDczODU1LCAxMTMwNywgNjY3MDcsIDkxNzg3MSwgMTI3NzUxLCAxMTc0NSwgNzkxOSwgMCwgMTY0MSwgMCwgMCwgODk2NiwgMCwgCi0gICAgMCwgNTkwOCwgMCwgMCwgNjc0NCwgMTI4MzU1LCAxNjk5LCA2OTg2MSwgNzQ4NDMsIDkxNzkzMywgMCwgNjMwNiwgMTAxNjksIAotICAgIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAzNzY2LCAyMzg5LCAxMjA0NTYsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgCi0gICAgMTMxNTMsIDAsIDQyMzg2LCAwLCA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAKLSAgICAxMDU0MSwgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgMCwgNDE0MzUsIDQzNTIsIAotICAgIDk4MzYxMCwgMjQzNSwgMTIwODA5LCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAotICAgIDEyMDQ0NywgMzc2OCwgNjgxNDIsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAotICAgIDQ1NjQsIDAsIDAsIDc0MjcxLCA3Mzc1MywgODM3NCwgOTgzMTU2LCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgMCwgCi0gICAgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCA3NDA3NSwgMTI3MjM2LCAxMjgwMTksIDQyNjE0LCAKLSAgICA1MzUzLCA1NjI1LCA3NDE3OSwgMCwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIDY5OTQyLCA2OTUyLCAKLSAgICA5ODMyNzIsIDEyMDc1MiwgNzg3NjIsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgMTA0NzEsIAotICAgIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgMjQwMCwgCi0gICAgNTYyNywgMTIwMDE3LCAxMjAwMTgsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMCwgMjAzLCAwLCAwLCAwLCAwLCAKLSAgICA3ODM1MCwgMCwgNjQzNzgsIDQyMDU0LCAwLCAwLCA1NTQsIDExOTY0OSwgMTEzNTgsIDAsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIAotICAgIDEyNjQ2NCwgNzM4OTEsIDAsIDAsIDU2OTQsIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAwLCAKLSAgICAwLCA2OTc2NCwgMCwgMCwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDAsIDY5NzcwLCA0MzY1MSwgMCwgNjgxMTgsIAotICAgIDEyODAyNCwgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIAotICAgIDAsIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCAKLSAgICA3NzU2LCAxMjM0MiwgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIAotICAgIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCi0gICAgMCwgNDE0OTQsIDkyMzE2LCA0NjYwLCAwLCAxMDQwNSwgMCwgNzg4MDMsIDAsIDAsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCAKLSAgICA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgNzg4NjcsIDgyMTQsIDAsIDAsIDAsIAotICAgIDQxNDU3LCA5ODM5NzAsIDExOTU4OSwgMTk2OSwgMjM4NCwgODA5NywgOTE3ODY0LCA3NDEzLCA2ODAxMiwgNzgwMjksIAotICAgIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIAotICAgIDkxNzg2OCwgMCwgODQyOSwgMCwgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgOTgzOTY3LCAKLSAgICA5NDAwNSwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCAKLSAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAotICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKLSAgICA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIAotICAgIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgCi0gICAgMCwgNjgwMDksIDAsIDY1NTA3LCAyNDQ3LCAwLCAwLCAxMjgwNDIsIDEyNjU0NSwgOTgzMTM3LCAwLCA2MzM0LCAwLCAwLCAKLSAgICAxOTkzNywgMCwgOTIzNjgsIDAsIDU2NzUsIDI1NCwgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgCi0gICAgNDIzMTIsIDAsIDAsIDY5NzIsIDQyODI2LCAwLCA0MjQ2NCwgMTIwNTY3LCAwLCA5MjY0NSwgNzQ3OTYsIDY0NDAwLCAKLSAgICA2NDY5MywgMCwgNzc4NjEsIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCAKLSAgICA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIAotICAgIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAKLSAgICAxMjQ3MiwgMCwgNjk4NjQsIDc2OTksIDEyMzkzLCAwLCAwLCAwLCA3NDUxOCwgODIyMywgMCwgNDI2MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4MzAyLCAwLCAxMjgwNDYsIDQzNDE5LCAwLCA2NDU1NCwgMTA1NzQsIDM4NzgsIDAsIDQyMzUyLCAxNzUyLCAKLSAgICA3Mzc4NSwgMCwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDAsIDAsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIAotICAgIDAsIDQzNDA2LCA5ODM3MzYsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgMCwgNjQ0ODgsIDAsIDAsIDY0MDQxLCAKLSAgICA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMCwgNzg4NjMsIDAsIDEzMDIsIDAsIDc4ODYxLCAxMTkxMzQsIDAsIDAsIAotICAgIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDAsIDM5OTUsIDY4MzYwLCA2NTYwOCwgMzcxNCwgOTIxOTAsIDAsIDAsIAotICAgIDEwOTk5LCAxMTc1MCwgMCwgNDMyNTEsIDY4NjYwLCA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgCi0gICAgMTE5NjQsIDAsIDk4MzE4NSwgMCwgMCwgNjg0NTUsIDQyODYzLCA3MzgzOSwgMCwgMCwgMCwgMCwgMTI2NjI5LCAwLCA0NjgsIAotICAgIDYxMiwgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgOTgzMTYzLCAxMjI4MCwgMCwgNTQwLCAKLSAgICA3NDU2NCwgMTE5MDE3LCAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgCi0gICAgMCwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCA2MjI2LCAzNTMsIDEyMzk2LCAwLCAxMTk2MTIsIAotICAgIDY0NzQyLCAxMjg2ODIsIDEyMDI4MiwgMCwgOTgzNDUwLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIAotICAgIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMCwgCi0gICAgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgNDM2MCwgMTI3MDA5LCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgMCwgCi0gICAgNDI1MjEsIDg1MzksIDk4MzcyNSwgMCwgMTE4OTg2LCAwLCA0Nzg4LCAwLCA2ODAyMywgNjU3MzQsIDk4MzQ1NSwgNDM3OTAsIAotICAgIDAsIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgCi0gICAgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCAKLSAgICA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDkxNzgzNywgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAotICAgIDEyNzA5LCA2OTg2LCA5MjM2NCwgNjgwMTUsIDAsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgCi0gICAgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAwLCA2MDcsIDAsIDExOTg1MiwgMTI4ODQ2LCAxMjkyMywgCi0gICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIAotICAgIDQyODM4LCAwLCA0MDk3OCwgOTgzODk3LCAxMTk4NDAsIDAsIDk4MzA3MSwgMCwgNjY0NDQsIDEwNTM4LCAwLCAyNTUwLCAKLSAgICAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgNjU4MjIsIDEyNjU2NywgCi0gICAgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIDEyMDU1MSwgNDIzODAsIAotICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIAotICAgIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCAKLSAgICA0NjAzLCAzMDg0LCA5ODMxNTUsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzcwNCwgCi0gICAgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCA0MjM4OCwgMCwgCi0gICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCA0MDk2MywgCi0gICAgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDk4MzExMywgMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCi0gICAgMTk0ODk1LCA3ODM2NywgMTI3Mzc3LCAwLCA5Mzk2MywgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIAotICAgIDAsIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCi0gICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMiwgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCi0gICAgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCA5MTc2MTcsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgCi0gICAgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIDExOTE1OSwgMTI4MTgzLCAxOTQ4NzQsIDY0NjgsIAotICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMTk0NTk2LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgCi0gICAgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAKLSAgICAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgNDE0NjYsIDAsIDkyNTg4LCAxMTQ1MCwgMCwgCi0gICAgMzYzOCwgMTIzNTQsIDAsIDMyMTYsIDAsIDIzNTgsIDkyNjA2LCA4NjMzLCAwLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDAsIAotICAgIDAsIDExNzU5LCAxOTQ5MDMsIDYzNjgsIDc0ODIzLCAwLCA0MTQyMywgODA3OCwgMTA1MDQsIDEyNzU1OCwgNDE2OTgsIAotICAgIDQyMjM3LCAwLCA3MDAyLCA5ODM2NzgsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCAwLCA0MTA1MCwgNDE0NzMsIAotICAgIDEwNDY2LCAxMzA5OSwgMCwgMCwgMCwgNjQzNSwgMCwgMTEzNjIsIDAsIDAsIDY1MzgyLCAwLCA0MTQyMCwgMCwgMzYyNSwgCi0gICAgNzgxNTcsIDQxNDA5LCAwLCA2OTYzOSwgMjA0MSwgOTE3OCwgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgMCwgMCwgMCwgCi0gICAgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCAKLSAgICA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgMCwgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNzQ3NTksIDAsIDAsIDAsIAotICAgIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCA5ODMxNDAsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIAotICAgIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMCwgMzkxNywgMCwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIAotICAgIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCi0gICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgCi0gICAgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgCi0gICAgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA5ODMyNjksIDI5MTEsIDAsIDQxMTc4LCA1NDI3LCA2NDgyMywgMCwgMCwgCi0gICAgMzc4NywgNDExNzQsIDAsIDQxNDU4LCAwLCA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCAKLSAgICA2OTkyMywgNjA3NCwgOTYxOCwgMTI4NjY4LCA5ODM5NTIsIDQzNDQwLCAwLCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCAwLCAKLSAgICAxMjA2MDAsIDQxNDU2LCAwLCAxNTk5LCAxMTMzMywgMCwgNjcwMywgODUxMywgMCwgMTYxMywgMCwgNjg0NTYsIDEyNTk4LCAKLSAgICA5ODMxOTEsIDEyMDczNCwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNzAwMjksIAotICAgIDk5MDUsIDAsIDY1NzMwLCAwLCAxMjAzNzQsIDg0MjcsIDEyMDM3NSwgNTUyNDYsIDEyMDM3NiwgMCwgMTE0OTcsIDY0Njg3LCAKLSAgICA3NDAwOCwgNDI1OTIsIDM4NzEsIDAsIDEyODMwNSwgOTExMSwgNTc0MSwgMCwgMTk0ODQ2LCAxMjAzNjYsIDExOTExMSwgCi0gICAgMTIwNzQ1LCAwLCAxMjAzNjgsIDAsIDExNjQ4LCAwLCAxOTQ4NzMsIDEyMDM2NCwgNDE1ODcsIDEyMDM2NSwgMCwgNzQzMjIsIAotICAgIDQyMTEzLCAwLCAxMjcxNTUsIDEyMTcyLCAwLCA3NDUzMCwgNjUyOTgsIDY1NzIzLCAxOTQ4NDAsIDczODcxLCA2NTcyNCwgCi0gICAgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgMCwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIAotICAgIDk4MzExMCwgNzg3NSwgMCwgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIAotICAgIDY1MTczLCA2NTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgOTE3ODE3LCAKLSAgICAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIAotICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgCi0gICAgMTA3MTAsIDAsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAKLSAgICAwLCA5ODMwNjYsIDExNzU1LCA2NjMwNSwgMCwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIAotICAgIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgCi0gICAgMTk4NCwgMTE4MzAsIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIAotICAgIDAsIDAsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxOTQ1ODAsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCi0gICAgNDEyODcsIDkyNjEwLCAwLCAwLCA0MjIxOSwgMTI4MjU3LCAwLCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgMTIwODIzLCAKLSAgICA5ODMxNDQsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCAKLSAgICA5ODMxMTEsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCAKLSAgICA2NDM2OCwgOTgzMjM5LCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAotICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKLSAgICAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIAotICAgIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzgxNDIsIAotICAgIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDk4MzY3NiwgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgMTE5MDc0LCAxOTQ4MjEsIAotICAgIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIDE5NDgyNCwgNTUyNzMsIAotICAgIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEyMDUwMCwgMTE5MTU4LCAKLSAgICA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAKLSAgICAxMjY0NzcsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIAotICAgIDk4Mzc2MCwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCAKLSAgICA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgNjk5NDUsIAotICAgIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgNjYzMjQsIAotICAgIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAKLSAgICAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAxMjAzNzEsIAotICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5OCwgNDMyMTYsIAotICAgIDYwODksIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCAKLSAgICA3NDQsIDAsIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCA5ODMxNjIsIAotICAgIDY1MTM2LCAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgCi0gICAgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCAwLCAwLCAKLSAgICA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCAKLSAgICA4NzU0LCAwLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAKLSAgICAyMzA4LCAwLCA3NDE0OSwgMCwgMjMxOCwgOTgzMTgzLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgCi0gICAgNjUyNjYsIDEyMDgyNywgNzQzMDcsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIAotICAgIDEyNjk4OSwgNjM4NSwgMCwgMCwgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAKLSAgICAxMTA4MywgNDIwNTIsIDAsIDAsIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgMCwgMCwgMCwgNzAwODgsIAotICAgIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDk0MDk2LCA5ODM5NDYsIAotICAgIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAKLSAgICAwLCAzNTEyLCAxMTk2MzMsIDk4MzcwOSwgODEwMywgMCwgMCwgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIAotICAgIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgCi0gICAgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgMCwgMCwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgCi0gICAgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIAotICAgIDkyNDg2LCA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgNDAzNiwgMTI2NDgxLCAwLCAKLSAgICAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDkzOTc4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAwLCAKLSAgICAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIDQxMTkwLCAKLSAgICAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgMCwgCi0gICAgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIAotICAgIDAsIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgOTgzNjY4LCAKLSAgICAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgCi0gICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCi0gICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKLSAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4Mzk0OCwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKLSAgICA5ODMyNjAsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKLSAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNTIsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCi0gICAgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCAKLSAgICA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIAotICAgIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA5ODMxMjIsIDAsIDAsIDAsIDEwMDM5LCAwLCAKLSAgICA5ODM5NDUsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCAKLSAgICA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKLSAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCA5ODM3MTEsIDg4MTAsIDc0NDk5LCA2ODYsIAotICAgIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCi0gICAgNjUxMTgsIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjQ4LCAwLCA2NTQ1NSwgCi0gICAgMCwgOTIyNDYsIDAsIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIAotICAgIDEwMzk2LCA3NDEzNSwgOTgzNDUzLCAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIAotICAgIDQxNDc1LCAxMjg2NzIsIDkzOTc1LCAwLCAxMTQ3OSwgMCwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAKLSAgICAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIAotICAgIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKLSAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAKLSAgICAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgCi0gICAgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIDAsIDQzNDQ2LCAwLCA2NjUxMywgCi0gICAgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDk4MzA3NSwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIDAsIDQ0ODgsIDAsIAotICAgIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCAKLSAgICA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIDEyNzMyNSwgMTIwNjE1LCAKLSAgICAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgNzU0OSwgMCwgMCwgOTMxNCwgCi0gICAgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAwLCA2NDMzMywgCi0gICAgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCA2NzQ2LCAwLCAKLSAgICA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDEyODI4NSwgNjY0NDcsIDgwNDYsIAotICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgCi0gICAgNjk4NzgsIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCi0gICAgOTgzMjM1LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAotICAgIDk4MzIzNywgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAotICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCi0gICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCi0gICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIAotICAgIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgCi0gICAgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAKLSAgICAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgCi0gICAgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCAKLSAgICA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgCi0gICAgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCAKLSAgICA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIAotICAgIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgOTgzMTUzLCAxNDI2LCA2ODIxNywgMCwgCi0gICAgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIAotICAgIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKLSAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDk4MzkzMCwgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIAotICAgIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgNjQ3NDgsIDE5NDkxMCwgNzg3MzMsIDEwMjA1LCAKLSAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDAsIDc0MDUxLCA5ODM2NTUsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDAsIDAsIDAsIDk5MTEsIAotICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4NDI3LCAxMTQwLCAKLSAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgMzI2NywgCi0gICAgOTIyOTEsIDAsIDEwMTIzLCAwLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDAsIAotICAgIDEyODM0NywgMCwgMCwgMCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDAsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCAKLSAgICAwLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDAsIDY5ODk5LCAwLCAwLCAwLCA0MTM4MiwgMCwgMTI4NjUzLCA1MTczLCA2NTM0OCwgCi0gICAgNTI3LCAwLCAwLCA5MjYxMiwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDAsIDAsIDEwMDcyLCAwLCA0MjY5NSwgMjMyOSwgCi0gICAgNDIyNTAsIDAsIDEyODg2NCwgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgMCwgMCwgMTI4MTIwLCAwLCA3NDMyOCwgCi0gICAgOTI3MDgsIDc0NzY5LCAwLCAxMTkwODcsIDkwNjksIDYxNDQsIDAsIDAsIDczODIyLCAwLCAxMjgwMTAsIDY0OTE3LCAKLSAgICA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCAwLCA2NTA5OCwgNjM2NCwgOTU2LCAwLCAxMjgzMCwgMTA0NjIsIDczNzQwLCAKLSAgICA3MzczNCwgMCwgMCwgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAKLSAgICAwLCAxMDQ0LCA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIAotICAgIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCAwLCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDk4MzQ1NCwgNzA5OCwgMCwgCi0gICAgMCwgMTA1NywgNTY2LCA0MjY5NiwgMCwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgCi0gICAgOTI1MTAsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzNTc4LCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgCi0gICAgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCAwLCAKLSAgICA0MzgxMywgMTA1MywgMCwgNzgyNjksIDAsIDEyNjU4NiwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIAotICAgIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIAotICAgIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIAotICAgIDAsIDEyNzI3NCwgMCwgNjM1OCwgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgCi0gICAgNTgzMCwgMCwgNDM2ODUsIDAsIDAsIDAsIDAsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDk4MzgwOCwgMTIwNDEzLCAwLCAKLSAgICAxMjcyNTcsIDY1ODk0LCAwLCAwLCAwLCA5ODM5MjMsIDAsIDAsIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCAKLSAgICA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDk4MzA4MiwgOTQwMDIsIDAsIDU1NzgsIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCAKLSAgICA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIAotICAgIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgCi0gICAgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgCi0gICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgMTI4ODMwLCA4MTcyLCA0MjAxNywgMCwgMTA4NDQsIDAsIAotICAgIDEyODE5NSwgOTI0MjQsIDYzNzQsIDAsIDAsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIDExOTk5OSwgMCwgNzM5NSwgMCwgMTA3MCwgCi0gICAgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAwLCAzMDE1LCAxMjgwMjMsIDEyNjQ2NSwgNTIxMSwgOTgzMDgzLCA2NDAwLCAwLCAKLSAgICAxOTQ5ODMsIDcwMDU0LCA4MTg5LCAxMTI3NiwgMCwgMCwgMzcyLCAxMjg4MjksIDAsIDExODg3NCwgNDIxMDIsIDQxNTg1LCAKLSAgICAxMjgyMDIsIDAsIDQyMTAxLCAyNzYsIDc4NDAyLCAwLCAzMywgNzQyMjYsIDEyNzMwMywgOTAwNywgMTE4Nzk2LCA0MTU4OCwgCi0gICAgNjYwMzMsIDQyNywgMTA3NjMsIDExODgxOSwgMCwgMTI3ODg0LCAwLCAxMDMxLCA2MjU3LCAwLCA0MjEwNCwgMCwgOTgzOTgwLCAKLSAgICAyMzI4LCA5MjQwOSwgMTA3MSwgNDI4OTksIDAsIDc0ODQ4LCAwLCA5ODM1ODAsIDAsIDEwNDcsIDAsIDAsIDY0NzkwLCAwLCAKLSAgICA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIAotICAgIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgCi0gICAgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNzM3NjgsIAotICAgIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgMCwgNzg2MDcsIAotICAgIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgMCwgODcwMSwgNjgxMzAsIAotICAgIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDAsIDAsIDY0OTQ2LCAKLSAgICAxMDk5MiwgMCwgMTIwMDA5LCAwLCAwLCA5MzE4LCA5Mzk4NiwgMTMyNDksIDY1Njc5LCA3MzgwOCwgMCwgNjU0NTcsIAotICAgIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAxOTQ5OTcsIDEyMDAwNSwgMCwgOTgzOTY2LCAKLSAgICA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgOTIxOCwgCi0gICAgMTczMSwgMCwgOTgzNzQ2LCAwLCA2Nzk5MCwgMCwgMCwgMCwgMTIwMDAxLCAxMjcwMTgsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIAotICAgIDUzNTgsIDk4Mzc0NCwgMCwgOTE3NzY3LCA2NDQyNCwgOTgzMjMxLCAzODQwLCA2NDMxNCwgNDE0MzIsIDAsIDc4MzE1LCAKLSAgICA2ODQzMCwgNjc5ODAsIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIAotICAgIDExNTgwLCAwLCA2NDYwMSwgMTIyMDUsIDAsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjg0LCAKLSAgICA5ODM3MjEsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgCi0gICAgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIAotICAgIDAsIDAsIDAsIDk4MzkyNCwgMCwgOTAxMywgNDA1NCwgMCwgOTgzNTcwLCA5ODM2MjgsIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgCi0gICAgMjU0OSwgNzQ0NjksIDAsIDAsIDU1ODQsIDgzNTgsIDAsIDY0MjE1LCA5MjIxOSwgMTA5MTksIDAsIDc5ODAsIDEyNjYwMSwgCi0gICAgOTgzNzg0LCAyMjE4LCA0MTgwMCwgNTU4OSwgMCwgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDAsIDAsIAotICAgIDQzNDUyLCA3ODYwOSwgMCwgNDI1NzMsIDY3ODU2LCAwLCA3ODEyOSwgMCwgMCwgNzQzOTIsIDgxMzUsIDY0NTAsIDEwMDU1LCAKLSAgICA3Nzk5NiwgMCwgMCwgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgCi0gICAgMTIwNzk5LCAwLCAwLCA1NjUyLCAxMDk0NSwgMCwgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIDc0NTA5LCAKLSAgICA5ODM4NTIsIDU2NTksIDAsIDc4NjkyLCA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAKLSAgICAxMjc3OTIsIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIAotICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA5ODM4ODcsIDY0ODcwLCAwLCAzNDY3LCAKLSAgICA5ODM4OTEsIDAsIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIAotICAgIDcwMDM2LCA2OTY5NiwgNjk3NjksIDY0NjU2LCA5ODM3MjYsIDAsIDk0MDIwLCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIAotICAgIDYzOTk0LCAwLCA5MDkxLCAxMDc5OCwgMCwgMTI4MTY2LCAxMDE4NiwgMCwgNzczMiwgOTgzNzI0LCA2NDU1NiwgMCwgMCwgCi0gICAgNTY2OCwgNzQ0NDUsIDAsIDEyODY2MywgNTY3MCwgMTI2NjEwLCAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAKLSAgICAxOTk1MiwgMTIwODA3LCAwLCAxMjc0OSwgNzQ1NTEsIDAsIDAsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIAotICAgIDE0OTcsIDEyODI4NiwgOTQwMDQsIDAsIDAsIDM1NzEsIDEzMjQ3LCAwLCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCAKLSAgICA2Nzg5NiwgNDMxOTIsIDAsIDc4MjY1LCA1NTMsIDEyMDY1MywgMCwgMTI4NTU0LCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgCi0gICAgNjU5MTIsIDAsIDEyNzQ2LCAwLCAwLCAxMTk5MjQsIDU2MzMsIDExOTkyNywgOTQxMDEsIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIAotICAgIDk0MTA1LCA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4MzgwNiwgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAKLSAgICAxMjg4MzIsIDk4Mzg1MSwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIAotICAgIDEyNzI3MCwgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgCi0gICAgOTgzODA5LCA2OTgxNSwgNTYzNiwgMCwgNTMyOSwgMCwgNTYzOCwgMTE5OTE4LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCAKLSAgICA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgCi0gICAgMCwgMCwgMTY1NywgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY4NSwgCi0gICAgNzgzMDAsIDQyMjI3LCAwLCAwLCA0MTYzNywgNjc4NzIsIDAsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIAotICAgIDExNzA1LCA1NjQyLCAwLCA1NDg2LCAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAwLCAKLSAgICAxMDU4LCAwLCA2NzYzMCwgMCwgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCAyODAwLCAKLSAgICAwLCA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAwLCA1NjA4LCA2NTg5MCwgNDM4MDgsIDAsIAotICAgIDY3NjIxLCAxMTk5MzQsIDkwMDAsIDAsIDAsIDkyNjczLCAxODY1LCAwLCA1NjEzLCA2OTk1MCwgMCwgMCwgNTYxMCwgMCwgMCwgCi0gICAgNjU4MjYsIDIwNjksIDAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIAotICAgIDY1Mzc2LCAyNDEyLCAwLCA4MTg2LCA5ODA3LCA3NDI2OSwgOTI1NDcsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgCi0gICAgMTAwMzAsIDUzMDYsIDEyMzY0LCAxMjgwNjQsIDAsIDExNzA0LCAwLCA5MjU4MywgMTAyMTEsIDAsIDAsIDAsIDAsIDExNzA2LCAKLSAgICA5NzEwLCAwLCAwLCAwLCA0MTMsIDY1NjIzLCA3MTE4LCAwLCA5MTMzLCA3NDI2MiwgMCwgMTA0MiwgMCwgNjQ3NzksIAotICAgIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDk4Mzg5OSwgCi0gICAgMTMwOCwgMCwgMjUzNCwgODEwLCAwLCAwLCAwLCAwLCAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCAKLSAgICA3NDQ3MCwgNjY2MTgsIDY1NjgwLCAxMjA3NzksIDEwMDI3LCAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgCi0gICAgOTgzMTY3LCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIAotICAgIDkyMjc2LCA0NDAxMSwgODczMCwgOTgzMDY3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDAsIDcyNzUsIDc4MzA0LCAKLSAgICA5MzUsIDAsIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIDEyODgzNSwgNzgzMDgsIAotICAgIDQyMzQxLCA2NTI4NCwgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgMCwgMTk0OTk4LCAwLCAxMDY3MywgCi0gICAgMTE5MjE3LCA3MjQ4LCAwLCAxMjgzNDYsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCAwLCA5NjQsIDAsIDEyNzg3NiwgCi0gICAgNzgyMjYsIDEyODc3NSwgMTI3NTEyLCAwLCAwLCAwLCAwLCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCAKLSAgICA2NjU3NSwgNDU0MiwgNjk5MDksIDQzNTQ3LCAwLCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIAotICAgIDk4MzkxOCwgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDkyNzI0LCA2NDc4LCAKLSAgICA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDk4Mzc5NSwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgCi0gICAgNDQwOSwgMCwgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAxMjY1NTMsIAotICAgIDY1MjMxLCA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDAsIAotICAgIDAsIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAwLCA2ODE2MywgNTM0MCwgMCwgMTI3ODIwLCAKLSAgICA0MzYzNSwgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMTI2NDcwLCAwLCAKLSAgICAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAwLCAxMjgxNzYsIDUyOSwgODU4MCwgMCwgMCwgMTA1ODYsIAotICAgIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgMCwgMCwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDAsIDk4MzkzOCwgCi0gICAgMTEzNzYsIDc0Mzc5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIDQyMDk3LCAxMjcyNjcsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCAKLSAgICA3ODMwNSwgMTIwMTgzLCA0MTg3MywgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODQ0LCAKLSAgICA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgCi0gICAgMTI3OTM3LCAwLCA1MTYxLCAxMDU3MiwgMCwgMCwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjc1NTIsIDAsIDEyNjYwNSwgCi0gICAgMTE5NDgsIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAKLSAgICAxMDAzMSwgMCwgOTg3MCwgNjg2NDUsIDg2MjAsIDY1ODI0LCAwLCAxMTkzOCwgMCwgNzI4NSwgMCwgMTE5NTc3LCA0MjY3OCwgCi0gICAgMCwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDAsIDk4MzkzNiwgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCAKLSAgICA2ODYyNCwgMCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDAsIDAsIDQyNzMyLCAKLSAgICA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMCwgMCwgMTI4NjQ1LCAKLSAgICA2MzQ4LCAyNDMsIDEzMjAwLCA5ODM4MTMsIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCAKLSAgICA0MzY4NywgMCwgMCwgNDI4NSwgNjYxOTUsIDAsIDQyMzAsIDAsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDAsIAotICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMCwgMCwgNzg0NjYsIDY1ODkzLCAxMjIwOCwgOTk3MywgMCwgNjYzMTEsIAotICAgIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDAsIDAsIDcwMDQ3LCAwLCA2MDIyLCAwLCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIAotICAgIDAsIDY2NDUzLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCAwLCAKLSAgICAyMDc0LCAwLCA3ODI4MywgMCwgMTI0NTMsIDEyODEyOCwgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgCi0gICAgNzgyNjgsIDAsIDAsIDAsIDc4Mjc5LCAwLCAwLCA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgCi0gICAgMTI0NDksIDEyODU1MiwgMCwgMCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDAsIDExOTI0OSwgMCwgMTE1OTUsIDY0ODkzLCAKLSAgICAwLCA0MzQzNSwgMCwgMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMCwgNTQ5NCwgNDYzOSwgOTgzMTQ3LCAKLSAgICAxOTkwLCA2NjU4OSwgNDQ5OCwgNzg2NjQsIDExOTE4MywgMCwgMCwgNjk3MzQsIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAKLSAgICAxMjgxMTcsIDQzNDI0LCAxMjcwNTksIDAsIDI5NTAsIDExOTU3OSwgNjIxMCwgNjU3NTMsIDM3MCwgMCwgMCwgMCwgNDk1MywgCi0gICAgOTgzNjgyLCAwLCAwLCAwLCA2OTIzMCwgMCwgMCwgNjU2ODgsIDk4MzI0NiwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIAotICAgIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCAKLSAgICA3MTMxNywgNjQ5MjMsIDEyODA0MCwgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCAKLSAgICA5MTc3NzQsIDEyMDYwMiwgMzc2MSwgMCwgMCwgNzAwNjgsIDAsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMCwgMCwgCi0gICAgMCwgMCwgOTA4LCAwLCA4NjExLCAwLCAwLCAxMjc1NTUsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIAotICAgIDQxNTg2LCAxMDUyNywgMCwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgMTk0OTM3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCAKLSAgICA5ODMyNTksIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI1NywgMTI3MTYzLCA2ODE5MywgMzQ3LCAKLSAgICAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKLSAgICA2OTY1NywgNzg1MTIsIDAsIDQzNDQxLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAxMDY4MSwgCi0gICAgMCwgOTgzNjk1LCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgCi0gICAgNjYwOSwgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCA5ODMyMTQsIDAsIDczODQ3LCA3ODc2MSwgCi0gICAgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMCwgMCwgMCwgNDEyMDMsIDkxNzYxMiwgMTMxMTAsIDQxNzI2LCA5ODM4NTUsIDAsIAotICAgIDEwMDAsIDY5NjUxLCAwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIAotICAgIDAsIDY4MjEzLCAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgCi0gICAgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCAKLSAgICA2NDM5OCwgMCwgMTE5OTcwLCAxMjMxMSwgOTgzNzI3LCA3ODc5NiwgNzg3OTgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIAotICAgIDc4NzkzLCA2NjY3MCwgMCwgMCwgMTIyOTAsIDEyMDE2OSwgMCwgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgCi0gICAgMCwgOTYyNywgNzg1MzYsIDc4NTQyLCA3ODUzNSwgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIAotICAgIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgMTE5OTk1LCAwLCAxMTk5OTcsIDExOTk5OCwgNjUzMDUsIDY1MTAwLCAKLSAgICA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgCi0gICAgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgMCwgNDE4OTksIDAsIDgwMDIsIDAsIDQzNjQsIAotICAgIDAsIDAsIDY0MzMyLCAwLCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA3ODQ1NSwgNzI3OSwgCi0gICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMCwgMCwgOTY2MCwgOTgzMjgwLCAxMzAxMiwgNDU3MSwgMCwgMCwgMTIwMTY0LCAKLSAgICAxMjA3OCwgMjk3MCwgMCwgMTA5MzMsIDAsIDc3ODcwLCAwLCAxMjcwMTUsIDAsIDQxNTk5LCAwLCAxMjg4MzEsIDAsIAotICAgIDEyOTUwLCA5MjE2MCwgMzQ4NiwgMCwgNzgzMTEsIDQyMzksIDAsIDEyNzc5OSwgNjY1MTEsIDAsIDI2MzcsIDY0NjI5LCAKLSAgICA4NDYwLCAxMjcwNTMsIDg0NzYsIDk4Mzk3NSwgMCwgMCwgMCwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgCi0gICAgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCA3Mzg2NCwgOTgzMjAzLCA0MTczNCwgCi0gICAgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIAotICAgIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgMCwgNzM5NjMsIAotICAgIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgNzExNSwgNjYwMzAsIAotICAgIDczOTMyLCA1NDk4LCA3Mzk0MiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMCwgMCwgMCwgMCwgCi0gICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgOTgzNjk5LCA3ODUxMSwgMzE2MSwgMjk1LCAxMjAyMDcsIDAsIDkyMjIzLCAKLSAgICAxMjc4NTYsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzY0MSwgMCwgMzk3MSwgMCwgNzAwNjMsIDI5NTIsIAotICAgIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDk0MDQzLCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgCi0gICAgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI3OCwgNDE1OSwgMCwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIAotICAgIDg1NTUsIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDAsIDQyNDIxLCAwLCA0MTcyMywgCi0gICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCAxMjY2MzYsIDAsIDQyMzQ4LCA3Mzg5MiwgCi0gICAgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTA2LCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAwLCA2Mzg0NiwgMjk3MiwgMTI5MzIsIAotICAgIDcyNjIsIDAsIDYzODQ5LCA2Mzg0OCwgNjM4NDcsIDEyODA3MCwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIAotICAgIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAwLCAxMTg5ODMsIDExMDUsIDQxODAsIDAsIDEyMDk0LCAKLSAgICA5NDk3LCAwLCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgMTE4OTMyLCAxNjc4LCAxMzI3NCwgCi0gICAgNTUyLCAxMjA2NTQsIDQ0MDEwLCAxMDc4NSwgMCwgMTE5MTcwLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCAKLSAgICA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCAKLSAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDk4MzU3NywgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCAKLSAgICA0Mjc3MywgMCwgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCAKLSAgICA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgCi0gICAgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIDE5MTUsIAotICAgIDQ4NDYsIDAsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAxMjA3MCwgCi0gICAgODc2MCwgMTExNywgMTE4OTg3LCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgMCwgNzgyNDAsIAotICAgIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgOTgzODA0LCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIAotICAgIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM5MDQsIDUyMjcsIDkwNDcsIDYzODIyLCAxMjcxNjIsIDYwOTEsIDAsIAotICAgIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCAKLSAgICA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAyMDYsIDc3OTI1LCA0OTM2LCA2NTE0NywgODE2OCwgCi0gICAgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgMTI4MTUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgCi0gICAgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAKLSAgICAwLCA0NjE4LCA0MjIwOSwgNDM0MzEsIDEzMTY5LCA1MjkwLCAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIAotICAgIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgMCwgNjM5NzAsIDEyODM1OCwgMTA5MiwgNDc1NCwgNzI3MywgCi0gICAgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIDAsIDc0MDgsIDExODA5LCA5MTc2MTgsIDAsIDAsIDI5NjUsIDcyNTgsIAotICAgIDg4MDgsIDAsIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCAKLSAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAotICAgIDc0MzQzLCAwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIAotICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgCi0gICAgMTI0NjUsIDAsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgCi0gICAgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAKLSAgICAwLCAxMjc3NzMsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCAKLSAgICA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIAotICAgIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDAsIDQzOTgwLCA1NDg1LCAwLCA0MjY5NywgOTA2MSwgNTUzNCwgCi0gICAgMTA2NzIsIDQ1MDIsIDAsIDI1MywgMCwgNjgyMDgsIDAsIDkyMDMsIDc0MjMxLCAwLCAxMTUzMCwgOTI1NDIsIDY4NjY4LCAwLCAKLSAgICAxMTg5MDcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDk4MzY5OCwgNzAwNDQsIDE5NTA2NSwgMCwgCi0gICAgODQxMywgOTgzODE2LCAwLCA1NjkzLCA3MjcyLCAwLCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAKLSAgICAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIDEyODEzMywgMTI3NzY3LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIAotICAgIDQyOTEzLCA5MjE4NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgCi0gICAgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIDAsIDAsIDQxNzI5LCA0NDIzLCAKLSAgICAxMzA3LCAwLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMCwgNjIxOCwgMCwgMTQzMCwgMCwgMCwgMTIwNjA2LCA3ODc1NCwgCi0gICAgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIAotICAgIDQ1MTgsIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMTIwMTU4LCAyNzEwLCAwLCA2OTI0MywgNDE3MjQsIDAsIAotICAgIDQzMDczLCA0MTY5MCwgMTI0NzksIDk4MzYzNSwgMCwgMCwgOTgzODE4LCA3MDA0NiwgMTYyOCwgMTI3MTQ5LCA5ODM0ODcsIAotICAgIDk4MzczMSwgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDk0MDU2LCAwLCAwLCA1MzM5LCA3NDMyMywgMCwgCi0gICAgMTMwMDQsIDAsIDQ0NTcsIDAsIDAsIDE5NDgxOCwgMCwgNTY4NCwgODY3OCwgMTA5MTQsIDAsIDU2ODksIDY1ODA3LCAwLCAKLSAgICA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAwLCAKLSAgICA3NDI1MSwgMCwgMTIwNjQ3LCAwLCA1MCwgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgMCwgMCwgMCwgNjY0NjgsIDAsIAotICAgIDEzMjU5LCA0NDQ4LCAwLCA5ODM4NDUsIDAsIDcwMDQzLCA2Nzg1MywgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAwLCAKLSAgICA5MTc2MDcsIDEyNzU0NCwgMTI3MDc5LCAxOTUwNTAsIDEyNzg1MiwgMCwgMCwgMCwgMTI1MDEsIDY0NjA0LCAwLCAxMTUyNywgCi0gICAgMTE4ODcwLCA4ODEyLCAwLCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgMjEwNSwgODA4NywgNzgxNjMsIAotICAgIDY5NjMyLCA5ODk0LCAwLCAwLCAwLCA0NjM2LCA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgMCwgCi0gICAgMTIwNDk1LCAwLCAxMjgyODQsIDEyMjc3LCAxOTQ2MjcsIDExOTk1LCA5MjU1MywgMCwgMTIxNTgsIDAsIDg3NDEsIDEwMTk3LCAKLSAgICAwLCA5MjQyNiwgMCwgNjUzMSwgMCwgMTI3ODQ2LCA0NzMsIDQzNDE1LCAwLCA5ODM2NTAsIDE4NzMsIDEwODcsIDAsIDAsIDAsIAotICAgIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzQyODIsIDAsIDk4MzU3MSwgMCwgCi0gICAgOTQ4OSwgMCwgMCwgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCAxMjg4NjMsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAwLCAKLSAgICAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCAxMzEwMCwgMTI5NTgsIDEyMDcwNiwgNzQxNjgsIDAsIDAsIDQ0MjEsIDEwNTkyLCAKLSAgICAwLCA0OTUsIDExOTAwNywgNDE3MTIsIDc5ODMsIDAsIDkzOTk3LCAwLCA2MzQ3LCAxMjAxNjUsIDc2NTQsIDQxNzEwLCAKLSAgICA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgMCwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgNjQzMDYsIDAsIDAsIAotICAgIDQ5OTksIDE5NDY0MiwgMCwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDAsIDI3MzksIDAsIDgwNDQsIDc0ODM0LCAxOTQ2NDMsIAotICAgIDQxNzg5LCAxMjgxNDIsIDEwODA5LCAwLCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgCi0gICAgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDAsIDkyMTg2LCAxMzIyOSwgMCwgMTA1NzUsIDQzMzk5LCAwLCAwLCA0MTc5MSwgCi0gICAgMTEwNCwgMCwgMCwgMTA2NTUsIDAsIDAsIDAsIDAsIDEwODIsIDE5NTA0OSwgODQyOCwgNjU2OSwgMCwgMCwgMCwgNjk4NDksIAotICAgIDY3ODMsIDAsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgNDQwMjEsIDY0NTgsIDk4MzgwNywgMTI4ODgyLCA0NzYxLCA2MzgyOCwgCi0gICAgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAwLCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIAotICAgIDk4MzYwMywgNDE1NDUsIDAsIDkyNDQ5LCAwLCAwLCAwLCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIAotICAgIDUxMjIsIDQxNTI3LCAwLCA2NjMyMCwgOTgzODExLCAwLCAwLCAwLCA0MTUzNywgNjk2ODMsIDgzMDMsIDgyODIsIDExODE3LCAKLSAgICA3Mzg1NywgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzg0MDYsIDExNDY3LCAzNjY0LCA2NTkyMSwgCi0gICAgNjQyOTksIDE5NDY2NCwgMCwgMCwgNDMyNCwgMTI2LCA0MjI0NiwgMTE5MTUyLCAwLCA3NDM3OCwgNjU5MjYsIDc3NDQsIAotICAgIDE5NDYzNiwgNzQyNzcsIDc0MzAyLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgMTYzMywgMCwgCi0gICAgMCwgNDc2MiwgMTEwMywgMCwgMCwgNDc2NSwgOTgzNDkyLCAxMzA3OCwgMCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCAKLSAgICA0MzE5OSwgMTEwMiwgMCwgNDIyMzYsIDEyODg2NywgMTk0NjY3LCAxMTU0NiwgNzQ3OTQsIDMzNywgMCwgNDI1OTEsIDg2MjcsIAotICAgIDEyMjc5LCAxMTExLCAwLCA5MjE2MSwgNDcwNywgNjgyMDYsIDEwMTQzLCA3ODgzLCAxMjcwODEsIDc4ODAsIDQ1MjIsIAotICAgIDg2NDUsIDU3MDQsIDEzMDEwLCAwLCA4MzA0LCA5MTc1NjEsIDAsIDExOTU3NSwgMjI5MywgMCwgNjY2NTQsIDAsIDkyNjc2LCAKLSAgICAwLCAxMzAwOCwgMCwgNDM4NSwgMCwgMTMwMTEsIDAsIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDAsIDAsIAotICAgIDQxNzkzLCA2NTc2MywgNzQyMjEsIDEyMDE0MSwgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIAotICAgIDU3MDksIDAsIDk0MDUzLCA0MzgxNiwgMCwgMCwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCAKLSAgICA1NzA1LCA4NzkxLCA0MDA1LCAwLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAKLSAgICAxMzE3MCwgMTI1NDAsIDkxNzU3NywgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgCi0gICAgNzQ4NjcsIDE5NDY1NCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1OTAsIDkxNzU5MywgMzM0MCwgCi0gICAgOTE3NTg3LCA5MTc1ODYsIDkxNzU4OSwgOTE3NTg4LCAxMjA1NDEsIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCAKLSAgICA5MjIyNiwgMTMyNDYsIDg2NCwgMCwgMTE4OTI2LCA4OTcyLCAwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgCi0gICAgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgMTA5NDgsIDkxNzYwMSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgCi0gICAgMTMyNjEsIDEzMTg5LCAxMzE4OCwgOTM5OTMsIDAsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAKLSAgICAxMzE3OCwgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgNjM3NzksIDE1ODMsIDAsIDEzMjYwLCA0NTUwLCAwLCA2NDIwNSwgMCwgMCwgCi0gICAgNDE1MjIsIDk4MzkxNSwgOTIxNjgsIDk4Mzc3MiwgOTE3ODU4LCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAorICAgIDczOTgyLCAxMjA1MTgsIDgzNDczLCAxOTUwODYsIDQzMzY5LCA5ODMxNzcsIDEyODE0MCwgNjg0MTUsIDc3ODYxLCA0NTM4LCAKKyAgICA5Mzk3OCwgNDMxNDEsIDk4Mzc2OSwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCAKKyAgICA3MTExNCwgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAwLCAxMjg4OTcsIDE5NTAzMCwgMjM4MSwgCisgICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDc0NjE4LCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCAKKyAgICA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIDExOTE2MiwgMTk1MiwgCisgICAgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTI4NDUwLCAxMTk1NjYsIDEyODA5MywgMTI4MDgsIDEyMTgzLCA2MTQ1LCAKKyAgICA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgODMyNzcsIAorICAgIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCA5ODM0NjIsIDcxMzY2LCA2NjY4MCwgMTIwMDkwLCAKKyAgICA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTIwMDQ3LCA5ODMwNTYsIDgzNDcwLCAxMjAwODEsIDExOTA1MiwgCisgICAgNDEwMjcsIDEyMDA4NiwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKKyAgICA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEyMDA2OCwgMCwgOTgzNzg5LCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAKKyAgICAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIAorICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyNzk0OSwgNDI1MjQsIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgCisgICAgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCAxMjg5MzcsIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIAorICAgIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIAorICAgIDEyNzQ3NiwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCA2NTgyNSwgOTU3NywgNjgxOTksIDk4MzM5MywgNjQ2NzAsIAorICAgIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgNzgwNTMsIDczODcyLCA3ODA1NSwgMTE5OTkzLCAxMDkwMiwgMCwgCisgICAgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgMTIxNDM4LCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3ODA2OSwgMTE4ODkzLCAKKyAgICAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCA2NDQwLCAxOTQ3NDEsIDExMzc1NywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgCisgICAgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgMTk0NzI4LCAxMjkxMjAsIDAsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCAKKyAgICA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgCisgICAgNDE0OTIsIDEyMDA1LCA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDAsIDgzNDQzLCAwLCA3MjkzLCA3OTkxLCAKKyAgICA3NDA1MiwgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCAKKyAgICA2NDQ0NSwgNDI2NjgsIDY2MzUsIDEyODMwOCwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAwLCAKKyAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDAsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgOTA4OCwgCisgICAgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwNjY0LCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCA2NzIsIAorICAgIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAxMTc3MiwgCisgICAgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAxMjYyMiwgCisgICAgMTI3MjM0LCAxMjQ5NDgsIDAsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgNzQ5NjksIAorICAgIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCA5Mjc0NiwgCisgICAgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAwLCA0MTA2NiwgNjQ2NzMsIAorICAgIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgCisgICAgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgNzQ2MDgsIAorICAgIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgOTE3OTk2LCA0NDMzLCA0MTE1NiwgCisgICAgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCA5ODM2NDIsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIAorICAgIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MjY0NCwgNDE0MTgsIDEyODkzMywgCisgICAgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDEyMTA4MiwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCAKKyAgICA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAxMjg5MDQsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgCisgICAgNzQ0NDYsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgOTgzNDU4LCAKKyAgICAxMjA4MTMsIDQzOTcsIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIAorICAgIDQxMjgyLCA1OTIzLCAxMDQwMCwgMCwgMTIwNDkzLCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDExOTg2OSwgCisgICAgNjcxNDUsIDQxNywgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCAKKyAgICA2NDg3NywgMjI4NCwgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAwLCAKKyAgICA0MjI3MywgNTgxOSwgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgCisgICAgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgCisgICAgMzMyOSwgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgCisgICAgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMTk1MDUxLCAxMTk4ODAsIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIAorICAgIDkyNzYyLCA4OTQ0LCA5ODMxNjQsIDAsIDEwNDczLCA5ODM4MjMsIDEyMDQ3MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAKKyAgICAxMjg0MzYsIDY4ODQ1LCAxMjA2MDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDEyNzkwMiwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIAorICAgIDc0OTM4LCA0MzMyNCwgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc0OTY3LCA3NDE0LCA3NzkyOSwgCisgICAgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA5ODM3MzEsIDg1MiwgMCwgMTIxNjAsIAorICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyOTA5MiwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAorICAgIDExMDM1LCAxMDQxMSwgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA0Mzg1MywgMTI4NTk5LCAKKyAgICA0MzE1LCAxMjY0NCwgODM0OTAsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDY3NDA4LCAxMjg5NDUsIDExNTAxLCA0MTE3NywgCisgICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCisgICAgMTIwMjMwLCA0MTE3NiwgMTI4NzgwLCA5OTQsIDk4MzA0NSwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAorICAgIDU5MjEsIDAsIDI1OTcsIDkyNDIzLCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgMTE5OTY3LCAxMjcxMDUsIAorICAgIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIDQyMjY4LCAKKyAgICAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAKKyAgICAxMDE3NiwgMCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgCisgICAgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIAorICAgIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMTk1OTksIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCAKKyAgICA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAxMjA4NDksIDEyMDIsIDAsIDk4MzkxMCwgCisgICAgNjU4NjMsIDAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIAorICAgIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDkyNDIyLCAwLCA1NTIzNywgMTQzMSwgMTE5MTk0LCA2NjU2NSwgCisgICAgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIAorICAgIDcxMjI4LCA5MTc5ODIsIDEyOTE4OCwgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgCisgICAgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAKKyAgICAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgCisgICAgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODM1NTQsIDQxNTczLCA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIAorICAgIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCAwLCA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgCisgICAgNDExNjcsIDAsIDQxNzM1LCA5NDAxOSwgNzE3LCAxMDc1NCwgODMxNjgsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCAKKyAgICA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIDgxOSwgMTA2MTEsIDk2OTQsIDEyNjk3OCwgNzE0NzQsIDAsIDEyNzg3MSwgCisgICAgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAKKyAgICAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODIwOCwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCAKKyAgICA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCAKKyAgICA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIAorICAgIDc4MTI2LCA3ODEyNywgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgCisgICAgOTgzNTU5LCA2NTc0MiwgMTI4NzQsIDExOTU5NywgMTE1OTAsIDAsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgOTE3OTQ3LCAKKyAgICA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgMTAwMzMsIAorICAgIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDExOTE1NCwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIDQyNTM4LCAwLCAKKyAgICAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMCwgMTI4NDY1LCA0MzkyMCwgNDI3MzYsIDEyMTAxNywgNTc1NiwgCisgICAgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDk4MzcxNywgNDMxMDksIDc2MzcsIDU3NTIsIDExMjEzLCA4MzQ4MSwgCisgICAgNzM4MzIsIDEyODgyNywgODM0ODYsIDEyODIzMSwgNzgzMzQsIDkxNzk1NywgNzYzNiwgNjUxNzEsIDkxMjQsIDk4MzIxMCwgCisgICAgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA5ODMyMjEsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIDEwNDAzLCA3MDg2OSwgCisgICAgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIAorICAgIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgNDEyNzQsIDU3NzgsIDYzMDIsIAorICAgIDEyMTQzMiwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgCisgICAgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCisgICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKKyAgICA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIDc4MjcwLCAxMjc5ODIsIAorICAgIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxMjc4OTIsIAorICAgIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgCisgICAgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIDY3NzA1LCAKKyAgICA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMTI4NjExLCA4MzQ3NCwgMTAyMjksIAorICAgIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDEyNzAwMywgMTk1MDg0LCA3MTQ1NSwgNjQ4MywgOTIyMTEsIDE4MDgsIAorICAgIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgCisgICAgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDkyOTkyLCAKKyAgICA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgNjQzMjAsIDEwMjY1LCAKKyAgICA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIDE5NTA3MiwgMTc5MiwgCisgICAgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgMzg1LCA0MTUyLCAyNTg1LCAKKyAgICAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgMTExNjAsIDExOTExNiwgCisgICAgMTI3ODczLCAxMzE1NywgMCwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgNDQwMDYsIDY5OTcsIDY4MDA0LCAKKyAgICAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCA5MTc5NzEsIDY1MjE2LCA3MDE5NiwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAorICAgIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgNzg4MDIsIDEyMTIxOSwgMTIwODU0LCAKKyAgICA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODg5LCA3MjQxOSwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKKyAgICAxOTkzMiwgNjQ4MzEsIDAsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgCisgICAgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgOTgzODExLCA0MTE2NiwgMCwgMTI0NTYsIAorICAgIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIAorICAgIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIAorICAgIDc4NDI0LCAzMjMwLCA2ODc3MywgOTgzNDk3LCA3NTAyNSwgNTIwOSwgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIAorICAgIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIAorICAgIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIAorICAgIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgCisgICAgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIDAsIDExOTAwMCwgODg5MiwgNzg4NzIsIDkyMzM5LCAKKyAgICA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAxMjg1MzMsIAorICAgIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIAorICAgIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIAorICAgIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgCisgICAgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCAKKyAgICA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIAorICAgIDU2MDMsIDAsIDQ0NzMsIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCAKKyAgICAxMTkyMTMsIDUzNDcsIDY5ODAyLCA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDAsIDYzNzU1LCAxMjgyNzEsIAorICAgIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgCisgICAgNjUyNDQsIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCAxMjg5NzksIAorICAgIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCAKKyAgICA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgCisgICAgNjUzNTUsIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAorICAgIDEyNjYzNSwgMjQyMywgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIAorICAgIDAsIDY0NjA1LCAwLCA2ODA3NCwgOTgzOTc3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgCisgICAgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDgzNDUwLCAxMDY4NCwgMCwgCisgICAgMTI1MDYzLCA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMCwgMTI4MjA3LCAwLCA5ODM2NTQsIAorICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgODMyOSwgCisgICAgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgNTYwNywgCisgICAgNDEwODksIDEyODYyNiwgMCwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIDEyMDQ1OSwgCisgICAgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgMTE4OCwgNzI1NCwgCisgICAgMTEwMCwgMCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgMzU3MiwgMTAwMjMsIAorICAgIDQ5NTksIDEzMDc5LCAwLCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgCisgICAgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCAKKyAgICA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIDczODgzLCA2ODAyMiwgNzM5NDUsIAorICAgIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAwLCAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgCisgICAgODMzODUsIDExMDE5LCAwLCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgMjYxLCA1OTI3LCA3NzkxLCAKKyAgICAxMjg2ODEsIDczNjIsIDAsIDEwNjk2LCA3MDEyNCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCA5Mzk5NSwgMjgyLCAKKyAgICAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIDk4MDEsIDY2Mzk5LCA3NDE3NywgMCwgOTE3OTU5LCAzNDc0LCA2NzI4NywgCisgICAgMCwgNjcyODYsIDYwODEsIDgzNDY5LCA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAwLCAKKyAgICA5MzAxMywgODc1MSwgMTE0OTksIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIAorICAgIDY4MDE3LCA5NjQyLCAxMDkxMiwgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIAorICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgCisgICAgMCwgOTE3ODc1LCA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIAorICAgIDY3MzEyLCA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCAKKyAgICA0MjY2MSwgODM0MzgsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgCisgICAgNjY2MDIsIDEyMDI2NCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDgzNDM3LCA4NjA4LCAKKyAgICA0Mjc4OSwgMTIwNjEzLCA4MzQzNiwgMCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCisgICAgNjczMDQsIDE2NDEsIDAsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgNjczMTAsIAorICAgIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgMTAwNjgsIAorICAgIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgOTgzODE1LCAKKyAgICA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgNTYyMiwgCisgICAgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgNjczMjQsIAorICAgIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIDEyMDQ0NywgCisgICAgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIDQ1NjQsIAorICAgIDExOTA0OSwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgMTI3Mzg1LCAKKyAgICAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIDY3MzIwLCAKKyAgICA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgCisgICAgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgCisgICAgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgCisgICAgMjQwMCwgNTYyNywgMTIwMDE3LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCisgICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTEzNzAzLCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMCwgNTU0LCAxMTk2NDksIAorICAgIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCA1Njk0LCAKKyAgICA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIDAsIAorICAgIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI5MTI5LCA2ODExOCwgNjgwOTMsIAorICAgIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIDkzOTkyLCAKKyAgICAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgCisgICAgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCAKKyAgICA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAorICAgIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDAsIDEyOTE3NiwgCisgICAgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCAKKyAgICA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzOTcwLCAxMTk1ODksIDE5NjksIDIzODQsIAorICAgIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDc4MDI5LCA4NzY2LCA0Mzg2NCwgNzgwNzksIDU4NTQsIDEyNTAwMCwgCisgICAgMTA1ODMsIDAsIDExOTk4OSwgMTI3NTU2LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCA5ODM4MzksIDg0MjksIAorICAgIDEyMTIzMCwgMTE4ODA2LCAyODM4LCA2NDI5LCAwLCA4MzQyNiwgMCwgMTI4NDc4LCAwLCAxOTQ2MjAsIDk0MDA1LCAxMTA5NiwgCisgICAgODM0MjIsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIDczNzQyLCA2NiwgCisgICAgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgCisgICAgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIAorICAgIDkxNzk3NSwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgNzgxODUsIDEyODk1OSwgCisgICAgMCwgNzE0MzcsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgCisgICAgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIAorICAgIDEyNjU0NSwgNjY1ODksIDAsIDYzMzQsIDEyODM2OSwgMCwgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgCisgICAgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDE5NDY5MiwgNjk3MiwgNDI4MjYsIAorICAgIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODgwNSwgNjc2ODcsIAorICAgIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIAorICAgIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIAorICAgIDEyNzI3NiwgNzk2MCwgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgCisgICAgNjcyNTMsIDc2OTksIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCAxMjE0NjAsIAorICAgIDEyMDkxMCwgNzQzMDgsIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgOTgzNTcxLCAxMjgwNDYsIDQzNDE5LCA5ODM0NzEsIAorICAgIDY0NTU0LCAxMDU3NCwgMzg3OCwgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAKKyAgICAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIAorICAgIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAKKyAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCAKKyAgICA3ODg2MSwgMTE5MTM0LCAwLCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgCisgICAgNjU2MDgsIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIAorICAgIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAwLCAKKyAgICA2ODQ1NSwgNDI4NjMsIDczODM5LCAxMjc1MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAKKyAgICAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgNTQwLCAKKyAgICA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDcwLCA4MjAsIAorICAgIDQxNzQxLCA5ODM0NzcsIDEyMDY2NywgMTI0OTgxLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIAorICAgIDYyMjYsIDM1MywgMTIzOTYsIDEyMTE3NiwgMTE5NjEyLCA2NDc0MiwgMTI4NjgyLCA3ODg3OSwgOTgzNDc4LCAxMjc5MzgsIAorICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgOTgzMTQyLCAKKyAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIAorICAgIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIDEyODYwNiwgMCwgCisgICAgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAxMjAyNzQsIDEzMDc1LCAKKyAgICA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIAorICAgIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgCisgICAgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgMTI3MDksIDY5ODYsIAorICAgIDkyMzY0LCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAKKyAgICAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgMCwgNjgxODIsIDEyODg0NiwgMTI5MjMsIAorICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAxMjkxNDksIDc4NjM5LCA0MDk3NSwgCisgICAgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgMTIxMzg2LCA5Mjk0NSwgMTI4MDIwLCAxMTk4MDksIDAsIDY2NDQ0LCAKKyAgICAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTEzMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIAorICAgIDAsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAKKyAgICAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIAorICAgIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCAKKyAgICA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCAKKyAgICA5ODU4LCA2MDM3LCA5ODM0NjUsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAKKyAgICAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDAsIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDAsIAorICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgCisgICAgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMjgzNTgsIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAwLCAKKyAgICA2NzE0LCAxMDA4MywgMTI3MDY5LCAxMjEwMTksIDc4MzY3LCA2OTk3NiwgMCwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgCisgICAgMTA3MDQsIDY1MDMwLCA0Nzg3LCAxMjkwMzEsIDc0ODI5LCAwLCA2NTQyMywgMTIxMzA2LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCAKKyAgICA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDkxNzYyNCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgCisgICAgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIAorICAgIDQxOTU0LCA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgCisgICAgNDMzMjAsIDExOTE1OSwgNzM5NTUsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgCisgICAgNjYyNTUsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIAorICAgIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCAKKyAgICA4NjE2LCA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCA5ODM2OTEsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIAorICAgIDIzNTgsIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAKKyAgICAxOTQ5MDMsIDYzNjgsIDc0ODIzLCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCAKKyAgICA5ODM0NTQsIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgNzE0NjcsIDQxMDUwLCA0MTQ3MywgCisgICAgMTA0NjYsIDEzMDk5LCA3MTQ0NSwgNzAzNzEsIDEyMDg5NywgNjQzNSwgNzQzMzEsIDExMzYyLCAxMjg5NzMsIDgzMDg4LCAKKyAgICA2NTM4MiwgOTI3NzAsIDQxNDIwLCA4MzA4MywgMzYyNSwgNzQ5MTUsIDQxNDA5LCA3MTQ0MSwgNjk2MzksIDIwNDEsIDkxNzgsIAorICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCAwLCAxMjg1NTcsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCisgICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAorICAgIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAwLCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgCisgICAgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIAorICAgIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCA5ODMxMTksIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCA0MTQ2MSwgCisgICAgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCisgICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIDEyMTAwNywgOTA5NCwgOTgzOTI2LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAKKyAgICAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgCisgICAgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDcxNDM0LCAyOTExLCA4MzA3NCwgCisgICAgNDExNzgsIDU0MjcsIDY0ODIzLCA4MzA2MiwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCAKKyAgICA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIAorICAgIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAKKyAgICAxNTk5LCAxMTMzMywgODMxMzksIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgCisgICAgODMxMzIsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCAKKyAgICA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIAorICAgIDY0Njg3LCA3NDAwOCwgNDI1OTIsIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAKKyAgICAxMjAzNjYsIDExOTExMSwgMTExNTAsIDAsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgCisgICAgNDE1ODcsIDcwMzkxLCA4MzEyMywgNzExMDgsIDQyMTEzLCA5ODM1ODgsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgCisgICAgNjUyOTgsIDY1NzIzLCA2ODI4OSwgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAKKyAgICA2NDY3MSwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIDk4MzExMCwgNzg3NSwgOTgzNjY5LCA0MTU5OCwgMzk5MywgCisgICAgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjcwNzUsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMCwgCisgICAgNzAzMzEsIDE5NTAxMiwgMCwgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIAorICAgIDkxNzgxNywgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIAorICAgIDc4NzU2LCAxMjcxMDgsIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgCisgICAgNDEwMDYsIDY1NzIyLCA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgCisgICAgMTI4Nzc4LCA3MTg4OSwgNjc4NTcsIDEyMDY4NywgMCwgOTI5NTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCAKKyAgICA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIAorICAgIDgzMTIwLCAxMTQxMywgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgCisgICAgOTIyOTMsIDQwOTg0LCA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDk4MzA5MywgMCwgCisgICAgNjgzMTMsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCisgICAgNDEyODcsIDkyNjEwLCAwLCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAKKyAgICAxMjA4MjMsIDEyNjU1MywgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgCisgICAgMTE0NTEsIDgyOTk1LCA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAKKyAgICAxMzEzMywgNjQzNjgsIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIAorICAgIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIAorICAgIDc4MTEyLCAxMDk4MiwgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgMCwgCisgICAgNTgwNCwgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgCisgICAgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjg1MTIsIAorICAgIDEyODYyOSwgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAKKyAgICAxMjY3NSwgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgCisgICAgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIAorICAgIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCisgICAgNjQ3OTksIDQyMDQ3LCAwLCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCA5ODM3NjAsIDc0MzAwLCAwLCAKKyAgICA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIDQzNDg2LCAKKyAgICA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCAwLCAwLCAwLCAwLCAwLCAxOTQ4MzAsIDY2MzE3LCAKKyAgICA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgODI5ODgsIDAsIDk2MSwgCisgICAgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDk4MzEzMCwgODkxLCAKKyAgICAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAxMjA4NzgsIDAsIDAsIAorICAgIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgCisgICAgMzU0NywgMCwgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgCisgICAgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIDc0NCwgOTI4ODMsIDExMzczOSwgMCwgNjU4MjMsIAorICAgIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgCisgICAgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIAorICAgIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAKKyAgICAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAKKyAgICAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjcwNTEsIDEyMDIzNywgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCAKKyAgICA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMjgzMjcsIDIzMTgsIAorICAgIDk4MzE4MywgNjYzNjEsIDgxOTgsIDY1NjI2LCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgCisgICAgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIAorICAgIDEyODQwMywgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyMDAwMiwgMTI5MTUxLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCAKKyAgICA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDAsIAorICAgIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIAorICAgIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCAKKyAgICA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIAorICAgIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDcxMzE0LCAwLCA3ODEwOSwgCisgICAgMTI5MTc3LCAxOTk0MiwgOTgzMjQ0LCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAKKyAgICA5NDA2NCwgOTgzMDcxLCAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIAorICAgIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgCisgICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDc0MTU3LCA0MDM2LCAxMjY0ODEsIDAsIAorICAgIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAKKyAgICAwLCAwLCAxMjUxMTcsIDAsIDkxNzU0MiwgNzM4MTIsIDgzMDUzLCA2NTM5LCA5Mjk0OCwgMTI2NjA3LCAxMjA3MDIsIAorICAgIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDkxNzk3OSwgCisgICAgNzg4OTEsIDAsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDEyODk3MCwgCisgICAgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCAKKyAgICA2NTEyNiwgNjgyNTMsIDEyNzAwNCwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAKKyAgICAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIAorICAgIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAwLCA2ODIyNCwgMTIwODcyLCA0MTc2NCwgNzk1NywgCisgICAgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgOTgzOTE4LCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAKKyAgICA3MDg1MywgMTE5MDI4LCAwLCAxMjgxMjIsIDEyODQ0MiwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgMTk0ODg0LCA2ODMyMiwgCisgICAgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIAorICAgIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAorICAgIDkyMjg4LCA3MDUxNCwgOTgzOTAwLCA4MzE3NSwgNzE0MzYsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDEyODk2OCwgOTE3OTg5LCAKKyAgICA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCAKKyAgICA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgCisgICAgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIAorICAgIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI4MTI4LCA5ODM1OTUsIAorICAgIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgOTgzMzM2LCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIDEwNDEyLCAKKyAgICA4NzU1LCAxMTkxNTIsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIAorICAgIDY4NiwgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKKyAgICA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjg5MDIsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIAorICAgIDY4MDQ0LCA2NTQ1NSwgMCwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIDY2NjI0LCAxMjY1NzgsIAorICAgIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDExODk0NSwgOTk4NCwgNzM4NTEsIDMwMTAsIAorICAgIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMjc5MTAsIDExNDc5LCAxMjEzNTUsIDEyMDM1NiwgCisgICAgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI0OTQ2LCA0MDUyLCAKKyAgICAxMTM2NzMsIDc2MjYsIDAsIDEyMDkwNywgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDEyNzU0NCwgMCwgNDM3MDcsIDc0MTI3LCAKKyAgICAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIAorICAgIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCAKKyAgICA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCAwLCAKKyAgICA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDEyMTI3MiwgMCwgNDM0NDYsIDAsIDY2NTEzLCA2MjU2LCAKKyAgICA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgCisgICAgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIAorICAgIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIAorICAgIDEyNzIxNSwgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI4MzY2LCAKKyAgICA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAKKyAgICAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgCisgICAgMTI3MzEyLCAxMjgyMzAsIDczODczLCA5ODM3MTAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCAKKyAgICA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMTI3Nzg1LCA5OTU3LCAxMjgyODUsIAorICAgIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMjA0MjQsIDE1MjEsIAorICAgIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDAsIDY1NzY5LCAKKyAgICA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCAKKyAgICA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIDIyODMsIDkyOTMxLCAwLCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCAKKyAgICAwLCA1NTIzMSwgNDExMDMsIDkyMjU2LCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCAKKyAgICA5MTc1NjcsIDg3MzEsIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDEyNjYwMCwgNDc3NCwgMzAxOSwgCisgICAgOTk5NywgMTI4MzQsIDAsIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDc4NTU2LCAwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCAKKyAgICA0NzY4LCAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIAorICAgIDExODk0NiwgMTIxMDk3LCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMCwgCisgICAgMTAxMTYsIDk4NzcsIDkyMzI5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgCisgICAgMjQyNywgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIDEyODQ4NSwgOTI0MzAsIAorICAgIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIDAsIDE5NDY4NiwgCisgICAgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgCisgICAgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCA5MTc5NjYsIDY1NTM2LCA4MzI5NCwgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIAorICAgIDExODgyNCwgMTI4OTc2LCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgCisgICAgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyODU3NiwgNzQ5MjMsIDQyMjU3LCA1Njk2LCA5MjY3NywgCisgICAgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAKKyAgICAxMjg3MTksIDE0MjYsIDY4MjE3LCA5ODM2MTQsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgCisgICAgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCAKKyAgICA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIAorICAgIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAxOTQ5ODksIDc4ODgzLCAwLCA3ODIxMiwgCisgICAgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgNjQ3NDgsIDEyMDkyMCwgNzg3MzMsIDEwMjA1LCAKKyAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDEyODAwOCwgNzQwNTEsIDEyODkwMSwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAKKyAgICAxMjUwMzcsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIAorICAgIDc4MjA4LCAxMTQwLCA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDEyODY0NCwgNjgzMjYsIDE5NDkxMSwgMTgxNSwgCisgICAgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDEyMTM5OCwgNDQxMCwgMTA0MSwgMTA1NzYsIAorICAgIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIDEyODM0NywgMCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIAorICAgIDEyNzgxOSwgOTE3ODExLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgCisgICAgOTgzMTQ3LCA2OTg5OSwgMTk0OTM4LCAwLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjcsIDEyODY1MywgNTE3MywgNjUzNDgsIAorICAgIDUyNywgMTIxMTc0LCAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAKKyAgICAyMzI5LCA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDgzNDYwLCAwLCAxMTM3MDUsIAorICAgIDkxNzkxMCwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMCwgMTE5ODQwLCA3MzgyMiwgCisgICAgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCA2MzY0LCA5NTYsIAorICAgIDExMzc5MiwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDAsIDAsIDk4MzczOSwgNjY0NDksIDEzMjYzLCA3NDI4MSwgCisgICAgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDEyMDU2NCwgMCwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgNDEyNzYsIDEyODM2MywgMCwgCisgICAgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAxMTgyOSwgCisgICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAKKyAgICAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIAorICAgIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCAKKyAgICA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIAorICAgIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgCisgICAgNzQzNDksIDY2NDc5LCA2NzY4OSwgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCAKKyAgICA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgNDM1MTQsIDEyMTMwLCA5ODMzMDgsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAKKyAgICAxMjc4NTAsIDk4MzE0NCwgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDAsIDYzNTgsIAorICAgIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEyNzc3MywgCisgICAgNDM2ODUsIDc0MzA3LCAwLCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTIwNDEzLCAKKyAgICA5MjE5MiwgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODM2NDQsIDE5NDk1OSwgMTE5MTg3LCAKKyAgICAyMTM1LCAxMTgzNiwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIAorICAgIDcxOTEzLCA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMjExNzEsIAorICAgIDY4ODMzLCA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCAKKyAgICA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIAorICAgIDY4MjI4LCA2NTcxMCwgMTI4Mzk5LCAxMjg0MjksIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIAorICAgIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAKKyAgICAxMDg0NCwgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAxMTk5OTgsIDEyMTA3NSwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCisgICAgMTE5OTk5LCAwLCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTk0NjQwLCAzMDE1LCAKKyAgICA2ODc0MywgNjg3NDAsIDUyMTEsIDY4ODA1LCA2NDAwLCA2ODc0OSwgNjg3NDgsIDY4NzYwLCA4MTg5LCAxMTI3NiwgNjg3NTQsIAorICAgIDcwMjg0LCAzNzIsIDEyODgyOSwgNjg3NjEsIDExMzc4MywgNDIxMDIsIDQxNTg1LCAxMjc3NTEsIDAsIDQyMTAxLCAyNzYsIAorICAgIDc4NDAyLCA2NzQyNywgMzMsIDY3NDI1LCA2NzQyNCwgOTAwNywgNjc0MzAsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgCisgICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCA5ODM5NDMsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMCwgOTgzOTgwLCAyMzI4LCAKKyAgICA2NjgzNywgMTA3MSwgNDI4OTksIDEyNTA4OCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxOTQ5ODEsIDEwNDcsIDAsIAorICAgIDE5NDk0MywgNDI5MDgsIDEyODQ4MCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMCwgMTI1MTEzLCA3MjQzMywgNjY4MjksIAorICAgIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIDY3OTAsIDY1MTY4LCAKKyAgICAxMzIxNiwgOTgzMTUwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCA1NzE1LCA2OTY1NCwgNzE5MTUsIAorICAgIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgCisgICAgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgCisgICAgMTI1MDcwLCAwLCAxMjgzMzgsIDEyMDMzNSwgMTE4OTExLCAwLCA5NDA0MywgMTI5MTk0LCAwLCAwLCAxMjAwMTAsIDczNzk1LCAKKyAgICA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgCisgICAgMTI5Mjk2LCAwLCA2NDk0NiwgMTA5OTIsIDAsIDc0NTY2LCA3MDMzNiwgMTEzNjg4LCA5MzE4LCA5Mzk4NiwgMTMyNDksIAorICAgIDQyOTAyLCA3MzgwOCwgMCwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAKKyAgICA3MDM2NiwgMTIwMDA1LCAxMTk1ODUsIDEyMTIxMiwgNTA4NCwgMTIxMTg5LCAxMjExMzQsIDc1MDYyLCAwLCA3MzMsIAorICAgIDc0NjQ2LCA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMCwgOTI5MzcsIDcxMDcwLCA2Nzk5MCwgCisgICAgOTgzMTI1LCAwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCA5ODM3NDQsIDAsIAorICAgIDkxNzc2NywgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCA2Nzk4MCwgCisgICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMTI3OTYwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAxMTU4MCwgCisgICAgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAKKyAgICAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAxMTg5MTYsIDI1NDQsIDY1MDc0LCAKKyAgICAxMTkyMTEsIDk4MzI5OCwgMCwgNzgwMTEsIDM1MSwgNjg3NjQsIDAsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA3ODAwOCwgCisgICAgMTI4MDk0LCAwLCA0MjM3NywgMCwgMCwgMCwgMTEzNzY3LCA3NDMyMCwgOTAxMywgNDA1NCwgMCwgMTk0NTgwLCAxMTM3NDAsIAorICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDc0NDU3LCAxMTEwNCwgNTU4NCwgODM1OCwgMTI2NDczLCAKKyAgICA2NDIxNSwgNjY4NjQsIDEwOTE5LCA3MDQ4MCwgNzk4MCwgMTI2NjAxLCAxMTM2OTgsIDIyMTgsIDQxODAwLCA1NTg5LCAKKyAgICA4Mjk4MywgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDEyMTEyMCwgMTk0ODMzLCA0MzQ1MiwgNjcyNDUsIAorICAgIDkyOTkzLCA0MjU3MywgNjY4NzksIDgzMzI5LCA2NzgxMCwgNjk3NjcsIDc4NzUyLCA3NDM5MiwgODEzNSwgNjQ1MCwgCisgICAgMTAwNTUsIDc3OTk2LCAxMTk5NDgsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKKyAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCAwLCA1NjUyLCAxMDk0NSwgMTk0NTk5LCA2NjQ4NiwgCisgICAgMCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDk4MzY3NSwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCA3ODY5MiwgCisgICAgNjY3MjksIDU2NTUsIDk4MzYyNiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgNzQwMzAsIAorICAgIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgMCwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgMTAzMDQsIDEwMzY4LCAKKyAgICA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIDcxMDczLCA3ODgxLCAKKyAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgCisgICAgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgCisgICAgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCA5ODM3MjQsIDY0NTU2LCAwLCAKKyAgICA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDExMzc5NSwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgCisgICAgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgNjc3NTcsIDAsIDY2NDk2LCA0MzYxLCAKKyAgICAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAwLCAzNTcxLCAxMzI0NywgNTg3NCwgCisgICAgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgNzgyNjUsIDU1MywgMTEzNzY4LCAKKyAgICAxMjcwMTIsIDkzMDUzLCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDE5NDkxOSwgMTI3NDYsIDEyODY3MSwgNzAzMzgsIAorICAgIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAKKyAgICAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIAorICAgIDk4Mzg1MSwgMTk0ODc3LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgCisgICAgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgCisgICAgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCAKKyAgICA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCAKKyAgICA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCA5ODM2NTgsIDE2NTcsIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIAorICAgIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2ODUsIDcxMTc5LCA0MjIyNywgNjgzMDEsIDgzMzIyLCA0MTYzNywgCisgICAgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIAorICAgIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIAorICAgIDAsIDEyODkyNywgMTE0NCwgNzg3NTAsIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTI3MzUyLCAKKyAgICAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgCisgICAgNDM4MDgsIDE5NDk3MiwgNjc2MjEsIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIAorICAgIDU2MTMsIDY2NDAxLCAxMjExNDUsIDAsIDU2MTAsIDk4MzIyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAwLCAxMDc4NywgCisgICAgNDM5OTksIDI5OTcsIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCAKKyAgICA4MTg2LCA5ODA3LCA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIAorICAgIDEyMzY0LCAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIAorICAgIDExNzA2LCA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCisgICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgMTIxMjY2LCAKKyAgICA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDgzMzk5LCAxMzA4LCAxMjEyNTgsIDI1MzQsIDgxMCwgMTI1MDg5LCAKKyAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDEyMDE4NCwgMTIwNzM5LCAyMzY0LCAKKyAgICA2NjM4NywgNzQ0NzAsIDY2NjE4LCA2NTY4MCwgNjY0MTEsIDEwMDI3LCA3MTg0MSwgMTI4MTU0LCAxMjMzNywgNzQyODMsIAorICAgIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODA2OCwgNjM2MywgMjc0OCwgMTIxMDIyLCAKKyAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgOTI5ODgsIAorICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEyNzA1MiwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCisgICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCA3ODMwMCwgCisgICAgMTk0OTk4LCAxOTQ5MTIsIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCisgICAgMTY0OSwgNjc4NzYsIDk2NCwgMTIxMDM0LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAwLCAKKyAgICA4MzM5OCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCA0MzU0NywgCisgICAgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgNjk3NTksIDExMzQxLCA0MjQ5NCwgCisgICAgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCAKKyAgICA3MTA2LCA0ODc3LCAxMjkxMDgsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIDQ0MDksIDAsIDAsIDY0Nzk4LCA3MDgwNSwgCisgICAgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCAKKyAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCAKKyAgICA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAKKyAgICAxMjA1NTksIDEyNzgyMCwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAKKyAgICAxMjEzOTQsIDkxNDIsIDAsIDY4NTA2LCAwLCAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIAorICAgIDcyNDM4LCA1MjksIDg1ODAsIDEyNzQ5MCwgMCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgCisgICAgNjg3NDQsIDk4MzgyNSwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3NDM3OSwgMTA3MjEsIAorICAgIDY3NjY0LCAzNDM4LCA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgCisgICAgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAorICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTI3OTM3LCA5ODMyMTYsIDUxNjEsIDEwNTcyLCAKKyAgICA5MTc1NTgsIDQyOTA2LCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyMDQwNiwgOTgzNjQzLCAxMjY2MDUsIDExMTY3LCAKKyAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAorICAgIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCA5MTc4NTUsIDExOTM4LCAxMjEzMDgsIDcyODUsIDk4MzU1NywgCisgICAgMTE5NTc3LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAxMjkxNjgsIDEyODI2NywgCisgICAgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgCisgICAgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIAorICAgIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDEyMDE2MCwgCisgICAgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCA5MTc4NDQsIDQyODUsIAorICAgIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCA5ODMyNzEsIAorICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAxMjgzODYsIAorICAgIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCA3MDE1NSwgNzg2MjIsIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDE5NTAyMywgCisgICAgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCAKKyAgICA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCA3ODI4MywgMCwgMTI0NTMsIDcwODQ3LCAKKyAgICA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgNjYyNzgsIDAsIDc4Mjc5LCAwLCAwLCAKKyAgICA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgNzEyMjQsIDQzODY4LCAKKyAgICA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIAorICAgIDQzNDM1LCAxMjQ5NjQsIDEyNTAzMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCAKKyAgICA0NjM5LCAxMjc1NTksIDE5OTAsIDExMTA3LCA0NDk4LCA3NDE2OSwgNjc3MzYsIDgzMjczLCAxMjcyNzIsIDY5NzM0LCAKKyAgICAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCAKKyAgICA2NTc1MywgMzcwLCAxMjEzNjAsIDAsIDAsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDAsIDY5MjMwLCAwLCAKKyAgICAxOTUwMTAsIDY1Njg4LCA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIAorICAgIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDEyMDU3MSwgCisgICAgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAKKyAgICAwLCA3MDA2OCwgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDk4MzI1NiwgMTI4Mzg5LCAwLCAwLCA5MDgsIAorICAgIDAsIDg2MTEsIDEyMTM4NCwgMCwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAKKyAgICAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCA3NDg4MywgCisgICAgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjU5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIDAsIAorICAgIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAxMjE0MywgCisgICAgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAKKyAgICAxMDY4MSwgMCwgMTIwOTc5LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgCisgICAgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgCisgICAgMTI5MTgxLCAxMjE1MDEsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMTk0NzgwLCAxOTQ3NjksIAorICAgIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxOTQ4NTYsIDY3MDc3LCAxMDAwLCA2OTY1MSwgMTI3NTA5LCAKKyAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgOTgzOTY4LCAKKyAgICA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKKyAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIAorICAgIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDExOTk3MCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIDY4NzY4LCA3ODc5NCwgCisgICAgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAxMjkwOTMsIAorICAgIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCA3ODUzNSwgCisgICAgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgCisgICAgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgCisgICAgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAKKyAgICAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4OCwgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgOTgzNTcwLCAKKyAgICA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA2ODI0NiwgNzI3OSwgCisgICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTIxMTUyLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgMTMwMTIsIDQ1NzEsIAorICAgIDkxNzU4OCwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIDEyMTI0MywgNzc4NDEsIAorICAgIDAsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMjA4ODUsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgOTgzOTczLCA3ODMxMSwgNDIzOSwgCisgICAgMTI4MDczLCAxMjc3OTksIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDAsIAorICAgIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIAorICAgIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAKKyAgICAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgCisgICAgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCAKKyAgICA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIAorICAgIDYzODc2LCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAxOTQ3MTksIDkyNzE0LCAwLCAxMjc3ODIsIAorICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDEyNDk3MiwgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAKKyAgICAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgCisgICAgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCAKKyAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgCisgICAgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCAKKyAgICA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTk1MDM1LCA0MTcyMywgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgCisgICAgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgCisgICAgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgCisgICAgNjM4NDgsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIAorICAgIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMCwgCisgICAgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAKKyAgICAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCAKKyAgICA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIAorICAgIDcxOTAyLCAwLCAxMDc3LCAxOTUwMDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgOTE3Nzg5LCAwLCA0Mjc3MywgCisgICAgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCAKKyAgICA1MzM0LCA2NTA4MSwgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAxMjUwMTcsIDY1MDksIDAsIDUzMjcsIDc4Nzc2LCAKKyAgICAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgCisgICAgNjM4NjYsIDc4NjI2LCAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCAKKyAgICA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgCisgICAgNjM4MzUsIDYzODM0LCA5ODM5NDcsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NTMsIDcwMTczLCA2MzgzMywgCisgICAgNjA0MiwgNjYzNjAsIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCAKKyAgICA1MjI3LCA5MDQ3LCA2MzgyMiwgNzQ3OTcsIDYwOTEsIDAsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIAorICAgIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAKKyAgICAyMDYsIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCAKKyAgICA2MzkzMiwgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgCisgICAgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIAorICAgIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCAKKyAgICA3MjgzLCAwLCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCisgICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMCwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIDEwODksIAorICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIAorICAgIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKKyAgICA3NDM0MywgNjczNzAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDEyNTgwLCA3ODUwNywgCisgICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzM5NCwgNzQxNTEsIDgzMjI3LCA2NTAyLCA5ODM4NTUsIDExMDg1LCAxMjEyNjEsIAorICAgIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgCisgICAgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCAKKyAgICA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCAKKyAgICA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIAorICAgIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMCwgCisgICAgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCAKKyAgICA3NDIzMSwgMCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgCisgICAgNDIzNTQsIDEyODA5OSwgOTgzNjk4LCA3MDA0NCwgMTk1MDY1LCAwLCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMCwgCisgICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgMCwgMTI2NjM5LCAxMjAwOTcsIDAsIDk0MDc4LCAKKyAgICA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIAorICAgIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCAKKyAgICA2MzkwNiwgMTU5OCwgNjM5MDQsIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIAorICAgIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEyNjUxMywgMTIwNjA2LCA3ODc1NCwgNTQxMywgCisgICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIDQ1MTgsIAorICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDk4MzU5MywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgCisgICAgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAKKyAgICAxMjg4MTcsIDEyOTA2NywgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgCisgICAgMCwgNTMzOSwgNzQzMjMsIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAwLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCAKKyAgICA1Njg0LCA4Njc4LCAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIAorICAgIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMCwgMTIwNjQ3LCAxMjg5MzAsIAorICAgIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCisgICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAxMjExODYsIAorICAgIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMjc4NTIsIDAsIDAsIDk4MzA3NSwgMTI1MDEsIDY0NjA0LCAKKyAgICAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDk4MzcwNiwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIAorICAgIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCA1NTI2MiwgCisgICAgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDAsIDExODk2OCwgMTIyNzcsIDEyMTIzOSwgCisgICAgMTE5OTUsIDkyNTUzLCAxMjEwMDYsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCA5MjQyNiwgMTIxMjg1LCAKKyAgICA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgOTgzNjUwLCAxODczLCAxMDg3LCAxMjQ5NjYsIDAsIAorICAgIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDcxMTEzLCAxMjY1NTksIAorICAgIDEyODc0OCwgMTIwODg3LCA5NDg5LCAwLCA3MDg0MywgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIAorICAgIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgCisgICAgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIAorICAgIDkzOTk3LCA5ODMzMzIsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIAorICAgIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIAorICAgIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTIwNjAyLCAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTk0NjQzLCA0MTc4OSwgCisgICAgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKKyAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDE5NDU3NywgCisgICAgMCwgNDE3OTEsIDExMDQsIDAsIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDAsIDEwODIsIAorICAgIDEyMTAyNCwgODQyOCwgNjU2OSwgMCwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgCisgICAgNDQwMjEsIDY0NTgsIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIAorICAgIDEyMDY3NywgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIAorICAgIDkyNDQ5LCAwLCAxMTIxNiwgMTIxMzA3LCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKKyAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMCwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIAorICAgIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAKKyAgICAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIDY3NzI1LCA2NTkyNiwgCisgICAgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIAorICAgIDE2MzMsIDAsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIDEzMDc4LCAwLCA0NzYwLCAKKyAgICA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDQyMjM2LCAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIAorICAgIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAwLCA3NTA0NywgNDcwNywgNjgyMDYsIAorICAgIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIAorICAgIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIAorICAgIDQzODUsIDEyODczNiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIAorICAgIDk4MzI4MiwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIAorICAgIDQzODIxLCA1NzA5LCAxMjgyOTYsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCA5ODM4OTYsIDEwNzksIDM4NjcsIDU3MDgsIDAsIAorICAgIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgCisgICAgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDEyOTE3OCwgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCAKKyAgICA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgCisgICAgOTE3NTkxLCA5MTc1NDAsIDkxNzU5MywgMzM0MCwgNzQwMTcsIDkxNzU4NiwgMTIwOTk0LCAxMjkxNDEsIDEyMDU0MSwgCisgICAgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCA5ODMxNzEsIDExODkyNiwgCisgICAgODk3MiwgMTE5OTE4LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgCisgICAgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgCisgICAgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCAKKyAgICA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIDEyOTEwNywgNzEwNzEsIAorICAgIDQxNTIyLCA0MTUyMywgNjg1MjMsIDk4Mzc3MiwgMTE4OTIzLCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAogICAgIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCA2NTU4NiwgCi0gICAgMTIwNjYzLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAwLCA5ODM3NjUsIDAsIDAsIDE5NDY1OCwgMCwgNjgwOSwgNjM3ODYsIAotICAgIDYwMzEsIDAsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgNzU0LCAxMDE5MiwgCi0gICAgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgMCwgMTA3NDcsIDEyNSwgMCwgNjQ4OTAsIDAsIDk4MzEzMSwgMCwgCi0gICAgNDE3MTksIDYzNzU4LCAzNTIzLCAxMDc0LCAxMzI1OCwgOTUzNiwgNzQwNzcsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgCi0gICAgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgNDE1MzIsIDEzNDksIDYzNzUwLCA2Mzc0OSwgMCwgMCwgMCwgNjM3NTMsIDYzODAyLCAKLSAgICA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIDYzODA1LCA2MzgwNCwgNDM2MzIsIDYzODAxLCA0MTA4MiwgODE0MCwgCi0gICAgNjM3OTgsIDYyNjAsIDAsIDAsIDk0MDc0LCA2Mzc5MywgMTE5ODgsIDM4OTgsIDEyODI0MSwgMTAyMDEsIDEyMjM4LCAKLSAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKLSAgICA5ODMzMjksIDQyMjAzLCA3OTUwLCAxMDgwNCwgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMjIyNCwgNjk3MywgMjc5MywgMTI0NzUsIAotICAgIDAsIDAsIDYzNzY5LCA5NTMwLCA5ODMxMTksIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCAKLSAgICA3OTIsIDAsIDY0ODAzLCAwLCA4NzQyLCAwLCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAwLCA3NTg4LCA2Mzc0OCwgCi0gICAgMTY5MywgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgOTE3ODUzLCAxMDkwLCAxMjA2NzksIDEyODM1NiwgMTE2NjUsIAotICAgIDc0MTMzLCA0NTU4LCA2NTY4NSwgOTUyMywgMCwgMCwgNzg2ODEsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIAotICAgIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDAsIDMxNzAsIDEyNDg1LCAwLCAxMDg3MiwgNzgyNzEsIDEzMDA2LCAKLSAgICA2NDQzMywgMCwgMCwgOTQxLCAwLCAwLCAwLCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIDAsIDQyMDY1LCAwLCAwLCA5NDAzOSwgCi0gICAgMCwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCAwLCAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgMCwgMCwgMCwgCi0gICAgMTAwMjUsIDY5OTE1LCAyOTE4LCAwLCA2NTMwMCwgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDAsIAotICAgIDEyNzgyOSwgNjUzOTMsIDAsIDc0MTM4LCAwLCAwLCAwLCA3NDEzOSwgOTI3MTIsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMCwgCi0gICAgNjUzOTYsIDAsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCAwLCAwLCAxMDg4OCwgOTgzNjA0LCA2NTI0MiwgMCwgCi0gICAgMzMzMCwgMCwgMCwgOTgzOTc0LCAwLCAwLCA3NDI1OSwgMzMwNCwgNDI3NTMsIDAsIDAsIDAsIDE2MjcsIDAsIDAsIDAsIAotICAgIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCAwLCA5MDM1LCAwLCAKLSAgICAwLCAxMjgwMDUsIDAsIDkyMjA3LCA2ODEyNSwgMCwgMTY0LCAwLCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCAwLCAKLSAgICA3MDAxOSwgMTMyNDUsIDAsIDAsIDEyNzM3NiwgMCwgNzAwMzEsIDEyNzc1NiwgMTI2NjYsIDEzMTc1LCAxMzIwNywgCi0gICAgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMCwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAKLSAgICAzMTgwLCAwLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgMCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDAsIAotICAgIDc4MTQ2LCA5MjYxMSwgMCwgMCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMTI4MTYxLCAxMTA1NywgMCwgMTMyNzYsIDAsIAotICAgIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDAsIDAsIDAsIDEyMjI5LCA0MTUyMywgMCwgNDM0MTEsIDczNzUxLCAwLCAKLSAgICA2NDgxMywgMCwgMCwgMTA0NzYsIDM4NTgsIDAsIDM5MzIsIDY0OTU4LCAwLCAwLCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAKLSAgICAzNjksIDAsIDQxNzg0LCAwLCA2NDE2MywgMCwgMCwgMCwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAwLCAKLSAgICA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgMCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgNTc4OCwgODA5MiwgCi0gICAgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMCwgNzQ2LCAxMjA3ODQsIDAsIDAsIDEyMDE4LCAKLSAgICA2NTI5NCwgMCwgMCwgMCwgMCwgNDQyMiwgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMCwgNzQ0MzAsIDAsIDExNzAwLCAKLSAgICA0Mzc0LCAwLCAxMjgxNzksIDEzNjQsIDAsIDgwMzgsIDAsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCAwLCA2NzM1LCA3Mzk3OSwgCi0gICAgMTMxNzQsIDczOTY4LCAxMzIyNSwgMCwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCAwLCA0Mjg1NSwgMTE4ODU2LCAKLSAgICA0Mjg2NiwgMCwgMCwgMCwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAxMTkzNTQsIDAsIAotICAgIDk4MzU2OCwgMCwgMCwgOTI0MDIsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIDEwNDA0LCAxMDM0MCwgMTE5MzUyLCAKLSAgICAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIDk4MzI0MywgMTI2OTk0LCA0MTM3MywgCi0gICAgNzgwMzksIDEyMzAzLCAwLCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIAotICAgIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCAxMjgwMTgsIDEwOTYsIDAsIDAsIDQyNjg4LCAxMjQ0MSwgCi0gICAgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgMCwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAKLSAgICAxMTkxMDEsIDAsIDY0ODg0LCAxMTk4NzIsIDExOTM0NSwgODU5NywgMCwgMCwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIAotICAgIDk0MTA3LCAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCAwLCAxMTk4NzksIDY2NTkwLCAKLSAgICAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMCwgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDczODQ5LCAwLCA0MzYzOCwgCi0gICAgNzg1MzcsIDEyODI4NywgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAKLSAgICAxMzIwNiwgMTI4ODI4LCAwLCAyOTI1LCA3MzgwOSwgMTMwNTYsIDEyNzU1OSwgMTMyMTIsIDQzMjM4LCAwLCAxMzE5MCwgCi0gICAgMTMxODcsIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAwLCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCA3MTM2OSwgCisgICAgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgOTgzNzY1LCA2NjgyOCwgMTI4OTcyLCAxMjc4MzksIAorICAgIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCAKKyAgICA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgNjQ3MTAsIDEwNzQ3LCAxMjUsIAorICAgIDEyMDgwMywgNjQ4OTAsIDk4MzA2NCwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCAKKyAgICA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIAorICAgIDYzNzQ5LCAxMjkwMjUsIDAsIDEyNzkyOCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIAorICAgIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIDYyNjAsIDAsIDEyODM5MSwgOTQwNzQsIAorICAgIDYzNzkzLCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIAorICAgIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgCisgICAgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIDEyOTE4MCwgNzUwNTYsIDYzNzY5LCA5NTMwLCAKKyAgICAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIAorICAgIDAsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgCisgICAgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgCisgICAgNDU1OCwgNjU2ODUsIDk1MjMsIDk4MzQ1MywgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCAKKyAgICA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIAorICAgIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIAorICAgIDAsIDQyMDY1LCAxMjgzNjgsIDQzODg5LCA5NDAzOSwgMTI5Mjk5LCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAKKyAgICAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIAorICAgIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAKKyAgICAxMjA1OTIsIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgCisgICAgOTgzMjM4LCA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMCwgMTA4ODgsIAorICAgIDEyMDkzNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDY4MzQwLCAwLCAwLCA3MTIwMiwgMzMwNCwgNDI3NTMsIDkyNTg4LCAKKyAgICA3MDI5OCwgNzQ2NDMsIDE2MjcsIDAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKKyAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCA5MTc5NzcsIDEyODAwNSwgMCwgOTIyMDcsIAorICAgIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgNjc3MTksIDcwMDE5LCAKKyAgICAxMzI0NSwgMCwgNjg4MDgsIDY2ODE4LCAwLCA3MDAzMSwgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgCisgICAgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAKKyAgICAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIAorICAgIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCA3MDIwNCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIAorICAgIDkxNzk3NiwgMTMyNzYsIDEyNTEzMywgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDEyMTIwMywgCisgICAgMTIyMjksIDExNjgwLCA5Mjk1NiwgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCAwLCAxMDQ3NiwgMzg1OCwgCisgICAgNjQxNzUsIDM5MzIsIDY0OTU4LCAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgCisgICAgNDE3ODQsIDExOTE3NSwgNjQxNjMsIDc3OTk3LCAwLCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAKKyAgICAxMjg2MzEsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCisgICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIAorICAgIDExODgyNiwgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI3NTQ1LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIAorICAgIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgCisgICAgMTM2NCwgMCwgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCisgICAgNzM5NjgsIDEzMjI1LCAxOTQ5MDIsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgNzE0NzYsIDQyODU1LCAxMTg4NTYsIAorICAgIDQyODY2LCAwLCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAKKyAgICA5ODM5MjAsIDk4MzU2OCwgMTI4ODcxLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgCisgICAgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCA5ODMyNDUsIAorICAgIDEyMTE0OSwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIAorICAgIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgMTA5NiwgNDM4NTIsIAorICAgIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCA5MjkwMiwgODAzMiwgCisgICAgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAxMTkzNDUsIDg1OTcsIAorICAgIDcxMTAwLCAxMjkwNjIsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgCisgICAgMCwgMTA0NTksIDExOTg3OCwgMTI0OTQ5LCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMTI4NjYzLCAKKyAgICA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIDQzNjM4LCA3ODUzNiwgMTIxMTg3LCA2MjYxLCAKKyAgICAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIAorICAgIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAxMjEzOTYsIDEzMTkwLCAxMzE4NywgCisgICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgMTY5NCwgODIxNiwgNzEzNjksIAogICAgIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzI4LCA0MzU0NCwgMTI2NDY2LCAwLCA0MTQ0NCwgNjU2MjEsIDY5OTU1LCAKICAgICA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAKLSAgICAxMTkzMzMsIDAsIDExOTMzNywgNTIzNiwgNDA5NzksIDAsIDc0MjAxLCA4Mjg2LCAxMjg1MzcsIDM5MzYsIDExOTMzMSwgCi0gICAgMTE2OTksIDQxMzQ3LCAxMjcyNDksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAKLSAgICAxMjcyNjYsIDcyMTksIDEyNzI1MCwgMTI4MjUxLCAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIAotICAgIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgCi0gICAgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMTUwNiwgCi0gICAgMCwgNDI4NDEsIDEzMjY3LCAwLCAwLCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDAsIDEwNjYzLCAwLCAwLCAwLCA2MTUxLCAKLSAgICAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDAsIAotICAgIDkyNjQ3LCA1ODA4LCA2NTkyMiwgMCwgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCAwLCAwLCA2ODA5NywgNjQ1NzUsIAotICAgIDEyNjYzNywgMTE5NjUsIDAsIDY4MzU4LCAwLCA2OTc4OSwgMCwgOTIyNjAsIDY4MTAyLCA5Njk4LCA3ODE0LCA3NDQ3NiwgCi0gICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDExOTI1OCwgNzg0OTAsIDc0MjE5LCAwLCAwLCAKLSAgICAxMTg5OTcsIDgwMTIsIDU2NzQsIDEyMzUzLCAwLCAxMjM2MSwgNTY3NywgNTU4OCwgMCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIAotICAgIDU2NzMsIDEyMDUzNCwgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDAsIDc4MDU5LCAwLCA0MjUxMSwgCi0gICAgMTcyNywgMTIwNzI1LCA0MjQzNiwgMCwgMCwgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDEwMzE2LCAKLSAgICA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIDAsIDEyMDcxMiwgNTg0MSwgNTgzNywgNTUyMzQsIDAsIDMxMDUsIDEyODI5LCAKLSAgICA1ODM4LCA1Nzk2LCAwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCA1ODY1LCAxMjAwOTEsIDc5NTYsIAotICAgIDU5OCwgMCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NSwgMCwgMCwgMTI4ODU1LCAKLSAgICAwLCA4NDcsIDEyODI0MiwgOTUyOSwgMCwgNjY2NTcsIDY5ODAsIDc4NDgzLCAxMjAwMzUsIDc4NDg0LCA5ODM0OTEsIDAsIAotICAgIDEyMDAzMywgNzg0ODYsIDAsIDAsIDEyMDAzOSwgNDI2ODMsIDAsIDk4MzA1NSwgNzExNCwgMCwgMCwgNDMxOTAsIDY1NDYzLCAKLSAgICAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCAwLCAxOTk2MywgNTY5OCwgMCwgMCwgCi0gICAgMCwgMCwgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAKLSAgICAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgMCwgNDEwMTUsIDE5NDY5MiwgCi0gICAgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAwLCA0MjYwOCwgNzg0NjksIDk4ODQsIDQ3NTksIDAsIDAsIDEwMjY2LCAKLSAgICA0MTM1OSwgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCAwLCA2MzkzNiwgMTI4ODc1LCAxMTY2MSwgCi0gICAgODEyMiwgNTgxOCwgMCwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDAsIDAsIDgwNywgCi0gICAgNDMwNzksIDAsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAwLCA0MjE1NSwgMCwgNDEzNTYsIDc0MTEwLCAxMTg4MDEsIAotICAgIDEyNjYxNCwgMCwgODY3NiwgOTgzMjkxLCAwLCA1NTgyLCA0NTEsIDYzOTQxLCA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAKLSAgICAwLCAwLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAxMjg4NTMsIDEyMDAxNiwgNzQyODMsIDExMDA1LCAwLCAKLSAgICA2NjY1NiwgNjYwNDQsIDAsIDE5NDY5OCwgMCwgMCwgNDMzOTMsIDEwMDk0LCAwLCAxMTUyOSwgMTA4NTcsIDEyMDY0MywgCi0gICAgNjY0MzYsIDY1NDYsIDkzLCA4MTAyLCAwLCA2ODQwNSwgMCwgMCwgODE3MSwgMCwgMTE5MDk3LCAxMjcwNjQsIDkxNzU0MywgCi0gICAgMzgzLCA3MTU0LCA0MTY1NiwgOTI2MzQsIDk0MDQwLCAwLCA1MTg3LCA3MTI5NiwgMTI3Mjc3LCAxMTI4NiwgNjg2MjAsIAotICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMCwgNDEwMDUsIDAsIDAsIDk4MzgyNywgODI5MiwgMTk1MDc0LCA0OTgwLCAKLSAgICA4ODYwLCA3Mzk0NywgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCAwLCAwLCAxMDYzMSwgNjYwMzEsIDc5NzIsIAotICAgIDAsIDc4Nzg1LCAwLCA3OTAwLCAwLCAxMTMwOSwgMzgwNiwgNDE5OCwgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgCi0gICAgMCwgMTI5MzEsIDAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAKLSAgICAwLCAwLCAxMjgzNiwgMCwgMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMCwgMCwgNzQ2NCwgMCwgNjU4NjUsIAotICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCAwLCA5MzQyLCAxMjA0NjQsIDAsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIDQxMDA3LCAKLSAgICA3NDM3NSwgMCwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgMTE5MTM2LCAwLCAwLCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAxMjcxNTMsIAotICAgIDY4NjUzLCA0MzU1OCwgNTUyMiwgMCwgNjEsIDAsIDc0MTA1LCAzNjMzLCA5ODM5MDAsIDY1MTYyLCA0MTIzNCwgMTIwODksIAotICAgIDc4MjgxLCA5NzcxLCA5ODM5MDUsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCAwLCA4MTI2LCA2NjQ4MywgCi0gICAgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCAKLSAgICA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExOTEwMywgNjQ0MTcsIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCAwLCA5ODM2NTksIDg5MzAsIAotICAgIDY2Njc4LCA3NDI0OSwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgMCwgCi0gICAgNzc5MDQsIDkyNjQwLCA3NzkwNSwgOTAzNCwgNjAzOSwgMCwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAKLSAgICAwLCAwLCAwLCA0MjgxNSwgMCwgNDE5NjYsIDAsIDEyNzQ3MSwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCAKLSAgICAwLCAwLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgMCwgNTUyMCwgMTE2NjIsIDAsIDY1MzMwLCA0MjgxMiwgMCwgMCwgCi0gICAgMTIzMjYsIDk4Mzg1NiwgMCwgNDI4MDgsIDEyODMzNywgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTE3NTg0LCA0MzcwMiwgOTgzNTc2LCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgMTIwMDc5LCA4NjQ0LCAwLCAwLCAwLCAKLSAgICA3NDI5NiwgNDE5MDksIDAsIDEyMDMzMiwgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCAwLCA0MTkwNywgNjY2NDcsIAotICAgIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDAsIDEwNzczLCAwLCAwLCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgCi0gICAgMTMxNDYsIDEyNzE4NSwgNjM5MzEsIDAsIDY1OTAyLCAyODgyLCAwLCAwLCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgCi0gICAgMCwgOTgzNjYwLCAwLCA3Mzg2MCwgMCwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgMTk0OTQwLCAwLCAwLCA0MzY3OSwgCi0gICAgOTE3NTg1LCA2NTExNywgOTIyNzAsIDAsIDEwNDI3LCAwLCAzODQ0LCAxMjA2NzUsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCAKLSAgICAwLCAxMjg3ODksIDAsIDAsIDc4MywgMTk0OTM1LCAwLCAwLCA5ODMwNjQsIDE5NDcyMCwgNjUwNTYsIDM2MjAsIDQxMTgwLCAKLSAgICA2ODM3OCwgNDU1NiwgMCwgMCwgMTk0OTMzLCA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgMCwgMCwgCi0gICAgMTI3NTI3LCA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMCwgMTI4OTEsIDk4Mzc1NSwgOTgzNjM2LCA2Mzk5OSwgMjAxNiwgCi0gICAgNDE5MTcsIDk3ODgsIDYzOTI4LCAwLCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCi0gICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCAKLSAgICA3NDI3NiwgMTIwMDgwLCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDAsIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCAKLSAgICA2NjQ3MiwgOTgzOTI5LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgMTk0OTI5LCA2NDUwOSwgNzgxNTIsIDAsIAotICAgIDEyNjUwNSwgMTEwNTEsIDk4MzI5NiwgMCwgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAwLCAxMjI5OSwgMCwgCi0gICAgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCAwLCAKLSAgICA2MzkyMiwgNjU5NCwgOTgzNzQwLCAwLCAwLCAzNjI0LCA0MzAzNiwgMCwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgCi0gICAgNDE5NTUsIDAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgNjU2MDUsIDY4MDMsIDAsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIAotICAgIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIAotICAgIDQyNzQyLCA5NTE3LCAxMTUxOCwgMCwgNzg3OTAsIDAsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgCi0gICAgNjM5NjAsIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMTM5NywgMjg4MCwgMCwgMCwgMjg3MiwgMCwgMCwgMzQ5OCwgNDM3OCwgOTE3NTM5LCA0MjcwLCAwLCAKLSAgICA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAwLCAwLCAwLCAwLCAwLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCAKLSAgICAwLCAxMjY0NzksIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCAKLSAgICAwLCA2Mzk2MSwgNDQ3MiwgMCwgMCwgNzgxNTksIDY5Njk5LCA5MTc5MzYsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIAotICAgIDEwNzMwLCA3NjkxLCAxMDMzMSwgNjM4MzAsIDExOTYyNSwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCAwLCA0MjQ1MywgCi0gICAgMTYwNCwgOTU2NSwgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAwLCA4NDU3LCA0MjMwMSwgMTEzNzIsIAotICAgIDY0ODczLCAxMTk5MiwgMCwgMCwgNjM5ODAsIDExODAxLCAzNjIyLCA5ODMxMjQsIDY0MzM2LCAxMjAxNywgMTA0NjMsIAotICAgIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgNDM2MjgsIDAsIDk4MzI5MiwgMCwgMCwgNjM5NzEsIDQzNDcsIDQ0MTYsIAotICAgIDQyMDk4LCAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDAsIDEzMTQ3LCAxMjg2OTIsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIAotICAgIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDAsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgMCwgMTk0NjcwLCAwLCAKLSAgICA5MjM1MSwgMCwgNzQ0MjUsIDExMjk5LCAxNTYxLCAwLCA5MjM1OSwgNjQ5NDIsIDk4MzU1OSwgMTk0NzMzLCA5ODM2ODYsIAotICAgIDE5NDczMiwgMCwgNzQzMDEsIDAsIDExMjgwLCAwLCA2OTc4NCwgNzQwNjAsIDAsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIAotICAgIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxOTQ2NjksIDc0MDIsIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAKLSAgICAwLCA2NjYxNiwgNjg0MjEsIDk4MzkxOSwgMCwgNTQwNSwgMTI3ODc1LCA2NDg2NiwgMCwgMTE5NTgzLCAxMjgzNDUsIAotICAgIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgNjQ2OTAsIDMyNTQsIDAsIDAsIDEyODIwNywgNDIzOTAsIDQzNjc4LCAKLSAgICAxOTQ3MjUsIDk4MzkwOSwgNjUwNzcsIDAsIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCAwLCAKLSAgICAzMzc3LCAwLCAwLCAwLCAwLCA3ODIyOCwgMCwgOTgzNzYyLCA0MjY5MSwgOTE3ODg2LCAxMjcxOTgsIDc0NzY3LCAwLCAKLSAgICAxMjcwNzUsIDEzNzksIDI0NiwgMCwgOTgzNzYxLCAzNzg4LCA5ODMxMDYsIDExMDQxLCA5MjU0OSwgNjYzMDQsIDAsIDAsIAotICAgIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDAsIDAsIDAsIDAsIDk4MzY5NywgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCAKLSAgICA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgCi0gICAgNDc1NSwgNzQyNDQsIDE5NDYyMSwgMTE0NDMsIDAsIDY2MzE5LCA3NDU5OCwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIAotICAgIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDAsIDc0NDg1LCA0MjQ0MiwgNjU0NzAsIDk4MzkwNywgNjQyMDIsIDEzMTYwLCA3NzU5LCAKLSAgICA0MjQ4MiwgNDg1LCAxMjgwMDYsIDAsIDk4MjgsIDAsIDAsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgCi0gICAgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCAxMTg5NDYsIDAsIDAsIDc0MDQxLCAwLCAKLSAgICA3MDA0NSwgNDM1MzksIDU0MTEsIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCAwLCA0MjM5MywgMTMwODYsIDEzMTAsIDE5NDY4NywgCi0gICAgOTMzNywgMTIwNTIsIDEwNjQzLCA1NTI3MSwgOTgzMTc5LCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgCi0gICAgNjU2MTEsIDAsIDAsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDAsIDExOTE0LCA1NDUyLCAwLCAwLCAwLCAwLCAwLCAxOTQ2ODEsIAotICAgIDkyNTYwLCAyNzEzLCAwLCA5NjUwLCA0MzMzMCwgMCwgMTk0Njc1LCAxNDA2LCAwLCAwLCA5MjY1OSwgMCwgNjgyMjMsIAotICAgIDQxNDMsIDE5NDY3NywgMCwgNjU3NDgsIDQxNDEsIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCAKLSAgICA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIAotICAgIDU1MjUwLCA5MTg1LCA5NTUwLCAwLCA0MzQwMywgMCwgMCwgMCwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgCi0gICAgMTI5NTUsIDEwNTk2LCAyODg4LCAxOTQ2NDUsIDAsIDAsIDk2NTcsIDkwMTksIDE5NDc2NiwgMCwgMjg3OCwgNTM5MCwgMCwgCi0gICAgMTk0OTYxLCAwLCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDAsIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIAotICAgIDUyMzUsIDgwMywgNjgzODEsIDAsIDAsIDg5ODYsIDEyNjU0MiwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMCwgCi0gICAgMTI2NjQ3LCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCAwLCA0MzM5NCwgNTU1LCAwLCAwLCAKLSAgICA2NjY0NiwgMCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIAotICAgIDQxOTI3LCAxMDU4MiwgMCwgMTc4NCwgMTM2MSwgMTk1MDQ3LCAwLCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgCi0gICAgOTIxNjYsIDcyMTEsIDAsIDkzNzEsIDczOTczLCA5MTc1NTMsIDY4MjgsIDE2MjUsIDkyMzAyLCAwLCAxMzQyLCA2ODQ0MCwgCi0gICAgNjQxNzEsIDEyNjcwNCwgMTA5MDMsIDk4MzQ5NCwgMCwgMCwgMCwgMCwgNDQ4MiwgNDE2MDYsIDAsIDEyODU2OSwgOTgzMTEyLCAKLSAgICAwLCA2NDM4MSwgMCwgMCwgMTk1MDkwLCA0MjI0NSwgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCAwLCA5MTI3LCA2NjY4NywgCi0gICAgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIDAsIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCAxMTk1OTksIDEyMDgzMCwgMCwgCi0gICAgMTE5NywgMTI4MjgyLCAxMTQ5LCAxOTQ5NzAsIDAsIDAsIDQwOTkwLCA0Mzc2NSwgMCwgMzQ5MiwgMCwgMTI3OTQyLCAwLCAwLCAKLSAgICAwLCAxMjgzOCwgOTgzOTc4LCAxOTk0OCwgMCwgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDAsIDExOTA1OSwgMTIwMzYsIAotICAgIDQxMzA5LCAwLCAwLCA4MTUyLCAwLCA0MTU1MCwgMTIyMjcsIDk4MzYxMywgMCwgMTI4MjgsIDEyNzUxMSwgMCwgMCwgCi0gICAgMTIwNzA4LCAwLCAwLCAxMDM4NiwgMTE5NTc0LCAwLCAwLCA5MjY4MCwgOTgzNzg5LCA2ODE1NCwgMCwgMTc0MywgMCwgMCwgCi0gICAgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDAsIDY0NDM5LCAwLCAwLCA5MjY4NiwgMCwgMCwgMTk0OTY3LCAwLCAKLSAgICAwLCAzMzk1LCA5MzYyLCAxMDg3OCwgMCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjY1NTcsIDQxMDkxLCAzNDI2LCAxMzQ0LCAKLSAgICA4ODcwLCAwLCAwLCA0NzM1LCAxMjcwMTcsIDYxMTksIDEyODIyLCA0MjY5OSwgMCwgOTgzODI0LCA3NDgxOCwgMTQyMywgMCwgCi0gICAgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDAsIDExODg5MiwgMCwgOTQ3MiwgMCwgMTE5MjksIDAsIDcxNzAsIAotICAgIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3ODcxMywgMCwgMTk0NzQwLCAxMjg2OTEsIDkyMTg1LCA2NjY5OSwgCi0gICAgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzcsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIDY4NDE0LCAwLCA0MzYxOSwgCi0gICAgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDEyNzE1OCwgNjU2MjcsIDAsIDEwNzE4LCAKLSAgICAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgMCwgMCwgMCwgNjUzNjUsIDczODc3LCA2NTYyOCwgNzgwMTksIDEyMDMxOSwgMCwgCi0gICAgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAwLCAKLSAgICA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCA0MzA3OCwgMTI4MTI1LCAxMTg4MDksIDAsIDEwODk5LCA2NTQ2OSwgCi0gICAgOTIzNjIsIDAsIDAsIDI0MTAsIDk5MywgMCwgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAwLCAxMTkyNTMsIAotICAgIDAsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgMCwgNDIyNCwgMTMzNiwgCi0gICAgNDE1MTgsIDAsIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgMCwgMCwgMjcyLCAKLSAgICA0MjYzLCA4NzkzLCAwLCAwLCA0MTUwMiwgMCwgOTgzLCAxMjU0OSwgMCwgMCwgMTE5MCwgNDEwOSwgMTMzNSwgODQxLCAKLSAgICA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxOTQ4MDYsIDcwMDI3LCAyMDk5LCA1MTIwLCAyNDA5LCAKLSAgICA3Nzk5LCAwLCA3NDQyNCwgMCwgMCwgNDczMSwgMCwgNjY2MjksIDAsIDAsIDEyNTUsIDQxNDksIDkyNDcsIDAsIDk5MTMsIDAsIAotICAgIDAsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAwLCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAKLSAgICAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCAwLCA4MTgwLCAwLCAKLSAgICAwLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCAwLCAwLCA5Mzk2MCwgOTgzMzIyLCAxMjY1ODEsIAotICAgIDEwNjk1LCAwLCA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCAwLCAwLCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKLSAgICA2NDMyMSwgODM1OSwgMCwgMTI2ODksIDAsIDE5NDU5NCwgMCwgOTgzMzEyLCA5ODM4ODEsIDY4MTgzLCAwLCA5ODMzMTQsIAotICAgIDEyODcsIDU0MzYsIDAsIDk4MzMxNywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgMTE5MDc4LCA2MDUxLCAxMDQ5NywgNjk2NjgsIAotICAgIDg5ODUsIDEyMTA5LCA5ODMzMjMsIDAsIDEyNzI0MiwgMCwgMCwgMzY1MiwgMTA1MzcsIDAsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgCi0gICAgMjc5LCA3Mzc0NSwgMCwgMCwgMCwgMTQ4OSwgMCwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIDk4MzU1NywgNDIxMjIsIAotICAgIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAwLCAwLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCAKLSAgICA3ODYxMCwgMCwgMTIxNTEsIDc4NjA4LCA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCAKLSAgICA0OTIsIDg2ODUsIDAsIDk4Mzc1OSwgMCwgNzg2MjIsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDc4NjE1LCAKLSAgICA3ODYxNiwgMjI5NywgMCwgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgCi0gICAgMTIwMjc2LCA5OTMzLCAwLCA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCAwLCAxMTk4MjcsIDExOTgxNywgMTE5ODI4LCAKLSAgICA3ODYzMywgMTA4OTYsIDAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgCi0gICAgNDE1NTEsIDI0MzQsIDk0MDE4LCAwLCAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIDAsIDYzMzgsIDQzMjE0LCAwLCAKLSAgICA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAwLCA5Mzk4MywgMCwgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAzMTcxLCAKLSAgICA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgNzAwNjYsIAotICAgIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgCi0gICAgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDAsIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCAKLSAgICA3ODYzNCwgMTk0NywgMCwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIAotICAgIDY1MzU5LCAwLCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgMCwgNDM0NzUsIDAsIDQ5MDksIDEyMTI2LCAxMjg2NzMsIAotICAgIDEyMDY5NiwgNDkwNCwgOTgzMzMzLCA2OTY1MCwgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAwLCAwLCAwLCAwLCAKLSAgICAxMTk1ODcsIDY0NDE1LCAwLCAwLCA1Mzk4LCAwLCAxMjczODYsIDkzOTUzLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIAotICAgIDk4Mzc3NywgMTI3NjMsIDEyNjYwMywgMzYyOSwgMCwgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgCi0gICAgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAKLSAgICAwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgCi0gICAgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgCi0gICAgNjAxOCwgOTIyOTAsIDAsIDEyMjc2LCAwLCA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgOTgzMjMwLCAxMDQ2NywgMCwgCi0gICAgMjQ0MywgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIAotICAgIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIAotICAgIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCi0gICAgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAxOTY4LCA5ODMwNDEsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIAotICAgIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIAotICAgIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgCi0gICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIAotICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAotICAgIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgCi0gICAgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNzI3NSwgNzM5ODMsIDI5MTUsIDExNTAyLCAKLSAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAxMjE3NiwgMCwgNzQxOTMsIAotICAgIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3MDA1NywgMTI3MjU0LCA4MTE0LCAKLSAgICA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgMTA0NjAsIDQzMzY0LCAKLSAgICAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgCi0gICAgNDIxMTIsIDEyNzk3OCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCAKLSAgICA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3NywgCi0gICAgMTE5ODMwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCAKLSAgICA3Mzc1OSwgNDMxMDAsIDY5ODg4LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCAKLSAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAKLSAgICAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIAotICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjk1LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKLSAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCi0gICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKLSAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKLSAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKLSAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIAotICAgIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDc0MzQ3LCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgCi0gICAgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCA5ODMzMDEsIDEyNTQyLCAwLCA2NTM0MSwgMCwgNjU4MjksIDc5MjUsIDExOTgyMiwgCi0gICAgMTA0NzUsIDAsIDAsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEyNzEwMiwgNjgyMDcsIAotICAgIDEyNzEwMCwgNzA5OSwgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgNDM3NTAsIDAsIDg4OTksIDc3OTgsIDY0NDc0LCAKLSAgICA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAwLCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIAotICAgIDc3OTgyLCAwLCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIAotICAgIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgMCwgMCwgNjMyMywgCi0gICAgMTk0Njg0LCA4MjI0LCAwLCA4OTM4LCA2MDQzLCAxMjczOCwgMCwgOTgzMDc2LCA1MzIxLCAwLCAxOTQ3OTgsIDAsIDI1ODksIAotICAgIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDEyMDI5NiwgMTE5MDUsIDAsIDAsIDEyODUxNiwgCi0gICAgMTI4MTYzLCA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDAsIDE1MDMsIDAsIDAsIDcxMzEyLCAKLSAgICA1NzMxLCAxMzgxLCAyMzg3LCAwLCAwLCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCAKLSAgICA5NjY4LCA5NzY2LCAwLCA1NzI5LCA5MTc4MzMsIDc0NDEwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAKLSAgICAyODg3LCAwLCAzNTI2LCA2Mjk4LCAwLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMCwgODU3MiwgNjAyMSwgNzc4OTYsIAotICAgIDEyODI4OCwgNzc4OTUsIDQzMTU1LCAwLCAxMTk4NDksIDMxNDYsIDEwOTU5LCA5NDgzLCAwLCA3Nzg5MywgMTA5ODEsIDE2NiwgCi0gICAgOTE3ODQxLCA4NjM1LCA5ODM2MDYsIDEwNjIzLCA0MDgsIDExOTA1OCwgMTI3NTA3LCAxMzI5OCwgMCwgNzQyNiwgNDE2NDEsIAotICAgIDEyNzE3LCAwLCA3NjA3LCAxMDYzOSwgNDMzOTYsIDAsIDAsIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgCi0gICAgMTAyMjEsIDQxNjQ1LCA2NjcxMiwgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA5Mzk5NCwgNzc5MDEsIDM0NzIsIAotICAgIDg2OTcsIDAsIDAsIDk4MzgxNSwgMCwgMCwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAKLSAgICAwLCAwLCAwLCAwLCAzMjQ3LCAxMTk4NTQsIDY1MDE3LCA5ODM5NTMsIDY4NDI4LCA2NjY2OCwgMCwgMCwgMTA5ODMsIDAsIDAsIAotICAgIDAsIDQxNTY3LCAwLCAwLCAwLCAxOTQ2MjQsIDExOTg1MywgMCwgMCwgODI4NSwgMCwgNDUwOSwgMCwgNjY0NzEsIDEyMjE2LCAKLSAgICAwLCA0MDk4OCwgOTI1OTIsIDc0ODA5LCA0MTcyNywgMCwgNDI4NDgsIDIzOTYsIDkxNzc2NiwgMCwgNzQwMTgsIDkxNzUzOCwgCi0gICAgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIDQyNDU3LCAxMTkwMDgsIDAsIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCAwLCAKLSAgICA5MTc1OTQsIDExNzA3LCA4MjIyLCAwLCA3OTM5LCA5MjQ1NCwgOTI0NjAsIDEyNzgwMSwgOTE3NTkyLCAxMjgzNTksIDg1MzQsIAotICAgIDEyNzE1NCwgNDA5ODMsIDAsIDk4MzI0MCwgMCwgNzIwMSwgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAKLSAgICAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKLSAgICA5ODM5NDAsIDAsIDAsIDEyNzg3MiwgNzEzNjMsIDU4MDMsIDc3OTcsIDYwNzAsIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCAKLSAgICA2NTAwOSwgOTgzOTQyLCAxMjU2NywgMTI4NzAzLCAwLCA0MTQxMiwgMCwgMCwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIAotICAgIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgMCwgMCwgMCwgMCwgMCwgNDMwODUsIDYwNTcsIDUwOCwgCi0gICAgOTM5NjgsIDEyODAxNSwgNjc5NjgsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIDExOTA3MiwgMCwgMCwgMjMwNSwgCi0gICAgNzgzNDgsIDY4MDk2LCAwLCA2MDU2LCA2NjU5LCA2Nzk2OSwgMCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCAKLSAgICA2MzkxMiwgMTE5NDEsIDAsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAKLSAgICAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCAxMTkzNTAsIDY1MDUsIAotICAgIDc0MDEwLCAwLCAxMzA2NCwgNTUyNjcsIDEyMDgxMCwgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDczNzY0LCAwLCA5MjM3NiwgCi0gICAgMTI3NDUsIDk2NzgsIDAsIDEyMDU4NywgOTg2OSwgMTI4ODE1LCAxNzcxLCAwLCA4OTM2LCAwLCAwLCA0MjA4LCA3ODM0MSwgCi0gICAgNzg1NjcsIDc4MzQyLCAwLCA5ODM0NTYsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCA2ODAxMCwgNjY0NzUsIAotICAgIDAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDAsIDUwNjksIDczODYyLCA1MDI4LCA5ODk3LCAwLCA3MzczOSwgNTAyNiwgCi0gICAgOTgzMjUzLCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCA3NDc5MCwgNzgxMzgsIAotICAgIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIAotICAgIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCA5ODM2NzksIDEwNjAwLCA5MTc4NjcsIAotICAgIDYyMCwgNDEwMDEsIDYwMjgsIDAsIDQyODkyLCAwLCA3NDgyMiwgNTAyNCwgMTIwODI5LCA0MTAwMywgMCwgNTAyNSwgCi0gICAgNjk4OTIsIDk4MzIwOSwgMCwgMTE4ODg1LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDk4MzU4NywgMTE1OTksIDEyODIwOSwgCi0gICAgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzQxOTUsIDExNTY5LCAKLSAgICA2NTI3NSwgODkwNiwgMTI3MDk2LCA1NzU1LCAyNjM2LCA5ODMyMjcsIDEwODE1LCAxMTYxOSwgMjMwMSwgNDE1NDAsIDc4MTUsIAotICAgIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIAotICAgIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDAsIDEyNjQ4MiwgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCAKLSAgICA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIDQzNjA2LCAwLCA2ODM5NywgNjYzNzAsIDc0NTA2LCA0MjMzNSwgCi0gICAgOTgzMTg4LCAwLCAwLCA3NTM4LCA1MzE1LCAxMjA2NDQsIDQyNDkxLCAwLCA0MjA2MSwgMTI4MDg4LCA0NTc2LCAwLCAKLSAgICA2ODQxNywgNDM4MDksIDQyNzcsIDAsIDQwMzksIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIAotICAgIDExMzM3LCA3ODIwOSwgOTE3ODIwLCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCAKLSAgICA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDAsIDM2MTgsIDc4MzM4LCAwLCA0MzMwMCwgNTE1NiwgOTI2MjksIAotICAgIDAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAwLCAKLSAgICAwLCAwLCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCAxMjg3OTQsIDQxNjYxLCA3ODcxNSwgCi0gICAgNDMyNjcsIDkzNTYsIDAsIDAsIDAsIDEyODYsIDEwMTY2LCAwLCAwLCA2NDcwNywgOTgzMTI3LCA0MjQ3NiwgNzczMCwgCi0gICAgOTgzODU5LCAxMjg1MjIsIDQyNDgzLCAwLCAwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgMCwgNjY0MSwgNTI1LCAKLSAgICA0MTYyNywgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIAotICAgIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMCwgNzQzNjAsIDAsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIAotICAgIDg2NzksIDQxOTI0LCAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDk4MzA5MiwgMTEzNzQsIDc4MDQzLCAxMDg4OSwgCi0gICAgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNzM4NDIsIDEzMzA4LCAKLSAgICAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDAsIDc3OTQ4LCAzNjMsIDExMDE1LCA3Nzk0NywgNzc5NDQsIDY0Mjk2LCAxMjcwOTAsIAotICAgIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCAKLSAgICA2NDQzNCwgOTI1MjAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCAKLSAgICA2MzAsIDEyNzA5NCwgMCwgMTIwNzc0LCA5MjQ2NSwgMTA0MywgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI4NjY0LCAzMTMsIAotICAgIDkxNzU2MywgNDE4ODEsIDAsIDQyMzExLCA3NDQ1LCAwLCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCAKLSAgICA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgOTQyMiwgMCwgNjY0OTUsIDAsIDAsIDEyNzIzOSwgNDE3MTgsIDEwNzA3LCAKLSAgICAxNjAzLCAwLCAxMTkwMDMsIDAsIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDAsIDEwNTQ2LCA3NDIxMCwgCi0gICAgNzgxMDEsIDExNjAwLCA3Nzk2MSwgMjc5NywgNzM4MjEsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAKLSAgICAxMjcwODAsIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIDAsIDQyMjgyLCA3Nzk3MSwgNzc5NjcsIDkxNTcsIDczNzY1LCAKLSAgICA2NjM2NCwgNDI0MzMsIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIAotICAgIDgyNDQsIDM2MiwgOTI0MzksIDAsIDgwMzcsIDQzNzc3LCAxMTUzNSwgMCwgNzQ4NDUsIDUxODUsIDcxNjUsIDU1MjEsIAotICAgIDEwMzM0LCAyMDkzLCA3MTMyOSwgMTAzMDIsIDEyODExMiwgMTAxMDQsIDEwMjcsIDUxODEsIDAsIDAsIDEwNTIzLCAxNDQ2LCAKLSAgICA0MjMyMCwgNDE2NDYsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAKLSAgICAwLCAxOTQ2NDQsIDU1MjMsIDAsIDQyNjIwLCA5MjQ0NywgOTgzODE5LCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIAotICAgIDQzNjgyLCAwLCA3NzkxMCwgMTIwMDI2LCA3ODcwOCwgMCwgNzc5MTEsIDAsIDQxOTkxLCA5ODM4OTMsIDAsIDc2MzAsIAotICAgIDk4NDYsIDc2ODQsIDEwMzUwLCAwLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIDc3OTc3LCAKLSAgICA0MjI3NywgNzc5NzQsIDQyNDU2LCA2NTY2NywgMTI3MDM3LCAxMjMzMCwgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIAotICAgIDY2NjMwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDc3OTg0LCA3NDQ0MywgMCwgMTAyMDksIDgzMTMsIDQxOTUsIDc0NDM1LCAKLSAgICAxMzE2LCA2NjY5MCwgMTIwMDMyLCA2MzMyLCA2NDg5NCwgMCwgNjU4NzEsIDc4MDYwLCAxNzM2LCA5ODM2ODQsIDM5MDEsIAotICAgIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzg4NDEsIDY5MywgOTEzMCwgMzE0LCA2NDE0OSwgNDI0MjAsIAotICAgIDExOTQ5LCA5ODM2NjksIDEyMDE1MiwgMTEwMjYsIDEyODc4OCwgNTMzMiwgNjk0MCwgNjQxNTQsIDEyNjM1LCAxMjcwMDcsIAotICAgIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCA3MTM2OCwgMTI4MjQsIDAsIDQ1MjgsIAotICAgIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAzNzU3LCAwLCAwLCAwLCAKLSAgICA2NTg2OSwgNzM3NjAsIDI1NjksIDAsIDIzMjYsIDY1NzQwLCAyNTY1LCA0MjQ1OSwgNzU5NiwgNzkyMSwgOTgzODY4LCAKLSAgICA3NDA5NSwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDAsIDQwNDQsIDkyNjQ2LCAwLCAxMjIzMywgOTgzODcxLCAKLSAgICAxMDIzLCA0NzQsIDAsIDExOTgxOCwgMCwgMCwgNDI0ODcsIDY1NTU2LCAwLCAxMjc4NjYsIDQyMjk1LCAwLCAwLCA3MTMyMiwgCi0gICAgOTI1MTgsIDk4MzUsIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgMCwgMCwgNTUyNTEsIAotICAgIDEwMTE4LCAzMTMzLCAxMjgwMDgsIDczNzk1LCAwLCA5NjEwLCA4MDY4LCA4MTk3LCAwLCA2OTksIDAsIDQxNjY1LCA1ODY4LCAKLSAgICAwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgNjU1ODMsIAotICAgIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDkyMTk3LCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCAKLSAgICA5ODM3NTEsIDAsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDAsIDAsIDExMDE3LCAxMjA2MDEsIDAsIDI5MywgCi0gICAgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIDcxMzUwLCA2NTQxMywgCi0gICAgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAwLCAxNzEzLCA3Nzk2OSwgMCwgNzM5NTcsIDExNDA3LCAKLSAgICA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgNjQxMDUsIDEyODA4MCwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgCi0gICAgNDIyODksIDAsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDAsIDYxNjUsIDY0MTAwLCAwLCA2NjMyLCA3Mzg2MSwgNDI0MDIsIAotICAgIDc0MzI3LCA3ODA2LCAwLCA4OTE0LCAwLCAwLCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIAotICAgIDY3ODQ5LCA1NzQ2LCA3Mzc0OSwgMCwgNjQ0MTYsIDQyNDIyLCAwLCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIAotICAgIDE5NDcxOSwgMCwgNDIzMjgsIDEwNzY3LCAwLCA4MTE1LCAwLCA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCAKLSAgICAwLCA2NTg0OCwgMCwgMCwgNjk4NjMsIDAsIDEyNjk4NywgNDQ4NiwgMCwgMCwgMCwgMTA5MjUsIDAsIDAsIDAsIDk4MzU4NiwgCi0gICAgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDAsIDEwMzA1LCA0MjQ2MSwgMCwgNDIzNDksIDg4MzIsIDc4MDUxLCAKLSAgICA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAwLCA0MjQyOSwgCi0gICAgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMCwgNjU0MDIsIDExOTU4MSwgCi0gICAgMCwgMCwgNjQ5MzMsIDAsIDQxOTYwLCA2Njk5LCAwLCAwLCAxMjgzNTQsIDY4MjMsIDQyMzkxLCAxNTg4LCA2NTQwMCwgCi0gICAgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgOTE3OTM5LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCAKLSAgICA0MjQ4MCwgMCwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDAsIDAsIDAsIDY0NCwgNjU1MDAsIDQxNjU3LCAxMDc3OCwgCi0gICAgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNzQ0NTcsIDAsIDAsIDQxNTU0LCAwLCAKLSAgICA4MjIwLCA5MTc5NDMsIDQxNTU3LCAwLCAwLCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIAotICAgIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgMCwgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAKLSAgICAwLCAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCA3MzgwMywgOTgzNzk4LCAxMjczNDgsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIAotICAgIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIAotICAgIDk1MDIsIDY1NDI3LCAwLCA2NTQyNCwgMTI2MDcsIDAsIDk3MzQsIDY1NDI1LCAwLCAwLCAxMjczNTcsIDc4ODM1LCA5MjQxMCwgCi0gICAgMTAxMTIsIDEwODI3LCAwLCA5ODY2LCA3NDUyNywgNjY2NzUsIDAsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDAsIAotICAgIDg2MzYsIDk4MzkyNywgODMxNSwgNjU0NDQsIDk4Mzc5MywgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyNzEwOCwgCi0gICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDAsIDY5NzkwLCA2NDQzNSwgMCwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAotICAgIDQ0ODUsIDEyNzEwNywgMCwgNjQ5MjYsIDAsIDAsIDAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgCi0gICAgMTI4MjUsIDAsIDAsIDEyNzI1LCAwLCAxMjcxMDYsIDc4NjQyLCAyMjMsIDAsIDY5Njc1LCAxMjAxNjYsIDQyNDQ0LCAwLCAKLSAgICA2NDQ5OSwgNjUyNDUsIDAsIDExNzEsIDAsIDY5NzE3LCAwLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIAotICAgIDc4NjE5LCAxMjAxMTEsIDIzMzgsIDAsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCA2NTIzNiwgNjc2NDQsIDY4MTI2LCAKLSAgICAxMjEzLCAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMTI3MzY5LCA2NDM4NywgNDExNSwgMCwgNTAwNSwgCi0gICAgNjQwNzAsIDY0MDczLCAxMDY3OSwgMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDAsIDAsIDgyNTEsIDEwMTM2LCAKLSAgICA2NTQzNiwgMCwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3NDE5MiwgMTA3MDEsIDE3NjQsIDMxMDEsIDEyNzgxNSwgCi0gICAgMTI4NTgsIDEyMDE1OSwgMCwgMTEzNzMsIDYzNzgsIDEyNzg1OSwgMTIwMTAzLCA4NjYzLCA5MzEyLCA0MTY0NCwgNDUzOSwgCi0gICAgMjEyOSwgMCwgOTIyMiwgOTgzNzM4LCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgCi0gICAgNDIzMzEsIDY0OTM1LCAwLCAwLCAxMjkzLCA3OTQ3LCAyMTMyLCA5ODM3NjcsIDc0NTkzLCAxMjAzMDgsIDI0NTQsIDQyNzE3LCAKLSAgICAzNjEzLCAxMjg4MzcsIDAsIDAsIDY1ODg4LCA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCAwLCA0MzA4NywgMTI1OTUsIAotICAgIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCA2NDkwMywgODYzOCwgMCwgMCwgMCwgMCwgNjk4NDgsIDgyMzUsIAotICAgIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgMCwgNjkyMTYsIDAsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgCi0gICAgMTA3NjQsIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgCi0gICAgMTk5MSwgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIAotICAgIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAKLSAgICAxMjAzMjUsIDY2MzczLCAwLCAwLCA2NDkwOCwgOTI2OTEsIDYzMTEsIDAsIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgCi0gICAgMTIwMzI2LCAwLCA0MTcwNSwgOTIxODgsIDY1OTgsIDAsIDY1OTksIDEyMDMzNCwgMCwgNDIxNDgsIDExODgyNSwgNjYwMjcsIAotICAgIDAsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAKLSAgICAyNDMwLCA0MTY3OCwgMCwgMTIwMjQzLCAyMzM2LCA5ODM5MDMsIDAsIDc4ODcxLCAxMjA0NDIsIDk4Mzc2OSwgMTkyMSwgCi0gICAgMTA5NDcsIDE5OTI3LCAwLCA2NTQwNiwgMCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIAotICAgIDEwOTU2LCA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDAsIDU3NzQsIDgzMjUsIDAsIDY1NDAzLCAKLSAgICA5ODMwODksIDE4NTQsIDEwNzk0LCAwLCA2NzY2MCwgNjk4NDYsIDAsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCisgICAgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCA4Mjg2LCAxMjg1MzcsIDM5MzYsIAorICAgIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIAorICAgIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgCisgICAgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCAKKyAgICA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAKKyAgICAxMTEzNiwgNzE4NzYsIDExNTA2LCAxMjgzOTUsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAwLCA0MTc3NSwgMCwgNzEzMCwgCisgICAgNDE3NzMsIDAsIDEwNjYzLCA3MDEzMCwgMCwgOTgzOTc0LCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgCisgICAgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDEyNzk2NCwgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgCisgICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgCisgICAgMTk0OTMwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgCisgICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAKKyAgICAxMjg4MjIsIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIAorICAgIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIAorICAgIDEyOTQsIDAsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAxMjA3MjUsIDQyNDM2LCAxMjE0MDAsIDEyMTE4MywgMCwgCisgICAgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgCisgICAgMTI5MDMyLCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIAorICAgIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKKyAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDgzMTg0LCAwLCA4NDcsIAorICAgIDEyODI0MiwgOTUyOSwgODMwMTgsIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIAorICAgIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAxMjAwMzksIDQyNjgzLCA3MTg0OCwgOTgzMDU1LCA3MTE0LCAxMjY1MjEsIDAsIAorICAgIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIAorICAgIDE5OTYzLCA1Njk4LCAxOTQ3NjgsIDk4MzI3MiwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKKyAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAorICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgCisgICAgNDE4MDIsIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIAorICAgIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIAorICAgIDU4MTgsIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAwLCAKKyAgICA4MDcsIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDk4MzMxOSwgNDEzNTYsIAorICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDk4MzI5MywgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAorICAgIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDEyODUyMSwgNzg2ODEsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAorICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDYzNiwgMTIwMDc5LCAKKyAgICAxMjg3OTMsIDAsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCA5MywgCisgICAgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAzODMsIAorICAgIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCisgICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDAsIDEyODQ3MSwgODI5MiwgMTI1MTA4LCAKKyAgICA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgMTI3OTc0LCAKKyAgICAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgNDE5OCwgCisgICAgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKKyAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAxMjgzNiwgMCwgCisgICAgMTEzODAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIDEyODg0MywgNzQ2NCwgMCwgNjU4NjUsIAorICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCisgICAgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCAKKyAgICA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgCisgICAgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIAorICAgIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgCisgICAgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCAKKyAgICA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgCisgICAgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIAorICAgIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIAorICAgIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCAKKyAgICA5MTEsIDc1MzksIDAsIDQwOTYzLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgCisgICAgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDk4MzIxNSwgMCwgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIAorICAgIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgOTgzMTQ4LCAKKyAgICA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgCisgICAgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgCisgICAgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAxMDc3MywgNzA4NjgsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgCisgICAgODUyMCwgMTMxNDYsIDEyNzA5NiwgNjM5MzEsIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDAsIDEyODQzLCA0NTIwLCAKKyAgICAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NjAsIDAsIDczODYwLCA4MzMzNSwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgCisgICAgNzA4NzEsIDAsIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCAwLCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKKyAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEyODc4OSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxOTQ5MzUsIAorICAgIDkyMTg1LCAxMjcyMjEsIDczODU1LCA2ODAzMiwgNjUwNTYsIDM2MjAsIDQxMTgwLCA2ODM3OCwgNDU1NiwgNjc4MzksIAorICAgIDY4NDgwLCAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCA2NzgyMywgMCwgMTI3NTI3LCAKKyAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODM2MzYsIDYzOTk5LCAyMDE2LCAKKyAgICA0MTkxNywgOTc4OCwgNjM5MjgsIDY3Njk2LCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCisgICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDEyMDgzNCwgCisgICAgNjQ1OTIsIDc0Mjc2LCA2NzY4OCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCA3MTIxOCwgMTEzODIxLCA2NjM2NiwgMTIxNDcsIAorICAgIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMTI0OTc2LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgNzE5MzUsIDY0NTA5LCAKKyAgICA3ODE1MiwgMTEzNjk3LCAxMjY1MDUsIDExMDUxLCAxOTQ5MjgsIDAsIDExMzU1LCA2NTg4NSwgMTIxMzE5LCAxMjc5NDEsIAorICAgIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgCisgICAgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgCisgICAgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDEyNjk5MCwgNjM5OTMsIDEwNDQwLCA5NjExLCA2NTYwNSwgCisgICAgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKKyAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDgzMjkyLCAKKyAgICA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAKKyAgICAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIDAsIDY4MDc5LCAKKyAgICAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgNDM3OCwgOTE3NTM5LCAKKyAgICA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIDk4MzA0MCwgMTk0OTEwLCAKKyAgICAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDk4MzE5OCwgMTE5MTAzLCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIAorICAgIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCA0NDcyLCA5ODMyOTksIDAsIDc4MTU5LCAKKyAgICA2OTY5OSwgMTI3MzAxLCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKKyAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAorICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEyOTE5NiwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIAorICAgIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTk1MDkyLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAorICAgIDE5NjYsIDQzNjI4LCA5ODM5MDgsIDk4MzI5NCwgODMyNjcsIDEyMTA1MiwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAKKyAgICAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCAKKyAgICA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgODMzMjMsIDE5NDY3MCwgCisgICAgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAKKyAgICAxOTQ3MzMsIDcwNDExLCA3ODcxOCwgMTIxMTQwLCA3NDMwMSwgNjg4MjUsIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgCisgICAgMTI4MzkyLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTI0OTg4LCA3NDAyLCAKKyAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAKKyAgICAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAorICAgIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAxMjkxMjcsIDY1MDc3LCAKKyAgICAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgMCwgCisgICAgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgOTgzNzYyLCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAKKyAgICAxMjg0MDQsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIAorICAgIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDEyODUwMCwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIAorICAgIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAKKyAgICAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NTc0LCAxMTQ0MywgOTgzNjAzLCAKKyAgICA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIAorICAgIDQyNDQyLCA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgCisgICAgMCwgNDM1MDUsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAorICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCA2ODMxNSwgMCwgMCwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIAorICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIAorICAgIDEwNjQzLCA1NTI3MSwgMTI4OTUxLCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAKKyAgICAxOTQ4MjIsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDk0MDU5LCAxMTkxNCwgNTQ1MiwgMCwgMCwgOTI3NzIsIDAsIDkxNzg4MCwgCisgICAgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIDEyNTAwNywgCisgICAgNDI5MjUsIDc0NjM4LCAxOTQ1OTMsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIDk2ODIsIAorICAgIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgCisgICAgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIDAsIDAsIAorICAgIDE5NDc4MywgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgMTI5NTUsIDEwNTk2LCAyODg4LCA4MzE5MCwgMCwgCisgICAgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgNjczMjUsIDY4Njc5LCAKKyAgICA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIAorICAgIDY4MzgxLCAwLCAwLCA4OTg2LCA0MzgzOCwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMTk0OTcwLCAxMjY2NDcsIAorICAgIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgCisgICAgMTI4OTgwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgCisgICAgNDE5MjcsIDEwNTgyLCAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAKKyAgICAxMzE1OCwgOTIxNjYsIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjg3NjgsIAorICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0OTYsIDAsIDkyNTI3LCAwLCA3MDQzOCwgNDQ4MiwgCisgICAgNDE2MDYsIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDAsIDY0MzgxLCA5ODM5NDAsIDE5NDk3NCwgMTk1MDkwLCA0MjI0NSwgCisgICAgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCA5ODM0MzksIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCisgICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDcwMTc3LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgNjgzMTYsIDAsIAorICAgIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgMTE4Nzg0LCAxMjkwMjYsIDAsIDk4MzU2NiwgCisgICAgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCA5ODMyNjEsIDExOTA1OSwgCisgICAgMTIwMzYsIDQxMzA5LCAxMjgxNjEsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAKKyAgICA3NTAxNSwgMTIwOTY0LCAxMjA3MDgsIDAsIDAsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIAorICAgIDY4MTU0LCAxMjc4NzYsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgCisgICAgNjQ0MzksIDEyODg2NCwgNjgwNjIsIDkyNjg2LCA5ODM4NzUsIDAsIDQzODY2LCAxMjg4ODEsIDAsIDMzOTUsIDkzNjIsIAorICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKKyAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAKKyAgICAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMCwgOTQ3MiwgNjc3MzQsIAorICAgIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3MTQ3NSwgMCwgOTI1MDEsIAorICAgIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgCisgICAgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDcwMTA5LCAKKyAgICA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCAKKyAgICA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAKKyAgICAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCAKKyAgICA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgNjU0NjksIDcwMTI1LCAwLCAwLCAyNDEwLCA5OTMsIAorICAgIDgzMTE3LCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgCisgICAgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAKKyAgICAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDExOTE1MywgMTIwNDQxLCAyNzIsIAorICAgIDQyNjMsIDg3OTMsIDk4Mzg1NiwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTI0OTQwLCAwLCAxMTkwLCA0MTA5LCAKKyAgICAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIDUxMjAsIAorICAgIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgMTI4MTI3LCA5MjUyNSwgMTI1NSwgCisgICAgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTIxMTAxLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMTEzNzE0LCAKKyAgICAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgCisgICAgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIDEyNTA1NSwgMCwgOTk3MiwgNzM4NjUsIAorICAgIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCA5ODMzMjQsIDEyNjU4MSwgMTA2OTUsIDAsIAorICAgIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDkxNzg5NywgMTI5MTM0LCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKKyAgICA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCAKKyAgICA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgMCwgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAKKyAgICAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA4Mjk2MiwgMTI4OTA4LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgCisgICAgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDEyODY2NCwgODMyNDQsIDE0ODksIDAsIDAsIDAsIAorICAgIDM4OTksIDEwMDcsIDQyMTI0LCA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAKKyAgICAxMTk4MzIsIDkxNzU2MywgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIAorICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAKKyAgICAxMjEyNzAsIDAsIDc1MDI3LCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIAorICAgIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgCisgICAgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAwLCAKKyAgICAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgCisgICAgMTE4ODIzLCA2NTM1MywgMCwgNDYzMSwgMTE4OTk2LCAwLCA2NDA3LCAxMTM3MzcsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAKKyAgICAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM5MiwgOTM5ODMsIDE5NTA0MywgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAKKyAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgCisgICAgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAKKyAgICAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCAKKyAgICA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDkxNzU3OSwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgCisgICAgNzQ3OTgsIDkxODEsIDY1MzU5LCAxMjUwNjUsIDgwMTcsIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIAorICAgIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTIwNjk2LCA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIAorICAgIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCAKKyAgICA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIAorICAgIDk4Mzg4NywgMTIwNjk1LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAxMjA4NDQsIDEzMDA1LCAxMTE4MSwgMzYyOCwgMCwgMCwgCisgICAgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAKKyAgICAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAKKyAgICAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIAorICAgIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgCisgICAgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAwLCAxMTk4MjgsIDEwNDY3LCAwLCAyNDQzLCAxMDkxOCwgNzgyMTcsIAorICAgIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgCisgICAgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIAorICAgIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKKyAgICAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAKKyAgICAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIAorICAgIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIAorICAgIDEyMDYsIDM2MTksIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIAorICAgIDY4Mzg0LCA5Mjc1NCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgCisgICAgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMTIxMDg0LCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIAorICAgIDEwMzY0LCA0MzkzNSwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAKKyAgICAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAwLCA1NDE1LCAKKyAgICAxMjE3NiwgOTgzNzA5LCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIAorICAgIDk3NTksIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIAorICAgIDQyNDk1LCAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIAorICAgIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIAorICAgIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIAorICAgIDU1NzUsIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgOTI5NzksIDQzMjM2LCAzMzgyLCAKKyAgICA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMTM4MTQsIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCAKKyAgICA2OTg4OCwgNjU1MDgsIDk4MzE0MywgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMCwgOTgzNzU3LCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgNzQ2MzEsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAorICAgIDczOTY1LCAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCA3NTA1MSwgOTY4MSwgNDQ3NSwgNjc0MjksIDQxMTQyLCAyMTAwLCAKKyAgICAxMjUwMjQsIDEyMDczMSwgNjAzNSwgNzM3OTYsIDc2NTEsIDY4NDYsIDY0NDQzLCA5ODM5NTcsIDk4MzI5NiwgOTE3OTg3LCAKKyAgICAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgNjg0ODgsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgNzExODIsIAorICAgIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgNTExNCwgNjQ4NywgMzM4NiwgMTI5MDk0LCAxMDM0NCwgMCwgNTExNSwgCisgICAgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgMTk0NjY5LCAwLCAwLCAKKyAgICA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDUxMTIsIDEyMTczLCA3ODU0NSwgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIAorICAgIDk4MzY3NiwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA0Mzk2NCwgMTU4NywgMCwgMTI3MzcyLCA2NDQ3NSwgCisgICAgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCAxMjA3OTMsIDY3ODExLCA5MjI3NywgCisgICAgOTgzNjIxLCA2NDk0OCwgNDQzMCwgNDM5NjEsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIDgxOTQsIDY1NDYyLCAKKyAgICAxMDYyNiwgMTA5NjUsIDEyMDkwNSwgODg5MywgOTgzMzAzLCAxMjU0MiwgMCwgNjUzNDEsIDY3NzAzLCA2NTgyOSwgNzkyNSwgCisgICAgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIAorICAgIDEyNzEwMiwgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIDc4NTU0LCA5MzM2LCA0Mzc1MCwgCisgICAgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgCisgICAgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCAKKyAgICA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIAorICAgIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgODIyNCwgMTI4NDE3LCA4OTM4LCAKKyAgICA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCAxOTQ3OTgsIDEyMDI1MSwgMjU4OSwgNzQzMzIsIAorICAgIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCA5ODM2MTUsIDAsIDEyODUxNiwgMTI4MTYzLCAKKyAgICA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDk4MzgyMiwgMTUwMywgNzgzMzYsIDEyNzE3MywgCisgICAgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIAorICAgIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCAKKyAgICA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAKKyAgICAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCA0MzE1NSwgMCwgNzExOTcsIDMxNDYsIDEwOTU5LCAKKyAgICA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgOTE3ODQwLCAxMDYyMywgNDA4LCAxMTkwNTgsIAorICAgIDEyNzUwNywgMTMyOTgsIDEyNzI1MywgNzQyNiwgNDE2NDEsIDEyNzE3LCA5ODM3OTUsIDc2MDcsIDEwNjM5LCA0MzM5NiwgCisgICAgMTI5MzAwLCAxMTkwODksIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjI5MywgCisgICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDEyMDkzNiwgCisgICAgMTIxMDY5LCAwLCAxMTg4NTksIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAKKyAgICAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDAsIDEyMTExMiwgCisgICAgMTA5ODMsIDAsIDEyODc4NywgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTIyLCAwLCA4Mjg1LCAKKyAgICAxMjY1MTYsIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCAKKyAgICAwLCA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCAKKyAgICA0MjQ1NywgOTI4ODgsIDgzMjk5LCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgOTI0MTAsIDY5NjUwLCAxMTcwNywgODIyMiwgCisgICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgMTI3ODAxLCAxMjE0MDgsIDEyODM1OSwgODUzNCwgNjk4NTMsIDQwOTgzLCAwLCAKKyAgICAxMjE0MjEsIDAsIDcyMDEsIDEyNTYxLCAxMjA4NjYsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIAorICAgIDExOTg0MSwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCisgICAgMTIwODQwLCA5MTc5MDUsIDEyMDk1NCwgMTI3ODcyLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIDEyODkyMiwgCisgICAgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDEyODEzMSwgMTE5NTkxLCAKKyAgICAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCA4MzQ2MiwgCisgICAgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgMCwgOTIxOTgsIDAsIAorICAgIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgMCwgMjMwNSwgNzgzNDgsIDY4MDk2LCA5MTc3NzIsIDYwNTYsIAorICAgIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAKKyAgICA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCAKKyAgICA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDk4MzI1MCwgCisgICAgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCAxMjk5MCwgMCwgOTIzNzYsIDEyNzQ1LCA5Njc4LCAKKyAgICAxMjExMDgsIDEyMDU4NywgOTg2OSwgODMxNTAsIDE3NzEsIDEyODk2NSwgODkzNiwgOTI5NjQsIDAsIDQyMDgsIDc4MzQxLCAKKyAgICA3ODU2NywgNzgzNDIsIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAwLCA3MDA5NiwgNjgzNSwgNjgwMTAsIAorICAgIDY2NDc1LCAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIAorICAgIDkyNzc0LCA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIAorICAgIDQxOTAxLCA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIAorICAgIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAKKyAgICAxNzE2LCA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCAwLCA3MTExNiwgCisgICAgNTAyNCwgNzQ5NDUsIDQxMDAzLCA2ODEzNywgNTAyNSwgNjk4OTIsIDk4MzIwOSwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKKyAgICA2NTU1NywgMCwgNzQ1NDEsIDEyODkyNCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIAorICAgIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzAyNzMsIDExNTY5LCA2NTI3NSwgODkwNiwgNDM5NDUsIDU3NTUsIDI2MzYsIAorICAgIDcxMjAzLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCAKKyAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCisgICAgNjQxMzEsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKKyAgICA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgNzI0MjEsIDgyOTk4LCA3NTM4LCAKKyAgICA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIAorICAgIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgCisgICAgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgCisgICAgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDE5NDkyNCwgNDMzMDAsIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCAKKyAgICA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgCisgICAgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCAKKyAgICA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIAorICAgIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgCisgICAgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgCisgICAgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgCisgICAgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAKKyAgICA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgCisgICAgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDQzOTAyLCA3Nzk0OCwgMzYzLCAKKyAgICAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgCisgICAgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAKKyAgICAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCAKKyAgICA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjQ5NDUsIDMxMywgMTIxNDgzLCA0MTg4MSwgMTk0NjU4LCA0MjMxMSwgNzQ0NSwgCisgICAgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCAKKyAgICA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgCisgICAgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgCisgICAgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgCisgICAgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIAorICAgIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAKKyAgICAzNjIsIDkyNDM5LCA0Mzg5MCwgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAKKyAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIAorICAgIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgCisgICAgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCAKKyAgICA0MzkyMywgOTY2MSwgNDI5MzMsIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgCisgICAgOTgzODkzLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCAKKyAgICA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIAorICAgIDQyNDE3LCA0MjM4MywgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCAKKyAgICA4MzEzLCA0MTk1LCA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIAorICAgIDE3MzYsIDk4MzY4NCwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAKKyAgICAzMTQsIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCAKKyAgICA2NDE1NCwgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIAorICAgIDEyODI0LCA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgCisgICAgNjQ1NjAsIDM3NTcsIDAsIDAsIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCisgICAgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg2OCwgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCisgICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgOTgzODcxLCAxMDIzLCA0NzQsIDE5NDk0MCwgMTE5ODE4LCAwLCAwLCAKKyAgICA0MjQ4NywgNjU1NTYsIDEyMTE2OCwgMTI3ODY2LCA0MjI5NSwgMTI4MjAzLCAxMjE0NzQsIDcxMzIyLCA5MjUxOCwgMjIyMiwgCisgICAgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCA5ODM0NTUsIDAsIDU1MjUxLCAxMDExOCwgCisgICAgMzEzMywgMTI3NzcxLCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgMCwgNDE2NjUsIAorICAgIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIAorICAgIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAKKyAgICAxOTM3LCA5ODM3NTEsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgMTE5ODM3LCAxMTAxNywgCisgICAgMTIwNjAxLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAKKyAgICA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgCisgICAgMTIxMjkyLCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgCisgICAgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCA5MzUyLCA3MTQ4MSwgNjE2NSwgCisgICAgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMTEzNzYyLCA4OTE0LCA2NjkwOCwgCisgICAgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgCisgICAgMCwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCAKKyAgICA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAorICAgIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgMTI2OTg3LCA0NDg2LCAxMjgwODIsIDkxNzc5NiwgCisgICAgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgCisgICAgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgCisgICAgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAKKyAgICAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIAorICAgIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCAKKyAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAxMjgzMzUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAorICAgIDQyNDgwLCA5MTc5NDksIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCAKKyAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAKKyAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgMCwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCAKKyAgICA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIAorICAgIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCAKKyAgICA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIAorICAgIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgCisgICAgOTczNCwgNjU0MjUsIDAsIDEyMTQzMSwgMTI3MzU3LCA3NDg5MCwgNzg4MzYsIDEwMTEyLCAxMDgyNywgMTk0NjM1LCA5ODY2LCAKKyAgICA3NDUyNywgNjY2NzUsIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgCisgICAgODMxNSwgNjU0NDQsIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIAorICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgCisgICAgMTE0OTAsIDQyNzMwLCA0NDg1LCA3MTEyNiwgMTI4MTk0LCA2NDkyNiwgMCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIAorICAgIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAxMjgyNSwgMTIxMTU4LCAwLCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAorICAgIDIyMywgNzg2MzUsIDY5Njc1LCAxMjAxMTksIDQyNDQ0LCAxMjg0NDksIDY0NDk5LCA2NTI0NSwgMTI5MTA0LCAxMTcxLCAKKyAgICAxMjg4MDIsIDY5NzE3LCAxMjAxMTMsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIDc0OTU0LCAKKyAgICAyMzM4LCAxMjAwMzIsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCAxMzA5MiwgMTExODUsIDY4MTI2LCAxMjEzLCAKKyAgICAxMjg0MTksIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCA4MzAwNSwgNjQzODcsIDQxMTUsIDcxMzMxLCA1MDA1LCAKKyAgICA2NDA3MCwgNjQwNzMsIDEwNjc5LCA4MzAwMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDgzMzU4LCA4MzAxMCwgODI1MSwgCisgICAgMTAxMzYsIDY1NDM2LCAwLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgMzEwMSwgCisgICAgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCA5MzEyLCAKKyAgICA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIAorICAgIDEyODUxNSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgCisgICAgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAKKyAgICAxMDg0MCwgMCwgMTA2NjgsIDExMzcyMywgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgMCwgMTE1NywgCisgICAgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgOTE3ODg2LCAxMjc5MDUsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAKKyAgICAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAxMjAzMTQsIAorICAgIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgCisgICAgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAorICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKKyAgICA2NjM3MywgOTgzMjQ5LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCAKKyAgICA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgCisgICAgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCAKKyAgICA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIDkzMDU5LCA4MzExNCwgMjMzNiwgCisgICAgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgNzAzOTAsIDY1NDA2LCAKKyAgICA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKKyAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCA2NTQwMywgOTgzMDg5LCAKKyAgICAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAogICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCiAgICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxOTQ2NTIsIDEyNzQ3MywgODQyMSwgMTI3NDcyLCAKLSAgICA2OTY4MiwgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIDIwMjksIAotICAgIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDEyNjY0OCwgMTI3ODc3LCA0MjQ4OCwgMCwgCi0gICAgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCAKLSAgICA3Nzk4OSwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCAKLSAgICA2NTQ1MiwgMCwgMTEzMDEsIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgCi0gICAgMCwgMCwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIAotICAgIDkyNzA5LCAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIAotICAgIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgCi0gICAgOTIzNjMsIDk5OTYsIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIAotICAgIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAKLSAgICAwLCAwLCA5MTE5LCAyNzg3LCA3OTIwLCAxMTg4MjMsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgMCwgMCwgNzgwMjEsIAotICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDAsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIAotICAgIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDc4MTQxLCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIAotICAgIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCAKLSAgICA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgMCwgNDE1NjAsIDExOTcwLCA0NTYyLCA5MTc5MjAsIDI5MjYsIDkxNzkxOSwgCi0gICAgNDU2OSwgNzQxMzAsIDAsIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIDY1NjI5LCAwLCAKLSAgICAxOTQ4NTgsIDAsIDAsIDEyNzU0NSwgMTIwNTQzLCAwLCAwLCA2MjkxLCAwLCA3ODYzOSwgNDE2NjksIDcwOTQsIDkxNzkyMSwgCi0gICAgMCwgOTgzNTgxLCA3NDA1NCwgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgOTgzMzE5LCA3Njk1LCA4NzY5LCA2NTI0NiwgCi0gICAgNDgyOSwgMTk0NjYzLCA0ODU5LCA2NDQ2NywgMCwgOTgzOTYzLCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCAKLSAgICA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIDk4Mzg2MywgMTI3OTM2LCA4MDQsIDAsIDAsIDEyMjk4LCAwLCA2NjY1MywgMCwgCi0gICAgNjQ5MjQsIDEwMDkxLCA3MzkzMSwgOTQ2OCwgNzQyNDUsIDAsIDAsIDc0MjQ2LCA5MjUwMywgMTI4MzksIDY0NjY5LCAKLSAgICA5MjIwMiwgMCwgMTI3OSwgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMCwgOTI2OTcsIDQzMjM5LCA4NDgyLCA5MjQ0MCwgCi0gICAgMCwgNTAzMiwgNjk2NzcsIDExOTQwLCA2Nzg4OCwgNjY0LCAxMjA0MzcsIDUwMzQsIDAsIDAsIDEyNzUyNSwgNDI3MDIsIAotICAgIDczODg4LCA5ODMxNDksIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDAsIDkxMTUsIDc0MzAsIDEyMDM3NywgMCwgCisgICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIxNDAzLCAxMjEyOTQsIDg0MjEsIDEyNzQ3MiwgCisgICAgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgCisgICAgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgNzAzNzIsIDEyNzg3NywgCisgICAgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCA5ODM4NDAsIDEyNDk2MCwgMTIwODM5LCAKKyAgICA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCAKKyAgICA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAwLCAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgCisgICAgOTg3NCwgNzgwMDcsIDk4MzExNSwgMTMxOSwgMzA1MCwgNjU0MTAsIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCAKKyAgICA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMCwgCisgICAgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIAorICAgIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIAorICAgIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgCisgICAgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIAorICAgIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDkxNzc5MiwgMCwgNzgwMjEsIAorICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIAorICAgIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIAorICAgIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgCisgICAgMjEwNCwgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgCisgICAgNjg0OTUsIDQ1NjksIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIAorICAgIDY1NjI5LCAwLCAxOTQ4NTgsIDc0ODU0LCAwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIAorICAgIDQxNjY5LCA3MDk0LCAxMjEwNTEsIDAsIDEyMDk5OSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCisgICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgMCwgODM1MjUsIDExODk5OCwgNzIwNiwgCisgICAgMTE5NjM2LCA2NjQ3LCA0Mzk4NiwgODM1MTgsIDY5NzY2LCAxOTQ2NjQsIDY0NzY0LCA0MjEwLCAxMjgzMDAsIDEyNzkzNiwgCisgICAgODA0LCA4MzUyMCwgMCwgMTIyOTgsIDcwMzQ0LCA2NjY1MywgMTI2OTgzLCA2NDkyNCwgMTAwOTEsIDY3MjAwLCA5NDY4LCAKKyAgICA2NzIwNiwgNjcyMDUsIDY3MjA0LCA2NzIwMywgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDcxODUxLCAxMjc5LCAKKyAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIAorICAgIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyNzUyNSwgNDI3MDIsIAorICAgIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCA3MDE5MSwgCiAgICAgMTIwODE5LCA2ODM4NywgMTIwMTY4LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAKLSAgICAxMjAxNjAsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDExODg2NywgCi0gICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAwLCAxOTQ2MzgsIDAsIDE2NjMsIDEwNDE5LCA3NDAyNSwgCi0gICAgNDI2MzYsIDAsIDY5NzI1LCAwLCAxMjA2NTYsIDAsIDY3ODc2LCAwLCAwLCAwLCA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAKLSAgICAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMCwgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDAsIDY1MTk4LCA3MzkxLCA4OTg5LCAKLSAgICAyMjEsIDY1Njg2LCAwLCAwLCA4MDEwLCA3MTkxLCA0OTYyLCA2OTc3MiwgODg1NSwgMCwgMCwgNjQ0NjksIDEyMDQyNiwgCi0gICAgMTA1NTUsIDAsIDQzMzMzLCA5MjI5OSwgMCwgMTIwNDI3LCAxMDQ1MSwgMCwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgCi0gICAgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgMCwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCAwLCAwLCAKLSAgICAxMTAxMCwgMTI3MjMsIDc0MDU5LCA3NDA2MiwgNjIxNywgNTg5NiwgMCwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MjU5NSwgMCwgNzQ0MDIsIDExODg2MCwgMCwgMTIwNDE5LCA5MjQ5NywgNzQwNTIsIDAsIAotICAgIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCAxMjA0MTcsIDEyMDY2MiwgCi0gICAgNjk5MjAsIDE5NDcwMiwgNjIxNiwgMCwgMTA3NTUsIDk0NTUsIDAsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTI3NTQwLCAKLSAgICAwLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgMCwgMCwgMCwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDAsIAotICAgIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgCi0gICAgMTIwNDA5LCAxMjcwNDQsIDAsIDg1MzcsIDAsIDAsIDkzNTQsIDk4MzE2NCwgMTI4ODMzLCA0MTE5OSwgMTAxMjEsIDIwMjgsIAotICAgIDAsIDk4MzE5NCwgNjk3MTUsIDAsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgMCwgNjY0NDAsIDc1NDUsIDk3MDAsIDEyNTgwLCAKLSAgICA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCAwLCA3NDA3MSwgMCwgOTgzNDU3LCAxMjcxMywgMCwgMCwgMCwgNzg3NzIsIAotICAgIDAsIDE3MzQsIDAsIDAsIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgMCwgNzQxNjcsIDU0MiwgMCwgMTE4Nzg2LCAwLCAKLSAgICA5ODM5NzksIDEyMzAsIDAsIDAsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDEyNzkzOCwgODM1MiwgCi0gICAgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgMCwgNzAwODAsIAotICAgIDcxMzM4LCAwLCA4NjYwLCAxMjY0OTUsIDAsIDAsIDc4NzczLCA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIAotICAgIDYwODAsIDAsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgMCwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgCi0gICAgMTEyNjYsIDEyODE1MiwgMTIyNiwgNjkzMCwgNjc5NzksIDk4MzY5MCwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDAsIAotICAgIDc0Nzg1LCA2OTg3NSwgMCwgMCwgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIAotICAgIDEwODc3LCAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDAsIDc0NDU2LCAKLSAgICA2NDYwNiwgOTkxNywgMCwgOTIyMzEsIDUwMzcsIDAsIDE3NzYsIDg0MjIsIDAsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIAotICAgIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCAwLCA0NjMwLCAxMzExNywgMCwgMTI4NzcyLCA2NTEyMywgCi0gICAgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIDQyNTIsIAotICAgIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDAsIDY1NDE5LCAwLCAwLCA2NDksIDY1NDIxLCAKLSAgICAwLCA2NjcwMiwgMCwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgCi0gICAgNzAxNywgNDI4NTIsIDAsIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgOTgzODc4LCA3NDAzNSwgMCwgMTE5MTMsIAotICAgIDczODc0LCA2Njk2LCAwLCA4OTIwLCAxMTkyOTgsIDAsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgCi0gICAgMCwgMCwgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCAKLSAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAwLCAwLCA3ODA1LCAwLCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCAKLSAgICA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCAwLCAKLSAgICAwLCA3ODMzNiwgNzgzMzksIDk1NDMsIDc4MzM1LCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgOTgzOTYxLCAwLCAKLSAgICAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgNTI5OCwgMCwgNTI5NCwgMCwgMCwgOTgzNDU5LCAxOTUwNjIsIDk5NDksIAotICAgIDExOTgyNiwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIDAsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgCi0gICAgNDE0NjgsIDk4Mzc1NywgMCwgNTI5MiwgNTUyNzIsIDk4Mzg4MywgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAxMjQ1NSwgCi0gICAgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgMCwgCi0gICAgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCA3NDE5NywgMCwgNTUwMCwgODgxMywgMCwgMCwgNzQ1NjYsIDUzMjIsIDAsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCA0MzMyNCwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgCi0gICAgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIAotICAgIDQxODE1LCA0MTE1MCwgMCwgMTA1NzEsIDEwMDk2LCAwLCAwLCA3ODA3NCwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgCi0gICAgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDc0NDY2LCA5Mzk2NiwgNjY3MCwgNzc4ODIsIDAsIDAsIDQzMDkyLCAKLSAgICA0MzMyNSwgMCwgMTAxNjgsIDAsIDk3ODEsIDEyODY1NSwgOTE5MCwgMCwgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAKLSAgICAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCA5ODM0NTgsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCAKLSAgICA5ODM2NTcsIDAsIDAsIDEzNzgsIDk1MDksIDAsIDAsIDc0NDc1LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDAsIDkyMzU1LCAwLCAKLSAgICA3ODM2NSwgODc4NywgMTIwMzc5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxOTQ2MTQsIDAsIDY0NjUyLCAwLCAKLSAgICAxOTQ2MTIsIDAsIDc4MzY2LCA0MjA4OCwgMCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCAKLSAgICA3ODI1OSwgNzQ1MzQsIDgxMTksIDY0ODc0LCA5MTc4MTYsIDEyNzE5OSwgMTk0OTM5LCAwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAotICAgIDEzOTQsIDc0NTE0LCAwLCA3NDUxNSwgMCwgMTE4ODA0LCAyOTk4LCA5NTI3LCAxMjA2NTksIDY1MTkwLCAxMjk3NywgCi0gICAgNDIwOTAsIDExOTE2NSwgMCwgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIDU4NDgsIDAsIDAsIAotICAgIDM2NzAsIDEyODY1NywgMTk0NjAwLCAwLCAwLCA3ODkwLCAwLCAxMTI5OCwgNDMzMTUsIDAsIDYyMjksIDE1OTMsIDAsIDAsIAotICAgIDYxOSwgNDYzNSwgNjUwODAsIDAsIDEyODAwMiwgNDEyMCwgNjUzMzcsIDY1MzM2LCAwLCAxMTgwOCwgMTE5MjE0LCA3NDExNSwgCi0gICAgOTM2NiwgNDI3OTAsIDQyMDA2LCAxMTkxMTUsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgCi0gICAgNjUzMjEsIDY1MzIwLCA2NTMzNSwgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIAotICAgIDkyNDI3LCA5MTI4LCA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODM4MzAsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCAKLSAgICA2NTMxNiwgNDEwNiwgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMCwgNjU2MDksIDQxMjQxLCA3OTAzLCAKLSAgICA0MTIzOSwgNDM1MzMsIDc4NDU5LCA3MTg5LCAwLCAwLCAwLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCAwLCAKLSAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDAsIDU2MiwgMTIxNjksIDY1OTAsIAotICAgIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCA5ODM3ODcsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgCi0gICAgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAKLSAgICAxMjcxOTEsIDAsIDAsIDEyNjA2LCA3ODQzMywgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgCi0gICAgNzM2NSwgOTgzNzUzLCAxMjA1OTMsIDEzMDcxLCAwLCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgCi0gICAgNzQ1OTYsIDExNDY1LCA1MjEyLCAwLCA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCAwLCAKLSAgICAxNjY4LCAwLCAwLCAwLCAxMTg3LCA5ODMzODUsIDQyNjI4LCA3ODU3NSwgMCwgMTI4Nzc3LCAwLCAzMjQwLCAxMjg1MTgsIAotICAgIDEyMTk0LCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDAsIDAsIDAsIDc0NTM1LCAxNjIzLCA2NTI5NywgMTI4ODU2LCAKLSAgICA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgODkxNiwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDAsIDEwNzM2LCAKLSAgICA5MjUwOCwgMTE1NzEsIDc2MTUsIDEyNzMwMCwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgMCwgNzg4MSwgCi0gICAgNzAxLCA2NTkzNiwgMzQ4OSwgMCwgMCwgMTIwNzUxLCAxMTQwMywgMCwgMCwgMTI3MTQ2LCAzNzk2LCA2ODAwLCAwLCAzOTk0LCAKLSAgICAxMTQyMSwgMCwgMTk1MDc2LCAwLCA5ODM5MjIsIDAsIDAsIDY0ODU3LCAxMjgxMDUsIDI4NTUsIDEyNzgyOCwgNjYzMDgsIAotICAgIDQxNjIxLCA2ODIxNCwgMTI3MjgzLCAxMjc4MTcsIDEwNjU0LCAwLCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgCi0gICAgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCAxOTQ4MjIsIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAKLSAgICAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCA5ODM1NzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCAwLCAwLCAKLSAgICAxMTQwOSwgNjgzNzMsIDYzODIsIDAsIDY0NjM0LCAxMjgyNzksIDAsIDExNjEyLCAwLCA2NzYwMCwgMjM3NCwgOTQwNjYsIAotICAgIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgNTI4NiwgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIAotICAgIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgMTEzMDUsIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgCi0gICAgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgCi0gICAgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIAotICAgIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgCi0gICAgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIAotICAgIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDk4MzI4MSwgMCwgMCwgNzE5NSwgCi0gICAgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIAotICAgIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIDkyNTUxLCAxMjA4MDUsIAotICAgIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCA3ODU5NiwgMCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgCi0gICAgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDAsIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCAKLSAgICA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAKLSAgICAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCA0MTY4MCwgMCwgMTI4MjAzLCAxMTUzNCwgMTUxNCwgCi0gICAgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgMTk0NTY3LCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAKLSAgICAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCAxMjY2NDQsIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCAKLSAgICA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgCi0gICAgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgMCwgNjgzNjQsIDk4MzIyNCwgNDg5MSwgMCwgMTA2NDEsIAotICAgIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgMTM2MiwgCi0gICAgMTMyOTcsIDAsIDEyODA5NCwgMCwgOTgzMzMxLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDk4Mzg0MiwgCi0gICAgOTIzMTksIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCA5ODMzMzAsIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIAotICAgIDQzNzU1LCAwLCAwLCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCA0NTQ5LCAwLCAwLCA5ODMxNTQsIDEyNzc2MywgCi0gICAgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgODUxNSwgODY4OCwgMTI4NjYsIDY1MzA4LCAzMjk0LCA5ODMzMzIsIDg1MjksIAotICAgIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgCi0gICAgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgMzIxNSwgMCwgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAKLSAgICAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIDY2MzU0LCAxNTAxLCAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgCi0gICAgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgCi0gICAgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgNzc5NzksIDAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCAKLSAgICA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNzAwNTIsIDEyNzE2NiwgMCwgCi0gICAgNzQxOTAsIDAsIDAsIDk4Mzc4NiwgNDI3NjIsIDAsIDQyOTE0LCAxNjUwLCAyNjIsIDE2MzcsIDAsIDc5MDEsIDMyMzgsIAotICAgIDEyODE3MywgNDE4NjEsIDAsIDEyODU4NSwgNjUxNTgsIDEwODYwLCA5NDA1OSwgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCAKLSAgICA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAwLCAxMTk4MTAsIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMCwgCi0gICAgOTA4NCwgMCwgODczNywgMCwgMTI4ODEsIDAsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCAwLCAwLCAwLCA5ODM4NzUsIAotICAgIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCA5ODM4OTAsIDExODk5NiwgMTE5MDA5LCAyODUwLCAKLSAgICA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIAotICAgIDExOTg0MywgMTE5ODQyLCAxMDM5OCwgOTgzMDU2LCAwLCA4Mzc3LCAxMjcxMTYsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgCi0gICAgNDM1NDIsIDAsIDY0NTc4LCA5ODM2NzUsIDMyMjgsIDY5NjM2LCA4NzgzLCAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCAKLSAgICA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIAotICAgIDk4MzE3MywgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgNjM3OSwgMCwgMCwgMCwgMzIwOCwgMTI5NzUsIAotICAgIDc0Nzc1LCAxMjczODAsIDk4MzkzMSwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMCwgOTgzNjgzLCAyMDMzLCA3ODU3NywgCi0gICAgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIDAsIDAsIDAsIDczOTY0LCAwLCA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAKLSAgICAxMjgyNDQsIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIDAsIDEyODA2NiwgCi0gICAgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDAsIDg3NzgsIDQxNjg4LCAwLCAKLSAgICA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCA2NjcyMSwgMTEzNDIsIDEyODU2MSwgMCwgCi0gICAgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgOTgzOTUxLCAxMjY0NjksIDExOTQ2LCAwLCAKLSAgICAzMjU3LCAwLCAxMjMwNywgMTg0NSwgOTgzMTU3LCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIAotICAgIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDAsIAotICAgIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMTI2NjA3LCA4NjgsIDg3MywgNzY0MiwgMCwgODY5LCA4NzQsIDc2NDQsIAotICAgIDEyMDY3NCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDk4MzI1OCwgNTQyOSwgMTk1MDU1LCA2NjE4MCwgCi0gICAgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI4OSwgOTgzMjQ4LCA0MjA2NywgMCwgNTQzMywgMTA2NTcsIDc5MTEsIAotICAgIDE5NDYyMiwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIAotICAgIDAsIDY3NjM3LCAwLCA5Njc5LCA3NDEyMiwgMCwgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCA0NjI4LCA0MjQ1LCAKLSAgICAxMTk2NDgsIDAsIDAsIDE4NTEsIDAsIDEyNzE4OSwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgOTgzMjAyLCA0Mjc3NiwgCi0gICAgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCA2OTg4MSwgMCwgCi0gICAgOTgzMTQyLCAxMjA2MDQsIDk4MzA1MiwgOTgzODgyLCAwLCA5ODMyNzAsIDAsIDAsIDc0MjcsIDk5NTgsIDQ1ODgsIDQzNjgwLCAKLSAgICAwLCA3NDQ4NCwgMTk0OTY4LCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCA5ODM4ODUsIDAsIDc5MywgNzQ0MDQsIDAsIAotICAgIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDAsIDc4MzcsIAotICAgIDkxNzYyNSwgODE4LCA1MzM3LCAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgMTI2NTc2LCAxMjA1OTQsIDc0MDg2LCAKLSAgICA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCAKLSAgICA5MTc2MDUsIDkxNzYwNCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDAsIDI4NDAsIDAsIDExOTk4MiwgCi0gICAgOTgzOTM5LCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIDEyOTkxLCAwLCAyNjUxLCA2ODAxNiwgOTgzMjY1LCAKLSAgICA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIAotICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAKLSAgICAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKLSAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgCi0gICAgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIAotICAgIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAKLSAgICAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgCi0gICAgNDYyNywgOTgzODkyLCA1MjA4LCAwLCAxMjg4NDIsIDEwMzMyLCA1MjE4LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCAKLSAgICA2OTY0NywgNzM4OTQsIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIDc0MDMzLCAxMDUxNiwgNzc5MCwgNTUyOCwgMCwgCi0gICAgNDIxNDAsIDEyMDI4MSwgMCwgMCwgNDM1NDUsIDk4ODcsIDAsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgCi0gICAgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDkxNzk4OSwgMTI4NjY2LCAyMTEsIDI1MDksIDEyODg1OCwgMTIwNTczLCAKLSAgICA2ODY3MiwgMzIyMCwgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgCi0gICAgMTI3MjU4LCA1ODUyLCAwLCAwLCAxMjcyNTksIDE3MDgsIDAsIDk4MzE2NSwgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCAKLSAgICA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzQyMjUsIDk0MTExLCA4MjY3LCAwLCAKLSAgICAxMjcyNjUsIDAsIDc1MTYsIDAsIDI2MjUsIDk4Mzk3NywgODAzNCwgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAKLSAgICAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAxMjY2MCwgMCwgMCwgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIAotICAgIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCAwLCAzOTkwLCAwLCA5ODMyNjIsIDY2MzY4LCA1MDE3LCAKLSAgICA2NDk1NiwgNzA3MSwgMCwgMTE5MTQ0LCAxMDMwLCAxMTg4MDAsIDk4MzEyMCwgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIAotICAgIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIDk0LCAxODgwLCA3NDc2NiwgOTgzODM4LCA4OTA4LCAKLSAgICAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzgsIDAsIAotICAgIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzNSwgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAKLSAgICAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIAotICAgIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAxNTA0LCA3MDA2NCwgMCwgMTI5MTMsIDc0MjA2LCAKLSAgICA3NTI5LCAwLCAxMjg2OTksIDk4Mzk1NywgMTIwNzgyLCA0MTEzLCAwLCAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAwLCAKLSAgICA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAwLCA5ODM5NTUsIDgwMzMsIDY5OTUzLCAwLCAKLSAgICA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIDkxNzYyMywgMCwgMTk0NjkzLCAwLCA5MjY5MCwgMCwgCi0gICAgMCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAKLSAgICAwLCAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIAotICAgIDAsIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCAKLSAgICA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgOTgzNzE5LCAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIAotICAgIDQxMDM5LCAxMjc0ODMsIDAsIDY4MCwgMjMwMiwgMTI4MjAwLCAxMTgxLCA3MDU2LCAzMTc0LCAxMjY1MTYsIDAsIDkyNjY4LCAKLSAgICA2NTY2NSwgMTI3Mzc1LCAxMjY1MDYsIDY5MjAsIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIAotICAgIDc0MTE5LCAwLCA0MTAyOCwgMCwgNjIzMSwgMjYxMywgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCAKLSAgICA5ODM1NjYsIDAsIDQwOTg3LCA0NjY3LCAwLCA5ODM5MzIsIDg4MjgsIDAsIDAsIDEyNDYsIDQ3NDYsIDAsIDAsIDExMDIxLCAKLSAgICA0NzQ5LCA5MjY3NSwgMCwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAwLCA2NDY1MywgNzgzODYsIAotICAgIDEyODEyMSwgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCAwLCAwLCA5ODM4NjcsIDc2MDQsIDk4MzI5MCwgNDAwOSwgCi0gICAgMTI3ODE2LCA5ODM3MTAsIDEyMDU2MiwgMCwgOTgzNzIwLCA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgCi0gICAgNDA0OCwgOTgzNTk4LCAwLCA3MDAyNCwgMTY0NiwgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAwLCAxMTk4OTAsIAotICAgIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIAotICAgIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDE5NDYxMCwgMzM5OSwgOTg1MSwgCi0gICAgOTgzNzE3LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMCwgMCwgMCwgNzEzNjcsIDAsIDAsIDE3NzcsIDkxNTEsIAotICAgIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgCi0gICAgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCA5ODMyMTYsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIAotICAgIDAsIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCAKLSAgICA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAKLSAgICAwLCA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIAotICAgIDk4MzIyMywgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCAKLSAgICA3NzY0LCA5ODM3MTQsIDExMDk0LCAxMjA4MjUsIDAsIDk4MzIyNiwgNDI4MiwgODI5OCwgMCwgMCwgMCwgMCwgMCwgNjQ0NDksIAotICAgIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDAsIDc0NzgzLCA2NTY3MCwgMCwgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAKLSAgICAwLCAwLCAwLCAwLCAxMjA3NjQsIDAsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgCi0gICAgMCwgMjYwMiwgMTI4MzQxLCAwLCAxOTQ3MDcsIDQxMTM1LCAwLCAwLCAwLCA2NDYzMSwgMTcyLCA0OTcxLCA0MTIxOSwgCi0gICAgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgOTIxOTMsIDc1OTcsIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgCi0gICAgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgMCwgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAKLSAgICAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgCi0gICAgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgOTE3OTU3LCA4NTI1LCAxMjczNDcsIDM1MjQsIAotICAgIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCA5MjU2NCwgMzA3NSwgNjc4NjcsIDEyNzM1MiwgMCwgNjYzNjIsIDAsIDY0MzUzLCAwLCAKLSAgICAwLCA1ODQ1LCAwLCAwLCAwLCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDAsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIAotICAgIDk4MzIwMSwgNjM0MCwgMTE4ODU1LCAwLCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIDI5MTQsIDcwMTEsIAotICAgIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgNzM3NzQsIDEwOTEzLCAwLCAwLCA4NjY2LCAKLSAgICA2NzUsIDQyNDkzLCAwLCA0MzU3MSwgMCwgNjIxOSwgMCwgOTk4MCwgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIAotICAgIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgCi0gICAgOTgzMzc5LCAwLCA5ODMyMjIsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgMCwgNDM3NDQsIAotICAgIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgCi0gICAgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAKLSAgICAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIDEyNzMyNiwgMTIwNDYwLCAKLSAgICA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIAotICAgIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgMCwgMCwgOTgzMzIxLCAxMjA3MzcsIDAsIDk4Mzk3MSwgCi0gICAgOTgzMzIwLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCA5ODMzMjUsIDY1Njk1LCAxMjY1NTksIDM3LCA3MDY4LCAwLCAxMjA0ODAsIAotICAgIDEyMDQ3OSwgMzIwOSwgMTIwNDc3LCAwLCAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgOTgzMzk5LCAwLCAwLCAwLCAwLCAKLSAgICA2NTUxMCwgMCwgMCwgNTIzMywgOTgzMzM1LCA2NDc5MiwgOTgzMzM0LCAwLCAxMjY2MzMsIDAsIDcwNjAsIDk4NDcsIAotICAgIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCA3Mzk3MSwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIAotICAgIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIDkwMTQsIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCAKLSAgICA2NTQ3LCAxMjgxMzIsIDgyMDMsIDc4NDg4LCA5ODMwOTAsIDg0NTgsIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgCi0gICAgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIAotICAgIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIAotICAgIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIAotICAgIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAwLCA0Mjg4OCwgNjU3MTIsIDk4MzMwNCwgMzg2OSwgMTE5MzcsIDU3MjUsIAotICAgIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgNTcyNywgNzg1MjEsIAotICAgIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIAotICAgIDExNDIzLCAwLCAxMTk4NjEsIDcxMzQ0LCA0MzQ2NSwgMCwgMTI4MjY3LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCAKLSAgICAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAwLCA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAKLSAgICAxMTgyNSwgMjYwNywgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgNzAwNTgsIAotICAgIDQxMTQ0LCAwLCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDAsIDk4MzE0OCwgODgyMCwgMzk0NywgCi0gICAgMCwgMCwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCA5MTc3ODUsIDE5NDkzMiwgMCwgNzY4OCwgOTE3Nzg2LCAKLSAgICA3Njg2LCA4Mjg4LCAxMTgxNSwgMCwgMCwgOTgzMzgyLCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIAotICAgIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIDExNzk0LCA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIAotICAgIDkzMzUsIDEyODUwLCAxMTk4NzAsIDY1NTMsIDcwNTUsIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAKLSAgICAxMjk5MCwgMTE2MCwgNDIwODQsIDExOTY1MCwgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIAotICAgIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCA5ODMyOTQsIAotICAgIDEzMDc2LCAzMTM1LCA5ODMyODcsIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgCi0gICAgMTAxODMsIDAsIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMCwgMTI3MTczLCA2OTc0MSwgOTgzNTgyLCA2MTYzLCAKLSAgICA5ODM1NTgsIDAsIDEyNzMxNCwgMCwgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDExOTU3MywgCi0gICAgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAwLCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgCi0gICAgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAwLCAyNTcwLCA3MDIxLCAwLCAwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgCi0gICAgNjk3NCwgMCwgMCwgOTgzMjExLCA1MDAyLCAwLCA0MTI4NiwgNjk5NDYsIDEyNzAxOSwgMCwgNDM1ODUsIDAsIDY1NTEsIAotICAgIDk4Mzk2MiwgMTI4MjI5LCAwLCA0MTI4OSwgMCwgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAKLSAgICAxMjg2NjEsIDAsIDk4MzM3NSwgNDEyNzksIDAsIDAsIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgCi0gICAgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyOSwgCi0gICAgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIAotICAgIDAsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCAKLSAgICA3NDA1OCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAKLSAgICAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxODIsIDM3NTEsIDkxMjAsIDk4MzQ4NSwgMCwgMTc5OCwgNzA5LCAwLCAKLSAgICAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIAotICAgIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIDYxMzYsIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgCi0gICAgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAxOTQ5NDUsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIAotICAgIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCAKLSAgICA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgMCwgOTQxMDksIDAsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIAotICAgIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCA5ODM3MzcsIDAsIDEwNjUsIDAsIDAsIDQzNDAwLCAyNTc2LCAKLSAgICA2NjY5NiwgOTM5OTksIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCAKLSAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDc0NTgwLCA0MzM5OCwgMjU4MCwgOTgzODEwLCA0MTM0MSwgCi0gICAgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMCwgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCAKLSAgICA3NDA5OCwgNDI4MjcsIDAsIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDk4MzczMywgCi0gICAgMTE5MDQyLCAwLCAxMjc4NjUsIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgCi0gICAgNDI1NjksIDEyNzgyNCwgMCwgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMCwgMCwgMTk0NzgyLCAwLCA2NDQ5NiwgCi0gICAgNzQxMDksIDcwMDMwLCA5OTE1LCAwLCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCAKLSAgICA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCA2ODIyMSwgMCwgMTI3MzgzLCAxMjcxNzEsIDAsIDAsIDEyNzc5NywgCi0gICAgOTAyOSwgNDM1NDMsIDExOTMxNSwgMjM1MywgNjMwOCwgMCwgNzQ3OTIsIDI2MTEsIDExOTE4NiwgMCwgMCwgMCwgNDM2NjQsIAotICAgIDkyMzk5LCA2NjYyNywgMCwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgNjUyMzMsIDAsIDQxMjI0LCA0MTAxNywgMCwgCi0gICAgMzc0NywgMTA1MjIsIDAsIDAsIDE2OTEsIDQxMjI2LCAwLCAxMjEwNywgNzEwMCwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIAotICAgIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAKLSAgICAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgCi0gICAgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIAotICAgIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgCi0gICAgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDAsIAotICAgIDQxNTc3LCAwLCAxMDAwMiwgMCwgNjUzMywgNzM4MDIsIDQxNTcwLCAwLCA2ODMsIDM5NiwgNDE1ODAsIDY4MTQ2LCAwLCAKLSAgICAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgMCwgNDc0MywgMCwgMCwgNzQwNDAsIAotICAgIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDcxMzQ5LCAwLCAzOTY0LCA2NTkyLCAwLCAKLSAgICAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMCwgNDIwNzAsIDY1NjMsIAotICAgIDQzMDc1LCA5MDE4LCA5NDAwNiwgOTgzMzk2LCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAxMjc5NjksIDAsIAotICAgIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIDExODgyMiwgMTc1MCwgCi0gICAgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIDExOTE0NSwgMCwgCi0gICAgOTE3NTU4LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgNDUxMiwgMTE5MzYwLCAKLSAgICA2NTIzMCwgMTI4MTA5LCAwLCAwLCAzODU1LCAwLCAwLCAwLCAwLCA3NDI5NSwgMCwgMCwgOTI0MTYsIDM5NzUsIDAsIAotICAgIDc0MDg3LCAwLCAxMjY3MiwgMzc5OCwgMjcwMywgOTgzNTk5LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCA0MTA5NSwgCi0gICAgMzk2MiwgMCwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMCwgMCwgCi0gICAgNDE4NTEsIDEyODIzMCwgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIAotICAgIDEyODAzMiwgMCwgNDI1MzEsIDExOTEwOCwgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgCi0gICAgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgCi0gICAgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgCi0gICAgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgCi0gICAgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgCi0gICAgOTIzNDcsIDk4MzA4NywgNDEzNTAsIDkxMjksIDAsIDAsIDIyOTQsIDAsIDkyNDg5LCAwLCAxMDQ4MSwgMCwgNzAwMjIsIAotICAgIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDkzOTcyLCAwLCAwLCA5MjIwMCwgMCwgMCwgNjc2NCwgMTI3NDg3LCAwLCAwLCAwLCAwLCAKLSAgICA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAwLCAzMjEwLCAwLCAwLCAxMTg3OTUsIDAsIDAsIDEyNzk3MCwgCi0gICAgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI2NjQyLCAzNjc1LCA1MjA3LCAKLSAgICA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAKLSAgICAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCA3MTMzNiwgMCwgMCwgMCwgNjQyOTMsIAotICAgIDY4MDk4LCAyNjM1LCAwLCAwLCA5ODM4NDYsIDAsIDk4MzY0MSwgNzgzNSwgNzAwNDAsIDAsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCA5ODMxMDIsIDAsIDAsIDcwMDMzLCA0MDExLCAKLSAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDk2LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKLSAgICA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgCi0gICAgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NCwgOTgzNDgxLCA5ODM0ODIsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgCi0gICAgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIDk4MzQ4OCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCAKLSAgICA1NDkxLCAwLCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIAotICAgIDYzMDAsIDAsIDcxMjIsIDAsIDQzOTAsIDQ1NCwgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgCi0gICAgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIDAsIDM3NDYsIDExMDE2LCA2NTc1MiwgMTIwMDM3LCAwLCA0MzQyMywgCi0gICAgMTI4NjgzLCAxMTk4OSwgMCwgMCwgMCwgMCwgMCwgODI0OSwgMTI4MTcyLCAwLCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAotICAgIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgMTIwNzEwLCA2NTAwOCwgMCwgMTk0Nzg0LCAxOTQ5ODksIDE5NDc5NSwgOTgzNDczLCAKLSAgICA5MjUxNSwgNjg0NzUsIDkzOTczLCAwLCAwLCA3ODYzNywgMTI2NDcsIDAsIDEyODA0MywgNjk4OTMsIDEwMzYsIDk4MzQ3NywgCi0gICAgOTI0MTksIDE3MjMsIDEyODA1NiwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgNzM4NzYsIDk4MzQ2OSwgCi0gICAgNzQ0ODYsIDk4MzQ2NywgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNjg0MzcsIAotICAgIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIDExOTA3LCAKLSAgICAxOTUwMDAsIDU2OTAsIDkyMjU1LCA5Mzk5MiwgMCwgNDMxODEsIDEzMDk1LCAwLCAxMjc4NTcsIDY0NDk4LCAwLCA5NTA2LCAKLSAgICA2OTc4LCAxOTQ5OTMsIDc3OTkyLCAwLCAwLCAxOTQ5OTIsIDAsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCAwLCAwLCAwLCAKLSAgICAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCA3ODM3OCwgMTIwMTI2LCA1MjIzLCAxMzA0LCAwLCAxMTk1NjQsIDUyMjYsIAotICAgIDEyNjAyLCA5NDA0NCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKLSAgICA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgMCwgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIAotICAgIDEyNzQ5MCwgOTgzNDQxLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCAKLSAgICA0MTE3NSwgOTgzNDQ4LCA5ODM0NDUsIDk4MzQ0NiwgNTI5NiwgOTgzNDQ0LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAKLSAgICAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCAKLSAgICA0Mzk3NiwgMCwgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAxMTg4NjksIDAsIDQ1NDAsIAotICAgIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIDQ2NDMsIDUxMzIsIDAsIDYzODksIDEyODUzMywgNTE0MywgMCwgCi0gICAgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIDY5OTE2LCAwLCA0MjA2MCwgNzEzMjYsIDk2NDgsIDE5NDgwNCwgCi0gICAgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgCi0gICAgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCAKLSAgICA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAKLSAgICAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAxMjcwNzEsIDk4MzY3MCwgMzIwLCAwLCAKLSAgICA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgCi0gICAgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIAotICAgIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAxMjczNDQsIDk1NTQsIDAsIDk0MDQ4LCAxMjcxMDksIAotICAgIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAKLSAgICAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCAKLSAgICA0MjU3NiwgMCwgNTIwMCwgMTI2NjExLCA5MTc5NDgsIDAsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIAotICAgIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgCi0gICAgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCA4MDkzLCAKLSAgICA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAwLCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjgxNzgsIDU3MzgsIAotICAgIDk4MzIxNSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCAwLCA2ODExMiwgNzg3MiwgODU4MSwgMCwgMTI2MCwgCi0gICAgMzE0OSwgNTM1OSwgMTIwMTM0LCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCA1MzY0LCAwLCAxMTQzMSwgCi0gICAgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIDQyOTE3LCAxMjA3OTMsIDAsIAotICAgIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIAotICAgIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIDEyMDYzMiwgMCwgMCwgCi0gICAgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIDczODE5LCAxMjA1ODgsIAotICAgIDUwMTIsIDc3OTEyLCA0MTM2MiwgNjk4NjIsIDc4Mjk2LCAxMTkyMSwgMCwgMTE3NjksIDAsIDY4NjA5LCA0MTM2NCwgMCwgCi0gICAgNzQyMjgsIDQxMzUyLCA0MTM2MSwgMCwgNDEzNjYsIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAotICAgIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCi0gICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMTI4ODE5LCAxMDE5MCwgCi0gICAgMTIwNjk4LCA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKLSAgICAxMDg1MiwgMCwgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgCi0gICAgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCAKLSAgICA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIAotICAgIDc4Mjg3LCAwLCA5ODMzLCAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgCi0gICAgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgCi0gICAgNTE2NSwgNTEyNiwgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIAotICAgIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgCi0gICAgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCi0gICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgCi0gICAgNTc0LCA5MTc5MjIsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIAotICAgIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAKLSAgICAxMDg1OSwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKLSAgICAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIAotICAgIDExOTA3NiwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgCi0gICAgODAyMSwgMCwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCAKLSAgICA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIAotICAgIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCAwLCAwLCAKLSAgICA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgCi0gICAgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIAotICAgIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgCi0gICAgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIAotICAgIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMCwgNTg5NCwgNzAwNjksIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAKLSAgICAzMzM0LCAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAwLCAxNjUxLCAxMjg3NzEsIDg4NjEsIDAsIDAsIDExNDIsIAotICAgIDAsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgCi0gICAgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIDE5NDY4NiwgNzg4NTMsIDAsIDc4ODU0LCAKLSAgICAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgCi0gICAgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCAKLSAgICA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAKLSAgICAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCAKLSAgICA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3MDA4MywgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIAotICAgIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgMCwgMCwgMTE2MDMsIAotICAgIDk4Mzk1NCwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDk4MzcwMCwgMCwgMCwgNDI1NzIsIDEyODI2NCwgCi0gICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTI3MDk4LCAxMTY1NCwgMCwgNzU1MCwgMTA2ODYsIDU5MDMsIDAsIDc4MDA5LCAKLSAgICA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDAsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDEyODMwMCwgCi0gICAgMCwgNzg2MjEsIDE5NDY3MiwgNjkyNSwgMCwgMCwgOTE3OTI5LCAwLCAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIAotICAgIDkxNzkzMCwgNzg1MiwgMCwgMCwgNjc1NCwgNjMxMiwgMCwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgCi0gICAgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAwLCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAwLCA5ODMyMzQsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDE5NTAzMCwgCi0gICAgMTk1MDU3LCAxMTQ0NSwgMCwgMjExMiwgMTk1MDU2LCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKLSAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIDAsIDEyMDQ5MywgCi0gICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCi0gICAgNDM5MSwgNjgxMzksIDk4MzA2MiwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDAsIDY0NzU3LCAKLSAgICAwLCAzOTEzLCAwLCAwLCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIAotICAgIDExNzkxLCAwLCAwLCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIDAsIDAsIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCAKLSAgICA3NDIxMSwgNDE4OTcsIDY4NDc3LCAwLCA5MTc1ODMsIDk4MzYzNCwgOTQwNjUsIDI0OTMsIDAsIDExODgxMSwgMCwgMCwgCi0gICAgNjQzNTQsIDAsIDg3NzcsIDAsIDQwNiwgODg4NCwgMjM4NSwgMCwgOTI0NTAsIDAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAKLSAgICAxMjExNCwgMCwgOTE3NTc5LCA2NDkzNiwgMTk0Njk1LCAwLCAxMjA2MjksIDEwNTYxLCAwLCA4MzY1LCAxMjA1MzksIAotICAgIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAwLCA5MTc1NzUsIDc4MzQsIDc0MTU5LCAwLCAKLSAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1OTYsIDE2MzksIDAsIDAsIDc0MTU3LCA2MzI3LCA2NzI0LCAwLCAKLSAgICAxMjgwODYsIDkyNTY2LCA2OTkxMCwgNDgxNywgNzg0NDYsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIDExMDIyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTk0NzYxLCAxMjM0MywgNjU3LCAKLSAgICAxOTUwNTQsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgMCwgMCwgMCwgNDQ1NiwgCi0gICAgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDAsIDkxNzU5NSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIAotICAgIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCAxOTUwNDMsIDQ4MTgsIDE5NTA0OCwgNDE0MDMsIDExOTk3NywgMCwgMCwgCi0gICAgNDE0MDYsIDQzMjczLCA3NDE2MCwgMTE5OTgzLCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgCi0gICAgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgCi0gICAgNzAwNzAsIDMzNzUsIDEyODg2OSwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAwLCAwLCAxMjg3NzQsIDAsIAotICAgIDIyODIsIDAsIDEyNzgxMCwgMTE0MDEsIDk4MzgyMiwgMCwgNjg0NTksIDAsIDAsIDAsIDAsIDY1NDM4LCAwLCA3MjgwLCAKLSAgICAxMjc4ODcsIDAsIDEyNzM4MSwgNDg2OCwgODI5NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgMCwgCi0gICAgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMTkyNDMsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCA3MTMzMCwgOTc3LCAKLSAgICA0NDU4LCAwLCAwLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIAotICAgIDc4NiwgMCwgNDMxNzQsIDY0MzQwLCAwLCAxOTQ3NjcsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCi0gICAgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCAwLCA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAKLSAgICAxMjc4MDksIDk4MzY0NCwgMTM5OSwgOTgzNjUyLCA2NTIxNywgMCwgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgCi0gICAgMCwgOTgzNjM5LCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAwLCA5ODM2NDMsIDAsIDQyNzgwLCAwLCAwLCAKLSAgICAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAwLCAKLSAgICAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIDQ0MjAsIDAsIDY0MTAsIAotICAgIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgMCwgCi0gICAgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIAotICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKLSAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAotICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzOSwgOTgzMzM4LCA5ODMzMzcsIDk4MzMzNiwgMjczNSwgCi0gICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCi0gICAgOTgzOTI4LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKLSAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzU4LCA2NzU4LCAKLSAgICA5ODM5MjYsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjgsIDcwMTAwLCAKLSAgICA5ODMzMjYsIDcyNjAsIDk4MzMyNCwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAotICAgIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgCi0gICAgNTMyLCA3ODY2MywgMCwgOTgzNzk2LCAxMjA2MDksIDAsIDMzNzAsIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgCi0gICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MTcsIDY1NDk1LCA2NDcwNiwgOTgzMzE4LCA0MzM0NCwgOTgzMzE2LCAKLSAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzExLCA5ODMzMTAsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAotICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAotICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKLSAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMzMDUsIAotICAgIDExNzE4LCA5ODMzMDMsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKLSAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKLSAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKLSAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjk5LCA5ODMyOTgsIDEyODI3MywgMTA3NDUsIAotICAgIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAKLSAgICAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDcxMzA3LCAxMjgwMzgsIDAsIDAsIDEyNzE3NCwgNjQyNzgsIAotICAgIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgMTE5MDI5LCAwLCA3MzgyMywgMCwgCi0gICAgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA5ODMyODYsIDk4MzI4NSwgCi0gICAgMTI4NTcwLCAxMjEwNiwgOTgzMjgyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCi0gICAgOTUyMiwgNzQwNzksIDc4MjY2LCA2NjYwNCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCi0gICAgNzc5MDAsIDg0NTEsIDAsIDAsIDAsIDY5NzM5LCAwLCAwLCAwLCAwLCAyOTA4LCAwLCA0MzM4NiwgNjQ5MDIsIDQyNDMsIDAsIAotICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCA5ODMyNzksIDczOTQwLCA2NDM1MiwgMTI3NTEzLCA5ODMyNzUsIDQxMSwgOTgzMjczLCAKLSAgICA5MTk5LCA5ODMyNzEsIDQwNTYsIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCA5ODM5MzcsIDU0MjgsIDE5NDc0MywgCi0gICAgMzM2NCwgNDIyNjUsIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgCi0gICAgNDQwMTIsIDAsIDAsIDkyNTg1LCA5MTU4LCA3Nzg0MiwgNjk5MDUsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKLSAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI2MywgOTM5NjIsIDI3OTQsIAotICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAotICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKLSAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAotICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQ5LCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCi0gICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgCi0gICAgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCAKLSAgICA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIAotICAgIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTgzNDEzLCAwLCAxMTczOSwgOTgzNDI2LCA0MTk4MSwgMCwgNTkzOCwgMCwgNDM3NjYsIAotICAgIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgCi0gICAgNDE3MDMsIDk4MzYzOCwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgMCwgMCwgOTI0NTcsIDAsIAotICAgIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIDAsIDAsIDEwOTcwLCAKLSAgICAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgCi0gICAgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCi0gICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAKLSAgICAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIAotICAgIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAKLSAgICAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgNjYxOTgsIDQxODgwLCAKLSAgICA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIDczNzg4LCA3Nzg4LCAKLSAgICA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIAotICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzgsIDY4NjI1LCA5ODM0MzYsIDcyNjksIDAsIAotICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyOSwgNDQzLCAKLSAgICA5ODM0MjcsIDQ5NDQsIDU0NjcsIDExOTYwMywgOTgzMjU0LCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIAotICAgIDQxMzAzLCAwLCAxOTQ5MzEsIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCAKLSAgICA0MTMwNCwgODI0LCAxMjg2NzYsIDEyMDkxLCA3ODg5MywgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIAotICAgIDExOTgyMCwgMTE5ODE5LCA2NTA1OSwgMCwgNjczOSwgMCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgCi0gICAgMTE5ODMyLCA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIAotICAgIDc4MTcwLCA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDExOTk0OSwgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIAotICAgIDEyNzAyNCwgMTg1NSwgOTgzNDEyLCA2ODY2OSwgOTgzNDEwLCA5MjQ0NSwgMTI3NTU0LCAwLCAxMjczMzksIDExOTY1MiwgCi0gICAgMjc0NSwgMTE3OTcsIDk4MzQxOCwgMTI4MTU5LCA5MjAyLCA0NjU0LCA5ODM0MTQsIDk4MzQxNiwgNjg2MzgsIDczOTkzLCAKLSAgICAxMDUyNSwgNDY0OSwgNjUyMDksIDk4MzQxNywgMCwgNDY0OCwgNDMwODAsIDk4MzQwNiwgOTgzNDA3LCA5ODM0MDQsIDYyNDYsIAotICAgIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIDQzMTg3LCAKLSAgICA4NjY5LCA5ODM0MTUsIDY4MjEsIDY1MDkzLCAwLCA3ODg4MSwgMjcxNiwgMCwgOTgzMDYwLCA5ODM0MTksIDAsIDY4MzY5LCAKLSAgICAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA3OTkyLCAwLCAwLCA0NjYyLCA3ODAzMywgCi0gICAgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgCi0gICAgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIAotICAgIDk4MzQxMSwgMCwgMCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgNDg2NywgMCwgMTAwMDgsIDEwMjIyLCAKLSAgICAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIDk4MzM5NSwgOTQwNzAsIDk4MzM5MywgCi0gICAgOTgzMzk0LCA5ODMzOTEsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNzg4ODcsIDEyODgwLCA2NTMwNywgNDYxNywgCi0gICAgNzg4ODMsIDk4MzM4NiwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDk4MzM4MCwgNTk1OCwgMCwgOTgzNDMzLCAKLSAgICA0MjE1LCA5Nzg5LCA5MTc5NDEsIDQzMjEsIDQ2MjEsIDk4MzM4OSwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgNjU4MDMsIDAsIAotICAgIDUzNjYsIDEyMjAxLCA1MzcyLCAwLCA5ODM0MDksIDAsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzQwMCwgMCwgNDYzOCwgCi0gICAgOTgzNDA1LCAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTI3ODMzLCA1Mzc2LCAxODM1LCA1MzM1LCAKLSAgICAxOTQ5NjYsIDEyODA4OSwgNDYzMywgMCwgNjgxMTksIDExODAsIDQ2MzIsIDEyODA5MywgNTM4NywgNTMzMywgMCwgMCwgCi0gICAgNDIwOTQsIDUzMzEsIDQ2MzQsIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDAsIAotICAgIDEyNjgsIDY1MDk3LCA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgCi0gICAgNDc1OCwgOTgzMzc0LCAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKLSAgICA3NDM4NCwgOTgzMzc4LCA2ODM3NywgNjI0OCwgOTgzMzYyLCA5ODMzNjMsIDk4MzM2MCwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKLSAgICA0NzU3LCAwLCAwLCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMCwgMTA3MTMsIDcxNjYsIDAsIAotICAgIDI2MjIsIDc0NjAsIDEyNzMwMiwgMCwgMCwgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIAotICAgIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAwLCAwLCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgCi0gICAgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDk4MzQyMCwgCi0gICAgOTgzODcyLCAxOTQ5MDcsIDQ0MDAzLCAwLCA5ODM0ODAsIDk4MzQyMywgMTIwNDk4LCAxMjc4NTEsIDE5NTAwOSwgOTgzODY1LCAKLSAgICA3NDAyMiwgOTgzNDIyLCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgOTgzNDg5LCA1NzIxLCA5ODM0MDEsIDU1MTksIDg2MzIsIAotICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA5ODMzNTIsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAotICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzM1NSwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIAotICAgIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgOTgzMzQ5LCA5ODMzNDYsIDc3ODQ5LCA0NjA4LCA2NDI2MCwgCi0gICAgNDExMjQsIDUxOTAsIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgNjc5OTgsIDY3NjIwLCAwLCAyNzM0LCAxMTA3NCwgMCwgCi0gICAgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgMCwgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAKLSAgICAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIAotICAgIDYyMzksIDExOTk1NiwgNDEyNTYsIDAsIDY4MTM0LCAwLCA3NDIwOSwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIAotICAgIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIAotICAgIDcxOTMsIDY4MTM3LCAwLCA1NzM5LCA0MTAyNCwgNDg2NiwgMCwgNzM5MDQsIDk4Mzg0MCwgNDg2OSwgMTIwNTYzLCAwLCAKLSAgICA0MjIzLCAxMjgyMDEsIDY2NTAsIDEyNjUwOSwgMCwgOTgzNDYzLCAxMjc4OTAsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIAotICAgIDc4MTc2LCA2ODY2NywgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgMCwgCi0gICAgNjI0NSwgNjg2NTIsIDI3MzIsIDQyNzM0LCA3NDUsIDAsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDAsIDY4NjMxLCAKLSAgICA0Mjc3NSwgMCwgMTk0OTU0LCAwLCAzMDk3LCAwLCA1OTY2LCA5ODM0ODYsIDQ3NzgsIDAsIDEwODYzLCAwLCA0NzgxLCAwLCAKLSAgICA2NDQwNywgMCwgMTI4MzIzLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgCi0gICAgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgCi0gICAgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCAKLSAgICA0MzI3OCwgNDI2MzUsIDAsIDAsIDU5NjMsIDkxNzkyNiwgMCwgMCwgNDg1MCwgMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIAotICAgIDQ4NTQsIDEyNzkxOCwgNTE2NCwgOTgzODcwLCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgCi0gICAgOTI0NzEsIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDAsIDQxMjY4LCA0ODQ4LCAyNTMwLCA5MTc5MDksIDIwNjgsIDE5NjQsIAotICAgIDAsIDczNzYyLCAxMDQ1OCwgMCwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDAsIDY4MjExLCA4MzIyLCA0Nzk3LCAKLSAgICA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNCwgMzAzLCA5ODMxMDEsIDkyNjIyLCAKLSAgICA5ODM0MjUsIDI0MzcsIDAsIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgMCwgNDMyOTIsIDAsIDI0NDEsIAotICAgIDEwNzM5LCA2NTA5MCwgMCwgMTE5MzI3LCAxMjY1NDEsIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIAotICAgIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgMTE3MjIsIDkyNDgsIDkyNTU1LCA0Mjg3OSwgMTE3MjUsIDAsIDAsIAotICAgIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAxNDA4LCA1MjYxLCA0NjA3LCAwLCAxODEsIAotICAgIDk4MzQzMCwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAKLSAgICA5ODM2MDEsIDAsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCAKLSAgICA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgCi0gICAgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIAotICAgIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAotICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA5ODM0MzksIDc4NzE0LCA2NDE5MSwgCi0gICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIAotICAgIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzQzNywgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIAotICAgIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgCi0gICAgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCAKLSAgICA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAorICAgIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCA2Nzc0MSwgCisgICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAwLCAxNjYzLCAxMDQxOSwgNDI5MDEsIAorICAgIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIDY3MjEzLCA2NzIxMiwgMCwgCisgICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDE5NDczMiwgMCwgMTA4NTUsIAorICAgIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgOTgzODc0LCAxMTkyMzgsIDgwMTAsIAorICAgIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgCisgICAgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIAorICAgIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCAKKyAgICA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIAorICAgIDEwMjM1LCAwLCAwLCA5ODMzMjUsIDQzNDQxLCAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDEyNjY0MSwgNzQ0MDIsIDExODg2MCwgCisgICAgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAorICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgMTIwNjYyLCA2OTkyMCwgMTk0NzAyLCA2MjE2LCA2NzIzMCwgCisgICAgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyMTEyNSwgMCwgNjk2ODAsIDI4MjgsIDAsIAorICAgIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAKKyAgICAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgCisgICAgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAwLCA4NTM3LCAxMjczMDYsIDAsIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCAKKyAgICA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgCisgICAgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCAKKyAgICA3NDA3MSwgMCwgOTgzNDU5LCAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzc3MCwgMTczNCwgMCwgNzgxNDEsIAorICAgIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDkxNzk4MSwgMTE4Nzg2LCA5ODM4NTksIAorICAgIDE5NDc5NywgMTIzMCwgMTI1MDE4LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAorICAgIDY3NzM3LCA4MzUyLCA3ODQzNiwgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgCisgICAgNzg0MzQsIDk3MDQsIDAsIDE5NDU3MywgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0NzgsIDAsIDEyODU2OSwgNzg3NzMsIAorICAgIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTk0ODUxLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIAorICAgIDk4MzEwMSwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgCisgICAgNjc5NzksIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDAsIDEyMTQ3OCwgCisgICAgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNjc2ODIsIDEwODc3LCAxMTg4NjgsIDY0ODg1LCAKKyAgICA3NDI3MiwgMCwgMTk0NjcyLCAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAorICAgIDAsIDc0ODU1LCA1MDM3LCAxMTk5MTIsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgCisgICAgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgODMwMDIsIDEyODc3MiwgCisgICAgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCAKKyAgICA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCA5ODM5NDksIDY1NDE5LCAwLCAKKyAgICAxMjg0OTYsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCAKKyAgICA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCA5MTc4MjYsIDgxNTcsIDk3MzYsIDY0NTAzLCAKKyAgICA2NTQxOCwgMTI5MDUwLCA5ODM4NzgsIDc0MDM1LCAxOTQ5MTgsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAKKyAgICAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgCisgICAgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgCisgICAgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgCisgICAgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIAorICAgIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzUwNTIsIDc4MzM5LCA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgCisgICAgNzc4MzEsIDk4Mzk2MSwgMTk0NjQ5LCAxMjQ1MSwgNzQzNzYsIDg2ODQsIDEyODMwMSwgNjEwMiwgMCwgNTI5OCwgOTE3ODQ3LCAKKyAgICA1Mjk0LCAwLCA4MzAxNiwgNjgwNDMsIDE5NTA2MiwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAKKyAgICAxMjg2NDYsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDgzMDEyLCAwLCA1MjkyLCA1NTI3MiwgCisgICAgOTgzODgzLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzcsIDEyNDU1LCAxNzkzLCAxMjQ5ODIsIDAsIDc1MDM2LCA2NjQzLCAKKyAgICA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCA3ODgzNSwgMTMyMTksIDk1NjksIDEyOTA0MSwgCisgICAgNzQzODMsIDAsIDc0MTk3LCAxMjkwODksIDU1MDAsIDg4MTMsIDAsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgCisgICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAKKyAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIAorICAgIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIAorICAgIDQzMTYyLCA0MTgxNSwgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCAKKyAgICA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCAKKyAgICA2NzE3NSwgNjcxNzQsIDAsIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIAorICAgIDEyODQ5NywgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAKKyAgICAxMjkxMzIsIDcyNDA5LCA3ODI1NiwgNzI0MDgsIDc4MzUyLCAwLCA3NTA2MywgMCwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCAKKyAgICA5Mjk5NiwgNzI0MDcsIDMwNjYsIDkyMjIwLCA2Nzg0NywgNzI0MDYsIDkyMzU1LCA5MTc4OTAsIDc4MzY1LCA4Nzg3LCAKKyAgICA2NzE4OSwgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCAxMjEwMTIsIDAsIAorICAgIDc4MzY2LCA0MjA4OCwgNzEwNDAsIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIAorICAgIDcxMDUwLCA4MTE5LCA2NDg3NCwgNzEwNTIsIDc4MTc0LCAxMjg2OTAsIDEyODYzMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAKKyAgICAxMzk0LCA3NDUxNCwgMTI4NDEzLCA3NDUxNSwgOTgzNzI3LCA2NzE4NCwgMjk5OCwgOTUyNywgNjcxODEsIDY1MTkwLCAKKyAgICAxMjk3NywgNDIwOTAsIDY3MTg1LCA5ODM2NDcsIDExOTEwMCwgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCAKKyAgICA1ODQ4LCA2NzE5MywgNjcxOTIsIDM2NzAsIDY3MTkwLCA2NzE5NywgNjcxOTYsIDY3MTk1LCA3ODkwLCAxMjgwNzAsIAorICAgIDExMjk4LCA0MzMxNSwgOTgzMzE1LCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCisgICAgMTIxOTQsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMTI4NDA3LCAxMTgwOCwgNjcxOTksIDY3MTk4LCA5MzY2LCA0Mjc5MCwgCisgICAgNDIwMDYsIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAorICAgIDQzOTQ3LCA2NTMzNCwgNDM5NDYsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAorICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgzMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKKyAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMjA4NjIsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAorICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMCwgMCwgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDY2MjkyLCAKKyAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDEyMTM1MSwgNTYyLCAxMjE2OSwgCisgICAgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIAorICAgIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCA0MzgzOSwgMjgzNSwgODMwNTIsIAorICAgIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjg1MjMsIDgzMDQ2LCAxMjYwNiwgNzg0MzMsIDI4MjUsIDgzMDQ4LCAKKyAgICAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAxMzA3MSwgMTIxMjg4LCA0NTIsIAorICAgIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCA5MTc5MTcsIDY0NzAzLCAKKyAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAxMTk4NDksIDEyMTE1MCwgCisgICAgMTI4Mjc1LCAxMTg3LCA5ODMzODcsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgMzI0MCwgMTI4NTE4LCAKKyAgICAxMjE1MSwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCAwLCAxMTg5MzIsIDAsIDY2ODI3LCAxNjIzLCA2NTI5NywgCisgICAgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgMTU0MSwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAKKyAgICAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIAorICAgIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIAorICAgIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDE5NTA3NiwgMTk1MDc4LCA2ODAzNiwgMCwgMCwgNjQ4NTcsIAorICAgIDgzNTA4LCAyODU1LCA3NDQxOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAKKyAgICAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIAorICAgIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgCisgICAgODMwNzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAKKyAgICAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAKKyAgICAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIAorICAgIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCAKKyAgICA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgCisgICAgNDI1NjUsIDQxNjUxLCAwLCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCAKKyAgICA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIAorICAgIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCAKKyAgICA2NTg3NSwgMCwgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCAKKyAgICA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgCisgICAgMTk1MDc1LCAwLCA5MjE5NywgMTI3MDkwLCA2MzUsIDAsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIAorICAgIDEyODUxMCwgMTIxNDU3LCA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIAorICAgIDc4NDIzLCAxMTE1NCwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxOTQ2MDIsIDM2NDksIAorICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAKKyAgICAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIAorICAgIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCAxMjA3OTcsIDcxNzgsIDEyMDg1MSwgCisgICAgOTgzODM2LCA0MTY4MCwgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgCisgICAgMTI4NDkwLCA2Nzg3NywgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIAorICAgIDEwODE4LCA4MzA5MSwgOTk1MywgMTk0ODk1LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCAKKyAgICA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIAorICAgIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDEyNTA3OSwgODMzNTQsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDAsIDEwNjQxLCAwLCAKKyAgICA3Mzc0NiwgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyODg1OCwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMCwgMCwgMCwgCisgICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDY4MzIzLCAKKyAgICA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAwLCA3MTg4MCwgMCwgOTgzMzMzLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgCisgICAgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIAorICAgIDQyNzAzLCA4MzEwNywgMzc5LCAwLCA0Mzc1NSwgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKKyAgICA0NTQ5LCAxOTQ3MzgsIDAsIDcxMjUzLCA3MDc4NCwgMTA4MDcsIDk1NTgsIDkzMDI3LCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCisgICAgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgODMxNDgsIDkyNDU4LCAKKyAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAxMjg0MzksIDIwMzEsIDk4Mzg5MCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIAorICAgIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgCisgICAgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIDE1MDEsIDEyNzk5NCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgCisgICAgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIAorICAgIDc0ODMsIDQzODk4LCAwLCA4MTA0LCA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgCisgICAgODE0MSwgOTgzMjM5LCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIAorICAgIDEyNzE2NiwgMCwgNzQxOTAsIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgCisgICAgMTYzNywgMTI4NTAyLCA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDAsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgCisgICAgNDM2NTgsIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAorICAgIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMTI4Njg0LCA5MDg0LCAxMjEwMzksIDg3MzcsIDk4MzE2NSwgMTI4ODEsIAorICAgIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgOTgzODgyLCAzNTY0LCAwLCA2OTk3OCwgMTc5LCA0MzY0NCwgCisgICAgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIDgwODQsIAorICAgIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCA5MjczNiwgCisgICAgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCisgICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAorICAgIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCisgICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzYzMiwgMTE5NjE0LCAKKyAgICAyNzMxLCAwLCAxMjA4MzMsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMTIxNDE3LCAxMjgxMzIsIDcwODEzLCA0MzMxNiwgCisgICAgNDE3NywgMTEyODMsIDkwODksIDEyMDkxOCwgNzM5OTYsIDEyMTExMSwgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgCisgICAgMCwgMCwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTMxLCAKKyAgICA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzY4MywgMjAzMywgNzg1NzcsIDc4NTc2LCA4Mjk2NSwgNTUyNTQsIAorICAgIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgCisgICAgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgMTI4NTIwLCAxMjgwNjYsIAorICAgIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCA4MjU3LCAxMjE0MTUsIAorICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIDY1MDkyLCA3MzkwMywgCisgICAgNjQzNTUsIDExMzQyLCAxMjg1NjEsIDAsIDk4MzQzNCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIAorICAgIDk2NywgOTgzMzM1LCAxMjA5ODUsIDExOTQ2LCA5ODM2MDIsIDMyNTcsIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEyOTA3MiwgCisgICAgNDM1MjYsIDAsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgCisgICAgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDkxNzg5MiwgNzU5MSwgNjU4ODcsIAorICAgIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCAKKyAgICA3OTAsIDEyODMwMywgMTE4OTM4LCAxOTUwNTMsIDkzMDM4LCA2NjE4MiwgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAKKyAgICAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjkxLCAxMjcyMTQsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgCisgICAgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgCisgICAgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKKyAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgMTg1MSwgMTI0OTk1LCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIAorICAgIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCAxMTExMiwgMCwgOTIzMjEsIDQzMzE4LCAKKyAgICA5MjMwMiwgODgwOSwgNjk4ODEsIDAsIDEyNjUxOCwgMTIwNjA0LCA5ODMwNTIsIDk4MzI3NywgOTgzNDMzLCAxMjg0MTIsIDAsIAorICAgIDEyMDU3NywgNzQyNywgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIAorICAgIDMzNTIsIDc0MzYzLCAxMjg2NjgsIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAKKyAgICA2OTk3OSwgODIwOCwgNjgzMDgsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgCisgICAgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIAorICAgIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgOTE3NjA1LCAxOTQ2NTQsIAorICAgIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMTI2NjEyLCA2NzcyMywgMjg0MCwgOTgzOTA1LCA3ODgyOSwgOTgzOTM5LCAKKyAgICA2Njg4NywgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgCisgICAgNjgwMTYsIDk4MzI2NywgMTI3MzI2LCAxMjUwMzgsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgOTE3ODMzLCAKKyAgICA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIAorICAgIDc0ODk0LCAxMTE1MiwgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgCisgICAgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAKKyAgICAxMjgzNDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgCisgICAgNDMzNzIsIDY1OTQ1LCAxMjcyNDksIDExMTEzLCAxMTk1OTAsIDAsIDAsIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCAKKyAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDk4Mzk1MSwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAorICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAwLCAKKyAgICA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCAKKyAgICA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAxMjAyODEsIDAsIAorICAgIDk4Mzc3NywgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAorICAgIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIDY4NjcyLCAzMjIwLCAKKyAgICA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCAKKyAgICA1ODUyLCAwLCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIDEyODcwMCwgNjkyMjYsIAorICAgIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzA0NDcsIDk0MTExLCAKKyAgICA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTI3NTUyLCAyNjI1LCA5ODM2NDEsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAKKyAgICAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCA5ODMwNjUsIDAsIDQzMzg0LCAxMjY2MCwgMTI4NjkzLCAxMjgyNzAsIDAsIAorICAgIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgCisgICAgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgCisgICAgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3NDk4OCwgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCAKKyAgICA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjg3MDcsIAorICAgIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAwLCAxNzU3LCAKKyAgICA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgCisgICAgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIAorICAgIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCAwLCAKKyAgICAxMjkxMywgNzQyMDYsIDc1MjksIDEyODc0NSwgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIAorICAgIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgNjgyLCA3NjU1LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKKyAgICA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDAsIDQyMzUxLCAKKyAgICAxMDEwOSwgNzQ1MzUsIDc0MDY4LCA3NDkyMSwgMCwgOTI2OTAsIDAsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIAorICAgIDAsIDczODg3LCAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgCisgICAgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgCisgICAgMTA0OTgsIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIAorICAgIDQxNjUsIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDE5NDY5MywgNzA0MTUsIDEyODEzNSwgCisgICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgCisgICAgMTE4MSwgNzA1NiwgMzE3NCwgNjcyNDgsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKKyAgICAxMjY2MDYsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKKyAgICAyNjEzLCA2NTMwMiwgNDA5ODksIDY4MjM5LCA2ODIzMCwgNjgyMzQsIDQyNzYwLCAwLCA0Mzg5NiwgMCwgNDA5ODcsIDQ2NjcsIAorICAgIDAsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAxMTAyMSwgNDc0OSwgCisgICAgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAxMjcyMTAsIDY0NjUzLCAKKyAgICA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIDkyOTgzLCA5ODM4NjcsIDc2MDQsIAorICAgIDk4MzI5MiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjA1NjIsIDAsIDk4MzcyMCwgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAKKyAgICAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIAorICAgIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAorICAgIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCA3ODI5OSwgCisgICAgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgCisgICAgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCAKKyAgICA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgCisgICAgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgCisgICAgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCAKKyAgICA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAyNTIsIDAsIDQxMzAyLCAxMTkzNTAsIDgzNTA0LCAxMTg4MzksIAorICAgIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIDkwNjAsIDEyOTA5MSwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAKKyAgICAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAKKyAgICAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMCwgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDAsIDQzNDg5LCA0MjgyLCAKKyAgICA4Mjk4LCAwLCAwLCA3MDMyOCwgMTk0OTg2LCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCAKKyAgICA3MDQ0MiwgNjU2NzAsIDk4Mzk2MywgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCA5ODM4NjksIDcwMzI2LCAwLCAKKyAgICA3MTQ2MCwgMTIwNzY0LCA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCAKKyAgICAxMjAyMDcsIDI2MDIsIDEyODM0MSwgMTIxMTAzLCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMCwgMTIxMzI1LCA2NDYzMSwgCisgICAgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCAKKyAgICA3NTA1NCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCisgICAgMTIxNDQxLCA5MjUyOCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCA4MzMzMCwgMTEzNzA3LCAxOTQ3MTIsIDEwOTAwLCAKKyAgICA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIDc0MDc1LCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIAorICAgIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDgzMDIyLCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCAKKyAgICA5MjU2NCwgMzA3NSwgNjc4NjcsIDk0MDUzLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDcwNDQwLCAwLCA1ODQ1LCAxMjEzMTAsIDAsIAorICAgIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA5ODM2OTMsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDk4MzIwMSwgCisgICAgNjM0MCwgMTE4ODU1LCAxMjEwMjcsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIAorICAgIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCA3Mzc3NCwgMTA5MTMsIDgzMTE2LCA5ODMwODYsIDg2NjYsIAorICAgIDY3NSwgNDI0OTMsIDEyMTI5NywgNDM1NzEsIDAsIDYyMTksIDEyODU4NCwgOTk4MCwgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgCisgICAgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDk4MzI0MywgMTI3MTEsIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIAorICAgIDQyODU3LCA4MjYyLCA5MzAzNiwgMCwgNzQ0NzYsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgCisgICAgMTI4MTM3LCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCAKKyAgICA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAKKyAgICAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIAorICAgIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIAorICAgIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAKKyAgICAwLCAwLCA4MzE3OCwgMTIwNzM3LCAxMjA5NTMsIDE5NDc3MywgOTgzMzIyLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIAorICAgIDk4MzMyNywgNjU2OTUsIDEyMTIyMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAKKyAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgNzE0ODYsIDkyMjI1LCA5ODM5NTMsIDk4MzM0MCwgMCwgNDM4NDAsIDAsIDAsIAorICAgIDUyMzMsIDk4MzMzNywgNjQ3OTIsIDcxMjMzLCAxMjgyMjMsIDEyNjYzMywgMTI4OTE5LCA3MDYwLCA5ODQ3LCAxMjAxNDQsIAorICAgIDE2ODUsIDU5NSwgODMxOTcsIDcwNDI4LCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgCisgICAgNjU0MSwgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDEyNTAzMiwgNTM4LCA2NDYyMCwgNTYwMiwgCisgICAgODQ2NywgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgCisgICAgMTI3NDgxLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIAorICAgIDEyMDkxMywgNzA2NSwgNzQxNTUsIDQzNDYsIDExMzY5MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgCisgICAgMTIxNDcxLCAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAKKyAgICAxNTQ4LCA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIAorICAgIDM3NDUsIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEyNzkxMywgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgCisgICAgMTc4MywgNzQxNiwgNTcyOCwgMCwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMTI3OTY1LCA1NzI3LCAKKyAgICA3ODUyMSwgMTIxMTIxLCAwLCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCA0MjUzMiwgCisgICAgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMCwgNzQ3NjcsIDY1NTksIAorICAgIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDEyODcxMSwgNDMzNzcsIAorICAgIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAxMTM2ODksIDc3MzksIDc0NTQzLCAKKyAgICA5MTc3NjUsIDY3MzkzLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMTI4Mzk2LCA3MDA1OCwgNDExNDQsIDcxODk5LCA5MjQzOCwgCisgICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDEyODM5NCwgMTk0Nzc2LCA4ODIwLCAzOTQ3LCAwLCA2NTI5OSwgCisgICAgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCAxMjUwMDIsIDE5NDkzMiwgMTEzNjkxLCA3Njg4LCA5MTc3ODYsIAorICAgIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEyMTQxMSwgOTgzMzg0LCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIAorICAgIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCA5ODM2ODAsIDY0MzU3LCAxMTc5NCwgNDIwODIsIDEyODEyNSwgMTczNywgCisgICAgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCA2NTUzLCA3MDU1LCA2ODA0MSwgCisgICAgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgMTE2MCwgNDIwODQsIDkzOTYzLCAKKyAgICA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDk4Mzg2NSwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIAorICAgIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIDY4MzQxLCAxMzA3NiwgMzEzNSwgCisgICAgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgCisgICAgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCA2NTIzNiwgOTE3ODc4LCA2MTYzLCAKKyAgICA5ODM1NTgsIDExMzcyOCwgMTI3MzE0LCAxMjgxMzgsIDk4MzIzNiwgODYwMywgMTI3OTU5LCAxMTk4NjYsIDMzMDYsIAorICAgIDEwODc2LCA0MzM5MiwgODMxODcsIDEyNzkzMSwgNTc1MSwgMTI3NTE3LCA2MjIyLCAwLCAxMjc0NjYsIDEyMDg2LCA3NDAzLCAKKyAgICAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDExOTkwMywgMCwgMjU3MCwgCisgICAgNzAyMSwgNzQ5MDIsIDE5NDc0MiwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDkyNzUwLCAwLCA5ODMyMTEsIDUwMDIsIAorICAgIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIDQzNTg1LCAxMTM3MjAsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCAKKyAgICA5ODMyNzQsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAxMjc5NTgsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjgzNTAsIAorICAgIDEyODY2MSwgMTk0ODkwLCA5ODMzNzcsIDQxMjc5LCAwLCAwLCA5NDEwOCwgMTEwODEsIDQzNjE1LCAwLCAwLCAxMjc4ODgsIAorICAgIDk4MzYxMiwgMTI3MjcsIDQzODk1LCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgCisgICAgNzgzMSwgOTgzODI5LCAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAKKyAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIAorICAgIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCA3Mzg3OSwgCisgICAgMTI4MjIwLCAxMjA3NTIsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE3OSwgMzc1MSwgOTEyMCwgCisgICAgOTgzNDg3LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCAKKyAgICA2Nzc1MiwgNzA4NTAsIDExOTA1NywgMjQ1LCAxMjEwNjYsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIDYxMzYsIAorICAgIDY4MzA0LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIDEyNzAxNSwgCisgICAgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgOTgzMTM2LCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMTI4MTg0LCAwLCAwLCAKKyAgICA3Nzg5NCwgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAKKyAgICA3MTEyMywgNjQ2NDAsIDY5OTk5LCA5NDEwOSwgMTIwODc3LCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIAorICAgIDc0NjIyLCA0MzQ5MiwgMjU2NiwgMTE5NzEsIDk4MzczNywgMTIwODgyLCAxMDY1LCAwLCAxMjcwMDUsIDQzNDAwLCAyNTc2LCAKKyAgICA2NjY5NiwgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgCisgICAgNDMyMTUsIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxOTUwMjUsIAorICAgIDQxMzQxLCA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKKyAgICAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAxOTUwNzQsIDEzMDkxLCAwLCAxMjg1ODAsIDAsIDkxNzkxNSwgMTI3OTYxLCAKKyAgICAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDAsIDEyMTExNiwgMTMwOTAsIDY2NjQzLCAwLCAKKyAgICAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCA2Njg5OCwgNjQ3NjEsIDAsIAorICAgIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTE5ODk4LCAxMTkzMTcsIDE5NDc4MiwgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCAKKyAgICA5OTE1LCA5ODMwODMsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCAKKyAgICA0MjMxOSwgMTMwODIsIDc4MTE0LCA3MDY3LCA2ODIyMSwgMTI3ODgxLCAxMjczODMsIDEyNzE3MSwgMCwgMTIwNzQ1LCAKKyAgICA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAxMjkxNTQsIDc0NzkyLCAyNjExLCAxMTkxODYsIAorICAgIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAKKyAgICAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjgxNDksIDM3NDcsIDEwNTIyLCAwLCAxOTQ4NzYsIDE2OTEsIAorICAgIDQxMjI2LCA3NDk2MiwgMTIxMDcsIDcxMDAsIDEwOTA1LCA2NTAxMCwgMTIxMjk5LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAKKyAgICA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIAorICAgIDEyMTAzMiwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIAorICAgIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgCisgICAgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAxMjgyNTgsIDE5NTAyNywgMCwgMCwgCisgICAgMTMxMjIsIDAsIDE5MSwgNzAwNjAsIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIAorICAgIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAwLCAxMDAwMiwgMTIxMzY0LCA2NTMzLCA3MzgwMiwgNDE1NzAsIDkxNzkxOSwgNjgzLCAKKyAgICAzOTYsIDQxNTgwLCA2ODE0NiwgOTgzMDY3LCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCAKKyAgICA3ODE1NCwgOTgzMzk3LCA0NzQzLCA2OTk4NywgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIAorICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIxNDI0LCA2ODI4OCwgNjYwNDAsIAorICAgIDgyOTQ2LCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMTI4NDQzLCA0MjA3MCwgNjU2MywgNDMwNzUsIAorICAgIDkwMTgsIDk0MDA2LCA5ODMzOTgsIDEyMDY3LCA0MTMxMiwgOTI3NjMsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKKyAgICA4MTc1LCA5NDAzNCwgMjg0LCA4MTA4LCA5MzQsIDEyODAzOSwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAKKyAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDEyODc5NSwgCisgICAgNzE4MCwgMCwgNjcxMjcsIDAsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgCisgICAgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCA5MTc2MzAsIDM4NTUsIDE5NDgxMCwgMTE3NjcsIAorICAgIDEyNzk5OCwgMCwgNzQyOTUsIDE5NDY1MSwgMCwgOTI0MTYsIDM5NzUsIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAKKyAgICAzNzk4LCAyNzAzLCAxOTQ2MDgsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAKKyAgICAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIDEyNzE4OSwgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIAorICAgIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgCisgICAgMzIyNCwgMTEzNzM0LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCAwLCAxMTM5MywgCisgICAgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCAKKyAgICA0MjgzLCA2ODg0MiwgMTIwODI0LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNiwgMTI4MjQxLCAwLCA3MjM5NCwgCisgICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAKKyAgICA3NDQ3NSwgOTgzNDQ0LCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCAKKyAgICA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIAorICAgIDQxMzUwLCA5MTI5LCA5ODM0NDgsIDAsIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgCisgICAgMCwgMzQwLCA3MTEwNSwgOTM5NzIsIDY3MzYwLCAwLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyNzQ4NywgCisgICAgMTI4MzkzLCAwLCA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIAorICAgIDAsIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCAwLCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKKyAgICA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjUxMjMsIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCA3NDYxNiwgMjYxNywgCisgICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAKKyAgICAyNTg2LCA2NDg4NywgMTE5ODI2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCA5MTc2MTQsIDEyMTAzOCwgNjQyOTMsIDY4MDk4LCAKKyAgICAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk4OCwgOTIyODUsIAorICAgIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgMTk1MDUwLCAKKyAgICA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMjQ5NzgsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0OTgsIAorICAgIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgCisgICAgMTI5MDU0LCAxMjcxMDMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIDc1MDQwLCA5ODM0ODQsIAorICAgIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgOTgzNDkwLCA3NjMxLCAKKyAgICA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKKyAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgNDM5MCwgNDU0LCAKKyAgICA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgCisgICAgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAKKyAgICAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDAsIDgyNDksIDEyODE3MiwgMTExMDksIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCisgICAgNTEzLCAxMjcxMTgsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAxOTQ1OTcsIDcxMTExLCA3ODM4MywgCisgICAgMTk0Nzk1LCAxMjc0NzQsIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDE5NDU4NCwgNjM3OTksIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAKKyAgICAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIAorICAgIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgCisgICAgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCAKKyAgICA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIDkyMjU1LCA1MTE2LCAwLCA0MzE4MSwgMTMwOTUsIAorICAgIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgCisgICAgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCA3MTA1NSwgMTIwNjIxLCAwLCAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCAKKyAgICA3ODM3OCwgMTE5NjAwLCA1MjIzLCAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCAKKyAgICA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCAKKyAgICA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIAorICAgIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgCisgICAgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzQ4NTgsIAorICAgIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAKKyAgICAxMTk2MDIsIDQzOTc2LCAxOTQ5MzcsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCA5ODM2MzcsIAorICAgIDcxOTIyLCAxMTg4NjksIDAsIDQ1NDAsIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDAsIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIAorICAgIDUxMzIsIDEyMTE4NCwgNjM4OSwgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgCisgICAgNzExNjgsIDg4NjksIDY5OTE2LCA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAKKyAgICAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI4NTM0LCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIAorICAgIDkxNzgxOCwgNzAxMTEsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIAorICAgIDcyNDM5LCA1MjAxLCA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAwLCAKKyAgICAxMjA5MDksIDExMDI3LCAxMjg1OTYsIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIAorICAgIDY3MTE1LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCisgICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgCisgICAgMTI3MzUwLCAzMzUxLCAxMjA4OTIsIDEyNzM1MSwgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIAorICAgIDEyNzM0NCwgOTU1NCwgNjgwNTEsIDk0MDQ4LCA2Njg5NiwgNjY1MywgODMwNDQsIDgzMTAyLCA2NDUxMCwgNjIxMywgCisgICAgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExMTA4LCA0NTY2LCAKKyAgICA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMCwgNTIwMCwgOTI5NDYsIAorICAgIDEyMTQzNSwgOTgzODk1LCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCA0MzQ5LCAxMDM5MCwgCisgICAgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIDExODk3MywgCisgICAgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgODA5MywgCisgICAgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjczMDksIAorICAgIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIDg1ODEsIAorICAgIDAsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgMjYyNCwgNTM2NCwgCisgICAgOTgzNjA4LCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgNDIyNzEsIDc4Mjg5LCAKKyAgICA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIDc4Mzg0LCAxMTgzMiwgCisgICAgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCAKKyAgICA3NDU4MSwgNzgwODcsIDAsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCAKKyAgICA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgNjk4NjIsIDY4NTA3LCAxMTkyMSwgCisgICAgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCA0MTM2MSwgOTE3OTAzLCAKKyAgICA0MTM2NiwgMCwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgODE5OSwgNzgzODksIDExOTYxOCwgCisgICAgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAzMzQ5LCA3NDEyNSwgNzAyMiwgCisgICAgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDE5NDg3NCwgODYxNSwgMCwgMTI4MDU4LCA0OTEsIDc0NDAxLCAxMDE5MCwgCisgICAgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCisgICAgMTA4NTIsIDAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAKKyAgICAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIAorICAgIDc0ODQ5LCA3NDk0NywgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgCisgICAgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMCwgMTEzNzMwLCAxMTI4LCA2NTkyMCwgOTE3ODc5LCAKKyAgICA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCAKKyAgICA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCA0MTM4NSwgOTgzOTM4LCA0MTM4OSwgCisgICAgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCA5NDA2LCA3NjI5LCAKKyAgICA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAxMDYyNywgNDExMzAsIAorICAgIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTI4OTEzLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIDQzMzIsIDY0ODI1LCAKKyAgICA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIDY2OTAyLCA1NzQsIAorICAgIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgCisgICAgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgNzQ3NTksIDIyMjgsIAorICAgIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKKyAgICAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3NDEwMiwgOTgzNjI1LCAyMDUsIAorICAgIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAKKyAgICA3NDk2NiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCAKKyAgICA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIAorICAgIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAxMjkwNTIsIDI2NzUsIDU1OTUsIDc4NDExLCAKKyAgICA0Mzc2MiwgNDM2NywgMTI3OTEyLCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCAKKyAgICA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIDY0NjMzLCA3Nzg1NywgNzc4NTQsIAorICAgIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIAorICAgIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgCisgICAgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMTI5MDgwLCA1ODk0LCA3MDA2OSwgCisgICAgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAzMzM0LCAxMjg3MDQsIDkyNzA5LCAKKyAgICA3Nzg4MSwgNjYwMjIsIDAsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIDAsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgCisgICAgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAKKyAgICAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIAorICAgIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgCisgICAgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgNzc4NzksIDQ5NzMsIDg3ODQsIAorICAgIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDcxMjI1LCA0MzExOCwgMTE5ODc1LCA0MjM2NCwgCisgICAgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAKKyAgICAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgCisgICAgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIAorICAgIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCA5ODM5NjUsIAorICAgIDk4Mzc1OCwgMTE2MDMsIDk4Mzk1NCwgNzUwNzQsIDY1ODksIDEyODU2NCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDk4MzcwMCwgCisgICAgMCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAKKyAgICAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAKKyAgICAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTk0Njc3LCA3MTQ2MSwgNjcwOTAsIAorICAgIDY5MjUsIDAsIDAsIDkyODkyLCA3MTg1NiwgMTE1NjgsIDk4MzY3MywgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIAorICAgIDExMTM4LCAwLCA2NzU0LCA2MzEyLCA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIAorICAgIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAxMjkxNDYsIDk4MzYwNSwgCisgICAgOTUzMiwgNjYzNTUsIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDE5NTAzMSwgMCwgCisgICAgMTk0ODQ3LCAxOTUwNTcsIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIAorICAgIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIAorICAgIDAsIDEyMDI3NiwgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgCisgICAgNzg5NCwgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIAorICAgIDkyNDMzLCAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCAKKyAgICA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgOTE3NTg3LCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIAorICAgIDY3MDc1LCA3MTIxOSwgMTY3LCA5ODM5MDYsIDc4MzAxLCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIDkxNzU4MywgCisgICAgMTI3MTQwLCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjEyNDUsIDc4MTA3LCA2NDM1NCwgMCwgODc3NywgMTI3OTQwLCAKKyAgICA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIAorICAgIDEyODU5NywgNjQ5MzYsIDE5NDY5NSwgMTE5MjY3LCAxMjA2MjksIDEwNTYxLCAxMjg5NDAsIDgzNjUsIDEyMDUzOSwgCisgICAgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIDc0MTU5LCAwLCAKKyAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgMCwgNzA4MDMsIDYzMjcsIDY3MjQsIAorICAgIDEyNDk1MywgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIAorICAgIDExMDIyLCAwLCAwLCAwLCA5ODM1OTksIDAsIDczOTU0LCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgCisgICAgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAKKyAgICA5Mjg5MSwgMTk0OTQ1LCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDkzMDQ0LCAKKyAgICAxMjk0MTEsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIAorICAgIDEyOTA1OCwgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgNjk4MDUsIDczOTM5LCAKKyAgICA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgCisgICAgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgMTI4NDQ4LCA1OTAwLCAKKyAgICA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDk4MzQ4MSwgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgMTIxNDIyLCAxMjc4MTAsIAorICAgIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgCisgICAgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIDEyODc0NCwgNDMxNjEsIDcwMTQ0LCAKKyAgICA5MjM2MCwgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgCisgICAgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTIxMjI4LCAxMzk1LCAKKyAgICA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIAorICAgIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCA5Mzk1NiwgOTgzOTE3LCA2ODQ0NCwgMCwgCisgICAgOTI0MzcsIDEyNDkyOCwgOTI1NDksIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIAorICAgIDY1MjE3LCAxMjE0NjUsIDg4NTIsIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODQyNywgOTgzNjM5LCA3OTMyLCAKKyAgICA5NzI3LCAxMjg0NjMsIDc0MjU1LCA4NzQ4LCAwLCAxMjg0MjgsIDk4MzYzMSwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIAorICAgIDk4MzU2MCwgNDIxNywgOTMwMzQsIDg2NTAsIDEyNzk5MSwgMTIwNjczLCAxMjgyMTUsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAKKyAgICAzOTY1LCAxMTkxMTksIDY3MTksIDEyODAwNywgMTMzMDAsIDc4NDM5LCA5Mzk3MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIAorICAgIDY2Mjg5LCAxMjA5MDIsIDczODE1LCA0NDIwLCA5ODMxMjAsIDY0MTAsIDc3NjAsIDAsIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgCisgICAgMTIxMjQ2LCA3Mjk0LCAxMjgyMTgsIDQzODY5LCAxMjA4NTksIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCAKKyAgICA3NzYyLCA5ODM4NjYsIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgCisgICAgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAKKyAgICAxMjg4MTksIDAsIDEyNzMyNywgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIAorICAgIDc3NzksIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDAsIDY1NTc3LCA4OTkzLCAKKyAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCAKKyAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIAorICAgIDQyODMxLCA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKKyAgICA2ODE0MCwgOTgzOTI4LCA5NTc2LCA3MDI4OCwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAKKyAgICAxMjcwNjMsIDc3MDksIDQxMTEyLCAxMTk4NjgsIDY2NTYwLCA4MzgxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDEyODkyMSwgCisgICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIAorICAgIDEyODkyOSwgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIAorICAgIDY1MjU3LCA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDkxNzkxOCwgMTIwODYwLCAKKyAgICAxMjcwNjAsIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCA3ODgxNywgMTI4MDIxLCAKKyAgICAxMjA2MDksIDAsIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIAorICAgIDEyMTUwMywgMjI5OCwgMCwgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgCisgICAgNzg4NjYsIDk4MjQsIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCAKKyAgICA2ODIzMiwgOTgzMTExLCAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIAorICAgIDY4MTYxLCA2NDU1MCwgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCAKKyAgICA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjgxNzgsIDEyMDkxOSwgMTE0ODUsIAorICAgIDYxMDMsIDkyNDY4LCA5ODMzMDcsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEyNzE1NywgCisgICAgMTIxMTI4LCA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCAKKyAgICA3MDM2OSwgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgCisgICAgMzM3NiwgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDE5NDYwNCwgCisgICAgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMzMDEsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCAKKyAgICA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIDEyMDc3MywgOTQwNTUsIDk4MTIsIDAsIAorICAgIDQ0NjAsIDc4NzkxLCAxMjQ5NTYsIDcxMzA3LCAxMjgwMzgsIDAsIDEyMTEzNSwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIAorICAgIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCA3MzgyMywgCisgICAgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAorICAgIDk4MzI4NywgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKKyAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCA5ODM4NjAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCisgICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI4ODcwLCA3NDg5NiwgMCwgMjkwOCwgCisgICAgMCwgMTExNzcsIDY0OTAyLCA0MjQzLCA5MjQ1NCwgMTIyMzksIDEyMTAwMywgMTI0OTU5LCA0NDQxLCAwLCA4Mjk2OCwgCisgICAgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyNTAzMSwgNDExLCA5ODMyNzUsIDkxOTksIDk4MzI3MywgNDA1NiwgMTE4OTkyLCAKKyAgICA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCA2NDQzNywgCisgICAgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCA5MjYyOCwgCisgICAgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDAsIDk4Mzc1OSwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAorICAgIDY1ODk1LCAxMjUwNzYsIDEyMTM4MCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDEyNzU0MywgCisgICAgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIAorICAgIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDEyOTEwOSwgMTI5MDQwLCAwLCAzNDMwLCAwLCA0MjkwNSwgCisgICAgNzg3MTcsIDc0OTI5LCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDEyNjUwNiwgCisgICAgNzAzNCwgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIAorICAgIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgCisgICAgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIDEyODM1NywgNzc5OTAsIDAsIAorICAgIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIDEyODQ3NSwgOTIxODcsIDM0NjgsIAorICAgIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMCwgNTgwMywgNzE4NjcsIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIAorICAgIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDkxNzkzOSwgMCwgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIAorICAgIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMTI0OTk0LCAxMzA1NywgMCwgMTI2OTc2LCAKKyAgICAxMjkwODEsIDEwMDA5LCAwLCA0MTcwMywgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCAwLCA5ODg1LCAwLCA4MDc3LCA5MjYyMCwgCisgICAgMTI3OTA4LCAxMjEwNDQsIDE5NDk5NSwgMCwgOTI0NTcsIDEyOTEzOCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgCisgICAgNDk4NywgNjQ1MTksIDEyMTI2NSwgMTI1MDc4LCAwLCAxOTQ4MTMsIDEyODU3NCwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIAorICAgIDEyNjQ5MCwgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAKKyAgICAxMjg4OTksIDAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCisgICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgCisgICAgNzg4NTAsIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAxMjA4NDEsIDAsIDEyNTA2MiwgOTgzNDQxLCAxMjA4NDMsIAorICAgIDYxODQsIDg2MDYsIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCAKKyAgICA0NDc4LCA2NjE3OCwgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIAorICAgIDExOTk2MSwgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgCisgICAgNjYxODksIDczNzg4LCA3Nzg4LCA0ODQ3LCA5ODM0MjgsIDEyNzc1OSwgMCwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKKyAgICA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCA3Mzk0NCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgCisgICAgOTgzNDQwLCA2ODYyNSwgOTgzNDM4LCA3MjY5LCAxMjg0OTksIDU5NjQsIDEyOTA4LCAxMjQ5OTcsIDAsIDc0NzY0LCAKKyAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCA5ODM0MjksIDQ5NDQsIDU0NjcsIDExOTYwMywgCisgICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAxMTk5NjIsIAorICAgIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgMTI4Njc2LCAxMjA5MSwgCisgICAgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgNjUwNTksIDQzODYwLCAKKyAgICA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIDQ2NzcsIDEyNjg4LCAKKyAgICAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCA0Njc0LCAKKyAgICA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDEyNzQ3NSwgCisgICAgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgMTE3OTcsIAorICAgIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCA5ODM0MTYsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIAorICAgIDY1MjA5LCAxMjE1MTIsIDEyMTUxMSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgNjQ5NTAsIAorICAgIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIDg2NjksIAorICAgIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA3MDUwMywgMTk0OTUyLCAKKyAgICA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgOTgzNDIzLCAwLCAKKyAgICA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIAorICAgIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgCisgICAgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTI4NzM3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgCisgICAgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAKKyAgICA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDY4ODMxLCAKKyAgICAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA5ODMzODgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCAKKyAgICA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAxOTUwMjgsIDQxMzEzLCAKKyAgICA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgMTIxMDYwLCAxMTk5NDksIAorICAgIDE5NDk3NSwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzNDAyLCAwLCA0NjM4LCA5ODM0MDcsIDE3OTAsIDc4MjQyLCA1OTY1LCAKKyAgICA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAxMjgwODksIDQ2MzMsIDAsIAorICAgIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCA0MjA5NCwgNTMzMSwgNDYzNCwgCisgICAgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIDEyNjgsIDY1MDk3LCAKKyAgICA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKKyAgICA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCisgICAgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCisgICAgNDc1NywgMCwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI4OTI2LCAKKyAgICAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgCisgICAgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMTI4OTY2LCAwLCAKKyAgICAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIAorICAgIDAsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDk4MzQ4MiwgNDM4NDMsIAorICAgIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgCisgICAgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgCisgICAgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCAKKyAgICA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIAorICAgIDk4MzM0OCwgOTIwOCwgNDYwOCwgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAwLCAKKyAgICA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgNjc3MjIsIAorICAgIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCAKKyAgICA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgCisgICAgMCwgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAKKyAgICAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCA0MTAyNCwgCisgICAgNDg2NiwgOTgzODgwLCA3MzkwNCwgMTIxNDIwLCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCA2NjUwLCAKKyAgICAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAorICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDgzMTkzLCA2MjQ1LCA2ODY1MiwgCisgICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyOTEzNiwgNjg2MzEsIDQyNzc1LCAKKyAgICAxOTQ2NjEsIDEyODQ0NSwgMTIwNjc5LCAzMDk3LCAxMjA5MDgsIDU5NjYsIDEyMTE5NywgNDc3OCwgMTI2NDY5LCAxMDg2MywgCisgICAgMTI3NTA2LCA0NzgxLCA5Mjk4NiwgNjQ0MDcsIDEyODUwMywgMTI4MzIzLCA4NTc3LCA3MTIyMSwgNjgxOTYsIDQzMjg1LCAKKyAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgCisgICAgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCisgICAgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMTI3MjA3LCAKKyAgICA1OTYzLCA5MTc5MjYsIDk4MzQ4MywgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKKyAgICAxMjc5MTgsIDUxNjQsIDczODA3LCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIAorICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAwLCAKKyAgICA3Mzc2MiwgMTA0NTgsIDk4MzQxNywgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIDgzMjIsIAorICAgIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIDc0NjI1LCAKKyAgICA2ODIyOSwgOTgzNDI3LCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCA3NDA5NSwgCisgICAgNDMyOTIsIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAyNDUxLCAyNzE0LCAxMTkzMjYsIAorICAgIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgCisgICAgNDI4NzksIDExNzI1LCA5MTc5NjksIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAKKyAgICAxNDA4LCA1MjYxLCA0NjA3LCAxOTQ3MTUsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgCisgICAgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgCisgICAgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIAorICAgIDEyNzk4OSwgMTI3NTgsIDM4NjUsIDE5NDY2MCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIAorICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgMzEyNSwgOTU2NywgMCwgCisgICAgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgMTE0OTQsIDEyNjQ5MiwgOTU2MywgCisgICAgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIDY0MTkwLCA4ODk4LCA2NDE4OCwgCisgICAgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCAKKyAgICA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzI2OSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIAorICAgIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDExOTAxMCwgMTA1NjQsIDc3NjMsIAorICAgIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgCisgICAgNzc5NzksIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCiAgICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCi0gICAgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAKLSAgICAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIAotICAgIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIAotICAgIDEyMDM3OCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI2NzA1LCAwLCA2NjU3OSwgMTE1NTEsIDAsIDE5NTA4MCwgOTUwNCwgCi0gICAgNzE4NywgMCwgMTAzNzMsIDAsIDEyMDc5MSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCAKLSAgICA2NTIyMiwgNjk5OCwgNzgxODAsIDAsIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgCi0gICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAKLSAgICAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIAotICAgIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgOTgzODczLCAKLSAgICA0MjEzMCwgMCwgNTE1MSwgOTE3ODI5LCA5MTc4MjMsIDAsIDkzOTgwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgCi0gICAgODM1NSwgNzg1NCwgMCwgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgCi0gICAgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgMTIwNTg0LCA5ODM0MDgsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDAsIDAsIDAsIAotICAgIDY0NzU5LCA2MzgxLCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKLSAgICA3ODIwNCwgNjQxMzEsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDAsIDc3ODc2LCA2MzYsIDExNjk4LCAKLSAgICAwLCA5ODM0NTEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCA5MjQzMSwgCi0gICAgMTE5OTYwLCAxNDc3LCA0MzI4OSwgMCwgNzQzNTgsIDg2MTgsIDk4MzQwMiwgOTkwOCwgOTgzOTgxLCAwLCAwLCAzOTM3LCAKLSAgICAxMjMxMiwgMCwgOTgzNDAzLCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIDEyNjU5NCwgNjI0NCwgCi0gICAgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDk4MzQ3NiwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIAotICAgIDUzOTcsIDAsIDEyMDQ2LCAxMjU5OSwgMCwgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIDY4NjE1LCAxMTk5NDgsIAotICAgIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgMCwgMCwgMTI4ODc0LCAKLSAgICAwLCAwLCA0MzI5NywgOTgzMDc5LCA0MzExLCA0NjQ0LCA4ODE4LCAwLCAxMjgxODYsIDAsIDcxNDUsIDM5MTgsIDY2NDUyLCAKLSAgICAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgCi0gICAgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDExOTk0MiwgNjI0OSwgNDIxMTcsIDkyMjg3LCAKLSAgICAxMjgyMjQsIDAsIDAsIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA5MTc4MDcsIDAsIDk4MzQ2OCwgNDMwNjEsIDcwNTQsIAotICAgIDY0MTQ3LCAwLCA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDEyMDAwNiwgMTE5ODEsIDEyMjAyLCAwLCAKLSAgICAxMTAzMiwgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY4NjYyLCA2NTg0MywgMTcwLCAwLCAwLCA0MTY5LCAwLCA0MTg1OSwgCi0gICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCAwLCAwLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCi0gICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCA5MTc4NjUsIDQ3MzcsIDExNzc5LCA0NzQyLCAxMjA1NjQsIDkyMzkxLCAKLSAgICA3MzczNiwgOTgzMzY0LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKLSAgICA0MjEwOCwgOTgzMzU0LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAotICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY2LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKLSAgICAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgCi0gICAgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDAsIDExOTU5MSwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIAotICAgIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCAKLSAgICA0ODI1LCA2OTI0MCwgOTE3ODUyLCA2ODY1NSwgMCwgOTgzMzg4LCAwLCAwLCA2ODYyOCwgOTgzMzQ3LCA5ODUwLCAxMTg5MzcsIAotICAgIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAwLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgCi0gICAgMTEwMjMsIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgMCwgMTI2NjI2LCA2NDEwMSwgMCwgMCwgCi0gICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMCwgMTg4OCwgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCAKLSAgICA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIAotICAgIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCAwLCAwLCAxMTkwNTMsIDAsIDEyNzY1LCAKLSAgICA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgCi0gICAgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCA5MTc1NjQsIDAsIDExMzYzLCAKLSAgICAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAxMjY2NDEsIDY2MjAyLCA4OTU3LCA0MTM5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCA5ODMzODMsIDQ3MjYsIDAsIAotICAgIDE5NDg5MiwgOTgzNjIyLCAxMjgzMjEsIDkxNzkwNSwgMCwgMTI3NTUsIDEyNzYyLCA0MDE1LCAwLCA4MDUyLCA0NzYsIDAsIAotICAgIDAsIDEyODI5NCwgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIAotICAgIDAsIDAsIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgMCwgNjQwNjcsIDEyNzMyOCwgODU1MiwgNjQxMTMsIAotICAgIDQxODQ1LCAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgMCwgCi0gICAgMCwgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3MDEwNCwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKLSAgICAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCAxMjAwNjEsIDY1NDE1LCAxMjAwNTksIDYyOTIsIDY1MzAzLCA3OTU1LCAKLSAgICA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDkxNzg5MCwgOTE3ODkxLCA2NTE1MiwgNzE5LCAxMjAwNDQsIAotICAgIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCAKLSAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgOTE3OTAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgMCwgCi0gICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMTI2NjA2LCAKLSAgICA2NjQzNywgNjYwMjUsIDc4Njk5LCAwLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCA5MTc4NzQsIDc4Njk0LCA5MTc4ODAsIAotICAgIDkxNzg3NywgOTE3ODc4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA5MTc4ODIsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAKLSAgICAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMCwgNTkyNSwgNDgwOCwgNjQzMzAsIDAsIDY1NDc1LCAxMTg5NDAsIDE5NTAyOCwgCi0gICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKLSAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAotICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDk4MzQ3MCwgNjQwODAsIDAsIDY0MDkwLCAwLCA2OTkxMywgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAKLSAgICAxMjc4ODgsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgCi0gICAgNzgxMTYsIDAsIDk4MzEzOSwgMCwgOTgzMDc0LCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDk4Mzg3NCwgCi0gICAgMCwgOTgzNDM0LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIAotICAgIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDk4MzQzMiwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMCwgMCwgCi0gICAgMjI5MSwgMTI5MDIsIDAsIDQyODkxLCA2NjMyNywgNzQyOTgsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgCi0gICAgMCwgNDE5MywgOTIyNTAsIDQyNDEsIDk4MzA1NywgNzk5OCwgMCwgMCwgMCwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDAsIAotICAgIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAwLCA1MzczLCAwLCA5ODM4ODYsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAotICAgIDExOTIzMiwgMCwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCAwLCA0MjAzNywgMCwgMzkwNiwgMTIzNDksIAotICAgIDAsIDgzMjYsIDAsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAwLCA0MzYxMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjgwLCA3NDU1OCwgMTI3MzMyLCA2ODEzOCwgMTMwNzIsIDE4OTQsIDAsIDAsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgCi0gICAgMTE3NzMsIDAsIDAsIDAsIDAsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgMCwgMTI4ODA1LCAKLSAgICA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDAsIDUzNjcsIDg3NTYsIDEyNzE0MywgMCwgCi0gICAgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDk4MzM1NiwgNjk2ODUsIDk4Mzc1NiwgMCwgMCwgNDQwMjAsIAotICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKLSAgICAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMCwgMCwgNTM1MiwgMCwgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIAotICAgIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgOTIyNDEsIDQzNjA3LCAwLCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMCwgCi0gICAgNzQ0MTcsIDQwMTgsIDcxNTAsIDY4MTI3LCAwLCAwLCAwLCAwLCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKLSAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMCwgNzg3NTEsIDcxNDYsIDAsIDY1MTUwLCAKLSAgICA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgOTgzNDM1LCA2OTY0MSwgMTA3NTMsIAotICAgIDEwODMwLCAwLCA2MTUsIDY0NDkwLCA3NTc0LCA5MjYxNywgNzc5MjIsIDAsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgCi0gICAgMCwgMCwgNjc5OTYsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDAsIDc0MzI5LCAKLSAgICAwLCA2NDYyMiwgOTA3MCwgMCwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDAsIDcwMDAsIDM5MDQsIAotICAgIDAsIDEyODE5OCwgMCwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIAotICAgIDAsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDAsIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgCi0gICAgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgMCwgNjQ0MDksIDM1OTYsIDAsIDAsIDk3NjMsIAotICAgIDEyMDI4MCwgOTIxOTIsIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDAsIDAsIDEwODIwLCAKLSAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMTI2NTAwLCAxNTM4LCAwLCA0MzEyNCwgCi0gICAgMCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKKyAgICAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIAorICAgIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCAKKyAgICA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgCisgICAgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAKKyAgICAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgOTgzNDE4LCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgCisgICAgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgCisgICAgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgCisgICAgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIAorICAgIDEzMjU0LCAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDEyNTAyMywgCisgICAgNDI2MDksIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgCisgICAgMTIxMzQ2LCA4MzQ4OCwgMCwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCisgICAgNzg1NCwgODM0ODMsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIDEwNzExLCAKKyAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCA5ODM0MTAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDk4MzQxNCwgMCwgNzg2NDIsIAorICAgIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKKyAgICA3ODIwNCwgNDM5MTMsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgNjM2LCAKKyAgICAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgCisgICAgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCA3NDk3MiwgMCwgCisgICAgMCwgMzkzNywgMTIzMTIsIDAsIDk4MzQwNSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAKKyAgICAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjg5NjksIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgCisgICAgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgCisgICAgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDAsIDQyMDM5LCAxMTM4MTcsIDAsIDY0MTQyLCA2MjYsIDAsIAorICAgIDU4OTUsIDAsIDQzOTEwLCA1NzgwLCAwLCAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgCisgICAgNDY0NCwgODgxOCwgNzgxNTgsIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIAorICAgIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIAorICAgIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMTkyNTUsIAorICAgIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA3MTE4MCwgMCwgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDk4Mzg0NywgCisgICAgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCAKKyAgICA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAwLCA0MTg1OSwgCisgICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCA3MDUwNywgMTI1MDkxLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCAKKyAgICA0MjEwNiwgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjcxMjAsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgCisgICAgNjg3NTgsIDY4MzQyLCA4MzQyMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCAKKyAgICA1MzAwLCA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgCisgICAgNDMyODgsIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgCisgICAgNzg3NiwgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAKKyAgICAxMjA1MywgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCAKKyAgICA4MzQxMiwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIAorICAgIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgCisgICAgNjg2NTUsIDAsIDk4MzM5MCwgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgCisgICAgNjY4NywgMTI3NCwgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIAorICAgIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCAKKyAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIAorICAgIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCAKKyAgICA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgCisgICAgOTgzNzA4LCAxMTkwNTMsIDAsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgCisgICAgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAorICAgIDgzNDAzLCA4MzQwNCwgODMzOTcsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCA4MzM5NiwgCisgICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAwLCA5ODMwNzQsIDAsIDAsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIDY4MTYsIAorICAgIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIDgzNDYzLCAKKyAgICA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCA2NDIxMiwgCisgICAgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAxMjUxMjEsIAorICAgIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgOTgzNDIxLCA2NDA2NywgOTIyODcsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCisgICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDgzMzAyLCAKKyAgICA5MTc2MTAsIDc5MzUsIDI0MjAsIDAsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIAorICAgIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgNjY4ODQsIDYyOTIsIDY1MzAzLCAKKyAgICA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgMTI5MDczLCA2NTE1MiwgNzE5LCAKKyAgICAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIAorICAgIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIAorICAgIDAsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAwLCAxMTM3NTYsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAKKyAgICA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgCisgICAgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCAKKyAgICA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgCisgICAgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCAKKyAgICA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIDAsIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIAorICAgIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIAorICAgIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgMCwgNjUwNjEsIDk4Mzk0NSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAKKyAgICAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgNjQwODAsIDEyOTA2MywgNjQwOTAsIDk4MzU4NiwgNjk5MTMsIAorICAgIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgCisgICAgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgCisgICAgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgMTI3MzI1LCA5ODM0MzYsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCisgICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAKKyAgICAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAKKyAgICAwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEyODYyOCwgNDE5MywgCisgICAgNjY4MjMsIDQyNDEsIDEyOTE5NSwgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIAorICAgIDk4MzkzNCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgCisgICAgMTAwMTUsIDEyMDY3MiwgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCAKKyAgICA0MjAzNywgMCwgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAKKyAgICAzNzc5LCA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMCwgMjgwLCA3NDU1OCwgCisgICAgMTIxMzUzLCA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgCisgICAgMCwgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIAorICAgIDcxODc3LCAxMjg2NjksIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgOTgzMDY2LCAKKyAgICA1MzY3LCA4NzU2LCAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIAorICAgIDY5Njg1LCA5ODM3NTYsIDAsIDExMzc5NCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAKKyAgICAyMjkwLCA3MTA1NywgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgCisgICAgNjcxNDgsIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCAKKyAgICA2OTYzNywgOTIyNDEsIDQzNjA3LCA3MTI1NCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIAorICAgIDcxNTAsIDY4MTI3LCA3MTQyNSwgMCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAorICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAxMjA3NTAsIDc4NzUxLCA3MTQ2LCAKKyAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgCisgICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgMCwgCisgICAgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAwLCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIDQwMjIsIAorICAgIDEyODc4MywgMTIwNzAxLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgOTA3MCwgMCwgCisgICAgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDk4MzgxMywgNzAwMCwgMzkwNCwgOTgzNjI4LCAKKyAgICA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCisgICAgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAxMTM3MjUsIDk2MzYsIDAsIDEwNzM4LCAKKyAgICA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgOTgzNzIzLCA2NDQwOSwgMzU5NiwgCisgICAgMTI5MDQ0LCAxMjgwOTAsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgCisgICAgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgMTc2OSwgNDE3MTUsIDI0NjMsIAorICAgIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIDE5NDYxNCwgMTk1MDU4LCA3Nzk1LCAKKyAgICAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAxMjExMzAsIDk0OTgsIDEyNzAzMiwgCiAgICAgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAxMjAyODcsIDEyMDI4NiwgMjY1MCwgCi0gICAgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgNTUyMjgsIDExNzc0LCA0MTAxNiwgMCwgCi0gICAgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIDQxMDE5LCAwLCAKLSAgICAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCA3ODIwOCwgMTE4ODc5LCAKLSAgICA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDc0NzU1LCAwLCA3NzMzLCAwLCAKLSAgICA0OTk4LCA5ODM4OTYsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMCwgMCwgNzAwNjEsIDQwMTMsIDAsIDEwODgxLCAwLCAwLCAKLSAgICAwLCA3NDc4OCwgMjAxNCwgMCwgMCwgOTc2NSwgMCwgMCwgMCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIAotICAgIDAsIDAsIDAsIDIwMTUsIDAsIDAsIDAsIDY2MzE4LCA0MzIzMywgMCwgNDI1MTcsIDAsIDAsIDAsIDEyNjk4LCA4MDk0LCAKLSAgICAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgMCwgMTI2NTYsIDEyODEyMiwgMTE5MzUzLCAxMjgyNzAsIDE2NjUsIDAsIDQ4MzMsIAotICAgIDk4MzA1MywgMTE5MzUxLCAxMjczNjcsIDAsIDE4OSwgMTI2MTEsIDAsIDAsIDI4NTksIDQ4MzgsIDAsIDQ4MzQsIDY1MDc4LCAKLSAgICAwLCAwLCA0ODM3LCAxMjcwNjEsIDc3MCwgMCwgODExLCAwLCA0MTA0MiwgOTE3NTUxLCA0MTMxOCwgNjQ0MjcsIDAsIAotICAgIDEyODIwOCwgNzg4NDgsIDM4OTUsIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgCi0gICAgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIAotICAgIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAKLSAgICAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgCi0gICAgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCAKLSAgICA2OTY1OSwgNzM5MTQsIDAsIDAsIDAsIDAsIDQyMjMxLCA4MjQ2LCAwLCAwLCAwLCA0MTg0MCwgOTgzNjA5LCAyMzc3LCAKKyAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAKKyAgICA5ODMyNjIsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCAKKyAgICA0MTAxOSwgMTI3OTQ0LCAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCAKKyAgICA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgCisgICAgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxOTQ3OTAsIAorICAgIDE5NTA1NiwgNzAwNjEsIDQwMTMsIDEyODcxOCwgMTA4ODEsIDAsIDk4MzE2MywgMCwgNzQ3ODgsIDIwMTQsIDI0MzIsIAorICAgIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIAorICAgIDAsIDExOTMxNSwgMjAxNSwgMTIxMDg4LCA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgCisgICAgNjgwNjAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgCisgICAgMTE5MzUzLCA2NzI3OSwgMTY2NSwgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIAorICAgIDEyNjExLCAwLCA5ODM0MjAsIDI4NTksIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgCisgICAgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIAorICAgIDM4OTUsIDkyNjE1LCA3NDM0MSwgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCAKKyAgICA0MzQ5NiwgMCwgMTIxMDE1LCA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAKKyAgICA5ODM4NDQsIDYzNDUsIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgCisgICAgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgCisgICAgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAwLCAKKyAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgMTE5MjQ4LCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCisgICAgOTE3OTY1LCAzOTkxLCA2NDM5MSwgODMzNDEsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAKKyAgICAxMjc1MzQsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCiAgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCi0gICAgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCi0gICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgCi0gICAgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIAotICAgIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgCi0gICAgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgCi0gICAgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgOTgzMjg4LCA0MzI4MCwgODIxOSwgCi0gICAgNjg0MDIsIDE4MTIsIDExOTk2MywgOTgzNjkyLCAwLCAxMjY0ODgsIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAKLSAgICAxMDY5NywgMzE2OSwgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMCwgMTI4MTM5LCA5ODMyNjEsIDY4Njc4LCAKLSAgICAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgOTgzMDg0LCA5NDgwLCA0ODEsIDAsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIAorICAgIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCisgICAgOTI5MzQsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAxMjgwNTAsIAorICAgIDIwMDQsIDkwOTYsIDk3ODIsIDcwODQyLCA5MTcyLCA4MzA3MSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCAKKyAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIAorICAgIDk4MzgxNywgMTIwODM4LCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMTI3MjM4LCAKKyAgICAxMjg3MzksIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIDExOTk2MywgCisgICAgMTIxMDY3LCAxMjg0MzAsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgCisgICAgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjg4NDgsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIDk4Mzc5MCwgCisgICAgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAogICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCi0gICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgOTgzMTMwLCAyMDA5LCAwLCAwLCAxMjcxNDIsIAotICAgIDk2NDAsIDExOTk1MSwgMCwgMTIwNjk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAwLCAKLSAgICAxODIsIDE5NDcxOCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIAotICAgIDExNzU0LCAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIDEwMTAyLCA0MTE4OSwgNDAwMywgCi0gICAgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAwLCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgCi0gICAgNjEyOCwgMCwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMCwgNjU1MDYsIDAsIDY1ODYxLCA3NDA4MywgOTI2MDAsIDk5MzIsIDAsIAotICAgIDkyNDIzLCAxMTk5NTUsIDAsIDk4MTcsIDAsIDEyMDE0MCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIAotICAgIDkwNjMsIDEyNzA0NSwgMCwgMTE5OTU0LCAwLCAxMjg5NywgMzc5MiwgMjAxMSwgMCwgNjA2NSwgNDMxNjAsIDAsIDE5NDcxNSwgCi0gICAgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIAotICAgIDc4MDAyLCAwLCA3NTEzLCAxODYzLCA0NzEwLCAwLCA1OTU2LCA3NjIxLCA3ODAwNiwgOTI2MjQsIDQ3MDUsIDcxNiwgCi0gICAgNzgwMDQsIDAsIDQ3MDQsIDEyMDA0MCwgMTIwMjcwLCA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCAwLCAKLSAgICA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAxMTkwNjUsIDQzMjkzLCAxMTk5NDQsIDAsIDExOTE2NCwgMTIwMzI4LCAKLSAgICA5MjQ2NywgMTAxODcsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDk4MzY0MiwgCi0gICAgODUwNiwgMCwgMCwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCAKLSAgICA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDAsIDEyMDQyMCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgOTgzMTc0LCAKLSAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDAsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIDEzODMsIAotICAgIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIDI2NzQsIAotICAgIDEzMjM4LCAxMTkyMiwgMCwgMTIwMzMwLCAzNTEwLCAxMzIzNCwgMCwgMTIwNDA3LCA1NjA1LCA0MjA5NSwgMTEzNjQsIDAsIAotICAgIDEzODAsIDY1NjE3LCAxMjAyNTMsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIDEyMDY4MiwgOTQ5NSwgMTE5MzQ2LCAKLSAgICAwLCA1OTU5LCA2Nzk4NCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAKLSAgICAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIAotICAgIDEyODc3MywgMjAyMSwgMTE5MzMyLCAxMjA2OTksIDExOTE1MCwgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgCi0gICAgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgNzc4NywgNzgyMzQsIDY1NDk0LCA2ODE1MywgMCwgMCwgCi0gICAgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIDAsIDAsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgCi0gICAgOTc0MiwgNTIxLCAwLCAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAKLSAgICAwLCAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAotICAgIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDk4MzEwNywgOTU3MywgMCwgNjUyOTAsIDg4NDksIDAsIAotICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgMTIwNTA1LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDAsIDczODgsIDEwNjIxLCAKLSAgICA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgMCwgMTIwNDU3LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCAKLSAgICA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDAsIDAsIDQyMSwgCi0gICAgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgMTIwMTIxLCA2NjAzNSwgCi0gICAgOTgzOTEzLCAwLCA2NTg1MSwgNDI2MDcsIDEyODE5MCwgOTI0MDMsIDMxNjgsIDAsIDQyMTM0LCAxMTgzMSwgMjM3MCwgCi0gICAgMjg0NiwgOTI2MDUsIDAsIDAsIDEyMDEzMiwgMCwgMTgzNiwgMCwgMCwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKLSAgICA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTIwNDM0LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCAKLSAgICAxMjA0NDYsIDAsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCA5ODM3NDMsIDAsIDEwNjE4LCAyNTg0LCAwLCAwLCAwLCAKLSAgICA5OTk4LCAxMjg1NjQsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCi0gICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDAsIDE5NTA0NiwgNjU3MDAsIDY2NTYyLCAwLCA2NDY0NSwgMCwgCi0gICAgMCwgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTI3OTIyLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzk3LCAKLSAgICA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDAsIDY2MTUsIDIyODUsIDkyMzQ0LCAzOTg2LCAKLSAgICA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDAsIDk4MzM1OCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAKLSAgICAxMTQ5OCwgMCwgOTgzMzU3LCA0MTA0MCwgMjQ1OSwgMCwgMTMwNjAsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCAwLCAKLSAgICA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5ODMzNTAsIDAsIDE2MDYsIDEyMDM0OCwgCi0gICAgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgOTgzMDYxLCAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIAotICAgIDEyMDMzNiwgMTE5MjMsIDQwMjMsIDEyMDMzMywgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIAotICAgIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgMCwgMCwgMTE4ODM3LCAxMTk3MywgCi0gICAgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDAsIAotICAgIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgMCwgMTAzODksIDEyNjQ4NSwgMCwgNDg5NSwgCi0gICAgNjUzNTgsIDAsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKLSAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCA5Mzk5NiwgMjM3NiwgMCwgMTE5MzIwLCAKLSAgICAwLCA1MTk3LCAxMjcwNDYsIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDEyNzA1MSwgMTIwNTU0LCAxMjAwNDUsIDAsIAotICAgIDAsIDAsIDk4MzA4NCwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA5ODMwODYsIDk4MzU3MywgMTIwMDQ3LCAxMjg1NzUsIDAsIAotICAgIDAsIDEyMDA0OSwgMCwgMTg0NywgMCwgMTAzMzksIDk4MzM2NSwgNDIzODQsIDAsIDQyMjcsIDc0MTU4LCAwLCA5MjUwMSwgCi0gICAgNDMwMzIsIDAsIDQyMzY1LCAwLCAxMjY3MSwgMTEzODQsIDAsIDk4MzQ2NSwgMCwgNjQ3OTcsIDk4MzM0NSwgNTgyMCwgCi0gICAgOTgzMzQ0LCAxMjAwNTIsIDEyMDA2NSwgMCwgMTIwMDY0LCAxMjA2NTAsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgCi0gICAgMTIwMDYzLCAwLCA3Mzc3LCAxMjc4NjcsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAKLSAgICA5ODMzNDAsIDExODkzOCwgMCwgMTA4NTMsIDkyNiwgOTgzMzY5LCA3NDE4NCwgOTgzMzY4LCAxMjAwNTUsIDAsIDQzMTc1LCAKLSAgICAwLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCi0gICAgMTI2OTksIDgzMzEsIDAsIDMwOTEsIDQxMDM0LCAxMjczNTMsIDk4MzY4MSwgODM2MCwgMCwgNzgwNDQsIDMyMSwgNDIyOSwgCi0gICAgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCA5MjM4NiwgCi0gICAgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIAotICAgIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCi0gICAgMTIwNzY2LCAwLCA0MjYzMiwgOTE3OTczLCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgCi0gICAgNDMzNDEsIDAsIDE5OTE5LCAwLCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAwLCAwLCAzNTEzLCAwLCAxMTg4ODMsIDQzMzQyLCAKLSAgICAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgMTI4MTk3LCAwLCA2NDg1LCAxMzk3LCAwLCA0MTk4NiwgOTI2NzgsIDAsIDAsIAotICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDk4MzE0MywgOTgzNzA3LCAwLCAKLSAgICAwLCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCAKLSAgICA3ODIyMiwgMTM0NiwgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgCi0gICAgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCAKLSAgICA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCAKLSAgICA0MTc5NSwgNjQ2NjYsIDEyNjUwOCwgNDM1MzAsIDI3NTIsIDAsIDAsIDk4MzQ5MywgNTksIDAsIDk4MzU5MywgMCwgOTIzNzEsIAotICAgIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgCi0gICAgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAxMzEyNywgMTIwMDY3LCAwLCA3NDM5NywgMTIwMjM1LCA5MTc5NzcsIAotICAgIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIAotICAgIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIAotICAgIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCi0gICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgCi0gICAgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgCi0gICAgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAKLSAgICAyODUxLCA0MzAxNywgOTgzNTg5LCAwLCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAKLSAgICAwLCA2NTM2MCwgMCwgOTIzNjUsIDkxNzc4OSwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgCi0gICAgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDk4Mzg0NywgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIAotICAgIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAKLSAgICAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCA2NDgyNiwgMCwgOTE3Nzk4LCAKLSAgICAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDk4Mzg1MCwgMTIxMTIsIDY5OTEyLCAwLCAKLSAgICAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgNzgyNTgsIAotICAgIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIDQxODk0LCAwLCAKLSAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCA3MTM0MCwgNjk4MTYsIAotICAgIDExOTg2OCwgNzQ0MDgsIDAsIDczOTU5LCA1NDI2LCA0MjU4LCAwLCAwLCA1NDI0LCAxMjgxMjcsIDgyODMsIDAsIDU0MzQsIAotICAgIDk4MzU5MCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgCi0gICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgCi0gICAgNDMxLCAwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY2MywgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIAotICAgIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIAotICAgIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAxOTUwNjYsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIAotICAgIDY2MDM5LCAwLCA3ODcxOCwgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgCi0gICAgOTA5NywgMCwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDEyNjQ5NCwgMCwgMCwgNDI2OTQsIAotICAgIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIAotICAgIDEyODQ5LCAzOTUzLCAxODk3LCAwLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIAotICAgIDY4NDczLCA3NDEwNCwgNTIyOCwgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgCi0gICAgMTE2MiwgOTE3ODQ3LCAyNjcxLCAwLCAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgCi0gICAgMCwgMCwgMTk5MjEsIDc0MzMxLCAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgOTgzNzg4LCA1NTI0OSwgNDgyMCwgCi0gICAgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIAotICAgIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgCi0gICAgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIAotICAgIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgODM4LCAxMjAwODcsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAKLSAgICAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIAotICAgIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMTk0ODkzLCAwLCAKLSAgICA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDE5NDg5MCwgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIAotICAgIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIAotICAgIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzcwNiwgMzM5NCwgCi0gICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCi0gICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCi0gICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCi0gICAgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAKLSAgICAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgCi0gICAgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAKLSAgICAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIDEyNjU2MiwgOTgzMTI5LCAwLCAKLSAgICAwLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIDExOTc1LCAxOTQ4NzgsIDAsIAotICAgIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgMTI4MTQ4LCAKLSAgICAxMjAyNDEsIDAsIDAsIDAsIDAsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDkyMzA2LCAKLSAgICAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjY0NzMsIDY3ODcxLCA3NDM4NiwgMCwgCi0gICAgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgCi0gICAgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCA5NDAwMywgMzQwNiwgCi0gICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAotICAgIDEyODcwNSwgMCwgOTgzNjkzLCA5NjkzLCA0MTk0MywgMTI2NTY0LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAKLSAgICAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDk4MzY5NiwgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCAKLSAgICA5MjM3MiwgMCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIAotICAgIDEyMjA3LCAxMTk2MTksIDYzMzUsIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgCi0gICAgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDk4Mzc1NCwgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgCi0gICAgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgCi0gICAgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIDc0Mjg0LCAwLCA1NzQ3LCAKLSAgICA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAKLSAgICA5ODM2OTEsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgNDMxMzcsIDY5NCwgMCwgCi0gICAgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAKLSAgICAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAxMjY0NzgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIAotICAgIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAKLSAgICAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCAKLSAgICA4MDUxLCAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDExODgzNCwgCi0gICAgOTgzMzU5LCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAotICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAotICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgMCwgODgzNCwgMCwgCi0gICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIAotICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAKLSAgICAxMzMwMywgMCwgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIAotICAgIDc4NTk4LCA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgCi0gICAgMTk0NzYyLCAyNjcyLCAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMCwgCi0gICAgNDM3NDIsIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCi0gICAgMTI3OTc2LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAotICAgIDE5NDg1NSwgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgCi0gICAgNDI1MDcsIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIAotICAgIDU0MzcsIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIAotICAgIDE5NDY5OSwgMTk0ODQ3LCAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCAKLSAgICA2NDcyLCA2NTgxNCwgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MTcsIDk4MzI0NywgCi0gICAgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCAKLSAgICA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDk4MzYzMSwgOTgzNjM3LCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAKLSAgICAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgCi0gICAgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAxMjg4NDUsIDE5NDgyMCwgCi0gICAgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgMTk0ODI1LCA3MzkyNywgOTI0NDQsIDE5NDczNiwgCi0gICAgNjU3NDYsIDEyNzQ3NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxOTQ4MzEsIDE2NzcsIDAsIDAsIAotICAgIDEyNjU5MCwgOTE3ODU1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIDAsIDc1ODUsIAotICAgIDY1MTY5LCAyMDUyLCA0MzA4LCA5MjE3NCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAwLCAwLCA2NDY1NSwgMCwgCi0gICAgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgMCwgNjUyNjUsIDE5NDYzOSwgMCwgMTI3MTcwLCAwLCA5ODM2MjUsIDAsIAotICAgIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDk4Mzk0MywgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCAwLCAwLCAwLCA1MDYsIAotICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgOTgzNjgwLCA4ODQxLCAwLCA1MTYsIAotICAgIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAotICAgIDExODI3LCA3NDMwOCwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCA2NTg0LCA3NzQ5LCAKLSAgICAxMTAzNywgMCwgMTc1OCwgMTI3MDkyLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAotICAgIDEyMDE5NiwgMTIwMTk1LCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIDY0NzAyLCAxMjY0MywgODI1LCAKLSAgICAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIDc4ODMzLCAxMjYzMSwgNzg4MjksIAotICAgIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDAsIDExMzEzLCAwLCAzNDAzLCAwLCAwLCA2NDM2NCwgOTIyNjksIAotICAgIDAsIDc0NTgyLCA4OTk4LCAxMjk4OCwgMCwgOTE1MiwgOTgzODQ5LCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIAotICAgIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgCi0gICAgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCAKLSAgICA0MTM5MywgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgCi0gICAgNTczLCAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIAotICAgIDY3NjA3LCAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIAotICAgIDc4ODM3LCAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIAotICAgIDQyNzg4LCA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAKLSAgICAwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAotICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDAsIDQxNzIsIDAsIDAsIDgzNzMsIAotICAgIDEwODczLCAxMjE5NywgMCwgMCwgOTIyNjUsIDY5NzA2LCAwLCA3ODIxMCwgMCwgMTI4MTEwLCAxOTQ4NjUsIDEyNjk4MiwgCi0gICAgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDAsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAKLSAgICAzMjc0LCAxMjczNjUsIDEyNjUyMywgOTQwNDIsIDk4Mzk1MCwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIAotICAgIDY1NjcyLCAwLCAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgCi0gICAgMTk0NjA1LCAwLCAwLCAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgCi0gICAgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAKLSAgICAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgCi0gICAgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCAxMjAyMTIsIAotICAgIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgCi0gICAgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIAotICAgIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAKLSAgICAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIAotICAgIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAKLSAgICAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCAKLSAgICA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAxMjc3NzEsIDQzMDkxLCA2NDAzMywgCi0gICAgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIAotICAgIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgCi0gICAgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIAotICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2NiwgMCwgNDc2NywgOTM0MywgCi0gICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKLSAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCi0gICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKLSAgICA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKLSAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAotICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCi0gICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgOTgzNjI3LCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCA2NDAzMCwgMjk0LCAKLSAgICA0MTg3NCwgMCwgMTI2OTkxLCA2NTkyOSwgMCwgMCwgMCwgMCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAKLSAgICAwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAxMTk4ODksIDExNDMzLCAKLSAgICAxMTk4OTUsIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCAxOTQ5NTUsIAotICAgIDExMzUsIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgOTgzOTI1LCAwLCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCAKLSAgICA0MTU0OSwgNzg0OTYsIDk4MzMyNywgMCwgNjY4MiwgMCwgNzg2NzksIDY0NzEwLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKLSAgICAxMjgyOTEsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIAotICAgIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIAotICAgIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgOTgzNjQ2LCAwLCAwLCAzMDU5LCAKLSAgICA0NDAyNCwgMTIwMjA0LCAxMTk5NTMsIDkyNjkzLCAwLCAwLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCAwLCAwLCAKLSAgICAzNTkyLCAxMDA3OCwgMCwgMCwgMCwgODU5MiwgNjU4NzAsIDY4MTY0LCAxMjg3OTIsIDEwNzQyLCAwLCA0MjkxOCwgMTk5NCwgCi0gICAgOTI4MSwgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgMTI3OTg1LCA3NDI0NSwgCisgICAgOTY0MCwgMTE5OTUxLCAwLCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAKKyAgICAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIAorICAgIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgCisgICAgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIAorICAgIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTI1MDU4LCA2NTUwNiwgOTgzOTEyLCA2NTg2MSwgNzQwODMsIDY2ODcyLCAKKyAgICA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgOTgxNywgMCwgNzEyMzQsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgCisgICAgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAKKyAgICAxMjE0MTgsIDYwNjUsIDQzMTYwLCAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIAorICAgIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIAorICAgIDAsIDU5NTYsIDc2MjEsIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgMCwgNDcwNCwgMTIwMDQwLCA5MzAyNCwgCisgICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIAorICAgIDExOTA2NSwgNDMyOTMsIDY4NzcxLCA5ODMxOTAsIDExOTE2NCwgMTIwMzI4LCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgCisgICAgODMzMTUsIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgMTI4MzMxLCA4NTA2LCAxMTM3NDQsIAorICAgIDE5NDgxMiwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIAorICAgIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAKKyAgICAxMjg2MjMsIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgCisgICAgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAKKyAgICAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgOTI1MjksIDM1MTAsIDEzMjM0LCA5ODM4MzIsIDEyMDQwNywgNTYwNSwgCisgICAgNDIwOTUsIDExMzY0LCA5MjI4NiwgMTM4MCwgNjU2MTcsIDExMTYyLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAKKyAgICA2NzcwOCwgOTQ5NSwgMTE5MzQ2LCAxMjcxNTQsIDU5NTksIDY3OTg0LCA3Mzk3NiwgNjYyNzUsIDQzMzcxLCA2OTQxLCAKKyAgICAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgODI5NTIsIDQ3NzksIAorICAgIDk4MzkyMiwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgNzExODYsIDIwMjEsIDExOTMzMiwgNDM4NzcsIDgzMTQwLCAKKyAgICA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCAKKyAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIAorICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3OTQsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIAorICAgIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgCisgICAgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCA2NzI2MSwgMTAwNzQsIDc4NTQ4LCAKKyAgICA5Mzk5OSwgMzc2OSwgMCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgCisgICAgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgCisgICAgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCA5MjIwMywgOTI5MTUsIDEyNjYxLCA3NjA4LCAKKyAgICAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgCisgICAgMTM5MCwgNzAxODQsIDE5NDcwNCwgNDIxLCA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCAKKyAgICA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NTA5MSwgMCwgNjU4NTEsIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgCisgICAgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgCisgICAgMTIxMjA3LCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAKKyAgICAxMTkwMDYsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgMCwgODEyNywgODk3NSwgNjQ3MzksIAorICAgIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAKKyAgICAxMjc3NTAsIDQzNTA4LCA2MjA0LCAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKKyAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTUwNDYsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIAorICAgIDAsIDkyODg3LCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAKKyAgICA5ODM3OTcsIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIAorICAgIDkyMzQ0LCAzOTg2LCA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMzNjAsIDk1NDEsIDc4Mjc2LCAKKyAgICAxMTM2NjksIDExMjc1LCA4NTQwLCAxMTQ5OCwgMTIwODY4LCA5ODMzNTksIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEzMDYwLCAKKyAgICA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIAorICAgIDM3NjUsIDkyODgxLCA5MTc2MTIsIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMjgwNDAsIDk4MzA2MSwgCisgICAgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCAKKyAgICA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIAorICAgIDY2NjYwLCAyNDk5LCA2NzE2NywgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCAKKyAgICA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgCisgICAgMzEyMCwgOTc5NywgMCwgMCwgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgCisgICAgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDEyMTE2MCwgOTgzMTA2LCAKKyAgICA3MDA0LCAxMTM2NjcsIDY1ODgwLCAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIAorICAgIDc4ODQxLCA4MzQwMiwgMCwgNTE5NywgNzA4MzksIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDExOTYwNCwgCisgICAgNzA4MzcsIDEyMDA0NSwgMCwgMTI4NTU0LCAwLCA5MTc4NDYsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAKKyAgICAxMTM2NzUsIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCA5ODMzNjYsIDE4NDcsIDEyMDk3OCwgMTAzMzksIAorICAgIDk4MzM2NywgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTIxMTI0LCA0MjM2NSwgMCwgCisgICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDk4MzM0NiwgMTIwMDUyLCAKKyAgICAxMjAwNjUsIDEyODgyNSwgMTIwMDY0LCAxMjAwNTMsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAxMjEyODYsIAorICAgIDczNzcsIDEyMDA1MSwgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIDEyMTEzMiwgCisgICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzM3MSwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAwLCAKKyAgICA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCisgICAgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAzMjEsIAorICAgIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxOTQ4NzMsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAxMjE0MjgsIAorICAgIDkxOTUsIDkyMzg2LCAxODYxLCAwLCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIAorICAgIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAxMjc1MTQsIAorICAgIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIDEyNzIzNiwgCisgICAgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAwLCAxOTkxOSwgNzAyNzgsIAorICAgIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjUwNzcsIDM1MTMsIDcxMTE1LCA3MDM0MSwgNDMzNDIsIDExOTA2NCwgCisgICAgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIDkyNjc4LCA4MzIwNCwgCisgICAgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgOTIzMTcsIDAsIDY3NDA2LCAKKyAgICAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMTI4OTUyLCAKKyAgICA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCA2NDU3MywgNjQ4OTcsIDQyMywgCisgICAgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjc4MTIsIDE5OTExLCA0MjE4LCAzMDg3LCA2NDk2MCwgMTIxNDQ3LCAKKyAgICA0MzU2NCwgMCwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAKKyAgICA3MTIzNSwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCAKKyAgICA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIDk4MzY3MSwgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIAorICAgIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIAorICAgIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgCisgICAgMTIwMjM1LCAxMjg2NDEsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAyMTAzLCAxMDM4NywgNDQ1MywgCisgICAgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDAsIDEyOTEzMywgMTE5OTI5LCA0MTk4MywgCisgICAgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAKKyAgICAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgCisgICAgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIAorICAgIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIAorICAgIDExOTMyMywgNTcyNiwgNjQ5MTUsIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgCisgICAgOTgzNTg5LCAxMjA4OTYsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAKKyAgICA5MTc1ODksIDkyMzY1LCAxMjgyMDIsIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCAKKyAgICA3NDM3NCwgMjM2OCwgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTIwMTA2LCAKKyAgICA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDEyMDEwNywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIAorICAgIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCA5OTUsIDAsIAorICAgIDEyMTA0NywgNjQ4MjYsIDEyNDkzMSwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAKKyAgICAxOTQ4MTQsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAxMjAxMDQsIDY4MDE5LCAKKyAgICAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDExMTIwLCAKKyAgICA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIAorICAgIDEwMDEwLCAxMjczODEsIDM1NDAsIDEyMTQ1MCwgODM1LCA3MTM0MCwgNjk4MTYsIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCAKKyAgICA1NDI2LCA0MjU4LCA4MzE4OCwgMTIwODU4LCA1NDI0LCA5MjMwNiwgODI4MywgMTI3OTc4LCA1NDM0LCA4MzE5NiwgCisgICAgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIAorICAgIDY0ODYsIDQ4MTksIDEyODIzMywgMTI5MTIzLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIAorICAgIDEyODUzOSwgNDMxLCA2NzgyMCwgMCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCA5ODM2NjMsIDEzMDk2LCAxMjg2NDMsIAorICAgIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCAKKyAgICA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCA1ODc4LCA5ODM3OTksIAorICAgIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAKKyAgICAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxMjg1ODUsIDkwOTcsIDE5NTAyNiwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgCisgICAgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTI2NDk0LCAwLCA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIAorICAgIDEyNTExMSwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAwLCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgCisgICAgOTMwNzEsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMTE5MDg3LCA2ODQ3MywgCisgICAgNzQxMDQsIDUyMjgsIDExOTgzNSwgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgCisgICAgOTE3NTUzLCAxMTYyLCA3NDk5NSwgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCAKKyAgICA3MzgxMSwgOTgzNTczLCAxOTUwMDUsIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgCisgICAgNDE4OTEsIDAsIDk4Mzc4OCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgCisgICAgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAKKyAgICAxOTQ5NDEsIDQzMjgyLCA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEyMTE2NiwgMTA3MTksIDcwMjc1LCAxODk4LCAKKyAgICAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKKyAgICA5MTY5LCA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCAKKyAgICA0MjczOSwgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIAorICAgIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxMjEzMTQsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDE5NDg5MywgCisgICAgNzg0MDMsIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIAorICAgIDU3MzMsIDI5MzAsIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAKKyAgICAxMjUwOTksIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDAsIAorICAgIDkyNDg1LCAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAorICAgIDcyNDI1LCA0MzI4NCwgNjgwNzIsIDc4MTcsIDE4NDEsIDExMDU1LCA2NjgzNSwgMTk0OTc5LCA3NDYwNywgMTY2OSwgCisgICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5ODAsIDk4MzQ1MCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCisgICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgOTgzODQ1LCAKKyAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgMTIxMjE3LCAKKyAgICA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDcwMTIzLCAKKyAgICA2NTMxNywgNzc4ODAsIDAsIDU4NzYsIDcwMzc0LCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIDcxODYyLCAKKyAgICAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgMTI2NTYyLCA5ODMxMjksIDAsIAorICAgIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCA2ODAzMywgMTE5NzUsIDE5NDg3OCwgCisgICAgMCwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCA4MzEwOCwgCisgICAgMTIwMjQxLCAxMjgxNjQsIDAsIDAsIDk4MzU1MywgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCAKKyAgICA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgCisgICAgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDk4MzczMCwgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgCisgICAgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCA2NDMyOSwgMTIwODgwLCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgCisgICAgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgOTgzMzg1LCA0NDM0LCAKKyAgICAxMDY5LCAxOTQ3ODQsIDExODg2MiwgNjU3MzcsIDEyMTIwMiwgMTI4NzA1LCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIAorICAgIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgCisgICAgOTE3NzcwLCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgMTIxMTU5LCAxMTg4MzMsIDkyMzcyLCA3MDQyNCwgNzQ4MzAsIAorICAgIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgCisgICAgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCAKKyAgICA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgCisgICAgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgCisgICAgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDk4MzU3NywgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCAKKyAgICAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIAorICAgIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAxMjk0MTIsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgOTE3ODYwLCAKKyAgICAxMTkwNDMsIDkxNzYxOCwgOTQwNTEsIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3MDM5MiwgCisgICAgNjQ1MzcsIDEyNzkxNCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgCisgICAgODc1NywgNzg4MjQsIDc4MTg4LCAxNTc0LCA3MzgxLCAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAKKyAgICAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTI5MTU2LCA2OTcyNSwgOTA1NSwgCisgICAgNDE4NTMsIDQ4NTgsIDc1MDAwLCA5MTc5OTAsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgCisgICAgOTI1MDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCAKKyAgICA2ODA4NCwgOTgzMzYxLCA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3OTE2LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCAKKyAgICA0MjE1NywgMCwgMzE1NywgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAorICAgIDEwMjI2LCA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAKKyAgICAxMjE0NjcsIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMjc3OTIsIDcwMTEzLCA3MjIwLCAKKyAgICAxMTgzOSwgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxOTQ3NTMsIAorICAgIDEyMTI3NiwgMCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgCisgICAgMTI4NDc0LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgMTI3MTEwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKKyAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgNjg3NDUsIDI2NzIsIAorICAgIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAKKyAgICAxMjgzNzMsIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIAorICAgIDExOTM0NCwgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKKyAgICA3MDAwNiwgMTk0NjkwLCAxMjc1MzcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAorICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMjEwMjEsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgCisgICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgOTgzNzc2LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIAorICAgIDEyNzk0MiwgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDE5NTA3MCwgCisgICAgNjQ3MiwgNjU4MTQsIDcxOTE5LCAxMjEyMTgsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAKKyAgICAxMjAyNzAsIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgCisgICAgNzE4NzIsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc4NTkxLCAKKyAgICAxMTM3MzMsIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgCisgICAgMTI4MjUyLCA0Mzg3NCwgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAKKyAgICAxMjg4NDUsIDEyMDgwOSwgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCAKKyAgICA5MjQ0NCwgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgCisgICAgMTY3NywgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAorICAgIDEwMTYwLCAwLCAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgCisgICAgNjQ5MTYsIDY0NzM2LCAxMTg4MzUsIDAsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIAorICAgIDk4MzIzMSwgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyNzA0MSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAKKyAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIAorICAgIDgzMDc5LCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCAKKyAgICA4ODQxLCA5ODM3NDcsIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgCisgICAgNzQzMzMsIDEyMDE4MiwgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIAorICAgIDY1ODQsIDc3NDksIDExMDM3LCAxMjg3NDMsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAKKyAgICAxOTM1LCAxMTUxNywgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIAorICAgIDY0NzAyLCAxMjY0MywgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIAorICAgIDc4ODMzLCAxMjYzMSwgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIAorICAgIDE5NDgwMywgMzQwMywgOTgzNjU1LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIAorICAgIDExOTk4MywgOTE1MiwgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAKKyAgICAxNTk0LCA0MjE5MiwgNjkxNCwgNjYzOTIsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIAorICAgIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIAorICAgIDI0NzcsIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MiwgCisgICAgMTIwNTQzLCAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMCwgCisgICAgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCisgICAgNDIxOTUsIDc0NDc3LCAxMTk5OTcsIDEyNzE3OCwgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMTIxMzY2LCA0Mjc4OCwgNjg0MTYsIAorICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMCwgOTk3LCAwLCAwLCA5MjU3NywgCisgICAgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIDcyMzkwLCAwLCAKKyAgICAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDk4MzI3OCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgCisgICAgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIDY5NzA2LCAxMjg1NDAsIDY4MzQsIDc0MzQ3LCAKKyAgICA3NDk1OCwgMTI5MDMzLCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIDE5NDg2OCwgNzY2LCAxMjU3LCAxOTQ1OTgsIAorICAgIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3NDUyMiwgCisgICAgNDE5ODksIDEyMTMxNywgMCwgMTEzNzY5LCAzMjYzLCA5MTc5MjIsIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCAKKyAgICA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgMTI4NDk4LCA3NTYsIDE5NDYwNSwgMCwgMCwgMTk0NjIxLCAKKyAgICA3MjYxLCA5MjU0NywgMTg2LCAwLCAxMTkxNTYsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgCisgICAgMTI4MDAsIDk4MzkwMSwgNzQyMDMsIDY0NzE4LCAxMTUwNywgNzg2NzMsIDkyNDM0LCA3NDYyNiwgMTEzNzYwLCAxMTU3OCwgCisgICAgOTgzODM3LCAxMTkyOTYsIDEyMDk3MCwgMTIxMTI3LCAxMjUxMDEsIDAsIDcwMDgzLCA5MjU0LCA2Njg3NywgMTc5NCwgCisgICAgNjgzMTAsIDY0NTIxLCA1NjI0LCAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgCisgICAgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAKKyAgICAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgCisgICAgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIAorICAgIDk1NDYsIDAsIDEyODMzMiwgNzA0MjEsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKKyAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDEyODY2MiwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgCisgICAgODM3LCAxMDU2NywgNzIzODQsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAKKyAgICAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIAorICAgIDEwMzQsIDMzOTIsIDgzMzM2LCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgCisgICAgNjQwMzUsIDQyOTEsIDEyOTE1NywgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIAorICAgIDQzMDkwLCA4MzM5MSwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCAKKyAgICA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCAKKyAgICA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2OCwgMCwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIAorICAgIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCA4MzI2MSwgMTAwMDUsIDEyMzI5LCAKKyAgICA0MTMzMywgODMyNTksIDg0ODksIDE5NDIsIDkxNzkyMSwgMTk0ODM0LCA0MjUyMCwgNjU1MTAsIDEyNTA0NCwgNjgyOTEsIAorICAgIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMTI3Nzk4LCA2NDAyNSwgOTE2NywgNDIxNTEsIAorICAgIDc4MjQ0LCA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMTIxMzYxLCA3NTgyLCAKKyAgICA3ODI1MiwgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDEyMDc5MSwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgCisgICAgNzc5MjAsIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzg1MTgsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCAKKyAgICA3NDQ1NCwgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDExODk1NSwgNjgyMTgsIDU1Mjc0LCAyMDA4LCAKKyAgICA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDgzMzgzLCA2NDc5MCwgNjU5MjksIDgzMzc2LCA4MzMzNywgODMzNzksIAorICAgIDgzMzgwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIDAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAorICAgIDcwMTUzLCAxMTk4ODYsIDExOTg5MSwgNzIzODcsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAxOTQ2NTUsIAorICAgIDc4MDEsIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCAKKyAgICA4MzM1MiwgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCAKKyAgICA3ODQ5NiwgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKKyAgICA4MzM2MiwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCisgICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAwLCAxMjE0NjYsIDE5OTYsIDAsIDM0NTMsIAorICAgIDYyODIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCisgICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDk4MzI0OCwgMTIwMDAxLCAKKyAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgMCwgCisgICAgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIDAsIDc4MTYyLCAKKyAgICAxMTk1NTgsIDg1OTIsIDY1ODcwLCA2NjQxNywgNzQ1MDQsIDEwNzQyLCA3MjQwMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAorICAgIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwpAQCAtMTk4MzksNyArMjMyNjUsNyBAQAogI2RlZmluZSBjb2RlX3BvbHkgMzI3NzEKIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX3N0YXJ0ID0gMHhmMDAwMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19lbmQgPSAweGYwMWM5Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9IDB4ZjAxY2I7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVfYWxpYXNlc1tdID0gewogICAgIDB4MDAwMCwKICAgICAweDAwMDAsCkBAIC0yMDAzNCw2ICsyMzQ2MCw4IEBACiAgICAgMHgyMTE4LAogICAgIDB4MjQ0OCwKICAgICAweDI0NDksCisgICAgMHgyQjdBLAorICAgIDB4MkI3QywKICAgICAweEEwMTUsCiAgICAgMHhGRTE4LAogICAgIDB4RkUwMCwKZGlmZiAtLWdpdCBhL01vZHVsZXMvd2lucmVwYXJzZS5oIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmNzc3NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvd2lucmVwYXJzZS5oCkBAIC0wLDAgKzEsNTMgQEAKKyNpZm5kZWYgUHlfV0lOUkVQQVJTRV9ICisjZGVmaW5lIFB5X1dJTlJFUEFSU0VfSAorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPFdpbmRvd3MuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KKyAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjU1MjAxMi5hc3B4IGFzIHRoZSByZXF1aXJlZAorICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCisgICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCit0eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7CisgICAgVUxPTkcgUmVwYXJzZVRhZzsKKyAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7CisgICAgVVNIT1JUIFJlc2VydmVkOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZUxlbmd0aDsKKyAgICAgICAgICAgIFVTSE9SVCBQcmludE5hbWVPZmZzZXQ7CisgICAgICAgICAgICBVU0hPUlQgUHJpbnROYW1lTGVuZ3RoOworICAgICAgICAgICAgVUxPTkcgRmxhZ3M7CisgICAgICAgICAgICBXQ0hBUiBQYXRoQnVmZmVyWzFdOworICAgICAgICB9IFN5bWJvbGljTGlua1JlcGFyc2VCdWZmZXI7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVTSE9SVCBTdWJzdGl0dXRlTmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCAgU3Vic3RpdHV0ZU5hbWVMZW5ndGg7CisgICAgICAgICAgICBVU0hPUlQgIFByaW50TmFtZU9mZnNldDsKKyAgICAgICAgICAgIFVTSE9SVCAgUHJpbnROYW1lTGVuZ3RoOworICAgICAgICAgICAgV0NIQVIgIFBhdGhCdWZmZXJbMV07CisgICAgICAgIH0gTW91bnRQb2ludFJlcGFyc2VCdWZmZXI7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOworICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOworICAgIH07Cit9IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKKworI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKKyNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworI2VuZGlmIC8qICFQeV9XSU5SRVBBUlNFX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IGVlY2RhYjkuLjQwYzE3NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtNDAsMTEgKzQwLDE4IEBACiAKIC8qIFh4byBtZXRob2RzICovCiAKLXN0YXRpYyB2b2lkCi1YeG9fZGVhbGxvYyhYeG9PYmplY3QgKnNlbGYpCitzdGF0aWMgaW50CitYeG9fdHJhdmVyc2UoWHhvT2JqZWN0ICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnhfYXR0cik7Ci0gICAgKChmcmVlZnVuYylQeVR5cGVfR2V0U2xvdChQeV9UWVBFKHNlbGYpLCBQeV90cF9mcmVlKSkoc2VsZik7CisgICAgUHlfVklTSVQoc2VsZi0+eF9hdHRyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorWHhvX2ZpbmFsaXplKFh4b09iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT54X2F0dHIpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTAyLDcgKzEwOSw4IEBACiAKIHN0YXRpYyBQeVR5cGVfU2xvdCBYeG9fVHlwZV9zbG90c1tdID0gewogICAgIHtQeV90cF9kb2MsICJUaGUgWHhvIHR5cGUifSwKLSAgICB7UHlfdHBfZGVhbGxvYywgWHhvX2RlYWxsb2N9LAorICAgIHtQeV90cF90cmF2ZXJzZSwgWHhvX3RyYXZlcnNlfSwKKyAgICB7UHlfdHBfZmluYWxpemUsIFh4b19maW5hbGl6ZX0sCiAgICAge1B5X3RwX2dldGF0dHJvLCBYeG9fZ2V0YXR0cm99LAogICAgIHtQeV90cF9zZXRhdHRyLCBYeG9fc2V0YXR0cn0sCiAgICAge1B5X3RwX21ldGhvZHMsIFh4b19tZXRob2RzfSwKQEAgLTExMyw3ICsxMjEsNyBAQAogICAgICJ4eGxpbWl0ZWQuWHhvIiwKICAgICBzaXplb2YoWHhvT2JqZWN0KSwKICAgICAwLAotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCiAgICAgWHhvX1R5cGVfc2xvdHMKIH07CiAKQEAgLTE2OSw3ICsxNzcsNyBAQAogCiAvKiAtLS0tLS0tLS0tICovCiAKLXN0YXRpYyBQeVR5cGVfU2xvdCBTdHJfVHlwZV9zbG90c1tdID0geyAgICAKK3N0YXRpYyBQeVR5cGVfU2xvdCBTdHJfVHlwZV9zbG90c1tdID0gewogICAgIHtQeV90cF9iYXNlLCBOVUxMfSwgLyogZmlsbGVkIG91dCBpbiBtb2R1bGUgaW5pdCBmdW5jdGlvbiAqLwogICAgIHswLCAwfSwKIH07CkBAIC0yMjIsMjUgKzIzMCw5IEBACiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGlzIGlzIGEgdGVtcGxhdGUgbW9kdWxlIGp1c3QgZm9yIGluc3RydWN0aW9uLiIpOwogCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCi0KLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInh4bGltaXRlZCIsCi0gICAgbW9kdWxlX2RvYywKLSAgICAtMSwKLSAgICB4eF9tZXRob2RzLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKLX07Ci0KLVB5TU9ESU5JVF9GVU5DCi1QeUluaXRfeHhsaW1pdGVkKHZvaWQpCitzdGF0aWMgaW50Cit4eF9tb2RleGVjKFB5T2JqZWN0ICptKQogewotICAgIFB5T2JqZWN0ICptID0gTlVMTDsKICAgICBQeU9iamVjdCAqbzsKIAogICAgIC8qIER1ZSB0byBjcm9zcyBwbGF0Zm9ybSBjb21waWxlciBpc3N1ZXMgdGhlIHNsb3RzIG11c3QgYmUgZmlsbGVkCkBAIC0yNTQsMTEgKzI0Niw2IEBACiAgICAgaWYgKFh4b19UeXBlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKIAotICAgIC8qIENyZWF0ZSB0aGUgbW9kdWxlIGFuZCBhZGQgdGhlIGZ1bmN0aW9ucyAqLwotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnh4bW9kdWxlKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWw7Ci0KICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwogICAgIGlmIChFcnJvck9iamVjdCA9PSBOVUxMKSB7CiAgICAgICAgIEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJ4eGxpbWl0ZWQuZXJyb3IiLCBOVUxMLCBOVUxMKTsKQEAgLTI2OCw2ICsyNTUsMTIgQEAKICAgICBQeV9JTkNSRUYoRXJyb3JPYmplY3QpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBFcnJvck9iamVjdCk7CiAKKyAgICAvKiBBZGQgWHhvICovCisgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmWHhvX1R5cGVfc3BlYyk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWHhvIiwgbyk7CisKICAgICAvKiBBZGQgU3RyICovCiAgICAgbyA9IFB5VHlwZV9Gcm9tU3BlYygmU3RyX1R5cGVfc3BlYyk7CiAgICAgaWYgKG8gPT0gTlVMTCkKQEAgLTI3OSw4ICsyNzIsMzQgQEAKICAgICBpZiAobyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOdWxsIiwgbyk7Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIDA7CiAgZmFpbDoKICAgICBQeV9YREVDUkVGKG0pOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAtMTsKK30KKworCitzdGF0aWMgUHlNb2R1bGVEZWZfU2xvdCB4eF9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgeHhfbW9kZXhlY30sCisgICAgezAsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4bW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAieHhsaW1pdGVkIiwKKyAgICBtb2R1bGVfZG9jLAorICAgIDAsCisgICAgeHhfbWV0aG9kcywKKyAgICB4eF9zbG90cywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworLyogRXhwb3J0IGZ1bmN0aW9uIGZvciB0aGUgbW9kdWxlICgqbXVzdCogYmUgY2FsbGVkIFB5SW5pdF94eCkgKi8KKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF94eGxpbWl0ZWQodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmeHhtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eG1vZHVsZS5jIGIvTW9kdWxlcy94eG1vZHVsZS5jCmluZGV4IDBmZWZmNjYuLjg1MjMwZDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKQEAgLTMzNCwyNiArMzM0LDEwIEBACiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGlzIGlzIGEgdGVtcGxhdGUgbW9kdWxlIGp1c3QgZm9yIGluc3RydWN0aW9uLiIpOwogCi0vKiBJbml0aWFsaXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCiAKLQotc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiB4eG1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgInh4IiwKLSAgICBtb2R1bGVfZG9jLAotICAgIC0xLAotICAgIHh4X21ldGhvZHMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF94eCh2b2lkKQorc3RhdGljIGludAoreHhfZXhlYyhQeU9iamVjdCAqbSkKIHsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0KICAgICAvKiBEdWUgdG8gY3Jvc3MgcGxhdGZvcm0gY29tcGlsZXIgaXNzdWVzIHRoZSBzbG90cyBtdXN0IGJlIGZpbGxlZAogICAgICAqIGhlcmUuIEl0J3MgcmVxdWlyZWQgZm9yIHBvcnRhYmlsaXR5IHRvIFdpbmRvd3Mgd2l0aG91dCByZXF1aXJpbmcKICAgICAgKiBDKysuICovCkBAIC0zNjYsMTEgKzM1MCw2IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmWHhvX1R5cGUpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgLyogQ3JlYXRlIHRoZSBtb2R1bGUgYW5kIGFkZCB0aGUgZnVuY3Rpb25zICovCi0gICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmeHhtb2R1bGUpOwotICAgIGlmIChtID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQogICAgIC8qIEFkZCBzb21lIHN5bWJvbGljIGNvbnN0YW50cyB0byB0aGUgbW9kdWxlICovCiAgICAgaWYgKEVycm9yT2JqZWN0ID09IE5VTEwpIHsKICAgICAgICAgRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb24oInh4LmVycm9yIiwgTlVMTCwgTlVMTCk7CkBAIC0zODksOCArMzY4LDMzIEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmTnVsbF9UeXBlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk51bGwiLCAoUHlPYmplY3QgKikmTnVsbF9UeXBlKTsKLSAgICByZXR1cm4gbTsKKyAgICByZXR1cm4gMDsKICBmYWlsOgogICAgIFB5X1hERUNSRUYobSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmX1Nsb3QgeHhfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIHh4X2V4ZWN9LAorICAgIHswLCBOVUxMfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgeHhtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJ4eCIsCisgICAgbW9kdWxlX2RvYywKKyAgICAwLAorICAgIHh4X21ldGhvZHMsCisgICAgeHhfc2xvdHMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKy8qIEV4cG9ydCBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBQeUluaXRfeHgpICovCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfeHgodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmeHhtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eHN1YnR5cGUuYyBiL01vZHVsZXMveHhzdWJ0eXBlLmMKaW5kZXggNjk0NGUzNy4uOGQwZDZhZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eHN1YnR5cGUuYworKysgYi9Nb2R1bGVzL3h4c3VidHlwZS5jCkBAIC0yNTcsMTMgKzI1Nyw1MCBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgaW50Cit4eHN1YnR5cGVfZXhlYyhQeU9iamVjdCogbSkKK3sKKyAgICAvKiBGaWxsIGluIGRlZmVycmVkIGRhdGEgYWRkcmVzc2VzLiAgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCisgICAgICAgUHlUeXBlX1JlYWR5KCkgaXMgY2FsbGVkLiAgTm90ZSB0aGF0IFB5VHlwZV9SZWFkeSgpIGF1dG9tYXRpY2FsbHkKKyAgICAgICBpbml0aWFsaXplcyB0aGUgb2Iub2JfdHlwZSBmaWVsZCB0byAmUHlUeXBlX1R5cGUgaWYgaXQncyBOVUxMLAorICAgICAgIHNvIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBmaWxsIGluIG9iX3R5cGUgZmlyc3QuICovCisgICAgc3BhbWRpY3RfdHlwZS50cF9iYXNlID0gJlB5RGljdF9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3BhbWxpc3RfdHlwZS50cF9iYXNlID0gJlB5TGlzdF9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1saXN0X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoJnNwYW1saXN0X3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1saXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWxpc3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoJnNwYW1kaWN0X3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1kaWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWRpY3RfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWZfU2xvdCB4eHN1YnR5cGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIHh4c3VidHlwZV9leGVjfSwKKyAgICB7MCwgTlVMTH0sCit9OworCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIHh4c3VidHlwZW1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgInh4c3VidHlwZSIsCiAgICAgeHhzdWJ0eXBlX19kb2NfXywKLSAgICAtMSwKKyAgICAwLAogICAgIHh4c3VidHlwZV9mdW5jdGlvbnMsCi0gICAgTlVMTCwKKyAgICB4eHN1YnR5cGVfc2xvdHMsCiAgICAgTlVMTCwKICAgICBOVUxMLAogICAgIE5VTEwKQEAgLTI3MywzNyArMzEwLDUgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfeHhzdWJ0eXBlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBGaWxsIGluIGRlZmVycmVkIGRhdGEgYWRkcmVzc2VzLiAgVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlCi0gICAgICAgUHlUeXBlX1JlYWR5KCkgaXMgY2FsbGVkLiAgTm90ZSB0aGF0IFB5VHlwZV9SZWFkeSgpIGF1dG9tYXRpY2FsbHkKLSAgICAgICBpbml0aWFsaXplcyB0aGUgb2Iub2JfdHlwZSBmaWVsZCB0byAmUHlUeXBlX1R5cGUgaWYgaXQncyBOVUxMLAotICAgICAgIHNvIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBmaWxsIGluIG9iX3R5cGUgZmlyc3QuICovCi0gICAgc3BhbWRpY3RfdHlwZS50cF9iYXNlID0gJlB5RGljdF9UeXBlOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzcGFtbGlzdF90eXBlLnRwX2Jhc2UgPSAmUHlMaXN0X1R5cGU7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BhbWxpc3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJnh4c3VidHlwZW1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZzcGFtbGlzdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnNwYW1kaWN0X3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9JTkNSRUYoJnNwYW1saXN0X3R5cGUpOwotICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgInNwYW1saXN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSAmc3BhbWxpc3RfdHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0lOQ1JFRigmc3BhbWRpY3RfdHlwZSk7Ci0gICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3BhbWRpY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopICZzcGFtZGljdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBtOworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ4eHN1YnR5cGVtb2R1bGUpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggZjJjYzI0NS4uMDZhYmIzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC0yMCwxNSArMjAsMTMgQEAKIAogLyogemlwX3NlYXJjaG9yZGVyIGRlZmluZXMgaG93IHdlIHNlYXJjaCBmb3IgYSBtb2R1bGUgaW4gdGhlIFppcAogICAgYXJjaGl2ZTogd2UgZmlyc3Qgc2VhcmNoIGZvciBhIHBhY2thZ2UgX19pbml0X18sIHRoZW4gZm9yCi0gICBub24tcGFja2FnZSAucHljLCAucHlvIGFuZCAucHkgZW50cmllcy4gVGhlIC5weWMgYW5kIC5weW8gZW50cmllcworICAgbm9uLXBhY2thZ2UgLnB5YywgYW5kIC5weSBlbnRyaWVzLiBUaGUgLnB5YyBlbnRyaWVzCiAgICBhcmUgc3dhcHBlZCBieSBpbml0emlwaW1wb3J0KCkgaWYgd2UgcnVuIGluIG9wdGltaXplZCBtb2RlLiBBbHNvLAogICAgJy8nIGlzIHJlcGxhY2VkIGJ5IFNFUCB0aGVyZS4gKi8KIHN0YXRpYyBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyIHppcF9zZWFyY2hvcmRlcltdID0gewogICAgIHsiL19faW5pdF9fLnB5YyIsIElTX1BBQ0tBR0UgfCBJU19CWVRFQ09ERX0sCi0gICAgeyIvX19pbml0X18ucHlvIiwgSVNfUEFDS0FHRSB8IElTX0JZVEVDT0RFfSwKICAgICB7Ii9fX2luaXRfXy5weSIsIElTX1BBQ0tBR0UgfCBJU19TT1VSQ0V9LAogICAgIHsiLnB5YyIsIElTX0JZVEVDT0RFfSwKLSAgICB7Ii5weW8iLCBJU19CWVRFQ09ERX0sCiAgICAgeyIucHkiLCBJU19TT1VSQ0V9LAogICAgIHsiIiwgMH0KIH07CkBAIC04NzUsOCArODczLDEyIEBACiAKICAgICBmcCA9IF9QeV9mb3Blbl9vYmooYXJjaGl2ZSwgInJiIik7CiAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CisgICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC05MzksNiArOTQxLDkgQEAKICAgICAgICAgaGVhZGVyX3NpemUgPSBuYW1lX3NpemUgKwogICAgICAgICAgICBQeU1hcnNoYWxfUmVhZFNob3J0RnJvbUZpbGUoZnApICsKICAgICAgICAgICAgUHlNYXJzaGFsX1JlYWRTaG9ydEZyb21GaWxlKGZwKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgIGlmIChmcmVhZChkdW1teSwgMSwgOCwgZnApICE9IDgpIC8qIFNraXAgdW51c2VkIGZpZWxkcywgYXZvaWQgZnNlZWsgKi8KICAgICAgICAgICAgIGdvdG8gZmlsZV9lcnJvcjsKICAgICAgICAgZmlsZV9vZmZzZXQgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCkgKyBhcmNfb2Zmc2V0OwpAQCAtMTA3MywxMiArMTA3OCw4IEBACiAgICAgfQogCiAgICAgZnAgPSBfUHlfZm9wZW5fb2JqKGFyY2hpdmUsICJyYiIpOwotICAgIGlmICghZnApIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAiemlwaW1wb3J0OiBjYW4gbm90IG9wZW4gZmlsZSAlVSIsIGFyY2hpdmUpOworICAgIGlmICghZnApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIC8qIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgbG9jYWwgZmlsZSBoZWFkZXIgaXMgY29ycmVjdCAqLwogICAgIGlmIChmc2VlayhmcCwgZmlsZV9vZmZzZXQsIDApID09IC0xKSB7CkBAIC0xMzE1LDcgKzEzMTYsNyBAQAogICAgIHJldHVybiBta3RpbWUoJnN0bSk7CiB9CiAKLS8qIEdpdmVuIGEgcGF0aCB0byBhIC5weWMgb3IgLnB5byBmaWxlIGluIHRoZSBhcmNoaXZlLCByZXR1cm4gdGhlCisvKiBHaXZlbiBhIHBhdGggdG8gYSAucHljIGZpbGUgaW4gdGhlIGFyY2hpdmUsIHJldHVybiB0aGUKICAgIG1vZGlmaWNhdGlvbiB0aW1lIG9mIHRoZSBtYXRjaGluZyAucHkgZmlsZSwgb3IgMCBpZiBubyBzb3VyY2UKICAgIGlzIGF2YWlsYWJsZS4gKi8KIHN0YXRpYyB0aW1lX3QKQEAgLTE0NzgsMTcgKzE0NzksNiBAQAogICAgIC8qIENvcnJlY3QgZGlyZWN0b3J5IHNlcGFyYXRvciAqLwogICAgIHppcF9zZWFyY2hvcmRlclswXS5zdWZmaXhbMF0gPSBTRVA7CiAgICAgemlwX3NlYXJjaG9yZGVyWzFdLnN1ZmZpeFswXSA9IFNFUDsKLSAgICB6aXBfc2VhcmNob3JkZXJbMl0uc3VmZml4WzBdID0gU0VQOwotICAgIGlmIChQeV9PcHRpbWl6ZUZsYWcpIHsKLSAgICAgICAgLyogUmV2ZXJzZSAqLnB5YyBhbmQgKi5weW8gKi8KLSAgICAgICAgc3RydWN0IHN0X3ppcF9zZWFyY2hvcmRlciB0bXA7Ci0gICAgICAgIHRtcCA9IHppcF9zZWFyY2hvcmRlclswXTsKLSAgICAgICAgemlwX3NlYXJjaG9yZGVyWzBdID0gemlwX3NlYXJjaG9yZGVyWzFdOwotICAgICAgICB6aXBfc2VhcmNob3JkZXJbMV0gPSB0bXA7Ci0gICAgICAgIHRtcCA9IHppcF9zZWFyY2hvcmRlclszXTsKLSAgICAgICAgemlwX3NlYXJjaG9yZGVyWzNdID0gemlwX3NlYXJjaG9yZGVyWzRdOwotICAgICAgICB6aXBfc2VhcmNob3JkZXJbNF0gPSB0bXA7Ci0gICAgfQogCiAgICAgbW9kID0gUHlNb2R1bGVfQ3JlYXRlKCZ6aXBpbXBvcnRtb2R1bGUpOwogICAgIGlmIChtb2QgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggMGQyZTE4OC4uMTk5N2I0MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTgyLDEyICs4MiwxMSBAQAogfQogCiAvKltjbGluaWMgaW5wdXRdCi1vdXRwdXQgcHJlc2V0IGZpbGUKIG1vZHVsZSB6bGliCiBjbGFzcyB6bGliLkNvbXByZXNzICJjb21wb2JqZWN0ICoiICImQ29tcHR5cGUiCiBjbGFzcyB6bGliLkRlY29tcHJlc3MgImNvbXBvYmplY3QgKiIgIiZEZWNvbXB0eXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YmZkNGMzNDA1NzNiYTkxZF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MDkzOTM1MTE1YzNlMzE1OF0qLwogCiBzdGF0aWMgY29tcG9iamVjdCAqCiBuZXdjb21wb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKQEAgLTI4MSw4ICsyODAsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsIHVuc2lnbmVkIGludCBidWZzaXplKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllNTQ2NGU3MmRmOWNiNWYgaW5wdXQ9MGY0YjlhYmI3MTAzZjUwZV0qLworemxpYl9kZWNvbXByZXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDRkMDk4N2YzNDI5NTc0IGlucHV0PTBmNGI5YWJiNzEwM2Y1MGVdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0X3N0ciA9IE5VTEw7CiAgICAgQnl0ZSAqaW5wdXQ7CkBAIC00MTEsOCArNDExLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmpfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgbGV2ZWwsIGludCBtZXRob2QsIGludCB3Yml0cywgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODllNWE2YzE0NDljYWE5ZSBpbnB1dD1iMDM0ODQ3Zjg4MjFmNmFmXSovCit6bGliX2NvbXByZXNzb2JqX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGxldmVsLCBpbnQgbWV0aG9kLCBpbnQgd2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjk0OWJiYjlhNTcyM2NjZCBpbnB1dD1iMDM0ODQ3Zjg4MjFmNmFmXSovCiB7CiAgICAgY29tcG9iamVjdCAqc2VsZiA9IE5VTEw7CiAgICAgaW50IGVycjsKQEAgLTcwNCw4ICs3MDUsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1NWNjY2M5MDg3YmZlNTUgaW5wdXQ9MDJjZmMwNDczNzdjZWM4Nl0qLworemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhfbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI4MmUyYTJjMTlmNWZlN2IgaW5wdXQ9MDJjZmMwNDczNzdjZWM4Nl0qLwogewogICAgIGludCBlcnI7CiAgICAgdW5zaWduZWQgaW50IG9sZF9sZW5ndGgsIGxlbmd0aCA9IERFRl9CVUZfU0laRTsKZGlmZiAtLWdpdCBhL09iamVjdHMvUkVBRE1FIGIvT2JqZWN0cy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0YjEwMwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1NvdXJjZSBmaWxlcyBmb3IgdmFyaW91cyBidWlsdGluIG9iamVjdHMKZGlmZiAtLWdpdCBhL09iamVjdHMvYWJzdHJhY3QuYyBiL09iamVjdHMvYWJzdHJhY3QuYwppbmRleCBjYWJiYWY1Li4zMWNjMGE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2Fic3RyYWN0LmMKKysrIGIvT2JqZWN0cy9hYnN0cmFjdC5jCkBAIC0zMDUsNyArMzA1LDcgQEAKICAgICAgICAgcGItPmJmX2dldGJ1ZmZlciA9PSBOVUxMIHx8CiAgICAgICAgICgoKnBiLT5iZl9nZXRidWZmZXIpKG9iaiwgJnZpZXcsIFB5QlVGX1dSSVRBQkxFKSAhPSAwKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIG9iamVjdCB3aXRoIGEgd3JpdGFibGUgYnVmZmVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGEgd3JpdGFibGUgYnl0ZXMtbGlrZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMzI0LDcgKzMyNCw3IEBACiAKICAgICBpZiAocGIgPT0gTlVMTCB8fCBwYi0+YmZfZ2V0YnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICJhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMTAwcyciLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMzNywxNiArMzM3LDM1IEBACiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwogCi0gICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgcmV0dXJuIDE7Ci0gICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgcmV0dXJuICh2aWV3LT5uZGltID09IDEpOworICAgIC8qIDEpIGxlbiA9IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUKKyAgICAgICAyKSBpdGVtc2l6ZSA+IDAKKyAgICAgICAzKSBsZW4gPSAwIDw9PT4gZXhpc3RzIGk6IHNoYXBlW2ldID0gMCAqLworICAgIGlmICh2aWV3LT5sZW4gPT0gMCkgcmV0dXJuIDE7CisgICAgaWYgKHZpZXctPnN0cmlkZXMgPT0gTlVMTCkgeyAgLyogQy1jb250aWd1b3VzIGJ5IGRlZmluaXRpb24gKi8KKyAgICAgICAgLyogVHJpdmlhbGx5IEYtY29udGlndW91cyAqLworICAgICAgICBpZiAodmlldy0+bmRpbSA8PSAxKSByZXR1cm4gMTsKKworICAgICAgICAvKiBuZGltID4gMSBpbXBsaWVzIHNoYXBlICE9IE5VTEwgKi8KKyAgICAgICAgYXNzZXJ0KHZpZXctPnNoYXBlICE9IE5VTEwpOworCisgICAgICAgIC8qIEVmZmVjdGl2ZWx5IDEtZCAqLworICAgICAgICBzZCA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpPHZpZXctPm5kaW07IGkrKykgeworICAgICAgICAgICAgaWYgKHZpZXctPnNoYXBlW2ldID4gMSkgc2QgKz0gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2QgPD0gMTsKKyAgICB9CisKKyAgICAvKiBzdHJpZGVzICE9IE5VTEwgaW1wbGllcyBib3RoIG9mIHRoZXNlICovCisgICAgYXNzZXJ0KHZpZXctPm5kaW0gPiAwKTsKKyAgICBhc3NlcnQodmlldy0+c2hhcGUgIT0gTlVMTCk7CiAKICAgICBzZCA9IHZpZXctPml0ZW1zaXplOwotICAgIGlmICh2aWV3LT5uZGltID09IDEpIHJldHVybiAodmlldy0+c2hhcGVbMF0gPT0gMSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkID09IHZpZXctPnN0cmlkZXNbMF0pOwogICAgIGZvciAoaT0wOyBpPHZpZXctPm5kaW07IGkrKykgewogICAgICAgICBkaW0gPSB2aWV3LT5zaGFwZVtpXTsKLSAgICAgICAgaWYgKGRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICAgICAgaWYgKHZpZXctPnN0cmlkZXNbaV0gIT0gc2QpIHJldHVybiAwOworICAgICAgICBpZiAoZGltID4gMSAmJiB2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgICAgICBzZCAqPSBkaW07CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMzU4LDE2ICszNzcsMjIgQEAKICAgICBQeV9zc2l6ZV90IHNkLCBkaW07CiAgICAgaW50IGk7CiAKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSByZXR1cm4gMTsKLSAgICBpZiAodmlldy0+c3RyaWRlcyA9PSBOVUxMKSByZXR1cm4gMTsKKyAgICAvKiAxKSBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplCisgICAgICAgMikgaXRlbXNpemUgPiAwCisgICAgICAgMykgbGVuID0gMCA8PT0+IGV4aXN0cyBpOiBzaGFwZVtpXSA9IDAgKi8KKyAgICBpZiAodmlldy0+bGVuID09IDApIHJldHVybiAxOworICAgIGlmICh2aWV3LT5zdHJpZGVzID09IE5VTEwpIHJldHVybiAxOyAvKiBDLWNvbnRpZ3VvdXMgYnkgZGVmaW5pdGlvbiAqLworCisgICAgLyogc3RyaWRlcyAhPSBOVUxMIGltcGxpZXMgYm90aCBvZiB0aGVzZSAqLworICAgIGFzc2VydCh2aWV3LT5uZGltID4gMCk7CisgICAgYXNzZXJ0KHZpZXctPnNoYXBlICE9IE5VTEwpOwogCiAgICAgc2QgPSB2aWV3LT5pdGVtc2l6ZTsKLSAgICBpZiAodmlldy0+bmRpbSA9PSAxKSByZXR1cm4gKHZpZXctPnNoYXBlWzBdID09IDEgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZCA9PSB2aWV3LT5zdHJpZGVzWzBdKTsKICAgICBmb3IgKGk9dmlldy0+bmRpbS0xOyBpPj0wOyBpLS0pIHsKICAgICAgICAgZGltID0gdmlldy0+c2hhcGVbaV07Ci0gICAgICAgIGlmIChkaW0gPT0gMCkgcmV0dXJuIDE7Ci0gICAgICAgIGlmICh2aWV3LT5zdHJpZGVzW2ldICE9IHNkKSByZXR1cm4gMDsKKyAgICAgICAgaWYgKGRpbSA+IDEgJiYgdmlldy0+c3RyaWRlc1tpXSAhPSBzZCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgc2QgKj0gZGltOwogICAgIH0KICAgICByZXR1cm4gMTsKQEAgLTQ5OSw4ICs1MjQsOCBAQAogICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIoZGVzdCkgfHwKICAgICAgICAgIVB5T2JqZWN0X0NoZWNrQnVmZmVyKHNyYykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbXVzdCBoYXZlIHRoZSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJib3RoIGRlc3RpbmF0aW9uIGFuZCBzb3VyY2UgbXVzdCBiZSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC01ODcsNyArNjEyLDEyIEBACiBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9ubHksIGludCBmbGFncykKIHsKLSAgICBpZiAodmlldyA9PSBOVUxMKSByZXR1cm4gMDsgLyogWFhYIHdoeSBub3QgLTE/ICovCisgICAgaWYgKHZpZXcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAiUHlCdWZmZXJfRmlsbEluZm86IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGlmICgoKGZsYWdzICYgUHlCVUZfV1JJVEFCTEUpID09IFB5QlVGX1dSSVRBQkxFKSAmJgogICAgICAgICAocmVhZG9ubHkgPT0gMSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLApAQCAtNjYwLDggKzY5MCw5IEBACiAgICAgUHlfREVDUkVGKG1ldGgpOwogCiAgICAgaWYgKHJlc3VsdCAmJiAhUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJfX2Zvcm1hdF9fIG1ldGhvZCBkaWQgbm90IHJldHVybiBzdHJpbmciKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAiX19mb3JtYXRfXyBtdXN0IHJldHVybiBhIHN0ciwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgICAgIGdvdG8gZG9uZTsKQEAgLTkwNSw2ICs5MzYsMTIgQEAKIH0KIAogUHlPYmplY3QgKgorUHlOdW1iZXJfTWF0cml4TXVsdGlwbHkoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIHJldHVybiBiaW5hcnlfb3AodiwgdywgTkJfU0xPVChuYl9tYXRyaXhfbXVsdGlwbHkpLCAiQCIpOworfQorCitQeU9iamVjdCAqCiBQeU51bWJlcl9GbG9vckRpdmlkZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCiB7CiAgICAgcmV0dXJuIGJpbmFyeV9vcCh2LCB3LCBOQl9TTE9UKG5iX2Zsb29yX2RpdmlkZSksICIvLyIpOwpAQCAtOTg1LDYgKzEwMjIsNyBAQAogSU5QTEFDRV9CSU5PUChQeU51bWJlcl9JblBsYWNlTHNoaWZ0LCBuYl9pbnBsYWNlX2xzaGlmdCwgbmJfbHNoaWZ0LCAiPDw9IikKIElOUExBQ0VfQklOT1AoUHlOdW1iZXJfSW5QbGFjZVJzaGlmdCwgbmJfaW5wbGFjZV9yc2hpZnQsIG5iX3JzaGlmdCwgIj4+PSIpCiBJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdCwgbmJfaW5wbGFjZV9zdWJ0cmFjdCwgbmJfc3VidHJhY3QsICItPSIpCitJTlBMQUNFX0JJTk9QKFB5TnVtYmVyX0luTWF0cml4TXVsdGlwbHksIG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5LCBuYl9tYXRyaXhfbXVsdGlwbHksICJAPSIpCiAKIFB5T2JqZWN0ICoKIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCkBAIC0xMDUxLDYgKzEwODksMTMgQEAKIH0KIAogUHlPYmplY3QgKgorUHlOdW1iZXJfSW5QbGFjZU1hdHJpeE11bHRpcGx5KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICByZXR1cm4gYmluYXJ5X2lvcCh2LCB3LCBOQl9TTE9UKG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5KSwKKyAgICAgICAgICAgICAgICAgICAgICBOQl9TTE9UKG5iX21hdHJpeF9tdWx0aXBseSksICJAPSIpOworfQorCitQeU9iamVjdCAqCiBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKIHsKICAgICByZXR1cm4gYmluYXJ5X2lvcCh2LCB3LCBOQl9TTE9UKG5iX2lucGxhY2VfcmVtYWluZGVyKSwKQEAgLTIwMjgsMzIgKzIwNzMsODIgQEAKICAgICByZXR1cm4gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMobywgYSwgTlVMTCk7CiB9CiAKK1B5T2JqZWN0KgorX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpyZXN1bHQsIGNvbnN0IGNoYXIgKndoZXJlKQoreworICAgIGludCBlcnJfb2NjdXJyZWQgPSAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKTsKKworICAgIGFzc2VydCgoZnVuYyAhPSBOVUxMKSBeICh3aGVyZSAhPSBOVUxMKSk7CisKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFlcnJfb2NjdXJyZWQpIHsKKyAgICAgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIHJldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgcmV0dXJuZWQgTlVMTCB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBidWcgaXMgY2F0Y2hlZCBpbiBkZWJ1ZyBtb2RlICovCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJhIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwgd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yIik7CisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZXJyX29jY3VycmVkKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworCisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKworICAgICAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKKyAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZyBpcyBjYXRjaGVkIGluIGRlYnVnIG1vZGUgKi8KKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImEgZnVuY3Rpb24gcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiKTsKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQogewogICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICgoY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGwpICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKLSAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7Ci0jaWZkZWYgTkRFQlVHCi0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgICAgIFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICJOVUxMIHJlc3VsdCB3aXRob3V0IGVycm9yIGluIFB5T2JqZWN0X0NhbGwiKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgYXNzZXJ0KChyZXN1bHQgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICB8fCAocmVzdWx0ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwotI2VuZGlmCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgLyogUHlPYmplY3RfQ2FsbCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9vc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CisgICAgaWYgKGNhbGwgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlIiwKLSAgICAgICAgICAgICAgICAgZnVuYy0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZywga3cpOworCisgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CisKKyAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMjQ5Miw2ICsyNTg3LDExIEBACiAgICAgaWYgKFB5X1RZUEUoaW5zdCkgPT0gKFB5VHlwZU9iamVjdCAqKWNscykKICAgICAgICAgcmV0dXJuIDE7CiAKKyAgICAvKiBXZSBrbm93IHdoYXQgdHlwZSdzIF9faW5zdGFuY2VjaGVja19fIGRvZXMuICovCisgICAgaWYgKFB5VHlwZV9DaGVja0V4YWN0KGNscykpIHsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc2luc3RhbmNlKGluc3QsIGNscyk7CisgICAgfQorCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soY2xzKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X3NzaXplX3QgbjsKQEAgLTI1MzAsNiArMjYzMCw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBQcm9iYWJseSBuZXZlciByZWFjaGVkIGFueW1vcmUuICovCiAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc2luc3RhbmNlKGluc3QsIGNscyk7CiB9CiAKQEAgLTI1NTcsNiArMjY1OCwxNCBAQAogICAgIF9QeV9JREVOVElGSUVSKF9fc3ViY2xhc3NjaGVja19fKTsKICAgICBQeU9iamVjdCAqY2hlY2tlcjsKIAorICAgIC8qIFdlIGtub3cgd2hhdCB0eXBlJ3MgX19zdWJjbGFzc2NoZWNrX18gZG9lcy4gKi8KKyAgICBpZiAoUHlUeXBlX0NoZWNrRXhhY3QoY2xzKSkgeworICAgICAgICAvKiBRdWljayB0ZXN0IGZvciBhbiBleGFjdCBtYXRjaCAqLworICAgICAgICBpZiAoZGVyaXZlZCA9PSBjbHMpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc3N1YmNsYXNzKGRlcml2ZWQsIGNscyk7CisgICAgfQorCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soY2xzKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X3NzaXplX3QgbjsKQEAgLTI1OTUsNiArMjcwNCw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBQcm9iYWJseSBuZXZlciByZWFjaGVkIGFueW1vcmUuICovCiAgICAgcmV0dXJuIHJlY3Vyc2l2ZV9pc3N1YmNsYXNzKGRlcml2ZWQsIGNscyk7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDE1YzUyNWMuLjU2NDdiNTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtNCw2ICs0LDEzIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgImJ5dGVzb2JqZWN0LmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKworLypbY2xpbmljIGlucHV0XQorY2xhc3MgYnl0ZWFycmF5ICJQeUJ5dGVBcnJheU9iamVjdCAqIiAiJlB5Qnl0ZUFycmF5X1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01NTM1Yjc3YzM3YTExOWUwXSovCiAKIGNoYXIgX1B5Qnl0ZUFycmF5X2VtcHR5X3N0cmluZ1tdID0gIiI7CiAKQEAgLTU0LDE4ICs2MSwxNyBAQAogc3RhdGljIGludAogYnl0ZWFycmF5X2dldGJ1ZmZlcihQeUJ5dGVBcnJheU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKLSAgICBpbnQgcmV0OwogICAgIHZvaWQgKnB0cjsKICAgICBpZiAodmlldyA9PSBOVUxMKSB7Ci0gICAgICAgIG9iai0+b2JfZXhwb3J0cysrOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImJ5dGVhcnJheV9nZXRidWZmZXI6IHZpZXc9PU5VTEwgYXJndW1lbnQgaXMgb2Jzb2xldGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwdHIgPSAodm9pZCAqKSBQeUJ5dGVBcnJheV9BU19TVFJJTkcob2JqKTsKLSAgICByZXQgPSBQeUJ1ZmZlcl9GaWxsSW5mbyh2aWV3LCAoUHlPYmplY3QqKW9iaiwgcHRyLCBQeV9TSVpFKG9iaiksIDAsIGZsYWdzKTsKLSAgICBpZiAocmV0ID49IDApIHsKLSAgICAgICAgb2JqLT5vYl9leHBvcnRzKys7Ci0gICAgfQotICAgIHJldHVybiByZXQ7CisgICAgLyogY2Fubm90IGZhaWwgaWYgdmlldyAhPSBOVUxMIGFuZCByZWFkb25seSA9PSAwICovCisgICAgKHZvaWQpUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIHB0ciwgUHlfU0laRShvYmopLCAwLCBmbGFncyk7CisgICAgb2JqLT5vYl9leHBvcnRzKys7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04NSw2ICs5MSw4IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKyNpbmNsdWRlICJjbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCIKKwogLyogRGlyZWN0IEFQSSBmdW5jdGlvbnMgKi8KIAogUHlPYmplY3QgKgpAQCAtMjcxLDYgKzI3OSwzMSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfZm9ybWF0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqYnl0ZXNfaW4sICpieXRlc19vdXQsICpyZXM7CisgICAgY2hhciAqYnl0ZXN0cmluZzsKKworICAgIGlmIChzZWxmID09IE5VTEwgfHwgIVB5Qnl0ZUFycmF5X0NoZWNrKHNlbGYpIHx8IGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGJ5dGVzdHJpbmcgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CisgICAgYnl0ZXNfaW4gPSBQeUJ5dGVzX0Zyb21TdHJpbmcoYnl0ZXN0cmluZyk7CisgICAgaWYgKGJ5dGVzX2luID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGJ5dGVzX291dCA9IF9QeUJ5dGVzX0Zvcm1hdChieXRlc19pbiwgYXJncyk7CisgICAgUHlfREVDUkVGKGJ5dGVzX2luKTsKKyAgICBpZiAoYnl0ZXNfb3V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3QoYnl0ZXNfb3V0KTsKKyAgICBQeV9ERUNSRUYoYnl0ZXNfb3V0KTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXM7Cit9CisKIC8qIEZ1bmN0aW9ucyBzdHVmZmVkIGludG8gdGhlIHR5cGUgb2JqZWN0ICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC00MjUsNyArNDU4LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlYXJyYXkgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGluZGV4KS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIH0KQEAgLTYzMCw3ICs2NjUsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VyIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYnl0ZWFycmF5IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaW5kZXgpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMTExMCw3ICsxMTQ3LDcgQEAKICAgICBjaGFyIGJ5dGU7CiAgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKICAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0xMTI5LDE1ICsxMTY2LDM0IEBACiAgICAgICAgIHN1YiA9ICZieXRlOwogICAgICAgICBzdWJfbGVuID0gMTsKICAgICB9CisgICAgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7CiAKLSAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKKyAgICAgICAgcmVzID0gLTE7CisgICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCisjaWZuZGVmIEhBVkVfTUVNUkNIUgorICAgICAgICAgICAgJiYgZGlyID4gMAorI2VuZGlmCisgICAgKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKKyAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKKyAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAorICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIG1vZGUpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIH0KIAogICAgIGlmIChzdWJvYmopCiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CkBAIC0xMjEwLDI2ICsxMjY2LDM0IEBACiAgICAgcmV0dXJuIGNvdW50X29iajsKIH0KIAotUHlEb2NfU1RSVkFSKGNsZWFyX19kb2NfXywKLSJCLmNsZWFyKCkgLT4gTm9uZVxuXAotXG5cCi1SZW1vdmUgYWxsIGl0ZW1zIGZyb20gQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5jbGVhcgorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfY2xlYXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfY2xlYXJfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWU1MjRmZDMzMGFiY2RjMThdKi8KIHsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3B5X19kb2NfXywKLSJCLmNvcHkoKSAtPiBieXRlYXJyYXlcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmNvcHkKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisKK1JldHVybiBhIGNvcHkgb2YgQi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9jb3B5KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorYnl0ZWFycmF5X2NvcHlfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OGNmYmNmZWQ0ODRjMTMyIGlucHV0PTZkNWQyOTc1YWEwZjMzZjNdKi8KIHsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKChQeU9iamVjdCAqKXNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7CkBAIC0xNDQ4LDM2ICsxNTEyLDQyIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHRyYW5zbGF0ZV9fZG9jX18sCi0iQi50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1SZXR1cm4gYSBjb3B5IG9mIEIsIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGVcblwKLW9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZ1xuXAotY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uXG5cCi10YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnRyYW5zbGF0ZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKyAgICB0YWJsZTogb2JqZWN0CisgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCisgICAgWworICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKKyAgICBdCisgICAgLworCitSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KKworQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK1RoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiZWJjODZhOWExZmYwODMgaW5wdXQ9Yjc0OWFkODVmNDg2MDgyNF0qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwotICAgIGNvbnN0IGNoYXIgKnRhYmxlOworICAgIGNvbnN0IGNoYXIgKnRhYmxlX2NoYXJzOwogICAgIFB5X3NzaXplX3QgaSwgYzsKICAgICBQeU9iamVjdCAqaW5wdXRfb2JqID0gKFB5T2JqZWN0KilzZWxmOwogICAgIGNvbnN0IGNoYXIgKm91dHB1dF9zdGFydDsKICAgICBQeV9zc2l6ZV90IGlubGVuOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCB0cmFuc190YWJsZVsyNTZdOwotICAgIFB5T2JqZWN0ICp0YWJsZW9iaiA9IE5VTEwsICpkZWxvYmogPSBOVUxMOwogICAgIFB5X2J1ZmZlciB2dGFibGUsIHZkZWw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cmFuc2xhdGUiLCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhYmxlb2JqLCAmZGVsb2JqKSkKLSAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmICh0YWJsZW9iaiA9PSBQeV9Ob25lKSB7CisgICAgaWYgKHRhYmxlID09IFB5X05vbmUpIHsKKyAgICAgICAgdGFibGVfY2hhcnMgPSBOVUxMOwogICAgICAgICB0YWJsZSA9IE5VTEw7Ci0gICAgICAgIHRhYmxlb2JqID0gTlVMTDsKLSAgICB9IGVsc2UgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih0YWJsZW9iaiwgJnZ0YWJsZSwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgfSBlbHNlIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodGFibGUsICZ2dGFibGUsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAodnRhYmxlLmxlbiAhPSAyNTYpIHsKQEAgLTE0ODYsMTIgKzE1NTYsMTIgQEAKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZ0YWJsZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICB0YWJsZSA9IChjb25zdCBjaGFyKil2dGFibGUuYnVmOworICAgICAgICB0YWJsZV9jaGFycyA9IChjb25zdCBjaGFyKil2dGFibGUuYnVmOwogICAgIH0KIAotICAgIGlmIChkZWxvYmogIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbG9iaiwgJnZkZWwsIFB5QlVGX1NJTVBMRSkgIT0gMCkgewotICAgICAgICAgICAgaWYgKHRhYmxlb2JqICE9IE5VTEwpCisgICAgaWYgKGRlbGV0ZWNoYXJzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihkZWxldGVjaGFycywgJnZkZWwsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICAgICAgaWYgKHRhYmxlICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnRhYmxlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNTA4LDIxICsxNTc4LDIxIEBACiAgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhpbnB1dF9vYmopOwogCi0gICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGUgIT0gTlVMTCkgeworICAgIGlmICh2ZGVsLmxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKICAgICAgICAgLyogSWYgbm8gZGVsZXRpb25zIGFyZSByZXF1aXJlZCwgdXNlIGZhc3RlciBjb2RlICovCiAgICAgICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwotICAgICAgICAgICAgKm91dHB1dCsrID0gdGFibGVbY107CisgICAgICAgICAgICAqb3V0cHV0KysgPSB0YWJsZV9jaGFyc1tjXTsKICAgICAgICAgfQogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKHRhYmxlID09IE5VTEwpIHsKKyAgICBpZiAodGFibGVfY2hhcnMgPT0gTlVMTCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKGkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKLSAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0sodGFibGVbaV0pOworICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZV9jaGFyc1tpXSk7CiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHZkZWwubGVuOyBpKyspCkBAIC0xNTQyLDE4ICsxNjEyLDM2IEBACiAgICAgICAgIH0KIAogZG9uZToKLSAgICBpZiAodGFibGVvYmogIT0gTlVMTCkKKyAgICBpZiAodGFibGUgIT0gTlVMTCkKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnRhYmxlKTsKLSAgICBpZiAoZGVsb2JqICE9IE5VTEwpCisgICAgaWYgKGRlbGV0ZWNoYXJzICE9IE5VTEwpCiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZkZWwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIAorLypbY2xpbmljIGlucHV0XQorCitAc3RhdGljbWV0aG9kCitieXRlYXJyYXkubWFrZXRyYW5zCisKKyAgICBmcm06IFB5X2J1ZmZlcgorICAgIHRvOiBQeV9idWZmZXIKKyAgICAvCisKK1JldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC4KKworVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0Cit0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by4KKworVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKFB5X2J1ZmZlciAqZnJtLCBQeV9idWZmZXIgKnRvKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkZjI2N2Q5OWY1NmIxNWUgaW5wdXQ9NTkyNWE4MWQyZmJiZjE1MV0qLwogewotICAgICAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhhcmdzKTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX21ha2V0cmFucyhmcm0sIHRvKTsKIH0KIAogCkBAIC0yMDQ0LDYxICsyMTMyLDYzIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHJlcGxhY2VfX2RvY19fLAotIkIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSkgLT4gYnl0ZWFycmF5XG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uXG5cCi1vbGQgcmVwbGFjZWQgYnkgbmV3LiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzXG5cCi1naXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJlcGxhY2UKKworICAgIG9sZDogUHlfYnVmZmVyCisgICAgbmV3OiBQeV9idWZmZXIKKyAgICBjb3VudDogUHlfc3NpemVfdCA9IC0xCisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIG9jY3VycmVuY2VzIHRvIHJlcGxhY2UuCisgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMuCisgICAgLworCitSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LgorCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZQorcmVwbGFjZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVwbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcmVwbGFjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM5ODg0YzRkYzU5NDEyYSBpbnB1dD1hYTM3OWQ5ODg2MzdjN2ZiXSovCiB7Ci0gICAgUHlPYmplY3QgKnJlczsKLSAgICBQeV9idWZmZXIgb2xkID0ge05VTEwsIE5VTEx9OwotICAgIFB5X2J1ZmZlciBuZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsICZvbGQsICZuZXcsICZjb3VudCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlQXJyYXlPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLmJ1Ziwgb2xkLmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LmJ1ZiwgbmV3LmxlbiwgY291bnQpOwotCi0gICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZUFycmF5T2JqZWN0ICopIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCi1QeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKLVxuXAotUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG5cCi1JZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXAotKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG5cCi1JZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuc3BsaXQKKworICAgIHNlcDogb2JqZWN0ID0gTm9uZQorICAgICAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LgorICAgICAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisgICAgICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLgorICAgIG1heHNwbGl0OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LgorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorYnl0ZWFycmF5X3NwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgzM2UyY2YzODVkOWEwNGQgaW5wdXQ9MjRmODI2NjlmNDFiZjUyM10qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgbjsKLSAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeU9iamVjdCAqbGlzdCwgKnN1Ym9iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmxpc3Q7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnNwbGl0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJvYmosICZtYXhzcGxpdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChtYXhzcGxpdCA8IDApCiAgICAgICAgIG1heHNwbGl0ID0gUFlfU1NJWkVfVF9NQVg7CiAKLSAgICBpZiAoc3Vib2JqID09IFB5X05vbmUpCisgICAgaWYgKHNlcCA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0X3doaXRlc3BhY2UoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBtYXhzcGxpdCk7CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3ViID0gdnN1Yi5idWY7CiAgICAgbiA9IHZzdWIubGVuOwpAQCAtMjExMCwxOSArMjIwMCwzMCBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1QeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKLSJCLnBhcnRpdGlvbihzZXApIC0+IChoZWFkLCBzZXAsIHRhaWwpXG5cCi1cblwKLVNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gQiwgYW5kIHJldHVybiB0aGUgcGFydCBiZWZvcmUgaXQsXG5cCi10aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcblwKLWZvdW5kLCByZXR1cm5zIEIgYW5kIHR3byBlbXB0eSBieXRlYXJyYXkgb2JqZWN0cy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5wYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgc2VwOiBvYmplY3QKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZWFycmF5IGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci4KKworVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVhcnJheS4gSWYgdGhlIHNlcGFyYXRvciBpcworZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZQorc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgorCitJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWwKK2J5dGVhcnJheSBvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlYXJyYXkgb2JqZWN0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9wYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBfb2JqKQorYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTdkN2ZlMzdiMTY5NmQ1MDZdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIAotICAgIGJ5dGVzZXAgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KHNlcF9vYmopOworICAgIGJ5dGVzZXAgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KHNlcCk7CiAgICAgaWYgKCEgYnl0ZXNlcCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTIxMzcsMjAgKzIyMzgsMzAgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCi0iQi5ycGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIsXG5cCi1hbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGVcblwKLXBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyB0d28gZW1wdHlcblwKLWJ5dGVhcnJheSBvYmplY3RzIGFuZCBCLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJwYXJ0aXRpb24KKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgc2VwOiBvYmplY3QKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LCBzdGFydGluZyBhbmQgdGhlIGVuZC4KK0lmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZQorc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LgorCitJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZWFycmF5CitvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZWFycmF5IG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9ycGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwX29iaikKK2J5dGVhcnJheV9ycGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0MGRlM2M5NDI2MTE1ZTggaW5wdXQ9OWI4Y2Q1NDBjMWI3NTg1M10qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCi0gICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwX29iaik7CisgICAgYnl0ZXNlcCA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Qoc2VwKTsKICAgICBpZiAoISBieXRlc2VwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjE2NSwzNSArMjI3NiwzMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBieXRlYXJyYXlzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLFxuXAotc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiBCIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC5cblwKLUlmIHNlcCBpcyBub3QgZ2l2ZW4sIEIgaXMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG5cCi0oc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cblwKLUlmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5yc3BsaXQgPSBieXRlYXJyYXkuc3BsaXQKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVhcnJheSwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuCisKK1NwbGl0dGluZyBpcyBkb25lIHN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheSBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCitieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNTVlMGI1YTAzY2I2MTkwIGlucHV0PWE2ODI4NmU0ZGQ2OTJmZmVdKi8KIHsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIG47Ci0gICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsaXN0OwogICAgIFB5X2J1ZmZlciB2c3ViOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBtYXhzcGxpdCk7CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3ViID0gdnN1Yi5idWY7CiAgICAgbiA9IHZzdWIubGVuOwpAQCAtMjIwNSwxMiArMjMxMiwxNyBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1QeURvY19TVFJWQVIocmV2ZXJzZV9fZG9jX18sCi0iQi5yZXZlcnNlKCkgLT4gTm9uZVxuXAotXG5cCi1SZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucmV2ZXJzZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHZhbHVlcyBpbiBCIGluIHBsYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JldmVyc2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCitieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NzkzM2E0OTliODU5N2JkMV0qLwogewogICAgIGNoYXIgc3dhcCwgKmhlYWQsICp0YWlsOwogICAgIFB5X3NzaXplX3QgaSwgaiwgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yMjI3LDU3ICsyMzM5LDc0IEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihpbnNlcnRfX2RvY19fLAotIkIuaW5zZXJ0KGluZGV4LCBpbnQpIC0+IE5vbmVcblwKLVxuXAotSW5zZXJ0IGEgc2luZ2xlIGl0ZW0gaW50byB0aGUgYnl0ZWFycmF5IGJlZm9yZSB0aGUgZ2l2ZW4gaW5kZXguIik7Ci1zdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2luc2VydChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnZhbHVlOwotICAgIGludCBpdmFsOwotICAgIFB5X3NzaXplX3Qgd2hlcmUsIG4gPSBQeV9TSVpFKHNlbGYpOwotICAgIGNoYXIgKmJ1ZjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwgJndoZXJlLCAmdmFsdWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGJ5dGVzdmFsdWVfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaW50JworICAgIGNvbnZlcnRlciA9ICdfZ2V0Ynl0ZXZhbHVlJworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MjljMmU3YzI2YzIxMjgxMl0qLworCisKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5pbnNlcnQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaW5kZXg6IFB5X3NzaXplX3QKKyAgICAgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC4KKyAgICBpdGVtOiBieXRlc3ZhbHVlCisgICAgICAgIFRoZSBpdGVtIHRvIGJlIGluc2VydGVkLgorICAgIC8KKworSW5zZXJ0IGEgc2luZ2xlIGl0ZW0gaW50byB0aGUgYnl0ZWFycmF5IGJlZm9yZSB0aGUgZ2l2ZW4gaW5kZXguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfaW5zZXJ0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsIGludCBpdGVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9ODMzNzY2ODM2YmEzMGUxZV0qLworeworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgY2hhciAqYnVmOwogCiAgICAgaWYgKG4gPT0gUFlfU1NJWkVfVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBtb3JlIG9iamVjdHMgdG8gYnl0ZWFycmF5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoIV9nZXRieXRldmFsdWUodmFsdWUsICZpdmFsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuICsgMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAKLSAgICBpZiAod2hlcmUgPCAwKSB7Ci0gICAgICAgIHdoZXJlICs9IG47Ci0gICAgICAgIGlmICh3aGVyZSA8IDApCi0gICAgICAgICAgICB3aGVyZSA9IDA7CisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBpbmRleCArPSBuOworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOwogICAgIH0KLSAgICBpZiAod2hlcmUgPiBuKQotICAgICAgICB3aGVyZSA9IG47Ci0gICAgbWVtbW92ZShidWYgKyB3aGVyZSArIDEsIGJ1ZiArIHdoZXJlLCBuIC0gd2hlcmUpOwotICAgIGJ1Zlt3aGVyZV0gPSBpdmFsOworICAgIGlmIChpbmRleCA+IG4pCisgICAgICAgIGluZGV4ID0gbjsKKyAgICBtZW1tb3ZlKGJ1ZiArIGluZGV4ICsgMSwgYnVmICsgaW5kZXgsIG4gLSBpbmRleCk7CisgICAgYnVmW2luZGV4XSA9IGl0ZW07CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotUHlEb2NfU1RSVkFSKGFwcGVuZF9fZG9jX18sCi0iQi5hcHBlbmQoaW50KSAtPiBOb25lXG5cCi1cblwKLUFwcGVuZCBhIHNpbmdsZSBpdGVtIHRvIHRoZSBlbmQgb2YgQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5hcHBlbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaXRlbTogYnl0ZXN2YWx1ZQorICAgICAgICBUaGUgaXRlbSB0byBiZSBhcHBlbmRlZC4KKyAgICAvCisKK0FwcGVuZCBhIHNpbmdsZSBpdGVtIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVhcnJheS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9hcHBlbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCitieXRlYXJyYXlfYXBwZW5kX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBpdGVtKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9YWU1NmVhODczODA0MDdjY10qLwogewotICAgIGludCB2YWx1ZTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogCi0gICAgaWYgKCEgX2dldGJ5dGV2YWx1ZShhcmcsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChuID09IFBZX1NTSVpFX1RfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBvYmplY3RzIHRvIGJ5dGVhcnJheSIpOwpAQCAtMjI4NiwxOCArMjQxNSwyNSBAQAogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgbiArIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZilbbl0gPSB2YWx1ZTsKKyAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZilbbl0gPSBpdGVtOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihleHRlbmRfX2RvY19fLAotIkIuZXh0ZW5kKGl0ZXJhYmxlX29mX2ludHMpIC0+IE5vbmVcblwKLVxuXAotQXBwZW5kIGFsbCB0aGUgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmF0b3Igb3Igc2VxdWVuY2UgdG8gdGhlXG5cCi1lbmQgb2YgQi4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5leHRlbmQKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCisgICAgaXRlcmFibGVfb2ZfaW50czogb2JqZWN0CisgICAgICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuCisgICAgLworCitBcHBlbmQgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2V4dGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2ludHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jZTgzYTVkNzViNzBkODUwXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbSwgKmJ5dGVhcnJheV9vYmo7CiAgICAgUHlfc3NpemVfdCBidWZfc2l6ZSA9IDAsIGxlbiA9IDA7CkBAIC0yMzA1LDE5ICsyNDQxLDE5IEBACiAgICAgY2hhciAqYnVmOwogCiAgICAgLyogYnl0ZWFycmF5X3NldHNsaWNlIGNvZGUgb25seSBhY2NlcHRzIHNvbWV0aGluZyBzdXBwb3J0aW5nIFBFUCAzMTE4LiAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpKSB7Ci0gICAgICAgIGlmIChieXRlYXJyYXlfc2V0c2xpY2Uoc2VsZiwgUHlfU0laRShzZWxmKSwgUHlfU0laRShzZWxmKSwgYXJnKSA9PSAtMSkKKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoaXRlcmFibGVfb2ZfaW50cykpIHsKKyAgICAgICAgaWYgKGJ5dGVhcnJheV9zZXRzbGljZShzZWxmLCBQeV9TSVpFKHNlbGYpLCBQeV9TSVpFKHNlbGYpLCBpdGVyYWJsZV9vZl9pbnRzKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihhcmcpOworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZV9vZl9pbnRzKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlIGFyZ3VtZW50LiAzMiBpcyBhcmJpdHJhcnkuICovCi0gICAgYnVmX3NpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KGFyZywgMzIpOworICAgIGJ1Zl9zaXplID0gUHlPYmplY3RfTGVuZ3RoSGludChpdGVyYWJsZV9vZl9pbnRzLCAzMik7CiAgICAgaWYgKGJ1Zl9zaXplID09IC0xKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjM2OSwyOSArMjUwNSwzNiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIocG9wX19kb2NfXywKLSJCLnBvcChbaW5kZXhdKSAtPiBpbnRcblwKLVxuXAotUmVtb3ZlIGFuZCByZXR1cm4gYSBzaW5nbGUgaXRlbSBmcm9tIEIuIElmIG5vIGluZGV4XG5cCi1hcmd1bWVudCBpcyBnaXZlbiwgd2lsbCBwb3AgdGhlIGxhc3QgdmFsdWUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucG9wCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIGluZGV4OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLgorICAgIC8KKworUmVtb3ZlIGFuZCByZXR1cm4gYSBzaW5nbGUgaXRlbSBmcm9tIEIuCisKK0lmIG5vIGluZGV4IGFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCBpdGVtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3BvcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcG9wX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0wNzk3ZTZjMGNhOWQ1YTg1XSovCiB7CiAgICAgaW50IHZhbHVlOwotICAgIFB5X3NzaXplX3Qgd2hlcmUgPSAtMSwgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsICZ3aGVyZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKG4gPT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3AgZnJvbSBlbXB0eSBieXRlYXJyYXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICh3aGVyZSA8IDApCi0gICAgICAgIHdoZXJlICs9IFB5X1NJWkUoc2VsZik7Ci0gICAgaWYgKHdoZXJlIDwgMCB8fCB3aGVyZSA+PSBQeV9TSVpFKHNlbGYpKSB7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggKz0gUHlfU0laRShzZWxmKTsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5X1NJWkUoc2VsZikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJwb3AgaW5kZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIzOTksMjggKzI1NDIsMzIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgdmFsdWUgPSBidWZbd2hlcmVdOwotICAgIG1lbW1vdmUoYnVmICsgd2hlcmUsIGJ1ZiArIHdoZXJlICsgMSwgbiAtIHdoZXJlKTsKKyAgICB2YWx1ZSA9IGJ1ZltpbmRleF07CisgICAgbWVtbW92ZShidWYgKyBpbmRleCwgYnVmICsgaW5kZXggKyAxLCBuIC0gaW5kZXgpOwogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgbiAtIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKCh1bnNpZ25lZCBjaGFyKXZhbHVlKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlbW92ZV9fZG9jX18sCi0iQi5yZW1vdmUoaW50KSAtPiBOb25lXG5cCi1cblwKLVJlbW92ZSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHZhbHVlIGluIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkucmVtb3ZlCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIHZhbHVlOiBieXRlc3ZhbHVlCisgICAgICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuCisgICAgLworCitSZW1vdmUgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSB2YWx1ZSBpbiB0aGUgYnl0ZWFycmF5LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JlbW92ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK2J5dGVhcnJheV9yZW1vdmVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9NDc1NjBiMTFmZDg1NmMyNF0qLwogewotICAgIGludCB2YWx1ZTsKICAgICBQeV9zc2l6ZV90IHdoZXJlLCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAKLSAgICBpZiAoISBfZ2V0Ynl0ZXZhbHVlKGFyZywgJnZhbHVlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBmb3IgKHdoZXJlID0gMDsgd2hlcmUgPCBuOyB3aGVyZSsrKSB7CiAgICAgICAgIGlmIChidWZbd2hlcmVdID09IHZhbHVlKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNDYxLDEzMiArMjYwOCwxNDUgQEAKICAgICByZXR1cm4gaSArIDE7CiB9CiAKLVB5RG9jX1NUUlZBUihzdHJpcF9fZG9jX18sCi0iQi5zdHJpcChbYnl0ZXNdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudFxuXAotYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgbmV3IGJ5dGVhcnJheS5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCBBU0NJSSB3aGl0ZXNwYWNlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfc3RyaXBfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2MDQxMjY2MWEzNGFkNWEgaW5wdXQ9ZWY3YmI1OWIwOWMyMWQ2Ml0qLwogewotICAgIFB5X3NzaXplX3QgbGVmdCwgcmlnaHQsIG15c2l6ZSwgYXJnc2l6ZTsKLSAgICBjaGFyICpteXB0ciwgKmFyZ3B0cjsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKLSAgICBQeV9idWZmZXIgdmFyZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnN0cmlwIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICBhcmdwdHIgPSAiXHRcblxyXGZcdiAiOwotICAgICAgICBhcmdzaXplID0gNjsKKyAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGJ5dGVzbGVuOworICAgIGNoYXIgKm15cHRyLCAqYnl0ZXNwdHI7CisgICAgUHlfYnVmZmVyIHZieXRlczsKKworICAgIGlmIChieXRlcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGJ5dGVzcHRyID0gIlx0XG5cclxmXHYgIjsKKyAgICAgICAgYnl0ZXNsZW4gPSA2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnl0ZXMsICZ2Ynl0ZXMsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcmdwdHIgPSAoY2hhciAqKSB2YXJnLmJ1ZjsKLSAgICAgICAgYXJnc2l6ZSA9IHZhcmcubGVuOworICAgICAgICBieXRlc3B0ciA9IChjaGFyICopIHZieXRlcy5idWY7CisgICAgICAgIGJ5dGVzbGVuID0gdmJ5dGVzLmxlbjsKICAgICB9CiAgICAgbXlwdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAgICAgbXlzaXplID0gUHlfU0laRShzZWxmKTsKLSAgICBsZWZ0ID0gbHN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOworICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGJ5dGVzcHRyLCBieXRlc2xlbik7CiAgICAgaWYgKGxlZnQgPT0gbXlzaXplKQogICAgICAgICByaWdodCA9IGxlZnQ7CiAgICAgZWxzZQotICAgICAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYXJncHRyLCBhcmdzaXplKTsKLSAgICBpZiAoYXJnICE9IFB5X05vbmUpCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgICAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKKyAgICBpZiAoYnl0ZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmJ5dGVzKTsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUobXlwdHIgKyBsZWZ0LCByaWdodCAtIGxlZnQpOwogfQogCi1QeURvY19TVFJWQVIobHN0cmlwX19kb2NfXywKLSJCLmxzdHJpcChbYnl0ZXNdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50XG5cCi1hbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LlxuXAotSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHN0cmlwIGxlYWRpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVhcnJheS5sc3RyaXAKKworICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCisgICAgLworCitTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIGxlYWRpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9sc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X2xzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDAwNWM5ZDBhYjkwOWU2NiBpbnB1dD04MDg0M2Y5NzVkZDdjNDgwXSovCiB7Ci0gICAgUHlfc3NpemVfdCBsZWZ0LCByaWdodCwgbXlzaXplLCBhcmdzaXplOwotICAgIGNoYXIgKm15cHRyLCAqYXJncHRyOwotICAgIFB5T2JqZWN0ICphcmcgPSBQeV9Ob25lOwotICAgIFB5X2J1ZmZlciB2YXJnOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86bHN0cmlwIiwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChhcmcgPT0gUHlfTm9uZSkgewotICAgICAgICBhcmdwdHIgPSAiXHRcblxyXGZcdiAiOwotICAgICAgICBhcmdzaXplID0gNjsKKyAgICBQeV9zc2l6ZV90IGxlZnQsIHJpZ2h0LCBteXNpemUsIGJ5dGVzbGVuOworICAgIGNoYXIgKm15cHRyLCAqYnl0ZXNwdHI7CisgICAgUHlfYnVmZmVyIHZieXRlczsKKworICAgIGlmIChieXRlcyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGJ5dGVzcHRyID0gIlx0XG5cclxmXHYgIjsKKyAgICAgICAgYnl0ZXNsZW4gPSA2OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYnl0ZXMsICZ2Ynl0ZXMsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhcmdwdHIgPSAoY2hhciAqKSB2YXJnLmJ1ZjsKLSAgICAgICAgYXJnc2l6ZSA9IHZhcmcubGVuOworICAgICAgICBieXRlc3B0ciA9IChjaGFyICopIHZieXRlcy5idWY7CisgICAgICAgIGJ5dGVzbGVuID0gdmJ5dGVzLmxlbjsKICAgICB9CiAgICAgbXlwdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CiAgICAgbXlzaXplID0gUHlfU0laRShzZWxmKTsKLSAgICBsZWZ0ID0gbHN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOworICAgIGxlZnQgPSBsc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGJ5dGVzcHRyLCBieXRlc2xlbik7CiAgICAgcmlnaHQgPSBteXNpemU7Ci0gICAgaWYgKGFyZyAhPSBQeV9Ob25lKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKKyAgICBpZiAoYnl0ZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmJ5dGVzKTsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUobXlwdHIgKyBsZWZ0LCByaWdodCAtIGxlZnQpOwogfQogCi1QeURvY19TVFJWQVIocnN0cmlwX19kb2NfXywKLSJCLnJzdHJpcChbYnl0ZXNdKSAtPiBieXRlYXJyYXlcblwKLVxuXAotU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudFxuXAotYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgbmV3IGJ5dGVhcnJheS5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnJzdHJpcAorCisgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKKyAgICAvCisKK1N0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuCisKK0lmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnN0cmlwKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVhcnJheV9yc3RyaXBfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAzMGUyZmJkMmY3Mjc2YmQgaW5wdXQ9ZTcyOGI5OTQ5NTRjZmQ5MV0qLwogewotICAgIFB5X3NzaXplX3QgcmlnaHQsIG15c2l6ZSwgYXJnc2l6ZTsKLSAgICBjaGFyICpteXB0ciwgKmFyZ3B0cjsKLSAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKLSAgICBQeV9idWZmZXIgdmFyZzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOnJzdHJpcCIsICZhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgYXJncHRyID0gIlx0XG5cclxmXHYgIjsKLSAgICAgICAgYXJnc2l6ZSA9IDY7CisgICAgUHlfc3NpemVfdCByaWdodCwgbXlzaXplLCBieXRlc2xlbjsKKyAgICBjaGFyICpteXB0ciwgKmJ5dGVzcHRyOworICAgIFB5X2J1ZmZlciB2Ynl0ZXM7CisKKyAgICBpZiAoYnl0ZXMgPT0gUHlfTm9uZSkgeworICAgICAgICBieXRlc3B0ciA9ICJcdFxuXHJcZlx2ICI7CisgICAgICAgIGJ5dGVzbGVuID0gNjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJ5dGVzLCAmdmJ5dGVzLCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgYXJncHRyID0gKGNoYXIgKikgdmFyZy5idWY7Ci0gICAgICAgIGFyZ3NpemUgPSB2YXJnLmxlbjsKKyAgICAgICAgYnl0ZXNwdHIgPSAoY2hhciAqKSB2Ynl0ZXMuYnVmOworICAgICAgICBieXRlc2xlbiA9IHZieXRlcy5sZW47CiAgICAgfQogICAgIG15cHRyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwogICAgIG15c2l6ZSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgcmlnaHQgPSByc3RyaXBfaGVscGVyKG15cHRyLCBteXNpemUsIGFyZ3B0ciwgYXJnc2l6ZSk7Ci0gICAgaWYgKGFyZyAhPSBQeV9Ob25lKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKKyAgICByaWdodCA9IHJzdHJpcF9oZWxwZXIobXlwdHIsIG15c2l6ZSwgYnl0ZXNwdHIsIGJ5dGVzbGVuKTsKKyAgICBpZiAoYnl0ZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmJ5dGVzKTsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUobXlwdHIsIHJpZ2h0KTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlY29kZV9kb2MsCi0iQi5kZWNvZGUoZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdzdHJpY3QnKSAtPiBzdHJcblwKLVxuXAotRGVjb2RlIEIgdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLiBEZWZhdWx0IGVuY29kaW5nXG5cCi1pcyAndXRmLTgnLiBlcnJvcnMgbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuXAotaGFuZGxpbmcgc2NoZW1lLiAgRGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlXG5cCi1hIFVuaWNvZGVEZWNvZGVFcnJvci4gIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJ1xuXAotYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXNcblwKLWFibGUgdG8gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuZGVjb2RlCisKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3V0Zi04JworICAgICAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVhcnJheS4KKyAgICBlcnJvcnM6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICdzdHJpY3QnCisgICAgICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGEKKyAgICAgICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZScKKyAgICAgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQKKyAgICAgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLgorCitEZWNvZGUgdGhlIGJ5dGVhcnJheSB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9kZWNvZGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1N2Q0M2Y0YTAwYjQyYzUgaW5wdXQ9ZjI4ZDhmOTAzMDIwMjU3Yl0qLwogewotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKLSAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgMH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwga3dsaXN0LCAmZW5jb2RpbmcsICZlcnJvcnMpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KChQeU9iamVjdCopc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiB9CiAKIFB5RG9jX1NUUlZBUihhbGxvY19kb2MsCkBAIC0yNjAwLDQ4ICsyNzYwLDQ3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5vYl9hbGxvYyk7CiB9CiAKLVB5RG9jX1NUUlZBUihqb2luX2RvYywKLSJCLmpvaW4oaXRlcmFibGVfb2ZfYnl0ZXMpIC0+IGJ5dGVhcnJheVxuXAotXG5cCi1Db25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzL2J5dGVhcnJheSBvYmplY3RzLCB3aXRoIEJcblwKLWluIGJldHdlZW4gZWFjaCBwYWlyLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcgYnl0ZWFycmF5LiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LmpvaW4KKworICAgIGl0ZXJhYmxlX29mX2J5dGVzOiBvYmplY3QKKyAgICAvCisKK0NvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMvYnl0ZWFycmF5IG9iamVjdHMuCisKK1RoZSBieXRlYXJyYXkgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci4KKworVGhlIHJlc3VsdCBpcyByZXR1cm5lZCBhcyBhIG5ldyBieXRlYXJyYXkgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2pvaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZSkKK2J5dGVhcnJheV9qb2luKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTg1MTYzNzBiZjY4YWUwOCBpbnB1dD1hYmE2YjFmOWIzMGZjYjhlXSovCiB7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9ieXRlc19qb2luKHNlbGYsIGl0ZXJhYmxlKTsKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CiAKLVB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKLSJCLnNwbGl0bGluZXMoW2tlZXBlbmRzXSkgLT4gbGlzdCBvZiBsaW5lc1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiBCLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuXG5cCi1MaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHNcblwKLWlzIGdpdmVuIGFuZCB0cnVlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5LnNwbGl0bGluZXMKIAotc3RhdGljIFB5T2JqZWN0KgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKKyAgICBrZWVwZW5kczogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVhcnJheSwgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLgorCitMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kCit0cnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0bGluZXNfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyMjNjOTRiODk1ZjZhZDkgaW5wdXQ9OGNjYWRlOTQxZTVlYTBiZF0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKLSAgICBpbnQga2VlcGVuZHMgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwKICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGtlZXBlbmRzCiAgICAgICAgICk7CiB9CiAKLVB5RG9jX1NUUlZBUihmcm9taGV4X2RvYywKLSJieXRlYXJyYXkuZnJvbWhleChzdHJpbmcpIC0+IGJ5dGVhcnJheSAoc3RhdGljIG1ldGhvZClcblwKLVxuXAotQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuXG5cCi1TcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuXG5cCi1FeGFtcGxlOiBieXRlYXJyYXkuZnJvbWhleCgnQjkgMDFFRicpIC0+IGJ5dGVhcnJheShiJ1xceGI5XFx4MDFcXHhlZicpLiIpOwotCiBzdGF0aWMgaW50CiBoZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKIHsKQEAgLTI2NTgsMjQgKzI4MTcsMzcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorYnl0ZWFycmF5LmZyb21oZXgKKworICAgIGNsczogc2VsZih0eXBlPSJQeU9iamVjdCoiKQorICAgIHN0cmluZzogdW5pY29kZQorICAgIC8KKworQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuCisKK1NwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC4KK0V4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KCdCOSAwMUVGJykgLT4gYnl0ZWFycmF5KGInXFx4YjlcXHgwMVxceGVmJykKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzZGE2MDEyOWIzNzAwYyBpbnB1dD05MDdiYmQyZDM0ZDkzNjdhXSovCiB7Ci0gICAgUHlPYmplY3QgKm5ld2J5dGVzLCAqaGV4b2JqOworICAgIFB5T2JqZWN0ICpuZXdieXRlczsKICAgICBjaGFyICpidWY7CiAgICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwogICAgIGludCB0b3AsIGJvdDsKICAgICB2b2lkICpkYXRhOwogICAgIHVuc2lnbmVkIGludCBraW5kOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmZyb21oZXgiLCAmaGV4b2JqKSkKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhoZXhvYmopKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGhleG9iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChoZXhvYmopOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShoZXhvYmopOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGhleG9iaik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKIAogICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCiAgICAgbmV3Ynl0ZXMgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7CkBAIC0yNzA3LDYgKzI4NzksMTkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlEb2NfU1RSVkFSKGhleF9fZG9jX18sCisiQi5oZXgoKSAtPiBzdHJpbmdcblwKK1xuXAorQ3JlYXRlIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMgZnJvbSBhIGJ5dGVhcnJheSBvYmplY3QuXG5cCitFeGFtcGxlOiBieXRlYXJyYXkoWzB4YjksIDB4MDEsIDB4ZWZdKS5oZXgoKSAtPiAnYjkwMWVmJy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9oZXgoUHlCeXRlc09iamVjdCAqc2VsZikKK3sKKyAgICBjaGFyKiBhcmdidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CisgICAgUHlfc3NpemVfdCBhcmdsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleChhcmdidWYsIGFyZ2xlbik7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29tbW9uX3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQpAQCAtMjc0MywzMyArMjkyOCw0OSBAQAogICAgIH0KIH0KIAotUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZWFycmF5Ll9fcmVkdWNlX18gYXMgYnl0ZWFycmF5X3JlZHVjZQorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKKworUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yZWR1Y2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCitieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD1mYmIwN2RlNGQxMDJhMDNhXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIDIpOwogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2V4X2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuX19yZWR1Y2VfZXhfXyBhcyBieXRlYXJyYXlfcmVkdWNlX2V4CisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorICAgIHByb3RvOiBpbnQgPSAwCisgICAgLworCitSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JlZHVjZV9leChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBwcm90bykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PTBlMDkxYTQyY2E2ZGJkOTFdKi8KIHsKLSAgICBpbnQgcHJvdG8gPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgcHJvdG8pOwogfQogCi1QeURvY19TVFJWQVIoc2l6ZW9mX2RvYywKLSJCLl9fc2l6ZW9mX18oKSAtPiBpbnRcblwKLSBcblwKLVJldHVybnMgdGhlIHNpemUgb2YgQiBpbiBtZW1vcnksIGluIGJ5dGVzIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlYXJyYXkuX19zaXplb2ZfXyBhcyBieXRlYXJyYXlfc2l6ZW9mCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQorCitSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBieXRlYXJyYXkgb2JqZWN0IGluIG1lbW9yeSwgaW4gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc2l6ZW9mKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorYnl0ZWFycmF5X3NpemVvZl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9NmIyM2QzMDUzNjJiNDYyYl0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0yODA0LDI2ICszMDA1LDI2IEBACiBzdGF0aWMgUHlNZXRob2REZWYKIGJ5dGVhcnJheV9tZXRob2RzW10gPSB7CiAgICAgeyJfX2FsbG9jX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2FsbG9jLCBNRVRIX05PQVJHUywgYWxsb2NfZG9jfSwKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAotICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsIHJlZHVjZV9leF9kb2N9LAotICAgIHsiX19zaXplb2ZfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc2l6ZW9mLCBNRVRIX05PQVJHUywgc2l6ZW9mX2RvY30sCi0gICAgeyJhcHBlbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2FwcGVuZCwgTUVUSF9PLCBhcHBlbmRfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfUkVEVUNFX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRURVQ0VfRVhfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1NJWkVPRl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfQVBQRU5EX01FVEhPRERFRgogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKLSAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jbGVhciwgTUVUSF9OT0FSR1MsIGNsZWFyX19kb2NfX30sCi0gICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3B5LCBNRVRIX05PQVJHUywgY29weV9fZG9jX199LAorICAgIEJZVEVBUlJBWV9DTEVBUl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYKICAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGRlY29kZV9kb2N9LAorICAgIEJZVEVBUlJBWV9ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywgZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKLSAgICB7ImV4dGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZXh0ZW5kLCBNRVRIX08sIGV4dGVuZF9fZG9jX199LAorICAgIEJZVEVBUlJBWV9FWFRFTkRfTUVUSE9EREVGCiAgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKLSAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfVkFSQVJHU3xNRVRIX0NMQVNTLAotICAgICBmcm9taGV4X2RvY30sCisgICAgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGCisgICAgeyJoZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAogICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCi0gICAgeyJpbnNlcnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luc2VydCwgTUVUSF9WQVJBUkdTLCBpbnNlcnRfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfSU5TRVJUX01FVEhPRERFRgogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCiAgICAgeyJpc2FscGhhIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FscGhhLCBNRVRIX05PQVJHUywKQEAgLTI4MzgsMzkgKzMwMzksNTEgQEAKICAgICAgX1B5X2lzdGl0bGVfX2RvY19ffSwKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAotICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfam9pbiwgTUVUSF9PLCBqb2luX2RvY30sCisgICAgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGCiAgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAotICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9sc3RyaXAsIE1FVEhfVkFSQVJHUywgbHN0cmlwX19kb2NfX30sCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLAotICAgICBfUHlfbWFrZXRyYW5zX19kb2NfX30sCi0gICAgeyJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3BhcnRpdGlvbiwgTUVUSF9PLCBwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InBvcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcG9wLCBNRVRIX1ZBUkFSR1MsIHBvcF9fZG9jX199LAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZW1vdmUsIE1FVEhfTywgcmVtb3ZlX19kb2NfX30sCi0gICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIHJlcGxhY2VfX2RvY19ffSwKLSAgICB7InJldmVyc2UiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JldmVyc2UsIE1FVEhfTk9BUkdTLCByZXZlcnNlX19kb2NfX30sCisgICAgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9QQVJUSVRJT05fTUVUSE9EREVGCisgICAgQllURUFSUkFZX1BPUF9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfUkVNT1ZFX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SRVZFUlNFX01FVEhPRERFRgogICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCiAgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAotICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnBhcnRpdGlvbiwgTUVUSF9PLCBycGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCi0gICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsCi0gICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0bGluZXNfX2RvY19ffSwKKyAgICBCWVRFQVJSQVlfUlBBUlRJVElPTl9NRVRIT0RERUYKKyAgICBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9SU1RSSVBfTUVUSE9EREVGCisgICAgQllURUFSUkFZX1NQTElUX01FVEhPRERFRgorICAgIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRgogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTICwKICAgICAgc3RhcnRzd2l0aF9fZG9jX199LAotICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0cmlwLCBNRVRIX1ZBUkFSR1MsIHN0cmlwX19kb2NfX30sCisgICAgQllURUFSUkFZX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIHRyYW5zbGF0ZV9fZG9jX199LAorICAgIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKICAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAogICAgIHtOVUxMfQogfTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQoreworICAgIGlmICghUHlCeXRlQXJyYXlfQ2hlY2sodikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICByZXR1cm4gYnl0ZWFycmF5X2Zvcm1hdCgoUHlCeXRlQXJyYXlPYmplY3QgKil2LCB3KTsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlYXJyYXlfYXNfbnVtYmVyID0geworICAgIDAsICAgICAgICAgICAgICAvKm5iX2FkZCovCisgICAgMCwgICAgICAgICAgICAgIC8qbmJfc3VidHJhY3QqLworICAgIDAsICAgICAgICAgICAgICAvKm5iX211bHRpcGx5Ki8KKyAgICBieXRlYXJyYXlfbW9kLCAgLypuYl9yZW1haW5kZXIqLworfTsKKwogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9kb2MsCiAiYnl0ZWFycmF5KGl0ZXJhYmxlX29mX2ludHMpIC0+IGJ5dGVhcnJheVxuXAogYnl0ZWFycmF5KHN0cmluZywgZW5jb2RpbmdbLCBlcnJvcnNdKSAtPiBieXRlYXJyYXlcblwKQEAgLTI4OTksNyArMzExMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCiAgICAgKHJlcHJmdW5jKWJ5dGVhcnJheV9yZXByLCAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZieXRlYXJyYXlfYXNfbnVtYmVyLCAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgICZieXRlYXJyYXlfYXNfc2VxdWVuY2UsICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCiAgICAgJmJ5dGVhcnJheV9hc19tYXBwaW5nLCAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KQEAgLTMwMjYsNyArMzIzOSw3IEBACiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5aXRlcl9sZW5ndGhfaGludCwgTUVUSF9OT0FSR1MsCiAgICAgIGxlbmd0aF9oaW50X2RvY30sCiAgICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKLSAgICAgcmVkdWNlX2RvY30sCisgICAgIGJ5dGVhcnJheV9yZWR1Y2VfX2RvY19ffSwKICAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX3NldHN0YXRlLCBNRVRIX08sCiAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCmluZGV4IDlmZjdhY2UuLmEyOTk5MTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCisrKyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCkBAIC0zNjQsMzkgKzM2NCwyNiBAQAogVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4iKTsKIAogUHlPYmplY3QgKgotX1B5X2J5dGVzX21ha2V0cmFucyhQeU9iamVjdCAqYXJncykKK19QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCiB7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIGJmcm0gPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfYnVmZmVyIGJ0byA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgY2hhciAqcDsKIAotICAgIGJmcm0ubGVuID0gLTE7Ci0gICAgYnRvLmxlbiA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsICZiZnJtLCAmYnRvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGJmcm0ubGVuICE9IGJ0by5sZW4pIHsKKyAgICBpZiAoZnJtLT5sZW4gIT0gdG8tPmxlbikgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJtYWtldHJhbnMgYXJndW1lbnRzIG11c3QgaGF2ZSBzYW1lIGxlbmd0aCIpOwotICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDI1Nik7Ci0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7CiAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQogICAgICAgICBwW2ldID0gKGNoYXIpIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGJmcm0ubGVuOyBpKyspIHsKLSAgICAgICAgcFsoKHVuc2lnbmVkIGNoYXIgKiliZnJtLmJ1ZilbaV1dID0gKChjaGFyICopYnRvLmJ1ZilbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGZybS0+bGVuOyBpKyspIHsKKyAgICAgICAgcFsoKHVuc2lnbmVkIGNoYXIgKilmcm0tPmJ1ZilbaV1dID0gKChjaGFyICopdG8tPmJ1ZilbaV07CiAgICAgfQogCi1kb25lOgotICAgIGlmIChiZnJtLm9iaiAhPSBOVUxMKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiZnJtKTsKLSAgICBpZiAoYmZybS5vYmogIT0gTlVMTCkKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnRvKTsKICAgICByZXR1cm4gcmVzOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc29iamVjdC5jIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCmluZGV4IDU3NjgxNTQuLjA4Mjc1YWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKQEAgLTUsOCArNSwxNiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0KiIgIiZQeUJ5dGVzX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYTFkOTEwMmFmYzFiMDBjXSovCisKKyNpbmNsdWRlICJjbGluaWMvYnl0ZXNvYmplY3QuYy5oIgorCiAjaWZkZWYgQ09VTlRfQUxMT0NTCiBQeV9zc2l6ZV90IG51bGxfc3RyaW5ncywgb25lX3N0cmluZ3M7CiAjZW5kaWYKQEAgLTQ0LDYgKzUyLDQ1IEBACiAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCkpIG9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiB0aGUgYHN0cicKICAgIHBhcmFtZXRlciAoZm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpKS4KICovCitzdGF0aWMgUHlPYmplY3QgKgorX1B5Qnl0ZXNfRnJvbVNpemUoUHlfc3NpemVfdCBzaXplLCBpbnQgdXNlX2NhbGxvYykKK3sKKyAgICBQeUJ5dGVzT2JqZWN0ICpvcDsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplID09IDAgJiYgKG9wID0gbnVsbHN0cmluZykgIT0gTlVMTCkgeworI2lmZGVmIENPVU5UX0FMTE9DUworICAgICAgICBudWxsX3N0cmluZ3MrKzsKKyNlbmRpZgorICAgICAgICBQeV9JTkNSRUYob3ApOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopb3A7CisgICAgfQorCisgICAgaWYgKChzaXplX3Qpc2l6ZSA+IChzaXplX3QpUFlfU1NJWkVfVF9NQVggLSBQeUJ5dGVzT2JqZWN0X1NJWkUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZSBzdHJpbmcgaXMgdG9vIGxhcmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIElubGluZSBQeU9iamVjdF9OZXdWYXIgKi8KKyAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X0NhbGxvYygxLCBQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBlbHNlCisgICAgICAgIG9wID0gKFB5Qnl0ZXNPYmplY3QgKilQeU9iamVjdF9NYWxsb2MoUHlCeXRlc09iamVjdF9TSVpFICsgc2l6ZSk7CisgICAgaWYgKG9wID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKKyAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKKyAgICBpZiAoIXVzZV9jYWxsb2MpCisgICAgICAgIG9wLT5vYl9zdmFsW3NpemVdID0gJ1wwJzsKKyAgICAvKiBlbXB0eSBieXRlIHN0cmluZyBzaW5nbGV0b24gKi8KKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIG51bGxzdHJpbmcgPSBvcDsKKyAgICAgICAgUHlfSU5DUkVGKG9wKTsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKK30KKwogUHlPYmplY3QgKgogUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKQEAgLTUzLDEzICsxMDAsNiBAQAogICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChzaXplID09IDAgJiYgKG9wID0gbnVsbHN0cmluZykgIT0gTlVMTCkgewotI2lmZGVmIENPVU5UX0FMTE9DUwotICAgICAgICBudWxsX3N0cmluZ3MrKzsKLSNlbmRpZgotICAgICAgICBQeV9JTkNSRUYob3ApOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopb3A7Ci0gICAgfQogICAgIGlmIChzaXplID09IDEgJiYgc3RyICE9IE5VTEwgJiYKICAgICAgICAgKG9wID0gY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSkgIT0gTlVMTCkKICAgICB7CkBAIC03MCwyNiArMTEwLDE1IEBACiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gUHlCeXRlc09iamVjdF9TSVpFKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGUgc3RyaW5nIGlzIHRvbyBsYXJnZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICAvKiBJbmxpbmUgUHlPYmplY3RfTmV3VmFyICovCi0gICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X01BTExPQyhQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopX1B5Qnl0ZXNfRnJvbVNpemUoc2l6ZSwgMCk7CiAgICAgaWYgKG9wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKLSAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKLSAgICBpZiAoc3RyICE9IE5VTEwpCi0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKLSAgICBvcC0+b2Jfc3ZhbFtzaXplXSA9ICdcMCc7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKKworICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCi0gICAgaWYgKHNpemUgPT0gMCkgewotICAgICAgICBudWxsc3RyaW5nID0gb3A7Ci0gICAgICAgIFB5X0lOQ1JFRihvcCk7Ci0gICAgfSBlbHNlIGlmIChzaXplID09IDEgJiYgc3RyICE9IE5VTEwpIHsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIGNoYXJhY3RlcnNbKnN0ciAmIFVDSEFSX01BWF0gPSBvcDsKICAgICAgICAgUHlfSU5DUkVGKG9wKTsKICAgICB9CkBAIC0zNDcsNiArMzc2LDU4MCBAQAogICAgIHJldHVybiByZXQ7CiB9CiAKKy8qIEhlbHBlcnMgZm9yIGZvcm1hdHN0cmluZyAqLworCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK2dldG5leHRhcmcoUHlPYmplY3QgKmFyZ3MsIFB5X3NzaXplX3QgYXJnbGVuLCBQeV9zc2l6ZV90ICpwX2FyZ2lkeCkKK3sKKyAgICBQeV9zc2l6ZV90IGFyZ2lkeCA9ICpwX2FyZ2lkeDsKKyAgICBpZiAoYXJnaWR4IDwgYXJnbGVuKSB7CisgICAgICAgICgqcF9hcmdpZHgpKys7CisgICAgICAgIGlmIChhcmdsZW4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIGFyZ3M7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeVR1cGxlX0dldEl0ZW0oYXJncywgYXJnaWR4KTsKKyAgICB9CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggYXJndW1lbnRzIGZvciBmb3JtYXQgc3RyaW5nIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEZvcm1hdCBjb2RlcworICogRl9MSlVTVCAgICAgICctJworICogRl9TSUdOICAgICAgICcrJworICogRl9CTEFOSyAgICAgICcgJworICogRl9BTFQgICAgICAgICcjJworICogRl9aRVJPICAgICAgICcwJworICovCisjZGVmaW5lIEZfTEpVU1QgKDE8PDApCisjZGVmaW5lIEZfU0lHTiAgKDE8PDEpCisjZGVmaW5lIEZfQkxBTksgKDE8PDIpCisjZGVmaW5lIEZfQUxUICAgKDE8PDMpCisjZGVmaW5lIEZfWkVSTyAgKDE8PDQpCisKKy8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlCeXRlcyBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3sKKyAgICBjaGFyICpwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgZG91YmxlIHg7CisKKyAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImZsb2F0IGFyZ3VtZW50IHJlcXVpcmVkLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAocHJlYyA8IDApCisgICAgICAgIHByZWMgPSA2OworCisgICAgcCA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCB0eXBlLCBwcmVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsYWdzICYgRl9BTFQpID8gUHlfRFRTRl9BTFQgOiAwLCBOVUxMKTsKKworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgc3RybGVuKHApKTsKKyAgICBQeU1lbV9GcmVlKHApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmb3JtYXRsb25nKFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqaW9iajsKKyAgICBpZiAodHlwZSA9PSAnaScpCisgICAgICAgIHR5cGUgPSAnZCc7CisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRm9ybWF0TG9uZyh2LCBmbGFncyAmIEZfQUxULCBwcmVjLCB0eXBlKTsKKyAgICBpZiAoUHlOdW1iZXJfQ2hlY2sodikpIHsKKyAgICAgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciBmb3IgbywgeCwgYW5kIFggKi8KKyAgICAgICAgaWYgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKQorICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KHYpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKKyAgICAgICAgaWYgKGlvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5TG9uZ19DaGVjayhpb2JqKSkKKyAgICAgICAgICAgIFB5X0NMRUFSKGlvYmopOworICAgICAgICBpZiAoaW9iaiAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlVbmljb2RlX0Zvcm1hdExvbmcoaW9iaiwgZmxhZ3MgJiBGX0FMVCwgcHJlYywgdHlwZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICIlJSVjIGZvcm1hdDogJXMgaXMgcmVxdWlyZWQsIG5vdCAlLjIwMHMiLCB0eXBlLAorICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpID8gImFuIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiYSBudW1iZXIiLAorICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorYnl0ZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgY2hhciAqcCkKK3sKKyAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfU2l6ZShhcmcpID09IDEpIHsKKyAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9TaXplKGFyZykgPT0gMSkgeworICAgICAgICAqcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhhcmcpWzBdOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppb2JqOworICAgICAgICBsb25nIGl2YWw7CisgICAgICAgIGludCBvdmVyZmxvdzsKKyAgICAgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciAqLworICAgICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKKyAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coYXJnLCAmb3ZlcmZsb3cpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KGFyZyk7CisgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coaW9iaiwgJm92ZXJmbG93KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW92ZXJmbG93ICYmIGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKG92ZXJmbG93IHx8ICEoMCA8PSBpdmFsICYmIGl2YWwgPD0gMjU1KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMjU2KSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgKnAgPSAoY2hhcilpdmFsOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgIG9uRXJyb3I6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIiVjIHJlcXVpcmVzIGFuIGludGVnZXIgaW4gcmFuZ2UoMjU2KSBvciBhIHNpbmdsZSBieXRlIik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmb3JtYXRfb2JqKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICoqcGJ1ZiwgUHlfc3NpemVfdCAqcGxlbikKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2J5dGVzX18pOworICAgIC8qIGlzIGl0IGEgYnl0ZXMgb2JqZWN0PyAqLworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHYpKSB7CisgICAgICAgICpwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICpwbGVuID0gUHlCeXRlc19HRVRfU0laRSh2KTsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHYpKSB7CisgICAgICAgICpwYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpOworICAgICAgICAqcGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHYpOworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICAvKiBkb2VzIGl0IHN1cHBvcnQgX19ieXRlc19fPyAqLworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCh2LCAmUHlJZF9fX2J5dGVzX18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYnl0ZXNfXyByZXR1cm5lZCBub24tYnl0ZXMgKHR5cGUgJS4yMDBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKnBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICAqcGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiUlYiByZXF1aXJlcyBieXRlcywgb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBfX2J5dGVzX18sIG5vdCAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikKKworICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCB0aGUgaW50cyAmCisgICBjaGFycyBhcmUgZm9ybWF0dGVkLiBYWFggVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gRWFjaCBmb3JtYXR0aW5nCisgICByb3V0aW5lIGRvZXMgYm91bmRzIGNoZWNraW5nIHRvIGVuc3VyZSBubyBvdmVyZmxvdywgYnV0IGEgYmV0dGVyCisgICBzb2x1dGlvbiBtYXkgYmUgdG8gbWFsbG9jIGEgYnVmZmVyIG9mIGFwcHJvcHJpYXRlIHNpemUgZm9yIGVhY2gKKyAgIGZvcm1hdC4gRm9yIG5vdywgdGhlIGN1cnJlbnQgc29sdXRpb24gaXMgc3VmZmljaWVudC4KKyovCisjZGVmaW5lIEZPUk1BVEJVRkxFTiAoc2l6ZV90KTEyMAorCitQeU9iamVjdCAqCitfUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqZm10LCAqcmVzOworICAgIFB5X3NzaXplX3QgYXJnbGVuLCBhcmdpZHg7CisgICAgUHlfc3NpemVfdCByZXNsZW4sIHJlc2NudCwgZm10Y250OworICAgIGludCBhcmdzX293bmVkID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgIVB5Qnl0ZXNfQ2hlY2soZm9ybWF0KSB8fCBhcmdzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhmb3JtYXQpOworICAgIGZtdGNudCA9IFB5Qnl0ZXNfR0VUX1NJWkUoZm9ybWF0KTsKKyAgICByZXNsZW4gPSByZXNjbnQgPSBmbXRjbnQgKyAxMDA7CisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHJlc2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKKyAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgYXJnaWR4ID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ2xlbiA9IC0xOworICAgICAgICBhcmdpZHggPSAtMjsKKyAgICB9CisgICAgaWYgKFB5X1RZUEUoYXJncyktPnRwX2FzX21hcHBpbmcgJiYgUHlfVFlQRShhcmdzKS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0ICYmCisgICAgICAgICFQeVR1cGxlX0NoZWNrKGFyZ3MpICYmICFQeUJ5dGVzX0NoZWNrKGFyZ3MpICYmICFQeVVuaWNvZGVfQ2hlY2soYXJncykgJiYKKyAgICAgICAgIVB5Qnl0ZUFycmF5X0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICBkaWN0ID0gYXJnczsKKyAgICB9CisgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKKyAgICAgICAgaWYgKCpmbXQgIT0gJyUnKSB7CisgICAgICAgICAgICBpZiAoLS1yZXNjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgcmVzY250ID0gZm10Y250ICsgMTAwOworICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLworICAgICAgICAgICAgaW50IGZsYWdzID0gMDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgd2lkdGggPSAtMTsKKyAgICAgICAgICAgIGludCBwcmVjID0gLTE7CisgICAgICAgICAgICBpbnQgYyA9ICdcMCc7CisgICAgICAgICAgICBpbnQgZmlsbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBidWYgPSBOVUxMOworICAgICAgICAgICAgaW50IHNpZ247CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CisgICAgICAgICAgICBjaGFyIG9uZWNoYXI7IC8qIEZvciBieXRlX2NvbnZlcnRlcigpICovCisKKyAgICAgICAgICAgIGZtdCsrOworICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgY2hhciAqa2V5c3RhcnQ7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKKyAgICAgICAgICAgICAgICBpbnQgcGNvdW50ID0gMTsKKworICAgICAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCByZXF1aXJlcyBhIG1hcHBpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytmbXQ7CisgICAgICAgICAgICAgICAgLS1mbXRjbnQ7CisgICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXQ7CisgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIGJhbGFuY2VkIHBhcmVudGhlc2VzICovCisgICAgICAgICAgICAgICAgd2hpbGUgKHBjb3VudCA+IDAgJiYgLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKScpCisgICAgICAgICAgICAgICAgICAgICAgICAtLXBjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKmZtdCA9PSAnKCcpCisgICAgICAgICAgICAgICAgICAgICAgICArK3Bjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGtleWxlbiA9IGZtdCAtIGtleXN0YXJ0IC0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZm10Y250IDwgMCB8fCBwY291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmNvbXBsZXRlIGZvcm1hdCBrZXkiKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAga2V5ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShrZXlzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlsZW4pOworICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICAgICAgICAgIGFyZ3Nfb3duZWQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhcmdzID0gUHlPYmplY3RfR2V0SXRlbShkaWN0LCBrZXkpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnc19vd25lZCA9IDE7CisgICAgICAgICAgICAgICAgYXJnbGVuID0gLTE7CisgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgeworICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBGX0xKVVNUOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcrJzogZmxhZ3MgfD0gRl9TSUdOOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcgJzogZmxhZ3MgfD0gRl9CTEFOSzsgY29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSAnIyc6IGZsYWdzIHw9IEZfQUxUOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBjYXNlICcwJzogZmxhZ3MgfD0gRl9aRVJPOyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKKyAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIHdhbnRzIGludCIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aWR0aCA9IFB5TG9uZ19Bc1NzaXplX3Qodik7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBGX0xKVVNUOworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDAgJiYgaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgIHdpZHRoID0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmZtdCsrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChQWV9TU0laRV9UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggdG9vIGJpZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoKjEwICsgKGMgLSAnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgIHByZWMgPSAwOworICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgIGlmIChjID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiogd2FudHMgaW50Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHByZWMgPSBfUHlMb25nX0FzSW50KHYpOworICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CisgICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAwICYmIGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJlYyA9IGMgLSAnMCc7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmZtdCsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID4gKElOVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWMgdG9vIGJpZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gcHJlYyoxMCArIChjIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gLyogcHJlYyAqLworICAgICAgICAgICAgaWYgKGZtdGNudCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2gnIHx8IGMgPT0gJ2wnIHx8IGMgPT0gJ0wnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGMgIT0gJyUnKSB7CisgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKKyAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2lnbiA9IDA7CisgICAgICAgICAgICBmaWxsID0gJyAnOworICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgICAgICBwYnVmID0gIiUiOworICAgICAgICAgICAgICAgIGxlbiA9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgICAgICAvLyAlciBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYQorICAgICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X0FTQ0lJKHYpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSSh0ZW1wKSk7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IChjb25zdCBjaGFyICopUHlVbmljb2RlXzFCWVRFX0RBVEEodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGVtcCk7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAgLy8gJXMgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWIKKyAgICAgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRfb2JqKHYsICZwYnVmLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0bG9uZyh2LCBmbGFncywgcHJlYywgYyk7CisgICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkodGVtcCkpOworICAgICAgICAgICAgICAgIHBidWYgPSAoY29uc3QgY2hhciAqKVB5VW5pY29kZV8xQllURV9EQVRBKHRlbXApOworICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRlbXApOworICAgICAgICAgICAgICAgIHNpZ24gPSAxOworICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKKyAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgY2FzZSAnRSc6CisgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgIGNhc2UgJ0YnOgorICAgICAgICAgICAgY2FzZSAnZyc6CisgICAgICAgICAgICBjYXNlICdHJzoKKyAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRlbXApOworICAgICAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGVtcCk7CisgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQorICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnYyc6CisgICAgICAgICAgICAgICAgcGJ1ZiA9ICZvbmVjaGFyOworICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVfY29udmVydGVyKHYsICZvbmVjaGFyKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxlbikKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSAiCisgICAgICAgICAgICAgICAgICAiYXQgaW5kZXggJXpkIiwKKyAgICAgICAgICAgICAgICAgIGMsIGMsCisgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyhmb3JtYXQpKSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgaWYgKCpwYnVmID09ICctJyB8fCAqcGJ1ZiA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfU0lHTikKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcrJzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCisgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnICc7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKKyAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7CisgICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKKyAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKKyAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OworICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CisgICAgICAgICAgICAgICAgcmVzY250LS07CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQorICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcpKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzY250IC09IDI7CisgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CisgICAgICAgICAgICAgICAgbGVuIC09IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKKyAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgeworICAgICAgICAgICAgICAgIGlmIChzaWduKQorICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOworICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9NRU1DUFkocmVzLCBwYnVmLCBsZW4pOworICAgICAgICAgICAgcmVzICs9IGxlbjsKKyAgICAgICAgICAgIHJlc2NudCAtPSBsZW47CisgICAgICAgICAgICB3aGlsZSAoLS13aWR0aCA+PSBsZW4pIHsKKyAgICAgICAgICAgICAgICAtLXJlc2NudDsKKyAgICAgICAgICAgICAgICAqcmVzKysgPSAnICc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGljdCAmJiAoYXJnaWR4IDwgYXJnbGVuKSAmJiBjICE9ICclJykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIik7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgfSAvKiAnJScgKi8KKyAgICB9IC8qIHVudGlsIGVuZCAqLworICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKGFyZ3Nfb3duZWQpIHsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbiAtIHJlc2NudCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXN1bHQ7CisKKyBlcnJvcjoKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisvKiA9LT0gKi8KKwogc3RhdGljIHZvaWQKIGJ5dGVzX2RlYWxsb2MoUHlPYmplY3QgKm9wKQogewpAQCAtNTQwLDggKzExNDMsOCBAQAogICAgIGlmIChsZW4gIT0gTlVMTCkKICAgICAgICAgKmxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqKTsKICAgICBlbHNlIGlmIChzdHJsZW4oKnMpICE9IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShvYmopKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYnl0ZXMgd2l0aCBubyBudWxsIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVtYmVkZGVkIG51bGwgYnl0ZSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtODMzLDYgKzE0MzYsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIHN0cmluZyIsIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNJbnN0YW5jZSgoUHlPYmplY3QqKWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopJlB5TG9uZ19UeXBlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJjKQorICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzSW5zdGFuY2UoKFB5T2JqZWN0KiliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUHlMb25nX1R5cGUpOworICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0J5dGVzV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcGFyaXNvbiBiZXR3ZWVuIGJ5dGVzIGFuZCBpbnQiLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKICAgICB9CkBAIC05NTcsNyArMTU3NCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImJ5dGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVtKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTk5NywzNyArMTYxNCwzNCBAQAogI2RlZmluZSBSSUdIVFNUUklQIDEKICNkZWZpbmUgQk9USFNUUklQIDIKIAotLyogQXJyYXlzIGluZGV4ZWQgYnkgYWJvdmUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zcGxpdAogCi0jZGVmaW5lIFNUUklQTkFNRShpKSAoc3RyaXBmb3JtYXRbaV0rMykKKyAgICBzZXA6IG9iamVjdCA9IE5vbmUKKyAgICAgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVzLgorICAgICAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisgICAgICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLgorICAgIG1heHNwbGl0OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LgogCi1QeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLAotIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuXAotSWYgc2VwIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgTm9uZSwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlXG5cCi1jaGFyYWN0ZXJzIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuXAotSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOworUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThiZGU0NGRhY2IzNmVmMmUgaW5wdXQ9OGI4MDliMzkwNzRhYmJmYV0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpzcGxpdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vib2JqLCAmbWF4c3BsaXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWF4c3BsaXQgPCAwKQogICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIGlmIChzdWJvYmogPT0gUHlfTm9uZSkKKyAgICBpZiAoc2VwID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc3ViID0gdnN1Yi5idWY7CiAgICAgbiA9IHZzdWIubGVuOwpAQCAtMTAzNyw4NSArMTY1MSw4NCBAQAogICAgIHJldHVybiBsaXN0OwogfQogCi1QeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKLSJCLnBhcnRpdGlvbihzZXApIC0+IChoZWFkLCBzZXAsIHRhaWwpXG5cCi1cblwKLVNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gQiwgYW5kIHJldHVybiB0aGUgcGFydCBiZWZvcmUgaXQsXG5cCi10aGUgc2VwYXJhdG9yIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIGl0LiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcblwKLWZvdW5kLCByZXR1cm5zIEIgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucGFydGl0aW9uCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCisgICAgc2VwOiBQeV9idWZmZXIKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMuIElmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsCityZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCitpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KKworSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJ5dGVzCitvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcGFydGl0aW9uKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBfb2JqKQorYnl0ZXNfcGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD1iYzg1NWRjNjNjYTk0OWRlXSovCiB7Ci0gICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZXBfb2JqLCAmc2VwLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gc3RyaW5nbGliX3BhcnRpdGlvbigKKyAgICByZXR1cm4gc3RyaW5nbGliX3BhcnRpdGlvbigKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIHNlcF9vYmosIHNlcC5idWYsIHNlcC5sZW4KKyAgICAgICAgc2VwLT5vYmosIChjb25zdCBjaGFyICopc2VwLT5idWYsIHNlcC0+bGVuCiAgICAgICAgICk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKLSAgICByZXR1cm4gcmVzOwogfQogCi1QeURvY19TVFJWQVIocnBhcnRpdGlvbl9fZG9jX18sCi0iQi5ycGFydGl0aW9uKHNlcCkgLT4gKGhlYWQsIHNlcCwgdGFpbClcblwKLVxuXAotU2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiBCLCBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIsXG5cCi1hbmQgcmV0dXJuIHRoZSBwYXJ0IGJlZm9yZSBpdCwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGVcblwKLXBhcnQgYWZ0ZXIgaXQuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyB0d28gZW1wdHlcblwKLWJ5dGVzIG9iamVjdHMgYW5kIEIuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5ycGFydGl0aW9uCisKKyAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCisgICAgc2VwOiBQeV9idWZmZXIKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMsIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLiBJZgordGhlIHNlcGFyYXRvciBpcyBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlCitzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuCisKK0lmIHRoZSBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBieXRlcworb2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVzIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JwYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcF9vYmopCitieXRlc19ycGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTkxYjExNGNiYjAyOGU1MCBpbnB1dD02NTg4ZmZmMjYyYTkxNzBlXSovCiB7Ci0gICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzZXBfb2JqLCAmc2VwLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzID0gc3RyaW5nbGliX3JwYXJ0aXRpb24oCisgICAgcmV0dXJuIHN0cmluZ2xpYl9ycGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLAogICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgc2VwX29iaiwgc2VwLmJ1Ziwgc2VwLmxlbgorICAgICAgICBzZXAtPm9iaiwgKGNvbnN0IGNoYXIgKilzZXAtPmJ1Ziwgc2VwLT5sZW4KICAgICAgICAgKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOwotICAgIHJldHVybiByZXM7CiB9CiAKLVB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBieXRlc1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiBCLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlcixcblwKLXN0YXJ0aW5nIGF0IHRoZSBlbmQgb2YgQiBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuXG5cCi1JZiBzZXAgaXMgbm90IGdpdmVuLCBCIGlzIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuXAotKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG5cCi1JZiBtYXhzcGxpdCBpcyBnaXZlbiwgYXQgbW9zdCBtYXhzcGxpdCBzcGxpdHMgYXJlIGRvbmUuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yc3BsaXQgPSBieXRlcy5zcGxpdAogCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorCitTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlcyBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQorYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNjU3MGI5Nzc5MTFkODggaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwotICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBpZiAoc3Vib2JqID09IFB5X05vbmUpCisgICAgaWYgKHNlcCA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdF93aGl0ZXNwYWNlKChQeU9iamVjdCopIHNlbGYsIHMsIGxlbiwgbWF4c3BsaXQpOwotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzdWIgPSB2c3ViLmJ1ZjsKICAgICBuID0gdnN1Yi5sZW47CkBAIC0xMTI2LDE2ICsxNzM5LDI2IEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKGpvaW5fX2RvY19fLAotIkIuam9pbihpdGVyYWJsZV9vZl9ieXRlcykgLT4gYnl0ZXNcblwKLVxuXAotQ29uY2F0ZW5hdGUgYW55IG51bWJlciBvZiBieXRlcyBvYmplY3RzLCB3aXRoIEIgaW4gYmV0d2VlbiBlYWNoIHBhaXIuXG5cCi1FeGFtcGxlOiBiJy4nLmpvaW4oW2InYWInLCBiJ3BxJywgYidycyddKSAtPiBiJ2FiLnBxLnJzJy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLmpvaW4KKworICAgIGl0ZXJhYmxlX29mX2J5dGVzOiBvYmplY3QKKyAgICAvCisKK0NvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMgb2JqZWN0cy4KKworVGhlIGJ5dGVzIHdob3NlIG1ldGhvZCBpcyBjYWxsZWQgaXMgaW5zZXJ0ZWQgaW4gYmV0d2VlbiBlYWNoIHBhaXIuCisKK1RoZSByZXN1bHQgaXMgcmV0dXJuZWQgYXMgYSBuZXcgYnl0ZXMgb2JqZWN0LgorCitFeGFtcGxlOiBiJy4nLmpvaW4oW2InYWInLCBiJ3BxJywgYidycyddKSAtPiBiJ2FiLnBxLnJzJy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2pvaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZSkKK2J5dGVzX2pvaW4oUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0YWZmMTQ3NjRmZjk5NyBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCiB7Ci0gICAgcmV0dXJuIHN0cmluZ2xpYl9ieXRlc19qb2luKHNlbGYsIGl0ZXJhYmxlKTsKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTExNDMsNyArMTc2Niw3IEBACiB7CiAgICAgYXNzZXJ0KHNlcCAhPSBOVUxMICYmIFB5Qnl0ZXNfQ2hlY2soc2VwKSk7CiAgICAgYXNzZXJ0KHggIT0gTlVMTCk7Ci0gICAgcmV0dXJuIGJ5dGVzX2pvaW4oc2VwLCB4KTsKKyAgICByZXR1cm4gYnl0ZXNfam9pbigoUHlCeXRlc09iamVjdCopc2VwLCB4KTsKIH0KIAogLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KQEAgLTExNjgsNyArMTc5MSw3IEBACiAgICAgY2hhciBieXRlOwogICAgIFB5X2J1ZmZlciBzdWJidWY7CiAgICAgY29uc3QgY2hhciAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKICAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKICAgICBQeV9zc2l6ZV90IHJlczsKIApAQCAtMTE4NywxNSArMTgxMCwzNCBAQAogICAgICAgICBzdWIgPSAmYnl0ZTsKICAgICAgICAgc3ViX2xlbiA9IDE7CiAgICAgfQorICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7CiAKLSAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKKyNpZm5kZWYgSEFWRV9NRU1SQ0hSCisgICAgICAgICAgICAmJiBkaXIgPiAwCisjZW5kaWYKKyAgICApIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOworICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOworICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKKyAgICAgICAgaWYgKHJlcyA+PSAwKQorICAgICAgICAgICAgcmVzICs9IHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgfQogCiAgICAgaWYgKHN1Ym9iaikKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKQEAgLTEzNTQsNjIgKzE5OTYsNjkgQEAKIAogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLWRvX2FyZ3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICphcmdzKQorZG9fYXJnc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmJ5dGVzKQogewotICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIHN0cmlwZm9ybWF0W3N0cmlwdHlwZV0sICZzZXApKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzZXAgIT0gTlVMTCAmJiBzZXAgIT0gUHlfTm9uZSkgewotICAgICAgICByZXR1cm4gZG9feHN0cmlwKHNlbGYsIHN0cmlwdHlwZSwgc2VwKTsKKyAgICBpZiAoYnl0ZXMgIT0gTlVMTCAmJiBieXRlcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIHJldHVybiBkb194c3RyaXAoc2VsZiwgc3RyaXB0eXBlLCBieXRlcyk7CiAgICAgfQogICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBzdHJpcHR5cGUpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zdHJpcAogCi1QeURvY19TVFJWQVIoc3RyaXBfX2RvY19fLAotIkIuc3RyaXAoW2J5dGVzXSkgLT4gYnl0ZXNcblwKLVxuXAotU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzdjMjI4ZDNiZDEwNGExYiBpbnB1dD0zN2RhYTVmYWQxMzk1ZDk1XSovCiB7Ci0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkKLSAgICAgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIEJPVEhTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCi0gICAgZWxzZQotICAgICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBhcmdzKTsKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBieXRlcyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLmxzdHJpcAogCi1QeURvY19TVFJWQVIobHN0cmlwX19kb2NfXywKLSJCLmxzdHJpcChbYnl0ZXNdKSAtPiBieXRlc1xuXAotXG5cCi1TdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG5cCi1JZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgc3RyaXAgbGVhZGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nICBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfbHN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfbHN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjAyZTU4NmY1MjRlODIgaW5wdXQ9ODg4MTFiMDlkZmJjMjk4OF0qLwogewotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApCi0gICAgICAgIHJldHVybiBkb19zdHJpcChzZWxmLCBMRUZUU1RSSVApOyAvKiBDb21tb24gY2FzZSAqLwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYXJncyk7CisgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYnl0ZXMpOwogfQogCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yc3RyaXAKIAotUHlEb2NfU1RSVkFSKHJzdHJpcF9fZG9jX18sCi0iQi5yc3RyaXAoW2J5dGVzXSkgLT4gYnl0ZXNcblwKLVxuXAotU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cblwKLUlmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkLCBzdHJpcCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzdHJpcChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PThmOTNjOWNkMzYxZjAxNDBdKi8KIHsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQotICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgUklHSFRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCi0gICAgZWxzZQotICAgICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYXJncyk7CisgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIFJJR0hUU1RSSVAsIGJ5dGVzKTsKIH0KIAogCkBAIC0xNDYxLDQ1ICsyMTEwLDUxIEBACiB9CiAKIAotUHlEb2NfU1RSVkFSKHRyYW5zbGF0ZV9fZG9jX18sCi0iQi50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pIC0+IGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiwgd2hlcmUgYWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZVxuXAotb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQsIGFuZCB0aGUgcmVtYWluaW5nXG5cCi1jaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb25cblwKLXRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuIik7CisvKltjbGluaWMgaW5wdXRdCitieXRlcy50cmFuc2xhdGUKKworICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKKyAgICB0YWJsZTogb2JqZWN0CisgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCisgICAgWworICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKKyAgICBdCisgICAgLworCitSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KKworQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK1RoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLCBpbnQgZ3JvdXBfcmlnaHRfMSwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzNkZjg1MGViNTBiZjhkIGlucHV0PWQ4ZmE1NTE5ZDdjYzRiZTddKi8KIHsKICAgICBjaGFyICppbnB1dCwgKm91dHB1dDsKICAgICBQeV9idWZmZXIgdGFibGVfdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9idWZmZXIgZGVsX3RhYmxlX3ZpZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgY29uc3QgY2hhciAqdGFibGU7CisgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CiAgICAgUHlfc3NpemVfdCBpLCBjLCBjaGFuZ2VkID0gMDsKICAgICBQeU9iamVjdCAqaW5wdXRfb2JqID0gKFB5T2JqZWN0KilzZWxmOwotICAgIGNvbnN0IGNoYXIgKm91dHB1dF9zdGFydCwgKmRlbF90YWJsZT1OVUxMOworICAgIGNvbnN0IGNoYXIgKm91dHB1dF9zdGFydCwgKmRlbF90YWJsZV9jaGFycz1OVUxMOwogICAgIFB5X3NzaXplX3QgaW5sZW4sIHRhYmxlbiwgZGVsbGVuID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGludCB0cmFuc190YWJsZVsyNTZdOwotICAgIFB5T2JqZWN0ICp0YWJsZW9iaiwgKmRlbG9iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cmFuc2xhdGUiLCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFibGVvYmosICZkZWxvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHRhYmxlb2JqKSkgewotICAgICAgICB0YWJsZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRhYmxlb2JqKTsKLSAgICAgICAgdGFibGVuID0gUHlCeXRlc19HRVRfU0laRSh0YWJsZW9iaik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFibGUpKSB7CisgICAgICAgIHRhYmxlX2NoYXJzID0gUHlCeXRlc19BU19TVFJJTkcodGFibGUpOworICAgICAgICB0YWJsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRhYmxlKTsKICAgICB9Ci0gICAgZWxzZSBpZiAodGFibGVvYmogPT0gUHlfTm9uZSkgewotICAgICAgICB0YWJsZSA9IE5VTEw7CisgICAgZWxzZSBpZiAodGFibGUgPT0gUHlfTm9uZSkgeworICAgICAgICB0YWJsZV9jaGFycyA9IE5VTEw7CiAgICAgICAgIHRhYmxlbiA9IDI1NjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodGFibGVvYmosICZ0YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodGFibGUsICZ0YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdGFibGUgPSB0YWJsZV92aWV3LmJ1ZjsKKyAgICAgICAgdGFibGVfY2hhcnMgPSB0YWJsZV92aWV3LmJ1ZjsKICAgICAgICAgdGFibGVuID0gdGFibGVfdmlldy5sZW47CiAgICAgfQogCkBAIC0xNTEwLDIyICsyMTY1LDIyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChkZWxvYmogIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhkZWxvYmopKSB7Ci0gICAgICAgICAgICBkZWxfdGFibGUgPSBQeUJ5dGVzX0FTX1NUUklORyhkZWxvYmopOwotICAgICAgICAgICAgZGVsbGVuID0gUHlCeXRlc19HRVRfU0laRShkZWxvYmopOworICAgIGlmIChkZWxldGVjaGFycyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGRlbGV0ZWNoYXJzKSkgeworICAgICAgICAgICAgZGVsX3RhYmxlX2NoYXJzID0gUHlCeXRlc19BU19TVFJJTkcoZGVsZXRlY2hhcnMpOworICAgICAgICAgICAgZGVsbGVuID0gUHlCeXRlc19HRVRfU0laRShkZWxldGVjaGFycyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbG9iaiwgJmRlbF90YWJsZV92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoZGVsZXRlY2hhcnMsICZkZWxfdGFibGVfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWxfdGFibGUgPSBkZWxfdGFibGVfdmlldy5idWY7CisgICAgICAgICAgICBkZWxfdGFibGVfY2hhcnMgPSBkZWxfdGFibGVfdmlldy5idWY7CiAgICAgICAgICAgICBkZWxsZW4gPSBkZWxfdGFibGVfdmlldy5sZW47CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGRlbF90YWJsZSA9IE5VTEw7CisgICAgICAgIGRlbF90YWJsZV9jaGFycyA9IE5VTEw7CiAgICAgICAgIGRlbGxlbiA9IDA7CiAgICAgfQogCkBAIC0xNTM5LDExICsyMTk0LDExIEBACiAgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19Bc1N0cmluZyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAotICAgIGlmIChkZWxsZW4gPT0gMCAmJiB0YWJsZSAhPSBOVUxMKSB7CisgICAgaWYgKGRlbGxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKICAgICAgICAgLyogSWYgbm8gZGVsZXRpb25zIGFyZSByZXF1aXJlZCwgdXNlIGZhc3RlciBjb2RlICovCiAgICAgICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCgqb3V0cHV0KysgPSB0YWJsZVtjXSkpICE9IGMpCisgICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKCpvdXRwdXQrKyA9IHRhYmxlX2NoYXJzW2NdKSkgIT0gYykKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gMTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWNoYW5nZWQgJiYgUHlCeXRlc19DaGVja0V4YWN0KGlucHV0X29iaikpIHsKQEAgLTE1NTYsMTcgKzIyMTEsMTcgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAodGFibGUgPT0gTlVMTCkgeworICAgIGlmICh0YWJsZV9jaGFycyA9PSBOVUxMKSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0soaSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQotICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZVtpXSk7CisgICAgICAgICAgICB0cmFuc190YWJsZVtpXSA9IFB5X0NIQVJNQVNLKHRhYmxlX2NoYXJzW2ldKTsKICAgICB9CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgZGVsbGVuOyBpKyspCi0gICAgICAgIHRyYW5zX3RhYmxlWyhpbnQpIFB5X0NIQVJNQVNLKGRlbF90YWJsZVtpXSldID0gLTE7CisgICAgICAgIHRyYW5zX3RhYmxlWyhpbnQpIFB5X0NIQVJNQVNLKGRlbF90YWJsZV9jaGFyc1tpXSldID0gLTE7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGVsX3RhYmxlX3ZpZXcpOwogCiAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKQEAgLTE1ODgsMTAgKzIyNDMsMjggQEAKIH0KIAogCisvKltjbGluaWMgaW5wdXRdCisKK0BzdGF0aWNtZXRob2QKK2J5dGVzLm1ha2V0cmFucworCisgICAgZnJtOiBQeV9idWZmZXIKKyAgICB0bzogUHlfYnVmZmVyCisgICAgLworCitSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2VhYmxlIGZvciB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IHRyYW5zbGF0ZSBtZXRob2QuCisKK1RoZSByZXR1cm5lZCB0YWJsZSB3aWxsIGJlIG9uZSB3aGVyZSBlYWNoIGJ5dGUgaW4gZnJtIGlzIG1hcHBlZCB0byB0aGUgYnl0ZSBhdAordGhlIHNhbWUgcG9zaXRpb24gaW4gdG8uCisKK1RoZSBieXRlcyBvYmplY3RzIGZybSBhbmQgdG8gbXVzdCBiZSBvZiB0aGUgc2FtZSBsZW5ndGguCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19tYWtldHJhbnMoUHlPYmplY3QgKm51bGwsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTM2ZjYzOTlkNGI3N2Y2ZiBpbnB1dD1kZTdhOGZjNTYzMmJiOGYxXSovCiB7Ci0gICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoYXJncyk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoZnJtLCB0byk7CiB9CiAKIC8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KQEAgLTIwODYsMzEgKzI3NTksMzEgQEAKICAgICB9CiB9CiAKLVB5RG9jX1NUUlZBUihyZXBsYWNlX19kb2NfXywKLSJCLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pIC0+IGJ5dGVzXG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uXG5cCi1vbGQgcmVwbGFjZWQgYnkgbmV3LiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzXG5cCi1naXZlbiwgb25seSBmaXJzdCBjb3VudCBvY2N1cmFuY2VzIGFyZSByZXBsYWNlZC4iKTsKKworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucmVwbGFjZQorCisgICAgb2xkOiBQeV9idWZmZXIKKyAgICBuZXc6IFB5X2J1ZmZlcgorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS4KKyAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy4KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlCityZXBsYWNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDNkYzlkN2E4M2M1YTFkIGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KIHsKLSAgICBQeU9iamVjdCAqcmVzOwotICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07Ci0gICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwgJm9sZCwgJm5ldywgJmNvdW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXMgPSAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVzT2JqZWN0ICopIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC5idWYsIG9sZC5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy5idWYsIG5ldy5sZW4sIGNvdW50KTsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKLSAgICByZXR1cm4gcmVzOworICAgIHJldHVybiAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVzT2JqZWN0ICopIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLyoqIEVuZCBEQUxLRSAqKi8KQEAgLTIyNTcsNjAgKzI5MzAsNTEgQEAKIH0KIAogCi1QeURvY19TVFJWQVIoZGVjb2RlX19kb2NfXywKLSJCLmRlY29kZShlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3N0cmljdCcpIC0+IHN0clxuXAotXG5cCi1EZWNvZGUgQiB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuIERlZmF1bHQgZW5jb2RpbmdcblwKLWlzICd1dGYtOCcuIGVycm9ycyBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yXG5cCi1oYW5kbGluZyBzY2hlbWUuICBEZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2VcblwKLWEgVW5pY29kZURlY29kZUVycm9yLiAgT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSAnaWdub3JlJyBhbmQgJ3JlcGxhY2UnXG5cCi1hcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGlzXG5cCi1hYmxlIHRvIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMuZGVjb2RlCisKKyAgICBlbmNvZGluZzogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3V0Zi04JworICAgICAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVzLgorICAgIGVycm9yczogc3RyKGNfZGVmYXVsdD0iTlVMTCIpID0gJ3N0cmljdCcKKyAgICAgICAgVGhlIGVycm9yIGhhbmRsaW5nIHNjaGVtZSB0byB1c2UgZm9yIHRoZSBoYW5kbGluZyBvZiBkZWNvZGluZyBlcnJvcnMuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzICdzdHJpY3QnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYQorICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ2lnbm9yZScgYW5kICdyZXBsYWNlJworICAgICAgICBhcyB3ZWxsIGFzIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgd2l0aCBjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdAorICAgICAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuCisKK0RlY29kZSB0aGUgYnl0ZXMgdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yIGVuY29kaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQyMDE2ZmY4ZTBiYjE3NiBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCiB7Ci0gICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBrd2xpc3QsICZlbmNvZGluZywgJmVycm9ycykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Qoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgoUHlPYmplY3QqKXNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogfQogCiAKLVB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKLSJCLnNwbGl0bGluZXMoW2tlZXBlbmRzXSkgLT4gbGlzdCBvZiBsaW5lc1xuXAotXG5cCi1SZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiBCLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuXG5cCi1MaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHNcblwKLWlzIGdpdmVuIGFuZCB0cnVlLiIpOworLypbY2xpbmljIGlucHV0XQorYnl0ZXMuc3BsaXRsaW5lcwogCi1zdGF0aWMgUHlPYmplY3QqCi1ieXRlc19zcGxpdGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCisgICAga2VlcGVuZHM6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisKK1JldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlcywgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLgorCitMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kCit0cnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5NWMzNTk4Zjc4MzNjYWQgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLwogewotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsia2VlcGVuZHMiLCAwfTsKLSAgICBpbnQga2VlcGVuZHMgPSAwOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLAogICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBrZWVwZW5kcwogICAgICAgICApOwogfQogCi0KLVB5RG9jX1NUUlZBUihmcm9taGV4X2RvYywKLSJieXRlcy5mcm9taGV4KHN0cmluZykgLT4gYnl0ZXNcblwKLVxuXAotQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cblwKLVNwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC5cblwKLUV4YW1wbGU6IGJ5dGVzLmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBiJ1xceGI5XFx4MDFcXHhlZicuIik7Ci0KIHN0YXRpYyBpbnQKIGhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQogewpAQCAtMjMyNywyNCArMjk5MSwzNiBAQAogICAgIHJldHVybiAtMTsKIH0KIAorLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitieXRlcy5mcm9taGV4CisKKyAgICBzdHJpbmc6IHVuaWNvZGUKKyAgICAvCisKK0NyZWF0ZSBhIGJ5dGVzIG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuCisKK1NwYWNlcyBiZXR3ZWVuIHR3byBudW1iZXJzIGFyZSBhY2NlcHRlZC4KK0V4YW1wbGU6IGJ5dGVzLmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBiJ1xceGI5XFx4MDFcXHhlZicuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3c3RyaW5nLCAqaGV4b2JqOworICAgIFB5T2JqZWN0ICpuZXdzdHJpbmc7CiAgICAgY2hhciAqYnVmOwogICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKICAgICBpbnQgdG9wLCBib3Q7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpmcm9taGV4IiwgJmhleG9iaikpCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soaGV4b2JqKSk7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShoZXhvYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaGV4b2JqKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaGV4b2JqKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChoZXhvYmopOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CiAKICAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwogICAgIG5ld3N0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwpAQCAtMjM3Niw2ICszMDUyLDIwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5RG9jX1NUUlZBUihoZXhfX2RvY19fLAorIkIuaGV4KCkgLT4gc3RyaW5nXG5cCitcblwKK0NyZWF0ZSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzIGZyb20gYSBieXRlcyBvYmplY3QuXG5cCitFeGFtcGxlOiBiJ1xceGI5XFx4MDFcXHhlZicuaGV4KCkgLT4gJ2I5MDFlZicuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19oZXgoUHlCeXRlc09iamVjdCAqc2VsZikKK3sKKyAgICBjaGFyKiBhcmdidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGFyZ2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoYXJnYnVmLCBhcmdsZW4pOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfZ2V0bmV3YXJncyhQeUJ5dGVzT2JqZWN0ICp2KQogewpAQCAtMjM5MCwxNCArMzA4MCwxNCBAQAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAogICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCiAgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZGVjb2RlX19kb2NfX30sCisgICAgQllURVNfREVDT0RFX01FVEhPRERFRgogICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKICAgICAgZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKICAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCi0gICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2Zyb21oZXgsIE1FVEhfVkFSQVJHU3xNRVRIX0NMQVNTLAotICAgICBmcm9taGV4X2RvY30sCisgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKICAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKQEAgLTI0MTMsMzggKzMxMDMsNDkgQEAKICAgICAgX1B5X2lzdGl0bGVfX2RvY19ffSwKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAotICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlc19qb2luLCBNRVRIX08sIGpvaW5fX2RvY19ffSwKKyAgICBCWVRFU19KT0lOX01FVEhPRERFRgogICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKLSAgICB7ImxzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19sc3RyaXAsIE1FVEhfVkFSQVJHUywgbHN0cmlwX19kb2NfX30sCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsCi0gICAgIF9QeV9tYWtldHJhbnNfX2RvY19ffSwKLSAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19wYXJ0aXRpb24sIE1FVEhfTywgcGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgcmVwbGFjZV9fZG9jX199LAorICAgIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFU19NQUtFVFJBTlNfTUVUSE9EREVGCisgICAgQllURVNfUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGCiAgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAogICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAotICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19ycGFydGl0aW9uLCBNRVRIX08sCi0gICAgIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19yc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHJzcGxpdF9fZG9jX199LAotICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzdHJpcCwgTUVUSF9WQVJBUkdTLCByc3RyaXBfX2RvY19ffSwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgQllURVNfUlBBUlRJVElPTl9NRVRIT0RERUYKKyAgICBCWVRFU19SU1BMSVRfTUVUSE9EREVGCisgICAgQllURVNfUlNUUklQX01FVEhPRERFRgorICAgIEJZVEVTX1NQTElUX01FVEhPRERFRgorICAgIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUywKICAgICAgc3RhcnRzd2l0aF9fZG9jX199LAotICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RyaXAsIE1FVEhfVkFSQVJHUywgc3RyaXBfX2RvY19ffSwKKyAgICBCWVRFU19TVFJJUF9NRVRIT0RERUYKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9zd2FwY2FzZV9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3RpdGxlLCBNRVRIX05PQVJHUywgX1B5X3RpdGxlX19kb2NfX30sCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsCi0gICAgIHRyYW5zbGF0ZV9fZG9jX199LAorICAgIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAogICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCiAgICAge05VTEwsICAgICBOVUxMfSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdCh2LCB3KTsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlc19hc19udW1iZXIgPSB7CisgICAgMCwgICAgICAgICAgICAgIC8qbmJfYWRkKi8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9zdWJ0cmFjdCovCisgICAgMCwgICAgICAgICAgICAgIC8qbmJfbXVsdGlwbHkqLworICAgIGJ5dGVzX21vZCwgICAgICAvKm5iX3JlbWFpbmRlciovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgogc3RyX3N1YnR5cGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0NzEsNyArMzE3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewpAQCAtMjUyOCwxMSArMzIyOSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICAgICAgbmV3ID0gX1B5Qnl0ZXNfRnJvbVNpemUoc2l6ZSwgMSk7CiAgICAgICAgIGlmIChuZXcgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoc2l6ZSA+IDApCi0gICAgICAgICAgICBtZW1zZXQoKChQeUJ5dGVzT2JqZWN0KiluZXcpLT5vYl9zdmFsLCAwLCBzaXplKTsKICAgICAgICAgcmV0dXJuIG5ldzsKICAgICB9CiAKQEAgLTI2MzAsMTAgKzMzMjksMTIgQEAKICAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKICAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCiAgICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBzaXplICs9IDE7CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgc2l6ZSA9IDE7CiAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKICAgICBpZiAobmV3ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeV9SRUZDTlQobmV3KSA9PSAxKTsKIAogICAgIC8qIEdldCB0aGUgaXRlcmF0b3IgKi8KICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7CkBAIC0yNzM1LDcgKzM0MzYsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KICAgICAocmVwcmZ1bmMpYnl0ZXNfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgICZieXRlc19hc19udW1iZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJmJ5dGVzX2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwogICAgICZieXRlc19hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIChoYXNoZnVuYylieXRlc19oYXNoLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwpAQCAtMjc3MCw3ICszNDcxLDYgQEAKIHZvaWQKIFB5Qnl0ZXNfQ29uY2F0KFB5T2JqZWN0ICoqcHYsIFB5T2JqZWN0ICp3KQogewotICAgIFB5T2JqZWN0ICp2OwogICAgIGFzc2VydChwdiAhPSBOVUxMKTsKICAgICBpZiAoKnB2ID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NzgsOSArMzQ3OCw0NSBAQAogICAgICAgICBQeV9DTEVBUigqcHYpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHYgPSBieXRlc19jb25jYXQoKnB2LCB3KTsKLSAgICBQeV9ERUNSRUYoKnB2KTsKLSAgICAqcHYgPSB2OworCisgICAgaWYgKFB5X1JFRkNOVCgqcHYpID09IDEgJiYgUHlCeXRlc19DaGVja0V4YWN0KCpwdikpIHsKKyAgICAgICAgLyogT25seSBvbmUgcmVmZXJlbmNlLCBzbyB3ZSBjYW4gcmVzaXplIGluIHBsYWNlICovCisgICAgICAgIFB5X3NzaXplX3Qgb2xkc2l6ZTsKKyAgICAgICAgUHlfYnVmZmVyIHdiOworCisgICAgICAgIHdiLmxlbiA9IC0xOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHcsICZ3YiwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiY2FuJ3QgY29uY2F0ICUuMTAwcyB0byAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodyktPnRwX25hbWUsIFB5X1RZUEUoKnB2KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9DTEVBUigqcHYpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgb2xkc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKnB2KTsKKyAgICAgICAgaWYgKG9sZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHdiLmxlbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShwdiwgb2xkc2l6ZSArIHdiLmxlbikgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcoKnB2KSArIG9sZHNpemUsIHdiLmJ1Ziwgd2IubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmd2IpOworICAgICAgICByZXR1cm47CisKKyAgICAgIGVycm9yOgorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3Yik7CisgICAgICAgIFB5X0NMRUFSKCpwdik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBlbHNlIHsKKyAgICAgICAgLyogTXVsdGlwbGUgcmVmZXJlbmNlcywgbmVlZCB0byBjcmVhdGUgbmV3IG9iamVjdCAqLworICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgdiA9IGJ5dGVzX2NvbmNhdCgqcHYsIHcpOworICAgICAgICBQeV9ERUNSRUYoKnB2KTsKKyAgICAgICAgKnB2ID0gdjsKKyAgICB9CiB9CiAKIHZvaWQKQEAgLTI3OTEsMTQgKzM1MjcsMTQgQEAKIH0KIAogCi0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGJyZWFrcyB0aGUgbm90aW9uIHRoYXQgc3RyaW5ncyBhcmUgaW1tdXRhYmxlOgotICAgaXQgY2hhbmdlcyB0aGUgc2l6ZSBvZiBhIHN0cmluZy4gIFdlIGdldCBhd2F5IHdpdGggdGhpcyBvbmx5IGlmIHRoZXJlCisvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGJyZWFrcyB0aGUgbm90aW9uIHRoYXQgYnl0ZXMgYXJlIGltbXV0YWJsZToKKyAgIGl0IGNoYW5nZXMgdGhlIHNpemUgb2YgYSBieXRlcyBvYmplY3QuICBXZSBnZXQgYXdheSB3aXRoIHRoaXMgb25seSBpZiB0aGVyZQogICAgaXMgb25seSBvbmUgbW9kdWxlIHJlZmVyZW5jaW5nIHRoZSBvYmplY3QuICBZb3UgY2FuIGFsc28gdGhpbmsgb2YgaXQKLSAgIGFzIGNyZWF0aW5nIGEgbmV3IHN0cmluZyBvYmplY3QgYW5kIGRlc3Ryb3lpbmcgdGhlIG9sZCBvbmUsIG9ubHkKLSAgIG1vcmUgZWZmaWNpZW50bHkuICBJbiBhbnkgY2FzZSwgZG9uJ3QgdXNlIHRoaXMgaWYgdGhlIHN0cmluZyBtYXkKKyAgIGFzIGNyZWF0aW5nIGEgbmV3IGJ5dGVzIG9iamVjdCBhbmQgZGVzdHJveWluZyB0aGUgb2xkIG9uZSwgb25seQorICAgbW9yZSBlZmZpY2llbnRseS4gIEluIGFueSBjYXNlLCBkb24ndCB1c2UgdGhpcyBpZiB0aGUgYnl0ZXMgb2JqZWN0IG1heQogICAgYWxyZWFkeSBiZSBrbm93biB0byBzb21lIG90aGVyIHBhcnQgb2YgdGhlIGNvZGUuLi4KLSAgIE5vdGUgdGhhdCBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlc2l6ZSB0aGUgc3RyaW5nLCB0aGUgb3JpZ2luYWwKLSAgIHN0cmluZyBvYmplY3QgYXQgKnB2IGlzIGRlYWxsb2NhdGVkLCAqcHYgaXMgc2V0IHRvIE5VTEwsIGFuICJvdXQgb2YKKyAgIE5vdGUgdGhhdCBpZiB0aGVyZSdzIG5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlc2l6ZSB0aGUgYnl0ZXMgb2JqZWN0LCB0aGUKKyAgIG9yaWdpbmFsIGJ5dGVzIG9iamVjdCBhdCAqcHYgaXMgZGVhbGxvY2F0ZWQsICpwdiBpcyBzZXQgdG8gTlVMTCwgYW4gIm91dCBvZgogICAgbWVtb3J5IiBleGNlcHRpb24gaXMgc2V0LCBhbmQgLTEgaXMgcmV0dXJuZWQuICBFbHNlIChvbiBzdWNjZXNzKSAwIGlzCiAgICByZXR1cm5lZCwgYW5kIHRoZSB2YWx1ZSBpbiAqcHYgbWF5IG9yIG1heSBub3QgYmUgdGhlIHNhbWUgYXMgb24gaW5wdXQuCiAgICBBcyBhbHdheXMsIGFuIGV4dHJhIGJ5dGUgaXMgYWxsb2NhdGVkIGZvciBhIHRyYWlsaW5nIFwwIGJ5dGUgKG5ld3NpemUKQEAgLTI4MjEsNyArMzU1Nyw3IEBACiAgICAgX1B5X0RFQ19SRUZUT1RBTDsKICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHYpOwogICAgICpwdiA9IChQeU9iamVjdCAqKQotICAgICAgICBQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdiwgUHlCeXRlc09iamVjdF9TSVpFICsgbmV3c2l6ZSk7CisgICAgICAgIFB5T2JqZWN0X1JFQUxMT0ModiwgUHlCeXRlc09iamVjdF9TSVpFICsgbmV3c2l6ZSk7CiAgICAgaWYgKCpwdiA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0X0RlbCh2KTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvY2xhc3NvYmplY3QuYyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwppbmRleCAwYzBiZDQ3Li41ZThhYzU5IDEwMDY0NAotLS0gYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCkBAIC0xNSw2ICsxNSw3IEBACiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKIAogUHlPYmplY3QgKgogUHlNZXRob2RfRnVuY3Rpb24oUHlPYmplY3QgKmltKQpAQCAtMjQzLDUxICsyNDQsMzMgQEAKIHsKICAgICBQeU9iamVjdCAqc2VsZiA9IGEtPmltX3NlbGY7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSBhLT5pbV9mdW5jOwotICAgIFB5T2JqZWN0ICprbGFzczsKLSAgICBQeU9iamVjdCAqZnVuY25hbWUgPSBOVUxMICwqa2xhc3NuYW1lID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7Ci0gICAgY2hhciAqZGVmbmFtZSA9ICI/IjsKKyAgICBQeU9iamVjdCAqZnVuY25hbWUgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpkZWZuYW1lID0gIj8iOwogCi0gICAgaWYgKHNlbGYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGtsYXNzID0gKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpOwotCi0gICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKKyAgICBmdW5jbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnVuYywgJlB5SWRfX19xdWFsbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKGZ1bmNuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZnVuY25hbWUpKSB7CisKKyAgICBpZiAoZnVuY25hbWUgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKGZ1bmNuYW1lKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuY25hbWUpOwogICAgICAgICBmdW5jbmFtZSA9IE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGtsYXNzID09IE5VTEwpCi0gICAgICAgIGtsYXNzbmFtZSA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGtsYXNzbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoa2xhc3MsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgaWYgKGtsYXNzbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmdW5jbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2xhc3NuYW1lKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGtsYXNzbmFtZSk7Ci0gICAgICAgICAgICBrbGFzc25hbWUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLyogWFhYIFNob3VsZG4ndCB1c2UgcmVwcigpLyVSIGhlcmUhICovCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxib3VuZCBtZXRob2QgJVYuJVYgb2YgJVI+IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrbGFzc25hbWUsIGRlZm5hbWUsCisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxib3VuZCBtZXRob2QgJVYgb2YgJVI+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jbmFtZSwgZGVmbmFtZSwgc2VsZik7CiAKICAgICBQeV9YREVDUkVGKGZ1bmNuYW1lKTsKLSAgICBQeV9YREVDUkVGKGtsYXNzbmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3YTIyMQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKQEAgLTAsMCArMSw2OTggQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfY2xlYXJfX2RvY19fLAorImNsZWFyKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRiAgICBcCisgICAgeyJjbGVhciIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY2xlYXIsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfY2xlYXJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jbGVhcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X2NsZWFyX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgQi4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY29weSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jb3B5KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX18sCisidHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgorIlxuIgorIiAgdGFibGVcbiIKKyIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKKyJcbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRhYmxlOworICAgIGludCBncm91cF9yaWdodF8xID0gMDsKKyAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOworCisgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X21ha2V0cmFuc19fZG9jX18sCisibWFrZXRyYW5zKGZybSwgdG8sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2VhYmxlIGZvciB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IHRyYW5zbGF0ZSBtZXRob2QuXG4iCisiXG4iCisiVGhlIHJldHVybmVkIHRhYmxlIHdpbGwgYmUgb25lIHdoZXJlIGVhY2ggYnl0ZSBpbiBmcm0gaXMgbWFwcGVkIHRvIHRoZSBieXRlIGF0XG4iCisidGhlIHNhbWUgcG9zaXRpb24gaW4gdG8uXG4iCisiXG4iCisiVGhlIGJ5dGVzIG9iamVjdHMgZnJtIGFuZCB0byBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aC4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCisgICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLCBieXRlYXJyYXlfbWFrZXRyYW5zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZnJtID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAorICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCisgICAgaWYgKGZybS5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICAvKiBDbGVhbnVwIGZvciB0byAqLworICAgIGlmICh0by5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdG8pOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKCRzZWxmLCBvbGQsIG5ldywgY291bnQ9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBvbGQgcmVwbGFjZWQgYnkgbmV3LlxuIgorIlxuIgorIiAgY291bnRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy5cbiIKKyJcbiIKKyJJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgY291bnQgaXMgZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZVxuIgorInJlcGxhY2VkLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZXBsYWNlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9yZXBsYWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVwbGFjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLworICAgIGlmIChvbGQub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCisgICAgaWYgKG5ldy5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc3BsaXRfX2RvY19fLAorInNwbGl0KCRzZWxmLCAvLCBzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZWFycmF5LCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZWFycmF5LlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOworICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcGFydGl0aW9uX19kb2NfXywKKyJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZWFycmF5IGludG8gdGhyZWUgcGFydHMgdXNpbmcgdGhlIGdpdmVuIHNlcGFyYXRvci5cbiIKKyJcbiIKKyJUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZWFycmF5LiBJZiB0aGUgc2VwYXJhdG9yIGlzXG4iCisiZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZVxuIgorInNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgb3JpZ2luYWxcbiIKKyJieXRlYXJyYXkgb2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZWFycmF5IG9iamVjdHMuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1BBUlRJVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsicGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9wYXJ0aXRpb24sIE1FVEhfTywgYnl0ZWFycmF5X3BhcnRpdGlvbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JwYXJ0aXRpb25fX2RvY19fLAorInJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlYXJyYXksIHN0YXJ0aW5nIGFuZCB0aGUgZW5kLlxuIgorIklmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZVxuIgorInNlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC5cbiIKKyJcbiIKKyJJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdCBmb3VuZCwgcmV0dXJucyBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgYnl0ZWFycmF5XG4iCisib2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVhcnJheSBvYmplY3QuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JQQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JwYXJ0aXRpb24sIE1FVEhfTywgYnl0ZWFycmF5X3JwYXJ0aXRpb25fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9yc3BsaXRfX2RvY19fLAorInJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVhcnJheSwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG4iCisiXG4iCisiICBzZXBcbiIKKyIgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVhcnJheS5cbiIKKyIgICAgTm9uZSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHNwbGl0IG9uIEFTQ0lJIHdoaXRlc3BhY2UgY2hhcmFjdGVyc1xuIgorIiAgICAoc3BhY2UsIHRhYiwgcmV0dXJuLCBuZXdsaW5lLCBmb3JtZmVlZCwgdmVydGljYWwgdGFiKS5cbiIKKyIgIG1heHNwbGl0XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIHNwbGl0cyB0byBkby5cbiIKKyIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC5cbiIKKyJcbiIKKyJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3JzcGxpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKKyAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmV2ZXJzZV9fZG9jX18sCisicmV2ZXJzZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVWRVJTRV9NRVRIT0RERUYgICAgXAorICAgIHsicmV2ZXJzZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmV2ZXJzZSwgTUVUSF9OT0FSR1MsIGJ5dGVhcnJheV9yZXZlcnNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZXZlcnNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X2luc2VydF9fZG9jX18sCisiaW5zZXJ0KCRzZWxmLCBpbmRleCwgaXRlbSwgLylcbiIKKyItLVxuIgorIlxuIgorIkluc2VydCBhIHNpbmdsZSBpdGVtIGludG8gdGhlIGJ5dGVhcnJheSBiZWZvcmUgdGhlIGdpdmVuIGluZGV4LlxuIgorIlxuIgorIiAgaW5kZXhcbiIKKyIgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC5cbiIKKyIgIGl0ZW1cbiIKKyIgICAgVGhlIGl0ZW0gdG8gYmUgaW5zZXJ0ZWQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0lOU0VSVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5zZXJ0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbnNlcnQsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X2luc2VydF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2luc2VydF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBpbnQgaXRlbSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfaW5zZXJ0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4OworICAgIGludCBpdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyY6aW5zZXJ0IiwKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfYXBwZW5kX19kb2NfXywKKyJhcHBlbmQoJHNlbGYsIGl0ZW0sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgYSBzaW5nbGUgaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuXG4iCisiXG4iCisiICBpdGVtXG4iCisiICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGICAgIFwKKyAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYXBwZW5kLCBNRVRIX08sIGJ5dGVhcnJheV9hcHBlbmRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2FwcGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgaXRlbTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2FwcGVuZF9pbXBsKHNlbGYsIGl0ZW0pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZXh0ZW5kX19kb2NfXywKKyJleHRlbmQoJHNlbGYsIGl0ZXJhYmxlX29mX2ludHMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBcHBlbmQgYWxsIHRoZSBpdGVtcyBmcm9tIHRoZSBpdGVyYXRvciBvciBzZXF1ZW5jZSB0byB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkuXG4iCisiXG4iCisiICBpdGVyYWJsZV9vZl9pbnRzXG4iCisiICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9leHRlbmQsIE1FVEhfTywgYnl0ZWFycmF5X2V4dGVuZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3BvcF9fZG9jX18sCisicG9wKCRzZWxmLCBpbmRleD0tMSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhbmQgcmV0dXJuIGEgc2luZ2xlIGl0ZW0gZnJvbSBCLlxuIgorIlxuIgorIiAgaW5kZXhcbiIKKyIgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLlxuIgorIlxuIgorIklmIG5vIGluZGV4IGFyZ3VtZW50IGlzIGdpdmVuLCB3aWxsIHBvcCB0aGUgbGFzdCBpdGVtLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9QT1BfTUVUSE9EREVGICAgIFwKKyAgICB7InBvcCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcG9wLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9wb3BfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcG9wKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCisgICAgICAgICZpbmRleCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcG9wX2ltcGwoc2VsZiwgaW5kZXgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVtb3ZlX19kb2NfXywKKyJyZW1vdmUoJHNlbGYsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgdmFsdWUgaW4gdGhlIGJ5dGVhcnJheS5cbiIKKyJcbiIKKyIgIHZhbHVlXG4iCisiICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFTU9WRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZW1vdmUsIE1FVEhfTywgYnl0ZWFycmF5X3JlbW92ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlbW92ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoc2VsZiwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfc3RyaXBfX2RvY19fLAorInN0cmlwKCRzZWxmLCBieXRlcz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyBBU0NJSSB3aGl0ZXNwYWNlLiIpOworCisjZGVmaW5lIEJZVEVBUlJBWV9TVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0cmlwLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9zdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3N0cmlwX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3RyaXAoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9sc3RyaXBfX2RvY19fLAorImxzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC5cbiIKKyJcbiIKKyJJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsibHN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9sc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X2xzdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2xzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2xzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcnN0cmlwX19kb2NfXywKKyJyc3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCB0cmFpbGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LlxuIgorIlxuIgorIklmIHRoZSBhcmd1bWVudCBpcyBvbWl0dGVkIG9yIE5vbmUsIHN0cmlwIHRyYWlsaW5nIEFTQ0lJIHdoaXRlc3BhY2UuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZWFycmF5X3JzdHJpcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzdHJpcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZGVjb2RlX19kb2NfXywKKyJkZWNvZGUoJHNlbGYsIC8sIGVuY29kaW5nPVwndXRmLThcJywgZXJyb3JzPVwnc3RyaWN0XCcpXG4iCisiLS1cbiIKKyJcbiIKKyJEZWNvZGUgdGhlIGJ5dGVhcnJheSB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiICBlbmNvZGluZ1xuIgorIiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVhcnJheS5cbiIKKyIgIGVycm9yc1xuIgorIiAgICBUaGUgZXJyb3IgaGFuZGxpbmcgc2NoZW1lIHRvIHVzZSBmb3IgdGhlIGhhbmRsaW5nIG9mIGRlY29kaW5nIGVycm9ycy5cbiIKKyIgICAgVGhlIGRlZmF1bHQgaXMgXCdzdHJpY3RcJyBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGFcbiIKKyIgICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlIFwnaWdub3JlXCcgYW5kIFwncmVwbGFjZVwnXG4iCisiICAgIGFzIHdlbGwgYXMgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCB3aXRoIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0XG4iCisiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9kZWNvZGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9kZWNvZGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfam9pbl9fZG9jX18sCisiam9pbigkc2VsZiwgaXRlcmFibGVfb2ZfYnl0ZXMsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDb25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzL2J5dGVhcnJheSBvYmplY3RzLlxuIgorIlxuIgorIlRoZSBieXRlYXJyYXkgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVhcnJheSBvYmplY3QuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImpvaW4iLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2pvaW4sIE1FVEhfTywgYnl0ZWFycmF5X2pvaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfXywKKyJzcGxpdGxpbmVzKCRzZWxmLCAvLCBrZWVwZW5kcz1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlYXJyYXksIGJyZWFraW5nIGF0IGxpbmUgYm91bmRhcmllcy5cbiIKKyJcbiIKKyJMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdCB1bmxlc3Mga2VlcGVuZHMgaXMgZ2l2ZW4gYW5kXG4iCisidHJ1ZS4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBpbnQga2VlcGVuZHMgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKKyAgICAgICAgJmtlZXBlbmRzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfZnJvbWhleF9fZG9jX18sCisiZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgYnl0ZWFycmF5IG9iamVjdCBmcm9tIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuXG4iCisiXG4iCisiU3BhY2VzIGJldHdlZW4gdHdvIG51bWJlcnMgYXJlIGFjY2VwdGVkLlxuIgorIkV4YW1wbGU6IGJ5dGVhcnJheS5mcm9taGV4KFwnQjkgMDFFRlwnKSAtPiBieXRlYXJyYXkoYlwnXFxcXHhiOVxcXFx4MDFcXFxceGVmXCcpIik7CisKKyNkZWZpbmUgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfT3xNRVRIX0NMQVNTLCBieXRlYXJyYXlfZnJvbWhleF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cmluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZnJvbWhleF9pbXBsKChQeU9iamVjdCopY2xzLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlYXJyYXlfcmVkdWNlX19kb2NfXywKKyJfX3JlZHVjZV9fKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfUkVEVUNFX01FVEhPRERFRiAgICBcCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfcmVkdWNlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X3JlZHVjZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3JlZHVjZV9leF9fZG9jX18sCisiX19yZWR1Y2VfZXhfXygkc2VsZiwgcHJvdG89MCwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKKyNkZWZpbmUgQllURUFSUkFZX1JFRFVDRV9FWF9NRVRIT0RERUYgICAgXAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlX2V4LCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV9yZWR1Y2VfZXhfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBwcm90byA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLAorICAgICAgICAmcHJvdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKHNlbGYsIHByb3RvKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZWFycmF5X3NpemVvZl9fZG9jX18sCisiX19zaXplb2ZfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4iKTsKKworI2RlZmluZSBCWVRFQVJSQVlfU0laRU9GX01FVEhPRERFRiAgICBcCisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zaXplb2YsIE1FVEhfTk9BUkdTLCBieXRlYXJyYXlfc2l6ZW9mX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3NpemVvZihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gYnl0ZWFycmF5X3NpemVvZl9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2NmMxNWZmMjJjNWUyNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMWE1ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKQEAgLTAsMCArMSw0ODcgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihieXRlc19zcGxpdF9fZG9jX18sCisic3BsaXQoJHNlbGYsIC8sIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIHRoZSBieXRlcywgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIuXG4iCisiXG4iCisiICBzZXBcbiIKKyIgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVzLlxuIgorIiAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzXG4iCisiICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLlxuIgorIiAgbWF4c3BsaXRcbiIKKyIgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLlxuIgorIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOworCisjZGVmaW5lIEJZVEVTX1NQTElUX01FVEhPRERFRiAgICBcCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcGFydGl0aW9uX19kb2NfXywKKyJwYXJ0aXRpb24oJHNlbGYsIHNlcCwgLylcbiIKKyItLVxuIgorIlxuIgorIlBhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLlxuIgorIlxuIgorIlRoaXMgd2lsbCBzZWFyY2ggZm9yIHRoZSBzZXBhcmF0b3Igc2VwIGluIHRoZSBieXRlcy4gSWYgdGhlIHNlcGFyYXRvciBpcyBmb3VuZCxcbiIKKyJyZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4iCisiaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuXG4iCisiXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJ5dGVzXG4iCisib2JqZWN0IGFuZCB0d28gZW1wdHkgYnl0ZXMgb2JqZWN0cy4iKTsKKworI2RlZmluZSBCWVRFU19QQVJUSVRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbilieXRlc19wYXJ0aXRpb24sIE1FVEhfTywgYnl0ZXNfcGFydGl0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19wYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19wYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3BhcnRpdGlvbl9pbXBsKHNlbGYsICZzZXApOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHNlcCAqLworICAgIGlmIChzZXAub2JqKQorICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcnBhcnRpdGlvbl9fZG9jX18sCisicnBhcnRpdGlvbigkc2VsZiwgc2VwLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUGFydGl0aW9uIHRoZSBieXRlcyBpbnRvIHRocmVlIHBhcnRzIHVzaW5nIHRoZSBnaXZlbiBzZXBhcmF0b3IuXG4iCisiXG4iCisiVGhpcyB3aWxsIHNlYXJjaCBmb3IgdGhlIHNlcGFyYXRvciBzZXAgaW4gdGhlIGJ5dGVzLCBzdGFydGluZyBhbmQgdGhlIGVuZC4gSWZcbiIKKyJ0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGVcbiIKKyJzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgaXQuXG4iCisiXG4iCisiSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzXG4iCisib2JqZWN0cyBhbmQgdGhlIG9yaWdpbmFsIGJ5dGVzIG9iamVjdC4iKTsKKworI2RlZmluZSBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRiAgICBcCisgICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JwYXJ0aXRpb24sIE1FVEhfTywgYnl0ZXNfcnBhcnRpdGlvbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JwYXJ0aXRpb24oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpycGFydGl0aW9uIiwgJnNlcCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19ycGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCisgICAgaWYgKHNlcC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yc3BsaXRfX2RvY19fLAorInJzcGxpdCgkc2VsZiwgLywgc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gdGhlIGJ5dGVzLCB1c2luZyBzZXAgYXMgdGhlIGRlbGltaXRlci5cbiIKKyJcbiIKKyIgIHNlcFxuIgorIiAgICBUaGUgZGVsaW1pdGVyIGFjY29yZGluZyB3aGljaCB0byBzcGxpdCB0aGUgYnl0ZXMuXG4iCisiICAgIE5vbmUgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcbiIKKyIgICAgKHNwYWNlLCB0YWIsIHJldHVybiwgbmV3bGluZSwgZm9ybWZlZWQsIHZlcnRpY2FsIHRhYikuXG4iCisiICBtYXhzcGxpdFxuIgorIiAgICBNYXhpbXVtIG51bWJlciBvZiBzcGxpdHMgdG8gZG8uXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgbm8gbGltaXQuXG4iCisiXG4iCisiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOworCisjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CisgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19qb2luX19kb2NfXywKKyJqb2luKCRzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcywgLylcbiIKKyItLVxuIgorIlxuIgorIkNvbmNhdGVuYXRlIGFueSBudW1iZXIgb2YgYnl0ZXMgb2JqZWN0cy5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgd2hvc2UgbWV0aG9kIGlzIGNhbGxlZCBpcyBpbnNlcnRlZCBpbiBiZXR3ZWVuIGVhY2ggcGFpci5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVzIG9iamVjdC5cbiIKKyJcbiIKKyJFeGFtcGxlOiBiXCcuXCcuam9pbihbYlwnYWJcJywgYlwncHFcJywgYlwncnNcJ10pIC0+IGJcJ2FiLnBxLnJzXCcuIik7CisKKyNkZWZpbmUgQllURVNfSk9JTl9NRVRIT0RERUYgICAgXAorICAgIHsiam9pbiIsIChQeUNGdW5jdGlvbilieXRlc19qb2luLCBNRVRIX08sIGJ5dGVzX2pvaW5fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ5dGVzX3N0cmlwX19kb2NfXywKKyJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19TVFJJUF9NRVRIT0RERUYgICAgXAorICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfc3RyaXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCisgICAgICAgIDAsIDEsCisgICAgICAgICZieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfbHN0cmlwX19kb2NfXywKKyJsc3RyaXAoJHNlbGYsIGJ5dGVzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTdHJpcCBsZWFkaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyAgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19MU1RSSVBfTUVUSE9EREVGICAgIFwKKyAgICB7ImxzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19sc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfbHN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbHN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYnl0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19yc3RyaXBfX2RvY19fLAorInJzdHJpcCgkc2VsZiwgYnl0ZXM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlN0cmlwIHRyYWlsaW5nIGJ5dGVzIGNvbnRhaW5lZCBpbiB0aGUgYXJndW1lbnQuXG4iCisiXG4iCisiSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4iKTsKKworI2RlZmluZSBCWVRFU19SU1RSSVBfTUVUSE9EREVGICAgIFwKKyAgICB7InJzdHJpcCIsIChQeUNGdW5jdGlvbilieXRlc19yc3RyaXAsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcnN0cmlwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnN0cmlwKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpieXRlcyA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAorICAgICAgICAwLCAxLAorICAgICAgICAmYnl0ZXMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAorInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKKyJcbiIKKyIgIHRhYmxlXG4iCisiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCisiXG4iCisiQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKKworI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3RyYW5zbGF0ZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdGFibGU7CisgICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOworICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZXMudHJhbnNsYXRlIHJlcXVpcmVzIDEgdG8gMiBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoZnJtLCB0bywgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzZWFibGUgZm9yIHRoZSBieXRlcyBvciBieXRlYXJyYXkgdHJhbnNsYXRlIG1ldGhvZC5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXRcbiIKKyJ0aGUgc2FtZSBwb3NpdGlvbiBpbiB0by5cbiIKKyJcbiIKKyJUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLiIpOworCisjZGVmaW5lIEJZVEVTX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAorICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX21ha2V0cmFucywgTUVUSF9WQVJBUkdTfE1FVEhfU1RBVElDLCBieXRlc19tYWtldHJhbnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21ha2V0cmFuc19pbXBsKFB5X2J1ZmZlciAqZnJtLCBQeV9idWZmZXIgKnRvKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZnJtID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAorICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbWFrZXRyYW5zX2ltcGwoJmZybSwgJnRvKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBmcm0gKi8KKyAgICBpZiAoZnJtLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIC8qIENsZWFudXAgZm9yIHRvICovCisgICAgaWYgKHRvLm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfcmVwbGFjZV9fZG9jX18sCisicmVwbGFjZSgkc2VsZiwgb2xkLCBuZXcsIGNvdW50PS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgb2xkIHJlcGxhY2VkIGJ5IG5ldy5cbiIKKyJcbiIKKyIgIGNvdW50XG4iCisiICAgIE1heGltdW0gbnVtYmVyIG9mIG9jY3VycmVuY2VzIHRvIHJlcGxhY2UuXG4iCisiICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVwbGFjZSBhbGwgb2NjdXJyZW5jZXMuXG4iCisiXG4iCisiSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGNvdW50IGlzIGdpdmVuLCBvbmx5IHRoZSBmaXJzdCBjb3VudCBvY2N1cnJlbmNlcyBhcmVcbiIKKyJyZXBsYWNlZC4iKTsKKworI2RlZmluZSBCWVRFU19SRVBMQUNFX01FVEhPRERFRiAgICBcCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X2J1ZmZlciBvbGQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIG5ldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCisgICAgaWYgKG9sZC5vYmopCisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KKyAgICBpZiAobmV3Lm9iaikKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ5dGVzX2RlY29kZV9fZG9jX18sCisiZGVjb2RlKCRzZWxmLCAvLCBlbmNvZGluZz1cJ3V0Zi04XCcsIGVycm9ycz1cJ3N0cmljdFwnKVxuIgorIi0tXG4iCisiXG4iCisiRGVjb2RlIHRoZSBieXRlcyB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgZW5jb2RpbmcuXG4iCisiXG4iCisiICBlbmNvZGluZ1xuIgorIiAgICBUaGUgZW5jb2Rpbmcgd2l0aCB3aGljaCB0byBkZWNvZGUgdGhlIGJ5dGVzLlxuIgorIiAgZXJyb3JzXG4iCisiICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLlxuIgorIiAgICBUaGUgZGVmYXVsdCBpcyBcJ3N0cmljdFwnIG1lYW5pbmcgdGhhdCBkZWNvZGluZyBlcnJvcnMgcmFpc2UgYVxuIgorIiAgICBVbmljb2RlRGVjb2RlRXJyb3IuIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgXCdpZ25vcmVcJyBhbmQgXCdyZXBsYWNlXCdcbiIKKyIgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXRcbiIKKyIgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLiIpOworCisjZGVmaW5lIEJZVEVTX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX2RlY29kZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHNzOmRlY29kZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihieXRlc19zcGxpdGxpbmVzX19kb2NfXywKKyJzcGxpdGxpbmVzKCRzZWxmLCAvLCBrZWVwZW5kcz1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBieXRlcywgYnJlYWtpbmcgYXQgbGluZSBib3VuZGFyaWVzLlxuIgorIlxuIgorIkxpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmRcbiIKKyJ0cnVlLiIpOworCisjZGVmaW5lIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGICAgIFwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0bGluZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIGludCBrZWVwZW5kcyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLAorICAgICAgICAma2VlcGVuZHMpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfZnJvbWhleF9fZG9jX18sCisiZnJvbWhleCgkdHlwZSwgc3RyaW5nLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgYnl0ZXMgb2JqZWN0IGZyb20gYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycy5cbiIKKyJcbiIKKyJTcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuXG4iCisiRXhhbXBsZTogYnl0ZXMuZnJvbWhleChcJ0I5IDAxRUZcJykgLT4gYlwnXFxcXHhiOVxcXFx4MDFcXFxceGVmXCcuIik7CisKKyNkZWZpbmUgQllURVNfRlJPTUhFWF9NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWhleCIsIChQeUNGdW5jdGlvbilieXRlc19mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZXNfZnJvbWhleF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19mcm9taGV4KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc3RyaW5nOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2Zyb21oZXhfaW1wbCh0eXBlLCBzdHJpbmcpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmQwY2U4ZjI1ZDdlMThmNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODhiOWEKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaApAQCAtMCwwICsxLDQyIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoZGljdF9mcm9ta2V5c19fZG9jX18sCisiZnJvbWtleXMoJHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZT1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBhIG5ldyBkaWN0IHdpdGgga2V5cyBmcm9tIGl0ZXJhYmxlIGFuZCB2YWx1ZXMgZXF1YWwgdG8gdmFsdWUuIik7CisKKyNkZWZpbmUgRElDVF9GUk9NS0VZU19NRVRIT0RERUYgICAgXAorICAgIHsiZnJvbWtleXMiLCAoUHlDRnVuY3Rpb24pZGljdF9mcm9ta2V5cywgTUVUSF9WQVJBUkdTfE1FVEhfQ0xBU1MsIGRpY3RfZnJvbWtleXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZnJvbWtleXNfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZnJvbWtleXMoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGU7CisgICAgUHlPYmplY3QgKnZhbHVlID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gZGljdF9mcm9ta2V5c19pbXBsKHR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGRpY3RfX19jb250YWluc19fX19kb2NfXywKKyJfX2NvbnRhaW5zX18oJHNlbGYsIGtleSwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgRCBoYXMgYSBrZXkgaywgZWxzZSBGYWxzZS4iKTsKKworI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDJhNzAwCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmgKQEAgLTAsMCArMSw0MSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfXywKKyJtYWtldHJhbnMoeCwgeT1Ob25lLCB6PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yIHN0ci50cmFuc2xhdGUoKS5cbiIKKyJcbiIKKyJJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZyBVbmljb2RlXG4iCisib3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgTm9uZS5cbiIKKyJDaGFyYWN0ZXIga2V5cyB3aWxsIGJlIHRoZW4gY29udmVydGVkIHRvIG9yZGluYWxzLlxuIgorIklmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsIGFuZFxuIgorImluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZCB0byB0aGVcbiIKKyJjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gSWYgdGhlcmUgaXMgYSB0aGlyZCBhcmd1bWVudCwgaXRcbiIKKyJtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvIE5vbmUgaW4gdGhlIHJlc3VsdC4iKTsKKworI2RlZmluZSBVTklDT0RFX01BS0VUUkFOU19NRVRIT0RERUYgICAgXAorICAgIHsibWFrZXRyYW5zIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVfbWFrZXRyYW5zLCBNRVRIX1ZBUkFSR1N8TUVUSF9TVEFUSUMsIHVuaWNvZGVfbWFrZXRyYW5zX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX21ha2V0cmFuc19pbXBsKFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSwgUHlPYmplY3QgKnopOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9tYWtldHJhbnModm9pZCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKng7CisgICAgUHlPYmplY3QgKnkgPSBOVUxMOworICAgIFB5T2JqZWN0ICp6ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVVTptYWtldHJhbnMiLAorICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29tcGxleG9iamVjdC5jIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKaW5kZXggN2Y0Y2RkOS4uZGMxMjEyZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMKQEAgLTEzLDcgKzEzLDcgQEAKIHN0YXRpYyBQeV9jb21wbGV4IGNfMSA9IHsxLiwgMC59OwogCiBQeV9jb21wbGV4Ci1jX3N1bShQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX3N1bShQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKIHsKICAgICBQeV9jb21wbGV4IHI7CiAgICAgci5yZWFsID0gYS5yZWFsICsgYi5yZWFsOwpAQCAtMjIsNyArMjIsNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX2RpZmYoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19kaWZmKFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIFB5X2NvbXBsZXggcjsKICAgICByLnJlYWwgPSBhLnJlYWwgLSBiLnJlYWw7CkBAIC0zMSw3ICszMSw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfbmVnKFB5X2NvbXBsZXggYSkKK19QeV9jX25lZyhQeV9jb21wbGV4IGEpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIHIucmVhbCA9IC1hLnJlYWw7CkBAIC00MCw3ICs0MCw3IEBACiB9CiAKIFB5X2NvbXBsZXgKLWNfcHJvZChQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYikKK19QeV9jX3Byb2QoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIHIucmVhbCA9IGEucmVhbCpiLnJlYWwgLSBhLmltYWcqYi5pbWFnOwpAQCAtNDksNyArNDksNyBAQAogfQogCiBQeV9jb21wbGV4Ci1jX3F1b3QoUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19xdW90KFB5X2NvbXBsZXggYSwgUHlfY29tcGxleCBiKQogewogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICBUaGlzIHdhcyB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtLiAgSXQncyBncm9zc2x5IHByb25lIHRvIHNwdXJpb3VzCkBAIC0xMDcsNyArMTA3LDcgQEAKIH0KIAogUHlfY29tcGxleAotY19wb3coUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCitfUHlfY19wb3coUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIpCiB7CiAgICAgUHlfY29tcGxleCByOwogICAgIGRvdWJsZSB2YWJzLGxlbixhdCxwaGFzZTsKQEAgLTE0NSw5ICsxNDUsOSBAQAogICAgIHAgPSB4OwogICAgIHdoaWxlIChtYXNrID4gMCAmJiBuID49IG1hc2spIHsKICAgICAgICAgaWYgKG4gJiBtYXNrKQotICAgICAgICAgICAgciA9IGNfcHJvZChyLHApOworICAgICAgICAgICAgciA9IF9QeV9jX3Byb2QocixwKTsKICAgICAgICAgbWFzayA8PD0gMTsKLSAgICAgICAgcCA9IGNfcHJvZChwLHApOworICAgICAgICBwID0gX1B5X2NfcHJvZChwLHApOwogICAgIH0KICAgICByZXR1cm4gcjsKIH0KQEAgLTE2MCwxNyArMTYwLDE3IEBACiAgICAgaWYgKG4gPiAxMDAgfHwgbiA8IC0xMDApIHsKICAgICAgICAgY24ucmVhbCA9IChkb3VibGUpIG47CiAgICAgICAgIGNuLmltYWcgPSAwLjsKLSAgICAgICAgcmV0dXJuIGNfcG93KHgsY24pOworICAgICAgICByZXR1cm4gX1B5X2NfcG93KHgsY24pOwogICAgIH0KICAgICBlbHNlIGlmIChuID4gMCkKICAgICAgICAgcmV0dXJuIGNfcG93dSh4LG4pOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGNfcXVvdChjXzEsY19wb3d1KHgsLW4pKTsKKyAgICAgICAgcmV0dXJuIF9QeV9jX3F1b3QoY18xLCBjX3Bvd3UoeCwtbikpOwogCiB9CiAKIGRvdWJsZQotY19hYnMoUHlfY29tcGxleCB6KQorX1B5X2NfYWJzKFB5X2NvbXBsZXggeikKIHsKICAgICAvKiBzZXRzIGVycm5vID0gRVJBTkdFIG9uIG92ZXJmbG93OyAgb3RoZXJ3aXNlIGVycm5vID0gMCAqLwogICAgIGRvdWJsZSByZXN1bHQ7CkBAIC00NDUsNyArNDQ1LDcgQEAKICAgICBUT19DT01QTEVYKHYsIGEpOwogICAgIFRPX0NPTVBMRVgodywgYik7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9hZGQiLCByZXR1cm4gMCkKLSAgICByZXN1bHQgPSBjX3N1bShhLCBiKTsKKyAgICByZXN1bHQgPSBfUHlfY19zdW0oYSwgYik7CiAgICAgUHlGUEVfRU5EX1BST1RFQ1QocmVzdWx0KQogICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KHJlc3VsdCk7CiB9CkBAIC00NTgsNyArNDU4LDcgQEAKICAgICBUT19DT01QTEVYKHYsIGEpOwogICAgIFRPX0NPTVBMRVgodywgYik7CiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleF9zdWIiLCByZXR1cm4gMCkKLSAgICByZXN1bHQgPSBjX2RpZmYoYSwgYik7CisgICAgcmVzdWx0ID0gX1B5X2NfZGlmZihhLCBiKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXN1bHQpCiAgICAgcmV0dXJuIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgocmVzdWx0KTsKIH0KQEAgLTQ3MSw3ICs0NzEsNyBAQAogICAgIFRPX0NPTVBMRVgodiwgYSk7CiAgICAgVE9fQ09NUExFWCh3LCBiKTsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X211bCIsIHJldHVybiAwKQotICAgIHJlc3VsdCA9IGNfcHJvZChhLCBiKTsKKyAgICByZXN1bHQgPSBfUHlfY19wcm9kKGEsIGIpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHJlc3VsdCkKICAgICByZXR1cm4gUHlDb21wbGV4X0Zyb21DQ29tcGxleChyZXN1bHQpOwogfQpAQCAtNDg1LDcgKzQ4NSw3IEBACiAgICAgVE9fQ09NUExFWCh3LCBiKTsKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X2RpdiIsIHJldHVybiAwKQogICAgIGVycm5vID0gMDsKLSAgICBxdW90ID0gY19xdW90KGEsIGIpOworICAgIHF1b3QgPSBfUHlfY19xdW90KGEsIGIpOwogICAgIFB5RlBFX0VORF9QUk9URUNUKHF1b3QpCiAgICAgaWYgKGVycm5vID09IEVET00pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1plcm9EaXZpc2lvbkVycm9yLCAiY29tcGxleCBkaXZpc2lvbiBieSB6ZXJvIik7CkBAIC01MzIsNyArNTMyLDcgQEAKICAgICBpZiAoZXhwb25lbnQuaW1hZyA9PSAwLiAmJiBleHBvbmVudC5yZWFsID09IGludF9leHBvbmVudCkKICAgICAgICAgcCA9IGNfcG93aShhLCBpbnRfZXhwb25lbnQpOwogICAgIGVsc2UKLSAgICAgICAgcCA9IGNfcG93KGEsIGV4cG9uZW50KTsKKyAgICAgICAgcCA9IF9QeV9jX3BvdyhhLCBleHBvbmVudCk7CiAKICAgICBQeUZQRV9FTkRfUFJPVEVDVChwKQogICAgIFB5X0FESlVTVF9FUkFOR0UyKHAucmVhbCwgcC5pbWFnKTsKQEAgLTU4Myw3ICs1ODMsNyBAQAogICAgIGRvdWJsZSByZXN1bHQ7CiAKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4X2FicyIsIHJldHVybiAwKQotICAgIHJlc3VsdCA9IGNfYWJzKHYtPmN2YWwpOworICAgIHJlc3VsdCA9IF9QeV9jX2Ficyh2LT5jdmFsKTsKICAgICBQeUZQRV9FTkRfUFJPVEVDVChyZXN1bHQpCiAKICAgICBpZiAoZXJybm8gPT0gRVJBTkdFKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKaW5kZXggNjE1ZjQ5OS4uOWZmYmNhNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jCisrKyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwpAQCAtMTMxMyw3ICsxMzEzLDcgQEAKICAgICB7ImZnZXQiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHJvcGVydHlvYmplY3QsIHByb3BfZ2V0KSwgUkVBRE9OTFl9LAogICAgIHsiZnNldCIsIFRfT0JKRUNULCBvZmZzZXRvZihwcm9wZXJ0eW9iamVjdCwgcHJvcF9zZXQpLCBSRUFET05MWX0sCiAgICAgeyJmZGVsIiwgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2RlbCksIFJFQURPTkxZfSwKLSAgICB7Il9fZG9jX18iLCAgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2RvYyksIFJFQURPTkxZfSwKKyAgICB7Il9fZG9jX18iLCAgVF9PQkpFQ1QsIG9mZnNldG9mKHByb3BlcnR5b2JqZWN0LCBwcm9wX2RvYyksIDB9LAogICAgIHswfQogfTsKIApAQCAtMTM3Miw2ICsxMzcyLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwcm9wZXJ0eV9kZXNjcl9nZXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp0eXBlKQogeworICAgIHN0YXRpYyBQeU9iamVjdCAqIHZvbGF0aWxlIGNhY2hlZF9hcmdzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqcmV0OwogICAgIHByb3BlcnR5b2JqZWN0ICpncyA9IChwcm9wZXJ0eW9iamVjdCAqKXNlbGY7CiAKICAgICBpZiAob2JqID09IE5VTEwgfHwgb2JqID09IFB5X05vbmUpIHsKQEAgLTEzODIsNyArMTM4NSwyOSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJ1bnJlYWRhYmxlIGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ3MtPnByb3BfZ2V0LCBvYmosIE5VTEwpOworICAgIGFyZ3MgPSBjYWNoZWRfYXJnczsKKyAgICBpZiAoIWFyZ3MgfHwgUHlfUkVGQ05UKGFyZ3MpICE9IDEpIHsKKyAgICAgICAgUHlfQ0xFQVIoY2FjaGVkX2FyZ3MpOworICAgICAgICBpZiAoIShjYWNoZWRfYXJncyA9IGFyZ3MgPSBQeVR1cGxlX05ldygxKSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgIGFzc2VydCAoUHlfUkVGQ05UKGFyZ3MpID09IDIpOworICAgIFB5X0lOQ1JFRihvYmopOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgb2JqKTsKKyAgICByZXQgPSBQeU9iamVjdF9DYWxsKGdzLT5wcm9wX2dldCwgYXJncywgTlVMTCk7CisgICAgaWYgKGFyZ3MgPT0gY2FjaGVkX2FyZ3MpIHsKKyAgICAgICAgaWYgKFB5X1JFRkNOVChhcmdzKSA9PSAyKSB7CisgICAgICAgICAgICBvYmogPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYob2JqKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKGNhY2hlZF9hcmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludApAQCAtMTU4NCw2ICsxNjA5LDE0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK3Byb3BlcnR5X2NsZWFyKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHByb3BlcnR5b2JqZWN0ICpwcCA9IChwcm9wZXJ0eW9iamVjdCAqKXNlbGY7CisgICAgUHlfQ0xFQVIocHAtPnByb3BfZG9jKTsKKyAgICByZXR1cm4gMDsKK30KKwogUHlUeXBlT2JqZWN0IFB5UHJvcGVydHlfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJwcm9wZXJ0eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMTYwOSw3ICsxNjQyLDcgQEAKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgcHJvcGVydHlfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICBwcm9wZXJ0eV90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChpbnF1aXJ5KXByb3BlcnR5X2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTJlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTAsMCArMSwyMiBAQAorI2lmbmRlZiBQeV9ESUNUX0NPTU1PTl9ICisjZGVmaW5lIFB5X0RJQ1RfQ09NTU9OX0gKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgbWVfa2V5LiAqLworICAgIFB5X2hhc2hfdCBtZV9oYXNoOworICAgIFB5T2JqZWN0ICptZV9rZXk7CisgICAgUHlPYmplY3QgKm1lX3ZhbHVlOyAvKiBUaGlzIGZpZWxkIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IgY29tYmluZWQgdGFibGVzICovCit9IFB5RGljdEtleUVudHJ5OworCit0eXBlZGVmIFB5RGljdEtleUVudHJ5ICooKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworCitzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKKyAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKyAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisgICAgZGljdF9sb29rdXBfZnVuYyBka19sb29rdXA7CisgICAgUHlfc3NpemVfdCBka191c2FibGU7CisgICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBhNDk0ZDZiLi41YTdkZTllIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtNjcsNiArNjcsNyBAQAogI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJkaWN0LWNvbW1vbi5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAvKltjbGluaWMgaW5wdXRdCkBAIC03NCwyNCArNzUsNiBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjE1N2E1YTBjZTk1ODlkNl0qLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCi0gICAgUHlfaGFzaF90IG1lX2hhc2g7Ci0gICAgUHlPYmplY3QgKm1lX2tleTsKLSAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KLX0gUHlEaWN0S2V5RW50cnk7Ci0KLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7Ci0KLXN0cnVjdCBfZGljdGtleXNvYmplY3QgewotICAgIFB5X3NzaXplX3QgZGtfcmVmY250OwotICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKLSAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKLSAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKLSAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOwotfTsKLQogCiAvKgogVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZApAQCAtMjMzLDYgKzIxNiw4IEBACiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiAKKyNpbmNsdWRlICJjbGluaWMvZGljdG9iamVjdC5jLmgiCisKIGludAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKQEAgLTExMDEsNiArMTA4Niw0NCBAQAogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQoreworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogV2UgY2FuIGFycml2ZSBoZXJlIHdpdGggYSBOVUxMIHRzdGF0ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb246IHRyeQorICAgICAgIHJ1bm5pbmcgInB5dGhvbiAtV2kiIGZvciBhbiBleGFtcGxlIHJlbGF0ZWQgdG8gc3RyaW5nIGludGVybmluZy4KKyAgICAgICBMZXQncyBqdXN0IGhvcGUgdGhhdCBubyBleGNlcHRpb24gb2NjdXJzIHRoZW4uLi4gIFRoaXMgbXVzdCBiZQorICAgICAgIF9QeVRocmVhZFN0YXRlX0N1cnJlbnQgYW5kIG5vdCBQeVRocmVhZFN0YXRlX0dFVCgpIGJlY2F1c2UgaW4gZGVidWcKKyAgICAgICBtb2RlLCB0aGUgbGF0dGVyIGNvbXBsYWlucyBpZiB0c3RhdGUgaXMgTlVMTC4gKi8KKyAgICB0c3RhdGUgPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoCisgICAgICAgICZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKKyAgICBpZiAodHN0YXRlICE9IE5VTEwgJiYgdHN0YXRlLT5jdXJleGNfdHlwZSAhPSBOVUxMKSB7CisgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KKyAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOworICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KKyAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOworICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAqdmFsdWVfYWRkcjsKK30KKwogLyogVmFyaWFudCBvZiBQeURpY3RfR2V0SXRlbSgpIHRoYXQgZG9lc24ndCBzdXBwcmVzcyBleGNlcHRpb25zLgogICAgVGhpcyByZXR1cm5zIE5VTEwgKndpdGgqIGFuIGV4Y2VwdGlvbiBzZXQgaWYgYW4gZXhjZXB0aW9uIG9jY3VycmVkLgogICAgSXQgcmV0dXJucyBOVUxMICp3aXRob3V0KiBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBrZXkgd2Fzbid0IHByZXNlbnQuCkBAIC0xMjA4LDYgKzEyMzEsMjQgQEAKIH0KIAogaW50CitfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKQoreworICAgIFB5RGljdE9iamVjdCAqbXA7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXNzZXJ0KGtleSk7CisgICAgYXNzZXJ0KHZhbHVlKTsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKKworICAgIC8qIGluc2VydGRpY3QoKSBoYW5kbGVzIGFueSByZXNpemluZyB0aGF0IG1pZ2h0IGJlIG5lY2Vzc2FyeSAqLworICAgIHJldHVybiBpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKTsKK30KKworaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKQEAgLTEzNjcsNiArMTQwOCwxNDEgQEAKICAgICByZXR1cm4gMTsKIH0KIAorLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBkaWN0LnBvcCgpLiAqLworUHlPYmplY3QgKgorX1B5RGljdF9Qb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmx0KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAobXAtPm1hX3VzZWQgPT0gMCkgeworICAgICAgICBpZiAoZGVmbHQpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CisgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGRlZmx0KSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOworICAgICAgICAgICAgcmV0dXJuIGRlZmx0OworICAgICAgICB9CisgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgIG1wLT5tYV91c2VkLS07CisgICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgICAgIFB5X0lOQ1JFRihkdW1teSk7CisgICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOworICAgIH0KKyAgICByZXR1cm4gb2xkX3ZhbHVlOworfQorCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIGRpY3QuZnJvbV9rZXlzKCkuICBJdCBpcyBzdWJjbGFzcy1mcmllbmRseS4gKi8KK1B5T2JqZWN0ICoKK19QeURpY3RfRnJvbUtleXMoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKml0ZXJhYmxlLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKml0OyAgICAgICAvKiBpdGVyKGl0ZXJhYmxlKSAqLworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKmQ7CisgICAgaW50IHN0YXR1czsKKworICAgIGQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgTlVMTCk7CisgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZCkgJiYgKChQeURpY3RPYmplY3QgKilkKS0+bWFfdXNlZCA9PSAwKSB7CisgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbGR2YWx1ZTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChpdGVyYWJsZSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlBbnlTZXRfQ2hlY2tFeGFjdChpdGVyYWJsZSkpIHsKKyAgICAgICAgICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopZDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChfUHlTZXRfTmV4dEVudHJ5KGl0ZXJhYmxlLCAmcG9zLCAma2V5LCAmaGFzaCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ID09IE5VTEwpeworICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChkKSkgeworICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgeworICAgICAgICAgICAgc3RhdHVzID0gUHlEaWN0X1NldEl0ZW0oZCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gRmFpbDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBQeU9iamVjdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIEZhaWw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBGYWlsOworICAgIFB5X0RFQ1JFRihpdCk7CisgICAgcmV0dXJuIGQ7CisKK0ZhaWw6CisgICAgUHlfREVDUkVGKGl0KTsKKyAgICBQeV9ERUNSRUYoZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIE1ldGhvZHMgKi8KIAogc3RhdGljIHZvaWQKQEAgLTE3MDEsMTIxICsxODc3LDExIEBACiBSZXR1cm5zIGEgbmV3IGRpY3Qgd2l0aCBrZXlzIGZyb20gaXRlcmFibGUgYW5kIHZhbHVlcyBlcXVhbCB0byB2YWx1ZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKGRpY3RfZnJvbWtleXNfX2RvY19fLAotImZyb21rZXlzKCR0eXBlLCBpdGVyYWJsZSwgdmFsdWU9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgYSBuZXcgZGljdCB3aXRoIGtleXMgZnJvbSBpdGVyYWJsZSBhbmQgdmFsdWVzIGVxdWFsIHRvIHZhbHVlLiIpOwotCi0jZGVmaW5lIERJQ1RfRlJPTUtFWVNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZyb21rZXlzIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfZnJvbWtleXMsIE1FVEhfVkFSQVJHU3xNRVRIX0NMQVNTLCBkaWN0X2Zyb21rZXlzX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0X2Zyb21rZXlzX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICp2YWx1ZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0X2Zyb21rZXlzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0ZXJhYmxlOwotICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmcm9ta2V5cyIsCi0gICAgICAgIDEsIDIsCi0gICAgICAgICZpdGVyYWJsZSwgJnZhbHVlKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGRpY3RfZnJvbWtleXNfaW1wbCh0eXBlLCBpdGVyYWJsZSwgdmFsdWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X2Zyb21rZXlzX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUsIFB5T2JqZWN0ICp2YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NWY4ZGMwZmZhODc0MDZmIGlucHV0PWI4NWE2NjdmOWJmNDY2OWRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZmI5OGU0YjEwMzg0OTk5IGlucHV0PWI4NWE2NjdmOWJmNDY2OWRdKi8KIHsKLSAgICBQeU9iamVjdCAqaXQ7ICAgICAgIC8qIGl0ZXIoc2VxKSAqLwotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgUHlPYmplY3QgKmQ7Ci0gICAgaW50IHN0YXR1czsKLQotICAgIGQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKXR5cGUsIE5VTEwpOwotICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGQpICYmICgoUHlEaWN0T2JqZWN0ICopZCktPm1hX3VzZWQgPT0gMCkgewotICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7Ci0gICAgICAgICAgICBQeU9iamVjdCAqb2xkdmFsdWU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5OwotICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeV9TSVpFKGl0ZXJhYmxlKSkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdoaWxlIChfUHlEaWN0X05leHQoaXRlcmFibGUsICZwb3MsICZrZXksICZvbGR2YWx1ZSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFB5QW55U2V0X0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7Ci0gICAgICAgICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5OwotICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3aGlsZSAoX1B5U2V0X05leHRFbnRyeShpdGVyYWJsZSwgJnBvcywgJmtleSwgJmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKXsKLSAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZCkpIHsKLSAgICAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IFB5RGljdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIEZhaWw7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICAgICAgc3RhdHVzID0gUHlPYmplY3RfU2V0SXRlbShkLCBrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApCi0gICAgICAgICAgICAgICAgZ290byBGYWlsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gRmFpbDsKLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBkOwotCi1GYWlsOgotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfREVDUkVGKGQpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBfUHlEaWN0X0Zyb21LZXlzKChQeU9iamVjdCAqKXR5cGUsIGl0ZXJhYmxlLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTIyMjIsMTggKzIyODgsOSBAQAogVHJ1ZSBpZiBEIGhhcyBhIGtleSBrLCBlbHNlIEZhbHNlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoZGljdF9fX2NvbnRhaW5zX19fX2RvY19fLAotIl9fY29udGFpbnNfXygkc2VsZiwga2V5LCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iVHJ1ZSBpZiBEIGhhcyBhIGtleSBrLCBlbHNlIEZhbHNlLiIpOwotCi0jZGVmaW5lIERJQ1RfX19DT05UQUlOU19fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2NvbnRhaW5zX18iLCAoUHlDRnVuY3Rpb24pZGljdF9fX2NvbnRhaW5zX18sIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGRpY3RfX19jb250YWluc19fX19kb2NfX30sCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X19fY29udGFpbnNfXyhQeURpY3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2NmM2Y4YWFmMmNjNWNjMyBpbnB1dD1iODUyYjJhMTliNTFhYjI0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTNkMDNkYjcwOWVkNmU2YiBpbnB1dD1iODUyYjJhMTliNTFhYjI0XSovCiB7CiAgICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCA9IHNlbGY7CiAgICAgUHlfaGFzaF90IGhhc2g7CkBAIC0yMzQ4LDUwICsyNDA1LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9wb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CiAgICAgUHlPYmplY3QgKmtleSwgKmRlZmx0ID0gTlVMTDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3AiLCAxLCAyLCAma2V5LCAmZGVmbHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobXAtPm1hX3VzZWQgPT0gMCkgewotICAgICAgICBpZiAoZGVmbHQpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7Ci0gICAgICAgICAgICByZXR1cm4gZGVmbHQ7Ci0gICAgICAgIH0KLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRlZmx0KSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOwotICAgICAgICAgICAgcmV0dXJuIGRlZmx0OwotICAgICAgICB9Ci0gICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KLSAgICByZXR1cm4gb2xkX3ZhbHVlOworCisgICAgcmV0dXJuIF9QeURpY3RfUG9wKG1wLCBrZXksIGRlZmx0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0OTgsOCArMjUxNyw4IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfbmV3KFB5RGljdE9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0X3NpemVvZihQeURpY3RPYmplY3QgKm1wKQorUHlPYmplY3QgKgorX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKIApAQCAtMjU2Nyw3ICsyNTg2LDcgQEAKICAgICBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYKICAgICB7Il9fZ2V0aXRlbV9fIiwgKFB5Q0Z1bmN0aW9uKWRpY3Rfc3Vic2NyaXB0LCAgICAgICAgTUVUSF9PIHwgTUVUSF9DT0VYSVNULAogICAgICBnZXRpdGVtX19kb2NfX30sCi0gICAgeyJfX3NpemVvZl9fIiwgICAgICAoUHlDRnVuY3Rpb24pZGljdF9zaXplb2YsICAgICAgIE1FVEhfTk9BUkdTLAorICAgIHsiX19zaXplb2ZfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKV9QeURpY3RfU2l6ZU9mLCAgICAgICBNRVRIX05PQVJHUywKICAgICAgc2l6ZW9mX19kb2NfX30sCiAgICAgeyJnZXQiLCAgICAgICAgIChQeUNGdW5jdGlvbilkaWN0X2dldCwgICAgICAgICAgTUVUSF9WQVJBUkdTLAogICAgICBnZXRfX2RvY19ffSwKQEAgLTMwOTYsOCArMzExNSw4IEBACiAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIFB5X0lOQ1JFRihrZXkpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDAsIGtleSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDEsIHZhbHVlKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KKyAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLwogICAgIHJldHVybiByZXN1bHQ7CiAKIGZhaWw6CkBAIC0zMTkyLDI4ICszMjExLDIyIEBACiAKIC8qIFRoZSBpbnN0YW5jZSBsYXktb3V0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhyZWU7IGJ1dCB0aGUgdHlwZSBkaWZmZXJzLiAqLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIFB5RGljdE9iamVjdCAqZHZfZGljdDsKLX0gZGljdHZpZXdvYmplY3Q7Ci0KLQogc3RhdGljIHZvaWQKLWRpY3R2aWV3X2RlYWxsb2MoZGljdHZpZXdvYmplY3QgKmR2KQorZGljdHZpZXdfZGVhbGxvYyhfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgUHlfWERFQ1JFRihkdi0+ZHZfZGljdCk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGR2KTsKIH0KIAogc3RhdGljIGludAotZGljdHZpZXdfdHJhdmVyc2UoZGljdHZpZXdvYmplY3QgKmR2LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK2RpY3R2aWV3X3RyYXZlcnNlKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoZHYtPmR2X2RpY3QpOwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotZGljdHZpZXdfbGVuKGRpY3R2aWV3b2JqZWN0ICpkdikKK2RpY3R2aWV3X2xlbihfUHlEaWN0Vmlld09iamVjdCAqZHYpCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgIGlmIChkdi0+ZHZfZGljdCAhPSBOVUxMKQpAQCAtMzIyMSwxMCArMzIzNCwxMCBAQAogICAgIHJldHVybiBsZW47CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1kaWN0dmlld19uZXcoUHlPYmplY3QgKmRpY3QsIFB5VHlwZU9iamVjdCAqdHlwZSkKK1B5T2JqZWN0ICoKK19QeURpY3RWaWV3X05ldyhQeU9iamVjdCAqZGljdCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewotICAgIGRpY3R2aWV3b2JqZWN0ICpkdjsKKyAgICBfUHlEaWN0Vmlld09iamVjdCAqZHY7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjM2LDcgKzMyNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgZGljdC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBkdiA9IFB5T2JqZWN0X0dDX05ldyhkaWN0dmlld29iamVjdCwgdHlwZSk7CisgICAgZHYgPSBQeU9iamVjdF9HQ19OZXcoX1B5RGljdFZpZXdPYmplY3QsIHR5cGUpOwogICAgIGlmIChkdiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoZGljdCk7CkBAIC0zMzQwLDcgKzMzNTMsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdHZpZXdfcmVwcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmlld19yZXByKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBQeU9iamVjdCAqc2VxOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0zMzU3LDcgKzMzNzAsNyBAQAogLyoqKiBkaWN0X2tleXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdGtleXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0a2V5c19pdGVyKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKIHsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTMzNjYsNyArMzM3OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpY3RrZXlzX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKK2RpY3RrZXlzX2NvbnRhaW5zKF9QeURpY3RWaWV3T2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKIHsKICAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDA0LDggKzM0MTcsOCBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWRpY3R2aWV3c19hbmQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvdGhlcikKK1B5T2JqZWN0KgorX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOwpAQCAtMzQ3OSw3ICszNDkyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm5iX2ludmVydCovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypuYl9sc2hpZnQqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbmJfcnNoaWZ0Ki8KLSAgICAoYmluYXJ5ZnVuYylkaWN0dmlld3NfYW5kLCAgICAgICAgICAvKm5iX2FuZCovCisgICAgKGJpbmFyeWZ1bmMpX1B5RGljdFZpZXdfSW50ZXJzZWN0LCAgLypuYl9hbmQqLwogICAgIChiaW5hcnlmdW5jKWRpY3R2aWV3c194b3IsICAgICAgICAgIC8qbmJfeG9yKi8KICAgICAoYmluYXJ5ZnVuYylkaWN0dmlld3Nfb3IsICAgICAgICAgICAvKm5iX29yKi8KIH07CkBAIC0zNDkxLDcgKzM1MDQsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtID0gTlVMTDsKIAogICAgIGlmIChzZWxmID09IG90aGVyKSB7Ci0gICAgICAgIGlmIChkaWN0dmlld19sZW4oKGRpY3R2aWV3b2JqZWN0ICopc2VsZikgPT0gMCkKKyAgICAgICAgaWYgKGRpY3R2aWV3X2xlbigoX1B5RGljdFZpZXdPYmplY3QgKilzZWxmKSA9PSAwKQogICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTM1MDAsNyArMzUxMyw3IEBACiAgICAgLyogSXRlcmF0ZSBvdmVyIHRoZSBzaG9ydGVyIG9iamVjdCAob25seSBpZiBvdGhlciBpcyBhIHNldCwKICAgICAgKiBiZWNhdXNlIFB5U2VxdWVuY2VfQ29udGFpbnMgbWF5IGJlIGV4cGVuc2l2ZSBvdGhlcndpc2UpOiAqLwogICAgIGlmIChQeUFueVNldF9DaGVjayhvdGhlcikgfHwgUHlEaWN0Vmlld1NldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBsZW5fc2VsZiA9IGRpY3R2aWV3X2xlbigoZGljdHZpZXdvYmplY3QgKilzZWxmKTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW5fc2VsZiA9IGRpY3R2aWV3X2xlbigoX1B5RGljdFZpZXdPYmplY3QgKilzZWxmKTsKICAgICAgICAgUHlfc3NpemVfdCBsZW5fb3RoZXIgPSBQeU9iamVjdF9TaXplKG90aGVyKTsKICAgICAgICAgaWYgKGxlbl9vdGhlciA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzU0Nyw3ICszNTYwLDcgQEAKIFB5VHlwZU9iamVjdCBQeURpY3RLZXlzX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiZGljdF9rZXlzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoZGljdHZpZXdvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihfUHlEaWN0Vmlld09iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3RvcilkaWN0dmlld19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTM1ODAsMTMgKzM1OTMsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0a2V5c19uZXcoUHlPYmplY3QgKmRpY3QpCiB7Ci0gICAgcmV0dXJuIGRpY3R2aWV3X25ldyhkaWN0LCAmUHlEaWN0S2V5c19UeXBlKTsKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KGRpY3QsICZQeURpY3RLZXlzX1R5cGUpOwogfQogCiAvKioqIGRpY3RfaXRlbXMgKioqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGljdGl0ZW1zX2l0ZXIoZGljdHZpZXdvYmplY3QgKmR2KQorZGljdGl0ZW1zX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzU5NSw3ICszNjA4LDcgQEAKIH0KIAogc3RhdGljIGludAotZGljdGl0ZW1zX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKK2RpY3RpdGVtc19jb250YWlucyhfUHlEaWN0Vmlld09iamVjdCAqZHYsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZm91bmQ7CiAgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpCkBAIC0zNjMzLDcgKzM2NDYsNyBAQAogUHlUeXBlT2JqZWN0IFB5RGljdEl0ZW1zX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiZGljdF9pdGVtcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoZGljdHZpZXdvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihfUHlEaWN0Vmlld09iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3RvcilkaWN0dmlld19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTM2NjYsMTMgKzM2NzksMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0aXRlbXNfbmV3KFB5T2JqZWN0ICpkaWN0KQogewotICAgIHJldHVybiBkaWN0dmlld19uZXcoZGljdCwgJlB5RGljdEl0ZW1zX1R5cGUpOworICAgIHJldHVybiBfUHlEaWN0Vmlld19OZXcoZGljdCwgJlB5RGljdEl0ZW1zX1R5cGUpOwogfQogCiAvKioqIGRpY3RfdmFsdWVzICoqKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRpY3R2YWx1ZXNfaXRlcihkaWN0dmlld29iamVjdCAqZHYpCitkaWN0dmFsdWVzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQogewogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMzY5OCw3ICszNzExLDcgQEAKIFB5VHlwZU9iamVjdCBQeURpY3RWYWx1ZXNfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJkaWN0X3ZhbHVlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwotICAgIHNpemVvZihkaWN0dmlld29iamVjdCksICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKF9QeURpY3RWaWV3T2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWRpY3R2aWV3X2RlYWxsb2MsICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwpAQCAtMzczMSw3ICszNzQ0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0dmFsdWVzX25ldyhQeU9iamVjdCAqZGljdCkKIHsKLSAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhkaWN0LCAmUHlEaWN0VmFsdWVzX1R5cGUpOwogfQogCiAvKiBSZXR1cm5zIE5VTEwgaWYgY2Fubm90IGFsbG9jYXRlIGEgbmV3IFB5RGljdEtleXNPYmplY3QsCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IGM3NmVjYTguLmEyNzU5OTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC00NzMsNiArNDczLDEzIEBACiAKIAogLyoKKyAqICAgIFN0b3BBc3luY0l0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgorICovCitTaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3RvcEFzeW5jSXRlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX2FuZXh0X18oKS4iKTsKKworCisvKgogICogICAgU3RvcEl0ZXJhdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKQEAgLTEyMjQsNiArMTIzMSwxMSBAQAogU2ltcGxlRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIFJ1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIlVuc3BlY2lmaWVkIHJ1bi10aW1lIGVycm9yLiIpOwogCisvKgorICogICAgUmVjdXJzaW9uRXJyb3IgZXh0ZW5kcyBSdW50aW1lRXJyb3IKKyAqLworU2ltcGxlRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19SdW50aW1lRXJyb3IsIFJlY3Vyc2lvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAiUmVjdXJzaW9uIGxpbWl0IGV4Y2VlZGVkLiIpOwogCiAvKgogICogICAgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIFJ1bnRpbWVFcnJvcgpAQCAtMjM3Myw3ICsyMzg1LDcgQEAKIAogCiAKLS8qIFByZS1jb21wdXRlZCBSdW50aW1lRXJyb3IgaW5zdGFuY2UgZm9yIHdoZW4gcmVjdXJzaW9uIGRlcHRoIGlzIHJlYWNoZWQuCisvKiBQcmUtY29tcHV0ZWQgUmVjdXJzaW9uRXJyb3IgaW5zdGFuY2UgZm9yIHdoZW4gcmVjdXJzaW9uIGRlcHRoIGlzIHJlYWNoZWQuCiAgICBNZWFudCB0byBiZSB1c2VkIHdoZW4gbm9ybWFsaXppbmcgdGhlIGV4Y2VwdGlvbiBmb3IgZXhjZWVkaW5nIHRoZSByZWN1cnNpb24KICAgIGRlcHRoIHdpbGwgY2F1c2UgaXRzIG93biBpbmZpbml0ZSByZWN1cnNpb24uCiAqLwpAQCAtMjQ2OCw2ICsyNDgwLDcgQEAKICAgICBQUkVfSU5JVChCYXNlRXhjZXB0aW9uKQogICAgIFBSRV9JTklUKEV4Y2VwdGlvbikKICAgICBQUkVfSU5JVChUeXBlRXJyb3IpCisgICAgUFJFX0lOSVQoU3RvcEFzeW5jSXRlcmF0aW9uKQogICAgIFBSRV9JTklUKFN0b3BJdGVyYXRpb24pCiAgICAgUFJFX0lOSVQoR2VuZXJhdG9yRXhpdCkKICAgICBQUkVfSU5JVChTeXN0ZW1FeGl0KQpAQCAtMjQ3Niw2ICsyNDg5LDcgQEAKICAgICBQUkVfSU5JVChPU0Vycm9yKQogICAgIFBSRV9JTklUKEVPRkVycm9yKQogICAgIFBSRV9JTklUKFJ1bnRpbWVFcnJvcikKKyAgICBQUkVfSU5JVChSZWN1cnNpb25FcnJvcikKICAgICBQUkVfSU5JVChOb3RJbXBsZW1lbnRlZEVycm9yKQogICAgIFBSRV9JTklUKE5hbWVFcnJvcikKICAgICBQUkVfSU5JVChVbmJvdW5kTG9jYWxFcnJvcikKQEAgLTI1MzgsNiArMjU1Miw3IEBACiAgICAgUE9TVF9JTklUKEJhc2VFeGNlcHRpb24pCiAgICAgUE9TVF9JTklUKEV4Y2VwdGlvbikKICAgICBQT1NUX0lOSVQoVHlwZUVycm9yKQorICAgIFBPU1RfSU5JVChTdG9wQXN5bmNJdGVyYXRpb24pCiAgICAgUE9TVF9JTklUKFN0b3BJdGVyYXRpb24pCiAgICAgUE9TVF9JTklUKEdlbmVyYXRvckV4aXQpCiAgICAgUE9TVF9JTklUKFN5c3RlbUV4aXQpCkBAIC0yNTUxLDYgKzI1NjYsNyBAQAogI2VuZGlmCiAgICAgUE9TVF9JTklUKEVPRkVycm9yKQogICAgIFBPU1RfSU5JVChSdW50aW1lRXJyb3IpCisgICAgUE9TVF9JTklUKFJlY3Vyc2lvbkVycm9yKQogICAgIFBPU1RfSU5JVChOb3RJbXBsZW1lbnRlZEVycm9yKQogICAgIFBPU1RfSU5JVChOYW1lRXJyb3IpCiAgICAgUE9TVF9JTklUKFVuYm91bmRMb2NhbEVycm9yKQpAQCAtMjYzNCw5ICsyNjUwLDkgQEAKICAgICBwcmVhbGxvY2F0ZV9tZW1lcnJvcnMoKTsKIAogICAgIGlmICghUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0KSB7Ci0gICAgICAgIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCA9IEJhc2VFeGNlcHRpb25fbmV3KCZfUHlFeGNfUnVudGltZUVycm9yLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0ID0gQmFzZUV4Y2VwdGlvbl9uZXcoJl9QeUV4Y19SZWN1cnNpb25FcnJvciwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0KQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IHByZS1hbGxvY2F0ZSBSdW50aW1lRXJyb3IgaW5zdGFuY2UgZm9yICIKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBwcmUtYWxsb2NhdGUgUmVjdXJzaW9uRXJyb3IgaW5zdGFuY2UgZm9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVjdXJzaW9uIGVycm9ycyIpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqZXJyX2luc3QgPQpAQCAtMjY0NSwxNSArMjY2MSwxNSBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmV4Y19tZXNzYWdlOwogICAgICAgICAgICAgZXhjX21lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygibWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQiKTsKICAgICAgICAgICAgIGlmICghZXhjX21lc3NhZ2UpCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2Fubm90IGFsbG9jYXRlIGFyZ3VtZW50IGZvciBSdW50aW1lRXJyb3IgIgorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbm5vdCBhbGxvY2F0ZSBhcmd1bWVudCBmb3IgUmVjdXJzaW9uRXJyb3IgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlLWFsbG9jYXRpb24iKTsKICAgICAgICAgICAgIGFyZ3NfdHVwbGUgPSBQeVR1cGxlX1BhY2soMSwgZXhjX21lc3NhZ2UpOwogICAgICAgICAgICAgaWYgKCFhcmdzX3R1cGxlKQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbm5vdCBhbGxvY2F0ZSB0dXBsZSBmb3IgUnVudGltZUVycm9yICIKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW5ub3QgYWxsb2NhdGUgdHVwbGUgZm9yIFJlY3Vyc2lvbkVycm9yICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByZS1hbGxvY2F0aW9uIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZXhjX21lc3NhZ2UpOwogICAgICAgICAgICAgaWYgKEJhc2VFeGNlcHRpb25faW5pdChlcnJfaW5zdCwgYXJnc190dXBsZSwgTlVMTCkpCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiaW5pdCBvZiBwcmUtYWxsb2NhdGVkIFJ1bnRpbWVFcnJvciBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJpbml0IG9mIHByZS1hbGxvY2F0ZWQgUmVjdXJzaW9uRXJyb3IgZmFpbGVkIik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnc190dXBsZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzE4LDcgKzI3MzQsNyBAQAogICAgIHNhbWVfYmFzaWNfc2l6ZSA9ICgKICAgICAgICAgY2F1Z2h0X3R5cGVfc2l6ZSA9PSBiYXNlX2V4Y19zaXplIHx8CiAgICAgICAgIChQeVR5cGVfU1VQUE9SVFNfV0VBS1JFRlMoY2F1Z2h0X3R5cGUpICYmCi0gICAgICAgICAgICAoY2F1Z2h0X3R5cGVfc2l6ZSA9PSBiYXNlX2V4Y19zaXplICsgc2l6ZW9mKFB5T2JqZWN0ICopKQorICAgICAgICAgICAgKGNhdWdodF90eXBlX3NpemUgPT0gYmFzZV9leGNfc2l6ZSArIChQeV9zc2l6ZV90KXNpemVvZihQeU9iamVjdCAqKSkKICAgICAgICAgKQogICAgICk7CiAgICAgaWYgKGNhdWdodF90eXBlLT50cF9pbml0ICE9IChpbml0cHJvYylCYXNlRXhjZXB0aW9uX2luaXQgfHwKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggNTk2ZjkwOS4uMWIxODQxMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTM3Miw3ICszNzIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHN0ZHByaW50ZXJfd3JpdGUoUHlTdGRQcmludGVyX09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqYzsKKyAgICBjaGFyICpzdHI7CiAgICAgUHlfc3NpemVfdCBuOwogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkgewpAQCAtMzgzLDI2ICszODMsMTYgQEAKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiwgJmMpKSB7CisgICAgLyogZW5jb2RlIFVuaWNvZGUgdG8gVVRGLTggKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiLCAmc3RyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG4gPSBzdHJsZW4oYyk7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZXJybm8gPSAwOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAobiA+IElOVF9NQVgpCi0gICAgICAgIG4gPSBJTlRfTUFYOwotICAgIG4gPSB3cml0ZShzZWxmLT5mZCwgYywgKGludCluKTsKLSNlbHNlCi0gICAgbiA9IHdyaXRlKHNlbGYtPmZkLCBjLCBuKTsKLSNlbmRpZgotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAobiA8IDApIHsKLSAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikKKyAgICBuID0gX1B5X3dyaXRlKHNlbGYtPmZkLCBzdHIsIHN0cmxlbihzdHIpKTsKKyAgICBpZiAobiA9PSAtMSkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZmxvYXRvYmplY3QuYyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwppbmRleCAxZGNhOTQ3Li5kNjgxOTgxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCkBAIC05ODYsOCArOTg2LDkgQEAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJm9fbmRpZ2l0cykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvX25kaWdpdHMgPT0gTlVMTCkgewotICAgICAgICAvKiBzaW5nbGUtYXJndW1lbnQgcm91bmQ6IHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciAqLworICAgIGlmIChvX25kaWdpdHMgPT0gTlVMTCB8fCBvX25kaWdpdHMgPT0gUHlfTm9uZSkgeworICAgICAgICAvKiBzaW5nbGUtYXJndW1lbnQgcm91bmQgb3Igd2l0aCBOb25lIG5kaWdpdHM6CisgICAgICAgICAqIHJvdW5kIHRvIG5lYXJlc3QgaW50ZWdlciAqLwogICAgICAgICByb3VuZGVkID0gcm91bmQoeCk7CiAgICAgICAgIGlmIChmYWJzKHgtcm91bmRlZCkgPT0gMC41KQogICAgICAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCkBAIC0yMDMzLDcgKzIwMzQsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZmxvYXQgeSA9IChmbG9hdCl4OwotICAgICAgICBjb25zdCBjaGFyICpzID0gKGNoYXIqKSZ5OworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzID0gKHVuc2lnbmVkIGNoYXIqKSZ5OwogICAgICAgICBpbnQgaSwgaW5jciA9IDE7CiAKICAgICAgICAgaWYgKFB5X0lTX0lORklOSVRZKHkpICYmICFQeV9JU19JTkZJTklUWSh4KSkKQEAgLTIxNjksNyArMjE3MCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSAoY2hhciopJng7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMgPSAodW5zaWduZWQgY2hhciopJng7CiAgICAgICAgIGludCBpLCBpbmNyID0gMTsKIAogICAgICAgICBpZiAoKGRvdWJsZV9mb3JtYXQgPT0gaWVlZV9saXR0bGVfZW5kaWFuX2Zvcm1hdCAmJiAhbGUpCmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggNTVlZTU2My4uMTcyZjJjYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTk2LDYgKzE5Niw3IEBACiAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgYmxvY2tzdGFja1tibG9ja3N0YWNrX3RvcCsrXSA9IGFkZHI7CiAgICAgICAgICAgICBpbl9maW5hbGx5W2Jsb2Nrc3RhY2tfdG9wLTFdID0gMDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAzLDcgKzIwNCw4IEBACiAgICAgICAgIGNhc2UgUE9QX0JMT0NLOgogICAgICAgICAgICAgYXNzZXJ0KGJsb2Nrc3RhY2tfdG9wID4gMCk7CiAgICAgICAgICAgICBzZXR1cF9vcCA9IGNvZGVbYmxvY2tzdGFja1tibG9ja3N0YWNrX3RvcC0xXV07Ci0gICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzZXR1cF9vcCA9PSBTRVRVUF9BU1lOQ19XSVRIKSB7CiAgICAgICAgICAgICAgICAgaW5fZmluYWxseVtibG9ja3N0YWNrX3RvcC0xXSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTIxOCw3ICsyMjAsOCBAQAogICAgICAgICAgICAgICogYmUgc2VlaW5nIHN1Y2ggYW4gRU5EX0ZJTkFMTFkuKSAqLwogICAgICAgICAgICAgaWYgKGJsb2Nrc3RhY2tfdG9wID4gMCkgewogICAgICAgICAgICAgICAgIHNldHVwX29wID0gY29kZVtibG9ja3N0YWNrW2Jsb2Nrc3RhY2tfdG9wLTFdXTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0dXBfb3AgPT0gU0VUVVBfRklOQUxMWSB8fCBzZXR1cF9vcCA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldHVwX29wID09IFNFVFVQX0ZJTkFMTFkgfHwgc2V0dXBfb3AgPT0gU0VUVVBfV0lUSAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgc2V0dXBfb3AgPT0gU0VUVVBfQVNZTkNfV0lUSCkgewogICAgICAgICAgICAgICAgICAgICBibG9ja3N0YWNrX3RvcC0tOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI4MSw2ICsyODQsNyBAQAogICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CisgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgIGRlbHRhX2libG9jaysrOwogICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDY3ZTZlZjkuLjAwZWJiZjEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtMTIsNiArMTIsOCBAQAogewogICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWdlbi0+Z2lfZnJhbWUpOwogICAgIFB5X1ZJU0lUKGdlbi0+Z2lfY29kZSk7CisgICAgUHlfVklTSVQoZ2VuLT5naV9uYW1lKTsKKyAgICBQeV9WSVNJVChnZW4tPmdpX3F1YWxuYW1lKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjIsNiArMjQsMTggQEAKICAgICBQeU9iamVjdCAqcmVzOwogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAKKyAgICAvKiBJZiBgZ2VuYCBpcyBhIGNvcm91dGluZSwgYW5kIGlmIGl0IHdhcyBuZXZlciBhd2FpdGVkIG9uLAorICAgICAgIGlzc3VlIGEgUnVudGltZVdhcm5pbmcuICovCisgICAgaWYgKGdlbi0+Z2lfY29kZSAhPSBOVUxMCisgICAgICAgICAgICAmJiAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FCisgICAgICAgICAgICAmJiBnZW4tPmdpX2ZyYW1lICE9IE5VTEwKKyAgICAgICAgICAgICYmIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkgPT0gLTEKKyAgICAgICAgICAgICYmICFQeUVycl9PY2N1cnJlZCgpCisgICAgICAgICAgICAmJiBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1J1bnRpbWVXYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lICclLjUwUycgd2FzIG5ldmVyIGF3YWl0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4tPmdpX3F1YWxuYW1lKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGdlbi0+Z2lfZnJhbWUgPT0gTlVMTCB8fCBnZW4tPmdpX2ZyYW1lLT5mX3N0YWNrdG9wID09IE5VTEwpCiAgICAgICAgIC8qIEdlbmVyYXRvciBpc24ndCBwYXVzZWQsIHNvIG5vIG5lZWQgdG8gY2xvc2UgKi8KICAgICAgICAgcmV0dXJuOwpAQCAtNTgsNiArNzIsOCBAQAogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwogICAgIFB5X0NMRUFSKGdlbi0+Z2lfZnJhbWUpOwogICAgIFB5X0NMRUFSKGdlbi0+Z2lfY29kZSk7CisgICAgUHlfQ0xFQVIoZ2VuLT5naV9uYW1lKTsKKyAgICBQeV9DTEVBUihnZW4tPmdpX3F1YWxuYW1lKTsKICAgICBQeU9iamVjdF9HQ19EZWwoZ2VuKTsKIH0KIApAQCAtNjksOCArODUsMTAgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKGdlbi0+Z2lfcnVubmluZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciKTsKKyAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKQEAgLTgyLDkgKzEwMCwxMiBAQAogCiAgICAgaWYgKGYtPmZfbGFzdGkgPT0gLTEpIHsKICAgICAgICAgaWYgKGFyZyAmJiBhcmcgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGdlbmVyYXRvciIpOworICAgICAgICAgICAgY2hhciAqbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGdlbmVyYXRvciI7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgICAgICBtc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKKyAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGNvcm91dGluZSI7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtc2cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMTI2LDYgKzE0Nyw1MCBAQAogICAgICAgICB9CiAgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CiAgICAgfQorICAgIGVsc2UgaWYgKCFyZXN1bHQgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgeworICAgICAgICAvKiBDaGVjayBmb3IgX19mdXR1cmVfXyBnZW5lcmF0b3Jfc3RvcCBhbmQgY29uZGl0aW9uYWxseSB0dXJuCisgICAgICAgICAqIGEgbGVha2luZyBTdG9wSXRlcmF0aW9uIGludG8gUnVudGltZUVycm9yICh3aXRoIGl0cyBjYXVzZQorICAgICAgICAgKiBzZXQgYXBwcm9wcmlhdGVseSkuICovCisgICAgICAgIGlmICgoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYKKyAgICAgICAgICAgICAgKENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8IENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp2YWwyLCAqdGI7CisgICAgICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgcmFpc2VkIFN0b3BJdGVyYXRpb24iOworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgaWYgKHRiICE9IE5VTEwpCisgICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7CisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOworICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKKyAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisKKyAgICAgICAgICAgIC8qIFBvcCB0aGUgZXhjZXB0aW9uIGJlZm9yZSBpc3N1aW5nIGEgd2FybmluZy4gKi8KKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yICclLjUwUycgcmFpc2VkIFN0b3BJdGVyYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAvKiBXYXJuaW5nIHdhcyBjb252ZXJ0ZWQgdG8gYW4gZXJyb3IuICovCisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBnZW5lcmF0b3IgY2FuJ3QgYmUgcmVydW4sIHNvIHJlbGVhc2UgdGhlIGZyYW1lICovCkBAIC0yMjksOSArMjk0LDExIEBACiAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CisgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKKyAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pCkBAIC0zNzMsMTEgKzQ0MCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2VuX2l0ZXJuZXh0KFB5R2VuT2JqZWN0ICpnZW4pCiB7Ci0gICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnJldDsKLSAgICByZXQgPSBnZW5fc2VuZF9leChnZW4sIHZhbCwgMCk7Ci0gICAgUHlfWERFQ1JFRih2YWwpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgTlVMTCwgMCk7CiB9CiAKIC8qCkBAIC00MzQsMzMgKzQ5Nyw4NCBAQAogZ2VuX3JlcHIoUHlHZW5PYmplY3QgKmdlbikKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxnZW5lcmF0b3Igb2JqZWN0ICVTIGF0ICVwPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSwgZ2VuKTsKIH0KIAotCiBzdGF0aWMgUHlPYmplY3QgKgotZ2VuX2dldF9uYW1lKFB5R2VuT2JqZWN0ICpnZW4pCitnZW5fZ2V0X25hbWUoUHlHZW5PYmplY3QgKm9wKQogewotICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19uYW1lOwotICAgIFB5X0lOQ1JFRihuYW1lKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICBQeV9JTkNSRUYob3AtPmdpX25hbWUpOworICAgIHJldHVybiBvcC0+Z2lfbmFtZTsKIH0KIAorc3RhdGljIGludAorZ2VuX3NldF9uYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICp0bXA7CiAKLVB5RG9jX1NUUlZBUihnZW5fX25hbWVfX2RvY19fLAotIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yJ3MgYXNzb2NpYXRlZCBjb2RlIG9iamVjdC4iKTsKKyAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5naV9uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZworICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdG1wID0gb3AtPmdpX25hbWU7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBvcC0+Z2lfbmFtZSA9IHZhbHVlOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2VuX2dldF9xdWFsbmFtZShQeUdlbk9iamVjdCAqb3ApCit7CisgICAgUHlfSU5DUkVGKG9wLT5naV9xdWFsbmFtZSk7CisgICAgcmV0dXJuIG9wLT5naV9xdWFsbmFtZTsKK30KKworc3RhdGljIGludAorZ2VuX3NldF9xdWFsbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworCisgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZworICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRtcCA9IG9wLT5naV9xdWFsbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5naV9xdWFsbmFtZSA9IHZhbHVlOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2VuX2dldHlpZWxkZnJvbShQeUdlbk9iamVjdCAqZ2VuKQoreworICAgIFB5T2JqZWN0ICp5ZiA9IGdlbl95ZihnZW4pOworICAgIGlmICh5ZiA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4geWY7Cit9CiAKIHN0YXRpYyBQeUdldFNldERlZiBnZW5fZ2V0c2V0bGlzdFtdID0gewotICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgTlVMTCwgZ2VuX19uYW1lX19kb2NfX30sCi0gICAge05VTEx9CisgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9uYW1lLCAoc2V0dGVyKWdlbl9zZXRfbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJuYW1lIG9mIHRoZSBnZW5lcmF0b3IiKX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfcXVhbG5hbWUsIChzZXR0ZXIpZ2VuX3NldF9xdWFsbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJxdWFsaWZpZWQgbmFtZSBvZiB0aGUgZ2VuZXJhdG9yIil9LAorICAgIHsiZ2lfeWllbGRmcm9tIiwgKGdldHRlcilnZW5fZ2V0eWllbGRmcm9tLCBOVUxMLAorICAgICBQeURvY19TVFIoIm9iamVjdCBiZWluZyBpdGVyYXRlZCBieSB5aWVsZCBmcm9tLCBvciBOb25lIil9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLwogfTsKIAotCiBzdGF0aWMgUHlNZW1iZXJEZWYgZ2VuX21lbWJlcmxpc3RbXSA9IHsKLSAgICB7ImdpX2ZyYW1lIiwgICAgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfZnJhbWUpLCAgICAgIFJFQURPTkxZfSwKLSAgICB7ImdpX3J1bm5pbmciLCAgICAgIFRfQk9PTCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCi0gICAgeyJnaV9jb2RlIiwgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfY29kZSksICBSRUFET05MWX0sCisgICAgeyJnaV9mcmFtZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgUkVBRE9OTFl9LAorICAgIHsiZ2lfcnVubmluZyIsICAgVF9CT09MLCAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgIFJFQURPTkxZfSwKKyAgICB7ImdpX2NvZGUiLCAgICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUdlbk9iamVjdCwgZ2lfY29kZSksICAgICBSRUFET05MWX0sCiAgICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTQ4MSw3ICs1OTUsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLwogICAgIChyZXByZnVuYylnZW5fcmVwciwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwpAQCAtNTI1LDEwICs2MzksMTEgQEAKICAgICBfUHlHZW5fRmluYWxpemUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCi1QeU9iamVjdCAqCi1QeUdlbl9OZXcoUHlGcmFtZU9iamVjdCAqZikKK3N0YXRpYyBQeU9iamVjdCAqCitnZW5fbmV3X3dpdGhfcXVhbG5hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeUZyYW1lT2JqZWN0ICpmLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7Ci0gICAgUHlHZW5PYmplY3QgKmdlbiA9IFB5T2JqZWN0X0dDX05ldyhQeUdlbk9iamVjdCwgJlB5R2VuX1R5cGUpOworICAgIFB5R2VuT2JqZWN0ICpnZW4gPSBQeU9iamVjdF9HQ19OZXcoUHlHZW5PYmplY3QsIHR5cGUpOwogICAgIGlmIChnZW4gPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoZik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTM5LDEwICs2NTQsMzIgQEAKICAgICBnZW4tPmdpX2NvZGUgPSAoUHlPYmplY3QgKikoZi0+Zl9jb2RlKTsKICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgIGdlbi0+Z2lfd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIGlmIChuYW1lICE9IE5VTEwpCisgICAgICAgIGdlbi0+Z2lfbmFtZSA9IG5hbWU7CisgICAgZWxzZQorICAgICAgICBnZW4tPmdpX25hbWUgPSAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX25hbWU7CisgICAgUHlfSU5DUkVGKGdlbi0+Z2lfbmFtZSk7CisgICAgaWYgKHF1YWxuYW1lICE9IE5VTEwpCisgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUgPSBxdWFsbmFtZTsKKyAgICBlbHNlCisgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUgPSBnZW4tPmdpX25hbWU7CisgICAgUHlfSU5DUkVGKGdlbi0+Z2lfcXVhbG5hbWUpOwogICAgIF9QeU9iamVjdF9HQ19UUkFDSyhnZW4pOwogICAgIHJldHVybiAoUHlPYmplY3QgKilnZW47CiB9CiAKK1B5T2JqZWN0ICoKK1B5R2VuX05ld1dpdGhRdWFsTmFtZShQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQoreworICAgIHJldHVybiBnZW5fbmV3X3dpdGhfcXVhbG5hbWUoJlB5R2VuX1R5cGUsIGYsIG5hbWUsIHF1YWxuYW1lKTsKK30KKworUHlPYmplY3QgKgorUHlHZW5fTmV3KFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgcmV0dXJuIGdlbl9uZXdfd2l0aF9xdWFsbmFtZSgmUHlHZW5fVHlwZSwgZiwgTlVMTCwgTlVMTCk7Cit9CisKIGludAogUHlHZW5fTmVlZHNGaW5hbGl6aW5nKFB5R2VuT2JqZWN0ICpnZW4pCiB7CkBAIC01NjAsMyArNjk3LDI4OSBAQAogICAgIC8qIE5vIGJsb2NrcyBleGNlcHQgbG9vcHMsIGl0J3Mgc2FmZSB0byBza2lwIGZpbmFsaXphdGlvbi4gKi8KICAgICByZXR1cm4gMDsKIH0KKworLyogQ29yb3V0aW5lIE9iamVjdCAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5Q29yb09iamVjdCAqY3dfY29yb3V0aW5lOworfSBQeUNvcm9XcmFwcGVyOworCitzdGF0aWMgaW50CitnZW5faXNfY29yb3V0aW5lKFB5T2JqZWN0ICpvKQoreworICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KG8pKSB7CisgICAgICAgIFB5Q29kZU9iamVjdCAqY29kZSA9IChQeUNvZGVPYmplY3QgKikoKFB5R2VuT2JqZWN0KilvKS0+Z2lfY29kZTsKKyAgICAgICAgaWYgKGNvZGUtPmNvX2ZsYWdzICYgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqICAgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmV0dXJucyBhbiBhd2FpdGFibGUgZm9yIGBvYDoKKyAqICAgICAtIGBvYCBpZiBgb2AgaXMgYSBjb3JvdXRpbmUtb2JqZWN0OworICogICAgIC0gYHR5cGUobyktPnRwX2FzX2FzeW5jLT5hbV9hd2FpdChvKWAKKyAqCisgKiAgIFJhaXNlcyBhIFR5cGVFcnJvciBpZiBpdCdzIG5vdCBwb3NzaWJsZSB0byByZXR1cm4KKyAqICAgYW4gYXdhaXRhYmxlIGFuZCByZXR1cm5zIE5VTEwuCisgKi8KK1B5T2JqZWN0ICoKK19QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbykKK3sKKyAgICB1bmFyeWZ1bmMgZ2V0dGVyID0gTlVMTDsKKyAgICBQeVR5cGVPYmplY3QgKm90OworCisgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KG8pIHx8IGdlbl9pc19jb3JvdXRpbmUobykpIHsKKyAgICAgICAgLyogJ28nIGlzIGEgY29yb3V0aW5lLiAqLworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KKworICAgIG90ID0gUHlfVFlQRShvKTsKKyAgICBpZiAob3QtPnRwX2FzX2FzeW5jICE9IE5VTEwpIHsKKyAgICAgICAgZ2V0dGVyID0gb3QtPnRwX2FzX2FzeW5jLT5hbV9hd2FpdDsKKyAgICB9CisgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXMgPSAoKmdldHRlcikobyk7CisgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KHJlcykgfHwgZ2VuX2lzX2Nvcm91dGluZShyZXMpKSB7CisgICAgICAgICAgICAgICAgLyogX19hd2FpdF9fIG11c3QgcmV0dXJuIGFuICppdGVyYXRvciosIG5vdAorICAgICAgICAgICAgICAgICAgIGEgY29yb3V0aW5lIG9yIGFub3RoZXIgYXdhaXRhYmxlIChzZWUgUEVQIDQ5MikgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hd2FpdF9fKCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKTsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXMpOworICAgICAgICAgICAgfSBlbHNlIGlmICghUHlJdGVyX0NoZWNrKHJlcykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hd2FpdF9fKCkgcmV0dXJuZWQgbm9uLWl0ZXJhdG9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHR5cGUgJyUuMTAwcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlcyktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAib2JqZWN0ICUuMTAwcyBjYW4ndCBiZSB1c2VkIGluICdhd2FpdCcgZXhwcmVzc2lvbiIsCisgICAgICAgICAgICAgICAgIG90LT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fcmVwcihQeUNvcm9PYmplY3QgKmNvcm8pCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8Y29yb3V0aW5lIG9iamVjdCAlUyBhdCAlcD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvLT5jcl9xdWFsbmFtZSwgY29ybyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX2F3YWl0KFB5Q29yb09iamVjdCAqY29ybykKK3sKKyAgICBQeUNvcm9XcmFwcGVyICpjdyA9IFB5T2JqZWN0X0dDX05ldyhQeUNvcm9XcmFwcGVyLCAmX1B5Q29yb1dyYXBwZXJfVHlwZSk7CisgICAgaWYgKGN3ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihjb3JvKTsKKyAgICBjdy0+Y3dfY29yb3V0aW5lID0gY29ybzsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soY3cpOworICAgIHJldHVybiAoUHlPYmplY3QgKiljdzsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Nvcm9fZ2V0X2NyX2F3YWl0KFB5Q29yb09iamVjdCAqY29ybykKK3sKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoKFB5R2VuT2JqZWN0ICopIGNvcm8pOworICAgIGlmICh5ZiA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4geWY7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiBjb3JvX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X25hbWUsIChzZXR0ZXIpZ2VuX3NldF9uYW1lLAorICAgICBQeURvY19TVFIoIm5hbWUgb2YgdGhlIGNvcm91dGluZSIpfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9xdWFsbmFtZSwgKHNldHRlcilnZW5fc2V0X3F1YWxuYW1lLAorICAgICBQeURvY19TVFIoInF1YWxpZmllZCBuYW1lIG9mIHRoZSBjb3JvdXRpbmUiKX0sCisgICAgeyJjcl9hd2FpdCIsIChnZXR0ZXIpY29yb19nZXRfY3JfYXdhaXQsIE5VTEwsCisgICAgIFB5RG9jX1NUUigib2JqZWN0IGJlaW5nIGF3YWl0ZWQgb24sIG9yIE5vbmUiKX0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgY29yb19tZW1iZXJsaXN0W10gPSB7CisgICAgeyJjcl9mcmFtZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlDb3JvT2JqZWN0LCBjcl9mcmFtZSksICAgIFJFQURPTkxZfSwKKyAgICB7ImNyX3J1bm5pbmciLCAgIFRfQk9PTCwgICBvZmZzZXRvZihQeUNvcm9PYmplY3QsIGNyX3J1bm5pbmcpLCAgUkVBRE9OTFl9LAorICAgIHsiY3JfY29kZSIsICAgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5Q29yb09iamVjdCwgY3JfY29kZSksICAgICBSRUFET05MWX0sCisgICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KK307CisKK1B5RG9jX1NUUlZBUihjb3JvX3NlbmRfZG9jLAorInNlbmQoYXJnKSAtPiBzZW5kICdhcmcnIGludG8gY29yb3V0aW5lLFxuXAorcmV0dXJuIG5leHQgaXRlcmF0ZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4iKTsKKworUHlEb2NfU1RSVkFSKGNvcm9fdGhyb3dfZG9jLAorInRocm93KHR5cFssdmFsWyx0Yl1dKSAtPiByYWlzZSBleGNlcHRpb24gaW4gY29yb3V0aW5lLFxuXAorcmV0dXJuIG5leHQgaXRlcmF0ZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4iKTsKKworUHlEb2NfU1RSVkFSKGNvcm9fY2xvc2VfZG9jLAorImNsb3NlKCkgLT4gcmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgY29yb3V0aW5lLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgY29yb19tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwoUHlDRnVuY3Rpb24pX1B5R2VuX1NlbmQsIE1FVEhfTywgY29yb19zZW5kX2RvY30sCisgICAgeyJ0aHJvdyIsKFB5Q0Z1bmN0aW9uKWdlbl90aHJvdywgTUVUSF9WQVJBUkdTLCBjb3JvX3Rocm93X2RvY30sCisgICAgeyJjbG9zZSIsKFB5Q0Z1bmN0aW9uKWdlbl9jbG9zZSwgTUVUSF9OT0FSR1MsIGNvcm9fY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgY29yb19hc19hc3luYyA9IHsKKyAgICAodW5hcnlmdW5jKWNvcm9fYXdhaXQsICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKK1B5VHlwZU9iamVjdCBQeUNvcm9fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJjb3JvdXRpbmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUNvcm9PYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilnZW5fZGVhbGxvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmNvcm9fYXNfYXN5bmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIChyZXByZnVuYyljb3JvX3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CisgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylnZW5fdHJhdmVyc2UsICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoUHlDb3JvT2JqZWN0LCBjcl93ZWFrcmVmbGlzdCksICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjb3JvX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjb3JvX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBjb3JvX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICBfUHlHZW5fRmluYWxpemUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCit9OworCitzdGF0aWMgdm9pZAorY29yb193cmFwcGVyX2RlYWxsb2MoUHlDb3JvV3JhcHBlciAqY3cpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopY3cpOworICAgIFB5X0NMRUFSKGN3LT5jd19jb3JvdXRpbmUpOworICAgIFB5T2JqZWN0X0dDX0RlbChjdyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX3dyYXBwZXJfaXRlcm5leHQoUHlDb3JvV3JhcHBlciAqY3cpCit7CisgICAgcmV0dXJuIGdlbl9zZW5kX2V4KChQeUdlbk9iamVjdCAqKWN3LT5jd19jb3JvdXRpbmUsIE5VTEwsIDApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29yb193cmFwcGVyX3NlbmQoUHlDb3JvV3JhcHBlciAqY3csIFB5T2JqZWN0ICphcmcpCit7CisgICAgcmV0dXJuIGdlbl9zZW5kX2V4KChQeUdlbk9iamVjdCAqKWN3LT5jd19jb3JvdXRpbmUsIGFyZywgMCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX3dyYXBwZXJfdGhyb3coUHlDb3JvV3JhcHBlciAqY3csIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBnZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopY3ctPmN3X2Nvcm91dGluZSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb3JvX3dyYXBwZXJfY2xvc2UoUHlDb3JvV3JhcHBlciAqY3csIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBnZW5fY2xvc2UoKFB5R2VuT2JqZWN0ICopY3ctPmN3X2Nvcm91dGluZSwgYXJncyk7Cit9CisKK3N0YXRpYyBpbnQKK2Nvcm9fd3JhcHBlcl90cmF2ZXJzZShQeUNvcm9XcmFwcGVyICpjdywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoKFB5T2JqZWN0ICopY3ctPmN3X2Nvcm91dGluZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb3JvX3dyYXBwZXJfbWV0aG9kc1tdID0geworICAgIHsic2VuZCIsKFB5Q0Z1bmN0aW9uKWNvcm9fd3JhcHBlcl9zZW5kLCBNRVRIX08sIGNvcm9fc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLChQeUNGdW5jdGlvbiljb3JvX3dyYXBwZXJfdGhyb3csIE1FVEhfVkFSQVJHUywgY29yb190aHJvd19kb2N9LAorICAgIHsiY2xvc2UiLChQeUNGdW5jdGlvbiljb3JvX3dyYXBwZXJfY2xvc2UsIE1FVEhfTk9BUkdTLCBjb3JvX2Nsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworUHlUeXBlT2JqZWN0IF9QeUNvcm9XcmFwcGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiY29yb3V0aW5lX3dyYXBwZXIiLAorICAgIHNpemVvZihQeUNvcm9XcmFwcGVyKSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKWNvcm9fd3JhcHBlcl9kZWFsbG9jLCAgICAgICAgICAgLyogZGVzdHJ1Y3RvciB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCisgICAgIkEgd3JhcHBlciBvYmplY3QgaW1wbGVtZW50aW5nIF9fYXdhaXRfXyBmb3IgY29yb3V0aW5lcy4iLAorICAgICh0cmF2ZXJzZXByb2MpY29yb193cmFwcGVyX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWNvcm9fd3JhcHBlcl9pdGVybmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY29yb193cmFwcGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCit9OworCitQeU9iamVjdCAqCitQeUNvcm9fTmV3KFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCit7CisgICAgcmV0dXJuIGdlbl9uZXdfd2l0aF9xdWFsbmFtZSgmUHlDb3JvX1R5cGUsIGYsIG5hbWUsIHF1YWxuYW1lKTsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvaXRlcm9iamVjdC5jIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKaW5kZXggMzA0N2Q2Yi4uMmZiMGM4OCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewogICAgICAgICAgICAgaW50IG9rOwotICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG9rID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5pdF9zZW50aW5lbCwgcmVzdWx0LCBQeV9FUSk7CiAgICAgICAgICAgICBpZiAob2sgPT0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvKiBDb21tb24gY2FzZSwgZmFzdCBwYXRoICovCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKZGlmZiAtLWdpdCBhL09iamVjdHMvbGlzdG9iamVjdC5jIGIvT2JqZWN0cy9saXN0b2JqZWN0LmMKaW5kZXggMTk5NjdjYS4uNDVlNTRjZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9saXN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9saXN0b2JqZWN0LmMKQEAgLTI0NDcsNyArMjQ0Nyw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJsaXN0IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI2MTEsNyArMjYxMSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImxpc3QgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJsaXN0IGluZGljZXMgbXVzdCBiZSBpbnRlZ2VycyBvciBzbGljZXMsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgaXRlbS0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDcwMzZjMGUuLjQwZGEwYjEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC0yMSw3ICsyMSw2IEBACiAgICAgICAgICBQeV9TSVpFKHgpIDwgMCA/IC0oc2RpZ2l0KSh4KS0+b2JfZGlnaXRbMF0gOiAgIFwKICAgICAgICAgICAgICAoUHlfU0laRSh4KSA9PSAwID8gKHNkaWdpdCkwIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgKHNkaWdpdCkoeCktPm9iX2RpZ2l0WzBdKSkKLSNkZWZpbmUgQUJTKHgpICgoeCkgPCAwID8gLSh4KSA6ICh4KSkKIAogI2lmIE5TTUFMTE5FR0lOVFMgKyBOU01BTExQT1NJTlRTID4gMAogLyogU21hbGwgaW50ZWdlcnMgYXJlIHByZWFsbG9jYXRlZCBpbiB0aGlzIGFycmF5IHNvIHRoYXQgdGhleQpAQCAtNTcsNyArNTYsNyBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiBtYXliZV9zbWFsbF9sb25nKFB5TG9uZ09iamVjdCAqdikKIHsKLSAgICBpZiAodiAmJiBBQlMoUHlfU0laRSh2KSkgPD0gMSkgeworICAgIGlmICh2ICYmIFB5X0FCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CiAgICAgICAgIHNkaWdpdCBpdmFsID0gTUVESVVNX1ZBTFVFKHYpOwogICAgICAgICBpZiAoLU5TTUFMTE5FR0lOVFMgPD0gaXZhbCAmJiBpdmFsIDwgTlNNQUxMUE9TSU5UUykgewogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMTE0LDcgKzExMyw3IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGxvbmdfbm9ybWFsaXplKFB5TG9uZ09iamVjdCAqdikKIHsKLSAgICBQeV9zc2l6ZV90IGogPSBBQlMoUHlfU0laRSh2KSk7CisgICAgUHlfc3NpemVfdCBqID0gUHlfQUJTKFB5X1NJWkUodikpOwogICAgIFB5X3NzaXplX3QgaSA9IGo7CiAKICAgICB3aGlsZSAoaSA+IDAgJiYgdi0+b2JfZGlnaXRbaS0xXSA9PSAwKQpAQCAtNzE4LDcgKzcxNyw3IEBACiAKICAgICBhc3NlcnQodiAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKLSAgICBuZGlnaXRzID0gQUJTKFB5X1NJWkUodikpOworICAgIG5kaWdpdHMgPSBQeV9BQlMoUHlfU0laRSh2KSk7CiAgICAgYXNzZXJ0KG5kaWdpdHMgPT0gMCB8fCB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV0gIT0gMCk7CiAgICAgaWYgKG5kaWdpdHMgPiAwKSB7CiAgICAgICAgIGRpZ2l0IG1zZCA9IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXTsKQEAgLTE1NjUsNyArMTU2NCw3IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGRpdnJlbTEoUHlMb25nT2JqZWN0ICphLCBkaWdpdCBuLCBkaWdpdCAqcHJlbSkKIHsKLSAgICBjb25zdCBQeV9zc2l6ZV90IHNpemUgPSBBQlMoUHlfU0laRShhKSk7CisgICAgY29uc3QgUHlfc3NpemVfdCBzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIFB5TG9uZ09iamVjdCAqejsKIAogICAgIGFzc2VydChuID4gMCAmJiBuIDw9IFB5TG9uZ19NQVNLKTsKQEAgLTE1OTcsNyArMTU5Niw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBzaXplX2EgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKIAogICAgIC8qIHF1aWNrIGFuZCBkaXJ0eSB1cHBlciBib3VuZCBmb3IgdGhlIG51bWJlciBvZiBkaWdpdHMKQEAgLTE3NjYsNyArMTc2NSw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKKyAgICBzaXplX2EgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKIAogICAgIC8qIENvbXB1dGUgYSByb3VnaCB1cHBlciBib3VuZCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nICovCkBAIC0yMzEzLDcgKzIzMTIsNyBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQsICpzdHJvYmo7CiAgICAgY2hhciAqZW5kID0gTlVMTDsKIAotICAgIHJlc3VsdCA9IFB5TG9uZ19Gcm9tU3RyaW5nKChjaGFyKilzLCAmZW5kLCBiYXNlKTsKKyAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVN0cmluZyhzLCAmZW5kLCBiYXNlKTsKICAgICBpZiAoZW5kID09IE5VTEwgfHwgKHJlc3VsdCAhPSBOVUxMICYmIGVuZCA9PSBzICsgbGVuKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC0yMzgwLDcgKzIzNzksNyBAQAogbG9uZ19kaXZyZW0oUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIsCiAgICAgICAgICAgICBQeUxvbmdPYmplY3QgKipwZGl2LCBQeUxvbmdPYmplY3QgKipwcmVtKQogewotICAgIFB5X3NzaXplX3Qgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpLCBzaXplX2IgPSBBQlMoUHlfU0laRShiKSk7CisgICAgUHlfc3NpemVfdCBzaXplX2EgPSBQeV9BQlMoUHlfU0laRShhKSksIHNpemVfYiA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBQeUxvbmdPYmplY3QgKno7CiAKICAgICBpZiAoc2l6ZV9iID09IDApIHsKQEAgLTI0MzksNyArMjQzOCw3IEBACiB9CiAKIC8qIFVuc2lnbmVkIGludCBkaXZpc2lvbiB3aXRoIHJlbWFpbmRlciAtLSB0aGUgYWxnb3JpdGhtLiAgVGhlIGFyZ3VtZW50cyB2MQotICAgYW5kIHcxIHNob3VsZCBzYXRpc2Z5IDIgPD0gQUJTKFB5X1NJWkUodzEpKSA8PSBBQlMoUHlfU0laRSh2MSkpLiAqLworICAgYW5kIHcxIHNob3VsZCBzYXRpc2Z5IDIgPD0gUHlfQUJTKFB5X1NJWkUodzEpKSA8PSBQeV9BQlMoUHlfU0laRSh2MSkpLiAqLwogCiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIHhfZGl2cmVtKFB5TG9uZ09iamVjdCAqdjEsIFB5TG9uZ09iamVjdCAqdzEsIFB5TG9uZ09iamVjdCAqKnByZW0pCkBAIC0yNDU5LDggKzI0NTgsOCBAQAogICAgICAgIHRoYXQgd29uJ3Qgb3ZlcmZsb3cgYSBkaWdpdC4gKi8KIAogICAgIC8qIGFsbG9jYXRlIHNwYWNlOyB3IHdpbGwgYWxzbyBiZSB1c2VkIHRvIGhvbGQgdGhlIGZpbmFsIHJlbWFpbmRlciAqLwotICAgIHNpemVfdiA9IEFCUyhQeV9TSVpFKHYxKSk7Ci0gICAgc2l6ZV93ID0gQUJTKFB5X1NJWkUodzEpKTsKKyAgICBzaXplX3YgPSBQeV9BQlMoUHlfU0laRSh2MSkpOworICAgIHNpemVfdyA9IFB5X0FCUyhQeV9TSVpFKHcxKSk7CiAgICAgYXNzZXJ0KHNpemVfdiA+PSBzaXplX3cgJiYgc2l6ZV93ID49IDIpOyAvKiBBc3NlcnQgY2hlY2tzIGJ5IGRpdigpICovCiAgICAgdiA9IF9QeUxvbmdfTmV3KHNpemVfdisxKTsKICAgICBpZiAodiA9PSBOVUxMKSB7CkBAIC0yNTkxLDcgKzI1OTAsNyBAQAogICAgICAgIG11bHRpcGxlIG9mIDQsIHJvdW5kaW5nIHRpZXMgdG8gYSBtdWx0aXBsZSBvZiA4LiAqLwogICAgIHN0YXRpYyBjb25zdCBpbnQgaGFsZl9ldmVuX2NvcnJlY3Rpb25bOF0gPSB7MCwgLTEsIC0yLCAxLCAwLCAtMSwgMiwgMX07CiAKLSAgICBhX3NpemUgPSBBQlMoUHlfU0laRShhKSk7CisgICAgYV9zaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOwogICAgIGlmIChhX3NpemUgPT0gMCkgewogICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIDA6IHNpZ25pZmljYW5kIDAuMCwgZXhwb25lbnQgMC4gKi8KICAgICAgICAgKmUgPSAwOwpAQCAtMjczMiw3ICsyNzMxLDcgQEAKICAgICAgICAgc2lnbiA9IFB5X1NJWkUoYSkgLSBQeV9TSVpFKGIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlfc3NpemVfdCBpID0gQUJTKFB5X1NJWkUoYSkpOworICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeV9BQlMoUHlfU0laRShhKSk7CiAgICAgICAgIHdoaWxlICgtLWkgPj0gMCAmJiBhLT5vYl9kaWdpdFtpXSA9PSBiLT5vYl9kaWdpdFtpXSkKICAgICAgICAgICAgIDsKICAgICAgICAgaWYgKGkgPCAwKQpAQCAtMjg1MCw3ICsyODQ5LDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogeF9hZGQoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplX2EgPSBBQlMoUHlfU0laRShhKSksIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5TG9uZ09iamVjdCAqejsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZGlnaXQgY2FycnkgPSAwOwpAQCAtMjg4NCw3ICsyODgzLDcgQEAKIHN0YXRpYyBQeUxvbmdPYmplY3QgKgogeF9zdWIoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplX2EgPSBBQlMoUHlfU0laRShhKSksIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKSwgc2l6ZV9iID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5TG9uZ09iamVjdCAqejsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ24gPSAxOwpAQCAtMjk0NCw3ICsyOTQzLDcgQEAKIAogICAgIENIRUNLX0JJTk9QKGEsIGIpOwogCi0gICAgaWYgKEFCUyhQeV9TSVpFKGEpKSA8PSAxICYmIEFCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcoTUVESVVNX1ZBTFVFKGEpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElVTV9WQUxVRShiKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yOTc0LDcgKzI5NzMsNyBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKLSAgICBpZiAoQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgUHlPYmplY3QqIHI7CiAgICAgICAgIHIgPSBQeUxvbmdfRnJvbUxvbmcoTUVESVVNX1ZBTFVFKGEpLU1FRElVTV9WQUxVRShiKSk7CiAgICAgICAgIHJldHVybiByOwpAQCAtMzAwMyw4ICszMDAyLDggQEAKIHhfbXVsKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQogewogICAgIFB5TG9uZ09iamVjdCAqejsKLSAgICBQeV9zc2l6ZV90IHNpemVfYSA9IEFCUyhQeV9TSVpFKGEpKTsKLSAgICBQeV9zc2l6ZV90IHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKKyAgICBQeV9zc2l6ZV90IHNpemVfYiA9IFB5X0FCUyhQeV9TSVpFKGIpKTsKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV9hICsgc2l6ZV9iKTsKQEAgLTMwOTgsNyArMzA5Nyw3IEBACiB7CiAgICAgUHlMb25nT2JqZWN0ICpoaSwgKmxvOwogICAgIFB5X3NzaXplX3Qgc2l6ZV9sbywgc2l6ZV9oaTsKLSAgICBjb25zdCBQeV9zc2l6ZV90IHNpemVfbiA9IEFCUyhQeV9TSVpFKG4pKTsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNpemVfbiA9IFB5X0FCUyhQeV9TSVpFKG4pKTsKIAogICAgIHNpemVfbG8gPSBQeV9NSU4oc2l6ZV9uLCBzaXplKTsKICAgICBzaXplX2hpID0gc2l6ZV9uIC0gc2l6ZV9sbzsKQEAgLTMxMjcsOCArMzEyNiw4IEBACiBzdGF0aWMgUHlMb25nT2JqZWN0ICoKIGtfbXVsKFB5TG9uZ09iamVjdCAqYSwgUHlMb25nT2JqZWN0ICpiKQogewotICAgIFB5X3NzaXplX3QgYXNpemUgPSBBQlMoUHlfU0laRShhKSk7Ci0gICAgUHlfc3NpemVfdCBic2l6ZSA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBQeV9zc2l6ZV90IGFzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpOworICAgIFB5X3NzaXplX3QgYnNpemUgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgUHlMb25nT2JqZWN0ICphaCA9IE5VTEw7CiAgICAgUHlMb25nT2JqZWN0ICphbCA9IE5VTEw7CiAgICAgUHlMb25nT2JqZWN0ICpiaCA9IE5VTEw7CkBAIC0zMzQ4LDggKzMzNDcsOCBAQAogc3RhdGljIFB5TG9uZ09iamVjdCAqCiBrX2xvcHNpZGVkX211bChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKIHsKLSAgICBjb25zdCBQeV9zc2l6ZV90IGFzaXplID0gQUJTKFB5X1NJWkUoYSkpOwotICAgIFB5X3NzaXplX3QgYnNpemUgPSBBQlMoUHlfU0laRShiKSk7CisgICAgY29uc3QgUHlfc3NpemVfdCBhc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKKyAgICBQeV9zc2l6ZV90IGJzaXplID0gUHlfQUJTKFB5X1NJWkUoYikpOwogICAgIFB5X3NzaXplX3QgbmJkb25lOyAgICAgICAgICAvKiAjIG9mIGIgZGlnaXRzIGFscmVhZHkgbXVsdGlwbGllZCAqLwogICAgIFB5TG9uZ09iamVjdCAqcmV0OwogICAgIFB5TG9uZ09iamVjdCAqYnNsaWNlID0gTlVMTDsKQEAgLTM0MDcsNyArMzQwNiw3IEBACiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKICAgICAvKiBmYXN0IHBhdGggZm9yIHNpbmdsZS1kaWdpdCBtdWx0aXBsaWNhdGlvbiAqLwotICAgIGlmIChBQlMoUHlfU0laRShhKSkgPD0gMSAmJiBBQlMoUHlfU0laRShiKSkgPD0gMSkgeworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPD0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPD0gMSkgewogICAgICAgICBzdHdvZGlnaXRzIHYgPSAoc3R3b2RpZ2l0cykoTUVESVVNX1ZBTFVFKGEpKSAqIE1FRElVTV9WQUxVRShiKTsKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXYpOwpAQCAtMzYxNCw4ICszNjEzLDggQEAKICAgICAqLwogCiAgICAgLyogUmVkdWNlIHRvIGNhc2Ugd2hlcmUgYSBhbmQgYiBhcmUgYm90aCBwb3NpdGl2ZS4gKi8KLSAgICBhX3NpemUgPSBBQlMoUHlfU0laRShhKSk7Ci0gICAgYl9zaXplID0gQUJTKFB5X1NJWkUoYikpOworICAgIGFfc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKKyAgICBiX3NpemUgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgbmVnYXRlID0gKFB5X1NJWkUoYSkgPCAwKSBeIChQeV9TSVpFKGIpIDwgMCk7CiAgICAgaWYgKGJfc2l6ZSA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19aZXJvRGl2aXNpb25FcnJvciwKQEAgLTM3MzEsNyArMzczMCw3IEBACiAgICAgICAgICAgICBpbmV4YWN0ID0gMTsKICAgICAgICAgUHlfREVDUkVGKHJlbSk7CiAgICAgfQotICAgIHhfc2l6ZSA9IEFCUyhQeV9TSVpFKHgpKTsKKyAgICB4X3NpemUgPSBQeV9BQlMoUHlfU0laRSh4KSk7CiAgICAgYXNzZXJ0KHhfc2l6ZSA+IDApOyAvKiByZXN1bHQgb2YgZGl2aXNpb24gaXMgbmV2ZXIgemVybyAqLwogICAgIHhfYml0cyA9ICh4X3NpemUtMSkqUHlMb25nX1NISUZUK2JpdHNfaW5fZGlnaXQoeC0+b2JfZGlnaXRbeF9zaXplLTFdKTsKIApAQCAtMzg0MSw3ICszODQwLDcgQEAKIAogICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgeyAgLyogaWYgZXhwb25lbnQgaXMgbmVnYXRpdmUgKi8KICAgICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwb3coKSAybmQgYXJndW1lbnQgIgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJwb3coKSAybmQgYXJndW1lbnQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYmUgbmVnYXRpdmUgd2hlbiAzcmQgYXJndW1lbnQgc3BlY2lmaWVkIik7CiAgICAgICAgICAgICBnb3RvIEVycm9yOwogICAgICAgICB9CkBAIC00MDAzLDcgKzQwMDIsNyBAQAogICAgIC8qIEltcGxlbWVudCB+eCBhcyAtKHgrMSkgKi8KICAgICBQeUxvbmdPYmplY3QgKng7CiAgICAgUHlMb25nT2JqZWN0ICp3OwotICAgIGlmIChBQlMoUHlfU0laRSh2KSkgPD0xKQorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPD0xKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKC0oTUVESVVNX1ZBTFVFKHYpKzEpKTsKICAgICB3ID0gKFB5TG9uZ09iamVjdCAqKVB5TG9uZ19Gcm9tTG9uZygxTCk7CiAgICAgaWYgKHcgPT0gTlVMTCkKQEAgLTQwMjAsNyArNDAxOSw3IEBACiBsb25nX25lZyhQeUxvbmdPYmplY3QgKnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp6OwotICAgIGlmIChBQlMoUHlfU0laRSh2KSkgPD0gMSkKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoLU1FRElVTV9WQUxVRSh2KSk7CiAgICAgeiA9IChQeUxvbmdPYmplY3QgKilfUHlMb25nX0NvcHkodik7CiAgICAgaWYgKHogIT0gTlVMTCkKQEAgLTQwNzUsNyArNDA3NCw3IEBACiAgICAgICAgICAgICBnb3RvIHJzaGlmdF9lcnJvcjsKICAgICAgICAgfQogICAgICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwotICAgICAgICBuZXdzaXplID0gQUJTKFB5X1NJWkUoYSkpIC0gd29yZHNoaWZ0OworICAgICAgICBuZXdzaXplID0gUHlfQUJTKFB5X1NJWkUoYSkpIC0gd29yZHNoaWZ0OwogICAgICAgICBpZiAobmV3c2l6ZSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKICAgICAgICAgbG9zaGlmdCA9IHNoaWZ0YnkgJSBQeUxvbmdfU0hJRlQ7CkBAIC00MTIyLDcgKzQxMjEsNyBAQAogICAgIHdvcmRzaGlmdCA9IHNoaWZ0YnkgLyBQeUxvbmdfU0hJRlQ7CiAgICAgcmVtc2hpZnQgID0gc2hpZnRieSAtIHdvcmRzaGlmdCAqIFB5TG9uZ19TSElGVDsKIAotICAgIG9sZHNpemUgPSBBQlMoUHlfU0laRShhKSk7CisgICAgb2xkc2l6ZSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZXdzaXplID0gb2xkc2l6ZSArIHdvcmRzaGlmdDsKICAgICBpZiAocmVtc2hpZnQpCiAgICAgICAgICsrbmV3c2l6ZTsKQEAgLTQxODMsNyArNDE4Miw3IEBACiAgICAgICAgcmVzdWx0IGJhY2sgdG8gc2lnbi1tYWduaXR1ZGUgYXQgdGhlIGVuZC4gKi8KIAogICAgIC8qIElmIGEgaXMgbmVnYXRpdmUsIHJlcGxhY2UgaXQgYnkgaXRzIHR3bydzIGNvbXBsZW1lbnQuICovCi0gICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIHNpemVfYSA9IFB5X0FCUyhQeV9TSVpFKGEpKTsKICAgICBuZWdhID0gUHlfU0laRShhKSA8IDA7CiAgICAgaWYgKG5lZ2EpIHsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfYSk7CkBAIC00MTk3LDcgKzQxOTYsNyBAQAogICAgICAgICBQeV9JTkNSRUYoYSk7CiAKICAgICAvKiBTYW1lIGZvciBiLiAqLwotICAgIHNpemVfYiA9IEFCUyhQeV9TSVpFKGIpKTsKKyAgICBzaXplX2IgPSBQeV9BQlMoUHlfU0laRShiKSk7CiAgICAgbmVnYiA9IFB5X1NJWkUoYikgPCAwOwogICAgIGlmIChuZWdiKSB7CiAgICAgICAgIHogPSBfUHlMb25nX05ldyhzaXplX2IpOwpAQCAtNDMyOCw2ICs0MzI3LDIxMSBAQAogICAgIHJldHVybiB2OwogfQogCitQeU9iamVjdCAqCitfUHlMb25nX0dDRChQeU9iamVjdCAqYWFyZywgUHlPYmplY3QgKmJhcmcpCit7CisgICAgUHlMb25nT2JqZWN0ICphLCAqYiwgKmMgPSBOVUxMLCAqZCA9IE5VTEwsICpyOworICAgIHN0d29kaWdpdHMgeCwgeSwgcSwgcywgdCwgY19jYXJyeSwgZF9jYXJyeTsKKyAgICBzdHdvZGlnaXRzIEEsIEIsIEMsIEQsIFQ7CisgICAgaW50IG5iaXRzLCBrOworICAgIFB5X3NzaXplX3Qgc2l6ZV9hLCBzaXplX2IsIGFsbG9jX2EsIGFsbG9jX2I7CisgICAgZGlnaXQgKmFfZGlnaXQsICpiX2RpZ2l0LCAqY19kaWdpdCwgKmRfZGlnaXQsICphX2VuZCwgKmJfZW5kOworCisgICAgYSA9IChQeUxvbmdPYmplY3QgKilhYXJnOworICAgIGIgPSAoUHlMb25nT2JqZWN0ICopYmFyZzsKKyAgICBzaXplX2EgPSBQeV9TSVpFKGEpOworICAgIHNpemVfYiA9IFB5X1NJWkUoYik7CisgICAgaWYgKC0yIDw9IHNpemVfYSAmJiBzaXplX2EgPD0gMiAmJiAtMiA8PSBzaXplX2IgJiYgc2l6ZV9iIDw9IDIpIHsKKyAgICAgICAgUHlfSU5DUkVGKGEpOworICAgICAgICBQeV9JTkNSRUYoYik7CisgICAgICAgIGdvdG8gc2ltcGxlOworICAgIH0KKworICAgIC8qIEluaXRpYWwgcmVkdWN0aW9uOiBtYWtlIHN1cmUgdGhhdCAwIDw9IGIgPD0gYS4gKi8KKyAgICBhID0gKFB5TG9uZ09iamVjdCAqKWxvbmdfYWJzKGEpOworICAgIGlmIChhID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGIgPSAoUHlMb25nT2JqZWN0ICopbG9uZ19hYnMoYik7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobG9uZ19jb21wYXJlKGEsIGIpIDwgMCkgeworICAgICAgICByID0gYTsKKyAgICAgICAgYSA9IGI7CisgICAgICAgIGIgPSByOworICAgIH0KKyAgICAvKiBXZSBub3cgb3duIHJlZmVyZW5jZXMgdG8gYSBhbmQgYiAqLworCisgICAgYWxsb2NfYSA9IFB5X1NJWkUoYSk7CisgICAgYWxsb2NfYiA9IFB5X1NJWkUoYik7CisgICAgLyogcmVkdWNlIHVudGlsIGEgZml0cyBpbnRvIDIgZGlnaXRzICovCisgICAgd2hpbGUgKChzaXplX2EgPSBQeV9TSVpFKGEpKSA+IDIpIHsKKyAgICAgICAgbmJpdHMgPSBiaXRzX2luX2RpZ2l0KGEtPm9iX2RpZ2l0W3NpemVfYS0xXSk7CisgICAgICAgIC8qIGV4dHJhY3QgdG9wIDIqUHlMb25nX1NISUZUIGJpdHMgb2YgYSBpbnRvIHgsIGFsb25nIHdpdGgKKyAgICAgICAgICAgY29ycmVzcG9uZGluZyBiaXRzIG9mIGIgaW50byB5ICovCisgICAgICAgIHNpemVfYiA9IFB5X1NJWkUoYik7CisgICAgICAgIGFzc2VydChzaXplX2IgPD0gc2l6ZV9hKTsKKyAgICAgICAgaWYgKHNpemVfYiA9PSAwKSB7CisgICAgICAgICAgICBpZiAoc2l6ZV9hIDwgYWxsb2NfYSkgeworICAgICAgICAgICAgICAgIHIgPSAoUHlMb25nT2JqZWN0ICopX1B5TG9uZ19Db3B5KGEpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByID0gYTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoYyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGQpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXI7CisgICAgICAgIH0KKyAgICAgICAgeCA9ICgoKHR3b2RpZ2l0cylhLT5vYl9kaWdpdFtzaXplX2EtMV0gPDwgKDIqUHlMb25nX1NISUZULW5iaXRzKSkgfAorICAgICAgICAgICAgICgodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W3NpemVfYS0yXSA8PCAoUHlMb25nX1NISUZULW5iaXRzKSkgfAorICAgICAgICAgICAgIChhLT5vYl9kaWdpdFtzaXplX2EtM10gPj4gbmJpdHMpKTsKKworICAgICAgICB5ID0gKChzaXplX2IgPj0gc2l6ZV9hIC0gMiA/IGItPm9iX2RpZ2l0W3NpemVfYS0zXSA+PiBuYml0cyA6IDApIHwKKyAgICAgICAgICAgICAoc2l6ZV9iID49IHNpemVfYSAtIDEgPyAodHdvZGlnaXRzKWItPm9iX2RpZ2l0W3NpemVfYS0yXSA8PCAoUHlMb25nX1NISUZULW5iaXRzKSA6IDApIHwKKyAgICAgICAgICAgICAoc2l6ZV9iID49IHNpemVfYSA/ICh0d29kaWdpdHMpYi0+b2JfZGlnaXRbc2l6ZV9hLTFdIDw8ICgyKlB5TG9uZ19TSElGVC1uYml0cykgOiAwKSk7CisKKyAgICAgICAgLyogaW5uZXIgbG9vcCBvZiBMZWhtZXIncyBhbGdvcml0aG07IEEsIEIsIEMsIEQgbmV2ZXIgZ3JvdworICAgICAgICAgICBsYXJnZXIgdGhhbiBQeUxvbmdfTUFTSyBkdXJpbmcgdGhlIGFsZ29yaXRobS4gKi8KKyAgICAgICAgQSA9IDE7IEIgPSAwOyBDID0gMDsgRCA9IDE7CisgICAgICAgIGZvciAoaz0wOzsgaysrKSB7CisgICAgICAgICAgICBpZiAoeS1DID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBxID0gKHgrKEEtMSkpLyh5LUMpOworICAgICAgICAgICAgcyA9IEIrcSpEOworICAgICAgICAgICAgdCA9IHgtcSp5OworICAgICAgICAgICAgaWYgKHMgPiB0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgeCA9IHk7IHkgPSB0OworICAgICAgICAgICAgdCA9IEErcSpDOyBBID0gRDsgQiA9IEM7IEMgPSBzOyBEID0gdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChrID09IDApIHsKKyAgICAgICAgICAgIC8qIG5vIHByb2dyZXNzOyBkbyBhIEV1Y2xpZGVhbiBzdGVwICovCisgICAgICAgICAgICBpZiAobF9kaXZtb2QoYSwgYiwgTlVMTCwgJnIpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgYSA9IGI7CisgICAgICAgICAgICBiID0gcjsKKyAgICAgICAgICAgIGFsbG9jX2EgPSBhbGxvY19iOworICAgICAgICAgICAgYWxsb2NfYiA9IFB5X1NJWkUoYik7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgYSwgYiA9IEEqYi1CKmEsIEQqYS1DKmIgaWYgayBpcyBvZGQKKyAgICAgICAgICBhLCBiID0gQSphLUIqYiwgRCpiLUMqYSBpZiBrIGlzIGV2ZW4KKyAgICAgICAgKi8KKyAgICAgICAgaWYgKGsmMSkgeworICAgICAgICAgICAgVCA9IC1BOyBBID0gLUI7IEIgPSBUOworICAgICAgICAgICAgVCA9IC1DOyBDID0gLUQ7IEQgPSBUOworICAgICAgICB9CisgICAgICAgIGlmIChjICE9IE5VTEwpCisgICAgICAgICAgICBQeV9TSVpFKGMpID0gc2l6ZV9hOworICAgICAgICBlbHNlIGlmIChQeV9SRUZDTlQoYSkgPT0gMSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGEpOworICAgICAgICAgICAgYyA9IGE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhbGxvY19hID0gc2l6ZV9hOworICAgICAgICAgICAgYyA9IF9QeUxvbmdfTmV3KHNpemVfYSk7CisgICAgICAgICAgICBpZiAoYyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZCAhPSBOVUxMKQorICAgICAgICAgICAgUHlfU0laRShkKSA9IHNpemVfYTsKKyAgICAgICAgZWxzZSBpZiAoUHlfUkVGQ05UKGIpID09IDEgJiYgc2l6ZV9hIDw9IGFsbG9jX2IpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihiKTsKKyAgICAgICAgICAgIGQgPSBiOworICAgICAgICAgICAgUHlfU0laRShkKSA9IHNpemVfYTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFsbG9jX2IgPSBzaXplX2E7CisgICAgICAgICAgICBkID0gX1B5TG9uZ19OZXcoc2l6ZV9hKTsKKyAgICAgICAgICAgIGlmIChkID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBhX2VuZCA9IGEtPm9iX2RpZ2l0ICsgc2l6ZV9hOworICAgICAgICBiX2VuZCA9IGItPm9iX2RpZ2l0ICsgc2l6ZV9iOworCisgICAgICAgIC8qIGNvbXB1dGUgbmV3IGEgYW5kIG5ldyBiIGluIHBhcmFsbGVsICovCisgICAgICAgIGFfZGlnaXQgPSBhLT5vYl9kaWdpdDsKKyAgICAgICAgYl9kaWdpdCA9IGItPm9iX2RpZ2l0OworICAgICAgICBjX2RpZ2l0ID0gYy0+b2JfZGlnaXQ7CisgICAgICAgIGRfZGlnaXQgPSBkLT5vYl9kaWdpdDsKKyAgICAgICAgY19jYXJyeSA9IDA7CisgICAgICAgIGRfY2FycnkgPSAwOworICAgICAgICB3aGlsZSAoYl9kaWdpdCA8IGJfZW5kKSB7CisgICAgICAgICAgICBjX2NhcnJ5ICs9IChBICogKmFfZGlnaXQpIC0gKEIgKiAqYl9kaWdpdCk7CisgICAgICAgICAgICBkX2NhcnJ5ICs9IChEICogKmJfZGlnaXQrKykgLSAoQyAqICphX2RpZ2l0KyspOworICAgICAgICAgICAgKmNfZGlnaXQrKyA9IChkaWdpdCkoY19jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgICpkX2RpZ2l0KysgPSAoZGlnaXQpKGRfY2FycnkgJiBQeUxvbmdfTUFTSyk7CisgICAgICAgICAgICBjX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgICAgICBkX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGFfZGlnaXQgPCBhX2VuZCkgeworICAgICAgICAgICAgY19jYXJyeSArPSBBICogKmFfZGlnaXQ7CisgICAgICAgICAgICBkX2NhcnJ5IC09IEMgKiAqYV9kaWdpdCsrOworICAgICAgICAgICAgKmNfZGlnaXQrKyA9IChkaWdpdCkoY19jYXJyeSAmIFB5TG9uZ19NQVNLKTsKKyAgICAgICAgICAgICpkX2RpZ2l0KysgPSAoZGlnaXQpKGRfY2FycnkgJiBQeUxvbmdfTUFTSyk7CisgICAgICAgICAgICBjX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgICAgICBkX2NhcnJ5ID4+PSBQeUxvbmdfU0hJRlQ7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KGNfY2FycnkgPT0gMCk7CisgICAgICAgIGFzc2VydChkX2NhcnJ5ID09IDApOworCisgICAgICAgIFB5X0lOQ1JFRihjKTsKKyAgICAgICAgUHlfSU5DUkVGKGQpOworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgYSA9IGxvbmdfbm9ybWFsaXplKGMpOworICAgICAgICBiID0gbG9uZ19ub3JtYWxpemUoZCk7CisgICAgfQorICAgIFB5X1hERUNSRUYoYyk7CisgICAgUHlfWERFQ1JFRihkKTsKKworc2ltcGxlOgorICAgIGFzc2VydChQeV9SRUZDTlQoYSkgPiAwKTsKKyAgICBhc3NlcnQoUHlfUkVGQ05UKGIpID4gMCk7CisjaWYgTE9OR19NQVggPj4gMipQeUxvbmdfU0hJRlQKKyAgICAvKiBhIGZpdHMgaW50byBhIGxvbmcsIHNvIGIgbXVzdCB0b28gKi8KKyAgICB4ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKilhKTsKKyAgICB5ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKiliKTsKKyNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gMipQeUxvbmdfU0hJRlQKKyAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYSk7CisgICAgeSA9IFB5TG9uZ19Bc0xvbmdMb25nKChQeU9iamVjdCAqKWIpOworI2Vsc2UKKyMgZXJyb3IgIl9QeUxvbmdfR0NEIgorI2VuZGlmCisgICAgeCA9IFB5X0FCUyh4KTsKKyAgICB5ID0gUHlfQUJTKHkpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisKKyAgICAvKiB1c3VhbCBFdWNsaWRlYW4gYWxnb3JpdGhtIGZvciBsb25ncyAqLworICAgIHdoaWxlICh5ICE9IDApIHsKKyAgICAgICAgdCA9IHk7CisgICAgICAgIHkgPSB4ICUgeTsKKyAgICAgICAgeCA9IHQ7CisgICAgfQorI2lmIExPTkdfTUFYID4+IDIqUHlMb25nX1NISUZUCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh4KTsKKyNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gMipQeUxvbmdfU0hJRlQKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKKyNlbHNlCisjIGVycm9yICJfUHlMb25nX0dDRCIKKyNlbmRpZgorCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIFB5X1hERUNSRUYoYyk7CisgICAgUHlfWERFQ1JFRihkKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGxvbmdfZmxvYXQoUHlPYmplY3QgKnYpCiB7CkBAIC00NjMwLDcgKzQ4MzQsNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gb2Zmc2V0b2YoUHlMb25nT2JqZWN0LCBvYl9kaWdpdCkgKyBBQlMoUHlfU0laRSh2KSkqc2l6ZW9mKGRpZ2l0KTsKKyAgICByZXMgPSBvZmZzZXRvZihQeUxvbmdPYmplY3QsIG9iX2RpZ2l0KSArIFB5X0FCUyhQeV9TSVpFKHYpKSpzaXplb2YoZGlnaXQpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzKTsKIH0KIApAQCAtNDY0NCw3ICs0ODQ4LDcgQEAKICAgICBhc3NlcnQodiAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKIAotICAgIG5kaWdpdHMgPSBBQlMoUHlfU0laRSh2KSk7CisgICAgbmRpZ2l0cyA9IFB5X0FCUyhQeV9TSVpFKHYpKTsKICAgICBpZiAobmRpZ2l0cyA9PSAwKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwogCkBAIC00ODQ5LDcgKzUwNTMsNyBAQAogICAgIGlmICh0eXBlICE9ICZQeUxvbmdfVHlwZSAmJiBQeVR5cGVfSXNTdWJ0eXBlKHR5cGUsICZQeUxvbmdfVHlwZSkpIHsKICAgICAgICAgUHlMb25nT2JqZWN0ICpuZXdvYmo7CiAgICAgICAgIGludCBpOwotICAgICAgICBQeV9zc2l6ZV90IG4gPSBBQlMoUHlfU0laRShsb25nX29iaikpOworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeV9BQlMoUHlfU0laRShsb25nX29iaikpOwogCiAgICAgICAgIG5ld29iaiA9IChQeUxvbmdPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCBuKTsKICAgICAgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CkBAIC00ODc0LDkgKzUwNzgsNyBAQAogXG5cCiBSZXR1cm4gdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGFycmF5IG9mIGJ5dGVzLlxuXAogXG5cCi1UaGUgYnl0ZXMgYXJndW1lbnQgbXVzdCBlaXRoZXIgc3VwcG9ydCB0aGUgYnVmZmVyIHByb3RvY29sIG9yIGJlIGFuXG5cCi1pdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGVzLiAgQnl0ZXMgYW5kIGJ5dGVhcnJheSBhcmUgZXhhbXBsZXMgb2ZcblwKLWJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wuXG5cCitUaGUgYnl0ZXMgYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzLWxpa2Ugb2JqZWN0IChlLmcuIGJ5dGVzIG9yIGJ5dGVhcnJheSkuXG5cCiBcblwKIFRoZSBieXRlb3JkZXIgYXJndW1lbnQgZGV0ZXJtaW5lcyB0aGUgYnl0ZSBvcmRlciB1c2VkIHRvIHJlcHJlc2VudCB0aGVcblwKIGludGVnZXIuICBJZiBieXRlb3JkZXIgaXMgJ2JpZycsIHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgaXMgYXQgdGhlXG5cCkBAIC01MDk1LDEzICs1Mjk3LDEzIEBACiAgICAgICAgICAgICAgKiB0byB0aGUgb3JpZ2luYWwgcmVmY250ICsgMSAqLwogICAgICAgICAgICAgUHlfUkVGQ05UKG9wKSA9IHJlZmNudCArIDE7CiAgICAgICAgICAgICBhc3NlcnQoUHlfU0laRShvcCkgPT0gc2l6ZSk7Ci0gICAgICAgICAgICBhc3NlcnQodi0+b2JfZGlnaXRbMF0gPT0gYWJzKGl2YWwpKTsKKyAgICAgICAgICAgIGFzc2VydCh2LT5vYl9kaWdpdFswXSA9PSAoZGlnaXQpYWJzKGl2YWwpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICh2b2lkKVB5T2JqZWN0X0lOSVQodiwgJlB5TG9uZ19UeXBlKTsKICAgICAgICAgfQogICAgICAgICBQeV9TSVpFKHYpID0gc2l6ZTsKLSAgICAgICAgdi0+b2JfZGlnaXRbMF0gPSBhYnMoaXZhbCk7CisgICAgICAgIHYtPm9iX2RpZ2l0WzBdID0gKGRpZ2l0KWFicyhpdmFsKTsKICAgICB9CiAjZW5kaWYKICAgICAvKiBpbml0aWFsaXplIGludF9pbmZvICovCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCAwYmU4NDkzLi43NGNhZDdkIDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTEsNiArMSw3IEBACiAvKiBNZW1vcnl2aWV3IG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogCkBAIC00OCw5ICs0OSw2IEBACiAqLwogCiAKLSNkZWZpbmUgWFNUUklOR0laRSh2KSAjdgotI2RlZmluZSBTVFJJTkdJWkUodikgWFNUUklOR0laRSh2KQotCiAjZGVmaW5lIENIRUNLX01CVUZfUkVMRUFTRUQobWJ1ZikgXAogICAgIGlmICgoKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKiltYnVmKS0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEKSB7IFwKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xOTUsMTAgKzE5MywxMCBAQAogI2RlZmluZSBWSUVXX0FERFIobXYpICgmKChQeU1lbW9yeVZpZXdPYmplY3QgKiltdiktPnZpZXcpCiAKIC8qIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2Ygc3Vib2Zmc2V0cyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLiAqLwotI2RlZmluZSBIQVZFX1BUUihzdWJvZmZzZXRzKSAoc3Vib2Zmc2V0cyAmJiBzdWJvZmZzZXRzWzBdID49IDApCisjZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMsIGRpbSkgKHN1Ym9mZnNldHMgJiYgc3Vib2Zmc2V0c1tkaW1dID49IDApCiAvKiBBZGp1c3QgcHRyIGlmIHN1Ym9mZnNldHMgYXJlIHByZXNlbnQuICovCi0jZGVmaW5lIEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKSBcCi0gICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMpID8gKigoY2hhcioqKXB0cikgKyBzdWJvZmZzZXRzWzBdIDogcHRyKQorI2RlZmluZSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cywgZGltKSBcCisgICAgKEhBVkVfUFRSKHN1Ym9mZnNldHMsIGRpbSkgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbZGltXSA6IHB0cikKIAogLyogTWVtb3J5dmlldyBidWZmZXIgcHJvcGVydGllcyAqLwogI2RlZmluZSBNVl9DX0NPTlRJR1VPVVMoZmxhZ3MpIChmbGFncyYoX1B5X01FTU9SWVZJRVdfU0NBTEFSfF9QeV9NRU1PUllWSUVXX0MpKQpAQCAtMjIzLDcgKzIyMSw3IEBACiAKIAogUHlEb2NfU1RSVkFSKG1lbW9yeV9kb2MsCi0ibWVtb3J5dmlldyhvYmplY3QpXG5cCisibWVtb3J5dmlldygkbW9kdWxlLCBvYmplY3QpXG4tLVxuXAogXG5cCiBDcmVhdGUgYSBuZXcgbWVtb3J5dmlldyBvYmplY3Qgd2hpY2ggcmVmZXJlbmNlcyB0aGUgZ2l2ZW4gb2JqZWN0LiIpOwogCkBAIC0zMzUsMTEgKzMzMywxMSBAQAogICAgICAgICBjaGFyICpwOwogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgewotICAgICAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cywgMCk7CiAgICAgICAgICAgICBtZW1jcHkocCwgeHNwdHIsIGl0ZW1zaXplKTsKICAgICAgICAgfQogICAgICAgICBmb3IgKGk9MCwgcD1tZW07IGkgPCBzaGFwZVswXTsgcCs9aXRlbXNpemUsIGRwdHIrPWRzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMsIDApOwogICAgICAgICAgICAgbWVtY3B5KHhkcHRyLCBwLCBpdGVtc2l6ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjcsOCArMzY1LDggQEAKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IGRwdHIrPWRzdHJpZGVzWzBdLCBzcHRyKz1zc3RyaWRlc1swXSwgaSsrKSB7Ci0gICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7Ci0gICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cyk7CisgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cywgMCk7CisgICAgICAgIGNoYXIgKnhzcHRyID0gQURKVVNUX1BUUihzcHRyLCBzc3Vib2Zmc2V0cywgMCk7CiAKICAgICAgICAgY29weV9yZWMoc2hhcGUrMSwgbmRpbS0xLCBpdGVtc2l6ZSwKICAgICAgICAgICAgICAgICAgeGRwdHIsIGRzdHJpZGVzKzEsIGRzdWJvZmZzZXRzID8gZHN1Ym9mZnNldHMrMSA6IE5VTEwsCkBAIC02NjAsNyArNjU4LDcgQEAKICAgICBpZiAoc3JjLT5uZGltID4gUHlCVUZfTUFYX05ESU0pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAibWVtb3J5dmlldzogbnVtYmVyIG9mIGRpbWVuc2lvbnMgbXVzdCBub3QgZXhjZWVkICIKLSAgICAgICAgICAgIFNUUklOR0laRShQeUJVRl9NQVhfTkRJTSkpOworICAgICAgICAgICAgUHlfU1RSSU5HSUZZKFB5QlVGX01BWF9ORElNKSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNzk1LDcgKzc5Myw3IEBACiAgICAgfQogCiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgIm1lbW9yeXZpZXc6ICUuMjAwcyBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgYnVmZmVyIGludGVyZmFjZSIsCisgICAgICAgICJtZW1vcnl2aWV3OiBhIGJ5dGVzLWxpa2Ugb2JqZWN0IGlzIHJlcXVpcmVkLCBub3QgJyUuMjAwcyciLAogICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTg5NSw3ICs4OTMsNyBAQAogICAgVGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgaXMgdGhlIHNhbWUKICAgIChpLmUuIHRvbGlzdChpbnB1dCkgPT0gdG9saXN0KG91dHB1dCkpLCBidXQgdGhlIHBoeXNpY2FsIGxheW91dCBpbgogICAgbWVtb3J5IGNhbiBiZSBleHBsaWNpdGx5IGNob3Nlbi4KLSAKKwogICAgQXMgdXN1YWwsIGlmIGJ1ZmZlcnR5cGU9UHlCVUZfV1JJVEUsIHRoZSBleHBvcnRlcidzIGJ1ZmZlciBtdXN0IGJlIHdyaXRhYmxlLAogICAgb3RoZXJ3aXNlIGl0IG1heSBiZSB3cml0YWJsZSBvciByZWFkLW9ubHkuCiAKQEAgLTExOTksMTMgKzExOTcsNiBAQAogICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzID09IG12LT5vYl9hcnJheSArIHZpZXctPm5kaW0pOwogICAgIGFzc2VydCh2aWV3LT5zdWJvZmZzZXRzID09IG12LT5vYl9hcnJheSArIDIqdmlldy0+bmRpbSk7CiAKLSAgICBpZiAoZ2V0X25hdGl2ZV9mbXRjaGFyKCZzcmNjaGFyLCB2aWV3LT5mb3JtYXQpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJtZW1vcnl2aWV3OiBzb3VyY2UgZm9ybWF0IG11c3QgYmUgYSBuYXRpdmUgc2luZ2xlIGNoYXJhY3RlciAiCi0gICAgICAgICAgICAiZm9ybWF0IHByZWZpeGVkIHdpdGggYW4gb3B0aW9uYWwgJ0AnIik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCiAgICAgYXNjaWlmbXQgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhmb3JtYXQpOwogICAgIGlmIChhc2NpaWZtdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMTIxOCw3ICsxMjA5LDggQEAKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgaWYgKCFJU19CWVRFX0ZPUk1BVChzcmNjaGFyKSAmJiAhSVNfQllURV9GT1JNQVQoZGVzdGNoYXIpKSB7CisgICAgaWYgKChnZXRfbmF0aXZlX2ZtdGNoYXIoJnNyY2NoYXIsIHZpZXctPmZvcm1hdCkgPCAwIHx8CisgICAgICAgICAhSVNfQllURV9GT1JNQVQoc3JjY2hhcikpICYmICFJU19CWVRFX0ZPUk1BVChkZXN0Y2hhcikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCBiZXR3ZWVuIHR3byBub24tYnl0ZSBmb3JtYXRzIik7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtMTI0NCw3ICsxMjM2LDcgQEAKICAgICB2aWV3LT5zdWJvZmZzZXRzID0gTlVMTDsKIAogICAgIGluaXRfZmxhZ3MobXYpOwotIAorCiAgICAgcmV0ID0gMDsKIAogb3V0OgpAQCAtMTM4OSw3ICsxMzgxLDcgQEAKICAgICAgICAgaWYgKG5kaW0gPiBQeUJVRl9NQVhfTkRJTSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgIm1lbW9yeXZpZXc6IG51bWJlciBvZiBkaW1lbnNpb25zIG11c3Qgbm90IGV4Y2VlZCAiCi0gICAgICAgICAgICAgICAgU1RSSU5HSVpFKFB5QlVGX01BWF9ORElNKSk7CisgICAgICAgICAgICAgICAgUHlfU1RSSU5HSUZZKFB5QlVGX01BWF9ORElNKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoc2VsZi0+dmlldy5uZGltICE9IDEgJiYgbmRpbSAhPSAxKSB7CkBAIC0yMDYwLDcgKzIwNTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgaXRlbSA9IHVucGFja19zaW5nbGUoeHB0ciwgZm10KTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGxzdCk7CkBAIC0yMDk0LDcgKzIwODYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgaXRlbSA9IHRvbGlzdF9yZWMoeHB0ciwgbmRpbS0xLCBzaGFwZSsxLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzKzEsIHN1Ym9mZnNldHMgPyBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQpOwpAQCAtMjE2MSw2ICsyMTUzLDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfaGV4KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIFB5X2J1ZmZlciAqc3JjID0gVklFV19BRERSKHNlbGYpOworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KHNyYy0+YnVmLCBzcmMtPmxlbik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfcmVwcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPmZsYWdzICYgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQpCkBAIC0yMTc0LDMzICsyMTc0LDY2IEBACiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhpbmcgYW5kIHNsaWNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgaXRlbSBhdCBpbmRleC4gKi8KIHN0YXRpYyBjaGFyICoKLXB0cl9mcm9tX2luZGV4KFB5X2J1ZmZlciAqdmlldywgUHlfc3NpemVfdCBpbmRleCkKK2xvb2t1cF9kaW1lbnNpb24oUHlfYnVmZmVyICp2aWV3LCBjaGFyICpwdHIsIGludCBkaW0sIFB5X3NzaXplX3QgaW5kZXgpCiB7Ci0gICAgY2hhciAqcHRyOwotICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uICovCisgICAgUHlfc3NpemVfdCBuaXRlbXM7IC8qIGl0ZW1zIGluIHRoZSBnaXZlbiBkaW1lbnNpb24gKi8KIAogICAgIGFzc2VydCh2aWV3LT5zaGFwZSk7CiAgICAgYXNzZXJ0KHZpZXctPnN0cmlkZXMpOwogCi0gICAgbml0ZW1zID0gdmlldy0+c2hhcGVbMF07CisgICAgbml0ZW1zID0gdmlldy0+c2hhcGVbZGltXTsKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGluZGV4ICs9IG5pdGVtczsKICAgICB9CiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBuaXRlbXMpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbmRleEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMgb24gZGltZW5zaW9uICVkIiwgZGltICsgMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOwotICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzWzBdICogaW5kZXg7CisgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbZGltXSAqIGluZGV4OwogCi0gICAgcHRyID0gQURKVVNUX1BUUihwdHIsIHZpZXctPnN1Ym9mZnNldHMpOworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCB2aWV3LT5zdWJvZmZzZXRzLCBkaW0pOwogCiAgICAgcmV0dXJuIHB0cjsKIH0KIAorLyogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBpdGVtIGF0IGluZGV4LiAqLworc3RhdGljIGNoYXIgKgorcHRyX2Zyb21faW5kZXgoUHlfYnVmZmVyICp2aWV3LCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIGNoYXIgKnB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgIHJldHVybiBsb29rdXBfZGltZW5zaW9uKHZpZXcsIHB0ciwgMCwgaW5kZXgpOworfQorCisvKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZW0gYXQgdHVwbGUuICovCitzdGF0aWMgY2hhciAqCitwdHJfZnJvbV90dXBsZShQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICp0dXApCit7CisgICAgY2hhciAqcHRyID0gKGNoYXIgKil2aWV3LT5idWY7CisgICAgUHlfc3NpemVfdCBkaW0sIG5pbmRpY2VzID0gUHlUdXBsZV9HRVRfU0laRSh0dXApOworCisgICAgaWYgKG5pbmRpY2VzID4gdmlldy0+bmRpbSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmRleCAlemQtZGltZW5zaW9uIHZpZXcgd2l0aCAlemQtZWxlbWVudCB0dXBsZSIsCisgICAgICAgICAgICAgICAgICAgICB2aWV3LT5uZGltLCBuaW5kaWNlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoZGltID0gMDsgZGltIDwgbmluZGljZXM7IGRpbSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgICAgIGluZGV4ID0gUHlOdW1iZXJfQXNTc2l6ZV90KFB5VHVwbGVfR0VUX0lURU0odHVwLCBkaW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcHRyID0gbG9va3VwX2RpbWVuc2lvbih2aWV3LCBwdHIsIGRpbSwgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHB0cjsKK30KKwogLyogUmV0dXJuIHRoZSBpdGVtIGF0IGluZGV4LiBJbiBhIG9uZS1kaW1lbnNpb25hbCB2aWV3LCB0aGlzIGlzIGFuIG9iamVjdAogICAgd2l0aCB0aGUgdHlwZSBzcGVjaWZpZWQgYnkgdmlldy0+Zm9ybWF0LiBPdGhlcndpc2UsIHRoZSBpdGVtIGlzIGEgc3ViLXZpZXcuCiAgICBUaGUgZnVuY3Rpb24gaXMgdXNlZCBpbiBtZW1vcnlfc3Vic2NyaXB0KCkgYW5kIG1lbW9yeV9hc19zZXF1ZW5jZS4gKi8KQEAgLTIyMzIsNiArMjI2NSwzMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBSZXR1cm4gdGhlIGl0ZW0gYXQgcG9zaXRpb24gKmtleSogKGEgdHVwbGUgb2YgaW5kaWNlcykuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2l0ZW1fbXVsdGkoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdHVwKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIFB5X3NzaXplX3QgbmluZGljZXMgPSBQeVR1cGxlX0dFVF9TSVpFKHR1cCk7CisgICAgY2hhciAqcHRyOworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobmluZGljZXMgPCB2aWV3LT5uZGltKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1Yi12aWV3cyBhcmUgbm90IGltcGxlbWVudGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwdHIgPSBwdHJfZnJvbV90dXBsZSh2aWV3LCB0dXApOworICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOworfQorCiBQeV9MT0NBTF9JTkxJTkUoaW50KQogaW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCiB7CkBAIC0yMjgwLDYgKzIzMzksMjIgQEAKICAgICByZXR1cm4gMTsKIH0KIAorc3RhdGljIFB5X3NzaXplX3QKK2lzX211bHRpaW5kZXgoUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soa2V5KSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZSA9IFB5VHVwbGVfR0VUX1NJWkUoa2V5KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShrZXksIGkpOworICAgICAgICBpZiAoIVB5SW5kZXhfQ2hlY2soeCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIG12W29ial0gcmV0dXJucyBhbiBvYmplY3QgaG9sZGluZyB0aGUgZGF0YSBmb3Igb25lIGVsZW1lbnQgaWYgb2JqCiAgICBmdWxseSBpbmRleGVzIHRoZSBtZW1vcnl2aWV3IG9yIGFub3RoZXIgbWVtb3J5dmlldyBvYmplY3QgaWYgaXQKICAgIGRvZXMgbm90LgpAQCAtMjI5MSw3ICsyMzY2LDcgQEAKIHsKICAgICBQeV9idWZmZXIgKnZpZXc7CiAgICAgdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0gICAgCisKICAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKIAogICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKQEAgLTIzMzUsNiArMjQxMCw5IEBACiAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNsaWNlZDsKICAgICB9CisgICAgZWxzZSBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIHJldHVybiBtZW1vcnlfaXRlbV9tdWx0aShzZWxmLCBrZXkpOworICAgIH0KICAgICBlbHNlIGlmIChpc19tdWx0aXNsaWNlKGtleSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc2xpY2luZyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKQEAgLTIzNzksMTQgKzI0NTcsMTUgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAotICAgICAgICAgICAgIm1lbW9yeXZpZXcgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIG5kaW0gPSAxIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKICAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeU51bWJlcl9Bc1NzaXplX3Qoa2V5LCBQeUV4Y19JbmRleEVycm9yKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICAgICAgaWYgKDEgPCB2aWV3LT5uZGltKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ViLXZpZXdzIGFyZSBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOwpAQCAtMjQyMSw3ICsyNTAwLDE5IEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyYyk7CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSB8fCBpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICBpZiAoaXNfbXVsdGlpbmRleChrZXkpKSB7CisgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA8IHZpZXctPm5kaW0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHB0ciA9IHB0cl9mcm9tX3R1cGxlKHZpZXcsIGtleSk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgfQorICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgfHwgaXNfbXVsdGlzbGljZShrZXkpKSB7CiAgICAgICAgIC8qIENhbGwgbWVtb3J5X3N1YnNjcmlwdCgpIHRvIHByb2R1Y2UgYSBzbGljZWQgbHZhbHVlLCB0aGVuIGNvcHkKICAgICAgICAgICAgcnZhbHVlIGludG8gbHZhbHVlLiBUaGlzIGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgaW4gX3Rlc3RidWZmZXIuYy4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCkBAIC0yNTk0LDggKzI2ODUsOCBAQAogICAgIGludCBlcXVhbDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcCs9cHN0cmlkZXNbMF0sIHErPXFzdHJpZGVzWzBdLCBpKyspIHsKLSAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzKTsKLSAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHAgPSBBREpVU1RfUFRSKHAsIHBzdWJvZmZzZXRzLCAwKTsKKyAgICAgICAgY29uc3QgY2hhciAqeHEgPSBBREpVU1RfUFRSKHEsIHFzdWJvZmZzZXRzLCAwKTsKICAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHhwLCB4cSwgZm10LCB1bnBhY2tfcCwgdW5wYWNrX3EpOwogICAgICAgICBpZiAoZXF1YWwgPD0gMCkKICAgICAgICAgICAgIHJldHVybiBlcXVhbDsKQEAgLTI2MjksOCArMjcyMCw4IEBACiAgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgewotICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOwotICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMsIDApOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMsIDApOwogICAgICAgICBlcXVhbCA9IGNtcF9yZWMoeHAsIHhxLCBuZGltLTEsIHNoYXBlKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcysxLCBwc3Vib2Zmc2V0cyA/IHBzdWJvZmZzZXRzKzEgOiBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMrMSwgcXN1Ym9mZnNldHMgPyBxc3Vib2Zmc2V0cysxIDogTlVMTCwKQEAgLTI5NDgsNiArMzAzOSw3IEBACiBQeURvY19TVFJWQVIobWVtb3J5X2NvbnRpZ3VvdXNfZG9jLAogICAgICAgICAgICAgICJBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgY29udGlndW91cy4iKTsKIAorCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKICAgICB7Im9iaiIsICAgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X29ial9nZXQsICAgICAgICBOVUxMLCBtZW1vcnlfb2JqX2RvY30sCiAgICAgeyJuYnl0ZXMiLCAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9uYnl0ZXNfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X25ieXRlc19kb2N9LApAQCAtMjk2NSwyNSArMzA1NywzMCBAQAogfTsKIAogUHlEb2NfU1RSVkFSKG1lbW9yeV9yZWxlYXNlX2RvYywKLSJNLnJlbGVhc2UoKSAtPiBOb25lXG5cCisicmVsZWFzZSgkc2VsZiwgLylcbi0tXG5cCiBcblwKIFJlbGVhc2UgdGhlIHVuZGVybHlpbmcgYnVmZmVyIGV4cG9zZWQgYnkgdGhlIG1lbW9yeXZpZXcgb2JqZWN0LiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV90b2J5dGVzX2RvYywKLSJNLnRvYnl0ZXMoKSAtPiBieXRlc1xuXAorInRvYnl0ZXMoJHNlbGYsIC8pXG4tLVxuXAogXG5cCiBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGJ5dGUgc3RyaW5nLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9oZXhfZG9jLAorImhleCgkc2VsZiwgLylcbi0tXG5cCitcblwKK1JldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIG51bWJlcnMuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X3RvbGlzdF9kb2MsCi0iTS50b2xpc3QoKSAtPiBsaXN0XG5cCisidG9saXN0KCRzZWxmLCAvKVxuLS1cblwKIFxuXAogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9jYXN0X2RvYywKLSJNLmNhc3QoZm9ybWF0Wywgc2hhcGVdKSAtPiBtZW1vcnl2aWV3XG5cCisiY2FzdCgkc2VsZiwgLywgZm9ybWF0LCAqLCBzaGFwZSlcbi0tXG5cCiBcblwKIENhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7CiAgICAgeyJyZWxlYXNlIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfcmVsZWFzZSwgTUVUSF9OT0FSR1MsIG1lbW9yeV9yZWxlYXNlX2RvY30sCiAgICAgeyJ0b2J5dGVzIiwgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCisgICAgeyJoZXgiLCAgICAgICAgIChQeUNGdW5jdGlvbiltZW1vcnlfaGV4LCBNRVRIX05PQVJHUywgbWVtb3J5X2hleF9kb2N9LAogICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKICAgICB7ImNhc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9jYXN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgbWVtb3J5X2Nhc3RfZG9jfSwKICAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCmRpZmYgLS1naXQgYS9PYmplY3RzL21ldGhvZG9iamVjdC5jIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwppbmRleCA5YjZlNWU0Li4xODE3NzIyIDEwMDY0NAotLS0gYS9PYmplY3RzL21ldGhvZG9iamVjdC5jCisrKyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKQEAgLTM3LDYgKzM3LDcgQEAKICAgICAgICAgaWYgKG9wID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgb3AtPm1fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIG9wLT5tX21sID0gbWw7CiAgICAgUHlfWElOQ1JFRihzZWxmKTsKICAgICBvcC0+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+aW1wb3J0bGliLCAiX21vZHVsZV9yZXByIiwgIk8iLCBtKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorbW9kdWxlX2dldGF0dHJvKFB5TW9kdWxlT2JqZWN0ICptLCBQeU9iamVjdCAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqYXR0ciwgKm1vZF9uYW1lOworICAgIGF0dHIgPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0cigoUHlPYmplY3QgKiltLCBuYW1lKTsKKyAgICBpZiAoYXR0ciB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIHJldHVybiBhdHRyOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKG0tPm1kX2RpY3QpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgICAgICBtb2RfbmFtZSA9IF9QeURpY3RfR2V0SXRlbUlkKG0tPm1kX2RpY3QsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgaWYgKG1vZF9uYW1lKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlICclVScgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwgbW9kX25hbWUsIG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1vZHVsZSBoYXMgbm8gYXR0cmlidXRlICclVSciLCBuYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIGludAogbW9kdWxlX3RyYXZlcnNlKFB5TW9kdWxlT2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTQ2NCw3ICs3MzAsNiBAQAogICAgIHswfQogfTsKIAotCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJtb2R1bGUobmFtZVssIGRvY10pXG5cCiBcblwKQEAgLTQ4OCw3ICs3NTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChnZXRhdHRyb2Z1bmMpbW9kdWxlX2dldGF0dHJvLCAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggYTFhNjlmYS4uMTFiN2JmZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0zMyw2ICszMywyMiBAQAogICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CiAgICAgcmV0dXJuIHRvdGFsOwogfQorCit2b2lkCitfUHlEZWJ1Z19QcmludFRvdGFsUmVmcyh2b2lkKSB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd3JlZmNvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dyZWZjb3VudCk7CisgICAgaWYgKHZhbHVlID09IFB5X1RydWUpCisgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICJbJSIgUFlfRk9STUFUX1NJWkVfVCAiZCByZWZzLCAiCisgICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgYmxvY2tzXVxuIiwKKyAgICAgICAgICAgICAgICBfUHlfR2V0UmVmVG90YWwoKSwgX1B5X0dldEFsbG9jYXRlZEJsb2NrcygpKTsKK30KICNlbmRpZiAvKiBQeV9SRUZfREVCVUcgKi8KIAogLyogT2JqZWN0IGFsbG9jYXRpb24gcm91dGluZXMgdXNlZCBieSBORVdPQkogYW5kIE5FV1ZBUk9CSiBtYWNyb3MuCkBAIC0xNTQzLDYgKzE1NTksOSBAQAogdm9pZAogX1B5X1JlYWR5VHlwZXModm9pZCkKIHsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJhc2VPYmplY3RfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG9iamVjdCB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVR5cGVfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHR5cGUgdHlwZSIpOwogCkBAIC0xNTU1LDYgKzE1NzQsOSBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeVdlYWtyZWZfUHJveHlUeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgd2Vha3JlZiBwcm94eSB0eXBlIik7CiAKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUxvbmdfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGludCB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJvb2xfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGJvb2wgdHlwZSIpOwogCkBAIC0xNTc5LDE1ICsxNjAxLDI3IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTdXBlcl9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc3VwZXIgdHlwZSIpOwogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlCYXNlT2JqZWN0X1R5cGUpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvYmplY3QgdHlwZSIpOwotCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlSYW5nZV9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgcmFuZ2UgdHlwZSIpOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlEaWN0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBkaWN0IHR5cGUiKTsKIAorICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIE9yZGVyZWREaWN0IHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RLZXlzX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9rZXlzIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RJdGVtc19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2RpY3RfaXRlbXMgdHlwZSIpOworCisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlPRGljdFZhbHVlc19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgb2RpY3RfdmFsdWVzIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5T0RpY3RJdGVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBvZGljdF9rZXlpdGVyYXRvciB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNldF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgc2V0IHR5cGUiKTsKIApAQCAtMTYwNiw5ICsxNjQwLDYgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZsb2F0X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmbG9hdCB0eXBlIik7CiAKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUxvbmdfVHlwZSkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGludCB0eXBlIik7Ci0KICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUZyb3plblNldF9UeXBlKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgZnJvemVuc2V0IHR5cGUiKTsKIApAQCAtMTY5NSw2ICsxNzI2LDEyIEBACiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNlcUl0ZXJfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHNlcXVlbmNlIGl0ZXJhdG9yIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Q29yb19UeXBlKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgY29yb3V0aW5lIHR5cGUiKTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJl9QeUNvcm9XcmFwcGVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBjb3JvdXRpbmUgd3JhcHBlciB0eXBlIik7CiB9CiAKIApAQCAtMTgwOSw5ICsxODQ2LDYgQEAKIAogI2VuZGlmCiAKLS8qIEhhY2sgdG8gZm9yY2UgbG9hZGluZyBvZiBweWNhcHN1bGUubyAqLwotUHlUeXBlT2JqZWN0ICpfUHlDYXBzdWxlX2hhY2sgPSAmUHlDYXBzdWxlX1R5cGU7Ci0KIAogLyogSGFjayB0byBmb3JjZSBsb2FkaW5nIG9mIGFic3RyYWN0Lm8gKi8KIFB5X3NzaXplX3QgKCpfUHlfYWJzdHJhY3RfaGFjaykoUHlPYmplY3QgKikgPSBQeU9iamVjdF9TaXplOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDNjMzMyNTUuLjdjYzg4OWYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTUsNiArNSw3IEBACiAjaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogCkBAIC00Myw2ICs0NCw3IEBACiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KIHN0YXRpYyB2b2lkKiBfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpOworc3RhdGljIHZvaWQqIF9QeU9iamVjdF9DYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogc3RhdGljIHZvaWQgX1B5T2JqZWN0X0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkKiBfUHlPYmplY3RfUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwogI2VuZGlmCkBAIC01MSw3ICs1Myw3IEBACiBzdGF0aWMgdm9pZCAqCiBfUHlNZW1fUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgLyogUHlNZW1fTWFsbG9jKDApIG1lYW5zIG1hbGxvYygxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCisgICAgLyogUHlNZW1fUmF3TWFsbG9jKDApIG1lYW5zIG1hbGxvYygxKS4gU29tZSBzeXN0ZW1zIHdvdWxkIHJldHVybiBOVUxMCiAgICAgICAgZm9yIG1hbGxvYygwKSwgd2hpY2ggd291bGQgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4gU29tZSBwbGF0Zm9ybXMgd291bGQKICAgICAgICByZXR1cm4gYSBwb2ludGVyIHdpdGggbm8gbWVtb3J5IGJlaGluZCBpdCwgd2hpY2ggd291bGQgYnJlYWsgcHltYWxsb2MuCiAgICAgICAgVG8gc29sdmUgdGhlc2UgcHJvYmxlbXMsIGFsbG9jYXRlIGFuIGV4dHJhIGJ5dGUuICovCkBAIC02MSw2ICs2MywyMCBAQAogfQogCiBzdGF0aWMgdm9pZCAqCitfUHlNZW1fUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIC8qIFB5TWVtX1Jhd0NhbGxvYygwLCAwKSBtZWFucyBjYWxsb2MoMSwgMSkuIFNvbWUgc3lzdGVtcyB3b3VsZCByZXR1cm4gTlVMTAorICAgICAgIGZvciBjYWxsb2MoMCwgMCksIHdoaWNoIHdvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IuIFNvbWUgcGxhdGZvcm1zCisgICAgICAgd291bGQgcmV0dXJuIGEgcG9pbnRlciB3aXRoIG5vIG1lbW9yeSBiZWhpbmQgaXQsIHdoaWNoIHdvdWxkIGJyZWFrCisgICAgICAgcHltYWxsb2MuICBUbyBzb2x2ZSB0aGVzZSBwcm9ibGVtcywgYWxsb2NhdGUgYW4gZXh0cmEgYnl0ZS4gKi8KKyAgICBpZiAobmVsZW0gPT0gMCB8fCBlbHNpemUgPT0gMCkgeworICAgICAgICBuZWxlbSA9IDE7CisgICAgICAgIGVsc2l6ZSA9IDE7CisgICAgfQorICAgIHJldHVybiBjYWxsb2MobmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkICoKIF9QeU1lbV9SYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZSA9PSAwKQpAQCAtMTIzLDkgKzEzOSw5IEBACiAjZW5kaWYKIAogCi0jZGVmaW5lIFBZUkFXX0ZVTkNTIF9QeU1lbV9SYXdNYWxsb2MsIF9QeU1lbV9SYXdSZWFsbG9jLCBfUHlNZW1fUmF3RnJlZQorI2RlZmluZSBQWVJBV19GVU5DUyBfUHlNZW1fUmF3TWFsbG9jLCBfUHlNZW1fUmF3Q2FsbG9jLCBfUHlNZW1fUmF3UmVhbGxvYywgX1B5TWVtX1Jhd0ZyZWUKICNpZmRlZiBXSVRIX1BZTUFMTE9DCi0jICBkZWZpbmUgUFlPQkpfRlVOQ1MgX1B5T2JqZWN0X01hbGxvYywgX1B5T2JqZWN0X1JlYWxsb2MsIF9QeU9iamVjdF9GcmVlCisjICBkZWZpbmUgUFlPQkpfRlVOQ1MgX1B5T2JqZWN0X01hbGxvYywgX1B5T2JqZWN0X0NhbGxvYywgX1B5T2JqZWN0X1JlYWxsb2MsIF9QeU9iamVjdF9GcmVlCiAjZWxzZQogIyAgZGVmaW5lIFBZT0JKX0ZVTkNTIFBZUkFXX0ZVTkNTCiAjZW5kaWYKQEAgLTEzNSw3ICsxNTEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIFdlIHRhZyBlYWNoIGJsb2NrIHdpdGggYW4gQVBJIElEIGluIG9yZGVyIHRvIHRhZyBBUEkgdmlvbGF0aW9ucyAqLwogICAgIGNoYXIgYXBpX2lkOwotICAgIFB5TWVtQWxsb2NhdG9yIGFsbG9jOworICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiB9IGRlYnVnX2FsbG9jX2FwaV90Owogc3RhdGljIHN0cnVjdCB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgcmF3OwpAQCAtMTQ3LDEwICsxNjMsMTAgQEAKICAgICB7J28nLCB7TlVMTCwgUFlPQkpfRlVOQ1N9fQogICAgIH07CiAKLSNkZWZpbmUgUFlEQkdfRlVOQ1MgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCisjZGVmaW5lIFBZREJHX0ZVTkNTIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCiAjZW5kaWYKIAotc3RhdGljIFB5TWVtQWxsb2NhdG9yIF9QeU1lbV9SYXcgPSB7CitzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW1fUmF3ID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTU4LDcgKzE3NCw3IEBACiAjZW5kaWYKICAgICB9OwogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5TWVtID0geworc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTY2LDcgKzE4Miw3IEBACiAjZW5kaWYKICAgICB9OwogCi1zdGF0aWMgUHlNZW1BbGxvY2F0b3IgX1B5T2JqZWN0ID0geworc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5T2JqZWN0ID0gewogI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5vYmosIFBZREJHX0ZVTkNTCiAjZWxzZQpAQCAtMTkzLDkgKzIwOSwxMCBAQAogUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpCiB7CiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBQeU1lbUFsbG9jYXRvciBhbGxvYzsKKyAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCiAgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z0NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnRnJlZTsKIApAQCAtMjIwLDcgKzIzNyw3IEBACiB9CiAKIHZvaWQKLVB5TWVtX0dldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCitQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiB7CiAgICAgc3dpdGNoKGRvbWFpbikKICAgICB7CkBAIC0yMjgsMTYgKzI0NSwxNyBAQAogICAgIGNhc2UgUFlNRU1fRE9NQUlOX01FTTogKmFsbG9jYXRvciA9IF9QeU1lbTsgYnJlYWs7CiAgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiAqYWxsb2NhdG9yID0gX1B5T2JqZWN0OyBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duIGRvbWFpbiAqLworICAgICAgICAvKiB1bmtub3duIGRvbWFpbjogc2V0IGFsbCBhdHRyaWJ1dGVzIHRvIE5VTEwgKi8KICAgICAgICAgYWxsb2NhdG9yLT5jdHggPSBOVUxMOwogICAgICAgICBhbGxvY2F0b3ItPm1hbGxvYyA9IE5VTEw7CisgICAgICAgIGFsbG9jYXRvci0+Y2FsbG9jID0gTlVMTDsKICAgICAgICAgYWxsb2NhdG9yLT5yZWFsbG9jID0gTlVMTDsKICAgICAgICAgYWxsb2NhdG9yLT5mcmVlID0gTlVMTDsKICAgICB9CiB9CiAKIHZvaWQKLVB5TWVtX1NldEFsbG9jYXRvcihQeU1lbUFsbG9jYXRvckRvbWFpbiBkb21haW4sIFB5TWVtQWxsb2NhdG9yICphbGxvY2F0b3IpCitQeU1lbV9TZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiB7CiAgICAgc3dpdGNoKGRvbWFpbikKICAgICB7CkBAIC0yNzIsMTAgKzI5MCwxOCBAQAogICAgICAqLwogICAgIGlmIChzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gX1B5TWVtX1Jhdy5tYWxsb2MoX1B5TWVtX1Jhdy5jdHgsIHNpemUpOwogfQogCit2b2lkICoKK1B5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKGVsc2l6ZSAhPSAwICYmIG5lbGVtID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU1lbV9SYXcuY2FsbG9jKF9QeU1lbV9SYXcuY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwogdm9pZCoKIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC0zMDAsNiArMzI2LDE1IEBACiB9CiAKIHZvaWQgKgorUHlNZW1fQ2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KKyAgICBpZiAoZWxzaXplICE9IDAgJiYgbmVsZW0gPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5TWVtLmNhbGxvYyhfUHlNZW0uY3R4LCBuZWxlbSwgZWxzaXplKTsKK30KKwordm9pZCAqCiBQeU1lbV9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewogICAgIC8qIHNlZSBQeU1lbV9SYXdNYWxsb2MoKSAqLwpAQCAtMzUyLDYgKzM4NywxNSBAQAogfQogCiB2b2lkICoKK1B5T2JqZWN0X0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgLyogc2VlIFB5TWVtX1Jhd01hbGxvYygpICovCisgICAgaWYgKGVsc2l6ZSAhPSAwICYmIG5lbGVtID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeU9iamVjdC5jYWxsb2MoX1B5T2JqZWN0LmN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3ZvaWQgKgogUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKICAgICAvKiBzZWUgUHlNZW1fUmF3TWFsbG9jKCkgKi8KQEAgLTExMjIsOCArMTE2Niw5IEBACiAgKi8KIAogc3RhdGljIHZvaWQgKgotX1B5T2JqZWN0X01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlPYmplY3RfQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogeworICAgIHNpemVfdCBuYnl0ZXM7CiAgICAgYmxvY2sgKmJwOwogICAgIHBvb2xwIHBvb2w7CiAgICAgcG9vbHAgbmV4dDsKQEAgLTExMzEsNiArMTE3Niw5IEBACiAKICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzKys7CiAKKyAgICBhc3NlcnQobmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOworICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOworCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIGlmIChVTkxJS0VMWShydW5uaW5nX29uX3ZhbGdyaW5kID09IC0xKSkKICAgICAgICAgcnVubmluZ19vbl92YWxncmluZCA9IFJVTk5JTkdfT05fVkFMR1JJTkQ7CkBAIC0xMTM4LDkgKzExODYsOSBAQAogICAgICAgICBnb3RvIHJlZGlyZWN0OwogI2VuZGlmCiAKLSAgICAvKgotICAgICAqIFRoaXMgaW1wbGljaXRseSByZWRpcmVjdHMgbWFsbG9jKDApLgotICAgICAqLworICAgIGlmIChuZWxlbSA9PSAwIHx8IGVsc2l6ZSA9PSAwKQorICAgICAgICBnb3RvIHJlZGlyZWN0OworCiAgICAgaWYgKChuYnl0ZXMgLSAxKSA8IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEKSB7CiAgICAgICAgIExPQ0soKTsKICAgICAgICAgLyoKQEAgLTExNTgsNiArMTIwNiw4IEBACiAgICAgICAgICAgICBhc3NlcnQoYnAgIT0gTlVMTCk7CiAgICAgICAgICAgICBpZiAoKHBvb2wtPmZyZWVibG9jayA9ICooYmxvY2sgKiopYnApICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBVTkxPQ0soKTsKKyAgICAgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGJwLCAwLCBuYnl0ZXMpOwogICAgICAgICAgICAgICAgIHJldHVybiAodm9pZCAqKWJwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyoKQEAgLTExNzAsNiArMTIyMCw4IEBACiAgICAgICAgICAgICAgICAgcG9vbC0+bmV4dG9mZnNldCArPSBJTkRFWDJTSVpFKHNpemUpOwogICAgICAgICAgICAgICAgICooYmxvY2sgKiopKHBvb2wtPmZyZWVibG9jaykgPSBOVUxMOwogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBQb29sIGlzIGZ1bGwsIHVubGluayBmcm9tIHVzZWQgcG9vbHMuICovCkBAIC0xMTc4LDYgKzEyMzAsOCBAQAogICAgICAgICAgICAgbmV4dC0+cHJldnBvb2wgPSBwb29sOwogICAgICAgICAgICAgcG9vbC0+bmV4dHBvb2wgPSBuZXh0OwogICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgfQogCkBAIC0xMjU3LDYgKzEzMTEsOCBAQAogICAgICAgICAgICAgICAgIGFzc2VydChicCAhPSBOVUxMKTsKICAgICAgICAgICAgICAgICBwb29sLT5mcmVlYmxvY2sgPSAqKGJsb2NrICoqKWJwOwogICAgICAgICAgICAgICAgIFVOTE9DSygpOworICAgICAgICAgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuICh2b2lkICopYnA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKgpAQCAtMTI3Miw2ICsxMzI4LDggQEAKICAgICAgICAgICAgIHBvb2wtPmZyZWVibG9jayA9IGJwICsgc2l6ZTsKICAgICAgICAgICAgICooYmxvY2sgKiopKHBvb2wtPmZyZWVibG9jaykgPSBOVUxMOwogICAgICAgICAgICAgVU5MT0NLKCk7CisgICAgICAgICAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgICAgICAgICBtZW1zZXQoYnAsIDAsIG5ieXRlcyk7CiAgICAgICAgICAgICByZXR1cm4gKHZvaWQgKilicDsKICAgICAgICAgfQogCkBAIC0xMjgxLDcgKzEzMzksNyBAQAogICAgICAgICBwb29sID0gKHBvb2xwKXVzYWJsZV9hcmVuYXMtPnBvb2xfYWRkcmVzczsKICAgICAgICAgYXNzZXJ0KChibG9jayopcG9vbCA8PSAoYmxvY2sqKXVzYWJsZV9hcmVuYXMtPmFkZHJlc3MgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSRU5BX1NJWkUgLSBQT09MX1NJWkUpOwotICAgICAgICBwb29sLT5hcmVuYWluZGV4ID0gdXNhYmxlX2FyZW5hcyAtIGFyZW5hczsKKyAgICAgICAgcG9vbC0+YXJlbmFpbmRleCA9ICh1aW50KSh1c2FibGVfYXJlbmFzIC0gYXJlbmFzKTsKICAgICAgICAgYXNzZXJ0KCZhcmVuYXNbcG9vbC0+YXJlbmFpbmRleF0gPT0gdXNhYmxlX2FyZW5hcyk7CiAgICAgICAgIHBvb2wtPnN6aWR4ID0gRFVNTVlfU0laRV9JRFg7CiAgICAgICAgIHVzYWJsZV9hcmVuYXMtPnBvb2xfYWRkcmVzcyArPSBQT09MX1NJWkU7CkBAIC0xMzExLDEzICsxMzY5LDI5IEBACiAgICAgICogaGFzIGJlZW4gcmVhY2hlZC4KICAgICAgKi8KICAgICB7Ci0gICAgICAgIHZvaWQgKnJlc3VsdCA9IFB5TWVtX1Jhd01hbGxvYyhuYnl0ZXMpOworICAgICAgICB2b2lkICpyZXN1bHQ7CisgICAgICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICAgICAgcmVzdWx0ID0gUHlNZW1fUmF3Q2FsbG9jKG5lbGVtLCBlbHNpemUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBQeU1lbV9SYXdNYWxsb2MobmJ5dGVzKTsKICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBfUHlfQWxsb2NhdGVkQmxvY2tzLS07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfQogCitzdGF0aWMgdm9pZCAqCitfUHlPYmplY3RfTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDAsIGN0eCwgMSwgbmJ5dGVzKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5T2JqZWN0X0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK3sKKyAgICByZXR1cm4gX1B5T2JqZWN0X0FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKIC8qIGZyZWUgKi8KIAogQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCkBAIC0xNTYxLDcgKzE2MzUsNyBAQAogI2VuZGlmCiAKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gX1B5T2JqZWN0X01hbGxvYyhjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwogCiAjaWZkZWYgV0lUSF9WQUxHUklORAogICAgIC8qIFRyZWF0IHJ1bm5pbmdfb25fdmFsZ3JpbmQgPT0gLTEgdGhlIHNhbWUgYXMgMCAqLwpAQCAtMTU4OSw3ICsxNjYzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNpemUgPSBuYnl0ZXM7CiAgICAgICAgIH0KLSAgICAgICAgYnAgPSBfUHlPYmplY3RfTWFsbG9jKGN0eCwgbmJ5dGVzKTsKKyAgICAgICAgYnAgPSBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwogICAgICAgICBpZiAoYnAgIT0gTlVMTCkgewogICAgICAgICAgICAgbWVtY3B5KGJwLCBwLCBzaXplKTsKICAgICAgICAgICAgIF9QeU9iamVjdF9GcmVlKGN0eCwgcCk7CkBAIC0xNzQ1LDcgKzE4MTksNyBAQAogKi8KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKICAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KQEAgLTE3NTgsNyArMTgzMiwxMCBAQAogICAgICAgICAvKiBvdmVyZmxvdzogIGNhbid0IHJlcHJlc2VudCB0b3RhbCBhcyBhIFB5X3NzaXplX3QgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKKyAgICBpZiAodXNlX2NhbGxvYykKKyAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CisgICAgZWxzZQorICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc2Nyw3ICsxODQ0LDcgQEAKICAgICBwW1NTVF0gPSAodWNoYXIpYXBpLT5hcGlfaWQ7CiAgICAgbWVtc2V0KHAgKyBTU1QgKyAxLCBGT1JCSURERU5CWVRFLCBTU1QtMSk7CiAKLSAgICBpZiAobmJ5dGVzID4gMCkKKyAgICBpZiAobmJ5dGVzID4gMCAmJiAhdXNlX2NhbGxvYykKICAgICAgICAgbWVtc2V0KHAgKyAyKlNTVCwgQ0xFQU5CWVRFLCBuYnl0ZXMpOwogCiAgICAgLyogYXQgdGFpbCwgd3JpdGUgcGFkIChTU1QgYnl0ZXMpIGFuZCBzZXJpYWxubyAoU1NUIGJ5dGVzKSAqLwpAQCAtMTc3OCw2ICsxODU1LDIxIEBACiAgICAgcmV0dXJuIHAgKyAyKlNTVDsKIH0KIAorc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgc2l6ZV90IG5ieXRlczsKKyAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU1NJWkVfVF9NQVggLyBlbHNpemUpOworICAgIG5ieXRlcyA9IG5lbGVtICogZWxzaXplOworICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygxLCBjdHgsIG5ieXRlcyk7Cit9CisKIC8qIFRoZSBkZWJ1ZyBmcmVlIGZpcnN0IGNoZWNrcyB0aGUgMipTU1QgYnl0ZXMgb24gZWFjaCBlbmQgZm9yIHNhbml0eSAoaW4KICAgIHBhcnRpY3VsYXIsIHRoYXQgdGhlIEZPUkJJRERFTkJZVEVzIHdpdGggdGhlIGFwaSBJRCBhcmUgc3RpbGwgaW50YWN0KS4KICAgIFRoZW4gZmlsbHMgdGhlIG9yaWdpbmFsIGJ5dGVzIHdpdGggREVBREJZVEUuCkBAIC0xODExLDcgKzE5MDMsNyBAQAogICAgIGludCBpOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z01hbGxvYyhjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiAKICAgICBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoYXBpLT5hcGlfaWQsIHApOwogICAgIGJ1bXBzZXJpYWxubygpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vZGljdG9iamVjdC5jIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZjQxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKQEAgLTAsMCArMSwyNDkzIEBACisvKiBPcmRlcmVkIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uLgorCitUaGlzIGltcGxlbWVudGF0aW9uIGlzIG5lY2Vzc2FyaWx5IGV4cGxpY2l0bHkgZXF1aXZhbGVudCB0byB0aGUgcHVyZSBQeXRob24KK09yZGVyZWREaWN0IGNsYXNzIGluIExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weS4gIFRoZSBzdHJhdGVneSB0aGVyZQoraW52b2x2ZXMgdXNpbmcgYSBkb3VibHktbGlua2VkLWxpc3QgdG8gY2FwdHVyZSB0aGUgb3JkZXIuICBXZSBrZWVwIHRvIHRoYXQKK3N0cmF0ZWd5LCB1c2luZyBhIGxvd2VyLWxldmVsIGxpbmtlZC1saXN0LgorCitBYm91dCB0aGUgTGlua2VkLUxpc3QKKz09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdGhlIGxpbmtlZCBsaXN0IHdlIHVzZSBhIGJhc2ljIGRvdWJseS1saW5rZWQtbGlzdC4gIFVzaW5nIGEgY2lyY3VsYXJseS0KK2xpbmtlZC1saXN0IGRvZXMgaGF2ZSBzb21lIGJlbmVmaXRzLCBidXQgdGhleSBkb24ndCBhcHBseSBzbyBtdWNoIGhlcmUKK3NpbmNlIE9yZGVyZWREaWN0IGlzIGZvY3VzZWQgb24gdGhlIGVuZHMgb2YgdGhlIGxpc3QgKGZvciB0aGUgbW9zdCBwYXJ0KS4KK0Z1cnRoZXJtb3JlLCB0aGVyZSBhcmUgc29tZSBmZWF0dXJlcyBvZiBnZW5lcmljIGxpbmtlZC1saXN0cyB0aGF0IHdlIHNpbXBseQorZG9uJ3QgbmVlZCBmb3IgT3JkZXJlZERpY3QuICBUaHVzIGEgc2ltcGxlIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBtZWV0cyBvdXIKK25lZWRzLiAgQWx0ZXJuYXRpdmVzIHRvIG91ciBzaW1wbGUgYXBwcm9hY2ggaW5jbHVkZSB0aGUgUUNJUkNMRV8qCittYWNyb3MgZnJvbSBCU0QncyBxdWV1ZS5oLCBhbmQgdGhlIGxpbnV4J3MgbGlzdC5oLgorCitHZXR0aW5nIE8oMSkgTm9kZSBMb29rdXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgaW52YXJpYW50IG9mIFB5dGhvbidzIE9yZGVyZWREaWN0IGlzIHRoYXQgaXQgcHJlc2VydmVzIHRpbWUgY29tcGxleGl0eQorb2YgZGljdCdzIG1ldGhvZHMsIHBhcnRpY3VsYXJseSB0aGUgTygxKSBvcGVyYXRpb25zLiAgU2ltcGx5IGFkZGluZyBhCitsaW5rZWQtbGlzdCBvbiB0b3Agb2YgZGljdCBpcyBub3Qgc3VmZmljaWVudCBoZXJlOyBvcGVyYXRpb25zIGZvciBub2RlcyBpbgordGhlIG1pZGRsZSBvZiB0aGUgbGlua2VkLWxpc3QgaW1wbGljaXRseSByZXF1aXJlIGZpbmRpbmcgdGhlIG5vZGUgZmlyc3QuCitXaXRoIGEgc2ltcGxlIGxpbmtlZC1saXN0IGxpa2Ugd2UncmUgdXNpbmcsIHRoYXQgaXMgYW4gTyhuKSBvcGVyYXRpb24uCitDb25zZXF1ZW50bHksIG1ldGhvZHMgbGlrZSBfX2RlbGl0ZW1fXygpIHdvdWxkIGNoYW5nZSBmcm9tIE8oMSkgdG8gTyhuKSwKK3doaWNoIGlzIHVuYWNjZXB0YWJsZS4KKworSW4gb3JkZXIgdG8gcHJlc2VydmUgTygxKSBwZXJmb3JtYW5jZSBmb3Igbm9kZSByZW1vdmFsIChmaW5kaW5nIG5vZGVzKSwgd2UKK211c3QgZG8gYmV0dGVyIHRoYW4ganVzdCBsb29waW5nIHRocm91Z2ggdGhlIGxpbmtlZC1saXN0LiAgSGVyZSBhcmUgb3B0aW9ucword2UndmUgY29uc2lkZXJlZDoKKworMS4gdXNlIGEgc2Vjb25kIGRpY3QgdG8gbWFwIGtleXMgdG8gbm9kZXMgKGEgbGEgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24pLgorMi4ga2VlcCBhIHNpbXBsZSBoYXNoIHRhYmxlIG1pcnJvcmluZyB0aGUgb3JkZXIgb2YgZGljdCdzLCBtYXBwaW5nIGVhY2gga2V5CisgICB0byB0aGUgY29ycmVzcG9uZGluZyBub2RlIGluIHRoZSBsaW5rZWQtbGlzdC4KKzMuIHVzZSBhIHZlcnNpb24gb2Ygc2hhcmVkIGtleXMgKHNwbGl0IGRpY3QpIHRoYXQgYWxsb3dzIG5vbi11bmljb2RlIGtleXMuCis0LiBoYXZlIHRoZSB2YWx1ZSBzdG9yZWQgZm9yIGVhY2gga2V5IGJlIGEgKHZhbHVlLCBub2RlKSBwYWlyLCBhbmQgYWRqdXN0CisgICBfX2dldGl0ZW1fXygpLCBnZXQoKSwgZXRjLiBhY2NvcmRpbmdseS4KKworVGhlIGFwcHJvYWNoIHdpdGggdGhlIGxlYXN0IHBlcmZvcm1hbmNlIGltcGFjdCAodGltZSBhbmQgc3BhY2UpIGlzICMyLAorbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudGllcyB3aXRoIGFuIGFycmF5IG9mIG5vZGUgcG9pbnRlcnMuCitXaGlsZSBsb29rZGljdCgpIGFuZCBmcmllbmRzIChka19sb29rdXApIGRvbid0IGdpdmUgdXMgdGhlIGluZGV4IGludG8gdGhlCithcnJheSwgd2UgbWFrZSB1c2Ugb2YgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGF0IGluZGV4LiAgQW4gYWx0ZXJuYXRpdmUKK3dvdWxkIGJlIHRvIHJlZmFjdG9yIGxvb2tkaWN0KCkgdG8gcHJvdmlkZSB0aGUgaW5kZXgsIGV4cGxpY2l0bHkgZXhwb3NpbmcKK3RoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBXZSBjb3VsZCBldmVuIGp1c3QgdXNlIGEgY3VzdG9tIGxvb2t1cCBmdW5jdGlvbgorZm9yIE9yZGVyZWREaWN0IHRoYXQgZmFjaWxpdGF0ZXMgb3VyIG5lZWQuICBIb3dldmVyLCBib3RoIGFwcHJvYWNoZXMgYXJlCitzaWduaWZpY2FudGx5IG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBqdXN0IHVzaW5nIHBvaW50ZXIgYXJpdGhtZXRpYy4KKworVGhlIGNhdGNoIHdpdGggbWlycm9yaW5nIHRoZSBoYXNoIHRhYmxlIG9yZGVyaW5nIGlzIHRoYXQgd2UgaGF2ZSB0byBrZWVwCit0aGUgb3JkZXJpbmcgaW4gc3luYyB0aHJvdWdoIGFueSBkaWN0IHJlc2l6ZXMuICBIb3dldmVyLCB0aGF0IG9yZGVyIG9ubHkKK21hdHRlcnMgZHVyaW5nIG5vZGUgbG9va3VwLiAgV2UgY2FuIHNpbXBseSBkZWZlciBhbnkgcG90ZW50aWFsIHJlc2l6aW5nCit1bnRpbCB3ZSBuZWVkIHRvIGRvIGEgbG9va3VwLgorCitMaW5rZWQtTGlzdCBOb2RlcworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3RvcmVzIGEgcG9pbnRlciB0byB0aGUgYXNzb2NpYXRlZCBrZXkgb25seS4KK09uZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlIFB5RGljdEtleUVudHJ5IGluc3RlYWQuCitUaGlzIHdvdWxkIHNhdmUgb25lIHBvaW50ZXIgZGUtcmVmZXJlbmNlIHBlciBpdGVtLCB3aGljaCBpcyBuaWNlIGR1cmluZworY2FsbHMgdG8gdmFsdWVzKCkgYW5kIGl0ZW1zKCkuICBIb3dldmVyLCBpdCBhZGRzIHVubmVjZXNzYXJ5IG92ZXJoZWFkCitvdGhlcndpc2UsIHNvIHdlIHN0aWNrIHdpdGgganVzdCB0aGUga2V5LgorCitMaW5rZWQtTGlzdCBBUEkKKy0tLS0tLS0tLS0tLS0tLQorCitBcyBub3RlZCwgdGhlIGxpbmtlZC1saXN0IGltcGxlbWVudGVkIGhlcmUgZG9lcyBub3QgaGF2ZSBhbGwgdGhlIGJlbGxzIGFuZAord2hpc3RsZXMuICBIb3dldmVyLCB3ZSByZWNvZ25pemUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gbWF5IG5lZWQgdG8KK2NoYW5nZSB0byBhY2NvbW1vZGF0ZSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMgb3IgZXh0cmEgZnVuY3Rpb25hbGl0eS4gIFRvCit0aGF0IGVuZCwgV2UgdXNlIGEgc2ltcGxlIEFQSSB0byBpbnRlcmFjdCB3aXRoIHRoZSBsaW5rZWQtbGlzdC4gIEhlcmUncyBhCitzdW1tYXJ5IG9mIHRoZSBtZXRob2RzL21hY3JvczoKKworTm9kZSBpbmZvOgorCisqIF9vZGljdG5vZGVfS0VZKG5vZGUpCisqIF9vZGljdG5vZGVfVkFMVUUob2QsIG5vZGUpCisqIF9vZGljdG5vZGVfUFJFVihub2RlKQorKiBfb2RpY3Rub2RlX05FWFQobm9kZSkKKworTGlua2VkLUxpc3QgaW5mbzoKKworKiBfb2RpY3RfRklSU1Qob2QpCisqIF9vZGljdF9MQVNUKG9kKQorKiBfb2RpY3RfRU1QVFkob2QpCisqIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSAtIHVzZWQgaW4gcGxhY2Ugb2YgYGZvciAobm9kZT0uLi4pYAorCitGb3IgYWRkaW5nIG5vZGVzOgorCisqIF9vZGljdF9hZGRfaGVhZChvZCwgbm9kZSkKKyogX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKQorKiBfb2RpY3RfYWRkX25ld19ub2RlKG9kLCBrZXkpCisKK0ZvciByZW1vdmluZyBub2RlczoKKworKiBfb2RpY3RfcG9wX25vZGUob2QsIG5vZGUsIGtleSkKKyogX29kaWN0X2NsZWFyX25vZGUob2QsIG5vZGUpCisqIF9vZGljdF9jbGVhcl9ub2RlcyhvZCwgY2xlYXJfZWFjaCkKKworT3RoZXJzOgorCisqIF9vZGljdF9maW5kX25vZGUob2QsIGtleSkKKyogX29kaWN0X2tleXNfZXF1YWwob2QxLCBvZDIpCisKK1VzZWQsIGJ1dCBzcGVjaWZpYyB0byB0aGUgbGlua2VkLWxpc3QgaW1wbGVtZW50YXRpb246CisKKyogX29kaWN0X2ZyZWVfZmFzdF9ub2RlcyhvZCkKKworQW5kIGhlcmUncyBhIGxvb2sgYXQgaG93IHRoZSBsaW5rZWQtbGlzdCByZWxhdGVzIHRvIHRoZSBPcmRlcmVkRGljdCBBUEk6CisKKz09PT09PT09PT09PSA9PT0gPT09ID09PT0gPT09PSA9PT09ID09PSA9PT09ID09PT09ID09PT0gPT09PSA9PT0gPT09PSA9PT0gPT09CittZXRob2QgICAgICAga2V5IHZhbCBwcmV2IG5leHQgbWVtICAxc3QgbGFzdCBlbXB0eSBpdGVyIGZpbmQgYWRkIHJtdiAgY2xyIGtlcQorPT09PT09PT09PT09ID09PSA9PT0gPT09PSA9PT09ID09PT0gPT09ID09PT0gPT09PT0gPT09PSA9PT09ID09PSA9PT09ID09PSA9PT0KK19fZGVsX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4gICAgICAgICAgICAgICAgICAgICAgICBYCitfX2RlbGl0ZW1fXyAgICAgICAgICAgICAgICAgICAgZnJlZSAgICAgICAgICAgICAgICAgICAgIH4gICAgICAgIG5vZGUKK19fZXFfXyAgICAgICB+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorX19pdGVyX18gICAgIFggICAgICAgICAgICBYCitfX25ld19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYICAgWAorX19yZWR1Y2VfXyAgIFggICB+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorX19yZXByX18gICAgIFggICBYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWAorX19yZXZlcnNlZF9fIFggICAgICAgWAorX19zZXRpdGVtX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleQorX19zaXplb2ZfXyAgICAgICAgICAgICAgICAgICAgIHNpemUgICAgICAgICAgWAorY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgIH4gICAgICAgICAgICAgfiAgICAgICAgICAgICAgICAgICAgICAgIFgKK2NvcHkgICAgICAgICBYICAgWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgKK2l0ZW1zICAgICAgICBYICAgWCAgICAgICAgWAora2V5cyAgICAgICAgIFggICAgICAgICAgICBYCittb3ZlX3RvX2VuZCAgWCAgICAgICAgICAgICAgICAgICAgICBYICAgWCAgICAgICAgICAgICAgIH4gICAgaC90IGtleQorcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkKK3BvcGl0ZW0gICAgICBYICAgWCAgICAgICAgICAgICBmcmVlIFggICBYICAgICAgICAgICAgICAgICAgICAgICAgbm9kZQorc2V0ZGVmYXVsdCAgICAgICB+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICAgIH4KK3ZhbHVlcyAgICAgICAgICAgWCAgICAgICAgWAorPT09PT09PT09PT09ID09PSA9PT0gPT09PSA9PT09ID09PT0gPT09ID09PT0gPT09PT0gPT09PSA9PT09ID09PSA9PT09ID09PSA9PT0KKworX19kZWxpdGVtX18gaXMgdGhlIG9ubHkgbWV0aG9kIHRoYXQgZGlyZWN0bHkgcmVsaWVzIG9uIGZpbmRpbmcgYW4gYXJiaXRyYXJ5Citub2RlIGluIHRoZSBsaW5rZWQtbGlzdC4gIEV2ZXJ5dGhpbmcgZWxzZSBpcyBpdGVyYXRpb24gb3IgcmVsYXRlcyB0byB0aGUKK2VuZHMgb2YgdGhlIGxpbmtlZC1saXN0LgorCitTaXR1YXRpb24gdGhhdCBFbmRhbmdlcnMgQ29uc2lzdGVuY3kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVXNpbmcgYSByYXcgbGlua2VkLWxpc3QgZm9yIE9yZGVyZWREaWN0IGV4cG9zZXMgYSBrZXkgc2l0dWF0aW9uIHRoYXQgY2FuCitjYXVzZSBwcm9ibGVtcy4gIElmIGEgbm9kZSBpcyBzdG9yZWQgaW4gYSB2YXJpYWJsZSwgdGhlcmUgaXMgYSBjaGFuY2UgdGhhdAordGhlIG5vZGUgbWF5IGhhdmUgYmVlbiBkZWFsbG9jYXRlZCBiZWZvcmUgdGhlIHZhcmlhYmxlIGdldHMgdXNlZCwgdGh1cworcG90ZW50aWFsbHkgbGVhZGluZyB0byBhIHNlZ21lbnRhdGlvbiBmYXVsdC4gIEEga2V5IHBsYWNlIHdoZXJlIHRoaXMgc2hvd3MKK3VwIGlzIGR1cmluZyBpdGVyYXRpb24gdGhyb3VnaCB0aGUgbGlua2VkIGxpc3QgKHZpYSBfb2RpY3RfRk9SRUFDSCBvcgorb3RoZXJ3aXNlKS4KKworQSBudW1iZXIgb2Ygc29sdXRpb25zIGFyZSBhdmFpbGFibGUgdG8gcmVzb2x2ZSB0aGlzIHNpdHVhdGlvbjoKKworKiBkZWZlciBsb29raW5nIHVwIHRoZSBub2RlIHVudGlsIGFzIGxhdGUgYXMgcG9zc2libGUgYW5kIGNlcnRhaW5seSBhZnRlcgorICBhbnkgY29kZSB0aGF0IGNvdWxkIHBvc3NpYmx5IHJlc3VsdCBpbiBhIGRlbGV0aW9uOworKiBpZiB0aGUgbm9kZSBpcyBuZWVkZWQgYm90aCBiZWZvcmUgYW5kIGFmdGVyIGEgcG9pbnQgd2hlcmUgdGhlIG5vZGUgbWlnaHQKKyAgYmUgcmVtb3ZlZCwgZG8gYSBjaGVjayBiZWZvcmUgdXNpbmcgdGhlIG5vZGUgYXQgdGhlICJhZnRlciIgbG9jYXRpb24gdG8KKyAgc2VlIGlmIHRoZSBub2RlIGlzIHN0aWxsIHZhbGlkOworKiBsaWtlIHRoZSBsYXN0IG9uZSwgYnV0IHNpbXBseSBwdWxsIHRoZSBub2RlIGFnYWluIHRvIGVuc3VyZSBpdCdzIHJpZ2h0OworKiBrZWVwIHRoZSBrZXkgaW4gdGhlIHZhcmlhYmxlIGluc3RlYWQgb2YgdGhlIG5vZGUgYW5kIHRoZW4gbG9vayB1cCB0aGUKKyAgbm9kZSB1c2luZyB0aGUga2V5IGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgbm9kZSBpcyBuZWVkZWQgKHRoaXMgaXMgd2hhdAorICB3ZSBkbyBmb3IgdGhlIGl0ZXJhdG9ycykuCisKK0Fub3RoZXIgcmVsYXRlZCBwcm9ibGVtLCBwcmVzZXJ2aW5nIGNvbnNpc3RlbnQgb3JkZXJpbmcgZHVyaW5nIGl0ZXJhdGlvbiwKK2lzIGRlc2NyaWJlZCBiZWxvdy4gIFRoYXQgb25lIGlzIG5vdCBleGNsdXNpdmUgdG8gdXNpbmcgbGlua2VkLWxpc3RzLgorCisKK0NoYWxsZW5nZXMgZnJvbSBTdWJjbGFzc2luZyBkaWN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPcmRlcmVkRGljdCBzdWJjbGFzc2VzIGRpY3QsIHdoaWNoIGlzIGFuIHVudXN1YWwgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvCitidWlsdGluIHR5cGVzIChvdGhlciB0aGFuIHRoZSBiYXNlIG9iamVjdCB0eXBlKS4gIERvaW5nIHNvIHJlc3VsdHMgaW4KK3NvbWUgY29tcGxpY2F0aW9uIGFuZCBkZXNlcnZlcyBmdXJ0aGVyIGV4cGxhbmF0aW9uLiAgVGhlcmUgYXJlIHR3byB0aGluZ3MKK3RvIGNvbnNpZGVyIGhlcmUuICBGaXJzdCwgaW4gd2hhdCBjaXJjdW1zdGFuY2VzIG9yIHdpdGggd2hhdCBhZGp1c3RtZW50cworY2FuIE9yZGVyZWREaWN0IGJlIHVzZWQgYXMgYSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBkaWN0IChhdCB0aGUgQyBsZXZlbCk/CitTZWNvbmQsIGhvdyBjYW4gdGhlIE9yZGVyZWREaWN0IGltcGxlbWVudGF0aW9uIGxldmVyYWdlIHRoZSBkaWN0CitpbXBsZW1lbnRhdGlvbiBlZmZlY3RpdmVseSB3aXRob3V0IGludHJvZHVjaW5nIHVubmVjZXNzYXJ5IGNvdXBsaW5nIG9yCitpbmVmZmljaWVuY2llcz8KKworVGhpcyBzZWNvbmQgcG9pbnQgaXMgcmVmbGVjdGVkIGhlcmUgYW5kIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgc28gdGhlCitmdXJ0aGVyIGZvY3VzIGlzIG9uIHRoZSBmaXJzdCBwb2ludC4gIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IGZvcgorb3ZlcnJpZGRlbiBtZXRob2RzLCB0aGUgZGljdCBpbXBsZW1lbnRhdGlvbiBpcyBkZWZlcnJlZCB0byBhcyBtdWNoIGFzCitwb3NzaWJsZS4gIEZ1cnRoZXJtb3JlLCBjb3VwbGluZyBpcyBsaW1pdGVkIHRvIGFzIGxpdHRsZSBhcyBpcyByZWFzb25hYmxlLgorCitDb25jcmV0ZSBBUEkgQ29tcGF0aWJpbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNlIG9mIHRoZSBjb25jcmV0ZSBDLUFQSSBmb3IgZGljdCAoUHlEaWN0XyopIHdpdGggT3JkZXJlZERpY3QgaXMKK3Byb2JsZW1hdGljLiAgKFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA5NzcuKSAgVGhlIGNvbmNyZXRlIEFQSQoraGFzIGEgbnVtYmVyIG9mIGhhcmQtY29kZWQgYXNzdW1wdGlvbnMgdGllZCB0byB0aGUgZGljdCBpbXBsZW1lbnRhdGlvbi4KK1RoaXMgaXMsIGluIHBhcnQsIGR1ZSB0byBwZXJmb3JtYW5jZSByZWFzb25zLCB3aGljaCBpcyB1bmRlcnN0YW5kYWJsZQorZ2l2ZW4gdGhlIHBhcnQgZGljdCBwbGF5cyBpbiBQeXRob24uCisKK0FueSBhdHRlbXB0IHRvIHJlcGxhY2UgZGljdCB3aXRoIE9yZGVyZWREaWN0IGZvciBhbnkgcm9sZSBpbiB0aGUKK2ludGVycHJldGVyIChlLmcuICoqa3dkcykgZmFjZXMgYSBjaGFsbGVuZ2UuICBTdWNoIGFueSBlZmZvcnQgbXVzdAorcmVjb2duaXplIHRoYXQgdGhlIGluc3RhbmNlcyBpbiBhZmZlY3RlZCBsb2NhdGlvbnMgY3VycmVudGx5IGludGVyYWN0IHdpdGgKK3RoZSBjb25jcmV0ZSBBUEkuCisKK0hlcmUgYXJlIHNvbWUgd2F5cyB0byBhZGRyZXNzIHRoaXMgY2hhbGxlbmdlOgorCisxLiBDaGFuZ2UgdGhlIHJlbGV2YW50IHVzYWdlIG9mIHRoZSBjb25jcmV0ZSBBUEkgaW4gQ1B5dGhvbiBhbmQgYWRkCisgICBQeURpY3RfQ2hlY2tFeGFjdCgpIGNhbGxzIHRvIGVhY2ggb2YgdGhlIGNvbmNyZXRlIEFQSSBmdW5jaW9ucy4KKzIuIEFkanVzdCB0aGUgcmVsZXZhbnQgY29uY3JldGUgQVBJIGZ1bmN0aW9ucyB0byBleHBsaWNpdGx5IGFjY29tbW9kYXRlCisgICBPcmRlcmVkRGljdC4KKzMuIEFzIHdpdGggIzEsIGFkZCB0aGUgY2hlY2tzLCBidXQgaW1wcm92ZSB0aGUgYWJzdHJhY3QgQVBJIHdpdGggc21hcnQgZmFzdAorICAgcGF0aHMgZm9yIGRpY3QgYW5kIE9yZGVyZWREaWN0LCBhbmQgcmVmYWN0b3IgQ1B5dGhvbiB0byB1c2UgdGhlIGFic3RyYWN0CisgICBBUEkuICBJbXByb3ZlbWVudHMgdG8gdGhlIGFic3RyYWN0IEFQSSB3b3VsZCBiZSB2YWx1YWJsZSByZWdhcmRsZXNzLgorCitBZGRpbmcgdGhlIGNoZWNrcyB0byB0aGUgY29uY3JldGUgQVBJIHdvdWxkIGhlbHAgbWFrZSBhbnkgaW50ZXJwcmV0ZXIKK3N3aXRjaCB0byBPcmRlcmVkRGljdCBsZXNzIHBhaW5mdWwgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiAgSG93ZXZlciwgdGhpcword29uJ3Qgd29yay4gIFRoZSBlcXVpdmFsZW50IEMgQVBJIGNhbGwgdG8gYGRpY3QuX19zZXRpdGVtX18ob2JqLCBrLCB2KWAKK2lzICdQeURpY3RfU2V0SXRlbShvYmosIGssIHYpYC4gIFRoaXMgaWxsdXN0cmF0ZXMgaG93IHN1YmNsYXNzZXMgaW4gQyBjYWxsCit0aGUgYmFzZSBjbGFzcydzIG1ldGhvZHMsIHNpbmNlIHRoZXJlIGlzIG5vIGVxdWl2YWxlbnQgb2Ygc3VwZXIoKSBpbiB0aGUKK0MgQVBJLiAgQ2FsbGluZyBpbnRvIFB5dGhvbiBmb3IgcGFyZW50IGNsYXNzIEFQSSB3b3VsZCB3b3JrLCBidXQgc29tZQorZXh0ZW5zaW9uIG1vZHVsZXMgYWxyZWFkeSByZWx5IG9uIHRoaXMgZmVhdHVyZSBvZiB0aGUgY29uY3JldGUgQVBJLgorCitGb3IgcmVmZXJlbmNlLCBoZXJlIGlzIGEgYnJlYWtkb3duIG9mIHNvbWUgb2YgdGhlIGRpY3QgY29uY3JldGUgQVBJOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09Citjb25jcmV0ZSBBUEkgICAgICAgICAgICAgICB1c2VzICAgICAgICAgIGFic3RyYWN0IEFQSQorPT09PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PQorUHlEaWN0X0NoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfQ2hlY2sKKyhQeURpY3RfQ2hlY2tFeGFjdCkgICAgICAgICAgICAgICAgICAgICAgLQorKFB5RGljdF9OZXcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCisoUHlEaWN0UHJveHlfTmV3KSAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9DbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X0NvbnRhaW5zICAgICAgICAgICAgICAgICAgICAgICAgICBQeVNlcXVlbmNlX0NvbnRhaW5zCitQeURpY3RfQ29weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9TZXRJdGVtICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3RfU2V0SXRlbQorUHlEaWN0X1NldEl0ZW1TdHJpbmcgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZworUHlEaWN0X0RlbEl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfRGVsSXRlbQorUHlEaWN0X0RlbEl0ZW1TdHJpbmcgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfRGVsSXRlbVN0cmluZworUHlEaWN0X0dldEl0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfR2V0SXRlbVdpdGhFcnJvciAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X0dldEl0ZW0KK19QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yICAgICAgICAgICAgICAgLQorUHlEaWN0X0dldEl0ZW1TdHJpbmcgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZworUHlEaWN0X0l0ZW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfSXRlbXMKK1B5RGljdF9LZXlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX0tleXMKK1B5RGljdF9WYWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlNYXBwaW5nX1ZhbHVlcworUHlEaWN0X1NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfU2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfTGVuZ3RoCitQeURpY3RfTmV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5SXRlcl9OZXh0CitfUHlEaWN0X05leHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9NZXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLQorUHlEaWN0X1VwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtCitQeURpY3RfTWVyZ2VGcm9tU2VxMiAgICAgICAgICAgICAgICAgICAgIC0KK1B5RGljdF9DbGVhckZyZWVMaXN0ICAgICAgICAgICAgICAgICAgICAgLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWFwcGluZ19IYXNLZXkKKz09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT0KKworCitUaGUgZGljdCBJbnRlcmZhY2UgUmVsYXRpdmUgdG8gT3JkZXJlZERpY3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTaW5jZSBPcmRlcmVkRGljdCBzdWJjbGFzc2VzIGRpY3QsIHVuZGVyc3RhbmRpbmcgdGhlIHZhcmlvdXMgbWV0aG9kcyBhbmQKK2F0dHJpYnV0ZXMgb2YgZGljdCBpcyBpbXBvcnRhbnQgZm9yIGltcGxlbWVudGluZyBPcmRlcmVkRGljdC4KKworUmVsZXZhbnQgVHlwZSBTbG90cworLS0tLS0tLS0tLS0tLS0tLS0tLQorCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PQorc2xvdCAgICAgICAgICAgICAgYXR0cmlidXRlICAgICAgICBvYmplY3QgICAgICAgICAgICAgIGRpY3QKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09Cit0cF9kZWFsbG9jICAgICAgICAtICAgICAgICAgICAgICAgIG9iamVjdF9kZWFsbG9jICAgICAgZGljdF9kZWFsbG9jCit0cF9yZXByICAgICAgICAgICBfX3JlcHJfXyAgICAgICAgIG9iamVjdF9yZXByICAgICAgICAgZGljdF9yZXByCitzcV9jb250YWlucyAgICAgICBfX2NvbnRhaW5zX18gICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9jb250YWlucworbXBfbGVuZ3RoICAgICAgICAgX19sZW5fXyAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfbGVuZ3RoCittcF9zdWJzY3JpcHQgICAgICBfX2dldGl0ZW1fXyAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9zdWJzY3JpcHQKK21wX2Fzc19zdWJzY3JpcHQgIF9fc2V0aXRlbV9fICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2Fzc19zdWIKKyAgICAgICAgICAgICAgICAgIF9fZGVsaXRlbV9fCit0cF9oYXNoICAgICAgICAgICBfX2hhc2hfXyAgICAgICAgIF9QeV9IYXNoUG9pbnRlciAgICAgLi4uX0hhc2hOb3RJbXBsCit0cF9zdHIgICAgICAgICAgICBfX3N0cl9fICAgICAgICAgIG9iamVjdF9zdHIgICAgICAgICAgLQordHBfZ2V0YXR0cm8gICAgICAgX19nZXRhdHRyaWJ1dGVfXyAuLi5fR2VuZXJpY0dldEF0dHIgIChyZXBlYXRlZCkKKyAgICAgICAgICAgICAgICAgIF9fZ2V0YXR0cl9fCit0cF9zZXRhdHRybyAgICAgICBfX3NldGF0dHJfXyAgICAgIC4uLl9HZW5lcmljU2V0QXR0ciAgKGRpc2FibGVkKQordHBfZG9jICAgICAgICAgICAgX19kb2NfXyAgICAgICAgICAobGl0ZXJhbCkgICAgICAgICAgIGRpY3Rpb25hcnlfZG9jCit0cF90cmF2ZXJzZSAgICAgICAtICAgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF90cmF2ZXJzZQordHBfY2xlYXIgICAgICAgICAgLSAgICAgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfdHBfY2xlYXIKK3RwX3JpY2hjb21wYXJlICAgIF9fZXFfXyAgICAgICAgICAgb2JqZWN0X3JpY2hjb21wYXJlICBkaWN0X3JpY2hjb21wYXJlCisgICAgICAgICAgICAgICAgICBfX25lX18KK3RwX3dlYWtsaXN0b2Zmc2V0IChfX3dlYWtyZWZfXykgICAgLSAgICAgICAgICAgICAgICAgICAtCit0cF9pdGVyICAgICAgICAgICBfX2l0ZXJfXyAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9pdGVyCit0cF9kaWN0b2Zmc2V0ICAgICAoX19kaWN0X18pICAgICAgIC0gICAgICAgICAgICAgICAgICAgLQordHBfaW5pdCAgICAgICAgICAgX19pbml0X18gICAgICAgICBvYmplY3RfaW5pdCAgICAgICAgIGRpY3RfaW5pdAordHBfYWxsb2MgICAgICAgICAgLSAgICAgICAgICAgICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jIChyZXBlYXRlZCkKK3RwX25ldyAgICAgICAgICAgIF9fbmV3X18gICAgICAgICAgb2JqZWN0X25ldyAgICAgICAgICBkaWN0X25ldwordHBfZnJlZSAgICAgICAgICAgLSAgICAgICAgICAgICAgICBQeU9iamVjdF9EZWwgICAgICAgIFB5T2JqZWN0X0dDX0RlbAorPT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KKworUmVsZXZhbnQgTWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLQorCis9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09CittZXRob2QgICAgICAgICAgIG9iamVjdCAgICAgICAgICAgICAgZGljdAorPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PQorX19yZWR1Y2VfXyAgICAgICBvYmplY3RfcmVkdWNlICAgICAgIC0KK19fc2l6ZW9mX18gICAgICAgb2JqZWN0X3NpemVvZiAgICAgICBkaWN0X3NpemVvZgorY2xlYXIgICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3RfY2xlYXIKK2NvcHkgICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2NvcHkKK2Zyb21rZXlzICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X2Zyb21rZXlzCitnZXQgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9nZXQKK2l0ZW1zICAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0aXRlbXNfbmV3CitrZXlzICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdGtleXNfbmV3Citwb3AgICAgICAgICAgICAgIC0gICAgICAgICAgICAgICAgICAgZGljdF9wb3AKK3BvcGl0ZW0gICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3BvcGl0ZW0KK3NldGRlZmF1bHQgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3NldGRlZmF1bHQKK3VwZGF0ZSAgICAgICAgICAgLSAgICAgICAgICAgICAgICAgICBkaWN0X3VwZGF0ZQordmFsdWVzICAgICAgICAgICAtICAgICAgICAgICAgICAgICAgIGRpY3R2YWx1ZXNfbmV3Cis9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09CisKKworUHVyZSBQeXRob24gT3JkZXJlZERpY3QKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIGFscmVhZHkgbm90ZWQsIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgcHVyZSBQeXRob24gT3JkZXJlZERpY3QKK2ltcGxlbWVudGF0aW9uIGlzIGEga2V5IGdvYWwgb2YgdGhpcyBDIGltcGxlbWVudGF0aW9uLiAgVG8gZnVydGhlciB0aGF0Citnb2FsLCBoZXJlJ3MgYSBzdW1tYXJ5IG9mIGhvdyBPcmRlcmVkRGljdC1zcGVjaWZpYyBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZAoraW4gY29sbGVjdGlvbnMvX19pbml0X18ucHkuICBBbHNvIHByb3ZpZGVkIGlzIGFuIGluZGljYXRpb24gb2Ygd2hpY2gKK21ldGhvZHMgZGlyZWN0bHkgbXV0YXRlIG9yIGl0ZXJhdGUgdGhlIG9iamVjdCwgYXMgd2VsbCBhcyBhbnkgcmVsYXRpb25zaGlwCit3aXRoIHRoZSB1bmRlcmx5aW5nIGxpbmtlZC1saXN0LgorCis9PT09PT09PT09PT09ID09PT09PT09PT09PT09ID09ID09PT09PT09PT09PT09PT0gPT09ID09PSA9PT09CittZXRob2QgICAgICAgIGltcGwgdXNlZCAgICAgIGxsIHVzZXMgICAgICAgICAgICAgaW5xIG11dCBpdGVyCis9PT09PT09PT09PT09ID09PT09PT09PT09PT09ID09ID09PT09PT09PT09PT09PT0gPT09ID09PSA9PT09CitfX2NvbnRhaW5zX18gIGRpY3QgICAgICAgICAgIC0gIC0gICAgICAgICAgICAgICAgWAorX19kZWxpdGVtX18gICBPcmRlcmVkRGljdCAgICBZICBkaWN0Ll9fZGVsaXRlbV9fICAgICBYCitfX2VxX18gICAgICAgIE9yZGVyZWREaWN0ICAgIE4gIE9yZGVyZWREaWN0ICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0Ll9fZXFfXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2l0ZXJfXworX19nZXRpdGVtX18gICBkaWN0ICAgICAgICAgICAtICAtICAgICAgICAgICAgICAgIFgKK19faXRlcl9fICAgICAgT3JkZXJlZERpY3QgICAgWSAgLSAgICAgICAgICAgICAgICAgICAgICAgIFgKK19faW5pdF9fICAgICAgT3JkZXJlZERpY3QgICAgTiAgdXBkYXRlCitfX2xlbl9fICAgICAgIGRpY3QgICAgICAgICAgIC0gIC0gICAgICAgICAgICAgICAgWAorX19uZV9fICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBfX2VxX18gICAgICAgICAgIH4KK19fcmVkdWNlX18gICAgT3JkZXJlZERpY3QgICAgTiAgT3JkZXJlZERpY3QgICAgICB+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faXRlcl9fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aXRlbV9fCitfX3JlcHJfXyAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fY2xhc3NfXyAgICAgICAgfgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcworX19yZXZlcnNlZF9fICBPcmRlcmVkRGljdCAgICBZICAtICAgICAgICAgICAgICAgICAgICAgICAgWAorX19zZXRpdGVtX18gICBPcmRlcmVkRGljdCAgICBZICBfX2NvbnRhaW5zX18gICAgICAgICBYCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QuX19zZXRpdGVtX18KK19fc2l6ZW9mX18gICAgT3JkZXJlZERpY3QgICAgWSAgX19sZW5fXyAgICAgICAgICB+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGljdF9fCitjbGVhciAgICAgICAgIE9yZGVyZWREaWN0ICAgIFkgIGRpY3QuY2xlYXIgICAgICAgICAgIFgKK2NvcHkgICAgICAgICAgT3JkZXJlZERpY3QgICAgTiAgX19jbGFzc19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9faW5pdF9fCitmcm9ta2V5cyAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fc2V0aXRlbV9fCitnZXQgICAgICAgICAgIGRpY3QgICAgICAgICAgIC0gIC0gICAgICAgICAgICAgICAgfgoraXRlbXMgICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBJdGVtc1ZpZXcgICAgICAgICAgICAgICAgWAora2V5cyAgICAgICAgICBNdXRhYmxlTWFwcGluZyAtICBLZXlzVmlldyAgICAgICAgICAgICAgICAgWAorbW92ZV90b19lbmQgICBPcmRlcmVkRGljdCAgICBZICAtICAgICAgICAgICAgICAgICAgICBYCitwb3AgICAgICAgICAgIE9yZGVyZWREaWN0ICAgIE4gIF9fY29udGFpbnNfXyAgICAgICAgIFgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nZXRpdGVtX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZWxpdGVtX18KK3BvcGl0ZW0gICAgICAgT3JkZXJlZERpY3QgICAgWSAgZGljdC5wb3AgICAgICAgICAgICAgWAorc2V0ZGVmYXVsdCAgICBPcmRlcmVkRGljdCAgICBOICBfX2NvbnRhaW5zX18gICAgICAgICB+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aXRlbV9fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2V0aXRlbV9fCit1cGRhdGUgICAgICAgIE11dGFibGVNYXBwaW5nIC0gIF9fc2V0aXRlbV9fICAgICAgICAgIH4KK3ZhbHVlcyAgICAgICAgTXV0YWJsZU1hcHBpbmcgLSAgVmFsdWVzVmlldyAgICAgICAgICAgICAgIFgKKz09PT09PT09PT09PT0gPT09PT09PT09PT09PT0gPT0gPT09PT09PT09PT09PT09PSA9PT0gPT09ID09PT0KKworX19yZXZlcnNlZF9fIGFuZCBtb3ZlX3RvX2VuZCBhcmUgYm90aCBleGNsdXNpdmUgdG8gT3JkZXJlZERpY3QuCisKKworQyBPcmRlcmVkRGljdCBJbXBsZW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CitzbG90ICAgICAgICAgICAgICBpbXBsCis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09Cit0cF9kZWFsbG9jICAgICAgICBvZGljdF9kZWFsbG9jCit0cF9yZXByICAgICAgICAgICBvZGljdF9yZXByCittcF9hc3Nfc3Vic2NyaXB0ICBvZGljdF9hc3Nfc3ViCit0cF9kb2MgICAgICAgICAgICBvZGljdF9kb2MKK3RwX3RyYXZlcnNlICAgICAgIG9kaWN0X3RyYXZlcnNlCit0cF9jbGVhciAgICAgICAgICBvZGljdF90cF9jbGVhcgordHBfcmljaGNvbXBhcmUgICAgb2RpY3RfcmljaGNvbXBhcmUKK3RwX3dlYWtsaXN0b2Zmc2V0IChvZmZzZXQpCit0cF9pdGVyICAgICAgICAgICBvZGljdF9pdGVyCit0cF9kaWN0b2Zmc2V0ICAgICAob2Zmc2V0KQordHBfaW5pdCAgICAgICAgICAgb2RpY3RfaW5pdAordHBfYWxsb2MgICAgICAgICAgKHJlcGVhdGVkKQordHBfbmV3ICAgICAgICAgICAgb2RpY3RfbmV3Cis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KK21ldGhvZCAgICAgICAgICAgIGltcGwKKz09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT0KK19fcmVkdWNlX18gICAgICAgIG9kaWN0X3JlZHVjZQorX19zaXplb2ZfXyAgICAgICAgb2RpY3Rfc2l6ZW9mCitjbGVhciAgICAgICAgICAgICBvZGljdF9jbGVhcgorY29weSAgICAgICAgICAgICAgb2RpY3RfY29weQorZnJvbWtleXMgICAgICAgICAgb2RpY3RfZnJvbWtleXMKK2l0ZW1zICAgICAgICAgICAgIG9kaWN0aXRlbXNfbmV3CitrZXlzICAgICAgICAgICAgICBvZGljdGtleXNfbmV3Citwb3AgICAgICAgICAgICAgICBvZGljdF9wb3AKK3BvcGl0ZW0gICAgICAgICAgIG9kaWN0X3BvcGl0ZW0KK3NldGRlZmF1bHQgICAgICAgIG9kaWN0X3NldGRlZmF1bHQKK3VwZGF0ZSAgICAgICAgICAgIG9kaWN0X3VwZGF0ZQordmFsdWVzICAgICAgICAgICAgb2RpY3R2YWx1ZXNfbmV3Cis9PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisKK0luaGVyaXRlZCB1bmNoYW5nZWQgZnJvbSBvYmplY3QvZGljdDoKKworPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PQorbWV0aG9kICAgICAgICAgICB0eXBlIGZpZWxkCis9PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09CistICAgICAgICAgICAgICAgIHRwX2ZyZWUKK19fY29udGFpbnNfXyAgICAgdHBfYXNfc2VxdWVuY2Uuc3FfY29udGFpbnMKK19fZ2V0YXR0cl9fICAgICAgdHBfZ2V0YXR0cm8KK19fZ2V0YXR0cmlidXRlX18gdHBfZ2V0YXR0cm8KK19fZ2V0aXRlbV9fICAgICAgdHBfYXNfbWFwcGluZy5tcF9zdWJzY3JpcHQKK19faGFzaF9fICAgICAgICAgdHBfaGFzaAorX19sZW5fXyAgICAgICAgICB0cF9hc19tYXBwaW5nLm1wX2xlbmd0aAorX19zZXRhdHRyX18gICAgICB0cF9zZXRhdHRybworX19zdHJfXyAgICAgICAgICB0cF9zdHIKK2dldCAgICAgICAgICAgICAgLQorPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK090aGVyIENoYWxsZW5nZXMKKz09PT09PT09PT09PT09PT0KKworUHJlc2VydmluZyBPcmRlcmluZyBEdXJpbmcgSXRlcmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0R1cmluZyBpdGVyYXRpb24gdGhyb3VnaCBhbiBPcmRlcmVkRGljdCwgaXQgaXMgcG9zc2libGUgdGhhdCBpdGVtcyBjb3VsZAorZ2V0IGFkZGVkLCByZW1vdmVkLCBvciByZW9yZGVyZWQuICBGb3IgYSBsaW5rZWQtbGlzdCBpbXBsZW1lbnRhdGlvbiwgYXMKK3dpdGggc29tZSBvdGhlciBpbXBsZW1lbnRhdGlvbnMsIHRoYXQgc2l0dWF0aW9uIG1heSBsZWFkIHRvIHVuZGVmaW5lZAorYmVoYXZpb3IuICBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgZGljdCBtZW50aW9ucyB0aGlzIGluIHRoZSBgaXRlcigpYCBzZWN0aW9uCitvZiBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC9saWJyYXJ5L3N0ZHR5cGVzLmh0bWwjZGljdGlvbmFyeS12aWV3LW9iamVjdHMuCitJbiB0aGlzIGltcGxlbWVudGF0aW9uIHdlIGZvbGxvdyBkaWN0J3MgbGVhZCAoYXMgZG9lcyB0aGUgcHVyZSBQeXRob24KK2ltcGxlbWVudGF0aW9uKSBmb3IgX19pdGVyX18oKSwga2V5cygpLCB2YWx1ZXMoKSwgYW5kIGl0ZW1zKCkuCisKK0ZvciBpbnRlcm5hbCBpdGVyYXRpb24gKHVzaW5nIF9vZGljdF9GT1JFQUNIIG9yIG5vdCksIHRoZXJlIGlzIHN0aWxsIHRoZQorcmlzayB0aGF0IG5vdCBhbGwgbm9kZXMgdGhhdCB3ZSBleHBlY3QgdG8gYmUgc2VlbiBpbiB0aGUgbG9vcCBhY3R1YWxseSBnZXQKK3NlZW4uICBUaHVzLCB3ZSBhcmUgY2FyZWZ1bCBpbiBlYWNoIG9mIHRob3NlIHBsYWNlcyB0byBlbnN1cmUgdGhhdCB0aGV5CithcmUuICBUaGlzIGNvbWVzLCBvZiBjb3Vyc2UsIGF0IGEgc21hbGwgcHJpY2UgYXQgZWFjaCBsb2NhdGlvbi4gIFRoZQorc29sdXRpb25zIGFyZSBtdWNoIHRoZSBzYW1lIGFzIHRob3NlIGRldGFpbGVkIGluIHRoZSBgU2l0dWF0aW9uIHRoYXQKK0VuZGFuZ2VycyBDb25zaXN0ZW5jeWAgc2VjdGlvbiBhYm92ZS4KKworCitQb3RlbnRpYWwgT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBBbGxvY2F0ZSB0aGUgbm9kZXMgYXMgYSBibG9jayB2aWEgb2RfZmFzdF9ub2RlcyBpbnN0ZWFkIG9mIGluZGl2aWR1YWxseS4KKyAgLSBTZXQgbm9kZS0+a2V5IHRvIE5VTEwgdG8gaW5kaWNhdGUgdGhlIG5vZGUgaXMgbm90LWluLXVzZS4KKyAgLSBBZGQgX29kaWN0X0VYSVNUUygpPworICAtIEhvdyB0byBtYWludGFpbiBjb25zaXN0ZW5jeSBhY3Jvc3MgcmVzaXplcz8gIEV4aXN0aW5nIG5vZGUgcG9pbnRlcnMKKyAgICB3b3VsZCBiZSBpbnZhbGlkYXRlIGFmdGVyIGEgcmVzaXplLCB3aGljaCBpcyBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMKKyAgICBmb3IgdGhlIGl0ZXJhdG9ycy4KKyogVXNlIGEgbW9yZSBzdHJlYW0tbGluZWQgaW1wbGVtZW50YXRpb24gb2YgdXBkYXRlKCkgYW5kLCBsaWtlbHkgaW5kaXJlY3RseSwKKyAgX19pbml0X18oKS4KKworKi8KKworLyogVE9ETworCitzb29uZXI6CistIHJlZW50cmFuY3kgKG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGF0IGEgdGhyZWFkLXNhZmUgc3RhdGUgd2hlbiBjYWxsaW5nCisgIGludG8gUHl0aG9uKS4gIEkndmUgYWxyZWFkeSBjaGVja2VkIHRoaXMgbXVsdGlwbGUgdGltZXMsIGJ1dCB3YW50IHRvCisgIG1ha2Ugb25lIG1vcmUgcGFzcy4KKy0gYWRkIHVuaXQgdGVzdHMgZm9yIHJlZW50cmFuY3k/CisKK2xhdGVyOgorLSBtYWtlIHRoZSBkaWN0IHZpZXdzIHN1cHBvcnQgdGhlIGZ1bGwgc2V0IEFQSSAodGhlIHB1cmUgUHl0aG9uIGltcGwgZG9lcykKKy0gaW1wbGVtZW50IGEgZnVsbGVyIE11dGFibGVNYXBwaW5nIEFQSSBpbiBDPworLSBtb3ZlIHRoZSBNdXRhYmxlTWFwcGluZyBpbXBsZW1lbnRhdGlvbiB0byBhYnN0cmFjdC5jPworLSBvcHRpbWl6ZSBtdXRhYmxlbWFwcGluZ191cGRhdGUKKy0gdXNlIFB5T2JqZWN0X01BTExPQyAoc21hbGwgb2JqZWN0IGFsbG9jYXRvcikgZm9yIG9kaWN0IG5vZGVzPworLSBzdXBwb3J0IHN1YmNsYXNzZXMgYmV0dGVyIChlLmcuIGluIG9kaWN0X3JpY2hjb21wYXJlKQorCisqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiZGljdC1jb21tb24uaCIKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworCit0eXBlZGVmIHN0cnVjdCBfb2RpY3Rub2RlIF9PRGljdE5vZGU7CisKKy8qIFB5T0RpY3RPYmplY3QgKi8KK3N0cnVjdCBfb2RpY3RvYmplY3QgeworICAgIFB5RGljdE9iamVjdCBvZF9kaWN0OyAgICAgICAgLyogdGhlIHVuZGVybHlpbmcgZGljdCAqLworICAgIF9PRGljdE5vZGUgKm9kX2ZpcnN0OyAgICAgICAgLyogZmlyc3Qgbm9kZSBpbiB0aGUgbGlua2VkIGxpc3QsIGlmIGFueSAqLworICAgIF9PRGljdE5vZGUgKm9kX2xhc3Q7ICAgICAgICAgLyogbGFzdCBub2RlIGluIHRoZSBsaW5rZWQgbGlzdCwgaWYgYW55ICovCisgICAgLyogb2RfZmFzdF9ub2RlcyBhbmQgb2RfcmVzaXplX3NlbnRpbmVsIGFyZSBtYW5hZ2VkIGJ5IF9vZGljdF9yZXNpemUoKQorICAgICAqIE5vdGUgdGhhdCB3ZSByZWx5IG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgZGljdCBmb3IgYm90aC4gKi8KKyAgICBfT0RpY3ROb2RlICoqb2RfZmFzdF9ub2RlczsgIC8qIGhhc2ggdGFibGUgdGhhdCBtaXJyb3JzIHRoZSBkaWN0IHRhYmxlICovCisgICAgUHlfdWludHB0cl90IG9kX3Jlc2l6ZV9zZW50aW5lbDsgIC8qIGNoYW5nZXMgaWYgb2RpY3Qgc2hvdWxkIGJlIHJlc2l6ZWQgKi8KKworICAgIHNpemVfdCBvZF9zdGF0ZTsgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIExMIGNoYW5nZXMgKi8KKyAgICBQeU9iamVjdCAqb2RfaW5zdF9kaWN0OyAgICAgIC8qIE9yZGVyZWREaWN0KCkuX19kaWN0X18gKi8KKyAgICBQeU9iamVjdCAqb2Rfd2Vha3JlZmxpc3Q7ICAgIC8qIGhvbGRzIHdlYWtyZWZzIHRvIHRoZSBvZGljdCAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBvZGljdCBrZXlzIChhIHNpbXBsZSBkb3VibHktbGlua2VkIGxpc3QpCisgKi8KKworc3RydWN0IF9vZGljdG5vZGUgeworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgX09EaWN0Tm9kZSAqbmV4dDsKKyAgICBfT0RpY3ROb2RlICpwcmV2OworfTsKKworI2RlZmluZSBfb2RpY3Rub2RlX0tFWShub2RlKSBcCisgICAgKG5vZGUtPmtleSkKKyNkZWZpbmUgX29kaWN0bm9kZV9IQVNIKG5vZGUpIFwKKyAgICAobm9kZS0+aGFzaCkKKy8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLworI2RlZmluZSBfb2RpY3Rub2RlX1ZBTFVFKG5vZGUsIG9kKSBcCisgICAgUHlPRGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKW9kLCBfb2RpY3Rub2RlX0tFWShub2RlKSkKKyNkZWZpbmUgX29kaWN0bm9kZV9QUkVWKG5vZGUpIChub2RlLT5wcmV2KQorI2RlZmluZSBfb2RpY3Rub2RlX05FWFQobm9kZSkgKG5vZGUtPm5leHQpCisKKyNkZWZpbmUgX29kaWN0X0ZJUlNUKG9kKSAoKChQeU9EaWN0T2JqZWN0ICopb2QpLT5vZF9maXJzdCkKKyNkZWZpbmUgX29kaWN0X0xBU1Qob2QpICgoKFB5T0RpY3RPYmplY3QgKilvZCktPm9kX2xhc3QpCisjZGVmaW5lIF9vZGljdF9FTVBUWShvZCkgKF9vZGljdF9GSVJTVChvZCkgPT0gTlVMTCkKKyNkZWZpbmUgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIFwKKyAgICBmb3IgKG5vZGUgPSBfb2RpY3RfRklSU1Qob2QpOyBub2RlICE9IE5VTEw7IG5vZGUgPSBfb2RpY3Rub2RlX05FWFQobm9kZSkpCisKKyNkZWZpbmUgX29kaWN0X0ZBU1RfU0laRShvZCkgKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXMtPmRrX3NpemUKKworc3RhdGljIHZvaWQKK19vZGljdF9mcmVlX2Zhc3Rfbm9kZXMoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBpZiAob2QtPm9kX2Zhc3Rfbm9kZXMpIHsKKyAgICAgICAgUHlNZW1fRlJFRShvZC0+b2RfZmFzdF9ub2Rlcyk7CisgICAgfQorfQorCisvKiBSZXR1cm4gdGhlIGluZGV4IGludG8gdGhlIGhhc2ggdGFibGUsIHJlZ2FyZGxlc3Mgb2YgYSB2YWxpZCBub2RlLiAqLworc3RhdGljIFB5X3NzaXplX3QKK19vZGljdF9nZXRfaW5kZXhfaGFzaChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzOworCisgICAgZXAgPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgLyogV2UgdXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhlIGVudHJ5J3MgaW5kZXggaW50byB0aGUgdGFibGUuICovCisgICAgcmV0dXJuIGVwIC0ga2V5cy0+ZGtfZW50cmllczsKK30KKworLyogUmVwbGFjZSBvZC0+b2RfZmFzdF9ub2RlcyB3aXRoIGEgbmV3IHRhYmxlIG1hdGNoaW5nIHRoZSBzaXplIG9mIGRpY3Qncy4gKi8KK3N0YXRpYyBpbnQKK19vZGljdF9yZXNpemUoUHlPRGljdE9iamVjdCAqb2QpIHsKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgX09EaWN0Tm9kZSAqKmZhc3Rfbm9kZXMsICpub2RlOworCisgICAgLyogSW5pdGlhbGl6ZSBhIG5ldyAiZmFzdCBub2RlcyIgdGFibGUuICovCisgICAgc2l6ZSA9ICgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzLT5ka19zaXplOworICAgIGZhc3Rfbm9kZXMgPSBQeU1lbV9ORVcoX09EaWN0Tm9kZSAqLCBzaXplKTsKKyAgICBpZiAoZmFzdF9ub2RlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAgZmFzdF9ub2Rlc1tpXSA9IE5VTEw7CisKKyAgICAvKiBDb3B5IHRoZSBjdXJyZW50IG5vZGVzIGludG8gdGhlIHRhYmxlLiAqLworICAgIF9vZGljdF9GT1JFQUNIKG9kLCBub2RlKSB7CisgICAgICAgIGkgPSBfb2RpY3RfZ2V0X2luZGV4X2hhc2gob2QsIF9vZGljdG5vZGVfS0VZKG5vZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CisgICAgICAgIGlmIChpIDwgMCkgeworICAgICAgICAgICAgUHlNZW1fRlJFRShmYXN0X25vZGVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBmYXN0X25vZGVzW2ldID0gbm9kZTsKKyAgICB9CisKKyAgICAvKiBSZXBsYWNlIHRoZSBvbGQgZmFzdCBub2RlcyB0YWJsZS4gKi8KKyAgICBfb2RpY3RfZnJlZV9mYXN0X25vZGVzKG9kKTsKKyAgICBvZC0+b2RfZmFzdF9ub2RlcyA9IGZhc3Rfbm9kZXM7CisgICAgb2QtPm9kX3Jlc2l6ZV9zZW50aW5lbCA9IChQeV91aW50cHRyX3QpKCgoUHlEaWN0T2JqZWN0ICopb2QpLT5tYV9rZXlzKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogUmV0dXJuIHRoZSBpbmRleCBpbnRvIHRoZSBoYXNoIHRhYmxlLCByZWdhcmRsZXNzIG9mIGEgdmFsaWQgbm9kZS4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citfb2RpY3RfZ2V0X2luZGV4KFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXM7CisKKyAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBrZXlzID0gKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXM7CisKKyAgICAvKiBFbnN1cmUgb2RfZmFzdF9ub2RlcyBhbmQgZGtfZW50cmllcyBhcmUgaW4gc3luYy4gKi8KKyAgICBpZiAob2QtPm9kX3Jlc2l6ZV9zZW50aW5lbCAhPSAoUHlfdWludHB0cl90KWtleXMpIHsKKyAgICAgICAgaW50IHJlc2l6ZV9yZXMgPSBfb2RpY3RfcmVzaXplKG9kKTsKKyAgICAgICAgaWYgKHJlc2l6ZV9yZXMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBfb2RpY3RfZ2V0X2luZGV4X2hhc2gob2QsIGtleSwgaGFzaCk7Cit9CisKKy8qIFJldHVybnMgTlVMTCBpZiB0aGVyZSB3YXMgc29tZSBlcnJvciBvciB0aGUga2V5IHdhcyBub3QgZm91bmQuICovCitzdGF0aWMgX09EaWN0Tm9kZSAqCitfb2RpY3RfZmluZF9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaW5kZXg7CisKKyAgICBpZiAoX29kaWN0X0VNUFRZKG9kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW5kZXggPSBfb2RpY3RfZ2V0X2luZGV4KG9kLCBrZXkpOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBvZC0+b2RfZmFzdF9ub2Rlc1tpbmRleF07Cit9CisKK3N0YXRpYyB2b2lkCitfb2RpY3RfYWRkX2hlYWQoUHlPRGljdE9iamVjdCAqb2QsIF9PRGljdE5vZGUgKm5vZGUpCit7CisgICAgaWYgKF9vZGljdF9GSVJTVChvZCkgPT0gTlVMTCkgeworICAgICAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBOVUxMOworICAgICAgICBfb2RpY3Rub2RlX05FWFQobm9kZSkgPSBOVUxMOworICAgICAgICBfb2RpY3RfRklSU1Qob2QpID0gbm9kZTsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gbm9kZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9vZGljdG5vZGVfUFJFVihub2RlKSA9IE5VTEw7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IF9vZGljdF9GSVJTVChvZCk7CisgICAgICAgIF9vZGljdF9GSVJTVChvZCkgPSBub2RlOworICAgICAgICBfb2RpY3Rub2RlX1BSRVYoX29kaWN0X0ZJUlNUKG9kKSkgPSBub2RlOworICAgIH0KKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworc3RhdGljIHZvaWQKK19vZGljdF9hZGRfdGFpbChQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSkKK3sKKyAgICBpZiAoX29kaWN0X0xBU1Qob2QpID09IE5VTEwpIHsKKyAgICAgICAgX29kaWN0bm9kZV9QUkVWKG5vZGUpID0gTlVMTDsKKyAgICAgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gTlVMTDsKKyAgICAgICAgX29kaWN0X0ZJUlNUKG9kKSA9IG5vZGU7CisgICAgICAgIF9vZGljdF9MQVNUKG9kKSA9IG5vZGU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfb2RpY3Rub2RlX1BSRVYobm9kZSkgPSBfb2RpY3RfTEFTVChvZCk7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChub2RlKSA9IE5VTEw7CisgICAgICAgIF9vZGljdG5vZGVfTkVYVChfb2RpY3RfTEFTVChvZCkpID0gbm9kZTsKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gbm9kZTsKKyAgICB9CisKKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworLyogYWRkcyB0aGUgbm9kZSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0ICovCitzdGF0aWMgaW50Citfb2RpY3RfYWRkX25ld19ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBfT0RpY3ROb2RlICpub2RlOworCisgICAgUHlfSU5DUkVGKGtleSk7CisgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaSA9IF9vZGljdF9nZXRfaW5kZXgob2QsIGtleSk7CisgICAgaWYgKGkgPCAwKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSBpZiAob2QtPm9kX2Zhc3Rfbm9kZXNbaV0gIT0gTlVMTCkgeworICAgICAgICAvKiBXZSBhbHJlYWR5IGhhdmUgYSBub2RlIGZvciB0aGUga2V5IHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBhZGQgb25lLiAqLworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogbXVzdCBub3QgYmUgYWRkZWQgeWV0ICovCisgICAgbm9kZSA9IChfT0RpY3ROb2RlICopUHlNZW1fTUFMTE9DKHNpemVvZihfT0RpY3ROb2RlKSk7CisgICAgaWYgKG5vZGUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9vZGljdG5vZGVfS0VZKG5vZGUpID0ga2V5OworICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSA9IGhhc2g7CisgICAgX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKTsKKyAgICBvZC0+b2RfZmFzdF9ub2Rlc1tpXSA9IG5vZGU7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFB1dHRpbmcgdGhlIGRlY3JlZiBhZnRlciB0aGUgZnJlZSBjYXVzZXMgcHJvYmxlbXMuICovCisjZGVmaW5lIF9vZGljdG5vZGVfREVBTExPQyhub2RlKSBcCisgICAgZG8geyBcCisgICAgICAgIFB5X0RFQ1JFRihfb2RpY3Rub2RlX0tFWShub2RlKSk7IFwKKyAgICAgICAgUHlNZW1fRlJFRSgodm9pZCAqKW5vZGUpOyBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUmVwZWF0ZWQgY2FsbHMgb24gdGhlIHNhbWUgbm9kZSBhcmUgbm8tb3BzLiAqLworc3RhdGljIHZvaWQKK19vZGljdF9yZW1vdmVfbm9kZShQeU9EaWN0T2JqZWN0ICpvZCwgX09EaWN0Tm9kZSAqbm9kZSkKK3sKKyAgICBpZiAoX29kaWN0X0ZJUlNUKG9kKSA9PSBub2RlKQorICAgICAgICBfb2RpY3RfRklSU1Qob2QpID0gX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgIGVsc2UgaWYgKF9vZGljdG5vZGVfUFJFVihub2RlKSAhPSBOVUxMKQorICAgICAgICBfb2RpY3Rub2RlX05FWFQoX29kaWN0bm9kZV9QUkVWKG5vZGUpKSA9IF9vZGljdG5vZGVfTkVYVChub2RlKTsKKworICAgIGlmIChfb2RpY3RfTEFTVChvZCkgPT0gbm9kZSkKKyAgICAgICAgX29kaWN0X0xBU1Qob2QpID0gX29kaWN0bm9kZV9QUkVWKG5vZGUpOworICAgIGVsc2UgaWYgKF9vZGljdG5vZGVfTkVYVChub2RlKSAhPSBOVUxMKQorICAgICAgICBfb2RpY3Rub2RlX1BSRVYoX29kaWN0bm9kZV9ORVhUKG5vZGUpKSA9IF9vZGljdG5vZGVfUFJFVihub2RlKTsKKworICAgIF9vZGljdG5vZGVfUFJFVihub2RlKSA9IE5VTEw7CisgICAgX29kaWN0bm9kZV9ORVhUKG5vZGUpID0gTlVMTDsKKyAgICBvZC0+b2Rfc3RhdGUrKzsKK30KKworc3RhdGljIF9PRGljdE5vZGUgKgorX29kaWN0X3BvcF9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBfT0RpY3ROb2RlICpub2RlLCBQeU9iamVjdCAqa2V5KQoreworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgbm9kZSA9IF9vZGljdF9maW5kX25vZGUob2QsIGtleSk7CisgICAgICAgIGlmIChub2RlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgX29kaWN0X3JlbW92ZV9ub2RlKG9kLCBub2RlKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKworLyogSWYgc29tZW9uZSBjYWxscyBQeURpY3RfRGVsSXRlbSgpIGRpcmVjdGx5IG9uIGFuIE9yZGVyZWREaWN0LCB3ZSdsbAorICAgZ2V0IGFsbCBzb3J0cyBvZiBwcm9ibGVtcyBoZXJlLiAgSW4gUHlPRGljdF9EZWxJdGVtIHdlIG1ha2Ugc3VyZSB0bworICAgY2FsbCBfb2RpY3RfY2xlYXJfbm9kZSBmaXJzdC4KKworICAgVGhpcyBtYXR0ZXJzIGluIHRoZSBjYXNlIG9mIGNvbGxpZGluZyBrZXlzLiAgU3VwcG9zZSB3ZSBhZGQgMyBrZXlzOgorICAgW0EsIEIsIENdLCB3aGVyZSB0aGUgaGFzaCBvZiBDIGNvbGxpZGVzIHdpdGggQSBhbmQgdGhlIG5leHQgcG9zc2libGUKKyAgIGluZGV4IGluIHRoZSBoYXNoIHRhYmxlIGlzIG9jY3VwaWVkIGJ5IEIuICBJZiB3ZSByZW1vdmUgQiB0aGVuIGZvciBDCisgICB0aGUgZGljdCdzIGxvb2tub2RlIGZ1bmMgd2lsbCBnaXZlIHVzIHRoZSBvbGQgaW5kZXggb2YgQiBpbnN0ZWFkIG9mCisgICB0aGUgaW5kZXggd2UgZ290IGJlZm9yZSBkZWxldGluZyBCLiAgSG93ZXZlciwgdGhlIG5vZGUgZm9yIEMgaW4KKyAgIG9kX2Zhc3Rfbm9kZXMgaXMgc3RpbGwgYXQgdGhlIG9sZCBkaWN0IGluZGV4IG9mIEMuICBUaHVzIHRvIGJlIHN1cmUKKyAgIHRoaW5ncyBkb24ndCBnZXQgb3V0IG9mIHN5bmMsIHdlIGNsZWFyIHRoZSBub2RlIGluIG9kX2Zhc3Rfbm9kZXMKKyAgICpiZWZvcmUqIGNhbGxpbmcgUHlEaWN0X0RlbEl0ZW0uCisKKyAgIFRoZSBzYW1lIG11c3QgYmUgZG9uZSBmb3IgYW55IG90aGVyIE9yZGVyZWREaWN0IG9wZXJhdGlvbnMgd2hlcmUKKyAgIHdlIG1vZGlmeSBvZF9mYXN0X25vZGVzLgorKi8KK3N0YXRpYyBpbnQKK19vZGljdF9jbGVhcl9ub2RlKFB5T0RpY3RPYmplY3QgKm9kLCBfT0RpY3ROb2RlICpub2RlLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAgaWYgKF9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgLyogTGV0IGxhdGVyIGNvZGUgZGVjaWRlIGlmIHRoaXMgaXMgYSBLZXlFcnJvci4gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaSA9IF9vZGljdF9nZXRfaW5kZXgob2QsIGtleSk7CisgICAgaWYgKGkgPCAwKQorICAgICAgICByZXR1cm4gUHlFcnJfT2NjdXJyZWQoKSA/IC0xIDogMDsKKworICAgIGlmIChub2RlID09IE5VTEwpCisgICAgICAgIG5vZGUgPSBvZC0+b2RfZmFzdF9ub2Rlc1tpXTsKKyAgICBhc3NlcnQobm9kZSA9PSBvZC0+b2RfZmFzdF9ub2Rlc1tpXSk7CisgICAgaWYgKG5vZGUgPT0gTlVMTCkgeworICAgICAgICAvKiBMZXQgbGF0ZXIgY29kZSBkZWNpZGUgaWYgdGhpcyBpcyBhIEtleUVycm9yLiAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvLyBOb3cgY2xlYXIgdGhlIG5vZGUuCisgICAgb2QtPm9kX2Zhc3Rfbm9kZXNbaV0gPSBOVUxMOworICAgIF9vZGljdF9yZW1vdmVfbm9kZShvZCwgbm9kZSk7CisgICAgX29kaWN0bm9kZV9ERUFMTE9DKG5vZGUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX29kaWN0X2NsZWFyX25vZGVzKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIF9PRGljdE5vZGUgKm5vZGUsICpuZXh0OworCisgICAgaWYgKCFfb2RpY3RfRU1QVFkob2QpKSB7CisgICAgICAgIG5vZGUgPSBfb2RpY3RfRklSU1Qob2QpOworICAgICAgICB3aGlsZSAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBuZXh0ID0gX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgICAgICAgICAgX29kaWN0bm9kZV9ERUFMTE9DKG5vZGUpOworICAgICAgICAgICAgbm9kZSA9IG5leHQ7CisgICAgICAgIH0KKyAgICAgICAgX29kaWN0X0ZJUlNUKG9kKSA9IE5VTEw7CisgICAgICAgIF9vZGljdF9MQVNUKG9kKSA9IE5VTEw7CisgICAgfQorCisgICAgX29kaWN0X2ZyZWVfZmFzdF9ub2RlcyhvZCk7CisgICAgb2QtPm9kX2Zhc3Rfbm9kZXMgPSBOVUxMOworfQorCisvKiBUaGVyZSBpc24ndCBhbnkgbWVtb3J5IG1hbmFnZW1lbnQgb2Ygbm9kZXMgcGFzdCB0aGlzIHBvaW50LiAqLworI3VuZGVmIF9vZGljdG5vZGVfREVBTExPQworCitzdGF0aWMgaW50Citfb2RpY3Rfa2V5c19lcXVhbChQeU9EaWN0T2JqZWN0ICphLCBQeU9EaWN0T2JqZWN0ICpiKQoreworICAgIF9PRGljdE5vZGUgKm5vZGVfYSwgKm5vZGVfYjsKKworICAgIG5vZGVfYSA9IF9vZGljdF9GSVJTVChhKTsKKyAgICBub2RlX2IgPSBfb2RpY3RfRklSU1QoYik7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKG5vZGVfYSA9PSBOVUxMICYmIG5vZGVfYiA9PSBOVUxMKQorICAgICAgICAgICAgLyogc3VjY2VzczogaGl0IHRoZSBlbmQgb2YgZWFjaCBhdCB0aGUgc2FtZSB0aW1lICovCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgZWxzZSBpZiAobm9kZV9hID09IE5VTEwgfHwgbm9kZV9iID09IE5VTEwpCisgICAgICAgICAgICAvKiB1bmVxdWFsIGxlbmd0aCAqLworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHJlcyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopX29kaWN0bm9kZV9LRVkobm9kZV9hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopX29kaWN0bm9kZV9LRVkobm9kZV9iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRVEpOworICAgICAgICAgICAgaWYgKHJlcyA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlcyA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAvKiBvdGhlcndpc2UgaXQgbXVzdCBtYXRjaCwgc28gbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUgKi8KKyAgICAgICAgICAgIG5vZGVfYSA9IF9vZGljdG5vZGVfTkVYVChub2RlX2EpOworICAgICAgICAgICAgbm9kZV9iID0gX29kaWN0bm9kZV9ORVhUKG5vZGVfYik7CisgICAgICAgIH0KKyAgICB9Cit9CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT3JkZXJlZERpY3QgbWFwcGluZyBtZXRob2RzCisgKi8KKworLyogbXBfYXNzX3N1YnNjcmlwdDogX19zZXRpdGVtX18oKSBhbmQgX19kZWxpdGVtX18oKSAqLworCitzdGF0aWMgaW50CitvZGljdF9tcF9hc3Nfc3ViKFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCit7CisgICAgaWYgKHcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5T0RpY3RfRGVsSXRlbSgoUHlPYmplY3QgKilvZCwgdik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlPRGljdF9TZXRJdGVtKChQeU9iamVjdCAqKW9kLCB2LCB3KTsKK30KKworLyogdHBfYXNfbWFwcGluZyAqLworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBvZGljdF9hc19tYXBwaW5nID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbXBfbGVuZ3RoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm1wX3N1YnNjcmlwdCovCisgICAgKG9iam9iamFyZ3Byb2Mpb2RpY3RfbXBfYXNzX3N1YiwgICAgLyptcF9hc3Nfc3Vic2NyaXB0Ki8KK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogT3JkZXJlZERpY3QgbWV0aG9kcworICovCisKKy8qIF9fZGVsaXRlbV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2RlbGl0ZW1fX2RvY19fLCAib2QuX19kZWxpdGVtX18oeSkgPD09PiBkZWwgb2RbeV0iKTsKKworLyogX19lcV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2VxX19kb2NfXywKKyJvZC5fX2VxX18oeSkgPD09PiBvZD09eS4gIENvbXBhcmlzb24gdG8gYW5vdGhlciBPRCBpcyBvcmRlci1zZW5zaXRpdmUgXG5cCisgICAgICAgIHdoaWxlIGNvbXBhcmlzb24gdG8gYSByZWd1bGFyIG1hcHBpbmcgaXMgb3JkZXItaW5zZW5zaXRpdmUuXG5cCisgICAgICAgICIpOworCisvKiBmb3J3YXJkICovCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdF9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9lcShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgcmV0dXJuIG9kaWN0X3JpY2hjb21wYXJlKGEsIGIsIFB5X0VRKTsKK30KKworLyogX19pbml0X18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfaW5pdF9fZG9jX18sCisiSW5pdGlhbGl6ZSBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuICBUaGUgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzXG5cCisgICAgICAgIHJlZ3VsYXIgZGljdGlvbmFyaWVzLCBidXQga2V5d29yZCBhcmd1bWVudHMgYXJlIG5vdCByZWNvbW1lbmRlZCBiZWNhdXNlXG5cCisgICAgICAgIHRoZWlyIGluc2VydGlvbiBvcmRlciBpcyBhcmJpdHJhcnkuXG5cCitcblwKKyAgICAgICAgIik7CisKKy8qIGZvcndhcmQgKi8KK3N0YXRpYyBpbnQgb2RpY3RfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKworLyogX19pdGVyX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfaXRlcl9fZG9jX18sICJvZC5fX2l0ZXJfXygpIDw9PT4gaXRlcihvZCkiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RfaXRlcihQeU9EaWN0T2JqZWN0ICpzZWxmKTsgIC8qIGZvcndhcmQgKi8KKworLyogX19uZV9fKCkgKi8KKworLyogTWFwcGluZy5fX25lX18oKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X25lX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfbmUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQoreworICAgIHJldHVybiBvZGljdF9yaWNoY29tcGFyZShhLCBiLCBQeV9ORSk7Cit9CisKKy8qIF9fcmVwcl9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3JlcHJfX2RvY19fLCAib2QuX19yZXByX18oKSA8PT0+IHJlcHIob2QpIik7CisKK3N0YXRpYyBQeU9iamVjdCAqIG9kaWN0X3JlcHIoUHlPRGljdE9iamVjdCAqc2VsZik7ICAvKiBmb3J3YXJkICovCisKKy8qIF9fc2V0aXRlbV9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3NldGl0ZW1fX2RvY19fLCAib2QuX19zZXRpdGVtX18oaSwgeSkgPD09PiBvZFtpXT15Iik7CisKKy8qIGZyb21rZXlzKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2Zyb21rZXlzX19kb2NfXywKKyJPRC5mcm9ta2V5cyhTWywgdl0pIC0+IE5ldyBvcmRlcmVkIGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gUy5cblwKKyAgICAgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHZhbHVlIGRlZmF1bHRzIHRvIE5vbmUuXG5cCitcblwKKyAgICAgICAgIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9mcm9ta2V5cyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgInZhbHVlIiwgMH07CisgICAgUHlPYmplY3QgKnNlcTsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBQeV9Ob25lOworCisgICAgLyogYm90aCBib3Jyb3dlZCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98Tzpmcm9ta2V5cyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VxLCAmdmFsdWUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5RGljdF9Gcm9tS2V5cyhjbHMsIHNlcSwgdmFsdWUpOworfQorCisvKiBfX3NpemVvZl9fKCkgKi8KKworLyogT3JkZXJlZERpY3QuX19zaXplb2ZfXygpIGRvZXMgbm90IGhhdmUgYSBkb2NzdHJpbmcuICovCitQeURvY19TVFJWQVIob2RpY3Rfc2l6ZW9mX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3Rfc2l6ZW9mKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIFB5T2JqZWN0ICpweWxvbmc7CisgICAgUHlfc3NpemVfdCByZXMsIHRlbXA7CisKKyAgICBweWxvbmcgPSBfUHlEaWN0X1NpemVPZigoUHlEaWN0T2JqZWN0ICopb2QpOworICAgIGlmIChweWxvbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlMb25nX0FzU3NpemVfdChweWxvbmcpOworICAgIFB5X0RFQ1JFRihweWxvbmcpOworICAgIGlmIChyZXMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXMgKz0gc2l6ZW9mKFB5T0RpY3RPYmplY3QpIC0gc2l6ZW9mKFB5RGljdE9iamVjdCk7CisKKyAgICAvKiBpbnN0YW5jZSBkaWN0ICovCisgICAgcHlsb25nID0gX1B5RGljdF9TaXplT2YoKFB5RGljdE9iamVjdCAqKW9kLT5vZF9pbnN0X2RpY3QpOworICAgIGlmIChweWxvbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdGVtcCA9IFB5TG9uZ19Bc1NzaXplX3QocHlsb25nKTsKKyAgICBQeV9ERUNSRUYocHlsb25nKTsKKyAgICBpZiAodGVtcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgKz0gdGVtcDsKKworICAgIHJlcyArPSBzaXplb2YoX09EaWN0Tm9kZSkgKiBfb2RpY3RfRkFTVF9TSVpFKG9kKTsgIC8qIG9kX2Zhc3Rfbm9kZXMgKi8KKyAgICBpZiAoIV9vZGljdF9FTVBUWShvZCkpIHsKKyAgICAgICAgcmVzICs9IHNpemVvZihfT0RpY3ROb2RlKSAqIFB5T0RpY3RfU0laRShvZCk7ICAvKiBsaW5rZWQtbGlzdCAqLworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7Cit9CisKKy8qIF9fcmVkdWNlX18oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfcmVkdWNlX19kb2NfXywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmciKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X3JlZHVjZShyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKKyAgICBQeU9iamVjdCAqdmFycyA9IE5VTEwsICpucyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqY2xzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlbXNfaXRlciA9IE5VTEwsICppdGVtcyA9IE5VTEwsICphcmdzID0gTlVMTDsKKworICAgIC8qIGNhcHR1cmUgYW55IGluc3RhbmNlIHN0YXRlICovCisgICAgdmFycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopb2QsICZQeUlkX19fZGljdF9fKTsKKyAgICBpZiAodmFycyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICplbXB0eSwgKm9kX3ZhcnMsICppdGVyYXRvciwgKmtleTsKKyAgICAgICAgUHlfc3NpemVfdCBuc19sZW47CisKKyAgICAgICAgLyogb2QuX19kaWN0X18gaXNuJ3QgbmVjZXNzYXJpbHkgYSBkaWN0Li4uICovCisgICAgICAgIG5zID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKil2YXJzLCAiY29weSIsIE5VTEwpOworICAgICAgICBpZiAobnMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgZW1wdHkgPSBQeU9EaWN0X05ldygpOworICAgICAgICBpZiAoZW1wdHkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgb2RfdmFycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZW1wdHksICZQeUlkX19fZGljdF9fKTsKKyAgICAgICAgUHlfREVDUkVGKGVtcHR5KTsKKyAgICAgICAgaWYgKG9kX3ZhcnMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKG9kX3ZhcnMpOworICAgICAgICBQeV9ERUNSRUYob2RfdmFycyk7CisgICAgICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworCisgICAgICAgIHdoaWxlICggKGtleSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkgKSB7CisgICAgICAgICAgICBpZiAoUHlNYXBwaW5nX0hhc0tleShucywga2V5KSAmJiBQeU1hcHBpbmdfRGVsSXRlbShucywga2V5KSAhPSAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICBuc19sZW4gPSBQeU9iamVjdF9MZW5ndGgobnMpOworICAgICAgICBpZiAobnNfbGVuID09IC0xKQorICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICBpZiAoIW5zX2xlbikgeworICAgICAgICAgICAgLyogbm90aGluZyBub3ZlbCB0byBwaWNrbGUgaW4gb2QuX19kaWN0X18gKi8KKyAgICAgICAgICAgIFB5X0NMRUFSKG5zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIGJ1aWxkIHRoZSByZXN1bHQgKi8KKyAgICBjbHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKW9kLCAmUHlJZF9fX2NsYXNzX18pOworICAgIGlmIChjbHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilvZCwgIml0ZW1zIiwgTlVMTCk7CisgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGl0ZW1zX2l0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKKyAgICBpZiAoaXRlbXNfaXRlciA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soNSwgY2xzLCBhcmdzLCBucyA/IG5zIDogUHlfTm9uZSwgUHlfTm9uZSwgaXRlbXNfaXRlcik7CisKK0RvbmU6CisgICAgUHlfWERFQ1JFRih2YXJzKTsKKyAgICBQeV9YREVDUkVGKG5zKTsKKyAgICBQeV9YREVDUkVGKGNscyk7CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICBQeV9YREVDUkVGKGl0ZW1zKTsKKyAgICBQeV9YREVDUkVGKGl0ZW1zX2l0ZXIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogc2V0ZGVmYXVsdCgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9zZXRkZWZhdWx0X19kb2NfXywKKyAgICAgICAgIm9kLnNldGRlZmF1bHQoa1ssZF0pIC0+IG9kLmdldChrLGQpLCBhbHNvIHNldCBvZFtrXT1kIGlmIGsgbm90IGluIG9kIik7CisKKy8qIFNraXBzIF9fbWlzc2luZ19fKCkgY2FsbHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3Rfc2V0ZGVmYXVsdChyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAiZGVmYXVsdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKKworICAgIC8qIGJvdGggYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86c2V0ZGVmYXVsdCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmZmFpbG9iaikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPRGljdF9HZXRJdGVtV2l0aEVycm9yKG9kLCBrZXkpOyAgLyogYm9ycm93ZWQgKi8KKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGFzc2VydChfb2RpY3RfZmluZF9ub2RlKG9kLCBrZXkpID09IE5VTEwpOworICAgICAgICAgICAgaWYgKFB5T0RpY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZCwga2V5LCBmYWlsb2JqKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFpbG9iajsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmFpbG9iaik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGV4aXN0cyA9IFB5U2VxdWVuY2VfQ29udGFpbnMoKFB5T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIGlmIChleGlzdHMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChleGlzdHMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEl0ZW0oKFB5T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlPYmplY3RfU2V0SXRlbSgoUHlPYmplY3QgKilvZCwga2V5LCBmYWlsb2JqKSA+PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBmYWlsb2JqOworICAgICAgICAgICAgUHlfSU5DUkVGKGZhaWxvYmopOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogcG9wKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3BvcF9fZG9jX18sCisib2QucG9wKGtbLGRdKSAtPiB2LCByZW1vdmUgc3BlY2lmaWVkIGtleSBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG5cCisgICAgICAgIHZhbHVlLiAgSWYga2V5IGlzIG5vdCBmb3VuZCwgZCBpcyByZXR1cm5lZCBpZiBnaXZlbiwgb3RoZXJ3aXNlIEtleUVycm9yXG5cCisgICAgICAgIGlzIHJhaXNlZC5cblwKK1xuXAorICAgICAgICAiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogX29kaWN0X3BvcGtleShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworLyogU2tpcHMgX19taXNzaW5nX18oKSBjYWxscy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9wb3AoUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtleSIsICJkZWZhdWx0IiwgMH07CisgICAgUHlPYmplY3QgKmtleSwgKmZhaWxvYmogPSBOVUxMOworCisgICAgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86cG9wIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrZXksICZmYWlsb2JqKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gX29kaWN0X3BvcGtleShvZCwga2V5LCBmYWlsb2JqKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19vZGljdF9wb3BrZXkoUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZmFpbG9iaikKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CisKKyAgICAvKiBQb3AgdGhlIG5vZGUgZmlyc3QgdG8gYXZvaWQgYSBwb3NzaWJsZSBkaWN0IHJlc2l6ZSAoZHVlIHRvCisgICAgICAgZXZhbCBsb29wIHJlZW50cmFuY3kpIGFuZCBjb21wbGljYXRpb25zIGR1ZSB0byBoYXNoIGNvbGxpc2lvbgorICAgICAgIHJlc29sdXRpb24uICovCisgICAgbm9kZSA9IF9vZGljdF9maW5kX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwga2V5KTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgcmVzID0gX29kaWN0X2NsZWFyX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwgbm9kZSwga2V5KTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTm93IGRlbGV0ZSB0aGUgdmFsdWUgZnJvbSB0aGUgZGljdC4gKi8KKyAgICBpZiAoUHlPRGljdF9DaGVja0V4YWN0KG9kKSkgeworICAgICAgICBpZiAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBjb3VsZCBkbyBQeURpY3RfR2V0SXRlbSgpIGFuZCBQeURpY3RfRGVsSXRlbSgpIGRpcmVjdGx5Li4uICovCisgICAgICAgICAgICB2YWx1ZSA9IF9QeURpY3RfUG9wKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBmYWlsb2JqKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGV4aXN0cyA9IFB5U2VxdWVuY2VfQ29udGFpbnMob2QsIGtleSk7CisgICAgICAgIGlmIChleGlzdHMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChleGlzdHMpIHsKKyAgICAgICAgICAgIHZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShvZCwga2V5KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0RlbEl0ZW0ob2QsIGtleSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfQ0xFQVIodmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEFwcGx5IHRoZSBmYWxsYmFjayB2YWx1ZSwgaWYgbmVjZXNzYXJ5LiAqLworICAgIGlmICh2YWx1ZSA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChmYWlsb2JqKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZhaWxvYmo7CisgICAgICAgICAgICBQeV9JTkNSRUYoZmFpbG9iaik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKKy8qIHBvcGl0ZW0oKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfcG9waXRlbV9fZG9jX18sCisib2QucG9waXRlbSgpIC0+IChrLCB2KSwgcmV0dXJuIGFuZCByZW1vdmUgYSAoa2V5LCB2YWx1ZSkgcGFpci5cblwKKyAgICAgICAgUGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgbGFzdCBpcyB0cnVlIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuXG5cCitcblwKKyAgICAgICAgIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9wb3BpdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJsYXN0IiwgMH07CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqaXRlbSA9IE5VTEwsICpsYXN0ID0gTlVMTDsKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIGludCBwb3MgPSAtMTsKKworICAgIGlmIChfb2RpY3RfRU1QVFkoKFB5T0RpY3RPYmplY3QgKilvZCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZGljdGlvbmFyeSBpcyBlbXB0eSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBwdWxsIHRoZSBpdGVtICovCisKKyAgICAvKiBib3Jyb3dlZCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnBvcGl0ZW0iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxhc3QpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChsYXN0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IGlzX3RydWU7CisgICAgICAgIGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUobGFzdCk7CisgICAgICAgIGlmIChpc190cnVlID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHBvcyA9IGlzX3RydWUgPyAtMSA6IDA7CisgICAgfQorICAgIGlmIChwb3MgPT0gMCkKKyAgICAgICAgbm9kZSA9IF9vZGljdF9GSVJTVCgoUHlPRGljdE9iamVjdCAqKW9kKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUgPSBfb2RpY3RfTEFTVCgoUHlPRGljdE9iamVjdCAqKW9kKTsKKworICAgIGtleSA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgIFB5X0lOQ1JFRihrZXkpOworICAgIHZhbHVlID0gX29kaWN0X3BvcGtleShvZCwga2V5LCBOVUxMKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaXRlbSA9IFB5VHVwbGVfUGFjaygyLCBrZXksIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiBpdGVtOworfQorCisvKiBrZXlzKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcua2V5cygpIGRvZXMgbm90IGhhdmUgYSBkb2NzdHJpbmcuICovCitQeURvY19TVFJWQVIob2RpY3Rfa2V5c19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RrZXlzX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiB2YWx1ZXMoKSAqLworCisvKiBNdXRhYmxlTWFwcGluZy52YWx1ZXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3ZhbHVlc19fZG9jX18sICIiKTsKKworc3RhdGljIFB5T2JqZWN0ICogb2RpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpvZCk7ICAvKiBmb3J3YXJkICovCisKKy8qIGl0ZW1zKCkgKi8KKworLyogTXV0YWJsZU1hcHBpbmcuaXRlbXMoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X2l0ZW1zX19kb2NfXywgIiIpOworCitzdGF0aWMgUHlPYmplY3QgKiBvZGljdGl0ZW1zX25ldyhQeU9iamVjdCAqb2QpOyAgLyogZm9yd2FyZCAqLworCisvKiB1cGRhdGUoKSAqLworCisvKiBNdXRhYmxlTWFwcGluZy51cGRhdGUoKSBkb2VzIG5vdCBoYXZlIGEgZG9jc3RyaW5nLiAqLworUHlEb2NfU1RSVkFSKG9kaWN0X3VwZGF0ZV9fZG9jX18sICIiKTsKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogbXV0YWJsZW1hcHBpbmdfdXBkYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworCisjZGVmaW5lIG9kaWN0X3VwZGF0ZSBtdXRhYmxlbWFwcGluZ191cGRhdGUKKworLyogY2xlYXIoKSAqLworCitQeURvY19TVFJWQVIob2RpY3RfY2xlYXJfX2RvY19fLAorICAgICAgICAgICAgICJvZC5jbGVhcigpIC0+IE5vbmUuICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gb2QuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9jbGVhcihyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBQeURpY3RfQ2xlYXIoKFB5T2JqZWN0ICopb2QpOworICAgIF9vZGljdF9jbGVhcl9ub2RlcyhvZCk7CisgICAgX29kaWN0X0ZJUlNUKG9kKSA9IE5VTEw7CisgICAgX29kaWN0X0xBU1Qob2QpID0gTlVMTDsKKyAgICBpZiAoX29kaWN0X3Jlc2l6ZShvZCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogY29weSgpICovCisKK1B5RG9jX1NUUlZBUihvZGljdF9jb3B5X19kb2NfXywgIm9kLmNvcHkoKSAtPiBhIHNoYWxsb3cgY29weSBvZiBvZCIpOworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfY29weShyZWdpc3RlciBQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICBfT0RpY3ROb2RlICpub2RlOworICAgIFB5T2JqZWN0ICpvZF9jb3B5OworCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpCisgICAgICAgIG9kX2NvcHkgPSBQeU9EaWN0X05ldygpOworICAgIGVsc2UKKyAgICAgICAgb2RfY29weSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopUHlfVFlQRShvZCksIE5VTEwpOworICAgIGlmIChvZF9jb3B5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChvZCkpIHsKKyAgICAgICAgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBfb2RpY3Rub2RlX0tFWShub2RlKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IF9vZGljdG5vZGVfVkFMVUUobm9kZSwgb2QpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoUHlPRGljdF9TZXRJdGVtKChQeU9iamVjdCAqKW9kX2NvcHksIGtleSwgdmFsdWUpICE9IDApCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfb2RpY3RfRk9SRUFDSChvZCwgbm9kZSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0oKFB5T2JqZWN0ICopb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfS0VZKG5vZGUpKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X1NldEl0ZW0oKFB5T2JqZWN0ICopb2RfY29weSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9LRVkobm9kZSksIHZhbHVlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvZF9jb3B5OworCitmYWlsOgorICAgIFB5X0RFQ1JFRihvZF9jb3B5KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogX19yZXZlcnNlZF9fKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X3JldmVyc2VkX19kb2NfXywgIm9kLl9fcmV2ZXJzZWRfXygpIDw9PT4gcmV2ZXJzZWQob2QpIik7CisKKyNkZWZpbmUgX29kaWN0X0lURVJfUkVWRVJTRUQgMQorI2RlZmluZSBfb2RpY3RfSVRFUl9LRVlTIDIKKyNkZWZpbmUgX29kaWN0X0lURVJfVkFMVUVTIDQKKworLyogZm9yd2FyZCAqLworc3RhdGljIFB5T2JqZWN0ICogb2RpY3RpdGVyX25ldyhQeU9EaWN0T2JqZWN0ICosIGludCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9yZXZlcnNlZChQeU9EaWN0T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldyhvZCwgX29kaWN0X0lURVJfS0VZU3xfb2RpY3RfSVRFUl9SRVZFUlNFRCk7Cit9CisKKy8qIG1vdmVfdG9fZW5kKCkgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X21vdmVfdG9fZW5kX19kb2NfXywKKyJNb3ZlIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gdGhlIGVuZCAob3IgYmVnaW5uaW5nIGlmIGxhc3Q9PUZhbHNlKS5cblwKK1xuXAorICAgICAgICBSYWlzZXMgS2V5RXJyb3IgaWYgdGhlIGVsZW1lbnQgZG9lcyBub3QgZXhpc3QuXG5cCisgICAgICAgIFdoZW4gbGFzdD1UcnVlLCBhY3RzIGxpa2UgYSBmYXN0IHZlcnNpb24gb2Ygc2VsZltrZXldPXNlbGYucG9wKGtleSkuXG5cCitcblwKKyAgICAgICAgIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9tb3ZlX3RvX2VuZChQeU9EaWN0T2JqZWN0ICpvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZXkiLCAibGFzdCIsIDB9OworICAgIFB5T2JqZWN0ICprZXksICpsYXN0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IC0xOworCisgICAgLyogYm90aCBib3Jyb3dlZCAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98Tzptb3ZlX3RvX2VuZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5LCAmbGFzdCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChfb2RpY3RfRU1QVFkob2QpKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19LZXlFcnJvciwga2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChsYXN0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IGlzX3RydWU7CisgICAgICAgIGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUobGFzdCk7CisgICAgICAgIGlmIChpc190cnVlID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHBvcyA9IGlzX3RydWUgPyAtMSA6IDA7CisgICAgfQorICAgIGlmIChwb3MgPT0gMCkgeworICAgICAgICAvKiBPbmx5IG1vdmUgaWYgbm90IGFscmVhZHkgdGhlIGZpcnN0IG9uZS4gKi8KKyAgICAgICAgUHlPYmplY3QgKmZpcnN0X2tleSA9IF9vZGljdG5vZGVfS0VZKF9vZGljdF9GSVJTVChvZCkpOworICAgICAgICBpbnQgbm90X2VxdWFsID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGtleSwgZmlyc3Rfa2V5LCBQeV9ORSk7CisgICAgICAgIGlmIChub3RfZXF1YWwgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG5vdF9lcXVhbCkgeworICAgICAgICAgICAgX09EaWN0Tm9kZSAqbm9kZSA9IF9vZGljdF9wb3Bfbm9kZShvZCwgTlVMTCwga2V5KTsKKyAgICAgICAgICAgIGlmIChub2RlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBfb2RpY3RfYWRkX2hlYWQob2QsIG5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfS2V5RXJyb3IsIGtleSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAocG9zID09IC0xKSB7CisgICAgICAgIC8qIE9ubHkgbW92ZSBpZiBub3QgYWxyZWFkeSB0aGUgbGFzdCBvbmUuICovCisgICAgICAgIFB5T2JqZWN0ICpsYXN0X2tleSA9IF9vZGljdG5vZGVfS0VZKF9vZGljdF9MQVNUKG9kKSk7CisgICAgICAgIGludCBub3RfZXF1YWwgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woa2V5LCBsYXN0X2tleSwgUHlfTkUpOworICAgICAgICBpZiAobm90X2VxdWFsID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChub3RfZXF1YWwpIHsKKyAgICAgICAgICAgIF9PRGljdE5vZGUgKm5vZGUgPSBfb2RpY3RfcG9wX25vZGUob2QsIE5VTEwsIGtleSk7CisgICAgICAgICAgICBpZiAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgX29kaWN0X2FkZF90YWlsKG9kLCBub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKKy8qIHRwX21ldGhvZHMgKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0X21ldGhvZHNbXSA9IHsKKworICAgIC8qIGV4cGxpY2l0bHkgZGVmaW5lZCBzbyB3ZSBjYW4gYWxpZ24gZG9jc3RyaW5ncyB3aXRoCisgICAgICogY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgKi8KKyAgICB7Il9fZGVsaXRlbV9fIiwgICAgIChQeUNGdW5jdGlvbilvZGljdF9tcF9hc3Nfc3ViLCAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2RlbGl0ZW1fX2RvY19ffSwKKyAgICB7Il9fZXFfXyIsICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9lcSwgICAgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2VxX19kb2NfX30sCisgICAgeyJfX2luaXRfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfaW5pdCwgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9pbml0X19kb2NfX30sCisgICAgeyJfX2l0ZXJfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfaXRlciwgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9pdGVyX19kb2NfX30sCisgICAgeyJfX25lX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pb2RpY3RfbmUsICAgICAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9uZV9fZG9jX199LAorICAgIHsiX19yZXByX18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3JlcHIsICAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfcmVwcl9fZG9jX199LAorICAgIHsiX19zZXRpdGVtX18iLCAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X21wX2Fzc19zdWIsICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3Rfc2V0aXRlbV9fZG9jX199LAorICAgIHsiZnJvbWtleXMiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2Zyb21rZXlzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTIHwgTUVUSF9DTEFTUywgb2RpY3RfZnJvbWtleXNfX2RvY19ffSwKKworICAgIC8qIG92ZXJyaWRkZW4gZGljdCBtZXRob2RzICovCisgICAgeyJfX3NpemVvZl9fIiwgICAgICAoUHlDRnVuY3Rpb24pb2RpY3Rfc2l6ZW9mLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9zaXplb2ZfX2RvY19ffSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilvZGljdF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3JlZHVjZV9fZG9jX199LAorICAgIHsic2V0ZGVmYXVsdCIsICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3NldGRlZmF1bHQsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIG9kaWN0X3NldGRlZmF1bHRfX2RvY19ffSwKKyAgICB7InBvcCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9wb3AsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIG9kaWN0X3BvcF9fZG9jX199LAorICAgIHsicG9waXRlbSIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X3BvcGl0ZW0sCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIG9kaWN0X3BvcGl0ZW1fX2RvY19ffSwKKyAgICB7ImtleXMiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdGtleXNfbmV3LCAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2tleXNfX2RvY19ffSwKKyAgICB7InZhbHVlcyIsICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdHZhbHVlc19uZXcsICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X3ZhbHVlc19fZG9jX199LAorICAgIHsiaXRlbXMiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0aXRlbXNfbmV3LCAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfaXRlbXNfX2RvY19ffSwKKyAgICB7InVwZGF0ZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF91cGRhdGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgIG9kaWN0X3VwZGF0ZV9fZG9jX199LAorICAgIHsiY2xlYXIiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X2NsZWFyLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgb2RpY3RfY2xlYXJfX2RvY19ffSwKKyAgICB7ImNvcHkiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilvZGljdF9jb3B5LCAgICAgICAgTUVUSF9OT0FSR1MsCisgICAgIG9kaWN0X2NvcHlfX2RvY19ffSwKKworICAgIC8qIG5ldyBtZXRob2RzICovCisgICAgeyJfX3JldmVyc2VkX18iLCAgICAoUHlDRnVuY3Rpb24pb2RpY3RfcmV2ZXJzZWQsICAgIE1FVEhfTk9BUkdTLAorICAgICBvZGljdF9yZXZlcnNlZF9fZG9jX199LAorICAgIHsibW92ZV90b19lbmQiLCAgICAgKFB5Q0Z1bmN0aW9uKW9kaWN0X21vdmVfdG9fZW5kLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBvZGljdF9tb3ZlX3RvX2VuZF9fZG9jX199LAorCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9yZGVyZWREaWN0IG1lbWJlcnMKKyAqLworCisvKiB0cF9tZW1iZXJzICovCisKK3N0YXRpYyBQeU1lbWJlckRlZiBvZGljdF9tZW1iZXJzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF9pbnN0X2RpY3QpLCBSRUFET05MWX0sCisgICAgezB9Cit9OworCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE9yZGVyZWREaWN0IHR5cGUgc2xvdCBtZXRob2RzCisgKi8KKworLyogdHBfZGVhbGxvYyAqLworCitzdGF0aWMgdm9pZAorb2RpY3RfZGVhbGxvYyhQeU9EaWN0T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihzZWxmKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPm9kX2luc3RfZGljdCk7CisgICAgaWYgKHNlbGYtPm9kX3dlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopc2VsZik7CisKKyAgICBfb2RpY3RfY2xlYXJfbm9kZXMoc2VsZik7CisgICAgUHlfVFJBU0hDQU5fU0FGRV9FTkQoc2VsZik7CisKKyAgICAvKiBtdXN0IGJlIGxhc3QgKi8KKyAgICBQeURpY3RfVHlwZS50cF9kZWFsbG9jKChQeU9iamVjdCAqKXNlbGYpOworfTsKKworLyogdHBfcmVwciAqLworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RfcmVwcihQeU9EaWN0T2JqZWN0ICpzZWxmKQoreworICAgIGludCBpOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdHN0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CisgICAgUHlPYmplY3QgKnBpZWNlcyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqY2xzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2xhc3NuYW1lID0gTlVMTCwgKmZvcm1hdCA9IE5VTEwsICphcmdzID0gTlVMTDsKKworICAgIGkgPSBQeV9SZXByRW50ZXIoKFB5T2JqZWN0ICopc2VsZik7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgICByZXR1cm4gaSA+IDAgPyBQeVVuaWNvZGVfRnJvbVN0cmluZygiLi4uIikgOiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9EaWN0X1NJWkUoc2VsZikgPT0gMCkgeworICAgICAgICAvKiAiT3JkZXJlZERpY3QoKSIgKi8KKyAgICAgICAgZ290byBGaW5pc2g7CisgICAgfQorCisgICAgaWYgKFB5T0RpY3RfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBfT0RpY3ROb2RlICpub2RlOworICAgICAgICBwaWVjZXMgPSBQeUxpc3RfTmV3KFB5T0RpY3RfU0laRShzZWxmKSk7CisgICAgICAgIGlmIChwaWVjZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICBfb2RpY3RfRk9SRUFDSChzZWxmLCBub2RlKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcGFpcjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBfb2RpY3Rub2RlX0tFWShub2RlKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IF9vZGljdG5vZGVfVkFMVUUobm9kZSwgc2VsZik7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhaXIgPSBQeVR1cGxlX1BhY2soMiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAocGFpciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKKworICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHBpZWNlcywgKytjb3VudCwgcGFpcik7ICAvKiBzdGVhbHMgcmVmZXJlbmNlICovCisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgIml0ZW1zIiwgTlVMTCk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICBwaWVjZXMgPSBQeVNlcXVlbmNlX0xpc3QoaXRlbXMpOworICAgICAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgICAgICBpZihwaWVjZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICB9CisKK0ZpbmlzaDoKKyAgICBjbHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX19fY2xhc3NfXyk7CisgICAgaWYgKGNscyA9PSBOVUxMKQorICAgICAgICBnb3RvIERvbmU7CisgICAgY2xhc3NuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmFtZV9fKTsKKyAgICBpZiAoY2xhc3NuYW1lID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIGlmIChwaWVjZXMgPT0gTlVMTCkgeworICAgICAgICBmb3JtYXRzdHIgPSAiJXMoKSI7CisgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgY2xhc3NuYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvcm1hdHN0ciA9ICIlcyglcikiOworICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIGNsYXNzbmFtZSwgcGllY2VzKTsKKyAgICB9CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgZ290byBEb25lOworCisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoZm9ybWF0c3RyKTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gRG9uZTsKKworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKK0RvbmU6CisgICAgUHlfWERFQ1JFRihwaWVjZXMpOworICAgIFB5X1hERUNSRUYoY2xzKTsKKyAgICBQeV9YREVDUkVGKGNsYXNzbmFtZSk7CisgICAgUHlfWERFQ1JFRihmb3JtYXQpOworICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKXNlbGYpOworICAgIHJldHVybiByZXN1bHQ7Cit9OworCisvKiB0cF9kb2MgKi8KKworUHlEb2NfU1RSVkFSKG9kaWN0X2RvYywKKyAgICAgICAgIkRpY3Rpb25hcnkgdGhhdCByZW1lbWJlcnMgaW5zZXJ0aW9uIG9yZGVyIik7CisKKy8qIHRwX3RyYXZlcnNlICovCisKK3N0YXRpYyBpbnQKK29kaWN0X3RyYXZlcnNlKFB5T0RpY3RPYmplY3QgKm9kLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvZC0+b2RfaW5zdF9kaWN0KTsKKyAgICBQeV9WSVNJVChvZC0+b2Rfd2Vha3JlZmxpc3QpOworICAgIHJldHVybiBQeURpY3RfVHlwZS50cF90cmF2ZXJzZSgoUHlPYmplY3QgKilvZCwgdmlzaXQsIGFyZyk7Cit9CisKKy8qIHRwX2NsZWFyICovCisKK3N0YXRpYyBpbnQKK29kaWN0X3RwX2NsZWFyKFB5T0RpY3RPYmplY3QgKm9kKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlfQ0xFQVIob2QtPm9kX2luc3RfZGljdCk7CisgICAgUHlfQ0xFQVIob2QtPm9kX3dlYWtyZWZsaXN0KTsKKyAgICByZXMgPSBvZGljdF9jbGVhcihvZCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIHRwX3JpY2hjb21wYXJlICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdF9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK3sKKyAgICBpZiAoIVB5T0RpY3RfQ2hlY2sodikgfHwgIVB5RGljdF9DaGVjayh3KSkgeworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgfQorCisgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXMsICpjbXA7CisgICAgICAgIGludCBlcTsKKworICAgICAgICBjbXAgPSBQeURpY3RfVHlwZS50cF9yaWNoY29tcGFyZSh2LCB3LCBvcCk7CisgICAgICAgIGlmIChjbXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5T0RpY3RfQ2hlY2sodykpCisgICAgICAgICAgICByZXR1cm4gY21wOworICAgICAgICBpZiAob3AgPT0gUHlfRVEgJiYgY21wID09IFB5X0ZhbHNlKQorICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgaWYgKG9wID09IFB5X05FICYmIGNtcCA9PSBQeV9UcnVlKQorICAgICAgICAgICAgcmV0dXJuIGNtcDsKKyAgICAgICAgUHlfREVDUkVGKGNtcCk7CisKKyAgICAgICAgLyogVHJ5IGNvbXBhcmluZyBvZGljdCBrZXlzLiAqLworICAgICAgICBlcSA9IF9vZGljdF9rZXlzX2VxdWFsKChQeU9EaWN0T2JqZWN0ICopdiwgKFB5T0RpY3RPYmplY3QgKil3KTsKKyAgICAgICAgaWYgKGVxIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHJlcyA9IChlcSA9PSAob3AgPT0gUHlfRVEpKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KK307CisKKy8qIHRwX2l0ZXIgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X2l0ZXIoUHlPRGljdE9iamVjdCAqb2QpCit7CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcob2QsIF9vZGljdF9JVEVSX0tFWVMpOworfTsKKworLyogdHBfaW5pdCAqLworCitzdGF0aWMgaW50CitvZGljdF9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9zc2l6ZV90IGxlbiA9IFB5T2JqZWN0X0xlbmd0aChhcmdzKTsKKworICAgIGlmIChsZW4gPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobGVuID4gMSkgeworICAgICAgICBjaGFyICptc2cgPSAiZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkIjsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgbXNnLCBsZW4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogX19pbml0X18oKSB0cmlnZ2VyaW5nIHVwZGF0ZSgpIGlzIGp1c3QgdGhlIHdheSB0aGluZ3MgYXJlISAqLworICAgIHJlcyA9IG9kaWN0X3VwZGF0ZShzZWxmLCBhcmdzLCBrd2RzKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCisvKiB0cF9uZXcgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBQeU9EaWN0T2JqZWN0ICpvZDsKKworICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBvZCA9IChQeU9EaWN0T2JqZWN0ICopUHlEaWN0X1R5cGUudHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmIChvZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2QtPm9kX2luc3RfZGljdCA9IGRpY3Q7CisgICAgLyogdHlwZSBjb25zdHJ1Y3RvciBmaWxscyB0aGUgbWVtb3J5IHdpdGggemVyb3MgKHNlZQorICAgICAgIFB5VHlwZV9HZW5lcmljQWxsb2MoKSksIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHRoZW0gdG8gemVybyBhZ2FpbiAqLworICAgIGlmIChfb2RpY3RfcmVzaXplKG9kKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG9kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCopb2Q7Cit9CisKKy8qIFB5T0RpY3RfVHlwZSAqLworCitQeVR5cGVPYmplY3QgUHlPRGljdF9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiwgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5T0RpY3RPYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3Ipb2RpY3RfZGVhbGxvYywgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpb2RpY3RfcmVwciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmb2RpY3RfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgb2RpY3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW9kaWN0X3RyYXZlcnNlLCAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpb2RpY3RfdHBfY2xlYXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIChyaWNoY21wZnVuYylvZGljdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF93ZWFrcmVmbGlzdCksICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKW9kaWN0X2l0ZXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIG9kaWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG9kaWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgJlB5RGljdF9UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKFB5T0RpY3RPYmplY3QsIG9kX2luc3RfZGljdCksICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylvZGljdF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAobmV3ZnVuYylvZGljdF9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiB0aGUgcHVibGljIE9yZGVyZWREaWN0IEFQSQorICovCisKK1B5T2JqZWN0ICoKK1B5T0RpY3RfTmV3KHZvaWQpIHsKKyAgICByZXR1cm4gb2RpY3RfbmV3KCZQeU9EaWN0X1R5cGUsIE5VTEwsIE5VTEwpOworfTsKKworaW50CitQeU9EaWN0X1NldEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpIHsKKyAgICBpbnQgcmVzID0gUHlEaWN0X1NldEl0ZW0ob2QsIGtleSwgdmFsdWUpOworICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICByZXMgPSBfb2RpY3RfYWRkX25ld19ub2RlKChQeU9EaWN0T2JqZWN0ICopb2QsIGtleSk7CisgICAgICAgIC8qIFhYWCBSZXZlcnQgc2V0dGluZyB0aGUgdmFsdWUgb24gdGhlIGRpY3Q/ICovCisgICAgfQorICAgIHJldHVybiByZXM7Cit9OworCitpbnQKK1B5T0RpY3RfRGVsSXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpIHsKKyAgICBpbnQgcmVzID0gX29kaWN0X2NsZWFyX25vZGUoKFB5T0RpY3RPYmplY3QgKilvZCwgTlVMTCwga2V5KTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeURpY3RfRGVsSXRlbShvZCwga2V5KTsKK307CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIE9yZGVyZWREaWN0IHZpZXdzIChrZXlzL3ZhbHVlcy9pdGVtcykKKyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBraW5kOworICAgIFB5T0RpY3RPYmplY3QgKmRpX29kaWN0OworICAgIFB5X3NzaXplX3QgZGlfc2l6ZTsKKyAgICBzaXplX3QgZGlfc3RhdGU7CisgICAgUHlPYmplY3QgKmRpX2N1cnJlbnQ7CisgICAgUHlPYmplY3QgKmRpX3Jlc3VsdDsgLyogcmV1c2FibGUgcmVzdWx0IHR1cGxlIGZvciBpdGVyaXRlbXMgKi8KK30gb2RpY3RpdGVyb2JqZWN0OworCitzdGF0aWMgdm9pZAorb2RpY3RpdGVyX2RlYWxsb2Mob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkaSk7CisgICAgUHlfWERFQ1JFRihkaS0+ZGlfb2RpY3QpOworICAgIFB5X1hERUNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIGlmIChkaS0+a2luZCAmIChfb2RpY3RfSVRFUl9LRVlTIHwgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICBQeV9ERUNSRUYoZGktPmRpX3Jlc3VsdCk7CisgICAgfQorICAgIFB5T2JqZWN0X0dDX0RlbChkaSk7Cit9CisKK3N0YXRpYyBpbnQKK29kaWN0aXRlcl90cmF2ZXJzZShvZGljdGl0ZXJvYmplY3QgKmRpLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChkaS0+ZGlfb2RpY3QpOworICAgIFB5X1ZJU0lUKGRpLT5kaV9jdXJyZW50KTsgIC8qIEEga2V5IGNvdWxkIGJlIGFueSB0eXBlLCBub3QganVzdCBzdHIuICovCisgICAgUHlfVklTSVQoZGktPmRpX3Jlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEluIG9yZGVyIHRvIHByb3RlY3QgYWdhaW5zdCBtb2RpZmljYXRpb25zIGR1cmluZyBpdGVyYXRpb24sIHdlIHRyYWNrCisgKiB0aGUgY3VycmVudCBrZXkgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBub2RlLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9uZXh0a2V5KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKmtleSA9IE5VTEw7CisgICAgX09EaWN0Tm9kZSAqbm9kZTsKKyAgICBpbnQgcmV2ZXJzZWQgPSBkaS0+a2luZCAmIF9vZGljdF9JVEVSX1JFVkVSU0VEOworCisgICAgaWYgKGRpLT5kaV9vZGljdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZGktPmRpX2N1cnJlbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOyAgLyogV2UncmUgYWxyZWFkeSBkb25lLiAqLworCisgICAgLyogQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNoYW5nZXMuICovCisgICAgaWYgKGRpLT5kaV9vZGljdC0+b2Rfc3RhdGUgIT0gZGktPmRpX3N0YXRlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZERpY3QgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgaWYgKGRpLT5kaV9zaXplICE9IFB5T0RpY3RfU0laRShkaS0+ZGlfb2RpY3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiT3JkZXJlZERpY3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgZGktPmRpX3NpemUgPSAtMTsgLyogTWFrZSB0aGlzIHN0YXRlIHN0aWNreSAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIGtleS4gKi8KKyAgICBub2RlID0gX29kaWN0X2ZpbmRfbm9kZShkaS0+ZGlfb2RpY3QsIGRpLT5kaV9jdXJyZW50KTsKKyAgICBpZiAobm9kZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIE11c3QgaGF2ZSBiZWVuIGRlbGV0ZWQuICovCisgICAgICAgIFB5X0NMRUFSKGRpLT5kaV9jdXJyZW50KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IGRpLT5kaV9jdXJyZW50OworCisgICAgLyogQWR2YW5jZSB0byB0aGUgbmV4dCBrZXkuICovCisgICAgbm9kZSA9IHJldmVyc2VkID8gX29kaWN0bm9kZV9QUkVWKG5vZGUpIDogX29kaWN0bm9kZV9ORVhUKG5vZGUpOworICAgIGlmIChub2RlID09IE5VTEwpIHsKKyAgICAgICAgLyogUmVhY2hlZCB0aGUgZW5kLiAqLworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkaS0+ZGlfY3VycmVudCA9IF9vZGljdG5vZGVfS0VZKG5vZGUpOworICAgICAgICBQeV9JTkNSRUYoZGktPmRpX2N1cnJlbnQpOworICAgIH0KKworICAgIHJldHVybiBrZXk7CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX29kaWN0KTsKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3RpdGVyX2l0ZXJuZXh0KG9kaWN0aXRlcm9iamVjdCAqZGkpCit7CisgICAgUHlPYmplY3QgKnZhbHVlOworICAgIFB5T2JqZWN0ICprZXkgPSBvZGljdGl0ZXJfbmV4dGtleShkaSk7ICAvKiBuZXcgcmVmZXJlbmNlICovCisKKyAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogSGFuZGxlIHRoZSBrZXlzIGNhc2UuICovCisgICAgaWYgKCEgKGRpLT5raW5kICYgX29kaWN0X0lURVJfVkFMVUVTKSkgeworICAgICAgICByZXR1cm4ga2V5OworICAgIH0KKworICAgIC8qIEhhbmRsZSB0aGUgaXRlbXMgY2FzZS4gKi8KKyAgICBpZiAoZGktPmtpbmQgJiBfb2RpY3RfSVRFUl9LRVlTKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBkaS0+ZGlfcmVzdWx0OworCisgICAgICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsgIC8qIGJvcnJvd2VkICovCisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKworICAgICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgeworICAgICAgICAgICAgLyogbm90IGluIHVzZSBzbyB3ZSBjYW4gcmV1c2UgaXQKKyAgICAgICAgICAgICAqICh0aGUgY29tbW9uIGNhc2UgZHVyaW5nIGl0ZXJhdGlvbikgKi8KKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAwKSk7ICAvKiBib3Jyb3dlZCAqLworICAgICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAxKSk7ICAvKiBib3Jyb3dlZCAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIC8qIEhhbmRsZSB0aGUgdmFsdWVzIGNhc2UuICovCisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlID0gUHlPRGljdF9HZXRJdGVtKChQeU9iamVjdCAqKWRpLT5kaV9vZGljdCwga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0tleUVycm9yLCBrZXkpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisKK2RvbmU6CisgICAgUHlfQ0xFQVIoZGktPmRpX2N1cnJlbnQpOworICAgIFB5X0NMRUFSKGRpLT5kaV9vZGljdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIE5vIG5lZWQgZm9yIHRwX2NsZWFyIGJlY2F1c2Ugb2RpY3RpdGVyb2JqZWN0IGlzIG5vdCBtdXRhYmxlLiAqLworCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmciKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlcl9yZWR1Y2Uob2RpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdCwgKml0ZXI7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogaXRlcmF0ZSB0aGUgdGVtcG9yYXJ5IGludG8gYSBsaXN0ICovCisgICAgZm9yKDs7KSB7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gb2RpY3RpdGVyX2l0ZXJuZXh0KGRpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGRvbmUgaXRlcmF0aW5nPyAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaXRlciA9IF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIik7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIGl0ZXIsIGxpc3QpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgb2RpY3RpdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEl0ZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJvZGljdF9pdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2Yob2RpY3RpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilvZGljdGl0ZXJfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylvZGljdGl0ZXJfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylvZGljdGl0ZXJfaXRlcm5leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZXJfbmV3KFB5T0RpY3RPYmplY3QgKm9kLCBpbnQga2luZCkKK3sKKyAgICBvZGljdGl0ZXJvYmplY3QgKmRpOworICAgIF9PRGljdE5vZGUgKm5vZGU7CisgICAgaW50IHJldmVyc2VkID0ga2luZCAmIF9vZGljdF9JVEVSX1JFVkVSU0VEOworCisgICAgZGkgPSBQeU9iamVjdF9HQ19OZXcob2RpY3RpdGVyb2JqZWN0LCAmUHlPRGljdEl0ZXJfVHlwZSk7CisgICAgaWYgKGRpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGtpbmQgJiAoX29kaWN0X0lURVJfS0VZUyB8IF9vZGljdF9JVEVSX1ZBTFVFUykpeworICAgICAgICBkaS0+ZGlfcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDIsIFB5X05vbmUsIFB5X05vbmUpOworICAgICAgICBpZiAoZGktPmRpX3Jlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGkpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgICAgICBkaS0+ZGlfcmVzdWx0ID0gTlVMTDsKKworICAgIGRpLT5raW5kID0ga2luZDsKKyAgICBub2RlID0gcmV2ZXJzZWQgPyBfb2RpY3RfTEFTVChvZCkgOiBfb2RpY3RfRklSU1Qob2QpOworICAgIGRpLT5kaV9jdXJyZW50ID0gbm9kZSA/IF9vZGljdG5vZGVfS0VZKG5vZGUpIDogTlVMTDsKKyAgICBQeV9YSU5DUkVGKGRpLT5kaV9jdXJyZW50KTsKKyAgICBkaS0+ZGlfc2l6ZSA9IFB5T0RpY3RfU0laRShvZCk7CisgICAgZGktPmRpX3N0YXRlID0gb2QtPm9kX3N0YXRlOworICAgIGRpLT5kaV9vZGljdCA9IG9kOworICAgIFB5X0lOQ1JFRihvZCk7CisKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soZGkpOworICAgIHJldHVybiAoUHlPYmplY3QgKilkaTsKK30KKworLyoga2V5cygpICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGtleXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0a2V5c19yZXZlcnNlZChfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0a2V5c19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3RrZXlzX3JldmVyc2VkLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlUeXBlT2JqZWN0IFB5T0RpY3RLZXlzX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3Rfa2V5cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RrZXlzX2l0ZXIsICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGtleXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RLZXlzX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGtleXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdEtleXNfVHlwZSk7Cit9CisKKy8qIGl0ZW1zKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0aXRlbXNfaXRlcihfUHlEaWN0Vmlld09iamVjdCAqZHYpCit7CisgICAgaWYgKGR2LT5kdl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIHJldHVybiBvZGljdGl0ZXJfbmV3KChQeU9EaWN0T2JqZWN0ICopZHYtPmR2X2RpY3QsCisgICAgICAgICAgICBfb2RpY3RfSVRFUl9LRVlTfF9vZGljdF9JVEVSX1ZBTFVFUyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZW1zX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX0tFWVN8X29kaWN0X0lURVJfVkFMVUVTfF9vZGljdF9JVEVSX1JFVkVSU0VEKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG9kaWN0aXRlbXNfbWV0aG9kc1tdID0geworICAgIHsiX19yZXZlcnNlZF9fIiwgKFB5Q0Z1bmN0aW9uKW9kaWN0aXRlbXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdEl0ZW1zX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAib2RpY3RfaXRlbXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RpdGVtc19pdGVyLCAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBvZGljdGl0ZW1zX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeURpY3RJdGVtc19UeXBlLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitvZGljdGl0ZW1zX25ldyhQeU9iamVjdCAqb2QpCit7CisgICAgcmV0dXJuIF9QeURpY3RWaWV3X05ldyhvZCwgJlB5T0RpY3RJdGVtc19UeXBlKTsKK30KKworLyogdmFsdWVzKCkgKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0dmFsdWVzX2l0ZXIoX1B5RGljdFZpZXdPYmplY3QgKmR2KQoreworICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICByZXR1cm4gb2RpY3RpdGVyX25ldygoUHlPRGljdE9iamVjdCAqKWR2LT5kdl9kaWN0LAorICAgICAgICAgICAgX29kaWN0X0lURVJfVkFMVUVTKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK29kaWN0dmFsdWVzX3JldmVyc2VkKF9QeURpY3RWaWV3T2JqZWN0ICpkdikKK3sKKyAgICBpZiAoZHYtPmR2X2RpY3QgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcoKFB5T0RpY3RPYmplY3QgKilkdi0+ZHZfZGljdCwKKyAgICAgICAgICAgIF9vZGljdF9JVEVSX1ZBTFVFU3xfb2RpY3RfSVRFUl9SRVZFUlNFRCk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBvZGljdHZhbHVlc19tZXRob2RzW10gPSB7CisgICAgeyJfX3JldmVyc2VkX18iLCAoUHlDRnVuY3Rpb24pb2RpY3R2YWx1ZXNfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitQeVR5cGVPYmplY3QgUHlPRGljdFZhbHVlc19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm9kaWN0X3ZhbHVlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgKGdldGl0ZXJmdW5jKW9kaWN0dmFsdWVzX2l0ZXIsICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgb2RpY3R2YWx1ZXNfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAmUHlEaWN0VmFsdWVzX1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorb2RpY3R2YWx1ZXNfbmV3KFB5T2JqZWN0ICpvZCkKK3sKKyAgICByZXR1cm4gX1B5RGljdFZpZXdfTmV3KG9kLCAmUHlPRGljdFZhbHVlc19UeXBlKTsKK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBNdXRhYmxlTWFwcHBpbmcgaW1wbGVtZW50YXRpb25zCisKK01hcHBpbmc6CisKKz09PT09PT09PT09PSA9PT09PT09PT09PQorbWV0aG9kICAgICAgIHVzZXMKKz09PT09PT09PT09PSA9PT09PT09PT09PQorX19jb250YWluc19fIF9fZ2V0aXRlbV9fCitfX2VxX18gICAgICAgaXRlbXMKK19fZ2V0aXRlbV9fICArCitfX2l0ZXJfXyAgICAgKworX19sZW5fXyAgICAgICsKK19fbmVfXyAgICAgICBfX2VxX18KK2dldCAgICAgICAgICBfX2dldGl0ZW1fXworaXRlbXMgICAgICAgIEl0ZW1zVmlldwora2V5cyAgICAgICAgIEtleXNWaWV3Cit2YWx1ZXMgICAgICAgVmFsdWVzVmlldworPT09PT09PT09PT09ID09PT09PT09PT09CisKK0l0ZW1zVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19nZXRpdGVtX18uCitLZXlzVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19jb250YWluc19fLgorVmFsdWVzVmlldyB1c2VzIF9fbGVuX18sIF9faXRlcl9fLCBhbmQgX19nZXRpdGVtX18uCisKK011dGFibGVNYXBwaW5nOgorCis9PT09PT09PT09PT0gPT09PT09PT09PT0KK21ldGhvZCAgICAgICB1c2VzCis9PT09PT09PT09PT0gPT09PT09PT09PT0KK19fZGVsaXRlbV9fICArCitfX3NldGl0ZW1fXyAgKworY2xlYXIgICAgICAgIHBvcGl0ZW0KK3BvcCAgICAgICAgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgIF9fZGVsaXRlbV9fCitwb3BpdGVtICAgICAgX19pdGVyX18KKyAgICAgICAgICAgICBfZ2V0aXRlbV9fCisgICAgICAgICAgICAgX19kZWxpdGVtX18KK3NldGRlZmF1bHQgICBfX2dldGl0ZW1fXworICAgICAgICAgICAgIF9fc2V0aXRlbV9fCit1cGRhdGUgICAgICAgX19zZXRpdGVtX18KKz09PT09PT09PT09PSA9PT09PT09PT09PQorKi8KKworc3RhdGljIGludAorbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGFpcnMpCit7CisgICAgUHlPYmplY3QgKnBhaXIsICppdGVyYXRvciwgKnVuZXhwZWN0ZWQ7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICBpdGVyYXRvciA9IFB5T2JqZWN0X0dldEl0ZXIocGFpcnMpOworICAgIGlmIChpdGVyYXRvciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIHdoaWxlICgocGFpciA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkgIT0gTlVMTCkgeworICAgICAgICAvKiBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCAoc2VlIFVOUEFDS19TRVFVRU5DRSBpbiBjZXZhbC5jKSAqLworICAgICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTCwgKnZhbHVlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKnBhaXJfaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKHBhaXIpOworICAgICAgICBpZiAocGFpcl9pdGVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBEb25lOworCisgICAgICAgIGtleSA9IFB5SXRlcl9OZXh0KHBhaXJfaXRlcmF0b3IpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgbW9yZSB0aGFuIDAgdmFsdWVzIHRvIHVucGFjayIpOworICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICB9CisKKyAgICAgICAgdmFsdWUgPSBQeUl0ZXJfTmV4dChwYWlyX2l0ZXJhdG9yKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgbW9yZSB0aGFuIDEgdmFsdWUgdG8gdW5wYWNrIik7CisgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgIH0KKworICAgICAgICB1bmV4cGVjdGVkID0gUHlJdGVyX05leHQocGFpcl9pdGVyYXRvcik7CisgICAgICAgIGlmICh1bmV4cGVjdGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmV4cGVjdGVkKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAyKSIpOworICAgICAgICAgICAgZ290byBEb25lOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIERvbmU7CisKKyAgICAgICAgcmVzID0gUHlPYmplY3RfU2V0SXRlbShzZWxmLCBrZXksIHZhbHVlKTsKKworRG9uZToKKyAgICAgICAgUHlfREVDUkVGKHBhaXIpOworICAgICAgICBQeV9YREVDUkVGKHBhaXJfaXRlcmF0b3IpOworICAgICAgICBQeV9YREVDUkVGKGtleSk7CisgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeV9ERUNSRUYoaXRlcmF0b3IpOworCisgICAgaWYgKHJlcyA8IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK211dGFibGVtYXBwaW5nX3VwZGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJlcyA9IDA7CisgICAgUHlfc3NpemVfdCBsZW4gPSAoYXJncyAhPSBOVUxMKSA/IFB5T2JqZWN0X1NpemUoYXJncykgOiAwOworCisgICAgLyogZmlyc3QgaGFuZGxlIGFyZ3MsIGlmIGFueSAqLworICAgIGlmIChsZW4gPCAwKSAvKiBQeU9iamVjdF9TaXplIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGxlbiA+IDEpIHsKKyAgICAgICAgY2hhciAqbXNnID0gInVwZGF0ZSgpIHRha2VzIGF0IG1vc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50ICglZCBnaXZlbikiOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCBtc2csIGxlbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgICAgIGlmIChvdGhlciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihvdGhlcik7CisgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG90aGVyLCAiaXRlbXMiKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IFB5TWFwcGluZ19JdGVtcyhvdGhlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgaXRlbXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvdGhlciwgImtleXMiKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzLCAqaXRlcmF0b3IsICprZXk7CisgICAgICAgICAgICBrZXlzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChvdGhlciwgImtleXMiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9HZXRJdGVyKGtleXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGtleXMpOworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKHJlcyA9PSAwICYmIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyYXRvcikpKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShvdGhlciwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9TZXRJdGVtKHNlbGYsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYXRvcik7CisgICAgICAgICAgICBpZiAocmVzICE9IDAgfHwgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBvdGhlcik7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogbm93IGhhbmRsZSBrd2FyZ3MgKi8KKyAgICBsZW4gPSAoa3dhcmdzICE9IE5VTEwpID8gUHlPYmplY3RfU2l6ZShrd2FyZ3MpIDogMDsKKyAgICBpZiAobGVuIDwgMCkgLyogUHlPYmplY3RfU2l6ZSByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAobGVuID4gMCkgeworICAgICAgICBQeU9iamVjdCAqaXRlbXM7CisgICAgICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGt3YXJncykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBtYXBwaW5nIGZvciBrd2FyZ3MiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl0ZW1zID0gUHlNYXBwaW5nX0l0ZW1zKGt3YXJncyk7CisgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJlcyA9IG11dGFibGVtYXBwaW5nX2FkZF9wYWlycyhzZWxmLCBpdGVtcyk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCBjNGJhNzE1Li5kYTFkNzAzIDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC05OTQsNyArOTk0LDcgQEAKIGxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUobG9uZ3JhbmdlaXRlcm9iamVjdCAqciwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBjbXA7Ci0gICAKKwogICAgIC8qIGNsaXAgdGhlIHZhbHVlICovCiAgICAgUHlPYmplY3QgKnplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgaWYgKHplcm8gPT0gTlVMTCkKQEAgLTEwMTQsNyArMTAxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjbXAgPiAwKQogICAgICAgICBzdGF0ZSA9IHItPmxlbjsKLSAgICAKKwogICAgIFB5X0NMRUFSKHItPmluZGV4KTsKICAgICByLT5pbmRleCA9IHN0YXRlOwogICAgIFB5X0lOQ1JFRihyLT5pbmRleCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCAzMDQ1MTljLi43MDRkN2UyIDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTQsNyArNCw3IEBACiAgICBXcml0dGVuIGFuZCBtYWludGFpbmVkIGJ5IFJheW1vbmQgRC4gSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KICAgIERlcml2ZWQgZnJvbSBMaWIvc2V0cy5weSBhbmQgT2JqZWN0cy9kaWN0b2JqZWN0LmMuCiAKLSAgIENvcHlyaWdodCAoYykgMjAwMy0yMDEzIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgQ29weXJpZ2h0IChjKSAyMDAzLTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGUgYmFzaWMgbG9va3VwIGZ1bmN0aW9uIHVzZWQgYnkgYWxsIG9wZXJhdGlvbnMuCkBAIC0yMyw3ICsyMyw3IEBACiAKICAgIEFsbCBhcml0aG1ldGljIG9uIGhhc2ggc2hvdWxkIGlnbm9yZSBvdmVyZmxvdy4KIAotICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbnMgY2FuIHJldHVybgorICAgVW5saWtlIHRoZSBkaWN0aW9uYXJ5IGltcGxlbWVudGF0aW9uLCB0aGUgbG9va2tleSBmdW5jdGlvbiBjYW4gcmV0dXJuCiAgICBOVUxMIGlmIHRoZSByaWNoIGNvbXBhcmlzb24gcmV0dXJucyBhbiBlcnJvci4KICovCiAKQEAgLTU2LDEyMCArNTYsNzMgQEAKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOwogICAgIHNpemVfdCBtYXNrID0gc28tPm1hc2s7Ci0gICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2g7IC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yLiAqLworICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KICAgICBzaXplX3QgajsKICAgICBpbnQgY21wOwogCi0gICAgZW50cnkgPSAmdGFibGVbaSAmIG1hc2tdOworICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+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+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgaWYgKGVudHJ5LT5rZXkgJiYgZW50cnktPmtleSAhPSBkdW1teSkgeworICAgICAgICAgICAgICAgIHVzZWQtLTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW50cnktPmtleSk7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTIsMTYgKzU0OCwxNiBAQAogewogICAgIFB5U2V0T2JqZWN0ICpvdGhlcjsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5X3NzaXplX3QgaTsKLSAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgc2V0ZW50cnkgKnNvX2VudHJ5OworICAgIHNldGVudHJ5ICpvdGhlcl9lbnRyeTsKIAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKG90aGVyc2V0KSk7CiAKICAgICBvdGhlciA9IChQeVNldE9iamVjdCopb3RoZXJzZXQ7CiAgICAgaWYgKG90aGVyID09IHNvIHx8IG90aGVyLT51c2VkID09IDApCi0gICAgICAgIC8qIGEudXBkYXRlKGEpIG9yIGEudXBkYXRlKHt9KTsgbm90aGluZyB0byBkbyAqLworICAgICAgICAvKiBhLnVwZGF0ZShhKSBvciBhLnVwZGF0ZShzZXQoKSk7IG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogRG8gb25lIGJpZyByZXNpemUgYXQgdGhlIHN0YXJ0LCByYXRoZXIgdGhhbgogICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CkBAIC02MzEsMTQgKzU2Nyw0NSBAQAogICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBvdGhlci0+dXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBzb19lbnRyeSA9IHNvLT50YWJsZTsKKyAgICBvdGhlcl9lbnRyeSA9IG90aGVyLT50YWJsZTsKKworICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgYW5kIGJvdGggdGFibGVzIGhhdmUgdGhlIHNhbWUgc2l6ZSwgYW5kCisgICAgICAgdGhlcmUgYXJlIG5vIGR1bW1pZXMgdG8gZWxpbWluYXRlLCB0aGVuIGp1c3QgY29weSB0aGUgcG9pbnRlcnMuICovCisgICAgaWYgKHNvLT5maWxsID09IDAgJiYgc28tPm1hc2sgPT0gb3RoZXItPm1hc2sgJiYgb3RoZXItPmZpbGwgPT0gb3RoZXItPnVzZWQpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFzazsgaSsrLCBzb19lbnRyeSsrLCBvdGhlcl9lbnRyeSsrKSB7CisgICAgICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHNvX2VudHJ5LT5rZXkgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgc29fZW50cnktPmtleSA9IGtleTsKKyAgICAgICAgICAgICAgICBzb19lbnRyeS0+aGFzaCA9IG90aGVyX2VudHJ5LT5oYXNoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNvLT5maWxsID0gb3RoZXItPmZpbGw7CisgICAgICAgIHNvLT51c2VkID0gb3RoZXItPnVzZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgd2UgY2FuIHVzZSBzZXRfaW5zZXJ0X2NsZWFuKCkgKi8KKyAgICBpZiAoc28tPmZpbGwgPT0gMCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyssIG90aGVyX2VudHJ5KyspIHsKKyAgICAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CisgICAgICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogV2UgY2FuJ3QgYXNzdXJlIHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzLCBzbyBkbyBub3JtYWwgaW5zZXJ0aW9ucyAqLwogICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hc2s7IGkrKykgewotICAgICAgICBlbnRyeSA9ICZvdGhlci0+dGFibGVbaV07Ci0gICAgICAgIGtleSA9IGVudHJ5LT5rZXk7Ci0gICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmCi0gICAgICAgICAgICBrZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgb3RoZXJfZW50cnkgPSAmb3RoZXItPnRhYmxlW2ldOworICAgICAgICBrZXkgPSBvdGhlcl9lbnRyeS0+a2V5OworICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSA9PSAtMSkgeworICAgICAgICAgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTY0OCwxMCArNjE1LDIzIEBACiB9CiAKIHN0YXRpYyBpbnQKK3NldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKK3sKKyAgICBQeU9iamVjdCAqa2V5OworICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKKworICAgIGx1X2VudHJ5ID0gc2V0X2xvb2trZXkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICBpZiAobHVfZW50cnkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGtleSA9IGx1X2VudHJ5LT5rZXk7CisgICAgcmV0dXJuIGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teTsKK30KKworc3RhdGljIGludAogc2V0X2NvbnRhaW5zX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7CisgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CkBAIC02NTksMzAgKzYzOSwxNiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZW50cnkgPSAoc28tPmxvb2t1cCkoc28sIGtleSwgaGFzaCk7Ci0gICAgaWYgKGVudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBlbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICplbnRyeSkKLXsKLSAgICBQeU9iamVjdCAqa2V5OwotICAgIHNldGVudHJ5ICpsdV9lbnRyeTsKLQotICAgIGx1X2VudHJ5ID0gKHNvLT5sb29rdXApKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7Ci0gICAgaWYgKGx1X2VudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBsdV9lbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7CisgICAgZW50cnkua2V5ID0ga2V5OworICAgIGVudHJ5Lmhhc2ggPSBoYXNoOworICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcG9wKFB5U2V0T2JqZWN0ICpzbykKIHsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgIC8qIE1ha2Ugc3VyZSB0aGUgc2VhcmNoIGZpbmdlciBpcyBpbiBib3VuZHMgKi8KKyAgICBQeV9zc2l6ZV90IGkgPSBzby0+ZmluZ2VyICYgc28tPm1hc2s7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICprZXk7CiAKQEAgLTY5MiwzMiArNjU4LDE2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIFNldCBlbnRyeSB0byAidGhlIGZpcnN0IiB1bnVzZWQgb3IgZHVtbXkgc2V0IGVudHJ5LiAgV2UgYWJ1c2UKLSAgICAgKiB0aGUgaGFzaCBmaWVsZCBvZiBzbG90IDAgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXI6Ci0gICAgICogSWYgc2xvdCAwIGhhcyBhIHZhbHVlLCB1c2Ugc2xvdCAwLgotICAgICAqIEVsc2Ugc2xvdCAwIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXIsCi0gICAgICogYW5kIHdlIHVzZSBpdHMgaGFzaCB2YWx1ZSBhcyB0aGUgZmlyc3QgaW5kZXggdG8gbG9vay4KLSAgICAgKi8KLSAgICBlbnRyeSA9ICZzby0+dGFibGVbMF07Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGR1bW15KSB7Ci0gICAgICAgIGkgPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgLyogVGhlIGhhc2ggZmllbGQgbWF5IGJlIGEgcmVhbCBoYXNoIHZhbHVlLCBvciBpdCBtYXkgYmUgYQotICAgICAgICAgKiBsZWdpdCBzZWFyY2ggZmluZ2VyLCBvciBpdCBtYXkgYmUgYSBvbmNlLWxlZ2l0IHNlYXJjaAotICAgICAgICAgKiBmaW5nZXIgdGhhdCdzIG91dCBvZiBib3VuZHMgbm93IGJlY2F1c2UgaXQgd3JhcHBlZCBhcm91bmQKLSAgICAgICAgICogb3IgdGhlIHRhYmxlIHNocnVuayAtLSBzaW1wbHkgbWFrZSBzdXJlIGl0J3MgaW4gYm91bmRzIG5vdy4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChpID4gc28tPm1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZW50cnkgPSAmc28tPnRhYmxlW2ldKS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleT09ZHVtbXkpIHsKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIGlmIChpID4gc28tPm1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKyAgICB3aGlsZSAoKGVudHJ5ID0gJnNvLT50YWJsZVtpXSktPmtleSA9PSBOVUxMIHx8IGVudHJ5LT5rZXk9PWR1bW15KSB7CisgICAgICAgIGkrKzsKKyAgICAgICAgaWYgKGkgPiBzby0+bWFzaykKKyAgICAgICAgICAgIGkgPSAwOwogICAgIH0KICAgICBrZXkgPSBlbnRyeS0+a2V5OwogICAgIGVudHJ5LT5rZXkgPSBkdW1teTsKKyAgICBlbnRyeS0+aGFzaCA9IC0xOwogICAgIHNvLT51c2VkLS07Ci0gICAgc28tPnRhYmxlWzBdLmhhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBzby0+ZmluZ2VyID0gaSArIDE7ICAgICAgICAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLwogICAgIHJldHVybiBrZXk7CiB9CiAKQEAgLTc2MCw3ICs3MTAsNyBAQAogICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewogICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAotICAgICAgICAgICB2YWx1ZXMuICBUaGUgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CisgICAgICAgICAgIHZhbHVlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CiAgICAgICAgICAgIGNvbWJpbmF0aW9ucyBvZiBhIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieQogICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5CiAgICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KQEAgLTc3MCw3ICs3MjAsNyBAQAogICAgIC8qIE1ha2UgdGhlIGZpbmFsIHJlc3VsdCBzcHJlYWQtb3V0IGluIGEgZGlmZmVyZW50IHBhdHRlcm4KICAgICAgICB0aGFuIHRoZSBhbGdvcml0aG0gZm9yIHR1cGxlcyBvciBvdGhlciBweXRob24gb2JqZWN0cy4gKi8KICAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1VMOwotICAgIGlmIChoYXNoID09IC0xKQorICAgIGlmIChoYXNoID09IChQeV91aGFzaF90KS0xKQogICAgICAgICBoYXNoID0gNTkwOTIzNzEzVUw7CiAgICAgc28tPmhhc2ggPSBoYXNoOwogICAgIHJldHVybiBoYXNoOwpAQCAtOTc0LDcgKzkyNCw3IEBACiAKICAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwogICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkgPT0gLTEpCisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC05ODUsNyArOTM1LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpID09IC0xKSB7CisgICAgICAgIGlmIChzZXRfYWRkX2tleShzbywga2V5KSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTAwNSw3ICs5NTUsNyBAQAogCiAgICAgZm9yIChpPTAgOyBpPFB5VHVwbGVfR0VUX1NJWkUoYXJncykgOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKm90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICAgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTEwMTQsNiArOTY0LDEyIEBACiBQeURvY19TVFJWQVIodXBkYXRlX2RvYywKICJVcGRhdGUgYSBzZXQgd2l0aCB0aGUgdW5pb24gb2YgaXRzZWxmIGFuZCBvdGhlcnMuIik7CiAKKy8qIFhYWCBUb2RvOgorICAgSWYgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgbWFrZSB0aGUKKyAgIHNldCBvYmplY3QgNjQgYnl0ZSBhbGlnbmVkIHNvIHRoYXQgbW9zdCBvZiB0aGUgZmllbGRzCisgICBjYW4gYmUgcmV0cmlldmVkIG9yIHVwZGF0ZWQgaW4gYSBzaW5nbGUgY2FjaGUgbGluZS4KKyovCisKIHN0YXRpYyBQeU9iamVjdCAqCiBtYWtlX25ld19zZXQoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7CkBAIC0xMDI4LDEyICs5ODQsMTIgQEAKICAgICBzby0+dXNlZCA9IDA7CiAgICAgc28tPm1hc2sgPSBQeVNldF9NSU5TSVpFIC0gMTsKICAgICBzby0+dGFibGUgPSBzby0+c21hbGx0YWJsZTsKLSAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXlfdW5pY29kZTsKICAgICBzby0+aGFzaCA9IC0xOworICAgIHNvLT5maW5nZXIgPSAwOwogICAgIHNvLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAKICAgICBpZiAoaXRlcmFibGUgIT0gTlVMTCkgewotICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgaXRlcmFibGUpID09IC0xKSB7CisgICAgICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBpdGVyYWJsZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzbyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTExNywxMCArMTA3Myw4IEBACiAgICAgIHQ9c2V0KGEpOyBhLmNsZWFyKCk7IGEudXBkYXRlKGIpOyBiLmNsZWFyKCk7IGIudXBkYXRlKHQpOyBkZWwgdAogCiAgICBUaGUgZnVuY3Rpb24gYWx3YXlzIHN1Y2NlZWRzIGFuZCBpdCBsZWF2ZXMgYm90aCBvYmplY3RzIGluIGEgc3RhYmxlIHN0YXRlLgotICAgVXNlZnVsIGZvciBjcmVhdGluZyB0ZW1wb3JhcnkgZnJvemVuc2V0cyBmcm9tIHNldHMgZm9yIG1lbWJlcnNoaXAgdGVzdGluZwotICAgaW4gX19jb250YWluc19fKCksIGRpc2NhcmQoKSwgYW5kIHJlbW92ZSgpLiAgQWxzbyB1c2VmdWwgZm9yIG9wZXJhdGlvbnMKLSAgIHRoYXQgdXBkYXRlIGluLXBsYWNlIChieSBhbGxvd2luZyBhbiBpbnRlcm1lZGlhdGUgcmVzdWx0IHRvIGJlIHN3YXBwZWQKLSAgIGludG8gb25lIG9mIHRoZSBvcmlnaW5hbCBpbnB1dHMpLgorICAgVXNlZnVsIGZvciBvcGVyYXRpb25zIHRoYXQgdXBkYXRlIGluLXBsYWNlIChieSBhbGxvd2luZyBhbiBpbnRlcm1lZGlhdGUKKyAgIHJlc3VsdCB0byBiZSBzd2FwcGVkIGludG8gb25lIG9mIHRoZSBvcmlnaW5hbCBpbnB1dHMpLgogKi8KIAogc3RhdGljIHZvaWQKQEAgLTExMjgsNyArMTA4Miw2IEBACiB7CiAgICAgUHlfc3NpemVfdCB0OwogICAgIHNldGVudHJ5ICp1OwotICAgIHNldGVudHJ5ICooKmYpKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfc3NpemVfdCBoYXNoKTsKICAgICBzZXRlbnRyeSB0YWJbUHlTZXRfTUlOU0laRV07CiAgICAgUHlfaGFzaF90IGg7CiAKQEAgLTExNDQsOCArMTA5Nyw2IEBACiAgICAgICAgIGEtPnRhYmxlID0gYS0+c21hbGx0YWJsZTsKICAgICBiLT50YWJsZSA9IHU7CiAKLSAgICBmID0gYS0+bG9va3VwOyAgIGEtPmxvb2t1cCA9IGItPmxvb2t1cDsgICAgICBiLT5sb29rdXAgPSBmOwotCiAgICAgaWYgKGEtPnRhYmxlID09IGEtPnNtYWxsdGFibGUgfHwgYi0+dGFibGUgPT0gYi0+c21hbGx0YWJsZSkgewogICAgICAgICBtZW1jcHkodGFiLCBhLT5zbWFsbHRhYmxlLCBzaXplb2YodGFiKSk7CiAgICAgICAgIG1lbWNweShhLT5zbWFsbHRhYmxlLCBiLT5zbWFsbHRhYmxlLCBzaXplb2YodGFiKSk7CkBAIC0xMjAzLDcgKzExNTQsNyBAQAogICAgICAgICBvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAgICAgICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChyZXN1bHQsIG90aGVyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTIyOSw3ICsxMTgwLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHJlc3VsdCwgb3RoZXIpID09IC0xKSB7CisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwocmVzdWx0LCBvdGhlcikpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEyNDIsNyArMTE5Myw3IEBACiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc287CkBAIC0xMjc4LDcgKzEyMjksNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBlbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGVudHJ5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMxNCw3ICsxMjY1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCAmZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsICZlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwpAQCAtMTUyMiw3ICsxNDczLDcgQEAKIAogICAgIGZvciAoaT0wIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSA9PSAtMSkKKyAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTU3OCw3ICsxNTI5LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsICZlbnRyeWNvcHkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCAmZW50cnljb3B5KSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTU5NSw3ICsxNTQ2LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgZW50cnkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGVudHJ5KSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTYyMCw3ICsxNTcxLDcgQEAKIAogICAgIGZvciAoaT0xIDsgaTxQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDsgaSsrKSB7CiAgICAgICAgIG90aGVyID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLSAgICAgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKilyZXN1bHQsIG90aGVyKSA9PSAtMSkgeworICAgICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKXJlc3VsdCwgb3RoZXIpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNjQ1LDcgKzE1OTYsNyBAQAogewogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQorICAgIGlmIChzZXRfZGlmZmVyZW5jZV91cGRhdGVfaW50ZXJuYWwoc28sIG90aGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopc287CkBAIC0xNjc5LDcgKzE2MzAsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSA9PSAtMSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNzA1LDcgKzE2NTYsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBlbnRyeSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTg1Niw3ICsxODA3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfYWRkKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBpZiAoc2V0X2FkZF9rZXkoc28sIGtleSkgPT0gLTEpCisgICAgaWYgKHNldF9hZGRfa2V5KHNvLCBrZXkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KQEAgLTI0MDAsNyArMjM1MSw3IEBACiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzZXRfY2xlYXJfaW50ZXJuYWwoc28pOwotICAgIGlmIChzZXRfdXBkYXRlX2ludGVybmFsKHNvLCBzdHIpID09IC0xKSB7CisgICAgaWYgKHNldF91cGRhdGVfaW50ZXJuYWwoc28sIHN0cikpIHsKICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKaW5kZXggZWUxYmYyYi4uMGZjNmI1OCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKQEAgLTcxOCw2ICs3MTgsOTMgQEAKICAgICByZXR1cm4gbGVuIC0gKGVuZCAtIGluICsgMSk7CiAjZW5kaWYKIH0KKworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisjIGRlZmluZSBTV0FCNChDSCwgdG1wKSAgKChDSCkgPDwgMjQpIC8qIGhpZ2ggYnl0ZXMgYXJlIHplcm8gKi8KKyNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCisjIGRlZmluZSBTV0FCNChDSCwgdG1wKSAgKHRtcCA9IChDSCksIFwKKyAgICAgICAgICAgICgodG1wICYgMHgwMEZGdSkgPDwgMjQpICsgKCh0bXAgJiAweEZGMDB1KSA8PCA4KSkKKyAgICAgICAgICAgIC8qIGhpZ2ggYnl0ZXMgYXJlIHplcm8gKi8KKyNlbHNlCisjIGRlZmluZSBTV0FCNChDSCwgdG1wKSAgKHRtcCA9IChDSCksIFwKKyAgICAgICAgICAgIHRtcCA9ICgodG1wICYgMHgwMEZGMDBGRnUpIDw8IDgpICsgKCh0bXAgPj4gOCkgJiAweDAwRkYwMEZGdSksIFwKKyAgICAgICAgICAgICgodG1wICYgMHgwMDAwRkZGRnUpIDw8IDE2KSArICgodG1wID4+IDE2KSAmIDB4MDAwMEZGRkZ1KSkKKyNlbmRpZgorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitTVFJJTkdMSUIodXRmMzJfZW5jb2RlKShjb25zdCBTVFJJTkdMSUJfQ0hBUiAqaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFBZX1VJTlQzMl9UICoqb3V0cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5hdGl2ZV9vcmRlcmluZykKK3sKKyAgICBQWV9VSU5UMzJfVCAqb3V0ID0gKm91dHB0cjsKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kID0gaW4gKyBsZW47CisgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKGxlbiwgNCk7CisgICAgICAgIHdoaWxlIChpbiA8IHVucm9sbGVkX2VuZCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIGFueSBjaGFyYWN0ZXIgaXMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyICovCisgICAgICAgICAgICBpZiAoKChpblswXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bMV0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzJdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblszXSBeIDB4ZDgwMCkgJiAweGY4MDApID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIG91dFswXSA9IGluWzBdOworICAgICAgICAgICAgb3V0WzFdID0gaW5bMV07CisgICAgICAgICAgICBvdXRbMl0gPSBpblsyXTsKKyAgICAgICAgICAgIG91dFszXSA9IGluWzNdOworICAgICAgICAgICAgaW4gKz0gNDsgb3V0ICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICAgICAgY2ggPSAqaW4rKzsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7CisgICAgICAgICAgICAgICAgLyogcmVqZWN0IHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIChVK0Q4MDAtVStERkZGKSAqLworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgKm91dCsrID0gY2g7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKGxlbiwgNCk7CisgICAgICAgIHdoaWxlIChpbiA8IHVucm9sbGVkX2VuZCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgICAgIFB5X1VDUzQgY2gxLCBjaDIsIGNoMywgY2g0OworICAgICAgICAgICAgLyogY2hlY2sgaWYgYW55IGNoYXJhY3RlciBpcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmICgoKGluWzBdIF4gMHhkODAwKSAmCisgICAgICAgICAgICAgICAgIChpblsxXSBeIDB4ZDgwMCkgJgorICAgICAgICAgICAgICAgICAoaW5bMl0gXiAweGQ4MDApICYKKyAgICAgICAgICAgICAgICAgKGluWzNdIF4gMHhkODAwKSAmIDB4ZjgwMCkgPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICAgICAgb3V0WzBdID0gU1dBQjQoaW5bMF0sIGNoMSk7CisgICAgICAgICAgICBvdXRbMV0gPSBTV0FCNChpblsxXSwgY2gyKTsKKyAgICAgICAgICAgIG91dFsyXSA9IFNXQUI0KGluWzJdLCBjaDMpOworICAgICAgICAgICAgb3V0WzNdID0gU1dBQjQoaW5bM10sIGNoNCk7CisgICAgICAgICAgICBpbiArPSA0OyBvdXQgKz0gNDsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqaW4rKzsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7CisgICAgICAgICAgICAgICAgLyogcmVqZWN0IHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIChVK0Q4MDAtVStERkZGKSAqLworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICAgICAgKm91dCsrID0gU1dBQjQoY2gsIGNoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAqb3V0cHRyID0gb3V0OworICAgIHJldHVybiBsZW47CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICBmYWlsOgorICAgICpvdXRwdHIgPSBvdXQ7CisgICAgcmV0dXJuIGxlbiAtIChlbmQgLSBpbiArIDEpOworI2VuZGlmCit9CisjdW5kZWYgU1dBQjQKKwogI2VuZGlmCiAKICNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCmluZGV4IGNkN2NhYzQuLmNkYTY4ZTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKQEAgLTM2LDcgKzM2LDcgQEAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQogU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiBjaCwgdW5zaWduZWQgY2hhciBuZWVkbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQsIGludCBtb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgewogICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gczsKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKLSAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbWF4Y291bnQsIG1vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtb2RlKTsKICAgICAgICAgfQogICAgICAgICBpZiAobW9kZSA9PSBGQVNUX0NPVU5UKSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCmluZGV4IDUxOGUwMTIuLjE0ODE1ZjYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKQEAgLTExLDggKzExLDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHBvczsKIAotICAgIGlmIChzdHJfbGVuIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydChzdHJfbGVuID49IDApOwogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAKQEAgLTMxLDggKzMwLDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IHBvczsKIAotICAgIGlmIChzdHJfbGVuIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGFzc2VydChzdHJfbGVuID49IDApOwogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBzdHJfbGVuICsgb2Zmc2V0OwogCkBAIC00NCwyNyArNDIsMTEgQEAKICAgICByZXR1cm4gcG9zOwogfQogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCiBTVFJJTkdMSUIoZmluZF9zbGljZSkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgc3RyX2xlbik7CiAgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCkBAIC03Myw3ICs1NSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwogICAgIHJldHVybiBTVFJJTkdMSUIocmZpbmQpKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBzdGFydCk7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKaW5kZXggY2FlNmVhMS4uYjU1OWI1MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKQEAgLTU5LDcgKzU5LDcgQEAKIAogICAgIGogPSAwOwogICAgIHEgPSBTVFJJTkdMSUJfU1RSKHUpOwotICAgIAorCiAgICAgZm9yIChwID0gU1RSSU5HTElCX1NUUihzZWxmKTsgcCA8IGU7IHArKykgewogICAgICAgICBpZiAoKnAgPT0gJ1x0JykgewogICAgICAgICAgICAgaWYgKHRhYnNpemUgPiAwKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggOGMwMDIxMC4uN2VmYTFhNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtOTcsNyArOTcsNyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAgICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQorICAgICAgICBpZiAoKHNpemVfdClzaXplID4gKChzaXplX3QpUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQogICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKikpIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQpAQCAtNzQ2LDcgKzc0Niw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGluZGljZXMgbXVzdCBiZSBpbnRlZ2Vycywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAidHVwbGUgaW5kaWNlcyBtdXN0IGJlIGludGVnZXJzIG9yIHNsaWNlcywgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCBkMzljOTQzLi5iYjgzNTMwIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtMTQsMTAgKzE0LDExIEBACiAgICBNQ0FDSEVfTUFYX0FUVFJfU0laRSwgc2luY2UgaXQgbWlnaHQgYmUgYSBwcm9ibGVtIGlmIHZlcnkgbGFyZ2UKICAgIHN0cmluZ3MgYXJlIHVzZWQgYXMgYXR0cmlidXRlIG5hbWVzLiAqLwogI2RlZmluZSBNQ0FDSEVfTUFYX0FUVFJfU0laRSAgICAxMDAKLSNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgOQorI2RlZmluZSBNQ0FDSEVfU0laRV9FWFAgICAgICAgICAxMgogI2RlZmluZSBNQ0FDSEVfSEFTSCh2ZXJzaW9uLCBuYW1lX2hhc2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoKCh1bnNpZ25lZCBpbnQpKHZlcnNpb24pICogKHVuc2lnbmVkIGludCkobmFtZV9oYXNoKSkgICAgICAgICAgXAotICAgICAgICAgPj4gKDgqc2l6ZW9mKHVuc2lnbmVkIGludCkgLSBNQ0FDSEVfU0laRV9FWFApKQorICAgICAgICAoKCh1bnNpZ25lZCBpbnQpKHZlcnNpb24pIF4gKHVuc2lnbmVkIGludCkobmFtZV9oYXNoKSkgICAgICAgICAgXAorICAgICAgICAgJiAoKDEgPDwgTUNBQ0hFX1NJWkVfRVhQKSAtIDEpKQorCiAjZGVmaW5lIE1DQUNIRV9IQVNIX01FVEhPRCh0eXBlLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIE1DQUNIRV9IQVNIKCh0eXBlKS0+dHBfdmVyc2lvbl90YWcsICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAoKFB5QVNDSUlPYmplY3QgKikobmFtZSkpLT5oYXNoKQpAQCAtMzUsNiArMzYsMTQgQEAKIHN0YXRpYyBzdHJ1Y3QgbWV0aG9kX2NhY2hlX2VudHJ5IG1ldGhvZF9jYWNoZVsxIDw8IE1DQUNIRV9TSVpFX0VYUF07CiBzdGF0aWMgdW5zaWduZWQgaW50IG5leHRfdmVyc2lvbl90YWcgPSAwOwogCisjZGVmaW5lIE1DQUNIRV9TVEFUUyAwCisKKyNpZiBNQ0FDSEVfU1RBVFMKK3N0YXRpYyBzaXplX3QgbWV0aG9kX2NhY2hlX2hpdHMgPSAwOworc3RhdGljIHNpemVfdCBtZXRob2RfY2FjaGVfbWlzc2VzID0gMDsKK3N0YXRpYyBzaXplX3QgbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMgPSAwOworI2VuZGlmCisKIC8qIGFscGhhYmV0aWNhbCBvcmRlciAqLwogX1B5X0lERU5USUZJRVIoX19hYnN0cmFjdG1ldGhvZHNfXyk7CiBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOwpAQCAtNTQsNiArNjMsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKIAorc3RhdGljIHZvaWQKK2NsZWFyX3Nsb3RkZWZzKHZvaWQpOworCiAvKgogICogZmluZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jc3RyaW5nJ3MgaW50cm9zcGVjdGlvbiBzaWduYXR1cmUuCiAgKiBpZiBwcmVzZW50LCByZXR1cm5zIGEgcG9pbnRlciBwb2ludGluZyB0byB0aGUgZmlyc3QgJygnLgpAQCAtMTI1LDcgKzEzNyw3IEBACiB7CiAgICAgY29uc3QgY2hhciAqZG9jID0gX1B5VHlwZV9Eb2NXaXRob3V0U2lnbmF0dXJlKG5hbWUsIGludGVybmFsX2RvYyk7CiAKLSAgICBpZiAoIWRvYykgeworICAgIGlmICghZG9jIHx8ICpkb2MgPT0gJ1wwJykgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KQEAgLTE2Miw2ICsxNzQsMTggQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgdW5zaWduZWQgaW50IGN1cl92ZXJzaW9uX3RhZyA9IG5leHRfdmVyc2lvbl90YWcgLSAxOwogCisjaWYgTUNBQ0hFX1NUQVRTCisgICAgc2l6ZV90IHRvdGFsID0gbWV0aG9kX2NhY2hlX2hpdHMgKyBtZXRob2RfY2FjaGVfY29sbGlzaW9ucyArIG1ldGhvZF9jYWNoZV9taXNzZXM7CisgICAgZnByaW50ZihzdGRlcnIsICItLSBNZXRob2QgY2FjaGUgaGl0cyAgICAgICAgPSAlemQgKCVkJSUpXG4iLAorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX2hpdHMsIChpbnQpICgxMDAuMCAqIG1ldGhvZF9jYWNoZV9oaXRzIC8gdG90YWwpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIi0tIE1ldGhvZCBjYWNoZSB0cnVlIG1pc3NlcyA9ICV6ZCAoJWQlJSlcbiIsCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfbWlzc2VzLCAoaW50KSAoMTAwLjAgKiBtZXRob2RfY2FjaGVfbWlzc2VzIC8gdG90YWwpKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIi0tIE1ldGhvZCBjYWNoZSBjb2xsaXNpb25zICA9ICV6ZCAoJWQlJSlcbiIsCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfY29sbGlzaW9ucywgKGludCkgKDEwMC4wICogbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMgLyB0b3RhbCkpOworICAgIGZwcmludGYoc3RkZXJyLCAiLS0gTWV0aG9kIGNhY2hlIHNpemUgICAgICAgID0gJXpkIEtCXG4iLAorICAgICAgICAgICAgc2l6ZW9mKG1ldGhvZF9jYWNoZSkgLyAxMDI0KTsKKyNlbmRpZgorCiAgICAgZm9yIChpID0gMDsgaSA8ICgxIDw8IE1DQUNIRV9TSVpFX0VYUCk7IGkrKykgewogICAgICAgICBtZXRob2RfY2FjaGVbaV0udmVyc2lvbiA9IDA7CiAgICAgICAgIFB5X0NMRUFSKG1ldGhvZF9jYWNoZVtpXS5uYW1lKTsKQEAgLTE3Nyw2ICsyMDEsNyBAQAogX1B5VHlwZV9GaW5pKHZvaWQpCiB7CiAgICAgUHlUeXBlX0NsZWFyQ2FjaGUoKTsKKyAgICBjbGVhcl9zbG90ZGVmcygpOwogfQogCiB2b2lkCkBAIC0xMjAwLDggKzEyMjUsMTEgQEAKICAgICBhc3NlcnQoYmFzZWRlYWxsb2MpOwogICAgIGJhc2VkZWFsbG9jKHNlbGYpOwogCi0gICAgLyogQ2FuJ3QgcmVmZXJlbmNlIHNlbGYgYmV5b25kIHRoaXMgcG9pbnQgKi8KLSAgICBQeV9ERUNSRUYodHlwZSk7CisgICAgLyogQ2FuJ3QgcmVmZXJlbmNlIHNlbGYgYmV5b25kIHRoaXMgcG9pbnQuIEl0J3MgcG9zc2libGUgdHBfZGVsIHN3aXRjaGVkCisgICAgICAgb3VyIHR5cGUgZnJvbSBhIEhFQVBUWVBFIHRvIGEgbm9uLUhFQVBUWVBFLCBzbyBiZSBjYXJlZnVsIGFib3V0CisgICAgICAgcmVmZXJlbmNlIGNvdW50aW5nLiAqLworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCisgICAgICBQeV9ERUNSRUYodHlwZSk7CiAKICAgZW5kbGFiZWw6CiAgICAgKytfUHlUcmFzaF9kZWxldGVfbmVzdGluZzsKQEAgLTI0NzgsNiArMjUwNiw3IEBACiAgICAgICAgIHR5cGUtPnRwX2ZsYWdzIHw9IFB5X1RQRkxBR1NfSEFWRV9HQzsKIAogICAgIC8qIEluaXRpYWxpemUgZXNzZW50aWFsIGZpZWxkcyAqLworICAgIHR5cGUtPnRwX2FzX2FzeW5jID0gJmV0LT5hc19hc3luYzsKICAgICB0eXBlLT50cF9hc19udW1iZXIgPSAmZXQtPmFzX251bWJlcjsKICAgICB0eXBlLT50cF9hc19zZXF1ZW5jZSA9ICZldC0+YXNfc2VxdWVuY2U7CiAgICAgdHlwZS0+dHBfYXNfbWFwcGluZyA9ICZldC0+YXNfbWFwcGluZzsKQEAgLTI2MTcsOSArMjY0NiwxMCBAQAogICAgIH0KICAgICB0eXBlLT50cF9kZWFsbG9jID0gc3VidHlwZV9kZWFsbG9jOwogCi0gICAgLyogRW5hYmxlIEdDIHVubGVzcyB0aGVyZSBhcmUgcmVhbGx5IG5vIGluc3RhbmNlIHZhcmlhYmxlcyBwb3NzaWJsZSAqLwotICAgIGlmICghKHR5cGUtPnRwX2Jhc2ljc2l6ZSA9PSBzaXplb2YoUHlPYmplY3QpICYmCi0gICAgICAgICAgdHlwZS0+dHBfaXRlbXNpemUgPT0gMCkpCisgICAgLyogRW5hYmxlIEdDIHVubGVzcyB0aGlzIGNsYXNzIGlzIG5vdCBhZGRpbmcgbmV3IGluc3RhbmNlIHZhcmlhYmxlcyBhbmQKKyAgICAgICB0aGUgYmFzZSBjbGFzcyBkaWQgbm90IHVzZSBHQy4gKi8KKyAgICBpZiAoKGJhc2UtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IQVZFX0dDKSB8fAorICAgICAgICB0eXBlLT50cF9iYXNpY3NpemUgPiBiYXNlLT50cF9iYXNpY3NpemUpCiAgICAgICAgIHR5cGUtPnRwX2ZsYWdzIHw9IFB5X1RQRkxBR1NfSEFWRV9HQzsKIAogICAgIC8qIEFsd2F5cyBvdmVycmlkZSBhbGxvY2F0aW9uIHN0cmF0ZWd5IHRvIHVzZSByZWd1bGFyIGhlYXAgKi8KQEAgLTI2NjQsNiArMjY5NCw3IEBACiB7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqcmVzID0gKFB5SGVhcFR5cGVPYmplY3QqKVB5VHlwZV9HZW5lcmljQWxsb2MoJlB5VHlwZV9UeXBlLCAwKTsKICAgICBQeVR5cGVPYmplY3QgKnR5cGUsICpiYXNlOworICAgIFB5T2JqZWN0ICptb2RuYW1lOwogICAgIGNoYXIgKnM7CiAgICAgY2hhciAqcmVzX3N0YXJ0ID0gKGNoYXIqKXJlczsKICAgICBQeVR5cGVfU2xvdCAqc2xvdDsKQEAgLTI3MjIsNiArMjc1Myw3IEBACiAgICAgfQogCiAgICAgLyogSW5pdGlhbGl6ZSBlc3NlbnRpYWwgZmllbGRzICovCisgICAgdHlwZS0+dHBfYXNfYXN5bmMgPSAmcmVzLT5hc19hc3luYzsKICAgICB0eXBlLT50cF9hc19udW1iZXIgPSAmcmVzLT5hc19udW1iZXI7CiAgICAgdHlwZS0+dHBfYXNfc2VxdWVuY2UgPSAmcmVzLT5hc19zZXF1ZW5jZTsKICAgICB0eXBlLT50cF9hc19tYXBwaW5nID0gJnJlcy0+YXNfbWFwcGluZzsKQEAgLTI3MzYsNyArMjc2OCw4IEBACiAgICAgdHlwZS0+dHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKIAogICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKLSAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgeworICAgICAgICBpZiAoc2xvdC0+c2xvdCA8IDAKKyAgICAgICAgICAgIHx8IChzaXplX3Qpc2xvdC0+c2xvdCA+PSBQeV9BUlJBWV9MRU5HVEgoc2xvdG9mZnNldHMpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBzbG90IG9mZnNldCIpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CkBAIC0yNzc1LDEwICsyODA4LDIwIEBACiAKICAgICAvKiBTZXQgdHlwZS5fX21vZHVsZV9fICovCiAgICAgcyA9IHN0cnJjaHIoc3BlYy0+bmFtZSwgJy4nKTsKLSAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLAotICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpKTsKKyAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgIG1vZG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgICAgICAgICAgc3BlYy0+bmFtZSwgKFB5X3NzaXplX3QpKHMgLSBzcGVjLT5uYW1lKSk7CisgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLCBtb2RuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKG1vZG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAiYnVpbHRpbiB0eXBlICUuMjAwcyBoYXMgbm8gX19tb2R1bGVfXyBhdHRyaWJ1dGUiLAorICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUpKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KIAogICAgIHJldHVybiAoUHlPYmplY3QqKXJlczsKIApAQCAtMjc5NiwxMSArMjgzOSwxMSBAQAogdm9pZCAqCiBQeVR5cGVfR2V0U2xvdChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBzbG90KQogewotICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUodHlwZSwgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKKyAgICBpZiAoIVB5VHlwZV9IYXNGZWF0dXJlKHR5cGUsIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHx8IHNsb3QgPCAwKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgeworICAgIGlmICgoc2l6ZV90KXNsb3QgPj0gUHlfQVJSQVlfTEVOR1RIKHNsb3RvZmZzZXRzKSkgewogICAgICAgICAvKiBFeHRlbnNpb24gbW9kdWxlIHJlcXVlc3Rpbmcgc2xvdCBmcm9tIGEgZnV0dXJlIHZlcnNpb24gKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjgyMSw4ICsyODY0LDEyIEBACiAgICAgICAgIC8qIGZhc3QgcGF0aCAqLwogICAgICAgICBoID0gTUNBQ0hFX0hBU0hfTUVUSE9EKHR5cGUsIG5hbWUpOwogICAgICAgICBpZiAobWV0aG9kX2NhY2hlW2hdLnZlcnNpb24gPT0gdHlwZS0+dHBfdmVyc2lvbl90YWcgJiYKLSAgICAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS5uYW1lID09IG5hbWUpCisgICAgICAgICAgICBtZXRob2RfY2FjaGVbaF0ubmFtZSA9PSBuYW1lKSB7CisjaWYgTUNBQ0hFX1NUQVRTCisgICAgICAgICAgICBtZXRob2RfY2FjaGVfaGl0cysrOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gbWV0aG9kX2NhY2hlW2hdLnZhbHVlOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogTG9vayBpbiB0cF9kaWN0IG9mIHR5cGVzIGluIE1STyAqLwpAQCAtMjg1Niw2ICsyOTAzLDEzIEBACiAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS52ZXJzaW9uID0gdHlwZS0+dHBfdmVyc2lvbl90YWc7CiAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS52YWx1ZSA9IHJlczsgIC8qIGJvcnJvd2VkICovCiAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKyAgICAgICAgYXNzZXJ0KCgoUHlBU0NJSU9iamVjdCAqKShuYW1lKSktPmhhc2ggIT0gLTEpOworI2lmIE1DQUNIRV9TVEFUUworICAgICAgICBpZiAobWV0aG9kX2NhY2hlW2hdLm5hbWUgIT0gUHlfTm9uZSAmJiBtZXRob2RfY2FjaGVbaF0ubmFtZSAhPSBuYW1lKQorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX2NvbGxpc2lvbnMrKzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWV0aG9kX2NhY2hlX21pc3NlcysrOworI2VuZGlmCiAgICAgICAgIFB5X0RFQ1JFRihtZXRob2RfY2FjaGVbaF0ubmFtZSk7CiAgICAgICAgIG1ldGhvZF9jYWNoZVtoXS5uYW1lID0gbmFtZTsKICAgICB9CkBAIC0zNTA2LDE3ICszNTYwLDE4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWVxdWl2X3N0cnVjdHMoUHlUeXBlT2JqZWN0ICphLCBQeVR5cGVPYmplY3QgKmIpCitjb21wYXRpYmxlX3dpdGhfdHBfYmFzZShQeVR5cGVPYmplY3QgKmNoaWxkKQogewotICAgIHJldHVybiBhID09IGIgfHwKLSAgICAgICAgICAgKGEgIT0gTlVMTCAmJgotICAgICAgICBiICE9IE5VTEwgJiYKLSAgICAgICAgYS0+dHBfYmFzaWNzaXplID09IGItPnRwX2Jhc2ljc2l6ZSAmJgotICAgICAgICBhLT50cF9pdGVtc2l6ZSA9PSBiLT50cF9pdGVtc2l6ZSAmJgotICAgICAgICBhLT50cF9kaWN0b2Zmc2V0ID09IGItPnRwX2RpY3RvZmZzZXQgJiYKLSAgICAgICAgYS0+dHBfd2Vha2xpc3RvZmZzZXQgPT0gYi0+dHBfd2Vha2xpc3RvZmZzZXQgJiYKLSAgICAgICAgKChhLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykgPT0KLSAgICAgICAgIChiLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykpKTsKKyAgICBQeVR5cGVPYmplY3QgKnBhcmVudCA9IGNoaWxkLT50cF9iYXNlOworICAgIHJldHVybiAocGFyZW50ICE9IE5VTEwgJiYKKyAgICAgICAgICAgIGNoaWxkLT50cF9iYXNpY3NpemUgPT0gcGFyZW50LT50cF9iYXNpY3NpemUgJiYKKyAgICAgICAgICAgIGNoaWxkLT50cF9pdGVtc2l6ZSA9PSBwYXJlbnQtPnRwX2l0ZW1zaXplICYmCisgICAgICAgICAgICBjaGlsZC0+dHBfZGljdG9mZnNldCA9PSBwYXJlbnQtPnRwX2RpY3RvZmZzZXQgJiYKKyAgICAgICAgICAgIGNoaWxkLT50cF93ZWFrbGlzdG9mZnNldCA9PSBwYXJlbnQtPnRwX3dlYWtsaXN0b2Zmc2V0ICYmCisgICAgICAgICAgICAoKGNoaWxkLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykgPT0KKyAgICAgICAgICAgICAocGFyZW50LT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEFWRV9HQykpICYmCisgICAgICAgICAgICAoY2hpbGQtPnRwX2RlYWxsb2MgPT0gc3VidHlwZV9kZWFsbG9jIHx8CisgICAgICAgICAgICAgY2hpbGQtPnRwX2RlYWxsb2MgPT0gcGFyZW50LT50cF9kZWFsbG9jKSk7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTM1MzQsNiArMzU4OSwxMCBAQAogICAgICAgICBzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKIAogICAgIC8qIENoZWNrIHNsb3RzIGNvbXBsaWFuY2UgKi8KKyAgICBpZiAoIShhLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHx8CisgICAgICAgICEoYi0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgc2xvdHNfYSA9ICgoUHlIZWFwVHlwZU9iamVjdCAqKWEpLT5odF9zbG90czsKICAgICBzbG90c19iID0gKChQeUhlYXBUeXBlT2JqZWN0ICopYiktPmh0X3Nsb3RzOwogICAgIGlmIChzbG90c19hICYmIHNsb3RzX2IpIHsKQEAgLTM1NDksOSArMzYwOCw3IEBACiB7CiAgICAgUHlUeXBlT2JqZWN0ICpuZXdiYXNlLCAqb2xkYmFzZTsKIAotICAgIGlmIChuZXd0by0+dHBfZGVhbGxvYyAhPSBvbGR0by0+dHBfZGVhbGxvYyB8fAotICAgICAgICBuZXd0by0+dHBfZnJlZSAhPSBvbGR0by0+dHBfZnJlZSkKLSAgICB7CisgICAgaWYgKG5ld3RvLT50cF9mcmVlICE9IG9sZHRvLT50cF9mcmVlKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXMgYXNzaWdubWVudDogIgogICAgICAgICAgICAgICAgICAgICAgIiclcycgZGVhbGxvY2F0b3IgZGlmZmVycyBmcm9tICclcyciLApAQCAtMzU2MCwxMSArMzYxNywyMSBAQAogICAgICAgICAgICAgICAgICAgICAgb2xkdG8tPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgLyoKKyAgICAgSXQncyB0cmlja3kgdG8gdGVsbCBpZiB0d28gYXJiaXRyYXJ5IHR5cGVzIGFyZSBzdWZmaWNpZW50bHkgY29tcGF0aWJsZSBhcworICAgICB0byBiZSBpbnRlcmNoYW5nZWFibGU7IGUuZy4sIGV2ZW4gaWYgdGhleSBoYXZlIHRoZSBzYW1lIHRwX2Jhc2ljc2l6ZSwgdGhleQorICAgICBtaWdodCBoYXZlIHRvdGFsbHkgZGlmZmVyZW50IHN0cnVjdCBmaWVsZHMuIEl0J3MgbXVjaCBlYXNpZXIgdG8gdGVsbCBpZiBhCisgICAgIHR5cGUgYW5kIGl0cyBzdXBlcnR5cGUgYXJlIGNvbXBhdGlibGU7IGUuZy4sIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZQorICAgICB0cF9iYXNpY3NpemUsIHRoZW4gdGhhdCBtZWFucyB0aGV5IGhhdmUgaWRlbnRpY2FsIGZpZWxkcy4gU28gdG8gY2hlY2sKKyAgICAgd2hldGhlciB0d28gYXJiaXRyYXJ5IHR5cGVzIGFyZSBjb21wYXRpYmxlLCB3ZSBmaXJzdCBmaW5kIHRoZSBoaWdoZXN0CisgICAgIHN1cGVydHlwZSB0aGF0IGVhY2ggaXMgY29tcGF0aWJsZSB3aXRoLCBhbmQgdGhlbiBpZiB0aG9zZSBzdXBlcnR5cGVzIGFyZQorICAgICBjb21wYXRpYmxlIHRoZW4gdGhlIG9yaWdpbmFsIHR5cGVzIG11c3QgYWxzbyBiZSBjb21wYXRpYmxlLgorICAgICovCiAgICAgbmV3YmFzZSA9IG5ld3RvOwogICAgIG9sZGJhc2UgPSBvbGR0bzsKLSAgICB3aGlsZSAoZXF1aXZfc3RydWN0cyhuZXdiYXNlLCBuZXdiYXNlLT50cF9iYXNlKSkKKyAgICB3aGlsZSAoY29tcGF0aWJsZV93aXRoX3RwX2Jhc2UobmV3YmFzZSkpCiAgICAgICAgIG5ld2Jhc2UgPSBuZXdiYXNlLT50cF9iYXNlOwotICAgIHdoaWxlIChlcXVpdl9zdHJ1Y3RzKG9sZGJhc2UsIG9sZGJhc2UtPnRwX2Jhc2UpKQorICAgIHdoaWxlIChjb21wYXRpYmxlX3dpdGhfdHBfYmFzZShvbGRiYXNlKSkKICAgICAgICAgb2xkYmFzZSA9IG9sZGJhc2UtPnRwX2Jhc2U7CiAgICAgaWYgKG5ld2Jhc2UgIT0gb2xkYmFzZSAmJgogICAgICAgICAobmV3YmFzZS0+dHBfYmFzZSAhPSBvbGRiYXNlLT50cF9iYXNlIHx8CkBAIC0zNTk5LDE3ICszNjY2LDcxIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbmV3dG8gPSAoUHlUeXBlT2JqZWN0ICopdmFsdWU7Ci0gICAgaWYgKCEobmV3dG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgfHwKLSAgICAgICAgIShvbGR0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkKLSAgICB7CisgICAgLyogSW4gdmVyc2lvbnMgb2YgQ1B5dGhvbiBwcmlvciB0byAzLjUsIHRoZSBjb2RlIGluCisgICAgICAgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudCB3YXMgbm90IHNldCB1cCB0byBjb3JyZWN0bHkgY2hlY2sgZm9yIG1lbW9yeQorICAgICAgIGxheW91dCAvIHNsb3QgLyBldGMuIGNvbXBhdGliaWxpdHkgZm9yIG5vbi1IRUFQVFlQRSBjbGFzc2VzLCBzbyB3ZSBqdXN0CisgICAgICAgZGlzYWxsb3dlZCBfX2NsYXNzX18gYXNzaWdubWVudCBpbiBhbnkgY2FzZSB0aGF0IHdhc24ndCBIRUFQVFlQRSAtPgorICAgICAgIEhFQVBUWVBFLgorCisgICAgICAgRHVyaW5nIHRoZSAzLjUgZGV2ZWxvcG1lbnQgY3ljbGUsIHdlIGZpeGVkIHRoZSBjb2RlIGluCisgICAgICAgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudCB0byBjb3JyZWN0bHkgY2hlY2sgY29tcGF0aWJpbGl0eSBiZXR3ZWVuCisgICAgICAgYXJiaXRyYXJ5IHR5cGVzLCBhbmQgc3RhcnRlZCBhbGxvd2luZyBfX2NsYXNzX18gYXNzaWdubWVudCBpbiBhbGwgY2FzZXMKKyAgICAgICB3aGVyZSB0aGUgb2xkIGFuZCBuZXcgdHlwZXMgZGlkIGluIGZhY3QgaGF2ZSBjb21wYXRpYmxlIHNsb3RzIGFuZAorICAgICAgIG1lbW9yeSBsYXlvdXQgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IHdlcmUgaW1wbGVtZW50ZWQgYXMgSEVBUFRZUEVzCisgICAgICAgb3Igbm90KS4KKworICAgICAgIEp1c3QgYmVmb3JlIDMuNSB3YXMgcmVsZWFzZWQsIHRob3VnaCwgd2UgZGlzY292ZXJlZCB0aGF0IHRoaXMgbGVkIHRvCisgICAgICAgcHJvYmxlbXMgd2l0aCBpbW11dGFibGUgdHlwZXMgbGlrZSBpbnQsIHdoZXJlIHRoZSBpbnRlcnByZXRlciBhc3N1bWVzCisgICAgICAgdGhleSBhcmUgaW1tdXRhYmxlIGFuZCBpbnRlcm5zIHNvbWUgdmFsdWVzLiBGb3JtZXJseSB0aGlzIHdhc24ndCBhCisgICAgICAgcHJvYmxlbSwgYmVjYXVzZSB0aGV5IHJlYWxseSB3ZXJlIGltbXV0YWJsZSAtLSBpbiBwYXJ0aWN1bGFyLCBhbGwgdGhlCisgICAgICAgdHlwZXMgd2hlcmUgdGhlIGludGVycHJldGVyIGFwcGxpZWQgdGhpcyBpbnRlcm5pbmcgdHJpY2sgaGFwcGVuZWQgdG8KKyAgICAgICBhbHNvIGJlIHN0YXRpY2FsbHkgYWxsb2NhdGVkLCBzbyB0aGUgb2xkIEhFQVBUWVBFIHJ1bGVzIHdlcmUKKyAgICAgICAiYWNjaWRlbnRhbGx5IiBzdG9wcGluZyB0aGVtIGZyb20gYWxsb3dpbmcgX19jbGFzc19fIGFzc2lnbm1lbnQuIEJ1dAorICAgICAgIHdpdGggdGhlIGNoYW5nZXMgdG8gX19jbGFzc19fIGFzc2lnbm1lbnQsIHdlIHN0YXJ0ZWQgYWxsb3dpbmcgY29kZSBsaWtlCisKKyAgICAgICAgIGNsYXNzIE15SW50KGludCk6CisgICAgICAgICAgICAgLi4uCisgICAgICAgICAjIE1vZGlmaWVzIHRoZSB0eXBlIG9mICphbGwqIGluc3RhbmNlcyBvZiAxIGluIHRoZSB3aG9sZSBwcm9ncmFtLAorICAgICAgICAgIyBpbmNsdWRpbmcgZnV0dXJlIGluc3RhbmNlcyAoISksIGJlY2F1c2UgdGhlIDEgb2JqZWN0IGlzIGludGVybmVkLgorICAgICAgICAgKDEpLl9fY2xhc3NfXyA9IE15SW50CisKKyAgICAgICAoc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjQ5MTIpLgorCisgICAgICAgSW4gdGhlb3J5IHRoZSBwcm9wZXIgZml4IHdvdWxkIGJlIHRvIGlkZW50aWZ5IHdoaWNoIGNsYXNzZXMgcmVseSBvbgorICAgICAgIHRoaXMgaW52YXJpYW50IGFuZCBzb21laG93IGRpc2FsbG93IF9fY2xhc3NfXyBhc3NpZ25tZW50IG9ubHkgZm9yIHRoZW0sCisgICAgICAgcGVyaGFwcyB2aWEgc29tZSBtZWNoYW5pc20gbGlrZSBhIG5ldyBQeV9UUEZMQUdTX0lNTVVUQUJMRSBmbGFnIChhCisgICAgICAgImJsYWNrbGlzdGluZyIgYXBwcm9hY2gpLiBCdXQgaW4gcHJhY3RpY2UsIHNpbmNlIHRoaXMgcHJvYmxlbSB3YXNuJ3QKKyAgICAgICBub3RpY2VkIGxhdGUgaW4gdGhlIDMuNSBSQyBjeWNsZSwgd2UncmUgdGFraW5nIHRoZSBjb25zZXJ2YXRpdmUKKyAgICAgICBhcHByb2FjaCBhbmQgcmVpbnN0YXRpbmcgdGhlIHNhbWUgSEVBUFRZUEUtPkhFQVBUWVBFIGNoZWNrIHRoYXQgd2UgdXNlZAorICAgICAgIHRvIGhhdmUsIHBsdXMgYSAid2hpdGVsaXN0Ii4gRm9yIG5vdywgdGhlIHdoaXRlbGlzdCBjb25zaXN0cyBvbmx5IG9mCisgICAgICAgTW9kdWxlVHlwZSBzdWJ0eXBlcywgc2luY2UgdGhvc2UgYXJlIHRoZSBjYXNlcyB0aGF0IG1vdGl2YXRlZCB0aGUgcGF0Y2gKKyAgICAgICBpbiB0aGUgZmlyc3QgcGxhY2UgLS0gc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjI5ODYgLS0gYW5kCisgICAgICAgc2luY2UgbW9kdWxlIG9iamVjdHMgYXJlIG11dGFibGUgd2UgY2FuIGJlIHN1cmUgdGhhdCB0aGV5IGFyZQorICAgICAgIGRlZmluaXRlbHkgbm90IGJlaW5nIGludGVybmVkLiBTbyBub3cgd2UgYWxsb3cgSEVBUFRZUEUtPkhFQVBUWVBFICpvcioKKyAgICAgICBNb2R1bGVUeXBlIHN1YnR5cGUgLT4gTW9kdWxlVHlwZSBzdWJ0eXBlLgorCisgICAgICAgU28gZmFyIGFzIHdlIGtub3csIGFsbCB0aGUgY29kZSBiZXlvbmQgdGhlIGZvbGxvd2luZyAnaWYnIHN0YXRlbWVudAorICAgICAgIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBub24tSEVBUFRZUEUgY2xhc3NlcywgYW5kIHRoZSBIRUFQVFlQRSBjaGVjayBpcworICAgICAgIG5lZWRlZCBvbmx5IHRvIHByb3RlY3QgdGhhdCBzdWJzZXQgb2Ygbm9uLUhFQVBUWVBFIGNsYXNzZXMgZm9yIHdoaWNoCisgICAgICAgdGhlIGludGVycHJldGVyIGhhcyBiYWtlZCBpbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGFsbCBpbnN0YW5jZXMgYXJlCisgICAgICAgdHJ1bHkgaW1tdXRhYmxlLgorICAgICovCisgICAgaWYgKCEoUHlUeXBlX0lzU3VidHlwZShuZXd0bywgJlB5TW9kdWxlX1R5cGUpICYmCisgICAgICAgICAgUHlUeXBlX0lzU3VidHlwZShvbGR0bywgJlB5TW9kdWxlX1R5cGUpKSAmJgorICAgICAgICAoIShuZXd0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSB8fAorICAgICAgICAgIShvbGR0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJfX2NsYXNzX18gYXNzaWdubWVudDogb25seSBmb3IgaGVhcCB0eXBlcyIpOworICAgICAgICAgICAgICAgICAgICAgIl9fY2xhc3NfXyBhc3NpZ25tZW50IG9ubHkgc3VwcG9ydGVkIGZvciBoZWFwIHR5cGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJvciBNb2R1bGVUeXBlIHN1YmNsYXNzZXMiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGlmIChjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KG9sZHRvLCBuZXd0bywgIl9fY2xhc3NfXyIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihuZXd0byk7CisgICAgICAgIGlmIChuZXd0by0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQorICAgICAgICAgICAgUHlfSU5DUkVGKG5ld3RvKTsKICAgICAgICAgUHlfVFlQRShzZWxmKSA9IG5ld3RvOwotICAgICAgICBQeV9ERUNSRUYob2xkdG8pOworICAgICAgICBpZiAob2xkdG8tPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGR0byk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTM5NzIsNDggKzQwOTMsODcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV80KFB5T2JqZWN0ICpvYmopCityZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmosIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwogICAgIFB5T2JqZWN0ICpuZXdvYmosICpuZXdhcmdzLCAqc3RhdGUsICpsaXN0aXRlbXMsICpkaWN0aXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKIAotICAgIGlmIChfUHlPYmplY3RfR2V0TmV3QXJndW1lbnRzKG9iaiwgJmFyZ3MsICZrd2FyZ3MpIDwgMCkgeworICAgIGlmIChfUHlPYmplY3RfR2V0TmV3QXJndW1lbnRzKG9iaiwgJmFyZ3MsICZrd2FyZ3MpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoa3dhcmdzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmIChjb3B5cmVnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKLSAgICBQeV9ERUNSRUYoY29weXJlZyk7Ci0gICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3YXJncykgPT0gMCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9fKTsKKyAgICAgICAgUHlPYmplY3QgKmNsczsKKyAgICAgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgICAgIFB5X1hERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9fKTsKKyAgICAgICAgUHlfREVDUkVGKGNvcHlyZWcpOworICAgICAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcobisxKTsKKyAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOworICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCBjbHMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGkrMSwgdik7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIGlmIChwcm90byA+PSA0KSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworCisgICAgICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfZXhfXyk7CisgICAgICAgIFB5X0RFQ1JFRihjb3B5cmVnKTsKKyAgICAgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX1BhY2soMywgUHlfVFlQRShvYmopLCBhcmdzLCBrd2FyZ3MpOwogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3b2JqKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Q7IHNpbmNlIF9fZ2V0bmV3YXJnc19leF9fIHJldHVybmVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50cy4iKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgUHlfREVDUkVGKGNvcHlyZWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3YXJncyA9IFB5VHVwbGVfUGFjaygzLCBQeV9UWVBFKG9iaiksIGFyZ3MsIGt3YXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKwogICAgIHN0YXRlID0gX1B5T2JqZWN0X0dldFN0YXRlKG9iaik7CiAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CkBAIC00MDM2LDg1ICs0MTk2LDEyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV8yKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKmNsczsKLSAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICphcmdzMiA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdGF0ZSA9IE5VTEwsICpsaXN0aXRlbXMgPSBOVUxMLCAqZGljdGl0ZW1zID0gTlVMTDsKLSAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEwsICpuZXdvYmogPSBOVUxMLCAqcmVzID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7Ci0KLSAgICBpZiAoX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhvYmosICZhcmdzLCAma3dhcmdzKSA8IDApIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMKTsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChrd2FyZ3MgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlEaWN0X1NpemUoa3dhcmdzKSA+IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0OyBzaW5jZSBfX2dldG5ld2FyZ3NfZXhfXyByZXR1cm5lZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnRzLiIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9DTEVBUihrd2FyZ3MpOwotICAgIH0KLQotICAgIHN0YXRlID0gX1B5T2JqZWN0X0dldFN0YXRlKG9iaik7Ci0gICAgaWYgKHN0YXRlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgaWYgKF9QeU9iamVjdF9HZXRJdGVtc0l0ZXIob2JqLCAmbGlzdGl0ZW1zLCAmZGljdGl0ZW1zKSA8IDApCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7Ci0gICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkKLSAgICAgICAgZ290byBlbmQ7Ci0gICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9fKTsKLSAgICBpZiAobmV3b2JqID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotCi0gICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7Ci0gICAgYXJnczIgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChhcmdzMiA9PSBOVUxMKQotICAgICAgICBnb3RvIGVuZDsKLSAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOwotICAgIFB5X0lOQ1JFRihjbHMpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIDAsIGNscyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzMiwgaSsxLCB2KTsKLSAgICB9Ci0KLSAgICByZXMgPSBQeVR1cGxlX1BhY2soNSwgbmV3b2JqLCBhcmdzMiwgc3RhdGUsIGxpc3RpdGVtcywgZGljdGl0ZW1zKTsKLQotICBlbmQ6Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICBQeV9YREVDUkVGKGFyZ3MyKTsKLSAgICBQeV9YREVDUkVGKHN0YXRlKTsKLSAgICBQeV9YREVDUkVGKGxpc3RpdGVtcyk7Ci0gICAgUHlfWERFQ1JFRihkaWN0aXRlbXMpOwotICAgIFB5X1hERUNSRUYoY29weXJlZyk7Ci0gICAgUHlfWERFQ1JFRihuZXdvYmopOwotICAgIHJldHVybiByZXM7Ci19Ci0KIC8qCiAgKiBUaGVyZSB3ZXJlIHR3byBwcm9ibGVtcyB3aGVuIG9iamVjdC5fX3JlZHVjZV9fIGFuZCBvYmplY3QuX19yZWR1Y2VfZXhfXwogICogd2VyZSBpbXBsZW1lbnRlZCBpbiB0aGUgc2FtZSBmdW5jdGlvbjoKICAqICAtIHRyeWluZyB0byBwaWNrbGUgYW4gb2JqZWN0IHdpdGggYSBjdXN0b20gX19yZWR1Y2VfXyBtZXRob2QgdGhhdAogICogICAgZmVsbCBiYWNrIHRvIG9iamVjdC5fX3JlZHVjZV9fIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBsZWQgdG8KLSAqICAgIGluZmluaXRlIHJlY3Vyc2lvbiBhdCBQeXRob24gbGV2ZWwgYW5kIGV2ZW50dWFsIFJ1bnRpbWVFcnJvci4KKyAqICAgIGluZmluaXRlIHJlY3Vyc2lvbiBhdCBQeXRob24gbGV2ZWwgYW5kIGV2ZW50dWFsIFJlY3Vyc2lvbkVycm9yLgogICogIC0gUGlja2xpbmcgb2JqZWN0cyB0aGF0IGxpZWQgYWJvdXQgdGhlaXIgdHlwZSBieSBvdmVyd3JpdGluZyB0aGUKICAqICAgIF9fY2xhc3NfXyBkZXNjcmlwdG9yIGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uIGF0IEMgbGV2ZWwKICAqICAgIGFuZCBldmVudHVhbCBzZWdmYXVsdC4KQEAgLTQxMjksMTAgKzQyMTYsOCBAQAogewogICAgIFB5T2JqZWN0ICpjb3B5cmVnLCAqcmVzOwogCi0gICAgaWYgKHByb3RvID49IDQpCi0gICAgICAgIHJldHVybiByZWR1Y2VfNChzZWxmKTsKLSAgICBlbHNlIGlmIChwcm90byA+PSAyKQotICAgICAgICByZXR1cm4gcmVkdWNlXzIoc2VsZik7CisgICAgaWYgKHByb3RvID49IDIpCisgICAgICAgIHJldHVybiByZWR1Y2VfbmV3b2JqKHNlbGYsIHByb3RvKTsKIAogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmICghY29weXJlZykKQEAgLTQ1NDcsNiArNDYzMiw3IEBACiAjZGVmaW5lIENPUFlTTE9UKFNMT1QpIFwKICAgICBpZiAoIXR5cGUtPlNMT1QgJiYgU0xPVERFRklORUQoU0xPVCkpIHR5cGUtPlNMT1QgPSBiYXNlLT5TTE9UCiAKKyNkZWZpbmUgQ09QWUFTWU5DKFNMT1QpIENPUFlTTE9UKHRwX2FzX2FzeW5jLT5TTE9UKQogI2RlZmluZSBDT1BZTlVNKFNMT1QpIENPUFlTTE9UKHRwX2FzX251bWJlci0+U0xPVCkKICNkZWZpbmUgQ09QWVNFUShTTE9UKSBDT1BZU0xPVCh0cF9hc19zZXF1ZW5jZS0+U0xPVCkKICNkZWZpbmUgQ09QWU1BUChTTE9UKSBDT1BZU0xPVCh0cF9hc19tYXBwaW5nLT5TTE9UKQpAQCAtNDU5Miw2ICs0Njc4LDE3IEBACiAgICAgICAgIENPUFlOVU0obmJfaW5wbGFjZV90cnVlX2RpdmlkZSk7CiAgICAgICAgIENPUFlOVU0obmJfaW5wbGFjZV9mbG9vcl9kaXZpZGUpOwogICAgICAgICBDT1BZTlVNKG5iX2luZGV4KTsKKyAgICAgICAgQ09QWU5VTShuYl9tYXRyaXhfbXVsdGlwbHkpOworICAgICAgICBDT1BZTlVNKG5iX2lucGxhY2VfbWF0cml4X211bHRpcGx5KTsKKyAgICB9CisKKyAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCAmJiBiYXNlLT50cF9hc19hc3luYyAhPSBOVUxMKSB7CisgICAgICAgIGJhc2ViYXNlID0gYmFzZS0+dHBfYmFzZTsKKyAgICAgICAgaWYgKGJhc2ViYXNlLT50cF9hc19hc3luYyA9PSBOVUxMKQorICAgICAgICAgICAgYmFzZWJhc2UgPSBOVUxMOworICAgICAgICBDT1BZQVNZTkMoYW1fYXdhaXQpOworICAgICAgICBDT1BZQVNZTkMoYW1fYWl0ZXIpOworICAgICAgICBDT1BZQVNZTkMoYW1fYW5leHQpOwogICAgIH0KIAogICAgIGlmICh0eXBlLT50cF9hc19zZXF1ZW5jZSAhPSBOVUxMICYmIGJhc2UtPnRwX2FzX3NlcXVlbmNlICE9IE5VTEwpIHsKQEAgLTQ4MDMsMTQgKzQ5MDAsMTEgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpiID0gUHlUdXBsZV9HRVRfSVRFTShiYXNlcywgaSk7CiAgICAgICAgICAgICBpZiAoUHlUeXBlX0NoZWNrKGIpICYmCiAgICAgICAgICAgICAgICAgKCgoUHlUeXBlT2JqZWN0ICopYiktPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlszMDBdOwotICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYnV0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdHMgYmFzZSB0eXBlICclLjEwMHMnIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoKFB5VHlwZU9iamVjdCAqKWIpLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybihQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIGJ1ZikgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0cyBiYXNlIHR5cGUgJyUuMTAwcycgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgKChQeVR5cGVPYmplY3QgKiliKS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00ODY2LDYgKzQ5NjAsOCBAQAogICAgIC8qIFNvbWUgbW9yZSBzcGVjaWFsIHN0dWZmICovCiAgICAgYmFzZSA9IHR5cGUtPnRwX2Jhc2U7CiAgICAgaWYgKGJhc2UgIT0gTlVMTCkgeworICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgPT0gTlVMTCkKKyAgICAgICAgICAgIHR5cGUtPnRwX2FzX2FzeW5jID0gYmFzZS0+dHBfYXNfYXN5bmM7CiAgICAgICAgIGlmICh0eXBlLT50cF9hc19udW1iZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHR5cGUtPnRwX2FzX251bWJlciA9IGJhc2UtPnRwX2FzX251bWJlcjsKICAgICAgICAgaWYgKHR5cGUtPnRwX2FzX3NlcXVlbmNlID09IE5VTEwpCkBAIC00ODg2LDE2ICs0OTgyLDYgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgLyogV2FybiBmb3IgYSB0eXBlIHRoYXQgaW1wbGVtZW50cyB0cF9jb21wYXJlIChub3cga25vd24gYXMKLSAgICAgICB0cF9yZXNlcnZlZCkgYnV0IG5vdCB0cF9yaWNoY29tcGFyZS4gKi8KLSAgICBpZiAodHlwZS0+dHBfcmVzZXJ2ZWQgJiYgIXR5cGUtPnRwX3JpY2hjb21wYXJlKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiVHlwZSAlLjEwMHMgZGVmaW5lcyB0cF9yZXNlcnZlZCAoZm9ybWVybHkgdHBfY29tcGFyZSkgIgotICAgICAgICAgICAgImJ1dCBub3QgdHBfcmljaGNvbXBhcmUuIENvbXBhcmlzb25zIG1heSBub3QgYmVoYXZlIGFzIGludGVuZGVkLiIsCi0gICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KICAgICAvKiBBbGwgZG9uZSAtLSBzZXQgdGhlIHJlYWR5IGZsYWcgKi8KICAgICBhc3NlcnQodHlwZS0+dHBfZGljdCAhPSBOVUxMKTsKICAgICB0eXBlLT50cF9mbGFncyA9CkBAIC01NzYyLDYgKzU4NDgsNyBAQAogU0xPVDFCSU4oc2xvdF9uYl9hZGQsIG5iX2FkZCwgIl9fYWRkX18iLCAiX19yYWRkX18iKQogU0xPVDFCSU4oc2xvdF9uYl9zdWJ0cmFjdCwgbmJfc3VidHJhY3QsICJfX3N1Yl9fIiwgIl9fcnN1Yl9fIikKIFNMT1QxQklOKHNsb3RfbmJfbXVsdGlwbHksIG5iX211bHRpcGx5LCAiX19tdWxfXyIsICJfX3JtdWxfXyIpCitTTE9UMUJJTihzbG90X25iX21hdHJpeF9tdWx0aXBseSwgbmJfbWF0cml4X211bHRpcGx5LCAiX19tYXRtdWxfXyIsICJfX3JtYXRtdWxfXyIpCiBTTE9UMUJJTihzbG90X25iX3JlbWFpbmRlciwgbmJfcmVtYWluZGVyLCAiX19tb2RfXyIsICJfX3Jtb2RfXyIpCiBTTE9UMUJJTihzbG90X25iX2Rpdm1vZCwgbmJfZGl2bW9kLCAiX19kaXZtb2RfXyIsICJfX3JkaXZtb2RfXyIpCiAKQEAgLTU4NTUsNiArNTk0Miw3IEBACiBTTE9UMShzbG90X25iX2lucGxhY2VfYWRkLCAiX19pYWRkX18iLCBQeU9iamVjdCAqLCAiTyIpCiBTTE9UMShzbG90X25iX2lucGxhY2Vfc3VidHJhY3QsICJfX2lzdWJfXyIsIFB5T2JqZWN0ICosICJPIikKIFNMT1QxKHNsb3RfbmJfaW5wbGFjZV9tdWx0aXBseSwgIl9faW11bF9fIiwgUHlPYmplY3QgKiwgIk8iKQorU0xPVDEoc2xvdF9uYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSwgIl9faW1hdG11bF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3JlbWFpbmRlciwgIl9faW1vZF9fIiwgUHlPYmplY3QgKiwgIk8iKQogLyogQ2FuJ3QgdXNlIFNMT1QxIGhlcmUsIGJlY2F1c2UgbmJfaW5wbGFjZV9wb3dlciBpcyB0ZXJuYXJ5ICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjI0NSw2ICs2MzMzLDU5IEBACiAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Nsb3RfYW1fYXdhaXQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19hd2FpdF9fKTsKKworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fYXdhaXRfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvYmplY3QgJS41MHMgZG9lcyBub3QgaGF2ZSBfX2F3YWl0X18gbWV0aG9kIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbG90X2FtX2FpdGVyKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fYWl0ZXJfXyk7CisKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2FpdGVyX18pOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAib2JqZWN0ICUuNTBzIGRvZXMgbm90IGhhdmUgX19haXRlcl9fIG1ldGhvZCIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2xvdF9hbV9hbmV4dChQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihfX2FuZXh0X18pOworCisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19hbmV4dF9fKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm9iamVjdCAlLjUwcyBkb2VzIG5vdCBoYXZlIF9fYW5leHRfXyBtZXRob2QiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KIAogLyoKIFRhYmxlIG1hcHBpbmcgX19mb29fXyBuYW1lcyB0byB0cF9mb28gb2Zmc2V0cyBhbmQgc2xvdF90cF9mb28gd3JhcHBlciBmdW5jdGlvbnMuCkBAIC02MjYxLDYgKzY0MDIsNyBAQAogCiAjdW5kZWYgVFBTTE9UCiAjdW5kZWYgRkxTTE9UCisjdW5kZWYgQU1TTE9UCiAjdW5kZWYgRVRTTE9UCiAjdW5kZWYgU1FTTE9UCiAjdW5kZWYgTVBTTE9UCkBAIC02Mjc5LDYgKzY0MjEsOCBAQAogI2RlZmluZSBFVFNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXAogICAgIHtOQU1FLCBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBTTE9UKSwgKHZvaWQgKikoRlVOQ1RJT04pLCBXUkFQUEVSLCBcCiAgICAgIFB5RG9jX1NUUihET0MpfQorI2RlZmluZSBBTVNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXAorICAgIEVUU0xPVChOQU1FLCBhc19hc3luYy5TTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKQogI2RlZmluZSBTUVNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXAogICAgIEVUU0xPVChOQU1FLCBhc19zZXF1ZW5jZS5TTE9ULCBGVU5DVElPTiwgV1JBUFBFUiwgRE9DKQogI2RlZmluZSBNUFNMT1QoTkFNRSwgU0xPVCwgRlVOQ1RJT04sIFdSQVBQRVIsIERPQykgXApAQCAtNjM1OCw2ICs2NTAyLDEzIEBACiAgICAgICAgICAgICJDcmVhdGUgYW5kIHJldHVybiBuZXcgb2JqZWN0LiAgU2VlIGhlbHAodHlwZSkgZm9yIGFjY3VyYXRlIHNpZ25hdHVyZS4iKSwKICAgICBUUFNMT1QoIl9fZGVsX18iLCB0cF9maW5hbGl6ZSwgc2xvdF90cF9maW5hbGl6ZSwgKHdyYXBwZXJmdW5jKXdyYXBfZGVsLCAiIiksCiAKKyAgICBBTVNMT1QoIl9fYXdhaXRfXyIsIGFtX2F3YWl0LCBzbG90X2FtX2F3YWl0LCB3cmFwX3VuYXJ5ZnVuYywKKyAgICAgICAgICAgIl9fYXdhaXRfXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBhbiBpdGVyYXRvciB0byBiZSB1c2VkIGluIGF3YWl0IGV4cHJlc3Npb24uIiksCisgICAgQU1TTE9UKCJfX2FpdGVyX18iLCBhbV9haXRlciwgc2xvdF9hbV9haXRlciwgd3JhcF91bmFyeWZ1bmMsCisgICAgICAgICAgICJfX2FpdGVyX18oJHNlbGYsIC8pXG4tLVxuXG5SZXR1cm4gYW4gYXdhaXRhYmxlLCB0aGF0IHJlc29sdmVzIGluIGFzeW5jaHJvbm91cyBpdGVyYXRvci4iKSwKKyAgICBBTVNMT1QoIl9fYW5leHRfXyIsIGFtX2FuZXh0LCBzbG90X2FtX2FuZXh0LCB3cmFwX3VuYXJ5ZnVuYywKKyAgICAgICAgICAgIl9fYW5leHRfXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBhIHZhbHVlIG9yIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4iKSwKKwogICAgIEJJTlNMT1QoIl9fYWRkX18iLCBuYl9hZGQsIHNsb3RfbmJfYWRkLAogICAgICAgICAgICAiKyIpLAogICAgIFJCSU5TTE9UKCJfX3JhZGRfXyIsIG5iX2FkZCwgc2xvdF9uYl9hZGQsCkBAIC02NDM1LDYgKzY1ODYsMTIgQEAKICAgICAgICAgICAgIl9faW5kZXhfXygkc2VsZiwgLylcbi0tXG5cbiIKICAgICAgICAgICAgIlJldHVybiBzZWxmIGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyLCBpZiBzZWxmIGlzIHN1aXRhYmxlICIKICAgICAgICAgICAgImZvciB1c2UgYXMgYW4gaW5kZXggaW50byBhIGxpc3QuIiksCisgICAgQklOU0xPVCgiX19tYXRtdWxfXyIsIG5iX21hdHJpeF9tdWx0aXBseSwgc2xvdF9uYl9tYXRyaXhfbXVsdGlwbHksCisgICAgICAgICAgICAiQCIpLAorICAgIFJCSU5TTE9UKCJfX3JtYXRtdWxfXyIsIG5iX21hdHJpeF9tdWx0aXBseSwgc2xvdF9uYl9tYXRyaXhfbXVsdGlwbHksCisgICAgICAgICAgICAgIkAiKSwKKyAgICBJQlNMT1QoIl9faW1hdG11bF9fIiwgbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHksIHNsb3RfbmJfaW5wbGFjZV9tYXRyaXhfbXVsdGlwbHksCisgICAgICAgICAgIHdyYXBfYmluYXJ5ZnVuYywgIkA9IiksCiAgICAgTVBTTE9UKCJfX2xlbl9fIiwgbXBfbGVuZ3RoLCBzbG90X21wX2xlbmd0aCwgd3JhcF9sZW5mdW5jLAogICAgICAgICAgICAiX19sZW5fXygkc2VsZiwgLylcbi0tXG5cblJldHVybiBsZW4oc2VsZikuIiksCiAgICAgTVBTTE9UKCJfX2dldGl0ZW1fXyIsIG1wX3N1YnNjcmlwdCwgc2xvdF9tcF9zdWJzY3JpcHQsCkBAIC02NTA0LDYgKzY2NjEsMTAgQEAKICAgICAgICAgcHRyID0gKGNoYXIgKil0eXBlLT50cF9hc19udW1iZXI7CiAgICAgICAgIG9mZnNldCAtPSBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19udW1iZXIpOwogICAgIH0KKyAgICBlbHNlIGlmICgoc2l6ZV90KW9mZnNldCA+PSBvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYykpIHsKKyAgICAgICAgcHRyID0gKGNoYXIgKil0eXBlLT50cF9hc19hc3luYzsKKyAgICAgICAgb2Zmc2V0IC09IG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX2FzeW5jKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHB0ciA9IChjaGFyICopdHlwZTsKICAgICB9CkBAIC02NjU1LDE1ICs2ODE2LDE1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgc2xvdGRlZnNfaW5pdGlhbGl6ZWQgPSAwOwogLyogSW5pdGlhbGl6ZSB0aGUgc2xvdGRlZnMgdGFibGUgYnkgYWRkaW5nIGludGVybmVkIHN0cmluZyBvYmplY3RzIGZvciB0aGUKLSAgIG5hbWVzIGFuZCBzb3J0aW5nIHRoZSBlbnRyaWVzLiAqLworICAgbmFtZXMuICovCiBzdGF0aWMgdm9pZAogaW5pdF9zbG90ZGVmcyh2b2lkKQogewogICAgIHNsb3RkZWYgKnA7Ci0gICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAKLSAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgaWYgKHNsb3RkZWZzX2luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChwID0gc2xvdGRlZnM7IHAtPm5hbWU7IHArKykgewogICAgICAgICAvKiBTbG90cyBtdXN0IGJlIG9yZGVyZWQgYnkgdGhlaXIgb2Zmc2V0IGluIHRoZSBQeUhlYXBUeXBlT2JqZWN0LiAqLwpAQCAtNjY3Miw3ICs2ODMzLDE3IEBACiAgICAgICAgIGlmICghcC0+bmFtZV9zdHJvYmopCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJPdXQgb2YgbWVtb3J5IGludGVybmluZyBzbG90ZGVmIG5hbWVzIik7CiAgICAgfQotICAgIGluaXRpYWxpemVkID0gMTsKKyAgICBzbG90ZGVmc19pbml0aWFsaXplZCA9IDE7Cit9CisKKy8qIFVuZG8gaW5pdF9zbG90ZGVmcywgcmVsZWFzaW5nIHRoZSBpbnRlcm5lZCBzdHJpbmdzLiAqLworc3RhdGljIHZvaWQgY2xlYXJfc2xvdGRlZnModm9pZCkKK3sKKyAgICBzbG90ZGVmICpwOworICAgIGZvciAocCA9IHNsb3RkZWZzOyBwLT5uYW1lOyBwKyspIHsKKyAgICAgICAgUHlfQ0xFQVIocC0+bmFtZV9zdHJvYmopOworICAgIH0KKyAgICBzbG90ZGVmc19pbml0aWFsaXplZCA9IDA7CiB9CiAKIC8qIFVwZGF0ZSB0aGUgc2xvdHMgYWZ0ZXIgYXNzaWdubWVudCB0byBhIGNsYXNzICh0eXBlKSBhdHRyaWJ1dGUuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVzbG90cy5pbmMgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKaW5kZXggY2FhMWUwMy4uZGM3NTBjYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jCisrKyBiL09iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtNzMsMyArNzMsOSBAQAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgaHRfdHlwZS50cF9tZW1iZXJzKSwKIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGh0X3R5cGUudHBfZ2V0c2V0KSwKIG9mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGh0X3R5cGUudHBfZnJlZSksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19udW1iZXIubmJfbWF0cml4X211bHRpcGx5KSwKK29mZnNldG9mKFB5SGVhcFR5cGVPYmplY3QsIGFzX251bWJlci5uYl9pbnBsYWNlX21hdHJpeF9tdWx0aXBseSksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYy5hbV9hd2FpdCksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYy5hbV9haXRlciksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBhc19hc3luYy5hbV9hbmV4dCksCitvZmZzZXRvZihQeUhlYXBUeXBlT2JqZWN0LCBodF90eXBlLnRwX2ZpbmFsaXplKSwKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLnB5IGIvT2JqZWN0cy90eXBlc2xvdHMucHkKaW5kZXggYjI0YzdmNC4uYmEzN2M0MCAxMDA3NTUKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMucHkKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTEyLDYgKzEyLDggQEAKICAgICBtZW1iZXIgPSBtLmdyb3VwKDEpCiAgICAgaWYgbWVtYmVyLnN0YXJ0c3dpdGgoInRwXyIpOgogICAgICAgICBtZW1iZXIgPSAiaHRfdHlwZS4iK21lbWJlcgorICAgIGVsaWYgbWVtYmVyLnN0YXJ0c3dpdGgoImFtXyIpOgorICAgICAgICBtZW1iZXIgPSAiYXNfYXN5bmMuIittZW1iZXIKICAgICBlbGlmIG1lbWJlci5zdGFydHN3aXRoKCJuYl8iKToKICAgICAgICAgbWVtYmVyID0gImFzX251bWJlci4iK21lbWJlcgogICAgIGVsaWYgbWVtYmVyLnN0YXJ0c3dpdGgoIm1wXyIpOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYyBiL09iamVjdHMvdW5pY29kZWN0eXBlLmMKaW5kZXggZWE1NDBkNi4uZDhjOTVjOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RlY3R5cGUuYworKysgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIEVYVEVOREVEX0NBU0VfTUFTSyAweDQwMDAKIAogdHlwZWRlZiBzdHJ1Y3QgewotICAgIC8qIAorICAgIC8qCiAgICAgICAgVGhlc2UgYXJlIGVpdGhlciBkZWx0YXMgdG8gdGhlIGNoYXJhY3RlciBvciBvZmZzZXRzIGluCiAgICAgICAgX1B5VW5pY29kZV9FeHRlbmRlZENhc2UuCiAgICAgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggZTI4YmFlNC4uOTIyM2M5OSAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTI5MCw2ICsyOTAsOCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKIH07CiAKKyNpbmNsdWRlICJjbGluaWMvdW5pY29kZW9iamVjdC5jLmgiCisKIC8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgogICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCkBAIC01MTksMTAgKzUyMSw2IEBACiAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0NvcHkodW5pY29kZSk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKLXN0YXRpYyBPU1ZFUlNJT05JTkZPRVggd2ludmVyOwotI2VuZGlmCi0KIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC02NDUsNyArNjQzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKHZvaWQgKnMsIGludCBraW5kLAorUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewpAQCAtNzI3LDcgKzcyNSw3IEBACiAgICAgX1B5X0RFQ19SRUZUT1RBTDsKICAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKHVuaWNvZGUpOwogCi0gICAgbmV3X3VuaWNvZGUgPSAoUHlPYmplY3QgKilQeU9iamVjdF9SRUFMTE9DKChjaGFyICopdW5pY29kZSwgbmV3X3NpemUpOworICAgIG5ld191bmljb2RlID0gKFB5T2JqZWN0ICopUHlPYmplY3RfUkVBTExPQyh1bmljb2RlLCBuZXdfc2l6ZSk7CiAgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpIHsKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZSh1bmljb2RlKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTgxNiw3ICs4MTQsNyBAQAogICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CiAKICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSAtIDEpIHsKKyAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLyAoUHlfc3NpemVfdClzaXplb2Yod2NoYXJfdCkgLSAxKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC04ODgsNyArODg2LDcgQEAKICAgICB9CiAKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCi0gICAgaWYgKGxlbmd0aCA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKKyAgICBpZiAobGVuZ3RoID4gKChQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KXNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgewogICAgICAgICByZXR1cm4gKFB5VW5pY29kZU9iamVjdCAqKVB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogICAgIGlmIChsZW5ndGggPCAwKSB7CkBAIC0yMzEzLDM1ICsyMzExLDYgQEAKIAogI2VuZGlmIC8qIEhBVkVfV0NIQVJfSCAqLwogCi1zdGF0aWMgdm9pZAotbWFrZWZtdChjaGFyICpmbXQsIGludCBsb25nZmxhZywgaW50IGxvbmdsb25nZmxhZywgaW50IHNpemVfdGZsYWcsCi0gICAgICAgIGNoYXIgYykKLXsKLSAgICAqZm10KysgPSAnJSc7Ci0gICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAqZm10KysgPSAnbCc7Ci0gICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKSB7Ci0gICAgICAgIC8qIGxvbmdsb25nZmxhZyBzaG91bGQgb25seSBldmVyIGJlIG5vbnplcm8gb24gbWFjaGluZXMgd2l0aAotICAgICAgICAgICBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgY2hhciAqZiA9IFBZX0ZPUk1BVF9MT05HX0xPTkc7Ci0gICAgICAgIHdoaWxlICgqZikKLSAgICAgICAgICAgICpmbXQrKyA9ICpmKys7Ci0jZWxzZQotICAgICAgICAvKiB3ZSBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgICAgICpmbXQrKyA9ICdsJzsKLSNlbmRpZgotICAgIH0KLSAgICBlbHNlIGlmIChzaXplX3RmbGFnKSB7Ci0gICAgICAgIGNoYXIgKmYgPSBQWV9GT1JNQVRfU0laRV9UOwotICAgICAgICB3aGlsZSAoKmYpCi0gICAgICAgICAgICAqZm10KysgPSAqZisrOwotICAgIH0KLSAgICAqZm10KysgPSBjOwotICAgICpmbXQgPSAnXDAnOwotfQotCiAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KICAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAogICAgcGx1cyAxIGZvciB0aGUgc2lnbi4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLwpAQCAtMjUxNyw0OCArMjQ4Niw0MiBAQAogICAgIGNhc2UgJ3gnOgogICAgIHsKICAgICAgICAgLyogdXNlZCBieSBzcHJpbnRmICovCi0gICAgICAgIGNoYXIgZm10WzEwXTsgLyogc2hvdWxkIGJlIGVub3VnaCBmb3IgIiUwbGxkXDAiICovCiAgICAgICAgIGNoYXIgYnVmZmVyW01BWF9MT05HX0xPTkdfQ0hBUlNdOwogICAgICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKIAogICAgICAgICBpZiAoKmYgPT0gJ3UnKSB7Ci0gICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgKmYpOwotCiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nKSk7CiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKICNlbmRpZgogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBzaXplX3QpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgZm10LAorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJXUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgaW50KSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoKmYgPT0gJ3gnKSB7Ci0gICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgJ3gnKTsKLSAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsIHZhX2FyZygqdmFyZ3MsIGludCkpOworICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIleCIsIHZhX2FyZygqdmFyZ3MsIGludCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsICpmKTsKLQogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUFlfTE9OR19MT05HKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsIGZtdCwKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCBmbXQsCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBpbnQpKTsKICAgICAgICAgfQogICAgICAgICBhc3NlcnQobGVuID49IDApOwpAQCAtMzI0MSw3ICszMjA0LDcgQEAKICAgICB3bGVuMiA9IHdjc2xlbih3c3RyKTsKICAgICBpZiAod2xlbjIgIT0gd2xlbikgewogICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyNDksNyArMzIxMiw3IEBACiAgICAgICAgIC8qICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yIGhhbmRsZXIgKi8KICAgICAgICAgY2hhciAqc3RyOwogCi0gICAgICAgIHN0ciA9IF9QeV93Y2hhcjJjaGFyKHdzdHIsICZlcnJvcl9wb3MpOworICAgICAgICBzdHIgPSBQeV9FbmNvZGVMb2NhbGUod3N0ciwgJmVycm9yX3Bvcyk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMzMDIsNyArMzI2NSw3IEBACiAKICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgc2l6ZV90IGVycmxlbjsKLSAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoZXJybXNnLCAmZXJybGVuKTsKICAgICAgICAgaWYgKHdzdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCBlcnJsZW4pOwogICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3c3RyKTsKQEAgLTM0NzcsNyArMzQ0MCw3IEBACiAgICAgbWVtc2V0KCZtYnMsIDAsIHNpemVvZiBtYnMpOwogICAgIHdoaWxlIChsZW4pCiAgICAgewotICAgICAgICBjb252ZXJ0ZWQgPSBtYnJ0b3djKCZjaCwgKGNoYXIqKXN0ciwgbGVuLCAmbWJzKTsKKyAgICAgICAgY29udmVydGVkID0gbWJydG93YygmY2gsIHN0ciwgbGVuLCAmbWJzKTsKICAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAwKQogICAgICAgICAgICAgLyogUmVhY2hlZCBlbmQgb2Ygc3RyaW5nICovCiAgICAgICAgICAgICBicmVhazsKQEAgLTM1MDgsMTkgKzM0NzEsMjAgQEAKICAgICBpbnQgc3Vycm9nYXRlZXNjYXBlOwogICAgIHNpemVfdCBlcnJvcl9wb3M7CiAgICAgY2hhciAqZXJybXNnOwotICAgIFB5T2JqZWN0ICpyZWFzb24sICpleGM7CisgICAgUHlPYmplY3QgKnJlYXNvbiA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCisgICAgUHlPYmplY3QgKmV4YzsKIAogICAgIGlmIChsb2NhbGVfZXJyb3JfaGFuZGxlcihlcnJvcnMsICZzdXJyb2dhdGVlc2NhcGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc3RyW2xlbl0gIT0gJ1wwJyB8fCBsZW4gIT0gc3RybGVuKHN0cikpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgaWYgKHN0cltsZW5dICE9ICdcMCcgfHwgKHNpemVfdClsZW4gIT0gc3RybGVuKHN0cikpICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChzdXJyb2dhdGVlc2NhcGUpIHsKICAgICAgICAgLyogInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IgaGFuZGxlciAqLwotICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoc3RyLCAmd2xlbik7CisgICAgICAgIHdzdHIgPSBQeV9EZWNvZGVMb2NhbGUoc3RyLCAmd2xlbik7CiAgICAgICAgIGlmICh3c3RyID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICh3bGVuID09IChzaXplX3QpLTEpCiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTM1NzMsNyArMzUzNyw3IEBACiAgICAgZXJyb3JfcG9zID0gbWJzdG93Y3NfZXJyb3Jwb3Moc3RyLCBsZW4pOwogICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgewogICAgICAgICBzaXplX3QgZXJybGVuOwotICAgICAgICB3c3RyID0gX1B5X2NoYXIyd2NoYXIoZXJybXNnLCAmZXJybGVuKTsKKyAgICAgICAgd3N0ciA9IFB5X0RlY29kZUxvY2FsZShlcnJtc2csICZlcnJsZW4pOwogICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CiAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdzdHIpOwpAQCAtMzY0MywyMSArMzYwNyw2IEBACiAKIAogaW50Ci1fUHlVbmljb2RlX0hhc05VTENoYXJzKFB5T2JqZWN0KiBzdHIpCi17Ci0gICAgUHlfc3NpemVfdCBwb3M7Ci0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBwb3MgPSBmaW5kY2hhcihQeVVuaWNvZGVfREFUQShzdHIpLCBQeVVuaWNvZGVfS0lORChzdHIpLAotICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0ciksICdcMCcsIDEpOwotICAgIGlmIChwb3MgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIDE7Ci19Ci0KLWludAogUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CkBAIC0zNjg3LDggKzM2MzYsOCBAQAogICAgIH0KICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShvdXRwdXQpOwogICAgIGRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhvdXRwdXQpOwotICAgIGlmIChzaXplICE9IHN0cmxlbihkYXRhKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOworICAgIGlmICgoc2l6ZV90KXNpemUgIT0gc3RybGVuKGRhdGEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBieXRlIik7CiAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0zNzMyLDcgKzM2ODEsNyBAQAogICAgIH0KICAgICBpZiAoZmluZGNoYXIoUHlVbmljb2RlX0RBVEEob3V0cHV0KSwgUHlVbmljb2RlX0tJTkQob3V0cHV0KSwKICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob3V0cHV0KSwgMCwgMSkgPj0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CiAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00ODM3LDcgKzQ3ODYsNyBAQAogCiAgICAgLyogTm90ZTogc2l6ZSB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nIFVuaWNvZGUKICAgICAgICBjaGFyYWN0ZXIgY291bnQgKi8KLSAgICBpZiAoUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yod2NoYXJfdCkgPCAoc2l6ZSArIDEpKQorICAgIGlmIChQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KXNpemVvZih3Y2hhcl90KSA8IChzaXplICsgMSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHVuaWNvZGUgPSBQeU1lbV9SYXdNYWxsb2MoKHNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCF1bmljb2RlKQpAQCAtNTEwMiwzMiArNTA1MSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7Ci0gICAgaW50IGtpbmQ7Ci0gICAgdm9pZCAqZGF0YTsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgY29uc3Qgdm9pZCAqZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBjaGFyICpwOwotICAgIFB5X3NzaXplX3QgbnNpemUsIGk7Ci0gICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCisgICAgUFlfVUlOVDMyX1QgKm91dDsKICNpZiBQWV9MSVRUTEVfRU5ESUFOCi0gICAgaW50IGlvcmRlcltdID0gezAsIDEsIDIsIDN9OworICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPD0gMDsKICNlbHNlCi0gICAgaW50IGlvcmRlcltdID0gezMsIDIsIDEsIDB9OworICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSBieXRlb3JkZXIgPj0gMDsKICNlbmRpZgogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOworICAgIFB5X3NzaXplX3QgbnNpemUsIHBvczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKIAotI2RlZmluZSBTVE9SRUNIQVIoQ0gpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwW2lvcmRlclszXV0gPSAoKENIKSA+PiAyNCkgJiAweGZmOyAgICAgXAotICAgICAgICBwW2lvcmRlclsyXV0gPSAoKENIKSA+PiAxNikgJiAweGZmOyAgICAgXAotICAgICAgICBwW2lvcmRlclsxXV0gPSAoKENIKSA+PiA4KSAmIDB4ZmY7ICAgICAgXAotICAgICAgICBwW2lvcmRlclswXV0gPSAoQ0gpICYgMHhmZjsgICAgICAgICAgICAgXAotICAgICAgICBwICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cikpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MTM4LDU5ICs1MDc3LDUzIEBACiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CiAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKIAotICAgIG5zaXplID0gbGVuICsgKGJ5dGVvcmRlciA9PSAwKTsKLSAgICBpZiAobnNpemUgPiBQWV9TU0laRV9UX01BWCAvIDQpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gNCAtIChieXRlb3JkZXIgPT0gMCkpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG5zaXplID0gbGVuICsgKGJ5dGVvcmRlciA9PSAwKTsKICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuc2l6ZSAqIDQpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyA0LWJ5dGVzIGFsaWduZWQgKi8KKyAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDQpKTsKKyAgICBvdXQgPSAoUFlfVUlOVDMyX1QgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAoYnl0ZW9yZGVyID09IDApCi0gICAgICAgIFNUT1JFQ0hBUigweEZFRkYpOworICAgICAgICAqb3V0KysgPSAweEZFRkY7CiAgICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgZ290byBkb25lOwogCi0gICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpb3JkZXJbMF0gPSAwOwotICAgICAgICBpb3JkZXJbMV0gPSAxOwotICAgICAgICBpb3JkZXJbMl0gPSAyOwotICAgICAgICBpb3JkZXJbM10gPSAzOworICAgIGlmIChieXRlb3JkZXIgPT0gLTEpCiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0zMi1sZSI7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA9PSAxKSB7Ci0gICAgICAgIC8qIGZvcmNlIEJFICovCi0gICAgICAgIGlvcmRlclswXSA9IDM7Ci0gICAgICAgIGlvcmRlclsxXSA9IDI7Ci0gICAgICAgIGlvcmRlclsyXSA9IDE7Ci0gICAgICAgIGlvcmRlclszXSA9IDA7CisgICAgZWxzZSBpZiAoYnl0ZW9yZGVyID09IDEpCiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0zMi1iZSI7Ci0gICAgfQogICAgIGVsc2UKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTMyIjsKIAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgIFNUT1JFQ0hBUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIHJldHVybiB2OworICAgICAgICB1Y3MxbGliX3V0ZjMyX2VuY29kZSgoY29uc3QgUHlfVUNTMSAqKWRhdGEsIGxlbiwgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgZ290byBkb25lOwogICAgIH0KIAotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47KSB7CisgICAgcG9zID0gMDsKKyAgICB3aGlsZSAocG9zIDwgbGVuKSB7CiAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgbW9yZXVuaXRzOwotICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgIGkrKzsKLSAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKLSAgICAgICAgICAgIFNUT1JFQ0hBUihjaCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgcG9zICs9IHVjczJsaWJfdXRmMzJfZW5jb2RlKChjb25zdCBQeV9VQ1MyICopZGF0YSArIHBvcywgbGVuIC0gcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICBwb3MgKz0gdWNzNGxpYl91dGYzMl9lbmNvZGUoKGNvbnN0IFB5X1VDUzQgKilkYXRhICsgcG9zLCBsZW4gLSBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocG9zID09IGxlbikKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICBlbmNvZGluZywgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgIHN0ciwgJmV4YywgaS0xLCBpLCAmaSk7Ci0KKyAgICAgICAgICAgICAgICBzdHIsICZleGMsIHBvcywgcG9zICsgMSwgJnBvcyk7CiAgICAgICAgIGlmICghcmVwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNTE5OCw3ICs1MTMxLDcgQEAKICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7CiAgICAgICAgICAgICBpZiAocmVwc2l6ZSAmIDMpIHsKICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCBpIC0gMSwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwgcG9zIC0gMSwgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQpAQCAtNTIxMSw3ICs1MTQ0LDcgQEAKICAgICAgICAgICAgIG1vcmV1bml0cyA9IHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOwogICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkocmVwKSkgewogICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIGkgLSAxLCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLCBwb3MgLSAxLCBwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CkBAIC01MjE5LDcgKzUxNTIsNyBAQAogCiAgICAgICAgIC8qIGZvdXIgYnl0ZXMgYXJlIHJlc2VydmVkIGZvciBlYWNoIHN1cnJvZ2F0ZSAqLwogICAgICAgICBpZiAobW9yZXVuaXRzID4gMSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBwIC0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG1vcmVieXRlcyA9IDQgKiAobW9yZXVuaXRzIC0gMSk7CiAgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRSh2KSA+IFBZX1NTSVpFX1RfTUFYIC0gbW9yZWJ5dGVzKSB7CiAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwpAQCAtNTIyOCwyMCArNTE2MSwxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgUHlCeXRlc19HRVRfU0laRSh2KSArIG1vcmVieXRlcykgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBwID0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKKyAgICAgICAgICAgIG91dCA9IChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOwotICAgICAgICAgICAgcCArPSByZXBzaXplOworICAgICAgICAgICAgUHlfTUVNQ1BZKG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CisgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgY29uc3QgUHlfVUNTMSAqcmVwZGF0YTsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKLSAgICAgICAgICAgIHJlcGRhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXApOwotICAgICAgICAgICAgd2hpbGUgKHJlcHNpemUtLSkgewotICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqcmVwZGF0YSsrOwotICAgICAgICAgICAgICAgIFNUT1JFQ0hBUihjaCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB1Y3MxbGliX3V0ZjMyX2VuY29kZShQeVVuaWNvZGVfMUJZVEVfREFUQShyZXApLCByZXBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dCwgbmF0aXZlX29yZGVyaW5nKTsKICAgICAgICAgfQogCiAgICAgICAgIFB5X0NMRUFSKHJlcCk7CkBAIC01MjUwLDExICs1MTc5LDEyIEBACiAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciwgZm9yIGV4YW1wbGUsCiAgICAgICAgZW5jb2Rpbmcgb2YgYSBzdHJpbmcgY29udGFpbmluZyBpc29sYXRlZCBzdXJyb2dhdGVzIGFuZCB0aGUgJ2lnbm9yZScKICAgICAgICBoYW5kbGVyIGlzIHVzZWQuICovCi0gICAgbnNpemUgPSBwIC0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICBuc2l6ZSA9ICh1bnNpZ25lZCBjaGFyKikgb3V0IC0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAobnNpemUgIT0gUHlCeXRlc19HRVRfU0laRSh2KSkKICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgbnNpemUpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CisgIGRvbmU6CiAgICAgcmV0dXJuIHY7CiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYocmVwKTsKQEAgLTUyNjIsNyArNTE5Miw2IEBACiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIFB5X1hERUNSRUYodik7CiAgICAgcmV0dXJuIE5VTEw7Ci0jdW5kZWYgU1RPUkVDSEFSCiB9CiAKIFB5T2JqZWN0ICoKQEAgLTY4NDksMjggKzY3NzgsNiBAQAogICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORygqb2JqKTsKIH0KIAotc3RhdGljIGludAotaXNfZGJjc19sZWFkX2J5dGUoVUlOVCBjb2RlX3BhZ2UsIGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCi17Ci0gICAgY29uc3QgY2hhciAqY3VyciA9IHMgKyBvZmZzZXQ7Ci0gICAgY29uc3QgY2hhciAqcHJldjsKLQotICAgIGlmICghSXNEQkNTTGVhZEJ5dGVFeChjb2RlX3BhZ2UsICpjdXJyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBwcmV2ID0gQ2hhclByZXZFeEEoY29kZV9wYWdlLCBzLCBjdXJyLCAwKTsKLSAgICBpZiAocHJldiA9PSBjdXJyKQotICAgICAgICByZXR1cm4gMTsKLSAgICAvKiBGSVhNRTogVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywKLSAgICAgICBhcyBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlCi0gICAgICAgYnl0ZS4gKi8KLSAgICBpZiAoY3VyciAtIHByZXYgPT0gMikKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKnByZXYpKQotICAgICAgICByZXR1cm4gMTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIERXT1JECiBkZWNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlKQogewpAQCAtNjk0NSw3ICs2ODUyLDcgQEAKIGRlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKFVJTlQgY29kZV9wYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sIGNvbnN0IGludCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRpbiA9IGluOwogICAgIGNvbnN0IGNoYXIgKmVuZGluID0gaW4gKyBzaXplOwpAQCAtNjk3Miw3ICs2ODc5LDcgQEAKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CisgICAgaWYgKChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgJiYgZmluYWwpIHsKICAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4gd2UgcmFpc2UgYQogICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuICovCiAgICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgaW4sIHNpemUsIDAsIDAsIHJlYXNvbik7CkBAIC03MDM1LDYgKzY5NDIsMTAgQEAKICAgICAgICAgaWYgKG91dHNpemUgPD0gMCkgewogICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zLCBlbmRpbnBvcywgb3V0cG9zOwogCisgICAgICAgICAgICAvKiBsYXN0IGNoYXJhY3RlciBpbiBwYXJ0aWFsIGRlY29kZT8gKi8KKyAgICAgICAgICAgIGlmIChpbiArIGluc2l6ZSA+PSBlbmRpbiAmJiAhZmluYWwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBpbiAtIHN0YXJ0aW47CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwogICAgICAgICAgICAgb3V0cG9zID0gb3V0IC0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOwpAQCAtNzA2Myw3ICs2OTc0LDggQEAKICAgICBhc3NlcnQob3V0c2l6ZSA8PSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgoKnYpKTsKICAgICBpZiAodW5pY29kZV9yZXNpemUodiwgb3V0c2l6ZSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldCA9IHNpemU7CisgICAgLyogKGluIC0gc3RhcnRpbikgPD0gc2l6ZSBhbmQgc2l6ZSBpcyBhbiBpbnQgKi8KKyAgICByZXQgPSBQeV9TQUZFX0RPV05DQVNUKGluIC0gc3RhcnRpbiwgUHlfc3NpemVfdCwgaW50KTsKIAogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOwpAQCAtNzEwNCwyNCArNzAxNiwxOSBAQAogICAgICAgICAgICAgZG9uZSA9IDE7CiAgICAgICAgIH0KIAotICAgICAgICAvKiBTa2lwIHRyYWlsaW5nIGxlYWQtYnl0ZSB1bmxlc3MgJ2ZpbmFsJyBpcyBzZXQgKi8KLSAgICAgICAgaWYgKCFmaW5hbCAmJiBpc19kYmNzX2xlYWRfYnl0ZShjb2RlX3BhZ2UsIHMsIGNodW5rX3NpemUgLSAxKSkKLSAgICAgICAgICAgIC0tY2h1bmtfc2l6ZTsKLQogICAgICAgICBpZiAoY2h1bmtfc2l6ZSA9PSAwICYmIGRvbmUpIHsKICAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICAgICAgfQogCi0KICAgICAgICAgY29udmVydGVkID0gZGVjb2RlX2NvZGVfcGFnZV9zdHJpY3QoY29kZV9wYWdlLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgY2h1bmtfc2l6ZSk7CiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPT0gLTIpCiAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBkZWNvZGVfY29kZV9wYWdlX2Vycm9ycyhjb2RlX3BhZ2UsICZ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgY2h1bmtfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgIGFzc2VydChjb252ZXJ0ZWQgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsIGZpbmFsKTsKKyAgICAgICAgYXNzZXJ0KGNvbnZlcnRlZCAhPSAwIHx8IGRvbmUpOwogCiAgICAgICAgIGlmIChjb252ZXJ0ZWQgPCAwKSB7CiAgICAgICAgICAgICBQeV9YREVDUkVGKHYpOwpAQCAtNzE2OSwxMyArNzA3Niw3IEBACiBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKFVJTlQgY29kZV9wYWdlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY4KSB7Ci0gICAgICAgIGlmICh3aW52ZXIuZHdNYWpvclZlcnNpb24gPj0gNikKLSAgICAgICAgICAgIC8qIENQX1VURjggc3VwcG9ydHMgV0NfRVJSX0lOVkFMSURfQ0hBUlMgb24gV2luZG93cyBWaXN0YQotICAgICAgICAgICAgICAgYW5kIGxhdGVyICovCi0gICAgICAgICAgICByZXR1cm4gV0NfRVJSX0lOVkFMSURfQ0hBUlM7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIC8qIENQX1VURjggb25seSBzdXBwb3J0cyBmbGFncz0wIG9uIFdpbmRvd3Mgb2xkZXIgdGhhbiBWaXN0YSAqLwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXQ19FUlJfSU5WQUxJRF9DSEFSUzsKICAgICB9CiAgICAgZWxzZSBpZiAoY29kZV9wYWdlID09IENQX1VURjcpIHsKICAgICAgICAgLyogQ1BfVVRGNyBvbmx5IHN1cHBvcnRzIGZsYWdzPTAgKi8KQEAgLTc0ODUsNiArNzM4NiwxMSBAQAogICAgIFB5X3NzaXplX3Qgb2Zmc2V0OwogICAgIGludCBjaHVua19sZW4sIHJldCwgZG9uZTsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwpAQCAtNzU1OCwxMCArNzQ2NCw2IEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogewotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiB9CiAKQEAgLTg1MjgsMTAgKzg0MzAsMTAgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHgpKSB7CiAgICAgICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQVNfTE9ORyh4KTsKLSAgICAgICAgbG9uZyBtYXggPSBQeVVuaWNvZGVfR2V0TWF4KCk7Ci0gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBtYXgpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHgleCkiLCBtYXgrMSk7CisgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJhY3RlciBtYXBwaW5nIG11c3QgYmUgaW4gcmFuZ2UoMHgleCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9VTklDT0RFKzEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC04NTUwLDc2ICs4NDUyLDE2OCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQotLyogZW5zdXJlIHRoYXQgKm91dG9iaiBpcyBhdCBsZWFzdCByZXF1aXJlZHNpemUgY2hhcmFjdGVycyBsb25nLAotICAgaWYgbm90IHJlYWxsb2NhdGUgYW5kIGFkanVzdCB2YXJpb3VzIHN0YXRlIHZhcmlhYmxlcy4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yICovCisKKy8qIGxvb2t1cCB0aGUgY2hhcmFjdGVyLCB3cml0ZSB0aGUgcmVzdWx0IGludG8gdGhlIHdyaXRlci4KKyAgIFJldHVybiAxIGlmIHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gaW50byB0aGUgd3JpdGVyLCByZXR1cm4gMCBpZiB0aGUgbWFwcGluZworICAgd2FzIHVuZGVmaW5lZCwgcmFpc2UgYW4gZXhjZXB0aW9uIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLWNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKFB5X1VDUzQgKipvdXRvYmosIFB5X3NzaXplX3QgKnBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplKQorY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoUHlfVUNTNCBjaCwgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7Ci0gICAgUHlfc3NpemVfdCBvbGRzaXplID0gKnBzaXplOwotICAgIFB5X1VDUzQgKm5ld19vdXRvYmo7Ci0gICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG9sZHNpemUpIHsKLSAgICAgICAgLyogZXhwb25lbnRpYWxseSBvdmVyYWxsb2NhdGUgdG8gbWluaW1pemUgcmVhbGxvY2F0aW9ucyAqLwotICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMiAqIG9sZHNpemUpCi0gICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyICogb2xkc2l6ZTsKLSAgICAgICAgbmV3X291dG9iaiA9IFB5TWVtX1JlYWxsb2MoKm91dG9iaiwgcmVxdWlyZWRzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKLSAgICAgICAgaWYgKG5ld19vdXRvYmogPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm91dG9iaiA9IG5ld19vdXRvYmo7Ci0gICAgICAgICpwc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0vKiBsb29rdXAgdGhlIGNoYXJhY3RlciwgcHV0IHRoZSByZXN1bHQgaW4gdGhlIG91dHB1dCBzdHJpbmcgYW5kIGFkanVzdAotICAgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCB0aGF0Ci0gICB3YXMgcHV0IGluIHRoZSBvdXRwdXQgYnVmZmVyIGluICpyZXN1bHQsIG9yIFB5X05vbmUsIGlmIHRoZSBtYXBwaW5nIHdhcwotICAgdW5kZWZpbmVkIChpbiB3aGljaCBjYXNlIG5vIGNoYXJhY3RlciB3YXMgd3JpdHRlbikuCi0gICBUaGUgY2FsbGVkIG11c3QgZGVjcmVmIHJlc3VsdC4KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yLiAqLwotc3RhdGljIGludAotY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoUHlPYmplY3QgKmlucHV0LCBQeV9zc2l6ZV90IGlwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgUHlfVUNTNCAqKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm9zaXplLCBQeV9zc2l6ZV90ICpvcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCi17Ci0gICAgUHlfVUNTNCBjdXJpbnAgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGlucHV0LCBpcG9zKTsKLSAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY3VyaW5wLCBtYXBwaW5nLCByZXMpKQorICAgIFB5T2JqZWN0ICppdGVtOworCisgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGNoLCBtYXBwaW5nLCAmaXRlbSkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnJlcz09TlVMTCkgeworCisgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLwotICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IGN1cmlucDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoKnJlcz09UHlfTm9uZSkKLSAgICAgICAgOwotICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjaygqcmVzKSkgewotICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IChQeV9VQ1M0KVB5TG9uZ19BU19MT05HKCpyZXMpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soKnJlcykpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKCpyZXMpID09IC0xKQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUod3JpdGVyLCBjaCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcmVzKTsKLSAgICAgICAgaWYgKHJlcHNpemU9PTEpIHsKLSAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoKnJlcywgMCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocmVwc2l6ZSE9MCkgewotICAgICAgICAgICAgLyogbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplID0gKm9wb3MgKwotICAgICAgICAgICAgICAgIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCkgLSBpcG9zKSArCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSAtIDE7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0cHV0LCBvc2l6ZSwgcmVxdWlyZWRzaXplKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCByZXBzaXplOyBpKyspCi0gICAgICAgICAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSBQeVVuaWNvZGVfUkVBRF9DSEFSKCpyZXMsIGkpOwotICAgICAgICB9CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBlbHNlCisKKyAgICBpZiAoaXRlbSA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgeworICAgICAgICBsb25nIGNoID0gKFB5X1VDUzQpUHlMb25nX0FTX0xPTkcoaXRlbSk7CisgICAgICAgIC8qIFB5TG9uZ19BU19MT05HKCkgY2Fubm90IGZhaWwsIGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCkgYWxyZWFkeQorICAgICAgICAgICB1c2VkIGl0ICovCisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSh3cml0ZXIsIGNoKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgaXRlbSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordW5pY29kZV9mYXN0X3RyYW5zbGF0ZV9sb29rdXAoUHlPYmplY3QgKm1hcHBpbmcsIFB5X1VDUzEgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VQ1MxICp0cmFuc2xhdGUpCit7CisgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOworICAgIGludCByZXQgPSAwOworCisgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGNoLCBtYXBwaW5nLCAmaXRlbSkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpdGVtID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogZGVsZXRpb24gKi8KKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IDB4ZmU7CisgICAgfQorICAgIGVsc2UgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAvKiBub3QgZm91bmQgPT4gZGVmYXVsdCB0byAxOjEgbWFwcGluZyAqLworICAgICAgICB0cmFuc2xhdGVbY2hdID0gY2g7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgbG9uZyByZXBsYWNlID0gUHlMb25nX0FTX0xPTkcoaXRlbSk7CisgICAgICAgIC8qIFB5TG9uZ19BU19MT05HKCkgY2Fubm90IGZhaWwsIGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCkgYWxyZWFkeQorICAgICAgICAgICB1c2VkIGl0ICovCisgICAgICAgIGlmICgxMjcgPCByZXBsYWNlKSB7CisgICAgICAgICAgICAvKiBpbnZhbGlkIGNoYXJhY3RlciBvciBjaGFyYWN0ZXIgb3V0c2lkZSBBU0NJSToKKyAgICAgICAgICAgICAgIHNraXAgdGhlIGZhc3QgdHJhbnNsYXRlICovCisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IChQeV9VQ1MxKXJlcGxhY2U7CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhpdGVtKSkgeworICAgICAgICBQeV9VQ1M0IHJlcGxhY2U7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpdGVtKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKSAhPSAxKQorICAgICAgICAgICAgZ290byBleGl0OworCisgICAgICAgIHJlcGxhY2UgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGl0ZW0sIDApOworICAgICAgICBpZiAocmVwbGFjZSA+IDEyNykKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgdHJhbnNsYXRlW2NoXSA9IChQeV9VQ1MxKXJlcGxhY2U7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBub3QgTm9uZSwgTlVMTCwgbG9uZyBvciB1bmljb2RlICovCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0ID0gMTsKKworICBleGl0OgorICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBGYXN0IHBhdGggZm9yIGFzY2lpID0+IGFzY2lpIHRyYW5zbGF0aW9uLiBSZXR1cm4gMSBpZiB0aGUgd2hvbGUgc3RyaW5nCisgICB3YXMgdHJhbnNsYXRlZCBpbnRvIHdyaXRlciwgcmV0dXJuIDAgaWYgdGhlIGlucHV0IHN0cmluZyB3YXMgcGFydGlhbGx5CisgICB0cmFuc2xhdGVkIGludG8gd3JpdGVyLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK3VuaWNvZGVfZmFzdF90cmFuc2xhdGUoUHlPYmplY3QgKmlucHV0LCBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBpbnQgaWdub3JlKQoreworICAgIFB5X1VDUzEgYXNjaWlfdGFibGVbMTI4XSwgY2gsIGNoMjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9VQ1MxICppbiwgKmVuZCwgKm91dDsKKyAgICBpbnQgcmVzID0gMDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaW5wdXQpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoaW5wdXQpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CisKKyAgICBtZW1zZXQoYXNjaWlfdGFibGUsIDB4ZmYsIDEyOCk7CisKKyAgICBpbiA9IFB5VW5pY29kZV8xQllURV9EQVRBKGlucHV0KTsKKyAgICBlbmQgPSBpbiArIGxlbjsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkod3JpdGVyLT5idWZmZXIpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpID09IGxlbik7CisgICAgb3V0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEod3JpdGVyLT5idWZmZXIpOworCisgICAgZm9yICg7IGluIDwgZW5kOyBpbisrKSB7CisgICAgICAgIGNoID0gKmluOworICAgICAgICBjaDIgPSBhc2NpaV90YWJsZVtjaF07CisgICAgICAgIGlmIChjaDIgPT0gMHhmZikgeworICAgICAgICAgICAgaW50IHRyYW5zbGF0ZSA9IHVuaWNvZGVfZmFzdF90cmFuc2xhdGVfbG9va3VwKG1hcHBpbmcsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpX3RhYmxlKTsKKyAgICAgICAgICAgIGlmICh0cmFuc2xhdGUgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmICh0cmFuc2xhdGUgPT0gMCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBjaDIgPSBhc2NpaV90YWJsZVtjaF07CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoMiA9PSAweGZlKSB7CisgICAgICAgICAgICBpZiAoaWdub3JlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGFzc2VydChjaDIgPCAxMjgpOworICAgICAgICAqb3V0ID0gY2gyOworICAgICAgICBvdXQrKzsKKyAgICB9CisgICAgcmVzID0gMTsKKworZXhpdDoKKyAgICB3cml0ZXItPnBvcyA9IG91dCAtIFB5VW5pY29kZV8xQllURV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBQeU9iamVjdCAqCkBAIC04NjI4LDIyICs4NjIyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIC8qIGlucHV0IG9iamVjdCAqLwotICAgIGNoYXIgKmlkYXRhOworICAgIGNoYXIgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBzaXplLCBpOwogICAgIGludCBraW5kOwogICAgIC8qIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9VQ1M0ICpvdXRwdXQgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgb3NpemU7Ci0gICAgUHlPYmplY3QgKnJlczsKLSAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwotICAgIFB5X3NzaXplX3Qgb3BvczsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICAvKiBlcnJvciBoYW5kbGVyICovCiAgICAgY2hhciAqcmVhc29uID0gImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsCi0gICAgICogMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgaW50IGlnbm9yZTsKKyAgICBpbnQgcmVzOwogCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwpAQCAtODY1MiwxMCArODY0MSw5IEBACiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGlucHV0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGRhdGEgPSAoY2hhciopUHlVbmljb2RlX0RBVEEoaW5wdXQpOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CiAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKLSAgICBpID0gMDsKIAogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKQEAgLTg2NjQsMTIxICs4NjUyLDgxIEBACiAKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwotICAgIG9zaXplID0gc2l6ZTsKLSAgICBvdXRwdXQgPSBQeU1lbV9ORVcoUHlfVUNTNCwgb3NpemUpOwotICAgIG9wb3MgPSAwOwotICAgIGlmIChvdXRwdXQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPT0gLTEpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CiAKKyAgICBpZ25vcmUgPSAoZXJyb3JzICE9IE5VTEwgJiYgc3RyY21wKGVycm9ycywgImlnbm9yZSIpID09IDApOworCisgICAgcmVzID0gdW5pY29kZV9mYXN0X3RyYW5zbGF0ZShpbnB1dCwgbWFwcGluZywgJndyaXRlciwgaWdub3JlKTsKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAocmVzID09IDEpCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKKworICAgIGkgPSB3cml0ZXIucG9zOwogICAgIHdoaWxlIChpPHNpemUpIHsKICAgICAgICAgLyogdHJ5IHRvIGVuY29kZSBpdCAqLwotICAgICAgICBQeU9iamVjdCAqeCA9IE5VTEw7Ci0gICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChpbnB1dCwgaSwgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXQsICZvc2l6ZSwgJm9wb3MsICZ4KSkgewotICAgICAgICAgICAgUHlfWERFQ1JFRih4KTsKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgfQotICAgICAgICBQeV9YREVDUkVGKHgpOwotICAgICAgICBpZiAoeCE9UHlfTm9uZSkgLyogaXQgd29ya2VkID0+IGFkanVzdCBpbnB1dCBwb2ludGVyICovCi0gICAgICAgICAgICArK2k7Ci0gICAgICAgIGVsc2UgeyAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdW5pMjsKLSAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVudHJhbnNsYXRhYmxlIGNoYXJzICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IGk7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBpKzE7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGw7CisgICAgICAgIGludCB0cmFuc2xhdGU7CisgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCisgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOworICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bnRyYW5zbGF0YWJsZSBjaGFycyAqLworICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydDsKKyAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kOworICAgICAgICBQeV9VQ1M0IGNoOwogCi0gICAgICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IHNpemUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlVbmljb2RlX1JFQUQoa2luZCxpZGF0YSwgY29sbGVuZCksIG1hcHBpbmcsICZ4KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7Ci0gICAgICAgICAgICAgICAgaWYgKHghPVB5X05vbmUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICsrY29sbGVuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCi0gICAgICAgICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICAgICAgaWYgKGtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbigmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgY29sbHN0YXJ0LCBjb2xsZW5kLCByZWFzb24pOwotICAgICAgICAgICAgICAgIGlmIChleGMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgdHJhbnNsYXRlID0gY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoY2gsIG1hcHBpbmcsICZ3cml0ZXIpOworICAgICAgICBpZiAodHJhbnNsYXRlIDwgMCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICBpZiAodHJhbnNsYXRlICE9IDApIHsKKyAgICAgICAgICAgIC8qIGl0IHdvcmtlZCA9PiBhZGp1c3QgaW5wdXQgcG9pbnRlciAqLworICAgICAgICAgICAgKytpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKiB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgY29sbHN0YXJ0ID0gaTsKKyAgICAgICAgY29sbGVuZCA9IGkrMTsKKworICAgICAgICAvKiBmaW5kIGFsbCB1bnRyYW5zbGF0YWJsZSBjaGFyYWN0ZXJzICovCisgICAgICAgIHdoaWxlIChjb2xsZW5kIDwgc2l6ZSkgeworICAgICAgICAgICAgUHlPYmplY3QgKng7CisgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpOworICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKGNoLCBtYXBwaW5nLCAmeCkpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICAgICAgLyogTm8gbmVlZCB0byBjaGVjayBmb3Igc3BhY2UsIHRoaXMgaXMgYSAxOjEgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGNvbGwgPSBjb2xsc3RhcnQ7IGNvbGw8Y29sbGVuZDsgY29sbCsrKQotICAgICAgICAgICAgICAgICAgICBvdXRwdXRbb3BvcysrXSA9ICc/JzsKLSAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICAgICAgaSA9IGNvbGxlbmQ7CisgICAgICAgICAgICBQeV9YREVDUkVGKHgpOworICAgICAgICAgICAgaWYgKHggIT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIGkpICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqY3A7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBpZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BvcytzdHJsZW4oYnVmZmVyKSsoc2l6ZS1jb2xsZW5kKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gKmNwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBpbnB1dCwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmb3V0cHV0LCAmb3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IDA7IHJlcHNpemUtLT4wOyArK3VuaTIpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCB1bmkyKTsKLSAgICAgICAgICAgICAgICBpID0gbmV3cG9zOworICAgICAgICAgICAgKytjb2xsZW5kOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlnbm9yZSkgeworICAgICAgICAgICAgaSA9IGNvbGxlbmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbiwgaW5wdXQsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKKyAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoJndyaXRlciwgcmVwdW5pY29kZSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgIGkgPSBuZXdwb3M7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmVzID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgb3V0cHV0LCBvcG9zKTsKLSAgICBpZiAoIXJlcykKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIHJldHVybiByZXM7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtODg4MCw3ICs4ODI4LDcgQEAKIAogICAgIG1heGNoYXIgPSAxMjc7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgICAgICBQeV9VQ1M0IGNoID0gc1tpXTsKICAgICAgICAgaWYgKGNoID4gMTI3KSB7CiAgICAgICAgICAgICBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCkBAIC04ODk3LDcgKzg4NDUsNyBAQAogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShkZWNpbWFsKTsKICAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9IHNbaV07CisgICAgICAgIFB5X1VDUzQgY2ggPSBzW2ldOwogICAgICAgICBpZiAoY2ggPiAxMjcpIHsKICAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOwogICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKQEAgLTg5NzgsMzUgKzg5MjYsNjEgQEAKIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCisjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCisgICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCiBzdGF0aWMgUHlfc3NpemVfdAogYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgcmVzdWx0OwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzMSk7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzMik7Ci0gICAga2luZCA9IGtpbmQxID4ga2luZDIgPyBraW5kMSA6IGtpbmQyOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzMSk7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHMyKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHMxLCBraW5kKTsKLSAgICBpZiAoIWJ1ZjEpCi0gICAgICAgIHJldHVybiAtMjsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHMyLCBraW5kKTsKLSAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9CisgICAgaWYgKGtpbmQxIDwga2luZDIpCisgICAgICAgIHJldHVybiAtMTsKKwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMSk7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMyKTsKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoczEpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzMik7CisgICAgaWYgKGxlbjIgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGJ1ZjIsIDApOworICAgICAgICByZXN1bHQgPSBmaW5kY2hhcigoY29uc3QgY2hhciAqKWJ1ZjEgKyBraW5kMSpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDEsIGVuZCAtIHN0YXJ0LCBjaCwgZGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ICsgcmVzdWx0OworICAgIH0KKworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoczIsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIC0yOworICAgIH0KIAogICAgIGlmIChkaXJlY3Rpb24gPiAwKSB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHMxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoczIpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CkBAIC05MDI0LDcgKzg5OTgsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICAgICAgc3dpdGNoIChraW5kMSkgewogICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9yZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKQEAgLTkwNDIsOSArOTAxNiw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTEzNCwyMSArOTEwNiw2IEBACiB9CiAKIAotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KIFB5X3NzaXplX3QKIFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCkBAIC05MTU4LDcgKzkxMTUsNyBAQAogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzdWJfb2JqOwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIApAQCAtOTE3OCwyNCArOTEzNSwzMCBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOwotICAgIGtpbmQgPSBraW5kMTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kKSB7Ci0gICAgICAgIGlmIChraW5kMiA+IGtpbmQpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikgeworICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmICghYnVmMikKLSAgICAgICAgZ290byBvbkVycm9yOworCiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKLQogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIHN3aXRjaCAoa2luZCkgeworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3ViX29iaikpCiAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9jb3VudCgKQEAgLTkyMjcsMTQgKzkxOTAsMTQgQEAKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogCi0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoc3ViX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIC0xOwogfQpAQCAtOTI4Nyw2ICs5MjUwLDggQEAKICAgICB9CiAgICAgaWYgKGVuZCA+IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpCiAgICAgICAgIGVuZCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgaWYgKHN0YXJ0ID49IGVuZCkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIHJlc3VsdCA9IGZpbmRjaGFyKFB5VW5pY29kZV8xQllURV9EQVRBKHN0cikgKyBraW5kKnN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgIGtpbmQsIGVuZC1zdGFydCwgY2gsIGRpcmVjdGlvbik7CkBAIC05MzE1LDE0ICs5MjgwLDE0IEBACiAgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSA9PSAwKQotICAgICAgICByZXR1cm4gMTsKLQogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKICAgICBlbmQgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBpZiAoZW5kIDwgc3RhcnQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKICAgICBraW5kX3NlbGYgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBkYXRhX3NlbGYgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKICAgICBraW5kX3N1YiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CkBAIC05NDc0LDcgKzk0MzksNyBAQAogewogICAgIFB5X3NzaXplX3QgajsKICAgICBpbnQgZmluYWxfc2lnbWE7Ci0gICAgUHlfVUNTNCBjID0gMDsKKyAgICBQeV9VQ1M0IGMgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgIC8qIFUrMDNBMyBpcyBpbiB0aGUgRmluYWxfU2lnbWEgY29udGV4dCB3aGVuLCBpdCBpcyBmb3VuZCBsaWtlIHRoaXM6CiAKICAgICAgXHB7Y2FzZWR9XHB7Y2FzZS1pZ25vcmFibGV9KlUrMDNBMyEoXHB7Y2FzZS1pZ25vcmFibGV9Klxwe2Nhc2VkfSkKQEAgLTEwMDMzLDcgKzk5OTgsNyBAQAogICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeU9iamVjdCogb3V0OwpAQCAtMTAwNzcsMjMgKzEwMDQyLDI1IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIG91dCA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShvdXQsIDAsIHNlbGYpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9zcGxpdCgKQEAgLTEwMTEzLDkgKzEwMDgwLDcgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBvdXQgPSBOVUxMOwogICAgIH0KLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIG91dDsKIH0KQEAgLTEwMTI1LDcgKzEwMDkwLDcgQEAKICAgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAogICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBQeU9iamVjdCogb3V0OwpAQCAtMTAxNjksMjMgKzEwMTM0LDI1IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VsZiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIGlmIChraW5kMSAhPSBraW5kKSBQeU1lbV9GcmVlKGJ1ZjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyIHx8IGxlbjEgPCBsZW4yKSB7CisgICAgICAgIG91dCA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShvdXQsIDAsIHNlbGYpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cmluZykpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9yc3BsaXQoCkBAIC0xMDIwNSw5ICsxMDE3Miw3IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgb3V0ID0gTlVMTDsKICAgICB9Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBvdXQ7CiB9CkBAIC0xMDQyNiw3ICsxMDM5MSw3IEBACiAgICAgICAgIH0KICAgICAgICAgLyogbmV3X3NpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSArIG4gKiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMikgLQogICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKSkpOyAqLwotICAgICAgICBpZiAobGVuMiA+IGxlbjEgJiYgbGVuMiAtIGxlbjEgPiAoUFlfU1NJWkVfVF9NQVggLSBzbGVuKSAvIG4pIHsKKyAgICAgICAgaWYgKGxlbjEgPCBsZW4yICYmIGxlbjIgLSBsZW4xID4gKFBZX1NTSVpFX1RfTUFYIC0gc2xlbikgLyBuKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xMDgzNSw3ICsxMDgwMCw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbjEgPiBsZW4yKQogICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHVuaSBpcyBsb25nZXIgKi8KLSAgICAgICAgaWYgKGxlbjIgPiBsZW4xKQorICAgICAgICBpZiAobGVuMSA8IGxlbjIpCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHN0ciBpcyBsb25nZXIgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTA4NDMsNyArMTA4MDgsNyBAQAogICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pKTsKICAgICAgICAgLyogQ29tcGFyZSBVbmljb2RlIHN0cmluZyBhbmQgc291cmNlIGNoYXJhY3RlciBzZXQgc3RyaW5nICovCiAgICAgICAgIGZvciAoaSA9IDA7IChjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkgJiYgc3RyW2ldOyBpKyspCi0gICAgICAgICAgICBpZiAoY2hyICE9IHN0cltpXSkKKyAgICAgICAgICAgIGlmIChjaHIgIT0gKHVuc2lnbmVkIGNoYXIpc3RyW2ldKQogICAgICAgICAgICAgICAgIHJldHVybiAoY2hyIDwgKHVuc2lnbmVkIGNoYXIpKHN0cltpXSkpID8gLTEgOiAxOwogICAgICAgICAvKiBUaGlzIGNoZWNrIGtlZXBzIFB5dGhvbiBzdHJpbmdzIHRoYXQgZW5kIGluICdcMCcgZnJvbSBjb21wYXJpbmcgZXF1YWwKICAgICAgICAgIHRvIEMgc3RyaW5ncyBpZGVudGljYWwgdXAgdG8gdGhhdCBwb2ludC4gKi8KQEAgLTEwOTQ3LDIzICsxMDkxMiwzNSBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgaWYgKGtpbmQyID4ga2luZDEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7Ci0gICAgfQotICAgIGlmICghYnVmMikgeworICAgIGlmIChraW5kMSA8IGtpbmQyKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwogICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7CisgICAgaWYgKGxlbjEgPCBsZW4yKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGlmIChsZW4yID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBidWYyLCAwKTsKKyAgICAgICAgcmVzdWx0ID0gZmluZGNoYXIoKGNvbnN0IGNoYXIgKilidWYxLCBraW5kMSwgbGVuMSwgY2gsIDEpICE9IC0xOworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTExNDQsMTEgKzExMTIxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb3VudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7ICAgLyogaW5pdGlhbGl6ZSB0byBmaXggYSBjb21waWxlciB3YXJuaW5nICovCiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKQEAgLTExMTU4LDI0ICsxMTEzNSwyNyBAQAogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQyID4ga2luZDEpIHsKKyAgICBpZiAoa2luZDEgPCBraW5kMikgewogICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKICAgICB9Ci0gICAga2luZCA9IGtpbmQxOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7Ci0gICAgaWYgKCFidWYyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwotCiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgc3dpdGNoIChraW5kKSB7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgeworICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICB9CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikgeworICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaXJlc3VsdCA9IHVjczFsaWJfY291bnQoCiAgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LApAQCAtMTEyMDAsNyArMTExODAsNyBAQAogCiAgICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGlyZXN1bHQpOwogCi0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CkBAIC0xMTMzMiw2ICsxMTMxMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9maW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTE0MTksNiArMTE0MDAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIC8qIGluaXRpYWxpemUgdmFyaWFibGVzIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKICAgICBQeU9iamVjdCAqc3Vic3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKQEAgLTEyNDk3LDYgKzEyNDc5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX3JmaW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTI1MzMsNiArMTI1MTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfcmluZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICAvKiBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwpAQCAtMTI2NDcsOCArMTI2MzEsOCBAQAogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7Ci0gICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKLSAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIGludCBraW5kMSwga2luZDI7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCiAgICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7CkBAIC0xMjY2NywyMSArMTI2NTEsMjkgQEAKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKLSAgICBraW5kID0gUHlfTUFYKGtpbmQxLCBraW5kMik7Ci0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kKQotICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyX29iaiwga2luZCk7Ci0gICAgaWYgKCFidWYxKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kKQotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7Ci0gICAgaWYgKCFidWYyKQotICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMiB8fCBsZW4xIDwgbGVuMikgeworICAgICAgICBfUHlfSU5DUkVGX1VOSUNPREVfRU1QVFkoKTsKKyAgICAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQorICAgICAgICAgICAgb3V0ID0gTlVMTDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgc3RyX29iaiwgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKLSAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCiAgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CkBAIC0xMjcwMSwxOCArMTI2OTMsMTQgQEAKIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoc2VwX29iaik7CiAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMSAhPSBraW5kICYmIGJ1ZjEpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQgJiYgYnVmMikKKyAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTEyNzI0LDggKzEyNzEyLDggQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwotICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7Ci0gICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBpbnQga2luZDEsIGtpbmQyOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwpAQCAtMTI3MzksMjEgKzEyNzI3LDI5IEBACiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7Ci0gICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOwotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cl9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMSkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzZXBfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQpOwotICAgIGlmICghYnVmMikKLSAgICAgICAgZ290byBvbkVycm9yOwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VwX29iaik7CisgICAgaWYgKGtpbmQxIDwga2luZDIgfHwgbGVuMSA8IGxlbjIpIHsKKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIGlmICghdW5pY29kZV9lbXB0eSkKKyAgICAgICAgICAgIG91dCA9IE5VTEw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHksIHN0cl9vYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kMSkgeworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCi0gICAgc3dpdGNoIChraW5kKSB7CisgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CiAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHNlcF9vYmopKQogICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKQEAgLTEyNzczLDE4ICsxMjc2OSwxNCBAQAogCiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDEgIT0ga2luZCkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwogICBvbkVycm9yOgogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKLSAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMTI5MzAsNDcgKzEyOTIyLDkgQEAKIG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIodW5pY29kZV9tYWtldHJhbnNfX2RvY19fLAotIm1ha2V0cmFucyh4LCB5PU5vbmUsIHo9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3Igc3RyLnRyYW5zbGF0ZSgpLlxuIgotIlxuIgotIklmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nIFVuaWNvZGVcbiIKLSJvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgdG8gVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyBvciBOb25lLlxuIgotIkNoYXJhY3RlciBrZXlzIHdpbGwgYmUgdGhlbiBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4iCi0iSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCwgYW5kXG4iCi0iaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkIHRvIHRoZVxuIgotImNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiBJZiB0aGVyZSBpcyBhIHRoaXJkIGFyZ3VtZW50LCBpdFxuIgotIm11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG8gTm9uZSBpbiB0aGUgcmVzdWx0LiIpOwotCi0jZGVmaW5lIFVOSUNPREVfTUFLRVRSQU5TX01FVEhPRERFRiAgICBcCi0gICAgeyJtYWtldHJhbnMiLCAoUHlDRnVuY3Rpb24pdW5pY29kZV9tYWtldHJhbnMsIE1FVEhfVkFSQVJHU3xNRVRIX1NUQVRJQywgdW5pY29kZV9tYWtldHJhbnNfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX21ha2V0cmFucyh2b2lkICpudWxsLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqeDsKLSAgICBQeU9iamVjdCAqeSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnogPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZV9tYWtldHJhbnNfaW1wbCh4LCB5LCB6KTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9tYWtldHJhbnNfaW1wbChQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NmVkZjYzMGY3NzQzNmEgaW5wdXQ9N2JmYmY1MjlhMjkzYzZjNV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5MjVjODk0NTJiZDU4ODEgaW5wdXQ9N2JmYmY1MjlhMjkzYzZjNV0qLwogewogICAgIFB5T2JqZWN0ICpuZXcgPSBOVUxMLCAqa2V5LCAqdmFsdWU7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKQEAgLTEzMzk4LDYgKzEzMzUyLDcgQEAKICAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CiAgICAgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgfHwgbGVuID4gd3JpdGVyLT5zaXplIC0gd3JpdGVyLT5wb3MpIHsKICAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwgJiYgIXdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgICAgICAgICAgd3JpdGVyLT5yZWFkb25seSA9IDE7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RyKTsKICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gc3RyOwpAQCAtMTM5MDYsOCArMTM4NjEsOCBAQAogICogQ0FVVElPTjogIG8sIHggYW5kIFggY29udmVyc2lvbnMgb24gcmVndWxhciBpbnRzIGNhbiBuZXZlcgogICogcHJvZHVjZSBhICctJyBzaWduLCBidXQgY2FuIGZvciBQeXRob24ncyB1bmJvdW5kZWQgaW50cy4KICAqLwotc3RhdGljIFB5T2JqZWN0KgotZm9ybWF0bG9uZyhQeU9iamVjdCAqdmFsLCBzdHJ1Y3QgdW5pY29kZV9mb3JtYXRfYXJnX3QgKmFyZykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRm9ybWF0TG9uZyhQeU9iamVjdCAqdmFsLCBpbnQgYWx0LCBpbnQgcHJlYywgaW50IHR5cGUpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgY2hhciAqYnVmOwpAQCAtMTM5MTcsOCArMTM4NzIsNiBAQAogICAgIFB5X3NzaXplX3QgbGxlbjsKICAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KICAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKLSAgICBpbnQgcHJlYyA9IGFyZy0+cHJlYzsKLSAgICBpbnQgdHlwZSA9IGFyZy0+Y2g7CiAKICAgICAvKiBBdm9pZCBleGNlZWRpbmcgU1NJWkVfVF9NQVggKi8KICAgICBpZiAocHJlYyA+IElOVF9NQVgtMykgewpAQCAtMTM5NjcsNyArMTM5MjAsNyBAQAogICAgIGlmIChsbGVuID4gSU5UX01BWCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsYXJnZSBpbiBfUHlCeXRlc19Gb3JtYXRMb25nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsYXJnZSBpbiBfUHlVbmljb2RlX0Zvcm1hdExvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGxlbiA9IChpbnQpbGxlbjsKQEAgLTEzOTc3LDcgKzEzOTMwLDcgQEAKICAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7CiAKICAgICAvKiBHZXQgcmlkIG9mIGJhc2UgbWFya2VyIHVubGVzcyBGX0FMVCAqLwotICAgIGlmICgoKGFyZy0+ZmxhZ3MgJiBGX0FMVCkgPT0gMCAmJgorICAgIGlmICgoKGFsdCkgPT0gMCAmJgogICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpKSkgewogICAgICAgICBhc3NlcnQoYnVmW3NpZ25dID09ICcwJyk7CiAgICAgICAgIGFzc2VydChidWZbc2lnbisxXSA9PSAneCcgfHwgYnVmW3NpZ24rMV0gPT0gJ1gnIHx8CkBAIC0xNDA1MiwyNCArMTQwMDUsMTQgQEAKICAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHYpKQogICAgICAgICBnb3RvIHdyb25ndHlwZTsKIAotICAgIC8qIG1ha2Ugc3VyZSBudW1iZXIgaXMgYSB0eXBlIG9mIGludGVnZXIgKi8KLSAgICAvKiBpZiBub3QsIGlzc3VlIGRlcHJlY2F0aW9uIHdhcm5pbmcgZm9yIG5vdyAqLworICAgIC8qIG1ha2Ugc3VyZSBudW1iZXIgaXMgYSB0eXBlIG9mIGludGVnZXIgZm9yIG8sIHgsIGFuZCBYICovCiAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKICAgICAgICAgaWYgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSB7CiAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgodik7CiAgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMgaW50IGNvbnZlcnNpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0xvbmcodik7Ci0gICAgICAgICAgICAgICAgaWYgKGlvYmogPT0gTlVMTCApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gd3Jvbmd0eXBlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gd3Jvbmd0eXBlOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE0MTIyLDcgKzE0MDY1LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgcmVzID0gZm9ybWF0bG9uZyhpb2JqLCBhcmcpOworICAgIHJlcyA9IF9QeVVuaWNvZGVfRm9ybWF0TG9uZyhpb2JqLCBhcmctPmZsYWdzICYgRl9BTFQsIGFyZy0+cHJlYywgdHlwZSk7CiAgICAgUHlfREVDUkVGKGlvYmopOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQxMzAsMTAgKzE0MDczLDIzIEBACiAgICAgcmV0dXJuIDA7CiAKIHdyb25ndHlwZToKLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgIiUlJWMgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgIgotICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAotICAgICAgICAgICAgdHlwZSwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgc3dpdGNoKHR5cGUpCisgICAgeworICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIiUlJWMgZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCAiCisgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSwgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICIlJSVjIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsICIKKyAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICB0eXBlLCBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTE0MTUxLDIyICsxNDEwNywxMCBAQAogICAgICAgICBQeU9iamVjdCAqaW9iajsKICAgICAgICAgbG9uZyB4OwogICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyICovCi0gICAgICAgIC8qIGlmIG5vdCwgaXNzdWUgZGVwcmVjYXRpb24gd2FybmluZyBmb3Igbm93ICovCiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CiAgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgodik7CiAgICAgICAgICAgICBpZiAoaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdXRvbWF0aWMgaW50IGNvbnZlcnNpb25zIGhhdmUgYmVlbiBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0xvbmcodik7Ci0gICAgICAgICAgICAgICAgaWYgKGlvYmogPT0gTlVMTCApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2ID0gaW9iajsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKQEAgLTE0OTk4LDEzICsxNDk0Miw2IEBACiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlGb3JtYXR0ZXJJdGVyX1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBmb3JtYXR0ZXIgaXRlciB0eXBlIik7CiAKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICB3aW52ZXIuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih3aW52ZXIpOwotICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgogICAgIHJldHVybiAwOwogfQogCkBAIC0xNTQyMCw3ICsxNTM1Nyw3IEBACiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwotICAgIGlmIChsZW4gPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CisgICAgaWYgKGxlbiA+ICgoUFlfU1NJWkVfVF9NQVggLyAoUHlfc3NpemVfdClzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDFmZGMwOTIuLjdjNzgwYjYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTgyLDI1ICs4MiwzMiBAQAogICAgIHstMjA1LCAwLCAtMjA1LCAwLCAwLCA5OTkzfSwKICAgICB7LTIwMiwgMCwgLTIwMiwgMCwgMCwgOTk5M30sCiAgICAgey0yMDMsIDAsIC0yMDMsIDAsIDAsIDk5OTN9LAorICAgIHs0MjMxOSwgMCwgNDIzMTksIDAsIDAsIDk5OTN9LAorICAgIHs0MjMxNSwgMCwgNDIzMTUsIDAsIDAsIDk5OTN9LAogICAgIHstMjA3LCAwLCAtMjA3LCAwLCAwLCA5OTkzfSwKICAgICB7NDIyODAsIDAsIDQyMjgwLCAwLCAwLCA5OTkzfSwKICAgICB7NDIzMDgsIDAsIDQyMzA4LCAwLCAwLCA5OTkzfSwKICAgICB7LTIwOSwgMCwgLTIwOSwgMCwgMCwgOTk5M30sCiAgICAgey0yMTEsIDAsIC0yMTEsIDAsIDAsIDk5OTN9LAogICAgIHsxMDc0MywgMCwgMTA3NDMsIDAsIDAsIDk5OTN9LAorICAgIHs0MjMwNSwgMCwgNDIzMDUsIDAsIDAsIDk5OTN9LAogICAgIHsxMDc0OSwgMCwgMTA3NDksIDAsIDAsIDk5OTN9LAogICAgIHstMjEzLCAwLCAtMjEzLCAwLCAwLCA5OTkzfSwKICAgICB7LTIxNCwgMCwgLTIxNCwgMCwgMCwgOTk5M30sCiAgICAgezEwNzI3LCAwLCAxMDcyNywgMCwgMCwgOTk5M30sCiAgICAgey0yMTgsIDAsIC0yMTgsIDAsIDAsIDk5OTN9LAorICAgIHs0MjI4MiwgMCwgNDIyODIsIDAsIDAsIDk5OTN9LAogICAgIHstNjksIDAsIC02OSwgMCwgMCwgOTk5M30sCiAgICAgey0yMTcsIDAsIC0yMTcsIDAsIDAsIDk5OTN9LAogICAgIHstNzEsIDAsIC03MSwgMCwgMCwgOTk5M30sCiAgICAgey0yMTksIDAsIC0yMTksIDAsIDAsIDk5OTN9LAorICAgIHs0MjI2MSwgMCwgNDIyNjEsIDAsIDAsIDk5OTN9LAorICAgIHs0MjI1OCwgMCwgNDIyNTgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxNDA4OX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU4ODl9LAogICAgIHsxNjc3NzI0NCwgMTc4MjU4MTgsIDE2Nzc3MjQ0LCAwLCAwLCAzMDIxNn0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEzMzIxfSwKKyAgICB7MCwgMTE2LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDM4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDM3LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDY0LCAwLCAwLCAwLCAxMDExM30sCkBAIC0xMjIsNiArMTI5LDcgQEAKICAgICB7MTY3NzcyNzYsIDE3ODI1ODUwLCAxNjc3NzI3NiwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3NzI3OSwgMTc4MjU4NTMsIDE2Nzc3Mjc5LCAwLCAwLCAyNjM3N30sCiAgICAgezcsIDAsIDcsIDAsIDAsIDk5OTN9LAorICAgIHstMTE2LCAwLCAtMTE2LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgLTYwLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezE2Nzc3MjgyLCAxNzgyNTg1NiwgMTY3NzcyODIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTcsIDAsIDAsIDAsIDEwMTEzfSwKQEAgLTE0MywxMTAgKzE1MSwyMDIgQEAKICAgICB7MCwgMCwgMCwgMCwgNywgMzU4OH0sCiAgICAgezAsIDAsIDAsIDAsIDgsIDM1ODh9LAogICAgIHswLCAwLCAwLCAwLCA5LCAzNTg4fSwKKyAgICB7MTY3NzcyOTIsIDE3ODI1ODY2LCAxNjc3NzI5MiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzI5NSwgMTc4MjU4NjksIDE2Nzc3Mjk1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mjk4LCAxNzgyNTg3MiwgMTY3NzcyOTgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMDEsIDE3ODI1ODc1LCAxNjc3NzMwMSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMwNCwgMTc4MjU4NzgsIDE2Nzc3MzA0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzA3LCAxNzgyNTg4MSwgMTY3NzczMDcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMTAsIDE3ODI1ODg0LCAxNjc3NzMxMCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMxMywgMTc4MjU4ODcsIDE2Nzc3MzEzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzE2LCAxNzgyNTg5MCwgMTY3NzczMTYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMTksIDE3ODI1ODkzLCAxNjc3NzMxOSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMyMiwgMTc4MjU4OTYsIDE2Nzc3MzIyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzI1LCAxNzgyNTg5OSwgMTY3NzczMjUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMjgsIDE3ODI1OTAyLCAxNjc3NzMyOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzMzMSwgMTc4MjU5MDUsIDE2Nzc3MzMxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzM0LCAxNzgyNTkwOCwgMTY3NzczMzQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczMzcsIDE3ODI1OTExLCAxNjc3NzMzNywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM0MCwgMTc4MjU5MTQsIDE2Nzc3MzQwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzQzLCAxNzgyNTkxNywgMTY3NzczNDMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNDYsIDE3ODI1OTIwLCAxNjc3NzM0NiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM0OSwgMTc4MjU5MjMsIDE2Nzc3MzQ5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzUyLCAxNzgyNTkyNiwgMTY3NzczNTIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNTUsIDE3ODI1OTI5LCAxNjc3NzM1NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM1OCwgMTc4MjU5MzIsIDE2Nzc3MzU4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzYxLCAxNzgyNTkzNSwgMTY3NzczNjEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNjQsIDE3ODI1OTM4LCAxNjc3NzM2NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM2NywgMTc4MjU5NDEsIDE2Nzc3MzY3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3MzcwLCAxNzgyNTk0NCwgMTY3NzczNzAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczNzMsIDE3ODI1OTQ3LCAxNjc3NzM3MywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM3NiwgMTc4MjU5NTAsIDE2Nzc3Mzc2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mzc5LCAxNzgyNTk1MywgMTY3NzczNzksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczODIsIDE3ODI1OTU2LCAxNjc3NzM4MiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM4NSwgMTc4MjU5NTksIDE2Nzc3Mzg1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mzg4LCAxNzgyNTk2MiwgMTY3NzczODgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3NzczOTEsIDE3ODI1OTY1LCAxNjc3NzM5MSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzM5NCwgMTc4MjU5NjgsIDE2Nzc3Mzk0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3Mzk3LCAxNzgyNTk3MSwgMTY3NzczOTcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MDAsIDE3ODI1OTc0LCAxNjc3NzQwMCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQwMywgMTc4MjU5NzcsIDE2Nzc3NDAzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDA2LCAxNzgyNTk4MCwgMTY3Nzc0MDYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MDksIDE3ODI1OTgzLCAxNjc3NzQwOSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQxMiwgMTc4MjU5ODYsIDE2Nzc3NDEyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDE1LCAxNzgyNTk4OSwgMTY3Nzc0MTUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MTgsIDE3ODI1OTkyLCAxNjc3NzQxOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQyMSwgMTc4MjU5OTUsIDE2Nzc3NDIxLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDI0LCAxNzgyNTk5OCwgMTY3Nzc0MjQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MjcsIDE3ODI2MDAxLCAxNjc3NzQyNywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQzMCwgMTc4MjYwMDQsIDE2Nzc3NDMwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDMzLCAxNzgyNjAwNywgMTY3Nzc0MzMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0MzYsIDE3ODI2MDEwLCAxNjc3NzQzNiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQzOSwgMTc4MjYwMTMsIDE2Nzc3NDM5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDQyLCAxNzgyNjAxNiwgMTY3Nzc0NDIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NDUsIDE3ODI2MDE5LCAxNjc3NzQ0NSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ0OCwgMTc4MjYwMjIsIDE2Nzc3NDQ4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDUxLCAxNzgyNjAyNSwgMTY3Nzc0NTEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NTQsIDE3ODI2MDI4LCAxNjc3NzQ1NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ1NywgMTc4MjYwMzEsIDE2Nzc3NDU3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDYwLCAxNzgyNjAzNCwgMTY3Nzc0NjAsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NjMsIDE3ODI2MDM3LCAxNjc3NzQ2MywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ2NiwgMTc4MjYwNDAsIDE2Nzc3NDY2LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDY5LCAxNzgyNjA0MywgMTY3Nzc0NjksIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0NzIsIDE3ODI2MDQ2LCAxNjc3NzQ3MiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ3NSwgMTc4MjYwNDksIDE2Nzc3NDc1LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDc4LCAxNzgyNjA1MiwgMTY3Nzc0NzgsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0ODEsIDE3ODI2MDU1LCAxNjc3NzQ4MSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ4NCwgMTc4MjYwNTgsIDE2Nzc3NDg0LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDg3LCAxNzgyNjA2MSwgMTY3Nzc0ODcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0OTAsIDE3ODI2MDY0LCAxNjc3NzQ5MCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzQ5MywgMTc4MjYwNjcsIDE2Nzc3NDkzLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NDk2LCAxNzgyNjA3MCwgMTY3Nzc0OTYsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc0OTksIDE3ODI2MDczLCAxNjc3NzQ5OSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUwMiwgMTc4MjYwNzYsIDE2Nzc3NTAyLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTA1LCAxNzgyNjA3OSwgMTY3Nzc1MDUsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MDgsIDE3ODI2MDgyLCAxNjc3NzUwOCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUxMSwgMTc4MjYwODUsIDE2Nzc3NTExLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTE0LCAxNzgyNjA4OCwgMTY3Nzc1MTQsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MTcsIDE3ODI2MDkxLCAxNjc3NzUxNywgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUyMCwgMTc4MjYwOTQsIDE2Nzc3NTIwLCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTIzLCAxNzgyNjA5NywgMTY3Nzc1MjMsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MjYsIDE3ODI2MTAwLCAxNjc3NzUyNiwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUyOSwgMTc4MjYxMDMsIDE2Nzc3NTI5LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTMyLCAxNzgyNjEwNiwgMTY3Nzc1MzIsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1MzUsIDE3ODI2MTA5LCAxNjc3NzUzNSwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzUzOCwgMTc4MjYxMTIsIDE2Nzc3NTM4LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTQxLCAxNzgyNjExNSwgMTY3Nzc1NDEsIDAsIDAsIDI2NDk3fSwKKyAgICB7MTY3Nzc1NDQsIDE3ODI2MTE4LCAxNjc3NzU0NCwgMCwgMCwgMjY0OTd9LAorICAgIHsxNjc3NzU0NywgMTc4MjYxMjEsIDE2Nzc3NTQ3LCAwLCAwLCAyNjQ5N30sCisgICAgezE2Nzc3NTUwLCAxNzgyNjEyNCwgMTY3Nzc1NTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NTMsIDE3ODI2MTI3LCAxNjc3NzU1MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU1NiwgMTc4MjYxMzAsIDE2Nzc3NTU2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTU5LCAxNzgyNjEzMywgMTY3Nzc1NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NjIsIDE3ODI2MTM2LCAxNjc3NzU2MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU2NSwgMTc4MjYxMzksIDE2Nzc3NTY1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDM4NDB9LAogICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAogICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ1MDksIDE4ODc0NDQyLCAzMzU1NDUwOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDUxNCwgMTg4NzQ0NDcsIDMzNTU0NTE0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTE5LCAxODg3NDQ1MiwgMzM1NTQ1MTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1MjQsIDE4ODc0NDU3LCAzMzU1NDUyNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDUyOSwgMTg4NzQ0NjIsIDMzNTU0NTI5LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3MzE3LCAxNzgyNTg5MSwgMTY3NzczMTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzczMjEsIDE4ODc0NDcwLCAxNjc3NzMyMSwgMCwgMCwgMjY0OTd9LAorICAgIHszMzU1NDc4NSwgMTg4NzQ3MTgsIDMzNTU0Nzg1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzkwLCAxODg3NDcyMywgMzM1NTQ3OTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAzMzU1NDc5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgwMCwgMTg4NzQ3MzMsIDMzNTU0ODAwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODA1LCAxODg3NDczOCwgMzM1NTQ4MDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1OTMsIDE3ODI2MTY3LCAxNjc3NzU5MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU5NywgMTg4NzQ3NDYsIDE2Nzc3NTk3LCAwLCAwLCAyNjQ5N30sCiAgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDU0MSwgMTg4NzQ0NzQsIDMzNTU0NTQxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMxNzYzLCAxOTkyMzA1NSwgNTAzMzE3NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzE3NzAsIDE5OTIzMDYyLCA1MDMzMTc3MCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMTc3NywgMTk5MjMwNjksIDUwMzMxNzc3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwMzksIDE5OTIzMzMxLCA1MDMzMjAzOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA0NiwgMTk5MjMzMzgsIDUwMzMyMDQ2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDUzLCAxOTkyMzM0NSwgNTAzMzIwNTMsIDAsIDAsIDI2Mzc3fSwKICAgICB7NzQsIDAsIDc0LCAwLCAwLCA5OTkzfSwKICAgICB7ODYsIDAsIDg2LCAwLCAwLCA5OTkzfSwKICAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDk5OTN9LAogICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgOTk5M30sCiAgICAgezExMiwgMCwgMTEyLCAwLCAwLCA5OTkzfSwKICAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDU2NywgMTg4NzQ1MDAsIDE2Nzc3MzUzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTczLCAxODg3NDUwNiwgMTY3NzczNTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1NzksIDE4ODc0NTEyLCAxNjc3NzM2NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDU4NSwgMTg4NzQ1MTgsIDE2Nzc3MzcxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NTkxLCAxODg3NDUyNCwgMTY3NzczNzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ1OTcsIDE4ODc0NTMwLCAxNjc3NzM4MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDYwMywgMTg4NzQ1MzYsIDE2Nzc3Mzg5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NjA5LCAxODg3NDU0MiwgMTY3NzczOTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2MTUsIDE4ODc0NTQ4LCAxNjc3NzQwMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDYyMSwgMTg4NzQ1NTQsIDE2Nzc3NDA3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjI3LCAxODg3NDU2MCwgMTY3Nzc0MTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2MzMsIDE4ODc0NTY2LCAxNjc3NzQxOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDYzOSwgMTg4NzQ1NzIsIDE2Nzc3NDI1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjQ1LCAxODg3NDU3OCwgMTY3Nzc0MzEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ2NTEsIDE4ODc0NTg0LCAxNjc3NzQzNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDY1NywgMTg4NzQ1OTAsIDE2Nzc3NDQzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NjYzLCAxODg3NDU5NiwgMTY3Nzc0NDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2NjksIDE4ODc0NjAyLCAxNjc3NzQ1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDY3NSwgMTg4NzQ2MDgsIDE2Nzc3NDYxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NjgxLCAxODg3NDYxNCwgMTY3Nzc0NjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ2ODcsIDE4ODc0NjIwLCAxNjc3NzQ3MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDY5MywgMTg4NzQ2MjYsIDE2Nzc3NDc5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Njk5LCAxODg3NDYzMiwgMTY3Nzc0ODUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3MDUsIDE4ODc0NjM4LCAxNjc3NzQ5MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDcxMSwgMTg4NzQ2NDQsIDE2Nzc3NDk3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzE3LCAxODg3NDY1MCwgMTY3Nzc1MDMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3MjMsIDE4ODc0NjU2LCAxNjc3NzUwOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDcyOSwgMTg4NzQ2NjIsIDE2Nzc3NTE1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzM1LCAxODg3NDY2OCwgMTY3Nzc1MjEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3NDEsIDE4ODc0Njc0LCAxNjc3NzUyNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDc0NywgMTg4NzQ2ODAsIDE2Nzc3NTMzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0NzUzLCAxODg3NDY4NiwgMTY3Nzc1MzksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ3NTksIDE4ODc0NjkyLCAxNjc3NzU0NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc2NSwgMTg4NzQ2OTgsIDE2Nzc3NTUxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NzcxLCAxODg3NDcwNCwgMTY3Nzc1NTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3NzcsIDE4ODc0NzEwLCAxNjc3NzU2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc4MywgMTg4NzQ3MTYsIDE2Nzc3NTY5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzg5LCAxODg3NDcyMiwgMTY3Nzc1NzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAxNjc3NzU4MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwMSwgMTg4NzQ3MzQsIDE2Nzc3NTg3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODA3LCAxODg3NDc0MCwgMTY3Nzc1OTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4MTMsIDE4ODc0NzQ2LCAxNjc3NzU5OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDgxOSwgMTg4NzQ3NTIsIDE2Nzc3NjA1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODI1LCAxODg3NDc1OCwgMTY3Nzc2MTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4MzEsIDE4ODc0NzY0LCAxNjc3NzYxNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDgzNywgMTg4NzQ3NzAsIDE2Nzc3NjIzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDMzNTU0ODU3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODYyLCAxODg3NDc5NSwgMTY3Nzc2NDgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjgsIDE4ODc0ODAxLCAzMzU1NDg3MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3NSwgMTg4NzQ4MDgsIDMzNTU0ODc1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDk3LCAxOTkyMzM4OSwgNTAzMzIxMDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NDMsIDE4ODc0Nzc2LCAxNjc3NzYyOSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg0OSwgMTg4NzQ3ODIsIDE2Nzc3NjM1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODU1LCAxODg3NDc4OCwgMTY3Nzc2NDEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NjEsIDE4ODc0Nzk0LCAxNjc3NzY0NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg2NywgMTg4NzQ4MDAsIDE2Nzc3NjUzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODczLCAxODg3NDgwNiwgMTY3Nzc2NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzksIDE4ODc0ODEyLCAxNjc3NzY2NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4NSwgMTg4NzQ4MTgsIDE2Nzc3NjcxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODkxLCAxODg3NDgyNCwgMTY3Nzc2NzcsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4OTcsIDE4ODc0ODMwLCAxNjc3NzY4MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkwMywgMTg4NzQ4MzYsIDE2Nzc3Njg5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTA5LCAxODg3NDg0MiwgMTY3Nzc2OTUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MTUsIDE4ODc0ODQ4LCAxNjc3NzcwMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkyMSwgMTg4NzQ4NTQsIDE2Nzc3NzA3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTI3LCAxODg3NDg2MCwgMTY3Nzc3MTMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzMsIDE4ODc0ODY2LCAxNjc3NzcxOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzOSwgMTg4NzQ4NzIsIDE2Nzc3NzI1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTQ1LCAxODg3NDg3OCwgMTY3Nzc3MzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NTEsIDE4ODc0ODg0LCAxNjc3NzczNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk1NywgMTg4NzQ4OTAsIDE2Nzc3NzQzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTYzLCAxODg3NDg5NiwgMTY3Nzc3NDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NjksIDE4ODc0OTAyLCAxNjc3Nzc1NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3NSwgMTg4NzQ5MDgsIDE2Nzc3NzYxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTgxLCAxODg3NDkxNCwgMTY3Nzc3NjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODcsIDE4ODc0OTIwLCAxNjc3Nzc3MywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk5MywgMTg4NzQ5MjYsIDE2Nzc3Nzc5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTk5LCAxODg3NDkzMiwgMTY3Nzc3ODUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMDUsIDE4ODc0OTM4LCAxNjc3Nzc5MSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAxMSwgMTg4NzQ5NDQsIDE2Nzc3Nzk3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDE3LCAxODg3NDk1MCwgMTY3Nzc4MDMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjMsIDE4ODc0OTU2LCAxNjc3NzgwOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyOSwgMTg4NzQ5NjIsIDE2Nzc3ODE1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDM1LCAxODg3NDk2OCwgMTY3Nzc4MjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNDEsIDE4ODc0OTc0LCAxNjc3NzgyNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA0NywgMTg4NzQ5ODAsIDE2Nzc3ODMzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDUzLCAxODg3NDk4NiwgMTY3Nzc4MzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNTksIDE4ODc0OTkyLCAxNjc3Nzg0NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA2NSwgMTg4NzQ5OTgsIDE2Nzc3ODUxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDcxLCAxODg3NTAwNCwgMTY3Nzc4NTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNzcsIDE4ODc1MDEwLCAxNjc3Nzg2MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4MywgMTg4NzUwMTYsIDE2Nzc3ODY5LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDg5LCAxODg3NTAyMiwgMTY3Nzc4NzUsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwOTUsIDE4ODc1MDI4LCAxNjc3Nzg4MSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEwMSwgMTg4NzUwMzQsIDE2Nzc3ODg3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMTY3Nzc4OTMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMTMsIDE4ODc1MDQ2LCAxNjc3Nzg5OSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTExOSwgMTg4NzUwNTIsIDE2Nzc3OTA1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTI1LCAxODg3NTA1OCwgMTY3Nzc5MTEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMzEsIDE4ODc1MDY0LCAzMzU1NTEzMywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEzOCwgMTg4NzUwNzEsIDE2Nzc3OTI0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTQ0LCAxODg3NTA3NywgMzM1NTUxNDYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNTEsIDE4ODc1MDg0LCAzMzU1NTE1MSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjM3MywgMTk5MjM2NjUsIDUwMzMyMzc2LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDg5MCwgMTg4NzQ4MjMsIDE2Nzc3Njc2LCAwLCAwLCAyNjQzM30sCi0gICAgezE2Nzc3Njc5LCAxNzgyNjI1MywgMTY3Nzc2NzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4OTksIDE4ODc0ODMyLCAzMzU1NDkwMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMzM1NTQ5MTQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5MTksIDE4ODc0ODUyLCAzMzU1NDkxOSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjE0MSwgMTk5MjM0MzMsIDUwMzMyMTQ0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTY2LCAxODg3NTA5OSwgMTY3Nzc5NTIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MTY3Nzc5NTUsIDE3ODI2NTI5LCAxNjc3Nzk1NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3NSwgMTg4NzUxMDgsIDMzNTU1MTc3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTgyLCAxODg3NTExNSwgMTY3Nzc5NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxODgsIDE4ODc1MTIxLCAzMzU1NTE5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE5NSwgMTg4NzUxMjgsIDMzNTU1MTk1LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDE3LCAxOTkyMzcwOSwgNTAzMzI0MjAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTg2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU0OTM0LCAxODg3NDg2NywgMTY3Nzc3MjAsIDAsIDAsIDI2NDMzfSwKLSAgICB7NTAzMzIxNTcsIDE5OTIzNDQ5LCA1MDMzMjE1NywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjE2NCwgMTk5MjM0NTYsIDUwMzMyMTY0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTU0LCAxODg3NDg4NywgMzM1NTQ5NTQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIxNzYsIDE5OTIzNDY4LCA1MDMzMjE3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIxMCwgMTg4NzUxNDMsIDE2Nzc3OTk2LCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyNDMzLCAxOTkyMzcyNSwgNTAzMzI0MzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NDAsIDE5OTIzNzMyLCA1MDMzMjQ0MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIzMCwgMTg4NzUxNjMsIDMzNTU1MjMwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDUyLCAxOTkyMzc0NCwgNTAzMzI0NTIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHs1MDMzMjE4MywgMTk5MjM0NzUsIDUwMzMyMTgzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMTkwLCAxOTkyMzQ4MiwgNTAzMzIxOTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODAsIDE4ODc0OTEzLCAzMzU1NDk4MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4NSwgMTg4NzQ5MTgsIDMzNTU0OTg1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMjA3LCAxOTkyMzQ5OSwgNTAzMzIyMDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NTksIDE5OTIzNzUxLCA1MDMzMjQ1OSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ2NiwgMTk5MjM3NTgsIDUwMzMyNDY2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjU2LCAxODg3NTE4OSwgMzM1NTUyNTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyNjEsIDE4ODc1MTk0LCAzMzU1NTI2MSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ4MywgMTk5MjM3NzUsIDUwMzMyNDgzLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTQ5OTcsIDE4ODc0OTMwLCAzMzU1NDk5OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTAwNCwgMTg4NzQ5MzcsIDE2Nzc3NzkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDEwLCAxODg3NDk0MywgMzM1NTUwMTIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAzMzU1NTAxNywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjIzOSwgMTk5MjM1MzEsIDUwMzMyMjQyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjczLCAxODg3NTIwNiwgMzM1NTUyNzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODAsIDE4ODc1MjEzLCAxNjc3ODA2NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4NiwgMTg4NzUyMTksIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjkzLCAxODg3NTIyNiwgMzM1NTUyOTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1MTUsIDE5OTIzODA3LCA1MDMzMjUxOCwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC0xMjYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUwMzIsIDE4ODc0OTY1LCAxNjc3NzgxOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTMwOCwgMTg4NzUyNDEsIDE2Nzc4MDk0LCAwLCAwLCAyNjQzM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCkBAIC0yODAsMjIgKzM4MCwxMTEgQEAKICAgICB7MCwgLTM1MzMyLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC00MjI4MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtNDIzMDgsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAzMzU1NTA0MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0NSwgMTg4NzQ5NzgsIDMzNTU1MDQ3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDUyLCAxODg3NDk4NSwgMzM1NTUwNTQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIyNzYsIDE5OTIzNTY4LCA1MDMzMjI3OSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjI4NiwgMTk5MjM1NzgsIDUwMzMyMjg5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDc5LCAxODg3NTAxMiwgMzM1NTUwODEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAzMzU1NTA4OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA5MywgMTg4NzUwMjYsIDMzNTU1MDk1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTAwLCAxODg3NTAzMywgMzM1NTUxMDIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAzMzU1NTEwOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTExNCwgMTg4NzUwNDcsIDMzNTU1MTE2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTIxLCAxODg3NTA1NCwgMzM1NTUxMjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTQyMzE5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjMxNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIzMDUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMjU4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjI4MiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtNDIyNjEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgOTI4LCAwLCAwLCAwLCAxMDExM30sCisgICAgey05MjgsIDAsIC05MjgsIDAsIDAsIDk5OTN9LAorICAgIHsxNjc3ODA5NywgMTc4MjY2NzEsIDE2Nzc4MDk3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTAwLCAxNzgyNjY3NCwgMTY3NzgxMDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMDMsIDE3ODI2Njc3LCAxNjc3ODEwMywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEwNiwgMTc4MjY2ODAsIDE2Nzc4MTA2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTA5LCAxNzgyNjY4MywgMTY3NzgxMDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMTIsIDE3ODI2Njg2LCAxNjc3ODExMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODExNSwgMTc4MjY2ODksIDE2Nzc4MTE1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTE4LCAxNzgyNjY5MiwgMTY3NzgxMTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMjEsIDE3ODI2Njk1LCAxNjc3ODEyMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEyNCwgMTc4MjY2OTgsIDE2Nzc4MTI0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTI3LCAxNzgyNjcwMSwgMTY3NzgxMjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMzAsIDE3ODI2NzA0LCAxNjc3ODEzMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODEzMywgMTc4MjY3MDcsIDE2Nzc4MTMzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTM2LCAxNzgyNjcxMCwgMTY3NzgxMzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxMzksIDE3ODI2NzEzLCAxNjc3ODEzOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE0MiwgMTc4MjY3MTYsIDE2Nzc4MTQyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTQ1LCAxNzgyNjcxOSwgMTY3NzgxNDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNDgsIDE3ODI2NzIyLCAxNjc3ODE0OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE1MSwgMTc4MjY3MjUsIDE2Nzc4MTUxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTU0LCAxNzgyNjcyOCwgMTY3NzgxNTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNTcsIDE3ODI2NzMxLCAxNjc3ODE1NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE2MCwgMTc4MjY3MzQsIDE2Nzc4MTYwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTYzLCAxNzgyNjczNywgMTY3NzgxNjMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNjYsIDE3ODI2NzQwLCAxNjc3ODE2NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE2OSwgMTc4MjY3NDMsIDE2Nzc4MTY5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTcyLCAxNzgyNjc0NiwgMTY3NzgxNzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxNzUsIDE3ODI2NzQ5LCAxNjc3ODE3NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE3OCwgMTc4MjY3NTIsIDE2Nzc4MTc4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTgxLCAxNzgyNjc1NSwgMTY3NzgxODEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxODQsIDE3ODI2NzU4LCAxNjc3ODE4NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE4NywgMTc4MjY3NjEsIDE2Nzc4MTg3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTkwLCAxNzgyNjc2NCwgMTY3NzgxOTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgxOTMsIDE3ODI2NzY3LCAxNjc3ODE5MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODE5NiwgMTc4MjY3NzAsIDE2Nzc4MTk2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MTk5LCAxNzgyNjc3MywgMTY3NzgxOTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMDIsIDE3ODI2Nzc2LCAxNjc3ODIwMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIwNSwgMTc4MjY3NzksIDE2Nzc4MjA1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjA4LCAxNzgyNjc4MiwgMTY3NzgyMDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMTEsIDE3ODI2Nzg1LCAxNjc3ODIxMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIxNCwgMTc4MjY3ODgsIDE2Nzc4MjE0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjE3LCAxNzgyNjc5MSwgMTY3NzgyMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMjAsIDE3ODI2Nzk0LCAxNjc3ODIyMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIyMywgMTc4MjY3OTcsIDE2Nzc4MjIzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjI2LCAxNzgyNjgwMCwgMTY3NzgyMjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMjksIDE3ODI2ODAzLCAxNjc3ODIyOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODIzMiwgMTc4MjY4MDYsIDE2Nzc4MjMyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjM1LCAxNzgyNjgwOSwgMTY3NzgyMzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyMzgsIDE3ODI2ODEyLCAxNjc3ODIzOCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI0MSwgMTc4MjY4MTUsIDE2Nzc4MjQxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjQ0LCAxNzgyNjgxOCwgMTY3NzgyNDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNDcsIDE3ODI2ODIxLCAxNjc3ODI0NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI1MCwgMTc4MjY4MjQsIDE2Nzc4MjUwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjUzLCAxNzgyNjgyNywgMTY3NzgyNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNTYsIDE3ODI2ODMwLCAxNjc3ODI1NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI1OSwgMTc4MjY4MzMsIDE2Nzc4MjU5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjYyLCAxNzgyNjgzNiwgMTY3NzgyNjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNjUsIDE3ODI2ODM5LCAxNjc3ODI2NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI2OCwgMTc4MjY4NDIsIDE2Nzc4MjY4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjcxLCAxNzgyNjg0NSwgMTY3NzgyNzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyNzQsIDE3ODI2ODQ4LCAxNjc3ODI3NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI3NywgMTc4MjY4NTEsIDE2Nzc4Mjc3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MjgwLCAxNzgyNjg1NCwgMTY3NzgyODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyODMsIDE3ODI2ODU3LCAxNjc3ODI4MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI4NiwgMTc4MjY4NjAsIDE2Nzc4Mjg2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4Mjg5LCAxNzgyNjg2MywgMTY3NzgyODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgyOTIsIDE3ODI2ODY2LCAxNjc3ODI5MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODI5NSwgMTc4MjY4NjksIDE2Nzc4Mjk1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4Mjk4LCAxNzgyNjg3MiwgMTY3NzgyOTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMDEsIDE3ODI2ODc1LCAxNjc3ODMwMSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMwNCwgMTc4MjY4NzgsIDE2Nzc4MzA0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzA3LCAxNzgyNjg4MSwgMTY3NzgzMDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMTAsIDE3ODI2ODg0LCAxNjc3ODMxMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMxMywgMTc4MjY4ODcsIDE2Nzc4MzEzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzE2LCAxNzgyNjg5MCwgMTY3NzgzMTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMTksIDE3ODI2ODkzLCAxNjc3ODMxOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMyMiwgMTc4MjY4OTYsIDE2Nzc4MzIyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzI1LCAxNzgyNjg5OSwgMTY3NzgzMjUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMjgsIDE3ODI2OTAyLCAxNjc3ODMyOCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMzMSwgMTc4MjY5MDUsIDE2Nzc4MzMxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzM0LCAxNzgyNjkwOCwgMTY3NzgzMzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1NTQsIDE4ODc1NDg3LCAzMzU1NTU1NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU2MSwgMTg4NzU0OTQsIDMzNTU1NTYzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTY4LCAxODg3NTUwMSwgMzM1NTU1NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI3OTIsIDE5OTI0MDg0LCA1MDMzMjc5NSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgwMiwgMTk5MjQwOTQsIDUwMzMyODA1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTk1LCAxODg3NTUyOCwgMzM1NTU1OTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MDIsIDE4ODc1NTM1LCAzMzU1NTYwNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYwOSwgMTg4NzU1NDIsIDMzNTU1NjExLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjE2LCAxODg3NTU0OSwgMzM1NTU2MTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjMsIDE4ODc1NTU2LCAzMzU1NTYyNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYzMCwgMTg4NzU1NjMsIDMzNTU1NjMyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjM3LCAxODg3NTU3MCwgMzM1NTU2MzksIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAogICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDAsIDAsIDAsIDAsIDkzNDR9LAogfTsKIAogLyogZXh0ZW5kZWQgY2FzZSBtYXBwaW5ncyAqLwpAQCAtMzc1LDYgKzU2NCwyODIgQEAKICAgICAxMzYyLAogICAgIDEzMzMsCiAgICAgMTQxMCwKKyAgICA0Mzg4OCwKKyAgICA1MDI0LAorICAgIDUwMjQsCisgICAgNDM4ODksCisgICAgNTAyNSwKKyAgICA1MDI1LAorICAgIDQzODkwLAorICAgIDUwMjYsCisgICAgNTAyNiwKKyAgICA0Mzg5MSwKKyAgICA1MDI3LAorICAgIDUwMjcsCisgICAgNDM4OTIsCisgICAgNTAyOCwKKyAgICA1MDI4LAorICAgIDQzODkzLAorICAgIDUwMjksCisgICAgNTAyOSwKKyAgICA0Mzg5NCwKKyAgICA1MDMwLAorICAgIDUwMzAsCisgICAgNDM4OTUsCisgICAgNTAzMSwKKyAgICA1MDMxLAorICAgIDQzODk2LAorICAgIDUwMzIsCisgICAgNTAzMiwKKyAgICA0Mzg5NywKKyAgICA1MDMzLAorICAgIDUwMzMsCisgICAgNDM4OTgsCisgICAgNTAzNCwKKyAgICA1MDM0LAorICAgIDQzODk5LAorICAgIDUwMzUsCisgICAgNTAzNSwKKyAgICA0MzkwMCwKKyAgICA1MDM2LAorICAgIDUwMzYsCisgICAgNDM5MDEsCisgICAgNTAzNywKKyAgICA1MDM3LAorICAgIDQzOTAyLAorICAgIDUwMzgsCisgICAgNTAzOCwKKyAgICA0MzkwMywKKyAgICA1MDM5LAorICAgIDUwMzksCisgICAgNDM5MDQsCisgICAgNTA0MCwKKyAgICA1MDQwLAorICAgIDQzOTA1LAorICAgIDUwNDEsCisgICAgNTA0MSwKKyAgICA0MzkwNiwKKyAgICA1MDQyLAorICAgIDUwNDIsCisgICAgNDM5MDcsCisgICAgNTA0MywKKyAgICA1MDQzLAorICAgIDQzOTA4LAorICAgIDUwNDQsCisgICAgNTA0NCwKKyAgICA0MzkwOSwKKyAgICA1MDQ1LAorICAgIDUwNDUsCisgICAgNDM5MTAsCisgICAgNTA0NiwKKyAgICA1MDQ2LAorICAgIDQzOTExLAorICAgIDUwNDcsCisgICAgNTA0NywKKyAgICA0MzkxMiwKKyAgICA1MDQ4LAorICAgIDUwNDgsCisgICAgNDM5MTMsCisgICAgNTA0OSwKKyAgICA1MDQ5LAorICAgIDQzOTE0LAorICAgIDUwNTAsCisgICAgNTA1MCwKKyAgICA0MzkxNSwKKyAgICA1MDUxLAorICAgIDUwNTEsCisgICAgNDM5MTYsCisgICAgNTA1MiwKKyAgICA1MDUyLAorICAgIDQzOTE3LAorICAgIDUwNTMsCisgICAgNTA1MywKKyAgICA0MzkxOCwKKyAgICA1MDU0LAorICAgIDUwNTQsCisgICAgNDM5MTksCisgICAgNTA1NSwKKyAgICA1MDU1LAorICAgIDQzOTIwLAorICAgIDUwNTYsCisgICAgNTA1NiwKKyAgICA0MzkyMSwKKyAgICA1MDU3LAorICAgIDUwNTcsCisgICAgNDM5MjIsCisgICAgNTA1OCwKKyAgICA1MDU4LAorICAgIDQzOTIzLAorICAgIDUwNTksCisgICAgNTA1OSwKKyAgICA0MzkyNCwKKyAgICA1MDYwLAorICAgIDUwNjAsCisgICAgNDM5MjUsCisgICAgNTA2MSwKKyAgICA1MDYxLAorICAgIDQzOTI2LAorICAgIDUwNjIsCisgICAgNTA2MiwKKyAgICA0MzkyNywKKyAgICA1MDYzLAorICAgIDUwNjMsCisgICAgNDM5MjgsCisgICAgNTA2NCwKKyAgICA1MDY0LAorICAgIDQzOTI5LAorICAgIDUwNjUsCisgICAgNTA2NSwKKyAgICA0MzkzMCwKKyAgICA1MDY2LAorICAgIDUwNjYsCisgICAgNDM5MzEsCisgICAgNTA2NywKKyAgICA1MDY3LAorICAgIDQzOTMyLAorICAgIDUwNjgsCisgICAgNTA2OCwKKyAgICA0MzkzMywKKyAgICA1MDY5LAorICAgIDUwNjksCisgICAgNDM5MzQsCisgICAgNTA3MCwKKyAgICA1MDcwLAorICAgIDQzOTM1LAorICAgIDUwNzEsCisgICAgNTA3MSwKKyAgICA0MzkzNiwKKyAgICA1MDcyLAorICAgIDUwNzIsCisgICAgNDM5MzcsCisgICAgNTA3MywKKyAgICA1MDczLAorICAgIDQzOTM4LAorICAgIDUwNzQsCisgICAgNTA3NCwKKyAgICA0MzkzOSwKKyAgICA1MDc1LAorICAgIDUwNzUsCisgICAgNDM5NDAsCisgICAgNTA3NiwKKyAgICA1MDc2LAorICAgIDQzOTQxLAorICAgIDUwNzcsCisgICAgNTA3NywKKyAgICA0Mzk0MiwKKyAgICA1MDc4LAorICAgIDUwNzgsCisgICAgNDM5NDMsCisgICAgNTA3OSwKKyAgICA1MDc5LAorICAgIDQzOTQ0LAorICAgIDUwODAsCisgICAgNTA4MCwKKyAgICA0Mzk0NSwKKyAgICA1MDgxLAorICAgIDUwODEsCisgICAgNDM5NDYsCisgICAgNTA4MiwKKyAgICA1MDgyLAorICAgIDQzOTQ3LAorICAgIDUwODMsCisgICAgNTA4MywKKyAgICA0Mzk0OCwKKyAgICA1MDg0LAorICAgIDUwODQsCisgICAgNDM5NDksCisgICAgNTA4NSwKKyAgICA1MDg1LAorICAgIDQzOTUwLAorICAgIDUwODYsCisgICAgNTA4NiwKKyAgICA0Mzk1MSwKKyAgICA1MDg3LAorICAgIDUwODcsCisgICAgNDM5NTIsCisgICAgNTA4OCwKKyAgICA1MDg4LAorICAgIDQzOTUzLAorICAgIDUwODksCisgICAgNTA4OSwKKyAgICA0Mzk1NCwKKyAgICA1MDkwLAorICAgIDUwOTAsCisgICAgNDM5NTUsCisgICAgNTA5MSwKKyAgICA1MDkxLAorICAgIDQzOTU2LAorICAgIDUwOTIsCisgICAgNTA5MiwKKyAgICA0Mzk1NywKKyAgICA1MDkzLAorICAgIDUwOTMsCisgICAgNDM5NTgsCisgICAgNTA5NCwKKyAgICA1MDk0LAorICAgIDQzOTU5LAorICAgIDUwOTUsCisgICAgNTA5NSwKKyAgICA0Mzk2MCwKKyAgICA1MDk2LAorICAgIDUwOTYsCisgICAgNDM5NjEsCisgICAgNTA5NywKKyAgICA1MDk3LAorICAgIDQzOTYyLAorICAgIDUwOTgsCisgICAgNTA5OCwKKyAgICA0Mzk2MywKKyAgICA1MDk5LAorICAgIDUwOTksCisgICAgNDM5NjQsCisgICAgNTEwMCwKKyAgICA1MTAwLAorICAgIDQzOTY1LAorICAgIDUxMDEsCisgICAgNTEwMSwKKyAgICA0Mzk2NiwKKyAgICA1MTAyLAorICAgIDUxMDIsCisgICAgNDM5NjcsCisgICAgNTEwMywKKyAgICA1MTAzLAorICAgIDUxMTIsCisgICAgNTEwNCwKKyAgICA1MTA0LAorICAgIDUxMTMsCisgICAgNTEwNSwKKyAgICA1MTA1LAorICAgIDUxMTQsCisgICAgNTEwNiwKKyAgICA1MTA2LAorICAgIDUxMTUsCisgICAgNTEwNywKKyAgICA1MTA3LAorICAgIDUxMTYsCisgICAgNTEwOCwKKyAgICA1MTA4LAorICAgIDUxMTcsCisgICAgNTEwOSwKKyAgICA1MTA5LAorICAgIDUxMTIsCisgICAgNTEwNCwKKyAgICA1MTA0LAorICAgIDUxMTMsCisgICAgNTEwNSwKKyAgICA1MTA1LAorICAgIDUxMTQsCisgICAgNTEwNiwKKyAgICA1MTA2LAorICAgIDUxMTUsCisgICAgNTEwNywKKyAgICA1MTA3LAorICAgIDUxMTYsCisgICAgNTEwOCwKKyAgICA1MTA4LAorICAgIDUxMTcsCisgICAgNTEwOSwKKyAgICA1MTA5LAogICAgIDc4MzAsCiAgICAgMTA0LAogICAgIDgxNywKQEAgLTkwNCw2ICsxMzY5LDI0NiBAQAogICAgIDkzNywKICAgICA5MjEsCiAgICAgODE4OCwKKyAgICA0Mzg4OCwKKyAgICA1MDI0LAorICAgIDUwMjQsCisgICAgNDM4ODksCisgICAgNTAyNSwKKyAgICA1MDI1LAorICAgIDQzODkwLAorICAgIDUwMjYsCisgICAgNTAyNiwKKyAgICA0Mzg5MSwKKyAgICA1MDI3LAorICAgIDUwMjcsCisgICAgNDM4OTIsCisgICAgNTAyOCwKKyAgICA1MDI4LAorICAgIDQzODkzLAorICAgIDUwMjksCisgICAgNTAyOSwKKyAgICA0Mzg5NCwKKyAgICA1MDMwLAorICAgIDUwMzAsCisgICAgNDM4OTUsCisgICAgNTAzMSwKKyAgICA1MDMxLAorICAgIDQzODk2LAorICAgIDUwMzIsCisgICAgNTAzMiwKKyAgICA0Mzg5NywKKyAgICA1MDMzLAorICAgIDUwMzMsCisgICAgNDM4OTgsCisgICAgNTAzNCwKKyAgICA1MDM0LAorICAgIDQzODk5LAorICAgIDUwMzUsCisgICAgNTAzNSwKKyAgICA0MzkwMCwKKyAgICA1MDM2LAorICAgIDUwMzYsCisgICAgNDM5MDEsCisgICAgNTAzNywKKyAgICA1MDM3LAorICAgIDQzOTAyLAorICAgIDUwMzgsCisgICAgNTAzOCwKKyAgICA0MzkwMywKKyAgICA1MDM5LAorICAgIDUwMzksCisgICAgNDM5MDQsCisgICAgNTA0MCwKKyAgICA1MDQwLAorICAgIDQzOTA1LAorICAgIDUwNDEsCisgICAgNTA0MSwKKyAgICA0MzkwNiwKKyAgICA1MDQyLAorICAgIDUwNDIsCisgICAgNDM5MDcsCisgICAgNTA0MywKKyAgICA1MDQzLAorICAgIDQzOTA4LAorICAgIDUwNDQsCisgICAgNTA0NCwKKyAgICA0MzkwOSwKKyAgICA1MDQ1LAorICAgIDUwNDUsCisgICAgNDM5MTAsCisgICAgNTA0NiwKKyAgICA1MDQ2LAorICAgIDQzOTExLAorICAgIDUwNDcsCisgICAgNTA0NywKKyAgICA0MzkxMiwKKyAgICA1MDQ4LAorICAgIDUwNDgsCisgICAgNDM5MTMsCisgICAgNTA0OSwKKyAgICA1MDQ5LAorICAgIDQzOTE0LAorICAgIDUwNTAsCisgICAgNTA1MCwKKyAgICA0MzkxNSwKKyAgICA1MDUxLAorICAgIDUwNTEsCisgICAgNDM5MTYsCisgICAgNTA1MiwKKyAgICA1MDUyLAorICAgIDQzOTE3LAorICAgIDUwNTMsCisgICAgNTA1MywKKyAgICA0MzkxOCwKKyAgICA1MDU0LAorICAgIDUwNTQsCisgICAgNDM5MTksCisgICAgNTA1NSwKKyAgICA1MDU1LAorICAgIDQzOTIwLAorICAgIDUwNTYsCisgICAgNTA1NiwKKyAgICA0MzkyMSwKKyAgICA1MDU3LAorICAgIDUwNTcsCisgICAgNDM5MjIsCisgICAgNTA1OCwKKyAgICA1MDU4LAorICAgIDQzOTIzLAorICAgIDUwNTksCisgICAgNTA1OSwKKyAgICA0MzkyNCwKKyAgICA1MDYwLAorICAgIDUwNjAsCisgICAgNDM5MjUsCisgICAgNTA2MSwKKyAgICA1MDYxLAorICAgIDQzOTI2LAorICAgIDUwNjIsCisgICAgNTA2MiwKKyAgICA0MzkyNywKKyAgICA1MDYzLAorICAgIDUwNjMsCisgICAgNDM5MjgsCisgICAgNTA2NCwKKyAgICA1MDY0LAorICAgIDQzOTI5LAorICAgIDUwNjUsCisgICAgNTA2NSwKKyAgICA0MzkzMCwKKyAgICA1MDY2LAorICAgIDUwNjYsCisgICAgNDM5MzEsCisgICAgNTA2NywKKyAgICA1MDY3LAorICAgIDQzOTMyLAorICAgIDUwNjgsCisgICAgNTA2OCwKKyAgICA0MzkzMywKKyAgICA1MDY5LAorICAgIDUwNjksCisgICAgNDM5MzQsCisgICAgNTA3MCwKKyAgICA1MDcwLAorICAgIDQzOTM1LAorICAgIDUwNzEsCisgICAgNTA3MSwKKyAgICA0MzkzNiwKKyAgICA1MDcyLAorICAgIDUwNzIsCisgICAgNDM5MzcsCisgICAgNTA3MywKKyAgICA1MDczLAorICAgIDQzOTM4LAorICAgIDUwNzQsCisgICAgNTA3NCwKKyAgICA0MzkzOSwKKyAgICA1MDc1LAorICAgIDUwNzUsCisgICAgNDM5NDAsCisgICAgNTA3NiwKKyAgICA1MDc2LAorICAgIDQzOTQxLAorICAgIDUwNzcsCisgICAgNTA3NywKKyAgICA0Mzk0MiwKKyAgICA1MDc4LAorICAgIDUwNzgsCisgICAgNDM5NDMsCisgICAgNTA3OSwKKyAgICA1MDc5LAorICAgIDQzOTQ0LAorICAgIDUwODAsCisgICAgNTA4MCwKKyAgICA0Mzk0NSwKKyAgICA1MDgxLAorICAgIDUwODEsCisgICAgNDM5NDYsCisgICAgNTA4MiwKKyAgICA1MDgyLAorICAgIDQzOTQ3LAorICAgIDUwODMsCisgICAgNTA4MywKKyAgICA0Mzk0OCwKKyAgICA1MDg0LAorICAgIDUwODQsCisgICAgNDM5NDksCisgICAgNTA4NSwKKyAgICA1MDg1LAorICAgIDQzOTUwLAorICAgIDUwODYsCisgICAgNTA4NiwKKyAgICA0Mzk1MSwKKyAgICA1MDg3LAorICAgIDUwODcsCisgICAgNDM5NTIsCisgICAgNTA4OCwKKyAgICA1MDg4LAorICAgIDQzOTUzLAorICAgIDUwODksCisgICAgNTA4OSwKKyAgICA0Mzk1NCwKKyAgICA1MDkwLAorICAgIDUwOTAsCisgICAgNDM5NTUsCisgICAgNTA5MSwKKyAgICA1MDkxLAorICAgIDQzOTU2LAorICAgIDUwOTIsCisgICAgNTA5MiwKKyAgICA0Mzk1NywKKyAgICA1MDkzLAorICAgIDUwOTMsCisgICAgNDM5NTgsCisgICAgNTA5NCwKKyAgICA1MDk0LAorICAgIDQzOTU5LAorICAgIDUwOTUsCisgICAgNTA5NSwKKyAgICA0Mzk2MCwKKyAgICA1MDk2LAorICAgIDUwOTYsCisgICAgNDM5NjEsCisgICAgNTA5NywKKyAgICA1MDk3LAorICAgIDQzOTYyLAorICAgIDUwOTgsCisgICAgNTA5OCwKKyAgICA0Mzk2MywKKyAgICA1MDk5LAorICAgIDUwOTksCisgICAgNDM5NjQsCisgICAgNTEwMCwKKyAgICA1MTAwLAorICAgIDQzOTY1LAorICAgIDUxMDEsCisgICAgNTEwMSwKKyAgICA0Mzk2NiwKKyAgICA1MTAyLAorICAgIDUxMDIsCisgICAgNDM5NjcsCisgICAgNTEwMywKKyAgICA1MTAzLAogICAgIDY0MjU2LAogICAgIDEwMiwKICAgICAxMDIsCkBAIC0xMDI5LDQwNSArMTczNCw1MTEgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIAogICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCi0gICAgNzEsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNTAsIDcxLCAxNTEsIDE1MiwgCi0gICAgMTUzLCA3MSwgMTU0LCA3MSwgMTU1LCA3MSwgNzEsIDcxLCAxNTYsIDcxLCA3MSwgNzEsIDE1NywgMTU4LCAxNTksIDE2MCwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTYxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjIsIDcxLCAKLSAgICAxNjMsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNjQsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMzQsIDM0LCAzNCwgMTY1LCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjYsIDE2NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxNjgsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDY0LCAxNjksIDE3MCwgMTcxLCAxNzIsIDcxLCAxNzMsIDcxLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCi0gICAgMTc5LCAxODAsIDE4MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxODIsIDE4MywgNzEsIDcxLCAxODQsIAotICAgIDE4NSwgMTg2LCAxODcsIDE4OCwgNzEsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCA2NSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxOTcsIDE5OCwgCi0gICAgMTk5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjAwLCAKLSAgICAzNCwgMjAxLCAyMDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTQ1LCAzNCwgMzQsIDE1MiwgMTQ1LCAxNTMsIDE1NCwgMTU1LCAKKyAgICAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE0NSwgMTQ1LCAxNjMsIDE0NSwgMTQ1LCAxNDUsIDE2NCwgCisgICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNDUsIDE3MSwgMTQ1LCAxNzIsIDE3MywgMTc0LCAxNzUsIAorICAgIDE0NSwgMTQ1LCAxNzYsIDE0NSwgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTc4LCAxNzksIDM0LCAxODAsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MywgMTg0LCAxODUsIDE4NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTg3LCAxODgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxOTAsIDE5MSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDY0LCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE0NSwgMTk2LCAxNDUsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCA2NCwgCisgICAgNjQsIDY0LCA2NCwgMjA1LCAyMDYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAzNCwgMjA3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIwOCwgCisgICAgMjA5LCAxNDUsIDE0NSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDE0NSwgNjQsIDIxNSwgNjQsIDY0LCAyMTYsIDIxNywgCisgICAgNjQsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjI1LCAyMjYsIDIyNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIyOCwgMzQsIDIyOSwgMjMwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwMywgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMjMzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA2LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzUsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDIzNywgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAyMDgsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAzNCwgMjAzLCAzNCwgMzQsIDIwOSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgMjEwLCA3MSwgMjExLCAyMTIsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzMSwgMzQsIDM0LCAyMzksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0MCwgMTQ1LCAyNDEsIDI0MiwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0xNDYzLDggKzIyNzQsOCBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMjEzLCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMTUwMCw3ICsyMzExLDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjEzLCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xNTM1LDIwMyArMjM0NiwyMDQgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA2NCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKICAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgNzcsIDIwLCAyMCwgODAsIDIwLCA4MSwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgMjAsIDIwLCAyMCwgODQsIDIwLCAKLSAgICA4NiwgODcsIDIwLCAyMCwgODgsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA4OSwgMjAsIDIwLCA5MCwgMjAsIDIwLCAKLSAgICA5MCwgMjAsIDIwLCAyMCwgMjAsIDkwLCA5MSwgOTIsIDkyLCA5MywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NCwgMjAsIDU1LCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCAKLSAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTUsIDk1LCA2LCA2LCA2LCA2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCAKLSAgICA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDk2LCA2LCA5NiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCi0gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDMxLCAzMCwgMzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgMjAsIDc3LCA3NywgMjAsIDc4LCAyMCwgNzksIDgwLCAyMCwgMjAsIAorICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgMjAsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAorICAgIDg5LCA5MCwgMjAsIDIwLCA5MSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDkyLCAyMCwgMjAsIDkzLCAyMCwgMjAsIAorICAgIDkzLCAyMCwgMjAsIDIwLCA5NCwgOTMsIDk1LCA5NiwgOTYsIDk3LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk4LCAyMCwgNTUsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTksIDEwMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMSwgMTAxLCA2LCA2LCA2LCA2LCAxMDIsIAorICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgCisgICAgMTAyLCA2LCAxMDIsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCA5NywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDEwMywgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgMzAsIDMxLCAwLCAwLCAKLSAgICA5OCwgNTAsIDUwLCA1MCwgNSwgMCwgMCwgMCwgMCwgMCwgNiwgNiwgOTksIDI1LCAxMDAsIDEwMCwgMTAwLCAwLCAxMDEsIDAsIAotICAgIDEwMiwgMTAyLCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTA3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMDgsIDEwOSwgMTA5LCAxMTAsIDExMSwgMTEyLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTQsIDExNSwgMTE2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMTcsIDExOCwgMTE5LCAyMCwgCi0gICAgMTIwLCAxMjEsIDUsIDMwLCAzMSwgMTIyLCAzMCwgMzEsIDIwLCA2NCwgNjQsIDY0LCAxMjMsIDEyMywgMTIzLCAxMjMsIAotICAgIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDE3LCAxNywgMTcsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgMzAsIDMxLCAwLCAwLCAxMDQsIDUwLCA1MCwgNTAsIDUsIDEwNSwgMCwgCisgICAgMCwgMCwgMCwgNiwgNiwgMTA2LCAyNSwgMTA3LCAxMDcsIDEwNywgMCwgMTA4LCAwLCAxMDksIDEwOSwgMTEwLCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDExMSwgMTEyLCAxMTIsIDExMiwgMTEzLCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDExNCwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTE1LCAxMTYsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjAsIDEyMCwgMTIxLCAxMjIsIAorICAgIDEyMywgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNSwgMzAsIDMxLCAxMzAsIAorICAgIDMwLCAzMSwgMjAsIDY0LCA2NCwgNjQsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKICAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgCi0gICAgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxMzIsIAorICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKKyAgICAxMzIsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAogICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAogICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI1LCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTMzLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEzNCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKICAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDAsIDAsIDk2LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI5LCAwLCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCA1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzcsIDAsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDUsIDI1LCAyNSwgNSwgMjUsIDI1LCAKLSAgICA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDIxLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgCi0gICAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjEsIDUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDk2LCA5NiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIAorICAgIDIxLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDk2LCA1LCA1LCA1LCA1LCA5NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDIxLCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxMDIsIDEwMiwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDIxLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMTAyLCA1LCA1LCA1LCA1LCAxMDIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxMDIsIDI1LCAyNSwgMjUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAyNSwgMCwgMTgsIAotICAgIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAKLSAgICAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCisgICAgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIAorICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIAorICAgIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIAotICAgIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTMwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIAotICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAKLSAgICAxMzAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgOTYsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgCi0gICAgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAKKyAgICAxMzksIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMTc0MiwzMSArMjU1NCwzMyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIAorICAgIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAKKyAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgCisgICAgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIAorICAgIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAKKyAgICAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgCisgICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIAorICAgIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgCisgICAgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMTc4NiwyOCArMjYwMCwyOCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDk2LCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgCisgICAgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMTgxNSw1OTAgKzI2MjksMjY3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxMzIsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTQwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDk2LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgMTQyLCAyMCwgMjAsIDIwLCAxNDMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCi0gICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNDIsIDIwLCAKKyAgICAyMCwgMjAsIDI0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxNDQsIAotICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAyMCwgMjAsIDE1MCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMCwgMCwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAotICAgIDE1MiwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKLSAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDE1MiwgMTUyLCAxNTIsIAotICAgIDE1MiwgMTUyLCAxNTIsIDAsIDAsIDE1MywgMTUxLCAxNTQsIDE1MSwgMTU1LCAxNTEsIDE1NiwgMTUxLCAwLCAxNTIsIDAsIAotICAgIDE1MiwgMCwgMTUyLCAwLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgCi0gICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTU3LCAxNTcsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU5LCAxNTksIAotICAgIDE2MCwgMTYwLCAxNjEsIDE2MSwgMTYyLCAxNjIsIDAsIDAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgCi0gICAgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIAotICAgIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAKLSAgICAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDE1MSwgCi0gICAgMTUxLCAyMTEsIDIxMiwgMjEzLCAwLCAyMTQsIDIxNSwgMTUyLCAxNTIsIDIxNiwgMjE2LCAyMTcsIDYsIDIxOCwgNiwgNiwgCi0gICAgNiwgMjE5LCAyMjAsIDIyMSwgMCwgMjIyLCAyMjMsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCA2LCA2LCA2LCAxNTEsIAotICAgIDE1MSwgMjI2LCAyMjcsIDAsIDAsIDIyOCwgMjI5LCAxNTIsIDE1MiwgMjMwLCAyMzAsIDAsIDYsIDYsIDYsIDE1MSwgMTUxLCAKLSAgICAyMzEsIDIzMiwgMjMzLCAxMTksIDIzNCwgMjM1LCAxNTIsIDE1MiwgMjM2LCAyMzYsIDEyMiwgNiwgNiwgNiwgMCwgMCwgCi0gICAgMjM3LCAyMzgsIDIzOSwgMCwgMjQwLCAyNDEsIDI0MiwgMjQyLCAyNDMsIDI0MywgMjQ0LCA2LCA2LCAwLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjQ1LCA5NSwgMCwgMCwgCi0gICAgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgOTUsIDI0NSwgMjYsIDIyLCAyMywgMjQ2LCAKLSAgICAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgNSwgNSwgNSwgNSwgNSwgMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAotICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMTEzLCA1LCA1LCAKLSAgICA1LCA1LCAxMTMsIDUsIDUsIDIwLCAxMTMsIDExMywgMTEzLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDIwLCA1LCAxMTMsIDUsIAotICAgIDUsIDI1MiwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDUsIDUsIDUsIDUsIDUsIDExMywgNSwgMjUzLCA1LCAxMTMsIAotICAgIDUsIDI1NCwgMjU1LCAxMTMsIDExMywgMjUyLCAyMCwgMTEzLCAxMTMsIDI1NiwgMTEzLCAyMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDIwLCA1LCA1LCAyMCwgMjAsIDExMywgMTEzLCA1LCA1LCA1LCA1LCA1LCAxMTMsIDIwLCAyMCwgMjAsIDIwLCA1LCA1LCA1LCAKLSAgICA1LCAyNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgCi0gICAgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMTQxLCAxNDEsIDE0MSwgMzAsIDMxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgCi0gICAgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAKLSAgICAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAKLSAgICAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIAotICAgIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI0NSwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAKLSAgICAyNDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAKLSAgICAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIAotICAgIDI1MCwgMjUxLCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMzAsIDMxLCAyNjIsIDI2MywgCi0gICAgMjY0LCAyNjUsIDI2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjY3LCAyNjgsIDI2OSwgMjcwLCAyMCwgMzAsIDMxLCAKLSAgICAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgMjcxLCAyNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIDI1LCAyNSwgMjUsIDMwLCAzMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDI3MiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5NiwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3MywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyMCwgMjAsIDI1MCwgMjAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIAorICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgMCwgMjUyLCAyNTIsIDI1MiwgCisgICAgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAKKyAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCisgICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIAorICAgIDAsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MywgMjUxLCAyNTQsIDI1MSwgMjU1LCAyNTEsIDI1NiwgCisgICAgMjUxLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCisgICAgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjU3LCAyNTcsIDI1OCwgMjU4LCAyNTgsIAorICAgIDI1OCwgMjU5LCAyNTksIDI2MCwgMjYwLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDI2NiwgCisgICAgMjY3LCAyNjgsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIAorICAgIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDI5MywgMjk0LCAKKyAgICAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAzMDcsIDMwOCwgCisgICAgMzA5LCAzMTAsIDI1MSwgMjUxLCAzMTEsIDMxMiwgMzEzLCAwLCAzMTQsIDMxNSwgMjUyLCAyNTIsIDMxNiwgMzE2LCAzMTcsIAorICAgIDYsIDMxOCwgNiwgNiwgNiwgMzE5LCAzMjAsIDMyMSwgMCwgMzIyLCAzMjMsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCA2LCAKKyAgICA2LCA2LCAyNTEsIDI1MSwgMzI2LCAzMjcsIDAsIDAsIDMyOCwgMzI5LCAyNTIsIDI1MiwgMzMwLCAzMzAsIDAsIDYsIDYsIDYsIAorICAgIDI1MSwgMjUxLCAzMzEsIDMzMiwgMzMzLCAxMjYsIDMzNCwgMzM1LCAyNTIsIDI1MiwgMzM2LCAzMzYsIDEzMCwgNiwgNiwgNiwgCisgICAgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAzNDEsIDM0MiwgMzQyLCAzNDMsIDM0MywgMzQ0LCA2LCA2LCAwLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIAorICAgIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzQ1LCAxMDEsIAorICAgIDAsIDAsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzQ1LCAyNiwgMjIsIDIzLCAKKyAgICAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMTIwLCA1LCA1LCA1LCA1LCAxMjAsIDUsIDUsIDIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM1MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDEyMCwgNSwgMzUzLCA1LCAxMjAsIDUsIDM1NCwgMzU1LCAxMjAsIDEyMCwgMzUyLCAyMCwgMTIwLCAxMjAsIDM1NiwgMTIwLCAKKyAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDIwLCA1LCA1LCAyMCwgMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCAxMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIAorICAgIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAKKyAgICAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyLCA1LCA1LCA1LCA1LCA5NiwgNTUsIDE0MSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNSwgOTYsIAotICAgIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCA5NiwgNTUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCA2LCA2LCA5NiwgOTYsIDU1LCAKLSAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1LCA5NiwgOTYsIDk2LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgCisgICAgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAorICAgIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCisgICAgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAorICAgIDM2MCwgMzYwLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKKyAgICAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCisgICAgMzQ1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgCisgICAgMzQ5LCAzNTAsIDM1MSwgMjcsIDM0NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjc0LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI3NCwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDI3NCwgMjc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDI3NCwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDU1LCAyNSwgNiwgNiwgNiwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDk2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAKKyAgICAzNTAsIDM1MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMCwgCisgICAgMzAsIDMxLCAzNjIsIDM2MywgMzY0LCAzNjUsIDM2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzY3LCAzNjgsIDM2OSwgCisgICAgMzcwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzNzEsIDM3MSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzcyLCAzNzIsIDM3MiwgCisgICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAorICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKKyAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAotICAgIDYsIDYsIDYsIDYsIDYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAyNzUsIDMwLCAzMSwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgNiwgMzAsIDMxLCAyNzYsIDIwLCAwLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAzMCwgMzEsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMiwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MywgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUsIDk1LCAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDIsIDUsIAorICAgIDUsIDUsIDUsIDEwMiwgNTUsIDI0MSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDI0MSwgMjQxLCAyNDEsIDEwMiwgCisgICAgNTUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCAKLSAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDk2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgCisgICAgMCwgMCwgMjUsIDI1LCA2LCA2LCAxMDIsIDEwMiwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgOTYsIDUsIDUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMTgsIDE4LCA1LCA1LCA1NSwgOTYsIDk2LCAKLSAgICAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAKLSAgICAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCAxMDIsIDEwMiwgNTUsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI3OCwgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI0MDYsMTk4ICsyODk3LDYzOSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMjkwLCAyOTAsIDI5MCwgMjkwLCAyOTAsIDI5MCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI5MCwgMjkwLCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAKLSAgICAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjkwLCA1NSwgMjkwLCA1NSwgMjkwLCAwLCAyOTAsIDU1LCAyOTAsIDU1LCAKLSAgICAyOTAsIDU1LCAyOTAsIDU1LCAyOTAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA2LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA2LCAxOCwgNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI5MSwgMjkxLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMjcsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzc0LCAKKyAgICA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM3NCwgMzc0LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE0MSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgCisgICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDEwMiwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCA1NSwgMjUsIDYsIDYsIDYsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCAxMDIsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDEsIDEwMSwgMjUsIDI1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzc1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM3NiwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM3NywgMzc4LCAzNzksIDM4MCwgMCwgMCwgMzgxLCAzODIsIDM4MywgMzg0LCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTAxLCAxMDEsIAorICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgNSwgNTUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAyLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTAyLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDE4LCAyNSwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMTAyLCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgNSwgCisgICAgNSwgNTUsIDEwMiwgMTAyLCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAzODUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMzg3LCAzODgsIDM4OSwgMzkwLCAKKyAgICAzOTEsIDM5MiwgMzkzLCAzOTQsIDM5NSwgMzk2LCAzOTcsIDM5OCwgMzk5LCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQwNCwgCisgICAgNDA1LCA0MDYsIDQwNywgNDA4LCA0MDksIDQxMCwgNDExLCA0MTIsIDQxMywgNDE0LCA0MTUsIDQxNiwgNDE3LCA0MTgsIAorICAgIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwgNDI2LCA0MjcsIDQyOCwgNDI5LCA0MzAsIDQzMSwgNDMyLCAKKyAgICA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCA0NDIsIDQ0MywgNDQ0LCA0NDUsIDQ0NiwgCisgICAgNDQ3LCA0NDgsIDQ0OSwgNDUwLCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCA0NTcsIDQ1OCwgNDU5LCA0NjAsIAorICAgIDQ2MSwgNDYyLCA0NjMsIDQ2NCwgNDY1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjYsIDQ2NywgNDY4LCA0NjksIAorICAgIDQ3MCwgNDcxLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNDc0LCA0NzUsIDQ3NiwgCisgICAgNDc3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIAotICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAKLSAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTMsIDI5MywgCi0gICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIAotICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAKLSAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgMCwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyMSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgCisgICAgNSwgNiwgMTgsIDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNDc5LCA0NzksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNiwgMjIsIDIzLCAyNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgNSwgNSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgCi0gICAgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjQxLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCA0ODAsIAorICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKKyAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCisgICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAorICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKKyAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCisgICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgCisgICAgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1LCAKKyAgICA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgCisgICAgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgCisgICAgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCkBAIC0yNjA3LDI5NyArMzUzOSwzNzkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICA1LCA1LCA1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMCwgMTEzLCAxMTMsIDAsIDAsIDExMywgMCwgMCwgCi0gICAgMTEzLCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDAsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMCwgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAwLCAwLCAwLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAotICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAKLSAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCi0gICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDIwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCi0gICAgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NSwgMjQ1LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIAotICAgIDI1MCwgMjUxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKLSAgICA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTIwLCAwLCAxMjAsIDEyMCwgMCwgMCwgMTIwLCAwLCAwLCAxMjAsIDEyMCwgMCwgMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDAsIDIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAwLCAwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAwLCAxMjAsIDAsIDAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAorICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKKyAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDUsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDEyMCwgMjAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCAKKyAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIAorICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNDUsIDM0NSwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAorICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKKyAgICA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCisgICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAorICAgIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDAsIDAsIDAsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKKyAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCisgICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA2LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCkBAIC0yOTEwLDEzICszOTI0LDEzIEBACiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMjk0MSw2ICszOTU1LDcgQEAKICAgICBjYXNlIDB4MEM3ODoKICAgICBjYXNlIDB4MENFNjoKICAgICBjYXNlIDB4MEQ2NjoKKyAgICBjYXNlIDB4MERFNjoKICAgICBjYXNlIDB4MEU1MDoKICAgICBjYXNlIDB4MEVEMDoKICAgICBjYXNlIDB4MEYyMDoKQEAgLTI5NjksNiArMzk4NCw3IEBACiAgICAgY2FzZSAweEE4RDA6CiAgICAgY2FzZSAweEE5MDA6CiAgICAgY2FzZSAweEE5RDA6CisgICAgY2FzZSAweEE5RjA6CiAgICAgY2FzZSAweEFBNTA6CiAgICAgY2FzZSAweEFCRjA6CiAgICAgY2FzZSAweEY5QjI6CkBAIC0yOTc5LDcgKzM5OTUsMTQgQEAKICAgICBjYXNlIDB4MTEwRjA6CiAgICAgY2FzZSAweDExMTM2OgogICAgIGNhc2UgMHgxMTFEMDoKKyAgICBjYXNlIDB4MTEyRjA6CisgICAgY2FzZSAweDExNEQwOgorICAgIGNhc2UgMHgxMTY1MDoKICAgICBjYXNlIDB4MTE2QzA6CisgICAgY2FzZSAweDExNzMwOgorICAgIGNhc2UgMHgxMThFMDoKKyAgICBjYXNlIDB4MTZBNjA6CisgICAgY2FzZSAweDE2QjUwOgogICAgIGNhc2UgMHgxRDdDRToKICAgICBjYXNlIDB4MUQ3RDg6CiAgICAgY2FzZSAweDFEN0UyOgpAQCAtMjk4Nyw2ICs0MDEwLDggQEAKICAgICBjYXNlIDB4MUQ3RjY6CiAgICAgY2FzZSAweDFGMTAwOgogICAgIGNhc2UgMHgxRjEwMToKKyAgICBjYXNlIDB4MUYxMEI6CisgICAgY2FzZSAweDFGMTBDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMC4wOwogICAgIGNhc2UgMHgwMDMxOgogICAgIGNhc2UgMHgwMEI5OgpAQCAtMzAwNCw2ICs0MDI5LDcgQEAKICAgICBjYXNlIDB4MEM3QzoKICAgICBjYXNlIDB4MENFNzoKICAgICBjYXNlIDB4MEQ2NzoKKyAgICBjYXNlIDB4MERFNzoKICAgICBjYXNlIDB4MEU1MToKICAgICBjYXNlIDB4MEVEMToKICAgICBjYXNlIDB4MEYyMToKQEAgLTMwNDcsNiArNDA3Myw3IEBACiAgICAgY2FzZSAweEE4RDE6CiAgICAgY2FzZSAweEE5MDE6CiAgICAgY2FzZSAweEE5RDE6CisgICAgY2FzZSAweEE5RjE6CiAgICAgY2FzZSAweEFBNTE6CiAgICAgY2FzZSAweEFCRjE6CiAgICAgY2FzZSAweEZGMTE6CkBAIC0zMDU1LDM5ICs0MDgyLDU5IEBACiAgICAgY2FzZSAweDEwMTU4OgogICAgIGNhc2UgMHgxMDE1OToKICAgICBjYXNlIDB4MTAxNUE6CisgICAgY2FzZSAweDEwMkUxOgogICAgIGNhc2UgMHgxMDMyMDoKICAgICBjYXNlIDB4MTAzRDE6CiAgICAgY2FzZSAweDEwNEExOgogICAgIGNhc2UgMHgxMDg1ODoKKyAgICBjYXNlIDB4MTA4Nzk6CisgICAgY2FzZSAweDEwOEE3OgorICAgIGNhc2UgMHgxMDhGQjoKICAgICBjYXNlIDB4MTA5MTY6CisgICAgY2FzZSAweDEwOUMwOgogICAgIGNhc2UgMHgxMEE0MDoKICAgICBjYXNlIDB4MTBBN0Q6CisgICAgY2FzZSAweDEwQTlEOgorICAgIGNhc2UgMHgxMEFFQjoKICAgICBjYXNlIDB4MTBCNTg6CiAgICAgY2FzZSAweDEwQjc4OgorICAgIGNhc2UgMHgxMEJBOToKKyAgICBjYXNlIDB4MTBDRkE6CiAgICAgY2FzZSAweDEwRTYwOgogICAgIGNhc2UgMHgxMTA1MjoKICAgICBjYXNlIDB4MTEwNjc6CiAgICAgY2FzZSAweDExMEYxOgogICAgIGNhc2UgMHgxMTEzNzoKICAgICBjYXNlIDB4MTExRDE6CisgICAgY2FzZSAweDExMUUxOgorICAgIGNhc2UgMHgxMTJGMToKKyAgICBjYXNlIDB4MTE0RDE6CisgICAgY2FzZSAweDExNjUxOgogICAgIGNhc2UgMHgxMTZDMToKKyAgICBjYXNlIDB4MTE3MzE6CisgICAgY2FzZSAweDExOEUxOgogICAgIGNhc2UgMHgxMjQxNToKICAgICBjYXNlIDB4MTI0MUU6CiAgICAgY2FzZSAweDEyNDJDOgogICAgIGNhc2UgMHgxMjQzNDoKICAgICBjYXNlIDB4MTI0NEY6CiAgICAgY2FzZSAweDEyNDU4OgorICAgIGNhc2UgMHgxNkE2MToKKyAgICBjYXNlIDB4MTZCNTE6CiAgICAgY2FzZSAweDFEMzYwOgogICAgIGNhc2UgMHgxRDdDRjoKICAgICBjYXNlIDB4MUQ3RDk6CiAgICAgY2FzZSAweDFEN0UzOgogICAgIGNhc2UgMHgxRDdFRDoKICAgICBjYXNlIDB4MUQ3Rjc6CisgICAgY2FzZSAweDFFOEM3OgogICAgIGNhc2UgMHgxRjEwMjoKICAgICBjYXNlIDB4MjA5MkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjA7CiAgICAgY2FzZSAweDIxNTI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTAuMDsKKyAgICBjYXNlIDB4MTA5RjY6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNDoKICAgICBjYXNlIDB4MEI3NToKICAgICBjYXNlIDB4QTgzMzoKQEAgLTMxMDEsMTIgKzQxNDgsMTUgQEAKICAgICBjYXNlIDB4MTAxNDE6CiAgICAgY2FzZSAweDEwMTc1OgogICAgIGNhc2UgMHgxMDE3NjoKKyAgICBjYXNlIDB4MTA5QkQ6CiAgICAgY2FzZSAweDEwRTdCOgorICAgIGNhc2UgMHgxMjQ2NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yLjA7CiAgICAgY2FzZSAweDIxNTM6CiAgICAgY2FzZSAweDEwRTdEOgogICAgIGNhc2UgMHgxMjQ1QToKICAgICBjYXNlIDB4MTI0NUQ6CisgICAgY2FzZSAweDEyNDY1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzMuMDsKICAgICBjYXNlIDB4MDBCQzoKICAgICBjYXNlIDB4MDlGNzoKQEAgLTMxMTQsOSArNDE2NCwxMSBAQAogICAgIGNhc2UgMHgwRDczOgogICAgIGNhc2UgMHhBODMwOgogICAgIGNhc2UgMHgxMDE0MDoKKyAgICBjYXNlIDB4MTAxOEI6CiAgICAgY2FzZSAweDEwRTdDOgogICAgIGNhc2UgMHgxMjQ2MDoKICAgICBjYXNlIDB4MTI0NjI6CisgICAgY2FzZSAweDEyNDYzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQuMDsKICAgICBjYXNlIDB4MjE1NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC81LjA7CkBAIC0zMTYzLDE3ICs0MjE1LDMyIEBACiAgICAgY2FzZSAweDEwMTYyOgogICAgIGNhc2UgMHgxMDE2MzoKICAgICBjYXNlIDB4MTAxNjQ6CisgICAgY2FzZSAweDEwMkVBOgogICAgIGNhc2UgMHgxMDMyMjoKICAgICBjYXNlIDB4MTAzRDM6CiAgICAgY2FzZSAweDEwODVCOgorICAgIGNhc2UgMHgxMDg3RToKKyAgICBjYXNlIDB4MTA4QUQ6CisgICAgY2FzZSAweDEwOEZEOgogICAgIGNhc2UgMHgxMDkxNzoKKyAgICBjYXNlIDB4MTA5Qzk6CiAgICAgY2FzZSAweDEwQTQ0OgorICAgIGNhc2UgMHgxMEE5RToKKyAgICBjYXNlIDB4MTBBRUQ6CiAgICAgY2FzZSAweDEwQjVDOgogICAgIGNhc2UgMHgxMEI3QzoKKyAgICBjYXNlIDB4MTBCQUQ6CisgICAgY2FzZSAweDEwQ0ZDOgogICAgIGNhc2UgMHgxMEU2OToKICAgICBjYXNlIDB4MTEwNUI6CisgICAgY2FzZSAweDExMUVBOgorICAgIGNhc2UgMHgxMTczQToKKyAgICBjYXNlIDB4MTE4RUE6CisgICAgY2FzZSAweDE2QjVCOgogICAgIGNhc2UgMHgxRDM2OToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwLjA7CisgICAgY2FzZSAweDEwOUZGOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAuMC8xMi4wOwogICAgIGNhc2UgMHgwQkYxOgogICAgIGNhc2UgMHgwRDcxOgogICAgIGNhc2UgMHgxMzdCOgpAQCAtMzE4NiwxNCArNDI1MywyMyBAQAogICAgIGNhc2UgMHgxMDE0QjoKICAgICBjYXNlIDB4MTAxNTI6CiAgICAgY2FzZSAweDEwMTZBOgorICAgIGNhc2UgMHgxMDJGMzoKICAgICBjYXNlIDB4MTAzRDU6CiAgICAgY2FzZSAweDEwODVEOgorICAgIGNhc2UgMHgxMDhBRjoKKyAgICBjYXNlIDB4MTA4RkY6CiAgICAgY2FzZSAweDEwOTE5OgorICAgIGNhc2UgMHgxMDlEMjoKICAgICBjYXNlIDB4MTBBNDY6CisgICAgY2FzZSAweDEwQUVGOgogICAgIGNhc2UgMHgxMEI1RToKICAgICBjYXNlIDB4MTBCN0U6CisgICAgY2FzZSAweDEwQkFGOgorICAgIGNhc2UgMHgxMENGRToKICAgICBjYXNlIDB4MTBFNzI6CiAgICAgY2FzZSAweDExMDY0OgorICAgIGNhc2UgMHgxMTFGMzoKKyAgICBjYXNlIDB4MTZCNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAuMDsKICAgICBjYXNlIDB4MEJGMjoKICAgICBjYXNlIDB4MEQ3MjoKQEAgLTMyMDgsMTAgKzQyODQsMTMgQEAKICAgICBjYXNlIDB4MTAxNTQ6CiAgICAgY2FzZSAweDEwMTcxOgogICAgIGNhc2UgMHgxMDg1RToKKyAgICBjYXNlIDB4MTA5REI6CiAgICAgY2FzZSAweDEwQTQ3OgogICAgIGNhc2UgMHgxMEI1RjoKICAgICBjYXNlIDB4MTBCN0Y6CisgICAgY2FzZSAweDEwQ0ZGOgogICAgIGNhc2UgMHgxMTA2NToKKyAgICBjYXNlIDB4MTExRjQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAwLjA7CiAgICAgY2FzZSAweDEzN0M6CiAgICAgY2FzZSAweDIxODI6CkBAIC0zMjIwLDEzICs0Mjk5LDIyIEBACiAgICAgY2FzZSAweDEwMTJCOgogICAgIGNhc2UgMHgxMDE1NToKICAgICBjYXNlIDB4MTA4NUY6CisgICAgY2FzZSAweDEwOUU0OgorICAgIGNhc2UgMHgxNkI1RDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwLjA7CiAgICAgY2FzZSAweDIxODg6CisgICAgY2FzZSAweDEwOUVEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwLjA7CisgICAgY2FzZSAweDE2QjVFOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwMC4wOwogICAgIGNhc2UgMHg0RUJGOgogICAgIGNhc2UgMHg1MTA0OgorICAgIGNhc2UgMHgxNkI1RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMC4wOworICAgIGNhc2UgMHgxNkI2MDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMDAwMDAwMDAwLjA7CiAgICAgY2FzZSAweDUxNDY6CisgICAgY2FzZSAweDE2QjYxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwMDAwMDAwMDAwMC4wOwogICAgIGNhc2UgMHgyMTZBOgogICAgIGNhc2UgMHgyMTdBOgpAQCAtMzIzNSw2ICs0MzIzLDggQEAKICAgICBjYXNlIDB4MjQ5MjoKICAgICBjYXNlIDB4MjRFQjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDExLjA7CisgICAgY2FzZSAweDEwOUJDOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTEuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTEuMC8yLjA7CiAgICAgY2FzZSAweDIxNkI6CkBAIC0zMzA1LDYgKzQzOTUsNyBAQAogICAgIGNhc2UgMHgwQzdEOgogICAgIGNhc2UgMHgwQ0U4OgogICAgIGNhc2UgMHgwRDY4OgorICAgIGNhc2UgMHgwREU4OgogICAgIGNhc2UgMHgwRTUyOgogICAgIGNhc2UgMHgwRUQyOgogICAgIGNhc2UgMHgwRjIyOgpAQCAtMzM0OSw2ICs0NDQwLDcgQEAKICAgICBjYXNlIDB4QThEMjoKICAgICBjYXNlIDB4QTkwMjoKICAgICBjYXNlIDB4QTlEMjoKKyAgICBjYXNlIDB4QTlGMjoKICAgICBjYXNlIDB4QUE1MjoKICAgICBjYXNlIDB4QUJGMjoKICAgICBjYXNlIDB4Rjk3ODoKQEAgLTMzNTgsMjAgKzQ0NTAsMzEgQEAKICAgICBjYXNlIDB4MTAxNUM6CiAgICAgY2FzZSAweDEwMTVEOgogICAgIGNhc2UgMHgxMDE1RToKKyAgICBjYXNlIDB4MTAyRTI6CiAgICAgY2FzZSAweDEwM0QyOgogICAgIGNhc2UgMHgxMDRBMjoKICAgICBjYXNlIDB4MTA4NTk6CisgICAgY2FzZSAweDEwODdBOgorICAgIGNhc2UgMHgxMDhBODoKICAgICBjYXNlIDB4MTA5MUE6CisgICAgY2FzZSAweDEwOUMxOgogICAgIGNhc2UgMHgxMEE0MToKICAgICBjYXNlIDB4MTBCNTk6CiAgICAgY2FzZSAweDEwQjc5OgorICAgIGNhc2UgMHgxMEJBQToKICAgICBjYXNlIDB4MTBFNjE6CiAgICAgY2FzZSAweDExMDUzOgogICAgIGNhc2UgMHgxMTA2ODoKICAgICBjYXNlIDB4MTEwRjI6CiAgICAgY2FzZSAweDExMTM4OgogICAgIGNhc2UgMHgxMTFEMjoKKyAgICBjYXNlIDB4MTExRTI6CisgICAgY2FzZSAweDExMkYyOgorICAgIGNhc2UgMHgxMTREMjoKKyAgICBjYXNlIDB4MTE2NTI6CiAgICAgY2FzZSAweDExNkMyOgorICAgIGNhc2UgMHgxMTczMjoKKyAgICBjYXNlIDB4MTE4RTI6CiAgICAgY2FzZSAweDEyNDAwOgogICAgIGNhc2UgMHgxMjQxNjoKICAgICBjYXNlIDB4MTI0MUY6CkBAIC0zMzgyLDIwICs0NDg1LDI2IEBACiAgICAgY2FzZSAweDEyNDUwOgogICAgIGNhc2UgMHgxMjQ1NjoKICAgICBjYXNlIDB4MTI0NTk6CisgICAgY2FzZSAweDE2QTYyOgorICAgIGNhc2UgMHgxNkI1MjoKICAgICBjYXNlIDB4MUQzNjE6CiAgICAgY2FzZSAweDFEN0QwOgogICAgIGNhc2UgMHgxRDdEQToKICAgICBjYXNlIDB4MUQ3RTQ6CiAgICAgY2FzZSAweDFEN0VFOgogICAgIGNhc2UgMHgxRDdGODoKKyAgICBjYXNlIDB4MUU4Qzg6CiAgICAgY2FzZSAweDFGMTAzOgogICAgIGNhc2UgMHgyMjM5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMDsKKyAgICBjYXNlIDB4MTA5Rjc6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjAvMTIuMDsKICAgICBjYXNlIDB4MjE1NDoKICAgICBjYXNlIDB4MTAxNzc6CiAgICAgY2FzZSAweDEwRTdFOgogICAgIGNhc2UgMHgxMjQ1QjoKICAgICBjYXNlIDB4MTI0NUU6CisgICAgY2FzZSAweDEyNDY2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wLzMuMDsKICAgICBjYXNlIDB4MjE1NjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMC81LjA7CkBAIC0zNDA5LDIzICs0NTE4LDQwIEBACiAgICAgY2FzZSAweDUzNDQ6CiAgICAgY2FzZSAweDVFRkY6CiAgICAgY2FzZSAweDEwMTExOgorICAgIGNhc2UgMHgxMDJFQjoKICAgICBjYXNlIDB4MTAzRDQ6CiAgICAgY2FzZSAweDEwODVDOgorICAgIGNhc2UgMHgxMDg3RjoKKyAgICBjYXNlIDB4MTA4QUU6CisgICAgY2FzZSAweDEwOEZFOgogICAgIGNhc2UgMHgxMDkxODoKKyAgICBjYXNlIDB4MTA5Q0E6CiAgICAgY2FzZSAweDEwQTQ1OgorICAgIGNhc2UgMHgxMEE5RjoKKyAgICBjYXNlIDB4MTBBRUU6CiAgICAgY2FzZSAweDEwQjVEOgogICAgIGNhc2UgMHgxMEI3RDoKKyAgICBjYXNlIDB4MTBCQUU6CiAgICAgY2FzZSAweDEwRTZBOgogICAgIGNhc2UgMHgxMTA1QzoKKyAgICBjYXNlIDB4MTExRUI6CisgICAgY2FzZSAweDExNzNCOgorICAgIGNhc2UgMHgxMThFQjoKICAgICBjYXNlIDB4MUQzNkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMC4wOwogICAgIGNhc2UgMHgxMDExQToKKyAgICBjYXNlIDB4MTAyRjQ6CisgICAgY2FzZSAweDEwOUQzOgogICAgIGNhc2UgMHgxMEU3MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwMC4wOwogICAgIGNhc2UgMHgxMDEyMzoKKyAgICBjYXNlIDB4MTA5REM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMDAwLjA7CiAgICAgY2FzZSAweDEwMTJDOgorICAgIGNhc2UgMHgxMDlFNToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwMDAwLjA7CisgICAgY2FzZSAweDEwOUVFOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAwMDAwLjA7CiAgICAgY2FzZSAweDMyNTE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMS4wOwogICAgIGNhc2UgMHgxMjQzMjoKQEAgLTM0NjIsNiArNDU4OCw3IEBACiAgICAgY2FzZSAweDBDN0U6CiAgICAgY2FzZSAweDBDRTk6CiAgICAgY2FzZSAweDBENjk6CisgICAgY2FzZSAweDBERTk6CiAgICAgY2FzZSAweDBFNTM6CiAgICAgY2FzZSAweDBFRDM6CiAgICAgY2FzZSAweDBGMjM6CkBAIC0zNTA1LDI0ICs0NjMyLDM2IEBACiAgICAgY2FzZSAweEE4RDM6CiAgICAgY2FzZSAweEE5MDM6CiAgICAgY2FzZSAweEE5RDM6CisgICAgY2FzZSAweEE5RjM6CiAgICAgY2FzZSAweEFBNTM6CiAgICAgY2FzZSAweEFCRjM6CiAgICAgY2FzZSAweEY5NkI6CiAgICAgY2FzZSAweEZGMTM6CiAgICAgY2FzZSAweDEwMTA5OgorICAgIGNhc2UgMHgxMDJFMzoKICAgICBjYXNlIDB4MTA0QTM6CiAgICAgY2FzZSAweDEwODVBOgorICAgIGNhc2UgMHgxMDg3QjoKKyAgICBjYXNlIDB4MTA4QTk6CiAgICAgY2FzZSAweDEwOTFCOgorICAgIGNhc2UgMHgxMDlDMjoKICAgICBjYXNlIDB4MTBBNDI6CiAgICAgY2FzZSAweDEwQjVBOgogICAgIGNhc2UgMHgxMEI3QToKKyAgICBjYXNlIDB4MTBCQUI6CiAgICAgY2FzZSAweDEwRTYyOgogICAgIGNhc2UgMHgxMTA1NDoKICAgICBjYXNlIDB4MTEwNjk6CiAgICAgY2FzZSAweDExMEYzOgogICAgIGNhc2UgMHgxMTEzOToKICAgICBjYXNlIDB4MTExRDM6CisgICAgY2FzZSAweDExMUUzOgorICAgIGNhc2UgMHgxMTJGMzoKKyAgICBjYXNlIDB4MTE0RDM6CisgICAgY2FzZSAweDExNjUzOgogICAgIGNhc2UgMHgxMTZDMzoKKyAgICBjYXNlIDB4MTE3MzM6CisgICAgY2FzZSAweDExOEUzOgogICAgIGNhc2UgMHgxMjQwMToKICAgICBjYXNlIDB4MTI0MDg6CiAgICAgY2FzZSAweDEyNDE3OgpAQCAtMzUzOCwxOCArNDY3NywyMyBAQAogICAgIGNhc2UgMHgxMjQ0QjoKICAgICBjYXNlIDB4MTI0NTE6CiAgICAgY2FzZSAweDEyNDU3OgorICAgIGNhc2UgMHgxNkE2MzoKKyAgICBjYXNlIDB4MTZCNTM6CiAgICAgY2FzZSAweDFEMzYyOgogICAgIGNhc2UgMHgxRDdEMToKICAgICBjYXNlIDB4MUQ3REI6CiAgICAgY2FzZSAweDFEN0U1OgogICAgIGNhc2UgMHgxRDdFRjoKICAgICBjYXNlIDB4MUQ3Rjk6CisgICAgY2FzZSAweDFFOEM5OgogICAgIGNhc2UgMHgxRjEwNDoKICAgICBjYXNlIDB4MjBBRkQ6CiAgICAgY2FzZSAweDIwQjE5OgogICAgIGNhc2UgMHgyMjk5ODoKICAgICBjYXNlIDB4MjNCMUI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjA7CisgICAgY2FzZSAweDEwOUY4OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjY6CiAgICAgY2FzZSAweDBCNzc6CiAgICAgY2FzZSAweEE4MzU6CkBAIC0zNTc0LDE5ICs0NzE4LDI5IEBACiAgICAgY2FzZSAweDUzNDU6CiAgICAgY2FzZSAweDEwMTEyOgogICAgIGNhc2UgMHgxMDE2NToKKyAgICBjYXNlIDB4MTAyRUM6CisgICAgY2FzZSAweDEwOUNCOgogICAgIGNhc2UgMHgxMEU2QjoKICAgICBjYXNlIDB4MTEwNUQ6CisgICAgY2FzZSAweDExMUVDOgorICAgIGNhc2UgMHgxMThFQzoKICAgICBjYXNlIDB4MUQzNkI6CiAgICAgY2FzZSAweDIwOTgzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAuMDsKICAgICBjYXNlIDB4MTAxMUI6CiAgICAgY2FzZSAweDEwMTZCOgorICAgIGNhc2UgMHgxMDJGNToKKyAgICBjYXNlIDB4MTA5RDQ6CiAgICAgY2FzZSAweDEwRTc0OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAwLjA7CiAgICAgY2FzZSAweDEwMTI0OgorICAgIGNhc2UgMHgxMDlERDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwMDAuMDsKICAgICBjYXNlIDB4MTAxMkQ6CisgICAgY2FzZSAweDEwOUU2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RUY6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzMDAwMDAuMDsKICAgICBjYXNlIDB4MzI1QjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMxLjA7CiAgICAgY2FzZSAweDMyNUM6CkBAIC0zNjE4LDYgKzQ3NzIsNyBAQAogICAgIGNhc2UgMHgwQzZBOgogICAgIGNhc2UgMHgwQ0VBOgogICAgIGNhc2UgMHgwRDZBOgorICAgIGNhc2UgMHgwREVBOgogICAgIGNhc2UgMHgwRTU0OgogICAgIGNhc2UgMHgwRUQ0OgogICAgIGNhc2UgMHgwRjI0OgpAQCAtMzY1OCwyMSArNDgxMywzNCBAQAogICAgIGNhc2UgMHhBOEQ0OgogICAgIGNhc2UgMHhBOTA0OgogICAgIGNhc2UgMHhBOUQ0OgorICAgIGNhc2UgMHhBOUY0OgogICAgIGNhc2UgMHhBQTU0OgogICAgIGNhc2UgMHhBQkY0OgogICAgIGNhc2UgMHhGRjE0OgogICAgIGNhc2UgMHgxMDEwQToKKyAgICBjYXNlIDB4MTAyRTQ6CiAgICAgY2FzZSAweDEwNEE0OgorICAgIGNhc2UgMHgxMDg3QzoKKyAgICBjYXNlIDB4MTA4QUE6CisgICAgY2FzZSAweDEwOEFCOgorICAgIGNhc2UgMHgxMDlDMzoKICAgICBjYXNlIDB4MTBBNDM6CiAgICAgY2FzZSAweDEwQjVCOgogICAgIGNhc2UgMHgxMEI3QjoKKyAgICBjYXNlIDB4MTBCQUM6CiAgICAgY2FzZSAweDEwRTYzOgogICAgIGNhc2UgMHgxMTA1NToKICAgICBjYXNlIDB4MTEwNkE6CiAgICAgY2FzZSAweDExMEY0OgogICAgIGNhc2UgMHgxMTEzQToKICAgICBjYXNlIDB4MTExRDQ6CisgICAgY2FzZSAweDExMUU0OgorICAgIGNhc2UgMHgxMTJGNDoKKyAgICBjYXNlIDB4MTE0RDQ6CisgICAgY2FzZSAweDExNjU0OgogICAgIGNhc2UgMHgxMTZDNDoKKyAgICBjYXNlIDB4MTE3MzQ6CisgICAgY2FzZSAweDExOEU0OgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtMzY4OCwxNyArNDg1NiwyMyBAQAogICAgIGNhc2UgMHgxMjQ0QzoKICAgICBjYXNlIDB4MTI0NTI6CiAgICAgY2FzZSAweDEyNDUzOgorICAgIGNhc2UgMHgxMjQ2OToKKyAgICBjYXNlIDB4MTZBNjQ6CisgICAgY2FzZSAweDE2QjU0OgogICAgIGNhc2UgMHgxRDM2MzoKICAgICBjYXNlIDB4MUQ3RDI6CiAgICAgY2FzZSAweDFEN0RDOgogICAgIGNhc2UgMHgxRDdFNjoKICAgICBjYXNlIDB4MUQ3RjA6CiAgICAgY2FzZSAweDFEN0ZBOgorICAgIGNhc2UgMHgxRThDQToKICAgICBjYXNlIDB4MUYxMDU6CiAgICAgY2FzZSAweDIwMDY0OgogICAgIGNhc2UgMHgyMDBFMjoKICAgICBjYXNlIDB4MjYyNkQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0LjA7CisgICAgY2FzZSAweDEwOUY5OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgNC4wLzEyLjA7CiAgICAgY2FzZSAweDIxNTg6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0LjAvNS4wOwogICAgIGNhc2UgMHgxMzc1OgpAQCAtMzcwNiwxOSArNDg4MCwzMCBAQAogICAgIGNhc2UgMHgzMkI1OgogICAgIGNhc2UgMHg1MzRDOgogICAgIGNhc2UgMHgxMDExMzoKKyAgICBjYXNlIDB4MTAyRUQ6CisgICAgY2FzZSAweDEwOUNDOgogICAgIGNhc2UgMHgxMEU2QzoKICAgICBjYXNlIDB4MTEwNUU6CisgICAgY2FzZSAweDExMUVEOgorICAgIGNhc2UgMHgxMThFRDoKKyAgICBjYXNlIDB4MTI0Njc6CiAgICAgY2FzZSAweDFEMzZDOgogICAgIGNhc2UgMHgyMDk4QzoKICAgICBjYXNlIDB4MjA5OUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MC4wOwogICAgIGNhc2UgMHgxMDExQzoKKyAgICBjYXNlIDB4MTAyRjY6CisgICAgY2FzZSAweDEwOUQ1OgogICAgIGNhc2UgMHgxMEU3NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQwMC4wOwogICAgIGNhc2UgMHgxMDEyNToKKyAgICBjYXNlIDB4MTA5REU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MDAwLjA7CiAgICAgY2FzZSAweDEwMTJFOgorICAgIGNhc2UgMHgxMDlFNzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDQwMDAwLjA7CisgICAgY2FzZSAweDEwOUYwOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgNDAwMDAwLjA7CiAgICAgY2FzZSAweDMyQjY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0MS4wOwogICAgIGNhc2UgMHgzMkI3OgpAQCAtMzc1Miw2ICs0OTM3LDcgQEAKICAgICBjYXNlIDB4MEM2QjoKICAgICBjYXNlIDB4MENFQjoKICAgICBjYXNlIDB4MEQ2QjoKKyAgICBjYXNlIDB4MERFQjoKICAgICBjYXNlIDB4MEU1NToKICAgICBjYXNlIDB4MEVENToKICAgICBjYXNlIDB4MEYyNToKQEAgLTM3OTIsNiArNDk3OCw3IEBACiAgICAgY2FzZSAweEE4RDU6CiAgICAgY2FzZSAweEE5MDU6CiAgICAgY2FzZSAweEE5RDU6CisgICAgY2FzZSAweEE5RjU6CiAgICAgY2FzZSAweEFBNTU6CiAgICAgY2FzZSAweEFCRjU6CiAgICAgY2FzZSAweEZGMTU6CkBAIC0zODAxLDE1ICs0OTg4LDI4IEBACiAgICAgY2FzZSAweDEwMTRGOgogICAgIGNhc2UgMHgxMDE1RjoKICAgICBjYXNlIDB4MTAxNzM6CisgICAgY2FzZSAweDEwMkU1OgogICAgIGNhc2UgMHgxMDMyMToKICAgICBjYXNlIDB4MTA0QTU6CisgICAgY2FzZSAweDEwODdEOgorICAgIGNhc2UgMHgxMDhBQzoKKyAgICBjYXNlIDB4MTA4RkM6CisgICAgY2FzZSAweDEwOUM0OgorICAgIGNhc2UgMHgxMEFFQzoKKyAgICBjYXNlIDB4MTBDRkI6CiAgICAgY2FzZSAweDEwRTY0OgogICAgIGNhc2UgMHgxMTA1NjoKICAgICBjYXNlIDB4MTEwNkI6CiAgICAgY2FzZSAweDExMEY1OgogICAgIGNhc2UgMHgxMTEzQjoKICAgICBjYXNlIDB4MTExRDU6CisgICAgY2FzZSAweDExMUU1OgorICAgIGNhc2UgMHgxMTJGNToKKyAgICBjYXNlIDB4MTE0RDU6CisgICAgY2FzZSAweDExNjU1OgogICAgIGNhc2UgMHgxMTZDNToKKyAgICBjYXNlIDB4MTE3MzU6CisgICAgY2FzZSAweDExOEU1OgogICAgIGNhc2UgMHgxMjQwMzoKICAgICBjYXNlIDB4MTI0MEE6CiAgICAgY2FzZSAweDEyNDEwOgpAQCAtMzgyMSwxNSArNTAyMSwyMSBAQAogICAgIGNhc2UgMHgxMjQ0RDoKICAgICBjYXNlIDB4MTI0NTQ6CiAgICAgY2FzZSAweDEyNDU1OgorICAgIGNhc2UgMHgxMjQ2QToKKyAgICBjYXNlIDB4MTZBNjU6CisgICAgY2FzZSAweDE2QjU1OgogICAgIGNhc2UgMHgxRDM2NDoKICAgICBjYXNlIDB4MUQ3RDM6CiAgICAgY2FzZSAweDFEN0REOgogICAgIGNhc2UgMHgxRDdFNzoKICAgICBjYXNlIDB4MUQ3RjE6CiAgICAgY2FzZSAweDFEN0ZCOgorICAgIGNhc2UgMHgxRThDQjoKICAgICBjYXNlIDB4MUYxMDY6CiAgICAgY2FzZSAweDIwMTIxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wOworICAgIGNhc2UgMHgxMDlGQToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDUuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wLzIuMDsKICAgICBjYXNlIDB4MjE1QToKQEAgLTM4NTIsMTAgKzUwNTgsMTYgQEAKICAgICBjYXNlIDB4MTAxNjg6CiAgICAgY2FzZSAweDEwMTY5OgogICAgIGNhc2UgMHgxMDE3NDoKKyAgICBjYXNlIDB4MTAyRUU6CiAgICAgY2FzZSAweDEwMzIzOgorICAgIGNhc2UgMHgxMDlDRDoKICAgICBjYXNlIDB4MTBBN0U6CisgICAgY2FzZSAweDEwQ0ZEOgogICAgIGNhc2UgMHgxMEU2RDoKICAgICBjYXNlIDB4MTEwNUY6CisgICAgY2FzZSAweDExMUVFOgorICAgIGNhc2UgMHgxMThFRToKKyAgICBjYXNlIDB4MTI0Njg6CiAgICAgY2FzZSAweDFEMzZEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAuMDsKICAgICBjYXNlIDB4MjE2RToKQEAgLTM4NjksNiArNTA4MSw4IEBACiAgICAgY2FzZSAweDEwMTZFOgogICAgIGNhc2UgMHgxMDE2RjoKICAgICBjYXNlIDB4MTAxNzA6CisgICAgY2FzZSAweDEwMkY3OgorICAgIGNhc2UgMHgxMDlENjoKICAgICBjYXNlIDB4MTBFNzY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MDAuMDsKICAgICBjYXNlIDB4MjE4MToKQEAgLTM4NzYsMTIgKzUwOTAsMTYgQEAKICAgICBjYXNlIDB4MTAxNDY6CiAgICAgY2FzZSAweDEwMTRFOgogICAgIGNhc2UgMHgxMDE3MjoKKyAgICBjYXNlIDB4MTA5REY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MDAwLjA7CiAgICAgY2FzZSAweDIxODc6CiAgICAgY2FzZSAweDEwMTJGOgogICAgIGNhc2UgMHgxMDE0NzoKICAgICBjYXNlIDB4MTAxNTY6CisgICAgY2FzZSAweDEwOUU4OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjE6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA1MDAwMDAuMDsKICAgICBjYXNlIDB4MDAzNjoKICAgICBjYXNlIDB4MDY2NjoKICAgICBjYXNlIDB4MDZGNjoKQEAgLTM4OTUsNiArNTExMyw3IEBACiAgICAgY2FzZSAweDBDNkM6CiAgICAgY2FzZSAweDBDRUM6CiAgICAgY2FzZSAweDBENkM6CisgICAgY2FzZSAweDBERUM6CiAgICAgY2FzZSAweDBFNTY6CiAgICAgY2FzZSAweDBFRDY6CiAgICAgY2FzZSAweDBGMjY6CkBAIC0zOTM1LDIwICs1MTU0LDI5IEBACiAgICAgY2FzZSAweEE4RDY6CiAgICAgY2FzZSAweEE5MDY6CiAgICAgY2FzZSAweEE5RDY6CisgICAgY2FzZSAweEE5RjY6CiAgICAgY2FzZSAweEFBNTY6CiAgICAgY2FzZSAweEFCRjY6CiAgICAgY2FzZSAweEY5RDE6CiAgICAgY2FzZSAweEY5RDM6CiAgICAgY2FzZSAweEZGMTY6CiAgICAgY2FzZSAweDEwMTBDOgorICAgIGNhc2UgMHgxMDJFNjoKICAgICBjYXNlIDB4MTA0QTY6CisgICAgY2FzZSAweDEwOUM1OgogICAgIGNhc2UgMHgxMEU2NToKICAgICBjYXNlIDB4MTEwNTc6CiAgICAgY2FzZSAweDExMDZDOgogICAgIGNhc2UgMHgxMTBGNjoKICAgICBjYXNlIDB4MTExM0M6CiAgICAgY2FzZSAweDExMUQ2OgorICAgIGNhc2UgMHgxMTFFNjoKKyAgICBjYXNlIDB4MTEyRjY6CisgICAgY2FzZSAweDExNEQ2OgorICAgIGNhc2UgMHgxMTY1NjoKICAgICBjYXNlIDB4MTE2QzY6CisgICAgY2FzZSAweDExNzM2OgorICAgIGNhc2UgMHgxMThFNjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTM5NTYsMjkgKzUxODQsNDUgQEAKICAgICBjYXNlIDB4MTI0Mjg6CiAgICAgY2FzZSAweDEyNDQwOgogICAgIGNhc2UgMHgxMjQ0RToKKyAgICBjYXNlIDB4MTI0NkI6CisgICAgY2FzZSAweDE2QTY2OgorICAgIGNhc2UgMHgxNkI1NjoKICAgICBjYXNlIDB4MUQzNjU6CiAgICAgY2FzZSAweDFEN0Q0OgogICAgIGNhc2UgMHgxRDdERToKICAgICBjYXNlIDB4MUQ3RTg6CiAgICAgY2FzZSAweDFEN0YyOgogICAgIGNhc2UgMHgxRDdGQzoKKyAgICBjYXNlIDB4MUU4Q0M6CiAgICAgY2FzZSAweDFGMTA3OgogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKKyAgICBjYXNlIDB4MTA5RkI6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjAvMTIuMDsKICAgICBjYXNlIDB4MTM3NzoKICAgICBjYXNlIDB4MzI0RDoKICAgICBjYXNlIDB4MTAxMTU6CisgICAgY2FzZSAweDEwMkVGOgorICAgIGNhc2UgMHgxMDlDRToKICAgICBjYXNlIDB4MTBFNkU6CiAgICAgY2FzZSAweDExMDYwOgorICAgIGNhc2UgMHgxMTFFRjoKKyAgICBjYXNlIDB4MTE4RUY6CiAgICAgY2FzZSAweDFEMzZFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAuMDsKICAgICBjYXNlIDB4MTAxMUU6CisgICAgY2FzZSAweDEwMkY4OgorICAgIGNhc2UgMHgxMDlENzoKICAgICBjYXNlIDB4MTBFNzc6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MDAuMDsKICAgICBjYXNlIDB4MTAxMjc6CisgICAgY2FzZSAweDEwOUUwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAwMC4wOwogICAgIGNhc2UgMHgxMDEzMDoKKyAgICBjYXNlIDB4MTA5RTk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MDAwMC4wOworICAgIGNhc2UgMHgxMDlGMjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwMDAwMC4wOwogICAgIGNhc2UgMHgwMDM3OgogICAgIGNhc2UgMHgwNjY3OgogICAgIGNhc2UgMHgwNkY3OgpAQCAtMzk5Miw2ICs1MjM2LDcgQEAKICAgICBjYXNlIDB4MEM2RDoKICAgICBjYXNlIDB4MENFRDoKICAgICBjYXNlIDB4MEQ2RDoKKyAgICBjYXNlIDB4MERFRDoKICAgICBjYXNlIDB4MEU1NzoKICAgICBjYXNlIDB4MEVENzoKICAgICBjYXNlIDB4MEYyNzoKQEAgLTQwMzIsMTggKzUyNzcsMjcgQEAKICAgICBjYXNlIDB4QThENzoKICAgICBjYXNlIDB4QTkwNzoKICAgICBjYXNlIDB4QTlENzoKKyAgICBjYXNlIDB4QTlGNzoKICAgICBjYXNlIDB4QUE1NzoKICAgICBjYXNlIDB4QUJGNzoKICAgICBjYXNlIDB4RkYxNzoKICAgICBjYXNlIDB4MTAxMEQ6CisgICAgY2FzZSAweDEwMkU3OgogICAgIGNhc2UgMHgxMDRBNzoKKyAgICBjYXNlIDB4MTA5QzY6CiAgICAgY2FzZSAweDEwRTY2OgogICAgIGNhc2UgMHgxMTA1ODoKICAgICBjYXNlIDB4MTEwNkQ6CiAgICAgY2FzZSAweDExMEY3OgogICAgIGNhc2UgMHgxMTEzRDoKICAgICBjYXNlIDB4MTExRDc6CisgICAgY2FzZSAweDExMUU3OgorICAgIGNhc2UgMHgxMTJGNzoKKyAgICBjYXNlIDB4MTE0RDc6CisgICAgY2FzZSAweDExNjU3OgogICAgIGNhc2UgMHgxMTZDNzoKKyAgICBjYXNlIDB4MTE3Mzc6CisgICAgY2FzZSAweDExOEU3OgogICAgIGNhc2UgMHgxMjQwNToKICAgICBjYXNlIDB4MTI0MEM6CiAgICAgY2FzZSAweDEyNDEyOgpAQCAtNDA1MiwxNSArNTMwNiwyMSBAQAogICAgIGNhc2UgMHgxMjQ0MToKICAgICBjYXNlIDB4MTI0NDI6CiAgICAgY2FzZSAweDEyNDQzOgorICAgIGNhc2UgMHgxMjQ2QzoKKyAgICBjYXNlIDB4MTZBNjc6CisgICAgY2FzZSAweDE2QjU3OgogICAgIGNhc2UgMHgxRDM2NjoKICAgICBjYXNlIDB4MUQ3RDU6CiAgICAgY2FzZSAweDFEN0RGOgogICAgIGNhc2UgMHgxRDdFOToKICAgICBjYXNlIDB4MUQ3RjM6CiAgICAgY2FzZSAweDFEN0ZEOgorICAgIGNhc2UgMHgxRThDRDoKICAgICBjYXNlIDB4MUYxMDg6CiAgICAgY2FzZSAweDIwMDAxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wOworICAgIGNhc2UgMHgxMDlGQzoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wLzIuMDsKICAgICBjYXNlIDB4MjE1RToKQEAgLTQwNjgsMTcgKzUzMjgsMjcgQEAKICAgICBjYXNlIDB4MTM3ODoKICAgICBjYXNlIDB4MzI0RToKICAgICBjYXNlIDB4MTAxMTY6CisgICAgY2FzZSAweDEwMkYwOgorICAgIGNhc2UgMHgxMDlDRjoKICAgICBjYXNlIDB4MTBFNkY6CiAgICAgY2FzZSAweDExMDYxOgorICAgIGNhc2UgMHgxMTFGMDoKKyAgICBjYXNlIDB4MTE4RjA6CiAgICAgY2FzZSAweDFEMzZGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAuMDsKICAgICBjYXNlIDB4MTAxMUY6CisgICAgY2FzZSAweDEwMkY5OgorICAgIGNhc2UgMHgxMDlEODoKICAgICBjYXNlIDB4MTBFNzg6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3MDAuMDsKICAgICBjYXNlIDB4MTAxMjg6CisgICAgY2FzZSAweDEwOUUxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAwMC4wOwogICAgIGNhc2UgMHgxMDEzMToKKyAgICBjYXNlIDB4MTA5RUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3MDAwMC4wOworICAgIGNhc2UgMHgxMDlGMzoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwMDAwMC4wOwogICAgIGNhc2UgMHgwMDM4OgogICAgIGNhc2UgMHgwNjY4OgogICAgIGNhc2UgMHgwNkY4OgpAQCAtNDA5Miw2ICs1MzYyLDcgQEAKICAgICBjYXNlIDB4MEM2RToKICAgICBjYXNlIDB4MENFRToKICAgICBjYXNlIDB4MEQ2RToKKyAgICBjYXNlIDB4MERFRToKICAgICBjYXNlIDB4MEU1ODoKICAgICBjYXNlIDB4MEVEODoKICAgICBjYXNlIDB4MEYyODoKQEAgLTQxMzAsMTggKzU0MDEsMjcgQEAKICAgICBjYXNlIDB4QThEODoKICAgICBjYXNlIDB4QTkwODoKICAgICBjYXNlIDB4QTlEODoKKyAgICBjYXNlIDB4QTlGODoKICAgICBjYXNlIDB4QUE1ODoKICAgICBjYXNlIDB4QUJGODoKICAgICBjYXNlIDB4RkYxODoKICAgICBjYXNlIDB4MTAxMEU6CisgICAgY2FzZSAweDEwMkU4OgogICAgIGNhc2UgMHgxMDRBODoKKyAgICBjYXNlIDB4MTA5Qzc6CiAgICAgY2FzZSAweDEwRTY3OgogICAgIGNhc2UgMHgxMTA1OToKICAgICBjYXNlIDB4MTEwNkU6CiAgICAgY2FzZSAweDExMEY4OgogICAgIGNhc2UgMHgxMTEzRToKICAgICBjYXNlIDB4MTExRDg6CisgICAgY2FzZSAweDExMUU4OgorICAgIGNhc2UgMHgxMTJGODoKKyAgICBjYXNlIDB4MTE0RDg6CisgICAgY2FzZSAweDExNjU4OgogICAgIGNhc2UgMHgxMTZDODoKKyAgICBjYXNlIDB4MTE3Mzg6CisgICAgY2FzZSAweDExOEU4OgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtNDE0OSwyOCArNTQyOSw0MyBAQAogICAgIGNhc2UgMHgxMjQyQToKICAgICBjYXNlIDB4MTI0NDQ6CiAgICAgY2FzZSAweDEyNDQ1OgorICAgIGNhc2UgMHgxMjQ2RDoKKyAgICBjYXNlIDB4MTZBNjg6CisgICAgY2FzZSAweDE2QjU4OgogICAgIGNhc2UgMHgxRDM2NzoKICAgICBjYXNlIDB4MUQ3RDY6CiAgICAgY2FzZSAweDFEN0UwOgogICAgIGNhc2UgMHgxRDdFQToKICAgICBjYXNlIDB4MUQ3RjQ6CiAgICAgY2FzZSAweDFEN0ZFOgorICAgIGNhc2UgMHgxRThDRToKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CisgICAgY2FzZSAweDEwOUZEOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wLzEyLjA7CiAgICAgY2FzZSAweDEzNzk6CiAgICAgY2FzZSAweDMyNEY6CiAgICAgY2FzZSAweDEwMTE3OgorICAgIGNhc2UgMHgxMDJGMToKICAgICBjYXNlIDB4MTBFNzA6CiAgICAgY2FzZSAweDExMDYyOgorICAgIGNhc2UgMHgxMTFGMToKKyAgICBjYXNlIDB4MTE4RjE6CiAgICAgY2FzZSAweDFEMzcwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAuMDsKICAgICBjYXNlIDB4MTAxMjA6CisgICAgY2FzZSAweDEwMkZBOgorICAgIGNhc2UgMHgxMDlEOToKICAgICBjYXNlIDB4MTBFNzk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MDAuMDsKICAgICBjYXNlIDB4MTAxMjk6CisgICAgY2FzZSAweDEwOUUyOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAwMC4wOwogICAgIGNhc2UgMHgxMDEzMjoKKyAgICBjYXNlIDB4MTA5RUI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MDAwMC4wOworICAgIGNhc2UgMHgxMDlGNDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwMDAwMC4wOwogICAgIGNhc2UgMHgwMDM5OgogICAgIGNhc2UgMHgwNjY5OgogICAgIGNhc2UgMHgwNkY5OgpAQCAtNDE4NCw2ICs1NDc5LDcgQEAKICAgICBjYXNlIDB4MEM2RjoKICAgICBjYXNlIDB4MENFRjoKICAgICBjYXNlIDB4MEQ2RjoKKyAgICBjYXNlIDB4MERFRjoKICAgICBjYXNlIDB4MEU1OToKICAgICBjYXNlIDB4MEVEOToKICAgICBjYXNlIDB4MEYyOToKQEAgLTQyMjMsMTggKzU1MTksMjcgQEAKICAgICBjYXNlIDB4QThEOToKICAgICBjYXNlIDB4QTkwOToKICAgICBjYXNlIDB4QTlEOToKKyAgICBjYXNlIDB4QTlGOToKICAgICBjYXNlIDB4QUE1OToKICAgICBjYXNlIDB4QUJGOToKICAgICBjYXNlIDB4RkYxOToKICAgICBjYXNlIDB4MTAxMEY6CisgICAgY2FzZSAweDEwMkU5OgogICAgIGNhc2UgMHgxMDRBOToKKyAgICBjYXNlIDB4MTA5Qzg6CiAgICAgY2FzZSAweDEwRTY4OgogICAgIGNhc2UgMHgxMTA1QToKICAgICBjYXNlIDB4MTEwNkY6CiAgICAgY2FzZSAweDExMEY5OgogICAgIGNhc2UgMHgxMTEzRjoKICAgICBjYXNlIDB4MTExRDk6CisgICAgY2FzZSAweDExMUU5OgorICAgIGNhc2UgMHgxMTJGOToKKyAgICBjYXNlIDB4MTE0RDk6CisgICAgY2FzZSAweDExNjU5OgogICAgIGNhc2UgMHgxMTZDOToKKyAgICBjYXNlIDB4MTE3Mzk6CisgICAgY2FzZSAweDExOEU5OgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpAQCAtNDI0NCwzMiArNTU0OSw0NyBAQAogICAgIGNhc2UgMHgxMjQ0NzoKICAgICBjYXNlIDB4MTI0NDg6CiAgICAgY2FzZSAweDEyNDQ5OgorICAgIGNhc2UgMHgxMjQ2RToKKyAgICBjYXNlIDB4MTZBNjk6CisgICAgY2FzZSAweDE2QjU5OgogICAgIGNhc2UgMHgxRDM2ODoKICAgICBjYXNlIDB4MUQ3RDc6CiAgICAgY2FzZSAweDFEN0UxOgogICAgIGNhc2UgMHgxRDdFQjoKICAgICBjYXNlIDB4MUQ3RjU6CiAgICAgY2FzZSAweDFEN0ZGOgorICAgIGNhc2UgMHgxRThDRjoKICAgICBjYXNlIDB4MUYxMEE6CiAgICAgY2FzZSAweDJGODkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wOworICAgIGNhc2UgMHgxMDlGRToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMC8xMi4wOwogICAgIGNhc2UgMHgwRjJFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wLzIuMDsKICAgICBjYXNlIDB4MTM3QToKICAgICBjYXNlIDB4MTAxMTg6CisgICAgY2FzZSAweDEwMkYyOgogICAgIGNhc2UgMHgxMDM0MToKICAgICBjYXNlIDB4MTBFNzE6CiAgICAgY2FzZSAweDExMDYzOgorICAgIGNhc2UgMHgxMTFGMjoKKyAgICBjYXNlIDB4MTE4RjI6CiAgICAgY2FzZSAweDFEMzcxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAuMDsKICAgICBjYXNlIDB4MTAxMjE6CisgICAgY2FzZSAweDEwMkZCOgogICAgIGNhc2UgMHgxMDM0QToKKyAgICBjYXNlIDB4MTA5REE6CiAgICAgY2FzZSAweDEwRTdBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAwLjA7CiAgICAgY2FzZSAweDEwMTJBOgorICAgIGNhc2UgMHgxMDlFMzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwMDAuMDsKICAgICBjYXNlIDB4MTAxMzM6CisgICAgY2FzZSAweDEwOUVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAwMDAuMDsKKyAgICBjYXNlIDB4MTA5RjU6CisgICAgICAgIHJldHVybiAoZG91YmxlKSA5MDAwMDAuMDsKICAgICB9CiAgICAgcmV0dXJuIC0xLjA7CiB9CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fYnoyLnZjcHJvaiBiL1BDL1ZTOS4wL19iejIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ViOGM3Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19iejIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTgxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfYnoyIg0KLQlQcm9qZWN0R1VJRD0iezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYnoybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWJfcHJpdmF0ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iYnppcDIgMS4wLjYgU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNvbXByZXNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY3JjdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxkZWNvbXByZXNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcaHVmZm1hbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXHJhbmR0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qIGIvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNWNiYTEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2N0eXBlcy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw3MDUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9jdHlwZXMiDQotCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlcyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzX2RsZmNuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMzM1NDYuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2N0eXBlc190ZXN0Ig0KLQlQcm9qZWN0R1VJRD0iezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXNfdGVzdCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvaiBiL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjlmYWJiMC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fZGVjaW1hbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw3NDMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9kZWNpbWFsIg0KLQlQcm9qZWN0R1VJRD0iezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQotCVJvb3ROYW1lc3BhY2U9Il9kZWNpbWFsIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYml0cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcZG9jc3RyaW5ncy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmbnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0eXBlYXJpdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdW1vZGFyaXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjY29tcGF0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjc3RkaW50LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxfZGVjaW1hbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnRleHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xkaWZyYWRpeDIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGlvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjZGl2NjQuYXNtIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2ogYi9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWQ3Mzc1Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MTMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9lbGVtZW50dHJlZSINCi0JUHJvamVjdEdVSUQ9InsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KLQlSb290TmFtZXNwYWNlPSJfZWxlbWVudHRyZWUiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qIGIvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzQxN2VjLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX2hhc2hsaWIiDQotCVByb2plY3RHVUlEPSJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUm9vdE5hbWVzcGFjZT0iX2hhc2hsaWIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fbHptYS52Y3Byb2ogYi9QQy9WUzkuMC9fbHptYS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNjAwM2YuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX2x6bWEudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTM3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfbHptYSINCi0JUHJvamVjdEdVSUQ9IntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KLQlSb290TmFtZXNwYWNlPSJsem1hIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChsem1hRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmEiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHptYW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19tc2kudmNwcm9qIGIvUEMvVlM5LjAvX21zaS52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMjMwZTEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX21zaS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9tc2kiDQotCVByb2plY3RHVUlEPSJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCi0JUm9vdE5hbWVzcGFjZT0iX21zaSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcX21zaS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiM2QxZTcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1NDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9tdWx0aXByb2Nlc3NpbmciDQotCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUm9vdE5hbWVzcGFjZT0iX211bHRpcHJvY2Vzc2luZyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmYxZjZkNC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+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+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJjNTdhZS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MDkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9zcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0iezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19zc2wudmNwcm9qIGIvUEMvVlM5LjAvX3NzbC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0N2RjMjcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3NzbC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il9zc2wiDQotCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMzc3ZTEuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGVzdGJ1ZmZlciINCi0JUHJvamVjdEdVSUQ9IntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGVzdGJ1ZmZlciINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+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+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RidWZmZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qIGIvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUzMzAwYS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGVzdGNhcGkiDQotCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+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+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGVzdGltcG9ydG11bHRpcGxlLnZjcHJvaiBiL1BDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGQ5MTBkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL190ZXN0aW1wb3J0bXVsdGlwbGUudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlIg0KLQlQcm9qZWN0R1VJRD0iezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0iDQotCVJvb3ROYW1lc3BhY2U9Il90ZXN0aW1wb3J0bXVsdGlwbGUiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+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+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0aW1wb3J0bXVsdGlwbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNjMzMTcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTQxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfdGtpbnRlciINCi0JUHJvamVjdEdVSUQ9Ins0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGtpbnRlciINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliRGVidWcpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYkRlYnVnKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGtpbnRlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0a2FwcGluaXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvaiBiL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGNjN2FkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJiZGlzdF93aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCU91dHB1dERpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9InpsaWIiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMgYi9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzY0M2NiLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iZGVidWciDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJLaWxsUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbl9kLmV4ZSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAva2lsbF9weXRob24uYyBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNDczMWYuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAva2lsbF9weXRob24uYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKLSAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCi0gKiBsb2NrZWQuCi0gKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHRsaGVscDMyLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLQotI3ByYWdtYSBjb21tZW50KGxpYiwgInBzYXBpIikKLQotI2lmZGVmIF9ERUJVRwotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbl9kLmV4ZSIpCi0jZGVmaW5lIFBZVEhPTl9FWEVfTEVOICAgICAgKDEyKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEUgICAgIChMImtpbGxfcHl0aG9uX2QuZXhlIikKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTcpCi0jZWxzZQotI2RlZmluZSBQWVRIT05fRVhFICAgICAgICAgIChMInB5dGhvbi5leGUiKQotI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMCkKLSNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbi5leGUiKQotI2RlZmluZSBLSUxMX1BZVEhPTl9FWEVfTEVOICgxNSkKLSNlbmRpZgotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIEhBTkRMRSAgIGhwLCBoc3AsIGhzbTsgLyogcHJvY2Vzcywgc25hcHNob3QgcHJvY2Vzc2VzLCBzbmFwc2hvdCBtb2R1bGVzICovCi0gICAgRFdPUkQgICAgZGFjLCBvdXJfcGlkOwotICAgIHNpemVfdCAgIGxlbjsKLSAgICB3Y2hhcl90ICBwYXRoW01BWF9QQVRIKzFdOwotCi0gICAgTU9EVUxFRU5UUlkzMlcgIG1lOwotICAgIFBST0NFU1NFTlRSWTMyVyBwZTsKLQotICAgIG1lLmR3U2l6ZSA9IHNpemVvZihNT0RVTEVFTlRSWTMyVyk7Ci0gICAgcGUuZHdTaXplID0gc2l6ZW9mKFBST0NFU1NFTlRSWTMyVyk7Ci0KLSAgICBtZW1zZXQocGF0aCwgMCwgTUFYX1BBVEgrMSk7Ci0KLSAgICBvdXJfcGlkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOwotCi0gICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBvdXJfcGlkKTsKLSAgICBpZiAoaHNtID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzFdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKLSAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1sxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIC8qCi0gICAgICogRW51bWVyYXRlIG92ZXIgdGhlIG1vZHVsZXMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaW4gb3JkZXIgdG8gZmluZAotICAgICAqIGtpbGxfcHJvY2Vzc1tfZF0uZXhlLCB0aGVuIHRha2UgYSBub3RlIG9mIHRoZSBkaXJlY3RvcnkgaXQgbGl2ZXMgaW4uCi0gICAgICovCi0gICAgZG8gewotICAgICAgICBpZiAoX3djc25pY21wKG1lLnN6TW9kdWxlLCBLSUxMX1BZVEhPTl9FWEUsIEtJTExfUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgbGVuID0gd2Nzbmxlbl9zKG1lLnN6RXhlUGF0aCwgTUFYX1BBVEgpIC0gS0lMTF9QWVRIT05fRVhFX0xFTjsKLSAgICAgICAgd2NzbmNweV9zKHBhdGgsIE1BWF9QQVRIKzEsIG1lLnN6RXhlUGF0aCwgbGVuKTsgCi0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICB9IHdoaWxlIChNb2R1bGUzMk5leHRXKGhzbSwgJm1lKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShoc20pOwotCi0gICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICBwcmludGYoImZhaWxlZCB0byBkaXNjZXJuIGRpcmVjdG9yeSBvZiBydW5uaW5nIHByb2Nlc3NcbiIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIFRha2UgYSBzbmFwc2hvdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzLiAgRW51bWVyYXRlIG92ZXIgdGhlIHNuYXBzaG90LAotICAgICAqIGxvb2tpbmcgZm9yIHB5dGhvbiBwcm9jZXNzZXMuICBXaGVuIHdlIGZpbmQgb25lLCB2ZXJpZnkgaXQgbGl2ZXMKLSAgICAgKiBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgd2UgbGl2ZSBpbi4gIElmIGl0IGRvZXMsIGtpbGwgaXQuICBJZiB3ZSdyZQotICAgICAqIHVuYWJsZSB0byBraWxsIGl0LCB0cmVhdCB0aGlzIGFzIGEgZmF0YWwgZXJyb3IgYW5kIHJldHVybiAxLgotICAgICAqIAotICAgICAqIFRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMgaXMgdGhhdCB3ZSdyZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSAKLSAgICAgKiBidWlsZCBwcm9jZXNzIG9uIHRoZSBiYXNpcyB0aGF0IHdlJ2xsIHRha2UgY2FyZSBvZiBraWxsaW5nIGFueQotICAgICAqIHJ1bm5pbmcgaW5zdGFuY2VzLCBzdWNoIHRoYXQgdGhlIGJ1aWxkIHdvbid0IGVuY291bnRlciBwZXJtaXNzaW9uCi0gICAgICogZGVuaWVkIGVycm9ycyBkdXJpbmcgbGlua2luZy4gSWYgd2UgY2FuJ3Qga2lsbCBvbmUgb2YgdGhlIHByb2Nlc3NlcywKLSAgICAgKiB3ZSBjYW4ndCBwcm92aWRlIHRoaXMgYXNzdXJhbmNlLCBhbmQgdGhlIGJ1aWxkIHNob3VsZG4ndCBzdGFydC4KLSAgICAgKi8KLQotICAgIGhzcCA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUFBST0NFU1MsIDApOwotICAgIGlmIChoc3AgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcHJpbnRmKCJDcmVhdGVUb29saGVscDMyU25hcHNob3RbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpZiAoIVByb2Nlc3MzMkZpcnN0Vyhoc3AsICZwZSkpIHsKLSAgICAgICAgcHJpbnRmKCJQcm9jZXNzMzJGaXJzdFcgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBkYWMgPSBQUk9DRVNTX1FVRVJZX0lORk9STUFUSU9OIHwgUFJPQ0VTU19WTV9SRUFEIHwgUFJPQ0VTU19URVJNSU5BVEU7Ci0gICAgZG8gewotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFhYWCBUT0RPOiBpZiB3ZSByZWFsbHkgd2FudGVkIHRvIGJlIGZhbmN5LCB3ZSBjb3VsZCBjaGVjayB0aGUgCi0gICAgICAgICAqIG1vZHVsZXMgZm9yIGFsbCBwcm9jZXNzZXMgKG5vdCBqdXN0IHRoZSBweXRob25bX2RdLmV4ZSBvbmVzKQotICAgICAgICAgKiBhbmQgc2VlIGlmIGFueSBvZiBvdXIgRExMcyBhcmUgbG9hZGVkIChpLmUuIHB5dGhvbjM0W19kXS5kbGwpLAotICAgICAgICAgKiBhcyB0aGF0IHdvdWxkIGFsc28gaW5oaWJpdCBvdXIgYWJpbGl0eSB0byByZWJ1aWxkIHRoZSBzb2x1dGlvbi4KLSAgICAgICAgICogTm90IHdvcnRoIGxvb3Npbmcgc2xlZXAgb3ZlciB0aG91Z2g7IGZvciBub3csIGEgc2ltcGxlIGNoZWNrIAotICAgICAgICAgKiBmb3IganVzdCB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgc2hvdWxkIGJlIHN1ZmZpY2llbnQuCi0gICAgICAgICAqLwotCi0gICAgICAgIGlmIChfd2NzbmljbXAocGUuc3pFeGVGaWxlLCBQWVRIT05fRVhFLCBQWVRIT05fRVhFX0xFTikpCi0gICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgcHl0aG9uIHByb2Nlc3MuICovCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvKiBJdCdzIGEgcHl0aG9uIHByb2Nlc3MsIHNvIGZpZ3VyZSBvdXQgd2hpY2ggZGlyZWN0b3J5IGl0J3MgaW4uLi4gKi8KLSAgICAgICAgaHNtID0gQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90KFRIMzJDU19TTkFQTU9EVUxFLCBwZS50aDMyUHJvY2Vzc0lEKTsKLSAgICAgICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIC8qIAotICAgICAgICAgICAgICogSWYgb3VyIG1vZHVsZSBzbmFwc2hvdCBmYWlscyAod2hpY2ggd2lsbCBoYXBwZW4gaWYgd2UgZG9uJ3Qgb3duCi0gICAgICAgICAgICAgKiB0aGUgcHJvY2VzcyksIGp1c3QgaWdub3JlIGl0IGFuZCBjb250aW51ZS4gIChJdCBzZWVtcyBkaWZmZXJlbnQKLSAgICAgICAgICAgICAqIHZlcnNpb25zIG9mIFdpbmRvd3MgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgZm9yIEdldExhc3RFcnJvcigpCi0gICAgICAgICAgICAgKiBpbiB0aGlzIHNpdHVhdGlvbjsgaXQncyBlYXNpZXIgdG8ganVzdCBpZ25vcmUgaXQgYW5kIG1vdmUgb24gdnMuCi0gICAgICAgICAgICAgKiBzdG9wcGluZyB0aGUgYnVpbGQgZm9yIHdoYXQgY291bGQgYmUgYSBmYWxzZSBwb3NpdGl2ZS4pCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpZiAoIU1vZHVsZTMyRmlyc3RXKGhzbSwgJm1lKSkgewotICAgICAgICAgICAgcHJpbnRmKCJNb2R1bGUzMkZpcnN0V1syXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOwotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQotICAgICAgICAgICAgICAgIC8qIFdyb25nIG1vZHVsZSwgd2UncmUgbG9va2luZyBmb3IgcHl0aG9uW19kXS5leGUuLi4gKi8KLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKF93Y3NuaWNtcChwYXRoLCBtZS5zekV4ZVBhdGgsIGxlbikpCi0gICAgICAgICAgICAgICAgLyogUHJvY2VzcyBkb2Vzbid0IGxpdmUgaW4gb3VyIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLyogUHl0aG9uIHByb2Nlc3MgcmVzaWRpbmcgaW4gdGhlIHJpZ2h0IGRpcmVjdG9yeSwga2lsbCBpdCEgICovCi0gICAgICAgICAgICBocCA9IE9wZW5Qcm9jZXNzKGRhYywgRkFMU0UsIHBlLnRoMzJQcm9jZXNzSUQpOwotICAgICAgICAgICAgaWYgKCFocCkgewotICAgICAgICAgICAgICAgIHByaW50ZigiT3BlblByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFUZXJtaW5hdGVQcm9jZXNzKGhwLCAxKSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiVGVybWluYXRlUHJvY2VzcyBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKLSAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc20pOwotICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHApOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOwotCi0gICAgICAgIENsb3NlSGFuZGxlKGhzbSk7Ci0KLSAgICB9IHdoaWxlIChQcm9jZXNzMzJOZXh0Vyhoc3AsICZwZSkpOwotCi0gICAgQ2xvc2VIYW5kbGUoaHNwKTsKLQotICAgIHJldHVybiAwOwotfQotCi0vKiB2aTogc2V0IHRzPTggc3c9NCBzdHM9NCBleHBhbmR0YWIgKi8KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM0MTA3YS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9raWxsX3B5dGhvbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9ImtpbGxfcHl0aG9uIg0KLQlQcm9qZWN0R1VJRD0iezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQotCVJvb3ROYW1lc3BhY2U9ImtpbGxfcHl0aG9uIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii5ca2lsbF9weXRob24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI0YTY0YS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby5jCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGlvLmg+Ci0KLSNkZWZpbmUgQ01EX1NJWkUgNTAwCi0KLS8qIFRoaXMgZmlsZSBjcmVhdGVzIHRoZSBnZXRidWlsZGluZm8ubyBvYmplY3QsIGJ5IGZpcnN0Ci0gICBpbnZva2luZyBzdWJ3Y3Jldi5leGUgKGlmIGZvdW5kKSwgYW5kIHRoZW4gaW52b2tpbmcgY2wuZXhlLgotICAgQXMgYSBzaWRlIGVmZmVjdCwgaXQgbWlnaHQgZ2VuZXJhdGUgUENCdWlsZFxnZXRidWlsZGluZm8yLmMKLSAgIGFsc28uIElmIHRoaXMgaXNuJ3QgYSBzdWJ2ZXJzaW9uIGNoZWNrb3V0LCBvciBzdWJ3Y3JldiBpc24ndAotICAgZm91bmQsIGl0IGNvbXBpbGVzIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgaW5zdGVhZC4KLQotICAgQ3VycmVudGx5LCBzdWJ3Y3Jldi5leGUgaXMgZm91bmQgZnJvbSB0aGUgcmVnaXN0cnkgZW50cmllcwotICAgb2YgVG9ydG9pc2VTVk4uCi0KLSAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBwbGFjZSBnZXRidWlsZGluZm8ubyBpbnRvIHRoZSBwcm9wZXIKLSAgIGJpbmFyeSBkaXJlY3RvcnkuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhcyB0aGlzIHRvb2wgaXMKLSAgIGludm9rZWQgYXMgYSBwcmUtbGluayBzdGVwIGZvciBweXRob25jb3JlLCBzbyB0aGF0IG92ZXJ3cml0ZXMKLSAgIGFueSBwcmV2aW91cyBnZXRidWlsZGluZm8uby4KLQotICAgSG93ZXZlciwgaWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCi0gICBhcyBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2hlcmUgYW55IGdldGJ1aWxkaW5mbzIuYyBhbmQKLSAgIGdldGJ1aWxkaW5mby5vIGZpbGVzIGFyZSBwdXQuICBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZQotICAgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGJ1aWx0IGluIHBhcmFsbGVsLCB0byBhdm9pZCB0aGVtCi0gICB0cmFtcGxpbmcgZWFjaCBvdGhlcidzIGZpbGVzLgotCi0qLwotCi1pbnQgbWFrZV9idWlsZGluZm8yKGNvbnN0IGNoYXIgKnRtcHBhdGgpCi17Ci0gICAgc3RydWN0IF9zdGF0IHN0OwotICAgIEhLRVkgaFRvcnRvaXNlOwotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRSsxXTsKLSAgICBEV09SRCB0eXBlLCBzaXplOwotICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KLSAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCi0gICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCi0gICAgICAgIHJldHVybiAwOwotICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLwotICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOwotICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKLSAgICAgICAgdHlwZSAhPSBSRUdfU1opCi0gICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImJpblxcc3Vid2NyZXYuZXhlIik7Ci0gICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCi0gICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIC4uXFwuLiAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIFwiIik7Ci0gICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOyAvKiBxdW90ZWQgdG1wcGF0aCAqLwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKLQotICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOwotICAgIGlmIChzeXN0ZW0oY29tbWFuZCkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQotY29uc3QgY2hhciBERUxJTVNbXSA9IHsgIiBcbiIgfTsKLQotaW50IGdldF9tZXJjdXJpYWxfaW5mbyhjaGFyICogaGdicmFuY2gsIGNoYXIgKiBoZ3RhZywgY2hhciAqIGhncmV2LCBpbnQgc2l6ZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLSAgICBjaGFyIGZpbGVuYW1lW0NNRF9TSVpFXTsKLSAgICBjaGFyIGNtZGxpbmVbQ01EX1NJWkVdOwotCi0gICAgc3RyY3B5X3MoZmlsZW5hbWUsIENNRF9TSVpFLCAidG1wWFhYWFhYIik7Ci0gICAgaWYgKF9ta3RlbXBfcyhmaWxlbmFtZSwgQ01EX1NJWkUpID09IDApIHsKLSAgICAgICAgaW50IHJjOwotCi0gICAgICAgIHN0cmNweV9zKGNtZGxpbmUsIENNRF9TSVpFLCAiaGcgaWQgLWJpdCA+ICIpOwotICAgICAgICBzdHJjYXRfcyhjbWRsaW5lLCBDTURfU0laRSwgZmlsZW5hbWUpOwotICAgICAgICByYyA9IHN5c3RlbShjbWRsaW5lKTsKLSAgICAgICAgaWYgKHJjID09IDApIHsKLSAgICAgICAgICAgIEZJTEUgKiBmcDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGZvcGVuX3MoJmZwLCBmaWxlbmFtZSwgInIiKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqIGNwID0gZmdldHMoY21kbGluZSwgQ01EX1NJWkUsIGZwKTsKLQotICAgICAgICAgICAgICAgIGlmIChjcCkgewotICAgICAgICAgICAgICAgICAgICBjaGFyICogY29udGV4dCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKiB0cCA9IHN0cnRva19zKGNwLCBERUxJTVMsICZjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3Jldiwgc2l6ZSwgdHApOwotICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhnYnJhbmNoLCBzaXplLCB0cCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGd0YWcsIHNpemUsIHRwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBfdW5saW5rKGZpbGVuYW1lKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQotewotICAgIGNoYXIgY29tbWFuZFtDTURfU0laRV0gPSAiY2wuZXhlIC1jIC1EX1dJTjMyIC1EVVNFX0RMX0VYUE9SVCAtRF9XSU5ET1dTIC1EV0lOMzIgLURfV0lORExMICI7Ci0gICAgY2hhciB0bXBwYXRoW0NNRF9TSVpFXSA9ICIiOwotICAgIGludCBkb191bmxpbmssIHJlc3VsdDsKLSAgICBjaGFyICp0bXBkaXIgPSBOVUxMOwotICAgIGlmIChhcmdjIDw9IDIgfHwgYXJnYyA+IDMpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWtlX2J1aWxkaW5mbyAkKENvbmZpZ3VyYXRpb25OYW1lKSBbdG1wZGlyXVxuIik7Ci0gICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7Ci0gICAgfQotICAgIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2UiKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIkRlYnVnIikgPT0gMCkgewotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1EX0RFQlVHIC1NRGQgIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUl0YW5pdW0iKSA9PSAwKSB7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19JVEFOSVVNICIpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VBTUQ2NCIpID09IDApIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19PUFRFUk9OICIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uICVzXG4iLCBhcmd2WzFdKTsKLSAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAgICB9Ci0gICAgaWYgKGFyZ2MgPiAyKSB7Ci0gICAgICAgIHRtcGRpciA9IGFyZ3ZbMl07Ci0gICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCB0bXBkaXIpOwotICAgICAgICAvKiBIYWNrIGZpeCBmb3IgYmFkIGNvbW1hbmQgbGluZTogIElmIHRoZSBjb21tYW5kIGlzIGlzc3VlZCBsaWtlIHRoaXM6Ci0gICAgICAgICAqICQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIgotICAgICAgICAgKiB3ZSB3aWxsIGdldCBhIHRyYWlsaW5nIHF1b3RlIGJlY2F1c2UgSW50RGlyIGVuZHMgd2l0aCBhIGJhY2tzbGFzaCB0aGF0IHRoZW4KLSAgICAgICAgICogZXNjYXBlcyB0aGUgZmluYWwgIi4gIFRvIHNpbXBsaWZ5IHRoZSBsaWZlIGZvciBkZXZlbG9wZXJzLCBjYXRjaCB0aGF0IHByb2JsZW0KLSAgICAgICAgICogaGVyZSBieSBjdXR0aW5nIGl0IG9mZi4KLSAgICAgICAgICogVGhlIHByb3BlciBjb21tYW5kIGxpbmUsIGJ0dyBpczoKLSAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcilcIgotICAgICAgICAgKiBIb29yYXkgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nIG9uIHdpbmRvd3MuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoc3RybGVuKHRtcHBhdGgpID4gMCAmJiB0bXBwYXRoW3N0cmxlbih0bXBwYXRoKS0xXSA9PSAnIicpCi0gICAgICAgICAgICB0bXBwYXRoW3N0cmxlbih0bXBwYXRoKS0xXSA9ICdcMCc7Ci0gICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCAiXFwiKTsKLSAgICB9Ci0KLSAgICBpZiAoKGRvX3VubGluayA9IG1ha2VfYnVpbGRpbmZvMih0bXBwYXRoKSkpIHsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIgLURTVUJXQ1JFViAiKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgaGd0YWdbQ01EX1NJWkVdOwotICAgICAgICBjaGFyIGhnYnJhbmNoW0NNRF9TSVpFXTsKLSAgICAgICAgY2hhciBoZ3JldltDTURfU0laRV07Ci0KLSAgICAgICAgaWYgKGdldF9tZXJjdXJpYWxfaW5mbyhoZ2JyYW5jaCwgaGd0YWcsIGhncmV2LCBDTURfU0laRSkpIHsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURIR0JSQU5DSD1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdicmFuY2gpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7Ci0KLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdUQUc9XFxcIiIpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhndGFnKTsKLSAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOwotCi0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVkVSU0lPTj1cXFwiIik7Ci0gICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdyZXYpOwotICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiICIpOwotICAgICAgICB9Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyIpOwotICAgIH0KLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtRm9cIiIpOwotICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKLSAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mby5vXCIgLUkuLlxcLi5cXEluY2x1ZGUgLUkuLlxcLi5cXFBDIik7Ci0gICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7Ci0gICAgcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmQpOwotICAgIGlmIChkb191bmxpbmspIHsKLSAgICAgICAgY29tbWFuZFswXSA9ICdcMCc7Ci0gICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKLSAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwotICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIik7Ci0gICAgICAgIF91bmxpbmsoY29tbWFuZCk7Ci0gICAgfQotICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjQwNjVkLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTAiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ibWFrZV9idWlsZGluZm8iDQotCVByb2plY3RHVUlEPSJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi0JUm9vdE5hbWVzcGFjZT0ibWFrZV9idWlsZGluZm8iDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuXG1ha2VfYnVpbGRpbmZvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2ogYi9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGExZmQyOC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JUHJvamVjdEdVSUQ9IntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGNidWlsZC5zbG4gYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmE3ZjY5Yy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9wY2J1aWxkLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDY5MCArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMA0KLSMgVmlzdWFsIFN0dWRpbyAyMDA4DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQotCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KLQkJLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCi0JCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2RlY2ltYWwiLCAiX2RlY2ltYWwudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmNwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjcHJvaiIsICJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0gPSB7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zc2wiLCAiX3NzbC52Y3Byb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9ID0gezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0aW1wb3J0bXVsdGlwbGUiLCAiX3Rlc3RpbXBvcnRtdWx0aXBsZS52Y3Byb2oiLCAiezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYnoyIiwgIl9iejIudmNwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2x6bWEiLCAiX2x6bWEudmNwcm9qIiwgIntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3Byb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3Byb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3Byb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmNwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmNwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbjNkbGwiLCAicHl0aG9uM2RsbC52Y3Byb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3Byb2oiLCAie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RidWZmZXIiLCAiX3Rlc3RidWZmZXIudmNwcm9qIiwgIntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLUdsb2JhbA0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KLQkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KLQkJRGVidWd8eDY0ID0gRGVidWd8eDY0DQotCQlQR0luc3RydW1lbnR8V2luMzIgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCVBHSW5zdHJ1bWVudHx4NjQgPSBQR0luc3RydW1lbnR8eDY0DQotCQlQR1VwZGF0ZXxXaW4zMiA9IFBHVXBkYXRlfFdpbjMyDQotCQlQR1VwZGF0ZXx4NjQgPSBQR1VwZGF0ZXx4NjQNCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQotCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0DQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezM2RDBDNTJDLURGNEUtNDVEMC04QkM3LUUyOTRDM0FCQzc4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXszNkQwQzUyQy1ERjRFLTQ1RDAtOEJDNy1FMjk0QzNBQkM3ODF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MzZEMEM1MkMtREY0RS00NUQwLThCQzctRTI5NEMzQUJDNzgxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXswNEYzNzQwMC04ODNDLTQyRDctQUUyOC02Q0Y5OTUzQkY5NzV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MDRGMzc0MDAtODgzQy00MkQ3LUFFMjgtNkNGOTk1M0JGOTc1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezA0RjM3NDAwLTg4M0MtNDJENy1BRTI4LTZDRjk5NTNCRjk3NX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KLQlFbmRHbG9iYWxTZWN0aW9uDQotRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMgYi9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTljMTE3Yi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJwZ2luc3RydW1lbnQiDQotCU91dHB1dERpcmVjdG9yeT0iJChPdXREaXJQR0kpIg0KLQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtcGdpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMiINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCUZhdm9yU2l6ZU9yU3BlZWQ9IjIiDQotCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCi0JCUVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM9ImZhbHNlIg0KLQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KLQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQotCQlFbmFibGVDT01EQVRGb2xkaW5nPSIxIg0KLQkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iMiINCi0JCVByb2ZpbGVHdWlkZWREYXRhYmFzZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCQoVGFyZ2V0TmFtZSkucGdkIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJPdXREaXJQR0kiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcyBiL1BDL1ZTOS4wL3BndXBkYXRlLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2Y2ZjMmQuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJwZ3VwZGF0ZSINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ29cIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChTb2x1dGlvbkRpcilccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCUFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz0iIg0KLQkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iNCINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlkLnZzcHJvcHMgYi9QQy9WUzkuMC9weWQudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRjMjFlMS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weWQudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWQiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIg0KLQkJUnVudGltZUxpYnJhcnk9IjIiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkucHlkIg0KLQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLnBkYiINCi0JCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKVwkKFRhcmdldE5hbWUpLmxpYiINCi0JCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJQ29tbWFuZExpbmU9IiINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlkX2QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZF9kLnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxM2EzMGIuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvcHlkX2QudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWRfZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIg0KLQkJUnVudGltZUxpYnJhcnk9IjMiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5weWQiDQotCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5wZGIiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcilcJChUYXJnZXROYW1lKS5saWIiDQotCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJRW1iZWRNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCUNvbW1hbmRMaW5lPSIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKXB5dGhvbl9kLmV4ZSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlleHBhdC52Y3Byb2ogYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThkMmNkNy4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDU1MyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHlleHBhdCINCi0JUHJvamVjdEdVSUQ9IntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlSb290TmFtZXNwYWNlPSJweWV4cGF0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweWV4cGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkwOTg3NS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweXByb2plY3QiDQotCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjIiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0idHJ1ZSINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7IC4uXC4uXFBDIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU4zMiINCi0JCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQlFeGNlcHRpb25IYW5kbGluZz0iMCINCi0JCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJQ29tcGlsZUFzPSIwIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJChPdXREaXIpIg0KLQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KLQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQlTdWJTeXN0ZW09IjIiDQotCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCVRhcmdldE1hY2hpbmU9IjEiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cSW5jbHVkZSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHlEbGxOYW1lIg0KLQkJVmFsdWU9InB5dGhvbjM0Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeXRob25FeGUiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcilccHl0aG9uLmV4ZSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iZXh0ZXJuYWxzRGlyIg0KLQkJVmFsdWU9Ii4uXC4uXC4uIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJzcWxpdGUzRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy44LjMuMSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iYnoyRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0ibHptYURpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilceHotNS4wLjUiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9Im9wZW5zc2xEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjFnIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0RpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcdGNsdGsiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjREaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHRjbHRrNjQiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrTGliIg0KLQkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0a0RpcilcbGliXHRrODUubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0xpYkRlYnVnIg0KLQkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGtEaXIpXGxpYlx0azg1Zy5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjRMaWIiDQotCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODUubGliICQodGNsdGs2NERpcilcbGliXHRrODUubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0azY0TGliRGVidWciDQotCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODVnLmxpYiAkKHRjbHRrNjREaXIpXGxpYlx0azg1Zy5saWIiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24udmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDdkZTIxLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw2MzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9InB5dGhvbiINCi0JUHJvamVjdEdVSUQ9IntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIxMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbi5pY28iDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHl0aG9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9uM2RsbC52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ3MzMzYi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9uM2RsbCINCi0JUHJvamVjdEdVSUQ9Ins4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KLQlSb290TmFtZXNwYWNlPSJweXRob24zZGxsIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KLQkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCi0JCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KLQkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQotCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uMy5kZWYiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zZGxsLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sO2luYzt4c2QiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn0iDQotCQkJPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJyYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2Ig0KLQkJCVVuaXF1ZUlkZW50aWZpZXI9Ins2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQk+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjYwNDcwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTg3NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9uY29yZSINCi0JUHJvamVjdEdVSUQ9IntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlSb290TmFtZXNwYWNlPSJweXRob25jb3JlIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBEZWJ1ZyAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKV9kLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBEZWJ1ZyAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKV9kLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UgJnF1b3Q7JChJbnREaXIpXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJnF1b3Q7JChJbnREaXIpZ2V0YnVpbGRpbmZvLm8mcXVvdDsiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSAmcXVvdDskKEludERpcilcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSImcXVvdDskKEludERpcilnZXRidWlsZGluZm8ubyZxdW90OyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlICZxdW90OyQoSW50RGlyKVwmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiZxdW90OyQoSW50RGlyKWdldGJ1aWxkaW5mby5vJnF1b3Q7Ig0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKSQoUHlEbGxOYW1lKS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJJbmNsdWRlIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYWJzdHJhY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYWNjdS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhc2RsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxiaXRzZXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNldmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZWNzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBpbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkYXRldGltZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGV2YWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxldXRpbHMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZnVuY29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxnZW5vYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ3JhbWluaXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ3JhbW1hci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbXBvcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaW50cmNoZWNrLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1hcnNoYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxuYW1lc3BhY2VvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbm9kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqaW1wbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvcGNvZGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb3NkZWZzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhcnNldG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGdlbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweV9jdXJzZXMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlhcmVuYS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWNhcHN1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHljdHlwZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWRlYnVnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXhwYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlmcGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlnZXRvcHQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWN0b29sYm94LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWF0aC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRpbWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWNyby5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1lbS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXBvcnQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdGF0ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cmNtcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cnRvZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkdG9hLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRocmVhZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzZXRvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeW10YWJsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdGltZWZ1bmNzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRva2VuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRyYWNlYmFjay5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1Y25oYXNoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVuaWNvZGVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iTW9kdWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Nzdi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfanNvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sc3Byb2YuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3BpY2tsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfd2Vha3JlZi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfd2luYXBpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdWRpb29wLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJpbmFzY2lpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNtYXRobW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xlcnJub21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xmYXVsdGhhbmRsZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1haW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbW1hcG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfb3BlcmF0b3IuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzcmUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3JlX2NvbnN0YW50cy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzcmVfbGliLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemlwaW1wb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9Il9pbyINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQk8L0ZpbHRlcj4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9InpsaWIiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpsaWIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iY2prY29kZWNzIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX3R3LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcZW11X2ppc3gwMjEzXzIwMDAuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc190dy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iT2JqZWN0cyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGFic3RyYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGFjY3UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYm9vbG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjYXBzdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNlbGxvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbGlzdG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG5hbWVzcGFjZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJccmVwbGFjZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzZXRvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHdlYWtyZWZvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlBhcnNlciINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGJpdHNldC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGZpcnN0c2V0cy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyMS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGxpc3Rub2RlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbm9kZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJQQyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5yZWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGNvbmZpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZGxfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGVycm1hcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1zdmNydG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlB5dGhvbiINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cX3dhcm5pbmdzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXNkbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY2V2YWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZXJyb3JzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZmlsZXV0aWxzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmcm96ZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmdXR1cmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHZlcnNpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtYXJzaGFsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbW9kc3VwcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c25wcmludGYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5YXJlbmEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlmcGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweW1hdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRpbWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJjbXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cnRvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR0b2EuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxQeXRob24tYXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aG9ucnVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5bXRhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkX250LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdHJhY2ViYWNrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fbnQucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9udy52Y3Byb2ogYi9QQy9WUzkuMC9weXRob253LnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y1YzA0Yi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9weXRob253LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDYxOCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0icHl0aG9udyINCi0JUHJvamVjdEdVSUQ9IntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbndfZC5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xXaW5NYWluLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzIGIvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRlZjkwLi4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3JlbGVhc2UudnNwcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJyZWxlYXNlIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iS2lsbFB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKE91dERpcilca2lsbF9weXRob24uZXhlIg0KLQkvPgkNCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc2VsZWN0LnZjcHJvaiBiL1BDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzN2ZkOTcuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ic2VsZWN0Ig0KLQlQcm9qZWN0R1VJRD0iezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQotCVJvb3ROYW1lc3BhY2U9InNlbGVjdCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY4YzMyOC4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDUzNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0ic3FsaXRlMyINCi0JUHJvamVjdEdVSUQ9IntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlSb290TmFtZXNwYWNlPSJzcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChzcWxpdGUzRGlyKSZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcyBiL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUwMmRmNS4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zcWxpdGUzLnZzcHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0ic3FsaXRlMyINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpIg0KLQkJV2FybmluZ0xldmVsPSIxIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9zc2wudmNwcm9qIGIvUEMvVlM5LjAvc3NsLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMwZTg3Ny4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC9zc2wudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJzc2wiDQotCVByb2plY3RHVUlEPSJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCi0JUm9vdE5hbWVzcGFjZT0ic3NsIg0KLQlLZXl3b3JkPSJNYWtlRmlsZVByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9IiINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iIg0KLQkJCQlPdXRwdXQ9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkSW5jbHVkZXM9IiINCi0JCQkJQXNzZW1ibHlTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZFVzaW5nQXNzZW1ibGllcz0iIg0KLQkJCQlDb21waWxlQXNNYW5hZ2VkPSIiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSIiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9IiINCi0JCQkJT3V0cHV0PSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQotCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQotCQkJCUZvcmNlZEluY2x1ZGVzPSIiDQotCQkJCUFzc2VtYmx5U2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRVc2luZ0Fzc2VtYmxpZXM9IiINCi0JCQkJQ29tcGlsZUFzTWFuYWdlZD0iIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSIiDQotCQkJCU91dHB1dD0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KLQkJCQlGb3JjZWRJbmNsdWRlcz0iIg0KLQkJCQlBc3NlbWJseVNlYXJjaFBhdGg9IiINCi0JCQkJRm9yY2VkVXNpbmdBc3NlbWJsaWVzPSIiDQotCQkJCUNvbXBpbGVBc01hbmFnZWQ9IiINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvaiBiL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY2ZmY3Mi4uMDAwMDAwMAotLS0gYS9QQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw1MzMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9InVuaWNvZGVkYXRhIg0KLQlQcm9qZWN0R1VJRD0ie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iDQotCVJvb3ROYW1lc3BhY2U9InVuaWNvZGVkYXRhIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2ogYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZGJmMjkuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAvd2luc291bmQudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTIzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJ3aW5zb3VuZCINCi0JUHJvamVjdEdVSUQ9InsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5zb3VuZCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5zb3VuZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3g2NC52c3Byb3BzIGIvUEMvVlM5LjAveDY0LnZzcHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNmY0NzAuLjAwMDAwMDAKLS0tIGEvUEMvVlM5LjAveDY0LnZzcHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iYW1kNjQiDQotCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcilcYW1kNjRcIg0KLQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uTmFtZSlcJChQcm9qZWN0TmFtZSlcIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9HUy0iDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjY0O19NX1g2NCINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeXRob25FeGUiDQotCQlWYWx1ZT0iJChIT1NUX1BZVEhPTikiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2ogYi9QQy9WUzkuMC94eGxpbWl0ZWQudmNwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2FhYWQ2Li4wMDAwMDAwCi0tLSBhL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKKysrIC9kZXYvbnVsbApAQCAtMSw0MTcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Inh4bGltaXRlZCINCi0JUHJvamVjdEdVSUQ9IntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KLQlSb290TmFtZXNwYWNlPSJ4eGxpbWl0ZWQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUc7X1dJTjMyO19XSU5ETEw7UHlfTElNSVRFRF9BUEk7JChOT0lOSEVSSVQpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0xJTUlURURfQVBJIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0xJTUlURURfQVBJIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2FyY2hpdmUuaCBiL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oCmluZGV4IDMxYTc4MDUuLjUwZmYxNWMgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvYXJjaGl2ZS5oCkBAIC0xLDEwICsxLDkgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAogI3ByYWdtYSBwYWNrKDEpCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2JkaXN0X3dpbmluc3QudmN4cHJvaiBiL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYjQ3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9iZGlzdF93aW5pbnN0L2JkaXN0X3dpbmluc3QudmN4cHJvagpAQCAtMCwwICsxLDEwMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPndpbmluc3Q8L1Jvb3ROYW1lc3BhY2U+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlxQQ0J1aWxkXHB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXI+JChQeVNvdXJjZVBhdGgpbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgICA8VGFyZ2V0TmFtZT53aW5pbnN0LSQoVmlzdWFsU3R1ZGlvVmVyc2lvbik8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+JChUYXJnZXROYW1lKS1hbWQ2NDwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0RXh0Pi5leGU8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8TWlkbD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+JChPdXREaXIpd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoUHlTb3VyY2VQYXRoKU1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpUENcYmRpc3Rfd2luaW5zdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iZXh0cmFjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iaW5zdGFsbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9ImFyY2hpdmUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSJpbnN0YWxsLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSJQeXRob25Qb3dlcmVkLmJtcCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ouZmlsdGVycyBiL1BDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKcmVuYW1lIHRvIFBDL2JkaXN0X3dpbmluc3QvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvYnVpbGQuYmF0IGIvUEMvYmRpc3Rfd2luaW5zdC9idWlsZC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmNTY1YwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvYnVpbGQuYmF0CkBAIC0wLDAgKzEsMjIgQEAKK0BlY2hvIG9mZg0KK3NldGxvY2FsDQorDQorc2V0IEQ9JX5kcDANCitzZXQgUENCVUlMRD0lfmRwMC4uXC4uXFBDQnVpbGRcDQorDQorDQorZWNobyBCdWlsZGluZyBMaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC14eC4wLmV4ZQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisNCittc2J1aWxkICIlRCViZGlzdF93aW5pbnN0LnZjeHByb2oiICIvcDpTb2x1dGlvbkRpcj0lUENCVUlMRCVcIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09V2luMzINCitpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorDQorDQorZWNobyBCdWlsZGluZyBMaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC14eC4wLWFtZDY0LmV4ZQ0KKw0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Nl9hbWQ2NA0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisNCittc2J1aWxkICIlRCViZGlzdF93aW5pbnN0LnZjeHByb2oiICIvcDpTb2x1dGlvbkRpcj0lUENCVUlMRCVcIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDY0DQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9leHRyYWN0LmMgYi9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYwppbmRleCBhZWM4ZWRhLi4wMjQ5ZDlmIDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2V4dHJhY3QuYwpAQCAtMSwxMCArMSw5IEBACiAvKgotICBJTVBPUlRBTlQgTk9URTogSUYgVEhJUyBGSUxFIElTIENIQU5HRUQsIFdJTklOU1QtNi5FWEUgTVVTVCBCRSBSRUNPTVBJTEVECi0gIFdJVEggVEhFIE1TVkM2IFdJTklOU1QuRFNXIFdPUktTUEFDRSBGSUxFIE1BTlVBTExZLCBBTkQgV0lOSU5TVC03LjEuRVhFIE1VU1QKLSAgQkUgUkVDT01QSUxFRCBXSVRIIFRIRSBNU1ZDIDIwMDMuTkVUIFdJTklOU1QtNy4xLlZDUFJPSiBGSUxFIE1BTlVBTExZLgorICBJTVBPUlRBTlQgTk9URTogSUYgVEhJUyBGSUxFIElTIENIQU5HRUQsIFBDQlVJTERcQkRJU1RfV0lOSU5TVC5WQ1hQUk9KIE1VU1QKKyAgQkUgUkVCVUlMVCBBUyBXRUxMLgogCi0gIElGIENIQU5HRVMgVE8gVEhJUyBGSUxFIEFSRSBDSEVDS0VEIElOVE8gUFlUSE9OIENWUywgVEhFIFJFQ09NUElMRUQgQklOQVJJRVMKLSAgTVVTVCBCRSBDSEVDS0VEIElOIEFTIFdFTEwhCisgIElGIENIQU5HRVMgVE8gVEhJUyBGSUxFIEFSRSBDSEVDS0VEIElOLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUyBNVVNUIEJFCisgIENIRUNLRUQgSU4gQVMgV0VMTCEKICovCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCmluZGV4IGY0Y2YzNDguLmYzOWIzODEgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCkBAIC0xLDEwICsxLDkgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAogLyoKQEAgLTEyMTYsNyArMTIxNSw3IEBACiAKICNpbmNsdWRlIDxwcnNodC5oPgogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBJbnRyb0RsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0xNTY1LDcgKzE1NjQsNyBAQAogICAgIHJldHVybiBvbGRfc2NoZW1lOwogfQogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBTZWxlY3RQeXRob25EbGdQcm9jKEhXTkQgaHduZCwgVUlOVCBtc2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgTFBOTUhEUiBscG5tOwpAQCAtMTg2Nyw3ICsxODY2LDcgQEAKICAgICAgICAgZmNsb3NlKGxvZ2ZpbGUpOwogfQogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBJbnN0YWxsRmlsZXNEbGdQcm9jKEhXTkQgaHduZCwgVUlOVCBtc2csIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgICAgTFBOTUhEUiBscG5tOwpAQCAtMjAyMiw3ICsyMDIxLDcgQEAKIH0KIAogCi1CT09MIENBTExCQUNLCitJTlRfUFRSIENBTExCQUNLCiBGaW5pc2hlZERsZ1Byb2MoSFdORCBod25kLCBVSU5UIG1zZywgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsKICAgICBMUE5NSERSIGxwbm07CkBAIC0yMTk4LDIzICsyMTk3LDYgQEAKICAgICByZXR1cm4gVFJVRTsKIH0KIAotLy8gUmV0dXJucyBUUlVFIGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBVQUMuCi1CT09MIFBsYXRmb3JtU3VwcG9ydHNVQUMoKQotewotICAgIC8vIE5vdGUgdGhhdCB3aW4yayBkb2VzIHNlZW0gdG8gc3VwcG9ydCBTaGVsbEV4ZWN1dGUgd2l0aCAncnVuYXMnLAotICAgIC8vIGJ1dCBkb2VzICpub3QqIHN1cHBvcnQgSXNVc2VyQW5BZG1pbiAtIHNvIHdlIGp1c3QgcHJldGVuZCB0aGluZ3MKLSAgICAvLyBvbmx5IHdvcmsgb24gWFAgYW5kIGxhdGVyLgotICAgIEJPT0wgYklzV2luZG93c1hQb3JMYXRlcjsKLSAgICBPU1ZFUlNJT05JTkZPIHdpbnZlcmluZm87Ci0gICAgd2ludmVyaW5mby5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcmluZm8pOwotICAgIGlmICghR2V0VmVyc2lvbkV4KCZ3aW52ZXJpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZBTFNFOyAvLyBzb21ldGhpbmcgYmFkIGhhcyBnb25lIHdyb25nCi0gICAgYklzV2luZG93c1hQb3JMYXRlciA9Ci0gICAgICAgKCAod2ludmVyaW5mby5kd01ham9yVmVyc2lvbiA+IDUpIHx8Ci0gICAgICAgKCAod2ludmVyaW5mby5kd01ham9yVmVyc2lvbiA9PSA1KSAmJiAod2ludmVyaW5mby5kd01pbm9yVmVyc2lvbiA+PSAxKSApKTsKLSAgICByZXR1cm4gYklzV2luZG93c1hQb3JMYXRlcjsKLX0KLQogLy8gU3Bhd24gb3Vyc2VsZiBhcyBhbiBlbGV2YXRlZCBhcHBsaWNhdGlvbi4gIE9uIGZhaWx1cmUsIGEgbWVzc2FnZSBpcwogLy8gZGlzcGxheWVkIHRvIHRoZSB1c2VyIC0gYnV0IHRoaXMgYXBwIHdpbGwgYWx3YXlzIHRlcm1pbmF0ZSwgZXZlbgogLy8gb24gZXJyb3IuCkBAIC0yMjcwLDcgKzIyNTIsNyBAQAogCiAgICAgLy8gU2VlIGlmIHdlIG5lZWQgdG8gZG8gdGhlIFZpc3RhIFVBQyBtYWdpYy4KICAgICBpZiAoc3RyY21wKHVzZXJfYWNjZXNzX2NvbnRyb2wsICJmb3JjZSIpPT0wKSB7Ci0gICAgICAgIGlmIChQbGF0Zm9ybVN1cHBvcnRzVUFDKCkgJiYgIU15SXNVc2VyQW5BZG1pbigpKSB7CisgICAgICAgIGlmICghTXlJc1VzZXJBbkFkbWluKCkpIHsKICAgICAgICAgICAgIFNwYXduVUFDKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpAQCAtMjI3OCw3ICsyMjYwLDcgQEAKICAgICB9IGVsc2UgaWYgKHN0cmNtcCh1c2VyX2FjY2Vzc19jb250cm9sLCAiYXV0byIpPT0wKSB7CiAgICAgICAgIC8vIENoZWNrIGlmIGl0IGxvb2tzIGxpa2Ugd2UgbmVlZCBVQUMgY29udHJvbCwgYmFzZWQKICAgICAgICAgLy8gb24gaG93IFB5dGhvbiBpdHNlbGYgd2FzIGluc3RhbGxlZC4KLSAgICAgICAgaWYgKFBsYXRmb3JtU3VwcG9ydHNVQUMoKSAmJiAhTXlJc1VzZXJBbkFkbWluKCkgJiYgTmVlZEF1dG9VQUMoKSkgeworICAgICAgICBpZiAoIU15SXNVc2VyQW5BZG1pbigpICYmIE5lZWRBdXRvVUFDKCkpIHsKICAgICAgICAgICAgIFNwYXduVUFDKCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLnJjIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLnJjCmluZGV4IGQwMThiNDguLmRmYTJmZmMgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5yYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwucmMKQEAgLTEsOTcgKzEsMjAgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAotLy9NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgcmVzb3VyY2Ugc2NyaXB0LgotLy8KKyNpbmNsdWRlIDx3aW5yZXMuaD4KICNpbmNsdWRlICJyZXNvdXJjZS5oIgogCi0jZGVmaW5lIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDIgcmVzb3VyY2UuCi0vLwotI2luY2x1ZGUgImFmeHJlcy5oIgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotI3VuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIE5ldXRyYWwgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX05FVSkKLSNpZmRlZiBfV0lOMzIKIExBTkdVQUdFIExBTkdfTkVVVFJBTCwgU1VCTEFOR19ORVVUUkFMCiAjcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gQml0bWFwCi0vLwogCiBJREJfQklUTUFQICAgICAgICAgICAgICBCSVRNQVAgIERJU0NBUkRBQkxFICAgICAiUHl0aG9uUG93ZXJlZC5ibXAiCi0jZW5kaWYgICAgLy8gTmV1dHJhbCByZXNvdXJjZXMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEdlcm1hbiAoR2VybWFueSkgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0RFVSkKLSNpZmRlZiBfV0lOMzIKLUxBTkdVQUdFIExBTkdfR0VSTUFOLCBTVUJMQU5HX0dFUk1BTgotI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKLSNlbmRpZiAvL19XSU4zMgotCi0jaWZkZWYgQVBTVFVESU9fSU5WT0tFRAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBURVhUSU5DTFVERQotLy8KLQotMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKLUJFR0lOCi0gICAgInJlc291cmNlLmhcMCIKLUVORAotCi0yIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFIAotQkVHSU4KLSAgICAiI2luY2x1ZGUgIiJhZnhyZXMuaCIiXHJcbiIKLSAgICAiXDAiCi1FTkQKLQotMyBURVhUSU5DTFVERSBESVNDQVJEQUJMRSAKLUJFR0lOCi0gICAgIlxyXG4iCi0gICAgIlwwIgotRU5ECi0KLSNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECi0KLSNlbmRpZiAgICAvLyBHZXJtYW4gKEdlcm1hbnkpIHJlc291cmNlcwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRW5nbGlzaCAoVS5TLikgcmVzb3VyY2VzCi0KLSNpZiAhZGVmaW5lZChBRlhfUkVTT1VSQ0VfRExMKSB8fCBkZWZpbmVkKEFGWF9UQVJHX0VOVSkKLSNpZmRlZiBfV0lOMzIKLUxBTkdVQUdFIExBTkdfRU5HTElTSCwgU1VCTEFOR19FTkdMSVNIX1VTCi0jcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQotI2VuZGlmIC8vX1dJTjMyCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gRGlhbG9nCi0vLwotCiBJRERfSU5UUk8gRElBTE9HRVggMCwgMCwgMzc5LCAxNzgKIFNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQgfCBXU19DQVBUSU9OCiBDQVBUSU9OICJTZXR1cCIKQEAgLTE1Miw3OCArNzUsMyBAQAogICAgIEVESVRURVhUICAgICAgICBJRENfSU5GTywxMjUsNDAsMjQ3LDEzMSxFU19NVUxUSUxJTkUgfCBFU19SRUFET05MWSB8IAogICAgICAgICAgICAgICAgICAgICBXU19WU0NST0xMIHwgV1NfSFNDUk9MTCB8IE5PVCBXU19UQUJTVE9QCiBFTkQKLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIERFU0lHTklORk8KLS8vCi0KLSNpZmRlZiBBUFNUVURJT19JTlZPS0VECi1HVUlERUxJTkVTIERFU0lHTklORk8gRElTQ0FSREFCTEUgCi1CRUdJTgotICAgIElERF9JTlRSTywgRElBTE9HCi0gICAgQkVHSU4KLSAgICAgICAgTEVGVE1BUkdJTiwgNwotICAgICAgICBSSUdIVE1BUkdJTiwgMzcyCi0gICAgICAgIFZFUlRHVUlERSwgMTI1Ci0gICAgICAgIFZFUlRHVUlERSwgMzcyCi0gICAgICAgIFRPUE1BUkdJTiwgNwotICAgICAgICBCT1RUT01NQVJHSU4sIDE3MQotICAgICAgICBIT1JaR1VJREUsIDgKLSAgICAgICAgSE9SWkdVSURFLCAzMQotICAgIEVORAotCi0gICAgSUREX1NFTEVDVFBZVEhPTiwgRElBTE9HCi0gICAgQkVHSU4KLSAgICAgICAgTEVGVE1BUkdJTiwgNwotICAgICAgICBSSUdIVE1BUkdJTiwgMzcyCi0gICAgICAgIFZFUlRHVUlERSwgMTI1Ci0gICAgICAgIFZFUlRHVUlERSwgMzcyCi0gICAgICAgIFRPUE1BUkdJTiwgNwotICAgICAgICBCT1RUT01NQVJHSU4sIDE3MQotICAgICAgICBIT1JaR1VJREUsIDgKLSAgICAgICAgSE9SWkdVSURFLCA0MQotICAgIEVORAotCi0gICAgSUREX0lOU1RBTExGSUxFUywgRElBTE9HCi0gICAgQkVHSU4KLSAgICAgICAgTEVGVE1BUkdJTiwgNwotICAgICAgICBSSUdIVE1BUkdJTiwgMzcyCi0gICAgICAgIFZFUlRHVUlERSwgMTI1Ci0gICAgICAgIFZFUlRHVUlERSwgMzcxCi0gICAgICAgIFRPUE1BUkdJTiwgNwotICAgICAgICBCT1RUT01NQVJHSU4sIDE3MQotICAgICAgICBIT1JaR1VJREUsIDgKLSAgICAgICAgSE9SWkdVSURFLCA0MQotICAgIEVORAotCi0gICAgSUREX0ZJTklTSEVELCBESUFMT0cKLSAgICBCRUdJTgotICAgICAgICBMRUZUTUFSR0lOLCA2Ci0gICAgICAgIFJJR0hUTUFSR0lOLCAzNzIKLSAgICAgICAgVkVSVEdVSURFLCAxMjUKLSAgICAgICAgVkVSVEdVSURFLCAzNzIKLSAgICAgICAgVE9QTUFSR0lOLCA3Ci0gICAgICAgIEJPVFRPTU1BUkdJTiwgMTcxCi0gICAgICAgIEhPUlpHVUlERSwgOAotICAgICAgICBIT1JaR1VJREUsIDQxCi0gICAgRU5ECi1FTkQKLSNlbmRpZiAgICAvLyBBUFNUVURJT19JTlZPS0VECi0KLSNlbmRpZiAgICAvLyBFbmdsaXNoIChVLlMuKSByZXNvdXJjZXMKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQotCi0jaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gR2VuZXJhdGVkIGZyb20gdGhlIFRFWFRJTkNMVURFIDMgcmVzb3VyY2UuCi0vLwotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0jZW5kaWYgICAgLy8gbm90IEFQU1RVRElPX0lOVk9LRUQKLQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9yZXNvdXJjZS5oIGIvUEMvYmRpc3Rfd2luaW5zdC9yZXNvdXJjZS5oCmluZGV4IDM1YmEzYzIuLjg2YWVhYmIgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvcmVzb3VyY2UuaAorKysgYi9QQy9iZGlzdF93aW5pbnN0L3Jlc291cmNlLmgKQEAgLTEsMTYgKzEsMTEgQEAKIC8qCi0gIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgV0lOSU5TVC02LkVYRSBNVVNUIEJFIFJFQ09NUElMRUQKLSAgV0lUSCBUSEUgTVNWQzYgV0lOSU5TVC5EU1cgV09SS1NQQUNFIEZJTEUgTUFOVUFMTFksIEFORCBXSU5JTlNULTcuMS5FWEUgTVVTVAotICBCRSBSRUNPTVBJTEVEIFdJVEggVEhFIE1TVkMgMjAwMy5ORVQgV0lOSU5TVC03LjEuVkNQUk9KIEZJTEUgTUFOVUFMTFkuCisgIElNUE9SVEFOVCBOT1RFOiBJRiBUSElTIEZJTEUgSVMgQ0hBTkdFRCwgUENCVUlMRFxCRElTVF9XSU5JTlNULlZDWFBST0ogTVVTVAorICBCRSBSRUJVSUxUIEFTIFdFTEwuCiAKLSAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU5UTyBQWVRIT04gQ1ZTLCBUSEUgUkVDT01QSUxFRCBCSU5BUklFUwotICBNVVNUIEJFIENIRUNLRUQgSU4gQVMgV0VMTCEKKyAgSUYgQ0hBTkdFUyBUTyBUSElTIEZJTEUgQVJFIENIRUNLRUQgSU4sIFRIRSBSRUNPTVBJTEVEIEJJTkFSSUVTIE1VU1QgQkUKKyAgQ0hFQ0tFRCBJTiBBUyBXRUxMIQogKi8KIAotLy97e05PX0RFUEVOREVOQ0lFU319Ci0vLyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgotLy8gVXNlZCBieSBpbnN0YWxsLnJjCi0vLwogI2RlZmluZSBJRERfRElBTE9HMSAgICAgICAgICAgICAgICAgICAgIDEwMQogI2RlZmluZSBJREJfQklUTUFQMSAgICAgICAgICAgICAgICAgICAgIDEwMwogI2RlZmluZSBJRERfSU5UUk8gICAgICAgICAgICAgICAgICAgICAgIDEwNwpAQCAtMzQsMTQgKzI5LDMgQEAKICNkZWZpbmUgSURDX0JVSUxEX0lORk8gICAgICAgICAgICAgICAgICAxMDI0CiAjZGVmaW5lIElEQ19CSVRNQVAgICAgICAgICAgICAgICAgICAgICAgMTAyNQogI2RlZmluZSBJRENfT1RIRVJQWVRIT04gICAgICAgICAgICAgICAgIDEwMjYKLQotLy8gTmV4dCBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IG9iamVjdHMKLS8vIAotI2lmZGVmIEFQU1RVRElPX0lOVk9LRUQKLSNpZm5kZWYgQVBTVFVESU9fUkVBRE9OTFlfU1lNQk9MUwotI2RlZmluZSBfQVBTX05FWFRfUkVTT1VSQ0VfVkFMVUUgICAgICAgIDExMgotI2RlZmluZSBfQVBTX05FWFRfQ09NTUFORF9WQUxVRSAgICAgICAgIDQwMDAxCi0jZGVmaW5lIF9BUFNfTkVYVF9DT05UUk9MX1ZBTFVFICAgICAgICAgMTAyOAotI2RlZmluZSBfQVBTX05FWFRfU1lNRURfVkFMVUUgICAgICAgICAgIDEwMQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEuc2xuIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMDVkMjUuLjAwMDAwMDAKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA4LjAwDQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5pbnN0IiwgIndpbmluc3QtNy4xLnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb24pID0gcHJlU29sdXRpb24NCi0JCURlYnVnID0gRGVidWcNCi0JCVJlbGVhc2UgPSBSZWxlYXNlDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvbikgPSBwb3N0U29sdXRpb24NCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUdsb2JhbHMpID0gcG9zdFNvbHV0aW9uDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBvc3RTb2x1dGlvbg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotRW5kR2xvYmFsDQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS52Y3Byb2ogYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBkYWFlOS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvagorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0id2luaW5zdCINCi0JUHJvamVjdEdVSUQ9IntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5pbnN0Ig0KLQlTY2NQcm9qZWN0TmFtZT0iIg0KLQlTY2NMb2NhbFBhdGg9IiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHRlbXAtcmVsZWFzZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXC4uXHpsaWItMS4yLjMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLXJlbGVhc2Uvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLXJlbGVhc2UvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tY3RsMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC03LjEuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJUUlVFIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1kZWJ1ZyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9Ii5cdGVtcC1kZWJ1Zy93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iLlx0ZW1wLWRlYnVnLyINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIxIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cemxpYi0xLjIuMVx6bGliLmxpYiBpbWFnZWhscC5saWIgY29tY3RsMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC03LjFfZC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0iVFJVRSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4vd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ij4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9ImV4dHJhY3QuYyI+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwuYyI+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwucmMiPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iYXJjaGl2ZS5oIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJQeXRob25Qb3dlcmVkLmJtcCI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVmMTZjZi4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDUNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbmluc3QiLCAid2luaW5zdC04LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2ogYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2oKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNDdkMWIuLjAwMDAwMDAKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTgudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsMzIwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJ3aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzEudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLXJlbGVhc2Uvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLXJlbGVhc2UvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTguZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1kZWJ1ZyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcxLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4vd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iaW1hZ2VobHAubGliIGNvbWN0bDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtOF9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJleHRyYWN0LmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJQeXRob25Qb3dlcmVkLmJtcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHNwIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk4NTU2OS4uMDAwMDAwMAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0id2luaW5zdCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iIDB4MDEwMQ0KLQ0KLUNGRz13aW5pbnN0IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIndpbmluc3QubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgIndpbmluc3QubWFrIiBDRkc9Indpbmluc3QgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAid2luaW5zdCAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFICJ3aW5pbnN0IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQXBwbGljYXRpb24iKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJ3aW5pbnN0IC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIi4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAidGVtcC1yZWxlYXNlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9PMSAvSSAiLi5cLi5cSW5jbHVkZSIgL0kgIi4uXC4uXC4uXHpsaWItMS4yLjMiIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDcgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIC4uXC4uXC4uXHpsaWItMS4yLjNcemxpYi5saWIgaW1hZ2VobHAubGliIGNvbWRsZzMyLmxpYiBvbGUzMi5saWIgY29tY3RsMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL21hY2hpbmU6STM4NiAvbm9kZWZhdWx0bGliOiJMSUJDIiAvb3V0OiIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LjAuZXhlIg0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJ3aW5pbnN0IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4iDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgInRlbXAtZGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvWjcgL09kIC9JICIuLlwuLlxJbmNsdWRlIiAvSSAiLi5cLi5cLi5cemxpYi0xLjIuMSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0ZSIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MDcgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06d2luZG93cyAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIC4uXC4uXC4uXHpsaWItMS4yLjNcemxpYi5saWIgaW1hZ2VobHAubGliIGNvbWRsZzMyLmxpYiBvbGUzMi5saWIgY29tY3RsMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL3BkYjpub25lIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6IkxJQkMiIC9vdXQ6Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYuMF9kLmV4ZSINCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgIndpbmluc3QgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAid2luaW5zdCAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGV4dHJhY3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGluc3RhbGwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uXGluc3RhbGwucmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS5cYXJjaGl2ZS5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9LlxQeXRob25Qb3dlcmVkLmJtcA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzdyBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC5kc3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiYzY2YWEuLjAwMDAwMDAKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LmRzdworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLU1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSENCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogIndpbmluc3QiPS5cd2luaW5zdC5kc3AgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotR2xvYmFsOg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08Mz4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmggYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGU2ZWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmgKQEAgLTAsMCArMSw1NTQgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfaGVhcG1pbl9fZG9jX18sCisiaGVhcG1pbigkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWluaW1pemUgdGhlIG1hbGxvYygpIGhlYXAuXG4iCisiXG4iCisiRm9yY2UgdGhlIG1hbGxvYygpIGhlYXAgdG8gY2xlYW4gaXRzZWxmIHVwIGFuZCByZXR1cm4gdW51c2VkIGJsb2Nrc1xuIgorInRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyBPU0Vycm9yLiIpOworCisjZGVmaW5lIE1TVkNSVF9IRUFQTUlOX01FVEhPRERFRiAgICBcCisgICAgeyJoZWFwbWluIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9oZWFwbWluLCBNRVRIX05PQVJHUywgbXN2Y3J0X2hlYXBtaW5fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9oZWFwbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfaGVhcG1pbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBtc3ZjcnRfaGVhcG1pbl9pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfbG9ja2luZ19fZG9jX18sCisibG9ja2luZygkbW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTG9jayBwYXJ0IG9mIGEgZmlsZSBiYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3IgZmQgZnJvbSB0aGUgQyBydW50aW1lLlxuIgorIlxuIgorIlJhaXNlcyBJT0Vycm9yIG9uIGZhaWx1cmUuIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbVxuIgorInRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yIG5ieXRlcyBieXRlcywgYW5kIG1heSBjb250aW51ZSBiZXlvbmRcbiIKKyJ0aGUgZW5kIG9mIHRoZSBmaWxlLiBtb2RlIG11c3QgYmUgb25lIG9mIHRoZSBMS18qIGNvbnN0YW50cyBsaXN0ZWRcbiIKKyJiZWxvdy4gTXVsdGlwbGUgcmVnaW9ucyBpbiBhIGZpbGUgbWF5IGJlIGxvY2tlZCBhdCB0aGUgc2FtZSB0aW1lLCBidXRcbiIKKyJtYXkgbm90IG92ZXJsYXAuIEFkamFjZW50IHJlZ2lvbnMgYXJlIG5vdCBtZXJnZWQ7IHRoZXkgbXVzdCBiZSB1bmxvY2tlZFxuIgorImluZGl2aWR1YWxseS4iKTsKKworI2RlZmluZSBNU1ZDUlRfTE9DS0lOR19NRVRIT0RERUYgICAgXAorICAgIHsibG9ja2luZyIsIChQeUNGdW5jdGlvbiltc3ZjcnRfbG9ja2luZywgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfbG9ja2luZ19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2xvY2tpbmdfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBtb2RlLCBsb25nIG5ieXRlcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfbG9ja2luZyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IG1vZGU7CisgICAgbG9uZyBuYnl0ZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwKKyAgICAgICAgJmZkLCAmbW9kZSwgJm5ieXRlcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfbG9ja2luZ19pbXBsKG1vZHVsZSwgZmQsIG1vZGUsIG5ieXRlcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9zZXRtb2RlX19kb2NfXywKKyJzZXRtb2RlKCRtb2R1bGUsIGZkLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0IHRoZSBsaW5lLWVuZCB0cmFuc2xhdGlvbiBtb2RlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLlxuIgorIlxuIgorIlRvIHNldCBpdCB0byB0ZXh0IG1vZGUsIGZsYWdzIHNob3VsZCBiZSBvcy5PX1RFWFQ7IGZvciBiaW5hcnksIGl0XG4iCisic2hvdWxkIGJlIG9zLk9fQklOQVJZLlxuIgorIlxuIgorIlJldHVybiB2YWx1ZSBpcyB0aGUgcHJldmlvdXMgbW9kZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfU0VUTU9ERV9NRVRIT0RERUYgICAgXAorICAgIHsic2V0bW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfc2V0bW9kZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfc2V0bW9kZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldG1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfc2V0bW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGZsYWdzOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0bW9kZSIsCisgICAgICAgICZmZCwgJmZsYWdzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0bW9kZV9pbXBsKG1vZHVsZSwgZmQsIGZsYWdzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX18sCisib3Blbl9vc2ZoYW5kbGUoJG1vZHVsZSwgaGFuZGxlLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgZmlsZSBoYW5kbGUgaGFuZGxlLlxuIgorIlxuIgorIlRoZSBmbGFncyBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgYml0d2lzZSBPUiBvZiBvcy5PX0FQUEVORCwgb3MuT19SRE9OTFksXG4iCisiYW5kIG9zLk9fVEVYVC4gVGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCBhcyBhIHBhcmFtZXRlclxuIgorInRvIG9zLmZkb3BlbigpIHRvIGNyZWF0ZSBhIGZpbGUgb2JqZWN0LiIpOworCisjZGVmaW5lIE1TVkNSVF9PUEVOX09TRkhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9vcGVuX29zZmhhbmRsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50IGZsYWdzOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIl9QeV9QQVJTRV9JTlRQVFIiaTpvcGVuX29zZmhhbmRsZSIsCisgICAgICAgICZoYW5kbGUsICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGZsYWdzKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfXywKKyJnZXRfb3NmaGFuZGxlKCRtb2R1bGUsIGZkLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC5cbiIKKyJcbiIKKyJSYWlzZXMgSU9FcnJvciBpZiBmZCBpcyBub3QgcmVjb2duaXplZC4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUX09TRkhBTkRMRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0X29zZmhhbmRsZSwgTUVUSF9PLCBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9fZG9jX199LAorCitzdGF0aWMgUHlfaW50cHRyX3QKK21zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9nZXRfb3NmaGFuZGxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IGZkOworICAgIFB5X2ludHB0cl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGZkKTsKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVZvaWRQdHIoKHZvaWQgKilfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIobXN2Y3J0X2tiaGl0X19kb2NfXywKKyJrYmhpdCgkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRydWUgaWYgYSBrZXlwcmVzcyBpcyB3YWl0aW5nIHRvIGJlIHJlYWQuIik7CisKKyNkZWZpbmUgTVNWQ1JUX0tCSElUX01FVEhPRERFRiAgICBcCisgICAgeyJrYmhpdCIsIChQeUNGdW5jdGlvbiltc3ZjcnRfa2JoaXQsIE1FVEhfTk9BUkdTLCBtc3ZjcnRfa2JoaXRfX2RvY19ffSwKKworc3RhdGljIGxvbmcKK21zdmNydF9rYmhpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2tiaGl0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9rYmhpdF9pbXBsKG1vZHVsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfZ2V0Y2hfX2RvY19fLAorImdldGNoKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGEga2V5cHJlc3MgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlciBhcyBhIGJ5dGUgc3RyaW5nLlxuIgorIlxuIgorIk5vdGhpbmcgaXMgZWNob2VkIHRvIHRoZSBjb25zb2xlLiBUaGlzIGNhbGwgd2lsbCBibG9jayBpZiBhIGtleXByZXNzIGlzXG4iCisibm90IGFscmVhZHkgYXZhaWxhYmxlLCBidXQgd2lsbCBub3Qgd2FpdCBmb3IgRW50ZXIgdG8gYmUgcHJlc3NlZC4gSWYgdGhlXG4iCisicHJlc3NlZCBrZXkgd2FzIGEgc3BlY2lhbCBmdW5jdGlvbiBrZXksIHRoaXMgd2lsbCByZXR1cm4gXCdcXDAwMFwnIG9yXG4iCisiXCdcXHhlMFwnOyB0aGUgbmV4dCBjYWxsIHdpbGwgcmV0dXJuIHRoZSBrZXljb2RlLiBUaGUgQ29udHJvbC1DIGtleXByZXNzXG4iCisiY2Fubm90IGJlIHJlYWQgd2l0aCB0aGlzIGZ1bmN0aW9uLiIpOworCisjZGVmaW5lIE1TVkNSVF9HRVRDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldGNoLCBNRVRIX05PQVJHUywgbXN2Y3J0X2dldGNoX19kb2NfX30sCisKK3N0YXRpYyBpbnQKK21zdmNydF9nZXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldGNoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBzWzFdOworCisgICAgc1swXSA9IG1zdmNydF9nZXRjaF9pbXBsKG1vZHVsZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCAxKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfZ2V0d2NoX19kb2NfXywKKyJnZXR3Y2goJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoKCksIHJldHVybmluZyBhIFVuaWNvZGUgdmFsdWUuIik7CisKKyNkZWZpbmUgTVNWQ1JUX0dFVFdDSF9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0d2NoIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXR3Y2gsIE1FVEhfTk9BUkdTLCBtc3ZjcnRfZ2V0d2NoX19kb2NfX30sCisKK3N0YXRpYyB3Y2hhcl90Cittc3ZjcnRfZ2V0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfZ2V0d2NoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgd2NoYXJfdCBfcmV0dXJuX3ZhbHVlOworCisgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9nZXR3Y2hfaW1wbChtb2R1bGUpOworICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChfcmV0dXJuX3ZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfZ2V0Y2hlX19kb2NfXywKKyJnZXRjaGUoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlNpbWlsYXIgdG8gZ2V0Y2goKSwgYnV0IHRoZSBrZXlwcmVzcyB3aWxsIGJlIGVjaG9lZCBpZiBwb3NzaWJsZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUQ0hFX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRjaGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldGNoZSwgTUVUSF9OT0FSR1MsIG1zdmNydF9nZXRjaGVfX2RvY19ffSwKKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldGNoZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgc1sxXTsKKworICAgIHNbMF0gPSBtc3ZjcnRfZ2V0Y2hlX2ltcGwobW9kdWxlKTsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF9nZXR3Y2hlX19kb2NfXywKKyJnZXR3Y2hlKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaGUoKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfR0VUV0NIRV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0d2NoZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0d2NoZSwgTUVUSF9OT0FSR1MsIG1zdmNydF9nZXR3Y2hlX19kb2NfX30sCisKK3N0YXRpYyB3Y2hhcl90Cittc3ZjcnRfZ2V0d2NoZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X2dldHdjaGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICB3Y2hhcl90IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldHdjaGVfaW1wbChtb2R1bGUpOworICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChfcmV0dXJuX3ZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfcHV0Y2hfX2RvY19fLAorInB1dGNoKCRtb2R1bGUsIGNoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJQcmludCB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byB0aGUgY29uc29sZSB3aXRob3V0IGJ1ZmZlcmluZy4iKTsKKworI2RlZmluZSBNU1ZDUlRfUFVUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InB1dGNoIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9wdXRjaCwgTUVUSF9PLCBtc3ZjcnRfcHV0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9wdXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNoYXIgY2hhcl92YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfcHV0Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBjaGFyIGNoYXJfdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfcHV0d2NoX19kb2NfXywKKyJwdXR3Y2goJG1vZHVsZSwgdW5pY29kZV9jaGFyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2lkZSBjaGFyIHZhcmlhbnQgb2YgcHV0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfUFVUV0NIX01FVEhPRERFRiAgICBcCisgICAgeyJwdXR3Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3B1dHdjaCwgTUVUSF9PLCBtc3ZjcnRfcHV0d2NoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfcHV0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHVuaWNvZGVfY2hhcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfcHV0d2NoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHVuaWNvZGVfY2hhcjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF91bmdldGNoX19kb2NfXywKKyJ1bmdldGNoKCRtb2R1bGUsIGNoYXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJPcHBvc2l0ZSBvZiBnZXRjaC5cbiIKKyJcbiIKKyJDYXVzZSB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byBiZSBcInB1c2hlZCBiYWNrXCIgaW50byB0aGVcbiIKKyJjb25zb2xlIGJ1ZmZlcjsgaXQgd2lsbCBiZSB0aGUgbmV4dCBjaGFyYWN0ZXIgcmVhZCBieVxuIgorImdldGNoKCkgb3IgZ2V0Y2hlKCkuIik7CisKKyNkZWZpbmUgTVNWQ1JUX1VOR0VUQ0hfTUVUSE9EREVGICAgIFwKKyAgICB7InVuZ2V0Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3VuZ2V0Y2gsIE1FVEhfTywgbXN2Y3J0X3VuZ2V0Y2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF91bmdldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgY2hhciBjaGFyX3ZhbHVlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF91bmdldGNoKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgY2hhciBjaGFyX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKG1zdmNydF91bmdldHdjaF9fZG9jX18sCisidW5nZXR3Y2goJG1vZHVsZSwgdW5pY29kZV9jaGFyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV2lkZSBjaGFyIHZhcmlhbnQgb2YgdW5nZXRjaCgpLCBhY2NlcHRpbmcgYSBVbmljb2RlIHZhbHVlLiIpOworCisjZGVmaW5lIE1TVkNSVF9VTkdFVFdDSF9NRVRIT0RERUYgICAgXAorICAgIHsidW5nZXR3Y2giLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X3VuZ2V0d2NoLCBNRVRIX08sIG1zdmNydF91bmdldHdjaF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X3VuZ2V0d2NoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHVuaWNvZGVfY2hhcik7CisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfdW5nZXR3Y2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgdW5pY29kZV9jaGFyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoX0RFQlVHKQorCitQeURvY19TVFJWQVIobXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfX2RvY19fLAorIkNydFNldFJlcG9ydEZpbGUoJG1vZHVsZSwgdHlwZSwgZmlsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRGaWxlLlxuIgorIlxuIgorIk9ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4iKTsKKworI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3J0U2V0UmVwb3J0RmlsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdHlwZSwgaW50IGZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X0NydFNldFJlcG9ydEZpbGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHR5cGU7CisgICAgaW50IGZpbGU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRGaWxlIiwKKyAgICAgICAgJnR5cGUsICZmaWxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKG1vZHVsZSwgdHlwZSwgZmlsZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9ERUJVRykgKi8KKworI2lmIGRlZmluZWQoX0RFQlVHKQorCitQeURvY19TVFJWQVIobXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfX2RvY19fLAorIkNydFNldFJlcG9ydE1vZGUoJG1vZHVsZSwgdHlwZSwgbW9kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRNb2RlLlxuIgorIlxuIgorIk9ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4iKTsKKworI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3J0U2V0UmVwb3J0TW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9fZG9jX199LAorCitzdGF0aWMgbG9uZworbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdHlwZSwgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X0NydFNldFJlcG9ydE1vZGUoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHR5cGU7CisgICAgaW50IG1vZGU7CisgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRNb2RlIiwKKyAgICAgICAgJnR5cGUsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKG1vZHVsZSwgdHlwZSwgbW9kZSk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9ERUJVRykgKi8KKworI2lmIGRlZmluZWQoX0RFQlVHKQorCitQeURvY19TVFJWQVIobXN2Y3J0X3NldF9lcnJvcl9tb2RlX19kb2NfXywKKyJzZXRfZXJyb3JfbW9kZSgkbW9kdWxlLCBtb2RlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JhcHBlciBhcm91bmQgX3NldF9lcnJvcl9tb2RlLlxuIgorIlxuIgorIk9ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4iKTsKKworI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9lcnJvcl9tb2RlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9zZXRfZXJyb3JfbW9kZSwgTUVUSF9PLCBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfX2RvY19ffSwKKworc3RhdGljIGxvbmcKK21zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9zZXRfZXJyb3JfbW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBtb2RlOworICAgIGxvbmcgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfaW1wbChtb2R1bGUsIG1vZGUpOworICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChfREVCVUcpICovCisKK1B5RG9jX1NUUlZBUihtc3ZjcnRfU2V0RXJyb3JNb2RlX19kb2NfXywKKyJTZXRFcnJvck1vZGUoJG1vZHVsZSwgbW9kZSwgLylcbiIKKyItLVxuIgorIlxuIgorIldyYXBwZXIgYXJvdW5kIFNldEVycm9yTW9kZS4iKTsKKworI2RlZmluZSBNU1ZDUlRfU0VURVJST1JNT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRFcnJvck1vZGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X1NldEVycm9yTW9kZSwgTUVUSF9PLCBtc3ZjcnRfU2V0RXJyb3JNb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdW5zaWduZWQgaW50IG1vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorbXN2Y3J0X1NldEVycm9yTW9kZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHVuc2lnbmVkIGludCBtb2RlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOlNldEVycm9yTW9kZSIsICZtb2RlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9TZXRFcnJvck1vZGVfaW1wbChtb2R1bGUsIG1vZGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZm5kZWYgTVNWQ1JUX0NSVFNFVFJFUE9SVEZJTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfQ1JUU0VUUkVQT1JURklMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgTVNWQ1JUX0NSVFNFVFJFUE9SVE1PREVfTUVUSE9EREVGCisgICAgI2RlZmluZSBNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfQ1JUU0VUUkVQT1JUTU9ERV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTY2MTNkMzExOWExZmQ0NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2lucmVnLmMuaCBiL1BDL2NsaW5pYy93aW5yZWcuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjMzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvd2lucmVnLmMuaApAQCAtMCwwICsxLDEwNTkgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUih3aW5yZWdfSEtFWVR5cGVfQ2xvc2VfX2RvY19fLAorIkNsb3NlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIFdpbmRvd3MgaGFuZGxlLlxuIgorIlxuIgorIklmIHRoZSBoYW5kbGUgaXMgYWxyZWFkeSBjbG9zZWQsIG5vIGVycm9yIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7IkNsb3NlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9DbG9zZSwgTUVUSF9OT0FSR1MsIHdpbnJlZ19IS0VZVHlwZV9DbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0Nsb3NlX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9DbG9zZShQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHdpbnJlZ19IS0VZVHlwZV9DbG9zZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0hLRVlUeXBlX0RldGFjaF9fZG9jX18sCisiRGV0YWNoKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRGV0YWNoZXMgdGhlIFdpbmRvd3MgaGFuZGxlIGZyb20gdGhlIGhhbmRsZSBvYmplY3QuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyB0aGUgdmFsdWUgb2YgdGhlIGhhbmRsZSBiZWZvcmUgaXQgaXMgZGV0YWNoZWQuICBJZiB0aGVcbiIKKyJoYW5kbGUgaXMgYWxyZWFkeSBkZXRhY2hlZCwgdGhpcyB3aWxsIHJldHVybiB6ZXJvLlxuIgorIlxuIgorIkFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIGhhbmRsZSBpcyBlZmZlY3RpdmVseSBpbnZhbGlkYXRlZCxcbiIKKyJidXQgdGhlIGhhbmRsZSBpcyBub3QgY2xvc2VkLiAgWW91IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHlvdVxuIgorIm5lZWQgdGhlIHVuZGVybHlpbmcgd2luMzIgaGFuZGxlIHRvIGV4aXN0IGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlXG4iCisiaGFuZGxlIG9iamVjdC4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfREVUQUNIX01FVEhPRERFRiAgICBcCisgICAgeyJEZXRhY2giLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX0RldGFjaCwgTUVUSF9OT0FSR1MsIHdpbnJlZ19IS0VZVHlwZV9EZXRhY2hfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9EZXRhY2hfaW1wbChQeUhLRVlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX0RldGFjaChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIHdpbnJlZ19IS0VZVHlwZV9EZXRhY2hfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19IS0VZVHlwZV9fX2VudGVyX19fX2RvY19fLAorIl9fZW50ZXJfXygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgV0lOUkVHX0hLRVlUWVBFX19fRU5URVJfX19NRVRIT0RERUYgICAgXAorICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2VudGVyX18sIE1FVEhfTk9BUkdTLCB3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fX19kb2NfX30sCisKK3N0YXRpYyBQeUhLRVlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZW50ZXJfX19pbXBsKFB5SEtFWU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfSEtFWVR5cGVfX19lbnRlcl9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeUhLRVlPYmplY3QgKl9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0hLRVlUeXBlX19fZW50ZXJfX19pbXBsKHNlbGYpOworICAgIHJldHVybl92YWx1ZSA9IChQeU9iamVjdCAqKV9yZXR1cm5fdmFsdWU7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfXywKKyJfX2V4aXRfXygkc2VsZiwgLywgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGICAgIFwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXyhQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpleGNfdHlwZTsKKyAgICBQeU9iamVjdCAqZXhjX3ZhbHVlOworICAgIFB5T2JqZWN0ICp0cmFjZWJhY2s7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT086X19leGl0X18iLCBfa2V5d29yZHMsCisgICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfQ2xvc2VLZXlfX2RvY19fLAorIkNsb3NlS2V5KCRtb2R1bGUsIGhrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZXMgYSBwcmV2aW91c2x5IG9wZW5lZCByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBoa2V5XG4iCisiICAgIEEgcHJldmlvdXNseSBvcGVuZWQga2V5LlxuIgorIlxuIgorIk5vdGUgdGhhdCBpZiB0aGUga2V5IGlzIG5vdCBjbG9zZWQgdXNpbmcgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmVcbiIKKyJjbG9zZWQgd2hlbiB0aGUgaGtleSBvYmplY3QgaXMgZGVzdHJveWVkIGJ5IFB5dGhvbi4iKTsKKworI2RlZmluZSBXSU5SRUdfQ0xPU0VLRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IkNsb3NlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DbG9zZUtleSwgTUVUSF9PLCB3aW5yZWdfQ2xvc2VLZXlfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKHdpbnJlZ19Db25uZWN0UmVnaXN0cnlfX2RvY19fLAorIkNvbm5lY3RSZWdpc3RyeSgkbW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gdGhlIHJlZ2lzdHJ5IG9uIG9uIGFub3RoZXIgY29tcHV0ZXIuXG4iCisiXG4iCisiICBjb21wdXRlcl9uYW1lXG4iCisiICAgIFRoZSBuYW1lIG9mIHRoZSByZW1vdGUgY29tcHV0ZXIsIG9mIHRoZSBmb3JtIHJcIlxcXFxjb21wdXRlcm5hbWVcIi4gIElmXG4iCisiICAgIE5vbmUsIHRoZSBsb2NhbCBjb21wdXRlciBpcyB1c2VkLlxuIgorIiAga2V5XG4iCisiICAgIFRoZSBwcmVkZWZpbmVkIGtleSB0byBjb25uZWN0IHRvLlxuIgorIlxuIgorIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKKyJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBXSU5SRUdfQ09OTkVDVFJFR0lTVFJZX01FVEhPRERFRiAgICBcCisgICAgeyJDb25uZWN0UmVnaXN0cnkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0Nvbm5lY3RSZWdpc3RyeSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tcHV0ZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X1VOSUNPREUgKmNvbXB1dGVyX25hbWU7CisgICAgSEtFWSBrZXk7CisgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaTyY6Q29ubmVjdFJlZ2lzdHJ5IiwKKyAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKG1vZHVsZSwgY29tcHV0ZXJfbmFtZSwga2V5KTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfQ3JlYXRlS2V5X19kb2NfXywKKyJDcmVhdGVLZXkoJG1vZHVsZSwga2V5LCBzdWJfa2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgorIlxuIgorIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgorInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgorIlxuIgorIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS5cbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiQ3JlYXRlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0NyZWF0ZUtleV9fZG9jX199LAorCitzdGF0aWMgSEtFWQord2lucmVnX0NyZWF0ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19DcmVhdGVLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpDcmVhdGVLZXkiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOworICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX18sCisiQ3JlYXRlS2V5RXgoJG1vZHVsZSwgLywga2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLFxuIgorIiAgICAgICAgICAgIGFjY2Vzcz13aW5yZWcuS0VZX1dSSVRFKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlcyBvciBvcGVucyB0aGUgc3BlY2lmaWVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlXG4iCisiICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XUklURS5cbiIKKyJcbiIKKyJJZiBrZXkgaXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGtleXMsIHN1Yl9rZXkgbWF5IGJlIE5vbmUuIEluIHRoYXQgY2FzZSxcbiIKKyJ0aGUgaGFuZGxlIHJldHVybmVkIGlzIHRoZSBzYW1lIGtleSBoYW5kbGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbi5cbiIKKyJcbiIKKyJJZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzLCB0aGlzIGZ1bmN0aW9uIG9wZW5zIHRoZSBleGlzdGluZyBrZXlcbiIKKyJcbiIKKyJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRiAgICBcCisgICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKKworc3RhdGljIEhLRVkKK3dpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19DcmVhdGVLZXlFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgaW50IHJlc2VydmVkID0gMDsKKyAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dSSVRFOworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0RlbGV0ZUtleV9fZG9jX18sCisiRGVsZXRlS2V5KCRtb2R1bGUsIGtleSwgc3ViX2tleSwgLylcbiIKKyItLVxuIgorIlxuIgorIkRlbGV0ZXMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5XG4iCisiICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3RcbiIKKyIgICAgaGF2ZSBzdWJrZXlzLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgorIlxuIgorIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKKyJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiRGVsZXRlS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXksIE1FVEhfVkFSQVJHUywgd2lucmVnX0RlbGV0ZUtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0RlbGV0ZUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19EZWxldGVLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OkRlbGV0ZUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0RlbGV0ZUtleUV4X19kb2NfXywKKyJEZWxldGVLZXlFeCgkbW9kdWxlLCAvLCBrZXksIHN1Yl9rZXksIGFjY2Vzcz13aW5yZWcuS0VZX1dPVzY0XzY0S0VZLFxuIgorIiAgICAgICAgICAgIHJlc2VydmVkPTApXG4iCisiLS1cbiIKKyJcbiIKKyJEZWxldGVzIHRoZSBzcGVjaWZpZWQga2V5ICg2NC1iaXQgT1Mgb25seSkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IG11c3QgYmUgdGhlIG5hbWUgb2YgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5XG4iCisiICAgIHRoZSBrZXkgcGFyYW1ldGVyLiBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIE5vbmUsIGFuZCB0aGUga2V5IG1heSBub3RcbiIKKyIgICAgaGF2ZSBzdWJrZXlzLlxuIgorIiAgYWNjZXNzXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgYW4gYWNjZXNzIG1hc2sgdGhhdCBkZXNjcmliZXMgdGhlXG4iCisiICAgIGRlc2lyZWQgc2VjdXJpdHkgYWNjZXNzIGZvciB0aGUga2V5LiBEZWZhdWx0IGlzIEtFWV9XT1c2NF82NEtFWS5cbiIKKyIgIHJlc2VydmVkXG4iCisiICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciwgYW5kIG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKKyJcbiIKKyJUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy5cbiIKKyJcbiIKKyJJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsXG4iCisiaXMgcmVtb3ZlZC4gIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLlxuIgorIk9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIFdJTlJFR19ERUxFVEVLRVlFWF9NRVRIT0RERUYgICAgXAorICAgIHsiRGVsZXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlS2V5RXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJhY2Nlc3MiLCAicmVzZXJ2ZWQiLCBOVUxMfTsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV09XNjRfNjRLRVk7CisgICAgaW50IHJlc2VydmVkID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0RlbGV0ZVZhbHVlX19kb2NfXywKKyJEZWxldGVWYWx1ZSgkbW9kdWxlLCBrZXksIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVtb3ZlcyBhIG5hbWVkIHZhbHVlIGZyb20gYSByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgdmFsdWVcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSB2YWx1ZSB0byByZW1vdmUuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RFTEVURVZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJEZWxldGVWYWx1ZSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlVmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX0RlbGV0ZVZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0RlbGV0ZVZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6RGVsZXRlVmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRW51bUtleV9fZG9jX18sCisiRW51bUtleSgkbW9kdWxlLCBrZXksIGluZGV4LCAvKVxuIgorIi0tXG4iCisiXG4iCisiRW51bWVyYXRlcyBzdWJrZXlzIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIGluZGV4XG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUga2V5IHRvIHJldHJpZXZlLlxuIgorIlxuIgorIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgorIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpc1xuIgorInJhaXNlZCwgaW5kaWNhdGluZyBubyBtb3JlIHZhbHVlcyBhcmUgYXZhaWxhYmxlLiIpOworCisjZGVmaW5lIFdJTlJFR19FTlVNS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJFbnVtS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FbnVtS2V5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19FbnVtS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW51bUtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBpbnQgaW5kZXgpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VudW1LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgaW50IGluZGV4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bUtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtS2V5X2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0VudW1WYWx1ZV9fZG9jX18sCisiRW51bVZhbHVlKCRtb2R1bGUsIGtleSwgaW5kZXgsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFbnVtZXJhdGVzIHZhbHVlcyBvZiBhbiBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBpbmRleFxuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlLlxuIgorIlxuIgorIlRoZSBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIG5hbWUgb2Ygb25lIHN1YmtleSBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLlxuIgorIkl0IGlzIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb25cbiIKKyJpcyByYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6XG4iCisiICB2YWx1ZV9uYW1lXG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgdmFsdWUuXG4iCisiICB2YWx1ZV9kYXRhXG4iCisiICAgIEFuIG9iamVjdCB0aGF0IGhvbGRzIHRoZSB2YWx1ZSBkYXRhLCBhbmQgd2hvc2UgdHlwZSBkZXBlbmRzXG4iCisiICAgIG9uIHRoZSB1bmRlcmx5aW5nIHJlZ2lzdHJ5IHR5cGUuXG4iCisiICBkYXRhX3R5cGVcbiIKKyIgICAgQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIGRhdGEuIik7CisKKyNkZWZpbmUgV0lOUkVHX0VOVU1WQUxVRV9NRVRIT0RERUYgICAgXAorICAgIHsiRW51bVZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19FbnVtVmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX0VudW1WYWx1ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VudW1WYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBpbnQgaW5kZXgpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VudW1WYWx1ZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtVmFsdWUiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19fZG9jX18sCisiRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKCRtb2R1bGUsIHN0cmluZywgLylcbiIKKyItLVxuIgorIlxuIgorIkV4cGFuZCBlbnZpcm9ubWVudCB2YXJzLiIpOworCisjZGVmaW5lIFdJTlJFR19FWFBBTkRFTlZJUk9OTUVOVFNUUklOR1NfTUVUSE9EREVGICAgIFwKKyAgICB7IkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsIChQeUNGdW5jdGlvbil3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzLCBNRVRIX08sIHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9VTklDT0RFICpzdHJpbmcpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5ncyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X1VOSUNPREUgKnN0cmluZzsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChtb2R1bGUsIHN0cmluZyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19GbHVzaEtleV9fZG9jX18sCisiRmx1c2hLZXkoJG1vZHVsZSwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIGFsbCB0aGUgYXR0cmlidXRlcyBvZiBhIGtleSB0byB0aGUgcmVnaXN0cnkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIlxuIgorIkl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBGbHVzaEtleSB0byBjaGFuZ2UgYSBrZXkuICBSZWdpc3RyeSBjaGFuZ2VzXG4iCisiYXJlIGZsdXNoZWQgdG8gZGlzayBieSB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIGxhenkgZmx1c2hlci4gIFJlZ2lzdHJ5XG4iCisiY2hhbmdlcyBhcmUgYWxzbyBmbHVzaGVkIHRvIGRpc2sgYXQgc3lzdGVtIHNodXRkb3duLiAgVW5saWtlXG4iCisiQ2xvc2VLZXkoKSwgdGhlIEZsdXNoS2V5KCkgbWV0aG9kIHJldHVybnMgb25seSB3aGVuIGFsbCB0aGUgZGF0YSBoYXNcbiIKKyJiZWVuIHdyaXR0ZW4gdG8gdGhlIHJlZ2lzdHJ5LlxuIgorIlxuIgorIkFuIGFwcGxpY2F0aW9uIHNob3VsZCBvbmx5IGNhbGwgRmx1c2hLZXkoKSBpZiBpdCByZXF1aXJlcyBhYnNvbHV0ZVxuIgorImNlcnRhaW50eSB0aGF0IHJlZ2lzdHJ5IGNoYW5nZXMgYXJlIG9uIGRpc2suICBJZiB5b3UgZG9uXCd0IGtub3cgd2hldGhlclxuIgorImEgRmx1c2hLZXkoKSBjYWxsIGlzIHJlcXVpcmVkLCBpdCBwcm9iYWJseSBpc25cJ3QuIik7CisKKyNkZWZpbmUgV0lOUkVHX0ZMVVNIS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJGbHVzaEtleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRmx1c2hLZXksIE1FVEhfTywgd2lucmVnX0ZsdXNoS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRmx1c2hLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRmx1c2hLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0ZsdXNoS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfTG9hZEtleV9fZG9jX18sCisiTG9hZEtleSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIGZpbGVfbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkluc2VydCBkYXRhIGludG8gdGhlIHJlZ2lzdHJ5IGZyb20gYSBmaWxlLlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZSBzdWIta2V5IHRvIGxvYWQuXG4iCisiICBmaWxlX25hbWVcbiIKKyIgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gbG9hZCByZWdpc3RyeSBkYXRhIGZyb20uICBUaGlzIGZpbGUgbXVzdFxuIgorIiAgICBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZSBTYXZlS2V5KCkgZnVuY3Rpb24uICBVbmRlciB0aGUgZmlsZVxuIgorIiAgICBhbGxvY2F0aW9uIHRhYmxlIChGQVQpIGZpbGUgc3lzdGVtLCB0aGUgZmlsZW5hbWUgbWF5IG5vdCBoYXZlIGFuXG4iCisiICAgIGV4dGVuc2lvbi5cbiIKKyJcbiIKKyJDcmVhdGVzIGEgc3Via2V5IHVuZGVyIHRoZSBzcGVjaWZpZWQga2V5IGFuZCBzdG9yZXMgcmVnaXN0cmF0aW9uXG4iCisiaW5mb3JtYXRpb24gZnJvbSBhIHNwZWNpZmllZCBmaWxlIGludG8gdGhhdCBzdWJrZXkuXG4iCisiXG4iCisiQSBjYWxsIHRvIExvYWRLZXkoKSBmYWlscyBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGRvZXMgbm90IGhhdmUgdGhlXG4iCisiU0VfUkVTVE9SRV9QUklWSUxFR0UgcHJpdmlsZWdlLlxuIgorIlxuIgorIklmIGtleSBpcyBhIGhhbmRsZSByZXR1cm5lZCBieSBDb25uZWN0UmVnaXN0cnkoKSwgdGhlbiB0aGUgcGF0aFxuIgorInNwZWNpZmllZCBpbiBmaWxlTmFtZSBpcyByZWxhdGl2ZSB0byB0aGUgcmVtb3RlIGNvbXB1dGVyLlxuIgorIlxuIgorIlRoZSBNU0ROIGRvY3MgaW1wbHkga2V5IG11c3QgYmUgaW4gdGhlIEhLRVlfVVNFUiBvciBIS0VZX0xPQ0FMX01BQ0hJTkVcbiIKKyJ0cmVlLiIpOworCisjZGVmaW5lIFdJTlJFR19MT0FES0VZX01FVEhPRERFRiAgICBcCisgICAgeyJMb2FkS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19Mb2FkS2V5LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19Mb2FkS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfTG9hZEtleV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAorICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmaWxlX25hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0xvYWRLZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdXU6TG9hZEtleSIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0xvYWRLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX09wZW5LZXlfX2RvY19fLAorIk9wZW5LZXkoJG1vZHVsZSwgLywga2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9d2lucmVnLktFWV9SRUFEKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi5cbiIKKyIgIHJlc2VydmVkXG4iCisiICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciB0aGF0IG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKKyIgIGFjY2Vzc1xuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBkZXNpcmVkXG4iCisiICAgIHNlY3VyaXR5IGFjY2VzcyBmb3IgdGhlIGtleS4gIERlZmF1bHQgaXMgS0VZX1JFQUQuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX09QRU5LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAorCitzdGF0aWMgSEtFWQord2lucmVnX09wZW5LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19PcGVuS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKKyAgICBpbnQgcmVzZXJ2ZWQgPSAwOworICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKKyAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfT3BlbktleUV4X19kb2NfXywKKyJPcGVuS2V5RXgoJG1vZHVsZSwgLywga2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9d2lucmVnLktFWV9SRUFEKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgc3ViX2tleVxuIgorIiAgICBBIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIHN1Yl9rZXkgdG8gb3Blbi5cbiIKKyIgIHJlc2VydmVkXG4iCisiICAgIEEgcmVzZXJ2ZWQgaW50ZWdlciB0aGF0IG11c3QgYmUgemVyby4gIERlZmF1bHQgaXMgemVyby5cbiIKKyIgIGFjY2Vzc1xuIgorIiAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBkZXNpcmVkXG4iCisiICAgIHNlY3VyaXR5IGFjY2VzcyBmb3IgdGhlIGtleS4gIERlZmF1bHQgaXMgS0VZX1JFQUQuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIG5ldyBoYW5kbGUgdG8gdGhlIHNwZWNpZmllZCBrZXkuXG4iCisiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX09QRU5LRVlFWF9NRVRIT0RERUYgICAgXAorICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleUV4X19kb2NfX30sCisKK3N0YXRpYyBIS0VZCit3aW5yZWdfT3BlbktleUV4X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCisgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19PcGVuS2V5RXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICpzdWJfa2V5OworICAgIGludCByZXNlcnZlZCA9IDA7CisgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOworICAgIEhLRVkgX3JldHVybl92YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX09wZW5LZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlJbmZvS2V5X19kb2NfXywKKyJRdWVyeUluZm9LZXkoJG1vZHVsZSwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiXG4iCisiVGhlIHJlc3VsdCBpcyBhIHR1cGxlIG9mIDMgaXRlbXM6XG4iCisiQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiBzdWIga2V5cyB0aGlzIGtleSBoYXMuXG4iCisiQW4gaW50ZWdlciB0aGF0IGlkZW50aWZpZXMgdGhlIG51bWJlciBvZiB2YWx1ZXMgdGhpcyBrZXkgaGFzLlxuIgorIkFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHdoZW4gdGhlIGtleSB3YXMgbGFzdCBtb2RpZmllZCAoaWYgYXZhaWxhYmxlKVxuIgorImFzIDEwMFwncyBvZiBuYW5vc2Vjb25kcyBzaW5jZSBKYW4gMSwgMTYwMC4iKTsKKworI2RlZmluZSBXSU5SRUdfUVVFUllJTkZPS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJRdWVyeUluZm9LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX1F1ZXJ5SW5mb0tleSwgTUVUSF9PLCB3aW5yZWdfUXVlcnlJbmZvS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlJbmZvS2V5X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgSEtFWSBrZXkpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5SW5mb0tleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5SW5mb0tleV9pbXBsKG1vZHVsZSwga2V5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1F1ZXJ5VmFsdWVfX2RvY19fLAorIlF1ZXJ5VmFsdWUoJG1vZHVsZSwga2V5LCBzdWJfa2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0cmlldmVzIHRoZSB1bm5hbWVkIHZhbHVlIGZvciBhIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBzdWJfa2V5XG4iCisiICAgIEEgc3RyaW5nIHRoYXQgaG9sZHMgdGhlIG5hbWUgb2YgdGhlIHN1YmtleSB3aXRoIHdoaWNoIHRoZSB2YWx1ZVxuIgorIiAgICBpcyBhc3NvY2lhdGVkLiAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgTm9uZSBvciBlbXB0eSwgdGhlIGZ1bmN0aW9uXG4iCisiICAgIHJldHJpZXZlcyB0aGUgdmFsdWUgc2V0IGJ5IHRoZSBTZXRWYWx1ZSgpIG1ldGhvZCBmb3IgdGhlIGtleVxuIgorIiAgICBpZGVudGlmaWVkIGJ5IGtleS5cbiIKKyJcbiIKKyJWYWx1ZXMgaW4gdGhlIHJlZ2lzdHJ5IGhhdmUgbmFtZSwgdHlwZSwgYW5kIGRhdGEgY29tcG9uZW50cy4gVGhpcyBtZXRob2RcbiIKKyJyZXRyaWV2ZXMgdGhlIGRhdGEgZm9yIGEga2V5XCdzIGZpcnN0IHZhbHVlIHRoYXQgaGFzIGEgTlVMTCBuYW1lLlxuIgorIkJ1dCBzaW5jZSB0aGUgdW5kZXJseWluZyBBUEkgY2FsbCBkb2VzblwndCByZXR1cm4gdGhlIHR5cGUsIHlvdVwnbGxcbiIKKyJwcm9iYWJseSBiZSBoYXBwaWVyIHVzaW5nIFF1ZXJ5VmFsdWVFeDsgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGhlcmUgZm9yXG4iCisiY29tcGxldGVuZXNzLiIpOworCisjZGVmaW5lIFdJTlJFR19RVUVSWVZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJRdWVyeVZhbHVlIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19RdWVyeVZhbHVlLCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19RdWVyeVZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlWYWx1ZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpRdWVyeVZhbHVlIiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1F1ZXJ5VmFsdWVFeF9fZG9jX18sCisiUXVlcnlWYWx1ZUV4KCRtb2R1bGUsIGtleSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHJpZXZlcyB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgYSBzcGVjaWZpZWQgc3ViLWtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiICBuYW1lXG4iCisiICAgIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHZhbHVlIHRvIHF1ZXJ5LlxuIgorIlxuIgorIkJlaGF2ZXMgbW9zdGx5IGxpa2UgUXVlcnlWYWx1ZSgpLCBidXQgYWxzbyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZVxuIgorInNwZWNpZmllZCB2YWx1ZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCisiXG4iCisiVGhlIHJldHVybiB2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIHR5cGVfaWQuIik7CisKKyNkZWZpbmUgV0lOUkVHX1FVRVJZVkFMVUVFWF9NRVRIT0RERUYgICAgXAorICAgIHsiUXVlcnlWYWx1ZUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19RdWVyeVZhbHVlRXgsIE1FVEhfVkFSQVJHUywgd2lucmVnX1F1ZXJ5VmFsdWVFeF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVZhbHVlRXgoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisgICAgUHlfVU5JQ09ERSAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWVFeCIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1NhdmVLZXlfX2RvY19fLAorIlNhdmVLZXkoJG1vZHVsZSwga2V5LCBmaWxlX25hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJTYXZlcyB0aGUgc3BlY2lmaWVkIGtleSwgYW5kIGFsbCBpdHMgc3Via2V5cyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuXG4iCisiXG4iCisiICBrZXlcbiIKKyIgICAgQW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgorIiAgZmlsZV9uYW1lXG4iCisiICAgIFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHNhdmUgcmVnaXN0cnkgZGF0YSB0by4gIFRoaXMgZmlsZSBjYW5ub3RcbiIKKyIgICAgYWxyZWFkeSBleGlzdC4gSWYgdGhpcyBmaWxlbmFtZSBpbmNsdWRlcyBhbiBleHRlbnNpb24sIGl0IGNhbm5vdCBiZVxuIgorIiAgICB1c2VkIG9uIGZpbGUgYWxsb2NhdGlvbiB0YWJsZSAoRkFUKSBmaWxlIHN5c3RlbXMgYnkgdGhlIExvYWRLZXkoKSxcbiIKKyIgICAgUmVwbGFjZUtleSgpIG9yIFJlc3RvcmVLZXkoKSBtZXRob2RzLlxuIgorIlxuIgorIklmIGtleSByZXByZXNlbnRzIGEga2V5IG9uIGEgcmVtb3RlIGNvbXB1dGVyLCB0aGUgcGF0aCBkZXNjcmliZWQgYnlcbiIKKyJmaWxlX25hbWUgaXMgcmVsYXRpdmUgdG8gdGhlIHJlbW90ZSBjb21wdXRlci5cbiIKKyJcbiIKKyJUaGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9kIG11c3QgcG9zc2VzcyB0aGUgU2VCYWNrdXBQcml2aWxlZ2VcbiIKKyJzZWN1cml0eSBwcml2aWxlZ2UuICBUaGlzIGZ1bmN0aW9uIHBhc3NlcyBOVUxMIGZvciBzZWN1cml0eV9hdHRyaWJ1dGVzXG4iCisidG8gdGhlIEFQSS4iKTsKKworI2RlZmluZSBXSU5SRUdfU0FWRUtFWV9NRVRIT0RERUYgICAgXAorICAgIHsiU2F2ZUtleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfU2F2ZUtleSwgTUVUSF9WQVJBUkdTLCB3aW5yZWdfU2F2ZUtleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1NhdmVLZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqZmlsZV9uYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19TYXZlS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OlNhdmVLZXkiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NhdmVLZXlfaW1wbChtb2R1bGUsIGtleSwgZmlsZV9uYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX1NldFZhbHVlX19kb2NfXywKKyJTZXRWYWx1ZSgkbW9kdWxlLCBrZXksIHN1Yl9rZXksIHR5cGUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQXNzb2NpYXRlcyBhIHZhbHVlIHdpdGggYSBzcGVjaWZpZWQga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHN1Yl9rZXlcbiIKKyIgICAgQSBzdHJpbmcgdGhhdCBuYW1lcyB0aGUgc3Via2V5IHdpdGggd2hpY2ggdGhlIHZhbHVlIGlzIGFzc29jaWF0ZWQuXG4iCisiICB0eXBlXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEuICBDdXJyZW50bHkgdGhpcyBtdXN0XG4iCisiICAgIGJlIFJFR19TWiwgbWVhbmluZyBvbmx5IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC5cbiIKKyIgIHZhbHVlXG4iCisiICAgIEEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBuZXcgdmFsdWUuXG4iCisiXG4iCisiSWYgdGhlIGtleSBzcGVjaWZpZWQgYnkgdGhlIHN1Yl9rZXkgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0LCB0aGVcbiIKKyJTZXRWYWx1ZSBmdW5jdGlvbiBjcmVhdGVzIGl0LlxuIgorIlxuIgorIlZhbHVlIGxlbmd0aHMgYXJlIGxpbWl0ZWQgYnkgYXZhaWxhYmxlIG1lbW9yeS4gTG9uZyB2YWx1ZXMgKG1vcmUgdGhhblxuIgorIjIwNDggYnl0ZXMpIHNob3VsZCBiZSBzdG9yZWQgYXMgZmlsZXMgd2l0aCB0aGUgZmlsZW5hbWVzIHN0b3JlZCBpblxuIgorInRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdHJ5IHRvIGhlbHAgdGhlIHJlZ2lzdHJ5IHBlcmZvcm0gZWZmaWNpZW50bHkuXG4iCisiXG4iCisiVGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXkgcGFyYW1ldGVyIG11c3QgaGF2ZSBiZWVuIG9wZW5lZCB3aXRoXG4iCisiS0VZX1NFVF9WQUxVRSBhY2Nlc3MuIik7CisKKyNkZWZpbmUgV0lOUkVHX1NFVFZBTFVFX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRWYWx1ZSIsIChQeUNGdW5jdGlvbil3aW5yZWdfU2V0VmFsdWUsIE1FVEhfVkFSQVJHUywgd2lucmVnX1NldFZhbHVlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKKyAgICAgICAgICAgICAgICAgICAgIERXT1JEIHR5cGUsIFB5X1VOSUNPREUgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfY2xlYW5fdCB2YWx1ZV9sZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX1NldFZhbHVlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CisgICAgRFdPUkQgdHlwZTsKKyAgICBQeV9VTklDT0RFICp2YWx1ZTsKKyAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaa3UjOlNldFZhbHVlIiwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIHZhbHVlX2xlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnJlZ19TZXRWYWx1ZUV4X19kb2NfXywKKyJTZXRWYWx1ZUV4KCRtb2R1bGUsIGtleSwgdmFsdWVfbmFtZSwgcmVzZXJ2ZWQsIHR5cGUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU3RvcmVzIGRhdGEgaW4gdGhlIHZhbHVlIGZpZWxkIG9mIGFuIG9wZW4gcmVnaXN0cnkga2V5LlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyIgIHZhbHVlX25hbWVcbiIKKyIgICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgdmFsdWUgdG8gc2V0LCBvciBOb25lLlxuIgorIiAgcmVzZXJ2ZWRcbiIKKyIgICAgQ2FuIGJlIGFueXRoaW5nIC0gemVybyBpcyBhbHdheXMgcGFzc2VkIHRvIHRoZSBBUEkuXG4iCisiICB0eXBlXG4iCisiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjpcbiIKKyIgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKKyIgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKKyIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LlxuIgorIiAgICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZFxuIgorIiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgZXhhbXBsZSxcbiIKKyIgICAgICAgICAgICAgICAgICAgICAlUEFUSCUpLlxuIgorIiAgICBSRUdfTElOSyAtLSBBIFVuaWNvZGUgc3ltYm9saWMgbGluay5cbiIKKyIgICAgUkVHX01VTFRJX1NaIC0tIEFuIHNlcXVlbmNlIG9mIG51bGwtdGVybWluYXRlZCBzdHJpbmdzLCB0ZXJtaW5hdGVkXG4iCisiICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzXG4iCisiICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCisiICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS5cbiIKKyIgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCisiICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCisiICB2YWx1ZVxuIgorIiAgICBBIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbmV3IHZhbHVlLlxuIgorIlxuIgorIlRoaXMgbWV0aG9kIGNhbiBhbHNvIHNldCBhZGRpdGlvbmFsIHZhbHVlIGFuZCB0eXBlIGluZm9ybWF0aW9uIGZvciB0aGVcbiIKKyJzcGVjaWZpZWQga2V5LiAgVGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXkgcGFyYW1ldGVyIG11c3QgaGF2ZSBiZWVuXG4iCisib3BlbmVkIHdpdGggS0VZX1NFVF9WQUxVRSBhY2Nlc3MuXG4iCisiXG4iCisiVG8gb3BlbiB0aGUga2V5LCB1c2UgdGhlIENyZWF0ZUtleUV4KCkgb3IgT3BlbktleUV4KCkgbWV0aG9kcy5cbiIKKyJcbiIKKyJWYWx1ZSBsZW5ndGhzIGFyZSBsaW1pdGVkIGJ5IGF2YWlsYWJsZSBtZW1vcnkuIExvbmcgdmFsdWVzIChtb3JlIHRoYW5cbiIKKyIyMDQ4IGJ5dGVzKSBzaG91bGQgYmUgc3RvcmVkIGFzIGZpbGVzIHdpdGggdGhlIGZpbGVuYW1lcyBzdG9yZWQgaW5cbiIKKyJ0aGUgY29uZmlndXJhdGlvbiByZWdpc3RyeSB0byBoZWxwIHRoZSByZWdpc3RyeSBwZXJmb3JtIGVmZmljaWVudGx5LiIpOworCisjZGVmaW5lIFdJTlJFR19TRVRWQUxVRUVYX01FVEhPRERFRiAgICBcCisgICAgeyJTZXRWYWx1ZUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19TZXRWYWx1ZUV4LCBNRVRIX1ZBUkFSR1MsIHdpbnJlZ19TZXRWYWx1ZUV4X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICp2YWx1ZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzZXJ2ZWQsIERXT1JEIHR5cGUsIFB5T2JqZWN0ICp2YWx1ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfU2V0VmFsdWVFeChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKyAgICBQeV9VTklDT0RFICp2YWx1ZV9uYW1lOworICAgIFB5T2JqZWN0ICpyZXNlcnZlZDsKKyAgICBEV09SRCB0eXBlOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaT2tPOlNldFZhbHVlRXgiLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZV9uYW1lLCAmcmVzZXJ2ZWQsICZ0eXBlLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgdmFsdWVfbmFtZSwgcmVzZXJ2ZWQsIHR5cGUsIHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIod2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X19kb2NfXywKKyJEaXNhYmxlUmVmbGVjdGlvbktleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJEaXNhYmxlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciAzMmJpdCBwcm9jZXNzZXMgcnVubmluZyBvbiBhIDY0Yml0IE9TLlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLlxuIgorIlxuIgorIklmIHRoZSBrZXkgaXMgbm90IG9uIHRoZSByZWZsZWN0aW9uIGxpc3QsIHRoZSBmdW5jdGlvbiBzdWNjZWVkcyBidXQgaGFzXG4iCisibm8gZWZmZWN0LiAgRGlzYWJsaW5nIHJlZmxlY3Rpb24gZm9yIGEga2V5IGRvZXMgbm90IGFmZmVjdCByZWZsZWN0aW9uXG4iCisib2YgYW55IHN1YmtleXMuIik7CisKKyNkZWZpbmUgV0lOUkVHX0RJU0FCTEVSRUZMRUNUSU9OS0VZX01FVEhPRERFRiAgICBcCisgICAgeyJEaXNhYmxlUmVmbGVjdGlvbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXksIE1FVEhfTywgd2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBIS0VZIGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RGlzYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9fZG9jX18sCisiRW5hYmxlUmVmbGVjdGlvbktleSgkbW9kdWxlLCBrZXksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXN0b3JlcyByZWdpc3RyeSByZWZsZWN0aW9uIGZvciB0aGUgc3BlY2lmaWVkIGRpc2FibGVkIGtleS5cbiIKKyJcbiIKKyIgIGtleVxuIgorIiAgICBBbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCisiXG4iCisiV2lsbCBnZW5lcmFsbHkgcmFpc2UgTm90SW1wbGVtZW50ZWQgaWYgZXhlY3V0ZWQgb24gYSAzMmJpdCBPUy5cbiIKKyJSZXN0b3JpbmcgcmVmbGVjdGlvbiBmb3IgYSBrZXkgZG9lcyBub3QgYWZmZWN0IHJlZmxlY3Rpb24gb2YgYW55XG4iCisic3Via2V5cy4iKTsKKworI2RlZmluZSBXSU5SRUdfRU5BQkxFUkVGTEVDVElPTktFWV9NRVRIT0RERUYgICAgXAorICAgIHsiRW5hYmxlUmVmbGVjdGlvbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleSwgTUVUSF9PLCB3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIEhLRVkga2V5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X19kb2NfXywKKyJRdWVyeVJlZmxlY3Rpb25LZXkoJG1vZHVsZSwga2V5LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyB0aGUgcmVmbGVjdGlvbiBzdGF0ZSBmb3IgdGhlIHNwZWNpZmllZCBrZXkgYXMgYSBib29sLlxuIgorIlxuIgorIiAga2V5XG4iCisiICAgIEFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKKyJcbiIKKyJXaWxsIGdlbmVyYWxseSByYWlzZSBOb3RJbXBsZW1lbnRlZCBpZiBleGVjdXRlZCBvbiBhIDMyYml0IE9TLiIpOworCisjZGVmaW5lIFdJTlJFR19RVUVSWVJFRkxFQ1RJT05LRVlfTUVUSE9EREVGICAgIFwKKyAgICB7IlF1ZXJ5UmVmbGVjdGlvbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5LCBNRVRIX08sIHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBIS0VZIGtleSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgSEtFWSBrZXk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzFmNWJjMzBiNjQ2ODA3YiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2luc291bmQuYy5oIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2E1YTQyCi0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaApAQCAtMCwwICsxLDEwMCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX18sCisiUGxheVNvdW5kKCRtb2R1bGUsIHNvdW5kLCBmbGFncywgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS5cbiIKKyJcbiIKKyIgIHNvdW5kXG4iCisiICAgIFRoZSBzb3VuZCB0byBwbGF5OyBhIGZpbGVuYW1lLCBkYXRhLCBvciBOb25lLlxuIgorIiAgZmxhZ3NcbiIKKyIgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uIik7CisKKyNkZWZpbmUgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRiAgICBcCisgICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9QbGF5U291bmQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfVU5JQ09ERSAqc291bmQ7CisgICAgaW50IGZsYWdzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaaTpQbGF5U291bmQiLAorICAgICAgICAmc291bmQsICZmbGFncykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9QbGF5U291bmRfaW1wbChtb2R1bGUsIHNvdW5kLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHdpbnNvdW5kX0JlZXBfX2RvY19fLAorIkJlZXAoJG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbiwgLylcbiIKKyItLVxuIgorIlxuIgorIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuXG4iCisiXG4iCisiICBmcmVxdWVuY3lcbiIKKyIgICAgRnJlcXVlbmN5IG9mIHRoZSBzb3VuZCBpbiBoZXJ0ei5cbiIKKyIgICAgTXVzdCBiZSBpbiB0aGUgcmFuZ2UgMzcgdGhyb3VnaCAzMiw3NjcuXG4iCisiICBkdXJhdGlvblxuIgorIiAgICBIb3cgbG9uZyB0aGUgc291bmQgc2hvdWxkIHBsYXksIGluIG1pbGxpc2Vjb25kcy4iKTsKKworI2RlZmluZSBXSU5TT1VORF9CRUVQX01FVEhPRERFRiAgICBcCisgICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfVkFSQVJHUywgd2luc291bmRfQmVlcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2luc291bmRfQmVlcF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9CZWVwKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBmcmVxdWVuY3k7CisgICAgaW50IGR1cmF0aW9uOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpCZWVwIiwKKyAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX0JlZXBfaW1wbChtb2R1bGUsIGZyZXF1ZW5jeSwgZHVyYXRpb24pOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUih3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX18sCisiTWVzc2FnZUJlZXAoJG1vZHVsZSwgeD1NQl9PSywgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS5cbiIKKyJcbiIKKyJ4IGRlZmF1bHRzIHRvIE1CX09LLiIpOworCisjZGVmaW5lIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRiAgICBcCisgICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgord2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgeCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5zb3VuZF9NZXNzYWdlQmVlcChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBpbnQgeCA9IE1CX09LOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpNZXNzYWdlQmVlcCIsCisgICAgICAgICZ4KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB4KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1YjAxOGFjOWRjMWY1MDAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCA3MmM5MzgxLi42NmJmNDU4IDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMSw3ICsxLDcgQEAKIC8qIE1vZHVsZSBjb25maWd1cmF0aW9uICovCiAKIC8qIFRoaXMgZmlsZSBjb250YWlucyB0aGUgdGFibGUgb2YgYnVpbHQtaW4gbW9kdWxlcy4KLSAgIFNlZSBpbml0X2J1aWx0aW4oKSBpbiBpbXBvcnQuYy4gKi8KKyAgIFNlZSBjcmVhdGVfYnVpbHRpbigpIGluIGltcG9ydC5jLiAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKQEAgLTE5LDcgKzE5LDcgQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19tZDUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9udCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19vcGVyYXRvcih2b2lkKTsKLWV4dGVybiBQeU9iamVjdCogUHlJbml0X3NpZ25hbCh2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19zaWduYWwodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEyNTYodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhNTEyKHZvaWQpOwpAQCAtOTEsNyArOTEsNyBAQAogICAgIHsibWF0aCIsIFB5SW5pdF9tYXRofSwKICAgICB7Im50IiwgUHlJbml0X250fSwgLyogVXNlIHRoZSBOVCBvcyBmdW5jdGlvbnMsIG5vdCBwb3NpeCAqLwogICAgIHsiX29wZXJhdG9yIiwgUHlJbml0X19vcGVyYXRvcn0sCi0gICAgeyJzaWduYWwiLCBQeUluaXRfc2lnbmFsfSwKKyAgICB7Il9zaWduYWwiLCBQeUluaXRfX3NpZ25hbH0sCiAgICAgeyJfbWQ1IiwgUHlJbml0X19tZDV9LAogICAgIHsiX3NoYTEiLCBQeUluaXRfX3NoYTF9LAogICAgIHsiX3NoYTI1NiIsIFB5SW5pdF9fc2hhMjU2fSwKZGlmZiAtLWdpdCBhL1BDL2RsX250LmMgYi9QQy9kbF9udC5jCmluZGV4IGFlMTBmYjUuLmM4N2M1MWUgMTAwNjQ0Ci0tLSBhL1BDL2RsX250LmMKKysrIGIvUEMvZGxfbnQuYwpAQCAtMTIsNyArMTIsMTIgQEAKICNpbmNsdWRlICJ3aW5kb3dzLmgiCiAKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECisjaWZkZWYgTVNfRExMX0lECisvLyBUaGUgc3RyaW5nIGlzIGF2YWlsYWJsZSBhdCBidWlsZCwgc28gZmlsbCB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5CitjaGFyIGRsbFZlcnNpb25CdWZmZXJbMTZdID0gTVNfRExMX0lEOworI2Vsc2UKIGNoYXIgZGxsVmVyc2lvbkJ1ZmZlclsxNl0gPSAiIjsgLy8gYSBwcml2YXRlIGJ1ZmZlcgorI2VuZGlmCiAKIC8vIFB5dGhvbiBHbG9iYWxzCiBITU9EVUxFIFB5V2luX0RMTGhNb2R1bGUgPSBOVUxMOwpAQCAtODgsOCArOTMsMTEgQEAKICAgICB7CiAgICAgICAgIGNhc2UgRExMX1BST0NFU1NfQVRUQUNIOgogICAgICAgICAgICAgUHlXaW5fRExMaE1vZHVsZSA9IGhJbnN0OworI2lmbmRlZiBNU19ETExfSUQKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgTVNfRExMX0lELCB3ZSBkb24ndCBuZWVkIHRvIGxvYWQgdGhlIHN0cmluZy4KICAgICAgICAgICAgIC8vIDEwMDAgaXMgYSBtYWdpYyBudW1iZXIgSSBwaWNrZWQgb3V0IG9mIHRoZSBhaXIuICBDb3VsZCBkbyB3aXRoIGEgI2RlZmluZSwgSSBzcG9zZS4uLgogICAgICAgICAgICAgTG9hZFN0cmluZyhoSW5zdCwgMTAwMCwgZGxsVmVyc2lvbkJ1ZmZlciwgc2l6ZW9mKGRsbFZlcnNpb25CdWZmZXIpKTsKKyNlbmRpZgogCiAjaWYgSEFWRV9TWFMKICAgICAgICAgICAgIC8vIGFuZCBjYXB0dXJlIG91ciBhY3RpdmF0aW9uIGNvbnRleHQgZm9yIHVzZSB3aGVuIGxvYWRpbmcgZXh0ZW5zaW9ucy4KZGlmZiAtLWdpdCBhL1BDL2dldHBhdGhwLmMgYi9QQy9nZXRwYXRocC5jCmluZGV4IGRlYjQwZTcuLjI1YjMyOGIgMTAwNjQ0Ci0tLSBhL1BDL2dldHBhdGhwLmMKKysrIGIvUEMvZ2V0cGF0aHAuYwpAQCAtMTEzLDcgKzExMywxMCBAQAogc3RhdGljIHZvaWQKIHJlZHVjZSh3Y2hhcl90ICpkaXIpCiB7Ci0gICAgc2l6ZV90IGkgPSB3Y3NsZW4oZGlyKTsKKyAgICBzaXplX3QgaSA9IHdjc25sZW5fcyhkaXIsIE1BWFBBVEhMRU4rMSk7CisgICAgaWYgKGkgPj0gTUFYUEFUSExFTisxKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIHJlZHVjZSgpIik7CisKICAgICB3aGlsZSAoaSA+IDAgJiYgIWlzX3NlcChkaXJbaV0pKQogICAgICAgICAtLWk7CiAgICAgZGlyW2ldID0gJ1wwJzsKQEAgLTEzMCwxNiArMTMzLDIzIEBACiAgICBtYXkgZXh0ZW5kICdmaWxlbmFtZScgYnkgb25lIGNoYXJhY3Rlci4KICovCiBzdGF0aWMgaW50Ci1pc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSkgICAgIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLworaXNtb2R1bGUod2NoYXJfdCAqZmlsZW5hbWUsIGludCB1cGRhdGVfZmlsZW5hbWUpIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLwogeworICAgIGludCBuOworCiAgICAgaWYgKGV4aXN0cyhmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgLyogQ2hlY2sgZm9yIHRoZSBjb21waWxlZCB2ZXJzaW9uIG9mIHByZWZpeC4gKi8KLSAgICBpZiAod2NzbGVuKGZpbGVuYW1lKSA8IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgd2NzY2F0KGZpbGVuYW1lLCBQeV9PcHRpbWl6ZUZsYWcgPyBMIm8iIDogTCJjIik7Ci0gICAgICAgIGlmIChleGlzdHMoZmlsZW5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgbiA9IHdjc25sZW5fcyhmaWxlbmFtZSwgTUFYUEFUSExFTisxKTsKKyAgICBpZiAobiA8IE1BWFBBVEhMRU4pIHsKKyAgICAgICAgaW50IGV4aXN0ID0gMDsKKyAgICAgICAgZmlsZW5hbWVbbl0gPSBQeV9PcHRpbWl6ZUZsYWcgPyBMJ28nIDogTCdjJzsKKyAgICAgICAgZmlsZW5hbWVbbiArIDFdID0gTCdcMCc7CisgICAgICAgIGV4aXN0ID0gZXhpc3RzKGZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCF1cGRhdGVfZmlsZW5hbWUpCisgICAgICAgICAgICBmaWxlbmFtZVtuXSA9IEwnXDAnOworICAgICAgICByZXR1cm4gZXhpc3Q7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtMTU0LDIzICsxNjQsMjMgQEAKICAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KICovCiBzdGF0aWMgdm9pZAotam9pbih3Y2hhcl90ICpidWZmZXIsIHdjaGFyX3QgKnN0dWZmKQoram9pbih3Y2hhcl90ICpidWZmZXIsIGNvbnN0IHdjaGFyX3QgKnN0dWZmKQogewotICAgIHNpemVfdCBuLCBrOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgbiA9IHdjc2xlbihidWZmZXIpOwotICAgICAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbi0xXSkgJiYgbiA8IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBidWZmZXJbbisrXSA9IFNFUDsKKyAgICBzaXplX3QgbjsKKyAgICBpZiAoaXNfc2VwKHN0dWZmWzBdKSB8fAorICAgICAgICAod2Nzbmxlbl9zKHN0dWZmLCA0KSA+PSAzICYmIHN0dWZmWzFdID09ICc6JyAmJiBpc19zZXAoc3R1ZmZbMl0pKSkgeworICAgICAgICBpZiAod2NzY3B5X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobiA+IE1BWFBBVEhMRU4pCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbnBhdGgoKSIpOwotICAgIGsgPSB3Y3NsZW4oc3R1ZmYpOwotICAgIGlmIChuICsgayA+IE1BWFBBVEhMRU4pCi0gICAgICAgIGsgPSBNQVhQQVRITEVOIC0gbjsKLSAgICB3Y3NuY3B5KGJ1ZmZlcituLCBzdHVmZiwgayk7Ci0gICAgYnVmZmVyW24ra10gPSAnXDAnOworCisgICAgbiA9IHdjc25sZW5fcyhidWZmZXIsIE1BWFBBVEhMRU4rMSk7CisgICAgaWYgKG4gPiAwICYmICFpc19zZXAoYnVmZmVyW24gLSAxXSkgJiYgbiA8IE1BWFBBVEhMRU4pIHsKKyAgICAgICAgYnVmZmVyW25dID0gU0VQOworICAgICAgICBidWZmZXJbbiArIDFdID0gJ1wwJzsKKyAgICB9CisgICAgaWYgKHdjc2NhdF9zKGJ1ZmZlciwgTUFYUEFUSExFTisxLCBzdHVmZikgIT0gMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKIH0KIAogLyogZ290bGFuZG1hcmsgb25seSBjYWxsZWQgYnkgc2VhcmNoX2Zvcl9wcmVmaXgsIHdoaWNoIGVuc3VyZXMKQEAgLTE4MSwxMSArMTkxLDEwIEBACiBnb3RsYW5kbWFyayh3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICBpbnQgb2s7Ci0gICAgUHlfc3NpemVfdCBuOworICAgIFB5X3NzaXplX3QgbiA9IHdjc25sZW5fcyhwcmVmaXgsIE1BWFBBVEhMRU4pOwogCi0gICAgbiA9IHdjc2xlbihwcmVmaXgpOwogICAgIGpvaW4ocHJlZml4LCBsYW5kbWFyayk7Ci0gICAgb2sgPSBpc21vZHVsZShwcmVmaXgpOworICAgIG9rID0gaXNtb2R1bGUocHJlZml4LCBGQUxTRSk7CiAgICAgcHJlZml4W25dID0gJ1wwJzsKICAgICByZXR1cm4gb2s7CiB9CkBAIC0xOTYsNyArMjA1LDcgQEAKIHNlYXJjaF9mb3JfcHJlZml4KHdjaGFyX3QgKmFyZ3YwX3BhdGgsIHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIC8qIFNlYXJjaCBmcm9tIGFyZ3YwX3BhdGgsIHVudGlsIGxhbmRtYXJrIGlzIGZvdW5kICovCi0gICAgd2NzY3B5KHByZWZpeCwgYXJndjBfcGF0aCk7CisgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOICsgMSwgYXJndjBfcGF0aCk7CiAgICAgZG8gewogICAgICAgICBpZiAoZ290bGFuZG1hcmsobGFuZG1hcmspKQogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0yMzYsNyArMjQ1LDcgQEAKICAgICBXQ0hBUiAqZGF0YUJ1ZiA9IE5VTEw7CiAgICAgc3RhdGljIGNvbnN0IFdDSEFSIGtleVByZWZpeFtdID0gTCJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFwiOwogICAgIHN0YXRpYyBjb25zdCBXQ0hBUiBrZXlTdWZmaXhbXSA9IEwiXFxQeXRob25QYXRoIjsKLSAgICBzaXplX3QgdmVyc2lvbkxlbjsKKyAgICBzaXplX3QgdmVyc2lvbkxlbiwga2V5QnVmTGVuOwogICAgIERXT1JEIGluZGV4OwogICAgIFdDSEFSICprZXlCdWYgPSBOVUxMOwogICAgIFdDSEFSICprZXlCdWZQdHI7CkBAIC0yNDUsMTIgKzI1NCwxMyBAQAogICAgIC8qIFRyaWVkIHRvIHVzZSBzeXNnZXQoIndpbnZlciIpIGJ1dCBoZXJlIGlzIHRvbyBlYXJseSA6LSggKi8KICAgICB2ZXJzaW9uTGVuID0gc3RybGVuKFB5V2luX0RMTFZlcnNpb25TdHJpbmcpOwogICAgIC8qIFNwYWNlIGZvciBhbGwgdGhlIGNoYXJzLCBwbHVzIG9uZSBcMCAqLwotICAgIGtleUJ1ZiA9IGtleUJ1ZlB0ciA9IFB5TWVtX1Jhd01hbGxvYyhzaXplb2Yoa2V5UHJlZml4KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihXQ0hBUikqKHZlcnNpb25MZW4tMSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoa2V5U3VmZml4KSk7CisgICAga2V5QnVmTGVuID0gc2l6ZW9mKGtleVByZWZpeCkgKworICAgICAgICAgICAgICAgIHNpemVvZihXQ0hBUikqKHZlcnNpb25MZW4tMSkgKworICAgICAgICAgICAgICAgIHNpemVvZihrZXlTdWZmaXgpOworICAgIGtleUJ1ZiA9IGtleUJ1ZlB0ciA9IFB5TWVtX1Jhd01hbGxvYyhrZXlCdWZMZW4pOwogICAgIGlmIChrZXlCdWY9PU5VTEwpIGdvdG8gZG9uZTsKIAotICAgIG1lbWNweShrZXlCdWZQdHIsIGtleVByZWZpeCwgc2l6ZW9mKGtleVByZWZpeCktc2l6ZW9mKFdDSEFSKSk7CisgICAgbWVtY3B5X3Moa2V5QnVmUHRyLCBrZXlCdWZMZW4sIGtleVByZWZpeCwgc2l6ZW9mKGtleVByZWZpeCktc2l6ZW9mKFdDSEFSKSk7CiAgICAga2V5QnVmUHRyICs9IFB5X0FSUkFZX0xFTkdUSChrZXlQcmVmaXgpIC0gMTsKICAgICBtYnN0b3djcyhrZXlCdWZQdHIsIFB5V2luX0RMTFZlcnNpb25TdHJpbmcsIHZlcnNpb25MZW4pOwogICAgIGtleUJ1ZlB0ciArPSB2ZXJzaW9uTGVuOwpAQCAtNDUxLDExICs0NjEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBidWZmZXIsIE1BWFBBVEhMRU4gKiAyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKICAgICAgICAgICAgIGlmIChrID49IDApIHsKLSAgICAgICAgICAgICAgICB3Y2hhcl90ICogdG9rID0gd2NzdG9rKHRtcGJ1ZmZlciwgTCIgXHRcclxuIik7CisgICAgICAgICAgICAgICAgd2NoYXJfdCAqIGNvbnRleHQgPSBOVUxMOworICAgICAgICAgICAgICAgIHdjaGFyX3QgKiB0b2sgPSB3Y3N0b2tfcyh0bXBidWZmZXIsIEwiIFx0XHJcbiIsICZjb250ZXh0KTsKICAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywga2V5KSkgewotICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCIgXHQiKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rX3MoTlVMTCwgTCIgXHQiLCAmY29udGV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBMIj0iKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rKE5VTEwsIEwiXHJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rID0gd2NzdG9rX3MoTlVMTCwgTCJcclxuIiwgJmNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvayAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbmNweSh2YWx1ZSwgdG9rLCBNQVhQQVRITEVOKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOwpAQCAtNDgzLDcgKzQ5NCw3IEBACiAgICAgd2NoYXJfdCAqbWFjaGluZXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKnVzZXJwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90IHppcF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBpbnQgYXBwbG9jYWwgPSAwOwogCiAgICAgaWYgKCFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcpIHsKICAgICAgICAgZW52cGF0aCA9IF93Z2V0ZW52KEwiUFlUSE9OUEFUSCIpOwpAQCAtNTAxLDcgKzUxMiw3IEBACiAKICAgICBnZXRfcHJvZ3BhdGgoKTsKICAgICAvKiBwcm9ncGF0aCBndWFyYW50ZWVkIFwwIHRlcm1pbmF0ZWQgaW4gTUFYUEFUSCsxIGJ5dGVzLiAqLwotICAgIHdjc2NweShhcmd2MF9wYXRoLCBwcm9ncGF0aCk7CisgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCiAgICAgLyogU2VhcmNoIGZvciBhbiBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZpbGUsIGZpcnN0IGluIHRoZQpAQCAtNTEwLDI3ICs1MjEsMzkgQEAKICAgICAqLwogCiAgICAgeworICAgICAgICB3Y2hhcl90IGVudmJ1ZmZlcltNQVhQQVRITEVOKzFdOwogICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKzFdOwotICAgICAgICB3Y2hhcl90ICplbnZfY2ZnID0gTCJweXZlbnYuY2ZnIjsKKyAgICAgICAgY29uc3Qgd2NoYXJfdCAqZW52X2NmZyA9IEwicHl2ZW52LmNmZyI7CiAgICAgICAgIEZJTEUgKiBlbnZfZmlsZSA9IE5VTEw7CiAKLSAgICAgICAgd2NzY3B5KHRtcGJ1ZmZlciwgYXJndjBfcGF0aCk7Ci0gICAgICAgIGpvaW4odG1wYnVmZmVyLCBlbnZfY2ZnKTsKLSAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgIHdjc2NweV9zKGVudmJ1ZmZlciwgTUFYUEFUSExFTisxLCBhcmd2MF9wYXRoKTsKKyAgICAgICAgam9pbihlbnZidWZmZXIsIGVudl9jZmcpOworICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4oZW52YnVmZmVyLCBMInIiKTsKICAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKICAgICAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOwotICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7Ci0gICAgICAgICAgICBqb2luKHRtcGJ1ZmZlciwgZW52X2NmZyk7Ci0gICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgICAgIHJlZHVjZShlbnZidWZmZXIpOworICAgICAgICAgICAgcmVkdWNlKGVudmJ1ZmZlcik7CisgICAgICAgICAgICBqb2luKGVudmJ1ZmZlciwgZW52X2NmZyk7CisgICAgICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4oZW52YnVmZmVyLCBMInIiKTsKICAgICAgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBMb29rIGZvciBhbiAnYXBwbG9jYWwnIHZhcmlhYmxlIGFuZCwgaWYgdHJ1ZSwgaWdub3JlIGFsbCByZWdpc3RyeQorICAgICAgICAgICAgICoga2V5cyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBidXQgcmV0YWluIHRoZSBkZWZhdWx0IHBhdGhzCisgICAgICAgICAgICAgKiAoRExMcywgTGliKSBhbmQgdGhlIHppcCBmaWxlLiBTZXR0aW5nIHB5dGhvbmhvbWUgaGVyZSBzdXBwcmVzc2VzCisgICAgICAgICAgICAgKiB0aGUgc2VhcmNoIGZvciBMQU5ETUFSSyBiZWxvdyBhbmQgb3ZlcnJpZGVzICVQWVRIT05IT01FJS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJhcHBsb2NhbCIsIHRtcGJ1ZmZlcikgJiYKKyAgICAgICAgICAgICAgICAoYXBwbG9jYWwgPSAod2NzaWNtcCh0bXBidWZmZXIsIEwidHJ1ZSIpID09IDApKSkgeworICAgICAgICAgICAgICAgIGVudnBhdGggPSBOVUxMOworICAgICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBhcmd2MF9wYXRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCiAgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7Ci0gICAgICAgICAgICAgICAgd2NzY3B5KGFyZ3YwX3BhdGgsIHRtcGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCB0bXBidWZmZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZmNsb3NlKGVudl9maWxlKTsKICAgICAgICAgICAgIGVudl9maWxlID0gTlVMTDsKQEAgLTU0NCwzMyArNTY3LDMwIEBACiAgICAgICAgICAgICBweXRob25ob21lID0gTlVMTDsKICAgICB9CiAgICAgZWxzZQotICAgICAgICB3Y3NuY3B5KHByZWZpeCwgcHl0aG9uaG9tZSwgTUFYUEFUSExFTik7CisgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCBweXRob25ob21lKTsKIAogICAgIGlmIChlbnZwYXRoICYmICplbnZwYXRoID09ICdcMCcpCiAgICAgICAgIGVudnBhdGggPSBOVUxMOwogCiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggKi8KLSAgICBpZiAoZGxscGF0aFswXSkgICAgICAgICAgICAgLyogdXNlIG5hbWUgb2YgcHl0aG9uIERMTCAqLwotICAgICAgICB3Y3NuY3B5KHppcF9wYXRoLCBkbGxwYXRoLCBNQVhQQVRITEVOKTsKLSAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgLyogdXNlIG5hbWUgb2YgZXhlY3V0YWJsZSBwcm9ncmFtICovCi0gICAgICAgIHdjc25jcHkoemlwX3BhdGgsIHByb2dwYXRoLCBNQVhQQVRITEVOKTsKLSAgICB6aXBfcGF0aFtNQVhQQVRITEVOXSA9ICdcMCc7Ci0gICAgbGVuID0gd2NzbGVuKHppcF9wYXRoKTsKLSAgICBpZiAobGVuID4gNCkgewotICAgICAgICB6aXBfcGF0aFtsZW4tM10gPSAneic7ICAgICAgICAgIC8qIGNoYW5nZSBlbmRpbmcgdG8gInppcCIgKi8KLSAgICAgICAgemlwX3BhdGhbbGVuLTJdID0gJ2knOwotICAgICAgICB6aXBfcGF0aFtsZW4tMV0gPSAncCc7Ci0gICAgfQorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQorICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCisgICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKICAgICBlbHNlIHsKLSAgICAgICAgemlwX3BhdGhbMF0gPSAwOworICAgICAgICB3Y2hhcl90ICpkb3QgPSB3Y3NyY2hyKHppcF9wYXRoLCAnLicpOworICAgICAgICBpZiAoIWRvdCB8fCB3Y3NjcHlfcyhkb3QsIE1BWFBBVEhMRU4rMSAtIChkb3QgLSB6aXBfcGF0aCksIEwiLnppcCIpKQorICAgICAgICAgICAgLyogZXhjZWVkZWQgYnVmZmVyIGxlbmd0aCAtIGlnbm9yZSB6aXBfcGF0aCAqLworICAgICAgICAgICAgemlwX3BhdGhbMF0gPSBMJ1wwJzsKICAgICB9CiAKICAgICBza2lwaG9tZSA9IHB5dGhvbmhvbWU9PU5VTEwgPyAwIDogMTsKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECi0gICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOworICAgIGlmICghYXBwbG9jYWwpIHsKKyAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKKyAgICB9CiAjZW5kaWYKICAgICAvKiBXZSBvbmx5IHVzZSB0aGUgZGVmYXVsdCByZWxhdGl2ZSBQWVRIT05QQVRIIGlmIHdlIGhhdmVudAogICAgICAgIGFueXRoaW5nIGJldHRlciB0byB1c2UhICovCkBAIC01ODksNiArNjA5LDcgQEAKICAgICAgICBFeHRyYSBydWxlczoKICAgICAgICAtIElmIFBZVEhPTkhPTUUgaXMgc2V0IChpbiBhbnkgd2F5KSBpdGVtICgzKSBpcyBpZ25vcmVkLgogICAgICAgIC0gSWYgcmVnaXN0cnkgdmFsdWVzIGFyZSB1c2VkLCAoNCkgYW5kICg1KSBhcmUgaWdub3JlZC4KKyAgICAgICAtIElmIGFwcGxvY2FsIGlzIHNldCwgKDEpLCAoMyksIGFuZCByZWdpc3RyeSB2YWx1ZXMgYXJlIGlnbm9yZWQKICAgICAqLwogCiAgICAgLyogQ2FsY3VsYXRlIHNpemUgb2YgcmV0dXJuIGJ1ZmZlciAqLwpAQCAtNjA2LDkgKzYyNyw5IEBACiAgICAgYnVmc3ogKz0gd2NzbGVuKFBZVEhPTlBBVEgpICsgMTsKICAgICBidWZzeiArPSB3Y3NsZW4oYXJndjBfcGF0aCkgKyAxOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAodXNlcnBhdGgpCisgICAgaWYgKCFhcHBsb2NhbCAmJiB1c2VycGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKHVzZXJwYXRoKSArIDE7Ci0gICAgaWYgKG1hY2hpbmVwYXRoKQorICAgIGlmICghYXBwbG9jYWwgJiYgbWFjaGluZXBhdGgpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihtYWNoaW5lcGF0aCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbih6aXBfcGF0aCkgKyAxOwogI2VuZGlmCkBAIC02MzUsMzggKzY1Niw0NSBAQAogICAgIH0KIAogICAgIGlmIChlbnZwYXRoKSB7Ci0gICAgICAgIHdjc2NweShidWYsIGVudnBhdGgpOworICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCBlbnZwYXRoKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7Ci0gICAgICAgIHdjc2NweShidWYsIHppcF9wYXRoKTsKKyAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgemlwX3BhdGgpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQogICAgIGlmICh1c2VycGF0aCkgewotICAgICAgICB3Y3NjcHkoYnVmLCB1c2VycGF0aCk7CisgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHVzZXJwYXRoKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKICAgICB9CiAgICAgaWYgKG1hY2hpbmVwYXRoKSB7Ci0gICAgICAgIHdjc2NweShidWYsIG1hY2hpbmVwYXRoKTsKKyAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgbWFjaGluZXBhdGgpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgIH0KICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghc2tpcGRlZmF1bHQpIHsKLSAgICAgICAgICAgIHdjc2NweShidWYsIFBZVEhPTlBBVEgpOworICAgICAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgUFlUSE9OUEFUSCkpCisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CiAgICAgICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CisgICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgfQogICAgIH0KICNlbHNlCiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCkgewogICAgICAgICB3Y3NjcHkoYnVmLCBQWVRIT05QQVRIKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOworICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIGVsc2UgewpAQCAtNjgwLDI1ICs3MDgsMjYgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBuID0gcS1wOwogICAgICAgICAgICAgaWYgKHBbMF0gPT0gJy4nICYmIGlzX3NlcChwWzFdKSkgewotICAgICAgICAgICAgICAgIHdjc2NweShidWYsIHB5dGhvbmhvbWUpOworICAgICAgICAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHB5dGhvbmhvbWUpKQorICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKICAgICAgICAgICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICAgICAgICAgcCsrOwogICAgICAgICAgICAgICAgIG4tLTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdjc25jcHkoYnVmLCBwLCBuKTsKICAgICAgICAgICAgIGJ1ZiArPSBuOworICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgICAgICBpZiAocSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgICAgICBwID0gcSsxOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChhcmd2MF9wYXRoKSB7Ci0gICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICB3Y3NjcHkoYnVmLCBhcmd2MF9wYXRoKTsKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOworICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9Ci0gICAgKmJ1ZiA9IEwnXDAnOworICAgICooYnVmIC0gMSkgPSBMJ1wwJzsKICAgICAvKiBOb3cgdG8gcHVsbCBvbmUgbGFzdCBoYWNrL3RyaWNrLiAgSWYgc3lzLnByZWZpeCBpcwogICAgICAgIGVtcHR5LCB0aGVuIHRyeSBhbmQgZmluZCBpdCBzb21ld2hlcmUgb24gdGhlIHBhdGhzCiAgICAgICAgd2UgY2FsY3VsYXRlZC4gIFdlIHNjYW4gYmFja3dhcmRzLCBhcyBvdXIgZ2VuZXJhbCBwb2xpY3kKZGlmZiAtLWdpdCBhL1BDL2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYyBiL1BDL2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjM0NzEwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlci5jCkBAIC0wLDAgKzEsMjIgQEAKKyNpZmRlZiBfTVNDX1ZFUgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiBfTVNDX1ZFUiA+PSAxOTAwCisvKiBweWNvbmZpZy5oIHVzZXMgdGhpcyBmdW5jdGlvbiBpbiB0aGUgX1B5X0JFR0lOL0VORF9TVVBQUkVTU19JUEgKKyAqIG1hY3Jvcy4gSXQgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIHdoZW4gYnVpbGRpbmcgdXNpbmcgTVNWQworICogZWFybGllciB0aGFuIDE0LjAgKF9NU0NfVkVSID09IDE5MDApLgorICovCisKK3N0YXRpYyB2b2lkIF9fY2RlY2wgX3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKAorICAgIHdjaGFyX3QgY29uc3QqIGV4cHJlc3Npb24sCisgICAgd2NoYXJfdCBjb25zdCogZnVuY3Rpb24sCisgICAgd2NoYXJfdCBjb25zdCogZmlsZSwKKyAgICB1bnNpZ25lZCBpbnQgbGluZSwKKyAgICB1aW50cHRyX3QgcFJlc2VydmVkKSB7IH0KKworX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIgX1B5X3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyID0gX3NpbGVudF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyOworCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCBmYTA4Njg0Li5mYWRhNGM5IDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTg3LDE2ICs4NywxNiBAQAogICAgIGlmIChyYyA9PSAwKSB7ICAvKiBhIFdpbmRvd3MgZXJyb3IgKi8KICAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIHdpbl9tZXNzYWdlLCBNU0dTSVpFKTsKICAgICAgICAgaWYgKGxlbiA+PSAwKSB7Ci0gICAgICAgICAgICBfc253cHJpbnRmX3MoJm1lc3NhZ2VbbGVuXSwgTVNHU0laRSAtIGxlbiwgX1RSVU5DQVRFLCBMIjogJXMiLAorICAgICAgICAgICAgX3Nud3ByaW50Zl9zKCZtZXNzYWdlW2xlbl0sIE1TR1NJWkUgLSBsZW4sIF9UUlVOQ0FURSwgTCI6ICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgd2luX21lc3NhZ2UpOwogICAgICAgICB9CiAgICAgfQogCiAjaWYgIWRlZmluZWQoX1dJTkRPV1MpCi0gICAgZndwcmludGYoc3RkZXJyLCBMIiVzXG4iLCBtZXNzYWdlKTsKKyAgICBmd3ByaW50ZihzdGRlcnIsIEwiJWxzXG4iLCBtZXNzYWdlKTsKICNlbHNlCiAgICAgTWVzc2FnZUJveChOVUxMLCBtZXNzYWdlLCBURVhUKCJQeXRob24gTGF1bmNoZXIgaXMgc29ycnkgdG8gc2F5IC4uLiIpLAotICAgICAgICAgICAgICAgTUJfT0spOyAKKyAgICAgICAgICAgICAgIE1CX09LKTsKICNlbmRpZgogICAgIEV4aXRQcm9jZXNzKHJjKTsKIH0KQEAgLTE1NywxNCArMTU3LDE5IEBACiAKIHN0YXRpYyBzaXplX3QgbnVtX2luc3RhbGxlZF9weXRob25zID0gMDsKIAotLyogdG8gaG9sZCBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVxYLllcSW5zdGFsbFBhdGggKi8KKy8qCisgKiBUbyBob2xkIFNPRlRXQVJFXFB5dGhvblxQeXRob25Db3JlXFguWS4uLlxJbnN0YWxsUGF0aAorICogVGhlIHZlcnNpb24gbmFtZSBjYW4gYmUgbG9uZ2VyIHRoYW4gTUFYX1ZFUlNJT05fU0laRSwgYnV0IHdpbGwgYmUKKyAqIHRydW5jYXRlZCB0byBqdXN0IFguWSBmb3IgY29tcGFyaXNvbnMuCisgKi8KICNkZWZpbmUgSVBfQkFTRV9TSVpFIDQwCi0jZGVmaW5lIElQX1NJWkUgKElQX0JBU0VfU0laRSArIE1BWF9WRVJTSU9OX1NJWkUpCisjZGVmaW5lIElQX1ZFUlNJT05fU0laRSA4CisjZGVmaW5lIElQX1NJWkUgKElQX0JBU0VfU0laRSArIElQX1ZFUlNJT05fU0laRSkKICNkZWZpbmUgQ09SRV9QQVRIIEwiU09GVFdBUkVcXFB5dGhvblxcUHl0aG9uQ29yZSIKIAogc3RhdGljIHdjaGFyX3QgKiBsb2NhdGlvbl9jaGVja3NbXSA9IHsKICAgICBMIlxcIiwKLSAgICBMIlxcUENCdWlsZFxcIiwKKyAgICBMIlxcUENCdWlsZFxcd2luMzJcXCIsCiAgICAgTCJcXFBDQnVpbGRcXGFtZDY0XFwiLAogICAgIE5VTEwKIH07CkBAIC0xOTYsMzUgKzIwMSwzOCBAQAogICAgIEJPT0wgb2s7CiAgICAgRFdPUkQgdHlwZSwgZGF0YV9zaXplLCBhdHRyczsKICAgICBJTlNUQUxMRURfUFlUSE9OICogaXAsICogcGlwOworICAgIHdjaGFyX3QgaXBfdmVyc2lvbltJUF9WRVJTSU9OX1NJWkVdOwogICAgIHdjaGFyX3QgaXBfcGF0aFtJUF9TSVpFXTsKICAgICB3Y2hhcl90ICogY2hlY2s7CiAgICAgd2NoYXJfdCAqKiBjaGVja3A7CiAgICAgd2NoYXJfdCAqa2V5X25hbWUgPSAocm9vdCA9PSBIS0VZX0xPQ0FMX01BQ0hJTkUpID8gTCJIS0xNIiA6IEwiSEtDVSI7CiAKICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJXNcbiIsCisgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogdW5hYmxlIHRvIG9wZW4gUHl0aG9uQ29yZSBrZXkgaW4gJWxzXG4iLAogICAgICAgICAgICAgICBrZXlfbmFtZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlwID0gJmluc3RhbGxlZF9weXRob25zW251bV9pbnN0YWxsZWRfcHl0aG9uc107CiAgICAgICAgIGZvciAoaSA9IDA7IG51bV9pbnN0YWxsZWRfcHl0aG9ucyA8IE1BWF9JTlNUQUxMRURfUFlUSE9OUzsgaSsrKSB7Ci0gICAgICAgICAgICBzdGF0dXMgPSBSZWdFbnVtS2V5Vyhjb3JlX3Jvb3QsIGksIGlwLT52ZXJzaW9uLCBNQVhfVkVSU0lPTl9TSVpFKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IFJlZ0VudW1LZXlXKGNvcmVfcm9vdCwgaSwgaXBfdmVyc2lvbiwgSVBfVkVSU0lPTl9TSVpFKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykgewogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gRVJST1JfTk9fTU9SRV9JVEVNUykgewogICAgICAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVycm9yICovCiAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiQ2FuJ3QgZW51bWVyYXRlIHJlZ2lzdHJ5IGtleSBmb3IgdmVyc2lvbiAlczogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJDYW4ndCBlbnVtZXJhdGUgcmVnaXN0cnkga2V5IGZvciB2ZXJzaW9uICVsczogJWxzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcF92ZXJzaW9uLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB3Y3NuY3B5X3MoaXAtPnZlcnNpb24sIE1BWF9WRVJTSU9OX1NJWkUsIGlwX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9WRVJTSU9OX1NJWkUtMSk7CiAgICAgICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGlwX3BhdGgsIElQX1NJWkUsIF9UUlVOQ0FURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlc1xcJXNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcC0+dmVyc2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJWxzXFwlbHNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcF92ZXJzaW9uKTsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBSZWdPcGVuS2V5RXhXKHJvb3QsIGlwX3BhdGgsIDAsIGZsYWdzLCAmaXBfa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKICAgICAgICAgICAgICAgICAgICAgd2luZXJyb3Ioc3RhdHVzLCBtZXNzYWdlLCBNU0dTSVpFKTsKICAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogJ21lc3NhZ2UnIGFscmVhZHkgaGFzIGEgdHJhaWxpbmcgXG4KLSAgICAgICAgICAgICAgICAgICAgZGVidWcoTCIlc1xcJXM6ICVzIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVsc1xcJWxzOiAlbHMiLCBrZXlfbmFtZSwgaXBfcGF0aCwgbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkYXRhX3NpemUgPSBzaXplb2YoaXAtPmV4ZWN1dGFibGUpIC0gMTsKQEAgLTIzMyw3ICsyNDEsNyBAQAogICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGlwX2tleSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CiAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJXNcXCVzOiAlc1xuIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIiVsc1xcJWxzOiAlbHNcbiIsIGtleV9uYW1lLCBpcF9wYXRoLCBtZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFJFR19TWikgewpAQCAtMjQ2LDI3ICsyNTQsMjcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIF9zbndwcmludGZfcygmaXAtPmV4ZWN1dGFibGVbZGF0YV9zaXplXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVhfUEFUSCAtIGRhdGFfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMIiVzJXMiLCBjaGVjaywgUFlUSE9OX0VYRUNVVEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwiJWxzJWxzIiwgY2hlY2ssIFBZVEhPTl9FWEVDVVRBQkxFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGlwLT5leGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHM6ICVscyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cnMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICclcycgaXMgYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAnJWxzJyBpcyBhIFwKIGRpcmVjdG9yeVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmluZF9leGlzdGluZ19weXRob24oaXAtPmV4ZWN1dGFibGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlczogYWxyZWFkeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHM6IGFscmVhZHkgXAogZm91bmRcbiIsIGlwLT5leGVjdXRhYmxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoZSBleGVjdXRhYmxlIHR5cGUuICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2sgPSBHZXRCaW5hcnlUeXBlVyhpcC0+ZXhlY3V0YWJsZSwgJmF0dHJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9rKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiRmFpbHVyZSBnZXR0aW5nIGJpbmFyeSB0eXBlOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJGYWlsdXJlIGdldHRpbmcgYmluYXJ5IHR5cGU6ICVsc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI3Nyw3ICsyODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+Yml0cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcC0+Yml0cyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVsczogXAogaW52YWxpZCBiaW5hcnkgdHlwZTogJVhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgYXR0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yOTEsNyArMjk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMV0gPSBMJ1wiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZVtuICsgMl0gPSBMJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiAlbHMgXAogaXMgYSAlZGJpdCBleGVjdXRhYmxlXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlLCBpcC0+Yml0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK251bV9pbnN0YWxsZWRfcHl0aG9uczsKQEAgLTM0MSw3ICszNDksNyBAQAogICAgICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CiAgICAgICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9MT0NBTF9NQUNISU5FLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF82NEtFWSk7CiAgICAgfQotI2VuZGlmICAgIAorI2VuZGlmCiAgICAgLy8gbm93IGhpdCB0aGUgIm5hdGl2ZSIga2V5IGZvciB0aGlzIHByb2Nlc3MgYml0dGVkbmVzcy4KICAgICBkZWJ1ZyhMImxvY2F0aW5nIFB5dGhvbnMgaW4gbmF0aXZlIHJlZ2lzdHJ5XG4iKTsKICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCk7CkBAIC0zNzYsNiArMzg0LDMxIEBACiB9CiAKIAorc3RhdGljIHdjaGFyX3QgKgorZmluZF9weXRob25fYnlfdmVudigpCit7CisgICAgc3RhdGljIHdjaGFyX3QgdmVudl9weXRob25bTUFYX1BBVEhdOworICAgIHdjaGFyX3QgKnZpcnR1YWxfZW52ID0gZ2V0X2VudihMIlZJUlRVQUxfRU5WIik7CisgICAgRFdPUkQgYXR0cnM7CisKKyAgICAvKiBDaGVjayBmb3IgVklSVFVBTF9FTlYgZW52aXJvbm1lbnQgdmFyaWFibGUgKi8KKyAgICBpZiAodmlydHVhbF9lbnYgPT0gTlVMTCB8fCB2aXJ0dWFsX2VudlswXSA9PSBMJ1wwJykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3IgYSBweXRob24gZXhlY3V0YWJsZSBpbiB0aGUgdmVudiAqLworICAgIGRlYnVnKEwiQ2hlY2tpbmcgZm9yIFB5dGhvbiBleGVjdXRhYmxlIGluIHZpcnR1YWwgZW52ICclbHMnXG4iLCB2aXJ0dWFsX2Vudik7CisgICAgX3Nud3ByaW50Zl9zKHZlbnZfcHl0aG9uLCBNQVhfUEFUSCwgX1RSVU5DQVRFLAorICAgICAgICAgICAgTCIlbHNcXFNjcmlwdHNcXCVscyIsIHZpcnR1YWxfZW52LCBQWVRIT05fRVhFQ1VUQUJMRSk7CisgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1codmVudl9weXRob24pOworICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgeworICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBleGVjdXRhYmxlICVscyBtaXNzaW5nIGZyb20gdmlydHVhbCBlbnZcbiIsIHZlbnZfcHl0aG9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHZlbnZfcHl0aG9uOworfQorCiBzdGF0aWMgd2NoYXJfdCBhcHBkYXRhX2luaV9wYXRoW01BWF9QQVRIXTsKIHN0YXRpYyB3Y2hhcl90IGxhdW5jaGVyX2luaV9wYXRoW01BWF9QQVRIXTsKIApAQCAtMzk3LDcgKzQzMCw3IEBACiAgICAgRFdPUkQgc2l6ZTsKIAogICAgIC8qIEZpcnN0LCBzZWFyY2ggdGhlIGVudmlyb25tZW50LiAqLwotICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJXMiLCBrZXkpOworICAgIF9zbndwcmludGZfcyhjb25maWd1cmVkX3ZhbHVlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIEwicHlfJWxzIiwga2V5KTsKICAgICByZXN1bHQgPSBnZXRfZW52KGNvbmZpZ3VyZWRfdmFsdWUpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiBhcHBkYXRhX2luaV9wYXRoWzBdKSB7CiAgICAgICAgIC8qIE5vdCBpbiBlbnZpcm9ubWVudDogY2hlY2sgbG9jYWwgY29uZmlndXJhdGlvbi4gKi8KQEAgLTQyMCwxMCArNDUzLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBkZWJ1ZyhMImZvdW5kIGNvbmZpZ3VyZWQgdmFsdWUgJyVzPSVzJyBpbiAlc1xuIiwKKyAgICAgICAgZGVidWcoTCJmb3VuZCBjb25maWd1cmVkIHZhbHVlICclbHM9JWxzJyBpbiAlbHNcbiIsCiAgICAgICAgICAgICAgIGtleSwgcmVzdWx0LCBmb3VuZF9pbiA/IGZvdW5kX2luIDogTCIodW5rbm93bikiKTsKICAgICB9IGVsc2UgewotICAgICAgICBkZWJ1ZyhMImZvdW5kIG5vIGNvbmZpZ3VyZWQgdmFsdWUgZm9yICclcydcbiIsIGtleSk7CisgICAgICAgIGRlYnVnKEwiZm91bmQgbm8gY29uZmlndXJlZCB2YWx1ZSBmb3IgJyVscydcbiIsIGtleSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00NDksOSArNDgyLDkgQEAKICAgICB9CiAgICAgaWYgKCp3YW50ZWRfdmVyKSB7CiAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24od2FudGVkX3Zlcik7Ci0gICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBQeXRob24gdmVyc2lvbiAnJXMnIGZvdW5kICIsIHdhbnRlZF92ZXIpOworICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgUHl0aG9uIHZlcnNpb24gJyVscycgZm91bmQgIiwgd2FudGVkX3Zlcik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGRlYnVnKEwiJyVzJ1xuIiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIGRlYnVnKEwiJyVscydcbiIsIHJlc3VsdC0+ZXhlY3V0YWJsZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkZWJ1ZyhMIm5vIGludGVycHJldGVyXG4iKTsKICAgICAgICAgfQpAQCAtNDY3LDcgKzUwMCw3IEBACiAgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMyIpOwogICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgZGVmYXVsdCBQeXRob24gZm91bmQgIik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIGRlYnVnKEwidmVyc2lvbiAlcyBhdCAnJXMnXG4iLAorICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVscyBhdCAnJWxzJ1xuIiwKICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+dmVyc2lvbiwgcmVzdWx0LT5leGVjdXRhYmxlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRlYnVnKEwibm8gaW50ZXJwcmV0ZXJcbiIpOwpAQCAtNTA1LDE5ICs1MzgsMTkgQEAKICAgICBwbGVuID0gR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIHdyYXBwZWRfc2NyaXB0X3BhdGgsIE1BWF9QQVRIKTsKICAgICBwID0gd2NzcmNocih3cmFwcGVkX3NjcmlwdF9wYXRoLCBMJy4nKTsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBleHRlbnNpb246ICVzXG4iLAorICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gZXh0ZW5zaW9uOiAlbHNcbiIsCiAgICAgICAgICAgICAgIHdyYXBwZWRfc2NyaXB0X3BhdGgpOwotICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiV3JhcHBlciBuYW1lICclcycgaXMgbm90IHZhbGlkLiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiV3JhcHBlciBuYW1lICclbHMnIGlzIG5vdCB2YWxpZC4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICB9CiAKICAgICB3Y3NuY3B5X3MocCwgTUFYX1BBVEggLSAocCAtIHdyYXBwZWRfc2NyaXB0X3BhdGgpICsgMSwgU0NSSVBUX1NVRkZJWCwgX1RSVU5DQVRFKTsKICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cmFwcGVkX3NjcmlwdF9wYXRoKTsKICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCB3cmFwcGVkX3NjcmlwdF9wYXRoKTsKLSAgICAgICAgZXJyb3IoUkNfTk9fU0NSSVBULCBMIlNjcmlwdCBmaWxlICclcycgaXMgbm90IHByZXNlbnQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CisgICAgICAgIGRlYnVnKEwiRmlsZSAnJWxzJyBub24tZXhpc3RlbnRcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgICAgICBlcnJvcihSQ19OT19TQ1JJUFQsIEwiU2NyaXB0IGZpbGUgJyVscycgaXMgbm90IHByZXNlbnQuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiAgICAgfQogCi0gICAgZGVidWcoTCJVc2luZyB3cmFwcGVkIHNjcmlwdCBmaWxlICclcydcbiIsIHdyYXBwZWRfc2NyaXB0X3BhdGgpOworICAgIGRlYnVnKEwiVXNpbmcgd3JhcHBlZCBzY3JpcHQgZmlsZSAnJWxzJ1xuIiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiB9CiAjZW5kaWYKIApAQCAtNTcxLDcgKzYwNCw3IEBACiAgICAgLy8gd2luZG93LCBvciBmZXRjaGluZyBhIG1lc3NhZ2UpLiAgQXMgdGhpcyBsYXVuY2hlciBkb2Vzbid0IGRvIHRoaXMKICAgICAvLyBkaXJlY3RseSwgdGhhdCBjdXJzb3IgcmVtYWlucyBldmVuIGFmdGVyIHRoZSBjaGlsZCBwcm9jZXNzIGRvZXMgdGhlc2UKICAgICAvLyB0aGluZ3MuICBXZSBhdm9pZCB0aGF0IGJ5IGRvaW5nIGEgc2ltcGxlIHBvc3QrZ2V0IG1lc3NhZ2UuCi0gICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQgCisgICAgLy8gU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzI5MCBhbmQKICAgICAvLyBodHRwczovL2JpdGJ1Y2tldC5vcmcvdmluYXkuc2FqaXAvcHlsYXVuY2hlci9pc3N1ZS8yMC9idXN5LWN1cnNvci1mb3ItYS1sb25nLXRpbWUtd2hlbi1ydW5uaW5nCiAgICAgTVNHIG1zZzsKIApAQCAtNTc5LDcgKzYxMiw3IEBACiAgICAgR2V0TWVzc2FnZSgmbXNnLCAwLCAwLCAwKTsKICNlbmRpZgogCi0gICAgZGVidWcoTCJydW5fY2hpbGQ6IGFib3V0IHRvIHJ1biAnJXMnXG4iLCBjbWRsaW5lKTsKKyAgICBkZWJ1ZyhMInJ1bl9jaGlsZDogYWJvdXQgdG8gcnVuICclbHMnXG4iLCBjbWRsaW5lKTsKICAgICBqb2IgPSBDcmVhdGVKb2JPYmplY3QoTlVMTCwgTlVMTCk7CiAgICAgb2sgPSBRdWVyeUluZm9ybWF0aW9uSm9iT2JqZWN0KGpvYiwgSm9iT2JqZWN0RXh0ZW5kZWRMaW1pdEluZm9ybWF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLCBzaXplb2YoaW5mbyksICZyYyk7CkBAIC02MTEsNyArNjQ0LDcgQEAKICAgICBvayA9IENyZWF0ZVByb2Nlc3NXKE5VTEwsIGNtZGxpbmUsIE5VTEwsIE5VTEwsIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMLCAmc2ksICZwaSk7CiAgICAgaWYgKCFvaykKLSAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclcyciLCBjbWRsaW5lKTsKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiVW5hYmxlIHRvIGNyZWF0ZSBwcm9jZXNzIHVzaW5nICclbHMnIiwgY21kbGluZSk7CiAgICAgQXNzaWduUHJvY2Vzc1RvSm9iT2JqZWN0KGpvYiwgcGkuaFByb2Nlc3MpOwogICAgIENsb3NlSGFuZGxlKHBpLmhUaHJlYWQpOwogICAgIFdhaXRGb3JTaW5nbGVPYmplY3RFeChwaS5oUHJvY2VzcywgSU5GSU5JVEUsIEZBTFNFKTsKQEAgLTY0OCwxMSArNjgxLDExIEBACiAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUpOwogICAgICAgICBpZiAobm9fc3VmZml4KQogICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVscyAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIGNtZGxpbmUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBfc253cHJpbnRmX3MoY2hpbGRfY29tbWFuZCwgY2hpbGRfY29tbWFuZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJXMgJXMgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2NvbW1hbmRfc2l6ZSAtIDEsIEwiJWxzICVscyAlbHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUsIHN1ZmZpeCwgY21kbGluZSk7CiAgICAgICAgIHJ1bl9jaGlsZChjaGlsZF9jb21tYW5kKTsKICAgICAgICAgZnJlZShjaGlsZF9jb21tYW5kKTsKQEAgLTc5MSw3ICs4MjQsNyBAQAogYWRkX2NvbW1hbmQod2NoYXJfdCAqIG5hbWUsIHdjaGFyX3QgKiBjbWRsaW5lKQogewogICAgIGlmIChudW1fY29tbWFuZHMgPj0gTUFYX0NPTU1BTkRTKSB7Ci0gICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVzID0gJyVzJzogbm8gcm9vbVxuIiwgbmFtZSwgY21kbGluZSk7CisgICAgICAgIGRlYnVnKEwiY2FuJ3QgYWRkICVscyA9ICclbHMnOiBubyByb29tXG4iLCBuYW1lLCBjbWRsaW5lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIENPTU1BTkQgKiBjcCA9ICZjb21tYW5kc1tudW1fY29tbWFuZHMrK107CkBAIC04MTMsMTQgKzg0NiwxNCBAQAogICAgIHJlYWQgPSBHZXRQcml2YXRlUHJvZmlsZVN0cmluZ1coTCJjb21tYW5kcyIsIE5VTEwsIE5VTEwsIGtleW5hbWVzLCBNU0dTSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOwogICAgIGlmIChyZWFkID09IE1TR1NJWkUgLSAxKSB7Ci0gICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJXM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yIG5hbWVzXG4iLCBjb25maWdfcGF0aCk7CisgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJWxzOiBub3QgZW5vdWdoIHNwYWNlIGZvciBuYW1lc1xuIiwgY29uZmlnX3BhdGgpOwogICAgIH0KICAgICBrZXkgPSBrZXluYW1lczsKICAgICB3aGlsZSAoKmtleSkgewogICAgICAgICByZWFkID0gR2V0UHJpdmF0ZVByb2ZpbGVTdHJpbmdXKEwiY29tbWFuZHMiLCBrZXksIE5VTEwsIHZhbHVlLCBNU0dTSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgpOwogICAgICAgICBpZiAocmVhZCA9PSBNU0dTSVpFIC0gMSkgewotICAgICAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgJXNcbiIsCisgICAgICAgICAgICBkZWJ1ZyhMInJlYWRfY29tbWFuZHM6ICVsczogbm90IGVub3VnaCBzcGFjZSBmb3IgJWxzXG4iLAogICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgsIGtleSk7CiAgICAgICAgIH0KICAgICAgICAgY21kcCA9IHNraXBfd2hpdGVzcGFjZSh2YWx1ZSk7CkBAIC0xMDk3LDcgKzExMzAsNyBAQAogICAgICAgICBpZiAoKHJlYWQgPj0gNCkgJiYgKGJ1ZmZlclszXSA9PSAnXG4nKSAmJiAoYnVmZmVyWzJdID09ICdccicpKSB7CiAgICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKGJ1ZmZlclsxXSA8PCA4IHwgYnVmZmVyWzBdKSAmIDB4RkZGRik7CiAgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJXNcbiIsCisgICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlbHNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24pOwogICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY21kbGluZSk7CiAgICAgICAgICAgICB9CkBAIC0xMjAwLDcgKzEyMzMsNyBAQAogICAgICAgICAgICAgICAgIGlzX3ZpcnQgPSBwYXJzZV9zaGViYW5nKHNoZWJhbmdfbGluZSwgbmNoYXJzLCAmY29tbWFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VmZml4LCAmc2VhcmNoKTsKICAgICAgICAgICAgICAgICBpZiAoY29tbWFuZCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKEwicGFyc2Vfc2hlYmFuZzogZm91bmQgY29tbWFuZDogJXNcbiIsIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMInBhcnNlX3NoZWJhbmc6IGZvdW5kIGNvbW1hbmQ6ICVsc1xuIiwgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfdmlydCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGNvbW1hbmQsIHN1ZmZpeCwgY21kbGluZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMTIsNyArMTI0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2NzbmNtcChjb21tYW5kLCBMInB5dGhvbiIsIDYpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX0JBRF9WSVJUVUFMX1BBVEgsIEwiVW5rbm93biB2aXJ0dWFsIFwKLXBhdGggJyVzJyIsIGNvbW1hbmQpOworcGF0aCAnJWxzJyIsIGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCArPSA2OyAgIC8qIHNraXAgcGFzdCAicHl0aG9uIiAqLwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaCAmJiAoKCpjb21tYW5kID09IEwnXDAnKSB8fCBpc3NwYWNlKCpjb21tYW5kKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb21tYW5kIGlzIGVsaWdpYmxlIGZvciBwYXRoIHNlYXJjaCwgYW5kIHRoZXJlCkBAIC0xMjIwLDkgKzEyNTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwic2VhcmNoaW5nIFBBVEggZm9yIHB5dGhvbiBleGVjdXRhYmxlXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSBmaW5kX29uX3BhdGgoTCJweXRob24iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBvbiBwYXRoOiAlc1xuIiwgY21kID8gY21kLT52YWx1ZSA6IEwiPG5vdCBmb3VuZD4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlB5dGhvbiBvbiBwYXRoOiAlbHNcbiIsIGNtZCA/IGNtZC0+dmFsdWUgOiBMIjxub3QgZm91bmQ+Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNtZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZWQgcHl0aG9uIG9uIFBBVEg6ICVzXG4iLCBjbWQtPnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJsb2NhdGVkIHB5dGhvbiBvbiBQQVRIOiAlbHNcbiIsIGNtZC0+dmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoY21kLT52YWx1ZSwgc3VmZml4LCBjbWRsaW5lKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRXhpdCBoZXJlLCBhcyB3ZSBoYXZlIGZvdW5kIHRoZSBjb21tYW5kICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyMzMsMTQgKzEyNjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqY29tbWFuZCAmJiAhdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIkludmFsaWQgdmVyc2lvbiBcCi1zcGVjaWZpY2F0aW9uOiAnJXMnLlxuSW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNjcmlwdCwgJ3B5dGhvbicgbmVlZHMgdG8gYmUgXAorc3BlY2lmaWNhdGlvbjogJyVscycuXG5JbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2NyaXB0LCAncHl0aG9uJyBuZWVkcyB0byBiZSBcCiBmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKLSglcykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOworKCVscykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlX2NoaWxkKGlwLT5leGVjdXRhYmxlLCBzdWZmaXgsIGNtZGxpbmUpOwpAQCAtMTMwMSw2ICsxMzM0LDcgQEAKIHsKICAgICB3Y2hhcl90ICogd3A7CiAgICAgd2NoYXJfdCAqIGNvbW1hbmQ7CisgICAgd2NoYXJfdCAqIGV4ZWN1dGFibGU7CiAgICAgd2NoYXJfdCAqIHA7CiAgICAgaW50IHJjID0gMDsKICAgICBzaXplX3QgcGxlbjsKQEAgLTEzNDcsMTcgKzEzODEsMTcgQEAKICAgICAgICAgd2NzbmNweV9zKHAsIE1BWF9QQVRIIC0gcGxlbiwgTCJcXHB5LmluaSIsIF9UUlVOQ0FURSk7CiAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGFwcGRhdGFfaW5pX3BhdGgpOwogICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVscycgbm9uLWV4aXN0ZW50XG4iLCBhcHBkYXRhX2luaV9wYXRoKTsKICAgICAgICAgICAgIGFwcGRhdGFfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgbG9jYWwgY29uZmlndXJhdGlvbiBmaWxlICclcydcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICAgICAgZGVidWcoTCJVc2luZyBsb2NhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVscydcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOwogICAgICAgICB9CiAgICAgfQogICAgIHBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZVcoTlVMTCwgbGF1bmNoZXJfaW5pX3BhdGgsIE1BWF9QQVRIKTsKICAgICBzaXplID0gR2V0RmlsZVZlcnNpb25JbmZvU2l6ZVcobGF1bmNoZXJfaW5pX3BhdGgsICZzaXplKTsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKLSAgICAgICAgZGVidWcoTCJHZXRGaWxlVmVyc2lvbkluZm9TaXplIGZhaWxlZDogJXNcbiIsIG1lc3NhZ2UpOworICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mb1NpemUgZmFpbGVkOiAlbHNcbiIsIG1lc3NhZ2UpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgdmVyc2lvbl9kYXRhID0gbWFsbG9jKHNpemUpOwpAQCAtMTM4MSw3ICsxNDE1LDcgQEAKICAgICB9CiAgICAgcCA9IHdjc3JjaHIobGF1bmNoZXJfaW5pX3BhdGgsIEwnXFwnKTsKICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIGRlYnVnKEwiR2V0TW9kdWxlRmlsZU5hbWVXIHJldHVybmVkIHZhbHVlIGhhcyBubyBiYWNrc2xhc2g6ICVzXG4iLAorICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gYmFja3NsYXNoOiAlbHNcbiIsCiAgICAgICAgICAgICAgIGxhdW5jaGVyX2luaV9wYXRoKTsKICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKICAgICB9CkBAIC0xMzkwLDE1ICsxNDI0LDE1IEBACiAgICAgICAgICAgICAgICAgICBfVFJVTkNBVEUpOwogICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhsYXVuY2hlcl9pbmlfcGF0aCk7CiAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgewotICAgICAgICAgICAgZGVidWcoTCJGaWxlICclcycgbm9uLWV4aXN0ZW50XG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVscycgbm9uLWV4aXN0ZW50XG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CiAgICAgICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aFswXSA9IEwnXDAnOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGVidWcoTCJVc2luZyBnbG9iYWwgY29uZmlndXJhdGlvbiBmaWxlICclcydcbiIsIGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJWxzJ1xuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgY29tbWFuZCA9IHNraXBfbWUoR2V0Q29tbWFuZExpbmVXKCkpOwotICAgIGRlYnVnKEwiQ2FsbGVkIHdpdGggY29tbWFuZCBsaW5lOiAlc1xuIiwgY29tbWFuZCk7CisgICAgZGVidWcoTCJDYWxsZWQgd2l0aCBjb21tYW5kIGxpbmU6ICVsc1xuIiwgY29tbWFuZCk7CiAKICNpZiBkZWZpbmVkKFNDUklQVF9XUkFQUEVSKQogICAgIC8qIFRoZSBsYXVuY2hlciBpcyBiZWluZyB1c2VkIGluICJzY3JpcHQgd3JhcHBlciIgbW9kZS4KQEAgLTE0MjIsNyArMTQ1Niw3IEBACiAgICAgICAgIHdjc2NweV9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgd3JhcHBlZF9zY3JpcHRfcGF0aCk7CiAgICAgICAgIHdjc2NhdF9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgTCIgIik7CiAgICAgICAgIHdjc2NhdF9zKG5ld2NvbW1hbmQsIG5ld2xlbiwgY29tbWFuZCk7Ci0gICAgICAgIGRlYnVnKEwiUnVubmluZyB3cmFwcGVkIHNjcmlwdCB3aXRoIGNvbW1hbmQgbGluZSAnJXMnXG4iLCBuZXdjb21tYW5kKTsKKyAgICAgICAgZGVidWcoTCJSdW5uaW5nIHdyYXBwZWQgc2NyaXB0IHdpdGggY29tbWFuZCBsaW5lICclbHMnXG4iLCBuZXdjb21tYW5kKTsKICAgICAgICAgcmVhZF9jb21tYW5kcygpOwogICAgICAgICBhdlswXSA9IHdyYXBwZWRfc2NyaXB0X3BhdGg7CiAgICAgICAgIGF2WzFdID0gTlVMTDsKQEAgLTE0NDMsOCArMTQ3Nyw5IEBACiAgICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gKCVzKSBub3QgXAorICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gKCVscykgbm90IFwKIGluc3RhbGxlZCIsICZwWzFdKTsKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBpcC0+ZXhlY3V0YWJsZTsKICAgICAgICAgICAgIGNvbW1hbmQgKz0gd2NzbGVuKHApOwogICAgICAgICAgICAgY29tbWFuZCA9IHNraXBfd2hpdGVzcGFjZShjb21tYW5kKTsKICAgICAgICAgfQpAQCAtMTQ2Miw5ICsxNDk3LDE2IEBACiAjZW5kaWYKIAogICAgIGlmICghdmFsaWQpIHsKLSAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIik7Ci0gICAgICAgIGlmIChpcCA9PSBOVUxMKQotICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIkNhbid0IGZpbmQgYSBkZWZhdWx0IFB5dGhvbi4iKTsKKyAgICAgICAgLyogTG9vayBmb3IgYW4gYWN0aXZlIHZpcnR1YWxlbnYgKi8KKyAgICAgICAgZXhlY3V0YWJsZSA9IGZpbmRfcHl0aG9uX2J5X3ZlbnYoKTsKKworICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgZmluZCBvbmUsIGxvb2sgZm9yIHRoZSBkZWZhdWx0IFB5dGhvbiAqLworICAgICAgICBpZiAoZXhlY3V0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CisgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CisgICAgICAgIH0KICAgICAgICAgaWYgKChhcmdjID09IDIpICYmICghX3djc2ljbXAocCwgTCItaCIpIHx8ICFfd2NzaWNtcChwLCBMIi0taGVscCIpKSkgewogI2lmIGRlZmluZWQoX01fWDY0KQogICAgICAgICAgICAgQk9PTCBjYW5EbzY0Yml0ID0gVFJVRTsKQEAgLTE0NzYsOSArMTUxOCw5IEBACiAKICAgICAgICAgICAgIGdldF92ZXJzaW9uX2luZm8odmVyc2lvbl90ZXh0LCBNQVhfUEFUSCk7CiAgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAotUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIFZlcnNpb24gJXNcblxuIiwgdmVyc2lvbl90ZXh0KTsKK1B5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBWZXJzaW9uICVsc1xuXG4iLCB2ZXJzaW9uX3RleHQpOwogICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKLXVzYWdlOiAlcyBbIGxhdW5jaGVyLWFyZ3VtZW50cyBdIFsgcHl0aG9uLWFyZ3VtZW50cyBdIHNjcmlwdCBbIHNjcmlwdC1hcmd1bWVudHMgXVxuXG4iLCBhcmd2WzBdKTsKK3VzYWdlOiAlbHMgWyBsYXVuY2hlci1hcmd1bWVudHMgXSBbIHB5dGhvbi1hcmd1bWVudHMgXSBzY3JpcHQgWyBzY3JpcHQtYXJndW1lbnRzIF1cblxuIiwgYXJndlswXSk7CiAgICAgICAgICAgICBmcHV0d3MoTCJcCiBMYXVuY2hlciBhcmd1bWVudHM6XG5cblwKIC0yICAgICA6IExhdW5jaCB0aGUgbGF0ZXN0IFB5dGhvbiAyLnggdmVyc2lvblxuXApAQCAtMTQ5Miw3ICsxNTM0LDcgQEAKICAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgICB9CiAgICAgfQotICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY29tbWFuZCk7CisgICAgaW52b2tlX2NoaWxkKGV4ZWN1dGFibGUsIE5VTEwsIGNvbW1hbmQpOwogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCAxOGRlYzZkLi41MmQ0MTAwIDEwMDY0NAotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMzIsNDIxICszMiw0NTEgQEAKICNlbmRpZgogI2VuZGlmCiAKLS8vIEZvcmNlIHRoZSBtYWxsb2MgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAsIGFuZCBmcmVlIHVudXNlZCBibG9ja3MKLS8vIGJhY2sgdG8gdGhlIE9TLiAgKEFjY29yZGluZyB0byB0aGUgZG9jcywgb25seSB3b3JrcyBvbiBOVC4pCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2hlYXBtaW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmhlYXBtaW4iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisvKltweXRob24gaW5wdXRdCitjbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICBmb3JtYXRfdW5pdCA9ICciX1B5X1BBUlNFX0lOVFBUUiInCiAKK2NsYXNzIGhhbmRsZV9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICBjYXN0ID0gJyh2b2lkICopJworICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21Wb2lkUHRyJworCitjbGFzcyBieXRlX2NoYXJfcmV0dXJuX2NvbnZlcnRlcihDUmV0dXJuQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludCcKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBkYXRhLmRlY2xhcmF0aW9ucy5hcHBlbmQoJ2NoYXIgc1sxXTsnKQorICAgICAgICBkYXRhLnJldHVybl92YWx1ZSA9ICdzWzBdJworICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKKyAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIDEpO1xuJykKKworY2xhc3Mgd2NoYXJfdF9yZXR1cm5fY29udmVydGVyKENSZXR1cm5Db252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnd2NoYXJfdCcKKworICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgorICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCisgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpO1xuJykKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhNTRmYzRlNzNkMGIzNjddKi8KKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIG1zdmNydAorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZjMxYTg3YTc4M2QwMzZjZF0qLworCisjaW5jbHVkZSAiY2xpbmljL21zdmNydG1vZHVsZS5jLmgiCisKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5oZWFwbWluCisKK01pbmltaXplIHRoZSBtYWxsb2MoKSBoZWFwLgorCitGb3JjZSB0aGUgbWFsbG9jKCkgaGVhcCB0byBjbGVhbiBpdHNlbGYgdXAgYW5kIHJldHVybiB1bnVzZWQgYmxvY2tzCit0byB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgT1NFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK21zdmNydF9oZWFwbWluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NjRmODY2ZmViNTdjNDM2IGlucHV0PTgyZTE3NzFkMjFiZGUyZDhdKi8KK3sKICAgICBpZiAoX2hlYXBtaW4oKSAhPSAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmxvY2tpbmcKIAotUHlEb2NfU1RSVkFSKGhlYXBtaW5fZG9jLAotImhlYXBtaW4oKSAtPiBOb25lXG5cCi1cblwKLUZvcmNlIHRoZSBtYWxsb2MoKSBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3NcblwKLXRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiBPbiBmYWlsdXJlLCB0aGlzIHJhaXNlcyBJT0Vycm9yLiIpOworICAgIGZkOiBpbnQKKyAgICBtb2RlOiBpbnQKKyAgICBuYnl0ZXM6IGxvbmcKKyAgICAvCiAKLS8vIFBlcmZvcm0gbG9ja2luZyBvcGVyYXRpb25zIG9uIGEgQyBydW50aW1lIGZpbGUgZGVzY3JpcHRvci4KK0xvY2sgcGFydCBvZiBhIGZpbGUgYmFzZWQgb24gZmlsZSBkZXNjcmlwdG9yIGZkIGZyb20gdGhlIEMgcnVudGltZS4KKworUmFpc2VzIElPRXJyb3Igb24gZmFpbHVyZS4gVGhlIGxvY2tlZCByZWdpb24gb2YgdGhlIGZpbGUgZXh0ZW5kcyBmcm9tCit0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIGZvciBuYnl0ZXMgYnl0ZXMsIGFuZCBtYXkgY29udGludWUgYmV5b25kCit0aGUgZW5kIG9mIHRoZSBmaWxlLiBtb2RlIG11c3QgYmUgb25lIG9mIHRoZSBMS18qIGNvbnN0YW50cyBsaXN0ZWQKK2JlbG93LiBNdWx0aXBsZSByZWdpb25zIGluIGEgZmlsZSBtYXkgYmUgbG9ja2VkIGF0IHRoZSBzYW1lIHRpbWUsIGJ1dAorbWF5IG5vdCBvdmVybGFwLiBBZGphY2VudCByZWdpb25zIGFyZSBub3QgbWVyZ2VkOyB0aGV5IG11c3QgYmUgdW5sb2NrZWQKK2luZGl2aWR1YWxseS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9sb2NraW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF9sb2NraW5nX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IGZkLCBpbnQgbW9kZSwgbG9uZyBuYnl0ZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGZmNDFlNWU3NmQ1NDRkZSBpbnB1dD1kOWYxM2YwZjZhNzEzYmE3XSovCiB7Ci0gICAgaW50IGZkOwotICAgIGludCBtb2RlOwotICAgIGxvbmcgbmJ5dGVzOwogICAgIGludCBlcnI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwgJmZkLCAmbW9kZSwgJm5ieXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGVyciA9IF9sb2NraW5nKGZkLCBtb2RlLCBuYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIobG9ja2luZ19kb2MsCi0ibG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKSAtPiBOb25lXG5cCi1cblwKLUxvY2sgcGFydCBvZiBhIGZpbGUgYmFzZWQgb24gZmlsZSBkZXNjcmlwdG9yIGZkIGZyb20gdGhlIEMgcnVudGltZS5cblwKLVJhaXNlcyBJT0Vycm9yIG9uIGZhaWx1cmUuIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbVxuXAotdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBmb3IgbmJ5dGVzIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZFxuXAotdGhlIGVuZCBvZiB0aGUgZmlsZS4gbW9kZSBtdXN0IGJlIG9uZSBvZiB0aGUgTEtfKiBjb25zdGFudHMgbGlzdGVkXG5cCi1iZWxvdy4gTXVsdGlwbGUgcmVnaW9ucyBpbiBhIGZpbGUgbWF5IGJlIGxvY2tlZCBhdCB0aGUgc2FtZSB0aW1lLCBidXRcblwKLW1heSBub3Qgb3ZlcmxhcC4gQWRqYWNlbnQgcmVnaW9ucyBhcmUgbm90IG1lcmdlZDsgdGhleSBtdXN0IGJlIHVubG9ja2VkXG5cCi1pbmRpdmlkdWFsbHkuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuc2V0bW9kZSAtPiBsb25nCiAKLS8vIFNldCB0aGUgZmlsZSB0cmFuc2xhdGlvbiBtb2RlIGZvciBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IuCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3NldG1vZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIGZkOiBpbnQKKyAgICBtb2RlIGFzIGZsYWdzOiBpbnQKKyAgICAvCisKK1NldCB0aGUgbGluZS1lbmQgdHJhbnNsYXRpb24gbW9kZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworVG8gc2V0IGl0IHRvIHRleHQgbW9kZSwgZmxhZ3Mgc2hvdWxkIGJlIG9zLk9fVEVYVDsgZm9yIGJpbmFyeSwgaXQKK3Nob3VsZCBiZSBvcy5PX0JJTkFSWS4KKworUmV0dXJuIHZhbHVlIGlzIHRoZSBwcmV2aW91cyBtb2RlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgbG9uZworbXN2Y3J0X3NldG1vZGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgZmQsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04Yzg0ZTViMzdjNTg2ZDBkIGlucHV0PTc2ZTdjMDFmNmIxMzdmNzVdKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgaW50IGZsYWdzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaTpzZXRtb2RlIiwgJmZkLCAmZmxhZ3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGZsYWdzID0gX3NldG1vZGUoZmQsIGZsYWdzKTsKICAgICBpZiAoZmxhZ3MgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZmxhZ3MpOworICAgIHJldHVybiBmbGFnczsKIH0KIAotUHlEb2NfU1RSVkFSKHNldG1vZGVfZG9jLAotInNldG1vZGUoZmQsIG1vZGUpIC0+IFByZXZpb3VzIG1vZGVcblwKLVxuXAotU2V0IHRoZSBsaW5lLWVuZCB0cmFuc2xhdGlvbiBtb2RlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLiBUbyBzZXRcblwKLWl0IHRvIHRleHQgbW9kZSwgZmxhZ3Mgc2hvdWxkIGJlIG9zLk9fVEVYVDsgZm9yIGJpbmFyeSwgaXQgc2hvdWxkIGJlXG5cCi1vcy5PX0JJTkFSWS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5vcGVuX29zZmhhbmRsZSAtPiBsb25nCiAKLS8vIENvbnZlcnQgYW4gT1MgZmlsZSBoYW5kbGUgdG8gYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yLgotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9vcGVuX29zZmhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisgICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGZsYWdzOiBpbnQKKyAgICAvCisKK0NyZWF0ZSBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgZmlsZSBoYW5kbGUgaGFuZGxlLgorCitUaGUgZmxhZ3MgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGJpdHdpc2UgT1Igb2Ygb3MuT19BUFBFTkQsIG9zLk9fUkRPTkxZLAorYW5kIG9zLk9fVEVYVC4gVGhlIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvciBtYXkgYmUgdXNlZCBhcyBhIHBhcmFtZXRlcgordG8gb3MuZmRvcGVuKCkgdG8gY3JlYXRlIGEgZmlsZSBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODZiY2UzMjU4MmM0OWMwNiBpbnB1dD00ZDg1MTZlZDMyZGI4ZjY1XSovCiB7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOwotICAgIGludCBmbGFnczsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX0lOVFBUUiAiaTpvcGVuX29zZmhhbmRsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZmbGFncykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZmQgPSBfb3Blbl9vc2ZoYW5kbGUoaGFuZGxlLCBmbGFncyk7CiAgICAgaWYgKGZkID09IC0xKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGZkKTsKKyAgICByZXR1cm4gZmQ7CiB9CiAKLVB5RG9jX1NUUlZBUihvcGVuX29zZmhhbmRsZV9kb2MsCi0ib3Blbl9vc2ZoYW5kbGUoaGFuZGxlLCBmbGFncykgLT4gZmlsZSBkZXNjcmlwdG9yXG5cCi1cblwKLUNyZWF0ZSBhIEMgcnVudGltZSBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgZmlsZSBoYW5kbGUgaGFuZGxlLiBUaGVcblwKLWZsYWdzIHBhcmFtZXRlciBzaG91bGQgYmUgYSBiaXR3aXNlIE9SIG9mIG9zLk9fQVBQRU5ELCBvcy5PX1JET05MWSxcblwKLWFuZCBvcy5PX1RFWFQuIFRoZSByZXR1cm5lZCBmaWxlIGRlc2NyaXB0b3IgbWF5IGJlIHVzZWQgYXMgYSBwYXJhbWV0ZXJcblwKLXRvIG9zLmZkb3BlbigpIHRvIGNyZWF0ZSBhIGZpbGUgb2JqZWN0LiIpOworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmdldF9vc2ZoYW5kbGUgLT4gaGFuZGxlCiAKLS8vIENvbnZlcnQgYSBDIHJ1bnRpbWUgZmlsZSBkZXNjcmlwdG9yIHRvIGFuIE9TIGZpbGUgaGFuZGxlLgotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXRfb3NmaGFuZGxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKKyAgICBmZDogaW50CisgICAgLworCitSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgorCitSYWlzZXMgSU9FcnJvciBpZiBmZCBpcyBub3QgcmVjb2duaXplZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5X2ludHB0cl90Cittc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBmZCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNzZiZmY1MjU4NmI1NWE2IGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KIHsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIFB5X2ludHB0cl90IGhhbmRsZSA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgfQorICAgIGVsc2UgeworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIGlmIChoYW5kbGUgPT0gLTEpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgfQogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotCi0gICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOwotICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0KLSAgICAvKiB0ZWNobmljYWxseSAnaGFuZGxlJyBpcyBub3QgYSBwb2ludGVyLCBidXQgYSBpbnRlZ2VyIGFzCi0gICAgICAgbGFyZ2UgYXMgYSBwb2ludGVyLCBQeXRob24ncyAqVm9pZFB0ciBpbnRlcmZhY2UgaXMgdGhlCi0gICAgICAgbW9zdCBhcHByb3ByaWF0ZSBoZXJlICovCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCopaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxlOwogfQogCi1QeURvY19TVFJWQVIoZ2V0X29zZmhhbmRsZV9kb2MsCi0iZ2V0X29zZmhhbmRsZShmZCkgLT4gZmlsZSBoYW5kbGVcblwKLVxuXAotUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gUmFpc2VzIElPRXJyb3JcblwKLWlmIGZkIGlzIG5vdCByZWNvZ25pemVkLiIpOwotCiAvKiBDb25zb2xlIEkvTyAqLworLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LmtiaGl0IC0+IGxvbmcKIAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9rYmhpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitSZXR1cm4gdHJ1ZSBpZiBhIGtleXByZXNzIGlzIHdhaXRpbmcgdG8gYmUgcmVhZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9rYmhpdF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmI3MjkzZmNiZTVjYjI0ZSBpbnB1dD1lNzBkNjc4YTVjMmY2YWNjXSovCiB7Ci0gICAgaW50IG9rOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6a2JoaXQiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBvayA9IF9rYmhpdCgpOwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob2spOworICAgIHJldHVybiBfa2JoaXQoKTsKIH0KIAotUHlEb2NfU1RSVkFSKGtiaGl0X2RvYywKLSJrYmhpdCgpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHRydWUgaWYgYSBrZXlwcmVzcyBpcyB3YWl0aW5nIHRvIGJlIHJlYWQuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0Y2ggLT4gYnl0ZV9jaGFyCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorUmVhZCBhIGtleXByZXNzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIgYXMgYSBieXRlIHN0cmluZy4KKworTm90aGluZyBpcyBlY2hvZWQgdG8gdGhlIGNvbnNvbGUuIFRoaXMgY2FsbCB3aWxsIGJsb2NrIGlmIGEga2V5cHJlc3MgaXMKK25vdCBhbHJlYWR5IGF2YWlsYWJsZSwgYnV0IHdpbGwgbm90IHdhaXQgZm9yIEVudGVyIHRvIGJlIHByZXNzZWQuIElmIHRoZQorcHJlc3NlZCBrZXkgd2FzIGEgc3BlY2lhbCBmdW5jdGlvbiBrZXksIHRoaXMgd2lsbCByZXR1cm4gJ1wwMDAnIG9yCisnXHhlMCc7IHRoZSBuZXh0IGNhbGwgd2lsbCByZXR1cm4gdGhlIGtleWNvZGUuIFRoZSBDb250cm9sLUMga2V5cHJlc3MKK2Nhbm5vdCBiZSByZWFkIHdpdGggdGhpcyBmdW5jdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorbXN2Y3J0X2dldGNoX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTllM2Q4OWY0OWMxNjZhIGlucHV0PTM3YTQwY2YwZWQwZDExNTNdKi8KIHsKICAgICBpbnQgY2g7Ci0gICAgY2hhciBzWzFdOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0Y2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0Y2goKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIHNbMF0gPSBjaDsKLSAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCAxKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXRjaF9kb2MsCi0iZ2V0Y2goKSAtPiBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVJlYWQgYSBrZXlwcmVzcyBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyIGFzIGEgYnl0ZSBzdHJpbmcuXG5cCi1Ob3RoaW5nIGlzIGVjaG9lZCB0byB0aGUgY29uc29sZS4gVGhpcyBjYWxsIHdpbGwgYmxvY2sgaWYgYSBrZXlwcmVzcyBpc1xuXAotbm90IGFscmVhZHkgYXZhaWxhYmxlLCBidXQgd2lsbCBub3Qgd2FpdCBmb3IgRW50ZXIgdG8gYmUgcHJlc3NlZC4gSWYgdGhlXG5cCi1wcmVzc2VkIGtleSB3YXMgYSBzcGVjaWFsIGZ1bmN0aW9uIGtleSwgdGhpcyB3aWxsIHJldHVybiAnXFwwMDAnIG9yXG5cCi0nXFx4ZTAnOyB0aGUgbmV4dCBjYWxsIHdpbGwgcmV0dXJuIHRoZSBrZXljb2RlLiBUaGUgQ29udHJvbC1DIGtleXByZXNzXG5cCi1jYW5ub3QgYmUgcmVhZCB3aXRoIHRoaXMgZnVuY3Rpb24uIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0d2NoIC0+IHdjaGFyX3QKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAotc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF9nZXR3Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorV2lkZSBjaGFyIHZhcmlhbnQgb2YgZ2V0Y2goKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlkMzc2Mjg2MTMyOGIxZmUgaW5wdXQ9MjdiM2RlYzhhZDgyM2Q3Y10qLwogewogICAgIHdjaGFyX3QgY2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXR3Y2giKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0d2NoKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXR3Y2hfZG9jLAotImdldHdjaCgpIC0+IFVuaWNvZGUga2V5IGNoYXJhY3RlclxuXAotXG5cCi1XaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaCgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLiIpOwotI2VuZGlmCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0Y2hlIC0+IGJ5dGVfY2hhcgogCi1zdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X2dldGNoZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitTaW1pbGFyIHRvIGdldGNoKCksIGJ1dCB0aGUga2V5cHJlc3Mgd2lsbCBiZSBlY2hvZWQgaWYgcG9zc2libGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK21zdmNydF9nZXRjaGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThhYTM2OWJlNjU1MDA2OGUgaW5wdXQ9NDMzMTFhZGU5ZWQ0YTljMF0qLwogewogICAgIGludCBjaDsKLSAgICBjaGFyIHNbMV07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXRjaGUiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0Y2hlKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBzWzBdID0gY2g7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgMSk7CisgICAgcmV0dXJuIGNoOwogfQogCi1QeURvY19TVFJWQVIoZ2V0Y2hlX2RvYywKLSJnZXRjaGUoKSAtPiBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVNpbWlsYXIgdG8gZ2V0Y2goKSwgYnV0IHRoZSBrZXlwcmVzcyB3aWxsIGJlIGVjaG9lZCBpZiBpdCByZXByZXNlbnRzXG5cCi1hIHByaW50YWJsZSBjaGFyYWN0ZXIuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuZ2V0d2NoZSAtPiB3Y2hhcl90CiAKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKLXN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfZ2V0d2NoZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitXaWRlIGNoYXIgdmFyaWFudCBvZiBnZXRjaGUoKSwgcmV0dXJuaW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIHdjaGFyX3QKK21zdmNydF9nZXR3Y2hlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNjkzY2Y3OGUzZWEwY2Y2IGlucHV0PTQ5MzM3ZDU5ZDFhNTkxZjhdKi8KIHsKICAgICB3Y2hhcl90IGNoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0d2NoZSIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBjaCA9IF9nZXR3Y2hlKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKKyAgICByZXR1cm4gY2g7CiB9CiAKLVB5RG9jX1NUUlZBUihnZXR3Y2hlX2RvYywKLSJnZXR3Y2hlKCkgLT4gVW5pY29kZSBrZXkgY2hhcmFjdGVyXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIGdldGNoZSgpLCByZXR1cm5pbmcgYSBVbmljb2RlIHZhbHVlLiIpOwotI2VuZGlmCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQucHV0Y2gKKworICAgIGNoYXI6IGNoYXIKKyAgICAvCisKK1ByaW50IHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIHRoZSBjb25zb2xlIHdpdGhvdXQgYnVmZmVyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbXN2Y3J0X3B1dGNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF9wdXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNoYXIgY2hhcl92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMDU1NDhiMTE1NTRmMzZmIGlucHV0PWVjMDc4ZGQxMGNiMDU0ZDZdKi8KIHsKLSAgICBjaGFyIGNoOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJjOnB1dGNoIiwgJmNoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBfcHV0Y2goY2gpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBfcHV0Y2goY2hhcl92YWx1ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKLVB5RG9jX1NUUlZBUihwdXRjaF9kb2MsCi0icHV0Y2goY2hhcikgLT4gTm9uZVxuXAotXG5cCi1QcmludCB0aGUgYnl0ZSBzdHJpbmcgY2hhciB0byB0aGUgY29uc29sZSB3aXRob3V0IGJ1ZmZlcmluZy4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5wdXR3Y2gKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAorICAgIHVuaWNvZGVfY2hhcjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1dpZGUgY2hhciB2YXJpYW50IG9mIHB1dGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfcHV0d2NoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK21zdmNydF9wdXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMyMTZhNzM2OTRjYTczZGQgaW5wdXQ9OTk2Y2NkMGJiY2JhYzRjM10qLwogewotICAgIGludCBjaDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQzpwdXR3Y2giLCAmY2gpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIF9wdXR3Y2goY2gpOworICAgIF9wdXR3Y2godW5pY29kZV9jaGFyKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogfQogCi1QeURvY19TVFJWQVIocHV0d2NoX2RvYywKLSJwdXR3Y2godW5pY29kZV9jaGFyKSAtPiBOb25lXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIHB1dGNoKCksIGFjY2VwdGluZyBhIFVuaWNvZGUgdmFsdWUuIik7Ci0jZW5kaWYKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC51bmdldGNoCisKKyAgICBjaGFyOiBjaGFyCisgICAgLworCitPcHBvc2l0ZSBvZiBnZXRjaC4KKworQ2F1c2UgdGhlIGJ5dGUgc3RyaW5nIGNoYXIgdG8gYmUgInB1c2hlZCBiYWNrIiBpbnRvIHRoZQorY29uc29sZSBidWZmZXI7IGl0IHdpbGwgYmUgdGhlIG5leHQgY2hhcmFjdGVyIHJlYWQgYnkKK2dldGNoKCkgb3IgZ2V0Y2hlKCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tc3ZjcnRfdW5nZXRjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfdW5nZXRjaF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGNoYXIgY2hhcl92YWx1ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOWE0Y2QzMjQ5NzA5ZWM5IGlucHV0PTIyZjA3ZWU5MDAxYmJmMGZdKi8KIHsKLSAgICBjaGFyIGNoOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJjOnVuZ2V0Y2giLCAmY2gpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChfdW5nZXRjaChjaCkgPT0gRU9GKQorICAgIGlmIChfdW5nZXRjaChjaGFyX3ZhbHVlKSA9PSBFT0YpCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIodW5nZXRjaF9kb2MsCi0idW5nZXRjaChjaGFyKSAtPiBOb25lXG5cCi1cblwKLUNhdXNlIHRoZSBieXRlIHN0cmluZyBjaGFyIHRvIGJlIFwicHVzaGVkIGJhY2tcIiBpbnRvIHRoZVxuXAotY29uc29sZSBidWZmZXI7IGl0IHdpbGwgYmUgdGhlIG5leHQgY2hhcmFjdGVyIHJlYWQgYnlcblwKLWdldGNoKCkgb3IgZ2V0Y2hlKCkuIik7CisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQudW5nZXR3Y2gKIAotI2lmZGVmIF9XQ09OSU9fREVGSU5FRAorICAgIHVuaWNvZGVfY2hhcjogaW50KGFjY2VwdD17c3RyfSkKKyAgICAvCisKK1dpZGUgY2hhciB2YXJpYW50IG9mIHVuZ2V0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLW1zdmNydF91bmdldHdjaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCittc3ZjcnRfdW5nZXR3Y2hfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgdW5pY29kZV9jaGFyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFlZTc2NzQ3MTAzMjJiZDEgaW5wdXQ9ODNlYzA0OTJiZTA0ZDU2NF0qLwogewotICAgIGludCBjaDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQzp1bmdldHdjaCIsICZjaCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKF91bmdldHdjaChjaCkgPT0gV0VPRikKKyAgICBpZiAoX3VuZ2V0d2NoKHVuaWNvZGVfY2hhcikgPT0gV0VPRikKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0KLVB5RG9jX1NUUlZBUih1bmdldHdjaF9kb2MsCi0idW5nZXR3Y2godW5pY29kZV9jaGFyKSAtPiBOb25lXG5cCi1cblwKLVdpZGUgY2hhciB2YXJpYW50IG9mIHVuZ2V0Y2goKSwgYWNjZXB0aW5nIGEgVW5pY29kZSB2YWx1ZS4iKTsKLSNlbmRpZgotCi1zdGF0aWMgdm9pZAotaW5zZXJ0aW50KFB5T2JqZWN0ICpkLCBjaGFyICpuYW1lLCBpbnQgdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsKLSAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIERvbid0IGJvdGhlciByZXBvcnRpbmcgdGhpcyBlcnJvciAqLwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgbmFtZSwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKICNpZmRlZiBfREVCVUcKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5DcnRTZXRSZXBvcnRGaWxlIC0+IGxvbmcKIAotc3RhdGljIFB5T2JqZWN0KgotbXN2Y3J0X3NldHJlcG9ydGZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIHR5cGU6IGludAorICAgIGZpbGU6IGludAorICAgIC8KKworV3JhcHBlciBhcm91bmQgX0NydFNldFJlcG9ydEZpbGUuCisKK09ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9DcnRTZXRSZXBvcnRGaWxlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgaW50IHR5cGUsIGludCBmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThjMzY0NGZiMmVkZmE4MDggaW5wdXQ9YmI4ZjcyMWE2MDRmY2M0NV0qLwogewotICAgIGludCB0eXBlLCBmaWxlOwotICAgIF9IRklMRSByZXM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpIiwgJnR5cGUsICZmaWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gX0NydFNldFJlcG9ydEZpbGUodHlwZSwgKF9IRklMRSlmaWxlKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXJlcyk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiAobG9uZylfQ3J0U2V0UmVwb3J0RmlsZSh0eXBlLCAoX0hGSUxFKWZpbGUpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi1tc3ZjcnRfc2V0cmVwb3J0bW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisvKltjbGluaWMgaW5wdXRdCittc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZSAtPiBsb25nCisKKyAgICB0eXBlOiBpbnQKKyAgICBtb2RlOiBpbnQKKyAgICAvCisKK1dyYXBwZXIgYXJvdW5kIF9DcnRTZXRSZXBvcnRNb2RlLgorCitPbmx5IGF2YWlsYWJsZSBvbiBEZWJ1ZyBidWlsZHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBsb25nCittc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCB0eXBlLCBpbnQgbW9kZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNDA3ZmJmODcxNmE1MmI5IGlucHV0PTkzMTlkMjliNDMxOTQyNmJdKi8KIHsKLSAgICBpbnQgdHlwZSwgbW9kZTsKICAgICBpbnQgcmVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ0eXBlLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlcyA9IF9DcnRTZXRSZXBvcnRNb2RlKHR5cGUsIG1vZGUpOwogICAgIGlmIChyZXMgPT0gLTEpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXMpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotbXN2Y3J0X3NldGVycm9ybW9kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IG1vZGUsIHJlczsKKy8qW2NsaW5pYyBpbnB1dF0KK21zdmNydC5zZXRfZXJyb3JfbW9kZSAtPiBsb25nCiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IF9zZXRfZXJyb3JfbW9kZShtb2RlKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJlcyk7CisgICAgbW9kZTogaW50CisgICAgLworCitXcmFwcGVyIGFyb3VuZCBfc2V0X2Vycm9yX21vZGUuCisKK09ubHkgYXZhaWxhYmxlIG9uIERlYnVnIGJ1aWxkcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGxvbmcKK21zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIGludCBtb2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYyMTQ4YWRmZmE5MDg2N2QgaW5wdXQ9MDQ2ZmNhNTljMGYyMDg3Ml0qLworeworICAgIHJldHVybiBfc2V0X2Vycm9yX21vZGUobW9kZSk7CiB9CisjZW5kaWYgLyogX0RFQlVHICovCiAKLSNlbmRpZgorLypbY2xpbmljIGlucHV0XQorbXN2Y3J0LlNldEVycm9yTW9kZQogCi1zdGF0aWMgUHlPYmplY3QqCi1zZXRlcnJvcm1vZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorICAgIG1vZGU6IHVuc2lnbmVkX2ludChiaXR3aXNlPVRydWUpCisgICAgLworCitXcmFwcGVyIGFyb3VuZCBTZXRFcnJvck1vZGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCittc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgdW5zaWduZWQgaW50IG1vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ0YzYwYjA4NWJlNzljNiBpbnB1dD1kOGIxNjcyNThkMzJkOTA3XSovCiB7Ci0gICAgdW5zaWduZWQgaW50IG1vZGUsIHJlczsKKyAgICB1bnNpZ25lZCBpbnQgcmVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJIiwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBTZXRFcnJvck1vZGUobW9kZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlcyk7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWRhMzlhM2VlNWU2YjRiMGRdKi8KIAogLyogTGlzdCBvZiBmdW5jdGlvbnMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUgKi8KIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbXN2Y3J0X2Z1bmN0aW9uc1tdID0gewotICAgIHsiaGVhcG1pbiIsICAgICAgICAgICAgICAgICBtc3ZjcnRfaGVhcG1pbiwgTUVUSF9WQVJBUkdTLCBoZWFwbWluX2RvY30sCi0gICAgeyJsb2NraW5nIiwgICAgICAgICAgICAgbXN2Y3J0X2xvY2tpbmcsIE1FVEhfVkFSQVJHUywgbG9ja2luZ19kb2N9LAotICAgIHsic2V0bW9kZSIsICAgICAgICAgICAgICAgICBtc3ZjcnRfc2V0bW9kZSwgTUVUSF9WQVJBUkdTLCBzZXRtb2RlX2RvY30sCi0gICAgeyJvcGVuX29zZmhhbmRsZSIsICAgICAgICAgIG1zdmNydF9vcGVuX29zZmhhbmRsZSwgTUVUSF9WQVJBUkdTLCBvcGVuX29zZmhhbmRsZV9kb2N9LAotICAgIHsiZ2V0X29zZmhhbmRsZSIsICAgICAgICAgICBtc3ZjcnRfZ2V0X29zZmhhbmRsZSwgTUVUSF9WQVJBUkdTLCBnZXRfb3NmaGFuZGxlX2RvY30sCi0gICAgeyJrYmhpdCIsICAgICAgICAgICAgICAgICAgIG1zdmNydF9rYmhpdCwgTUVUSF9WQVJBUkdTLCBrYmhpdF9kb2N9LAotICAgIHsiZ2V0Y2giLCAgICAgICAgICAgICAgICAgICBtc3ZjcnRfZ2V0Y2gsIE1FVEhfVkFSQVJHUywgZ2V0Y2hfZG9jfSwKLSAgICB7ImdldGNoZSIsICAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldGNoZSwgTUVUSF9WQVJBUkdTLCBnZXRjaGVfZG9jfSwKLSAgICB7InB1dGNoIiwgICAgICAgICAgICAgICAgICAgbXN2Y3J0X3B1dGNoLCBNRVRIX1ZBUkFSR1MsIHB1dGNoX2RvY30sCi0gICAgeyJ1bmdldGNoIiwgICAgICAgICAgICAgICAgIG1zdmNydF91bmdldGNoLCBNRVRIX1ZBUkFSR1MsIHVuZ2V0Y2hfZG9jfSwKLSAgICB7IlNldEVycm9yTW9kZSIsICAgICAgICAgICAgc2V0ZXJyb3Jtb2RlLCBNRVRIX1ZBUkFSR1N9LAotI2lmZGVmIF9ERUJVRwotICAgIHsiQ3J0U2V0UmVwb3J0RmlsZSIsICAgICAgICBtc3ZjcnRfc2V0cmVwb3J0ZmlsZSwgTUVUSF9WQVJBUkdTfSwKLSAgICB7IkNydFNldFJlcG9ydE1vZGUiLCAgICAgICAgbXN2Y3J0X3NldHJlcG9ydG1vZGUsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJzZXRfZXJyb3JfbW9kZSIsICAgICAgICAgIG1zdmNydF9zZXRlcnJvcm1vZGUsIE1FVEhfVkFSQVJHU30sCi0jZW5kaWYKLSNpZmRlZiBfV0NPTklPX0RFRklORUQKLSAgICB7ImdldHdjaCIsICAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldHdjaCwgTUVUSF9WQVJBUkdTLCBnZXR3Y2hfZG9jfSwKLSAgICB7ImdldHdjaGUiLCAgICAgICAgICAgICAgICAgbXN2Y3J0X2dldHdjaGUsIE1FVEhfVkFSQVJHUywgZ2V0d2NoZV9kb2N9LAotICAgIHsicHV0d2NoIiwgICAgICAgICAgICAgICAgICBtc3ZjcnRfcHV0d2NoLCBNRVRIX1ZBUkFSR1MsIHB1dHdjaF9kb2N9LAotICAgIHsidW5nZXR3Y2giLCAgICAgICAgICAgICAgICBtc3ZjcnRfdW5nZXR3Y2gsIE1FVEhfVkFSQVJHUywgdW5nZXR3Y2hfZG9jfSwKLSNlbmRpZgorICAgIE1TVkNSVF9IRUFQTUlOX01FVEhPRERFRgorICAgIE1TVkNSVF9MT0NLSU5HX01FVEhPRERFRgorICAgIE1TVkNSVF9TRVRNT0RFX01FVEhPRERFRgorICAgIE1TVkNSVF9PUEVOX09TRkhBTkRMRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfR0VUX09TRkhBTkRMRV9NRVRIT0RERUYKKyAgICBNU1ZDUlRfS0JISVRfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVENIX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRDSEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX1BVVENIX01FVEhPRERFRgorICAgIE1TVkNSVF9VTkdFVENIX01FVEhPRERFRgorICAgIE1TVkNSVF9TRVRFUlJPUk1PREVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0NSVFNFVFJFUE9SVEZJTEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX0NSVFNFVFJFUE9SVE1PREVfTUVUSE9EREVGCisgICAgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgorICAgIE1TVkNSVF9HRVRXQ0hfTUVUSE9EREVGCisgICAgTVNWQ1JUX0dFVFdDSEVfTUVUSE9EREVGCisgICAgTVNWQ1JUX1BVVFdDSF9NRVRIT0RERUYKKyAgICBNU1ZDUlRfVU5HRVRXQ0hfTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9CiB9OwogCkBAIC00NjMsNiArNDkzLDIwIEBACiAgICAgTlVMTAogfTsKIAorc3RhdGljIHZvaWQKK2luc2VydGludChQeU9iamVjdCAqZCwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQoreworICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKSB2YWx1ZSk7CisgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICAvKiBEb24ndCBib3RoZXIgcmVwb3J0aW5nIHRoaXMgZXJyb3IgKi8KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHYpOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgfQorfQorCiBQeU1PRElOSVRfRlVOQwogUHlJbml0X21zdmNydCh2b2lkKQogewpkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggZTFjMTk4OC4uZDQ0MTczYSAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0xNDUsMTggKzE0NSwyNCBAQAogI2lmIGRlZmluZWQoX01fSUE2NCkKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjY0IGJpdCAoSXRhbml1bSkiKQogI2RlZmluZSBNU19XSU5JNjQKKyNkZWZpbmUgUFlEX1BMQVRGT1JNX1RBRyAid2luX2lhNjQiCiAjZWxpZiBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfTV9BTUQ2NCkKKyNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisjZGVmaW5lIENPTVBJTEVSICgiW0lDQyB2LiIgX1B5X1NUUklOR0laRShfX0lOVEVMX0NPTVBJTEVSKSAiIDY0IGJpdCAoYW1kNjQpIHdpdGggTVNDIHYuIiBfUHlfU1RSSU5HSVpFKF9NU0NfVkVSKSAiIENSVF0iKQorI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjY0IGJpdCAoQU1ENjQpIikKKyNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCiAjZGVmaW5lIE1TX1dJTlg2NAorI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW5fYW1kNjQiCiAjZWxzZQogI2RlZmluZSBDT01QSUxFUiBfUHlfUEFTVEVfVkVSU0lPTigiNjQgYml0IChVbmtub3duKSIpCiAjZW5kaWYKICNlbmRpZiAvKiBNU19XSU42NCAqLwogCiAvKiBzZXQgdGhlIHZlcnNpb24gbWFjcm9zIGZvciB0aGUgd2luZG93cyBoZWFkZXJzICovCi0vKiBQeXRob24gMy40KyByZXF1aXJlcyBXaW5kb3dzIFhQIG9yIGdyZWF0ZXIgKi8KLSNkZWZpbmUgUHlfV0lOVkVSIDB4MDUwMSAvKiBfV0lOMzJfV0lOTlRfV0lOWFAgKi8KLSNkZWZpbmUgUHlfTlREREkgTlRERElfV0lOWFAKKy8qIFB5dGhvbiAzLjUrIHJlcXVpcmVzIFdpbmRvd3MgVmlzdGEgb3IgZ3JlYXRlciAqLworI2RlZmluZSBQeV9XSU5WRVIgMHgwNjAwIC8qIF9XSU4zMl9XSU5OVF9WSVNUQSAqLworI2RlZmluZSBQeV9OVERESSBOVERESV9WSVNUQQogCiAvKiBXZSBvbmx5IHNldCB0aGVzZSB2YWx1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gLSB3ZSBkb24ndCB3YW50IHRvIGZvcmNlCiAgICB0aGVzZSB2YWx1ZXMgb24gZXh0ZW5zaW9ucywgYXMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgcHJvdG90eXBlcyBhbmQKQEAgLTE5Miw5ICsxOTgsMTUgQEAKIAogI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQogI2lmIGRlZmluZWQoX01fSVg4NikKKyNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCisjZGVmaW5lIENPTVBJTEVSICgiW0lDQyB2LiIgX1B5X1NUUklOR0laRShfX0lOVEVMX0NPTVBJTEVSKSAiIDMyIGJpdCAoSW50ZWwpIHdpdGggTVNDIHYuIiBfUHlfU1RSSU5HSVpFKF9NU0NfVkVSKSAiIENSVF0iKQorI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjMyIGJpdCAoSW50ZWwpIikKKyNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCisjZGVmaW5lIFBZRF9QTEFURk9STV9UQUcgIndpbjMyIgogI2VsaWYgZGVmaW5lZChfTV9BUk0pCiAjZGVmaW5lIENPTVBJTEVSIF9QeV9QQVNURV9WRVJTSU9OKCIzMiBiaXQgKEFSTSkiKQorI2RlZmluZSBQWURfUExBVEZPUk1fVEFHICJ3aW5fYXJtIgogI2Vsc2UKICNkZWZpbmUgQ09NUElMRVIgX1B5X1BBU1RFX1ZFUlNJT04oIjMyIGJpdCAoVW5rbm93bikiKQogI2VuZGlmCkBAIC0yMTMsNiArMjI1LDEzIEBACiAjZGVmaW5lIGh5cG90IF9oeXBvdAogI2VuZGlmCiAKKy8qIFZTIDIwMTUgZGVmaW5lcyB0aGVzZSBuYW1lcyB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlICovCisjaWYgX01TQ19WRVIgPj0gMTkwMAorI2RlZmluZSB0aW1lem9uZSBfdGltZXpvbmUKKyNkZWZpbmUgZGF5bGlnaHQgX2RheWxpZ2h0CisjZGVmaW5lIHR6bmFtZSBfdHpuYW1lCisjZW5kaWYKKwogLyogU2lkZSBieSBTaWRlIGFzc2VtYmxpZXMgc3VwcG9ydGVkIGluIFZTIDIwMDUgYW5kIFZTIDIwMDggYnV0IG5vdCAyMDEwKi8KICNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTYwMAogI2RlZmluZSBIQVZFX1NYUyAxCkBAIC0yMjcsMzUgKzI0Niw2IEBACiAjZW5kaWYgLyogX01TQ19WRVIgKi8KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIFRoZSBCb3JsYW5kIGNvbXBpbGVyIGRlZmluZXMgX19CT1JMQU5EQ19fICovCi0vKiBYWFggVGhlc2UgZGVmaW5lcyBhcmUgbGlrZWx5IGluY29tcGxldGUsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBmaXguICovCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIENPTVBJTEVSICJbQm9ybGFuZF0iCi0KLSNpZmRlZiBfV0lOMzIKLS8qIHRlc3RlZCB3aXRoIEJDQyA1LjUgKF9fQk9STEFORENfXyA+PSAweDA1NTApCi0gKi8KLQotdHlwZWRlZiBpbnQgcGlkX3Q7Ci0vKiBCQ0M1NSBzZWVtcyB0byB1bmRlcnN0YW5kIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSwgaXQgaXMgdXNlZCBpbiBpdHMKLSAgIG93biBoZWFkZXIgZmlsZXMgKHdpbm50LmgsIC4uLikgLSBzbyB3ZSBjYW4gZG8gbm90aGluZyBhbmQgZ2V0IHRoZSBkZWZhdWx0Ki8KLQotI3VuZGVmIEhBVkVfU1lTX1VUSU1FX0gKLSNkZWZpbmUgSEFWRV9VVElNRV9ICi0jZGVmaW5lIEhBVkVfRElSRU5UX0gKLQotLyogcmVuYW1lIGEgZmV3IGZ1bmN0aW9ucyBmb3IgdGhlIEJvcmxhbmQgY29tcGlsZXIgKi8KLSNpbmNsdWRlIDxpby5oPgotI2RlZmluZSBfY2hzaXplIGNoc2l6ZQotI2RlZmluZSBfc2V0bW9kZSBzZXRtb2RlCi0KLSNlbHNlIC8qICFfV0lOMzIgKi8KLSNlcnJvciAiT25seSBXaW4zMiBhbmQgbGF0ZXIgYXJlIHN1cHBvcnRlZCIKLSNlbmRpZiAvKiAhX1dJTjMyICovCi0KLSNlbmRpZiAvKiBCT1JMQU5EQyAqLwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogZWdjcy9nbnUtd2luMzIgZGVmaW5lcyBfX0dOVUNfXyBhbmQgX1dJTjMyICovCiAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfV0lOMzIpCiAvKiBYWFggVGhlc2UgZGVmaW5lcyBhcmUgbGlrZWx5IGluY29tcGxldGUsIGJ1dCBzaG91bGQgYmUgZWFzeSB0byBmaXguCkBAIC0zMjIsMTEgKzMxMiwxMSBAQAogCQkJdGhlaXIgTWFrZWZpbGUgKG90aGVyIGNvbXBpbGVycyBhcmUgZ2VuZXJhbGx5CiAJCQl0YWtlbiBjYXJlIG9mIGJ5IGRpc3R1dGlscy4pICovCiAjCQkJaWYgZGVmaW5lZChfREVCVUcpCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzRfZC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1X2QubGliIikKICMJCQllbGlmIGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMy5saWIiKQogIwkJCWVsc2UKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1LmxpYiIpCiAjCQkJZW5kaWYgLyogX0RFQlVHICovCiAjCQllbmRpZiAvKiBfTVNDX1ZFUiAqLwogIwllbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCmRpZmYgLS1naXQgYS9QQy9weWxhdW5jaGVyLnJjIGIvUEMvcHlsYXVuY2hlci5yYwppbmRleCBkZjU4MjRhLi42MzRiOGQ2IDEwMDY0NAotLS0gYS9QQy9weWxhdW5jaGVyLnJjCisrKyBiL1BDL3B5bGF1bmNoZXIucmMKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIChDb25zb2xlKSIKICAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCiAgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgInB5IgotICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCAoQykgMjAxMS0yMDE0IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgogICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHkiCiAgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIgogICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbi5tYW5pZmVzdCBiL1BDL3B5dGhvbi5tYW5pZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWMyNjMwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvcHl0aG9uLm1hbmlmZXN0CkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4KKzxhc3NlbWJseSB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjEiIG1hbmlmZXN0VmVyc2lvbj0iMS4wIj4KKyAgPGNvbXBhdGliaWxpdHkgeG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206Y29tcGF0aWJpbGl0eS52MSI+IAorICAgIDxhcHBsaWNhdGlvbj4gCisgICAgICA8c3VwcG9ydGVkT1MgSWQ9IntlMjAxMTQ1Ny0xNTQ2LTQzYzUtYTVmZS0wMDhkZWVlM2QzZjB9Ii8+IAorICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7MzUxMzhiOWEtNWQ5Ni00ZmJkLThlMmQtYTI0NDAyMjVmOTNhfSIvPgorICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7NGEyZjI4ZTMtNTNiOS00NDQxLWJhOWMtZDY5ZDRhNGE2ZTM4fSIvPgorICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7MWY2NzZjNzYtODBlMS00MjM5LTk1YmItODNkMGY2ZDBkYTc4fSIvPgorICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7OGUwZjdhMTItYmZiMy00ZmU4LWI5YTUtNDhmZDUwYTE1YTlhfSIvPgorICAgIDwvYXBwbGljYXRpb24+IAorICA8L2NvbXBhdGliaWxpdHk+Cis8L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMuZGVmIGIvUEMvcHl0aG9uMy5kZWYKaW5kZXggMzdlNDU0Yi4uODhjMDc0MiAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5kZWYKKysrIGIvUEMvcHl0aG9uMy5kZWYKQEAgLTEsNzAxICsxLDcxMyBAQAotOyBXaGVuIGNoYW5naW5nIHRoaXMgZmlsZSwgcnVuIHB5dGhvbjM0Z2VuLnB5Cis7IFRoaXMgZmlsZSBzcGVjaWZpZXMgdGhlIGltcG9ydCBmb3J3YXJkaW5nIGZvciBweXRob24zLmRsbAorOyBJdCBpcyB1c2VkIHdoZW4gYnVpbGRpbmcgcHl0aG9uM2RsbC52Y3hwcm9qCiBMSUJSQVJZCSJweXRob24zIgogRVhQT1JUUwotICBQeUFyZ19QYXJzZT1weXRob24zNC5QeUFyZ19QYXJzZQotICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjM0LlB5QXJnX1BhcnNlVHVwbGUKLSAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM0LlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zNC5QeUFyZ19VbnBhY2tUdXBsZQotICBQeUFyZ19WYVBhcnNlPXB5dGhvbjM0LlB5QXJnX1ZhUGFyc2UKLSAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzQuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjM0LlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwotICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zNC5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCi0gIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zNC5QeUJvb2xfRnJvbUxvbmcKLSAgUHlCb29sX1R5cGU9cHl0aG9uMzQuUHlCb29sX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zNC5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X0FzU3RyaW5nCi0gIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zNC5QeUJ5dGVBcnJheV9Db25jYXQKLSAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zNC5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM0LlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zNC5QeUJ5dGVBcnJheV9SZXNpemUKLSAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zNC5QeUJ5dGVBcnJheV9TaXplCi0gIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzQuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzQuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzQuUHlCeXRlc19Bc1N0cmluZwotICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zNC5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX0NvbmNhdD1weXRob24zNC5QeUJ5dGVzX0NvbmNhdAotICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zNC5QeUJ5dGVzX0NvbmNhdEFuZERlbAotICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zNC5QeUJ5dGVzX0RlY29kZUVzY2FwZQotICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzQuUHlCeXRlc19Gcm9tRm9ybWF0Ci0gIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzQuUHlCeXRlc19Gcm9tRm9ybWF0VgotICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzQuUHlCeXRlc19Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zNC5QeUJ5dGVzX0Zyb21TdHJpbmcKLSAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNC5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfUmVwcj1weXRob24zNC5QeUJ5dGVzX1JlcHIKLSAgUHlCeXRlc19TaXplPXB5dGhvbjM0LlB5Qnl0ZXNfU2l6ZQotICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzQuUHlCeXRlc19UeXBlIERBVEEKLSAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zNC5QeUNGdW5jdGlvbl9DYWxsCi0gIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzQuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAotICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zNC5QeUNGdW5jdGlvbl9HZXRGbGFncwotICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zNC5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgotICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX0dldFNlbGYKLSAgUHlDRnVuY3Rpb25fTmV3PXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX05ldwotICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zNC5QeUNGdW5jdGlvbl9OZXdFeAotICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjM0LlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQotICBQeUNhbGxJdGVyX05ldz1weXRob24zNC5QeUNhbGxJdGVyX05ldwotICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzQuUHlDYWxsSXRlcl9UeXBlIERBVEEKLSAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zNC5QeUNhbGxhYmxlX0NoZWNrCi0gIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjM0LlB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjM0LlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjM0LlB5Q2Fwc3VsZV9HZXROYW1lCi0gIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjM0LlB5Q2Fwc3VsZV9HZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzQuUHlDYXBzdWxlX0ltcG9ydAotICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zNC5QeUNhcHN1bGVfSXNWYWxpZAotICBQeUNhcHN1bGVfTmV3PXB5dGhvbjM0LlB5Q2Fwc3VsZV9OZXcKLSAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzQuUHlDYXBzdWxlX1NldENvbnRleHQKLSAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzQuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzQuUHlDYXBzdWxlX1NldE5hbWUKLSAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzQuUHlDYXBzdWxlX1NldFBvaW50ZXIKLSAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzQuUHlDYXBzdWxlX1R5cGUgREFUQQotICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zNC5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zNC5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzQuUHlDb2RlY19EZWNvZGUKLSAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjM0LlB5Q29kZWNfRGVjb2RlcgotICBQeUNvZGVjX0VuY29kZT1weXRob24zNC5QeUNvZGVjX0VuY29kZQotICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzQuUHlDb2RlY19FbmNvZGVyCi0gIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjM0LlB5Q29kZWNfSWdub3JlRXJyb3JzCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjM0LlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjM0LlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCi0gIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zNC5QeUNvZGVjX0tub3duRW5jb2RpbmcKLSAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zNC5QeUNvZGVjX0xvb2t1cEVycm9yCi0gIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzQuUHlDb2RlY19SZWdpc3RlcgotICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzQuUHlDb2RlY19SZWdpc3RlckVycm9yCi0gIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zNC5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzQuUHlDb2RlY19TdHJlYW1SZWFkZXIKLSAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzQuUHlDb2RlY19TdHJlYW1Xcml0ZXIKLSAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzQuUHlDb2RlY19TdHJpY3RFcnJvcnMKLSAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zNC5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCi0gIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zNC5QeUNvbXBsZXhfRnJvbURvdWJsZXMKLSAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zNC5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi0gIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzQuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQotICBQeUNvbXBsZXhfVHlwZT1weXRob24zNC5QeUNvbXBsZXhfVHlwZSBEQVRBCi0gIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzQuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotICBQeURlc2NyX05ld0dldFNldD1weXRob24zNC5QeURlc2NyX05ld0dldFNldAotICBQeURlc2NyX05ld01lbWJlcj1weXRob24zNC5QeURlc2NyX05ld01lbWJlcgotICBQeURlc2NyX05ld01ldGhvZD1weXRob24zNC5QeURlc2NyX05ld01ldGhvZAotICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjM0LlB5RGljdEl0ZW1zX1R5cGUgREFUQQotICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjM0LlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQotICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzQuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzQuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQotICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzQuUHlEaWN0S2V5c19UeXBlIERBVEEKLSAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjM0LlB5RGljdFByb3h5X05ldwotICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjM0LlB5RGljdFByb3h5X1R5cGUgREFUQQotICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zNC5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5RGljdF9DbGVhcj1weXRob24zNC5QeURpY3RfQ2xlYXIKLSAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjM0LlB5RGljdF9Db250YWlucwotICBQeURpY3RfQ29weT1weXRob24zNC5QeURpY3RfQ29weQotICBQeURpY3RfRGVsSXRlbT1weXRob24zNC5QeURpY3RfRGVsSXRlbQotICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zNC5QeURpY3RfRGVsSXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbT1weXRob24zNC5QeURpY3RfR2V0SXRlbQotICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zNC5QeURpY3RfR2V0SXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zNC5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotICBQeURpY3RfSXRlbXM9cHl0aG9uMzQuUHlEaWN0X0l0ZW1zCi0gIFB5RGljdF9LZXlzPXB5dGhvbjM0LlB5RGljdF9LZXlzCi0gIFB5RGljdF9NZXJnZT1weXRob24zNC5QeURpY3RfTWVyZ2UKLSAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzQuUHlEaWN0X01lcmdlRnJvbVNlcTIKLSAgUHlEaWN0X05ldz1weXRob24zNC5QeURpY3RfTmV3Ci0gIFB5RGljdF9OZXh0PXB5dGhvbjM0LlB5RGljdF9OZXh0Ci0gIFB5RGljdF9TZXRJdGVtPXB5dGhvbjM0LlB5RGljdF9TZXRJdGVtCi0gIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjM0LlB5RGljdF9TZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9TaXplPXB5dGhvbjM0LlB5RGljdF9TaXplCi0gIFB5RGljdF9UeXBlPXB5dGhvbjM0LlB5RGljdF9UeXBlIERBVEEKLSAgUHlEaWN0X1VwZGF0ZT1weXRob24zNC5QeURpY3RfVXBkYXRlCi0gIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzQuUHlEaWN0X1ZhbHVlcwotICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzQuUHlFbGxpcHNpc19UeXBlIERBVEEKLSAgUHlFbnVtX1R5cGU9cHl0aG9uMzQuUHlFbnVtX1R5cGUgREFUQQotICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zNC5QeUVycl9CYWRBcmd1bWVudAotICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzQuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zNC5QeUVycl9DaGVja1NpZ25hbHMKLSAgUHlFcnJfQ2xlYXI9cHl0aG9uMzQuUHlFcnJfQ2xlYXIKLSAgUHlFcnJfRGlzcGxheT1weXRob24zNC5QeUVycl9EaXNwbGF5Ci0gIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzQuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9GZXRjaD1weXRob24zNC5QeUVycl9GZXRjaAotICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzQuUHlFcnJfRm9ybWF0Ci0gIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNC5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM0LlB5RXJyX05ld0V4Y2VwdGlvbgotICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM0LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKLSAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzQuUHlFcnJfTm9NZW1vcnkKLSAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM0LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotICBQeUVycl9PY2N1cnJlZD1weXRob24zNC5QeUVycl9PY2N1cnJlZAotICBQeUVycl9QcmludD1weXRob24zNC5QeUVycl9QcmludAotICBQeUVycl9QcmludEV4PXB5dGhvbjM0LlB5RXJyX1ByaW50RXgKLSAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzQuUHlFcnJfUHJvZ3JhbVRleHQKLSAgUHlFcnJfUmVzdG9yZT1weXRob24zNC5QeUVycl9SZXN0b3JlCi0gIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNC5QeUVycl9TZXRGcm9tRXJybm8KLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM0LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzQuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0Ci0gIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNC5QeUVycl9TZXRJbnRlcnJ1cHQKLSAgUHlFcnJfU2V0Tm9uZT1weXRob24zNC5QeUVycl9TZXROb25lCi0gIFB5RXJyX1NldE9iamVjdD1weXRob24zNC5QeUVycl9TZXRPYmplY3QKLSAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM0LlB5RXJyX1NldFN0cmluZwotICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNC5QeUVycl9TeW50YXhMb2NhdGlvbgotICBQeUVycl9XYXJuRXg9cHl0aG9uMzQuUHlFcnJfV2FybkV4Ci0gIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNC5QeUVycl9XYXJuRXhwbGljaXQKLSAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNC5QeUVycl9XYXJuRm9ybWF0Ci0gIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNC5QeUVycl9Xcml0ZVVucmFpc2FibGUKLSAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM0LlB5RXZhbF9BY3F1aXJlTG9jawotICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNC5QeUV2YWxfQWNxdWlyZVRocmVhZAotICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM0LlB5RXZhbF9DYWxsRnVuY3Rpb24KLSAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzQuUHlFdmFsX0NhbGxNZXRob2QKLSAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzQuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKLSAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM0LlB5RXZhbF9FdmFsQ29kZQotICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNC5QeUV2YWxfRXZhbENvZGVFeAotICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM0LlB5RXZhbF9FdmFsRnJhbWUKLSAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM0LlB5RXZhbF9FdmFsRnJhbWVFeAotICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzQuUHlFdmFsX0dldEJ1aWx0aW5zCi0gIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzQuUHlFdmFsX0dldENhbGxTdGF0cwotICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzQuUHlFdmFsX0dldEZyYW1lCi0gIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNC5QeUV2YWxfR2V0RnVuY0Rlc2MKLSAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM0LlB5RXZhbF9HZXRGdW5jTmFtZQotICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNC5QeUV2YWxfR2V0R2xvYmFscwotICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM0LlB5RXZhbF9HZXRMb2NhbHMKLSAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM0LlB5RXZhbF9Jbml0VGhyZWFkcwotICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNC5QeUV2YWxfUmVJbml0VGhyZWFkcwotICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzQuUHlFdmFsX1JlbGVhc2VMb2NrCi0gIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM0LlB5RXZhbF9SZWxlYXNlVGhyZWFkCi0gIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM0LlB5RXZhbF9SZXN0b3JlVGhyZWFkCi0gIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM0LlB5RXZhbF9TYXZlVGhyZWFkCi0gIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzQuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAotICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzQuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKLSAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzQuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQotICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNC5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCi0gIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzQuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM0LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKLSAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCi0gIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNC5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNC5QeUV4Y19FT0ZFcnJvciBEQVRBCi0gIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzQuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCi0gIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNC5QeUV4Y19FeGNlcHRpb24gREFUQQotICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzQuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKLSAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNC5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKLSAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNC5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKLSAgUHlFeGNfSU9FcnJvcj1weXRob24zNC5QeUV4Y19JT0Vycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzQuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQotICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM0LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQotICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM0LlB5RXhjX0luZGV4RXJyb3IgREFUQQotICBQeUV4Y19LZXlFcnJvcj1weXRob24zNC5QeUV4Y19LZXlFcnJvciBEQVRBCi0gIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM0LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKLSAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzQuUHlFeGNfTG9va3VwRXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNC5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNC5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQotICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzQuUHlFeGNfTmFtZUVycm9yIERBVEEKLSAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNC5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKLSAgUHlFeGNfT1NFcnJvcj1weXRob24zNC5QeUV4Y19PU0Vycm9yIERBVEEKLSAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNC5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKLSAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNC5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM0LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM0LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM0LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNC5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKLSAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzQuUHlFeGNfU3ludGF4RXJyb3IgREFUQQotICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQotICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNC5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCi0gIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzQuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCi0gIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM0LlB5RXhjX1RhYkVycm9yIERBVEEKLSAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM0LlB5RXhjX1R5cGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM0LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNC5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzQuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKLSAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzQuUHlFeGNfVXNlcldhcm5pbmcgREFUQQotICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM0LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQotICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM0LlB5RXhjX1dhcm5pbmcgREFUQQotICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNC5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCi0gIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM0LlB5RXhjZXB0aW9uX0dldENhdXNlCi0gIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzQuUHlFeGNlcHRpb25fR2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzQuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCi0gIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM0LlB5RXhjZXB0aW9uX1NldENhdXNlCi0gIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzQuUHlFeGNlcHRpb25fU2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzQuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCi0gIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzQuUHlGaWxlX0Zyb21GZAotICBQeUZpbGVfR2V0TGluZT1weXRob24zNC5QeUZpbGVfR2V0TGluZQotICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzQuUHlGaWxlX1dyaXRlT2JqZWN0Ci0gIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNC5QeUZpbGVfV3JpdGVTdHJpbmcKLSAgUHlGaWx0ZXJfVHlwZT1weXRob24zNC5QeUZpbHRlcl9UeXBlIERBVEEKLSAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNC5QeUZsb2F0X0FzRG91YmxlCi0gIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNC5QeUZsb2F0X0Zyb21Eb3VibGUKLSAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5RmxvYXRfRnJvbVN0cmluZwotICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzQuUHlGbG9hdF9HZXRJbmZvCi0gIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM0LlB5RmxvYXRfR2V0TWF4Ci0gIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM0LlB5RmxvYXRfR2V0TWluCi0gIFB5RmxvYXRfVHlwZT1weXRob24zNC5QeUZsb2F0X1R5cGUgREFUQQotICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzQuUHlGcm96ZW5TZXRfTmV3Ci0gIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzQuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCi0gIFB5R0NfQ29sbGVjdD1weXRob24zNC5QeUdDX0NvbGxlY3QKLSAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzQuUHlHSUxTdGF0ZV9FbnN1cmUKLSAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzQuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKLSAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM0LlB5R0lMU3RhdGVfUmVsZWFzZQotICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzQuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKLSAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM0LlB5SW1wb3J0X0FkZE1vZHVsZQotICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM0LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKLSAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNC5QeUltcG9ydF9DbGVhbnVwCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM0LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzQuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzQuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCi0gIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM0LlB5SW1wb3J0X0dldEltcG9ydGVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM0LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM0LlB5SW1wb3J0X0dldE1hZ2ljVGFnCi0gIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzQuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAotICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzQuUHlJbXBvcnRfSW1wb3J0Ci0gIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNC5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNC5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM0LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKLSAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM0LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQotICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzQuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzQuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQotICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM0LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLSAgUHlJdGVyX05leHQ9cHl0aG9uMzQuUHlJdGVyX05leHQKLSAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM0LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNC5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQotICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM0LlB5TGlzdF9BcHBlbmQKLSAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzQuUHlMaXN0X0FzVHVwbGUKLSAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzQuUHlMaXN0X0dldEl0ZW0KLSAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM0LlB5TGlzdF9HZXRTbGljZQotICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM0LlB5TGlzdF9JbnNlcnQKLSAgUHlMaXN0X05ldz1weXRob24zNC5QeUxpc3RfTmV3Ci0gIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM0LlB5TGlzdF9SZXZlcnNlCi0gIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM0LlB5TGlzdF9TZXRJdGVtCi0gIFB5TGlzdF9TZXRTbGljZT1weXRob24zNC5QeUxpc3RfU2V0U2xpY2UKLSAgUHlMaXN0X1NpemU9cHl0aG9uMzQuUHlMaXN0X1NpemUKLSAgUHlMaXN0X1NvcnQ9cHl0aG9uMzQuUHlMaXN0X1NvcnQKLSAgUHlMaXN0X1R5cGU9cHl0aG9uMzQuUHlMaXN0X1R5cGUgREFUQQotICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNC5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNC5QeUxvbmdfQXNEb3VibGUKLSAgUHlMb25nX0FzTG9uZz1weXRob24zNC5QeUxvbmdfQXNMb25nCi0gIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNC5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzQuUHlMb25nX0FzTG9uZ0xvbmcKLSAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNC5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNC5QeUxvbmdfQXNTaXplX3QKLSAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNC5QeUxvbmdfQXNTc2l6ZV90Ci0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNC5QeUxvbmdfQXNVbnNpZ25lZExvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNC5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM0LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzQuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawotICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM0LlB5TG9uZ19Bc1ZvaWRQdHIKLSAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzQuUHlMb25nX0Zyb21Eb3VibGUKLSAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tTG9uZwotICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM0LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzQuUHlMb25nX0Zyb21TaXplX3QKLSAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM0LlB5TG9uZ19Gcm9tU3NpemVfdAotICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNC5QeUxvbmdfRnJvbVN0cmluZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNC5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzQuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNC5QeUxvbmdfRnJvbVZvaWRQdHIKLSAgUHlMb25nX0dldEluZm89cHl0aG9uMzQuUHlMb25nX0dldEluZm8KLSAgUHlMb25nX1R5cGU9cHl0aG9uMzQuUHlMb25nX1R5cGUgREFUQQotICBQeU1hcF9UeXBlPXB5dGhvbjM0LlB5TWFwX1R5cGUgREFUQQotICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzQuUHlNYXBwaW5nX0NoZWNrCi0gIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM0LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzQuUHlNYXBwaW5nX0hhc0tleQotICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM0LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKLSAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM0LlB5TWFwcGluZ19JdGVtcwotICBQeU1hcHBpbmdfS2V5cz1weXRob24zNC5QeU1hcHBpbmdfS2V5cwotICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM0LlB5TWFwcGluZ19MZW5ndGgKLSAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzQuUHlNYXBwaW5nX1NpemUKLSAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNC5QeU1hcHBpbmdfVmFsdWVzCi0gIFB5TWVtX0ZyZWU9cHl0aG9uMzQuUHlNZW1fRnJlZQotICBQeU1lbV9NYWxsb2M9cHl0aG9uMzQuUHlNZW1fTWFsbG9jCi0gIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzQuUHlNZW1fUmVhbGxvYwotICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzQuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzQuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKLSAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzQuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKLSAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzQuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQotICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzQuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzQuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKLSAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM0LlB5TW9kdWxlX0FkZE9iamVjdAotICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNC5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAotICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM0LlB5TW9kdWxlX0NyZWF0ZTIKLSAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM0LlB5TW9kdWxlX0dldERlZgotICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM0LlB5TW9kdWxlX0dldERpY3QKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzQuUHlNb2R1bGVfR2V0RmlsZW5hbWUKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzQuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKLSAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNC5QeU1vZHVsZV9HZXROYW1lCi0gIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM0LlB5TW9kdWxlX0dldFN0YXRlCi0gIFB5TW9kdWxlX05ldz1weXRob24zNC5QeU1vZHVsZV9OZXcKLSAgUHlNb2R1bGVfVHlwZT1weXRob24zNC5QeU1vZHVsZV9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNC5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzQuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjM0LlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzQuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNC5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzQuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM0LlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zNC5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNC5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNC5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNC5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNC5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzQuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNC5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM0LlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzQuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM0LlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjM0LlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM0LlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNC5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNC5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zNC5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNC5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zNC5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzQuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNC5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzQuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM0LlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM0LlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjM0LlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zNC5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM0LlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzQuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM0LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNC5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM0LlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zNC5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zNC5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzQuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjM0LlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzQuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzQuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjM0LlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zNC5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzQuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzQuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM0LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM0LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM0LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM0LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzQuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zNC5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNC5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNC5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzQuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNC5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM0LlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM0LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM0LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNC5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzQuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzQuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNC5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zNC5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNC5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzQuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNC5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM0LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM0LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzQuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM0LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNC5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzQuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM0LlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNC5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzQuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzQuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzQuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM0LlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNC5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzQuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzQuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNC5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM0LlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzQuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzQuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjM0LlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzQuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM0LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNC5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM0LlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNC5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzQuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjM0LlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjM0LlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjM0LlB5T2JqZWN0X1R5cGUgREFUQQotICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNC5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncwotICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM0LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKLSAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM0LlB5UHJvcGVydHlfVHlwZSBEQVRBCi0gIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzQuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5UmFuZ2VfVHlwZT1weXRob24zNC5QeVJhbmdlX1R5cGUgREFUQQotICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzQuUHlSZXZlcnNlZF9UeXBlIERBVEEKLSAgUHlTZXFJdGVyX05ldz1weXRob24zNC5QeVNlcUl0ZXJfTmV3Ci0gIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM0LlB5U2VxSXRlcl9UeXBlIERBVEEKLSAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNC5QeVNlcXVlbmNlX0NoZWNrCi0gIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM0LlB5U2VxdWVuY2VfQ29uY2F0Ci0gIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzQuUHlTZXF1ZW5jZV9Db250YWlucwotICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM0LlB5U2VxdWVuY2VfQ291bnQKLSAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM0LlB5U2VxdWVuY2VfRGVsSXRlbQotICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM0LlB5U2VxdWVuY2VfRGVsU2xpY2UKLSAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM0LlB5U2VxdWVuY2VfRmFzdAotICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzQuUHlTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzQuUHlTZXF1ZW5jZV9HZXRTbGljZQotICBQeVNlcXVlbmNlX0luPXB5dGhvbjM0LlB5U2VxdWVuY2VfSW4KLSAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM0LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzQuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci0gIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzQuUHlTZXF1ZW5jZV9JbmRleAotICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNC5QeVNlcXVlbmNlX0xlbmd0aAotICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzQuUHlTZXF1ZW5jZV9MaXN0Ci0gIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM0LlB5U2VxdWVuY2VfUmVwZWF0Ci0gIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNC5QeVNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNC5QeVNlcXVlbmNlX1NldFNsaWNlCi0gIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNC5QeVNlcXVlbmNlX1NpemUKLSAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNC5QeVNlcXVlbmNlX1R1cGxlCi0gIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM0LlB5U2V0SXRlcl9UeXBlIERBVEEKLSAgUHlTZXRfQWRkPXB5dGhvbjM0LlB5U2V0X0FkZAotICBQeVNldF9DbGVhcj1weXRob24zNC5QeVNldF9DbGVhcgotICBQeVNldF9Db250YWlucz1weXRob24zNC5QeVNldF9Db250YWlucwotICBQeVNldF9EaXNjYXJkPXB5dGhvbjM0LlB5U2V0X0Rpc2NhcmQKLSAgUHlTZXRfTmV3PXB5dGhvbjM0LlB5U2V0X05ldwotICBQeVNldF9Qb3A9cHl0aG9uMzQuUHlTZXRfUG9wCi0gIFB5U2V0X1NpemU9cHl0aG9uMzQuUHlTZXRfU2l6ZQotICBQeVNldF9UeXBlPXB5dGhvbjM0LlB5U2V0X1R5cGUgREFUQQotICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzQuUHlTbGljZV9HZXRJbmRpY2VzCi0gIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM0LlB5U2xpY2VfR2V0SW5kaWNlc0V4Ci0gIFB5U2xpY2VfTmV3PXB5dGhvbjM0LlB5U2xpY2VfTmV3Ci0gIFB5U2xpY2VfVHlwZT1weXRob24zNC5QeVNsaWNlX1R5cGUgREFUQQotICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzQuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKLSAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM0LlB5U3RhdGVfRmluZE1vZHVsZQotICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNC5QeVN0YXRlX0FkZE1vZHVsZQotICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNC5QeVN0YXRlX1JlbW92ZU1vZHVsZQotICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzQuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM0LlB5U3RydWN0U2VxdWVuY2VfTmV3Ci0gIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNC5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM0LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQotICBQeVN1cGVyX1R5cGU9cHl0aG9uMzQuUHlTdXBlcl9UeXBlIERBVEEKLSAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNC5QeVN5c19BZGRXYXJuT3B0aW9uCi0gIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM0LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi0gIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNC5QeVN5c19Gb3JtYXRTdGRlcnIKLSAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM0LlB5U3lzX0Zvcm1hdFN0ZG91dAotICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzQuUHlTeXNfR2V0T2JqZWN0Ci0gIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM0LlB5U3lzX0hhc1dhcm5PcHRpb25zCi0gIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzQuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucwotICBQeVN5c19TZXRBcmd2PXB5dGhvbjM0LlB5U3lzX1NldEFyZ3YKLSAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM0LlB5U3lzX1NldEFyZ3ZFeAotICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzQuUHlTeXNfU2V0T2JqZWN0Ci0gIFB5U3lzX1NldFBhdGg9cHl0aG9uMzQuUHlTeXNfU2V0UGF0aAotICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNC5QeVN5c19Xcml0ZVN0ZGVycgotICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNC5QeVN5c19Xcml0ZVN0ZG91dAotICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfQ2xlYXIKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9EZWxldGUKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAotICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNC5QeVRocmVhZFN0YXRlX0dldAotICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9HZXREaWN0Ci0gIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM0LlB5VGhyZWFkU3RhdGVfTmV3Ci0gIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YwotICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzQuUHlUaHJlYWRTdGF0ZV9Td2FwCi0gIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzQuUHlUcmFjZUJhY2tfSGVyZQotICBQeVRyYWNlQmFja19QcmludD1weXRob24zNC5QeVRyYWNlQmFja19QcmludAotICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM0LlB5VHJhY2VCYWNrX1R5cGUgREFUQQotICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM0LlB5VHVwbGVJdGVyX1R5cGUgREFUQQotICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzQuUHlUdXBsZV9DbGVhckZyZWVMaXN0Ci0gIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNC5QeVR1cGxlX0dldEl0ZW0KLSAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNC5QeVR1cGxlX0dldFNsaWNlCi0gIFB5VHVwbGVfTmV3PXB5dGhvbjM0LlB5VHVwbGVfTmV3Ci0gIFB5VHVwbGVfUGFjaz1weXRob24zNC5QeVR1cGxlX1BhY2sKLSAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM0LlB5VHVwbGVfU2V0SXRlbQotICBQeVR1cGxlX1NpemU9cHl0aG9uMzQuUHlUdXBsZV9TaXplCi0gIFB5VHVwbGVfVHlwZT1weXRob24zNC5QeVR1cGxlX1R5cGUgREFUQQotICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNC5QeVR5cGVfQ2xlYXJDYWNoZQotICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzQuUHlUeXBlX0Zyb21TcGVjCi0gIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNC5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKLSAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNC5QeVR5cGVfR2VuZXJpY0FsbG9jCi0gIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM0LlB5VHlwZV9HZW5lcmljTmV3Ci0gIFB5VHlwZV9HZXRGbGFncz1weXRob24zNC5QeVR5cGVfR2V0RmxhZ3MKLSAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzQuUHlUeXBlX0dldFNsb3QKLSAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNC5QeVR5cGVfSXNTdWJ0eXBlCi0gIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNC5QeVR5cGVfTW9kaWZpZWQKLSAgUHlUeXBlX1JlYWR5PXB5dGhvbjM0LlB5VHlwZV9SZWFkeQotICBQeVR5cGVfVHlwZT1weXRob24zNC5QeVR5cGVfVHlwZSBEQVRBCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM0LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNC5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzQuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNC5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzQuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM0LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzQuUHlVbmljb2RlX0FwcGVuZAotICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM0LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKLSAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzQuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNC5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM0LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM0LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKLSAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNC5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0FzVVRGOFN0cmluZwotICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzQuUHlVbmljb2RlX0FzV2lkZUNoYXIKLSAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzQuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKLSAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzQuUHlVbmljb2RlX0NvbXBhcmUKLSAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNC5QeVVuaWNvZGVfQ29uY2F0Ci0gIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNC5QeVVuaWNvZGVfQ29udGFpbnMKLSAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM0LlB5VW5pY29kZV9Db3VudAotICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGUKLSAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVBU0NJSQotICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCi0gIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEYzMgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNC5QeVVuaWNvZGVfRGVjb2RlVVRGOAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM0LlB5VW5pY29kZV9GU0NvbnZlcnRlcgotICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM0LlB5VW5pY29kZV9GU0RlY29kZXIKLSAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzQuUHlVbmljb2RlX0ZpbmQKLSAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNC5QeVVuaWNvZGVfRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNC5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgotICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNC5QeVVuaWNvZGVfRnJvbU9iamVjdAotICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzQuUHlVbmljb2RlX0Zyb21PcmRpbmFsCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNC5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNC5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCi0gIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNC5QeVVuaWNvZGVfR2V0U2l6ZQotICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM0LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKLSAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzQuUHlVbmljb2RlX0pvaW4KLSAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNC5QeVVuaWNvZGVfUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM0LlB5VW5pY29kZV9SUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzQuUHlVbmljb2RlX1JTcGxpdAotICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNC5QeVVuaWNvZGVfUmVwbGFjZQotICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM0LlB5VW5pY29kZV9SZXNpemUKLSAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM0LlB5VW5pY29kZV9SaWNoQ29tcGFyZQotICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM0LlB5VW5pY29kZV9TcGxpdAotICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNC5QeVVuaWNvZGVfU3BsaXRsaW5lcwotICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM0LlB5VW5pY29kZV9UYWlsbWF0Y2gKLSAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNC5QeVVuaWNvZGVfVHJhbnNsYXRlCi0gIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM0LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCi0gIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM0LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM0LlB5VW5pY29kZV9EZWNvZGVVVEY3Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzQuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM0LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzQuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKLSAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM0LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAotICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNC5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQotICBQeVVuaWNvZGVfVHlwZT1weXRob24zNC5QeVVuaWNvZGVfVHlwZSBEQVRBCi0gIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzQuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCi0gIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNC5QeVdlYWtyZWZfTmV3UHJveHkKLSAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNC5QeVdlYWtyZWZfTmV3UmVmCi0gIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzQuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzQuUHlXcmFwcGVyX05ldwotICBQeVppcF9UeXBlPXB5dGhvbjM0LlB5WmlwX1R5cGUgREFUQQotICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNC5QeV9BZGRQZW5kaW5nQ2FsbAotICBQeV9BdEV4aXQ9cHl0aG9uMzQuUHlfQXRFeGl0Ci0gIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzQuUHlfQnVpbGRWYWx1ZQotICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM0LlB5X0NvbXBpbGVTdHJpbmcKLSAgUHlfRGVjUmVmPXB5dGhvbjM0LlB5X0RlY1JlZgotICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNC5QeV9FbmRJbnRlcnByZXRlcgotICBQeV9FeGl0PXB5dGhvbjM0LlB5X0V4aXQKLSAgUHlfRmF0YWxFcnJvcj1weXRob24zNC5QeV9GYXRhbEVycm9yCi0gIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzQuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCi0gIFB5X0ZpbmFsaXplPXB5dGhvbjM0LlB5X0ZpbmFsaXplCi0gIFB5X0dldEJ1aWxkSW5mbz1weXRob24zNC5QeV9HZXRCdWlsZEluZm8KLSAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzQuUHlfR2V0Q29tcGlsZXIKLSAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjM0LlB5X0dldENvcHlyaWdodAotICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjM0LlB5X0dldEV4ZWNQcmVmaXgKLSAgUHlfR2V0UGF0aD1weXRob24zNC5QeV9HZXRQYXRoCi0gIFB5X0dldFBsYXRmb3JtPXB5dGhvbjM0LlB5X0dldFBsYXRmb3JtCi0gIFB5X0dldFByZWZpeD1weXRob24zNC5QeV9HZXRQcmVmaXgKLSAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjM0LlB5X0dldFByb2dyYW1GdWxsUGF0aAotICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zNC5QeV9HZXRQcm9ncmFtTmFtZQotICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjM0LlB5X0dldFB5dGhvbkhvbWUKLSAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzQuUHlfR2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfR2V0VmVyc2lvbj1weXRob24zNC5QeV9HZXRWZXJzaW9uCi0gIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzQuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCi0gIFB5X0luY1JlZj1weXRob24zNC5QeV9JbmNSZWYKLSAgUHlfSW5pdGlhbGl6ZT1weXRob24zNC5QeV9Jbml0aWFsaXplCi0gIFB5X0luaXRpYWxpemVFeD1weXRob24zNC5QeV9Jbml0aWFsaXplRXgKLSAgUHlfSXNJbml0aWFsaXplZD1weXRob24zNC5QeV9Jc0luaXRpYWxpemVkCi0gIFB5X01haW49cHl0aG9uMzQuUHlfTWFpbgotICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjM0LlB5X01ha2VQZW5kaW5nQ2FsbHMKLSAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzQuUHlfTmV3SW50ZXJwcmV0ZXIKLSAgUHlfUmVwckVudGVyPXB5dGhvbjM0LlB5X1JlcHJFbnRlcgotICBQeV9SZXByTGVhdmU9cHl0aG9uMzQuUHlfUmVwckxlYXZlCi0gIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjM0LlB5X1NldFByb2dyYW1OYW1lCi0gIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzQuUHlfU2V0UHl0aG9uSG9tZQotICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zNC5QeV9TZXRSZWN1cnNpb25MaW1pdAotICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zNC5QeV9TeW10YWJsZVN0cmluZwotICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzQuUHlfVmFCdWlsZFZhbHVlCi0gIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzQuX1B5RXJyX0JhZEludGVybmFsQ2FsbAotICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjM0Ll9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKLSAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzQuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKLSAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zNC5fUHlPYmplY3RfR0NfTWFsbG9jCi0gIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzQuX1B5T2JqZWN0X0dDX05ldwotICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjM0Ll9QeU9iamVjdF9HQ19OZXdWYXIKLSAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zNC5fUHlPYmplY3RfR0NfUmVzaXplCi0gIF9QeU9iamVjdF9OZXc9cHl0aG9uMzQuX1B5T2JqZWN0X05ldwotICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjM0Ll9QeU9iamVjdF9OZXdWYXIKLSAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM0Ll9QeVN0YXRlX0FkZE1vZHVsZQotICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjM0Ll9QeVRocmVhZFN0YXRlX0luaXQKLSAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzQuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKLSAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjM0Ll9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCi0gIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjM0Ll9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKLSAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzQuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKLSAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zNC5fUHlUcmFzaF9kZXN0cm95X2NoYWluCi0gIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzQuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM0Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM0Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM0Ll9QeV9CdWlsZFZhbHVlX1NpemVUCi0gIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM0Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKLSAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNC5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCi0gIF9QeV9EZWFsbG9jPXB5dGhvbjM0Ll9QeV9EZWFsbG9jCi0gIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNC5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQotICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzQuX1B5X0ZhbHNlU3RydWN0IERBVEEKLSAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzQuX1B5X05vbmVTdHJ1Y3QgREFUQQotICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzQuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKLSAgX1B5X1N3YXBwZWRPcD1weXRob24zNC5fUHlfU3dhcHBlZE9wIERBVEEKLSAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzQuX1B5X1RydWVTdHJ1Y3QgREFUQQotICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM0Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19QYXJzZV9TaXplVAotICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zNC5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAotICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzQuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM0Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNC5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBQeUFyZ19QYXJzZT1weXRob24zNS5QeUFyZ19QYXJzZQorICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjM1LlB5QXJnX1BhcnNlVHVwbGUKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zNS5QeUFyZ19VbnBhY2tUdXBsZQorICBQeUFyZ19WYVBhcnNlPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2UKKyAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzUuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjM1LlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cworICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zNS5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCisgIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zNS5QeUJvb2xfRnJvbUxvbmcKKyAgUHlCb29sX1R5cGU9cHl0aG9uMzUuUHlCb29sX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zNS5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0FzU3RyaW5nCisgIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zNS5QeUJ5dGVBcnJheV9Db25jYXQKKyAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0CisgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9SZXNpemUKKyAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9TaXplCisgIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCisgIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZworICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX0NvbmNhdD1weXRob24zNS5QeUJ5dGVzX0NvbmNhdAorICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zNS5QeUJ5dGVzX0NvbmNhdEFuZERlbAorICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zNS5QeUJ5dGVzX0RlY29kZUVzY2FwZQorICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzUuUHlCeXRlc19Gcm9tRm9ybWF0CisgIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlCeXRlc19Gcm9tRm9ybWF0VgorICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlc19Gcm9tT2JqZWN0CisgIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zNS5QeUJ5dGVzX0Zyb21TdHJpbmcKKyAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfUmVwcj1weXRob24zNS5QeUJ5dGVzX1JlcHIKKyAgUHlCeXRlc19TaXplPXB5dGhvbjM1LlB5Qnl0ZXNfU2l6ZQorICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzUuUHlCeXRlc19UeXBlIERBVEEKKyAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zNS5QeUNGdW5jdGlvbl9DYWxsCisgIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAorICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRGbGFncworICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgorICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldFNlbGYKKyAgUHlDRnVuY3Rpb25fTmV3PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX05ldworICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zNS5QeUNGdW5jdGlvbl9OZXdFeAorICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQorICBQeUNhbGxJdGVyX05ldz1weXRob24zNS5QeUNhbGxJdGVyX05ldworICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzUuUHlDYWxsSXRlcl9UeXBlIERBVEEKKyAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zNS5QeUNhbGxhYmxlX0NoZWNrCisgIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXROYW1lCisgIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzUuUHlDYXBzdWxlX0ltcG9ydAorICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zNS5QeUNhcHN1bGVfSXNWYWxpZAorICBQeUNhcHN1bGVfTmV3PXB5dGhvbjM1LlB5Q2Fwc3VsZV9OZXcKKyAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzUuUHlDYXBzdWxlX1NldENvbnRleHQKKyAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzUuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzUuUHlDYXBzdWxlX1NldE5hbWUKKyAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzUuUHlDYXBzdWxlX1NldFBvaW50ZXIKKyAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzUuUHlDYXBzdWxlX1R5cGUgREFUQQorICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzUuUHlDb2RlY19EZWNvZGUKKyAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlcgorICBQeUNvZGVjX0VuY29kZT1weXRob24zNS5QeUNvZGVjX0VuY29kZQorICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGVyCisgIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfSWdub3JlRXJyb3JzCisgIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCisgIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCisgIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zNS5QeUNvZGVjX0tub3duRW5jb2RpbmcKKyAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zNS5QeUNvZGVjX0xvb2t1cEVycm9yCisgIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzUuUHlDb2RlY19SZWdpc3RlcgorICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19SZWdpc3RlckVycm9yCisgIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzUuUHlDb2RlY19TdHJlYW1SZWFkZXIKKyAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzUuUHlDb2RlY19TdHJlYW1Xcml0ZXIKKyAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19TdHJpY3RFcnJvcnMKKyAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCisgIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zNS5QeUNvbXBsZXhfRnJvbURvdWJsZXMKKyAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zNS5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCisgIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQorICBQeUNvbXBsZXhfVHlwZT1weXRob24zNS5QeUNvbXBsZXhfVHlwZSBEQVRBCisgIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAorICBQeURlc2NyX05ld0dldFNldD1weXRob24zNS5QeURlc2NyX05ld0dldFNldAorICBQeURlc2NyX05ld01lbWJlcj1weXRob24zNS5QeURlc2NyX05ld01lbWJlcgorICBQeURlc2NyX05ld01ldGhvZD1weXRob24zNS5QeURlc2NyX05ld01ldGhvZAorICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZW1zX1R5cGUgREFUQQorICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQorICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQorICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzUuUHlEaWN0S2V5c19UeXBlIERBVEEKKyAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjM1LlB5RGljdFByb3h5X05ldworICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjM1LlB5RGljdFByb3h5X1R5cGUgREFUQQorICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zNS5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5RGljdF9DbGVhcj1weXRob24zNS5QeURpY3RfQ2xlYXIKKyAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjM1LlB5RGljdF9Db250YWlucworICBQeURpY3RfQ29weT1weXRob24zNS5QeURpY3RfQ29weQorICBQeURpY3RfRGVsSXRlbT1weXRob24zNS5QeURpY3RfRGVsSXRlbQorICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfRGVsSXRlbVN0cmluZworICBQeURpY3RfR2V0SXRlbT1weXRob24zNS5QeURpY3RfR2V0SXRlbQorICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfR2V0SXRlbVN0cmluZworICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zNS5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgorICBQeURpY3RfSXRlbXM9cHl0aG9uMzUuUHlEaWN0X0l0ZW1zCisgIFB5RGljdF9LZXlzPXB5dGhvbjM1LlB5RGljdF9LZXlzCisgIFB5RGljdF9NZXJnZT1weXRob24zNS5QeURpY3RfTWVyZ2UKKyAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzUuUHlEaWN0X01lcmdlRnJvbVNlcTIKKyAgUHlEaWN0X05ldz1weXRob24zNS5QeURpY3RfTmV3CisgIFB5RGljdF9OZXh0PXB5dGhvbjM1LlB5RGljdF9OZXh0CisgIFB5RGljdF9TZXRJdGVtPXB5dGhvbjM1LlB5RGljdF9TZXRJdGVtCisgIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9TZXRJdGVtU3RyaW5nCisgIFB5RGljdF9TaXplPXB5dGhvbjM1LlB5RGljdF9TaXplCisgIFB5RGljdF9UeXBlPXB5dGhvbjM1LlB5RGljdF9UeXBlIERBVEEKKyAgUHlEaWN0X1VwZGF0ZT1weXRob24zNS5QeURpY3RfVXBkYXRlCisgIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzUuUHlEaWN0X1ZhbHVlcworICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzUuUHlFbGxpcHNpc19UeXBlIERBVEEKKyAgUHlFbnVtX1R5cGU9cHl0aG9uMzUuUHlFbnVtX1R5cGUgREFUQQorICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zNS5QeUVycl9CYWRBcmd1bWVudAorICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzUuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zNS5QeUVycl9DaGVja1NpZ25hbHMKKyAgUHlFcnJfQ2xlYXI9cHl0aG9uMzUuUHlFcnJfQ2xlYXIKKyAgUHlFcnJfRGlzcGxheT1weXRob24zNS5QeUVycl9EaXNwbGF5CisgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9GZXRjaD1weXRob24zNS5QeUVycl9GZXRjaAorICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzUuUHlFcnJfRm9ybWF0CisgIFB5RXJyX0Zvcm1hdFY9cHl0aG9uMzUuUHlFcnJfRm9ybWF0VgorICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb24KKyAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCisgIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM1LlB5RXJyX05vTWVtb3J5CisgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNS5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KKyAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzUuUHlFcnJfT2NjdXJyZWQKKyAgUHlFcnJfUHJpbnQ9cHl0aG9uMzUuUHlFcnJfUHJpbnQKKyAgUHlFcnJfUHJpbnRFeD1weXRob24zNS5QeUVycl9QcmludEV4CisgIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM1LlB5RXJyX1Byb2dyYW1UZXh0CisgIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzUuUHlFcnJfUmVzdG9yZQorICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAorICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFcnJfU2V0SW50ZXJydXB0CisgIFB5RXJyX1NldE5vbmU9cHl0aG9uMzUuUHlFcnJfU2V0Tm9uZQorICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzUuUHlFcnJfU2V0T2JqZWN0CisgIFB5RXJyX1NldFN0cmluZz1weXRob24zNS5QeUVycl9TZXRTdHJpbmcKKyAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzUuUHlFcnJfU3ludGF4TG9jYXRpb24KKyAgUHlFcnJfV2FybkV4PXB5dGhvbjM1LlB5RXJyX1dhcm5FeAorICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzUuUHlFcnJfV2FybkV4cGxpY2l0CisgIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzUuUHlFcnJfV2FybkZvcm1hdAorICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzUuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCisgIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zNS5QeUV2YWxfQWNxdWlyZUxvY2sKKyAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVUaHJlYWQKKyAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zNS5QeUV2YWxfQ2FsbEZ1bmN0aW9uCisgIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjM1LlB5RXZhbF9DYWxsTWV0aG9kCisgIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjM1LlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCisgIFB5RXZhbF9FdmFsQ29kZT1weXRob24zNS5QeUV2YWxfRXZhbENvZGUKKyAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlRXgKKyAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zNS5QeUV2YWxfRXZhbEZyYW1lCisgIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zNS5QeUV2YWxfRXZhbEZyYW1lRXgKKyAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjM1LlB5RXZhbF9HZXRCdWlsdGlucworICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjM1LlB5RXZhbF9HZXRDYWxsU3RhdHMKKyAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjM1LlB5RXZhbF9HZXRGcmFtZQorICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNEZXNjCisgIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnVuY05hbWUKKyAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzUuUHlFdmFsX0dldEdsb2JhbHMKKyAgUHlFdmFsX0dldExvY2Fscz1weXRob24zNS5QeUV2YWxfR2V0TG9jYWxzCisgIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zNS5QeUV2YWxfSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX1JlSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjM1LlB5RXZhbF9SZWxlYXNlTG9jaworICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zNS5QeUV2YWxfUmVsZWFzZVRocmVhZAorICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zNS5QeUV2YWxfUmVzdG9yZVRocmVhZAorICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zNS5QeUV2YWxfU2F2ZVRocmVhZAorICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKKyAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjM1LlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCisgIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjM1LlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKKyAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQorICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQorICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zNS5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCisgIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zNS5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQorICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzUuUHlFeGNfRU9GRXJyb3IgREFUQQorICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM1LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQorICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM1LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCisgIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCisgIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzUuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCisgIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzUuUHlFeGNfSU9FcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM1LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNS5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKKyAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNS5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKKyAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNS5QeUV4Y19JbmRleEVycm9yIERBVEEKKyAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzUuUHlFeGNfS2V5RXJyb3IgREFUQQorICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zNS5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCisgIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjM1LlB5RXhjX0xvb2t1cEVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzUuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjM1LlB5RXhjX05hbWVFcnJvciBEQVRBCisgIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzUuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCisgIFB5RXhjX09TRXJyb3I9cHl0aG9uMzUuUHlFeGNfT1NFcnJvciBEQVRBCisgIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzUuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCisgIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNS5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQorICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNS5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zNS5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zNS5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCisgIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzUuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCisgIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjM1LlB5RXhjX1N5bnRheEVycm9yIERBVEEKKyAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zNS5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzUuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQorICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjM1LlB5RXhjX1N5c3RlbUV4aXQgREFUQQorICBQeUV4Y19UYWJFcnJvcj1weXRob24zNS5QeUV4Y19UYWJFcnJvciBEQVRBCisgIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNS5QeUV4Y19UeXBlRXJyb3IgREFUQQorICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNS5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNS5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCisgIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKKyAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNS5QeUV4Y19WYWx1ZUVycm9yIERBVEEKKyAgUHlFeGNfV2FybmluZz1weXRob24zNS5QeUV4Y19XYXJuaW5nIERBVEEKKyAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQorICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldENvbnRleHQKKyAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaworICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldENvbnRleHQKKyAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaworICBQeUZpbGVfRnJvbUZkPXB5dGhvbjM1LlB5RmlsZV9Gcm9tRmQKKyAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzUuUHlGaWxlX0dldExpbmUKKyAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjM1LlB5RmlsZV9Xcml0ZU9iamVjdAorICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzUuUHlGaWxlX1dyaXRlU3RyaW5nCisgIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzUuUHlGaWx0ZXJfVHlwZSBEQVRBCisgIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzUuUHlGbG9hdF9Bc0RvdWJsZQorICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tRG91YmxlCisgIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zNS5QeUZsb2F0X0Zyb21TdHJpbmcKKyAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjM1LlB5RmxvYXRfR2V0SW5mbworICBQeUZsb2F0X0dldE1heD1weXRob24zNS5QeUZsb2F0X0dldE1heAorICBQeUZsb2F0X0dldE1pbj1weXRob24zNS5QeUZsb2F0X0dldE1pbgorICBQeUZsb2F0X1R5cGU9cHl0aG9uMzUuUHlGbG9hdF9UeXBlIERBVEEKKyAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjM1LlB5RnJvemVuU2V0X05ldworICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjM1LlB5RnJvemVuU2V0X1R5cGUgREFUQQorICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzUuUHlHQ19Db2xsZWN0CisgIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjM1LlB5R0lMU3RhdGVfRW5zdXJlCisgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjM1LlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCisgIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zNS5QeUdJTFN0YXRlX1JlbGVhc2UKKyAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjM1LlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCisgIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9BZGRNb2R1bGUKKyAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNS5QeUltcG9ydF9BcHBlbmRJbml0dGFiCisgIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzUuUHlJbXBvcnRfQ2xlYW51cAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcworICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNS5QeUltcG9ydF9HZXRJbXBvcnRlcgorICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY051bWJlcgorICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY1RhZworICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM1LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKKyAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydAorICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCisgIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9SZWxvYWRNb2R1bGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgorICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfTmV3CisgIFB5SXRlcl9OZXh0PXB5dGhvbjM1LlB5SXRlcl9OZXh0CisgIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zNS5QeUxpc3RJdGVyX1R5cGUgREFUQQorICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0X0FwcGVuZD1weXRob24zNS5QeUxpc3RfQXBwZW5kCisgIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjM1LlB5TGlzdF9Bc1R1cGxlCisgIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjM1LlB5TGlzdF9HZXRJdGVtCisgIFB5TGlzdF9HZXRTbGljZT1weXRob24zNS5QeUxpc3RfR2V0U2xpY2UKKyAgUHlMaXN0X0luc2VydD1weXRob24zNS5QeUxpc3RfSW5zZXJ0CisgIFB5TGlzdF9OZXc9cHl0aG9uMzUuUHlMaXN0X05ldworICBQeUxpc3RfUmV2ZXJzZT1weXRob24zNS5QeUxpc3RfUmV2ZXJzZQorICBQeUxpc3RfU2V0SXRlbT1weXRob24zNS5QeUxpc3RfU2V0SXRlbQorICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X1NldFNsaWNlCisgIFB5TGlzdF9TaXplPXB5dGhvbjM1LlB5TGlzdF9TaXplCisgIFB5TGlzdF9Tb3J0PXB5dGhvbjM1LlB5TGlzdF9Tb3J0CisgIFB5TGlzdF9UeXBlPXB5dGhvbjM1LlB5TGlzdF9UeXBlIERBVEEKKyAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzUuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzUuUHlMb25nX0FzRG91YmxlCisgIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzTG9uZworICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nCisgIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzUuUHlMb25nX0FzU2l6ZV90CisgIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0FzU3NpemVfdAorICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKKyAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zNS5QeUxvbmdfQXNWb2lkUHRyCisgIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Gcm9tRG91YmxlCisgIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbUxvbmcKKyAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbUxvbmdMb25nCisgIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Gcm9tU2l6ZV90CisgIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNzaXplX3QKKyAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21TdHJpbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0Zyb21Wb2lkUHRyCisgIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjM1LlB5TG9uZ19HZXRJbmZvCisgIFB5TG9uZ19UeXBlPXB5dGhvbjM1LlB5TG9uZ19UeXBlIERBVEEKKyAgUHlNYXBfVHlwZT1weXRob24zNS5QeU1hcF9UeXBlIERBVEEKKyAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjM1LlB5TWFwcGluZ19DaGVjaworICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjM1LlB5TWFwcGluZ19IYXNLZXkKKyAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCisgIFB5TWFwcGluZ19JdGVtcz1weXRob24zNS5QeU1hcHBpbmdfSXRlbXMKKyAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzUuUHlNYXBwaW5nX0tleXMKKyAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zNS5QeU1hcHBpbmdfTGVuZ3RoCisgIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19TaXplPXB5dGhvbjM1LlB5TWFwcGluZ19TaXplCisgIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzUuUHlNYXBwaW5nX1ZhbHVlcworICBQeU1lbV9GcmVlPXB5dGhvbjM1LlB5TWVtX0ZyZWUKKyAgUHlNZW1fTWFsbG9jPXB5dGhvbjM1LlB5TWVtX01hbGxvYworICBQeU1lbV9SZWFsbG9jPXB5dGhvbjM1LlB5TWVtX1JlYWxsb2MKKyAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjM1LlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCisgIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0CisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjM1LlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCisgIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjM1LlB5TWVtb3J5Vmlld19UeXBlIERBVEEKKyAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM1LlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZEludENvbnN0YW50CisgIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zNS5QeU1vZHVsZV9BZGRPYmplY3QKKyAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzUuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKKyAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zNS5QeU1vZHVsZV9DcmVhdGUyCisgIFB5TW9kdWxlX0dldERlZj1weXRob24zNS5QeU1vZHVsZV9HZXREZWYKKyAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zNS5QeU1vZHVsZV9HZXREaWN0CisgIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldEZpbGVuYW1lCisgIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0CisgIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0TmFtZQorICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zNS5QeU1vZHVsZV9HZXRTdGF0ZQorICBQeU1vZHVsZV9OZXc9cHl0aG9uMzUuUHlNb2R1bGVfTmV3CisgIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzUuUHlNb2R1bGVfVHlwZSBEQVRBCisgIFB5TW9kdWxlRGVmX0luaXQ9cHl0aG9uMzUuUHlNb2R1bGVEZWZfSW5pdAorICBQeU1vZHVsZURlZl9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlRGVmX1R5cGUgREFUQQorICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjM1LlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQorICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zNS5QeU51bWJlcl9BYnNvbHV0ZQorICBQeU51bWJlcl9BZGQ9cHl0aG9uMzUuUHlOdW1iZXJfQWRkCisgIFB5TnVtYmVyX0FuZD1weXRob24zNS5QeU51bWJlcl9BbmQKKyAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TnVtYmVyX0FzU3NpemVfdAorICBQeU51bWJlcl9DaGVjaz1weXRob24zNS5QeU51bWJlcl9DaGVjaworICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzUuUHlOdW1iZXJfRGl2bW9kCisgIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjM1LlB5TnVtYmVyX0Zsb2F0CisgIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0Zsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUFkZAorICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBbmQKKyAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQorICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZU9yCisgIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUG93ZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCisgIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAorICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0CisgIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVhvcgorICBQeU51bWJlcl9JbmRleD1weXRob24zNS5QeU51bWJlcl9JbmRleAorICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW52ZXJ0CisgIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzUuUHlOdW1iZXJfTG9uZworICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfTHNoaWZ0CisgIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjM1LlB5TnVtYmVyX011bHRpcGx5CisgIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjM1LlB5TnVtYmVyX05lZ2F0aXZlCisgIFB5TnVtYmVyX09yPXB5dGhvbjM1LlB5TnVtYmVyX09yCisgIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjM1LlB5TnVtYmVyX1Bvc2l0aXZlCisgIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjM1LlB5TnVtYmVyX1Bvd2VyCisgIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zNS5QeU51bWJlcl9SZW1haW5kZXIKKyAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX1JzaGlmdAorICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zNS5QeU51bWJlcl9TdWJ0cmFjdAorICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzUuUHlOdW1iZXJfVG9CYXNlCisgIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfVHJ1ZURpdmlkZQorICBQeU51bWJlcl9Yb3I9cHl0aG9uMzUuUHlOdW1iZXJfWG9yCisgIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM1LlB5T1NfQWZ0ZXJGb3JrCisgIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzUuUHlPU19Jbml0SW50ZXJydXB0cworICBQeU9TX0lucHV0SG9vaz1weXRob24zNS5QeU9TX0lucHV0SG9vayBEQVRBCisgIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzUuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAorICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjM1LlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQorICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzUuUHlPU19kb3VibGVfdG9fc3RyaW5nCisgIFB5T1NfZ2V0c2lnPXB5dGhvbjM1LlB5T1NfZ2V0c2lnCisgIFB5T1NfbXlzdHJpY21wPXB5dGhvbjM1LlB5T1NfbXlzdHJpY21wCisgIFB5T1NfbXlzdHJuaWNtcD1weXRob24zNS5QeU9TX215c3RybmljbXAKKyAgUHlPU19zZXRzaWc9cHl0aG9uMzUuUHlPU19zZXRzaWcKKyAgUHlPU19zbnByaW50Zj1weXRob24zNS5QeU9TX3NucHJpbnRmCisgIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zNS5QeU9TX3N0cmluZ190b19kb3VibGUKKyAgUHlPU19zdHJ0b2w9cHl0aG9uMzUuUHlPU19zdHJ0b2wKKyAgUHlPU19zdHJ0b3VsPXB5dGhvbjM1LlB5T1Nfc3RydG91bAorICBQeU9TX3ZzbnByaW50Zj1weXRob24zNS5QeU9TX3ZzbnByaW50ZgorICBQeU9iamVjdF9BU0NJST1weXRob24zNS5QeU9iamVjdF9BU0NJSQorICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNDaGFyQnVmZmVyCisgIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzUuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgorICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgorICBQeU9iamVjdF9CeXRlcz1weXRob24zNS5QeU9iamVjdF9CeXRlcworICBQeU9iamVjdF9DYWxsPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGwKKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxGdW5jdGlvbgorICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kCisgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE9iamVjdAorICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzUuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcworICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X0RlbEl0ZW0KKyAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCisgIFB5T2JqZWN0X0Rpcj1weXRob24zNS5QeU9iamVjdF9EaXIKKyAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjM1LlB5T2JqZWN0X0Zvcm1hdAorICBQeU9iamVjdF9GcmVlPXB5dGhvbjM1LlB5T2JqZWN0X0ZyZWUKKyAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjM1LlB5T2JqZWN0X0dDX0RlbAorICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19UcmFjaworICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjM1LlB5T2JqZWN0X0dDX1VuVHJhY2sKKyAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKKyAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0clN0cmluZworICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X0dldEl0ZW0KKyAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zNS5QeU9iamVjdF9HZXRJdGVyCisgIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzUuUHlPYmplY3RfSGFzQXR0cgorICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKKyAgUHlPYmplY3RfSGFzaD1weXRob24zNS5QeU9iamVjdF9IYXNoCisgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zNS5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKKyAgUHlPYmplY3RfSW5pdD1weXRob24zNS5QeU9iamVjdF9Jbml0CisgIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzUuUHlPYmplY3RfSW5pdFZhcgorICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjM1LlB5T2JqZWN0X0lzSW5zdGFuY2UKKyAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zNS5QeU9iamVjdF9Jc1N1YmNsYXNzCisgIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zNS5QeU9iamVjdF9Jc1RydWUKKyAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjM1LlB5T2JqZWN0X0xlbmd0aAorICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfTWFsbG9jCisgIFB5T2JqZWN0X05vdD1weXRob24zNS5QeU9iamVjdF9Ob3QKKyAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zNS5QeU9iamVjdF9SZWFsbG9jCisgIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzUuUHlPYmplY3RfUmVwcgorICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zNS5QeU9iamVjdF9SaWNoQ29tcGFyZQorICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCisgIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjM1LlB5T2JqZWN0X1NlbGZJdGVyCisgIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfU2V0QXR0cgorICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9TZXRJdGVtCisgIFB5T2JqZWN0X1NpemU9cHl0aG9uMzUuUHlPYmplY3RfU2l6ZQorICBQeU9iamVjdF9TdHI9cHl0aG9uMzUuUHlPYmplY3RfU3RyCisgIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlPYmplY3RfVHlwZSBEQVRBCisgIFB5T0RpY3RfRGVsSXRlbT1weXRob24zNS5QeU9EaWN0X0RlbEl0ZW0KKyAgUHlPRGljdF9OZXc9cHl0aG9uMzUuUHlPRGljdF9OZXcKKyAgUHlPRGljdF9TZXRJdGVtPXB5dGhvbjM1LlB5T0RpY3RfU2V0SXRlbQorICBQeU9EaWN0X1R5cGU9cHl0aG9uMzUuUHlPRGljdF9UeXBlIERBVEEKKyAgUHlPRGljdEl0ZW1zX1R5cGU9cHl0aG9uMzUuUHlPRGljdEl0ZW1zX1R5cGUgREFUQQorICBQeU9EaWN0SXRlcl9UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVyX1R5cGUgREFUQQorICBQeU9EaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5T0RpY3RLZXlzX1R5cGUgREFUQQorICBQeU9EaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlPRGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCisgIFB5UHJvcGVydHlfVHlwZT1weXRob24zNS5QeVByb3BlcnR5X1R5cGUgREFUQQorICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeVJhbmdlX1R5cGU9cHl0aG9uMzUuUHlSYW5nZV9UeXBlIERBVEEKKyAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjM1LlB5UmV2ZXJzZWRfVHlwZSBEQVRBCisgIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzUuUHlTZXFJdGVyX05ldworICBQeVNlcUl0ZXJfVHlwZT1weXRob24zNS5QeVNlcUl0ZXJfVHlwZSBEQVRBCisgIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzUuUHlTZXF1ZW5jZV9DaGVjaworICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zNS5QeVNlcXVlbmNlX0NvbmNhdAorICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ29udGFpbnMKKyAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zNS5QeVNlcXVlbmNlX0NvdW50CisgIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0RlbEl0ZW0KKyAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0RlbFNsaWNlCisgIFB5U2VxdWVuY2VfRmFzdD1weXRob24zNS5QeVNlcXVlbmNlX0Zhc3QKKyAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfR2V0SXRlbQorICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfR2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9Jbj1weXRob24zNS5QeVNlcXVlbmNlX0luCisgIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKKyAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAorICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5kZXgKKyAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzUuUHlTZXF1ZW5jZV9MZW5ndGgKKyAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjM1LlB5U2VxdWVuY2VfTGlzdAorICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX1JlcGVhdAorICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9TZXRTbGljZQorICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzUuUHlTZXF1ZW5jZV9TaXplCisgIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzUuUHlTZXF1ZW5jZV9UdXBsZQorICBQeVNldEl0ZXJfVHlwZT1weXRob24zNS5QeVNldEl0ZXJfVHlwZSBEQVRBCisgIFB5U2V0X0FkZD1weXRob24zNS5QeVNldF9BZGQKKyAgUHlTZXRfQ2xlYXI9cHl0aG9uMzUuUHlTZXRfQ2xlYXIKKyAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzUuUHlTZXRfQ29udGFpbnMKKyAgUHlTZXRfRGlzY2FyZD1weXRob24zNS5QeVNldF9EaXNjYXJkCisgIFB5U2V0X05ldz1weXRob24zNS5QeVNldF9OZXcKKyAgUHlTZXRfUG9wPXB5dGhvbjM1LlB5U2V0X1BvcAorICBQeVNldF9TaXplPXB5dGhvbjM1LlB5U2V0X1NpemUKKyAgUHlTZXRfVHlwZT1weXRob24zNS5QeVNldF9UeXBlIERBVEEKKyAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjM1LlB5U2xpY2VfR2V0SW5kaWNlcworICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXNFeAorICBQeVNsaWNlX05ldz1weXRob24zNS5QeVNsaWNlX05ldworICBQeVNsaWNlX1R5cGU9cHl0aG9uMzUuUHlTbGljZV9UeXBlIERBVEEKKyAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjM1LlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCisgIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zNS5QeVN0YXRlX0ZpbmRNb2R1bGUKKyAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9BZGRNb2R1bGUKKyAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQorICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX05ldworICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCisgIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTdXBlcl9UeXBlPXB5dGhvbjM1LlB5U3VwZXJfVHlwZSBEQVRBCisgIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvbgorICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zNS5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQorICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3RkZXJyCisgIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNS5QeVN5c19Gb3JtYXRTdGRvdXQKKyAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX0dldE9iamVjdAorICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19IYXNXYXJuT3B0aW9ucworICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM1LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKKyAgUHlTeXNfU2V0QXJndj1weXRob24zNS5QeVN5c19TZXRBcmd2CisgIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNS5QeVN5c19TZXRBcmd2RXgKKyAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX1NldE9iamVjdAorICBQeVN5c19TZXRQYXRoPXB5dGhvbjM1LlB5U3lzX1NldFBhdGgKKyAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRlcnIKKyAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRvdXQKKyAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNS5QeVRocmVhZFN0YXRlX0NsZWFyCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfRGVsZXRlCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKKyAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9HZXQKKyAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0RGljdAorICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNS5QeVRocmVhZFN0YXRlX05ldworICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKKyAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU3dhcAorICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM1LlB5VHJhY2VCYWNrX0hlcmUKKyAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzUuUHlUcmFjZUJhY2tfUHJpbnQKKyAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNS5QeVRyYWNlQmFja19UeXBlIERBVEEKKyAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNS5QeVR1cGxlSXRlcl9UeXBlIERBVEEKKyAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAorICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9HZXRJdGVtCisgIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzUuUHlUdXBsZV9HZXRTbGljZQorICBQeVR1cGxlX05ldz1weXRob24zNS5QeVR1cGxlX05ldworICBQeVR1cGxlX1BhY2s9cHl0aG9uMzUuUHlUdXBsZV9QYWNrCisgIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNS5QeVR1cGxlX1NldEl0ZW0KKyAgUHlUdXBsZV9TaXplPXB5dGhvbjM1LlB5VHVwbGVfU2l6ZQorICBQeVR1cGxlX1R5cGU9cHl0aG9uMzUuUHlUdXBsZV9UeXBlIERBVEEKKyAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzUuUHlUeXBlX0NsZWFyQ2FjaGUKKyAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlYworICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzUuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCisgIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNBbGxvYworICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNS5QeVR5cGVfR2VuZXJpY05ldworICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzUuUHlUeXBlX0dldEZsYWdzCisgIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM1LlB5VHlwZV9HZXRTbG90CisgIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzUuUHlUeXBlX0lzU3VidHlwZQorICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzUuUHlUeXBlX01vZGlmaWVkCisgIFB5VHlwZV9SZWFkeT1weXRob24zNS5QeVR5cGVfUmVhZHkKKyAgUHlUeXBlX1R5cGU9cHl0aG9uMzUuUHlUeXBlX1R5cGUgREFUQQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM1LlB5VW5pY29kZV9BcHBlbmQKKyAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCisgIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZworICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZworICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCisgIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEYxNlN0cmluZworICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEYzMlN0cmluZworICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjhTdHJpbmcKKyAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1dpZGVDaGFyCisgIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjM1LlB5VW5pY29kZV9DbGVhckZyZWVsaXN0CisgIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM1LlB5VW5pY29kZV9Db21wYXJlCisgIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvbmNhdAorICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzUuUHlVbmljb2RlX0NvbnRhaW5zCisgIFB5VW5pY29kZV9Db3VudD1weXRob24zNS5QeVVuaWNvZGVfQ291bnQKKyAgUHlVbmljb2RlX0RlY29kZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlCisgIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQVNDSUkKKyAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCisgIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUxhdGluMQorICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjE2CisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMzIKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjgKKyAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNS5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKKyAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNS5QeVVuaWNvZGVfRlNEZWNvZGVyCisgIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM1LlB5VW5pY29kZV9GaW5kCisgIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0Zvcm1hdAorICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdFYKKyAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21PYmplY3QKKyAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT3JkaW5hbAorICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfRnJvbVN0cmluZworICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgorICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0dldFNpemUKKyAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zNS5QeVVuaWNvZGVfSXNJZGVudGlmaWVyCisgIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM1LlB5VW5pY29kZV9Kb2luCisgIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1BhcnRpdGlvbgorICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zNS5QeVVuaWNvZGVfUlBhcnRpdGlvbgorICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM1LlB5VW5pY29kZV9SU3BsaXQKKyAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzUuUHlVbmljb2RlX1JlcGxhY2UKKyAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zNS5QeVVuaWNvZGVfUmVzaXplCisgIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfUmljaENvbXBhcmUKKyAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9TcGxpdD1weXRob24zNS5QeVVuaWNvZGVfU3BsaXQKKyAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0bGluZXMKKyAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zNS5QeVVuaWNvZGVfVGFpbG1hdGNoCisgIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzUuUHlVbmljb2RlX1RyYW5zbGF0ZQorICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNS5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAorICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZworICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGNworICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKKyAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNS5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKKyAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkluUGxhY2UKKyAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzUuUHlVbmljb2RlX1R5cGUgREFUQQorICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM1LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQorICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzUuUHlXZWFrcmVmX05ld1Byb3h5CisgIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzUuUHlXZWFrcmVmX05ld1JlZgorICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM1LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQorICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM1LlB5V3JhcHBlcl9OZXcKKyAgUHlaaXBfVHlwZT1weXRob24zNS5QeVppcF9UeXBlIERBVEEKKyAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzUuUHlfQWRkUGVuZGluZ0NhbGwKKyAgUHlfQXRFeGl0PXB5dGhvbjM1LlB5X0F0RXhpdAorICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM1LlB5X0J1aWxkVmFsdWUKKyAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNS5QeV9Db21waWxlU3RyaW5nCisgIFB5X0RlY1JlZj1weXRob24zNS5QeV9EZWNSZWYKKyAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzUuUHlfRW5kSW50ZXJwcmV0ZXIKKyAgUHlfRXhpdD1weXRob24zNS5QeV9FeGl0CisgIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzUuUHlfRmF0YWxFcnJvcgorICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9GaW5hbGl6ZT1weXRob24zNS5QeV9GaW5hbGl6ZQorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzUuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM1LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNS5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNS5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzUuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNS5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzUuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNS5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzUuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzUuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM1LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNS5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM1LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNS5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM1LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNS5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM1LlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzUuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM1LlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM1Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNS5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM1Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM1Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzUuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNS5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNS5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zNS5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzUuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM1Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM1Ll9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM1Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzUuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM1Ll9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMubWFrIGIvUEMvcHl0aG9uMy5tYWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiOGU3YWEuLjAwMDAwMDAKLS0tIGEvUEMvcHl0aG9uMy5tYWsKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0kKE91dERpcilweXRob24zLmRsbDoJcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYgotCWNsIC9MRCAvRmUkKE91dERpcilweXRob24zLmRsbCBweXRob24zZGxsLmMgcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzRzdHViLmxpYgotCi0kKE91dERpcilweXRob24zNHN0dWIubGliOglweXRob24zNHN0dWIuZGVmCi0JbGliIC9kZWY6cHl0aG9uMzRzdHViLmRlZiAvb3V0OiQoT3V0RGlyKXB5dGhvbjM0c3R1Yi5saWIgL01BQ0hJTkU6JChNQUNISU5FKQotCi1jbGVhbjoKLQlJRiBFWElTVCAkKE91dERpcilweXRob24zLmRsbCBkZWwgJChPdXREaXIpcHl0aG9uMy5kbGwKLQlJRiBFWElTVCAkKE91dERpcilweXRob24zLmxpYiBkZWwgJChPdXREaXIpcHl0aG9uMy5saWIKLQlJRiBFWElTVCAkKE91dERpcilweXRob24zNHN0dWIubGliIGRlbCAkKE91dERpcilweXRob24zNHN0dWIubGliCi0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMy5leHAgZGVsICQoT3V0RGlyKXB5dGhvbjMuZXhwCi0JSUYgRVhJU1QgJChPdXREaXIpcHl0aG9uMzRzdHViLmV4cCBkZWwgJChPdXREaXIpcHl0aG9uMzRzdHViLmV4cAotCi1yZWJ1aWxkOiBjbGVhbiAkKE91dERpcilweXRob24zLmRsbApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMzRnZW4ucHkgYi9QQy9weXRob24zNGdlbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgwY2UxMS4uMDAwMDAwMAotLS0gYS9QQy9weXRob24zNGdlbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgR2VuZXJhdGUgcHl0aG9uMzRzdHViLmRlZiBvdXQgb2YgcHl0aG9uMy5kZWYKLSMgVGhlIHJlZ3VsYXIgaW1wb3J0IGxpYnJhcnkgY2Fubm90IGJlIHVzZWQsCi0jIHNpbmNlIGl0IGRvZXNuJ3QgcHJvdmlkZSB0aGUgcmlnaHQgc3ltYm9scyBmb3IKLSMgZGF0YSBmb3J3YXJkaW5nCi1vdXQgPSBvcGVuKCJweXRob24zNHN0dWIuZGVmIiwgInciKQotb3V0LndyaXRlKCdMSUJSQVJZICJweXRob24zNCJcbicpCi1vdXQud3JpdGUoJ0VYUE9SVFNcbicpCi0KLWlucCA9IG9wZW4oInB5dGhvbjMuZGVmIikKLWxpbmUgPSBpbnAucmVhZGxpbmUoKQotd2hpbGUgbGluZS5zdHJpcCgpLnN0YXJ0c3dpdGgoJzsnKToKLSAgICBsaW5lID0gaW5wLnJlYWRsaW5lKCkKLWxpbmUgPSBpbnAucmVhZGxpbmUoKSAjIExJQlJBUlkKLWFzc2VydCBsaW5lLnN0cmlwKCk9PSdFWFBPUlRTJwotCi1mb3IgbGluZSBpbiBpbnA6Ci0gICAgIyBTWU0xPXB5dGhvbjM0LlNZTTJbIERBVEFdCi0gICAgaGVhZCwgdGFpbCA9IGxpbmUuc3BsaXQoJy4nKQotICAgIGlmICdEQVRBJyBpbiB0YWlsOgotICAgICAgICBzeW1ib2wsIHRhaWwgPSB0YWlsLnNwbGl0KCcgJykKLSAgICBlbHNlOgotICAgICAgICBzeW1ib2wgPSB0YWlsLnN0cmlwKCkKLSAgICBvdXQud3JpdGUoc3ltYm9sKydcbicpCi0KLWlucC5jbG9zZSgpCi1vdXQuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMzRzdHViLmRlZiBiL1BDL3B5dGhvbjM0c3R1Yi5kZWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNzRjZjMuLjAwMDAwMDAKLS0tIGEvUEMvcHl0aG9uMzRzdHViLmRlZgorKysgL2Rldi9udWxsCkBAIC0xLDcwMCArMCwwIEBACi1MSUJSQVJZICJweXRob24zNCIKLUVYUE9SVFMKLVB5QXJnX1BhcnNlCi1QeUFyZ19QYXJzZVR1cGxlCi1QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLVB5QXJnX1VucGFja1R1cGxlCi1QeUFyZ19WYVBhcnNlCi1QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcwotUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCi1QeUJhc2VPYmplY3RfVHlwZQotUHlCb29sX0Zyb21Mb25nCi1QeUJvb2xfVHlwZQotUHlCeXRlQXJyYXlJdGVyX1R5cGUKLVB5Qnl0ZUFycmF5X0FzU3RyaW5nCi1QeUJ5dGVBcnJheV9Db25jYXQKLVB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKLVB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCi1QeUJ5dGVBcnJheV9SZXNpemUKLVB5Qnl0ZUFycmF5X1NpemUKLVB5Qnl0ZUFycmF5X1R5cGUKLVB5Qnl0ZXNJdGVyX1R5cGUKLVB5Qnl0ZXNfQXNTdHJpbmcKLVB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCi1QeUJ5dGVzX0NvbmNhdAotUHlCeXRlc19Db25jYXRBbmREZWwKLVB5Qnl0ZXNfRGVjb2RlRXNjYXBlCi1QeUJ5dGVzX0Zyb21Gb3JtYXQKLVB5Qnl0ZXNfRnJvbUZvcm1hdFYKLVB5Qnl0ZXNfRnJvbU9iamVjdAotUHlCeXRlc19Gcm9tU3RyaW5nCi1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCi1QeUJ5dGVzX1JlcHIKLVB5Qnl0ZXNfU2l6ZQotUHlCeXRlc19UeXBlCi1QeUNGdW5jdGlvbl9DYWxsCi1QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0Ci1QeUNGdW5jdGlvbl9HZXRGbGFncwotUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLVB5Q0Z1bmN0aW9uX0dldFNlbGYKLVB5Q0Z1bmN0aW9uX05ldwotUHlDRnVuY3Rpb25fTmV3RXgKLVB5Q0Z1bmN0aW9uX1R5cGUKLVB5Q2FsbEl0ZXJfTmV3Ci1QeUNhbGxJdGVyX1R5cGUKLVB5Q2FsbGFibGVfQ2hlY2sKLVB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci1QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotUHlDYXBzdWxlX0dldE5hbWUKLVB5Q2Fwc3VsZV9HZXRQb2ludGVyCi1QeUNhcHN1bGVfSW1wb3J0Ci1QeUNhcHN1bGVfSXNWYWxpZAotUHlDYXBzdWxlX05ldwotUHlDYXBzdWxlX1NldENvbnRleHQKLVB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi1QeUNhcHN1bGVfU2V0TmFtZQotUHlDYXBzdWxlX1NldFBvaW50ZXIKLVB5Q2Fwc3VsZV9UeXBlCi1QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZQotUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi1QeUNvZGVjX0RlY29kZQotUHlDb2RlY19EZWNvZGVyCi1QeUNvZGVjX0VuY29kZQotUHlDb2RlY19FbmNvZGVyCi1QeUNvZGVjX0lnbm9yZUVycm9ycwotUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKLVB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCi1QeUNvZGVjX0tub3duRW5jb2RpbmcKLVB5Q29kZWNfTG9va3VwRXJyb3IKLVB5Q29kZWNfUmVnaXN0ZXIKLVB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotUHlDb2RlY19SZXBsYWNlRXJyb3JzCi1QeUNvZGVjX1N0cmVhbVJlYWRlcgotUHlDb2RlY19TdHJlYW1Xcml0ZXIKLVB5Q29kZWNfU3RyaWN0RXJyb3JzCi1QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCi1QeUNvbXBsZXhfRnJvbURvdWJsZXMKLVB5Q29tcGxleF9JbWFnQXNEb3VibGUKLVB5Q29tcGxleF9SZWFsQXNEb3VibGUKLVB5Q29tcGxleF9UeXBlCi1QeURlc2NyX05ld0NsYXNzTWV0aG9kCi1QeURlc2NyX05ld0dldFNldAotUHlEZXNjcl9OZXdNZW1iZXIKLVB5RGVzY3JfTmV3TWV0aG9kCi1QeURpY3RJdGVtc19UeXBlCi1QeURpY3RJdGVySXRlbV9UeXBlCi1QeURpY3RJdGVyS2V5X1R5cGUKLVB5RGljdEl0ZXJWYWx1ZV9UeXBlCi1QeURpY3RLZXlzX1R5cGUKLVB5RGljdFByb3h5X05ldwotUHlEaWN0UHJveHlfVHlwZQotUHlEaWN0VmFsdWVzX1R5cGUKLVB5RGljdF9DbGVhcgotUHlEaWN0X0NvbnRhaW5zCi1QeURpY3RfQ29weQotUHlEaWN0X0RlbEl0ZW0KLVB5RGljdF9EZWxJdGVtU3RyaW5nCi1QeURpY3RfR2V0SXRlbQotUHlEaWN0X0dldEl0ZW1TdHJpbmcKLVB5RGljdF9HZXRJdGVtV2l0aEVycm9yCi1QeURpY3RfSXRlbXMKLVB5RGljdF9LZXlzCi1QeURpY3RfTWVyZ2UKLVB5RGljdF9NZXJnZUZyb21TZXEyCi1QeURpY3RfTmV3Ci1QeURpY3RfTmV4dAotUHlEaWN0X1NldEl0ZW0KLVB5RGljdF9TZXRJdGVtU3RyaW5nCi1QeURpY3RfU2l6ZQotUHlEaWN0X1R5cGUKLVB5RGljdF9VcGRhdGUKLVB5RGljdF9WYWx1ZXMKLVB5RWxsaXBzaXNfVHlwZQotUHlFbnVtX1R5cGUKLVB5RXJyX0JhZEFyZ3VtZW50Ci1QeUVycl9CYWRJbnRlcm5hbENhbGwKLVB5RXJyX0NoZWNrU2lnbmFscwotUHlFcnJfQ2xlYXIKLVB5RXJyX0Rpc3BsYXkKLVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLVB5RXJyX0ZldGNoCi1QeUVycl9Gb3JtYXQKLVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotUHlFcnJfTmV3RXhjZXB0aW9uCi1QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi1QeUVycl9Ob01lbW9yeQotUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi1QeUVycl9PY2N1cnJlZAotUHlFcnJfUHJpbnQKLVB5RXJyX1ByaW50RXgKLVB5RXJyX1Byb2dyYW1UZXh0Ci1QeUVycl9SZXN0b3JlCi1QeUVycl9TZXRGcm9tRXJybm8KLVB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQotUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0Ci1QeUVycl9TZXRJbnRlcnJ1cHQKLVB5RXJyX1NldE5vbmUKLVB5RXJyX1NldE9iamVjdAotUHlFcnJfU2V0U3RyaW5nCi1QeUVycl9TeW50YXhMb2NhdGlvbgotUHlFcnJfV2FybkV4Ci1QeUVycl9XYXJuRXhwbGljaXQKLVB5RXJyX1dhcm5Gb3JtYXQKLVB5RXJyX1dyaXRlVW5yYWlzYWJsZQotUHlFdmFsX0FjcXVpcmVMb2NrCi1QeUV2YWxfQWNxdWlyZVRocmVhZAotUHlFdmFsX0NhbGxGdW5jdGlvbgotUHlFdmFsX0NhbGxNZXRob2QKLVB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCi1QeUV2YWxfRXZhbENvZGUKLVB5RXZhbF9FdmFsQ29kZUV4Ci1QeUV2YWxfRXZhbEZyYW1lCi1QeUV2YWxfRXZhbEZyYW1lRXgKLVB5RXZhbF9HZXRCdWlsdGlucwotUHlFdmFsX0dldENhbGxTdGF0cwotUHlFdmFsX0dldEZyYW1lCi1QeUV2YWxfR2V0RnVuY0Rlc2MKLVB5RXZhbF9HZXRGdW5jTmFtZQotUHlFdmFsX0dldEdsb2JhbHMKLVB5RXZhbF9HZXRMb2NhbHMKLVB5RXZhbF9Jbml0VGhyZWFkcwotUHlFdmFsX1JlSW5pdFRocmVhZHMKLVB5RXZhbF9SZWxlYXNlTG9jawotUHlFdmFsX1JlbGVhc2VUaHJlYWQKLVB5RXZhbF9SZXN0b3JlVGhyZWFkCi1QeUV2YWxfU2F2ZVRocmVhZAotUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAotUHlFeGNfQXJpdGhtZXRpY0Vycm9yCi1QeUV4Y19Bc3NlcnRpb25FcnJvcgotUHlFeGNfQXR0cmlidXRlRXJyb3IKLVB5RXhjX0Jhc2VFeGNlcHRpb24KLVB5RXhjX0J1ZmZlckVycm9yCi1QeUV4Y19CeXRlc1dhcm5pbmcKLVB5RXhjX0RlcHJlY2F0aW9uV2FybmluZwotUHlFeGNfRU9GRXJyb3IKLVB5RXhjX0Vudmlyb25tZW50RXJyb3IKLVB5RXhjX0V4Y2VwdGlvbgotUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yCi1QeUV4Y19GdXR1cmVXYXJuaW5nCi1QeUV4Y19HZW5lcmF0b3JFeGl0Ci1QeUV4Y19JT0Vycm9yCi1QeUV4Y19JbXBvcnRFcnJvcgotUHlFeGNfSW1wb3J0V2FybmluZwotUHlFeGNfSW5kZW50YXRpb25FcnJvcgotUHlFeGNfSW5kZXhFcnJvcgotUHlFeGNfS2V5RXJyb3IKLVB5RXhjX0tleWJvYXJkSW50ZXJydXB0Ci1QeUV4Y19Mb29rdXBFcnJvcgotUHlFeGNfTWVtb3J5RXJyb3IKLVB5RXhjX01lbW9yeUVycm9ySW5zdAotUHlFeGNfTmFtZUVycm9yCi1QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yCi1QeUV4Y19PU0Vycm9yCi1QeUV4Y19PdmVyZmxvd0Vycm9yCi1QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nCi1QeUV4Y19SZWN1cnNpb25FcnJvckluc3QKLVB5RXhjX1JlZmVyZW5jZUVycm9yCi1QeUV4Y19SdW50aW1lRXJyb3IKLVB5RXhjX1J1bnRpbWVXYXJuaW5nCi1QeUV4Y19TdG9wSXRlcmF0aW9uCi1QeUV4Y19TeW50YXhFcnJvcgotUHlFeGNfU3ludGF4V2FybmluZwotUHlFeGNfU3lzdGVtRXJyb3IKLVB5RXhjX1N5c3RlbUV4aXQKLVB5RXhjX1RhYkVycm9yCi1QeUV4Y19UeXBlRXJyb3IKLVB5RXhjX1VuYm91bmRMb2NhbEVycm9yCi1QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IKLVB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcgotUHlFeGNfVW5pY29kZUVycm9yCi1QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IKLVB5RXhjX1VuaWNvZGVXYXJuaW5nCi1QeUV4Y19Vc2VyV2FybmluZwotUHlFeGNfVmFsdWVFcnJvcgotUHlFeGNfV2FybmluZwotUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IKLVB5RXhjZXB0aW9uX0dldENhdXNlCi1QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci1QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLVB5RXhjZXB0aW9uX1NldENhdXNlCi1QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci1QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLVB5RmlsZV9Gcm9tRmQKLVB5RmlsZV9HZXRMaW5lCi1QeUZpbGVfV3JpdGVPYmplY3QKLVB5RmlsZV9Xcml0ZVN0cmluZwotUHlGaWx0ZXJfVHlwZQotUHlGbG9hdF9Bc0RvdWJsZQotUHlGbG9hdF9Gcm9tRG91YmxlCi1QeUZsb2F0X0Zyb21TdHJpbmcKLVB5RmxvYXRfR2V0SW5mbwotUHlGbG9hdF9HZXRNYXgKLVB5RmxvYXRfR2V0TWluCi1QeUZsb2F0X1R5cGUKLVB5RnJvemVuU2V0X05ldwotUHlGcm96ZW5TZXRfVHlwZQotUHlHQ19Db2xsZWN0Ci1QeUdJTFN0YXRlX0Vuc3VyZQotUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKLVB5R0lMU3RhdGVfUmVsZWFzZQotUHlHZXRTZXREZXNjcl9UeXBlCi1QeUltcG9ydF9BZGRNb2R1bGUKLVB5SW1wb3J0X0FwcGVuZEluaXR0YWIKLVB5SW1wb3J0X0NsZWFudXAKLVB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCi1QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci1QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLVB5SW1wb3J0X0dldEltcG9ydGVyCi1QeUltcG9ydF9HZXRNYWdpY051bWJlcgotUHlJbXBvcnRfR2V0TWFnaWNUYWcKLVB5SW1wb3J0X0dldE1vZHVsZURpY3QKLVB5SW1wb3J0X0ltcG9ydAotUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi1QeUltcG9ydF9JbXBvcnRNb2R1bGUKLVB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCi1QeUltcG9ydF9SZWxvYWRNb2R1bGUKLVB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgotUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQotUHlJbnRlcnByZXRlclN0YXRlX05ldwotUHlJdGVyX05leHQKLVB5TGlzdEl0ZXJfVHlwZQotUHlMaXN0UmV2SXRlcl9UeXBlCi1QeUxpc3RfQXBwZW5kCi1QeUxpc3RfQXNUdXBsZQotUHlMaXN0X0dldEl0ZW0KLVB5TGlzdF9HZXRTbGljZQotUHlMaXN0X0luc2VydAotUHlMaXN0X05ldwotUHlMaXN0X1JldmVyc2UKLVB5TGlzdF9TZXRJdGVtCi1QeUxpc3RfU2V0U2xpY2UKLVB5TGlzdF9TaXplCi1QeUxpc3RfU29ydAotUHlMaXN0X1R5cGUKLVB5TG9uZ1JhbmdlSXRlcl9UeXBlCi1QeUxvbmdfQXNEb3VibGUKLVB5TG9uZ19Bc0xvbmcKLVB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotUHlMb25nX0FzTG9uZ0xvbmcKLVB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLVB5TG9uZ19Bc1NpemVfdAotUHlMb25nX0FzU3NpemVfdAotUHlMb25nX0FzVW5zaWduZWRMb25nCi1QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCi1QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzawotUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawotUHlMb25nX0FzVm9pZFB0cgotUHlMb25nX0Zyb21Eb3VibGUKLVB5TG9uZ19Gcm9tTG9uZwotUHlMb25nX0Zyb21Mb25nTG9uZwotUHlMb25nX0Zyb21TaXplX3QKLVB5TG9uZ19Gcm9tU3NpemVfdAotUHlMb25nX0Zyb21TdHJpbmcKLVB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi1QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLVB5TG9uZ19Gcm9tVm9pZFB0cgotUHlMb25nX0dldEluZm8KLVB5TG9uZ19UeXBlCi1QeU1hcF9UeXBlCi1QeU1hcHBpbmdfQ2hlY2sKLVB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCi1QeU1hcHBpbmdfSGFzS2V5Ci1QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCi1QeU1hcHBpbmdfSXRlbXMKLVB5TWFwcGluZ19LZXlzCi1QeU1hcHBpbmdfTGVuZ3RoCi1QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotUHlNYXBwaW5nX1NpemUKLVB5TWFwcGluZ19WYWx1ZXMKLVB5TWVtX0ZyZWUKLVB5TWVtX01hbGxvYwotUHlNZW1fUmVhbGxvYwotUHlNZW1iZXJEZXNjcl9UeXBlCi1QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKLVB5TWVtb3J5Vmlld19UeXBlCi1QeU1ldGhvZERlc2NyX1R5cGUKLVB5TW9kdWxlX0FkZEludENvbnN0YW50Ci1QeU1vZHVsZV9BZGRPYmplY3QKLVB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci1QeU1vZHVsZV9DcmVhdGUyCi1QeU1vZHVsZV9HZXREZWYKLVB5TW9kdWxlX0dldERpY3QKLVB5TW9kdWxlX0dldEZpbGVuYW1lCi1QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotUHlNb2R1bGVfR2V0TmFtZQotUHlNb2R1bGVfR2V0U3RhdGUKLVB5TW9kdWxlX05ldwotUHlNb2R1bGVfVHlwZQotUHlOdWxsSW1wb3J0ZXJfVHlwZQotUHlOdW1iZXJfQWJzb2x1dGUKLVB5TnVtYmVyX0FkZAotUHlOdW1iZXJfQW5kCi1QeU51bWJlcl9Bc1NzaXplX3QKLVB5TnVtYmVyX0NoZWNrCi1QeU51bWJlcl9EaXZtb2QKLVB5TnVtYmVyX0Zsb2F0Ci1QeU51bWJlcl9GbG9vckRpdmlkZQotUHlOdW1iZXJfSW5QbGFjZUFkZAotUHlOdW1iZXJfSW5QbGFjZUFuZAotUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCi1QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci1QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLVB5TnVtYmVyX0luUGxhY2VPcgotUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi1QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCi1QeU51bWJlcl9JblBsYWNlUnNoaWZ0Ci1QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKLVB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCi1QeU51bWJlcl9JblBsYWNlWG9yCi1QeU51bWJlcl9JbmRleAotUHlOdW1iZXJfSW52ZXJ0Ci1QeU51bWJlcl9Mb25nCi1QeU51bWJlcl9Mc2hpZnQKLVB5TnVtYmVyX011bHRpcGx5Ci1QeU51bWJlcl9OZWdhdGl2ZQotUHlOdW1iZXJfT3IKLVB5TnVtYmVyX1Bvc2l0aXZlCi1QeU51bWJlcl9Qb3dlcgotUHlOdW1iZXJfUmVtYWluZGVyCi1QeU51bWJlcl9Sc2hpZnQKLVB5TnVtYmVyX1N1YnRyYWN0Ci1QeU51bWJlcl9Ub0Jhc2UKLVB5TnVtYmVyX1RydWVEaXZpZGUKLVB5TnVtYmVyX1hvcgotUHlPU19BZnRlckZvcmsKLVB5T1NfSW5pdEludGVycnVwdHMKLVB5T1NfSW5wdXRIb29rCi1QeU9TX0ludGVycnVwdE9jY3VycmVkCi1QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyCi1QeU9TX2RvdWJsZV90b19zdHJpbmcKLVB5T1NfZ2V0c2lnCi1QeU9TX215c3RyaWNtcAotUHlPU19teXN0cm5pY21wCi1QeU9TX3NldHNpZwotUHlPU19zbnByaW50ZgotUHlPU19zdHJpbmdfdG9fZG91YmxlCi1QeU9TX3N0cnRvbAotUHlPU19zdHJ0b3VsCi1QeU9TX3ZzbnByaW50ZgotUHlPYmplY3RfQVNDSUkKLVB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgotUHlPYmplY3RfQXNSZWFkQnVmZmVyCi1QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCi1QeU9iamVjdF9CeXRlcwotUHlPYmplY3RfQ2FsbAotUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCi1QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi1QeU9iamVjdF9DYWxsTWV0aG9kCi1QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotUHlPYmplY3RfQ2FsbE9iamVjdAotUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCi1QeU9iamVjdF9DbGVhcldlYWtSZWZzCi1QeU9iamVjdF9EZWxJdGVtCi1QeU9iamVjdF9EZWxJdGVtU3RyaW5nCi1QeU9iamVjdF9EaXIKLVB5T2JqZWN0X0Zvcm1hdAotUHlPYmplY3RfRnJlZQotUHlPYmplY3RfR0NfRGVsCi1QeU9iamVjdF9HQ19UcmFjawotUHlPYmplY3RfR0NfVW5UcmFjawotUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKLVB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi1QeU9iamVjdF9HZXRBdHRyCi1QeU9iamVjdF9HZXRBdHRyU3RyaW5nCi1QeU9iamVjdF9HZXRJdGVtCi1QeU9iamVjdF9HZXRJdGVyCi1QeU9iamVjdF9IYXNBdHRyCi1QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi1QeU9iamVjdF9IYXNoCi1QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKLVB5T2JqZWN0X0luaXQKLVB5T2JqZWN0X0luaXRWYXIKLVB5T2JqZWN0X0lzSW5zdGFuY2UKLVB5T2JqZWN0X0lzU3ViY2xhc3MKLVB5T2JqZWN0X0lzVHJ1ZQotUHlPYmplY3RfTGVuZ3RoCi1QeU9iamVjdF9NYWxsb2MKLVB5T2JqZWN0X05vdAotUHlPYmplY3RfUmVhbGxvYwotUHlPYmplY3RfUmVwcgotUHlPYmplY3RfUmljaENvbXBhcmUKLVB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotUHlPYmplY3RfU2VsZkl0ZXIKLVB5T2JqZWN0X1NldEF0dHIKLVB5T2JqZWN0X1NldEF0dHJTdHJpbmcKLVB5T2JqZWN0X1NldEl0ZW0KLVB5T2JqZWN0X1NpemUKLVB5T2JqZWN0X1N0cgotUHlPYmplY3RfVHlwZQotUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLVB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKLVB5UHJvcGVydHlfVHlwZQotUHlSYW5nZUl0ZXJfVHlwZQotUHlSYW5nZV9UeXBlCi1QeVJldmVyc2VkX1R5cGUKLVB5U2VxSXRlcl9OZXcKLVB5U2VxSXRlcl9UeXBlCi1QeVNlcXVlbmNlX0NoZWNrCi1QeVNlcXVlbmNlX0NvbmNhdAotUHlTZXF1ZW5jZV9Db250YWlucwotUHlTZXF1ZW5jZV9Db3VudAotUHlTZXF1ZW5jZV9EZWxJdGVtCi1QeVNlcXVlbmNlX0RlbFNsaWNlCi1QeVNlcXVlbmNlX0Zhc3QKLVB5U2VxdWVuY2VfR2V0SXRlbQotUHlTZXF1ZW5jZV9HZXRTbGljZQotUHlTZXF1ZW5jZV9JbgotUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci1QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLVB5U2VxdWVuY2VfSW5kZXgKLVB5U2VxdWVuY2VfTGVuZ3RoCi1QeVNlcXVlbmNlX0xpc3QKLVB5U2VxdWVuY2VfUmVwZWF0Ci1QeVNlcXVlbmNlX1NldEl0ZW0KLVB5U2VxdWVuY2VfU2V0U2xpY2UKLVB5U2VxdWVuY2VfU2l6ZQotUHlTZXF1ZW5jZV9UdXBsZQotUHlTZXRJdGVyX1R5cGUKLVB5U2V0X0FkZAotUHlTZXRfQ2xlYXIKLVB5U2V0X0NvbnRhaW5zCi1QeVNldF9EaXNjYXJkCi1QeVNldF9OZXcKLVB5U2V0X1BvcAotUHlTZXRfU2l6ZQotUHlTZXRfVHlwZQotUHlTbGljZV9HZXRJbmRpY2VzCi1QeVNsaWNlX0dldEluZGljZXNFeAotUHlTbGljZV9OZXcKLVB5U2xpY2VfVHlwZQotUHlTb3J0V3JhcHBlcl9UeXBlCi1QeVN0YXRlX0ZpbmRNb2R1bGUKLVB5U3RhdGVfQWRkTW9kdWxlCi1QeVN0YXRlX1JlbW92ZU1vZHVsZQotUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCi1QeVN0cnVjdFNlcXVlbmNlX05ldwotUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCi1QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KLVB5U3VwZXJfVHlwZQotUHlTeXNfQWRkV2Fybk9wdGlvbgotUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLVB5U3lzX0Zvcm1hdFN0ZGVycgotUHlTeXNfRm9ybWF0U3Rkb3V0Ci1QeVN5c19HZXRPYmplY3QKLVB5U3lzX0hhc1dhcm5PcHRpb25zCi1QeVN5c19SZXNldFdhcm5PcHRpb25zCi1QeVN5c19TZXRBcmd2Ci1QeVN5c19TZXRBcmd2RXgKLVB5U3lzX1NldE9iamVjdAotUHlTeXNfU2V0UGF0aAotUHlTeXNfV3JpdGVTdGRlcnIKLVB5U3lzX1dyaXRlU3Rkb3V0Ci1QeVRocmVhZFN0YXRlX0NsZWFyCi1QeVRocmVhZFN0YXRlX0RlbGV0ZQotUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci1QeVRocmVhZFN0YXRlX0dldAotUHlUaHJlYWRTdGF0ZV9HZXREaWN0Ci1QeVRocmVhZFN0YXRlX05ldwotUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YwotUHlUaHJlYWRTdGF0ZV9Td2FwCi1QeVRyYWNlQmFja19IZXJlCi1QeVRyYWNlQmFja19QcmludAotUHlUcmFjZUJhY2tfVHlwZQotUHlUdXBsZUl0ZXJfVHlwZQotUHlUdXBsZV9DbGVhckZyZWVMaXN0Ci1QeVR1cGxlX0dldEl0ZW0KLVB5VHVwbGVfR2V0U2xpY2UKLVB5VHVwbGVfTmV3Ci1QeVR1cGxlX1BhY2sKLVB5VHVwbGVfU2V0SXRlbQotUHlUdXBsZV9TaXplCi1QeVR1cGxlX1R5cGUKLVB5VHlwZV9DbGVhckNhY2hlCi1QeVR5cGVfRnJvbVNwZWMKLVB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwotUHlUeXBlX0dlbmVyaWNBbGxvYwotUHlUeXBlX0dlbmVyaWNOZXcKLVB5VHlwZV9HZXRGbGFncwotUHlUeXBlX0dldFNsb3QKLVB5VHlwZV9Jc1N1YnR5cGUKLVB5VHlwZV9Nb2RpZmllZAotUHlUeXBlX1JlYWR5Ci1QeVR5cGVfVHlwZQotUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLVB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKLVB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAotUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCi1QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLVB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci1QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLVB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0Ci1QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKLVB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgotUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLVB5VW5pY29kZUl0ZXJfVHlwZQotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKLVB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAotUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCi1QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotUHlVbmljb2RlX0FwcGVuZAotUHlVbmljb2RlX0FwcGVuZEFuZERlbAotUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKLVB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKLVB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKLVB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCi1QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0Ci1QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCi1QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQotUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCi1QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi1QeVVuaWNvZGVfQXNVVEYxNlN0cmluZwotUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKLVB5VW5pY29kZV9Bc1VURjhTdHJpbmcKLVB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLVB5VW5pY29kZV9Bc1dpZGVDaGFyCi1QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAotUHlVbmljb2RlX0NvbXBhcmUKLVB5VW5pY29kZV9Db25jYXQKLVB5VW5pY29kZV9Db250YWlucwotUHlVbmljb2RlX0NvdW50Ci1QeVVuaWNvZGVfRGVjb2RlCi1QeVVuaWNvZGVfRGVjb2RlQVNDSUkKLVB5VW5pY29kZV9EZWNvZGVDaGFybWFwCi1QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0Ci1QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotUHlVbmljb2RlX0RlY29kZUxhdGluMQotUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLVB5VW5pY29kZV9EZWNvZGVVVEYxNgotUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKLVB5VW5pY29kZV9EZWNvZGVVVEYzMgotUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKLVB5VW5pY29kZV9EZWNvZGVVVEY4Ci1QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCi1QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQotUHlVbmljb2RlX0ZTQ29udmVydGVyCi1QeVVuaWNvZGVfRlNEZWNvZGVyCi1QeVVuaWNvZGVfRmluZAotUHlVbmljb2RlX0Zvcm1hdAotUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0Ci1QeVVuaWNvZGVfRnJvbUZvcm1hdAotUHlVbmljb2RlX0Zyb21Gb3JtYXRWCi1QeVVuaWNvZGVfRnJvbU9iamVjdAotUHlVbmljb2RlX0Zyb21PcmRpbmFsCi1QeVVuaWNvZGVfRnJvbVN0cmluZwotUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCi1QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCi1QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCi1QeVVuaWNvZGVfR2V0U2l6ZQotUHlVbmljb2RlX0lzSWRlbnRpZmllcgotUHlVbmljb2RlX0pvaW4KLVB5VW5pY29kZV9QYXJ0aXRpb24KLVB5VW5pY29kZV9SUGFydGl0aW9uCi1QeVVuaWNvZGVfUlNwbGl0Ci1QeVVuaWNvZGVfUmVwbGFjZQotUHlVbmljb2RlX1Jlc2l6ZQotUHlVbmljb2RlX1JpY2hDb21wYXJlCi1QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCi1QeVVuaWNvZGVfU3BsaXQKLVB5VW5pY29kZV9TcGxpdGxpbmVzCi1QeVVuaWNvZGVfVGFpbG1hdGNoCi1QeVVuaWNvZGVfVHJhbnNsYXRlCi1QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAotUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLVB5VW5pY29kZV9EZWNvZGVVVEY3Ci1QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi1QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0Ci1QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi1QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQotUHlVbmljb2RlX1R5cGUKLVB5V2Vha3JlZl9HZXRPYmplY3QKLVB5V2Vha3JlZl9OZXdQcm94eQotUHlXZWFrcmVmX05ld1JlZgotUHlXcmFwcGVyRGVzY3JfVHlwZQotUHlXcmFwcGVyX05ldwotUHlaaXBfVHlwZQotUHlfQWRkUGVuZGluZ0NhbGwKLVB5X0F0RXhpdAotUHlfQnVpbGRWYWx1ZQotUHlfQ29tcGlsZVN0cmluZwotUHlfRGVjUmVmCi1QeV9FbmRJbnRlcnByZXRlcgotUHlfRXhpdAotUHlfRmF0YWxFcnJvcgotUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZwotUHlfRmluYWxpemUKLVB5X0dldEJ1aWxkSW5mbwotUHlfR2V0Q29tcGlsZXIKLVB5X0dldENvcHlyaWdodAotUHlfR2V0RXhlY1ByZWZpeAotUHlfR2V0UGF0aAotUHlfR2V0UGxhdGZvcm0KLVB5X0dldFByZWZpeAotUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi1QeV9HZXRQcm9ncmFtTmFtZQotUHlfR2V0UHl0aG9uSG9tZQotUHlfR2V0UmVjdXJzaW9uTGltaXQKLVB5X0dldFZlcnNpb24KLVB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcKLVB5X0luY1JlZgotUHlfSW5pdGlhbGl6ZQotUHlfSW5pdGlhbGl6ZUV4Ci1QeV9Jc0luaXRpYWxpemVkCi1QeV9NYWluCi1QeV9NYWtlUGVuZGluZ0NhbGxzCi1QeV9OZXdJbnRlcnByZXRlcgotUHlfUmVwckVudGVyCi1QeV9SZXByTGVhdmUKLVB5X1NldFByb2dyYW1OYW1lCi1QeV9TZXRQeXRob25Ib21lCi1QeV9TZXRSZWN1cnNpb25MaW1pdAotUHlfU3ltdGFibGVTdHJpbmcKLVB5X1ZhQnVpbGRWYWx1ZQotX1B5RXJyX0JhZEludGVybmFsQ2FsbAotX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKLV9QeU9iamVjdF9HQ19NYWxsb2MKLV9QeU9iamVjdF9HQ19OZXcKLV9QeU9iamVjdF9HQ19OZXdWYXIKLV9QeU9iamVjdF9HQ19SZXNpemUKLV9QeU9iamVjdF9OZXcKLV9QeU9iamVjdF9OZXdWYXIKLV9QeVN0YXRlX0FkZE1vZHVsZQotX1B5VGhyZWFkU3RhdGVfSW5pdAotX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKLV9QeVRyYXNoX2RlbGV0ZV9sYXRlcgotX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcKLV9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci1fUHlUcmFzaF9kZXN0cm95X2NoYWluCi1fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlCi1fUHlXZWFrcmVmX1Byb3h5VHlwZQotX1B5V2Vha3JlZl9SZWZUeXBlCi1fUHlfQnVpbGRWYWx1ZV9TaXplVAotX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQKLV9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLV9QeV9EZWFsbG9jCi1fUHlfRWxsaXBzaXNPYmplY3QKLV9QeV9GYWxzZVN0cnVjdAotX1B5X05vbmVTdHJ1Y3QKLV9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdAotX1B5X1N3YXBwZWRPcAotX1B5X1RydWVTdHJ1Y3QKLV9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKLV9QeUFyZ19QYXJzZV9TaXplVAotX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKLV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLV9QeUFyZ19WYVBhcnNlX1NpemVUCi1fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLV9QeV9CdWlsZFZhbHVlX1NpemVUCmRpZmYgLS1naXQgYS9QQy9weXRob25fZXhlLnJjIGIvUEMvcHl0aG9uX2V4ZS5yYwppbmRleCAxNGUyNTc0Li45MTc4NWExIDEwMDY0NAotLS0gYS9QQy9weXRob25fZXhlLnJjCisrKyBiL1BDL3B5dGhvbl9leGUucmMKQEAgLTEgKzEsNDkgQEAKLTEgICAgICAgICAgIElDT04gICAgRElTQ0FSREFCTEUgICAgICJweWNvbi5pY28iIAorLy8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29uc29sZSBFWEVzLgorCisjaW5jbHVkZSAicHl0aG9uX3Zlcl9yYy5oIgorCisvLyBJbmNsdWRlIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaW5kaWNhdGVzIHdlIHN1cHBvcnQgYWxsCisvLyBjdXJyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisjaW5jbHVkZSA8d2ludXNlci5oPgorMSBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgorCisxIElDT04gRElTQ0FSREFCTEUgInB5Y29uLmljbyIgCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyBWU19GRl9ERUJVRworI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0FQUAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gQ29uc29sZVwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgUFlUSE9OX0NPUFlSSUdIVCAiXDAiCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJweXRob24iIFBZVEhPTl9ERUJVR19FWFQgIi5leGVcMCIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob25cMCIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDAsIDEyMDAKKyAgICBFTkQKK0VORApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX250LnJjIGIvUEMvcHl0aG9uX250LnJjCmluZGV4IGY4NWQ1MzkuLmZhYzYxMDUgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9udC5yYworKysgYi9QQy9weXRob25fbnQucmMKQEAgLTEsMzMgKzEsMTEgQEAKIC8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvcmUgRExMLgotLy8gQ3VycmVudGx5IG9ubHkgaG9sZHMgdmVyc2lvbiBpbmZvcm1hdGlvbi4KLS8vCi0jaW5jbHVkZSAid2ludmVyLmgiCiAKLSNkZWZpbmUgTVNfV0lORE9XUwotI2luY2x1ZGUgIm1vZHN1cHBvcnQuaCIKLSNpbmNsdWRlICJwYXRjaGxldmVsLmgiCi0jaWZkZWYgX0RFQlVHCi0jICAgaW5jbHVkZSAicHl0aG9ubnRfcmNfZC5oIgotI2Vsc2UKLSMgICBpbmNsdWRlICJweXRob25udF9yYy5oIgotI2VuZGlmCisjaW5jbHVkZSAicHl0aG9uX3Zlcl9yYy5oIgogCi0vKiBlLmcuLCAzLjMuMGExCi0gKiBQWV9WRVJTSU9OIGNvbWVzIGZyb20gcGF0Y2hldmVsLmgKLSAqLwotI2RlZmluZSBQWVRIT05fVkVSU0lPTiBQWV9WRVJTSU9OICJcMCIKLQotLyogNjQtYml0IHZlcnNpb24gbnVtYmVyIGFzIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIDQgMTYtYml0IGludHMgKi8KLSNpZiBQWV9NSUNST19WRVJTSU9OID4gNjQKLSMgICBlcnJvciAiUFlfTUlDUk9fVkVSU0lPTiA+IDY0IgotI2VuZGlmCi0jaWYgUFlfUkVMRUFTRV9MRVZFTCA+IDk5Ci0jICAgZXJyb3IgIlBZX1JFTEVBU0VfTEVWRUwgPiA5OSIKLSNlbmRpZgotI2lmIFBZX1JFTEVBU0VfU0VSSUFMID4gOQotIyAgIGVycm9yICJQWV9SRUxFQVNFX1NFUklBTCA+IDkiCi0jZW5kaWYKLSNkZWZpbmUgUFlWRVJTSU9ONjQgUFlfTUFKT1JfVkVSU0lPTiwgUFlfTUlOT1JfVkVSU0lPTiwgRklFTEQzLCBQWVRIT05fQVBJX1ZFUlNJT04KKy8vIEluY2x1ZGUgdGhlIG1hbmlmZXN0IGZpbGUgdGhhdCBpbmRpY2F0ZXMgd2Ugc3VwcG9ydCBhbGwKKy8vIGN1cnJlbnQgdmVyc2lvbnMgb2YgV2luZG93cy4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CisyIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKIC8vIFN0cmluZyBUYWJsZXMKIFNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkBAIC00NSwyMyArMjMsMjMgQEAKICBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAogIEZJTEVGTEFHU01BU0sgMHgzZkwKICNpZmRlZiBfREVCVUcKLSBGSUxFRkxBR1MgMHgxTAorIEZJTEVGTEFHUyBWU19GRl9ERUJVRwogI2Vsc2UKICBGSUxFRkxBR1MgMHgwTAogI2VuZGlmCi0gRklMRU9TIDB4NDAwMDRMCi0gRklMRVRZUEUgMHgxTAorIEZJTEVPUyBWT1NfX1dJTkRPV1MzMgorIEZJTEVUWVBFIFZGVF9ETEwKICBGSUxFU1VCVFlQRSAweDBMCiBCRUdJTgogICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKICAgICBCRUdJTgogICAgICAgICBCTE9DSyAiMDAwMDA0YjAiCiAgICAgICAgIEJFR0lOCi0gICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKICAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uIENvcmVcMCIKICAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCiAgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIlB5dGhvbiBETExcMCIKLSAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgqSAyMDAxLTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIENvcHlyaWdodCCpIDIwMDAgQmVPcGVuLmNvbS4gQ29weXJpZ2h0IKkgMTk5NS0yMDAxIENOUkkuIENvcHlyaWdodCCpIDE5OTEtMTk5NSBTTUMuXDAiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCBQWVRIT05fQ09QWVJJR0hUICJcMCIKICAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgUFlUSE9OX0RMTF9OQU1FICJcMCIKICAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob25cMCIKICAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCmRpZmYgLS1naXQgYS9QQy9weXRob25fdmVyX3JjLmggYi9QQy9weXRob25fdmVyX3JjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI3ZTliZQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbl92ZXJfcmMuaApAQCAtMCwwICsxLDM1IEBACisvLyBSZXNvdXJjZSBzY3JpcHQgZm9yIFB5dGhvbiBjb3JlIERMTC4KKy8vIEN1cnJlbnRseSBvbmx5IGhvbGRzIHZlcnNpb24gaW5mb3JtYXRpb24uCisvLworI2luY2x1ZGUgIndpbnZlci5oIgorCisjZGVmaW5lIFBZVEhPTl9DT01QQU5ZICAgIlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgorI2RlZmluZSBQWVRIT05fQ09QWVJJR0hUICJDb3B5cmlnaHQgXHhBOSAyMDAxLTIwMTUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIENvcHlyaWdodCBceEE5IDIwMDAgQmVPcGVuLmNvbS4gQ29weXJpZ2h0IFx4QTkgMTk5NS0yMDAxIENOUkkuIENvcHlyaWdodCBceEE5IDE5OTEtMTk5NSBTTUMuIgorCisjZGVmaW5lIE1TX1dJTkRPV1MKKyNpbmNsdWRlICJtb2RzdXBwb3J0LmgiCisjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgorI2lmZGVmIF9ERUJVRworIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjX2QuaCIKKyMgICBkZWZpbmUgUFlUSE9OX0RFQlVHX0VYVCAiX2QiCisjZWxzZQorIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjLmgiCisjICAgZGVmaW5lIFBZVEhPTl9ERUJVR19FWFQKKyNlbmRpZgorCisvKiBlLmcuLCAzLjMuMGExCisgKiBQWV9WRVJTSU9OIGNvbWVzIGZyb20gcGF0Y2hsZXZlbC5oCisgKi8KKyNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCisKKy8qIDY0LWJpdCB2ZXJzaW9uIG51bWJlciBhcyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiA0IDE2LWJpdCBpbnRzICovCisjaWYgUFlfTUlDUk9fVkVSU0lPTiA+IDY0CisjICAgZXJyb3IgIlBZX01JQ1JPX1ZFUlNJT04gPiA2NCIKKyNlbmRpZgorI2lmIFBZX1JFTEVBU0VfTEVWRUwgPiA5OQorIyAgIGVycm9yICJQWV9SRUxFQVNFX0xFVkVMID4gOTkiCisjZW5kaWYKKyNpZiBQWV9SRUxFQVNFX1NFUklBTCA+IDkKKyMgICBlcnJvciAiUFlfUkVMRUFTRV9TRVJJQUwgPiA5IgorI2VuZGlmCisjZGVmaW5lIFBZVkVSU0lPTjY0IFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04sIEZJRUxEMywgUFlUSE9OX0FQSV9WRVJTSU9OCmRpZmYgLS1naXQgYS9QQy9yZWFkbWUudHh0IGIvUEMvcmVhZG1lLnR4dAppbmRleCA5OTAwNmJmLi4wYTk2ZDI2IDEwMDY0NAotLS0gYS9QQy9yZWFkbWUudHh0CisrKyBiL1BDL3JlYWRtZS50eHQKQEAgLTcyLDExICs3Miw2IEBACiAgICAgICAgICAgICAgICB2YXJpb3VzIERMTHMsIHRvIGF2b2lkIHJ1bi10aW1lIHJlbG9jYXRpb24uCiAKIAotTGVnYWN5IHN1cHBvcnQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1UaGUgc3ViZGlyZWN0b3JpZXMgVkM2LCBWUzcuMSBhbmQgVlM4LjAgY29udGFpbiBsZWdhY3kgc3VwcG9ydCBvbGRlcgotdmVyc2lvbnMgb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8uIFNlZSBQQ2J1aWxkL3JlYWRtZS50eHQuCi0KIE5vdGUgZm9yIFdpbmRvd3MgMy54IGFuZCBET1MgdXNlcnMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCAxOWQ1YTcwLi4zMzEzMjAyIDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIndpbmRvd3MuaCIKIAogc3RhdGljIEJPT0wgUHlIS0VZX0FzSEtFWShQeU9iamVjdCAqb2IsIEhLRVkgKnBSZXMsIEJPT0wgYk5vbmVPSyk7CitzdGF0aWMgQk9PTCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iLCB2b2lkICpwKTsKIHN0YXRpYyBQeU9iamVjdCAqUHlIS0VZX0Zyb21IS0VZKEhLRVkgaCk7CiBzdGF0aWMgQk9PTCBQeUhLRVlfQ2xvc2UoUHlPYmplY3QgKm9iSGFuZGxlKTsKIApAQCAtNDYsMTAgKzQ3LDEyIEBACiAiRGVsZXRlVmFsdWUoKSAtIFJlbW92ZXMgYSBuYW1lZCB2YWx1ZSBmcm9tIHRoZSBzcGVjaWZpZWQgcmVnaXN0cnkga2V5LlxuIgogIkVudW1LZXkoKSAtIEVudW1lcmF0ZXMgc3Via2V5cyBvZiB0aGUgc3BlY2lmaWVkIG9wZW4gcmVnaXN0cnkga2V5LlxuIgogIkVudW1WYWx1ZSgpIC0gRW51bWVyYXRlcyB2YWx1ZXMgb2YgdGhlIHNwZWNpZmllZCBvcGVuIHJlZ2lzdHJ5IGtleS5cbiIKLSJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoKSAtIEV4cGFuZCB0aGUgZW52IHN0cmluZ3MgaW4gYSBSRUdfRVhQQU5EX1NaIHN0cmluZy5cbiIKKyJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoKSAtIEV4cGFuZCB0aGUgZW52IHN0cmluZ3MgaW4gYSBSRUdfRVhQQU5EX1NaXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuXG4iCiAiRmx1c2hLZXkoKSAtIFdyaXRlcyBhbGwgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHNwZWNpZmllZCBrZXkgdG8gdGhlIHJlZ2lzdHJ5LlxuIgotIkxvYWRLZXkoKSAtIENyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORSBhbmQgc3RvcmVzXG4iCi0iICAgICAgICAgICAgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWZpZWQgZmlsZSBpbnRvIHRoYXQgc3Via2V5LlxuIgorIkxvYWRLZXkoKSAtIENyZWF0ZXMgYSBzdWJrZXkgdW5kZXIgSEtFWV9VU0VSIG9yIEhLRVlfTE9DQUxfTUFDSElORSBhbmRcbiIKKyIgICAgICAgICAgICBzdG9yZXMgcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBzcGVjaWZpZWQgZmlsZSBpbnRvIHRoYXRcbiIKKyIgICAgICAgICAgICBzdWJrZXkuXG4iCiAiT3BlbktleSgpIC0gT3BlbnMgdGhlIHNwZWNpZmllZCBrZXkuXG4iCiAiT3BlbktleUV4KCkgLSBBbGlhcyBvZiBPcGVuS2V5KCkuXG4iCiAiUXVlcnlWYWx1ZSgpIC0gUmV0cmlldmVzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHVubmFtZWQgdmFsdWUgZm9yIGFcbiIKQEAgLTcxLDI5OSArNzQsNiBAQAogInRvIHNlZSB3aGF0IGNvbnN0YW50cyBhcmUgdXNlZCwgYW5kIHdoZXJlLiIpOwogCiAKLVB5RG9jX1NUUlZBUihDbG9zZUtleV9kb2MsCi0iQ2xvc2VLZXkoaGtleSlcbiIKLSJDbG9zZXMgYSBwcmV2aW91c2x5IG9wZW5lZCByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0iVGhlIGhrZXkgYXJndW1lbnQgc3BlY2lmaWVzIGEgcHJldmlvdXNseSBvcGVuZWQga2V5LlxuIgotIlxuIgotIk5vdGUgdGhhdCBpZiB0aGUga2V5IGlzIG5vdCBjbG9zZWQgdXNpbmcgdGhpcyBtZXRob2QsIGl0IHdpbGwgYmVcbiIKLSJjbG9zZWQgd2hlbiB0aGUgaGtleSBvYmplY3QgaXMgZGVzdHJveWVkIGJ5IFB5dGhvbi4iKTsKLQotUHlEb2NfU1RSVkFSKENvbm5lY3RSZWdpc3RyeV9kb2MsCi0iQ29ubmVjdFJlZ2lzdHJ5KGNvbXB1dGVyX25hbWUsIGtleSkgLT4ga2V5XG4iCi0iRXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHRvIGEgcHJlZGVmaW5lZCByZWdpc3RyeSBoYW5kbGUgb24gYW5vdGhlciBjb21wdXRlci5cbiIKLSJcbiIKLSJjb21wdXRlcl9uYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSByZW1vdGUgY29tcHV0ZXIsIG9mIHRoZSBmb3JtIFxcXFxjb21wdXRlcm5hbWUuXG4iCi0iICAgICAgICAgICAgICBJZiBOb25lLCB0aGUgbG9jYWwgY29tcHV0ZXIgaXMgdXNlZC5cbiIKLSJrZXkgaXMgdGhlIHByZWRlZmluZWQgaGFuZGxlIHRvIGNvbm5lY3QgdG8uXG4iCi0iXG4iCi0iVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgaGFuZGxlIG9mIHRoZSBvcGVuZWQga2V5LlxuIgotIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwotCi1QeURvY19TVFJWQVIoQ3JlYXRlS2V5X2RvYywKLSJDcmVhdGVLZXkoa2V5LCBzdWJfa2V5KSAtPiBrZXlcbiIKLSJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJzdWJfa2V5IGlzIGEgc3RyaW5nIHRoYXQgbmFtZXMgdGhlIGtleSB0aGlzIG1ldGhvZCBvcGVucyBvciBjcmVhdGVzLlxuIgotIlxuIgotIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgotInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgotIlxuIgotIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleS5cbiIKLSJcbiIKLSJUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihDcmVhdGVLZXlFeF9kb2MsCi0iQ3JlYXRlS2V5RXgoa2V5LCBzdWJfa2V5LCByZXNlcnZlZD0wLCBhY2Nlc3M9S0VZX1dSSVRFKSAtPiBrZXlcbiIKLSJDcmVhdGVzIG9yIG9wZW5zIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50c1xuIgotInN1Yl9rZXkgaXMgYSBzdHJpbmcgdGhhdCBuYW1lcyB0aGUga2V5IHRoaXMgbWV0aG9kIG9wZW5zIG9yIGNyZWF0ZXMuXG4iCi0icmVzZXJ2ZWQgaXMgYSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgotImFjY2VzcyBpcyBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBcbiIKLSIgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dSSVRFLlxuIgotIlxuIgotIklmIGtleSBpcyBvbmUgb2YgdGhlIHByZWRlZmluZWQga2V5cywgc3ViX2tleSBtYXkgYmUgTm9uZS4gSW4gdGhhdCBjYXNlLFxuIgotInRoZSBoYW5kbGUgcmV0dXJuZWQgaXMgdGhlIHNhbWUga2V5IGhhbmRsZSBwYXNzZWQgaW4gdG8gdGhlIGZ1bmN0aW9uLlxuIgotIlxuIgotIklmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMsIHRoaXMgZnVuY3Rpb24gb3BlbnMgdGhlIGV4aXN0aW5nIGtleVxuIgotIlxuIgotIlRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS5cbiIKLSJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKERlbGV0ZUtleV9kb2MsCi0iRGVsZXRlS2V5KGtleSwgc3ViX2tleSlcbiIKLSJEZWxldGVzIHRoZSBzcGVjaWZpZWQga2V5LlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG11c3QgYmUgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXlcbiIKLSIgICAgICAgIHBhcmFtZXRlci4gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBOb25lLCBhbmQgdGhlIGtleSBtYXkgbm90IGhhdmVcbiIKLSIgICAgICAgIHN1YmtleXMuXG4iCi0iXG4iCi0iVGhpcyBtZXRob2QgY2FuIG5vdCBkZWxldGUga2V5cyB3aXRoIHN1YmtleXMuXG4iCi0iXG4iCi0iSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgZW50aXJlIGtleSwgaW5jbHVkaW5nIGFsbCBvZiBpdHMgdmFsdWVzLFxuIgotImlzIHJlbW92ZWQuICBJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKLQotUHlEb2NfU1RSVkFSKERlbGV0ZUtleUV4X2RvYywKLSJEZWxldGVLZXlFeChrZXksIHN1Yl9rZXksIGFjY2Vzcz1LRVlfV09XNjRfNjRLRVksIHJlc2VydmVkPTApXG4iCi0iRGVsZXRlcyB0aGUgc3BlY2lmaWVkIGtleSAoNjQtYml0IE9TIG9ubHkpLlxuIgotIlxuIgotImtleSBpcyBhbiBhbHJlYWR5IG9wZW4ga2V5LCBvciBhbnkgb25lIG9mIHRoZSBwcmVkZWZpbmVkIEhLRVlfKiBjb25zdGFudHMuXG4iCi0ic3ViX2tleSBpcyBhIHN0cmluZyB0aGF0IG11c3QgYmUgYSBzdWJrZXkgb2YgdGhlIGtleSBpZGVudGlmaWVkIGJ5IHRoZSBrZXlcbiIKLSIgICAgICAgIHBhcmFtZXRlci4gVGhpcyB2YWx1ZSBtdXN0IG5vdCBiZSBOb25lLCBhbmQgdGhlIGtleSBtYXkgbm90IGhhdmVcbiIKLSIgICAgICAgIHN1YmtleXMuXG4iCi0icmVzZXJ2ZWQgaXMgYSByZXNlcnZlZCBpbnRlZ2VyLCBhbmQgbXVzdCBiZSB6ZXJvLiAgRGVmYXVsdCBpcyB6ZXJvLlxuIgotImFjY2VzcyBpcyBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGFuIGFjY2VzcyBtYXNrIHRoYXQgZGVzY3JpYmVzIHRoZSBcbiIKLSIgICAgICAgZGVzaXJlZCBzZWN1cml0eSBhY2Nlc3MgZm9yIHRoZSBrZXkuIERlZmF1bHQgaXMgS0VZX1dPVzY0XzY0S0VZLlxuIgotIlxuIgotIlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLlxuIgotIlxuIgotIklmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcyxcbiIKLSJpcyByZW1vdmVkLiAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iCi0iT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7Ci0KLVB5RG9jX1NUUlZBUihEZWxldGVWYWx1ZV9kb2MsCi0iRGVsZXRlVmFsdWUoa2V5LCB2YWx1ZSlcbiIKLSJSZW1vdmVzIGEgbmFtZWQgdmFsdWUgZnJvbSBhIHJlZ2lzdHJ5IGtleS5cbiIKLSJcbiIKLSJrZXkgaXMgYW4gYWxyZWFkeSBvcGVuIGtleSwgb3IgYW55IG9uZSBvZiB0aGUgcHJlZGVmaW5lZCBIS0VZXyogY29uc3RhbnRzLlxuIgotInZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyB0aGUgdmFsdWUgdG8gcmVtb3ZlLiIpOwotCi1QeURvY19TVFJWQVIoRW51bUtleV9kb2MsCi0iRW51bUtleShrZXksIGluZGV4KSAtPiBzdHJpbmdcbiIKLSJFbnVtZXJhdGVzIHN1YmtleXMgb2YgYW4gb3BlbiByZWdpc3RyeSBrZXkuXG4iCi0iXG4iCi0ia2V5IGlzIGFuIGFscmVhZHkgb3BlbiBrZXksIG9yIGFueSBvbmUgb2YgdGhlIHByZWRlZmluZWQgSEtFWV8qIGNvbnN0YW50cy5cbiIKLSJpbmRleCBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIGtleSB0byByZXRyaWV2ZS5cbiIKLSJcbiIKLSJUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC5cbiIKLSJJdCBpcyB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYW4gT1NFcnJvciBleGNlcHRpb24gaXNcbiIKLSJyYWlzZWQsIGluZGljYXRpbmcgbm8gbW9yZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZS4iKTsKLQotUHlEb2NfU1RSVkFSKEVudW1WYWx1ZV9kb2MsCi0iRW51bVZhbHVlKGtleSwgaW5kZXgpIC0+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZC5iYXQgYi9QQ2J1aWxkL2J1aWxkLmJhdAppbmRleCBmM2JjMWUzLi4yYzQxZmIyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkLmJhdApAQCAtMSwxMDcgKzEsMTAyIEBACiBAZWNobyBvZmYNCi1yZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGJ1aWxkIG9yIHJlYnVpbGQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24sDQotcmVtIGp1c3QgZm9yIGNvbnZlbmllbmNlLg0KK2dvdG8gUnVuDQorOlVzYWdlDQorZWNoby4lfm54MCBbZmxhZ3MgYW5kIGFyZ3VtZW50c10gW3F1b3RlZCBNU0J1aWxkIG9wdGlvbnNdDQorZWNoby4NCitlY2hvLkJ1aWxkIENQeXRob24gZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgUmVxdWlyZXMgdGhlIGFwcHJvcHJpYXRlDQorZWNoby52ZXJzaW9uKHMpIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRvIGJlIGluc3RhbGxlZCAoc2VlIHJlYWRtZS50eHQpLg0KK2VjaG8uQWxzbyByZXF1aXJlcyBTdWJ2ZXJzaW9uIChzdm4uZXhlKSB0byBiZSBvbiBQQVRIIGlmIHRoZSAnLWUnIGZsYWcgaXMNCitlY2hvLmdpdmVuLg0KK2VjaG8uDQorZWNoby5BZnRlciB0aGUgZmxhZ3MgcmVjb2duaXplZCBieSB0aGlzIHNjcmlwdCwgdXAgdG8gOSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkDQorZWNoby5kaXJlY3RseSB0byBNU0J1aWxkIG1heSBiZSBwYXNzZWQuICBJZiB0aGUgYXJndW1lbnQgY29udGFpbnMgYW4gJz0nLCB0aGUNCitlY2hvLmVudGlyZSBhcmd1bWVudCBtdXN0IGJlIHF1b3RlZCAoZS5nLiBgJX5ueDAgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwImApDQorZWNoby4NCitlY2hvLkF2YWlsYWJsZSBmbGFnczoNCitlY2hvLiAgLWggIERpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UNCitlY2hvLiAgLVYgIERpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGN1cnJlbnQgYnVpbGQNCitlY2hvLiAgLXIgIFRhcmdldCBSZWJ1aWxkIGluc3RlYWQgb2YgQnVpbGQNCitlY2hvLiAgLWQgIFNldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1Zw0KK2VjaG8uICAtZSAgQnVpbGQgZXh0ZXJuYWwgbGlicmFyaWVzIGZldGNoZWQgYnkgZ2V0X2V4dGVybmFscy5iYXQNCitlY2hvLiAgICAgIEV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgZGVwZW5kIG9uIGV4dGVybmFsIGxpYnJhcmllcyB3aWxsIG5vdCBhdHRlbXB0DQorZWNoby4gICAgICB0byBidWlsZCBpZiB0aGlzIGZsYWcgaXMgbm90IHByZXNlbnQNCitlY2hvLiAgLW0gIEVuYWJsZSBwYXJhbGxlbCBidWlsZCAoZW5hYmxlZCBieSBkZWZhdWx0KQ0KK2VjaG8uICAtTSAgRGlzYWJsZSBwYXJhbGxlbCBidWlsZA0KK2VjaG8uICAtdiAgSW5jcmVhc2VkIG91dHB1dCBtZXNzYWdlcw0KK2VjaG8uICAtayAgQXR0ZW1wdCB0byBraWxsIGFueSBydW5uaW5nIFB5dGhvbnMgYmVmb3JlIGJ1aWxkaW5nICh1c3VhbGx5IGRvbmUNCitlY2hvLiAgICAgIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHB5dGhvbmNvcmUgcHJvamVjdCkNCitlY2hvLg0KK2VjaG8uQXZhaWxhYmxlIGZsYWdzIHRvIGF2b2lkIGJ1aWxkaW5nIGNlcnRhaW4gbW9kdWxlcy4NCitlY2hvLlRoZXNlIGZsYWdzIGhhdmUgbm8gZWZmZWN0IGlmICctZScgaXMgbm90IGdpdmVuOg0KK2VjaG8uICAtLW5vLXNzbCAgICAgIERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIF9zc2wNCitlY2hvLiAgLS1uby10a2ludGVyICBEbyBub3QgYXR0ZW1wdCB0byBidWlsZCBUa2ludGVyDQorZWNoby4NCitlY2hvLkF2YWlsYWJsZSBhcmd1bWVudHM6DQorZWNoby4gIC1jIFJlbGVhc2UgXnwgRGVidWcgXnwgUEdJbnN0cnVtZW50IF58IFBHVXBkYXRlDQorZWNoby4gICAgIFNldCB0aGUgY29uZmlndXJhdGlvbiAoZGVmYXVsdDogUmVsZWFzZSkNCitlY2hvLiAgLXAgeDY0IF58IFdpbjMyDQorZWNoby4gICAgIFNldCB0aGUgcGxhdGZvcm0gKGRlZmF1bHQ6IFdpbjMyKQ0KK2VjaG8uICAtdCBCdWlsZCBefCBSZWJ1aWxkIF58IENsZWFuIF58IENsZWFuQWxsDQorZWNoby4gICAgIFNldCB0aGUgdGFyZ2V0IG1hbnVhbGx5DQorZXhpdCAvYiAxMjcNCiANCi1yZW0gQXJndW1lbnRzOg0KLXJlbSAgLWMgIFNldCB0aGUgY29uZmlndXJhdGlvbiAoZGVmYXVsdDogUmVsZWFzZSkNCi1yZW0gIC1wICBTZXQgdGhlIHBsYXRmb3JtICh4NjQgb3IgV2luMzIsIGRlZmF1bHQ6IFdpbjMyKQ0KLXJlbSAgLXIgIFRhcmdldCBSZWJ1aWxkIGluc3RlYWQgb2YgQnVpbGQNCi1yZW0gIC10ICBTZXQgdGhlIHRhcmdldCBtYW51YWxseSAoQnVpbGQsIFJlYnVpbGQsIG9yIENsZWFuKQ0KLXJlbSAgLWQgIFNldCB0aGUgY29uZmlndXJhdGlvbiB0byBEZWJ1Zw0KLXJlbSAgLWUgIFB1bGwgaW4gZXh0ZXJuYWwgbGlicmFyaWVzIHVzaW5nIGdldF9leHRlcm5hbHMuYmF0DQotcmVtICAtbSAgRW5hYmxlIHBhcmFsbGVsIGJ1aWxkDQotcmVtICAtTSAgRGlzYWJsZSBwYXJhbGxlbCBidWlsZCAoZGlzYWJsZWQgYnkgZGVmYXVsdCkNCi1yZW0gIC12ICBJbmNyZWFzZWQgb3V0cHV0IG1lc3NhZ2VzDQotcmVtICAtayAgQXR0ZW1wdCB0byBraWxsIGFueSBydW5uaW5nIFB5dGhvbnMgYmVmb3JlIGJ1aWxkaW5nDQotDQorOlJ1bg0KIHNldGxvY2FsDQogc2V0IHBsYXRmPVdpbjMyDQogc2V0IHZzX3BsYXRmPXg4Ng0KIHNldCBjb25mPVJlbGVhc2UNCiBzZXQgdGFyZ2V0PUJ1aWxkDQogc2V0IGRpcj0lfmRwMA0KLXNldCBwYXJhbGxlbD0NCitzZXQgcGFyYWxsZWw9L20NCiBzZXQgdmVyYm9zZT0vbm9sb2dvIC92Om0NCiBzZXQga2lsbD0NCi1zZXQgYnVpbGRfdGtpbnRlcj0NCiANCiA6Q2hlY2tPcHRzDQotaWYgJyUxJz09Jy1jJyAoc2V0IGNvbmY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1wJyAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctcicgKHNldCB0YXJnZXQ9UmVidWlsZCkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy10JyAoc2V0IHRhcmdldD0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLWQnIChzZXQgY29uZj1EZWJ1ZykgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1lJyBjYWxsICIlZGlyJWdldF9leHRlcm5hbHMuYmF0IiAmIChzZXQgYnVpbGRfdGtpbnRlcj10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLW0nIChzZXQgcGFyYWxsZWw9L20pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctTScgKHNldCBwYXJhbGxlbD0pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctdicgKHNldCB2ZXJib3NlPS92Om4pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctaycgKHNldCBraWxsPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLWgiIGdvdG8gVXNhZ2UNCitpZiAiJX4xIj09Ii1jIiAoc2V0IGNvbmY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1yIiAoc2V0IHRhcmdldD1SZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii10IiAoc2V0IHRhcmdldD0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii1kIiAoc2V0IGNvbmY9RGVidWcpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLW0iIChzZXQgcGFyYWxsZWw9L20pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLU0iIChzZXQgcGFyYWxsZWw9KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii12IiAoc2V0IHZlcmJvc2U9L3Y6bikgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItayIgKHNldCBraWxsPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiPT0iLVYiIHNoaWZ0ICYgZ290byBWZXJzaW9uDQorcmVtIFRoZXNlIHVzZSB0aGUgYWN0dWFsIHByb3BlcnR5IG5hbWVzIHVzZWQgYnkgTVNCdWlsZC4gIFdlIGNvdWxkIGp1c3QgbGV0DQorcmVtIHRoZW0gaW4gdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQsIGJ1dCB3ZSBzcGVjaWZ5IHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZQ0KK3JlbSBhbnl3YXkgZm9yIHZpc2liaWxpdHkgc28gc2V0IGRlZmF1bHRzIGFmdGVyIHRoaXMNCitpZiAiJX4xIj09Ii1lIiAoc2V0IEluY2x1ZGVFeHRlcm5hbHM9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSI9PSItLW5vLXNzbCIgKHNldCBJbmNsdWRlU1NMPWZhbHNlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJX4xIj09Ii0tbm8tdGtpbnRlciIgKHNldCBJbmNsdWRlVGtpbnRlcj1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQotaWYgJyVjb25mJSc9PSdEZWJ1ZycgKHNldCBkYmdfZXh0PV9kKSBlbHNlIChzZXQgZGJnX2V4dD0pDQotaWYgJyVwbGF0ZiUnPT0neDY0JyAoDQotICAgIHNldCB2c19wbGF0Zj14ODZfYW1kNjQNCi0gICAgc2V0IGJ1aWxkZGlyPSVkaXIlYW1kNjRcDQotKSBlbHNlICgNCi0gICAgc2V0IGJ1aWxkZGlyPSVkaXIlDQotKQ0KK2lmICIlSW5jbHVkZUV4dGVybmFscyUiPT0iIiBzZXQgSW5jbHVkZUV4dGVybmFscz1mYWxzZQ0KK2lmICIlSW5jbHVkZVNTTCUiPT0iIiBzZXQgSW5jbHVkZVNTTD10cnVlDQoraWYgIiVJbmNsdWRlVGtpbnRlciUiPT0iIiBzZXQgSW5jbHVkZVRraW50ZXI9dHJ1ZQ0KKw0KK2lmICIlSW5jbHVkZUV4dGVybmFscyUiPT0idHJ1ZSIgY2FsbCAiJWRpciVnZXRfZXh0ZXJuYWxzLmJhdCINCisNCitpZiAiJXBsYXRmJSI9PSJ4NjQiIChzZXQgdnNfcGxhdGY9eDg2X2FtZDY0KQ0KIA0KIHJlbSBTZXR1cCB0aGUgZW52aXJvbm1lbnQNCi1jYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUNCitjYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUgPm51bA0KIA0KLWlmICcla2lsbCUnPT0ndHJ1ZScgKA0KLSAgICBtc2J1aWxkICIlZGlyJWtpbGxfcHl0aG9uLnZjeHByb2oiICV2ZXJib3NlJSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlICYmICIlYnVpbGRkaXIla2lsbF9weXRob24lZGJnX2V4dCUuZXhlIg0KLSkNCi0NCi1zZXQgZXh0ZXJuYWxzX2Rpcj0lZGlyJS4uXGV4dGVybmFscw0KLWlmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKA0KLSAgICBpZiAnJXBsYXRmJSc9PSd4NjQnICgNCi0gICAgICAgIHNldCB0Y2x0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGNsdGs2NA0KLSAgICAgICAgc2V0IG1hY2hpbmU9QU1ENjQNCi0gICAgKSBlbHNlICgNCi0gICAgICAgIHNldCB0Y2x0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGNsdGsNCi0gICAgICAgIHNldCBtYWNoaW5lPUlYODYNCi0gICAgKQ0KLSAgICBpZiAnJWNvbmYlJz09J0RlYnVnJyAoDQotICAgICAgICBzZXQgdGNsX2RiZ19leHQ9Zw0KLSAgICAgICAgc2V0IGRlYnVnX2ZsYWc9MQ0KLSAgICAgICAgc2V0IG9wdGlvbnM9c3ltYm9scw0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgc2V0IHRjbF9kYmdfZXh0PQ0KLSAgICAgICAgc2V0IGRlYnVnX2ZsYWc9MA0KLSAgICAgICAgc2V0IG9wdGlvbnM9DQotICAgICkNCi0gICAgc2V0IHRjbGRpcj0lZXh0ZXJuYWxzX2RpciVcdGNsLTguNi4xLjANCi0gICAgc2V0IHRrZGlyPSVleHRlcm5hbHNfZGlyJVx0ay04LjYuMS4wDQotICAgIHNldCB0aXhkaXI9JWV4dGVybmFsc19kaXIlXHRpeC04LjQuMy40DQotKQ0KLWlmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKA0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcYmluXHRjbDg2dCV0Y2xfZGJnX2V4dCUuZGxsIiAoDQotICAgICAgICBAcmVtIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwNCi0gICAgICAgIHB1c2hkICIldGNsZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBjbGVhbiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMNCi0gICAgICAgIHBvcGQNCi0gICAgKQ0KLQ0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcYmluXHRrODZ0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGtkaXIlXHdpbiINCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGNsZWFuDQotICAgICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBNQUNISU5FPSVtYWNoaW5lJSBPUFRTPSVvcHRpb25zJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBUQ0xESVI9IiV0Y2xkaXIlIiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIE9QVFM9JW9wdGlvbnMlIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMNCi0gICAgICAgIHBvcGQNCi0gICAgKQ0KLQ0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcbGliXHRpeDguNC4zXHRpeDg0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGl4ZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgY2xlYW4NCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBpbnN0YWxsDQotICAgICAgICBwb3BkDQotICAgICkNCitpZiAiJWtpbGwlIj09InRydWUiICgNCisgICAgbXNidWlsZCAvdjptIC9ub2xvZ28gL3RhcmdldDpLaWxsUHl0aG9uICIlZGlyJVxweXRob25jb3JlLnZjeHByb2oiIC9wOkNvbmZpZ3VyYXRpb249JWNvbmYlIC9wOlBsYXRmb3JtPSVwbGF0ZiUgL3A6S2lsbFB5dGhvbj10cnVlDQogKQ0KIA0KIHJlbSBDYWxsIG9uIE1TQnVpbGQgdG8gZG8gdGhlIHdvcmssIGVjaG8gdGhlIGNvbW1hbmQuDQogcmVtIFBhc3NpbmcgJTEtOSBpcyBub3QgdGhlIHByZWZlcnJlZCBvcHRpb24sIGJ1dCBhcmd1bWVudCBwYXJzaW5nIGluDQogcmVtIGJhdGNoIGlzLCBzaGFsbCB3ZSBzYXksICJsYWNrbHVzdGVyIg0KIGVjaG8gb24NCi1tc2J1aWxkICIlZGlyJXBjYnVpbGQuc2xuIiAvdDoldGFyZ2V0JSAlcGFyYWxsZWwlICV2ZXJib3NlJSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQorbXNidWlsZCAiJWRpciVwY2J1aWxkLnByb2oiIC90OiV0YXJnZXQlICVwYXJhbGxlbCUgJXZlcmJvc2UlXg0KKyAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlXg0KKyAvcDpJbmNsdWRlRXh0ZXJuYWxzPSVJbmNsdWRlRXh0ZXJuYWxzJV4NCisgL3A6SW5jbHVkZVNTTD0lSW5jbHVkZVNTTCUgL3A6SW5jbHVkZVRraW50ZXI9JUluY2x1ZGVUa2ludGVyJV4NCisgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCisNCitAZ290byA6ZW9mDQorDQorOlZlcnNpb24NCityZW0gRGlzcGxheSB0aGUgY3VycmVudCBidWlsZCB2ZXJzaW9uIGluZm9ybWF0aW9uDQorbXNidWlsZCAiJWRpciVweXRob24ucHJvcHMiIC90OlNob3dWZXJzaW9uSW5mbyAvdjptIC9ub2xvZ28gJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQgYi9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKaW5kZXggZDdlNGU4Yi4uNzllYzI2NyAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF9wZ28uYmF0CisrKyBiL1BDYnVpbGQvYnVpbGRfcGdvLmJhdApAQCAtNywxNCArNywxNiBAQAogDQogc2V0bG9jYWwNCiBzZXQgcGxhdGY9V2luMzINCitzZXQgcGFyYWxsZWw9L20NCitzZXQgZGlyPSV+ZHAwDQogDQogcmVtIHVzZSB0aGUgcGVyZm9ybWFuY2UgdGVzdHN1aXRlLiAgVGhpcyBpcyBxdWljayBhbmQgc2ltcGxlDQotc2V0IGpvYjE9Li5cdG9vbHNccHliZW5jaFxweWJlbmNoLnB5IC1uIDEgLUMgMSAtLXdpdGgtZ2MNCi1zZXQgcGF0aDE9Li5cdG9vbHNccHliZW5jaA0KK3NldCBqb2IxPSIlZGlyJS4uXHRvb2xzXHB5YmVuY2hccHliZW5jaC5weSIgLW4gMSAtQyAxIC0td2l0aC1nYw0KK3NldCBwYXRoMT0iJWRpciUuLlx0b29sc1xweWJlbmNoIg0KIA0KIHJlbSBvciB0aGUgd2hvbGUgdGVzdHN1aXRlIGZvciBtb3JlIHRob3JvdWdoIHRlc3RpbmcNCi1zZXQgam9iMj0uLlxsaWJcdGVzdFxyZWdydGVzdC5weQ0KLXNldCBwYXRoMj0uLlxsaWINCitzZXQgam9iMj0iJWRpciUuLlxsaWJcdGVzdFxyZWdydGVzdC5weSINCitzZXQgcGF0aDI9IiVkaXIlLi5cbGliIg0KIA0KIHNldCBqb2I9JWpvYjElDQogc2V0IGNscnBhdGg9JXBhdGgxJQ0KQEAgLTIyLDIwICsyNCwyNSBAQAogOkNoZWNrT3B0cw0KIGlmICIlMSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiPT0iLTIiIChzZXQgam9iPSVqb2IyJSkgJiAoc2V0IGNscnBhdGg9JXBhdGgyJSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09Ii1NIiAoc2V0IHBhcmFsbGVsPSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQotc2V0IFBHST0lcGxhdGYlLXBnaQ0KLXNldCBQR089JXBsYXRmJS1wZ28NCiANCi1AZWNobyBvbg0KK3JlbSBXZSBjYW5ub3QgY3Jvc3MgY29tcGlsZSBQR08gYnVpbGRzLCBhcyB0aGUgb3B0aW1pemF0aW9uIG5lZWRzIHRvIGJlIHJ1biBuYXRpdmVseQ0KK3NldCB2c19wbGF0Zj14ODYNCitzZXQgUEdPPSVkaXIld2luMzItcGdvDQorDQoraWYgIiVwbGF0ZiUiPT0ieDY0IiAoc2V0IHZzX3BsYXRmPWFtZDY0KSAmIChzZXQgUEdPPSVkaXIlYW1kNjQtcGdvKQ0KK3JlbSBTZXR1cCB0aGUgZW52aXJvbm1lbnQNCitjYWxsICIlZGlyJWVudi5iYXQiICV2c19wbGF0ZiUNCisNCisNCiByZW0gYnVpbGQgdGhlIGluc3RydW1lbnRlZCB2ZXJzaW9uDQotY2FsbCBidWlsZCAtcCAlcGxhdGYlIC1jIFBHSW5zdHJ1bWVudA0KK21zYnVpbGQgIiVkaXIlcGNidWlsZC5wcm9qIiAlcGFyYWxsZWwlIC90OkJ1aWxkIC9wOkNvbmZpZ3VyYXRpb249UEdJbnN0cnVtZW50IC9wOlBsYXRmb3JtPSVwbGF0ZiUgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCiANCiByZW0gcmVtb3ZlIC5weWMgZmlsZXMsIC5wZ2MgZmlsZXMgYW5kIGV4ZWN1dGUgdGhlIGpvYg0KLSVQR0klXHB5dGhvbi5leGUgcm1weWMucHkgJWNscnBhdGglDQotZGVsICVQR0klXCoucGdjDQotJVBHSSVccHl0aG9uLmV4ZSAlam9iJQ0KKyIlUEdPJVxweXRob24uZXhlIiAiJWRpciVybXB5Yy5weSIgJWNscnBhdGglDQorZGVsICIlUEdPJVwqLnBnYyINCisiJVBHTyVccHl0aG9uLmV4ZSIgJWpvYiUNCiANCi1yZW0gZmluYWxseSBidWlsZCB0aGUgb3B0aW1pemVkIHZlcnNpb24NCi1pZiBleGlzdCAlUEdPJSBkZWwgL3MgL3EgJVBHTyUNCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdVcGRhdGUNCi0NCityZW0gYnVpbGQgb3B0aW1pemVkIHZlcnNpb24NCittc2J1aWxkICIlZGlyJXBjYnVpbGQucHJvaiIgJXBhcmFsbGVsJSAvdDpCdWlsZCAvcDpDb25maWd1cmF0aW9uPVBHVXBkYXRlIC9wOlBsYXRmb3JtPSVwbGF0ZiUgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQgYi9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NzViOGQuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF9zc2wuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotQGVjaG8gb2ZmDQotaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKA0KLSAgaWYgJTEgRVFVIERlYnVnICgNCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzRfZC5kbGwgZXhpdCAxDQotICApIEVMU0UgKA0KLSAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzQuZGxsIGV4aXQgMQ0KLSAgKQ0KLSkNCi0lSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMw0KLQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5IGIvUENidWlsZC9idWlsZF9zc2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZWU3MTUuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF9zc2wucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNjkgKzAsMCBAQAotIyBTY3JpcHQgZm9yIGJ1aWxkaW5nIHRoZSBfc3NsIGFuZCBfaGFzaGxpYiBtb2R1bGVzIGZvciBXaW5kb3dzLgotIyBVc2VzIFBlcmwgdG8gc2V0dXAgdGhlIE9wZW5TU0wgZW52aXJvbm1lbnQgY29ycmVjdGx5Ci0jIGFuZCBidWlsZCBPcGVuU1NMLCB0aGVuIGludm9rZXMgYSBzaW1wbGUgbm1ha2Ugc2Vzc2lvbgotIyBmb3IgdGhlIGFjdHVhbCBfc3NsLnB5ZCBhbmQgX2hhc2hsaWIucHlkIERMTHMuCi0KLSMgVEhFT1JFVElDQUxMWSwgeW91IGNhbjoKLSMgKiBVbnBhY2sgdGhlIGxhdGVzdCBTU0wgcmVsZWFzZSBvbmUgbGV2ZWwgYWJvdmUgeW91ciBtYWluIFB5dGhvbiBzb3VyY2UKLSMgICBkaXJlY3RvcnkuICBJdCBpcyBsaWtlbHkgeW91IHdpbGwgYWxyZWFkeSBmaW5kIHRoZSB6bGliIGxpYnJhcnkgYW5kCi0jICAgYW55IG90aGVyIGV4dGVybmFsIHBhY2thZ2VzIHRoZXJlLgotIyAqIEluc3RhbGwgQWN0aXZlUGVybCBhbmQgZW5zdXJlIGl0IGlzIHNvbWV3aGVyZSBvbiB5b3VyIHBhdGguCi0jICogUnVuIHRoaXMgc2NyaXB0IGZyb20gdGhlIFBDQnVpbGQgZGlyZWN0b3J5LgotIwotIyBpdCBzaG91bGQgY29uZmlndXJlIGFuZCBidWlsZCBTU0wsIHRoZW4gYnVpbGQgdGhlIF9zc2wgYW5kIF9oYXNobGliCi0jIFB5dGhvbiBleHRlbnNpb25zIHdpdGhvdXQgaW50ZXJ2ZW50aW9uLgotCi0jIE1vZGlmaWVkIGJ5IENocmlzdGlhbiBIZWltZXMKLSMgTm93IHRoaXMgc2NyaXB0IHN1cHBvcnRzIHByZS1nZW5lcmF0ZWQgbWFrZWZpbGVzIGFuZCBhc3NlbWJseSBmaWxlcy4KLSMgRGV2ZWxvcGVycyBkb24ndCBuZWVkIGFuIGluc3RhbGxhdGlvbiBvZiBQZXJsIGFueW1vcmUgdG8gYnVpbGQgUHl0aG9uLiBBIHN2bgotIyBjaGVja291dCBmcm9tIG91ciBzdm4gcmVwb3NpdG9yeSBpcyBlbm91Z2guCi0jCi0jIEluIE9yZGVyIHRvIGNyZWF0ZSB0aGUgZmlsZXMgaW4gdGhlIGNhc2Ugb2YgYW4gdXBkYXRlIHlvdSBzdGlsbCBuZWVkIFBlcmwuCi0jIFJ1biBidWlsZF9zc2wgaW4gdGhpcyBvcmRlcjoKLSMgcHl0aG9uLmV4ZSBidWlsZF9zc2wucHkgUmVsZWFzZSB4NjQKLSMgcHl0aG9uLmV4ZSBidWlsZF9zc2wucHkgUmVsZWFzZSBXaW4zMgotCi1pbXBvcnQgb3MsIHN5cywgcmUsIHNodXRpbAotaW1wb3J0IHN1YnByb2Nlc3MKLQotIyBGaW5kIGFsbCAiZm9vLmV4ZSIgZmlsZXMgb24gdGhlIFBBVEguCi1kZWYgZmluZF9hbGxfb25fcGF0aChmaWxlbmFtZSwgZXh0cmFzID0gTm9uZSk6Ci0gICAgZW50cmllcyA9IG9zLmVudmlyb25bIlBBVEgiXS5zcGxpdChvcy5wYXRoc2VwKQotICAgIHJldCA9IFtdCi0gICAgZm9yIHAgaW4gZW50cmllczoKLSAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm5hbWUpIGFuZCBmbmFtZSBub3QgaW4gcmV0OgotICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKLSAgICBpZiBleHRyYXM6Ci0gICAgICAgIGZvciBwIGluIGV4dHJhczoKLSAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwLCBmaWxlbmFtZSkpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICAgICAgcmV0LmFwcGVuZChmbmFtZSkKLSAgICByZXR1cm4gcmV0Ci0KLSMgRmluZCBhIHN1aXRhYmxlIFBlcmwgaW5zdGFsbGF0aW9uIGZvciBPcGVuU1NMLgotIyBjeWd3aW4gcGVybCBkb2VzICpub3QqIHdvcmsuICBBY3RpdmVQZXJsIGRvZXMuCi0jIEJlaW5nIGEgUGVybCBkdW1teSwgdGhlIHNpbXBsZXN0IHdheSBJIGNhbiBjaGVjayBpcyBpZiB0aGUgIldpbjMyIiBwYWNrYWdlCi0jIGlzIGF2YWlsYWJsZS4KLWRlZiBmaW5kX3dvcmtpbmdfcGVybChwZXJscyk6Ci0gICAgZm9yIHBlcmwgaW4gcGVybHM6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtwZXJsLCAiLWUiLCAidXNlIFdpbjMyOyJdKQotICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHBlcmwKLQotICAgIGlmIHBlcmxzOgotICAgICAgICBwcmludCgiVGhlIGZvbGxvd2luZyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kOiIpCi0gICAgICAgIGZvciBwIGluIHBlcmxzOgotICAgICAgICAgICAgcHJpbnQoIiAiLCBwKQotICAgICAgICBwcmludCgiIE5vbmUgb2YgdGhlc2UgdmVyc2lvbnMgYXBwZWFyIHN1aXRhYmxlIGZvciBidWlsZGluZyBPcGVuU1NMIikKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiTk8gcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZCBvbiB0aGlzIG1hY2hpbmUgYXQgYWxsISIpCi0gICAgcHJpbnQoIiBQbGVhc2UgaW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgYXBwZWFycyBvbiB5b3VyIHBhdGgiKQotCi0jIEZldGNoIFNTTCBkaXJlY3RvcnkgZnJvbSBWQyBwcm9wZXJ0aWVzCi1kZWYgZ2V0X3NzbF9kaXIoKToKLSAgICBwcm9wZmlsZSA9IChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ3B5cHJvamVjdC5wcm9wcycpKQotICAgIHdpdGggb3Blbihwcm9wZmlsZSwgZW5jb2Rpbmc9J3V0Zi04LXNpZycpIGFzIGY6Ci0gICAgICAgIG0gPSByZS5zZWFyY2goJ29wZW5zc2wtKFtePF0rKTwnLCBmLnJlYWQoKSkKLSAgICAgICAgcmV0dXJuICIuLlxleHRlcm5hbHNcb3BlbnNzbC0iK20uZ3JvdXAoMSkKLQotCi1kZWYgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMik6Ci0gICAgIiIiQ3JlYXRlIGFuZCBmaXggbWFrZWZpbGUgZm9yIDY0Yml0Ci0KLSAgICBSZXBsYWNlIDMyIHdpdGggNjRiaXQgZGlyZWN0b3JpZXMKLSAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobTMyKToKLSAgICAgICAgcmV0dXJuCi0gICAgd2l0aCBvcGVuKG0zMikgYXMgZmluOgotICAgICAgICB3aXRoIG9wZW4obWFrZWZpbGUsICd3JykgYXMgZm91dDoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGZpbjoKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9dG1wMzIiLCAiPXRtcDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9b3V0MzIiLCAiPW91dDY0IikKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCI9aW5jMzIiLCAiPWluYzY0IikKLSAgICAgICAgICAgICAgICAjIGZvcmNlIDY0IGJpdCBtYWNoaW5lCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTUtMSUI9bGliIiwgIk1LTElCPWxpYiAvTUFDSElORTpYNjQiKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIkxGTEFHUz0iLCAiTEZMQUdTPS9NQUNISU5FOlg2NCAiKQotICAgICAgICAgICAgICAgICMgZG9uJ3QgbGluayBhZ2FpbnN0IHRoZSBsaWIgb24gNjRiaXQgc3lzdGVtcwotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoImJ1ZmZlcm92ZXJmbG93dS5saWIiLCAiIikKLSAgICAgICAgICAgICAgICBmb3V0LndyaXRlKGxpbmUpCi0gICAgb3MudW5saW5rKG0zMikKLQotZGVmIGZpeF9tYWtlZmlsZShtYWtlZmlsZSk6Ci0gICAgIiIiRml4IHNvbWUgc3R1ZmYgaW4gYWxsIG1ha2VmaWxlcwotICAgICIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6Ci0gICAgICAgIHJldHVybgotICAgIHdpdGggb3BlbihtYWtlZmlsZSkgYXMgZmluOgotICAgICAgICBsaW5lcyA9IGZpbi5yZWFkbGluZXMoKQotICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUEVSTD0iKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDUD0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gIkNQPWNvcHlcbiIKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiTUtESVI9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICJNS0RJUj1ta2RpclxuIgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDRkxBRz0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZm9yIGFsZ28gaW4gKCJSQzUiLCAiTURDMiIsICJJREVBIik6Ci0gICAgICAgICAgICAgICAgICAgIG5vYWxnbyA9ICIgLURPUEVOU1NMX05PXyVzIiAlIGFsZ28KLSAgICAgICAgICAgICAgICAgICAgaWYgbm9hbGdvIG5vdCBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyBub2FsZ28KLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZSArICdcbicKLSAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKLQotZGVmIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpOgotICAgIHByaW50KCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCi0gICAgb3Muc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCi0gICAgcHJpbnQoZG9fc2NyaXB0KQotICAgIG9zLnN5c3RlbShkb19zY3JpcHQpCi0KLWRlZiBjbXAoZjEsIGYyKToKLSAgICBidWZzaXplID0gMTAyNCAqIDgKLSAgICB3aXRoIG9wZW4oZjEsICdyYicpIGFzIGZwMSwgb3BlbihmMiwgJ3JiJykgYXMgZnAyOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYjEgPSBmcDEucmVhZChidWZzaXplKQotICAgICAgICAgICAgYjIgPSBmcDIucmVhZChidWZzaXplKQotICAgICAgICAgICAgaWYgYjEgIT0gYjI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBub3QgYjE6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotZGVmIGNvcHkoc3JjLCBkc3QpOgotICAgIGlmIG9zLnBhdGguaXNmaWxlKGRzdCkgYW5kIGNtcChzcmMsIGRzdCk6Ci0gICAgICAgIHJldHVybgotICAgIHNodXRpbC5jb3B5KHNyYywgZHN0KQotCi1kZWYgbWFpbigpOgotICAgIGJ1aWxkX2FsbCA9ICItYSIgaW4gc3lzLmFyZ3YKLSAgICBpZiBzeXMuYXJndlsxXSA9PSAiUmVsZWFzZSI6Ci0gICAgICAgIGRlYnVnID0gRmFsc2UKLSAgICBlbGlmIHN5cy5hcmd2WzFdID09ICJEZWJ1ZyI6Ci0gICAgICAgIGRlYnVnID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Ioc3RyKHN5cy5hcmd2KSkKLQotICAgIGlmIHN5cy5hcmd2WzJdID09ICJXaW4zMiI6Ci0gICAgICAgIGFyY2ggPSAieDg2IgotICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lOMzIiCi0gICAgICAgIGRvX3NjcmlwdCA9ICJtc1xcZG9fbmFzbSIKLSAgICAgICAgbWFrZWZpbGU9Im1zXFxudC5tYWsiCi0gICAgICAgIG0zMiA9IG1ha2VmaWxlCi0gICAgICAgIGRpcnN1ZmZpeCA9ICIzMiIKLSAgICBlbGlmIHN5cy5hcmd2WzJdID09ICJ4NjQiOgotICAgICAgICBhcmNoPSJhbWQ2NCIKLSAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjY0QSIKLSAgICAgICAgZG9fc2NyaXB0ID0gIm1zXFxkb193aW42NGEiCi0gICAgICAgIG1ha2VmaWxlID0gIm1zXFxudDY0Lm1hayIKLSAgICAgICAgbTMyID0gbWFrZWZpbGUucmVwbGFjZSgnNjQnLCAnJykKLSAgICAgICAgZGlyc3VmZml4ID0gIjY0IgotICAgICAgICAjb3MuZW52aXJvblsiVlNFWFRDT01QX1VTRUNMIl0gPSAiTVNfT1BURVJPTiIKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHN0cihzeXMuYXJndikpCi0KLSAgICBtYWtlX2ZsYWdzID0gIiIKLSAgICBpZiBidWlsZF9hbGw6Ci0gICAgICAgIG1ha2VfZmxhZ3MgPSAiLWEiCi0gICAgIyBwZXJsIHNob3VsZCBiZSBvbiB0aGUgcGF0aCwgYnV0IHdlIGFsc28gbG9vayBpbiAiXHBlcmwiIGFuZCAiYzpcXHBlcmwiCi0gICAgIyBhcyAid2VsbCBrbm93biIgbG9jYXRpb25zCi0gICAgcGVybHMgPSBmaW5kX2FsbF9vbl9wYXRoKCJwZXJsLmV4ZSIsIFtyIlxwZXJsXGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIkM6XHBlcmxcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXHBlcmw2NFxiaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsNjRcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICBwZXJsID0gZmluZF93b3JraW5nX3BlcmwocGVybHMpCi0gICAgaWYgcGVybDoKLSAgICAgICAgcHJpbnQoIkZvdW5kIGEgd29ya2luZyBwZXJsIGF0ICclcyciICUgKHBlcmwsKSkKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiTm8gUGVybCBpbnN0YWxsYXRpb24gd2FzIGZvdW5kLiBFeGlzdGluZyBNYWtlZmlsZXMgYXJlIHVzZWQuIikKLSAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAjIExvb2sgZm9yIFNTTCAyIGxldmVscyB1cCBmcm9tIHBjYnVpbGQgLSBpZSwgc2FtZSBwbGFjZSB6bGliIGV0YyBhbGwgbGl2ZS4KLSAgICBzc2xfZGlyID0gZ2V0X3NzbF9kaXIoKQotICAgIGlmIHNzbF9kaXIgaXMgTm9uZToKLSAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICMgYWRkIG91ciBjb3B5IG9mIE5BU00gdG8gUEFUSC4gIEl0IHdpbGwgYmUgb24gdGhlIHNhbWUgbGV2ZWwgYXMgb3BlbnNzbAotICAgIGZvciBkaXIgaW4gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oc3NsX2Rpciwgb3MucGFyZGlyKSk6Ci0gICAgICAgIGlmIGRpci5zdGFydHN3aXRoKCduYXNtJyk6Ci0gICAgICAgICAgICBuYXNtX2RpciA9IG9zLnBhdGguam9pbihzc2xfZGlyLCBvcy5wYXJkaXIsIGRpcikKLSAgICAgICAgICAgIG5hc21fZGlyID0gb3MucGF0aC5hYnNwYXRoKG5hc21fZGlyKQotICAgICAgICAgICAgb2xkX3BhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KLSAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9zLnBhdGhzZXAuam9pbihbbmFzbV9kaXIsIG9sZF9wYXRoXSkKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoJ05BU00gd2FzIG5vdCBmb3VuZCwgbWFrZSBzdXJlIGl0IGlzIG9uIFBBVEgnKQotCi0KLSAgICBvbGRfY2QgPSBvcy5nZXRjd2QoKQotICAgIHRyeToKLSAgICAgICAgb3MuY2hkaXIoc3NsX2RpcikKLSAgICAgICAgIyByZWJ1aWxkIG1ha2VmaWxlIHdoZW4gd2UgZG8gdGhlIHJvbGUgb3ZlciBmcm9tIDMyIHRvIDY0IGJ1aWxkCi0gICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IiBhbmQgb3MucGF0aC5pc2ZpbGUobTMyKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKLSAgICAgICAgICAgIG9zLnVubGluayhtMzIpCi0KLSAgICAgICAgIyBJZiB0aGUgc3NsIG1ha2VmaWxlcyBkbyBub3QgZXhpc3QsIHdlIGludm9rZSBQZXJsIHRvIGdlbmVyYXRlIHRoZW0uCi0gICAgICAgICMgRHVlIHRvIGEgYnVnIGluIHRoaXMgc2NyaXB0LCB0aGUgbWFrZWZpbGUgc29tZXRpbWVzIGVuZGVkIHVwIGVtcHR5Ci0gICAgICAgICMgRm9yY2UgYSByZWdlbmVyYXRpb24gaWYgaXQgaXMuCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSkgb3Igb3MucGF0aC5nZXRzaXplKG1ha2VmaWxlKT09MDoKLSAgICAgICAgICAgIGlmIHBlcmwgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwcmludCgiUGVybCBpcyByZXF1aXJlZCB0byBidWlsZCB0aGUgbWFrZWZpbGVzISIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICAgICAgcHJpbnQoIkNyZWF0aW5nIHRoZSBtYWtlZmlsZXMuLi4iKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAjIFB1dCBvdXIgd29ya2luZyBQZXJsIGF0IHRoZSBmcm9udCBvZiBvdXIgcGF0aAotICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MucGF0aC5kaXJuYW1lKHBlcmwpICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aHNlcCArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bIlBBVEgiXQotICAgICAgICAgICAgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCkKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIHByaW50KCJPcGVuU1NMIGRlYnVnIGJ1aWxkcyBhcmVuJ3Qgc3VwcG9ydGVkLiIpCi0gICAgICAgICAgICAjaWYgYXJjaD09Ing4NiIgYW5kIGRlYnVnOgotICAgICAgICAgICAgIyAgICAjIHRoZSBkb19tYXNtIHNjcmlwdCBpbiBvcGVuc3NsIGRvZXNuJ3QgZ2VuZXJhdGUgYSBkZWJ1ZwotICAgICAgICAgICAgIyAgICAjIGJ1aWxkIG1ha2VmaWxlIHNvIHdlIGdlbmVyYXRlIGl0IGhlcmU6Ci0gICAgICAgICAgICAjICAgIG9zLnN5c3RlbSgicGVybCB1dGlsXG1rMW1mLnBsIGRlYnVnICIrY29uZmlndXJlKyIgPiIrbWFrZWZpbGUpCi0KLSAgICAgICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgICAgICBjcmVhdGVfbWFrZWZpbGU2NChtYWtlZmlsZSwgbTMyKQotICAgICAgICAgICAgZml4X21ha2VmaWxlKG1ha2VmaWxlKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQotICAgICAgICAgICAgY29weShyImNyeXB0b1xvcGVuc3NsY29uZi5oIiwgciJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoKQotCi0gICAgICAgICMgSWYgdGhlIGFzc2VtYmxlciBmaWxlcyBkb24ndCBleGlzdCBpbiB0bXBYWCwgY29weSB0aGVtIHRoZXJlCi0gICAgICAgIGlmIHBlcmwgaXMgTm9uZSBhbmQgb3MucGF0aC5leGlzdHMoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygidG1wIitkaXJzdWZmaXgpOgotICAgICAgICAgICAgICAgIG9zLm1rZGlyKCJ0bXAiK2RpcnN1ZmZpeCkKLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIoImFzbSIrZGlyc3VmZml4KToKLSAgICAgICAgICAgICAgICBpZiBub3QgZi5lbmRzd2l0aCgiLmFzbSIpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHIidG1wJXNcJXMiICUgKGRpcnN1ZmZpeCwgZikpOiBjb250aW51ZQotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5KHIiYXNtJXNcJXMiICUgKGRpcnN1ZmZpeCwgZiksICJ0bXAiK2RpcnN1ZmZpeCkKLQotICAgICAgICAjIE5vdyBydW4gbWFrZS4KLSAgICAgICAgaWYgYXJjaCA9PSAiYW1kNjQiOgotICAgICAgICAgICAgcmMgPSBvcy5zeXN0ZW0oIm5hc20gLWYgd2luNjQgLURORUFSIC1PeCAtZyBtc1xcdXB0YWJsZS5hc20iKQotICAgICAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIm5hc20gYXNzZW1ibGVyIGhhcyBmYWlsZWQuIikKLSAgICAgICAgICAgICAgICBzeXMuZXhpdChyYykKLQotICAgICAgICBjb3B5KHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cYnVpbGRpbmYuaCIpCi0gICAgICAgIGNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoLCByImNyeXB0b1xvcGVuc3NsY29uZi5oIikKLQotICAgICAgICAjbWFrZUNvbW1hbmQgPSAibm1ha2UgL25vbG9nbyBQRVJMPVwiJXNcIiAtZiBcIiVzXCIiICUocGVybCwgbWFrZWZpbGUpCi0gICAgICAgIG1ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gLWYgXCIlc1wiIiAlIG1ha2VmaWxlCi0gICAgICAgIHByaW50KCJFeGVjdXRpbmcgc3NsIG1ha2VmaWxlczoiLCBtYWtlQ29tbWFuZCkKLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJjID0gb3Muc3lzdGVtKG1ha2VDb21tYW5kKQotICAgICAgICBpZiByYzoKLSAgICAgICAgICAgIHByaW50KCJFeGVjdXRpbmcgIittYWtlZmlsZSsiIGZhaWxlZCIpCi0gICAgICAgICAgICBwcmludChyYykKLSAgICAgICAgICAgIHN5cy5leGl0KHJjKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLmNoZGlyKG9sZF9jZCkKLSAgICBzeXMuZXhpdChyYykKLQotaWYgX19uYW1lX189PSdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkgYi9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MDdlN2IuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotIiIiU2NyaXB0IHRvIGNvbXBpbGUgdGhlIGRlcGVuZGVuY2llcyBvZiBfdGtpbnRlcgotCi1Db3B5cmlnaHQgKGMpIDIwMDcgYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQGNoZWltZXMuZGU+Ci0KLUxpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KLSIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotcGFyID0gb3MucGF0aC5wYXJkaXIKLQotVENMID0gInRjbDguNi4xIgotVEsgPSAidGs4LjYuMSIKLVRJWCA9ICJ0aXgtOC40LjMuMyIKLQotUk9PVCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgcGFyLCBwYXIpKQotTk1BS0UgPSAoJ25tYWtlIC9ub2xvZ28gL2YgJXMgJXMgJXMnKQotCi1kZWYgbm1ha2UobWFrZWZpbGUsIGNvbW1hbmQ9IiIsICoqa3cpOgotICAgIGRlZmluZXMgPSAnICcuam9pbihrKyc9JytzdHIodikgZm9yIGssIHYgaW4ga3cuaXRlbXMoKSkKLSAgICBjbWQgPSBOTUFLRSAlIChtYWtlZmlsZSwgZGVmaW5lcywgY29tbWFuZCkKLSAgICBwcmludCgiXG5cbiIrY21kKyJcbiIpCi0gICAgaWYgb3Muc3lzdGVtKGNtZCkgIT0gMDoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKGNtZCkKLQotZGVmIGJ1aWxkKHBsYXRmb3JtLCBjbGVhbik6Ci0gICAgaWYgcGxhdGZvcm0gPT0gIldpbjMyIjoKLSAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGsiKQotICAgICAgICBtYWNoaW5lID0gIklYODYiCi0gICAgZWxpZiBwbGF0Zm9ybSA9PSAiQU1ENjQiOgotICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKFJPT1QsICJ0Y2x0azY0IikKLSAgICAgICAgbWFjaGluZSA9ICJBTUQ2NCIKLSAgICBlbHNlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHBsYXRmb3JtKQotCi0gICAgIyBUQ0wKLSAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4oUk9PVCwgVENMKQotICAgIGlmIDE6Ci0gICAgICAgIG9zLmNoZGlyKG9zLnBhdGguam9pbih0Y2xkaXIsICJ3aW4iKSkKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiY2xlYW4iKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCBNQUNISU5FPW1hY2hpbmUpCi0gICAgICAgIG5tYWtlKCJtYWtlZmlsZS52YyIsICJpbnN0YWxsIiwgSU5TVEFMTERJUj1kZXN0LCBNQUNISU5FPW1hY2hpbmUpCi0KLSAgICAjIFRLCi0gICAgaWYgMToKLSAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKFJPT1QsIFRLLCAid2luIikpCi0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgImNsZWFuIiwgREVCVUc9MCwgVENMRElSPXRjbGRpcikKLSAgICAgICAgbm1ha2UoIm1ha2VmaWxlLnZjIiwgREVCVUc9MCwgTUFDSElORT1tYWNoaW5lLCBUQ0xESVI9dGNsZGlyKQotICAgICAgICBubWFrZSgibWFrZWZpbGUudmMiLCAiaW5zdGFsbCIsIERFQlVHPTAsIElOU1RBTExESVI9ZGVzdCwgTUFDSElORT1tYWNoaW5lLCBUQ0xESVI9dGNsZGlyKQotCi0gICAgIyBUSVgKLSAgICBpZiAxOgotICAgICAgICAjIHB5dGhvbjkubWFrIGlzIGF2YWlsYWJsZSBhdCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcKLSAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKFJPT1QsIFRJWCwgIndpbiIpKQotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIG5tYWtlKCJweXRob24ubWFrIiwgImNsZWFuIikKLSAgICAgICAgbm1ha2UoInB5dGhvbi5tYWsiLCBNQUNISU5FPW1hY2hpbmUsIElOU1RBTExfRElSPWRlc3QpCi0gICAgICAgIG5tYWtlKCJweXRob24ubWFrIiwgImluc3RhbGwiLCBNQUNISU5FPW1hY2hpbmUsIElOU1RBTExfRElSPWRlc3QpCi0KLWRlZiBtYWluKCk6Ci0gICAgaWYgbGVuKHN5cy5hcmd2KSA8IDIgb3Igc3lzLmFyZ3ZbMV0gbm90IGluICgiV2luMzIiLCAiQU1ENjQiKToKLSAgICAgICAgcHJpbnQoIiVzIFdpbjMyfEFNRDY0IiAlIHN5cy5hcmd2WzBdKQotICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgIi1jIiBpbiBzeXMuYXJndjoKLSAgICAgICAgY2xlYW4gPSBUcnVlCi0gICAgZWxzZToKLSAgICAgICAgY2xlYW4gPSBGYWxzZQotCi0gICAgYnVpbGQoc3lzLmFyZ3ZbMV0sIGNsZWFuKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2NsZWFuLmJhdCBiL1BDYnVpbGQvY2xlYW4uYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NTE3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2NsZWFuLmJhdApAQCAtMCwwICsxLDUgQEAKK0BlY2hvIG9mZg0KK3JlbSBBIGJhdGNoIHByb2dyYW0gdG8gY2xlYW4gYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24sDQorcmVtIGp1c3QgZm9yIGNvbnZlbmllbmNlLg0KKw0KK2NhbGwgJX5kcDBidWlsZC5iYXQgLXQgQ2xlYW4gJSoNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2RlYnVnLnByb3BzIGIvUENidWlsZC9kZWJ1Zy5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI3YTY1YS4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2RlYnVnLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+Ci0gICAgPFB5RGVidWdFeHQ+X2Q8L1B5RGVidWdFeHQ+Ci0gICAgPEtpbGxQeXRob25FeGU+JChPdXREaXIpa2lsbF9weXRob25fZC5leGU8L0tpbGxQeXRob25FeGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxUYXJnZXROYW1lPiQoUHJvamVjdE5hbWUpX2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGVidWdFeHQiPgotICAgICAgPFZhbHVlPiQoUHlEZWJ1Z0V4dCk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KLSAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KLSAgICA8L0J1aWxkTWFjcm8+Ci0gIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvZW52LmJhdCBiL1BDYnVpbGQvZW52LmJhdAppbmRleCAwMTcwYmNlLi4yYjJjMDA1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL2Vudi5iYXQKKysrIGIvUENidWlsZC9lbnYuYmF0CkBAIC0xLDQgKzEsMTYgQEAKIEBlY2hvIG9mZg0KLWVjaG8gQnVpbGQgZW52aXJvbm1lbnRzOiB4ODYsIGlhNjQsIGFtZDY0LCB4ODZfYW1kNjQsIHg4Nl9pYTY0DQorcmVtIFRoaXMgc2NyaXB0IGFkZHMgdGhlIGxhdGVzdCBhdmFpbGFibGUgdG9vbHMgdG8gdGhlIHBhdGggZm9yIHRoZSBjdXJyZW50DQorcmVtIGNvbW1hbmQgd2luZG93LiBIb3dldmVyLCBtb3N0IGJ1aWxkcyBvZiBQeXRob24gd2lsbCBpZ25vcmUgdGhlIHZlcnNpb24NCityZW0gb2YgdGhlIHRvb2xzIG9uIFBBVEggYW5kIHVzZSBQbGF0Zm9ybVRvb2xzZXQgaW5zdGVhZC4gSWRlYWxseSwgYm90aCBzZXRzIG9mDQorcmVtIHRvb2xzIHNob3VsZCBiZSB0aGUgc2FtZSB2ZXJzaW9uIHRvIGF2b2lkIHBvdGVudGlhbCBjb25mbGljdHMuDQorcmVtDQorcmVtIFRvIGJ1aWxkIFB5dGhvbiB3aXRoIGFuIGVhcmxpZXIgdG9vbHNldCwgcGFzcyAiL3A6UGxhdGZvcm1Ub29sc2V0PXYxMDAiIChvcg0KK3JlbSAndjExMCcsICd2MTIwJyBvciAndjE0MCcpIHRvIHRoZSBidWlsZCBzY3JpcHQuDQorDQorZWNobyBCdWlsZCBlbnZpcm9ubWVudHM6IHg4NiwgYW1kNjQsIHg4Nl9hbWQ2NA0KIGVjaG8uDQotY2FsbCAiJVZTMTAwQ09NTlRPT0xTJS4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiICUqDQorc2V0IFZTVE9PTFM9JVZTMTQwQ09NTlRPT0xTJQ0KK2lmICIlVlNUT09MUyUiPT0iIiBzZXQgVlNUT09MUz0lVlMxMjBDT01OVE9PTFMlDQoraWYgIiVWU1RPT0xTJSI9PSIiIHNldCBWU1RPT0xTPSVWUzExMENPTU5UT09MUyUNCitpZiAiJVZTVE9PTFMlIj09IiIgc2V0IFZTVE9PTFM9JVZTMTAwQ09NTlRPT0xTJQ0KK2NhbGwgIiVWU1RPT0xTJS4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdCBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKaW5kZXggMGI4ZjBiOC4uMGIzYzA4YiAxMDA2NDQKLS0tIGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAorKysgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CkBAIC01MSwxNiArNTEsMTcgQEAKIA0KIGVjaG8uRmV0Y2hpbmcgZXh0ZXJuYWwgbGlicmFyaWVzLi4uDQogDQotZm9yICUlZSBpbiAoDQotICAgICAgICAgICAgYnppcDItMS4wLjYNCi0gICAgICAgICAgICBuYXNtLTIuMTEuMDYNCi0gICAgICAgICAgICBvcGVuc3NsLTEuMC4yZA0KLSAgICAgICAgICAgIHRjbC04LjYuMS4wDQotICAgICAgICAgICAgdGstOC42LjEuMA0KLSAgICAgICAgICAgIHRpeC04LjQuMy40DQotICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQotICAgICAgICAgICAgeHotNS4wLjUNCi0gICAgICAgICAgICApIGRvICgNCitzZXQgbGlicmFyaWVzPQ0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiemlwMi0xLjAuNg0KK2lmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBuYXNtLTIuMTEuMDYNCitpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgb3BlbnNzbC0xLjAuMmQNCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi40LjINCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjQuMg0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0aXgtOC40LjMuNg0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ei01LjAuNQ0KKw0KK2ZvciAlJWUgaW4gKCVsaWJyYXJpZXMlKSBkbyAoDQogICAgIGlmIGV4aXN0ICUlZSAoDQogICAgICAgICBlY2hvLiUlZSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcuDQogICAgICkgZWxzZSAoDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9pZGxlLmJhdCBiL1BDYnVpbGQvaWRsZS5iYXQKaW5kZXggNWFiMTVmNS4uYmFjYWFhOCAxMDA2NDQKLS0tIGEvUENidWlsZC9pZGxlLmJhdAorKysgYi9QQ2J1aWxkL2lkbGUuYmF0CkBAIC00LDEwICs0LDEwIEBACiByZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQogDQogc2V0bG9jYWwNCi1zZXQgZXhlPXB5dGhvbg0KLVBBVEggJVBBVEglOy4uXC4uXHRjbHRrXGJpbg0KK3NldCBleGU9d2luMzJccHl0aG9uDQorUEFUSCAlUEFUSCU7Li5cZXh0ZXJuYWxzXHRjbHRrXGJpbg0KIA0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQNCitpZiAiJTEiPT0iLWQiIChzZXQgZXhlPSVleGUlX2QpICYgc2hpZnQNCiANCiBzZXQgY21kPSVleGUlIC4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCiANCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2luc3RhbGxlci5ibXAgYi9QQ2J1aWxkL2luc3RhbGxlci5ibXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NzVlMTkuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9pbnN0YWxsZXIuYm1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUENidWlsZC9raWxsX3B5dGhvbi5jIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDQ3MzFmLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQva2lsbF9weXRob24uYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogSGVscGVyIHByb2dyYW0gZm9yIGtpbGxpbmcgbGluZ2VyaW5nIHB5dGhvbltfZF0uZXhlIHByb2Nlc3NlcyBiZWZvcmUKLSAqIGJ1aWxkaW5nLCB0aHVzIGF0dGVtcHRpbmcgdG8gYXZvaWQgYnVpbGQgZmFpbHVyZXMgZHVlIHRvIGZpbGVzIGJlaW5nCi0gKiBsb2NrZWQuCi0gKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHRsaGVscDMyLmg+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+Ci0gICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5NGU1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwpAQCAtMCwwICsxLDc3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8UHlfSW50RGlyIENvbmRpdGlvbj0iJyQoUHlfSW50RGlyKScgPT0gJyciPiQob3BlbnNzbERpcil0bXBcPC9QeV9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SXRlbUdyb3VwPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJEU09fV0lOMzIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IldJTjMyX0xFQU5fQU5EX01FQU4iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IkxfRU5ESUFOIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1RIUkVBRFMiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfU1lTTkFNRV9XSU4zMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9JQTMyX1NTRTIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQ1BVSURfT0JKIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEExX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMjU2X0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBNTEyX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iTUQ1X0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iQUVTX0FTTSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iVlBBRVNfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJXSElSTFBPT0xfQVNNIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJHSEFTSF9BU00iIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fSURFQSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19SQzUiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fTUQyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX01EQzIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fS1JCNSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19KUEFLRSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19SRFJBTkQiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fUlNBWCIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fUEFSVF9XT1JEUyIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fTU9OVCIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iUk1EMTYwX0FTTSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1ByZXByb2Nlc3NvckRlZmluaXRpb25MaXN0PkAoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9fUHJlcHJvY2Vzc29yRGVmaW5pdGlvbkxpc3Q+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8IS0tIFN1cHByZXNzIDY0LWJpdCB0cnVuY2F0aW9uIHdhcm5pbmdzIC0gdGhleSBhcmVuJ3Qgb3VycyB0byB3b3JyeSBhYm91dCAtLT4KKyAgICAgIDxEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz40MjQ0OzQyNjc8L0Rpc2FibGVTcGVjaWZpY1dhcm5pbmdzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKTskKG9wZW5zc2xEaXIpaW5jbHVkZTskKG9wZW5zc2xEaXIpY3J5cHRvOyQob3BlbnNzbERpciljcnlwdG9cYXNuMTskKG9wZW5zc2xEaXIpY3J5cHRvXGV2cDskKG9wZW5zc2xEaXIpY3J5cHRvXG1vZGVzPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiQoX1ByZXByb2Nlc3NvckRlZmluaXRpb25MaXN0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgCisgIDxUYXJnZXQgTmFtZT0iRmluZE5hc20iPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPG5hc20gQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAnV2luMzInIj5uYXNtLmV4ZSAtZiB3aW4zMjwvbmFzbT4KKyAgICAgIDxuYXNtIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPm5hc20uZXhlIC1mIHdpbjY0IC1ETkVBUiAtT3ggLWc8L25hc20+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8L1RhcmdldD4KKworICA8VGFyZ2V0IE5hbWU9IkJ1aWxkTmFzbUZpbGVzIiBCZWZvcmVUYXJnZXRzPSJQcmVCdWlsZEV2ZW50IiBEZXBlbmRzT25UYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQ7RmluZE5hc20iIElucHV0cz0iQChOYXNtQ29tcGlsZSkiIE91dHB1dHM9IkAoTmFzbUNvbXBpbGUtPickKEludERpciklKEZpbGVuYW1lKS5vYmonKSI+CisgICAgPEV4ZWMgQ29tbWFuZD0nc2V0bG9jYWwKK3NldCBQQVRIPSQobmFzbURpcik7JVBBVEglCiskKG5hc20pIC1vICIkKEludERpciklKE5hc21Db21waWxlLkZpbGVuYW1lKS5vYmoiICIlKE5hc21Db21waWxlLkZ1bGxQYXRoKSInIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxMaW5rIEluY2x1ZGU9IiQoSW50RGlyKSUoTmFzbUNvbXBpbGUuRmlsZW5hbWUpLm9iaiIgLz4KKyAgICAgIDxMaWIgSW5jbHVkZT0iJChJbnREaXIpJShOYXNtQ29tcGlsZS5GaWxlbmFtZSkub2JqIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQucHJvaiBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NjIxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3BjYnVpbGQucHJvagpAQCAtMCwwICsxLDkwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0NDOUI5M0EyLTQzOUQtNDA1OC05RDI5LTZEQ0Y0Mzc3NDQwNX08L1Byb2plY3RHdWlkPgorICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8Q29uZmlndXJhdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICA8SW5jbHVkZUV4dGVuc2lvbnMgQ29uZGl0aW9uPSInJChJbmNsdWRlRXh0ZW5zaW9ucyknID09ICcnIj50cnVlPC9JbmNsdWRlRXh0ZW5zaW9ucz4KKyAgICA8SW5jbHVkZUV4dGVybmFscyBDb25kaXRpb249IickKEluY2x1ZGVFeHRlcm5hbHMpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZUV4dGVybmFscz4KKyAgICA8SW5jbHVkZVRlc3RzIENvbmRpdGlvbj0iJyQoSW5jbHVkZVRlc3QpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZVRlc3RzPgorICAgIDxJbmNsdWRlU1NMIENvbmRpdGlvbj0iJyQoSW5jbHVkZVNTTCknID09ICcnIj50cnVlPC9JbmNsdWRlU1NMPgorICAgIDxJbmNsdWRlVGtpbnRlciBDb25kaXRpb249IickKEluY2x1ZGVUa2ludGVyKScgPT0gJyciPnRydWU8L0luY2x1ZGVUa2ludGVyPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPFByb2plY3RzPgorICAgICAgPFBsYXRmb3JtPiQoUGxhdGZvcm0pPC9QbGF0Zm9ybT4KKyAgICAgIDxDb25maWd1cmF0aW9uPiQoQ29uZmlndXJhdGlvbik8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UHJvcGVydGllcz48L1Byb3BlcnRpZXM+CisgICAgICA8QnVpbGRUYXJnZXQ+QnVpbGQ8L0J1aWxkVGFyZ2V0PgorICAgICAgPENsZWFuVGFyZ2V0PkNsZWFuPC9DbGVhblRhcmdldD4KKyAgICAgIDxDbGVhbkFsbFRhcmdldD5DbGVhbkFsbDwvQ2xlYW5BbGxUYXJnZXQ+CisgICAgICA8QnVpbGRJblBhcmFsbGVsPnRydWU8L0J1aWxkSW5QYXJhbGxlbD4KKyAgICA8L1Byb2plY3RzPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPCEtLSBweXRob25YWS5kbGwgLS0+CisgICAgPCEtLQorICAgIFBhcmFsbGVsIGJ1aWxkIGlzIGV4cGxpY2l0bHkgZGlzYWJsZWQgZm9yIHRoaXMgcHJvamVjdCBiZWNhdXNlIGl0CisgICAgY2F1c2VzIG1hbnkgY29uZmxpY3RzIGJldHdlZW4gcHl0aG9uY29yZSBhbmQgcHJvamVjdHMgdGhhdCBkZXBlbmQKKyAgICBvbiBweXRob25jb3JlLiBPbmNlIHRoZSBjb3JlIERMTCBoYXMgYmVlbiBidWlsdCwgc3Vic2VxdWVudAorICAgIHByb2plY3RzIHdpbGwgYmUgYnVpbHQgaW4gcGFyYWxsZWwuCisgICAgLS0+CisgICAgPFByb2plY3RzIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8QnVpbGRJblBhcmFsbGVsPmZhbHNlPC9CdWlsZEluUGFyYWxsZWw+CisgICAgPC9Qcm9qZWN0cz4KKyAgICA8IS0tIHB5dGhvblt3XS5leGUgLS0+CisgICAgPFByb2plY3RzIEluY2x1ZGU9InB5dGhvbi52Y3hwcm9qO3B5dGhvbncudmN4cHJvaiIgLz4KKyAgICA8IS0tIHB5dGhvbjMuZGxsIC0tPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJweXRob24zZGxsLnZjeHByb2oiIC8+CisgICAgPCEtLSBweVt3XS5leGUgLS0+CisgICAgPFByb2plY3RzIEluY2x1ZGU9InB5bGF1bmNoZXIudmN4cHJvajtweXdsYXVuY2hlci52Y3hwcm9qIiAvPgorICAgIDwhLS0gX2ZyZWV6ZV9pbXBvcnRsaWIgLS0+CisgICAgPFByb2plY3RzIEluY2x1ZGU9Il9mcmVlemVfaW1wb3J0bGliLnZjeHByb2oiIC8+CisgICAgPCEtLSBFeHRlbnNpb24gbW9kdWxlcyAtLT4KKyAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzO19kZWNpbWFsO19lbGVtZW50dHJlZTtfbXNpO19tdWx0aXByb2Nlc3Npbmc7X292ZXJsYXBwZWQ7cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQiIC8+CisgICAgPCEtLSBFeHRlbnNpb24gbW9kdWxlcyB0aGF0IHJlcXVpcmUgZXh0ZXJuYWwgc291cmNlcyAtLT4KKyAgICA8RXh0ZXJuYWxNb2R1bGVzIEluY2x1ZGU9Il9iejI7X2x6bWE7X3NxbGl0ZTMiIC8+CisgICAgPCEtLSBfc3NsIHdpbGwgYnVpbGQgX3NvY2tldCBhcyB3ZWxsLCB3aGljaCBtYXkgY2F1c2UgY29uZmxpY3RzIGluIHBhcmFsbGVsIGJ1aWxkcyAtLT4KKyAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJfc29ja2V0IiBDb25kaXRpb249IiEkKEluY2x1ZGVTU0wpIG9yICEkKEluY2x1ZGVFeHRlcm5hbHMpIiAvPgorICAgIDxFeHRlcm5hbE1vZHVsZXMgSW5jbHVkZT0iX3NzbDtfaGFzaGxpYiIgQ29uZGl0aW9uPSIkKEluY2x1ZGVTU0wpIiAvPgorICAgIDxFeHRlcm5hbE1vZHVsZXMgSW5jbHVkZT0iX3RraW50ZXI7dGl4IiBDb25kaXRpb249IiQoSW5jbHVkZVRraW50ZXIpIiAvPgorICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9IkAoRXh0ZXJuYWxNb2R1bGVzLT4nJShJZGVudGl0eSknKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVFeHRlcm5hbHMpIiAvPgorICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKEV4dGVuc2lvbk1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZW5zaW9ucykiIC8+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDhhOWYzCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKQEAgLTAsMCArMSwxMiBAQAorQGVjaG8gb2ZmDQoraWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKA0KKyAgaWYgJTEgRVFVIERlYnVnICgNCisgICAgc2hpZnQNCisgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzVfZC5kbGwgZXhpdCAxDQorICApIEVMU0UgKA0KKyAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzUuZGxsIGV4aXQgMQ0KKyAgKQ0KKykNCislSE9TVF9QWVRIT04lIHByZXBhcmVfc3NsLnB5ICUxDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5weSBiL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIwM2RhYgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkKQEAgLTAsMCArMSwyNDggQEAKKyMhIC91c3IvYmluL2VudiBweXRob24zCisjIFNjcmlwdCBmb3IgcHJlcGFyaW5nIE9wZW5TU0wgZm9yIGJ1aWxkaW5nIG9uIFdpbmRvd3MuCisjIFVzZXMgUGVybCB0byBjcmVhdGUgbm1ha2UgbWFrZWZpbGVzIGFuZCBvdGhlcndpc2UgcHJlcGFyZSB0aGUgd2F5CisjIGZvciBidWlsZGluZyBvbiAzMiBvciA2NCBiaXQgcGxhdGZvcm1zLgorCisjIFNjcmlwdCBvcmlnaW5hbGx5IGF1dGhvcmVkIGJ5IE1hcmsgSGFtbW9uZC4KKyMgTWFqb3IgcmV2aXNpb25zIGJ5OgorIyAgIE1hcnRpbiB2LiBMw7Z3aXMKKyMgICBDaHJpc3RpYW4gSGVpbWVzCisjICAgWmFjaGFyeSBXYXJlCisKKyMgVEhFT1JFVElDQUxMWSwgeW91IGNhbjoKKyMgKiBVbnBhY2sgdGhlIGxhdGVzdCBPcGVuU1NMIHJlbGVhc2Ugd2hlcmUgJChvcGVuc3NsRGlyKSBpbgorIyAgIFBDYnVpbGRccHlwcm9qZWN0LnByb3BzIGV4cGVjdHMgaXQgdG8gYmUuCisjICogSW5zdGFsbCBBY3RpdmVQZXJsIGFuZCBlbnN1cmUgaXQgaXMgc29tZXdoZXJlIG9uIHlvdXIgcGF0aC4KKyMgKiBSdW4gdGhpcyBzY3JpcHQgd2l0aCB0aGUgT3BlblNTTCBzb3VyY2UgZGlyIGFzIHRoZSBvbmx5IGFyZ3VtZW50LgorIworIyBpdCBzaG91bGQgY29uZmlndXJlIE9wZW5TU0wgc3VjaCB0aGF0IGl0IGlzIHJlYWR5IHRvIGJlIGJ1aWx0IGJ5CisjIHNzbC52Y3hwcm9qIG9uIDMyIG9yIDY0IGJpdCBwbGF0Zm9ybXMuCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworCisjIEZpbmQgYWxsICJmb28uZXhlIiBmaWxlcyBvbiB0aGUgUEFUSC4KK2RlZiBmaW5kX2FsbF9vbl9wYXRoKGZpbGVuYW1lLCBleHRyYXMgPSBOb25lKToKKyAgICBlbnRyaWVzID0gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0KG9zLnBhdGhzZXApCisgICAgcmV0ID0gW10KKyAgICBmb3IgcCBpbiBlbnRyaWVzOgorICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6CisgICAgICAgICAgICByZXQuYXBwZW5kKGZuYW1lKQorICAgIGlmIGV4dHJhczoKKyAgICAgICAgZm9yIHAgaW4gZXh0cmFzOgorICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuYW1lKQorICAgIHJldHVybiByZXQKKworIyBGaW5kIGEgc3VpdGFibGUgUGVybCBpbnN0YWxsYXRpb24gZm9yIE9wZW5TU0wuCisjIGN5Z3dpbiBwZXJsIGRvZXMgKm5vdCogd29yay4gIEFjdGl2ZVBlcmwgZG9lcy4KKyMgQmVpbmcgYSBQZXJsIGR1bW15LCB0aGUgc2ltcGxlc3Qgd2F5IEkgY2FuIGNoZWNrIGlzIGlmIHRoZSAiV2luMzIiIHBhY2thZ2UKKyMgaXMgYXZhaWxhYmxlLgorZGVmIGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKToKKyAgICBmb3IgcGVybCBpbiBwZXJsczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3BlcmwsICItZSIsICJ1c2UgV2luMzI7Il0pCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gcGVybAorCisgICAgaWYgcGVybHM6CisgICAgICAgIHByaW50KCJUaGUgZm9sbG93aW5nIHBlcmwgaW50ZXJwcmV0ZXJzIHdlcmUgZm91bmQ6IikKKyAgICAgICAgZm9yIHAgaW4gcGVybHM6CisgICAgICAgICAgICBwcmludCgiICIsIHApCisgICAgICAgIHByaW50KCIgTm9uZSBvZiB0aGVzZSB2ZXJzaW9ucyBhcHBlYXIgc3VpdGFibGUgZm9yIGJ1aWxkaW5nIE9wZW5TU0wiKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCJOTyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kIG9uIHRoaXMgbWFjaGluZSBhdCBhbGwhIikKKyAgICBwcmludCgiIFBsZWFzZSBpbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBhcHBlYXJzIG9uIHlvdXIgcGF0aCIpCisKK2RlZiBjcmVhdGVfbWFrZWZpbGU2NChtYWtlZmlsZSwgbTMyKToKKyAgICAiIiJDcmVhdGUgYW5kIGZpeCBtYWtlZmlsZSBmb3IgNjRiaXQKKworICAgIFJlcGxhY2UgMzIgd2l0aCA2NGJpdCBkaXJlY3RvcmllcworICAgICIiIgorICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtMzIpOgorICAgICAgICByZXR1cm4KKyAgICB3aXRoIG9wZW4obTMyKSBhcyBmaW46CisgICAgICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIj10bXAzMiIsICI9dG1wNjQiKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIj1vdXQzMiIsICI9b3V0NjQiKQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIj1pbmMzMiIsICI9aW5jNjQiKQorICAgICAgICAgICAgICAgICMgZm9yY2UgNjQgYml0IG1hY2hpbmUKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJNS0xJQj1saWIiLCAiTUtMSUI9bGliIC9NQUNISU5FOlg2NCIpCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTEZMQUdTPSIsICJMRkxBR1M9L01BQ0hJTkU6WDY0ICIpCisgICAgICAgICAgICAgICAgIyBkb24ndCBsaW5rIGFnYWluc3QgdGhlIGxpYiBvbiA2NGJpdCBzeXN0ZW1zCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiYnVmZmVyb3ZlcmZsb3d1LmxpYiIsICIiKQorICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKyAgICBvcy51bmxpbmsobTMyKQorCitkZWYgY3JlYXRlX2FzbXMobWFrZWZpbGUpOgorICAgICNjcmVhdGUgYSBjdXN0b20gbWFrZWZpbGUgb3V0IG9mIHRoZSBwcm92aWRlZCBvbmUKKyAgICBhc21fbWFrZWZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KG1ha2VmaWxlKVswXSArICcuYXNtLm1haycKKyAgICB3aXRoIG9wZW4obWFrZWZpbGUpIGFzIGZpbjoKKyAgICAgICAgd2l0aCBvcGVuKGFzbV9tYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgorICAgICAgICAgICAgICAgICMgS2VlcCBldmVyeXRoaW5nIHVwIHRvIHRoZSBpbnN0YWxsIHRhcmdldCAoaXQncyBjb252ZW5pZW50KQorICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnaW5zdGFsbDogYWxsJyk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQorICAgICAgICAgICAgYXNtcyA9IFtdCisgICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46CisgICAgICAgICAgICAgICAgaWYgJy5hc20nIGluIGxpbmUgYW5kIGxpbmUuc3RyaXAoKS5lbmRzd2l0aCgnLnBsJyk6CisgICAgICAgICAgICAgICAgICAgIGFzbXMuYXBwZW5kKGxpbmUuc3BsaXQoJzonKVswXSkKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgbGluZS5zdHJpcCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IG5leHQoZmluKQorICAgICAgICAgICAgICAgICAgICBmb3V0LndyaXRlKCdcbicpCisKKyAgICAgICAgICAgIGZvdXQud3JpdGUoJ2FzbXM6ICQoVE1QX0QpICcpCisgICAgICAgICAgICBmb3V0LndyaXRlKCcgJy5qb2luKGFzbXMpKQorICAgICAgICAgICAgZm91dC53cml0ZSgnXG4nKQorCisgICAgb3Muc3lzdGVtKCdubWFrZSAvZiB7fSBQRVJMPXBlcmwgYXNtcycuZm9ybWF0KGFzbV9tYWtlZmlsZSkpCisgICAgb3MudW5saW5rKGFzbV9tYWtlZmlsZSkKKworCisKK2RlZiBmaXhfbWFrZWZpbGUobWFrZWZpbGUpOgorICAgICIiIkZpeCBzb21lIHN0dWZmIGluIGFsbCBtYWtlZmlsZXMKKyAgICAiIiIKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpOgorICAgICAgICByZXR1cm4KKyAgICBjb3B5X2lmX2RpZmZlcmVudCA9IHInJChQRVJMKSAkKFNSQ19EKVx1dGlsXGNvcHktaWYtZGlmZmVyZW50LnBsJworICAgIHdpdGggb3BlbihtYWtlZmlsZSkgYXMgZmluOgorICAgICAgICBsaW5lcyA9IGZpbi5yZWFkbGluZXMoKQorICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUEVSTD0iKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDUD0iKToKKyAgICAgICAgICAgICAgICBsaW5lID0gIkNQPWNvcHlcbiIKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiTUtESVI9Iik6CisgICAgICAgICAgICAgICAgbGluZSA9ICJNS0RJUj1ta2RpclxuIgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDRkxBRz0iKToKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgZm9yIGFsZ28gaW4gKCJSQzUiLCAiTURDMiIsICJJREVBIik6CisgICAgICAgICAgICAgICAgICAgIG5vYWxnbyA9ICIgLURPUEVOU1NMX05PXyVzIiAlIGFsZ28KKyAgICAgICAgICAgICAgICAgICAgaWYgbm9hbGdvIG5vdCBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyBub2FsZ28KKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZSArICdcbicKKyAgICAgICAgICAgIGlmIGNvcHlfaWZfZGlmZmVyZW50IGluIGxpbmU6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZShjb3B5X2lmX2RpZmZlcmVudCwgJ2NvcHkgL1knKQorICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQorCitkZWYgcnVuX2NvbmZpZ3VyZShjb25maWd1cmUsIGRvX3NjcmlwdCk6CisgICAgcHJpbnQoInBlcmwgQ29uZmlndXJlICIrY29uZmlndXJlKyIgbm8taWRlYSBuby1tZGMyIikKKyAgICBvcy5zeXN0ZW0oInBlcmwgQ29uZmlndXJlICIrY29uZmlndXJlKyIgbm8taWRlYSBuby1tZGMyIikKKyAgICBwcmludChkb19zY3JpcHQpCisgICAgb3Muc3lzdGVtKGRvX3NjcmlwdCkKKworZGVmIGNtcChmMSwgZjIpOgorICAgIGJ1ZnNpemUgPSAxMDI0ICogOAorICAgIHdpdGggb3BlbihmMSwgJ3JiJykgYXMgZnAxLCBvcGVuKGYyLCAncmInKSBhcyBmcDI6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBiMSA9IGZwMS5yZWFkKGJ1ZnNpemUpCisgICAgICAgICAgICBiMiA9IGZwMi5yZWFkKGJ1ZnNpemUpCisgICAgICAgICAgICBpZiBiMSAhPSBiMjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBiMToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCitkZWYgY29weShzcmMsIGRzdCk6CisgICAgaWYgb3MucGF0aC5pc2ZpbGUoZHN0KSBhbmQgY21wKHNyYywgZHN0KToKKyAgICAgICAgcmV0dXJuCisgICAgc2h1dGlsLmNvcHkoc3JjLCBkc3QpCisKK2RlZiBwcmVwKGFyY2gpOgorICAgIGlmIGFyY2ggPT0gIng4NiI6CisgICAgICAgIGNvbmZpZ3VyZSA9ICJWQy1XSU4zMiIKKyAgICAgICAgZG9fc2NyaXB0ID0gIm1zXFxkb19uYXNtIgorICAgICAgICBtYWtlZmlsZT0ibXNcXG50Lm1hayIKKyAgICAgICAgbTMyID0gbWFrZWZpbGUKKyAgICAgICAgZGlyc3VmZml4ID0gIjMyIgorICAgIGVsaWYgYXJjaCA9PSAiYW1kNjQiOgorICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lONjRBIgorICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX3dpbjY0YSIKKyAgICAgICAgbWFrZWZpbGUgPSAibXNcXG50NjQubWFrIgorICAgICAgICBtMzIgPSBtYWtlZmlsZS5yZXBsYWNlKCc2NCcsICcnKQorICAgICAgICBkaXJzdWZmaXggPSAiNjQiCisgICAgICAgICNvcy5lbnZpcm9uWyJWU0VYVENPTVBfVVNFQ0wiXSA9ICJNU19PUFRFUk9OIgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VucmVjb2duaXplZCBwbGF0Zm9ybTogJXMnICUgYXJjaCkKKworICAgICMgcmVidWlsZCBtYWtlZmlsZSB3aGVuIHdlIGRvIHRoZSByb2xlIG92ZXIgZnJvbSAzMiB0byA2NCBidWlsZAorICAgIGlmIGFyY2ggPT0gImFtZDY0IiBhbmQgb3MucGF0aC5pc2ZpbGUobTMyKSBhbmQgbm90IG9zLnBhdGguaXNmaWxlKG1ha2VmaWxlKToKKyAgICAgICAgb3MudW5saW5rKG0zMikKKworICAgICMgSWYgdGhlIHNzbCBtYWtlZmlsZXMgZG8gbm90IGV4aXN0LCB3ZSBpbnZva2UgUGVybCB0byBnZW5lcmF0ZSB0aGVtLgorICAgICMgRHVlIHRvIGEgYnVnIGluIHRoaXMgc2NyaXB0LCB0aGUgbWFrZWZpbGUgc29tZXRpbWVzIGVuZGVkIHVwIGVtcHR5CisgICAgIyBGb3JjZSBhIHJlZ2VuZXJhdGlvbiBpZiBpdCBpcy4KKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpIG9yIG9zLnBhdGguZ2V0c2l6ZShtYWtlZmlsZSk9PTA6CisgICAgICAgIHByaW50KCJDcmVhdGluZyB0aGUgbWFrZWZpbGVzLi4uIikKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpCisKKyAgICAgICAgaWYgYXJjaCA9PSAiYW1kNjQiOgorICAgICAgICAgICAgY3JlYXRlX21ha2VmaWxlNjQobWFrZWZpbGUsIG0zMikKKyAgICAgICAgZml4X21ha2VmaWxlKG1ha2VmaWxlKQorICAgICAgICBjb3B5KHIiY3J5cHRvXGJ1aWxkaW5mLmgiLCByImNyeXB0b1xidWlsZGluZl8lcy5oIiAlIGFyY2gpCisgICAgICAgIGNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmYuaCIsIHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCkKKyAgICBlbHNlOgorICAgICAgICBwcmludChtYWtlZmlsZSwgJ2FscmVhZHkgZXhpc3RzIScpCisKKyAgICBwcmludCgnY3JlYXRpbmcgYXNtcy4uLicpCisgICAgY3JlYXRlX2FzbXMobWFrZWZpbGUpCisKK2RlZiBtYWluKCk6CisgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAxOgorICAgICAgICBwcmludCgiTm90IGVub3VnaCBhcmd1bWVudHM6IGRpcmVjdG9yeSBjb250YWluaW5nIE9wZW5TU0wiLAorICAgICAgICAgICAgICAic291cmNlcyBtdXN0IGJlIHN1cHBsaWVkIikKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGlmIGxlbihzeXMuYXJndikgPiAyOgorICAgICAgICBwcmludCgiVG9vIG1hbnkgYXJndW1lbnRzIHN1cHBsaWVkLCBhbGwgd2UgbmVlZCBpcyB0aGUgZGlyZWN0b3J5IiwKKyAgICAgICAgICAgICAgImNvbnRhaW5pbmcgT3BlblNTTCBzb3VyY2VzIikKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIHNzbF9kaXIgPSBzeXMuYXJndlsxXQorCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoc3NsX2Rpcik6CisgICAgICAgIHByaW50KHNzbF9kaXIsICJpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5ISIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAjIHBlcmwgc2hvdWxkIGJlIG9uIHRoZSBwYXRoLCBidXQgd2UgYWxzbyBsb29rIGluICJccGVybCIgYW5kICJjOlxccGVybCIKKyAgICAjIGFzICJ3ZWxsIGtub3duIiBsb2NhdGlvbnMKKyAgICBwZXJscyA9IGZpbmRfYWxsX29uX3BhdGgoInBlcmwuZXhlIiwgW3IiXHBlcmxcYmluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiQzpccGVybFxiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJccGVybDY0XGJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIkM6XHBlcmw2NFxiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgIHBlcmwgPSBmaW5kX3dvcmtpbmdfcGVybChwZXJscykKKyAgICBpZiBwZXJsOgorICAgICAgICBwcmludCgiRm91bmQgYSB3b3JraW5nIHBlcmwgYXQgJyVzJyIgJSAocGVybCwpKQorICAgIGVsc2U6CisgICAgICAgIHN5cy5leGl0KDEpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKyAgICAjIFB1dCBvdXIgd29ya2luZyBQZXJsIGF0IHRoZSBmcm9udCBvZiBvdXIgcGF0aAorICAgIG9zLmVudmlyb25bIlBBVEgiXSA9IG9zLnBhdGguZGlybmFtZShwZXJsKSArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aHNlcCArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdCisKKyAgICBvbGRfY3dkID0gb3MuZ2V0Y3dkKCkKKyAgICB0cnk6CisgICAgICAgIG9zLmNoZGlyKHNzbF9kaXIpCisgICAgICAgIGZvciBhcmNoIGluIFsnYW1kNjQnLCAneDg2J106CisgICAgICAgICAgICBwcmVwKGFyY2gpCisgICAgZmluYWxseToKKyAgICAgICAgb3MuY2hkaXIob2xkX2N3ZCkKKworaWYgX19uYW1lX189PSdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZC5wcm9wcyBiL1BDYnVpbGQvcHlkLnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Njk5NjZlLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvcHlkLnByb3BzCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KLSAgICA8RW1iZWRNYW5pZmVzdD5mYWxzZTwvRW1iZWRNYW5pZmVzdD4KLSAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0JVSUxEX0NPUkVfTU9EVUxFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICA8L0xpbms+Ci0gICAgPFBvc3RCdWlsZEV2ZW50PgotICAgICAgPENvbW1hbmQ+Ci0gICAgICA8L0NvbW1hbmQ+Ci0gICAgPC9Qb3N0QnVpbGRFdmVudD4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkX2QucHJvcHMgYi9QQ2J1aWxkL3B5ZF9kLnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDIzMjg4Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvcHlkX2QucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPExpbmtJbmNyZW1lbnRhbD5mYWxzZTwvTGlua0luY3JlbWVudGFsPgotICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgotICAgIDxFbWJlZE1hbmlmZXN0PmZhbHNlPC9FbWJlZE1hbmlmZXN0PgotICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgotICAgIDxUYXJnZXROYW1lPiQoUHJvamVjdE5hbWUpX2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5EZWZhdWx0PC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+ZmFsc2U8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9CVUlMRF9DT1JFX01PRFVMRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluayAvPgotICAgIDxQb3N0QnVpbGRFdmVudD4KLSAgICAgIDxDb21tYW5kPgotICAgICAgPC9Db21tYW5kPgotICAgIDwvUG9zdEJ1aWxkRXZlbnQ+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cCAvPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2oKaW5kZXggOTc0ZmQzZC4uNGU3NjIxZWMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qCkBAIC0zNSwxODYgKzM1LDMzIEBACiAgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgPC9JdGVtR3JvdXA+CiAgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CiAgICAgPFByb2plY3RHdWlkPntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5weWV4cGF0PC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+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+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFB5U291cmNlUGF0aClNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIiAvPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWxhdW5jaGVyLnZjeHByb2ogYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvagppbmRleCA5ZmE5M2RkLi42YTIxNzg1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvagpAQCAtMzcsMjU2ICszNywzMyBAQAogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPFByb2plY3RHdWlkPns3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5weWxhdW5jaGVyPC9Sb290TmFtZXNwYWNlPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KICAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+Ci0gICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgogICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5X2Q8L1RhcmdldE5hbWU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weV9kPC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgotICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgotICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgotICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+Ci0gICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KLSAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KLSAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KLSAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgotICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+Ci0gICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+Ci0gICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+Ci0gICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KLSAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgotICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CiAgICAgPC9MaW5rPgpAQCAtMzAwLDExICs3Nyw2IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKaW5kZXggMDM0MTM2OC4uYzEzMDNlMSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXByb2plY3QucHJvcHMKKysrIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKQEAgLTEsNDggKzEsNTMgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiIFRyZWF0QXNMb2NhbFByb3BlcnR5PSJQeV9JbnREaXIiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcik8L091dERpcj4KLSAgICA8SW50RGlyPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+Ci0gIDwvUHJvcGVydHlHcm91cD4gIAotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSd4NjQnIj4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gICAgPF9Qcm9wZXJ0eVNoZWV0RGlzcGxheU5hbWU+YW1kNjQ8L19Qcm9wZXJ0eVNoZWV0RGlzcGxheU5hbWU+Ci0gICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKWFtZDY0XDwvT3V0RGlyPgotICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxWaXN1YWxTdHVkaW9WZXJzaW9uIENvbmRpdGlvbj0iJyQoVmlzdWFsU3R1ZGlvVmVyc2lvbiknID09ICcnIj4xMC4wPC9WaXN1YWxTdHVkaW9WZXJzaW9uPgorICAgIDxPdXREaXI+JChCdWlsZFBhdGgpPC9PdXREaXI+CisgICAgPE91dERpciBDb25kaXRpb249IickKFB5X091dERpciknICE9ICcnIj4kKFB5X091dERpcik8L091dERpcj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXREaXIpKSI+JChPdXREaXIpXDwvT3V0RGlyPgorICAgIDxQeV9JbnREaXIgQ29uZGl0aW9uPSInJChQeV9JbnREaXIpJyA9PSAnJyI+JChTb2x1dGlvbkRpcilvYmpcPC9QeV9JbnREaXI+CisgICAgPEludERpciBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoSW50RGlyKSkiPiQoSW50RGlyKVw8L0ludERpcj4KKyAgICA8SW50RGlyPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV8kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpX1BHT1wkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKFRhcmdldE5hbWUpJyA9PSAnJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWU+JChUYXJnZXROYW1lKSQoUHlEZWJ1Z0V4dCk8L1RhcmdldE5hbWU+CisgICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+CisgICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+CisgICAgPFN1cHBvcnRQR08gQ29uZGl0aW9uPSInJChTdXBwb3J0UEdPKScgPT0gJyciPnRydWU8L1N1cHBvcnRQR08+CisgICAgPFN1cHBvcnRTaWduaW5nIENvbmRpdGlvbj0iJyQoU3VwcG9ydFNpZ25pbmcpJyA9PSAnJyI+dHJ1ZTwvU3VwcG9ydFNpZ25pbmc+CisgICAgPFN1cHBvcnRTaWduaW5nIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICdEZWJ1ZyciPmZhbHNlPC9TdXBwb3J0U2lnbmluZz4KKyAgICA8U3VwcG9ydFNpZ25pbmcgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uVHlwZSknID09ICdTdGF0aWNMaWJyYXJ5JyI+ZmFsc2U8L1N1cHBvcnRTaWduaW5nPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KLSAgICA8UHlEbGxOYW1lPnB5dGhvbjM0JChQeURlYnVnRXh0KTwvUHlEbGxOYW1lPgotICAgIDxQeXRob25FeGU+JChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGU8L1B5dGhvbkV4ZT4KLSAgICA8S2lsbFB5dGhvbkV4ZT4kKE91dERpcilraWxsX3B5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9LaWxsUHl0aG9uRXhlPgotICAgIDxleHRlcm5hbHNEaXI+Li5cZXh0ZXJuYWxzPC9leHRlcm5hbHNEaXI+Ci0gICAgPHNxbGl0ZTNEaXI+JChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjguMTEuMDwvc3FsaXRlM0Rpcj4KLSAgICA8YnoyRGlyPiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNjwvYnoyRGlyPgotICAgIDxsem1hRGlyPiQoZXh0ZXJuYWxzRGlyKVx4ei01LjAuNTwvbHptYURpcj4KLSAgICA8b3BlbnNzbERpcj4kKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMmQ8L29wZW5zc2xEaXI+Ci0gICAgPHRjbHRrRGlyPiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azwvdGNsdGtEaXI+Ci0gICAgPHRjbHRrNjREaXI+JChleHRlcm5hbHNEaXIpXHRjbHRrNjQ8L3RjbHRrNjREaXI+Ci0gICAgPHRjbHRrTGliPiQodGNsdGtEaXIpXGxpYlx0Y2w4NnQubGliOyQodGNsdGtEaXIpXGxpYlx0azg2dC5saWI8L3RjbHRrTGliPgotICAgIDx0Y2x0a0xpYkRlYnVnPiQodGNsdGtEaXIpXGxpYlx0Y2w4NnRnLmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NnRnLmxpYjwvdGNsdGtMaWJEZWJ1Zz4KLSAgICA8dGNsdGs2NExpYj4kKHRjbHRrNjREaXIpXGxpYlx0Y2w4NnQubGliOyQodGNsdGs2NERpcilcbGliXHRrODZ0LmxpYjwvdGNsdGs2NExpYj4KLSAgICA8dGNsdGs2NExpYkRlYnVnPiQodGNsdGs2NERpcilcbGliXHRjbDg2dGcubGliOyQodGNsdGs2NERpcilcbGliXHRrODZ0Zy5saWI8L3RjbHRrNjRMaWJEZWJ1Zz4KKworICA8UHJvcGVydHlHcm91cD4KKyAgICA8X0RlYnVnUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj5OREVCVUc7PC9fRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5fREVCVUc7PC9fRGVidWdQcmVwcm9jZXNzb3JEZWZpbml0aW9uPgorICAgIDxfUGxhdGZvcm1QcmVwcm9jZXNzb3JEZWZpbml0aW9uPl9XSU4zMjs8L19QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24+CisgICAgPF9QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24gQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+X1dJTjY0O19NX1g2NDs8L19QbGF0Zm9ybVByZXByb2Nlc3NvckRlZmluaXRpb24+CisgICAgPF9QeWRQcmVwcm9jZXNzb3JEZWZpbml0aW9uIENvbmRpdGlvbj0iJChUYXJnZXRFeHQpID09ICcucHlkJyI+UHlfQlVJTERfQ09SRV9NT0RVTEU7PC9fUHlkUHJlcHJvY2Vzc29yRGVmaW5pdGlvbj4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpSW5jbHVkZTskKFB5U291cmNlUGF0aClQQzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyOyQoX1BsYXRmb3JtUHJlcHJvY2Vzc29yRGVmaW5pdGlvbikkKF9EZWJ1Z1ByZXByb2Nlc3NvckRlZmluaXRpb24pJChfUHlkUHJlcHJvY2Vzc29yRGVmaW5pdGlvbiklKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICAKICAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KLSAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgogICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyAuLlxQQzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPEV4Y2VwdGlvbkhhbmRsaW5nPgotICAgICAgPC9FeGNlcHRpb25IYW5kbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxFeGNlcHRpb25IYW5kbGluZz48L0V4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgogICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KICAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+ZmFsc2U8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JChPdXREaXIpOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CkBAIC01MSw1NCArNTYsMTA1IEBACiAgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KICAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+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+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnByb3BzIGIvUENidWlsZC9weXRob24ucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVkNmQ5MgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uLnByb3BzCkBAIC0wLDAgKzEsMTUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8UGxhdGZvcm0gQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICcnIj5XaW4zMjwvUGxhdGZvcm0+CisgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgPCEtLQorICAgIFVzZSB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB2ZXJzaW9uIG9mIFZpc3VhbCBTdHVkaW8gdG8gYnVpbGQuIFRvIG92ZXJyaWRlCisgICAgdGhpcyBhbmQgYnVpbGQgd2l0aCBhbiBlYXJsaWVyIHZlcnNpb24sIHBhc3MgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwIgorICAgIChmb3IgZXhhbXBsZSkgd2hlbiBidWlsZGluZy4KKyAgICAtLT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxNCknICE9ICcnIj52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTIpJyAhPSAnJyI+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQbGF0Zm9ybVRvb2xzZXQgQ29uZGl0aW9uPSInJChQbGF0Zm9ybVRvb2xzZXQpJyA9PSAnJyBhbmQgJyQoVkNUYXJnZXRzUGF0aDExKScgIT0gJyciPnYxMTA8L1BsYXRmb3JtVG9vbHNldD4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxMCknICE9ICcnIj52MTAwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgCisgICAgPCEtLQorICAgIENvbnZpbmNpbmcgTVNWQy9NU0J1aWxkIHRvIHByZWZlciBvdXIgcGxhdGZvcm0gbmFtZXMgaXMgdG9vIGRpZmZpY3VsdCwKKyAgICBzbyB3ZSBkZWZpbmUgb3VyIG93biBjb25zdGFudCBBcmNoTmFtZSBhbmQgdXNlIHdoZXJldmVyIHdlIG5lZWQgaXQuCisgICAgLS0+CisgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyBhbmQgJChQbGF0Zm9ybSkgPT0gJ3g2NCciPmFtZDY0PC9BcmNoTmFtZT4KKyAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICcnIj53aW4zMjwvQXJjaE5hbWU+CisgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoQXJjaE5hbWUpLXBnbzwvQXJjaE5hbWU+CisgICAgCisgICAgPCEtLSBSb290IGRpcmVjdG9yeSBvZiB0aGUgcmVwb3NpdG9yeSAtLT4KKyAgICA8UHlTb3VyY2VQYXRoIENvbmRpdGlvbj0iJyQoUHlTb3VyY2VQYXRoKScgPT0gJyciPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXC4uXCkpPC9QeVNvdXJjZVBhdGg+CisgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoUHlTb3VyY2VQYXRoKSkiPiQoUHlTb3VyY2VQYXRoKVw8L1B5U291cmNlUGF0aD4KKyAgICAKKyAgICA8IS0tIERpcmVjdG9yeSB3aGVyZSBidWlsZCBvdXRwdXRzIGFyZSBwdXQgLS0+CisgICAgPEJ1aWxkUGF0aCBDb25kaXRpb249IickKFB5QnVpbGRQYXRoKScgPT0gJyciPiQoUHlTb3VyY2VQYXRoKVBDQnVpbGRcJChBcmNoTmFtZSlcPC9CdWlsZFBhdGg+CisgICAgPEJ1aWxkUGF0aCBDb25kaXRpb249IickKFB5QnVpbGRQYXRoKScgIT0gJyciPiQoUHlCdWlsZFBhdGgpPC9CdWlsZFBhdGg+CisgICAgPEJ1aWxkUGF0aCBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoQnVpbGRQYXRoKSkiPiQoQnVpbGRQYXRoKVw8L0J1aWxkUGF0aD4KKyAgICAKKyAgICA8IS0tIERpcmVjdG9yaWVzIG9mIGV4dGVybmFsIHByb2plY3RzLiB0Y2x0ayBpcyBoYW5kbGVkIGluIHRjbHRrLnByb3BzIC0tPgorICAgIDxFeHRlcm5hbHNEaXI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aChgJChQeVNvdXJjZVBhdGgpZXh0ZXJuYWxzXGApKTwvRXh0ZXJuYWxzRGlyPgorICAgIDxzcWxpdGUzRGlyPiQoRXh0ZXJuYWxzRGlyKXNxbGl0ZS0zLjguMTEuMFw8L3NxbGl0ZTNEaXI+CisgICAgPGJ6MkRpcj4kKEV4dGVybmFsc0RpciliemlwMi0xLjAuNlw8L2J6MkRpcj4KKyAgICA8bHptYURpcj4kKEV4dGVybmFsc0Rpcil4ei01LjAuNVw8L2x6bWFEaXI+CisgICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMmRcPC9vcGVuc3NsRGlyPgorICAgIDxuYXNtRGlyPiQoRXh0ZXJuYWxzRGlyKVxuYXNtLTIuMTEuMDZcPC9uYXNtRGlyPgorICAgIAorICAgIDwhLS0gU3VmZml4IGZvciBhbGwgYmluYXJpZXMgd2hlbiBidWlsZGluZyBmb3IgZGVidWcgLS0+CisgICAgPFB5RGVidWdFeHQgQ29uZGl0aW9uPSInJChQeURlYnVnRXh0KScgPT0gJycgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+X2Q8L1B5RGVidWdFeHQ+CisgICAgCisgICAgPCEtLSBGdWxsIHBhdGggb2YgdGhlIHJlc3VsdGluZyBweXRob24uZXhlIGJpbmFyeSAtLT4KKyAgICA8UHl0aG9uRXhlIENvbmRpdGlvbj0iJyQoUHl0aG9uRXhlKScgPT0gJyciPiQoQnVpbGRQYXRoKXB5dGhvbiQoUHlEZWJ1Z0V4dCkuZXhlPC9QeXRob25FeGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoT3ZlcnJpZGVWZXJzaW9uKScgPT0gJyciPgorICAgIDwhLS0KKyAgICBSZWFkIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSBJbmNsdWRlXHBhdGNobGV2ZWwuaC4gVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBzZXQ6CisgICAgCisgICAgICAgIE1ham9yVmVyc2lvbk51bWJlciAgLSAgIHRoZSAnMycgaW4gJzMuNS4yYTEnCisgICAgICAgIE1pbm9yVmVyc2lvbk51bWJlciAgLSAgIHRoZSAnNScgaW4gJzMuNS4yYTEnCisgICAgICAgIE1pY3JvVmVyc2lvbk51bWJlciAgLSAgIHRoZSAnMicgaW4gJzMuNS4yYTEnCisgICAgICAgIFJlbGVhc2VTZXJpYWwgICAgICAgLSAgIHRoZSAnMScgaW4gJzMuNS4yYTEnCisgICAgICAgIFJlbGVhc2VMZXZlbE5hbWUgICAgLSAgIHRoZSAnYTEnIGluICczLjUuMmExJworICAgICAgICBQeXRob25WZXJzaW9uTnVtYmVyIC0gICAnMy41LjInIGZvciAnMy41LjJhMScKKyAgICAgICAgUHl0aG9uVmVyc2lvbiAgICAgICAtICAgJzMuNS4yYTEnCisgICAgICAgIFB5dGhvblZlcnNpb25IZXggICAgLSAgIDB4MDMwNTAyYTEgZm9yICczLjUuMmExJworICAgICAgICBSZWxlYXNlTGV2ZWxOdW1iZXIgIC0gICAxMCBmb3IgYWxwaGEsIDExIGZvciBiZXRhLCAxMiBmb3IgUkMgKGdhbW1hKSwgYW5kIDE1IGZvciBmaW5hbAorICAgICAgICBGaWVsZDNWYWx1ZSAgICAgICAgIC0gICAyMTAxIGZvciAnMy41LjJhMScgKD09IDEwMDAqMiArIDEwKjEwICgnYScpICsgMSkKKyAgICAtLT4KKyAgICA8X1BhdGNoTGV2ZWxDb250ZW50PiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoYCQoUHlTb3VyY2VQYXRoKUluY2x1ZGVccGF0Y2hsZXZlbC5oYCkpPC9fUGF0Y2hMZXZlbENvbnRlbnQ+CisgICAgPE1ham9yVmVyc2lvbk51bWJlcj4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKF9QYXRjaExldmVsQ29udGVudCksIGBkZWZpbmVccytQWV9NQUpPUl9WRVJTSU9OXHMrKFxkKylgKS5Hcm91cHNbMV0uVmFsdWUpPC9NYWpvclZlcnNpb25OdW1iZXI+CisgICAgPE1pbm9yVmVyc2lvbk51bWJlcj4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKF9QYXRjaExldmVsQ29udGVudCksIGBkZWZpbmVccytQWV9NSU5PUl9WRVJTSU9OXHMrKFxkKylgKS5Hcm91cHNbMV0uVmFsdWUpPC9NaW5vclZlcnNpb25OdW1iZXI+CisgICAgPE1pY3JvVmVyc2lvbk51bWJlcj4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKF9QYXRjaExldmVsQ29udGVudCksIGBkZWZpbmVccytQWV9NSUNST19WRVJTSU9OXHMrKFxkKylgKS5Hcm91cHNbMV0uVmFsdWUpPC9NaWNyb1ZlcnNpb25OdW1iZXI+CisgICAgPF9SZWxlYXNlTGV2ZWw+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChfUGF0Y2hMZXZlbENvbnRlbnQpLCBgZGVmaW5lXHMrUFlfUkVMRUFTRV9MRVZFTFxzK1BZX1JFTEVBU0VfTEVWRUxfKFx3KylgKS5Hcm91cHNbMV0uVmFsdWUpPC9fUmVsZWFzZUxldmVsPgorICAgIDxSZWxlYXNlU2VyaWFsPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoX1BhdGNoTGV2ZWxDb250ZW50KSwgYGRlZmluZVxzK1BZX1JFTEVBU0VfU0VSSUFMXHMrKFxkKylgKS5Hcm91cHNbMV0uVmFsdWUpPC9SZWxlYXNlU2VyaWFsPgorICAgIDxSZWxlYXNlTGV2ZWxOdW1iZXI+MTU8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnQUxQSEEnIj4xMDwvUmVsZWFzZUxldmVsTnVtYmVyPgorICAgIDxSZWxlYXNlTGV2ZWxOdW1iZXIgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdCRVRBJyI+MTE8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnR0FNTUEnIj4xMjwvUmVsZWFzZUxldmVsTnVtYmVyPgorICAgIDxSZWxlYXNlTGV2ZWxOYW1lIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnQUxQSEEnIj5hJChSZWxlYXNlU2VyaWFsKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgICA8UmVsZWFzZUxldmVsTmFtZSBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0JFVEEnIj5iJChSZWxlYXNlU2VyaWFsKTwvUmVsZWFzZUxldmVsTmFtZT4KKyAgICA8UmVsZWFzZUxldmVsTmFtZSBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ0dBTU1BJyI+cmMkKFJlbGVhc2VTZXJpYWwpPC9SZWxlYXNlTGV2ZWxOYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKE92ZXJyaWRlVmVyc2lvbiknICE9ICcnIj4KKyAgICA8IS0tCisgICAgT3ZlcnJpZGUgdGhlIHZlcnNpb24gbnVtYmVyIHdoZW4gYnVpbGRpbmcgYnkgc3BlY2lmeWluZyBPdmVycmlkZVZlcnNpb24uCisgICAgRm9yIGV4YW1wbGU6CisgICAgCisgICAgICAgIFBDQnVpbGRcYnVpbGQuYmF0ICIvcDpPdmVycmlkZVZlcnNpb249My41LjJhMSIKKyAgICAKKyAgICBVc2UgdGhlIC1WIG9wdGlvbiB0byBjaGVjayB5b3VyIHZlcnNpb24gaXMgdmFsaWQ6CisgICAgCisgICAgICAgIFBDQnVpbGRcYnVpbGQuYmF0IC1WICIvcDpPdmVycmlkZVZlcnNpb249My41LjJhMSIKKyAgICAgICAgICBQeXRob25WZXJzaW9uTnVtYmVyOiAzLjUuMgorICAgICAgICAgIFB5dGhvblZlcnNpb246ICAgICAgIDMuNS4yYTEKKyAgICAgICAgICBQeXRob25WZXJzaW9uSGV4OiAgICAweDAzMDUwMkExCisgICAgICAgICAgRmllbGQzVmFsdWU6ICAgICAgICAgMjEwMQorICAgIAorICAgIE5vdGUgdGhhdCB0aGlzIG9ubHkgYWZmZWN0cyB0aGUgdmVyc2lvbiBudW1iZXJzIGVtYmVkZGVkIGluIHJlc291cmNlcyBhbmQKKyAgICBpbnN0YWxsZXJzLCBidXQgbm90IHN5cy52ZXJzaW9uLgorICAgIC0tPgorICAgIDxNYWpvclZlcnNpb25OdW1iZXI+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6TWF0Y2goJChPdmVycmlkZVZlcnNpb24pLCBgKFxkKylcLihcZCspXC4oXGQrKSgoYXxifHJjKShcZCkpP2ApLkdyb3Vwc1sxXS5WYWx1ZSk8L01ham9yVmVyc2lvbk51bWJlcj4KKyAgICA8TWlub3JWZXJzaW9uTnVtYmVyPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoT3ZlcnJpZGVWZXJzaW9uKSwgYChcZCspXC4oXGQrKVwuKFxkKykoKGF8YnxyYykoXGQpKT9gKS5Hcm91cHNbMl0uVmFsdWUpPC9NaW5vclZlcnNpb25OdW1iZXI+CisgICAgPE1pY3JvVmVyc2lvbk51bWJlcj4kKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpNYXRjaCgkKE92ZXJyaWRlVmVyc2lvbiksIGAoXGQrKVwuKFxkKylcLihcZCspKChhfGJ8cmMpKFxkKSk/YCkuR3JvdXBzWzNdLlZhbHVlKTwvTWljcm9WZXJzaW9uTnVtYmVyPgorICAgIDxSZWxlYXNlTGV2ZWxOYW1lPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoT3ZlcnJpZGVWZXJzaW9uKSwgYChcZCspXC4oXGQrKVwuKFxkKykoKGF8YnxyYykoXGQpKT9gKS5Hcm91cHNbNF0uVmFsdWUpPC9SZWxlYXNlTGV2ZWxOYW1lPgorICAgIDxfUmVsZWFzZUxldmVsPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoT3ZlcnJpZGVWZXJzaW9uKSwgYChcZCspXC4oXGQrKVwuKFxkKykoKGF8YnxyYykoXGQpKT9gKS5Hcm91cHNbNV0uVmFsdWUpPC9fUmVsZWFzZUxldmVsPgorICAgIDxSZWxlYXNlU2VyaWFsPiQoW1N5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9ucy5SZWdleF06Ok1hdGNoKCQoT3ZlcnJpZGVWZXJzaW9uKSwgYChcZCspXC4oXGQrKVwuKFxkKykoKGF8YnxyYykoXGQpKT9gKS5Hcm91cHNbNl0uVmFsdWUpPC9SZWxlYXNlU2VyaWFsPgorICAgIDxSZWxlYXNlU2VyaWFsIENvbmRpdGlvbj0iJyQoUmVsZWFzZVNlcmlhbCknID09ICcnIj4wPC9SZWxlYXNlU2VyaWFsPgorICAgIDxSZWxlYXNlTGV2ZWxOdW1iZXI+MTU8L1JlbGVhc2VMZXZlbE51bWJlcj4KKyAgICA8UmVsZWFzZUxldmVsTnVtYmVyIENvbmRpdGlvbj0iJChfUmVsZWFzZUxldmVsKSA9PSAnYSciPjEwPC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgICAgPFJlbGVhc2VMZXZlbE51bWJlciBDb25kaXRpb249IiQoX1JlbGVhc2VMZXZlbCkgPT0gJ2InIj4xMTwvUmVsZWFzZUxldmVsTnVtYmVyPgorICAgIDxSZWxlYXNlTGV2ZWxOdW1iZXIgQ29uZGl0aW9uPSIkKF9SZWxlYXNlTGV2ZWwpID09ICdyYyciPjEyPC9SZWxlYXNlTGV2ZWxOdW1iZXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxQeXRob25WZXJzaW9uTnVtYmVyPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpPC9QeXRob25WZXJzaW9uTnVtYmVyPgorICAgIDxQeXRob25WZXJzaW9uPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpJChSZWxlYXNlTGV2ZWxOYW1lKTwvUHl0aG9uVmVyc2lvbj4KKyAgICA8UHl0aG9uVmVyc2lvbkhleD4kKFttc2J1aWxkXTo6Qml0d2lzZU9yKAorICAgICAgICAkKFttc2J1aWxkXTo6TXVsdGlwbHkoJChNYWpvclZlcnNpb25OdW1iZXIpLCAxNjc3NzIxNikpLAorICAgICAgICAkKFttc2J1aWxkXTo6Qml0d2lzZU9yKAorICAgICAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoTWlub3JWZXJzaW9uTnVtYmVyKSwgNjU1MzYpKSwKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpCaXR3aXNlT3IoCisgICAgICAgICAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoTWljcm9WZXJzaW9uTnVtYmVyKSwgMjU2KSksCisgICAgICAgICAgICAgICAgJChbbXNidWlsZF06OkJpdHdpc2VPcigKKyAgICAgICAgICAgICAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoUmVsZWFzZUxldmVsTnVtYmVyKSwgMTYpKSwKKyAgICAgICAgICAgICAgICAgICAgJChSZWxlYXNlU2VyaWFsKQorICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICApKQorICAgICAgICApKQorICAgICkpPC9QeXRob25WZXJzaW9uSGV4PgorICAgIDxGaWVsZDNWYWx1ZT4kKFttc2J1aWxkXTo6QWRkKAorICAgICAgICAkKFJlbGVhc2VTZXJpYWwpLAorICAgICAgICAkKFttc2J1aWxkXTo6QWRkKAorICAgICAgICAgICAgJChbbXNidWlsZF06Ok11bHRpcGx5KCQoUmVsZWFzZUxldmVsTnVtYmVyKSwgMTApKSwKKyAgICAgICAgICAgICQoW21zYnVpbGRdOjpNdWx0aXBseSgkKE1pY3JvVmVyc2lvbk51bWJlciksIDEwMDApKQorICAgICAgICApKQorICAgICkpPC9GaWVsZDNWYWx1ZT4KKyAgICAKKyAgICA8IS0tIFRoZSBuYW1lIG9mIHRoZSByZXN1bHRpbmcgcHl0aG9uWFkuZGxsICh3aXRob3V0IHRoZSBleHRlbnNpb24pIC0tPgorICAgIDxQeURsbE5hbWU+cHl0aG9uJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpJChQeURlYnVnRXh0KTwvUHlEbGxOYW1lPgorCisgICAgPCEtLSBUaGUgdmVyc2lvbiBhbmQgcGxhdGZvcm0gdGFnIHRvIGluY2x1ZGUgaW4gLnB5ZCBmaWxlbmFtZXMgLS0+CisgICAgPFB5ZFRhZyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICdXaW4zMicgb3IgJChQbGF0Zm9ybSkgPT0gJ3g4NiciPi5jcCQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKS13aW4zMjwvUHlkVGFnPgorICAgIDxQeWRUYWcgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+LmNwJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpLXdpbl9hbWQ2NDwvUHlkVGFnPgorICAgIAorICAgIDwhLS0gVGhlIHZlcnNpb24gbnVtYmVyIGZvciBzeXMud2ludmVyIC0tPgorICAgIDxTeXNXaW5WZXI+JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKTwvU3lzV2luVmVyPgorICAgIDxTeXNXaW5WZXIgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAnV2luMzInIG9yICQoUGxhdGZvcm0pID09ICd4ODYnIj4kKFN5c1dpblZlciktMzI8L1N5c1dpblZlcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPCEtLSBEaXNwbGF5cyB0aGUgY2FsY3VsYXRlZCB2ZXJzaW9uIGluZm8gLS0+CisgIDxUYXJnZXQgTmFtZT0iU2hvd1ZlcnNpb25JbmZvIj4KKyAgICA8TWVzc2FnZSBJbXBvcnRhbmNlPSJoaWdoIiBUZXh0PSJQeXRob25WZXJzaW9uTnVtYmVyOiAkKFB5dGhvblZlcnNpb25OdW1iZXIpIiAvPgorICAgIDxNZXNzYWdlIEltcG9ydGFuY2U9ImhpZ2giIFRleHQ9IlB5dGhvblZlcnNpb246ICAgICAgICQoUHl0aG9uVmVyc2lvbikiIC8+CisgICAgPE1lc3NhZ2UgSW1wb3J0YW5jZT0iaGlnaCIgVGV4dD0iUHl0aG9uVmVyc2lvbkhleDogICAgMHgkKFtTeXN0ZW0uVUludDMyXTo6UGFyc2UoJChQeXRob25WZXJzaW9uSGV4KSkuVG9TdHJpbmcoYFgwOGApKSIgLz4KKyAgICA8TWVzc2FnZSBJbXBvcnRhbmNlPSJoaWdoIiBUZXh0PSJGaWVsZDNWYWx1ZTogICAgICAgICAkKEZpZWxkM1ZhbHVlKSIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qIGIvUENidWlsZC9weXRob24udmN4cHJvagppbmRleCBiZDEyNjI0Li4wYWU0ODgyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKQEAgLTM2LDQ0ICszNiwxMSBAQAogICA8L0l0ZW1Hcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgogICAgIDxQcm9qZWN0R3VpZD57QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fTwvUHJvamVjdEd1aWQ+CisgICAgPE1ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD5DbENvbXBpbGU8L01ha2VWZXJzaW9uSW5mb0JlZm9yZVRhcmdldD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+Ci0gICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgotICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgogICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CiAgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KICAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgpAQCAtODEsMjY4ICs0OCwyNCBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CiAgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KICAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+Ci0gICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uX2QuZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT40MTk0MzA0PC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+Ci0gICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+Ci0gICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+Ci0gICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8UmVzb3VyY2VDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+Ci0gICAgPC9SZXNvdXJjZUNvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgotICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+Ci0gICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgotICAgICAgPEltcG9ydExpYnJhcnk+Ci0gICAgICA8L0ltcG9ydExpYnJhcnk+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KLSAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KLSAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KLSAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxSZXNvdXJjZUNvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KLSAgICA8L1Jlc291cmNlQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+Ci0gICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KLSAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8SW1wb3J0TGlicmFyeT4KLSAgICAgIDwvSW1wb3J0TGlicmFyeT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgotICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgotICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgotICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPFJlc291cmNlQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgotICAgIDwvUmVzb3VyY2VDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KLSAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgotICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxJbXBvcnRMaWJyYXJ5PgotICAgICAgPC9JbXBvcnRMaWJyYXJ5PgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweWNvbi5pY28iIC8+CiAgIDwvSXRlbUdyb3VwPgpAQCAtMzUwLDcgKzczLDcgQEAKICAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXHB5dGhvbi5jIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgpAQCAtMzYxLDQgKzg0LDE5IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+CisgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVQeXRob25CYXQiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X0NvbnRlbnQ+QHJlbSBUaGlzIHNjcmlwdCBpbnZva2VzIHRoZSBtb3N0IHJlY2VudGx5IGJ1aWx0IFB5dGhvbiB3aXRoIGFsbCBhcmd1bWVudHMKK0ByZW0gcGFzc2VkIHRocm91Z2ggdG8gdGhlIGludGVycHJldGVyLiAgVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSB0aGUKK0ByZW0gYnVpbGQgcHJvY2VzcyBhbmQgYW55IGNoYW5nZXMgKndpbGwqIGJlIHRocm93biBhd2F5IGJ5IHRoZSBuZXh0CitAcmVtIHJlYnVpbGQuCitAcmVtIFRoaXMgaXMgb25seSBtZWFudCBhcyBhIGNvbnZlbmllbmNlIGZvciBkZXZlbG9waW5nIENQeXRob24KK0ByZW0gYW5kIHVzaW5nIGl0IG91dHNpZGUgb2YgdGhhdCBjb250ZXh0IGlzIGlsbC1hZHZpc2VkLgorQGVjaG8gUnVubmluZyAkKENvbmZpZ3VyYXRpb24pXnwkKFBsYXRmb3JtKSBpbnRlcnByZXRlci4uLgorQCIkKE91dERpcilweXRob24kKFB5RGVidWdFeHQpLmV4ZSIgJSoKKzwvX0NvbnRlbnQ+CisgICAgICA8X0V4aXN0aW5nQ29udGVudCBDb25kaXRpb249IkV4aXN0cygnJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKFB5U291cmNlUGF0aClweXRob24uYmF0JykpPC9fRXhpc3RpbmdDb250ZW50PgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKFB5U291cmNlUGF0aClweXRob24uYmF0IiBMaW5lcz0iJChfQ29udGVudCkiIE92ZXJ3cml0ZT0idHJ1ZSIgQ29uZGl0aW9uPSInJChfQ29udGVudCknICE9ICckKF9FeGlzdGluZ0NvbnRlbnQpJyIgLz4KKyAgPC9UYXJnZXQ+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCmluZGV4IGU0OTA2YTQuLjA2NjJhNGUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycworKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKQEAgLTE5LDggKzE5LDggQEAKICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5dGhvbi5jIj4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFByb2dyYW1zXHB5dGhvbi5jIj4KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qIGIvUENidWlsZC9weXRob24zZGxsLnZjeHByb2oKaW5kZXggYmM4ZmYzMS4uMThmZjRhOCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24zZGxsLnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob24zZGxsLnZjeHByb2oKQEAgLTEsNiArMSwxNCBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KICAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KICAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CkBAIC0zMCwxNDQgKzM4LDQzIEBACiAgICAgPFByb2plY3RHdWlkPns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5weXRob24zZGxsPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8VGFyZ2V0TmFtZT5weXRob24zPC9UYXJnZXROYW1lPgorICAgIDxNYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+Q2xDb21waWxlPC9NYWtlVmVyc2lvbkluZm9CZWZvcmVUYXJnZXQ+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CiAgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CiAgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgogICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KICAgPC9JbXBvcnRHcm91cD4KICAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLSIkKFZTSW5zdGFsbERpcilcVkNcYmluXG5tYWtlLmV4ZSIgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQwotIiQoVlNJbnN0YWxsRGlyKVxWQ1xiaW5cbm1ha2UuZXhlIiAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKLW5tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi1ubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCi0iJChWU0luc3RhbGxEaXIpXFZDXGJpblxubWFrZS5leGUiIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8X01hY2hpbmU+WDg2PC9fTWFjaGluZT4KKyAgICA8X01hY2hpbmUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+WDY0PC9fTWFjaGluZT4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKE91dERpcikkKFRhcmdldE5hbWUpc3R1Yi5saWI8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8TW9kdWxlRGVmaW5pdGlvbkZpbGUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pICE9ICdEZWJ1ZyciPiQoUHlTb3VyY2VQYXRoKVBDXHB5dGhvbjMuZGVmPC9Nb2R1bGVEZWZpbml0aW9uRmlsZT4KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+JChJbnREaXIpcHl0aG9uM19kLmRlZjwvTW9kdWxlRGVmaW5pdGlvbkZpbGU+CisgICAgICA8RW50cnlQb2ludFN5bWJvbD5EbGxNYWluPC9FbnRyeVBvaW50U3ltYm9sPgorICAgIDwvTGluaz4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+bGliIC9ub2xvZ28gL2RlZjoiJChJbnREaXIpcHl0aG9uM3N0dWIuZGVmIiAvb3V0OiIkKE91dERpcikkKFRhcmdldE5hbWUpc3R1Yi5saWIiIC9NQUNISU5FOiQoX01hY2hpbmUpPC9Db21tYW5kPgorICAgICAgPE1lc3NhZ2U+UmVidWlsZGluZyAkKFRhcmdldE5hbWUpc3R1Yi5saWI8L01lc3NhZ2U+CisgICAgICA8T3V0cHV0cz4kKE91dERpcikkKFRhcmdldE5hbWUpc3R1Yi5saWI8L091dHB1dHM+CisgICAgPC9QcmVMaW5rRXZlbnQ+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweXRob24zLmRlZiIgLz4KQEAgLTE4MSw0ICs4OCw1NSBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgorICAKKyAgPFRhcmdldCBOYW1lPSJCdWlsZFB5dGhvbjNfZERlZiIgQmVmb3JlVGFyZ2V0cz0iQnVpbGRTdHViRGVmIiBJbnB1dHM9Ii4uXFBDXHB5dGhvbjMuZGVmIiBPdXRwdXRzPSIkKEludERpcilweXRob24zX2QuZGVmIiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyI+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgIDxfRGVmTGluZXMgUmVtb3ZlPSJAKF9EZWZMaW5lcykiIC8+CisgICAgICA8X0xpbmVzIFJlbW92ZT0iQChfTGluZXMpIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxSZWFkTGluZXNGcm9tRmlsZSBGaWxlPSIuLlxQQ1xweXRob24zLmRlZiI+CisgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IkxpbmVzIiBJdGVtTmFtZT0iX0RlZkxpbmVzIiAvPgorICAgIDwvUmVhZExpbmVzRnJvbUZpbGU+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X1BhdHRlcm4xPig9cHl0aG9uJChNYWpvclZlcnNpb25OdW1iZXIpJChNaW5vclZlcnNpb25OdW1iZXIpKVwuPC9fUGF0dGVybjE+CisgICAgICA8X1N1YjE+JDFfZC48L19TdWIxPgorICAgICAgPF9QYXR0ZXJuMj4icHl0aG9uMyI8L19QYXR0ZXJuMj4KKyAgICAgIDxfU3ViMj4icHl0aG9uM19kIjwvX1N1YjI+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8X0xpbmVzIEluY2x1ZGU9IkAoX0RlZkxpbmVzKSI+CisgICAgICAgIDxOZXc+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6UmVwbGFjZSgkKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpSZXBsYWNlKGAlKElkZW50aXR5KWAsIGAkKF9QYXR0ZXJuMSlgLCBgJChfU3ViMSlgKSksIGAkKF9QYXR0ZXJuMilgLCBgJChfU3ViMilgKSk8L05ldz4KKyAgICAgIDwvX0xpbmVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxNYWtlRGlyIERpcmVjdG9yaWVzPSIkKEludERpcikiIC8+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChJbnREaXIpcHl0aG9uM19kLmRlZiIgTGluZXM9IkAoX0xpbmVzLT4nJShOZXcpJykiIE92ZXJ3cml0ZT0idHJ1ZSIgLz4KKyAgPC9UYXJnZXQ+CisgIAorICA8VGFyZ2V0IE5hbWU9IkJ1aWxkU3R1YkRlZiIgQmVmb3JlVGFyZ2V0cz0iUHJlTGlua0V2ZW50IiBJbnB1dHM9Ii4uXFBDXHB5dGhvbjMuZGVmIiBPdXRwdXRzPSIkKEludERpcilweXRob24zc3R1Yi5kZWYiPgorICAgIDxJdGVtR3JvdXA+CisgICAgICA8X0RlZkxpbmVzIFJlbW92ZT0iQChfRGVmTGluZXMpIiAvPgorICAgICAgPF9MaW5lcyBSZW1vdmU9IkAoX0xpbmVzKSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8UmVhZExpbmVzRnJvbUZpbGUgRmlsZT0iLi5cUENccHl0aG9uMy5kZWYiPgorICAgICAgPE91dHB1dCBUYXNrUGFyYW1ldGVyPSJMaW5lcyIgSXRlbU5hbWU9Il9EZWZMaW5lcyIgLz4KKyAgICA8L1JlYWRMaW5lc0Zyb21GaWxlPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgPF9QYXR0ZXJuPl5bXHcuXSs9Lis/XC4oW14gXSspLiokPC9fUGF0dGVybj4KKyAgICAgIDxfU3ViPiQxPC9fU3ViPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgPF9MaW5lcyBJbmNsdWRlPSJFWFBPUlRTIiAvPgorICAgICAgPF9TeW1ib2xzIEluY2x1ZGU9IkAoX0RlZkxpbmVzKSIgQ29uZGl0aW9uPSIkKFtTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnMuUmVnZXhdOjpJc01hdGNoKGAlKElkZW50aXR5KWAsIGAkKF9QYXR0ZXJuKWApKSI+CisgICAgICAgIDxTeW1ib2w+JChbU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zLlJlZ2V4XTo6UmVwbGFjZShgJShJZGVudGl0eSlgLCBgJChfUGF0dGVybilgLCBgJChfU3ViKWApKTwvU3ltYm9sPgorICAgICAgPC9fU3ltYm9scz4KKyAgICAgIDxfTGluZXMgSW5jbHVkZT0iQChfU3ltYm9scy0+JyUoU3ltYm9sKScpIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxNYWtlRGlyIERpcmVjdG9yaWVzPSIkKEludERpcikiIC8+CisgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChJbnREaXIpcHl0aG9uM3N0dWIuZGVmIiBMaW5lcz0iQChfTGluZXMpIiBPdmVyd3JpdGU9InRydWUiIC8+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+Ci0gIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IGEzYzdmYmQuLjA5YTk5NmYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTEsNDkgKzEsNTQgQEAKK1F1aWNrIFN0YXJ0IEd1aWRlDQorLS0tLS0tLS0tLS0tLS0tLS0NCisNCisxLiAgSW5zdGFsbCBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDE1LCBhbnkgZWRpdGlvbi4NCisyLiAgSW5zdGFsbCBTdWJ2ZXJzaW9uLCBhbmQgbWFrZSBzdXJlICdzdm4uZXhlJyBpcyBvbiB5b3VyIFBBVEguDQorMy4gIFJ1biAiYnVpbGQuYmF0IC1lIiB0byBidWlsZCBQeXRob24gaW4gMzItYml0IFJlbGVhc2UgY29uZmlndXJhdGlvbi4NCis0LiAgKE9wdGlvbmFsLCBidXQgcmVjb21tZW5kZWQpIFJ1biB0aGUgdGVzdCBzdWl0ZSB3aXRoICJydC5iYXQgLXEiLg0KKw0KKw0KIEJ1aWxkaW5nIFB5dGhvbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMrKw0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIFRoaXMgZGlyZWN0b3J5IGlzIHVzZWQgdG8gYnVpbGQgQ1B5dGhvbiBmb3IgTWljcm9zb2Z0IFdpbmRvd3MgTlQgdmVyc2lvbg0KLTUuMSBvciBoaWdoZXIgKFdpbmRvd3MgWFAsIFdpbmRvd3MgU2VydmVyIDIwMDMsIG9yIGxhdGVyKSBvbiAzMiBhbmQgNjQNCis2LjAgb3IgaGlnaGVyIChXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIFNlcnZlciAyMDA4LCBvciBsYXRlcikgb24gMzIgYW5kIDY0DQogYml0IHBsYXRmb3Jtcy4gIFVzaW5nIHRoaXMgZGlyZWN0b3J5IHJlcXVpcmVzIGFuIGluc3RhbGxhdGlvbiBvZg0KLU1pY3Jvc29mdCBWaXN1YWwgQysrIDIwMTAgKE1TVkMgMTAuMCkgb2YgYW55IGVkaXRpb24uICBUaGUgc3BlY2lmaWMNCitNaWNyb3NvZnQgVmlzdWFsIEMrKyAyMDE1IChNU1ZDIDE0LjApIG9mIGFueSBlZGl0aW9uLiAgVGhlIHNwZWNpZmljDQogcmVxdWlyZW1lbnRzIGFyZSBhcyBmb2xsb3dzOg0KIA0KLVZpc3VhbCBDKysgMjAxMCBFeHByZXNzIEVkaXRpb24NCi0gICAgUmVxdWlyZWQgZm9yIGJ1aWxkaW5nIDMyLWJpdCBEZWJ1ZyBhbmQgUmVsZWFzZSBjb25maWd1cmF0aW9uIGJ1aWxkcy4NCitWaXN1YWwgU3R1ZGlvIEV4cHJlc3MgMjAxNSBmb3IgRGVza3RvcA0KK1Zpc3VhbCBTdHVkaW8gUHJvZmVzc2lvbmFsIDIwMTUNCisgICAgRWl0aGVyIGVkaXRpb24gaXMgc3VmZmljaWVudCBmb3IgYnVpbGRpbmcgYWxsIGNvbmZpZ3VyYXRpb25zIGV4Y2VwdA0KKyAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uLg0KICAgICBUaGUgUHl0aG9uIGJ1aWxkIHNvbHV0aW9uIHBjYnVpbGQuc2xuIG1ha2VzIHVzZSBvZiBTb2x1dGlvbiBGb2xkZXJzLA0KICAgICB3aGljaCB0aGlzIGVkaXRpb24gZG9lcyBub3Qgc3VwcG9ydC4gIEFueSB0aW1lIHBjYnVpbGQuc2xuIGlzIG9wZW5lZA0KLSAgICBvciByZWxvYWRlZCBieSBWaXN1YWwgQysrLCBhIHdhcm5pbmcgYWJvdXQgU29sdXRpb24gRm9sZGVycyB3aWxsIGJlDQotICAgIGRpc3BsYXllZCB3aGljaCBjYW4gYmUgc2FmZWx5IGRpc21pc3NlZCB3aXRoIG5vIGltcGFjdCBvbiB5b3VyDQorICAgIG9yIHJlbG9hZGVkIGJ5IFZpc3VhbCBTdHVkaW8sIGEgd2FybmluZyBhYm91dCBTb2x1dGlvbiBGb2xkZXJzIHdpbGwNCisgICAgYmUgZGlzcGxheWVkLCB3aGljaCBjYW4gYmUgc2FmZWx5IGRpc21pc3NlZCB3aXRoIG5vIGltcGFjdCBvbiB5b3VyDQogICAgIGFiaWxpdHkgdG8gYnVpbGQgUHl0aG9uLg0KLVZpc3VhbCBTdHVkaW8gMjAxMCBQcm9mZXNzaW9uYWwgRWRpdGlvbg0KICAgICBSZXF1aXJlZCBmb3IgYnVpbGRpbmcgNjQtYml0IERlYnVnIGFuZCBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gYnVpbGRzDQotVmlzdWFsIFN0dWRpbyAyMDEwIFByZW1pdW0gRWRpdGlvbg0KK1Zpc3VhbCBTdHVkaW8gUHJlbWl1bSAyMDE1DQogICAgIFJlcXVpcmVkIGZvciBidWlsZGluZyBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gYnVpbGRzIHRoYXQgbWFrZSB1c2Ugb2YNCiAgICAgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIChQR08pLCBvbiBlaXRoZXIgcGxhdGZvcm0uDQogDQotSW5zdGFsbGluZyBTZXJ2aWNlIFBhY2sgMSBmb3IgVmlzdWFsIFN0dWRpbyAyMDEwIGlzIGhpZ2hseSByZWNvbW1lbmRlZA0KLXRvIGF2b2lkIExOSzExMjMgZXJyb3JzLg0KLQ0KIEFsbCB5b3UgbmVlZCB0byBkbyB0byBidWlsZCBpcyBvcGVuIHRoZSBzb2x1dGlvbiAicGNidWlsZC5zbG4iIGluIFZpc3VhbA0KIFN0dWRpbywgc2VsZWN0IHRoZSBkZXNpcmVkIGNvbWJpbmF0aW9uIG9mIGNvbmZpZ3VyYXRpb24gYW5kIHBsYXRmb3JtLA0KLXRoZW4gYnVpbGQgd2l0aCAiQnVpbGQgU29sdXRpb24iIG9yIHRoZSBGNyBrZXlib2FyZCBzaG9ydGN1dC4gIFlvdSBjYW4NCi1hbHNvIGJ1aWxkIGZyb20gdGhlIGNvbW1hbmQgbGluZSB1c2luZyB0aGUgImJ1aWxkLmJhdCIgc2NyaXB0IGluIHRoaXMNCi1kaXJlY3RvcnkuICBUaGUgc29sdXRpb24gaXMgY29uZmlndXJlZCB0byBidWlsZCB0aGUgcHJvamVjdHMgaW4gdGhlDQotY29ycmVjdCBvcmRlci4NCit0aGVuIGJ1aWxkIHdpdGggIkJ1aWxkIFNvbHV0aW9uIi4gIFlvdSBjYW4gYWxzbyBidWlsZCBmcm9tIHRoZSBjb21tYW5kDQorbGluZSB1c2luZyB0aGUgImJ1aWxkLmJhdCIgc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5OyBzZWUgYmVsb3cgZm9yDQorZGV0YWlscy4gIFRoZSBzb2x1dGlvbiBpcyBjb25maWd1cmVkIHRvIGJ1aWxkIHRoZSBwcm9qZWN0cyBpbiB0aGUgY29ycmVjdA0KK29yZGVyLg0KIA0KIFRoZSBzb2x1dGlvbiBjdXJyZW50bHkgc3VwcG9ydHMgdHdvIHBsYXRmb3Jtcy4gIFRoZSBXaW4zMiBwbGF0Zm9ybSBpcw0KLXVzZWQgdG8gYnVpbGQgc3RhbmRhcmQgeDg2LWNvbXBhdGlibGUgMzItYml0IGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGlzDQotZGlyZWN0b3J5LiAgVGhlIHg2NCBwbGF0Zm9ybSBpcyB1c2VkIGZvciBidWlsZGluZyA2NC1iaXQgQU1ENjQgKGFrYQ0KLXg4Nl82NCBvciBFTTY0VCkgYmluYXJpZXMsIG91dHB1dCBpbnRvIHRoZSBhbWQ2NCBzdWItZGlyZWN0b3J5IHdoaWNoDQotd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4gIFRoZSBJdGFuaXVtIChJQS02NCkNCi1wbGF0Zm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgU2VlIHRoZSAiQnVpbGRpbmcgZm9yIEFNRDY0IiBzZWN0aW9uDQotYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgNjQtYml0IGJ1aWxkcy4NCit1c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIHg4Ni1jb21wYXRpYmxlIDMyLWJpdCBiaW5hcmllcywgb3V0cHV0IGludG8gdGhlDQord2luMzIgc3ViLWRpcmVjdG9yeS4gIFRoZSB4NjQgcGxhdGZvcm0gaXMgdXNlZCBmb3IgYnVpbGRpbmcgNjQtYml0IEFNRDY0DQorKGFrYSB4ODZfNjQgb3IgRU02NFQpIGJpbmFyaWVzLCBvdXRwdXQgaW50byB0aGUgYW1kNjQgc3ViLWRpcmVjdG9yeS4NCitUaGUgSXRhbml1bSAoSUEtNjQpIHBsYXRmb3JtIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuDQogDQogRm91ciBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHN1cHBvcnRlZCBieSB0aGUgc29sdXRpb246DQogRGVidWcNCiAgICAgVXNlZCB0byBidWlsZCBQeXRob24gd2l0aCBleHRyYSBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBlcXVpdmFsZW50DQogICAgIHRvIHVzaW5nIC4vY29uZmlndXJlIC0td2l0aC1weWRlYnVnIG9uIFVOSVguICBBbGwgYmluYXJpZXMgYnVpbHQNCiAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIGhhdmUgIl9kIiBhZGRlZCB0byB0aGVpciBuYW1lOg0KLSAgICBweXRob24zNF9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQorICAgIHB5dGhvbjM1X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCiAgICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQNCiAgICAgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuICBJZiB5b3UgYXJlIGJ1aWxkaW5nIFB5dGhvbiB0byBoZWxwIHdpdGgNCiAgICAgZGV2ZWxvcG1lbnQgb2YgQ1B5dGhvbiwgeW91IHdpbGwgbW9zdCBsaWtlbHkgdXNlIHRoaXMgY29uZmlndXJhdGlvbi4NCkBAIC01MiwyOCArNTcsMzEgQEAKICAgICByZXF1aXJlcyBQcmVtaXVtIEVkaXRpb24gb2YgVmlzdWFsIFN0dWRpby4gIFNlZSB0aGUgIlByb2ZpbGUNCiAgICAgR3VpZGVkIE9wdGltaXphdGlvbiIgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIEJ1aWxkDQogICAgIG91dHB1dCBmcm9tIGVhY2ggb2YgdGhlc2UgY29uZmlndXJhdGlvbnMgbGFuZHMgaW4gaXRzIG93bg0KLSAgICBzdWItZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LiAgVGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcyBhcmUNCi0gICAgYnVpbHQgdXNpbmcgdGhlc2UgY29uZmlndXJhdGlvbnMuDQorICAgIHN1Yi1kaXJlY3Rvcnkgb2YgdGhpcyBkaXJlY3RvcnkuICBUaGUgb2ZmaWNpYWwgUHl0aG9uIHJlbGVhc2VzIG1heQ0KKyAgICBiZSBidWlsdCB1c2luZyB0aGVzZSBjb25maWd1cmF0aW9ucy4NCiBSZWxlYXNlDQogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIGFzIGl0IGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcHJvZHVjdGlvbg0KICAgICBzZXR0aW5ncywgdGhvdWdoIHdpdGhvdXQgUEdPLg0KIA0KIA0KLUxlZ2FjeSBzdXBwb3J0DQotLS0tLS0tLS0tLS0tLS0NCitCdWlsZGluZyBQeXRob24gdXNpbmcgdGhlIGJ1aWxkLmJhdCBzY3JpcHQNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQotWW91IGNhbiBmaW5kIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvIGFuZA0KLVZpc3VhbCBDKysgaW4gdGhlIFBDIGRpcmVjdG9yeS4gVGhlIGxlZ2FjeSBidWlsZCBkaXJlY3RvcmllcyBhcmUgbm8NCi1sb25nZXIgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbmQgbWF5IG5vdCB3b3JrIG91dCBvZiB0aGUgYm94Lg0KK0luIHRoaXMgZGlyZWN0b3J5IHlvdSBjYW4gZmluZCBidWlsZC5iYXQsIGEgc2NyaXB0IGRlc2lnbmVkIHRvIG1ha2UNCitidWlsZGluZyBQeXRob24gb24gV2luZG93cyBzaW1wbGVyLiAgVGhpcyBzY3JpcHQgd2lsbCB1c2UgdGhlIGVudi5iYXQNCitzY3JpcHQgdG8gZGV0ZWN0IG9uZSBvZiBWaXN1YWwgU3R1ZGlvIDIwMTUsIDIwMTMsIDIwMTIsIG9yIDIwMTAsIGFueSBvZg0KK3doaWNoIG1heSBiZSB1c2VkIHRvIGJ1aWxkIFB5dGhvbiwgdGhvdWdoIG9ubHkgVmlzdWFsIFN0dWRpbyAyMDE1IGlzDQorb2ZmaWNpYWxseSBzdXBwb3J0ZWQuDQogDQotQ3VycmVudGx5LCB0aGUgb25seSBsZWdhY3kgYnVpbGQgZGlyZWN0b3J5IGlzIFBDXFZTOS4wLCBmb3IgVmlzdWFsDQotU3R1ZGlvIDIwMDggKDkuMCkuDQorQnkgZGVmYXVsdCwgYnVpbGQuYmF0IHdpbGwgYnVpbGQgUHl0aG9uIGluIFJlbGVhc2UgY29uZmlndXJhdGlvbiBmb3INCit0aGUgMzItYml0IFdpbjMyIHBsYXRmb3JtLiAgSXQgYWNjZXB0cyBzZXZlcmFsIGFyZ3VtZW50cyB0byBjaGFuZ2UNCit0aGlzIGJlaGF2aW9yLCB0cnkgYGJ1aWxkLmJhdCAtaGAgdG8gbGVhcm4gbW9yZS4NCiANCiANCiBDIFJ1bnRpbWUNCiAtLS0tLS0tLS0NCiANCi1WaXN1YWwgU3R1ZGlvIDIwMTAgdXNlcyB2ZXJzaW9uIDEwIG9mIHRoZSBDIHJ1bnRpbWUgKE1TVkNSVDEwKS4gIFRoZQ0KK1Zpc3VhbCBTdHVkaW8gMjAxNSB1c2VzIHZlcnNpb24gMTQgb2YgdGhlIEMgcnVudGltZSAoTVNWQ1JUMTQpLiAgVGhlDQogZXhlY3V0YWJsZXMgbm8gbG9uZ2VyIHVzZSB0aGUgIlNpZGUgYnkgU2lkZSIgYXNzZW1ibGllcyB1c2VkIGluIHByZXZpb3VzDQogdmVyc2lvbnMgb2YgdGhlIGNvbXBpbGVyLiAgVGhpcyBzaW1wbGlmaWVzIGRpc3RyaWJ1dGlvbiBvZiBhcHBsaWNhdGlvbnMuDQogDQpAQCAtOTgsMTIgKzEwNiw2IEBACiAgICAgLmRsbCBhbmQgLmxpYg0KIHB5dGhvbg0KICAgICAuZXhlDQota2lsbF9weXRob24NCi0gICAga2lsbF9weXRob24uZXhlLCBhIHNtYWxsIHByb2dyYW0gZGVzaWduZWQgdG8ga2lsbCBhbnkgaW5zdGFuY2VzIG9mDQotICAgIHB5dGhvbihfZCkuZXhlIHRoYXQgYXJlIHJ1bm5pbmcgYW5kIGxpdmUgaW4gdGhlIGJ1aWxkIG91dHB1dA0KLSAgICBkaXJlY3Rvcnk7IHRoaXMgaXMgbWVhbnQgdG8gYXZvaWQgYnVpbGQgaXNzdWVzIGR1ZSB0byBsb2NrZWQgZmlsZXMNCi1tYWtlX2J1aWxkaW5mbywgbWFrZV92ZXJzaW9uaW5mbw0KLSAgICBoZWxwZXJzIHRvIHByb3ZpZGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHRoZSBidWlsZCBwcm9jZXNzDQogDQogVGhlc2Ugc3ViLXByb2plY3RzIHByb3ZpZGUgZXh0cmEgZXhlY3V0YWJsZXMgdGhhdCBhcmUgdXNlZnVsIGZvciBydW5uaW5nDQogQ1B5dGhvbiBpbiBkaWZmZXJlbnQgd2F5czoNCkBAIC0xMjEsMTQgKzEyMywxMCBAQAogICAgIHB1cnBvc2VzLCB1c2VkIGJ5IHRlc3RfY2FwaS5weQ0KIA0KIFRoZXNlIGFyZSBtaXNjZWxsYW5lb3VzIHN1Yi1wcm9qZWN0cyB0aGF0IGRvbid0IHJlYWxseSBmaXQgdGhlIG90aGVyDQotY2F0ZWdvcmllcy4gIEJ5IGRlZmF1bHQsIHRoZXNlIHByb2plY3RzIGRvIG5vdCBidWlsZCBpbiBEZWJ1Zw0KLWNvbmZpZ3VyYXRpb246DQorY2F0ZWdvcmllczoNCiBfZnJlZXplX2ltcG9ydGxpYg0KICAgICBfZnJlZXplX2ltcG9ydGxpYi5leGUsIHVzZWQgdG8gcmVnZW5lcmF0ZSBQeXRob25caW1wb3J0bGliLmggYWZ0ZXINCiAgICAgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkNCi1iZGlzdF93aW5pbnN0DQotICAgIC4uXExpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTEwLjBbLWFtZDY0XS5leGUsIHRoZSBiYXNlDQotICAgIGV4ZWN1dGFibGUgdXNlZCBieSB0aGUgZGlzdHV0aWxzIGJkaXN0X3dpbmluc3QgY29tbWFuZA0KIHB5dGhvbjNkbGwNCiAgICAgcHl0aG9uMy5kbGwsIHRoZSBQRVAgMzg0IFN0YWJsZSBBQkkgZGxsDQogeHhsaW1pdGVkDQpAQCAtMTg0LDUwICsxODIsNDkgQEAKICAgICB5b3Ugc2hvdWxkIGZpcnN0IHRyeSB0byB1cGRhdGUgTkFTTSBhbmQgZG8gYSBmdWxsIHJlYnVpbGQgb2YNCiAgICAgT3BlblNTTC4gIElmIHlvdSB1c2UgdGhlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgbWV0aG9kDQogICAgIGZvciBnZXR0aW5nIHNvdXJjZXMsIGl0IGFsc28gZG93bmxvYWRzIGEgdmVyc2lvbiBvZiBOQVNNIHdoaWNoIHRoZQ0KLSAgICBzc2wgYnVpbGQgc2NyaXB0IHdpbGwgYWRkIHRvIFBBVEguDQorICAgIGxpYmVheS9zc2xlYXkgc3ViLXByb2plY3RzIHVzZS4NCiANCi0gICAgSWYgeW91IGxpa2UgdG8gdXNlIHRoZSBvZmZpY2lhbCBzb3VyY2VzIGluc3RlYWQgb2YgdGhlIGZpbGVzIGZyb20NCi0gICAgcHl0aG9uLm9yZydzIHN1YnZlcnNpb24gcmVwb3NpdG9yeSwgUGVybCBpcyByZXF1aXJlZCB0byBidWlsZCB0aGUNCi0gICAgbmVjZXNzYXJ5IG1ha2VmaWxlcyBhbmQgYXNzZW1ibHkgZmlsZXMuICBBY3RpdmVQZXJsIGlzIGF2YWlsYWJsZQ0KLSAgICBmcm9tDQorICAgIFRoZSBsaWJlYXkvc3NsZWF5IHN1Yi1wcm9qZWN0cyBleHBlY3QgeW91ciBPcGVuU1NMIHNvdXJjZXMgdG8gaGF2ZQ0KKyAgICBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCBhbmQgYmUgcmVhZHkgdG8gYnVpbGQuICBJZiB5b3UgZ2V0IHlvdXIgc291cmNlcw0KKyAgICBmcm9tIHN2bi5weXRob24ub3JnIGFzIHN1Z2dlc3RlZCBpbiB0aGUgIkdldHRpbmcgRXh0ZXJuYWwgU291cmNlcyINCisgICAgc2VjdGlvbiBiZWxvdywgdGhlIE9wZW5TU0wgc291cmNlIHdpbGwgYWxyZWFkeSBiZSByZWFkeSB0byBnby4gIElmDQorICAgIHlvdSB3YW50IHRvIGJ1aWxkIGEgZGlmZmVyZW50IHZlcnNpb24sIHlvdSB3aWxsIG5lZWQgdG8gcnVuDQorDQorICAgICAgIFBDYnVpbGRccHJlcGFyZV9zc2wucHkgcGF0aFx0b1xvcGVuc3NsLXNvdXJjZS1kaXINCisNCisgICAgVGhhdCBzY3JpcHQgd2lsbCBwcmVwYXJlIHlvdXIgT3BlblNTTCBzb3VyY2VzIGluIHRoZSBzYW1lIHdheSB0aGF0DQorICAgIHRob3NlIGF2YWlsYWJsZSBvbiBzdm4ucHl0aG9uLm9yZyBoYXZlIGJlZW4gcHJlcGFyZWQuICBOb3RlIHRoYXQNCisgICAgUGVybCBtdXN0IGJlIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlIG9uIHlvdXIgUEFUSCB0byBjb25maWd1cmUNCisgICAgT3BlblNTTC4gIEFjdGl2ZVBlcmwgaXMgcmVjb21tZW5kZWQgYW5kIGlzIGF2YWlsYWJsZSBmcm9tDQogICAgICAgICBodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVwZXJsLw0KLSAgICBUaGUgc3ZuLnB5dGhvbi5vcmcgdmVyc2lvbiBjb250YWlucyBwcmUtYnVpbHQgbWFrZWZpbGVzIGFuZCBhc3NlbWJseQ0KLSAgICBmaWxlcy4NCiANCi0gICAgVGhlIGJ1aWxkIHByb2Nlc3MgbWFrZXMgc3VyZSB0aGF0IG5vIHBhdGVudGVkIGFsZ29yaXRobXMgYXJlDQotICAgIGluY2x1ZGVkLiAgRm9yIG5vdyBSQzUsIE1EQzIgYW5kIElERUEgYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIGJ1aWxkLg0KLSAgICBZb3UgbWF5IGhhdmUgdG8gbWFudWFsbHkgcmVtb3ZlICQoT0JKX0QpXGlfKi5vYmogZnJvbSBtc1xudC5tYWsgaWYNCi0gICAgdXNpbmcgb2ZmaWNpYWwgc291cmNlczsgdGhlIHN2bi5weXRob24ub3JnLWhvc3RlZCB2ZXJzaW9uIGlzIGFscmVhZHkNCi0gICAgZml4ZWQuDQotDQotICAgIFRoZSBzc2wudmN4cHJvaiBzdWItcHJvamVjdCBzaW1wbHkgaW52b2tlcyBQQ2J1aWxkL2J1aWxkX3NzbC5weSwNCi0gICAgd2hpY2ggbG9jYXRlcyBhbmQgYnVpbGRzIE9wZW5TU0wuDQotDQotICAgIGJ1aWxkX3NzbC5weSBhdHRlbXB0cyB0byBjYXRjaCB0aGUgbW9zdCBjb21tb24gZXJyb3JzIChzdWNoIGFzIG5vdA0KLSAgICBiZWluZyBhYmxlIHRvIGZpbmQgT3BlblNTTCBzb3VyY2VzLCBvciBub3QgYmVpbmcgYWJsZSB0byBmaW5kIGEgUGVybA0KLSAgICB0aGF0IHdvcmtzIHdpdGggT3BlblNTTCkgYW5kIGdpdmUgYSByZWFzb25hYmxlIGVycm9yIG1lc3NhZ2UuICBJZg0KLSAgICB5b3UgaGF2ZSBhIHByb2JsZW0gdGhhdCBkb2Vzbid0IHNlZW0gdG8gYmUgaGFuZGxlZCBjb3JyZWN0bHkgKGUuZy4sDQotICAgIHlvdSBrbm93IHlvdSBoYXZlIEFjdGl2ZVBlcmwgYnV0IHdlIGNhbid0IGZpbmQgaXQpLCBwbGVhc2UgdGFrZSBhDQotICAgIHBlZWsgYXQgYnVpbGRfc3NsLnB5IGFuZCBzdWdnZXN0IHBhdGNoZXMuICBOb3RlIHRoYXQgYnVpbGRfc3NsLnB5DQotICAgIHNob3VsZCBiZSBhYmxlIHRvIGJlIHJ1biBkaXJlY3RseSBmcm9tIHRoZSBjb21tYW5kLWxpbmUuDQotDQotICAgIFRoZSBzc2wgc3ViLXByb2plY3QgZG9lcyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBjbGVhbiB0aGUgT3BlblNTTA0KLSAgICBidWlsZDsgaWYgeW91IG5lZWQgdG8gcmVidWlsZCwgeW91J2xsIGhhdmUgdG8gY2xlYW4gaXQgYnkgaGFuZC4NCisgICAgVGhlIGxpYmVheSBhbmQgc3NsZWF5IHN1Yi1wcm9qZWN0cyB3aWxsIGJ1aWxkIHRoZSBtb2R1bGVzIG9mIE9wZW5TU0wNCisgICAgcmVxdWlyZWQgYnkgX3NzbCBhbmQgX2hhc2hsaWIgYW5kIG1heSBuZWVkIHRvIGJlIG1hbnVhbGx5IHVwZGF0ZWQgd2hlbg0KKyAgICB1cGdyYWRpbmcgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIE9wZW5TU0wgb3Igd2hlbiBhZGRpbmcgbmV3DQorICAgIGZ1bmN0aW9uYWxpdHkgdG8gX3NzbCBvciBfaGFzaGxpYi4gVGhleSB3aWxsIG5vdCBjbGVhbiB1cCB0aGVpciBvdXRwdXQNCisgICAgd2l0aCB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgQ2xlYW5BbGwgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCiBfc3FsaXRlMw0KICAgICBXcmFwcyBTUUxpdGUgMy44LjExLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oNCiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvDQogX3RraW50ZXINCi0gICAgV3JhcHMgdmVyc2lvbiA4LjYuMSBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCisgICAgV3JhcHMgdmVyc2lvbiA4LjYuNCBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnRjbC50ay8NCiANCi0gICAgVW5saWtlIHRoZSBvdGhlciBleHRlcm5hbCBsaWJyYXJpZXMgbGlzdGVkIGFib3ZlLCBUayBtdXN0IGJlIGJ1aWx0DQotICAgIHNlcGFyYXRlbHkgYmVmb3JlIHRoZSBfdGtpbnRlciBtb2R1bGUgY2FuIGJlIGJ1aWx0LiBUaGlzIG1lYW5zIHRoYXQNCi0gICAgYSBwcmUtYnVpbHQgVGNsL1RrIGluc3RhbGxhdGlvbiBpcyBleHBlY3RlZCBpbiAuLlxleHRlcm5hbHNcdGNsdGsNCi0gICAgKHRjbHRrNjQgZm9yIDY0LWJpdCkgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuICBTZWUgIkdldHRpbmcNCi0gICAgRXh0ZXJuYWwgU291cmNlcyIgYmVsb3cgZm9yIHRoZSBlYXNpZXN0IG1ldGhvZCB0byBlbnN1cmUgVGNsL1RrIGlzDQotICAgIGJ1aWx0Lg0KKyAgICBUa2ludGVyJ3MgZGVwZW5kZW5jaWVzIGFyZSBidWlsdCBieSB0aGUgdGNsLnZjeHByb2ogYW5kIHRrLnZjeHByb2oNCisgICAgcHJvamVjdHMuICBUaGUgdGl4LnZjeHByb2ogcHJvamVjdCBhbHNvIGJ1aWxkcyB0aGUgVGl4IGV4dGVuZGVkDQorICAgIHdpZGdldCBzZXQgZm9yIHVzZSB3aXRoIFRraW50ZXIuDQorDQorICAgIFRob3NlIHRocmVlIHByb2plY3RzIGluc3RhbGwgdGhlaXIgcmVzcGVjdGl2ZSBjb21wb25lbnRzIGluIGENCisgICAgZGlyZWN0b3J5IGFsb25nc2lkZSB0aGUgc291cmNlIGRpcmVjdG9yaWVzIGNhbGxlZCAidGNsdGsiIG9uDQorICAgIFdpbjMyIGFuZCAidGNsdGs2NCIgb24geDY0LiAgVGhleSBhbHNvIGNvcHkgdGhlIFRjbCBhbmQgVGsgRExMcw0KKyAgICBpbnRvIHRoZSBjdXJyZW50IG91dHB1dCBkaXJlY3RvcnksIHdoaWNoIHNob3VsZCBlbnN1cmUgdGhhdCBUa2ludGVyDQorICAgIGlzIGFibGUgdG8gbG9hZCBUY2wvVGsgd2l0aG91dCBoYXZpbmcgdG8gY2hhbmdlIHlvdXIgUEFUSC4NCisNCisgICAgVGhlIHRjbCwgdGssIGFuZCB0aXggc3ViLXByb2plY3RzIGRvIG5vdCBjbGVhbiB0aGVpciBidWlsZHMgd2l0aA0KKyAgICB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgaWYgeW91IG5lZWQgdG8gcmVidWlsZCwgeW91IHNob3VsZCB1c2UgdGhlDQorICAgIENsZWFuQWxsIHRhcmdldCBvciBtYW51YWxseSBkZWxldGUgdGhlaXIgYnVpbGRzLg0KIA0KIA0KIEdldHRpbmcgRXh0ZXJuYWwgU291cmNlcw0KQEAgLTIzNiwyNCArMjMzLDIxIEBACiBUaGUgbGFzdCBjYXRlZ29yeSBvZiBzdWItcHJvamVjdHMgbGlzdGVkIGFib3ZlIHdyYXAgZXh0ZXJuYWwgcHJvamVjdHMNCiBQeXRob24gZG9lc24ndCBjb250cm9sLCBhbmQgYXMgc3VjaCBhIGxpdHRsZSBtb3JlIHdvcmsgaXMgcmVxdWlyZWQgaW4NCiBvcmRlciB0byBkb3dubG9hZCB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGZvciBlYWNoIHByb2plY3QgYmVmb3JlIHRoZXkNCi1jYW4gYmUgYnVpbHQuICBUaGUgZWFzaWVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byB1c2UgdGhlIGBidWlsZC5iYXRgDQotc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5IHRvIGJ1aWxkIFB5dGhvbiwgYW5kIHBhc3MgdGhlICctZScgc3dpdGNoIHRvDQotdGVsbCBpdCB0byB1c2UgZ2V0X2V4dGVybmFscy5iYXQgdG8gZmV0Y2ggZXh0ZXJuYWwgc291cmNlcyBhbmQgYnVpbGQNCi1UY2wvVGsgYW5kIFRpeC4gIFRvIHVzZSBnZXRfZXh0ZXJuYWxzLmJhdCwgeW91J2xsIG5lZWQgdG8gaGF2ZQ0KLVN1YnZlcnNpb24gaW5zdGFsbGVkIGFuZCBzdm4uZXhlIG9uIHlvdXIgUEFUSC4gIFRoZSBzY3JpcHQgd2lsbCBmZXRjaA0KLWV4dGVybmFsIGxpYnJhcnkgc291cmNlcyBmcm9tIGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9leHRlcm5hbCBhbmQgcGxhY2UNCi10aGVtIGluIC4uXGV4dGVybmFscyAocmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkpLg0KK2NhbiBiZSBidWlsdC4gIEhvd2V2ZXIsIGEgc2ltcGxlIHNjcmlwdCBpcyBwcm92aWRlZCB0byBtYWtlIHRoaXMgYXMNCitwYWlubGVzcyBhcyBwb3NzaWJsZSwgY2FsbGVkICJnZXRfZXh0ZXJuYWxzLmJhdCIgYW5kIGxvY2F0ZWQgaW4gdGhpcw0KK2RpcmVjdG9yeS4gIFRoaXMgc2NyaXB0IGV4dHJhY3RzIGFsbCB0aGUgZXh0ZXJuYWwgc3ViLXByb2plY3RzIGZyb20NCisgICAgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsDQordmlhIFN1YnZlcnNpb24gKHNvIHlvdSdsbCBuZWVkIHN2bi5leGUgb24geW91ciBQQVRIKSBhbmQgcGxhY2VzIHRoZW0NCitpbiAuLlxleHRlcm5hbHMgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KS4NCiANCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRvd25sb2FkIHNvdXJjZXMgZnJvbSBlYWNoIHByb2plY3QncyBob21lcGFnZSwNCit0aG91Z2ggeW91IG1heSBoYXZlIHRvIGNoYW5nZSBmb2xkZXIgbmFtZXMgb3IgcGFzcyB0aGUgbmFtZXMgdG8gTVNCdWlsZA0KK2FzIHRoZSB2YWx1ZXMgb2YgY2VydGFpbiBwcm9wZXJ0aWVzIGluIG9yZGVyIGZvciB0aGUgYnVpbGQgc29sdXRpb24gdG8NCitmaW5kIHRoZW0uICBUaGlzIGlzIGFuIGFkdmFuY2VkIHRvcGljIGFuZCBub3QgbmVjZXNzYXJpbHkgZnVsbHkNCitzdXBwb3J0ZWQuDQogDQotQnVpbGRpbmcgZm9yIEFNRDY0DQotLS0tLS0tLS0tLS0tLS0tLS0tDQotDQotVGhlIGJ1aWxkIHByb2Nlc3MgZm9yIEFNRDY0IC8geDY0IGlzIHZlcnkgc2ltaWxhciB0byBzdGFuZGFyZCBidWlsZHMsDQoteW91IGp1c3QgaGF2ZSB0byBzZXQgeDY0IGFzIHBsYXRmb3JtLiBJbiBhZGRpdGlvbiwgdGhlIEhPU1RfUFlUSE9ODQotZW52aXJvbm1lbnQgdmFyaWFibGUgbXVzdCBwb2ludCB0byBhIFB5dGhvbiBpbnRlcnByZXRlciAoYXQgbGVhc3QgMi40KSwNCi10byBzdXBwb3J0IGNyb3NzLWNvbXBpbGF0aW9uIGZyb20gV2luMzIuICBOb3RlIHRoYXQgVmlzdWFsIFN0dWRpbw0KLXJlcXVpcmVzIFByb2Zlc3Npb25hbCBFZGl0aW9uIG9yIGJldHRlciBpbiBvcmRlciB0byBidWlsZCA2NC1iaXQNCi1iaW5hcmllcy4NCitUaGUgZ2V0X2V4dGVybmFscy5iYXQgc2NyaXB0IGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IGJ1aWxkLmJhdCB3aGVuDQoreW91IHBhc3MgdGhlICctZScgb3B0aW9uIHRvIGl0Lg0KIA0KIA0KIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbg0KQEAgLTI3MCw3ICsyNjQsNyBAQAogUEdJIHB5dGhvbiwgYW5kIGZpbmFsbHkgY3JlYXRlcyB0aGUgb3B0aW1pemVkIGZpbGVzLg0KIA0KIFNlZQ0KLSAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZTdrMzJmNGsoVlMuMTAwKS5hc3B4DQorICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9lN2szMmY0ayhWUy4xNDApLmFzcHgNCiBmb3IgbW9yZSBvbiB0aGlzIHRvcGljLg0KIA0KIA0KQEAgLTI4OCwyNyArMjgyLDE5IEBACiBWaXN1YWwgU3R1ZGlvIHByb3BlcnRpZXMNCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCi1UaGUgUENidWlsZCBzb2x1dGlvbiBtYWtlcyBoZWF2eSB1c2Ugb2YgVmlzdWFsIFN0dWRpbyBwcm9wZXJ0eSBmaWxlcw0KLSgqLnByb3BzKS4gVGhlIHByb3BlcnRpZXMgY2FuIGJlIHZpZXdlZCBhbmQgYWx0ZXJlZCBpbiB0aGUgUHJvcGVydHkNCi1NYW5hZ2VyIChWaWV3IC0+IE90aGVyIFdpbmRvd3MgLT4gUHJvcGVydHkgTWFuYWdlcikuDQorVGhlIFBDYnVpbGQgc29sdXRpb24gbWFrZXMgdXNlIG9mIFZpc3VhbCBTdHVkaW8gcHJvcGVydHkgZmlsZXMgKCoucHJvcHMpDQordG8gc2ltcGxpZnkgZWFjaCBwcm9qZWN0LiBUaGUgcHJvcGVydGllcyBjYW4gYmUgdmlld2VkIGluIHRoZSBQcm9wZXJ0eQ0KK01hbmFnZXIgKFZpZXcgLT4gT3RoZXIgV2luZG93cyAtPiBQcm9wZXJ0eSBNYW5hZ2VyKSBidXQgc2hvdWxkIGJlDQorY2FyZWZ1bGx5IG1vZGlmaWVkIGJ5IGhhbmQuDQogDQotVGhlIHByb3BlcnR5IGZpbGVzIHVzZWQgYXJlICgrLS0gPSAiYWxzbyBpbXBvcnRzIik6DQotICogZGVidWcgKGRlYnVnIG1hY3JvOiBfREVCVUcpDQotICogcGdpbnN0cnVtZW50IChQR08pDQotICogcGd1cGRhdGUgKFBHTykNCi0gICAgKy0tIHBnaW5zdHJ1bWVudA0KLSAqIHB5ZCAocHl0aG9uIGV4dGVuc2lvbiwgcmVsZWFzZSBidWlsZCkNCi0gICAgKy0tIHJlbGVhc2UNCi0gICAgKy0tIHB5cHJvamVjdA0KLSAqIHB5ZF9kIChweXRob24gZXh0ZW5zaW9uLCBkZWJ1ZyBidWlsZCkNCi0gICAgKy0tIGRlYnVnDQotICAgICstLSBweXByb2plY3QNCi0gKiBweXByb2plY3QgKGJhc2Ugc2V0dGluZ3MgZm9yIGFsbCBwcm9qZWN0cywgdXNlciBtYWNyb3MgbGlrZSBQeURsbE5hbWUpDQotICogcmVsZWFzZSAocmVsZWFzZSBtYWNybzogTkRFQlVHKQ0KLSAqIHNxbGl0ZTMgKHVzZWQgb25seSBieSBzcWxpdGUzLnZjeHByb2opDQotICogeDY0IChBTUQ2NCAvIHg2NCBwbGF0Zm9ybSBzcGVjaWZpYyBzZXR0aW5ncykNCitUaGUgcHJvcGVydHkgZmlsZXMgdXNlZCBhcmU6DQorICogcHl0aG9uICh2ZXJzaW9ucywgZGlyZWN0b3JpZXMgYW5kIGJ1aWxkIG5hbWVzKQ0KKyAqIHB5cHJvamVjdCAoYmFzZSBzZXR0aW5ncyBmb3IgYWxsIHByb2plY3RzKQ0KKyAqIG9wZW5zc2wgKHVzZWQgYnkgbGliZWF5IGFuZCBzc2xlYXkgcHJvamVjdHMpDQorICogdGNsdGsgKHVzZWQgYnkgX3RraW50ZXIsIHRjbCwgdGsgYW5kIHRpeCBwcm9qZWN0cykNCiANCi1UaGUgcHlwcm9qZWN0IHByb3BlcnR5IGZpbGUgZGVmaW5lcyBfV0lOMzIgYW5kIHg2NCBkZWZpbmVzIF9XSU42NCBhbmQNCi1fTV9YNjQgYWx0aG91Z2ggdGhlIG1hY3JvcyBhcmUgc2V0IGJ5IHRoZSBjb21waWxlciwgdG9vLiBUaGUgR1VJIGRvZXNuJ3QNCi1hbHdheXMga25vdyBhYm91dCB0aGUgbWFjcm9zIGFuZCBjb25mdXNlIHRoZSB1c2VyIHdpdGggZmFsc2UNCi1pbmZvcm1hdGlvbi4NCitUaGUgcHlwcm9qZWN0IHByb3BlcnR5IGZpbGUgZGVmaW5lcyBhbGwgb2YgdGhlIGJ1aWxkIHNldHRpbmdzIGZvciBlYWNoDQorcHJvamVjdCwgd2l0aCBzb21lIHByb2plY3RzIG92ZXJyaWRpbmcgY2VydGFpbiBzcGVjaWZpYyB2YWx1ZXMuIFRoZSBHVUkNCitkb2Vzbid0IGFsd2F5cyByZWZsZWN0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGFuZCBtYXkgY29uZnVzZSB0aGUgdXNlcg0KK3dpdGggZmFsc2UgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZm9yIHNldHRpbmdzIHRoYXQgYXV0b21hdGljYWxseSBhZGFwdA0KK2ZvciBkaWZmaXJlbnQgY29uZmlndXJhdGlvbnMuDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWxlYXNlLnByb3BzIGIvUENidWlsZC9yZWxlYXNlLnByb3BzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2ZlM2U0Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvcmVsZWFzZS5wcm9wcworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgotICAgIDxQeURlYnVnRXh0IC8+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXA+Ci0gICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbUdyb3VwPgotICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGVidWdFeHQiPgotICAgICAgPFZhbHVlPiQoUHlEZWJ1Z0V4dCk8L1ZhbHVlPgotICAgIDwvQnVpbGRNYWNybz4KLSAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9ydC5iYXQgYi9QQ2J1aWxkL3J0LmJhdAppbmRleCAxM2M5ZDYyLi4yZDkzYjgwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3J0LmJhdAorKysgYi9QQ2J1aWxkL3J0LmJhdApAQCAtMjgsMjUgKzI4LDI1IEBACiBzZXRsb2NhbA0KIA0KIHNldCBwY2J1aWxkPSV+ZHAwDQotc2V0IHByZWZpeD0lcGNidWlsZCUNCitzZXQgcHJlZml4PSVwY2J1aWxkJXdpbjMyXA0KIHNldCBzdWZmaXg9DQogc2V0IHFtb2RlPQ0KIHNldCBkYXNoTz0NCi1zZXQgdGNsdGs9dGNsdGsNCitzZXQgcmVncnRlc3RhcmdzPQ0KIA0KIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLU8iIChzZXQgZGFzaE89LU8pICAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiPT0iLWQiIChzZXQgc3VmZml4PV9kKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLXg2NCIgKHNldCBwcmVmaXg9JXByZWZpeCVhbWQ2NCkgJiAoc2V0IHRjbHRrPXRjbHRrNjQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSIteDY0IiAoc2V0IHByZWZpeD0lcGNidWlsZCVhbWQ2NFwpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmIE5PVCAiJTEiPT0iIiAoc2V0IHJlZ3J0ZXN0YXJncz0lcmVncnRlc3RhcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQotUEFUSCAlUEFUSCU7JXBjYnVpbGQlLi5cZXh0ZXJuYWxzXCV0Y2x0ayVcYmluDQotc2V0IGV4ZT0iJXByZWZpeCVccHl0aG9uJXN1ZmZpeCUiDQotc2V0IGNtZD0lZXhlJSAlZGFzaE8lIC1XZCAtRSAtYmIgIiVwY2J1aWxkJS4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5IiAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KK3NldCBleGU9JXByZWZpeCVweXRob24lc3VmZml4JS5leGUNCitzZXQgY21kPSIlZXhlJSIgJWRhc2hPJSAtV2QgLUUgLWJiICIlcGNidWlsZCUuLlxsaWJcdGVzdFxyZWdydGVzdC5weSIgJXJlZ3J0ZXN0YXJncyUNCiBpZiBkZWZpbmVkIHFtb2RlIGdvdG8gUW1vZGUNCiANCiBlY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4NCi0lZXhlJSAiJXBjYnVpbGQlXHJtcHljLnB5Ig0KKyIlZXhlJSIgIiVwY2J1aWxkJXJtcHljLnB5Ig0KIA0KIGVjaG8gb24NCiAlY21kJQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc2VsZWN0LnZjeHByb2ogYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qCmluZGV4IDdjMzZkNjQuLjNjZDA2OTQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc2VsZWN0LnZjeHByb2oKKysrIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpAQCAtMzcsMTg4ICszNywzMyBAQAogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPFByb2plY3RHdWlkPnsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5zZWxlY3Q8L1Jvb3ROYW1lc3BhY2U+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+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgotICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy5wcm9wcyBiL1BDYnVpbGQvc3FsaXRlMy5wcm9wcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDNlZTAyYy4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL3NxbGl0ZTMucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8UHJvcGVydHlHcm91cD4KLSAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgotICAgIDwvQ2xDb21waWxlPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagppbmRleCBkYWYwMTBkLi5iNjI0NmZhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpAQCAtMzcsMTg4ICszNywzMSBAQAogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CiAgICAgPFByb2plY3RHdWlkPntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9PC9Qcm9qZWN0R3VpZD4KICAgICA8Um9vdE5hbWVzcGFjZT5zcWxpdGUzPC9Sb290TmFtZXNwYWNlPgotICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+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+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgogICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgogICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgotICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgPC9DbENvbXBpbGU+Ci0gICAgPExpbms+Ci0gICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtMjI4LDEyICs3MSw2IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuYyIgLz4KICAgPC9JdGVtR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ia2lsbF9weXRob24udmN4cHJvaiI+Ci0gICAgICA8UHJvamVjdD57NmRlMTA3NDQtZTM5Ni00MGE1LWI0ZTItMWI2OWFhN2M4ZDMxfTwvUHJvamVjdD4KLSAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+Ci0gICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgotICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3NsLnZjeHByb2ogYi9QQ2J1aWxkL3NzbC52Y3hwcm9qCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWVhYzlhLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvc3NsLnZjeHByb2oKKysrIC9kZXYvbnVsbApAQCAtMSwyMjEgKzAsMCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgotICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KLSAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+Ci0gICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KLSAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KLSAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KLSAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgotICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+Ci0gICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgotICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+Ci0gICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KLSAgICA8UHJvamVjdEd1aWQ+e0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH08L1Byb2plY3RHdWlkPgotICAgIDxSb290TmFtZXNwYWNlPnNzbDwvUm9vdE5hbWVzcGFjZT4KLSAgICA8S2V5d29yZD5NYWtlRmlsZVByb2o8L0tleXdvcmQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgotICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgotICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+Ci0gIDxQcm9wZXJ0eUdyb3VwPgotICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgIiQoU29sdXRpb25EaXIpIgotIiQoUHl0aG9uRXhlKSIgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybSkgLWEKLTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgotICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+ZWNobyBPcGVuU1NMIG11c3QgYmUgY2xlYW5lZCBtYW51YWxseSBpZiB5b3Ugd2FudCB0byByZWJ1aWxkIGl0LjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgotICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgotICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KLSAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgotICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KLSAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCi0iJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQotPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmVjaG8gT3BlblNTTCBtdXN0IGJlIGNsZWFuZWQgbWFudWFsbHkgaWYgeW91IHdhbnQgdG8gcmVidWlsZCBpdC48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KLSAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+Ci0gICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+Ci0gICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICIkKFNvbHV0aW9uRGlyKSIKLSIkKFB5dGhvbkV4ZSkiIGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm0pIC1hCi08L05NYWtlQnVpbGRDb21tYW5kTGluZT4KLSAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5lY2hvIE9wZW5TU0wgbXVzdCBiZSBjbGVhbmVkIG1hbnVhbGx5IGlmIHlvdSB3YW50IHRvIHJlYnVpbGQgaXQuPC9OTWFrZUNsZWFuQ29tbWFuZExpbmU+Ci0gICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KLSAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+Ci0gICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgotICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KLSAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+Ci0gICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtR3JvdXA+Ci0gICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgotICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+Ci0gICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgotICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KLSAgPC9JdGVtR3JvdXA+Ci0gIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Ci0gIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+Ci0gIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zc2xlYXkudmN4cHJvaiBiL1BDYnVpbGQvc3NsZWF5LnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5ZTNhYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3NsZWF5LnZjeHByb2oKQEAgLTAsMCArMSwxMTkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5zc2xlYXk8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKworICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJvcGVuc3NsLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKworICA8SXRlbUdyb3VwPgorICAgIDwhLS0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcYmlvX3NzbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9ib3RoLmMiIC8+CisgICAgPCEtLQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX2VuYy5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxkMV9saWIuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX21ldGguYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcZDFfcGt0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX3NydHAuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXGQxX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xca3NzbC5jIiAvPgorICAgIC0tPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9jbG50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyX2VuYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9saWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfbWV0aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMl9wa3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczJfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzMjNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyM19tZXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMyM19wa3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczIzX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfYm90aC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19jYmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzM19lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcczNfcGt0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHMzX3NydnIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2FsZ3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2FzbjEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2NlcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2NpcGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX2Vyci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfZXJyMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFxzc2xfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9yc2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX3Nlc3MuYyIgLz4KKyAgICA8IS0tCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF9zdGF0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHNzbF90eHQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcc3NsX3V0c3QuYyIgLz4KKyAgICAtLT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfY2xudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0MV9lbmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfbGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKG9wZW5zc2xEaXIpc3NsXHQxX21ldGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfcmVuZWcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilzc2xcdDFfc3J2ci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKXNzbFx0bHNfc3JwLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPFRhcmdldCBOYW1lPSJDbGVhbiIgLz4KKyAgPFRhcmdldCBOYW1lPSJDbGVhbkFsbCI+CisgICAgPERlbGV0ZSBGaWxlcz0iJChUYXJnZXRQYXRoKSIgLz4KKyAgICA8UmVtb3ZlRGlyIERpcmVjdG9yaWVzPSIkKEludERpcikiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdGNsLnZjeHByb2ogYi9QQ2J1aWxkL3RjbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NGM4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3RjbC52Y3hwcm9qCkBAIC0wLDAgKzEsOTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9PC9Qcm9qZWN0R3VpZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9InRjbHRrLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPE91dERpcj4kKHRjbHRrRGlyKTwvT3V0RGlyPgorICAgIDxUYXJnZXRQYXRoPiQoT3V0RGlyKWJpblwkKHRjbERMTE5hbWUpPC9UYXJnZXRQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbUdyb3VwPgorICAgIDxFeHBlY3RlZE91dHB1dHMgSW5jbHVkZT0iCisgICAgICAgICQoT3V0RGlyKVxiaW5cJCh0Y2xETExOYW1lKTsKKyAgICAgICAgJChPdXREaXIpXGJpblwkKHRjbFNoRXhlTmFtZSk7CisgICAgICAgICQoT3V0RGlyKVxpbmNsdWRlXHRjbC5oOworICAgICAgICAkKE91dERpcilcbGliXHRjbCQoVGNsTWFqb3JWZXJzaW9uKTsKKyAgICAgICAgJChPdXREaXIpXGxpYlx0Y2wkKFRjbE1ham9yVmVyc2lvbikuJChUY2xNaW5vclZlcnNpb24pOworICAgICAgICAkKE91dERpcilcbGliXCQodGNsTGliTmFtZSkiIC8+CisgIDwvSXRlbUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGNsT3B0cz5tc3ZjcnQ8L1RjbE9wdHM+CisgICAgPFRjbE9wdHMgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdEZWJ1ZyciPnN5bWJvbHMsbXN2Y3J0PC9UY2xPcHRzPgorICAgIDxUY2xEaXJzPklOU1RBTExESVI9IiQoT3V0RGlyLlRyaW1FbmQoYFxgKSkiIElOU1RBTExfRElSPSIkKE91dERpci5UcmltRW5kKGBcYCkpIjwvVGNsRGlycz4KKyAgICA8RGVidWdGbGFncyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5ERUJVR0ZMQUdTPSItd2Q0NDU2IC13ZDQ0NTcgLXdkNDQ1OCAtd2Q0NDU5IC13ZDQ5OTYiPC9EZWJ1Z0ZsYWdzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmU+c2V0bG9jYWwKK0AoRXhwZWN0ZWRPdXRwdXRzLT4naWYgbm90IGV4aXN0ICIlKEZ1bGxQYXRoKSIgZ290byBidWlsZCcsJworJykKK2dvdG8gOmVvZgorOmJ1aWxkCitzZXQgVkNJTlNUQUxMRElSPSQoVkNJbnN0YWxsRGlyKQorY2QgL0QgIiQodGNsRGlyKXdpbiIKK25tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGNsT3B0cykgJChUY2xEaXJzKSAkKERlYnVnRmxhZ3MpIGNvcmUgc2hlbGwgZGxscworbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0kKFRjbE1hY2hpbmUpIE9QVFM9JChUY2xPcHRzKSAkKFRjbERpcnMpICQoRGVidWdGbGFncykgaW5zdGFsbC1iaW5hcmllcyBpbnN0YWxsLWxpYnJhcmllcworPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICAKKyAgPFRhcmdldCBOYW1lPSJDb3B5RGxsIiBJbnB1dHM9IiQoT3V0RGlyKVxiaW5cJCh0Y2xETExOYW1lKSIgT3V0cHV0cz0iJChCdWlsZFBhdGgpJCh0Y2xETExOYW1lKSIgQWZ0ZXJUYXJnZXRzPSJCdWlsZCI+CisgICAgPENvcHkgU291cmNlRmlsZXM9IiQoT3V0RGlyKVxiaW5cJCh0Y2xETExOYW1lKSIgRGVzdGluYXRpb25GaWxlcz0iJChCdWlsZFBhdGgpJCh0Y2xETExOYW1lKSIgLz4KKyAgPC9UYXJnZXQ+CisgIAorICA8VGFyZ2V0IE5hbWU9IkNsZWFuIiAvPgorICA8VGFyZ2V0IE5hbWU9IkNsZWFuQWxsIj4KKyAgICA8RGVsZXRlIEZpbGVzPSIkKFRhcmdldFBhdGgpOyQoQnVpbGRQYXRoKSQodGNsRExMTmFtZSkiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbHRrLnByb3BzIGIvUENidWlsZC90Y2x0ay5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTc5NGU1Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90Y2x0ay5wcm9wcwpAQCAtMCwwICsxLDQ1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRjbE1ham9yVmVyc2lvbj44PC9UY2xNYWpvclZlcnNpb24+CisgICAgPFRjbE1pbm9yVmVyc2lvbj42PC9UY2xNaW5vclZlcnNpb24+CisgICAgPFRjbFBhdGNoTGV2ZWw+NDwvVGNsUGF0Y2hMZXZlbD4KKyAgICA8VGNsUmV2aXNpb24+MjwvVGNsUmV2aXNpb24+CisgICAgPFRrTWFqb3JWZXJzaW9uPiQoVGNsTWFqb3JWZXJzaW9uKTwvVGtNYWpvclZlcnNpb24+CisgICAgPFRrTWlub3JWZXJzaW9uPiQoVGNsTWlub3JWZXJzaW9uKTwvVGtNaW5vclZlcnNpb24+CisgICAgPFRrUGF0Y2hMZXZlbD4kKFRjbFBhdGNoTGV2ZWwpPC9Ua1BhdGNoTGV2ZWw+CisgICAgPFRrUmV2aXNpb24+JChUY2xSZXZpc2lvbik8L1RrUmV2aXNpb24+CisgICAgPFRpeE1ham9yVmVyc2lvbj44PC9UaXhNYWpvclZlcnNpb24+CisgICAgPFRpeE1pbm9yVmVyc2lvbj40PC9UaXhNaW5vclZlcnNpb24+CisgICAgPFRpeFBhdGNoTGV2ZWw+MzwvVGl4UGF0Y2hMZXZlbD4KKyAgICA8VGl4UmV2aXNpb24+NjwvVGl4UmV2aXNpb24+CisgICAgPHRjbERpcj4kKEV4dGVybmFsc0Rpcil0Y2wtY29yZS0kKFRjbE1ham9yVmVyc2lvbikuJChUY2xNaW5vclZlcnNpb24pLiQoVGNsUGF0Y2hMZXZlbCkuJChUY2xSZXZpc2lvbilcPC90Y2xEaXI+CisgICAgPHRrRGlyPiQoRXh0ZXJuYWxzRGlyKXRrLSQoVGtNYWpvclZlcnNpb24pLiQoVGtNaW5vclZlcnNpb24pLiQoVGtQYXRjaExldmVsKS4kKFRrUmV2aXNpb24pXDwvdGtEaXI+CisgICAgPHRpeERpcj4kKEV4dGVybmFsc0Rpcil0aXgtJChUaXhNYWpvclZlcnNpb24pLiQoVGl4TWlub3JWZXJzaW9uKS4kKFRpeFBhdGNoTGV2ZWwpLiQoVGl4UmV2aXNpb24pXDwvdGl4RGlyPgorICAgIDx0Y2x0a0Rpcj4kKEV4dGVybmFsc0Rpcil0Y2x0a1w8L3RjbHRrRGlyPgorICAgIDx0Y2x0a0RpciBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQoRXh0ZXJuYWxzRGlyKXRjbHRrNjRcPC90Y2x0a0Rpcj4KKyAgICA8VGNsRGVidWdFeHQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+ZzwvVGNsRGVidWdFeHQ+CisgICAgPHRjbERMTE5hbWU+dGNsJChUY2xNYWpvclZlcnNpb24pJChUY2xNaW5vclZlcnNpb24pdCQoVGNsRGVidWdFeHQpLmRsbDwvdGNsRExMTmFtZT4KKyAgICA8dGNsTGliTmFtZT50Y2wkKFRjbE1ham9yVmVyc2lvbikkKFRjbE1pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliPC90Y2xMaWJOYW1lPgorICAgIDx0Y2xTaEV4ZU5hbWU+dGNsc2gkKFRjbE1ham9yVmVyc2lvbikkKFRjbE1pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkuZXhlPC90Y2xTaEV4ZU5hbWU+CisgICAgPHRrRExMTmFtZT50ayQoVGtNYWpvclZlcnNpb24pJChUa01pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkuZGxsPC90a0RMTE5hbWU+CisgICAgPHRrTGliTmFtZT50ayQoVGtNYWpvclZlcnNpb24pJChUa01pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliPC90a0xpYk5hbWU+CisgICAgPHRpeERMTE5hbWU+dGl4JChUaXhNYWpvclZlcnNpb24pJChUaXhNaW5vclZlcnNpb24pJChUY2xEZWJ1Z0V4dCkuZGxsPC90aXhETExOYW1lPgorICAgIDx0aXhETExQYXRoPiQodGNsdGtEaXIpbGliXHRpeCQoVGl4TWFqb3JWZXJzaW9uKS4kKFRpeE1pbm9yVmVyc2lvbikuJChUaXhQYXRjaExldmVsKVwkKHRpeERMTE5hbWUpPC90aXhETExQYXRoPgorICAgIDx0Y2x0a0xpYj4kKHRjbHRrRGlyKWxpYlx0Y2wkKFRjbE1ham9yVmVyc2lvbikkKFRjbE1pbm9yVmVyc2lvbil0JChUY2xEZWJ1Z0V4dCkubGliOyQodGNsdGtEaXIpbGliXHRrJChUa01ham9yVmVyc2lvbikkKFRrTWlub3JWZXJzaW9uKXQkKFRjbERlYnVnRXh0KS5saWI8L3RjbHRrTGliPgorICAgIDxUY2xNYWNoaW5lPklYODY8L1RjbE1hY2hpbmU+CisgICAgPFRjbE1hY2hpbmUgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj5BTUQ2NDwvVGNsTWFjaGluZT4KKyAgICA8VGNsVmVyc2lvbnM+VENMX01BSk9SX1ZFUlNJT049JChUY2xNYWpvclZlcnNpb24pIFRDTF9NSU5PUl9WRVJTSU9OPSQoVGNsTWlub3JWZXJzaW9uKSBUQ0xfUEFUQ0hfTEVWRUw9JChUY2xQYXRjaExldmVsKTwvVGNsVmVyc2lvbnM+CisgICAgPFRjbFNob3J0VmVyc2lvbnM+VENMX01BSk9SPSQoVGNsTWFqb3JWZXJzaW9uKSBUQ0xfTUlOT1I9JChUY2xNaW5vclZlcnNpb24pIFRDTF9QQVRDSD0kKFRjbFBhdGNoTGV2ZWwpPC9UY2xTaG9ydFZlcnNpb25zPgorICAgIDxUa1ZlcnNpb25zPlRLX01BSk9SX1ZFUlNJT049JChUa01ham9yVmVyc2lvbikgVEtfTUlOT1JfVkVSU0lPTj0kKFRrTWlub3JWZXJzaW9uKSBUS19QQVRDSF9MRVZFTD0kKFRrUGF0Y2hMZXZlbCk8L1RrVmVyc2lvbnM+CisKKyAgICA8QnVpbGREaXJUb3A+UmVsZWFzZTwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5EZWJ1ZzwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChUY2xNYWNoaW5lKSAhPSAnSVg4NiciPiQoQnVpbGREaXJUb3ApXyQoVGNsTWFjaGluZSk8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVmlzdWFsU3R1ZGlvVmVyc2lvbikgPT0gJzE0LjAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEzPC9CdWlsZERpclRvcD4KKyAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFZpc3VhbFN0dWRpb1ZlcnNpb24pID09ICcxMi4wJyI+JChCdWlsZERpclRvcClfVkMxMjwvQnVpbGREaXJUb3A+CisgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChWaXN1YWxTdHVkaW9WZXJzaW9uKSA9PSAnMTEuMCciPiQoQnVpbGREaXJUb3ApX1ZDMTE8L0J1aWxkRGlyVG9wPgorICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoVmlzdWFsU3R1ZGlvVmVyc2lvbikgPT0gJzEwLjAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEwPC9CdWlsZERpclRvcD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdGl4LnZjeHByb2ogYi9QQ2J1aWxkL3RpeC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NTdmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3RpeC52Y3hwcm9qCkBAIC0wLDAgKzEsOTIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT50aXg8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSJ0Y2x0ay5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxPdXREaXI+JCh0Y2x0a0Rpcik8L091dERpcj4KKyAgICA8VGFyZ2V0UGF0aD4kKHRpeERMTFBhdGgpPC9UYXJnZXRQYXRoPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbUdyb3VwPgorICAgIDxFeHBlY3RlZE91dHB1dHMgSW5jbHVkZT0iJChUYXJnZXRQYXRoKSIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUaXhEaXJzPkJVSUxERElSVE9QPSIkKEJ1aWxkRGlyVG9wKSIgVENMX0RJUj0iJCh0Y2xEaXIuVHJpbUVuZChgXGApKSIgVEtfRElSPSIkKHRrRGlyLlRyaW1FbmQoYFxgKSkiIElOU1RBTExfRElSPSIkKE91dERpci5UcmltRW5kKGBcYCkpIjwvVGl4RGlycz4KKyAgICA8RGVidWdGbGFncyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnRGVidWcnIj5ERUJVRz0xIE5PREVCVUc9MCBUQ0xfREJHWD1nIFRLX0RCR1g9ZzwvRGVidWdGbGFncz4KKyAgICA8RGVidWdGbGFncyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyAhPSAnRGVidWcnIj5ERUJVRz0wIE5PREVCVUc9MTwvRGVidWdGbGFncz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lPnNldGxvY2FsCitAKEV4cGVjdGVkT3V0cHV0cy0+J2lmIG5vdCBleGlzdCAiJShGdWxsUGF0aCkiIGdvdG8gYnVpbGQnLCcKKycpCitnb3RvIDplb2YKKzpidWlsZAorc2V0IFZDSU5TVEFMTERJUj0kKFZDSW5zdGFsbERpcikKK2NkIC9EICIkKHRpeERpcil3aW4iCitubWFrZSAvbm9sb2dvIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSAkKERlYnVnRmxhZ3MpICQoVGNsU2hvcnRWZXJzaW9ucykgJChUaXhEaXJzKSBhbGwgaW5zdGFsbAorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZT5ybWRpciAvcS9zICIkKE91dERpci5UcmltRW5kKGBcYCkpIjwvTk1ha2VDbGVhbkNvbW1hbmRMaW5lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InRjbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntiNWZkNmYxZC0xMjllLTRiZmYtOTM0MC0wMzYwNmZhYzcyODN9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0idGsudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57N2U4NWVjY2YtYTcyYy00ZGE0LTllNTItODg0NTA4ZTgwYmExfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorCisgIDxUYXJnZXQgTmFtZT0iQ2xlYW4iIC8+CisgIDxUYXJnZXQgTmFtZT0iQ2xlYW5BbGwiPgorICAgIDxSZW1vdmVEaXIgRGlyZWN0b3JpZXM9IiQoT3V0RGlyKSIgLz4KKyAgICA8UmVtb3ZlRGlyIERpcmVjdG9yaWVzPSIkKEludERpcikiIC8+CisgIDwvVGFyZ2V0PgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdGsudmN4cHJvaiBiL1BDYnVpbGQvdGsudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDc0OWY3Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC90ay52Y3hwcm9qCkBAIC0wLDAgKzEsOTUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT50azwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0idGNsdGsucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8T3V0RGlyPiQodGNsdGtEaXIpPC9PdXREaXI+CisgICAgPFRhcmdldFBhdGg+JChPdXREaXIpYmluXCQodGtETExOYW1lKTwvVGFyZ2V0UGF0aD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEl0ZW1Hcm91cD4KKyAgICA8RXhwZWN0ZWRPdXRwdXRzIEluY2x1ZGU9IgorICAgICAgICAkKE91dERpciliaW5cJCh0a0RMTE5hbWUpOworICAgICAgICAkKE91dERpcilpbmNsdWRlXHRrLmg7CisgICAgICAgICQoT3V0RGlyKWxpYlwkKHRrTGliTmFtZSk7CisgICAgICAgICQoT3V0RGlyKWxpYlx0ayQoVGtNYWpvclZlcnNpb24pLiQoVGtNaW5vclZlcnNpb24pIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICAKKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRrT3B0cz5tc3ZjcnQ8L1RrT3B0cz4KKyAgICA8VGtPcHRzIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIj5zeW1ib2xzLG1zdmNydDwvVGtPcHRzPgorICAgIDxUa0RpcnM+VENMRElSPSIkKHRjbERpci5UcmltRW5kKGBcYCkpIiBJTlNUQUxMRElSPSIkKE91dERpci5UcmltRW5kKGBcYCkpIjwvVGtEaXJzPgorICAgIDxEZWJ1Z0ZsYWdzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICdEZWJ1ZyciPkRFQlVHRkxBR1M9Ii13ZDQ0NTYgLXdkNDQ1NyAtd2Q0NDU4IC13ZDQ0NTkgLXdkNDk5NiI8L0RlYnVnRmxhZ3M+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZT5zZXRsb2NhbAorQChFeHBlY3RlZE91dHB1dHMtPidpZiBub3QgZXhpc3QgIiUoRnVsbFBhdGgpIiBnb3RvIGJ1aWxkJywnCisnKQorZ290byA6ZW9mCis6YnVpbGQKK3NldCBWQ0lOU1RBTExESVI9JChWQ0luc3RhbGxEaXIpCitjZCAvRCAiJCh0a0Rpcil3aW4iCitubWFrZSAvbm9sb2dvIC1mIG1ha2VmaWxlLnZjIFJDPXJjIE1BQ0hJTkU9JChUY2xNYWNoaW5lKSBPUFRTPSQoVGtPcHRzKSAkKFRrRGlycykgJChEZWJ1Z0ZsYWdzKSBhbGwKK25tYWtlIC9ub2xvZ28gLWYgbWFrZWZpbGUudmMgUkM9cmMgTUFDSElORT0kKFRjbE1hY2hpbmUpIE9QVFM9JChUa09wdHMpICQoVGtEaXJzKSAkKERlYnVnRmxhZ3MpIGluc3RhbGwtYmluYXJpZXMgaW5zdGFsbC1saWJyYXJpZXMKKzwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0idGNsLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2I1ZmQ2ZjFkLTEyOWUtNGJmZi05MzQwLTAzNjA2ZmFjNzI4M308L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIAorICA8VGFyZ2V0IE5hbWU9IkNvcHlEbGwiIElucHV0cz0iJChPdXREaXIpXGJpblwkKHRrRExMTmFtZSkiIE91dHB1dHM9IiQoQnVpbGRQYXRoKSQodGtETExOYW1lKSIgQWZ0ZXJUYXJnZXRzPSJCdWlsZCI+CisgICAgPENvcHkgU291cmNlRmlsZXM9IiQoT3V0RGlyKVxiaW5cJCh0a0RMTE5hbWUpIiBEZXN0aW5hdGlvbkZpbGVzPSIkKEJ1aWxkUGF0aCkkKHRrRExMTmFtZSkiIC8+CisgIDwvVGFyZ2V0PgorICAKKyAgPFRhcmdldCBOYW1lPSJDbGVhbiIgLz4KKyAgPFRhcmdldCBOYW1lPSJDbGVhbkFsbCI+CisgICAgPERlbGV0ZSBGaWxlcz0iJChUYXJnZXRQYXRoKTskKEJ1aWxkUGF0aCkkKHRrRExMTmFtZSkiIC8+CisgICAgPFJlbW92ZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiAvPgorICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ogYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKaW5kZXggYzlkNTI3OC4uYTMwNzFmYiAxMDA2NDQKLS0tIGEvUENidWlsZC91bmljb2RlZGF0YS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagpAQCAtMzksMTcwICszOSwzMSBAQAogICAgIDxSb290TmFtZXNwYWNlPnVuaWNvZGVkYXRhPC9Sb290TmFtZXNwYWNlPgogICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KLSAgICA8Q29uZmlndXJhdGlvblR5cGU+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+CiAgIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8TGluaz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTIwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIiAvPgpkaWZmIC0tZ2l0IGEvUENidWlsZC92czl0bzEwLnB5IGIvUENidWlsZC92czl0bzEwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjdkYWI1Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvdnM5dG8xMC5weQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSNSdW4gdGhpcyBmaWxlIGFmdGVyIGF1dG9tYXRpYyBjb252ZXJzaW9uIG9mIHRoZSBWaXN1YWxTdHVkaW8gMjAwOCBzb2x1dGlvbiBieSBWaXN1YWxTdHVkaW8gMjAxMC4KLSNUaGlzIGNhbiBiZSBkb25lIHdoZW5ldmVyIHRoZSAyMDA4IHNvbHV0aW9uIGNoYW5nZXMuCi0jSXQgd2lsbCBtYWtlIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBhbmQgdXBkYXRlcyB0byB0aGUgdmN4cHJvaiBmaWxlcwotI3RoZSAucHJvcHMgZmlsZXMgbmVlZCB0byBiZSBtYWludGFpbmVkIGJ5IGhhbmQgaWYgdGhlIC52c3Byb3BzIGZpbGVzIGNoYW5nZQotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi0KLWRlZiB2czl0bzEwKHNyYywgZGVzdCk6Ci0gICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihzcmMpOgotICAgICAgICBwYXRoLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIGV4dC5sb3dlcigpIG5vdCBpbiAoJy52Y3hwcm9qJywpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKHNyYywgbmFtZSkpCi0gICAgICAgIGRlc3RuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGVzdCwgbmFtZSkpCi0gICAgICAgIHByaW50KCIlcyAtPiAlcyIgJSAoZmlsZW5hbWUsIGRlc3RuYW1lKSkKLQotICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxhc3RsaW5lID0gYiIiCi0gICAgICAgIGltcG9ydGdyb3VwID0gRmFsc2UKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncmInKSBhcyBmaW46Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmaW46Ci0gICAgICAgICAgICAgICAgI3JlbW92ZSByZWR1bmRhbnQgbGlua2VyIG91dHB1dCBpbmZvCi0gICAgICAgICAgICAgICAgaWYgYiI8T3V0cHV0TGluZT4iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgYiI8UHJvZ3JhbURhdGFiYXNlRmlsZT4iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgYiI8SW1wb3J0TGlicmFyeT4iIGluIGxpbmUgYW5kIGIiPC9JbXBvcnRMaWJyYXJ5PiIgaW4gbGluZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICNhZGQgbmV3IHByb3BlcnR5IHNoZWV0IHRvIHRoZSBweXRob25jb3JlCi0gICAgICAgICAgICAgICAgaWYgaW1wb3J0Z3JvdXAgYW5kICJweXRob25jb3JlIiBpbiBuYW1lLmxvd2VyKCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGIiPC9JbXBvcnRHcm91cD4iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBiImRlYnVnLnByb3BzIiBpbiBsYXN0bGluZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlX2QucHJvcHMiIC8+XHJcbicpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGIicHl0aG9uY29yZSIgbm90IGluIGxhc3RsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChiJyAgICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbmNvcmUucHJvcHMiIC8+XHJcbicpCi0gICAgICAgICAgICAgICAgaWYgYiI8SW1wb3J0R3JvdXAgQ29uZGl0aW9uIiBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IFRydWUKLSAgICAgICAgICAgICAgICBlbGlmIGIiPC9JbXBvcnRHcm91cD4iIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydGdyb3VwID0gRmFsc2UKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBsYXN0bGluZSA9IGxpbmUKLSAgICAgICAgd2l0aCBvcGVuKGRlc3RuYW1lLCAnd2InKSBhcyBmb3V0OgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgZm91dC53cml0ZShsaW5lKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHNyYyA9ICIuIiBpZiBsZW4oc3lzLmFyZ3YpIDwgMiBlbHNlIHN5cy5hcmd2WzFdCi0gICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5hYnNwYXRoKHNyYykpCi0gICAgZGVzdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjLCAiLi4iLCBuYW1lICsgIlVwZCIpKQotICAgIG9zLm1ha2VkaXJzKGRlc3QpCi0gICAgdnM5dG8xMChzcmMsIGRlc3QpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3ZzOXRvOC5weSBiL1BDYnVpbGQvdnM5dG84LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjg4YTE2Li4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvdnM5dG84LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotaW1wb3J0IG9zCi0KLWRlZiB2czl0bzgoc3JjLCBkZXN0KToKLSAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKHNyYyk6Ci0gICAgICAgIHBhdGgsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgZXh0Lmxvd2VyKCkgbm90IGluICgnLnNsbicsICcudmNwcm9qJywgJy52c3Byb3BzJyk6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oc3JjLCBuYW1lKSkKLSAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkZXN0LCBuYW1lKSkKLSAgICAgICAgcHJpbnQoIiVzIC0+ICVzIiAlIChmaWxlbmFtZSwgZGVzdG5hbWUpKQotCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JVJykgYXMgZmluOgotICAgICAgICAgICAgbGluZXMgPSBmaW4ucmVhZCgpCi0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoJ1ZlcnNpb249IjksMDAiJywgJ1ZlcnNpb249IjguMDAiJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnVmVyc2lvbj0iOS4wMCInLCAnVmVyc2lvbj0iOC4wMCInKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCdGb3JtYXQgVmVyc2lvbiAxMC4wMCcsICdGb3JtYXQgVmVyc2lvbiA5LjAwJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnVmlzdWFsIFN0dWRpbyAyMDA4JywgJ1Zpc3VhbCBTdHVkaW8gMjAwNScpCi0KLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnd2luaW5zdC05LjAnLCAnd2luaW5zdC04LjAnKQotICAgICAgICAgICAgbGluZXMgPSBsaW5lcy5yZXBsYWNlKCcuLlxcJywgJy4uXFwuLlxcJykKLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnLi5cXC4uXFwuLlxcLi5cXCcsICcuLlxcLi5cXC4uXFwnKQotCi0gICAgICAgICAgICAjIEJhaC4gVlM4LjAgZG9lcyBub3QgZXhwYW5kIG1hY3JvcyBpbiBmaWxlIG5hbWVzLgotICAgICAgICAgICAgIyBSZXBsYWNlIHRoZW0gaGVyZS4KLSAgICAgICAgICAgIGxpbmVzID0gbGluZXMucmVwbGFjZSgnJChzcWxpdGUzRGlyKScsICcuLlxcLi5cXC4uXFxzcWxpdGUtMy42LjIxJykKLQotICAgICAgICB3aXRoIG9wZW4oZGVzdG5hbWUsICd3YicpIGFzIGZvdXQ6Ci0gICAgICAgICAgICBsaW5lcyA9IGxpbmVzLnJlcGxhY2UoIlxuIiwgIlxyXG4iKS5lbmNvZGUoKQotICAgICAgICAgICAgZm91dC53cml0ZShsaW5lcykKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICB2czl0bzgoc3JjPSIuIiwgZGVzdD0iLi4vUEMvVlM4LjAiKQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCmluZGV4IGNmNTE4ZTkuLjU0MDIzNWEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvagorKysgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKQEAgLTM5LDE3MCArMzksMzEgQEAKICAgICA8Um9vdE5hbWVzcGFjZT53aW5zb3VuZDwvUm9vdE5hbWVzcGFjZT4KICAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+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+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgotICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Ci0gICAgPE1pZGw+Ci0gICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KLSAgICA8L01pZGw+Ci0gICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5zb3VuZC5jIiAvPgogICA8L0l0ZW1Hcm91cD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveDY0LnByb3BzIGIvUENidWlsZC94NjQucHJvcHMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NWMwZWYuLjAwMDAwMDAKLS0tIGEvUENidWlsZC94NjQucHJvcHMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+Ci0gIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiBDb25kaXRpb249IickKEhPU1RfUFlUSE9OKSchPScnIj4KLSAgICA8UHl0aG9uRXhlPiQoSE9TVF9QWVRIT04pPC9QeXRob25FeGU+Ci0gIDwvUHJvcGVydHlHcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxCdWZmZXJTZWN1cml0eUNoZWNrPmZhbHNlPC9CdWZmZXJTZWN1cml0eUNoZWNrPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1Hcm91cD4KLSAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeXRob25FeGUiPgotICAgICAgPFZhbHVlPiQoUHl0aG9uRXhlKTwvVmFsdWU+Ci0gICAgPC9CdWlsZE1hY3JvPgotICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ogYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCmluZGV4IGFiZjQxZjkuLjAxNDRmYTkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpAQCAtMSw2ICsxLDE0IEBACiDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgogICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgogICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KQEAgLTMxLDE1OCArMzksNDQgQEAKICAgICA8Um9vdE5hbWVzcGFjZT54eGxpbWl0ZWQ8L1Jvb3ROYW1lc3BhY2U+CiAgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgogICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CiAgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KICAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgotICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+Ci0gICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KLSAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KLSAgPC9Qcm9wZXJ0eUdyb3VwPgotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgotICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+Ci0gICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KLSAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgotICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KICAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KICAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+Ci0gIDwvSW1wb3J0R3JvdXA+Ci0gIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgotICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KLSAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KLSAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KLSAgPC9JbXBvcnRHcm91cD4KLSAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgotICA8L0ltcG9ydEdyb3VwPgotICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+Ci0gICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgotICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgogICA8L0ltcG9ydEdyb3VwPgogICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgotICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KLSAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+Ci0gICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgogICA8L1Byb3BlcnR5R3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRztfV0lOMzI7X1dJTkRMTDtQeV9MSU1JVEVEX0FQST0weDAzMDQwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDUwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Ci0gICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QeV9MSU1JVEVEX0FQST0weDAzMDQwMDAwOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KLSAgICA8L0NsQ29tcGlsZT4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgotICAgIDxNaWRsPgotICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+Ci0gICAgPC9NaWRsPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+Ci0gICAgPC9MaW5rPgotICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Ci0gIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KLSAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0xJTUlURURfQVBJPTB4MDMwNDAwMDA7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgotICAgIDwvQ2xDb21waWxlPgotICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KLSAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KLSAgICA8L0xpbms+Ci0gIDwvSXRlbURlZmluaXRpb25Hcm91cD4KLSAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KLSAgICA8TWlkbD4KLSAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgotICAgIDwvTWlkbD4KLSAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+Ci0gICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+Ci0gICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgotICAgIDwvTGluaz4KLSAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyIgLz4KICAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uM2RsbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns4ODVkNDg5OC1kMDhkLTQwOTEtOWM0MC1jNzAwY2ZlM2ZjNWF9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+CmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggZGViZDg5ZS4uY2QwODMyZCAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtOSwxMyArOSwxNCBAQAogICAgICAgICAtLSBub3QgcmVhbGx5IGFuIGFjdHVhbCBub2RlIGJ1dCB1c2VmdWwgaW4gSnl0aG9uJ3MgdHlwZXN5c3RlbS4KICAgICAgICAgfCBTdWl0ZShzdG10KiBib2R5KQogCi0gICAgc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMpCi0gICAgICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIAorICAgIHN0bXQgPSBGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50cyBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBzdG10KiBib2R5LCBleHByKiBkZWNvcmF0b3JfbGlzdCwgZXhwcj8gcmV0dXJucykKKyAgICAgICAgICB8IEFzeW5jRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMpCisKKyAgICAgICAgICB8IENsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwKICAgICAgICAgICAgICBleHByKiBiYXNlcywKICAgICAgICAgICAgICBrZXl3b3JkKiBrZXl3b3JkcywKLSAgICAgICAgICAgICBleHByPyBzdGFyYXJncywKLSAgICAgICAgICAgICBleHByPyBrd2FyZ3MsCiAgICAgICAgICAgICAgc3RtdCogYm9keSwKICAgICAgICAgICAgICBleHByKiBkZWNvcmF0b3JfbGlzdCkKICAgICAgICAgICB8IFJldHVybihleHByPyB2YWx1ZSkKQEAgLTI2LDkgKzI3LDExIEBACiAKICAgICAgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCiAgICAgICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgQXN5bmNGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQogICAgICAgICAgIHwgV2hpbGUoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCiAgICAgICAgICAgfCBJZihleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKICAgICAgICAgICB8IFdpdGgod2l0aGl0ZW0qIGl0ZW1zLCBzdG10KiBib2R5KQorICAgICAgICAgIHwgQXN5bmNXaXRoKHdpdGhpdGVtKiBpdGVtcywgc3RtdCogYm9keSkKIAogICAgICAgICAgIHwgUmFpc2UoZXhwcj8gZXhjLCBleHByPyBjYXVzZSkKICAgICAgICAgICB8IFRyeShzdG10KiBib2R5LCBleGNlcHRoYW5kbGVyKiBoYW5kbGVycywgc3RtdCogb3JlbHNlLCBzdG10KiBmaW5hbGJvZHkpCkBAIC01OSwxMyArNjIsMTMgQEAKICAgICAgICAgIHwgRGljdENvbXAoZXhwciBrZXksIGV4cHIgdmFsdWUsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCiAgICAgICAgICB8IEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKICAgICAgICAgIC0tIHRoZSBncmFtbWFyIGNvbnN0cmFpbnMgd2hlcmUgeWllbGQgZXhwcmVzc2lvbnMgY2FuIG9jY3VyCisgICAgICAgICB8IEF3YWl0KGV4cHIgdmFsdWUpCiAgICAgICAgICB8IFlpZWxkKGV4cHI/IHZhbHVlKQogICAgICAgICAgfCBZaWVsZEZyb20oZXhwciB2YWx1ZSkKICAgICAgICAgIC0tIG5lZWQgc2VxdWVuY2VzIGZvciBjb21wYXJlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KICAgICAgICAgIC0tIHggPCA0IDwgMyBhbmQgKHggPCA0KSA8IDMKICAgICAgICAgIHwgQ29tcGFyZShleHByIGxlZnQsIGNtcG9wKiBvcHMsIGV4cHIqIGNvbXBhcmF0b3JzKQotICAgICAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMsCi0gICAgICAgICAgICAgZXhwcj8gc3RhcmFyZ3MsIGV4cHI/IGt3YXJncykKKyAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzKQogICAgICAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCiAgICAgICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPwogICAgICAgICAgfCBCeXRlcyhieXRlcyBzKQpAQCAtNzcsNyArODAsNyBAQAogICAgICAgICAgfCBTdWJzY3JpcHQoZXhwciB2YWx1ZSwgc2xpY2Ugc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgICAgICB8IFN0YXJyZWQoZXhwciB2YWx1ZSwgZXhwcl9jb250ZXh0IGN0eCkKICAgICAgICAgIHwgTmFtZShpZGVudGlmaWVyIGlkLCBleHByX2NvbnRleHQgY3R4KQotICAgICAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpIAorICAgICAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCiAgICAgICAgICB8IFR1cGxlKGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpCiAKICAgICAgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCkBAIC04NSwxMyArODgsMTMgQEAKIAogICAgIGV4cHJfY29udGV4dCA9IExvYWQgfCBTdG9yZSB8IERlbCB8IEF1Z0xvYWQgfCBBdWdTdG9yZSB8IFBhcmFtCiAKLSAgICBzbGljZSA9IFNsaWNlKGV4cHI/IGxvd2VyLCBleHByPyB1cHBlciwgZXhwcj8gc3RlcCkgCi0gICAgICAgICAgfCBFeHRTbGljZShzbGljZSogZGltcykgCi0gICAgICAgICAgfCBJbmRleChleHByIHZhbHVlKSAKKyAgICBzbGljZSA9IFNsaWNlKGV4cHI/IGxvd2VyLCBleHByPyB1cHBlciwgZXhwcj8gc3RlcCkKKyAgICAgICAgICB8IEV4dFNsaWNlKHNsaWNlKiBkaW1zKQorICAgICAgICAgIHwgSW5kZXgoZXhwciB2YWx1ZSkKIAotICAgIGJvb2xvcCA9IEFuZCB8IE9yIAorICAgIGJvb2xvcCA9IEFuZCB8IE9yCiAKLSAgICBvcGVyYXRvciA9IEFkZCB8IFN1YiB8IE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQgCisgICAgb3BlcmF0b3IgPSBBZGQgfCBTdWIgfCBNdWx0IHwgTWF0TXVsdCB8IERpdiB8IE1vZCB8IFBvdyB8IExTaGlmdAogICAgICAgICAgICAgICAgICB8IFJTaGlmdCB8IEJpdE9yIHwgQml0WG9yIHwgQml0QW5kIHwgRmxvb3JEaXYKIAogICAgIHVuYXJ5b3AgPSBJbnZlcnQgfCBOb3QgfCBVQWRkIHwgVVN1YgpAQCAtMTA5LDggKzExMiw4IEBACiAgICAgYXJnID0gKGlkZW50aWZpZXIgYXJnLCBleHByPyBhbm5vdGF0aW9uKQogICAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAotICAgIC0tIGtleXdvcmQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIGNhbGwKLSAgICBrZXl3b3JkID0gKGlkZW50aWZpZXIgYXJnLCBleHByIHZhbHVlKQorICAgIC0tIGtleXdvcmQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIGNhbGwgKE5VTEwgaWRlbnRpZmllciBmb3IgKiprd2FyZ3MpCisgICAga2V5d29yZCA9IChpZGVudGlmaWVyPyBhcmcsIGV4cHIgdmFsdWUpCiAKICAgICAtLSBpbXBvcnQgbmFtZSB3aXRoIG9wdGlvbmFsICdhcycgYWxpYXMuCiAgICAgYWxpYXMgPSAoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyPyBhc25hbWUpCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbC5weSBiL1BhcnNlci9hc2RsLnB5CmluZGV4IGZjMWIxNmMuLjEyMWNkYWIgMTAwNjQ0Ci0tLSBhL1BhcnNlci9hc2RsLnB5CisrKyBiL1BhcnNlci9hc2RsLnB5CkBAIC0xLDI1NSArMSw1MiBAQAotIiIiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIFplcGh5ciBBYnN0cmFjdCBTeW50YXggRGVmaW5pdGlvbiBMYW5ndWFnZS4KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBhcnNlciBmb3IgQVNETCBbMV0gZGVmaW5pdGlvbiBmaWxlcy4gUmVhZHMgaW4gYW4gQVNETCBkZXNjcmlwdGlvbiBhbmQgcGFyc2VzCisjIGl0IGludG8gYW4gQVNUIHRoYXQgZGVzY3JpYmVzIGl0LgorIworIyBUaGUgRUJORiB3ZSdyZSBwYXJzaW5nIGhlcmU6IEZpZ3VyZSAxIG9mIHRoZSBwYXBlciBbMV0uIEV4dGVuZGVkIHRvIHN1cHBvcnQKKyMgbW9kdWxlcyBhbmQgYXR0cmlidXRlcyBhZnRlciBhIHByb2R1Y3QuIFdvcmRzIHN0YXJ0aW5nIHdpdGggQ2FwaXRhbCBsZXR0ZXJzCisjIGFyZSB0ZXJtaW5hbHMuIExpdGVyYWwgdG9rZW5zIGFyZSBpbiAiZG91YmxlIHF1b3RlcyIuIE90aGVycyBhcmUKKyMgbm9uLXRlcm1pbmFscy4gSWQgaXMgZWl0aGVyIFRva2VuSWQgb3IgQ29uc3RydWN0b3JJZC4KKyMKKyMgbW9kdWxlICAgICAgICA6Oj0gIm1vZHVsZSIgSWQgInsiIFtkZWZpbml0aW9uc10gIn0iCisjIGRlZmluaXRpb25zICAgOjo9IHsgVHlwZUlkICI9IiB0eXBlIH0KKyMgdHlwZSAgICAgICAgICA6Oj0gcHJvZHVjdCB8IHN1bQorIyBwcm9kdWN0ICAgICAgIDo6PSBmaWVsZHMgWyJhdHRyaWJ1dGVzIiBmaWVsZHNdCisjIGZpZWxkcyAgICAgICAgOjo9ICIoIiB7IGZpZWxkLCAiLCIgfSBmaWVsZCAiKSIKKyMgZmllbGQgICAgICAgICA6Oj0gVHlwZUlkIFsiPyIgfCAiKiJdIFtJZF0KKyMgc3VtICAgICAgICAgICA6Oj0gY29uc3RydWN0b3IgeyAifCIgY29uc3RydWN0b3IgfSBbImF0dHJpYnV0ZXMiIGZpZWxkc10KKyMgY29uc3RydWN0b3IgICA6Oj0gQ29uc3RydWN0b3JJZCBbZmllbGRzXQorIworIyBbMV0gIlRoZSBaZXBoeXIgQWJzdHJhY3QgU3ludGF4IERlc2NyaXB0aW9uIExhbmd1YWdlIiBieSBXYW5nLCBldC4gYWwuIFNlZQorIyAgICAgaHR0cDovL2FzZGwuc291cmNlZm9yZ2UubmV0LworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2ltcG9ydCByZQogCi1TZWUgaHR0cDovL2FzZGwuc291cmNlZm9yZ2UubmV0LyBhbmQKLWh0dHA6Ly93d3cuY3MucHJpbmNldG9uLmVkdS9yZXNlYXJjaC90ZWNocmVwcy9UUi01NTQtOTcKK19fYWxsX18gPSBbCisgICAgJ2J1aWx0aW5fdHlwZXMnLCAncGFyc2UnLCAnQVNUJywgJ01vZHVsZScsICdUeXBlJywgJ0NvbnN0cnVjdG9yJywKKyAgICAnRmllbGQnLCAnU3VtJywgJ1Byb2R1Y3QnLCAnVmlzaXRvckJhc2UnLCAnQ2hlY2snLCAnY2hlY2snXQogCi1Pbmx5IHN1cHBvcnRzIHRvcCBsZXZlbCBtb2R1bGUgZGVjbCwgbm90IHZpZXcuICBJJ20gZ3Vlc3NpbmcgdGhhdCB2aWV3Ci1pcyBpbnRlbmRlZCB0byBzdXBwb3J0IHRoZSBicm93c2VyIGFuZCBJJ20gbm90IGludGVyZXN0ZWQgaW4gdGhlCi1icm93c2VyLgorIyBUaGUgZm9sbG93aW5nIGNsYXNzZXMgZGVmaW5lIG5vZGVzIGludG8gd2hpY2ggdGhlIEFTREwgZGVzY3JpcHRpb24gaXMgcGFyc2VkLgorIyBOb3RlOiB0aGlzIGlzIGEgIm1ldGEtQVNUIi4gQVNETCBmaWxlcyAoc3VjaCBhcyBQeXRob24uYXNkbCkgZGVzY3JpYmUgdGhlIEFTVAorIyBzdHJ1Y3R1cmUgdXNlZCBieSBhIHByb2dyYW1taW5nIGxhbmd1YWdlLiBCdXQgQVNETCBmaWxlcyB0aGVtc2VsdmVzIG5lZWQgdG8gYmUKKyMgcGFyc2VkLiBUaGlzIG1vZHVsZSBwYXJzZXMgQVNETCBmaWxlcyBhbmQgdXNlcyBhIHNpbXBsZSBBU1QgdG8gcmVwcmVzZW50IHRoZW0uCisjIFNlZSB0aGUgRUJORiBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljYWwgY29ubmVjdGlvbgorIyBiZXR3ZWVuIHRoZSB2YXJpb3VzIG5vZGUgdHlwZXMuCiAKLUNoYW5nZXMgZm9yIFB5dGhvbjogQWRkIHN1cHBvcnQgZm9yIG1vZHVsZSB2ZXJzaW9ucwotIiIiCitidWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbid9CiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRyYWNlYmFjawotCi1pbXBvcnQgc3BhcmsKLQotZGVmIG91dHB1dCgqc3RyaW5ncyk6Ci0gICAgZm9yIHMgaW4gc3RyaW5nczoKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzdHIocykgKyAiXG4iKQotCi0KLWNsYXNzIFRva2VuKG9iamVjdCk6Ci0gICAgIyBzcGFyayBzZWVtcyB0byBkaXNwYXRjaCBpbiB0aGUgcGFyc2VyIGJhc2VkIG9uIGEgdG9rZW4ncwotICAgICMgdHlwZSBhdHRyaWJ1dGUKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdHlwZSwgbGluZW5vKToKLSAgICAgICAgc2VsZi50eXBlID0gdHlwZQotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnR5cGUKLQorY2xhc3MgQVNUOgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmKQotCi1jbGFzcyBJZChUb2tlbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlLCBsaW5lbm8pOgotICAgICAgICBzZWxmLnR5cGUgPSAnSWQnCi0gICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnZhbHVlCi0KLWNsYXNzIFN0cmluZyhUb2tlbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlLCBsaW5lbm8pOgotICAgICAgICBzZWxmLnR5cGUgPSAnU3RyaW5nJwotICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKLSAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KLQotY2xhc3MgQVNETFN5bnRheEVycm9yKEV4Y2VwdGlvbik6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZW5vLCB0b2tlbj1Ob25lLCBtc2c9Tm9uZSk6Ci0gICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCi0gICAgICAgIHNlbGYudG9rZW4gPSB0b2tlbgotICAgICAgICBzZWxmLm1zZyA9IG1zZwotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubXNnIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIkVycm9yIGF0ICclcycsIGxpbmUgJWQiICUgKHNlbGYudG9rZW4sIHNlbGYubGluZW5vKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICIlcywgbGluZSAlZCIgJSAoc2VsZi5tc2csIHNlbGYubGluZW5vKQotCi1jbGFzcyBBU0RMU2Nhbm5lcihzcGFyay5HZW5lcmljU2Nhbm5lciwgb2JqZWN0KToKLQotICAgIGRlZiB0b2tlbml6ZShzZWxmLCBpbnB1dCk6Ci0gICAgICAgIHNlbGYucnYgPSBbXQotICAgICAgICBzZWxmLmxpbmVubyA9IDEKLSAgICAgICAgc3VwZXIoQVNETFNjYW5uZXIsIHNlbGYpLnRva2VuaXplKGlucHV0KQotICAgICAgICByZXR1cm4gc2VsZi5ydgotCi0gICAgZGVmIHRfaWQoc2VsZiwgcyk6Ci0gICAgICAgIHIiW1x3XC5dKyIKLSAgICAgICAgIyBYWFggZG9lc24ndCBkaXN0aW5ndWlzaCB1cHBlciB2cy4gbG93ZXIsIHdoaWNoIGlzCi0gICAgICAgICMgc2lnbmlmaWNhbnQgZm9yIEFTREwuCi0gICAgICAgIHNlbGYucnYuYXBwZW5kKElkKHMsIHNlbGYubGluZW5vKSkKLQotICAgIGRlZiB0X3N0cmluZyhzZWxmLCBzKToKLSAgICAgICAgciciW14iXSoiJwotICAgICAgICBzZWxmLnJ2LmFwcGVuZChTdHJpbmcocywgc2VsZi5saW5lbm8pKQotCi0gICAgZGVmIHRfeHh4KHNlbGYsIHMpOiAjIG5vdCBzdXJlIHdoYXQgdGhpcyBwcm9kdWN0aW9uIG1lYW5zCi0gICAgICAgIHIiPD0iCi0gICAgICAgIHNlbGYucnYuYXBwZW5kKFRva2VuKHMsIHNlbGYubGluZW5vKSkKLQotICAgIGRlZiB0X3B1bmN0dWF0aW9uKHNlbGYsIHMpOgotICAgICAgICByIltce1x9XCpcPVx8XChcKVwsXD9cOl0iCi0gICAgICAgIHNlbGYucnYuYXBwZW5kKFRva2VuKHMsIHNlbGYubGluZW5vKSkKLQotICAgIGRlZiB0X2NvbW1lbnQoc2VsZiwgcyk6Ci0gICAgICAgIHIiXC1cLVteXG5dKiIKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRfbmV3bGluZShzZWxmLCBzKToKLSAgICAgICAgciJcbiIKLSAgICAgICAgc2VsZi5saW5lbm8gKz0gMQotCi0gICAgZGVmIHRfd2hpdGVzcGFjZShzZWxmLCBzKToKLSAgICAgICAgciJbIFx0XSsiCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0X2RlZmF1bHQoc2VsZiwgcyk6Ci0gICAgICAgIHIiIC4gKyIKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5tYXRjaGVkIGlucHV0OiAlciIgJSBzKQotCi1jbGFzcyBBU0RMUGFyc2VyKHNwYXJrLkdlbmVyaWNQYXJzZXIsIG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzdXBlcihBU0RMUGFyc2VyLCBzZWxmKS5fX2luaXRfXygibW9kdWxlIikKLQotICAgIGRlZiB0eXBlc3RyaW5nKHNlbGYsIHRvayk6Ci0gICAgICAgIHJldHVybiB0b2sudHlwZQotCi0gICAgZGVmIGVycm9yKHNlbGYsIHRvayk6Ci0gICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcih0b2subGluZW5vLCB0b2spCi0KLSAgICBkZWYgcF9tb2R1bGVfMChzZWxmLCBpbmZvKToKLSAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgfSAiCi0gICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIF8xID0gaW5mbwotICAgICAgICBpZiBtb2R1bGUudmFsdWUgIT0gIm1vZHVsZSI6Ci0gICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IobW9kdWxlLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICdtb2R1bGUnLCBmb3VuZCAlcyIgJSBtb2R1bGUpCi0gICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgTm9uZSkKLQotICAgIGRlZiBwX21vZHVsZShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHsgZGVmaW5pdGlvbnMgfSAiCi0gICAgICAgIG1vZHVsZSwgbmFtZSwgXzAsIGRlZmluaXRpb25zLCBfMSA9IGluZm8KLSAgICAgICAgaWYgbW9kdWxlLnZhbHVlICE9ICJtb2R1bGUiOgotICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKG1vZHVsZS5saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAnbW9kdWxlJywgZm91bmQgJXMiICUgbW9kdWxlKQotICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIGRlZmluaXRpb25zKQotCi0gICAgZGVmIHBfZGVmaW5pdGlvbl8wKHNlbGYsIGRlZmluaXRpb24pOgotICAgICAgICAiIGRlZmluaXRpb25zIDo6PSBkZWZpbml0aW9uICIKLSAgICAgICAgcmV0dXJuIGRlZmluaXRpb25bMF0KLQotICAgIGRlZiBwX2RlZmluaXRpb25fMShzZWxmLCBkZWZpbml0aW9ucyk6Ci0gICAgICAgICIgZGVmaW5pdGlvbnMgOjo9IGRlZmluaXRpb24gZGVmaW5pdGlvbnMgIgotICAgICAgICByZXR1cm4gZGVmaW5pdGlvbnNbMF0gKyBkZWZpbml0aW9uc1sxXQotCi0gICAgZGVmIHBfZGVmaW5pdGlvbihzZWxmLCBpbmZvKToKLSAgICAgICAgIiBkZWZpbml0aW9uIDo6PSBJZCA9IHR5cGUgIgotICAgICAgICBpZCwgXywgdHlwZSA9IGluZm8KLSAgICAgICAgcmV0dXJuIFtUeXBlKGlkLCB0eXBlKV0KLQotICAgIGRlZiBwX3R5cGVfMChzZWxmLCBwcm9kdWN0KToKLSAgICAgICAgIiB0eXBlIDo6PSBwcm9kdWN0ICIKLSAgICAgICAgcmV0dXJuIHByb2R1Y3RbMF0KLQotICAgIGRlZiBwX3R5cGVfMShzZWxmLCBzdW0pOgotICAgICAgICAiIHR5cGUgOjo9IHN1bSAiCi0gICAgICAgIHJldHVybiBTdW0oc3VtWzBdKQotCi0gICAgZGVmIHBfdHlwZV8yKHNlbGYsIGluZm8pOgotICAgICAgICAiIHR5cGUgOjo9IHN1bSBJZCAoIGZpZWxkcyApICIKLSAgICAgICAgc3VtLCBpZCwgXzAsIGF0dHJpYnV0ZXMsIF8xID0gaW5mbwotICAgICAgICBpZiBpZC52YWx1ZSAhPSAiYXR0cmlidXRlcyI6Ci0gICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoaWQubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgYXR0cmlidXRlcywgZm91bmQgJXMiICUgaWQpCi0gICAgICAgIHJldHVybiBTdW0oc3VtLCBhdHRyaWJ1dGVzKQotCi0gICAgZGVmIHBfcHJvZHVjdF8wKHNlbGYsIGluZm8pOgotICAgICAgICAiIHByb2R1Y3QgOjo9ICggZmllbGRzICkgIgotICAgICAgICBfMCwgZmllbGRzLCBfMSA9IGluZm8KLSAgICAgICAgcmV0dXJuIFByb2R1Y3QoZmllbGRzKQotCi0gICAgZGVmIHBfcHJvZHVjdF8xKHNlbGYsIGluZm8pOgotICAgICAgICAiIHByb2R1Y3QgOjo9ICggZmllbGRzICkgSWQgKCBmaWVsZHMgKSAiCi0gICAgICAgIF8wLCBmaWVsZHMsIF8xLCBpZCwgXzIsIGF0dHJpYnV0ZXMsIF8zID0gaW5mbwotICAgICAgICBpZiBpZC52YWx1ZSAhPSAiYXR0cmlidXRlcyI6Ci0gICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoaWQubGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgYXR0cmlidXRlcywgZm91bmQgJXMiICUgaWQpCi0gICAgICAgIHJldHVybiBQcm9kdWN0KGZpZWxkcywgYXR0cmlidXRlcykKLQotICAgIGRlZiBwX3N1bV8wKHNlbGYsIGNvbnN0cnVjdG9yKToKLSAgICAgICAgIiBzdW0gOjo9IGNvbnN0cnVjdG9yICIKLSAgICAgICAgcmV0dXJuIFtjb25zdHJ1Y3RvclswXV0KLQotICAgIGRlZiBwX3N1bV8xKHNlbGYsIGluZm8pOgotICAgICAgICAiIHN1bSA6Oj0gY29uc3RydWN0b3IgfCBzdW0gIgotICAgICAgICBjb25zdHJ1Y3RvciwgXywgc3VtID0gaW5mbwotICAgICAgICByZXR1cm4gW2NvbnN0cnVjdG9yXSArIHN1bQotCi0gICAgZGVmIHBfc3VtXzIoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgc3VtIDo6PSBjb25zdHJ1Y3RvciB8IHN1bSAiCi0gICAgICAgIGNvbnN0cnVjdG9yLCBfLCBzdW0gPSBpbmZvCi0gICAgICAgIHJldHVybiBbY29uc3RydWN0b3JdICsgc3VtCi0KLSAgICBkZWYgcF9jb25zdHJ1Y3Rvcl8wKHNlbGYsIGlkKToKLSAgICAgICAgIiBjb25zdHJ1Y3RvciA6Oj0gSWQgIgotICAgICAgICByZXR1cm4gQ29uc3RydWN0b3IoaWRbMF0pCi0KLSAgICBkZWYgcF9jb25zdHJ1Y3Rvcl8xKHNlbGYsIGluZm8pOgotICAgICAgICAiIGNvbnN0cnVjdG9yIDo6PSBJZCAoIGZpZWxkcyApICIKLSAgICAgICAgaWQsIF8wLCBmaWVsZHMsIF8xID0gaW5mbwotICAgICAgICByZXR1cm4gQ29uc3RydWN0b3IoaWQsIGZpZWxkcykKLQotICAgIGRlZiBwX2ZpZWxkc18wKHNlbGYsIGZpZWxkKToKLSAgICAgICAgIiBmaWVsZHMgOjo9IGZpZWxkICIKLSAgICAgICAgcmV0dXJuIFtmaWVsZFswXV0KLQotICAgIGRlZiBwX2ZpZWxkc18xKHNlbGYsIGluZm8pOgotICAgICAgICAiIGZpZWxkcyA6Oj0gZmllbGRzICwgZmllbGQgIgotICAgICAgICBmaWVsZHMsIF8sIGZpZWxkID0gaW5mbwotICAgICAgICByZXR1cm4gZmllbGRzICsgW2ZpZWxkXQotCi0gICAgZGVmIHBfZmllbGRfMChzZWxmLCB0eXBlXyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkICIKLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGVfWzBdKQotCi0gICAgZGVmIHBfZmllbGRfMShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBmaWVsZCA6Oj0gSWQgSWQgIgotICAgICAgICB0eXBlLCBuYW1lID0gaW5mbwotICAgICAgICByZXR1cm4gRmllbGQodHlwZSwgbmFtZSkKLQotICAgIGRlZiBwX2ZpZWxkXzIoc2VsZiwgaW5mbyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkICogSWQgIgotICAgICAgICB0eXBlLCBfLCBuYW1lID0gaW5mbwotICAgICAgICByZXR1cm4gRmllbGQodHlwZSwgbmFtZSwgc2VxPVRydWUpCi0KLSAgICBkZWYgcF9maWVsZF8zKHNlbGYsIGluZm8pOgotICAgICAgICAiIGZpZWxkIDo6PSBJZCA/IElkICIKLSAgICAgICAgdHlwZSwgXywgbmFtZSA9IGluZm8KLSAgICAgICAgcmV0dXJuIEZpZWxkKHR5cGUsIG5hbWUsIG9wdD1UcnVlKQotCi0gICAgZGVmIHBfZmllbGRfNChzZWxmLCB0eXBlXyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkICogIgotICAgICAgICByZXR1cm4gRmllbGQodHlwZV9bMF0sIHNlcT1UcnVlKQotCi0gICAgZGVmIHBfZmllbGRfNShzZWxmLCB0eXBlXyk6Ci0gICAgICAgICIgZmllbGQgOjo9IElkID8gIgotICAgICAgICByZXR1cm4gRmllbGQodHlwZVswXSwgb3B0PVRydWUpCi0KLWJ1aWx0aW5fdHlwZXMgPSAoImlkZW50aWZpZXIiLCAic3RyaW5nIiwgImJ5dGVzIiwgImludCIsICJvYmplY3QiLCAic2luZ2xldG9uIikKLQotIyBiZWxvdyBpcyBhIGNvbGxlY3Rpb24gb2YgY2xhc3NlcyB0byBjYXB0dXJlIHRoZSBBU1Qgb2YgYW4gQVNUIDotKQotIyBub3Qgc3VyZSBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgYXJlIHVzZWZ1bCB5ZXQsIGJ1dCBJJ20gYWRkaW5nIHRoZW0KLSMgcGllY2VtZWFsIGFzIHRoZXkgc2VlbSBoZWxwZnVsCi0KLWNsYXNzIEFTVChvYmplY3QpOgotICAgIHBhc3MgIyBhIG1hcmtlciBjbGFzcworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIGNsYXNzIE1vZHVsZShBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBkZm5zKToKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmRmbnMgPSBkZm5zCi0gICAgICAgIHNlbGYudHlwZXMgPSB7fSAjIG1hcHMgdHlwZSBuYW1lIHRvIHZhbHVlIChmcm9tIGRmbnMpCi0gICAgICAgIGZvciB0eXBlIGluIGRmbnM6Ci0gICAgICAgICAgICBzZWxmLnR5cGVzW3R5cGUubmFtZS52YWx1ZV0gPSB0eXBlLnZhbHVlCisgICAgICAgIHNlbGYudHlwZXMgPSB7dHlwZS5uYW1lOiB0eXBlLnZhbHVlIGZvciB0eXBlIGluIGRmbnN9CiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiTW9kdWxlKCVzLCAlcykiICUgKHNlbGYubmFtZSwgc2VsZi5kZm5zKQorICAgICAgICByZXR1cm4gJ01vZHVsZSh7MC5uYW1lfSwgezAuZGZuc30pJy5mb3JtYXQoc2VsZikKIAogY2xhc3MgVHlwZShBU1QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CkBAIC0yNTcsNyArNTQsNyBAQAogICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJUeXBlKCVzLCAlcykiICUgKHNlbGYubmFtZSwgc2VsZi52YWx1ZSkKKyAgICAgICAgcmV0dXJuICdUeXBlKHswLm5hbWV9LCB7MC52YWx1ZX0pJy5mb3JtYXQoc2VsZikKIAogY2xhc3MgQ29uc3RydWN0b3IoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZmllbGRzPU5vbmUpOgpAQCAtMjY1LDcgKzYyLDcgQEAKICAgICAgICAgc2VsZi5maWVsZHMgPSBmaWVsZHMgb3IgW10KIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJDb25zdHJ1Y3RvciglcywgJXMpIiAlIChzZWxmLm5hbWUsIHNlbGYuZmllbGRzKQorICAgICAgICByZXR1cm4gJ0NvbnN0cnVjdG9yKHswLm5hbWV9LCB7MC5maWVsZHN9KScuZm9ybWF0KHNlbGYpCiAKIGNsYXNzIEZpZWxkKEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGUsIG5hbWU9Tm9uZSwgc2VxPUZhbHNlLCBvcHQ9RmFsc2UpOgpAQCAtMjgyLDkgKzc5LDkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4dHJhID0gIiIKICAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gIkZpZWxkKCVzJXMpIiAlIChzZWxmLnR5cGUsIGV4dHJhKQorICAgICAgICAgICAgcmV0dXJuICdGaWVsZCh7MC50eXBlfXsxfSknLmZvcm1hdChzZWxmLCBleHRyYSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiRmllbGQoJXMsICVzJXMpIiAlIChzZWxmLnR5cGUsIHNlbGYubmFtZSwgZXh0cmEpCisgICAgICAgICAgICByZXR1cm4gJ0ZpZWxkKHswLnR5cGV9LCB7MC5uYW1lfXsxfSknLmZvcm1hdChzZWxmLCBleHRyYSkKIAogY2xhc3MgU3VtKEFTVCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVzLCBhdHRyaWJ1dGVzPU5vbmUpOgpAQCAtMjkyLDEwICs4OSwxMCBAQAogICAgICAgICBzZWxmLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzIG9yIFtdCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuYXR0cmlidXRlcyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJTdW0oJXMpIiAlIHNlbGYudHlwZXMKKyAgICAgICAgaWYgc2VsZi5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgcmV0dXJuICdTdW0oezAudHlwZXN9LCB7MC5hdHRyaWJ1dGVzfSknLmZvcm1hdChzZWxmKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJTdW0oJXMsICVzKSIgJSAoc2VsZi50eXBlcywgc2VsZi5hdHRyaWJ1dGVzKQorICAgICAgICAgICAgcmV0dXJuICdTdW0oezAudHlwZXN9KScuZm9ybWF0KHNlbGYpCiAKIGNsYXNzIFByb2R1Y3QoQVNUKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmllbGRzLCBhdHRyaWJ1dGVzPU5vbmUpOgpAQCAtMzAzLDQ5ICsxMDAsNDMgQEAKICAgICAgICAgc2VsZi5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcyBvciBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAiUHJvZHVjdCglcykiICUgc2VsZi5maWVsZHMKKyAgICAgICAgaWYgc2VsZi5hdHRyaWJ1dGVzOgorICAgICAgICAgICAgcmV0dXJuICdQcm9kdWN0KHswLmZpZWxkc30sIHswLmF0dHJpYnV0ZXN9KScuZm9ybWF0KHNlbGYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIlByb2R1Y3QoJXMsICVzKSIgJSAoc2VsZi5maWVsZHMsIHNlbGYuYXR0cmlidXRlcykKKyAgICAgICAgICAgIHJldHVybiAnUHJvZHVjdCh7MC5maWVsZHN9KScuZm9ybWF0KHNlbGYpCisKKyMgQSBnZW5lcmljIHZpc2l0b3IgZm9yIHRoZSBtZXRhLUFTVCB0aGF0IGRlc2NyaWJlcyBBU0RMLiBUaGlzIGNhbiBiZSB1c2VkIGJ5CisjIGVtaXR0ZXJzLiBOb3RlIHRoYXQgdGhpcyB2aXNpdG9yIGRvZXMgbm90IHByb3ZpZGUgYSBnZW5lcmljIHZpc2l0IG1ldGhvZCwgc28gYQorIyBzdWJjbGFzcyBuZWVkcyB0byBkZWZpbmUgdmlzaXQgbWV0aG9kcyBmcm9tIHZpc2l0TW9kdWxlIHRvIGFzIGRlZXAgYXMgdGhlCisjIGludGVyZXN0aW5nIG5vZGUuCisjIFdlIGFsc28gZGVmaW5lIGEgQ2hlY2sgdmlzaXRvciB0aGF0IG1ha2VzIHN1cmUgdGhlIHBhcnNlZCBBU0RMIGlzIHdlbGwtZm9ybWVkLgogCiBjbGFzcyBWaXNpdG9yQmFzZShvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNraXA9RmFsc2UpOgorICAgICIiIkdlbmVyaWMgdHJlZSB2aXNpdG9yIGZvciBBU1RzLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5jYWNoZSA9IHt9Ci0gICAgICAgIHNlbGYuc2tpcCA9IHNraXAKIAotICAgIGRlZiB2aXNpdChzZWxmLCBvYmplY3QsICphcmdzKToKLSAgICAgICAgbWV0aCA9IHNlbGYuX2Rpc3BhdGNoKG9iamVjdCkKLSAgICAgICAgaWYgbWV0aCBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1ldGgob2JqZWN0LCAqYXJncykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIG91dHB1dCgiRXJyb3IgdmlzaXRpbmciICsgcmVwcihvYmplY3QpKQotICAgICAgICAgICAgb3V0cHV0KHN0cihzeXMuZXhjX2luZm8oKVsxXSkpCi0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICMgWFhYIGhhY2sKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2ZpbGUnKToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGUuZmx1c2goKQotICAgICAgICAgICAgb3MuX2V4aXQoMSkKLQotICAgIGRlZiBfZGlzcGF0Y2goc2VsZiwgb2JqZWN0KToKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob2JqZWN0LCBBU1QpLCByZXByKG9iamVjdCkKLSAgICAgICAga2xhc3MgPSBvYmplY3QuX19jbGFzc19fCisgICAgZGVmIHZpc2l0KHNlbGYsIG9iaiwgKmFyZ3MpOgorICAgICAgICBrbGFzcyA9IG9iai5fX2NsYXNzX18KICAgICAgICAgbWV0aCA9IHNlbGYuY2FjaGUuZ2V0KGtsYXNzKQogICAgICAgICBpZiBtZXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBtZXRobmFtZSA9ICJ2aXNpdCIgKyBrbGFzcy5fX25hbWVfXwotICAgICAgICAgICAgaWYgc2VsZi5za2lwOgotICAgICAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsIG1ldGhuYW1lLCBOb25lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCBtZXRobmFtZSkKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsIG1ldGhuYW1lLCBOb25lKQogICAgICAgICAgICAgc2VsZi5jYWNoZVtrbGFzc10gPSBtZXRoCi0gICAgICAgIHJldHVybiBtZXRoCisgICAgICAgIGlmIG1ldGg6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbWV0aChvYmosICphcmdzKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciB2aXNpdGluZyAlcjogJXMiICUgKG9iaiwgZSkpCisgICAgICAgICAgICAgICAgcmFpc2UKIAogY2xhc3MgQ2hlY2soVmlzaXRvckJhc2UpOgorICAgICIiIkEgdmlzaXRvciB0aGF0IGNoZWNrcyBhIHBhcnNlZCBBU0RMIHRyZWUgZm9yIGNvcnJlY3RuZXNzLgogCisgICAgRXJyb3JzIGFyZSBwcmludGVkIGFuZCBhY2N1bXVsYXRlZC4KKyAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHN1cGVyKENoZWNrLCBzZWxmKS5fX2luaXRfXyhza2lwPVRydWUpCisgICAgICAgIHN1cGVyKENoZWNrLCBzZWxmKS5fX2luaXRfXygpCiAgICAgICAgIHNlbGYuY29ucyA9IHt9CiAgICAgICAgIHNlbGYuZXJyb3JzID0gMAogICAgICAgICBzZWxmLnR5cGVzID0ge30KQEAgLTM2Nyw4ICsxNTgsOCBAQAogICAgICAgICBpZiBjb25mbGljdCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5jb25zW2tleV0gPSBuYW1lCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvdXRwdXQoIlJlZGVmaW5pdGlvbiBvZiBjb25zdHJ1Y3RvciAlcyIgJSBrZXkpCi0gICAgICAgICAgICBvdXRwdXQoIkRlZmluZWQgaW4gJXMgYW5kICVzIiAlIChjb25mbGljdCwgbmFtZSkpCisgICAgICAgICAgICBwcmludCgnUmVkZWZpbml0aW9uIG9mIGNvbnN0cnVjdG9yIHt9Jy5mb3JtYXQoa2V5KSkKKyAgICAgICAgICAgIHByaW50KCdEZWZpbmVkIGluIHt9IGFuZCB7fScuZm9ybWF0KGNvbmZsaWN0LCBuYW1lKSkKICAgICAgICAgICAgIHNlbGYuZXJyb3JzICs9IDEKICAgICAgICAgZm9yIGYgaW4gY29ucy5maWVsZHM6CiAgICAgICAgICAgICBzZWxmLnZpc2l0KGYsIGtleSkKQEAgLTM4Myw2ICsxNzQsMTEgQEAKICAgICAgICAgICAgIHNlbGYudmlzaXQoZiwgbmFtZSkKIAogZGVmIGNoZWNrKG1vZCk6CisgICAgIiIiQ2hlY2sgdGhlIHBhcnNlZCBBU0RMIHRyZWUgZm9yIGNvcnJlY3RuZXNzLgorCisgICAgUmV0dXJuIFRydWUgaWYgc3VjY2Vzcy4gRm9yIGZhaWx1cmUsIHRoZSBlcnJvcnMgYXJlIHByaW50ZWQgb3V0IGFuZCBGYWxzZQorICAgIGlzIHJldHVybmVkLgorICAgICIiIgogICAgIHYgPSBDaGVjaygpCiAgICAgdi52aXNpdChtb2QpCiAKQEAgLTM5MCw0NyArMTg2LDE5MCBAQAogICAgICAgICBpZiB0IG5vdCBpbiBtb2QudHlwZXMgYW5kIG5vdCB0IGluIGJ1aWx0aW5fdHlwZXM6CiAgICAgICAgICAgICB2LmVycm9ycyArPSAxCiAgICAgICAgICAgICB1c2VzID0gIiwgIi5qb2luKHYudHlwZXNbdF0pCi0gICAgICAgICAgICBvdXRwdXQoIlVuZGVmaW5lZCB0eXBlICVzLCB1c2VkIGluICVzIiAlICh0LCB1c2VzKSkKLQorICAgICAgICAgICAgcHJpbnQoJ1VuZGVmaW5lZCB0eXBlIHt9LCB1c2VkIGluIHt9Jy5mb3JtYXQodCwgdXNlcykpCiAgICAgcmV0dXJuIG5vdCB2LmVycm9ycwogCi1kZWYgcGFyc2UoZmlsZSk6Ci0gICAgc2Nhbm5lciA9IEFTRExTY2FubmVyKCkKLSAgICBwYXJzZXIgPSBBU0RMUGFyc2VyKCkKKyMgVGhlIEFTREwgcGFyc2VyIGl0c2VsZiBjb21lcyBuZXh0LiBUaGUgb25seSBpbnRlcmVzdGluZyBleHRlcm5hbCBpbnRlcmZhY2UKKyMgaGVyZSBpcyB0aGUgdG9wLWxldmVsIHBhcnNlIGZ1bmN0aW9uLgogCi0gICAgZiA9IG9wZW4oZmlsZSkKLSAgICB0cnk6Ci0gICAgICAgIGJ1ZiA9IGYucmVhZCgpCi0gICAgZmluYWxseToKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgdG9rZW5zID0gc2Nhbm5lci50b2tlbml6ZShidWYpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gcGFyc2VyLnBhcnNlKHRva2VucykKLSAgICBleGNlcHQgQVNETFN5bnRheEVycm9yOgotICAgICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICBvdXRwdXQoc3RyKGVycikpCi0gICAgICAgIGxpbmVzID0gYnVmLnNwbGl0KCJcbiIpCi0gICAgICAgIG91dHB1dChsaW5lc1tlcnIubGluZW5vIC0gMV0pICMgbGluZXMgc3RhcnRzIGF0IDAsIGZpbGVzIGF0IDEKK2RlZiBwYXJzZShmaWxlbmFtZSk6CisgICAgIiIiUGFyc2UgQVNETCBmcm9tIHRoZSBnaXZlbiBmaWxlIGFuZCByZXR1cm4gYSBNb2R1bGUgbm9kZSBkZXNjcmliaW5nIGl0LiIiIgorICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgcGFyc2VyID0gQVNETFBhcnNlcigpCisgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2UoZi5yZWFkKCkpCiAKLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaW1wb3J0IGdsb2IKLSAgICBpbXBvcnQgc3lzCisjIFR5cGVzIGZvciBkZXNjcmliaW5nIHRva2VucyBpbiBhbiBBU0RMIHNwZWNpZmljYXRpb24uCitjbGFzcyBUb2tlbktpbmQ6CisgICAgIiIiVG9rZW5LaW5kIGlzIHByb3ZpZGVzIGEgc2NvcGUgZm9yIGVudW1lcmF0ZWQgdG9rZW4ga2luZHMuIiIiCisgICAgKENvbnN0cnVjdG9ySWQsIFR5cGVJZCwgRXF1YWxzLCBDb21tYSwgUXVlc3Rpb24sIFBpcGUsIEFzdGVyaXNrLAorICAgICBMUGFyZW4sIFJQYXJlbiwgTEJyYWNlLCBSQnJhY2UpID0gcmFuZ2UoMTEpCiAKLSAgICBpZiBsZW4oc3lzLmFyZ3YpID4gMToKLSAgICAgICAgZmlsZXMgPSBzeXMuYXJndlsxOl0KLSAgICBlbHNlOgotICAgICAgICB0ZXN0ZGlyID0gInRlc3RzIgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xvYih0ZXN0ZGlyICsgIi8qLmFzZGwiKQorICAgIG9wZXJhdG9yX3RhYmxlID0geworICAgICAgICAnPSc6IEVxdWFscywgJywnOiBDb21tYSwgICAgJz8nOiBRdWVzdGlvbiwgJ3wnOiBQaXBlLCAgICAnKCc6IExQYXJlbiwKKyAgICAgICAgJyknOiBSUGFyZW4sICcqJzogQXN0ZXJpc2ssICd7JzogTEJyYWNlLCAgICd9JzogUkJyYWNlfQogCi0gICAgZm9yIGZpbGUgaW4gZmlsZXM6Ci0gICAgICAgIG91dHB1dChmaWxlKQotICAgICAgICBtb2QgPSBwYXJzZShmaWxlKQotICAgICAgICBpZiBub3QgbW9kOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgb3V0cHV0KCJtb2R1bGUiLCBtb2QubmFtZSkKLSAgICAgICAgb3V0cHV0KGxlbihtb2QuZGZucyksICJkZWZpbml0aW9ucyIpCi0gICAgICAgIGlmIG5vdCBjaGVjayhtb2QpOgotICAgICAgICAgICAgb3V0cHV0KCJDaGVjayBmYWlsZWQiKQorVG9rZW4gPSBuYW1lZHR1cGxlKCdUb2tlbicsICdraW5kIHZhbHVlIGxpbmVubycpCisKK2NsYXNzIEFTRExTeW50YXhFcnJvcihFeGNlcHRpb24pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2csIGxpbmVubz1Ob25lKToKKyAgICAgICAgc2VsZi5tc2cgPSBtc2cKKyAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8gb3IgJzx1bmtub3duPicKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ1N5bnRheCBlcnJvciBvbiBsaW5lIHswLmxpbmVub306IHswLm1zZ30nLmZvcm1hdChzZWxmKQorCitkZWYgdG9rZW5pemVfYXNkbChidWYpOgorICAgICIiIlRva2VuaXplIHRoZSBnaXZlbiBidWZmZXIuIFlpZWxkIFRva2VuIG9iamVjdHMuIiIiCisgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUoYnVmLnNwbGl0bGluZXMoKSwgMSk6CisgICAgICAgIGZvciBtIGluIHJlLmZpbmRpdGVyKHInXHMqKFx3K3wtLS4qfC4pJywgbGluZS5zdHJpcCgpKToKKyAgICAgICAgICAgIGMgPSBtLmdyb3VwKDEpCisgICAgICAgICAgICBpZiBjWzBdLmlzYWxwaGEoKToKKyAgICAgICAgICAgICAgICAjIFNvbWUga2luZCBvZiBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgaWYgY1swXS5pc3VwcGVyKCk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKFRva2VuS2luZC5Db25zdHJ1Y3RvcklkLCBjLCBsaW5lbm8pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW4oVG9rZW5LaW5kLlR5cGVJZCwgYywgbGluZW5vKQorICAgICAgICAgICAgZWxpZiBjWzoyXSA9PSAnLS0nOgorICAgICAgICAgICAgICAgICMgQ29tbWVudAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgT3BlcmF0b3JzCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvcF9raW5kID0gVG9rZW5LaW5kLm9wZXJhdG9yX3RhYmxlW2NdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoJ0ludmFsaWQgb3BlcmF0b3IgJXMnICUgYywgbGluZW5vKQorICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuKG9wX2tpbmQsIGMsIGxpbmVubykKKworY2xhc3MgQVNETFBhcnNlcjoKKyAgICAiIiJQYXJzZXIgZm9yIEFTREwgZmlsZXMuCisKKyAgICBDcmVhdGUsIHRoZW4gY2FsbCB0aGUgcGFyc2UgbWV0aG9kIG9uIGEgYnVmZmVyIGNvbnRhaW5pbmcgQVNETC4KKyAgICBUaGlzIGlzIGEgc2ltcGxlIHJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlciB0aGF0IHVzZXMgdG9rZW5pemVfYXNkbCBmb3IgdGhlCisgICAgbGV4aW5nLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fdG9rZW5pemVyID0gTm9uZQorICAgICAgICBzZWxmLmN1cl90b2tlbiA9IE5vbmUKKworICAgIGRlZiBwYXJzZShzZWxmLCBidWYpOgorICAgICAgICAiIiJQYXJzZSB0aGUgQVNETCBpbiB0aGUgYnVmZmVyIGFuZCByZXR1cm4gYW4gQVNUIHdpdGggYSBNb2R1bGUgcm9vdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3Rva2VuaXplciA9IHRva2VuaXplX2FzZGwoYnVmKQorICAgICAgICBzZWxmLl9hZHZhbmNlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX21vZHVsZSgpCisKKyAgICBkZWYgX3BhcnNlX21vZHVsZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYXRfa2V5d29yZCgnbW9kdWxlJyk6CisgICAgICAgICAgICBzZWxmLl9hZHZhbmNlKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBkZm4gaW4gbW9kLmRmbnM6Ci0gICAgICAgICAgICAgICAgb3V0cHV0KGRmbi5uYW1lLCBkZm4udmFsdWUpCisgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoCisgICAgICAgICAgICAgICAgJ0V4cGVjdGVkICJtb2R1bGUiIChmb3VuZCB7fSknLmZvcm1hdChzZWxmLmN1cl90b2tlbi52YWx1ZSksCisgICAgICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4ubGluZW5vKQorICAgICAgICBuYW1lID0gc2VsZi5fbWF0Y2goc2VsZi5faWRfa2luZHMpCisgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5MQnJhY2UpCisgICAgICAgIGRlZnMgPSBzZWxmLl9wYXJzZV9kZWZpbml0aW9ucygpCisgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5SQnJhY2UpCisgICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgZGVmcykKKworICAgIGRlZiBfcGFyc2VfZGVmaW5pdGlvbnMoc2VsZik6CisgICAgICAgIGRlZnMgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5UeXBlSWQ6CisgICAgICAgICAgICB0eXBlbmFtZSA9IHNlbGYuX2FkdmFuY2UoKQorICAgICAgICAgICAgc2VsZi5fbWF0Y2goVG9rZW5LaW5kLkVxdWFscykKKyAgICAgICAgICAgIHR5cGUgPSBzZWxmLl9wYXJzZV90eXBlKCkKKyAgICAgICAgICAgIGRlZnMuYXBwZW5kKFR5cGUodHlwZW5hbWUsIHR5cGUpKQorICAgICAgICByZXR1cm4gZGVmcworCisgICAgZGVmIF9wYXJzZV90eXBlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5MUGFyZW46CisgICAgICAgICAgICAjIElmIHdlIHNlZSBhICgsIGl0J3MgYSBwcm9kdWN0CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VfcHJvZHVjdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIE90aGVyd2lzZSBpdCdzIGEgc3VtLiBMb29rIGZvciBDb25zdHJ1Y3RvcklkCisgICAgICAgICAgICBzdW1saXN0ID0gW0NvbnN0cnVjdG9yKHNlbGYuX21hdGNoKFRva2VuS2luZC5Db25zdHJ1Y3RvcklkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2Vfb3B0aW9uYWxfZmllbGRzKCkpXQorICAgICAgICAgICAgd2hpbGUgc2VsZi5jdXJfdG9rZW4ua2luZCAgPT0gVG9rZW5LaW5kLlBpcGU6CisgICAgICAgICAgICAgICAgIyBNb3JlIGNvbnN0cnVjdG9ycworICAgICAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICAgICAgICAgIHN1bWxpc3QuYXBwZW5kKENvbnN0cnVjdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9tYXRjaChUb2tlbktpbmQuQ29uc3RydWN0b3JJZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlX29wdGlvbmFsX2ZpZWxkcygpKSkKKyAgICAgICAgICAgIHJldHVybiBTdW0oc3VtbGlzdCwgc2VsZi5fcGFyc2Vfb3B0aW9uYWxfYXR0cmlidXRlcygpKQorCisgICAgZGVmIF9wYXJzZV9wcm9kdWN0KHNlbGYpOgorICAgICAgICByZXR1cm4gUHJvZHVjdChzZWxmLl9wYXJzZV9maWVsZHMoKSwgc2VsZi5fcGFyc2Vfb3B0aW9uYWxfYXR0cmlidXRlcygpKQorCisgICAgZGVmIF9wYXJzZV9maWVsZHMoc2VsZik6CisgICAgICAgIGZpZWxkcyA9IFtdCisgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5MUGFyZW4pCisgICAgICAgIHdoaWxlIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLlR5cGVJZDoKKyAgICAgICAgICAgIHR5cGVuYW1lID0gc2VsZi5fYWR2YW5jZSgpCisgICAgICAgICAgICBpc19zZXEsIGlzX29wdCA9IHNlbGYuX3BhcnNlX29wdGlvbmFsX2ZpZWxkX3F1YW50aWZpZXIoKQorICAgICAgICAgICAgaWQgPSAoc2VsZi5fYWR2YW5jZSgpIGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgaW4gc2VsZi5faWRfa2luZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUpCisgICAgICAgICAgICBmaWVsZHMuYXBwZW5kKEZpZWxkKHR5cGVuYW1lLCBpZCwgc2VxPWlzX3NlcSwgb3B0PWlzX29wdCkpCisgICAgICAgICAgICBpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5SUGFyZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgc2VsZi5jdXJfdG9rZW4ua2luZCA9PSBUb2tlbktpbmQuQ29tbWE6CisgICAgICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgIHNlbGYuX21hdGNoKFRva2VuS2luZC5SUGFyZW4pCisgICAgICAgIHJldHVybiBmaWVsZHMKKworICAgIGRlZiBfcGFyc2Vfb3B0aW9uYWxfZmllbGRzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5MUGFyZW46CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2VfZmllbGRzKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3BhcnNlX29wdGlvbmFsX2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2F0X2tleXdvcmQoJ2F0dHJpYnV0ZXMnKToKKyAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNlX2ZpZWxkcygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9wYXJzZV9vcHRpb25hbF9maWVsZF9xdWFudGlmaWVyKHNlbGYpOgorICAgICAgICBpc19zZXEsIGlzX29wdCA9IEZhbHNlLCBGYWxzZQorICAgICAgICBpZiBzZWxmLmN1cl90b2tlbi5raW5kID09IFRva2VuS2luZC5Bc3RlcmlzazoKKyAgICAgICAgICAgIGlzX3NlcSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICBlbGlmIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLlF1ZXN0aW9uOgorICAgICAgICAgICAgaXNfb3B0ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fYWR2YW5jZSgpCisgICAgICAgIHJldHVybiBpc19zZXEsIGlzX29wdAorCisgICAgZGVmIF9hZHZhbmNlKHNlbGYpOgorICAgICAgICAiIiIgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCB0b2tlbiBhbmQgcmVhZCB0aGUgbmV4dCBvbmUgaW50bworICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4uCisgICAgICAgICIiIgorICAgICAgICBjdXJfdmFsID0gTm9uZSBpZiBzZWxmLmN1cl90b2tlbiBpcyBOb25lIGVsc2Ugc2VsZi5jdXJfdG9rZW4udmFsdWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4gPSBuZXh0KHNlbGYuX3Rva2VuaXplcikKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLmN1cl90b2tlbiA9IE5vbmUKKyAgICAgICAgcmV0dXJuIGN1cl92YWwKKworICAgIF9pZF9raW5kcyA9IChUb2tlbktpbmQuQ29uc3RydWN0b3JJZCwgVG9rZW5LaW5kLlR5cGVJZCkKKworICAgIGRlZiBfbWF0Y2goc2VsZiwga2luZCk6CisgICAgICAgICIiIlRoZSAnbWF0Y2gnIHByaW1pdGl2ZSBvZiBSRCBwYXJzZXJzLgorCisgICAgICAgICogVmVyaWZpZXMgdGhhdCB0aGUgY3VycmVudCB0b2tlbiBpcyBvZiB0aGUgZ2l2ZW4ga2luZCAoa2luZCBjYW4KKyAgICAgICAgICBiZSBhIHR1cGxlLCBpbiB3aGljaCB0aGUga2luZCBtdXN0IG1hdGNoIG9uZSBvZiBpdHMgbWVtYmVycykuCisgICAgICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdG9rZW4KKyAgICAgICAgKiBSZWFkcyBpbiB0aGUgbmV4dCB0b2tlbgorICAgICAgICAiIiIKKyAgICAgICAgaWYgKGlzaW5zdGFuY2Uoa2luZCwgdHVwbGUpIGFuZCBzZWxmLmN1cl90b2tlbi5raW5kIGluIGtpbmQgb3IKKyAgICAgICAgICAgIHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0ga2luZAorICAgICAgICAgICAgKToKKyAgICAgICAgICAgIHZhbHVlID0gc2VsZi5jdXJfdG9rZW4udmFsdWUKKyAgICAgICAgICAgIHNlbGYuX2FkdmFuY2UoKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IoCisgICAgICAgICAgICAgICAgJ1VubWF0Y2hlZCB7fSAoZm91bmQge30pJy5mb3JtYXQoa2luZCwgc2VsZi5jdXJfdG9rZW4ua2luZCksCisgICAgICAgICAgICAgICAgc2VsZi5jdXJfdG9rZW4ubGluZW5vKQorCisgICAgZGVmIF9hdF9rZXl3b3JkKHNlbGYsIGtleXdvcmQpOgorICAgICAgICByZXR1cm4gKHNlbGYuY3VyX3Rva2VuLmtpbmQgPT0gVG9rZW5LaW5kLlR5cGVJZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmN1cl90b2tlbi52YWx1ZSA9PSBrZXl3b3JkKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGxfYy5weSBiL1BhcnNlci9hc2RsX2MucHkKaW5kZXggZDYwODZlNi4uYTVlMzVkOSAxMDA3NTUKLS0tIGEvUGFyc2VyL2FzZGxfYy5weQorKysgYi9QYXJzZXIvYXNkbF9jLnB5CkBAIC0xLDkgKzEsNiBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbgogIiIiR2VuZXJhdGUgQyBjb2RlIGZyb20gYW4gQVNETCBkZXNjcmlwdGlvbi4iIiIKIAotIyBUTyBETwotIyBoYW5kbGUgZmllbGRzIHRoYXQgaGF2ZSBhIHR5cGUgYnV0IG5vIG5hbWUKLQogaW1wb3J0IG9zLCBzeXMKIAogaW1wb3J0IGFzZGwKQEAgLTE0LDEyICsxMSw4IEBACiBkZWYgZ2V0X2NfdHlwZShuYW1lKToKICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgZm9yIHRoZSBDIG5hbWUgb2YgdGhlIHR5cGUuCiAKLSAgICBUaGlzIGZ1bmN0aW9uIHNwZWNpYWwgY2FzZXMgdGhlIGRlZmF1bHQgdHlwZXMgcHJvdmlkZWQgYnkgYXNkbDoKLSAgICBpZGVudGlmaWVyLCBzdHJpbmcsIGludC4KKyAgICBUaGlzIGZ1bmN0aW9uIHNwZWNpYWwgY2FzZXMgdGhlIGRlZmF1bHQgdHlwZXMgcHJvdmlkZWQgYnkgYXNkbC4KICAgICAiIiIKLSAgICAjIFhYWCBhY2shICBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgSWQgaXMgdXNlZnVsIGFuZCB3aGVyZSBzdHJpbmcKLSAgICBpZiBpc2luc3RhbmNlKG5hbWUsIGFzZGwuSWQpOgotICAgICAgICBuYW1lID0gbmFtZS52YWx1ZQogICAgIGlmIG5hbWUgaW4gYXNkbC5idWlsdGluX3R5cGVzOgogICAgICAgICByZXR1cm4gbmFtZQogICAgIGVsc2U6CkBAIC0xNDQsNyArMTM3LDcgQEAKIAogCiBjbGFzcyBTdHJ1Y3RWaXNpdG9yKEVtaXRWaXNpdG9yKToKLSAgICAiIiJWaXNpdG9yIHRvIGdlbmVyYXRlIHR5cGRlZnMgZm9yIEFTVC4iIiIKKyAgICAiIiJWaXNpdG9yIHRvIGdlbmVyYXRlIHR5cGVkZWZzIGZvciBBU1QuIiIiCiAKICAgICBkZWYgdmlzaXRNb2R1bGUoc2VsZiwgbW9kKToKICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKQEAgLTE4OCw5ICsxODEsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYudmlzaXQoZiwgZGVwdGggKyAxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJ9ICVzOyIgJSBjb25zLm5hbWUsIGRlcHRoKQogICAgICAgICAgICAgc2VsZi5lbWl0KCIiLCBkZXB0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgWFhYIG5vdCBzdXJlIHdoYXQgSSB3YW50IGhlcmUsIG5vdGhpbmcgaXMgcHJvYmFibHkgZmluZQotICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIHZpc2l0RmllbGQoc2VsZiwgZmllbGQsIGRlcHRoKToKICAgICAgICAgIyBYWFggbmVlZCB0byBsb29rdXAgZmllbGQudHlwZSwgYmVjYXVzZSBpdCBtaWdodCBiZSBzb21ldGhpbmcKQEAgLTE5OCw3ICsxODgsNyBAQAogICAgICAgICBjdHlwZSA9IGdldF9jX3R5cGUoZmllbGQudHlwZSkKICAgICAgICAgbmFtZSA9IGZpZWxkLm5hbWUKICAgICAgICAgaWYgZmllbGQuc2VxOgotICAgICAgICAgICAgaWYgZmllbGQudHlwZS52YWx1ZSBpbiAoJ2NtcG9wJywpOgorICAgICAgICAgICAgaWYgZmllbGQudHlwZSA9PSAnY21wb3AnOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiYXNkbF9pbnRfc2VxIColKG5hbWUpczsiICUgbG9jYWxzKCksIGRlcHRoKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImFzZGxfc2VxIColKG5hbWUpczsiICUgbG9jYWxzKCksIGRlcHRoKQpAQCAtMjUzLDcgKzI0Myw3IEBACiAgICAgICAgICAgICAgICAgbmFtZSA9IGYubmFtZQogICAgICAgICAgICAgIyBYWFggc2hvdWxkIGV4dGVuZCBnZXRfY190eXBlKCkgdG8gaGFuZGxlIHRoaXMKICAgICAgICAgICAgIGlmIGYuc2VxOgotICAgICAgICAgICAgICAgIGlmIGYudHlwZS52YWx1ZSBpbiAoJ2NtcG9wJywpOgorICAgICAgICAgICAgICAgIGlmIGYudHlwZSA9PSAnY21wb3AnOgogICAgICAgICAgICAgICAgICAgICBjdHlwZSA9ICJhc2RsX2ludF9zZXEgKiIKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBjdHlwZSA9ICJhc2RsX3NlcSAqIgpAQCAtNDM3LDcgKzQyNyw3IEBACiAgICAgICAgICAgICBzZWxmLmVtaXQoIiIsIDApCiAgICAgICAgICAgICBmb3IgZiBpbiB0LmZpZWxkczoKICAgICAgICAgICAgICAgICBzZWxmLnZpc2l0RmllbGQoZiwgdC5uYW1lLCBzdW09c3VtLCBkZXB0aD0yKQotICAgICAgICAgICAgYXJncyA9IFtmLm5hbWUudmFsdWUgZm9yIGYgaW4gdC5maWVsZHNdICsgW2EubmFtZS52YWx1ZSBmb3IgYSBpbiBzdW0uYXR0cmlidXRlc10KKyAgICAgICAgICAgIGFyZ3MgPSBbZi5uYW1lIGZvciBmIGluIHQuZmllbGRzXSArIFthLm5hbWUgZm9yIGEgaW4gc3VtLmF0dHJpYnV0ZXNdCiAgICAgICAgICAgICBzZWxmLmVtaXQoIipvdXQgPSAlcyglcyk7IiAlICh0Lm5hbWUsIHNlbGYuYnVpbGRBcmdzKGFyZ3MpKSwgMikKICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7IiwgMikKICAgICAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIDA7IiwgMikKQEAgLTQ2NSw3ICs0NTUsNyBAQAogICAgICAgICBzZWxmLmVtaXQoIiIsIDApCiAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgogICAgICAgICAgICAgc2VsZi52aXNpdEZpZWxkKGYsIG5hbWUsIHByb2Q9cHJvZCwgZGVwdGg9MSkKLSAgICAgICAgYXJncyA9IFtmLm5hbWUudmFsdWUgZm9yIGYgaW4gcHJvZC5maWVsZHNdCisgICAgICAgIGFyZ3MgPSBbZi5uYW1lIGZvciBmIGluIHByb2QuZmllbGRzXQogICAgICAgICBzZWxmLmVtaXQoIipvdXQgPSAlcyglcyk7IiAlIChuYW1lLCBzZWxmLmJ1aWxkQXJncyhhcmdzKSksIDEpCiAgICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIDA7IiwgMSkKICAgICAgICAgc2VsZi5lbWl0KCJmYWlsZWQ6IiwgMCkKQEAgLTQ4Nyw4ICs0NzcsOCBAQAogCiAgICAgZGVmIGlzU2ltcGxlU3VtKHNlbGYsIGZpZWxkKToKICAgICAgICAgIyBYWFggY2FuIHRoZSBtZW1iZXJzIG9mIHRoaXMgbGlzdCBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHk/Ci0gICAgICAgIHJldHVybiBmaWVsZC50eXBlLnZhbHVlIGluICgnZXhwcl9jb250ZXh0JywgJ2Jvb2xvcCcsICdvcGVyYXRvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5hcnlvcCcsICdjbXBvcCcpCisgICAgICAgIHJldHVybiBmaWVsZC50eXBlIGluICgnZXhwcl9jb250ZXh0JywgJ2Jvb2xvcCcsICdvcGVyYXRvcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5hcnlvcCcsICdjbXBvcCcpCiAKICAgICBkZWYgaXNOdW1lcmljKHNlbGYsIGZpZWxkKToKICAgICAgICAgcmV0dXJuIGdldF9jX3R5cGUoZmllbGQudHlwZSkgaW4gKCJpbnQiLCAiYm9vbCIpCkBAIC05NjAsNyArOTUwLDcgQEAKIAogICAgIGRlZiB2aXNpdFByb2R1Y3Qoc2VsZiwgcHJvZCwgbmFtZSk6CiAgICAgICAgIGlmIHByb2QuZmllbGRzOgotICAgICAgICAgICAgZmllbGRzID0gbmFtZS52YWx1ZSsiX2ZpZWxkcyIKKyAgICAgICAgICAgIGZpZWxkcyA9IG5hbWUrIl9maWVsZHMiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmaWVsZHMgPSAiTlVMTCIKICAgICAgICAgc2VsZi5lbWl0KCclc190eXBlID0gbWFrZV90eXBlKCIlcyIsICZBU1RfdHlwZSwgJXMsICVkKTsnICUKQEAgLTk4Nyw3ICs5NzcsNyBAQAogCiAgICAgZGVmIHZpc2l0Q29uc3RydWN0b3Ioc2VsZiwgY29ucywgbmFtZSwgc2ltcGxlKToKICAgICAgICAgaWYgY29ucy5maWVsZHM6Ci0gICAgICAgICAgICBmaWVsZHMgPSBjb25zLm5hbWUudmFsdWUrIl9maWVsZHMiCisgICAgICAgICAgICBmaWVsZHMgPSBjb25zLm5hbWUrIl9maWVsZHMiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmaWVsZHMgPSAiTlVMTCIKICAgICAgICAgc2VsZi5lbWl0KCclc190eXBlID0gbWFrZV90eXBlKCIlcyIsICVzX3R5cGUsICVzLCAlZCk7JyAlCkBAIC0xMTcwLDcgKzExNjAsNyBAQAogICAgIGRlZiBzZXQoc2VsZiwgZmllbGQsIHZhbHVlLCBkZXB0aCk6CiAgICAgICAgIGlmIGZpZWxkLnNlcToKICAgICAgICAgICAgICMgWFhYIHNob3VsZCByZWFsbHkgY2hlY2sgZm9yIGlzX3NpbXBsZSwgYnV0IHRoYXQgcmVxdWlyZXMgYSBzeW1ib2wgdGFibGUKLSAgICAgICAgICAgIGlmIGZpZWxkLnR5cGUudmFsdWUgPT0gImNtcG9wIjoKKyAgICAgICAgICAgIGlmIGZpZWxkLnR5cGUgPT0gImNtcG9wIjoKICAgICAgICAgICAgICAgICAjIFdoaWxlIHRoZSBzZXF1ZW5jZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIHZvaWQqLAogICAgICAgICAgICAgICAgICMgYXN0Mm9ial9jbXBvcCBleHBlY3RzIGFuIGVudW0KICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoInsiLCBkZXB0aCkKQEAgLTEyNDksMTIgKzEyMzksMTUgQEAKIAogY29tbW9uX21zZyA9ICIvKiBGaWxlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5ICVzLiAqL1xuXG4iCiAKLWRlZiBtYWluKHNyY2ZpbGUpOgorZGVmIG1haW4oc3JjZmlsZSwgZHVtcF9tb2R1bGU9RmFsc2UpOgogICAgIGFyZ3YwID0gc3lzLmFyZ3ZbMF0KICAgICBjb21wb25lbnRzID0gYXJndjAuc3BsaXQob3Muc2VwKQogICAgIGFyZ3YwID0gb3Muc2VwLmpvaW4oY29tcG9uZW50c1stMjpdKQogICAgIGF1dG9fZ2VuX21zZyA9IGNvbW1vbl9tc2cgJSBhcmd2MAogICAgIG1vZCA9IGFzZGwucGFyc2Uoc3JjZmlsZSkKKyAgICBpZiBkdW1wX21vZHVsZToKKyAgICAgICAgcHJpbnQoJ1BhcnNlZCBNb2R1bGU6JykKKyAgICAgICAgcHJpbnQobW9kKQogICAgIGlmIG5vdCBhc2RsLmNoZWNrKG1vZCk6CiAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgaWYgSU5DX0RJUjoKQEAgLTEzMDEsMTYgKzEyOTQsMTkgQEAKIAogICAgIElOQ19ESVIgPSAnJwogICAgIFNSQ19ESVIgPSAnJwotICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImg6YzoiKQotICAgIGlmIGxlbihvcHRzKSAhPSAxOgotICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJNdXN0IHNwZWNpZnkgZXhhY3RseSBvbmUgb3V0cHV0IGZpbGVcbiIpCi0gICAgICAgIHN5cy5leGl0KDEpCisgICAgZHVtcF9tb2R1bGUgPSBGYWxzZQorICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgImRoOmM6IikKICAgICBmb3IgbywgdiBpbiBvcHRzOgogICAgICAgICBpZiBvID09ICctaCc6CiAgICAgICAgICAgICBJTkNfRElSID0gdgogICAgICAgICBpZiBvID09ICctYyc6CiAgICAgICAgICAgICBTUkNfRElSID0gdgotICAgIGlmIGxlbihhcmdzKSAhPSAxOgotICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJNdXN0IHNwZWNpZnkgc2luZ2xlIGlucHV0IGZpbGVcbiIpCisgICAgICAgIGlmIG8gPT0gJy1kJzoKKyAgICAgICAgICAgIGR1bXBfbW9kdWxlID0gVHJ1ZQorICAgIGlmIElOQ19ESVIgYW5kIFNSQ19ESVI6CisgICAgICAgIHByaW50KCdNdXN0IHNwZWNpZnkgZXhhY3RseSBvbmUgb3V0cHV0IGZpbGUnKQogICAgICAgICBzeXMuZXhpdCgxKQotICAgIG1haW4oYXJnc1swXSkKKyAgICBlbGlmIGxlbihhcmdzKSAhPSAxOgorICAgICAgICBwcmludCgnTXVzdCBzcGVjaWZ5IHNpbmdsZSBpbnB1dCBmaWxlJykKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBtYWluKGFyZ3NbMF0sIGR1bXBfbW9kdWxlKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL25vZGUuYyBiL1BhcnNlci9ub2RlLmMKaW5kZXggNTY0YmQ5MS4uMDAxMDMyNCAxMDA2NDQKLS0tIGEvUGFyc2VyL25vZGUuYworKysgYi9QYXJzZXIvbm9kZS5jCkBAIC03MCw4ICs3MCw4IEBACiAgKiBOb3RlIHRoYXQgdGhpcyB3b3VsZCBiZSBzdHJhaWdodGZvcndhcmQgaWYgYSBub2RlIHN0b3JlZCBpdHMgY3VycmVudAogICogY2FwYWNpdHkuICBUaGUgY29kZSBpcyB0cmlja3kgdG8gYXZvaWQgdGhhdC4KICAqLwotI2RlZmluZSBYWFhST1VORFVQKG4pICgobikgPD0gMSA/IChuKSA6ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAobikgPD0gMTI4ID8gX1B5X1NJWkVfUk9VTkRfVVAoKG4pLCA0KSA6IFwKKyNkZWZpbmUgWFhYUk9VTkRVUChuKSAoKG4pIDw9IDEgPyAobikgOiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAobikgPD0gMTI4ID8gKGludClfUHlfU0laRV9ST1VORF9VUCgobiksIDQpIDogICAgXAogICAgICAgICAgICAgICAgZmFuY3lfcm91bmR1cChuKSkKIAogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbi5jIGIvUGFyc2VyL3BnZW4uYwppbmRleCBiMmY4NDcwLi5mMzAzMWFlIDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbi5jCisrKyBiL1BhcnNlci9wZ2VuLmMKQEAgLTEzNiwxMSArMTM2LDEyIEBACiAKIHN0YXRpYyBjaGFyIFJFUU5GTVRbXSA9ICJtZXRhY29tcGlsZTogbGVzcyB0aGFuICVkIGNoaWxkcmVuXG4iOwogCi0jZGVmaW5lIFJFUU4oaSwgY291bnQpIFwKKyNkZWZpbmUgUkVRTihpLCBjb3VudCkgZG8geyBcCiAgICAgaWYgKGkgPCBjb3VudCkgeyBcCiAgICAgICAgIGZwcmludGYoc3RkZXJyLCBSRVFORk1ULCBjb3VudCk7IFwKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUkVRTiIpOyBcCi0gICAgfSBlbHNlCisgICAgfSBcCit9IHdoaWxlICgwKQogCiAjZWxzZQogI2RlZmluZSBSRVFOKGksIGNvdW50KSAgLyogZW1wdHkgKi8KZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VubWFpbi5jIGIvUGFyc2VyL3BnZW5tYWluLmMKaW5kZXggMDE3YTRmOS4uMGYwNTVkNiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW5tYWluLmMKKysrIGIvUGFyc2VyL3BnZW5tYWluLmMKQEAgLTk2LDEwICs5NiwxMSBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBhcnNpbmcgZXJyb3IgJWQsIGxpbmUgJWQuXG4iLAogICAgICAgICAgICAgZXJyLmVycm9yLCBlcnIubGluZW5vKTsKICAgICAgICAgaWYgKGVyci50ZXh0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHNpemVfdCBpOworICAgICAgICAgICAgc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIGludCBpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIGVyci50ZXh0KTsKLSAgICAgICAgICAgIGkgPSBzdHJsZW4oZXJyLnRleHQpOwotICAgICAgICAgICAgaWYgKGkgPT0gMCB8fCBlcnIudGV4dFtpLTFdICE9ICdcbicpCisgICAgICAgICAgICBsZW4gPSBzdHJsZW4oZXJyLnRleHQpOworICAgICAgICAgICAgaWYgKGxlbiA9PSAwIHx8IGVyci50ZXh0W2xlbi0xXSAhPSAnXG4nKQogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBlcnIub2Zmc2V0OyBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAoZXJyLnRleHRbaV0gPT0gJ1x0JykKZGlmZiAtLWdpdCBhL1BhcnNlci9wcmludGdyYW1tYXIuYyBiL1BhcnNlci9wcmludGdyYW1tYXIuYwppbmRleCBkZDdlNmFlLi43MzExZTU1IDEwMDY0NAotLS0gYS9QYXJzZXIvcHJpbnRncmFtbWFyLmMKKysrIGIvUGFyc2VyL3ByaW50Z3JhbW1hci5jCkBAIC04NCw3ICs4NCw3IEBACiBwcmludGRmYXMoZ3JhbW1hciAqZywgRklMRSAqZnApCiB7CiAgICAgZGZhICpkOwotICAgIGludCBpLCBqOworICAgIGludCBpLCBqLCBuOwogCiAgICAgcHJpbnRzdGF0ZXMoZywgZnApOwogICAgIGZwcmludGYoZnAsICJzdGF0aWMgZGZhIGRmYXNbJWRdID0ge1xuIiwgZy0+Z19uZGZhcyk7CkBAIC05Myw3ICs5Myw4IEBACiAgICAgICAgIGZwcmludGYoZnAsICIgICAgeyVkLCBcIiVzXCIsICVkLCAlZCwgc3RhdGVzXyVkLFxuIiwKICAgICAgICAgICAgIGQtPmRfdHlwZSwgZC0+ZF9uYW1lLCBkLT5kX2luaXRpYWwsIGQtPmRfbnN0YXRlcywgaSk7CiAgICAgICAgIGZwcmludGYoZnAsICIgICAgIFwiIik7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCBOQllURVMoZy0+Z19sbC5sbF9ubGFiZWxzKTsgaisrKQorICAgICAgICBuID0gTkJZVEVTKGctPmdfbGwubGxfbmxhYmVscyk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuOyBqKyspCiAgICAgICAgICAgICBmcHJpbnRmKGZwLCAiXFwlMDNvIiwgZC0+ZF9maXJzdFtqXSAmIDB4ZmYpOwogICAgICAgICBmcHJpbnRmKGZwLCAiXCJ9LFxuIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUGFyc2VyL3NwYXJrLnB5IGIvUGFyc2VyL3NwYXJrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OGMxYTg5Li4wMDAwMDAwCi0tLSBhL1BhcnNlci9zcGFyay5weQorKysgL2Rldi9udWxsCkBAIC0xLDg0OSArMCwwIEBACi0jICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMiBKb2huIEF5Y29jawotIwotIyAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0jICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSMgICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSMgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSMgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotIyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0jICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0jCi0jICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQotIyAgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0jCi0jICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSMgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotIyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotIyAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsCi0jICBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQotIyAgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLV9fdmVyc2lvbl9fID0gJ1NQQVJLLTAuNyAocHJlLWFscGhhLTUpJwotCi1pbXBvcnQgcmUKLQotIyBDb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgcHl0aG9ucy4KLWRlZiBvdXRwdXQoc3RyaW5nPScnLCBlbmQ9J1xuJyk6Ci0gICAgc3lzLnN0ZG91dC53cml0ZShzdHJpbmcgKyBlbmQpCi0KLXRyeToKLSAgICBzb3J0ZWQKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgZGVmIHNvcnRlZChzZXEpOgotICAgICAgICBzZXEyID0gc2VxWzpdCi0gICAgICAgIHNlcTIuc29ydCgpCi0gICAgICAgIHJldHVybiBzZXEyCi0KLWRlZiBfbmFtZWxpc3QoaW5zdGFuY2UpOgotICAgIG5hbWVsaXN0LCBuYW1lZGljdCwgY2xhc3NsaXN0ID0gW10sIHt9LCBbaW5zdGFuY2UuX19jbGFzc19fXQotICAgIGZvciBjIGluIGNsYXNzbGlzdDoKLSAgICAgICAgZm9yIGIgaW4gYy5fX2Jhc2VzX186Ci0gICAgICAgICAgICBjbGFzc2xpc3QuYXBwZW5kKGIpCi0gICAgICAgIGZvciBuYW1lIGluIGMuX19kaWN0X18ua2V5cygpOgotICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gbmFtZWRpY3Q6Ci0gICAgICAgICAgICAgICAgbmFtZWxpc3QuYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgbmFtZWRpY3RbbmFtZV0gPSAxCi0gICAgcmV0dXJuIG5hbWVsaXN0Ci0KLWNsYXNzIEdlbmVyaWNTY2FubmVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGFncz0wKToKLSAgICAgICAgcGF0dGVybiA9IHNlbGYucmVmbGVjdCgpCi0gICAgICAgIHNlbGYucmUgPSByZS5jb21waWxlKHBhdHRlcm4sIHJlLlZFUkJPU0V8ZmxhZ3MpCi0KLSAgICAgICAgc2VsZi5pbmRleDJmdW5jID0ge30KLSAgICAgICAgZm9yIG5hbWUsIG51bWJlciBpbiBzZWxmLnJlLmdyb3VwaW5kZXguaXRlbXMoKToKLSAgICAgICAgICAgIHNlbGYuaW5kZXgyZnVuY1tudW1iZXItMV0gPSBnZXRhdHRyKHNlbGYsICd0XycgKyBuYW1lKQotCi0gICAgZGVmIG1ha2VSRShzZWxmLCBuYW1lKToKLSAgICAgICAgZG9jID0gZ2V0YXR0cihzZWxmLCBuYW1lKS5fX2RvY19fCi0gICAgICAgIHJ2ID0gJyg/UDwlcz4lcyknICUgKG5hbWVbMjpdLCBkb2MpCi0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIHJlZmxlY3Qoc2VsZik6Ci0gICAgICAgIHJ2ID0gW10KLSAgICAgICAgZm9yIG5hbWUgaW4gX25hbWVsaXN0KHNlbGYpOgotICAgICAgICAgICAgaWYgbmFtZVs6Ml0gPT0gJ3RfJyBhbmQgbmFtZSAhPSAndF9kZWZhdWx0JzoKLSAgICAgICAgICAgICAgICBydi5hcHBlbmQoc2VsZi5tYWtlUkUobmFtZSkpCi0KLSAgICAgICAgcnYuYXBwZW5kKHNlbGYubWFrZVJFKCd0X2RlZmF1bHQnKSkKLSAgICAgICAgcmV0dXJuICd8Jy5qb2luKHJ2KQotCi0gICAgZGVmIGVycm9yKHNlbGYsIHMsIHBvcyk6Ci0gICAgICAgIG91dHB1dCgiTGV4aWNhbCBlcnJvciBhdCBwb3NpdGlvbiAlcyIgJSBwb3MpCi0gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKLQotICAgIGRlZiB0b2tlbml6ZShzZWxmLCBzKToKLSAgICAgICAgcG9zID0gMAotICAgICAgICBuID0gbGVuKHMpCi0gICAgICAgIHdoaWxlIHBvcyA8IG46Ci0gICAgICAgICAgICBtID0gc2VsZi5yZS5tYXRjaChzLCBwb3MpCi0gICAgICAgICAgICBpZiBtIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcihzLCBwb3MpCi0KLSAgICAgICAgICAgIGdyb3VwcyA9IG0uZ3JvdXBzKCkKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihncm91cHMpKToKLSAgICAgICAgICAgICAgICBpZiBncm91cHNbaV0gYW5kIGkgaW4gc2VsZi5pbmRleDJmdW5jOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmluZGV4MmZ1bmNbaV0oZ3JvdXBzW2ldKQotICAgICAgICAgICAgcG9zID0gbS5lbmQoKQotCi0gICAgZGVmIHRfZGVmYXVsdChzZWxmLCBzKToKLSAgICAgICAgcicoIC4gfCBcbiApKycKLSAgICAgICAgb3V0cHV0KCJTcGVjaWZpY2F0aW9uIGVycm9yOiB1bm1hdGNoZWQgaW5wdXQiKQotICAgICAgICByYWlzZSBTeXN0ZW1FeGl0Ci0KLSMKLSMgIEV4dHJhY3RlZCBmcm9tIEdlbmVyaWNQYXJzZXIgYW5kIG1hZGUgZ2xvYmFsIHNvIHRoYXQgW3VuXXBpY2tpbmcgd29ya3MuCi0jCi1jbGFzcyBfU3RhdGU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXRlbm8sIGl0ZW1zKToKLSAgICAgICAgc2VsZi5ULCBzZWxmLmNvbXBsZXRlLCBzZWxmLml0ZW1zID0gW10sIFtdLCBpdGVtcwotICAgICAgICBzZWxmLnN0YXRlbm8gPSBzdGF0ZW5vCi0KLWNsYXNzIEdlbmVyaWNQYXJzZXI6Ci0gICAgIwotICAgICMgIEFuIEVhcmxleSBwYXJzZXIsIGFzIHBlciBKLiBFYXJsZXksICJBbiBFZmZpY2llbnQgQ29udGV4dC1GcmVlCi0gICAgIyAgUGFyc2luZyBBbGdvcml0aG0iLCBDQUNNIDEzKDIpLCBwcC4gOTQtMTAyLiAgQWxzbyBKLiBDLiBFYXJsZXksCi0gICAgIyAgIkFuIEVmZmljaWVudCBDb250ZXh0LUZyZWUgUGFyc2luZyBBbGdvcml0aG0iLCBQaC5ELiB0aGVzaXMsCi0gICAgIyAgQ2FybmVnaWUtTWVsbG9uIFVuaXZlcnNpdHksIEF1Z3VzdCAxOTY4LiAgTmV3IGZvcm11bGF0aW9uIG9mCi0gICAgIyAgdGhlIHBhcnNlciBhY2NvcmRpbmcgdG8gSi4gQXljb2NrLCAiUHJhY3RpY2FsIEVhcmxleSBQYXJzaW5nCi0gICAgIyAgYW5kIHRoZSBTUEFSSyBUb29sa2l0IiwgUGguRC4gdGhlc2lzLCBVbml2ZXJzaXR5IG9mIFZpY3RvcmlhLAotICAgICMgIDIwMDEsIGFuZCBKLiBBeWNvY2sgYW5kIFIuIE4uIEhvcnNwb29sLCAiUHJhY3RpY2FsIEVhcmxleQotICAgICMgIFBhcnNpbmciLCB1bnB1Ymxpc2hlZCBwYXBlciwgMjAwMS4KLSAgICAjCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQpOgotICAgICAgICBzZWxmLnJ1bGVzID0ge30KLSAgICAgICAgc2VsZi5ydWxlMmZ1bmMgPSB7fQotICAgICAgICBzZWxmLnJ1bGUybmFtZSA9IHt9Ci0gICAgICAgIHNlbGYuY29sbGVjdFJ1bGVzKCkKLSAgICAgICAgc2VsZi5hdWdtZW50KHN0YXJ0KQotICAgICAgICBzZWxmLnJ1bGVzY2hhbmdlZCA9IDEKLQotICAgIF9OVUxMQUJMRSA9ICdcZV8nCi0gICAgX1NUQVJUID0gJ1NUQVJUJwotICAgIF9CT0YgPSAnfC0nCi0KLSAgICAjCi0gICAgIyAgV2hlbiBwaWNrbGluZywgdGFrZSB0aGUgdGltZSB0byBnZW5lcmF0ZSB0aGUgZnVsbCBzdGF0ZSBtYWNoaW5lOwotICAgICMgIHNvbWUgaW5mb3JtYXRpb24gaXMgdGhlbiBleHRyYW5lb3VzLCB0b28uICBVbmZvcnR1bmF0ZWx5IHdlCi0gICAgIyAgY2FuJ3Qgc2F2ZSB0aGUgcnVsZTJmdW5jIG1hcC4KLSAgICAjCi0gICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5ydWxlc2NoYW5nZWQ6Ci0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjICBYWFggLSBkdXBsaWNhdGVkIGZyb20gcGFyc2UoKQotICAgICAgICAgICAgIwotICAgICAgICAgICAgc2VsZi5jb21wdXRlTnVsbCgpCi0gICAgICAgICAgICBzZWxmLm5ld3J1bGVzID0ge30KLSAgICAgICAgICAgIHNlbGYubmV3Mm9sZCA9IHt9Ci0gICAgICAgICAgICBzZWxmLm1ha2VOZXdSdWxlcygpCi0gICAgICAgICAgICBzZWxmLnJ1bGVzY2hhbmdlZCA9IDAKLSAgICAgICAgICAgIHNlbGYuZWRnZXMsIHNlbGYuY29yZXMgPSB7fSwge30KLSAgICAgICAgICAgIHNlbGYuc3RhdGVzID0geyAwOiBzZWxmLm1ha2VTdGF0ZTAoKSB9Ci0gICAgICAgICAgICBzZWxmLm1ha2VTdGF0ZSgwLCBzZWxmLl9CT0YpCi0gICAgICAgICMKLSAgICAgICAgIyAgWFhYIC0gc2hvdWxkIGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMuLgotICAgICAgICAjCi0gICAgICAgIGNoYW5nZXMgPSAxCi0gICAgICAgIHdoaWxlIGNoYW5nZXM6Ci0gICAgICAgICAgICBjaGFuZ2VzID0gMAotICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5lZGdlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIHYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUsIHN5bSA9IGsKLSAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgaW4gc2VsZi5zdGF0ZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmdvdG8oc3RhdGUsIHN5bSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgPSAxCi0gICAgICAgIHJ2ID0gc2VsZi5fX2RpY3RfXy5jb3B5KCkKLSAgICAgICAgZm9yIHMgaW4gc2VsZi5zdGF0ZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICBkZWwgcy5pdGVtcwotICAgICAgICBkZWwgcnZbJ3J1bGUyZnVuYyddCi0gICAgICAgIGRlbCBydlsnbnVsbGFibGUnXQotICAgICAgICBkZWwgcnZbJ2NvcmVzJ10KLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIEQpOgotICAgICAgICBzZWxmLnJ1bGVzID0ge30KLSAgICAgICAgc2VsZi5ydWxlMmZ1bmMgPSB7fQotICAgICAgICBzZWxmLnJ1bGUybmFtZSA9IHt9Ci0gICAgICAgIHNlbGYuY29sbGVjdFJ1bGVzKCkKLSAgICAgICAgc3RhcnQgPSBEWydydWxlcyddW3NlbGYuX1NUQVJUXVswXVsxXVsxXSAgICAgICAgIyBCbGVjaC4KLSAgICAgICAgc2VsZi5hdWdtZW50KHN0YXJ0KQotICAgICAgICBEWydydWxlMmZ1bmMnXSA9IHNlbGYucnVsZTJmdW5jCi0gICAgICAgIERbJ21ha2VTZXQnXSA9IHNlbGYubWFrZVNldF9mYXN0Ci0gICAgICAgIHNlbGYuX19kaWN0X18gPSBECi0KLSAgICAjCi0gICAgIyAgQSBob29rIGZvciBHZW5lcmljQVNUQnVpbGRlciBhbmQgR2VuZXJpY0FTVE1hdGNoZXIuICBNZXNzCi0gICAgIyAgdGhlZSBub3Qgd2l0aCB0aGlzOyBub3Igc2hhbGwgdGhlZSB0b3VjaGV0aCB0aGUgX3ByZXByb2Nlc3MKLSAgICAjICBhcmd1bWVudCB0byBhZGRSdWxlLgotICAgICMKLSAgICBkZWYgcHJlcHJvY2VzcyhzZWxmLCBydWxlLCBmdW5jKTogICAgICAgcmV0dXJuIHJ1bGUsIGZ1bmMKLQotICAgIGRlZiBhZGRSdWxlKHNlbGYsIGRvYywgZnVuYywgX3ByZXByb2Nlc3M9MSk6Ci0gICAgICAgIGZuID0gZnVuYwotICAgICAgICBydWxlcyA9IGRvYy5zcGxpdCgpCi0KLSAgICAgICAgaW5kZXggPSBbXQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocnVsZXMpKToKLSAgICAgICAgICAgIGlmIHJ1bGVzW2ldID09ICc6Oj0nOgotICAgICAgICAgICAgICAgIGluZGV4LmFwcGVuZChpLTEpCi0gICAgICAgIGluZGV4LmFwcGVuZChsZW4ocnVsZXMpKQotCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihpbmRleCktMSk6Ci0gICAgICAgICAgICBsaHMgPSBydWxlc1tpbmRleFtpXV0KLSAgICAgICAgICAgIHJocyA9IHJ1bGVzW2luZGV4W2ldKzI6aW5kZXhbaSsxXV0KLSAgICAgICAgICAgIHJ1bGUgPSAobGhzLCB0dXBsZShyaHMpKQotCi0gICAgICAgICAgICBpZiBfcHJlcHJvY2VzczoKLSAgICAgICAgICAgICAgICBydWxlLCBmbiA9IHNlbGYucHJlcHJvY2VzcyhydWxlLCBmdW5jKQotCi0gICAgICAgICAgICBpZiBsaHMgaW4gc2VsZi5ydWxlczoKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bGVzW2xoc10uYXBwZW5kKHJ1bGUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucnVsZXNbbGhzXSA9IFsgcnVsZSBdCi0gICAgICAgICAgICBzZWxmLnJ1bGUyZnVuY1tydWxlXSA9IGZuCi0gICAgICAgICAgICBzZWxmLnJ1bGUybmFtZVtydWxlXSA9IGZ1bmMuX19uYW1lX19bMjpdCi0gICAgICAgIHNlbGYucnVsZXNjaGFuZ2VkID0gMQotCi0gICAgZGVmIGNvbGxlY3RSdWxlcyhzZWxmKToKLSAgICAgICAgZm9yIG5hbWUgaW4gX25hbWVsaXN0KHNlbGYpOgotICAgICAgICAgICAgaWYgbmFtZVs6Ml0gPT0gJ3BfJzoKLSAgICAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihzZWxmLCBuYW1lKQotICAgICAgICAgICAgICAgIGRvYyA9IGZ1bmMuX19kb2NfXwotICAgICAgICAgICAgICAgIHNlbGYuYWRkUnVsZShkb2MsIGZ1bmMpCi0KLSAgICBkZWYgYXVnbWVudChzZWxmLCBzdGFydCk6Ci0gICAgICAgIHJ1bGUgPSAnJXMgOjo9ICVzICVzJyAlIChzZWxmLl9TVEFSVCwgc2VsZi5fQk9GLCBzdGFydCkKLSAgICAgICAgc2VsZi5hZGRSdWxlKHJ1bGUsIGxhbWJkYSBhcmdzOiBhcmdzWzFdLCAwKQotCi0gICAgZGVmIGNvbXB1dGVOdWxsKHNlbGYpOgotICAgICAgICBzZWxmLm51bGxhYmxlID0ge30KLSAgICAgICAgdGJkID0gW10KLQotICAgICAgICBmb3IgcnVsZWxpc3QgaW4gc2VsZi5ydWxlcy52YWx1ZXMoKToKLSAgICAgICAgICAgIGxocyA9IHJ1bGVsaXN0WzBdWzBdCi0gICAgICAgICAgICBzZWxmLm51bGxhYmxlW2xoc10gPSAwCi0gICAgICAgICAgICBmb3IgcnVsZSBpbiBydWxlbGlzdDoKLSAgICAgICAgICAgICAgICByaHMgPSBydWxlWzFdCi0gICAgICAgICAgICAgICAgaWYgbGVuKHJocykgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5udWxsYWJsZVtsaHNdID0gMQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjICBXZSBvbmx5IG5lZWQgdG8gY29uc2lkZXIgcnVsZXMgd2hpY2gKLSAgICAgICAgICAgICAgICAjICBjb25zaXN0IGVudGlyZWx5IG9mIG5vbnRlcm1pbmFsIHN5bWJvbHMuCi0gICAgICAgICAgICAgICAgIyAgVGhpcyBzaG91bGQgYmUgYSBzYXZpbmdzIG9uIHR5cGljYWwKLSAgICAgICAgICAgICAgICAjICBncmFtbWFycy4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgZm9yIHN5bSBpbiByaHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHN5bSBub3QgaW4gc2VsZi5ydWxlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdGJkLmFwcGVuZChydWxlKQotICAgICAgICBjaGFuZ2VzID0gMQotICAgICAgICB3aGlsZSBjaGFuZ2VzOgotICAgICAgICAgICAgY2hhbmdlcyA9IDAKLSAgICAgICAgICAgIGZvciBsaHMsIHJocyBpbiB0YmQ6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5udWxsYWJsZVtsaHNdOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZvciBzeW0gaW4gcmhzOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5udWxsYWJsZVtzeW1dOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm51bGxhYmxlW2xoc10gPSAxCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgPSAxCi0KLSAgICBkZWYgbWFrZVN0YXRlMChzZWxmKToKLSAgICAgICAgczAgPSBfU3RhdGUoMCwgW10pCi0gICAgICAgIGZvciBydWxlIGluIHNlbGYubmV3cnVsZXNbc2VsZi5fU1RBUlRdOgotICAgICAgICAgICAgczAuaXRlbXMuYXBwZW5kKChydWxlLCAwKSkKLSAgICAgICAgcmV0dXJuIHMwCi0KLSAgICBkZWYgZmluYWxTdGF0ZShzZWxmLCB0b2tlbnMpOgotICAgICAgICAjCi0gICAgICAgICMgIFl1Y2suCi0gICAgICAgICMKLSAgICAgICAgaWYgbGVuKHNlbGYubmV3cnVsZXNbc2VsZi5fU1RBUlRdKSA9PSAyIGFuZCBsZW4odG9rZW5zKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgc3RhcnQgPSBzZWxmLnJ1bGVzW3NlbGYuX1NUQVJUXVswXVsxXVsxXQotICAgICAgICByZXR1cm4gc2VsZi5nb3RvKDEsIHN0YXJ0KQotCi0gICAgZGVmIG1ha2VOZXdSdWxlcyhzZWxmKToKLSAgICAgICAgd29ya2xpc3QgPSBbXQotICAgICAgICBmb3IgcnVsZWxpc3QgaW4gc2VsZi5ydWxlcy52YWx1ZXMoKToKLSAgICAgICAgICAgIGZvciBydWxlIGluIHJ1bGVsaXN0OgotICAgICAgICAgICAgICAgIHdvcmtsaXN0LmFwcGVuZCgocnVsZSwgMCwgMSwgcnVsZSkpCi0KLSAgICAgICAgZm9yIHJ1bGUsIGksIGNhbmRpZGF0ZSwgb2xkcnVsZSBpbiB3b3JrbGlzdDoKLSAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgbiA9IGxlbihyaHMpCi0gICAgICAgICAgICB3aGlsZSBpIDwgbjoKLSAgICAgICAgICAgICAgICBzeW0gPSByaHNbaV0KLSAgICAgICAgICAgICAgICBpZiBzeW0gbm90IGluIHNlbGYucnVsZXMgb3IgXAotICAgICAgICAgICAgICAgICAgIG5vdCBzZWxmLm51bGxhYmxlW3N5bV06Ci0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IDAKLSAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBuZXdyaHMgPSBsaXN0KHJocykKLSAgICAgICAgICAgICAgICBuZXdyaHNbaV0gPSBzZWxmLl9OVUxMQUJMRStzeW0KLSAgICAgICAgICAgICAgICBuZXdydWxlID0gKGxocywgdHVwbGUobmV3cmhzKSkKLSAgICAgICAgICAgICAgICB3b3JrbGlzdC5hcHBlbmQoKG5ld3J1bGUsIGkrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSwgb2xkcnVsZSkpCi0gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gMAotICAgICAgICAgICAgICAgIGkgPSBpICsgMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBjYW5kaWRhdGU6Ci0gICAgICAgICAgICAgICAgICAgIGxocyA9IHNlbGYuX05VTExBQkxFK2xocwotICAgICAgICAgICAgICAgICAgICBydWxlID0gKGxocywgcmhzKQotICAgICAgICAgICAgICAgIGlmIGxocyBpbiBzZWxmLm5ld3J1bGVzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm5ld3J1bGVzW2xoc10uYXBwZW5kKHJ1bGUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdydWxlc1tsaHNdID0gWyBydWxlIF0KLSAgICAgICAgICAgICAgICBzZWxmLm5ldzJvbGRbcnVsZV0gPSBvbGRydWxlCi0KLSAgICBkZWYgdHlwZXN0cmluZyhzZWxmLCB0b2tlbik6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgdG9rZW4pOgotICAgICAgICBvdXRwdXQoIlN5bnRheCBlcnJvciBhdCBvciBuZWFyIGAlcycgdG9rZW4iICUgdG9rZW4pCi0gICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKLQotICAgIGRlZiBwYXJzZShzZWxmLCB0b2tlbnMpOgotICAgICAgICBzZXRzID0gWyBbKDEsMCksICgyLDApXSBdCi0gICAgICAgIHNlbGYubGlua3MgPSB7fQotCi0gICAgICAgIGlmIHNlbGYucnVsZXNjaGFuZ2VkOgotICAgICAgICAgICAgc2VsZi5jb21wdXRlTnVsbCgpCi0gICAgICAgICAgICBzZWxmLm5ld3J1bGVzID0ge30KLSAgICAgICAgICAgIHNlbGYubmV3Mm9sZCA9IHt9Ci0gICAgICAgICAgICBzZWxmLm1ha2VOZXdSdWxlcygpCi0gICAgICAgICAgICBzZWxmLnJ1bGVzY2hhbmdlZCA9IDAKLSAgICAgICAgICAgIHNlbGYuZWRnZXMsIHNlbGYuY29yZXMgPSB7fSwge30KLSAgICAgICAgICAgIHNlbGYuc3RhdGVzID0geyAwOiBzZWxmLm1ha2VTdGF0ZTAoKSB9Ci0gICAgICAgICAgICBzZWxmLm1ha2VTdGF0ZSgwLCBzZWxmLl9CT0YpCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHRva2VucykpOgotICAgICAgICAgICAgc2V0cy5hcHBlbmQoW10pCi0KLSAgICAgICAgICAgIGlmIHNldHNbaV0gPT0gW106Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHNlbGYubWFrZVNldCh0b2tlbnNbaV0sIHNldHMsIGkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZXRzLmFwcGVuZChbXSkKLSAgICAgICAgICAgIHNlbGYubWFrZVNldChOb25lLCBzZXRzLCBsZW4odG9rZW5zKSkKLQotICAgICAgICAjX2R1bXAodG9rZW5zLCBzZXRzLCBzZWxmLnN0YXRlcykKLQotICAgICAgICBmaW5hbGl0ZW0gPSAoc2VsZi5maW5hbFN0YXRlKHRva2VucyksIDApCi0gICAgICAgIGlmIGZpbmFsaXRlbSBub3QgaW4gc2V0c1stMl06Ci0gICAgICAgICAgICBpZiBsZW4odG9rZW5zKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcih0b2tlbnNbaS0xXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5lcnJvcihOb25lKQotCi0gICAgICAgIHJldHVybiBzZWxmLmJ1aWxkVHJlZShzZWxmLl9TVEFSVCwgZmluYWxpdGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLCBsZW4oc2V0cyktMikKLQotICAgIGRlZiBpc251bGxhYmxlKHNlbGYsIHN5bSk6Ci0gICAgICAgICMKLSAgICAgICAgIyAgRm9yIHN5bWJvbHMgaW4gR19lIG9ubHkuICBJZiB3ZSB3ZXJlbid0IHN1cHBvcnRpbmcgMS41LAotICAgICAgICAjICBjb3VsZCBqdXN0IHVzZSBzeW0uc3RhcnRzd2l0aCgpLgotICAgICAgICAjCi0gICAgICAgIHJldHVybiBzZWxmLl9OVUxMQUJMRSA9PSBzeW1bMDpsZW4oc2VsZi5fTlVMTEFCTEUpXQotCi0gICAgZGVmIHNraXAoc2VsZiwgaHMsIHBvcz0wKToKLSAgICAgICAgbiA9IGxlbihoc1sxXSkKLSAgICAgICAgd2hpbGUgcG9zIDwgbjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzbnVsbGFibGUoaHNbMV1bcG9zXSk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHBvcyA9IHBvcyArIDEKLSAgICAgICAgcmV0dXJuIHBvcwotCi0gICAgZGVmIG1ha2VTdGF0ZShzZWxmLCBzdGF0ZSwgc3ltKToKLSAgICAgICAgYXNzZXJ0IHN5bSBpcyBub3QgTm9uZQotICAgICAgICAjCi0gICAgICAgICMgIENvbXB1dGUgXGVwc2lsb24ta2VybmVsIHN0YXRlJ3MgY29yZSBhbmQgc2VlIGlmCi0gICAgICAgICMgIGl0IGV4aXN0cyBhbHJlYWR5LgotICAgICAgICAjCi0gICAgICAgIGtpdGVtcyA9IFtdCi0gICAgICAgIGZvciBydWxlLCBwb3MgaW4gc2VsZi5zdGF0ZXNbc3RhdGVdLml0ZW1zOgotICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgICAgICBpZiByaHNbcG9zOnBvcysxXSA9PSAoc3ltLCk6Ci0gICAgICAgICAgICAgICAga2l0ZW1zLmFwcGVuZCgocnVsZSwgc2VsZi5za2lwKHJ1bGUsIHBvcysxKSkpCi0gICAgICAgIGNvcmUgPSBraXRlbXMKLQotICAgICAgICBjb3JlLnNvcnQoKQotICAgICAgICB0Y29yZSA9IHR1cGxlKGNvcmUpCi0gICAgICAgIGlmIHRjb3JlIGluIHNlbGYuY29yZXM6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb3Jlc1t0Y29yZV0KLSAgICAgICAgIwotICAgICAgICAjICBOb3BlLCBkb2Vzbid0IGV4aXN0LiAgQ29tcHV0ZSBpdCBhbmQgdGhlIGFzc29jaWF0ZWQKLSAgICAgICAgIyAgXGVwc2lsb24tbm9ua2VybmVsIHN0YXRlIHRvZ2V0aGVyOyB3ZSdsbCBuZWVkIGl0IHJpZ2h0IGF3YXkuCi0gICAgICAgICMKLSAgICAgICAgayA9IHNlbGYuY29yZXNbdGNvcmVdID0gbGVuKHNlbGYuc3RhdGVzKQotICAgICAgICBLLCBOSyA9IF9TdGF0ZShrLCBraXRlbXMpLCBfU3RhdGUoaysxLCBbXSkKLSAgICAgICAgc2VsZi5zdGF0ZXNba10gPSBLCi0gICAgICAgIHByZWRpY3RlZCA9IHt9Ci0KLSAgICAgICAgZWRnZXMgPSBzZWxmLmVkZ2VzCi0gICAgICAgIHJ1bGVzID0gc2VsZi5uZXdydWxlcwotICAgICAgICBmb3IgWCBpbiBLLCBOSzoKLSAgICAgICAgICAgIHdvcmtsaXN0ID0gWC5pdGVtcwotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gd29ya2xpc3Q6Ci0gICAgICAgICAgICAgICAgcnVsZSwgcG9zID0gaXRlbQotICAgICAgICAgICAgICAgIGxocywgcmhzID0gcnVsZQotICAgICAgICAgICAgICAgIGlmIHBvcyA9PSBsZW4ocmhzKToKLSAgICAgICAgICAgICAgICAgICAgWC5jb21wbGV0ZS5hcHBlbmQocnVsZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG5leHRTeW0gPSByaHNbcG9zXQotICAgICAgICAgICAgICAgIGtleSA9IChYLnN0YXRlbm8sIG5leHRTeW0pCi0gICAgICAgICAgICAgICAgaWYgbmV4dFN5bSBub3QgaW4gcnVsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGtleSBub3QgaW4gZWRnZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBlZGdlc1trZXldID0gTm9uZQotICAgICAgICAgICAgICAgICAgICAgICAgWC5ULmFwcGVuZChuZXh0U3ltKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVkZ2VzW2tleV0gPSBOb25lCi0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRTeW0gbm90IGluIHByZWRpY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3RlZFtuZXh0U3ltXSA9IDEKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwcnVsZSBpbiBydWxlc1tuZXh0U3ltXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcG9zID0gc2VsZi5za2lwKHBydWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyA9IChwcnVsZSwgcHBvcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSy5pdGVtcy5hcHBlbmQobmV3KQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAgUHJvYmxlbTogd2Uga25vdyBLIG5lZWRzIGdlbmVyYXRpbmcsIGJ1dCB3ZQotICAgICAgICAgICAgIyAgZG9uJ3QgeWV0IGtub3cgYWJvdXQgTksuICBDYW4ndCBjb21taXQgYW55dGhpbmcKLSAgICAgICAgICAgICMgIHJlZ2FyZGluZyBOSyB0byBzZWxmLmVkZ2VzIHVudGlsIHdlJ3JlIHN1cmUuICBTaG91bGQKLSAgICAgICAgICAgICMgIHdlIGRlbGF5IGNvbW1pdHRpbmcgb24gYm90aCBLIGFuZCBOSyB0byBhdm9pZCB0aGlzCi0gICAgICAgICAgICAjICBoYWNreSBjb2RlPyAgVGhpcyBjcmVhdGVzIG90aGVyIHByb2JsZW1zLi4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIGlmIFggaXMgSzoKLSAgICAgICAgICAgICAgICBlZGdlcyA9IHt9Ci0KLSAgICAgICAgaWYgTksuaXRlbXMgPT0gW106Ci0gICAgICAgICAgICByZXR1cm4gawotCi0gICAgICAgICMKLSAgICAgICAgIyAgQ2hlY2sgZm9yIFxlcHNpbG9uLW5vbmtlcm5lbCdzIGNvcmUuICBVbmZvcnR1bmF0ZWx5IHdlCi0gICAgICAgICMgIG5lZWQgdG8ga25vdyB0aGUgZW50aXJlIHNldCBvZiBwcmVkaWN0ZWQgbm9udGVybWluYWxzCi0gICAgICAgICMgIHRvIGRvIHRoaXMgd2l0aG91dCBhY2NpZGVudGFsbHkgZHVwbGljYXRpbmcgc3RhdGVzLgotICAgICAgICAjCi0gICAgICAgIGNvcmUgPSBzb3J0ZWQocHJlZGljdGVkLmtleXMoKSkKLSAgICAgICAgdGNvcmUgPSB0dXBsZShjb3JlKQotICAgICAgICBpZiB0Y29yZSBpbiBzZWxmLmNvcmVzOgotICAgICAgICAgICAgc2VsZi5lZGdlc1soaywgTm9uZSldID0gc2VsZi5jb3Jlc1t0Y29yZV0KLSAgICAgICAgICAgIHJldHVybiBrCi0KLSAgICAgICAgbmsgPSBzZWxmLmNvcmVzW3Rjb3JlXSA9IHNlbGYuZWRnZXNbKGssIE5vbmUpXSA9IE5LLnN0YXRlbm8KLSAgICAgICAgc2VsZi5lZGdlcy51cGRhdGUoZWRnZXMpCi0gICAgICAgIHNlbGYuc3RhdGVzW25rXSA9IE5LCi0gICAgICAgIHJldHVybiBrCi0KLSAgICBkZWYgZ290byhzZWxmLCBzdGF0ZSwgc3ltKToKLSAgICAgICAga2V5ID0gKHN0YXRlLCBzeW0pCi0gICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5lZGdlczoKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgIE5vIHRyYW5zaXRpb25zIGZyb20gc3RhdGUgb24gc3ltLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBydiA9IHNlbGYuZWRnZXNba2V5XQotICAgICAgICBpZiBydiBpcyBOb25lOgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAgVGFyZ2V0IHN0YXRlIGlzbid0IGdlbmVyYXRlZCB5ZXQuICBSZW1lZHkgdGhpcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIHJ2ID0gc2VsZi5tYWtlU3RhdGUoc3RhdGUsIHN5bSkKLSAgICAgICAgICAgIHNlbGYuZWRnZXNba2V5XSA9IHJ2Ci0gICAgICAgIHJldHVybiBydgotCi0gICAgZGVmIGdvdG9UKHNlbGYsIHN0YXRlLCB0KToKLSAgICAgICAgcmV0dXJuIFtzZWxmLmdvdG8oc3RhdGUsIHQpXQotCi0gICAgZGVmIGdvdG9TVChzZWxmLCBzdGF0ZSwgc3QpOgotICAgICAgICBydiA9IFtdCi0gICAgICAgIGZvciB0IGluIHNlbGYuc3RhdGVzW3N0YXRlXS5UOgotICAgICAgICAgICAgaWYgc3QgPT0gdDoKLSAgICAgICAgICAgICAgICBydi5hcHBlbmQoc2VsZi5nb3RvKHN0YXRlLCB0KSkKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSAgICBkZWYgYWRkKHNlbGYsIHNldCwgaXRlbSwgaT1Ob25lLCBwcmVkZWNlc3Nvcj1Ob25lLCBjYXVzYWw9Tm9uZSk6Ci0gICAgICAgIGlmIHByZWRlY2Vzc29yIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBzZXQ6Ci0gICAgICAgICAgICAgICAgc2V0LmFwcGVuZChpdGVtKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAga2V5ID0gKGl0ZW0sIGkpCi0gICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBzZXQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW5rc1trZXldID0gW10KLSAgICAgICAgICAgICAgICBzZXQuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0uYXBwZW5kKChwcmVkZWNlc3NvciwgY2F1c2FsKSkKLQotICAgIGRlZiBtYWtlU2V0KHNlbGYsIHRva2VuLCBzZXRzLCBpKToKLSAgICAgICAgY3VyLCBuZXh0ID0gc2V0c1tpXSwgc2V0c1tpKzFdCi0KLSAgICAgICAgdHR5cGUgPSB0b2tlbiBpcyBub3QgTm9uZSBhbmQgc2VsZi50eXBlc3RyaW5nKHRva2VuKSBvciBOb25lCi0gICAgICAgIGlmIHR0eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm4sIGFyZyA9IHNlbGYuZ290b1QsIHR0eXBlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmbiwgYXJnID0gc2VsZi5nb3RvU1QsIHRva2VuCi0KLSAgICAgICAgZm9yIGl0ZW0gaW4gY3VyOgotICAgICAgICAgICAgcHRyID0gKGl0ZW0sIGkpCi0gICAgICAgICAgICBzdGF0ZSwgcGFyZW50ID0gaXRlbQotICAgICAgICAgICAgYWRkID0gZm4oc3RhdGUsIGFyZykKLSAgICAgICAgICAgIGZvciBrIGluIGFkZDoKLSAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZChuZXh0LCAoaywgcGFyZW50KSwgaSsxLCBwdHIpCi0gICAgICAgICAgICAgICAgICAgIG5rID0gc2VsZi5nb3RvKGssIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQobmV4dCwgKG5rLCBpKzEpKQotCi0gICAgICAgICAgICBpZiBwYXJlbnQgPT0gaToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBmb3IgcnVsZSBpbiBzZWxmLnN0YXRlc1tzdGF0ZV0uY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgICAgICAgICAgZm9yIHBpdGVtIGluIHNldHNbcGFyZW50XToKLSAgICAgICAgICAgICAgICAgICAgcHN0YXRlLCBwcGFyZW50ID0gcGl0ZW0KLSAgICAgICAgICAgICAgICAgICAgayA9IHNlbGYuZ290byhwc3RhdGUsIGxocykKLSAgICAgICAgICAgICAgICAgICAgaWYgayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoeSA9IChpdGVtLCBpLCBydWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgcHB0ciA9IChwaXRlbSwgcGFyZW50KQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQoY3VyLCAoaywgcHBhcmVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBwcHRyLCB3aHkpCi0gICAgICAgICAgICAgICAgICAgICAgICBuayA9IHNlbGYuZ290byhrLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQoY3VyLCAobmssIGkpKQotCi0gICAgZGVmIG1ha2VTZXRfZmFzdChzZWxmLCB0b2tlbiwgc2V0cywgaSk6Ci0gICAgICAgICMKLSAgICAgICAgIyAgQ2FsbCAqb25seSogd2hlbiB0aGUgZW50aXJlIHN0YXRlIG1hY2hpbmUgaGFzIGJlZW4gYnVpbHQhCi0gICAgICAgICMgIEl0IHJlbGllcyBvbiBzZWxmLmVkZ2VzIGJlaW5nIGZpbGxlZCBpbiBjb21wbGV0ZWx5LCBhbmQKLSAgICAgICAgIyAgdGhlbiBkdXBsaWNhdGVzIGFuZCBpbmxpbmVzIGNvZGUgdG8gYm9vc3Qgc3BlZWQgYXQgdGhlCi0gICAgICAgICMgIGNvc3Qgb2YgZXh0cmVtZSB1Z2xpbmVzcy4KLSAgICAgICAgIwotICAgICAgICBjdXIsIG5leHQgPSBzZXRzW2ldLCBzZXRzW2krMV0KLSAgICAgICAgdHR5cGUgPSB0b2tlbiBpcyBub3QgTm9uZSBhbmQgc2VsZi50eXBlc3RyaW5nKHRva2VuKSBvciBOb25lCi0KLSAgICAgICAgZm9yIGl0ZW0gaW4gY3VyOgotICAgICAgICAgICAgcHRyID0gKGl0ZW0sIGkpCi0gICAgICAgICAgICBzdGF0ZSwgcGFyZW50ID0gaXRlbQotICAgICAgICAgICAgaWYgdHR5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgayA9IHNlbGYuZWRnZXMuZ2V0KChzdGF0ZSwgdHR5cGUpLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIGsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICNzZWxmLmFkZChuZXh0LCAoaywgcGFyZW50KSwgaSsxLCBwdHIpCi0gICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tdgotICAgICAgICAgICAgICAgICAgICBuZXcgPSAoaywgcGFyZW50KQotICAgICAgICAgICAgICAgICAgICBrZXkgPSAobmV3LCBpKzEpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5ldyBub3QgaW4gbmV4dDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XSA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcGVuZChuZXcpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XS5hcHBlbmQoKHB0ciwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tXgotICAgICAgICAgICAgICAgICAgICAjbmsgPSBzZWxmLmdvdG8oaywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgbmsgPSBzZWxmLmVkZ2VzLmdldCgoaywgTm9uZSksIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5rIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGYuYWRkKG5leHQsIChuaywgaSsxKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tdgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3ID0gKG5rLCBpKzEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXcgbm90IGluIG5leHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQobmV3KQotICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS1eCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFkZCA9IHNlbGYuZ290b1NUKHN0YXRlLCB0b2tlbikKLSAgICAgICAgICAgICAgICBmb3IgayBpbiBhZGQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZChuZXh0LCAoaywgcGFyZW50KSwgaSsxLCBwdHIpCi0gICAgICAgICAgICAgICAgICAgICAgICAjbmsgPSBzZWxmLmdvdG8oaywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5rID0gc2VsZi5lZGdlcy5nZXQoKGssIE5vbmUpLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGQobmV4dCwgKG5rLCBpKzEpKQotCi0gICAgICAgICAgICBpZiBwYXJlbnQgPT0gaToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBmb3IgcnVsZSBpbiBzZWxmLnN0YXRlc1tzdGF0ZV0uY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgbGhzLCByaHMgPSBydWxlCi0gICAgICAgICAgICAgICAgZm9yIHBpdGVtIGluIHNldHNbcGFyZW50XToKLSAgICAgICAgICAgICAgICAgICAgcHN0YXRlLCBwcGFyZW50ID0gcGl0ZW0KLSAgICAgICAgICAgICAgICAgICAgI2sgPSBzZWxmLmdvdG8ocHN0YXRlLCBsaHMpCi0gICAgICAgICAgICAgICAgICAgIGsgPSBzZWxmLmVkZ2VzLmdldCgocHN0YXRlLCBsaHMpLCBOb25lKQotICAgICAgICAgICAgICAgICAgICBpZiBrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgd2h5ID0gKGl0ZW0sIGksIHJ1bGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcHRyID0gKHBpdGVtLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAjc2VsZi5hZGQoY3VyLCAoaywgcHBhcmVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICBpLCBwcHRyLCB3aHkpCi0gICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLXYKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyA9IChrLCBwcGFyZW50KQotICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gKG5ldywgaSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5ldyBub3QgaW4gY3VyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubGlua3Nba2V5XSA9IFtdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyLmFwcGVuZChuZXcpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmtzW2tleV0uYXBwZW5kKChwcHRyLCB3aHkpKQotICAgICAgICAgICAgICAgICAgICAgICAgI0lOTElORUQgLS1eCi0gICAgICAgICAgICAgICAgICAgICAgICAjbmsgPSBzZWxmLmdvdG8oaywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5rID0gc2VsZi5lZGdlcy5nZXQoKGssIE5vbmUpLCBOb25lKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmsgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGYuYWRkKGN1ciwgKG5rLCBpKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjSU5MSU5FRCAtLXYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgPSAobmssIGkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3IG5vdCBpbiBjdXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ci5hcHBlbmQobmV3KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNJTkxJTkVEIC0tXgotCi0gICAgZGVmIHByZWRlY2Vzc29yKHNlbGYsIGtleSwgY2F1c2FsKToKLSAgICAgICAgZm9yIHAsIGMgaW4gc2VsZi5saW5rc1trZXldOgotICAgICAgICAgICAgaWYgYyA9PSBjYXVzYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHAKLSAgICAgICAgYXNzZXJ0IDAKLQotICAgIGRlZiBjYXVzYWwoc2VsZiwga2V5KToKLSAgICAgICAgbGlua3MgPSBzZWxmLmxpbmtzW2tleV0KLSAgICAgICAgaWYgbGVuKGxpbmtzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIGxpbmtzWzBdWzFdCi0gICAgICAgIGNob2ljZXMgPSBbXQotICAgICAgICBydWxlMmNhdXNlID0ge30KLSAgICAgICAgZm9yIHAsIGMgaW4gbGlua3M6Ci0gICAgICAgICAgICBydWxlID0gY1syXQotICAgICAgICAgICAgY2hvaWNlcy5hcHBlbmQocnVsZSkKLSAgICAgICAgICAgIHJ1bGUyY2F1c2VbcnVsZV0gPSBjCi0gICAgICAgIHJldHVybiBydWxlMmNhdXNlW3NlbGYuYW1iaWd1aXR5KGNob2ljZXMpXQotCi0gICAgZGVmIGRlcml2ZUVwc2lsb24oc2VsZiwgbnQpOgotICAgICAgICBpZiBsZW4oc2VsZi5uZXdydWxlc1tudF0pID4gMToKLSAgICAgICAgICAgIHJ1bGUgPSBzZWxmLmFtYmlndWl0eShzZWxmLm5ld3J1bGVzW250XSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJ1bGUgPSBzZWxmLm5ld3J1bGVzW250XVswXQotICAgICAgICAjb3V0cHV0KHJ1bGUpCi0KLSAgICAgICAgcmhzID0gcnVsZVsxXQotICAgICAgICBhdHRyID0gW05vbmVdICogbGVuKHJocykKLQotICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocmhzKS0xLCAtMSwgLTEpOgotICAgICAgICAgICAgYXR0cltpXSA9IHNlbGYuZGVyaXZlRXBzaWxvbihyaHNbaV0pCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bGUyZnVuY1tzZWxmLm5ldzJvbGRbcnVsZV1dKGF0dHIpCi0KLSAgICBkZWYgYnVpbGRUcmVlKHNlbGYsIG50LCBpdGVtLCB0b2tlbnMsIGspOgotICAgICAgICBzdGF0ZSwgcGFyZW50ID0gaXRlbQotCi0gICAgICAgIGNob2ljZXMgPSBbXQotICAgICAgICBmb3IgcnVsZSBpbiBzZWxmLnN0YXRlc1tzdGF0ZV0uY29tcGxldGU6Ci0gICAgICAgICAgICBpZiBydWxlWzBdID09IG50OgotICAgICAgICAgICAgICAgIGNob2ljZXMuYXBwZW5kKHJ1bGUpCi0gICAgICAgIHJ1bGUgPSBjaG9pY2VzWzBdCi0gICAgICAgIGlmIGxlbihjaG9pY2VzKSA+IDE6Ci0gICAgICAgICAgICBydWxlID0gc2VsZi5hbWJpZ3VpdHkoY2hvaWNlcykKLSAgICAgICAgI291dHB1dChydWxlKQotCi0gICAgICAgIHJocyA9IHJ1bGVbMV0KLSAgICAgICAgYXR0ciA9IFtOb25lXSAqIGxlbihyaHMpCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJocyktMSwgLTEsIC0xKToKLSAgICAgICAgICAgIHN5bSA9IHJoc1tpXQotICAgICAgICAgICAgaWYgc3ltIG5vdCBpbiBzZWxmLm5ld3J1bGVzOgotICAgICAgICAgICAgICAgIGlmIHN5bSAhPSBzZWxmLl9CT0Y6Ci0gICAgICAgICAgICAgICAgICAgIGF0dHJbaV0gPSB0b2tlbnNbay0xXQotICAgICAgICAgICAgICAgICAgICBrZXkgPSAoaXRlbSwgaykKLSAgICAgICAgICAgICAgICAgICAgaXRlbSwgayA9IHNlbGYucHJlZGVjZXNzb3Ioa2V5LCBOb25lKQotICAgICAgICAgICAgI2VsaWYgc2VsZi5pc251bGxhYmxlKHN5bSk6Ci0gICAgICAgICAgICBlbGlmIHNlbGYuX05VTExBQkxFID09IHN5bVswOmxlbihzZWxmLl9OVUxMQUJMRSldOgotICAgICAgICAgICAgICAgIGF0dHJbaV0gPSBzZWxmLmRlcml2ZUVwc2lsb24oc3ltKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrZXkgPSAoaXRlbSwgaykKLSAgICAgICAgICAgICAgICB3aHkgPSBzZWxmLmNhdXNhbChrZXkpCi0gICAgICAgICAgICAgICAgYXR0cltpXSA9IHNlbGYuYnVpbGRUcmVlKHN5bSwgd2h5WzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMsIHdoeVsxXSkKLSAgICAgICAgICAgICAgICBpdGVtLCBrID0gc2VsZi5wcmVkZWNlc3NvcihrZXksIHdoeSkKLSAgICAgICAgcmV0dXJuIHNlbGYucnVsZTJmdW5jW3NlbGYubmV3Mm9sZFtydWxlXV0oYXR0cikKLQotICAgIGRlZiBhbWJpZ3VpdHkoc2VsZiwgcnVsZXMpOgotICAgICAgICAjCi0gICAgICAgICMgIFhYWCAtIHByb2JsZW0gaGVyZSBhbmQgaW4gY29sbGVjdFJ1bGVzKCkgaWYgdGhlIHNhbWUgcnVsZQotICAgICAgICAjICAgICAgICBhcHBlYXJzIGluID4xIG1ldGhvZC4gIEFsc28gdW5kZWZpbmVkIHJlc3VsdHMgaWYgcnVsZXMKLSAgICAgICAgIyAgICAgICAgY2F1c2luZyB0aGUgYW1iaWd1aXR5IGFwcGVhciBpbiB0aGUgc2FtZSBtZXRob2QuCi0gICAgICAgICMKLSAgICAgICAgc29ydGxpc3QgPSBbXQotICAgICAgICBuYW1lMmluZGV4ID0ge30KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJ1bGVzKSk6Ci0gICAgICAgICAgICBsaHMsIHJocyA9IHJ1bGUgPSBydWxlc1tpXQotICAgICAgICAgICAgbmFtZSA9IHNlbGYucnVsZTJuYW1lW3NlbGYubmV3Mm9sZFtydWxlXV0KLSAgICAgICAgICAgIHNvcnRsaXN0LmFwcGVuZCgobGVuKHJocyksIG5hbWUpKQotICAgICAgICAgICAgbmFtZTJpbmRleFtuYW1lXSA9IGkKLSAgICAgICAgc29ydGxpc3Quc29ydCgpCi0gICAgICAgIGxpc3QgPSBbYiBmb3IgYSwgYiBpbiBzb3J0bGlzdF0KLSAgICAgICAgcmV0dXJuIHJ1bGVzW25hbWUyaW5kZXhbc2VsZi5yZXNvbHZlKGxpc3QpXV0KLQotICAgIGRlZiByZXNvbHZlKHNlbGYsIGxpc3QpOgotICAgICAgICAjCi0gICAgICAgICMgIFJlc29sdmUgYW1iaWd1aXR5IGluIGZhdm9yIG9mIHRoZSBzaG9ydGVzdCBSSFMuCi0gICAgICAgICMgIFNpbmNlIHdlIHdhbGsgdGhlIHRyZWUgZnJvbSB0aGUgdG9wIGRvd24sIHRoaXMKLSAgICAgICAgIyAgc2hvdWxkIGVmZmVjdGl2ZWx5IHJlc29sdmUgaW4gZmF2b3Igb2YgYSAic2hpZnQiLgotICAgICAgICAjCi0gICAgICAgIHJldHVybiBsaXN0WzBdCi0KLSMKLSMgIEdlbmVyaWNBU1RCdWlsZGVyIGF1dG9tYWdpY2FsbHkgY29uc3RydWN0cyBhIGNvbmNyZXRlL2Fic3RyYWN0IHN5bnRheCB0cmVlCi0jICBmb3IgYSBnaXZlbiBpbnB1dC4gIFRoZSBleHRyYSBhcmd1bWVudCBpcyBhIGNsYXNzIChub3QgYW4gaW5zdGFuY2UhKQotIyAgd2hpY2ggc3VwcG9ydHMgdGhlICJfX3NldHNsaWNlX18iIGFuZCAiX19sZW5fXyIgbWV0aG9kcy4KLSMKLSMgIFhYWCAtIHNpbGVudGx5IG92ZXJyaWRlcyBhbnkgdXNlciBjb2RlIGluIG1ldGhvZHMuCi0jCi0KLWNsYXNzIEdlbmVyaWNBU1RCdWlsZGVyKEdlbmVyaWNQYXJzZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBBU1QsIHN0YXJ0KToKLSAgICAgICAgR2VuZXJpY1BhcnNlci5fX2luaXRfXyhzZWxmLCBzdGFydCkKLSAgICAgICAgc2VsZi5BU1QgPSBBU1QKLQotICAgIGRlZiBwcmVwcm9jZXNzKHNlbGYsIHJ1bGUsIGZ1bmMpOgotICAgICAgICByZWJpbmQgPSBsYW1iZGEgbGhzLCBzZWxmPXNlbGY6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBhcmdzLCBsaHM9bGhzLCBzZWxmPXNlbGY6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWlsZEFTVE5vZGUoYXJncywgbGhzKQotICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgcmV0dXJuIHJ1bGUsIHJlYmluZChsaHMpCi0KLSAgICBkZWYgYnVpbGRBU1ROb2RlKHNlbGYsIGFyZ3MsIGxocyk6Ci0gICAgICAgIGNoaWxkcmVuID0gW10KLSAgICAgICAgZm9yIGFyZyBpbiBhcmdzOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIHNlbGYuQVNUKToKLSAgICAgICAgICAgICAgICBjaGlsZHJlbi5hcHBlbmQoYXJnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGlsZHJlbi5hcHBlbmQoc2VsZi50ZXJtaW5hbChhcmcpKQotICAgICAgICByZXR1cm4gc2VsZi5ub250ZXJtaW5hbChsaHMsIGNoaWxkcmVuKQotCi0gICAgZGVmIHRlcm1pbmFsKHNlbGYsIHRva2VuKTogICAgICByZXR1cm4gdG9rZW4KLQotICAgIGRlZiBub250ZXJtaW5hbChzZWxmLCB0eXBlLCBhcmdzKToKLSAgICAgICAgcnYgPSBzZWxmLkFTVCh0eXBlKQotICAgICAgICBydls6bGVuKGFyZ3MpXSA9IGFyZ3MKLSAgICAgICAgcmV0dXJuIHJ2Ci0KLSMKLSMgIEdlbmVyaWNBU1RUcmF2ZXJzYWwgaXMgYSBWaXNpdG9yIHBhdHRlcm4gYWNjb3JkaW5nIHRvIERlc2lnbiBQYXR0ZXJucy4gIEZvcgotIyAgZWFjaCBub2RlIGl0IGF0dGVtcHRzIHRvIGludm9rZSB0aGUgbWV0aG9kIG5fPG5vZGUgdHlwZT4sIGZhbGxpbmcKLSMgIGJhY2sgb250byB0aGUgZGVmYXVsdCgpIG1ldGhvZCBpZiB0aGUgbl8qIGNhbid0IGJlIGZvdW5kLiAgVGhlIHByZW9yZGVyCi0jICB0cmF2ZXJzYWwgYWxzbyBsb29rcyBmb3IgYW4gZXhpdCBob29rIG5hbWVkIG5fPG5vZGUgdHlwZT5fZXhpdCAobm8gZGVmYXVsdAotIyAgcm91dGluZSBpcyBjYWxsZWQgaWYgaXQncyBub3QgZm91bmQpLiAgVG8gcHJlbWF0dXJlbHkgaGFsdCB0cmF2ZXJzYWwKLSMgIG9mIGEgc3VidHJlZSwgY2FsbCB0aGUgcHJ1bmUoKSBtZXRob2QgLS0gdGhpcyBvbmx5IG1ha2VzIHNlbnNlIGZvciBhCi0jICBwcmVvcmRlciB0cmF2ZXJzYWwuICBOb2RlIHR5cGUgaXMgZGV0ZXJtaW5lZCB2aWEgdGhlIHR5cGVzdHJpbmcoKSBtZXRob2QuCi0jCi0KLWNsYXNzIEdlbmVyaWNBU1RUcmF2ZXJzYWxQcnVuaW5nRXhjZXB0aW9uOgotICAgIHBhc3MKLQotY2xhc3MgR2VuZXJpY0FTVFRyYXZlcnNhbDoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXN0KToKLSAgICAgICAgc2VsZi5hc3QgPSBhc3QKLQotICAgIGRlZiB0eXBlc3RyaW5nKHNlbGYsIG5vZGUpOgotICAgICAgICByZXR1cm4gbm9kZS50eXBlCi0KLSAgICBkZWYgcHJ1bmUoc2VsZik6Ci0gICAgICAgIHJhaXNlIEdlbmVyaWNBU1RUcmF2ZXJzYWxQcnVuaW5nRXhjZXB0aW9uCi0KLSAgICBkZWYgcHJlb3JkZXIoc2VsZiwgbm9kZT1Ob25lKToKLSAgICAgICAgaWYgbm9kZSBpcyBOb25lOgotICAgICAgICAgICAgbm9kZSA9IHNlbGYuYXN0Ci0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmFtZSA9ICduXycgKyBzZWxmLnR5cGVzdHJpbmcobm9kZSkKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkKLSAgICAgICAgICAgICAgICBmdW5jKG5vZGUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdChub2RlKQotICAgICAgICBleGNlcHQgR2VuZXJpY0FTVFRyYXZlcnNhbFBydW5pbmdFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmb3Iga2lkIGluIG5vZGU6Ci0gICAgICAgICAgICBzZWxmLnByZW9yZGVyKGtpZCkKLQotICAgICAgICBuYW1lID0gbmFtZSArICdfZXhpdCcKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKLSAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsIG5hbWUpCi0gICAgICAgICAgICBmdW5jKG5vZGUpCi0KLSAgICBkZWYgcG9zdG9yZGVyKHNlbGYsIG5vZGU9Tm9uZSk6Ci0gICAgICAgIGlmIG5vZGUgaXMgTm9uZToKLSAgICAgICAgICAgIG5vZGUgPSBzZWxmLmFzdAotCi0gICAgICAgIGZvciBraWQgaW4gbm9kZToKLSAgICAgICAgICAgIHNlbGYucG9zdG9yZGVyKGtpZCkKLQotICAgICAgICBuYW1lID0gJ25fJyArIHNlbGYudHlwZXN0cmluZyhub2RlKQotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIG5hbWUpOgotICAgICAgICAgICAgZnVuYyA9IGdldGF0dHIoc2VsZiwgbmFtZSkKLSAgICAgICAgICAgIGZ1bmMobm9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZGVmYXVsdChub2RlKQotCi0KLSAgICBkZWYgZGVmYXVsdChzZWxmLCBub2RlKToKLSAgICAgICAgcGFzcwotCi0jCi0jICBHZW5lcmljQVNUTWF0Y2hlci4gIEFTVCBub2RlcyBtdXN0IGhhdmUgIl9fZ2V0aXRlbV9fIiBhbmQgIl9fY21wX18iCi0jICBpbXBsZW1lbnRlZC4KLSMKLSMgIFhYWCAtIG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IGhvdyBHZW5lcmljUGFyc2VyIHdhbGtzIHRoZSBwYXJzZSB0cmVlLgotIwotCi1jbGFzcyBHZW5lcmljQVNUTWF0Y2hlcihHZW5lcmljUGFyc2VyKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhcnQsIGFzdCk6Ci0gICAgICAgIEdlbmVyaWNQYXJzZXIuX19pbml0X18oc2VsZiwgc3RhcnQpCi0gICAgICAgIHNlbGYuYXN0ID0gYXN0Ci0KLSAgICBkZWYgcHJlcHJvY2VzcyhzZWxmLCBydWxlLCBmdW5jKToKLSAgICAgICAgcmViaW5kID0gbGFtYmRhIGZ1bmMsIHNlbGY9c2VsZjogXAotICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGFyZ3MsIGZ1bmM9ZnVuYywgc2VsZj1zZWxmOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm91bmRNYXRjaChhcmdzLCBmdW5jKQotICAgICAgICBsaHMsIHJocyA9IHJ1bGUKLSAgICAgICAgcmhzbGlzdCA9IGxpc3QocmhzKQotICAgICAgICByaHNsaXN0LnJldmVyc2UoKQotCi0gICAgICAgIHJldHVybiAobGhzLCB0dXBsZShyaHNsaXN0KSksIHJlYmluZChmdW5jKQotCi0gICAgZGVmIGZvdW5kTWF0Y2goc2VsZiwgYXJncywgZnVuYyk6Ci0gICAgICAgIGZ1bmMoYXJnc1stMV0pCi0gICAgICAgIHJldHVybiBhcmdzWy0xXQotCi0gICAgZGVmIG1hdGNoX3Ioc2VsZiwgbm9kZSk6Ci0gICAgICAgIHNlbGYuaW5wdXQuaW5zZXJ0KDAsIG5vZGUpCi0gICAgICAgIGNoaWxkcmVuID0gMAotCi0gICAgICAgIGZvciBjaGlsZCBpbiBub2RlOgotICAgICAgICAgICAgaWYgY2hpbGRyZW4gPT0gMDoKLSAgICAgICAgICAgICAgICBzZWxmLmlucHV0Lmluc2VydCgwLCAnKCcpCi0gICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuICsgMQotICAgICAgICAgICAgc2VsZi5tYXRjaF9yKGNoaWxkKQotCi0gICAgICAgIGlmIGNoaWxkcmVuID4gMDoKLSAgICAgICAgICAgIHNlbGYuaW5wdXQuaW5zZXJ0KDAsICcpJykKLQotICAgIGRlZiBtYXRjaChzZWxmLCBhc3Q9Tm9uZSk6Ci0gICAgICAgIGlmIGFzdCBpcyBOb25lOgotICAgICAgICAgICAgYXN0ID0gc2VsZi5hc3QKLSAgICAgICAgc2VsZi5pbnB1dCA9IFtdCi0KLSAgICAgICAgc2VsZi5tYXRjaF9yKGFzdCkKLSAgICAgICAgc2VsZi5wYXJzZShzZWxmLmlucHV0KQotCi0gICAgZGVmIHJlc29sdmUoc2VsZiwgbGlzdCk6Ci0gICAgICAgICMKLSAgICAgICAgIyAgUmVzb2x2ZSBhbWJpZ3VpdHkgaW4gZmF2b3Igb2YgdGhlIGxvbmdlc3QgUkhTLgotICAgICAgICAjCi0gICAgICAgIHJldHVybiBsaXN0Wy0xXQotCi1kZWYgX2R1bXAodG9rZW5zLCBzZXRzLCBzdGF0ZXMpOgotICAgIGZvciBpIGluIHJhbmdlKGxlbihzZXRzKSk6Ci0gICAgICAgIG91dHB1dCgnc2V0ICVkJyAlIGkpCi0gICAgICAgIGZvciBpdGVtIGluIHNldHNbaV06Ci0gICAgICAgICAgICBvdXRwdXQoJ1x0JywgaXRlbSkKLSAgICAgICAgICAgIGZvciAobGhzLCByaHMpLCBwb3MgaW4gc3RhdGVzW2l0ZW1bMF1dLml0ZW1zOgotICAgICAgICAgICAgICAgIG91dHB1dCgnXHRcdCcsIGxocywgJzo6PScsIGVuZD0nJykKLSAgICAgICAgICAgICAgICBvdXRwdXQoJyAnLmpvaW4ocmhzWzpwb3NdKSwgZW5kPScnKQotICAgICAgICAgICAgICAgIG91dHB1dCgnLicsIGVuZD0nJykKLSAgICAgICAgICAgICAgICBvdXRwdXQoJyAnLmpvaW4ocmhzW3BvczpdKSkKLSAgICAgICAgaWYgaSA8IGxlbih0b2tlbnMpOgotICAgICAgICAgICAgb3V0cHV0KCkKLSAgICAgICAgICAgIG91dHB1dCgndG9rZW4gJXMnICUgc3RyKHRva2Vuc1tpXSkpCi0gICAgICAgICAgICBvdXRwdXQoKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDVlMDQxZWEuLjA0YmFlYWYgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTk4LDEwICs5OCwxMyBAQAogICAgICJET1VCTEVTTEFTSCIsCiAgICAgIkRPVUJMRVNMQVNIRVFVQUwiLAogICAgICJBVCIsCisgICAgIkFURVFVQUwiLAogICAgICJSQVJST1ciLAogICAgICJFTExJUFNJUyIsCiAgICAgLyogVGhpcyB0YWJsZSBtdXN0IG1hdGNoIHRoZSAjZGVmaW5lcyBpbiB0b2tlbi5oISAqLwogICAgICJPUCIsCisgICAgIkFXQUlUIiwKKyAgICAiQVNZTkMiLAogICAgICI8RVJST1JUT0tFTj4iLAogICAgICI8Tl9UT0tFTlM+IgogfTsKQEAgLTEyMyw2ICsxMjYsNyBAQAogICAgIHRvay0+dGFic2l6ZSA9IFRBQlNJWkU7CiAgICAgdG9rLT5pbmRlbnQgPSAwOwogICAgIHRvay0+aW5kc3RhY2tbMF0gPSAwOworCiAgICAgdG9rLT5hdGJvbCA9IDE7CiAgICAgdG9rLT5wZW5kaW4gPSAwOwogICAgIHRvay0+cHJvbXB0ID0gdG9rLT5uZXh0cHJvbXB0ID0gTlVMTDsKQEAgLTE0Myw2ICsxNDcsMTEgQEAKICAgICB0b2stPmRlY29kaW5nX3JlYWRsaW5lID0gTlVMTDsKICAgICB0b2stPmRlY29kaW5nX2J1ZmZlciA9IE5VTEw7CiAjZW5kaWYKKworICAgIHRvay0+YXN5bmNfZGVmID0gMDsKKyAgICB0b2stPmFzeW5jX2RlZl9pbmRlbnQgPSAwOworICAgIHRvay0+YXN5bmNfZGVmX25sID0gMDsKKwogICAgIHJldHVybiB0b2s7CiB9CiAKQEAgLTExMzEsNyArMTE0MCw3IEBACiAgICAgY2FzZSAnfSc6ICAgICAgICAgICByZXR1cm4gUkJSQUNFOwogICAgIGNhc2UgJ14nOiAgICAgICAgICAgcmV0dXJuIENJUkNVTUZMRVg7CiAgICAgY2FzZSAnfic6ICAgICAgICAgICByZXR1cm4gVElMREU7Ci0gICAgY2FzZSAnQCc6ICAgICAgIHJldHVybiBBVDsKKyAgICBjYXNlICdAJzogICAgICAgICAgIHJldHVybiBBVDsKICAgICBkZWZhdWx0OiAgICAgICAgICAgIHJldHVybiBPUDsKICAgICB9CiB9CkBAIC0xMjA3LDYgKzEyMTYsMTEgQEAKICAgICAgICAgY2FzZSAnPSc6ICAgICAgICAgICAgICAgcmV0dXJuIENJUkNVTUZMRVhFUVVBTDsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNlICdAJzoKKyAgICAgICAgc3dpdGNoIChjMikgeworICAgICAgICBjYXNlICc9JzogICAgICAgICAgICAgICByZXR1cm4gQVRFUVVBTDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIE9QOwogfQpAQCAtMTQyNCw2ICsxNDM4LDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAodG9rLT5hc3luY19kZWYKKyAgICAgICAgJiYgIWJsYW5rbGluZQorICAgICAgICAmJiB0b2stPmxldmVsID09IDAKKyAgICAgICAgLyogVGhlcmUgd2FzIGEgTkVXTElORSBhZnRlciBBU1lOQyBERUYsCisgICAgICAgICAgIHNvIHdlJ3JlIHBhc3QgdGhlIHNpZ25hdHVyZS4gKi8KKyAgICAgICAgJiYgdG9rLT5hc3luY19kZWZfbmwKKyAgICAgICAgLyogQ3VycmVudCBpbmRlbnRhdGlvbiBsZXZlbCBpcyBsZXNzIHRoYW4gd2hlcmUKKyAgICAgICAgICAgdGhlIGFzeW5jIGZ1bmN0aW9uIHdhcyBkZWZpbmVkICovCisgICAgICAgICYmIHRvay0+YXN5bmNfZGVmX2luZGVudCA+PSB0b2stPmluZGVudCkKKyAgICB7CisgICAgICAgIHRvay0+YXN5bmNfZGVmID0gMDsKKyAgICAgICAgdG9rLT5hc3luY19kZWZfaW5kZW50ID0gMDsKKyAgICAgICAgdG9rLT5hc3luY19kZWZfbmwgPSAwOworICAgIH0KKwogIGFnYWluOgogICAgIHRvay0+c3RhcnQgPSBOVUxMOwogICAgIC8qIFNraXAgc3BhY2VzICovCkBAIC0xNDc1LDYgKzE1MDQsNDIgQEAKICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOworCisgICAgICAgIC8qIGFzeW5jL2F3YWl0IHBhcnNpbmcgYmxvY2suICovCisgICAgICAgIGlmICh0b2stPmN1ciAtIHRvay0+c3RhcnQgPT0gNSkgeworICAgICAgICAgICAgLyogQ3VycmVudCB0b2tlbiBsZW5ndGggaXMgNS4gKi8KKyAgICAgICAgICAgIGlmICh0b2stPmFzeW5jX2RlZikgeworICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhbiAnYXN5bmMgZGVmJyBmdW5jdGlvbi4gKi8KKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBU1lOQzsKKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhd2FpdCIsIDUpID09IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBV0FJVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogVGhlIGN1cnJlbnQgdG9rZW4gaXMgJ2FzeW5jJy4KKyAgICAgICAgICAgICAgICAgICBMb29rIGFoZWFkIG9uZSB0b2tlbi4qLworCisgICAgICAgICAgICAgICAgc3RydWN0IHRva19zdGF0ZSBhaGVhZF90b2s7CisgICAgICAgICAgICAgICAgY2hhciAqYWhlYWRfdG9rX3N0YXJ0ID0gTlVMTCwgKmFoZWFkX3Rva19lbmQgPSBOVUxMOworICAgICAgICAgICAgICAgIGludCBhaGVhZF90b2tfa2luZDsKKworICAgICAgICAgICAgICAgIG1lbWNweSgmYWhlYWRfdG9rLCB0b2ssIHNpemVvZihhaGVhZF90b2spKTsKKyAgICAgICAgICAgICAgICBhaGVhZF90b2tfa2luZCA9IHRva19nZXQoJmFoZWFkX3RvaywgJmFoZWFkX3Rva19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFoZWFkX3Rva19lbmQpOworCisgICAgICAgICAgICAgICAgaWYgKGFoZWFkX3Rva19raW5kID09IE5BTUUKKyAgICAgICAgICAgICAgICAgICAgJiYgYWhlYWRfdG9rLmN1ciAtIGFoZWFkX3Rvay5zdGFydCA9PSAzCisgICAgICAgICAgICAgICAgICAgICYmIG1lbWNtcChhaGVhZF90b2suc3RhcnQsICJkZWYiLCAzKSA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogVGhlIG5leHQgdG9rZW4gaXMgZ29pbmcgdG8gYmUgJ2RlZicsIHNvIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nICdhc3luYycgTkFNRSB0b2tlbiwgd2UgcmV0dXJuIEFTWU5DLiAqLworICAgICAgICAgICAgICAgICAgICB0b2stPmFzeW5jX2RlZl9pbmRlbnQgPSB0b2stPmluZGVudDsKKyAgICAgICAgICAgICAgICAgICAgdG9rLT5hc3luY19kZWYgPSAxOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVNZTkM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIE5BTUU7CiAgICAgfQogCkBAIC0xNDg2LDYgKzE1NTEsMTEgQEAKICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1ciAtIDE7IC8qIExlYXZlICdcbicgb3V0IG9mIHRoZSBzdHJpbmcgKi8KICAgICAgICAgdG9rLT5jb250X2xpbmUgPSAwOworICAgICAgICBpZiAodG9rLT5hc3luY19kZWYpIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHNvbWV3aGVyZSBpbnNpZGUgYW4gJ2FzeW5jIGRlZicgZnVuY3Rpb24sIGFuZAorICAgICAgICAgICAgICAgd2UndmUgZW5jb3VudGVyZWQgYSBORVdMSU5FIGFmdGVyIGl0cyBzaWduYXR1cmUuICovCisgICAgICAgICAgICB0b2stPmFzeW5jX2RlZl9ubCA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5FV0xJTkU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmggYi9QYXJzZXIvdG9rZW5pemVyLmgKaW5kZXggMWNlNmVlYi4uYWYwNTNlMiAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5oCisrKyBiL1BhcnNlci90b2tlbml6ZXIuaApAQCAtNjUsNiArNjUsMTMgQEAKICAgICBjb25zdCBjaGFyKiBlbmM7ICAgICAgICAvKiBFbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgc3RyLiAqLwogICAgIGNvbnN0IGNoYXIqIHN0cjsKICAgICBjb25zdCBjaGFyKiBpbnB1dDsgLyogVG9rZW5pemVyJ3MgbmV3bGluZSB0cmFuc2xhdGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gKi8KKworICAgIC8qIGFzeW5jL2F3YWl0IHJlbGF0ZWQgZmllbGRzOyBjYW4gYmUgcmVtb3ZlZCBpbiAzLjcgd2hlbiBhc3luYyBhbmQgYXdhaXQKKyAgICAgICBiZWNvbWUgbm9ybWFsIGtleXdvcmRzLiAqLworICAgIGludCBhc3luY19kZWY7ICAgICAgICAvKiA9MSBpZiB0b2tlbnMgYXJlIGluc2lkZSBhbiAnYXN5bmMgZGVmJyBib2R5LiAqLworICAgIGludCBhc3luY19kZWZfaW5kZW50OyAvKiBJbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUgb3V0ZXJtb3N0ICdhc3luYyBkZWYnLiAqLworICAgIGludCBhc3luY19kZWZfbmw7ICAgICAvKiA9MSBpZiB0aGUgb3V0ZXJtb3N0ICdhc3luYyBkZWYnIGhhZCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVXTElORSB0b2tlbiBhZnRlciBpdC4gKi8KIH07CiAKIGV4dGVybiBzdHJ1Y3QgdG9rX3N0YXRlICpQeVRva2VuaXplcl9Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKiwgaW50KTsKZGlmZiAtLWdpdCBhL1Byb2dyYW1zL1JFQURNRSBiL1Byb2dyYW1zL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjQ1NzhiCi0tLSAvZGV2L251bGwKKysrIGIvUHJvZ3JhbXMvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1NvdXJjZSBmaWxlcyBmb3IgYmluYXJ5IGV4ZWN1dGFibGVzIChhcyBvcHBvc2VkIHRvIHNoYXJlZCBtb2R1bGVzKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jIGIvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpzaW1pbGFyaXR5IGluZGV4IDgxJQpyZW5hbWUgZnJvbSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKcmVuYW1lIHRvIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggNTdiMWFjMC4uYWVjYjEyMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCisrKyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKQEAgLTEyLDEyICsxMiwxMSBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2VuZGlmCiAKLQogLyogVG8gYXZvaWQgYSBjaXJjdWxhciBkZXBlbmRlbmN5IG9uIGZyb3plbi5vLCB3ZSBjcmVhdGUgb3VyIG93biBzdHJ1Y3R1cmUKICAgIG9mIGZyb3plbiBtb2R1bGVzIGluc3RlYWQsIGxlZnQgZGVsaWJlcmF0ZWx5IGJsYW5rIHNvIGFzIHRvIGF2b2lkCiAgICB1bmludGVudGlvbmFsIGltcG9ydCBvZiBhIHN0YWxlIHZlcnNpb24gb2YgX2Zyb3plbl9pbXBvcnRsaWIuICovCiAKLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CiAgICAgezAsIDAsIDB9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yOCwxOCArMjcsMTkgQEAKIGNvbnN0IHN0cnVjdCBfZnJvemVuICpQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzOwogI2VuZGlmCiAKLWNvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovIjsKK2NvbnN0IGNoYXIgaGVhZGVyW10gPSAiLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLyI7CiAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotICAgIGNoYXIgKmlucGF0aCwgKm91dHBhdGg7CisgICAgY2hhciAqaW5wYXRoLCAqb3V0cGF0aCwgKmNvZGVfbmFtZTsKICAgICBGSUxFICppbmZpbGUgPSBOVUxMLCAqb3V0ZmlsZSA9IE5VTEw7Ci0gICAgc3RydWN0IHN0YXQgc3Q7CisgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0dXM7CiAgICAgc2l6ZV90IHRleHRfc2l6ZSwgZGF0YV9zaXplLCBuOwogICAgIGNoYXIgKnRleHQgPSBOVUxMOwogICAgIHVuc2lnbmVkIGNoYXIgKmRhdGE7CiAgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMLCAqbWFyc2hhbGxlZCA9IE5VTEw7CisgICAgaW50IGlzX2Jvb3RzdHJhcCA9IDE7CiAKICAgICBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzID0gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CiAKQEAgLTU0LDExICs1NCwxMSBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHJlYWRpbmdcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGlmIChmc3RhdChmaWxlbm8oaW5maWxlKSwgJnN0KSkgeworICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oaW5maWxlKSwgJnN0YXR1cykpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZnN0YXQgJyVzJ1xuIiwgaW5wYXRoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgdGV4dF9zaXplID0gc3Quc3Rfc2l6ZTsKKyAgICB0ZXh0X3NpemUgPSBzdGF0dXMuc3Rfc2l6ZTsKICAgICB0ZXh0ID0gKGNoYXIgKikgbWFsbG9jKHRleHRfc2l6ZSArIDEpOwogICAgIGlmICh0ZXh0ID09IE5VTEwpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgYWxsb2NhdGUgJWxkIGJ5dGVzXG4iLCAobG9uZykgdGV4dF9zaXplKTsKQEAgLTgyLDggKzgyLDE0IEBACiAgICAgLyogRG9uJ3QgaW5zdGFsbCBpbXBvcnRsaWIsIHNpbmNlIGl0IGNvdWxkIGV4ZWN1dGUgb3V0ZGF0ZWQgYnl0ZWNvZGUuICovCiAgICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKDEsIDApOwogCi0gICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmdFeEZsYWdzKHRleHQsICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQsIE5VTEwsIDApOworICAgIGlmIChzdHJzdHIoaW5wYXRoLCAiX2V4dGVybmFsIikgIT0gTlVMTCkgeworICAgICAgICBpc19ib290c3RyYXAgPSAwOworICAgIH0KKworICAgIGNvZGVfbmFtZSA9IGlzX2Jvb3RzdHJhcCA/CisgICAgICAgICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIgOgorICAgICAgICAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4iOworICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nRXhGbGFncyh0ZXh0LCBjb2RlX25hbWUsIFB5X2ZpbGVfaW5wdXQsIE5VTEwsIDApOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZnJlZSh0ZXh0KTsKQEAgLTEwNiw3ICsxMTIsMTEgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZnByaW50ZihvdXRmaWxlLCAiJXNcbiIsIGhlYWRlcik7Ci0gICAgZnByaW50ZihvdXRmaWxlLCAiY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7XG4iKTsKKyAgICBpZiAoaXNfYm9vdHN0cmFwKQorICAgICAgICBmcHJpbnRmKG91dGZpbGUsICJjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHtcbiIpOworICAgIGVsc2UKKyAgICAgICAgZnByaW50ZihvdXRmaWxlLAorICAgICAgICAgICAgICAgICJjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJfZXh0ZXJuYWxbXSA9IHtcbiIpOwogICAgIGZvciAobiA9IDA7IG4gPCBkYXRhX3NpemU7IG4gKz0gMTYpIHsKICAgICAgICAgc2l6ZV90IGksIGVuZCA9IFB5X01JTihuICsgMTYsIGRhdGFfc2l6ZSk7CiAgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiAgICAiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RlbWJlZC5jIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIE1vZHVsZXMvX3Rlc3RlbWJlZC5jCnJlbmFtZSB0byBQcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYTIxZDI1MS4uMzlmZjA5NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKysrIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCkBAIC0xMDksMTEgKzEwOSwxMSBAQAogICAgIHByaW50ZigiLS0tIFVzZSBkZWZhdWx0cyAtLS1cbiIpOwogICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoTlVMTCwgTlVMTCk7CiAgICAgcHJpbnRmKCItLS0gU2V0IGVycm9ycyBvbmx5IC0tLVxuIik7Ci0gICAgY2hlY2tfc3RkaW9fZGV0YWlscyhOVUxMLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgY2hlY2tfc3RkaW9fZGV0YWlscyhOVUxMLCAiaWdub3JlIik7CiAgICAgcHJpbnRmKCItLS0gU2V0IGVuY29kaW5nIG9ubHkgLS0tXG4iKTsKICAgICBjaGVja19zdGRpb19kZXRhaWxzKCJsYXRpbi0xIiwgTlVMTCk7CiAgICAgcHJpbnRmKCItLS0gU2V0IGVuY29kaW5nIGFuZCBlcnJvcnMgLS0tXG4iKTsKLSAgICBjaGVja19zdGRpb19kZXRhaWxzKCJsYXRpbi0xIiwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIGNoZWNrX3N0ZGlvX2RldGFpbHMoImxhdGluLTEiLCAicmVwbGFjZSIpOwogCiAgICAgLyogQ2hlY2sgY2FsbGluZyBhZnRlciBpbml0aWFsaXphdGlvbiBmYWlscyAqLwogICAgIFB5X0luaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHl0aG9uLmMgYi9Qcm9ncmFtcy9weXRob24uYwpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBNb2R1bGVzL3B5dGhvbi5jCnJlbmFtZSB0byBQcm9ncmFtcy9weXRob24uYwppbmRleCA5ODExYzAxLi4yZTVlNGUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC01Miw3ICs1Miw3IEBACiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCAiIik7CiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBhcmd2X2NvcHlbaV0gPSBfUHlfY2hhcjJ3Y2hhcihhcmd2W2ldLCBOVUxMKTsKKyAgICAgICAgYXJndl9jb3B5W2ldID0gUHlfRGVjb2RlTG9jYWxlKGFyZ3ZbaV0sIE5VTEwpOwogICAgICAgICBpZiAoIWFyZ3ZfY29weVtpXSkgewogICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShvbGRsb2MpOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYXRhbCBQeXRob24gZXJyb3I6ICIKZGlmZiAtLWdpdCBhL1B5dGhvbi9QeXRob24tYXN0LmMgYi9QeXRob24vUHl0aG9uLWFzdC5jCmluZGV4IDQ0ZmRhZmMuLjhhMmRjN2MgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtNDUsMTcgKzQ1LDIxIEBACiAgICAgImRlY29yYXRvcl9saXN0IiwKICAgICAicmV0dXJucyIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqQXN5bmNGdW5jdGlvbkRlZl90eXBlOworc3RhdGljIGNoYXIgKkFzeW5jRnVuY3Rpb25EZWZfZmllbGRzW109eworICAgICJuYW1lIiwKKyAgICAiYXJncyIsCisgICAgImJvZHkiLAorICAgICJkZWNvcmF0b3JfbGlzdCIsCisgICAgInJldHVybnMiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNsYXNzRGVmX3R5cGU7CiBfUHlfSURFTlRJRklFUihiYXNlcyk7CiBfUHlfSURFTlRJRklFUihrZXl3b3Jkcyk7Ci1fUHlfSURFTlRJRklFUihzdGFyYXJncyk7Ci1fUHlfSURFTlRJRklFUihrd2FyZ3MpOwogc3RhdGljIGNoYXIgKkNsYXNzRGVmX2ZpZWxkc1tdPXsKICAgICAibmFtZSIsCiAgICAgImJhc2VzIiwKICAgICAia2V5d29yZHMiLAotICAgICJzdGFyYXJncyIsCi0gICAgImt3YXJncyIsCiAgICAgImJvZHkiLAogICAgICJkZWNvcmF0b3JfbGlzdCIsCiB9OwpAQCAtOTEsNiArOTUsMTMgQEAKICAgICAiYm9keSIsCiAgICAgIm9yZWxzZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqQXN5bmNGb3JfdHlwZTsKK3N0YXRpYyBjaGFyICpBc3luY0Zvcl9maWVsZHNbXT17CisgICAgInRhcmdldCIsCisgICAgIml0ZXIiLAorICAgICJib2R5IiwKKyAgICAib3JlbHNlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpXaGlsZV90eXBlOwogX1B5X0lERU5USUZJRVIodGVzdCk7CiBzdGF0aWMgY2hhciAqV2hpbGVfZmllbGRzW109ewpAQCAtMTEwLDYgKzEyMSwxMSBAQAogICAgICJpdGVtcyIsCiAgICAgImJvZHkiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFzeW5jV2l0aF90eXBlOworc3RhdGljIGNoYXIgKkFzeW5jV2l0aF9maWVsZHNbXT17CisgICAgIml0ZW1zIiwKKyAgICAiYm9keSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqUmFpc2VfdHlwZTsKIF9QeV9JREVOVElGSUVSKGV4Yyk7CiBfUHlfSURFTlRJRklFUihjYXVzZSk7CkBAIC0yMzIsNiArMjQ4LDEwIEBACiAgICAgImVsdCIsCiAgICAgImdlbmVyYXRvcnMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkF3YWl0X3R5cGU7CitzdGF0aWMgY2hhciAqQXdhaXRfZmllbGRzW109eworICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqWWllbGRfdHlwZTsKIHN0YXRpYyBjaGFyICpZaWVsZF9maWVsZHNbXT17CiAgICAgInZhbHVlIiwKQEAgLTI1NCw4ICsyNzQsNiBAQAogICAgICJmdW5jIiwKICAgICAiYXJncyIsCiAgICAgImtleXdvcmRzIiwKLSAgICAic3RhcmFyZ3MiLAotICAgICJrd2FyZ3MiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk51bV90eXBlOwogX1B5X0lERU5USUZJRVIobik7CkBAIC0zNDksMTMgKzM2NywxNCBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqT3JfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKm9wZXJhdG9yX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QgKkFkZF9zaW5nbGV0b24sICpTdWJfc2luZ2xldG9uLCAqTXVsdF9zaW5nbGV0b24sCi0qRGl2X3NpbmdsZXRvbiwgKk1vZF9zaW5nbGV0b24sICpQb3dfc2luZ2xldG9uLCAqTFNoaWZ0X3NpbmdsZXRvbiwKLSpSU2hpZnRfc2luZ2xldG9uLCAqQml0T3Jfc2luZ2xldG9uLCAqQml0WG9yX3NpbmdsZXRvbiwgKkJpdEFuZF9zaW5nbGV0b24sCi0qRmxvb3JEaXZfc2luZ2xldG9uOworKk1hdE11bHRfc2luZ2xldG9uLCAqRGl2X3NpbmdsZXRvbiwgKk1vZF9zaW5nbGV0b24sICpQb3dfc2luZ2xldG9uLAorKkxTaGlmdF9zaW5nbGV0b24sICpSU2hpZnRfc2luZ2xldG9uLCAqQml0T3Jfc2luZ2xldG9uLCAqQml0WG9yX3NpbmdsZXRvbiwKKypCaXRBbmRfc2luZ2xldG9uLCAqRmxvb3JEaXZfc2luZ2xldG9uOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX29wZXJhdG9yKG9wZXJhdG9yX3R5KTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkFkZF90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqU3ViX3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpNdWx0X3R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpNYXRNdWx0X3R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpEaXZfdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk1vZF90eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqUG93X3R5cGU7CkBAIC04MTEsNyArODMwLDEwIEBACiAgICAgRnVuY3Rpb25EZWZfdHlwZSA9IG1ha2VfdHlwZSgiRnVuY3Rpb25EZWYiLCBzdG10X3R5cGUsIEZ1bmN0aW9uRGVmX2ZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUpOwogICAgIGlmICghRnVuY3Rpb25EZWZfdHlwZSkgcmV0dXJuIDA7Ci0gICAgQ2xhc3NEZWZfdHlwZSA9IG1ha2VfdHlwZSgiQ2xhc3NEZWYiLCBzdG10X3R5cGUsIENsYXNzRGVmX2ZpZWxkcywgNyk7CisgICAgQXN5bmNGdW5jdGlvbkRlZl90eXBlID0gbWFrZV90eXBlKCJBc3luY0Z1bmN0aW9uRGVmIiwgc3RtdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3luY0Z1bmN0aW9uRGVmX2ZpZWxkcywgNSk7CisgICAgaWYgKCFBc3luY0Z1bmN0aW9uRGVmX3R5cGUpIHJldHVybiAwOworICAgIENsYXNzRGVmX3R5cGUgPSBtYWtlX3R5cGUoIkNsYXNzRGVmIiwgc3RtdF90eXBlLCBDbGFzc0RlZl9maWVsZHMsIDUpOwogICAgIGlmICghQ2xhc3NEZWZfdHlwZSkgcmV0dXJuIDA7CiAgICAgUmV0dXJuX3R5cGUgPSBtYWtlX3R5cGUoIlJldHVybiIsIHN0bXRfdHlwZSwgUmV0dXJuX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFSZXR1cm5fdHlwZSkgcmV0dXJuIDA7CkBAIC04MjMsMTIgKzg0NSwxNiBAQAogICAgIGlmICghQXVnQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEZvcl90eXBlID0gbWFrZV90eXBlKCJGb3IiLCBzdG10X3R5cGUsIEZvcl9maWVsZHMsIDQpOwogICAgIGlmICghRm9yX3R5cGUpIHJldHVybiAwOworICAgIEFzeW5jRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jRm9yIiwgc3RtdF90eXBlLCBBc3luY0Zvcl9maWVsZHMsIDQpOworICAgIGlmICghQXN5bmNGb3JfdHlwZSkgcmV0dXJuIDA7CiAgICAgV2hpbGVfdHlwZSA9IG1ha2VfdHlwZSgiV2hpbGUiLCBzdG10X3R5cGUsIFdoaWxlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFXaGlsZV90eXBlKSByZXR1cm4gMDsKICAgICBJZl90eXBlID0gbWFrZV90eXBlKCJJZiIsIHN0bXRfdHlwZSwgSWZfZmllbGRzLCAzKTsKICAgICBpZiAoIUlmX3R5cGUpIHJldHVybiAwOwogICAgIFdpdGhfdHlwZSA9IG1ha2VfdHlwZSgiV2l0aCIsIHN0bXRfdHlwZSwgV2l0aF9maWVsZHMsIDIpOwogICAgIGlmICghV2l0aF90eXBlKSByZXR1cm4gMDsKKyAgICBBc3luY1dpdGhfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNXaXRoIiwgc3RtdF90eXBlLCBBc3luY1dpdGhfZmllbGRzLCAyKTsKKyAgICBpZiAoIUFzeW5jV2l0aF90eXBlKSByZXR1cm4gMDsKICAgICBSYWlzZV90eXBlID0gbWFrZV90eXBlKCJSYWlzZSIsIHN0bXRfdHlwZSwgUmFpc2VfZmllbGRzLCAyKTsKICAgICBpZiAoIVJhaXNlX3R5cGUpIHJldHVybiAwOwogICAgIFRyeV90eXBlID0gbWFrZV90eXBlKCJUcnkiLCBzdG10X3R5cGUsIFRyeV9maWVsZHMsIDQpOwpAQCAtODc3LDEzICs5MDMsMTUgQEAKICAgICBHZW5lcmF0b3JFeHBfdHlwZSA9IG1ha2VfdHlwZSgiR2VuZXJhdG9yRXhwIiwgZXhwcl90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRvckV4cF9maWVsZHMsIDIpOwogICAgIGlmICghR2VuZXJhdG9yRXhwX3R5cGUpIHJldHVybiAwOworICAgIEF3YWl0X3R5cGUgPSBtYWtlX3R5cGUoIkF3YWl0IiwgZXhwcl90eXBlLCBBd2FpdF9maWVsZHMsIDEpOworICAgIGlmICghQXdhaXRfdHlwZSkgcmV0dXJuIDA7CiAgICAgWWllbGRfdHlwZSA9IG1ha2VfdHlwZSgiWWllbGQiLCBleHByX3R5cGUsIFlpZWxkX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFZaWVsZF90eXBlKSByZXR1cm4gMDsKICAgICBZaWVsZEZyb21fdHlwZSA9IG1ha2VfdHlwZSgiWWllbGRGcm9tIiwgZXhwcl90eXBlLCBZaWVsZEZyb21fZmllbGRzLCAxKTsKICAgICBpZiAoIVlpZWxkRnJvbV90eXBlKSByZXR1cm4gMDsKICAgICBDb21wYXJlX3R5cGUgPSBtYWtlX3R5cGUoIkNvbXBhcmUiLCBleHByX3R5cGUsIENvbXBhcmVfZmllbGRzLCAzKTsKICAgICBpZiAoIUNvbXBhcmVfdHlwZSkgcmV0dXJuIDA7Ci0gICAgQ2FsbF90eXBlID0gbWFrZV90eXBlKCJDYWxsIiwgZXhwcl90eXBlLCBDYWxsX2ZpZWxkcywgNSk7CisgICAgQ2FsbF90eXBlID0gbWFrZV90eXBlKCJDYWxsIiwgZXhwcl90eXBlLCBDYWxsX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFDYWxsX3R5cGUpIHJldHVybiAwOwogICAgIE51bV90eXBlID0gbWFrZV90eXBlKCJOdW0iLCBleHByX3R5cGUsIE51bV9maWVsZHMsIDEpOwogICAgIGlmICghTnVtX3R5cGUpIHJldHVybiAwOwpAQCAtOTcwLDYgKzk5OCwxMCBAQAogICAgIGlmICghTXVsdF90eXBlKSByZXR1cm4gMDsKICAgICBNdWx0X3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE11bHRfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCFNdWx0X3NpbmdsZXRvbikgcmV0dXJuIDA7CisgICAgTWF0TXVsdF90eXBlID0gbWFrZV90eXBlKCJNYXRNdWx0Iiwgb3BlcmF0b3JfdHlwZSwgTlVMTCwgMCk7CisgICAgaWYgKCFNYXRNdWx0X3R5cGUpIHJldHVybiAwOworICAgIE1hdE11bHRfc2luZ2xldG9uID0gUHlUeXBlX0dlbmVyaWNOZXcoTWF0TXVsdF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoIU1hdE11bHRfc2luZ2xldG9uKSByZXR1cm4gMDsKICAgICBEaXZfdHlwZSA9IG1ha2VfdHlwZSgiRGl2Iiwgb3BlcmF0b3JfdHlwZSwgTlVMTCwgMCk7CiAgICAgaWYgKCFEaXZfdHlwZSkgcmV0dXJuIDA7CiAgICAgRGl2X3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KERpdl90eXBlLCBOVUxMLCBOVUxMKTsKQEAgLTEyMDIsOSArMTIzNCwzOSBAQAogfQogCiBzdG10X3R5Ci1DbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICogYmFzZXMsIGFzZGxfc2VxICoga2V5d29yZHMsIGV4cHJfdHkKLSAgICAgICAgIHN0YXJhcmdzLCBleHByX3R5IGt3YXJncywgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGRlY29yYXRvcl9saXN0LAotICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorQXN5bmNGdW5jdGlvbkRlZihpZGVudGlmaWVyIG5hbWUsIGFyZ3VtZW50c190eSBhcmdzLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxCisgICAgICAgICAgICAgICAgICogZGVjb3JhdG9yX2xpc3QsIGV4cHJfdHkgcmV0dXJucywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgbmFtZSBpcyByZXF1aXJlZCBmb3IgQXN5bmNGdW5jdGlvbkRlZiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFhcmdzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFyZ3MgaXMgcmVxdWlyZWQgZm9yIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQXN5bmNGdW5jdGlvbkRlZl9raW5kOworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5uYW1lID0gbmFtZTsKKyAgICBwLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncyA9IGFyZ3M7CisgICAgcC0+di5Bc3luY0Z1bmN0aW9uRGVmLmJvZHkgPSBib2R5OworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCA9IGRlY29yYXRvcl9saXN0OworICAgIHAtPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zID0gcmV0dXJuczsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKK0NsYXNzRGVmKGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKiBiYXNlcywgYXNkbF9zZXEgKiBrZXl3b3JkcywgYXNkbF9zZXEgKgorICAgICAgICAgYm9keSwgYXNkbF9zZXEgKiBkZWNvcmF0b3JfbGlzdCwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICphcmVuYSkKIHsKICAgICBzdG10X3R5IHA7CiAgICAgaWYgKCFuYW1lKSB7CkBAIC0xMjE5LDggKzEyODEsNiBAQAogICAgIHAtPnYuQ2xhc3NEZWYubmFtZSA9IG5hbWU7CiAgICAgcC0+di5DbGFzc0RlZi5iYXNlcyA9IGJhc2VzOwogICAgIHAtPnYuQ2xhc3NEZWYua2V5d29yZHMgPSBrZXl3b3JkczsKLSAgICBwLT52LkNsYXNzRGVmLnN0YXJhcmdzID0gc3RhcmFyZ3M7Ci0gICAgcC0+di5DbGFzc0RlZi5rd2FyZ3MgPSBrd2FyZ3M7CiAgICAgcC0+di5DbGFzc0RlZi5ib2R5ID0gYm9keTsKICAgICBwLT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0ID0gZGVjb3JhdG9yX2xpc3Q7CiAgICAgcC0+bGluZW5vID0gbGluZW5vOwpAQCAtMTMzOCw2ICsxMzk4LDM0IEBACiB9CiAKIHN0bXRfdHkKK0FzeW5jRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludAorICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHRhcmdldCBpcyByZXF1aXJlZCBmb3IgQXN5bmNGb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghaXRlcikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBpdGVyIGlzIHJlcXVpcmVkIGZvciBBc3luY0ZvciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBc3luY0Zvcl9raW5kOworICAgIHAtPnYuQXN5bmNGb3IudGFyZ2V0ID0gdGFyZ2V0OworICAgIHAtPnYuQXN5bmNGb3IuaXRlciA9IGl0ZXI7CisgICAgcC0+di5Bc3luY0Zvci5ib2R5ID0gYm9keTsKKyAgICBwLT52LkFzeW5jRm9yLm9yZWxzZSA9IG9yZWxzZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIFdoaWxlKGV4cHJfdHkgdGVzdCwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywgaW50CiAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTEzOTgsNiArMTQ4NiwyMiBAQAogfQogCiBzdG10X3R5CitBc3luY1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKKyAgICAgICAgICBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBzdG10X3R5IHA7CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBc3luY1dpdGhfa2luZDsKKyAgICBwLT52LkFzeW5jV2l0aC5pdGVtcyA9IGl0ZW1zOworICAgIHAtPnYuQXN5bmNXaXRoLmJvZHkgPSBib2R5OworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworc3RtdF90eQogUmFpc2UoZXhwcl90eSBleGMsIGV4cHJfdHkgY2F1c2UsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBzdG10X3R5IHA7CkBAIC0xODI1LDYgKzE5MjksMjUgQEAKIH0KIAogZXhwcl90eQorQXdhaXQoZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBBd2FpdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBd2FpdF9raW5kOworICAgIHAtPnYuQXdhaXQudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIFlpZWxkKGV4cHJfdHkgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CkBAIC0xODgwLDggKzIwMDMsOCBAQAogfQogCiBleHByX3R5Ci1DYWxsKGV4cHJfdHkgZnVuYywgYXNkbF9zZXEgKiBhcmdzLCBhc2RsX3NlcSAqIGtleXdvcmRzLCBleHByX3R5IHN0YXJhcmdzLAotICAgICBleHByX3R5IGt3YXJncywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQorQ2FsbChleHByX3R5IGZ1bmMsIGFzZGxfc2VxICogYXJncywgYXNkbF9zZXEgKiBrZXl3b3JkcywgaW50IGxpbmVubywgaW50CisgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGV4cHJfdHkgcDsKICAgICBpZiAoIWZ1bmMpIHsKQEAgLTE4OTYsOCArMjAxOSw2IEBACiAgICAgcC0+di5DYWxsLmZ1bmMgPSBmdW5jOwogICAgIHAtPnYuQ2FsbC5hcmdzID0gYXJnczsKICAgICBwLT52LkNhbGwua2V5d29yZHMgPSBrZXl3b3JkczsKLSAgICBwLT52LkNhbGwuc3RhcmFyZ3MgPSBzdGFyYXJnczsKLSAgICBwLT52LkNhbGwua3dhcmdzID0ga3dhcmdzOwogICAgIHAtPmxpbmVubyA9IGxpbmVubzsKICAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKICAgICByZXR1cm4gcDsKQEAgLTIyNzEsMTEgKzIzOTIsNiBAQAoga2V5d29yZChpZGVudGlmaWVyIGFyZywgZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAga2V5d29yZF90eSBwOwotICAgIGlmICghYXJnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFyZyBpcyByZXF1aXJlZCBmb3Iga2V5d29yZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3Iga2V5d29yZCIpOwpAQCAtMjQxOSw2ICsyNTM1LDM2IEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFzeW5jRnVuY3Rpb25EZWZfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+di5Bc3luY0Z1bmN0aW9uRGVmLm5hbWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2FyZ3VtZW50cyhvLT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9leHByKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZGVjb3JhdG9yX2xpc3QsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJucyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3JldHVybnMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KENsYXNzRGVmX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yNDM3LDE2ICsyNTgzLDYgQEAKICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rZXl3b3JkcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYuc3RhcmFyZ3MpOwotICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGFyYXJncywgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2xhc3NEZWYua3dhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DbGFzc0RlZi5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCkBAIC0yNTMzLDYgKzI2NjksMzAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFzeW5jRm9yX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXN5bmNGb3IudGFyZ2V0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlciwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGb3IuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNGb3Iub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFdoaWxlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yNTg1LDYgKzI3NDUsMjAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBc3luY1dpdGhfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Bc3luY1dpdGguaXRlbXMsIGFzdDJvYmpfd2l0aGl0ZW0pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVtcywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQXN5bmNXaXRoLmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJhaXNlX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFJhaXNlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0yODk4LDYgKzMwNzIsMTUgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEF3YWl0X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXdhaXQudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoWWllbGRfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTI5NTksMTYgKzMxNDIsNiBAQAogICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXdvcmRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLnN0YXJhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc3RhcmFyZ3MsIHZhbHVlKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwua3dhcmdzKTsKLSAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoTnVtX3R5cGUsIE5VTEwsIE5VTEwpOwpAQCAtMzIzMiw2ICszNDA1LDkgQEAKICAgICAgICAgY2FzZSBNdWx0OgogICAgICAgICAgICAgUHlfSU5DUkVGKE11bHRfc2luZ2xldG9uKTsKICAgICAgICAgICAgIHJldHVybiBNdWx0X3NpbmdsZXRvbjsKKyAgICAgICAgY2FzZSBNYXRNdWx0OgorICAgICAgICAgICAgUHlfSU5DUkVGKE1hdE11bHRfc2luZ2xldG9uKTsKKyAgICAgICAgICAgIHJldHVybiBNYXRNdWx0X3NpbmdsZXRvbjsKICAgICAgICAgY2FzZSBEaXY6CiAgICAgICAgICAgICBQeV9JTkNSRUYoRGl2X3NpbmdsZXRvbik7CiAgICAgICAgICAgICByZXR1cm4gRGl2X3NpbmdsZXRvbjsKQEAgLTM4NTksNiArNDAzNSwxMDIgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXN5bmNGdW5jdGlvbkRlZl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgaWRlbnRpZmllciBuYW1lOworICAgICAgICBhcmd1bWVudHNfdHkgYXJnczsKKyAgICAgICAgYXNkbF9zZXEqIGJvZHk7CisgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKKyAgICAgICAgZXhwcl90eSByZXR1cm5zOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2FyZ3MpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYXJndW1lbnRzKHRtcCwgJmFyZ3MsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBBc3luY0Z1bmN0aW9uRGVmIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY0Z1bmN0aW9uRGVmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICBib2R5ID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVjb3JhdG9yX2xpc3QpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNGdW5jdGlvbkRlZiBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIGRlY29yYXRvcl9saXN0ID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChkZWNvcmF0b3JfbGlzdCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChkZWNvcmF0b3JfbGlzdCwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbWlzc2luZyBmcm9tIEFzeW5jRnVuY3Rpb25EZWYiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9yZXR1cm5zKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9yZXR1cm5zKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmcmV0dXJucywgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm5zID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQXN5bmNGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3JfbGlzdCwgcmV0dXJucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUNsYXNzRGVmX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMzg2Nyw4ICs0MTM5LDYgQEAKICAgICAgICAgaWRlbnRpZmllciBuYW1lOwogICAgICAgICBhc2RsX3NlcSogYmFzZXM7CiAgICAgICAgIGFzZGxfc2VxKiBrZXl3b3JkczsKLSAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICBhc2RsX3NlcSogZGVjb3JhdG9yX2xpc3Q7CiAKQEAgLTM5MzEsMjYgKzQyMDEsNiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9zdGFyYXJncykpIHsKLSAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpOwotICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZzdGFyYXJncywgYXJlbmEpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2t3YXJncykpIHsKLSAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdzKTsKLSAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAma3dhcmdzLCBhcmVuYSk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGt3YXJncyA9IE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwpAQCAtMzk5OSw4ICs0MjQ5LDggQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICAqb3V0ID0gQ2xhc3NEZWYobmFtZSwgYmFzZXMsIGtleXdvcmRzLCBzdGFyYXJncywga3dhcmdzLCBib2R5LAotICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAqb3V0ID0gQ2xhc3NEZWYobmFtZSwgYmFzZXMsIGtleXdvcmRzLCBib2R5LCBkZWNvcmF0b3JfbGlzdCwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDIzNyw2ICs0NDg3LDkwIEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgZXhwcl90eSBpdGVyOworICAgICAgICBhc2RsX3NlcSogYm9keTsKKyAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pdGVyKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pdGVyKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmaXRlciwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVyXCIgbWlzc2luZyBmcm9tIEFzeW5jRm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJBc3luY0ZvciBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgYm9keSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jRm9yIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIG9yZWxzZSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAob3JlbHNlID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9yZWxzZSwgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9yZWxzZVwiIG1pc3NpbmcgZnJvbSBBc3luY0ZvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFzeW5jRm9yKHRhcmdldCwgaXRlciwgYm9keSwgb3JlbHNlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopV2hpbGVfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC00NDQxLDYgKzQ3NzUsNjYgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXN5bmNXaXRoX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBhc2RsX3NlcSogaXRlbXM7CisgICAgICAgIGFzZGxfc2VxKiBib2R5OworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXN5bmNXaXRoIGZpZWxkIFwiaXRlbXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgaXRlbXMgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgd2l0aGl0ZW1fdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF93aXRoaXRlbShQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoaXRlbXMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVtc1wiIG1pc3NpbmcgZnJvbSBBc3luY1dpdGgiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkFzeW5jV2l0aCBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgYm9keSA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBBc3luY1dpdGgiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBc3luY1dpdGgoaXRlbXMsIGJvZHksIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilSYWlzZV90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTUzNzUsNiArNTc2OSwyOCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBd2FpdF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIEF3YWl0Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQXdhaXQodmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilZaWVsZF90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTU0OTgsOCArNTkxNCw2IEBACiAgICAgICAgIGV4cHJfdHkgZnVuYzsKICAgICAgICAgYXNkbF9zZXEqIGFyZ3M7CiAgICAgICAgIGFzZGxfc2VxKiBrZXl3b3JkczsKLSAgICAgICAgZXhwcl90eSBzdGFyYXJnczsKLSAgICAgICAgZXhwcl90eSBrd2FyZ3M7CiAKICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9mdW5jKSkgewogICAgICAgICAgICAgaW50IHJlczsKQEAgLTU1NjAsMjggKzU5NzQsNyBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5d29yZHNcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3N0YXJhcmdzKSkgewotICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zdGFyYXJncyk7Ci0gICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0YXJhcmdzLCBhcmVuYSk7Ci0gICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0YXJhcmdzID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfa3dhcmdzKSkgewotICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwotICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKLSAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICBQeV9DTEVBUih0bXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAga3dhcmdzID0gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAqb3V0ID0gQ2FsbChmdW5jLCBhcmdzLCBrZXl3b3Jkcywgc3RhcmFyZ3MsIGt3YXJncywgbGluZW5vLCBjb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICBhcmVuYSk7CisgICAgICAgICpvdXQgPSBDYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTYxNzUsNiArNjU2OCwxNCBAQAogICAgICAgICAqb3V0ID0gTXVsdDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0ICopTWF0TXVsdF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgKm91dCA9IE1hdE11bHQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCAqKURpdl90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTY3MjEsNyArNzEyMiw3IEBACiAgICAgaWRlbnRpZmllciBhcmc7CiAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgeworICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9hcmcpKSB7CiAgICAgICAgIGludCByZXM7CiAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmcpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwpAQCAtNjcyOSw4ICs3MTMwLDcgQEAKICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfQ0xFQVIodG1wKTsKICAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdcIiBtaXNzaW5nIGZyb20ga2V5d29yZCIpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgYXJnID0gTlVMTDsKICAgICB9CiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgaW50IHJlczsKQEAgLTY4NDcsNiArNzI0Nyw4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJzdG10IiwgKFB5T2JqZWN0KilzdG10X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGdW5jdGlvbkRlZiIsIChQeU9iamVjdCopRnVuY3Rpb25EZWZfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRnVuY3Rpb25EZWYiLAorICAgICAgICAoUHlPYmplY3QqKUFzeW5jRnVuY3Rpb25EZWZfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNsYXNzRGVmIiwgKFB5T2JqZWN0KilDbGFzc0RlZl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiUmV0dXJuIiwgKFB5T2JqZWN0KilSZXR1cm5fdHlwZSkgPCAwKSByZXR1cm4KQEAgLTY4NTgsMTAgKzcyNjAsMTQgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF1Z0Fzc2lnbiIsIChQeU9iamVjdCopQXVnQXNzaWduX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3IiLCAoUHlPYmplY3QqKUZvcl90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNGb3IiLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJXaGlsZSIsIChQeU9iamVjdCopV2hpbGVfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklmIiwgKFB5T2JqZWN0KilJZl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiV2l0aCIsIChQeU9iamVjdCopV2l0aF90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNXaXRoIiwgKFB5T2JqZWN0KilBc3luY1dpdGhfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlJhaXNlIiwgKFB5T2JqZWN0KilSYWlzZV90eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5IiwgKFB5T2JqZWN0KilUcnlfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKQEAgLTY5MDIsNiArNzMwOCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiR2VuZXJhdG9yRXhwIiwgKFB5T2JqZWN0KilHZW5lcmF0b3JFeHBfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF3YWl0IiwgKFB5T2JqZWN0KilBd2FpdF90eXBlKSA8IDApIHJldHVybgorICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGQiLCAoUHlPYmplY3QqKVlpZWxkX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJZaWVsZEZyb20iLCAoUHlPYmplY3QqKVlpZWxkRnJvbV90eXBlKSA8IDApCkBAIC02OTU2LDYgKzczNjQsOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQWRkIiwgKFB5T2JqZWN0KilBZGRfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN1YiIsIChQeU9iamVjdCopU3ViX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNdWx0IiwgKFB5T2JqZWN0KilNdWx0X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNYXRNdWx0IiwgKFB5T2JqZWN0KilNYXRNdWx0X3R5cGUpIDwgMCkgcmV0dXJuCisgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJEaXYiLCAoUHlPYmplY3QqKURpdl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTW9kIiwgKFB5T2JqZWN0KilNb2RfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlBvdyIsIChQeU9iamVjdCopUG93X3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9QeXRob24vUkVBRE1FIGIvUHl0aG9uL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTNiNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL1JFQURNRQpAQCAtMCwwICsxIEBACitNaXNjZWxsYW5lb3VzIHNvdXJjZSBmaWxlcyBmb3IgdGhlIG1haW4gUHl0aG9uIHNoYXJlZCBsaWJyYXJ5CmRpZmYgLS1naXQgYS9QeXRob24vX3dhcm5pbmdzLmMgYi9QeXRob24vX3dhcm5pbmdzLmMKaW5kZXggNmRmZjBhMi4uOWNhODMxNCAxMDA2NDQKLS0tIGEvUHl0aG9uL193YXJuaW5ncy5jCisrKyBiL1B5dGhvbi9fd2FybmluZ3MuYwpAQCAtNTEzLDYgKzUxMyw2NCBAQAogICAgIHJldHVybiByZXN1bHQ7ICAvKiBQeV9Ob25lIG9yIE5VTEwuICovCiB9CiAKK3N0YXRpYyBpbnQKK2lzX2ludGVybmFsX2ZyYW1lKFB5RnJhbWVPYmplY3QgKmZyYW1lKQoreworICAgIHN0YXRpYyBQeU9iamVjdCAqaW1wb3J0bGliX3N0cmluZyA9IE5VTEw7CisgICAgc3RhdGljIFB5T2JqZWN0ICpib290c3RyYXBfc3RyaW5nID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisgICAgaW50IGNvbnRhaW5zOworCisgICAgaWYgKGltcG9ydGxpYl9zdHJpbmcgPT0gTlVMTCkgeworICAgICAgICBpbXBvcnRsaWJfc3RyaW5nID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImltcG9ydGxpYiIpOworICAgICAgICBpZiAoaW1wb3J0bGliX3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGJvb3RzdHJhcF9zdHJpbmcgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiX2Jvb3RzdHJhcCIpOworICAgICAgICBpZiAoYm9vdHN0cmFwX3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW1wb3J0bGliX3N0cmluZyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYoaW1wb3J0bGliX3N0cmluZyk7CisgICAgICAgIFB5X0lOQ1JFRihib290c3RyYXBfc3RyaW5nKTsKKyAgICB9CisKKyAgICBpZiAoZnJhbWUgPT0gTlVMTCB8fCBmcmFtZS0+Zl9jb2RlID09IE5VTEwgfHwKKyAgICAgICAgICAgIGZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZpbGVuYW1lID0gZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWU7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZmlsZW5hbWUpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjb250YWlucyA9IFB5VW5pY29kZV9Db250YWlucyhmaWxlbmFtZSwgaW1wb3J0bGliX3N0cmluZyk7CisgICAgaWYgKGNvbnRhaW5zIDwgMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoY29udGFpbnMgPiAwKSB7CisgICAgICAgIGNvbnRhaW5zID0gUHlVbmljb2RlX0NvbnRhaW5zKGZpbGVuYW1lLCBib290c3RyYXBfc3RyaW5nKTsKKyAgICAgICAgaWYgKGNvbnRhaW5zIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY29udGFpbnMgPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlGcmFtZU9iamVjdCAqCituZXh0X2V4dGVybmFsX2ZyYW1lKFB5RnJhbWVPYmplY3QgKmZyYW1lKQoreworICAgIGRvIHsKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+Zl9iYWNrOworICAgIH0gd2hpbGUgKGZyYW1lICE9IE5VTEwgJiYgaXNfaW50ZXJuYWxfZnJhbWUoZnJhbWUpKTsKKworICAgIHJldHVybiBmcmFtZTsKK30KKwogLyogZmlsZW5hbWUsIG1vZHVsZSwgYW5kIHJlZ2lzdHJ5IGFyZSBuZXcgcmVmcywgZ2xvYmFscyBpcyBib3Jyb3dlZCAqLwogLyogUmV0dXJucyAwIG9uIGVycm9yIChubyBuZXcgcmVmcyksIDEgb24gc3VjY2VzcyAqLwogc3RhdGljIGludApAQCAtNTIzLDggKzU4MSwxOCBAQAogCiAgICAgLyogU2V0dXAgZ2xvYmFscyBhbmQgbGluZW5vLiAqLwogICAgIFB5RnJhbWVPYmplY3QgKmYgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5mcmFtZTsKLSAgICB3aGlsZSAoLS1zdGFja19sZXZlbCA+IDAgJiYgZiAhPSBOVUxMKQotICAgICAgICBmID0gZi0+Zl9iYWNrOworICAgIC8vIFN0YWNrIGxldmVsIGNvbXBhcmlzb25zIHRvIFB5dGhvbiBjb2RlIGlzIG9mZiBieSBvbmUgYXMgdGhlcmUgaXMgbm8KKyAgICAvLyB3YXJuaW5ncy1yZWxhdGVkIHN0YWNrIGxldmVsIHRvIGF2b2lkLgorICAgIGlmIChzdGFja19sZXZlbCA8PSAwIHx8IGlzX2ludGVybmFsX2ZyYW1lKGYpKSB7CisgICAgICAgIHdoaWxlICgtLXN0YWNrX2xldmVsID4gMCAmJiBmICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGYgPSBmLT5mX2JhY2s7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdoaWxlICgtLXN0YWNrX2xldmVsID4gMCAmJiBmICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGYgPSBuZXh0X2V4dGVybmFsX2ZyYW1lKGYpOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGYgPT0gTlVMTCkgewogICAgICAgICBnbG9iYWxzID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwLT5zeXNkaWN0OwpAQCAtNTgwLDEzICs2NDgsMTIgQEAKICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKCpmaWxlbmFtZSk7CiAKICNkZWZpbmUgYXNjaWlfbG93ZXIoYykgKChjIDw9IDEyNykgPyBQeV9UT0xPV0VSKGMpIDogMCkKLSAgICAgICAgLyogaWYgZmlsZW5hbWUubG93ZXIoKS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKTogKi8KKyAgICAgICAgLyogaWYgZmlsZW5hbWUubG93ZXIoKS5lbmRzd2l0aCgiLnB5YyIpOiAqLwogICAgICAgICBpZiAobGVuID49IDQgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi00KSA9PSAnLicgJiYKICAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0zKSkgPT0gJ3AnICYmCiAgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMikpID09ICd5JyAmJgotICAgICAgICAgICAgKGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0xKSkgPT0gJ2MnIHx8Ci0gICAgICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnbycpKQorICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnYycpCiAgICAgICAgIHsKICAgICAgICAgICAgICpmaWxlbmFtZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoKmZpbGVuYW1lLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqZmlsZW5hbWUpLTEpOwpAQCAtNjU0LDE2ICs3MjEsMTcgQEAKIAogICAgIGlmIChyYyA9PSAxKQogICAgICAgICBjYXRlZ29yeSA9IChQeU9iamVjdCopbWVzc2FnZS0+b2JfdHlwZTsKLSAgICBlbHNlIGlmIChjYXRlZ29yeSA9PSBOVUxMKQorICAgIGVsc2UgaWYgKGNhdGVnb3J5ID09IE5VTEwgfHwgY2F0ZWdvcnkgPT0gUHlfTm9uZSkKICAgICAgICAgY2F0ZWdvcnkgPSBQeUV4Y19Vc2VyV2FybmluZzsKIAogICAgIC8qIFZhbGlkYXRlIGNhdGVnb3J5LiAqLwogICAgIHJjID0gUHlPYmplY3RfSXNTdWJjbGFzcyhjYXRlZ29yeSwgUHlFeGNfV2FybmluZyk7Ci0gICAgaWYgKHJjID09IC0xKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmMgPT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29yeSBpcyBub3QgYSBzdWJjbGFzcyBvZiBXYXJuaW5nIik7CisgICAgLyogY2F0ZWdvcnkgaXMgbm90IGEgc3ViY2xhc3Mgb2YgUHlFeGNfV2FybmluZyBvcgorICAgICAgIFB5T2JqZWN0X0lzU3ViY2xhc3MgcmFpc2VkIGFuIGVycm9yICovCisgICAgaWYgKHJjID09IC0xIHx8IHJjID09IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29yeSBtdXN0IGJlIGEgV2FybmluZyBzdWJjbGFzcywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShjYXRlZ29yeSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IDc0ZmE5NDEuLmRmMzg3YjIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtNSwyMSArNSwyMSBAQAogX1B5X2FzZGxfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfc2VxICpzZXEgPSBOVUxMOwotICAgIHNpemVfdCBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOworICAgIHNpemVfdCBuOwogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCi0gICAgaWYgKHNpemUgPCAwIHx8IHNpemUgPT0gSU5UX01JTiB8fAotICAgICAgICAoc2l6ZSAmJiAoKHNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgaWYgKHNpemUgPCAwIHx8CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwogICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQogICAgIG4gKz0gc2l6ZW9mKGFzZGxfc2VxKTsKIAogICAgIHNlcSA9IChhc2RsX3NlcSAqKVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBuKTsKQEAgLTM2LDIxICszNiwyMSBAQAogX1B5X2FzZGxfaW50X3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX2ludF9zZXEgKnNlcSA9IE5VTEw7Ci0gICAgc2l6ZV90IG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CisgICAgc2l6ZV90IG47CiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KLSAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA9PSBJTlRfTUlOIHx8Ci0gICAgICAgIChzaXplICYmICgoc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKKyAgICBpZiAoc2l6ZSA8IDAgfHwKKyAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KICAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KICAgICBuICs9IHNpemVvZihhc2RsX3NlcSk7CiAKICAgICBzZXEgPSAoYXNkbF9pbnRfc2VxICopUHlBcmVuYV9NYWxsb2MoYXJlbmEsIG4pOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IGQ1MGNiODAuLmIyZjA5YjkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgIH0KICAgICBpZiAoIXZhbGlkYXRlX2FyZ3MoYXJncy0+a3dvbmx5YXJncykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhcmdzLT5rd2FyZyAmJiBhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiAKKyAgICBpZiAoYXJncy0+a3dhcmcgJiYgYXJncy0+a3dhcmctPmFubm90YXRpb24KICAgICAgICAgJiYgIXZhbGlkYXRlX2V4cHIoYXJncy0+a3dhcmctPmFubm90YXRpb24sIExvYWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjQsNiArMTY0LDggQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGNoZWNrX2N0eCA9IDA7CisgICAgICAgIC8qIHNldCBhY3R1YWxfY3R4IHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KKyAgICAgICAgYWN0dWFsX2N0eCA9IDA7CiAgICAgfQogICAgIGlmIChjaGVja19jdHggJiYgYWN0dWFsX2N0eCAhPSBjdHgpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJleHByZXNzaW9uIG11c3QgaGF2ZSAlcyBjb250ZXh0IGJ1dCBoYXMgJXMgaW5zdGVhZCIsCkBAIC0xOTcsOCArMTk5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3QgZG9lc24ndCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZiBrZXlzIGFzIHZhbHVlcyIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LmtleXMsIExvYWQsIDApICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuRGljdC52YWx1ZXMsIExvYWQsIDApOworICAgICAgICAvKiBudWxsX29rPTEgZm9yIGtleXMgZXhwcmVzc2lvbnMgdG8gYWxsb3cgZGljdCB1bnBhY2tpbmcgdG8gd29yayBpbgorICAgICAgICAgICBkaWN0IGxpdGVyYWxzLCBpLmUuIGBgeyoqe2E6Yn19YGAgKi8KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LmtleXMsIExvYWQsIC8qbnVsbF9vaz0qLyAxKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3QudmFsdWVzLCBMb2FkLCAvKm51bGxfb2s9Ki8gMCk7CiAgICAgY2FzZSBTZXRfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5TZXQuZWx0cywgTG9hZCwgMCk7CiAjZGVmaW5lIENPTVAoTkFNRSkgXApAQCAtMjE3LDYgKzIyMSw4IEBACiAgICAgICAgIHJldHVybiAhZXhwLT52LllpZWxkLnZhbHVlIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LllpZWxkLnZhbHVlLCBMb2FkKTsKICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuWWllbGRGcm9tLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5Bd2FpdC52YWx1ZSwgTG9hZCk7CiAgICAgY2FzZSBDb21wYXJlX2tpbmQ6CiAgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLmNvbXBhcmF0b3JzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJDb21wYXJlIHdpdGggbm8gY29tcGFyYXRvcnMiKTsKQEAgLTIzMyw5ICsyMzksNyBAQAogICAgIGNhc2UgQ2FsbF9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKSAmJgotICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5zdGFyYXJncyB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLnN0YXJhcmdzLCBMb2FkKSkgJiYKLSAgICAgICAgICAgICghZXhwLT52LkNhbGwua3dhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwua3dhcmdzLCBMb2FkKSk7CisgICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhleHAtPnYuQ2FsbC5rZXl3b3Jkcyk7CiAgICAgY2FzZSBOdW1fa2luZDogewogICAgICAgICBQeU9iamVjdCAqbiA9IGV4cC0+di5OdW0ubjsKICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2tFeGFjdChuKSAmJiAhUHlGbG9hdF9DaGVja0V4YWN0KG4pICYmCkBAIC0zMjAsOSArMzI0LDcgQEAKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5DbGFzc0RlZi5ib2R5LCAiQ2xhc3NEZWYiKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoc3RtdC0+di5DbGFzc0RlZi5iYXNlcywgTG9hZCwgMCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKHN0bXQtPnYuQ2xhc3NEZWYua2V5d29yZHMpICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0LCBMb2FkLCAwKSAmJgotICAgICAgICAgICAgKCFzdG10LT52LkNsYXNzRGVmLnN0YXJhcmdzIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5DbGFzc0RlZi5zdGFyYXJncywgTG9hZCkpICYmCi0gICAgICAgICAgICAoIXN0bXQtPnYuQ2xhc3NEZWYua3dhcmdzIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5DbGFzc0RlZi5rd2FyZ3MsIExvYWQpKTsKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApOwogICAgIGNhc2UgUmV0dXJuX2tpbmQ6CiAgICAgICAgIHJldHVybiAhc3RtdC0+di5SZXR1cm4udmFsdWUgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LlJldHVybi52YWx1ZSwgTG9hZCk7CiAgICAgY2FzZSBEZWxldGVfa2luZDoKQEAgLTMzOCw2ICszNDAsMTEgQEAKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IuaXRlciwgTG9hZCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5Gb3IuYm9keSwgIkZvciIpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LkZvci5vcmVsc2UpOworICAgIGNhc2UgQXN5bmNGb3Jfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3luY0Zvci50YXJnZXQsIFN0b3JlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFzeW5jRm9yLml0ZXIsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuQXN5bmNGb3IuYm9keSwgIkFzeW5jRm9yIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuQXN5bmNGb3Iub3JlbHNlKTsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuV2hpbGUudGVzdCwgTG9hZCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5XaGlsZS5ib2R5LCAiV2hpbGUiKSAmJgpAQCAtMzU2LDYgKzM2MywxNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuV2l0aC5ib2R5LCAiV2l0aCIpOworICAgIGNhc2UgQXN5bmNXaXRoX2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuQXN5bmNXaXRoLml0ZW1zLCAiaXRlbXMiLCAiQXN5bmNXaXRoIikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10LT52LkFzeW5jV2l0aC5pdGVtcyk7IGkrKykgeworICAgICAgICAgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzZGxfc2VxX0dFVChzdG10LT52LkFzeW5jV2l0aC5pdGVtcywgaSk7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoaXRlbS0+Y29udGV4dF9leHByLCBMb2FkKSB8fAorICAgICAgICAgICAgICAgIChpdGVtLT5vcHRpb25hbF92YXJzICYmICF2YWxpZGF0ZV9leHByKGl0ZW0tPm9wdGlvbmFsX3ZhcnMsIFN0b3JlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5Bc3luY1dpdGguYm9keSwgIkFzeW5jV2l0aCIpOwogICAgIGNhc2UgUmFpc2Vfa2luZDoKICAgICAgICAgaWYgKHN0bXQtPnYuUmFpc2UuZXhjKSB7CiAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LlJhaXNlLmV4YywgTG9hZCkgJiYKQEAgLTQwNyw2ICs0MjQsMTIgQEAKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52Lk5vbmxvY2FsLm5hbWVzLCAibmFtZXMiLCAiTm9ubG9jYWwiKTsKICAgICBjYXNlIEV4cHJfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5FeHByLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIEFzeW5jRnVuY3Rpb25EZWZfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLmJvZHksICJBc3luY0Z1bmN0aW9uRGVmIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2FyZ3VtZW50cyhzdG10LT52LkFzeW5jRnVuY3Rpb25EZWYuYXJncykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQXN5bmNGdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5Bc3luY0Z1bmN0aW9uRGVmLnJldHVybnMgfHwKKyAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXN5bmNGdW5jdGlvbkRlZi5yZXR1cm5zLCBMb2FkKSk7CiAgICAgY2FzZSBQYXNzX2tpbmQ6CiAgICAgY2FzZSBCcmVha19raW5kOgogICAgIGNhc2UgQ29udGludWVfa2luZDoKQEAgLTQ1MSw3ICs0NzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGRpc2FsbG93ZWQgaW4gZXhwcmVzc2lvbiBsaXN0Iik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC01MDUsNiArNTI4LDkgQEAKIHN0YXRpYyBleHByX3R5IGFzdF9mb3JfdGVzdGxpc3Qoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICopOwogc3RhdGljIHN0bXRfdHkgYXN0X2Zvcl9jbGFzc2RlZihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgYXNkbF9zZXEgKik7CiAKK3N0YXRpYyBzdG10X3R5IGFzdF9mb3Jfd2l0aF9zdG10KHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBpbnQpOworc3RhdGljIHN0bXRfdHkgYXN0X2Zvcl9mb3Jfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgaW50KTsKKwogLyogTm90ZSBkaWZmZXJlbnQgc2lnbmF0dXJlIGZvciBhc3RfZm9yX2NhbGwgKi8KIHN0YXRpYyBleHByX3R5IGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgZXhwcl90eSk7CiAKQEAgLTgyNSw2ICs4NTEsOCBAQAogICAgICAgICAgICAgcmV0dXJuIFN1YjsKICAgICAgICAgY2FzZSBTVEFSOgogICAgICAgICAgICAgcmV0dXJuIE11bHQ7CisgICAgICAgIGNhc2UgQVQ6CisgICAgICAgICAgICByZXR1cm4gTWF0TXVsdDsKICAgICAgICAgY2FzZSBTTEFTSDoKICAgICAgICAgICAgIHJldHVybiBEaXY7CiAgICAgICAgIGNhc2UgRE9VQkxFU0xBU0g6CkBAIC04NDQsNyArODcyLDggQEAKIH07CiAKIHN0YXRpYyBpbnQKLWZvcmJpZGRlbl9uYW1lKHN0cnVjdCBjb21waWxpbmcgKmMsIGlkZW50aWZpZXIgbmFtZSwgY29uc3Qgbm9kZSAqbiwgaW50IGZ1bGxfY2hlY2tzKQorZm9yYmlkZGVuX25hbWUoc3RydWN0IGNvbXBpbGluZyAqYywgaWRlbnRpZmllciBuYW1lLCBjb25zdCBub2RlICpuLAorICAgICAgICAgICAgICAgaW50IGZ1bGxfY2hlY2tzKQogewogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sobmFtZSkpOwogICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiX19kZWJ1Z19fIikgPT0gMCkgewpAQCAtOTQwLDYgKzk2OSw5IEBACiAgICAgICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAieWllbGQgZXhwcmVzc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBd2FpdF9raW5kOgorICAgICAgICAgICAgZXhwcl9uYW1lID0gImF3YWl0IGV4cHJlc3Npb24iOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlzdENvbXBfa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJsaXN0IGNvbXByZWhlbnNpb24iOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDMwLDYgKzEwNjIsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBQb3c7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIE11bHQ7CisgICAgICAgIGNhc2UgJ0AnOgorICAgICAgICAgICAgcmV0dXJuIE1hdE11bHQ7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIGF1Z2Fzc2lnbjogJXMiLCBTVFIobikpOwogICAgICAgICAgICAgcmV0dXJuIChvcGVyYXRvcl90eSkwOwpAQCAtMTQzOSw3ICsxNDczLDcgQEAKICAgICAgICAgbmFtZV9leHByID0gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoTkNIKG4pID09IDUpIHsgLyogQ2FsbCB3aXRoIG5vIGFyZ3VtZW50cyAqLwotICAgICAgICBkID0gQ2FsbChuYW1lX2V4cHIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIExJTkVOTyhuKSwKKyAgICAgICAgZCA9IENhbGwobmFtZV9leHByLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCiAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGlmICghZCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQ3Nyw3ICsxNTExLDggQEAKIH0KIAogc3RhdGljIHN0bXRfdHkKLWFzdF9mb3JfZnVuY2RlZihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSkKK2FzdF9mb3JfZnVuY2RlZl9pbXBsKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sCisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSwgaW50IGlzX2FzeW5jKQogewogICAgIC8qIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUgKi8KICAgICBpZGVudGlmaWVyIG5hbWU7CkBAIC0xNTA2LDE0ICsxNTQxLDY4IEBACiAgICAgaWYgKCFib2R5KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3Jfc2VxLCByZXR1cm5zLCBMSU5FTk8obiksCi0gICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgaWYgKGlzX2FzeW5jKQorICAgICAgICByZXR1cm4gQXN5bmNGdW5jdGlvbkRlZihuYW1lLCBhcmdzLCBib2R5LCBkZWNvcmF0b3Jfc2VxLCByZXR1cm5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRnVuY3Rpb25EZWYobmFtZSwgYXJncywgYm9keSwgZGVjb3JhdG9yX3NlcSwgcmV0dXJucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Cit9CisKK3N0YXRpYyBzdG10X3R5Cithc3RfZm9yX2FzeW5jX2Z1bmNkZWYoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgYXNkbF9zZXEgKmRlY29yYXRvcl9zZXEpCit7CisgICAgLyogYXN5bmNfZnVuY2RlZjogQVNZTkMgZnVuY2RlZiAqLworICAgIFJFUShuLCBhc3luY19mdW5jZGVmKTsKKyAgICBSRVEoQ0hJTEQobiwgMCksIEFTWU5DKTsKKyAgICBSRVEoQ0hJTEQobiwgMSksIGZ1bmNkZWYpOworCisgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZl9pbXBsKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKK30KKworc3RhdGljIHN0bXRfdHkKK2FzdF9mb3JfZnVuY2RlZihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqZGVjb3JhdG9yX3NlcSkKK3sKKyAgICAvKiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlICovCisgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZl9pbXBsKGMsIG4sIGRlY29yYXRvcl9zZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLyogaXNfYXN5bmMgKi8pOworfQorCisKK3N0YXRpYyBzdG10X3R5Cithc3RfZm9yX2FzeW5jX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBhc3luY19zdG10OiBBU1lOQyAoZnVuY2RlZiB8IHdpdGhfc3RtdCB8IGZvcl9zdG10KSAqLworICAgIFJFUShuLCBhc3luY19zdG10KTsKKyAgICBSRVEoQ0hJTEQobiwgMCksIEFTWU5DKTsKKworICAgIHN3aXRjaCAoVFlQRShDSElMRChuLCAxKSkpIHsKKyAgICAgICAgY2FzZSBmdW5jZGVmOgorICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZnVuY2RlZl9pbXBsKGMsIENISUxEKG4sIDEpLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLyogaXNfYXN5bmMgKi8pOworICAgICAgICBjYXNlIHdpdGhfc3RtdDoKKyAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX3dpdGhfc3RtdChjLCBDSElMRChuLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKKworICAgICAgICBjYXNlIGZvcl9zdG10OgorICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZm9yX3N0bXQoYywgQ0hJTEQobiwgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC8qIGlzX2FzeW5jICovKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFzeW5jIHN0YW1lbnQ6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVFIoQ0hJTEQobiwgMSkpKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIH0KIAogc3RhdGljIHN0bXRfdHkKIGFzdF9mb3JfZGVjb3JhdGVkKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgLyogZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpICovCisgICAgLyogZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYgfCBhc3luY19mdW5jZGVmKSAqLwogICAgIHN0bXRfdHkgdGhpbmcgPSBOVUxMOwogICAgIGFzZGxfc2VxICpkZWNvcmF0b3Jfc2VxID0gTlVMTDsKIApAQCAtMTUyNCwxMiArMTYxMywxNSBAQAogICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBhc3NlcnQoVFlQRShDSElMRChuLCAxKSkgPT0gZnVuY2RlZiB8fAorICAgICAgICAgICBUWVBFKENISUxEKG4sIDEpKSA9PSBhc3luY19mdW5jZGVmIHx8CiAgICAgICAgICAgIFRZUEUoQ0hJTEQobiwgMSkpID09IGNsYXNzZGVmKTsKIAogICAgIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBmdW5jZGVmKSB7CiAgICAgICB0aGluZyA9IGFzdF9mb3JfZnVuY2RlZihjLCBDSElMRChuLCAxKSwgZGVjb3JhdG9yX3NlcSk7CiAgICAgfSBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBjbGFzc2RlZikgewogICAgICAgdGhpbmcgPSBhc3RfZm9yX2NsYXNzZGVmKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxKTsKKyAgICB9IGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgMSkpID09IGFzeW5jX2Z1bmNkZWYpIHsKKyAgICAgIHRoaW5nID0gYXN0X2Zvcl9hc3luY19mdW5jZGVmKGMsIENISUxEKG4sIDEpLCBkZWNvcmF0b3Jfc2VxKTsKICAgICB9CiAgICAgLyogd2UgY291bnQgdGhlIGRlY29yYXRvcnMgaW4gd2hlbiB0YWxraW5nIGFib3V0IHRoZSBjbGFzcycgb3IKICAgICAgKiBmdW5jdGlvbidzIGxpbmUgbnVtYmVyICovCkBAIC0xNzI5LDE2ICsxODIxLDIyIEBACiBzdGF0aWMgZXhwcl90eQogYXN0X2Zvcl9pdGVyY29tcChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgdHlwZSkKIHsKLSAgICAvKiB0ZXN0bGlzdF9jb21wOiB0ZXN0ICggY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSApCi0gICAgICAgYXJndW1lbnQ6IFt0ZXN0ICc9J10gdGVzdCBbY29tcF9mb3JdICAgICAgICMgUmVhbGx5IFtrZXl3b3JkICc9J10gdGVzdCAqLworICAgIC8qIHRlc3RsaXN0X2NvbXA6ICh0ZXN0fHN0YXJfZXhwcikKKyAgICAgKiAgICAgICAgICAgICAgICAoIGNvbXBfZm9yIHwgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10gKSAqLwogICAgIGV4cHJfdHkgZWx0OwogICAgIGFzZGxfc2VxICpjb21wczsKKyAgICBub2RlICpjaDsKIAogICAgIGFzc2VydChOQ0gobikgPiAxKTsKIAotICAgIGVsdCA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAwKSk7CisgICAgY2ggPSBDSElMRChuLCAwKTsKKyAgICBlbHQgPSBhc3RfZm9yX2V4cHIoYywgY2gpOwogICAgIGlmICghZWx0KQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgeworICAgICAgICBhc3RfZXJyb3IoYywgY2gsICJpdGVyYWJsZSB1bnBhY2tpbmcgY2Fubm90IGJlIHVzZWQgaW4gY29tcHJlaGVuc2lvbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBjb21wcyA9IGFzdF9mb3JfY29tcHJlaGVuc2lvbihjLCBDSElMRChuLCAxKSk7CiAgICAgaWYgKCFjb21wcykKQEAgLTE3NTUsMjMgKzE4NTMsNTkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIEZpbGxzIGluIHRoZSBrZXksIHZhbHVlIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgZGljdCBlbGVtZW50LiAgSW4gY2FzZQorICogb2YgYW4gdW5wYWNraW5nLCBrZXkgaXMgTlVMTC4gICppIGlzIGFkdmFuY2VkIGJ5IHRoZSBudW1iZXIgb2YgYXN0CisgKiBlbGVtZW50cy4gIElmZiBzdWNjZXNzZnVsLCBub256ZXJvIGlzIHJldHVybmVkLgorICovCitzdGF0aWMgaW50Cithc3RfZm9yX2RpY3RlbGVtZW50KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqaSwKKyAgICAgICAgICAgICAgICAgICAgZXhwcl90eSAqa2V5LCBleHByX3R5ICp2YWx1ZSkKK3sKKyAgICBleHByX3R5IGV4cHJlc3Npb247CisgICAgaWYgKFRZUEUoQ0hJTEQobiwgKmkpKSA9PSBET1VCTEVTVEFSKSB7CisgICAgICAgIGFzc2VydChOQ0gobikgLSAqaSA+PSAyKTsKKworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sICppICsgMSkpOworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKmtleSA9IE5VTEw7CisgICAgICAgICp2YWx1ZSA9IGV4cHJlc3Npb247CisKKyAgICAgICAgKmkgKz0gMjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChOQ0gobikgLSAqaSA+PSAzKTsKKworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sICppKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqa2V5ID0gZXhwcmVzc2lvbjsKKworICAgICAgICBSRVEoQ0hJTEQobiwgKmkgKyAxKSwgQ09MT04pOworCisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgKmkgKyAyKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqdmFsdWUgPSBleHByZXNzaW9uOworCisgICAgICAgICppICs9IDM7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiBzdGF0aWMgZXhwcl90eQogYXN0X2Zvcl9kaWN0Y29tcChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIGV4cHJfdHkga2V5LCB2YWx1ZTsKICAgICBhc2RsX3NlcSAqY29tcHM7CisgICAgaW50IGkgPSAwOwogCi0gICAgYXNzZXJ0KE5DSChuKSA+IDMpOwotICAgIFJFUShDSElMRChuLCAxKSwgQ09MT04pOwotCi0gICAga2V5ID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDApKTsKLSAgICBpZiAoIWtleSkKKyAgICBpZiAoIWFzdF9mb3JfZGljdGVsZW1lbnQoYywgbiwgJmksICZrZXksICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbHVlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDIpKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoa2V5KTsKKyAgICBhc3NlcnQoTkNIKG4pIC0gaSA+PSAxKTsKIAotICAgIGNvbXBzID0gYXN0X2Zvcl9jb21wcmVoZW5zaW9uKGMsIENISUxEKG4sIDMpKTsKKyAgICBjb21wcyA9IGFzdF9mb3JfY29tcHJlaGVuc2lvbihjLCBDSElMRChuLCBpKSk7CiAgICAgaWYgKCFjb21wcykKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NzksNiArMTkxMywzOSBAQAogfQogCiBzdGF0aWMgZXhwcl90eQorYXN0X2Zvcl9kaWN0ZGlzcGxheShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIGludCBpOworICAgIGludCBqOworICAgIGludCBzaXplOworICAgIGFzZGxfc2VxICprZXlzLCAqdmFsdWVzOworCisgICAgc2l6ZSA9IChOQ0gobikgKyAxKSAvIDM7IC8qICsxIGluIGNhc2Ugbm8gdHJhaWxpbmcgY29tbWEgKi8KKyAgICBrZXlzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIWtleXMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmFsdWVzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIXZhbHVlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBqID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBrZXksIHZhbHVlOworCisgICAgICAgIGlmICghYXN0X2Zvcl9kaWN0ZWxlbWVudChjLCBuLCAmaSwgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhc2RsX3NlcV9TRVQoa2V5cywgaiwga2V5KTsKKyAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaiwgdmFsdWUpOworCisgICAgICAgIGorKzsKKyAgICB9CisgICAga2V5cy0+c2l6ZSA9IGo7CisgICAgdmFsdWVzLT5zaXplID0gajsKKyAgICByZXR1cm4gRGljdChrZXlzLCB2YWx1ZXMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KKworc3RhdGljIGV4cHJfdHkKIGFzdF9mb3JfZ2VuZXhwKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgYXNzZXJ0KFRZUEUobikgPT0gKHRlc3RsaXN0X2NvbXApIHx8IFRZUEUobikgPT0gKGFyZ3VtZW50KSk7CkBAIC0xNzk5LDYgKzE5NjYsMjcgQEAKICAgICByZXR1cm4gYXN0X2Zvcl9pdGVyY29tcChjLCBuLCBDT01QX1NFVENPTVApOwogfQogCitzdGF0aWMgZXhwcl90eQorYXN0X2Zvcl9zZXRkaXNwbGF5KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgaW50IGk7CisgICAgaW50IHNpemU7CisgICAgYXNkbF9zZXEgKmVsdHM7CisKKyAgICBhc3NlcnQoVFlQRShuKSA9PSAoZGljdG9yc2V0bWFrZXIpKTsKKyAgICBzaXplID0gKE5DSChuKSArIDEpIC8gMjsgLyogKzEgaW4gY2FzZSBubyB0cmFpbGluZyBjb21tYSAqLworICAgIGVsdHMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOworICAgIGlmICghZWx0cykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CisgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbjsKKyAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCBpKSk7CisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhc2RsX3NlcV9TRVQoZWx0cywgaSAvIDIsIGV4cHJlc3Npb24pOworICAgIH0KKyAgICByZXR1cm4gU2V0KGVsdHMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KIAogc3RhdGljIGV4cHJfdHkKIGFzdF9mb3JfYXRvbShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQpAQCAtMTkwOSw2MiArMjA5Nyw0MiBAQAogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9saXN0Y29tcChjLCBjaCk7CiAgICAgY2FzZSBMQlJBQ0U6IHsKLSAgICAgICAgLyogZGljdG9yc2V0bWFrZXI6IHRlc3QgJzonIHRlc3QgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10gfAotICAgICAgICAgKiAgICAgICAgICAgICAgICAgdGVzdCAoZ2VuX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSAgKi8KLSAgICAgICAgaW50IGksIHNpemU7Ci0gICAgICAgIGFzZGxfc2VxICprZXlzLCAqdmFsdWVzOwotCisgICAgICAgIC8qIGRpY3RvcnNldG1ha2VyOiAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgdGVzdCkKKyAgICAgICAgICogICAgICAgICAgICAgICAgICAgIChjb21wX2ZvciB8ICgnLCcgKHRlc3QgJzonIHRlc3QgfCAnKionIHRlc3QpKSogWycsJ10pKSB8CisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICgodGVzdCB8ICcqJyB0ZXN0KQorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8ICcqJyB0ZXN0KSkqIFsnLCddKSkgKSAqLwogICAgICAgICBjaCA9IENISUxEKG4sIDEpOwogICAgICAgICBpZiAoVFlQRShjaCkgPT0gUkJSQUNFKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGFuIGVtcHR5IGRpY3QgKi8KKyAgICAgICAgICAgIC8qIEl0J3MgYW4gZW1wdHkgZGljdC4gKi8KICAgICAgICAgICAgIHJldHVybiBEaWN0KE5VTEwsIE5VTEwsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgfSBlbHNlIGlmIChOQ0goY2gpID09IDEgfHwgVFlQRShDSElMRChjaCwgMSkpID09IENPTU1BKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgc2ltcGxlIHNldCAqLwotICAgICAgICAgICAgYXNkbF9zZXEgKmVsdHM7Ci0gICAgICAgICAgICBzaXplID0gKE5DSChjaCkgKyAxKSAvIDI7IC8qICsxIGluIGNhc2Ugbm8gdHJhaWxpbmcgY29tbWEgKi8KLSAgICAgICAgICAgIGVsdHMgPSBfUHlfYXNkbF9zZXFfbmV3KHNpemUsIGMtPmNfYXJlbmEpOwotICAgICAgICAgICAgaWYgKCFlbHRzKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChjaCk7IGkgKz0gMikgewotICAgICAgICAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbjsKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCBpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHByZXNzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZWx0cywgaSAvIDIsIGV4cHJlc3Npb24pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGlzX2RpY3QgPSAoVFlQRShDSElMRChjaCwgMCkpID09IERPVUJMRVNUQVIpOworICAgICAgICAgICAgaWYgKE5DSChjaCkgPT0gMSB8fAorICAgICAgICAgICAgICAgICAgICAoTkNIKGNoKSA+IDEgJiYKKyAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBDT01NQSkpIHsKKyAgICAgICAgICAgICAgICAvKiBJdCdzIGEgc2V0IGRpc3BsYXkuICovCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfc2V0ZGlzcGxheShjLCBjaCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU2V0KGVsdHMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgfSBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIGl0J3MgYSBzZXQgY29tcHJlaGVuc2lvbiAqLwotICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfc2V0Y29tcChjLCBjaCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoTkNIKGNoKSA+IDMgJiYgVFlQRShDSElMRChjaCwgMykpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kaWN0Y29tcChjLCBjaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGljdCAqLwotICAgICAgICAgICAgc2l6ZSA9IChOQ0goY2gpICsgMSkgLyA0OyAvKiArMSBpbiBjYXNlIG5vIHRyYWlsaW5nIGNvbW1hICovCi0gICAgICAgICAgICBrZXlzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgICAgIGlmICgha2V5cykKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAgICAgdmFsdWVzID0gX1B5X2FzZGxfc2VxX25ldyhzaXplLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgICAgIGlmICghdmFsdWVzKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKGNoKTsgaSArPSA0KSB7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBleHByZXNzaW9uOwotCi0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgaSkpOwotICAgICAgICAgICAgICAgIGlmICghZXhwcmVzc2lvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5cywgaSAvIDQsIGV4cHJlc3Npb24pOwotCi0gICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChjaCwgaSArIDIpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSAvIDQsIGV4cHJlc3Npb24pOworICAgICAgICAgICAgZWxzZSBpZiAoTkNIKGNoKSA+IDEgJiYKKyAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRChjaCwgMSkpID09IGNvbXBfZm9yKSB7CisgICAgICAgICAgICAgICAgLyogSXQncyBhIHNldCBjb21wcmVoZW5zaW9uLiAqLworICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX3NldGNvbXAoYywgY2gpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIERpY3Qoa2V5cywgdmFsdWVzLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBlbHNlIGlmIChOQ0goY2gpID4gMyAtIGlzX2RpY3QgJiYKKyAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRChjaCwgMyAtIGlzX2RpY3QpKSA9PSBjb21wX2ZvcikgeworICAgICAgICAgICAgICAgIC8qIEl0J3MgYSBkaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCisgICAgICAgICAgICAgICAgaWYgKGlzX2RpY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJkaWN0IHVucGFja2luZyBjYW5ub3QgYmUgdXNlZCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3QgY29tcHJlaGVuc2lvbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZGljdGNvbXAoYywgY2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogSXQncyBhIGRpY3Rpb25hcnkgZGlzcGxheS4gKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kaWN0ZGlzcGxheShjLCBjaCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTIxMDAsNyArMjI2OCw3IEBACiAgICAgUkVRKG4sIHRyYWlsZXIpOwogICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBMUEFSKSB7CiAgICAgICAgIGlmIChOQ0gobikgPT0gMikKLSAgICAgICAgICAgIHJldHVybiBDYWxsKGxlZnRfZXhwciwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTElORU5PKG4pLAorICAgICAgICAgICAgcmV0dXJuIENhbGwobGVmdF9leHByLCBOVUxMLCBOVUxMLCBMSU5FTk8obiksCiAgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9jYWxsKGMsIENISUxEKG4sIDEpLCBsZWZ0X2V4cHIpOwpAQCAtMjE5MiwxOSArMjM2MCwyOSBAQAogfQogCiBzdGF0aWMgZXhwcl90eQotYXN0X2Zvcl9wb3dlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorYXN0X2Zvcl9hdG9tX2V4cHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICAvKiBwb3dlcjogYXRvbSB0cmFpbGVyKiAoJyoqJyBmYWN0b3IpKgotICAgICAqLwotICAgIGludCBpOworICAgIGludCBpLCBuY2gsIHN0YXJ0ID0gMDsKICAgICBleHByX3R5IGUsIHRtcDsKLSAgICBSRVEobiwgcG93ZXIpOwotICAgIGUgPSBhc3RfZm9yX2F0b20oYywgQ0hJTEQobiwgMCkpOworCisgICAgUkVRKG4sIGF0b21fZXhwcik7CisgICAgbmNoID0gTkNIKG4pOworCisgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IEFXQUlUKSB7CisgICAgICAgIHN0YXJ0ID0gMTsKKyAgICAgICAgYXNzZXJ0KG5jaCA+IDEpOworICAgIH0KKworICAgIGUgPSBhc3RfZm9yX2F0b20oYywgQ0hJTEQobiwgc3RhcnQpKTsKICAgICBpZiAoIWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChOQ0gobikgPT0gMSkKKyAgICBpZiAobmNoID09IDEpCiAgICAgICAgIHJldHVybiBlOwotICAgIGZvciAoaSA9IDE7IGkgPCBOQ0gobik7IGkrKykgeworICAgIGlmIChzdGFydCAmJiBuY2ggPT0gMikgeworICAgICAgICByZXR1cm4gQXdhaXQoZSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIH0KKworICAgIGZvciAoaSA9IHN0YXJ0ICsgMTsgaSA8IG5jaDsgaSsrKSB7CiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgIGlmIChUWVBFKGNoKSAhPSB0cmFpbGVyKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjE1LDYgKzIzOTMsMjggQEAKICAgICAgICAgdG1wLT5jb2xfb2Zmc2V0ID0gZS0+Y29sX29mZnNldDsKICAgICAgICAgZSA9IHRtcDsKICAgICB9CisKKyAgICBpZiAoc3RhcnQpIHsKKyAgICAgICAgLyogdGhlcmUgd2FzIGFuIEFXQUlUICovCisgICAgICAgIHJldHVybiBBd2FpdChlLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gZTsKKyAgICB9Cit9CisKK3N0YXRpYyBleHByX3R5Cithc3RfZm9yX3Bvd2VyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgLyogcG93ZXI6IGF0b20gdHJhaWxlciogKCcqKicgZmFjdG9yKSoKKyAgICAgKi8KKyAgICBleHByX3R5IGU7CisgICAgUkVRKG4sIHBvd2VyKTsKKyAgICBlID0gYXN0X2Zvcl9hdG9tX2V4cHIoYywgQ0hJTEQobiwgMCkpOworICAgIGlmICghZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKE5DSChuKSA9PSAxKQorICAgICAgICByZXR1cm4gZTsKICAgICBpZiAoVFlQRShDSElMRChuLCBOQ0gobikgLSAxKSkgPT0gZmFjdG9yKSB7CiAgICAgICAgIGV4cHJfdHkgZiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCBOQ0gobikgLSAxKSk7CiAgICAgICAgIGlmICghZikKQEAgLTIyNTcsOSArMjQ1NywxMSBAQAogICAgICAgIGFuZF9leHByOiBzaGlmdF9leHByICgnJicgc2hpZnRfZXhwcikqCiAgICAgICAgc2hpZnRfZXhwcjogYXJpdGhfZXhwciAoKCc8PCd8Jz4+JykgYXJpdGhfZXhwcikqCiAgICAgICAgYXJpdGhfZXhwcjogdGVybSAoKCcrJ3wnLScpIHRlcm0pKgotICAgICAgIHRlcm06IGZhY3RvciAoKCcqJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCisgICAgICAgdGVybTogZmFjdG9yICgoJyonfCdAJ3wnLyd8JyUnfCcvLycpIGZhY3RvcikqCiAgICAgICAgZmFjdG9yOiAoJysnfCctJ3wnficpIGZhY3RvciB8IHBvd2VyCi0gICAgICAgcG93ZXI6IGF0b20gdHJhaWxlciogKCcqKicgZmFjdG9yKSoKKyAgICAgICBwb3dlcjogYXRvbV9leHByIFsnKionIGZhY3Rvcl0KKyAgICAgICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgorICAgICAgIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KICAgICAqLwogCiAgICAgYXNkbF9zZXEgKnNlcTsKQEAgLTI0MDksMTUgKzI2MTEsMTQgQEAKIGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBleHByX3R5IGZ1bmMpCiB7CiAgICAgLyoKLSAgICAgIGFyZ2xpc3Q6IChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ118ICcqJyB0ZXN0IFsnLCcgJyoqJyB0ZXN0XQotICAgICAgICAgICAgICAgfCAnKionIHRlc3QpCi0gICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSAodGVzdCkgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisgICAgICBhcmdsaXN0OiBhcmd1bWVudCAoJywnIGFyZ3VtZW50KSogIFsnLCddCisgICAgICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfCAnKicgdGVzdCB8IHRlc3QgJz0nIHRlc3QgfCAnKionIHRlc3QgKQogICAgICovCiAKICAgICBpbnQgaSwgbmFyZ3MsIG5rZXl3b3JkcywgbmdlbnM7CisgICAgaW50IG5kb3VibGVzdGFyczsKICAgICBhc2RsX3NlcSAqYXJnczsKICAgICBhc2RsX3NlcSAqa2V5d29yZHM7Ci0gICAgZXhwcl90eSB2YXJhcmcgPSBOVUxMLCBrd2FyZyA9IE5VTEw7CiAKICAgICBSRVEobiwgYXJnbGlzdCk7CiAKQEAgLTI0MzEsNyArMjYzMiwxMCBAQAogICAgICAgICAgICAgICAgIG5hcmdzKys7CiAgICAgICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpCiAgICAgICAgICAgICAgICAgbmdlbnMrKzsKKyAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQoY2gsIDApKSA9PSBTVEFSKQorICAgICAgICAgICAgICAgIG5hcmdzKys7CiAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgLyogVFlQRShDSElMRChjaCwgMCkpID09IERPVUJMRVNUQVIgb3Iga2V5d29yZCBhcmd1bWVudCAqLwogICAgICAgICAgICAgICAgIG5rZXl3b3JkcysrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ1Miw0MSArMjY1Niw4MSBAQAogICAgIGtleXdvcmRzID0gX1B5X2FzZGxfc2VxX25ldyhua2V5d29yZHMsIGMtPmNfYXJlbmEpOwogICAgIGlmICgha2V5d29yZHMpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG5hcmdzID0gMDsKLSAgICBua2V5d29yZHMgPSAwOworCisgICAgbmFyZ3MgPSAwOyAgLyogcG9zaXRpb25hbCBhcmd1bWVudHMgKyBpdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmdzICovCisgICAgbmtleXdvcmRzID0gMDsgIC8qIGtleXdvcmQgYXJndW1lbnRzICsga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmdzICovCisgICAgbmRvdWJsZXN0YXJzID0gMDsgIC8qIGp1c3Qga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmdzICovCiAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSsrKSB7CiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgaSk7CiAgICAgICAgIGlmIChUWVBFKGNoKSA9PSBhcmd1bWVudCkgewogICAgICAgICAgICAgZXhwcl90eSBlOworICAgICAgICAgICAgbm9kZSAqY2hjaCA9IENISUxEKGNoLCAwKTsKICAgICAgICAgICAgIGlmIChOQ0goY2gpID09IDEpIHsKKyAgICAgICAgICAgICAgICAvKiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgKi8KICAgICAgICAgICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWtleXdvcmQgYXJnIGFmdGVyIGtleXdvcmQgYXJnIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZG91Ymxlc3RhcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCBmb2xsb3dzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2hjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvc2l0aW9uYWwgYXJndW1lbnQgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh2YXJhcmcpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IG5hbWVkIGFyZ3VtZW50cyBtYXkgZm9sbG93ICpleHByZXNzaW9uIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICAgICAgZSA9IGFzdF9mb3JfZXhwcihjLCBjaGNoKTsKICAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhcmdzLCBuYXJncysrLCBlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFRZUEUoY2hjaCkgPT0gU1RBUikgeworICAgICAgICAgICAgICAgIC8qIGFuIGl0ZXJhYmxlIGFyZ3VtZW50IHVucGFja2luZyAqLworICAgICAgICAgICAgICAgIGV4cHJfdHkgc3RhcnJlZDsKKyAgICAgICAgICAgICAgICBpZiAobmRvdWJsZXN0YXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSBhcmd1bWVudCB1bnBhY2tpbmcgZm9sbG93cyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAxKSk7CisgICAgICAgICAgICAgICAgaWYgKCFlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBzdGFycmVkID0gU3RhcnJlZChlLCBMb2FkLCBMSU5FTk8oY2hjaCksCisgICAgICAgICAgICAgICAgICAgICAgICBjaGNoLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN0YXJyZWQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhcmdzLCBuYXJncysrLCBzdGFycmVkKTsKKworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoVFlQRShjaGNoKSA9PSBET1VCTEVTVEFSKSB7CisgICAgICAgICAgICAgICAgLyogYSBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZyAqLworICAgICAgICAgICAgICAgIGtleXdvcmRfdHkga3c7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoY2gsIDEpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGt3ID0ga2V5d29yZChOVUxMLCBlLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5d29yZHMsIG5rZXl3b3JkcysrLCBrdyk7CisgICAgICAgICAgICAgICAgbmRvdWJsZXN0YXJzKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKGNoLCAxKSkgPT0gY29tcF9mb3IpIHsKKyAgICAgICAgICAgICAgICAvKiB0aGUgbG9uZSBnZW5lcmF0b3IgZXhwcmVzc2lvbiAqLwogICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2dlbmV4cChjLCBjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYXJncywgbmFyZ3MrKywgZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBhIGtleXdvcmQgYXJndW1lbnQgKi8KICAgICAgICAgICAgICAgICBrZXl3b3JkX3R5IGt3OwogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIga2V5LCB0bXA7CiAgICAgICAgICAgICAgICAgaW50IGs7CiAKLSAgICAgICAgICAgICAgICAvKiBDSElMRChjaCwgMCkgaXMgdGVzdCwgYnV0IG11c3QgYmUgYW4gaWRlbnRpZmllcj8gKi8KLSAgICAgICAgICAgICAgICBlID0gYXN0X2Zvcl9leHByKGMsIENISUxEKGNoLCAwKSk7CisgICAgICAgICAgICAgICAgLyogY2hjaCBpcyB0ZXN0LCBidXQgbXVzdCBiZSBhbiBpZGVudGlmaWVyPyAqLworICAgICAgICAgICAgICAgIGUgPSBhc3RfZm9yX2V4cHIoYywgY2hjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAvKiBmKGxhbWJkYSB4OiB4WzBdID0gMykgZW5kcyB1cCBnZXR0aW5nIHBhcnNlZCB3aXRoCkBAIC0yNDk1LDE5ICsyNzM5LDI0IEBACiAgICAgICAgICAgICAgICAgICogdGhlbiBpcyB2ZXJ5IGNvbmZ1c2luZy4KICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBpZiAoZS0+a2luZCA9PSBMYW1iZGFfa2luZCkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAibGFtYmRhIGNhbm5vdCBjb250YWluIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhbWJkYSBjYW5ub3QgY29udGFpbiBhc3NpZ25tZW50Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlLT5raW5kICE9IE5hbWVfa2luZCkgeworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2hjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9yYmlkZGVuX25hbWUoYywgZS0+di5OYW1lLmlkLCBjaCwgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGtleSA9IGUtPnYuTmFtZS5pZDsKICAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmtleXdvcmRzOyBrKyspIHsKICAgICAgICAgICAgICAgICAgICAgdG1wID0gKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaykpLT5hcmc7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NvbXBhcmUodG1wLCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLCAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOworICAgICAgICAgICAgICAgICAgICBpZiAodG1wICYmICFQeVVuaWNvZGVfQ29tcGFyZSh0bXAsIGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCByZXBlYXRlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yNTIwLDIxICsyNzY5LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoa2V5d29yZHMsIG5rZXl3b3JkcysrLCBrdyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShjaCkgPT0gU1RBUikgewotICAgICAgICAgICAgdmFyYXJnID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIGkrMSkpOwotICAgICAgICAgICAgaWYgKCF2YXJhcmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShjaCkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAgICAga3dhcmcgPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgaSsxKSk7Ci0gICAgICAgICAgICBpZiAoIWt3YXJnKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaSsrOwotICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIHZhcmFyZywga3dhcmcsIGZ1bmMtPmxpbmVubywgZnVuYy0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgcmV0dXJuIENhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGZ1bmMtPmxpbmVubywgZnVuYy0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBleHByX3R5CkBAIC0yNTY4LDcgKzI4MDUsNyBAQAogICAgIC8qIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpCiAgICAgICAgICAgICAgICAgfCAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0KSkqKQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KLSAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nCisgICAgICAgYXVnYXNzaWduOiAnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScKICAgICAgICAgICAgICAgICB8ICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nCiAgICAgICAgdGVzdDogLi4uIGhlcmUgc3RhcnRzIHRoZSBvcGVyYXRvciBwcmVjZW5kZW5jZSBkYW5jZQogICAgICAqLwpAQCAtMzI4OCw3ICszNTI1LDcgQEAKIH0KIAogc3RhdGljIHN0bXRfdHkKLWFzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK2FzdF9mb3JfZm9yX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IGlzX2FzeW5jKQogewogICAgIGFzZGxfc2VxICpfdGFyZ2V0LCAqc2VxID0gTlVMTCwgKnN1aXRlX3NlcTsKICAgICBleHByX3R5IGV4cHJlc3Npb247CkBAIC0zMzIyLDggKzM1NTksMTQgQEAKICAgICBpZiAoIXN1aXRlX3NlcSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gRm9yKHRhcmdldCwgZXhwcmVzc2lvbiwgc3VpdGVfc2VxLCBzZXEsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgaWYgKGlzX2FzeW5jKQorICAgICAgICByZXR1cm4gQXN5bmNGb3IodGFyZ2V0LCBleHByZXNzaW9uLCBzdWl0ZV9zZXEsIHNlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gRm9yKHRhcmdldCwgZXhwcmVzc2lvbiwgc3VpdGVfc2VxLCBzZXEsCisgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBleGNlcHRoYW5kbGVyX3R5CkBAIC0zNDcwLDcgKzM3MTMsNyBAQAogCiAvKiB3aXRoX3N0bXQ6ICd3aXRoJyB3aXRoX2l0ZW0gKCcsJyB3aXRoX2l0ZW0pKiAnOicgc3VpdGUgKi8KIHN0YXRpYyBzdG10X3R5Ci1hc3RfZm9yX3dpdGhfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorYXN0X2Zvcl93aXRoX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50IGlzX2FzeW5jKQogewogICAgIGludCBpLCBuX2l0ZW1zOwogICAgIGFzZGxfc2VxICppdGVtcywgKmJvZHk7CkBAIC0zNDkyLDcgKzM3MzUsMTAgQEAKICAgICBpZiAoIWJvZHkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFdpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoaXNfYXN5bmMpCisgICAgICAgIHJldHVybiBBc3luY1dpdGgoaXRlbXMsIGJvZHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBXaXRoKGl0ZW1zLCBib2R5LCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiB9CiAKIHN0YXRpYyBzdG10X3R5CkBAIC0zNTE0LDggKzM3NjAsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAotICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLCBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgICAgICAgICBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KIAogICAgIGlmIChUWVBFKENISUxEKG4sIDMpKSA9PSBSUEFSKSB7IC8qIGNsYXNzIE5BTUUgJygnICcpJyAnOicgc3VpdGUgKi8KQEAgLTM1MjcsOCArMzc3Myw4IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGNsYXNzbmFtZSwgQ0hJTEQobiwgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBDbGFzc0RlZihjbGFzc25hbWUsIE5VTEwsIE5VTEwsIHMsIGRlY29yYXRvcl9zZXEsIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogCiAgICAgLyogY2xhc3MgTkFNRSAnKCcgYXJnbGlzdCAnKScgJzonIHN1aXRlICovCkBAIC0zNTUzLDggKzM3OTksNyBAQAogICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBjYWxsLT52LkNhbGwuYXJncywgY2FsbC0+di5DYWxsLmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICBjYWxsLT52LkNhbGwuc3RhcmFyZ3MsIGNhbGwtPnYuQ2FsbC5rd2FyZ3MsIHMsCisgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgY2FsbC0+di5DYWxsLmFyZ3MsIGNhbGwtPnYuQ2FsbC5rZXl3b3JkcywgcywKICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX3NlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCkBAIC0zNjAwLDcgKzM4NDUsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10Ci0gICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWYgfCBjbGFzc2RlZiB8IGRlY29yYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQgfCBhc3luY19zdG10CiAgICAgICAgICovCiAgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7CiAgICAgICAgIFJFUShuLCBjb21wb3VuZF9zdG10KTsKQEAgLTM2MTAsMTcgKzM4NTUsMTkgQEAKICAgICAgICAgICAgIGNhc2Ugd2hpbGVfc3RtdDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aGlsZV9zdG10KGMsIGNoKTsKICAgICAgICAgICAgIGNhc2UgZm9yX3N0bXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfZm9yX3N0bXQoYywgY2gpOworICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Zvcl9zdG10KGMsIGNoLCAwKTsKICAgICAgICAgICAgIGNhc2UgdHJ5X3N0bXQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3JfdHJ5X3N0bXQoYywgY2gpOwogICAgICAgICAgICAgY2FzZSB3aXRoX3N0bXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFzdF9mb3Jfd2l0aF9zdG10KGMsIGNoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl93aXRoX3N0bXQoYywgY2gsIDApOwogICAgICAgICAgICAgY2FzZSBmdW5jZGVmOgogICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Z1bmNkZWYoYywgY2gsIE5VTEwpOwogICAgICAgICAgICAgY2FzZSBjbGFzc2RlZjoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9jbGFzc2RlZihjLCBjaCwgTlVMTCk7CiAgICAgICAgICAgICBjYXNlIGRlY29yYXRlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gYXN0X2Zvcl9kZWNvcmF0ZWQoYywgY2gpOworICAgICAgICAgICAgY2FzZSBhc3luY19zdG10OgorICAgICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2FzeW5jX3N0bXQoYywgY2gpOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmhhbmRsZWQgc21hbGxfc3RtdDogVFlQRT0lZCBOQ0g9JWRcbiIsCmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IDRiNGY5NzkuLjJmMjIyMDkgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC00NiwxMyArNDYsMTYgQEAKIF9QeV9JREVOVElGSUVSKHN0ZG91dCk7CiBfUHlfSURFTlRJRklFUihzdGRlcnIpOwogCisjaW5jbHVkZSAiY2xpbmljL2JsdGlubW9kdWxlLmMuaCIKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgd2FpdGluZyBmb3IgKmFyZ3Mgc3VwcG9ydCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fX19idWlsZF9jbGFzc19fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqY2VsbDsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwotICAgIGludCBpc2NsYXNzOworICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KIAogICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewpAQCAtMjI5LDI1ICsyMzIsNDIgQEAKIGlzIHRoZSBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBtb2R1bGUuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorYWJzIGFzIGJ1aWx0aW5fYWJzCisKKyAgICB4OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9hYnMoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjgzMzA0N2M0OTNlY2VhMiBpbnB1dD1iZWQ0Y2ExNGUyOWMyMGQxXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Fic29sdXRlKHYpOworICAgIHJldHVybiBQeU51bWJlcl9BYnNvbHV0ZSh4KTsKIH0KIAotUHlEb2NfU1RSVkFSKGFic19kb2MsCi0iYWJzKG51bWJlcikgLT4gbnVtYmVyXG5cCi1cblwKLVJldHVybiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGFyZ3VtZW50LiIpOworLypbY2xpbmljIGlucHV0XQorYWxsIGFzIGJ1aWx0aW5fYWxsCisKKyAgICBpdGVyYWJsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFsbCB2YWx1ZXMgeCBpbiB0aGUgaXRlcmFibGUuCisKK0lmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2FsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FsbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqaXRlcmFibGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDg5ZTZkMWI3YmRlMjdiMSBpbnB1dD0xYTdjNWQxYmMzNDM4YTIxXSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CiAgICAgaW50IGNtcDsKIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2KTsKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CkBAIC0yNzcsMjAgKzI5NywyNiBAQAogICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCi1QeURvY19TVFJWQVIoYWxsX2RvYywKLSJhbGwoaXRlcmFibGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbGwgdmFsdWVzIHggaW4gdGhlIGl0ZXJhYmxlLlxuXAotSWYgdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gVHJ1ZS4iKTsKKy8qW2NsaW5pYyBpbnB1dF0KK2FueSBhcyBidWlsdGluX2FueQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIFRydWUgaWYgYm9vbCh4KSBpcyBUcnVlIGZvciBhbnkgeCBpbiB0aGUgaXRlcmFibGUuCisKK0lmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hbnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9hbnkoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZXJhYmxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFiZTk5NGIyYzIzMDc0OTIgaW5wdXQ9NDFkNzQ1MWMyMzM4NGYyNF0qLwogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CiAgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOwogICAgIGludCBjbXA7CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodik7CisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwpAQCAtMzIwLDU2ICszNDYsNjcgQEAKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLVB5RG9jX1NUUlZBUihhbnlfZG9jLAotImFueShpdGVyYWJsZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFueSB4IGluIHRoZSBpdGVyYWJsZS5cblwKLUlmIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIEZhbHNlLiIpOworLypbY2xpbmljIGlucHV0XQorYXNjaWkgYXMgYnVpbHRpbl9hc2NpaQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1JldHVybiBhbiBBU0NJSS1vbmx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4KKworQXMgcmVwcigpLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhbgorb2JqZWN0LCBidXQgZXNjYXBlIHRoZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5CityZXByKCkgdXNpbmcgXFx4LCBcXHUgb3IgXFxVIGVzY2FwZXMuIFRoaXMgZ2VuZXJhdGVzIGEgc3RyaW5nIHNpbWlsYXIKK3RvIHRoYXQgcmV0dXJuZWQgYnkgcmVwcigpIGluIFB5dGhvbiAyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9hc2NpaShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2FzY2lpKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDRlODYyYzQ4YWYyYTkzMyBpbnB1dD00YzYyNzMyZTFiM2EzY2M5XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0FTQ0lJKHYpOworICAgIHJldHVybiBQeU9iamVjdF9BU0NJSShvYmopOwogfQogCi1QeURvY19TVFJWQVIoYXNjaWlfZG9jLAotImFzY2lpKG9iamVjdCkgLT4gc3RyaW5nXG5cCi1cblwKLUFzIHJlcHIoKSwgcmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBwcmludGFibGUgcmVwcmVzZW50YXRpb24gb2YgYW5cblwKLW9iamVjdCwgYnV0IGVzY2FwZSB0aGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieVxuXAotcmVwcigpIHVzaW5nIFxceCwgXFx1IG9yIFxcVSBlc2NhcGVzLiAgVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhclxuXAotdG8gdGhhdCByZXR1cm5lZCBieSByZXByKCkgaW4gUHl0aG9uIDIuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2JpbiBhcyBidWlsdGluX2JpbgorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIuCisKKyAgID4+PiBiaW4oMjc5NjIwMikKKyAgICcwYjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2JpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2JpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1ZWUyNmM2Y2YzYmJiNTQgaW5wdXQ9NTNmOGEwMjY0YmFjYWY5MF0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgMik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDIpOwogfQogCi1QeURvY19TVFJWQVIoYmluX2RvYywKLSJiaW4obnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGJpbigyNzk2MjAyKVxuXAotICAgJzBiMTAxMDEwMTAxMDEwMTAxMDEwMTAxMCdcblwKLSIpOwogCisvKltjbGluaWMgaW5wdXRdCitjYWxsYWJsZSBhcyBidWlsdGluX2NhbGxhYmxlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSAoaS5lLiwgc29tZSBraW5kIG9mIGZ1bmN0aW9uKS4KKworTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhCitfX2NhbGxfXygpIG1ldGhvZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fY2FsbGFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9jYWxsYWJsZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY0ZGYyY2U5MjM2NGI2NTYgaW5wdXQ9MTQyM2JhYjk5Y2M0MWY1OF0qLwogewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpUHlDYWxsYWJsZV9DaGVjayh2KSk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylQeUNhbGxhYmxlX0NoZWNrKG9iaikpOwogfQogCi1QeURvY19TVFJWQVIoY2FsbGFibGVfZG9jLAotImNhbGxhYmxlKG9iamVjdCkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlIChpLmUuLCBzb21lIGtpbmQgb2YgZnVuY3Rpb24pLlxuXAotTm90ZSB0aGF0IGNsYXNzZXMgYXJlIGNhbGxhYmxlLCBhcyBhcmUgaW5zdGFuY2VzIG9mIGNsYXNzZXMgd2l0aCBhXG5cCi1fX2NhbGxfXygpIG1ldGhvZC4iKTsKLQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtNTI0LDQwICs1NjEsNDIgQEAKIH07CiAKIAorLypbY2xpbmljIGlucHV0XQorZm9ybWF0IGFzIGJ1aWx0aW5fZm9ybWF0CisKKyAgICB2YWx1ZTogb2JqZWN0CisgICAgZm9ybWF0X3NwZWM6IHVuaWNvZGUoY19kZWZhdWx0PSJOVUxMIikgPSAnJworICAgIC8KKworUmV0dXJuIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpCisKK2Zvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmcKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKwogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZm9ybWF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5fZm9ybWF0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDM0MWZkNzhhNWYwMTc2NCBpbnB1dD02MzI1ZTc1MWExYjI5Yjg2XSovCiB7Ci0gICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VTpmb3JtYXQiLCAmdmFsdWUsICZmb3JtYXRfc3BlYykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgcmV0dXJuIFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm9ybWF0X3NwZWMpOwogfQogCi1QeURvY19TVFJWQVIoZm9ybWF0X2RvYywKLSJmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pIC0+IHN0cmluZ1xuXAotXG5cCi1SZXR1cm5zIHZhbHVlLl9fZm9ybWF0X18oZm9ybWF0X3NwZWMpXG5cCi1mb3JtYXRfc3BlYyBkZWZhdWx0cyB0byBcIlwiIik7CisvKltjbGluaWMgaW5wdXRdCitjaHIgYXMgYnVpbHRpbl9jaHIKKworICAgIGk6IGludAorICAgIC8KKworUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jaHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9jaHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02N2ZlNGQ4N2U2OTBmMzczIGlucHV0PTNmNjA0ZWY0NWE3MDc1MGRdKi8KIHsKLSAgICBpbnQgeDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpjaHIiLCAmeCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh4KTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGkpOwogfQogCi1QeURvY19TVFJWQVIoY2hyX2RvYywKLSJjaHIoaSkgLT4gVW5pY29kZSBjaGFyYWN0ZXJcblwKLVxuXAotUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIpOwotCiAKIHN0YXRpYyBjb25zdCBjaGFyICoKIHNvdXJjZV9hc19zdHJpbmcoUHlPYmplY3QgKmNtZCwgY29uc3QgY2hhciAqZnVuY25hbWUsIGNvbnN0IGNoYXIgKndoYXQsIFB5Q29tcGlsZXJGbGFncyAqY2YsIFB5X2J1ZmZlciAqdmlldykKQEAgLTU4Miw4ICs2MjEsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc3RybGVuKHN0cikgIT0gc2l6ZSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgIGlmIChzdHJsZW4oc3RyKSAhPSAoc2l6ZV90KXNpemUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMiKTsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSh2aWV3KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01OTEsMzUgKzYzMCw0NyBAQAogICAgIHJldHVybiBzdHI7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2NvbXBpbGUgYXMgYnVpbHRpbl9jb21waWxlCisKKyAgICBzb3VyY2U6IG9iamVjdAorICAgIGZpbGVuYW1lOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNEZWNvZGVyIikKKyAgICBtb2RlOiBzdHIKKyAgICBmbGFnczogaW50ID0gMAorICAgIGRvbnRfaW5oZXJpdDogaW50KGNfZGVmYXVsdD0iMCIpID0gRmFsc2UKKyAgICBvcHRpbWl6ZTogaW50ID0gLTEKKworQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuCisKK1RoZSBzb3VyY2UgY29kZSBtYXkgcmVwcmVzZW50IGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24uCitUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy4KK1RoZSBtb2RlIG11c3QgYmUgJ2V4ZWMnIHRvIGNvbXBpbGUgYSBtb2R1bGUsICdzaW5nbGUnIHRvIGNvbXBpbGUgYQorc2luZ2xlIChpbnRlcmFjdGl2ZSkgc3RhdGVtZW50LCBvciAnZXZhbCcgdG8gY29tcGlsZSBhbiBleHByZXNzaW9uLgorVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2UKK3RoZSBjb21waWxhdGlvbiBvZiB0aGUgY29kZS4KK1RoZSBkb250X2luaGVyaXQgYXJndW1lbnQsIGlmIHRydWUsIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nCit0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmcKK2NvbXBpbGU7IGlmIGFic2VudCBvciBmYWxzZSB0aGVzZSBzdGF0ZW1lbnRzIGRvIGluZmx1ZW5jZSB0aGUgY29tcGlsYXRpb24sCitpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK2J1aWx0aW5fY29tcGlsZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUsIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2luaGVyaXQsIGludCBvcHRpbWl6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTg4MTc2MmMxYmI5MGM0IGlucHV0PTlkNTNlOGNmYjNjODY0MTRdKi8KIHsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpzdHI7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIGNoYXIgKnN0YXJ0c3RyOwotICAgIGludCBtb2RlID0gLTE7Ci0gICAgaW50IGRvbnRfaW5oZXJpdCA9IDA7Ci0gICAgaW50IHN1cHBsaWVkX2ZsYWdzID0gMDsKLSAgICBpbnQgb3B0aW1pemUgPSAtMTsKKyAgICBpbnQgY29tcGlsZV9tb2RlID0gLTE7CiAgICAgaW50IGlzX2FzdDsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7Ci0gICAgUHlPYmplY3QgKmNtZDsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OwogICAgIGludCBzdGFydFtdID0ge1B5X2ZpbGVfaW5wdXQsIFB5X2V2YWxfaW5wdXQsIFB5X3NpbmdsZV9pbnB1dH07CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPTyZzfGlpaTpjb21waWxlIiwgIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzdHIsICZzdXBwbGllZF9mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBjZi5jZl9mbGFncyA9IGZsYWdzIHwgUHlDRl9TT1VSQ0VfSVNfVVRGODsKIAotICAgIGNmLmNmX2ZsYWdzID0gc3VwcGxpZWRfZmxhZ3MgfCBQeUNGX1NPVVJDRV9JU19VVEY4OwotCi0gICAgaWYgKHN1cHBsaWVkX2ZsYWdzICYKKyAgICBpZiAoZmxhZ3MgJgogICAgICAgICB+KFB5Q0ZfTUFTSyB8IFB5Q0ZfTUFTS19PQlNPTEVURSB8IFB5Q0ZfRE9OVF9JTVBMWV9ERURFTlQgfCBQeUNGX09OTFlfQVNUKSkKICAgICB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNjM4LDI1ICs2ODksMjUgQEAKICAgICAgICAgUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAoc3RhcnRzdHIsICJleGVjIikgPT0gMCkKLSAgICAgICAgbW9kZSA9IDA7Ci0gICAgZWxzZSBpZiAoc3RyY21wKHN0YXJ0c3RyLCAiZXZhbCIpID09IDApCi0gICAgICAgIG1vZGUgPSAxOwotICAgIGVsc2UgaWYgKHN0cmNtcChzdGFydHN0ciwgInNpbmdsZSIpID09IDApCi0gICAgICAgIG1vZGUgPSAyOworICAgIGlmIChzdHJjbXAobW9kZSwgImV4ZWMiKSA9PSAwKQorICAgICAgICBjb21waWxlX21vZGUgPSAwOworICAgIGVsc2UgaWYgKHN0cmNtcChtb2RlLCAiZXZhbCIpID09IDApCisgICAgICAgIGNvbXBpbGVfbW9kZSA9IDE7CisgICAgZWxzZSBpZiAoc3RyY21wKG1vZGUsICJzaW5nbGUiKSA9PSAwKQorICAgICAgICBjb21waWxlX21vZGUgPSAyOwogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb21waWxlKCkgYXJnIDMgbXVzdCBiZSAnZXhlYycsICdldmFsJyBvciAnc2luZ2xlJyIpOworICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBpbGUoKSBtb2RlIG11c3QgYmUgJ2V4ZWMnLCAnZXZhbCcgb3IgJ3NpbmdsZSciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBpc19hc3QgPSBQeUFTVF9DaGVjayhjbWQpOworICAgIGlzX2FzdCA9IFB5QVNUX0NoZWNrKHNvdXJjZSk7CiAgICAgaWYgKGlzX2FzdCA9PSAtMSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoaXNfYXN0KSB7Ci0gICAgICAgIGlmIChzdXBwbGllZF9mbGFncyAmIFB5Q0ZfT05MWV9BU1QpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihjbWQpOwotICAgICAgICAgICAgcmVzdWx0ID0gY21kOworICAgICAgICBpZiAoZmxhZ3MgJiBQeUNGX09OTFlfQVNUKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc291cmNlKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNvdXJjZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hOwpAQCAtNjY1LDcgKzcxNiw3IEBACiAgICAgICAgICAgICBhcmVuYSA9IFB5QXJlbmFfTmV3KCk7CiAgICAgICAgICAgICBpZiAoYXJlbmEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgbW9kID0gUHlBU1Rfb2JqMm1vZChjbWQsIGFyZW5hLCBtb2RlKTsKKyAgICAgICAgICAgIG1vZCA9IFB5QVNUX29iajJtb2Qoc291cmNlLCBhcmVuYSwgY29tcGlsZV9tb2RlKTsKICAgICAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTY4MSwxMSArNzMyLDExIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZ2aWV3KTsKKyAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHNvdXJjZSwgImNvbXBpbGUiLCAic3RyaW5nLCBieXRlcyBvciBBU1QiLCAmY2YsICZ2aWV3KTsKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICByZXN1bHQgPSBQeV9Db21waWxlU3RyaW5nT2JqZWN0KHN0ciwgZmlsZW5hbWUsIHN0YXJ0W21vZGVdLCAmY2YsIG9wdGltaXplKTsKKyAgICByZXN1bHQgPSBQeV9Db21waWxlU3RyaW5nT2JqZWN0KHN0ciwgZmlsZW5hbWUsIHN0YXJ0W2NvbXBpbGVfbW9kZV0sICZjZiwgb3B0aW1pemUpOwogICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgIGdvdG8gZmluYWxseTsKIApAQCAtNjk2LDIxICs3NDcsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5RG9jX1NUUlZBUihjb21waWxlX2RvYywKLSJjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGVbLCBmbGFnc1ssIGRvbnRfaW5oZXJpdF1dKSAtPiBjb2RlIG9iamVjdFxuXAotXG5cCi1Db21waWxlIHRoZSBzb3VyY2UgKGEgUHl0aG9uIG1vZHVsZSwgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24pXG5cCi1pbnRvIGEgY29kZSBvYmplY3QgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgYnkgZXhlYygpIG9yIGV2YWwoKS5cblwKLVRoZSBmaWxlbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHJ1bi10aW1lIGVycm9yIG1lc3NhZ2VzLlxuXAotVGhlIG1vZGUgbXVzdCBiZSAnZXhlYycgdG8gY29tcGlsZSBhIG1vZHVsZSwgJ3NpbmdsZScgdG8gY29tcGlsZSBhXG5cCi1zaW5nbGUgKGludGVyYWN0aXZlKSBzdGF0ZW1lbnQsIG9yICdldmFsJyB0byBjb21waWxlIGFuIGV4cHJlc3Npb24uXG5cCi1UaGUgZmxhZ3MgYXJndW1lbnQsIGlmIHByZXNlbnQsIGNvbnRyb2xzIHdoaWNoIGZ1dHVyZSBzdGF0ZW1lbnRzIGluZmx1ZW5jZVxuXAotdGhlIGNvbXBpbGF0aW9uIG9mIHRoZSBjb2RlLlxuXAotVGhlIGRvbnRfaW5oZXJpdCBhcmd1bWVudCwgaWYgbm9uLXplcm8sIHN0b3BzIHRoZSBjb21waWxhdGlvbiBpbmhlcml0aW5nXG5cCi10aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmdcblwKLWNvbXBpbGU7IGlmIGFic2VudCBvciB6ZXJvIHRoZXNlIHN0YXRlbWVudHMgZG8gaW5mbHVlbmNlIHRoZSBjb21waWxhdGlvbixcblwKLWluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03MzUsMzMgKzc3Miw1MSBAQAogIiAgZm9yIGFueSBvdGhlciBvYmplY3Q6IGl0cyBhdHRyaWJ1dGVzLCBpdHMgY2xhc3MncyBhdHRyaWJ1dGVzLCBhbmRcbiIKICIgICAgcmVjdXJzaXZlbHkgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNsYXNzJ3MgYmFzZSBjbGFzc2VzLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9kaXZtb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICp2LCAqdzsKKy8qW2NsaW5pYyBpbnB1dF0KK2Rpdm1vZCBhcyBidWlsdGluX2Rpdm1vZAogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwgMiwgMiwgJnYsICZ3KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX0Rpdm1vZCh2LCB3KTsKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGl2bW9kX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhZDAwNzYxMjBlYmY5YWMgaW5wdXQ9N2ZkYjE1ZjhhOTdhNWZlN10qLworeworICAgIHJldHVybiBQeU51bWJlcl9EaXZtb2QoeCwgeSk7CiB9CiAKLVB5RG9jX1NUUlZBUihkaXZtb2RfZG9jLAotImRpdm1vZCh4LCB5KSAtPiAoZGl2LCBtb2QpXG5cCi1cblwKLVJldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4iKTsKIAorLypbY2xpbmljIGlucHV0XQorZXZhbCBhcyBidWlsdGluX2V2YWwKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXZhbHVhdGUgdGhlIGdpdmVuIHNvdXJjZSBpbiB0aGUgY29udGV4dCBvZiBnbG9iYWxzIGFuZCBsb2NhbHMuCisKK1RoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzI4NDUwMWZiN2I0ZDY2NiBpbnB1dD0xMWVlNzE4YTg2NDBlNTI3XSovCiB7Ci0gICAgUHlPYmplY3QgKmNtZCwgKnJlc3VsdCwgKnRtcCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeV9Ob25lLCAqbG9jYWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wID0gTlVMTDsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgUHlDb21waWxlckZsYWdzIGNmOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsIDEsIDMsICZjbWQsICZnbG9iYWxzLCAmbG9jYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGxvY2FscyAhPSBQeV9Ob25lICYmICFQeU1hcHBpbmdfQ2hlY2sobG9jYWxzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibG9jYWxzIG11c3QgYmUgYSBtYXBwaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzk2LDE3ICs4NTEsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUNvZGVfQ2hlY2soY21kKSkgewotICAgICAgICBpZiAoUHlDb2RlX0dldE51bUZyZWUoKFB5Q29kZU9iamVjdCAqKWNtZCkgPiAwKSB7CisgICAgaWYgKFB5Q29kZV9DaGVjayhzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUNvZGVfR2V0TnVtRnJlZSgoUHlDb2RlT2JqZWN0ICopc291cmNlKSA+IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICJjb2RlIG9iamVjdCBwYXNzZWQgdG8gZXZhbCgpIG1heSBub3QgY29udGFpbiBmcmVlIHZhcmlhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5RXZhbF9FdmFsQ29kZShjbWQsIGdsb2JhbHMsIGxvY2Fscyk7CisgICAgICAgIHJldHVybiBQeUV2YWxfRXZhbENvZGUoc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogICAgIH0KIAogICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9TT1VSQ0VfSVNfVVRGODsKLSAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKGNtZCwgImV2YWwiLCAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CisgICAgc3RyID0gc291cmNlX2FzX3N0cmluZyhzb3VyY2UsICJldmFsIiwgInN0cmluZywgYnl0ZXMgb3IgY29kZSIsICZjZiwgJnZpZXcpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTgyMCwyNCArODc1LDI5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKGV2YWxfZG9jLAotImV2YWwoc291cmNlWywgZ2xvYmFsc1ssIGxvY2Fsc11dKSAtPiB2YWx1ZVxuXAotXG5cCi1FdmFsdWF0ZSB0aGUgc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cblwKLVRoZSBzb3VyY2UgbWF5IGJlIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhIFB5dGhvbiBleHByZXNzaW9uXG5cCi1vciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS5cblwKLVRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLFxuXAotZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuXG5cCi1JZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC5cbiIpOworLypbY2xpbmljIGlucHV0XQorZXhlYyBhcyBidWlsdGluX2V4ZWMKKworICAgIHNvdXJjZTogb2JqZWN0CisgICAgZ2xvYmFsczogb2JqZWN0ID0gTm9uZQorICAgIGxvY2Fsczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworRXhlY3V0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy4KKworVGhlIHNvdXJjZSBtYXkgYmUgYSBzdHJpbmcgcmVwcmVzZW50aW5nIG9uZSBvciBtb3JlIFB5dGhvbiBzdGF0ZW1lbnRzCitvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS4KK1RoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLAorZGVmYXVsdGluZyB0byB0aGUgY3VycmVudCBnbG9iYWxzIGFuZCBsb2NhbHMuCitJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fZXhlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2V4ZWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODNkNTc0ZWY5ZDVkMGI0NiBpbnB1dD0wMWNhM2UxYzAxNjkyODI5XSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKnByb2csICpnbG9iYWxzID0gUHlfTm9uZSwgKmxvY2FscyA9IFB5X05vbmU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwgMSwgMywgJnByb2csICZnbG9iYWxzLCAmbG9jYWxzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGdsb2JhbHMgPSBQeUV2YWxfR2V0R2xvYmFscygpOwpAQCAtODU2LDEzICs5MTYsMTMgQEAKICAgICAgICAgbG9jYWxzID0gZ2xvYmFsczsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKGdsb2JhbHMpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJleGVjKCkgYXJnIDIgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjEwMHMiLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZXhlYygpIGdsb2JhbHMgbXVzdCBiZSBhIGRpY3QsIG5vdCAlLjEwMHMiLAogICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhsb2NhbHMpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiYXJnIDMgbXVzdCBiZSBhIG1hcHBpbmcgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAibG9jYWxzIG11c3QgYmUgYSBtYXBwaW5nIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAogICAgICAgICAgICAgbG9jYWxzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtODcyLDIyICs5MzIsMjIgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeUNvZGVfQ2hlY2socHJvZykpIHsKLSAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilwcm9nKSA+IDApIHsKKyAgICBpZiAoUHlDb2RlX0NoZWNrKHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5Q29kZV9HZXROdW1GcmVlKChQeUNvZGVPYmplY3QgKilzb3VyY2UpID4gMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAiY29kZSBvYmplY3QgcGFzc2VkIHRvIGV4ZWMoKSBtYXkgbm90ICIKICAgICAgICAgICAgICAgICAiY29udGFpbiBmcmVlIHZhcmlhYmxlcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgdiA9IFB5RXZhbF9FdmFsQ29kZShwcm9nLCBnbG9iYWxzLCBsb2NhbHMpOworICAgICAgICB2ID0gUHlFdmFsX0V2YWxDb2RlKHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OwogICAgICAgICBjb25zdCBjaGFyICpzdHI7CiAgICAgICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKICAgICAgICAgY2YuY2ZfZmxhZ3MgPSBQeUNGX1NPVVJDRV9JU19VVEY4OwotICAgICAgICBzdHIgPSBzb3VyY2VfYXNfc3RyaW5nKHByb2csICJleGVjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CisgICAgICAgIHN0ciA9IHNvdXJjZV9hc19zdHJpbmcoc291cmNlLCAiZXhlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBjb2RlIiwgJmNmLCAmdmlldyk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlFdmFsX01lcmdlQ29tcGlsZXJGbGFncygmY2YpKQpAQCAtOTAzLDE1ICs5NjMsOCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi1QeURvY19TVFJWQVIoZXhlY19kb2MsCi0iZXhlYyhvYmplY3RbLCBnbG9iYWxzWywgbG9jYWxzXV0pXG5cCi1cblwKLVJlYWQgYW5kIGV4ZWN1dGUgY29kZSBmcm9tIGFuIG9iamVjdCwgd2hpY2ggY2FuIGJlIGEgc3RyaW5nIG9yIGEgY29kZVxuXAotb2JqZWN0LlxuXAotVGhlIGdsb2JhbHMgYW5kIGxvY2FscyBhcmUgZGljdGlvbmFyaWVzLCBkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50XG5cCi1nbG9iYWxzIGFuZCBsb2NhbHMuICBJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fZ2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC05NDUsOCArOTk4LDE4IEBACiBleGlzdDsgd2l0aG91dCBpdCwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGF0IGNhc2UuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorZ2xvYmFscyBhcyBidWlsdGluX2dsb2JhbHMKKworUmV0dXJuIHRoZSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBnbG9iYWwgdmFyaWFibGVzLgorCitOT1RFOiBVcGRhdGVzIHRvIHRoaXMgZGljdGlvbmFyeSAqd2lsbCogYWZmZWN0IG5hbWUgbG9va3VwcyBpbiB0aGUgY3VycmVudAorZ2xvYmFsIHNjb3BlIGFuZCB2aWNlLXZlcnNhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9nbG9iYWxzKFB5T2JqZWN0ICpzZWxmKQorYnVpbHRpbl9nbG9iYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OTU4NjQ1ZTk2ZGQ4MTM4IGlucHV0PTkzMjc1NzZmOTJiYjQ4YmFdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtOTU1LDI2ICsxMDE4LDMxIEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihnbG9iYWxzX2RvYywKLSJnbG9iYWxzKCkgLT4gZGljdGlvbmFyeVxuXAotXG5cCi1SZXR1cm4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZSdzIGdsb2JhbCB2YXJpYWJsZXMuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2F0dHIgYXMgYnVpbHRpbl9oYXNhdHRyCisKKyAgICBvYmo6IG9iamVjdAorICAgIG5hbWU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuCisKK1RoaXMgaXMgZG9uZSBieSBjYWxsaW5nIGdldGF0dHIob2JqLCBuYW1lKSBhbmQgY2F0Y2hpbmcgQXR0cmlidXRlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2hhc2F0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9oYXNhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODExNTRmZGQ2MzYzNDY5NiBpbnB1dD0wZmFlYzk3ODdkOTc5NTQyXSovCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobmFtZSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJoYXNhdHRyKCk6IGF0dHJpYnV0ZSBuYW1lIG11c3QgYmUgc3RyaW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0cih2LCBuYW1lKTsKKyAgICB2ID0gUHlPYmplY3RfR2V0QXR0cihvYmosIG5hbWUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtOTg2LDI1ICsxMDU0LDMxIEBACiAgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNhdHRyX2RvYywKLSJoYXNhdHRyKG9iamVjdCwgbmFtZSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gd2hldGhlciB0aGUgb2JqZWN0IGhhcyBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgZ2l2ZW4gbmFtZS5cblwKLShUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRhdHRyKG9iamVjdCwgbmFtZSkgYW5kIGNhdGNoaW5nIEF0dHJpYnV0ZUVycm9yLikiKTsKIAorLyogQUM6IGdkYidzIGludGVncmF0aW9uIHdpdGggQ1B5dGhvbiByZWxpZXMgb24gYnVpbHRpbl9pZCBoYXZpbmcKKyAqIHRoZSAqZXhhY3QqIHBhcmFtZXRlciBuYW1lcyBvZiAic2VsZiIgYW5kICJ2Iiwgc28gd2UgZW5zdXJlIHdlCisgKiBwcmVzZXJ2ZSB0aG9zZSBuYW1lIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBBQyBkZWZhdWx0cy4KKyAqLworLypbY2xpbmljIGlucHV0XQoraWQgYXMgYnVpbHRpbl9pZAorCisgICAgc2VsZjogc2VsZih0eXBlPSJQeU1vZHVsZURlZiAqIikKKyAgICBvYmogYXMgdjogb2JqZWN0CisgICAgLworCitSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4KKworVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhbW9uZyBzaW11bHRhbmVvdXNseSBleGlzdGluZyBvYmplY3RzLgorKENQeXRob24gdXNlcyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2lkKFB5TW9kdWxlRGVmICpzZWxmLCBQeU9iamVjdCAqdikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYWE2NDA3ODVmNjk3ZjY1IGlucHV0PTVhNTM0MTM2NDE5NjMxZjRdKi8KIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Wb2lkUHRyKHYpOwogfQogCi1QeURvY19TVFJWQVIoaWRfZG9jLAotImlkKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC4gIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUgYW1vbmdcblwKLXNpbXVsdGFuZW91c2x5IGV4aXN0aW5nIG9iamVjdHMuICAoSGludDogaXQncyB0aGUgb2JqZWN0J3MgbWVtb3J5IGFkZHJlc3MuKSIpOwotCiAKIC8qIG1hcCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMTc3LDYgKzEyNTEsOCBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKKworLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX25leHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTIxOCw4MyArMTI5NCwxMDAgQEAKIGlzIGV4aGF1c3RlZCwgaXQgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiByYWlzaW5nIFN0b3BJdGVyYXRpb24uIik7CiAKIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fc2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnZhbHVlOworLypbY2xpbmljIGlucHV0XQorc2V0YXR0ciBhcyBidWlsdGluX3NldGF0dHIKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLCAzLCAzLCAmdiwgJm5hbWUsICZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKHYsIG5hbWUsIHZhbHVlKSAhPSAwKQorICAgIG9iajogb2JqZWN0CisgICAgbmFtZTogb2JqZWN0CisgICAgdmFsdWU6IG9iamVjdAorICAgIC8KKworU2V0cyB0aGUgbmFtZWQgYXR0cmlidXRlIG9uIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4KKworc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG8gYGB4LnkgPSB2JycKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc2V0YXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4ODFjNjU1YzBmN2UzNGYgaW5wdXQ9YmQyYjdjYTY4NzVhMTg5OV0qLworeworICAgIGlmIChQeU9iamVjdF9TZXRBdHRyKG9iaiwgbmFtZSwgdmFsdWUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKHNldGF0dHJfZG9jLAotInNldGF0dHIob2JqZWN0LCBuYW1lLCB2YWx1ZSlcblwKLVxuXAotU2V0IGEgbmFtZWQgYXR0cmlidXRlIG9uIGFuIG9iamVjdDsgc2V0YXR0cih4LCAneScsIHYpIGlzIGVxdWl2YWxlbnQgdG9cblwKLWBgeC55ID0gdicnLiIpOwogCisvKltjbGluaWMgaW5wdXRdCitkZWxhdHRyIGFzIGJ1aWx0aW5fZGVsYXR0cgorCisgICAgb2JqOiBvYmplY3QKKyAgICBuYW1lOiBvYmplY3QKKyAgICAvCisKK0RlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuCisKK2RlbGF0dHIoeCwgJ3knKSBpcyBlcXVpdmFsZW50IHRvIGBgZGVsIHgueScnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2RlbGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9kZWxhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY2NTNlNjk4YTBiNDE4NyBpbnB1dD1kYjE2Njg1ZDZiNGI5NDEwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwgMiwgMiwgJnYsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHIodiwgbmFtZSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkKKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0cihvYmosIG5hbWUsIChQeU9iamVjdCAqKU5VTEwpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotUHlEb2NfU1RSVkFSKGRlbGF0dHJfZG9jLAotImRlbGF0dHIob2JqZWN0LCBuYW1lKVxuXAotXG5cCi1EZWxldGUgYSBuYW1lZCBhdHRyaWJ1dGUgb24gYW4gb2JqZWN0OyBkZWxhdHRyKHgsICd5JykgaXMgZXF1aXZhbGVudCB0b1xuXAotYGBkZWwgeC55JycuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hhc2ggYXMgYnVpbHRpbl9oYXNoCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBoYXNoIHZhbHVlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0LgorCitUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZQorcmV2ZXJzZSBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGFzaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2hhc2goUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZjMyZmYxNTRjMWY3NTFhIGlucHV0PTU4YzQ4YmU4MjJiZjljNTRdKi8KIHsKICAgICBQeV9oYXNoX3QgeDsKIAotICAgIHggPSBQeU9iamVjdF9IYXNoKHYpOworICAgIHggPSBQeU9iamVjdF9IYXNoKG9iaik7CiAgICAgaWYgKHggPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoeCk7CiB9CiAKLVB5RG9jX1NUUlZBUihoYXNoX2RvYywKLSJoYXNoKG9iamVjdCkgLT4gaW50ZWdlclxuXAotXG5cCi1SZXR1cm4gYSBoYXNoIHZhbHVlIGZvciB0aGUgb2JqZWN0LiAgVHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSBoYXZlXG5cCi10aGUgc2FtZSBoYXNoIHZhbHVlLiAgVGhlIHJldmVyc2UgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUsIGJ1dCBsaWtlbHkuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2hleCBhcyBidWlsdGluX2hleAorCisgICAgbnVtYmVyOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci4KKworICAgPj4+IGhleCgxMjY0ODQzMCkKKyAgICcweGMwZmZlZScKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5faGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKK2J1aWx0aW5faGV4KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpudW1iZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjE4NDg5Y2UzY2JjNTg1OCBpbnB1dD1lNjQ1YWZmNWZjN2Q1NDBlXSovCiB7Ci0gICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZSh2LCAxNik7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDE2KTsKIH0KIAotUHlEb2NfU1RSVkFSKGhleF9kb2MsCi0iaGV4KG51bWJlcikgLT4gc3RyaW5nXG5cCi1cblwKLVJldHVybiB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cblwKLVxuXAotICAgPj4+IGhleCgzNzM1OTI4NTU5KVxuXAotICAgJzB4ZGVhZGJlZWYnXG5cCi0iKTsKIAotCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5faXRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMzIxLDI1ICsxNDE0LDQxIEBACiBJbiB0aGUgc2Vjb25kIGZvcm0sIHRoZSBjYWxsYWJsZSBpcyBjYWxsZWQgdW50aWwgaXQgcmV0dXJucyB0aGUgc2VudGluZWwuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorbGVuIGFzIGJ1aWx0aW5fbGVuCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBjb250YWluZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX2xlbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThlNTgzN2I2ZjgxZDkxNWIgaW5wdXQ9YmM1NTU5OGRhOWU5YzliNV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gUHlPYmplY3RfU2l6ZSh2KTsKKyAgICByZXMgPSBQeU9iamVjdF9TaXplKG9iaik7CiAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCi1QeURvY19TVFJWQVIobGVuX2RvYywKLSJsZW4ob2JqZWN0KVxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBvZiBhIHNlcXVlbmNlIG9yIGNvbGxlY3Rpb24uIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK2xvY2FscyBhcyBidWlsdGluX2xvY2FscworCitSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuCisKK05PVEU6IFdoZXRoZXIgb3Igbm90IHVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgYWZmZWN0IG5hbWUgbG9va3VwcyBpbgordGhlIGxvY2FsIHNjb3BlIGFuZCB2aWNlLXZlcnNhIGlzICppbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQqIGFuZCBub3QKK2NvdmVyZWQgYnkgYW55IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2xvY2FscyhQeU9iamVjdCAqc2VsZikKK2J1aWx0aW5fbG9jYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjVhNDFmMTJlMTlkMTNhIGlucHV0PTc4NzQwMThkNDc4ZDVjNGJdKi8KIHsKICAgICBQeU9iamVjdCAqZDsKIApAQCAtMTM0OCwxMSArMTQ1Nyw2IEBACiAgICAgcmV0dXJuIGQ7CiB9CiAKLVB5RG9jX1NUUlZBUihsb2NhbHNfZG9jLAotImxvY2FscygpIC0+IGRpY3Rpb25hcnlcblwKLVxuXAotVXBkYXRlIGFuZCByZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGUncyBsb2NhbCB2YXJpYWJsZXMuIik7Ci0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG1pbl9tYXgoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBpbnQgb3ApCkBAIC0xNDU1LDYgKzE1NTksNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9taW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0NzEsNiArMTU3Niw3IEBACiBXaXRoIHR3byBvciBtb3JlIGFyZ3VtZW50cywgcmV0dXJuIHRoZSBzbWFsbGVzdCBhcmd1bWVudC4iKTsKIAogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCB3YWl0aW5nIGZvciAqYXJncyBzdXBwb3J0ICovCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9tYXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKQEAgLTE0ODcsNTYgKzE1OTMsNzAgQEAKIFdpdGggdHdvIG9yIG1vcmUgYXJndW1lbnRzLCByZXR1cm4gdGhlIGxhcmdlc3QgYXJndW1lbnQuIik7CiAKIAorLypbY2xpbmljIGlucHV0XQorb2N0IGFzIGJ1aWx0aW5fb2N0CisKKyAgICBudW1iZXI6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLgorCisgICA+Pj4gb2N0KDM0MjM5MSkKKyAgICcwbzEyMzQ1NjcnCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX29jdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnYpCitidWlsdGluX29jdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbnVtYmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4ZjcwMWJjNmQ4ZjgwNGEgaW5wdXQ9YWQ2YjI3NGFmNDAxNmM3Ml0qLwogewotICAgIHJldHVybiBQeU51bWJlcl9Ub0Jhc2UodiwgOCk7CisgICAgcmV0dXJuIFB5TnVtYmVyX1RvQmFzZShudW1iZXIsIDgpOwogfQogCi1QeURvY19TVFJWQVIob2N0X2RvYywKLSJvY3QobnVtYmVyKSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBvY3RhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuXAotXG5cCi0gICA+Pj4gb2N0KDM0MjM5MSlcblwKLSAgICcwbzEyMzQ1NjcnXG5cCi0iKTsKIAorLypbY2xpbmljIGlucHV0XQorb3JkIGFzIGJ1aWx0aW5fb3JkCisKKyAgICBjOiBvYmplY3QKKyAgICAvCisKK1JldHVybiB0aGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9vcmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0KiBvYmopCitidWlsdGluX29yZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNGZkMjcyNzJkOTQ2MmY2IGlucHV0PTMwNjRlNWQ2MjAzYWQwMTJdKi8KIHsKICAgICBsb25nIG9yZDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoUHlCeXRlc19DaGVjayhvYmopKSB7Ci0gICAgICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG9iaik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYykpIHsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYyk7CiAgICAgICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlc19BU19TVFJJTkcob2JqKSk7CisgICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZXNfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gLTEpCisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGMpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYykgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjKTsKICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgICAgICAgICAgb3JkID0gKGxvbmcpUHlVbmljb2RlX1JFQURfQ0hBUihjLCAwKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhvYmopKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYykpIHsKICAgICAgICAgLyogWFhYIEhvcGVmdWxseSB0aGlzIGlzIHRlbXBvcmFyeSAqLwotICAgICAgICBzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGMpOwogICAgICAgICBpZiAoc2l6ZSA9PSAxKSB7Ci0gICAgICAgICAgICBvcmQgPSAobG9uZykoKHVuc2lnbmVkIGNoYXIpKlB5Qnl0ZUFycmF5X0FTX1NUUklORyhvYmopKTsKKyAgICAgICAgICAgIG9yZCA9IChsb25nKSgodW5zaWduZWQgY2hhcikqUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGMpKTsKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcob3JkKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJvcmQoKSBleHBlY3RlZCBzdHJpbmcgb2YgbGVuZ3RoIDEsIGJ1dCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMgZm91bmQiLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyBmb3VuZCIsIGMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE1NDcsMzEgKzE2NjcsMzAgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlEb2NfVkFSKG9yZF9kb2MpID0gUHlEb2NfU1RSKAotIm9yZChjKSAtPiBpbnRlZ2VyXG5cCi1cblwKLVJldHVybiB0aGUgaW50ZWdlciBvcmRpbmFsIG9mIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIgotKTsKIAorLypbY2xpbmljIGlucHV0XQorcG93IGFzIGJ1aWx0aW5fcG93CisKKyAgICB4OiBvYmplY3QKKyAgICB5OiBvYmplY3QKKyAgICB6OiBvYmplY3QgPSBOb25lCisgICAgLworCitFcXVpdmFsZW50IHRvIHgqKnkgKHdpdGggdHdvIGFyZ3VtZW50cykgb3IgeCoqeSAlIHogKHdpdGggdGhyZWUgYXJndW1lbnRzKQorCitTb21lIHR5cGVzLCBzdWNoIGFzIGludHMsIGFyZSBhYmxlIHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50IGFsZ29yaXRobSB3aGVuCitpbnZva2VkIHVzaW5nIHRoZSB0aHJlZSBhcmd1bWVudCBmb3JtLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9wb3coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9wb3dfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqeCwgUHlPYmplY3QgKnksIFB5T2JqZWN0ICp6KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFmYmEyNjhhZGJhOWI0NWYgaW5wdXQ9NjUzZDU3ZDM4ZDQxZmMwN10qLwogewotICAgIFB5T2JqZWN0ICp2LCAqdywgKnogPSBQeV9Ob25lOwotCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwgMiwgMywgJnYsICZ3LCAmeikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU51bWJlcl9Qb3dlcih2LCB3LCB6KTsKKyAgICByZXR1cm4gUHlOdW1iZXJfUG93ZXIoeCwgeSwgeik7CiB9CiAKLVB5RG9jX1NUUlZBUihwb3dfZG9jLAotInBvdyh4LCB5Wywgel0pIC0+IG51bWJlclxuXAotXG5cCi1XaXRoIHR3byBhcmd1bWVudHMsIGVxdWl2YWxlbnQgdG8geCoqeS4gIFdpdGggdGhyZWUgYXJndW1lbnRzLFxuXAotZXF1aXZhbGVudCB0byAoeCoqeSkgJSB6LCBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IChlLmcuIGZvciBpbnRzKS4iKTsKIAotCi0KKy8qIEFDOiBjYW5ub3QgY29udmVydCB5ZXQsIHdhaXRpbmcgZm9yICphcmdzIHN1cHBvcnQgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3ByaW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xNjY3LDEwICsxNzg2LDI1IEBACiBmbHVzaDogd2hldGhlciB0byBmb3JjaWJseSBmbHVzaCB0aGUgc3RyZWFtLiIpOwogCiAKKy8qW2NsaW5pYyBpbnB1dF0KK2lucHV0IGFzIGJ1aWx0aW5faW5wdXQKKworICAgIHByb21wdDogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gTm9uZQorICAgIC8KKworUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuCisKK1RoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbiwgaXMgcHJpbnRlZCB0byBzdGFuZGFyZCBvdXRwdXQgd2l0aG91dCBhCit0cmFpbGluZyBuZXdsaW5lIGJlZm9yZSByZWFkaW5nIGlucHV0LgorCitJZiB0aGUgdXNlciBoaXRzIEVPRiAoKm5peDogQ3RybC1ELCBXaW5kb3dzOiBDdHJsLVorUmV0dXJuKSwgcmFpc2UgRU9GRXJyb3IuCitPbiAqbml4IHN5c3RlbXMsIHJlYWRsaW5lIGlzIHVzZWQgaWYgYXZhaWxhYmxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pbnB1dChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitidWlsdGluX2lucHV0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnByb21wdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNzc3MzFmNTllMTUxNWM0IGlucHV0PTVlOGJiNzBjMjkwOGZlM2NdKi8KIHsKLSAgICBQeU9iamVjdCAqcHJvbXB0YXJnID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmluID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGluKTsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CkBAIC0xNjc4LDEwICsxODEyLDYgQEAKICAgICBsb25nIGZkOwogICAgIGludCB0dHk7CiAKLSAgICAvKiBQYXJzZSBhcmd1bWVudHMgKi8KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsIDAsIDEsICZwcm9tcHRhcmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIENoZWNrIHRoYXQgc3RkaW4vb3V0L2VyciBhcmUgaW50YWN0ICovCiAgICAgaWYgKGZpbiA9PSBOVUxMIHx8IGZpbiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNzM3LDcgKzE4NjcsNyBAQAogICAgIC8qIElmIHdlJ3JlIGludGVyYWN0aXZlLCB1c2UgKEdOVSkgcmVhZGxpbmUgKi8KICAgICBpZiAodHR5KSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgICAgIGNoYXIgKnByb21wdDsKKyAgICAgICAgY2hhciAqcHJvbXB0c3RyOwogICAgICAgICBjaGFyICpzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKnN0ZGluX2VuY29kaW5nID0gTlVMTCwgKnN0ZGluX2Vycm9ycyA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICpzdGRvdXRfZW5jb2RpbmcgPSBOVUxMLCAqc3Rkb3V0X2Vycm9ycyA9IE5VTEw7CkBAIC0xNzYwLDcgKzE4OTAsNyBAQAogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgICAgIGlmIChwcm9tcHRhcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBwcm9tcHQsIGVuY29kZSBpdCBhcyBzdGRvdXQgd291bGQgKi8KICAgICAgICAgICAgIGNoYXIgKnN0ZG91dF9lbmNvZGluZ19zdHIsICpzdGRvdXRfZXJyb3JzX3N0cjsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmdwbzsKQEAgLTE3NzIsNyArMTkwMiw3IEBACiAgICAgICAgICAgICBzdGRvdXRfZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2Vycm9ycyk7CiAgICAgICAgICAgICBpZiAoIXN0ZG91dF9lbmNvZGluZ19zdHIgfHwgIXN0ZG91dF9lcnJvcnNfc3RyKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHN0cmluZ3BvID0gUHlPYmplY3RfU3RyKHByb21wdGFyZyk7CisgICAgICAgICAgICBzdHJpbmdwbyA9IFB5T2JqZWN0X1N0cihwcm9tcHQpOwogICAgICAgICAgICAgaWYgKHN0cmluZ3BvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwogICAgICAgICAgICAgcG8gPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0cmluZ3BvLApAQCAtMTc4MiwxNSArMTkxMiwxNSBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0ID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0ID09IE5VTEwpCisgICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBvKTsKKyAgICAgICAgICAgIGlmIChwcm9tcHRzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwbyA9IE5VTEw7Ci0gICAgICAgICAgICBwcm9tcHQgPSAiIjsKKyAgICAgICAgICAgIHByb21wdHN0ciA9ICIiOwogICAgICAgICB9Ci0gICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdCk7CisgICAgICAgIHMgPSBQeU9TX1JlYWRsaW5lKHN0ZGluLCBzdGRvdXQsIHByb21wdHN0cik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTgzMiw4ICsxOTYyLDggQEAKICAgICB9CiAKICAgICAvKiBGYWxsYmFjayBpZiB3ZSdyZSBub3QgaW50ZXJhY3RpdmUgKi8KLSAgICBpZiAocHJvbXB0YXJnICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHRhcmcsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKKyAgICBpZiAocHJvbXB0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHQsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CkBAIC0xODQ0LDI4ICsxOTc0LDI5IEBACiAgICAgcmV0dXJuIFB5RmlsZV9HZXRMaW5lKGZpbiwgLTEpOwogfQogCi1QeURvY19TVFJWQVIoaW5wdXRfZG9jLAotImlucHV0KFtwcm9tcHRdKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCBhIHN0cmluZyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgVGhlIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQuXG5cCi1JZiB0aGUgdXNlciBoaXRzIEVPRiAoVW5peDogQ3RsLUQsIFdpbmRvd3M6IEN0bC1aK1JldHVybiksIHJhaXNlIEVPRkVycm9yLlxuXAotT24gVW5peCwgR05VIHJlYWRsaW5lIGlzIHVzZWQgaWYgZW5hYmxlZC4gIFRoZSBwcm9tcHQgc3RyaW5nLCBpZiBnaXZlbixcblwKLWlzIHByaW50ZWQgd2l0aG91dCBhIHRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIHJlYWRpbmcuIik7CiAKKy8qW2NsaW5pYyBpbnB1dF0KK3JlcHIgYXMgYnVpbHRpbl9yZXByCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKK0ZvciBtYW55IG9iamVjdCB0eXBlcywgaW5jbHVkaW5nIG1vc3QgYnVpbHRpbnMsIGV2YWwocmVwcihvYmopKSA9PSBvYmouCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX3JlcHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQorYnVpbHRpbl9yZXByKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGM0MTc4NGZhNDM0MTgzNCBpbnB1dD0xYzllNmQ2NmQzZTNiZTA0XSovCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIodik7CisgICAgcmV0dXJuIFB5T2JqZWN0X1JlcHIob2JqKTsKIH0KIAotUHlEb2NfU1RSVkFSKHJlcHJfZG9jLAotInJlcHIob2JqZWN0KSAtPiBzdHJpbmdcblwKLVxuXAotUmV0dXJuIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuXG5cCi1Gb3IgbW9zdCBvYmplY3QgdHlwZXMsIGV2YWwocmVwcihvYmplY3QpKSA9PSBvYmplY3QuIik7CiAKLQorLyogQUM6IGNhbm5vdCBjb252ZXJ0IHlldCwgYXMgbmVlZHMgUEVQIDQ1NyBncm91cCBzdXBwb3J0IGluIGluc3BlY3QKKyAqICAgICBvciBhIHNlbWFudGljIGNoYW5nZSB0byBhY2NlcHQgTm9uZSBmb3IgIm5kaWdpdHMiCisgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3JvdW5kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xOTA3LDYgKzIwMzgsMzUgQEAKIHNhbWUgdHlwZSBhcyB0aGUgbnVtYmVyLiBuZGlnaXRzIG1heSBiZSBuZWdhdGl2ZS4iKTsKIAogCisvKkFDOiB3ZSBuZWVkIHRvIGtlZXAgdGhlIGt3ZHMgZGljdCBpbnRhY3QgdG8gZWFzaWx5IGNhbGwgaW50byB0aGUKKyAqIGxpc3Quc29ydCBtZXRob2QsIHdoaWNoIGlzbid0IGN1cnJlbnRseSBzdXBwb3J0ZWQgaW4gQUMuIFNvIHdlIGp1c3QgdXNlCisgKiB0aGUgaW5pdGlhbGx5IGdlbmVyYXRlZCBzaWduYXR1cmUgd2l0aCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbi4KKyAqLworLyogW2Rpc2FibGVkIGNsaW5pYyBpbnB1dF0KK3NvcnRlZCBhcyBidWlsdGluX3NvcnRlZAorCisgICAgaXRlcmFibGUgYXMgc2VxOiBvYmplY3QKKyAgICBrZXkgYXMga2V5ZnVuYzogb2JqZWN0ID0gTm9uZQorICAgIHJldmVyc2U6IG9iamVjdCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBsaXN0IGNvbnRhaW5pbmcgYWxsIGl0ZW1zIGZyb20gdGhlIGl0ZXJhYmxlIGluIGFzY2VuZGluZyBvcmRlci4KKworQSBjdXN0b20ga2V5IGZ1bmN0aW9uIGNhbiBiZSBzdXBwbGllZCB0byBjdXN0b21pc2UgdGhlIHNvcnQgb3JkZXIsIGFuZCB0aGUKK3JldmVyc2UgZmxhZyBjYW4gYmUgc2V0IHRvIHJlcXVlc3QgdGhlIHJlc3VsdCBpbiBkZXNjZW5kaW5nIG9yZGVyLgorW2VuZCBkaXNhYmxlZCBjbGluaWMgaW5wdXRdKi8KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc29ydGVkX19kb2NfXywKKyJzb3J0ZWQoJG1vZHVsZSwgaXRlcmFibGUsIGtleT1Ob25lLCByZXZlcnNlPUZhbHNlKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IGxpc3QgY29udGFpbmluZyBhbGwgaXRlbXMgZnJvbSB0aGUgaXRlcmFibGUgaW4gYXNjZW5kaW5nIG9yZGVyLlxuIgorIlxuIgorIkEgY3VzdG9tIGtleSBmdW5jdGlvbiBjYW4gYmUgc3VwcGxpZWQgdG8gY3VzdG9taXNlIHRoZSBzb3J0IG9yZGVyLCBhbmQgdGhlXG4iCisicmV2ZXJzZSBmbGFnIGNhbiBiZSBzZXQgdG8gcmVxdWVzdCB0aGUgcmVzdWx0IGluIGRlc2NlbmRpbmcgb3JkZXIuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGICAgIFwKKyAgICB7InNvcnRlZCIsIChQeUNGdW5jdGlvbilidWlsdGluX3NvcnRlZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fc29ydGVkX19kb2NfX30sCisKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3NvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTk0OCw5ICsyMTA4LDggQEAKICAgICByZXR1cm4gbmV3bGlzdDsKIH0KIAotUHlEb2NfU1RSVkFSKHNvcnRlZF9kb2MsCi0ic29ydGVkKGl0ZXJhYmxlLCBrZXk9Tm9uZSwgcmV2ZXJzZT1GYWxzZSkgLS0+IG5ldyBzb3J0ZWQgbGlzdCIpOwogCisvKiBBQzogY2Fubm90IGNvbnZlcnQgeWV0LCBhcyBuZWVkcyBQRVAgNDU3IGdyb3VwIHN1cHBvcnQgaW4gaW5zcGVjdCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fdmFycyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTgyLDE3ICsyMTQxLDI5IEBACiBXaXRob3V0IGFyZ3VtZW50cywgZXF1aXZhbGVudCB0byBsb2NhbHMoKS5cblwKIFdpdGggYW4gYXJndW1lbnQsIGVxdWl2YWxlbnQgdG8gb2JqZWN0Ll9fZGljdF9fLiIpOwogCi1zdGF0aWMgUHlPYmplY3QqCi1idWlsdGluX3N1bShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisKKy8qW2NsaW5pYyBpbnB1dF0KK3N1bSBhcyBidWlsdGluX3N1bQorCisgICAgaXRlcmFibGU6IG9iamVjdAorICAgIHN0YXJ0OiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSAwCisgICAgLworCitSZXR1cm4gdGhlIHN1bSBvZiBhICdzdGFydCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdXMgYW4gaXRlcmFibGUgb2YgbnVtYmVycworCitXaGVuIHRoZSBpdGVyYWJsZSBpcyBlbXB0eSwgcmV0dXJuIHRoZSBzdGFydCB2YWx1ZS4KK1RoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5CityZWplY3Qgbm9uLW51bWVyaWMgdHlwZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3N1bV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICppdGVyYWJsZSwgUHlPYmplY3QgKnN0YXJ0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMzNjU1YjI0OGIyMWQ1ODEgaW5wdXQ9M2I1YjdhOWQ3NjExYzczYV0qLwogewotICAgIFB5T2JqZWN0ICpzZXE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IHN0YXJ0OwogICAgIFB5T2JqZWN0ICp0ZW1wLCAqaXRlbSwgKml0ZXI7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLCAxLCAyLCAmc2VxLCAmcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihzZXEpOworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjAyMiw3ICsyMTkzLDYgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0KICAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CiAgICAgfQogCkBAIC0yMTQ4LDYyICsyMzE4LDYyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHN1bV9kb2MsCi0ic3VtKGl0ZXJhYmxlWywgc3RhcnRdKSAtPiB2YWx1ZVxuXAotXG5cCi1SZXR1cm4gdGhlIHN1bSBvZiBhbiBpdGVyYWJsZSBvZiBudW1iZXJzIChOT1Qgc3RyaW5ncykgcGx1cyB0aGUgdmFsdWVcblwKLW9mIHBhcmFtZXRlciAnc3RhcnQnICh3aGljaCBkZWZhdWx0cyB0byAwKS4gIFdoZW4gdGhlIGl0ZXJhYmxlIGlzXG5cCi1lbXB0eSwgcmV0dXJuIHN0YXJ0LiIpOwogCisvKltjbGluaWMgaW5wdXRdCitpc2luc3RhbmNlIGFzIGJ1aWx0aW5faXNpbnN0YW5jZQorCisgICAgb2JqOiBvYmplY3QKKyAgICBjbGFzc19vcl90dXBsZTogb2JqZWN0CisgICAgLworCitSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuCisKK0EgdHVwbGUsIGFzIGluIGBgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG8KK2NoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKQorb3IgLi4uYGAgZXRjLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9pc2luc3RhbmNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J1aWx0aW5faXNpbnN0YW5jZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Zjk2MGI3YzEyZGJiZWRhMCBpbnB1dD1mZmE3NDNkYjFkYWY3NTQ5XSovCiB7Ci0gICAgUHlPYmplY3QgKmluc3Q7Ci0gICAgUHlPYmplY3QgKmNsczsKICAgICBpbnQgcmV0dmFsOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsIDIsIDIsICZpbnN0LCAmY2xzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXR2YWwgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGluc3QsIGNscyk7CisgICAgcmV0dmFsID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIGNsYXNzX29yX3R1cGxlKTsKICAgICBpZiAocmV0dmFsIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXR2YWwpOwogfQogCi1QeURvY19TVFJWQVIoaXNpbnN0YW5jZV9kb2MsCi0iaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzLW9yLXR5cGUtb3ItdHVwbGUpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgb3Igb2YgYSBzdWJjbGFzcyB0aGVyZW9mLlxuXAotV2l0aCBhIHR5cGUgYXMgc2Vjb25kIGFyZ3VtZW50LCByZXR1cm4gd2hldGhlciB0aGF0IGlzIHRoZSBvYmplY3QncyB0eXBlLlxuXAotVGhlIGZvcm0gdXNpbmcgYSB0dXBsZSwgaXNpbnN0YW5jZSh4LCAoQSwgQiwgLi4uKSksIGlzIGEgc2hvcnRjdXQgZm9yXG5cCi1pc2luc3RhbmNlKHgsIEEpIG9yIGlzaW5zdGFuY2UoeCwgQikgb3IgLi4uIChldGMuKS4iKTsKIAorLypbY2xpbmljIGlucHV0XQoraXNzdWJjbGFzcyBhcyBidWlsdGluX2lzc3ViY2xhc3MKKworICAgIGNsczogb2JqZWN0CisgICAgY2xhc3Nfb3JfdHVwbGU6IG9iamVjdAorICAgIC8KKworUmV0dXJuIHdoZXRoZXIgJ2NscycgaXMgYSBkZXJpdmVkIGZyb20gYW5vdGhlciBjbGFzcyBvciBpcyB0aGUgc2FtZSBjbGFzcy4KKworQSB0dXBsZSwgYXMgaW4gYGBpc3N1YmNsYXNzKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0bworY2hlY2sgYWdhaW5zdC4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgaXNzdWJjbGFzcyh4LCBBKSBvciBpc3N1YmNsYXNzKHgsIEIpCitvciAuLi5gYCBldGMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2lzc3ViY2xhc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmNscywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YjAxMmExNTE5NDBiYmYyIGlucHV0PWFmNWYzNWU5Y2VhZGRhZjZdKi8KIHsKLSAgICBQeU9iamVjdCAqZGVyaXZlZDsKLSAgICBQeU9iamVjdCAqY2xzOwogICAgIGludCByZXR2YWw7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwgMiwgMiwgJmRlcml2ZWQsICZjbHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZGVyaXZlZCwgY2xzKTsKKyAgICByZXR2YWwgPSBQeU9iamVjdF9Jc1N1YmNsYXNzKGNscywgY2xhc3Nfb3JfdHVwbGUpOwogICAgIGlmIChyZXR2YWwgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldHZhbCk7CiB9CiAKLVB5RG9jX1NUUlZBUihpc3N1YmNsYXNzX2RvYywKLSJpc3N1YmNsYXNzKEMsIEIpIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIHdoZXRoZXIgY2xhc3MgQyBpcyBhIHN1YmNsYXNzIChpLmUuLCBhIGRlcml2ZWQgY2xhc3MpIG9mIGNsYXNzIEIuXG5cCi1XaGVuIHVzaW5nIGEgdHVwbGUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCBpc3N1YmNsYXNzKFgsIChBLCBCLCAuLi4pKSxcblwKLWlzIGEgc2hvcnRjdXQgZm9yIGlzc3ViY2xhc3MoWCwgQSkgb3IgaXNzdWJjbGFzcyhYLCBCKSBvciAuLi4gKGV0Yy4pLiIpOwotCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0yMzk4LDQ0ICsyNTY4LDQ0IEBACiAgICAgeyJfX2J1aWxkX2NsYXNzX18iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18sCiAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGJ1aWxkX2NsYXNzX2RvY30sCiAgICAgeyJfX2ltcG9ydF9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9fX2ltcG9ydF9fLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBpbXBvcnRfZG9jfSwKLSAgICB7ImFicyIsICAgICAgICAgICAgIGJ1aWx0aW5fYWJzLCAgICAgICAgTUVUSF9PLCBhYnNfZG9jfSwKLSAgICB7ImFsbCIsICAgICAgICAgICAgIGJ1aWx0aW5fYWxsLCAgICAgICAgTUVUSF9PLCBhbGxfZG9jfSwKLSAgICB7ImFueSIsICAgICAgICAgICAgIGJ1aWx0aW5fYW55LCAgICAgICAgTUVUSF9PLCBhbnlfZG9jfSwKLSAgICB7ImFzY2lpIiwgICAgICAgICAgIGJ1aWx0aW5fYXNjaWksICAgICAgTUVUSF9PLCBhc2NpaV9kb2N9LAotICAgIHsiYmluIiwgICAgICAgICAgICAgYnVpbHRpbl9iaW4sICAgICAgICBNRVRIX08sIGJpbl9kb2N9LAotICAgIHsiY2FsbGFibGUiLCAgICAgICAgYnVpbHRpbl9jYWxsYWJsZSwgICBNRVRIX08sIGNhbGxhYmxlX2RvY30sCi0gICAgeyJjaHIiLCAgICAgICAgICAgICBidWlsdGluX2NociwgICAgICAgIE1FVEhfVkFSQVJHUywgY2hyX2RvY30sCi0gICAgeyJjb21waWxlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBjb21waWxlX2RvY30sCi0gICAgeyJkZWxhdHRyIiwgICAgICAgICBidWlsdGluX2RlbGF0dHIsICAgIE1FVEhfVkFSQVJHUywgZGVsYXR0cl9kb2N9LAorICAgIEJVSUxUSU5fQUJTX01FVEhPRERFRgorICAgIEJVSUxUSU5fQUxMX01FVEhPRERFRgorICAgIEJVSUxUSU5fQU5ZX01FVEhPRERFRgorICAgIEJVSUxUSU5fQVNDSUlfTUVUSE9EREVGCisgICAgQlVJTFRJTl9CSU5fTUVUSE9EREVGCisgICAgQlVJTFRJTl9DQUxMQUJMRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NIUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGCisgICAgQlVJTFRJTl9ERUxBVFRSX01FVEhPRERFRgogICAgIHsiZGlyIiwgICAgICAgICAgICAgYnVpbHRpbl9kaXIsICAgICAgICBNRVRIX1ZBUkFSR1MsIGRpcl9kb2N9LAotICAgIHsiZGl2bW9kIiwgICAgICAgICAgYnVpbHRpbl9kaXZtb2QsICAgICBNRVRIX1ZBUkFSR1MsIGRpdm1vZF9kb2N9LAotICAgIHsiZXZhbCIsICAgICAgICAgICAgYnVpbHRpbl9ldmFsLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV2YWxfZG9jfSwKLSAgICB7ImV4ZWMiLCAgICAgICAgYnVpbHRpbl9leGVjLCAgICAgICBNRVRIX1ZBUkFSR1MsIGV4ZWNfZG9jfSwKLSAgICB7ImZvcm1hdCIsICAgICAgICAgIGJ1aWx0aW5fZm9ybWF0LCAgICAgTUVUSF9WQVJBUkdTLCBmb3JtYXRfZG9jfSwKKyAgICBCVUlMVElOX0RJVk1PRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0VWQUxfTUVUSE9EREVGCisgICAgQlVJTFRJTl9FWEVDX01FVEhPRERFRgorICAgIEJVSUxUSU5fRk9STUFUX01FVEhPRERFRgogICAgIHsiZ2V0YXR0ciIsICAgICAgICAgYnVpbHRpbl9nZXRhdHRyLCAgICBNRVRIX1ZBUkFSR1MsIGdldGF0dHJfZG9jfSwKLSAgICB7Imdsb2JhbHMiLCAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX2dsb2JhbHMsICAgIE1FVEhfTk9BUkdTLCBnbG9iYWxzX2RvY30sCi0gICAgeyJoYXNhdHRyIiwgICAgICAgICBidWlsdGluX2hhc2F0dHIsICAgIE1FVEhfVkFSQVJHUywgaGFzYXR0cl9kb2N9LAotICAgIHsiaGFzaCIsICAgICAgICAgICAgYnVpbHRpbl9oYXNoLCAgICAgICBNRVRIX08sIGhhc2hfZG9jfSwKLSAgICB7ImhleCIsICAgICAgICAgICAgIGJ1aWx0aW5faGV4LCAgICAgICAgTUVUSF9PLCBoZXhfZG9jfSwKLSAgICB7ImlkIiwgICAgICAgICAgICAgIGJ1aWx0aW5faWQsICAgICAgICAgTUVUSF9PLCBpZF9kb2N9LAotICAgIHsiaW5wdXQiLCAgICAgICAgICAgYnVpbHRpbl9pbnB1dCwgICAgICBNRVRIX1ZBUkFSR1MsIGlucHV0X2RvY30sCi0gICAgeyJpc2luc3RhbmNlIiwgIGJ1aWx0aW5faXNpbnN0YW5jZSwgTUVUSF9WQVJBUkdTLCBpc2luc3RhbmNlX2RvY30sCi0gICAgeyJpc3N1YmNsYXNzIiwgIGJ1aWx0aW5faXNzdWJjbGFzcywgTUVUSF9WQVJBUkdTLCBpc3N1YmNsYXNzX2RvY30sCisgICAgQlVJTFRJTl9HTE9CQUxTX01FVEhPRERFRgorICAgIEJVSUxUSU5fSEFTQVRUUl9NRVRIT0RERUYKKyAgICBCVUlMVElOX0hBU0hfTUVUSE9EREVGCisgICAgQlVJTFRJTl9IRVhfTUVUSE9EREVGCisgICAgQlVJTFRJTl9JRF9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lOUFVUX01FVEhPRERFRgorICAgIEJVSUxUSU5fSVNJTlNUQU5DRV9NRVRIT0RERUYKKyAgICBCVUlMVElOX0lTU1VCQ0xBU1NfTUVUSE9EREVGCiAgICAgeyJpdGVyIiwgICAgICAgICAgICBidWlsdGluX2l0ZXIsICAgICAgIE1FVEhfVkFSQVJHUywgaXRlcl9kb2N9LAotICAgIHsibGVuIiwgICAgICAgICAgICAgYnVpbHRpbl9sZW4sICAgICAgICBNRVRIX08sIGxlbl9kb2N9LAotICAgIHsibG9jYWxzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbG9jYWxzLCAgICAgTUVUSF9OT0FSR1MsIGxvY2Fsc19kb2N9LAorICAgIEJVSUxUSU5fTEVOX01FVEhPRERFRgorICAgIEJVSUxUSU5fTE9DQUxTX01FVEhPRERFRgogICAgIHsibWF4IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbWF4LCAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgbWF4X2RvY30sCiAgICAgeyJtaW4iLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9taW4sICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBtaW5fZG9jfSwKICAgICB7Im5leHQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilidWlsdGluX25leHQsICAgICAgIE1FVEhfVkFSQVJHUywgbmV4dF9kb2N9LAotICAgIHsib2N0IiwgICAgICAgICAgICAgYnVpbHRpbl9vY3QsICAgICAgICBNRVRIX08sIG9jdF9kb2N9LAotICAgIHsib3JkIiwgICAgICAgICAgICAgYnVpbHRpbl9vcmQsICAgICAgICBNRVRIX08sIG9yZF9kb2N9LAotICAgIHsicG93IiwgICAgICAgICAgICAgYnVpbHRpbl9wb3csICAgICAgICBNRVRIX1ZBUkFSR1MsIHBvd19kb2N9LAorICAgIEJVSUxUSU5fT0NUX01FVEhPRERFRgorICAgIEJVSUxUSU5fT1JEX01FVEhPRERFRgorICAgIEJVSUxUSU5fUE9XX01FVEhPRERFRgogICAgIHsicHJpbnQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcHJpbnQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcHJpbnRfZG9jfSwKLSAgICB7InJlcHIiLCAgICAgICAgICAgIGJ1aWx0aW5fcmVwciwgICAgICAgTUVUSF9PLCByZXByX2RvY30sCisgICAgQlVJTFRJTl9SRVBSX01FVEhPRERFRgogICAgIHsicm91bmQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fcm91bmQsICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcm91bmRfZG9jfSwKLSAgICB7InNldGF0dHIiLCAgICAgICAgIGJ1aWx0aW5fc2V0YXR0ciwgICAgTUVUSF9WQVJBUkdTLCBzZXRhdHRyX2RvY30sCi0gICAgeyJzb3J0ZWQiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zb3J0ZWQsICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzb3J0ZWRfZG9jfSwKLSAgICB7InN1bSIsICAgICAgICAgICAgIGJ1aWx0aW5fc3VtLCAgICAgICAgTUVUSF9WQVJBUkdTLCBzdW1fZG9jfSwKKyAgICBCVUlMVElOX1NFVEFUVFJfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TT1JURURfTUVUSE9EREVGCisgICAgQlVJTFRJTl9TVU1fTUVUSE9EREVGCiAgICAgeyJ2YXJzIiwgICAgICAgICAgICBidWlsdGluX3ZhcnMsICAgICAgIE1FVEhfVkFSQVJHUywgdmFyc19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0sCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCAyNzUyMjk4Li44ZDJjZGMyIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTIsOCArMTIsMTAgQEAKICNpbmNsdWRlICJQeXRob24uaCIKIAogI2luY2x1ZGUgImNvZGUuaCIKKyNpbmNsdWRlICJkaWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC03MzUsNyArNzM3LDcgQEAKICAgICBpZiAodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggPiByZWN1cnNpb25fbGltaXQpIHsKICAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKICAgICAgICAgdHN0YXRlLT5vdmVyZmxvd2VkID0gMTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1JlY3Vyc2lvbkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkJXMiLAogICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xMTg5LDcgKzExOTEsNyBAQAogICAgIGYtPmZfc3RhY2t0b3AgPSBOVUxMOyAgICAgICAvKiByZW1haW5zIE5VTEwgdW5sZXNzIHlpZWxkIHN1c3BlbmRzIGZyYW1lICovCiAgICAgZi0+Zl9leGVjdXRpbmcgPSAxOwogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xNTA0LDYgKzE1MDYsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQklOQVJZX01BVFJJWF9NVUxUSVBMWSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJpZ2h0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGVmdCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5TnVtYmVyX01hdHJpeE11bHRpcGx5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsZWZ0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyaWdodCk7CisgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQklOQVJZX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xNjk0LDYgKzE3MDgsMTggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoSU5QTEFDRV9NQVRSSVhfTVVMVElQTFkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxlZnQgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU51bWJlcl9JblBsYWNlTWF0cml4TXVsdGlwbHkobGVmdCwgcmlnaHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAgICAgUHlfREVDUkVGKHJpZ2h0KTsKKyAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChJTlBMQUNFX1RSVUVfRElWSURFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZGl2aXNvciA9IFBPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmRpdmlkZW5kID0gVE9QKCk7CkBAIC0xOTAwLDExICsxOTI2LDExNSBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChHRVRfQUlURVIpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmF3YWl0YWJsZSA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gVE9QKCk7CisgICAgICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKG9iaik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9haXRlcjsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaXRlciA9ICgqZ2V0dGVyKShvYmopOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgU0VUX1RPUChOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gb2JqZWN0IHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19haXRlcl9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihpdGVyKTsKKyAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFNFVF9UT1AoTlVMTCk7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYWl0ZXJfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShpdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKworICAgICAgICAgICAgU0VUX1RPUChhd2FpdGFibGUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChHRVRfQU5FWFQpIHsKKyAgICAgICAgICAgIHVuYXJ5ZnVuYyBnZXR0ZXIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKm5leHRfaXRlciA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqYXdhaXRhYmxlID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphaXRlciA9IFRPUCgpOworICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShhaXRlcik7CisKKyAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKworICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOworICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKworICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKKworICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsgLyogRXZlbiBpZiBpdCdzIE5VTEwgKi8KKworICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNpZXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSkgeworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjaWV2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2lldmVyKSkgewogICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2lldmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CkBAIC0yMzU1LDYgKzI0ODUsNDMgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX1RVUExFX1VOUEFDSywgX2J1aWxkX2xpc3RfdW5wYWNrKQorICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spCisgICAgICAgIF9idWlsZF9saXN0X3VucGFjazogeworICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLOworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9uZV92YWw7CisKKyAgICAgICAgICAgICAgICBub25lX3ZhbCA9IF9QeUxpc3RfRXh0ZW5kKChQeUxpc3RPYmplY3QgKilzdW0sIFBFRUsoaSkpOworICAgICAgICAgICAgICAgIGlmIChub25lX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobm9uZV92YWwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udmVydF90b190dXBsZSkgeworICAgICAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IFB5TGlzdF9Bc1R1cGxlKHN1bSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgaWYgKHJldHVybl92YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gc3VtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgUFVTSChyZXR1cm5fdmFsdWUpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChCVUlMRF9TRVQpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXQgPSBQeVNldF9OZXcoTlVMTCk7CiAgICAgICAgICAgICBpbnQgZXJyID0gMDsKQEAgLTIzNzQsMjYgKzI1NDEsMTI3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NFVF9VTlBBQ0spIHsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5U2V0X05ldyhOVUxMKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlTZXRfVXBkYXRlKHN1bSwgUEVFSyhpKSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfTUFQKSB7CisgICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKICAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQRUVLKDIqaSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUEVFSygyKmkgLSAxKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChtYXApOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVChTVE9SRV9NQVApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBUT1AoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFNFQ09ORCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IFRISVJEKCk7Ci0gICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgU1RBQ0tBREooLTIpOwotICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG1hcCkpOwotICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0obWFwLCBrZXksIHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQorICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogeworICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKKyAgICAgICAgICAgIGludCBudW1fbWFwczsKKyAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbjsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgeworICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGkgPSBudW1fbWFwczsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeVNldF9OZXh0RW50cnkoaW50ZXJzZWN0aW9uLCAmaWR4LCAma2V5LCAmaGFzaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKHN1bSwgYXJnKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMjY1NSw2ICsyOTIzLDM0IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEdFVF9ZSUVMRF9GUk9NX0lURVIpIHsKKyAgICAgICAgICAgIC8qIGJlZm9yZTogW29ial07IGFmdGVyIFtnZXRpdGVyKG9iaildICovCisgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGl0ZXJhYmxlKSkgeworICAgICAgICAgICAgICAgIC8qIGBpdGVyYWJsZWAgaXMgYSBjb3JvdXRpbmUgKi8KKyAgICAgICAgICAgICAgICBpZiAoIShjby0+Y29fZmxhZ3MgJiAoQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYW5kIGl0IGlzIHVzZWQgaW4gYSAneWllbGQgZnJvbScgZXhwcmVzc2lvbiBvZiBhCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ3VsYXIgZ2VuZXJhdG9yLiAqLworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOworICAgICAgICAgICAgICAgICAgICBTRVRfVE9QKE5VTEwpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCAneWllbGQgZnJvbScgYSBjb3JvdXRpbmUgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBhIG5vbi1jb3JvdXRpbmUgZ2VuZXJhdG9yIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIVB5R2VuX0NoZWNrRXhhY3QoaXRlcmFibGUpKSB7CisgICAgICAgICAgICAgICAgLyogYGl0ZXJhYmxlYCBpcyBub3QgYSBnZW5lcmF0b3IuICovCisgICAgICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CisgICAgICAgICAgICAgICAgU0VUX1RPUChpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhGT1JfSVRFUik7CiAgICAgICAgIFRBUkdFVChGT1JfSVRFUikgewogICAgICAgICAgICAgLyogYmVmb3JlOiBbaXRlcl07IGFmdGVyOiBbaXRlciwgaXRlcigpXSAqb3IqIFtdICovCkBAIC0yNzA3LDYgKzMwMDMsMzkgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQkVGT1JFX0FTWU5DX1dJVEgpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYWV4aXRfXyk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2FlbnRlcl9fKTsKKworICAgICAgICAgICAgUHlPYmplY3QgKm1nciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmV4aXQgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fYWV4aXRfXyksCisgICAgICAgICAgICAgICAgICAgICAqZW50ZXI7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgaWYgKGV4aXQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgU0VUX1RPUChleGl0KTsKKyAgICAgICAgICAgIGVudGVyID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2FlbnRlcl9fKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtZ3IpOworICAgICAgICAgICAgaWYgKGVudGVyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZW50ZXIsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKGVudGVyKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChTRVRVUF9BU1lOQ19XSVRIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICAvKiBTZXR1cCB0aGUgZmluYWxseSBibG9jayBiZWZvcmUgcHVzaGluZyB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICBvZiBfX2FlbnRlcl9fIG9uIHRoZSBzdGFjay4gKi8KKyAgICAgICAgICAgIFB5RnJhbWVfQmxvY2tTZXR1cChmLCBTRVRVUF9GSU5BTExZLCBJTlNUUl9PRkZTRVQoKSArIG9wYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQUNLX0xFVkVMKCkpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwpAQCAtMjczMyw3ICszMDYyLDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVQoV0lUSF9DTEVBTlVQKSB7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfU1RBUlQpIHsKICAgICAgICAgICAgIC8qIEF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGFyZSAxLTYgdmFsdWVzIGluZGljYXRpbmcKICAgICAgICAgICAgICAgIGhvdy93aHkgd2UgZW50ZXJlZCB0aGUgZmluYWxseSBjbGF1c2U6CiAgICAgICAgICAgICAgICAtIFRPUCA9IE5vbmUKQEAgLTI3NjEsNyArMzA5MCw2IEBACiAKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGl0X2Z1bmM7CiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gVE9QKCksICp2YWwgPSBQeV9Ob25lLCAqdGIgPSBQeV9Ob25lLCAqcmVzOwotICAgICAgICAgICAgaW50IGVycjsKICAgICAgICAgICAgIGlmIChleGMgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgICAgICh2b2lkKVBPUCgpOwogICAgICAgICAgICAgICAgIGV4aXRfZnVuYyA9IFRPUCgpOwpAQCAtMjgxMSwxMSArMzEzOSwyNiBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyAgICAgICAgICAgIFB5X0lOQ1JFRihleGMpOyAvKiBEdXBsaWNhdGluZyB0aGUgZXhjZXB0aW9uIG9uIHRoZSBzdGFjayAqLworICAgICAgICAgICAgUFVTSChleGMpOworICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgUFJFRElDVChXSVRIX0NMRUFOVVBfRklOSVNIKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBQUkVESUNURUQoV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisgICAgICAgIFRBUkdFVChXSVRIX0NMRUFOVVBfRklOSVNIKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gUE9QKCk7CisgICAgICAgICAgICBpbnQgZXJyOworCiAgICAgICAgICAgICBpZiAoZXhjICE9IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXJyID0gMDsKKwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKIAogICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMwMjYsNiArMzM2OSw3IEBACiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCisKICNpZiBVU0VfQ09NUFVURURfR09UT1MKICAgICAgICAgX3Vua25vd25fb3Bjb2RlOgogI2VuZGlmCkBAIC0zMTY4LDExICszNTEyLDEwIEBACiAgICAgaWYgKHdoeSAhPSBXSFlfUkVUVVJOKQogICAgICAgICByZXR2YWwgPSBOVUxMOwogCi0gICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHx8IChyZXR2YWwgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CisgICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAKIGZhc3RfeWllbGQ6Ci0gICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0dFTkVSQVRPUikgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgewogCiAgICAgICAgIC8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmxvY2sgaXMgdG8gcHV0IGFzaWRlIHRoZSBnZW5lcmF0b3IncyBleGNlcHRpb24KICAgICAgICAgICAgc3RhdGUgYW5kIHJlc3RvcmUgdGhhdCBvZiB0aGUgY2FsbGluZyBmcmFtZS4gSWYgdGhlIGN1cnJlbnQKQEAgLTMyMzAsNyArMzU3Myw3IEBACiAgICAgZi0+Zl9leGVjdXRpbmcgPSAwOwogICAgIHRzdGF0ZS0+ZnJhbWUgPSBmLT5mX2JhY2s7CiAKLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChOVUxMLCByZXR2YWwsICJQeUV2YWxfRXZhbEZyYW1lRXgiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzODcsMTAgKzM3MzAsMTEgQEAKICAgIFB5RXZhbF9FdmFsRnJhbWUoKSBhbmQgUHlFdmFsX0V2YWxDb2RlRXgoKSB5b3Ugd2lsbCBuZWVkIHRvIGFkanVzdAogICAgdGhlIHRlc3QgaW4gdGhlIGlmIHN0YXRlbWVudHMgaW4gTWlzYy9nZGJpbml0IChweXN0YWNrIGFuZCBweXN0YWNrdikuICovCiAKLVB5T2JqZWN0ICoKLVB5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShQeU9iamVjdCAqX2NvLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKICAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBpbnQgYXJnY291bnQsIFB5T2JqZWN0ICoqa3dzLCBpbnQga3djb3VudCwKLSAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwpAQCAtMzU3Myw3ICszOTE3LDIxIEBACiAgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKICAgICB9CiAKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fR0VORVJBVE9SKSB7CisgICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgICAgIFB5T2JqZWN0ICpnZW47CisgICAgICAgIFB5T2JqZWN0ICpjb3JvX3dyYXBwZXIgPSB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOworICAgICAgICBpbnQgaXNfY29ybyA9IGNvLT5jb19mbGFncyAmIENPX0NPUk9VVElORTsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyKSB7CisgICAgICAgICAgICBhc3NlcnQoY29yb193cmFwcGVyICE9IE5VTEwpOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29yb3V0aW5lIHdyYXBwZXIgJS4yMDBSIGF0dGVtcHRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHJlY3Vyc2l2ZWx5IHdyYXAgJS4yMDBSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3dyYXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKICAgICAgICAgLyogRG9uJ3QgbmVlZCB0byBrZWVwIHRoZSByZWZlcmVuY2UgdG8gZl9iYWNrLCBpdCB3aWxsIGJlIHNldAogICAgICAgICAgKiB3aGVuIHRoZSBnZW5lcmF0b3IgaXMgcmVzdW1lZC4gKi8KICAgICAgICAgUHlfQ0xFQVIoZi0+Zl9iYWNrKTsKQEAgLTM1ODIsNyArMzk0MCwyMyBAQAogCiAgICAgICAgIC8qIENyZWF0ZSBhIG5ldyBnZW5lcmF0b3IgdGhhdCBvd25zIHRoZSByZWFkeSB0byBydW4gZnJhbWUKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KLSAgICAgICAgcmV0dXJuIFB5R2VuX05ldyhmKTsKKyAgICAgICAgaWYgKGlzX2Nvcm8pIHsKKyAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZ2VuID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoaXNfY29ybyAmJiBjb3JvX3dyYXBwZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKndyYXBwZWQ7CisgICAgICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMTsKKyAgICAgICAgICAgIHdyYXBwZWQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY29yb193cmFwcGVyLCAiTiIsIGdlbik7CisgICAgICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMDsKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVkOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdlbjsKICAgICB9CiAKICAgICByZXR2YWwgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKQEAgLTM2MDEsNiArMzk3NSwxNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXZhbF9FdmFsQ29kZUV4KFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShfY28sIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LCBrd3MsIGt3Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZzLCBkZWZjb3VudCwga3dkZWZzLCBjbG9zdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKmlkKQpAQCAtMzc5MSw5ICs0MTc1LDE3IEBACiAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKICAgICAgICAgICAgIC8qIEl0ZXJhdG9yIGRvbmUsIHZpYSBlcnJvciBvciBleGhhdXN0aW9uLiAqLwogICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJuZWVkIG1vcmUgdGhhbiAlZCB2YWx1ZSVzIHRvIHVucGFjayIsCi0gICAgICAgICAgICAgICAgICAgIGksIGkgPT0gMSA/ICIiIDogInMiKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJnY250YWZ0ZXIgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAlZCwgZ290ICVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmdjbnQsIGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGVub3VnaCB2YWx1ZXMgdG8gdW5wYWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIoZXhwZWN0ZWQgYXQgbGVhc3QgJWQsIGdvdCAlZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJnY250ICsgYXJnY250YWZ0ZXIsIGkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdvdG8gRXJyb3I7CiAgICAgICAgIH0KQEAgLTM4MTAsOCArNDIwMiw5IEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAidG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAiCi0gICAgICAgICAgICAgICAgICAgICAiKGV4cGVjdGVkICVkKSIsIGFyZ2NudCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkICVkKSIsCisgICAgICAgICAgICBhcmdjbnQpOwogICAgICAgICBnb3RvIEVycm9yOwogICAgIH0KIApAQCAtMzgyMyw4ICs0MjE2LDkgQEAKIAogICAgIGxsID0gUHlMaXN0X0dFVF9TSVpFKGwpOwogICAgIGlmIChsbCA8IGFyZ2NudGFmdGVyKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAibmVlZCBtb3JlIHRoYW4gJXpkIHZhbHVlcyB0byB1bnBhY2siLAotICAgICAgICAgICAgICAgICAgICAgYXJnY250ICsgbGwpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJub3QgZW5vdWdoIHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIGF0IGxlYXN0ICVkLCBnb3QgJXpkKSIsCisgICAgICAgICAgICBhcmdjbnQgKyBhcmdjbnRhZnRlciwgYXJnY250ICsgbGwpOwogICAgICAgICBnb3RvIEVycm9yOwogICAgIH0KIApAQCAtNDAwOCw2ICs0NDAyLDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAodHN0YXRlLT5jX3Byb2ZpbGVmdW5jICE9IE5VTEwpKTsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICp3cmFwcGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKKworICAgIFB5X1hJTkNSRUYod3JhcHBlcik7CisgICAgdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlciA9IHdyYXBwZXI7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0Q29yb3V0aW5lV3JhcHBlcih2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7Cit9CisKIFB5T2JqZWN0ICoKIFB5RXZhbF9HZXRCdWlsdGlucyh2b2lkKQogewpAQCAtNDA4Niw4ICs0NDk4LDggQEAKIAogI2lmZGVmIFB5X0RFQlVHCiAgICAgLyogUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24KLSAgICAgICBzZXQsIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KQotICAgICAgIGFuZCBzbyB0aGUgY2FsbGVyIGxvb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgICAgc2V0LiBJdCByYWlzZXMgYSBuZXcgZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgb3IgaWYKKyAgICAgICBQeVR1cGxlX05ldygpIGZhaWxzLCBhbmQgc28gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbiBpcyBsb3N0LiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAjZW5kaWYKIApAQCAtNDExNCw4ICs0NTI2LDYgQEAKICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZywga3cpOwogICAgIFB5X0RFQ1JFRihhcmcpOwogCi0gICAgYXNzZXJ0KChyZXN1bHQgIT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgfHwgKHJlc3VsdCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MjE4LDExICs0NjI4LDE1IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwogICAgICAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MgJiYgbmEgPT0gMCkgewogICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLE5VTEwpKTsKKworICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTUVUSF9PICYmIG5hID09IDEpIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwogICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLGFyZykpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOworCisgICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZXJyX2FyZ3MoZnVuYywgZmxhZ3MsIG5hKTsKQEAgLTQyNDIsNyArNDY1Niw4IEBACiAgICAgICAgICAgICAgICAgeCA9IE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5TWV0aG9kX0NoZWNrKGZ1bmMpICYmIFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIG9wdGltaXplIGFjY2VzcyB0byBib3VuZCBtZXRob2RzICovCiAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwpAQCAtNDI2NCw5ICs0Njc5LDkgQEAKICAgICAgICAgICAgIHggPSBkb19jYWxsKGZ1bmMsIHBwX3N0YWNrLCBuYSwgbmspOwogICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworCisgICAgICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICB9Ci0gICAgYXNzZXJ0KCh4ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8ICh4ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOwogCiAgICAgLyogQ2xlYXIgdGhlIHN0YWNrIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBBbHNvIHJlbW92ZXMKICAgICAgICB0aGUgYXJndW1lbnRzIGluIGNhc2UgdGhleSB3ZXJlbid0IGNvbnN1bWVkIGFscmVhZHkKQEAgLTQyNzgsOCArNDY5Myw3IEBACiAgICAgICAgIFBDQUxMKFBDQUxMX1BPUCk7CiAgICAgfQogCi0gICAgYXNzZXJ0KCh4ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8ICh4ID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkpOworICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICByZXR1cm4geDsKIH0KIApAQCAtNDI5OSw2ICs0NzEzLDggQEAKICAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmFyZ2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9ERUZBVUxUUyhmdW5jKTsKICAgICBQeU9iamVjdCAqa3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKICAgICBQeU9iamVjdCAqKmQgPSBOVUxMOwogICAgIGludCBuZCA9IDA7CiAKQEAgLTQzNDEsMTAgKzQ3NTcsMTEgQEAKICAgICAgICAgZCA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOwogICAgICAgICBuZCA9IFB5X1NJWkUoYXJnZGVmcyk7CiAgICAgfQotICAgIHJldHVybiBQeUV2YWxfRXZhbENvZGVFeCgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpwcF9zdGFjayktMipuaywgbmssIGQsIG5kLCBrd2RlZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYykpOworICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKU5VTEwsICgqcHBfc3RhY2spLW4sIG5hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpwcF9zdGFjayktMipuaywgbmssIGQsIG5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgcXVhbG5hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUwOCw2ICs0OTI1LDEyIEBACiAgICAgICAgICAgICBrd2RpY3QgPSBkOwogICAgICAgICB9CiAgICAgfQorICAgIGlmIChuayA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhrd2RpY3QsIG5rLCBwcF9zdGFjaywgZnVuYyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKKyAgICB9CisKICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKSB7CiAgICAgICAgIHN0YXJhcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7CiAgICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGFyYXJnKSkgewpAQCAtNDUyOSwxMSArNDk1Miw2IEBACiAgICAgICAgIH0KICAgICAgICAgbnN0YXIgPSBQeVR1cGxlX0dFVF9TSVpFKHN0YXJhcmcpOwogICAgIH0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgfQogICAgIGNhbGxhcmdzID0gdXBkYXRlX3N0YXJfYXJncyhuYSwgbnN0YXIsIHN0YXJhcmcsIHBwX3N0YWNrKTsKICAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwpAQCAtNDU2MywxMiArNDk4MSwxMCBAQAogICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwogICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKICAgICBQeV9YREVDUkVGKHN0YXJhcmcpOwotICAgIGFzc2VydCgocmVzdWx0ICE9IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgIHx8IChyZXN1bHQgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUludCBvciBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCisvKiBFeHRyYWN0IGEgc2xpY2UgaW5kZXggZnJvbSBhIFB5TG9uZyBvciBhbiBvYmplY3Qgd2l0aCB0aGUKICAgIG5iX2luZGV4IHNsb3QgZGVmaW5lZCwgYW5kIHN0b3JlIGluICpwaS4KICAgIFNpbGVudGx5IHJlZHVjZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gUFlfU1NJWkVfVF9NQVggdG8gUFlfU1NJWkVfVF9NQVgsCiAgICBhbmQgc2lsZW50bHkgYm9vc3QgdmFsdWVzIGxlc3MgdGhhbiAtUFlfU1NJWkVfVF9NQVgtMSB0byAtUFlfU1NJWkVfVF9NQVgtMS4KQEAgLTQ2NTgsMTIgKzUwNzQsMzUgQEAKIGltcG9ydF9mcm9tKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqeDsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgUHlPYmplY3QgKmZ1bGxtb2RuYW1lLCAqcGtnbmFtZTsKIAogICAgIHggPSBQeU9iamVjdF9HZXRBdHRyKHYsIG5hbWUpOwotICAgIGlmICh4ID09IE5VTEwgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLCAiY2Fubm90IGltcG9ydCBuYW1lICVSIiwgbmFtZSk7CisgICAgaWYgKHggIT0gTlVMTCB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIHJldHVybiB4OworICAgIC8qIElzc3VlICMxNzYzNjogaW4gY2FzZSB0aGlzIGZhaWxlZCBiZWNhdXNlIG9mIGEgY2lyY3VsYXIgcmVsYXRpdmUKKyAgICAgICBpbXBvcnQsIHRyeSB0byBmYWxsYmFjayBvbiByZWFkaW5nIHRoZSBtb2R1bGUgZGlyZWN0bHkgZnJvbQorICAgICAgIHN5cy5tb2R1bGVzLiAqLworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcGtnbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodiwgJlB5SWRfX19uYW1lX18pOworICAgIGlmIChwa2duYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgZnVsbG1vZG5hbWUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUuJVUiLCBwa2duYW1lLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYocGtnbmFtZSk7CisgICAgaWYgKGZ1bGxtb2RuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHggPSBQeURpY3RfR2V0SXRlbShQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIGZ1bGxtb2RuYW1lKTsKKyAgICBQeV9ERUNSRUYoZnVsbG1vZG5hbWUpOworICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfSU5DUkVGKHgpOwogICAgIHJldHVybiB4OworIGVycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwgImNhbm5vdCBpbXBvcnQgbmFtZSAlUiIsIG5hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50CmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggMjcwMmQ1Yy4uYWFmY2JjMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtMzEsNyArMzEsNyBAQAogICAgICB2YXJpYWJsZSAoZ2lsX2Ryb3BfcmVxdWVzdCkgaXMgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLCB3aGljaCBpcyBjaGVja2VkCiAgICAgIGF0IGV2ZXJ5IHR1cm4gb2YgdGhlIGV2YWwgbG9vcC4gVGhhdCB2YXJpYWJsZSBpcyBzZXQgYWZ0ZXIgYSB3YWl0IG9mCiAgICAgIGBpbnRlcnZhbGAgbWljcm9zZWNvbmRzIG9uIGBnaWxfY29uZGAgaGFzIHRpbWVkIG91dC4KLSAgICAgIAorCiAgICAgICBbQWN0dWFsbHksIGFub3RoZXIgdm9sYXRpbGUgYm9vbGVhbiB2YXJpYWJsZSAoZXZhbF9icmVha2VyKSBpcyB1c2VkCiAgICAgICAgd2hpY2ggT1JzIHNldmVyYWwgY29uZGl0aW9ucyBpbnRvIG9uZS4gVm9sYXRpbGUgYm9vbGVhbnMgYXJlCiAgICAgICAgc3VmZmljaWVudCBhcyBpbnRlci10aHJlYWQgc2lnbmFsbGluZyBtZWFucyBzaW5jZSBQeXRob24gaXMgcnVuCkBAIC00MSw3ICs0MSw3IEBACiAgICAgIHRpbWUgKGBpbnRlcnZhbGAgbWljcm9zZWNvbmRzKSBiZWZvcmUgc2V0dGluZyBnaWxfZHJvcF9yZXF1ZXN0LiBUaGlzCiAgICAgIGVuY291cmFnZXMgYSBkZWZpbmVkIHN3aXRjaGluZyBwZXJpb2QsIGJ1dCBkb2Vzbid0IGVuZm9yY2UgaXQgc2luY2UKICAgICAgb3Bjb2RlcyBjYW4gdGFrZSBhbiBhcmJpdHJhcnkgdGltZSB0byBleGVjdXRlLgotIAorCiAgICAgIFRoZSBgaW50ZXJ2YWxgIHZhbHVlIGlzIGF2YWlsYWJsZSBmb3IgdGhlIHVzZXIgdG8gcmVhZCBhbmQgbW9kaWZ5CiAgICAgIHVzaW5nIHRoZSBQeXRob24gQVBJIGBzeXMue2dldCxzZXR9c3dpdGNoaW50ZXJ2YWwoKWAuCiAKQEAgLTUxLDcgKzUxLDcgQEAKICAgICAgdGhlIHZhbHVlIG9mIGdpbF9sYXN0X2hvbGRlciBpcyBjaGFuZ2VkIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gaXRzCiAgICAgIG93biB0aHJlYWQgc3RhdGUgcG9pbnRlciwgaW5kaWNhdGluZyB0aGF0IGFub3RoZXIgdGhyZWFkIHdhcyBhYmxlIHRvCiAgICAgIHRha2UgdGhlIEdJTC4KLSAKKwogICAgICBUaGlzIGlzIG1lYW50IHRvIHByb2hpYml0IHRoZSBsYXRlbmN5LWFkdmVyc2UgYmVoYXZpb3VyIG9uIG11bHRpLWNvcmUKICAgICAgbWFjaGluZXMgd2hlcmUgb25lIHRocmVhZCB3b3VsZCBzcGVjdWxhdGl2ZWx5IHJlbGVhc2UgdGhlIEdJTCwgYnV0IHN0aWxsCiAgICAgIHJ1biBhbmQgZW5kIHVwIGJlaW5nIHRoZSBmaXJzdCB0byByZS1hY3F1aXJlIGl0LCBtYWtpbmcgdGhlICJ0aW1lc2xpY2VzIgpAQCAtMTg2LDEyICsxODYsMTIgQEAKICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sb2NrZWQsIDApOwogICAgIENPTkRfU0lHTkFMKGdpbF9jb25kKTsKICAgICBNVVRFWF9VTkxPQ0soZ2lsX211dGV4KTsKLSAgICAKKwogI2lmZGVmIEZPUkNFX1NXSVRDSElORwogICAgIGlmIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2Ryb3BfcmVxdWVzdCkgJiYgdHN0YXRlICE9IE5VTEwpIHsKICAgICAgICAgTVVURVhfTE9DSyhzd2l0Y2hfbXV0ZXgpOwogICAgICAgICAvKiBOb3Qgc3dpdGNoZWQgeWV0ID0+IHdhaXQgKi8KLSAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgeworICAgICAgICBpZiAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpID09IHRzdGF0ZSkgewogICAgICAgICBSRVNFVF9HSUxfRFJPUF9SRVFVRVNUKCk7CiAgICAgICAgICAgICAvKiBOT1RFOiBpZiBDT05EX1dBSVQgZG9lcyBub3QgYXRvbWljYWxseSBzdGFydCB3YWl0aW5nIHdoZW4KICAgICAgICAgICAgICAgIHJlbGVhc2luZyB0aGUgbXV0ZXgsIGFub3RoZXIgdGhyZWFkIGNhbiBydW4gdGhyb3VnaCwgdGFrZQpAQCAtMjE1LDcgKzIxNSw3IEBACiAKICAgICBpZiAoIV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbG9ja2VkKSkKICAgICAgICAgZ290byBfcmVhZHk7Ci0gICAgCisKICAgICB3aGlsZSAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sb2NrZWQpKSB7CiAgICAgICAgIGludCB0aW1lZF9vdXQgPSAwOwogICAgICAgICB1bnNpZ25lZCBsb25nIHNhdmVkX3N3aXRjaG51bTsKQEAgLTIzOSw3ICsyMzksNyBAQAogICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xvY2tlZCwgMSk7CiAgICAgX1B5X0FOTk9UQVRFX1JXTE9DS19BQ1FVSVJFRCgmZ2lsX2xvY2tlZCwgLyppc193cml0ZT0qLzEpOwogCi0gICAgaWYgKHRzdGF0ZSAhPSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSkgeworICAgIGlmICh0c3RhdGUgIT0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpKSB7CiAgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCB0c3RhdGUpOwogICAgICAgICArK2dpbF9zd2l0Y2hfbnVtYmVyOwogICAgIH0KQEAgLTI1NCw3ICsyNTQsNyBAQAogICAgIGlmICh0c3RhdGUtPmFzeW5jX2V4YyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeUV2YWxfU2lnbmFsQXN5bmNFeGMoKTsKICAgICB9Ci0gICAgCisKICAgICBNVVRFWF9VTkxPQ0soZ2lsX211dGV4KTsKICAgICBlcnJubyA9IGVycjsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2OTE0OAotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCkBAIC0wLDAgKzEsNjYzIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIoYnVpbHRpbl9hYnNfX2RvY19fLAorImFicygkbW9kdWxlLCB4LCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9BQlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImFicyIsIChQeUNGdW5jdGlvbilidWlsdGluX2FicywgTUVUSF9PLCBidWlsdGluX2Fic19fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9hbGxfX2RvY19fLAorImFsbCgkbW9kdWxlLCBpdGVyYWJsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIGJvb2woeCkgaXMgVHJ1ZSBmb3IgYWxsIHZhbHVlcyB4IGluIHRoZSBpdGVyYWJsZS5cbiIKKyJcbiIKKyJJZiB0aGUgaXRlcmFibGUgaXMgZW1wdHksIHJldHVybiBUcnVlLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJhbGwiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9hbGwsIE1FVEhfTywgYnVpbHRpbl9hbGxfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fYW55X19kb2NfXywKKyJhbnkoJG1vZHVsZSwgaXRlcmFibGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiBib29sKHgpIGlzIFRydWUgZm9yIGFueSB4IGluIHRoZSBpdGVyYWJsZS5cbiIKKyJcbiIKKyJJZiB0aGUgaXRlcmFibGUgaXMgZW1wdHksIHJldHVybiBGYWxzZS4iKTsKKworI2RlZmluZSBCVUlMVElOX0FOWV9NRVRIT0RERUYgICAgXAorICAgIHsiYW55IiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYW55LCBNRVRIX08sIGJ1aWx0aW5fYW55X19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2FzY2lpX19kb2NfXywKKyJhc2NpaSgkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYW4gQVNDSUktb25seSByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuXG4iCisiXG4iCisiQXMgcmVwcigpLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyBhIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiBvZiBhblxuIgorIm9iamVjdCwgYnV0IGVzY2FwZSB0aGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyByZXR1cm5lZCBieVxuIgorInJlcHIoKSB1c2luZyBcXFxceCwgXFxcXHUgb3IgXFxcXFUgZXNjYXBlcy4gVGhpcyBnZW5lcmF0ZXMgYSBzdHJpbmcgc2ltaWxhclxuIgorInRvIHRoYXQgcmV0dXJuZWQgYnkgcmVwcigpIGluIFB5dGhvbiAyLiIpOworCisjZGVmaW5lIEJVSUxUSU5fQVNDSUlfTUVUSE9EREVGICAgIFwKKyAgICB7ImFzY2lpIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fYXNjaWksIE1FVEhfTywgYnVpbHRpbl9hc2NpaV9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9iaW5fX2RvY19fLAorImJpbigkbW9kdWxlLCBudW1iZXIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuIgorIlxuIgorIiAgID4+PiBiaW4oMjc5NjIwMilcbiIKKyIgICBcJzBiMTAxMDEwMTAxMDEwMTAxMDEwMTAxMFwnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9CSU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImJpbiIsIChQeUNGdW5jdGlvbilidWlsdGluX2JpbiwgTUVUSF9PLCBidWlsdGluX2Jpbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9jYWxsYWJsZV9fZG9jX18sCisiY2FsbGFibGUoJG1vZHVsZSwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBjYWxsYWJsZSAoaS5lLiwgc29tZSBraW5kIG9mIGZ1bmN0aW9uKS5cbiIKKyJcbiIKKyJOb3RlIHRoYXQgY2xhc3NlcyBhcmUgY2FsbGFibGUsIGFzIGFyZSBpbnN0YW5jZXMgb2YgY2xhc3NlcyB3aXRoIGFcbiIKKyJfX2NhbGxfXygpIG1ldGhvZC4iKTsKKworI2RlZmluZSBCVUlMVElOX0NBTExBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJjYWxsYWJsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NhbGxhYmxlLCBNRVRIX08sIGJ1aWx0aW5fY2FsbGFibGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZm9ybWF0X19kb2NfXywKKyJmb3JtYXQoJG1vZHVsZSwgdmFsdWUsIGZvcm1hdF9zcGVjPVwnXCcsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdmFsdWUuX19mb3JtYXRfXyhmb3JtYXRfc3BlYylcbiIKKyJcbiIKKyJmb3JtYXRfc3BlYyBkZWZhdWx0cyB0byB0aGUgZW1wdHkgc3RyaW5nIik7CisKKyNkZWZpbmUgQlVJTFRJTl9GT1JNQVRfTUVUSE9EREVGICAgIFwKKyAgICB7ImZvcm1hdCIsIChQeUNGdW5jdGlvbilidWlsdGluX2Zvcm1hdCwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2Zvcm1hdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9mb3JtYXRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Zvcm1hdChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVOmZvcm1hdCIsCisgICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZm9ybWF0X2ltcGwobW9kdWxlLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2Nocl9fZG9jX18sCisiY2hyKCRtb2R1bGUsIGksIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBVbmljb2RlIHN0cmluZyBvZiBvbmUgY2hhcmFjdGVyIHdpdGggb3JkaW5hbCBpOyAwIDw9IGkgPD0gMHgxMGZmZmYuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9DSFJfTUVUSE9EREVGICAgIFwKKyAgICB7ImNociIsIChQeUNGdW5jdGlvbilidWlsdGluX2NociwgTUVUSF9PLCBidWlsdGluX2Nocl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9jaHJfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBpbnQgaSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2NocihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGludCBpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY2hyX2ltcGwobW9kdWxlLCBpKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9jb21waWxlX19kb2NfXywKKyJjb21waWxlKCRtb2R1bGUsIC8sIHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzPTAsXG4iCisiICAgICAgICBkb250X2luaGVyaXQ9RmFsc2UsIG9wdGltaXplPS0xKVxuIgorIi0tXG4iCisiXG4iCisiQ29tcGlsZSBzb3VyY2UgaW50byBhIGNvZGUgb2JqZWN0IHRoYXQgY2FuIGJlIGV4ZWN1dGVkIGJ5IGV4ZWMoKSBvciBldmFsKCkuXG4iCisiXG4iCisiVGhlIHNvdXJjZSBjb2RlIG1heSByZXByZXNlbnQgYSBQeXRob24gbW9kdWxlLCBzdGF0ZW1lbnQgb3IgZXhwcmVzc2lvbi5cbiIKKyJUaGUgZmlsZW5hbWUgd2lsbCBiZSB1c2VkIGZvciBydW4tdGltZSBlcnJvciBtZXNzYWdlcy5cbiIKKyJUaGUgbW9kZSBtdXN0IGJlIFwnZXhlY1wnIHRvIGNvbXBpbGUgYSBtb2R1bGUsIFwnc2luZ2xlXCcgdG8gY29tcGlsZSBhXG4iCisic2luZ2xlIChpbnRlcmFjdGl2ZSkgc3RhdGVtZW50LCBvciBcJ2V2YWxcJyB0byBjb21waWxlIGFuIGV4cHJlc3Npb24uXG4iCisiVGhlIGZsYWdzIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBjb250cm9scyB3aGljaCBmdXR1cmUgc3RhdGVtZW50cyBpbmZsdWVuY2VcbiIKKyJ0aGUgY29tcGlsYXRpb24gb2YgdGhlIGNvZGUuXG4iCisiVGhlIGRvbnRfaW5oZXJpdCBhcmd1bWVudCwgaWYgdHJ1ZSwgc3RvcHMgdGhlIGNvbXBpbGF0aW9uIGluaGVyaXRpbmdcbiIKKyJ0aGUgZWZmZWN0cyBvZiBhbnkgZnV0dXJlIHN0YXRlbWVudHMgaW4gZWZmZWN0IGluIHRoZSBjb2RlIGNhbGxpbmdcbiIKKyJjb21waWxlOyBpZiBhYnNlbnQgb3IgZmFsc2UgdGhlc2Ugc3RhdGVtZW50cyBkbyBpbmZsdWVuY2UgdGhlIGNvbXBpbGF0aW9uLFxuIgorImluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKKworI2RlZmluZSBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2NvbXBpbGVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICBpbnQgZG9udF9pbmhlcml0LCBpbnQgb3B0aW1pemUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9jb21waWxlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnNvdXJjZTsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisgICAgY29uc3QgY2hhciAqbW9kZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCBkb250X2luaGVyaXQgPSAwOworICAgIGludCBvcHRpbWl6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywKKyAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jb21waWxlX2ltcGwobW9kdWxlLCBzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncywgZG9udF9pbmhlcml0LCBvcHRpbWl6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZGl2bW9kX19kb2NfXywKKyJkaXZtb2QoJG1vZHVsZSwgeCwgeSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdHVwbGUgKCh4LXgleSkveSwgeCV5KS4gIEludmFyaWFudDogZGl2KnkgKyBtb2QgPT0geC4iKTsKKworI2RlZmluZSBCVUlMVElOX0RJVk1PRF9NRVRIT0RERUYgICAgXAorICAgIHsiZGl2bW9kIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZGl2bW9kLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZGl2bW9kX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Rpdm1vZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICp4LCBQeU9iamVjdCAqeSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2Rpdm1vZChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRpdm1vZCIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZ4LCAmeSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Rpdm1vZF9pbXBsKG1vZHVsZSwgeCwgeSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fZXZhbF9fZG9jX18sCisiZXZhbCgkbW9kdWxlLCBzb3VyY2UsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFdmFsdWF0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJcbiIKKyJUaGUgc291cmNlIG1heSBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBQeXRob24gZXhwcmVzc2lvblxuIgorIm9yIGEgY29kZSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgY29tcGlsZSgpLlxuIgorIlRoZSBnbG9iYWxzIG11c3QgYmUgYSBkaWN0aW9uYXJ5IGFuZCBsb2NhbHMgY2FuIGJlIGFueSBtYXBwaW5nLFxuIgorImRlZmF1bHRpbmcgdG8gdGhlIGN1cnJlbnQgZ2xvYmFscyBhbmQgbG9jYWxzLlxuIgorIklmIG9ubHkgZ2xvYmFscyBpcyBnaXZlbiwgbG9jYWxzIGRlZmF1bHRzIHRvIGl0LiIpOworCisjZGVmaW5lIEJVSUxUSU5fRVZBTF9NRVRIT0RERUYgICAgXAorICAgIHsiZXZhbCIsIChQeUNGdW5jdGlvbilidWlsdGluX2V2YWwsIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9ldmFsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2V2YWxfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9ldmFsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2U7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsCisgICAgICAgIDEsIDMsCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXZhbF9pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2V4ZWNfX2RvY19fLAorImV4ZWMoJG1vZHVsZSwgc291cmNlLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiRXhlY3V0ZSB0aGUgZ2l2ZW4gc291cmNlIGluIHRoZSBjb250ZXh0IG9mIGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJcbiIKKyJUaGUgc291cmNlIG1heSBiZSBhIHN0cmluZyByZXByZXNlbnRpbmcgb25lIG9yIG1vcmUgUHl0aG9uIHN0YXRlbWVudHNcbiIKKyJvciBhIGNvZGUgb2JqZWN0IGFzIHJldHVybmVkIGJ5IGNvbXBpbGUoKS5cbiIKKyJUaGUgZ2xvYmFscyBtdXN0IGJlIGEgZGljdGlvbmFyeSBhbmQgbG9jYWxzIGNhbiBiZSBhbnkgbWFwcGluZyxcbiIKKyJkZWZhdWx0aW5nIHRvIHRoZSBjdXJyZW50IGdsb2JhbHMgYW5kIGxvY2Fscy5cbiIKKyJJZiBvbmx5IGdsb2JhbHMgaXMgZ2l2ZW4sIGxvY2FscyBkZWZhdWx0cyB0byBpdC4iKTsKKworI2RlZmluZSBCVUlMVElOX0VYRUNfTUVUSE9EREVGICAgIFwKKyAgICB7ImV4ZWMiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9leGVjLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fZXhlY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9leGVjX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZXhlYyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc291cmNlOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqbG9jYWxzID0gUHlfTm9uZTsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV4ZWMiLAorICAgICAgICAxLCAzLAorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V4ZWNfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9nbG9iYWxzX19kb2NfXywKKyJnbG9iYWxzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY3VycmVudCBzY29wZVwncyBnbG9iYWwgdmFyaWFibGVzLlxuIgorIlxuIgorIk5PVEU6IFVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5ICp3aWxsKiBhZmZlY3QgbmFtZSBsb29rdXBzIGluIHRoZSBjdXJyZW50XG4iCisiZ2xvYmFsIHNjb3BlIGFuZCB2aWNlLXZlcnNhLiIpOworCisjZGVmaW5lIEJVSUxUSU5fR0xPQkFMU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2xvYmFscyIsIChQeUNGdW5jdGlvbilidWlsdGluX2dsb2JhbHMsIE1FVEhfTk9BUkdTLCBidWlsdGluX2dsb2JhbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZ2xvYmFsc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9nbG9iYWxzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIGJ1aWx0aW5fZ2xvYmFsc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2hhc2F0dHJfX2RvY19fLAorImhhc2F0dHIoJG1vZHVsZSwgb2JqLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgdGhlIG9iamVjdCBoYXMgYW4gYXR0cmlidXRlIHdpdGggdGhlIGdpdmVuIG5hbWUuXG4iCisiXG4iCisiVGhpcyBpcyBkb25lIGJ5IGNhbGxpbmcgZ2V0YXR0cihvYmosIG5hbWUpIGFuZCBjYXRjaGluZyBBdHRyaWJ1dGVFcnJvci4iKTsKKworI2RlZmluZSBCVUlMVElOX0hBU0FUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7Imhhc2F0dHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9oYXNhdHRyLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5faGFzYXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9oYXNhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9oYXNhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9oYXNhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX2lkX19kb2NfXywKKyJpZCgkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGlkZW50aXR5IG9mIGFuIG9iamVjdC5cbiIKKyJcbiIKKyJUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGFtb25nIHNpbXVsdGFuZW91c2x5IGV4aXN0aW5nIG9iamVjdHMuXG4iCisiKENQeXRob24gdXNlcyB0aGUgb2JqZWN0XCdzIG1lbW9yeSBhZGRyZXNzLikiKTsKKworI2RlZmluZSBCVUlMVElOX0lEX01FVEhPRERFRiAgICBcCisgICAgeyJpZCIsIChQeUNGdW5jdGlvbilidWlsdGluX2lkLCBNRVRIX08sIGJ1aWx0aW5faWRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fc2V0YXR0cl9fZG9jX18sCisic2V0YXR0cigkbW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2V0cyB0aGUgbmFtZWQgYXR0cmlidXRlIG9uIHRoZSBnaXZlbiBvYmplY3QgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiIKKyJcbiIKKyJzZXRhdHRyKHgsIFwneVwnLCB2KSBpcyBlcXVpdmFsZW50IHRvIGBgeC55ID0gdlwnXCciKTsKKworI2RlZmluZSBCVUlMVElOX1NFVEFUVFJfTUVUSE9EREVGICAgIFwKKyAgICB7InNldGF0dHIiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zZXRhdHRyLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5fc2V0YXR0cl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zZXRhdHRyX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zZXRhdHRyKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0YXR0ciIsCisgICAgICAgIDMsIDMsCisgICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zZXRhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9kZWxhdHRyX19kb2NfXywKKyJkZWxhdHRyKCRtb2R1bGUsIG9iaiwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkRlbGV0ZXMgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBvYmplY3QuXG4iCisiXG4iCisiZGVsYXR0cih4LCBcJ3lcJykgaXMgZXF1aXZhbGVudCB0byBgYGRlbCB4LnlcJ1wnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9ERUxBVFRSX01FVEhPRERFRiAgICBcCisgICAgeyJkZWxhdHRyIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fZGVsYXR0ciwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2RlbGF0dHJfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGVsYXR0cl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fZGVsYXR0cihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVsYXR0ciIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGVsYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9oYXNoX19kb2NfXywKKyJoYXNoKCRtb2R1bGUsIG9iaiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhlIGdpdmVuIG9iamVjdC5cbiIKKyJcbiIKKyJUd28gb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbXVzdCBhbHNvIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZSwgYnV0IHRoZVxuIgorInJldmVyc2UgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9IQVNIX01FVEhPRERFRiAgICBcCisgICAgeyJoYXNoIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faGFzaCwgTUVUSF9PLCBidWlsdGluX2hhc2hfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faGV4X19kb2NfXywKKyJoZXgoJG1vZHVsZSwgbnVtYmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLlxuIgorIlxuIgorIiAgID4+PiBoZXgoMTI2NDg0MzApXG4iCisiICAgXCcweGMwZmZlZVwnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9IRVhfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilidWlsdGluX2hleCwgTUVUSF9PLCBidWlsdGluX2hleF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9sZW5fX2RvY19fLAorImxlbigkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIGNvbnRhaW5lci4iKTsKKworI2RlZmluZSBCVUlMVElOX0xFTl9NRVRIT0RERUYgICAgXAorICAgIHsibGVuIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbGVuLCBNRVRIX08sIGJ1aWx0aW5fbGVuX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX2xvY2Fsc19fZG9jX18sCisibG9jYWxzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgc2NvcGVcJ3MgbG9jYWwgdmFyaWFibGVzLlxuIgorIlxuIgorIk5PVEU6IFdoZXRoZXIgb3Igbm90IHVwZGF0ZXMgdG8gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgYWZmZWN0IG5hbWUgbG9va3VwcyBpblxuIgorInRoZSBsb2NhbCBzY29wZSBhbmQgdmljZS12ZXJzYSBpcyAqaW1wbGVtZW50YXRpb24gZGVwZW5kZW50KiBhbmQgbm90XG4iCisiY292ZXJlZCBieSBhbnkgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZ3VhcmFudGVlcy4iKTsKKworI2RlZmluZSBCVUlMVElOX0xPQ0FMU19NRVRIT0RERUYgICAgXAorICAgIHsibG9jYWxzIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fbG9jYWxzLCBNRVRIX05PQVJHUywgYnVpbHRpbl9sb2NhbHNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fbG9jYWxzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2xvY2FscyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBidWlsdGluX2xvY2Fsc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihidWlsdGluX29jdF9fZG9jX18sCisib2N0KCRtb2R1bGUsIG51bWJlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgb2N0YWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cbiIKKyJcbiIKKyIgICA+Pj4gb2N0KDM0MjM5MSlcbiIKKyIgICBcJzBvMTIzNDU2N1wnIik7CisKKyNkZWZpbmUgQlVJTFRJTl9PQ1RfTUVUSE9EREVGICAgIFwKKyAgICB7Im9jdCIsIChQeUNGdW5jdGlvbilidWlsdGluX29jdCwgTUVUSF9PLCBidWlsdGluX29jdF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9vcmRfX2RvY19fLAorIm9yZCgkbW9kdWxlLCBjLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBVbmljb2RlIGNvZGUgcG9pbnQgZm9yIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9PUkRfTUVUSE9EREVGICAgIFwKKyAgICB7Im9yZCIsIChQeUNGdW5jdGlvbilidWlsdGluX29yZCwgTUVUSF9PLCBidWlsdGluX29yZF9fZG9jX199LAorCitQeURvY19TVFJWQVIoYnVpbHRpbl9wb3dfX2RvY19fLAorInBvdygkbW9kdWxlLCB4LCB5LCB6PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJFcXVpdmFsZW50IHRvIHgqKnkgKHdpdGggdHdvIGFyZ3VtZW50cykgb3IgeCoqeSAlIHogKHdpdGggdGhyZWUgYXJndW1lbnRzKVxuIgorIlxuIgorIlNvbWUgdHlwZXMsIHN1Y2ggYXMgaW50cywgYXJlIGFibGUgdG8gdXNlIGEgbW9yZSBlZmZpY2llbnQgYWxnb3JpdGhtIHdoZW5cbiIKKyJpbnZva2VkIHVzaW5nIHRoZSB0aHJlZSBhcmd1bWVudCBmb3JtLiIpOworCisjZGVmaW5lIEJVSUxUSU5fUE9XX01FVEhPRERFRiAgICBcCisgICAgeyJwb3ciLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9wb3csIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9wb3dfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fcG93X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKngsIFB5T2JqZWN0ICp5LCBQeU9iamVjdCAqeik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX3BvdyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeTsKKyAgICBQeU9iamVjdCAqeiA9IFB5X05vbmU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3ciLAorICAgICAgICAyLCAzLAorICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fcG93X2ltcGwobW9kdWxlLCB4LCB5LCB6KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9pbnB1dF9fZG9jX18sCisiaW5wdXQoJG1vZHVsZSwgcHJvbXB0PU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGEgc3RyaW5nIGZyb20gc3RhbmRhcmQgaW5wdXQuICBUaGUgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZC5cbiIKKyJcbiIKKyJUaGUgcHJvbXB0IHN0cmluZywgaWYgZ2l2ZW4sIGlzIHByaW50ZWQgdG8gc3RhbmRhcmQgb3V0cHV0IHdpdGhvdXQgYVxuIgorInRyYWlsaW5nIG5ld2xpbmUgYmVmb3JlIHJlYWRpbmcgaW5wdXQuXG4iCisiXG4iCisiSWYgdGhlIHVzZXIgaGl0cyBFT0YgKCpuaXg6IEN0cmwtRCwgV2luZG93czogQ3RybC1aK1JldHVybiksIHJhaXNlIEVPRkVycm9yLlxuIgorIk9uICpuaXggc3lzdGVtcywgcmVhZGxpbmUgaXMgdXNlZCBpZiBhdmFpbGFibGUuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9JTlBVVF9NRVRIT0RERUYgICAgXAorICAgIHsiaW5wdXQiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9pbnB1dCwgTUVUSF9WQVJBUkdTLCBidWlsdGluX2lucHV0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lucHV0X2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKnByb21wdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lucHV0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwcm9tcHQgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaW5wdXQiLAorICAgICAgICAwLCAxLAorICAgICAgICAmcHJvbXB0KSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faW5wdXRfaW1wbChtb2R1bGUsIHByb21wdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5fcmVwcl9fZG9jX18sCisicmVwcigkbW9kdWxlLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGNhbm9uaWNhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC5cbiIKKyJcbiIKKyJGb3IgbWFueSBvYmplY3QgdHlwZXMsIGluY2x1ZGluZyBtb3N0IGJ1aWx0aW5zLCBldmFsKHJlcHIob2JqKSkgPT0gb2JqLiIpOworCisjZGVmaW5lIEJVSUxUSU5fUkVQUl9NRVRIT0RERUYgICAgXAorICAgIHsicmVwciIsIChQeUNGdW5jdGlvbilidWlsdGluX3JlcHIsIE1FVEhfTywgYnVpbHRpbl9yZXByX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihidWlsdGluX3N1bV9fZG9jX18sCisic3VtKCRtb2R1bGUsIGl0ZXJhYmxlLCBzdGFydD0wLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBzdW0gb2YgYSBcJ3N0YXJ0XCcgdmFsdWUgKGRlZmF1bHQ6IDApIHBsdXMgYW4gaXRlcmFibGUgb2YgbnVtYmVyc1xuIgorIlxuIgorIldoZW4gdGhlIGl0ZXJhYmxlIGlzIGVtcHR5LCByZXR1cm4gdGhlIHN0YXJ0IHZhbHVlLlxuIgorIlRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgc3BlY2lmaWNhbGx5IGZvciB1c2Ugd2l0aCBudW1lcmljIHZhbHVlcyBhbmQgbWF5XG4iCisicmVqZWN0IG5vbi1udW1lcmljIHR5cGVzLiIpOworCisjZGVmaW5lIEJVSUxUSU5fU1VNX01FVEhPRERFRiAgICBcCisgICAgeyJzdW0iLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9zdW0sIE1FVEhfVkFSQVJHUywgYnVpbHRpbl9zdW1fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5fc3VtX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKml0ZXJhYmxlLCBQeU9iamVjdCAqc3RhcnQpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9zdW0oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0ZXJhYmxlOworICAgIFB5T2JqZWN0ICpzdGFydCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLAorICAgICAgICAxLCAyLAorICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3N1bV9pbXBsKG1vZHVsZSwgaXRlcmFibGUsIHN0YXJ0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoYnVpbHRpbl9pc2luc3RhbmNlX19kb2NfXywKKyJpc2luc3RhbmNlKCRtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gd2hldGhlciBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyBvciBvZiBhIHN1YmNsYXNzIHRoZXJlb2YuXG4iCisiXG4iCisiQSB0dXBsZSwgYXMgaW4gYGBpc2luc3RhbmNlKHgsIChBLCBCLCAuLi4pKWBgLCBtYXkgYmUgZ2l2ZW4gYXMgdGhlIHRhcmdldCB0b1xuIgorImNoZWNrIGFnYWluc3QuIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGlzaW5zdGFuY2UoeCwgQSkgb3IgaXNpbnN0YW5jZSh4LCBCKVxuIgorIm9yIC4uLmBgIGV0Yy4iKTsKKworI2RlZmluZSBCVUlMVElOX0lTSU5TVEFOQ0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImlzaW5zdGFuY2UiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9pc2luc3RhbmNlLCBNRVRIX1ZBUkFSR1MsIGJ1aWx0aW5faXNpbnN0YW5jZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pc2luc3RhbmNlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbGFzc19vcl90dXBsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsdGluX2lzaW5zdGFuY2UoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGU7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc2luc3RhbmNlIiwKKyAgICAgICAgMiwgMiwKKyAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNpbnN0YW5jZV9pbXBsKG1vZHVsZSwgb2JqLCBjbGFzc19vcl90dXBsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKGJ1aWx0aW5faXNzdWJjbGFzc19fZG9jX18sCisiaXNzdWJjbGFzcygkbW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHdoZXRoZXIgXCdjbHNcJyBpcyBhIGRlcml2ZWQgZnJvbSBhbm90aGVyIGNsYXNzIG9yIGlzIHRoZSBzYW1lIGNsYXNzLlxuIgorIlxuIgorIkEgdHVwbGUsIGFzIGluIGBgaXNzdWJjbGFzcyh4LCAoQSwgQiwgLi4uKSlgYCwgbWF5IGJlIGdpdmVuIGFzIHRoZSB0YXJnZXQgdG9cbiIKKyJjaGVjayBhZ2FpbnN0LiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBpc3N1YmNsYXNzKHgsIEEpIG9yIGlzc3ViY2xhc3MoeCwgQilcbiIKKyJvciAuLi5gYCBldGMuIik7CisKKyNkZWZpbmUgQlVJTFRJTl9JU1NVQkNMQVNTX01FVEhPRERFRiAgICBcCisgICAgeyJpc3N1YmNsYXNzIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5faXNzdWJjbGFzcywgTUVUSF9WQVJBUkdTLCBidWlsdGluX2lzc3ViY2xhc3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWx0aW5faXNzdWJjbGFzc19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpjbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xhc3Nfb3JfdHVwbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnVpbHRpbl9pc3N1YmNsYXNzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjbHM7CisgICAgUHlPYmplY3QgKmNsYXNzX29yX3R1cGxlOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNzdWJjbGFzcyIsCisgICAgICAgIDIsIDIsCisgICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzc3ViY2xhc3NfaW1wbChtb2R1bGUsIGNscywgY2xhc3Nfb3JfdHVwbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmVjMzM5OWMwYWVlOThkNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmggYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3NzY2NQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaApAQCAtMCwwICsxLDM1NSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9pbXBfbG9ja19oZWxkX19kb2NfXywKKyJsb2NrX2hlbGQoJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZSBGYWxzZS5cbiIKKyJcbiIKKyJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuIik7CisKKyNkZWZpbmUgX0lNUF9MT0NLX0hFTERfTUVUSE9EREVGICAgIFwKKyAgICB7ImxvY2tfaGVsZCIsIChQeUNGdW5jdGlvbilfaW1wX2xvY2tfaGVsZCwgTUVUSF9OT0FSR1MsIF9pbXBfbG9ja19oZWxkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2xvY2tfaGVsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9sb2NrX2hlbGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2ltcF9sb2NrX2hlbGRfaW1wbChtb2R1bGUpOworfQorCitQeURvY19TVFJWQVIoX2ltcF9hY3F1aXJlX2xvY2tfX2RvY19fLAorImFjcXVpcmVfbG9jaygkbW9kdWxlLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWNxdWlyZXMgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrIGZvciB0aGUgY3VycmVudCB0aHJlYWQuXG4iCisiXG4iCisiVGhpcyBsb2NrIHNob3VsZCBiZSB1c2VkIGJ5IGltcG9ydCBob29rcyB0byBlbnN1cmUgdGhyZWFkLXNhZmV0eSB3aGVuIGltcG9ydGluZ1xuIgorIm1vZHVsZXMuIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JTVBfQUNRVUlSRV9MT0NLX01FVEhPRERFRiAgICBcCisgICAgeyJhY3F1aXJlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9hY3F1aXJlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX2FjcXVpcmVfbG9ja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfYWNxdWlyZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pbXBfYWNxdWlyZV9sb2NrX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfcmVsZWFzZV9sb2NrX19kb2NfXywKKyJyZWxlYXNlX2xvY2soJG1vZHVsZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbGVhc2UgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrLlxuIgorIlxuIgorIk9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOworCisjZGVmaW5lIF9JTVBfUkVMRUFTRV9MT0NLX01FVEhPRERFRiAgICBcCisgICAgeyJyZWxlYXNlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9yZWxlYXNlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX3JlbGVhc2VfbG9ja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9yZWxlYXNlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfcmVsZWFzZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pbXBfcmVsZWFzZV9sb2NrX2ltcGwobW9kdWxlKTsKK30KKworUHlEb2NfU1RSVkFSKF9pbXBfX2ZpeF9jb19maWxlbmFtZV9fZG9jX18sCisiX2ZpeF9jb19maWxlbmFtZSgkbW9kdWxlLCBjb2RlLCBwYXRoLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2hhbmdlcyBjb2RlLmNvX2ZpbGVuYW1lIHRvIHNwZWNpZnkgdGhlIHBhc3NlZC1pbiBmaWxlIHBhdGguXG4iCisiXG4iCisiICBjb2RlXG4iCisiICAgIENvZGUgb2JqZWN0IHRvIGNoYW5nZS5cbiIKKyIgIHBhdGhcbiIKKyIgICAgRmlsZSBwYXRoIHRvIHVzZS4iKTsKKworI2RlZmluZSBfSU1QX19GSVhfQ09fRklMRU5BTUVfTUVUSE9EREVGICAgIFwKKyAgICB7Il9maXhfY29fZmlsZW5hbWUiLCAoUHlDRnVuY3Rpb24pX2ltcF9fZml4X2NvX2ZpbGVuYW1lLCBNRVRIX1ZBUkFSR1MsIF9pbXBfX2ZpeF9jb19maWxlbmFtZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlDb2RlT2JqZWN0ICpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9fZml4X2NvX2ZpbGVuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5Q29kZU9iamVjdCAqY29kZTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAorICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChtb2R1bGUsIGNvZGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2NyZWF0ZV9idWlsdGluX19kb2NfXywKKyJjcmVhdGVfYnVpbHRpbigkbW9kdWxlLCBzcGVjLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9DUkVBVEVfQlVJTFRJTl9NRVRIT0RERUYgICAgXAorICAgIHsiY3JlYXRlX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9jcmVhdGVfYnVpbHRpbiwgTUVUSF9PLCBfaW1wX2NyZWF0ZV9idWlsdGluX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX18sCisiZXh0ZW5zaW9uX3N1ZmZpeGVzKCRtb2R1bGUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4iKTsKKworI2RlZmluZSBfSU1QX0VYVEVOU0lPTl9TVUZGSVhFU19NRVRIT0RERUYgICAgXAorICAgIHsiZXh0ZW5zaW9uX3N1ZmZpeGVzIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzLCBNRVRIX05PQVJHUywgX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2V4dGVuc2lvbl9zdWZmaXhlcyhQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19pbXBsKG1vZHVsZSk7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2luaXRfZnJvemVuX19kb2NfXywKKyJpbml0X2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5pdGlhbGl6ZXMgYSBmcm96ZW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfSU5JVF9GUk9aRU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImluaXRfZnJvemVuIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaW5pdF9mcm96ZW4sIE1FVEhfTywgX2ltcF9pbml0X2Zyb3plbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pbml0X2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaW5pdF9mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaW5pdF9mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfXywKKyJnZXRfZnJvemVuX29iamVjdCgkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ3JlYXRlIGEgY29kZSBvYmplY3QgZm9yIGEgZnJvemVuIG1vZHVsZS4iKTsKKworI2RlZmluZSBfSU1QX0dFVF9GUk9aRU5fT0JKRUNUX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfZnJvemVuX29iamVjdCIsIChQeUNGdW5jdGlvbilfaW1wX2dldF9mcm96ZW5fb2JqZWN0LCBNRVRIX08sIF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2dldF9mcm96ZW5fb2JqZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pc19mcm96ZW5fcGFja2FnZV9fZG9jX18sCisiaXNfZnJvemVuX3BhY2thZ2UoJG1vZHVsZSwgbmFtZSwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgaXMgb2YgYSBmcm96ZW4gcGFja2FnZS4iKTsKKworI2RlZmluZSBfSU1QX0lTX0ZST1pFTl9QQUNLQUdFX01FVEhPRERFRiAgICBcCisgICAgeyJpc19mcm96ZW5fcGFja2FnZSIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2Zyb3plbl9wYWNrYWdlLCBNRVRIX08sIF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2Zyb3plbl9wYWNrYWdlKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pc19idWlsdGluX19kb2NfXywKKyJpc19idWlsdGluKCRtb2R1bGUsIG5hbWUsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfSVNfQlVJTFRJTl9NRVRIT0RERUYgICAgXAorICAgIHsiaXNfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2J1aWx0aW4sIE1FVEhfTywgX2ltcF9pc19idWlsdGluX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2J1aWx0aW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19idWlsdGluX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2ltcF9pc19mcm96ZW5fX2RvY19fLAorImlzX2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGZyb3plbiBtb2R1bGUuIik7CisKKyNkZWZpbmUgX0lNUF9JU19GUk9aRU5fTUVUSE9EREVGICAgIFwKKyAgICB7ImlzX2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2Zyb3plbiwgTUVUSF9PLCBfaW1wX2lzX2Zyb3plbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9pc19mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2lzX2Zyb3plbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjaWYgZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykKKworUHlEb2NfU1RSVkFSKF9pbXBfY3JlYXRlX2R5bmFtaWNfX2RvY19fLAorImNyZWF0ZV9keW5hbWljKCRtb2R1bGUsIHNwZWMsIGZpbGU9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIgorIkNyZWF0ZSBhbiBleHRlbnNpb24gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGICAgIFwKKyAgICB7ImNyZWF0ZV9keW5hbWljIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfY3JlYXRlX2R5bmFtaWMsIE1FVEhfVkFSQVJHUywgX2ltcF9jcmVhdGVfZHluYW1pY19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2ltcF9jcmVhdGVfZHluYW1pY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzcGVjLCBQeU9iamVjdCAqZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2NyZWF0ZV9keW5hbWljKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzcGVjOworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImNyZWF0ZV9keW5hbWljIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJnNwZWMsICZmaWxlKSkKKyAgICAgICAgZ290byBleGl0OworICAgIHJldHVybl92YWx1ZSA9IF9pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChtb2R1bGUsIHNwZWMsIGZpbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykKKworUHlEb2NfU1RSVkFSKF9pbXBfZXhlY19keW5hbWljX19kb2NfXywKKyJleGVjX2R5bmFtaWMoJG1vZHVsZSwgbW9kLCAvKVxuIgorIi0tXG4iCisiXG4iCisiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjX2R5bmFtaWMiLCAoUHlDRnVuY3Rpb24pX2ltcF9leGVjX2R5bmFtaWMsIE1FVEhfTywgX2ltcF9leGVjX2R5bmFtaWNfX2RvY19ffSwKKworc3RhdGljIGludAorX2ltcF9leGVjX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXhlY19keW5hbWljKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2R5bmFtaWNfaW1wbChtb2R1bGUsIG1vZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRFlOQU1JQ19MT0FESU5HKSAqLworCitQeURvY19TVFJWQVIoX2ltcF9leGVjX2J1aWx0aW5fX2RvY19fLAorImV4ZWNfYnVpbHRpbigkbW9kdWxlLCBtb2QsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJJbml0aWFsaXplIGEgYnVpbHQtaW4gbW9kdWxlLiIpOworCisjZGVmaW5lIF9JTVBfRVhFQ19CVUlMVElOX01FVEhPRERFRiAgICBcCisgICAgeyJleGVjX2J1aWx0aW4iLCAoUHlDRnVuY3Rpb24pX2ltcF9leGVjX2J1aWx0aW4sIE1FVEhfTywgX2ltcF9leGVjX2J1aWx0aW5fX2RvY19ffSwKKworc3RhdGljIGludAorX2ltcF9leGVjX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pbXBfZXhlY19idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptb2QpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IF9yZXR1cm5fdmFsdWU7CisKKyAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2J1aWx0aW5faW1wbChtb2R1bGUsIG1vZCk7CisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZm5kZWYgX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JTVBfQ1JFQVRFX0RZTkFNSUNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzIzMjRhNWU0NmNkZmM0YiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY29kZWNzLmMgYi9QeXRob24vY29kZWNzLmMKaW5kZXggMjdmMmFlYi4uZDkwYmY3MyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvZGVjcy5jCisrKyBiL1B5dGhvbi9jb2RlY3MuYwpAQCAtOSw2ICs5LDcgQEAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAidWNuaGFzaC5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAKIGNvbnN0IGNoYXIgKlB5X2hleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKQEAgLTg1Niw2ICs4NTcsMTE4IEBACiAKIFB5T2JqZWN0ICpQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKIHsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0OworICAgIFB5X3NzaXplX3QgZW5kOworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKKyAgICBpbnQgcmVzc2l6ZTsKKyAgICBQeV9VQ1M0IGM7CisKKyAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKGV4YywgKFB5VHlwZU9iamVjdCAqKVB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKKyAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKHAgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19Bc1N0cmluZyhvYmplY3QpKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXMgPSBQeVVuaWNvZGVfTmV3KDQgKiAoZW5kIC0gc3RhcnQpLCAxMjcpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgb3V0cCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyssIG91dHAgKz0gNCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gcFtpXTsKKyAgICAgICAgICAgIG91dHBbMF0gPSAnXFwnOworICAgICAgICAgICAgb3V0cFsxXSA9ICd4JzsKKyAgICAgICAgICAgIG91dHBbMl0gPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICAgICBvdXRwWzNdID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhleGMsIChQeVR5cGVPYmplY3QgKilQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChQeU9iamVjdF9UeXBlQ2hlY2soZXhjLCAoUHlUeXBlT2JqZWN0ICopUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KSkKKyAgICAgICAgZW5kID0gc3RhcnQgKyBQWV9TU0laRV9UX01BWCAvICgxKzErOCk7CisgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOworICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICByZXNzaXplICs9IDErMSs4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDApIHsKKyAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErMjsKKyAgICB9CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOworICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKKyAgICAgICAgKm91dHArKyA9ICdcXCc7CisgICAgICAgIGlmIChjID49IDB4MDAwMTAwMDApIHsKKyAgICAgICAgICAgICpvdXRwKysgPSAnVSc7CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjI0KSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjApJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKKyAgICAgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjEyKSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7CisgICAgICAgICAgICAqb3V0cCsrID0gJ3UnOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MTIpJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpvdXRwKysgPSAneCc7CisgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbKGM+PjQpJjB4Zl07CisgICAgICAgICpvdXRwKysgPSBQeV9oZXhkaWdpdHNbYyYweGZdOworICAgIH0KKworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7Cit9CisKK3N0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKKworUHlPYmplY3QgKlB5Q29kZWNfTmFtZVJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKK3sKICAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKGV4YywgKFB5VHlwZU9iamVjdCAqKVB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKICAgICAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgICAgICBQeU9iamVjdCAqb2JqZWN0OwpAQCAtODY1LDM2ICs5NzgsNTYgQEAKICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgdW5zaWduZWQgY2hhciAqb3V0cDsKICAgICAgICAgUHlfc3NpemVfdCByZXNzaXplOworICAgICAgICBpbnQgcmVwbHNpemU7CiAgICAgICAgIFB5X1VDUzQgYzsKKyAgICAgICAgY2hhciBidWZmZXJbMjU2XTsgLyogTkFNRV9NQVhMRU4gKi8KICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kKGV4YywgJmVuZCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCEob2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0KGV4YykpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gKDErMSs4KSkKLSAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUFlfU1NJWkVfVF9NQVggLyAoMSsxKzgpOworICAgICAgICBpZiAoIXVjbmhhc2hfQ0FQSSkgeworICAgICAgICAgICAgLyogbG9hZCB0aGUgdW5pY29kZSBkYXRhIG1vZHVsZSAqLworICAgICAgICAgICAgdWNuaGFzaF9DQVBJID0gKF9QeVVuaWNvZGVfTmFtZV9DQVBJICopUHlDYXBzdWxlX0ltcG9ydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOworICAgICAgICAgICAgaWYgKCF1Y25oYXNoX0NBUEkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKICAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7Ci0gICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKKyAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEktPmdldG5hbWUoTlVMTCwgYywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgMSkpIHsKKyAgICAgICAgICAgICAgICByZXBsc2l6ZSA9IDErMSsxKyhpbnQpc3RybGVuKGJ1ZmZlcikrMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgICAgIHJlcGxzaXplID0gMSsxKzg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID49IDB4MTAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErNDsKKyAgICAgICAgICAgICAgICByZXBsc2l6ZSA9IDErMSs0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzI7CisgICAgICAgICAgICAgICAgcmVwbHNpemUgPSAxKzErMjsKKyAgICAgICAgICAgIGlmIChyZXNzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBsc2l6ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJlc3NpemUgKz0gcmVwbHNpemU7CiAgICAgICAgIH0KKyAgICAgICAgZW5kID0gaTsKICAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOwotICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOworICAgICAgICBpZiAocmVzPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgZm9yIChpID0gc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpOwogICAgICAgICAgICAgaSA8IGVuZDsgKytpKSB7CiAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmplY3QsIGkpOwogICAgICAgICAgICAgKm91dHArKyA9ICdcXCc7CisgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJLT5nZXRuYW1lKE5VTEwsIGMsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIDEpKSB7CisgICAgICAgICAgICAgICAgKm91dHArKyA9ICdOJzsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ3snOworICAgICAgICAgICAgICAgIHN0cmNweSgoY2hhciAqKW91dHAsIGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgb3V0cCArPSBzdHJsZW4oYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gJ30nOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGMgPj0gMHgwMDAxMDAwMCkgewogICAgICAgICAgICAgICAgICpvdXRwKysgPSAnVSc7CiAgICAgICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1soYz4+MjgpJjB4Zl07CkBAIC05MTUsNiArMTA0OCw3IEBACiAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzW2MmMHhmXTsKICAgICAgICAgfQogCisgICAgICAgIGFzc2VydChvdXRwID09IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcykgKyByZXNzaXplKTsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBlbmQpOwogICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKQEAgLTkyNiw2ICsxMDYwLDcgQEAKICAgICB9CiB9CiAKKyNkZWZpbmUgRU5DX1VOS05PV04gICAgIC0xCiAjZGVmaW5lIEVOQ19VVEY4ICAgICAgICAwCiAjZGVmaW5lIEVOQ19VVEYxNkJFICAgICAxCiAjZGVmaW5lIEVOQ19VVEYxNkxFICAgICAyCkBAIC05NDEsNyArMTA3NiwxMSBAQAogICAgICAgICBlbmNvZGluZyArPSAzOwogICAgICAgICBpZiAoKmVuY29kaW5nID09ICctJyB8fCAqZW5jb2RpbmcgPT0gJ18nICkKICAgICAgICAgICAgIGVuY29kaW5nKys7Ci0gICAgICAgIGlmIChlbmNvZGluZ1swXSA9PSAnMScgJiYgZW5jb2RpbmdbMV0gPT0gJzYnKSB7CisgICAgICAgIGlmIChlbmNvZGluZ1swXSA9PSAnOCcgJiYgZW5jb2RpbmdbMV0gPT0gJ1wwJykgeworICAgICAgICAgICAgKmJ5dGVsZW5ndGggPSAzOworICAgICAgICAgICAgcmV0dXJuIEVOQ19VVEY4OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVuY29kaW5nWzBdID09ICcxJyAmJiBlbmNvZGluZ1sxXSA9PSAnNicpIHsKICAgICAgICAgICAgIGVuY29kaW5nICs9IDI7CiAgICAgICAgICAgICAqYnl0ZWxlbmd0aCA9IDI7CiAgICAgICAgICAgICBpZiAoKmVuY29kaW5nID09ICdcMCcpIHsKQEAgLTk4MCw5ICsxMTE5LDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogdXRmLTggKi8KLSAgICAqYnl0ZWxlbmd0aCA9IDM7Ci0gICAgcmV0dXJuIEVOQ19VVEY4OworICAgIGVsc2UgaWYgKHN0cmNtcChlbmNvZGluZywgIkNQX1VURjgiKSA9PSAwKSB7CisgICAgICAgICpieXRlbGVuZ3RoID0gMzsKKyAgICAgICAgcmV0dXJuIEVOQ19VVEY4OworICAgIH0KKyAgICByZXR1cm4gRU5DX1VOS05PV047CiB9CiAKIC8qIFRoaXMgaGFuZGxlciBpcyBkZWNsYXJlZCBzdGF0aWMgdW50aWwgc29tZW9uZSBkZW1vbnN0cmF0ZXMKQEAgLTEwMjAsNiArMTE2MSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGNvZGUgPSBnZXRfc3RhbmRhcmRfZW5jb2RpbmcoZW5jb2RpbmcsICZieXRlbGVuZ3RoKTsKICAgICAgICAgUHlfREVDUkVGKGVuY29kZSk7CisgICAgICAgIGlmIChjb2RlID09IEVOQ19VTktOT1dOKSB7CisgICAgICAgICAgICAvKiBOb3Qgc3VwcG9ydGVkLCBmYWlsIHdpdGggb3JpZ2luYWwgZXhjZXB0aW9uICovCisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOworICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChlbmQgLSBzdGFydCA+IFBZX1NTSVpFX1RfTUFYIC8gYnl0ZWxlbmd0aCkKICAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgUFlfU1NJWkVfVF9NQVggLyBieXRlbGVuZ3RoOwpAQCAtMTA5Niw2ICsxMjQzLDEyIEBACiAgICAgICAgIH0KICAgICAgICAgY29kZSA9IGdldF9zdGFuZGFyZF9lbmNvZGluZyhlbmNvZGluZywgJmJ5dGVsZW5ndGgpOwogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlKTsKKyAgICAgICAgaWYgKGNvZGUgPT0gRU5DX1VOS05PV04pIHsKKyAgICAgICAgICAgIC8qIE5vdCBzdXBwb3J0ZWQsIGZhaWwgd2l0aCBvcmlnaW5hbCBleGNlcHRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2JqZWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgLyogVHJ5IGRlY29kaW5nIGEgc2luZ2xlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIuIElmCiAgICAgICAgICAgIHRoZXJlIGFyZSBtb3JlLCBsZXQgdGhlIGNvZGVjIGNhbGwgdXMgYWdhaW4uICovCkBAIC0xMjUyLDYgKzE0MDUsMTEgQEAKICAgICByZXR1cm4gUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKGV4Yyk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqbmFtZXJlcGxhY2VfZXJyb3JzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjKQoreworICAgIHJldHVybiBQeUNvZGVjX05hbWVSZXBsYWNlRXJyb3JzKGV4Yyk7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqc3Vycm9nYXRlcGFzc19lcnJvcnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGMpCiB7CiAgICAgcmV0dXJuIFB5Q29kZWNfU3Vycm9nYXRlUGFzc0Vycm9ycyhleGMpOwpAQCAtMTMxNyw4ICsxNDc1LDE5IEBACiAgICAgICAgICAgICAgICAgYmFja3NsYXNocmVwbGFjZV9lcnJvcnMsCiAgICAgICAgICAgICAgICAgTUVUSF9PLAogICAgICAgICAgICAgICAgIFB5RG9jX1NUUigiSW1wbGVtZW50cyB0aGUgJ2JhY2tzbGFzaHJlcGxhY2UnIGVycm9yIGhhbmRsaW5nLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGljaCByZXBsYWNlcyBtYWxmb3JtZWQgZGF0YSB3aXRoIGEgYmFja3NsYXNoZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZXNjYXBlIHNlcXVlbmNlLiIpCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lcmVwbGFjZSIsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWVyZXBsYWNlX2Vycm9ycyIsCisgICAgICAgICAgICAgICAgbmFtZXJlcGxhY2VfZXJyb3JzLAorICAgICAgICAgICAgICAgIE1FVEhfTywKKyAgICAgICAgICAgICAgICBQeURvY19TVFIoIkltcGxlbWVudHMgdGhlICduYW1lcmVwbGFjZScgZXJyb3IgaGFuZGxpbmcsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoaWNoIHJlcGxhY2VzIGFuIHVuZW5jb2RhYmxlIGNoYXJhY3RlciB3aXRoIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3NsYXNoZWQgZXNjYXBlIHNlcXVlbmNlLiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcXE57Li4ufSBlc2NhcGUgc2VxdWVuY2UuIikKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbXBpbGUuYyBiL1B5dGhvbi9jb21waWxlLmMKaW5kZXggNjg2NTEwYy4uOTdiYjEyZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbXBpbGUuYworKysgYi9QeXRob24vY29tcGlsZS5jCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAotaW50IFB5X09wdGltaXplRmxhZyA9IDA7Ci0KICNkZWZpbmUgREVGQVVMVF9CTE9DS19TSVpFIDE2CiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tTIDgKICNkZWZpbmUgREVGQVVMVF9DT0RFX1NJWkUgMTI4CkBAIC05NCw2ICs5Miw3IEBACiAgICAgQ09NUElMRVJfU0NPUEVfTU9EVUxFLAogICAgIENPTVBJTEVSX1NDT1BFX0NMQVNTLAogICAgIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLAorICAgIENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OLAogICAgIENPTVBJTEVSX1NDT1BFX0xBTUJEQSwKICAgICBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAogfTsKQEAgLTE5NSwxMSArMTk0LDExIEBACiBzdGF0aWMgaW50IGV4cHJfY29uc3RhbnQoc3RydWN0IGNvbXBpbGVyICosIGV4cHJfdHkpOwogCiBzdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgUHlfc3NpemVfdCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3Jkcyk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9zZXRfcXVhbG5hbWUoc3RydWN0IGNvbXBpbGVyICopOwogCkBAIC02NzcsNyArNjc2LDkgQEAKICAgICAgICAgcGFyZW50ID0gKHN0cnVjdCBjb21waWxlcl91bml0ICopUHlDYXBzdWxlX0dldFBvaW50ZXIoY2Fwc3VsZSwgQ0FQU1VMRV9OQU1FKTsKICAgICAgICAgYXNzZXJ0KHBhcmVudCk7CiAKLSAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTiB8fCB1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpIHsKKyAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9GVU5DVElPTgorICAgICAgICAgICAgfHwgdS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OCisgICAgICAgICAgICB8fCB1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpIHsKICAgICAgICAgICAgIGFzc2VydCh1LT51X25hbWUpOwogICAgICAgICAgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUocGFyZW50LT51X3ByaXZhdGUsIHUtPnVfbmFtZSk7CiAgICAgICAgICAgICBpZiAoIW1hbmdsZWQpCkBAIC02OTEsNiArNjkyLDcgQEAKIAogICAgICAgICBpZiAoIWZvcmNlX2dsb2JhbCkgewogICAgICAgICAgICAgaWYgKHBhcmVudC0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OCisgICAgICAgICAgICAgICAgfHwgcGFyZW50LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04KICAgICAgICAgICAgICAgICB8fCBwYXJlbnQtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9MQU1CREEpIHsKICAgICAgICAgICAgICAgICBkb3RfbG9jYWxzX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZkb3RfbG9jYWxzKTsKICAgICAgICAgICAgICAgICBpZiAoZG90X2xvY2Fsc19zdHIgPT0gTlVMTCkKQEAgLTg4MSw2ICs4ODMsNyBAQAogCiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICBjYXNlIEJJTkFSWV9NVUxUSVBMWToKKyAgICAgICAgY2FzZSBCSU5BUllfTUFUUklYX01VTFRJUExZOgogICAgICAgICBjYXNlIEJJTkFSWV9NT0RVTE86CiAgICAgICAgIGNhc2UgQklOQVJZX0FERDoKICAgICAgICAgY2FzZSBCSU5BUllfU1VCVFJBQ1Q6CkBAIC04OTUsMTIgKzg5OCwxMSBAQAogICAgICAgICBjYXNlIElOUExBQ0VfQUREOgogICAgICAgICBjYXNlIElOUExBQ0VfU1VCVFJBQ1Q6CiAgICAgICAgIGNhc2UgSU5QTEFDRV9NVUxUSVBMWToKKyAgICAgICAgY2FzZSBJTlBMQUNFX01BVFJJWF9NVUxUSVBMWToKICAgICAgICAgY2FzZSBJTlBMQUNFX01PRFVMTzoKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBTVE9SRV9TVUJTQ1I6CiAgICAgICAgICAgICByZXR1cm4gLTM7Ci0gICAgICAgIGNhc2UgU1RPUkVfTUFQOgotICAgICAgICAgICAgcmV0dXJuIC0yOwogICAgICAgICBjYXNlIERFTEVURV9TVUJTQ1I6CiAgICAgICAgICAgICByZXR1cm4gLTI7CiAKQEAgLTkyOSw3ICs5MzEsOSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKICAgICAgICAgICAgIHJldHVybiA3OwotICAgICAgICBjYXNlIFdJVEhfQ0xFQU5VUDoKKyAgICAgICAgY2FzZSBXSVRIX0NMRUFOVVBfU1RBUlQ6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBXSVRIX0NMRUFOVVBfRklOSVNIOgogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBYWFggU29tZXRpbWVzIG1vcmUgKi8KICAgICAgICAgY2FzZSBSRVRVUk5fVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC05NzMsOCArOTc3LDE1IEBACiAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6CiAgICAgICAgICAgICByZXR1cm4gMS1vcGFyZzsKKyAgICAgICAgY2FzZSBCVUlMRF9MSVNUX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9UVVBMRV9VTlBBQ0s6CisgICAgICAgIGNhc2UgQlVJTERfU0VUX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9NQVBfVU5QQUNLOgorICAgICAgICAgICAgcmV0dXJuIDEgLSBvcGFyZzsKKyAgICAgICAgY2FzZSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDoKKyAgICAgICAgICAgIHJldHVybiAxIC0gKG9wYXJnICYgMHhGRik7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQOgotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICByZXR1cm4gMSAtIDIqb3Bhcmc7CiAgICAgICAgIGNhc2UgTE9BRF9BVFRSOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKQEAgLTEwNDMsNiArMTA1NCwxOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIERFTEVURV9ERVJFRjoKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIEdFVF9BV0FJVEFCTEU6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgorICAgICAgICAgICAgcmV0dXJuIDY7CisgICAgICAgIGNhc2UgQkVGT1JFX0FTWU5DX1dJVEg6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHRVRfQUlURVI6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHRVRfQU5FWFQ6CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHRVRfWUlFTERfRlJPTV9JVEVSOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUFlfSU5WQUxJRF9TVEFDS19FRkZFQ1Q7CiAgICAgfQpAQCAtMTEyMyw4ICsxMTQ2LDEwIEBACiAKICAgICB2ID0gUHlEaWN0X0dldEl0ZW0oZGljdCwgdCk7CiAgICAgaWYgKCF2KSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHQpOwogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIGFyZyA9IFB5RGljdF9TaXplKGRpY3QpOwogICAgICAgICB2ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGFyZyk7CiAgICAgICAgIGlmICghdikgewpAQCAtMTUzNiwzMiArMTU2MSwzMSBAQAogICAgICAgICBWSVNJVChjLCBleHByLCBhbm5vdGF0aW9uKTsKICAgICAgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUoYy0+dS0+dV9wcml2YXRlLCBpZCk7CiAgICAgICAgIGlmICghbWFuZ2xlZCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChuYW1lcywgbWFuZ2xlZCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50CiBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxKiBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzKQogewotICAgIGludCBpLCBlcnJvcjsKKyAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGFyZ3MpOyBpKyspIHsKICAgICAgICAgYXJnX3R5IGFyZyA9IChhcmdfdHkpYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOwotICAgICAgICBlcnJvciA9IGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oCisgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgIGMsCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPmFyZywKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+YW5ub3RhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzKTsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50CkBAIC0xNTgxLDE2ICsxNjA1LDE2IEBACiAgICAgaWYgKCFuYW1lcykKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmFyZ3MsIG5hbWVzKSkKKyAgICBpZiAoIWNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb25zKGMsIGFyZ3MtPmFyZ3MsIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoYXJncy0+dmFyYXJnICYmIGFyZ3MtPnZhcmFyZy0+YW5ub3RhdGlvbiAmJgotICAgICAgICBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIGFyZ3MtPnZhcmFyZy0+YXJnLAorICAgICAgICAhY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbihjLCBhcmdzLT52YXJhcmctPmFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT52YXJhcmctPmFubm90YXRpb24sIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbnMoYywgYXJncy0+a3dvbmx5YXJncywgbmFtZXMpKQorICAgIGlmICghY29tcGlsZXJfdmlzaXRfYXJnYW5ub3RhdGlvbnMoYywgYXJncy0+a3dvbmx5YXJncywgbmFtZXMpKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlmIChhcmdzLT5rd2FyZyAmJiBhcmdzLT5rd2FyZy0+YW5ub3RhdGlvbiAmJgotICAgICAgICBjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIGFyZ3MtPmt3YXJnLT5hcmcsCisgICAgICAgICFjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIGFyZ3MtPmt3YXJnLT5hcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dhcmctPmFubm90YXRpb24sIG5hbWVzKSkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTU5OSw3ICsxNjIzLDcgQEAKICAgICAgICAgaWYgKCFyZXR1cm5fc3RyKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgaWYgKGNvbXBpbGVyX3Zpc2l0X2FyZ2Fubm90YXRpb24oYywgcmV0dXJuX3N0ciwgcmV0dXJucywgbmFtZXMpKSB7CisgICAgaWYgKCFjb21waWxlcl92aXNpdF9hcmdhbm5vdGF0aW9uKGMsIHJldHVybl9zdHIsIHJldHVybnMsIG5hbWVzKSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMTYzNywxOSArMTY2MSw0MyBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK2NvbXBpbGVyX2Z1bmN0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzLCBpbnQgaXNfYXN5bmMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpmaXJzdF9jb25zdCA9IFB5X05vbmU7Ci0gICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBzLT52LkZ1bmN0aW9uRGVmLmFyZ3M7Ci0gICAgZXhwcl90eSByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOwotICAgIGFzZGxfc2VxKiBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgYXJndW1lbnRzX3R5IGFyZ3M7CisgICAgZXhwcl90eSByZXR1cm5zOworICAgIGlkZW50aWZpZXIgbmFtZTsKKyAgICBhc2RsX3NlcSogZGVjb3M7CisgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgc3RtdF90eSBzdDsKICAgICBQeV9zc2l6ZV90IGksIG4sIGFyZ2xlbmd0aDsKICAgICBpbnQgZG9jc3RyaW5nLCBrd19kZWZhdWx0X2NvdW50ID0gMDsKICAgICBpbnQgbnVtX2Fubm90YXRpb25zOworICAgIGludCBzY29wZV90eXBlOwogCi0gICAgYXNzZXJ0KHMtPmtpbmQgPT0gRnVuY3Rpb25EZWZfa2luZCk7CisKKyAgICBpZiAoaXNfYXN5bmMpIHsKKyAgICAgICAgYXNzZXJ0KHMtPmtpbmQgPT0gQXN5bmNGdW5jdGlvbkRlZl9raW5kKTsKKworICAgICAgICBhcmdzID0gcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3M7CisgICAgICAgIHJldHVybnMgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYucmV0dXJuczsKKyAgICAgICAgZGVjb3MgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIG5hbWUgPSBzLT52LkFzeW5jRnVuY3Rpb25EZWYubmFtZTsKKyAgICAgICAgYm9keSA9IHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5OworCisgICAgICAgIHNjb3BlX3R5cGUgPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTjsKKyAgICB9IGVsc2UgeworICAgICAgICBhc3NlcnQocy0+a2luZCA9PSBGdW5jdGlvbkRlZl9raW5kKTsKKworICAgICAgICBhcmdzID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOworICAgICAgICByZXR1cm5zID0gcy0+di5GdW5jdGlvbkRlZi5yZXR1cm5zOworICAgICAgICBkZWNvcyA9IHMtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3Q7CisgICAgICAgIG5hbWUgPSBzLT52LkZ1bmN0aW9uRGVmLm5hbWU7CisgICAgICAgIGJvZHkgPSBzLT52LkZ1bmN0aW9uRGVmLmJvZHk7CisKKyAgICAgICAgc2NvcGVfdHlwZSA9IENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OOworICAgIH0KIAogICAgIGlmICghY29tcGlsZXJfZGVjb3JhdG9ycyhjLCBkZWNvcykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY2NywxMiArMTcxNSwxMiBAQAogICAgICAgICByZXR1cm4gMDsKICAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sICh2b2lkICopcywKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZV90eXBlLCAodm9pZCAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgMCk7CisgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoYm9keSwgMCk7CiAgICAgZG9jc3RyaW5nID0gY29tcGlsZXJfaXNkb2NzdHJpbmcoc3QpOwogICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpCiAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKQEAgLTE2ODMsMTAgKzE3MzEsMTAgQEAKIAogICAgIGMtPnUtPnVfYXJnY291bnQgPSBhc2RsX3NlcV9MRU4oYXJncy0+YXJncyk7CiAgICAgYy0+dS0+dV9rd29ubHlhcmdjb3VudCA9IGFzZGxfc2VxX0xFTihhcmdzLT5rd29ubHlhcmdzKTsKLSAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CisgICAgbiA9IGFzZGxfc2VxX0xFTihib2R5KTsKICAgICAvKiBpZiB0aGVyZSB3YXMgYSBkb2NzdHJpbmcsIHdlIG5lZWQgdG8gc2tpcCB0aGUgZmlyc3Qgc3RhdGVtZW50ICovCiAgICAgZm9yIChpID0gZG9jc3RyaW5nOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHMtPnYuRnVuY3Rpb25EZWYuYm9keSwgaSk7CisgICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKGJvZHksIGkpOwogICAgICAgICBWSVNJVF9JTl9TQ09QRShjLCBzdG10LCBzdCk7CiAgICAgfQogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CkBAIC0xNzAyLDYgKzE3NTAsOCBAQAogICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7CiAgICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKICAgICBhcmdsZW5ndGggfD0gbnVtX2Fubm90YXRpb25zIDw8IDE2OworICAgIGlmIChpc19hc3luYykKKyAgICAgICAgY28tPmNvX2ZsYWdzIHw9IENPX0NPUk9VVElORTsKICAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKQEAgLTE3MTEsNyArMTc2MSw3IEBACiAgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgMSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbXBpbGVyX25hbWVvcChjLCBzLT52LkZ1bmN0aW9uRGVmLm5hbWUsIFN0b3JlKTsKKyAgICByZXR1cm4gY29tcGlsZXJfbmFtZW9wKGMsIG5hbWUsIFN0b3JlKTsKIH0KIAogc3RhdGljIGludApAQCAtMTgyMSw5ICsxODcxLDcgQEAKICAgICAvKiA1LiBnZW5lcmF0ZSB0aGUgcmVzdCBvZiB0aGUgY29kZSBmb3IgdGhlIGNhbGwgKi8KICAgICBpZiAoIWNvbXBpbGVyX2NhbGxfaGVscGVyKGMsIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+di5DbGFzc0RlZi5rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmt3YXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT52LkNsYXNzRGVmLmtleXdvcmRzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiA2LiBhcHBseSBkZWNvcmF0b3JzICovCkBAIC0xOTM4LDcgKzE5ODYsNyBAQAogICAgIH0gZWxzZSBpZiAoY29uc3RhbnQgPT0gMSkgewogICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5JZi5ib2R5KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAocy0+di5JZi5vcmVsc2UpIHsKKyAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihzLT52LklmLm9yZWxzZSkpIHsKICAgICAgICAgICAgIG5leHQgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CiAgICAgICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTk0OCw4ICsxOTk2LDggQEAKICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5JZi50ZXN0KTsKICAgICAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgbmV4dCk7CiAgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LklmLmJvZHkpOwotICAgICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgZW5kKTsKLSAgICAgICAgaWYgKHMtPnYuSWYub3JlbHNlKSB7CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4ocy0+di5JZi5vcmVsc2UpKSB7CisgICAgICAgICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgZW5kKTsKICAgICAgICAgICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIG5leHQpOwogICAgICAgICAgICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuSWYub3JlbHNlKTsKICAgICAgICAgfQpAQCAtMTk4Niw2ICsyMDM0LDkyIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKworc3RhdGljIGludAorY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIHN0YXRpYyBQeU9iamVjdCAqc3RvcGl0ZXJfZXJyb3IgPSBOVUxMOworICAgIGJhc2ljYmxvY2sgKnRyeSwgKmV4Y2VwdCwgKmVuZCwgKmFmdGVyX3RyeSwgKnRyeV9jbGVhbnVwLAorICAgICAgICAgICAgICAgKmFmdGVyX2xvb3AsICphZnRlcl9sb29wX2Vsc2U7CisKKyAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICBzdG9waXRlcl9lcnJvciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJTdG9wQXN5bmNJdGVyYXRpb24iKTsKKyAgICAgICAgaWYgKHN0b3BpdGVyX2Vycm9yID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZXhjZXB0ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGVuZCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl90cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgdHJ5X2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYWZ0ZXJfbG9vcCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl9sb29wX2Vsc2UgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisKKyAgICBpZiAodHJ5ID09IE5VTEwgfHwgZXhjZXB0ID09IE5VTEwgfHwgZW5kID09IE5VTEwKKyAgICAgICAgICAgIHx8IGFmdGVyX3RyeSA9PSBOVUxMIHx8IHRyeV9jbGVhbnVwID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9MT09QLCBhZnRlcl9sb29wKTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIExPT1AsIHRyeSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgVklTSVQoYywgZXhwciwgcy0+di5Bc3luY0Zvci5pdGVyKTsKKyAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeSk7CisKKworICAgIEFERE9QX0pSRUwoYywgU0VUVVBfRVhDRVBULCBleGNlcHQpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCB0cnkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFERE9QKGMsIEdFVF9BTkVYVCk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQXN5bmNGb3IudGFyZ2V0KTsKKyAgICBBRERPUChjLCBQT1BfQkxPQ0spOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCB0cnkpOworICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBhZnRlcl90cnkpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOworICAgIEFERE9QKGMsIERVUF9UT1ApOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOworICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKKworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9FWENFUFQpOyAvKiBmb3IgU0VUVVBfRVhDRVBUICovCisgICAgQURET1AoYywgUE9QX0JMT0NLKTsgLyogZm9yIFNFVFVQX0xPT1AgKi8KKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIGFmdGVyX2xvb3BfZWxzZSk7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeV9jbGVhbnVwKTsKKyAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl90cnkpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LkFzeW5jRm9yLmJvZHkpOworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgdHJ5KTsKKworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7IC8qIGZvciBTRVRVUF9MT09QICovCisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBMT09QLCB0cnkpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfbG9vcCk7CisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCBlbmQpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfbG9vcF9lbHNlKTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Gb3Iub3JlbHNlKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGVuZCk7CisKKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIGludAogY29tcGlsZXJfd2hpbGUoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CkBAIC0yNTEyLDcgKzI2NDYsNyBAQAogCiAgICAgc3dpdGNoIChzLT5raW5kKSB7CiAgICAgY2FzZSBGdW5jdGlvbkRlZl9raW5kOgotICAgICAgICByZXR1cm4gY29tcGlsZXJfZnVuY3Rpb24oYywgcyk7CisgICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzLCAwKTsKICAgICBjYXNlIENsYXNzRGVmX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jbGFzcyhjLCBzKTsKICAgICBjYXNlIFJldHVybl9raW5kOgpAQCAtMjU5MSw3ICsyNzI1LDE0IEBACiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb250aW51ZShjKTsKICAgICBjYXNlIFdpdGhfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3dpdGgoYywgcywgMCk7CisgICAgY2FzZSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9mdW5jdGlvbihjLCBzLCAxKTsKKyAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfYXN5bmNfd2l0aChjLCBzLCAwKTsKKyAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hc3luY19mb3IoYywgcyk7CiAgICAgfQorCiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTI2MjQsNiArMjc2NSw4IEBACiAgICAgICAgIHJldHVybiBCSU5BUllfU1VCVFJBQ1Q7CiAgICAgY2FzZSBNdWx0OgogICAgICAgICByZXR1cm4gQklOQVJZX01VTFRJUExZOworICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgcmV0dXJuIEJJTkFSWV9NQVRSSVhfTVVMVElQTFk7CiAgICAgY2FzZSBEaXY6CiAgICAgICAgIHJldHVybiBCSU5BUllfVFJVRV9ESVZJREU7CiAgICAgY2FzZSBNb2Q6CkBAIC0yNjg4LDYgKzI4MzEsOCBAQAogICAgICAgICByZXR1cm4gSU5QTEFDRV9TVUJUUkFDVDsKICAgICBjYXNlIE11bHQ6CiAgICAgICAgIHJldHVybiBJTlBMQUNFX01VTFRJUExZOworICAgIGNhc2UgTWF0TXVsdDoKKyAgICAgICAgcmV0dXJuIElOUExBQ0VfTUFUUklYX01VTFRJUExZOwogICAgIGNhc2UgRGl2OgogICAgICAgICByZXR1cm4gSU5QTEFDRV9UUlVFX0RJVklERTsKICAgICBjYXNlIE1vZDoKQEAgLTI3NDksOCArMjg5NCw3IEBACiAgICAgICAgICAgICBvcHR5cGUgPSBPUF9GQVNUOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdMT0JBTF9JTVBMSUNJVDoKLSAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrICYmCi0gICAgICAgICAgICAhYy0+dS0+dV9zdGUtPnN0ZV91bm9wdGltaXplZCkKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSA9PSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgb3B0eXBlID0gT1BfR0xPQkFMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdMT0JBTF9FWFBMSUNJVDoKQEAgLTI4NjgsNjcgKzMwMTIsMTQ1IEBACiB9CiAKIHN0YXRpYyBpbnQKK3N0YXJ1bnBhY2tfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmVsdHMsCisgICAgICAgICAgICAgICAgICBpbnQgc2luZ2xlX29wLCBpbnQgaW5uZXJfb3AsIGludCBvdXRlcl9vcCkKK3sKKyAgICBQeV9zc2l6ZV90IG4gPSBhc2RsX3NlcV9MRU4oZWx0cyk7CisgICAgUHlfc3NpemVfdCBpLCBuc3ViaXRlbXMgPSAwLCBuc2VlbiA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChlbHRzLCBpKTsKKyAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKKyAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgIEFERE9QX0koYywgaW5uZXJfb3AsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1Yml0ZW1zKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CisgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBuc2VlbisrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChuc3ViaXRlbXMpIHsKKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIGlubmVyX29wLCBuc2Vlbik7CisgICAgICAgICAgICBuc3ViaXRlbXMrKzsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIG91dGVyX29wLCBuc3ViaXRlbXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIEFERE9QX0koYywgc2luZ2xlX29wLCBuc2Vlbik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2Fzc2lnbm1lbnRfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmVsdHMpCit7CisgICAgUHlfc3NpemVfdCBuID0gYXNkbF9zZXFfTEVOKGVsdHMpOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQgc2Vlbl9zdGFyID0gMDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGVsdHMsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCAmJiAhc2Vlbl9zdGFyKSB7CisgICAgICAgICAgICBpZiAoKGkgPj0gKDEgPDwgOCkpIHx8CisgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKKyAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4cHJlc3Npb25zIGluICIKKyAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKKyAgICAgICAgICAgIEFERE9QX0koYywgVU5QQUNLX0VYLCAoaSArICgobi1pLTEpIDw8IDgpKSk7CisgICAgICAgICAgICBzZWVuX3N0YXIgPSAxOworICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKKyAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghc2Vlbl9zdGFyKSB7CisgICAgICAgIEFERE9QX0koYywgVU5QQUNLX1NFUVVFTkNFLCBuKTsKKyAgICB9CisgICAgVklTSVRfU0VRKGMsIGV4cHIsIGVsdHMpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9saXN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlLT52Lkxpc3QuZWx0cyk7CisgICAgYXNkbF9zZXEgKmVsdHMgPSBlLT52Lkxpc3QuZWx0czsKICAgICBpZiAoZS0+di5MaXN0LmN0eCA9PSBTdG9yZSkgewotICAgICAgICBpbnQgaSwgc2Vlbl9zdGFyID0gMDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZS0+di5MaXN0LmVsdHMsIGkpOwotICAgICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQgJiYgIXNlZW5fc3RhcikgewotICAgICAgICAgICAgICAgIGlmICgoaSA+PSAoMSA8PCA4KSkgfHwKLSAgICAgICAgICAgICAgICAgICAgKG4taS0xID49IChJTlRfTUFYID4+IDgpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAidG9vIG1hbnkgZXhwcmVzc2lvbnMgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgInN0YXItdW5wYWNraW5nIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19FWCwgKGkgKyAoKG4taS0xKSA8PCA4KSkpOwotICAgICAgICAgICAgICAgIHNlZW5fc3RhciA9IDE7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGUtPnYuTGlzdC5lbHRzLCBpLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywKLSAgICAgICAgICAgICAgICAgICAgInR3byBzdGFycmVkIGV4cHJlc3Npb25zIGluIGFzc2lnbm1lbnQiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIXNlZW5fc3RhcikgewotICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfU0VRVUVOQ0UsIG4pOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBhc3NpZ25tZW50X2hlbHBlcihjLCBlbHRzKTsKICAgICB9Ci0gICAgVklTSVRfU0VRKGMsIGV4cHIsIGUtPnYuTGlzdC5lbHRzKTsKLSAgICBpZiAoZS0+di5MaXN0LmN0eCA9PSBMb2FkKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfTElTVCwgbik7CisgICAgZWxzZSBpZiAoZS0+di5MaXN0LmN0eCA9PSBMb2FkKSB7CisgICAgICAgIHJldHVybiBzdGFydW5wYWNrX2hlbHBlcihjLCBlbHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVJTERfTElTVCwgQlVJTERfVFVQTEUsIEJVSUxEX0xJU1RfVU5QQUNLKTsKICAgICB9CisgICAgZWxzZQorICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZWx0cyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX3R1cGxlKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgbiA9IGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpOworICAgIGFzZGxfc2VxICplbHRzID0gZS0+di5UdXBsZS5lbHRzOwogICAgIGlmIChlLT52LlR1cGxlLmN0eCA9PSBTdG9yZSkgewotICAgICAgICBpbnQgaSwgc2Vlbl9zdGFyID0gMDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoZS0+di5UdXBsZS5lbHRzLCBpKTsKLSAgICAgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kICYmICFzZWVuX3N0YXIpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGkgPj0gKDEgPDwgOCkpIHx8Ci0gICAgICAgICAgICAgICAgICAgIChuLWktMSA+PSAoSU5UX01BWCA+PiA4KSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGV4cHJlc3Npb25zIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdGFyLXVucGFja2luZyBhc3NpZ25tZW50Iik7Ci0gICAgICAgICAgICAgICAgQURET1BfSShjLCBVTlBBQ0tfRVgsIChpICsgKChuLWktMSkgPDwgOCkpKTsKLSAgICAgICAgICAgICAgICBzZWVuX3N0YXIgPSAxOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChlLT52LlR1cGxlLmVsdHMsIGksIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLAotICAgICAgICAgICAgICAgICAgICAidHdvIHN0YXJyZWQgZXhwcmVzc2lvbnMgaW4gYXNzaWdubWVudCIpOwotICAgICAgICAgICAgfQorICAgICAgICByZXR1cm4gYXNzaWdubWVudF9oZWxwZXIoYywgZWx0cyk7CisgICAgfQorICAgIGVsc2UgaWYgKGUtPnYuVHVwbGUuY3R4ID09IExvYWQpIHsKKyAgICAgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCVUlMRF9UVVBMRSwgQlVJTERfVFVQTEUsIEJVSUxEX1RVUExFX1VOUEFDSyk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGVsdHMpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zZXQoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgcmV0dXJuIHN0YXJ1bnBhY2tfaGVscGVyKGMsIGUtPnYuU2V0LmVsdHMsIEJVSUxEX1NFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVJTERfU0VULCBCVUlMRF9TRVRfVU5QQUNLKTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG4sIGNvbnRhaW5lcnMsIGVsZW1lbnRzOworICAgIGludCBpc191bnBhY2tpbmcgPSAwOworICAgIG4gPSBhc2RsX3NlcV9MRU4oZS0+di5EaWN0LnZhbHVlcyk7CisgICAgY29udGFpbmVycyA9IDA7CisgICAgZWxlbWVudHMgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgaXNfdW5wYWNraW5nID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSA9PSBOVUxMOworICAgICAgICBpZiAoZWxlbWVudHMgPT0gMHhGRkZGIHx8IChlbGVtZW50cyAmJiBpc191bnBhY2tpbmcpKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgZWxlbWVudHMpOworICAgICAgICAgICAgY29udGFpbmVycysrOworICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGlmICghc2Vlbl9zdGFyKSB7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIFVOUEFDS19TRVFVRU5DRSwgbik7CisgICAgICAgIGlmIChpc191bnBhY2tpbmcpIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgICAgICBjb250YWluZXJzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQotICAgIFZJU0lUX1NFUShjLCBleHByLCBlLT52LlR1cGxlLmVsdHMpOwotICAgIGlmIChlLT52LlR1cGxlLmN0eCA9PSBMb2FkKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG4pOworICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgY29udGFpbmVycysrOworICAgIH0KKyAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldworICAgICAqIGRpY3QuICBJZiB0aGVyZSBpcyBvbmUgZGljdCBhbmQgaXQncyBhbiB1bnBhY2tpbmcsIHRoZW4gaXQgbmVlZHMKKyAgICAgKiB0byBiZSBjb3BpZWQgaW50byBhIG5ldyBkaWN0LiIgKi8KKyAgICB3aGlsZSAoY29udGFpbmVycyA+IDEgfHwgaXNfdW5wYWNraW5nKSB7CisgICAgICAgIGludCBvcGFyZyA9IGNvbnRhaW5lcnMgPCAyNTUgPyBjb250YWluZXJzIDogMjU1OworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0ssIG9wYXJnKTsKKyAgICAgICAgY29udGFpbmVycyAtPSAob3BhcmcgLSAxKTsKKyAgICAgICAgaXNfdW5wYWNraW5nID0gMDsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0yOTg0LDkgKzMyMDYsNyBAQAogICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQ2FsbC5mdW5jKTsKICAgICByZXR1cm4gY29tcGlsZXJfY2FsbF9oZWxwZXIoYywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnYuQ2FsbC5rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLnN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwua3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAogLyogc2hhcmVkIGNvZGUgYmV0d2VlbiBjb21waWxlcl9jYWxsIGFuZCBjb21waWxlcl9jbGFzcyAqLwpAQCAtMjk5NCwyNiArMzIxNCwxMDIgQEAKIGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLwogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAotICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBrd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpCiB7CiAgICAgaW50IGNvZGUgPSAwOworICAgIFB5X3NzaXplX3QgbmVsdHMsIGksIG5zZWVuLCBua3c7CiAKLSAgICBuICs9IGFzZGxfc2VxX0xFTihhcmdzKTsKLSAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncyk7Ci0gICAgaWYgKGtleXdvcmRzKSB7Ci0gICAgICAgIFZJU0lUX1NFUShjLCBrZXl3b3JkLCBrZXl3b3Jkcyk7Ci0gICAgICAgIG4gfD0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKSA8PCA4OworICAgIC8qIHRoZSBudW1iZXIgb2YgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgb24gdGhlIHN0YWNrICovCisgICAgUHlfc3NpemVfdCBuc3ViYXJncyA9IDAsIG5zdWJrd2FyZ3MgPSAwOworCisgICAgbmt3ID0gMDsKKyAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLworICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGFyZ3MpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOworICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgeworICAgICAgICAgICAgLyogQSBzdGFyLWFyZy4gSWYgd2UndmUgc2VlbiBwb3NpdGlvbmFsIGFyZ3VtZW50cywKKyAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYQorICAgICAgICAgICAgICAgdHVwbGUuICovCisgICAgICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgICAgICAgICAgICAgIG5zdWJhcmdzKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CisgICAgICAgICAgICBuc3ViYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzKSB7CisgICAgICAgICAgICAvKiBXZSd2ZSBzZWVuIHN0YXItYXJncyBhbHJlYWR5LCBzbyB3ZQorICAgICAgICAgICAgICAgY291bnQgdG93YXJkcyBpdGVtcy10by1wYWNrLWludG8tdHVwbGUuICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBzdGFyLWFyZ3VtZW50cworICAgICAgICAgICAgICAgYXJlIGxlZnQgb24gdGhlIHN0YWNrLiAqLworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoc3RhcmFyZ3MpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwgc3RhcmFyZ3MpOworICAgIGlmIChuc2VlbikgeworICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOworICAgICAgICBuc3ViYXJncysrOworICAgIH0KKyAgICBpZiAobnN1YmFyZ3MpIHsKICAgICAgICAgY29kZSB8PSAxOworICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAorICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9MSVNUX1VOUEFDSywgbnN1YmFyZ3MpOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChrd2FyZ3MpIHsKLSAgICAgICAgVklTSVQoYywgZXhwciwga3dhcmdzKTsKKworICAgIC8qIFNhbWUgZGFuY2UgYWdhaW4gZm9yIGtleXdvcmQgYXJndW1lbnRzICovCisgICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCisgICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CisgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLworICAgICAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKKyAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuc3Via3dhcmdzKSB7CisgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGRpY3QuICovCisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGtleXdvcmQgYXJndW1lbnQgKi8KKyAgICAgICAgICAgIFZJU0lUKGMsIGtleXdvcmQsIGt3KQorICAgICAgICAgICAgbmt3Kys7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG5zZWVuKSB7CisgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOworICAgICAgICBuc3Via3dhcmdzKys7CisgICAgfQorICAgIGlmIChuc3Via3dhcmdzKSB7CiAgICAgICAgIGNvZGUgfD0gMjsKKyAgICAgICAgaWYgKG5zdWJrd2FyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBQYWNrIGl0IGFsbCB1cCAqLworICAgICAgICAgICAgaW50IGZ1bmN0aW9uX3BvcyA9IG4gKyAoY29kZSAmIDEpICsgbmt3ICsgMTsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MgfCAoZnVuY3Rpb25fcG9zIDw8IDgpKTsKKyAgICAgICAgfQogICAgIH0KKyAgICBhc3NlcnQobiA8IDE8PDgpOworICAgIGFzc2VydChua3cgPCAxPDwyNCk7CisgICAgbiB8PSBua3cgPDwgODsKKwogICAgIHN3aXRjaCAoY29kZSkgewogICAgIGNhc2UgMDoKICAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuKTsKQEAgLTMxMzgsOCArMzQzNCw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLCBpZGVudGlmaWVyIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwpCitjb21waWxlcl9jb21wcmVoZW5zaW9uKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlLCBpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgZXhwcl90eSBlbHQsCisgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwogICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CkBAIC0zMzEyLDYgKzM2MDksMTAyIEBACiAgICAgfQogfQogCisKKy8qCisgICBJbXBsZW1lbnRzIHRoZSBhc3luYyB3aXRoIHN0YXRlbWVudC4KKworICAgVGhlIHNlbWFudGljcyBvdXRsaW5lZCBpbiB0aGF0IFBFUCBhcmUgYXMgZm9sbG93czoKKworICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjoKKyAgICAgICBCTE9DSworCisgICBJdCBpcyBpbXBsZW1lbnRlZCByb3VnaGx5IGFzOgorCisgICBjb250ZXh0ID0gRVhQUgorICAgZXhpdCA9IGNvbnRleHQuX19hZXhpdF9fICAjIG5vdCBjYWxsaW5nIGl0CisgICB2YWx1ZSA9IGF3YWl0IGNvbnRleHQuX19hZW50ZXJfXygpCisgICB0cnk6CisgICAgICAgVkFSID0gdmFsdWUgICMgaWYgVkFSIHByZXNlbnQgaW4gdGhlIHN5bnRheAorICAgICAgIEJMT0NLCisgICBmaW5hbGx5OgorICAgICAgIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgorICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKKyAgICAgICBlbHNlOgorICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQorICAgICAgIGlmIG5vdCAoYXdhaXQgZXhpdCgqZXhjKSk6CisgICAgICAgICAgIHJhaXNlCisgKi8KK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBwb3MpCit7CisgICAgYmFzaWNibG9jayAqYmxvY2ssICpmaW5hbGx5OworICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQocy0+di5Bc3luY1dpdGguaXRlbXMsIHBvcyk7CisKKyAgICBhc3NlcnQocy0+a2luZCA9PSBBc3luY1dpdGhfa2luZCk7CisKKyAgICBibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBmaW5hbGx5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGlmICghYmxvY2sgfHwgIWZpbmFsbHkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogRXZhbHVhdGUgRVhQUiAqLworICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPmNvbnRleHRfZXhwcik7CisKKyAgICBBRERPUChjLCBCRUZPUkVfQVNZTkNfV0lUSCk7CisgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9BU1lOQ19XSVRILCBmaW5hbGx5KTsKKworICAgIC8qIFNFVFVQX0FTWU5DX1dJVEggcHVzaGVzIGEgZmluYWxseSBibG9jay4gKi8KKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBibG9jayk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYmxvY2spKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGl0ZW0tPm9wdGlvbmFsX3ZhcnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAvKiBEaXNjYXJkIHJlc3VsdCBmcm9tIGNvbnRleHQuX19hZW50ZXJfXygpICovCisgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIH0KKworICAgIHBvcysrOworICAgIGlmIChwb3MgPT0gYXNkbF9zZXFfTEVOKHMtPnYuQXN5bmNXaXRoLml0ZW1zKSkKKyAgICAgICAgLyogQkxPQ0sgY29kZSAqLworICAgICAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Bc3luY1dpdGguYm9keSkKKyAgICBlbHNlIGlmICghY29tcGlsZXJfYXN5bmNfd2l0aChjLCBzLCBwb3MpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBFbmQgb2YgdHJ5IGJsb2NrOyBzdGFydCB0aGUgZmluYWxseSBibG9jayAqLworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX1RSWSwgYmxvY2spOworCisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGZpbmFsbHkpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGZpbmFsbHkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIEZpbmFsbHkgYmxvY2sgc3RhcnRzOyBjb250ZXh0Ll9fZXhpdF9fIGlzIG9uIHRoZSBzdGFjayB1bmRlcgorICAgICAgIHRoZSBleGNlcHRpb24gb3IgcmV0dXJuIGluZm9ybWF0aW9uLiBKdXN0IGlzc3VlIG91ciBtYWdpYworICAgICAgIG9wY29kZS4gKi8KKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfU1RBUlQpOworCisgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworCisgICAgQURET1AoYywgV0lUSF9DTEVBTlVQX0ZJTklTSCk7CisKKyAgICAvKiBGaW5hbGx5IGJsb2NrIGVuZHMuICovCisgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGZpbmFsbHkpOworICAgIHJldHVybiAxOworfQorCisKIC8qCiAgICBJbXBsZW1lbnRzIHRoZSB3aXRoIHN0YXRlbWVudCBmcm9tIFBFUCAzNDMuCiAKQEAgLTMzODUsNyArMzc3OCw4IEBACiAgICAgLyogRmluYWxseSBibG9jayBzdGFydHM7IGNvbnRleHQuX19leGl0X18gaXMgb24gdGhlIHN0YWNrIHVuZGVyCiAgICAgICAgdGhlIGV4Y2VwdGlvbiBvciByZXR1cm4gaW5mb3JtYXRpb24uIEp1c3QgaXNzdWUgb3VyIG1hZ2ljCiAgICAgICAgb3Bjb2RlLiAqLwotICAgIEFERE9QKGMsIFdJVEhfQ0xFQU5VUCk7CisgICAgQURET1AoYywgV0lUSF9DTEVBTlVQX1NUQVJUKTsKKyAgICBBRERPUChjLCBXSVRIX0NMRUFOVVBfRklOSVNIKTsKIAogICAgIC8qIEZpbmFsbHkgYmxvY2sgZW5kcy4gKi8KICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CkBAIC0zMzk2LDggKzM3OTAsNiBAQAogc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47Ci0KICAgICAvKiBJZiBleHByIGUgaGFzIGEgZGlmZmVyZW50IGxpbmUgbnVtYmVyIHRoYW4gdGhlIGxhc3QgZXhwci9zdG10LAogICAgICAgIHNldCBhIG5ldyBsaW5lIG51bWJlciBmb3IgdGhlIG5leHQgaW5zdHJ1Y3Rpb24uCiAgICAgKi8KQEAgLTM0MjQsMjMgKzM4MTYsOSBAQAogICAgIGNhc2UgSWZFeHBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2lmZXhwKGMsIGUpOwogICAgIGNhc2UgRGljdF9raW5kOgotICAgICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwotICAgICAgICAvKiBCVUlMRF9NQVAgcGFyYW1ldGVyIGlzIG9ubHkgdXNlZCB0byBwcmVhbGxvY2F0ZSB0aGUgZGljdGlvbmFyeSwKLSAgICAgICAgICAgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGV4YWN0ICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCAobj4weEZGRkYgPyAweEZGRkYgOiBuKSk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsCi0gICAgICAgICAgICAgICAgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsCi0gICAgICAgICAgICAgICAgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7Ci0gICAgICAgICAgICBBRERPUChjLCBTVE9SRV9NQVApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfZGljdChjLCBlKTsKICAgICBjYXNlIFNldF9raW5kOgotICAgICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuU2V0LmVsdHMpOwotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5TZXQuZWx0cyk7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfU0VULCBuKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBjb21waWxlcl9zZXQoYywgZSk7CiAgICAgY2FzZSBHZW5lcmF0b3JFeHBfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2dlbmV4cChjLCBlKTsKICAgICBjYXNlIExpc3RDb21wX2tpbmQ6CkBAIC0zNDUyLDYgKzM4MzAsOCBAQAogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKyAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKKyAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOwogICAgICAgICB9CkBAIC0zNDYzLDggKzM4NDMsMjggQEAKICAgICBjYXNlIFlpZWxkRnJvbV9raW5kOgogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOworCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCBmcm9tJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKKwogICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7Ci0gICAgICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICAgICAgQURET1AoYywgR0VUX1lJRUxEX0ZST01fSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXdhaXRfa2luZDoKKyAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgZnVuY3Rpb24iKTsKKworICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04pCisgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgYywgIidhd2FpdCcgZXhwcmVzc2lvbnMgaW4gY29tcHJlaGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKKworICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKKworICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKKyAgICAgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKICAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzU1MSw3ICszOTUxLDcgQEAKICAgICAgICAgICAgICAgICAic3RhcnJlZCBhc3NpZ25tZW50IHRhcmdldCBtdXN0IGJlIGluIGEgbGlzdCBvciB0dXBsZSIpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsCi0gICAgICAgICAgICAgICAgImNhbiB1c2Ugc3RhcnJlZCBleHByZXNzaW9uIG9ubHkgYXMgYXNzaWdubWVudCB0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIHN0YXJyZWQgZXhwcmVzc2lvbiBoZXJlIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lX2tpbmQ6CkBAIC00MTgxLDkgKzQ1ODEsNyBAQAogICAgIGludCBmbGFncyA9IDA7CiAgICAgUHlfc3NpemVfdCBuOwogICAgIGlmIChzdGUtPnN0ZV90eXBlID09IEZ1bmN0aW9uQmxvY2spIHsKLSAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTOwotICAgICAgICBpZiAoIXN0ZS0+c3RlX3Vub3B0aW1pemVkKQotICAgICAgICAgICAgZmxhZ3MgfD0gQ09fT1BUSU1JWkVEOworICAgICAgICBmbGFncyB8PSBDT19ORVdMT0NBTFMgfCBDT19PUFRJTUlaRUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9uZXN0ZWQpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19ORVNURUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IpCmRpZmYgLS1naXQgYS9QeXRob24vY29uZHZhci5oIGIvUHl0aG9uL2NvbmR2YXIuaAppbmRleCBlZjgxOGM0Li5iYjViMWI2IDEwMDY0NAotLS0gYS9QeXRob24vY29uZHZhci5oCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTEsNCArMSw0IEBACi0vKiAKKy8qCiAgKiBQb3J0YWJsZSBjb25kaXRpb24gdmFyaWFibGUgc3VwcG9ydCBmb3Igd2luZG93cyBhbmQgcHRocmVhZHMuCiAgKiBFdmVyeXRoaW5nIGlzIGlubGluZSwgdGhpcyBoZWFkZXIgY2FuIGJlIGluY2x1ZGVkIHdoZXJlIG5lZWRlZC4KICAqCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgZWxzZSBpZiAocikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGVsc2UgCisgICAgZWxzZQogICAgICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjU1LDcgKzI1NSw3IEBACiAgICAgICAgICAqIGEgbmV3IHRocmVhZCBjb21lcyBhbG9uZywgaXQgd2lsbCBwYXNzIHJpZ2h0IHRocm91aGdoLCBoYXZpbmcKICAgICAgICAgICogYWRqdXN0ZWQgaXQgdG8gKHdhaXRpbmcgPT0gMCAmJiBzZW0uY291bnQgPT0gMCkuCiAgICAgICAgICAqLwotICAgICAgICAgCisKICAgICBpZiAod2FpdCA9PSBXQUlUX0ZBSUxFRCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIC8qIHJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gdGltZW91dCAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R0b2EuYyBiL1B5dGhvbi9kdG9hLmMKaW5kZXggODk5NmE3Mi4uM2RhNTQ2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2R0b2EuYworKysgYi9QeXRob24vZHRvYS5jCkBAIC0zNzMsNyArMzczLDcgQEAKICAgICAgICAgeCA9IDEgPDwgazsKICAgICAgICAgbGVuID0gKHNpemVvZihCaWdpbnQpICsgKHgtMSkqc2l6ZW9mKFVMb25nKSArIHNpemVvZihkb3VibGUpIC0gMSkKICAgICAgICAgICAgIC9zaXplb2YoZG91YmxlKTsKLSAgICAgICAgaWYgKGsgPD0gS21heCAmJiBwbWVtX25leHQgLSBwcml2YXRlX21lbSArIGxlbiA8PSBQUklWQVRFX21lbSkgeworICAgICAgICBpZiAoayA8PSBLbWF4ICYmIHBtZW1fbmV4dCAtIHByaXZhdGVfbWVtICsgbGVuIDw9IChQeV9zc2l6ZV90KVBSSVZBVEVfbWVtKSB7CiAgICAgICAgICAgICBydiA9IChCaWdpbnQqKXBtZW1fbmV4dDsKICAgICAgICAgICAgIHBtZW1fbmV4dCArPSBsZW47CiAgICAgICAgIH0KQEAgLTEwODcsNyArMTA4Nyw3IEBACiAgICAgYiA9IEJhbGxvYygxKTsKICAgICBpZiAoYiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKKwogICAgIC8qIEZpcnN0IGNvbnN0cnVjdCBiIGFuZCBlIGFzc3VtaW5nIHRoYXQgc2NhbGUgPT0gMC4gKi8KICAgICBiLT53ZHMgPSAyOwogICAgIGItPnhbMF0gPSB3b3JkMShkKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2FpeC5jIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKaW5kZXggNWFjMzBlZC4uYjNmZjhlMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfYWl4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfYWl4LmMKQEAgLTE1NCw4ICsxNTQsOSBAQAogfQogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2RsLmMgYi9QeXRob24vZHlubG9hZF9kbC5jCmluZGV4IDU4MzZjYjNiLi4yYmVjNjQ1IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9kbC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKQEAgLTEyLDExICsxMiwxMiBAQAogY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5vIiwgTlVMTH07CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGNoYXIgZnVuY25hbWVbMjU4XTsKIAotICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogICAgIHJldHVybiBkbF9sb2FkbW9kKFB5X0dldFByb2dyYW1OYW1lKCksIHBhdGhuYW1lLCBmdW5jbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9ocHV4LmMgYi9QeXRob24vZHlubG9hZF9ocHV4LmMKaW5kZXggYzk1NTQxNC4uNDk2N2FmYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwpAQCAtOCwxNSArOCwxNiBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKICNpZiBkZWZpbmVkKF9faHA5MDAwczMwMCkKLSNkZWZpbmUgRlVOQ05BTUVfUEFUVEVSTiAiX1B5SW5pdF8lLjIwMHMiCisjZGVmaW5lIEZVTkNOQU1FX1BBVFRFUk4gIl8lLjIwc18lLjIwMHMiCiAjZWxzZQotI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICJQeUluaXRfJS4yMDBzIgorI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICIlLjIwc18lLjIwMHMiCiAjZW5kaWYKIAogY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7U0hMSUJfRVhULCBOVUxMfTsKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICBzaGxfdCBsaWI7CkBAIC01MCw3ICs1MSw4IEBACiAgICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCBGVU5DTkFNRV9QQVRURVJOLCBzaG9ydG5hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksIEZVTkNOQU1FX1BBVFRFUk4sCisgICAgICAgICAgICAgICAgICBwcmVmaXgsIHNob3J0bmFtZSk7CiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICBwcmludGYoInNobF9maW5kc3ltICVzXG4iLCBmdW5jbmFtZSk7CiAgICAgaWYgKHNobF9maW5kc3ltKCZsaWIsIGZ1bmNuYW1lLCBUWVBFX1VOREVGSU5FRCwgKHZvaWQgKikgJnApID09IC0xKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9uZXh0LmMgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKaW5kZXggODVjOTViNC4uODNhOGIyYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwpAQCAtMjcsOCArMjcsOSBAQAogI2RlZmluZSBMSU5LT1BUSU9OUyBOU0xJTktNT0RVTEVfT1BUSU9OX0JJTkROT1d8IFwKICAgICBOU0xJTktNT0RVTEVfT1BUSU9OX1JFVFVSTl9PTl9FUlJPUnxOU0xJTktNT0RVTEVfT1BUSU9OX1BSSVZBVEUKICNlbmRpZgotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHIoY29uc3QgY2hhciAqcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcCA9IE5VTEw7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdOwpAQCAtMzksNyArNDAsNyBAQAogICAgIGNvbnN0IGNoYXIgKmVyclN0cmluZzsKICAgICBjaGFyIGVyckJ1Zls1MTJdOwogCi0gICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIl9QeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiXyUuMjBzXyUuMjAwcyIsIHByZWZpeCwgc2hvcnRuYW1lKTsKIAogI2lmZGVmIFVTRV9EWUxEX0dMT0JBTF9OQU1FU1BBQ0UKICAgICBpZiAoTlNJc1N5bWJvbE5hbWVEZWZpbmVkKGZ1bmNuYW1lKSkgewpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYyBiL1B5dGhvbi9keW5sb2FkX3NobGliLmMKaW5kZXggNWNkMWVmZC4uN2Y4ZjEzNCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYworKysgYi9QeXRob24vZHlubG9hZF9zaGxpYi5jCkBAIC01MSw4ICs1MSwxMCBAQAogc3RhdGljIGludCBuaGFuZGxlcyA9IDA7CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0cgorX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKICAgICB2b2lkICpoYW5kbGU7CkBAIC02NywyNiArNjksMjQgQEAKICAgICB9CiAKICAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLAotICAgICAgICAgICAgICAgICAgTEVBRF9VTkRFUlNDT1JFICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKKyAgICAgICAgICAgICAgICAgIExFQURfVU5ERVJTQ09SRSAiJS4yMHNfJS4yMDBzIiwgcHJlZml4LCBzaG9ydG5hbWUpOwogCiAgICAgaWYgKGZwICE9IE5VTEwpIHsKICAgICAgICAgaW50IGk7Ci0gICAgICAgIHN0cnVjdCBzdGF0IHN0YXRiOwotICAgICAgICBpZiAoZnN0YXQoZmlsZW5vKGZwKSwgJnN0YXRiKSA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXR1czsKKyAgICAgICAgaWYgKF9QeV9mc3RhdChmaWxlbm8oZnApLCAmc3RhdHVzKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuaGFuZGxlczsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGIuc3RfZGV2ID09IGhhbmRsZXNbaV0uZGV2ICYmCi0gICAgICAgICAgICAgICAgc3RhdGIuc3RfaW5vID09IGhhbmRsZXNbaV0uaW5vKSB7CisgICAgICAgICAgICBpZiAoc3RhdHVzLnN0X2RldiA9PSBoYW5kbGVzW2ldLmRldiAmJgorICAgICAgICAgICAgICAgIHN0YXR1cy5zdF9pbm8gPT0gaGFuZGxlc1tpXS5pbm8pIHsKICAgICAgICAgICAgICAgICBwID0gKGRsX2Z1bmNwdHIpIGRsc3ltKGhhbmRsZXNbaV0uaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChuaGFuZGxlcyA8IDEyOCkgewotICAgICAgICAgICAgaGFuZGxlc1tuaGFuZGxlc10uZGV2ID0gc3RhdGIuc3RfZGV2OwotICAgICAgICAgICAgaGFuZGxlc1tuaGFuZGxlc10uaW5vID0gc3RhdGIuc3RfaW5vOworICAgICAgICAgICAgaGFuZGxlc1tuaGFuZGxlc10uZGV2ID0gc3RhdHVzLnN0X2RldjsKKyAgICAgICAgICAgIGhhbmRsZXNbbmhhbmRsZXNdLmlubyA9IHN0YXR1cy5zdF9pbm87CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggZmZjZjBlZS4uZjJjNzk2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgImltcG9ydGRsLmgiCisjaW5jbHVkZSAicGF0Y2hsZXZlbC5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogLy8gImFjdGl2YXRpb24gY29udGV4dCIgbWFnaWMgLSBzZWUgZGxfbnQuYy4uLgpAQCAtMTcsMTYgKzE4LDI4IEBACiB2b2lkIF9QeV9EZWFjdGl2YXRlQWN0Q3R4KFVMT05HX1BUUiBjb29raWUpOwogI2VuZGlmCiAKLWNvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewogI2lmZGVmIF9ERUJVRwotICAgICJfZC5weWQiLAorI2RlZmluZSBQWURfREVCVUdfU1VGRklYICJfZCIKICNlbHNlCi0gICAgIi5weWQiLAorI2RlZmluZSBQWURfREVCVUdfU1VGRklYICIiCiAjZW5kaWYKKworI2RlZmluZSBTVFJJTkdJWkUyKHgpICN4CisjZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJTkdJWkUyKHgpCisjaWZkZWYgUFlEX1BMQVRGT1JNX1RBRworI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi0iIFBZRF9QTEFURk9STV9UQUcgIi5weWQiCisjZWxzZQorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCisjZW5kaWYKKworI2RlZmluZSBQWURfVU5UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5weWQiCisKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geworICAgIFBZRF9UQUdHRURfU1VGRklYLAorICAgIFBZRF9VTlRBR0dFRF9TVUZGSVgsCiAgICAgTlVMTAogfTsKIAotCiAvKiBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJlLCB0byBhdm9pZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBhcnRpY3VsYXIKICAgIEMgUlRMIGltcGxlbWVudGF0aW9ucyAqLwogCkBAIC0xNzMsOCArMTg2LDkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyV2luZG93cyhjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XSwgKmltcG9ydF9weXRob247CkBAIC0xODgsNyArMjAyLDcgQEAKICAgICBpZiAod3BhdGhuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlPU19zbnByaW50ZihmdW5jbmFtZSwgc2l6ZW9mKGZ1bmNuYW1lKSwgIlB5SW5pdF8lLjIwMHMiLCBzaG9ydG5hbWUpOworICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICIlLjIwc18lLjIwMHMiLCBwcmVmaXgsIHNob3J0bmFtZSk7CiAKICAgICB7CiAgICAgICAgIEhJTlNUQU5DRSBoRExMID0gTlVMTDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCBiMGFkOWFhLi5hZWQyYmRjIDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC03NCwxMSArNzQsMTEgQEAKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IG5vcm1hbGl6ZSB0aGUgdmFsdWUgcmlnaHQgbm93ICovCiAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKmZpeGVkX3ZhbHVlOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgICAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbgotICAgICAgICAgICAgICAgZXJyb3IgaWYgYW4gZXhjZXB0aW9uIGlzIHNldCB3aGVuIGl0IGlzIGNhbGxlZCAqLworCisgICAgICAgICAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5RXZhbF9DYWxsT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KKyAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBzZXQgKi8KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0jZW5kaWYKKwogICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewpAQCAtMzE5LDcgKzMxOSw3IEBACiAgICAgICAgIFB5X0RFQ1JFRigqZXhjKTsKICAgICAgICAgUHlfREVDUkVGKCp2YWwpOwogICAgICAgICAvKiAuLi4gYW5kIHVzZSB0aGUgcmVjdXJzaW9uIGVycm9yIGluc3RlYWQgKi8KLSAgICAgICAgKmV4YyA9IFB5RXhjX1J1bnRpbWVFcnJvcjsKKyAgICAgICAgKmV4YyA9IFB5RXhjX1JlY3Vyc2lvbkVycm9yOwogICAgICAgICAqdmFsID0gUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0OwogICAgICAgICBQeV9JTkNSRUYoKmV4Yyk7CiAgICAgICAgIFB5X0lOQ1JFRigqdmFsKTsKQEAgLTc3MywzNCArNzczLDM4IEBACiAjZGVmaW5lIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoX19GSUxFX18sIF9fTElORV9fKQogCiAKK1B5T2JqZWN0ICoKK1B5RXJyX0Zvcm1hdFYoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0KiBzdHJpbmc7CisKKyAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCisgICAgICAgZXhjZXB0aW9uIHNldCwgaXQgY2FsbHMgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGxpa2UgUHlPYmplY3RfUmVwcigpICovCisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKworICAgIFB5RXJyX1NldE9iamVjdChleGNlcHRpb24sIHN0cmluZyk7CisgICAgUHlfWERFQ1JFRihzdHJpbmcpOworICAgIHJldHVybiBOVUxMOworfQorCiAKIFB5T2JqZWN0ICoKIFB5RXJyX0Zvcm1hdChQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhcmdzOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7Ci0KICNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCiAgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotCi0jaWZkZWYgUHlfREVCVUcKLSAgICAvKiBpbiBkZWJ1ZyBtb2RlLCBQeUV2YWxfRXZhbEZyYW1lRXgoKSBmYWlscyB3aXRoIGFuIGFzc2VydGlvbiBlcnJvcgotICAgICAgIGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQgd2hlbiBpdCBpcyBjYWxsZWQgKi8KLSAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCi0KLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KGV4Y2VwdGlvbiwgc3RyaW5nKTsKLSAgICBQeV9YREVDUkVGKHN0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0VihleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIAotCiBQeU9iamVjdCAqCiBQeUVycl9OZXdFeGNlcHRpb24oY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmJhc2UsIFB5T2JqZWN0ICpkaWN0KQogewpAQCAtMTEyMSw2ICsxMTI1LDEwIEBACiAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgbGluZW5vIDw9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZwID0gX1B5X2ZvcGVuX29iaihmaWxlbmFtZSwgInIiIFBZX1NURElPVEVYVE1PREUpOworICAgIGlmIChmcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gZXJyX3Byb2dyYW10ZXh0KGZwLCBsaW5lbm8pOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggMzE2ODljMC4uYmNjZDMyMSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMyw3ICszLDkgQEAKICNpbmNsdWRlIDxsb2NhbGUuaD4KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgogIyAgaW5jbHVkZSA8d2luZG93cy5oPgorZXh0ZXJuIGludCB3aW5lcnJvcl90b19lcnJubyhpbnQpOwogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKQEAgLTI5LDcgKzMxLDggQEAKICAgICAwOiBvcGVuKCkgaWdub3JlcyBPX0NMT0VYRUMgZmxhZywgZXg6IExpbnV4IGtlcm5lbCBvbGRlciB0aGFuIDIuNi4yMwogICAgIDE6IG9wZW4oKSBzdXBwb3J0cyBPX0NMT0VYRUMgZmxhZywgY2xvc2Utb24tZXhlYyBpcyBzZXQKIAotICAgVGhlIGZsYWcgaXMgdXNlZCBieSBfUHlfb3BlbigpLCBpby5GaWxlSU8gYW5kIG9zLm9wZW4oKSAqLworICAgVGhlIGZsYWcgaXMgdXNlZCBieSBfUHlfb3BlbigpLCBfUHlfb3Blbl9ub3JhaXNlKCksIGlvLkZpbGVJTworICAgYW5kIG9zLm9wZW4oKS4gKi8KIGludCBfUHlfb3Blbl9jbG9leGVjX3dvcmtzID0gLTE7CiAjZW5kaWYKIApAQCAtMzksOSArNDIsMTMgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgVUlOVCBjcDsKICNlbmRpZgotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSB8fCAhaXNhdHR5KGZkKSkgeworICAgIGludCB2YWxpZDsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgdmFsaWQgPSBfUHlWZXJpZnlfZmQoZmQpICYmIGlzYXR0eShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAoIXZhbGlkKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9CisKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgaWYgKGZkID09IDApCiAgICAgICAgIGNwID0gR2V0Q29uc29sZUNQKCk7CkBAIC04MiwxMSArODksMTEgQEAKIAogICAgVmFsdWVzIG9mIGZvcmNlX2FzY2lpOgogCi0gICAgICAgMTogdGhlIHdvcmthcm91bmQgaXMgdXNlZDogX1B5X3djaGFyMmNoYXIoKSB1c2VzCi0gICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBfUHlfY2hhcjJ3Y2hhcigpIHVzZXMKKyAgICAgICAxOiB0aGUgd29ya2Fyb3VuZCBpcyB1c2VkOiBQeV9FbmNvZGVMb2NhbGUoKSB1c2VzCisgICAgICAgICAgZW5jb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpIGFuZCBQeV9EZWNvZGVMb2NhbGUoKSB1c2VzCiAgICAgICAgICAgZGVjb2RlX2FzY2lpX3N1cnJvZ2F0ZWVzY2FwZSgpCi0gICAgICAgMDogdGhlIHdvcmthcm91bmQgaXMgbm90IHVzZWQ6IF9QeV93Y2hhcjJjaGFyKCkgdXNlcyB3Y3N0b21icygpIGFuZAotICAgICAgICAgIF9QeV9jaGFyMndjaGFyKCkgdXNlcyBtYnN0b3djcygpCisgICAgICAgMDogdGhlIHdvcmthcm91bmQgaXMgbm90IHVzZWQ6IFB5X0VuY29kZUxvY2FsZSgpIHVzZXMgd2NzdG9tYnMoKSBhbmQKKyAgICAgICAgICBQeV9EZWNvZGVMb2NhbGUoKSB1c2VzIG1ic3Rvd2NzKCkKICAgICAgIC0xOiB1bmtub3duLCBuZWVkIHRvIGNhbGwgY2hlY2tfZm9yY2VfYXNjaWkoKSB0byBnZXQgdGhlIHZhbHVlCiAqLwogc3RhdGljIGludCBmb3JjZV9hc2NpaSA9IC0xOwpAQCAtMjQ0LDI0ICsyNTEsMjYgQEAKIAogCiAvKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyICh1bmRlY29kYWJsZSBieXRlcyBhcmUgZGVjb2RlZCBhcyBjaGFyYWN0ZXJzCi0gICBpbiByYW5nZSBVK0RDODAuLlUrRENGRikuIElmIGEgYnl0ZSBzZXF1ZW5jZSBjYW4gYmUgZGVjb2RlZCBhcyBhIHN1cnJvZ2F0ZQorICAgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXI6IHVuZGVjb2RhYmxlIGJ5dGVzIGFyZSBkZWNvZGVkIGFzIGNoYXJhY3RlcnMKKyAgIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuIGJlIGRlY29kZWQgYXMgYSBzdXJyb2dhdGUKICAgIGNoYXJhY3RlciwgZXNjYXBlIHRoZSBieXRlcyB1c2luZyB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgaW5zdGVhZAogICAgb2YgZGVjb2RpbmcgdGhlbS4KIAotICAgVXNlIF9QeV93Y2hhcjJjaGFyKCkgdG8gZW5jb2RlIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIGJhY2sgdG8gYSBieXRlIHN0cmluZy4KKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nLCB1c2UKKyAgIFB5TWVtX1Jhd0ZyZWUoKSB0byBmcmVlIHRoZSBtZW1vcnkuIElmIHNpemUgaXMgbm90IE5VTEwsIHdyaXRlIHRoZSBudW1iZXIgb2YKKyAgIHdpZGUgY2hhcmFjdGVycyBleGNsdWRpbmcgdGhlIG51bGwgY2hhcmFjdGVyIGludG8gKnNpemUKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKHVzZQotICAgUHlNZW1fUmF3RnJlZSgpIHRvIGZyZWUgdGhlIG1lbW9yeSkgYW5kIHdyaXRlIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiB3aWRlCi0gICBjaGFyYWN0ZXJzIGV4Y2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIgaW50byAqc2l6ZSBpZiBzaXplIGlzIG5vdCBOVUxMLCBvcgotICAgTlVMTCBvbiBlcnJvciAoZGVjb2Rpbmcgb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IpLiBJZiBzaXplIGlzIG5vdCBOVUxMLAotICAgKnNpemUgaXMgc2V0IHRvIChzaXplX3QpLTEgb24gbWVtb3J5IGVycm9yIGFuZCAoc2l6ZV90KS0yIG9uIGRlY29kaW5nCi0gICBlcnJvci4KKyAgIFJldHVybiBOVUxMIG9uIGRlY29kaW5nIGVycm9yIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLiBJZiAqc2l6ZSogaXMgbm90CisgICBOVUxMLCAqc2l6ZSBpcyBzZXQgdG8gKHNpemVfdCktMSBvbiBtZW1vcnkgZXJyb3Igb3Igc2V0IHRvIChzaXplX3QpLTIgb24KKyAgIGRlY29kaW5nIGVycm9yLgogCi0gICBDb252ZXJzaW9uIGVycm9ycyBzaG91bGQgbmV2ZXIgaGFwcGVuLCB1bmxlc3MgdGhlcmUgaXMgYSBidWcgaW4gdGhlIEMKLSAgIGxpYnJhcnkuICovCisgICBEZWNvZGluZyBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBDCisgICBsaWJyYXJ5LgorCisgICBVc2UgdGhlIFB5X0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9uIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyIHN0cmluZyBiYWNrIHRvIGEKKyAgIGJ5dGUgc3RyaW5nLiAqLwogd2NoYXJfdCoKLV9QeV9jaGFyMndjaGFyKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQorUHlfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIqIGFyZywgc2l6ZV90ICpzaXplKQogewogI2lmZGVmIF9fQVBQTEVfXwogICAgIHdjaGFyX3QgKndzdHI7CkBAIC0zOTksMTkgKzQwOCwyMCBAQAogI2VuZGlmICAgLyogX19BUFBMRV9fICovCiB9CiAKLS8qIEVuY29kZSBhICh3aWRlKSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKLSAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIChjaGFyYWN0ZXJzIGluIHJhbmdlIFUrREM4MC4uVStEQ0ZGIGFyZQotICAgY29udmVydGVkIHRvIGJ5dGVzIDB4ODAuLjB4RkYpLgorLyogRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKKyAgIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyOiBzdXJyb2dhdGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UKKyAgIFUrREM4MC4uVStEQ0ZGIGFyZSBjb252ZXJ0ZWQgdG8gYnl0ZXMgMHg4MC4uMHhGRi4KIAotICAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgcmV2ZXJzZSBvZiBfUHlfY2hhcjJ3Y2hhcigpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZywgdXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCisgICB0aGUgbWVtb3J5LiBSZXR1cm4gTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byBhIG5ld2x5IGFsbG9jYXRlZCBieXRlIHN0cmluZyAodXNlIFB5TWVtX0ZyZWUoKSB0byBmcmVlCi0gICB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBlbmNvZGluZyBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KKyAgIElmIGVycm9yX3BvcyBpcyBub3QgTlVMTCwgKmVycm9yX3BvcyBpcyBzZXQgdG8gdGhlIGluZGV4IG9mIHRoZSBpbnZhbGlkCisgICBjaGFyYWN0ZXIgb24gZW5jb2RpbmcgZXJyb3IsIG9yIHNldCB0byAoc2l6ZV90KS0xIG90aGVyd2lzZS4KIAotICAgSWYgZXJyb3JfcG9zIGlzIG5vdCBOVUxMOiAqZXJyb3JfcG9zIGlzIHRoZSBpbmRleCBvZiB0aGUgaW52YWxpZCBjaGFyYWN0ZXIKLSAgIG9uIGVuY29kaW5nIGVycm9yLCBvciAoc2l6ZV90KS0xIG90aGVyd2lzZS4gKi8KKyAgIFVzZSB0aGUgUHlfRGVjb2RlTG9jYWxlKCkgZnVuY3Rpb24gdG8gZGVjb2RlIHRoZSBieXRlcyBzdHJpbmcgYmFjayB0byBhIHdpZGUKKyAgIGNoYXJhY3RlciBzdHJpbmcuICovCiBjaGFyKgotX1B5X3djaGFyMmNoYXIoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCitQeV9FbmNvZGVMb2NhbGUoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCiB7CiAjaWZkZWYgX19BUFBMRV9fCiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC01MTQsMzQgKzUyNCwxNzkgQEAKICNlbmRpZiAgIC8qIF9fQVBQTEVfXyAqLwogfQogCi0vKiBJbiBwcmluY2lwbGUsIHRoaXMgc2hvdWxkIHVzZSBIQVZFX19XU1RBVCwgYW5kIF93c3RhdAotICAgc2hvdWxkIGJlIGRldGVjdGVkIGJ5IGF1dG9jb25mLiBIb3dldmVyLCBubyBjdXJyZW50Ci0gICBQT1NJWCBzeXN0ZW0gcHJvdmlkZXMgdGhhdCBmdW5jdGlvbiwgc28gdGVzdGluZyBmb3IKLSAgIGl0IGlzIHBvaW50bGVzcy4KLSAgIE5vdCBzdXJlIHdoZXRoZXIgdGhlIE1TX1dJTkRPV1MgZ3VhcmRzIGFyZSBuZWNlc3Nhcnk6Ci0gICBwZXJoYXBzIGZvciBjeWd3aW4vbWluZ3cgYnVpbGRzPwotKi8KLSNpZiBkZWZpbmVkKEhBVkVfU1RBVCkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKIAotLyogR2V0IGZpbGUgc3RhdHVzLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgX19pbnQ2NCBzZWNzX2JldHdlZW5fZXBvY2hzID0gMTE2NDQ0NzM2MDA7IC8qIFNlY29uZHMgYmV0d2VlbiAxLjEuMTYwMSBhbmQgMS4xLjE5NzAgKi8KIAotaW50Ci1fUHlfd3N0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3N0YXRpYyB2b2lkCitGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoRklMRVRJTUUgKmluX3B0ciwgdGltZV90ICp0aW1lX291dCwgaW50KiBuc2VjX291dCkKIHsKLSAgICBpbnQgZXJyOwotICAgIGNoYXIgKmZuYW1lOwotICAgIGZuYW1lID0gX1B5X3djaGFyMmNoYXIocGF0aCwgTlVMTCk7Ci0gICAgaWYgKGZuYW1lID09IE5VTEwpIHsKLSAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBYWFggZW5kaWFubmVzcy4gU2hvdWxkbid0IG1hdHRlciwgYXMgYWxsIFdpbmRvd3MgaW1wbGVtZW50YXRpb25zIGFyZSBsaXR0bGUtZW5kaWFuICovCisgICAgLyogQ2Fubm90IHNpbXBseSBjYXN0IGFuZCBkZXJlZmVyZW5jZSBpbl9wdHIsCisgICAgICAgc2luY2UgaXQgbWlnaHQgbm90IGJlIGFsaWduZWQgcHJvcGVybHkgKi8KKyAgICBfX2ludDY0IGluOworICAgIG1lbWNweSgmaW4sIGluX3B0ciwgc2l6ZW9mKGluKSk7CisgICAgKm5zZWNfb3V0ID0gKGludCkoaW4gJSAxMDAwMDAwMCkgKiAxMDA7IC8qIEZJTEVUSU1FIGlzIGluIHVuaXRzIG9mIDEwMCBuc2VjLiAqLworICAgICp0aW1lX291dCA9IFB5X1NBRkVfRE9XTkNBU1QoKGluIC8gMTAwMDAwMDApIC0gc2Vjc19iZXR3ZWVuX2Vwb2NocywgX19pbnQ2NCwgdGltZV90KTsKK30KKwordm9pZAorX1B5X3RpbWVfdF90b19GSUxFX1RJTUUodGltZV90IHRpbWVfaW4sIGludCBuc2VjX2luLCBGSUxFVElNRSAqb3V0X3B0cikKK3sKKyAgICAvKiBYWFggZW5kaWFubmVzcyAqLworICAgIF9faW50NjQgb3V0OworICAgIG91dCA9IHRpbWVfaW4gKyBzZWNzX2JldHdlZW5fZXBvY2hzOworICAgIG91dCA9IG91dCAqIDEwMDAwMDAwICsgbnNlY19pbiAvIDEwMDsKKyAgICBtZW1jcHkob3V0X3B0ciwgJm91dCwgc2l6ZW9mKG91dCkpOworfQorCisvKiBCZWxvdywgd2UgKmtub3cqIHRoYXQgdWdvK3IgaXMgMDQ0NCAqLworI2lmIF9TX0lSRUFEICE9IDA0MDAKKyNlcnJvciBVbnN1cHBvcnRlZCBDIGxpYnJhcnkKKyNlbmRpZgorc3RhdGljIGludAorYXR0cmlidXRlc190b19tb2RlKERXT1JEIGF0dHIpCit7CisgICAgaW50IG0gPSAwOworICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorICAgICAgICBtIHw9IF9TX0lGRElSIHwgMDExMTsgLyogSUZFWEVDIGZvciB1c2VyLGdyb3VwLG90aGVyICovCisgICAgZWxzZQorICAgICAgICBtIHw9IF9TX0lGUkVHOworICAgIGlmIChhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpCisgICAgICAgIG0gfD0gMDQ0NDsKKyAgICBlbHNlCisgICAgICAgIG0gfD0gMDY2NjsKKyAgICByZXR1cm4gbTsKK30KKwordm9pZAorX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HIHJlcGFyc2VfdGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQoreworICAgIG1lbXNldChyZXN1bHQsIDAsIHNpemVvZigqcmVzdWx0KSk7CisgICAgcmVzdWx0LT5zdF9tb2RlID0gYXR0cmlidXRlc190b19tb2RlKGluZm8tPmR3RmlsZUF0dHJpYnV0ZXMpOworICAgIHJlc3VsdC0+c3Rfc2l6ZSA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVTaXplSGlnaCk8PDMyKSArIGluZm8tPm5GaWxlU2l6ZUxvdzsKKyAgICByZXN1bHQtPnN0X2RldiA9IGluZm8tPmR3Vm9sdW1lU2VyaWFsTnVtYmVyOworICAgIHJlc3VsdC0+c3RfcmRldiA9IHJlc3VsdC0+c3RfZGV2OworICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRDcmVhdGlvblRpbWUsICZyZXN1bHQtPnN0X2N0aW1lLCAmcmVzdWx0LT5zdF9jdGltZV9uc2VjKTsKKyAgICBGSUxFX1RJTUVfdG9fdGltZV90X25zZWMoJmluZm8tPmZ0TGFzdFdyaXRlVGltZSwgJnJlc3VsdC0+c3RfbXRpbWUsICZyZXN1bHQtPnN0X210aW1lX25zZWMpOworICAgIEZJTEVfVElNRV90b190aW1lX3RfbnNlYygmaW5mby0+ZnRMYXN0QWNjZXNzVGltZSwgJnJlc3VsdC0+c3RfYXRpbWUsICZyZXN1bHQtPnN0X2F0aW1lX25zZWMpOworICAgIHJlc3VsdC0+c3RfbmxpbmsgPSBpbmZvLT5uTnVtYmVyT2ZMaW5rczsKKyAgICByZXN1bHQtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby0+bkZpbGVJbmRleEhpZ2gpPDwzMikgKyBpbmZvLT5uRmlsZUluZGV4TG93OworICAgIGlmIChyZXBhcnNlX3RhZyA9PSBJT19SRVBBUlNFX1RBR19TWU1MSU5LKSB7CisgICAgICAgIC8qIGZpcnN0IGNsZWFyIHRoZSBTX0lGTVQgYml0cyAqLworICAgICAgICByZXN1bHQtPnN0X21vZGUgXj0gKHJlc3VsdC0+c3RfbW9kZSAmIFNfSUZNVCk7CisgICAgICAgIC8qIG5vdyBzZXQgdGhlIGJpdHMgdGhhdCBtYWtlIHRoaXMgYSBzeW1saW5rICovCisgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSBTX0lGTE5LOwogICAgIH0KLSAgICBlcnIgPSBzdGF0KGZuYW1lLCBidWYpOwotICAgIFB5TWVtX0ZyZWUoZm5hbWUpOwotICAgIHJldHVybiBlcnI7CisgICAgcmVzdWx0LT5zdF9maWxlX2F0dHJpYnV0ZXMgPSBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzOwogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1NUQVQKKy8qIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUuCisKKyAgIE9uIFBPU0lYLCB1c2UgZnN0YXQoKS4KKworICAgT24gV2luZG93cywgdXNlIEdldEZpbGVUeXBlKCkgYW5kIEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgd2hpY2ggc3VwcG9ydAorICAgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQi4gIGZzdGF0KCkgbWF5IGZhaWwgd2l0aCBFT1ZFUkZMT1cgb24gZmlsZXMgbGFyZ2VyCisgICB0aGFuIDIgR0IgYmVjYXVzZSB0aGUgZmlsZSBzaXplIHR5cGUgaXMgYW4gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyOiBzZWUgaXNzdWUKKyAgICMyMzE1Mi4KKworICAgT24gV2luZG93cywgc2V0IHRoZSBsYXN0IFdpbmRvd3MgZXJyb3IgYW5kIHJldHVybiBub256ZXJvIG9uIGVycm9yLiBPbgorICAgUE9TSVgsIHNldCBlcnJubyBhbmQgcmV0dXJuIG5vbnplcm8gb24gZXJyb3IuIEZpbGwgc3RhdHVzIGFuZCByZXR1cm4gMCBvbgorICAgc3VjY2Vzcy4gKi8KK2ludAorX1B5X2ZzdGF0X25vcmFpc2UoaW50IGZkLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87CisgICAgSEFORExFIGg7CisgICAgaW50IHR5cGU7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIGggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICBlbHNlIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgfQorCisgICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgLyogZXJybm8gaXMgYWxyZWFkeSBzZXQgYnkgX2dldF9vc2ZoYW5kbGUsIGJ1dCB3ZSBhbHNvIHNldAorICAgICAgICAgICB0aGUgV2luMzIgZXJyb3IgZm9yIGNhbGxlcnMgd2hvIGV4cGVjdCB0aGF0ICovCisgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9JTlZBTElEX0hBTkRMRSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbWVtc2V0KHN0YXR1cywgMCwgc2l6ZW9mKCpzdGF0dXMpKTsKKworICAgIHR5cGUgPSBHZXRGaWxlVHlwZShoKTsKKyAgICBpZiAodHlwZSA9PSBGSUxFX1RZUEVfVU5LTk9XTikgeworICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZXJyb3IgIT0gMCkgeworICAgICAgICAgICAgZXJybm8gPSB3aW5lcnJvcl90b19lcnJubyhlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgLyogZWxzZTogdmFsaWQgYnV0IHVua25vd24gZmlsZSAqLworICAgIH0KKworICAgIGlmICh0eXBlICE9IEZJTEVfVFlQRV9ESVNLKSB7CisgICAgICAgIGlmICh0eXBlID09IEZJTEVfVFlQRV9DSEFSKQorICAgICAgICAgICAgc3RhdHVzLT5zdF9tb2RlID0gX1NfSUZDSFI7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRklMRV9UWVBFX1BJUEUpCisgICAgICAgICAgICBzdGF0dXMtPnN0X21vZGUgPSBfU19JRklGTzsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoLCAmaW5mbykpIHsKKyAgICAgICAgLyogVGhlIFdpbjMyIGVycm9yIGlzIGFscmVhZHkgc2V0LCBidXQgd2UgYWxzbyBzZXQgZXJybm8gZm9yCisgICAgICAgICAgIGNhbGxlcnMgd2hvIGV4cGVjdCBpdCAqLworICAgICAgICBlcnJubyA9IHdpbmVycm9yX3RvX2Vycm5vKEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCAwLCBzdGF0dXMpOworICAgIC8qIHNwZWNpZmljIHRvIGZzdGF0KCkgKi8KKyAgICBzdGF0dXMtPnN0X2lubyA9ICgoKF9faW50NjQpaW5mby5uRmlsZUluZGV4SGlnaCk8PDMyKSArIGluZm8ubkZpbGVJbmRleExvdzsKKyAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgcmV0dXJuIGZzdGF0KGZkLCBzdGF0dXMpOworI2VuZGlmCit9CisKKy8qIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUuCisKKyAgIE9uIFBPU0lYLCB1c2UgZnN0YXQoKS4KKworICAgT24gV2luZG93cywgdXNlIEdldEZpbGVUeXBlKCkgYW5kIEdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKCkgd2hpY2ggc3VwcG9ydAorICAgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHQi4gIGZzdGF0KCkgbWF5IGZhaWwgd2l0aCBFT1ZFUkZMT1cgb24gZmlsZXMgbGFyZ2VyCisgICB0aGFuIDIgR0IgYmVjYXVzZSB0aGUgZmlsZSBzaXplIHR5cGUgaXMgYW4gc2lnbmVkIDMyLWJpdCBpbnRlZ2VyOiBzZWUgaXNzdWUKKyAgICMyMzE1Mi4KKworICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuIE9uIFdpbmRvd3MsIHNldCB0aGUgbGFzdCBXaW5kb3dzCisgICBlcnJvciBvbiBlcnJvci4gT24gUE9TSVgsIHNldCBlcnJubyBvbiBlcnJvci4gRmlsbCBzdGF0dXMgYW5kIHJldHVybiAwIG9uCisgICBzdWNjZXNzLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBHZXRGaWxlVHlwZSgpIGFuZCBHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSgpLCBvcgorICAgdG8gY2FsbCBmc3RhdCgpLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgR0lMLiAqLworaW50CitfUHlfZnN0YXQoaW50IGZkLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpCit7CisgICAgaW50IHJlczsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBfUHlfZnN0YXRfbm9yYWlzZShmZCwgc3RhdHVzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlcyAhPSAwKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyNlbHNlCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQogCiAvKiBDYWxsIF93c3RhdCgpIG9uIFdpbmRvd3MsIG9yIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQKICAgIGNhbGwgc3RhdCgpIG90aGVyd2lzZS4gT25seSBmaWxsIHN0X21vZGUgYXR0cmlidXRlIG9uIFdpbmRvd3MuCkBAIC01NzUsNyArNzMwLDYgQEAKICNlbmRpZgogfQogCi0jZW5kaWYKIAogc3RhdGljIGludAogZ2V0X2luaGVyaXRhYmxlKGludCBmZCwgaW50IHJhaXNlKQpAQCAtNTkwLDcgKzc0NCw5IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTY2NSw3ICs4MjEsOSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC03NjcsNDAgKzkyNSw5MCBAQAogICAgIHJldHVybiBzZXRfaW5oZXJpdGFibGUoZmQsIGluaGVyaXRhYmxlLCAxLCBhdG9taWNfZmxhZ193b3Jrcyk7CiB9CiAKLS8qIE9wZW4gYSBmaWxlIHdpdGggdGhlIHNwZWNpZmllZCBmbGFncyAod3JhcHBlciB0byBvcGVuKCkgZnVuY3Rpb24pLgotICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4gKi8KLWludAotX1B5X29wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncykKK3N0YXRpYyBpbnQKK19QeV9vcGVuX2ltcGwoY29uc3QgY2hhciAqcGF0aG5hbWUsIGludCBmbGFncywgaW50IGdpbF9oZWxkKQogewogICAgIGludCBmZDsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBmbGFncyB8IE9fTk9JTkhFUklUKTsKLSAgICBpZiAoZmQgPCAwKQotICAgICAgICByZXR1cm4gZmQ7Ci0jZWxzZQotCisgICAgaW50IGFzeW5jX2VyciA9IDA7CisjaWZuZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgKmF0b21pY19mbGFnX3dvcmtzOwotI2lmZGVmIE9fQ0xPRVhFQworI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgZmxhZ3MgfD0gT19OT0lOSEVSSVQ7CisjZWxpZiBkZWZpbmVkKE9fQ0xPRVhFQykKICAgICBhdG9taWNfZmxhZ193b3JrcyA9ICZfUHlfb3Blbl9jbG9leGVjX3dvcmtzOwogICAgIGZsYWdzIHw9IE9fQ0xPRVhFQzsKICNlbHNlCiAgICAgYXRvbWljX2ZsYWdfd29ya3MgPSBOVUxMOwogI2VuZGlmCi0gICAgZmQgPSBvcGVuKHBhdGhuYW1lLCBmbGFncyk7Ci0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIGZkOwogCi0gICAgaWYgKHNldF9pbmhlcml0YWJsZShmZCwgMCwgMCwgYXRvbWljX2ZsYWdfd29ya3MpIDwgMCkgeworICAgIGlmIChnaWxfaGVsZCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBmZCA9IG9wZW4ocGF0aG5hbWUsIGZsYWdzKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gd2hpbGUgKGZkIDwgMAorICAgICAgICAgICAgICAgICAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CisgICAgICAgIGlmIChhc3luY19lcnIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZShQeUV4Y19PU0Vycm9yLCBwYXRobmFtZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZkID0gb3BlbihwYXRobmFtZSwgZmxhZ3MpOworICAgICAgICBpZiAoZmQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHNldF9pbmhlcml0YWJsZShmZCwgMCwgZ2lsX2hlbGQsIGF0b21pY19mbGFnX3dvcmtzKSA8IDApIHsKICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KKyNlbmRpZgorCiAgICAgcmV0dXJuIGZkOwogfQogCisvKiBPcGVuIGEgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgZmxhZ3MgKHdyYXBwZXIgdG8gb3BlbigpIGZ1bmN0aW9uKS4KKyAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbgorICAgZXJyb3IuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKG9wZW4oKSBmYWlscyB3aXRoIEVJTlRSKSwgcmV0cnkgdGhlIHN5c2NhbGwsCisgICBleGNlcHQgaWYgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBvcGVuKCkuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHRoZSBHSUwuICovCitpbnQKK19QeV9vcGVuKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MpCit7CisgICAgLyogX1B5X29wZW4oKSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBHSUwgaGVsZC4gKi8KKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyAgICByZXR1cm4gX1B5X29wZW5faW1wbChwYXRobmFtZSwgZmxhZ3MsIDEpOworfQorCisvKiBPcGVuIGEgZmlsZSB3aXRoIHRoZSBzcGVjaWZpZWQgZmxhZ3MgKHdyYXBwZXIgdG8gb3BlbigpIGZ1bmN0aW9uKS4KKyAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciBvbiBzdWNjZXNzLiBTZXQgZXJybm8gYW5kIHJldHVybiAtMSBvbiBlcnJvci4KKworICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4KKworICAgSWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGZhaWwgd2l0aCBFSU5UUi4gKi8KK2ludAorX1B5X29wZW5fbm9yYWlzZShjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzKQoreworICAgIHJldHVybiBfUHlfb3Blbl9pbXBsKHBhdGhuYW1lLCBmbGFncywgMCk7Cit9CisKIC8qIE9wZW4gYSBmaWxlLiBVc2UgX3dmb3BlbigpIG9uIFdpbmRvd3MsIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgbG9jYWxlCi0gICBlbmNvZGluZyBhbmQgdXNlIGZvcGVuKCkgb3RoZXJ3aXNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIGNyZWF0ZWQKLSAgIG5vbi1pbmhlcml0YWJsZS4gKi8KKyAgIGVuY29kaW5nIGFuZCB1c2UgZm9wZW4oKSBvdGhlcndpc2UuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIElmIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLCBmYWlsIHdpdGggRUlOVFIuICovCiBGSUxFICoKIF9QeV93Zm9wZW4oY29uc3Qgd2NoYXJfdCAqcGF0aCwgY29uc3Qgd2NoYXJfdCAqbW9kZSkKIHsKQEAgLTgxNCw3ICsxMDIyLDcgQEAKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcGF0aCA9IF9QeV93Y2hhcjJjaGFyKHBhdGgsIE5VTEwpOworICAgIGNwYXRoID0gUHlfRW5jb2RlTG9jYWxlKHBhdGgsIE5VTEwpOwogICAgIGlmIChjcGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmID0gZm9wZW4oY3BhdGgsIGNtb2RlKTsKQEAgLTgzMSw3ICsxMDM5LDExIEBACiAgICAgcmV0dXJuIGY7CiB9CiAKLS8qIFdyYXBwZXIgdG8gZm9wZW4oKS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4gKi8KKy8qIFdyYXBwZXIgdG8gZm9wZW4oKS4KKworICAgVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBjcmVhdGVkIG5vbi1pbmhlcml0YWJsZS4KKworICAgSWYgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGZhaWwgd2l0aCBFSU5UUi4gKi8KIEZJTEUqCiBfUHlfZm9wZW4oY29uc3QgY2hhciAqcGF0aG5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCiB7CkBAIC04NDYsMjAgKzEwNTgsMzAgQEAKIH0KIAogLyogT3BlbiBhIGZpbGUuIENhbGwgX3dmb3BlbigpIG9uIFdpbmRvd3MsIG9yIGVuY29kZSB0aGUgcGF0aCB0byB0aGUgZmlsZXN5c3RlbQotICAgZW5jb2RpbmcgYW5kIGNhbGwgZm9wZW4oKSBvdGhlcndpc2UuIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZAotICAgbm9uLWluaGVyaXRhYmxlLgorICAgZW5jb2RpbmcgYW5kIGNhbGwgZm9wZW4oKSBvdGhlcndpc2UuCiAKLSAgIFJldHVybiB0aGUgbmV3IGZpbGUgb2JqZWN0IG9uIHN1Y2Nlc3MsIG9yIE5VTEwgaWYgdGhlIGZpbGUgY2Fubm90IGJlIG9wZW4gb3IKLSAgIChpZiBQeUVycl9PY2N1cnJlZCgpKSBvbiB1bmljb2RlIGVycm9yLiAqLworICAgUmV0dXJuIHRoZSBuZXcgZmlsZSBvYmplY3Qgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTAorICAgb24gZXJyb3IuCisKKyAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBub24taW5oZXJpdGFibGUuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKG9wZW4oKSBmYWlscyB3aXRoIEVJTlRSKSwgcmV0cnkgdGhlIHN5c2NhbGwsCisgICBleGNlcHQgaWYgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uLgorCisgICBSZWxlYXNlIHRoZSBHSUwgdG8gY2FsbCBfd2ZvcGVuKCkgb3IgZm9wZW4oKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQKKyAgIHRoZSBHSUwuICovCiBGSUxFKgogX1B5X2ZvcGVuX29iaihQeU9iamVjdCAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKIHsKICAgICBGSUxFICpmOworICAgIGludCBhc3luY19lcnIgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB3Y2hhcl90ICp3cGF0aDsKICAgICB3Y2hhcl90IHdtb2RlWzEwXTsKICAgICBpbnQgdXNpemU7CiAKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAic3RyIGZpbGUgcGF0aCBleHBlY3RlZCB1bmRlciBXaW5kb3dzLCBnb3QgJVIiLApAQCAtODcxLDI2ICsxMDkzLDI0NyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIDAsIG1vZGUsIC0xLCB3bW9kZSwgc2l6ZW9mKHdtb2RlKSk7Ci0gICAgaWYgKHVzaXplID09IDApCisgICAgaWYgKHVzaXplID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGYgPSBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CisgICAgZG8geworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGYgPSBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZiA9PSBOVUxMCisgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOwogI2Vsc2UKICAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgY2hhciAqcGF0aF9ieXRlczsKKworICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworCiAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIocGF0aCwgJmJ5dGVzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZiA9IGZvcGVuKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbW9kZSk7CisgICAgcGF0aF9ieXRlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKworICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBmID0gZm9wZW4ocGF0aF9ieXRlcywgbW9kZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSB3aGlsZSAoZiA9PSBOVUxMCisgICAgICAgICAgICAgJiYgZXJybm8gPT0gRUlOVFIgJiYgIShhc3luY19lcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKSkpOworCiAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICNlbmRpZgotICAgIGlmIChmID09IE5VTEwpCisgICAgaWYgKGFzeW5jX2VycikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG1ha2Vfbm9uX2luaGVyaXRhYmxlKGZpbGVubyhmKSkgPCAwKSB7CisKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNldF9pbmhlcml0YWJsZShmaWxlbm8oZiksIDAsIDEsIE5VTEwpIDwgMCkgewogICAgICAgICBmY2xvc2UoZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZjsKIH0KIAorLyogUmVhZCBjb3VudCBieXRlcyBmcm9tIGZkIGludG8gYnVmLgorCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG51bWJlciBvZiByZWFkIGJ5dGVzLCBpdCBjYW4gYmUgbG93ZXIgdGhhbiBjb3VudC4KKyAgIElmIHRoZSBjdXJyZW50IGZpbGUgb2Zmc2V0IGlzIGF0IG9yIHBhc3QgdGhlIGVuZCBvZiBmaWxlLCBubyBieXRlcyBhcmUgcmVhZCwKKyAgIGFuZCByZWFkKCkgcmV0dXJucyB6ZXJvLgorCisgICBPbiBlcnJvciwgcmFpc2UgYW4gZXhjZXB0aW9uLCBzZXQgZXJybm8gYW5kIHJldHVybiAtMS4KKworICAgV2hlbiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAocmVhZCgpIGZhaWxzIHdpdGggRUlOVFIpLCByZXRyeSB0aGUgc3lzY2FsbC4KKyAgIElmIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIHJldHVybnMgLTEKKyAgICh0aGUgc3lzY2FsbCBpcyBub3QgcmV0cmllZCkuCisKKyAgIFJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHJlYWQoKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIEdJTC4gKi8KK1B5X3NzaXplX3QKK19QeV9yZWFkKGludCBmZCwgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCit7CisgICAgUHlfc3NpemVfdCBuOworICAgIGludCBlcnI7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICAvKiBfUHlfcmVhZCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAorICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGNvdW50ID4gSU5UX01BWCkgeworICAgICAgICAvKiBPbiBXaW5kb3dzLCB0aGUgY291bnQgcGFyYW1ldGVyIG9mIHJlYWQoKSBpcyBhbiBpbnQgKi8KKyAgICAgICAgY291bnQgPSBJTlRfTUFYOworICAgIH0KKyNlbHNlCisgICAgaWYgKGNvdW50ID4gUFlfU1NJWkVfVF9NQVgpIHsKKyAgICAgICAgLyogaWYgY291bnQgaXMgZ3JlYXRlciB0aGFuIFBZX1NTSVpFX1RfTUFYLAorICAgICAgICAgKiByZWFkKCkgcmVzdWx0IGlzIHVuZGVmaW5lZCAqLworICAgICAgICBjb3VudCA9IFBZX1NTSVpFX1RfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGRvIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBlcnJubyA9IDA7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBuID0gcmVhZChmZCwgYnVmLCAoaW50KWNvdW50KTsKKyNlbHNlCisgICAgICAgIG4gPSByZWFkKGZkLCBidWYsIGNvdW50KTsKKyNlbmRpZgorICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9DaGVja1NpZ25hbHMoKQorICAgICAgICAgKiBhbmQgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnIgPT0gRUlOVFIgJiYKKyAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgaWYgKGFzeW5jX2VycikgeworICAgICAgICAvKiByZWFkKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChmYWlsZWQgd2l0aCBFSU5UUikKKyAgICAgICAgICogYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgYXNzZXJ0KGVycm5vID09IEVJTlRSICYmIFB5RXJyX09jY3VycmVkKCkpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuIDwgMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CitfUHlfd3JpdGVfaW1wbChpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBpbnQgZ2lsX2hlbGQpCit7CisgICAgUHlfc3NpemVfdCBuOworICAgIGludCBlcnI7CisgICAgaW50IGFzeW5jX2VyciA9IDA7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgaWYgKGdpbF9oZWxkKSB7CisgICAgICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCisgICAgICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChjb3VudCA+IDMyNzY3ICYmIGlzYXR0eShmZCkpIHsKKyAgICAgICAgLyogSXNzdWUgIzExMzk1OiB0aGUgV2luZG93cyBjb25zb2xlIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QKKyAgICAgICAgICAgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmIHN0ZG91dCBtb2RlIGlzCisgICAgICAgICAgIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLAorICAgICAgICAgICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuICovCisgICAgICAgIGNvdW50ID0gMzI3Njc7CisgICAgfQorICAgIGVsc2UgaWYgKGNvdW50ID4gSU5UX01BWCkKKyAgICAgICAgY291bnQgPSBJTlRfTUFYOworI2Vsc2UKKyAgICBpZiAoY291bnQgPiBQWV9TU0laRV9UX01BWCkgeworICAgICAgICAvKiB3cml0ZSgpIHNob3VsZCB0cnVuY2F0ZSBjb3VudCB0byBQWV9TU0laRV9UX01BWCwgYnV0IGl0J3Mgc2FmZXIKKyAgICAgICAgICogdG8gZG8gaXQgb3Vyc2VsZiB0byBoYXZlIGEgcG9ydGFibGUgYmVoYXZpb3VyLiAqLworICAgICAgICBjb3VudCA9IFBZX1NTSVpFX1RfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKGdpbF9oZWxkKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBuID0gd3JpdGUoZmQsIGJ1ZiwgKGludCljb3VudCk7CisjZWxzZQorICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIGNvdW50KTsKKyNlbmRpZgorICAgICAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfQ2hlY2tTaWduYWxzKCkKKyAgICAgICAgICAgICAqIGFuZCBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCisgICAgICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVyciA9PSBFSU5UUiAmJgorICAgICAgICAgICAgICAgICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBuID0gd3JpdGUoZmQsIGJ1ZiwgKGludCljb3VudCk7CisjZWxzZQorICAgICAgICAgICAgbiA9IHdyaXRlKGZkLCBidWYsIGNvdW50KTsKKyNlbmRpZgorICAgICAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVyciA9PSBFSU5UUik7CisgICAgfQorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAoYXN5bmNfZXJyKSB7CisgICAgICAgIC8qIHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIChmYWlsZWQgd2l0aCBFSU5UUikKKyAgICAgICAgICAgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbiAoaWYgZ2lsX2hlbGQgaXMKKyAgICAgICAgICAgbm9uemVybykuICovCisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICBhc3NlcnQoZXJybm8gPT0gRUlOVFIgJiYgKCFnaWxfaGVsZCB8fCBQeUVycl9PY2N1cnJlZCgpKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKG4gPCAwKSB7CisgICAgICAgIGlmIChnaWxfaGVsZCkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZXJybm8gPSBlcnI7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyogV3JpdGUgY291bnQgYnl0ZXMgb2YgYnVmIGludG8gZmQuCisKKyAgIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMsIGl0IGNhbiBiZSBsb3dlciB0aGFuIGNvdW50CisgICBpbmNsdWRpbmcgMC4gT24gZXJyb3IsIHJhaXNlIGFuIGV4Y2VwdGlvbiwgc2V0IGVycm5vIGFuZCByZXR1cm4gLTEuCisKKyAgIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKHdyaXRlKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsLgorICAgSWYgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gcmV0dXJucyAtMQorICAgKHRoZSBzeXNjYWxsIGlzIG5vdCByZXRyaWVkKS4KKworICAgUmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgd3JpdGUoKS4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIEdJTC4gKi8KK1B5X3NzaXplX3QKK19QeV93cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgIC8qIF9QeV93cml0ZSgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgd3JpdGUoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKKyAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIHJldHVybiBfUHlfd3JpdGVfaW1wbChmZCwgYnVmLCBjb3VudCwgMSk7Cit9CisKKy8qIFdyaXRlIGNvdW50IGJ5dGVzIG9mIGJ1ZiBpbnRvIGZkLgorICoKKyAqIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gYnl0ZXMsIGl0IGNhbiBiZSBsb3dlciB0aGFuIGNvdW50CisgKiBpbmNsdWRpbmcgMC4gT24gZXJyb3IsIHNldCBlcnJubyBhbmQgcmV0dXJuIC0xLgorICoKKyAqIFdoZW4gaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKHdyaXRlKCkgZmFpbHMgd2l0aCBFSU5UUiksIHJldHJ5IHRoZSBzeXNjYWxsCisgKiB3aXRob3V0IGNhbGxpbmcgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlci4gKi8KK1B5X3NzaXplX3QKK19QeV93cml0ZV9ub3JhaXNlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCit7CisgICAgcmV0dXJuIF9QeV93cml0ZV9pbXBsKGZkLCBidWYsIGNvdW50LCAwKTsKK30KKwogI2lmZGVmIEhBVkVfUkVBRExJTksKIAogLyogUmVhZCB2YWx1ZSBvZiBzeW1ib2xpYyBsaW5rLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZywgZGVjb2RlCkBAIC05MDUsNyArMTM0OCw3IEBACiAgICAgaW50IHJlczsKICAgICBzaXplX3QgcjE7CiAKLSAgICBjcGF0aCA9IF9QeV93Y2hhcjJjaGFyKHBhdGgsIE5VTEwpOworICAgIGNwYXRoID0gUHlfRW5jb2RlTG9jYWxlKHBhdGgsIE5VTEwpOwogICAgIGlmIChjcGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gLTE7CkBAIC05MTksNyArMTM2Miw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgY2J1ZltyZXNdID0gJ1wwJzsgLyogYnVmIHdpbGwgYmUgbnVsbCB0ZXJtaW5hdGVkICovCi0gICAgd2J1ZiA9IF9QeV9jaGFyMndjaGFyKGNidWYsICZyMSk7CisgICAgd2J1ZiA9IFB5X0RlY29kZUxvY2FsZShjYnVmLCAmcjEpOwogICAgIGlmICh3YnVmID09IE5VTEwpIHsKICAgICAgICAgZXJybm8gPSBFSU5WQUw7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTk1MCw3ICsxMzkzLDcgQEAKICAgICB3Y2hhcl90ICp3cmVzb2x2ZWRfcGF0aDsKICAgICBjaGFyICpyZXM7CiAgICAgc2l6ZV90IHI7Ci0gICAgY3BhdGggPSBfUHlfd2NoYXIyY2hhcihwYXRoLCBOVUxMKTsKKyAgICBjcGF0aCA9IFB5X0VuY29kZUxvY2FsZShwYXRoLCBOVUxMKTsKICAgICBpZiAoY3BhdGggPT0gTlVMTCkgewogICAgICAgICBlcnJubyA9IEVJTlZBTDsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NjAsNyArMTQwMyw3IEBACiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHdyZXNvbHZlZF9wYXRoID0gX1B5X2NoYXIyd2NoYXIoY3Jlc29sdmVkX3BhdGgsICZyKTsKKyAgICB3cmVzb2x2ZWRfcGF0aCA9IFB5X0RlY29kZUxvY2FsZShjcmVzb2x2ZWRfcGF0aCwgJnIpOwogICAgIGlmICh3cmVzb2x2ZWRfcGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRUlOVkFMOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTk5Myw3ICsxNDM2LDcgQEAKIAogICAgIGlmIChnZXRjd2QoZm5hbWUsIFB5X0FSUkFZX0xFTkdUSChmbmFtZSkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHduYW1lID0gX1B5X2NoYXIyd2NoYXIoZm5hbWUsICZsZW4pOworICAgIHduYW1lID0gUHlfRGVjb2RlTG9jYWxlKGZuYW1lLCAmbGVuKTsKICAgICBpZiAod25hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPD0gbGVuKSB7CkBAIC0xMDI1LDcgKzE0NjgsOSBAQAogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTAzNSw3ICsxNDgwLDkgQEAKICAgICBmdHlwZSA9IEdldEZpbGVUeXBlKGhhbmRsZSk7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGZkID0gZHVwKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC0xMDQ1LDEzICsxNDkyLDE3IEBACiAgICAgLyogQ2hhcmFjdGVyIGZpbGVzIGxpa2UgY29uc29sZSBjYW5ub3QgYmUgbWFrZSBub24taW5oZXJpdGFibGUgKi8KICAgICBpZiAoZnR5cGUgIT0gRklMRV9UWVBFX0NIQVIpIHsKICAgICAgICAgaWYgKF9QeV9zZXRfaW5oZXJpdGFibGUoZmQsIDAsIE5VTEwpIDwgMCkgeworICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KICNlbGlmIGRlZmluZWQoSEFWRV9GQ05UTF9IKSAmJiBkZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGZkID0gZmNudGwoZmQsIEZfRFVQRkRfQ0xPRVhFQywgMCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwpAQCAtMTA2MCw3ICsxNTExLDkgQEAKIAogI2Vsc2UKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGZkID0gZHVwKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CkBAIC0xMDY4LDEwICsxNTIxLDE1MiBAQAogICAgIH0KIAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCAwLCBOVUxMKSA8IDApIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gZmQ7CiB9CiAKKyNpZm5kZWYgTVNfV0lORE9XUworLyogR2V0IHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IuCisgICBSZXR1cm4gMCBpZiB0aGUgT19OT05CTE9DSyBmbGFnIGlzIHNldCwgMSBpZiB0aGUgZmxhZyBpcyBjbGVhcmVkLAorICAgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeV9nZXRfYmxvY2tpbmcoaW50IGZkKQoreworICAgIGludCBmbGFnczsKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGTCwgMCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBpZiAoZmxhZ3MgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAhKGZsYWdzICYgT19OT05CTE9DSyk7Cit9CisKKy8qIFNldCB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KKworICAgU2V0IHRoZSBPX05PTkJMT0NLIGZsYWcgaWYgYmxvY2tpbmcgaXMgRmFsc2UsIGNsZWFyIHRoZSBPX05PTkJMT0NLIGZsYWcKKyAgIG90aGVyd2lzZS4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeV9zZXRfYmxvY2tpbmcoaW50IGZkLCBpbnQgYmxvY2tpbmcpCit7CisjaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKSAmJiBkZWZpbmVkKEZJT05CSU8pCisgICAgaW50IGFyZyA9ICFibG9ja2luZzsKKyAgICBpZiAoaW9jdGwoZmQsIEZJT05CSU8sICZhcmcpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyNlbHNlCisgICAgaW50IGZsYWdzLCByZXM7CisKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGTCwgMCk7CisgICAgaWYgKGZsYWdzID49IDApIHsKKyAgICAgICAgaWYgKGJsb2NraW5nKQorICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyAmICh+T19OT05CTE9DSyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBPX05PTkJMT0NLOworCisgICAgICAgIHJlcyA9IGZjbnRsKGZkLCBGX1NFVEZMLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzID0gLTE7CisgICAgfQorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyNlbmRpZgorICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgcmV0dXJuIC0xOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCisvKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KKyAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKKyAqLworCisvKiBNaWNyb3NvZnQgQ1JUIGluIFZTMjAwNSBhbmQgaGlnaGVyIHdpbGwgdmVyaWZ5IHRoYXQgYSBmaWxlaGFuZGxlIGlzCisgKiB2YWxpZCBhbmQgcmFpc2UgYW4gYXNzZXJ0aW9uIGlmIGl0IGlzbid0LgorICogTm9ybWFsbHksIGFuIGludmFsaWQgZmQgaXMgbGlrZWx5IHRvIGJlIGEgQyBwcm9ncmFtIGVycm9yIGFuZCB0aGVyZWZvcmUKKyAqIGFuIGFzc2VydGlvbiBjYW4gYmUgdXNlZnVsLCBidXQgaXQgZG9lcyBjb250cmFkaWN0IHRoZSBQT1NJWCBzdGFuZGFyZAorICogd2hpY2ggZm9yIHdyaXRlKDIpIHN0YXRlczoKKyAqICAgICJPdGhlcndpc2UsIC0xIHNoYWxsIGJlIHJldHVybmVkIGFuZCBlcnJubyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiIKKyAqICAgICJbRUJBREZdIFRoZSBmaWxkZXMgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIG9wZW4gZm9yCisgKiAgICAgd3JpdGluZy4iCisgKiBGdXJ0aGVybW9yZSwgcHl0aG9uIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbnkgb2xkIGludGVnZXIKKyAqIGFzIGEgZmQgYW5kIHNob3VsZCBtZXJlbHkgcmFpc2UgYSBweXRob24gZXhjZXB0aW9uIG9uIGVycm9yLgorICogVGhlIE1pY3Jvc29mdCBDUlQgZG9lc24ndCBwcm92aWRlIGFuIG9mZmljaWFsIHdheSB0byBjaGVjayBmb3IgdGhlCisgKiB2YWxpZGl0eSBvZiBhIGZpbGUgZGVzY3JpcHRvciwgYnV0IHdlIGNhbiBlbXVsYXRlIGl0cyBpbnRlcm5hbCBiZWhhdmlvdXIKKyAqIGJ5IHVzaW5nIHRoZSBleHBvcnRlZCBfX3BpbmZvIGRhdGEgbWVtYmVyIGFuZCBrbm93bGVkZ2Ugb2YgdGhlCisgKiBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGludm9sdmVkLgorICogVGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSB1cGRhdGVkIGZvciBlYWNoIHZlcnNpb24gb2YgdmlzdWFsIHN0dWRpbworICogYWNjb3JkaW5nIHRvIHRoZSBmaWxlIGludGVybmFsLmggaW4gdGhlIENSVCBzb3VyY2UsIHVudGlsIE1TIGNvbWVzCisgKiB1cCB3aXRoIGEgbGVzcyBoYWNreSB3YXkgdG8gZG8gdGhpcy4KKyAqIChhbGwgb2YgdGhpcyBpcyB0byBhdm9pZCBnbG9iYWxseSBtb2RpZnlpbmcgdGhlIENSVCBiZWhhdmlvdXIgdXNpbmcKKyAqIF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigpIGFuZCBfQ3J0U2V0UmVwb3J0TW9kZSgpKQorICovCisvKiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuCisgKiBPbmx5IHRoZSBmaXJzdCBpdGVtcyBtdXN0IGJlIHByZXNlbnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnRwdHJfdCBvc2ZobmQ7CisgICAgY2hhciBvc2ZpbGU7Cit9IG15X2lvaW5mbzsKKworZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyICogX19waW9pbmZvW107CisjZGVmaW5lIElPSU5GT19MMkUgNQorI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0CisjZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKKyNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQorI2RlZmluZSBGT1BFTiAweDAxCisjZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKKworLyogVGhpcyBmdW5jdGlvbiBlbXVsYXRlcyB3aGF0IHRoZSB3aW5kb3dzIENSVCBkb2VzIHRvIHZhbGlkYXRlIGZpbGUgaGFuZGxlcyAqLworaW50CitfUHlWZXJpZnlfZmQoaW50IGZkKQoreworICAgIGNvbnN0IGludCBpMSA9IGZkID4+IElPSU5GT19MMkU7CisgICAgY29uc3QgaW50IGkyID0gZmQgJiAoKDEgPDwgSU9JTkZPX0wyRSkgLSAxKTsKKworICAgIHN0YXRpYyBzaXplX3Qgc2l6ZW9mX2lvaW5mbyA9IDA7CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBpb2luZm8gc3RydWN0dXJlLAorICAgICAqIGFzIHVzZWQgYnkgdGhlIENSVCBsb2FkZWQgaW4gbWVtb3J5CisgICAgICovCisgICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCAmJiBfX3Bpb2luZm9bMF0gIT0gTlVMTCkgeworICAgICAgICBzaXplb2ZfaW9pbmZvID0gX21zaXplKF9fcGlvaW5mb1swXSkgLyBJT0lORk9fQVJSQVlfRUxUUzsKKyAgICB9CisgICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCkgeworICAgICAgICAvKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLi4uICovCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICAvKiBTZWUgdGhhdCBpdCBpc24ndCBhIHNwZWNpYWwgQ0xFQVIgZmlsZW5vICovCisgICAgaWYgKGZkICE9IF9OT19DT05TT0xFX0ZJTEVOTykgeworICAgICAgICAvKiBNaWNyb3NvZnQgQ1JUIHdvdWxkIGNoZWNrIHRoYXQgMDw9ZmQ8X25oYW5kbGUgYnV0IHdlIGNhbid0IGRvIHRoYXQuICBJbnN0ZWFkCisgICAgICAgICAqIHdlIGNoZWNrIHBvaW50ZXIgdmFsaWRpdHkgYW5kIG90aGVyIGluZm8KKyAgICAgICAgICovCisgICAgICAgIGlmICgwIDw9IGkxICYmIGkxIDwgSU9JTkZPX0FSUkFZUyAmJiBfX3Bpb2luZm9baTFdICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIGZpbmFsbHksIGNoZWNrIHRoYXQgdGhlIGZpbGUgaXMgb3BlbiAqLworICAgICAgICAgICAgbXlfaW9pbmZvKiBpbmZvID0gKG15X2lvaW5mbyopKF9fcGlvaW5mb1tpMV0gKyBpMiAqIHNpemVvZl9pb2luZm8pOworICAgICAgICAgICAgaWYgKGluZm8tPm9zZmlsZSAmIEZPUEVOKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgIGZhaWw6CisgICAgZXJybm8gPSBFQkFERjsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8qIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggZTNhODE0OS4uMDU2YmI3NiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTg0Niw2ICs4NDYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCBzcGVjaWZpZXIgJ2MnIik7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KKyAgICAgICAgLyogZXJyb3IgdG8gcmVxdWVzdCBhbHRlcm5hdGUgZm9ybWF0ICovCisgICAgICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCB3aXRoIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3JtYXQgc3BlY2lmaWVyICdjJyIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAKICAgICAgICAgLyogdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgZm9ybWF0Y2hhcigpICovCiAgICAgICAgIC8qIEludGVnZXIgaW5wdXQgdHJ1bmNhdGVkIHRvIGEgY2hhcmFjdGVyICovCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggOWJjNjYyYi4uNjc2ZjM5NSAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMyw2ICszLDcgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImltcG9ydGxpYi5oIgorI2luY2x1ZGUgImltcG9ydGxpYl9leHRlcm5hbC5oIgogCiAvKiBJbiBvcmRlciB0byB0ZXN0IHRoZSBzdXBwb3J0IGZvciBmcm96ZW4gbW9kdWxlcywgYnkgZGVmYXVsdCB3ZQogICAgZGVmaW5lIGEgc2luZ2xlIGZyb3plbiBtb2R1bGUsIF9faGVsbG9fXy4gIExvYWRpbmcgaXQgd2lsbCBwcmludApAQCAtMzEsNiArMzIsOCBAQAogc3RhdGljIGNvbnN0IHN0cnVjdCBfZnJvemVuIF9QeUltcG9ydF9Gcm96ZW5Nb2R1bGVzW10gPSB7CiAgICAgLyogaW1wb3J0bGliICovCiAgICAgeyJfZnJvemVuX2ltcG9ydGxpYiIsIF9QeV9NX19pbXBvcnRsaWIsIChpbnQpc2l6ZW9mKF9QeV9NX19pbXBvcnRsaWIpfSwKKyAgICB7Il9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsIiwgX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbCwKKyAgICAgICAgKGludClzaXplb2YoX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbCl9LAogICAgIC8qIFRlc3QgbW9kdWxlICovCiAgICAgeyJfX2hlbGxvX18iLCBNX19faGVsbG9fXywgU0laRX0sCiAgICAgLyogVGVzdCBwYWNrYWdlIChuZWdhdGl2ZSBzaXplIGluZGljYXRlcyBwYWNrYWdlLW5lc3MpICovCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVubWFpbi5jIGIvUHl0aG9uL2Zyb3plbm1haW4uYwppbmRleCBiMDVjOTRhLi5kZThiZDM1IDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVubWFpbi5jCisrKyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAogICAgIHNldGxvY2FsZShMQ19BTEwsICIiKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGFyZ3ZfY29weVtpXSA9IF9QeV9jaGFyMndjaGFyKGFyZ3ZbaV0sIE5VTEwpOworICAgICAgICBhcmd2X2NvcHlbaV0gPSBQeV9EZWNvZGVMb2NhbGUoYXJndltpXSwgTlVMTCk7CiAgICAgICAgIGFyZ3ZfY29weTJbaV0gPSBhcmd2X2NvcHlbaV07CiAgICAgICAgIGlmICghYXJndl9jb3B5W2ldKSB7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBkZWNvZGUgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAjJWlcbiIsCmRpZmYgLS1naXQgYS9QeXRob24vZnV0dXJlLmMgYi9QeXRob24vZnV0dXJlLmMKaW5kZXggODFlYWI1NC4uMTYzZjg3ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Z1dHVyZS5jCisrKyBiL1B5dGhvbi9mdXR1cmUuYwpAQCAtNDAsNiArNDAsOCBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGZlYXR1cmUsIEZVVFVSRV9CQVJSWV9BU19CREZMKSA9PSAwKSB7CiAgICAgICAgICAgICBmZi0+ZmZfZmVhdHVyZXMgfD0gQ09fRlVUVVJFX0JBUlJZX0FTX0JERkw7CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGZlYXR1cmUsIEZVVFVSRV9HRU5FUkFUT1JfU1RPUCkgPT0gMCkgeworICAgICAgICAgICAgZmYtPmZmX2ZlYXR1cmVzIHw9IENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUDsKICAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZmVhdHVyZSwgImJyYWNlcyIpID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGEgY2hhbmNlIik7CmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCA2OTAyZDEzLi5jMzY1ZmMyIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTg3MiwxMCArODcyLDEwIEBACiAgICAgICAgICAgICBTVE9SRV9TSVpFKGNvdW50KTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHN0cmxlbigqcCkgIT0gY291bnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICJieXRlcyB3aXRob3V0IG51bGwgYnl0ZXMiLAotICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgICBpZiAoc3RybGVuKCpwKSAhPSAoc2l6ZV90KWNvdW50KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk0OCwxNiArOTQ4LDE1IEBACiAgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKHN0cmxlbihzYXJnKSAhPSAoc2l6ZV90KWxlbikgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICpwID0gc2FyZzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihjID09ICd6JyA/ICJzdHIgb3IgTm9uZSIgOiAic3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoKnAgIT0gTlVMTCAmJiBzYXJnICE9IE5VTEwgJiYgKFB5X3NzaXplX3QpIHN0cmxlbigqcCkgIT0gbGVuKQotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICBjID09ICd6JyA/ICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAic3RyIHdpdGhvdXQgbnVsbCBjaGFyYWN0ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTk5NSwxMCArOTk0LDEwIEBACiAgICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShhcmcsICZsZW4pOwogICAgICAgICAgICAgICAgIGlmICgqcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmxlbigqcCkgIT0gbGVuKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfc3RybGVuKCpwKSAhPSAoc2l6ZV90KWxlbikgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAnWicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTI0Niw3ICsxMjQ1LDggQEAKICAgICAgICAgICAgc3VwcG9ydHMgaXQgZGlyZWN0bHkuICovCiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCBQeUJVRl9XUklUQUJMRSkgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInJlYWQtd3JpdGUgYnVmZmVyIiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoInJlYWQtd3JpdGUgYnl0ZXMtbGlrZSBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CiAgICAgICAgIGlmICghUHlCdWZmZXJfSXNDb250aWd1b3VzKChQeV9idWZmZXIqKXAsICdDJykpIHsKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKFB5X2J1ZmZlciopcCk7CkBAIC0xMjg0LDcgKzEyODQsNyBAQAogICAgICplcnJtc2cgPSBOVUxMOwogICAgICpwID0gTlVMTDsKICAgICBpZiAocGIgIT0gTlVMTCAmJiBwYi0+YmZfcmVsZWFzZWJ1ZmZlciAhPSBOVUxMKSB7Ci0gICAgICAgICplcnJtc2cgPSAicmVhZC1vbmx5IHBpbm5lZCBidWZmZXIiOworICAgICAgICAqZXJybXNnID0gInJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdCI7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTEzMDAsNyArMTMwMCw3IEBACiBnZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjaGFyICoqZXJybXNnKQogewogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCB2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKLSAgICAgICAgKmVycm1zZyA9ICJieXRlcyBvciBidWZmZXIiOworICAgICAgICAqZXJybXNnID0gImJ5dGVzLWxpa2Ugb2JqZWN0IjsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoIVB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnQycpKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IGUwNDk5OWIuLjgyMTJiMmEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC05MiwzOTMgKzkyLDQwNiBAQAogc3RhdGljIGFyYyBhcmNzXzVfMFsxXSA9IHsKICAgICB7MTYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNV8xWzNdID0gewogICAgIHsxOCwgMn0sCiAgICAgezE5LCAyfSwKKyAgICB7MjAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNVszXSA9IHsKICAgICB7MSwgYXJjc181XzB9LAotICAgIHsyLCBhcmNzXzVfMX0sCisgICAgezMsIGFyY3NfNV8xfSwKICAgICB7MSwgYXJjc181XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182XzBbMV0gPSB7Ci0gICAgezIwLCAxfSwKKyAgICB7MjEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182XzFbMV0gPSB7Ci0gICAgezIxLCAyfSwKKyAgICB7MTksIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182XzJbMV0gPSB7Ci0gICAgezIyLCAzfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzZfM1syXSA9IHsKLSAgICB7MjMsIDR9LAotICAgIHsyNSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzZfNFsxXSA9IHsKLSAgICB7MjQsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182XzVbMV0gPSB7Ci0gICAgezI2LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNl82WzFdID0gewotICAgIHsyNSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzZfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182WzhdID0geworc3RhdGljIHN0YXRlIHN0YXRlc182WzNdID0gewogICAgIHsxLCBhcmNzXzZfMH0sCiAgICAgezEsIGFyY3NfNl8xfSwKICAgICB7MSwgYXJjc182XzJ9LAotICAgIHsyLCBhcmNzXzZfM30sCi0gICAgezEsIGFyY3NfNl80fSwKLSAgICB7MSwgYXJjc182XzV9LAotICAgIHsxLCBhcmNzXzZfNn0sCi0gICAgezEsIGFyY3NfNl83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfN18wWzFdID0gewotICAgIHsxMywgMX0sCisgICAgezIyLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfN18xWzJdID0gewotICAgIHsyNywgMn0sCi0gICAgezE1LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183XzFbMV0gPSB7CisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfN18yWzFdID0gewotICAgIHsxNSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzdfM1sxXSA9IHsKLSAgICB7MCwgM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183WzRdID0gewotICAgIHsxLCBhcmNzXzdfMH0sCi0gICAgezIsIGFyY3NfN18xfSwKLSAgICB7MSwgYXJjc183XzJ9LAotICAgIHsxLCBhcmNzXzdfM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMFszXSA9IHsKLSAgICB7MjgsIDF9LAotICAgIHszMSwgMn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xWzNdID0gewotICAgIHsyOSwgNH0sCi0gICAgezMwLCA1fSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMlszXSA9IHsKLSAgICB7MjgsIDZ9LAotICAgIHszMCwgN30sCi0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzNbMV0gPSB7Ci0gICAgezI4LCA4fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF80WzFdID0gewotICAgIHsyNCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfNVs0XSA9IHsKLSAgICB7MjgsIDEwfSwKLSAgICB7MzEsIDExfSwKLSAgICB7MzIsIDN9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF82WzJdID0gewotICAgIHszMCwgN30sCi0gICAgezAsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzdbMl0gPSB7Ci0gICAgezI4LCAxMn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF84WzFdID0gewotICAgIHswLCA4fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF85WzJdID0gewotICAgIHszMCwgNX0sCi0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzEwWzNdID0gewotICAgIHszMCwgNX0sCi0gICAgezI5LCA0fSwKLSAgICB7MCwgMTB9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzExWzNdID0gewotICAgIHsyOCwgMTN9LAotICAgIHszMCwgMTR9LAotICAgIHswLCAxMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTJbM10gPSB7Ci0gICAgezMwLCA3fSwKLSAgICB7MjksIDE1fSwKLSAgICB7MCwgMTJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzEzWzJdID0gewotICAgIHszMCwgMTR9LAotICAgIHswLCAxM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTRbMl0gPSB7Ci0gICAgezI4LCAxNn0sCi0gICAgezMyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOF8xNVsxXSA9IHsKLSAgICB7MjQsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184XzE2WzNdID0gewotICAgIHszMCwgMTR9LAotICAgIHsyOSwgMTd9LAotICAgIHswLCAxNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzhfMTdbMV0gPSB7Ci0gICAgezI0LCAxM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc184WzE4XSA9IHsKLSAgICB7MywgYXJjc184XzB9LAotICAgIHszLCBhcmNzXzhfMX0sCi0gICAgezMsIGFyY3NfOF8yfSwKLSAgICB7MSwgYXJjc184XzN9LAotICAgIHsxLCBhcmNzXzhfNH0sCi0gICAgezQsIGFyY3NfOF81fSwKLSAgICB7MiwgYXJjc184XzZ9LAotICAgIHsyLCBhcmNzXzhfN30sCi0gICAgezEsIGFyY3NfOF84fSwKLSAgICB7MiwgYXJjc184Xzl9LAotICAgIHszLCBhcmNzXzhfMTB9LAotICAgIHszLCBhcmNzXzhfMTF9LAotICAgIHszLCBhcmNzXzhfMTJ9LAotICAgIHsyLCBhcmNzXzhfMTN9LAotICAgIHsyLCBhcmNzXzhfMTR9LAotICAgIHsxLCBhcmNzXzhfMTV9LAotICAgIHszLCBhcmNzXzhfMTZ9LAotICAgIHsxLCBhcmNzXzhfMTd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc185XzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xWzJdID0gewotICAgIHsyNSwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc185XzJbMV0gPSB7CiAgICAgezI0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzdfM1syXSA9IHsKKyAgICB7MjUsIDR9LAorICAgIHsyNywgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzdfNFsxXSA9IHsKKyAgICB7MjYsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183XzVbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfN182WzFdID0geworICAgIHsyNywgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzdfN1sxXSA9IHsKKyAgICB7MCwgN30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183WzhdID0geworICAgIHsxLCBhcmNzXzdfMH0sCisgICAgezEsIGFyY3NfN18xfSwKKyAgICB7MSwgYXJjc183XzJ9LAorICAgIHsyLCBhcmNzXzdfM30sCisgICAgezEsIGFyY3NfN180fSwKKyAgICB7MSwgYXJjc183XzV9LAorICAgIHsxLCBhcmNzXzdfNn0sCisgICAgezEsIGFyY3NfN183fSwKK307CitzdGF0aWMgYXJjIGFyY3NfOF8wWzFdID0geworICAgIHsxMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzhfMVsyXSA9IHsKKyAgICB7MjksIDJ9LAorICAgIHsxNSwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzhfMlsxXSA9IHsKKyAgICB7MTUsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfOVs0XSA9IHsKLSAgICB7MSwgYXJjc185XzB9LAotICAgIHsyLCBhcmNzXzlfMX0sCi0gICAgezEsIGFyY3NfOV8yfSwKLSAgICB7MSwgYXJjc185XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc184WzRdID0geworICAgIHsxLCBhcmNzXzhfMH0sCisgICAgezIsIGFyY3NfOF8xfSwKKyAgICB7MSwgYXJjc184XzJ9LAorICAgIHsxLCBhcmNzXzhfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzBbM10gPSB7Ci0gICAgezM0LCAxfSwKLSAgICB7MzEsIDJ9LAotICAgIHszMiwgM30sCitzdGF0aWMgYXJjIGFyY3NfOV8wWzNdID0geworICAgIHszMCwgMX0sCisgICAgezMzLCAyfSwKKyAgICB7MzQsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xWzNdID0gewotICAgIHsyOSwgNH0sCi0gICAgezMwLCA1fSwKK3N0YXRpYyBhcmMgYXJjc185XzFbM10gPSB7CisgICAgezMxLCA0fSwKKyAgICB7MzIsIDV9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMlszXSA9IHsKLSAgICB7MzQsIDZ9LAotICAgIHszMCwgN30sCitzdGF0aWMgYXJjIGFyY3NfOV8yWzNdID0geworICAgIHszMCwgNn0sCisgICAgezMyLCA3fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzNbMV0gPSB7Ci0gICAgezM0LCA4fSwKK3N0YXRpYyBhcmMgYXJjc185XzNbMV0gPSB7CisgICAgezMwLCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfNFsxXSA9IHsKLSAgICB7MjQsIDl9LAorc3RhdGljIGFyYyBhcmNzXzlfNFsxXSA9IHsKKyAgICB7MjYsIDl9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF81WzRdID0gewotICAgIHszNCwgMTB9LAotICAgIHszMSwgMTF9LAotICAgIHszMiwgM30sCitzdGF0aWMgYXJjIGFyY3NfOV81WzRdID0geworICAgIHszMCwgMTB9LAorICAgIHszMywgMTF9LAorICAgIHszNCwgM30sCiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF82WzJdID0gewotICAgIHszMCwgN30sCitzdGF0aWMgYXJjIGFyY3NfOV82WzJdID0geworICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF83WzJdID0gewotICAgIHszNCwgMTJ9LAotICAgIHszMiwgM30sCitzdGF0aWMgYXJjIGFyY3NfOV83WzJdID0geworICAgIHszMCwgMTJ9LAorICAgIHszNCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV84WzFdID0gewogICAgIHswLCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfOVsyXSA9IHsKLSAgICB7MzAsIDV9LAorc3RhdGljIGFyYyBhcmNzXzlfOVsyXSA9IHsKKyAgICB7MzIsIDV9LAogICAgIHswLCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTBbM10gPSB7Ci0gICAgezMwLCA1fSwKLSAgICB7MjksIDR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTBbM10gPSB7CisgICAgezMyLCA1fSwKKyAgICB7MzEsIDR9LAogICAgIHswLCAxMH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzExWzNdID0gewotICAgIHszNCwgMTN9LAotICAgIHszMCwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTFbM10gPSB7CisgICAgezMwLCAxM30sCisgICAgezMyLCAxNH0sCiAgICAgezAsIDExfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTJbM10gPSB7Ci0gICAgezMwLCA3fSwKLSAgICB7MjksIDE1fSwKK3N0YXRpYyBhcmMgYXJjc185XzEyWzNdID0geworICAgIHszMiwgN30sCisgICAgezMxLCAxNX0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTNbMl0gPSB7Ci0gICAgezMwLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfOV8xM1syXSA9IHsKKyAgICB7MzIsIDE0fSwKICAgICB7MCwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMF8xNFsyXSA9IHsKLSAgICB7MzQsIDE2fSwKLSAgICB7MzIsIDN9LAorc3RhdGljIGFyYyBhcmNzXzlfMTRbMl0gPSB7CisgICAgezMwLCAxNn0sCisgICAgezM0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTVbMV0gPSB7Ci0gICAgezI0LCA2fSwKK3N0YXRpYyBhcmMgYXJjc185XzE1WzFdID0geworICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEwXzE2WzNdID0gewotICAgIHszMCwgMTR9LAotICAgIHsyOSwgMTd9LAorc3RhdGljIGFyYyBhcmNzXzlfMTZbM10gPSB7CisgICAgezMyLCAxNH0sCisgICAgezMxLCAxN30sCiAgICAgezAsIDE2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTBfMTdbMV0gPSB7Ci0gICAgezI0LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfOV8xN1sxXSA9IHsKKyAgICB7MjYsIDEzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzEwWzE4XSA9IHsKLSAgICB7MywgYXJjc18xMF8wfSwKLSAgICB7MywgYXJjc18xMF8xfSwKLSAgICB7MywgYXJjc18xMF8yfSwKLSAgICB7MSwgYXJjc18xMF8zfSwKLSAgICB7MSwgYXJjc18xMF80fSwKLSAgICB7NCwgYXJjc18xMF81fSwKLSAgICB7MiwgYXJjc18xMF82fSwKLSAgICB7MiwgYXJjc18xMF83fSwKLSAgICB7MSwgYXJjc18xMF84fSwKLSAgICB7MiwgYXJjc18xMF85fSwKLSAgICB7MywgYXJjc18xMF8xMH0sCi0gICAgezMsIGFyY3NfMTBfMTF9LAotICAgIHszLCBhcmNzXzEwXzEyfSwKLSAgICB7MiwgYXJjc18xMF8xM30sCi0gICAgezIsIGFyY3NfMTBfMTR9LAotICAgIHsxLCBhcmNzXzEwXzE1fSwKLSAgICB7MywgYXJjc18xMF8xNn0sCi0gICAgezEsIGFyY3NfMTBfMTd9LAorc3RhdGljIHN0YXRlIHN0YXRlc185WzE4XSA9IHsKKyAgICB7MywgYXJjc185XzB9LAorICAgIHszLCBhcmNzXzlfMX0sCisgICAgezMsIGFyY3NfOV8yfSwKKyAgICB7MSwgYXJjc185XzN9LAorICAgIHsxLCBhcmNzXzlfNH0sCisgICAgezQsIGFyY3NfOV81fSwKKyAgICB7MiwgYXJjc185XzZ9LAorICAgIHsyLCBhcmNzXzlfN30sCisgICAgezEsIGFyY3NfOV84fSwKKyAgICB7MiwgYXJjc185Xzl9LAorICAgIHszLCBhcmNzXzlfMTB9LAorICAgIHszLCBhcmNzXzlfMTF9LAorICAgIHszLCBhcmNzXzlfMTJ9LAorICAgIHsyLCBhcmNzXzlfMTN9LAorICAgIHsyLCBhcmNzXzlfMTR9LAorICAgIHsxLCBhcmNzXzlfMTV9LAorICAgIHszLCBhcmNzXzlfMTZ9LAorICAgIHsxLCBhcmNzXzlfMTd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8wWzFdID0gewotICAgIHsyMSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTBfMFsxXSA9IHsKKyAgICB7MjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzEwXzFbMl0gPSB7CisgICAgezI3LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMVsyXSA9IHsKLSAgICB7MSwgYXJjc18xMV8wfSwKLSAgICB7MSwgYXJjc18xMV8xfSwKK3N0YXRpYyBhcmMgYXJjc18xMF8yWzFdID0geworICAgIHsyNiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEyXzBbMl0gPSB7Ci0gICAgezMsIDF9LAotICAgIHs0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xMF8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzEwWzRdID0geworICAgIHsxLCBhcmNzXzEwXzB9LAorICAgIHsyLCBhcmNzXzEwXzF9LAorICAgIHsxLCBhcmNzXzEwXzJ9LAorICAgIHsxLCBhcmNzXzEwXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8wWzNdID0geworICAgIHszNiwgMX0sCisgICAgezMzLCAyfSwKKyAgICB7MzQsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xWzNdID0geworICAgIHszMSwgNH0sCisgICAgezMyLCA1fSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzJbM10gPSB7CisgICAgezM2LCA2fSwKKyAgICB7MzIsIDd9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfM1sxXSA9IHsKKyAgICB7MzYsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV80WzFdID0geworICAgIHsyNiwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzVbNF0gPSB7CisgICAgezM2LCAxMH0sCisgICAgezMzLCAxMX0sCisgICAgezM0LCAzfSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzZbMl0gPSB7CisgICAgezMyLCA3fSwKKyAgICB7MCwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzdbMl0gPSB7CisgICAgezM2LCAxMn0sCisgICAgezM0LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfOFsxXSA9IHsKKyAgICB7MCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzlbMl0gPSB7CisgICAgezMyLCA1fSwKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzEwWzNdID0geworICAgIHszMiwgNX0sCisgICAgezMxLCA0fSwKKyAgICB7MCwgMTB9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xMVszXSA9IHsKKyAgICB7MzYsIDEzfSwKKyAgICB7MzIsIDE0fSwKKyAgICB7MCwgMTF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xMlszXSA9IHsKKyAgICB7MzIsIDd9LAorICAgIHszMSwgMTV9LAorICAgIHswLCAxMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzEzWzJdID0geworICAgIHszMiwgMTR9LAorICAgIHswLCAxM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE0WzJdID0geworICAgIHszNiwgMTZ9LAorICAgIHszNCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE1WzFdID0geworICAgIHsyNiwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE2WzNdID0geworICAgIHszMiwgMTR9LAorICAgIHszMSwgMTd9LAorICAgIHswLCAxNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE3WzFdID0geworICAgIHsyNiwgMTN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMThdID0geworICAgIHszLCBhcmNzXzExXzB9LAorICAgIHszLCBhcmNzXzExXzF9LAorICAgIHszLCBhcmNzXzExXzJ9LAorICAgIHsxLCBhcmNzXzExXzN9LAorICAgIHsxLCBhcmNzXzExXzR9LAorICAgIHs0LCBhcmNzXzExXzV9LAorICAgIHsyLCBhcmNzXzExXzZ9LAorICAgIHsyLCBhcmNzXzExXzd9LAorICAgIHsxLCBhcmNzXzExXzh9LAorICAgIHsyLCBhcmNzXzExXzl9LAorICAgIHszLCBhcmNzXzExXzEwfSwKKyAgICB7MywgYXJjc18xMV8xMX0sCisgICAgezMsIGFyY3NfMTFfMTJ9LAorICAgIHsyLCBhcmNzXzExXzEzfSwKKyAgICB7MiwgYXJjc18xMV8xNH0sCisgICAgezEsIGFyY3NfMTFfMTV9LAorICAgIHszLCBhcmNzXzExXzE2fSwKKyAgICB7MSwgYXJjc18xMV8xN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzEyXzBbMV0gPSB7CisgICAgezIzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTJfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18xMlsyXSA9IHsKLSAgICB7MiwgYXJjc18xMl8wfSwKKyAgICB7MSwgYXJjc18xMl8wfSwKICAgICB7MSwgYXJjc18xMl8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTNfMFsxXSA9IHsKLSAgICB7MzUsIDF9LAorc3RhdGljIGFyYyBhcmNzXzEzXzBbMl0gPSB7CisgICAgezMsIDF9LAorICAgIHs0LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTNfMVsyXSA9IHsKLSAgICB7MzYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzEzXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTNbMl0gPSB7CisgICAgezIsIGFyY3NfMTNfMH0sCisgICAgezEsIGFyY3NfMTNfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE0XzBbMV0gPSB7CisgICAgezM3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTRfMVsyXSA9IHsKKyAgICB7MzgsIDJ9LAogICAgIHsyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTNfMlsyXSA9IHsKLSAgICB7MzUsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE0XzJbMl0gPSB7CisgICAgezM3LCAxfSwKICAgICB7MiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzEzXzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTRfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xM1s0XSA9IHsKLSAgICB7MSwgYXJjc18xM18wfSwKLSAgICB7MiwgYXJjc18xM18xfSwKLSAgICB7MiwgYXJjc18xM18yfSwKLSAgICB7MSwgYXJjc18xM18zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTRbNF0gPSB7CisgICAgezEsIGFyY3NfMTRfMH0sCisgICAgezIsIGFyY3NfMTRfMX0sCisgICAgezIsIGFyY3NfMTRfMn0sCisgICAgezEsIGFyY3NfMTRfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE0XzBbOF0gPSB7Ci0gICAgezM3LCAxfSwKLSAgICB7MzgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE1XzBbOF0gPSB7CiAgICAgezM5LCAxfSwKICAgICB7NDAsIDF9LAogICAgIHs0MSwgMX0sCiAgICAgezQyLCAxfSwKICAgICB7NDMsIDF9LAogICAgIHs0NCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE0XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTRbMl0gPSB7Ci0gICAgezgsIGFyY3NfMTRfMH0sCi0gICAgezEsIGFyY3NfMTRfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE1XzBbMV0gPSB7CiAgICAgezQ1LCAxfSwKKyAgICB7NDYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNV8xWzNdID0gewotICAgIHs0NiwgMn0sCi0gICAgezI5LCAzfSwKK3N0YXRpYyBhcmMgYXJjc18xNV8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfMlsyXSA9IHsKLSAgICB7NDcsIDR9LAorc3RhdGljIHN0YXRlIHN0YXRlc18xNVsyXSA9IHsKKyAgICB7OCwgYXJjc18xNV8wfSwKKyAgICB7MSwgYXJjc18xNV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTZfMFsxXSA9IHsKKyAgICB7NDcsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNl8xWzNdID0geworICAgIHs0OCwgMn0sCisgICAgezMxLCAzfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzJbMl0gPSB7CisgICAgezQ5LCA0fSwKICAgICB7OSwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE1XzNbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTZfM1syXSA9IHsKKyAgICB7NDksIDV9LAogICAgIHs0NywgNX0sCi0gICAgezQ1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xNl80WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTVfNVsyXSA9IHsKLSAgICB7MjksIDN9LAorc3RhdGljIGFyYyBhcmNzXzE2XzVbMl0gPSB7CisgICAgezMxLCAzfSwKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xNVs2XSA9IHsKLSAgICB7MSwgYXJjc18xNV8wfSwKLSAgICB7MywgYXJjc18xNV8xfSwKLSAgICB7MiwgYXJjc18xNV8yfSwKLSAgICB7MiwgYXJjc18xNV8zfSwKLSAgICB7MSwgYXJjc18xNV80fSwKLSAgICB7MiwgYXJjc18xNV81fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbNl0gPSB7CisgICAgezEsIGFyY3NfMTZfMH0sCisgICAgezMsIGFyY3NfMTZfMX0sCisgICAgezIsIGFyY3NfMTZfMn0sCisgICAgezIsIGFyY3NfMTZfM30sCisgICAgezEsIGFyY3NfMTZfNH0sCisgICAgezIsIGFyY3NfMTZfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzBbMl0gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7NDgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8xWzJdID0gewotICAgIHszMCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMTdfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMlszXSA9IHsKLSAgICB7MjQsIDF9LAotICAgIHs0OCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTdfMlszXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MCwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbM10gPSB7Ci0gICAgezIsIGFyY3NfMTZfMH0sCi0gICAgezIsIGFyY3NfMTZfMX0sCi0gICAgezMsIGFyY3NfMTZfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzNdID0geworICAgIHsyLCBhcmNzXzE3XzB9LAorICAgIHsyLCBhcmNzXzE3XzF9LAorICAgIHszLCBhcmNzXzE3XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18wWzEyXSA9IHsKLSAgICB7NDksIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMThfMFsxM10gPSB7CiAgICAgezUxLCAxfSwKICAgICB7NTIsIDF9LAogICAgIHs1MywgMX0sCkBAIC00ODksNjQgKzUwMiw1NyBAQAogICAgIHs1OCwgMX0sCiAgICAgezU5LCAxfSwKICAgICB7NjAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xN18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzJdID0gewotICAgIHsxMiwgYXJjc18xN18wfSwKLSAgICB7MSwgYXJjc18xN18xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMFsxXSA9IHsKICAgICB7NjEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewotICAgIHs2MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE4XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbM10gPSB7Ci0gICAgezEsIGFyY3NfMThfMH0sCi0gICAgezEsIGFyY3NfMThfMX0sCi0gICAgezEsIGFyY3NfMThfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzBbMV0gPSB7CisgICAgezYyLCAxfSwKICAgICB7NjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzE4XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzJdID0geworICAgIHsxMywgYXJjc18xOF8wfSwKKyAgICB7MSwgYXJjc18xOF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTlfMFsxXSA9IHsKKyAgICB7NjQsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0geworICAgIHs2NSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE5XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbM10gPSB7CiAgICAgezEsIGFyY3NfMTlfMH0sCiAgICAgezEsIGFyY3NfMTlfMX0sCisgICAgezEsIGFyY3NfMTlfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIwXzBbNV0gPSB7Ci0gICAgezY0LCAxfSwKLSAgICB7NjUsIDF9LAorc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7CiAgICAgezY2LCAxfSwKLSAgICB7NjcsIDF9LAotICAgIHs2OCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjBbMl0gPSB7Ci0gICAgezUsIGFyY3NfMjBfMH0sCisgICAgezEsIGFyY3NfMjBfMH0sCiAgICAgezEsIGFyY3NfMjBfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIxXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjFfMFs1XSA9IHsKKyAgICB7NjcsIDF9LAorICAgIHs2OCwgMX0sCiAgICAgezY5LCAxfSwKKyAgICB7NzAsIDF9LAorICAgIHs3MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIxXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjFbMl0gPSB7Ci0gICAgezEsIGFyY3NfMjFfMH0sCisgICAgezUsIGFyY3NfMjFfMH0sCiAgICAgezEsIGFyY3NfMjFfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIyXzBbMV0gPSB7Ci0gICAgezcwLCAxfSwKKyAgICB7NzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMl8xWzFdID0gewogICAgIHswLCAxfSwKQEAgLTU1NiwxNDggKzU2MiwxMzkgQEAKICAgICB7MSwgYXJjc18yMl8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjNfMFsxXSA9IHsKLSAgICB7NzEsIDF9LAorICAgIHs3MywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIzXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjNfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yM1syXSA9IHsKKyAgICB7MSwgYXJjc18yM18wfSwKKyAgICB7MSwgYXJjc18yM18xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjRfMFsxXSA9IHsKKyAgICB7NzQsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNF8xWzJdID0gewogICAgIHs5LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIzXzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjRfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yM1szXSA9IHsKLSAgICB7MSwgYXJjc18yM18wfSwKLSAgICB7MiwgYXJjc18yM18xfSwKLSAgICB7MSwgYXJjc18yM18yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMFsxXSA9IHsKLSAgICB7NDcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI0WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNFszXSA9IHsKICAgICB7MSwgYXJjc18yNF8wfSwKLSAgICB7MSwgYXJjc18yNF8xfSwKKyAgICB7MiwgYXJjc18yNF8xfSwKKyAgICB7MSwgYXJjc18yNF8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKLSAgICB7NzIsIDF9LAorICAgIHs0OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI1XzFbMl0gPSB7Ci0gICAgezI0LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18yNV8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMlsyXSA9IHsKLSAgICB7NzMsIDN9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfM1sxXSA9IHsKLSAgICB7MjQsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzVdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNVsyXSA9IHsKICAgICB7MSwgYXJjc18yNV8wfSwKLSAgICB7MiwgYXJjc18yNV8xfSwKLSAgICB7MiwgYXJjc18yNV8yfSwKLSAgICB7MSwgYXJjc18yNV8zfSwKLSAgICB7MSwgYXJjc18yNV80fSwKKyAgICB7MSwgYXJjc18yNV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMFsyXSA9IHsKLSAgICB7NzQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzI2XzBbMV0gPSB7CiAgICAgezc1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNl8xWzJdID0geworICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbMl0gPSB7Ci0gICAgezIsIGFyY3NfMjZfMH0sCi0gICAgezEsIGFyY3NfMjZfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzBbMV0gPSB7Ci0gICAgezc2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMVsxXSA9IHsKLSAgICB7NzcsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yN18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI2XzJbMl0gPSB7CisgICAgezc2LCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yN1szXSA9IHsKLSAgICB7MSwgYXJjc18yN18wfSwKLSAgICB7MSwgYXJjc18yN18xfSwKLSAgICB7MSwgYXJjc18yN18yfSwKK3N0YXRpYyBhcmMgYXJjc18yNl8zWzFdID0geworICAgIHsyNiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7Ci0gICAgezczLCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yNl80WzFdID0geworICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfMVszXSA9IHsKLSAgICB7NzgsIDJ9LAotICAgIHs3OSwgMn0sCi0gICAgezEyLCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbNV0gPSB7CisgICAgezEsIGFyY3NfMjZfMH0sCisgICAgezIsIGFyY3NfMjZfMX0sCisgICAgezIsIGFyY3NfMjZfMn0sCisgICAgezEsIGFyY3NfMjZfM30sCisgICAgezEsIGFyY3NfMjZfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI4XzJbNF0gPSB7Ci0gICAgezc4LCAyfSwKLSAgICB7NzksIDJ9LAotICAgIHsxMiwgM30sCi0gICAgezc2LCA0fSwKK3N0YXRpYyBhcmMgYXJjc18yN18wWzJdID0geworICAgIHs3NywgMX0sCisgICAgezc4LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfM1sxXSA9IHsKLSAgICB7NzYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF80WzNdID0gewotICAgIHszMSwgNX0sCi0gICAgezEzLCA2fSwKLSAgICB7ODAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfNlsxXSA9IHsKLSAgICB7ODAsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF83WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOFs4XSA9IHsKLSAgICB7MSwgYXJjc18yOF8wfSwKLSAgICB7MywgYXJjc18yOF8xfSwKLSAgICB7NCwgYXJjc18yOF8yfSwKLSAgICB7MSwgYXJjc18yOF8zfSwKLSAgICB7MywgYXJjc18yOF80fSwKLSAgICB7MSwgYXJjc18yOF81fSwKLSAgICB7MSwgYXJjc18yOF82fSwKLSAgICB7MSwgYXJjc18yOF83fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8xWzJdID0gewotICAgIHs4MiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMjdfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI5XzJbMV0gPSB7Ci0gICAgezIxLCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbMl0gPSB7CisgICAgezIsIGFyY3NfMjdfMH0sCisgICAgezEsIGFyY3NfMjdfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7CisgICAgezc5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjhfMVsxXSA9IHsKKyAgICB7ODAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOF8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzNdID0geworICAgIHsxLCBhcmNzXzI4XzB9LAorICAgIHsxLCBhcmNzXzI4XzF9LAorICAgIHsxLCBhcmNzXzI4XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0geworICAgIHs3NiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzFbM10gPSB7CisgICAgezgxLCAyfSwKKyAgICB7ODIsIDJ9LAorICAgIHsxMiwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzJbNF0gPSB7CisgICAgezgxLCAyfSwKKyAgICB7ODIsIDJ9LAorICAgIHsxMiwgM30sCisgICAgezc5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjlfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezc5LCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzRdID0geworc3RhdGljIGFyYyBhcmNzXzI5XzRbM10gPSB7CisgICAgezMzLCA1fSwKKyAgICB7MTMsIDZ9LAorICAgIHs4MywgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzVbMV0gPSB7CisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV82WzFdID0geworICAgIHs4MywgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzdbMV0gPSB7CisgICAgezE1LCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzhdID0gewogICAgIHsxLCBhcmNzXzI5XzB9LAotICAgIHsyLCBhcmNzXzI5XzF9LAotICAgIHsxLCBhcmNzXzI5XzJ9LAorICAgIHszLCBhcmNzXzI5XzF9LAorICAgIHs0LCBhcmNzXzI5XzJ9LAogICAgIHsxLCBhcmNzXzI5XzN9LAorICAgIHszLCBhcmNzXzI5XzR9LAorICAgIHsxLCBhcmNzXzI5XzV9LAorICAgIHsxLCBhcmNzXzI5XzZ9LAorICAgIHsxLCBhcmNzXzI5Xzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMF8wWzFdID0gewotICAgIHsxMiwgMX0sCisgICAgezIzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfMVsyXSA9IHsKLSAgICB7ODIsIDJ9LAorICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMF8yWzFdID0gewotICAgIHsyMSwgM30sCisgICAgezIzLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfM1sxXSA9IHsKICAgICB7MCwgM30sCkBAIC03MDksMzcgKzcwNiw0NSBAQAogICAgIHsxLCBhcmNzXzMwXzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8wWzFdID0gewotICAgIHs4MSwgMX0sCisgICAgezEyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAorICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMV8yWzJdID0gewotICAgIHs4MSwgMX0sCi0gICAgezAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzMxXzJbMV0gPSB7CisgICAgezIzLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMxWzNdID0geworc3RhdGljIGFyYyBhcmNzXzMxXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzFbNF0gPSB7CiAgICAgezEsIGFyY3NfMzFfMH0sCiAgICAgezIsIGFyY3NfMzFfMX0sCi0gICAgezIsIGFyY3NfMzFfMn0sCisgICAgezEsIGFyY3NfMzFfMn0sCisgICAgezEsIGFyY3NfMzFfM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzBbMV0gPSB7Ci0gICAgezgzLCAxfSwKKyAgICB7ODQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8xWzJdID0gewotICAgIHszMCwgMH0sCisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMl8yWzJdID0geworICAgIHs4NCwgMX0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbM10gPSB7CiAgICAgezEsIGFyY3NfMzJfMH0sCiAgICAgezIsIGFyY3NfMzJfMX0sCisgICAgezIsIGFyY3NfMzJfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKKyAgICB7ODYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewotICAgIHs3OCwgMH0sCisgICAgezMyLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18zM1syXSA9IHsKQEAgLTc0NywyOCArNzUyLDI0IEBACiAgICAgezIsIGFyY3NfMzNfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM0XzBbMV0gPSB7Ci0gICAgezg0LCAxfSwKKyAgICB7MjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNF8xWzFdID0gewotICAgIHsyMSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMzRfMVsyXSA9IHsKKyAgICB7ODEsIDB9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzRfMlsyXSA9IHsKLSAgICB7MzAsIDF9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM0WzNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zNFsyXSA9IHsKICAgICB7MSwgYXJjc18zNF8wfSwKLSAgICB7MSwgYXJjc18zNF8xfSwKLSAgICB7MiwgYXJjc18zNF8yfSwKKyAgICB7MiwgYXJjc18zNF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzVfMFsxXSA9IHsKLSAgICB7ODUsIDF9LAorICAgIHs4NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM1XzFbMV0gPSB7Ci0gICAgezIxLCAyfSwKKyAgICB7MjMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8yWzJdID0gewotICAgIHszMCwgMX0sCisgICAgezMyLCAxfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18zNVszXSA9IHsKQEAgLTc3Nyw1MDQgKzc3OCw1MTQgQEAKICAgICB7MiwgYXJjc18zNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzZfMFsxXSA9IHsKLSAgICB7ODYsIDF9LAorICAgIHs4OCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKKyAgICB7MjMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNl8yWzJdID0gewotICAgIHszMCwgM30sCisgICAgezMyLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM2XzNbMV0gPSB7Ci0gICAgezI0LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzZfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNls1XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzZbM10gPSB7CiAgICAgezEsIGFyY3NfMzZfMH0sCiAgICAgezEsIGFyY3NfMzZfMX0sCiAgICAgezIsIGFyY3NfMzZfMn0sCi0gICAgezEsIGFyY3NfMzZfM30sCi0gICAgezEsIGFyY3NfMzZfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM3XzBbOF0gPSB7Ci0gICAgezg3LCAxfSwKLSAgICB7ODgsIDF9LAorc3RhdGljIGFyYyBhcmNzXzM3XzBbMV0gPSB7CiAgICAgezg5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zN18yWzJdID0geworICAgIHszMiwgM30sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zN18zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM3XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzdbNV0gPSB7CisgICAgezEsIGFyY3NfMzdfMH0sCisgICAgezEsIGFyY3NfMzdfMX0sCisgICAgezIsIGFyY3NfMzdfMn0sCisgICAgezEsIGFyY3NfMzdfM30sCisgICAgezEsIGFyY3NfMzdfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzBbOV0gPSB7CiAgICAgezkwLCAxfSwKICAgICB7OTEsIDF9LAorICAgIHs5MiwgMX0sCisgICAgezkzLCAxfSwKKyAgICB7OTQsIDF9LAogICAgIHsxOSwgMX0sCiAgICAgezE4LCAxfSwKICAgICB7MTcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zN18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzJdID0gewotICAgIHs4LCBhcmNzXzM3XzB9LAotICAgIHsxLCBhcmNzXzM3XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8wWzFdID0gewotICAgIHs5MiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7Ci0gICAgezI0LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMlsxXSA9IHsKLSAgICB7MjUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8zWzFdID0gewotICAgIHsyNiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzRbM10gPSB7Ci0gICAgezkzLCAxfSwKLSAgICB7OTQsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfNVsxXSA9IHsKLSAgICB7MjUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF82WzFdID0gewotICAgIHsyNiwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbOF0gPSB7Ci0gICAgezEsIGFyY3NfMzhfMH0sCi0gICAgezEsIGFyY3NfMzhfMX0sCi0gICAgezEsIGFyY3NfMzhfMn0sCi0gICAgezEsIGFyY3NfMzhfM30sCi0gICAgezMsIGFyY3NfMzhfNH0sCi0gICAgezEsIGFyY3NfMzhfNX0sCi0gICAgezEsIGFyY3NfMzhfNn0sCi0gICAgezEsIGFyY3NfMzhfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzBbMV0gPSB7CiAgICAgezk1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMVsxXSA9IHsKLSAgICB7MjQsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbMl0gPSB7CisgICAgezksIGFyY3NfMzhfMH0sCisgICAgezEsIGFyY3NfMzhfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM5XzBbMV0gPSB7CisgICAgezIxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzlfMVszXSA9IHsKKyAgICB7MTksIDJ9LAorICAgIHs5NCwgMn0sCisgICAgezkyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzlfMlsxXSA9IHsKLSAgICB7MjUsIDN9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV80WzJdID0gewotICAgIHs5NCwgNX0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV81WzFdID0gewotICAgIHsyNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzZbMV0gPSB7Ci0gICAgezI2LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zOVs4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbM10gPSB7CiAgICAgezEsIGFyY3NfMzlfMH0sCi0gICAgezEsIGFyY3NfMzlfMX0sCisgICAgezMsIGFyY3NfMzlfMX0sCiAgICAgezEsIGFyY3NfMzlfMn0sCi0gICAgezEsIGFyY3NfMzlfM30sCi0gICAgezIsIGFyY3NfMzlfNH0sCi0gICAgezEsIGFyY3NfMzlfNX0sCi0gICAgezEsIGFyY3NfMzlfNn0sCi0gICAgezEsIGFyY3NfMzlfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CiAgICAgezk2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfMVsxXSA9IHsKLSAgICB7NjIsIDJ9LAorICAgIHsyNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzJbMV0gPSB7Ci0gICAgezk3LCAzfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8zWzFdID0gewotICAgIHs5LCA0fSwKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF80WzFdID0gewotICAgIHsyNSwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDBfNFszXSA9IHsKKyAgICB7OTcsIDF9LAorICAgIHs5OCwgNX0sCisgICAgezAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF81WzFdID0gewotICAgIHsyNiwgNn0sCisgICAgezI3LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNlsyXSA9IHsKLSAgICB7OTQsIDd9LAotICAgIHswLCA2fSwKK3N0YXRpYyBhcmMgYXJjc180MF82WzFdID0geworICAgIHsyOCwgN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzdbMV0gPSB7Ci0gICAgezI1LCA4fSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzhbMV0gPSB7Ci0gICAgezI2LCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfOVsxXSA9IHsKLSAgICB7MCwgOX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180MFsxMF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzhdID0gewogICAgIHsxLCBhcmNzXzQwXzB9LAogICAgIHsxLCBhcmNzXzQwXzF9LAogICAgIHsxLCBhcmNzXzQwXzJ9LAogICAgIHsxLCBhcmNzXzQwXzN9LAotICAgIHsxLCBhcmNzXzQwXzR9LAorICAgIHszLCBhcmNzXzQwXzR9LAogICAgIHsxLCBhcmNzXzQwXzV9LAotICAgIHsyLCBhcmNzXzQwXzZ9LAorICAgIHsxLCBhcmNzXzQwXzZ9LAogICAgIHsxLCBhcmNzXzQwXzd9LAotICAgIHsxLCBhcmNzXzQwXzh9LAotICAgIHsxLCBhcmNzXzQwXzl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8wWzFdID0gewotICAgIHs5OCwgMX0sCisgICAgezk5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMVsxXSA9IHsKLSAgICB7MjUsIDJ9LAorICAgIHsyNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzJbMV0gPSB7Ci0gICAgezI2LCAzfSwKKyAgICB7MjcsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV8zWzJdID0gewotICAgIHs5OSwgNH0sCi0gICAgezEwMCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDFfM1sxXSA9IHsKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV80WzFdID0gewotICAgIHsyNSwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDFfNFsyXSA9IHsKKyAgICB7OTgsIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfNVsxXSA9IHsKLSAgICB7MjUsIDd9LAorICAgIHsyNywgNn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzZbMV0gPSB7Ci0gICAgezI2LCA4fSwKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV83WzFdID0gewotICAgIHsyNiwgOX0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV84WzRdID0gewotICAgIHs5OSwgNH0sCi0gICAgezk0LCAxMH0sCi0gICAgezEwMCwgNX0sCi0gICAgezAsIDh9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MV85WzFdID0gewotICAgIHswLCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfMTBbMV0gPSB7Ci0gICAgezI1LCAxMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQxXzExWzFdID0gewotICAgIHsyNiwgMTJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MV8xMlsyXSA9IHsKLSAgICB7MTAwLCA1fSwKLSAgICB7MCwgMTJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDFbMTNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MVs4XSA9IHsKICAgICB7MSwgYXJjc180MV8wfSwKICAgICB7MSwgYXJjc180MV8xfSwKICAgICB7MSwgYXJjc180MV8yfSwKLSAgICB7MiwgYXJjc180MV8zfSwKLSAgICB7MSwgYXJjc180MV80fSwKKyAgICB7MSwgYXJjc180MV8zfSwKKyAgICB7MiwgYXJjc180MV80fSwKICAgICB7MSwgYXJjc180MV81fSwKICAgICB7MSwgYXJjc180MV82fSwKICAgICB7MSwgYXJjc180MV83fSwKLSAgICB7NCwgYXJjc180MV84fSwKLSAgICB7MSwgYXJjc180MV85fSwKLSAgICB7MSwgYXJjc180MV8xMH0sCi0gICAgezEsIGFyY3NfNDFfMTF9LAotICAgIHsyLCBhcmNzXzQxXzEyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMFsxXSA9IHsKLSAgICB7MTAxLCAxfSwKKyAgICB7MTAwLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMVsxXSA9IHsKLSAgICB7MTAyLCAyfSwKKyAgICB7NjUsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml8yWzJdID0gewotICAgIHszMCwgMX0sCi0gICAgezI1LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180Ml8yWzFdID0geworICAgIHsxMDEsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8zWzFdID0gewotICAgIHsyNiwgNH0sCisgICAgezksIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml80WzFdID0gewotICAgIHswLCA0fSwKKyAgICB7MjcsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbNV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDJfNVsxXSA9IHsKKyAgICB7MjgsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Ml82WzJdID0geworICAgIHs5OCwgN30sCisgICAgezAsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Ml83WzFdID0geworICAgIHsyNywgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQyXzhbMV0gPSB7CisgICAgezI4LCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDJfOVsxXSA9IHsKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180MlsxMF0gPSB7CiAgICAgezEsIGFyY3NfNDJfMH0sCiAgICAgezEsIGFyY3NfNDJfMX0sCi0gICAgezIsIGFyY3NfNDJfMn0sCisgICAgezEsIGFyY3NfNDJfMn0sCiAgICAgezEsIGFyY3NfNDJfM30sCiAgICAgezEsIGFyY3NfNDJfNH0sCisgICAgezEsIGFyY3NfNDJfNX0sCisgICAgezIsIGFyY3NfNDJfNn0sCisgICAgezEsIGFyY3NfNDJfN30sCisgICAgezEsIGFyY3NfNDJfOH0sCisgICAgezEsIGFyY3NfNDJfOX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzBbMV0gPSB7Ci0gICAgezI0LCAxfSwKKyAgICB7MTAyLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMVsyXSA9IHsKLSAgICB7ODIsIDJ9LAotICAgIHswLCAxfSwKK3N0YXRpYyBhcmMgYXJjc180M18xWzFdID0geworICAgIHsyNywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzJbMV0gPSB7Ci0gICAgezEwMywgM30sCisgICAgezI4LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfM1sxXSA9IHsKLSAgICB7MCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDNfM1syXSA9IHsKKyAgICB7MTAzLCA0fSwKKyAgICB7MTA0LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzRdID0geworc3RhdGljIGFyYyBhcmNzXzQzXzRbMV0gPSB7CisgICAgezI3LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfNVsxXSA9IHsKKyAgICB7MjcsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M182WzFdID0geworICAgIHsyOCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzdbMV0gPSB7CisgICAgezI4LCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfOFs0XSA9IHsKKyAgICB7MTAzLCA0fSwKKyAgICB7OTgsIDEwfSwKKyAgICB7MTA0LCA1fSwKKyAgICB7MCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzlbMV0gPSB7CisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180M18xMFsxXSA9IHsKKyAgICB7MjcsIDExfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDNfMTFbMV0gPSB7CisgICAgezI4LCAxMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQzXzEyWzJdID0geworICAgIHsxMDQsIDV9LAorICAgIHswLCAxMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180M1sxM10gPSB7CiAgICAgezEsIGFyY3NfNDNfMH0sCi0gICAgezIsIGFyY3NfNDNfMX0sCisgICAgezEsIGFyY3NfNDNfMX0sCiAgICAgezEsIGFyY3NfNDNfMn0sCi0gICAgezEsIGFyY3NfNDNfM30sCisgICAgezIsIGFyY3NfNDNfM30sCisgICAgezEsIGFyY3NfNDNfNH0sCisgICAgezEsIGFyY3NfNDNfNX0sCisgICAgezEsIGFyY3NfNDNfNn0sCisgICAgezEsIGFyY3NfNDNfN30sCisgICAgezQsIGFyY3NfNDNfOH0sCisgICAgezEsIGFyY3NfNDNfOX0sCisgICAgezEsIGFyY3NfNDNfMTB9LAorICAgIHsxLCBhcmNzXzQzXzExfSwKKyAgICB7MiwgYXJjc180M18xMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzBbMV0gPSB7Ci0gICAgezEwNCwgMX0sCisgICAgezEwNSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzFbMl0gPSB7Ci0gICAgezI0LCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNDRfMVsxXSA9IHsKKyAgICB7MTA2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfMlsyXSA9IHsKLSAgICB7ODIsIDN9LAotICAgIHswLCAyfSwKKyAgICB7MzIsIDF9LAorICAgIHsyNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzNbMV0gPSB7Ci0gICAgezIxLCA0fSwKKyAgICB7MjgsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF80WzFdID0gewogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzQ0WzVdID0gewogICAgIHsxLCBhcmNzXzQ0XzB9LAotICAgIHsyLCBhcmNzXzQ0XzF9LAorICAgIHsxLCBhcmNzXzQ0XzF9LAogICAgIHsyLCBhcmNzXzQ0XzJ9LAogICAgIHsxLCBhcmNzXzQ0XzN9LAogICAgIHsxLCBhcmNzXzQ0XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NV8wWzJdID0gewotICAgIHszLCAxfSwKLSAgICB7MiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ1XzFbMl0gPSB7CisgICAgezg1LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ1XzJbMV0gPSB7Ci0gICAgezEwNSwgM30sCisgICAgezEwNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ1XzNbMV0gPSB7Ci0gICAgezYsIDR9LAorICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfNFsyXSA9IHsKLSAgICB7NiwgNH0sCi0gICAgezEwNiwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180NVs1XSA9IHsKLSAgICB7MiwgYXJjc180NV8wfSwKLSAgICB7MSwgYXJjc180NV8xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNF0gPSB7CisgICAgezEsIGFyY3NfNDVfMH0sCisgICAgezIsIGFyY3NfNDVfMX0sCiAgICAgezEsIGFyY3NfNDVfMn0sCiAgICAgezEsIGFyY3NfNDVfM30sCi0gICAgezIsIGFyY3NfNDVfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzBbMl0gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezEwOCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNDZfMFsxXSA9IHsKKyAgICB7MTA4LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMVsyXSA9IHsKLSAgICB7OTIsIDN9LAorICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ2XzJbMl0gPSB7CisgICAgezg1LCAzfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzNbMV0gPSB7Ci0gICAgezEwNywgNH0sCisgICAgezIzLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfNFsxXSA9IHsKLSAgICB7OTQsIDV9LAorICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfNVsxXSA9IHsKLSAgICB7MjQsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDZbNl0gPSB7Ci0gICAgezIsIGFyY3NfNDZfMH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzVdID0geworICAgIHsxLCBhcmNzXzQ2XzB9LAogICAgIHsyLCBhcmNzXzQ2XzF9LAotICAgIHsxLCBhcmNzXzQ2XzJ9LAorICAgIHsyLCBhcmNzXzQ2XzJ9LAogICAgIHsxLCBhcmNzXzQ2XzN9LAogICAgIHsxLCBhcmNzXzQ2XzR9LAotICAgIHsxLCBhcmNzXzQ2XzV9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180N18wWzJdID0gewotICAgIHsxMDcsIDF9LAotICAgIHsxMTAsIDF9LAorICAgIHszLCAxfSwKKyAgICB7MiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ3XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfMlsxXSA9IHsKKyAgICB7MTA5LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKKyAgICB7NiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzRbMl0gPSB7CisgICAgezYsIDR9LAorICAgIHsxMTAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7CiAgICAgezIsIGFyY3NfNDdfMH0sCiAgICAgezEsIGFyY3NfNDdfMX0sCisgICAgezEsIGFyY3NfNDdfMn0sCisgICAgezEsIGFyY3NfNDdfM30sCisgICAgezIsIGFyY3NfNDdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKICAgICB7MTExLCAxfSwKKyAgICB7MTEyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfMVsyXSA9IHsKLSAgICB7MzMsIDJ9LAotICAgIHsyNSwgM30sCisgICAgezk2LCAzfSwKKyAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzJbMV0gPSB7Ci0gICAgezI1LCAzfSwKKyAgICB7MCwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzNbMV0gPSB7Ci0gICAgezI0LCA0fSwKKyAgICB7MTExLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfNFsxXSA9IHsKLSAgICB7MCwgNH0sCisgICAgezk4LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzVdID0gewotICAgIHsxLCBhcmNzXzQ4XzB9LAorc3RhdGljIGFyYyBhcmNzXzQ4XzVbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzZdID0geworICAgIHsyLCBhcmNzXzQ4XzB9LAogICAgIHsyLCBhcmNzXzQ4XzF9LAogICAgIHsxLCBhcmNzXzQ4XzJ9LAogICAgIHsxLCBhcmNzXzQ4XzN9LAogICAgIHsxLCBhcmNzXzQ4XzR9LAorICAgIHsxLCBhcmNzXzQ4XzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OV8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ5XzBbMl0gPSB7CiAgICAgezExMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ5XzFbMl0gPSB7Ci0gICAgezMzLCAyfSwKLSAgICB7MjUsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OV8yWzFdID0gewotICAgIHsyNSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ5XzNbMV0gPSB7Ci0gICAgezEwOSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ5XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbNV0gPSB7Ci0gICAgezEsIGFyY3NfNDlfMH0sCi0gICAgezIsIGFyY3NfNDlfMX0sCi0gICAgezEsIGFyY3NfNDlfMn0sCi0gICAgezEsIGFyY3NfNDlfM30sCi0gICAgezEsIGFyY3NfNDlfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7Ci0gICAgezExMiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzFbMl0gPSB7Ci0gICAgezExMywgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTBfMH0sCi0gICAgezIsIGFyY3NfNTBfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUxXzBbMV0gPSB7CiAgICAgezExNCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUxXzFbMl0gPSB7Ci0gICAgezExNSwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNDlfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181MVsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbMl0gPSB7CisgICAgezIsIGFyY3NfNDlfMH0sCisgICAgezEsIGFyY3NfNDlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7CisgICAgezExNSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzFbMl0gPSB7CisgICAgezM1LCAyfSwKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8yWzFdID0geworICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181MFs1XSA9IHsKKyAgICB7MSwgYXJjc181MF8wfSwKKyAgICB7MiwgYXJjc181MF8xfSwKKyAgICB7MSwgYXJjc181MF8yfSwKKyAgICB7MSwgYXJjc181MF8zfSwKKyAgICB7MSwgYXJjc181MF80fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfMFsxXSA9IHsKKyAgICB7MTE1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfMVsyXSA9IHsKKyAgICB7MzUsIDJ9LAorICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUxXzJbMV0gPSB7CisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfM1sxXSA9IHsKKyAgICB7MTEzLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTFfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181MVs1XSA9IHsKICAgICB7MSwgYXJjc181MV8wfSwKICAgICB7MiwgYXJjc181MV8xfSwKKyAgICB7MSwgYXJjc181MV8yfSwKKyAgICB7MSwgYXJjc181MV8zfSwKKyAgICB7MSwgYXJjc181MV80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTJfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181Ml8wWzFdID0gewogICAgIHsxMTYsIDF9LAotICAgIHsxMTcsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Ml8xWzFdID0gewotICAgIHsxMTQsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzUyXzFbMl0gPSB7CisgICAgezExNywgMH0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Ml8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzNdID0gewotICAgIHsyLCBhcmNzXzUyXzB9LAotICAgIHsxLCBhcmNzXzUyXzF9LAotICAgIHsxLCBhcmNzXzUyXzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc181MlsyXSA9IHsKKyAgICB7MSwgYXJjc181Ml8wfSwKKyAgICB7MiwgYXJjc181Ml8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMFsxXSA9IHsKLSAgICB7MTAzLCAxfSwKKyAgICB7MTE4LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMVsyXSA9IHsKLSAgICB7MTE4LCAwfSwKKyAgICB7MTE5LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181M1syXSA9IHsKICAgICB7MSwgYXJjc181M18wfSwKICAgICB7MiwgYXJjc181M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMFsxMF0gPSB7Ci0gICAgezExOSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNTRfMFsyXSA9IHsKICAgICB7MTIwLCAxfSwKLSAgICB7MTIxLCAxfSwKLSAgICB7MTIyLCAxfSwKKyAgICB7MTIxLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTRfMVsxXSA9IHsKKyAgICB7MTE4LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTRfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NFszXSA9IHsKKyAgICB7MiwgYXJjc181NF8wfSwKKyAgICB7MSwgYXJjc181NF8xfSwKKyAgICB7MSwgYXJjc181NF8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMFsxXSA9IHsKKyAgICB7MTA3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMVsyXSA9IHsKKyAgICB7MTIyLCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NVsyXSA9IHsKKyAgICB7MSwgYXJjc181NV8wfSwKKyAgICB7MiwgYXJjc181NV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTZfMFsxMF0gPSB7CiAgICAgezEyMywgMX0sCiAgICAgezEyNCwgMX0sCiAgICAgezEyNSwgMX0sCi0gICAgezk3LCAxfSwKLSAgICB7MTE2LCAyfSwKLSAgICB7MTI2LCAzfSwKKyAgICB7MTI2LCAxfSwKKyAgICB7MTI3LCAxfSwKKyAgICB7MTI4LCAxfSwKKyAgICB7MTI5LCAxfSwKKyAgICB7MTAxLCAxfSwKKyAgICB7MTIwLCAyfSwKKyAgICB7MTMwLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181Nl8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMlsxXSA9IHsKLSAgICB7OTcsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU2XzJbMV0gPSB7CisgICAgezEwMSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzNbMl0gPSB7Ci0gICAgezExNiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNTZfM1syXSA9IHsKKyAgICB7MTIwLCAxfSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181NFs0XSA9IHsKLSAgICB7MTAsIGFyY3NfNTRfMH0sCi0gICAgezEsIGFyY3NfNTRfMX0sCi0gICAgezEsIGFyY3NfNTRfMn0sCi0gICAgezIsIGFyY3NfNTRfM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzBbMV0gPSB7Ci0gICAgezMxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMVsxXSA9IHsKLSAgICB7MTAzLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181NVszXSA9IHsKLSAgICB7MSwgYXJjc181NV8wfSwKLSAgICB7MSwgYXJjc181NV8xfSwKLSAgICB7MSwgYXJjc181NV8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMFsxXSA9IHsKLSAgICB7MTI3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMVsyXSA9IHsKLSAgICB7MTI4LCAwfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181NlsyXSA9IHsKLSAgICB7MSwgYXJjc181Nl8wfSwKLSAgICB7MiwgYXJjc181Nl8xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbNF0gPSB7CisgICAgezEwLCBhcmNzXzU2XzB9LAorICAgIHsxLCBhcmNzXzU2XzF9LAorICAgIHsxLCBhcmNzXzU2XzJ9LAorICAgIHsyLCBhcmNzXzU2XzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181N18wWzFdID0gewotICAgIHsxMjksIDF9LAorICAgIHszMywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU3XzFbMl0gPSB7Ci0gICAgezEzMCwgMH0sCi0gICAgezAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU3XzFbMV0gPSB7CisgICAgezEwNywgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181N1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181N18yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU3WzNdID0gewogICAgIHsxLCBhcmNzXzU3XzB9LAotICAgIHsyLCBhcmNzXzU3XzF9LAorICAgIHsxLCBhcmNzXzU3XzF9LAorICAgIHsxLCBhcmNzXzU3XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181OF8wWzFdID0gewogICAgIHsxMzEsIDF9LApAQCAtMTI5MCw3NTIgKzEzMDEsNzkzIEBACiBzdGF0aWMgYXJjIGFyY3NfNTlfMFsxXSA9IHsKICAgICB7MTMzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTlfMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181OV8xWzJdID0gewogICAgIHsxMzQsIDB9LAotICAgIHsxMzUsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzU5WzJdID0gewogICAgIHsxLCBhcmNzXzU5XzB9LAotICAgIHszLCBhcmNzXzU5XzF9LAorICAgIHsyLCBhcmNzXzU5XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MF8wWzFdID0gewotICAgIHsxMzYsIDF9LAorICAgIHsxMzUsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182MF8xWzNdID0gewotICAgIHsxMzcsIDB9LAotICAgIHsxMzgsIDB9LAorc3RhdGljIGFyYyBhcmNzXzYwXzFbMl0gPSB7CisgICAgezEzNiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjBbMl0gPSB7CiAgICAgezEsIGFyY3NfNjBfMH0sCi0gICAgezMsIGFyY3NfNjBfMX0sCisgICAgezIsIGFyY3NfNjBfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYxXzBbMV0gPSB7Ci0gICAgezEzOSwgMX0sCisgICAgezEzNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYxXzFbNV0gPSB7Ci0gICAgezMxLCAwfSwKLSAgICB7MTQwLCAwfSwKLSAgICB7MTQxLCAwfSwKLSAgICB7MTQyLCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MV8xWzNdID0geworICAgIHsxMzgsIDB9LAorICAgIHsxMzksIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYxWzJdID0gewogICAgIHsxLCBhcmNzXzYxXzB9LAotICAgIHs1LCBhcmNzXzYxXzF9LAorICAgIHszLCBhcmNzXzYxXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Ml8wWzRdID0gewotICAgIHsxMzcsIDF9LAotICAgIHsxMzgsIDF9LAotICAgIHsxNDMsIDF9LAotICAgIHsxNDQsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzYyXzBbMV0gPSB7CisgICAgezE0MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYyXzFbMV0gPSB7Ci0gICAgezEzOSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzYyXzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjJbM10gPSB7Ci0gICAgezQsIGFyY3NfNjJfMH0sCi0gICAgezEsIGFyY3NfNjJfMX0sCi0gICAgezEsIGFyY3NfNjJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7Ci0gICAgezE0NSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzYzXzFbM10gPSB7Ci0gICAgezE0NiwgMX0sCi0gICAgezMyLCAyfSwKK3N0YXRpYyBhcmMgYXJjc182Ml8xWzNdID0geworICAgIHsxNDEsIDB9LAorICAgIHsxNDIsIDB9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjNfMlsxXSA9IHsKLSAgICB7MTM5LCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjJbMl0gPSB7CisgICAgezEsIGFyY3NfNjJfMH0sCisgICAgezMsIGFyY3NfNjJfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7CisgICAgezE0MywgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182M1s0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc182M18xWzZdID0geworICAgIHszMywgMH0sCisgICAgezExLCAwfSwKKyAgICB7MTQ0LCAwfSwKKyAgICB7MTQ1LCAwfSwKKyAgICB7MTQ2LCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182M1syXSA9IHsKICAgICB7MSwgYXJjc182M18wfSwKLSAgICB7MywgYXJjc182M18xfSwKLSAgICB7MSwgYXJjc182M18yfSwKLSAgICB7MSwgYXJjc182M18zfSwKKyAgICB7NiwgYXJjc182M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMFsxMF0gPSB7Ci0gICAgezEzLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182NF8wWzRdID0geworICAgIHsxNDEsIDF9LAorICAgIHsxNDIsIDF9LAorICAgIHsxNDcsIDF9LAogICAgIHsxNDgsIDJ9LAotICAgIHsxNTAsIDN9LAotICAgIHsyMSwgNH0sCi0gICAgezE1MywgNH0sCi0gICAgezE1NCwgNX0sCi0gICAgezc5LCA0fSwKLSAgICB7MTU1LCA0fSwKLSAgICB7MTU2LCA0fSwKLSAgICB7MTU3LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMVszXSA9IHsKLSAgICB7NDcsIDZ9LAotICAgIHsxNDcsIDZ9LAotICAgIHsxNSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMVsxXSA9IHsKKyAgICB7MTQzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMlsyXSA9IHsKLSAgICB7MTQ3LCA3fSwKLSAgICB7MTQ5LCA0fSwKK3N0YXRpYyBhcmMgYXJjc182NF8yWzFdID0geworICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfM1syXSA9IHsKLSAgICB7MTUxLCA4fSwKLSAgICB7MTUyLCA0fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbM10gPSB7CisgICAgezQsIGFyY3NfNjRfMH0sCisgICAgezEsIGFyY3NfNjRfMX0sCisgICAgezEsIGFyY3NfNjRfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzRbMV0gPSB7Ci0gICAgezAsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY1XzBbMV0gPSB7CisgICAgezE0OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzVbMl0gPSB7Ci0gICAgezE1NCwgNX0sCi0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NF82WzFdID0gewotICAgIHsxNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY0XzdbMV0gPSB7Ci0gICAgezE0OSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY0XzhbMV0gPSB7Ci0gICAgezE1MiwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182NFs5XSA9IHsKLSAgICB7MTAsIGFyY3NfNjRfMH0sCi0gICAgezMsIGFyY3NfNjRfMX0sCi0gICAgezIsIGFyY3NfNjRfMn0sCi0gICAgezIsIGFyY3NfNjRfM30sCi0gICAgezEsIGFyY3NfNjRfNH0sCi0gICAgezIsIGFyY3NfNjRfNX0sCi0gICAgezEsIGFyY3NfNjRfNn0sCi0gICAgezEsIGFyY3NfNjRfN30sCi0gICAgezEsIGFyY3NfNjRfOH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY1XzBbMl0gPSB7Ci0gICAgezI0LCAxfSwKLSAgICB7NDgsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182NV8xWzNdID0gewotICAgIHsxNTgsIDJ9LAotICAgIHszMCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNjVfMVsyXSA9IHsKKyAgICB7MzQsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjVfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezE0MywgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzNbM10gPSB7Ci0gICAgezI0LCA0fSwKLSAgICB7NDgsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY1XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV80WzJdID0gewotICAgIHszMCwgM30sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjVbNV0gPSB7Ci0gICAgezIsIGFyY3NfNjVfMH0sCi0gICAgezMsIGFyY3NfNjVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzRdID0geworICAgIHsxLCBhcmNzXzY1XzB9LAorICAgIHsyLCBhcmNzXzY1XzF9LAogICAgIHsxLCBhcmNzXzY1XzJ9LAotICAgIHszLCBhcmNzXzY1XzN9LAotICAgIHsyLCBhcmNzXzY1XzR9LAorICAgIHsxLCBhcmNzXzY1XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzBbMl0gPSB7CisgICAgezE1MCwgMX0sCisgICAgezE1MSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY2XzFbMV0gPSB7CisgICAgezE1MSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY2XzJbMl0gPSB7CisgICAgezE1MiwgMn0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbM10gPSB7CisgICAgezIsIGFyY3NfNjZfMH0sCisgICAgezEsIGFyY3NfNjZfMX0sCisgICAgezIsIGFyY3NfNjZfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzBbMTBdID0gewogICAgIHsxMywgMX0sCi0gICAgezE0OCwgMn0sCi0gICAgezc4LCAzfSwKKyAgICB7MTU0LCAyfSwKKyAgICB7MTU2LCAzfSwKKyAgICB7MjMsIDR9LAorICAgIHsxNTksIDR9LAorICAgIHsxNjAsIDV9LAorICAgIHs4MiwgNH0sCisgICAgezE2MSwgNH0sCisgICAgezE2MiwgNH0sCisgICAgezE2MywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY2XzFbMl0gPSB7Ci0gICAgezE0LCA0fSwKLSAgICB7MTUsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8yWzFdID0gewotICAgIHsxNTksIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8zWzFdID0gewotICAgIHsyMSwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzRbMV0gPSB7Ci0gICAgezE1LCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzZbMV0gPSB7Ci0gICAgezE0OSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182Nls3XSA9IHsKLSAgICB7MywgYXJjc182Nl8wfSwKLSAgICB7MiwgYXJjc182Nl8xfSwKLSAgICB7MSwgYXJjc182Nl8yfSwKLSAgICB7MSwgYXJjc182Nl8zfSwKLSAgICB7MSwgYXJjc182Nl80fSwKLSAgICB7MSwgYXJjc182Nl81fSwKLSAgICB7MSwgYXJjc182Nl82fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMFsxXSA9IHsKLSAgICB7MTYwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMVsyXSA9IHsKLSAgICB7MzAsIDJ9LAotICAgIHswLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182N18xWzNdID0geworICAgIHs0OSwgNn0sCisgICAgezE1MywgNn0sCisgICAgezE1LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjdfMlsyXSA9IHsKLSAgICB7MTYwLCAxfSwKLSAgICB7MCwgMn0sCisgICAgezE1MywgN30sCisgICAgezE1NSwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182N1szXSA9IHsKLSAgICB7MSwgYXJjc182N18wfSwKLSAgICB7MiwgYXJjc182N18xfSwKK3N0YXRpYyBhcmMgYXJjc182N18zWzJdID0geworICAgIHsxNTcsIDh9LAorICAgIHsxNTgsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182N180WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfNVsyXSA9IHsKKyAgICB7MTYwLCA1fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY3XzZbMV0gPSB7CisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfN1sxXSA9IHsKKyAgICB7MTU1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjdfOFsxXSA9IHsKKyAgICB7MTU4LCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY3WzldID0geworICAgIHsxMCwgYXJjc182N18wfSwKKyAgICB7MywgYXJjc182N18xfSwKICAgICB7MiwgYXJjc182N18yfSwKKyAgICB7MiwgYXJjc182N18zfSwKKyAgICB7MSwgYXJjc182N180fSwKKyAgICB7MiwgYXJjc182N181fSwKKyAgICB7MSwgYXJjc182N182fSwKKyAgICB7MSwgYXJjc182N183fSwKKyAgICB7MSwgYXJjc182N184fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjhfMFsyXSA9IHsKLSAgICB7MjQsIDF9LAotICAgIHsyNSwgMn0sCisgICAgezI2LCAxfSwKKyAgICB7NTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8xWzJdID0gewotICAgIHsyNSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjhfMVszXSA9IHsKKyAgICB7MTY0LCAyfSwKKyAgICB7MzIsIDN9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMlszXSA9IHsKLSAgICB7MjQsIDN9LAotICAgIHsxNjEsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY4XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8zWzJdID0gewotICAgIHsxNjEsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY4XzNbM10gPSB7CisgICAgezI2LCA0fSwKKyAgICB7NTAsIDR9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OF80WzJdID0geworICAgIHszMiwgM30sCiAgICAgezAsIDR9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjhbNV0gPSB7CiAgICAgezIsIGFyY3NfNjhfMH0sCi0gICAgezIsIGFyY3NfNjhfMX0sCi0gICAgezMsIGFyY3NfNjhfMn0sCi0gICAgezIsIGFyY3NfNjhfM30sCi0gICAgezEsIGFyY3NfNjhfNH0sCisgICAgezMsIGFyY3NfNjhfMX0sCisgICAgezEsIGFyY3NfNjhfMn0sCisgICAgezMsIGFyY3NfNjhfM30sCisgICAgezIsIGFyY3NfNjhfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzBbMV0gPSB7Ci0gICAgezI1LCAxfSwKK3N0YXRpYyBhcmMgYXJjc182OV8wWzNdID0geworICAgIHsxMywgMX0sCisgICAgezE1NCwgMn0sCisgICAgezgxLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjlfMVsyXSA9IHsKLSAgICB7MjQsIDJ9LAotICAgIHswLCAxfSwKKyAgICB7MTQsIDR9LAorICAgIHsxNSwgNX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxNjUsIDZ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbM10gPSB7Ci0gICAgezEsIGFyY3NfNjlfMH0sCitzdGF0aWMgYXJjIGFyY3NfNjlfM1sxXSA9IHsKKyAgICB7MjMsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV80WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzVbMV0gPSB7CisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV82WzFdID0geworICAgIHsxNTUsIDV9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbN10gPSB7CisgICAgezMsIGFyY3NfNjlfMH0sCiAgICAgezIsIGFyY3NfNjlfMX0sCiAgICAgezEsIGFyY3NfNjlfMn0sCisgICAgezEsIGFyY3NfNjlfM30sCisgICAgezEsIGFyY3NfNjlfNH0sCisgICAgezEsIGFyY3NfNjlfNX0sCisgICAgezEsIGFyY3NfNjlfNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzBbMl0gPSB7Ci0gICAgezEwMywgMX0sCi0gICAgezQ4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MF8wWzFdID0geworICAgIHsxNjYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183MF8xWzJdID0gewotICAgIHszMCwgMn0sCisgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzJbM10gPSB7Ci0gICAgezEwMywgMX0sCi0gICAgezQ4LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MF8yWzJdID0geworICAgIHsxNjYsIDF9LAogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzNdID0gewotICAgIHsyLCBhcmNzXzcwXzB9LAorICAgIHsxLCBhcmNzXzcwXzB9LAogICAgIHsyLCBhcmNzXzcwXzF9LAotICAgIHszLCBhcmNzXzcwXzJ9LAorICAgIHsyLCBhcmNzXzcwXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8wWzFdID0gewotICAgIHsyNCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzFfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHsyNywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzcxXzFbMl0gPSB7Ci0gICAgezMwLCAyfSwKKyAgICB7MjcsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMlsyXSA9IHsKLSAgICB7MjQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzJbM10gPSB7CisgICAgezI2LCAzfSwKKyAgICB7MTY3LCA0fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MVszXSA9IHsKLSAgICB7MSwgYXJjc183MV8wfSwKK3N0YXRpYyBhcmMgYXJjc183MV8zWzJdID0geworICAgIHsxNjcsIDR9LAorICAgIHswLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzFfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183MVs1XSA9IHsKKyAgICB7MiwgYXJjc183MV8wfSwKICAgICB7MiwgYXJjc183MV8xfSwKLSAgICB7MiwgYXJjc183MV8yfSwKKyAgICB7MywgYXJjc183MV8yfSwKKyAgICB7MiwgYXJjc183MV8zfSwKKyAgICB7MSwgYXJjc183MV80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzJfMFsxXSA9IHsKLSAgICB7MjQsIDF9LAorICAgIHsyNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzFbNF0gPSB7Ci0gICAgezI1LCAyfSwKLSAgICB7MTU4LCAzfSwKLSAgICB7MzAsIDR9LAorc3RhdGljIGFyYyBhcmNzXzcyXzFbMl0gPSB7CisgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzcyXzJbMV0gPSB7Ci0gICAgezI0LCA1fSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzNbMV0gPSB7Ci0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml80WzJdID0gewotICAgIHsyNCwgNn0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml81WzNdID0gewotICAgIHsxNTgsIDN9LAotICAgIHszMCwgN30sCi0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml82WzJdID0gewotICAgIHszMCwgNH0sCi0gICAgezAsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml83WzJdID0gewotICAgIHsyNCwgOH0sCi0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Ml84WzFdID0gewotICAgIHsyNSwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzcyXzlbMV0gPSB7Ci0gICAgezI0LCAxMH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzcyXzEwWzJdID0gewotICAgIHszMCwgN30sCi0gICAgezAsIDEwfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzExXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbM10gPSB7CiAgICAgezEsIGFyY3NfNzJfMH0sCi0gICAgezQsIGFyY3NfNzJfMX0sCisgICAgezIsIGFyY3NfNzJfMX0sCiAgICAgezEsIGFyY3NfNzJfMn0sCi0gICAgezEsIGFyY3NfNzJfM30sCi0gICAgezIsIGFyY3NfNzJfNH0sCi0gICAgezMsIGFyY3NfNzJfNX0sCi0gICAgezIsIGFyY3NfNzJfNn0sCi0gICAgezIsIGFyY3NfNzJfN30sCi0gICAgezEsIGFyY3NfNzJfOH0sCi0gICAgezEsIGFyY3NfNzJfOX0sCi0gICAgezIsIGFyY3NfNzJfMTB9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183M18wWzFdID0gewotICAgIHsxNjIsIDF9LAorc3RhdGljIGFyYyBhcmNzXzczXzBbMl0gPSB7CisgICAgezEwNywgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMVsxXSA9IHsKLSAgICB7MjEsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18yWzJdID0gewotICAgIHsxMywgM30sCi0gICAgezI1LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfM1syXSA9IHsKLSAgICB7MTQsIDV9LAotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzRbMV0gPSB7Ci0gICAgezI2LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfNVsxXSA9IHsKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M182WzFdID0gewotICAgIHsyNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbOF0gPSB7Ci0gICAgezEsIGFyY3NfNzNfMH0sCi0gICAgezEsIGFyY3NfNzNfMX0sCi0gICAgezIsIGFyY3NfNzNfMn0sCi0gICAgezIsIGFyY3NfNzNfM30sCi0gICAgezEsIGFyY3NfNzNfNH0sCi0gICAgezEsIGFyY3NfNzNfNX0sCi0gICAgezEsIGFyY3NfNzNfNn0sCi0gICAgezEsIGFyY3NfNzNfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzc0XzBbM10gPSB7Ci0gICAgezE2MywgMX0sCi0gICAgezMxLCAyfSwKLSAgICB7MzIsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183NF8xWzJdID0gewotICAgIHszMCwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMlsxXSA9IHsKLSAgICB7MjQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzczXzJbM10gPSB7CisgICAgezEwNywgMX0sCisgICAgezUwLCAxfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzNbMV0gPSB7Ci0gICAgezI0LCA2fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbM10gPSB7CisgICAgezIsIGFyY3NfNzNfMH0sCisgICAgezIsIGFyY3NfNzNfMX0sCisgICAgezMsIGFyY3NfNzNfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzRbNF0gPSB7Ci0gICAgezE2MywgMX0sCi0gICAgezMxLCAyfSwKLSAgICB7MzIsIDN9LAotICAgIHswLCA0fSwKK3N0YXRpYyBhcmMgYXJjc183NF8wWzFdID0geworICAgIHsyNiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzVbMl0gPSB7Ci0gICAgezMwLCA3fSwKLSAgICB7MCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfNlsxXSA9IHsKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMlsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfN1syXSA9IHsKLSAgICB7MTYzLCA1fSwKLSAgICB7MzIsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzRbOF0gPSB7Ci0gICAgezMsIGFyY3NfNzRfMH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc0WzNdID0geworICAgIHsxLCBhcmNzXzc0XzB9LAogICAgIHsyLCBhcmNzXzc0XzF9LAotICAgIHsxLCBhcmNzXzc0XzJ9LAotICAgIHsxLCBhcmNzXzc0XzN9LAotICAgIHs0LCBhcmNzXzc0XzR9LAotICAgIHsyLCBhcmNzXzc0XzV9LAotICAgIHsxLCBhcmNzXzc0XzZ9LAotICAgIHsyLCBhcmNzXzc0Xzd9LAorICAgIHsyLCBhcmNzXzc0XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8wWzFdID0gewotICAgIHsyNCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzVfMFszXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHszNCwgMn0sCisgICAgezUwLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMVszXSA9IHsKLSAgICB7MTU4LCAyfSwKLSAgICB7MjksIDN9LAorc3RhdGljIGFyYyBhcmNzXzc1XzFbNF0gPSB7CisgICAgezI3LCA0fSwKKyAgICB7MTY0LCA1fSwKKyAgICB7MzIsIDZ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzVfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezEwNywgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzNbMV0gPSB7Ci0gICAgezI0LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc1WzRdID0gewotICAgIHsxLCBhcmNzXzc1XzB9LAotICAgIHszLCBhcmNzXzc1XzF9LAotICAgIHsxLCBhcmNzXzc1XzJ9LAotICAgIHsxLCBhcmNzXzc1XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8wWzJdID0gewotICAgIHsxNTgsIDF9LAotICAgIHsxNjUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzJdID0gewotICAgIHsyLCBhcmNzXzc2XzB9LAotICAgIHsxLCBhcmNzXzc2XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N18wWzFdID0gewotICAgIHs5NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc3XzFbMV0gPSB7Ci0gICAgezYyLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMlsxXSA9IHsKLSAgICB7OTcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N18zWzFdID0gewotICAgIHsxMDcsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183N180WzJdID0geworc3RhdGljIGFyYyBhcmNzXzc1XzNbM10gPSB7CiAgICAgezE2NCwgNX0sCi0gICAgezAsIDR9LAorICAgIHszMiwgNn0sCisgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183N181WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc1XzRbMV0gPSB7CisgICAgezI2LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfNVsxXSA9IHsKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183N1s2XSA9IHsKLSAgICB7MSwgYXJjc183N18wfSwKLSAgICB7MSwgYXJjc183N18xfSwKLSAgICB7MSwgYXJjc183N18yfSwKLSAgICB7MSwgYXJjc183N18zfSwKLSAgICB7MiwgYXJjc183N180fSwKLSAgICB7MSwgYXJjc183N181fSwKK3N0YXRpYyBhcmMgYXJjc183NV82WzNdID0geworICAgIHsyNiwgOH0sCisgICAgezUwLCA4fSwKKyAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzBbMV0gPSB7Ci0gICAgezkyLCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NV83WzNdID0geworICAgIHsxNjQsIDV9LAorICAgIHszMiwgOX0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8xWzFdID0gewotICAgIHsxMDksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzc1XzhbMl0gPSB7CisgICAgezMyLCA2fSwKKyAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzJbMl0gPSB7Ci0gICAgezE2NCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNzVfOVszXSA9IHsKKyAgICB7MjYsIDEwfSwKKyAgICB7MzQsIDExfSwKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzEwWzFdID0geworICAgIHsyNywgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xMVsxXSA9IHsKKyAgICB7MTA3LCAxM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzEyWzFdID0geworICAgIHsyNiwgMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xM1syXSA9IHsKKyAgICB7MzIsIDl9LAorICAgIHswLCAxM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183NVsxNF0gPSB7CisgICAgezMsIGFyY3NfNzVfMH0sCisgICAgezQsIGFyY3NfNzVfMX0sCisgICAgezEsIGFyY3NfNzVfMn0sCisgICAgezMsIGFyY3NfNzVfM30sCisgICAgezEsIGFyY3NfNzVfNH0sCisgICAgezEsIGFyY3NfNzVfNX0sCisgICAgezMsIGFyY3NfNzVfNn0sCisgICAgezMsIGFyY3NfNzVfN30sCisgICAgezIsIGFyY3NfNzVfOH0sCisgICAgezMsIGFyY3NfNzVfOX0sCisgICAgezEsIGFyY3NfNzVfMTB9LAorICAgIHsxLCBhcmNzXzc1XzExfSwKKyAgICB7MSwgYXJjc183NV8xMn0sCisgICAgezIsIGFyY3NfNzVfMTN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8wWzFdID0geworICAgIHsxNjgsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8xWzFdID0geworICAgIHsyMywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzJbMl0gPSB7CisgICAgezEzLCAzfSwKKyAgICB7MjcsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8zWzJdID0geworICAgIHsxNCwgNX0sCisgICAgezE1LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfNFsxXSA9IHsKKyAgICB7MjgsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl81WzFdID0geworICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzZbMV0gPSB7CisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfN1sxXSA9IHsKKyAgICB7MCwgN30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183Nls4XSA9IHsKKyAgICB7MSwgYXJjc183Nl8wfSwKKyAgICB7MSwgYXJjc183Nl8xfSwKKyAgICB7MiwgYXJjc183Nl8yfSwKKyAgICB7MiwgYXJjc183Nl8zfSwKKyAgICB7MSwgYXJjc183Nl80fSwKKyAgICB7MSwgYXJjc183Nl81fSwKKyAgICB7MSwgYXJjc183Nl82fSwKKyAgICB7MSwgYXJjc183Nl83fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMFsxXSA9IHsKKyAgICB7MTY5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMlsyXSA9IHsKKyAgICB7MTY5LCAxfSwKICAgICB7MCwgMn0sCiB9Oworc3RhdGljIHN0YXRlIHN0YXRlc183N1szXSA9IHsKKyAgICB7MSwgYXJjc183N18wfSwKKyAgICB7MiwgYXJjc183N18xfSwKKyAgICB7MiwgYXJjc183N18yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMFszXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHszNCwgMn0sCisgICAgezMzLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMVszXSA9IHsKKyAgICB7MTY0LCAzfSwKKyAgICB7MzEsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMlsxXSA9IHsKKyAgICB7MjYsIDN9LAorfTsKIHN0YXRpYyBhcmMgYXJjc183OF8zWzFdID0gewogICAgIHswLCAzfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzRdID0gewotICAgIHsxLCBhcmNzXzc4XzB9LAotICAgIHsxLCBhcmNzXzc4XzF9LAotICAgIHsyLCBhcmNzXzc4XzJ9LAorICAgIHszLCBhcmNzXzc4XzB9LAorICAgIHszLCBhcmNzXzc4XzF9LAorICAgIHsxLCBhcmNzXzc4XzJ9LAogICAgIHsxLCBhcmNzXzc4XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OV8wWzFdID0gewotICAgIHsyMSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzlfMFsyXSA9IHsKKyAgICB7MTY0LCAxfSwKKyAgICB7MTcxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzlfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183OVsyXSA9IHsKLSAgICB7MSwgYXJjc183OV8wfSwKKyAgICB7MiwgYXJjc183OV8wfSwKICAgICB7MSwgYXJjc183OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMFsxXSA9IHsKLSAgICB7MTY3LCAxfSwKKyAgICB7MTAwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMVsyXSA9IHsKLSAgICB7MTY4LCAyfSwKLSAgICB7MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfODBfMVsxXSA9IHsKKyAgICB7NjUsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8yWzFdID0gewotICAgIHswLCAyfSwKKyAgICB7MTAxLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzNdID0geworc3RhdGljIGFyYyBhcmNzXzgwXzNbMV0gPSB7CisgICAgezExMSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgwXzRbMl0gPSB7CisgICAgezE3MCwgNX0sCisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MF81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzZdID0gewogICAgIHsxLCBhcmNzXzgwXzB9LAotICAgIHsyLCBhcmNzXzgwXzF9LAorICAgIHsxLCBhcmNzXzgwXzF9LAogICAgIHsxLCBhcmNzXzgwXzJ9LAorICAgIHsxLCBhcmNzXzgwXzN9LAorICAgIHsyLCBhcmNzXzgwXzR9LAorICAgIHsxLCBhcmNzXzgwXzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8wWzJdID0gewotICAgIHs3MywgMX0sCi0gICAgezksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzBbMV0gPSB7CisgICAgezk2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKLSAgICB7MjQsIDJ9LAorICAgIHsxMTMsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzgxXzJbMl0gPSB7CisgICAgezE3MCwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbM10gPSB7Ci0gICAgezIsIGFyY3NfODFfMH0sCi0gICAgezEsIGFyY3NfODFfMX0sCi0gICAgezEsIGFyY3NfODFfMn0sCitzdGF0aWMgYXJjIGFyY3NfODFfM1sxXSA9IHsKKyAgICB7MCwgM30sCiB9Owotc3RhdGljIGRmYSBkZmFzWzgyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbNF0gPSB7CisgICAgezEsIGFyY3NfODFfMH0sCisgICAgezEsIGFyY3NfODFfMX0sCisgICAgezIsIGFyY3NfODFfMn0sCisgICAgezEsIGFyY3NfODFfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzgyXzBbMV0gPSB7CisgICAgezIzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODJfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MlsyXSA9IHsKKyAgICB7MSwgYXJjc184Ml8wfSwKKyAgICB7MSwgYXJjc184Ml8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKKyAgICB7MTczLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMVsyXSA9IHsKKyAgICB7MTc0LCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbM10gPSB7CisgICAgezEsIGFyY3NfODNfMH0sCisgICAgezIsIGFyY3NfODNfMX0sCisgICAgezEsIGFyY3NfODNfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg0XzBbMl0gPSB7CisgICAgezc2LCAxfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg0XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODRfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184NFszXSA9IHsKKyAgICB7MiwgYXJjc184NF8wfSwKKyAgICB7MSwgYXJjc184NF8xfSwKKyAgICB7MSwgYXJjc184NF8yfSwKK307CitzdGF0aWMgZGZhIGRmYXNbODVdID0gewogICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKICAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAotICAgICAiXDIwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAorICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAogICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCiAgICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCiAgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2MSwgImRlY29yYXRlZCIsIDAsIDMsIHN0YXRlc181LAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjIsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzYsCi0gICAgICJcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MywgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfNywKKyAgICB7MjYyLCAiYXN5bmNfZnVuY2RlZiIsIDAsIDMsIHN0YXRlc182LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjMsICJmdW5jZGVmIiwgMCwgOCwgc3RhdGVzXzcsCisgICAgICJcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NCwgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfOCwKICAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY0LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NiwgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY3LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzExLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjgsICJzdG10IiwgMCwgMiwgc3RhdGVzXzEyLAotICAgICAiXDAwMFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0XDAwMCJ9LAotICAgIHsyNjksICJzaW1wbGVfc3RtdCIsIDAsIDQsIHN0YXRlc18xMywKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKLSAgICB7MjcwLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMFwwMDAifSwKLSAgICB7MjcxLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHsyNzIsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezI3MywgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzZcMDM3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc0LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NSwgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18xOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAotICAgIHsyNzcsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzgsICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzksICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yMywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKLSAgICB7MjgxLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNSwKKyAgICB7MjY1LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOSwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY2LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzEwLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjcsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTEsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2OCwgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY5LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMywKKyAgICAgIlwwMDBcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICB7MjcwLCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgezI3MSwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgezI3MiwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MjczLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHsyNzQsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzcwXDM3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NSwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NywgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKKyAgICB7Mjc4LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgyLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODQsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOCwKKyAgICB7Mjc5LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMywKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg1LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMjksCisgICAgezI4MCwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODEsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAorICAgIHsyODIsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODMsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg0LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NSwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODYsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg3LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OCwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg5LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkxLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MywgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTQsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEzMVwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAorICAgIHsyOTUsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzM5LAogICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODYsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMxLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzMzLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkyLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzcsCi0gICAgICJcMDAwXDAxMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDQ1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCi0gICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NSwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NiwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MCwKKyAgICB7Mjk2LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc180MCwKICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTgsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAxLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDUsCi0gICAgICJcMDA0XDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCi0gICAgezMwMiwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDQsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzQ4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDUsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzA3LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMwOCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzUyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTAsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMjIwXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTEsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTUsCi0gICAgICJcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMxMywgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU3LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTQsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc181OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE2LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE3LCAidGVybSIsIDAsIDIsIHN0YXRlc182MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMTksICJwb3dlciIsIDAsIDQsIHN0YXRlc182MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzIwLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzIyLCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182NiwKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzIzLCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMjUsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzY5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMjYsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMyOCwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTEsIHN0YXRlc183MiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKLSAgICB7MzI5LCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCi0gICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCi0gICAgezMzMSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc1LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAotICAgIHszMzIsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAorICAgIHsyOTcsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTgsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAwLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDEsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMwMiwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMywgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ3LAorICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgIHszMDQsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMDUsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzA2LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA3LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwOCwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMwOSwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTAsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzExLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzEyLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwzNzFcMDA3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzEzLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTQsICJleHByIiwgMCwgMiwgc3RhdGVzXzU4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMTUsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzE2LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxNywgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxOCwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMxOSwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzIxLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCisgICAgezMyMiwgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzIzLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI0LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI1LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDAifSwKKyAgICB7MzI2LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzI3LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMjgsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMjksICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzMwLCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzMSwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTQsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7MzMyLCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxIn0sCisgICAgezMzMywgImFyZ2xpc3QiLCAwLCAzLCBzdGF0ZXNfNzcsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezMzNCwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHszMzUsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNiwgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzgwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzcsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzgxLAogICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzQsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzc4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzUsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzc5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAotICAgIHszMzcsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODEsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAyXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMzOCwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOSwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCisgICAgezM0MCwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE2OV0gPSB7CitzdGF0aWMgbGFiZWwgbGFiZWxzWzE3NV0gPSB7CiAgICAgezAsICJFTVBUWSJ9LAogICAgIHsyNTYsIDB9LAogICAgIHs0LCAwfSwKLSAgICB7MjY5LCAwfSwKLSAgICB7MjkzLCAwfSwKKyAgICB7MjcwLCAwfSwKKyAgICB7Mjk0LCAwfSwKICAgICB7MjU3LCAwfSwKLSAgICB7MjY4LCAwfSwKKyAgICB7MjY5LCAwfSwKICAgICB7MCwgMH0sCiAgICAgezI1OCwgMH0sCi0gICAgezMyNywgMH0sCisgICAgezMzMCwgMH0sCiAgICAgezI1OSwgMH0sCiAgICAgezQ5LCAwfSwKLSAgICB7Mjg5LCAwfSwKKyAgICB7MjkwLCAwfSwKICAgICB7NywgMH0sCi0gICAgezMzMCwgMH0sCisgICAgezMzMywgMH0sCiAgICAgezgsIDB9LAogICAgIHsyNjAsIDB9LAogICAgIHsyNjEsIDB9LAotICAgIHszMjksIDB9LAorICAgIHszMzIsIDB9LAorICAgIHsyNjMsIDB9LAogICAgIHsyNjIsIDB9LAorICAgIHs1NSwgMH0sCiAgICAgezEsICJkZWYifSwKICAgICB7MSwgMH0sCi0gICAgezI2MywgMH0sCi0gICAgezUwLCAwfSwKLSAgICB7MzAyLCAwfSwKLSAgICB7MTEsIDB9LAotICAgIHszMDEsIDB9LAogICAgIHsyNjQsIDB9LAorICAgIHs1MSwgMH0sCisgICAgezMwNCwgMH0sCisgICAgezExLCAwfSwKKyAgICB7MzAzLCAwfSwKICAgICB7MjY1LCAwfSwKKyAgICB7MjY2LCAwfSwKICAgICB7MjIsIDB9LAogICAgIHsxMiwgMH0sCiAgICAgezE2LCAwfSwKICAgICB7MzUsIDB9LAotICAgIHsyNjYsIDB9LAogICAgIHsyNjcsIDB9LAotICAgIHsyNzAsIDB9LAotICAgIHsxMywgMH0sCisgICAgezI2OCwgMH0sCiAgICAgezI3MSwgMH0sCi0gICAgezI3NCwgMH0sCisgICAgezEzLCAwfSwKKyAgICB7MjcyLCAwfSwKICAgICB7Mjc1LCAwfSwKICAgICB7Mjc2LCAwfSwKLSAgICB7MjgyLCAwfSwKLSAgICB7MjkwLCAwfSwKKyAgICB7Mjc3LCAwfSwKKyAgICB7MjgzLCAwfSwKICAgICB7MjkxLCAwfSwKICAgICB7MjkyLCAwfSwKLSAgICB7MjcyLCAwfSwKKyAgICB7MjkzLCAwfSwKICAgICB7MjczLCAwfSwKLSAgICB7MzM2LCAwfSwKLSAgICB7MzExLCAwfSwKKyAgICB7Mjc0LCAwfSwKKyAgICB7MzM5LCAwfSwKKyAgICB7MzEzLCAwfSwKICAgICB7MzYsIDB9LAogICAgIHszNywgMH0sCiAgICAgezM4LCAwfSwKKyAgICB7NTAsIDB9LAogICAgIHszOSwgMH0sCiAgICAgezQwLCAwfSwKICAgICB7NDEsIDB9LApAQCAtMjA0NiwzNiArMjA5OCwzNyBAQAogICAgIHs0NiwgMH0sCiAgICAgezQ4LCAwfSwKICAgICB7MSwgImRlbCJ9LAotICAgIHszMjYsIDB9LAorICAgIHszMjksIDB9LAogICAgIHsxLCAicGFzcyJ9LAotICAgIHsyNzcsIDB9LAogICAgIHsyNzgsIDB9LAogICAgIHsyNzksIDB9LAotICAgIHsyODEsIDB9LAogICAgIHsyODAsIDB9LAorICAgIHsyODIsIDB9LAorICAgIHsyODEsIDB9LAogICAgIHsxLCAiYnJlYWsifSwKICAgICB7MSwgImNvbnRpbnVlIn0sCiAgICAgezEsICJyZXR1cm4ifSwKICAgICB7MSwgInJhaXNlIn0sCiAgICAgezEsICJmcm9tIn0sCi0gICAgezI4MywgMH0sCiAgICAgezI4NCwgMH0sCi0gICAgezEsICJpbXBvcnQifSwKLSAgICB7Mjg4LCAwfSwKLSAgICB7MjMsIDB9LAotICAgIHs1MSwgMH0sCi0gICAgezI4NywgMH0sCiAgICAgezI4NSwgMH0sCi0gICAgezEsICJhcyJ9LAorICAgIHsxLCAiaW1wb3J0In0sCisgICAgezI4OSwgMH0sCisgICAgezIzLCAwfSwKKyAgICB7NTIsIDB9LAorICAgIHsyODgsIDB9LAogICAgIHsyODYsIDB9LAorICAgIHsxLCAiYXMifSwKKyAgICB7Mjg3LCAwfSwKICAgICB7MSwgImdsb2JhbCJ9LAogICAgIHsxLCAibm9ubG9jYWwifSwKICAgICB7MSwgImFzc2VydCJ9LAotICAgIHsyOTQsIDB9LAotICAgIHsyOTUsIDB9LAogICAgIHsyOTYsIDB9LAogICAgIHsyOTcsIDB9LAogICAgIHsyOTgsIDB9LAorICAgIHsyOTksIDB9LAorICAgIHszMDAsIDB9LAorICAgIHsyOTUsIDB9LAogICAgIHsxLCAiaWYifSwKICAgICB7MSwgImVsaWYifSwKICAgICB7MSwgImVsc2UifSwKQEAgLTIwODMsMjYgKzIxMzYsMjYgQEAKICAgICB7MSwgImZvciJ9LAogICAgIHsxLCAiaW4ifSwKICAgICB7MSwgInRyeSJ9LAotICAgIHszMDAsIDB9LAorICAgIHszMDIsIDB9LAogICAgIHsxLCAiZmluYWxseSJ9LAogICAgIHsxLCAid2l0aCJ9LAotICAgIHsyOTksIDB9LAotICAgIHszMTIsIDB9LAorICAgIHszMDEsIDB9LAorICAgIHszMTQsIDB9LAogICAgIHsxLCAiZXhjZXB0In0sCiAgICAgezUsIDB9LAogICAgIHs2LCAwfSwKLSAgICB7MzA2LCAwfSwKLSAgICB7MzA0LCAwfSwKLSAgICB7MzAzLCAwfSwKLSAgICB7MzA1LCAwfSwKLSAgICB7MSwgImxhbWJkYSJ9LAotICAgIHszMDcsIDB9LAotICAgIHsxLCAib3IifSwKICAgICB7MzA4LCAwfSwKKyAgICB7MzA2LCAwfSwKKyAgICB7MzA1LCAwfSwKKyAgICB7MzA3LCAwfSwKKyAgICB7MSwgImxhbWJkYSJ9LAorICAgIHszMDksIDB9LAorICAgIHsxLCAib3IifSwKKyAgICB7MzEwLCAwfSwKICAgICB7MSwgImFuZCJ9LAogICAgIHsxLCAibm90In0sCi0gICAgezMwOSwgMH0sCi0gICAgezMxMCwgMH0sCisgICAgezMxMSwgMH0sCisgICAgezMxMiwgMH0sCiAgICAgezIwLCAwfSwKICAgICB7MjEsIDB9LAogICAgIHsyNywgMH0sCkBAIC0yMTExLDUyICsyMTY0LDU0IEBACiAgICAgezI4LCAwfSwKICAgICB7MjgsIDB9LAogICAgIHsxLCAiaXMifSwKLSAgICB7MzEzLCAwfSwKLSAgICB7MTgsIDB9LAotICAgIHszMTQsIDB9LAotICAgIHszMiwgMH0sCiAgICAgezMxNSwgMH0sCi0gICAgezE5LCAwfSwKKyAgICB7MTgsIDB9LAogICAgIHszMTYsIDB9LAorICAgIHszMiwgMH0sCisgICAgezMxNywgMH0sCisgICAgezE5LCAwfSwKKyAgICB7MzE4LCAwfSwKICAgICB7MzMsIDB9LAogICAgIHszNCwgMH0sCi0gICAgezMxNywgMH0sCisgICAgezMxOSwgMH0sCiAgICAgezE0LCAwfSwKICAgICB7MTUsIDB9LAotICAgIHszMTgsIDB9LAorICAgIHszMjAsIDB9LAogICAgIHsxNywgMH0sCiAgICAgezI0LCAwfSwKICAgICB7NDcsIDB9LAogICAgIHszMSwgMH0sCi0gICAgezMxOSwgMH0sCi0gICAgezMyMCwgMH0sCi0gICAgezMyMiwgMH0sCiAgICAgezMyMSwgMH0sCisgICAgezMyMiwgMH0sCisgICAgezU0LCAwfSwKKyAgICB7MzIzLCAwfSwKKyAgICB7MzI1LCAwfSwKKyAgICB7MzI0LCAwfSwKICAgICB7OSwgMH0sCiAgICAgezEwLCAwfSwKICAgICB7MjUsIDB9LAotICAgIHszMjgsIDB9LAorICAgIHszMzEsIDB9LAogICAgIHsyNiwgMH0sCiAgICAgezIsIDB9LAogICAgIHszLCAwfSwKICAgICB7MSwgIk5vbmUifSwKICAgICB7MSwgIlRydWUifSwKICAgICB7MSwgIkZhbHNlIn0sCi0gICAgezMzMywgMH0sCi0gICAgezMyMywgMH0sCi0gICAgezMyNCwgMH0sCi0gICAgezMyNSwgMH0sCisgICAgezMzNiwgMH0sCisgICAgezMyNiwgMH0sCisgICAgezMyNywgMH0sCisgICAgezMyOCwgMH0sCiAgICAgezEsICJjbGFzcyJ9LAotICAgIHszMzEsIDB9LAotICAgIHszMzIsIDB9LAogICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAotICAgIHsxLCAieWllbGQifSwKICAgICB7MzM3LCAwfSwKKyAgICB7MzM4LCAwfSwKKyAgICB7MSwgInlpZWxkIn0sCisgICAgezM0MCwgMH0sCiB9OwogZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hciA9IHsKLSAgICA4MiwKKyAgICA4NSwKICAgICBkZmFzLAotICAgIHsxNjksIGxhYmVsc30sCisgICAgezE3NSwgbGFiZWxzfSwKICAgICAyNTYKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0LmMgYi9QeXRob24vaW1wb3J0LmMKaW5kZXggNGYwNzY1YS4uZWRmMDMwZCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydC5jCisrKyBiL1B5dGhvbi9pbXBvcnQuYwpAQCAtMzYsNiArMzYsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OWMzMzI0NzVkODY4NjI4NF0qLwogCisjaW5jbHVkZSAiY2xpbmljL2ltcG9ydC5jLmgiCisKIC8qW3B5dGhvbiBpbnB1dF0KIGNsYXNzIGZzX3VuaWNvZGVfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlPYmplY3QgKicKQEAgLTIzOSwyOSArMjQxLDkgQEAKIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHJldHVybiBGYWxzZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfbG9ja19oZWxkX19kb2NfXywKLSJsb2NrX2hlbGQoJG1vZHVsZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybiBUcnVlIGlmIHRoZSBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZSBGYWxzZS5cbiIKLSJcbiIKLSJPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCByZXR1cm4gRmFsc2UuIik7Ci0KLSNkZWZpbmUgX0lNUF9MT0NLX0hFTERfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvY2tfaGVsZCIsIChQeUNGdW5jdGlvbilfaW1wX2xvY2tfaGVsZCwgTUVUSF9OT0FSR1MsIF9pbXBfbG9ja19oZWxkX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2xvY2tfaGVsZF9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2NrX2hlbGQoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKLXsKLSAgICByZXR1cm4gX2ltcF9sb2NrX2hlbGRfaW1wbChtb2R1bGUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9sb2NrX2hlbGRfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZTY1Njc0OTY2YmFhNjUgaW5wdXQ9OWIwODhmOWIyMTdkOWJkZl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ3YThjYzNhNTE2OTA4MWEgaW5wdXQ9OWIwODhmOWIyMTdkOWJkZl0qLwogewogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhpbXBvcnRfbG9ja190aHJlYWQgIT0gLTEpOwpAQCAtMjc5LDMwICsyNjEsOSBAQAogbW9kdWxlcy4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2FjcXVpcmVfbG9ja19fZG9jX18sCi0iYWNxdWlyZV9sb2NrKCRtb2R1bGUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJBY3F1aXJlcyB0aGUgaW50ZXJwcmV0ZXJcJ3MgaW1wb3J0IGxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZC5cbiIKLSJcbiIKLSJUaGlzIGxvY2sgc2hvdWxkIGJlIHVzZWQgYnkgaW1wb3J0IGhvb2tzIHRvIGVuc3VyZSB0aHJlYWQtc2FmZXR5IHdoZW4gaW1wb3J0aW5nXG4iCi0ibW9kdWxlcy4gT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7Ci0KLSNkZWZpbmUgX0lNUF9BQ1FVSVJFX0xPQ0tfTUVUSE9EREVGICAgIFwKLSAgICB7ImFjcXVpcmVfbG9jayIsIChQeUNGdW5jdGlvbilfaW1wX2FjcXVpcmVfbG9jaywgTUVUSF9OT0FSR1MsIF9pbXBfYWNxdWlyZV9sb2NrX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2FjcXVpcmVfbG9ja19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9hY3F1aXJlX2xvY2soUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKLXsKLSAgICByZXR1cm4gX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChtb2R1bGUpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9hY3F1aXJlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ3OGYxZmEwODlmZGI5YTQgaW5wdXQ9NGEyZDQzODE4NjZkNWZkY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNjMTQzYjFkMTY0MjJjYWUgaW5wdXQ9NGEyZDQzODE4NjZkNWZkY10qLwogewogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgX1B5SW1wb3J0X0FjcXVpcmVMb2NrKCk7CkBAIC0zMTksMjkgKzI4MCw5IEBACiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfcmVsZWFzZV9sb2NrX19kb2NfXywKLSJyZWxlYXNlX2xvY2soJG1vZHVsZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJlbGVhc2UgdGhlIGludGVycHJldGVyXCdzIGltcG9ydCBsb2NrLlxuIgotIlxuIgotIk9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwotCi0jZGVmaW5lIF9JTVBfUkVMRUFTRV9MT0NLX01FVEhPRERFRiAgICBcCi0gICAgeyJyZWxlYXNlX2xvY2siLCAoUHlDRnVuY3Rpb24pX2ltcF9yZWxlYXNlX2xvY2ssIE1FVEhfTk9BUkdTLCBfaW1wX3JlbGVhc2VfbG9ja19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9yZWxlYXNlX2xvY2tfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfcmVsZWFzZV9sb2NrKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfcmVsZWFzZV9sb2NrX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfcmVsZWFzZV9sb2NrX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNmM3N2E2ODMyZmRhZmQ0IGlucHV0PTkzNGZiMTE1MTZkZDc3OGJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NGQyOGUzOGViZTJiMjI0IGlucHV0PTkzNGZiMTE1MTZkZDc3OGJdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKQEAgLTU1MCw4ICs0OTEsMTMgQEAKIHsKICAgICBsb25nIHJlczsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKLSAgICBQeU9iamVjdCAqcHljX21hZ2ljID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX1JBV19NQUdJQ19OVU1CRVIiKTsKKyAgICBQeU9iamVjdCAqZXh0ZXJuYWwsICpweWNfbWFnaWM7CisKKyAgICBleHRlcm5hbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsICJfYm9vdHN0cmFwX2V4dGVybmFsIik7CisgICAgaWYgKGV4dGVybmFsID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBweWNfbWFnaWMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV4dGVybmFsLCAiX1JBV19NQUdJQ19OVU1CRVIiKTsKKyAgICBQeV9ERUNSRUYoZXh0ZXJuYWwpOwogICAgIGlmIChweWNfbWFnaWMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJlcyA9IFB5TG9uZ19Bc0xvbmcocHljX21hZ2ljKTsKQEAgLTc5Niw3ICs3NDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNwYXRobmFtZSkKIHsKICAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmosICpwYXRob2JqID0gTlVMTCwgKmNwYXRob2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnBhdGhvYmogPSBOVUxMLCAqY3BhdGhvYmogPSBOVUxMLCAqZXh0ZXJuYWw9IE5VTEw7CiAKICAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CiAgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKQEAgLTgyNCw5ICs3NzAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGludGVycHJldGVyISIpOwogICAgICAgICB9CiAKLSAgICAgICAgcGF0aG9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2dldF9zb3VyY2VmaWxlLCBjcGF0aG9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBleHRlcm5hbD0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9ib290c3RyYXBfZXh0ZXJuYWwiKTsKKyAgICAgICAgaWYgKGV4dGVybmFsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhleHRlcm5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZ2V0X3NvdXJjZWZpbGUsIGNwYXRob2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4dGVybmFsKTsKKyAgICAgICAgfQogICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9CkBAIC04OTIsNyArODQzLDcgQEAKIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqY28sIFB5T2JqZWN0ICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjcGF0aG5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKmQsICpyZXM7CisgICAgUHlPYmplY3QgKmQsICpleHRlcm5hbCwgKnJlczsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBfUHlfSURFTlRJRklFUihfZml4X3VwX21vZHVsZSk7CiAKQEAgLTkwNCw5ICs4NTUsMTMgQEAKICAgICBpZiAocGF0aG5hbWUgPT0gTlVMTCkgewogICAgICAgICBwYXRobmFtZSA9ICgoUHlDb2RlT2JqZWN0ICopY28pLT5jb19maWxlbmFtZTsKICAgICB9Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgZXh0ZXJuYWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGludGVycC0+aW1wb3J0bGliLCAiX2Jvb3RzdHJhcF9leHRlcm5hbCIpOworICAgIGlmIChleHRlcm5hbCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhleHRlcm5hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZml4X3VwX21vZHVsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCBuYW1lLCBwYXRobmFtZSwgY3BhdGhuYW1lLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZXh0ZXJuYWwpOwogICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgcmVzID0gZXhlY19jb2RlX2luX21vZHVsZShuYW1lLCBkLCBjbyk7CkBAIC05NjYsNDMgKzkyMSwxMCBAQAogQ2hhbmdlcyBjb2RlLmNvX2ZpbGVuYW1lIHRvIHNwZWNpZnkgdGhlIHBhc3NlZC1pbiBmaWxlIHBhdGguCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX19maXhfY29fZmlsZW5hbWVfX2RvY19fLAotIl9maXhfY29fZmlsZW5hbWUoJG1vZHVsZSwgY29kZSwgcGF0aCwgLylcbiIKLSItLVxuIgotIlxuIgotIkNoYW5nZXMgY29kZS5jb19maWxlbmFtZSB0byBzcGVjaWZ5IHRoZSBwYXNzZWQtaW4gZmlsZSBwYXRoLlxuIgotIlxuIgotIiAgY29kZVxuIgotIiAgICBDb2RlIG9iamVjdCB0byBjaGFuZ2UuXG4iCi0iICBwYXRoXG4iCi0iICAgIEZpbGUgcGF0aCB0byB1c2UuIik7Ci0KLSNkZWZpbmUgX0lNUF9fRklYX0NPX0ZJTEVOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJfZml4X2NvX2ZpbGVuYW1lIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfX2ZpeF9jb19maWxlbmFtZSwgTUVUSF9WQVJBUkdTLCBfaW1wX19maXhfY29fZmlsZW5hbWVfX2RvY19ffSwKLQogc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5Q29kZU9iamVjdCAqY29kZSwgUHlPYmplY3QgKnBhdGgpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9fZml4X2NvX2ZpbGVuYW1lKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5Q29kZU9iamVjdCAqY29kZTsKLSAgICBQeU9iamVjdCAqcGF0aDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAotICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChtb2R1bGUsIGNvZGUsIHBhdGgpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeUNvZGVPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpwYXRoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiNGIxZWRlYjBkNTVjNWQgaW5wdXQ9ODk1YmE1MGU3OGI4MmYwNV0qLworX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlDb2RlT2JqZWN0ICpjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjRkYjU2YWFjMGExMzI3ZiBpbnB1dD04OTViYTUwZTc4YjgyZjA1XSovCiAKIHsKICAgICB1cGRhdGVfY29tcGlsZWRfbW9kdWxlKGNvZGUsIHBhdGgpOwpAQCAtMTEwNCw1MCArMTAyNiw3NCBAQAogICAgIHJldHVybiBpbXBvcnRlcjsKIH0KIAorLypbY2xpbmljIGlucHV0XQorX2ltcC5jcmVhdGVfYnVpbHRpbgogCi1zdGF0aWMgaW50IGluaXRfYnVpbHRpbihQeU9iamVjdCAqKTsgLyogRm9yd2FyZCAqLworICAgIHNwZWM6IG9iamVjdAorICAgIC8KIAotLyogSW5pdGlhbGl6ZSBhIGJ1aWx0LWluIG1vZHVsZS4KLSAgIFJldHVybiAxIGZvciBzdWNjZXNzLCAwIGlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kLCBhbmQgLTEgd2l0aAotICAgYW4gZXhjZXB0aW9uIHNldCBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkLiAqLworQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLXN0YXRpYyBpbnQKLWluaXRfYnVpbHRpbihQeU9iamVjdCAqbmFtZSkKK3N0YXRpYyBQeU9iamVjdCAqCitfaW1wX2NyZWF0ZV9idWlsdGluKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzcGVjKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwMzhmNDY3NjE3MjI2YmQgaW5wdXQ9MzdmOTY2Zjg5MDM4NGU0N10qLwogewogICAgIHN0cnVjdCBfaW5pdHRhYiAqcDsKKyAgICBQeU9iamVjdCAqbmFtZTsKKyAgICBjaGFyICpuYW1lc3RyOwogICAgIFB5T2JqZWN0ICptb2Q7CiAKKyAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAibmFtZSIpOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgbW9kID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgbmFtZSk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobW9kICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOworICAgIGlmIChtb2QgfHwgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICByZXR1cm4gbW9kOworICAgIH0KKworICAgIG5hbWVzdHIgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWUpOworICAgIGlmIChuYW1lc3RyID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Jbml0dGFiOyBwLT5uYW1lICE9IE5VTEw7IHArKykgewotICAgICAgICBQeU9iamVjdCAqbW9kOwogICAgICAgICBQeU1vZHVsZURlZiAqZGVmOwogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgcC0+bmFtZSkgPT0gMCkgewogICAgICAgICAgICAgaWYgKHAtPmluaXRmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJVIiLAotICAgICAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgLyogQ2Fubm90IHJlLWluaXQgaW50ZXJuYWwgbW9kdWxlICgic3lzIiBvciAiYnVpbHRpbnMiKSAqLworICAgICAgICAgICAgICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lc3RyKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1vZDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1vZCA9ICgqcC0+aW5pdGZ1bmMpKCk7Ci0gICAgICAgICAgICBpZiAobW9kID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KLSAgICAgICAgICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOwotICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcC0+aW5pdGZ1bmM7Ci0gICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIC8qIEZpeHVwRXh0ZW5zaW9uIGhhcyBwdXQgdGhlIG1vZHVsZSBpbnRvIHN5cy5tb2R1bGVzLAotICAgICAgICAgICAgICAgc28gd2UgY2FuIHJlbGVhc2Ugb3VyIG93biByZWZlcmVuY2UuICovCi0gICAgICAgICAgICBQeV9ERUNSRUYobW9kKTsKLSAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1R5cGVDaGVjayhtb2QsICZQeU1vZHVsZURlZl9UeXBlKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlNb2R1bGVfRnJvbURlZkFuZFNwZWMoKFB5TW9kdWxlRGVmKiltb2QsIHNwZWMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciBwb2ludGVyIHRvIG1vZHVsZSBpbml0IGZ1bmN0aW9uLiAqLworICAgICAgICAgICAgICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOworICAgICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOworICAgICAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobW9kLCBuYW1lLCBuYW1lKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBtb2Q7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAKQEAgLTEzMzcsNiArMTI4Myw3IEBACiByZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyh2b2lkKQogewogICAgIGNvbnN0IGNoYXIgKmltcG9ydGxpYl9maWxlbmFtZSA9ICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiI7CisgICAgY29uc3QgY2hhciAqZXh0ZXJuYWxfZmlsZW5hbWUgPSAiPGZyb3plbiBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbD4iOwogICAgIGNvbnN0IGNoYXIgKnJlbW92ZV9mcmFtZXMgPSAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCI7CiAgICAgaW50IGFsd2F5c190cmltID0gMDsKICAgICBpbnQgaW5faW1wb3J0bGliID0gMDsKQEAgLTEzNjYsNyArMTMxMywxMCBAQAogICAgICAgICBhc3NlcnQoUHlUcmFjZUJhY2tfQ2hlY2sodGIpKTsKICAgICAgICAgbm93X2luX2ltcG9ydGxpYiA9IChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYl9maWxlbmFtZSkgPT0gMCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX2ZpbGVuYW1lKSA9PSAwKTsKICAgICAgICAgaWYgKG5vd19pbl9pbXBvcnRsaWIgJiYgIWluX2ltcG9ydGxpYikgewogICAgICAgICAgICAgLyogVGhpcyBpcyB0aGUgbGluayB0byB0aGlzIGNodW5rIG9mIGltcG9ydGxpYiB0cmFjZWJhY2tzICovCiAgICAgICAgICAgICBvdXRlcl9saW5rID0gcHJldl9saW5rOwpAQCAtMTg2OCwyNyArMTgxOCw5IEBACiBSZXR1cm5zIHRoZSBsaXN0IG9mIGZpbGUgc3VmZml4ZXMgdXNlZCB0byBpZGVudGlmeSBleHRlbnNpb24gbW9kdWxlcy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX19kb2NfXywKLSJleHRlbnNpb25fc3VmZml4ZXMoJG1vZHVsZSwgLylcbiIKLSItLVxuIgotIlxuIgotIlJldHVybnMgdGhlIGxpc3Qgb2YgZmlsZSBzdWZmaXhlcyB1c2VkIHRvIGlkZW50aWZ5IGV4dGVuc2lvbiBtb2R1bGVzLiIpOwotCi0jZGVmaW5lIF9JTVBfRVhURU5TSU9OX1NVRkZJWEVTX01FVEhPRERFRiAgICBcCi0gICAgeyJleHRlbnNpb25fc3VmZml4ZXMiLCAoUHlDRnVuY3Rpb24pX2ltcF9leHRlbnNpb25fc3VmZml4ZXMsIE1FVEhfTk9BUkdTLCBfaW1wX2V4dGVuc2lvbl9zdWZmaXhlc19fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9leHRlbnNpb25fc3VmZml4ZXNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCi17Ci0gICAgcmV0dXJuIF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwobW9kdWxlKTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfZXh0ZW5zaW9uX3N1ZmZpeGVzX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjMwYTI0MzgxNjc3OThjIGlucHV0PWVjZGVlZWNmY2I2ZjgzOWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNDRjMTU2NmVmMzYyMjI5IGlucHV0PWVjZGVlZWNmY2I2ZjgzOWVdKi8KIHsKICAgICBQeU9iamVjdCAqbGlzdDsKICAgICBjb25zdCBjaGFyICpzdWZmaXg7CkBAIC0xOTE3LDYyICsxODQ5LDYgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQotX2ltcC5pbml0X2J1aWx0aW4KLQotICAgIG5hbWU6IHVuaWNvZGUKLSAgICAvCi0KLUluaXRpYWxpemVzIGEgYnVpbHQtaW4gbW9kdWxlLgotW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotCi1QeURvY19TVFJWQVIoX2ltcF9pbml0X2J1aWx0aW5fX2RvY19fLAotImluaXRfYnVpbHRpbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iSW5pdGlhbGl6ZXMgYSBidWlsdC1pbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9JTklUX0JVSUxUSU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImluaXRfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2luaXRfYnVpbHRpbiwgTUVUSF9WQVJBUkdTLCBfaW1wX2luaXRfYnVpbHRpbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pbml0X2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2luaXRfYnVpbHRpbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTppbml0X2J1aWx0aW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9idWlsdGluX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTAyNDQ5NDhhNDNmOGUyNiBpbnB1dD1mOTM0ZDIyMzFlYzUyYTJlXSovCi17Ci0gICAgaW50IHJldDsKLSAgICBQeU9iamVjdCAqbTsKLQotICAgIHJldCA9IGluaXRfYnVpbHRpbihuYW1lKTsKLSAgICBpZiAocmV0IDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJldCA9PSAwKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7Ci0gICAgUHlfWElOQ1JFRihtKTsKLSAgICByZXR1cm4gbTsKLX0KLQotLypbY2xpbmljIGlucHV0XQogX2ltcC5pbml0X2Zyb3plbgogCiAgICAgbmFtZTogdW5pY29kZQpAQCAtMTk4MSwzNyArMTg1Nyw5IEBACiBJbml0aWFsaXplcyBhIGZyb3plbiBtb2R1bGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2luaXRfZnJvemVuX19kb2NfXywKLSJpbml0X2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iSW5pdGlhbGl6ZXMgYSBmcm96ZW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSU5JVF9GUk9aRU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImluaXRfZnJvemVuIiwgKFB5Q0Z1bmN0aW9uKV9pbXBfaW5pdF9mcm96ZW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pbml0X2Zyb3plbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pbml0X2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfaW5pdF9mcm96ZW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aW5pdF9mcm96ZW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKLQotZXhpdDoKLSAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogX2ltcF9pbml0X2Zyb3plbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0YmMyYmZmMjk2ZjhmMjIgaW5wdXQ9MTMwMTlhZGZjMDRmM2ZiM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5ZGU0OTNiZGQ3MTE4NzggaW5wdXQ9MTMwMTlhZGZjMDRmM2ZiM10qLwogewogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07CkBAIC0yMDM3LDM3ICsxODg1LDkgQEAKIENyZWF0ZSBhIGNvZGUgb2JqZWN0IGZvciBhIGZyb3plbiBtb2R1bGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2dldF9mcm96ZW5fb2JqZWN0X19kb2NfXywKLSJnZXRfZnJvemVuX29iamVjdCgkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iQ3JlYXRlIGEgY29kZSBvYmplY3QgZm9yIGEgZnJvemVuIG1vZHVsZS4iKTsKLQotI2RlZmluZSBfSU1QX0dFVF9GUk9aRU5fT0JKRUNUX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRfZnJvemVuX29iamVjdCIsIChQeUNGdW5jdGlvbilfaW1wX2dldF9mcm96ZW5fb2JqZWN0LCBNRVRIX1ZBUkFSR1MsIF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfX2RvY19ffSwKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2dldF9mcm96ZW5fb2JqZWN0KFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICJVOmdldF9mcm96ZW5fb2JqZWN0IiwKLSAgICAgICAgJm5hbWUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDg5ZWM3MDJhOWQ3MGM1IGlucHV0PWVkNjg5YmMwNTM1OGZkYmRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMTE0Yzk3MGE0N2YyZTNjIGlucHV0PWVkNjg5YmMwNTM1OGZkYmRdKi8KIHsKICAgICByZXR1cm4gZ2V0X2Zyb3plbl9vYmplY3QobmFtZSk7CiB9CkBAIC0yMDgxLDM3ICsxOTAxLDkgQEAKIFJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgaXMgb2YgYSBmcm96ZW4gcGFja2FnZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotUHlEb2NfU1RSVkFSKF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfX2RvY19fLAotImlzX2Zyb3plbl9wYWNrYWdlKCRtb2R1bGUsIG5hbWUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGlzIG9mIGEgZnJvemVuIHBhY2thZ2UuIik7Ci0KLSNkZWZpbmUgX0lNUF9JU19GUk9aRU5fUEFDS0FHRV9NRVRIT0RERUYgICAgXAotICAgIHsiaXNfZnJvemVuX3BhY2thZ2UiLCAoUHlDRnVuY3Rpb24pX2ltcF9pc19mcm96ZW5fcGFja2FnZSwgTUVUSF9WQVJBUkdTLCBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW5fcGFja2FnZShQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTppc19mcm96ZW5fcGFja2FnZSIsCi0gICAgICAgICZuYW1lKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChtb2R1bGUsIG5hbWUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODZhYWIxNGRjZDRiOTU5YiBpbnB1dD04MWI2Y2RlY2QwODBmYmI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2U0Y2FiODAyYjU2ZDY0OSBpbnB1dD04MWI2Y2RlY2QwODBmYmI4XSovCiB7CiAgICAgcmV0dXJuIGlzX2Zyb3plbl9wYWNrYWdlKG5hbWUpOwogfQpAQCAtMjEyNSwzNyArMTkxNyw5IEBACiBSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9pc19idWlsdGluX19kb2NfXywKLSJpc19idWlsdGluKCRtb2R1bGUsIG5hbWUsIC8pXG4iCi0iLS1cbiIKLSJcbiIKLSJSZXR1cm5zIFRydWUgaWYgdGhlIG1vZHVsZSBuYW1lIGNvcnJlc3BvbmRzIHRvIGEgYnVpbHQtaW4gbW9kdWxlLiIpOwotCi0jZGVmaW5lIF9JTVBfSVNfQlVJTFRJTl9NRVRIT0RERUYgICAgXAotICAgIHsiaXNfYnVpbHRpbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2J1aWx0aW4sIE1FVEhfVkFSQVJHUywgX2ltcF9pc19idWlsdGluX19kb2NfX30sCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2J1aWx0aW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2J1aWx0aW4oUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm5hbWU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlU6aXNfYnVpbHRpbiIsCi0gICAgICAgICZuYW1lKSkKLSAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfaXNfYnVpbHRpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ1ODQ3ZjhjYWM1MDk0NmUgaW5wdXQ9ODZiZWZkYWMwMjFkZDFjN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkZWVjOWNhYzZmYjlhN2UgaW5wdXQ9ODZiZWZkYWMwMjFkZDFjN10qLwogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaXNfYnVpbHRpbihuYW1lKSk7CiB9CkBAIC0yMTY5LDM3ICsxOTMzLDkgQEAKIFJldHVybnMgVHJ1ZSBpZiB0aGUgbW9kdWxlIG5hbWUgY29ycmVzcG9uZHMgdG8gYSBmcm96ZW4gbW9kdWxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1QeURvY19TVFJWQVIoX2ltcF9pc19mcm96ZW5fX2RvY19fLAotImlzX2Zyb3plbigkbW9kdWxlLCBuYW1lLCAvKVxuIgotIi0tXG4iCi0iXG4iCi0iUmV0dXJucyBUcnVlIGlmIHRoZSBtb2R1bGUgbmFtZSBjb3JyZXNwb25kcyB0byBhIGZyb3plbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9JU19GUk9aRU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImlzX2Zyb3plbiIsIChQeUNGdW5jdGlvbilfaW1wX2lzX2Zyb3plbiwgTUVUSF9WQVJBUkdTLCBfaW1wX2lzX2Zyb3plbl9fZG9jX199LAotCi1zdGF0aWMgUHlPYmplY3QgKgotX2ltcF9pc19mcm96ZW5faW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2lzX2Zyb3plbihQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAiVTppc19mcm96ZW4iLAotICAgICAgICAmbmFtZSkpCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0KLWV4aXQ6Ci0gICAgcmV0dXJuIHJldHVybl92YWx1ZTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIF9pbXBfaXNfZnJvemVuX2ltcGwoUHlNb2R1bGVEZWYgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjY5MWFmODg0YmE0OTg3ZCBpbnB1dD03MzAxZGJjYTE4OTdkNjZiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2RlOGUyNjBjOGUzNmFlZCBpbnB1dD03MzAxZGJjYTE4OTdkNjZiXSovCiB7CiAgICAgY29uc3Qgc3RydWN0IF9mcm96ZW4gKnA7CiAKQEAgLTIyMDcsODQgKzE5NDMsMTMxIEBACiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgKHAgPT0gTlVMTCA/IDAgOiBwLT5zaXplKSk7CiB9CiAKKy8qIENvbW1vbiBpbXBsZW1lbnRhdGlvbiBmb3IgX2ltcC5leGVjX2R5bmFtaWMgYW5kIF9pbXAuZXhlY19idWlsdGluICovCitzdGF0aWMgaW50CitleGVjX2J1aWx0aW5fb3JfZHluYW1pYyhQeU9iamVjdCAqbW9kKSB7CisgICAgUHlNb2R1bGVEZWYgKmRlZjsKKyAgICB2b2lkICpzdGF0ZTsKKworICAgIGlmICghUHlNb2R1bGVfQ2hlY2sobW9kKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICBpZiAoZGVmID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgc3RhdGUgPSBQeU1vZHVsZV9HZXRTdGF0ZShtb2QpOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0YXRlKSB7CisgICAgICAgIC8qIEFscmVhZHkgaW5pdGlhbGl6ZWQ7IHNraXAgcmVsb2FkICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gUHlNb2R1bGVfRXhlY0RlZihtb2QsIGRlZik7Cit9CisKICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogCiAvKltjbGluaWMgaW5wdXRdCi1faW1wLmxvYWRfZHluYW1pYworX2ltcC5jcmVhdGVfZHluYW1pYwogCi0gICAgbmFtZTogdW5pY29kZQotICAgIHBhdGg6IGZzX3VuaWNvZGUKKyAgICBzcGVjOiBvYmplY3QKICAgICBmaWxlOiBvYmplY3QgPSBOVUxMCiAgICAgLwogCi1Mb2FkcyBhbiBleHRlbnNpb24gbW9kdWxlLgorQ3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLVB5RG9jX1NUUlZBUihfaW1wX2xvYWRfZHluYW1pY19fZG9jX18sCi0ibG9hZF9keW5hbWljKCRtb2R1bGUsIG5hbWUsIHBhdGgsIGZpbGU9Tm9uZSwgLylcbiIKLSItLVxuIgotIlxuIgotIkxvYWRzIGFuIGV4dGVuc2lvbiBtb2R1bGUuIik7Ci0KLSNkZWZpbmUgX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvYWRfZHluYW1pYyIsIChQeUNGdW5jdGlvbilfaW1wX2xvYWRfZHluYW1pYywgTUVUSF9WQVJBUkdTLCBfaW1wX2xvYWRfZHluYW1pY19fZG9jX199LAotCiBzdGF0aWMgUHlPYmplY3QgKgotX2ltcF9sb2FkX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICpmaWxlKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLV9pbXBfbG9hZF9keW5hbWljKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQorX2ltcF9jcmVhdGVfZHluYW1pY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpzcGVjLCBQeU9iamVjdCAqZmlsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MzVjZGU1YjM4NzJkNTZkIGlucHV0PWMzMWI5NTRmNGNmNGUwOWRdKi8KIHsKLSAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aDsKLSAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgIlVPJnxPOmxvYWRfZHluYW1pYyIsCi0gICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aCwgJmZpbGUpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9sb2FkX2R5bmFtaWNfaW1wbChtb2R1bGUsIG5hbWUsIHBhdGgsIGZpbGUpOwotCi1leGl0OgotICAgIHJldHVybiByZXR1cm5fdmFsdWU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1faW1wX2xvYWRfZHluYW1pY19pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmZpbGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODFkMTFhMWZiZDFlYTBhOCBpbnB1dD1hZjY0ZjA2ZTRiYWQzNTI2XSovCi17Ci0gICAgUHlPYmplY3QgKm1vZDsKKyAgICBQeU9iamVjdCAqbW9kLCAqbmFtZSwgKnBhdGg7CiAgICAgRklMRSAqZnA7CiAKKyAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzcGVjLCAibmFtZSIpOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcGF0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm9yaWdpbiIpOworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtb2QgPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lLCBwYXRoKTsKKyAgICBpZiAobW9kICE9IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIFB5X0lOQ1JFRihtb2QpOworICAgICAgICByZXR1cm4gbW9kOworICAgIH0KKwogICAgIGlmIChmaWxlICE9IE5VTEwpIHsKICAgICAgICAgZnAgPSBfUHlfZm9wZW5fb2JqKHBhdGgsICJyIik7CiAgICAgICAgIGlmIChmcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgICAgICBmcCA9IE5VTEw7Ci0gICAgbW9kID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGgsIGZwKTsKKworICAgIG1vZCA9IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZVdpdGhTcGVjKHNwZWMsIGZwKTsKKworICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgaWYgKGZwKQogICAgICAgICBmY2xvc2UoZnApOwogICAgIHJldHVybiBtb2Q7CiB9CiAKKy8qW2NsaW5pYyBpbnB1dF0KK19pbXAuZXhlY19keW5hbWljIC0+IGludAorCisgICAgbW9kOiBvYmplY3QKKyAgICAvCisKK0luaXRpYWxpemUgYW4gZXh0ZW5zaW9uIG1vZHVsZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2ltcF9leGVjX2R5bmFtaWNfaW1wbChQeU1vZHVsZURlZiAqbW9kdWxlLCBQeU9iamVjdCAqbW9kKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRiODRmMTMwMWIyMmQ0YmQgaW5wdXQ9OWZkYmZjYjI1MDI4MGQzYV0qLworeworICAgIHJldHVybiBleGVjX2J1aWx0aW5fb3JfZHluYW1pYyhtb2QpOworfQorCisKICNlbmRpZiAvKiBIQVZFX0RZTkFNSUNfTE9BRElORyAqLwogCiAvKltjbGluaWMgaW5wdXRdCitfaW1wLmV4ZWNfYnVpbHRpbiAtPiBpbnQKKworICAgIG1vZDogb2JqZWN0CisgICAgLworCitJbml0aWFsaXplIGEgYnVpbHQtaW4gbW9kdWxlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfaW1wX2V4ZWNfYnVpbHRpbl9pbXBsKFB5TW9kdWxlRGVmICptb2R1bGUsIFB5T2JqZWN0ICptb2QpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjE1ZTk5ODc2YTI3ZTI4NCBpbnB1dD03YmVlZDVhMmYxMmE2MGNhXSovCit7CisgICAgcmV0dXJuIGV4ZWNfYnVpbHRpbl9vcl9keW5hbWljKG1vZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KIGR1bXAgYnVmZmVyCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0KLSNpZm5kZWYgX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGCi0gICAgI2RlZmluZSBfSU1QX0xPQURfRFlOQU1JQ19NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0xPQURfRFlOQU1JQ19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDA3YzFkNGEzNDNhOTU3OSBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD01MjRjZTJlMDIxZTRlYmE2XSovCiAKIAogUHlEb2NfU1RSVkFSKGRvY19pbXAsCkBAIC0yMjk3LDExICsyMDgwLDEzIEBACiAgICAgX0lNUF9SRUxFQVNFX0xPQ0tfTUVUSE9EREVGCiAgICAgX0lNUF9HRVRfRlJPWkVOX09CSkVDVF9NRVRIT0RERUYKICAgICBfSU1QX0lTX0ZST1pFTl9QQUNLQUdFX01FVEhPRERFRgotICAgIF9JTVBfSU5JVF9CVUlMVElOX01FVEhPRERFRgorICAgIF9JTVBfQ1JFQVRFX0JVSUxUSU5fTUVUSE9EREVGCiAgICAgX0lNUF9JTklUX0ZST1pFTl9NRVRIT0RERUYKICAgICBfSU1QX0lTX0JVSUxUSU5fTUVUSE9EREVGCiAgICAgX0lNUF9JU19GUk9aRU5fTUVUSE9EREVGCi0gICAgX0lNUF9MT0FEX0RZTkFNSUNfTUVUSE9EREVGCisgICAgX0lNUF9DUkVBVEVfRFlOQU1JQ19NRVRIT0RERUYKKyAgICBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKKyAgICBfSU1QX0VYRUNfQlVJTFRJTl9NRVRIT0RERUYKICAgICBfSU1QX19GSVhfQ09fRklMRU5BTUVfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAvKiBzZW50aW5lbCAqLwogfTsKQEAgLTIzODQsNyArMjE2OSw3IEBACiAKICAgICBtZW1zZXQobmV3dGFiLCAnXDAnLCBzaXplb2YgbmV3dGFiKTsKIAotICAgIG5ld3RhYlswXS5uYW1lID0gKGNoYXIgKiluYW1lOworICAgIG5ld3RhYlswXS5uYW1lID0gbmFtZTsKICAgICBuZXd0YWJbMF0uaW5pdGZ1bmMgPSBpbml0ZnVuYzsKIAogICAgIHJldHVybiBQeUltcG9ydF9FeHRlbmRJbml0dGFiKG5ld3RhYik7CkBAIC0yMzkzLDQgKzIxNzgsMyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCBiNjBmMWM3Li4xYWE1ODVkIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtMTMsODcgKzEzLDE4NSBAQAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKICNpZmRlZiBNU19XSU5ET1dTCi1leHRlcm4gZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApOworZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyV2luZG93cyhjb25zdCBjaGFyICpwcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpmcCk7CiAjZWxzZQotZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOworZXh0ZXJuIGRsX2Z1bmNwdHIgX1B5SW1wb3J0X0ZpbmRTaGFyZWRGdW5jcHRyKGNvbnN0IGNoYXIgKnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKICNlbmRpZgogCi1QeU9iamVjdCAqCi1fUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGUoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoLCBGSUxFICpmcCkKLXsKLSAgICBQeU9iamVjdCAqbSA9IE5VTEw7Ci0jaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotI2VuZGlmCi0gICAgUHlPYmplY3QgKm5hbWVhc2NpaTsKLSAgICBjaGFyICpuYW1lc3RyLCAqbGFzdGRvdCwgKnNob3J0bmFtZSwgKnBhY2thZ2Vjb250ZXh0LCAqb2xkY29udGV4dDsKLSAgICBkbF9mdW5jcHRyIHAwOwotICAgIFB5T2JqZWN0KiAoKnApKHZvaWQpOwotICAgIHN0cnVjdCBQeU1vZHVsZURlZiAqZGVmOworc3RhdGljIGNvbnN0IGNoYXIgKmFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7CitzdGF0aWMgY29uc3QgY2hhciAqbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOwogCi0gICAgbSA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWUsIHBhdGgpOwotICAgIGlmIChtICE9IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKG0pOwotICAgICAgICByZXR1cm4gbTsKKy8qIEdldCB0aGUgdmFyaWFibGUgcGFydCBvZiBhIG1vZHVsZSdzIGV4cG9ydCBzeW1ib2wgbmFtZS4KKyAqIFJldHVybnMgYSBieXRlcyBpbnN0YW5jZS4gRm9yIG5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzLCB0aGUgbmFtZSBpcworICogZW5jb2RlZCBhcyBwZXIgUEVQIDQ4OS4KKyAqIFRoZSBob29rX3ByZWZpeCBwb2ludGVyIGlzIHNldCB0byBlaXRoZXIgYXNjaWlfb25seV9wcmVmaXggb3IKKyAqIG5vbmFzY2lpX3ByZWZpeCwgYXMgYXBwcm9wcmlhdGUuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfZW5jb2RlZF9uYW1lKFB5T2JqZWN0ICpuYW1lLCBjb25zdCBjaGFyICoqaG9va19wcmVmaXgpIHsKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5T2JqZWN0ICplbmNvZGVkID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbW9kbmFtZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBuYW1lX2xlbiwgbGFzdGRvdDsKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKKworICAgIC8qIEdldCB0aGUgc2hvcnQgbmFtZSAoc3Vic3RyaW5nIGFmdGVyIGxhc3QgZG90KSAqLworICAgIG5hbWVfbGVuID0gUHlVbmljb2RlX0dldExlbmd0aChuYW1lKTsKKyAgICBsYXN0ZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgMCwgbmFtZV9sZW4sIC0xKTsKKyAgICBpZiAobGFzdGRvdCA8IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSBpZiAobGFzdGRvdCA+PSAwKSB7CisgICAgICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgbGFzdGRvdCArIDEsIG5hbWVfbGVuKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG5hbWUgPSB0bXA7CisgICAgICAgIC8qICJuYW1lIiBub3cgaG9sZHMgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBzdWJzdHJpbmcgKi8KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYobmFtZSk7CiAgICAgfQogCi0gICAgLyogbmFtZSBtdXN0IGJlIGVuY29kYWJsZSB0byBBU0NJSSBiZWNhdXNlIGR5bmFtaWMgbW9kdWxlIG11c3QgaGF2ZSBhCi0gICAgICAgZnVuY3Rpb24gY2FsbGVkICJQeUluaXRfTkFNRSIsIHRoZXkgYXJlIHdyaXR0ZW4gaW4gQywgYW5kIHRoZSBDIGxhbmd1YWdlCi0gICAgICAgZG9lc24ndCBhY2NlcHQgbm9uLUFTQ0lJIGlkZW50aWZpZXJzLiAqLwotICAgIG5hbWVhc2NpaSA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcobmFtZSwgImFzY2lpIiwgTlVMTCk7Ci0gICAgaWYgKG5hbWVhc2NpaSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBFbmNvZGUgdG8gQVNDSUkgb3IgUHVueWNvZGUsIGFzIG5lZWRlZCAqLworICAgIGVuY29kZWQgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJhc2NpaSIsIE5VTEwpOworICAgIGlmIChlbmNvZGVkICE9IE5VTEwpIHsKKyAgICAgICAgKmhvb2tfcHJlZml4ID0gYXNjaWlfb25seV9wcmVmaXg7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZUVuY29kZUVycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGVuY29kZWQgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG5hbWUsICJwdW55Y29kZSIsIE5VTEwpOworICAgICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqaG9va19wcmVmaXggPSBub25hc2NpaV9wcmVmaXg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQogCi0gICAgbmFtZXN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWVhc2NpaSk7Ci0gICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKKyAgICAvKiBSZXBsYWNlICctJyBieSAnXycgKi8KKyAgICBtb2RuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChlbmNvZGVkLCAmUHlJZF9yZXBsYWNlLCAiY2MiLCAnLScsICdfJyk7CisgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGxhc3Rkb3QgPSBzdHJyY2hyKG5hbWVzdHIsICcuJyk7Ci0gICAgaWYgKGxhc3Rkb3QgPT0gTlVMTCkgewotICAgICAgICBwYWNrYWdlY29udGV4dCA9IE5VTEw7Ci0gICAgICAgIHNob3J0bmFtZSA9IG5hbWVzdHI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWVzdHI7Ci0gICAgICAgIHNob3J0bmFtZSA9IGxhc3Rkb3QrMTsKKyAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgUHlfREVDUkVGKGVuY29kZWQpOworICAgIHJldHVybiBtb2RuYW1lOworZXJyb3I6CisgICAgUHlfREVDUkVGKG5hbWUpOworICAgIFB5X1hERUNSRUYoZW5jb2RlZCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK19QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZVdpdGhTcGVjKFB5T2JqZWN0ICpzcGVjLCBGSUxFICpmcCkKK3sKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICpwYXRoYnl0ZXMgPSBOVUxMOworI2VuZGlmCisgICAgUHlPYmplY3QgKm5hbWVfdW5pY29kZSA9IE5VTEwsICpuYW1lID0gTlVMTCwgKnBhdGggPSBOVUxMLCAqbSA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqbmFtZV9idWYsICpob29rX3ByZWZpeDsKKyAgICBjaGFyICpvbGRjb250ZXh0OworICAgIGRsX2Z1bmNwdHIgZXhwb3J0ZnVuYzsKKyAgICBQeU1vZHVsZURlZiAqZGVmOworICAgIFB5T2JqZWN0ICooKnAwKSh2b2lkKTsKKworICAgIG5hbWVfdW5pY29kZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3BlYywgIm5hbWUiKTsKKyAgICBpZiAobmFtZV91bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgbmFtZSA9IGdldF9lbmNvZGVkX25hbWUobmFtZV91bmljb2RlLCAmaG9va19wcmVmaXgpOworICAgIGlmIChuYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgbmFtZV9idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhuYW1lKTsKKworICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNwZWMsICJvcmlnaW4iKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKHNob3J0bmFtZSwgcGF0aCwgZnApOworICAgIGV4cG9ydGZ1bmMgPSBfUHlJbXBvcnRfRmluZFNoYXJlZEZ1bmNwdHJXaW5kb3dzKGhvb2tfcHJlZml4LCBuYW1lX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBmcCk7CiAjZWxzZQogICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CiAgICAgaWYgKHBhdGhieXRlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKHNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpLCBmcCk7CisgICAgZXhwb3J0ZnVuYyA9IF9QeUltcG9ydF9GaW5kU2hhcmVkRnVuY3B0cihob29rX3ByZWZpeCwgbmFtZV9idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnApOwogICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOwogI2VuZGlmCi0gICAgcCA9IChQeU9iamVjdCooKikodm9pZCkpcDA7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKHAgPT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiAoUHlJbml0XyVzKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydG5hbWUpOwotICAgICAgICBpZiAobXNnID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIG5hbWUsIHBhdGgpOwotICAgICAgICBQeV9ERUNSRUYobXNnKTsKKworICAgIGlmIChleHBvcnRmdW5jID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbXNnOworICAgICAgICAgICAgbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAgICAgImR5bmFtaWMgbW9kdWxlIGRvZXMgbm90IGRlZmluZSAiCisgICAgICAgICAgICAgICAgIm1vZHVsZSBleHBvcnQgZnVuY3Rpb24gKCVzXyVzKSIsCisgICAgICAgICAgICAgICAgaG9va19wcmVmaXgsIG5hbWVfYnVmKTsKKyAgICAgICAgICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBuYW1lX3VuaWNvZGUsIHBhdGgpOworICAgICAgICAgICAgUHlfREVDUkVGKG1zZyk7CisgICAgICAgIH0KICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgb2xkY29udGV4dCA9IF9QeV9QYWNrYWdlQ29udGV4dDsKLSAgICBfUHlfUGFja2FnZUNvbnRleHQgPSBwYWNrYWdlY29udGV4dDsKLSAgICBtID0gKCpwKSgpOwotICAgIF9QeV9QYWNrYWdlQ29udGV4dCA9IG9sZGNvbnRleHQ7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgcDAgPSAoUHlPYmplY3QgKigqKSh2b2lkKSlleHBvcnRmdW5jOworCisgICAgLyogUGFja2FnZSBjb250ZXh0IGlzIG5lZWRlZCBmb3Igc2luZ2xlLXBoYXNlIGluaXQgKi8KKyAgICBvbGRjb250ZXh0ID0gX1B5X1BhY2thZ2VDb250ZXh0OworICAgIF9QeV9QYWNrYWdlQ29udGV4dCA9IFB5VW5pY29kZV9Bc1VURjgobmFtZV91bmljb2RlKTsKKyAgICBtID0gcDAoKTsKKyAgICBfUHlfUGFja2FnZUNvbnRleHQgPSBvbGRjb250ZXh0OworCisgICAgaWYgKG0gPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAiaW5pdGlhbGl6YXRpb24gb2YgJXMgZmFpbGVkIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24iLAorICAgICAgICAgICAgICAgIG5hbWVfYnVmKTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIGVycm9yOworICAgIH0gZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAorICAgICAgICAgICAgbmFtZV9idWYpOworICAgICAgICBtID0gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5X1RZUEUobSkgPT0gTlVMTCkgeworICAgICAgICAvKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiBhIFB5TW9kdWxlRGVmIGlzIHJldHVybmVkIHdpdGhvdXQgY2FsbGluZworICAgICAgICAgKiBQeU1vZHVsZURlZl9Jbml0IG9uIGl0CisgICAgICAgICAqLwogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiaW5pdGlhbGl6YXRpb24gb2YgJXMgcmFpc2VkIHVucmVwb3J0ZWQgZXhjZXB0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgIHNob3J0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiaW5pdCBmdW5jdGlvbiBvZiAlcyByZXR1cm5lZCB1bmluaXRpYWxpemVkIG9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICBuYW1lX2J1Zik7CisgICAgICAgIG0gPSBOVUxMOyAvKiBwcmV2ZW50IHNlZ2ZhdWx0IGluIERFQ1JFRiAqLworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfVHlwZUNoZWNrKG0sICZQeU1vZHVsZURlZl9UeXBlKSkgeworICAgICAgICBQeV9ERUNSRUYobmFtZV91bmljb2RlKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIHJldHVybiBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYygoUHlNb2R1bGVEZWYqKW0sIHNwZWMpOworICAgIH0KKworICAgIC8qIEZhbGwgYmFjayB0byBzaW5nbGUtcGhhc2UgaW5pdCBtZWNoYW5pc20gKi8KKworICAgIGlmIChob29rX3ByZWZpeCA9PSBub25hc2NpaV9wcmVmaXgpIHsKKyAgICAgICAgLyogZG9uJ3QgYWxsb3cgbGVnYWN5IGluaXQgZm9yIG5vbi1BU0NJSSBtb2R1bGUgbmFtZXMgKi8KKyAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAiaW5pdGlhbGl6YXRpb24gb2YgKiBkaWQgbm90IHJldHVybiBQeU1vZHVsZURlZiIsCisgICAgICAgICAgICBuYW1lX2J1Zik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCkBAIC0xMDIsMTAgKzIwMCwxMCBAQAogICAgIGlmIChkZWYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiaW5pdGlhbGl6YXRpb24gb2YgJXMgZGlkIG5vdCByZXR1cm4gYW4gZXh0ZW5zaW9uICIKLSAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCBzaG9ydG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSIsIG5hbWVfYnVmKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcDsKKyAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwMDsKIAogICAgIC8qIFJlbWVtYmVyIHRoZSBmaWxlbmFtZSBhcyB0aGUgX19maWxlX18gYXR0cmlidXRlICovCiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiX19maWxlX18iLCBwYXRoKSA8IDApCkBAIC0xMTMsMTMgKzIxMSwxOSBAQAogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKHBhdGgpOwogCi0gICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtLCBuYW1lLCBwYXRoKSA8IDApCisgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtLCBuYW1lX3VuaWNvZGUsIHBhdGgpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeV9ERUNSRUYobmFtZWFzY2lpKTsKKworICAgIFB5X0RFQ1JFRihuYW1lX3VuaWNvZGUpOworICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CisKICAgICByZXR1cm4gbTsKIAogZXJyb3I6Ci0gICAgUHlfREVDUkVGKG5hbWVhc2NpaSk7CisgICAgUHlfREVDUkVGKG5hbWVfdW5pY29kZSk7CisgICAgUHlfWERFQ1JFRihuYW1lKTsKKyAgICBQeV9YREVDUkVGKHBhdGgpOwogICAgIFB5X1hERUNSRUYobSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0ZGwuaCBiL1B5dGhvbi9pbXBvcnRkbC5oCmluZGV4IDZhNTFhOTEuLjk4NDc2NTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRkbC5oCisrKyBiL1B5dGhvbi9pbXBvcnRkbC5oCkBAIC04LDggKzgsNyBAQAogCiBleHRlcm4gY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW107CiAKLWV4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICopOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlJbXBvcnRfTG9hZER5bmFtaWNNb2R1bGVXaXRoU3BlYyhQeU9iamVjdCAqc3BlYywgRklMRSAqKTsKIAogLyogTWF4IGxlbmd0aCBvZiBtb2R1bGUgc3VmZml4IHNlYXJjaGVkIGZvciAtLSBhY2NvbW1vZGF0ZXMgIm1vZHVsZS5zbGIiICovCiAjZGVmaW5lIE1BWFNVRkZJWFNJWkUgMTIKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWIuaCBiL1B5dGhvbi9pbXBvcnRsaWIuaAppbmRleCBlZjhiZjI3Li5hNGRhZjYyIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0bGliLmgKKysrIGIvUHl0aG9uL2ltcG9ydGxpYi5oCkBAIC0xLDIyNjIgKzEsMTQ1MiBAQAotLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCisvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw3LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwyMjgsNCwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDE2MywwLDkwLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICAyLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsMywwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDUsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDYsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTgsMCwxMDAsMTksMCwKLSAgICAxMzIsMCwwLDkwLDksMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLAotICAgIDEwLDAsMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDEsMCw5MCwxMSwKLSAgICAwLDEwMCwyNSwwLDEwMCwyNiwwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMjcsMCwKLSAgICAxMDAsMjgsMCwxMzIsMCwwLDkwLDEzLDAsMTAxLDE0LDAsMTAxLDEyLDAsMTA2LAotICAgIDE1LDAsMTMxLDEsMCw5MCwxNiwwLDcxLDEwMCwyOSwwLDEwMCwzMCwwLDEzMiwKLSAgICAwLDAsMTAwLDMwLDAsMTMxLDIsMCw5MCwxNywwLDEwNSwwLDAsOTAsMTgsCi0gICAgMCwxMDUsMCwwLDkwLDE5LDAsNzEsMTAwLDMxLDAsMTAwLDMyLDAsMTMyLDAsCi0gICAgMCwxMDAsMzIsMCwxMDEsMjAsMCwxMzEsMywwLDkwLDIxLDAsNzEsMTAwLDMzLAotICAgIDAsMTAwLDM0LDAsMTMyLDAsMCwxMDAsMzQsMCwxMzEsMiwwLDkwLDIyLDAsCi0gICAgNzEsMTAwLDM1LDAsMTAwLDM2LDAsMTMyLDAsMCwxMDAsMzYsMCwxMzEsMiwwLAotICAgIDkwLDIzLDAsNzEsMTAwLDM3LDAsMTAwLDM4LDAsMTMyLDAsMCwxMDAsMzgsMCwKLSAgICAxMzEsMiwwLDkwLDI0LDAsMTAwLDM5LDAsMTAwLDQwLDAsMTMyLDAsMCw5MCwKLSAgICAyNSwwLDEwMCw0MSwwLDEwMCw0MiwwLDEzMiwwLDAsOTAsMjYsMCwxMDAsNDMsCi0gICAgMCwxMDAsNDQsMCwxMzIsMCwwLDkwLDI3LDAsMTAwLDQ1LDAsMTA2LDI4LDAsCi0gICAgMTAwLDQ2LDAsMTAwLDQ3LDAsMTMxLDIsMCwxMDAsNDgsMCwyMyw5MCwyOSwwLAotICAgIDEwMSwzMCwwLDEwNiwzMSwwLDEwMSwyOSwwLDEwMCw0NywwLDEzMSwyLDAsOTAsCi0gICAgMzIsMCwxMDAsNDksMCw5MCwzMywwLDEwMCw1MCwwLDEwMywxLDAsOTAsMzQsCi0gICAgMCwxMDAsNTEsMCwxMDMsMSwwLDkwLDM1LDAsMTAwLDUyLDAsMTAzLDEsMCwKLSAgICA5MCwzNiwwLDEwMCw1MywwLDEwMCw1NCwwLDEwMCw1NSwwLDEzMiwxLDAsOTAsCi0gICAgMzcsMCwxMDAsNTYsMCwxMDAsNTcsMCwxMzIsMCwwLDkwLDM4LDAsMTAwLDU4LAotICAgIDAsMTAwLDU5LDAsMTMyLDAsMCw5MCwzOSwwLDEwMCw2MCwwLDEwMCw2MSwwLAotICAgIDEzMiwwLDAsOTAsNDAsMCwxMDAsNjIsMCwxMDAsNjMsMCwxMDAsNjQsMCwxMDAsCi0gICAgNjUsMCwxMzIsMCwxLDkwLDQxLDAsMTAwLDY2LDAsMTAwLDY3LDAsMTMyLDAsCi0gICAgMCw5MCw0MiwwLDEwMCw2OCwwLDEwMCw2OSwwLDEzMiwwLDAsOTAsNDMsMCwKLSAgICAxMDAsNzAsMCwxMDAsNzEsMCwxMzIsMCwwLDkwLDQ0LDAsMTAwLDcyLDAsMTAwLAotICAgIDczLDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw3NCwwLDEwMCw3NSwwLDEzMiwwLAotICAgIDAsOTAsNDYsMCwxMDAsNTMsMCwxMDAsNTMsMCwxMDAsNTMsMCwxMDAsNzYsMCwKLSAgICAxMDAsNzcsMCwxMzIsMywwLDkwLDQ3LDAsMTAwLDUzLDAsMTAwLDUzLDAsMTAwLAotICAgIDUzLDAsMTAwLDc4LDAsMTAwLDc5LDAsMTMyLDMsMCw5MCw0OCwwLDEwMCw4MCwKLSAgICAwLDEwMCw4MCwwLDEwMCw4MSwwLDEwMCw4MiwwLDEzMiwyLDAsOTAsNDksMCwKLSAgICAxMDAsODMsMCwxMDAsODQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLDg1LDAsMTAwLAotICAgIDg2LDAsMTMyLDAsMCw5MCw1MSwwLDcxLDEwMCw4NywwLDEwMCw4OCwwLDEzMiwKLSAgICAwLDAsMTAwLDg4LDAsMTMxLDIsMCw5MCw1MiwwLDcxLDEwMCw4OSwwLDEwMCwKLSAgICA5MCwwLDEzMiwwLDAsMTAwLDkwLDAsMTMxLDIsMCw5MCw1MywwLDEwMCw5MSwKLSAgICAwLDEwMCw1MywwLDEwMCw5MiwwLDEwMCw1MywwLDEwMCw5MywwLDEwMCw5NCwwLAotICAgIDEzMiwwLDIsOTAsNTQsMCwxMDEsNTUsMCwxMzEsMCwwLDkwLDU2LDAsMTAwLAotICAgIDUzLDAsMTAwLDk1LDAsMTAwLDUzLDAsMTAwLDk2LDAsMTAxLDU2LDAsMTAwLDk3LAotICAgIDAsMTAwLDk4LDAsMTMyLDEsMiw5MCw1NywwLDEwMCw1MywwLDEwMCw1MywwLAotICAgIDEwMCw5OSwwLDEwMCwxMDAsMCwxMzIsMiwwLDkwLDU4LDAsNzEsMTAwLDEwMSwwLAotICAgIDEwMCwxMDIsMCwxMzIsMCwwLDEwMCwxMDIsMCwxMzEsMiwwLDkwLDU5LDAsMTAwLAotICAgIDUzLDAsMTAwLDEwMywwLDEwMCwxMDQsMCwxMzIsMSwwLDkwLDYwLDAsNzEsMTAwLAotICAgIDEwNSwwLDEwMCwxMDYsMCwxMzIsMCwwLDEwMCwxMDYsMCwxMzEsMiwwLDkwLDYxLAotICAgIDAsNzEsMTAwLDEwNywwLDEwMCwxMDgsMCwxMzIsMCwwLDEwMCwxMDgsMCwxMzEsMiwKLSAgICAwLDkwLDYyLDAsNzEsMTAwLDEwOSwwLDEwMCwxMTAsMCwxMzIsMCwwLDEwMCwxMTAsCi0gICAgMCwxMzEsMiwwLDkwLDYzLDAsNzEsMTAwLDExMSwwLDEwMCwxMTIsMCwxMzIsMCwKLSAgICAwLDEwMCwxMTIsMCwxMzEsMiwwLDkwLDY0LDAsNzEsMTAwLDExMywwLDEwMCwxMTQsCi0gICAgMCwxMzIsMCwwLDEwMCwxMTQsMCwxMDEsNjQsMCwxMzEsMywwLDkwLDY1LDAsCi0gICAgNzEsMTAwLDExNSwwLDEwMCwxMTYsMCwxMzIsMCwwLDEwMCwxMTYsMCwxMzEsMiwwLAotICAgIDkwLDY2LDAsNzEsMTAwLDExNywwLDEwMCwxMTgsMCwxMzIsMCwwLDEwMCwxMTgsMCwKLSAgICAxMDEsNjYsMCwxMDEsNjUsMCwxMzEsNCwwLDkwLDY3LDAsNzEsMTAwLDExOSwwLAotICAgIDEwMCwxMjAsMCwxMzIsMCwwLDEwMCwxMjAsMCwxMDEsNjYsMCwxMDEsNjQsMCwxMzEsCi0gICAgNCwwLDkwLDY4LDAsMTAzLDAsMCw5MCw2OSwwLDcxLDEwMCwxMjEsMCwxMDAsCi0gICAgMTIyLDAsMTMyLDAsMCwxMDAsMTIyLDAsMTMxLDIsMCw5MCw3MCwwLDcxLDEwMCwKLSAgICAxMjMsMCwxMDAsMTI0LDAsMTMyLDAsMCwxMDAsMTI0LDAsMTMxLDIsMCw5MCw3MSwKLSAgICAwLDcxLDEwMCwxMjUsMCwxMDAsMTI2LDAsMTMyLDAsMCwxMDAsMTI2LDAsMTMxLDIsCi0gICAgMCw5MCw3MiwwLDcxLDEwMCwxMjcsMCwxMDAsMTI4LDAsMTMyLDAsMCwxMDAsMTI4LAotICAgIDAsMTMxLDIsMCw5MCw3MywwLDcxLDEwMCwxMjksMCwxMDAsMTMwLDAsMTMyLDAsCi0gICAgMCwxMDAsMTMwLDAsMTMxLDIsMCw5MCw3NCwwLDcxLDEwMCwxMzEsMCwxMDAsMTMyLAotICAgIDAsMTMyLDAsMCwxMDAsMTMyLDAsMTMxLDIsMCw5MCw3NSwwLDEwMCwxMzMsMCwKLSAgICAxMDAsMTM0LDAsMTMyLDAsMCw5MCw3NiwwLDEwMCwxMzUsMCwxMDAsMTM2LDAsMTMyLAotICAgIDAsMCw5MCw3NywwLDEwMCw1MywwLDEwMCwxMzcsMCwxMDAsMTM4LDAsMTMyLDEsCi0gICAgMCw5MCw3OCwwLDEwMCwxMzksMCwxMDAsMTQwLDAsMTMyLDAsMCw5MCw3OSwwLAotICAgIDEwMCwxNDEsMCw5MCw4MCwwLDEwMSw4MCwwLDEwMCwxNDIsMCwyMyw5MCw4MSwwLAotICAgIDEwMCwxNDMsMCwxMDAsMTQ0LDAsMTMyLDAsMCw5MCw4MiwwLDEwMCwxNDUsMCwxMDAsCi0gICAgMTQ2LDAsMTMyLDAsMCw5MCw4MywwLDEwMCw1MywwLDEwMCw4MCwwLDEwMCwxNDcsCi0gICAgMCwxMDAsMTQ4LDAsMTMyLDIsMCw5MCw4NCwwLDEwMCwxNDksMCwxMDAsMTUwLDAsCi0gICAgMTMyLDAsMCw5MCw4NSwwLDEwMCwxNTEsMCwxMDAsMTUyLDAsMTMyLDAsMCw5MCwKLSAgICA4NiwwLDEwMCwxNTMsMCwxMDAsMTU0LDAsMTMyLDAsMCw5MCw4NywwLDEwMCw1MywKLSAgICAwLDEwMCw1MywwLDEwMiwwLDAsMTAwLDgwLDAsMTAwLDE1NSwwLDEwMCwxNTYsMCwKLSAgICAxMzIsNCwwLDkwLDg4LDAsMTAwLDE1NywwLDEwMCwxNTgsMCwxMzIsMCwwLDkwLAotICAgIDg5LDAsMTAwLDE1OSwwLDEwMCwxNjAsMCwxMzIsMCwwLDkwLDkwLDAsMTAwLDE2MSwKLSAgICAwLDEwMCwxNjIsMCwxMzIsMCwwLDkwLDkxLDAsMTAwLDUzLDAsODMsNDEsMTY0LAotICAgIDk3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwKLSAgICAxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsCi0gICAgMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLAotICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwKLSAgICAxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKLSAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksCi0gICAgMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LAotICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsCi0gICAgMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsCi0gICAgMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwKLSAgICAxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwKLSAgICAxMjEsMTAzLDExOSwxMDUsMTEwLDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLAotICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNDksMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsCi0gICAgMTE2LDMsMCwxMzEsMSwwLDExNCwzMywwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCi0gICAgMCwwLDEyNSwwLDAsMTEwLDEyLDAsMTAwLDMsMCwxMDAsMiwwLDEzMiwwLAotICAgIDAsMTI1LDAsMCwxMjQsMCwwLDgzLDQxLDQsNzgsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw4MywwLDAsMCwKLSAgICAxMTUsMTMsMCwwLDAsMTAwLDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsCi0gICAgMCw4Myw0MSwyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwKLSAgICA5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDExNSwxMiwwLDAsMCwKLSAgICA4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSw0MSwyLDIxOCwzLAotICAgIDk1LDExMSwxMTUsOTAsNywxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsMTY5LDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKLSAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwxMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsCi0gICAgOTksOTcsMTE1LDEwMSwzMCwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAotICAgIDM3LDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywKLSAgICAxMjAsOTUsOTksOTcsMTE1LDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLAotICAgIDEwMCwxLDAsODMsNDEsMiwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwKLSAgICAxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwKLSAgICAxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0Niw3MCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwzNCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDIsNDEsNCwyMTgsMywxMTUsMTIxLDExNSwyMTgsOCwKLSAgICAxMTIsMTA4LDk3LDExNiwxMDIsMTExLDExNCwxMDksMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDIxOCwyNyw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSwKLSAgICA3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3NywKLSAgICA4Myw0MSwxLDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDIxOCwxNiw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsCi0gICAgMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwyOCwwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDEsMTgsMSwxNSw0LDEyLDMsMTE0LDExLDAsMCwwLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDEwMCwxLDAsNjQsMTA2LDEsMCwxMDAsMiwwLDEwMCwzLDAsMTMxLAotICAgIDIsMCw4Myw0MSw0LDEyMiw0Miw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKLSAgICAzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwKLSAgICAxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsCi0gICAgNDYsMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCwyMzMsNCwwLDAsCi0gICAgMCwyMTgsNiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0MSwyLDIxOCwzLDEwNSwxMTAsMTE2LAotICAgIDIxOCw4LDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDEsMjE4LDEsMTIwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw3LAotICAgIDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDAsMCwwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwyLDExNCwxNywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsCi0gICAgMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsCi0gICAgODMsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsNTIsMzIsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLAotICAgIDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNiwxMDEsCi0gICAgMTAzLDEwMSwxMTQsNDYsMTE0LDEzLDAsMCwwLDQxLDIsMTE0LDE0LDAsMCwwLAotICAgIDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDEsOTAsOSwKLSAgICAxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDcsOTUsMTE0LDk1LDEwOCwxMTEsMTEwLAotICAgIDEwMyw0NSwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwKLSAgICAwLDAsNzEsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMCwwLDY4LDEzMSwxLAotICAgIDAsMTMxLDEsMCw4Myw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgNDYsMTA2LDExMSwxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDQsMCwwLDAsODMsMCwwLDAsMTE1LDM3LDAsCi0gICAgMCwwLDEwMywwLDAsMTI0LDAsMCw5MywyNywwLDEyNSwxLDAsMTI0LDEsCi0gICAgMCwxMTQsNiwwLDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwwLDEzMSwxLDAsCi0gICAgMTQ1LDIsMCwxMTMsNiwwLDgzLDExNCw0LDAsMCwwLDQxLDIsMjE4LDYsCi0gICAgMTE0LDExNSwxMTYsMTE0LDEwNSwxMTIsMjE4LDE1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLAotICAgIDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNDEsMiwyMTgsMiw0Niw0OCwyMTgsNCwxMTIsCi0gICAgOTcsMTE0LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyNTAsMTAsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLDUyLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDksMSwxMjIsMzAsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA2LDExMSwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwKLSAgICAxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDEsMiwyMTgsOCwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMTUsMTAxLDExMiwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMSwyMTgsMTAsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDYsMTExLDEwNSwxMTAsNTAsMCwwLDAsMTE1LDQsMCwwLDAsMCwyLDE1LAotICAgIDEsMTE0LDI4LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LAotICAgIDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDEzNCwwLDAsMCwKLSAgICAxMTYsMCwwLDExNiwxLDAsMTMxLDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LAotICAgIDUyLDAsMTI0LDAsMCwxMDYsMiwwLDExNiwzLDAsMTMxLDEsMCw5MiwzLAotICAgIDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwxMjQsMywwLAotICAgIDEwMiwyLDAsODMsMTIwLDY5LDAsMTE2LDQsMCwxMjQsMCwwLDEzMSwxLDAsCi0gICAgNjgsOTMsNTUsMCwxMjUsNCwwLDEyNCw0LDAsMTE2LDEsMCwxMDcsNiwwLAotICAgIDExNCw2NSwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsNCwwLDEwMCwyLDAsMTAwLAotICAgIDEsMCwxMzEsMSwxLDkyLDIsMCwxMjUsMSwwLDEyNSwzLDAsMTI0LDEsCi0gICAgMCwxMjQsMywwLDEwMiwyLDAsODMsMTEzLDY1LDAsODcsMTAwLDMsMCwxMjQsCi0gICAgMCwwLDEwMiwyLDAsODMsNDEsNCwxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksCi0gICAgMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsCi0gICAgMTA0LDQ2LDExNSwxMTIsMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsMCwwLDAsOTAsCi0gICAgOCwxMDksOTcsMTIwLDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDAsNDEsNiwyMTgsMywxMDgsCi0gICAgMTAxLDExMCwxMTQsMjEsMCwwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LAotICAgIDEwNSwxMTEsMTEwLDExNCwyNSwwLDAsMCwyMTgsOCwxMTQsMTAxLDExOCwxMDEsMTE0LDExNSwKLSAgICAxMDEsMTAwLDIxOCw2LDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDQxLDUsMjE4LDQsMTEyLDk3LAotICAgIDExNiwxMDQsOTAsNSwxMDIsMTE0LDExMSwxMTAsMTE2LDIxOCwxLDk1LDIxOCw0LDExNiw5NywKLSAgICAxMDUsMTA4LDExNCwxNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwKLSAgICAxMDgsMTA1LDExNiw1NiwwLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDE4LDEsCi0gICAgMjQsMSwxMCwxLDE5LDEsMTIsMSwyNywxLDE0LDEsMTE0LDM4LDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsODMsNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgNzcsOTcsMTAwLDEwMSwzMiw5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwKLSAgICAxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwKLSAgICAzMiwxMDUsMTE2LDMyLDEwMSw5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LAotICAgIDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwKLSAgICAxMTYsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDQxLDIsMTE0LDMsMCwwLAotICAgIDAsOTAsNCwxMTUsMTE2LDk3LDExNiw0MSwxLDExNCwzNSwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsNjgsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw3LDExNCwzOSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsCi0gICAgMCwwLDAsMTIxLDE2LDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAotICAgIDIsMCw4NywxMTAsMjIsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDQwLDAsCi0gICAgMSwxLDEsMTAwLDEsMCw4Myw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTA2LAotICAgIDIsMCwxMDAsMiwwLDY0LDEyNCwxLDAsMTA3LDIsMCw4Myw0MSwzLDEyMiwKLSAgICA0OSw4NCwxMDEsMTE1LDExNiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLAotICAgIDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTYsMTIxLDExMiwKLSAgICAxMDEsNDYsNzAsMTA1LDAsMjQwLDAsMCw0MSwzLDExNCwzOSwwLDAsMCwyMTgsCi0gICAgNyw3OSw4Myw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDcsMTE1LDExNiw5NSwxMDksMTExLDEwMCwKLSAgICAxMDEsNDEsMywxMTQsMzUsMCwwLDAsMjE4LDQsMTA5LDExMSwxMDAsMTAxLDkwLDksCi0gICAgMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDIsMTExLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxOCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsNzgsMCwwLDAsCi0gICAgMTE1LDEwLDAsMCwwLDAsMiwzLDEsMTYsMSwxMywxLDksMSwxMTQsCi0gICAgNDMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiwzMSw4MiwKLSAgICAxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsCi0gICAgMTI4LDAsMCw0MSwxLDExNCw0MywwLDAsMCw0MSwxLDExNCwzNSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsODcsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCw0NCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsMCwwLDExNSwyMSwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwwLDAsMTEwLDAsMCwxMTYsMiwwLAotICAgIDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDMwLDgyLDEwMSwKLSAgICAxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSwKLSAgICA0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LDEwNSwwLDY0LDAsCi0gICAgMCw0MSwzLDExNCwzLDAsMCwwLDIxOCw2LDEwMywxMDEsMTE2LDk5LDExOSwxMDAsCi0gICAgMTE0LDQzLDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDkyLDAsMCwwLDExNSw2LDAsMCwKLSAgICAwLDAsMiw2LDEsMTUsMSwxMTQsNDYsMCwwLDAsMTA1LDE4MiwxLDAsCi0gICAgMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTkyLDAsMCwwLDEwMCwxLDAsMTA2LDAsCi0gICAgMCwxMjQsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsCi0gICAgMTI1LDMsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwxMTYsMiwwLDEwNiwKLSAgICA0LDAsMTE2LDIsMCwxMDYsNSwwLDY2LDExNiwyLDAsMTA2LDYsMCw2NiwKLSAgICAxMjQsMiwwLDEwMCwyLDAsNjQsMTMxLDMsMCwxMjUsNCwwLDEyMSw2MCwwLAotICAgIDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCwzLDAsMTMxLDIsMCwxNDMsCi0gICAgMjAsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDksMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMSw4NywxMDAsNCwwLDgxLDg4LDExNiwyLDAsMTA2LDEwLDAsMTI0LDMsCi0gICAgMCwxMjQsMCwwLDEzMSwyLDAsMSw4NywxMTAsNTksMCw0LDExNiwxMSwwLAotICAgIDEwNywxMCwwLDExNCwxODcsMCwxLDEsMSwxMjEsMTcsMCwxMTYsMiwwLDEwNiwKLSAgICAxMiwwLDEyNCwzLDAsMTMxLDEsMCwxLDg3LDExMCwxOCwwLDQsMTE2LDExLAotICAgIDAsMTA3LDEwLDAsMTE0LDE3OSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTMwLAotICAgIDAsMCw4OSwxMTAsMSwwLDg4LDEwMCw0LDAsODMsNDEsNSwxMjIsMTYyLDY2LAotICAgIDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMzIsMTAwLDk3LDExNiwKLSAgICA5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNiwxMTEsMTA5LAotICAgIDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiw2NiwxMDEsMzIsMTEyLAotICAgIDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LAotICAgIDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LDExNCwxMTQsMTAxLDExMCwKLSAgICAxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLAotICAgIDQ2LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwwLDkwLDIsMTE5LAotICAgIDk4LDc4LDQxLDEzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMjE4LDIsMTA1LDEwMCwKLSAgICAxMTQsMywwLDAsMCw5MCw0LDExMSwxMTIsMTAxLDExMCw5MCw2LDc5LDk1LDY5LAotICAgIDg4LDY3LDc2LDkwLDcsNzksOTUsNjcsODIsNjksNjUsODQsOTAsOCw3OSw5NSwKLSAgICA4Nyw4Miw3OSw3OCw3Niw4OSwyMTgsMyw5NSwxMDUsMTExLDIxOCw2LDcwLDEwNSwxMDgsCi0gICAgMTAxLDczLDc5LDIxOCw1LDExOSwxMTQsMTA1LDExNiwxMDEsMjE4LDcsMTE0LDEwMSwxMTIsMTA4LAotICAgIDk3LDk5LDEwMSwxMTQsNDAsMCwwLDAsOTAsNiwxMTcsMTEwLDEwOCwxMDUsMTEwLDEwNywKLSAgICA0MSw2LDExNCwzNSwwLDAsMCwyMTgsNCwxMDAsOTcsMTE2LDk3LDExNCw0MiwwLAotICAgIDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLDkwLDIsMTAyLDEwMCwKLSAgICAyMTgsNCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDEzLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTcsMTE2LAotICAgIDExMSwxMDksMTA1LDk5LDk5LDAsMCwwLDExNSwyNiwwLDAsMCwwLDUsMjQsCi0gICAgMSw5LDEsMzMsMSwzLDMsMjEsMSwxOSwxLDIwLDEsMTMsMSwzLAotICAgIDEsMTcsMSwxMywxLDUsMSwxMTQsNTUsMCwwLDAsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsOTUsMCwwLDAsMTIwLDY5LDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ5LDAsMTI1LDIsMCwxMTYsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLDExNiwxLAotICAgIDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDExMywxOSwwLDg3LDEyNCwwLAotICAgIDAsMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLAotICAgIDEsMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLAotICAgIDExNSwxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwKLSAgICAxMTcsMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwKLSAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLAotICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LAotICAgIDEwMCwxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsCi0gICAgMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LAotICAgIDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywKLSAgICAxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwKLSAgICAxMDAsMTE0LDUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCw1LDk1LDExOSwxMTQsOTcsMTEyLDEyMSwwLDAsMCwKLSAgICAxMTUsOCwwLDAsMCwwLDIsMjUsMSwxNSwxLDMyLDEsMTE0LDY1LDAsCi0gICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTE2LAotICAgIDEsMCwxMzEsMSwwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MSwxLDc4LDQxLAotICAgIDIsMjE4LDQsMTE2LDEyMSwxMTIsMTAxLDExNCw3LDAsMCwwLDQxLDEsMjE4LDQsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDExLDk1LDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDEyOSwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE0LDY4LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDU4LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsCi0gICAgMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLAotICAgIDEwMCw4LDAsODMsNDEsOSwyMTgsMTMsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsCi0gICAgMTAxLDEwOCwxMTEsOTcsMTAwLDEyMiw2Myw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDk5LDEwOCwxMDEsOTcsCi0gICAgMTEwLDQ1LDExNywxMTIsMzIsMTExLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDAsNDEsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsCi0gICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsCi0gICAgNDEsMSwyMTgsNSw5NSwxMTAsOTcsMTA5LDEwMSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LAotICAgIDEwMiwxMTQsNjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE0MSwKLSAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCwKLSAgICA5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw0LDExNCw3MCwwLDAsMCwxMTQsCi0gICAgNywwLDAsMCwyMTgsNywxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMjE4LDEwLDk1LAotICAgIDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCw0MSwxLDExNCw3MSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCi0gICAgOSw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDE0NCwwLDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDEsMTIyLDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwKLSAgICAxMDgsMTExLDk3LDEwMCw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDcxLAotICAgIDAsMCwwLDExNSw4MCwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsCi0gICAgMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3NiwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMiwxMTQsNzYsMCwxMjEsMTcsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDYxLDg3LDExMyw3NiwwLDQsCi0gICAgMTE2LDUsMCwxMDcsMTAsMCwxMTQsNzIsMCwxLDEsMSw4OSwxMTMsNzYsMCwKLSAgICA4OCwxMTAsMCwwLDEwMCwwLDAsODMsNDEsMyw3OCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwKLSAgICAxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsCi0gICAgMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwyMTgsCi0gICAgMyw5NywxMTQsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNDgsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiw0MSw5NSw3Nyw5NywxMTAsOTcsCi0gICAgMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LAotICAgIDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCi0gICAgMTIwLDExMiwxMTQsNjIsNDEsNiwyMTgsMyw5NywxMTAsMTIxLDExNCw3NCwwLDAsMCwKLSAgICAxMTQsNywwLDAsMCwxMTQsNzMsMCwwLDAsMTE0LDcwLDAsMCwwLDIxOCwKLSAgICA4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwxNDcsCi0gICAgMCwwLDAsMTE1LDEwLDAsMCwwLDAsMSwzNSwxLDMsMSwxNywxLAotICAgIDEzLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LAotICAgIDEwMCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNywxMTQsNTcsMCwKLSAgICAwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLAotICAgIDAsMTE0LDcyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsODEsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDY5LDAsMCwwLDEzNywwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwxMiwyLDYsMiwxMiwzLDEyLDMsMTE0LDY5LDAsMCwwLDk5LAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCi0gICAgNjQsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwKLSAgICAwLDAsOTAsMiwwLDEwMCwxLDAsODMsNDEsMiwyMTgsMTQsOTUsNjgsMTAxLAotICAgIDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsNzgsNDEsMywxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsODIsMCwwLDAsMTYyLDAsMCwwLDExNSwyLDAsMCwwLDEyLAotICAgIDEsMTE0LDgyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDgyLDAsMCwwLAotICAgIDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsCi0gICAgMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwKLSAgICAwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLAotICAgIDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLAotICAgIDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTIsCi0gICAgMCw4Myw0MSwxMywyMTgsMTEsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksCi0gICAgMTA3LDEyMiwxNjksNjUsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDEwNywzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LAotICAgIDExMSwxMTAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTcsOTgsMTA4LDEwMSwKLSAgICAzMiwxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsMTE2LAotICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw0OSwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsCi0gICAgMTExLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NSwzMiwxMTYsCi0gICAgMTA0LDEwMSwxMTAsMzIsNjYsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDExNCwxMDEsOTcsCi0gICAgMTAwLDMyLDUwLDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsCi0gICAgMzIsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY2LDMyLDExNiwKLSAgICAxMDQsMTAxLDExMCwzMiw2NSw0MSw0NiwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw3MCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjQsCi0gICAgMCwwLDk1LDIsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjQsMCwKLSAgICAwLDk1LDMsMCwxMjQsMSwwLDEyNCwwLDAsOTUsNCwwLDEwMCwwLDAsCi0gICAgMTI0LDAsMCw5NSw1LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDYsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsOTUsNywwLDEwMCwwLDAsODMsNDEsMiw3OCwyMzMsCi0gICAgMCwwLDAsMCw0MSw4LDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTAsCi0gICAgMTMsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyMTgsNCwKLSAgICAxMDgsMTExLDk5LDEwNywyMTgsNiwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCw2NywwLDAsCi0gICAgMCwyMTgsNSwxMTEsMTE5LDExMCwxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwyMTgsCi0gICAgNywxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSw0MSwyLDExNCw3MSwwLDAsMCwxMTQsCi0gICAgNjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDcyLDAsMCwwLDE3MiwwLDAsMCwxMTUsMTIsMCwwLAotICAgIDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwxLDksMSwxMjIsMjAsOTUsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKLSAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMjUsCi0gICAgMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMiwwLDEzMSwxLAotICAgIDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNTUsMCwKLSAgICAxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwxMjUsMiwwLDEyNCwyLDAsCi0gICAgMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwyLDAsODMsMTEzLDI0LDAsCi0gICAgODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LDQxLDUsMTE0LDg1LDAsMCwKLSAgICAwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLDExMCwxMTYsMTE0LDg4LDAsMCwKLSAgICAwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwKLSAgICAzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDcxLDAsMCwwLDIxOCwyLDEwOSwxMDEsMjE4LAotICAgIDMsMTE2LDEwNSwxMDAsMTE0LDg2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsCi0gICAgOTcsMTAwLDEwOCwxMTEsOTksMTA3LDE4MCwwLDAsMCwxMTUsMTgsMCwwLDAsMCwKLSAgICAyLDEyLDEsOSwxLDMsMSwxNSwxLDEyLDEsNCwxLDksMSwxMiwKLSAgICAxLDEyMiwyNCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTA0LAotICAgIDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwxNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMjE1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLAotICAgIDAsMTI0LDAsMCwxMTYsMiwwLDEyNCwxLDAsNjAsMTIyLDE3OCwwLDEyMCwxNzEsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTQzLDEzMCwwLDEsMTI0LDAsMCwxMDYsNCwKLSAgICAwLDEwMCwxLDAsMTA3LDIsMCwxMTUsNjgsMCwxMjQsMCwwLDEwNiw1LDAsCi0gICAgMTI0LDEsMCwxMDcsMiwwLDExNCw5NiwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICA1LDAsMTI0LDAsMCw0LDEwNiw0LDAsMTAwLDIsMCw1NSwyLDk1LDQsCi0gICAgMCwxMDAsMywwLDgzLDEyNCwwLDAsMTA2LDYsMCwxMzEsMCwwLDExNCwxMjcsCi0gICAgMCwxMTYsNywwLDEwMCw0LDAsMTI0LDAsMCwyMiwxMzEsMSwwLDEzMCwxLAotICAgIDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwxMDAsNSwwLAotICAgIDEzMSwxLDAsMTE0LDE2MywwLDEyNCwwLDAsNCwxMDYsMTAsMCwxMDAsMiwwLAotICAgIDU1LDIsOTUsMTAsMCwxMTAsMCwwLDg3LDEwMCw2LDAsODEsODgsMTI0LDAsCi0gICAgMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LDgsCi0gICAgMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsMCwKLSAgICAxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwxODUsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywKLSAgICA0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LAotICAgIDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsMTIxLAotICAgIDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLDg0LAotICAgIDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCw0NiwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsODQsMCwwLDAsMTE0LDI5LAotICAgIDAsMCwwLDg0LDEyMiwyMywxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsCi0gICAgMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCw0MSwKLSAgICAxMiwxMTQsODUsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5MiwwLDAsMCwKLSAgICAxMTQsODYsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsCi0gICAgOTYsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw4NywwLDAsMCwyMTgsNywKLSAgICA5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNCw5MCwwLDAsMCwyMTgsNywxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLDExNCw3MSwwLDAsMCwxMTQsOTUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDk3LDAsMCwwLDE5MiwwLDAsMCwxMTUsMzIsMCwwLDAsMCw2LAotICAgIDEyLDEsMTAsMSwzLDEsMywxLDEwLDEsMzAsMSw5LDEsMTUsMSwKLSAgICA0LDEsMTIsMSwxOSwxLDE4LDEsMjQsMiwxMywxLDIxLDIsMTIyLDE5LAotICAgIDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LAotICAgIDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxNjUsMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTQzLAotICAgIDEzOCwwLDEsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsMTA3LDMsMCwxMTQsCi0gICAgNTIsMCwxMTYsNCwwLDEwMCwxLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDQsMCwxMTUsNzMsMCwKLSAgICAxMTYsNiwwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiw1LDAsMTAwLDMsMCwKLSAgICA1NiwyLDk1LDUsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsMiwKLSAgICAwLDExNCwxNTUsMCwxMDAsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwwLDAsCi0gICAgMTA2LDcsMCwxMTQsMTU1LDAsMTI0LDAsMCw0LDEwNiw3LDAsMTAwLDMsMCwKLSAgICA1NiwyLDk1LDcsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwKLSAgICAwLDEsMTEzLDE1NSwwLDExMCwwLDAsODcsMTAwLDAsMCw4MSw4OCwxMDAsMCwKLSAgICAwLDgzLDQxLDQsNzgsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCw4NCwwLDAsMCwxMTQsMjksMCwwLDAsCi0gICAgNDEsMTAsMTE0LDg1LDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsODYsMCwwLAotICAgIDAsMTE0LDg4LDAsMCwwLDIxOCwxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDg5LDAsMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOTAsMCwwLDAsMTE0LDg3LAotICAgIDAsMCwwLDExNCw5OCwwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsCi0gICAgOTUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMTE0LDk4LDAsMCwwLDIxNywwLDAsMCwxMTUsMjIsMCwwLAotICAgIDAsMCwxLDEyLDEsMTAsMSwxNSwxLDE1LDEsMjEsMSwxNSwxLDE1LAotICAgIDEsOSwxLDksMSwxNSwxLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwwLDgzLDQxLAotICAgIDIsNzgsMTIyLDIzLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwKLSAgICAxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywxMTYsMzIsMTIzLDEyNSw0MSwzLDExNCw0NywwLAotICAgIDAsMCwxMTQsNjcsMCwwLDAsMTE0LDQ4LDAsMCwwLDQxLDEsMTE0LDcxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCw4LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzAsMCwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwxLDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksCi0gICAgMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk3LAotICAgIDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTAxLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCw4MywwLDAsMCwxNjYsMCwwLDAsMTE1LDEyLDAsMCwwLDEyLAotICAgIDQsNiwyLDEyLDgsMTIsMTIsMTIsMjUsMTIsMTMsMTE0LDgzLDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsCi0gICAgMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLAotICAgIDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4MywKLSAgICA0MSwxMSwyMTgsMTYsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNzYsMTExLDk5LDEwNywxMjIsODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsOTUsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsCi0gICAgOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCi0gICAgMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLDExNywxMTYsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwKLSAgICAxLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwKLSAgICA4NCwwLDAsMCw0MSwyLDExNCw2NywwLDAsMCwxMTQsODksMCwwLDAsCi0gICAgNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MiwwLDAsMCwKLSAgICAyMzgsMCwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjUsOTUsCi0gICAgNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwKLSAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwKLSAgICAwLDAsMTI0LDAsMCw0LDEwNiwwLDAsMTAwLDEsMCw1NSwyLDk1LDAsCi0gICAgMCwxMDAsMiwwLDgzLDQxLDMsNzgsMTE0LDI5LDAsMCwwLDg0LDQxLDEsCi0gICAgMTE0LDg5LDAsMCwwLDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw5NywwLDAsMCwKLSAgICAyNDIsMCwwLDAsMTE1LDQsMCwwLDAsMCwxLDE1LDEsMTIyLDI0LDk1LAotICAgIDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsCi0gICAgOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0OSwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwzMCwwLAotICAgIDExNiwxLDAsMTAwLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsCi0gICAgMCwwLDQsMTA2LDAsMCwxMDAsMywwLDU2LDIsOTUsMCwwLDEwMCwwLAotICAgIDAsODMsNDEsNCw3OCwxMTQsODQsMCwwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsCi0gICAgMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LAotICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwyOSwwLDAsMCwKLSAgICA0MSwyLDExNCw4OSwwLDAsMCwxMTQsOTksMCwwLDAsNDEsMSwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDk4LDAsMCwwLDI0NiwwLDAsMCwxMTUsNiwwLDAsMCwKLSAgICAwLDEsMTUsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwyLDc4LDEyMiwyOCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDYsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDE2OSwyLDAsMCwxMDAsMCwwLDkwLDAsMCwKKyAgICAxMDAsMSwwLDk3LDEsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKKyAgICAyLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsMywwLDcxLDEwMCwKKyAgICA2LDAsMTAwLDcsMCwxMzIsMCwwLDEwMCw3LDAsMTMxLDIsMCw5MCw0LAorICAgIDAsMTA1LDAsMCw5MCw1LDAsMTA1LDAsMCw5MCw2LDAsNzEsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsMTAwLDksMCwxMDEsNywwLDEzMSwzLDAsCisgICAgOTAsOCwwLDcxLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTAwLDExLDAsCisgICAgMTMxLDIsMCw5MCw5LDAsNzEsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwKKyAgICAxMDAsMTMsMCwxMzEsMiwwLDkwLDEwLDAsNzEsMTAwLDE0LDAsMTAwLDE1LDAsCisgICAgMTMyLDAsMCwxMDAsMTUsMCwxMzEsMiwwLDkwLDExLDAsMTAwLDE2LDAsMTAwLAorICAgIDE3LDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLAorICAgIDAsOTAsMTMsMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLDE0LDAsCisgICAgMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTAwLDI1LDAsMTMyLDAsMSw5MCwKKyAgICAxNSwwLDEwMCwyNiwwLDEwMCwyNywwLDEzMiwwLDAsOTAsMTYsMCwxMDAsMjgsCisgICAgMCwxMDAsMjksMCwxMzIsMCwwLDkwLDE3LDAsMTAwLDMwLDAsMTAwLDMxLDAsCisgICAgMTMyLDAsMCw5MCwxOCwwLDEwMCwzMiwwLDEwMCwzMywwLDEzMiwwLDAsOTAsCisgICAgMTksMCw3MSwxMDAsMzQsMCwxMDAsMzUsMCwxMzIsMCwwLDEwMCwzNSwwLDEzMSwKKyAgICAyLDAsOTAsMjAsMCw3MSwxMDAsMzYsMCwxMDAsMzcsMCwxMzIsMCwwLDEwMCwKKyAgICAzNywwLDEzMSwyLDAsOTAsMjEsMCwxMDAsMzgsMCwxMDAsMSwwLDEwMCwzOSwKKyAgICAwLDEwMCwxLDAsMTAwLDQwLDAsMTAwLDQxLDAsMTMyLDAsMiw5MCwyMiwwLAorICAgIDEwMSwyMywwLDEzMSwwLDAsOTAsMjQsMCwxMDAsMSwwLDEwMCwxLDAsMTAwLAorICAgIDQyLDAsMTAwLDQzLDAsMTMyLDIsMCw5MCwyNSwwLDEwMCw0NCwwLDEwMCw0NSwKKyAgICAwLDEwMCw0NiwwLDEwMCw0NywwLDEzMiwwLDEsOTAsMjYsMCwxMDAsNDgsMCwKKyAgICAxMDAsNDksMCwxMzIsMCwwLDkwLDI3LDAsMTAwLDUwLDAsMTAwLDUxLDAsMTMyLAorICAgIDAsMCw5MCwyOCwwLDEwMCw1MiwwLDEwMCw1MywwLDEzMiwwLDAsOTAsMjksCisgICAgMCwxMDAsNTQsMCwxMDAsNTUsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDU2LDAsCisgICAgMTAwLDU3LDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw1OCwwLDEwMCw1OSwwLDEzMiwKKyAgICAwLDAsOTAsMzIsMCw3MSwxMDAsNjAsMCwxMDAsNjEsMCwxMzIsMCwwLDEwMCwKKyAgICA2MSwwLDEzMSwyLDAsOTAsMzMsMCw3MSwxMDAsNjIsMCwxMDAsNjMsMCwxMzIsCisgICAgMCwwLDEwMCw2MywwLDEzMSwyLDAsOTAsMzQsMCw3MSwxMDAsNjQsMCwxMDAsCisgICAgNjUsMCwxMzIsMCwwLDEwMCw2NSwwLDEzMSwyLDAsOTAsMzUsMCwxMDAsNjYsCisgICAgMCwxMDAsNjcsMCwxMzIsMCwwLDkwLDM2LDAsMTAwLDY4LDAsMTAwLDY5LDAsCisgICAgMTMyLDAsMCw5MCwzNywwLDEwMCwxLDAsMTAwLDcwLDAsMTAwLDcxLDAsMTMyLAorICAgIDEsMCw5MCwzOCwwLDEwMCw3MiwwLDEwMCw3MywwLDEzMiwwLDAsOTAsMzksCisgICAgMCwxMDAsNzQsMCw5MCw0MCwwLDEwMSw0MCwwLDEwMCw3NSwwLDIzLDkwLDQxLAorICAgIDAsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCw5MCw0MiwwLDEwMCw3OCwwLAorICAgIDEwMCw3OSwwLDEzMiwwLDAsOTAsNDMsMCwxMDAsMSwwLDEwMCw4MCwwLDEwMCwKKyAgICA4MSwwLDEwMCw4MiwwLDEzMiwyLDAsOTAsNDQsMCwxMDAsODMsMCwxMDAsODQsCisgICAgMCwxMzIsMCwwLDkwLDQ1LDAsMTAwLDg1LDAsMTAwLDg2LDAsMTMyLDAsMCwKKyAgICA5MCw0NiwwLDEwMCwxLDAsMTAwLDEsMCwxMDIsMCwwLDEwMCw4MCwwLDEwMCwKKyAgICA4NywwLDEwMCw4OCwwLDEzMiw0LDAsOTAsNDcsMCwxMDAsODksMCwxMDAsOTAsCisgICAgMCwxMzIsMCwwLDkwLDQ4LDAsMTAwLDkxLDAsMTAwLDkyLDAsMTMyLDAsMCwKKyAgICA5MCw0OSwwLDEwMCw5MywwLDEwMCw5NCwwLDEzMiwwLDAsOTAsNTAsMCwxMDAsCisgICAgMSwwLDgzLDQxLDk1LDk3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSw5NywKKyAgICAxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LAorICAgIDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwxMDQsCisgICAgOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsCisgICAgMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSw5NywKKyAgICAxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsMTAxLAorICAgIDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNjUsCisgICAgMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKKyAgICAxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwxMCwKKyAgICAxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwKKyAgICAzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LDk5LAorICAgIDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCw3OCw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw3LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw5MiwwLDAsMCwxMjAsNjYsMCwxMDAsMSwwLDEwMCwyLAorICAgIDAsMTAwLDMsMCwxMDAsNCwwLDEwMyw0LDAsNjgsOTMsNDYsMCwxMjUsMiwKKyAgICAwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTE0LDE5LDAsCisgICAgMTE2LDEsMCwxMjQsMCwwLDEyNCwyLDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTMxLDIsMCwxMzEsMywwLDEsMTEzLDE5LDAsODcsMTI0LDAsMCwKKyAgICAxMDYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMSwKKyAgICAxMDAsNSwwLDgzLDQxLDYsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsMTE1LAorICAgIDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLDExNywKKyAgICAxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsOTUsCisgICAgOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsMTAwLAorICAgIDExMSw5OSw5NSw5NSw3OCw0MSw1LDIxOCw3LDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsCisgICAgMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LAorICAgIDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwKKyAgICAxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwKKyAgICAyMTgsNywxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDE2OSwwLDExNCwxMCwwLDAsMCwKKyAgICAyNTAsMjksNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMjE4LAorICAgIDUsOTUsMTE5LDExNCw5NywxMTIsMjcsMCwwLDAsMTE1LDgsMCwwLDAsMCwKKyAgICAyLDI1LDEsMTUsMSwyOSwxLDExNCwxMiwwLDAsMCw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsMCwxMjQsCisgICAgMCwwLDEzMSwxLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDExNiwxMjEsMTEyLAorICAgIDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksMTAxLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMSw5NSwKKyAgICAxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDU4LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsODMsNDEsOSwKKyAgICAyMTgsMTMsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDEyMiwKKyAgICA2Myw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExMSwxMTUsCisgICAgMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDk5LDEwOCwxMDEsOTcsMTEwLDQ1LDExNywxMTIsMzIsMTExLAorICAgIDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsNDYsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLAorICAgIDk1LDAsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMSwyMTgsNSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAorICAgIDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQzLDAsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwKKyAgICAxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwyNSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMDYsCisgICAgMiwwLDEwNyw2LDAsMTI0LDAsMCw5NSwzLDAsMTAwLDAsMCw4Myw0MSwKKyAgICAxLDc4LDQxLDQsMTE0LDE4LDAsMCwwLDExNCwxNCwwLDAsMCwyMTgsNywKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMjE4LDEwLDk1LDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsCisgICAgMTExLDk3LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOSw5NSw5NSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTE0LDk1LDk1LDQ2LDAsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCisgICAgMjMsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LAorICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMTEsMCwwLDAsNzEsMCwwLDAsMTE1LDc3LDAsCisgICAgMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDEsCisgICAgMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE0LDczLDAsMTI0LDAsMCwxMDYsMSwKKyAgICAwLDEyLDExNCw3MywwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwxMjQsMCwKKyAgICAwLDEwNiw0LDAsNjEsODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLAorICAgIDExNCw3MiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwKKyAgICAzLDc4LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDAsMCwwLDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLAorICAgIDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDksMCw4NiwxLAorICAgIDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDExNCwxMCwwLDAsMCw0MSwKKyAgICAyLDIxOCwyLDQ2LDQ4LDIxOCwzLDk3LDExNCwxMDMsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLAorICAgIDEyMCwxMTIsMTE0LDYyLDUwLDAsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsCisgICAgNDEsOTUsNzcsOTcsMTEwLDk3LDEwMywxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LAorICAgIDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCisgICAgNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDYsMjE4LDMsOTcsMTEwLAorICAgIDEyMSwxMTQsMjIsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsMTgsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsCisgICAgMiwxMTQsMTksMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsOTUsMTAxLAorICAgIDEyMCwxMDUsMTE2LDk1LDk1LDQ5LDAsMCwwLDExNSwxMCwwLDAsMCwwLDEsCisgICAgMzUsMSwzLDEsMTcsMSwxMywxLDEyMiwyMiw5NSw3Nyw5NywxMTAsOTcsMTAzLAorICAgIDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwzOSwKKyAgICAwLDAsMCwxMTUsOCwwLDAsMCwxMiwyLDYsMiwxMiwzLDEyLDMsCisgICAgMTE0LDE3LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsNjQsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMSwKKyAgICAwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsODMsNDEsCisgICAgMiwyMTgsMTQsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsNzgsNDEsMywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMxLDAsMCwwLDY0LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDEyLDEsMTE0LDMxLDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDgyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCisgICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwKKyAgICAwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsCisgICAgMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLAorICAgIDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwKKyAgICAwLDkwLDgsMCwxMDAsMTIsMCw4Myw0MSwxMywyMTgsMTEsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwxNjksNjUsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LAorICAgIDExNSwxMDUsMTE4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsCisgICAgMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLAorICAgIDEwMSw0NiwxMDMsNDYsMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw0OSwzMiwxMTYsMTE0LAorICAgIDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsMTExLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDExNSwzMiw2NSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjYsNDQsMzIsOTcsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDMyLDUwLDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLAorICAgIDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwKKyAgICAxMDcsMTE1LDMyLDY2LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2NSw0MSw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3MCwwLDAsMCwxMTYsMCwwLDEwNiwKKyAgICAxLDAsMTMxLDAsMCwxMjQsMCwwLDk1LDIsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTMxLDAsMCwxMjQsMCwwLDk1LDMsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgOTUsNCwwLDEwMCwwLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDEsMCwxMjQsCisgICAgMCwwLDk1LDYsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNywwLDEwMCwwLAorICAgIDAsODMsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LDIxOCw3LDk1LDExNiwKKyAgICAxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDEwMSw5NSwKKyAgICAxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwxMTksOTcsMTA3LDEwMSwKKyAgICAxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwxMDEsMTE0LDIxOCw1LAorICAgIDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSw0MSwyLAorICAgIDExNCwxOSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDc0LDAsCisgICAgMCwwLDExNSwxMiwwLDAsMCwwLDEsMTUsMSwxNSwxLDksMSw5LAorICAgIDEsOSwxLDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LAorICAgIDAsMCwxMDYsMiwwLDEyNSwyLDAsMTIwLDYwLDAsMTE2LDMsMCwxMDYsNCwKKyAgICAwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDAsMCwKKyAgICAxMDcsOCwwLDExNCw1NSwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMiwwLAorICAgIDEyNSwyLDAsMTI0LDIsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDI0LDAsMTAwLAorICAgIDIsMCw4MywxMTMsMjQsMCw4NywxMDAsMCwwLDgzLDQxLDMsNzgsNzAsODQsCisgICAgNDEsNSwxMTQsMzQsMCwwLDAsMjE4LDksMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsCisgICAgMTEwLDExNiwxMTQsMzcsMCwwLDAsMjE4LDEyLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwKKyAgICAxMTAsMTAzLDk1LDExMSwxMTAsMjE4LDMsMTAzLDEwMSwxMTYsNDEsNCwxMTQsMTksMCwwLAorICAgIDAsOTAsMiwxMDksMTAxLDIxOCwzLDExNiwxMDUsMTAwLDExNCwzNSwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTIsCisgICAgMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw4MiwwLDAsMCwKKyAgICAxMTUsMTgsMCwwLDAsMCwyLDEyLDEsOSwxLDMsMSwxNSwxLDEyLAorICAgIDEsNCwxLDksMSwxMiwxLDEyMiwyNCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc2LDExMSw5OSwxMDcsNDYsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LAorICAgIDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjEwLDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMTYsMiwwLDEyNCwxLDAsCisgICAgNjAsMTIyLDE3MywwLDEyMCwxNjYsMCwxMjQsMCwwLDEwNiwzLDAsMTQzLDEyNCwwLAorICAgIDEsMTI0LDAsMCwxMDYsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTUsNjgsMCwKKyAgICAxMjQsMCwwLDEwNiw1LDAsMTI0LDEsMCwxMDcsMiwwLDExNCw5NiwwLDEyNCwKKyAgICAxLDAsMTI0LDAsMCw5NSw1LDAsMTI0LDAsMCw0LDEwNiw0LDAsMTAwLAorICAgIDIsMCw1NSwyLDk1LDQsMCwxMDAsMywwLDgzLDEyNCwwLDAsMTA2LDYsCisgICAgMCwxMzEsMCwwLDExNCwxMjQsMCwxMTYsNywwLDEwMCw0LDAsMTI0LDAsMCwKKyAgICAyMiwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsCisgICAgMTAwLDUsMCwxMzEsMSwwLDExNCwxNTcsMCwxMjQsMCwwLDQsMTA2LDEwLDAsCisgICAgMTAwLDIsMCw1NSwyLDk1LDEwLDAsODcsMTAwLDYsMCw4MSw4Miw4OCwxMjQsCisgICAgMCwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDEsMTI0LDAsMCwxMDYsCisgICAgOCwwLDEwNiwxMSwwLDEzMSwwLDAsMSwxMTMsMjgsMCw4Nyw4NywxMDAsNiwKKyAgICAwLDExNiwyLDAsMTI0LDEsMCw2MSw4OCwxMDAsNiwwLDgzLDQxLDcsMTIyLAorICAgIDE4NSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsCisgICAgOTcsMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsMTAwLAorICAgIDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExOSw5NywKKyAgICAxMjEsMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDk3LDExMCwxMDAsMzIsCisgICAgODQsMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwzMywwLDAsMCwyMzMsCisgICAgMSwwLDAsMCw4NCwxMjIsMjMsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsCisgICAgMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwzNywxMTQsNzAsNzgsCisgICAgNDEsMTIsMTE0LDM0LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNDEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMzcsMCwwLDAsCisgICAgMTE0LDQ0LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzYsMCwwLDAsMjE4LAorICAgIDcsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTQsMzksMCwwLDAsMjE4LDcsMTE0LAorICAgIDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDQzLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCw0NiwwLDAsMCw5NCwwLDAsMCwxMTUsMzIsMCwwLDAsMCwKKyAgICA2LDEyLDEsMTAsMSwzLDEsMywxLDEwLDEsMzAsMSw5LDEsMTUsCisgICAgMSw0LDEsMTIsMSwxNiwxLDE4LDEsMjIsMiwxMywxLDIxLDIsMTIyLAorICAgIDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxNTcsMCwwLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwyLDAsCisgICAgMTQzLDEyOSwwLDEsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsMTA3LDMsMCwKKyAgICAxMTQsNDksMCwxMTYsNCwwLDEwMCwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKKyAgICAwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNyw0LDAsMTE1LDcwLDAsMTE2LDYsCisgICAgMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsNSwwLDEwMCwzLDAsNTYsMiwKKyAgICA5NSw1LDAsMTI0LDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsCisgICAgMTQ2LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDMsMCwxMjQsMCwwLDEwNiw3LAorICAgIDAsMTE0LDE0NiwwLDEyNCwwLDAsNCwxMDYsNywwLDEwMCwzLDAsNTYsMiwKKyAgICA5NSw3LDAsMTI0LDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLAorICAgIDg3LDEwMCwwLDAsODEsODIsODgsMTAwLDAsMCw4Myw0MSw0LDc4LDEyMiwzMSwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LAorICAgIDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsCisgICAgMzMsMCwwLDAsMTE0LDQ1LDAsMCwwLDQxLDEwLDExNCwzNCwwLDAsMCwKKyAgICAxMTQsNDAsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsCisgICAgMTIsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwzOCwwLAorICAgIDAsMCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsMTExLDExMCw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDM5LDAsMCwwLDExNCwzNiwwLDAsMCwxMTQsNDcsMCwwLAorICAgIDAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDQzLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTksMCwwLDAsMTE1LDIyLDAsMCwwLDAsMSwxMiwxLDEwLDEsCisgICAgMTUsMSwxMiwxLDIxLDEsMTUsMSwxNSwxLDksMSw5LDEsMTUsMSwKKyAgICAxMjIsMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsCisgICAgMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEwMCwKKyAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsCiAgICAgMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsCi0gICAgMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsNDcsMCwwLDAsMTE0LDY3LDAsMCwwLAotICAgIDExNCw0OCwwLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTAxLDAsMCwwLAotICAgIDI1MSwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDY4LDExNywKLSAgICAxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsCi0gICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDgsMTE0LDU3LDAsMCwwLDExNCw1NiwKLSAgICAwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw3MiwwLAotICAgIDAsMCwxMTQsOTcsMCwwLDAsMTE0LDk4LDAsMCwwLDExNCwxMDEsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDEwMiwwLDAsMCwyMzQsMCwwLDAsMTE1LDEwLAotICAgIDAsMCwwLDEyLDIsNiwyLDEyLDQsMTIsNCwxMiw1LDExNCwxMDIsMCwKLSAgICAwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw2NCwwLDAsMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwKLSAgICAxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLAotICAgIDAsOTAsMywwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwKLSAgICAxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4MywKLSAgICA0MSw4LDIxOCwxOCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsCi0gICAgOTcsMTEwLDk3LDEwMywxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAotICAgIDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsNzAsMCwwLDAsCi0gICAgMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDY3LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwxLDEsMCwwLDExNSw0LDAsMCwwLAotICAgIDAsMSw5LDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LAotICAgIDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAotICAgIDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEwLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw1MywwLDAsMCwxMjIsMjIsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMiwwLAotICAgIDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsNCwwLDEzMSwwLDAsMSw4OCwxMjQsCi0gICAgMCwwLDEwNiwyLDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDAsMCw4MywKLSAgICA0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw3MCwwLDAsMCwxMTQsMTA0LDAsMCwKLSAgICAwLDIxOCw0LDk1LDEwNSwxMDksMTEyLDIxOCwxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKLSAgICA5NSwxMDgsMTExLDk5LDEwNywxMTQsOTcsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDc1LDAsMCwwLDUsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLAotICAgIDMsMSwyMiwyLDExLDEsMTIyLDI4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsCi0gICAgMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsCi0gICAgMCwxLDAsMCwwLDc5LDAsMCwwLDExNSwxNywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsOTgsMCwwLDAsNDEsMywKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDgwLDAsMCwwLDIxOCw2LDEwNywxMTksOTcsMTE0LAotICAgIDEwMywxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDgxLDAsMCwwLDEyLDEsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LAotICAgIDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsCi0gICAgNiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwKLSAgICAxMTQsNzIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsMTAzLDAsMCwwLDI1NSwwLDAsMCwxMTUsNiwwLDAsCi0gICAgMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAzLDAsMCwwLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsMCwwLAotICAgIDAsMTE1LDE0MiwwLDAsMCwxMDAsMSwwLDEyNSwxLDAsMTIxLDE3LDAsMTE2LAotICAgIDAsMCwxMzYsMCwwLDI1LDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMTgsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDQzLDAsMSwxLDEsODksMTEwLDEsCi0gICAgMCw4OCwxMjQsMSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDIsCi0gICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDgzLDAsMTE2LDMsMCwxMzYsMCwwLAotICAgIDEzMSwxLDAsMTI1LDEsMCwxMTAsMTIsMCwxMTYsNCwwLDEzNiwwLDAsMTMxLAotICAgIDEsMCwxMjUsMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLAotICAgIDAsMTM0LDAsMCwxMjUsMiwwLDExNiw1LDAsMTA2LDYsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTMxLDIsMCwxMTYsMCwwLDEzNiwwLDAsNjAsMTEwLDAsMCwKLSAgICAxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LDMyLDExMSwxMTQsMzIsOTksCi0gICAgMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCi0gICAgOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE2LAotICAgIDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAotICAgIDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsMTE1LDExLDAsMCwwLAotICAgIDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMSwKLSAgICAyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQxLAotICAgIDEsMTE0LDM2LDAsMCwwLDQxLDEsMTE0LDY3LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDIxOCwyLDk5LDk4LDMyLDEsMCwwLDExNSwKLSAgICAyLDAsMCwwLDAsMSwxMjIsMjgsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAotICAgIDYyLDQ2LDk5LDk4LDQxLDcsMTE0LDEwOSwwLDAsMCwxMTQsNzksMCwwLDAsCi0gICAgMTE0LDg1LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDgzLDAsMCwwLDIxOCwKLSAgICA4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwxMDIsNDEsMywKLSAgICAxMTQsNjcsMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsNDEsMSwxMTQsNjcsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDEwNSwwLDAsMCwxOCwxLDAsMCwxMTUsMjQsMCwwLDAsMCw0LAotICAgIDYsMSwzLDEsMTcsMSwxMywxLDUsMSwxMiwxLDEyLDEsMTUsMiwKLSAgICAxMiwxLDE4LDIsMjUsMSwxMTQsMTA1LDAsMCwwLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwKLSAgICAwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LDAsMTI0LDEsCi0gICAgMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LDExNiw0LDAsCi0gICAgMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsODgsMTI0LDEsCi0gICAgMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLDIsOTcsMjEsCi0gICAgMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsCi0gICAgMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKLSAgICAxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCi0gICAgMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsCi0gICAgMTE1LDExNywxMTQsMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCi0gICAgMzIsOTksMTExLDEwOSwxMTIsMTA4LDEwMSwxMTYsMTAxLDEwOCwxMjEsMzIsMTA1LDExMCwxMDUsMTE2LAotICAgIDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDQ0LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTAxLDExOCwxMDEsMTEwLDExNiwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTgsCi0gICAgMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLAotICAgIDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwKLSAgICAxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwKLSAgICAxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDQxLDYsMTE0LDEwNSwwLDAsMCwKLSAgICAxMTQsMTA2LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwKLSAgICA4MiwwLDAsMCwxMTQsOTgsMCwwLDAsNDEsMiwxMTQsNjcsMCwwLDAsCi0gICAgMTE0LDg2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDIxOCwxOSw5NSwxMDgsMTExLDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsCi0gICAgOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM3LDEsMCwwLDExNSwxNCwwLAotICAgIDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLDMsNSwyLAotICAgIDExNCwxMTIsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsMywwLDAsMCw3OSwwLDAsMCwxMTUsMTMsMCwwLDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTQyLDAsMCw4Myw0MSwxLDk3LDQ2LAotICAgIDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5NywxMDgsMTE5LDk3LAotICAgIDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsCi0gICAgOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwKLSAgICAzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwKLSAgICAxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLDExMSwxMTQsMTA5LDk3LAotICAgIDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMTE1LAotICAgIDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDEwLDMyLAotICAgIDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwxMTYsMTE0LDExMSwxMDAsCi0gICAgMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsMTAwLDMyLDExMCwxMTEsCi0gICAgMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNiwxMTQsOTcsCi0gICAgOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDExOSwxMDQsMTAxLAotICAgIDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNCw0LDAsMCwwLDQxLDMsMjE4LDEsMTAyLDExNCw4MCwwLDAsMCwKLSAgICA5MCw0LDEwNywxMTksMTAwLDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNSwwLDAsMCwyMTgsMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwKLSAgICAxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsCi0gICAgNTcsMSwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCwxMTQsMCwwLDAsCi0gICAgMTA1LDIzOCwxMiwwLDAsMjMzLDIsMCwwLDAsMTE0LDEzLDAsMCwwLDExNSwKLSAgICAyLDAsMCwwLDEzLDEwLDkwLDExLDk1LDk1LDExMiwxMjEsOTksOTcsOTksMTA0LAotICAgIDEwMSw5NSw5NSwxMjIsMyw0NiwxMTIsMTIxLDEyMiw0LDQ2LDExMiwxMjEsOTksMTIyLDQsCi0gICAgNDYsMTEyLDEyMSwxMTEsNzgsOTksMiwwLDAsMCwwLDAsMCwwLDExLDAsCi0gICAgMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MiwwLDAsMCwxMjQsCi0gICAgMSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjUsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTA2LDIsMCwxMiwxMTAsMywwLDEyNCwxLDAsMTI1LDIsMCwxMjQsMiwKLSAgICAwLDExNCw0NiwwLDExNiwzLDAsMTI1LDMsMCwxMTAsNiwwLDExNiw0LDAsCi0gICAgMTI1LDMsMCwxMTYsNSwwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LAotICAgIDQsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDYsMCwxMDAsMiwwLDEzMSwxLAotICAgIDAsOTIsMywwLDEyNSw2LDAsMTI1LDcsMCwxMjUsOCwwLDExNiwwLDAsCi0gICAgMTA2LDcsMCwxMDYsOCwwLDEyNSw5LDAsMTI0LDksMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDEzMywwLDExNiw5LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLAotICAgIDAsMTEwLDAsMCwxMDAsNCwwLDEwNiwxMCwwLDEyNCw2LDAsMTE0LDE1MSwwLAotICAgIDEyNCw2LDAsMTEwLDMsMCwxMjQsOCwwLDEyNCw3LDAsMTI0LDksMCwxMjQsCi0gICAgMywwLDEwMCw1LDAsMjUsMTAzLDQsMCwxMzEsMSwwLDEyNSwxMCwwLDExNiwKLSAgICAxMSwwLDEyNCw0LDAsMTE2LDEyLDAsMTI0LDEwLDAsMTMxLDMsMCw4Myw0MSwKLSAgICA2LDk3LDI0NCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsOTksNDcsCi0gICAgNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsCi0gICAgMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLAotICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDQ2LDExMiwxMjEsCi0gICAgOTksNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwKLSAgICAxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDk3LDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExOSwxMDEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAxLDEyMCwKLSAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNSwxMDgsMTA4LAotICAgIDMyLDk4LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDExNywxMTAsMTA4LDEwMSwxMTUsMTE1LDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDEwMiwxMDgsOTcsMTAzLDExNSw0NiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwKLSAgICAxMjIsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTAsNDUsMTIyLDEwMSwxMTQsMTExLDQ0LDMyLAotICAgIDExNiwxMDQsMTAxLDExMCwzMiwxMDUsMTE2LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsCi0gICAgNDYsMTEyLDEyMSwxMTEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDEwMCwxMDEsCi0gICAgOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsCi0gICAgMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDEwNSwKLSAgICAxMTYsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5NywzMiw5OCwxMTEsMTExLDEwOCwKLSAgICAxMDEsOTcsMTEwLDMyLDk3LDExMCwxMDAsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMTIsMTA4LDk3LDk5LDEwMSwzMiwxMTEsMTAyLDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDEwMiwxMDgsOTcsMTAzLDExNSw0NiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwKLSAgICAxMjIsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksCi0gICAgOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsCi0gICAgMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMjE4LDEsNDYsMTIyLDM2LAotICAgIDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiwKLSAgICA3OCwxMTEsMTEwLDEwMSwxMTQsMzAsMCwwLDAsMTE0LDg0LDAsMCwwLDQxLDEzLAotICAgIDExNCw3LDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLAotICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDIxOCwyMyw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4OSwKLSAgICA4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywyMTgsCi0gICAgMjcsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksNjcsCi0gICAgNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE0LDM4LDAsMCwKLSAgICAwLDExNCwzMiwwLDAsMCwyMTgsMTQsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDIxOCw5LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LAotICAgIDEwMywyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKLSAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwyNiwwLDAsMCwxMTQsMjgsMCwwLDAsCi0gICAgMjE4LDgsOTUsODAsODksNjcsNjUsNjcsNzIsNjksNDEsMTEsMTE0LDM1LDAsMCwKLSAgICAwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCi0gICAgMTAxLDIxOCw1LDEwMCwxMDEsOTgsMTE3LDEwMywyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwKLSAgICAxMDEsMTE1LDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzNywwLDAsMCwyMTgsNCw5OCwKLSAgICA5NywxMTUsMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLAotICAgIDExNiw5NywxMDMsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNyw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDE4MSwKLSAgICAxLDAsMCwxMTUsMjIsMCwwLDAsMCwxMywzMSwxLDYsMSw5LDIsCi0gICAgNiwxLDE4LDEsMjQsMSwxMiwxLDEyLDEsMTUsMSw0MywxLDExNCwxMzIsCi0gICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNSwwLDAsMCw2NywwLDAsMCwxMTUsMTkzLDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMDYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzMsMCwxMTYsCi0gICAgMywwLDEwMCwyLDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDIsMCwKLSAgICAxMTYsNCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsCi0gICAgMywwLDEyNCwzLDAsMTE2LDUsMCwxMDcsMywwLDExNCwxMDgsMCwxMTYsNiwKLSAgICAwLDEwMCwzLDAsMTA2LDcsMCwxMTYsNSwwLDEyNCwwLDAsMTMxLDIsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwNiw4LDAsMTAwLAotICAgIDQsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMTUzLDAsMTE2LDYsCi0gICAgMCwxMDAsNiwwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTA2LDksMCwxMDAsNCwwLDEzMSwKLSAgICAxLDAsMTAwLDcsMCwyNSwxMjUsNCwwLDExNiwxMCwwLDEyNCwxLDAsMTI0LAotICAgIDQsMCwxMTYsMTEsMCwxMDAsNywwLDI1LDIzLDEzMSwyLDAsODMsNDEsOCwKLSAgICA5NywxMjEsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSw5OSw0Niw0Nyw0NiwKLSAgICAxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwKLSAgICAzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsCi0gICAgMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwKLSAgICAxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksCi0gICAgMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsCi0gICAgMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwKLSAgICA0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsMzIsNzMsMTAyLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLAotICAgIDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLDMyLDgwLDY5LDgwLAotICAgIDMyLDUxLDQ5LDUyLDU1LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsCi0gICAgMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsCi0gICAgMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLAotICAgIDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsCi0gICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwKLSAgICAzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiwKLSAgICAzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsCi0gICAgMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLAotICAgIDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKLSAgICAxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMTQsMTE2LDAsMCwKLSAgICAwLDExNCwxMTUsMCwwLDAsMTIyLDI4LDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwKLSAgICAzMiwxMTEsMTEwLDEwOCwxMjEsMzIsNTAsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsCi0gICAgMTIzLDMzLDExNCwxMjUsMTE0LDg0LDAsMCwwLDQxLDEyLDExNCw3LDAsMCwwLAotICAgIDExNCwxMjEsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwKLSAgICAzOCwwLDAsMCwxMTQsMTI0LDAsMCwwLDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQ3LDAsMCwwLDExNCw4OSwwLDAsMCwyMTgsCi0gICAgOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwyOCwwLDAsMCwyMTgsCi0gICAgMTUsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsCi0gICAgNDEsNSwxMTQsMzUsMCwwLDAsMTE0LDEyNywwLDAsMCw5MCwxNiwxMTIsMTIxLAotICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDkwLDcsCi0gICAgMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDEzLDk4LDk3LDExNSwxMDEsOTUsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwxMTQsCi0gICAgMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIwOCwxLDAsMCwxMTUsMjQsMCwwLAotICAgIDAsMCw5LDE4LDEsMTUsMSwxOCwxLDE4LDEsMTIsMSw5LDEsMTgsCi0gICAgMSwyMSwxLDksMSwxNSwxLDE5LDEsMTE0LDEzNiwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTY0LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwKLSAgICAwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjIsMCwxMDAsMiwwLDgzLDEyNCwwLAotICAgIDAsMTA2LDEsMCwxMDAsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsCi0gICAgMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsMTIsMTE1LDgxLDAsMTI0LDMsMCwKLSAgICAxMDYsMiwwLDEzMSwwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMywyLDAsMjUsCi0gICAgMTAwLDYsMCwxMDcsMywwLDExNCw4NSwwLDEyNCwwLDAsODMsMTIxLDE2LDAsCi0gICAgMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsNDAsMCwKLSAgICA0LDExNiw0LDAsMTE2LDUsMCwxMDIsMiwwLDEwNywxMCwwLDExNCwxNDMsMCwKLSAgICAxLDEsMSwxMjQsMCwwLDEwMCwyLDAsMTAwLDksMCwxMzMsMiwwLDI1LAotICAgIDEyNSw0LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEyNCw0LDAsMTMxLDEsCi0gICAgMCwxMTQsMTYwLDAsMTI0LDQsMCw4MywxMjQsMCwwLDgzLDQxLDEwLDEyMiwxODgsCi0gICAgNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsCi0gICAgOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMDUsCi0gICAgMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwxMTEsMTA5LDExMiwKLSAgICA5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsMTAsMzIsMzIsCi0gICAgMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLDEwMSw5OSw2NywKLSAgICAxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LDcwLDEwNSwxMDgsCi0gICAgMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCw4NCwwLDAsCi0gICAgMCw3OCwxMTQsMTE2LDAsMCwwLDIzMywzLDAsMCwwLDExNCwyOSwwLDAsCi0gICAgMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LDI1NSwyMzMsMjU1LDI1NSwyNTUsMjU1LDExNCwKLSAgICAxMzksMCwwLDAsNDEsNywxMTQsMzEsMCwwLDAsMTE0LDMyLDAsMCwwLAotICAgIDIxOCw1LDEwOCwxMTEsMTE5LDEwMSwxMTQsMTE0LDEzNiwwLDAsMCwxMTQsMTIzLDAsMCwKLSAgICAwLDExNCwxMzMsMCwwLDAsMTE0LDQ0LDAsMCwwLDQxLDUsMjE4LDEzLDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwxMzAsMCwwLAotICAgIDAsMTE0LDM2LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE1LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsMTAxLDIzMSwxLAotICAgIDAsMCwxMTUsMjAsMCwwLDAsMCw3LDE4LDEsNCwxLDI0LDEsMzUsCi0gICAgMSw0LDEsMywxLDE2LDEsMTksMSwyMSwxLDExNCwxNDMsMCwwLDAsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEwNiwxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCwKLSAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwKLSAgICAxMjUsMSwwLDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwKLSAgICAxLDAsMTI0LDEsMCw4Myw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCwKLSAgICA5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwKLSAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsCi0gICAgMCwwLDIzMywxMjgsMCwwLDAsNDEsMywxMTQsMzksMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0MCwwLDAsMCw0MSwyLDExNCwzNSwwLDAsMCwxMTQsCi0gICAgNDIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMjUwLAotICAgIDEsMCwwLDExNSwxMiwwLDAsMCwwLDIsMywxLDE5LDEsMTMsMSwKLSAgICAxMSwzLDEwLDEsMTE0LDE0NSwwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsCi0gICAgMTE1LDEwNSwxMTYsMTIxLDExNCwyOSwwLDAsMCw5OSwxLDAsMCwwLDEsMCwKLSAgICAwLDAsMywwLDAsMCw0LDAsMCwwLDcxLDAsMCwwLDExNSw4MSwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNywKLSAgICA1LDAsMTE0LDc3LDAsMTI0LDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsCi0gICAgMCwxMTUsNDYsMCwxMDAsMywwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTAsMCwKLSAgICAwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwyLDAsMTQwLDAsMCwKLSAgICAxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwxMzEsMSwxLDEsMTEwLDAsMCwKLSAgICAxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwxMTYsMTAwLAotICAgIDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLDc5LDc4LAotICAgIDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsMTEwLDEwMSwKLSAgICAxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAzMiwxMjIsMiwzNSwzMiwxMTQsNTQsMCwwLDAsNzgsNDEsMiwxMTQsMTQ3LDAsCi0gICAgMCwwLDExNCwxNDgsMCwwLDAsNDEsNywxMTQsNywwLDAsMCwxMTQsMTE3LAotICAgIDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDExNCw5LDAsMCwKLSAgICAwLDIxOCw1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDQ3LDAsMCwwLDIxOCw2LDExNSwKLSAgICAxMTYsMTAwLDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCi0gICAgMTE0LDE0NiwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LAotICAgIDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDYsMiwwLDAsMTE1LAotICAgIDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMywxLDExNCwxNTMsMCwwLAotICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAotICAgIDAsMCwzLDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsMSwwLDEzNSwwLAotICAgIDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDEsMCwxMjUsMSwwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLAotICAgIDgzLDQxLDQsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsCi0gICAgMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMTQsCi0gICAgMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywxMTAsMTAwLAotICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsMTA1LDExNCwKLSAgICAxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk1LAotICAgIDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCi0gICAgMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsCi0gICAgMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLDMyLDk3LAotICAgIDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsMTE1LDMyLAotICAgIDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsNzgsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwKLSAgICAwLDAsMCwzMSwwLDAsMCwxMTUsODMsMCwwLDAsMTI0LDEsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLAotICAgIDAsMTEwLDQwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA3LDMsMCwKLSAgICAxMTQsNjQsMCwxMTYsMSwwLDEwMCwxLDAsMTI0LDEsMCwyMiwxMDAsMiwwLAotICAgIDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwyLDAsODMsNDEsCi0gICAgMyw3OCwxMjIsMjMsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMTEwLDExMSwKLSAgICAxMTYsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwzNywxMTUsMTE0LDY3LDAsMCwwLAotICAgIDQxLDIsMTE0LDY3LDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAotICAgIDExNCwxMTQsMTExLDExNCw0MSw0LDExNCw3MSwwLDAsMCwxMTQsNjcsMCwwLDAsCi0gICAgMTE0LDgwLDAsMCwwLDExNCwxMDgsMCwwLDAsNDEsMSwyMTgsNiwxMDksMTAxLAotICAgIDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTksCi0gICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsCi0gICAgMTEyLDEwMSwxMTQsMjIsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMSwxMiwxLAotICAgIDEyLDEsMTUsMSwyNSwxLDEyMiw0MCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsCi0gICAgOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsOTksMTA0LAotICAgIDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgNDEsMSwxMTQsNjUsMCwwLDAsNDEsMiwxMTQsMTU1LDAsMCwwLDExNCwxNTYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTU1LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDIxOCwxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxNCwyLDAsMCwxMTUsNiwwLDAsMCwwLDgsMjEsNiwxMywxLAotICAgIDExNCwxNTcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLDAsMCwxMzUsCi0gICAgMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDEsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsCi0gICAgMCw4Myw0MSwzLDEyMiw0OSw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwKLSAgICAxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywKLSAgICAxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LDExNywKLSAgICAxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDU4LDAsMCwKLSAgICAwLDEyNCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw3LDAsMTE0LDQ1LDAsCisgICAgMTE2LDMyLDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwKKyAgICAwLDAsMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwxMzIsMCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwxLDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsCisgICAgOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsCisgICAgMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LAorICAgIDIwLDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ3LAorICAgIDAsMCwwLDExNCw1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMyLDAsMCwKKyAgICAwLDY4LDAsMCwwLDExNSwxMiwwLDAsMCwxMiw0LDYsMiwxMiw4LAorICAgIDEyLDEyLDEyLDI1LDEyLDEzLDExNCwzMiwwLDAsMCw5OSwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLAorICAgIDExNSw3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsCisgICAgMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwKKyAgICA5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwKKyAgICA2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCw5LAorICAgIDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsNDEsMTEsMjE4LDE2LDk1LAorICAgIDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTIyLAorICAgIDg2LDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk4LDExNywxMDUsMTA4LAorICAgIDEwMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwxMTcsMTE2LDEwLDMyLDMyLDMyLDMyLDEwOSwKKyAgICAxMTcsMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsCisgICAgMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLAorICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMSwwLDEyNCwwLDAsCisgICAgOTUsMSwwLDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMzMsMCwwLDAsNDEsCisgICAgMiwxMTQsMTUsMCwwLDAsMTE0LDM4LDAsMCwwLDQxLDIsMTE0LDE5LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTQwLDAsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMSw5LDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSwKKyAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsCisgICAgNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4MywKKyAgICA0MSwzLDc4LDExNCw0NSwwLDAsMCw4NCw0MSwxLDExNCwzOCwwLDAsMCwKKyAgICA0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsNDYsMCwwLDAsMTQ0LDAsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsCisgICAgMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMSwwLDEwMCwyLAorICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwzLAorICAgIDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4Myw0MSw0LDc4LDExNCwzMywwLAorICAgIDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywKKyAgICAxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LAorICAgIDExMSw5OSwxMDcsMTE0LDQ1LDAsMCwwLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwKKyAgICA0OCwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLDAsMTQ4LAorICAgIDAsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTIyLDI0LAorICAgIDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwKKyAgICAwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMTYsMiwKKyAgICAwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMiwwLDgzLDQxLDIsNzgsMTIyLDI4LAorICAgIDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsNTAsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw1MSwwLDAsMCw0MSwxLDExNCwKKyAgICAxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTUzLDAsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsCisgICAgOCwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKKyAgICAxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA0NywwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MywwLAorICAgIDAsMCwxMzYsMCwwLDAsMTE1LDEwLDAsMCwwLDEyLDIsNiwyLDEyLAorICAgIDQsMTIsNCwxMiw1LDExNCw1MywwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKKyAgICAxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsCisgICAgNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwKKyAgICAwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsCisgICAgMCwxMDAsMCwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMSwKKyAgICA3OCw0MSwyLDExNCwxOCwwLDAsMCwyMTgsNSw5NSwxMDgsMTExLDk5LDEwNyw0MSwKKyAgICAyLDExNCwxOSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE1OSwKKyAgICAwLDAsMCwxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyNyw5NSw3NywKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsNTMsCisgICAgMCwwLDAsMTIyLDIyLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAorICAgIDEsMCwxMjQsMCwwLDk1LDIsMCw4NywxMDAsMCwwLDExNiwzLDAsMTA2LAorICAgIDQsMCwxMzEsMCwwLDEsODgsMTI0LDAsMCwxMDYsMiwwLDEwNiw1LDAsCisgICAgMTMxLDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCwxNiw5NSwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsCisgICAgMTgsMCwwLDAsMTE0LDU1LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLDIxOCwKKyAgICAxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsNDYsMCwKKyAgICAwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDE2MywwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDEsMywxLDIyLDIsMTEsMSwxMjIsMjgsCisgICAgOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsCisgICAgMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNzksMCwwLAorICAgIDAsMTE1LDE3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAwLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsNTUsMCwwLAorICAgIDAsMTE0LDQ3LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLDExNCwyOSwwLAorICAgIDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDE3MCwwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsCisgICAgMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLAorICAgIDAsMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1NCwwLDAsMCwKKyAgICAxNTcsMCwwLDAsMTE1LDYsMCwwLDAsMTIsMiwxMiw0LDEyLDcsMTE0LAorICAgIDU0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDEzOSwwLDAsMCwxMDAsMSwKKyAgICAwLDEyNSwxLDAsMTIxLDE3LDAsMTE2LDAsMCwxMzYsMCwwLDI1LDEzMSwwLAorICAgIDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LAorICAgIDQzLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDEwMCwxLDAsCisgICAgMTA3LDgsMCwxMTQsMTM1LDAsMTE2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAorICAgIDgzLDAsMTE2LDMsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTAsMTIsCisgICAgMCwxMTYsNCwwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDEzNSwwLDAsCisgICAgMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwxMjUsMiwwLDExNiwKKyAgICA1LDAsMTA2LDYsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTYsMCwKKyAgICAwLDEzNiwwLDAsNjAsMTI0LDEsMCw4Myw0MSw0LDEyMiwxMDksNzEsMTAxLDExNiwKKyAgICAzMiwxMTEsMTE0LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywKKyAgICAzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCisgICAgMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LAorICAgIDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDE5LDAsMCwwLAorICAgIDExNSwxMSwwLDAsMCwxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLDAsMCw4MywKKyAgICA0MSwxLDc4LDQxLDEsMjE4LDEzLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksMTA3LDExNSw0MSwxLDIxOCwxLDk1LDQxLDEsMTE0LDE1LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDIsOTksOTgsMTkwLDAsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDYsNjAsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDYyLDQ2LDk5LDk4LDQxLDcsMTE0LDU5LDAsMCwwLDExNCwyOCwKKyAgICAwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwzMiwwLAorICAgIDAsMCwyMTgsOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCwzLDExNCwxMDEsCisgICAgMTAyLDQxLDMsMTE0LDE1LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNjEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LDE1LDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTc2LDAsMCwwLDExNSwyNCwwLDAsCisgICAgMCwwLDQsNiwxLDMsMSwxNywxLDEzLDEsNSwxLDEyLDEsMTIsCisgICAgMSwxNSwyLDEyLDEsMTgsMiwyMiwxLDExNCw1NiwwLDAsMCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLAorICAgIDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDEyMSwxNCwKKyAgICAwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLDE4LDAsNCwKKyAgICAxMTYsNCwwLDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LDExMCwxMSwwLAorICAgIDg4LDEyNCwxLDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsMCw4Myw0MSwKKyAgICAyLDk3LDIxLDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsCisgICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwKKyAgICAzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwKKyAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwKKyAgICAxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwKKyAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsCisgICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsCisgICAgMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCw1NiwKKyAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAorICAgIDAsMCwxMTQsMzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDE1LAorICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LAorICAgIDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTUsMCwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsCisgICAgMyw1LDIsMTE0LDYzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsCisgICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsCisgICAgMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsCisgICAgMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLAorICAgIDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LAorICAgIDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LAorICAgIDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksCisgICAgMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwKKyAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsCisgICAgMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsCisgICAgOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LAorICAgIDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKKyAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwKKyAgICAzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDI5LAorICAgIDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LAorICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKKyAgICAxMTgsMTAxLDEwMCwyMTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCw2NSwKKyAgICAwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDExNCw0NSwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKKyAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAorICAgIDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LDcxLDAsMTI0LAorICAgIDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsMCwxMDAsMywKKyAgICAwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsCisgICAgMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsCisgICAgMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsCisgICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsCisgICAgMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksCisgICAgODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsCisgICAgMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAorICAgIDQxLDIsMTE0LDY3LDAsMCwwLDExNCw2OCwwLDAsMCw0MSw3LDExNCwxNCwKKyAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCisgICAgMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKKyAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDUwLDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAorICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDY2LAorICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMjI1LDAsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMiwxOCwxLDE1LDEsMTAsMSwxMTQsNzUsMCwwLDAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwzNSwwLDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLAorICAgIDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLAorICAgIDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCw4Myw0MSwzLDEyMiw0OSwKKyAgICA2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LAorICAgIDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwKKyAgICAwLDAsMTksMCwwLDAsMTE1LDU1LDAsMCwwLDEyNCwxLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNyw3LDAsMTE0LDQyLDAsMTE2LDIsMCwxMDAsMSwwLAorICAgIDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsCisgICAgMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsCisgICAgMCw4Myw0MSwzLDc4LDEyMiwyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwKKyAgICAxMTEsMTE2LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwxNCwwLDAsMCwKKyAgICAyMTgsMjAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LAorICAgIDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQxLDEsMjE4LDMsMTAyLDEyMCwxMTAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTE0LDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCwyMzUsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLAorICAgIDE1LDEsMTgsMSw5LDEsMTIyLDUyLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsCisgICAgMCwwLDAsNDEsMiwxMTQsNzksMCwwLDAsMTE0LDgwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCw0MSwxLDExNCw3OSwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDE3LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsMjMzLDAsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw1LAorICAgIDEzLDEsMTE0LDgxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsMzUsMCwwLAorICAgIDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLAorICAgIDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLAorICAgIDEyNCwxLDAsODMsNDEsMywxMjIsNDcsNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwKKyAgICAxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsCisgICAgMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNSw0MiwwLAogICAgIDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LDAsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwzLDc4LDEyMiwyOSwKLSAgICAxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LDExNywKLSAgICAxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw2NywwLAotICAgIDAsMCw0MSw0LDExNCw3LDAsMCwwLDIxOCwyMCw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsNDcsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMjE4LDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQxLDEsMjE4LDMsMTAyLDEyMCwKLSAgICAxMTAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsCi0gICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LAotICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMzQsMiwwLDAsMTE1LDgsMCwwLDAsMCwKLSAgICAxLDE1LDEsMTgsMSwxMiwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsCi0gICAgMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LAotICAgIDY1LDAsMCwwLDQxLDIsMTE0LDE2MCwwLDAsMCwxMTQsMTYxLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDEsMTE0LDE2MCwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwyMTgsMTcsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LAotICAgIDEwOCwxMTYsMTA1LDExMCwzMiwyLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsCi0gICAgNSwxMywxLDExNCwxNjIsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLAotICAgIDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAotICAgIDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLAotICAgIDEsMTI0LDEsMCw4Myw0MSwzLDEyMiw0Nyw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsCi0gICAgMTExLDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAotICAgIDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDU4LDAsCi0gICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDQ1LAotICAgIDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMzYsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLAotICAgIDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDY3LDAsMCwKLSAgICAwLDQxLDQsMTE0LDEwNiwwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDExNCwxNTQsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LAotICAgIDcxLDAsMCwwLDExNCwxNTksMCwwLDAsNDEsMSwxMTQsMTYwLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyNCw5NSwxMTQsMTAxLDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsCi0gICAgMTEyLDExMiwxMDEsMTE0LDQ1LDIsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwKLSAgICAxLDE4LDEsMTIsMSwxMjIsNTAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCi0gICAgNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCw2NSwwLDAsMCwKLSAgICA0MSwyLDExNCwxNjAsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCw0MSwxLDExNCwxNjAsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LAotICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDMsCi0gICAgMiwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTQsMTY1LAotICAgIDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAotICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg3LDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwyLDAsMTI1LAotICAgIDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsODMsMCwxMTYsMSwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODMsMCwxMDAsMiwwLDEyNSw0LDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsMCwxMjQsMywwLDEwMCwKLSAgICAzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLDAsMSwxMTAsMCwwLAotICAgIDEyNCwyLDAsODMsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLDk3LDExNiwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwKLSAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsMzIsMTA1LDExMCwKLSAgICAzMiwxMDIsOTcsMTE4LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMjMsMTI1LAotICAgIDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsOTUsMTE0LDg0LDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwKLSAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMSwwLDAsMCwyMTgsOSw5NSwxMTksOTcsCi0gICAgMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LDExNCwxMTAsMTE0LDQ3LDAsMCwKLSAgICAwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCi0gICAgNDEsNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwyMTgsNiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDIxOCw4LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDMsCi0gICAgMTA5LDExNSwxMDMsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5NSwxMTUsMTA0LDEwNSwxMDksNTQsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsCi0gICAgMjEsMSwyNCwxLDYsMSwzMiwxLDExNCwxNzMsMCwwLDAsOTksMiwwLAotICAgIDAsMCwwLDAsMCwwLDUsMCwwLDAsMywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsOTMsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwwLDAsCi0gICAgMTMxLDIsMCwxMjUsMiwwLDExNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTA3LDYsMCwxMTQsNzksCi0gICAgMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwyNSwxMjUsNCwwLDEyNCwzLAotICAgIDAsMTA2LDQsMCwxMjQsNCwwLDEzMSwxLDAsMSwxMTYsMiwwLDEwNiwzLAotICAgIDAsMTI0LDEsMCwyNSw4MywxMjQsMywwLDEwNiw1LDAsMTMxLDAsMCw4MywKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTIyLDEyOCw3NiwxMTEsOTcsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDEwNSwxMTYsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LAotICAgIDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLAotICAgIDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLAotICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSw2LDIxOCwxNiwxMTUsMTEyLDEwMSwKLSAgICA5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwyMTgsMTIsOTUsCi0gICAgODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwxMTQsNywwLDAsMCwKLSAgICAxMTQsNzMsMCwwLDAsMjE4LDQsMTAxLDEyMCwxMDEsOTksMjE4LDQsMTA4LDExMSw5NywKLSAgICAxMDAsNDEsNSwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwyMTgsNCwxMTUsCi0gICAgMTEyLDEwMSw5OSwyMTgsNywxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMjE4LDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw3MSwyLDAsMCwxMTUsMTQsMCwwLDAsMCwKLSAgICA2LDE1LDEsMTIsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCwxODEsMCwKLSAgICAwLDAsOTksNCwwLDAsMCwwLDAsMCwwLDExLDAsMCwwLDE5LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyNDMsMSwwLDAsMTA1LDAsMCwxMjUsCi0gICAgNCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzMSwwLDEyNCwyLAotICAgIDAsMTI0LDQsMCwxMDAsMiwwLDYwLDExMCw2LDAsMTAwLDMsMCwxMjUsMiwKLSAgICAwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCw2MiwwLDEyNCwzLDAsCi0gICAgMTI0LDQsMCwxMDAsNCwwLDYwLDExMCwwLDAsMTI0LDAsMCwxMDAsMSwwLAotICAgIDEwMCw1LDAsMTMzLDIsMCwyNSwxMjUsNSwwLDEyNCwwLDAsMTAwLDUsMCwKLSAgICAxMDAsNiwwLDEzMywyLDAsMjUsMTI1LDYsMCwxMjQsMCwwLDEwMCw2LDAsCi0gICAgMTAwLDcsMCwxMzMsMiwwLDI1LDEyNSw3LDAsMTI0LDUsMCwxMTYsMCwwLAotICAgIDEwNywzLDAsMTE0LDE2OCwwLDEwMCw4LDAsMTA2LDEsMCwxMjQsMiwwLDEyNCwKLSAgICA1LDAsMTMxLDIsMCwxMjUsOCwwLDExNiwyLDAsMTI0LDgsMCwxMzEsMSwKLSAgICAwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwKLSAgICAwLDExMCwxMTYsMCwxMTYsNCwwLDEyNCw2LDAsMTMxLDEsMCwxMDAsNSwwLAotICAgIDEwNywzLDAsMTE0LDIyNiwwLDEwMCw5LDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwKLSAgICAxLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiwKLSAgICA1LDAsMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDQsCi0gICAgMCwxMjQsNywwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwyOCwxLAotICAgIDEwMCwxMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LAotICAgIDIsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTYsNSwwLDEyNCw4LDAsMTMxLAotICAgIDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw5LAotICAgIDAsMTE0LDIyOSwxLDEyMSwyMCwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTEsMCwKLSAgICAyNSwxMzEsMSwwLDEyNSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywKLSAgICAxMCwwLDExNCw4MCwxLDEsMSwxLDg5LDExMCw2MiwwLDg4LDExNiw4LDAsCi0gICAgMTI0LDYsMCwxMzEsMSwwLDEyNCw5LDAsMTA3LDMsMCwxMTQsMTQyLDEsMTAwLAotICAgIDEyLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwKLSAgICAwLDEyNCw4LDAsMTMxLDEsMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsNCwKLSAgICAwLDE0MSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyMSwxOCwwLDEyNCwxLDAsCi0gICAgMTAwLDEzLDAsMjUsMTAwLDE0LDAsNjQsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwKLSAgICAxMTYsNywwLDEwNywxMCwwLDExNCwxODAsMSwxLDEsMSw4OSwxMTMsMjI5LDEsCi0gICAgODgsMTE2LDgsMCwxMjQsNywwLDEzMSwxLDAsMTI0LDEwLDAsMTA3LDMsMCwKLSAgICAxMTQsMjI5LDEsMTE2LDMsMCwxMDAsMTIsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLAotICAgIDEsMCwxMjQsNCwwLDE0MSwxLDAsMTMwLDEsMCwxMTMsMjI5LDEsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDEwMCw3LDAsMTAwLDEsMCwxMzMsMiwwLDI1LDgzLDQxLAotICAgIDE1LDk3LDEyMiwxLDAsMCw4Niw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDQ1LDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsNDEsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LAotICAgIDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsNDAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsCi0gICAgMTE2LDEwNCwxMDEsMTE0LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsCi0gICAgMTE0LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsCi0gICAgOTksMTAxLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LAotICAgIDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwKLSAgICAxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LAotICAgIDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksCi0gICAgMTE2LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKLSAgICAxMDEsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwKLSAgICAxMTEsMzIsOTgsMTAxLDMyLDExNSwxMTYsOTcsMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwKLSAgICAxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTYsMTE0LDExNywxMTAsOTksOTcsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgNzgsMTE0LDY3LDAsMCwwLDEyMiwxMCw2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAotICAgIDEwMSw2MiwxMTQsMzUsMCwwLDAsMTE0LDEyLDAsMCwwLDIzMyw4LDAsMCwKLSAgICAwLDIzMywxMiwwLDAsMCwxMjIsMzAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LAotICAgIDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwKLSAgICA1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNDMsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwKLSAgICA2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsCi0gICAgMTAzLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNDgsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSw3OSw3MCwKLSAgICAzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMDUsMTIyLDEwMSwzMiwxMTEsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTA1LDExMCwKLSAgICAzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiwyNiw5OCwxMjEsCi0gICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwKLSAgICAxMDIsMTExLDExNCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNCwxMTUsMTA1LDEyMiwxMDEsMTA4LDMsCi0gICAgMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCw0MSw5LDIxOCwxMiw3Nyw2NSw3MSwKLSAgICA3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNDcsMCwwLDAsMTE0LDE1MywKLSAgICAwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwzMSwwLDAsMCwyMTgsOCw2OSwKLSAgICA3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCi0gICAgMCwxMTQsMTksMCwwLDAsNDEsMTEsMTE0LDUzLDAsMCwwLDIxOCwxMiwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsNjcsMCwwLDAsCi0gICAgMTE0LDM1LDAsMCwwLDkwLDExLDEwMSwxMjAsOTksOTUsMTAwLDEwMSwxMTYsOTcsMTA1LAotICAgIDEwOCwxMTUsOTAsNSwxMDksOTcsMTAzLDEwNSw5OSw5MCwxMywxMTQsOTcsMTE5LDk1LDExNiwKLSAgICAxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsOTAsOCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsCi0gICAgMTIyLDEwMSwxMTQsMTUyLDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAotICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwKLSAgICAxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDg3LDIsMCwwLAotICAgIDExNSw3NiwwLDAsMCwwLDExLDYsMSwxMiwxLDEzLDMsNiwxLDEyLAotICAgIDEsMTMsMSwxNiwxLDE2LDEsMTYsMSwxMiwxLDE4LDEsMTAsMSwxOCwKLSAgICAxLDE4LDEsMTUsMSwxMCwxLDE1LDEsMTgsMSwxNSwxLDEwLDEsMTUsCi0gICAgMSwxMiwxLDMsMSwyMCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwxMCwKLSAgICAxLDE4LDEsMywxLDE4LDEsMTMsMSw1LDIsMTgsMSwxNSwxLDE1LAotICAgIDEsMTE0LDE5MSwwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsNSwKLSAgICAwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTUsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwKLSAgICAyLDAsMTI0LDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc4LDAsMTE2LDQsCi0gICAgMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLDIsCi0gICAgMCwxMDcsOSwwLDExNCw3NCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxLDExMCwwLDAsMTI0LDQsMCw4MywxMTYsNywKLSAgICAwLDEwMCwzLDAsMTA2LDgsMCwxMjQsMiwwLDEzMSwxLDAsMTAwLDQsMCwKLSAgICAxMjQsMSwwLDEwMCw1LDAsMTI0LDIsMCwxMzEsMSwyLDEzMCwxLDAsMTAwLAotICAgIDIsMCw4Myw0MSw2LDEyMiw2MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwKLSAgICA0MCw0MSw0NiwxMjIsMjEsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMjMsNzgsMTExLDExMCwKLSAgICA0NSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwzMiwKLSAgICAxMjMsMzMsMTE0LDEyNSwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDksCi0gICAgMjE4LDcsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwKLSAgICAyMTgsMTAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksCi0gICAgMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxNTMsMCwwLDAsMTE0LDEwNiwwLAotICAgIDAsMCw5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDExMCw5NywxMDksMTAxLDExNCwxNTQsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDUsCi0gICAgMTE0LDUzLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCwKLSAgICAxNDIsMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLAotICAgIDEwNSwxMDgsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE0MiwyLDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCwyLDE1LDEsMTUsMSwxMywxLDEyLDEsMTksCi0gICAgMSw0LDIsMTgsMSwxMTQsMTk2LDAsMCwwLDExNCw4NCwwLDAsMCw5OSwKLSAgICAzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw3NiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLAotICAgIDEsMCwxMjUsMywwLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiwzLAotICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLAotICAgIDAsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEsMTI0LDMsMCw4Myw0MSwxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwKLSAgICAzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LAotICAgIDExMCwxMTYsMTExLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LAotICAgIDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLAotICAgIDk3LDMyLDk4LDEyMSwxMTYsMTAxLDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LAotICAgIDEwMSw5NywxMTQsMTE0LDk3LDEyMSwxMTQsMTg2LDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTAwLDExNCwxNywwLDAsMCwxMTQsMTkyLDAsMCwwLDkwLDUsMTAwLAotICAgIDExNywxMDksMTEyLDExNSw0MSw0LDExNCwxOTUsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTkwLDAsMCwwLDExNCw1MywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsCi0gICAgOTUsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxNTQsMiwwLDAsCi0gICAgMTE1LDEwLDAsMCwwLDAsMywxMiwxLDE5LDEsMTksMSwyMiwxLDExNCwKLSAgICAxOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODksMCwwLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEwOCwwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiwKLSAgICA0LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwxMDYsNSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDQsMCwKLSAgICAxMDYsNiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLDAsMjUsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwKLSAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTE2LDExNCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTAsMTA1LAotICAgIDExOCwxMDEsMTE0LDExNSw5NywxMDgsMzIsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwKLSAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsODQsMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsCi0gICAgMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw0OSwwLDAsMCw5MCw3LDY2LDEyMSwKLSAgICAxMTYsMTAxLDExNSw3Myw3OSw5MCw4LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSw5MCwKLSAgICAxNSwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDk1LDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywKLSAgICA5MCwyNSw3MywxMTAsOTksMTE0LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTA4LDc4LDEwMSwxMTksCi0gICAgMTA4LDEwNSwxMTAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjE4LDYsMTAwLDEwMSw5OSwKLSAgICAxMTEsMTAwLDEwMSw0MSw1LDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwKLSAgICAxMTYsMTAxLDExNSwxMTQsMjAwLDAsMCwwLDkwLDIxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwMSwyMTgsCi0gICAgOCwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsMTUsMTEwLDEwMSwxMTksMTA4LDEwNSwKLSAgICAxMTAsMTAxLDk1LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMywxMDAsMTAxLDk5LDExMSwxMDAsCi0gICAgMTAxLDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTY0LDIsMCwwLDExNSwxMCwwLDAsCi0gICAgMCwwLDUsMTIsMSwxOCwxLDE1LDEsMTgsMSwxMTQsMjA0LDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDM1LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwxNSwxLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLDEyNCwKLSAgICAxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3NCwwLDEyMSwxNywwLDEyNCwxLAotICAgIDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEzLDc0LDAsNCwKLSAgICAxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMyw3NCwwLAotICAgIDg4LDExMCwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsCi0gICAgODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDcsMCwxLDEsCi0gICAgMSw4OSwxMTAsMjksMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgMTM2LDAsMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsMTA2LDIsMCwxMzEsMCwKLSAgICAwLDgzLDEyMSwxMywwLDEyNCwwLDAsMTA2LDcsMCwxMjUsMywwLDg3LDExMCwKLSAgICAyNCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc1LDAsMSwxLDEsMTAwLAotICAgIDMsMCwxMjUsMywwLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsOCwwLDEyNSw0LDAsODcsMTEwLDU5LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwyNTAsMCwxLDEsMSwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwKLSAgICAxMTQsMjMwLDAsMTAwLDQsMCwxMDYsOSwwLDEyNCwzLDAsMTMxLDEsMCw4MywKLSAgICAxMDAsNSwwLDEwNiw5LDAsMTI0LDMsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODksMTEwLDE3LDAsODgsMTAwLDYsMCwxMDYsOSwwLDEyNCwzLDAsMTI0LDQsCi0gICAgMCwxMzEsMiwwLDgzLDEwMCwwLDAsODMsNDEsNyw3OCwyMTgsMTAsOTUsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE0LDEwMSwxMTIsMTE0LDI1MCwxLDYzLDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwKLSAgICAzMiwxMjMsMzMsMTE0LDEyNSw2Miw0MSwxMCwxMTQsNjIsMCwwLDAsMTE0LDYwLDAsCi0gICAgMCwwLDExNCwyMDYsMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsCi0gICAgMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNzUsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwKLSAgICAxMTQsNDcsMCwwLDAsNDEsNSwxMTQsMTgwLDAsMCwwLDExNCwxNzAsMCwwLAotICAgIDAsMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDEzMSwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCi0gICAgMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDE3OCwyLDAsCi0gICAgMCwxMTUsNDYsMCwwLDAsMCwyLDE4LDEsMTUsNCwzLDEsMTcsMSwKLSAgICAxMywxLDgsMSwzLDEsMTMsMSwxMywxLDUsMiwxMiwxLDE2LDQsCi0gICAgMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxMywxLDEzLDEsMTIsMSwKLSAgICAxMywyLDIxLDIsMTE0LDIxMiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw1MiwKLSAgICAwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsCi0gICAgMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLAotICAgIDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE3LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwKLSAgICAxLDAsMTA2LDEsMCwxMjQsMCwwLDk1LDIsMCwxMDAsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMywyMTgsNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMjA5LDAsCi0gICAgMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDcxLDAsMCwwLAotICAgIDExNCwxODAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDcyLDAsMCwwLDIxNiwyLDAsMCwxMTUsNCwwLAotICAgIDAsMCwwLDEsOSwxLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKLSAgICAxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDk1LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTE2LDMsCi0gICAgMCwxMDYsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsNSwwLDYwLDEwMCwwLAotICAgIDAsODMsNDEsMiw3OCw4NCw0MSw2LDExNCwyMTUsMCwwLDAsMjE4LDEzLDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwxMDMsMTE0LDIxNCwwLDAsCi0gICAgMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwwLDAsMTE0LDY3LDAsMCwwLAotICAgIDQxLDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDExNCw3NSwwLDAsMCwyMjAsMiwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCw0LDEyLDEsMTIyLDI3LDk1LDEwNSwxMTAsMTE1LDExNiw5NywKLSAgICAxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTEwLAotICAgIDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwxMjEsMCwwLDAsMTIyLAotICAgIDEwMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEzMiwwLDAsMTI0LDEsMCw2OCwxMzEsMSwwLDEzMSwxLAotICAgIDAsMTE0LDc4LDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwyLDAsCi0gICAgMTA2LDQsMCw2MSw4NywxMTMsMTAwLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwKLSAgICA3NCwwLDEsMSwxLDg5LDExMywxMDAsMCw4OCwxMTAsMjIsMCwxMTYsNiwwLAotICAgIDEwMCwzLDAsMTI0LDIsMCwxMDYsNCwwLDEyNCwyLDAsMTA2LDcsMCwxMzEsCi0gICAgMywwLDEsODcsMTAwLDAsMCwxMDAsNCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICA5NSw4LDAsODgsMTAwLDAsMCw4Myw0MSw1LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLAotICAgIDExNSwyNywwLDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTA3LDksMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4MywKLSAgICA0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMjMwLDIsMCwwLDExNSwyLDAsMCwKLSAgICAwLDYsMCwxMjIsNDUsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwKLSAgICAxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSw0NiwKLSAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsCi0gICAgMTE0LDYyLDEyMiwxOCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjMsMzMsMTE0LDEyNSwzMiwKLSAgICAzNSwzMiwxMjMsMzMsMTE0LDEyNSw3MCw0MSw5LDExNCwyMTUsMCwwLDAsMTE0LDc4LAotICAgIDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNjcsMCwKLSAgICAwLDAsMTE0LDc5LDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LDE3MCwwLDAsCi0gICAgMCwxMTQsMjE2LDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLDExNCw4MCwwLAotICAgIDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDExNCw4MSwwLDAsMCwyMjcsMiwwLDAsMTE1LAotICAgIDE4LDAsMCwwLDAsMSwzLDEsOSwxLDI1LDEsMywxLDE3LDEsCi0gICAgMTMsMSw4LDIsMjYsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsCisgICAgMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsCisgICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwKKyAgICAxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsCisgICAgNTcsMCwwLDAsMjE4LDksMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTQsCisgICAgNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLAorICAgIDExNCw3OCwwLDAsMCw0MSwxLDExNCw3OSwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDIxOCwyNCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAorICAgIDI0NiwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDksCisgICAgMSwxMjIsNTAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3OSwKKyAgICAwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDc5LDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyNDQsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTQsODQsMCwwLDAsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKKyAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCisgICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAorICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCisgICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAorICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCisgICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKKyAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAorICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAorICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAorICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKKyAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAorICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAorICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKKyAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCisgICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKKyAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKKyAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCisgICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCisgICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKKyAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAorICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAorICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKKyAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAorICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCisgICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKKyAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCisgICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAorICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCisgICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCisgICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAorICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKKyAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKKyAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKKyAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKKyAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCisgICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKKyAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCisgICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKKyAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCisgICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAorICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCisgICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAorICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAorICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCisgICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKKyAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKKyAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAorICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCisgICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCisgICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKKyAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCisgICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCisgICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCisgICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKKyAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKKyAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAorICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKKyAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKKyAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCisgICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAogICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNzgsNDEsNiwxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCwKLSAgICA1OCwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw4MSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMjEzLDAsMCwwLDIxNCwyLDAsMCwKLSAgICAxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMjEzLDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDgsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCi0gICAgNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsMTAwLDEzLDAsCi0gICAgMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LDAsMTAwLDE3LAotICAgIDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDExLDAsCi0gICAgMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLDAsOTAsCi0gICAgMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsCi0gICAgOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwxMDEsOTksMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwzMiw5Nyw5OCwKLSAgICAxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwKLSAgICAzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsMzIsOTcsMTE1LAotICAgIDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsCi0gICAgMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTYsCi0gICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsMTA1LDExNSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsMzIsMzIsODQsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTQsCi0gICAgMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsCi0gICAgMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsMTEwLDEwMSwxMTUsCi0gICAgMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsCi0gICAgMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTAxLDEwMCwKLSAgICAzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LDExMSw5OSw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTksMTA0LDEwNSwKLSAgICA5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsMzIsODcsMTA0LAotICAgIDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwxMTUsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMzIsMTE5LAotICAgIDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOTYsMzIsMTA1LAotICAgIDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDk3LDMyLAotICAgIDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwzNCwzMiwKLSAgICAxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSw5OSw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsOTUsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwKLSAgICAzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsOTksOTcsOTksCi0gICAgMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICA0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LDEwLDMyLDMyLAotICAgIDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwzMiwxMTYsMTExLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LAotICAgIDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsCi0gICAgMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsMzIsMTA1LAotICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzIsMTExLAotICAgIDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwxMTUsMzIsMTE2LAotICAgIDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsOTgsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsMTAxLDExNiw0NCwKLSAgICAzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsCi0gICAgMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywxMDEsNDUsNDUsCi0gICAgOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwxMDcsOTcsMTAzLAotICAgIDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LDk3LDEyMSw0MSwKLSAgICAzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICA0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICAxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE5LDEwNSwxMDgsCi0gICAgMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwxMjEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiw5Nyw4MCw5NywKLSAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDgwLAotICAgIDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsMzIsCi0gICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsMzIsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksCi0gICAgMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LDk3LDExNiwxMDEsCi0gICAgMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDMsMCwwLAotICAgIDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LAotICAgIDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLDAsOTUsMiwKLSAgICAwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwxMTQsNDgsMCwKLSAgICAxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LDQsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsMCw5NSw2LAotICAgIDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDY3LDAsMCwwLAotICAgIDExNCwxNzAsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjE5LDAsMCwwLDIxOCwKLSAgICAyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LAotICAgIDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLDk1LDExNSwxMDEsCi0gICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSw5OSw5Nyw5OSwKLSAgICAxMDQsMTAxLDEwMCw0MSw2LDExNCw3MSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LAotICAgIDE3MCwwLDAsMCwxMTQsMjE4LDAsMCwwLDExNCwyMTksMCwwLDAsMTE0LDIyMCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsMjIsMywwLDAsMTE1LDE0LDAsMCwwLAotICAgIDAsMiw5LDEsOSwxLDksMSw5LDEsMjEsMyw5LDEsMTIyLDE5LAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKLSAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsMTUzLDAsMCwwLDEwMCwxLDAsCi0gICAgMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsMiwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMTAzLDIsMCwxMjUsMSwKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDc5LDAsCi0gICAgMTI0LDEsMCwxMDYsNCwwLDEwMCwzLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTEwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMjIsMCwxMjQsMSwwLDEwNiw0LAorICAgIDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwKKyAgICAxMDEsMTIwLDExMiwxMTQsNjIsMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMjcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsMTUsMCwwLDAsMTE0LDI4LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCisgICAgOTksMCwwLDAsMTE0LDEwNSwwLDAsMCw0MSwzLDExNCwxOSwwLDAsMCwKKyAgICAxMTQsMjksMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwwLDAsMCw2NSwxLAorICAgIDAsMCwxMTUsMTgsMCwwLDAsMCwxLDMsMSw5LDEsMjUsMSwzLAorICAgIDEsMTcsMSwxMywxLDgsMiwyNiwyLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLAorICAgIDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLDAsCisgICAgMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDIsMCwwLDAsNTIsCisgICAgMSwwLDAsMTE1LDYsMCwwLDAsMTIsMiwxMiw0LDEyLDcsMTE0LDEwMiwKKyAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICA4LDAsMCwwLDY0LDAsMCwwLDExNSwxNzIsMCwwLDAsMTAxLDAsMCwKKyAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAorICAgIDIsMCwxMDAsMywwLDEwMCw0LDAsMTAwLDMsMCwxMDAsNSwwLDEwMCwzLAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDMsOTAsNCwwLDEwMCw4LDAsCisgICAgMTAwLDksMCwxMzIsMCwwLDkwLDUsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsCisgICAgMCwwLDkwLDYsMCwxMDEsNywwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLAorICAgIDAsMTMxLDEsMCw5MCw4LDAsMTAxLDgsMCwxMDYsOSwwLDEwMCwxNCwwLAorICAgIDEwMCwxMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsCisgICAgMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywKKyAgICAwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMSwwLAorICAgIDEwMSwxMSwwLDEwNiw5LDAsMTAwLDE5LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsCisgICAgMSwwLDkwLDExLDAsMTAwLDMsMCw4Myw0MSwyMCwyMTgsMTAsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsMCw4NCwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTExLAorICAgIDExNCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsCisgICAgMTAxLDk5LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMzIsOTcsOTgsMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDYsMzIsMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwzMiwxMDAsOTcsMTE2LDk3LAorICAgIDMyLDk3LDExNSwxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDExMCw5OSwKKyAgICAxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ0LDMyLDExNywKKyAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LAorICAgIDExMCw5NywxMDksMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsOTcsOTgsMTE1LAorICAgIDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsCisgICAgMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDEsMTE0LDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwxMTYsMTAxLDExNCwxMDksMTA1LAorICAgIDExMCwxMDEsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiwKKyAgICA5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLDExNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTAsMTExLDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksCisgICAgMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw5NiwzMiwxMDUsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLDEwMCwzMiw5OCwxMjEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSw5NywKKyAgICAxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ2LDMyLAorICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDUsCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLDExMSwxMTQsMTA1LDEwMywxMDUsCisgICAgMTEwLDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LDEwNCw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDk2LDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsMTExLDExNCwxMDUsMTAzLDEwNSwKKyAgICAxMTAsMzQsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LDMyLDk3LDMyLDEwOCwxMTEsCisgICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLDMyLDg3LDEwNCwxMDEsMTEwLAorICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwxMTcsMTAxLDQ0LDMyLDk2LAorICAgIDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLDQ2LDMyLDMyLDczLDExNiwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwxMTUsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDEwMCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAorICAgIDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEwNSwxMDEsCisgICAgMTE1LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLAorICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTUsCisgICAgMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsMTE1LAorICAgIDEwMSwxMTYsNDQsMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE1LAorICAgIDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDg0LDExNCwxMTcsCisgICAgMTAxLDQ1LDQ1LDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTExLDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODAsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDQwLDEwOSwKKyAgICA5NywxMjEsNDEsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLDExMSwxMTAsNDUsNzgsMTExLAorICAgIDExMCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsMzIsOTYsMTE1LDExNyw5OCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAorICAgIDExOSwxMDUsMTA4LDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExMCwxMDgsCisgICAgMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwxMTUsMTAxLDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDc3LDEwMSwxMTYsCisgICAgOTcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCwKKyAgICA5OSw0Niw4MCw5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTIxLAorICAgIDMyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTEwLDk5LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMjE4LDYsMTExLDExNCwKKyAgICAxMDUsMTAzLDEwNSwxMTAsNzgsMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE1LDExNiwKKyAgICA5NywxMTYsMTAxLDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKKyAgICAzLDAsMCwwLDMsMCwwLDAsNiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw3OSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCisgICAgMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTI0LDMsMCwxMjQsMCwKKyAgICAwLDk1LDIsMCwxMjQsNCwwLDEyNCwwLDAsOTUsMywwLDEyNCw1LDAsCisgICAgMTE0LDQ4LDAsMTAzLDAsMCwxMTAsMywwLDEwMCwwLDAsMTI0LDAsMCw5NSwKKyAgICA0LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDEyNCwwLAorICAgIDAsOTUsNiwwLDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwKKyAgICAwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsCisgICAgMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsCisgICAgOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLAorICAgIDk1LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw0MSw2LDExNCwxOSwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTA5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxMTYsMSwwLDAsMTE1LDE0LAorICAgIDAsMCwwLDAsMiw5LDEsOSwxLDksMSw5LDEsMjEsMyw5LAorICAgIDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQ3LDAsMCwwLAorICAgIDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsCisgICAgMiwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMTAzLDIsCisgICAgMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMCwwLDEwNyw5LDAsCisgICAgMTE0LDc2LDAsMTI0LDEsMCwxMDYsNCwwLDEwMCwzLDAsMTA2LDAsMCwxMjQsCisgICAgMCwwLDEwNiwzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDAsMCwxMDYsCisgICAgNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTE2LDAsMTI0LDEsMCwxMDYsNCwKICAgICAwLDEwMCw0LDAsMTA2LDAsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEsMTEwLDAsMCwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwKLSAgICAxMDYsNiwwLDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsCi0gICAgMTIzLDMzLDExNCwxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsCi0gICAgMTI1LDQwLDEyMywxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNDcsMCwwLDAsCi0gICAgMTE0LDY3LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIxOCwwLDAsMCwyMTgsCi0gICAgNiw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDExNCwyMjEsMCwwLDAsMjE4LDksOTUsOTUsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsOTUsOTUsMTE0LDU3LDAsMCwwLDExNCwyNiwwLDAsCi0gICAgMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDEwMSwwLDAsCi0gICAgMCwzNCwzLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDE1LDEsMjEsMSwKLSAgICAxNSwxLDI4LDEsMTUsMSwxMiwxLDE2LDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDE0NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LAotICAgIDIsMCwxMjEsMTA3LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAxMDYsMiwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsCi0gICAgMSwwLDEwNiwzLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDIsMCwxMjQsMSwKLSAgICAwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNCwwLAotICAgIDEyNCwxLDAsMTA2LDQsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTI0LDEsMCwxMDYsNSwwLDEwNywyLDAsODMsODcsMTEwLDIyLDAsCi0gICAgNCwxMTYsNiwwLDEwNywxMCwwLDExNCwxNDAsMCwxLDEsMSwxMDAsMSwwLAotICAgIDgzLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsCi0gICAgMTE0LDIyMSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsCi0gICAgMjE4LDAsMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsCi0gICAgMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwyMTAsMCwwLDAsNDEsCi0gICAgMywxMTQsNzEsMCwwLDAsMjE4LDUsMTExLDExNiwxMDQsMTAxLDExNCwyMTgsNCwxMTUsCi0gICAgMTA5LDExNSwxMDgsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSw0NCwzLDAsMCwxMTUsMjAsCi0gICAgMCwwLDAsMCwxLDksMSwzLDEsMTgsMSwxOCwxLDE4LDEsMTUsCi0gICAgMSwxOCwxLDIwLDEsMTMsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywKLSAgICAxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE1OCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwxMDcsOCwwLAotICAgIDExNCwxNTEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICAxNTEsMCwxMjQsMCwwLDEwNiwyLDAsMTE0LDE1MSwwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDMsMCwxMTYsNCwwLDExNiw1LDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNCwxMTIsMCwxMjEsMTksMCwxMTYsNiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCw4NywxMTMsMTQ1LDAsNCwKLSAgICAxMTYsNywwLDEwNywxMCwwLDExNCwxMDgsMCwxLDEsMSw4OSwxMTMsMTQ1LDAsCi0gICAgODgsMTEzLDE0OCwwLDEyNCwxLDAsMTA2LDMsMCwxMTYsNCwwLDExNiw4LDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNCwxNDgsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgMCwwLDExMywxNDgsMCwxMTMsMTUxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsODMsNDEsMSw3OCw0MSw5LDExNCwyMjMsMCwwLDAsMTE0LDIxOCwwLDAsCi0gICAgMCwxMTQsMjIyLDAsMCwwLDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsCi0gICAgMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsMTM1LDAsMCwwLDExNCwxMzIsMCwwLAotICAgIDAsMTE0LDEyMywwLDAsMCwyMTgsMTcsNjYsODksODQsNjksNjcsNzksNjgsNjksCi0gICAgOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDEzMSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMjI2LDAsMCwwLDU2LDMsMCwwLDExNSwyMiwwLAotICAgIDAsMCwwLDIsMTUsMSwyNCwxLDksMSwyMSwxLDMsMSwxOSwxLAotICAgIDEzLDEsOCwxLDIxLDEsMTgsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA4MywxMTIsMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDEsMTE0LDIyMywwLDAsMCw0MSwyLDExNCw3MSwKLSAgICAwLDAsMCwxMTQsMjI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwyMjYsMCwwLDAsNzAsMywwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDM1LDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwKLSAgICAzLDAsMjUsODMsMTI0LDAsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsCi0gICAgNCwxMjIsMzIsODQsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDQ2LDc4LDExNCwxMTYsMCwwLDAsMTE0LDg0LDAsMCwwLDQxLDMsCi0gICAgMTE0LDIyMSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLAotICAgIDEsMTE0LDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsNzQsMywwLAotICAgIDAsMTE1LDYsMCwwLDAsMCwzLDE1LDEsMjAsMiwxMjIsMTcsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsCi0gICAgNDEsMSw3OCw0MSwxLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsNzEsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDIyNywwLDAsMCw4MiwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsCi0gICAgMTIyLDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LAotICAgIDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsCi0gICAgMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsCi0gICAgMTA4LDExNCwyMjIsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMjE4LDUsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwyMjcsMCwwLDAsODYsMywwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwyLDQxLDEyLDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAotICAgIDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDEwMSwKLSAgICAwLDAsMCwxMTQsMjMwLDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLDExMiwxMDEsMTE0LAotICAgIDExNiwxMjEsMTE0LDIyNiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsMTAxLDExNCwxMTQsCi0gICAgMjM0LDAsMCwwLDExNCwyMjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxNywwLAotICAgIDAsMCwyNDEsMiwwLDAsMTE1LDIwLDAsMCwwLDEyLDM1LDYsMiwxNSwKLSAgICAxLDE1LDExLDEyLDEwLDEyLDEyLDE4LDE0LDIxLDQsMTgsOCwxOCw0LDExNCwKLSAgICAyMTcsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsMjIwLDAsMCwwLDk5LDIsCi0gICAgMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDE1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxOTMsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEwMCwxLAotICAgIDAsMTMxLDIsMCwxMTQsODMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwKLSAgICAxMTQsNDMsMCwxMTYsMSwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDEsODMsMTI0LDMsMCwxMTQsNTUsMCwxMDMsMCwwLDExMCwzLDAsMTAwLAotICAgIDIsMCwxMjUsNCwwLDExNiwxLDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLAotICAgIDAsMTAwLDQsMCwxMjQsNCwwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwKLSAgICAwLDEwNyw4LDAsMTE0LDE2OCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLAotICAgIDEzMSwyLDAsMTE0LDE1OSwwLDEyMSwxOSwwLDEyNCwxLDAsMTA2LDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTI1LDMsMCw4NywxMTMsMTY1LDAsNCwxMTYsMywwLAotICAgIDEwNywxMCwwLDExNCwxNTUsMCwxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksCi0gICAgMTEzLDE2NSwwLDg4LDExMywxNjgsMCwxMDAsNiwwLDEyNSwzLDAsMTEwLDAsMCwKLSAgICAxMTYsNCwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNywwLDEyNCwyLDAsMTAwLAotICAgIDUsMCwxMjQsMywwLDEzMSwyLDIsODMsNDEsOCwxMjIsNTMsODIsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSwKLSAgICA5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwKLSAgICAxMTcsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMTE1LDQ2LDIxOCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCi0gICAgNzgsMTE0LDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwyMjAsMCwwLDAsCi0gICAgNzAsMTE0LDIxOCwwLDAsMCw0MSw1LDExNCw2MCwwLDAsMCwyMTgsMjMsMTE1LAotICAgIDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMjIwLDAsMCwwLDExNCwxNTQsMCwwLDAsCi0gICAgMTE0LDIxNywwLDAsMCw0MSw1LDExNCw2NywwLDAsMCwxMTQsMTcwLDAsMCwKLSAgICAwLDExNCwyMTgsMCwwLDAsMTE0LDIyMCwwLDAsMCw5MCw2LDExNSwxMDEsOTcsCi0gICAgMTE0LDk5LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsMTc0LDAsMCwwLDkxLDMsMCwwLDExNSwyOCwwLDAsMCwKLSAgICAwLDIsMTUsMSwxMiwxLDE2LDEsMTgsMSwxNSwxLDcsMiwxMiwxLAotICAgIDE1LDEsMywxLDE5LDEsMTMsMSwxNCwzLDksMiwxMTQsMTc0LDAsMCwKLSAgICAwLDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCw5OSwyLDAsMCwwLAotICAgIDIsMCwwLDAsOSwwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMTEwLDEsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsOCwwLDExNCw3OSwKLSAgICAwLDEwMCwyLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwyLDAsMTAwLDMsMCwKLSAgICAxMzEsMiwwLDExNCw3OSwwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTI1LDEsMCw4NywxMTMsNzYsMCw0LDExNiwyLDAsCi0gICAgMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEzLDc2LDAsODgsMTEzLDc5LAotICAgIDAsMTEwLDAsMCwxMTYsMywwLDEyNCwwLDAsMTI0LDIsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsMCw5NSwKLSAgICA0LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIwMywwLDEyMCw3OSwKLSAgICAwLDExNiw1LDAsMTMxLDAsMCw2OCw5Myw2MSwwLDkyLDIsMCwxMjUsNSwKLSAgICAwLDEyNSw2LDAsMTI0LDEsMCwxMDYsNiwwLDExNiw3LDAsMTI0LDYsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTE0LDEzMSwwLDEyNCw1LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsOTUsOCwKLSAgICAwLDgwLDExMywxMzEsMCwxMTMsMTMxLDAsODcsMTAwLDEsMCw4MywxMTAsMCwwLAotICAgIDEyNCwzLDAsMTE2LDksMCwxMDcsOCwwLDExNCwzOCwxLDExNiwwLDAsMTI0LAotICAgIDIsMCwxMDAsNiwwLDEzMSwyLDAsMTE0LDQ3LDEsMTIxLDE5LDAsMTI0LDIsCi0gICAgMCwxMDYsMTAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMTgsCi0gICAgMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDEzLDEsMSwxLDEsODksMTEzLAotICAgIDM1LDEsODgsMTI0LDcsMCwxMTQsMzUsMSwxMDMsMCwwLDEyNCw0LDAsOTUsCi0gICAgMTEsMCwxMTMsMzUsMSwxMTMsNDcsMSwxMTAsOSwwLDEyNCwzLDAsMTI0LDQsCi0gICAgMCw5NSwxMSwwLDEyNCw0LDAsMTA2LDExLDAsMTAzLDAsMCwxMDcsMiwwLAotICAgIDExNCwxMDYsMSwxMjQsMSwwLDExNCwxMDYsMSwxMTYsMTIsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTAwLDcsMCwyNSwxMjUsOCwwLDEyNCw0LDAsMTA2LDExLDAsMTA2LAotICAgIDEzLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEwNiwxLDExMCwwLDAsMTI0LAotICAgIDQsMCw4Myw0MSw4LDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLAotICAgIDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLAotICAgIDEwOCwxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKLSAgICAxMjEsMzIsMTEyLDk3LDExNiwxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwKLSAgICAxMTcsMTAyLDEwMiwxMDUsOTksMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsCi0gICAgMTA0LDMyLDEwNSwxMTYsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LAotICAgIDEwNSwxMTUsMTAxLDMyLDExNywxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsCi0gICAgMTE2LDEwMSwxMDksNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsCi0gICAgMTIxLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsCi0gICAgMTE5LDExMCw2MiwxMTQsMjM5LDAsMCwwLDExNCwyMTgsMCwwLDAsODQsMTE0LDIyMCwKLSAgICAwLDAsMCwxMTQsODQsMCwwLDAsNDEsMTQsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAyMzksMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMjE3LDAsMCwwLDExNCwyMjIsCi0gICAgMCwwLDAsMjE4LDI3LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LAotICAgIDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKLSAgICAxMTQsMjMxLDAsMCwwLDExNCwyMzIsMCwwLDAsMTE0LDE3MCwwLDAsMCwyMTgsCi0gICAgOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMjIwLDAsMCwwLDExNCwKLSAgICAyMjEsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwyMjQsMCwwLDAsNDEsOSwKLSAgICAxMTQsNjcsMCwwLDAsMjE4LDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LAotICAgIDE3MCwwLDAsMCwxMTQsMjIxLDAsMCwwLDExNCwxNzgsMCwwLDAsMjE4LDEyLAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsMTE0LDEyNiwwLDAsCi0gICAgMCwxMTQsMjIwLDAsMCwwLDkwLDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI0MCwKLSAgICAwLDAsMCwxMTYsMywwLDAsMTE1LDYwLDAsMCwwLDAsMTIsMTIsNCwKLSAgICA2LDEsMTUsMiwzLDEsMTksMSwxMywxLDExLDgsMjEsMSw5LDMsCi0gICAgMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsOCwyLDcsMywxMiwyLAotICAgIDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsNiwxLDE4LDIsOSwxLAotICAgIDE1LDEsNiwxLDE2LDEsMjIsMiwxMTQsMjQwLDAsMCwwLDk5LDMsMCwKKyAgICAxMzEsMSwwLDEsMTAwLDUsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDYsMCwKKyAgICAxMDYsNywwLDEwMCw2LDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLAorICAgIDIsMCw4Myw0MSw3LDc4LDEyMiw5LDExMCw5NywxMDksMTAxLDYxLDEyMywzMywxMTQsCisgICAgMTI1LDEyMiwxMSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDEyMywzMywxMTQsMTI1LDEyMiwxMSwKKyAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMjksMTE1LDExNyw5OCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDYxLDEyMywxMjUsMTIyLDYsMTIzLDEyNSw0MCwxMjMsCisgICAgMTI1LDQxLDEyMiwyLDQ0LDMyLDQxLDksMTE0LDUwLDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwyMTgsNiw5NywxMTIsCisgICAgMTEyLDEwMSwxMTAsMTAwLDExNCwxMTAsMCwwLDAsMjE4LDksOTUsOTUsOTksMTA4LDk3LAorICAgIDExNSwxMTUsOTUsOTUsMTE0LDEsMCwwLDAsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLAorICAgIDIsMTE0LDE5LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTIsMCwwLDAsMTI4LAorICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMTUsMSwyMSwxLDE1LDEsCisgICAgMjUsMSwxNSwxLDEyLDEsMTMsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLAorICAgIDEyMSwxMDcsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywKKyAgICAyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEwNiwyLAorICAgIDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsCisgICAgMTA2LDMsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LAorICAgIDAsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsCisgICAgMCwxMDYsNCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDUsMCwKKyAgICAxMjQsMSwwLDEwNiw1LDAsMTA3LDIsMCw4Myw4NywxMTAsMjIsMCw0LDExNiwKKyAgICA2LDAsMTA3LDEwLDAsMTE0LDE0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCisgICAgMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsMTEwLAorICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTYsMCwwLDAsNDEsMywxMTQsCisgICAgMTksMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LDEwOSwxMTUsCisgICAgMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTM4LDEsMCwwLDExNSwyMCwwLDAsCisgICAgMCwwLDEsOSwxLDMsMSwxOCwxLDE4LDEsMTgsMSwxNSwxLDE4LAorICAgIDEsMjAsMSwxMywxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCisgICAgOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4NSwwLAorICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw3OCwKKyAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDc4LDAsCisgICAgMTI0LDAsMCwxMDYsMiwwLDExNCw3OCwwLDExNiwzLDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCw1NywwLDExNiw0LDAsMTMwLDEsMCwxMTYsMywwLDEwNiw1LAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwwLDAsCisgICAgMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsNzgsNDEsNiwxMTQsMTEyLDAsMCwKKyAgICAwLDExNCwxMDcsMCwwLDAsMTE0LDExMSwwLDAsMCwyMTgsMTksOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwKKyAgICAyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTYsMCwwLDAsMTUwLDEsMCwKKyAgICAwLDExNSwxMiwwLDAsMCwwLDIsMTUsMSwyNCwxLDEyLDEsNiwxLAorICAgIDIxLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKKyAgICAxLDExNCwxMTIsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDExNiwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTE2LDAsMCwwLDE1OSwxLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzUsMCwxMjQsMCwwLDEwNiwxLDAsCisgICAgMTA2LDIsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDMsMCwyNSw4MywxMjQsMCwKKyAgICAwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsCisgICAgNDYsMTE0LDMzLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTUsMCwKKyAgICAwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsCisgICAgMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTYzLDEsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsMywxNSwxLDIwLDIsMTIyLDE3LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLAorICAgIDEsNzgsNDEsMSwxMTQsMTExLDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMTcsMCwwLDAsMTcxLDEsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsCisgICAgMjMsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDEwNCw5NywxMTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxLAorICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsOTgsMTExLDExMSwxMDgsCisgICAgMTE0LDExMSwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwyMTgsNSwxMTgsOTcsCisgICAgMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMTE0LDExNywwLDAsMCwxNzUsMSwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLAorICAgIDAsMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsNTIsMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwxMTYsCisgICAgMTIxLDExNCwxMTYsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LDEwMSwxMTQsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsMTE3LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTA2LDAsMCwKKyAgICAwLDc5LDEsMCwwLDExNSwyMCwwLDAsMCwxMiwzNSw2LDIsMTUsMSwKKyAgICAxNSwxMSwxMiwxMCwxMiwxMiwxOCw5LDIxLDQsMTgsOCwxOCw0LDExNCwxMDYsCisgICAgMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDk5LDIsMCwKKyAgICAwLDAsMiwwLDAsMCw2LDAsMCwwLDE1LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMTcsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEwMCwxLDAsCisgICAgMTMxLDIsMCwxMTQsMTEwLDAsMTE2LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LAorICAgIDMzLDAsMTE2LDIsMCwxMzAsMSwwLDExNiwxLDAsMTA2LDMsMCwxMjUsNCwKKyAgICAwLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw3MCwwLDEyNCw0LDAsCisgICAgMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTMxLDEsMSw4MywxMjQsMywwLAorICAgIDExNCw4MiwwLDEwMywwLDAsMTEwLDMsMCwxMDAsMiwwLDEyNSw1LDAsMTI0LAorICAgIDQsMCwxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMDAsNCwwLDEyNCw1LAorICAgIDAsMTMxLDEsMiw4MywxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTkyLAorICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEwMCw1LDAsMTMxLDIsMCwxMTQsMTg2LDAsCisgICAgMTIxLDE5LDAsMTI0LDEsMCwxMDYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsCisgICAgMywwLDg3LDExMywxOTIsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE4MiwwLAorICAgIDEsMSwxLDEwMCwyLDAsMTI1LDMsMCw4OSwxMTMsMTkyLDAsODgsMTEwLDYsCisgICAgMCwxMDAsNiwwLDEyNSwzLDAsMTE2LDYsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgMTAwLDcsMCwxMjQsMiwwLDEwMCw1LDAsMTI0LDMsMCwxMzEsMiwyLDgzLAorICAgIDQxLDgsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwzMiwxMTgsOTcsMTE0LDEwNSwxMTEsMTE3LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5MCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwKKyAgICAwLDAsMTE0LDEwOSwwLDAsMCw3MCwxMTQsMTA3LDAsMCwwLDQxLDcsMTE0LAorICAgIDQsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLDIxOCwyMywKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMDksMCwwLDAsMTE0LDc3LDAsMCwKKyAgICAwLDExNCwxMDYsMCwwLDAsNDEsNiwxMTQsMTUsMCwwLDAsMTE0LDk5LDAsCisgICAgMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAwLDkwLDYsMTE1LDEwMSw5NywxMTQsOTksMTA0LDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NSwwLDAsMCwxODAsMSwwLAorICAgIDAsMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDEyLDEsNiwxLDksMiwKKyAgICAxMiwxLDE2LDEsMTgsMSwxNSwxLDcsMiwxMiwxLDE1LDEsMywxLAorICAgIDE5LDEsMTMsMSwxNCwzLDYsMiwxMTQsODUsMCwwLDAsOTksMywwLAogICAgIDAsMCwwLDAsMCwwLDgsMCwwLDAsNTMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDEyNCwxLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMCwwLDExNSwxMTgsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAogICAgIDEyNSwzLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwzMywKICAgICAwLDEsMSwxLDg5LDExMCwxNywwLDg4LDEyNCwzLDAsMTAwLDAsMCwxMDcsCiAgICAgOSwwLDExNCw1MCwwLDEyNCwzLDAsODMsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwOCwwLDEyMSwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMywxMDgsMCw0LDExNiwKLSAgICAxLDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMywxMDgsMCw4OCwKLSAgICAxMTAsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsNSwwLDg3LAotICAgIDExMCwyNCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMTQ3LDAsMSwxLDEsCi0gICAgMTAwLDAsMCwxMjUsNSwwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDIyNCwwLDEyNCw1LDAsMTAwLDAsMCwxMDcsOCwwLAotICAgIDExNCwyMTUsMCwxMjEsMTMsMCwxMjQsMSwwLDEwNiw1LDAsMTI1LDIsMCw4NywKLSAgICAxMTMsMjIxLDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwyMTEsMCwxLDEsMSwKLSAgICAxMDAsMCwwLDEyNSwyLDAsODksMTEzLDIyMSwwLDg4LDExMywyMjQsMCwxMjQsNSwKLSAgICAwLDEyNSwyLDAsMTEwLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsCi0gICAgMTI1LDYsMCw4NywxMTAsMjQsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDcsCi0gICAgMSwxLDEsMSwxMDAsMCwwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsCi0gICAgMTksMCwxMTYsNywwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LAotICAgIDAsODcsMTEwLDI0LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCw1MywxLDEsCi0gICAgMSwxLDEwMCwwLDAsMTI1LDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsCi0gICAgMTI0LDQsMCwxMjQsMSwwLDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwKLSAgICAzLDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDkzLDEsMTAwLDIsCi0gICAgMCwxMTAsMywwLDEwMCwzLDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsCi0gICAgMTI0LDMsMCw5NSwxMSwwLDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwKLSAgICAzLDAsODMsNDEsNCw3OCwxMTQsMjE4LDAsMCwwLDcwLDg0LDQxLDEzLDExNCwKLSAgICAyMDksMCwwLDAsMTE0LDIxMCwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDIwNSwKLSAgICAwLDAsMCwxMTQsMjExLDAsMCwwLDkwLDcsOTUsNzksODIsNzMsNzEsNzMsCi0gICAgNzgsMjE4LDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDIxOCw0LDEwOCwKLSAgICAxMDUsMTE1LDExNiwyMTgsOCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTQsMjE3LDAsCi0gICAgMCwwLDExNCwyMjIsMCwwLDAsMTE0LDIyNiwwLDAsMCwxMTQsMjIxLDAsMCwKLSAgICAwLDQxLDgsMTE0LDE4MCwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMTgsMCwKLSAgICAwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDI0MywwLDAsCi0gICAgMCwxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE3LDk1LDExNSwxMTIsMTAxLAotICAgIDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxODAsMywwLAotICAgIDAsMTE1LDcyLDAsMCwwLDAsMiwzLDEsMTMsMSwxMywxLDUsMiwKLSAgICAxMiwxLDQsMiw5LDEsMTIsMSwzLDEsMTMsMSwxMywyLDgsMSwKLSAgICAzLDEsMTMsMSwxMywxLDExLDEsMTIsMSwxMiwxLDMsMSwxMywxLAotICAgIDEzLDEsMTQsMiw5LDEsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwKLSAgICAxOSwxLDEzLDEsMTEsMiwyMSwxLDI3LDEsOSwxLDksMSwxMTQsMjQ4LAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDYsMCwwLDAsNjQsMCwwLDAsMTE1LDE0MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMDAsOCwwLAotICAgIDEwMCw5LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMiw5MCw2LDAsMTAwLAotICAgIDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCw3LDAsMTAwLDE0LDAsMTAwLDE1LAotICAgIDAsMTMyLDAsMCw5MCw4LDAsMTAwLDE2LDAsMTAwLDE3LDAsMTMyLDAsMCwKLSAgICA5MCw5LDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwKLSAgICAyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMjIsMCwxMDAsMjMsCi0gICAgMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDI0LDAsODMsNDEsMjUsMTE0LDE3NSwwLAotICAgIDAsMCwxMjIsNzcsNjcsMTExLDExMCwxMTgsMTAxLDExMCwxMDUsMTAxLDExMCw5OSwxMDEsMzIsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMzIsOTcsMTE0LDExMSwxMTcsMTEwLDEwMCwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDMyLDExNiwxMTEsMzIsMTEyLAotICAgIDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDQ1LDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDk5LDEwLDMyLDMyLDMyLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMSwwLDEyNCwwLAotICAgIDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwxLDExNCwxNzgsMCwKLSAgICAwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMjMyLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjEsOTUsCi0gICAgODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDMwLDAsMTAwLDIsMCwxMTAsNiwwLDEyNCwxLDAsMTA2LAotICAgIDEsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LAotICAgIDAsMTE0LDEwNCwwLDEyNCwxLDAsMTA2LDMsMCwxMDAsMSwwLDEwNyw4LDAsCi0gICAgMTE0LDgyLDAsMTAwLDMsMCwxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCw4MywKLSAgICAxMDAsNCwwLDEwNiw0LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLAotICAgIDIsMCw4MywxMTAsNTAsMCwxMjQsMSwwLDEwNiw1LDAsMTE0LDEzMiwwLDEwMCwKLSAgICA1LDAsMTA2LDQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LDIsMCwxMzEsMiwKLSAgICAwLDgzLDEwMCw2LDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDEsCi0gICAgMCwxMDYsMiwwLDEzMSwyLDAsODMsMTAwLDEsMCw4Myw0MSw3LDEyMiwzOCwKLSAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwKLSAgICAxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCwyMDcsMCwwLDAsMTIyLDEzLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwyMCw2MCwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMzMsMTE0LDEyNSw0MSwKLSAgICA2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCw2MCwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LDQxLDYyLDQxLDYsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDIxOCwwLDAsMCwxMTQsCi0gICAgMTcwLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMjI3LDAsMCwwLDQxLDMsCi0gICAgMTE0LDcxLDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDYsCi0gICAgMCwwLDAsMjM1LDMsMCwwLDExNSwxOCwwLDAsMCwwLDMsOSwxLAotICAgIDMwLDEsMTUsMSwxNSwxLDEzLDIsMjIsMiw5LDEsMTksMiwxMjIsMjQsCi0gICAgOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjE4LDksOTUsMTExLDExOCwxMDEsMTE0LDExNCwKLSAgICAxMDUsMTAwLDEwMSw3MCwyMTgsMTEsOTUsMTAyLDExMSwxMTQsOTksMTAxLDk1LDExMCw5NywxMDksCi0gICAgMTAxLDg0LDk5LDIsMCwwLDAsMiwwLDAsMCw2LDAsMCwwLDU5LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3NSwyLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI1LDQsMCwxMjQsMiwwLDExNSw0NSwwLDEyNCwzLDAsMTE1LDQ1LAotICAgIDAsMTE2LDEsMCwxMjQsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMywwLAotICAgIDEwMCwyLDAsMTA3LDgsMCwxMTQsODUsMCwxMjEsMTYsMCwxMjQsNCwwLDEwNiwKLSAgICAyLDAsMTI0LDEsMCw5NSwzLDAsODcsMTEzLDg1LDAsNCwxMTYsNCwwLAotICAgIDEwNywxMCwwLDExNCw4MSwwLDEsMSwxLDg5LDExMyw4NSwwLDg4LDExMCwwLAotICAgIDAsMTI0LDIsMCwxMTUsMTE1LDAsMTE2LDEsMCwxMjQsMSwwLDEwMCwzLDAsCi0gICAgMTAwLDIsMCwxMzEsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LAotICAgIDQsMCwxMDYsNSwwLDEyNSw1LDAsMTI0LDUsMCwxMDAsMiwwLDEwNyw4LAotICAgIDAsMTE0LDE4NCwwLDEyNCw0LDAsMTA2LDYsMCwxMDAsMiwwLDEwNyw5LDAsCi0gICAgMTE0LDE4NCwwLDExNiw3LDAsMTA2LDgsMCwxMTYsNywwLDEzMSwxLDAsMTI1LAotICAgIDUsMCwxMjQsNCwwLDEwNiw2LDAsMTI0LDUsMCw5NSw5LDAsMTEzLDE4NCwKLSAgICAwLDExMCwwLDAsMTIxLDEzLDAsMTI0LDUsMCwxMjQsMSwwLDk1LDEwLDAsCi0gICAgODcsMTEzLDIyMSwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMjE3LDAsMSwxLAotICAgIDEsODksMTEzLDIyMSwwLDg4LDExMCwwLDAsMTI0LDIsMCwxMTUsMjUxLDAsMTE2LAotICAgIDEsMCwxMjQsMSwwLDEwMCw0LDAsMTAwLDIsMCwxMzEsMywwLDEwMCwyLAotICAgIDAsMTA3LDgsMCwxMTQsMzUsMSwxMjEsMTYsMCwxMjQsNCwwLDEwNiwxMSwwLAotICAgIDEyNCwxLDAsOTUsMTIsMCw4NywxMTMsMzUsMSw0LDExNiw0LDAsMTA3LDEwLAotICAgIDAsMTE0LDMxLDEsMSwxLDEsODksMTEzLDM1LDEsODgsMTEwLDAsMCwxMjEsCi0gICAgMTMsMCwxMjQsNCwwLDEyNCwxLDAsOTUsMTMsMCw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDY4LDEsMSwxLDEsODksMTEwLDEsMCwKLSAgICA4OCwxMjQsMiwwLDExNSw5OSwxLDExNiwxLDAsMTI0LDEsMCwxMDAsNSwwLAotICAgIDEwMCwyLDAsMTMxLDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE1NywxLDEyNCwKLSAgICA0LDAsMTA2LDYsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDE1NywxLDEyMSwxNiwKLSAgICAwLDEyNCw0LDAsMTA2LDYsMCwxMjQsMSwwLDk1LDE0LDAsODcsMTEzLDE1NCwKLSAgICAxLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTUwLDEsMSwxLDEsODksMTEzLAotICAgIDE1NCwxLDg4LDExMywxNTcsMSwxMTAsMCwwLDEyNCw0LDAsMTA2LDE1LDAsMTE0LAotICAgIDcxLDIsMTI0LDIsMCwxMTUsMTk2LDEsMTE2LDEsMCwxMjQsMSwwLDEwMCw2LAotICAgIDAsMTAwLDIsMCwxMzEsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMjM2LDEsCi0gICAgMTIxLDE2LDAsMTI0LDQsMCwxMDYsMTYsMCwxMjQsMSwwLDk1LDE3LDAsODcsCi0gICAgMTEzLDIzNiwxLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMjMyLDEsMSwxLDEsCi0gICAgODksMTEzLDIzNiwxLDg4LDExMCwwLDAsMTI0LDIsMCwxMTUsMTAsMiwxMTYsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDcsMCwxMDAsMiwwLDEzMSwzLDAsMTAwLDIsMCwKLSAgICAxMDcsOCwwLDExNCw3MSwyLDEyNCw0LDAsMTA2LDE4LDAsMTAwLDIsMCwxMDcsCi0gICAgOSwwLDExNCw2OCwyLDEyMSwxNiwwLDEyNCw0LDAsMTA2LDE4LDAsMTI0LDEsCi0gICAgMCw5NSwxOSwwLDg3LDExMyw2NSwyLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsCi0gICAgNjEsMiwxLDEsMSw4OSwxMTMsNjUsMiw4OCwxMTMsNjgsMiwxMTMsNzEsMiwKLSAgICAxMTAsMCwwLDEwMCwyLDAsODMsNDEsOCw5NywyOSwyLDAsMCw4MywxMDEsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiw5NywKLSAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ1LDExNCwxMDEsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsCi0gICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiw0NiwzMiwzMiw3MiwKLSAgICAxMDEsMTE0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDEwNCwKLSAgICAxMTEsMTE5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNiwxMTYsMTE0LAotICAgIDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA5LDk3LDExMiwzMiwxMTEsMTEwLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNTgsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTEwLDk3LDEwOSwxMDEsMzIsNDUsCi0gICAgNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgOTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksNDYsMTA4LAotICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiw0NSw2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwKLSAgICA5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsNDUsCi0gICAgNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDk1LDk1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLAotICAgIDk5LDMyLDQ1LDYyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDExNSwxMTIsCi0gICAgMTAxLDk5LDk1LDk1LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExMiwKLSAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDU4LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTIsMTAxLDk5LDQ2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDMyLDQ1LDYyLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwzMiw0MCwKLSAgICAxMDUsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICA5NywxMTYsMTE2LDExNCwzMiwxMDUsMTE1LDMyLDExNiwxMTQsMTE3LDEwMSw0MSwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0Niw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDEwMCwzMiw0NSw2MiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw5NSw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDEwMCw5NSw5NSwzMiw0MCwxMDUsMTAyLDMyLDk1LDk1LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSw5NSwzMiw5NywxMDgsMTE1LDExMSwzMiwxMTUsMTAxLDExNiw0MSwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSw0NiwxMTUsMTE3LDk4LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwxMTUsMzIsNDUsNjIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsCi0gICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsNDAsMTA1LDEwMiwzMiwxMTUsMTAxLDExNiwKLSAgICA0MSwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsNTcsMCwwLDAsCi0gICAgNzgsMTE0LDIwNSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCi0gICAgMTAxLDk1LDk1LDExNCwyNDcsMCwwLDAsMTE0LDIxMSwwLDAsMCwxMTQsMjQ1LDAsCi0gICAgMCwwLDQxLDIwLDExNCwxNzgsMCwwLDAsMTE0LDYyLDAsMCwwLDExNCw2NywKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDIxMCwwLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDExNCwyMjEsMCwwLDAsMjE4LDE2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw3LDk1LDk1LDExMCwxMDEsMTE5LAotICAgIDk1LDk1LDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCwyMDUsMCwwLDAsMTE0LDIzNCwKLSAgICAwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCwyMDksMCwwLDAsMTE0LDI0NywwLAotICAgIDAsMCwxMTQsMjI3LDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIxMSwwLDAsCi0gICAgMCwxMTQsMjI2LDAsMCwwLDExNCwyNDUsMCwwLDAsNDEsNiwxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwyNTAsMCwwLAotICAgIDAsMTE0LDE3OCwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNywxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwxMTQsMTE1LDI1MSwzLDAsCi0gICAgMCwxMTUsODgsMCwwLDAsMCwxNyw5LDYsMTIsMSwyNCwxLDMsMSwKLSAgICAxNiwxLDEzLDEsOCwzLDMwLDEsOSwxLDEyLDIsMTUsMSwxNSwxLAotICAgIDE4LDEsMywxLDEzLDEsMTMsMSw4LDMsMzAsMSwzLDEsMTYsMSwKLSAgICAxMywxLDgsMywzLDEsMTMsMSwxMywxLDUsMywzMCwxLDE1LDEsCi0gICAgMywxLDE2LDEsMTMsMSwxMSwyLDksMiwzMCwxLDMsMSwxNiwxLAotICAgIDEzLDEsOCwzLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDEyMiwzMCwKLSAgICA5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LDExNCwxMTUsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTAxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwKLSAgICAwLDExNiwxLDAsMTI0LDEsMCwxMDYsMiwwLDEwMCwxLDAsMTMxLDIsMCwKLSAgICAxMTQsNDgsMCwxMjQsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDIsMCwxMTAsNiwwLDEwMCwyLDAsMTI1LDIsMCwxMjQsMiwKLSAgICAwLDEwMCwyLDAsMTA3LDgsMCwxMTQsODQsMCwxMTYsNCwwLDEyNCwxLDAsCi0gICAgMTA2LDUsMCwxMzEsMSwwLDEyNSwyLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICA2LDAsMTI0LDIsMCwxMzEsMSwwLDEsMTI0LDIsMCw4Myw0MSwzLDEyMiwKLSAgICAxNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsMTAxLDExOSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDUsMTE0LDEwMSwxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwKLSAgICAzMiw5NywxMTQsMTAxLDMyLDk3LDEwOCwxMTUsMTExLDMyLDExNSwxMDEsMTE2LDMyLDExOSwxMDUsCi0gICAgMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywKLSAgICAxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsCi0gICAgMTE1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwyMTgsMTMsOTksMTE0LDEwMSw5NywKLSAgICAxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDcsMTE0LDE3OCwwLDAsCi0gICAgMCwxMTQsNjAsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMCwxLDAsMCwKLSAgICAxMTQsNjgsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwyNTUsMCwwLDAsNDEsCi0gICAgMywxMTQsNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTgwLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKLSAgICA2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw3NSw0LDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMCw3LDksMiwxOCwzLDIxLDIsNiwxLDEyLDQsMTgsMSwxMywxLAotICAgIDEyMiwxOSw5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk5LAotICAgIDExNCwxMDEsOTcsMTE2LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsMTg5LDY4LDExMSwzMiwxMDEsMTE4LDEwMSwKLSAgICAxMTQsMTIxLDExNiwxMDQsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSw5OSwxMDEsMTE1LDExNSw5NywxMTQsCi0gICAgMTIxLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMTEsMTAyLDMyLDk2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE3LAotICAgIDExNSwxMDEsMTAwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTYsOTcsMTE0LDEwMywxMDEsCi0gICAgMTE2LDMyLDExMSwxMDIsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTExLDExMCw0NiwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwzOSwxMTUsMzIsOTYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsNDAsNDEsOTYsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMywxMTQsMTc4LDAsMCwwLDExNCwKLSAgICAxNzAsMCwwLDAsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDUsOTUsMTAxLAotICAgIDEyMCwxMDEsOTksOTgsNCwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwxOCwKLSAgICA5NSw4MywxMTIsMTAxLDk5LDc3LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDk1LDEwMSwxMjAsCi0gICAgMTAxLDk5LDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDExLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNywxLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTA2LDEsMCwxMjUsMiwwLDExNiwyLDAsMTA2LDMsMCwxMzEsMCwKLSAgICAwLDEsMTE2LDQsMCwxMjQsMiwwLDEzMSwxLDAsMTQzLDIyNiwwLDEsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwxLAotICAgIDAsMTA3LDksMCwxMTQsOTUsMCwxMDAsMSwwLDEwNiw4LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEyNSwzLDAsMTE2LDksMCwxMjQsMywwLDEwMCwyLDAsMTI0LAotICAgIDIsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxODEsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTA2LDExLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNTgsMCwxMTYsCi0gICAgOSwwLDEwMCw0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsCi0gICAgMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiwxMiwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwxLDEsMSwxMjQsMSwwLAotICAgIDgzLDEyNCwwLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMxLDEsMSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMTAsMCwKLSAgICAxMDAsNywwLDEzMSwyLDAsMTE1LDI0MywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsCi0gICAgMTAsMCwxMDYsMTQsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMTAsMTMsMCwxMjQsCi0gICAgMCwwLDEwNiwxNSwwLDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCwzLDAsCi0gICAgODEsODgsMTE2LDUsMCwxMDYsNiwwLDEyNCwyLDAsMjUsODMsNDEsOCwxMjIsCi0gICAgNTEsNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSwKLSAgICA5OSwzMiwxMDUsMTEwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDEwNSwxMTAsMTAzLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw0NiwxMjIsMzAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMTE0LDY3LDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsCi0gICAgMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMjQ5LDAsMCwwLDg0LAotICAgIDExNCwyLDEsMCwwLDQxLDE2LDExNCwxNzgsMCwwLDAsMTE0LDY3LDAsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMTE0LDEwMywwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsCi0gICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTU0LDAsCi0gICAgMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCwxMTQsMjU1LDAsMCwKLSAgICAwLDExNCw2MCwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDMsMSwwLDAsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDE4MCwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDE3MiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTc2LDAsCi0gICAgMCwwLDEwOCw0LDAsMCwxMTUsMzIsMCwwLDAsMCwyLDEyLDEsMTAsCi0gICAgMSwxMywxLDI0LDEsMTUsMSwyMSwxLDE4LDEsMTgsMSwyNywyLDE5LAotICAgIDEsNCwxLDE5LDEsMjEsNCwyMiwyLDE5LDEsMTIyLDE3LDk1LDgzLDExMiwKLSAgICAxMDEsOTksNzcsMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsMTAxLDEyMCwxMDEsOTksOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMjcsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDI0LDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDMsMCwKLSAgICAxMzEsMSwwLDEsMTE2LDQsMCwxMDYsNSwwLDEyNCwxLDAsMTA2LDMsMCwKLSAgICAyNSwxMjUsMiwwLDExNiw2LDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwwLDAsCi0gICAgMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwOCwwLDEyMSwxNiwwLDEyNCwKLSAgICAxLDAsMTA2LDEsMCwxMjQsMiwwLDk1LDcsMCw4NywxMTMsMTA4LDAsNCwKLSAgICAxMTYsOCwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwxMTMsMTA4LDAsCi0gICAgODgsMTEwLDAsMCwxMTYsNiwwLDEyNCwyLDAsMTAwLDIsMCwxMDAsMCwwLAotICAgIDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTUsMCwxMjEsNTksMCwxMjQsCi0gICAgMiwwLDEwNiw5LDAsMTI0LDIsMCw5NSwxMCwwLDExNiwxMSwwLDEyNCwyLAotICAgIDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxOTAsMCwxMjQsMSwwLDEwNiwzLDAsCi0gICAgMTA2LDEyLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDIsMCwKLSAgICA5NSwxMCwwLDExMCwwLDAsODcsMTEzLDIxNSwwLDQsMTE2LDgsMCwxMDcsMTAsCi0gICAgMCwxMTQsMjExLDAsMSwxLDEsODksMTEzLDIxNSwwLDg4LDExMCwwLDAsMTE2LAotICAgIDYsMCwxMjQsMiwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMjAsMSwxMjEsMTMsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgOTUsMTMsMCw4NywxMTMsMjAsMSw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDE2LAotICAgIDEsMSwxLDEsODksMTEzLDIwLDEsODgsMTEwLDAsMCwxMjQsMiwwLDgzLAotICAgIDQxLDcsNzgsMTE0LDIwNSwwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCwyNDcsMCwKLSAgICAwLDAsMTE0LDExNiwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDIwOSwwLDAsCi0gICAgMCw0MSwxNCwxMTQsMTc4LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDUsMSwKLSAgICAwLDAsMTE0LDY3LDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsCi0gICAgMCwxMTQsNjIsMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsMjEwLDAsMCwwLAotICAgIDExNCw1NywwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCw2MCwwLDAsMCwxMTQsCi0gICAgMzIsMCwwLDAsMTE0LDIwOSwwLDAsMCw0MSwzLDExNCw3MSwwLDAsMCwKLSAgICAxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDI1LDk1LDEwOCwxMTEsOTcsMTAwLAotICAgIDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsCi0gICAgMTA1LDk4LDEwOCwxMDEsMTMyLDQsMCwwLDExNSw0MiwwLDAsMCwwLDQsOSwKLSAgICAxLDE5LDIsMTYsMSwyNCwxLDMsMSwxNiwxLDEzLDEsOCwxLDI0LAotICAgIDEsMyw0LDEyLDEsMTUsMSwzMiwxLDEzLDEsOCwxLDI0LDEsMywKLSAgICAxLDEzLDEsMTMsMSw4LDEsMTIyLDM4LDk1LDgzLDExMiwxMDEsOTksNzcsMTAxLAotICAgIDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTUsMTA4LDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LAotICAgIDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTc5LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsCi0gICAgMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNTIsMCwxMTYsMiwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDIsMCwxMTUsNTIsMCwKLSAgICAxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCw4MywxMTAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDQsMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDUsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDAsMTQzLDg0LDAsMSwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDE0MywwLDEyNCwwLDAsMTA2LDAsMCwxMDYsNiwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTU2LDAsMTE2LDcsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMTMxLDEsMSwxMzAsCi0gICAgMSwwLDExMywxNTYsMCwxMTAsMTMsMCwxMjQsMCwwLDEwNiw5LDAsMTI0LDEsCi0gICAgMCwxMzEsMSwwLDEsODcsMTAwLDAsMCw4MSw4OCwxMTYsMTAsMCwxMDYsMTEsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwyNSw4Myw0MSw0LDc4LDExNCwKLSAgICAyLDEsMCwwLDEyMiwxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwxMTQsNjcsMCwwLDAsNDEsMTIsMTE0LDE3OCwwLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCw2MCwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsCi0gICAgMSwxLDAsMCwxMTQsMjEzLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDE1NCwKLSAgICAwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDMsMSwwLDAsMTE0LDcsMCwKLSAgICAwLDAsMTE0LDczLDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxODAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsCi0gICAgMTAxLDEwMCwxNjIsNCwwLDAsMTE1LDIwLDAsMCwwLDAsMiwxOCwyLDIxLAotICAgIDEsMTMsMiwxMiwxLDEzLDEsMTgsMSwxOCwxLDMwLDMsMTksNSwxMjIsCi0gICAgMjcsOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5NSwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsOCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNDksMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwKLSAgICAxMTYsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLDEzMSwxLDAsMTQzLAotICAgIDE1LDAsMSwxMjQsMCwwLDEwNiw1LDAsMTMxLDAsMCw4Myw4NywxMDAsMSwKLSAgICAwLDgxLDg4LDEwMCwxLDAsODMsNDEsMiwxMjIsMjA3LDgyLDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLAotICAgIDk4LDEwNiwxMDEsOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywKLSAgICAxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwKLSAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLAotICAgIDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLAotICAgIDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsNiwxMTQsMTA2LDAsCi0gICAgMCwwLDExNCw0LDEsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDE3OCwwLDAsCi0gICAgMCwxMTQsNjcsMCwwLDAsMTE0LDcsMSwwLDAsNDEsMSwxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDE3NywwLDAsMCwxODUsNCwwLDAsMTE1LDYsMCwwLDAsMCwKLSAgICA5LDEwLDEsMTksMSwxMjIsMTcsOTUsODMsMTEyLDEwMSw5OSw3NywxMDEsMTE2LDEwNCwKLSAgICAxMTEsMTAwLDExNSw0NiwxMDgsMTExLDk3LDEwMCw3OCw0MSwxMywxMTQsNTcsMCwwLDAsCi0gICAgMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LAotICAgIDcyLDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDI1NSwwLDAsMCwxMTQsMSwKLSAgICAxLDAsMCwxMTQsMywxLDAsMCwxMTQsMTc2LDAsMCwwLDExNCw2LDEsCi0gICAgMCwwLDExNCw3LDEsMCwwLDExNCwxNzcsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCi0gICAgMTE0LDE3NSwwLDAsMCwyMjUsMywwLDAsMTE1LDIwLDAsMCwwLDEyLDMsCi0gICAgNiw0LDEyLDMsMTIsMTYsMjQsODAsMTIsMjMsMTIsMTAsMTIsMjQsMTIsMzAsCi0gICAgMTIsMjMsMTE0LDE3NSwwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsMjAxLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDQsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwwLDEyNSw1LDAsMTI0LAotICAgIDQsMCwxMTUsMTAyLDAsMTI0LDUsMCwxMTQsNTQsMCwxMjQsNSwwLDEwNiwxLAotICAgIDAsMTI1LDQsMCwxMTMsMTAyLDAsMTI0LDIsMCwxMjQsMywwLDEwNywyLDAsCi0gICAgMTE0LDg0LDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsCi0gICAgNCwwLDExMywxMDIsMCwxMTYsMywwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwKLSAgICAwLDEyNSw0LDAsMTEwLDAsMCwxMjQsNSwwLDExNSwxMzIsMCwxMTYsNCwwLAotICAgIDEyNCwxLDAsMTI0LDIsMCwxMDAsMywwLDEyNCw0LDAsMTMxLDIsMSwxMjUsCi0gICAgNSwwLDExMCwwLDAsMTIxLDQ0LDAsMTI0LDUsMCwxMjQsMCwwLDEwMCwyLAotICAgIDAsNjAsMTI0LDQsMCwxMjQsMCwwLDEwMCwxLDAsNjAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDEwMCw0LDAsNjAsMTI0LDMsMCwxMjQsMCwwLDEwMCw1LDAsNjAsCi0gICAgODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsCi0gICAgMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsNiw3OCwxMTQsMjA1LDAsCi0gICAgMCwwLDExNCwyMDksMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMjExLDAsMCwKLSAgICAwLDExNCwyNDUsMCwwLDAsNDEsNiwxMTQsOTMsMCwwLDAsMTE0LDE3MCwwLAotICAgIDAsMCwyMTgsMjAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDI0MCwwLDAsMCwxMTQsCi0gICAgMjA4LDAsMCwwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCw2NywwLDAsMCw5MCwKLSAgICA4LDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTE0LDE3MCwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxNCw5NSwKLSAgICAxMDIsMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5OSw0LDAsCi0gICAgMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTUsMSw2LDEsNiwxLAotICAgIDEyLDEsMTIsMSwxOCwyLDE4LDEsNiwxLDI0LDEsMywxLDEwLDEsCi0gICAgMTAsMSwxMCwxLDE0LDEsMTMsMiwxMTQsMTAsMSwwLDAsOTksMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLAotICAgIDAsMCwxMTUsMTgxLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCi0gICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCwKLSAgICA5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsCi0gICAgMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAxLDksMCwxMDAsOSwKLSAgICAwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEwLDAsCi0gICAgMTAxLDYsMCwxMDEsOSwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwxMDEsOSwwLDEwMCwxMywKLSAgICAwLDEwMCwxNCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEyLDAsCi0gICAgMTAxLDYsMCwxMDEsOSwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDQsMCw4Myw0MSwxNywyMTgsMTUsCi0gICAgNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwKLSAgICAxNDQsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwKLSAgICAxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsCi0gICAgMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywKLSAgICAxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwKLSAgICAxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwKLSAgICAxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwKLSAgICAzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwxMjIsMjQsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsCi0gICAgMzIsNDAsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNDcsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDQxLDEsMTE0LDE4MCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjA2LAotICAgIDAsMCwwLDIzMyw0LDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LAotICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNTgsMCwwLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LAotICAgIDE2LDAsMTAwLDAsMCw4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDExNCw1MCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4MywKLSAgICA0MSwzLDc4LDExNCwyMTgsMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsNDEsMywxMTQsMTA2LDAsMCwwLDkwLDEwLDEwNSwxMTUsOTUsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE0LDE3NCwwLDAsMCw0MSw0LDIxOCwzLDk5LDEwOCwKLSAgICAxMTUsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwKLSAgICAxMDMsMTAxLDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMjQyLDQsMCwKLSAgICAwLDExNSwxMCwwLDAsMCwwLDIsMTIsMSw0LDEsMTUsMSwxOSwyLAotICAgIDEyMiwyNSw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLAotICAgIDExNCwzNywwLDEyNCwzLDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsCi0gICAgMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LAotICAgIDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsCi0gICAgMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LAotICAgIDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDc4LDQxLDIsMTE0LDE0LDEsMCwwLDExNCwxNzAsMCwwLDAsNDEsNCwKLSAgICAxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDE3OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDI1MSw0LDAsMCwxMTUsNCwwLDAsMCwwLDksMTgsMSwxMjIsMjcsNjYsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwKLSAgICAxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMywwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNTksMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDIzLDAsCi0gICAgMSwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsCi0gICAgMTI1LDIsMCw4NywxMDAsMSwwLDgxLDg4LDEyNCwwLDAsMTI0LDIsMCw5NSwKLSAgICA0LDAsMTAwLDIsMCwxMjQsMiwwLDk1LDUsMCwxMjQsMiwwLDgzLDQxLAotICAgIDMsMTIyLDIzLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTE0LDMwLDAsMCwwLAotICAgIDQxLDYsMTE0LDY5LDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDEwNiwwLDAsCi0gICAgMCw5MCwxMiwxMDUsMTEwLDEwNSwxMTYsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE0LAotICAgIDIwNSwwLDAsMCwxMTQsMjUxLDAsMCwwLDQxLDMsMTE0LDEyLDEsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNSwxLDAsMCw3LDUsCi0gICAgMCwwLDExNSwxMCwwLDAsMCwwLDYsMTMsMSwyNCwxLDksMSw5LAotICAgIDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAorICAgIDQsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTA1LDAsMTIxLDEzLAorICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsCisgICAgMSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LAorICAgIDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsNSwwLDg3LDExMCwyNCwwLAorICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMTQ0LDAsMSwxLDEsMTAwLDAsMCwKKyAgICAxMjUsNSwwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDAsMCwwLDEwNyw4LAorICAgIDAsMTE0LDIxOCwwLDEyNCw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTIsMCwKKyAgICAxMjEsMTMsMCwxMjQsMSwwLDEwNiw1LDAsMTI1LDIsMCw4NywxMTMsMjE4LDAsCisgICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwyMDgsMCwxLDEsMSwxMDAsMCwwLAorICAgIDEyNSwyLDAsODksMTEzLDIxOCwwLDg4LDExMCw2LDAsMTI0LDUsMCwxMjUsMiwKKyAgICAwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDYsMCwxMjUsNiwwLDg3LDExMCwyNCwKKyAgICAwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMSwxLDEsMSwxLDEwMCwwLAorICAgIDAsMTI1LDYsMCw4OSwxMTAsMSwwLDg4LDEyMSwxOSwwLDExNiw3LDAsMTI0LAorICAgIDAsMCwxMDYsOCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMjQsMCw0LAorICAgIDExNiwxLDAsMTA3LDEwLDAsMTE0LDQ3LDEsMSwxLDEsMTAwLDAsMCwxMjUsCisgICAgNywwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsNCwwLDEyNCwxLDAsCisgICAgMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDEsMTI1LDMsMCwxMjQsNSwwLDEwMCwKKyAgICAwLDAsMTA3LDgsMCwxMTQsODcsMSwxMDAsMiwwLDExMCwzLDAsMTAwLDMsCisgICAgMCwxMjQsMywwLDk1LDEwLDAsMTI0LDYsMCwxMjQsMywwLDk1LDExLDAsCisgICAgMTI0LDcsMCwxMjQsMywwLDk1LDEyLDAsMTI0LDMsMCw4Myw0MSw0LDc4LAorICAgIDExNCwxMDcsMCwwLDAsNzAsODQsNDEsMTMsMTE0LDk1LDAsMCwwLDExNCw5NiwKKyAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDk4LDAsCisgICAgMCwwLDkwLDcsOTUsNzksODIsNzMsNzEsNzMsNzgsMjE4LDEwLDk1LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDIxOCw0LDEwOCwxMDUsMTE1LDExNiwyMTgsOCw5NSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTQsMTA2LDAsMCwwLDExNCwxMTEsMCwwLAorICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDQxLDgsMTE0LDg5LDAsCisgICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw4OCwwLDAsCisgICAgMCwxMTQsMTUsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMDksMSwwLDAsCisgICAgMTE1LDcyLDAsMCwwLDAsMiwzLDEsMTMsMSwxMywxLDUsMiwxMiwKKyAgICAxLDQsMiw5LDEsMTIsMSwzLDEsMTMsMSwxMywyLDUsMSwzLAorICAgIDEsMTMsMSwxMywxLDExLDEsMTIsMSwxMiwxLDMsMSwxMywxLDEzLAorICAgIDEsMTQsMiw2LDEsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxOSwKKyAgICAxLDEzLDEsMTEsMiwyMSwxLDI3LDEsOSwxLDksMSwxMTQsMTMyLDAsCisgICAgMCwwLDIxOCw4LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsNzAsOTksMiwwLAorICAgIDAsMCwxLDAsMCwwLDUsMCwwLDAsNTksMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDU0LDIsMCwwLDEyNCwyLDAsMTE1LDMwLDAsMTE2LDAsMCwKKyAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAorICAgIDgsMCwxMTQsNjcsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsCisgICAgMCw5NSwyLDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwKKyAgICA2NiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTcsMCwKKyAgICAxMTYsMCwwLDEyNCwxLDAsMTAwLDIsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLAorICAgIDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDMsCisgICAgMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTg3LDAsMTI0LDAsMCwKKyAgICAxMDYsNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTg3LDAsMTE2LDYsMCwxMDAsCisgICAgMCwwLDEwNyw4LDAsMTE0LDE1MSwwLDExNiw3LDAsMTMwLDEsMCwxMTYsNiwKKyAgICAwLDEwNiw4LDAsMTI1LDQsMCwxMjQsNCwwLDEwNiw5LDAsMTI0LDQsMCwKKyAgICAxMzEsMSwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwzLDAsOTUsCisgICAgMTAsMCwxMjEsMTMsMCwxMjQsMywwLDEyNCwxLDAsOTUsMTEsMCw4NywxMTAsCisgICAgMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMCwwLDEsMSwxLDg5LAorICAgIDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjUxLDAsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEwMCwzLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMzIsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNCwxLDAsOTUsMTMsCisgICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDMxLDEsMSwKKyAgICAxLDEsODksMTEwLDEsMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgOTUsMTQsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDY1LAorICAgIDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NiwxLDExNiwKKyAgICAwLDAsMTI0LDEsMCwxMDAsNCwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKKyAgICAwLDEwNyw4LDAsMTE0LDE0OCwxLDEyNCwwLDAsMTA2LDUsMCwxMDAsMCwwLAorICAgIDEwNyw5LDAsMTE0LDE0OCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsCisgICAgMSwwLDk1LDE1LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLAorICAgIDExNCwxNDcsMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwwLDAsMTA2LDE2LAorICAgIDAsMTE0LDUwLDIsMTI0LDIsMCwxMTUsMTg3LDEsMTE2LDAsMCwxMjQsMSwwLAorICAgIDEwMCw1LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCisgICAgMjI0LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTcsMCwxMjQsMSwwLDk1LDE4LAorICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjMsMSwxLAorICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1NCwxLDExNiwwLDAsCisgICAgMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKKyAgICA4LDAsMTE0LDUwLDIsMTI0LDAsMCwxMDYsMTksMCwxMDAsMCwwLDEwNyw5LAorICAgIDAsMTE0LDUwLDIsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTksMCwxMjQsMSwwLAorICAgIDk1LDIwLDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw0OSwKKyAgICAyLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAorICAgIDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNCwxMzEsMCwwLDAsMTE0LDk4LDAsMCwKKyAgICAwLDExNCwxMjksMCwwLDAsNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxLDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsOTksMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsCisgICAgMjE4LDE2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDIxOCw3LDk1LDk1LDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE0LDkxLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDEzNCwwLDAsCisgICAgMCwxMTQsOTUsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTE3LDAsMCwwLAorICAgIDExNCwxMDcsMCwwLDAsMTE0LDk4LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LAorICAgIDEyOSwwLDAsMCw0MSw1LDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsCisgICAgMTE0LDEzMywwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsCisgICAgMTE0LDExNSwyNTQsMSwwLDAsMTE1LDkyLDAsMCwwLDAsNCwzMCwxLDMsCisgICAgMSwxNiwxLDEzLDEsNSwyLDMwLDEsOSwxLDEyLDIsMTUsMSwxMiwKKyAgICAxLDYsMSw5LDIsMTUsMSwxMiwxLDMsMSwxMywxLDEzLDEsNSwKKyAgICAyLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMywxLDEzLDEsMTMsCisgICAgMSw1LDIsMzAsMSwxNSwxLDMsMSwxNiwxLDEzLDEsNSwyLDksCisgICAgMSwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMwLDEsMTUsMSwzLAorICAgIDEsMTYsMSwxMywxLDUsMSwxMTQsMTM3LDAsMCwwLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDUsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyOSwwLDAsMCwxMDAsMSwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCisgICAgMCwwLDEwNiwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw0NSwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLAorICAgIDExMCw0MCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLAorICAgIDIsMCwxMTQsODUsMCwxMTYsMywwLDEwNiw0LDAsMTAwLDQsMCwxMTYsNSwKKyAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTI0LDEsMCwxMDAsMSwKKyAgICAwLDEwNyw4LDAsMTE0LDExMiwwLDExNiw2LDAsMTI0LDAsMCwxMDYsNywwLAorICAgIDEzMSwxLDAsMTI1LDEsMCwxMTYsOCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCisgICAgMiwwLDEsMTI0LDEsMCw4Myw0MSw3LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDEyMiw4NywxMTUsMTE2LDk3LDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTA1LDExMCwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDUxLDQ2LDU0LDQ0LDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE1LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA5LDExNywxMTUsMTE2LAorICAgIDMyLDk3LDEwOCwxMTUsMTExLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk5LDExNCwxMDEsCisgICAgOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSw5MCwxMCwxMTUsMTE2LAorICAgIDk3LDk5LDEwNywxMDgsMTAxLDExOCwxMDEsMTA4LDIzMywyLDAsMCwwLDQxLDksMTE0LAorICAgIDQsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzgsMCwwLDAsMjE4LDksCisgICAgOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwKKyAgICAxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsCisgICAgMTA1LDExMCwxMDMsMTE0LDE2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM3LDAsCisgICAgMCwwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDU4LAorICAgIDIsMCwwLDExNSwyMCwwLDAsMCwwLDMsNiwxLDE4LDMsMjEsMSwKKyAgICAxOCwxLDksMiwxMywxLDEyLDEsMTUsMSwxMywxLDExNCwxNDQsMCwwLAorICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTQ5LDAsMCwwLDEyNCwwLDAsMTA2LDAsCisgICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTAwLDIsMCwxMTAsNiwwLAorICAgIDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsCisgICAgMSwwLDEwNyw4LDAsMTE0LDk1LDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwxLAorICAgIDAsMTA3LDgsMCwxMTQsNzMsMCwxMDAsMywwLDEwNiwzLDAsMTI0LDEsMCwKKyAgICAxMzEsMSwwLDgzLDEwMCw0LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgMTA2LDIsMCwxMzEsMiwwLDgzLDExMCw1MCwwLDEyNCwwLDAsMTA2LDQsMCwKKyAgICAxMTQsMTIzLDAsMTAwLDUsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEzMSwyLDAsODMsMTAwLDYsMCwxMDYsMywwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDIsMCw4MywxMDAsMSwwLDgzLAorICAgIDQxLDcsMTIyLDM4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTE0LDkzLDAsMCwwLAorICAgIDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsCisgICAgMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLAorICAgIDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMTgsCisgICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDEyNSwKKyAgICA0MSw2Miw0MSw1LDExNCwxNSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw5OSwKKyAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDExNywwLDAsMCw0MSwyLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDk3LDAsMCwwLDc2LDIsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwwLDMsMzAsMSwxNSwxLDE1LDEsMTMsMiwKKyAgICAyMiwyLDksMSwxOSwyLDExNCw5NywwLDAsMCw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMjUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLAorICAgIDAsMTA2LDIsMCwxMzEsMCwwLDEsMTE2LDMsMCwxMjQsMiwwLDEzMSwxLAorICAgIDAsMTQzLDIwOCwwLDEsMTE2LDQsMCwxMDYsNSwwLDEwNiw2LDAsMTI0LDIsCisgICAgMCwxMzEsMSwwLDEyNCwxLDAsMTA3LDksMCwxMTQsODksMCwxMDAsMSwwLAorICAgIDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsCisgICAgMywwLDEwMCwyLDAsMTI0LDIsMCwxMzEsMSwxLDEzMCwxLDAsMTI0LDAsCisgICAgMCwxMDYsOSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTYzLDAsMTI0LDAsMCwKKyAgICAxMDYsMTAsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE0MCwwLDExNiw4LDAsMTAwLAorICAgIDQsMCwxMDAsMiwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMSwxLDEzMCwxLAorICAgIDAsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwwLDEwMCw1LDAsMTAwLDYsMCwKKyAgICAxMzEsMiwxLDEsMTI0LDEsMCw4MywxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLAorICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMTYsMTIsMCwxMjQsMCwKKyAgICAwLDEwNiw5LDAsMTAwLDcsMCwxMzEsMiwwLDExNSwyMTksMCwxMjQsMCwwLAorICAgIDEwNiw5LDAsMTA2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEsMTEwLDE2LDAsCisgICAgMTI0LDAsMCwxMDYsOSwwLDEwNiwxNCwwLDEyNCwxLDAsMTMxLDEsMCwxLAorICAgIDg3LDEwMCwzLDAsODEsODIsODgsMTE2LDQsMCwxMDYsNSwwLDEyNCwyLDAsCisgICAgMjUsODMsNDEsOCwxMjIsNTEsNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMjIsMzAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTUsMTIxLAorICAgIDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE0LDE1LDAsMCwwLDc4LDEyMiwKKyAgICAxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsCisgICAgMTMzLDAsMCwwLDg0LDExNCwxMzksMCwwLDAsNDEsMTUsMTE0LDE1LDAsMCwKKyAgICAwLDExNCw1NywwLDAsMCwyMTgsMTIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwKKyAgICAxMDgsMTExLDk5LDEwNywxMTQsNTQsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwKKyAgICAwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw3NywwLAorICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTM3LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwwLDQxLDQsMTE0LDg4LDAsMCwwLDExNCwKKyAgICA4OSwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDMsMTA5LDExNSwxMDMsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg2LDAsCisgICAgMCwwLDkzLDIsMCwwLDExNSwzMiwwLDAsMCwwLDIsOSwxLDEwLAorICAgIDEsMTMsMSwyNCwxLDE1LDEsMTgsMSwxNSwxLDE1LDEsMjEsMiwxOSwKKyAgICAxLDQsMSwxOSwxLDE4LDQsMTksMiwyMywxLDExNCw4NiwwLDAsMCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyNywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMywxLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTA2LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxLDExNiwzLDAsCisgICAgMTA2LDQsMCwxMjQsMCwwLDEwNiwyLDAsMjUsMTI1LDEsMCwxMTYsNSwwLAorICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCisgICAgOCwwLDExNCw5NiwwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKKyAgICAwLDk1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAorICAgIDk1LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsNSwwLDEyNCwxLDAsCisgICAgMTAwLDIsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKKyAgICAxOTcsMCwxMjEsNTYsMCwxMjQsMSwwLDEwNiw4LDAsMTI0LDEsMCw5NSw5LAorICAgIDAsMTE2LDEwLDAsMTI0LDEsMCwxMDAsMywwLDEzMSwyLDAsMTE1LDE3NSwwLAorICAgIDEyNCwwLDAsMTA2LDIsMCwxMDYsMTEsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLAorICAgIDUsMCwyNSwxMjQsMSwwLDk1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LAorICAgIDAsMTA3LDEwLDAsMTE0LDE5NiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LAorICAgIDUsMCwxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAorICAgIDAsMTA3LDgsMCwxMTQsMjU1LDAsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAorICAgIDk1LDEyLDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwyNTQsCisgICAgMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKKyAgICAxMTQsOTEsMCwwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwKKyAgICAxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDExNCw5NSwwLDAsMCw0MSwxMywKKyAgICAxMTQsOTksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsOTEsCisgICAgMCwwLDAsMTE0LDk2LDAsMCwwLDExNCwxLDAsMCwwLDExNCwxMzQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsOTUsMCwwLAorICAgIDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMDgsCisgICAgMTExLDk3LDEwMCw5NSw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsOTUsOTksMTExLDEwOSwKKyAgICAxMTIsOTcsMTE2LDEwNSw5OCwxMDgsMTAxLDExOCwyLDAsMCwxMTUsNDAsMCwwLDAsCisgICAgMCw0LDE5LDIsMTYsMSwyNCwxLDMsMSwxNiwxLDEzLDEsNSwxLAorICAgIDI0LDEsMyw0LDEyLDEsMTUsMSwyOSwxLDEzLDEsNSwxLDI0LDEsCisgICAgMywxLDEzLDEsMTMsMSw1LDEsMTE0LDE0OCwwLDAsMCw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTU5LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLAorICAgIDEwNyw5LDAsMTE0LDQzLDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAorICAgIDEsMCwxMzEsMiwwLDExNSw0MywwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwKKyAgICAwLDgzLDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTE2LDQsCisgICAgMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDc1LDAsMSwxMjQsMCwwLDEwNiwwLAorICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMjIsMCwxMjQsMCwwLDEwNiw1LDAsCisgICAgMTAwLDAsMCwxMDcsOCwwLDExNCwxMzgsMCwxMTYsNiwwLDEwMCwyLDAsMTAwLAorICAgIDMsMCwxMjQsMCwwLDEwNiw3LDAsMTMxLDEsMSwxMzAsMSwwLDExMCwxNiwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxLDg3LDEwMCwwLDAsODEsODIsODgsMTE2LDksMCwxMDYsMTAsMCwxMjQsMCwKKyAgICAwLDEwNiw3LDAsMjUsODMsNDEsNCw3OCwxMTQsMTM5LDAsMCwwLDEyMiwxNCwKKyAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMTUsCisgICAgMCwwLDAsNDEsMTEsMTE0LDk5LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICAxNDgsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMTAsCisgICAgMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM5LDAsCisgICAgMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsNDEsMiwxMTQsODgsCisgICAgMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsCisgICAgMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTQ3LDIsMCwwLDExNSwyMCwwLDAsMCwKKyAgICAwLDIsMTUsMiwxOCwxLDEwLDIsMTIsMSwxMywxLDE1LDEsMTUsMSwKKyAgICAyNCwzLDIzLDUsMTE0LDE0OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSw0NywKKyAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDExNiwyLDAsCisgICAgMTI0LDAsMCwxMDYsMywwLDEzMSwxLDAsMTQzLDE1LDAsMSwxMTYsNCwwLAorICAgIDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMDAsMSwwLDgxLDgyLDg4LDEwMCwxLAorICAgIDAsODMsNDEsMiwxMjIsMTkxLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLAorICAgIDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAorICAgIDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsCisgICAgMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LAorICAgIDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LAorICAgIDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwxMTQsNTcsMCwwLDAsMTE0LDE0NSwwLAorICAgIDAsMCwxMTQsNTQsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxNDksMCwwLAorICAgIDAsNDEsMSwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg3LDAsMCwwLDE3MCwyLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDksMTAsMSwxNiwxLDExNCw4NywwLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyMDUsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCisgICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsCisgICAgMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwKKyAgICAwLDEwMCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDIsMCwKKyAgICAxMzEsMSwwLDkwLDcsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDcsMCwxMDAsCisgICAgOCwwLDEzMiwxLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDYsMCwxMDAsOSwKKyAgICAwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDYsMCwKKyAgICAxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsCisgICAgNiwwLDEwMSwxMSwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwwLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDkwLDEyLDAsMTAxLDYsMCwxMDEsMTEsMCwxMDAsMTUsMCwKKyAgICAxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSwKKyAgICA2LDAsMTAxLDExLDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLDEwMSwxNSwwLDEzMSwxLDAsCisgICAgOTAsMTYsMCwxMDAsNCwwLDgzLDQxLDE5LDIxOCwxNSw2NiwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0NCw3NywxMDEsMTE2LDk3LAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LAorICAgIDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsCisgICAgMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwKKyAgICAxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwKKyAgICAxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwKKyAgICAxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwKKyAgICAwLDAsMCw0MSwxLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTk1LDIsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsCisgICAgMCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTYsMCwxMDAsMCwwLAorICAgIDgzLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LDUwLDAsCisgICAgMTE2LDIsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMDAsMiwwLDEzMSwKKyAgICAyLDEsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDMsNzgsMTE0LDEwNywKKyAgICAwLDAsMCwxMjIsOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSwzLDExNCwKKyAgICA1NywwLDAsMCw5MCwxMCwxMDUsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAorICAgIDExNCw4NSwwLDAsMCw0MSw0LDIxOCwzLDk5LDEwOCwxMTUsMTE0LDc4LDAsMCwKKyAgICAwLDIxOCw0LDExMiw5NywxMTYsMTA0LDIxOCw2LDExNiw5NywxMTQsMTAzLDEwMSwxMTYsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDIwNCwyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMCwyLDEyLDEsNCwxLDE1LDEsMTksMiwxMjIsMjUsNjYsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsCisgICAgNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsCisgICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsCisgICAgMTI1LDMsMCwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsCisgICAgMywwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzUsNzAsMTA1LAorICAgIDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTAyLDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwKKyAgICAxMDEsMTE0LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLAorICAgIDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsCisgICAgMTA4LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLAorICAgIDExNCwxNTQsMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsCisgICAgMCwxMTQsNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsODgsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAorICAgIDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTMsMiwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCw5LDE4LDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsCisgICAgMTI0LDEsMCwxMDYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNywwLDExNCwKKyAgICA1MSwwLDExNiwzLDAsMTAwLDEsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDAsCisgICAgMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwxLDEsCisgICAgMTMwLDEsMCwxMTYsNSwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwKKyAgICAyLDAsODMsNDEsMywxMjIsMjQsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICAyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwKKyAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAorICAgIDc2LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LAorICAgIDAsMCwwLDExNCw1NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCisgICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LAorICAgIDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxMzgsMCwwLDAsMjI1LDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMywxOCwxLDIxLDEsMTIsMSwxMjIsMjksNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAorICAgIDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDIyLDY5LDEyMCwxMDEsOTksMzIsOTcsCisgICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNzgsNDEsMywxMTQsNjUsMCwwLDAsMTE0LDU3LDAsMCwwLDkwLDEyLDEwMSwKKyAgICAxMjAsMTAxLDk5LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsCisgICAgMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTM5LDAsMCwwLDIzMywyLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDMsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsCisgICAgODMsNDEsMiwxMjIsNTcsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwKKyAgICAzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsCisgICAgMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSw0Niw3OCwxMTQsCisgICAgMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCisgICAgOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwyMzgsMiwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMCw0LDEyMiwyNCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwKICAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDU3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsCiAgICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsCiAgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LAotICAgIDk5LDExMSwxMDAsMTAxLDE5LDUsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsCi0gICAgMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAotICAgIDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCi0gICAgMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Niw4MiwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsCi0gICAgMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLAotICAgIDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwKLSAgICAxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLAotICAgIDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgMjUsNSwwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LAotICAgIDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKLSAgICAwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICA3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTEwLDEwMSwKLSAgICAxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDcwLDExNCw0LAotICAgIDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIyMCwKLSAgICAwLDAsMCwzMSw1LDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI2LAotICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwxNCwxMTQsNTcsMCwwLAotICAgIDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNTksMCwwLDAsCi0gICAgMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMjA2LAotICAgIDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAxMTQsMTQsMSwwLDAsMTE0LDE1LDEsMCwwLDExNCwxNjIsMCwwLDAsMTE0LAotICAgIDUsMSwwLDAsMTE0LDE2LDEsMCwwLDExNCwxNywxLDAsMCwxMTQsMjIwLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw1LDAsMCwwLDExNCwxMSwxLDAsMCwyMjQsNCwwLDAsCi0gICAgMTE1LDI4LDAsMCwwLDEyLDcsNiwyLDE4LDksMywxLDIxLDgsMywKLSAgICAxLDE4LDExLDMsMSwyMSwxMSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE0LDExLDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDUsMCwwLDAsNjQsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCi0gICAgMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsNywwLDEwMSw2LDAsMTAwLAotICAgIDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDgsCi0gICAgMCwxMDEsNCwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLAotICAgIDkwLDksMCwxMDEsNiwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDEzLDAsMTAwLDE0LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNiwwLAotICAgIDEwMSwxMSwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTEsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMCw0LDAsCi0gICAgODMsNDEsMTksMjE4LDE0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDEsMTE0LDEyMiwxNDIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsCi0gICAgMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsCi0gICAgMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwKLSAgICAxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LAotICAgIDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwKLSAgICAxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLAotICAgIDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsCi0gICAgMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LAotICAgIDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwxMjIsMjIsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsNDAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsNjIsNDEsMiwxMTQsNDcsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDQxLDEsMjE4LDEsMTA5LDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMDYsMCwwLAotICAgIDAsNDcsNSwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsCi0gICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsCi0gICAgMCwwLDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNDIsCisgICAgMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLAorICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDI0NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCisgICAgMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Miw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsCisgICAgNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDEwOSwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLAorICAgIDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCisgICAgMTcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwxMTQsOTIsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCisgICAgMTM4LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwxNTYsCisgICAgMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCw5MCwwLAorICAgIDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUwLDAsMCwwLAorICAgIDE4NiwyLDAsMCwxMTUsMzAsMCwwLDAsMTIsNyw2LDIsMTgsOSwzLAorICAgIDEsMjEsOCwzLDEsMTgsMTEsMTgsOCwxOCw1LDMsMSwyMSw1LDMsCisgICAgMSwyMSw1LDMsMSwyMSw1LDExNCwxNTAsMCwwLDAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLDAsCisgICAgMCwxMTUsMjExLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCisgICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywKKyAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwwLAorICAgIDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCw5MCwKKyAgICA3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMSwKKyAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksMCwxMDAsMTAsMCwKKyAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDExLDAsMTAwLAorICAgIDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDYsMCwxMDAsMTMsCisgICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLAorICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTIsMCwxMDAsMTcsMCwxMDAsMTgsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsCisgICAgMTAxLDEyLDAsMTAwLDE5LDAsMTAwLDIwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKKyAgICAxLDAsOTAsMTUsMCwxMDAsNCwwLDgzLDQxLDIxLDIxOCwxNCw3MCwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsCisgICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LAorICAgIDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAorICAgIDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLAorICAgIDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKKyAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLAorICAgIDQxLDEsMjE4LDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCw5MiwwLDAsMCwxMiwzLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDExNCwzNCwwLDExNiwyLDAsMTI0LDEsMCwKKyAgICAxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsCisgICAgODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsMCwwLDAsOTAsNiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLAorICAgIDAsMTE0LDg1LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwKKyAgICAwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTQsMCwwLDAsCisgICAgMjEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE1LDEsMTksMiwxMjIsCisgICAgMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLAogICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LAotICAgIDM0LDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEzMSwyLDEsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDMsNzgsCi0gICAgMTE0LDIxOCwwLDAsMCw5MCw2LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDMsMTE0LAotICAgIDEwNiwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwxNzQsMCwwLDAsNDEsNCwKLSAgICAxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEzLDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwxNCwxLDAsMCw1Niw1LDAsMCwxMTUsNiwwLDAsCi0gICAgMCwwLDIsMTUsMSwxOSwyLDEyMiwyNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsCi0gICAgOTksOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMjMsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMTksMCwxMjQsMCwwLDgzLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsOTMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAotICAgIDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLAotICAgIDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDc4LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsMTYzLDAsMCwwLAotICAgIDQxLDMsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwxNSwxLDAsMCw2Myw1LDAsMCwxMTUsMiwwLDAsMCwwLDcsCi0gICAgMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAotICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw5NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMjUsCi0gICAgMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDU3LAotICAgIDAsMTE2LDQsMCwxMDAsMSwwLDEwNiw1LDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMTYsCi0gICAgNiwwLDExNiwyLDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsCi0gICAgMCwxMTYsOCwwLDEyNCwyLDAsMTI0LDAsMCwxMDYsOSwwLDEzMSwyLDAsCi0gICAgMSwxMDAsMCwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDY3LDAsMCwwLDQxLDEwLDExNCwyMDksMCwwLAotICAgIDAsMTE0LDY3LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDE2MywwLDAsMCwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTE0LDAsMCwwLDIxOCwKLSAgICAxNywxMDMsMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSwKLSAgICA5OSwxMTYsMTE0LDE3NiwwLDAsMCwxMTQsNjMsMCwwLDAsNDEsMywxMTQsMTgwLAotICAgIDAsMCwwLDExNCw2NywwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyLDEsMCwKLSAgICAwLDcyLDUsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTIsMSwxNSwxLAotICAgIDE4LDEsMTIsMSwxOCwxLDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKKyAgICAxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiw5Myw3MCwxMDUsCisgICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCisgICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCisgICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCisgICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKKyAgICA3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw4OCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTM4LDAsMCwwLDM3LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKKyAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCisgICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKKyAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCisgICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCisgICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKKyAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKKyAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKKyAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKKyAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCisgICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCisgICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAorICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCisgICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCiAgICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAogICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKICAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCkBAIC0yMjY2LDEwICsxNDU2LDEwIEBACiAgICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAogICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksCiAgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwxMTQsMTgxLAotICAgIDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUsCi0gICAgMSwwLDAsODEsNSwwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwxMTQsOTAsCisgICAgMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ2LAorICAgIDAsMCwwLDUwLDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsCiAgICAgNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LAogICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAogICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCkBAIC0yMjc3LDkgKzE0NjcsOSBAQAogICAgIDgzLDQxLDEsMTIyLDQ1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLAogICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsMjIsMSwwLDAsNDEsMiwKLSAgICAxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTYsMSwwLDAsOTAsNSwKKyAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAorICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKICAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCiAgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCiAgICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLApAQCAtMjI4NywxMCArMTQ3NywxMCBAQAogICAgIDQxLDIsMTIyLDU0LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCiAgICAgOTcsMTE1LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAogICAgIDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTcsMSwwLDAsCi0gICAgOTYsNSwwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAorICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCwKKyAgICA0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgNjUsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAogICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKICAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAogICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLApAQCAtMjI5OCwyMDc5ICsxNDg4LDUwMSBAQAogICAgIDQ2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAogICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwKLSAgICAyLDExNCwxMDYsMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTIsMSwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMjIwLDAsMCwwLDEwMiw1LDAsMCwxMTUsMiwwLAorICAgIDIsMTE0LDU3LDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LDE1MSwwLDAsMCwKKyAgICAxMTQsNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMTE0LDEwOSwwLDAsMCw3MSwzLDAsMCwxMTUsMiwwLAogICAgIDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCiAgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAotICAgIDE1LDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLAotICAgIDExNCw1OSwwLDAsMCwxMTQsMTgsMSwwLDAsMTE0LDIwNiwwLDAsMCwxMTQsCi0gICAgMTksMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwxNSwxLDAsMCwxMTQsMiwKLSAgICAxLDAsMCwxMTQsNSwxLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNiwxLAotICAgIDAsMCwxMTQsMTcsMSwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMjAsMSwwLDAsMzgsNSwwLDAsMTE1LDI4LDAsMCwwLDEyLDcsCi0gICAgNiwyLDE4LDksMywxLDIxLDYsMywxLDE4LDgsMTgsOSwxOCw5LAotICAgIDMsMSwyMSw1LDMsMSwyMSw1LDMsMSwxMTQsMjAsMSwwLDAsOTksCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwKLSAgICAwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsOTAsNCwKLSAgICAwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwwLDEwMSw3LDAsCi0gICAgMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLAotICAgIDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksCi0gICAgMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLDEwMCw5LDAsMTAwLAotICAgIDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLDExLDAsMTAwLDksCi0gICAgMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywKLSAgICAxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsCi0gICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsOTksMTA4LDk3LDExNCwKLSAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsODcsMTA1LDExMCwxMDAsMTExLDExOSwKLSAgICAxMTUsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMjIsNTksODMsMTExLDEwMiwKLSAgICAxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsMTE2LAotICAgIDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwKLSAgICAxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywxMDIsCi0gICAgMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDEyMiw2NSw4MywxMTEsMTAyLDExNiwxMTksOTcsCi0gICAgMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCi0gICAgNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsOTksMiwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLDAsMTA2LDEsMCwxMTYsCi0gICAgMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDExMCwzNywwLAotICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLDEsMSwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCw4MywKLSAgICA4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMSw3OCw0MSw1LDIxOCw3LAotICAgIDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsNzUsMTAxLDEyMSwKLSAgICA5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCw4NCw5NSw4NSwKLSAgICA4Myw2OSw4MiwxMTQsNDAsMCwwLDAsOTAsMTgsNzIsNzUsNjksODksOTUsNzYsCi0gICAgNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsMiwxMTQsMTIsCi0gICAgMSwwLDAsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsCi0gICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDEyMSw1LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDIsMywxLDIzLDEsMTMsMSwxMjIsMzYsODcsMTA1LDExMCwxMDAsMTExLDExOSwKLSAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE0MiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTE0LDIxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNSwyLDAsMTEwLDksMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTI1LDIsMCwxMjQsMiwwLDEwNiwzLDAsMTAwLDEsMCwxMjQsCi0gICAgMSwwLDEwMCwyLDAsMTE2LDQsMCwxMDYsNSwwLDEwMCwwLDAsMTAwLDMsCi0gICAgMCwxMzMsMiwwLDI1LDEzMSwwLDIsMTI1LDMsMCwxMjEsNDYsMCwxMjQsMCwKLSAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMzEsMSwwLDE0MywyNSwwLDEyNSw0LDAsCi0gICAgMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDQsMCwxMzEsMiwwLDEyNSwKLSAgICA1LDAsODcsMTAwLDAsMCw4MSw4OCw4NywxMTAsMjIsMCw0LDExNiw5LDAsCi0gICAgMTA3LDEwLDAsMTE0LDEzNywwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsCi0gICAgMCw4OCwxMjQsNSwwLDgzLDQxLDUsNzgsMTE0LDE1OSwwLDAsMCw5MCwxMSwKLSAgICAxMTUsMTIxLDExNSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDEzNywwLDAsMCwKLSAgICAxMTQsMzAsMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LDY2LDg1LDcxLDk1LDY2LAotICAgIDg1LDczLDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSwKLSAgICA2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsNjksNzEsNzMsODMsODQsCi0gICAgODIsODksOTUsNzUsNjksODksMTE0LDQ3LDAsMCwwLDExNCw3LDAsMCwwLAotICAgIDIxOCw3LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMjYsMSwwLDAsMTE0LDI0LAotICAgIDEsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTQsCi0gICAgNDAsMCwwLDAsNDEsNiwxMTQsMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwKLSAgICA5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LDEwNywxMDEsMTIxLDExNCwyNSwKLSAgICAxLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEyLAotICAgIDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsCi0gICAgMTE1LDExNiwxMTQsMTIxLDEyOCw1LDAsMCwxMTUsMjIsMCwwLDAsMCwyLDksCi0gICAgMSwxMiwyLDksMSwxNSwxLDIyLDEsMywxLDE4LDEsMjgsMSwxMywKLSAgICAxLDksMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsCi0gICAgMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsCi0gICAgOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE1NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDMxLAotICAgIDAsMTAwLDAsMCw4MywxMjEsMTQsMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsCi0gICAgMCwxLDg3LDExMCwyMiwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjksMCwKLSAgICAxLDEsMSwxMDAsMCwwLDgzLDg5LDExMCwxLDAsODgsMTIwLDc4LDAsMTE2LAotICAgIDMsMCwxMzEsMCwwLDY4LDkzLDY3LDAsOTIsMiwwLDEyNSw1LDAsMTI1LAotICAgIDYsMCwxMjQsNCwwLDEwNiw0LDAsMTE2LDUsMCwxMjQsNiwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMTQsODAsMCwxMTYsNiwwLDEyNCwxLDAsMTI0LDUsMCwKLSAgICAxMjQsMSwwLDEyNCw0LDAsMTMxLDIsMCwxMDAsMSwwLDEyNCw0LDAsMTMxLAotICAgIDIsMSwxMjUsNywwLDEyNCw3LDAsODMsMTEzLDgwLDAsODcsMTAwLDAsMCwKLSAgICA4Myw0MSwyLDc4LDExNCwyMTgsMCwwLDAsNDEsNywxMTQsMzIsMSwwLDAsCi0gICAgMTE0LDM5LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsMjQxLDAsMCwwLDExNCwKLSAgICAyMzEsMCwwLDAsMTE0LDIzMiwwLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDgsCi0gICAgMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAxMywxLDAsMCwxMTQsMzEsMSwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LAotICAgIDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE0LDEsMCwwLDE0Myw1LDAsMCwKLSAgICAxMTUsMjQsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsMywxLDE0LAotICAgIDEsMTMsMSw5LDEsMjIsMSwyMSwxLDIxLDEsOSwxLDEyMiwzMSw4NywKLSAgICAxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywKLSAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDM3LDAsMTI0LDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMDgsNzAsMTA1LDExMCwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCi0gICAgMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCwxNCwxLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDQxLDQsMTE0LDEyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDM1LAotICAgIDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE1LDEsMCwwLDE1OCw1LDAsMCwKLSAgICAxMTUsOCwwLDAsMCwwLDcsMTgsMSwxMiwxLDcsMiwxMjIsMzMsODcsCi0gICAgMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQxLDEyLDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwKLSAgICAwLDExNCw1OSwwLDAsMCwxMTQsMjksMSwwLDAsMTE0LDI4LDEsMCwwLAotICAgIDExNCwyNywxLDAsMCwxMTQsMTksMSwwLDAsMTE0LDI2LDEsMCwwLDExNCwKLSAgICAzMiwxLDAsMCwxMTQsMTQsMSwwLDAsMTE0LDE1LDEsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwyMywxLDAsMCwxMDksNSwwLDAsMTE1LDIwLDAsMCwwLAotICAgIDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LDcsMTgsMTUsMywxLAotICAgIDIxLDE0LDMsMSwxMTQsMjMsMSwwLDAsOTksMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNTIsCi0gICAgMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLAotICAgIDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLAotICAgIDkwLDcsMCwxMDAsNiwwLDgzLDQxLDcsMjE4LDEzLDk1LDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMjIsODMsNjYsOTcsMTE1LDEwMSwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk4LDExMSwKLSAgICAxMTYsMTA0LDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwKLSAgICAxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsNSwwLDAsMCwzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw4OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMjQsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEyNSwyLDAsCi0gICAgMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsMTAwLDEsMCwxMzEsMiwwLDEwMCwKLSAgICAzLDAsMjUsMTI1LDMsMCwxMjQsMSwwLDEwNiwzLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMywwLDEwMCw1LDAsMTA3LAotICAgIDIsMCwxMTEsODcsMCwxMjQsNCwwLDEwMCw1LDAsMTA3LDMsMCw4Myw0MSwKLSAgICA2LDEyMiwxNDEsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLAotICAgIDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTgsMTIxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwNSwKLSAgICAxMTAsMTAzLDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwKLSAgICA5OCwxMjEsMzIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLAotICAgIDEwNCw5NywxMTUsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsMzksOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDExMiwxMjEsMzksNDYsCi0gICAgMTE0LDI5LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwKLSAgICAxMTUsMCwwLDAsMTE0LDcyLDAsMCwwLDQxLDQsMTE0LDM4LDAsMCwwLAotICAgIDExNCwyMzksMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwzMiwwLDAsMCw0MSwKLSAgICA1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsOTAsCi0gICAgOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjIwLDAsMCwwLDE3Nyw1LAotICAgIDAsMCwxMTUsOCwwLDAsMCwwLDMsMjUsMSwyMiwxLDE5LDEsMTIyLAotICAgIDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsCi0gICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4MCwKLSAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNTcsCi0gICAgMCwxMTYsMiwwLDEwMCwyLDAsMTA2LDMsMCwxMjQsMSwwLDEwNiwxLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMTYsNCwwLDExNiwKLSAgICA1LDAsMTI0LDIsMCwxMjQsMSwwLDEwNiw2LDAsMTMxLDMsMCwxLDEwMCwKLSAgICAxLDAsODMsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsNTIsOTksOTcsMTEwLAotICAgIDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAotICAgIDEyMywzMywxMTQsMTI1LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw0MCw0MSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsNDEsNywxMTQsMTYsMSwwLDAsMTE0LDU3LDAsMCwwLDExNCwxNTQsMCwKLSAgICAwLDAsMTE0LDQ3LDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE3NiwwLDAsCi0gICAgMCwxMTQsNjMsMCwwLDAsNDEsMywxMTQsNzEsMCwwLDAsMTE0LDE4MCwwLAotICAgIDAsMCwxMTQsMTk1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw1LDAsMCwwLDExNCwyLDEsMCwwLDE4NSw1LDAsMCwxMTUsCi0gICAgMTAsMCwwLDAsMCwyLDE4LDEsMTIsMSw5LDEsMTgsMSwxMjIsMjUsCi0gICAgOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDU3LDAsMCwKLSAgICAwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLAotICAgIDExNCwyMjAsMCwwLDAsMTE0LDIsMSwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsCi0gICAgNSwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMzMsMSwwLDAsMTcyLDUsMCwKLSAgICAwLDExNSw4LDAsMCwwLDEyLDMsNiwyLDEyLDgsMTIsOCwxMTQsMzMsCi0gICAgMSwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgNCwwLDAsMCw2NCwwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCi0gICAgMCwwLDkwLDMsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsCi0gICAgMTAwLDgsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwKLSAgICAwLDAsOTAsNywwLDEwMCwxMSwwLDEwMCwxOCwwLDEwMCwxMywwLDEwMCwxNCwKLSAgICAwLDEzMiwwLDEsOTAsOCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsCi0gICAgOTAsOSwwLDEwMCwxNywwLDgzLDQxLDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDExNiwwLDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDE3OCw3OSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMDUsMTA5LAotICAgIDEwMSwzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksMTA1LAotICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE1LDExNiwxMTQsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsOTcsMTA1LDExNSwxMDEsMTE1LDMyLAotICAgIDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwKLSAgICAxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3OCw0MSwxLDIxOCw3LDczLDc5LDY5LDExNCwxMTQsMTExLDExNCw0MSwyLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTk4LDUsMCwwLDExNSwyLDAsMCwwLDAsNiwxMjIsCi0gICAgMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsCi0gICAgMCwwLDEwNSwxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMSwwLDU0LDgzLDQxLDIsOTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsCi0gICAgMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDk3LDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsCi0gICAgOTcsMzIsMTAwLDEwNSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAotICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMTUsMTE2LDExNCw0MSw0NiwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw4MCwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMDcsMTAxLDEyMSwKLSAgICAxMTUsNTgsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsMzksMTA5LDExNiwKLSAgICAxMDUsMTA5LDEwMSwzOSwzMiw0MCwxMDksOTcsMTEwLDEwMCw5NywxMTYsMTExLDExNCwxMjEsNDEsCi0gICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDExMSwxMDIsMzIsMTA4LDk3LDExNSwKLSAgICAxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsNTksMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDUsMzIsCi0gICAgMzksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLDQwLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwKLSAgICA0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwKLSAgICAxMTEsMTE5LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE0LDEwMSw5NywxMDAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwKLSAgICA5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLAotICAgIDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxODQsMCwwLDAsNDEsMSwxMTQsMzYsCi0gICAgMSwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMjA2LDUsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMTEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsCi0gICAgMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksCi0gICAgMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LAotICAgIDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLAotICAgIDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LAotICAgIDEwOCwxMjEsMzIsMTE2LDExNCw5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwKLSAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNDEsMSwyMTgsOCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDcxLAotICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjE5LDUsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsOCwxMjIsMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiwxNTAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLAotICAgIDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLAotICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwKLSAgICAxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCwKLSAgICA0MSwzLDExNCw3MSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDUzLDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAotICAgIDExNCwzOCwxLDAsMCwyMjksNSwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLAotICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsCi0gICAgOTUsMTAwLDk3LDExNiw5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLAotICAgIDAsMCwxNiwwLDAsMCw2NywwLDAsMCwxMTUsMTA1LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjEsMTksCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgODcsMTEwLDU4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw5NCwwLDEsMTI1LAotICAgIDQsMCwxLDEyMiwyNiwwLDExNiwzLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMSwxMjQsNCwwLDEzMCwyLDAsODcsODksMTAwLDMsMCwKLSAgICAxMDAsMywwLDEyNSw0LDAsMTI2LDQsMCw4OCwxMTAsMSwwLDg4LDExNiw0LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDUyLDY3LDExMSwxMTAsOTksCi0gICAgMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsCi0gICAgMTIyLDM5LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LAotICAgIDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLAotICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0MSwxMTQsNjcsMCwwLDAsNzgsNDEsCi0gICAgNSwxMTQsMjM5LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDIwNCwwLDAsMCw0MSwKLSAgICA1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwKLSAgICAxMTQsMjAyLDAsMCwwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE3LDEsMCwwLDIzNiw1LAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMCwyLDE1LDEsMywxLDE5LDEsMTgsCi0gICAgMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDIxOCw5LAotICAgIDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE0LDI5LDAsMCwwLDk5LDMsCi0gICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDksMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDMxLDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMjQsMSwKLSAgICAwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwKLSAgICAxMjQsMywwLDEzMSw0LDIsODMsNDEsNSwxMjIsMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwKLSAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksCi0gICAgMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMCw5NywxMTYsOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwKLSAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsCi0gICAgMTE0LDExNiwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDE3NiwwLAotICAgIDAsMCwyMTgsMTIsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKLSAgICA4NCwxMTQsMTE4LDAsMCwwLDQxLDIsMTE0LDExNCwwLDAsMCwyMTgsNyw5OSwKLSAgICAxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCw3MSwwLDAsMCwxMTQsNTMsMCwKLSAgICAwLDAsMTE0LDM1LDAsMCwwLDExNCw0MiwxLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDI0Niw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDUsMTgsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsCi0gICAgMCwwLDQzLDAsMCwwLDY3LDAsMCwwLDExNSwxNzcsMSwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLAotICAgIDAsMTI1LDMsMCwxMjEsMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsCi0gICAgMCwxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwKLSAgICAxOSwwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsCi0gICAgMCw4NywxMTAsMTgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsCi0gICAgMSwxLDg5LDExMCwxNjIsMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwKLSAgICAyNSwxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEyNCw0LDAsMTMxLDEsMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwKLSAgICAzNCwwLDExNiw4LDAsMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsCi0gICAgMCwxMjQsMSwwLDEwMCw1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsCi0gICAgODcsMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLAotICAgIDAsMTE0LDIyMCwwLDEsMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCwKLSAgICA2LDAsMTI0LDQsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsCi0gICAgNywwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjUsOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwKLSAgICAxMjQsMiwwLDEzMSwyLDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzMsMSwKLSAgICAxMjQsNCwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMTczLDEsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDE3MywxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsCi0gICAgMCwxMTYsMTcsMCwxMjQsOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLAotICAgIDEyMSwzNiwwLDEyNCwwLDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCwKLSAgICA2LDAsMTMxLDMsMCwxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLAotICAgIDIsMCwxLDg3LDExMywxNzMsMSw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDE2OSwKLSAgICAxLDEsMSwxLDg5LDExMywxNzMsMSw4OCwxMTAsMCwwLDEyNCw5LDAsODMsCi0gICAgNDEsMTEsMTIyLDE5MCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywKLSAgICAxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKLSAgICA5NSw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA4MiwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwKLSAgICAxMDUsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSw0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwKLSAgICAxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LAotICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw3OCwxMTQsMTg0LDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDY3LDAsCi0gICAgMCwwLDExNCwzNSwwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LAotICAgIDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwwLAotICAgIDEyMiwxOSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwKLSAgICAxMTEsMTA5LDMyLDEyMywxMjUsMTIyLDEwLDExOSwxMTQsMTExLDExNiwxMDEsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsNDEsMTksMTE0LDIzOSwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMjMsMCwKLSAgICAwLDAsMTE0LDM3LDEsMCwwLDExNCwzNSwxLDAsMCwxMTQsMTQsMCwwLAotICAgIDAsMTE0LDQwLDEsMCwwLDExNCw0MCwwLDAsMCwxMTQsMTkxLDAsMCwwLAotICAgIDExNCwxNTQsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwKLSAgICAxOTYsMCwwLDAsMTE0LDQ1LDEsMCwwLDExNCw3LDAsMCwwLDIxOCwxOSwKLSAgICAxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwKLSAgICAxMTEsMTAwLDEwMSwxMTQsMTk5LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsMzksMSwKLSAgICAwLDAsNDEsMTAsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDE0MiwKLSAgICAwLDAsMCwxMTQsMTg5LDAsMCwwLDExNCwxNDEsMCwwLDAsMjE4LDIsMTE1LAotICAgIDExNiwxMTQsNTMsMCwwLDAsMjE4LDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsCi0gICAgMTE2LDk3LDExNCwyMDIsMCwwLDAsOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LAotICAgIDEwNiwxMDEsOTksMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDExNCwxNiwxLDAsMCwyNTQsNSwwLDAsMTE1LDc4LDAsMCwKLSAgICAwLDAsNywxNSwxLDYsMSwzLDEsMTYsMSwxMywxLDExLDIsMywKLSAgICAxLDE5LDEsMTMsMSw1LDIsMTYsMSwzLDEsMTksMSwxMywxLDUsCi0gICAgMiwzLDEsOSwxLDEyLDEsMTMsMSwxOSwxLDUsMiw5LDEsNywKLSAgICAxLDE1LDEsNiwxLDcsMSwxNSwxLDE4LDEsMTMsMSwyMiwxLDEyLAotICAgIDEsOSwxLDE1LDEsMywxLDE5LDEsMTcsMSwxMywxLDgsMSwxMjIsCi0gICAgMjEsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAotICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw3OCwxMTQsMTM5LDAsMCwwLDQxLDEwLDExNCw1NywKLSAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwzNiwxLAotICAgIDAsMCwxMTQsMzcsMSwwLDAsMTE0LDM5LDEsMCwwLDExNCwzOCwxLDAsCi0gICAgMCwxMTQsMTcsMSwwLDAsMTE0LDQ1LDEsMCwwLDExNCwxNiwxLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMzQsMSwwLDAsMTk2LDUsMCwwLDExNSwxNCwwLAotICAgIDAsMCwxMiwyLDEyLDgsMTIsMTMsMTIsMTAsMTIsNywxMiwxMCwxOCw4LAotICAgIDExNCwzNCwxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCw0LDAsMCwwLDAsMCwwLDAsMTE1LDExMiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwKLSAgICAxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsCi0gICAgMCwwLDkwLDYsMCwxMDEsNywwLDEzNSwwLDAsMTAyLDEsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTM0LDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLAotICAgIDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAwLAotICAgIDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwxMCwwLDEzNSwwLDAsODMsNDEsCi0gICAgMTQsMjE4LDEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LAotICAgIDk3LDExNSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwKLSAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExMiwxMTQsMTExLDExNiwxMTEsOTksMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLAotICAgIDEwMCwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LAotICAgIDEwNSwxMTQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwKLSAgICAxMTcsMTE1LDk3LDEwMywxMDEsNDYsOTksMywwLDAsMCwwLDAsMCwwLDMsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsCi0gICAgMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsCi0gICAgMSwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNzUsNjcsOTcsOTksMTA0LDEwMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsCi0gICAgMTIxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwMiwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDc4LDQxLDIsMTE0LDY3LDAsMCwwLDExNCwzNSwwLAotICAgIDAsMCw0MSwzLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsNTUsNiwwLDAsMTE1LDQsMCwwLDAsCi0gICAgMCwzLDksMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwKLSAgICAwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywKLSAgICAyLDAsMTExLDMzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsCi0gICAgMCwxMDcsMiwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjI1LDAsMCwwLDExNCwKLSAgICA2MywwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMjI4LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKLSAgICAyMzAsMCwwLDAsNjEsNiwwLDAsMTE1LDQsMCwwLDAsMCwxLDE4LAotICAgIDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTMxLDEsMCw2NSw4Myw0MSwxLDc4LDQxLDMsMjE4LDQsMTA0LAotICAgIDk3LDExNSwxMDQsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwxLDExNCwKLSAgICA3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsOCw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw2NSw2LDAsCi0gICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMjQsMCwwLAotICAgIDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDEsMSwxMjIsCi0gICAgMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLAotICAgIDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKLSAgICAzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsCi0gICAgMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCw1LDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDQ5LAotICAgIDEsMCwwLDExNCw1LDEsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwKLSAgICAxNTksMCwwLDAsNDEsMSwxMTQsMjI1LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCw1LDEsMCwwLDY4LDYsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMTAsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLAotICAgIDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM1LAotICAgIDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIzOSwKLSAgICAwLDAsMCw4MCw2LDAsMCwxMTUsMiwwLDAsMCwwLDMsMTIyLDIzLAotICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsOCwwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLAotICAgIDE0MywxNywwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMiwwLDEzMSwwLDAsODMsCi0gICAgODcsMTAwLDIsMCw4MSw4OCwxMDAsMiwwLDgzLDQxLDMsMTIyLDM5LDgyLDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LAotICAgIDExMSwxMDksMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQ2LDIxOCwxLDExNCw3OCw0MSwzLDExNCw0OSwwLDAsMCwKLSAgICAxMTQsNTAsMCwwLDAsOTAsNCwxMTQsMTAxLDk3LDEwMCw0MSwzLDExNCw3MSwwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw0MCwxLDAsMCwKLSAgICA4NSw2LDAsMCwxMTUsNCwwLDAsMCwwLDIsMjEsMSwxMjIsMTksNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywKLSAgICAxMTYsOTcsNDEsMTEsMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsCi0gICAgMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsMjMwLDAsCi0gICAgMCwwLDExNCw1MSwxLDAsMCwxMTQsMTU3LDAsMCwwLDExNCw1LDEsMCwKLSAgICAwLDExNCwyMzksMCwwLDAsMTE0LDQwLDEsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDEsMTE0LDIyNSwwLDAsMCwxMTQsNSwwLDAsCi0gICAgMCwxMTQsNDksMSwwLDAsNTAsNiwwLDAsMTE1LDE0LDAsMCwwLDEyLAotICAgIDMsNiwyLDEyLDYsMTIsNCwxMiwzLDI0LDEyLDE4LDUsMTE0LDQ5LDEsCi0gICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsCi0gICAgMCwwLDAsNjQsMCwwLDAsMTE1LDY0LDAsMCwwLDEwMSwwLDAsOTAsCi0gICAgMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLAotICAgIDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEwMCw4LDAsMTAwLAotICAgIDksMCwxMzIsMCwxLDkwLDYsMCwxMDAsMTAsMCw4Myw0MSwxMSwxMTQsOSwKLSAgICAxLDAsMCwxMjIsNjIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCi0gICAgODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTcsMTE1LDEwNSwKLSAgICAxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsCi0gICAgMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwNSwyLDAsMTI0LDIsMCwxMDYsCi0gICAgMSwwLDEwMCwxLDAsNTQsMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsNTQsCi0gICAgODMsNDEsMywxMjIsMzMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDQ2LDExNCwxODQsMCwwLDAsMTE0LDE4NSwwLDAsMCwKLSAgICA0MSwzLDExNCwzOSwwLDAsMCwyMTgsOCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwKLSAgICAxMDEsOTAsNywxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MSwzLDExNCw3MSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDQ3LDEsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwzNywxLDAsMCw5NSwKLSAgICA2LDAsMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMjcsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsCi0gICAgMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMzQsCi0gICAgMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsCi0gICAgMCwwLDEwNiwxLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDQsCi0gICAgMCwxMzEsMiwxLDgzLDQxLDIsNzgsMjE4LDUsOTUsMTA5LDExMSwxMDAsMTAxLDQxLAotICAgIDIsMTE0LDE0NSwwLDAsMCwxMTQsMzgsMSwwLDAsNDEsNSwxMTQsNzEsMCwKLSAgICAwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCw1MywwLDAsCi0gICAgMCwxMTQsNDIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDM5LDEsMCwwLDEwMCw2LDAsMCwxMTUsNCwKLSAgICAwLDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDcwLAotICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCw1NSwxLDAsMCwxMDUsMTgyLAotICAgIDEsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw5LDAsMCwwLAotICAgIDE3LDAsMCwwLDY3LDAsMCwwLDExNSw1MywxLDAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEwMywKLSAgICAwLDAsMTI1LDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwwLDExNiwxLAotICAgIDAsMTI0LDQsMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLDAsMTI0LDQsCi0gICAgMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsMTI0LDYsMCwKLSAgICAxMDYsMiwwLDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLDg3LDEyMCwxMzIsCi0gICAgMCwxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCw2OCw5MywxMTgsMCwxMjUsNywKLSAgICAwLDExNiw0LDAsMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsMTI1LDQsMCwKLSAgICAxMjEsMTcsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEsCi0gICAgODcsMTEzLDk0LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsMCwxLDEsCi0gICAgMSwxMTksOTQsMCw4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LAotICAgIDIxMSwwLDEsMTI1LDgsMCwxLDEyMiwyNSwwLDExNiw5LDAsMTAwLDEsMCwKLSAgICAxMjQsNCwwLDEyNCw4LDAsMTMxLDMsMCwxLDEwMCwyLDAsODMsODcsODksCi0gICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTMsOTQsMCwKLSAgICA4OCwxMTMsOTQsMCw4NywxMjEsMzMsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMywwLDEsMTE2LDksMCwxMDAsMywwLDEyNCwxLAotICAgIDAsMTMxLDIsMCwxLDg3LDExMCw1MywwLDQsMTE2LDgsMCwxMDcsMTAsMCwKLSAgICAxMTQsNDgsMSwxLDEyNSw4LDAsMSwxMjIsMjEsMCwxMTYsOSwwLDEwMCwxLAotICAgIDAsMTI0LDEsMCwxMjQsOCwwLDEzMSwzLDAsMSw4Nyw4OSwxMDAsMiwwLAotICAgIDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMCwxLDAsODgsMTAwLDIsCi0gICAgMCw4Myw0MSw0LDEyMiwyNyw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsCi0gICAgNDYsMTIyLDI3LDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLAotICAgIDEyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTEsMTE0LAotICAgIDM4LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwzMywKLSAgICAwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDMsMCwwLDAsOTAsNSwxMDksCi0gICAgMTA3LDEwMCwxMDUsMTE0LDIxOCwxNSw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LAotICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDAsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsNDEsOSwxMTQsNzEsMCwwLDAsMTE0LDM1LDAsMCwwLAotICAgIDExNCw1MywwLDAsMCwxMTQsNTUsMSwwLDAsMTE0LDIzNCwwLDAsMCwxMTQsCi0gICAgMTMxLDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsMTE0LDQxLAotICAgIDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDExNCwzOCwxLDAsMCwxMDUsNiwwLDAsMTE1LDM4LDAsMCwwLAotICAgIDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsMTcsMiwxOSwxLDE1LDEsCi0gICAgMywxLDE3LDEsMTMsMiw3LDEsMTgsMywxNiwxLDI3LDEsMywxLAotICAgIDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsCi0gICAgOTcsNzgsNDEsNywxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwKLSAgICAwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDM3LDEsMCwwLDExNCwzOSwxLAotICAgIDAsMCwxMTQsMzgsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDksMSwwLDAsCi0gICAgOTEsNiwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsNSwxMiwKLSAgICA1LDExNCw5LDEsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDE2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKKyAgICAxNTksMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU1LDAsMCwwLDExNCwxMzgsCisgICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCw4NCwwLAorICAgIDAsMCwxMTQsMTU2LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDE2MCwwLDAsMCwzLDMsMCwwLDExNSwzMCwKKyAgICAwLDAsMCwxMiw3LDYsMiwxOCw5LDMsMSwyMSw2LDMsMSwxOCwKKyAgICA4LDE4LDQsMTgsOSwxOCw5LDMsMSwyMSw1LDMsMSwyMSw1LDMsCisgICAgMSwxMTQsMTYwLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAogICAgIDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ2LDAsMCwwLAogICAgIDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsCiAgICAgMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwKICAgICAwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCw4Myw0MSw3LAotICAgIDExNCw4LDEsMCwwLDEyMiw0NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwKLSAgICAxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsNzYsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwwLDAsCi0gICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMiwwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwyLDAsMTI0LDIsMCwxMzEsMSwKLSAgICAyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiw4Myw0MSw0LDc4LDExNCw2NywwLAotICAgIDAsMCwxMTQsMzUsMCwwLDAsMTE0LDE0MSwwLDAsMCw0MSw0LDExNCwyMzksCi0gICAgMCwwLDAsMTE0LDQwLDEsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDE5NiwwLAotICAgIDAsMCw0MSw1LDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwKLSAgICAwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDQ4LDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNiwxLDAsCi0gICAgMCwxMzgsNiwwLDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTUsMSwKLSAgICAyNCwxLDEyMiwyOSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCwKLSAgICA0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNywxLDAsMCwKLSAgICAxNDQsNiwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwzMSw4MywxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQxLDYsMTE0LAotICAgIDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LAotICAgIDAsMCwwLDExNCwxNiwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDgsMSwwLDAsMTM0LDYsMCwwLDExNSw2LDAsMCwwLDEyLAotICAgIDIsNiwyLDEyLDYsMTE0LDgsMSwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAwLDEwLDAsMTAwLAotICAgIDExLDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCw5MCwxMCwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTEsMCwKLSAgICAxMDEsNywwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICAxMiwwLDEwMCwxOCwwLDgzLDQxLDE5LDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsCi0gICAgMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwKLSAgICAyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDIsMTE0LDY3LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCw3MSwwLAotICAgIDAsMCwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MiwwLDAsMCwKLSAgICAxNjEsNiwwLDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDM0LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLAotICAgIDAsMTA3LDIsMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwKLSAgICAxMDYsMSwwLDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMjUsMCwwLAotICAgIDAsMTE0LDYzLDAsMCwwLDQxLDIsMTE0LDcxLDAsMCwwLDExNCwyMjgsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDIzMCwwLDAsMCwxNjUsNiwwLDAsMTE1LDQsMCwwLDAsMCwKLSAgICAxLDE4LDEsMTIyLDI2LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDEsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwKLSAgICAwLDY1LDgzLDQxLDEsNzgsNDEsMywxMTQsNTAsMSwwLDAsMTE0LDY3LDAsCi0gICAgMCwwLDExNCwzNSwwLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNTEsMSwKLSAgICAwLDAsMTY5LDYsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksCi0gICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE4MywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxNDMsMjksCi0gICAgMCwxLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDEzMSwzLDAsMTI1LDIsMCw4NywxMDAsMSwwLDgxLDg4LAotICAgIDExNiw1LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTA2LDYsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsCi0gICAgMywwLDExNCwxMjQsMCwxMTYsNywwLDEyNCwyLDAsMTAwLDMsMCwxMzEsMiwKLSAgICAwLDEyLDExNCwxMjQsMCwxMTYsOCwwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwKLSAgICAwLDEwMCw0LDAsMjUsMTAzLDEsMCwxMjQsMiwwLDk1LDksMCwxMTAsMCwKLSAgICAwLDEyNCwwLDAsMTI0LDIsMCw5NSwxMCwwLDEyNCwyLDAsMTA2LDExLDAsCi0gICAgMTI0LDIsMCw5NSwxMiwwLDEyNCwzLDAsMTE1LDE3OSwwLDEyNCwyLDAsMTA2LAotICAgIDEyLDAsMTA2LDEzLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCw0LDAsMjUsMTI0LAotICAgIDIsMCw5NSwxMiwwLDExMCwwLDAsMTI0LDIsMCw4Myw0MSw2LDEyMiwyNSwKLSAgICA3NiwxMTEsOTcsMTAwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsMzMsMTAxLDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsMTE0LDI0NywwLAotICAgIDAsMCwxMTQsODQsMCwwLDAsMTE0LDExNiwwLDAsMCw0MSwxNCwxMTQsNjksCi0gICAgMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTA2LDAsMCwwLDkwLDEyLDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDM1LDAsMCwwLAotICAgIDExNCwxNTMsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDM4LDAsMCwwLDExNCwyNDcsMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDI1MSwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsNCwxMTQsCi0gICAgNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDUsMSwwLDAsMTcyLDYsMCwwLDExNSwyNCwwLDAsMCwKLSAgICAwLDUsMTMsMSw5LDEsMjEsMSwxNiwxLDE1LDEsMjIsMSwyOCwxLAotICAgIDksMSwxMiwxLDYsMSwyOCwxLDEyMiwzMSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLAotICAgIDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsMTE1LDQ4LAotICAgIDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTAwLAotICAgIDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwzLDAsNjgsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDgzLDQxLDQsMTIyLDQ5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LAotICAgIDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsMjksMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw1MSwwLAotICAgIDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsMCw5MywyMSwwLDEyNSwxLDAsCi0gICAgMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsMjMsMTA3LDIsMCw4NiwxLDExMywKLSAgICAzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCw3MiwwLDAsMCw3OCwxMTQsNCwKLSAgICAwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsCi0gICAgMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsMTkzLDYsCi0gICAgMCwwLDExNSwyLDAsMCwwLDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LAotICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw0LDExNCwzOCwKLSAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDc4LDAsMCwwLDIxOCwxOCw2OSwKLSAgICA4OCw4NCw2OSw3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDQxLDEsMTE0LDU5LDEsMCwwLDExNCw1LDAsMCwwLDExNCwyMjAsCi0gICAgMCwwLDAsMTkwLDYsMCwwLDExNSw2LDAsMCwwLDAsMiwxOSwxLAotICAgIDE4LDEsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiw2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAotICAgIDk3LDExNSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwKLSAgICAxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKLSAgICA5OSwxMTYsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMTYsMSwwLDAsMTk2LDYsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAotICAgIDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLAotICAgIDQxLDIsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsCi0gICAgOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCi0gICAgMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTcsMSwwLDAsMjAwLAotICAgIDYsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwKLSAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM1LDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIzOSwwLDAsMCwKLSAgICAyMDQsNiwwLDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTMsCi0gICAgMTE0LDU3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDU5LDAsMCwwLDExNCw3MiwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCw1MSwKLSAgICAxLDAsMCwxMTQsMTU3LDAsMCwwLDExNCw1LDEsMCwwLDExNCwyMjAsMCwKLSAgICAwLDAsMTE0LDE2LDEsMCwwLDExNCwxNywxLDAsMCwxMTQsMjM5LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw1LDAsMCwwLDExNCw1NywxLDAsMCwxNTMsNiwwLDAsMTE1LDE4LAotICAgIDAsMCwwLDEyLDYsNiwyLDEyLDQsMTIsNCwxMiwzLDE4LDE4LDEyLAotICAgIDYsMTIsNCwxMiw0LDExNCw1NywxLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICAxMzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCi0gICAgOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsOTAsOSwwLDEwMCwxNCwKLSAgICAwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsMCwxMDAsMTYsMCwxMDAsMTcsMCwKLSAgICAxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCw5MCwKLSAgICAxMiwwLDEwMCwyMCwwLDgzLDQxLDIxLDIxOCwxNCw5NSw3OCw5NywxMDksMTAxLDExNSwKLSAgICAxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsOTcsMzgsMSwwLDAsODIsMTAxLDExMiwKLSAgICAxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsCi0gICAgMTE2LDEwNCw0NiwzMiwzMiw3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsCi0gICAgMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsCi0gICAgMTExLDEwNywxMTUsMzIsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsCi0gICAgMTE2LDM5LDExNSwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwKLSAgICA0NiwzMiwzMiw4NywxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LAotICAgIDExMCwxMDMsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzOSwxMTUsMzIsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsCi0gICAgMTAxLDk5LDExMSwxMDksMTEyLDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsCi0gICAgMTE1LDEwNSwxMTAsMTAzLDMyLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDMyLDMyLDcwLDExMSwxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAotICAgIDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCi0gICAgMTE2LDEwNCw0Niw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKLSAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsMCwxMjQsMSwwLAotICAgIDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTE2LAotICAgIDIsMCwxMjQsMCwwLDEwNiwzLDAsMTMxLDAsMCwxMzEsMSwwLDEyNCwwLAotICAgIDAsOTUsNCwwLDEyNCwzLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDYsMTE0LDcwLDAsMCwwLDExNCwyNTQsMCwwLDAsCi0gICAgMTE0LDIzMiwwLDAsMCwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsCi0gICAgMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsNCwxMTQsNzEsMCwwLDAsMTE0LAotICAgIDY3LDAsMCwwLDExNCwzNSwwLDAsMCwyMTgsMTEsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDcyLDAsMCwwLDIxNyw2LDAsMCwxMTUsOCwKLSAgICAwLDAsMCwwLDEsOSwxLDksMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwKLSAgICAxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCw5MiwzLDAsCi0gICAgMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywKLSAgICAyLDAsMTE0LDQzLDAsMTAwLDYsMCw4MywxMjQsMSwwLDEwMCw1LDAsMTAyLAotICAgIDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywKLSAgICAzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLAotICAgIDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LAotICAgIDExMCw5NywxMDksMTAxLDQxLDExNCwxMTYsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwKLSAgICA3LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMjQ3LDAsMCwwLDQxLDIsCi0gICAgMTIyLDMsMTE1LDEyMSwxMTUsMTIyLDQsMTEyLDk3LDExNiwxMDQsNDEsMiwxMTQsNzAsMCwKLSAgICAwLDAsMTE0LDMyLDAsMCwwLDQxLDQsMTE0LDcxLDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMjE4LDMsMTAwLDExMSwxMTYsMTE0LDk0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMyw5NSwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMjIzLDYsMCwwLDExNSw4LDAsMCwwLDAsMiwKLSAgICAyNywxLDEyLDIsNCwzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsCi0gICAgMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDM4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwKLSAgICAwLDkyLDIsMCwxMjUsMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsMiwwLAotICAgIDEwNiwzLDAsMTI0LDEsMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsNDEsMSwKLSAgICA3OCw0MSw0LDExNCw2NywxLDAsMCwxMTQsNjIsMCwwLDAsMTE0LDcsMCwKLSAgICAwLDAsMTE0LDczLDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwwLDkwLDE4LAotICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMTQsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDYyLDEsMCwwLDIzMyw2LDAsMCwxMTUsNCwwLDAsMCwwLAotICAgIDEsMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKLSAgICA5NywxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTI3LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLAotICAgIDEyNCwxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDEyMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwOCwwLAotICAgIDEyNCwyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwOCwwLDEyNCwKLSAgICAyLDAsMTA2LDYsMCwxMTQsMTA4LDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLAotICAgIDAsOTUsNywwLDExMywxMDgsMCwxMTAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwyLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw3LDAsODMsNDEsMSw3OCwKLSAgICA0MSw4LDExNCwyMzIsMCwwLDAsMTE0LDYyLDEsMCwwLDExNCw2MywxLDAsCi0gICAgMCwxMTQsNjQsMSwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNzAsMCwwLDAsCi0gICAgMTE0LDIyMSwwLDAsMCwxMTQsMjU0LDAsMCwwLDQxLDMsMTE0LDcxLDAsMCwKLSAgICAwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE3OCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAotICAgIDIzNyw2LDAsMCwxMTUsMTYsMCwwLDAsMCwyLDE4LDEsMTUsMSwyMSwKLSAgICAzLDI3LDEsOSwxLDE4LDEsMTIsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsOTksOTcsMTA4LAotICAgIDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwKLSAgICAxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsODMsCi0gICAgNDEsMSw3OCw0MSwyLDIxOCw0LDEwNSwxMTYsMTAxLDExNCwxMTQsNjgsMSwwLDAsCi0gICAgNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDUsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAotICAgIDI1MCw2LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LAotICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LAotICAgIDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAotICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLDQxLDEsCi0gICAgNzgsNDEsMiwxMTQsMzEsMCwwLDAsMTE0LDY4LDEsMCwwLDQxLDEsMTE0LAotICAgIDcxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAotICAgIDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDI1Myw2LDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMjAsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsCi0gICAgMTI1LDQxLDQxLDIsMTE0LDQ3LDAsMCwwLDExNCwyNTQsMCwwLDAsNDEsMSwKLSAgICAxMTQsNzEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDUsMCwwLDAsMTE0LDEwMSwwLDAsMCwwLDcsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMzEsMCwwLDEwNyw2LDAsODMsNDEsMSw3OCw0MSwxLDExNCw2OCwxLDAsCi0gICAgMCw0MSwyLDExNCw3MSwwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEyLDk1LAotICAgIDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDMsNywwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwKLSAgICAxMTUsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEsMTAwLDAsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDIsMTE0LDI1NCwwLDAsMCwxMTQsMjI0LDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCw3MiwxLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjI0LDAsMCwwLAotICAgIDYsNywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMSw5NSw3OCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsCi0gICAgMTEwLDEwMCw3OCw0MSwxMywxMTQsNTcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCwKLSAgICA1OCwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDcyLDAsMCwwLDExNCw2NywKLSAgICAxLDAsMCwxMTQsNjIsMSwwLDAsMTE0LDY4LDEsMCwwLDExNCw3MCwxLAotICAgIDAsMCwxMTQsNzEsMSwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsNzMsMSwwLAotICAgIDAsMTE0LDIyNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNjEsMSwwLDAsMjEwLAotICAgIDYsMCwwLDExNSwyMCwwLDAsMCwxMiw1LDYsMiwxMiw2LDEyLDEwLAotICAgIDEyLDQsMTIsMTMsMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsNjEsMSwwLAotICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCw2NCwwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLAotICAgIDkwLDMsMCwxMDEsNCwwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsNSwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDksMCwKLSAgICAxMDAsMTAsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsCi0gICAgMCwwLDkwLDksMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLAotICAgIDAsMTAwLDE1LDAsODMsNDEsMTYsMTE0LDI1MiwwLDAsMCw5OSw0LDAsMCwKKyAgICAyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCisgICAgMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsCisgICAgMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLAorICAgIDIsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsMSwxMTQsMTksMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDIzLDAsMCwwLDg0LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKKyAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKKyAgICAwLDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSwKKyAgICA5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwKKyAgICAzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsCisgICAgMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LAorICAgIDU4LDAsMCwwLDQxLDQsMTE0LDE5LDAsMCwwLDkwLDgsMTAxLDEyMCw5OSwKKyAgICA5NSwxMTYsMTIxLDExMiwxMDEsOTAsOSwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LDEwMSwKKyAgICA5MCwxMywxMDEsMTIwLDk5LDk1LDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsCisgICAgMCwwLDAsODgsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyNywKKyAgICA5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLAorICAgIDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsCisgICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKKyAgICAwLDAsMTE0LDIzLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDE2NSwwLDAsMCw4MCwzLDAsMCwxMTUsNiwwLDAsMCwxMiwyLAorICAgIDYsMiwxMiw0LDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODgsCisgICAgMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwxLDAsMTI0LDIsMCwxMDAsCisgICAgMiwwLDI0LDEzMSwyLDAsMTI1LDMsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLAorICAgIDEsMCwxMjQsMiwwLDEwNywwLDAsMTE0LDUyLDAsMTE2LDIsMCwxMDAsMywKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsCisgICAgMCwxMjQsMCwwLDExNCw4NCwwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLAorICAgIDEyNCwwLDAsMTMxLDIsMCw4MywxMjQsNCwwLDgzLDQxLDYsMTIyLDUwLDgyLAorICAgIDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLAorICAgIDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSwKKyAgICA0NiwxMTQsMTIxLDAsMCwwLDExNCw0NSwwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwKKyAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLAorICAgIDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsCisgICAgMzMsMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LAorICAgIDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsCisgICAgMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsMTUsMCwKKyAgICAwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LAorICAgIDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LAorICAgIDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5MywzLDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxMiwxLDEwLDEsMTE0LAorICAgIDE3MSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwKKyAgICAxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMCwwLDgzLAorICAgIDExNiwxLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSw3OCwKKyAgICA0MSwyLDExNCwxNTUsMCwwLDAsMTE0LDg1LDAsMCwwLDQxLDQsMjE4LDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsCisgICAgMTE0LDk5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksCisgICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDEwMiwzLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDMsMTgsMSwxMiwxLDQsMSwxMTQsMTczLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw5LDAsMCwwLDI3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0MiwxLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwKKyAgICAxMDcsOSwwLDExNCw0MSwwLDExNiwwLDAsMTA2LDEsMCwxMiwxMTQsNDEsMCwKKyAgICAxMTYsMiwwLDEwNiwzLDAsMTAwLDIsMCwxMTYsNCwwLDEzMSwyLDAsMSwKKyAgICAxMjQsMCwwLDExNiwwLDAsMTA2LDUsMCwxMDcsNiwwLDEyNSwzLDAsMTIwLAorICAgIDIzNSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5MywyMjAsMCwxMjUsNCwwLDExNiwKKyAgICA2LDAsMTMxLDAsMCwxNDMsOTAsMCwxLDEyMSwxMywwLDEyNCw0LDAsMTA2LAorICAgIDcsMCwxMjUsNSwwLDg3LDExMCw1MSwwLDQsMTE2LDgsMCwxMDcsMTAsMCwKKyAgICAxMTQsMTQ4LDAsMSwxLDEsMTE2LDksMCwxMjQsNCwwLDEyNCwwLDAsMTI0LAorICAgIDEsMCwxMzEsMywwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMSwwLDEwNyw4LAorICAgIDAsMTE0LDE0NCwwLDExOSw2NiwwLDg5LDExMCwxOSwwLDg4LDEyNCw1LDAsMTI0LAorICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsNiwwLDg3LDEwMCwKKyAgICAxLDAsODEsODIsODgsMTI0LDYsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDY2LAorICAgIDAsMTI0LDMsMCwxMiwxMTQsMjYsMSwxMjQsMCwwLDExNiwwLDAsMTA2LDUsCisgICAgMCwxMDcsNiwwLDExNCwyNiwxLDExNiwwLDAsMTA2LDUsMCwxMjQsMCwwLAorICAgIDI1LDEyNSw3LDAsMTIxLDEzLDAsMTI0LDcsMCwxMDYsMTAsMCwxMjUsOCwwLAorICAgIDg3LDExMCwyMiwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMiwxLDEsMSwKKyAgICAxLDEyNCw2LDAsODMsODksMTEzLDMwLDEsODgsMTI0LDgsMCwxMDAsMSwwLAorICAgIDEwNyw4LDAsMTE0LDE5LDEsMTI0LDYsMCw4MywxMjQsOCwwLDgzLDExMyw2NiwKKyAgICAwLDEyNCw2LDAsODMsMTEzLDY2LDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAorICAgIDgzLDQxLDMsMTIyLDIzLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDc4LDEyMiwyMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLAorICAgIDEwMSwxMDksMTEyLDExNiwxMjEsNDEsMTEsMTE0LDE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsCisgICAgMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNDEsMCwwLDAsMTE0LDE0MiwwLDAsCisgICAgMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNCwyMSwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LAorICAgIDk2LDAsMCwwLDExNCwxNzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDksCisgICAgMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCw5MCwKKyAgICA5LDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTcyLDAsMCwwLDExNCwKKyAgICAxNTQsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTUsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDEwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMTEsMywKKyAgICAwLDAsMTE1LDQ4LDAsMCwwLDAsMiwyNSwxLDE2LDQsMTUsMSwxNiwKKyAgICAxLDEwLDEsMywxLDEzLDEsMTMsMSwxOCwxLDEyLDEsOCwyLDI1LAorICAgIDEsMTIsMiwyMiwxLDEzLDEsMywxLDEzLDEsMTMsNCw5LDIsMTIsCisgICAgMSw0LDIsNywyLDgsMiwxMTQsMTc2LDAsMCwwLDk5LDMsMCwwLAogICAgIDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwKLSAgICAzLDAsMTMxLDMsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMiwxMTQsNjEsMSwwLDAsMTE0LDI1NCwwLDAsMCw0MSw0LAotICAgIDExNCw3MSwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICA2NSwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwxMTQsNzIsMCwwLDAsMTIsNywwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLAotICAgIDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwKLSAgICAzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LAotICAgIDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsCi0gICAgMjUsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNjIsNDEsMiwxMTQsNDcsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCwxODAsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLAotICAgIDAsMTE0LDIwNiwwLDAsMCwxNSw3LDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDcsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwKLSAgICA4NCwxMTQsNCwwLDAsMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTU5LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKLSAgICAwLDExNCwyMjAsMCwwLDAsMjQsNywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsCi0gICAgMzAsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsCi0gICAgMTE0LDE1OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwxMTQsMTcsMSwwLDAsMjcsNywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsCi0gICAgODMsNDEsNiw3OCwxMTQsMzAsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LAotICAgIDExMCwxMDMsNjIsMTE0LDE3NiwwLDAsMCwxMTQsNDMsMSwwLDAsODQsNDEsMSwKLSAgICAxMTQsNDQsMSwwLDAsNDEsMiwxMTQsNzEsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAxMTQsMTYsMSwwLDAsMzAsNywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsNCwwLDAsCi0gICAgMCw0MSwyLDExNCw3MSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyLDEsMCwKLSAgICAwLDMzLDcsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLAotICAgIDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMjksMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMzEsMiwwLDEsMTE2LDIsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLDIsMCwKLSAgICA4Myw0MSwyLDEyMiw5OCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDExMCw5NywxMDksMTAxLAotICAgIDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwKLSAgICAxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwKLSAgICA0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwzOCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLAotICAgIDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwKLSAgICAzLDExNCwxNTMsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsMTgxLDAsMCwwLAotICAgIDQxLDIsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDUsMSwwLDAsCi0gICAgMzYsNywwLDAsMTE1LDQsMCwwLDAsMCw3LDE2LDEsMTIyLDI4LDk1LAotICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDExLDExNCw1NywKLSAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw3MiwwLAotICAgIDAsMCwxMTQsMTksMSwwLDAsMTE0LDIwNiwwLDAsMCwxMTQsMjIwLDAsMCwKLSAgICAwLDExNCwxNywxLDAsMCwxMTQsMTYsMSwwLDAsMTE0LDIsMSwwLDAsCi0gICAgMTE0LDUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI1MiwwLDAsMCwxMSw3LAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMTIsMSwxMiwzLDE4LDksMTIsMywxMiwKLSAgICAzLDEyLDMsMTIsMywxMTQsMjUyLDAsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCi0gICAgMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDQsMCwxMDAsNiwwLAotICAgIDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDEsNCwwLDEwMCwKLSAgICA4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw0LAotICAgIDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCwxMzEsMSwwLAotICAgIDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMCwwLDEwMCwxMywwLDEwMCwKLSAgICAxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw0LDAsMTAwLDEwLAotICAgIDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCi0gICAgMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMCw1MSwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsNjgsOTMsMzQsMCwxMjUsCi0gICAgMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDE2LAotICAgIDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwxMTMsMTYsMCwxMTMsMTYsCi0gICAgMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsMTA4LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwKLSAgICAzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAotICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwxMTQsNywwLAotICAgIDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LAotICAgIDYwLDAsMCwwLDExNCw3NSwxLDAsMCw0MSwyLDExNCwxMiwxLDAsMCwKLSAgICAyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsNzUsMSwwLDAsNTMsNywwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCw0LDIyLDEsMTUsMSwxMjIsMjgsODAsOTcsMTE2LAotICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LAotICAgIDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDk0LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMTUsMjgsMCwxMTYsMiwwLDEwNiwKLSAgICAzLDAsMTAwLDEsMCwxMTYsNCwwLDEzMSwyLDAsMSwxMTAsMCwwLDEyMCwKLSAgICA1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLAotICAgIDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDM4LDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCw4MSwwLDEsMSwxLDExOSwzOCwwLAotICAgIDg5LDExMywzOCwwLDg4LDExMywzOCwwLDg3LDEwMCwyLDAsODMsMTAwLDIsMCwKLSAgICA4Myw0MSwzLDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LAotICAgIDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwKLSAgICAxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywKLSAgICAxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsCi0gICAgNDEsNiwxMTQsNywwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwxMTQsMTY3LDAsMCwwLDExNCwxNjgsMCwwLDAsMTE0LDE2OSwwLAotICAgIDAsMCwxMTQsMTU0LDAsMCwwLDQxLDMsMTE0LDEyLDEsMCwwLDExNCwzNSwKLSAgICAwLDAsMCw5MCw0LDEwNCwxMTEsMTExLDEwNywxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA0LDExMSwxMTEsMTA3LDExNSw2MSw3LDAsMCwxMTUsMTYsMCwwLDAsMCw3LAotICAgIDksMSwxOSwxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwyMiwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTcsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI1LDEsMCwxMTAsMCwwLDEyMSwxNywwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwKLSAgICAxMTYsNCwwLDEwNywxMCwwLDExNCw5MiwwLDEsMSwxLDEyNCwwLDAsMTA2LAotICAgIDUsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDYwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwyMTAsNzEsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKLSAgICAzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsCi0gICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExMiwKLSAgICAxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsOTksOTcsOTksCi0gICAgMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTAsMTExLDMyLDEwMiwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwKLSAgICA0NCwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LDExMSwxMTAsMTAxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwzMCwwLDAsMCw0MSw2LDExNCwzLAotICAgIDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzYsMSwKLSAgICAwLDAsMTE0LDc5LDAsMCwwLDExNCw4MCwxLDAsMCw0MSwzLDExNCwxMiwKLSAgICAxLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDc4LDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMCw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LAotICAgIDEwNCwxMDEsNzgsNywwLDAsMTE1LDE2LDAsMCwwLDAsOCwxMiwxLDE1LAotICAgIDEsMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTIyLDMxLDgwLDk3LDExNiwKLSAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDYsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTEzLDAsMCwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMSwwLDEzMSwKLSAgICAyLDAsMTE0LDM5LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCw5MiwyLDAsMTI1LDMsMCwxMjUsNCwwLDExMCwyMSwwLDEyNCwyLDAsCi0gICAgMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwxMDMsMCwwLDEyNSwKLSAgICA0LDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDg1LDAsMTE2LDMsCi0gICAgMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4MywxMTYsNCwwLDEyNCwxLAotICAgIDAsMTAwLDAsMCwxMzEsMiwwLDEyNSw1LDAsMTI0LDQsMCwxMjQsNSwwLAotICAgIDk1LDUsMCwxMjQsNSwwLDgzLDQxLDIsNzgsMTE0LDE2NiwwLDAsMCw0MSwKLSAgICA2LDExNCw2MCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxNSwxLDAsMCwKLSAgICAxMTQsMTc0LDAsMCwwLDExNCwyMTcsMCwwLDAsMTE0LDIyMSwwLDAsMCw0MSwKLSAgICA2LDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw3OCwxLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCwxNzEsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTYsCi0gICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDcsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LAotICAgIDEsNiwxLDEyLDEsMTMsMSwxNSwxLDksMSwxMjIsMjcsODAsOTcsMTE2LAotICAgIDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwKLSAgICAwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNTIsCi0gICAgMCwwLDAsMTAzLDAsMCwxMjUsNCwwLDEyMCwyMzksMCwxMjQsMiwwLDY4LAotICAgIDkzLDIwMywwLDEyNSw1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LAotICAgIDIsMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQ2LDAsMTEzLDEzLDAsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw2LDAsCi0gICAgMTI0LDYsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDEzLDAsMTE2LDQsMCwxMjQsCi0gICAgNiwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsMTA5LDAsMTI0LDYsMCwxMDYsNSwKLSAgICAwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw3LDAsMTEwLDE4LDAsCi0gICAgMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDYsMCwxMzEsMiwwLDEyNSwKLSAgICA3LDAsMTI0LDcsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE0NSwwLDExMywxMywKLSAgICAwLDExMCwwLDAsMTI0LDcsMCwxMDYsNywwLDEwMCwxLDAsMTA3LDksMCwKLSAgICAxMTQsMTY0LDAsMTI0LDcsMCw4MywxMjQsNywwLDEwNiw4LDAsMTI1LDgsMCwKLSAgICAxMjQsOCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjAwLDAsMTE2LDksMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCw0LDAsMTA2LDEwLAotICAgIDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEzLDAsMTEzLDEzLDAsODcsMTE2LAotICAgIDExLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTI1LDcsMCwxMjQsNCwKLSAgICAwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LDAsODMsMTAwLDEsMCw4Myw0MSwKLSAgICA0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSw0Niw3OCwxMTQsMTQsMSwwLDAsMTIyLDE5LDExNSwxMTIsMTAxLDk5LDMyLDEwOSwKLSAgICAxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDEyLDExNCwKLSAgICAxOTMsMCwwLDAsMjE4LDMsMTE1LDExNiwxMTQsMjE4LDUsOTgsMTIxLDExNiwxMDEsMTE1LAotICAgIDExNCw4MSwxLDAsMCwxMTQsNjAsMCwwLDAsMTE0LDE0LDEsMCwwLDExNCwKLSAgICA4MiwxLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDE1NCwKLSAgICAwLDAsMCwxMTQsMTk4LDAsMCwwLDExNCwyMTcsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTIsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEzLAotICAgIDEsMCwwLDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5MCw1LDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDc4LDEsMCwwLDExNCwKLSAgICAxNzgsMCwwLDAsMTE0LDE3MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMTAsNywwLDAsMTE1LDQwLDAsMCwwLDAsNSw2LDEsCi0gICAgMTMsMSwyMSwxLDYsMSwxNSwxLDEyLDEsMTUsMSwyMSwyLDE4LDEsCi0gICAgMTIsMSw2LDEsMTUsMSw0LDEsOSwxLDEyLDEsMTUsNSwyMCwyLAotICAgIDE1LDEsOSwxLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLAotICAgIDAsMCwwLDYsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTQzLDAsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyNCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMiwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMTI1LDQsCi0gICAgMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNjEsMCwxMDAsMSwwLAotICAgIDgzLDEyNCw0LDAsMTA2LDMsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzNSwwLAotICAgIDEyNCw0LDAsMTA2LDQsMCwxMjUsNSwwLDEyNCw1LDAsMTE0LDEyOCwwLDEwMCwKLSAgICAyLDAsMTI0LDQsMCw5NSw1LDAsMTE2LDYsMCwxMjQsMSwwLDEyNCw1LAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwzLDAsMTI0LDQsMCw5NSw0LDAsCi0gICAgMTI0LDQsMCw4MywxMDAsMSwwLDgzLDExMCw0LDAsMTI0LDQsMCw4MywxMDAsCi0gICAgMSwwLDgzLDQxLDMsMTIyLDk4LDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCi0gICAgMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDc4LDkwLDksMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsNywwLDAsMCwxMTQsMzUsMCwwLAotICAgIDAsMTE0LDg2LDEsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDIyMSwwLDAsMCwKLSAgICAxMTQsMjE4LDAsMCwwLDExNCw2MSwxLDAsMCw0MSw2LDExNCwxMiwxLDAsCi0gICAgMCwxMTQsMTU5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTMsMSwwLDAsCi0gICAgMTE0LDE3OCwwLDAsMCwxMTQsODUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE0LDEsMCwwLDE0Miw3LAotICAgIDAsMCwxMTUsMjYsMCwwLDAsMCw0LDEyLDEsMTIsMSwyMSwxLDEyLAotICAgIDEsNCwxLDE1LDEsOSwxLDYsMyw5LDEsMjQsMSw0LDIsNywKLSAgICAyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCwKLSAgICA0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwKLSAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwKLSAgICAxLDAsODMsMTI0LDMsMCwxMDYsMSwwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LAotICAgIDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwKLSAgICAzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywKLSAgICAxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAotICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCi0gICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LAotICAgIDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTQsMSwwLDAsCi0gICAgMTE0LDE3MCwwLDAsMCw0MSw0LDExNCwxMiwxLDAsMCwxMTQsMTU5LDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNSwxLDAsMCwxNjQsCi0gICAgNywwLDAsMTE1LDgsMCwwLDAsMCw4LDE4LDEsMTIsMSw0LDEsCi0gICAgMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMTIsMTE0LDU3LDAsMCwwLDExNCwKLSAgICA1NiwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwxOSwKLSAgICAxLDAsMCwxMTQsNzUsMSwwLDAsMTE0LDgwLDEsMCwwLDExNCw4MSwxLAotICAgIDAsMCwxMTQsODIsMSwwLDAsMTE0LDg2LDEsMCwwLDExNCwxNCwxLDAsCi0gICAgMCwxMTQsMTUsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc0LDEsMCwwLDQ5LAotICAgIDcsMCwwLDExNSwyMiwwLDAsMCwxMiwyLDYsMiwxOCw4LDE4LDE3LAotICAgIDE4LDE3LDE4LDE1LDMsMSwxOCwzMSwzLDEsMjEsMjEsMywxLDExNCw3NCwKLSAgICAxLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAzLDAsMCwwLDY0LDAsMCwwLDExNSwxMzMsMCwwLDAsMTAxLDAsMCwKLSAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLDkwLDcsMCwxMDAsNiwwLAotICAgIDEwMCw3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLAotICAgIDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDExLDAsCi0gICAgMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLAotICAgIDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCw5MCwxNCwwLDEwMCwxMCwKLSAgICAwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LAotICAgIDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsCi0gICAgMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwKLSAgICAzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsCi0gICAgMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwKLSAgICAxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw3LAotICAgIDAsMCwwLDExNSwxMjIsMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwKLSAgICAwLDEyNCwyLDAsNjgsOTMsNDQsMCw5MiwyLDAsMTM3LDAsMCwxMjUsNCwKLSAgICAwLDEyNCwzLDAsMTA2LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwKLSAgICAxMDAsMiwwLDEzNCwwLDAsMTI0LDQsMCw2OCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMSwxMTMsMTMsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMSwwLDEyNCwxLAotICAgIDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsMCwwLDk1LDIsMCwxMDAsNiwwLAotICAgIDEyNCwwLDAsOTUsMywwLDExNiw0LDAsMTMxLDAsMCwxMjQsMCwwLDk1LAotICAgIDUsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LDAsMCw5NSw2LDAsMTAwLDUsCi0gICAgMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwKLSAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAotICAgIDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLAotICAgIDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwKLSAgICAxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCi0gICAgMCw1MSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLAotICAgIDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwwLDEwMiwyLDAsODYsMSwxMTMsMywKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwKLSAgICAyMiwwLDAsMCwxMTQsNTgsMSwwLDAsNDEsMSwxMTQsMTcwLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NywwLDAsMCwxOTMsCi0gICAgNywwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwzOCw3MCwxMDUsMTA4LDEwMSwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwKLSAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsCi0gICAgMTE0LDYyLDExNCwxMTYsMCwwLDAsMTE0LDI5LDAsMCwwLDc4LDExNCwxMzksMCwKLSAgICAwLDAsNDEsNywxMTQsMTk4LDAsMCwwLDIxOCw4LDk1LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMTE1LDExNCwzNSwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsMTAxLDExNiwyMTgsMTEsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsMTksOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwKLSAgICAxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSw0MSw1LDExNCw3MSwKLSAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDExNSwxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDE3MCwwLAotICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsNzIsMCwwLDAsMTg3LDcsMCwwLAotICAgIDExNSwxNiwwLDAsMCwwLDQsNiwxLDE5LDEsMzYsMSw5LDIsMTUsCi0gICAgMSw5LDEsMTIsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTMsMCwwLDAsMTAwLDMsMCwxMjQsMCwwLDk1LDAsMCwxMDAsMiwwLAotICAgIDgzLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsCi0gICAgMTA1LDEwOSwxMDEsNDYsMTE0LDI5LDAsMCwwLDc4LDExNCwxMzksMCwwLDAsNDEsCi0gICAgMSwxMTQsODksMSwwLDAsNDEsMSwxMTQsNzEsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc1LDEsMCwKLSAgICAwLDIwMSw3LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsCi0gICAgOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDM3LDAsMTAwLAotICAgIDEsMCwxMDMsMCwwLDEwMiwyLDAsODMsMTI0LDIsMCwxMDYsMSwwLDEyNCwKLSAgICAyLDAsMTA2LDIsMCwxMTIsNTUsMCwxMDMsMCwwLDEwMiwyLDAsODMsNDEsCi0gICAgMiwxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsCi0gICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LAotICAgIDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKLSAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLDExNCwxNCwxLDAsMCwKLSAgICAxMTQsMTcwLDAsMCwwLDExNCwyMjEsMCwwLDAsNDEsMywxMTQsNzEsMCwwLAotICAgIDAsMTE0LDE1OSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxNjYsMCwwLDAsMjA3LAotICAgIDcsMCwwLDExNSw4LDAsMCwwLDAsNywxNSwxLDEyLDEsMTAsMSwKLSAgICAxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSw2LDAsMCwwLDAsMCwwLAotICAgIDAsNywwLDAsMCw3LDAsMCwwLDY3LDAsMCwwLDExNSw0MCwwLAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw2LAotICAgIDAsMTE2LDAsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsNiwwLAotICAgIDEwMCwyLDAsMTI0LDQsMCwxMzEsMiwyLDgzLDQxLDMsNzgsMTE0LDE3MCwwLAotICAgIDAsMCwxMTQsMjIxLDAsMCwwLDQxLDEsMTE0LDI0MCwwLDAsMCw0MSw3LAotICAgIDExNCw3MSwwLDAsMCwxMTQsMjQ0LDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LAotICAgIDM1LDAsMCwwLDExNCwyMjksMCwwLDAsMTE0LDEzLDEsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDg2LDEsMCwwLDIxOSw3LDAsMCwxMTUsNiwwLDAsMCwKLSAgICAwLDEsMTUsMSwxOCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCwxNCwwLDAsMCwxNSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjQwLDEsMCwwLDEwMCwxLDAsMTI1LDMsMCwxMjQsMSwwLAotICAgIDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwzLDAsMjUsMTI1LDQsMCwKLSAgICAxMjEsMzQsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMTIsNDksMCwxMTYsCi0gICAgMywwLDEwNiw0LDAsMTMxLDAsMCwxMzEsMSwwLDEwNiw1LDAsMTI1LDUsCi0gICAgMCw4NywxMTAsMjQsMCw0LDExNiw2LDAsMTA3LDEwLDAsMTE0LDg1LDAsMSwKLSAgICAxLDEsMTAwLDEwLDAsMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsCi0gICAgMTI0LDAsMCwxMDYsNywwLDEwNywzLDAsMTE0LDEyMywwLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMzEsMCwwLDEsMTI0LDUsMCwxMjQsMCwwLDk1LDcsMCwxMTAsCi0gICAgMCwwLDExNiw5LDAsMTMxLDAsMCwxMTQsMTU2LDAsMTI0LDAsMCwxMDYsMTAsCi0gICAgMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDExLDAsMTMxLDAsMCwxMjUsNywwLAotICAgIDExMCwxNSwwLDEyNCwwLDAsMTA2LDEyLDAsMTI1LDYsMCwxMjQsNCwwLDEyNSwKLSAgICA3LDAsMTI0LDcsMCwxMjQsNiwwLDEwNyw2LDAsMTE0LDUxLDEsMTE2LDEzLAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTMxLDIsMCwxMjUsOCwwLAotICAgIDEyMCwxMDMsMCwxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDc3LDAsOTIsMiwwLAotICAgIDEyNSw5LDAsMTI1LDEwLDAsMTAwLDUsMCwxMjQsOSwwLDIzLDEyNSwxMSwwLAotICAgIDExNiwxMywwLDEyNCw4LDAsMTI0LDExLDAsMTMxLDIsMCwxMjUsMTIsMCwxMTYsCi0gICAgMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwyMTEsMCwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTI0LDgsMCwxMDMsMSwwLAotICAgIDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsMjExLDAsODcsMTE2LDE3LDAsMTI0LDgsCi0gICAgMCwxMzEsMSwwLDEyNSwzLDAsMTEwLDAsMCwxMjAsMTI2LDAsMTI0LDAsMCwKLSAgICAxMDYsMTQsMCw2OCw5MywxMTUsMCw5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwKLSAgICAxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMjQsOSwwLDIzLAotICAgIDEzMSwyLDAsMTI1LDEyLDAsMTE2LDE4LDAsMTAwLDYsMCwxMDYsMTksMCwxMjQsCi0gICAgMTIsMCwxMzEsMSwwLDEwMCw3LDAsMTAwLDMsMCwxMzEsMSwxLDEsMTI0LAotICAgIDcsMCwxMjQsOSwwLDIzLDEyNCw2LDAsMTA3LDYsMCwxMTQsNjEsMSwxMTYsCi0gICAgMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwxNzYsMSwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTAwLDgsMCwxMjQsMiwwLAotICAgIDEzMSw1LDAsODMsMTEzLDYxLDEsMTEzLDYxLDEsODcsMTI0LDMsMCwxMTQsMjM2LAotICAgIDEsMTE2LDE4LDAsMTAwLDksMCwxMDYsMTksMCwxMjQsOCwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxLDExNiwyMCwwLDEyNCwxLDAsMTAwLDgsMCwxMzEsMiwwLAotICAgIDEyNSwxMywwLDEyNCw4LDAsMTAzLDEsMCwxMjQsMTMsMCw5NSwyMSwwLDEyNCwKLSAgICAxMywwLDgzLDEwMCw4LDAsODMsNDEsMTEsMTIyLDEyNSw4NCwxMTQsMTIxLDMyLDExNiwKLSAgICAxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAotICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LAotICAgIDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0Niw3MCwxMTQsMTE2LDAsMCwwLDExNCwxMTUsCi0gICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCw3MiwwLDAsMCwxMjIsOSwxMTYsCi0gICAgMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsMTI1LDExNCwxNDYsMCwwLDAsNzgsMTIyLDI1LAotICAgIDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAotICAgIDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNCwxMzksMCwwLDAsNDEsMjIsCi0gICAgMTE0LDMyLDAsMCwwLDExNCwzOSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDMsMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCw1NCwxLDAsMCwxMTQsNDAsCi0gICAgMCwwLDAsMTE0LDg5LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMTQsNiwwLDAsMCwxMTQsOTIsMSwwLDAsMTE0LAotICAgIDE0MCwwLDAsMCwxMTQsOTEsMSwwLDAsMTE0LDI4LDAsMCwwLDExNCw4OCwKLSAgICAxLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDg2LDEsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMTUzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMjE3LDAsMCwKLSAgICAwLDExNCwyMjEsMCwwLDAsNDEsMTQsMTE0LDcxLDAsMCwwLDExNCwxNTksMCwKLSAgICAwLDAsMTE0LDEzLDEsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTE0LDE4NCwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsOTAsMTIsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LDk3LAotICAgIDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDU4LDEsMCwwLDExNCwyNDQsMCwwLAotICAgIDAsOTAsMTMsMTA1LDExMCwxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwKLSAgICA5MCw5LDEwMiwxMTcsMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTc4LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKLSAgICAxNCwxLDAsMCwyMjQsNywwLDAsMTE1LDY4LDAsMCwwLDAsMyw2LAotICAgIDEsMTksMSwzLDEsMzQsMSwxMywxLDExLDEsMTUsMSwxMCwxLDEyLAotICAgIDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLDIyLAotICAgIDEsMTAsMSwxNSwxLDEyLDEsMzIsNCwxNSwyLDIyLDEsMjIsMSwyNSwKLSAgICAxLDE2LDEsMTIsMSwzMiwxLDYsMSwxOSwxLDE1LDEsMTIsMSw0LAotICAgIDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICA5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwxLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMzEsMCwxMTYsMSwwLAotICAgIDEwNiwyLDAsMTI0LDEsMCwxMTIsMzMsMCwxMTYsMSwwLDEwNiwzLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLDAsNCwxMTYsNCwwLAotICAgIDExNiw1LDAsMTE2LDYsMCwxMDIsMywwLDEwNywxMCwwLDExNCw3NSwwLDEsCi0gICAgMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDExNiw3LDAsCi0gICAgMTA2LDgsMCwxMDYsOSwwLDEwMCwxLDAsMTMxLDEsMCwxMTUsMTEyLDAsMTE2LAotICAgIDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTEsMCwxMTAsMTExLAotICAgIDAsMTE2LDEwLDAsMTMxLDAsMCwxMjUsMywwLDEyMCw5MCwwLDEyNCwyLDAsCi0gICAgNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDEyLDAsMTAwLDIsMCwKLSAgICAxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LDAsMTI1LDcsMCwxMjQsCi0gICAgNiwwLDExNCwxOTEsMCwxMDAsMywwLDEwNiwxMywwLDEyNCw1LDAsMTI0LDcsCi0gICAgMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LDgsMCwxMTAsNiwwLAotICAgIDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNSwwLDEyNCw4LDAsMTMxLAotICAgIDEsMCwxLDExMywxMjgsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMTEsMCwKLSAgICAxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMTYsMTYsMCwxMzEsMSwwLDExNCwKLSAgICAxMCwxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsNjgsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDE3LDAsMTEwLDAsMCwxMDAsNiwwLDgzLDQxLAotICAgIDcsMTIyLDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LAotICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDExNiwwLDAsCi0gICAgMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsMjgsMCwKLSAgICAwLDAsMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwxMjQsMSwKLSAgICAwLDEwNiwwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsMTE0LDQsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTQwLDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwKLSAgICAwLDkwLDIsMTAyLDExMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNSwwLDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MiwKLSAgICA4LDAsMCwxMTUsMiwwLDAsMCw5LDAsMTIyLDQxLDcwLDEwNSwxMDgsMTAxLAotICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LAotICAgIDEwNCwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDExNSwxMDEsMTE2LAotICAgIDk5LDExMSwxMDksMTEyLDYyLDc4LDQxLDE4LDExNCwzNSwwLDAsMCwxMTQsMywwLAotICAgIDAsMCw5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTQsNDUsMCwwLDAsCi0gICAgMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LDExNiwKLSAgICAxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDcsMCwwLDAsMTE0LDgsMCwKLSAgICAwLDAsMTE0LDksMCwwLDAsMTE0LDkwLDEsMCwwLDExNCw5MSwxLDAsCi0gICAgMCwxMTQsMTM0LDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMTQwLDAsMCwwLAotICAgIDIxOCwzLDk3LDEwMCwxMDAsMTE0LDEwLDAsMCwwLDExNCw5MiwxLDAsMCw0MSwKLSAgICA5LDExNCw3MSwwLDAsMCwxMTQsMzUsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLAotICAgIDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwKLSAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDcyLDEsMCwKLSAgICAwLDExNCw2NywwLDAsMCwxMTQsNjYsMSwwLDAsMTE0LDU4LDEsMCwwLAotICAgIDkwLDgsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDk0LDEsMCwwLDEzLDgsCi0gICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsMSwzMSwxLDIyLAotICAgIDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsMSw2LDEsMjcsCi0gICAgMiw2LDEsMTcsMSw5LDEsMTgsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCi0gICAgMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsCi0gICAgMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCw4Myw0MSwzLDk3LDIwLDEsMCwwLDY1LDMyLDk5LDEwOCw5NywKLSAgICAxMTUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKLSAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwKLSAgICAxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwzMiwKLSAgICAxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMDAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTA4LAotICAgIDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LAotICAgIDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAotICAgIDE5LDAsMCwwLDExNSw0NiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMTUsMzMsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LDAsMCwKLSAgICAxMzYsMSwwLDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwKLSAgICAxMDQsMTExLDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAotICAgIDEwNSw5OCw0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwKLSAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwKLSAgICA0NiwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwwLAotICAgIDQxLDIsMTE0LDEyLDEsMCwwLDExNCw5MywxLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwyMTgsMjQsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCi0gICAgMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNTQsOCwwLDAsMTE1LDYsMCwwLDAsMCwyLDEyLDEsMjEsMSwxMjIsCi0gICAgNTQsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDQxLDMsMTE0LDEyLAotICAgIDEsMCwwLDExNCw5MywxLDAsMCwxMTQsMTAwLDEsMCwwLDExNCw0LDAsCi0gICAgMCwwLDQxLDIsMTE0LDEyLDEsMCwwLDExNCw5MywxLDAsMCwxMTQsNSwKLSAgICAwLDAsMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsNDQsOCwKLSAgICAwLDAsMTE1LDQsMCwwLDAsMCwxMCwyMSw2LDEyMiwyMCw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAotICAgIDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMTYsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSwKLSAgICA0MSwyLDExNCw0NywwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMSwxMTQsNzEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKLSAgICAwLDAsMTE0LDEwMSwwLDAsMCw2Miw4LDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCi0gICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDQxLDE1LDExNCw1NywwLDAsMCwxMTQsNTYsCi0gICAgMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzIsMCwKLSAgICAwLDAsMTE0LDc1LDEsMCwwLDExNCwxNzMsMCwwLDAsMTE0LDE1LDEsMCwKLSAgICAwLDExNCwxNjYsMCwwLDAsMTE0LDg2LDEsMCwwLDExNCwxNCwxLDAsMCwKLSAgICAxMTQsOTQsMSwwLDAsMTE0LDE5LDEsMCwwLDExNCwxMDEsMSwwLDAsMTE0LAotICAgIDEwMSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsODcsMSwwLDAsMTc4LDcsMCwKLSAgICAwLDExNSwyMCwwLDAsMCwxMiw3LDYsMiwxMiwxNCwxMiw0LDYsMiwKLSAgICAxMiwxMiwxMiw1LDE1LDQ1LDEyLDMxLDE4LDE4LDExNCw4NywxLDAsMCw5OSwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDY0LDAsMCwwLDExNSw0NiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsCi0gICAgMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLAotICAgIDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsCi0gICAgOTAsNSwwLDEwMCw2LDAsODMsNDEsNywyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywKLSAgICAxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsCi0gICAgOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyNCw2NSwKLSAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsCi0gICAgNCwxLDAsMCw0MSwxLDExNCw3MSwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzUsMCwwLDAsNzIsCi0gICAgOCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw5NSw3MywxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSw0LDAsMCwwLDAsMCwwLAotICAgIDAsNCwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywKLSAgICAxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwKLSAgICA3OCw0MSwyLDExNCwxMDYsMCwwLDAsMTE0LDEwNywwLDAsMCw0MSw0LDExNCwKLSAgICA3MSwwLDAsMCw5MCw4LDEwMSwxMjAsOTksOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksCi0gICAgMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsCi0gICAgMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDgxLDAsMCwwLDc2LDgsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICA3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMjAsCi0gICAgMTA1LDExNiw5NSw5NSw3OCw0MSw2LDExNCw1NywwLDAsMCwxMTQsNTYsMCwwLAotICAgIDAsMTE0LDU4LDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsNzUsMCwwLDAsCi0gICAgMTE0LDgxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxMDIsMSwwLDAsNjgsOCwKLSAgICAwLDAsMTE1LDYsMCwwLDAsMTIsMiw2LDIsMTIsNCwxMTQsMTAyLDEsCi0gICAgMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMDAsMSwwLDEyNCwyLDAsMTAwLDIsMCwyNCwxMzEsMiwwLDEyNSwKLSAgICAzLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTI0LDIsMCwxMDcsMCwKLSAgICAwLDExNCw1NSwwLDExNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTEwLDAsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMCwwLAotICAgIDExNCw4NywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLDEyNCwwLDAsMTMxLAotICAgIDIsMCw4MywxMjQsNCwwLDgzLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwKLSAgICAxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwKLSAgICA5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwyOSwwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsCi0gICAgMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLAotICAgIDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsODQsMCwwLDAsCi0gICAgMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMTE0LDM0LDAsMCwwLDExNCwzMSwKLSAgICAwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCw0NywwLDAsMCw0MSw1LDExNCwKLSAgICA2NywwLDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDExNCwxMjgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLAotICAgIDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw4MSw4LDAsCi0gICAgMCwxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxNSwxLDEwLDEsCi0gICAgMTE0LDEwNSwxLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsCi0gICAgMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMCwwLAotICAgIDgzLDExNiwxLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwKLSAgICA3OCw0MSwyLDExNCwxNSwxLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDQsMTE0LAotICAgIDc4LDEsMCwwLDExNCw2NywwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDE3MCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLAotICAgIDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwKLSAgICAxMDEsMTAzLDk3LDk5LDEyMSw5MCw4LDAsMCwxMTUsOCwwLDAsMCwwLDMsCi0gICAgMTgsMSwxMiwxLDQsMSwxMTQsMTA2LDEsMCwwLDk5LDMsMCwwLDAsCi0gICAgMCwwLDAsMCw5LDAsMCwwLDI2LDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwzNCwxLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsCi0gICAgMCwxMDYsMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsCi0gICAgMCwxMjQsMCwwLDExNiwwLDAsMTA2LDUsMCwxMDcsNiwwLDEyNSwzLDAsCi0gICAgMTIwLDI0MCwwLDExNiwwLDAsMTA2LDEsMCw2OCw5MywyMjUsMCwxMjUsNCwwLAotICAgIDExNiw2LDAsMTMxLDAsMCwxNDMsOTMsMCwxLDEyMSwxMywwLDEyNCw0LDAsCi0gICAgMTA2LDcsMCwxMjUsNSwwLDg3LDExMCw1NCwwLDQsMTE2LDgsMCwxMDcsMTAsCi0gICAgMCwxMTQsMTM4LDAsMSwxLDEsMTE2LDksMCwxMjQsNCwwLDEyNCwwLDAsCi0gICAgMTI0LDEsMCwxMzEsMywwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMiwwLDEwNywKLSAgICA4LDAsMTE0LDEzNCwwLDExOSw1MywwLDExMCwwLDAsODksMTEwLDE5LDAsODgsCi0gICAgMTI0LDUsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwKLSAgICA2LDAsODcsMTAwLDIsMCw4MSw4OCwxMjQsNiwwLDEwMCwyLDAsMTA3LDksCi0gICAgMCwxMTQsNTMsMCwxMjQsMywwLDEyLDExNCwxNSwxLDEyNCwwLDAsMTE2LDAsCi0gICAgMCwxMDYsNSwwLDEwNyw2LDAsMTE0LDE1LDEsMTE2LDAsMCwxMDYsNSwwLAotICAgIDEyNCwwLDAsMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLAotICAgIDEyNSw4LDAsODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyNDcsCi0gICAgMCwxLDEsMSwxMjQsNiwwLDgzLDg5LDExMywxOSwxLDg4LDEyNCw4LDAsCi0gICAgMTAwLDIsMCwxMDcsOCwwLDExNCw4LDEsMTI0LDYsMCw4MywxMjQsOCwwLAotICAgIDgzLDExMywyMiwxLDEyNCw2LDAsODMsMTEzLDUzLDAsMTEzLDUzLDAsODcsMTAwLAotICAgIDIsMCw4MywxMDAsMiwwLDgzLDQxLDMsMTIyLDIzLDcwLDEwNSwxMTAsMTAwLDMyLAotICAgIDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEyMiwyMiwxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNzgsNDEsMTEsMTE0LDcsMCwKLSAgICAwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NywwLAotICAgIDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LDczLDAsMCwKLSAgICAwLDExNCwxMDIsMSwwLDAsMTE0LDE0LDEsMCwwLDExNCwyMTAsMCwwLDAsCi0gICAgMTE0LDEwNiwxLDAsMCwxMTQsMjA5LDAsMCwwLDQxLDksMTE0LDY3LDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMTMsMSwwLDAsOTAsOSwxMDUsMTE1LDk1LAotICAgIDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE0LDc4LDEsMCwwLDExNCwxNCwxLDAsMCwKLSAgICAxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDIwOSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTAsCi0gICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDgsMCwwLDExNSw0OCwKLSAgICAwLDAsMCwwLDIsOSwxLDE5LDQsMTUsMSwxNiwxLDEwLDEsMywKLSAgICAxLDEzLDEsMTMsMSwxOCwxLDEyLDEsMTEsMiwyNCwxLDEyLDIsMjIsCi0gICAgMSwxMywxLDMsMSwxMywxLDEzLDQsOSwyLDEyLDEsNCwyLDcsCi0gICAgMiwxMSwyLDExNCwxMDgsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTk0LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDQ1LAotICAgIDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsCi0gICAgMiwwLDEwMCwyLDAsMTA3LDAsMCwxMTQsNzIsMCwxMTYsNSwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExMCwwLDAsMTI0LDEsMCwxMTQsMTU2LDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwxMTUsMTA4LDAsMTE2LAotICAgIDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTMsMTU2LDAsMTI0LDEsCi0gICAgMCwxMTYsNiwwLDEwNiw3LDAsMTA3LDcsMCwxMTQsMTU2LDAsMTAwLDUsMCwKLSAgICAxMjUsMywwLDExNiw4LDAsMTI0LDMsMCwxMDYsMywwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEzLDE1NiwwLDExMCwwLDAsMTI0LDAsCi0gICAgMCwxMiwxMTQsMTkwLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE5MCwKLSAgICAwLDExNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwKLSAgICAxMDAsNywwLDgzLDQxLDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsCi0gICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywKLSAgICAxMTAsMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LAotICAgIDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDEyMywxMjUsMTE0LDg0LDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsCi0gICAgMTA4LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLAotICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwKLSAgICAxMTUsMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiwKLSAgICA2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiwKLSAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwKLSAgICAxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsCi0gICAgNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksCi0gICAgMTAxLDc4LDQxLDksMTE0LDE5MywwLDAsMCwxMTQsODMsMSwwLDAsMjE4LDksCi0gICAgODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw0NywwLDAsMCwxMTQsNjYsCi0gICAgMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsNywwLDAsMCwxMTQsNzMsMCwKLSAgICAwLDAsMjE4LDExLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDQsMTE0LDY3LDAsMCwwLDExNCwxMDMsMSwwLDAsMTE0LDEwNCwxLDAsMCwKLSAgICAxMTQsMTcyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwKLSAgICAxMDEsOTksMTA3LDEzOSw4LDAsMCwxMTUsMjQsMCwwLDAsMCwyLDE1LDEsCi0gICAgMzAsMSwxMiwxLDE1LDEsNiwxLDE1LDEsMTUsMSwxNSwxLDYsMiwKLSAgICAyNywxLDE5LDEsMTE0LDExMSwxLDAsMCwxMjIsMTYsNzgsMTExLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjIsNCwxMjMsMzMsMTE0LAotICAgIDEyNSw5OSwyLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwxMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNTIsMSwwLDAsMTAwLDAsMCwxMjUsMiwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwKLSAgICAyNSwxMjUsMywwLDEyNCwzLDAsMTE0LDE3OCwwLDEyNCwzLDAsMTE2LDEsMCwKLSAgICAxMDYsMiwwLDEwNyw3LDAsMTE0LDYyLDAsMTE2LDMsMCwxMjQsMSwwLDEyNCwKLSAgICAzLDAsMTMxLDIsMCwxLDExMCwwLDAsMTI0LDAsMCwxMTYsMSwwLDEwNiwKLSAgICAyLDAsMTA3LDYsMCwxMTQsODgsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsCi0gICAgMCwyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLAotICAgIDEyMSwxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMywxNzgsMCwKLSAgICA0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE3NCwwLDEsMSwxLDExNiw2LDAsCi0gICAgMTAwLDMsMCwyMywxMDYsNywwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEyNSw1LDAsMTE2LDgsMCwxMjQsNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsCi0gICAgMSwxLDEzMCwxLDAsODksMTEzLDE3OCwwLDg4LDExMCwwLDAsMTE2LDksMCwKLSAgICAxMjQsMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwyMzUsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsCi0gICAgMTMwLDEsMCwxMTAsMTgsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTA2LAotICAgIDExLDAsMTMxLDAsMCwxMjUsNywwLDEyNCwzLDAsMTE0LDQ4LDEsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMTYsMTIsMCwxMjQsNCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDUsMCwKLSAgICAyNSwxMjQsNywwLDEzMSwzLDAsMSwxMTAsMCwwLDEyNCw3LDAsODMsNDEsCi0gICAgNiw3OCwxMTQsMTE2LDAsMCwwLDExNCw4NCwwLDAsMCwxMjIsMjMsNTksMzIsCisgICAgMCwxMTUsMTc5LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKKyAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCisgICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCisgICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCisgICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCwxNDQsMCwxMTYsMCwKKyAgICAwLDEyNCwxLDAsMTE2LDEsMCwxMzEsMiwwLDExNSwxMDIsMCwxMTYsMiwwLAorICAgIDEwMCw0LDAsMTMxLDEsMCwxMzAsMSwwLDExMCw0MiwwLDEyNCwxLDAsMTE2LAorICAgIDYsMCwxMDYsNywwLDEwNyw3LDAsMTE0LDE0NCwwLDEwMCw1LDAsMTI1LDMsCisgICAgMCwxMTYsOCwwLDEyNCwzLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTIsMTE0LDE3NSwwLDEyNCwyLDAsCisgICAgMTAwLDIsMCwxMDcsMiwwLDExNCwxNzUsMCwxMTYsNSwwLDEwMCw2LDAsMTMxLAorICAgIDEsMCwxMzAsMSwwLDEwMCw3LDAsODMsNDEsOCwxMjIsMjgsODYsMTAxLDExNCwKKyAgICAxMDUsMTAyLDEyMSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwKKyAgICAxMDEsMzIsMzQsMTE1LDk3LDExMCwxMDEsMzQsNDYsMTIyLDMxLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LAorICAgIDExNiwxMTQsNDQsMzIsMTEwLDExMSwxMTYsMzIsMTIzLDEyNSwxMTQsMzMsMCwwLDAsMTIyLAorICAgIDE4LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw2MiwKKyAgICA2MSwzMiw0OCwxMjIsMzEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAorICAgIDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExNiwKKyAgICAxMTQsMTA1LDExMCwxMDMsMTIyLDYxLDgwLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTAwLDQ0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTIsMTAxLDExNCwxMDIsCisgICAgMTExLDExNCwxMDksMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEyMiwxNyw2OSwxMDksMTEyLDExNiwxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNzgsNDEsOSwyMTgsMTAsMTA1LDExNSwxMDUsMTEwLDExNSwKKyAgICAxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsOSw4NCwxMjEsMTEyLDEwMSwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsCisgICAgMTY4LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMjE4LDExLAorICAgIDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwxMTEsMTE0LDQxLDQsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxNjksMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsMTQ3LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDE1MSwKKyAgICAzLDAsMCwxMTUsMjQsMCwwLDAsMCwyLDE1LDEsMjcsMSwxMiwxLAorICAgIDEyLDEsNiwxLDE1LDEsMTUsMSwxNSwxLDYsMiwyMSwxLDE5LDEsCisgICAgMTE0LDE4MSwwLDAsMCwxMjIsMTYsNzgsMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjIsNCwxMjMsMzMsMTE0LDEyNSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsOCwwLDAsMCwxMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDAsMSwwLDAsMTAwLDAsMCwxMjUsMiwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLDIsMCwyNSwxMjUsMywwLAorICAgIDEyNCwzLDAsMTE0LDE3NSwwLDEyNCwzLDAsMTE2LDEsMCwxMDYsMiwwLDEwNywKKyAgICA3LDAsMTE0LDU5LDAsMTE2LDMsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsCisgICAgMCwxLDEyNCwwLDAsMTE2LDEsMCwxMDYsMiwwLDEwNyw2LDAsMTE0LDg1LAorICAgIDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLDAsMjUsODMsMTE2LDEsMCwxMDYsCisgICAgMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMjEsMTMsMCwxMjQsNCwwLDEwNiwKKyAgICA0LDAsMTI1LDIsMCw4NywxMTAsNjEsMCw0LDExNiw1LDAsMTA3LDEwLDAsCisgICAgMTE0LDE3NCwwLDEsMSwxLDExNiw2LDAsMTAwLDMsMCwyMywxMDYsNywwLAorICAgIDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSw1LDAsMTE2LDgsMCwxMjQsCisgICAgNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEwMCwwLDAsMTMwLDIsCisgICAgMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDAsMCwxMjQsMiwwLDEzMSwKKyAgICAyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjMyLAorICAgIDAsMTE2LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDEyLDAsMTE2LAorICAgIDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LDAsMTI0LDMsMCwxMTQsMzYsCisgICAgMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDExNiwxMSwKKyAgICAwLDEyNCw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwKKyAgICAxMDAsNSwwLDI1LDEyNCw3LDAsMTMxLDMsMCwxLDEyNCw3LDAsODMsNDEsCisgICAgNiw3OCwxMTQsMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMjIsMjMsNTksMzIsCiAgICAgMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsMTE0LDY3LDAsMCwwLDExNCwxMTUsMCwwLDAsNDEsCi0gICAgMTMsMTE0LDMyLDAsMCwwLDExNCw3LDAsMCwwLDExNCw3MywwLDAsMCwKLSAgICAxMTQsMTE0LDAsMCwwLDExNCwyNDcsMCwwLDAsMTE0LDIxMCwwLDAsMCwyMTgsCi0gICAgOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsNDcsMCwwLDAsMTE0LDE1NCwKLSAgICAwLDAsMCwxMTQsMTA4LDEsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDcsMSwKLSAgICAwLDAsMTE0LDYxLDAsMCwwLDQxLDgsMTE0LDY3LDAsMCwwLDIxOCw3LAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwzNSwwLDAsMCwxMTQsMjM0LDAsMCwKLSAgICAwLDkwLDEzLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDE3MiwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDIzLAotICAgIDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywKLSAgICAxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNTksOCwwLDAsMTE1LDQyLDAsMCwwLAotICAgIDAsMSw2LDEsMTksMSw2LDEsMTUsMSwxNiwyLDE1LDEsMTEsMSwKLSAgICAxMywxLDMsMSwxMywxLDEzLDEsMjIsMSwyNiwxLDE1LDEsMTIsMSwKLSAgICAzMCwyLDE4LDEsNiwyLDEzLDEsMzIsMSwxMTQsMTE0LDEsMCwwLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxNDMsMTgsMCwxLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsODMsODcsMTAwLDEsMCw4MSw4OCwxMDAsMSwwLDgzLDQxLDIsMTIyLAotICAgIDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTQsCi0gICAgMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LAotICAgIDExNCwxLDAsMCw0MSwyLDExNCw2NywwLDAsMCwxMTQsMTEzLDEsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwKLSAgICAxNCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxODYsCi0gICAgOCwwLDAsMTE1LDQsMCwwLDAsMCwyLDEzLDEsMTE0LDExNSwxLDAsCi0gICAgMCw5OSwzLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNzIsMCwwLDAsMTE2LDAsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw0LDAsMTE0LDQ5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsMTEwLDAsMCwxMTYsMiwwLDEwNiwKLSAgICAzLDAsMTMxLDAsMCwxLDEyNCwwLDAsMTE2LDQsMCwxMDYsNSwwLDEwNywKLSAgICA3LDAsMTE0LDg3LDAsMTE2LDYsMCwxMjQsMCwwLDExNiw3LDAsMTMxLDIsCi0gICAgMCw4MywxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwyNSwxMjUsMywwLDEyNCwKLSAgICAzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxNTgsMCwxMTYsMiwwLDEwNiw4LAotICAgIDAsMTMxLDAsMCwxLDEwMCwzLDAsMTA2LDksMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEwMCw0LDAsMTI0LDAsMCwKLSAgICAxMzEsMSwxLDEzMCwxLDAsMTEwLDAsMCwxMTYsMTEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMSwxMjQsMywwLDgzLDQxLDUsOTcsNTAsMSwwLDAsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LAotICAgIDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsCi0gICAgMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwKLSAgICAxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsCi0gICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwKLSAgICAxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiwKLSAgICA5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsCi0gICAgMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsCi0gICAgMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLAotICAgIDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsCi0gICAgMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwKLSAgICAxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE0LDg0LDAsMCwwLDc4LDEyMiw0MCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsCi0gICAgMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLAotICAgIDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICAxMTQsNjcsMCwwLDAsNDEsMTIsMTE0LDExMSwxLDAsMCwxMTQsMTA1LDEsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDcsMCwwLDAsCi0gICAgMTE0LDczLDAsMCwwLDExNCwxMTUsMSwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsCi0gICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE0LDEwNywwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE0LDE1NCwwLDAsMCwxMTQsMTEyLDAsMCwwLDQxLDUsMTE0LDY3LDAsCi0gICAgMCwwLDExNCwxMDMsMSwwLDAsMTE0LDEwNCwxLDAsMCwxMTQsMTgwLDAsMCwKLSAgICAwLDExNCwxNTIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDUsMCwwLDAsMTE0LDExNiwxLDAsMCwxOTIsOCwwLDAsMTE1LDI4LAotICAgIDAsMCwwLDAsOSwxNiwxLDEyLDEsMjEsMSwxMCwxLDE1LDEsMTMsCi0gICAgMSwxMywxLDEyLDEsMTAsMSw2LDEsOSwxLDIxLDEsMTAsMSwxMTQsCi0gICAgMTE2LDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxLDEsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsMTE0LDI1MywwLDEwMCwyLDAsCi0gICAgMTI0LDEsMCwxMDcsNiwwLDExNCw4OSwwLDExNiwxLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsMiwwLDEwMCwyLDAsMTMxLDEsCi0gICAgMCwxLDExNiwwLDAsMTI0LDAsMCwxMDAsMywwLDEzMSwyLDAsMTE0LDg5LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCwxMzEsMSwwLAotICAgIDEsMTEzLDg5LDAsMTEwLDAsMCwxMjAsMTYxLDAsMTI0LDEsMCw2OCw5MywxNTAsCi0gICAgMCwxMjUsMywwLDExNiwwLDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsCi0gICAgMTE1LDk2LDAsMTAwLDQsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsCi0gICAgMywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwxMTYsNywwLDEyNCwyLAotICAgIDAsMTI0LDQsMCwxMzEsMiwwLDEsODcsMTEzLDI0NiwwLDQsMTE2LDgsMCwKLSAgICAxMDcsMTAsMCwxMTQsMjQyLDAsMSwxMjUsNSwwLDEsMTIyLDUzLDAsMTE2LDksCi0gICAgMCwxMjQsNSwwLDEzMSwxLDAsMTA2LDEwLDAsMTE2LDExLDAsMTMxLDEsMCwKLSAgICAxMTQsMjIxLDAsMTI0LDUsMCwxMDYsMTIsMCwxMjQsNCwwLDEwNywyLDAsMTE0LAotICAgIDIyMSwwLDExOSw5NiwwLDExMywyMjEsMCwxMTAsMCwwLDEzMCwwLDAsODcsODksCi0gICAgMTAwLDUsMCwxMDAsNSwwLDEyNSw1LDAsMTI2LDUsMCw4OCwxMTMsMjQ2LDAsCi0gICAgODgsMTEzLDk2LDAsMTEzLDk2LDAsODcsMTEwLDAsMCwxMjQsMCwwLDgzLDQxLAotICAgIDYsMTIyLDIzOCw3MCwxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsCi0gICAgOTcsMTE2LDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsCi0gICAgMTExLDExNywxMDgsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LAotICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LAotICAgIDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDQ2LDMyLDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwKLSAgICAzMiw5NywxMTUsMTE1LDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAotICAgIDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDExNCwyNDcsMCwwLDAsMjUwLDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCwKLSAgICA5NSw5NSwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsMTMsMTE0LDYwLDAsMCwKLSAgICAwLDExNCwyNDYsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTE4LDEsMCwwLDExNCw0NywwLDAsMCwxMTQsNTcsMCwKLSAgICAwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCw4MywxLDAsCi0gICAgMCwxMTQsOSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsODMsNzEsCi0gICAgOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDY3LDAsMCwwLDQxLDYsMTE0LDE4MCwKLSAgICAwLDAsMCwyMTgsOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNCwxMTMsMSwKLSAgICAwLDAsMTE0LDE2LDAsMCwwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDExNCw0MSwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNSwwLDAsMCwyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwKLSAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDIxNiw4LDAsMCwxMTUsMzQsMCwwLAotICAgIDAsMCwxMCwxNSwxLDEyLDEsMTIsMSwxMywxLDE1LDEsMjIsMSwxMywKLSAgICAxLDE1LDEsMjEsMSwzLDEsMTcsMSwxOCw0LDIxLDEsMTUsMSw5LAotICAgIDEsMzIsMSwxMTQsMTIyLDEsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDc4LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsCi0gICAgMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzQsMCwxMjQsMCwwLAotICAgIDEwMCwzLDAsMjUsMTI1LDEsMCwxMDAsNCwwLDEyNCwwLDAsMTA3LDcsMCwKLSAgICAxMTQsNzQsMCwxMjQsMSwwLDEwNiwxLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCwKLSAgICA2LDAsMjUsMTI1LDEsMCwxMTMsNzQsMCwxMTAsMCwwLDEyNCwxLDAsODMsCi0gICAgNDEsNywxMjIsMTY3LDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCwKLSAgICA5NywxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwKLSAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSwKLSAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLAotICAgIDExNiwzMiwxMDMsMTE3LDk3LDExNCw5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTgsMTAxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsCi0gICAgMTEwLDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LAotICAgIDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLAotICAgIDExMiwxMDEsMTE0LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LAotICAgIDExMCwxMTEsMTE5LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMjUxLDAsMCwwLAotICAgIDc4LDExNCw1NywwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxMTYsMCwwLDAsCi0gICAgMTE0LDg0LDAsMCwwLDQxLDIsMTE0LDkzLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw0MSwyLDIxOCw3LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDEwMywxLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwKLSAgICAyMTgsMTcsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLAotICAgIDEwMSw5NSw5NSwyNDgsOCwwLDAsMTE1LDEyLDAsMCwwLDAsNywxNSwxLAotICAgIDEyLDEsMTAsMSwxMiwxLDI1LDEsMTE0LDEyNCwxLDAsMCw5OSwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwKLSAgICAxMzEsMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiw0LDAsMTAyLAotICAgIDIsMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwwLDEyNSwyLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCw4Myw0MSwxLAotICAgIDEyMiw5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsCi0gICAgMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LAotICAgIDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLAotICAgIDMyLDQxLDcsMTE0LDU3LDEsMCwwLDExNCwxMDYsMCwwLDAsMjE4LDE4LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwKLSAgICAxMTUsMTE0LDksMSwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsOCwxLDAsMCwKLSAgICAxMTQsMjMzLDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA1LDAsMCwwLDExNCwyNDEsMCwwLDAsNyw5LDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDI0MSwwLDAsMCw5OSwKLSAgICA1LDAsMCwwLDAsMCwwLDAsOSwwLDAsMCw1LDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwyMjcsMCwwLDAsMTI0LDQsMCwxMDAsMSwwLDEwNywKLSAgICAyLDAsMTE0LDI3LDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDUsCi0gICAgMCwxMTAsNTQsMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDksMCwxMTQsNDUsMCwKLSAgICAxMjQsMSwwLDExMCwzLDAsMTA1LDAsMCwxMjUsNiwwLDExNiwxLDAsMTI0LAotICAgIDYsMCwxMzEsMSwwLDEyNSw3LDAsMTE2LDAsMCwxMjQsMCwwLDEyNCw3LAotICAgIDAsMTI0LDQsMCwxMzEsMywwLDEyNSw1LDAsMTI0LDMsMCwxMTUsMjA3LDAsCi0gICAgMTI0LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDEyMiwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwKLSAgICAxLDAsODMsMTI0LDAsMCwxMTUsMTMyLDAsMTI0LDUsMCw4MywxMTYsMywwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMTYsMywwLDEyNCwwLDAsMTA2LDIsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDI0LDEyNSw4LDAsCi0gICAgMTE2LDQsMCwxMDYsNSwwLDEyNCw1LDAsMTA2LDYsMCwxMDAsMiwwLDExNiwKLSAgICAzLDAsMTI0LDUsMCwxMDYsNiwwLDEzMSwxLDAsMTI0LDgsMCwyNCwxMzMsCi0gICAgMiwwLDI1LDI1LDgzLDExMCwxNiwwLDExNiw3LDAsMTI0LDUsMCwxMjQsMywKLSAgICAwLDExNiwwLDAsMTMxLDMsMCw4MywxMDAsMiwwLDgzLDQxLDQsOTcsMjE0LAotICAgIDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDMsMTA4LAotICAgIDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLDEwMSwxMTQsCi0gICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsCi0gICAgMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsCi0gICAgMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiwKLSAgICA5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsCi0gICAgMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LAotICAgIDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLAotICAgIDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLAotICAgIDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LAotICAgIDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLAotICAgIDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LAotICAgIDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLAotICAgIDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsCi0gICAgMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LAotICAgIDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywKLSAgICAxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiwKLSAgICA1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsODQsMCwwLDAsNzgsMTE0LAotICAgIDExNiwwLDAsMCw0MSw4LDExNCwxMTYsMSwwLDAsMTE0LDEyNCwxLDAsMCwKLSAgICAxMTQsMTM0LDAsMCwwLDExNCwzMSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsCi0gICAgNzMsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCwxMjIsMSwwLDAsNDEsOSwKLSAgICAxMTQsNjcsMCwwLDAsMTE0LDEyMywxLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LAotICAgIDEwOCwxMTUsMTE0LDEyMSwxLDAsMCwxMTQsMTA0LDEsMCwwLDExNCwxODAsMCwwLAotICAgIDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNCwxMDMsMSwwLDAsCi0gICAgOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiw5NSw5NSwxOCw5LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSwxMiwKLSAgICAxLDE1LDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLDEsMjMsMSw2LAotICAgIDEsNCw0LDM1LDMsNDAsMiwxMTQsMTI3LDEsMCwwLDk5LDEsMCwwLAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDExNCwxNSwwLDAsMCwxMTQsMTQwLDAsMCwwLDQxLAorICAgIDEyLDExNCwxMjIsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsNjUsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsOTYsMCwwLDAsMjE4LAorICAgIDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDUwLDAsMCwwLDExNCw3NywKKyAgICAwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMjE4LDcsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsMTE0LDE1MiwwLDAsMCwxMTQsMTIzLDAsMCwwLDkwLDEzLDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE0NywwLDAsMCwKKyAgICAxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LAorICAgIDEwMSwxMDAsMTcxLDMsMCwwLDExNSw0MiwwLDAsMCwwLDEsNiwxLDE5LAorICAgIDEsNiwxLDE1LDEsMTMsMiwxNSwxLDExLDEsMTMsMSwzLDEsMTMsCisgICAgMSwxMywxLDIyLDEsMjYsMSwxNSwxLDEyLDEsMzAsMiwxMiwxLDYsCisgICAgMiwxMywxLDI5LDEsMTE0LDE4NCwwLDAsMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMzcsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTQzLDE4LDAsCisgICAgMSwxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDEwMCwKKyAgICAxLDAsODEsODIsODgsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NCw3MCwxMDUsMTEwLAorICAgIDEwMCwzMiw5NywxMTAsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LAorICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSwKKyAgICA5OSwxMDcsNDYsNzgsNDEsMiwxMTQsNTQsMCwwLDAsMTE0LDE4NCwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDIsMTA1LAorICAgIDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxOTgsMywwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwyLDEzLDEsMTE0LDE4NSwwLDAsMCwxMTQsMzMsMCwKKyAgICAwLDAsOTksMywwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTY2LDAsMCwwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxLDEyNCwyLDAsMTAwLAorICAgIDEsMCwxMDcsNCwwLDExNCw0NiwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwKKyAgICAwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLDExNiwyLDAsMTA2LDMsMCwKKyAgICAxMzEsMCwwLDEsMTI0LDAsMCwxMTYsNCwwLDEwNiw1LDAsMTA3LDcsMCwKKyAgICAxMTQsODQsMCwxMTYsNiwwLDEyNCwwLDAsMTE2LDcsMCwxMzEsMiwwLDgzLAorICAgIDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDI1LDEyNSwzLDAsMTI0LDMsMCwKKyAgICAxMDAsMiwwLDEwNyw4LDAsMTE0LDE1MiwwLDExNiwyLDAsMTA2LDgsMCwxMzEsCisgICAgMCwwLDEsMTAwLDMsMCwxMDYsOSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsCisgICAgNCwwLDExNiwxMCwwLDEyNCw0LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAorICAgIDEsMTMwLDEsMCwxMTYsMTEsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMjQsMywKKyAgICAwLDgzLDQxLDUsOTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LAorICAgIDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsCisgICAgMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLAorICAgIDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsCisgICAgMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLAorICAgIDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsCisgICAgMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDMzLDAsMCwwLAorICAgIDc4LDEyMiw0MCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDEyMywxMjUsMzIsCisgICAgMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTEwLDMyLAorICAgIDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTQsMTUsMCwwLDAsCisgICAgNDEsMTIsMTE0LDE4MSwwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCw1NywwLDAsCisgICAgMCwxMTQsMTQ1LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCisgICAgMTE0LDE4NSwwLDAsMCwyMTgsMTEsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMTQsNTgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw3NywwLDAsCisgICAgMCwxMTQsNjMsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDE2OSwwLAorICAgIDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsNzQsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDE4NiwwLDAsMCwyMDQsMywwLDAsMTE1LDI4LDAsMCwwLDAsOSwKKyAgICAxNiwxLDEyLDEsMTgsMSwxMCwxLDE1LDEsMTMsMSwxMywxLDEyLDEsCisgICAgMTAsMSw2LDEsOSwxLDE4LDEsMTAsMSwxMTQsMTg2LDAsMCwwLDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyMzksMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwKKyAgICAxLDAsMTMxLDIsMCwxMTQsMjM1LDAsMTAwLDIsMCwxMjQsMSwwLDEwNyw2LAorICAgIDAsMTE0LDgzLDAsMTE2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsMSwwLDEsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsODMsMCwxMjQsMSwwLDEwNiwKKyAgICAzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLDAsMSwxMjAsMTQ5LDAsMTI0LAorICAgIDEsMCw2OCw5MywxNDEsMCwxMjUsMywwLDExNiwwLDAsMTI0LDAsMCwxMjQsCisgICAgMywwLDEzMSwyLDAsMTE1LDkwLDAsMTAwLDQsMCwxMDYsNSwwLDEyNCwwLAorICAgIDAsMTA2LDYsMCwxMjQsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwKKyAgICAxMTYsNywwLDEyNCwyLDAsMTI0LDQsMCwxMzEsMiwwLDEsODcsMTEzLDkwLAorICAgIDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyMzAsMCwxLDEyNSw1LDAsMSwKKyAgICAxMjIsNDcsMCwxMTYsOSwwLDEyNCw1LDAsMTMxLDEsMCwxMDYsMTAsMCwxMTYsCisgICAgMTEsMCwxMzEsMSwwLDExNCwyMDksMCwxMjQsNSwwLDEwNiwxMiwwLDEyNCw0LAorICAgIDAsMTA3LDIsMCwxMTQsMjA5LDAsMTE5LDkwLDAsMTMwLDAsMCw4Nyw4OSwxMDAsCisgICAgNSwwLDEwMCw1LDAsMTI1LDUsMCwxMjYsNSwwLDg4LDExMyw5MCwwLDg4LAorICAgIDExMyw5MCwwLDg3LDEyNCwwLDAsODMsNDEsNiwxMjIsMjM4LDcwLDEwNSwxMDMsMTE3LAorICAgIDExNCwxMDEsMzIsMTExLDExNywxMTYsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiw5NywzMiw5OSw5NywxMDgsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDExNiw5NywxMDcsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNiwxMTEsCisgICAgMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNzMsMTE2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMCwKKyAgICAxMDEsOTksMTExLDExNywxMTIsMTA4LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDExNSwxMTUsMTE3LDEwOSwxMDUsCisgICAgMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDM5LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsCisgICAgMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDEzMSwwLDAsMCwyNTAsCisgICAgMSw0MiwyMTgsNyw5NSw5NSw5NywxMDgsMTA4LDk1LDk1LDEyMiw1LDEyMywxMjUsNDYsCisgICAgMTIzLDEyNSw3OCw0MSwxMywxMTQsNCwwLDAsMCwxMTQsMTMwLDAsMCwwLDIxOCwKKyAgICA2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNCwKKyAgICAxODgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLDExNCw2NSwKKyAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsNzEsMCwKKyAgICAwLDAsMjE4LDE1LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDk1LDgwLDgyLDY5LAorICAgIDcwLDczLDg4LDExNCwxNSwwLDAsMCw0MSw2LDExNCw4OSwwLDAsMCwyMTgsCisgICAgOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNCwxODMsMCwwLDAsMjE4LDEsCisgICAgMTIwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDkwLDMsMTAxLDEyMCwKKyAgICA5OSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwKKyAgICAxMTUsMTE2LDIyOCwzLDAsMCwxMTUsMzQsMCwwLDAsMCwxMCwxNSwxLDEyLAorICAgIDEsMTIsMSwxMywxLDE1LDEsMTYsMSwxMywxLDE1LDEsMjEsMSwzLAorICAgIDEsMTcsMSwxOCw0LDIxLDEsMTUsMSwzLDEsMjYsMSwxMTQsMTk0LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwyLAorICAgIDAsMTA3LDgsMCwxMTQsNjgsMCwxMjQsMCwwLDEwMCwzLDAsMjUsMTI1LDEsCisgICAgMCwxMDAsNCwwLDEyNCwwLDAsMTA3LDcsMCwxMTQsNjgsMCwxMjQsMSwwLAorICAgIDEwNiwxLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCw2LDAsMjUsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDgzLDQxLDcsMTIyLDE2Nyw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsCisgICAgMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMzIsMTExLAorICAgIDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwKKyAgICAxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMTQsMTAxLAorICAgIDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDExNSwKKyAgICAzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDEzNCwwLDAsMCw3OCwxMTQsMSwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwKKyAgICAxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDQxLDIsMTE0LDQyLDAsMCwwLAorICAgIDExNCwxMjIsMCwwLDAsNDEsMiwyMTgsNywxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LAorICAgIDExNCwxNjksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNCw0LDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMCw3LDE1LDEsMTIsMSwxMCwxLDEyLDEsMTksMSwxMTQsMTk2LDAsMCwKKyAgICAwLDk5LDUsMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIyNywwLDAsMCwxMjQsNCwwLDEwMCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwKKyAgICAxMjUsNSwwLDExMCw1NCwwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOSwwLDExNCwKKyAgICA0NSwwLDEyNCwxLDAsMTEwLDMsMCwxMDUsMCwwLDEyNSw2LDAsMTE2LDEsCisgICAgMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTI0LDcsMCwxMjQsNCwwLDEzMSwzLDAsMTI1LDUsMCwxMjQsMywwLDExNSwKKyAgICAyMDcsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTIyLDAsMTE2LDAsCisgICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCisgICAgMjUsMTMxLDEsMCw4MywxMjQsMCwwLDExNSwxMzIsMCwxMjQsNSwwLDgzLDExNiwKKyAgICAzLDAsMTI0LDAsMCwxMzEsMSwwLDExNiwzLDAsMTI0LDAsMCwxMDYsMiwKKyAgICAwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMjQsMTI1LAorICAgIDgsMCwxMTYsNCwwLDEwNiw1LDAsMTI0LDUsMCwxMDYsNiwwLDEwMCwyLAorICAgIDAsMTE2LDMsMCwxMjQsNSwwLDEwNiw2LDAsMTMxLDEsMCwxMjQsOCwwLAorICAgIDI0LDEzMywyLDAsMjUsMjUsODMsMTEwLDE2LDAsMTE2LDcsMCwxMjQsNSwwLAorICAgIDEyNCwzLDAsMTE2LDAsMCwxMzEsMywwLDgzLDEwMCwyLDAsODMsNDEsNCwKKyAgICA5NywyMTQsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LAorICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsCisgICAgMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTA1LDExMCwxMDMsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsCisgICAgMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDM5LAorICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywKKyAgICAxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywKKyAgICAxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDk4LAorICAgIDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LAorICAgIDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsCisgICAgOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsCisgICAgMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsCisgICAgMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwzMywwLDAsMCwKKyAgICA3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LDE4NiwwLDAsMCwxMTQsMTk2LDAsCisgICAgMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLAorICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwxLDAsMCwKKyAgICAwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsMTUsMCwwLDAsMTE0LDE5NSwwLAorICAgIDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMTE0LDE5MiwwLDAsMCwxMTQsCisgICAgMTcwLDAsMCwwLDExNCw4OSwwLDAsMCw5MCw4LDEwMywxMDgsMTExLDk4LDk3LAorICAgIDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCw3LDk5LDExNywxMTYsOTUsMTExLDEwMiwKKyAgICAxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDE5LDQsMCwwLAorICAgIDExNSwyNiwwLDAsMCwwLDExLDEyLDEsMTUsMiwyNCwxLDEyLDEsMTgsCisgICAgMSw2LDMsMTIsMSwyMywxLDYsMSw0LDQsMzUsMyw0MCwyLDExNCwKKyAgICAxOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMCwwLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsCisgICAgMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLDExNiwyLDAsMTAwLDEsMCwxMjQsCisgICAgMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwxMTYsMywwLDEyNCwxLDAsMTMxLAorICAgIDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICA0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwKKyAgICAzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsNzcsMCwKKyAgICAwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsODgsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLAorICAgIDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsMCwxMTUsOCwwLDAsMCwwLAorICAgIDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwwLDAsMCw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsOTcsMCwwLDEyNCwwLDAsOTcsCisgICAgMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIwLDEyMywKKyAgICAwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwwLDEzMSwwLDAsNjgsOTMsMTA2LAorICAgIDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTYsNSwwLDEyNCw0LDAsCisgICAgMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLDEyNCwzLDAsMTE2LDEsMCwxMDYsCisgICAgNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LDcsMCwxMjUsNSwwLDExMCwyNywKKyAgICAwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDQwLDAsCisgICAgMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsMTEzLDQwLDAsMTE2LDEwLDAsMTI0LAorICAgIDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDYsMCwxMTYsMTEsMCwxMjQsNiwKKyAgICAwLDEyNCw0LDAsMTMxLDIsMCwxLDExMyw0MCwwLDg3LDExNiwxLDAsMTA2LAorICAgIDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLDEyMCw3MywwLDEwMCw1LDAsNjgsCisgICAgOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsMTE2LDEsMCwxMDYsMywwLDEwNywKKyAgICA3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCw4LDAsMTMxLDEsMCwxMjUsOSwKKyAgICAwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsMCwxMjQsOCwwLDI1LDEyNSw5LAorICAgIDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwwLDEyNCw5LDAsMTMxLDMsMCwKKyAgICAxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsMTMsMCwxMDAsMiwwLDEzMSwxLAorICAgIDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwxMTYsMTUsMCwxMDcsMTAsMCwxMTQsCisgICAgMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwxMCwwLDg5LDExMCwxLDAsODgsCisgICAgMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLDEyNCwxMCwwLDEzMSwzLDAsMSwKKyAgICAxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsMTI1LDExLDAsMTE2LDE0LDAsMTI0LAorICAgIDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwzLDAsMSwxMDAsMywwLDgzLAorICAgIDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsCisgICAgMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LAorICAgIDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwKKyAgICA5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LAorICAgIDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsCisgICAgMCwwLDAsMTE0LDM0LDAsMCwwLDc4LDExNCw2MiwwLDAsMCw0MSwxLAorICAgIDEyMiw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSw0MSwxNiwxMTQsNTcsMCwKKyAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMjEsMCwwLAorICAgIDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTc3LDAsMCwwLDExNCw3NiwwLAorICAgIDAsMCwxMTQsMTUwLDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTYwLDAsMCwKKyAgICAwLDExNCwxMzIsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsMSwwLDAsMCwKKyAgICAxMTQsMjAwLDAsMCwwLDExNCw1LDAsMCwwLDExNCw3NywwLDAsMCw0MSwKKyAgICAxMiwyMTgsMTAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDk1LAorICAgIDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDg5LDAsMCwKKyAgICAwLDExNCw5OSwwLDAsMCwxMTQsODgsMCwwLDAsOTAsMTEsMTE1LDEwMSwxMDgsCisgICAgMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2MSw0LDAsMCwKKyAgICAxMTUsNTAsMCwwLDAsMCw5LDYsMSw2LDMsMTIsMSwyOCwxLDE1LAorICAgIDEsMTUsMSw5LDEsMTUsMSw5LDIsMywxLDE1LDEsMTcsMywxMywKKyAgICAxLDEzLDEsMTUsMSwxNSwyLDEzLDEsMjAsMywzLDEsMTYsMSwxMywKKyAgICAyLDExLDEsMTYsMywxMiwxLDExNCwyMDQsMCwwLDAsOTksMiwwLDAsCiAgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNjgsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0NiwKLSAgICAwLDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsCi0gICAgMCwxMTAsMCwwLDExNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCwxMDYsNCwwLDEzMSwwLDAsODMsNDEsMiw3OCwxMjIsMjUsMTEwLAotICAgIDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsNSwxMTQsMTEsMSwwLDAsMTE0LAotICAgIDE0LDEsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsNywKLSAgICAxLDAsMCw0MSwzLDExNCw2NywwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKLSAgICAxNzksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCi0gICAgMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsCi0gICAgMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1Myw5LDAsMCwxMTUsMTAsMCwwLDAsCi0gICAgMCwxLDE1LDEsMTIsMSwxOSwxLDEyLDEsMTE0LDEyOCwxLDAsMCw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMTksMCwwLDAsMTIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDIzMiwyLDAsMCwxMjQsMSwwLDk3LDAsMCwxMjQsCi0gICAgMCwwLDk3LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTQsMzMsCi0gICAgMCwxMTYsNCwwLDk3LDUsMCwxMTAsNiwwLDExNiw2LDAsOTcsNSwwLAotICAgIDExNiw3LDAsMTE2LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIwLDEzOCwwLDExNiwKLSAgICAxLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsNjgsOTMsMTIxLDAsOTIsCi0gICAgMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTYsMTAsMCwxMjQsNCwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxMTQsNjcsMCwxMjQsMywwLDExNiwxLDAsMTA2LDExLDAsCi0gICAgMTA3LDYsMCwxMTQsMTE4LDAsMTE2LDEyLDAsMTI1LDUsMCwxMTAsMjcsMCwxMTYsCi0gICAgMCwwLDEwNiwxMywwLDEyNCwzLDAsMTMxLDEsMCwxMTQsNjcsMCwxMTYsMTQsCi0gICAgMCwxMjUsNSwwLDExMCwzLDAsMTEzLDY3LDAsMTE2LDE1LDAsMTI0LDQsMCwKLSAgICAxMjQsNSwwLDEzMSwyLDAsMTI1LDYsMCwxMTYsMTYsMCwxMjQsNiwwLDEzMSwKLSAgICAxLDAsMTI1LDcsMCwxMjQsNywwLDEwNiwxNywwLDEyNCw0LDAsMTMxLDEsCi0gICAgMCwxLDExMyw2NywwLDExMyw2NywwLDg3LDExNiwxLDAsMTA2LDgsMCwxMTYsCi0gICAgMTgsMCwyNSwxMjUsOCwwLDEyMCw3MywwLDEwMCwyNiwwLDY4LDkzLDY1LDAsCi0gICAgMTI1LDksMCwxMjQsOSwwLDExNiwxLDAsMTA2LDgsMCwxMDcsNywwLDExNCwKLSAgICAyNDgsMCwxMTYsMTksMCwxMjQsOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTEwLDEzLAotICAgIDAsMTE2LDEsMCwxMDYsOCwwLDEyNCw5LDAsMjUsMTI1LDEwLDAsMTE2LDIwLAotICAgIDAsMTI0LDgsMCwxMjQsOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMTMsMjEyLAotICAgIDAsODcsMTAwLDUsMCwxMDAsNiwwLDEwMywxLDAsMTAyLDIsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTAwLDYsMCwxMDMsMiwwLDEwMiwyLDAsMTAyLDIsMCwKLSAgICAxMjUsMTEsMCwxMjAsMTQ2LDAsMTI0LDExLDAsNjgsOTMsMTI2LDAsOTIsMiwwLAotICAgIDEyNSwxMiwwLDEyNSwxMywwLDExNiwyMSwwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLAotICAgIDAsMCwxMjQsMTMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsMTE1LDEwOCwxLDExNiwKLSAgICAyMiwwLDEzMCwxLDAsMTI0LDEzLDAsMTAwLDExLDAsMjUsMTI1LDE0LDAsMTI0LAotICAgIDEyLDAsMTE2LDEsMCwxMDYsOCwwLDEwNyw2LDAsMTE0LDE1MCwxLDExNiwxLAotICAgIDAsMTA2LDgsMCwxMjQsMTIsMCwyNSwxMjUsMTUsMCw4MCwxMTMsNjUsMSwxMjEsCi0gICAgMTcsMCwxMTYsMTksMCwxMjQsMTIsMCwxMzEsMSwwLDEyNSwxNSwwLDgwLDg3LAotICAgIDExMyw2NSwxLDQsMTE2LDIzLDAsMTA3LDEwLDAsMTE0LDE5MCwxLDEsMSwxLAotICAgIDExOSw2NSwxLDg5LDExMyw2NSwxLDg4LDExMyw2NSwxLDg3LDExNiwyMywwLDEwMCwKLSAgICAxMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsMjAsMCwxMjQsOCwwLDEwMCwxMywKLSAgICAwLDEyNCwxNSwwLDEzMSwzLDAsMSwxMTYsMjAsMCwxMjQsOCwwLDEwMCwxNCwKLSAgICAwLDEyNCwxNCwwLDEzMSwzLDAsMSwxMTYsMjAsMCwxMjQsOCwwLDEwMCwxNSwKLSAgICAwLDEwMCwxNiwwLDEwNiwyNCwwLDEyNCwxMywwLDEzMSwxLDAsMTMxLDMsMCwKLSAgICAxLDEyMSwxNiwwLDExNiwxOSwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDE2LDAsCi0gICAgODcsMTEwLDI0LDAsNCwxMTYsMjMsMCwxMDcsMTAsMCwxMTQsNTAsMiwxLDEsCi0gICAgMSwxMDAsMTgsMCwxMjUsMTYsMCw4OSwxMTAsMSwwLDg4LDExNiwyMCwwLDEyNCwKLSAgICA4LDAsMTAwLDE3LDAsMTI0LDE2LDAsMTMxLDMsMCwxLDExNiwxOSwwLDEwMCwKLSAgICAxOSwwLDEzMSwxLDAsMTI1LDE3LDAsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMTksCi0gICAgMCwxMjQsMTcsMCwxMzEsMywwLDEsMTI0LDEyLDAsMTAwLDcsMCwxMDcsMiwKLSAgICAwLDExNCwxMzgsMiwxMTYsMTksMCwxMDAsMjAsMCwxMzEsMSwwLDEyNSwxOCwwLAotICAgIDExNiwyMCwwLDEyNCw4LDAsMTAwLDIxLDAsMTI0LDE4LDAsMTMxLDMsMCwxLAotICAgIDExMCwwLDAsMTE2LDIwLDAsMTI0LDgsMCwxMDAsMjIsMCwxMTYsMjUsMCwxMzEsCi0gICAgMCwwLDEzMSwzLDAsMSwxMTYsMjYsMCwxMDYsMjcsMCwxMTYsMCwwLDEwNiwKLSAgICAyOCwwLDEzMSwwLDAsMTMxLDEsMCwxLDEyNCwxMiwwLDEwMCw3LDAsMTA3LAotICAgIDIsMCwxMTQsMjI4LDIsMTE2LDI5LDAsMTA2LDMwLDAsMTAwLDIzLDAsMTMxLDEsCi0gICAgMCwxLDEwMCwyNCwwLDExNiwyNiwwLDEwNyw2LDAsMTE0LDIyOCwyLDEwMCwyNSwKLSAgICAwLDExNiwzMSwwLDk1LDMyLDAsMTEzLDIyOCwyLDExMCwwLDAsMTAwLDE4LDAsCi0gICAgODMsNDEsMjcsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwKLSAgICAxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwKLSAgICAxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAotICAgIDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LAotICAgIDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LAotICAgIDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsCi0gICAgMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwKLSAgICAzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLAotICAgIDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKLSAgICA0OSwwLDAsMCwxMTQsMTY3LDAsMCwwLDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDExNSwxMTQsMTkyLDAsMCwwLDkwLDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsCi0gICAgMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLDkyLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwzMywKLSAgICAwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsODYsMSwxMTMsMywwLAotICAgIDEwMCwxLDAsODMsNDEsMiwxMTQsMjksMCwwLDAsNzgsNDEsMSwxMTQsMzEsCi0gICAgMCwwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsCi0gICAgMCwwLDAsMTA1LDksMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsMjUsCi0gICAgOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCi0gICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw4NCwwLDAsMCwxMjIsMzAsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNCwzLAotICAgIDAsMCwwLDExNCwyNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDMwLDAsCi0gICAgMCwwLDExNCw4NSwwLDAsMCw3OCwxMTQsMTExLDAsMCwwLDkwLDYsMTE5LAotICAgIDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LDI0LDEsMCwwLDExNCw2LDAsMCwwLDEyMiwKLSAgICA0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LAotICAgIDEyMiwzLDk1LDEwNSwxMTEsMTIyLDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDEyMiw4LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMjIsNywxMDksOTcsMTE0LDExNSwKLSAgICAxMDQsOTcsMTA4LDQxLDMzLDExNCwxMDYsMCwwLDAsMTE0LDcsMCwwLDAsMTE0LAotICAgIDExNywwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMjAsMCwwLDAsMTE0LDIzMywKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNzMsMCwKLSAgICAwLDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTkzLDAsMCwwLDExNCwxNTgsCi0gICAgMCwwLDAsMTE0LDExLDEsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDIwLDEsCi0gICAgMCwwLDExNCwyNDgsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMjU1LDAsMCwKLSAgICAwLDExNCw1NywwLDAsMCwxMTQsMTI4LDEsMCwwLDExNCw2MSwwLDAsMCwKLSAgICAyMTgsMyw5NywxMDgsMTA4LDExNCwxMDAsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgMjYsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw2MCwxLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwxMjUsMSwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMjI0LDAsCi0gICAgMCwwLDExNCwyMywxLDAsMCwxMTQsMjcsMSwwLDAsNDEsMTksMjE4LDEwLAotICAgIDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSw5NSwxMDUsMTA5LDExMiwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTYsMTIxLDExMiwxMDEsMTE0LDY3LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDE3MCwKLSAgICAwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsOTAsMTEsMTE1LAotICAgIDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCi0gICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEwLDExMSwxMTUsOTUsMTAwLDEwMSwxMTYsCi0gICAgOTcsMTA1LDEwOCwxMTUsOTAsMTAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTExLDExNSwKLSAgICAxMTQsMjEsMCwwLDAsMTE0LDI1LDAsMCwwLDkwLDksMTExLDExNSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDkwLDEzLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsCi0gICAgMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsOSwwLDAsMTE1LDEwOCwKLSAgICAwLDAsMCwwLDksNiwxLDYsMiwxMiwxLDksMiw2LDMsMTIsCi0gICAgMSwyOCwxLDE1LDEsMTUsMSw5LDEsMTUsMSw5LDIsMywxLDE1LAotICAgIDEsMTIsMSwyMCwzLDEzLDEsMTMsMSwxNSwxLDE1LDIsMTMsMSwyMCwKLSAgICAzLDMzLDEsMTksMiwzMSwxLDEwLDEsMTUsMSwxMywxLDQsMiwzLAotICAgIDEsMTIsMSw1LDEsMTMsMSwxMiwyLDEyLDEsMTYsMSwxNiwxLDI1LAotICAgIDMsMywxLDE2LDEsMTMsMiwxMSwxLDE2LDMsMTIsMSwxNiwzLDEyLAotICAgIDEsMTIsMSwxOSwzLDE5LDEsMTksMSwxMiwxLDEzLDEsMTIsMSwxMTQsCi0gICAgMTM3LDEsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDEsMTE2LDEsMCwxMzEsMCwKLSAgICAwLDEyNSwyLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsMTE2LDUsMCwKLSAgICAxMDYsNiwwLDEyNCwyLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwxLDAsMSwKLSAgICAxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsOSwwLDEzMSwxLDAsMSwKLSAgICAxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTAsMCwxMzEsMSwwLDEsCi0gICAgMTE2LDExLDAsMTA2LDEyLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwxMTYsMCwxMTYsCi0gICAgMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTMsMCwxMzEsMSwwLDEsMTEwLAotICAgIDAsMCwxMTYsMiwwLDEwNiw3LDAsMTA2LDgsMCwxMTYsMTQsMCwxMzEsMSwKLSAgICAwLDEsMTAwLDIsMCw4Myw0MSwzLDEyMiw1MCw3MywxMTAsMTE1LDExNiw5NywxMDgsCi0gICAgMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDExNCwxMzEsMSwwLAotICAgIDAsNzgsNDEsMTUsMTE0LDEzNywxLDAsMCwxMTQsMjQxLDAsMCwwLDExNCw3LAotICAgIDAsMCwwLDExNCw3OSwxLDAsMCwxMTQsMTk4LDAsMCwwLDExNCw4NywxLAotICAgIDAsMCwxMTQsMTAxLDEsMCwwLDExNCwxMDcsMSwwLDAsMTE0LDIyNCwwLDAsCi0gICAgMCwxMTQsMTEsMSwwLDAsMTE0LDIwLDEsMCwwLDExNCwzLDAsMCwwLAotICAgIDExNCw1NywwLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDc0LDEsMCwwLDQxLAotICAgIDMsMTE0LDEzNSwxLDAsMCwxMTQsMTM2LDEsMCwwLDkwLDE3LDExNSwxMTcsMTEyLAotICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCw4LDk1LAotICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE0OCw5LDAsMCwxMTUsMTYsMCwwLDAsCi0gICAgMCwyLDEzLDEsOSwxLDI4LDEsMTYsMSwxNiwxLDE1LDEsMTksMSwKLSAgICAxMTQsMTM4LDEsMCwwLDQxLDMsMTIyLDMsMTE5LDEwNSwxMTAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIsMCwwLDAsNDEsOTIsMTE0LDU5LDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwxOSwwLDAsCi0gICAgMCwxMTQsMjgsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwzOSwwLDAsMCwKLSAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsNjYsCi0gICAgMCwwLDAsMjE4LDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE5NCwwLAotICAgIDAsMCwxMTQsNjksMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTIsMCwwLAotICAgIDAsMTE0LDk5LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsCi0gICAgMTE0LDEwMiwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDUsMCwwLDAsMTE0LAotICAgIDExMiwwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTg2LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTgsMCwwLDAsOTAsMTcsOTUsCi0gICAgODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsCi0gICAgMTE0LDEyNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LAotICAgIDEyMCwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzYsMCwwLDAsMTE0LDE0MywKLSAgICAwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNTMsMCwwLDAsMTE0LDE1NywwLAotICAgIDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MywwLDAsCi0gICAgMCwxMTQsMTgxLDAsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDE5NiwwLDAsMCwKLSAgICAxMTQsMTk5LDAsMCwwLDExNCwyMDQsMCwwLDAsMTE0LDIxMiwwLDAsMCwxMTQsCi0gICAgMjEzLDAsMCwwLDExNCwyMTcsMCwwLDAsMTE0LDE3NCwwLDAsMCwyMTgsNiwKLSAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDI0MiwwLDAsMCwxMTQsMjQwLDAsMCwwLAotICAgIDExNCwyNDgsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LAotICAgIDExLDEsMCwwLDExNCwyMCwxLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDMzLAotICAgIDEsMCwwLDExNCwzNCwxLDAsMCwxMTQsNDksMSwwLDAsMTE0LDksMSwKLSAgICAwLDAsMTE0LDgsMSwwLDAsMTE0LDYwLDEsMCwwLDExNCw1NywxLDAsCi0gICAgMCwxMTQsNjEsMSwwLDAsMTE0LDI1MiwwLDAsMCwxMTQsNzQsMSwwLDAsCi0gICAgMTE0LDg3LDEsMCwwLDExNCwxMDIsMSwwLDAsMTE0LDEwNSwxLDAsMCwxMTQsCi0gICAgMTA2LDEsMCwwLDExNCwxMDgsMSwwLDAsMTE0LDExMSwxLDAsMCwxMTQsMTIwLAotICAgIDEsMCwwLDExNCwxMTIsMSwwLDAsMTE0LDExNCwxLDAsMCwxMTQsMTE1LDEsCi0gICAgMCwwLDExNCwxMTYsMSwwLDAsMTE0LDEyMiwxLDAsMCwxMTQsMTI0LDEsMCwKLSAgICAwLDExNCwyNDEsMCwwLDAsMTE0LDEyNywxLDAsMCwxMTQsMTI4LDEsMCwwLAotICAgIDExNCwxMzcsMSwwLDAsMTE0LDEzOCwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCwKLSAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxNzAsMCwwLAotICAgIDAsNiwxNyw2LDMsMTIsMTIsMTIsNSwxMiw1LDEyLDYsMTIsMTIsMTIsCi0gICAgMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsMTIsOCwxMiw0LDE1LDQsMTksCi0gICAgMjAsNiwyLDYsMywyMiw0LDE5LDY4LDE5LDIxLDE5LDE5LDEyLDE5LDEyLAotICAgIDIwLDEyLDExNCwyMiwxLDE4LDIsNiwyLDksMiw5LDEsOSwyLDE1LAotICAgIDI3LDEyLDIzLDEyLDE5LDEyLDEyLDE4LDgsMTIsMTgsMTIsMTEsMTIsMTEsMTIsCi0gICAgMTcsMTIsMTYsMjEsNTUsMjEsMTIsMTgsMTAsMTIsMTQsMTIsMzYsMTksMjcsMTksCi0gICAgMTA2LDI0LDIyLDksMywxMiwxLDE1LDYzLDE4LDQ1LDE5LDIzMCwxNSwyNSwxOSwKLSAgICA3MCwxOSw3MSwxOSw2MywxOSwyNCwyMiwxMTAsMTksNDEsMjUsNDMsMjUsMTYsNiwKLSAgICAzLDE5LDU3LDE5LDU3LDE5LDM4LDE5LDEyOSwxOSwxNDYsMTksMTMsMTIsOSwxMiwKLSAgICA5LDE1LDQwLDEyLDE3LDYsMSwxMCwyLDEyLDI3LDEyLDYsMTgsMjQsMTIsCi0gICAgMzIsMTIsMTUsMTIsMTEsMjQsMzUsMTIsOCwxMiw4NywKKyAgICAwLDExNSw4NywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCisgICAgMiwwLDEsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE2LDQsMCwxMzEsCisgICAgMSwwLDEsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE2LDUsMCwxMzEsCisgICAgMSwwLDEsMTAwLDEsMCwxMDAsMiwwLDEwOCw2LDAsMTI1LDIsMCwxMjQsCisgICAgMiwwLDk3LDcsMCwxMjQsMiwwLDEwNiw4LDAsMTE2LDEsMCwxMDYsOSwKKyAgICAwLDExNiwxMCwwLDI1LDEzMSwxLDAsMSwxMDAsMiwwLDgzLDQxLDMsMTIyLAorICAgIDUwLDczLDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsNDYsMTE0LDMzLDAsMCwwLDc4LDQxLDExLDExNCwyMDQsMCwwLDAsCisgICAgMTE0LDE0LDAsMCwwLDExNCwxNzQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsCisgICAgMTUwLDAsMCwwLDExNCwxNjAsMCwwLDAsMjE4LDI2LDk1LDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExNCwxMTAsOTcsMTA4LDExNCwxMTksMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsCisgICAgMTE2LDk3LDEwOCwxMDgsMTE0LDIxLDAsMCwwLDExNCwxLDAsMCwwLDQxLDMsCisgICAgMTE0LDIwMiwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwyMDUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwNiwKKyAgICAwLDAsMCwxMDgsNCwwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMywyLAorICAgIDE2LDEsMTYsMywxMiwxLDYsMSwxMTQsMjA2LDAsMCwwLDQxLDUxLDExNCwKKyAgICAzLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyLDAsMCwwLDExNCwxNiwKKyAgICAwLDAsMCwxMTQsMTcsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw0MSwwLAorICAgIDAsMCwxMTQsNDgsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwzMiwwLDAsCisgICAgMCwxMTQsNTMsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw1NiwwLDAsMCwKKyAgICAxMTQsNjMsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCisgICAgODEsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsMTAxLAorICAgIDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsODUsMCwKKyAgICAwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDkwLDksOTUsODAsNzksODAsCisgICAgODUsNzYsNjUsODQsNjksMTE0LDEzMiwwLDAsMCwxMTQsMTM3LDAsMCwwLDExNCwKKyAgICAxNDQsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTQ4LAorICAgIDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDg3LDAsMCwwLDExNCwxNTAsMCwKKyAgICAwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzEsMCwwLAorICAgIDAsMTE0LDE3MywwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxODEsMCwwLDAsCisgICAgMTE0LDE5MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LAorICAgIDE4NSwwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE5NiwKKyAgICAwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDIwNCwwLAorICAgIDAsMCwxMTQsMjA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw2MCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSw5NiwwLDAsMCw2LDE3LAorICAgIDYsMiwxMiw4LDEyLDQsMTksMjAsNiwyLDYsMywyMiw0LDE5LDY4LAorICAgIDE5LDIxLDE5LDE5LDEyLDE5LDEyLDE5LDEyLDExLDE4LDgsMTIsMTEsMTIsMTIsCisgICAgMTIsMTYsMTIsMzYsMTksMjcsMTksMTAxLDI0LDI2LDksMywxOCw0NSwxOCw2MCwKKyAgICAxMiwxOCwxMiwxNywxMiwyNSwxMiwyOSwxMiwyMywxMiwxNiwxOSw3MywxOSw3NywKKyAgICAxOSwxMywxMiw5LDEyLDksMTUsNDAsMTIsMTcsNiwxLDEwLDIsMTIsMjcsCisgICAgMTIsNiwxOCwyNCwxMiwzMiwxMiwxNSwyNCwzNSwxMiw3LDEyLDQ3LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaCBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGQ2YmU1Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCkBAIC0wLDAgKzEsMjU5NiBAQAorLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLworY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7CisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjI4LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAorICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKKyAgICAyLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsMywwLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMzIsMCwwLDkwLDUsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAorICAgIDYsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTYsCisgICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTgsMCwxMDAsMTksMCwKKyAgICAxMzIsMCwwLDkwLDksMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLAorICAgIDEwLDAsMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDEsMCw5MCwxMSwKKyAgICAwLDEwMSwxMiwwLDEwMSwxMSwwLDEwNiwxMywwLDEzMSwxLDAsOTAsMTQsMCwKKyAgICAxMDAsMjUsMCwxMDYsMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzEsMiwwLDEwMCwKKyAgICAyOCwwLDIzLDkwLDE2LDAsMTAxLDE3LDAsMTA2LDE4LDAsMTAxLDE2LDAsMTAwLAorICAgIDI3LDAsMTMxLDIsMCw5MCwxOSwwLDEwMCwyOSwwLDkwLDIwLDAsMTAwLDMwLAorICAgIDAsOTAsMjEsMCwxMDAsMzEsMCwxMDMsMSwwLDkwLDIyLDAsMTAwLDMyLDAsCisgICAgMTAzLDEsMCw5MCwyMywwLDEwMSwyMywwLDQsOTAsMjQsMCw5MCwyNSwwLAorICAgIDEwMCwzMywwLDEwMCwzNCwwLDEwMCwzMywwLDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwKKyAgICAxLDEsOTAsMjYsMCwxMDAsMzcsMCwxMDAsMzgsMCwxMzIsMCwwLDkwLDI3LAorICAgIDAsMTAwLDM5LDAsMTAwLDQwLDAsMTMyLDAsMCw5MCwyOCwwLDEwMCw0MSwwLAorICAgIDEwMCw0MiwwLDEzMiwwLDAsOTAsMjksMCwxMDAsNDMsMCwxMDAsNDQsMCwxMzIsCisgICAgMCwwLDkwLDMwLDAsMTAwLDQ1LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLDQ4LAorICAgIDAsMTMyLDAsMSw5MCwzMSwwLDEwMCw0OSwwLDEwMCw1MCwwLDEzMiwwLDAsCisgICAgOTAsMzIsMCwxMDAsNTEsMCwxMDAsNTIsMCwxMzIsMCwwLDkwLDMzLDAsMTAwLAorICAgIDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDUzLDAsMTAwLDU0LDAsMTMyLDMsCisgICAgMCw5MCwzNCwwLDEwMCwzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1NSwwLAorICAgIDEwMCw1NiwwLDEzMiwzLDAsOTAsMzUsMCwxMDAsNTcsMCwxMDAsNTcsMCwxMDAsCisgICAgNTgsMCwxMDAsNTksMCwxMzIsMiwwLDkwLDM2LDAsMTAwLDYwLDAsMTAwLDYxLAorICAgIDAsMTMyLDAsMCw5MCwzNywwLDEwMSwzOCwwLDEzMSwwLDAsOTAsMzksMCwKKyAgICAxMDAsMzMsMCwxMDAsNjIsMCwxMDAsMzMsMCwxMDAsNjMsMCwxMDEsMzksMCwxMDAsCisgICAgNjQsMCwxMDAsNjUsMCwxMzIsMSwyLDkwLDQwLDAsNzEsMTAwLDY2LDAsMTAwLAorICAgIDY3LDAsMTMyLDAsMCwxMDAsNjcsMCwxMzEsMiwwLDkwLDQxLDAsNzEsMTAwLAorICAgIDY4LDAsMTAwLDY5LDAsMTMyLDAsMCwxMDAsNjksMCwxMzEsMiwwLDkwLDQyLAorICAgIDAsNzEsMTAwLDcwLDAsMTAwLDcxLDAsMTMyLDAsMCwxMDAsNzEsMCwxMDEsNDIsCisgICAgMCwxMzEsMywwLDkwLDQzLDAsNzEsMTAwLDcyLDAsMTAwLDczLDAsMTMyLDAsCisgICAgMCwxMDAsNzMsMCwxMzEsMiwwLDkwLDQ0LDAsNzEsMTAwLDc0LDAsMTAwLDc1LAorICAgIDAsMTMyLDAsMCwxMDAsNzUsMCwxMDEsNDQsMCwxMDEsNDMsMCwxMzEsNCwwLAorICAgIDkwLDQ1LDAsNzEsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCwxMDAsNzcsMCwKKyAgICAxMDEsNDQsMCwxMDEsNDIsMCwxMzEsNCwwLDkwLDQ2LDAsMTAzLDAsMCw5MCwKKyAgICA0NywwLDcxLDEwMCw3OCwwLDEwMCw3OSwwLDEzMiwwLDAsMTAwLDc5LDAsMTAxLAorICAgIDQ0LDAsMTAxLDQyLDAsMTMxLDQsMCw5MCw0OCwwLDcxLDEwMCw4MCwwLDEwMCwKKyAgICA4MSwwLDEzMiwwLDAsMTAwLDgxLDAsMTMxLDIsMCw5MCw0OSwwLDcxLDEwMCwKKyAgICA4MiwwLDEwMCw4MywwLDEzMiwwLDAsMTAwLDgzLDAsMTMxLDIsMCw5MCw1MCwKKyAgICAwLDcxLDEwMCw4NCwwLDEwMCw4NSwwLDEzMiwwLDAsMTAwLDg1LDAsMTMxLDIsCisgICAgMCw5MCw1MSwwLDcxLDEwMCw4NiwwLDEwMCw4NywwLDEzMiwwLDAsMTAwLDg3LAorICAgIDAsMTMxLDIsMCw5MCw1MiwwLDEwMCwzMywwLDEwMCw4OCwwLDEwMCw4OSwwLAorICAgIDEzMiwxLDAsOTAsNTMsMCwxMDAsOTAsMCwxMDAsOTEsMCwxMzIsMCwwLDkwLAorICAgIDU0LDAsMTAwLDkyLDAsMTAwLDkzLDAsMTMyLDAsMCw5MCw1NSwwLDEwMCw5NCwKKyAgICAwLDEwMCw5NSwwLDEzMiwwLDAsOTAsNTYsMCwxMDAsMzMsMCw4Myw0MSw5NywKKyAgICA5Nyw5NCwxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCwKKyAgICA4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LAorICAgIDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICAzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLAorICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLAorICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsCisgICAgMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCisgICAgMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LAorICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwKKyAgICAxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsCisgICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsCisgICAgMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksMTIxLDEwMywxMTksMTA1LDExMCwKKyAgICAyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDQ5LDAsCisgICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDExNiwzLDAsMTMxLDEsCisgICAgMCwxMTQsMzMsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjUsMCwwLAorICAgIDExMCwxMiwwLDEwMCwzLDAsMTAwLDIsMCwxMzIsMCwwLDEyNSwwLDAsMTI0LAorICAgIDAsMCw4Myw0MSw0LDc4LDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsODMsMCwwLDAsMTE1LDEzLDAsMCwwLAorICAgIDEwMCwxLDAsMTE2LDAsMCwxMDYsMSwwLDEwNyw2LDAsODMsNDEsMiwxMjIsCisgICAgNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSw5OSwxMDcsCisgICAgMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsCisgICAgMTA1LDExOCwxMDEsMTA4LDEyMSw0NiwxMTUsMTIsMCwwLDAsODAsODksODQsNzIsNzksCisgICAgNzgsNjcsNjUsODMsNjksNzksNzUsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsCisgICAgMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDE2OSwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsCisgICAgMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLAorICAgIDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LAorICAgIDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsODMsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywKKyAgICAxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LAorICAgIDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLAorICAgIDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDM0LDAsMCwwLDExNSwyLDAsMCwwLDAsMiw0MSw0LDIxOCwzLDExNSwKKyAgICAxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiwKKyAgICA5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDI3LDk1LDY3LDY1LDgzLDY5LDk1LAorICAgIDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LAorICAgIDcwLDc5LDgyLDc3LDgzLDQxLDEsMTE0LDYsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywKKyAgICAxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDI4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxOCwxLDE1LDQsMTIsMywxMTQsMTEsCisgICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCw2NCwxMDYsMSwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMzEsMiwwLDgzLDQxLDQsMTIyLDQyLDY3LDExMSwxMTAsMTE4LDEwMSwKKyAgICAxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LDExMCwxMTYsMTAxLAorICAgIDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsNDUsMTAxLDExMCwKKyAgICAxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLAorICAgIDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQxLDIsMjE4LAorICAgIDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMSwKKyAgICAyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0MCwwLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDIsMTE0LDE3LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwxLAorICAgIDAsMTMxLDIsMCw4Myw0MSwyLDEyMiw0Nyw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwKKyAgICAzMiw1MiwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMDgsMTA1LDExNiwxMTYsCisgICAgMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsMzIsOTcsMTEwLDMyLAorICAgIDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NiwxMTQsMTMsMCwwLDAsNDEsMiwxMTQsCisgICAgMTQsMCwwLDAsMjE4LDEwLDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgNDEsMSw5MCw5LDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsNyw5NSwxMTQsCisgICAgOTUsMTA4LDExMSwxMTAsMTAzLDQ1LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwKKyAgICAxMTQsMTksMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw3MSwwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwwLAorICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDMsMTIyLDMxLDgyLDEwMSwxMTIsCisgICAgMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NiwxMDYsMTExLDEwNSwxMTAsNDAsNDEsNDYsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw4MywwLDAsCisgICAgMCwxMTUsMzcsMCwwLDAsMTAzLDAsMCwxMjQsMCwwLDkzLDI3LDAsMTI1LAorICAgIDEsMCwxMjQsMSwwLDExNCw2LDAsMTI0LDEsMCwxMDYsMCwwLDExNiwxLAorICAgIDAsMTMxLDEsMCwxNDUsMiwwLDExMyw2LDAsODMsMTE0LDQsMCwwLDAsCisgICAgNDEsMiwyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LAorICAgIDQ4LDIxOCw0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwKKyAgICAxMTIsNjIsNTIsMCwwLDAsMTE1LDIsMCwwLDAsOSwxLDEyMiwzMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDYyLDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCwKKyAgICA4LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwKKyAgICAxLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1MCwwLDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDIsMTUsMSwxMTQsMjgsMCwwLDAsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTM0LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEwMCwxLDAsCisgICAgMTA3LDIsMCwxMTQsNTIsMCwxMjQsMCwwLDEwNiwyLDAsMTE2LDMsMCwxMzEsCisgICAgMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMSwKKyAgICAwLDEyNCwzLDAsMTAyLDIsMCw4MywxMjAsNjksMCwxMTYsNCwwLDEyNCwwLAorICAgIDAsMTMxLDEsMCw2OCw5Myw1NSwwLDEyNSw0LDAsMTI0LDQsMCwxMTYsMSwKKyAgICAwLDEwNyw2LDAsMTE0LDY1LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCw0LDAsCisgICAgMTAwLDIsMCwxMDAsMSwwLDEzMSwxLDEsOTIsMiwwLDEyNSwxLDAsMTI1LAorICAgIDMsMCwxMjQsMSwwLDEyNCwzLDAsMTAyLDIsMCw4MywxMTMsNjUsMCw4NywKKyAgICAxMDAsMywwLDEyNCwwLDAsMTAyLDIsMCw4Myw0MSw0LDEyMiwzMiw4MiwxMDEsCisgICAgMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsCisgICAgNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCw0MSw0NiwyMzMsMSwKKyAgICAwLDAsMCw5MCw4LDEwOSw5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSwKKyAgICA2LDIxOCwzLDEwOCwxMDEsMTEwLDExNCwyMSwwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywKKyAgICAxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDI1LDAsMCwwLDIxOCw4LDExNCwxMDEsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwKKyAgICAyMTgsNCwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsCisgICAgMjE4LDQsMTE2LDk3LDEwNSwxMDgsMTE0LDE2LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDU2LDAsMCwwLDExNSwxNiwwLDAsMCwKKyAgICAwLDIsMTgsMSwyNCwxLDEwLDEsMTksMSwxMiwxLDI3LDEsMTQsMSwKKyAgICAxMTQsMzgsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCw4Myw0MSwxLDEyMiwxMjYsCisgICAgODMsMTE2LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3Nyw5NywxMDAsMTAxLDMyLDk3LDMyLDExNSwxMDEsMTEyLDk3LDExNCwKKyAgICA5NywxMTYsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLAorICAgIDEwOSw5NywxMDcsMTAxLDMyLDEwNSwxMTYsMzIsMTAxLDk3LDExNSwxMDUsMTAxLDExNCwzMiwxMTYsCisgICAgMTExLDMyLDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExMCwzMiwxMDEsMTIwLAorICAgIDExMiwxMDEsMTE0LDEwNSwxMDksMTAxLDExMCwxMTYsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSwKKyAgICA0NiwxMDMsNDYsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTUsMTE2LDk3LDExNiwzMiwxMTQsCisgICAgMTAxLDExNSwxMTcsMTA4LDExNiwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNDEsMiwKKyAgICAxMTQsMywwLDAsMCw5MCw0LDExNSwxMTYsOTcsMTE2LDQxLDEsMTE0LDM1LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiw2OCwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDcsMTE0LDM5LDAsMCwwLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw1OCwwLDAsMCwxMjEsMTYsMCwxMTYsMCwwLDEyNCwwLDAsCisgICAgMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwyMiwwLDQsMTE2LDEsMCwxMDcsMTAsCisgICAgMCwxMTQsNDAsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LDExMCwxLDAsODgsCisgICAgMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsNjQsMTI0LDEsMCwxMDcsMiwwLAorICAgIDgzLDQxLDMsMTIyLDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTAxLAorICAgIDMyLDExNiwxMjEsMTEyLDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLDQxLDMsMTE0LDM5LAorICAgIDAsMCwwLDIxOCw3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwyMTgsNywxMTUsMTE2LAorICAgIDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwzLDExNCwzNSwwLDAsMCwyMTgsNCwxMDksMTExLAorICAgIDEwMCwxMDEsOTAsOSwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE4LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwKKyAgICA3OCwwLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDMsMSwxNiwxLDEzLAorICAgIDEsOSwxLDExNCw0MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLAorICAgIDIsMTIyLDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LAorICAgIDEwMSw0NiwxMDUsMCwxMjgsMCwwLDQxLDEsMTE0LDQzLDAsMCwwLDQxLDEsCisgICAgMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsCisgICAgMTA4LDEwMSw4NywwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDQ0LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsMTE1LAorICAgIDE4LDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDAsMCwxMTYsMiwKKyAgICAwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDMwLDgyLAorICAgIDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LDEwNSwwLDY0LAorICAgIDAsMCw0MSwzLDExNCwzLDAsMCwwLDIxOCw2LDEwMywxMDEsMTE2LDk5LDExOSwKKyAgICAxMDAsMTE0LDQzLDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDkyLDAsMCwwLDExNSw2LDAsCisgICAgMCwwLDAsMiw2LDEsMTIsMSwxMTQsNDYsMCwwLDAsMTA1LDE4MiwxLAorICAgIDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTkzLDAsMCwwLDEwMCwxLDAsMTA2LAorICAgIDAsMCwxMjQsMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLAorICAgIDAsMTI1LDMsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDMsMCwxMTYsMiwwLAorICAgIDEwNiw0LDAsMTE2LDIsMCwxMDYsNSwwLDY2LDExNiwyLDAsMTA2LDYsMCwKKyAgICA2NiwxMjQsMiwwLDEwMCwyLDAsNjQsMTMxLDMsMCwxMjUsNCwwLDEyMSw2MSwKKyAgICAwLDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCwzLDAsMTMxLDIsMCwKKyAgICAxNDMsMjAsMCwxMjUsNSwwLDEyNCw1LDAsMTA2LDksMCwxMjQsMSwwLDEzMSwKKyAgICAxLDAsMSw4NywxMDAsNCwwLDgxLDgyLDg4LDExNiwyLDAsMTA2LDEwLDAsCisgICAgMTI0LDMsMCwxMjQsMCwwLDEzMSwyLDAsMSw4NywxMTAsNTksMCw0LDExNiwKKyAgICAxMSwwLDEwNywxMCwwLDExNCwxODgsMCwxLDEsMSwxMjEsMTcsMCwxMTYsMiwKKyAgICAwLDEwNiwxMiwwLDEyNCwzLDAsMTMxLDEsMCwxLDg3LDExMCwxOCwwLDQsCisgICAgMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4MCwwLDEsMSwxLDg5LDExMCwxLDAsCisgICAgODgsMTMwLDAsMCw4OSwxMTAsMSwwLDg4LDEwMCw0LDAsODMsNDEsNSwxMjIsCisgICAgMTYyLDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMzIsMTAwLAorICAgIDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNiwKKyAgICAxMTEsMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiw2NiwxMDEsCisgICAgMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LAorICAgIDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LDExNCwxMTQsCisgICAgMTAxLDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsMTE2LAorICAgIDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwKKyAgICAxMDEsMTAwLDQ2LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwwLDkwLAorICAgIDIsMTE5LDk4LDc4LDQxLDEzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMjE4LDIsCisgICAgMTA1LDEwMCwxMTQsMywwLDAsMCw5MCw0LDExMSwxMTIsMTAxLDExMCw5MCw2LDc5LAorICAgIDk1LDY5LDg4LDY3LDc2LDkwLDcsNzksOTUsNjcsODIsNjksNjUsODQsOTAsOCwKKyAgICA3OSw5NSw4Nyw4Miw3OSw3OCw3Niw4OSwyMTgsMyw5NSwxMDUsMTExLDIxOCw2LDcwLAorICAgIDEwNSwxMDgsMTAxLDczLDc5LDIxOCw1LDExOSwxMTQsMTA1LDExNiwxMDEsMjE4LDcsMTE0LDEwMSwKKyAgICAxMTIsMTA4LDk3LDk5LDEwMSwxMTQsNDAsMCwwLDAsOTAsNiwxMTcsMTEwLDEwOCwxMDUsCisgICAgMTEwLDEwNyw0MSw2LDExNCwzNSwwLDAsMCwyMTgsNCwxMDAsOTcsMTE2LDk3LDExNCwKKyAgICA0MiwwLDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLDkwLDIsCisgICAgMTAyLDEwMCwyMTgsNCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDEzLDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk5LDAsMCwwLDExNSwyNiwwLDAsMCwwLAorICAgIDUsMjQsMSw5LDEsMzMsMSwzLDMsMjEsMSwyMCwxLDIwLDEsMTMsCisgICAgMSwzLDEsMTcsMSwxMywxLDUsMSwxMTQsNTUsMCwwLDAsMTA1LDIyLAorICAgIDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTMsMCwwLDAsMTE1LDIsMCwKKyAgICAwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LAorICAgIDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsNDYsMTEyLAorICAgIDEyMSw5OSw3OCwyMTgsMTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAorICAgIDExMCw5OSwyLDAsMCwwLDEsMCwwLDAsMTEsMCwwLDAsNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODcsMSwwLDAsMTI0LDEsMCwxMDAsMSwKKyAgICAwLDEwNyw5LDAsMTE0LDc2LDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwyLDAsCisgICAgMTE2LDIsMCwxMzEsMiwwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw5LDAsCisgICAgMTE0LDU4LDAsMTAwLDMsMCwxMjUsMywwLDExNiwzLDAsMTI0LDMsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTI0LDEsMCwxMTQsNzAsMCwxMDAsNCwwLDExMCwzLAorICAgIDAsMTAwLDUsMCwxMjUsMiwwLDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsNSwwLDEwMCwKKyAgICA2LDAsMTMxLDEsMCw5MiwzLDAsMTI1LDYsMCwxMjUsNywwLDEyNSw4LAorICAgIDAsMTE2LDYsMCwxMDYsNywwLDEwNiw4LDAsMTI1LDksMCwxMjQsOSwwLAorICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMTU0LDAsMTE2LDksMCwxMDAsNywwLDEzMSwKKyAgICAxLDAsMTMwLDEsMCwxMDAsNCwwLDEwNiwxMCwwLDEyNCw2LDAsMTE0LDE3MiwKKyAgICAwLDEyNCw2LDAsMTEwLDMsMCwxMjQsOCwwLDEyNCw3LDAsMTI0LDksMCwKKyAgICAxMDMsMywwLDEzMSwxLDAsMTI1LDEwLDAsMTI0LDIsMCwxMDAsMSwwLDEwNywKKyAgICA4LDAsMTE0LDI0MSwwLDExNiw2LDAsMTA2LDExLDAsMTA2LDEyLDAsMTAwLDgsCisgICAgMCwxMDcsMiwwLDExNCwyMjksMCwxMDAsNCwwLDEyNSwyLDAsMTEwLDEyLDAsCisgICAgMTE2LDYsMCwxMDYsMTEsMCwxMDYsMTIsMCwxMjUsMiwwLDExNiwxMywwLDEyNCwKKyAgICAyLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDQsMCwxMDcsMywKKyAgICAwLDExNCw2MywxLDEyNCwyLDAsMTA2LDE0LDAsMTMxLDAsMCwxMTUsNDIsMSwKKyAgICAxMTYsMTUsMCwxMDAsOSwwLDEwNiwxNiwwLDEyNCwyLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDEzMCwxLDAsMTAwLDEwLDAsMTA2LDE2LDAsMTI0LDEwLDAsMTE2LDE3LAorICAgIDAsMTI0LDIsMCwxMzEsMywwLDEyNSwxMCwwLDExNiwxOCwwLDEyNCw0LDAsCisgICAgMTE2LDE5LDAsMTI0LDEwLDAsMTE2LDIwLDAsMTAwLDgsMCwyNSwyMywxMzEsMywKKyAgICAwLDgzLDQxLDExLDk3LDI1NCwyLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwKKyAgICAxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwKKyAgICAxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwKKyAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDQ2LDExMiwxMjEsOTksMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLAorICAgIDk3LDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDMyLDExOSwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE2LDEwMSwxMTQsMzIsOTksMTExLDExMCwxMTYsMTE0LDExMSwxMDgsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiwxMTQsMTAxLDExNSwxMTcsMTA5LDEwMSwxMDAsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsCisgICAgMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMSwxMDIsMTAsCisgICAgMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDczLDEwMiwzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgNzgsMTExLDExMCwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsCisgICAgMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LAorICAgIDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwKKyAgICA5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiw0MCwxMDEsMTA4LAorICAgIDExNSwxMDEsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDEwLDMyLDMyLAorICAgIDMyLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0MSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwKKyAgICAxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsNzMsCisgICAgMTAyLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAorICAgIDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsNDQsMTAsMzIsMzIsCisgICAgMzIsMzIsOTcsMzIsODQsMTE0LDExNywxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsOTcsMTE1LDMyLDExNSwxMDEsCisgICAgMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEwOSwxMTIsMTE2LAorICAgIDEyMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTksMTA0LDEwNSwKKyAgICAxMDgsMTAxLDMyLDk3LDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTE1LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDExNiwKKyAgICAxMTEsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwzOSw0OSwzOSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw3MCwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLAorICAgIDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LAorICAgIDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LAorICAgIDk3LDExNiwxMDEsMTAwLDU5LDMyLDExNywxMTUsMTAxLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCisgICAgMTIyLDUwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAorICAgIDMyLDExMSwxMTQsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsCisgICAgNzgsMTExLDExMCwxMDEsMTE0LDMwLDAsMCwwLDExNCwyOSwwLDAsMCwyMTgsMSwKKyAgICA0NiwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwKKyAgICAxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDIzMywwLDAsMCwwLDEyMiwyNCwxMjMsMzMsCisgICAgMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwKKyAgICAxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDEyMiw3LDEyMywxMjUsNDYsMTIzLDEyNSwxMjMsMTI1LDQxLAorICAgIDIxLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsCisgICAgMTE0LDExMCwyMTgsMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4NywKKyAgICA5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDIxOCw5LDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTQsMzgsMCwwLDAsMTE0LDMyLDAsMCwwLDExNCw3LDAsMCwwLAorICAgIDIxOCwxNCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMjE4LDksOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LAorICAgIDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDI2LDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLAorICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsCisgICAgMTA4LDExMCwxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDQ3LDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwyOCwwLDAsMCwKKyAgICAyMTgsOCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksCisgICAgNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LAorICAgIDM1LDAsMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsCisgICAgMTE0LDEwNSwxMDAsMTAxLDExNCw1NywwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsCisgICAgMTAzLDEwMSwyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzcsMCwwLDAsOTAsNCw5OCwKKyAgICA5NywxMTUsMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLAorICAgIDExNiw5NywxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjQzLDAsMCwwLDExNSw0NiwwLDAsMCwwLAorICAgIDE4LDEyLDEsOSwxLDcsMSwxMiwxLDYsMSwxMiwxLDE4LDEsMTgsCisgICAgMSwyNCwxLDEyLDEsMTIsMSwxMiwxLDM2LDEsMTIsMSwxOCwxLDksCisgICAgMiwxMiwxLDEyLDEsMTIsMSwxMiwxLDIxLDEsMjEsMSwxMTQsNzksMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsNSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNjIsMSwwLDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEwNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMCwwLDExNiwzLAorICAgIDAsMTAwLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsMCwxMjQsMCwwLAorICAgIDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDIsMCwxMTYsNCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMywwLDEyNCwzLAorICAgIDAsMTE2LDUsMCwxMDcsMywwLDExNCwxMDIsMCwxMTYsNiwwLDEwMCwzLDAsCisgICAgMTA2LDcsMCwxMTYsNSwwLDEyNCwwLDAsMTMxLDIsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTI0LDIsMCwxMDYsOCwwLDEwMCw0LDAsMTMxLDEsMCwxMjUsNCwKKyAgICAwLDEyNCw0LDAsMTAwLDExLDAsMTA3LDcsMCwxMTQsMTUzLDAsMTE2LDYsMCwKKyAgICAxMDAsNywwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLAorICAgIDEsMCwxMTAsMTI1LDAsMTI0LDQsMCwxMDAsNiwwLDEwNywyLDAsMTE0LDIyLAorICAgIDEsMTI0LDIsMCwxMDYsOSwwLDEwMCw0LDAsMTAwLDUsMCwxMzEsMiwwLAorICAgIDEwMCwxMiwwLDI1LDEyNSw1LDAsMTI0LDUsMCwxMDYsMTAsMCwxMTYsMTEsMCwKKyAgICAxMzEsMSwwLDExNSwyMjMsMCwxMTYsNiwwLDEwMCw4LDAsMTA2LDcsMCwxMTYsCisgICAgMTEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsNSwwLDExNiwxMiwKKyAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTAwLDEsMCwxMzMsMiwwLDI1LDEyNSw2LAorICAgIDAsMTI0LDYsMCwxMDYsMTMsMCwxMzEsMCwwLDExNSwyMiwxLDExNiw2LDAsCisgICAgMTAwLDksMCwxMDYsNywwLDEyNCw1LDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwKKyAgICAxLDAsMTI0LDIsMCwxMDYsMTQsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLDEwLAorICAgIDAsMjUsMTI1LDcsMCwxMTYsMTUsMCwxMjQsMSwwLDEyNCw3LDAsMTE2LDE2LAorICAgIDAsMTAwLDEwLDAsMjUsMjMsMTMxLDIsMCw4Myw0MSwxMyw5NywxMTAsMSwwLAorICAgIDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSw5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LAorICAgIDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywKKyAgICAxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LAorICAgIDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAorICAgIDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwKKyAgICAxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LAorICAgIDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsCisgICAgOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwKKyAgICAxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LAorICAgIDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwKKyAgICAxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsCisgICAgMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSwKKyAgICA5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNTgsMCwKKyAgICAwLDAsMTE0LDU2LDAsMCwwLDIzMywzLDAsMCwwLDEyMiwzMywxMDEsMTIwLAorICAgIDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsCisgICAgMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLAorICAgIDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCisgICAgMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsCisgICAgMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LAorICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLAorICAgIDExNCw1OSwwLDAsMCw2MiwyLDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsCisgICAgODAsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LDI1NSw0MSwxNywxMTQsNywwLDAsMCwKKyAgICAxMTQsNjQsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsCisgICAgMzgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsNDcsCisgICAgMCwwLDAsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDExNCwzNCwwLDAsMCwxMTQsCisgICAgOSwwLDAsMCwxMTQsNzIsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCw3MCwKKyAgICAwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwyOCwKKyAgICAwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsNzAsNzAsCisgICAgNzMsODgsNjksODMsNDEsOCwxMTQsMzUsMCwwLDAsMTE0LDc2LDAsMCwwLAorICAgIDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsOSwxMDAsMTExLDExNiwKKyAgICA5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU3LDAsMCwwLDkwLDksMTExLDExMiwxMTYsCisgICAgOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksOTUsOTksOTcsOTksMTA0LDEwMSwzMSwxLDAsMCwxMTUsNDQsMCwwLDAsCisgICAgMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSw5LDEsMTUsMSwKKyAgICAxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLDE1LDEsOSwxLAorICAgIDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsMTE0LDg1LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDEyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwwLDEwMCwyLDAsCisgICAgODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsMCw5MiwzLDAsCisgICAgMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwxMiwxMTUsODEsMCwKKyAgICAxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLDEwMCw4LDAsMTMzLAorICAgIDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsMTI0LDAsMCw4MywKKyAgICAxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLDg3LAorICAgIDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwxMDAsOSwwLDEzMywKKyAgICAyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiw2LDAsMTI0LDQsCisgICAgMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwwLDAsODMsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDU5LDAsMCwwLDc4LDExNCw1OCwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LAorICAgIDI5LDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDg3LDAsMCwwLDQxLDcsMTE0LDMxLDAsMCwwLDExNCwzMiwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NSwwLDAsMCwxMTQsCisgICAgNjYsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCw0NCwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNzgsMCwwLDAsMTE0LDM2LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDY0LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTgsMSw0LDEsCisgICAgMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLDIxLDEsMTE0LDkxLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsCisgICAgNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCw4Myw4NywKKyAgICAxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LDAsMSwxLDEsCisgICAgODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLAorICAgIDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LDAsMTI0LDAsMCwKKyAgICA4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw4LAorICAgIDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsCisgICAgODQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNzQsCisgICAgMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDExLAorICAgIDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDgzLDEsMCwwLDExNSwKKyAgICAxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwxMywxLDgsMSwKKyAgICAyMSwxLDQsMiwxMTQsOTUsMCwwLDAsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDYwLAorICAgIDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEwNiwKKyAgICAxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLDg5LDExMCwxLDAsCisgICAgODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LDEsMCw4Myw0MSwKKyAgICAzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsCisgICAgMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsMCwwLDIzMywxMjgsMCwwLDAsCisgICAgNDEsMywxMTQsMzksMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0MCwwLDAsCisgICAgMCw0MSwyLDExNCwzNSwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDEwLDk1LDk5LAorICAgIDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMSwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDAsMiwzLDEsMTksMSwxMywxLDExLDMsMTAsMSwxMTQsOTcsMCwKKyAgICAwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSwxMTQsMjksMCwKKyAgICAwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNCwKKyAgICAwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCw3MSwwLDEyNCwwLAorICAgIDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLDAsMTAwLDMsMCwKKyAgICAxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LDAsCisgICAgMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLDEzMSwKKyAgICAxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLAorICAgIDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LAorICAgIDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiwxMTQsNTQsMCwwLDAsNzgsNDEsMiwKKyAgICAxMTQsOTksMCwwLDAsMTE0LDEwMCwwLDAsMCw0MSw3LDExNCw3LDAsMCwKKyAgICAwLDExNCw2NywwLDAsMCwyMTgsNywxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTQsCisgICAgOSwwLDAsMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw0NywwLDAsMCwKKyAgICAyMTgsNiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDExNCw3NSwwLDAsMCwxMTQsCisgICAgOTgsMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LAorICAgIDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDEwNywxLDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDEwNSwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLAorICAgIDAsMCwzLDAsMCwwLDExNSw4NCwwLDAsMCwxMDAsMSwwLDEzNSwwLAorICAgIDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDEsMCwxMjUsMSwwLAorICAgIDEyMSwxMywwLDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLDg3LDExMCwzMCwwLAorICAgIDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjYsMCwxLDEsMSwxMDAsNCwwLAorICAgIDEwMCw1LDAsMTMyLDAsMCwxMjUsMiwwLDg5LDExMCwxLDAsODgsMTI0LDIsCisgICAgMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsCisgICAgNiwxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsCisgICAgMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDExNCwxMDEsMTEzLAorICAgIDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwxMDUsMTE0LDExNSwxMTYsCisgICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwxMDEsMTA4LDEwMiw0MSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsOTksCisgICAgMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMTAsCisgICAgMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsOTcsMTAzLDk3LAorICAgIDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwOSwKKyAgICAxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwKKyAgICAwLDMxLDAsMCwwLDExNSw4OSwwLDAsMCwxMjQsMSwwLDEwMCwwLDAsCisgICAgMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMTAsCisgICAgNDYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsMywwLDExNCw3MCwKKyAgICAwLDExNiwxLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwKKyAgICAxMDIsMiwwLDIyLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsCisgICAgMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLDE0MiwKKyAgICAyLDAsODMsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCisgICAgMTExLDExNCwzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDIxOCw0LDExMCw5NywxMDksMTAxLDQxLDIsMTE0LDEwNiwKKyAgICAwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDEsNCwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDEwNiwwLDAsMCwxMTQsMTA0LDAsCisgICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLDIxOCw2LDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxOSwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCwxMjMsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSwxMiwxLAorICAgIDEyLDEsMTUsMSw2LDEsMjUsMSwxMjIsNDAsOTUsOTksMTA0LDEwMSw5OSwxMDcsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LAorICAgIDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsCisgICAgMCwwLDAsODMsMCwwLDAsMTE1LDkyLDAsMCwwLDEyMCw2NiwwLDEwMCwKKyAgICAxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAzLDQsMCw2OCw5MywKKyAgICA0NiwwLDEyNSwyLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsCisgICAgMCwxMTQsMTksMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLAorICAgIDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEzMSwzLDAsMSwxMTMsMTksMCwKKyAgICA4NywxMjQsMCwwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsCisgICAgMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsNSw3OCwyMTgsMTAsOTUsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsMjE4LDEyLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwKKyAgICA3LDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsCisgICAgMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCwKKyAgICA2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsCisgICAgMTExLDEwOCwxMDAsMTE0LDUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDIxOCw1LDk1LDExOSwxMTQsOTcsMTEyLDEzNCwxLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDEsMjUsMSwxNSwxLDI5LDEsMTIyLAorICAgIDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LDk3LDExMiw0MSwzLDIxOCwxMCw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTE0LDEyMCwwLDAsMCwyMTgsOSwKKyAgICA3OCw5NywxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MSwzLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDExMCwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCw0LDAsMCwwLDQxLAorICAgIDEsMTE0LDEwOSwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsOTUsOTksMTA0LAorICAgIDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDEsMCwwLDExNSwxNCwwLDAsCisgICAgMCwwLDgsMjEsNywzLDEsMTMsMSwxMywyLDE3LDUsMTMsMSwxMTQsCisgICAgMTIzLDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg0LDAsMCwwLDEyNCwwLAorICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwyLDAsCisgICAgMTI1LDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsODAsMCwxMTYsCisgICAgMSwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODAsMCwxMDAsMiwwLDEyNSw0LAorICAgIDAsMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsMCwxMjQsMywwLAorICAgIDEwMCwzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLDAsMSwxMjQsMiwKKyAgICAwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsCisgICAgMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMyw5NywxMTYsMTA1LDExMCwKKyAgICAxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKKyAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTAyLAorICAgIDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLAorICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsCisgICAgMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSw1OCwzMiwKKyAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LAorICAgIDExNCw1OSwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTQsMzEsMCwwLDAsMTE0LDYwLDAsMCwwLDExNCw2MSwKKyAgICAwLDAsMCwxMTQsNDcsMCwwLDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMyw0MSw1LDExNCwxMDgsMCwwLDAsMjE4LDgsCisgICAgMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDIxOCw2LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywxMDksMTE1LDEwMywxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTcsCisgICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LAorICAgIDEwOSwxNDMsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsMjEsMSwyNCwxLAorICAgIDYsMSwyOSwxLDExNCwxMzAsMCwwLDAsOTksNCwwLDAsMCwwLDAsCisgICAgMCwwLDExLDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwyMjgsCisgICAgMSwwLDAsMTA1LDAsMCwxMjUsNCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsCisgICAgOSwwLDExNCwzMSwwLDEyNCwyLDAsMTI0LDQsMCwxMDAsMiwwLDYwLDExMCwKKyAgICA2LDAsMTAwLDMsMCwxMjUsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwKKyAgICAwLDExNCw1OSwwLDEyNCwzLDAsMTI0LDQsMCwxMDAsNCwwLDYwLDEyNCwwLAorICAgIDAsMTAwLDEsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTI1LDUsMCwxMjQsMCwKKyAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw2LDAsMTI0LDAsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsNywwLDEyNCw1LAorICAgIDAsMTE2LDAsMCwxMDcsMywwLDExNCwxNjUsMCwxMDAsOCwwLDEwNiwxLDAsCisgICAgMTI0LDIsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwxMTYsMiwwLDEyNCwKKyAgICA4LDAsMTMxLDEsMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsNCwwLDE0MSwKKyAgICAxLDAsMTMwLDEsMCwxMTAsMTEzLDAsMTE2LDQsMCwxMjQsNiwwLDEzMSwxLAorICAgIDAsMTAwLDUsMCwxMDcsMywwLDExNCwyMjMsMCwxMDAsOSwwLDEwNiwxLDAsCisgICAgMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEzMSwKKyAgICAxLDAsMSwxMTYsNSwwLDEyNCw4LDAsMTMxLDEsMCwxMzAsMSwwLDExMCwKKyAgICA1NSwwLDExNiw0LDAsMTI0LDcsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsCisgICAgMCwxMTQsMjIsMSwxMDAsMTAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKKyAgICAxMjUsOCwwLDExNiwyLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTE2LDUsMCwKKyAgICAxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LAorICAgIDksMCwxMTQsMjE0LDEsMTIxLDIwLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMSwKKyAgICAwLDI1LDEzMSwxLDAsMTI1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsCisgICAgMTA3LDEwLDAsMTE0LDc0LDEsMSwxLDEsODksMTEwLDU5LDAsODgsMTE2LDgsCisgICAgMCwxMjQsNiwwLDEzMSwxLDAsMTI0LDksMCwxMDcsMywwLDExNCwxMzMsMSwKKyAgICAxMDAsMTIsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwKKyAgICAyLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCwKKyAgICA0LDAsMTQxLDEsMCwxMzAsMSwwLDEyMSwxOCwwLDEyNCwxLDAsMTAwLDEzLAorICAgIDAsMjUsMTAwLDE0LDAsNjQsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsNywKKyAgICAwLDEwNywxMCwwLDExNCwxNzEsMSwxLDEsMSw4OSwxMTAsNDMsMCw4OCwxMTYsCisgICAgOCwwLDEyNCw3LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCwyMTQsCisgICAgMSwxMTYsMywwLDEwMCwxMiwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAorICAgIDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTAwLDcsMCwxMDAsCisgICAgMSwwLDEzMywyLDAsMjUsODMsNDEsMTUsOTcsMTIyLDEsMCwwLDg2LDk3LAorICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLAorICAgIDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsCisgICAgMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LAorICAgIDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LAorICAgIDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAorICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLAorICAgIDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywKKyAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwKKyAgICAzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAorICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwKKyAgICAxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAorICAgIDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywKKyAgICAxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAorICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsCisgICAgMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsMTA2LDAsMCwwLDEyMiwxMCwKKyAgICA2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDEyLDAsMCwwLDIzMyw4LDAsMCwwLDIzMywxMiwwLDAsMCwxMjIsMzAsCisgICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCisgICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNDMsCisgICAgMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsCisgICAgMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LAorICAgIDk3LDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNDgsMTE0LDEwMSw5NywKKyAgICA5OSwxMDQsMTAxLDEwMCwzMiw2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwKKyAgICAxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMTEsMTAyLDMyLDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNSwxMDksCisgICAgMTE2LDEwNSwxMDksMTAxLDEyMiwyNiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICAyMTgsNCwxMTUsMTA1LDEyMiwxMDEsMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsCisgICAgMCw0MSw5LDIxOCwxMiw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSwKKyAgICA4MiwxMTQsNDcsMCwwLDAsMTE0LDEwNSwwLDAsMCwxMTQsMTA3LDAsMCwwLAorICAgIDExNCwzMSwwLDAsMCwyMTgsOCw2OSw3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LAorICAgIDE0LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxOSwKKyAgICAwLDAsMCw0MSwxMSwxMTQsNTMsMCwwLDAsMjE4LDEyLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsCisgICAgMCwwLDkwLDExLDEwMSwxMjAsOTksOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsCisgICAgNSwxMDksOTcsMTAzLDEwNSw5OSw5MCwxMywxMTQsOTcsMTE5LDk1LDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTUsMTE2LDk3LDEwOSwxMTIsOTAsOCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsCisgICAgNzUsMCwwLDAsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSwyMTgsMTEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDI1LAorICAgIDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMTYwLDEsMCwwLDExNSw3NiwwLAorICAgIDAsMCwwLDExLDYsMSwxMiwxLDEzLDMsNiwxLDEyLDEsMTAsMSwKKyAgICAxNiwxLDE2LDEsMTYsMSwxMiwxLDE4LDEsMTAsMSwxOCwxLDE4LDEsCisgICAgMTUsMSwxMCwxLDE1LDEsMTgsMSwxNSwxLDEwLDEsMTIsMSwxMiwxLAorICAgIDMsMSwyMCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwxMCwxLDE1LDEsCisgICAgMywxLDE4LDEsMTMsMSw1LDIsMTgsMSwxNSwxLDksMSwxMTQsMTQxLAorICAgIDAsMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDYsMCwwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsMCwxMTYsMCwwLAorICAgIDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDIsMCwxMjQsCisgICAgNCwwLDExNiwzLDAsMTMxLDIsMCwxMTQsNzUsMCwxMTYsNCwwLDEwMCwxLAorICAgIDAsMTI0LDIsMCwxMzEsMiwwLDEsMTI0LDMsMCwxMDAsMiwwLDEwNyw5LAorICAgIDAsMTE0LDcxLDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTI0LDMsMCwKKyAgICAxMzEsMiwwLDEsMTI0LDQsMCw4MywxMTYsNywwLDEwMCwzLDAsMTA2LDgsCisgICAgMCwxMjQsMiwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMSwwLDEwMCw1LDAsCisgICAgMTI0LDIsMCwxMzEsMSwyLDEzMCwxLDAsMTAwLDIsMCw4Myw0MSw2LDEyMiwKKyAgICA2MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiw5NywxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiw5OCwxMjEsCisgICAgMzIsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksCisgICAgMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMjIsMjEsOTksCisgICAgMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMjMsNzgsMTExLDExMCw0NSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMTQsMTA2LAorICAgIDAsMCwwLDExNCwzNSwwLDAsMCw0MSw5LDIxOCw3LDEwOSw5NywxMTQsMTE1LAorICAgIDEwNCw5NywxMDgsOTAsNSwxMDgsMTExLDk3LDEwMCwxMTUsMjE4LDEwLDEwNSwxMTUsMTA1LDExMCwKKyAgICAxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDEwLDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsCisgICAgMTEyLDEwMSwxMTQsMTA1LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLDkwLDE2LDk1LAorICAgIDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDEwNywwLDAsMCwxMTQsNDcsMCwwLDAsNDEsNSwxMTQsNTMsMCwwLDAsCisgICAgMTE0LDEwNiwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDkwLDAsMCwwLDIxOCwKKyAgICA0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMTUsMSwwLDAsMTE1LDE2LDAsMCwwLAorICAgIDAsMiwxNSwxLDE1LDEsMTMsMSwxMiwxLDE2LDEsNCwyLDE4LDEsCisgICAgMTE0LDE0NywwLDAsMCwxMTQsNTksMCwwLDAsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNzYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI1LDMsMCwKKyAgICAxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwyLDAsMTMxLAorICAgIDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiw0LDAsMTA2LAorICAgIDUsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsODMsCisgICAgNDEsMSwxMjIsODAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTcsMzIsOTksMTExLAorICAgIDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMTE2LDExMSwzMiw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTksMTE0LDEwNSwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTExLDExNywxMTYsMzIsMTE2LDExMSwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw0NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDQ2LDQxLDYsMjE4LDksOTgsMTIxLDExNiwxMDEsOTcsMTE0LDExNCw5NywKKyAgICAxMjEsMTE0LDEzNSwwLDAsMCwyMTgsNiwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTQsMTcsCisgICAgMCwwLDAsMTE0LDE0MiwwLDAsMCw5MCw1LDEwMCwxMTcsMTA5LDExMiwxMTUsNDEsCisgICAgNCwxMTQsMTQ2LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE0MCwwLDAsMCwKKyAgICAxMTQsNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwxMTEsOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjI3LDEsMCwwLDExNSwxMCwwLDAsMCwKKyAgICAwLDMsMTIsMSwxOSwxLDE5LDEsMjIsMSwxMTQsMTUwLDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDg5LDAsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMDgsCisgICAgMCwwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsCisgICAgMCwxMDYsMywwLDEyNSwyLDAsMTI0LDEsMCwxMDYsNCwwLDEyNCwyLDAsCisgICAgMTMxLDEsMCwxMjUsMywwLDExNiwxLDAsMTA2LDUsMCwxMDAsMiwwLDEwMCwKKyAgICAzLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDYsMCwxMjQsMCwKKyAgICAwLDEwNiw2LDAsMTI0LDMsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMTMxLDEsCisgICAgMCw4Myw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwKKyAgICAxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTEwLDEwNSwxMTgsMTAxLDExNCwxMTUsOTcsCisgICAgMTA4LDMyLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwKKyAgICAxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsNDYsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDU5LDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsCisgICAgMTIyLDEwMSwxMTQsNDksMCwwLDAsOTAsNyw2NiwxMjEsMTE2LDEwMSwxMTUsNzMsNzksCisgICAgOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsOTAsMTUsMTAwLDEwMSwxMTYsMTAxLAorICAgIDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsMjUsNzMsMTEwLDk5LAorICAgIDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw2OCwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsNDEsNSwKKyAgICAyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDE1MSwKKyAgICAwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsMTAxLAorICAgIDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMjE4LDgsMTAxLDExMCw5OSwxMTEsCisgICAgMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw5NSwxMDAsMTAxLAorICAgIDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMTMsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDIzNywxLDAsMCwxMTUsMTAsMCwwLDAsMCw1LDEyLDEsCisgICAgMTgsMSwxNSwxLDE4LDEsMTE0LDE1NSwwLDAsMCwxMTQsMTI3LDAsMCwwLAorICAgIDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTksMiwwLDAsCisgICAgMCwyLDAsMCwwLDksMCwwLDAsMTksMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDg5LDEsMCwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICA3MywwLDEwMCwyLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwyLDAsMTAwLDMsCisgICAgMCwxMzEsMiwwLDExNCw3MywwLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDEsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwyLAorICAgIDAsMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsCisgICAgMywwLDEwNiw0LDAsMTI0LDAsMCwxMjQsMiwwLDEwMCw0LDAsMTI0LDEsCisgICAgMCwxMzEsMiwxLDEyNSw0LDAsMTAwLDUsMCwxMjQsNCwwLDk1LDUsMCwKKyAgICAxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTk0LDAsMTIwLDczLDAsMTE2LAorICAgIDYsMCwxMzEsMCwwLDY4LDkzLDU4LDAsOTIsMiwwLDEyNSw1LDAsMTI1LAorICAgIDYsMCwxMjQsMSwwLDEwNiw3LDAsMTE2LDgsMCwxMjQsNiwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMTQsMTI4LDAsMTI0LDUsMCwxMjQsMCwwLDEyNCwxLDAsCisgICAgMTMxLDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDQsMCw5NSw5LDAsODAsCisgICAgMTEzLDEyOCwwLDg3LDEwMCwxLDAsODMsMTI0LDMsMCwxMTYsMTAsMCwxMDcsOCwKKyAgICAwLDExNCwyMywxLDExNiwwLDAsMTI0LDIsMCwxMDAsNiwwLDEzMSwyLDAsCisgICAgMTE0LDMyLDEsMTIxLDE5LDAsMTI0LDIsMCwxMDYsMTEsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMTI1LDcsMCw4NywxMTAsMTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsCisgICAgMTE0LDQsMSwxLDEsMSw4OSwxMTMsMzIsMSw4OCwxMjQsNywwLDExNCwzMiwKKyAgICAxLDEwMywwLDAsMTI0LDQsMCw5NSwxMiwwLDExMCw5LDAsMTI0LDMsMCwKKyAgICAxMjQsNCwwLDk1LDEyLDAsMTI0LDQsMCwxMDYsMTIsMCwxMDMsMCwwLDEwNywKKyAgICAyLDAsMTE0LDg1LDEsMTI0LDEsMCwxMTQsODUsMSwxMTYsMTMsMCwxMjQsMSwKKyAgICAwLDEzMSwxLDAsMTAwLDcsMCwyNSwxMjUsOCwwLDEyNCw0LDAsMTA2LDEyLAorICAgIDAsMTA2LDE0LDAsMTI0LDgsMCwxMzEsMSwwLDEsMTI0LDQsMCw4Myw0MSwKKyAgICA4LDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLDMyLDEwNSwxMTAsMTAwLAorICAgIDEwNSw5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMTcsOTgsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwKKyAgICAzMiwxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDEsMTA5LDExMiwKKyAgICAxMTYsMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsCisgICAgOTksMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsMTA0LDMyLDEwNSwxMTYsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDMyLAorICAgIDExNywxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywzMiwxMTUsMTEyLDEwMSwKKyAgICA5OSwzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk1LDk1LAorICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw2MiwyMTgsCisgICAgMTIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDIxOCw2LDExMSwKKyAgICAxMTQsMTA1LDEwMywxMDUsMTEwLDg0LDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSwxMTQsNTksMCwwLDAsNDEsMTUsMTE0LDExNSwwLDAsMCwxMTQsMTU3LAorICAgIDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEyMSwwLDAsMCwyMTgsMTAsNzcsCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDkwLDEzLDk1LDExNSwxMDEsMTE2LDk1LAorICAgIDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsMjcsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw5MiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDEyNywwLDAsMCwyMTgsOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsCisgICAgMTU5LDAsMCwwLDExNCwxNTYsMCwwLDAsMTE0LDM4LDAsMCwwLDIxOCw2LAorICAgIDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDEsOSwxMTQsMTA2LDAsMCwwLDkwLDgsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEyNywwLDAsMCwxMTQsMTU2LDAsMCwKKyAgICAwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDIxOCw4LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE0LAorICAgIDE1OSwwLDAsMCw5MCw3LDEwMCwxMDUsMTE0LDExMCw5NywxMDksMTAxLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwyMywxMTUsMTEyLAorICAgIDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDI1NCwxLDAsMCwxMTUsNjAsMCwwLDAsMCwxMiwKKyAgICAxMiw0LDYsMSwxNSwyLDMsMSwxOSwxLDEzLDEsNSw4LDI0LDEsCisgICAgOSwzLDEyLDEsMjIsMSwyMSwxLDE1LDEsOSwxLDUsMiw0LDMsCisgICAgMTIsMiwxNSwxLDMsMSwxOSwxLDEzLDEsNSwyLDYsMSwxMiwyLAorICAgIDksMSwxNSwxLDYsMSwxNiwxLDE2LDIsMTE0LDE2NywwLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDY0LDAsMCwwLDExNSwxMjEsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLAorICAgIDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCw5MCw0LAorICAgIDAsMTAwLDMsMCw5MCw1LDAsMTAwLDQsMCw5MCw2LDAsMTAxLDcsMCwKKyAgICAxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsCisgICAgNywwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwKKyAgICAwLDEwMSw3LDAsMTAwLDksMCwxMDAsOSwwLDEwMCwxMCwwLDEwMCwxMSwwLAorICAgIDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LDAsMTAwLDksMCwxMDAsCisgICAgMTIsMCwxMDAsMTMsMCwxMzIsMSwwLDEzMSwxLDAsOTAsMTEsMCwxMDAsOSwKKyAgICAwLDgzLDQxLDE0LDIxOCwyMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiwKKyAgICA5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDEwMSw5OSwxMDgsOTcsMTE0LAorICAgIDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAorICAgIDExNSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEyMiw1OSw4MywxMTEsMTAyLAorICAgIDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LAorICAgIDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwKKyAgICAxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsMTIyLDY1LDgzLDExMSwxMDIsMTE2LDExOSw5NywKKyAgICAxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCwKKyAgICA2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsCisgICAgMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LAorICAgIDExMCw5NywxMDksMTAxLDEyNSw5Miw2OCwxMDEsOTgsMTE3LDEwMyw3MCw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNjcsMCwwLDAsMTIxLDIzLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwKKyAgICAwLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLDAsODMsODcsMTEwLDM3LDAsCisgICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw2MiwwLDEsMSwxLDExNiwwLDAsCisgICAgMTA2LDEsMCwxMTYsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLDgzLAorICAgIDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDUsMjE4LDcsCisgICAgOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTAsNyw3OSwxMTIsMTAxLDExMCw3NSwxMDEsMTIxLAorICAgIDkwLDE3LDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LDc4LDg0LDk1LDg1LAorICAgIDgzLDY5LDgyLDExNCw0MCwwLDAsMCw5MCwxOCw3Miw3NSw2OSw4OSw5NSw3NiwKKyAgICA3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSw0MSwyLDIxOCwzLAorICAgIDk5LDEwOCwxMTUsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDc2LDIsMCwwLDExNSw4LDAsMCwwLAorICAgIDAsMiwzLDEsMjMsMSwxMywxLDEyMiwzNiw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAorICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMTQsMjEsCisgICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsOSwwLDEyNCwwLDAsCisgICAgMTA2LDIsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDMsMCwxMDAsMSwwLDEyNCwKKyAgICAxLDAsMTAwLDIsMCwxMTYsNCwwLDEwNiw1LDAsMTAwLDAsMCwxMDAsMywKKyAgICAwLDEzMywyLDAsMjUsMTMxLDAsMiwxMjUsMywwLDEyMSw0NywwLDEyNCwwLAorICAgIDAsMTA2LDYsMCwxMjQsMywwLDEzMSwxLDAsMTQzLDI1LDAsMTI1LDQsMCwKKyAgICAxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsNCwwLDEzMSwyLDAsMTI1LAorICAgIDUsMCw4NywxMDAsMCwwLDgxLDgyLDg4LDg3LDExMCwyMiwwLDQsMTE2LDksCisgICAgMCwxMDcsMTAsMCwxMTQsMTM4LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsCisgICAgMSwwLDg4LDEyNCw1LDAsODMsNDEsNSw3OCwxMTQsMTI2LDAsMCwwLDkwLAorICAgIDExLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsODAsMCwwLAorICAgIDAsMTE0LDMwLDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSw2Niw4NSw3MSw5NSwKKyAgICA2Niw4NSw3Myw3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsCisgICAgNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLDY5LDcxLDczLDgzLAorICAgIDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0NywwLDAsMCwxMTQsNywwLDAsCisgICAgMCwyMTgsNywxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDE3MiwwLDAsMCwxMTQsCisgICAgMTY5LDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwKKyAgICAxMTQsNDAsMCwwLDAsNDEsNiwxMTQsMTcwLDAsMCwwLDExNCwxMjYsMCwwLAorICAgIDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLDEyMSwxMTQsCisgICAgMTcxLDAsMCwwLDkwLDQsMTA0LDEwNywxMDEsMTIxLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwyMTgsMTYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsODMsMiwwLDAsMTE1LDIyLDAsMCwwLDAsMiwKKyAgICA5LDEsMTIsMiw5LDEsMTUsMSwyMiwxLDMsMSwxOCwxLDI5LDEsCisgICAgMTMsMSw5LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsCisgICAgMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsCisgICAgMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDc4LDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNTgsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsCisgICAgMTMxLDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKKyAgICAzMSwwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwxMjQsNCwwLDEzMSwKKyAgICAxLDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY5LAorICAgIDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLDg4LDEyMCw4MSwwLAorICAgIDExNiwzLDAsMTMxLDAsMCw2OCw5Myw3MCwwLDkyLDIsMCwxMjUsNSwwLAorICAgIDEyNSw2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsMTI0LDYsMCwxMzEsCisgICAgMSwwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMDYsNywwLDEyNCwxLAorICAgIDAsMTI0LDUsMCwxMjQsMSwwLDEyNCw0LDAsMTMxLDIsMCwxMDAsMSwwLAorICAgIDEyNCw0LDAsMTMxLDIsMSwxMjUsNywwLDEyNCw3LDAsODMsMTEzLDgwLDAsCisgICAgODcsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwxNTgsMCwwLDAsNDEsOCwxMTQsCisgICAgMTc4LDAsMCwwLDExNCwzOSwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDE2MSwKKyAgICAwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMjEsMCwKKyAgICAwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwwLAorICAgIDExNCwzNSwwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxNzcsMCwKKyAgICAwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxNjQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsCisgICAgMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk4LDIsMCwwLDExNSwKKyAgICAyNiwwLDAsMCwwLDIsMTUsMSwxMiwxLDQsMSwzLDEsMTQsMSwKKyAgICAxMywxLDksMSwyMiwxLDIxLDEsOSwxLDE1LDEsOSwxLDEyMiwzMSwKKyAgICA4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksCisgICAgMywwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwKKyAgICAxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwKKyAgICAwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LDMsMCwxMDYsMSwwLDgzLDEwMCwxLAorICAgIDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMDgsNzAsMTA1LDExMCwxMDAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLAorICAgIDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsCisgICAgMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCwxODEsMCwwLDAsMTE0LDEyNywKKyAgICAwLDAsMCw0MSw0LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCwyLDAsMCwxMTUsOCwwLDAsMCwwLDcsCisgICAgMTgsMSwxMiwxLDcsMiwxMjIsMzMsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCwxMTIsMCwwLDAsCisgICAgMTE0LDExMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LAorICAgIDE3NSwwLDAsMCwxMTQsMTc0LDAsMCwwLDExNCwxNzMsMCwwLDAsMjE4LDExLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNzIsMCwwLDAsCisgICAgMTE0LDE3OCwwLDAsMCwxMTQsMTgxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDE2OCwwLDAsMCw2NCwyLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsMTIsMiw2LDMsNiwzLDYsMiw2LDIsMTgsNywxOCwxNSwzLAorICAgIDEsMjEsMTUsMywxLDExNCwxNjgsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxMyw5NSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTIyLDgzLDY2LDk3LDExNSwKKyAgICAxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsCisgICAgMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwKKyAgICAzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTAwLDEsMCwyNSwKKyAgICAxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLAorICAgIDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwxMDYsMywwLDEwMCwKKyAgICAyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsMTI0LDMsMCwxMDAsCisgICAgNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsNSwwLDEwNywzLAorICAgIDAsODMsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwKKyAgICAxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwxMDQsMTAxLAorICAgIDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsCisgICAgMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0NiwxMTIsCisgICAgMTIxLDM5LDQ2LDExNCwyOSwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDU5LDAsCisgICAgMCwwLDExNCw1NiwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsNDEsNCwxMTQsMzgsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMzQsMCwKKyAgICAwLDAsMTE0LDMyLDAsMCwwLDQxLDUsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LAorICAgIDAsMCwwLDExNCw5NCwwLDAsMCw5MCwxMywxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsMTA4LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDExNCwxNTksMCwwLDAsMTMzLDIsMCwwLDExNSw4LDAsMCwwLDAsCisgICAgMywyNSwxLDIyLDEsMTksMSwxMjIsMjQsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwKKyAgICAyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LDMyLDExNSwKKyAgICAxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0Niw3OCwxMTQsNCwKKyAgICAwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsMTMsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE0MSwyLDAsCisgICAgMCwxMTUsMCwwLDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LAorICAgIDk3LDExNSwxMDUsOTksMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4MCwwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsCisgICAgMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNTQsMCwxMTYsMiwwLDEwMCwyLAorICAgIDAsMTA2LDMsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEzMCwxLDAsMTE2LDQsMCwxMDYsNSwwLDExNiw2LDAsMTI0LDIsMCwxMjQsCisgICAgMSwwLDEwNiw3LDAsMTMxLDMsMCwxLDEwMCwxLDAsODMsNDEsMywxMjIsCisgICAgMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0Niw3OCwxMjIsNTIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExOSwKKyAgICAxMDQsMTAxLDExMCwzMiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0MCw0MSwzMiwxMTQsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNzgsMTExLDExMCwxMDEsNDEsOCwyMTgsOCwxMDMsCisgICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTQsMTEyLDAsMCwwLDExNCwxMDcsMCwwLAorICAgIDAsMTE0LDQ3LDAsMCwwLDExNCwxMjEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LAorICAgIDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LAorICAgIDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCwxMTgsMCwwLAorICAgIDAsNDEsMywxMTQsMTA4LDAsMCwwLDIxOCw2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNCwxNDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDE0NCwyLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDE4LDEsMTIsMSwKKyAgICA5LDEsMTUsMSwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwKKyAgICAxMDUsOTksMTE1LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsCisgICAgMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDEyMSwKKyAgICAwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNTIsMiwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNzgsNDEsOCwxMTQsMTEyLDAsMCwwLDExNCwxMTEsMCwwLAorICAgIDAsMTE0LDExMywwLDAsMCwxMTQsMTE0LDAsMCwwLDExNCwxNTksMCwwLDAsCisgICAgMTE0LDE4NiwwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCwxOTMsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsMTE0LDE4NCwwLDAsMCwxMjgsMiwwLDAsMTE1LDEwLDAsMCwKKyAgICAwLDEyLDMsNiwyLDEyLDgsMTIsMywxMiw4LDExNCwxODQsMCwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMTA2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAorICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLAorICAgIDMsMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsCisgICAgMCwxMDAsNiwwLDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsMTAwLDgsMCwKKyAgICAxMzIsMCwwLDkwLDYsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsOTAsCisgICAgNywwLDEwMCwxMSwwLDEwMCwxOCwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwwLAorICAgIDEsOTAsOCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsOTAsOSwwLAorICAgIDEwMCwxNywwLDgzLDQxLDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLAorICAgIDAsMTMwLDEsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDE3OCw3OSwxMTIsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMDUsMTA5LDEwMSwzMiw0MCwKKyAgICA5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAorICAgIDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE1LDExNiwxMTQsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsODIsOTcsMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLAorICAgIDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwKKyAgICAxLDIxOCw3LDczLDc5LDY5LDExNCwxMTQsMTExLDExNCw0MSwyLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDE1OCwyLDAsMCwxMTUsMiwwLDAsMCwwLDYsMTIyLDIzLDgzLDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA5LDExNiwxMDUsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLDAsMCwxMDAsCisgICAgMSwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTA1LDEsCisgICAgMCw4Myw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LAorICAgIDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDUsCisgICAgMTEwLDEwMywzMiw5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMCwxMDUsCisgICAgOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKKyAgICAxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE2LDExMSwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsNDAsMTE1LDExNiwxMTQsNDEsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgODAsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTA3LDEwMSwxMjEsMTE1LDU4LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDEwOSwxMTYsMTA1LDEwOSwxMDEsMzksCisgICAgMzIsNDAsMTA5LDk3LDExMCwxMDAsOTcsMTE2LDExMSwxMTQsMTIxLDQxLDMyLDEwNSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE2LDEwNSwxMDksMTAxLAorICAgIDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMTEsMTAyLDMyLDEwOCw5NywxMTUsMTE2LDMyLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksCisgICAgMTExLDEwMCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDU5LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDExNSwxMDUsMTIyLAorICAgIDEwMSwzOSwzMiw0MCwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsNDEsMzIsMTA1LDExNSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTA1LDExMCwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDExNCwxMDEsCisgICAgOTcsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTUsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsOTcsMTA1LDExNSwxMDEsCisgICAgMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LAorICAgIDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTQsMTMzLDAsMCwwLDQxLDEsMTE0LDE5NiwwLDAsMCw0MSwKKyAgICAyLDExNCwxMDgsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTY2LDIsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMTEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMiwwLDEyNCwzLDAsCisgICAgMTMxLDIsMCw4Myw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsCisgICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsCisgICAgMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LAorICAgIDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLAorICAgIDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwKKyAgICAxMTQsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTE2LAorICAgIDExNCw5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsCisgICAgMTExLDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwyMTgsOCwKKyAgICAxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDEwOCwwLDAsMCwxMTQsCisgICAgOTAsMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTQsNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMTc5LDIsMCwwLDExNSwyLDAsMCwwLDAsOCwKKyAgICAxMjIsMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNTAsCisgICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCisgICAgMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxMDgsCisgICAgMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw1MywwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTk4LDAsMCwKKyAgICAwLDE4OSwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LAorICAgIDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDE2LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMSwxOSwwLDEyNCwwLDAsCisgICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCw4NywxMTAsNTgsMCwKKyAgICA0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxMjUsNCwwLDEsMTIyLAorICAgIDI2LDAsMTE2LDMsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAxLDEyNCw0LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMywwLDEwMCwzLDAsMTI1LAorICAgIDQsMCwxMjYsNCwwLDg4LDExMCwxLDAsODgsMTE2LDQsMCwxMjQsMywwLAorICAgIDEzMSwxLDAsODMsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLAorICAgIDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMjIsMzksMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwKKyAgICAxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDQwLDQxLDExNCwxMDYsMCwwLDAsNzgsNDEsNSwxMTQsMTU3LDAsCisgICAgMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE0LDQwLDAsMCwKKyAgICAwLDExNCwxMDcsMCwwLDAsMTE0LDE1NSwwLDAsMCw0MSw1LDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDEyNiwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDE1MywwLDAsCisgICAgMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDE5NiwyLDAsMCwxMTUsMTQsMCwwLDAsMCwyLDE1LDEsMywxLAorICAgIDE5LDEsMTgsMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTE0LDI5LDAsMCwKKyAgICAwLDk5LDMsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDksMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwwLDAsMTA2LDEsCisgICAgMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMSwwLDEwMCwyLDAsCisgICAgMTAwLDMsMCwxMDAsNCwwLDEyNCwzLDAsMTMxLDQsMiw4Myw0MSw1LDEyMiwKKyAgICAxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAwLDk3LDExNiw5NywKKyAgICAzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LAorICAgIDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMTYsMTIxLDExMiwKKyAgICAxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDAsNDEsCisgICAgMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwxMTQsMTg5LDAsMCwwLDIxOCwxMiwxMDAsMTExLDExMCwxMTYsOTUsMTA1LAorICAgIDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDg0LDExNCw2OCwwLDAsMCw0MSwzLDExNCwxMjEsCisgICAgMCwwLDAsMTE0LDE4OCwwLDAsMCwyMTgsNyw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LAorICAgIDEwMSw0MSw0LDExNCwxMDgsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwzNSwwLAorICAgIDAsMCwxMTQsMjAzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwKKyAgICAxMTEsOTUsOTksMTExLDEwMCwxMDEsMjA2LDIsMCwwLDExNSw0LDAsMCwwLDAsCisgICAgNSwyMSwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLDAsNDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE3NCwxLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwxMjUsMywwLDEyMSwKKyAgICAxNiwwLDExNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw0LDAsODcsMTEwLAorICAgIDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2MywwLDEsMSwxLDEwMCwKKyAgICAxLDAsMTI1LDQsMCw4OSwxMTAsMjAyLDAsODgsMTIxLDE5LDAsMTI0LDAsMCwKKyAgICAxMDYsMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLDg3LDExMCwxOCwwLAorICAgIDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLDEsODksMTEwLDE2MiwKKyAgICAwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMiwwLDI1LDEzMSwxLDAsMTI1LAorICAgIDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwKKyAgICAwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKKyAgICAxNTksMCwxLDEsMSw4OSwxMTAsMTA2LDAsODgsMTIxLDM0LDAsMTE2LDgsMCwKKyAgICAxMjQsNiwwLDEwMCwzLDAsMTI0LDUsMCwxMDAsNCwwLDEyNCwxLDAsMTAwLAorICAgIDUsMCwxMjQsNCwwLDEzMSwxLDMsMTI1LDcsMCw4NywxMTAsMjQsMCw0LAorICAgIDExNiw5LDAsMTE2LDEwLDAsMTAyLDIsMCwxMDcsMTAsMCwxMTQsMjIwLDAsMSwKKyAgICAxLDEsODksMTEwLDQ1LDAsODgsMTE2LDExLDAsMTAwLDYsMCwxMjQsNCwwLAorICAgIDEyNCwyLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEyNCw3LDAsMTAwLDQsMCwKKyAgICAxMjQsMSwwLDEwMCw3LDAsMTI0LDQsMCwxMDAsOCwwLDEyNCwyLDAsMTMxLAorICAgIDEsMyw4MywxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKKyAgICA4LDAsMTI0LDAsMCwxMDYsMTMsMCwxMjQsOCwwLDEyNCwyLDAsMTMxLDIsCisgICAgMCwxMjUsOSwwLDExNiwxMSwwLDEwMCw5LDAsMTI0LDIsMCwxMzEsMiwwLAorICAgIDEsMTE2LDE0LDAsMTA2LDE1LDAsMTIsMTE0LDE3MCwxLDEyNCw0LDAsMTAwLDEsCisgICAgMCwxMDcsOSwwLDExNCwxNzAsMSwxMjQsMywwLDEwMCwxLDAsMTA3LDksMCwKKyAgICAxMTQsMTcwLDEsMTE2LDE2LDAsMTI0LDksMCwxMjQsMywwLDExNiwxNywwLDEyNCwKKyAgICA4LDAsMTMxLDEsMCwxMzEsMywwLDEyNSw2LDAsMTIxLDM2LDAsMTI0LDAsCisgICAgMCwxMDYsMTgsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsMCwxMzEsMywwLAorICAgIDEsMTE2LDExLDAsMTAwLDEwLDAsMTI0LDQsMCwxMzEsMiwwLDEsODcsMTEwLAorICAgIDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksMSwxLDEsMSw4OSwKKyAgICAxMTAsMSwwLDg4LDEyNCw5LDAsODMsNDEsMTEsMTIyLDE5MCw2NywxMTEsMTEwLDk5LAorICAgIDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLAorICAgIDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsCisgICAgMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwzMiwxMTUsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwKKyAgICAzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsMTMzLDAsMCwwLAorICAgIDExNCwxMzgsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMzUsMCwwLDAsMTIyLAorICAgIDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwxMjMsMTI1LDExNCw4OSwKKyAgICAwLDAsMCwxMTQsOTAsMCwwLDAsMTIyLDE5LDk5LDExMSwxMDAsMTAxLDMyLDExMSwKKyAgICA5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMjIsMTAsMTE5LAorICAgIDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxOSwxMTQsMTU3LDAsMCwwLAorICAgIDExNCw3OSwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsCisgICAgMTk1LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCw0MCwKKyAgICAwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEzNiwwLAorICAgIDAsMCwxMTQsMTA1LDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LDIwNiwwLDAsCisgICAgMCwxMTQsNywwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LDk1LDExOSwxMTQsMTA1LAorICAgIDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDE1MCwwLDAsMCwKKyAgICAxMTQsMzEsMCwwLDAsMTE0LDE5OSwwLDAsMCw0MSwxMCwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMjYsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwxMzksMCwwLDAsCisgICAgMTE0LDg5LDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDUzLDAsMCwwLDIxOCwxMCwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTUzLDAsMCwwLDkwLAorICAgIDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg3LDAsMCwwLAorICAgIDIxNCwyLDAsMCwxMTUsNzgsMCwwLDAsMCw3LDE1LDEsNiwxLDMsCisgICAgMSwxNiwxLDEzLDEsMTEsMiwzLDEsMTksMSwxMywxLDUsMiwxNiwKKyAgICAxLDMsMSwxOSwxLDEzLDEsNSwyLDMsMSw5LDEsMTIsMSwxMywKKyAgICAxLDE5LDEsNSwyLDksMSw3LDEsMTUsMSw2LDEsNywxLDE1LAorICAgIDEsMTgsMSwxMywxLDIyLDEsMTIsMSw5LDEsMTUsMSwzLDEsMTksCisgICAgMSwxNywxLDEzLDEsNSwxLDEyMiwyMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDc4LDExNCwKKyAgICA4NywwLDAsMCw0MSwxMCwxMTQsMTEyLDAsMCwwLDExNCwxMTEsMCwwLDAsCisgICAgMTE0LDExMywwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LAorICAgIDE5OSwwLDAsMCwxMTQsMTk4LDAsMCwwLDExNCwyMDIsMCwwLDAsMTE0LDIwNiwKKyAgICAwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxOTQsMCwwLAorICAgIDAsMTU2LDIsMCwwLDExNSwxNCwwLDAsMCwxMiwyLDEyLDgsMTIsMTMsCisgICAgMTIsMTAsMTIsNywxMiwxMCwxOCw4LDExNCwxOTQsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwwLDAsCisgICAgMCwwLDExNSwxMTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCwKKyAgICA5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwKKyAgICAwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsCisgICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAxLDcsMCwKKyAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDgsMCwxMDAsOSwwLDEzNCwwLDAsMTMxLAorICAgIDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwKKyAgICAwLDEzMSwxLDAsOTAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCisgICAgOTAsMTAsMCwxMzUsMCwwLDgzLDQxLDE0LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsCisgICAgMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LAorICAgIDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLAorICAgIDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLAorICAgIDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMSwwLDgzLDQxLDIsCisgICAgMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKKyAgICAzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwyLAorICAgIDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDMsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTI2LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg1LDAsMCwwLDE1LAorICAgIDMsMCwwLDExNSw0LDAsMCwwLDAsMyw5LDEsMTIyLDE5LDcwLDEwNSwKKyAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwwLDExMSwzMywwLDEyNCwwLDAsCisgICAgMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LDIsMCw4Myw0MSwxLDc4LAorICAgIDQxLDIsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsOTUsMTE0LDExOCwwLAorICAgIDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMjE4LDUsMTExLDExNiwxMDQsMTAxLDExNCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsCisgICAgNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDIxLDMsMCwwLDExNSw0LDAsMCwwLAorICAgIDAsMSwxOCwxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsMSw3OCw0MSwzLAorICAgIDIxOCw0LDEwNCw5NywxMTUsMTA0LDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSwKKyAgICAyNSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDE5LDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwKKyAgICAwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTE2LDEsMCwKKyAgICAxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsCisgICAgNDEsMSwxMjIsMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwKKyAgICAxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCw1LDExNSwxMTcsMTEyLDEwMSwKKyAgICAxMTQsMTE0LDIxMCwwLDAsMCwxMTQsMTkzLDAsMCwwLDQxLDIsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTI2LDAsMCwwLDQxLDEsMTE0LDIxMSwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTkzLDAsMCwwLDI4LDMsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMTAsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICA4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLAorICAgIDEsMTE0LDM1LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwKKyAgICAwLDExNCwxNTcsMCwwLDAsNDAsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAzLDEyMiwyMyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDQyLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwMCwxLDAsCisgICAgMTMxLDIsMCwxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMzEsCisgICAgMCwwLDgzLDg3LDEwMCwyLDAsODEsODIsODgsMTAwLDIsMCw4Myw0MSwzLAorICAgIDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsCisgICAgOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsNzgsNDEsMywxMTQsCisgICAgNDksMCwwLDAsMTE0LDUwLDAsMCwwLDkwLDQsMTE0LDEwMSw5NywxMDAsNDEsCisgICAgMywxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNTQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDIwMCwwLDAsMCw0NSwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMjEsCisgICAgMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsCisgICAgMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsMTEsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsCisgICAgMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTg1LDAsMCwKKyAgICAwLDExNCwyMTMsMCwwLDAsMTE0LDIxNSwwLDAsMCwxMTQsMTIzLDAsMCwwLAorICAgIDExNCwxOTMsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDIxMSwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwxMTQsMjEwLDAsMCwwLDEwLDMsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwxMiwzLDYsMiwxMiw2LDEyLDQsMTIsMywyNCwxMiwxOCwKKyAgICA1LDExNCwyMTAsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsNjQsMCwwLDAsCisgICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKKyAgICAzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LAorICAgIDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsCisgICAgMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLDEwMCwxMCwwLDgzLAorICAgIDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LAorICAgIDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwwLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwxMjQsMiwwLAorICAgIDEwNiwxLDAsMTAwLDIsMCwxMjQsMiwwLDEwNiwyLDAsMTA1LDIsMCw4MywKKyAgICA0MSwzLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTE0LDEzMywwLDAsMCwxMTQsMTM0LDAsMCwwLDQxLAorICAgIDMsMTE0LDM5LDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICA5MCw3LDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMTE0LDIwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTk3LDAsMCwwLDU1LDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMiwxMiwxLDEyMiwyNyw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLAorICAgIDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLAorICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsNCwwLAorICAgIDEzMSwyLDEsODMsNDEsMiw3OCwyMTgsNSw5NSwxMDksMTExLDEwMCwxMDEsNDEsMiwKKyAgICAxMTQsOTcsMCwwLDAsMTE0LDE5OCwwLDAsMCw0MSw1LDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDkwLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsNTMsMCwwLDAsCisgICAgMTE0LDQyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxOTksMCwwLDAsNjAsMywwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjIwLDAsMCwwLDEwNSwxODIsMSwKKyAgICAwLDAsOTksMywwLDAsMCwxLDAsMCwwLDksMCwwLDAsMTcsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLDExNiwwLDAsMTI0LAorICAgIDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTAzLDAsCisgICAgMCwxMjUsNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLDAsMTE2LDEsMCwKKyAgICAxMjQsNCwwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsMCwxMjQsNCwwLAorICAgIDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwxMjQsNiwwLDEwNiwKKyAgICAyLDAsMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsODcsMTIwLDEzMiwwLAorICAgIDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwwLDEyNSw3LDAsCisgICAgMTE2LDQsMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwxMjUsNCwwLDEyMSwKKyAgICAxNywwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwxLDAsMSw4NywKKyAgICAxMTMsOTQsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwwLDEsMSwxLAorICAgIDExOSw5NCwwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMjExLAorICAgIDAsMSwxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwxMDAsMSwwLDEyNCwKKyAgICA0LDAsMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCw4Myw4Nyw4OSwxMDAsCisgICAgMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMyw5NCwwLDg4LAorICAgIDExMyw5NCwwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLDAsMTI0LDIsMCwKKyAgICAxMjQsMywwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLDAsMTI0LDEsMCwKKyAgICAxMzEsMiwwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwKKyAgICA0OCwxLDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LDAsMTAwLDEsMCwKKyAgICAxMjQsMSwwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LDEwMCwyLDAsMTAwLAorICAgIDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCw4OCwxMDAsMiwwLAorICAgIDgzLDQxLDQsMTIyLDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwKKyAgICAxMjIsMjcsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsCisgICAgMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMTIsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxMSwxMTQsMzgsCisgICAgMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDMzLDAsCisgICAgMCwwLDExNCwyOCwwLDAsMCwxMTQsMywwLDAsMCw5MCw1LDEwOSwxMDcsCisgICAgMTAwLDEwNSwxMTQsMjE4LDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMTA1LDAsMCwwLDExNCw1NSwKKyAgICAwLDAsMCw0MSw5LDExNCwxMDgsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKKyAgICA1MywwLDAsMCwxMTQsMjIwLDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwKKyAgICAxMTYsMTE0LDk0LDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTk4LDAsMCwwLDY1LDMsMCwwLDExNSwzOCwwLAorICAgIDAsMCwwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwKKyAgICAxNSwxLDMsMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwyNywxLAorICAgIDMsMSwxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICAxOTksMCwwLDAsMTE0LDE5OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMjE4LDAsCisgICAgMCwwLDUxLDMsMCwwLDExNSw4LDAsMCwwLDEyLDIsNiwyLDEyLAorICAgIDUsMTIsNSwxMTQsMjE4LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ2LDAsCisgICAgMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCw4MywKKyAgICA0MSw3LDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKKyAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNDUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICA1LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDc2LDAsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LAorICAgIDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDEyNCwyLAorICAgIDAsMTMxLDEsMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsMCwxMDAsMSwwLAorICAgIDEyNCwxLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsODMsNDEsNCw3OCwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsODksMCwwLDAsNDEsCisgICAgNCwxMTQsMTU3LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE0MSwwLDAsMCwKKyAgICAxMTQsMTQ3LDAsMCwwLDQxLDUsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDIwOSwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsCisgICAgMTg3LDAsMCwwLDk4LDMsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwKKyAgICAxLDE1LDEsMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LAorICAgIDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICAwLDgzLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLAorICAgIDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIwMiwKKyAgICAwLDAsMCwxMDQsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwzMSwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LAorICAgIDQxLDYsMTE0LDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxMTMsMCwwLAorICAgIDAsMTE0LDExNCwwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCwyMDIsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDUsMCwwLDAsMTE0LDIyMywwLDAsMCw5NCwzLDAsMCwxMTUsNiwwLAorICAgIDAsMCwxMiwyLDYsMiwxMiw2LDExNCwyMjMsMCwwLDAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLAorICAgIDAsMCwxMTUsMTM2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsCisgICAgMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LAorICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsCisgICAgMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsCisgICAgMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDksCisgICAgMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LDAsCisgICAgMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMSwxMiwwLDEwMCwxOCwwLDEwMCwKKyAgICAxOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMywwLDEwMCwyMCwwLDgzLDQxLAorICAgIDIxLDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LAorICAgIDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksCisgICAgMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLAorICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDEwNiwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsNDEsMywxMTQsMTA4LDAsMCwwLDExNCwxMDYsMCwwLDAsCisgICAgMTE0LDM1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxODUsMCwwLDAsMTIxLDMsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsMSw5LDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsMCwKKyAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywyLDAsMTExLDMzLDAsCisgICAgMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsMiwwLDgzLAorICAgIDQxLDEsNzgsNDEsMiwxMTQsMjExLDAsMCwwLDExNCwxMTgsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA4LDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIxMywwLDAsMCwxMjUsCisgICAgMywwLDAsMTE1LDQsMCwwLDAsMCwxLDE4LDEsMTIyLDI2LDY5LDEyMCwKKyAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMTYsMCwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLDEsNzgsNDEsCisgICAgMywxMTQsMjE0LDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLAorICAgIDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwxMTQsMjE1LDAsMCwwLDEyOSwzLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywKKyAgICAxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMiwwLAorICAgIDEyNSwyLDAsMTE2LDQsMCwxMDAsMSwwLDEyNCwxLDAsMTA2LDUsMCwxMjQsCisgICAgMCwwLDEwNiw2LDAsMTMxLDMsMCwxLDEyNCwyLDAsODMsNDEsMiwxMjIsCisgICAgMzgsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDExMCwzMiwxMTcsMTEwLDEwNSwxMTYsMTA1LAorICAgIDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDM4LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDQxLAorICAgIDcsMTE0LDEyMSwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxNDUsMCwwLDAsCisgICAgOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksCisgICAgMTE0LDEwNSwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwKKyAgICAzLDExNCwxMDgsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsMTkwLDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwKKyAgICAxODYsMCwwLDAsMTMyLDMsMCwwLDExNSwxMCwwLDAsMCwwLDIsNiwKKyAgICAxLDE1LDEsNiwxLDE2LDEsMTIyLDMzLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAorICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsCisgICAgOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA0NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMDYsMywwLAorICAgIDEyNCwxLDAsMTMxLDIsMCwxLDExNiw0LDAsMTAwLDEsMCwxMjQsMCwwLAorICAgIDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMDAsMiwwLAorICAgIDgzLDQxLDMsMTIyLDMwLDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsCisgICAgOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDEyMiw0MCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsCisgICAgMTE2LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDQxLDcsCisgICAgMTE0LDEyMSwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxNDUsMCwwLDAsOTAsCisgICAgMTIsMTAxLDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTA1LDAsCisgICAgMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDIsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxOTEsMCwwLDAsMTQwLDMsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsMiwxOSwxLDYsMSwxMjIsMzEsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwKKyAgICAwLDExNSw0OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCisgICAgMSwwLDEwMCwxLDAsMjUsMTM3LDAsMCwxMTYsMiwwLDEzNSwwLDAsMTAyLAorICAgIDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwxMTYsMywwLDY4LDEzMSwKKyAgICAxLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwKKyAgICAzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDI5LDAsMCwwLAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAorICAgIDAsNTEsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLDAsOTMsMjEsMCwKKyAgICAxMjUsMSwwLDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLDIzLDEwNywyLDAsCisgICAgODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDEsMiwxMTQsMTg1LDAsMCwwLAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDIyLDAsMCwwLDIxOCw2LDExNSwKKyAgICAxMTcsMTAyLDEwMiwxMDUsMTIwLDQxLDEsMjE4LDksMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywKKyAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDI1MCw5LDYwLDEwMywKKyAgICAxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNDksMywwLDAsMTE1LDIsMCwwLDAsCisgICAgNiwxLDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDQsMTE0LDM4LDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCwyMTgsMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSwKKyAgICA3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMjYsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMTE0LDE1OSwwLDAsMCwxNDYsMywwLDAsCisgICAgMTE1LDYsMCwwLDAsMCwyLDE5LDEsMTgsMSwxMjIsMzAsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDYzLDgyLDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LDExMCwzMiwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICA5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCwxMTQsNCwwLAorICAgIDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg3LDAsCisgICAgMCwwLDE1MiwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDY5LAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Myw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LAorICAgIDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsCisgICAgMTI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDExNCwyMDIsMCwwLDAsMTU2LDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsCisgICAgMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDQxLDEsMTE0LDM1LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTI2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxNTcsMCwwLDAsMTYwLDMsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMTIsMCwwLDAsMTE0LDExMSwKKyAgICAwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLDAsMTE0LDE4NSwwLAorICAgIDAsMCwxMTQsMjEzLDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDE4NiwwLDAsCisgICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDE4NywwLDAsMCwKKyAgICAxMTQsMjAyLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMjI0LDAsMCwwLDExMywzLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsMTIsNiw2LDIsMTIsNCwxMiw0LDEyLDMsMTIsOCwxMiw2LDEyLAorICAgIDYsMTIsNCwxMiw0LDExNCwyMjQsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDkwLAorICAgIDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTQsCisgICAgMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LDAsMTAwLDE3LDAsCisgICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLDAsOTAsCisgICAgMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwxMTIsCisgICAgMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLAorICAgIDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCisgICAgNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywKKyAgICAxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LAorICAgIDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LAorICAgIDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLDAsMTI0LDEsMCwKKyAgICAxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDExNiwKKyAgICAyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjQsMCwKKyAgICAwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsCisgICAgODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksMTAxLDIxOCw1LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNCw5MywwLDAsMCwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTcsOTUsMTA4LDk3LAorICAgIDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTIsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsNCwxMTQsMTA4LAorICAgIDAsMCwwLDExNCwxMDYsMCwwLDAsMTE0LDM1LDAsMCwwLDIxOCwxMSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg1LDAsMCwwLDE3MywzLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksMSwyMSwxLDEyMiwKKyAgICAyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsCisgICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsCisgICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwKKyAgICAxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCw4MywxMjQsMSwwLAorICAgIDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LAorICAgIDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LAorICAgIDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw1OCwwLDAsMCwxMTQsMzAsCisgICAgMCwwLDAsMTE0LDcsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLDgsOTUsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMjIsMywxMTUsMTIxLDExNSwxMjIsNCwKKyAgICAxMTIsOTcsMTE2LDEwNCw0MSwyLDExNCwyMzEsMCwwLDAsMTE0LDMyLDAsMCwwLAorICAgIDQxLDQsMTE0LDEwOCwwLDAsMCwxMTQsMjIyLDAsMCwwLDIxOCwzLDEwMCwxMTEsCisgICAgMTE2LDkwLDIsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE3OSwzLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMjcsMSwxMiwyLDQsMywxMjIsMzgsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNSw5OSwxLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwKKyAgICAxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCw5MiwyLDAsMTI1LDEsMCwxMjUsCisgICAgMiwwLDExNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMjUsMTI0LAorICAgIDIsMCwxMzEsMiwwLDgzLDQxLDEsNzgsNDEsNCwxMTQsMjM4LDAsMCwwLAorICAgIDExNCwxMTcsMCwwLDAsMTE0LDcsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDQxLDMsMTE0LDEwOCwwLDAsMCw5MCwxOCwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwyMzMsMCwKKyAgICAwLDAsMTg5LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLDEyMiwKKyAgICAzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMTgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAorICAgIDEwNiwxLDAsMTMxLDAsMCwxMzEsMSwwLDEyNSwxLDAsMTI0LDEsMCwxMjQsCisgICAgMCwwLDEwNiwyLDAsMTA3LDMsMCwxMTQsMTExLDAsMTI0LDAsMCwxMDYsMywKKyAgICAwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwKKyAgICAxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsCisgICAgNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwKKyAgICAwLDExNCwxMDIsMCwxMjQsMiwwLDEwNiw2LDAsMTI0LDAsMCw5NSw3LDAsCisgICAgMTI0LDEsMCwxMjQsMCwwLDk1LDIsMCwxMjQsMCwwLDEwNiw3LDAsODMsCisgICAgNDEsMSw3OCw0MSw4LDExNCw5MywwLDAsMCwxMTQsMjMzLDAsMCwwLDExNCwKKyAgICAyMzQsMCwwLDAsMTE0LDIzNSwwLDAsMCwxMTQsMjMxLDAsMCwwLDExNCwxMjcsCisgICAgMCwwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMjMyLDAsMCwwLDQxLDMsMTE0LAorICAgIDEwOCwwLDAsMCw5MCwxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsCisgICAgOTcsMTE2LDEwMSwxOTMsMywwLDAsMTE1LDE2LDAsMCwwLDAsMiwxOCwxLAorICAgIDE1LDEsMjEsMywyNywxLDksMSwxMiwxLDksMSwxMjIsMjcsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsCisgICAgOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwKKyAgICAwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwKKyAgICAxLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDEwNSwxMTYsMTAxLDExNCwxMTQsMjQwLAorICAgIDAsMCwwLDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsMjA2LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjMsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsCisgICAgMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsCisgICAgODMsNDEsMSw3OCw0MSwyLDExNCwzMSwwLDAsMCwxMTQsMjQwLDAsMCwwLAorICAgIDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNSwwLDAsMCwyMTgsNyw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwyMDksCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyMiw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA4LDEwMSwxMTAsCisgICAgOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsCisgICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLAorICAgIDIwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwKKyAgICAxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw0NywwLDAsMCwxMTQsMjMyLDAsMCwKKyAgICAwLDQxLDEsMTE0LDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsCisgICAgOTUsMjEyLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDEwNyw2LDAsODMsNDEsCisgICAgMSw3OCw0MSwxLDExNCwyNDAsMCwwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLAorICAgIDIxOCw0LDEwNSwxMTYsMTAxLDEwOSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNSwwLDAsMCwyMTgsMTIsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwKKyAgICAxMTUsOTUsOTUsMjE1LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LAorICAgIDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEyNCwxLAorICAgIDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMzIsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LAorICAgIDI0NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMTYzLDAsMCwwLDIxOCwzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCisgICAgOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDEzLDExNCwxMTIsMCwKKyAgICAwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTQsMCwwLAorICAgIDAsMTE0LDE4NSwwLDAsMCwxMTQsMjM4LDAsMCwwLDExNCwyMzMsMCwwLDAsCisgICAgMTE0LDI0MCwwLDAsMCwxMTQsMjQyLDAsMCwwLDExNCwyNDMsMCwwLDAsMTE0LAorICAgIDI0NCwwLDAsMCwxMTQsMjQ2LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDIzMCwwLDAsMCwxNjYsMywwLDAsMTE1LDIwLDAsMCwwLAorICAgIDEyLDUsNiwyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMywxMiwzLDEyLDMsCisgICAgMTIsMywxMiwzLDExNCwyMzAsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsMTE4LAorICAgIDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwKKyAgICAxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwwLDEwMCwzLAorICAgIDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMCw1LDAsCisgICAgMTAwLDYsMCwxMzIsMCwwLDkwLDYsMCwxMDAsNywwLDEwMCw4LDAsMTMyLAorICAgIDAsMCw5MCw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDkwLDgsCisgICAgMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTMsMCwKKyAgICAxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLAorICAgIDAsMCw5MCwxMSwwLDEwMCwxNywwLDgzLDQxLDE4LDIxOCwxNiw5NSw3OCw5NywKKyAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSw0LDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwKKyAgICAxMjQsMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4MywKKyAgICA0MSwxLDc4LDQxLDIsMTE0LDIzMCwwLDAsMCwxMTQsMjMyLDAsMCwwLDQxLAorICAgIDQsMTE0LDEwOCwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICAxMTQsMjM2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCwxODUsMCwwLDAsMjI0LDMsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsCisgICAgMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwKKyAgICAxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LAorICAgIDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTIyLDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLAorICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsMTE0LDQ3LDAsCisgICAgMCwwLDExNCwxMTIsMCwwLDAsNDEsMiwxMTQsMTcwLDAsMCwwLDExNCwxOTAsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyMjcsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyOCw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAorICAgIDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsODQsMTE0LDQsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE1OSwwLDAsMCwyMzYsCisgICAgMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKKyAgICAwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsMzAsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwxMjYsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDIwMiwwLAorICAgIDAsMCwyMzksMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSwKKyAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsCisgICAgMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwxMTQsMzAsMCwKKyAgICAwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LDE4OSwwLDAsCisgICAgMCwxMTQsMjA0LDAsMCwwLDg0LDQxLDEsMTE0LDIwNSwwLDAsMCw0MSwyLAorICAgIDExNCwxMDgsMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsMTg3LDAsMCwwLDI0MiwzLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCisgICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKKyAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDE2NCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMTg2LDAsMCwwLDI0NSwzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMzAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAorICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMTkwLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDExNCwxOTEsMCwwLDAsMjQ4LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLDEyNCwwLAorICAgIDAsMTA2LDEsMCwxMzEsMiwwLDEsMTE2LDIsMCwxMDYsMywwLDEyNCwwLAorICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDk4LDc2LDExMSw5NywxMDAsCisgICAgMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwKKyAgICAxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LAorICAgIDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDM4LAorICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEyMywzMywxMTQsMTI1LDQxLDQsMTE0LDEwNSwwLDAsMCwxMTQsMjMyLDAsCisgICAgMCwwLDExNCwxMjEsMCwwLDAsMTE0LDE5MiwwLDAsMCw0MSwyLDExNCwxMDgsCisgICAgMCwwLDAsMTE0LDEyNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMTkzLDAsMCwwLDI1MSwzLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDExMiwwLDAsMCwxMTQsCisgICAgMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDE4NSwwLDAsMCwxMTQsMTgzLAorICAgIDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMjAyLDAsCisgICAgMCwwLDExNCwxODcsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMTkxLDAsMCwKKyAgICAwLDExNCwxOTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDI0NywwLDAsMCwyMjMsCisgICAgMywwLDAsMTE1LDE2LDAsMCwwLDEyLDEsMTIsMywxOCw5LDEyLDMsCisgICAgMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsMjQ3LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLAorICAgIDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLAorICAgIDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LDAsMTAwLDQsCisgICAgMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsMTAxLDQsMCwKKyAgICAxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDcsMCwxMDEsCisgICAgNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsOTAsOCwKKyAgICAwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCwKKyAgICAxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMCwwLDEwMCwKKyAgICAxMywwLDEwMCwxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw0LAorICAgIDAsMTAwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwxMzEsMSwwLAorICAgIDkwLDExLDAsMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LDExNiwxMDQsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsMCwwLDEyMCwKKyAgICA0OCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLDAsNjgsOTMsCisgICAgMzEsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLAorICAgIDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsMSwxMTMsMTYsCisgICAgMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsMTA4LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwKKyAgICAzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLAorICAgIDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwxMTQsNywwLAorICAgIDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LAorICAgIDExNSwwLDAsMCwxMTQsMjUwLDAsMCwwLDQxLDIsMTE0LDE3MCwwLDAsMCwKKyAgICAyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNSwwLDAsMCwxMTQsMjUwLDAsMCwwLDEyLDQsMCwwLAorICAgIDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywKKyAgICAxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMDcsCisgICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsCisgICAgNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsMTE2LDIsMCwxMDYsCisgICAgMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTIwLDU5LDAsMTE2LAorICAgIDAsMCwxMDYsMSwwLDY4LDkzLDQ0LDAsMTI1LDIsMCwxMjEsMTQsMCwxMjQsCisgICAgMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw4NywxMTMsNTEsMCw0LDExNiw1LAorICAgIDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxLDEsMTE5LDUxLDAsODksMTEzLDUxLAorICAgIDAsODgsMTEzLDUxLDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLDgzLDQxLDMsCisgICAgMTIyLDExMyw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKKyAgICAxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsCisgICAgMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwKKyAgICAzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LDEwOCwxMTUsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDc4LDEyMiwyMywxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSw2LDExNCwKKyAgICA3LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LAorICAgIDExNCw2MCwwLDAsMCwxMTQsNjEsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsCisgICAgMTA3LDAsMCwwLDQxLDMsMTE0LDE3MCwwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTUsMjAsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNywyNSwxLDE2LAorICAgIDEsMTYsMSwzLDEsMTQsMSwxMywxLDEyLDIsMTIyLDIyLDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMjMsMCwwLDAsMTI0LDEsMCwKKyAgICAxMDAsMSwwLDEwNywyLDAsMTE0LDUzLDAsMTIxLDE2LDAsMTE2LDAsMCwxMDYsCisgICAgMSwwLDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMjIsMCw0LDExNiwyLDAsCisgICAgMTA3LDEwLDAsMTE0LDUyLDAsMSwxLDEsMTAwLDIsMCw4Myw4OSwxMTAsMSwKKyAgICAwLDg4LDEyMSwxNywwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDI1LDEyNSwKKyAgICAyLDAsODcsMTEwLDQ2LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMTgsMCwKKyAgICAxLDEsMSwxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKKyAgICAyLDAsMTI0LDIsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCw2MCw4OSwKKyAgICAxMTAsMSwwLDg4LDEyNCwyLDAsODMsNDEsMywxMjIsMjEwLDcxLDEwMSwxMTYsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsCisgICAgMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCwKKyAgICA5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwKKyAgICAxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzAsCisgICAgMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDUsMCwwLDAsCisgICAgMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsNywwLDAsMCwxMTQsMjUxLDAsMCwwLDExNCwxMzcsMCwKKyAgICAwLDAsMTE0LDI1NSwwLDAsMCw0MSwzLDExNCwxNzAsMCwwLDAsMTE0LDM1LAorICAgIDAsMCwwLDExNCwyNTMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDIwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwzNyw0LDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMCw4LDEyLDEsMywxLDE2LDEsMTMsMywKKyAgICA5LDEsMywxLDE3LDEsMTMsMSwxNSwxLDE4LDEsMTIyLDMxLDgwLDk3LAorICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDYsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTE5LDAsMCwwLDExNiwwLDAsMTI0LDIsMCwxMDAsMSwwLAorICAgIDEzMSwyLDAsMTE0LDM5LDAsMTI0LDIsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLAorICAgIDEsMCw5MiwyLDAsMTI1LDMsMCwxMjUsNCwwLDExMCwyMSwwLDEyNCwyLAorICAgIDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsMCwxMDMsMCwwLAorICAgIDEyNSw0LDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDg4LDAsMTE2LAorICAgIDMsMCwxMDYsNCwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDExNiwKKyAgICAzLDAsMTA2LDUsMCwxMjQsMSwwLDEwMCwwLDAsMTMxLDIsMCwxMjUsNSwKKyAgICAwLDEyNCw0LDAsMTI0LDUsMCw5NSw2LDAsMTI0LDUsMCw4Myw0MSwyLAorICAgIDc4LDExNCwxMjQsMCwwLDAsNDEsNywxMTQsMTE1LDAsMCwwLDExNCwxMjQsMCwKKyAgICAwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCwxNzksMCwwLAorICAgIDAsMTE0LDE2MCwwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLDYsMTE0LDE3MCwwLAorICAgIDAsMCwxMTQsMTI2LDAsMCwwLDExNCwyNTMsMCwwLDAsMTE0LDEyNywwLDAsCisgICAgMCwxMTQsMTI4LDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMjE4LDE2LDk1LDEwOCwxMDEsMTAzLAorICAgIDk3LDk5LDEyMSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw1OSw0LDAsMCwKKyAgICAxMTUsMTgsMCwwLDAsMCw0LDE1LDEsMjQsMiwxNSwxLDYsMSwxMiwKKyAgICAxLDE2LDEsMTgsMSw5LDEsMTIyLDI3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsMCwwLDksMCwKKyAgICAwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjQzLDAsMCwwLDEwMywKKyAgICAwLDAsMTI1LDQsMCwxMjAsMjMwLDAsMTI0LDIsMCw2OCw5MywxOTEsMCwxMjUsCisgICAgNSwwLDExNiwwLDAsMTI0LDUsMCwxMTYsMSwwLDExNiwyLDAsMTAyLDIsCisgICAgMCwxMzEsMiwwLDExNSw0MywwLDExMywxMywwLDEyNCwwLDAsMTA2LDMsMCwKKyAgICAxMjQsNSwwLDEzMSwxLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LAorICAgIDksMCwxMTQsMTMsMCwxMTYsNCwwLDEyNCw2LDAsMTAwLDIsMCwxMzEsMiwKKyAgICAwLDExNCwxMDYsMCwxMjQsNiwwLDEwNiw1LDAsMTI0LDEsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsMTI1LDcsMCwxMTAsMTgsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAorICAgIDEsMCwxMjQsNiwwLDEzMSwyLDAsMTI1LDcsMCwxMjQsNywwLDEwMCwxLAorICAgIDAsMTA3LDgsMCwxMTQsMTM5LDAsMTEzLDEzLDAsMTI0LDcsMCwxMDYsNywwLAorICAgIDEwMCwxLDAsMTA3LDksMCwxMTQsMTU4LDAsMTI0LDcsMCw4MywxMjQsNywwLAorICAgIDEwNiw4LDAsMTI1LDgsMCwxMjQsOCwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCisgICAgMTkxLDAsMTE2LDksMCwxMDAsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsNCwKKyAgICAwLDEwNiwxMCwwLDEyNCw4LDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDExNiwKKyAgICAxMSwwLDEwNiwxMiwwLDEyNCwxLDAsMTAwLDEsMCwxMzEsMiwwLDEyNSw3LAorICAgIDAsMTI0LDQsMCwxMjQsNywwLDk1LDgsMCwxMjQsNywwLDgzLDEwMCwxLAorICAgIDAsODMsNDEsNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCisgICAgMTEwLDk3LDEwOSwxMDEsNDYsNzgsMTE0LDE4MSwwLDAsMCwxMjIsMTksMTE1LDExMiwxMDEsCisgICAgOTksMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDEsMTMsMTE0LDE0MywwLDAsMCwxMTQsNjksMCwwLDAsMjE4LDUsOTgsMTIxLAorICAgIDExNiwxMDEsMTE1LDExNCwxLDEsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE4MSwwLAorICAgIDAsMCwxMTQsMiwxLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNTYsMCwwLAorICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwxMjEsMCwwLDAsCisgICAgMTE0LDE2MCwwLDAsMCw0MSw5LDExNCwxNzAsMCwwLDAsMTE0LDEyNiwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsMTE0LDE4MCwwLDAsMCwyMTgsMTQsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDEsMTEwLDExNiwKKyAgICAxMTQsMTIxLDExNCwyNTMsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCw5LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc0LDQsMCwwLDExNSwKKyAgICA0MCwwLDAsMCwwLDUsNiwxLDEzLDEsMjEsMSwzLDEsMTUsMSwKKyAgICAxMiwxLDE1LDEsMjEsMiwxOCwxLDEyLDEsMywxLDE1LDEsNCwxLAorICAgIDksMSwxMiwxLDEyLDUsMTcsMiwxOCwxLDksMSwxMjIsMjAsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsCisgICAgMTAxLDk5LDk5LDQsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMjQsMiwwLDEwMCwKKyAgICAxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsCisgICAgMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEyNCwzLDAsCisgICAgMTMxLDMsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICA1OCwwLDEwMCwxLDAsODMsMTI0LDQsMCwxMDYsMywwLDEwMCwxLDAsMTA3LAorICAgIDgsMCwxMTQsMTMyLDAsMTI0LDQsMCwxMDYsNCwwLDEyNSw1LDAsMTI0LDUsCisgICAgMCwxMTQsMTI1LDAsMTAwLDIsMCwxMjQsNCwwLDk1LDUsMCwxMTYsNiwwLAorICAgIDEyNCwxLDAsMTI0LDUsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDMsMCwxMjQsCisgICAgNCwwLDk1LDQsMCwxMjQsNCwwLDgzLDEwMCwxLDAsODMsMTEwLDQsMCwKKyAgICAxMjQsNCwwLDgzLDEwMCwxLDAsODMsNDEsMywxMjIsOTgsMTAyLDEwNSwxMTAsMTAwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LAorICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwKKyAgICAzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsNzgsOTAsCisgICAgOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw3LDExNCw3LDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMTQsNSwxLDAsMCwxMTQsMTI3LDAsMCwwLAorICAgIDExNCwxNTYsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMjMwLDAsMCwwLDQxLAorICAgIDYsMTE0LDE3MCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICAxMTQsMTgwLDAsMCwwLDExNCwxNjQsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDE4MSwKKyAgICAwLDAsMCwxMDYsNCwwLDAsMTE1LDI2LDAsMCwwLDAsNCwxMiwxLAorICAgIDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsMyw5LDEsCisgICAgMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwKKyAgICAyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwKKyAgICAwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwwLDgzLDQxLAorICAgIDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsCisgICAgMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwKKyAgICAzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKKyAgICAxMTQsMTgxLDAsMCwwLDExNCwxMjcsMCwwLDAsNDEsNCwxMTQsMTcwLDAsMCwKKyAgICAwLDExNCwxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwxNjQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDE4MiwwLDAsMCwxMjgsNCwwLDAsMTE1LDgsMCwwLDAsMCw4LDE4LAorICAgIDEsMTIsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMTIsMTE0LAorICAgIDExMiwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwKKyAgICAwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwyNTAsMCwwLDAsMTE0LDI1NSwwLAorICAgIDAsMCwxMTQsMSwxLDAsMCwxMTQsMiwxLDAsMCwxMTQsNSwxLDAsCisgICAgMCwxMTQsMTgxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDI0OSwwLDAsMCw4LDQsMCwwLDExNSwyMiwwLDAsMCwxMiwyLDYsCisgICAgMiwxOCw4LDE4LDE3LDE4LDIyLDE4LDE1LDMsMSwxOCwzMSwzLDEsMjEsCisgICAgMjEsMywxLDExNCwyNDksMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsMTMzLDAsCisgICAgMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLDYsMCw5MCwKKyAgICA3LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsOCwwLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDksMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMDAsMTIsMCwxMzIsMSwwLDkwLDEwLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLAorICAgIDAsMCw5MCwxMSwwLDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLAorICAgIDAsMTMxLDEsMCw5MCwxMywwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsCisgICAgOTAsMTQsMCwxMDAsMTAsMCw4Myw0MSwxOSwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsMTcyLDcwLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsCisgICAgMTAwLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLAorICAgIDExMCwxMTYsMTAxLDExNCw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksCisgICAgMzIsOTcsMTE0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksOTcsMTEwLDk5LDEwMSw0NCwzMiw5OCwxMDEsMTA1LAorICAgIDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMDIsMTE0LDEwMSwxMTUsMTA0LDEwMSwxMDAsCisgICAgMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsCisgICAgMTExLDExNCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LAorICAgIDExNSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsMTA0LDk3LDExNSwzMiw5OCwKKyAgICAxMDEsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAorICAgIDUsMCwwLDAsNywwLDAsMCwxMTUsMTIyLDAsMCwwLDEwMywwLDAsCisgICAgMTI1LDMsMCwxMjAsNTIsMCwxMjQsMiwwLDY4LDkzLDQ0LDAsOTIsMiwwLAorICAgIDEzNywwLDAsMTI1LDQsMCwxMjQsMywwLDEwNiwwLDAsMTM1LDAsMCwxMDIsCisgICAgMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNCw0LDAsNjgsMTMxLAorICAgIDEsMCwxMzEsMSwwLDEsMTEzLDEzLDAsODcsMTI0LDMsMCwxMjQsMCwwLAorICAgIDk1LDEsMCwxMjQsMSwwLDExMiw3OSwwLDEwMCwzLDAsMTI0LDAsMCw5NSwKKyAgICAyLDAsMTAwLDYsMCwxMjQsMCwwLDk1LDMsMCwxMTYsNCwwLDEzMSwwLAorICAgIDAsMTI0LDAsMCw5NSw1LDAsMTE2LDQsMCwxMzEsMCwwLDEyNCwwLDAsCisgICAgOTUsNiwwLDEwMCw1LDAsODMsNDEsNywxMjIsMTU0LDczLDExMCwxMDUsMTE2LDEwNSwKKyAgICA5NywxMDgsMTA1LDEyMiwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDExMSwxMTAsCisgICAgMzIsOTcsMTEwLDEwMCwzMiw5NywzMiwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwxMDgsMTAxLDMyLAorICAgIDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw1MCw0NSwxMTYsMTE3LDExMiwxMDgsMTAxLDExNSwzMiw5OSwxMTEsMTEwLDExNiw5NywKKyAgICAxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxMDEsOTksMTExLDEwMywxMTAsCisgICAgMTA1LDEyMiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNTEsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwKKyAgICAwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTM2LDAsMCwxMDIsMiwKKyAgICAwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMjIsMCwwLDAsMTE0LDIyNSwwLDAsMCw0MSwxLAorICAgIDExNCwxMjcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDIyNywwLDAsMCwxNTcsNCwwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwKKyAgICAzOCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLAorICAgIDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw1OCwwLDAsMCwxMTQsMjksMCwwLAorICAgIDAsNzgsMTE0LDg3LDAsMCwwLDQxLDcsMTE0LDE0OSwwLDAsMCwyMTgsOCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMzUsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDMsMTE1LDEwMSwxMTYsMjE4LAorICAgIDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDE5LDk1LDExNCwKKyAgICAxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsNDEsNSwxMTQsMTA4LDAsMCwwLDExNCwzNSwwLDAsMCwyMTgsMTQsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCw3LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgNDEsMSwxMTQsMTI3LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxODUsMCwwLAorICAgIDAsMTUxLDQsMCwwLDExNSwxNiwwLDAsMCwwLDQsNiwxLDE5LDEsCisgICAgMzYsMSw5LDIsMTUsMSw5LDEsMTIsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDMsMCwxMjQsMCwwLDk1LAorICAgIDAsMCwxMDAsMiwwLDgzLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsOTcsMTA4LDEwNSwKKyAgICAxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwKKyAgICAxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LDI5LDAsMCwwLDc4LDExNCwKKyAgICA4NywwLDAsMCw0MSwxLDExNCw4LDEsMCwwLDQxLDEsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwwLDAsCisgICAgMCwxMTQsMjUwLDAsMCwwLDE2NSw0LDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDIsMTIyLDI4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwKKyAgICAxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAorICAgIDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LAorICAgIDAsMTE0LDM3LDAsMTAwLDEsMCwxMDMsMCwwLDEwMiwyLDAsODMsMTI0LDIsCisgICAgMCwxMDYsMSwwLDEyNCwyLDAsMTA2LDIsMCwxMTIsNTUsMCwxMDMsMCwwLAorICAgIDEwMiwyLDAsODMsNDEsMiwxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsCisgICAgNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LAorICAgIDExMSwxMTAsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLAorICAgIDExNCwxODEsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLAorICAgIDMsMTE0LDEwOCwwLDAsMCwxMTQsMTI2LDAsMCwwLDExNCwxNjQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LAorICAgIDEyNCwwLDAsMCwxNzEsNCwwLDAsMTE1LDgsMCwwLDAsMCw3LDE1LAorICAgIDEsMTIsMSwxMCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDYsMCwKKyAgICAwLDAsMCwwLDAsMCw3LDAsMCwwLDcsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQwLDAsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMjQsMywwLAorICAgIDEzMSwyLDAsMTI1LDYsMCwxMTYsMCwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsCisgICAgMSwwLDEyNCw2LDAsMTAwLDIsMCwxMjQsNCwwLDEzMSwyLDIsODMsNDEsCisgICAgMyw3OCwxMTQsMTI3LDAsMCwwLDExNCwxNTYsMCwwLDAsNDEsMSwxMTQsMTY3LAorICAgIDAsMCwwLDQxLDcsMTE0LDEwOCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwKKyAgICAxMjYsMCwwLDAsMTE0LDM1LDAsMCwwLDkwLDQsMTE1LDEwOSwxMTUsMTA4LDExNCwKKyAgICAxODAsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNSwxLDAsMCwxODMsNCwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTgsMSwxMjIsMjAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLAorICAgIDEwMSw5OSw3OCw5OSwzLDAsMCwwLDAsMCwwLDAsMTQsMCwwLDAsCisgICAgMTUsMCwwLDAsNjcsMCwwLDAsMTE1LDIzNCwxLDAsMCwxMDAsMSwwLAorICAgIDEyNSwzLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsCisgICAgMywwLDI1LDEyNSw0LDAsMTIxLDM0LDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwKKyAgICAyLDAsMTEyLDQ5LDAsMTE2LDMsMCwxMDYsNCwwLDEzMSwwLDAsMTMxLDEsCisgICAgMCwxMDYsNSwwLDEyNSw1LDAsODcsMTEwLDI0LDAsNCwxMTYsNiwwLDEwNywKKyAgICAxMCwwLDExNCw4NSwwLDEsMSwxLDEwMCwxMCwwLDEyNSw1LDAsODksMTEwLAorICAgIDEsMCw4OCwxMjQsNSwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsMywwLDExNCwKKyAgICAxMjAsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCw1LDAsMTI0LAorICAgIDAsMCw5NSw3LDAsMTE2LDksMCwxMzEsMCwwLDExNCwxNTMsMCwxMjQsMCwKKyAgICAwLDEwNiwxMCwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsMTEsMCwxMzEsMCwwLAorICAgIDEyNSw3LDAsMTEwLDE1LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjUsNiwwLDEyNCwKKyAgICA0LDAsMTI1LDcsMCwxMjQsNywwLDEyNCw2LDAsMTA3LDYsMCwxMTQsNDUsCisgICAgMSwxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMzEsMiwwLAorICAgIDEyNSw4LDAsMTIwLDEwMCwwLDEyNCwwLDAsMTA2LDE0LDAsNjgsOTMsNzcsMCwKKyAgICA5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwxMDAsNSwwLDEyNCw5LDAsMjMsCisgICAgMTI1LDExLDAsMTE2LDEzLDAsMTI0LDgsMCwxMjQsMTEsMCwxMzEsMiwwLDEyNSwKKyAgICAxMiwwLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDIwOCwwLDEyNCwwLAorICAgIDAsMTA2LDE2LDAsMTI0LDEwLDAsMTI0LDEsMCwxMjQsMTIsMCwxMjQsOCwwLAorICAgIDEwMywxLDAsMTI0LDIsMCwxMzEsNSwwLDgzLDExMywyMDgsMCw4NywxMTYsMTcsCisgICAgMCwxMjQsOCwwLDEzMSwxLDAsMTI1LDMsMCwxMjAsMTIzLDAsMTI0LDAsMCwKKyAgICAxMDYsMTQsMCw2OCw5MywxMTIsMCw5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwKKyAgICAxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMjQsOSwwLDIzLAorICAgIDEzMSwyLDAsMTI1LDEyLDAsMTE2LDE4LDAsMTAwLDYsMCwxMDYsMTksMCwxMjQsCisgICAgMTIsMCwxMzEsMSwwLDEwMCw3LDAsMTAwLDMsMCwxMzEsMSwxLDEsMTI0LAorICAgIDcsMCwxMjQsOSwwLDIzLDEyNCw2LDAsMTA3LDYsMCwxMTQsNTUsMSwxMTYsCisgICAgMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCw1NSwxLDEyNCwwLDAsMTA2LDE2LAorICAgIDAsMTI0LDEwLDAsMTI0LDEsMCwxMjQsMTIsMCwxMDAsOCwwLDEyNCwyLDAsCisgICAgMTMxLDUsMCw4MywxMTMsNTUsMSw4NywxMjQsMywwLDExNCwyMzAsMSwxMTYsMTgsCisgICAgMCwxMDAsOSwwLDEwNiwxOSwwLDEyNCw4LDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEsMTE2LDIwLDAsMTA2LDIxLDAsMTI0LDEsMCwxMDAsOCwwLDEzMSwyLDAsCisgICAgMTI1LDEzLDAsMTI0LDgsMCwxMDMsMSwwLDEyNCwxMywwLDk1LDIyLDAsMTI0LAorICAgIDEzLDAsODMsMTAwLDgsMCw4Myw0MSwxMSwxMjIsMTI1LDg0LDExNCwxMjEsMzIsMTE2LAorICAgIDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDcwLDExNCw1OCwwLDAsMCwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxODUsMCwwLDAsMTIyLDksMTE2LAorICAgIDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLDEyNSwxMTQsOTgsMCwwLDAsNzgsMTIyLDI1LAorICAgIDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNCw4NywwLDAsMCw0MSwyMywKKyAgICAxMTQsMzIsMCwwLDAsMTE0LDM5LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDIxOSwwLDAsMCwxMTQsNDAsCisgICAgMCwwLDAsMTE0LDgsMSwwLDAsMjE4LDExLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDExNCw2LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwyOCwwLDAsMCwxMTQsNywKKyAgICAxLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDQ2LDAsCisgICAgMCwwLDExNCwxMDUsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwxMjEsMCwwLAorICAgIDAsMTE0LDE2MCwwLDAsMCwxMTQsMTU2LDAsMCwwLDQxLDE0LDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDEyNiwwLDAsMCwxMTQsMTgwLDAsMCwwLDkwLDEyLDEwNSwxMTUsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEzMywwLDAsMCw5MCw1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsOTAsMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5MCw5LDk4LDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyNSwwLDAsCisgICAgMCwxMTQsMTY1LDAsMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTEwLDk3LDEwOSwxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwxMTQsMTgxLDAsMCwwLDE4OCw0LDAsMCwxMTUsNjgsMCwKKyAgICAwLDAsMCwzLDYsMSwxOSwxLDMsMSwzNCwxLDEzLDEsMTEsMSwKKyAgICAxNSwxLDEwLDEsOSwyLDksMSw5LDEsMTUsMiw5LDEsNiwyLAorICAgIDEyLDEsMTgsMSwyMiwxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTIsMiwKKyAgICAyMiwxLDIyLDEsMjUsMSwxNiwxLDEyLDEsMjksMSw2LDEsMTksMSwKKyAgICAxOCwxLDEyLDEsNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTEsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLAorICAgIDMxLDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsCisgICAgMCwxMDYsMywwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywKKyAgICAwLDQsMTE2LDQsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsCisgICAgMCwxMTQsNzUsMCwxLDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsCisgICAgMCw4OCwxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLAorICAgIDAsMTE1LDExMiwwLDExNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLAorICAgIDk1LDExLDAsMTEwLDExMSwwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsCisgICAgOTAsMCwxMjQsMiwwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwKKyAgICAxMiwwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwKKyAgICAwLDEyNSw3LDAsMTI0LDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwKKyAgICAxMjQsNSwwLDEyNCw3LDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSwKKyAgICA4LDAsMTEwLDYsMCwxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsCisgICAgMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsCisgICAgMCwwLDk1LDExLDAsMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LAorICAgIDAsMTMxLDEsMCwxMTQsNywxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLAorICAgIDEyNCwyLDAsNjgsMTMxLDEsMCwxMjQsMCwwLDk1LDE3LDAsMTAwLDYsMCwKKyAgICA4Myw0MSw3LDEyMiw2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCw1OCwKKyAgICAwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsCisgICAgMjgsMCwwLDAsMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwKKyAgICAxMjQsMSwwLDEwNiwwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsCisgICAgMTE0LDQsMCwwLDAsNDEsMSwxMTQsODgsMCwwLDAsNDEsMiwxMTQsMjIsCisgICAgMCwwLDAsOTAsMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw1LDAsMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLAorICAgIDYyLDYsNSwwLDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsCisgICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsCisgICAgMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDMsMCwwLDAsOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ1LDAsCisgICAgMCwwLDExNCwwLDEsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwKKyAgICAxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LAorICAgIDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNywwLDAsCisgICAgMCwxMTQsOCwwLDAsMCwxMTQsOSwwLDAsMCwxMTQsOSwxLDAsMCwKKyAgICAxMTQsMTAsMSwwLDAsMTE0LDgzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDEsMCwwLDQxLDksMTE0LDEwOCwwLDAsMCwxMTQsMzUsMCwwLDAsOTAsCisgICAgOCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCwKKyAgICA5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsCisgICAgMTE0LDI0NSwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwyMzcsMCwwLDAsMTE0LAorICAgIDIyNSwwLDAsMCw5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLDExNCwxMywxLAorICAgIDAsMCwyMzMsNCwwLDAsMTE1LDM0LDAsMCwwLDAsMiw5LDEsMywKKyAgICAxLDMxLDEsMjIsMywxMSwzLDE4LDEsMTgsNyw5LDEsMTMsMSwyNCwKKyAgICAxLDYsMSwyNywyLDYsMSwxNywxLDksMSwxOCwxLDEyMiwyMiw3MCwKKyAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDMsMCwwLDAsNywwLDAsMCwxMTUsMjUsMCwwLDAsMTM1LAorICAgIDAsMCwxMzUsMSwwLDEwMiwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAorICAgIDAsMTI1LDIsMCwxMjQsMiwwLDgzLDQxLDMsOTcsMjAsMSwwLDAsNjUsCisgICAgMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwKKyAgICAxMDUsOTksMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiw5OSwxMDgsCisgICAgMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExMSwxMTAsMzIsCisgICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTA1LDEwOCwxMDgsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMTAsOTksMTAxLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKKyAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLAorICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDQsMCwwLDAsMTksMCwwLDAsMTE1LDQzLDAsMCwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMzEsMSwwLDExNSwzMCwwLDExNiwxLDAsMTAwLDEsMCwxMDAsCisgICAgMiwwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsCisgICAgMCwxMzYsMSwwLDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwKKyAgICAzMiwxMDQsMTExLDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLAorICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLAorICAgIDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNSwwLDAsMCw0MSwyLAorICAgIDExNCw0NiwwLDAsMCwxMTQsMTA3LDAsMCwwLDQxLDEsMTE0LDM1LDAsMCwKKyAgICAwLDQxLDIsMTE0LDE3MCwwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDUsMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDE4LDUsMCwwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsCisgICAgMTIyLDU0LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwKKyAgICAxNzAsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwxOCwxLDAsMCwxMTQsNCwKKyAgICAwLDAsMCw0MSwyLDExNCwxNzAsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwKKyAgICA1LDAsMCwwLDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw4LAorICAgIDUsMCwwLDExNSw0LDAsMCwwLDAsMTAsMjEsNiwxMjIsMjAsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsCisgICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLAorICAgIDE2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsCisgICAgNDEsNDEsMiwxMTQsNDcsMCwwLDAsMTE0LDM1LDAsMCwwLDQxLDEsMTE0LAorICAgIDEwOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCwxMTQsMjQ0LDAsMCwwLDI2LDUsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNDEsMTUsMTE0LDExMiwwLDAsMCwxMTQsCisgICAgMTExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsMTg1LAorICAgIDAsMCwwLDExNCwyNTAsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTgyLDAsCisgICAgMCwwLDExNCwxMjQsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDE4MSwwLDAsCisgICAgMCwxMTQsMTMsMSwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTksMSwwLDAsCisgICAgMTE0LDI0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNiwxLDAsMCwxNDIsNCwKKyAgICAwLDAsMTE1LDIwLDAsMCwwLDEyLDcsNiwyLDEyLDE0LDEyLDQsNiwKKyAgICAyLDEyLDEyLDEyLDUsMTUsNDUsMTIsMzEsMTgsMTgsMTE0LDYsMSwwLDAsCisgICAgOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE5NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsCisgICAgMTAwLDEsMCwxMzEsMSwwLDEyNSw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKKyAgICAyLDAsMTMxLDEsMCwxMjUsNSwwLDEyNCw0LDAsMTE1LDk5LDAsMTI0LDUsCisgICAgMCwxMTQsNTQsMCwxMjQsNSwwLDEwNiwxLDAsMTI1LDQsMCwxMTAsNDUsMCwKKyAgICAxMjQsMiwwLDEyNCwzLDAsMTA3LDIsMCwxMTQsODQsMCwxMTYsMiwwLDEyNCwKKyAgICAxLDAsMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTEwLDE1LDAsMTE2LDMsCisgICAgMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw1LDAsCisgICAgMTE1LDEyNiwwLDExNiw0LDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwzLDAsMTI0LAorICAgIDQsMCwxMzEsMiwxLDEyNSw1LDAsMTIxLDQ0LDAsMTI0LDUsMCwxMjQsMCwKKyAgICAwLDEwMCwyLDAsNjAsMTI0LDQsMCwxMjQsMCwwLDEwMCwxLDAsNjAsMTI0LAorICAgIDIsMCwxMjQsMCwwLDEwMCw0LDAsNjAsMTI0LDMsMCwxMjQsMCwwLDEwMCwKKyAgICA1LDAsNjAsODcsMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxOTAsCisgICAgMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsNiw3OCwKKyAgICAyMTgsMTAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsOCw5NSw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSw5NSwxMTQsMTI3LDAsMCwwLDkwLDgsOTUsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk1LDk1LDkwLDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LAorICAgIDk1LDQxLDYsMjE4LDMsMTAzLDEwMSwxMTYsMTE0LDEyNywwLDAsMCwxMTQsMjIzLDAsCisgICAgMCwwLDExNCwyMTgsMCwwLDAsMTE0LDE2NywwLDAsMCwyMTgsOSw2OSwxMjAsCisgICAgOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwNiwwLAorICAgIDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLAorICAgIDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsMTE0LDEyNywwLDAsMCwxMTQsMTY0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw1LDAsMCwwLAorICAgIDIxOCwxNCw5NSwxMDIsMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDUsMCwwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxNSwxLDYsCisgICAgMSw2LDEsMTIsMSwxMiwxLDE4LDIsMTUsMSw2LDEsMjEsMSwzLAorICAgIDEsMTAsMSwxMCwxLDEwLDEsMTQsMSwxMywyLDExNCwyNCwxLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsCisgICAgMTA2LDIsMCwxMzEsMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiwKKyAgICA0LDAsMTAyLDIsMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwKKyAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCwKKyAgICA4Myw0MSwxLDEyMiw5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsCisgICAgMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwKKyAgICAzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLAorICAgIDMyLDMyLDMyLDMyLDQxLDcsMTE0LDIyNCwwLDAsMCwxMTQsMTQ1LDAsMCwwLAorICAgIDIxOCwxOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsCisgICAgMTA1LDEyMCwxMDEsMTE1LDExNCwyMTgsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwyMjMsCisgICAgMCwwLDAsMTE0LDc0LDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw1LDAsMCwwLDExNCwxNjEsMCwwLDAsNTUsNSwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCw1LDE4LDEsMTIsMSwxMiwxLDExNCwxNjEsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3MCwyLDAsMCwxMjQsMCwwLDk3LAorICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsOTcsMSwwLDExNiwwLDAsMTA2LDIsCisgICAgMCw5NywyLDAsMTE2LDEsMCwxMDYsMywwLDExNiw0LDAsMjUsMTI1LDEsCisgICAgMCwxMjAsNzYsMCwxMDAsMjYsMCw2OCw5Myw2OCwwLDEyNSwyLDAsMTI0LDIsCisgICAgMCwxMTYsMSwwLDEwNiwzLDAsMTA3LDcsMCwxMTQsODMsMCwxMTYsMCwwLAorICAgIDEwNiw1LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTEwLDEzLDAsMTE2LAorICAgIDEsMCwxMDYsMywwLDEyNCwyLDAsMjUsMTI1LDMsMCwxMTYsNiwwLDEyNCwKKyAgICAxLDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMSwxMTMsNDQsMCw4NywKKyAgICAxMDAsNSwwLDEwMCw2LDAsMTAzLDEsMCwxMDIsMiwwLDEwMCw3LDAsMTAwLAorICAgIDgsMCwxMDAsNiwwLDEwMywyLDAsMTAyLDIsMCwxMDIsMiwwLDEyNSw0LAorICAgIDAsMTIwLDE0OSwwLDEyNCw0LDAsNjgsOTMsMTI5LDAsOTIsMiwwLDEyNSw1LAorICAgIDAsMTI1LDYsMCwxMTYsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwKKyAgICAxMjQsNiwwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTUsMTk5LDAsMTE2LDgsMCwKKyAgICAxMzAsMSwwLDEyNCw2LDAsMTAwLDExLDAsMjUsMTI1LDcsMCwxMjQsNSwwLAorICAgIDExNiwxLDAsMTA2LDMsMCwxMDcsNiwwLDExNCwyNDEsMCwxMTYsMSwwLDEwNiwKKyAgICAzLDAsMTI0LDUsMCwyNSwxMjUsOCwwLDgwLDExMywxNTYsMCwxMjEsMjAsMCwKKyAgICAxMTYsMCwwLDEwNiw1LDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw4LDAsODAsCisgICAgODcsMTEzLDE1NiwwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMjgsMSwxLDEsCisgICAgMSwxMTksMTU2LDAsODksMTEzLDE1NiwwLDg4LDExMywxNTYsMCw4NywxMTYsOSwwLAorICAgIDEwMCwxMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLAorICAgIDEzLDAsMTI0LDgsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwKKyAgICAxNCwwLDEyNCw3LDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsCisgICAgMTUsMCwxMDAsMTYsMCwxMDYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTMxLDMsCisgICAgMCwxLDEyMSwxOSwwLDExNiwwLDAsMTA2LDUsMCwxMDAsMTcsMCwxMzEsMSwKKyAgICAwLDEyNSw5LDAsODcsMTEwLDI0LDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwKKyAgICAxNDcsMSwxLDEsMSwxMDAsMTgsMCwxMjUsOSwwLDg5LDExMCwxLDAsODgsCisgICAgMTE2LDYsMCwxMjQsMSwwLDEwMCwxNywwLDEyNCw5LDAsMTMxLDMsMCwxLAorICAgIDExNiwwLDAsMTA2LDUsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxMCwwLDExNiwKKyAgICA2LDAsMTI0LDEsMCwxMDAsMTksMCwxMjQsMTAsMCwxMzEsMywwLDEsMTI0LAorICAgIDUsMCwxMDAsNywwLDEwNywyLDAsMTE0LDIzOCwxLDExNiwwLDAsMTA2LDUsCisgICAgMCwxMDAsMjAsMCwxMzEsMSwwLDEyNSwxMSwwLDExNiw2LDAsMTI0LDEsMCwKKyAgICAxMDAsMjEsMCwxMjQsMTEsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLAorICAgIDEwMCwyMiwwLDExNiwxMSwwLDEzMSwwLDAsMTMxLDMsMCwxLDExNiwxMiwwLAorICAgIDEwNiwxMywwLDExNiwyLDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMSwwLDEsCisgICAgMTI0LDUsMCwxMDAsNywwLDEwNywyLDAsMTE0LDY2LDIsMTE2LDE1LDAsMTA2LAorICAgIDE2LDAsMTAwLDIzLDAsMTMxLDEsMCwxLDEwMCwyNCwwLDExNiwxMiwwLDEwNywKKyAgICA2LDAsMTE0LDY2LDIsMTAwLDI1LDAsMTE2LDE3LDAsOTUsMTgsMCwxMDAsMTgsCisgICAgMCw4Myw0MSwyNywxMjIsMjA1LDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwzMiwxMDUsCisgICAgMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LAorICAgIDExNiwxMDQsMTAxLDExNCwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSwzMiwKKyAgICA5NywxMTQsMTAxLDMyLDEwMSwxMjAsMTE2LDExNCw5Nyw5OSwxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDExNCwxMDEsMzIsOTgsMTExLDExMSwxMTYsCisgICAgMTE1LDExNiwxMTQsOTcsMTEyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDExNCw0OSwwLDAsMCwxMTQsNjAsMCwwLDAsMjE4LDgsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDExNCwxNDIsMCwwLDAsOTAsNSwxMTIsMTExLAorICAgIDExNSwxMDUsMTIwLDI1MCwxLDQ3LDIxOCwyLDExMCwxMTYsMjUwLDEsOTIsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwKKyAgICAwLDAsMTE1LDMzLDAsMCwwLDEyNCwwLDAsOTMsMjMsMCwxMjUsMSwwLAorICAgIDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwwLDAsMTA3LDIsMCw4NiwKKyAgICAxLDExMywzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCwyOSwwLDAsMCw3OCwKKyAgICA0MSwxLDExNCwzMSwwLDAsMCw0MSwyLDExNCwyMiwwLDAsMCwxMTQsNzcsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDUsMCwKKyAgICAwLDAsMTE0LDIyNywwLDAsMCw5MSw1LDAsMCwxMTUsMiwwLDAsMCwKKyAgICA2LDAsMTIyLDI1LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNTksMCwKKyAgICAwLDAsMTIyLDMwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsCisgICAgMTEwLDExNiwxMTQsMywwLDAsMCwxMTQsMjUsMCwwLDAsMTE0LDIxLDAsMCwKKyAgICAwLDExNCwzMCwwLDAsMCw5MCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNzgsCisgICAgOTAsOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCw2LDExOSwxMDUsMTEwLDExNCwKKyAgICAxMDEsMTAzLDExNCwxNjksMCwwLDAsMTE0LDYsMCwwLDAsMTIyLDQsNDYsMTEyLAorICAgIDEyMSwxMTksMTIyLDYsOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDg0LDQxLDQsMTIyLDMsOTUsCisgICAgMTA1LDExMSwxMjIsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTIyLDgsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsMTE1LDEyMiw3LDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsCisgICAgNDEsMTksMTE0LDEyMSwwLDAsMCwxMTQsNywwLDAsMCwxMTQsMTQ1LDAsMCwKKyAgICAwLDExNCwyMzksMCwwLDAsMTE0LDExMiwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDExNiwwLDAsMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsCisgICAgMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTA3LDAsMCwwLDExNCwyNiwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIyOSwwLDAsMCwxMTQsMTQ5LDAsCisgICAgMCwwLDExNCwyNSwxLDAsMCwxMTQsODQsMCwwLDAsMTE0LDE2MywwLDAsCisgICAgMCwxMTQsMTY4LDAsMCwwLDExNCwxNzMsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5MCwxMSwxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwKKyAgICAxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKKyAgICA5NSwxMTEsMTE1LDExNCwyMSwwLDAsMCwxMTQsMjUsMCwwLDAsOTAsOSwxMTEsCisgICAgMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDUsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2Niw1LDAsCisgICAgMCwxMTUsODIsMCwwLDAsMCw4LDYsMSw5LDEsOSwzLDEzLDEsCisgICAgMTMsMSwxNSwxLDE4LDIsMTMsMSwyMCwzLDMzLDEsMTksMiwzMSwxLAorICAgIDEwLDEsMTUsMSwxMywxLDQsMiwzLDEsMTUsMSw1LDEsMTMsMSwKKyAgICAxMiwyLDEyLDEsMTYsMSwxNiwxLDI1LDMsMywxLDE5LDEsMTMsMiwKKyAgICAxMSwxLDE2LDMsMTUsMSwxNiwzLDEyLDEsMTUsMSwxNiwzLDE5LDEsCisgICAgMTksMSwxMiwxLDEzLDEsMTIsMSwxMTQsMzMsMSwwLDAsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLAorICAgIDEsMTE2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLAorICAgIDEwNiw0LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTQwLDAsMCwxMDMsCisgICAgMSwwLDEzMSwxLDAsMSwxMTYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMDcsCisgICAgMiwwLDExNCw3OCwwLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTEsCisgICAgMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMiwKKyAgICAwLDEzMSwxLDAsMSwxMTYsNSwwLDEyNCwwLDAsOTUsNSwwLDExNiwxMywKKyAgICAwLDEyNCwwLDAsOTUsMTMsMCwxMDAsMiwwLDgzLDQxLDMsMTIyLDQxLDczLAorICAgIDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsCisgICAgOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwKKyAgICAxMTIsMTExLDExMCwxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI4LDEsMCwwLDc4LDQxLDE0LAorICAgIDExNCwzMywxLDAsMCwxMTQsMTYxLDAsMCwwLDExNCw3LDAsMCwwLDExNCwKKyAgICAyNTQsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTksCisgICAgMSwwLDAsMTE0LDMsMCwwLDAsMTE0LDExMiwwLDAsMCwyMTgsOSwxMDksCisgICAgMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYzLDAsMCwwLDExNCwxNjgsMCwKKyAgICAwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjE4LDAsMCwwLDQxLDIsMTE0LDMyLAorICAgIDEsMCwwLDkwLDE3LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw1LDAsMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEzNCwKKyAgICA1LDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEwLDEsOSwxLDI4LDEsCisgICAgMTUsMSwxNiwxLDE2LDQsOSwxLDExNCwzNSwxLDAsMCw0MSwzLDEyMiwKKyAgICAzLDExOSwxMDUsMTEwLDExNCwxLDAsMCwwLDExNCwyLDAsMCwwLDQxLDU3LAorICAgIDExNCwxMTQsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgMTcsMCwwLDAsMTE0LDE5LDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMzgsCisgICAgMCwwLDAsMTE0LDM5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsNDQsMCwKKyAgICAwLDAsMTE0LDQ2LDAsMCwwLDExNCw1NSwwLDAsMCwyMTgsNCwxMTYsMTIxLAorICAgIDExMiwxMDEsMjE4LDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0NCwwLDAsCisgICAgMCwxMTQsMTUsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMTQsMCwwLDAsCisgICAgMTE0LDE4LDAsMCwwLDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLAorICAgIDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNCw3MywwLDAsMCwxMTQsNzIsMCwKKyAgICAwLDAsMTE0LDg0LDAsMCwwLDExNCw3NCwwLDAsMCw5MCwyMyw2OCw2OSwKKyAgICA2Niw4NSw3MSw5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCwKKyAgICA3MCw3Myw4OCw2OSw4Myw5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTQsNzksMCwwLDAsMTE0LDg1LDAsMCwwLDExNCw5MSwwLDAsCisgICAgMCwxMTQsOTUsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMDUsMCwwLDAsCisgICAgMTE0LDEyMywwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LAorICAgIDE0NywwLDAsMCwxMTQsMTUwLDAsMCwwLDExNCwxNTUsMCwwLDAsMjE4LDYsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwxNjIsMCwwLDAsMTE0LDE2NywwLDAsMCwKKyAgICAxMTQsMTY4LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCisgICAgMjEwLDAsMCwwLDExNCwyMTgsMCwwLDAsMTE0LDIyMywwLDAsMCwxMTQsMjI5LAorICAgIDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjQ3LDAsCisgICAgMCwwLDExNCwyNDksMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDI0LDEsMCwKKyAgICAwLDExNCwxNjEsMCwwLDAsMTE0LDMzLDEsMCwwLDExNCwzNSwxLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNSwwLDAsMCwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsCisgICAgMCwwLDExNSwxMDAsMCwwLDAsNiwxNyw2LDMsMTIsMTIsMTIsNSwxMiwKKyAgICA1LDEyLDYsMTIsMTIsMTIsMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsMTUsCisgICAgMTEwLDIyLDEsMTgsMiw2LDEsNiwyLDksMiw5LDIsMTAsMiwyMSwKKyAgICA0NCwxMiwzMywxMiwxOSwxMiwxMiwxMiwxMiwxOCw4LDEyLDI4LDEyLDE3LDIxLAorICAgIDU1LDIxLDEyLDE4LDEwLDEyLDE0LDksMywxMiwxLDE1LDY1LDE5LDY0LDE5LAorICAgIDI4LDIyLDExMCwxOSw0MSwyNSw0MywyNSwxNiw2LDMsMjUsNTMsMTksNTcsMTksCisgICAgNDEsMTksMTM0LDE5LDE0NiwxNSwyMywxMiwxMSwxMiw2OCwKK307CmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCA2ZjBlZTVlLi5mODljZDA0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTEyLDggKzEyLDcgQEAKICNpbmNsdWRlICJsb25naW50cmVwci5oIgogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJtYXJzaGFsLmgiCi0KLSNkZWZpbmUgQUJTKHgpICgoeCkgPCAwID8gLSh4KSA6ICh4KSkKKyNpbmNsdWRlICIuLi9Nb2R1bGVzL2hhc2h0YWJsZS5oIgogCiAvKiBIaWdoIHdhdGVyIG1hcmsgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlIG1hcnNoYWxsZWQgb2JqZWN0IGlzIGRhbmdlcm91c2x5IGRlZXAKICAqIGFuZCByaXNrcyBjb3JpbmcgdGhlIGludGVycHJldGVyLiAgV2hlbiB0aGUgb2JqZWN0IHN0YWNrIGdldHMgdGhpcyBkZWVwLApAQCAtMjEsNyArMjAsNyBAQAogICogT24gV2luZG93cyBkZWJ1ZyBidWlsZHMsIHJlZHVjZSB0aGlzIHZhbHVlLgogICovCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKF9ERUJVRykKLSNkZWZpbmUgTUFYX01BUlNIQUxfU1RBQ0tfREVQVEggMTUwMAorI2RlZmluZSBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCAxMDAwCiAjZWxzZQogI2RlZmluZSBNQVhfTUFSU0hBTF9TVEFDS19ERVBUSCAyMDAwCiAjZW5kaWYKQEAgLTY2LDU0ICs2NSw4MyBAQAogICAgIEZJTEUgKmZwOwogICAgIGludCBlcnJvcjsgIC8qIHNlZSBXRkVSUl8qIHZhbHVlcyAqLwogICAgIGludCBkZXB0aDsKLSAgICAvKiBJZiBmcCA9PSBOVUxMLCB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDogKi8KLSAgICBQeU9iamVjdCAqcmVhZGFibGU7ICAgIC8qIFN0cmVhbS1saWtlIG9iamVjdCBiZWluZyByZWFkIGZyb20gKi8KICAgICBQeU9iamVjdCAqc3RyOwotICAgIFB5T2JqZWN0ICpjdXJyZW50X2ZpbGVuYW1lOwogICAgIGNoYXIgKnB0cjsKICAgICBjaGFyICplbmQ7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgYnVmX3NpemU7Ci0gICAgUHlPYmplY3QgKnJlZnM7IC8qIGRpY3Qgb24gbWFyc2hhbCwgbGlzdCBvbiB1bm1hcnNoYWwgKi8KKyAgICBfUHlfaGFzaHRhYmxlX3QgKmhhc2h0YWJsZTsKICAgICBpbnQgdmVyc2lvbjsKIH0gV0ZJTEU7CiAKLSNkZWZpbmUgd19ieXRlKGMsIHApIGlmICgoKHApLT5mcCkpIHB1dGMoKGMpLCAocCktPmZwKTsgXAotICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChwKS0+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+IFBZX1NTSVpFX1RfTUFYKSB7CmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IGY5MGExN2EuLjE5MjU5ZTEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC0xNSw4ICsxNSw4IEBACiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfVU5BUllfSU5WRVJULAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0JJTkFSWV9NQVRSSVhfTVVMVElQTFksCisgICAgJiZUQVJHRVRfSU5QTEFDRV9NQVRSSVhfTVVMVElQTFksCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQklOQVJZX1BPV0VSLAogICAgICYmVEFSR0VUX0JJTkFSWV9NVUxUSVBMWSwKQEAgLTQ5LDExICs0OSwxMSBAQAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0dFVF9BSVRFUiwKKyAgICAmJlRBUkdFVF9HRVRfQU5FWFQsCisgICAgJiZUQVJHRVRfQkVGT1JFX0FTWU5DX1dJVEgsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfU1RPUkVfTUFQLAogICAgICYmVEFSR0VUX0lOUExBQ0VfQURELAogICAgICYmVEFSR0VUX0lOUExBQ0VfU1VCVFJBQ1QsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9NVUxUSVBMWSwKQEAgLTY4LDExICs2OCwxMSBAQAogICAgICYmVEFSR0VUX0JJTkFSWV9PUiwKICAgICAmJlRBUkdFVF9JTlBMQUNFX1BPV0VSLAogICAgICYmVEFSR0VUX0dFVF9JVEVSLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0dFVF9ZSUVMRF9GUk9NX0lURVIsCiAgICAgJiZUQVJHRVRfUFJJTlRfRVhQUiwKICAgICAmJlRBUkdFVF9MT0FEX0JVSUxEX0NMQVNTLAogICAgICYmVEFSR0VUX1lJRUxEX0ZST00sCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfR0VUX0FXQUlUQUJMRSwKICAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9JTlBMQUNFX0xTSElGVCwKICAgICAmJlRBUkdFVF9JTlBMQUNFX1JTSElGVCwKQEAgLTgwLDggKzgwLDggQEAKICAgICAmJlRBUkdFVF9JTlBMQUNFX1hPUiwKICAgICAmJlRBUkdFVF9JTlBMQUNFX09SLAogICAgICYmVEFSR0VUX0JSRUFLX0xPT1AsCi0gICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX1dJVEhfQ0xFQU5VUF9TVEFSVCwKKyAgICAmJlRBUkdFVF9XSVRIX0NMRUFOVVBfRklOSVNILAogICAgICYmVEFSR0VUX1JFVFVSTl9WQUxVRSwKICAgICAmJlRBUkdFVF9JTVBPUlRfU1RBUiwKICAgICAmJl91bmtub3duX29wY29kZSwKQEAgLTE0OCwxMiArMTQ4LDEyIEBACiAgICAgJiZUQVJHRVRfU0VUX0FERCwKICAgICAmJlRBUkdFVF9NQVBfQURELAogICAgICYmVEFSR0VUX0xPQURfQ0xBU1NERVJFRiwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9CVUlMRF9MSVNUX1VOUEFDSywKKyAgICAmJlRBUkdFVF9CVUlMRF9NQVBfVU5QQUNLLAorICAgICYmVEFSR0VUX0JVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLAorICAgICYmVEFSR0VUX0JVSUxEX1RVUExFX1VOUEFDSywKKyAgICAmJlRBUkdFVF9CVUlMRF9TRVRfVU5QQUNLLAorICAgICYmVEFSR0VUX1NFVFVQX0FTWU5DX1dJVEgsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IGM1NmM4ZmMuLjU5YWQzYjcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC0xOCw3ICsxOCwxMSBAQAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgSlVNUFNfT05fVFJVRShvcCkgKG9wPT1QT1BfSlVNUF9JRl9UUlVFIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQogI2RlZmluZSBHRVRKVU1QVEdUKGFyciwgaSkgKEdFVEFSRyhhcnIsaSkgKyAoQUJTT0xVVEVfSlVNUChhcnJbaV0pID8gMCA6IGkrMykpCi0jZGVmaW5lIFNFVEFSRyhhcnIsIGksIHZhbCkgYXJyW2krMl0gPSB2YWw+Pjg7IGFycltpKzFdID0gdmFsICYgMjU1CisjZGVmaW5lIFNFVEFSRyhhcnIsIGksIHZhbCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXNzZXJ0KDAgPD0gdmFsICYmIHZhbCA8PSAweGZmZmYpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYXJyW2krMl0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKT4+OCk7ICAgICBcCisgICAgYXJyW2krMV0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKSAmIDI1NSk7ICBcCit9IHdoaWxlKDApCiAjZGVmaW5lIENPREVTSVpFKG9wKSAgKEhBU19BUkcob3ApID8gMyA6IDEpCiAjZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAogICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCkBAIC0zMTUsNiArMzE5LDcgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgorICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGUsIGkpOwogICAgICAgICAgICAgICAgIGJsb2Nrc1tqXSA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNTUsNyArMzYwLDggQEAKICAgICB1bnNpZ25lZCBjaGFyICpjb2Rlc3RyID0gTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87CiAgICAgaW50ICphZGRybWFwID0gTlVMTDsKLSAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZSwgdGFic2l6OworICAgIGludCBuZXdfbGluZSwgY3VtX29yaWdfbGluZSwgbGFzdF9saW5lOworICAgIFB5X3NzaXplX3QgdGFic2l6OwogICAgIFB5T2JqZWN0ICoqY29uc3Rfc3RhY2sgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgKmxvYWRfY29uc3Rfc3RhY2sgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfdG9wID0gLTE7CkBAIC02MTUsNiArNjIxLDcgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRVhDRVBUOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgorICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CiAgICAgICAgICAgICAgICAgLyogUmVwbGFjZSBKVU1QXyogdG8gYSBSRVRVUk4gaW50byBqdXN0IGEgUkVUVVJOICovCiAgICAgICAgICAgICAgICAgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChvcGNvZGUpICYmCkBAIC02NjAsNyArNjY3LDggQEAKIAogICAgIC8qIEZpeHVwIGxpbmVub3RhYiAqLwogICAgIGZvciAoaT0wLCBub3BzPTAgOyBpPGNvZGVsZW4gOyBpICs9IENPREVTSVpFKGNvZGVzdHJbaV0pKSB7Ci0gICAgICAgIGFkZHJtYXBbaV0gPSBpIC0gbm9wczsKKyAgICAgICAgYXNzZXJ0KGkgLSBub3BzIDw9IElOVF9NQVgpOworICAgICAgICBhZGRybWFwW2ldID0gKGludCkoaSAtIG5vcHMpOwogICAgICAgICBpZiAoY29kZXN0cltpXSA9PSBOT1ApCiAgICAgICAgICAgICBub3BzKys7CiAgICAgfQpAQCAtNjk4LDYgKzcwNiw3IEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0VYQ0VQVDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKKyAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKICAgICAgICAgICAgICAgICBqID0gYWRkcm1hcFtHRVRBUkcoY29kZXN0ciwgaSkgKyBpICsgM10gLSBhZGRybWFwW2ldIC0gMzsKICAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9QeXRob24vcHlmcGUuYyBiL1B5dGhvbi9weWZwZS5jCmluZGV4IDRiN2Y1YmEuLmFiMGVmODMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWZwZS5jCisrKyBiL1B5dGhvbi9weWZwZS5jCkBAIC0xLDYgKzEsNiBAQAogI2luY2x1ZGUgInB5Y29uZmlnLmgiCiAjaW5jbHVkZSAicHlmcGUuaCIKLS8qIAorLyoKICAqIFRoZSBzaWduYWwgaGFuZGxlciBmb3IgU0lHRlBFIGlzIGFjdHVhbGx5IGRlY2xhcmVkIGluIGFuIGV4dGVybmFsCiAgKiBtb2R1bGUgZnBlY3RsLCBvciBhcyBwcmVmZXJyZWQgYnkgdGhlIHVzZXIuICBUaGVzZSB2YXJpYWJsZQogICogZGVmaW5pdGlvbnMgYXJlIHJlcXVpcmVkIGluIG9yZGVyIHRvIGNvbXBpbGUgUHl0aG9uIHdpdGhvdXQKQEAgLTEzLDcgKzEzLDcgQEAKIGludCBQeUZQRV9jb3VudGVyID0gMDsKICNlbmRpZgogCi0vKiBIYXZlIHRoaXMgb3V0c2lkZSB0aGUgYWJvdmUgI2lmZGVmLCBzaW5jZSBzb21lIHBpY2t5IEFOU0kgY29tcGlsZXJzIGlzc3VlIGEgCisvKiBIYXZlIHRoaXMgb3V0c2lkZSB0aGUgYWJvdmUgI2lmZGVmLCBzaW5jZSBzb21lIHBpY2t5IEFOU0kgY29tcGlsZXJzIGlzc3VlIGEKICAgIHdhcm5pbmcgd2hlbiBjb21waWxpbmcgYW4gZW1wdHkgZmlsZS4gKi8KIAogZG91YmxlCmRpZmYgLS1naXQgYS9QeXRob24vcHlsaWZlY3ljbGUuYyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNWVmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vcHlsaWZlY3ljbGUuYwpAQCAtMCwwICsxLDE1ODIgQEAKKy8qIFB5dGhvbiBpbnRlcnByZXRlciB0b3AtbGV2ZWwgcm91dGluZXMsIGluY2x1ZGluZyBpbml0L2V4aXQgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaW5jbHVkZSAiUHl0aG9uLWFzdC5oIgorI3VuZGVmIFlpZWxkIC8qIHVuZGVmaW5lIG1hY3JvIGNvbmZsaWN0aW5nIHdpdGggd2luYmFzZS5oICovCisjaW5jbHVkZSAiZ3JhbW1hci5oIgorI2luY2x1ZGUgIm5vZGUuaCIKKyNpbmNsdWRlICJ0b2tlbi5oIgorI2luY2x1ZGUgInBhcnNldG9rLmgiCisjaW5jbHVkZSAiZXJyY29kZS5oIgorI2luY2x1ZGUgImNvZGUuaCIKKyNpbmNsdWRlICJzeW10YWJsZS5oIgorI2luY2x1ZGUgImFzdC5oIgorI2luY2x1ZGUgIm1hcnNoYWwuaCIKKyNpbmNsdWRlICJvc2RlZnMuaCIKKyNpbmNsdWRlIDxsb2NhbGUuaD4KKworI2lmZGVmIEhBVkVfU0lHTkFMX0gKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgIm1hbGxvYy5oIiAvKiBmb3IgYWxsb2NhICovCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTEFOR0lORk9fSAorI2luY2x1ZGUgPGxhbmdpbmZvLmg+CisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKyN1bmRlZiBCWVRFCisjaW5jbHVkZSAid2luZG93cy5oIgorI2VuZGlmCisKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIoc3RkaW4pOworX1B5X0lERU5USUZJRVIoc3Rkb3V0KTsKK19QeV9JREVOVElGSUVSKHN0ZGVycik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZXh0ZXJuIHdjaGFyX3QgKlB5X0dldFBhdGgodm9pZCk7CisKK2V4dGVybiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyOyAvKiBGcm9tIGdyYW1pbml0LmMgKi8KKworLyogRm9yd2FyZCAqLworc3RhdGljIHZvaWQgaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOworc3RhdGljIGludCBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7CitzdGF0aWMgdm9pZCBpbml0c2l0ZSh2b2lkKTsKK3N0YXRpYyBpbnQgaW5pdHN0ZGlvKHZvaWQpOworc3RhdGljIHZvaWQgaW5pdHNpZ3Modm9pZCk7CitzdGF0aWMgdm9pZCBjYWxsX3B5X2V4aXRmdW5jcyh2b2lkKTsKK3N0YXRpYyB2b2lkIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKTsKK3N0YXRpYyB2b2lkIGNhbGxfbGxfZXhpdGZ1bmNzKHZvaWQpOworZXh0ZXJuIGludCBfUHlVbmljb2RlX0luaXQodm9pZCk7CitleHRlcm4gaW50IF9QeVN0cnVjdFNlcXVlbmNlX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBfUHlVbmljb2RlX0Zpbmkodm9pZCk7CitleHRlcm4gaW50IF9QeUxvbmdfSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIFB5TG9uZ19GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlGYXVsdGhhbmRsZXJfSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIF9QeUZhdWx0aGFuZGxlcl9GaW5pKHZvaWQpOworZXh0ZXJuIHZvaWQgX1B5SGFzaF9GaW5pKHZvaWQpOworZXh0ZXJuIGludCBfUHlUcmFjZU1hbGxvY19Jbml0KHZvaWQpOworZXh0ZXJuIGludCBfUHlUcmFjZU1hbGxvY19GaW5pKHZvaWQpOworCisjaWZkZWYgV0lUSF9USFJFQUQKK2V4dGVybiB2b2lkIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICosIFB5VGhyZWFkU3RhdGUgKik7CitleHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9GaW5pKHZvaWQpOworI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCisKKy8qIEdsb2JhbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBhcmUgaW4gcHlkZWJ1Zy5oICovCisvKiBYWFggKG5jb2dobGFuKTogbW92ZSB0aG9zZSBkZWNsYXJhdGlvbnMgdG8gcHlsaWZlY3ljbGUuaD8gKi8KK2ludCBQeV9EZWJ1Z0ZsYWc7IC8qIE5lZWRlZCBieSBwYXJzZXIuYyAqLworaW50IFB5X1ZlcmJvc2VGbGFnOyAvKiBOZWVkZWQgYnkgaW1wb3J0LmMgKi8KK2ludCBQeV9RdWlldEZsYWc7IC8qIE5lZWRlZCBieSBzeXNtb2R1bGUuYyAqLworaW50IFB5X0ludGVyYWN0aXZlRmxhZzsgLyogTmVlZGVkIGJ5IFB5X0ZkSXNJbnRlcmFjdGl2ZSgpIGJlbG93ICovCitpbnQgUHlfSW5zcGVjdEZsYWc7IC8qIE5lZWRlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBleGl0IGF0IFN5c3RlbUV4aXQgKi8KK2ludCBQeV9PcHRpbWl6ZUZsYWcgPSAwOyAvKiBOZWVkZWQgYnkgY29tcGlsZS5jICovCitpbnQgUHlfTm9TaXRlRmxhZzsgLyogU3VwcHJlc3MgJ2ltcG9ydCBzaXRlJyAqLworaW50IFB5X0J5dGVzV2FybmluZ0ZsYWc7IC8qIFdhcm4gb24gc3RyKGJ5dGVzKSBhbmQgc3RyKGJ1ZmZlcikgKi8KK2ludCBQeV9Vc2VDbGFzc0V4Y2VwdGlvbnNGbGFnID0gMTsgLyogTmVlZGVkIGJ5IGJsdGlubW9kdWxlLmM6IGRlcHJlY2F0ZWQgKi8KK2ludCBQeV9Gcm96ZW5GbGFnOyAvKiBOZWVkZWQgYnkgZ2V0cGF0aC5jICovCitpbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOyAvKiBlLmcuIFBZVEhPTlBBVEgsIFBZVEhPTkhPTUUgKi8KK2ludCBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWc7IC8qIFN1cHByZXNzIHdyaXRpbmcgYnl0ZWNvZGUgZmlsZXMgKCoucHlbY29dKSAqLworaW50IFB5X05vVXNlclNpdGVEaXJlY3RvcnkgPSAwOyAvKiBmb3IgLXMgYW5kIHNpdGUucHkgKi8KK2ludCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnID0gMDsgLyogVW5idWZmZXJlZCBiaW5hcnkgc3Rke2luLG91dCxlcnJ9ICovCitpbnQgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMDsgLyogZm9yIC1SIGFuZCBQWVRIT05IQVNIU0VFRCAqLworaW50IFB5X0lzb2xhdGVkRmxhZyA9IDA7IC8qIGZvciAtSSwgaXNvbGF0ZSBmcm9tIHVzZXIncyBlbnYgKi8KKworUHlUaHJlYWRTdGF0ZSAqX1B5X0ZpbmFsaXppbmcgPSBOVUxMOworCisvKiBIYWNrIHRvIGZvcmNlIGxvYWRpbmcgb2Ygb2JqZWN0IGZpbGVzICovCitpbnQgKCpfUHlPU19teXN0cm5pY21wX2hhY2spKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90KSA9IFwKKyAgICBQeU9TX215c3RybmljbXA7IC8qIFB5dGhvbi9weXN0cmNtcC5vICovCisKKy8qIFB5TW9kdWxlX0dldFdhcm5pbmdzTW9kdWxlIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgYXMgb2YgMi42CitzaW5jZSBfd2FybmluZ3MgaXMgYnVpbHRpbi4gIFRoaXMgQVBJIHNob3VsZCBub3QgYmUgdXNlZC4gKi8KK1B5T2JqZWN0ICoKK1B5TW9kdWxlX0dldFdhcm5pbmdzTW9kdWxlKHZvaWQpCit7CisgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgid2FybmluZ3MiKTsKK30KKworc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CisKKy8qIEFQSSB0byBhY2Nlc3MgdGhlIGluaXRpYWxpemVkIGZsYWcgLS0gdXNlZnVsIGZvciBlc290ZXJpYyB1c2UgKi8KKworaW50CitQeV9Jc0luaXRpYWxpemVkKHZvaWQpCit7CisgICAgcmV0dXJuIGluaXRpYWxpemVkOworfQorCisvKiBIZWxwZXIgdG8gYWxsb3cgYW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uIHRvIG92ZXJyaWRlIHRoZSBub3JtYWwKKyAqIG1lY2hhbmlzbSB0aGF0IGF0dGVtcHRzIHRvIGZpZ3VyZSBvdXQgYW4gYXBwcm9wcmlhdGUgSU8gZW5jb2RpbmcKKyAqLworCitzdGF0aWMgY2hhciAqX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBOVUxMOworc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyA9IE5VTEw7CisKK2ludAorUHlfU2V0U3RhbmRhcmRTdHJlYW1FbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChQeV9Jc0luaXRpYWxpemVkKCkpIHsKKyAgICAgICAgLyogVGhpcyBpcyB0b28gbGF0ZSB0byBoYXZlIGFueSBlZmZlY3QgKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBDYW4ndCBjYWxsIFB5RXJyX05vTWVtb3J5KCkgb24gZXJyb3JzLCBhcyBQeXRob24gaGFzbid0IGJlZW4KKyAgICAgKiBpbml0aWFsaXNlZCB5ZXQuCisgICAgICoKKyAgICAgKiBIb3dldmVyLCB0aGUgcmF3IG1lbW9yeSBhbGxvY2F0b3JzIGFyZSBpbml0aWFsaXNlZCBhcHByb3ByaWF0ZWx5CisgICAgICogYXMgQyBzdGF0aWMgdmFyaWFibGVzLCBzbyBfUHlNZW1fUmF3U3RyZHVwIGlzIE9LIGV2ZW4gdGhvdWdoCisgICAgICogUHlfSW5pdGlhbGl6ZSBoYXNuJ3QgYmVlbiBjYWxsZWQgeWV0LgorICAgICAqLworICAgIGlmIChlbmNvZGluZykgeworICAgICAgICBfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyA9IF9QeU1lbV9SYXdTdHJkdXAoZW5jb2RpbmcpOworICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgICAgICByZXR1cm4gLTI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGVycm9ycykgeworICAgICAgICBfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBfUHlNZW1fUmF3U3RyZHVwKGVycm9ycyk7CisgICAgICAgIGlmICghX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKSB7CisgICAgICAgICAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMzsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogR2xvYmFsIGluaXRpYWxpemF0aW9ucy4gIENhbiBiZSB1bmRvbmUgYnkgUHlfRmluYWxpemUoKS4gIERvbid0CisgICBjYWxsIHRoaXMgdHdpY2Ugd2l0aG91dCBhbiBpbnRlcnZlbmluZyBQeV9GaW5hbGl6ZSgpIGNhbGwuICBXaGVuCisgICBpbml0aWFsaXphdGlvbnMgZmFpbCwgYSBmYXRhbCBlcnJvciBpcyBpc3N1ZWQgYW5kIHRoZSBmdW5jdGlvbiBkb2VzCisgICBub3QgcmV0dXJuLiAgT24gcmV0dXJuLCB0aGUgZmlyc3QgdGhyZWFkIGFuZCBpbnRlcnByZXRlciBzdGF0ZSBoYXZlCisgICBiZWVuIGNyZWF0ZWQuCisKKyAgIExvY2tpbmc6IHlvdSBtdXN0IGhvbGQgdGhlIGludGVycHJldGVyIGxvY2sgd2hpbGUgY2FsbGluZyB0aGlzLgorICAgKElmIHRoZSBsb2NrIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQsIHRoYXQncyBlcXVpdmFsZW50IHRvCisgICBoYXZpbmcgdGhlIGxvY2ssIGJ1dCB5b3UgY2Fubm90IHVzZSBtdWx0aXBsZSB0aHJlYWRzLikKKworKi8KKworc3RhdGljIGludAorYWRkX2ZsYWcoaW50IGZsYWcsIGNvbnN0IGNoYXIgKmVudnMpCit7CisgICAgaW50IGVudiA9IGF0b2koZW52cyk7CisgICAgaWYgKGZsYWcgPCBlbnYpCisgICAgICAgIGZsYWcgPSBlbnY7CisgICAgaWYgKGZsYWcgPCAxKQorICAgICAgICBmbGFnID0gMTsKKyAgICByZXR1cm4gZmxhZzsKK30KKworc3RhdGljIGNoYXIqCitnZXRfY29kZWNfbmFtZShjb25zdCBjaGFyICplbmNvZGluZykKK3sKKyAgICBjaGFyICpuYW1lX3V0ZjgsICpuYW1lX3N0cjsKKyAgICBQeU9iamVjdCAqY29kZWMsICpuYW1lID0gTlVMTDsKKworICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKKyAgICBpZiAoIWNvZGVjKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29kZWMsICZQeUlkX25hbWUpOworICAgIFB5X0NMRUFSKGNvZGVjKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBuYW1lX3V0ZjggPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lX3V0ZjggPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBuYW1lX3N0ciA9IF9QeU1lbV9SYXdTdHJkdXAobmFtZV91dGY4KTsKKyAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgaWYgKG5hbWVfc3RyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBuYW1lX3N0cjsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihjb2RlYyk7CisgICAgUHlfWERFQ1JFRihuYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNoYXIqCitnZXRfbG9jYWxlX2VuY29kaW5nKHZvaWQpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGNoYXIgY29kZXBhZ2VbMTAwXTsKKyAgICBQeU9TX3NucHJpbnRmKGNvZGVwYWdlLCBzaXplb2YoY29kZXBhZ2UpLCAiY3AlZCIsIEdldEFDUCgpKTsKKyAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXBhZ2UpOworI2VsaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKKyAgICBjaGFyKiBjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CisgICAgaWYgKCFjb2Rlc2V0IHx8IGNvZGVzZXRbMF0gPT0gJ1wwJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNPREVTRVQgaXMgbm90IHNldCBvciBlbXB0eSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOworI2Vsc2UKKyAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCitpbXBvcnRfaW5pdChQeUludGVycHJldGVyU3RhdGUgKmludGVycCwgUHlPYmplY3QgKnN5c21vZCkKK3sKKyAgICBQeU9iamVjdCAqaW1wb3J0bGliOworICAgIFB5T2JqZWN0ICppbXBtb2Q7CisgICAgUHlPYmplY3QgKnN5c19tb2R1bGVzOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIC8qIEltcG9ydCBfaW1wb3J0bGliIHRocm91Z2ggaXRzIGZyb3plbiB2ZXJzaW9uLCBfZnJvemVuX2ltcG9ydGxpYi4gKi8KKyAgICBpZiAoUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKCJfZnJvemVuX2ltcG9ydGxpYiIpIDw9IDApIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliIik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliICMgZnJvemVuXG4iKTsKKyAgICB9CisgICAgaW1wb3J0bGliID0gUHlJbXBvcnRfQWRkTW9kdWxlKCJfZnJvemVuX2ltcG9ydGxpYiIpOworICAgIGlmIChpbXBvcnRsaWIgPT0gTlVMTCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjb3VsZG4ndCBnZXQgX2Zyb3plbl9pbXBvcnRsaWIgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgInN5cy5tb2R1bGVzIik7CisgICAgfQorICAgIGludGVycC0+aW1wb3J0bGliID0gaW1wb3J0bGliOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPmltcG9ydGxpYik7CisKKyAgICAvKiBJbXBvcnQgdGhlIF9pbXAgbW9kdWxlICovCisgICAgaW1wbW9kID0gUHlJbml0X2ltcCgpOworICAgIGlmIChpbXBtb2QgPT0gTlVMTCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgX2ltcCIpOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBfaW1wICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIHN5c19tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworICAgIGlmIChQeV9WZXJib3NlRmxhZykgeworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBzeXMgIyBidWlsdGluXG4iKTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHN5c19tb2R1bGVzLCAiX2ltcCIsIGltcG1vZCkgPCAwKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IHNhdmUgX2ltcCB0byBzeXMubW9kdWxlcyIpOworICAgIH0KKworICAgIC8qIEluc3RhbGwgaW1wb3J0bGliIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQgKi8KKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW1wb3J0bGliLCAiX2luc3RhbGwiLCAiT08iLCBzeXNtb2QsIGltcG1vZCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogaW1wb3J0bGliIGluc3RhbGwgZmFpbGVkIik7CisgICAgfQorICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGltcG1vZCk7CisKKyAgICBfUHlJbXBvcnRaaXBfSW5pdCgpOworfQorCisKK3ZvaWQKK19QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQgaW5zdGFsbF9zaWdzLCBpbnQgaW5zdGFsbF9pbXBvcnRsaWIpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICpiaW1vZCwgKnN5c21vZCwgKnBzdGRlcnI7CisgICAgY2hhciAqcDsKKyAgICBleHRlcm4gdm9pZCBfUHlfUmVhZHlUeXBlcyh2b2lkKTsKKworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworICAgIGluaXRpYWxpemVkID0gMTsKKyAgICBfUHlfRmluYWxpemluZyA9IE5VTEw7CisKKyNpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChIQVZFX1NFVExPQ0FMRSkKKyAgICAvKiBTZXQgdXAgdGhlIExDX0NUWVBFIGxvY2FsZSwgc28gd2UgY2FuIG9idGFpbgorICAgICAgIHRoZSBsb2NhbGUncyBjaGFyc2V0IHdpdGhvdXQgaGF2aW5nIHRvIHN3aXRjaAorICAgICAgIGxvY2FsZXMuICovCisgICAgc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisjZW5kaWYKKworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OREVCVUciKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfRGVidWdGbGFnID0gYWRkX2ZsYWcoUHlfRGVidWdGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTlZFUkJPU0UiKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfVmVyYm9zZUZsYWcgPSBhZGRfZmxhZyhQeV9WZXJib3NlRmxhZywgcCk7CisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05PUFRJTUlaRSIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9PcHRpbWl6ZUZsYWcgPSBhZGRfZmxhZyhQeV9PcHRpbWl6ZUZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9ORE9OVFdSSVRFQllURUNPREUiKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnID0gYWRkX2ZsYWcoUHlfRG9udFdyaXRlQnl0ZWNvZGVGbGFnLCBwKTsKKyAgICAvKiBUaGUgdmFyaWFibGUgaXMgb25seSB0ZXN0ZWQgZm9yIGV4aXN0ZW5jZSBoZXJlOyBfUHlSYW5kb21fSW5pdCB3aWxsCisgICAgICAgY2hlY2sgaXRzIHZhbHVlIGZ1cnRoZXIuICovCisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05IQVNIU0VFRCIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSBhZGRfZmxhZyhQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcsIHApOworCisgICAgX1B5UmFuZG9tX0luaXQoKTsKKworICAgIGludGVycCA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcoKTsKKyAgICBpZiAoaW50ZXJwID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgZmlyc3QgaW50ZXJwcmV0ZXIiKTsKKworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV3KGludGVycCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIGZpcnN0IHRocmVhZCIpOworICAgICh2b2lkKSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogV2UgY2FuJ3QgY2FsbCBfUHlFdmFsX0ZpbmlUaHJlYWRzKCkgaW4gUHlfRmluYWxpemUgYmVjYXVzZQorICAgICAgIGRlc3Ryb3lpbmcgdGhlIEdJTCBtaWdodCBmYWlsIHdoZW4gaXQgaXMgYmVpbmcgcmVmZXJlbmNlZCBmcm9tCisgICAgICAgYW5vdGhlciBydW5uaW5nIHRocmVhZCAoc2VlIGlzc3VlICM5OTAxKS4KKyAgICAgICBJbnN0ZWFkIHdlIGRlc3Ryb3kgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCBHSUwgaGVyZSwgd2hpY2ggZW5zdXJlcworICAgICAgIHRoYXQgd2UgY2FuIGNhbGwgUHlfSW5pdGlhbGl6ZSAvIFB5X0ZpbmFsaXplIG11bHRpcGxlIHRpbWVzLiAqLworICAgIF9QeUV2YWxfRmluaVRocmVhZHMoKTsKKworICAgIC8qIEF1dG8tdGhyZWFkLXN0YXRlIEFQSSAqLworICAgIF9QeUdJTFN0YXRlX0luaXQoaW50ZXJwLCB0c3RhdGUpOworI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCisKKyAgICBfUHlfUmVhZHlUeXBlcygpOworCisgICAgaWYgKCFfUHlGcmFtZV9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgZnJhbWVzIik7CisKKyAgICBpZiAoIV9QeUxvbmdfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGxvbmdzIik7CisKKyAgICBpZiAoIVB5Qnl0ZUFycmF5X0luaXQoKSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBieXRlYXJyYXkiKTsKKworICAgIGlmICghX1B5RmxvYXRfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGZsb2F0Iik7CisKKyAgICBpbnRlcnAtPm1vZHVsZXMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGludGVycC0+bW9kdWxlcyA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIG1vZHVsZXMgZGljdGlvbmFyeSIpOworCisgICAgLyogSW5pdCBVbmljb2RlIGltcGxlbWVudGF0aW9uOyByZWxpZXMgb24gdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCisgICAgaWYgKF9QeVVuaWNvZGVfSW5pdCgpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB1bmljb2RlIik7CisgICAgaWYgKF9QeVN0cnVjdFNlcXVlbmNlX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3RydWN0c2VxIik7CisKKyAgICBiaW1vZCA9IF9QeUJ1aWx0aW5fSW5pdCgpOworICAgIGlmIChiaW1vZCA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGJ1aWx0aW5zIG1vZHVsZXMiKTsKKyAgICBfUHlJbXBvcnRfRml4dXBCdWlsdGluKGJpbW9kLCAiYnVpbHRpbnMiKTsKKyAgICBpbnRlcnAtPmJ1aWx0aW5zID0gUHlNb2R1bGVfR2V0RGljdChiaW1vZCk7CisgICAgaWYgKGludGVycC0+YnVpbHRpbnMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBidWlsdGlucyBkaWN0Iik7CisgICAgUHlfSU5DUkVGKGludGVycC0+YnVpbHRpbnMpOworCisgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KKyAgICBfUHlFeGNfSW5pdChiaW1vZCk7CisKKyAgICBzeXNtb2QgPSBfUHlTeXNfSW5pdCgpOworICAgIGlmIChzeXNtb2QgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMiKTsKKyAgICBpbnRlcnAtPnN5c2RpY3QgPSBQeU1vZHVsZV9HZXREaWN0KHN5c21vZCk7CisgICAgaWYgKGludGVycC0+c3lzZGljdCA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBkaWN0Iik7CisgICAgUHlfSU5DUkVGKGludGVycC0+c3lzZGljdCk7CisgICAgX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbihzeXNtb2QsICJzeXMiKTsKKyAgICBQeVN5c19TZXRQYXRoKFB5X0dldFBhdGgoKSk7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW50ZXJwLT5zeXNkaWN0LCAibW9kdWxlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5tb2R1bGVzKTsKKworICAgIC8qIFNldCB1cCBhIHByZWxpbWluYXJ5IHN0ZGVyciBwcmludGVyIHVudGlsIHdlIGhhdmUgZW5vdWdoCisgICAgICAgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBpbyBtb2R1bGUgaW4gcGxhY2UuICovCisgICAgcHN0ZGVyciA9IFB5RmlsZV9OZXdTdGRQcmludGVyKGZpbGVubyhzdGRlcnIpKTsKKyAgICBpZiAocHN0ZGVyciA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzZXQgcHJlbGltaW5hcnkgc3RkZXJyIik7CisgICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGVyciwgcHN0ZGVycik7CisgICAgUHlTeXNfU2V0T2JqZWN0KCJfX3N0ZGVycl9fIiwgcHN0ZGVycik7CisgICAgUHlfREVDUkVGKHBzdGRlcnIpOworCisgICAgX1B5SW1wb3J0X0luaXQoKTsKKworICAgIF9QeUltcG9ydEhvb2tzX0luaXQoKTsKKworICAgIC8qIEluaXRpYWxpemUgX3dhcm5pbmdzLiAqLworICAgIF9QeVdhcm5pbmdzX0luaXQoKTsKKworICAgIGlmICghaW5zdGFsbF9pbXBvcnRsaWIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChfUHlUaW1lX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdGltZSIpOworCisgICAgaW1wb3J0X2luaXQoaW50ZXJwLCBzeXNtb2QpOworCisgICAgLyogaW5pdGlhbGl6ZSB0aGUgZmF1bHRoYW5kbGVyIG1vZHVsZSAqLworICAgIGlmIChfUHlGYXVsdGhhbmRsZXJfSW5pdCgpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIGZhdWx0aGFuZGxlciIpOworCisgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiB1bmFibGUgdG8gbG9hZCB0aGUgZmlsZSBzeXN0ZW0gY29kZWMiKTsKKworICAgIGlmIChpbnN0YWxsX3NpZ3MpCisgICAgICAgIGluaXRzaWdzKCk7IC8qIFNpZ25hbCBoYW5kbGluZyBzdHVmZiwgaW5jbHVkaW5nIGluaXRpbnRyKCkgKi8KKworICAgIGlmIChfUHlUcmFjZU1hbGxvY19Jbml0KCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHRyYWNlbWFsbG9jIik7CisKKyAgICBpbml0bWFpbihpbnRlcnApOyAvKiBNb2R1bGUgX19tYWluX18gKi8KKyAgICBpZiAoaW5pdHN0ZGlvKCkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKAorICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKworICAgIC8qIEluaXRpYWxpemUgd2FybmluZ3MuICovCisgICAgaWYgKFB5U3lzX0hhc1dhcm5PcHRpb25zKCkpIHsKKyAgICAgICAgUHlPYmplY3QgKndhcm5pbmdzX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgid2FybmluZ3MiKTsKKyAgICAgICAgaWYgKHdhcm5pbmdzX21vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIidpbXBvcnQgd2FybmluZ3MnIGZhaWxlZDsgdHJhY2ViYWNrOlxuIik7CisgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICB9CisgICAgICAgIFB5X1hERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICB9CisKKyAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCisgICAgICAgIGluaXRzaXRlKCk7IC8qIE1vZHVsZSBzaXRlICovCit9CisKK3ZvaWQKK1B5X0luaXRpYWxpemVFeChpbnQgaW5zdGFsbF9zaWdzKQoreworICAgIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnN0YWxsX3NpZ3MsIDEpOworfQorCit2b2lkCitQeV9Jbml0aWFsaXplKHZvaWQpCit7CisgICAgUHlfSW5pdGlhbGl6ZUV4KDEpOworfQorCisKKyNpZmRlZiBDT1VOVF9BTExPQ1MKK2V4dGVybiB2b2lkIGR1bXBfY291bnRzKEZJTEUqKTsKKyNlbmRpZgorCisvKiBGbHVzaCBzdGRvdXQgYW5kIHN0ZGVyciAqLworCitzdGF0aWMgaW50CitmaWxlX2lzX2Nsb3NlZChQeU9iamVjdCAqZm9iaikKK3sKKyAgICBpbnQgcjsKKyAgICBQeU9iamVjdCAqdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmb2JqLCAiY2xvc2VkIik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByID0gUHlPYmplY3RfSXNUcnVlKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKHIgPCAwKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIHJldHVybiByID4gMDsKK30KKworc3RhdGljIHZvaWQKK2ZsdXNoX3N0ZF9maWxlcyh2b2lkKQoreworICAgIFB5T2JqZWN0ICpmb3V0ID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZG91dCk7CisgICAgUHlPYmplY3QgKmZlcnIgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKKyAgICBQeU9iamVjdCAqdG1wOworCisgICAgaWYgKGZvdXQgIT0gTlVMTCAmJiBmb3V0ICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZvdXQpKSB7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICBpZiAoZmVyciAhPSBOVUxMICYmIGZlcnIgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZmVycikpIHsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9Cit9CisKKy8qIFVuZG8gdGhlIGVmZmVjdCBvZiBQeV9Jbml0aWFsaXplKCkuCisKKyAgIEJld2FyZTogaWYgbXVsdGlwbGUgaW50ZXJwcmV0ZXIgYW5kL29yIHRocmVhZCBzdGF0ZXMgZXhpc3QsIHRoZXNlCisgICBhcmUgbm90IHdpcGVkIG91dDsgb25seSB0aGUgY3VycmVudCB0aHJlYWQgYW5kIGludGVycHJldGVyIHN0YXRlCisgICBhcmUgZGVsZXRlZC4gIEJ1dCBzaW5jZSBldmVyeXRoaW5nIGVsc2UgaXMgZGVsZXRlZCwgdGhvc2Ugb3RoZXIKKyAgIGludGVycHJldGVyIGFuZCB0aHJlYWQgc3RhdGVzIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4KKworICAgKFhYWCBXZSBzaG91bGQgZG8gYmV0dGVyLCBlLmcuIHdpcGUgb3V0IGFsbCBpbnRlcnByZXRlcnMgYW5kCisgICB0aHJlYWRzLikKKworICAgTG9ja2luZzogYXMgYWJvdmUuCisKKyovCisKK3ZvaWQKK1B5X0ZpbmFsaXplKHZvaWQpCit7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgaWYgKCFpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CisKKyAgICAvKiBUaGUgaW50ZXJwcmV0ZXIgaXMgc3RpbGwgZW50aXJlbHkgaW50YWN0IGF0IHRoaXMgcG9pbnQsIGFuZCB0aGUKKyAgICAgKiBleGl0IGZ1bmNzIG1heSBiZSByZWx5aW5nIG9uIHRoYXQuICBJbiBwYXJ0aWN1bGFyLCBpZiBzb21lIHRocmVhZAorICAgICAqIG9yIGV4aXQgZnVuYyBpcyBzdGlsbCB3YWl0aW5nIHRvIGRvIGFuIGltcG9ydCwgdGhlIGltcG9ydCBtYWNoaW5lcnkKKyAgICAgKiBleHBlY3RzIFB5X0lzSW5pdGlhbGl6ZWQoKSB0byByZXR1cm4gdHJ1ZS4gIFNvIGRvbid0IHNheSB0aGUKKyAgICAgKiBpbnRlcnByZXRlciBpcyB1bmluaXRpYWxpemVkIHVudGlsIGFmdGVyIHRoZSBleGl0IGZ1bmNzIGhhdmUgcnVuLgorICAgICAqIE5vdGUgdGhhdCBUaHJlYWRpbmcucHkgdXNlcyBhbiBleGl0IGZ1bmMgdG8gZG8gYSBqb2luIG9uIGFsbCB0aGUKKyAgICAgKiB0aHJlYWRzIGNyZWF0ZWQgdGhydSBpdCwgc28gdGhpcyBhbHNvIHByb3RlY3RzIHBlbmRpbmcgaW1wb3J0cyBpbgorICAgICAqIHRoZSB0aHJlYWRzIGNyZWF0ZWQgdmlhIFRocmVhZGluZy4KKyAgICAgKi8KKyAgICBjYWxsX3B5X2V4aXRmdW5jcygpOworCisgICAgLyogR2V0IGN1cnJlbnQgdGhyZWFkIHN0YXRlIGFuZCBpbnRlcnByZXRlciBwb2ludGVyICovCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKworICAgIC8qIFJlbWFpbmluZyB0aHJlYWRzIChlLmcuIGRhZW1vbiB0aHJlYWRzKSB3aWxsIGF1dG9tYXRpY2FsbHkgZXhpdAorICAgICAgIGFmdGVyIHRha2luZyB0aGUgR0lMIChpbiBQeUV2YWxfUmVzdG9yZVRocmVhZCgpKS4gKi8KKyAgICBfUHlfRmluYWxpemluZyA9IHRzdGF0ZTsKKyAgICBpbml0aWFsaXplZCA9IDA7CisKKyAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyICovCisgICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisKKyAgICAvKiBEaXNhYmxlIHNpZ25hbCBoYW5kbGluZyAqLworICAgIFB5T1NfRmluaUludGVycnVwdHMoKTsKKworICAgIC8qIENvbGxlY3QgZ2FyYmFnZS4gIFRoaXMgbWF5IGNhbGwgZmluYWxpemVyczsgaXQncyBuaWNlIHRvIGNhbGwgdGhlc2UKKyAgICAgKiBiZWZvcmUgYWxsIG1vZHVsZXMgYXJlIGRlc3Ryb3llZC4KKyAgICAgKiBYWFggSWYgYSBfX2RlbF9fIG9yIHdlYWtyZWYgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGhlcmUsIGFuZCB0cmllcyB0bworICAgICAqIFhYWCBpbXBvcnQgYSBtb2R1bGUsIGJhZCB0aGluZ3MgY2FuIGhhcHBlbiwgYmVjYXVzZSBQeXRob24gbm8KKyAgICAgKiBYWFggbG9uZ2VyIGJlbGlldmVzIGl0J3MgaW5pdGlhbGl6ZWQuCisgICAgICogWFhYICAgICBGYXRhbCBQeXRob24gZXJyb3I6IEludGVycHJldGVyIG5vdCBpbml0aWFsaXplZCAodmVyc2lvbiBtaXNtYXRjaD8pCisgICAgICogWFhYIGlzIGVhc3kgdG8gcHJvdm9rZSB0aGF0IHdheS4gIEkndmUgYWxzbyBzZWVuLCBlLmcuLAorICAgICAqIFhYWCAgICAgRXhjZXB0aW9uIGV4Y2VwdGlvbnMuSW1wb3J0RXJyb3I6ICdObyBtb2R1bGUgbmFtZWQgc2hhJworICAgICAqIFhYWCAgICAgICAgIGluIDxmdW5jdGlvbiBjYWxsYmFjayBhdCAweDAwOEY1NzE4PiBpZ25vcmVkCisgICAgICogWFhYIGJ1dCBJJ20gdW5jbGVhciBvbiBleGFjdGx5IGhvdyB0aGF0IG9uZSBoYXBwZW5zLiAgSW4gYW55IGNhc2UsCisgICAgICogWFhYIEkgaGF2ZW4ndCBzZWVuIGEgcmVhbC1saWZlIHJlcG9ydCBvZiBlaXRoZXIgb2YgdGhlc2UuCisgICAgICovCisgICAgUHlHQ19Db2xsZWN0KCk7CisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgLyogV2l0aCBDT1VOVF9BTExPQ1MsIGl0IGhlbHBzIHRvIHJ1biBHQyBtdWx0aXBsZSB0aW1lczoKKyAgICAgICBlYWNoIGNvbGxlY3Rpb24gbWlnaHQgcmVsZWFzZSBzb21lIHR5cGVzIGZyb20gdGhlIHR5cGUKKyAgICAgICBsaXN0LCBzbyB0aGV5IGJlY29tZSBnYXJiYWdlLiAqLworICAgIHdoaWxlIChQeUdDX0NvbGxlY3QoKSA+IDApCisgICAgICAgIC8qIG5vdGhpbmcgKi87CisjZW5kaWYKKyAgICAvKiBEZXN0cm95IGFsbCBtb2R1bGVzICovCisgICAgUHlJbXBvcnRfQ2xlYW51cCgpOworCisgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAoYWdhaW4sIGluIGNhc2UgbW9yZSB3YXMgcHJpbnRlZCkgKi8KKyAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKworICAgIC8qIENvbGxlY3QgZmluYWwgZ2FyYmFnZS4gIFRoaXMgZGlzcG9zZXMgb2YgY3ljbGVzIGNyZWF0ZWQgYnkKKyAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCisgICAgICogWFhYIFRoaXMgaXMgZGlzYWJsZWQgYmVjYXVzZSBpdCBjYXVzZWQgdG9vIG1hbnkgcHJvYmxlbXMuICBJZgorICAgICAqIFhYWCBhIF9fZGVsX18gb3Igd2Vha3JlZiBjYWxsYmFjayB0cmlnZ2VycyBoZXJlLCBQeXRob24gY29kZSBoYXMKKyAgICAgKiBYWFggYSBoYXJkIHRpbWUgcnVubmluZywgYmVjYXVzZSBldmVuIHRoZSBzeXMgbW9kdWxlIGhhcyBiZWVuCisgICAgICogWFhYIGNsZWFyZWQgb3V0IChzeXMuc3Rkb3V0IGlzIGdvbmUsIHN5cy5leGNlcHRob29rIGlzIGdvbmUsIGV0YykuCisgICAgICogWFhYIE9uZSBzeW1wdG9tIGlzIGEgc2VxdWVuY2Ugb2YgaW5mb3JtYXRpb24tZnJlZSBtZXNzYWdlcworICAgICAqIFhYWCBjb21pbmcgZnJvbSB0aHJlYWRzIChpZiBhIF9fZGVsX18gb3IgY2FsbGJhY2sgaXMgaW52b2tlZCwKKyAgICAgKiBYWFggb3RoZXIgdGhyZWFkcyBjYW4gZXhlY3V0ZSB0b28sIGFuZCBhbnkgZXhjZXB0aW9uIHRoZXkgZW5jb3VudGVyCisgICAgICogWFhYIHRyaWdnZXJzIGEgY29tZWR5IG9mIGVycm9ycyBhcyBzdWJzeXN0ZW0gYWZ0ZXIgc3Vic3lzdGVtCisgICAgICogWFhYIGZhaWxzIHRvIGZpbmQgd2hhdCBpdCAqZXhwZWN0cyogdG8gZmluZCBpbiBzeXMgdG8gaGVscCByZXBvcnQKKyAgICAgKiBYWFggdGhlIGV4Y2VwdGlvbiBhbmQgY29uc2VxdWVudCB1bmV4cGVjdGVkIGZhaWx1cmVzKS4gIEkndmUgYWxzbworICAgICAqIFhYWCBzZWVuIHNlZ2ZhdWx0cyB0aGVuLCBhZnRlciBhZGRpbmcgcHJpbnQgc3RhdGVtZW50cyB0byB0aGUKKyAgICAgKiBYWFggUHl0aG9uIGNvZGUgZ2V0dGluZyBjYWxsZWQuCisgICAgICovCisjaWYgMAorICAgIFB5R0NfQ29sbGVjdCgpOworI2VuZGlmCisKKyAgICAvKiBEaXNhYmxlIHRyYWNlbWFsbG9jIGFmdGVyIGFsbCBQeXRob24gb2JqZWN0cyBoYXZlIGJlZW4gZGVzdHJveWVkLAorICAgICAgIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0cmFjZW1hbGxvYyBpbiBvYmplY3RzIGRlc3RydWN0b3IuICovCisgICAgX1B5VHJhY2VNYWxsb2NfRmluaSgpOworCisgICAgLyogRGVzdHJveSB0aGUgZGF0YWJhc2UgdXNlZCBieSBfUHlJbXBvcnRfe0ZpeHVwLEZpbmR9RXh0ZW5zaW9uICovCisgICAgX1B5SW1wb3J0X0ZpbmkoKTsKKworICAgIC8qIENsZWFudXAgdHlwZW9iamVjdC5jJ3MgaW50ZXJuYWwgY2FjaGVzLiAqLworICAgIF9QeVR5cGVfRmluaSgpOworCisgICAgLyogdW5sb2FkIGZhdWx0aGFuZGxlciBtb2R1bGUgKi8KKyAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOworCisgICAgLyogRGVidWdnaW5nIHN0dWZmICovCisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKKyNlbmRpZgorICAgIC8qIGR1bXAgaGFzaCBzdGF0cyAqLworICAgIF9QeUhhc2hfRmluaSgpOworCisgICAgX1BZX0RFQlVHX1BSSU5UX1RPVEFMX1JFRlMoKTsKKworI2lmZGVmIFB5X1RSQUNFX1JFRlMKKyAgICAvKiBEaXNwbGF5IGFsbCBvYmplY3RzIHN0aWxsIGFsaXZlIC0tIHRoaXMgY2FuIGludm9rZSBhcmJpdHJhcnkKKyAgICAgKiBfX3JlcHJfXyBvdmVycmlkZXMsIHNvIHJlcXVpcmVzIGEgbW9zdGx5LWludGFjdCBpbnRlcnByZXRlci4KKyAgICAgKiBBbGFzLCBhIGxvdCBvZiBzdHVmZiBtYXkgc3RpbGwgYmUgYWxpdmUgbm93IHRoYXQgd2lsbCBiZSBjbGVhbmVkCisgICAgICogdXAgbGF0ZXIuCisgICAgICovCisgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKKyAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlcyhzdGRlcnIpOworI2VuZGlmIC8qIFB5X1RSQUNFX1JFRlMgKi8KKworICAgIC8qIENsZWFyIGludGVycHJldGVyIHN0YXRlIGFuZCBhbGwgdGhyZWFkIHN0YXRlcy4gKi8KKyAgICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoaW50ZXJwKTsKKworICAgIC8qIE5vdyB3ZSBkZWNyZWYgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzLiAgQWZ0ZXIgdGhpcyBwb2ludCBub3RoaW5nCisgICAgICAgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoYXQncyBva2F5LCBiZWNhdXNlIGVhY2ggRmluaSgpIG1ldGhvZAorICAgICAgIGJlbG93IGhhcyBiZWVuIGNoZWNrZWQgdG8gbWFrZSBzdXJlIG5vIGV4Y2VwdGlvbnMgYXJlIGV2ZXIKKyAgICAgICByYWlzZWQuCisgICAgKi8KKworICAgIF9QeUV4Y19GaW5pKCk7CisKKyAgICAvKiBTdW5kcnkgZmluYWxpemVycyAqLworICAgIFB5TWV0aG9kX0ZpbmkoKTsKKyAgICBQeUZyYW1lX0ZpbmkoKTsKKyAgICBQeUNGdW5jdGlvbl9GaW5pKCk7CisgICAgUHlUdXBsZV9GaW5pKCk7CisgICAgUHlMaXN0X0ZpbmkoKTsKKyAgICBQeVNldF9GaW5pKCk7CisgICAgUHlCeXRlc19GaW5pKCk7CisgICAgUHlCeXRlQXJyYXlfRmluaSgpOworICAgIFB5TG9uZ19GaW5pKCk7CisgICAgUHlGbG9hdF9GaW5pKCk7CisgICAgUHlEaWN0X0ZpbmkoKTsKKyAgICBQeVNsaWNlX0ZpbmkoKTsKKyAgICBfUHlHQ19GaW5pKCk7CisgICAgX1B5UmFuZG9tX0ZpbmkoKTsKKworICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLworICAgIF9QeVVuaWNvZGVfRmluaSgpOworCisgICAgLyogcmVzZXQgZmlsZSBzeXN0ZW0gZGVmYXVsdCBlbmNvZGluZyAqLworICAgIGlmICghUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKSB7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUoKGNoYXIqKVB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsKKyAgICB9CisKKyAgICAvKiBYWFggU3RpbGwgYWxsb2NhdGVkOgorICAgICAgIC0gdmFyaW91cyBzdGF0aWMgYWQtaG9jIHBvaW50ZXJzIHRvIGludGVybmVkIHN0cmluZ3MKKyAgICAgICAtIGludCBhbmQgZmxvYXQgZnJlZSBsaXN0IGJsb2NrcworICAgICAgIC0gd2hhdGV2ZXIgdmFyaW91cyBtb2R1bGVzIGFuZCBsaWJyYXJpZXMgYWxsb2NhdGUKKyAgICAqLworCisgICAgUHlHcmFtbWFyX1JlbW92ZUFjY2VsZXJhdG9ycygmX1B5UGFyc2VyX0dyYW1tYXIpOworCisgICAgLyogQ2xlYW51cCBhdXRvLXRocmVhZC1zdGF0ZSAqLworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgX1B5R0lMU3RhdGVfRmluaSgpOworI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCisKKyAgICAvKiBEZWxldGUgY3VycmVudCB0aHJlYWQuIEFmdGVyIHRoaXMsIG1hbnkgQyBBUEkgY2FsbHMgYmVjb21lIGNyYXNoeS4gKi8KKyAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7CisgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOworCisjaWZkZWYgUHlfVFJBQ0VfUkVGUworICAgIC8qIERpc3BsYXkgYWRkcmVzc2VzICgmIHJlZmNudHMpIG9mIGFsbCBvYmplY3RzIHN0aWxsIGFsaXZlLgorICAgICAqIEFuIGFkZHJlc3MgY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgcmVwciBvZiB0aGUgb2JqZWN0LCBwcmludGVkCisgICAgICogYWJvdmUgYnkgX1B5X1ByaW50UmVmZXJlbmNlcy4KKyAgICAgKi8KKyAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05EVU1QUkVGUyIpKQorICAgICAgICBfUHlfUHJpbnRSZWZlcmVuY2VBZGRyZXNzZXMoc3RkZXJyKTsKKyNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCisjaWZkZWYgUFlNQUxMT0NfREVCVUcKKyAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQorICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworI2VuZGlmCisKKyAgICBjYWxsX2xsX2V4aXRmdW5jcygpOworfQorCisvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCwgYW5kIHJldHVybiB0aGUKKyAgIG5ldyB0aHJlYWQuICBUaGlzIHJlcXVpcmVzIHRoYXQgUHlfSW5pdGlhbGl6ZSgpIGhhcyBiZWVuIGNhbGxlZAorICAgZmlyc3QuCisKKyAgIFVuc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiB5aWVsZHMgYSBOVUxMIHBvaW50ZXIuICBOb3RlIHRoYXQgKm5vKgorICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBldmVuIGluIHRoaXMgY2FzZSAtLSB0aGUKKyAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBoZWxkIGluIHRoZSB0aHJlYWQsIGFuZCB0aGVyZSBpcyBubworICAgdGhyZWFkLgorCisgICBMb2NraW5nOiBhcyBhYm92ZS4KKworKi8KKworUHlUaHJlYWRTdGF0ZSAqCitQeV9OZXdJbnRlcnByZXRlcih2b2lkKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgKnNhdmVfdHN0YXRlOworICAgIFB5T2JqZWN0ICpiaW1vZCwgKnN5c21vZDsKKworICAgIGlmICghaW5pdGlhbGl6ZWQpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X05ld0ludGVycHJldGVyOiBjYWxsIFB5X0luaXRpYWxpemUgZmlyc3QiKTsKKworICAgIGludGVycCA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcoKTsKKyAgICBpZiAoaW50ZXJwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXcoaW50ZXJwKTsKKyAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzYXZlX3RzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOworCisgICAgLyogWFhYIFRoZSBmb2xsb3dpbmcgaXMgbGF4IGluIGVycm9yIGNoZWNraW5nICovCisKKyAgICBpbnRlcnAtPm1vZHVsZXMgPSBQeURpY3RfTmV3KCk7CisKKyAgICBiaW1vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigiYnVpbHRpbnMiKTsKKyAgICBpZiAoYmltb2QgIT0gTlVMTCkgeworICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zID0gUHlNb2R1bGVfR2V0RGljdChiaW1vZCk7CisgICAgICAgIGlmIChpbnRlcnAtPmJ1aWx0aW5zID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKKyAgICAgICAgUHlfSU5DUkVGKGludGVycC0+YnVpbHRpbnMpOworICAgIH0KKworICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCisgICAgX1B5RXhjX0luaXQoYmltb2QpOworCisgICAgc3lzbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJzeXMiKTsKKyAgICBpZiAoYmltb2QgIT0gTlVMTCAmJiBzeXNtb2QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqcHN0ZGVycjsKKworICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBQeU1vZHVsZV9HZXREaWN0KHN5c21vZCk7CisgICAgICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOworICAgICAgICBQeV9JTkNSRUYoaW50ZXJwLT5zeXNkaWN0KTsKKyAgICAgICAgUHlTeXNfU2V0UGF0aChQeV9HZXRQYXRoKCkpOworICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhpbnRlcnAtPnN5c2RpY3QsICJtb2R1bGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5tb2R1bGVzKTsKKyAgICAgICAgLyogU2V0IHVwIGEgcHJlbGltaW5hcnkgc3RkZXJyIHByaW50ZXIgdW50aWwgd2UgaGF2ZSBlbm91Z2gKKyAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBpbyBtb2R1bGUgaW4gcGxhY2UuICovCisgICAgICAgIHBzdGRlcnIgPSBQeUZpbGVfTmV3U3RkUHJpbnRlcihmaWxlbm8oc3RkZXJyKSk7CisgICAgICAgIGlmIChwc3RkZXJyID09IE5VTEwpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzZXQgcHJlbGltaW5hcnkgc3RkZXJyIik7CisgICAgICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHBzdGRlcnIpOworICAgICAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBwc3RkZXJyKTsKKyAgICAgICAgUHlfREVDUkVGKHBzdGRlcnIpOworCisgICAgICAgIF9QeUltcG9ydEhvb2tzX0luaXQoKTsKKworICAgICAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7CisKKyAgICAgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQorICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CisKKyAgICAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCisgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOworICAgICAgICBpbml0bWFpbihpbnRlcnApOworICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCisgICAgICAgICAgICBpbml0c2l0ZSgpOworICAgIH0KKworICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRzdGF0ZTsKKworaGFuZGxlX2Vycm9yOgorICAgIC8qIE9vcHMsIGl0IGRpZG4ndCB3b3JrLiAgVW5kbyBpdCBhbGwuICovCisKKyAgICBQeUVycl9QcmludEV4KDApOworICAgIFB5VGhyZWFkU3RhdGVfQ2xlYXIodHN0YXRlKTsKKyAgICBQeVRocmVhZFN0YXRlX1N3YXAoc2F2ZV90c3RhdGUpOworICAgIFB5VGhyZWFkU3RhdGVfRGVsZXRlKHRzdGF0ZSk7CisgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIERlbGV0ZSBhbiBpbnRlcnByZXRlciBhbmQgaXRzIGxhc3QgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IHRoZQorICAgZ2l2ZW4gdGhyZWFkIHN0YXRlIGlzIGN1cnJlbnQsIHRoYXQgdGhlIHRocmVhZCBoYXMgbm8gcmVtYWluaW5nCisgICBmcmFtZXMsIGFuZCB0aGF0IGl0IGlzIGl0cyBpbnRlcnByZXRlcidzIG9ubHkgcmVtYWluaW5nIHRocmVhZC4KKyAgIEl0IGlzIGEgZmF0YWwgZXJyb3IgdG8gdmlvbGF0ZSB0aGVzZSBjb25zdHJhaW50cy4KKworICAgKFB5X0ZpbmFsaXplKCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKKyAgIGV2ZXJ5dGhpbmcsIHJlZ2FyZGxlc3MuKQorCisgICBMb2NraW5nOiBhcyBhYm92ZS4KKworKi8KKwordm9pZAorUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisKKyAgICBpZiAodHN0YXRlICE9IFB5VGhyZWFkU3RhdGVfR0VUKCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiB0aHJlYWQgaXMgbm90IGN1cnJlbnQiKTsKKyAgICBpZiAodHN0YXRlLT5mcmFtZSAhPSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIHN0aWxsIGhhcyBhIGZyYW1lIik7CisKKyAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKKworICAgIGlmICh0c3RhdGUgIT0gaW50ZXJwLT50c3RhdGVfaGVhZCB8fCB0c3RhdGUtPm5leHQgIT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IG5vdCB0aGUgbGFzdCB0aHJlYWQiKTsKKworICAgIFB5SW1wb3J0X0NsZWFudXAoKTsKKyAgICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoaW50ZXJwKTsKKyAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7CisgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOworfQorCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIHdjaGFyX3QgKnByb2duYW1lID0gTCJweXRob24iOworI2Vsc2UKK3N0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uMyI7CisjZW5kaWYKKwordm9pZAorUHlfU2V0UHJvZ3JhbU5hbWUod2NoYXJfdCAqcG4pCit7CisgICAgaWYgKHBuICYmICpwbikKKyAgICAgICAgcHJvZ25hbWUgPSBwbjsKK30KKword2NoYXJfdCAqCitQeV9HZXRQcm9ncmFtTmFtZSh2b2lkKQoreworICAgIHJldHVybiBwcm9nbmFtZTsKK30KKworc3RhdGljIHdjaGFyX3QgKmRlZmF1bHRfaG9tZSA9IE5VTEw7CitzdGF0aWMgd2NoYXJfdCBlbnZfaG9tZVtNQVhQQVRITEVOKzFdOworCit2b2lkCitQeV9TZXRQeXRob25Ib21lKHdjaGFyX3QgKmhvbWUpCit7CisgICAgZGVmYXVsdF9ob21lID0gaG9tZTsKK30KKword2NoYXJfdCAqCitQeV9HZXRQeXRob25Ib21lKHZvaWQpCit7CisgICAgd2NoYXJfdCAqaG9tZSA9IGRlZmF1bHRfaG9tZTsKKyAgICBpZiAoaG9tZSA9PSBOVUxMICYmICFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcpIHsKKyAgICAgICAgY2hhciogY2hvbWUgPSBQeV9HRVRFTlYoIlBZVEhPTkhPTUUiKTsKKyAgICAgICAgaWYgKGNob21lKSB7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChlbnZfaG9tZSk7CisgICAgICAgICAgICBzaXplX3QgciA9IG1ic3Rvd2NzKGVudl9ob21lLCBjaG9tZSwgc2l6ZSk7CisgICAgICAgICAgICBpZiAociAhPSAoc2l6ZV90KS0xICYmIHIgPCBzaXplKQorICAgICAgICAgICAgICAgIGhvbWUgPSBlbnZfaG9tZTsKKyAgICAgICAgfQorCisgICAgfQorICAgIHJldHVybiBob21lOworfQorCisvKiBDcmVhdGUgX19tYWluX18gbW9kdWxlICovCisKK3N0YXRpYyB2b2lkCitpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKK3sKKyAgICBQeU9iamVjdCAqbSwgKmQsICpsb2FkZXI7CisgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBjcmVhdGUgX19tYWluX18gbW9kdWxlIik7CisgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iKSA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKKyAgICAgICAgaWYgKGJpbW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBidWlsdGlucyBtb2R1bGUiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIsIGJpbW9kKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYnVpbHRpbnNfXyIpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihiaW1vZCk7CisgICAgfQorICAgIC8qIE1haW4gaXMgYSBsaXR0bGUgc3BlY2lhbCAtIGltcC5pc19idWlsdGluKCJfX21haW5fXyIpIHdpbGwgcmV0dXJuCisgICAgICogRmFsc2UsIGJ1dCBCdWlsdGluSW1wb3J0ZXIgaXMgc3RpbGwgdGhlIG1vc3QgYXBwcm9wcmlhdGUgaW5pdGlhbAorICAgICAqIHNldHRpbmcgZm9yIGl0cyBfX2xvYWRlcl9fIGF0dHJpYnV0ZS4gQSBtb3JlIHN1aXRhYmxlIHZhbHVlIHdpbGwKKyAgICAgKiBiZSBzZXQgaWYgX19tYWluX18gZ2V0cyBmdXJ0aGVyIGluaXRpYWxpemVkIGxhdGVyIGluIHRoZSBzdGFydHVwCisgICAgICogcHJvY2Vzcy4KKyAgICAgKi8KKyAgICBsb2FkZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIpOworICAgIGlmIChsb2FkZXIgPT0gTlVMTCB8fCBsb2FkZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBQeU9iamVjdCAqbG9hZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBCdWlsdGluSW1wb3J0ZXIiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iLCBsb2FkZXIpIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19sb2FkZXJfXyIpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIH0KK30KKworc3RhdGljIGludAoraW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCit7CisgICAgUHlPYmplY3QgKmNvZGVjOworCisgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CisgICAgICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBVbmFibGUgdG8gZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmciKTsKKworICAgICAgICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKKyAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCisgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CisgICAgaWYgKCFjb2RlYykgeworICAgICAgICAvKiBTdWNoIGVycm9yIGNhbiBvbmx5IG9jY3VycyBpbiBjcml0aWNhbCBzaXR1YXRpb25zOiBubyBtb3JlCisgICAgICAgICAqIG1lbW9yeSwgaW1wb3J0IGEgbW9kdWxlIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGZhaWxlZCwKKyAgICAgICAgICogZXRjLiAqLworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRihjb2RlYyk7CisgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMTsKKyAgICByZXR1cm4gMDsKK30KKworLyogSW1wb3J0IHRoZSBzaXRlIG1vZHVsZSAobm90IGludG8gX19tYWluX18gdGhvdWdoKSAqLworCitzdGF0aWMgdm9pZAoraW5pdHNpdGUodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbTsKKyAgICBtID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzaXRlIik7CisgICAgaWYgKG0gPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBpbXBvcnQgdGhlIHNpdGUgbW9kdWxlXG4iKTsKKyAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgUHlfRmluYWxpemUoKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICB9Cit9CisKKy8qIENoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIG9yIG5vdC4KKyAgIFJldHVybiAwIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgaW52YWxpZCwgcmV0dXJuIG5vbi16ZXJvIG90aGVyd2lzZS4gKi8KK3N0YXRpYyBpbnQKK2lzX3ZhbGlkX2ZkKGludCBmZCkKK3sKKyAgICBpbnQgZmQyOworICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCisgICAgICAgIHJldHVybiAwOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBmZDIgPSBkdXAoZmQpOworICAgIGlmIChmZDIgPj0gMCkKKyAgICAgICAgY2xvc2UoZmQyKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIHJldHVybiBmZDIgPj0gMDsKK30KKworLyogcmV0dXJucyBQeV9Ob25lIGlmIHRoZSBmZCBpcyBub3QgdmFsaWQgKi8KK3N0YXRpYyBQeU9iamVjdCoKK2NyZWF0ZV9zdGRpbyhQeU9iamVjdCogaW8sCisgICAgaW50IGZkLCBpbnQgd3JpdGVfbW9kZSwgY2hhciogbmFtZSwKKyAgICBjaGFyKiBlbmNvZGluZywgY2hhciogZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMLCAqc3RyZWFtID0gTlVMTCwgKnRleHQgPSBOVUxMLCAqcmF3ID0gTlVMTCwgKnJlczsKKyAgICBjb25zdCBjaGFyKiBtb2RlOworICAgIGNvbnN0IGNoYXIqIG5ld2xpbmU7CisgICAgUHlPYmplY3QgKmxpbmVfYnVmZmVyaW5nOworICAgIGludCBidWZmZXJpbmcsIGlzYXR0eTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKKyAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOworICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOworICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOworCisgICAgaWYgKCFpc192YWxpZF9mZChmZCkpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworCisgICAgLyogc3RkaW4gaXMgYWx3YXlzIG9wZW5lZCBpbiBidWZmZXJlZCBtb2RlLCBmaXJzdCBiZWNhdXNlIGl0IHNob3VsZG4ndAorICAgICAgIG1ha2UgYSBkaWZmZXJlbmNlIGluIGNvbW1vbiB1c2UgY2FzZXMsIHNlY29uZCBiZWNhdXNlIFRleHRJT1dyYXBwZXIKKyAgICAgICBkZXBlbmRzIG9uIHRoZSBwcmVzZW5jZSBvZiBhIHJlYWQxKCkgbWV0aG9kIHdoaWNoIG9ubHkgZXhpc3RzIG9uCisgICAgICAgYnVmZmVyZWQgc3RyZWFtcy4KKyAgICAqLworICAgIGlmIChQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnICYmIHdyaXRlX21vZGUpCisgICAgICAgIGJ1ZmZlcmluZyA9IDA7CisgICAgZWxzZQorICAgICAgICBidWZmZXJpbmcgPSAtMTsKKyAgICBpZiAod3JpdGVfbW9kZSkKKyAgICAgICAgbW9kZSA9ICJ3YiI7CisgICAgZWxzZQorICAgICAgICBtb2RlID0gInJiIjsKKyAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKGJ1ZmZlcmluZykgeworICAgICAgICBfUHlfSURFTlRJRklFUihyYXcpOworICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZiwgJlB5SWRfcmF3KTsKKyAgICAgICAgaWYgKHJhdyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJhdyA9IGJ1ZjsKKyAgICAgICAgUHlfSU5DUkVGKHJhdyk7CisgICAgfQorCisgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIGlmIChpc2F0dHkgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGlzYXR0eSB8fCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnKQorICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IFB5X1RydWU7CisgICAgZWxzZQorICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IFB5X0ZhbHNlOworCisgICAgUHlfQ0xFQVIocmF3KTsKKyAgICBQeV9DTEVBUih0ZXh0KTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBzeXMuc3RkaW46IGVuYWJsZSB1bml2ZXJzYWwgbmV3bGluZSBtb2RlLCB0cmFuc2xhdGUgIlxyXG4iIGFuZCAiXHIiCisgICAgICAgbmV3bGluZXMgdG8gIlxuIi4KKyAgICAgICBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyOiB0cmFuc2xhdGUgIlxuIiB0byAiXHJcbiIuICovCisgICAgbmV3bGluZSA9IE5VTEw7CisjZWxzZQorICAgIC8qIHN5cy5zdGRpbjogc3BsaXQgbGluZXMgYXQgIlxuIi4KKyAgICAgICBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyOiBkb24ndCB0cmFuc2xhdGUgbmV3bGluZXMgKHVzZSAiXG4iKS4gKi8KKyAgICBuZXdsaW5lID0gIlxuIjsKKyNlbmRpZgorCisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfVGV4dElPV3JhcHBlciwgIk9zc3NPIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZW5jb2RpbmcsIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nKTsKKyAgICBQeV9DTEVBUihidWYpOworICAgIGlmIChzdHJlYW0gPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmICh3cml0ZV9tb2RlKQorICAgICAgICBtb2RlID0gInciOworICAgIGVsc2UKKyAgICAgICAgbW9kZSA9ICJyIjsKKyAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kZSk7CisgICAgaWYgKCF0ZXh0IHx8IF9QeU9iamVjdF9TZXRBdHRySWQoc3RyZWFtLCAmUHlJZF9tb2RlLCB0ZXh0KSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIodGV4dCk7CisgICAgcmV0dXJuIHN0cmVhbTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihidWYpOworICAgIFB5X1hERUNSRUYoc3RyZWFtKTsKKyAgICBQeV9YREVDUkVGKHRleHQpOworICAgIFB5X1hERUNSRUYocmF3KTsKKworICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX09TRXJyb3IpICYmICFpc192YWxpZF9mZChmZCkpIHsKKyAgICAgICAgLyogSXNzdWUgIzI0ODkxOiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBjbG9zZWQgYWZ0ZXIgdGhlIGZpcnN0CisgICAgICAgICAgIGlzX3ZhbGlkX2ZkKCkgY2hlY2sgd2FzIGNhbGxlZC4gSWdub3JlIHRoZSBPU0Vycm9yIGFuZCBzZXQgdGhlCisgICAgICAgICAgIHN0cmVhbSB0byBOb25lLiAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEluaXRpYWxpemUgc3lzLnN0ZGluLCBzdGRvdXQsIHN0ZGVyciBhbmQgYnVpbHRpbnMub3BlbiAqLworc3RhdGljIGludAoraW5pdHN0ZGlvKHZvaWQpCit7CisgICAgUHlPYmplY3QgKmlvbW9kID0gTlVMTCwgKndyYXBwZXI7CisgICAgUHlPYmplY3QgKmJpbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbTsKKyAgICBQeU9iamVjdCAqc3RkID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzID0gMCwgZmQ7CisgICAgUHlPYmplY3QgKiBlbmNvZGluZ19hdHRyOworICAgIGNoYXIgKnB5dGhvbmlvZW5jb2RpbmcgPSBOVUxMLCAqZW5jb2RpbmcsICplcnJvcnM7CisKKyAgICAvKiBIYWNrIHRvIGF2b2lkIGEgbmFzdHkgcmVjdXJzaW9uIGlzc3VlIHdoZW4gUHl0aG9uIGlzIGludm9rZWQKKyAgICAgICBpbiB2ZXJib3NlIG1vZGU6IHByZS1pbXBvcnQgdGhlIExhdGluLTEgYW5kIFVURi04IGNvZGVjcyAqLworICAgIGlmICgobSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZW5jb2RpbmdzLnV0Zl84IikpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfREVDUkVGKG0pOworCisgICAgaWYgKCEobSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZW5jb2RpbmdzLmxhdGluXzEiKSkpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfREVDUkVGKG0pOworCisgICAgaWYgKCEoYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKCEoaW9tb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImlvIikpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICghKHdyYXBwZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGlvbW9kLCAiT3BlbldyYXBwZXIiKSkpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBTZXQgYnVpbHRpbnMub3BlbiAqLworICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGJpbW9kLCAib3BlbiIsIHdyYXBwZXIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlfREVDUkVGKHdyYXBwZXIpOworCisgICAgZW5jb2RpbmcgPSBfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZzsKKyAgICBlcnJvcnMgPSBfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnM7CisgICAgaWYgKCFlbmNvZGluZyB8fCAhZXJyb3JzKSB7CisgICAgICAgIGlmICghZXJyb3JzKSB7CisgICAgICAgICAgICAvKiBXaGVuIHRoZSBMQ19DVFlQRSBsb2NhbGUgaXMgdGhlIFBPU0lYIGxvY2FsZSAoIkMgbG9jYWxlIiksCisgICAgICAgICAgICAgICBzdGRpbiBhbmQgc3Rkb3V0IHVzZSB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgYnkKKyAgICAgICAgICAgICAgIGRlZmF1bHQsIGluc3RlYWQgb2YgdGhlIHN0cmljdCBlcnJvciBoYW5kbGVyLiAqLworICAgICAgICAgICAgY2hhciAqbG9jID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChsb2MgIT0gTlVMTCAmJiBzdHJjbXAobG9jLCAiQyIpID09IDApCisgICAgICAgICAgICAgICAgZXJyb3JzID0gInN1cnJvZ2F0ZWVzY2FwZSI7CisgICAgICAgIH0KKworICAgICAgICBweXRob25pb2VuY29kaW5nID0gUHlfR0VURU5WKCJQWVRIT05JT0VOQ09ESU5HIik7CisgICAgICAgIGlmIChweXRob25pb2VuY29kaW5nKSB7CisgICAgICAgICAgICBjaGFyICplcnI7CisgICAgICAgICAgICBweXRob25pb2VuY29kaW5nID0gX1B5TWVtX1N0cmR1cChweXRob25pb2VuY29kaW5nKTsKKyAgICAgICAgICAgIGlmIChweXRob25pb2VuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlcnIgPSBzdHJjaHIocHl0aG9uaW9lbmNvZGluZywgJzonKTsKKyAgICAgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgICAgICAqZXJyID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBlcnIrKzsKKyAgICAgICAgICAgICAgICBpZiAoKmVyciAmJiAhX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGVycjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKnB5dGhvbmlvZW5jb2RpbmcgJiYgIWVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBweXRob25pb2VuY29kaW5nOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyogU2V0IHN5cy5zdGRpbiAqLworICAgIGZkID0gZmlsZW5vKHN0ZGluKTsKKyAgICAvKiBVbmRlciBzb21lIGNvbmRpdGlvbnMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIG1heSBub3QgYmUgY29ubmVjdGVkCisgICAgICogYW5kIGZpbGVubygpIG1heSBwb2ludCB0byBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4gRm9yIGV4YW1wbGUKKyAgICAgKiBHVUkgYXBwcyBkb24ndCBoYXZlIHZhbGlkIHN0YW5kYXJkIHN0cmVhbXMgYnkgZGVmYXVsdC4KKyAgICAgKi8KKyAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAwLCAiPHN0ZGluPiIsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIGlmIChzdGQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkaW5fXyIsIHN0ZCk7CisgICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGluLCBzdGQpOworICAgIFB5X0RFQ1JFRihzdGQpOworCisgICAgLyogU2V0IHN5cy5zdGRvdXQgKi8KKyAgICBmZCA9IGZpbGVubyhzdGRvdXQpOworICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDEsICI8c3Rkb3V0PiIsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIGlmIChzdGQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeVN5c19TZXRPYmplY3QoIl9fc3Rkb3V0X18iLCBzdGQpOworICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQsIHN0ZCk7CisgICAgUHlfREVDUkVGKHN0ZCk7CisKKyNpZiAxIC8qIERpc2FibGUgdGhpcyBpZiB5b3UgaGF2ZSB0cm91YmxlIGRlYnVnZ2luZyBib290c3RyYXAgc3R1ZmYgKi8KKyAgICAvKiBTZXQgc3lzLnN0ZGVyciwgcmVwbGFjZXMgdGhlIHByZWxpbWluYXJ5IHN0ZGVyciAqLworICAgIGZkID0gZmlsZW5vKHN0ZGVycik7CisgICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMSwgIjxzdGRlcnI+IiwgZW5jb2RpbmcsICJiYWNrc2xhc2hyZXBsYWNlIik7CisgICAgaWYgKHN0ZCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogU2FtZSBhcyBoYWNrIGFib3ZlLCBwcmUtaW1wb3J0IHN0ZGVycidzIGNvZGVjIHRvIGF2b2lkIHJlY3Vyc2lvbgorICAgICAgIHdoZW4gaW1wb3J0LmMgdHJpZXMgdG8gd3JpdGUgdG8gc3RkZXJyIGluIHZlcmJvc2UgbW9kZS4gKi8KKyAgICBlbmNvZGluZ19hdHRyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdGQsICJlbmNvZGluZyIpOworICAgIGlmIChlbmNvZGluZ19hdHRyICE9IE5VTEwpIHsKKyAgICAgICAgY29uc3QgY2hhciAqIHN0ZF9lbmNvZGluZzsKKyAgICAgICAgc3RkX2VuY29kaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZyhlbmNvZGluZ19hdHRyKTsKKyAgICAgICAgaWYgKHN0ZF9lbmNvZGluZyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqY29kZWNfaW5mbyA9IF9QeUNvZGVjX0xvb2t1cChzdGRfZW5jb2RpbmcpOworICAgICAgICAgICAgUHlfWERFQ1JFRihjb2RlY19pbmZvKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmdfYXR0cik7CisgICAgfQorICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBOb3QgYSBmYXRhbCBlcnJvciBpZiBjb2RlYyBpc24ndCBhdmFpbGFibGUgKi8KKworICAgIGlmIChQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBzdGQpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RkKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHN0ZCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdGQpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBQeV9ERUNSRUYoc3RkKTsKKyNlbmRpZgorCisgICAgaWYgKDApIHsKKyAgZXJyb3I6CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KKworICAgIC8qIFdlIHdvbid0IG5lZWQgdGhlbSBhbnltb3JlLiAqLworICAgIGlmIChfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZykgeworICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKTsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBOVUxMOworICAgIH0KKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKSB7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUoX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKTsKKyAgICAgICAgX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzID0gTlVMTDsKKyAgICB9CisgICAgUHlNZW1fRnJlZShweXRob25pb2VuY29kaW5nKTsKKyAgICBQeV9YREVDUkVGKGJpbW9kKTsKKyAgICBQeV9YREVDUkVGKGlvbW9kKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisKKy8qIFByaW50IHRoZSBjdXJyZW50IGV4Y2VwdGlvbiAoaWYgYW4gZXhjZXB0aW9uIGlzIHNldCkgd2l0aCBpdHMgdHJhY2ViYWNrLAorICogb3IgZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2suCisgKgorICogRG9uJ3QgY2FsbCBQeUVycl9QcmludEV4KCkgYW5kIHRoZSBleGNlcHQgaG9vaywgYmVjYXVzZSBQeV9GYXRhbEVycm9yKCkgaXMKKyAqIGNhbGxlZCBvbiBjYXRhc3Ryb3BoaWMgY2FzZXMuICovCisKK3N0YXRpYyB2b2lkCitfUHlfUHJpbnRGYXRhbEVycm9yKGludCBmZCkKK3sKKyAgICBQeU9iamVjdCAqZmVyciwgKnJlczsKKyAgICBQeU9iamVjdCAqZXhjZXB0aW9uLCAqdiwgKnRiOworICAgIGludCBoYXNfdGI7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgUHlFcnJfRmV0Y2goJmV4Y2VwdGlvbiwgJnYsICZ0Yik7CisgICAgaWYgKGV4Y2VwdGlvbiA9PSBOVUxMKSB7CisgICAgICAgIC8qIE5vIGN1cnJlbnQgZXhjZXB0aW9uICovCisgICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKKyAgICB9CisKKyAgICBmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CisgICAgaWYgKGZlcnIgPT0gTlVMTCB8fCBmZXJyID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogc3lzLnN0ZGVyciBpcyBub3Qgc2V0IHlldCBvciBzZXQgdG8gTm9uZSwKKyAgICAgICAgICAgbm8gbmVlZCB0byB0cnkgdG8gZGlzcGxheSB0aGUgZXhjZXB0aW9uICovCisgICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKKyAgICB9CisKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4Y2VwdGlvbiwgJnYsICZ0Yik7CisgICAgaWYgKHRiID09IE5VTEwpIHsKKyAgICAgICAgdGIgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYodGIpOworICAgIH0KKyAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodiwgdGIpOworICAgIGlmIChleGNlcHRpb24gPT0gTlVMTCkgeworICAgICAgICAvKiBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oKSBmYWlsZWQgKi8KKyAgICAgICAgZ290byBkaXNwbGF5X3N0YWNrOworICAgIH0KKworICAgIGhhc190YiA9ICh0YiAhPSBQeV9Ob25lKTsKKyAgICBQeUVycl9EaXNwbGF5KGV4Y2VwdGlvbiwgdiwgdGIpOworICAgIFB5X1hERUNSRUYoZXhjZXB0aW9uKTsKKyAgICBQeV9YREVDUkVGKHYpOworICAgIFB5X1hERUNSRUYodGIpOworCisgICAgLyogc3lzLnN0ZGVyciBtYXkgYmUgYnVmZmVyZWQ6IGNhbGwgc3lzLnN0ZGVyci5mbHVzaCgpICovCisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworCisgICAgaWYgKGhhc190YikKKyAgICAgICAgcmV0dXJuOworCitkaXNwbGF5X3N0YWNrOgorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSB3b3JrcyBldmVuIGlmIHRoZSBHSUwgd2FzIHJlbGVhc2VkICovCisgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyNlbHNlCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyNlbmRpZgorICAgIGlmICh0c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSByZXF1aXJlcyB0aGUgdGhyZWFkIHN0YXRlIHRvIGRpc3BsYXkKKyAgICAgICAgICogZnJhbWVzICovCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGZmbHVzaChzdGRlcnIpOworCisgICAgLyogZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2sgKi8KKyAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworfQorLyogUHJpbnQgZmF0YWwgZXJyb3IgbWVzc2FnZSBhbmQgYWJvcnQgKi8KKwordm9pZAorUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptc2cpCit7CisgICAgY29uc3QgaW50IGZkID0gZmlsZW5vKHN0ZGVycik7CisgICAgc3RhdGljIGludCByZWVudHJhbnQgPSAwOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBzaXplX3QgbGVuOworICAgIFdDSEFSKiBidWZmZXI7CisgICAgc2l6ZV90IGk7CisjZW5kaWYKKworICAgIGlmIChyZWVudHJhbnQpIHsKKyAgICAgICAgLyogUHlfRmF0YWxFcnJvcigpIGNhdXNlZCBhIHNlY29uZCBmYXRhbCBlcnJvci4KKyAgICAgICAgICAgRXhhbXBsZTogZmx1c2hfc3RkX2ZpbGVzKCkgcmFpc2VzIGEgcmVjdXJzaW9uIGVycm9yLiAqLworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJlZW50cmFudCA9IDE7CisKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogJXNcbiIsIG1zZyk7CisgICAgZmZsdXNoKHN0ZGVycik7IC8qIGl0IGhlbHBzIGluIFdpbmRvd3MgZGVidWcgYnVpbGQgKi8KKworICAgIC8qIFByaW50IHRoZSBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKKyAgICAgKiBvciBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjay4gKi8KKyAgICBfUHlfUHJpbnRGYXRhbEVycm9yKGZkKTsKKworICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KKyAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKworICAgIC8qIFRoZSBtYWluIHB1cnBvc2Ugb2YgZmF1bHRoYW5kbGVyIGlzIHRvIGRpc3BsYXkgdGhlIHRyYWNlYmFjay4gV2UgYWxyZWFkeQorICAgICAqIGRpZCBvdXIgYmVzdCB0byBkaXNwbGF5IGl0LiBTbyBmYXVsdGhhbmRsZXIgY2FuIG5vdyBiZSBkaXNhYmxlZC4KKyAgICAgKiAoRG9uJ3QgdHJpZ2dlciBpdCBvbiBhYm9ydCgpLikgKi8KKyAgICBfUHlGYXVsdGhhbmRsZXJfRmluaSgpOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGxlbiA9IHN0cmxlbihtc2cpOworCisgICAgLyogQ29udmVydCB0aGUgbWVzc2FnZSB0byB3Y2hhcl90LiBUaGlzIHVzZXMgYSBzaW1wbGUgb25lLXRvLW9uZQorICAgIGNvbnZlcnNpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHRoaXMgZXJyb3IgbWVzc2FnZSBhY3R1YWxseSB1c2VzIEFTQ0lJCisgICAgb25seS4gSWYgdGhpcyBjZWFzZXMgdG8gYmUgdHJ1ZSwgd2Ugd2lsbCBoYXZlIHRvIGNvbnZlcnQuICovCisgICAgYnVmZmVyID0gYWxsb2NhKCAobGVuKzEpICogKHNpemVvZiAqYnVmZmVyKSk7CisgICAgZm9yKCBpPTA7IGk8PWxlbjsgKytpKQorICAgICAgICBidWZmZXJbaV0gPSBtc2dbaV07CisgICAgT3V0cHV0RGVidWdTdHJpbmdXKEwiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKKyAgICBPdXRwdXREZWJ1Z1N0cmluZ1coYnVmZmVyKTsKKyAgICBPdXRwdXREZWJ1Z1N0cmluZ1coTCJcbiIpOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworZXhpdDoKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoX0RFQlVHKQorICAgIERlYnVnQnJlYWsoKTsKKyNlbmRpZgorICAgIGFib3J0KCk7Cit9CisKKy8qIENsZWFuIHVwIGFuZCBleGl0ICovCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7CisvKiBGb3IgdGhlIGF0ZXhpdCBtb2R1bGUuICovCit2b2lkIF9QeV9QeUF0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpCit7CisgICAgcHlleGl0ZnVuYyA9IGZ1bmM7Cit9CisKK3N0YXRpYyB2b2lkCitjYWxsX3B5X2V4aXRmdW5jcyh2b2lkKQoreworICAgIGlmIChweWV4aXRmdW5jID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgICgqcHlleGl0ZnVuYykoKTsKKyAgICBQeUVycl9DbGVhcigpOworfQorCisvKiBXYWl0IHVudGlsIHRocmVhZGluZy5fc2h1dGRvd24gY29tcGxldGVzLCBwcm92aWRlZAorICAgdGhlIHRocmVhZGluZyBtb2R1bGUgd2FzIGltcG9ydGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgIFRoZSBzaHV0ZG93biByb3V0aW5lIHdpbGwgd2FpdCB1bnRpbCBhbGwgbm9uLWRhZW1vbgorICAgInRocmVhZGluZyIgdGhyZWFkcyBoYXZlIGNvbXBsZXRlZC4gKi8KK3N0YXRpYyB2b2lkCit3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCkKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIF9QeV9JREVOVElGSUVSKF9zaHV0ZG93bik7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIFB5T2JqZWN0ICp0aHJlYWRpbmcgPSBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZyh0c3RhdGUtPmludGVycC0+bW9kdWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocmVhZGluZyIpOworICAgIGlmICh0aHJlYWRpbmcgPT0gTlVMTCkgeworICAgICAgICAvKiB0aHJlYWRpbmcgbm90IGltcG9ydGVkICovCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIH0KKyAgICBQeV9ERUNSRUYodGhyZWFkaW5nKTsKKyNlbmRpZgorfQorCisjZGVmaW5lIE5FWElURlVOQ1MgMzIKK3N0YXRpYyB2b2lkICgqZXhpdGZ1bmNzW05FWElURlVOQ1NdKSh2b2lkKTsKK3N0YXRpYyBpbnQgbmV4aXRmdW5jcyA9IDA7CisKK2ludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpKHZvaWQpKQoreworICAgIGlmIChuZXhpdGZ1bmNzID49IE5FWElURlVOQ1MpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBleGl0ZnVuY3NbbmV4aXRmdW5jcysrXSA9IGZ1bmM7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKQoreworICAgIHdoaWxlIChuZXhpdGZ1bmNzID4gMCkKKyAgICAgICAgKCpleGl0ZnVuY3NbLS1uZXhpdGZ1bmNzXSkoKTsKKworICAgIGZmbHVzaChzdGRvdXQpOworICAgIGZmbHVzaChzdGRlcnIpOworfQorCit2b2lkCitQeV9FeGl0KGludCBzdHMpCit7CisgICAgUHlfRmluYWxpemUoKTsKKworICAgIGV4aXQoc3RzKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRzaWdzKHZvaWQpCit7CisjaWZkZWYgU0lHUElQRQorICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19JR04pOworI2VuZGlmCisjaWZkZWYgU0lHWEZaCisgICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfSUdOKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGU1oKKyAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfSUdOKTsKKyNlbmRpZgorICAgIFB5T1NfSW5pdEludGVycnVwdHMoKTsgLyogTWF5IGltcGx5IGluaXRzaWduYWwoKSAqLworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGltcG9ydCBzaWduYWwiKTsKKyAgICB9Cit9CisKKworLyogUmVzdG9yZSBzaWduYWxzIHRoYXQgdGhlIGludGVycHJldGVyIGhhcyBjYWxsZWQgU0lHX0lHTiBvbiB0byBTSUdfREZMLgorICoKKyAqIEFsbCBvZiB0aGUgY29kZSBpbiB0aGlzIGZ1bmN0aW9uIG11c3Qgb25seSB1c2UgYXN5bmMtc2lnbmFsLXNhZmUgZnVuY3Rpb25zLAorICogbGlzdGVkIGF0IGBtYW4gNyBzaWduYWxgIG9yCisgKiBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbC4KKyAqLwordm9pZAorX1B5X1Jlc3RvcmVTaWduYWxzKHZvaWQpCit7CisjaWZkZWYgU0lHUElQRQorICAgIFB5T1Nfc2V0c2lnKFNJR1BJUEUsIFNJR19ERkwpOworI2VuZGlmCisjaWZkZWYgU0lHWEZaCisgICAgUHlPU19zZXRzaWcoU0lHWEZaLCBTSUdfREZMKTsKKyNlbmRpZgorI2lmZGVmIFNJR1hGU1oKKyAgICBQeU9TX3NldHNpZyhTSUdYRlNaLCBTSUdfREZMKTsKKyNlbmRpZgorfQorCisKKy8qCisgKiBUaGUgZmlsZSBkZXNjcmlwdG9yIGZkIGlzIGNvbnNpZGVyZWQgYGBpbnRlcmFjdGl2ZScnIGlmIGVpdGhlcgorICogICBhKSBpc2F0dHkoZmQpIGlzIFRSVUUsIG9yCisgKiAgIGIpIHRoZSAtaSBmbGFnIHdhcyBnaXZlbiwgYW5kIHRoZSBmaWxlbmFtZSBhc3NvY2lhdGVkIHdpdGgKKyAqICAgICAgdGhlIGRlc2NyaXB0b3IgaXMgTlVMTCBvciAiPHN0ZGluPiIgb3IgIj8/PyIuCisgKi8KK2ludAorUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKyAgICBpZiAoaXNhdHR5KChpbnQpZmlsZW5vKGZwKSkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICghUHlfSW50ZXJhY3RpdmVGbGFnKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKGZpbGVuYW1lID09IE5VTEwpIHx8CisgICAgICAgICAgIChzdHJjbXAoZmlsZW5hbWUsICI8c3RkaW4+IikgPT0gMCkgfHwKKyAgICAgICAgICAgKHN0cmNtcChmaWxlbmFtZSwgIj8/PyIpID09IDApOworfQorCisKKy8qIFdyYXBwZXJzIGFyb3VuZCBzaWdhY3Rpb24oKSBvciBzaWduYWwoKS4gKi8KKworUHlPU19zaWdoYW5kbGVyX3QKK1B5T1NfZ2V0c2lnKGludCBzaWcpCit7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGNvbnRleHQ7CisgICAgaWYgKHNpZ2FjdGlvbihzaWcsIE5VTEwsICZjb250ZXh0KSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFNJR19FUlI7CisgICAgcmV0dXJuIGNvbnRleHQuc2FfaGFuZGxlcjsKKyNlbHNlCisgICAgUHlPU19zaWdoYW5kbGVyX3QgaGFuZGxlcjsKKy8qIFNwZWNpYWwgc2lnbmFsIGhhbmRsaW5nIGZvciB0aGUgc2VjdXJlIENSVCBpbiBWaXN1YWwgU3R1ZGlvIDIwMDUgKi8KKyNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNDAwCisgICAgc3dpdGNoIChzaWcpIHsKKyAgICAvKiBPbmx5IHRoZXNlIHNpZ25hbHMgYXJlIHZhbGlkICovCisgICAgY2FzZSBTSUdJTlQ6CisgICAgY2FzZSBTSUdJTEw6CisgICAgY2FzZSBTSUdGUEU6CisgICAgY2FzZSBTSUdTRUdWOgorICAgIGNhc2UgU0lHVEVSTToKKyAgICBjYXNlIFNJR0JSRUFLOgorICAgIGNhc2UgU0lHQUJSVDoKKyAgICAgICAgYnJlYWs7CisgICAgLyogRG9uJ3QgY2FsbCBzaWduYWwoKSB3aXRoIG90aGVyIHZhbHVlcyBvciBpdCB3aWxsIGFzc2VydCAqLworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTSUdfRVJSOworICAgIH0KKyNlbmRpZiAvKiBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICovCisgICAgaGFuZGxlciA9IHNpZ25hbChzaWcsIFNJR19JR04pOworICAgIGlmIChoYW5kbGVyICE9IFNJR19FUlIpCisgICAgICAgIHNpZ25hbChzaWcsIGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyOworI2VuZGlmCit9CisKKy8qCisgKiBBbGwgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgdXNlIGFzeW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9ucywKKyAqIGxpc3RlZCBhdCBgbWFuIDcgc2lnbmFsYCBvcgorICogaHR0cDovL3d3dy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy94c2hfY2hhcDAyXzA0Lmh0bWwuCisgKi8KK1B5T1Nfc2lnaGFuZGxlcl90CitQeU9TX3NldHNpZyhpbnQgc2lnLCBQeU9TX3NpZ2hhbmRsZXJfdCBoYW5kbGVyKQoreworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgLyogU29tZSBjb2RlIGluIE1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgZGVwZW5kcyBvbiBzaWdhY3Rpb24oKSBiZWluZworICAgICAqIHVzZWQgaGVyZSBpZiBIQVZFX1NJR0FDVElPTiBpcyBkZWZpbmVkLiAgRml4IHRoYXQgaWYgdGhpcyBjb2RlCisgICAgICogY2hhbmdlcyB0byBpbnZhbGlkYXRlIHRoYXQgYXNzdW1wdGlvbi4KKyAgICAgKi8KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGNvbnRleHQsIG9jb250ZXh0OworICAgIGNvbnRleHQuc2FfaGFuZGxlciA9IGhhbmRsZXI7CisgICAgc2lnZW1wdHlzZXQoJmNvbnRleHQuc2FfbWFzayk7CisgICAgY29udGV4dC5zYV9mbGFncyA9IDA7CisgICAgaWYgKHNpZ2FjdGlvbihzaWcsICZjb250ZXh0LCAmb2NvbnRleHQpID09IC0xKQorICAgICAgICByZXR1cm4gU0lHX0VSUjsKKyAgICByZXR1cm4gb2NvbnRleHQuc2FfaGFuZGxlcjsKKyNlbHNlCisgICAgUHlPU19zaWdoYW5kbGVyX3Qgb2xkaGFuZGxlcjsKKyAgICBvbGRoYW5kbGVyID0gc2lnbmFsKHNpZywgaGFuZGxlcik7CisjaWZkZWYgSEFWRV9TSUdJTlRFUlJVUFQKKyAgICBzaWdpbnRlcnJ1cHQoc2lnLCAxKTsKKyNlbmRpZgorICAgIHJldHVybiBvbGRoYW5kbGVyOworI2VuZGlmCit9CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCAyYWMyZmQ1Li43ZTAyNjdhIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTIxMiw2ICsyMTIsOSBAQAogICAgICAgICB0c3RhdGUtPm9uX2RlbGV0ZSA9IE5VTEw7CiAgICAgICAgIHRzdGF0ZS0+b25fZGVsZXRlX2RhdGEgPSBOVUxMOwogCisgICAgICAgIHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXIgPSBOVUxMOworICAgICAgICB0c3RhdGUtPmluX2Nvcm91dGluZV93cmFwcGVyID0gMDsKKwogICAgICAgICBpZiAoaW5pdCkKICAgICAgICAgICAgIF9QeVRocmVhZFN0YXRlX0luaXQodHN0YXRlKTsKIApAQCAtMjUzLDYgKzI1Niw5IEBACiAgICAgUHlfc3NpemVfdCBpbmRleCA9IG1vZHVsZS0+bV9iYXNlLm1faW5kZXg7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqcmVzOworICAgIGlmIChtb2R1bGUtPm1fc2xvdHMpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChpbmRleCA9PSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXggPT0gTlVMTCkKQEAgLTI2Niw3ICsyNzIsMTMgQEAKIGludAogX1B5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0KiBtb2R1bGUsIHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQogewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZTsKKyAgICBpZiAoZGVmLT5tX3Nsb3RzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQeVN0YXRlX0FkZE1vZHVsZSBjYWxsZWQgb24gbW9kdWxlIHdpdGggc2xvdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpZiAoIWRlZikKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgpIHsKQEAgLTMwNiw4ICszMTgsMTQgQEAKIGludAogUHlTdGF0ZV9SZW1vdmVNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYpCiB7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICpzdGF0ZTsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVmLT5tX2Jhc2UubV9pbmRleDsKLSAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIGlmIChkZWYtPm1fc2xvdHMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlB5U3RhdGVfUmVtb3ZlTW9kdWxlIGNhbGxlZCBvbiBtb2R1bGUgd2l0aCBzbG90cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIGlmIChpbmRleCA9PSAwKSB7CiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfUmVtb3ZlTW9kdWxlOiBNb2R1bGUgaW5kZXggaW52YWxpZC4iKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMzcyLDYgKzM5MCw4IEBACiAgICAgdHN0YXRlLT5jX3RyYWNlZnVuYyA9IE5VTEw7CiAgICAgUHlfQ0xFQVIodHN0YXRlLT5jX3Byb2ZpbGVvYmopOwogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y190cmFjZW9iaik7CisKKyAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKIH0KIAogCkBAIC00MDMsNyArNDIzLDcgQEAKIHZvaWQKIFB5VGhyZWFkU3RhdGVfRGVsZXRlKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIHsKLSAgICBpZiAodHN0YXRlID09IF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KSkKKyAgICBpZiAodHN0YXRlID09IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5VGhyZWFkU3RhdGVfRGVsZXRlOiB0c3RhdGUgaXMgc3RpbGwgY3VycmVudCIpOwogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgaWYgKGF1dG9JbnRlcnByZXRlclN0YXRlICYmIFB5VGhyZWFkX2dldF9rZXlfdmFsdWUoYXV0b1RMU2tleSkgPT0gdHN0YXRlKQpAQCAtNjYyLDcgKzY4Miw3IEBACiB7CiAgICAgLyogTXVzdCBiZSB0aGUgdHN0YXRlIGZvciB0aGlzIHRocmVhZCAqLwogICAgIGFzc2VydChQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpPT10c3RhdGUpOwotICAgIHJldHVybiB0c3RhdGUgPT0gX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOworICAgIHJldHVybiB0c3RhdGUgPT0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KTsKIH0KIAogLyogSW50ZXJuYWwgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uIGZ1bmN0aW9ucyBjYWxsZWQgYnkKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0cmhleC5jIGIvUHl0aG9uL3B5c3RyaGV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI1OWVkMQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9weXN0cmhleC5jCkBAIC0wLDAgKzEsNjEgQEAKKy8qIGJ5dGVzIHRvIGhleCBpbXBsZW1lbnRhdGlvbiAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKK3N0YXRpYyBQeU9iamVjdCAqX1B5X3N0cmhleF9pbXBsKGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0dXJuX2J5dGVzKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisgICAgUHlfVUNTMSogcmV0YnVmOworICAgIFB5X3NzaXplX3QgaSwgajsKKworICAgIGFzc2VydChhcmdsZW4gPj0gMCk7CisgICAgaWYgKGFyZ2xlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMikKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBpZiAocmV0dXJuX2J5dGVzKSB7CisgICAgICAgIC8qIElmIF9QeUJ5dGVzX0Zyb21TaXplKCkgd2VyZSBwdWJsaWMgd2UgY291bGQgYXZvaWQgbWFsbG9jK2NvcHkuICovCisgICAgICAgIHJldGJ1ZiA9IChQeV9VQ1MxKikgUHlNZW1fTWFsbG9jKGFyZ2xlbioyKTsKKwlpZiAoIXJldGJ1ZikKKwkgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHZhbCA9IE5VTEw7ICAvKiBzaWxlbmNlIGEgY29tcGlsZXIgd2FybmluZywgYXNzaWduZWQgbGF0ZXIuICovCisgICAgfSBlbHNlIHsKKwlyZXR2YWwgPSBQeVVuaWNvZGVfTmV3KGFyZ2xlbioyLCAxMjcpOworCWlmICghcmV0dmFsKQorCSAgICByZXR1cm4gTlVMTDsKKwlyZXRidWYgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOworICAgIH0KKworICAgIC8qIG1ha2UgaGV4IHZlcnNpb24gb2Ygc3RyaW5nLCB0YWtlbiBmcm9tIHNoYW1vZHVsZS5jICovCisgICAgZm9yIChpPWo9MDsgaSA8IGFyZ2xlbjsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKKyAgICAgICAgYyA9IChhcmdidWZbaV0gPj4gNCkgJiAweGY7CisgICAgICAgIHJldGJ1ZltqKytdID0gUHlfaGV4ZGlnaXRzW2NdOworICAgICAgICBjID0gYXJnYnVmW2ldICYgMHhmOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKKyAgICB9CisKKyAgICBpZiAocmV0dXJuX2J5dGVzKSB7CisgICAgICAgIHJldHZhbCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilyZXRidWYsIGFyZ2xlbioyKTsKKyAgICAgICAgUHlNZW1fRnJlZShyZXRidWYpOworICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfc3RyaGV4KGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pCit7CisgICAgcmV0dXJuIF9QeV9zdHJoZXhfaW1wbChhcmdidWYsIGFyZ2xlbiwgMCk7Cit9CisKKy8qIFNhbWUgYXMgYWJvdmUgYnV0IHJldHVybnMgYSBieXRlcygpIGluc3RlYWQgb2Ygc3RyKCkgdG8gYXZvaWQgdGhlCisgKiBuZWVkIHRvIGRlY29kZSB0aGUgc3RyKCkgd2hlbiBieXRlcyBhcmUgbmVlZGVkLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfc3RyaGV4X2J5dGVzKGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pCit7CisgICAgcmV0dXJuIF9QeV9zdHJoZXhfaW1wbChhcmdidWYsIGFyZ2xlbiwgMSk7Cit9CmRpZmYgLS1naXQgYS9QeXRob24vcHl0aG9ucnVuLmMgYi9QeXRob24vcHl0aG9ucnVuLmMKaW5kZXggMDk2N2E0Ny4uZWJlZGQxMiAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGhvbnJ1bi5jCisrKyBiL1B5dGhvbi9weXRob25ydW4uYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImFzdC5oIgogI2luY2x1ZGUgIm1hcnNoYWwuaCIKICNpbmNsdWRlICJvc2RlZnMuaCIKKyNpbmNsdWRlIDxsb2NhbGUuaD4KIAogI2lmZGVmIEhBVkVfU0lHTkFMX0gKICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTI1LDE4ICsyNiwxMiBAQAogI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKLSNpbmNsdWRlIDxsb2NhbGUuaD4KICNpbmNsdWRlIDxsYW5naW5mby5oPgogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAjdW5kZWYgQllURQogI2luY2x1ZGUgIndpbmRvd3MuaCIKLSNkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgotI2VuZGlmCi0KLSNpZmRlZiBfX2dudV9odXJkX18KLSNkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgogI2VuZGlmCiAKIF9QeV9JREVOVElGSUVSKGJ1aWx0aW5zKTsKQEAgLTQ1LDcgKzQwLDYgQEAKIF9QeV9JREVOVElGSUVSKGxhc3RfdHJhY2ViYWNrKTsKIF9QeV9JREVOVElGSUVSKGxhc3RfdHlwZSk7CiBfUHlfSURFTlRJRklFUihsYXN0X3ZhbHVlKTsKLV9QeV9JREVOVElGSUVSKG5hbWUpOwogX1B5X0lERU5USUZJRVIocHMxKTsKIF9QeV9JREVOVElGSUVSKHBzMik7CiBfUHlfSURFTlRJRklFUihzdGRpbik7CkBAIC01Myw0MyArNDcsMTMgQEAKIF9QeV9JREVOVElGSUVSKHN0ZGVycik7CiBfUHlfc3RhdGljX3N0cmluZyhQeUlkX3N0cmluZywgIjxzdHJpbmc+Iik7CiAKLSNpZmRlZiBQeV9SRUZfREVCVUcKLXN0YXRpYwotdm9pZCBfcHJpbnRfdG90YWxfcmVmcyh2b2lkKSB7Ci0gICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7Ci0gICAgX1B5X0lERU5USUZJRVIoc2hvd3JlZmNvdW50KTsKLQotICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKLSAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuOwotICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dyZWZjb3VudCk7Ci0gICAgaWYgKHZhbHVlID09IFB5X1RydWUpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICJbJSIgUFlfRk9STUFUX1NJWkVfVCAiZCByZWZzLCAiCi0gICAgICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgYmxvY2tzXVxuIiwKLSAgICAgICAgICAgICAgICBfUHlfR2V0UmVmVG90YWwoKSwgX1B5X0dldEFsbG9jYXRlZEJsb2NrcygpKTsKLX0KLSNlbmRpZgotCi0jaWZuZGVmIFB5X1JFRl9ERUJVRwotI2RlZmluZSBQUklOVF9UT1RBTF9SRUZTKCkKLSNlbHNlIC8qIFB5X1JFRl9ERUJVRyAqLwotI2RlZmluZSBQUklOVF9UT1RBTF9SRUZTKCkgX3ByaW50X3RvdGFsX3JlZnMoKQotI2VuZGlmCi0KICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotZXh0ZXJuIHdjaGFyX3QgKlB5X0dldFBhdGgodm9pZCk7Ci0KIGV4dGVybiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyOyAvKiBGcm9tIGdyYW1pbml0LmMgKi8KIAogLyogRm9yd2FyZCAqLwotc3RhdGljIHZvaWQgaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwotc3RhdGljIGludCBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7Ci1zdGF0aWMgdm9pZCBpbml0c2l0ZSh2b2lkKTsKLXN0YXRpYyBpbnQgaW5pdHN0ZGlvKHZvaWQpOwogc3RhdGljIHZvaWQgZmx1c2hfaW8odm9pZCk7CiBzdGF0aWMgUHlPYmplY3QgKnJ1bl9tb2QobW9kX3R5LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeUNvbXBpbGVyRmxhZ3MgKiwgUHlBcmVuYSAqKTsKQEAgLTk3LDExNzcgKzYxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqKTsKIHN0YXRpYyB2b2lkIGVycl9pbnB1dChwZXJyZGV0YWlsICopOwogc3RhdGljIHZvaWQgZXJyX2ZyZWUocGVycmRldGFpbCAqKTsKLXN0YXRpYyB2b2lkIGluaXRzaWdzKHZvaWQpOwotc3RhdGljIHZvaWQgY2FsbF9weV9leGl0ZnVuY3Modm9pZCk7Ci1zdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7Ci1zdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKLWV4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOwotZXh0ZXJuIGludCBfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOwotZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7Ci1leHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKLWV4dGVybiBpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCk7Ci1leHRlcm4gdm9pZCBfUHlGYXVsdGhhbmRsZXJfRmluaSh2b2lkKTsKLWV4dGVybiB2b2lkIF9QeUhhc2hfRmluaSh2b2lkKTsKLWV4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfSW5pdCh2b2lkKTsKLWV4dGVybiBpbnQgX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKTsKLQotI2lmZGVmIFdJVEhfVEhSRUFECi1leHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqLCBQeVRocmVhZFN0YXRlICopOwotZXh0ZXJuIHZvaWQgX1B5R0lMU3RhdGVfRmluaSh2b2lkKTsKLSNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwotCi1pbnQgUHlfRGVidWdGbGFnOyAvKiBOZWVkZWQgYnkgcGFyc2VyLmMgKi8KLWludCBQeV9WZXJib3NlRmxhZzsgLyogTmVlZGVkIGJ5IGltcG9ydC5jICovCi1pbnQgUHlfUXVpZXRGbGFnOyAvKiBOZWVkZWQgYnkgc3lzbW9kdWxlLmMgKi8KLWludCBQeV9JbnRlcmFjdGl2ZUZsYWc7IC8qIE5lZWRlZCBieSBQeV9GZElzSW50ZXJhY3RpdmUoKSBiZWxvdyAqLwotaW50IFB5X0luc3BlY3RGbGFnOyAvKiBOZWVkZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gZXhpdCBhdCBTeXN0ZW1FeGl0ICovCi1pbnQgUHlfTm9TaXRlRmxhZzsgLyogU3VwcHJlc3MgJ2ltcG9ydCBzaXRlJyAqLwotaW50IFB5X0J5dGVzV2FybmluZ0ZsYWc7IC8qIFdhcm4gb24gc3RyKGJ5dGVzKSBhbmQgc3RyKGJ1ZmZlcikgKi8KLWludCBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWc7IC8qIFN1cHByZXNzIHdyaXRpbmcgYnl0ZWNvZGUgZmlsZXMgKCoucHlbY29dKSAqLwotaW50IFB5X1VzZUNsYXNzRXhjZXB0aW9uc0ZsYWcgPSAxOyAvKiBOZWVkZWQgYnkgYmx0aW5tb2R1bGUuYzogZGVwcmVjYXRlZCAqLwotaW50IFB5X0Zyb3plbkZsYWc7IC8qIE5lZWRlZCBieSBnZXRwYXRoLmMgKi8KLWludCBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWc7IC8qIGUuZy4gUFlUSE9OUEFUSCwgUFlUSE9OSE9NRSAqLwotaW50IFB5X05vVXNlclNpdGVEaXJlY3RvcnkgPSAwOyAvKiBmb3IgLXMgYW5kIHNpdGUucHkgKi8KLWludCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnID0gMDsgLyogVW5idWZmZXJlZCBiaW5hcnkgc3Rke2luLG91dCxlcnJ9ICovCi1pbnQgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMDsgLyogZm9yIC1SIGFuZCBQWVRIT05IQVNIU0VFRCAqLwotaW50IFB5X0lzb2xhdGVkRmxhZyA9IDA7IC8qIGZvciAtSSwgaXNvbGF0ZSBmcm9tIHVzZXIncyBlbnYgKi8KLQotUHlUaHJlYWRTdGF0ZSAqX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwotCi0vKiBIYWNrIHRvIGZvcmNlIGxvYWRpbmcgb2Ygb2JqZWN0IGZpbGVzICovCi1pbnQgKCpfUHlPU19teXN0cm5pY21wX2hhY2spKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90KSA9IFwKLSAgICBQeU9TX215c3RybmljbXA7IC8qIFB5dGhvbi9weXN0cmNtcC5vICovCi0KLS8qIFB5TW9kdWxlX0dldFdhcm5pbmdzTW9kdWxlIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgYXMgb2YgMi42Ci1zaW5jZSBfd2FybmluZ3MgaXMgYnVpbHRpbi4gIFRoaXMgQVBJIHNob3VsZCBub3QgYmUgdXNlZC4gKi8KLVB5T2JqZWN0ICoKLVB5TW9kdWxlX0dldFdhcm5pbmdzTW9kdWxlKHZvaWQpCi17Ci0gICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgid2FybmluZ3MiKTsKLX0KLQotc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7Ci0KLS8qIEFQSSB0byBhY2Nlc3MgdGhlIGluaXRpYWxpemVkIGZsYWcgLS0gdXNlZnVsIGZvciBlc290ZXJpYyB1c2UgKi8KLQotaW50Ci1QeV9Jc0luaXRpYWxpemVkKHZvaWQpCi17Ci0gICAgcmV0dXJuIGluaXRpYWxpemVkOwotfQotCi0vKiBIZWxwZXIgdG8gYWxsb3cgYW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uIHRvIG92ZXJyaWRlIHRoZSBub3JtYWwKLSAqIG1lY2hhbmlzbSB0aGF0IGF0dGVtcHRzIHRvIGZpZ3VyZSBvdXQgYW4gYXBwcm9wcmlhdGUgSU8gZW5jb2RpbmcKLSAqLwotCi1zdGF0aWMgY2hhciAqX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcgPSBOVUxMOwotc3RhdGljIGNoYXIgKl9QeV9TdGFuZGFyZFN0cmVhbUVycm9ycyA9IE5VTEw7Ci0KLWludAotUHlfU2V0U3RhbmRhcmRTdHJlYW1FbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotewotICAgIGlmIChQeV9Jc0luaXRpYWxpemVkKCkpIHsKLSAgICAgICAgLyogVGhpcyBpcyB0b28gbGF0ZSB0byBoYXZlIGFueSBlZmZlY3QgKi8KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBDYW4ndCBjYWxsIFB5RXJyX05vTWVtb3J5KCkgb24gZXJyb3JzLCBhcyBQeXRob24gaGFzbid0IGJlZW4KLSAgICAgKiBpbml0aWFsaXNlZCB5ZXQuCi0gICAgICoKLSAgICAgKiBIb3dldmVyLCB0aGUgcmF3IG1lbW9yeSBhbGxvY2F0b3JzIGFyZSBpbml0aWFsaXNlZCBhcHByb3ByaWF0ZWx5Ci0gICAgICogYXMgQyBzdGF0aWMgdmFyaWFibGVzLCBzbyBfUHlNZW1fUmF3U3RyZHVwIGlzIE9LIGV2ZW4gdGhvdWdoCi0gICAgICogUHlfSW5pdGlhbGl6ZSBoYXNuJ3QgYmVlbiBjYWxsZWQgeWV0LgotICAgICAqLwotICAgIGlmIChlbmNvZGluZykgewotICAgICAgICBfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyA9IF9QeU1lbV9SYXdTdHJkdXAoZW5jb2RpbmcpOwotICAgICAgICBpZiAoIV9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGVycm9ycykgewotICAgICAgICBfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBfUHlNZW1fUmF3U3RyZHVwKGVycm9ycyk7Ci0gICAgICAgIGlmICghX1B5X1N0YW5kYXJkU3RyZWFtRXJyb3JzKSB7Ci0gICAgICAgICAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAtMzsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogR2xvYmFsIGluaXRpYWxpemF0aW9ucy4gIENhbiBiZSB1bmRvbmUgYnkgUHlfRmluYWxpemUoKS4gIERvbid0Ci0gICBjYWxsIHRoaXMgdHdpY2Ugd2l0aG91dCBhbiBpbnRlcnZlbmluZyBQeV9GaW5hbGl6ZSgpIGNhbGwuICBXaGVuCi0gICBpbml0aWFsaXphdGlvbnMgZmFpbCwgYSBmYXRhbCBlcnJvciBpcyBpc3N1ZWQgYW5kIHRoZSBmdW5jdGlvbiBkb2VzCi0gICBub3QgcmV0dXJuLiAgT24gcmV0dXJuLCB0aGUgZmlyc3QgdGhyZWFkIGFuZCBpbnRlcnByZXRlciBzdGF0ZSBoYXZlCi0gICBiZWVuIGNyZWF0ZWQuCi0KLSAgIExvY2tpbmc6IHlvdSBtdXN0IGhvbGQgdGhlIGludGVycHJldGVyIGxvY2sgd2hpbGUgY2FsbGluZyB0aGlzLgotICAgKElmIHRoZSBsb2NrIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQsIHRoYXQncyBlcXVpdmFsZW50IHRvCi0gICBoYXZpbmcgdGhlIGxvY2ssIGJ1dCB5b3UgY2Fubm90IHVzZSBtdWx0aXBsZSB0aHJlYWRzLikKLQotKi8KLQotc3RhdGljIGludAotYWRkX2ZsYWcoaW50IGZsYWcsIGNvbnN0IGNoYXIgKmVudnMpCi17Ci0gICAgaW50IGVudiA9IGF0b2koZW52cyk7Ci0gICAgaWYgKGZsYWcgPCBlbnYpCi0gICAgICAgIGZsYWcgPSBlbnY7Ci0gICAgaWYgKGZsYWcgPCAxKQotICAgICAgICBmbGFnID0gMTsKLSAgICByZXR1cm4gZmxhZzsKLX0KLQotc3RhdGljIGNoYXIqCi1nZXRfY29kZWNfbmFtZShjb25zdCBjaGFyICplbmNvZGluZykKLXsKLSAgICBjaGFyICpuYW1lX3V0ZjgsICpuYW1lX3N0cjsKLSAgICBQeU9iamVjdCAqY29kZWMsICpuYW1lID0gTlVMTDsKLQotICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKLSAgICBpZiAoIWNvZGVjKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29kZWMsICZQeUlkX25hbWUpOwotICAgIFB5X0NMRUFSKGNvZGVjKTsKLSAgICBpZiAoIW5hbWUpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBuYW1lX3V0ZjggPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgIGlmIChuYW1lX3V0ZjggPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBuYW1lX3N0ciA9IF9QeU1lbV9SYXdTdHJkdXAobmFtZV91dGY4KTsKLSAgICBQeV9ERUNSRUYobmFtZSk7Ci0gICAgaWYgKG5hbWVfc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBuYW1lX3N0cjsKLQotZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihjb2RlYyk7Ci0gICAgUHlfWERFQ1JFRihuYW1lKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNoYXIqCi1nZXRfbG9jYWxlX2VuY29kaW5nKHZvaWQpCi17Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGNoYXIgY29kZXBhZ2VbMTAwXTsKLSAgICBQeU9TX3NucHJpbnRmKGNvZGVwYWdlLCBzaXplb2YoY29kZXBhZ2UpLCAiY3AlZCIsIEdldEFDUCgpKTsKLSAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXBhZ2UpOwotI2VsaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKLSAgICBjaGFyKiBjb2Rlc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7Ci0gICAgaWYgKCFjb2Rlc2V0IHx8IGNvZGVzZXRbMF0gPT0gJ1wwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNPREVTRVQgaXMgbm90IHNldCBvciBlbXB0eSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOwotI2Vsc2UKLSAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOwotICAgIHJldHVybiBOVUxMOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkCi1pbXBvcnRfaW5pdChQeUludGVycHJldGVyU3RhdGUgKmludGVycCwgUHlPYmplY3QgKnN5c21vZCkKLXsKLSAgICBQeU9iamVjdCAqaW1wb3J0bGliOwotICAgIFB5T2JqZWN0ICppbXBtb2Q7Ci0gICAgUHlPYmplY3QgKnN5c19tb2R1bGVzOwotICAgIFB5T2JqZWN0ICp2YWx1ZTsKLQotICAgIC8qIEltcG9ydCBfaW1wb3J0bGliIHRocm91Z2ggaXRzIGZyb3plbiB2ZXJzaW9uLCBfZnJvemVuX2ltcG9ydGxpYi4gKi8KLSAgICBpZiAoUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKCJfZnJvemVuX2ltcG9ydGxpYiIpIDw9IDApIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7Ci0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliICMgZnJvemVuXG4iKTsKLSAgICB9Ci0gICAgaW1wb3J0bGliID0gUHlJbXBvcnRfQWRkTW9kdWxlKCJfZnJvemVuX2ltcG9ydGxpYiIpOwotICAgIGlmIChpbXBvcnRsaWIgPT0gTlVMTCkgewotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjb3VsZG4ndCBnZXQgX2Zyb3plbl9pbXBvcnRsaWIgZnJvbSAiCi0gICAgICAgICAgICAgICAgICAgICAgInN5cy5tb2R1bGVzIik7Ci0gICAgfQotICAgIGludGVycC0+aW1wb3J0bGliID0gaW1wb3J0bGliOwotICAgIFB5X0lOQ1JFRihpbnRlcnAtPmltcG9ydGxpYik7Ci0KLSAgICAvKiBJbnN0YWxsIF9pbXBvcnRsaWIgYXMgX19pbXBvcnRfXyAqLwotICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKLSAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IGltcCIpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeV9WZXJib3NlRmxhZykgewotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCBpbXAgIyBidWlsdGluXG4iKTsKLSAgICB9Ci0gICAgc3lzX21vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7Ci0gICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IHN5cyAjIGJ1aWx0aW5cbiIpOwotICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoc3lzX21vZHVsZXMsICJfaW1wIiwgaW1wbW9kKSA8IDApIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2F2ZSBfaW1wIHRvIHN5cy5tb2R1bGVzIik7Ci0gICAgfQotCi0gICAgdmFsdWUgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGltcG9ydGxpYiwgIl9pbnN0YWxsIiwgIk9PIiwgc3lzbW9kLCBpbXBtb2QpOwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGltcG9ydGxpYiBpbnN0YWxsIGZhaWxlZCIpOwotICAgIH0KLSAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgIFB5X0RFQ1JFRihpbXBtb2QpOwotCi0gICAgX1B5SW1wb3J0WmlwX0luaXQoKTsKLX0KLQotCi12b2lkCi1fUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50IGluc3RhbGxfc2lncywgaW50IGluc3RhbGxfaW1wb3J0bGliKQotewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKLSAgICBQeU9iamVjdCAqYmltb2QsICpzeXNtb2QsICpwc3RkZXJyOwotICAgIGNoYXIgKnA7Ci0gICAgZXh0ZXJuIHZvaWQgX1B5X1JlYWR5VHlwZXModm9pZCk7Ci0KLSAgICBpZiAoaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpbml0aWFsaXplZCA9IDE7Ci0gICAgX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwotCi0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoSEFWRV9TRVRMT0NBTEUpCi0gICAgLyogU2V0IHVwIHRoZSBMQ19DVFlQRSBsb2NhbGUsIHNvIHdlIGNhbiBvYnRhaW4KLSAgICAgICB0aGUgbG9jYWxlJ3MgY2hhcnNldCB3aXRob3V0IGhhdmluZyB0byBzd2l0Y2gKLSAgICAgICBsb2NhbGVzLiAqLwotICAgIHNldGxvY2FsZShMQ19DVFlQRSwgIiIpOwotI2VuZGlmCi0KLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkRFQlVHIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0RlYnVnRmxhZyA9IGFkZF9mbGFnKFB5X0RlYnVnRmxhZywgcCk7Ci0gICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05WRVJCT1NFIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X1ZlcmJvc2VGbGFnID0gYWRkX2ZsYWcoUHlfVmVyYm9zZUZsYWcsIHApOwotICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OT1BUSU1JWkUiKSkgJiYgKnAgIT0gJ1wwJykKLSAgICAgICAgUHlfT3B0aW1pemVGbGFnID0gYWRkX2ZsYWcoUHlfT3B0aW1pemVGbGFnLCBwKTsKLSAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkRPTlRXUklURUJZVEVDT0RFIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZyA9IGFkZF9mbGFnKFB5X0RvbnRXcml0ZUJ5dGVjb2RlRmxhZywgcCk7Ci0gICAgLyogVGhlIHZhcmlhYmxlIGlzIG9ubHkgdGVzdGVkIGZvciBleGlzdGVuY2UgaGVyZTsgX1B5UmFuZG9tX0luaXQgd2lsbAotICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLwotICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKLSAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gYWRkX2ZsYWcoUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnLCBwKTsKLQotICAgIF9QeVJhbmRvbV9Jbml0KCk7Ci0KLSAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7Ci0gICAgaWYgKGludGVycCA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIGZpcnN0IGludGVycHJldGVyIik7Ci0KLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05ldyhpbnRlcnApOwotICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBmaXJzdCB0aHJlYWQiKTsKLSAgICAodm9pZCkgUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplIGJlY2F1c2UKLSAgICAgICBkZXN0cm95aW5nIHRoZSBHSUwgbWlnaHQgZmFpbCB3aGVuIGl0IGlzIGJlaW5nIHJlZmVyZW5jZWQgZnJvbQotICAgICAgIGFub3RoZXIgcnVubmluZyB0aHJlYWQgKHNlZSBpc3N1ZSAjOTkwMSkuCi0gICAgICAgSW5zdGVhZCB3ZSBkZXN0cm95IHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgR0lMIGhlcmUsIHdoaWNoIGVuc3VyZXMKLSAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZSBtdWx0aXBsZSB0aW1lcy4gKi8KLSAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7Ci0KLSAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KLSAgICBfUHlHSUxTdGF0ZV9Jbml0KGludGVycCwgdHN0YXRlKTsKLSNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwotCi0gICAgX1B5X1JlYWR5VHlwZXMoKTsKLQotICAgIGlmICghX1B5RnJhbWVfSW5pdCgpKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0IGZyYW1lcyIpOwotCi0gICAgaWYgKCFfUHlMb25nX0luaXQoKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBsb25ncyIpOwotCi0gICAgaWYgKCFQeUJ5dGVBcnJheV9Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXQgYnl0ZWFycmF5Iik7Ci0KLSAgICBpZiAoIV9QeUZsb2F0X0luaXQoKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdCBmbG9hdCIpOwotCi0gICAgaW50ZXJwLT5tb2R1bGVzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXMgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgbWFrZSBtb2R1bGVzIGRpY3Rpb25hcnkiKTsKLQotICAgIC8qIEluaXQgVW5pY29kZSBpbXBsZW1lbnRhdGlvbjsgcmVsaWVzIG9uIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIGlmIChfUHlVbmljb2RlX0luaXQoKSA8IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdW5pY29kZSIpOwotICAgIGlmIChfUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0KCkgPCAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN0cnVjdHNlcSIpOwotCi0gICAgYmltb2QgPSBfUHlCdWlsdGluX0luaXQoKTsKLSAgICBpZiAoYmltb2QgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBidWlsdGlucyBtb2R1bGVzIik7Ci0gICAgX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbihiaW1vZCwgImJ1aWx0aW5zIik7Ci0gICAgaW50ZXJwLT5idWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYmltb2QpOwotICAgIGlmIChpbnRlcnAtPmJ1aWx0aW5zID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgYnVpbHRpbnMgZGljdCIpOwotICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKLQotICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCi0gICAgX1B5RXhjX0luaXQoYmltb2QpOwotCi0gICAgc3lzbW9kID0gX1B5U3lzX0luaXQoKTsKLSAgICBpZiAoc3lzbW9kID09IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIik7Ci0gICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOwotICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgZGljdCIpOwotICAgIFB5X0lOQ1JFRihpbnRlcnAtPnN5c2RpY3QpOwotICAgIF9QeUltcG9ydF9GaXh1cEJ1aWx0aW4oc3lzbW9kLCAic3lzIik7Ci0gICAgUHlTeXNfU2V0UGF0aChQeV9HZXRQYXRoKCkpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGludGVycC0+c3lzZGljdCwgIm1vZHVsZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+bW9kdWxlcyk7Ci0KLSAgICAvKiBTZXQgdXAgYSBwcmVsaW1pbmFyeSBzdGRlcnIgcHJpbnRlciB1bnRpbCB3ZSBoYXZlIGVub3VnaAotICAgICAgIGluZnJhc3RydWN0dXJlIGZvciB0aGUgaW8gbW9kdWxlIGluIHBsYWNlLiAqLwotICAgIHBzdGRlcnIgPSBQeUZpbGVfTmV3U3RkUHJpbnRlcihmaWxlbm8oc3RkZXJyKSk7Ci0gICAgaWYgKHBzdGRlcnIgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3Qgc2V0IHByZWxpbWluYXJ5IHN0ZGVyciIpOwotICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHBzdGRlcnIpOwotICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRlcnJfXyIsIHBzdGRlcnIpOwotICAgIFB5X0RFQ1JFRihwc3RkZXJyKTsKLQotICAgIF9QeUltcG9ydF9Jbml0KCk7Ci0KLSAgICBfUHlJbXBvcnRIb29rc19Jbml0KCk7Ci0KLSAgICAvKiBJbml0aWFsaXplIF93YXJuaW5ncy4gKi8KLSAgICBfUHlXYXJuaW5nc19Jbml0KCk7Ci0KLSAgICBpZiAoIWluc3RhbGxfaW1wb3J0bGliKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7Ci0KLSAgICAvKiBpbml0aWFsaXplIHRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlICovCi0gICAgaWYgKF9QeUZhdWx0aGFuZGxlcl9Jbml0KCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgZmF1bHRoYW5kbGVyIik7Ci0KLSAgICBfUHlUaW1lX0luaXQoKTsKLQotICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogdW5hYmxlIHRvIGxvYWQgdGhlIGZpbGUgc3lzdGVtIGNvZGVjIik7Ci0KLSAgICBpZiAoaW5zdGFsbF9zaWdzKQotICAgICAgICBpbml0c2lncygpOyAvKiBTaWduYWwgaGFuZGxpbmcgc3R1ZmYsIGluY2x1ZGluZyBpbml0aW50cigpICovCi0KLSAgICBpZiAoX1B5VHJhY2VNYWxsb2NfSW5pdCgpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSB0cmFjZW1hbGxvYyIpOwotCi0gICAgaW5pdG1haW4oaW50ZXJwKTsgLyogTW9kdWxlIF9fbWFpbl9fICovCi0gICAgaWYgKGluaXRzdGRpbygpIDwgMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigKLSAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7Ci0KLSAgICAvKiBJbml0aWFsaXplIHdhcm5pbmdzLiAqLwotICAgIGlmIChQeVN5c19IYXNXYXJuT3B0aW9ucygpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoIndhcm5pbmdzIik7Ci0gICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkgewotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICInaW1wb3J0IHdhcm5pbmdzJyBmYWlsZWQ7IHRyYWNlYmFjazpcbiIpOwotICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICAgICAgfQotICAgICAgICBQeV9YREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7Ci0gICAgfQotCi0gICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQotICAgICAgICBpbml0c2l0ZSgpOyAvKiBNb2R1bGUgc2l0ZSAqLwotfQotCi12b2lkCi1QeV9Jbml0aWFsaXplRXgoaW50IGluc3RhbGxfc2lncykKLXsKLSAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW5zdGFsbF9zaWdzLCAxKTsKLX0KLQotdm9pZAotUHlfSW5pdGlhbGl6ZSh2b2lkKQotewotICAgIFB5X0luaXRpYWxpemVFeCgxKTsKLX0KLQotCi0jaWZkZWYgQ09VTlRfQUxMT0NTCi1leHRlcm4gdm9pZCBkdW1wX2NvdW50cyhGSUxFKik7Ci0jZW5kaWYKLQotLyogRmx1c2ggc3Rkb3V0IGFuZCBzdGRlcnIgKi8KLQotc3RhdGljIGludAotZmlsZV9pc19jbG9zZWQoUHlPYmplY3QgKmZvYmopCi17Ci0gICAgaW50IHI7Ci0gICAgUHlPYmplY3QgKnRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZm9iaiwgImNsb3NlZCIpOwotICAgIGlmICh0bXAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgciA9IFB5T2JqZWN0X0lzVHJ1ZSh0bXApOwotICAgIFB5X0RFQ1JFRih0bXApOwotICAgIGlmIChyIDwgMCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICByZXR1cm4gciA+IDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1mbHVzaF9zdGRfZmlsZXModm9pZCkKLXsKLSAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwotICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQotICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgfQotCi0gICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgfQotfQotCi0vKiBVbmRvIHRoZSBlZmZlY3Qgb2YgUHlfSW5pdGlhbGl6ZSgpLgotCi0gICBCZXdhcmU6IGlmIG11bHRpcGxlIGludGVycHJldGVyIGFuZC9vciB0aHJlYWQgc3RhdGVzIGV4aXN0LCB0aGVzZQotICAgYXJlIG5vdCB3aXBlZCBvdXQ7IG9ubHkgdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBpbnRlcnByZXRlciBzdGF0ZQotICAgYXJlIGRlbGV0ZWQuICBCdXQgc2luY2UgZXZlcnl0aGluZyBlbHNlIGlzIGRlbGV0ZWQsIHRob3NlIG90aGVyCi0gICBpbnRlcnByZXRlciBhbmQgdGhyZWFkIHN0YXRlcyBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQuCi0KLSAgIChYWFggV2Ugc2hvdWxkIGRvIGJldHRlciwgZS5nLiB3aXBlIG91dCBhbGwgaW50ZXJwcmV0ZXJzIGFuZAotICAgdGhyZWFkcy4pCi0KLSAgIExvY2tpbmc6IGFzIGFib3ZlLgotCi0qLwotCi12b2lkCi1QeV9GaW5hbGl6ZSh2b2lkKQotewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKLQotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bigpOwotCi0gICAgLyogVGhlIGludGVycHJldGVyIGlzIHN0aWxsIGVudGlyZWx5IGludGFjdCBhdCB0aGlzIHBvaW50LCBhbmQgdGhlCi0gICAgICogZXhpdCBmdW5jcyBtYXkgYmUgcmVseWluZyBvbiB0aGF0LiAgSW4gcGFydGljdWxhciwgaWYgc29tZSB0aHJlYWQKLSAgICAgKiBvciBleGl0IGZ1bmMgaXMgc3RpbGwgd2FpdGluZyB0byBkbyBhbiBpbXBvcnQsIHRoZSBpbXBvcnQgbWFjaGluZXJ5Ci0gICAgICogZXhwZWN0cyBQeV9Jc0luaXRpYWxpemVkKCkgdG8gcmV0dXJuIHRydWUuICBTbyBkb24ndCBzYXkgdGhlCi0gICAgICogaW50ZXJwcmV0ZXIgaXMgdW5pbml0aWFsaXplZCB1bnRpbCBhZnRlciB0aGUgZXhpdCBmdW5jcyBoYXZlIHJ1bi4KLSAgICAgKiBOb3RlIHRoYXQgVGhyZWFkaW5nLnB5IHVzZXMgYW4gZXhpdCBmdW5jIHRvIGRvIGEgam9pbiBvbiBhbGwgdGhlCi0gICAgICogdGhyZWFkcyBjcmVhdGVkIHRocnUgaXQsIHNvIHRoaXMgYWxzbyBwcm90ZWN0cyBwZW5kaW5nIGltcG9ydHMgaW4KLSAgICAgKiB0aGUgdGhyZWFkcyBjcmVhdGVkIHZpYSBUaHJlYWRpbmcuCi0gICAgICovCi0gICAgY2FsbF9weV9leGl0ZnVuY3MoKTsKLQotICAgIC8qIEdldCBjdXJyZW50IHRocmVhZCBzdGF0ZSBhbmQgaW50ZXJwcmV0ZXIgcG9pbnRlciAqLwotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7Ci0KLSAgICAvKiBSZW1haW5pbmcgdGhyZWFkcyAoZS5nLiBkYWVtb24gdGhyZWFkcykgd2lsbCBhdXRvbWF0aWNhbGx5IGV4aXQKLSAgICAgICBhZnRlciB0YWtpbmcgdGhlIEdJTCAoaW4gUHlFdmFsX1Jlc3RvcmVUaHJlYWQoKSkuICovCi0gICAgX1B5X0ZpbmFsaXppbmcgPSB0c3RhdGU7Ci0gICAgaW5pdGlhbGl6ZWQgPSAwOwotCi0gICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOwotCi0gICAgLyogRGlzYWJsZSBzaWduYWwgaGFuZGxpbmcgKi8KLSAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzKCk7Ci0KLSAgICAvKiBDb2xsZWN0IGdhcmJhZ2UuICBUaGlzIG1heSBjYWxsIGZpbmFsaXplcnM7IGl0J3MgbmljZSB0byBjYWxsIHRoZXNlCi0gICAgICogYmVmb3JlIGFsbCBtb2R1bGVzIGFyZSBkZXN0cm95ZWQuCi0gICAgICogWFhYIElmIGEgX19kZWxfXyBvciB3ZWFrcmVmIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCBoZXJlLCBhbmQgdHJpZXMgdG8KLSAgICAgKiBYWFggaW1wb3J0IGEgbW9kdWxlLCBiYWQgdGhpbmdzIGNhbiBoYXBwZW4sIGJlY2F1c2UgUHl0aG9uIG5vCi0gICAgICogWFhYIGxvbmdlciBiZWxpZXZlcyBpdCdzIGluaXRpYWxpemVkLgotICAgICAqIFhYWCAgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBJbnRlcnByZXRlciBub3QgaW5pdGlhbGl6ZWQgKHZlcnNpb24gbWlzbWF0Y2g/KQotICAgICAqIFhYWCBpcyBlYXN5IHRvIHByb3Zva2UgdGhhdCB3YXkuICBJJ3ZlIGFsc28gc2VlbiwgZS5nLiwKLSAgICAgKiBYWFggICAgIEV4Y2VwdGlvbiBleGNlcHRpb25zLkltcG9ydEVycm9yOiAnTm8gbW9kdWxlIG5hbWVkIHNoYScKLSAgICAgKiBYWFggICAgICAgICBpbiA8ZnVuY3Rpb24gY2FsbGJhY2sgYXQgMHgwMDhGNTcxOD4gaWdub3JlZAotICAgICAqIFhYWCBidXQgSSdtIHVuY2xlYXIgb24gZXhhY3RseSBob3cgdGhhdCBvbmUgaGFwcGVucy4gIEluIGFueSBjYXNlLAotICAgICAqIFhYWCBJIGhhdmVuJ3Qgc2VlbiBhIHJlYWwtbGlmZSByZXBvcnQgb2YgZWl0aGVyIG9mIHRoZXNlLgotICAgICAqLwotICAgIFB5R0NfQ29sbGVjdCgpOwotI2lmZGVmIENPVU5UX0FMTE9DUwotICAgIC8qIFdpdGggQ09VTlRfQUxMT0NTLCBpdCBoZWxwcyB0byBydW4gR0MgbXVsdGlwbGUgdGltZXM6Ci0gICAgICAgZWFjaCBjb2xsZWN0aW9uIG1pZ2h0IHJlbGVhc2Ugc29tZSB0eXBlcyBmcm9tIHRoZSB0eXBlCi0gICAgICAgbGlzdCwgc28gdGhleSBiZWNvbWUgZ2FyYmFnZS4gKi8KLSAgICB3aGlsZSAoUHlHQ19Db2xsZWN0KCkgPiAwKQotICAgICAgICAvKiBub3RoaW5nICovOwotI2VuZGlmCi0gICAgLyogRGVzdHJveSBhbGwgbW9kdWxlcyAqLwotICAgIFB5SW1wb3J0X0NsZWFudXAoKTsKLQotICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKGFnYWluLCBpbiBjYXNlIG1vcmUgd2FzIHByaW50ZWQpICovCi0gICAgZmx1c2hfc3RkX2ZpbGVzKCk7Ci0KLSAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5Ci0gICAgICogY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgotICAgICAqIFhYWCBUaGlzIGlzIGRpc2FibGVkIGJlY2F1c2UgaXQgY2F1c2VkIHRvbyBtYW55IHByb2JsZW1zLiAgSWYKLSAgICAgKiBYWFggYSBfX2RlbF9fIG9yIHdlYWtyZWYgY2FsbGJhY2sgdHJpZ2dlcnMgaGVyZSwgUHl0aG9uIGNvZGUgaGFzCi0gICAgICogWFhYIGEgaGFyZCB0aW1lIHJ1bm5pbmcsIGJlY2F1c2UgZXZlbiB0aGUgc3lzIG1vZHVsZSBoYXMgYmVlbgotICAgICAqIFhYWCBjbGVhcmVkIG91dCAoc3lzLnN0ZG91dCBpcyBnb25lLCBzeXMuZXhjZXB0aG9vayBpcyBnb25lLCBldGMpLgotICAgICAqIFhYWCBPbmUgc3ltcHRvbSBpcyBhIHNlcXVlbmNlIG9mIGluZm9ybWF0aW9uLWZyZWUgbWVzc2FnZXMKLSAgICAgKiBYWFggY29taW5nIGZyb20gdGhyZWFkcyAoaWYgYSBfX2RlbF9fIG9yIGNhbGxiYWNrIGlzIGludm9rZWQsCi0gICAgICogWFhYIG90aGVyIHRocmVhZHMgY2FuIGV4ZWN1dGUgdG9vLCBhbmQgYW55IGV4Y2VwdGlvbiB0aGV5IGVuY291bnRlcgotICAgICAqIFhYWCB0cmlnZ2VycyBhIGNvbWVkeSBvZiBlcnJvcnMgYXMgc3Vic3lzdGVtIGFmdGVyIHN1YnN5c3RlbQotICAgICAqIFhYWCBmYWlscyB0byBmaW5kIHdoYXQgaXQgKmV4cGVjdHMqIHRvIGZpbmQgaW4gc3lzIHRvIGhlbHAgcmVwb3J0Ci0gICAgICogWFhYIHRoZSBleGNlcHRpb24gYW5kIGNvbnNlcXVlbnQgdW5leHBlY3RlZCBmYWlsdXJlcykuICBJJ3ZlIGFsc28KLSAgICAgKiBYWFggc2VlbiBzZWdmYXVsdHMgdGhlbiwgYWZ0ZXIgYWRkaW5nIHByaW50IHN0YXRlbWVudHMgdG8gdGhlCi0gICAgICogWFhYIFB5dGhvbiBjb2RlIGdldHRpbmcgY2FsbGVkLgotICAgICAqLwotI2lmIDAKLSAgICBQeUdDX0NvbGxlY3QoKTsKLSNlbmRpZgotCi0gICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKLSAgICAgICBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdHJhY2VtYWxsb2MgaW4gb2JqZWN0cyBkZXN0cnVjdG9yLiAqLwotICAgIF9QeVRyYWNlTWFsbG9jX0ZpbmkoKTsKLQotICAgIC8qIERlc3Ryb3kgdGhlIGRhdGFiYXNlIHVzZWQgYnkgX1B5SW1wb3J0X3tGaXh1cCxGaW5kfUV4dGVuc2lvbiAqLwotICAgIF9QeUltcG9ydF9GaW5pKCk7Ci0KLSAgICAvKiBDbGVhbnVwIHR5cGVvYmplY3QuYydzIGludGVybmFsIGNhY2hlcy4gKi8KLSAgICBfUHlUeXBlX0ZpbmkoKTsKLQotICAgIC8qIHVubG9hZCBmYXVsdGhhbmRsZXIgbW9kdWxlICovCi0gICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKLQotICAgIC8qIERlYnVnZ2luZyBzdHVmZiAqLwotI2lmZGVmIENPVU5UX0FMTE9DUwotICAgIGR1bXBfY291bnRzKHN0ZG91dCk7Ci0jZW5kaWYKLSAgICAvKiBkdW1wIGhhc2ggc3RhdHMgKi8KLSAgICBfUHlIYXNoX0ZpbmkoKTsKLQotICAgIFBSSU5UX1RPVEFMX1JFRlMoKTsKLQotI2lmZGVmIFB5X1RSQUNFX1JFRlMKLSAgICAvKiBEaXNwbGF5IGFsbCBvYmplY3RzIHN0aWxsIGFsaXZlIC0tIHRoaXMgY2FuIGludm9rZSBhcmJpdHJhcnkKLSAgICAgKiBfX3JlcHJfXyBvdmVycmlkZXMsIHNvIHJlcXVpcmVzIGEgbW9zdGx5LWludGFjdCBpbnRlcnByZXRlci4KLSAgICAgKiBBbGFzLCBhIGxvdCBvZiBzdHVmZiBtYXkgc3RpbGwgYmUgYWxpdmUgbm93IHRoYXQgd2lsbCBiZSBjbGVhbmVkCi0gICAgICogdXAgbGF0ZXIuCi0gICAgICovCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKLSAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlcyhzdGRlcnIpOwotI2VuZGlmIC8qIFB5X1RSQUNFX1JFRlMgKi8KLQotICAgIC8qIENsZWFyIGludGVycHJldGVyIHN0YXRlIGFuZCBhbGwgdGhyZWFkIHN0YXRlcy4gKi8KLSAgICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoaW50ZXJwKTsKLQotICAgIC8qIE5vdyB3ZSBkZWNyZWYgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzLiAgQWZ0ZXIgdGhpcyBwb2ludCBub3RoaW5nCi0gICAgICAgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoYXQncyBva2F5LCBiZWNhdXNlIGVhY2ggRmluaSgpIG1ldGhvZAotICAgICAgIGJlbG93IGhhcyBiZWVuIGNoZWNrZWQgdG8gbWFrZSBzdXJlIG5vIGV4Y2VwdGlvbnMgYXJlIGV2ZXIKLSAgICAgICByYWlzZWQuCi0gICAgKi8KLQotICAgIF9QeUV4Y19GaW5pKCk7Ci0KLSAgICAvKiBTdW5kcnkgZmluYWxpemVycyAqLwotICAgIFB5TWV0aG9kX0ZpbmkoKTsKLSAgICBQeUZyYW1lX0ZpbmkoKTsKLSAgICBQeUNGdW5jdGlvbl9GaW5pKCk7Ci0gICAgUHlUdXBsZV9GaW5pKCk7Ci0gICAgUHlMaXN0X0ZpbmkoKTsKLSAgICBQeVNldF9GaW5pKCk7Ci0gICAgUHlCeXRlc19GaW5pKCk7Ci0gICAgUHlCeXRlQXJyYXlfRmluaSgpOwotICAgIFB5TG9uZ19GaW5pKCk7Ci0gICAgUHlGbG9hdF9GaW5pKCk7Ci0gICAgUHlEaWN0X0ZpbmkoKTsKLSAgICBQeVNsaWNlX0ZpbmkoKTsKLSAgICBfUHlHQ19GaW5pKCk7Ci0gICAgX1B5UmFuZG9tX0ZpbmkoKTsKLQotICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwotICAgIF9QeVVuaWNvZGVfRmluaSgpOwotCi0gICAgLyogcmVzZXQgZmlsZSBzeXN0ZW0gZGVmYXVsdCBlbmNvZGluZyAqLwotICAgIGlmICghUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKSB7Ci0gICAgICAgIFB5TWVtX1Jhd0ZyZWUoKGNoYXIqKVB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwotICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsKLSAgICB9Ci0KLSAgICAvKiBYWFggU3RpbGwgYWxsb2NhdGVkOgotICAgICAgIC0gdmFyaW91cyBzdGF0aWMgYWQtaG9jIHBvaW50ZXJzIHRvIGludGVybmVkIHN0cmluZ3MKLSAgICAgICAtIGludCBhbmQgZmxvYXQgZnJlZSBsaXN0IGJsb2NrcwotICAgICAgIC0gd2hhdGV2ZXIgdmFyaW91cyBtb2R1bGVzIGFuZCBsaWJyYXJpZXMgYWxsb2NhdGUKLSAgICAqLwotCi0gICAgUHlHcmFtbWFyX1JlbW92ZUFjY2VsZXJhdG9ycygmX1B5UGFyc2VyX0dyYW1tYXIpOwotCi0gICAgLyogQ2xlYW51cCBhdXRvLXRocmVhZC1zdGF0ZSAqLwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgX1B5R0lMU3RhdGVfRmluaSgpOwotI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCi0KLSAgICAvKiBEZWxldGUgY3VycmVudCB0aHJlYWQuIEFmdGVyIHRoaXMsIG1hbnkgQyBBUEkgY2FsbHMgYmVjb21lIGNyYXNoeS4gKi8KLSAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwotCi0jaWZkZWYgUHlfVFJBQ0VfUkVGUwotICAgIC8qIERpc3BsYXkgYWRkcmVzc2VzICgmIHJlZmNudHMpIG9mIGFsbCBvYmplY3RzIHN0aWxsIGFsaXZlLgotICAgICAqIEFuIGFkZHJlc3MgY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgcmVwciBvZiB0aGUgb2JqZWN0LCBwcmludGVkCi0gICAgICogYWJvdmUgYnkgX1B5X1ByaW50UmVmZXJlbmNlcy4KLSAgICAgKi8KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05EVU1QUkVGUyIpKQotICAgICAgICBfUHlfUHJpbnRSZWZlcmVuY2VBZGRyZXNzZXMoc3RkZXJyKTsKLSNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwotI2VuZGlmCi0KLSAgICBjYWxsX2xsX2V4aXRmdW5jcygpOwotfQotCi0vKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCwgYW5kIHJldHVybiB0aGUKLSAgIG5ldyB0aHJlYWQuICBUaGlzIHJlcXVpcmVzIHRoYXQgUHlfSW5pdGlhbGl6ZSgpIGhhcyBiZWVuIGNhbGxlZAotICAgZmlyc3QuCi0KLSAgIFVuc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbiB5aWVsZHMgYSBOVUxMIHBvaW50ZXIuICBOb3RlIHRoYXQgKm5vKgotICAgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBldmVuIGluIHRoaXMgY2FzZSAtLSB0aGUKLSAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBoZWxkIGluIHRoZSB0aHJlYWQsIGFuZCB0aGVyZSBpcyBubwotICAgdGhyZWFkLgotCi0gICBMb2NraW5nOiBhcyBhYm92ZS4KLQotKi8KLQotUHlUaHJlYWRTdGF0ZSAqCi1QeV9OZXdJbnRlcnByZXRlcih2b2lkKQotewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgKnNhdmVfdHN0YXRlOwotICAgIFB5T2JqZWN0ICpiaW1vZCwgKnN5c21vZDsKLQotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X05ld0ludGVycHJldGVyOiBjYWxsIFB5X0luaXRpYWxpemUgZmlyc3QiKTsKLQotICAgIGludGVycCA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcoKTsKLSAgICBpZiAoaW50ZXJwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXcoaW50ZXJwKTsKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBzYXZlX3RzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwotCi0gICAgLyogWFhYIFRoZSBmb2xsb3dpbmcgaXMgbGF4IGluIGVycm9yIGNoZWNraW5nICovCi0KLSAgICBpbnRlcnAtPm1vZHVsZXMgPSBQeURpY3RfTmV3KCk7Ci0KLSAgICBiaW1vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigiYnVpbHRpbnMiKTsKLSAgICBpZiAoYmltb2QgIT0gTlVMTCkgewotICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zID0gUHlNb2R1bGVfR2V0RGljdChiaW1vZCk7Ci0gICAgICAgIGlmIChpbnRlcnAtPmJ1aWx0aW5zID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKLSAgICAgICAgUHlfSU5DUkVGKGludGVycC0+YnVpbHRpbnMpOwotICAgIH0KLQotICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCi0gICAgX1B5RXhjX0luaXQoYmltb2QpOwotCi0gICAgc3lzbW9kID0gX1B5SW1wb3J0X0ZpbmRCdWlsdGluKCJzeXMiKTsKLSAgICBpZiAoYmltb2QgIT0gTlVMTCAmJiBzeXNtb2QgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqcHN0ZGVycjsKLQotICAgICAgICBpbnRlcnAtPnN5c2RpY3QgPSBQeU1vZHVsZV9HZXREaWN0KHN5c21vZCk7Ci0gICAgICAgIGlmIChpbnRlcnAtPnN5c2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gaGFuZGxlX2Vycm9yOwotICAgICAgICBQeV9JTkNSRUYoaW50ZXJwLT5zeXNkaWN0KTsKLSAgICAgICAgUHlTeXNfU2V0UGF0aChQeV9HZXRQYXRoKCkpOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhpbnRlcnAtPnN5c2RpY3QsICJtb2R1bGVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5tb2R1bGVzKTsKLSAgICAgICAgLyogU2V0IHVwIGEgcHJlbGltaW5hcnkgc3RkZXJyIHByaW50ZXIgdW50aWwgd2UgaGF2ZSBlbm91Z2gKLSAgICAgICAgICAgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBpbyBtb2R1bGUgaW4gcGxhY2UuICovCi0gICAgICAgIHBzdGRlcnIgPSBQeUZpbGVfTmV3U3RkUHJpbnRlcihmaWxlbm8oc3RkZXJyKSk7Ci0gICAgICAgIGlmIChwc3RkZXJyID09IE5VTEwpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzZXQgcHJlbGltaW5hcnkgc3RkZXJyIik7Ci0gICAgICAgIF9QeVN5c19TZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIsIHBzdGRlcnIpOwotICAgICAgICBQeVN5c19TZXRPYmplY3QoIl9fc3RkZXJyX18iLCBwc3RkZXJyKTsKLSAgICAgICAgUHlfREVDUkVGKHBzdGRlcnIpOwotCi0gICAgICAgIF9QeUltcG9ydEhvb2tzX0luaXQoKTsKLQotICAgICAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7Ci0KLSAgICAgICAgaWYgKGluaXRmc2VuY29kaW5nKGludGVycCkgPCAwKQotICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7Ci0KLSAgICAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwotICAgICAgICBpbml0bWFpbihpbnRlcnApOwotICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCi0gICAgICAgICAgICBpbml0c2l0ZSgpOwotICAgIH0KLQotICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRzdGF0ZTsKLQotaGFuZGxlX2Vycm9yOgotICAgIC8qIE9vcHMsIGl0IGRpZG4ndCB3b3JrLiAgVW5kbyBpdCBhbGwuICovCi0KLSAgICBQeUVycl9QcmludEV4KDApOwotICAgIFB5VGhyZWFkU3RhdGVfQ2xlYXIodHN0YXRlKTsKLSAgICBQeVRocmVhZFN0YXRlX1N3YXAoc2F2ZV90c3RhdGUpOwotICAgIFB5VGhyZWFkU3RhdGVfRGVsZXRlKHRzdGF0ZSk7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwotCi0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qIERlbGV0ZSBhbiBpbnRlcnByZXRlciBhbmQgaXRzIGxhc3QgdGhyZWFkLiAgVGhpcyByZXF1aXJlcyB0aGF0IHRoZQotICAgZ2l2ZW4gdGhyZWFkIHN0YXRlIGlzIGN1cnJlbnQsIHRoYXQgdGhlIHRocmVhZCBoYXMgbm8gcmVtYWluaW5nCi0gICBmcmFtZXMsIGFuZCB0aGF0IGl0IGlzIGl0cyBpbnRlcnByZXRlcidzIG9ubHkgcmVtYWluaW5nIHRocmVhZC4KLSAgIEl0IGlzIGEgZmF0YWwgZXJyb3IgdG8gdmlvbGF0ZSB0aGVzZSBjb25zdHJhaW50cy4KLQotICAgKFB5X0ZpbmFsaXplKCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKLSAgIGV2ZXJ5dGhpbmcsIHJlZ2FyZGxlc3MuKQotCi0gICBMb2NraW5nOiBhcyBhYm92ZS4KLQotKi8KLQotdm9pZAotUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQotewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7Ci0KLSAgICBpZiAodHN0YXRlICE9IFB5VGhyZWFkU3RhdGVfR0VUKCkpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0VuZEludGVycHJldGVyOiB0aHJlYWQgaXMgbm90IGN1cnJlbnQiKTsKLSAgICBpZiAodHN0YXRlLT5mcmFtZSAhPSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9FbmRJbnRlcnByZXRlcjogdGhyZWFkIHN0aWxsIGhhcyBhIGZyYW1lIik7Ci0KLSAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKLQotICAgIGlmICh0c3RhdGUgIT0gaW50ZXJwLT50c3RhdGVfaGVhZCB8fCB0c3RhdGUtPm5leHQgIT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfRW5kSW50ZXJwcmV0ZXI6IG5vdCB0aGUgbGFzdCB0aHJlYWQiKTsKLQotICAgIFB5SW1wb3J0X0NsZWFudXAoKTsKLSAgICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoaW50ZXJwKTsKLSAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwotfQotCi0jaWZkZWYgTVNfV0lORE9XUwotc3RhdGljIHdjaGFyX3QgKnByb2duYW1lID0gTCJweXRob24iOwotI2Vsc2UKLXN0YXRpYyB3Y2hhcl90ICpwcm9nbmFtZSA9IEwicHl0aG9uMyI7Ci0jZW5kaWYKLQotdm9pZAotUHlfU2V0UHJvZ3JhbU5hbWUod2NoYXJfdCAqcG4pCi17Ci0gICAgaWYgKHBuICYmICpwbikKLSAgICAgICAgcHJvZ25hbWUgPSBwbjsKLX0KLQotd2NoYXJfdCAqCi1QeV9HZXRQcm9ncmFtTmFtZSh2b2lkKQotewotICAgIHJldHVybiBwcm9nbmFtZTsKLX0KLQotc3RhdGljIHdjaGFyX3QgKmRlZmF1bHRfaG9tZSA9IE5VTEw7Ci1zdGF0aWMgd2NoYXJfdCBlbnZfaG9tZVtNQVhQQVRITEVOKzFdOwotCi12b2lkCi1QeV9TZXRQeXRob25Ib21lKHdjaGFyX3QgKmhvbWUpCi17Ci0gICAgZGVmYXVsdF9ob21lID0gaG9tZTsKLX0KLQotd2NoYXJfdCAqCi1QeV9HZXRQeXRob25Ib21lKHZvaWQpCi17Ci0gICAgd2NoYXJfdCAqaG9tZSA9IGRlZmF1bHRfaG9tZTsKLSAgICBpZiAoaG9tZSA9PSBOVUxMICYmICFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcpIHsKLSAgICAgICAgY2hhciogY2hvbWUgPSBQeV9HRVRFTlYoIlBZVEhPTkhPTUUiKTsKLSAgICAgICAgaWYgKGNob21lKSB7Ci0gICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChlbnZfaG9tZSk7Ci0gICAgICAgICAgICBzaXplX3QgciA9IG1ic3Rvd2NzKGVudl9ob21lLCBjaG9tZSwgc2l6ZSk7Ci0gICAgICAgICAgICBpZiAociAhPSAoc2l6ZV90KS0xICYmIHIgPCBzaXplKQotICAgICAgICAgICAgICAgIGhvbWUgPSBlbnZfaG9tZTsKLSAgICAgICAgfQotCi0gICAgfQotICAgIHJldHVybiBob21lOwotfQotCi0vKiBDcmVhdGUgX19tYWluX18gbW9kdWxlICovCi0KLXN0YXRpYyB2b2lkCi1pbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKLXsKLSAgICBQeU9iamVjdCAqbSwgKmQsICpsb2FkZXI7Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBjcmVhdGUgX19tYWluX18gbW9kdWxlIik7Ci0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICAgICAgaWYgKGJpbW9kID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBidWlsdGlucyBtb2R1bGUiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIsIGJpbW9kKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYnVpbHRpbnNfXyIpOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihiaW1vZCk7Ci0gICAgfQotICAgIC8qIE1haW4gaXMgYSBsaXR0bGUgc3BlY2lhbCAtIGltcC5pc19idWlsdGluKCJfX21haW5fXyIpIHdpbGwgcmV0dXJuCi0gICAgICogRmFsc2UsIGJ1dCBCdWlsdGluSW1wb3J0ZXIgaXMgc3RpbGwgdGhlIG1vc3QgYXBwcm9wcmlhdGUgaW5pdGlhbAotICAgICAqIHNldHRpbmcgZm9yIGl0cyBfX2xvYWRlcl9fIGF0dHJpYnV0ZS4gQSBtb3JlIHN1aXRhYmxlIHZhbHVlIHdpbGwKLSAgICAgKiBiZSBzZXQgaWYgX19tYWluX18gZ2V0cyBmdXJ0aGVyIGluaXRpYWxpemVkIGxhdGVyIGluIHRoZSBzdGFydHVwCi0gICAgICogcHJvY2Vzcy4KLSAgICAgKi8KLSAgICBsb2FkZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19sb2FkZXJfXyIpOwotICAgIGlmIChsb2FkZXIgPT0gTlVMTCB8fCBsb2FkZXIgPT0gUHlfTm9uZSkgewotICAgICAgICBQeU9iamVjdCAqbG9hZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1aWx0aW5JbXBvcnRlciIpOwotICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBCdWlsdGluSW1wb3J0ZXIiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iLCBsb2FkZXIpIDwgMCkgewotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19sb2FkZXJfXyIpOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihsb2FkZXIpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCi17Ci0gICAgUHlPYmplY3QgKmNvZGVjOwotCi0gICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKLSAgICB7Ci0gICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7Ci0gICAgICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBVbmFibGUgdG8gZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmciKTsKLQotICAgICAgICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKLSAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCi0gICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7Ci0gICAgaWYgKCFjb2RlYykgewotICAgICAgICAvKiBTdWNoIGVycm9yIGNhbiBvbmx5IG9jY3VycyBpbiBjcml0aWNhbCBzaXR1YXRpb25zOiBubyBtb3JlCi0gICAgICAgICAqIG1lbW9yeSwgaW1wb3J0IGEgbW9kdWxlIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGZhaWxlZCwKLSAgICAgICAgICogZXRjLiAqLwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihjb2RlYyk7Ci0gICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMTsKLSAgICByZXR1cm4gMDsKLX0KLQotLyogSW1wb3J0IHRoZSBzaXRlIG1vZHVsZSAobm90IGludG8gX19tYWluX18gdGhvdWdoKSAqLwotCi1zdGF0aWMgdm9pZAotaW5pdHNpdGUodm9pZCkKLXsKLSAgICBQeU9iamVjdCAqbTsKLSAgICBtID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzaXRlIik7Ci0gICAgaWYgKG0gPT0gTlVMTCkgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBpbXBvcnQgdGhlIHNpdGUgbW9kdWxlXG4iKTsKLSAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICAgICAgUHlfRmluYWxpemUoKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihtKTsKLSAgICB9Ci19Ci0KLS8qIENoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIG9yIG5vdC4KLSAgIFJldHVybiAwIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgaW52YWxpZCwgcmV0dXJuIG5vbi16ZXJvIG90aGVyd2lzZS4gKi8KLXN0YXRpYyBpbnQKLWlzX3ZhbGlkX2ZkKGludCBmZCkKLXsKLSAgICBpbnQgZmQyOwotICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGZkMiA9IGR1cChmZCk7Ci0gICAgaWYgKGZkMiA+PSAwKQotICAgICAgICBjbG9zZShmZDIpOwotICAgIHJldHVybiBmZDIgPj0gMDsKLX0KLQotLyogcmV0dXJucyBQeV9Ob25lIGlmIHRoZSBmZCBpcyBub3QgdmFsaWQgKi8KLXN0YXRpYyBQeU9iamVjdCoKLWNyZWF0ZV9zdGRpbyhQeU9iamVjdCogaW8sCi0gICAgaW50IGZkLCBpbnQgd3JpdGVfbW9kZSwgY2hhciogbmFtZSwKLSAgICBjaGFyKiBlbmNvZGluZywgY2hhciogZXJyb3JzKQotewotICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMLCAqc3RyZWFtID0gTlVMTCwgKnRleHQgPSBOVUxMLCAqcmF3ID0gTlVMTCwgKnJlczsKLSAgICBjb25zdCBjaGFyKiBtb2RlOwotICAgIGNvbnN0IGNoYXIqIG5ld2xpbmU7Ci0gICAgUHlPYmplY3QgKmxpbmVfYnVmZmVyaW5nOwotICAgIGludCBidWZmZXJpbmcsIGlzYXR0eTsKLSAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKLSAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOwotICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOwotICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOwotCi0gICAgaWYgKCFpc192YWxpZF9mZChmZCkpCi0gICAgICAgIFB5X1JFVFVSTl9OT05FOwotCi0gICAgLyogc3RkaW4gaXMgYWx3YXlzIG9wZW5lZCBpbiBidWZmZXJlZCBtb2RlLCBmaXJzdCBiZWNhdXNlIGl0IHNob3VsZG4ndAotICAgICAgIG1ha2UgYSBkaWZmZXJlbmNlIGluIGNvbW1vbiB1c2UgY2FzZXMsIHNlY29uZCBiZWNhdXNlIFRleHRJT1dyYXBwZXIKLSAgICAgICBkZXBlbmRzIG9uIHRoZSBwcmVzZW5jZSBvZiBhIHJlYWQxKCkgbWV0aG9kIHdoaWNoIG9ubHkgZXhpc3RzIG9uCi0gICAgICAgYnVmZmVyZWQgc3RyZWFtcy4KLSAgICAqLwotICAgIGlmIChQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnICYmIHdyaXRlX21vZGUpCi0gICAgICAgIGJ1ZmZlcmluZyA9IDA7Ci0gICAgZWxzZQotICAgICAgICBidWZmZXJpbmcgPSAtMTsKLSAgICBpZiAod3JpdGVfbW9kZSkKLSAgICAgICAgbW9kZSA9ICJ3YiI7Ci0gICAgZWxzZQotICAgICAgICBtb2RlID0gInJiIjsKLSAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgaWYgKGJ1ZmZlcmluZykgewotICAgICAgICBfUHlfSURFTlRJRklFUihyYXcpOwotICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZiwgJlB5SWRfcmF3KTsKLSAgICAgICAgaWYgKHJhdyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJhdyA9IGJ1ZjsKLSAgICAgICAgUHlfSU5DUkVGKHJhdyk7Ci0gICAgfQotCi0gICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwotICAgIFB5X0RFQ1JFRihyZXMpOwotICAgIGlmIChpc2F0dHkgPT0gLTEpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKGlzYXR0eSB8fCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnKQotICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IFB5X1RydWU7Ci0gICAgZWxzZQotICAgICAgICBsaW5lX2J1ZmZlcmluZyA9IFB5X0ZhbHNlOwotCi0gICAgUHlfQ0xFQVIocmF3KTsKLSAgICBQeV9DTEVBUih0ZXh0KTsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBzeXMuc3RkaW46IGVuYWJsZSB1bml2ZXJzYWwgbmV3bGluZSBtb2RlLCB0cmFuc2xhdGUgIlxyXG4iIGFuZCAiXHIiCi0gICAgICAgbmV3bGluZXMgdG8gIlxuIi4KLSAgICAgICBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyOiB0cmFuc2xhdGUgIlxuIiB0byAiXHJcbiIuICovCi0gICAgbmV3bGluZSA9IE5VTEw7Ci0jZWxzZQotICAgIC8qIHN5cy5zdGRpbjogc3BsaXQgbGluZXMgYXQgIlxuIi4KLSAgICAgICBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyOiBkb24ndCB0cmFuc2xhdGUgbmV3bGluZXMgKHVzZSAiXG4iKS4gKi8KLSAgICBuZXdsaW5lID0gIlxuIjsKLSNlbmRpZgotCi0gICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfVGV4dElPV3JhcHBlciwgIk9zc3NPIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZW5jb2RpbmcsIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nKTsKLSAgICBQeV9DTEVBUihidWYpOwotICAgIGlmIChzdHJlYW0gPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGlmICh3cml0ZV9tb2RlKQotICAgICAgICBtb2RlID0gInciOwotICAgIGVsc2UKLSAgICAgICAgbW9kZSA9ICJyIjsKLSAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kZSk7Ci0gICAgaWYgKCF0ZXh0IHx8IF9QeU9iamVjdF9TZXRBdHRySWQoc3RyZWFtLCAmUHlJZF9tb2RlLCB0ZXh0KSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfQ0xFQVIodGV4dCk7Ci0gICAgcmV0dXJuIHN0cmVhbTsKLQotZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihidWYpOwotICAgIFB5X1hERUNSRUYoc3RyZWFtKTsKLSAgICBQeV9YREVDUkVGKHRleHQpOwotICAgIFB5X1hERUNSRUYocmF3KTsKLQotICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX09TRXJyb3IpICYmICFpc192YWxpZF9mZChmZCkpIHsKLSAgICAgICAgLyogSXNzdWUgIzI0ODkxOiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBjbG9zZWQgYWZ0ZXIgdGhlIGZpcnN0Ci0gICAgICAgICAgIGlzX3ZhbGlkX2ZkKCkgY2hlY2sgd2FzIGNhbGxlZC4gSWdub3JlIHRoZSBPU0Vycm9yIGFuZCBzZXQgdGhlCi0gICAgICAgICAgIHN0cmVhbSB0byBOb25lLiAqLwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qIEluaXRpYWxpemUgc3lzLnN0ZGluLCBzdGRvdXQsIHN0ZGVyciBhbmQgYnVpbHRpbnMub3BlbiAqLwotc3RhdGljIGludAotaW5pdHN0ZGlvKHZvaWQpCi17Ci0gICAgUHlPYmplY3QgKmlvbW9kID0gTlVMTCwgKndyYXBwZXI7Ci0gICAgUHlPYmplY3QgKmJpbW9kID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKLSAgICBQeU9iamVjdCAqc3RkID0gTlVMTDsKLSAgICBpbnQgc3RhdHVzID0gMCwgZmQ7Ci0gICAgUHlPYmplY3QgKiBlbmNvZGluZ19hdHRyOwotICAgIGNoYXIgKnB5dGhvbmlvZW5jb2RpbmcgPSBOVUxMLCAqZW5jb2RpbmcsICplcnJvcnM7Ci0KLSAgICAvKiBIYWNrIHRvIGF2b2lkIGEgbmFzdHkgcmVjdXJzaW9uIGlzc3VlIHdoZW4gUHl0aG9uIGlzIGludm9rZWQKLSAgICAgICBpbiB2ZXJib3NlIG1vZGU6IHByZS1pbXBvcnQgdGhlIExhdGluLTEgYW5kIFVURi04IGNvZGVjcyAqLwotICAgIGlmICgobSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZW5jb2RpbmdzLnV0Zl84IikpID09IE5VTEwpIHsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG0pOwotCi0gICAgaWYgKCEobSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZW5jb2RpbmdzLmxhdGluXzEiKSkpIHsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG0pOwotCi0gICAgaWYgKCEoYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIikpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgaWYgKCEoaW9tb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImlvIikpKSB7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIGlmICghKHdyYXBwZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGlvbW9kLCAiT3BlbldyYXBwZXIiKSkpIHsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICAvKiBTZXQgYnVpbHRpbnMub3BlbiAqLwotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKGJpbW9kLCAib3BlbiIsIHdyYXBwZXIpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgUHlfREVDUkVGKHdyYXBwZXIpOwotCi0gICAgZW5jb2RpbmcgPSBfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZzsKLSAgICBlcnJvcnMgPSBfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnM7Ci0gICAgaWYgKCFlbmNvZGluZyB8fCAhZXJyb3JzKSB7Ci0gICAgICAgIHB5dGhvbmlvZW5jb2RpbmcgPSBQeV9HRVRFTlYoIlBZVEhPTklPRU5DT0RJTkciKTsKLSAgICAgICAgaWYgKHB5dGhvbmlvZW5jb2RpbmcpIHsKLSAgICAgICAgICAgIGNoYXIgKmVycjsKLSAgICAgICAgICAgIHB5dGhvbmlvZW5jb2RpbmcgPSBfUHlNZW1fU3RyZHVwKHB5dGhvbmlvZW5jb2RpbmcpOwotICAgICAgICAgICAgaWYgKHB5dGhvbmlvZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVyciA9IHN0cmNocihweXRob25pb2VuY29kaW5nLCAnOicpOwotICAgICAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgICAgICplcnIgPSAnXDAnOwotICAgICAgICAgICAgICAgIGVycisrOwotICAgICAgICAgICAgICAgIGlmICgqZXJyICYmICFlcnJvcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzID0gZXJyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqcHl0aG9uaW9lbmNvZGluZyAmJiAhZW5jb2RpbmcpIHsKLSAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHB5dGhvbmlvZW5jb2Rpbmc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBTZXQgc3lzLnN0ZGluICovCi0gICAgZmQgPSBmaWxlbm8oc3RkaW4pOwotICAgIC8qIFVuZGVyIHNvbWUgY29uZGl0aW9ucyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgbWF5IG5vdCBiZSBjb25uZWN0ZWQKLSAgICAgKiBhbmQgZmlsZW5vKCkgbWF5IHBvaW50IHRvIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLiBGb3IgZXhhbXBsZQotICAgICAqIEdVSSBhcHBzIGRvbid0IGhhdmUgdmFsaWQgc3RhbmRhcmQgc3RyZWFtcyBieSBkZWZhdWx0LgotICAgICAqLwotICAgIHN0ZCA9IGNyZWF0ZV9zdGRpbyhpb21vZCwgZmQsIDAsICI8c3RkaW4+IiwgZW5jb2RpbmcsIGVycm9ycyk7Ci0gICAgaWYgKHN0ZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRpbl9fIiwgc3RkKTsKLSAgICBfUHlTeXNfU2V0T2JqZWN0SWQoJlB5SWRfc3RkaW4sIHN0ZCk7Ci0gICAgUHlfREVDUkVGKHN0ZCk7Ci0KLSAgICAvKiBTZXQgc3lzLnN0ZG91dCAqLwotICAgIGZkID0gZmlsZW5vKHN0ZG91dCk7Ci0gICAgc3RkID0gY3JlYXRlX3N0ZGlvKGlvbW9kLCBmZCwgMSwgIjxzdGRvdXQ+IiwgZW5jb2RpbmcsIGVycm9ycyk7Ci0gICAgaWYgKHN0ZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5U3lzX1NldE9iamVjdCgiX19zdGRvdXRfXyIsIHN0ZCk7Ci0gICAgX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZG91dCwgc3RkKTsKLSAgICBQeV9ERUNSRUYoc3RkKTsKLQotI2lmIDEgLyogRGlzYWJsZSB0aGlzIGlmIHlvdSBoYXZlIHRyb3VibGUgZGVidWdnaW5nIGJvb3RzdHJhcCBzdHVmZiAqLwotICAgIC8qIFNldCBzeXMuc3RkZXJyLCByZXBsYWNlcyB0aGUgcHJlbGltaW5hcnkgc3RkZXJyICovCi0gICAgZmQgPSBmaWxlbm8oc3RkZXJyKTsKLSAgICBzdGQgPSBjcmVhdGVfc3RkaW8oaW9tb2QsIGZkLCAxLCAiPHN0ZGVycj4iLCBlbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKTsKLSAgICBpZiAoc3RkID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAvKiBTYW1lIGFzIGhhY2sgYWJvdmUsIHByZS1pbXBvcnQgc3RkZXJyJ3MgY29kZWMgdG8gYXZvaWQgcmVjdXJzaW9uCi0gICAgICAgd2hlbiBpbXBvcnQuYyB0cmllcyB0byB3cml0ZSB0byBzdGRlcnIgaW4gdmVyYm9zZSBtb2RlLiAqLwotICAgIGVuY29kaW5nX2F0dHIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0ZCwgImVuY29kaW5nIik7Ci0gICAgaWYgKGVuY29kaW5nX2F0dHIgIT0gTlVMTCkgewotICAgICAgICBjb25zdCBjaGFyICogc3RkX2VuY29kaW5nOwotICAgICAgICBzdGRfZW5jb2RpbmcgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGVuY29kaW5nX2F0dHIpOwotICAgICAgICBpZiAoc3RkX2VuY29kaW5nICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlY19pbmZvID0gX1B5Q29kZWNfTG9va3VwKHN0ZF9lbmNvZGluZyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGNvZGVjX2luZm8pOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihlbmNvZGluZ19hdHRyKTsKLSAgICB9Ci0gICAgUHlFcnJfQ2xlYXIoKTsgIC8qIE5vdCBhIGZhdGFsIGVycm9yIGlmIGNvZGVjIGlzbid0IGF2YWlsYWJsZSAqLwotCi0gICAgaWYgKFB5U3lzX1NldE9iamVjdCgiX19zdGRlcnJfXyIsIHN0ZCkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdGQpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBpZiAoX1B5U3lzX1NldE9iamVjdElkKCZQeUlkX3N0ZGVyciwgc3RkKSA8IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHN0ZCk7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihzdGQpOwotI2VuZGlmCi0KLSAgICBpZiAoMCkgewotICBlcnJvcjoKLSAgICAgICAgc3RhdHVzID0gLTE7Ci0gICAgfQotCi0gICAgLyogV2Ugd29uJ3QgbmVlZCB0aGVtIGFueW1vcmUuICovCi0gICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7Ci0gICAgICAgIFB5TWVtX1Jhd0ZyZWUoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpOwotICAgICAgICBfUHlfU3RhbmRhcmRTdHJlYW1FbmNvZGluZyA9IE5VTEw7Ci0gICAgfQotICAgIGlmIChfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMpIHsKLSAgICAgICAgUHlNZW1fUmF3RnJlZShfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMpOwotICAgICAgICBfUHlfU3RhbmRhcmRTdHJlYW1FcnJvcnMgPSBOVUxMOwotICAgIH0KLSAgICBQeU1lbV9GcmVlKHB5dGhvbmlvZW5jb2RpbmcpOwotICAgIFB5X1hERUNSRUYoYmltb2QpOwotICAgIFB5X1hERUNSRUYoaW9tb2QpOwotICAgIHJldHVybiBzdGF0dXM7Ci19CiAKIC8qIFBhcnNlIGlucHV0IGZyb20gYSBmaWxlIGFuZCBleGVjdXRlIGl0ICovCiAKQEAgLTEzMTcsNyArMTEwLDcgQEAKICAgICBlcnIgPSAtMTsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIHJldCA9IFB5UnVuX0ludGVyYWN0aXZlT25lT2JqZWN0KGZwLCBmaWxlbmFtZSwgZmxhZ3MpOwotICAgICAgICBQUklOVF9UT1RBTF9SRUZTKCk7CisgICAgICAgIF9QWV9ERUJVR19QUklOVF9UT1RBTF9SRUZTKCk7CiAgICAgICAgIGlmIChyZXQgPT0gRV9FT0YpIHsKICAgICAgICAgICAgIGVyciA9IDA7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NzIsNyArMjY1LDcgQEAKIHN0YXRpYyBpbnQKIG1heWJlX3B5Y19maWxlKEZJTEUgKmZwLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgY29uc3QgY2hhciogZXh0LCBpbnQgY2xvc2VpdCkKIHsKLSAgICBpZiAoc3RyY21wKGV4dCwgIi5weWMiKSA9PSAwIHx8IHN0cmNtcChleHQsICIucHlvIikgPT0gMCkKKyAgICBpZiAoc3RyY21wKGV4dCwgIi5weWMiKSA9PSAwKQogICAgICAgICByZXR1cm4gMTsKIAogICAgIC8qIE9ubHkgbG9vayBpbnRvIHRoZSBmaWxlIGlmIHdlIGFyZSBhbGxvd2VkIHRvIGNsb3NlIGl0LCBzaW5jZQpAQCAtMTUxMSw3ICszMDQsNyBAQAogewogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWVfb2JqLCAqbG9hZGVyX3R5cGUsICpsb2FkZXI7CisgICAgUHlPYmplY3QgKmZpbGVuYW1lX29iaiwgKmJvb3RzdHJhcCwgKmxvYWRlcl90eXBlID0gTlVMTCwgKmxvYWRlcjsKICAgICBpbnQgcmVzdWx0ID0gMDsKIAogICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOwpAQCAtMTUyMCw3ICszMTMsMTIgQEAKICAgICAvKiBHZXQgY3VycmVudCB0aHJlYWQgc3RhdGUgYW5kIGludGVycHJldGVyIHBvaW50ZXIgKi8KICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIGludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwotICAgIGxvYWRlcl90eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwgbG9hZGVyX25hbWUpOworICAgIGJvb3RzdHJhcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX2Jvb3RzdHJhcF9leHRlcm5hbCIpOworICAgIGlmIChib290c3RyYXAgIT0gTlVMTCkgeworICAgICAgICBsb2FkZXJfdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYm9vdHN0cmFwLCBsb2FkZXJfbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihib290c3RyYXApOworICAgIH0KICAgICBpZiAobG9hZGVyX3R5cGUgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWVfb2JqKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTU3OCw5ICszNzYsNiBAQAogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJweXRob246IENhbid0IHJlb3BlbiAucHljIGZpbGVcbiIpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9Ci0gICAgICAgIC8qIFR1cm4gb24gb3B0aW1pemF0aW9uIGlmIGEgLnB5byBmaWxlIGlzIGdpdmVuICovCi0gICAgICAgIGlmIChzdHJjbXAoZXh0LCAiLnB5byIpID09IDApCi0gICAgICAgICAgICBQeV9PcHRpbWl6ZUZsYWcgPSAxOwogCiAgICAgICAgIGlmIChzZXRfbWFpbl9sb2FkZXIoZCwgZmlsZW5hbWUsICJTb3VyY2VsZXNzRmlsZUxvYWRlciIpIDwgMCkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJweXRob246IGZhaWxlZCB0byBzZXQgX19tYWluX18uX19sb2FkZXJfX1xuIik7CkBAIC0xNzI0LDcgKzUxOSw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChvZmZzZXQgPj0gMCkgewotICAgICAgICBpZiAob2Zmc2V0ID4gMCAmJiBvZmZzZXQgPT0gc3RybGVuKHRleHQpICYmIHRleHRbb2Zmc2V0IC0gMV0gPT0gJ1xuJykKKyAgICAgICAgaWYgKG9mZnNldCA+IDAgJiYgKHNpemVfdClvZmZzZXQgPT0gc3RybGVuKHRleHQpICYmIHRleHRbb2Zmc2V0IC0gMV0gPT0gJ1xuJykKICAgICAgICAgICAgIG9mZnNldC0tOwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBubCA9IHN0cmNocih0ZXh0LCAnXG4nKTsKQEAgLTIxODgsMTMgKzk4MywxNyBAQAogCiAgICAgbWFnaWMgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgaWYgKG1hZ2ljICE9IFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAiQmFkIG1hZ2ljIG51bWJlciBpbiAucHljIGZpbGUiKTsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBtYWdpYyBudW1iZXIgaW4gLnB5YyBmaWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiBTa2lwIG10aW1lIGFuZCBzaXplICovCiAgICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKICAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHYgPSBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZShmcCk7CiAgICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlDb2RlX0NoZWNrKHYpKSB7CiAgICAgICAgIFB5X1hERUNSRUYodik7CkBAIC0yNTgyLDI3NiArMTM4MSw2IEBACiAgICAgfQogfQogCi0vKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKLSAqIG9yIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrLgotICoKLSAqIERvbid0IGNhbGwgUHlFcnJfUHJpbnRFeCgpIGFuZCB0aGUgZXhjZXB0IGhvb2ssIGJlY2F1c2UgUHlfRmF0YWxFcnJvcigpIGlzCi0gKiBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzLiAqLwotCi1zdGF0aWMgdm9pZAotX1B5X1ByaW50RmF0YWxFcnJvcihpbnQgZmQpCi17Ci0gICAgUHlPYmplY3QgKmZlcnIsICpyZXM7Ci0gICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwgKnYsICp0YjsKLSAgICBpbnQgaGFzX3RiOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKLQotICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2LCAmdGIpOwotICAgIGlmIChleGNlcHRpb24gPT0gTlVMTCkgewotICAgICAgICAvKiBObyBjdXJyZW50IGV4Y2VwdGlvbiAqLwotICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7Ci0gICAgfQotCi0gICAgZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwotICAgIGlmIChmZXJyID09IE5VTEwgfHwgZmVyciA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIHN5cy5zdGRlcnIgaXMgbm90IHNldCB5ZXQgb3Igc2V0IHRvIE5vbmUsCi0gICAgICAgICAgIG5vIG5lZWQgdG8gdHJ5IHRvIGRpc3BsYXkgdGhlIGV4Y2VwdGlvbiAqLwotICAgICAgICBnb3RvIGRpc3BsYXlfc3RhY2s7Ci0gICAgfQotCi0gICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGNlcHRpb24sICZ2LCAmdGIpOwotICAgIGlmICh0YiA9PSBOVUxMKSB7Ci0gICAgICAgIHRiID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHRiKTsKLSAgICB9Ci0gICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHYsIHRiKTsKLSAgICBpZiAoZXhjZXB0aW9uID09IE5VTEwpIHsKLSAgICAgICAgLyogUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCkgZmFpbGVkICovCi0gICAgICAgIGdvdG8gZGlzcGxheV9zdGFjazsKLSAgICB9Ci0KLSAgICBoYXNfdGIgPSAodGIgIT0gTlVMTCAmJiB0YiAhPSBQeV9Ob25lKTsKLSAgICBQeUVycl9EaXNwbGF5KGV4Y2VwdGlvbiwgdiwgdGIpOwotICAgIFB5X1hERUNSRUYoZXhjZXB0aW9uKTsKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIFB5X1hERUNSRUYodGIpOwotCi0gICAgLyogc3lzLnN0ZGVyciBtYXkgYmUgYnVmZmVyZWQ6IGNhbGwgc3lzLnN0ZGVyci5mbHVzaCgpICovCi0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlCi0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwotCi0gICAgaWYgKGhhc190YikKLSAgICAgICAgcmV0dXJuOwotCi1kaXNwbGF5X3N0YWNrOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKSB3b3JrcyBldmVuIGlmIHRoZSBHSUwgd2FzIHJlbGVhc2VkICovCi0gICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKLSNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSNlbmRpZgotICAgIGlmICh0c3RhdGUgPT0gTlVMTCkgewotICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSByZXF1aXJlcyB0aGUgdGhyZWFkIHN0YXRlIHRvIGRpc3BsYXkKLSAgICAgICAgICogZnJhbWVzICovCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwotICAgIGZmbHVzaChzdGRlcnIpOwotCi0gICAgLyogZGlzcGxheSB0aGUgY3VycmVudCBQeXRob24gc3RhY2sgKi8KLSAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOwotfQotCi0vKiBQcmludCBmYXRhbCBlcnJvciBtZXNzYWdlIGFuZCBhYm9ydCAqLwotCi12b2lkCi1QeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1zZykKLXsKLSAgICBjb25zdCBpbnQgZmQgPSBmaWxlbm8oc3RkZXJyKTsKLSAgICBzdGF0aWMgaW50IHJlZW50cmFudCA9IDA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHNpemVfdCBsZW47Ci0gICAgV0NIQVIqIGJ1ZmZlcjsKLSAgICBzaXplX3QgaTsKLSNlbmRpZgotCi0gICAgaWYgKHJlZW50cmFudCkgewotICAgICAgICAvKiBQeV9GYXRhbEVycm9yKCkgY2F1c2VkIGEgc2Vjb25kIGZhdGFsIGVycm9yLgotICAgICAgICAgICBFeGFtcGxlOiBmbHVzaF9zdGRfZmlsZXMoKSByYWlzZXMgYSByZWN1cnNpb24gZXJyb3IuICovCi0gICAgICAgIGdvdG8gZXhpdDsKLSAgICB9Ci0gICAgcmVlbnRyYW50ID0gMTsKLQotICAgIGZwcmludGYoc3RkZXJyLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAlc1xuIiwgbXNnKTsKLSAgICBmZmx1c2goc3RkZXJyKTsgLyogaXQgaGVscHMgaW4gV2luZG93cyBkZWJ1ZyBidWlsZCAqLwotCi0gICAgLyogUHJpbnQgdGhlIGV4Y2VwdGlvbiAoaWYgYW4gZXhjZXB0aW9uIGlzIHNldCkgd2l0aCBpdHMgdHJhY2ViYWNrLAotICAgICAqIG9yIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrLiAqLwotICAgIF9QeV9QcmludEZhdGFsRXJyb3IoZmQpOwotCi0gICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOwotCi0gICAgLyogVGhlIG1haW4gcHVycG9zZSBvZiBmYXVsdGhhbmRsZXIgaXMgdG8gZGlzcGxheSB0aGUgdHJhY2ViYWNrLiBXZSBhbHJlYWR5Ci0gICAgICogZGlkIG91ciBiZXN0IHRvIGRpc3BsYXkgaXQuIFNvIGZhdWx0aGFuZGxlciBjYW4gbm93IGJlIGRpc2FibGVkLgotICAgICAqIChEb24ndCB0cmlnZ2VyIGl0IG9uIGFib3J0KCkuKSAqLwotICAgIF9QeUZhdWx0aGFuZGxlcl9GaW5pKCk7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgbGVuID0gc3RybGVuKG1zZyk7Ci0KLSAgICAvKiBDb252ZXJ0IHRoZSBtZXNzYWdlIHRvIHdjaGFyX3QuIFRoaXMgdXNlcyBhIHNpbXBsZSBvbmUtdG8tb25lCi0gICAgY29udmVyc2lvbiwgYXNzdW1pbmcgdGhhdCB0aGUgdGhpcyBlcnJvciBtZXNzYWdlIGFjdHVhbGx5IHVzZXMgQVNDSUkKLSAgICBvbmx5LiBJZiB0aGlzIGNlYXNlcyB0byBiZSB0cnVlLCB3ZSB3aWxsIGhhdmUgdG8gY29udmVydC4gKi8KLSAgICBidWZmZXIgPSBhbGxvY2EoIChsZW4rMSkgKiAoc2l6ZW9mICpidWZmZXIpKTsKLSAgICBmb3IoIGk9MDsgaTw9bGVuOyArK2kpCi0gICAgICAgIGJ1ZmZlcltpXSA9IG1zZ1tpXTsKLSAgICBPdXRwdXREZWJ1Z1N0cmluZ1coTCJGYXRhbCBQeXRob24gZXJyb3I6ICIpOwotICAgIE91dHB1dERlYnVnU3RyaW5nVyhidWZmZXIpOwotICAgIE91dHB1dERlYnVnU3RyaW5nVyhMIlxuIik7Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi1leGl0OgotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChfREVCVUcpCi0gICAgRGVidWdCcmVhaygpOwotI2VuZGlmCi0gICAgYWJvcnQoKTsKLX0KLQotLyogQ2xlYW4gdXAgYW5kIGV4aXQgKi8KLQotI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKLSNlbmRpZgotCi1zdGF0aWMgdm9pZCAoKnB5ZXhpdGZ1bmMpKHZvaWQpID0gTlVMTDsKLS8qIEZvciB0aGUgYXRleGl0IG1vZHVsZS4gKi8KLXZvaWQgX1B5X1B5QXRFeGl0KHZvaWQgKCpmdW5jKSh2b2lkKSkKLXsKLSAgICBweWV4aXRmdW5jID0gZnVuYzsKLX0KLQotc3RhdGljIHZvaWQKLWNhbGxfcHlfZXhpdGZ1bmNzKHZvaWQpCi17Ci0gICAgaWYgKHB5ZXhpdGZ1bmMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKCpweWV4aXRmdW5jKSgpOwotICAgIFB5RXJyX0NsZWFyKCk7Ci19Ci0KLS8qIFdhaXQgdW50aWwgdGhyZWFkaW5nLl9zaHV0ZG93biBjb21wbGV0ZXMsIHByb3ZpZGVkCi0gICB0aGUgdGhyZWFkaW5nIG1vZHVsZSB3YXMgaW1wb3J0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgotICAgVGhlIHNodXRkb3duIHJvdXRpbmUgd2lsbCB3YWl0IHVudGlsIGFsbCBub24tZGFlbW9uCi0gICAidGhyZWFkaW5nIiB0aHJlYWRzIGhhdmUgY29tcGxldGVkLiAqLwotc3RhdGljIHZvaWQKLXdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bih2b2lkKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgX1B5X0lERU5USUZJRVIoX3NodXRkb3duKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgUHlPYmplY3QgKnRocmVhZGluZyA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHRzdGF0ZS0+aW50ZXJwLT5tb2R1bGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhyZWFkaW5nIik7Ci0gICAgaWYgKHRocmVhZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIHRocmVhZGluZyBub3QgaW1wb3J0ZWQgKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCAiIik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSh0aHJlYWRpbmcpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih0aHJlYWRpbmcpOwotI2VuZGlmCi19Ci0KLSNkZWZpbmUgTkVYSVRGVU5DUyAzMgotc3RhdGljIHZvaWQgKCpleGl0ZnVuY3NbTkVYSVRGVU5DU10pKHZvaWQpOwotc3RhdGljIGludCBuZXhpdGZ1bmNzID0gMDsKLQotaW50IFB5X0F0RXhpdCh2b2lkICgqZnVuYykodm9pZCkpCi17Ci0gICAgaWYgKG5leGl0ZnVuY3MgPj0gTkVYSVRGVU5DUykKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGV4aXRmdW5jc1tuZXhpdGZ1bmNzKytdID0gZnVuYzsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLWNhbGxfbGxfZXhpdGZ1bmNzKHZvaWQpCi17Ci0gICAgd2hpbGUgKG5leGl0ZnVuY3MgPiAwKQotICAgICAgICAoKmV4aXRmdW5jc1stLW5leGl0ZnVuY3NdKSgpOwotCi0gICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgZmZsdXNoKHN0ZGVycik7Ci19Ci0KLXZvaWQKLVB5X0V4aXQoaW50IHN0cykKLXsKLSAgICBQeV9GaW5hbGl6ZSgpOwotCi0gICAgZXhpdChzdHMpOwotfQotCi1zdGF0aWMgdm9pZAotaW5pdHNpZ3Modm9pZCkKLXsKLSNpZmRlZiBTSUdQSVBFCi0gICAgUHlPU19zZXRzaWcoU0lHUElQRSwgU0lHX0lHTik7Ci0jZW5kaWYKLSNpZmRlZiBTSUdYRloKLSAgICBQeU9TX3NldHNpZyhTSUdYRlosIFNJR19JR04pOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZTWgotICAgIFB5T1Nfc2V0c2lnKFNJR1hGU1osIFNJR19JR04pOwotI2VuZGlmCi0gICAgUHlPU19Jbml0SW50ZXJydXB0cygpOyAvKiBNYXkgaW1wbHkgaW5pdHNpZ25hbCgpICovCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW1wb3J0IHNpZ25hbCIpOwotICAgIH0KLX0KLQotCi0vKiBSZXN0b3JlIHNpZ25hbHMgdGhhdCB0aGUgaW50ZXJwcmV0ZXIgaGFzIGNhbGxlZCBTSUdfSUdOIG9uIHRvIFNJR19ERkwuCi0gKgotICogQWxsIG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IHVzZSBhc3luYy1zaWduYWwtc2FmZSBmdW5jdGlvbnMsCi0gKiBsaXN0ZWQgYXQgYG1hbiA3IHNpZ25hbGAgb3IKLSAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMveHNoX2NoYXAwMl8wNC5odG1sLgotICovCi12b2lkCi1fUHlfUmVzdG9yZVNpZ25hbHModm9pZCkKLXsKLSNpZmRlZiBTSUdQSVBFCi0gICAgUHlPU19zZXRzaWcoU0lHUElQRSwgU0lHX0RGTCk7Ci0jZW5kaWYKLSNpZmRlZiBTSUdYRloKLSAgICBQeU9TX3NldHNpZyhTSUdYRlosIFNJR19ERkwpOwotI2VuZGlmCi0jaWZkZWYgU0lHWEZTWgotICAgIFB5T1Nfc2V0c2lnKFNJR1hGU1osIFNJR19ERkwpOwotI2VuZGlmCi19Ci0KLQotLyoKLSAqIFRoZSBmaWxlIGRlc2NyaXB0b3IgZmQgaXMgY29uc2lkZXJlZCBgYGludGVyYWN0aXZlJycgaWYgZWl0aGVyCi0gKiAgIGEpIGlzYXR0eShmZCkgaXMgVFJVRSwgb3IKLSAqICAgYikgdGhlIC1pIGZsYWcgd2FzIGdpdmVuLCBhbmQgdGhlIGZpbGVuYW1lIGFzc29jaWF0ZWQgd2l0aAotICogICAgICB0aGUgZGVzY3JpcHRvciBpcyBOVUxMIG9yICI8c3RkaW4+IiBvciAiPz8/Ii4KLSAqLwotaW50Ci1QeV9GZElzSW50ZXJhY3RpdmUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotewotICAgIGlmIChpc2F0dHkoKGludClmaWxlbm8oZnApKSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKCFQeV9JbnRlcmFjdGl2ZUZsYWcpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAoZmlsZW5hbWUgPT0gTlVMTCkgfHwKLSAgICAgICAgICAgKHN0cmNtcChmaWxlbmFtZSwgIjxzdGRpbj4iKSA9PSAwKSB8fAotICAgICAgICAgICAoc3RyY21wKGZpbGVuYW1lLCAiPz8/IikgPT0gMCk7Ci19Ci0KIAogI2lmIGRlZmluZWQoVVNFX1NUQUNLQ0hFQ0spCiAjaWYgZGVmaW5lZChXSU4zMikgJiYgZGVmaW5lZChfTVNDX1ZFUikKQEAgLTI4OTAsNzMgKzE0MTksNiBAQAogCiAjZW5kaWYgLyogVVNFX1NUQUNLQ0hFQ0sgKi8KIAotCi0vKiBXcmFwcGVycyBhcm91bmQgc2lnYWN0aW9uKCkgb3Igc2lnbmFsKCkuICovCi0KLVB5T1Nfc2lnaGFuZGxlcl90Ci1QeU9TX2dldHNpZyhpbnQgc2lnKQotewotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0OwotICAgIGlmIChzaWdhY3Rpb24oc2lnLCBOVUxMLCAmY29udGV4dCkgPT0gLTEpCi0gICAgICAgIHJldHVybiBTSUdfRVJSOwotICAgIHJldHVybiBjb250ZXh0LnNhX2hhbmRsZXI7Ci0jZWxzZQotICAgIFB5T1Nfc2lnaGFuZGxlcl90IGhhbmRsZXI7Ci0vKiBTcGVjaWFsIHNpZ25hbCBoYW5kbGluZyBmb3IgdGhlIHNlY3VyZSBDUlQgaW4gVmlzdWFsIFN0dWRpbyAyMDA1ICovCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTQwMAotICAgIHN3aXRjaCAoc2lnKSB7Ci0gICAgLyogT25seSB0aGVzZSBzaWduYWxzIGFyZSB2YWxpZCAqLwotICAgIGNhc2UgU0lHSU5UOgotICAgIGNhc2UgU0lHSUxMOgotICAgIGNhc2UgU0lHRlBFOgotICAgIGNhc2UgU0lHU0VHVjoKLSAgICBjYXNlIFNJR1RFUk06Ci0gICAgY2FzZSBTSUdCUkVBSzoKLSAgICBjYXNlIFNJR0FCUlQ6Ci0gICAgICAgIGJyZWFrOwotICAgIC8qIERvbid0IGNhbGwgc2lnbmFsKCkgd2l0aCBvdGhlciB2YWx1ZXMgb3IgaXQgd2lsbCBhc3NlcnQgKi8KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU0lHX0VSUjsKLSAgICB9Ci0jZW5kaWYgLyogX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAqLwotICAgIGhhbmRsZXIgPSBzaWduYWwoc2lnLCBTSUdfSUdOKTsKLSAgICBpZiAoaGFuZGxlciAhPSBTSUdfRVJSKQotICAgICAgICBzaWduYWwoc2lnLCBoYW5kbGVyKTsKLSAgICByZXR1cm4gaGFuZGxlcjsKLSNlbmRpZgotfQotCi0vKgotICogQWxsIG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IHVzZSBhc3luYy1zaWduYWwtc2FmZSBmdW5jdGlvbnMsCi0gKiBsaXN0ZWQgYXQgYG1hbiA3IHNpZ25hbGAgb3IKLSAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMveHNoX2NoYXAwMl8wNC5odG1sLgotICovCi1QeU9TX3NpZ2hhbmRsZXJfdAotUHlPU19zZXRzaWcoaW50IHNpZywgUHlPU19zaWdoYW5kbGVyX3QgaGFuZGxlcikKLXsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgIC8qIFNvbWUgY29kZSBpbiBNb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGRlcGVuZHMgb24gc2lnYWN0aW9uKCkgYmVpbmcKLSAgICAgKiB1c2VkIGhlcmUgaWYgSEFWRV9TSUdBQ1RJT04gaXMgZGVmaW5lZC4gIEZpeCB0aGF0IGlmIHRoaXMgY29kZQotICAgICAqIGNoYW5nZXMgdG8gaW52YWxpZGF0ZSB0aGF0IGFzc3VtcHRpb24uCi0gICAgICovCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBjb250ZXh0LCBvY29udGV4dDsKLSAgICBjb250ZXh0LnNhX2hhbmRsZXIgPSBoYW5kbGVyOwotICAgIHNpZ2VtcHR5c2V0KCZjb250ZXh0LnNhX21hc2spOwotICAgIGNvbnRleHQuc2FfZmxhZ3MgPSAwOwotICAgIGlmIChzaWdhY3Rpb24oc2lnLCAmY29udGV4dCwgJm9jb250ZXh0KSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFNJR19FUlI7Ci0gICAgcmV0dXJuIG9jb250ZXh0LnNhX2hhbmRsZXI7Ci0jZWxzZQotICAgIFB5T1Nfc2lnaGFuZGxlcl90IG9sZGhhbmRsZXI7Ci0gICAgb2xkaGFuZGxlciA9IHNpZ25hbChzaWcsIGhhbmRsZXIpOwotI2lmZGVmIEhBVkVfU0lHSU5URVJSVVBUCi0gICAgc2lnaW50ZXJydXB0KHNpZywgMSk7Ci0jZW5kaWYKLSAgICByZXR1cm4gb2xkaGFuZGxlcjsKLSNlbmRpZgotfQotCiAvKiBEZXByZWNhdGVkIEMgQVBJIGZ1bmN0aW9ucyBzdGlsbCBwcm92aWRlZCBmb3IgYmluYXJ5IGNvbXBhdGlibGl0eSAqLwogCiAjdW5kZWYgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlCmRpZmYgLS1naXQgYS9QeXRob24vcHl0aW1lLmMgYi9QeXRob24vcHl0aW1lLmMKaW5kZXggZGU2YTQxZi4uNWE1Y2RkOSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGltZS5jCisrKyBiL1B5dGhvbi9weXRpbWUuYwpAQCAtMywxMTUgKzMsMjUgQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKEhBVkVfR0VUVElNRU9GREFZKSAmJiBkZWZpbmVkKEhBVkVfRlRJTUUpCi0gIC8qCi0gICAqIF9QeVRpbWVfZ2V0dGltZW9mZGF5IGZhbGxzIGJhY2sgdG8gZnRpbWUgd2hlbiBnZXR0dGltZW9mZGF5IGZhaWxzIGJlY2F1c2UgdGhlIGxhdHRlcgotICAgKiBtaWdodCBmYWlsIG9uIHNvbWUgcGxhdGZvcm1zLiBUaGlzIGZhbGxiYWNrIGlzIHVud2FudGVkIG9uIE1hY09TWCBiZWNhdXNlCi0gICAqIHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB1c2UgYSBiaW5hcnkgYnVpbGQgb24gT1NYIDEwLjQgb24gZWFybGllcgotICAgKiByZWxlYXNlcyBvZiB0aGUgT1MuIFRoZXJlZm9yZSBjbGFpbSB3ZSBkb24ndCBzdXBwb3J0IGZ0aW1lLgotICAgKi8KLSMgdW5kZWYgSEFWRV9GVElNRQorI2lmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+ICAgLyogbWFjaF9hYnNvbHV0ZV90aW1lKCksIG1hY2hfdGltZWJhc2VfaW5mbygpICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9GVElNRSkgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKLSNpbmNsdWRlIDxzeXMvdGltZWIuaD4KLWV4dGVybiBpbnQgZnRpbWUoc3RydWN0IHRpbWViICopOwotI2VuZGlmCisvKiBUbyBtaWxsaXNlY29uZCAoMTBeLTMpICovCisjZGVmaW5lIFNFQ19UT19NUyAxMDAwCiAKLXN0YXRpYyB2b2lkCi1weWdldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQotewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBGSUxFVElNRSBzeXN0ZW1fdGltZTsKLSAgICBVTEFSR0VfSU5URUdFUiBsYXJnZTsKLSAgICBVTE9OR0xPTkcgbWljcm9zZWNvbmRzOworLyogVG8gbWljcm9zZWNvbmRzICgxMF4tNikgKi8KKyNkZWZpbmUgTVNfVE9fVVMgMTAwMAorI2RlZmluZSBTRUNfVE9fVVMgKFNFQ19UT19NUyAqIE1TX1RPX1VTKQogCi0gICAgR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJnN5c3RlbV90aW1lKTsKLSAgICBsYXJnZS51Lkxvd1BhcnQgPSBzeXN0ZW1fdGltZS5kd0xvd0RhdGVUaW1lOwotICAgIGxhcmdlLnUuSGlnaFBhcnQgPSBzeXN0ZW1fdGltZS5kd0hpZ2hEYXRlVGltZTsKLSAgICAvKiAxMSw2NDQsNDczLDYwMCwwMDAsMDAwOiBudW1iZXIgb2YgbWljcm9zZWNvbmRzIGJldHdlZW4KLSAgICAgICB0aGUgMXN0IGphbnVhcnkgMTYwMSBhbmQgdGhlIDFzdCBqYW51YXJ5IDE5NzAgKDM2OSB5ZWFycyArIDg5IGxlYXAKLSAgICAgICBkYXlzKS4gKi8KLSAgICBtaWNyb3NlY29uZHMgPSBsYXJnZS5RdWFkUGFydCAvIDEwIC0gMTE2NDQ0NzM2MDAwMDAwMDA7Ci0gICAgdHAtPnR2X3NlYyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAwMDA7Ci0gICAgdHAtPnR2X3VzZWMgPSBtaWNyb3NlY29uZHMgJSAxMDAwMDAwOwotICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIERXT1JEIHRpbWVBZGp1c3RtZW50LCB0aW1lSW5jcmVtZW50OwotICAgICAgICBCT09MIGlzVGltZUFkanVzdG1lbnREaXNhYmxlZDsKKy8qIFRvIG5hbm9zZWNvbmRzICgxMF4tOSkgKi8KKyNkZWZpbmUgVVNfVE9fTlMgMTAwMAorI2RlZmluZSBNU19UT19OUyAoTVNfVE9fVVMgKiBVU19UT19OUykKKyNkZWZpbmUgU0VDX1RPX05TIChTRUNfVE9fTVMgKiBNU19UT19OUykKIAotICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpIjsKLSAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKLSAgICAgICAgKHZvaWQpIEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNUaW1lQWRqdXN0bWVudERpc2FibGVkKTsKLSAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHRpbWVJbmNyZW1lbnQgKiAxZS03OwotICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICB9Ci0jZWxzZQotICAgIC8qIFRoZXJlIGFyZSB0aHJlZSB3YXlzIHRvIGdldCB0aGUgdGltZToKLSAgICAgICgxKSBnZXR0aW1lb2ZkYXkoKSAtLSByZXNvbHV0aW9uIGluIG1pY3Jvc2Vjb25kcwotICAgICAgKDIpIGZ0aW1lKCkgLS0gcmVzb2x1dGlvbiBpbiBtaWxsaXNlY29uZHMKLSAgICAgICgzKSB0aW1lKCkgLS0gcmVzb2x1dGlvbiBpbiBzZWNvbmRzCi0gICAgICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybiB2YWx1ZSBpbiBhIHRpbWV2YWwgc3RydWN0LgotICAgICAgU2luY2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNDTyBPRFQgMy4wKSBnZXR0aW1lb2ZkYXkoKSBtYXkKLSAgICAgIGZhaWwsIHNvIHdlIGZhbGwgYmFjayBvbiBmdGltZSgpIG9yIHRpbWUoKS4KLSAgICAgIE5vdGU6IGNsb2NrIHJlc29sdXRpb24gZG9lcyBub3QgaW1wbHkgY2xvY2sgYWNjdXJhY3khICovCi0KLSNpZmRlZiBIQVZFX0dFVFRJTUVPRkRBWQotICAgIGludCBlcnI7Ci0jaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCi0gICAgZXJyID0gZ2V0dGltZW9mZGF5KHRwKTsKLSNlbHNlCi0gICAgZXJyID0gZ2V0dGltZW9mZGF5KHRwLCAoc3RydWN0IHRpbWV6b25lICopTlVMTCk7Ci0jZW5kaWYKLSAgICBpZiAoZXJyID09IDApIHsKLSAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImdldHRpbWVvZmRheSgpIjsKLSAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS02OwotICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKLSAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYgICAvKiBIQVZFX0dFVFRJTUVPRkRBWSAqLwotCi0jaWYgZGVmaW5lZChIQVZFX0ZUSU1FKQotICAgIHsKLSAgICAgICAgc3RydWN0IHRpbWViIHQ7Ci0gICAgICAgIGZ0aW1lKCZ0KTsKLSAgICAgICAgdHAtPnR2X3NlYyA9IHQudGltZTsKLSAgICAgICAgdHAtPnR2X3VzZWMgPSB0Lm1pbGxpdG0gKiAxMDAwOwotICAgICAgICBpZiAoaW5mbykgewotICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZnRpbWUoKSI7Ci0gICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtMzsKLSAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKLSAgICAgICAgfQotICAgIH0KLSNlbHNlIC8qICFIQVZFX0ZUSU1FICovCi0gICAgdHAtPnR2X3NlYyA9IHRpbWUoTlVMTCk7Ci0gICAgdHAtPnR2X3VzZWMgPSAwOwotICAgIGlmIChpbmZvKSB7Ci0gICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gInRpbWUoKSI7Ci0gICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjA7Ci0gICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7Ci0gICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAxOwotICAgIH0KLSNlbmRpZiAvKiAhSEFWRV9GVElNRSAqLwotCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotfQotCi12b2lkCi1fUHlUaW1lX2dldHRpbWVvZmRheShfUHlUaW1lX3RpbWV2YWwgKnRwKQotewotICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBOVUxMKTsKLX0KLQotdm9pZAotX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbyhfUHlUaW1lX3RpbWV2YWwgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQotewotICAgIHB5Z2V0dGltZW9mZGF5KHRwLCBpbmZvKTsKLX0KKy8qIENvbnZlcnNpb24gZnJvbSBuYW5vc2Vjb25kcyAqLworI2RlZmluZSBOU19UT19NUyAoMTAwMCAqIDEwMDApCisjZGVmaW5lIE5TX1RPX1VTICgxMDAwKQogCiBzdGF0aWMgdm9pZAogZXJyb3JfdGltZV90X292ZXJmbG93KHZvaWQpCkBAIC0xNjgsMTcgKzc4LDE1IEBACiAgICAgICAgIH0KIAogICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX1VQKSB7Ci0gICAgICAgICAgICBpZiAoaW50cGFydCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gY2VpbChmbG9hdHBhcnQpOwotICAgICAgICAgICAgICAgIGlmIChmbG9hdHBhcnQgPj0gZGVub21pbmF0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOwotICAgICAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEuMDsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKKyAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKKyAgICAgICAgICAgIGlmIChmbG9hdHBhcnQgPj0gZGVub21pbmF0b3IpIHsKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgPSAwLjA7CisgICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBmbG9hdHBhcnQgPSBmbG9vcihmbG9hdHBhcnQpOwotICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKICAgICAgICAgfQogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0yMDcsMTIgKzExNSwxMCBAQAogICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOwogCiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX1VQKSB7Ci0gICAgICAgICAgICBpZiAoZCA+PSAwKQotICAgICAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKQorICAgICAgICAgICAgZCA9IGNlaWwoZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKICAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CiAKICAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKQEAgLTI0NSw4ICsxNTEsNTQ2IEBACiAgICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CiB9CiAKLXZvaWQKLV9QeVRpbWVfSW5pdCgpCitzdGF0aWMgdm9pZAorX1B5VGltZV9vdmVyZmxvdyh2b2lkKQogewotICAgIC8qIERvIG5vdGhpbmcuICBOZWVkZWQgdG8gZm9yY2UgbGlua2luZy4gKi8KKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCB0b28gbGFyZ2UgdG8gY29udmVydCB0byBDIF9QeVRpbWVfdCIpOworfQorCitfUHlUaW1lX3QKK19QeVRpbWVfRnJvbVNlY29uZHMoaW50IHNlY29uZHMpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgLyogZW5zdXJlIHRoYXQgaW50ZWdlciBvdmVyZmxvdyBjYW5ub3QgaGFwcGVuLCBpbnQgdHlwZSBzaG91bGQgaGF2ZSAzMgorICAgICAgIGJpdHMsIHdoZXJlYXMgX1B5VGltZV90IHR5cGUgaGFzIGF0IGxlYXN0IDY0IGJpdHMgKFNFQ19UT19NUyB0YWtlcyAzMAorICAgICAgIGJpdHMpLiAqLworICAgIGFzc2VydCgoc2Vjb25kcyA+PSAwICYmIHNlY29uZHMgPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpCisgICAgICAgICAgIHx8IChzZWNvbmRzIDwgMCAmJiBzZWNvbmRzID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKSk7CisgICAgdCA9IChfUHlUaW1lX3Qpc2Vjb25kcyAqIFNFQ19UT19OUzsKKyAgICByZXR1cm4gdDsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgUFlfTE9OR19MT05HLCBfUHlUaW1lX3QpOworICAgIHJldHVybiB0OworfQorCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCitzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21UaW1lc3BlYyhfUHlUaW1lX3QgKnRwLCBzdHJ1Y3QgdGltZXNwZWMgKnRzLCBpbnQgcmFpc2UpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICB0ID0gKF9QeVRpbWVfdCl0cy0+dHZfc2VjICogU0VDX1RPX05TOworICAgIGlmICh0IC8gU0VDX1RPX05TICE9IHRzLT50dl9zZWMpIHsKKyAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICByZXMgPSAtMTsKKyAgICB9CisKKyAgICB0ICs9IHRzLT50dl9uc2VjOworCisgICAgKnRwID0gdDsKKyAgICByZXR1cm4gcmVzOworfQorI2VsaWYgIWRlZmluZWQoTVNfV0lORE9XUykKK3N0YXRpYyBpbnQKK19QeVRpbWVfRnJvbVRpbWV2YWwoX1B5VGltZV90ICp0cCwgc3RydWN0IHRpbWV2YWwgKnR2LCBpbnQgcmFpc2UpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgaW50IHJlcyA9IDA7CisKKyAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjICogU0VDX1RPX05TOworICAgIGlmICh0IC8gU0VDX1RPX05TICE9IHR2LT50dl9zZWMpIHsKKyAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICByZXMgPSAtMTsKKyAgICB9CisKKyAgICB0ICs9IChfUHlUaW1lX3QpdHYtPnR2X3VzZWMgKiBVU19UT19OUzsKKworICAgICp0cCA9IHQ7CisgICAgcmV0dXJuIHJlczsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21PYmplY3QoX1B5VGltZV90ICp0LCBQeU9iamVjdCAqb2JqLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsCisgICAgICAgICAgICAgICAgICAgbG9uZyB0b19uYW5vc2Vjb25kcykKK3sKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLworICAgICAgICB2b2xhdGlsZSBkb3VibGUgZCwgZXJyOworCisgICAgICAgIC8qIGNvbnZlcnQgdG8gYSBudW1iZXIgb2YgbmFub3NlY29uZHMgKi8KKyAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgZCAqPSB0b19uYW5vc2Vjb25kczsKKworICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKQorICAgICAgICAgICAgZCA9IGNlaWwoZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKKworICAgICAgICAqdCA9IChfUHlUaW1lX3QpZDsKKyAgICAgICAgZXJyID0gZCAtIChkb3VibGUpKnQ7CisgICAgICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7CisgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgICAgIFBZX0xPTkdfTE9ORyBzZWM7CisgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7CisgICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisjZWxzZQorICAgICAgICBsb25nIHNlYzsKKyAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZyhvYmopOworICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworI2VuZGlmCisgICAgICAgIGlmIChzZWMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgICp0ID0gc2VjICogdG9fbmFub3NlY29uZHM7CisgICAgICAgIGlmICgqdCAvIHRvX25hbm9zZWNvbmRzICE9IHNlYykgeworICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworaW50CitfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0Zyb21PYmplY3QodCwgb2JqLCByb3VuZCwgU0VDX1RPX05TKTsKK30KKworaW50CitfUHlUaW1lX0Zyb21NaWxsaXNlY29uZHNPYmplY3QoX1B5VGltZV90ICp0LCBQeU9iamVjdCAqb2JqLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfRnJvbU9iamVjdCh0LCBvYmosIHJvdW5kLCBNU19UT19OUyk7Cit9CisKK2RvdWJsZQorX1B5VGltZV9Bc1NlY29uZHNEb3VibGUoX1B5VGltZV90IHQpCit7CisgICAgX1B5VGltZV90IHNlYywgbnM7CisgICAgLyogRGl2aWRlIHVzaW5nIGludGVnZXJzIHRvIGF2b2lkIHJvdW5kaW5nIGlzc3VlcyBvbiB0aGUgaW50ZWdlciBwYXJ0LgorICAgICAgIDFlLTkgY2Fubm90IGJlIHN0b3JlZCBleGFjdGx5IGluIElFRUUgNjQtYml0LiAqLworICAgIHNlYyA9IHQgLyBTRUNfVE9fTlM7CisgICAgbnMgPSB0ICUgU0VDX1RPX05TOworICAgIHJldHVybiAoZG91YmxlKXNlYyArIChkb3VibGUpbnMgKiAxZS05OworfQorCitQeU9iamVjdCAqCitfUHlUaW1lX0FzTmFub3NlY29uZHNPYmplY3QoX1B5VGltZV90IHQpCit7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPj0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdCk7CisjZWxzZQorICAgIGFzc2VydChzaXplb2YobG9uZykgPj0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdCk7CisjZW5kaWYKK30KKworc3RhdGljIF9QeVRpbWVfdAorX1B5VGltZV9EaXZpZGUoY29uc3QgX1B5VGltZV90IHQsIGNvbnN0IF9QeVRpbWVfdCBrLAorICAgICAgICAgICAgICAgY29uc3QgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIGFzc2VydChrID4gMSk7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgICAgICBpZiAodCA+PSAwKQorICAgICAgICAgICAgcmV0dXJuICh0ICsgayAtIDEpIC8gazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHQgLyBrOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgIHJldHVybiB0IC8gazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICh0IC0gKGsgLSAxKSkgLyBrOworICAgIH0KK30KKworX1B5VGltZV90CitfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKF9QeVRpbWVfdCB0LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfRGl2aWRlKHQsIE5TX1RPX01TLCByb3VuZCk7Cit9CisKK19QeVRpbWVfdAorX1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhfUHlUaW1lX3QgdCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0RpdmlkZSh0LCBOU19UT19VUywgcm91bmQpOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0FzVGltZXZhbF9pbXBsKF9QeVRpbWVfdCB0LCBfUHlUaW1lX3QgKnBfc2VjcywgaW50ICpwX3VzLAorICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgX1B5VGltZV90IHNlY3MsIG5zOworICAgIGludCB1c2VjOworICAgIGludCByZXMgPSAwOworCisgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgbnMgPSB0ICUgU0VDX1RPX05TOworCisgICAgdXNlYyA9IChpbnQpX1B5VGltZV9EaXZpZGUobnMsIFVTX1RPX05TLCByb3VuZCk7CisgICAgaWYgKHVzZWMgPCAwKSB7CisgICAgICAgIHVzZWMgKz0gU0VDX1RPX1VTOworICAgICAgICBpZiAoc2VjcyAhPSBfUHlUaW1lX01JTikKKyAgICAgICAgICAgIHNlY3MgLT0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gLTE7CisgICAgfQorICAgIGVsc2UgaWYgKHVzZWMgPj0gU0VDX1RPX1VTKSB7CisgICAgICAgIHVzZWMgLT0gU0VDX1RPX1VTOworICAgICAgICBpZiAoc2VjcyAhPSBfUHlUaW1lX01BWCkKKyAgICAgICAgICAgIHNlY3MgKz0gMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gLTE7CisgICAgfQorICAgIGFzc2VydCgwIDw9IHVzZWMgJiYgdXNlYyA8IFNFQ19UT19VUyk7CisKKyAgICAqcF9zZWNzID0gc2VjczsKKyAgICAqcF91cyA9IHVzZWM7CisKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0FzVGltZXZhbFN0cnVjdF9pbXBsKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXZhbCAqdHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCwgaW50IHJhaXNlKQoreworICAgIF9QeVRpbWVfdCBzZWNzOworICAgIGludCB1czsKKyAgICBpbnQgcmVzOworCisgICAgcmVzID0gX1B5VGltZV9Bc1RpbWV2YWxfaW1wbCh0LCAmc2VjcywgJnVzLCByb3VuZCk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgdHYtPnR2X3NlYyA9IChsb25nKXNlY3M7CisjZWxzZQorICAgIHR2LT50dl9zZWMgPSBzZWNzOworI2VuZGlmCisgICAgdHYtPnR2X3VzZWMgPSB1czsKKworICAgIGlmIChyZXMgPCAwIHx8IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK19QeVRpbWVfQXNUaW1ldmFsKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXZhbCAqdHYsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICByZXR1cm4gX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbCh0LCB0diwgcm91bmQsIDEpOworfQorCitpbnQKK19QeVRpbWVfQXNUaW1ldmFsX25vcmFpc2UoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1ldmFsICp0diwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIHJldHVybiBfUHlUaW1lX0FzVGltZXZhbFN0cnVjdF9pbXBsKHQsIHR2LCByb3VuZCwgMCk7Cit9CisKK2ludAorX1B5VGltZV9Bc1RpbWV2YWxUaW1lX3QoX1B5VGltZV90IHQsIHRpbWVfdCAqcF9zZWNzLCBpbnQgKnVzLAorICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIF9QeVRpbWVfdCBzZWNzOworICAgIGludCByZXM7CisKKyAgICByZXMgPSBfUHlUaW1lX0FzVGltZXZhbF9pbXBsKHQsICZzZWNzLCB1cywgcm91bmQpOworCisgICAgKnBfc2VjcyA9IHNlY3M7CisKKyAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KSpwX3NlY3MgIT0gc2VjcykgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSB8fCBkZWZpbmVkKEhBVkVfS1FVRVVFKQoraW50CitfUHlUaW1lX0FzVGltZXNwZWMoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCit7CisgICAgX1B5VGltZV90IHNlY3MsIG5zZWM7CisKKyAgICBzZWNzID0gdCAvIFNFQ19UT19OUzsKKyAgICBuc2VjID0gdCAlIFNFQ19UT19OUzsKKyAgICBpZiAobnNlYyA8IDApIHsKKyAgICAgICAgbnNlYyArPSBTRUNfVE9fTlM7CisgICAgICAgIHNlY3MgLT0gMTsKKyAgICB9CisgICAgdHMtPnR2X3NlYyA9ICh0aW1lX3Qpc2VjczsKKyAgICBpZiAoKF9QeVRpbWVfdCl0cy0+dHZfc2VjICE9IHNlY3MpIHsKKyAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRzLT50dl9uc2VjID0gbnNlYzsKKworICAgIGFzc2VydCgwIDw9IHRzLT50dl9uc2VjICYmIHRzLT50dl9uc2VjIDw9IDk5OTk5OTk5OSk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorcHlnZXR0aW1lb2ZkYXlfbmV3KF9QeVRpbWVfdCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8sIGludCByYWlzZSkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7CisgICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7CisKKyAgICBhc3NlcnQoaW5mbyA9PSBOVUxMIHx8IHJhaXNlKTsKKworICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7CisgICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMCwwMDA6IG51bWJlciBvZiBuYW5vc2Vjb25kcyBiZXR3ZWVuCisgICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCisgICAgICAgZGF5cykuICovCisgICAgKnRwID0gbGFyZ2UuUXVhZFBhcnQgKiAxMDAgLSAxMTY0NDQ3MzYwMDAwMDAwMDAwMDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQsIG9rOworCisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQorCisjZWxzZSAgIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBpbnQgZXJyOworI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQorICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKyNlbHNlCisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisjZW5kaWYKKworICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOworCisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgZXJyID0gY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoX1B5VGltZV9Gcm9tVGltZXNwZWModHAsICZ0cywgcmFpc2UpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgaWYgKGNsb2NrX2dldHJlcyhDTE9DS19SRUFMVElNRSwgJnJlcykgPT0gMCkKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSByZXMudHZfc2VjICsgcmVzLnR2X25zZWMgKiAxZS05OworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKKyAgICB9CisjZWxzZSAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworCisgICAgIC8qIHRlc3QgZ2V0dGltZW9mZGF5KCkgKi8KKyNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKKyAgICBlcnIgPSBnZXR0aW1lb2ZkYXkoJnR2KTsKKyNlbHNlCisgICAgZXJyID0gZ2V0dGltZW9mZGF5KCZ0diwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOworI2VuZGlmCisgICAgaWYgKGVycikgeworICAgICAgICBpZiAocmFpc2UpCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKF9QeVRpbWVfRnJvbVRpbWV2YWwodHAsICZ0diwgcmFpc2UpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiZ2V0dGltZW9mZGF5KCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMDsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQorI2VuZGlmICAgLyogIUhBVkVfQ0xPQ0tfR0VUVElNRSAqLworI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KKyAgICByZXR1cm4gMDsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0dldFN5c3RlbUNsb2NrKHZvaWQpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgaWYgKHB5Z2V0dGltZW9mZGF5X25ldygmdCwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIC8qIHNob3VsZCBub3QgaGFwcGVuLCBfUHlUaW1lX0luaXQoKSBjaGVja2VkIHRoZSBjbG9jayBhdCBzdGFydHVwICovCisgICAgICAgIGFzc2VydCgwKTsKKworICAgICAgICAvKiB1c2UgYSBmaXhlZCB2YWx1ZSBpbnN0ZWFkIG9mIGEgcmFuZG9tIHZhbHVlIGZyb20gdGhlIHN0YWNrICovCisgICAgICAgIHQgPSAwOworICAgIH0KKyAgICByZXR1cm4gdDsKK30KKworaW50CitfUHlUaW1lX0dldFN5c3RlbUNsb2NrV2l0aEluZm8oX1B5VGltZV90ICp0LCBfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworICAgIHJldHVybiBweWdldHRpbWVvZmRheV9uZXcodCwgaW5mbywgMSk7Cit9CisKKworc3RhdGljIGludAorcHltb25vdG9uaWMoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBVTE9OR0xPTkcgcmVzdWx0OworCisgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CisKKyAgICByZXN1bHQgPSBHZXRUaWNrQ291bnQ2NCgpOworCisgICAgKnRwID0gcmVzdWx0ICogTVNfVE9fTlM7CisgICAgaWYgKCp0cCAvIE1TX1RPX05TICE9IHJlc3VsdCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBIZWxsbywgdGltZSB0cmF2ZWxlciEgKi8KKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KKworICAgIGlmIChpbmZvKSB7CisgICAgICAgIERXT1JEIHRpbWVBZGp1c3RtZW50LCB0aW1lSW5jcmVtZW50OworICAgICAgICBCT09MIGlzVGltZUFkanVzdG1lbnREaXNhYmxlZCwgb2s7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFRpY2tDb3VudDY0KCkiOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBvayA9IEdldFN5c3RlbVRpbWVBZGp1c3RtZW50KCZ0aW1lQWRqdXN0bWVudCwgJnRpbWVJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorCisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBzdGF0aWMgbWFjaF90aW1lYmFzZV9pbmZvX2RhdGFfdCB0aW1lYmFzZTsKKyAgICB1aW50NjRfdCB0aW1lOworCisgICAgaWYgKHRpbWViYXNlLmRlbm9tID09IDApIHsKKyAgICAgICAgLyogQWNjb3JkaW5nIHRvIHRoZSBUZWNobmljYWwgUSZBIFFBMTM5OCwgbWFjaF90aW1lYmFzZV9pbmZvKCkgY2Fubm90CisgICAgICAgICAgIGZhaWw6IGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L21hYy8jcWEvcWExMzk4LyAqLworICAgICAgICAodm9pZCltYWNoX3RpbWViYXNlX2luZm8oJnRpbWViYXNlKTsKKyAgICB9CisKKyAgICB0aW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7CisKKyAgICAvKiBhcHBseSB0aW1lYmFzZSBmYWN0b3IgKi8KKyAgICB0aW1lICo9IHRpbWViYXNlLm51bWVyOworICAgIHRpbWUgLz0gdGltZWJhc2UuZGVub207CisKKyAgICAqdHAgPSB0aW1lOworCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAibWFjaF9hYnNvbHV0ZV90aW1lKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gKGRvdWJsZSl0aW1lYmFzZS5udW1lciAvIHRpbWViYXNlLmRlbm9tICogMWUtOTsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorCisjZWxzZQorICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX0hJR0hSRVM7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19ISUdIUkVTKSI7CisjZWxzZQorICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19NT05PVE9OSUM7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb24gPSAiY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMpIjsKKyNlbmRpZgorCisgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CisKKyAgICBpZiAoY2xvY2tfZ2V0dGltZShjbGtfaWQsICZ0cykgIT0gMCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbjsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgfQorICAgIGlmIChfUHlUaW1lX0Zyb21UaW1lc3BlYyh0cCwgJnRzLCByYWlzZSkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworX1B5VGltZV90CitfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKHZvaWQpCit7CisgICAgX1B5VGltZV90IHQ7CisgICAgaWYgKHB5bW9ub3RvbmljKCZ0LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgLyogc2hvdWxkIG5vdCBoYXBwZW4sIF9QeVRpbWVfSW5pdCgpIGNoZWNrZWQgdGhhdCBtb25vdG9uaWMgY2xvY2sgYXQKKyAgICAgICAgICAgc3RhcnR1cCAqLworICAgICAgICBhc3NlcnQoMCk7CisKKyAgICAgICAgLyogdXNlIGEgZml4ZWQgdmFsdWUgaW5zdGVhZCBvZiBhIHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBzdGFjayAqLworICAgICAgICB0ID0gMDsKKyAgICB9CisgICAgcmV0dXJuIHQ7Cit9CisKK2ludAorX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKF9QeVRpbWVfdCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisgICAgcmV0dXJuIHB5bW9ub3RvbmljKHRwLCBpbmZvLCAxKTsKK30KKworaW50CitfUHlUaW1lX0luaXQodm9pZCkKK3sKKyAgICBfUHlUaW1lX3QgdDsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBzeXN0ZW0gY2xvY2sgd29ya3MgKi8KKyAgICBpZiAoX1B5VGltZV9HZXRTeXN0ZW1DbG9ja1dpdGhJbmZvKCZ0LCBOVUxMKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzIGEgbW9ub3RvbmljIGNsb2NrICovCisgICAgaWYgKF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBjaGVjayB0aGF0IF9QeVRpbWVfRnJvbVNlY29uZHMoKSBjYW5ub3Qgb3ZlcmZsb3cgKi8KKyAgICBhc3NlcnQoSU5UX01BWCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUyk7CisgICAgYXNzZXJ0KElOVF9NSU4gPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpOworICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3JhbmRvbS5jIGIvUHl0aG9uL3JhbmRvbS5jCmluZGV4IDNmMzA3Y2YuLmVhMDllODQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9yYW5kb20uYworKysgYi9QeXRob24vcmFuZG9tLmMKQEAgLTEsMTEgKzEsMTQgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPgorIyAgaW5jbHVkZSA8d2luZG93cy5oPgogI2Vsc2UKLSNpbmNsdWRlIDxmY250bC5oPgotI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jZW5kaWYKKyMgIGluY2x1ZGUgPGZjbnRsLmg+CisjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyMgICAgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyMgIGVuZGlmCisjICBpZmRlZiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMCisjICAgIGluY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjICBlbmRpZgogI2VuZGlmCiAKICNpZmRlZiBQeV9ERUJVRwpAQCAtMTAyLDEzICsxMDUsNzMgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2Vsc2UKKyNlbHNlICAgLyogIUhBVkVfR0VURU5UUk9QWSAqLworCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorc3RhdGljIGludAorcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCit7CisgICAgLyogaXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8KKyAgICAgKiBuZWVkIExpbnV4IGtlcm5lbCAzLjE3IG9yIGxhdGVyICovCisgICAgc3RhdGljIGludCBnZXRyYW5kb21fd29ya3MgPSAxOworICAgIC8qIFVzZSAvZGV2L3VyYW5kb20sIGJsb2NrIGlmIHRoZSBrZXJuZWwgaGFzIG5vIGVudHJvcHkgKi8KKyAgICBjb25zdCBpbnQgZmxhZ3MgPSAwOworICAgIGludCBuOworCisgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgd2hpbGUgKDAgPCBzaXplKSB7CisgICAgICAgIGVycm5vID0gMDsKKworICAgICAgICAvKiBVc2Ugc3lzY2FsbCgpIGJlY2F1c2UgdGhlIGxpYmMgZG9lc24ndCBleHBvc2UgZ2V0cmFuZG9tKCkgeWV0LCBzZWU6CisgICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBzaXplLCBmbGFncyk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgYnVmZmVyLCBzaXplLCBmbGFncyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMpIHsKKyAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFyYWlzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBzaXplIC09IG47CisgICAgfQorICAgIHJldHVybiAxOworfQorI2VuZGlmCisKIHN0YXRpYyBzdHJ1Y3QgewogICAgIGludCBmZDsKICAgICBkZXZfdCBzdF9kZXY7CiAgICAgaW5vX3Qgc3RfaW5vOwogfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwogCisKIC8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KICAgIENhbGwgUHlfRmF0YWxFcnJvcigpIG9uIGVycm9yLiAqLwogc3RhdGljIHZvaWQKQEAgLTExOSw3ICsxODIsMTQgQEAKIAogICAgIGFzc2VydCAoMCA8IHNpemUpOwogCi0gICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkKKyAgICAgICAgcmV0dXJuOworICAgIC8qIGdldHJhbmRvbSgpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsLCBmYWxsIGJhY2sKKyAgICAgKiBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLworI2VuZGlmCisKKyAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKIApAQCAtMTQ3LDE0ICsyMTcsMjcgQEAKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIHN0cnVjdCBzdGF0IHN0OworICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorICAgIGludCByZXM7CisjZW5kaWYKIAogICAgIGlmIChzaXplIDw9IDApCiAgICAgICAgIHJldHVybiAwOwogCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDEpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHJlcyA9PSAxKQorICAgICAgICByZXR1cm4gMDsKKyAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCisgICAgICogb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KKyNlbmRpZgorCiAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewogICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCi0gICAgICAgIGlmIChmc3RhdCh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCisgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCiAgICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKICAgICAgICAgICAgIHx8IHN0LnN0X2lubyAhPSB1cmFuZG9tX2NhY2hlLnN0X2lubykgewogICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCkBAIC0xNjYsMTcgKzI0OSwxMyBAQAogICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCiAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICBlbHNlIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChmZCA8IDApCi0gICAgICAgIHsKKyAgICAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAogICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CkBAIC0xODYsOCArMjY1LDcgQEAKICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChmc3RhdChmZCwgJnN0KSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQpAQCAtMTk5LDI5ICsyNzcsMjEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBkbyB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAgICAgICAgaWYgKG4gPD0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSAoUHlfc3NpemVfdCluOwotICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKG4gPD0gMCkKLSAgICB7Ci0gICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCi0gICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgZWxzZQorICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgaWYgKG4gPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChuID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVhZCAlemkgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iLAorICAgICAgICAgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBzaXplIC09IG47CisgICAgfSB3aGlsZSAoMCA8IHNpemUpOworCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeW10YWJsZS5jIGIvUHl0aG9uL3N5bXRhYmxlLmMKaW5kZXggOTUxMjY3My4uNjQ5MTBkOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5bXRhYmxlLmMKKysrIGIvUHl0aG9uL3N5bXRhYmxlLmMKQEAgLTQ3LDcgKzQ3LDYgQEAKICAgICBzdGUtPnN0ZV9kaXJlY3RpdmVzID0gTlVMTDsKIAogICAgIHN0ZS0+c3RlX3R5cGUgPSBibG9jazsKLSAgICBzdGUtPnN0ZV91bm9wdGltaXplZCA9IDA7CiAgICAgc3RlLT5zdGVfbmVzdGVkID0gMDsKICAgICBzdGUtPnN0ZV9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV92YXJhcmdzID0gMDsKQEAgLTExMyw3ICsxMTIsNiBAQAogICAgIHsic3ltYm9scyIsICBUX09CSkVDVCwgT0ZGKHN0ZV9zeW1ib2xzKSwgUkVBRE9OTFl9LAogICAgIHsidmFybmFtZXMiLCBUX09CSkVDVCwgT0ZGKHN0ZV92YXJuYW1lcyksIFJFQURPTkxZfSwKICAgICB7ImNoaWxkcmVuIiwgVF9PQkpFQ1QsIE9GRihzdGVfY2hpbGRyZW4pLCBSRUFET05MWX0sCi0gICAgeyJvcHRpbWl6ZWQiLFRfSU5ULCAgICBPRkYoc3RlX3Vub3B0aW1pemVkKSwgUkVBRE9OTFl9LAogICAgIHsibmVzdGVkIiwgICBUX0lOVCwgICAgT0ZGKHN0ZV9uZXN0ZWQpLCBSRUFET05MWX0sCiAgICAgeyJ0eXBlIiwgICAgIFRfSU5ULCAgICBPRkYoc3RlX3R5cGUpLCBSRUFET05MWX0sCiAgICAgeyJsaW5lbm8iLCAgIFRfSU5ULCAgICBPRkYoc3RlX2xpbmVubyksIFJFQURPTkxZfSwKQEAgLTE4Miw3ICsxODAsNyBAQAogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9wYXJhbXMoc3RydWN0IHN5bXRhYmxlICpzdCwgYXNkbF9zZXEgKmFyZ3MpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9hcmdhbm5vdGF0aW9ucyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBhc2RsX3NlcSAqYXJncyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpbnQgcG9zKTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzKTsKK3N0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgc3RtdF90eSBzLCBhcmd1bWVudHNfdHksIGV4cHJfdHkpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKTsKIAogCkBAIC0yNzEsNyArMjY5LDYgQEAKICAgICB9CiAKICAgICBzdC0+c3RfdG9wID0gc3QtPnN0X2N1cjsKLSAgICBzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgPSBPUFRfVE9QTEVWRUw7CiAgICAgc3dpdGNoIChtb2QtPmtpbmQpIHsKICAgICBjYXNlIE1vZHVsZV9raW5kOgogICAgICAgICBzZXEgPSBtb2QtPnYuTW9kdWxlLmJvZHk7CkBAIC0xMDg2LDEzICsxMDgzLDEzIEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfS1dPTkxZREVGQVVMVFMoU1QsIEtXX0RFRkFVTFRTKSB7IFwKKyNkZWZpbmUgVklTSVRfU0VRX1dJVEhfTlVMTChTVCwgVFlQRSwgU0VRKSB7ICAgICBcCiAgICAgaW50IGkgPSAwOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChLV19ERUZBVUxUUyk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXAorICAgIGFzZGxfc2VxICpzZXEgPSAoU0VRKTsgLyogYXZvaWQgdmFyaWFibGUgY2FwdHVyZSAqLyBcCiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsgXAotICAgICAgICBleHByX3R5IGVsdCA9IChleHByX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOyBcCisgICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAogICAgICAgICBpZiAoIWVsdCkgY29udGludWU7IC8qIGNhbiBiZSBOVUxMICovIFwKLSAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF9leHByKChTVCksIGVsdCkpIFwKKyAgICAgICAgaWYgKCFzeW10YWJsZV92aXNpdF8gIyMgVFlQRSgoU1QpLCBlbHQpKSBcCiAgICAgICAgICAgICBWSVNJVF9RVUlUKChTVCksIDApOyAgICAgICAgICAgICBcCiAgICAgfSBcCiB9CkBAIC0xMTM4LDcgKzExMzUsNyBAQAogc3ltdGFibGVfdmlzaXRfc3RtdChzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpCiB7CiAgICAgaWYgKCsrc3QtPnJlY3Vyc2lvbl9kZXB0aCA+IHN0LT5yZWN1cnNpb25fbGltaXQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1JlY3Vyc2lvbkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkIGR1cmluZyBjb21waWxhdGlvbiIpOwogICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICB9CkBAIC0xMTQ5LDkgKzExNDYsOSBAQAogICAgICAgICBpZiAocy0+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+di5Bc3luY0Zvci5vcmVsc2UpOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgVklTSVRfUVVJVChzdCwgMSk7CiB9CkBAIC0xMzQzLDcgKzEzNTcsNyBAQAogc3ltdGFibGVfdmlzaXRfZXhwcihzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBleHByX3R5IGUpCiB7CiAgICAgaWYgKCsrc3QtPnJlY3Vyc2lvbl9kZXB0aCA+IHN0LT5yZWN1cnNpb25fbGltaXQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1JlY3Vyc2lvbkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkIGR1cmluZyBjb21waWxhdGlvbiIpOwogICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICB9CkBAIC0xMzY0LDggKzEzNzgsNyBAQAogICAgICAgICBpZiAoZS0+di5MYW1iZGEuYXJncy0+ZGVmYXVsdHMpCiAgICAgICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuTGFtYmRhLmFyZ3MtPmRlZmF1bHRzKTsKICAgICAgICAgaWYgKGUtPnYuTGFtYmRhLmFyZ3MtPmt3X2RlZmF1bHRzKQotICAgICAgICAgICAgVklTSVRfS1dPTkxZREVGQVVMVFMoc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkxhbWJkYS5hcmdzLT5rd19kZWZhdWx0cyk7CisgICAgICAgICAgICBWSVNJVF9TRVFfV0lUSF9OVUxMKHN0LCBleHByLCBlLT52LkxhbWJkYS5hcmdzLT5rd19kZWZhdWx0cyk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZW50ZXJfYmxvY2soc3QsIGxhbWJkYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKWUsIGUtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT5jb2xfb2Zmc2V0KSkKQEAgLTEzODIsNyArMTM5NSw3IEBACiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LklmRXhwLm9yZWxzZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGljdF9raW5kOgotICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuRGljdC5rZXlzKTsKKyAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwgZXhwciwgZS0+di5EaWN0LmtleXMpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuRGljdC52YWx1ZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldF9raW5kOgpAQCAtMTQxMyw2ICsxNDI2LDEwIEBACiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LllpZWxkRnJvbS52YWx1ZSk7CiAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAxOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEF3YWl0X2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Db21wYXJlLmxlZnQpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5jb21wYXJhdG9ycyk7CkBAIC0xNDIwLDExICsxNDM3LDcgQEAKICAgICBjYXNlIENhbGxfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ2FsbC5mdW5jKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBlLT52LkNhbGwuYXJncyk7Ci0gICAgICAgIFZJU0lUX1NFUShzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKLSAgICAgICAgaWYgKGUtPnYuQ2FsbC5zdGFyYXJncykKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNhbGwuc3RhcmFyZ3MpOwotICAgICAgICBpZiAoZS0+di5DYWxsLmt3YXJncykKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNhbGwua3dhcmdzKTsKKyAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICBjYXNlIFN0cl9raW5kOgpAQCAtMTUxNywxMCArMTUzMCw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLXN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcykKK3N5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c190eSBhLCBleHByX3R5IHJldHVybnMpCiB7Ci0gICAgYXJndW1lbnRzX3R5IGEgPSBzLT52LkZ1bmN0aW9uRGVmLmFyZ3M7Ci0KICAgICBpZiAoYS0+YXJncyAmJiAhc3ltdGFibGVfdmlzaXRfYXJnYW5ub3RhdGlvbnMoc3QsIGEtPmFyZ3MpKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoYS0+dmFyYXJnICYmIGEtPnZhcmFyZy0+YW5ub3RhdGlvbikKQEAgLTE1MjksOCArMTU0MSw4IEBACiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBhLT5rd2FyZy0+YW5ub3RhdGlvbik7CiAgICAgaWYgKGEtPmt3b25seWFyZ3MgJiYgIXN5bXRhYmxlX3Zpc2l0X2FyZ2Fubm90YXRpb25zKHN0LCBhLT5rd29ubHlhcmdzKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHMtPnYuRnVuY3Rpb25EZWYucmV0dXJucykKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuRnVuY3Rpb25EZWYucmV0dXJucyk7CisgICAgaWYgKHJldHVybnMpCisgICAgICAgIFZJU0lUKHN0LCBleHByLCByZXR1cm5zKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTYxNSw3ICsxNjI3LDYgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdG9yZV9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIHN0LT5zdF9jdXItPnN0ZV91bm9wdGltaXplZCB8PSBPUFRfSU1QT1JUX1NUQVI7CiAgICAgICAgIFB5X0RFQ1JFRihzdG9yZV9uYW1lKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IDI5MGVlYzEuLmY2MDBiYWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYworKysgYi9QeXRob24vc3lzbW9kdWxlLmMKQEAgLTY0NSw2ICs2NDUsNDggQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3N5c19zZXRfY29yb3V0aW5lX3dyYXBwZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp3cmFwcGVyKQoreworICAgIGlmICh3cmFwcGVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHdyYXBwZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHdyYXBwZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcih3cmFwcGVyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcihOVUxMKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jLAorInNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKVxuXAorXG5cCitTZXQgYSB3cmFwcGVyIGZvciBjb3JvdXRpbmUgb2JqZWN0cy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldF9jb3JvdXRpbmVfd3JhcHBlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKndyYXBwZXIgPSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIoKTsKKyAgICBpZiAod3JhcHBlciA9PSBOVUxMKSB7CisgICAgICAgIHdyYXBwZXIgPSBQeV9Ob25lOworICAgIH0KKyAgICBQeV9JTkNSRUYod3JhcHBlcik7CisgICAgcmV0dXJuIHdyYXBwZXI7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jLAorImdldF9jb3JvdXRpbmVfd3JhcHBlcigpXG5cCitcblwKK1JldHVybiB0aGUgd3JhcHBlciBmb3IgY29yb3V0aW5lIG9iamVjdHMgc2V0IGJ5IHN5cy5zZXRfY29yb3V0aW5lX3dyYXBwZXIuIgorKTsKKworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEhhc2hfSW5mb1R5cGU7CiAKIFB5RG9jX1NUUlZBUihoYXNoX2luZm9fZG9jLApAQCAtNzcyLDYgKzgxNCwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlhIGluZGV4aW5nLCB0aGUgcmVzdCBhcmUgbmFtZSBvbmx5ICovCiB9OwogCisvKiBEaXNhYmxlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGFib3V0IEdldFZlcnNpb25FeCBhcyB0aGUgcmVzdWx0IGlzCisgICBiZWluZyBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgY2FsbGVyLCB3aG8gaXMgcmVzcG9uc2libGUgZm9yCisgICB1c2luZyBpdCBjb3JyZWN0bHkuICovCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpCisKIHN0YXRpYyBQeU9iamVjdCAqCiBzeXNfZ2V0d2luZG93c3ZlcnNpb24oUHlPYmplY3QgKnNlbGYpCiB7CkBAIC04MDMsNiArODUxLDggQEAKICAgICByZXR1cm4gdmVyc2lvbjsKIH0KIAorI3ByYWdtYSB3YXJuaW5nKHBvcCkKKwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmZGVmIEhBVkVfRExPUEVOCkBAIC0xMTIxLDYgKzExNzEsMTYgQEAKICJfY2xlYXJfdHlwZV9jYWNoZSgpIC0+IE5vbmVcblwKIENsZWFyIHRoZSBpbnRlcm5hbCB0eXBlIGxvb2t1cCBjYWNoZS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3N5c19pc19maW5hbGl6aW5nKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKF9QeV9GaW5hbGl6aW5nICE9IE5VTEwpOworfQorCitQeURvY19TVFJWQVIoaXNfZmluYWxpemluZ19kb2MsCisiaXNfZmluYWxpemluZygpXG5cCitSZXR1cm4gVHJ1ZSBpZiBQeXRob24gaXMgZXhpdGluZy4iKTsKKwogCiBzdGF0aWMgUHlNZXRob2REZWYgc3lzX21ldGhvZHNbXSA9IHsKICAgICAvKiBNaWdodCBhcyB3ZWxsIGtlZXAgdGhpcyBpbiBhbHBoYWJldGljIG9yZGVyICovCkBAIC0xMTY3LDYgKzEyMjcsNyBAQAogICAgICBnZXR3aW5kb3dzdmVyc2lvbl9kb2N9LAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICB7ImludGVybiIsICAgICAgICAgIHN5c19pbnRlcm4sICAgICBNRVRIX1ZBUkFSR1MsIGludGVybl9kb2N9LAorICAgIHsiaXNfZmluYWxpemluZyIsICAgc3lzX2lzX2ZpbmFsaXppbmcsIE1FVEhfTk9BUkdTLCBpc19maW5hbGl6aW5nX2RvY30sCiAjaWZkZWYgVVNFX01BTExPUFQKICAgICB7Im1kZWJ1ZyIsICAgICAgICAgIHN5c19tZGVidWcsIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKQEAgLTExOTYsNiArMTI1NywxMCBAQAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKICAgICB7Il9kZWJ1Z21hbGxvY3N0YXRzIiwgc3lzX2RlYnVnbWFsbG9jc3RhdHMsIE1FVEhfTk9BUkdTLAogICAgICBkZWJ1Z21hbGxvY3N0YXRzX2RvY30sCisgICAgeyJzZXRfY29yb3V0aW5lX3dyYXBwZXIiLCBzeXNfc2V0X2Nvcm91dGluZV93cmFwcGVyLCBNRVRIX08sCisgICAgIHNldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAorICAgIHsiZ2V0X2Nvcm91dGluZV93cmFwcGVyIiwgc3lzX2dldF9jb3JvdXRpbmVfd3JhcHBlciwgTUVUSF9OT0FSR1MsCisgICAgIGdldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNjcwLDggKzE3MzUsOCBAQAogICAgIHRoZSBzaGVsbCBhbHJlYWR5IHByZXZlbnRzIHRoYXQuICovCiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICB7Ci0gICAgICAgIHN0cnVjdCBzdGF0IHNiOwotICAgICAgICBpZiAoZnN0YXQoZmlsZW5vKHN0ZGluKSwgJnNiKSA9PSAwICYmCisgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc2I7CisgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZShmaWxlbm8oc3RkaW4pLCAmc2IpID09IDAgJiYKICAgICAgICAgICAgIFNfSVNESVIoc2Iuc3RfbW9kZSkpIHsKICAgICAgICAgICAgIC8qIFRoZXJlJ3Mgbm90aGluZyBtb3JlIHdlIGNhbiBkby4gKi8KICAgICAgICAgICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSB3aWxsIGNvcmUgZHVtcCwgc28ganVzdCBleGl0LiAqLwpAQCAtMTY4MSw3ICsxNzQ2LDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIC8qIHN0ZGluL3N0ZG91dC9zdGRlcnIgYXJlIG5vdyBzZXQgYnkgcHl0aG9ucnVuLmMgKi8KKyAgICAvKiBzdGRpbi9zdGRvdXQvc3RkZXJyIGFyZSBzZXQgaW4gcHlsaWZlY3ljbGUuYyAqLwogCiAgICAgU0VUX1NZU19GUk9NX1NUUklOR19CT1JST1coIl9fZGlzcGxheWhvb2tfXyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW1TdHJpbmcoc3lzZGljdCwgImRpc3BsYXlob29rIikpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZC5jIGIvUHl0aG9uL3RocmVhZC5jCmluZGV4IDRlNjk1YWUuLjQ0YzA3MWUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWQuYworKysgYi9QeXRob24vdGhyZWFkLmMKQEAgLTQzMSw3ICs0MzEsNyBAQAogICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKICAgICB2YWx1ZSA9IE5VTEw7CiAgICAgbGVuID0gY29uZnN0cihfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Ci0gICAgaWYgKDEgPCBsZW4gJiYgbGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICBpZiAoMSA8IGxlbiAmJiAoc2l6ZV90KWxlbiA8IHNpemVvZihidWZmZXIpKSB7CiAgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmZmVyLCBsZW4tMSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfZm9vYmFyLmggYi9QeXRob24vdGhyZWFkX2Zvb2Jhci5oCmluZGV4IGQyYjc4YzUuLmVhOTZmOWMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfZm9vYmFyLmgKKysrIGIvUHl0aG9uL3RocmVhZF9mb29iYXIuaApAQCAtMSw0ICsxLDMgQEAKLQogLyoKICAqIEluaXRpYWxpemF0aW9uLgogICovCkBAIC02MSwxMCArNjAsMTggQEAKIGludAogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCiB7CisgICAgcmV0dXJuIFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZChsb2NrLCB3YWl0ZmxhZyA/IC0xIDogMCwgMCk7Cit9CisKK1B5TG9ja1N0YXR1cworUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBQWV9USU1FT1VUX1QgbWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnRyX2ZsYWcpCit7CiAgICAgaW50IHN1Y2Nlc3M7CiAKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKKyAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKCVwLCAlbGxkLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCBtaWNyb3NlY29uZHMsIGludHJfZmxhZykpOworICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQoJXAsICVsbGQsICVkKSAtPiAlZFxuIiwKKwkgICAgIGxvY2ssIG1pY3Jvc2Vjb25kcywgaW50cl9mbGFnLCBzdWNjZXNzKSk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKQEAgLTczLDMgKzgwLDUzIEBACiB7CiAgICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7CiB9CisKKy8qIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgbmVlZGVkIGlmIG5hdGl2ZSBUTFMgc3VwcG9ydCBleGlzdHMgKi8KKyNkZWZpbmUgUHlfSEFWRV9OQVRJVkVfVExTCisKKyNpZmRlZiBQeV9IQVZFX05BVElWRV9UTFMKK2ludAorUHlUaHJlYWRfY3JlYXRlX2tleSh2b2lkKQoreworICAgIGludCByZXN1bHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZAorUHlUaHJlYWRfZGVsZXRlX2tleShpbnQga2V5KQoreworCit9CisKK2ludAorUHlUaHJlYWRfc2V0X2tleV92YWx1ZShpbnQga2V5LCB2b2lkICp2YWx1ZSkKK3sKKyAgICBpbnQgb2s7CisKKyAgICAvKiBBIGZhaWx1cmUgaW4gdGhpcyBjYXNlIHJldHVybnMgLTEgKi8KKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgKgorUHlUaHJlYWRfZ2V0X2tleV92YWx1ZShpbnQga2V5KQoreworICAgIHZvaWQgKnJlc3VsdDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQKK1B5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUoaW50IGtleSkKK3sKKworfQorCit2b2lkCitQeVRocmVhZF9SZUluaXRUTFModm9pZCkKK3sKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKaW5kZXggZDlmN2M3Ni4uMjdlMGRjOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKQEAgLTYwOCw3ICs2MDgsMTUgQEAKIHsKICAgICBwdGhyZWFkX2tleV90IGtleTsKICAgICBpbnQgZmFpbCA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgma2V5LCBOVUxMKTsKLSAgICByZXR1cm4gZmFpbCA/IC0xIDoga2V5OworICAgIGlmIChmYWlsKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGtleSA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogSXNzdWUgIzIyMjA2OiBoYW5kbGUgaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICBwdGhyZWFkX2tleV9kZWxldGUoa2V5KTsKKyAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIChpbnQpa2V5OwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggN2QxZmMyZS4uOTQxZDFjYiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMTMsNyArMTMsNyBAQAogCiAjZGVmaW5lIE9GRih4KSBvZmZzZXRvZihQeVRyYWNlYmFja09iamVjdCwgeCkKIAotI2RlZmluZSBQVVRTKGZkLCBzdHIpIHdyaXRlKGZkLCBzdHIsIChpbnQpc3RybGVuKHN0cikpCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKICNkZWZpbmUgTUFYX1NUUklOR19MRU5HVEggNTAwCiAjZGVmaW5lIE1BWF9GUkFNRV9ERVBUSCAxMDAKICNkZWZpbmUgTUFYX05USFJFQURTIDEwMApAQCAtMjMxLDcgKzIzMSw3IEBACiAgICAgICAgIH0KICAgICAgICAgc3RyY3B5KG5hbWVidWYsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGgpKTsKICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICBpZiAoc3RybGVuKG5hbWVidWYpICE9IGxlbikKKyAgICAgICAgaWYgKHN0cmxlbihuYW1lYnVmKSAhPSAoc2l6ZV90KWxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB2IGNvbnRhaW5zICdcMCcgKi8KICAgICAgICAgaWYgKGxlbiA+IDAgJiYgbmFtZWJ1ZltsZW4tMV0gIT0gU0VQKQogICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CkBAIC01MTIsNyArNTEyLDcgQEAKICAgICAgICAgbGVuKys7CiAgICAgfSB3aGlsZSAodmFsdWUpOwogICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICB3cml0ZShmZCwgYnVmZmVyLCBsZW4pOworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CiB9CiAKIC8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAweGZmZmZmZmZmXSB0byBoZXhhZGVjaW1hbCBvZiAnd2lkdGgnIGRpZ2l0cywKQEAgLTUzMiw3ICs1MzIsNyBAQAogICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlIChsZW4gPCB3aWR0aCB8fCB2YWx1ZSk7CiAgICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIHdyaXRlKGZkLCBidWZmZXIsIGxlbik7CisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKIH0KIAogLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgpAQCAtNTgyLDE1ICs1ODIsMTYgQEAKICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNoID0gd3N0cltpXTsKLSAgICAgICAgaWYgKGNoIDwgMTI4KSB7CisgICAgICAgIGlmICgnICcgPD0gY2ggJiYgY2ggPD0gMTI2KSB7CisgICAgICAgICAgICAvKiBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBjaGFyIGMgPSAoY2hhciljaDsKLSAgICAgICAgICAgIHdyaXRlKGZkLCAmYywgMSk7CisgICAgICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgJmMsIDEpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoIDwgMHhmZikgeworICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx4Iik7CiAgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgMik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAweGZmZmYpIHsKKyAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZmZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7CiAgICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgNCk7CiAgICAgICAgIH0KQEAgLTYxOCw5ICs2MTksOSBAQAogICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fZmlsZW5hbWUgIT0gTlVMTAogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQogICAgIHsKLSAgICAgICAgd3JpdGUoZmQsICJcIiIsIDEpOworICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOwotICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgICAgIFBVVFMoZmQsICJcIiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKICAgICB9CkBAIC02MzcsNyArNjM4LDcgQEAKICAgICBlbHNlCiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKIAotICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKKyAgICBQVVRTKGZkLCAiXG4iKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTY2Nyw2ICs2NjgsMTIgQEAKICAgICB9CiB9CiAKKy8qIER1bXAgdGhlIHRyYWNlYmFjayBvZiBhIFB5dGhvbiB0aHJlYWQgaW50byBmZC4gVXNlIHdyaXRlKCkgdG8gd3JpdGUgdGhlCisgICB0cmFjZWJhY2sgYW5kIHJldHJ5IGlmIHdyaXRlKCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoCisgICBFSU5UUiksIGJ1dCBkb24ndCBjYWxsIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIuCisKKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSB0byBjYWxsIFB5dGhvbiBzaWduYWwKKyAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIHZvaWQKIF9QeV9EdW1wVHJhY2ViYWNrKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQogewpAQCAtNjg1LDEwICs2OTIsMTYgQEAKICAgICAgICAgUFVUUyhmZCwgIkN1cnJlbnQgdGhyZWFkIDB4Iik7CiAgICAgZWxzZQogICAgICAgICBQVVRTKGZkLCAiVGhyZWFkIDB4Iik7Ci0gICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIHNpemVvZihsb25nKSoyKTsKKyAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIpOwogICAgIFBVVFMoZmQsICIgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CiB9CiAKKy8qIER1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgUHl0aG9uIHRocmVhZHMgaW50byBmZC4gVXNlIHdyaXRlKCkgdG8gd3JpdGUgdGhlCisgICB0cmFjZWJhY2sgYW5kIHJldHJ5IGlmIHdyaXRlKCkgaXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGZhaWxlZCB3aXRoCisgICBFSU5UUiksIGJ1dCBkb24ndCBjYWxsIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIuCisKKyAgIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgdG8gY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSB0byBjYWxsIFB5dGhvbiBzaWduYWwKKyAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIGNvbnN0IGNoYXIqCiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKICAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKQEAgLTcwNCwxMCArNzE3LDExIEBACiAgICAgLyogRHVtcCB0aGUgdHJhY2ViYWNrIG9mIGVhY2ggdGhyZWFkICovCiAgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKICAgICBudGhyZWFkcyA9IDA7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGRvCiAgICAgewogICAgICAgICBpZiAobnRocmVhZHMgIT0gMCkKLSAgICAgICAgICAgIHdyaXRlKGZkLCAiXG4iLCAxKTsKKyAgICAgICAgICAgIFBVVFMoZmQsICJcbiIpOwogICAgICAgICBpZiAobnRocmVhZHMgPj0gTUFYX05USFJFQURTKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzE3LDYgKzczMSw3IEBACiAgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOwogICAgICAgICBudGhyZWFkcysrOwogICAgIH0gd2hpbGUgKHRzdGF0ZSAhPSBOVUxMKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCiAgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggMjc3NTE1MS4uZDM3Yjk2YiAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSwxMyArMSwxNCBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjQuMworVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjUuMAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsCiAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAotUHl0aG9uIDMueCBpcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIDIueAotbGluZSBvZiByZWxlYXNlcy4gIFRoZSBsYW5ndWFnZSBpcyBtb3N0bHkgdGhlIHNhbWUsIGJ1dCBtYW55IGRldGFpbHMsIGVzcGVjaWFsbHkKLWhvdyBidWlsdC1pbiBvYmplY3RzIGxpa2UgZGljdGlvbmFyaWVzIGFuZCBzdHJpbmdzIHdvcmssIGhhdmUgY2hhbmdlZAotY29uc2lkZXJhYmx5LCBhbmQgYSBsb3Qgb2YgZGVwcmVjYXRlZCBmZWF0dXJlcyBoYXZlIGZpbmFsbHkgYmVlbiByZW1vdmVkLgorUHl0aG9uIDMueCBpcyBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlCisyLnggbGluZSBvZiByZWxlYXNlcy4gIFRoZSBsYW5ndWFnZSBpcyBtb3N0bHkgdGhlIHNhbWUsIGJ1dCBtYW55IGRldGFpbHMsCitlc3BlY2lhbGx5IGhvdyBidWlsdC1pbiBvYmplY3RzIGxpa2UgZGljdGlvbmFyaWVzIGFuZCBzdHJpbmdzIHdvcmssCitoYXZlIGNoYW5nZWQgY29uc2lkZXJhYmx5LCBhbmQgYSBsb3Qgb2YgZGVwcmVjYXRlZCBmZWF0dXJlcyBoYXZlIGZpbmFsbHkKK2JlZW4gcmVtb3ZlZC4KIAogCiBCdWlsZCBJbnN0cnVjdGlvbnMKQEAgLTE1LDggKzE2LDYgQEAKIAogT24gVW5peCwgTGludXgsIEJTRCwgT1NYLCBhbmQgQ3lnd2luOgogCi1OZXcgdGV4dAotCiAgICAgLi9jb25maWd1cmUKICAgICBtYWtlCiAgICAgbWFrZSB0ZXN0CkBAIC0yOSwxNCArMjgsMTQgQEAKIGVsc2V3aGVyZSBpdCdzIGp1c3QgcHl0aG9uLgogCiBPbiBNYWMgT1MgWCwgaWYgeW91IGhhdmUgY29uZmlndXJlZCBQeXRob24gd2l0aCAtLWVuYWJsZS1mcmFtZXdvcmssIHlvdSBzaG91bGQKLXVzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMgdGhlCi1QeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heSB3YW50IHRvCi1zZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgordXNlICJtYWtlIGZyYW1ld29ya2luc3RhbGwiIHRvIGRvIHRoZSBpbnN0YWxsYXRpb24uICBOb3RlIHRoYXQgdGhpcyBpbnN0YWxscwordGhlIFB5dGhvbiBleGVjdXRhYmxlIGluIGEgcGxhY2UgdGhhdCBpcyBub3Qgbm9ybWFsbHkgb24geW91ciBQQVRILCB5b3UgbWF5Cit3YW50IHRvIHNldCB1cCBhIHN5bWxpbmsgaW4gL3Vzci9sb2NhbC9iaW4uCiAKIE9uIFdpbmRvd3MsIHNlZSBQQ2J1aWxkL3JlYWRtZS50eHQuCiAKLUlmIHlvdSB3aXNoLCB5b3UgY2FuIGNyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgaW52b2tlIGNvbmZpZ3VyZSBmcm9tIHRoZXJlLiAgRm9yCi1leGFtcGxlOgorSWYgeW91IHdpc2gsIHlvdSBjYW4gY3JlYXRlIGEgc3ViZGlyZWN0b3J5IGFuZCBpbnZva2UgY29uZmlndXJlIGZyb20gdGhlcmUuCitGb3IgZXhhbXBsZToKIAogICAgIG1rZGlyIGRlYnVnCiAgICAgY2QgZGVidWcKQEAgLTQ0LDIxICs0MywyMSBAQAogICAgIG1ha2UKICAgICBtYWtlIHRlc3QKIAotKFRoaXMgd2lsbCBmYWlsIGlmIHlvdSAqYWxzbyogYnVpbHQgYXQgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuICBZb3Ugc2hvdWxkIGRvIGEKLSJtYWtlIGNsZWFuIiBhdCB0aGUgdG9wbGV2ZWwgZmlyc3QuKQorKFRoaXMgd2lsbCBmYWlsIGlmIHlvdSAqYWxzbyogYnVpbHQgYXQgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCitZb3Ugc2hvdWxkIGRvIGEgIm1ha2UgY2xlYW4iIGF0IHRoZSB0b3BsZXZlbCBmaXJzdC4pCiAKIAogV2hhdCdzIE5ldwogLS0tLS0tLS0tLQogCi1XZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy40IiBkb2N1bWVudCwgZm91bmQgYXQKK1dlIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgorUHl0aG9uIDMuNSIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC93aGF0c25ldy8zLjQuaHRtbAorICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3LzMuNS5odG1sCiAKLUZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywgaXMKLWluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43IHJlbGVhc2UgdW5kZXIKLWRldmVsb3BtZW50KS4KK0ZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywKK2lzIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43CityZWxlYXNlIHVuZGVyIGRldmVsb3BtZW50KS4KIAogSWYgeW91IHdhbnQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gc2VlIHRoZSBzZWN0aW9uIGJlbG93CiBlbnRpdGxlZCAiSW5zdGFsbGluZyBtdWx0aXBsZSB2ZXJzaW9ucyIuCkBAIC02Nyw5ICs2Niw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjQgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNSBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNC8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC05NCwxNiArOTMsMTcgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjQvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCiBUZXN0aW5nCiAtLS0tLS0tCiAKLVRvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgVGhlIHRlc3QKLXNldCBwcm9kdWNlcyBzb21lIG91dHB1dC4gIFlvdSBjYW4gZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMgYWJvdXQgc2tpcHBlZAotdGVzdHMgZHVlIHRvIG9wdGlvbmFsIGZlYXR1cmVzIHdoaWNoIGNhbid0IGJlIGltcG9ydGVkLiAgSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQKLWFib3V0IGEgZmFpbGVkIHRlc3Qgb3IgYSB0cmFjZWJhY2sgb3IgY29yZSBkdW1wIGlzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCitUbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4KK1RoZSB0ZXN0IHNldCBwcm9kdWNlcyBzb21lIG91dHB1dC4gIFlvdSBjYW4gZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMKK2Fib3V0IHNraXBwZWQgdGVzdHMgZHVlIHRvIG9wdGlvbmFsIGZlYXR1cmVzIHdoaWNoIGNhbid0IGJlIGltcG9ydGVkLgorSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQgYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjayBvciBjb3JlIGR1bXAKK2lzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCiAKIEJ5IGRlZmF1bHQsIHRlc3RzIGFyZSBwcmV2ZW50ZWQgZnJvbSBvdmVydXNpbmcgcmVzb3VyY2VzIGxpa2UgZGlzayBzcGFjZSBhbmQKIG1lbW9yeS4gIFRvIGVuYWJsZSB0aGVzZSB0ZXN0cywgcnVuICJtYWtlIHRlc3RhbGwiLgpAQCAtMTIzLDE2ICsxMjMsMTYgQEAKIAogT24gVW5peCBhbmQgTWFjIHN5c3RlbXMgaWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbgogdXNpbmcgdGhlIHNhbWUgaW5zdGFsbGF0aW9uIHByZWZpeCAoLS1wcmVmaXggYXJndW1lbnQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQpCi15b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZQotaW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZCB1c2luZwotIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKLXNpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzIHRvCi0ke3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZyB0aGUKLXNhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiIHZlcnNpb24uCi1JbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCi0ibWFrZSBhbHRpbnN0YWxsIi4KK3lvdSBtdXN0IHRha2UgY2FyZSB0aGF0IHlvdXIgcHJpbWFyeSBweXRob24gZXhlY3V0YWJsZSBpcyBub3Qgb3ZlcndyaXR0ZW4gYnkKK3RoZSBpbnN0YWxsYXRpb24gb2YgYSBkaWZmZXJlbnQgdmVyc2lvbi4gIEFsbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW5zdGFsbGVkCit1c2luZyAibWFrZSBhbHRpbnN0YWxsIiBjb250YWluIHRoZSBtYWpvciBhbmQgbWlub3IgdmVyc2lvbiBhbmQgY2FuIHRodXMgbGl2ZQorc2lkZS1ieS1zaWRlLiAgIm1ha2UgaW5zdGFsbCIgYWxzbyBjcmVhdGVzICR7cHJlZml4fS9iaW4vcHl0aG9uMyB3aGljaCByZWZlcnMKK3RvICR7cHJlZml4fS9iaW4vcHl0aG9uWC5ZLiAgSWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIHVzaW5nCit0aGUgc2FtZSBwcmVmaXggeW91IG11c3QgZGVjaWRlIHdoaWNoIHZlcnNpb24gKGlmIGFueSkgaXMgeW91ciAicHJpbWFyeSIKK3ZlcnNpb24uICBJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyCit2ZXJzaW9ucyB1c2luZyAibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjQgd2l0aCAyLjcgYmVpbmcgdGhlCitGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuNSB3aXRoIDIuNyBiZWluZyB0aGUKIHByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjcgYnVpbGQgZGlyZWN0b3J5CiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgaW4gdGhlIG90aGVycy4KIApAQCAtMTQxLDcgKzE0MSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2UncmUgc29saWNpdGluZyBidWcgcmVwb3J0cyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUgbGFuZ3VhZ2UuICBGaXhlcyBhcmUgYWxzbwotd2VsY29tZSwgcHJlZmVyYWJsZSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKK3dlbGNvbWUsIHByZWZlcmFibHkgaW4gdW5pZmllZCBkaWZmIGZvcm1hdC4gIFBsZWFzZSB1c2UgdGhlIGlzc3VlIHRyYWNrZXI6CiAKICAgICBodHRwOi8vYnVncy5weXRob24ub3JnLwogCkBAIC0xNjgsNyArMTY4LDcgQEAKIFJlbGVhc2UgU2NoZWR1bGUKIC0tLS0tLS0tLS0tLS0tLS0KIAotU2VlIFBFUCA0MjkgZm9yIHJlbGVhc2UgZGV0YWlsczogaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDI5LworU2VlIFBFUCA0NzggZm9yIHJlbGVhc2UgZGV0YWlsczogaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDc4LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpAQCAtMTg0LDExICsxODQsMTEgQEAKIAogQ29weXJpZ2h0IChjKSAxOTkxLTE5OTUgU3RpY2h0aW5nIE1hdGhlbWF0aXNjaCBDZW50cnVtLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAotU2VlIHRoZSBmaWxlICJMSUNFTlNFIiBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGhpc3Rvcnkgb2YgdGhpcyBzb2Z0d2FyZSwgdGVybXMgJgotY29uZGl0aW9ucyBmb3IgdXNhZ2UsIGFuZCBhIERJU0NMQUlNRVIgT0YgQUxMIFdBUlJBTlRJRVMuCitTZWUgdGhlIGZpbGUgIkxJQ0VOU0UiIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgaGlzdG9yeSBvZiB0aGlzIHNvZnR3YXJlLAordGVybXMgJiBjb25kaXRpb25zIGZvciB1c2FnZSwgYW5kIGEgRElTQ0xBSU1FUiBPRiBBTEwgV0FSUkFOVElFUy4KIAotVGhpcyBQeXRob24gZGlzdHJpYnV0aW9uIGNvbnRhaW5zICpubyogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgY29kZSwgc28KLWl0IG1heSBiZSB1c2VkIGluIHByb3ByaWV0YXJ5IHByb2plY3RzLiAgVGhlcmUgYXJlIGludGVyZmFjZXMgdG8gc29tZSBHTlUgY29kZQotYnV0IHRoZXNlIGFyZSBlbnRpcmVseSBvcHRpb25hbC4KK1RoaXMgUHl0aG9uIGRpc3RyaWJ1dGlvbiBjb250YWlucyAqbm8qIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGNvZGUsCitzbyBpdCBtYXkgYmUgdXNlZCBpbiBwcm9wcmlldGFyeSBwcm9qZWN0cy4gIFRoZXJlIGFyZSBpbnRlcmZhY2VzIHRvIHNvbWUgR05VCitjb2RlIGJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCiAKIEFsbCB0cmFkZW1hcmtzIHJlZmVyZW5jZWQgaGVyZWluIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIGhvbGRlcnMuCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKaW5kZXggNGNhNTYwNC4uZTNjMmRiZCAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdApAQCAtMSwyMSArMSw5IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJidWlsZG1zaSIgc3RlcC4NCitzZXRsb2NhbA0KIA0KLWNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQNCi1AcmVtIGJ1aWxkIHJlbGVhc2UgdmVyc2lvbnMgb2YgdGhpbmdzDQotY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCINCitwdXNoZA0KIA0KLUByZW0gYnVpbGQgUHl0aG9uDQotbXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMg0KK0ByZW0gYnVpbGQgYm90aCBzbmFwc2hvdCBNU0lzDQorY2FsbCAiJX5kcDAuLlxtc2lcYnVpbGQuYmF0IiAteDg2IC14NjQNCiANCi1AcmVtIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uDQotYmFzaC5leGUgLWMgJ2NkIERvYzttYWtlIFBZVEhPTj1weXRob24yLjUgdXBkYXRlIGh0bWxoZWxwJw0KLSIlUHJvZ3JhbUZpbGVzJVxIVE1MIEhlbHAgV29ya3Nob3BcaGhjLmV4ZSIgRG9jXGJ1aWxkXGh0bWxoZWxwXHB5dGhvbjI2YTMuaGhwDQotDQotQHJlbSBidWlsZCB0aGUgTVNJIGZpbGUNCi1jZCBQQw0KLW5tYWtlIC9mIGljb25zLm1haw0KLWNkIC4uXFRvb2xzXG1zaQ0KLWRlbCAqLm1zaQ0KLW5tYWtlIC9mIG1zaXN1cHBvcnQubWFrDQotJUhPU1RfUFlUSE9OJSBtc2kucHkNCi0NCitwb3BkClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LmJhdAppbmRleCAxNTRkZmE1Li5kMWY1ZjUyIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC90ZXN0LmJhdApAQCAtMSwxNSArMSwxOSBAQAotQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCi1Ac2V0bG9jYWwNCitAZWNobyBvZmYNCityZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgInRlc3QiIHN0ZXAuDQorc2V0bG9jYWwNCiANCi1Ac2V0IGhlcmU9JX5kcDANCi1Ac2V0IHJ0X29wdHM9LXEgLWQNCitzZXQgaGVyZT0lfmRwMA0KK3NldCBydF9vcHRzPS1xIC1kDQorc2V0IHJlZ3J0ZXN0X2FyZ3M9DQogDQogOkNoZWNrT3B0cw0KLUBpZiAnJTEnPT0nLXg2NCcgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotQGlmICclMSc9PSctZCcgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotQGlmICclMSc9PSctTycgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotQGlmICclMSc9PSctcScgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotQGlmICclMSc9PScrZCcgKHNldCBydF9vcHRzPSVydF9vcHRzOi1kPSUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLUBpZiAnJTEnPT0nK3EnIChzZXQgcnRfb3B0cz0lcnRfb3B0czotcT0lKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLXg2NCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09Ii1kIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCitpZiAiJTEiPT0iLU8iIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSI9PSItcSIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09IitkIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHM6LWQ9JSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIj09IitxIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHM6LXE9JSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQoraWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RfYXJncz0lcmVncnRlc3RfYXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KLWNhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAtbiAtLXRpbWVvdXQ9MzYwMCAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KK2VjaG8gb24NCitjYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLW4gLS10aW1lb3V0PTM2MDAgJXJlZ3J0ZXN0X2FyZ3MlDQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2xpbmljL2NsaW5pYy5weSBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKaW5kZXggYzZhYzNiOS4uM2NlMzU4NyAxMDA3NTUKLS0tIGEvVG9vbHMvY2xpbmljL2NsaW5pYy5weQorKysgYi9Ub29scy9jbGluaWMvY2xpbmljLnB5CkBAIC0yNiw4ICsyNiwxMiBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHV1aWQKIAorZnJvbSB0eXBlcyBpbXBvcnQgKgorTm9uZVR5cGUgPSB0eXBlKE5vbmUpCisKICMgVE9ETzoKICMKICMgc29vbjoKQEAgLTY2LDYgKzcwLDEwIEBACiAKIHVua25vd24gPSBVbmtub3duKCkKIAorc2lnX2VuZF9tYXJrZXIgPSAnLS0nCisKKworX3RleHRfYWNjdW11bGF0b3JfbnQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJfdGV4dF9hY2N1bXVsYXRvciIsICJ0ZXh0IGFwcGVuZCBvdXRwdXQiKQogCiBkZWYgX3RleHRfYWNjdW11bGF0b3IoKToKICAgICB0ZXh0ID0gW10KQEAgLTczLDkgKzgxLDExIEBACiAgICAgICAgIHMgPSAnJy5qb2luKHRleHQpCiAgICAgICAgIHRleHQuY2xlYXIoKQogICAgICAgICByZXR1cm4gcwotICAgIHJldHVybiB0ZXh0LCB0ZXh0LmFwcGVuZCwgb3V0cHV0CisgICAgcmV0dXJuIF90ZXh0X2FjY3VtdWxhdG9yX250KHRleHQsIHRleHQuYXBwZW5kLCBvdXRwdXQpCiAKIAordGV4dF9hY2N1bXVsYXRvcl9udCA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoInRleHRfYWNjdW11bGF0b3IiLCAidGV4dCBhcHBlbmQiKQorCiBkZWYgdGV4dF9hY2N1bXVsYXRvcigpOgogICAgICIiIgogICAgIENyZWF0ZXMgYSBzaW1wbGUgdGV4dCBhY2N1bXVsYXRvciAvIGpvaW5lci4KQEAgLTg4LDcgKzk4LDcgQEAKICAgICAgICBlbXB0aWVzIHRoZSBhY2N1bXVsYXRvci4KICAgICAiIiIKICAgICB0ZXh0LCBhcHBlbmQsIG91dHB1dCA9IF90ZXh0X2FjY3VtdWxhdG9yKCkKLSAgICByZXR1cm4gYXBwZW5kLCBvdXRwdXQKKyAgICByZXR1cm4gdGV4dF9hY2N1bXVsYXRvcl9udChhcHBlbmQsIG91dHB1dCkKIAogCiBkZWYgd2Fybl9vcl9mYWlsKGZhaWw9RmFsc2UsICphcmdzLCBmaWxlbmFtZT1Ob25lLCBsaW5lX251bWJlcj1Ob25lKToKQEAgLTUyMSw2ICs1MzEsNTggQEAKICAgICByZXR1cm4gcwogCiAKK2RlZiB3cmFwX2RlY2xhcmF0aW9ucyh0ZXh0LCBsZW5ndGg9NzgpOgorICAgICIiIgorICAgIEEgc2ltcGxlLW1pbmRlZCB0ZXh0IHdyYXBwZXIgZm9yIEMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorCisgICAgSXQgdmlld3MgYSBkZWNsYXJhdGlvbiBsaW5lIGFzIGxvb2tpbmcgbGlrZSB0aGlzOgorICAgICAgICB4eHh4eHh4eCh4eHh4eHh4eHgseHh4eHh4eHh4KQorICAgIElmIGNhbGxlZCB3aXRoIGxlbmd0aD0zMCwgaXQgd291bGQgd3JhcCB0aGF0IGxpbmUgaW50bworICAgICAgICB4eHh4eHh4eCh4eHh4eHh4eHgsCisgICAgICAgICAgICAgICAgIHh4eHh4eHh4eCkKKyAgICAoSWYgdGhlIGRlY2xhcmF0aW9uIGhhcyB6ZXJvIG9yIG9uZSBwYXJhbWV0ZXJzLCB0aGlzCisgICAgZnVuY3Rpb24gd29uJ3Qgd3JhcCBpdC4pCisKKyAgICBJZiB0aGlzIGRvZXNuJ3Qgd29yayBwcm9wZXJseSwgaXQncyBwcm9iYWJseSBiZXR0ZXIgdG8KKyAgICBzdGFydCBmcm9tIHNjcmF0Y2ggd2l0aCBhIG1vcmUgc29waGlzdGljYXRlZCBhbGdvcml0aG0sCisgICAgcmF0aGVyIHRoYW4gdHJ5IGFuZCBpbXByb3ZlL2RlYnVnIHRoaXMgZHVtYiBsaXR0bGUgZnVuY3Rpb24uCisgICAgIiIiCisgICAgbGluZXMgPSBbXQorICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXQoJ1xuJyk6CisgICAgICAgIHByZWZpeCwgXywgYWZ0ZXJfbF9wYXJlbiA9IGxpbmUucGFydGl0aW9uKCcoJykKKyAgICAgICAgaWYgbm90IGFmdGVyX2xfcGFyZW46CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhcmFtZXRlcnMsIF8sIGFmdGVyX3JfcGFyZW4gPSBhZnRlcl9sX3BhcmVuLnBhcnRpdGlvbignKScpCisgICAgICAgIGlmIG5vdCBfOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAnLCcgbm90IGluIHBhcmFtZXRlcnM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhcmFtZXRlcnMgPSBbeC5zdHJpcCgpICsgIiwgIiBmb3IgeCBpbiBwYXJhbWV0ZXJzLnNwbGl0KCcsJyldCisgICAgICAgIHByZWZpeCArPSAiKCIKKyAgICAgICAgaWYgbGVuKHByZWZpeCkgPCBsZW5ndGg6CisgICAgICAgICAgICBzcGFjZXMgPSAiICIgKiBsZW4ocHJlZml4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3BhY2VzID0gIiAiICogNAorCisgICAgICAgIHdoaWxlIHBhcmFtZXRlcnM6CisgICAgICAgICAgICBsaW5lID0gcHJlZml4CisgICAgICAgICAgICBmaXJzdCA9IFRydWUKKyAgICAgICAgICAgIHdoaWxlIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgaWYgKG5vdCBmaXJzdCBhbmQKKyAgICAgICAgICAgICAgICAgICAgKGxlbihsaW5lKSArIGxlbihwYXJhbWV0ZXJzWzBdKSA+IGxlbmd0aCkpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbmUgKz0gcGFyYW1ldGVycy5wb3AoMCkKKyAgICAgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCisgICAgICAgICAgICBpZiBub3QgcGFyYW1ldGVyczoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yc3RyaXAoIiwgIikgKyAiKSIgKyBhZnRlcl9yX3BhcmVuCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZS5yc3RyaXAoKSkKKyAgICAgICAgICAgIHByZWZpeCA9IHNwYWNlcworICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCisKKwogY2xhc3MgQ0xhbmd1YWdlKExhbmd1YWdlKToKIAogICAgIGJvZHlfcHJlZml4ICAgPSAiIyIKQEAgLTU1NSw4ICs2MTcsMTMgQEAKICAgICAgICAgICAgIGFkZChxdW90ZWRfZm9yX2Nfc3RyaW5nKGxpbmUpKQogICAgICAgICAgICAgYWRkKCdcXG4iXG4nKQogCi0gICAgICAgIHRleHQucG9wKCkKLSAgICAgICAgYWRkKCciJykKKyAgICAgICAgaWYgdGV4dFstMl0gPT0gc2lnX2VuZF9tYXJrZXI6CisgICAgICAgICAgICAjIElmIHdlIG9ubHkgaGF2ZSBhIHNpZ25hdHVyZSwgYWRkIHRoZSBibGFuayBsaW5lIHRoYXQgdGhlCisgICAgICAgICAgICAjIF9fdGV4dF9zaWduYXR1cmVfXyBnZXR0ZXIgZXhwZWN0cyB0byBiZSB0aGVyZS4KKyAgICAgICAgICAgIGFkZCgnIlxcbiInKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dC5wb3AoKQorICAgICAgICAgICAgYWRkKCciJykKICAgICAgICAgcmV0dXJuICcnLmpvaW4odGV4dCkKIAogICAgIGRlZiBvdXRwdXRfdGVtcGxhdGVzKHNlbGYsIGYpOgpAQCAtNTg5LDggKzY1Niw2IEBACiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKICAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKLSAgICAgICAgICAgICAgaXNpbnN0YW5jZShjb252ZXJ0ZXJzWzBdLCBvYmplY3RfY29udmVydGVyKSBhbmQKLSAgICAgICAgICAgICAgY29udmVydGVyc1swXS5mb3JtYXRfdW5pdCA9PSAnTycgYW5kCiAgICAgICAgICAgICAgIG5vdCBuZXdfb3JfaW5pdCkKIAogICAgICAgICAjIHdlIGhhdmUgdG8gc2V0IHRoZXNlIHRoaW5ncyBiZWZvcmUgd2UncmUgZG9uZToKQEAgLTY5NiwyMiArNzYxLDM4IEBACiAgICAgICAgIGVsaWYgbWV0aF9vOgogICAgICAgICAgICAgZmxhZ3MgPSAiTUVUSF9PIgogCi0gICAgICAgICAgICBtZXRoX29fcHJvdG90eXBlID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKLSAgICAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe2ltcGxfcGFyYW1ldGVyc30pCi0gICAgICAgICAgICAgICAgIiIiKQorICAgICAgICAgICAgaWYgKGlzaW5zdGFuY2UoY29udmVydGVyc1swXSwgb2JqZWN0X2NvbnZlcnRlcikgYW5kCisgICAgICAgICAgICAgICAgY29udmVydGVyc1swXS5mb3JtYXRfdW5pdCA9PSAnTycpOgorICAgICAgICAgICAgICAgIG1ldGhfb19wcm90b3R5cGUgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtpbXBsX3BhcmFtZXRlcnN9KQorICAgICAgICAgICAgICAgICAgICAiIiIpCiAKLSAgICAgICAgICAgIGlmIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlcjoKLSAgICAgICAgICAgICAgICAjIG1hcHMgcGVyZmVjdGx5IHRvIE1FVEhfTywgZG9lc24ndCBuZWVkIGEgcmV0dXJuIGNvbnZlcnRlci4KLSAgICAgICAgICAgICAgICAjIHNvIHdlIHNraXAgbWFraW5nIGEgcGFyc2UgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAjIGFuZCBjYWxsIGRpcmVjdGx5IGludG8gdGhlIGltcGwgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgaW1wbF9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX2RlZmluaXRpb24gPSAnJwotICAgICAgICAgICAgICAgIGltcGxfZGVmaW5pdGlvbiA9IG1ldGhfb19wcm90b3R5cGUKKyAgICAgICAgICAgICAgICBpZiBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXI6CisgICAgICAgICAgICAgICAgICAgICMgbWFwcyBwZXJmZWN0bHkgdG8gTUVUSF9PLCBkb2Vzbid0IG5lZWQgYSByZXR1cm4gY29udmVydGVyLgorICAgICAgICAgICAgICAgICAgICAjIHNvIHdlIHNraXAgbWFraW5nIGEgcGFyc2UgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgY2FsbCBkaXJlY3RseSBpbnRvIHRoZSBpbXBsIGZ1bmN0aW9uLgorICAgICAgICAgICAgICAgICAgICBpbXBsX3Byb3RvdHlwZSA9IHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfZGVmaW5pdGlvbiA9ICcnCisgICAgICAgICAgICAgICAgICAgIGltcGxfZGVmaW5pdGlvbiA9IG1ldGhfb19wcm90b3R5cGUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFNMSUdIVCBIQUNLCisgICAgICAgICAgICAgICAgICAgICMgdXNlIGltcGxfcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlciBoZXJlIQorICAgICAgICAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gbWV0aF9vX3Byb3RvdHlwZQorICAgICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUpCisKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTTElHSFQgSEFDSwotICAgICAgICAgICAgICAgICMgdXNlIGltcGxfcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlciBoZXJlIQotICAgICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBtZXRoX29fcHJvdG90eXBlCi0gICAgICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlKQorICAgICAgICAgICAgICAgIGFyZ25hbWUgPSAnYXJnJworICAgICAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNbMF0ubmFtZSA9PSBhcmduYW1lOgorICAgICAgICAgICAgICAgICAgICBhcmduYW1lICs9ICdfJworICAgICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0IColcykKKyAgICAgICAgICAgICAgICAgICAgIiIiICUgYXJnbmFtZSkKKworICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUsIGluZGVudD00KSkKIAogICAgICAgICBlbGlmIGhhc19vcHRpb25fZ3JvdXBzOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgd2l0aCBvcHRpb24gZ3JvdXBzCkBAIC03NDYsOCArODI3LDcgQEAKICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX3ZhcmFyZ3MKIAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKLSAgICAgICAgICAgICAgICAgICAgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsCisgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKQEAgLTc1OSwxNCArODM5LDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKLSAgICAgICAgICAgICAgICAgICAgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQpAQCAtODIwLDcgKzg5OCw4IEBACiAgICAgICAgICAgICBjcHBfaWYgPSAiI2lmICIgKyBjb25kaXRpb25hbAogICAgICAgICAgICAgY3BwX2VuZGlmID0gIiNlbmRpZiAvKiAiICsgY29uZGl0aW9uYWwgKyAiICovIgogCi0gICAgICAgICAgICBpZiBtZXRob2RkZWZfZGVmaW5lOgorICAgICAgICAgICAgaWYgbWV0aG9kZGVmX2RlZmluZSBhbmQgZi5uYW1lIG5vdCBpbiBjbGluaWMuaWZuZGVmX3N5bWJvbHM6CisgICAgICAgICAgICAgICAgY2xpbmljLmlmbmRlZl9zeW1ib2xzLmFkZChmLm5hbWUpCiAgICAgICAgICAgICAgICAgbWV0aG9kZGVmX2lmbmRlZiA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIHttZXRob2RkZWZfbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICNkZWZpbmUge21ldGhvZGRlZl9uYW1lfQpAQCAtMTAyMCw3ICsxMDk5LDcgQEAKICAgICAgICAgIyBNRVRIX08sIHdlIGhhdmUgZXhhY3RseSBvbmUgYW55d2F5LCBzbyB3ZSBrbm93IGV4YWN0bHkKICAgICAgICAgIyB3aGVyZSBpdCBpcy4KICAgICAgICAgaWYgKCJNRVRIX08iIGluIHRlbXBsYXRlc1snbWV0aG9kZGVmX2RlZmluZSddIGFuZAotICAgICAgICAgICAgbm90IGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlcik6CisgICAgICAgICAgICAne2ltcGxfcGFyYW1ldGVyc30nIGluIHRlbXBsYXRlc1sncGFyc2VyX3Byb3RvdHlwZSddKToKICAgICAgICAgICAgIGRhdGEuZGVjbGFyYXRpb25zLnBvcCgwKQogCiAgICAgICAgIHRlbXBsYXRlX2RpY3QgPSB7fQpAQCAtMTA3OCw3ICsxMTU3LDggQEAKICAgICAgICAgaWYgaGFzX29wdGlvbl9ncm91cHM6CiAgICAgICAgICAgICBzZWxmLnJlbmRlcl9vcHRpb25fZ3JvdXBfcGFyc2luZyhmLCB0ZW1wbGF0ZV9kaWN0KQogCi0gICAgICAgIGZvciBuYW1lLCBkZXN0aW5hdGlvbiBpbiBjbGluaWMuZmllbGRfZGVzdGluYXRpb25zLml0ZW1zKCk6CisgICAgICAgICMgYnVmZmVycywgbm90IGRlc3RpbmF0aW9uCisgICAgICAgIGZvciBuYW1lLCBkZXN0aW5hdGlvbiBpbiBjbGluaWMuZGVzdGluYXRpb25fYnVmZmVycy5pdGVtcygpOgogICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZXNbbmFtZV0KICAgICAgICAgICAgIGlmIGhhc19vcHRpb25fZ3JvdXBzOgogICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gbGluZWFyX2Zvcm1hdCh0ZW1wbGF0ZSwKQEAgLTExMDAsNiArMTE4MCwxMSBAQAogCiAgICAgICAgICAgICBzID0gdGVtcGxhdGUuZm9ybWF0X21hcCh0ZW1wbGF0ZV9kaWN0KQogCisgICAgICAgICAgICAjIG1pbGQgaGFjazoKKyAgICAgICAgICAgICMgcmVmbG93IGxvbmcgaW1wbCBkZWNsYXJhdGlvbnMKKyAgICAgICAgICAgIGlmIG5hbWUgaW4geyJpbXBsX3Byb3RvdHlwZSIsICJpbXBsX2RlZmluaXRpb24ifToKKyAgICAgICAgICAgICAgICBzID0gd3JhcF9kZWNsYXJhdGlvbnMocykKKwogICAgICAgICAgICAgaWYgY2xpbmljLmxpbmVfcHJlZml4OgogICAgICAgICAgICAgICAgIHMgPSBpbmRlbnRfYWxsX2xpbmVzKHMsIGNsaW5pYy5saW5lX3ByZWZpeCkKICAgICAgICAgICAgIGlmIGNsaW5pYy5saW5lX3N1ZmZpeDoKQEAgLTEyNTIsMTAgKzEzMzcsMTEgQEAKICAgICAgICAgbWF0Y2ggPSBzZWxmLnN0YXJ0X3JlLm1hdGNoKGxpbmUubHN0cmlwKCkpCiAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgxKSBpZiBtYXRjaCBlbHNlIE5vbmUKIAotICAgIGRlZiBfbGluZShzZWxmKToKKyAgICBkZWYgX2xpbmUoc2VsZiwgbG9va2FoZWFkPUZhbHNlKToKICAgICAgICAgc2VsZi5saW5lX251bWJlciArPSAxCiAgICAgICAgIGxpbmUgPSBzZWxmLmlucHV0LnBvcCgpCi0gICAgICAgIHNlbGYubGFuZ3VhZ2UucGFyc2VfbGluZShsaW5lKQorICAgICAgICBpZiBub3QgbG9va2FoZWFkOgorICAgICAgICAgICAgc2VsZi5sYW5ndWFnZS5wYXJzZV9saW5lKGxpbmUpCiAgICAgICAgIHJldHVybiBsaW5lCiAKICAgICBkZWYgcGFyc2VfdmVyYmF0aW1fYmxvY2soc2VsZik6CkBAIC0xMzExLDcgKzEzOTcsNyBAQAogICAgICAgICBvdXRwdXRfYWRkLCBvdXRwdXRfb3V0cHV0ID0gdGV4dF9hY2N1bXVsYXRvcigpCiAgICAgICAgIGFyZ3VtZW50cyA9IE5vbmUKICAgICAgICAgd2hpbGUgc2VsZi5pbnB1dDoKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9saW5lKCkKKyAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9saW5lKGxvb2thaGVhZD1UcnVlKQogICAgICAgICAgICAgbWF0Y2ggPSBjaGVja3N1bV9yZS5tYXRjaChsaW5lLmxzdHJpcCgpKQogICAgICAgICAgICAgYXJndW1lbnRzID0gbWF0Y2guZ3JvdXAoMSkgaWYgbWF0Y2ggZWxzZSBOb25lCiAgICAgICAgICAgICBpZiBhcmd1bWVudHM6CkBAIC0xNDAyLDEyICsxNDg4LDQ4IEBACiAgICAgICAgIHNlbGYuZi53cml0ZSh0ZXh0KQogCiAKK2NsYXNzIEJ1ZmZlclNlcmllczoKKyAgICAiIiIKKyAgICBCZWhhdmVzIGxpa2UgYSAiZGVmYXVsdGxpc3QiLgorICAgIFdoZW4geW91IGFzayBmb3IgYW4gaW5kZXggdGhhdCBkb2Vzbid0IGV4aXN0IHlldCwKKyAgICB0aGUgb2JqZWN0IGdyb3dzIHRoZSBsaXN0IHVudGlsIHRoYXQgaXRlbSBleGlzdHMuCisgICAgU28gb1tuXSB3aWxsIGFsd2F5cyB3b3JrLgorCisgICAgU3VwcG9ydHMgbmVnYXRpdmUgaW5kaWNlcyBmb3IgYWN0dWFsIGl0ZW1zLgorICAgIGUuZy4gb1stMV0gaXMgYW4gZWxlbWVudCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgb1swXS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fc3RhcnQgPSAwCisgICAgICAgIHNlbGYuX2FycmF5ID0gW10KKyAgICAgICAgc2VsZi5fY29uc3RydWN0b3IgPSBfdGV4dF9hY2N1bXVsYXRvcgorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorICAgICAgICBpIC09IHNlbGYuX3N0YXJ0CisgICAgICAgIGlmIGkgPCAwOgorICAgICAgICAgICAgc2VsZi5fc3RhcnQgKz0gaQorICAgICAgICAgICAgcHJlZml4ID0gW3NlbGYuX2NvbnN0cnVjdG9yKCkgZm9yIHggaW4gcmFuZ2UoLWkpXQorICAgICAgICAgICAgc2VsZi5fYXJyYXkgPSBwcmVmaXggKyBzZWxmLl9hcnJheQorICAgICAgICAgICAgaSA9IDAKKyAgICAgICAgd2hpbGUgaSA+PSBsZW4oc2VsZi5fYXJyYXkpOgorICAgICAgICAgICAgc2VsZi5fYXJyYXkuYXBwZW5kKHNlbGYuX2NvbnN0cnVjdG9yKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9hcnJheVtpXQorCisgICAgZGVmIGNsZWFyKHNlbGYpOgorICAgICAgICBmb3IgdGEgaW4gc2VsZi5fYXJyYXk6CisgICAgICAgICAgICB0YS5fdGV4dC5jbGVhcigpCisKKyAgICBkZWYgZHVtcChzZWxmKToKKyAgICAgICAgdGV4dHMgPSBbdGEub3V0cHV0KCkgZm9yIHRhIGluIHNlbGYuX2FycmF5XQorICAgICAgICByZXR1cm4gIiIuam9pbih0ZXh0cykKKworCiBjbGFzcyBEZXN0aW5hdGlvbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgdHlwZSwgY2xpbmljLCAqYXJncyk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi50eXBlID0gdHlwZQogICAgICAgICBzZWxmLmNsaW5pYyA9IGNsaW5pYwotICAgICAgICB2YWxpZF90eXBlcyA9ICgnYnVmZmVyJywgJ2ZpbGUnLCAnc3VwcHJlc3MnLCAndHdvLXBhc3MnKQorICAgICAgICB2YWxpZF90eXBlcyA9ICgnYnVmZmVyJywgJ2ZpbGUnLCAnc3VwcHJlc3MnKQogICAgICAgICBpZiB0eXBlIG5vdCBpbiB2YWxpZF90eXBlczoKICAgICAgICAgICAgIGZhaWwoIkludmFsaWQgZGVzdGluYXRpb24gdHlwZSAiICsgcmVwcih0eXBlKSArICIgZm9yICIgKyBuYW1lICsgIiAsIG11c3QgYmUgIiArICcsICcuam9pbih2YWxpZF90eXBlcykpCiAgICAgICAgIGV4dHJhX2FyZ3VtZW50cyA9IDEgaWYgdHlwZSA9PSAiZmlsZSIgZWxzZSAwCkBAIC0xNDI2LDEwICsxNTQ4LDggQEAKICAgICAgICAgICAgIGRbJ2Jhc2VuYW1lJ10gPSBiYXNlbmFtZQogICAgICAgICAgICAgZFsnYmFzZW5hbWVfcm9vdCddLCBkWydiYXNlbmFtZV9leHRlbnNpb24nXSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmZpbGVuYW1lID0gYXJnc1swXS5mb3JtYXRfbWFwKGQpCi0gICAgICAgIGlmIHR5cGUgPT0gJ3R3by1wYXNzJzoKLSAgICAgICAgICAgIHNlbGYuaWQgPSBOb25lCiAKLSAgICAgICAgc2VsZi50ZXh0LCBzZWxmLmFwcGVuZCwgc2VsZi5fZHVtcCA9IF90ZXh0X2FjY3VtdWxhdG9yKCkKKyAgICAgICAgc2VsZi5idWZmZXJzID0gQnVmZmVyU2VyaWVzKCkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi50eXBlID09ICdmaWxlJzoKQEAgLTE0NDEsMTUgKzE1NjEsMTAgQEAKICAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYudHlwZSAhPSAnYnVmZmVyJzoKICAgICAgICAgICAgIGZhaWwoIkNhbid0IGNsZWFyIGRlc3RpbmF0aW9uIiArIHNlbGYubmFtZSArICIgLCBpdCdzIG5vdCBvZiB0eXBlIGJ1ZmZlciIpCi0gICAgICAgIHNlbGYudGV4dC5jbGVhcigpCisgICAgICAgIHNlbGYuYnVmZmVycy5jbGVhcigpCiAKICAgICBkZWYgZHVtcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi50eXBlID09ICd0d28tcGFzcyc6Ci0gICAgICAgICAgICBpZiBzZWxmLmlkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5pZCA9IHN0cih1dWlkLnV1aWQ0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaWQKLSAgICAgICAgICAgIGZhaWwoIllvdSBjYW4gb25seSBkdW1wIGEgdHdvLXBhc3MgYnVmZmVyIGV4YWN0bHkgb25jZSEiKQotICAgICAgICByZXR1cm4gc2VsZi5fZHVtcCgpCisgICAgICAgIHJldHVybiBzZWxmLmJ1ZmZlcnMuZHVtcCgpCiAKIAogIyBtYXBzIHN0cmluZ3MgdG8gTGFuZ3VhZ2Ugb2JqZWN0cy4KQEAgLTE0ODgsNDkgKzE2MDMsNDQgQEAKICAgICBwcmVzZXRzX3RleHQgPSAiIiIKIHByZXNldCBibG9jawogZXZlcnl0aGluZyBibG9jaworbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIgMQogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogcGFyc2VyX3Byb3RvdHlwZSBzdXBwcmVzcwogY3BwX2lmIHN1cHByZXNzCiBjcHBfZW5kaWYgc3VwcHJlc3MKLW1ldGhvZGRlZl9pZm5kZWYgYnVmZmVyCiAKIHByZXNldCBvcmlnaW5hbAogZXZlcnl0aGluZyBibG9jaworbWV0aG9kZGVmX2lmbmRlZiBidWZmZXIgMQogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogcGFyc2VyX3Byb3RvdHlwZSBzdXBwcmVzcwogY3BwX2lmIHN1cHByZXNzCiBjcHBfZW5kaWYgc3VwcHJlc3MKLW1ldGhvZGRlZl9pZm5kZWYgYnVmZmVyCiAKIHByZXNldCBmaWxlCiBldmVyeXRoaW5nIGZpbGUKK21ldGhvZGRlZl9pZm5kZWYgZmlsZSAxCiBkb2NzdHJpbmdfcHJvdG90eXBlIHN1cHByZXNzCiBwYXJzZXJfcHJvdG90eXBlIHN1cHByZXNzCiBpbXBsX2RlZmluaXRpb24gYmxvY2sKIAogcHJlc2V0IGJ1ZmZlcgogZXZlcnl0aGluZyBidWZmZXIKK21ldGhvZGRlZl9pZm5kZWYgYnVmZmVyIDEKK2ltcGxfZGVmaW5pdGlvbiBibG9jawogZG9jc3RyaW5nX3Byb3RvdHlwZSBzdXBwcmVzcwogaW1wbF9wcm90b3R5cGUgc3VwcHJlc3MKIHBhcnNlcl9wcm90b3R5cGUgc3VwcHJlc3MKLWltcGxfZGVmaW5pdGlvbiBibG9jawogCiBwcmVzZXQgcGFydGlhbC1idWZmZXIKIGV2ZXJ5dGhpbmcgYnVmZmVyCittZXRob2RkZWZfaWZuZGVmIGJ1ZmZlciAxCiBkb2NzdHJpbmdfcHJvdG90eXBlIGJsb2NrCiBpbXBsX3Byb3RvdHlwZSBzdXBwcmVzcwogbWV0aG9kZGVmX2RlZmluZSBibG9jawogcGFyc2VyX3Byb3RvdHlwZSBibG9jawogaW1wbF9kZWZpbml0aW9uIGJsb2NrCiAKLXByZXNldCB0d28tcGFzcwotZXZlcnl0aGluZyBidWZmZXIKLWRvY3N0cmluZ19wcm90b3R5cGUgdHdvLXBhc3MKLWltcGxfcHJvdG90eXBlIHN1cHByZXNzCi1tZXRob2RkZWZfZGVmaW5lIHR3by1wYXNzCi1wYXJzZXJfcHJvdG90eXBlIHR3by1wYXNzCi1pbXBsX2RlZmluaXRpb24gYmxvY2sKLQogIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGFuZ3VhZ2UsIHByaW50ZXI9Tm9uZSwgKiwgZm9yY2U9RmFsc2UsIHZlcmlmeT1UcnVlLCBmaWxlbmFtZT1Ob25lKToKQEAgLTE1NTQsMjUgKzE2NjQsMjUgQEAKICAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oImJsb2NrIiwgImJ1ZmZlciIpCiAgICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJzdXBwcmVzcyIsICJzdXBwcmVzcyIpCiAgICAgICAgIHNlbGYuYWRkX2Rlc3RpbmF0aW9uKCJidWZmZXIiLCAiYnVmZmVyIikKLSAgICAgICAgc2VsZi5hZGRfZGVzdGluYXRpb24oInR3by1wYXNzIiwgInR3by1wYXNzIikKICAgICAgICAgaWYgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmFkZF9kZXN0aW5hdGlvbigiZmlsZSIsICJmaWxlIiwgIntkaXJuYW1lfS9jbGluaWMve2Jhc2VuYW1lfS5oIikKIAotICAgICAgICBkID0gc2VsZi5kZXN0aW5hdGlvbnMuZ2V0Ci0gICAgICAgIHNlbGYuZmllbGRfZGVzdGluYXRpb25zID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKAotICAgICAgICAgICAgKCdjcHBfaWYnLCBkKCdzdXBwcmVzcycpKSwKKyAgICAgICAgZCA9IHNlbGYuZ2V0X2Rlc3RpbmF0aW9uX2J1ZmZlcgorICAgICAgICBzZWxmLmRlc3RpbmF0aW9uX2J1ZmZlcnMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgoCisgICAgICAgICAgICAoJ2NwcF9pZicsIGQoJ2ZpbGUnKSksCiAgICAgICAgICAgICAoJ2RvY3N0cmluZ19wcm90b3R5cGUnLCBkKCdzdXBwcmVzcycpKSwKLSAgICAgICAgICAgICgnZG9jc3RyaW5nX2RlZmluaXRpb24nLCBkKCdibG9jaycpKSwKLSAgICAgICAgICAgICgnbWV0aG9kZGVmX2RlZmluZScsIGQoJ2Jsb2NrJykpLAotICAgICAgICAgICAgKCdpbXBsX3Byb3RvdHlwZScsIGQoJ2Jsb2NrJykpLAorICAgICAgICAgICAgKCdkb2NzdHJpbmdfZGVmaW5pdGlvbicsIGQoJ2ZpbGUnKSksCisgICAgICAgICAgICAoJ21ldGhvZGRlZl9kZWZpbmUnLCBkKCdmaWxlJykpLAorICAgICAgICAgICAgKCdpbXBsX3Byb3RvdHlwZScsIGQoJ2ZpbGUnKSksCiAgICAgICAgICAgICAoJ3BhcnNlcl9wcm90b3R5cGUnLCBkKCdzdXBwcmVzcycpKSwKLSAgICAgICAgICAgICgncGFyc2VyX2RlZmluaXRpb24nLCBkKCdibG9jaycpKSwKLSAgICAgICAgICAgICgnY3BwX2VuZGlmJywgZCgnc3VwcHJlc3MnKSksCi0gICAgICAgICAgICAoJ21ldGhvZGRlZl9pZm5kZWYnLCBkKCdidWZmZXInKSksCisgICAgICAgICAgICAoJ3BhcnNlcl9kZWZpbml0aW9uJywgZCgnZmlsZScpKSwKKyAgICAgICAgICAgICgnY3BwX2VuZGlmJywgZCgnZmlsZScpKSwKKyAgICAgICAgICAgICgnbWV0aG9kZGVmX2lmbmRlZicsIGQoJ2ZpbGUnLCAxKSksCiAgICAgICAgICAgICAoJ2ltcGxfZGVmaW5pdGlvbicsIGQoJ2Jsb2NrJykpLAogICAgICAgICApKQogCi0gICAgICAgIHNlbGYuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrID0gW10KKyAgICAgICAgc2VsZi5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrID0gW10KKyAgICAgICAgc2VsZi5pZm5kZWZfc3ltYm9scyA9IHNldCgpCiAKICAgICAgICAgc2VsZi5wcmVzZXRzID0ge30KICAgICAgICAgcHJlc2V0ID0gTm9uZQpAQCAtMTU4MCwzNyArMTY5MCw0MyBAQAogICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG5hbWUsIHZhbHVlID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBuYW1lLCB2YWx1ZSwgKm9wdGlvbnMgPSBsaW5lLnNwbGl0KCkKICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ3ByZXNldCc6CiAgICAgICAgICAgICAgICAgc2VsZi5wcmVzZXRzW3ZhbHVlXSA9IHByZXNldCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNlbGYuZ2V0X2Rlc3RpbmF0aW9uKHZhbHVlKQorICAgICAgICAgICAgaWYgbGVuKG9wdGlvbnMpOgorICAgICAgICAgICAgICAgIGluZGV4ID0gaW50KG9wdGlvbnNbMF0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGluZGV4ID0gMAorICAgICAgICAgICAgYnVmZmVyID0gc2VsZi5nZXRfZGVzdGluYXRpb25fYnVmZmVyKHZhbHVlLCBpbmRleCkKIAogICAgICAgICAgICAgaWYgbmFtZSA9PSAnZXZlcnl0aGluZyc6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWVsZF9kZXN0aW5hdGlvbnM6Ci0gICAgICAgICAgICAgICAgICAgIHByZXNldFtuYW1lXSA9IGRlc3RpbmF0aW9uCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5kZXN0aW5hdGlvbl9idWZmZXJzOgorICAgICAgICAgICAgICAgICAgICBwcmVzZXRbbmFtZV0gPSBidWZmZXIKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBhc3NlcnQgbmFtZSBpbiBzZWxmLmZpZWxkX2Rlc3RpbmF0aW9ucwotICAgICAgICAgICAgcHJlc2V0W25hbWVdID0gZGVzdGluYXRpb24KKyAgICAgICAgICAgIGFzc2VydCBuYW1lIGluIHNlbGYuZGVzdGluYXRpb25fYnVmZmVycworICAgICAgICAgICAgcHJlc2V0W25hbWVdID0gYnVmZmVyCiAKICAgICAgICAgZ2xvYmFsIGNsaW5pYwogICAgICAgICBjbGluaWMgPSBzZWxmCiAKLSAgICBkZWYgZ2V0X2Rlc3RpbmF0aW9uKHNlbGYsIG5hbWUsIGRlZmF1bHQ9dW5zcGVjaWZpZWQpOgotICAgICAgICBkID0gc2VsZi5kZXN0aW5hdGlvbnMuZ2V0KG5hbWUpCi0gICAgICAgIGlmIG5vdCBkOgotICAgICAgICAgICAgaWYgZGVmYXVsdCBpcyBub3QgdW5zcGVjaWZpZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgICAgIGZhaWwoIkRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0OiAiICsgcmVwcihuYW1lKSkKLSAgICAgICAgcmV0dXJuIGQKLQogICAgIGRlZiBhZGRfZGVzdGluYXRpb24oc2VsZiwgbmFtZSwgdHlwZSwgKmFyZ3MpOgogICAgICAgICBpZiBuYW1lIGluIHNlbGYuZGVzdGluYXRpb25zOgogICAgICAgICAgICAgZmFpbCgiRGVzdGluYXRpb24gYWxyZWFkeSBleGlzdHM6ICIgKyByZXByKG5hbWUpKQogICAgICAgICBzZWxmLmRlc3RpbmF0aW9uc1tuYW1lXSA9IERlc3RpbmF0aW9uKG5hbWUsIHR5cGUsIHNlbGYsICphcmdzKQogCisgICAgZGVmIGdldF9kZXN0aW5hdGlvbihzZWxmLCBuYW1lKToKKyAgICAgICAgZCA9IHNlbGYuZGVzdGluYXRpb25zLmdldChuYW1lKQorICAgICAgICBpZiBub3QgZDoKKyAgICAgICAgICAgIGZhaWwoIkRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0OiAiICsgcmVwcihuYW1lKSkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBnZXRfZGVzdGluYXRpb25fYnVmZmVyKHNlbGYsIG5hbWUsIGl0ZW09MCk6CisgICAgICAgIGQgPSBzZWxmLmdldF9kZXN0aW5hdGlvbihuYW1lKQorICAgICAgICByZXR1cm4gZC5idWZmZXJzW2l0ZW1dCisKICAgICBkZWYgcGFyc2Uoc2VsZiwgaW5wdXQpOgogICAgICAgICBwcmludGVyID0gc2VsZi5wcmludGVyCiAgICAgICAgIHNlbGYuYmxvY2tfcGFyc2VyID0gQmxvY2tQYXJzZXIoaW5wdXQsIHNlbGYubGFuZ3VhZ2UsIHZlcmlmeT1zZWxmLnZlcmlmeSkKQEAgLTE2MzAsMTcgKzE3NDYsMTEgQEAKIAogICAgICAgICBzZWNvbmRfcGFzc19yZXBsYWNlbWVudHMgPSB7fQogCisgICAgICAgICMgdGhlc2UgYXJlIGRlc3RpbmF0aW9ucyBub3QgYnVmZmVycwogICAgICAgICBmb3IgbmFtZSwgZGVzdGluYXRpb24gaW4gc2VsZi5kZXN0aW5hdGlvbnMuaXRlbXMoKToKICAgICAgICAgICAgIGlmIGRlc3RpbmF0aW9uLnR5cGUgPT0gJ3N1cHByZXNzJzoKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgb3V0cHV0ID0gZGVzdGluYXRpb24uX2R1bXAoKQotCi0gICAgICAgICAgICBpZiBkZXN0aW5hdGlvbi50eXBlID09ICd0d28tcGFzcyc6Ci0gICAgICAgICAgICAgICAgaWYgZGVzdGluYXRpb24uaWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlY29uZF9wYXNzX3JlcGxhY2VtZW50c1tkZXN0aW5hdGlvbi5pZF0gPSBvdXRwdXQKLSAgICAgICAgICAgICAgICBlbGlmIG91dHB1dDoKLSAgICAgICAgICAgICAgICAgICAgZmFpbCgiVHdvLXBhc3MgYnVmZmVyICIgKyByZXByKG5hbWUpICsgIiBub3QgZW1wdHkgYXQgZW5kIG9mIGZpbGUhIikKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb3V0cHV0ID0gZGVzdGluYXRpb24uZHVtcCgpCiAKICAgICAgICAgICAgIGlmIG91dHB1dDoKIApAQCAtMTgzMiw2ICsxOTQyLDcgQEAKIF9faWFuZF9fCiBfX2lmbG9vcmRpdl9fCiBfX2lsc2hpZnRfXworX19pbWF0bXVsX18KIF9faW1vZF9fCiBfX2ltdWxfXwogX19pbmRleF9fCkBAIC0xODQ4LDYgKzE5NTksNyBAQAogX19sZW5fXwogX19sc2hpZnRfXwogX19sdF9fCitfX21hdG11bF9fCiBfX21vZF9fCiBfX211bF9fCiBfX25lZ19fCkBAIC0xODYyLDYgKzE5NzQsNyBAQAogX19yZXByX18KIF9fcmZsb29yZGl2X18KIF9fcmxzaGlmdF9fCitfX3JtYXRtdWxfXwogX19ybW9kX18KIF9fcm11bF9fCiBfX3Jvcl9fCkBAIC0yMzc5LDEyICsyNDkyLDEyIEBACiAKIGNsYXNzIGNoYXJfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnY2hhcicKLSAgICBkZWZhdWx0X3R5cGUgPSBzdHIKKyAgICBkZWZhdWx0X3R5cGUgPSAoYnl0ZXMsIGJ5dGVhcnJheSkKICAgICBmb3JtYXRfdW5pdCA9ICdjJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIidcMCciCiAKICAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5kZWZhdWx0LCBzdHIpIGFuZCAobGVuKHNlbGYuZGVmYXVsdCkgIT0gMSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5kZWZhdWx0LCBzZWxmLmRlZmF1bHRfdHlwZSkgYW5kIChsZW4oc2VsZi5kZWZhdWx0KSAhPSAxKToKICAgICAgICAgICAgIGZhaWwoImNoYXJfY29udmVydGVyOiBpbGxlZ2FsIGRlZmF1bHQgdmFsdWUgIiArIHJlcHIoc2VsZi5kZWZhdWx0KSkKIAogCkBAIC0yNDE3LDE4ICsyNTMwLDIwIEBACiAgICAgICAgIGlmIG5vdCBiaXR3aXNlOgogICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgc2hvcnRzIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ0MnLCB0eXBlcz0nc3RyJykKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCdDJywgYWNjZXB0PXtzdHJ9KQogY2xhc3MgaW50X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ2ludCcKICAgICBkZWZhdWx0X3R5cGUgPSBpbnQKICAgICBmb3JtYXRfdW5pdCA9ICdpJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIjAiCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgdHlwZXM9J2ludCcpOgotICAgICAgICBpZiB0eXBlcyA9PSAnc3RyJzoKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtpbnR9LCB0eXBlPU5vbmUpOgorICAgICAgICBpZiBhY2NlcHQgPT0ge3N0cn06CiAgICAgICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gJ0MnCi0gICAgICAgIGVsaWYgdHlwZXMgIT0gJ2ludCc6Ci0gICAgICAgICAgICBmYWlsKCJpbnRfY29udmVydGVyOiBpbGxlZ2FsICd0eXBlcycgYXJndW1lbnQiKQorICAgICAgICBlbGlmIGFjY2VwdCAhPSB7aW50fToKKyAgICAgICAgICAgIGZhaWwoImludF9jb252ZXJ0ZXI6IGlsbGVnYWwgJ2FjY2VwdCcgYXJndW1lbnQgIiArIHJlcHIoYWNjZXB0KSkKKyAgICAgICAgaWYgdHlwZSAhPSBOb25lOgorICAgICAgICAgICAgc2VsZi50eXBlID0gdHlwZQogCiBjbGFzcyB1bnNpZ25lZF9pbnRfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAndW5zaWduZWQgaW50JwpAQCAtMjUxNywxMzcgKzI2MzIsMTUzIEBACiAgICAgICAgICAgICBzZWxmLnR5cGUgPSB0eXBlCiAKIAotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3MjJywgbGVuZ3RoPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneScsIHR5cGVzPSJieXRlcyIpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigneSMnLCB0eXBlcz0iYnl0ZXMiLCBsZW5ndGg9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6JywgbnVsbGFibGU9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6IycsIG51bGxhYmxlPVRydWUsIGxlbmd0aD1UcnVlKQorIworIyBXZSBkZWZpbmUgdGhyZWUgY29udmVudGlvbnMgZm9yIGJ1ZmZlciB0eXBlcyBpbiB0aGUgJ2FjY2VwdCcgYXJndW1lbnQ6CisjCisjICBidWZmZXIgIDogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlCisjICByd2J1ZmZlcjogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlLCBidXQgbXVzdCBiZSB3cml0ZWFibGUKKyMgIHJvYnVmZmVyOiBhbnkgb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIGJ1dCBtdXN0IG5vdCBiZSB3cml0ZWFibGUKKyMKKworY2xhc3MgYnVmZmVyOiBwYXNzCitjbGFzcyByd2J1ZmZlcjogcGFzcworY2xhc3Mgcm9idWZmZXI6IHBhc3MKKworZGVmIHN0cl9jb252ZXJ0ZXJfa2V5KHR5cGVzLCBlbmNvZGluZywgemVyb2VzKToKKyAgICByZXR1cm4gKGZyb3plbnNldCh0eXBlcyksIGJvb2woZW5jb2RpbmcpLCBib29sKHplcm9lcykpCisKK3N0cl9jb252ZXJ0ZXJfYXJndW1lbnRfbWFwID0ge30KKwogY2xhc3Mgc3RyX2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ2NvbnN0IGNoYXIgKicKICAgICBkZWZhdWx0X3R5cGUgPSAoc3RyLCBOdWxsLCBOb25lVHlwZSkKICAgICBmb3JtYXRfdW5pdCA9ICdzJwogCi0gICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGVuY29kaW5nPU5vbmUsIHR5cGVzPSJzdHIiLAotICAgICAgICBsZW5ndGg9RmFsc2UsIG51bGxhYmxlPUZhbHNlLCB6ZXJvZXM9RmFsc2UpOgorICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCBhY2NlcHQ9e3N0cn0sIGVuY29kaW5nPU5vbmUsIHplcm9lcz1GYWxzZSk6CiAKLSAgICAgICAgdHlwZXMgPSBzZXQodHlwZXMuc3RyaXAoKS5zcGxpdCgpKQotICAgICAgICBieXRlc190eXBlID0gc2V0KCgiYnl0ZXMiLCkpCi0gICAgICAgIHN0cl90eXBlID0gc2V0KCgic3RyIiwpKQotICAgICAgICBhbGxfM190eXBlID0gc2V0KCgiYnl0ZWFycmF5IiwpKSB8IGJ5dGVzX3R5cGUgfCBzdHJfdHlwZQotICAgICAgICBpc19ieXRlcyA9IHR5cGVzID09IGJ5dGVzX3R5cGUKLSAgICAgICAgaXNfc3RyID0gdHlwZXMgPT0gc3RyX3R5cGUKLSAgICAgICAgaXNfYWxsXzMgPSB0eXBlcyA9PSBhbGxfM190eXBlCi0KLSAgICAgICAgc2VsZi5sZW5ndGggPSBib29sKGxlbmd0aCkKLSAgICAgICAgZm9ybWF0X3VuaXQgPSBOb25lCi0KLSAgICAgICAgaWYgZW5jb2Rpbmc6Ci0gICAgICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKLQotICAgICAgICAgICAgaWYgaXNfc3RyIGFuZCBub3QgKGxlbmd0aCBvciB6ZXJvZXMgb3IgbnVsbGFibGUpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2VzJwotICAgICAgICAgICAgZWxpZiBpc19hbGxfMyBhbmQgbm90IChsZW5ndGggb3IgemVyb2VzIG9yIG51bGxhYmxlKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdldCcKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBsZW5ndGggYW5kIHplcm9lcyBhbmQgbm90IG51bGxhYmxlOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2VzIycKLSAgICAgICAgICAgIGVsaWYgaXNfYWxsXzMgYW5kIGxlbmd0aCBhbmQgbm90IChudWxsYWJsZSBvciB6ZXJvZXMpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ2V0IycKLQotICAgICAgICAgICAgaWYgZm9ybWF0X3VuaXQuZW5kc3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICBmYWlsKCJTb3JyeTogY29kZSB1c2luZyBmb3JtYXQgdW5pdCAiLCByZXByKGZvcm1hdF91bml0KSwgInByb2JhYmx5IGRvZXNuJ3Qgd29yayBwcm9wZXJseSB5ZXQuXG5HaXZlIExhcnJ5IHlvdXIgdGVzdCBjYXNlIGFuZCBoZSdsbCBpdC4iKQotICAgICAgICAgICAgICAgICMgVE9ETyBzZXQgcG9pbnRlciB0byBOVUxMCi0gICAgICAgICAgICAgICAgIyBUT0RPIGFkZCBjbGVhbnVwIGZvciBidWZmZXIKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHplcm9lczoKLSAgICAgICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyAoemVyb2VzIGlzIG9ubHkgbGVnYWwgd2l0aCBhbiBlbmNvZGluZykiKQotCi0gICAgICAgICAgICBpZiBpc19ieXRlcyBhbmQgbm90IChudWxsYWJsZSBvciBsZW5ndGgpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3knCi0gICAgICAgICAgICBlbGlmIGlzX2J5dGVzIGFuZCBsZW5ndGggYW5kIG5vdCBudWxsYWJsZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd5IycKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBub3QgKG51bGxhYmxlIG9yIGxlbmd0aCk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAncycKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBsZW5ndGggYW5kIG5vdCBudWxsYWJsZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICdzIycKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBudWxsYWJsZSAgYW5kIG5vdCBsZW5ndGg6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneicKLSAgICAgICAgICAgIGVsaWYgaXNfc3RyIGFuZCBudWxsYWJsZSBhbmQgbGVuZ3RoOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3ojJwotCisgICAgICAgIGtleSA9IHN0cl9jb252ZXJ0ZXJfa2V5KGFjY2VwdCwgZW5jb2RpbmcsIHplcm9lcykKKyAgICAgICAgZm9ybWF0X3VuaXQgPSBzdHJfY29udmVydGVyX2FyZ3VtZW50X21hcC5nZXQoa2V5KQogICAgICAgICBpZiBub3QgZm9ybWF0X3VuaXQ6Ci0gICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyIpCisgICAgICAgICAgICBmYWlsKCJzdHJfY29udmVydGVyOiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cyIsIGtleSkKKwogICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gZm9ybWF0X3VuaXQKKyAgICAgICAgc2VsZi5sZW5ndGggPSBib29sKHplcm9lcykKKyAgICAgICAgaWYgZW5jb2Rpbmc6CisgICAgICAgICAgICBpZiBzZWxmLmRlZmF1bHQgbm90IGluIChOdWxsLCBOb25lLCB1bnNwZWNpZmllZCk6CisgICAgICAgICAgICAgICAgZmFpbCgic3RyX2NvbnZlcnRlcjogQXJndW1lbnQgQ2xpbmljIGRvZXNuJ3Qgc3VwcG9ydCBkZWZhdWx0IHZhbHVlcyBmb3IgZW5jb2RlZCBzdHJpbmdzIikKKyAgICAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICAgICAgc2VsZi50eXBlID0gJ2NoYXIgKicKKyAgICAgICAgICAgICMgc29ycnksIGNsaW5pYyBjYW4ndCBzdXBwb3J0IHByZWFsbG9jYXRlZCBidWZmZXJzCisgICAgICAgICAgICAjIGZvciBlcyMgYW5kIGV0IworICAgICAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSAiTlVMTCIKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmVuY29kaW5nOgorICAgICAgICAgICAgbmFtZSA9IGVuc3VyZV9sZWdhbF9jX2lkZW50aWZpZXIoc2VsZi5uYW1lKQorICAgICAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIilcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG4iXSkKKworIworIyBUaGlzIGlzIHRoZSBmb3VydGggb3IgZmlmdGggcmV3cml0ZSBvZiByZWdpc3RlcmluZyBhbGwgdGhlCisjIGNyYXp5IHN0cmluZyBjb252ZXJ0ZXIgZm9ybWF0IHVuaXRzLiAgUHJldmlvdXMgYXBwcm9hY2hlcyBoaWQKKyMgYnVncy0tZ2VuZXJhbGx5IG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBmb3JtYXQKKyMgdW5pdCBhbmQgdGhlIGFyZ3VtZW50cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRob3NlIHNlbWFudGljcworIyBwcm9wZXJseS4gIEhvcGVmdWxseSB3aXRoIHRoaXMgYXBwcm9hY2ggd2UnbGwgZ2V0IGl0IDEwMCUgcmlnaHQuCisjCisjIFRoZSByKCkgZnVuY3Rpb24gKHNob3J0IGZvciAicmVnaXN0ZXIiKSBib3RoIHJlZ2lzdGVycyB0aGUKKyMgbWFwcGluZyBmcm9tIGFyZ3VtZW50cyB0byBmb3JtYXQgdW5pdCAqYW5kKiByZWdpc3RlcnMgdGhlCisjIGxlZ2FjeSBDIGNvbnZlcnRlciBmb3IgdGhhdCBmb3JtYXQgdW5pdC4KKyMKK2RlZiByKGZvcm1hdF91bml0LCAqLCBhY2NlcHQsIGVuY29kaW5nPUZhbHNlLCB6ZXJvZXM9RmFsc2UpOgorICAgIGlmIG5vdCBlbmNvZGluZyBhbmQgZm9ybWF0X3VuaXQgIT0gJ3MnOgorICAgICAgICAjIGFkZCB0aGUgbGVnYWN5IGMgY29udmVydGVycyBoZXJlIHRvby4KKyAgICAgICAgIworICAgICAgICAjIG5vdGU6IGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIgY2FuJ3Qgd29yayBmb3IKKyAgICAgICAgIyAgIGVzLCBlcyMsIGV0LCBvciBldCMKKyAgICAgICAgIyAgIGJlY2F1c2Ugb2YgdGhlaXIgZXh0cmEgZW5jb2RpbmcgYXJndW1lbnQKKyAgICAgICAgIworICAgICAgICAjIGFsc28gZG9uJ3QgYWRkIHRoZSBjb252ZXJ0ZXIgZm9yICdzJyBiZWNhdXNlCisgICAgICAgICMgdGhlIG1ldGFjbGFzcyBmb3IgQ0NvbnZlcnRlciBhZGRzIGl0IGZvciB1cy4KKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAgaWYgYWNjZXB0ICE9IHtzdHJ9OgorICAgICAgICAgICAga3dhcmdzWydhY2NlcHQnXSA9IGFjY2VwdAorICAgICAgICBpZiB6ZXJvZXM6CisgICAgICAgICAgICBrd2FyZ3NbJ3plcm9lcyddID0gVHJ1ZQorICAgICAgICBhZGRlZF9mID0gZnVuY3Rvb2xzLnBhcnRpYWwoc3RyX2NvbnZlcnRlciwgKiprd2FyZ3MpCisgICAgICAgIGxlZ2FjeV9jb252ZXJ0ZXJzW2Zvcm1hdF91bml0XSA9IGFkZGVkX2YKKworICAgIGQgPSBzdHJfY29udmVydGVyX2FyZ3VtZW50X21hcAorICAgIGtleSA9IHN0cl9jb252ZXJ0ZXJfa2V5KGFjY2VwdCwgZW5jb2RpbmcsIHplcm9lcykKKyAgICBpZiBrZXkgaW4gZDoKKyAgICAgICAgc3lzLmV4aXQoIkR1cGxpY2F0ZSBrZXlzIHNwZWNpZmllZCBmb3Igc3RyX2NvbnZlcnRlcl9hcmd1bWVudF9tYXAhIikKKyAgICBkW2tleV0gPSBmb3JtYXRfdW5pdAorCityKCdlcycsICBlbmNvZGluZz1UcnVlLCAgICAgICAgICAgICAgYWNjZXB0PXtzdHJ9KQorcignZXMjJywgZW5jb2Rpbmc9VHJ1ZSwgemVyb2VzPVRydWUsIGFjY2VwdD17c3RyfSkKK3IoJ2V0JywgIGVuY29kaW5nPVRydWUsICAgICAgICAgICAgICBhY2NlcHQ9e2J5dGVzLCBieXRlYXJyYXksIHN0cn0pCityKCdldCMnLCBlbmNvZGluZz1UcnVlLCB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtieXRlcywgYnl0ZWFycmF5LCBzdHJ9KQorcigncycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD17c3RyfSkKK3IoJ3MjJywgICAgICAgICAgICAgICAgIHplcm9lcz1UcnVlLCBhY2NlcHQ9e3JvYnVmZmVyLCBzdHJ9KQorcigneScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD17cm9idWZmZXJ9KQorcigneSMnLCAgICAgICAgICAgICAgICAgemVyb2VzPVRydWUsIGFjY2VwdD17cm9idWZmZXJ9KQorcigneicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCityKCd6IycsICAgICAgICAgICAgICAgICB6ZXJvZXM9VHJ1ZSwgYWNjZXB0PXtyb2J1ZmZlciwgc3RyLCBOb25lVHlwZX0pCitkZWwgcgogCiAKIGNsYXNzIFB5Qnl0ZXNPYmplY3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlCeXRlc09iamVjdCAqJwogICAgIGZvcm1hdF91bml0ID0gJ1MnCisgICAgIyBhY2NlcHQgPSB7Ynl0ZXN9CiAKIGNsYXNzIFB5Qnl0ZUFycmF5T2JqZWN0X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5Qnl0ZUFycmF5T2JqZWN0IConCiAgICAgZm9ybWF0X3VuaXQgPSAnWScKKyAgICAjIGFjY2VwdCA9IHtieXRlYXJyYXl9CiAKIGNsYXNzIHVuaWNvZGVfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlPYmplY3QgKicKICAgICBkZWZhdWx0X3R5cGUgPSAoc3RyLCBOdWxsLCBOb25lVHlwZSkKICAgICBmb3JtYXRfdW5pdCA9ICdVJwogCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigndSMnLCBsZW5ndGg9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdaJywgbnVsbGFibGU9VHJ1ZSkKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCdaIycsIG51bGxhYmxlPVRydWUsIGxlbmd0aD1UcnVlKQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3UjJywgemVyb2VzPVRydWUpCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignWicsIGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCitAYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcignWiMnLCBhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9LCB6ZXJvZXM9VHJ1ZSkKIGNsYXNzIFB5X1VOSUNPREVfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlfVU5JQ09ERSAqJwogICAgIGRlZmF1bHRfdHlwZSA9IChzdHIsIE51bGwsIE5vbmVUeXBlKQogICAgIGZvcm1hdF91bml0ID0gJ3UnCiAKLSAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgbnVsbGFibGU9RmFsc2UsIGxlbmd0aD1GYWxzZSk6Ci0gICAgICAgIGZvcm1hdF91bml0ID0gJ1onIGlmIG51bGxhYmxlIGVsc2UgJ3UnCi0gICAgICAgIGlmIGxlbmd0aDoKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtzdHJ9LCB6ZXJvZXM9RmFsc2UpOgorICAgICAgICBmb3JtYXRfdW5pdCA9ICdaJyBpZiBhY2NlcHQ9PXtzdHIsIE5vbmVUeXBlfSBlbHNlICd1JworICAgICAgICBpZiB6ZXJvZXM6CiAgICAgICAgICAgICBmb3JtYXRfdW5pdCArPSAnIycKICAgICAgICAgICAgIHNlbGYubGVuZ3RoID0gVHJ1ZQogICAgICAgICBzZWxmLmZvcm1hdF91bml0ID0gZm9ybWF0X3VuaXQKIAotIwotIyBXZSBkZWZpbmUgdGhyZWUgc3RyaW5nIGNvbnZlbnRpb25zIGZvciBidWZmZXIgdHlwZXMgaW4gdGhlICd0eXBlcycgYXJndW1lbnQ6Ci0jICAnYnVmZmVyJyA6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZQotIyAgJ3J3YnVmZmVyJzogYW55IG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlLCBidXQgbXVzdCBiZSB3cml0ZWFibGUKLSMgICdyb2J1ZmZlcic6IGFueSBvYmplY3Qgc3VwcG9ydGluZyB0aGUgYnVmZmVyIGludGVyZmFjZSwgYnV0IG11c3Qgbm90IGJlIHdyaXRlYWJsZQotIwotQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3MqJywgdHlwZXM9J3N0ciBieXRlcyBieXRlYXJyYXkgYnVmZmVyJykKLUBhZGRfbGVnYWN5X2NfY29udmVydGVyKCd6KicsIHR5cGVzPSdzdHIgYnl0ZXMgYnl0ZWFycmF5IGJ1ZmZlcicsIG51bGxhYmxlPVRydWUpCi1AYWRkX2xlZ2FjeV9jX2NvbnZlcnRlcigndyonLCB0eXBlcz0nYnl0ZWFycmF5IHJ3YnVmZmVyJykKK0BhZGRfbGVnYWN5X2NfY29udmVydGVyKCdzKicsIGFjY2VwdD17c3RyLCBidWZmZXJ9KQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3oqJywgYWNjZXB0PXtzdHIsIGJ1ZmZlciwgTm9uZVR5cGV9KQorQGFkZF9sZWdhY3lfY19jb252ZXJ0ZXIoJ3cqJywgYWNjZXB0PXtyd2J1ZmZlcn0pCiBjbGFzcyBQeV9idWZmZXJfY29udmVydGVyKENDb252ZXJ0ZXIpOgogICAgIHR5cGUgPSAnUHlfYnVmZmVyJwogICAgIGZvcm1hdF91bml0ID0gJ3kqJwogICAgIGltcGxfYnlfcmVmZXJlbmNlID0gVHJ1ZQogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIntOVUxMLCBOVUxMfSIKIAotICAgIGRlZiBjb252ZXJ0ZXJfaW5pdChzZWxmLCAqLCB0eXBlcz0nYnl0ZXMgYnl0ZWFycmF5IGJ1ZmZlcicsIG51bGxhYmxlPUZhbHNlKToKKyAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYWNjZXB0PXtidWZmZXJ9KToKICAgICAgICAgaWYgc2VsZi5kZWZhdWx0IG5vdCBpbiAodW5zcGVjaWZpZWQsIE5vbmUpOgogICAgICAgICAgICAgZmFpbCgiVGhlIG9ubHkgbGVnYWwgZGVmYXVsdCB2YWx1ZSBmb3IgUHlfYnVmZmVyIGlzIE5vbmUuIikKLSAgICAgICAgc2VsZi5jX2RlZmF1bHQgPSBzZWxmLmNfaWdub3JlZF9kZWZhdWx0Ci0gICAgICAgIHR5cGVzID0gc2V0KHR5cGVzLnN0cmlwKCkuc3BsaXQoKSkKLSAgICAgICAgYnl0ZXNfdHlwZSA9IHNldCgoJ2J5dGVzJywpKQotICAgICAgICBieXRlYXJyYXlfdHlwZSA9IHNldCgoJ2J5dGVhcnJheScsKSkKLSAgICAgICAgYnVmZmVyX3R5cGUgPSBzZXQoKCdidWZmZXInLCkpCi0gICAgICAgIHJ3YnVmZmVyX3R5cGUgPSBzZXQoKCdyd2J1ZmZlcicsKSkKLSAgICAgICAgcm9idWZmZXJfdHlwZSA9IHNldCgoJ3JvYnVmZmVyJywpKQotICAgICAgICBzdHJfdHlwZSA9IHNldCgoJ3N0cicsKSkKLSAgICAgICAgYnl0ZXNfYnl0ZWFycmF5X2J1ZmZlcl90eXBlID0gYnl0ZXNfdHlwZSB8IGJ5dGVhcnJheV90eXBlIHwgYnVmZmVyX3R5cGUKIAotICAgICAgICBmb3JtYXRfdW5pdCA9IE5vbmUKLSAgICAgICAgaWYgdHlwZXMgPT0gKHN0cl90eXBlIHwgYnl0ZXNfYnl0ZWFycmF5X2J1ZmZlcl90eXBlKToKLSAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3MqJyBpZiBub3QgbnVsbGFibGUgZWxzZSAneionCisgICAgICAgIHNlbGYuY19kZWZhdWx0ID0gc2VsZi5jX2lnbm9yZWRfZGVmYXVsdAorCisgICAgICAgIGlmIGFjY2VwdCA9PSB7c3RyLCBidWZmZXIsIE5vbmVUeXBlfToKKyAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3oqJworICAgICAgICBlbGlmIGFjY2VwdCA9PSB7c3RyLCBidWZmZXJ9OgorICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAncyonCisgICAgICAgIGVsaWYgYWNjZXB0ID09IHtidWZmZXJ9OgorICAgICAgICAgICAgZm9ybWF0X3VuaXQgPSAneSonCisgICAgICAgIGVsaWYgYWNjZXB0ID09IHtyd2J1ZmZlcn06CisgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd3KicKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG51bGxhYmxlOgotICAgICAgICAgICAgICAgIGZhaWwoJ1B5X2J1ZmZlcl9jb252ZXJ0ZXI6IGlsbGVnYWwgY29tYmluYXRpb24gb2YgYXJndW1lbnRzIChudWxsYWJsZT1UcnVlKScpCi0gICAgICAgICAgICBlbGlmIHR5cGVzID09IChieXRlc19ieXRlYXJyYXlfYnVmZmVyX3R5cGUpOgotICAgICAgICAgICAgICAgIGZvcm1hdF91bml0ID0gJ3kqJwotICAgICAgICAgICAgZWxpZiB0eXBlcyA9PSAoYnl0ZWFycmF5X3R5cGUgfCByd2J1ZmZlcl90eXBlKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfdW5pdCA9ICd3KicKLSAgICAgICAgaWYgbm90IGZvcm1hdF91bml0OgogICAgICAgICAgICAgZmFpbCgiUHlfYnVmZmVyX2NvbnZlcnRlcjogaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBhcmd1bWVudHMiKQogCiAgICAgICAgIHNlbGYuZm9ybWF0X3VuaXQgPSBmb3JtYXRfdW5pdApAQCAtMjg2MywxMCArMjk5NCwxMSBAQAogICAgIHR5cGUgPSAnbG9uZycKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tTG9uZycKICAgICBjYXN0ID0gJycKKyAgICB1bnNpZ25lZF9jYXN0ID0gJycKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICBzZWxmLmRlY2xhcmUoZGF0YSkKLSAgICAgICAgc2VsZi5lcnJfb2NjdXJyZWRfaWYoIl9yZXR1cm5fdmFsdWUgPT0gLTEiLCBkYXRhKQorICAgICAgICBzZWxmLmVycl9vY2N1cnJlZF9pZigiX3JldHVybl92YWx1ZSA9PSB7fS0xIi5mb3JtYXQoc2VsZi51bnNpZ25lZF9jYXN0KSwgZGF0YSkKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAnJy5qb2luKCgncmV0dXJuX3ZhbHVlID0gJywgc2VsZi5jb252ZXJzaW9uX2ZuLCAnKCcsIHNlbGYuY2FzdCwgJ19yZXR1cm5fdmFsdWUpO1xuJykpKQogCkBAIC0yODg3LDEwICszMDE5LDEyIEBACiBjbGFzcyB1bnNpZ25lZF9sb25nX3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ3Vuc2lnbmVkIGxvbmcnCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZycKKyAgICB1bnNpZ25lZF9jYXN0ID0gJyh1bnNpZ25lZCBsb25nKScKIAogY2xhc3MgdW5zaWduZWRfaW50X3JldHVybl9jb252ZXJ0ZXIodW5zaWduZWRfbG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ3Vuc2lnbmVkIGludCcKICAgICBjYXN0ID0gJyh1bnNpZ25lZCBsb25nKScKKyAgICB1bnNpZ25lZF9jYXN0ID0gJyh1bnNpZ25lZCBpbnQpJwogCiBjbGFzcyBQeV9zc2l6ZV90X3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X3NzaXplX3QnCkBAIC0yODk5LDYgKzMwMzMsNyBAQAogY2xhc3Mgc2l6ZV90X3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKICAgICB0eXBlID0gJ3NpemVfdCcKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tU2l6ZV90JworICAgIHVuc2lnbmVkX2Nhc3QgPSAnKHNpemVfdCknCiAKIAogY2xhc3MgZG91YmxlX3JldHVybl9jb252ZXJ0ZXIoQ1JldHVybkNvbnZlcnRlcik6CkBAIC0yOTI2LDYgKzMwNjEsMjQgQEAKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KF9yZXR1cm5fdmFsdWUpO1xuJykKIAogCitkZWYgZXZhbF9hc3RfZXhwcihub2RlLCBnbG9iYWxzLCAqLCBmaWxlbmFtZT0nLScpOgorICAgICIiIgorICAgIFRha2VzIGFuIGFzdC5FeHByIG5vZGUuICBDb21waWxlcyBhbmQgZXZhbHVhdGVzIGl0LgorICAgIFJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgZXhwcmVzc2lvbi4KKworICAgIGdsb2JhbHMgcmVwcmVzZW50cyB0aGUgZ2xvYmFscyBkaWN0IHRoZSBleHByZXNzaW9uCisgICAgc2hvdWxkIHNlZS4gIChUaGVyZSdzIG5vIGVxdWl2YWxlbnQgZm9yICJsb2NhbHMiIGhlcmUuKQorICAgICIiIgorCisgICAgaWYgaXNpbnN0YW5jZShub2RlLCBhc3QuRXhwcik6CisgICAgICAgIG5vZGUgPSBub2RlLnZhbHVlCisKKyAgICBub2RlID0gYXN0LkV4cHJlc3Npb24obm9kZSkKKyAgICBjbyA9IGNvbXBpbGUobm9kZSwgZmlsZW5hbWUsICdldmFsJykKKyAgICBmbiA9IHR5cGVzLkZ1bmN0aW9uVHlwZShjbywgZ2xvYmFscykKKyAgICByZXR1cm4gZm4oKQorCisKIGNsYXNzIEluZGVudFN0YWNrOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5pbmRlbnRzID0gW10KQEAgLTMwOTQsNDMgKzMyNDcsNDMgQEAKICAgICAgICAgZmFpbCgidW5rbm93biBkZXN0aW5hdGlvbiBjb21tYW5kIiwgcmVwcihjb21tYW5kKSkKIAogCi0gICAgZGVmIGRpcmVjdGl2ZV9vdXRwdXQoc2VsZiwgZmllbGQsIGRlc3RpbmF0aW9uPScnKToKLSAgICAgICAgZmQgPSBzZWxmLmNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnMKKyAgICBkZWYgZGlyZWN0aXZlX291dHB1dChzZWxmLCBjb21tYW5kX29yX25hbWUsIGRlc3RpbmF0aW9uPScnKToKKyAgICAgICAgZmQgPSBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzCiAKLSAgICAgICAgaWYgZmllbGQgPT0gInByZXNldCI6CisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicHJlc2V0IjoKICAgICAgICAgICAgIHByZXNldCA9IHNlbGYuY2xpbmljLnByZXNldHMuZ2V0KGRlc3RpbmF0aW9uKQogICAgICAgICAgICAgaWYgbm90IHByZXNldDoKICAgICAgICAgICAgICAgICBmYWlsKCJVbmtub3duIHByZXNldCAiICsgcmVwcihkZXN0aW5hdGlvbikgKyAiISIpCiAgICAgICAgICAgICBmZC51cGRhdGUocHJlc2V0KQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgZmllbGQgPT0gInB1c2giOgotICAgICAgICAgICAgc2VsZi5jbGluaWMuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrLmFwcGVuZChmZC5jb3B5KCkpCisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicHVzaCI6CisgICAgICAgICAgICBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrLmFwcGVuZChmZC5jb3B5KCkpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBmaWVsZCA9PSAicG9wIjoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsaW5pYy5maWVsZF9kZXN0aW5hdGlvbnNfc3RhY2s6CisgICAgICAgIGlmIGNvbW1hbmRfb3JfbmFtZSA9PSAicG9wIjoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsaW5pYy5kZXN0aW5hdGlvbl9idWZmZXJzX3N0YWNrOgogICAgICAgICAgICAgICAgIGZhaWwoIkNhbid0ICdvdXRwdXQgcG9wJywgc3RhY2sgaXMgZW1wdHkhIikKLSAgICAgICAgICAgIHByZXZpb3VzX2ZkID0gc2VsZi5jbGluaWMuZmllbGRfZGVzdGluYXRpb25zX3N0YWNrLnBvcCgpCisgICAgICAgICAgICBwcmV2aW91c19mZCA9IHNlbGYuY2xpbmljLmRlc3RpbmF0aW9uX2J1ZmZlcnNfc3RhY2sucG9wKCkKICAgICAgICAgICAgIGZkLnVwZGF0ZShwcmV2aW91c19mZCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgc2VjcmV0IGNvbW1hbmQgZm9yIGRlYnVnZ2luZyEKLSAgICAgICAgaWYgZmllbGQgPT0gInByaW50IjoKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJwcmludCI6CiAgICAgICAgICAgICBzZWxmLmJsb2NrLm91dHB1dC5hcHBlbmQocHByaW50LnBmb3JtYXQoZmQpKQogICAgICAgICAgICAgc2VsZi5ibG9jay5vdXRwdXQuYXBwZW5kKCdcbicpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBkID0gc2VsZi5jbGluaWMuZ2V0X2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQogCi0gICAgICAgIGlmIGZpZWxkID09ICJldmVyeXRoaW5nIjoKKyAgICAgICAgaWYgY29tbWFuZF9vcl9uYW1lID09ICJldmVyeXRoaW5nIjoKICAgICAgICAgICAgIGZvciBuYW1lIGluIGxpc3QoZmQpOgogICAgICAgICAgICAgICAgIGZkW25hbWVdID0gZAogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgaWYgZmllbGQgbm90IGluIGZkOgotICAgICAgICAgICAgZmFpbCgiSW52YWxpZCBmaWVsZCAiICsgcmVwcihmaWVsZCkgKyAiLCBtdXN0IGJlIG9uZSBvZjpcbiAgcHJlc2V0IHB1c2ggcG9wIHByaW50IGV2ZXJ5dGhpbmcgIiArICIgIi5qb2luKGZkKSkKLSAgICAgICAgZmRbZmllbGRdID0gZAorICAgICAgICBpZiBjb21tYW5kX29yX25hbWUgbm90IGluIGZkOgorICAgICAgICAgICAgZmFpbCgiSW52YWxpZCBjb21tYW5kIC8gZGVzdGluYXRpb24gbmFtZSAiICsgcmVwcihjb21tYW5kX29yX25hbWUpICsgIiwgbXVzdCBiZSBvbmUgb2Y6XG4gIHByZXNldCBwdXNoIHBvcCBwcmludCBldmVyeXRoaW5nICIgKyAiICIuam9pbihmZCkpCisgICAgICAgIGZkW2NvbW1hbmRfb3JfbmFtZV0gPSBkCiAKICAgICBkZWYgZGlyZWN0aXZlX2R1bXAoc2VsZiwgbmFtZSk6CiAgICAgICAgIHNlbGYuYmxvY2sub3V0cHV0LmFwcGVuZChzZWxmLmNsaW5pYy5nZXRfZGVzdGluYXRpb24obmFtZSkuZHVtcCgpKQpAQCAtMzUxMyw3ICszNjY2LDcgQEAKICAgICAgICAgZXhjZXB0IFN5bnRheEVycm9yOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgdGhlIGxhc3QgPSB3YXMgcHJvYmFibHkgaW5zaWRlIGEgZnVuY3Rpb24gY2FsbCwgbGlrZQotICAgICAgICAgICAgICAgICMgICBpOiBpbnQobnVsbGFibGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAjICAgYzogaW50KGFjY2VwdD17c3RyfSkKICAgICAgICAgICAgICAgICAjIHNvIGFzc3VtZSB0aGVyZSB3YXMgbm8gYWN0dWFsIGRlZmF1bHQgdmFsdWUuCiAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IE5vbmUKICAgICAgICAgICAgICAgICBhc3RfaW5wdXQgPSAiZGVmIHgoe30pOiBwYXNzIi5mb3JtYXQobGluZSkKQEAgLTM1MjQsNiArMzY3NywxNCBAQAogICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIGludmFsaWQgcGFyYW1ldGVyIGRlY2xhcmF0aW9uOlxuXHQiICsgbGluZSkKIAogICAgICAgICBmdW5jdGlvbl9hcmdzID0gbW9kdWxlLmJvZHlbMF0uYXJncworCisgICAgICAgIGlmIGxlbihmdW5jdGlvbl9hcmdzLmFyZ3MpID4gMToKKyAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbiAoY29tbWE/KTpcblx0IiArIGxpbmUpCisgICAgICAgIGlmIGZ1bmN0aW9uX2FyZ3MuZGVmYXVsdHMgb3IgZnVuY3Rpb25fYXJncy5rd19kZWZhdWx0czoKKyAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbiAoZGVmYXVsdCB2YWx1ZT8pOlxuXHQiICsgbGluZSkKKyAgICAgICAgaWYgZnVuY3Rpb25fYXJncy52YXJhcmcgb3IgZnVuY3Rpb25fYXJncy5rd2FyZzoKKyAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiBpbnZhbGlkIHBhcmFtZXRlciBkZWNsYXJhdGlvbiAoKmFyZ3M/ICoqa3dhcmdzPyk6XG5cdCIgKyBsaW5lKQorCiAgICAgICAgIHBhcmFtZXRlciA9IGZ1bmN0aW9uX2FyZ3MuYXJnc1swXQogCiAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0gcGFyYW1ldGVyLmFyZwpAQCAtMzY4Niw3ICszODQ3LDkgQEAKICAgICAgICAgICAgIGZhaWwoIkFubm90YXRpb25zIG11c3QgYmUgZWl0aGVyIGEgbmFtZSwgYSBmdW5jdGlvbiBjYWxsLCBvciBhIHN0cmluZy4iKQogCiAgICAgICAgIG5hbWUgPSBhbm5vdGF0aW9uLmZ1bmMuaWQKLSAgICAgICAga3dhcmdzID0ge25vZGUuYXJnOiBhc3QubGl0ZXJhbF9ldmFsKG5vZGUudmFsdWUpIGZvciBub2RlIGluIGFubm90YXRpb24ua2V5d29yZHN9CisgICAgICAgIHN5bWJvbHMgPSBnbG9iYWxzKCkKKworICAgICAgICBrd2FyZ3MgPSB7bm9kZS5hcmc6IGV2YWxfYXN0X2V4cHIobm9kZS52YWx1ZSwgc3ltYm9scykgZm9yIG5vZGUgaW4gYW5ub3RhdGlvbi5rZXl3b3Jkc30KICAgICAgICAgcmV0dXJuIG5hbWUsIEZhbHNlLCBrd2FyZ3MKIAogICAgIGRlZiBwYXJzZV9zcGVjaWFsX3N5bWJvbChzZWxmLCBzeW1ib2wpOgpAQCAtMzk1OSw3ICs0MTIyLDcgQEAKICAgICAgICAgIyAgICAgYWRkKGYucmV0dXJuX2NvbnZlcnRlci5weV9kZWZhdWx0KQogCiAgICAgICAgIGlmIG5vdCBmLmRvY3N0cmluZ19vbmx5OgotICAgICAgICAgICAgYWRkKCJcbi0tXG4iKQorICAgICAgICAgICAgYWRkKCJcbiIgKyBzaWdfZW5kX21hcmtlciArICJcbiIpCiAKICAgICAgICAgZG9jc3RyaW5nX2ZpcnN0X2xpbmUgPSBvdXRwdXQoKQogCmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL3NzMS5weSBiL1Rvb2xzL2RlbW8vc3MxLnB5CmluZGV4IDY0OTc5MGYuLmM1MWYwNDEgMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vc3MxLnB5CisrKyBiL1Rvb2xzL2RlbW8vc3MxLnB5CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICBkZWYgZW5kX2ludChzZWxmLCB0ZXh0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IGludCh0ZXh0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBOb25lCiAKICAgICBlbmRfbG9uZyA9IGVuZF9pbnQKQEAgLTI2OSwxMyArMjY5LDEzIEBACiAgICAgZGVmIGVuZF9kb3VibGUoc2VsZiwgdGV4dCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBmbG9hdCh0ZXh0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBOb25lCiAKICAgICBkZWYgZW5kX2NvbXBsZXgoc2VsZiwgdGV4dCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudmFsdWUgPSBjb21wbGV4KHRleHQpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi52YWx1ZSA9IE5vbmUKIAogICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYsIHRleHQpOgpAQCAtNzYzLDcgKzc2Myw3IEBACiAgICAgICAgICAgICBmb3IgY2xzIGluIGludCwgZmxvYXQsIGNvbXBsZXg6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNscyh0ZXh0KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgY2VsbCA9IE51bWVyaWNDZWxsKHZhbHVlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL1JFQURNRSBiL1Rvb2xzL2ZyZWV6ZS9SRUFETUUKaW5kZXggODFiZTJjOC4uNWJjNWIwNCAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL1JFQURNRQorKysgYi9Ub29scy9mcmVlemUvUkVBRE1FCkBAIC0xMDAsOCArMTAwLDggQEAKIHRoZW4gZGVjbGFyZSB0aGVzZSBkaXJlY3RvcmllcyBpbiB5b3VyIGZyb3plbiBQeXRob24gcHJvZ3JhbSB1c2luZwogdGhlIFRDTF9MSUJSQVJZLCBUS19MSUJSQVJZIGFuZCBUSVhfTElCUkFSWSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAKLUZvciBleGFtcGxlLCBhc3N1bWUgeW91IHdpbGwgc2hpcCB5b3VyIGZyb3plbiBwcm9ncmFtIGluIHRoZSBkaXJlY3RvcnkgCi08cm9vdD4vYmluL3dpbmRvd3MteDg2IGFuZCB3aWxsIHBsYWNlIHlvdXIgVGNsIGxpYnJhcnkgZmlsZXMgCitGb3IgZXhhbXBsZSwgYXNzdW1lIHlvdSB3aWxsIHNoaXAgeW91ciBmcm96ZW4gcHJvZ3JhbSBpbiB0aGUgZGlyZWN0b3J5Cis8cm9vdD4vYmluL3dpbmRvd3MteDg2IGFuZCB3aWxsIHBsYWNlIHlvdXIgVGNsIGxpYnJhcnkgZmlsZXMKIGluIDxyb290Pi9saWIvdGNsOC4yIGFuZCB5b3VyIFRrIGxpYnJhcnkgZmlsZXMgaW4gPHJvb3Q+L2xpYi90azguMi4gVGhlbgogcGxhY2luZyB0aGUgZm9sbG93aW5nIGxpbmVzIGluIHlvdXIgZnJvemVuIFB5dGhvbiBzY3JpcHQgYmVmb3JlIGltcG9ydGluZwogVGtpbnRlciBvciBUaXggd291bGQgc2V0IHRoZSBlbnZpcm9ubWVudCBjb3JyZWN0bHkgZm9yIFRjbC9Uay9UaXg6CkBAIC0xMzgsOCArMTM4LDggQEAKIGVudmlyb25tZW50IHZhcmlhYmxlIExEX0xJQlJBUllfUEFUSCBhbmQvb3IgdGhlIHN5c3RlbQogc2hhcmVkIGxpYnJhcnkgY2FjaGUgKGxkLnNvKS4gQW4gYWRkaXRpb25hbCBwcmVmZXJyZWQgZGlyZWN0b3J5IGZvcgogZmluZGluZyB0aGUgZHluYW1pYyBsaWJyYXJpZXMgaXMgYnVpbHQgaW50byB0aGUgLmRsbCBvciAuc28gZmlsZXMgYXQKLWNvbXBpbGUgdGltZSAtIHNlZSB0aGUgTElCX1JVTlRJTUVfRElSIHZhcmlhYmxlIGluIHRoZSBUY2wgbWFrZWZpbGUuIAotVGhlIE9TIG11c3QgZmluZCB0aGUgZHluYW1pYyBsaWJyYXJpZXMgb3IgeW91ciBmcm96ZW4gcHJvZ3JhbSB3b24ndCBzdGFydC4gCitjb21waWxlIHRpbWUgLSBzZWUgdGhlIExJQl9SVU5USU1FX0RJUiB2YXJpYWJsZSBpbiB0aGUgVGNsIG1ha2VmaWxlLgorVGhlIE9TIG11c3QgZmluZCB0aGUgZHluYW1pYyBsaWJyYXJpZXMgb3IgeW91ciBmcm96ZW4gcHJvZ3JhbSB3b24ndCBzdGFydC4KIFVzdWFsbHkgSSBtYWtlIHN1cmUgdGhhdCB0aGUgLnNvIG9yIC5kbGwgZmlsZXMgYXJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQogYXMgdGhlIGV4ZWN1dGFibGUsIGJ1dCB0aGlzIG1heSBub3QgYmUgZm9vbHByb29mLgogCkBAIC0xNDksOCArMTQ5LDggQEAKIHRvIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIHdoZW4gdGhlIHByb2dyYW0gcnVuczsgdGhpcyBpcyBjdXJyZW50bHkgbGVmdAogYXMgYW4gZXhlcmNpc2UgZm9yIHRoZSByZWFkZXIuICBBbiBlYXNpZXIgYXBwcm9hY2ggaXMgdG8gZnJlZXplIHRoZQogVGNsL1RrL1RpeCBjb2RlIGludG8gdGhlIGR5bmFtaWMgbGlicmFyaWVzIHVzaW5nIHRoZSBUY2wgRVQgY29kZSwKLW9yIHRoZSBUaXggU3RhbmQtQWxvbmUtTW9kdWxlIGNvZGUuIE9mIGNvdXJzZSwgeW91IGNhbiBhbHNvIHNpbXBseSAKLXJlcXVpcmUgdGhhdCBUY2wvVGsgaXMgcmVxdWlyZWQgb24gdGhlIHRhcmdldCBpbnN0YWxsYXRpb24sIGJ1dCBiZSAKK29yIHRoZSBUaXggU3RhbmQtQWxvbmUtTW9kdWxlIGNvZGUuIE9mIGNvdXJzZSwgeW91IGNhbiBhbHNvIHNpbXBseQorcmVxdWlyZSB0aGF0IFRjbC9UayBpcyByZXF1aXJlZCBvbiB0aGUgdGFyZ2V0IGluc3RhbGxhdGlvbiwgYnV0IGJlCiBjYXJlZnVsIHRoYXQgdGhlIHZlcnNpb24gY29ycmVzcG9uZHMuCiAKIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgdXNpbmcgZnJvemVuIFRraW50ZXIgYXBwbGljYXRpb25zOgpAQCAtMTY0LDcgKzE2NCw3IEBACiBBIHdhcm5pbmcgYWJvdXQgc2hhcmVkIGxpYnJhcnkgbW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotV2hlbiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gdXNlcyBzaGFyZWQgbGlicmFyeSBtb2R1bGVzIHN1Y2ggYXMgCitXaGVuIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiB1c2VzIHNoYXJlZCBsaWJyYXJ5IG1vZHVsZXMgc3VjaCBhcwogX3RraW50ZXIucHlkLCB0aGVzZSB3aWxsIG5vdCBiZSBpbmNvcnBvcmF0ZWQgaW4gdGhlIGZyb3plbiBwcm9ncmFtLgogIEFnYWluLCB0aGUgZnJvemVuIHByb2dyYW0gd2lsbCB3b3JrIHdoZW4geW91IHRlc3QgaXQsIGJ1dCBpdCB3b24ndAogIHdvcmsgd2hlbiB5b3Ugc2hpcCBpdCB0byBhIHNpdGUgd2l0aG91dCBhIFB5dGhvbiBpbnN0YWxsYXRpb24uCkBAIC0yNzUsOSArMjc1LDkgQEAKICAgICAgICAgICAgICAgYXJlIHJlYWQgYW5kIHRoZSAtaSBvcHRpb24gcmVwbGFjZWQgd2l0aCB0aGUgcGFyc2VkCiAgICAgICAgICAgICAgIHBhcmFtcyAobm90ZSAtIHF1b3RpbmcgYXJncyBpbiB0aGlzIGZpbGUgaXMgTk9UIHN1cHBvcnRlZCkKIAotLXMgc3Vic3lzdGVtOiBTcGVjaWZ5IHRoZSBzdWJzeXN0ZW0gKEZvciBXaW5kb3dzIG9ubHkuKTsgCistcyBzdWJzeXN0ZW06IFNwZWNpZnkgdGhlIHN1YnN5c3RlbSAoRm9yIFdpbmRvd3Mgb25seS4pOwogICAgICAgICAgICAgICAnY29uc29sZScgKGRlZmF1bHQpLCAnd2luZG93cycsICdzZXJ2aWNlJyBvciAnY29tX2RsbCcKLSAgICAgICAgICAgICAgCisKIC13OiAgICAgICAgICAgVG9nZ2xlIFdpbmRvd3MgKE5UIG9yIDk1KSBiZWhhdmlvci4KICAgICAgICAgICAgICAgKEZvciBkZWJ1Z2dpbmcgb25seSAtLSBvbiBhIHdpbjMyIHBsYXRmb3JtLCB3aW4zMiBiZWhhdmlvcgogICAgICAgICAgICAgICBpcyBhdXRvbWF0aWMuKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2JrZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS9ia2ZpbGUucHkKaW5kZXggNmFiYWNjOS4uMjBhNzBiMCAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL2JrZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvYmtmaWxlLnB5CkBAIC0xLDQ5ICsxLDI2IEBACiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBvcGVuIGFzIF9vcmlnX29wZW4KIAotY2xhc3MgX0JrRmlsZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgbW9kZSwgYnVmc2l6ZSk6Ci0gICAgICAgIGltcG9ydCBvcwotICAgICAgICBzZWxmLl9fZmlsZW5hbWUgPSBmaWxlCi0gICAgICAgIHNlbGYuX19iYWNrdXAgPSBmaWxlICsgJ34nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnVubGluayhzZWxmLl9fYmFja3VwKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MucmVuYW1lKGZpbGUsIHNlbGYuX19iYWNrdXApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgc2VsZi5fX2JhY2t1cCA9IE5vbmUKLSAgICAgICAgc2VsZi5fX2ZpbGUgPSBfb3JpZ19vcGVuKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCi0gICAgICAgIHNlbGYuY2xvc2VkID0gc2VsZi5fX2ZpbGUuY2xvc2VkCi0gICAgICAgIHNlbGYuZmlsZW5vID0gc2VsZi5fX2ZpbGUuZmlsZW5vCi0gICAgICAgIHNlbGYuZmx1c2ggPSBzZWxmLl9fZmlsZS5mbHVzaAotICAgICAgICBzZWxmLmlzYXR0eSA9IHNlbGYuX19maWxlLmlzYXR0eQotICAgICAgICBzZWxmLm1vZGUgPSBzZWxmLl9fZmlsZS5tb2RlCi0gICAgICAgIHNlbGYubmFtZSA9IHNlbGYuX19maWxlLm5hbWUKLSAgICAgICAgc2VsZi5yZWFkID0gc2VsZi5fX2ZpbGUucmVhZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnJlYWRpbnRvID0gc2VsZi5fX2ZpbGUucmVhZGludG8KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLnJlYWRsaW5lID0gc2VsZi5fX2ZpbGUucmVhZGxpbmUKLSAgICAgICAgc2VsZi5yZWFkbGluZXMgPSBzZWxmLl9fZmlsZS5yZWFkbGluZXMKLSAgICAgICAgc2VsZi5zZWVrID0gc2VsZi5fX2ZpbGUuc2VlawotICAgICAgICBzZWxmLnRlbGwgPSBzZWxmLl9fZmlsZS50ZWxsCi0gICAgICAgIHNlbGYudHJ1bmNhdGUgPSBzZWxmLl9fZmlsZS50cnVuY2F0ZQotICAgICAgICBzZWxmLndyaXRlID0gc2VsZi5fX2ZpbGUud3JpdGUKLSAgICAgICAgc2VsZi53cml0ZWxpbmVzID0gc2VsZi5fX2ZpbGUud3JpdGVsaW5lcwotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLl9fZmlsZS5jbG9zZSgpCi0gICAgICAgIGlmIHNlbGYuX19iYWNrdXAgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpbXBvcnQgZmlsZWNtcAotICAgICAgICBpZiBmaWxlY21wLmNtcChzZWxmLl9fYmFja3VwLCBzZWxmLl9fZmlsZW5hbWUsIHNoYWxsb3cgPSAwKToKLSAgICAgICAgICAgIGltcG9ydCBvcwotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuX19maWxlbmFtZSkKLSAgICAgICAgICAgIG9zLnJlbmFtZShzZWxmLl9fYmFja3VwLCBzZWxmLl9fZmlsZW5hbWUpCi0KLWRlZiBvcGVuKGZpbGUsIG1vZGUgPSAncicsIGJ1ZnNpemUgPSAtMSk6CitkZWYgb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAgICAgaWYgJ3cnIG5vdCBpbiBtb2RlOgogICAgICAgICByZXR1cm4gX29yaWdfb3BlbihmaWxlLCBtb2RlLCBidWZzaXplKQotICAgIHJldHVybiBfQmtGaWxlKGZpbGUsIG1vZGUsIGJ1ZnNpemUpCisgICAgaW1wb3J0IG9zCisgICAgYmFja3VwID0gZmlsZSArICd+JworICAgIHRyeToKKyAgICAgICAgb3MudW5saW5rKGJhY2t1cCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHRyeToKKyAgICAgICAgb3MucmVuYW1lKGZpbGUsIGJhY2t1cCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgcmV0dXJuIF9vcmlnX29wZW4oZmlsZSwgbW9kZSwgYnVmc2l6ZSkKKyAgICBmID0gX29yaWdfb3BlbihmaWxlLCBtb2RlLCBidWZzaXplKQorICAgIF9vcmlnX2Nsb3NlID0gZi5jbG9zZQorICAgIGRlZiBjbG9zZSgpOgorICAgICAgICBfb3JpZ19jbG9zZSgpCisgICAgICAgIGltcG9ydCBmaWxlY21wCisgICAgICAgIGlmIGZpbGVjbXAuY21wKGJhY2t1cCwgZmlsZSwgc2hhbGxvdz1GYWxzZSk6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQorICAgICAgICAgICAgb3MucmVuYW1lKGJhY2t1cCwgZmlsZSkKKyAgICBmLmNsb3NlID0gY2xvc2UKKyAgICByZXR1cm4gZgpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2V4dGVuc2lvbnNfd2luMzIuaW5pIGIvVG9vbHMvZnJlZXplL2V4dGVuc2lvbnNfd2luMzIuaW5pCmluZGV4IDFlMzZhYmEuLmQwMWZkNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9leHRlbnNpb25zX3dpbjMyLmluaQorKysgYi9Ub29scy9mcmVlemUvZXh0ZW5zaW9uc193aW4zMi5pbmkKQEAgLTYsNyArNiw3IEBACiAKIDsgVGhpcyBpcyBhbGwgc2V0dXAgZm9yIGFsbCB0aGUgd2luMzIgZXh0ZW5zaW9uIG1vZHVsZXMKIDsgcmVsZWFzZWQgYnkgTWFyayBIYW1tb25kLgotOyBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUFlUSE9ORVggaXMgc2V0IAorOyBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUFlUSE9ORVggaXMgc2V0CiA7IHRvIHBvaW50IHRvIHRoZSByb290IHdpbjMyIGV4dGVuc2lvbnMgZGlyZWN0b3J5CiAKIDsgUFlUSE9OUFJFRklYIG11c3QgcG9pbnQgdG8gdGhlIFB5dGhvbiBidWlsZCByb290IGRpcmVjdG9yeQpAQCAtNDksNyArNDksNyBAQAogCiBbemxpYl0KIGRzcD0lUFlUSE9OUFJFRklYJVxQQ0J1aWxkXHpsaWIuZHNwCi1jbD0vSSAlUFlUSE9OUFJFRklYJVwuLlx6bGliLTEuMS40IC9EIF9XSU5ET1dTIC9EIFdJTjMyIAorY2w9L0kgJVBZVEhPTlBSRUZJWCVcLi5cemxpYi0xLjEuNCAvRCBfV0lORE9XUyAvRCBXSU4zMgogbGlicz0lUFlUSE9OUFJFRklYJVwuLlx6bGliLTEuMS40XHpsaWIubGliIC9ub2RlZmF1bHRsaWI6bGliYwogCiBbd2lucmVnXQpAQCAtOTUsNyArOTUsNyBAQAogY2w9L0kgJVBZVEhPTkVYJVx3aW4zMlxzcmMKIAogW3dpbjMyZmlsZV0KLWRzcD0lUFlUSE9ORVglXHdpbjMyXHdpbjMyZmlsZS5kc3AgCitkc3A9JVBZVEhPTkVYJVx3aW4zMlx3aW4zMmZpbGUuZHNwCiBjbD0vSSAlUFlUSE9ORVglXHdpbjMyXHNyYwogCiBbd2luMzJuZXRdCkBAIC0xMDgsNyArMTA4LDcgQEAKIGNsPS9JICVQWVRIT05FWCVcd2luMzJcc3JjCiAKIFt3aW4zMnBpcGVdCi1kc3A9JVBZVEhPTkVYJVx3aW4zMlx3aW4zMnBpcGUuZHNwIAorZHNwPSVQWVRIT05FWCVcd2luMzJcd2luMzJwaXBlLmRzcAogY2w9L0kgJVBZVEhPTkVYJVx3aW4zMlxzcmMKIAogW3dpbjMyc2VjdXJpdHldCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvZnJlZXplLnB5IGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQppbmRleCBlMGM2YzJjLi5jMDc1ODA3IDEwMDc1NQotLS0gYS9Ub29scy9mcmVlemUvZnJlZXplLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKQEAgLTM2Niw4ICszNjYsMTAgQEAKICAgICAgICAgICAgIG1mLmxvYWRfZmlsZShtb2QpCiAKICAgICAjIEFsaWFzICJpbXBvcnRsaWIuX2Jvb3RzdHJhcCIgdG8gIl9mcm96ZW5faW1wb3J0bGliIiBzbyB0aGF0IHRoZQotICAgICMgaW1wb3J0IG1hY2hpbmVyeSBjYW4gYm9vdHN0cmFwLgorICAgICMgaW1wb3J0IG1hY2hpbmVyeSBjYW4gYm9vdHN0cmFwLiAgRG8gdGhlIHNhbWUgZm9yCisgICAgIyBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC4KICAgICBtZi5tb2R1bGVzWyJfZnJvemVuX2ltcG9ydGxpYiJdID0gbWYubW9kdWxlc1siaW1wb3J0bGliLl9ib290c3RyYXAiXQorICAgIG1mLm1vZHVsZXNbIl9mcm96ZW5faW1wb3J0bGliX2V4dGVybmFsIl0gPSBtZi5tb2R1bGVzWyJpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbCJdCiAKICAgICAjIEFkZCB0aGUgbWFpbiBzY3JpcHQgYXMgZWl0aGVyIF9fbWFpbl9fLCBvciB0aGUgYWN0dWFsIG1vZHVsZSBuYW1lLgogICAgIGlmIHB5dGhvbl9lbnRyeV9pc19tYWluOgpAQCAtNDM5LDI1ICs0NDEsMTcgQEAKICAgICAgICAgICAgICAgICAgZnJvemVuZGxsbWFpbl9jLCBvcy5wYXRoLmJhc2VuYW1lKGV4dGVuc2lvbnNfYyldICsgZmlsZXMKICAgICAgICAgbWFpbmRlZm4gPSBjaGVja2V4dGVuc2lvbnNfd2luMzIuQ0V4dGVuc2lvbiggJ19fbWFpbl9fJywgeHRyYXMgKQogICAgICAgICBmcm96ZW5fZXh0ZW5zaW9ucy5hcHBlbmQoIG1haW5kZWZuICkKLSAgICAgICAgb3V0ZnAgPSBvcGVuKG1ha2VmaWxlLCAndycpCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIG91dGZwOgogICAgICAgICAgICAgd2lubWFrZW1ha2VmaWxlLm1ha2VtYWtlZmlsZShvdXRmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb3plbl9leHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHRhcmdldCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvdXRmcC5jbG9zZSgpCiAgICAgICAgIHJldHVybgogCiAgICAgIyBnZW5lcmF0ZSBjb25maWcuYyBhbmQgTWFrZWZpbGUKICAgICBidWlsdGlucy5zb3J0KCkKLSAgICBpbmZwID0gb3Blbihjb25maWdfY19pbikKLSAgICBvdXRmcCA9IGJrZmlsZS5vcGVuKGNvbmZpZ19jLCAndycpCi0gICAgdHJ5OgorICAgIHdpdGggb3Blbihjb25maWdfY19pbikgYXMgaW5mcCwgYmtmaWxlLm9wZW4oY29uZmlnX2MsICd3JykgYXMgb3V0ZnA6CiAgICAgICAgIG1ha2Vjb25maWcubWFrZWNvbmZpZyhpbmZwLCBvdXRmcCwgYnVpbHRpbnMpCi0gICAgZmluYWxseToKLSAgICAgICAgb3V0ZnAuY2xvc2UoKQotICAgIGluZnAuY2xvc2UoKQogCiAgICAgY2ZsYWdzID0gWyckKE9QVCknXQogICAgIGNwcGZsYWdzID0gZGVmaW5lcyArIGluY2x1ZGVzCkBAIC00NzUsMTEgKzQ2OSw4IEBACiAgICAgICAgICAgICBmaWxlcyArIHN1cHBfc291cmNlcyArICBhZGRmaWxlcyArIGxpYnMgKyBcCiAgICAgICAgICAgICBbJyQoTU9ETElCUyknLCAnJChMSUJTKScsICckKFNZU0xJQlMpJ10KIAotICAgIG91dGZwID0gYmtmaWxlLm9wZW4obWFrZWZpbGUsICd3JykKLSAgICB0cnk6CisgICAgd2l0aCBia2ZpbGUub3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBvdXRmcDoKICAgICAgICAgbWFrZW1ha2VmaWxlLm1ha2VtYWtlZmlsZShvdXRmcCwgc29tZXZhcnMsIGZpbGVzLCBiYXNlX3RhcmdldCkKLSAgICBmaW5hbGx5OgotICAgICAgICBvdXRmcC5jbG9zZSgpCiAKICAgICAjIERvbmUhCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9tYWtlZnJlZXplLnB5IGIvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkKaW5kZXggZWYxOGVjNy4uNjRlM2U2YiAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL21ha2VmcmVlemUucHkKQEAgLTM5LDM2ICszOSwzNCBAQAogICAgICAgICBtYW5nbGVkID0gIl9fIi5qb2luKG1vZC5zcGxpdCgiLiIpKQogICAgICAgICBpZiBtLl9fY29kZV9fOgogICAgICAgICAgICAgZmlsZSA9ICdNXycgKyBtYW5nbGVkICsgJy5jJwotICAgICAgICAgICAgb3V0ZnAgPSBia2ZpbGUub3BlbihiYXNlICsgZmlsZSwgJ3cnKQotICAgICAgICAgICAgZmlsZXMuYXBwZW5kKGZpbGUpCi0gICAgICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgICAgICBwcmludCgiZnJlZXppbmciLCBtb2QsICIuLi4iKQotICAgICAgICAgICAgc3RyID0gbWFyc2hhbC5kdW1wcyhtLl9fY29kZV9fKQotICAgICAgICAgICAgc2l6ZSA9IGxlbihzdHIpCi0gICAgICAgICAgICBpZiBtLl9fcGF0aF9fOgotICAgICAgICAgICAgICAgICMgSW5kaWNhdGUgcGFja2FnZSBieSBuZWdhdGl2ZSBzaXplCi0gICAgICAgICAgICAgICAgc2l6ZSA9IC1zaXplCi0gICAgICAgICAgICBkb25lLmFwcGVuZCgobW9kLCBtYW5nbGVkLCBzaXplKSkKLSAgICAgICAgICAgIHdyaXRlY29kZShvdXRmcCwgbWFuZ2xlZCwgc3RyKQotICAgICAgICAgICAgb3V0ZnAuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBia2ZpbGUub3BlbihiYXNlICsgZmlsZSwgJ3cnKSBhcyBvdXRmcDoKKyAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoZmlsZSkKKyAgICAgICAgICAgICAgICBpZiBkZWJ1ZzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoImZyZWV6aW5nIiwgbW9kLCAiLi4uIikKKyAgICAgICAgICAgICAgICBzdHIgPSBtYXJzaGFsLmR1bXBzKG0uX19jb2RlX18pCisgICAgICAgICAgICAgICAgc2l6ZSA9IGxlbihzdHIpCisgICAgICAgICAgICAgICAgaWYgbS5fX3BhdGhfXzoKKyAgICAgICAgICAgICAgICAgICAgIyBJbmRpY2F0ZSBwYWNrYWdlIGJ5IG5lZ2F0aXZlIHNpemUKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IC1zaXplCisgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQoKG1vZCwgbWFuZ2xlZCwgc2l6ZSkpCisgICAgICAgICAgICAgICAgd3JpdGVjb2RlKG91dGZwLCBtYW5nbGVkLCBzdHIpCiAgICAgaWYgZGVidWc6CiAgICAgICAgIHByaW50KCJnZW5lcmF0aW5nIHRhYmxlIG9mIGZyb3plbiBtb2R1bGVzIikKLSAgICBvdXRmcCA9IGJrZmlsZS5vcGVuKGJhc2UgKyAnZnJvemVuLmMnLCAndycpCi0gICAgZm9yIG1vZCwgbWFuZ2xlZCwgc2l6ZSBpbiBkb25lOgotICAgICAgICBvdXRmcC53cml0ZSgnZXh0ZXJuIHVuc2lnbmVkIGNoYXIgTV8lc1tdO1xuJyAlIG1hbmdsZWQpCi0gICAgb3V0ZnAud3JpdGUoaGVhZGVyKQotICAgIGZvciBtb2QsIG1hbmdsZWQsIHNpemUgaW4gZG9uZToKLSAgICAgICAgb3V0ZnAud3JpdGUoJ1x0eyIlcyIsIE1fJXMsICVkfSxcbicgJSAobW9kLCBtYW5nbGVkLCBzaXplKSkKLSAgICBvdXRmcC53cml0ZSgnXG4nKQotICAgICMgVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgYSBOVUxMIGNvZGUgcG9pbnRlciwgaW5kaWNhdGluZwotICAgICMgdGhhdCB0aGUgZnJvemVuIHByb2dyYW0gc2hvdWxkIG5vdCBzZWFyY2ggZm9yIHRoZW0gb24gdGhlIGhvc3QKLSAgICAjIHN5c3RlbS4gSW1wb3J0aW5nIHRoZW0gd2lsbCAqYWx3YXlzKiByYWlzZSBhbiBJbXBvcnRFcnJvci4KLSAgICAjIFRoZSB6ZXJvIHZhbHVlIHNpemUgaXMgbmV2ZXIgdXNlZC4KLSAgICBmb3IgbW9kIGluIGZhaWxfaW1wb3J0OgotICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTlVMTCwgMH0sXG4nICUgKG1vZCwpKQotICAgIG91dGZwLndyaXRlKHRyYWlsZXIpCi0gICAgb3V0ZnAud3JpdGUoZW50cnlfcG9pbnQpCi0gICAgb3V0ZnAuY2xvc2UoKQorICAgIHdpdGggYmtmaWxlLm9wZW4oYmFzZSArICdmcm96ZW4uYycsICd3JykgYXMgb3V0ZnA6CisgICAgICAgIGZvciBtb2QsIG1hbmdsZWQsIHNpemUgaW4gZG9uZToKKyAgICAgICAgICAgIG91dGZwLndyaXRlKCdleHRlcm4gdW5zaWduZWQgY2hhciBNXyVzW107XG4nICUgbWFuZ2xlZCkKKyAgICAgICAgb3V0ZnAud3JpdGUoaGVhZGVyKQorICAgICAgICBmb3IgbW9kLCBtYW5nbGVkLCBzaXplIGluIGRvbmU6CisgICAgICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTV8lcywgJWR9LFxuJyAlIChtb2QsIG1hbmdsZWQsIHNpemUpKQorICAgICAgICBvdXRmcC53cml0ZSgnXG4nKQorICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBoYXZlIGEgTlVMTCBjb2RlIHBvaW50ZXIsIGluZGljYXRpbmcKKyAgICAgICAgIyB0aGF0IHRoZSBmcm96ZW4gcHJvZ3JhbSBzaG91bGQgbm90IHNlYXJjaCBmb3IgdGhlbSBvbiB0aGUgaG9zdAorICAgICAgICAjIHN5c3RlbS4gSW1wb3J0aW5nIHRoZW0gd2lsbCAqYWx3YXlzKiByYWlzZSBhbiBJbXBvcnRFcnJvci4KKyAgICAgICAgIyBUaGUgemVybyB2YWx1ZSBzaXplIGlzIG5ldmVyIHVzZWQuCisgICAgICAgIGZvciBtb2QgaW4gZmFpbF9pbXBvcnQ6CisgICAgICAgICAgICBvdXRmcC53cml0ZSgnXHR7IiVzIiwgTlVMTCwgMH0sXG4nICUgKG1vZCwpKQorICAgICAgICBvdXRmcC53cml0ZSh0cmFpbGVyKQorICAgICAgICBvdXRmcC53cml0ZShlbnRyeV9wb2ludCkKICAgICByZXR1cm4gZmlsZXMKIAogCmRpZmYgLS1naXQgYS9Ub29scy9pMThuL21ha2Vsb2NhbGVhbGlhcy5weSBiL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5CmluZGV4IDEwODg3Y2UuLmM3ZWNhY2UgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5CisrKyBiL1Rvb2xzL2kxOG4vbWFrZWxvY2FsZWFsaWFzLnB5CkBAIC04LDkgKzgsMTIgQEAKICIiIgogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cworX2xvY2FsZSA9IGxvY2FsZQogCi0jIExvY2F0aW9uIG9mIHRoZSBhbGlhcyBmaWxlCisjIExvY2F0aW9uIG9mIHRoZSBYMTEgYWxpYXMgZmlsZS4KIExPQ0FMRV9BTElBUyA9ICcvdXNyL3NoYXJlL1gxMS9sb2NhbGUvbG9jYWxlLmFsaWFzJworIyBMb2NhdGlvbiBvZiB0aGUgZ2xpYmMgU1VQUE9SVEVEIGxvY2FsZXMgZmlsZS4KK1NVUFBPUlRFRCA9ICcvdXNyL3NoYXJlL2kxOG4vU1VQUE9SVEVEJwogCiBkZWYgcGFyc2UoZmlsZW5hbWUpOgogCkBAIC00NCwxMCArNDcsMzkgQEAKICAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcucmVwbGFjZSgnLScsICcnKQogICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCdfJywgJycpCiAgICAgICAgICAgICBsb2NhbGUgPSBsYW5nICsgJy4nICsgZW5jb2RpbmcKLSAgICAgICAgICAgIGlmIGVuY29kaW5nLmxvd2VyKCkgPT0gJ3V0ZjgnOgotICAgICAgICAgICAgICAgICMgSWdub3JlIFVURi04IG1hcHBpbmdzIC0gdGhpcyBlbmNvZGluZyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAjIGF2YWlsYWJsZSBmb3IgYWxsIGxvY2FsZXMKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBkYXRhW2xvY2FsZV0gPSBhbGlhcworICAgIHJldHVybiBkYXRhCisKK2RlZiBwYXJzZV9nbGliY19zdXBwb3J0ZWQoZmlsZW5hbWUpOgorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCBlbmNvZGluZz0nbGF0aW4xJykgYXMgZjoKKyAgICAgICAgbGluZXMgPSBsaXN0KGYpCisgICAgZGF0YSA9IHt9CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBsaW5lWzoxXSA9PSAnIyc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCcvJywgJyAnKS5zdHJpcCgpCisgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgnXFwnKS5yc3RyaXAoKQorICAgICAgICB3b3JkcyA9IGxpbmUuc3BsaXQoKQorICAgICAgICBpZiBsZW4od29yZHMpICE9IDI6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBhbGlhcywgYWxpYXNfZW5jb2RpbmcgPSB3b3JkcworICAgICAgICAjIExvd2VyLWNhc2UgbG9jYWxlCisgICAgICAgIGxvY2FsZSA9IGFsaWFzLmxvd2VyKCkKKyAgICAgICAgIyBOb3JtYWxpemUgZW5jb2RpbmcsIGlmIGdpdmVuCisgICAgICAgIGlmICcuJyBpbiBsb2NhbGU6CisgICAgICAgICAgICBsYW5nLCBlbmNvZGluZyA9IGxvY2FsZS5zcGxpdCgnLicpWzoyXQorICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZy5yZXBsYWNlKCctJywgJycpCisgICAgICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLnJlcGxhY2UoJ18nLCAnJykKKyAgICAgICAgICAgIGxvY2FsZSA9IGxhbmcgKyAnLicgKyBlbmNvZGluZworICAgICAgICAjIEFkZCBhbiBlbmNvZGluZyB0byBhbGlhcworICAgICAgICBhbGlhcywgXywgbW9kaWZpZXIgPSBhbGlhcy5wYXJ0aXRpb24oJ0AnKQorICAgICAgICBhbGlhcyA9IF9sb2NhbGUuX3JlcGxhY2VfZW5jb2RpbmcoYWxpYXMsIGFsaWFzX2VuY29kaW5nKQorICAgICAgICBpZiBtb2RpZmllciBhbmQgbm90IChtb2RpZmllciA9PSAnZXVybycgYW5kIGFsaWFzX2VuY29kaW5nID09ICdJU08tODg1OS0xNScpOgorICAgICAgICAgICAgYWxpYXMgKz0gJ0AnICsgbW9kaWZpZXIKICAgICAgICAgZGF0YVtsb2NhbGVdID0gYWxpYXMKICAgICByZXR1cm4gZGF0YQogCkBAIC05Miw5ICsxMjQsMjUgQEAKICAgICByZXR1cm4gZXJyb3JzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbG9jYWxlLWFsaWFzJywgZGVmYXVsdD1MT0NBTEVfQUxJQVMsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdsb2NhdGlvbiBvZiB0aGUgWDExIGFsaWFzIGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGRlZmF1bHQ6ICVhKScgJSBMT0NBTEVfQUxJQVMpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1nbGliYy1zdXBwb3J0ZWQnLCBkZWZhdWx0PVNVUFBPUlRFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2xvY2F0aW9uIG9mIHRoZSBnbGliYyBTVVBQT1JURUQgbG9jYWxlcyBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0OiAlYSknICUgU1VQUE9SVEVEKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKICAgICBkYXRhID0gbG9jYWxlLmxvY2FsZV9hbGlhcy5jb3B5KCkKLSAgICBkYXRhLnVwZGF0ZShwYXJzZShMT0NBTEVfQUxJQVMpKQotICAgIGRhdGEgPSBvcHRpbWl6ZShkYXRhKQorICAgIGRhdGEudXBkYXRlKHBhcnNlX2dsaWJjX3N1cHBvcnRlZChhcmdzLmdsaWJjX3N1cHBvcnRlZCkpCisgICAgZGF0YS51cGRhdGUocGFyc2UoYXJncy5sb2NhbGVfYWxpYXMpKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgUmVwZWF0IG9wdGltaXphdGlvbiB3aGlsZSB0aGUgc2l6ZSBpcyBkZWNyZWFzZWQuCisgICAgICAgIG4gPSBsZW4oZGF0YSkKKyAgICAgICAgZGF0YSA9IG9wdGltaXplKGRhdGEpCisgICAgICAgIGlmIGxlbihkYXRhKSA9PSBuOgorICAgICAgICAgICAgYnJlYWsKICAgICBwcmludF9kaWZmZXJlbmNlcyhkYXRhLCBsb2NhbGUubG9jYWxlX2FsaWFzKQogICAgIHByaW50KCkKICAgICBwcmludCgnbG9jYWxlX2FsaWFzID0geycpCmRpZmYgLS1naXQgYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weSBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CmluZGV4IDlmZmViMTcuLjNjNmMxNGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CisrKyBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CkBAIC00NDEsOSArNDQxLDcgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCBmcCk6CiAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9fb3B0aW9ucwotICAgICAgICB0aW1lc3RhbXAgPSB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTSslWicpCi0gICAgICAgICMgVGhlIHRpbWUgc3RhbXAgaW4gdGhlIGhlYWRlciBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgZm9ybWF0IGFzIHRoYXQKLSAgICAgICAgIyBnZW5lcmF0ZWQgYnkgeGdldHRleHQuLi4KKyAgICAgICAgdGltZXN0YW1wID0gdGltZS5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU0leicpCiAgICAgICAgIGVuY29kaW5nID0gZnAuZW5jb2RpbmcgaWYgZnAuZW5jb2RpbmcgZWxzZSAnVVRGLTgnCiAgICAgICAgIHByaW50KHBvdF9oZWFkZXIgJSB7J3RpbWUnOiB0aW1lc3RhbXAsICd2ZXJzaW9uJzogX192ZXJzaW9uX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYXJzZXQnOiBlbmNvZGluZywKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9SRUFETUUudHh0IGIvVG9vbHMvbXNpL1JFQURNRS50eHQKaW5kZXggZGM0YWU5MC4uMjVkY2YzMiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL1JFQURNRS50eHQKKysrIGIvVG9vbHMvbXNpL1JFQURNRS50eHQKQEAgLTEsMjUgKzEsNDkyIEBACi1QYWNrYWdpbmcgUHl0aG9uIGFzIGEgTWljcm9zb2Z0IEluc3RhbGxlciBQYWNrYWdlIChNU0kpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitRdWljayBCdWlsZCBJbmZvCis9PT09PT09PT09PT09PT09CiAKLVVzaW5nIHRoaXMgbGlicmFyeSwgUHl0aG9uIGNhbiBiZSBwYWNrYWdlZCBhcyBhIE1TLVdpbmRvd3MKLU1TSSBmaWxlLiBUbyBnZW5lcmF0ZSBhbiBpbnN0YWxsZXIgcGFja2FnZSwgeW91IG5lZWQKLWEgYnVpbGQgdHJlZS4gQnkgZGVmYXVsdCwgdGhlIGJ1aWxkIHRyZWUgcm9vdCBkaXJlY3RvcnkKLWlzIGFzc3VtZWQgdG8gYmUgaW4gIi4uLy4uIi4gVGhpcyBsb2NhdGlvbiBjYW4gYmUgY2hhbmdlZAotYnkgYWRkaW5nIGEgZmlsZSBjb25maWcucHk7IHNlZSB0aGUgYmVnaW5uaW5nIG9mIG1zaS5weQotZm9yIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbiBvcHRpb25zLgorRm9yIHRlc3RpbmcsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlIFRvb2xzL21zaS9idWlsZC5iYXQKK3NjcmlwdDoKIAotVGhlIHBhY2thZ2luZyBwcm9jZXNzIGFzc3VtZXMgdGhhdCBiaW5hcmllcyBoYXZlIGJlZW4gCi1nZW5lcmF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBpbnN0cnVjdGlvbnMgaW4gUENCdWlsZC9SRUFETUUudHh0LAotYW5kIHRoYXQgeW91IGhhdmUgZWl0aGVyIFZpc3VhbCBTdHVkaW8gb3IgdGhlIFBsYXRmb3JtIFNESwotaW5zdGFsbGVkLiBJbiBhZGRpdGlvbiwgeW91IG5lZWQgdGhlIFB5dGhvbiBDT00gZXh0ZW5zaW9ucywKLWVpdGhlciBmcm9tIFB5dGhvbldpbiwgb3IgZnJvbSBBY3RpdmVQeXRob24uCisgICAgYnVpbGQuYmF0IFsteDg2XSBbLXg2NF0gWy0tZG9jXQogCi1UbyBpbnZva2UgdGhlIHNjcmlwdCwgb3BlbiBhIGNtZC5leGUgd2luZG93IHdoaWNoIGhhcyAKLWNhYmFyYy5leGUgaW4gaXRzIFBBVEggKGUuZy4gIlZpc3VhbCBTdHVkaW8gLk5FVCAyMDAzCi1Db21tYW5kIFByb21wdCIpLiBUaGVuIGludm9rZQorRm9yIGFuIG9mZmljaWFsIHJlbGVhc2UsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlCitUb29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBzY3JpcHQgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlczoKIAotPHBhdGgtdG8tcHl0aG9uLmV4ZT4gbXNpLnB5CisgICAgc2V0IFBZVEhPTj08cGF0aCB0byBQeXRob24gMi43IG9yIDMuND4KKyAgICBzZXQgU1BISU5YQlVJTEQ9PHBhdGggdG8gc3BoaW54LWJ1aWxkLmV4ZT4KKyAgICBzZXQgUEFUSD08cGF0aCB0byBNZXJjdXJpYWwgKGhnLmV4ZSk+OworICAgICAgICAgICAgIDxwYXRoIHRvIEhUTUwgSGVscCBDb21waWxlciAoaGhjLmV4ZSk+OyVQQVRIJQogCi1JZiBldmVyeXRoaW5nIHN1Y2NlZWRzLCBweXRob25YLlkuWi5tc2kgaXMgZ2VuZXJhdGVkCi1pbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgYnVpbGRyZWxlYXNlLmJhdCBbLXg4Nl0gWy14NjRdIFstRF0gWy1CXQorICAgICAgICBbLW8gPG91dHB1dCBkaXJlY3Rvcnk+XSBbLWMgPGNlcnRpZmljYXRlIG5hbWU+XQorCitTZWUgdGhlIEJ1aWxkaW5nIHRoZSBJbnN0YWxsZXIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworT3ZlcnZpZXcKKz09PT09PT09CisKK1B5dGhvbiBpcyBkaXN0cmlidXRlZCBvbiBXaW5kb3dzIGFzIGFuIGluc3RhbGxlciB0aGF0IHdpbGwgY29uZmlndXJlIHRoZQordXNlcidzIHN5c3RlbS4gVGhpcyBhbGxvd3MgdXNlcnMgdG8gaGF2ZSBhIGZ1bmN0aW9uaW5nIGNvcHkgb2YgUHl0aG9uCit3aXRob3V0IGhhdmluZyB0byBidWlsZCBpdCB0aGVtc2VsdmVzLgorCitUaGUgbWFpbiB0YXNrcyBvZiB0aGUgaW5zdGFsbGVyIGFyZToKKworKiBjb3B5IHJlcXVpcmVkIGZpbGVzIGludG8gdGhlIGV4cGVjdGVkIGxheW91dAorKiBjb25maWd1cmUgc3lzdGVtIHNldHRpbmdzIHNvIHRoZSBpbnN0YWxsYXRpb24gY2FuIGJlIGxvY2F0ZWQgYnkKKyAgb3RoZXIgcHJvZ3JhbXMKKyogYWRkIGVudHJ5IHBvaW50cyBmb3IgbW9kaWZ5aW5nLCByZXBhaXJpbmcgYW5kIHVuaW5zdGFsbGluZyBQeXRob24KKyogbWFrZSBpdCBlYXN5IHRvIGxhdW5jaCBQeXRob24sIGl0cyBkb2N1bWVudGF0aW9uLCBhbmQgSURMRQorCitFYWNoIG9mIHRoZXNlIGlzIGRpc2N1c3NlZCBpbiBhIGxhdGVyIHNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudC4KKworU3RydWN0dXJlIG9mIHRoZSBJbnN0YWxsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpbnN0YWxsZXIgaXMgc3RydWN0dXJlZCBhcyBhICdsYXlvdXQnLCB3aGljaCBjb25zaXN0cyBvZiBhIG51bWJlciBvZgorQ0FCIGFuZCBNU0kgZmlsZXMgYW5kIGEgc2luZ2xlIEVYRS4KKworVGhlIEVYRSBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBpbnRvIHRoZSBpbnN0YWxsZXIuIEl0IGNvbnRhaW5zIHRoZSBVSQorYW5kIGNvbW1hbmQtbGluZSBsb2dpYywgYXMgd2VsbCBhcyB0aGUgYWJpbGl0eSB0byBsb2NhdGUgYW5kIG9wdGlvbmFsbHkKK2Rvd25sb2FkIG90aGVyIHBhcnRzIG9mIHRoZSBsYXlvdXQuCisKK0VhY2ggTVNJIGNvbnRhaW5zIHRoZSBsb2dpYyByZXF1aXJlZCB0byBpbnN0YWxsIGEgY29tcG9uZW50IG9yIGZlYXR1cmUKK29mIFB5dGhvbi4gVGhlc2UgTVNJcyBzaG91bGQgbm90IGJlIGxhdW5jaGVkIGRpcmVjdGx5IGJ5IHVzZXJzLiBNU0lzIGNhbgorYmUgZW1iZWRkZWQgaW50byB0aGUgRVhFIG9yIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZCBhcyBuZWVkZWQuCisKK0VhY2ggQ0FCIGNvbnRhaW5zIHRoZSBmaWxlcyBtYWtpbmcgdXAgYSBQeXRob24gaW5zdGFsbGF0aW9uLiBDQUJzIGFyZQorZW1iZWRkZWQgaW50byB0aGVpciBhc3NvY2lhdGVkIE1TSSBhbmQgYXJlIG5ldmVyIHNlZW4gYnkgdXNlcnMuCisKK01TSXMgYXJlIG9ubHkgcmVxdWlyZWQgd2hlbiB0aGUgcmVsYXRlZCBmZWF0dXJlIG9yIGNvbXBvbmVudCBpcyBiZWluZworaW5zdGFsbGVkLiBXaGVuIGNvbXBvbmVudHMgYXJlIG5vdCBzZWxlY3RlZCBmb3IgaW5zdGFsbGF0aW9uLCB0aGUKK2Fzc29jaWF0ZWQgTVNJIGlzIG5vdCBkb3dubG9hZGVkLiBUaGlzIGFsbG93cyB0aGUgaW5zdGFsbGVyIHRvIG9mZmVyCitvcHRpb25zIHRvIGluc3RhbGwgZGVidWdnaW5nIHN5bWJvbHMgYW5kIGJpbmFyaWVzIHdpdGhvdXQgaW5jcmVhc2luZwordGhlIGluaXRpYWwgZG93bmxvYWQgc2l6ZSBieSBzZXBhcmF0aW5nIHRoZW0gaW50byB0aGVpciBvd24gTVNJcy4KKworQnVpbGRpbmcgdGhlIEluc3RhbGxlcgorPT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdGVzdGluZywgdGhlIGluc3RhbGxlciBzaG91bGQgYmUgYnVpbHQgd2l0aCB0aGUgVG9vbHMvbXNpL2J1aWxkLmJhdAorc2NyaXB0OgorCisgICAgYnVpbGQuYmF0IFsteDg2XSBbLXg2NF0gWy0tZG9jXQorCitUaGlzIHNjcmlwdCB3aWxsIGJ1aWxkIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucyBvZiBQeXRob24gYW5kCitnZW5lcmF0ZSBhbiBpbnN0YWxsZXIgbGF5b3V0IGluIFBDQnVpbGQvKHdpbjMyfGFtZDY0KS9lbi11cy4KKworU3BlY2lmeSAteDg2IGFuZC9vciAteDY0IHRvIGJ1aWxkIGZvciBlYWNoIHBsYXRmb3JtLiBJZiBuZWl0aGVyIGlzCitzcGVjaWZpZWQsIGJvdGggcGxhdGZvcm1zIHdpbGwgYmUgYnVpbHQuIEN1cnJlbnRseSwgYm90aCB0aGUgZGVidWcgYW5kCityZWxlYXNlIHZlcnNpb25zIG9mIFB5dGhvbiBhcmUgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsZXIuCisKK1NwZWNpZnkgLS1kb2MgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24gKC5jaG0pIGZpbGUuIElmIHRoZSBmaWxlIGlzIG5vdAorYXZhaWxhYmxlLCBpdCB3aWxsIHNpbXBseSBiZSBleGNsdWRlZCBmcm9tIHRoZSBpbnN0YWxsZXIuIEVuc3VyZQorJVBZVEhPTiUgYW5kICVTUEhJTlhCVUlMRCUgYXJlIHNldCB3aGVuIHBhc3NpbmcgdGhpcyBvcHRpb24uIFlvdSBtYXkKK2Fsc28gc2V0ICVIVE1MSEVMUCUgdG8gdGhlIEh0bWwgSGVscCBDb21waWxlciAoaGhjLmV4ZSksIG9yIHB1dCBISEMgb24KK3lvdXIgUEFUSCBvciBpbiBleHRlcm5hbHMvLgorCitJZiBXaVggaXMgbm90IGZvdW5kIG9uIHlvdXIgc3lzdGVtLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZAorYW5kIGV4dHJhY3RlZCB0byB0aGUgZXh0ZXJuYWxzLyBkaXJlY3RvcnkuCisKKworRm9yIGFuIG9mZmljaWFsIHJlbGVhc2UsIHRoZSBpbnN0YWxsZXIgc2hvdWxkIGJlIGJ1aWx0IHdpdGggdGhlCitUb29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdCBzY3JpcHQ6CisKKyAgICBzZXQgUFlUSE9OPTxwYXRoIHRvIFB5dGhvbiAyLjcgb3IgMy40PgorICAgIHNldCBTUEhJTlhCVUlMRD08cGF0aCB0byBzcGhpbngtYnVpbGQuZXhlPgorICAgIHNldCBQQVRIPTxwYXRoIHRvIE1lcmN1cmlhbCAoaGcuZXhlKT47CisgICAgICAgICAgICAgPHBhdGggdG8gSFRNTCBIZWxwIENvbXBpbGVyIChoaGMuZXhlKT47JVBBVEglCisKKyAgICBidWlsZHJlbGVhc2UuYmF0IFsteDg2XSBbLXg2NF0gWy1EXSBbLUJdCisgICAgICAgIFstbyA8b3V0cHV0IGRpcmVjdG9yeT5dIFstYyA8Y2VydGlmaWNhdGUgbmFtZT5dCisKK1NwZWNpZnkgLXg4NiBhbmQvb3IgLXg2NCB0byBidWlsZCBmb3IgZWFjaCBwbGF0Zm9ybS4gSWYgbmVpdGhlciBpcworc3BlY2lmaWVkLCBib3RoIHBsYXRmb3JtcyB3aWxsIGJlIGJ1aWx0LiBDdXJyZW50bHksIGJvdGggdGhlIGRlYnVnIGFuZAorcmVsZWFzZSB2ZXJzaW9ucyBvZiBQeXRob24gYXJlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGVyLgorCitTcGVjaWZ5IC1EIHRvIHNraXAgcmVidWlsZGluZyB0aGUgZG9jdW1lbnRhdGlvbi4gVGhlIGRvY3VtZW50YXRpb24gaXMKK3JlcXVpcmVkIGZvciBhIHJlbGVhc2UgYW5kIHRoZSBidWlsZCB3aWxsIGZhaWwgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KKworU3BlY2lmeSAtQiB0byBza2lwIHJlYnVpbGRpbmcgUHl0aG9uLiBUaGlzIGlzIHVzZWZ1bCB0byBvbmx5IHJlYnVpbGQgdGhlCitpbnN0YWxsZXIgbGF5b3V0IGFmdGVyIGEgcHJldmlvdXMgY2FsbCB0byBidWlsZHJlbGVhc2UuYmF0LgorCitTcGVjaWZ5IC1vIHRvIHNldCBhbiBvdXRwdXQgZGlyZWN0b3J5LiBUaGUgaW5zdGFsbGVyIGxheW91dHMgd2lsbCBiZQorY29waWVkIHRvIHBsYXRmb3JtLXNwZWNpZmljIHN1YmRpcmVjdG9yaWVzIG9mIHRoaXMgcGF0aC4KKworU3BlY2lmeSAtYyB0byBjaG9vc2UgYSBjb2RlLXNpZ25pbmcgY2VydGlmaWNhdGUgdG8gYmUgdXNlZCBmb3IgYWxsIHRoZQorc2lnbmFibGUgYmluYXJpZXMgaW4gUHl0aG9uIGFzIHdlbGwgYXMgZWFjaCBmaWxlIG1ha2luZyB1cCB0aGUKK2luc3RhbGxlci4gT2ZmaWNpYWwgcmVsZWFzZXMgb2YgUHl0aG9uIG11c3QgYmUgc2lnbmVkLgorCitFbnN1cmUgJVBZVEhPTiUgYW5kICVTUEhJTlhCVUlMRCUgYXJlIHNldCB3aGVuIHBhc3NpbmcgdGhpcyBvcHRpb24uIFlvdQorbWF5IGFsc28gc2V0ICVIVE1MSEVMUCUgdG8gdGhlIEh0bWwgSGVscCBDb21waWxlciAoaGhjLmV4ZSksIG9yIHB1dCBISEMKK29uIHlvdXIgUEFUSCBvciBpbiBleHRlcm5hbHMvLiBZb3Ugd2lsbCBhbHNvIG5lZWQgTWVyY3VyaWFsIChoZy5leGUpIG9uCit5b3VyIFBBVEguCisKK0lmIFdpWCBpcyBub3QgZm91bmQgb24geW91ciBzeXN0ZW0sIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBkb3dubG9hZGVkCithbmQgZXh0cmFjdGVkIHRvIHRoZSBleHRlcm5hbHMvIGRpcmVjdG9yeS4KKworVG8gbWFudWFsbHkgYnVpbGQgbGF5b3V0cyBvZiB0aGUgaW5zdGFsbGVyLCBidWlsZCBvbmUgb2YgdGhlIHByb2plY3RzIGluCit0aGUgYnVuZGxlIGZvbGRlci4KKworICAgIG1zYnVpbGQgYnVuZGxlXHNuYXBzaG90LndpeHByb2oKKyAgICBtc2J1aWxkIGJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oKKyAgICBtc2J1aWxkIGJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvagorICAgIG1zYnVpbGQgYnVuZGxlXGZ1bGwud2l4cHJvagorCitzbmFwc2hvdC53aXhwcm9qIHByb2R1Y2VzIGEgdGVzdCBpbnN0YWxsZXIgdmVyc2lvbmVkIGJhc2VkIG9uIHRoZSBkYXRlLgorCityZWxlYXNld2ViLndpeHByb2ogcHJvZHVjZXMgYSByZWxlYXNlIGluc3RhbGxlciB0aGF0IGRvZXMgbm90IGVtYmVkIGFueQorb2YgdGhlIGxheW91dC4KKworcmVsZWFzZWxvY2FsLndpeHByb2ogcHJvZHVjZXMgYSByZWxlYXNlIGluc3RhbGxlciB0aGF0IGVtYmVkcyB0aGUgZmlsZXMKK3JlcXVpcmVkIGZvciBhIGRlZmF1bHQgaW5zdGFsbGF0aW9uLgorCitmdWxsLndpeHByb2ogcHJvZHVjZXMgYSB0ZXN0IGluc3RhbGxlciB0aGF0IGVtYmVkcyB0aGUgZW50aXJlIGxheW91dC4KKworVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIG1heSBiZSBwYXNzZWQgd2hlbiBidWlsZGluZyB0aGVzZSBwcm9qZWN0cy4KKworICAvcDpCdWlsZEZvclJlbGVhc2U9KHRydWV8ZmFsc2UpCisgICAgV2hlbiB0cnVlLCBhZGRzIGV4dHJhIHZlcmlmaWNhdGlvbiB0byBlbnN1cmUgYSBjb21wbGV0ZSBpbnN0YWxsZXIgaXMKKyAgICBwcm9kdWNlZC4gRm9yIGV4YW1wbGUsIGJpbnV0aWxzIGlzIHJlcXVpcmVkIHdoZW4gYnVpbGRpbmcgZm9yIGEgcmVsZWFzZQorICAgIHRvIGdlbmVyYXRlIE1pbkdXLWNvbXBhdGlibGUgbGlicmFyaWVzLCBhbmQgdGhlIGJ1aWxkIHdpbGwgYmUgYWJvcnRlZCBpZgorICAgIHRoaXMgZmFpbHMuIERlZmF1bHRzIHRvIGZhbHNlLgorCisgIC9wOlJlbGVhc2VVcmk9KGFueSBVUkkpCisgICAgVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzIGZvciB0aGUgaW5zdGFsbGVycyB0byBhbGxvdyBzaWRlLWJ5LXNpZGUKKyAgICBpbnN0YWxsYXRpb24uIEZvcmtzIG9mIFB5dGhvbiBjYW4gdXNlIHRoZSBzYW1lIGluc3RhbGxlciBpbmZyYXN0cnVjdHVyZQorICAgIGJ5IHByb3ZpZGluZyBhIHVuaXF1ZSBVUkkgZm9yIHRoaXMgcHJvcGVydHkuIEl0IGRvZXMgbm90IG5lZWQgdG8gYmUgYW4KKyAgICBhY3RpdmUgaW50ZXJuZXQgYWRkcmVzcy4gRGVmYXVsdHMgdG8gJChDb21wdXRlck5hbWUpLgorCisgICAgT2ZmaWNpYWwgcmVsZWFzZXMgdXNlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8oYXJjaGl0ZWN0dXJlIG5hbWUpCisKKyAgL3A6RG93bmxvYWRVcmxCYXNlPShhbnkgVVJJKQorICAgIFNwZWNpZmllcyB0aGUgYmFzZSBvZiBhIFVSTCB3aGVyZSBtaXNzaW5nIHBhcnRzIG9mIHRoZSBpbnN0YWxsZXIgbGF5b3V0CisgICAgY2FuIGJlIGRvd25sb2FkZWQgZnJvbS4gVGhlIGJ1aWxkIHZlcnNpb24gYW5kIGFyY2hpdGVjdHVyZSB3aWxsIGJlCisgICAgYXBwZW5kZWQgdG8gY3JlYXRlIHRoZSBmdWxsIGFkZHJlc3MuIElmIG9taXR0ZWQsIG1pc3NpbmcgY29tcG9uZW50cyB3aWxsCisgICAgbm90IGJlIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZC4KKworICAvcDpEb3dubG9hZFVybD0oYW55IFVSSSkKKyAgICBTcGVjaWZpZXMgdGhlIGZ1bGwgVVJMIHdoZXJlIG1pc3NpbmcgcGFydHMgb2YgdGhlIGluc3RhbGxlciBsYXlvdXQgY2FuCisgICAgYmUgZG93bmxvYWRlZCBmcm9tLiBTaG91bGQgbm9ybWFsbHkgaW5jbHVkZSAnezJ9Jywgd2hpY2ggd2lsbCBiZQorICAgIHN1YnN0aXR1dGVkIGZvciB0aGUgZmlsZW5hbWUuIElmIG9taXR0ZWQsIG1pc3NpbmcgY29tcG9uZW50cyB3aWxsIG5vdCBiZQorICAgIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRlZC4gSWYgc3BlY2lmaWVkLCB0aGlzIHZhbHVlIG92ZXJyaWRlcworICAgIERvd25sb2FkVXJsQmFzZS4KKworICAvcDpTaWduaW5nQ2VydGlmaWNhdGU9KGNlcnRpZmljYXRlIG5hbWUpCisgICAgU3BlY2lmaWVzIHRoZSBjZXJ0aWZpY2F0ZSB0byBzaWduIHRoZSBpbnN0YWxsZXIgbGF5b3V0IHdpdGguIElmIG9taXR0ZWQsCisgICAgdGhlIGxheW91dCB3aWxsIG5vdCBiZSBzaWduZWQuCisKKyAgL3A6UmVidWlsZEFsbD0odHJ1ZXxmYWxzZSkKKyAgICBXaGVuIHRydWUsIHJlYnVpbGRzIGFsbCBvZiB0aGUgTVNJcyBtYWtpbmcgdXAgdGhlIGxheW91dC4gRGVmYXVsdHMgdG8KKyAgICB0cnVlLgorCitNb2RpZnlpbmcgdGhlIEluc3RhbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGNvZGUgZm9yIHRoZSBpbnN0YWxsZXIgaXMgZGl2aWRlZCBpbnRvIHRocmVlIG1haW4gZ3JvdXBzOiBwYWNrYWdlcywKK3RoZSBidW5kbGUgYW5kIHRoZSBib290c3RyYXAgYXBwbGljYXRpb24uCisKK1BhY2thZ2VzCistLS0tLS0tLQorCitQYWNrYWdlcyBhcHBlYXIgYXMgc3ViZGlyZWN0b3JpZXMgb2YgVG9vbHMvbXNpIChvdGhlciB0aGFuIHRoZSBidW5kbGUvCitkaXJlY3RvcnkpLiBUaGUgcHJvamVjdCBmaWxlIGlzIGEgLndpeHByb2ogYW5kIHRoZSBidWlsZCBvdXRwdXQgaXMgYQorc2luZ2xlIE1TSS4gUGFja2FnZXMgYXJlIGJ1aWx0IHdpdGggdGhlIFdpWCBUb29sc2V0LiBTb21lIHByb2plY3QgZmlsZXMKK3NoYXJlIHNvdXJjZSBmaWxlcyBhbmQgdXNlIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzIHRvIGVuYWJsZSBwYXJ0aWN1bGFyCitmZWF0dXJlcy4gVGhlc2UgYXJlIHR5cGljYWxseSB1c2VkIHRvIGtlZXAgdGhlIHNvdXJjZXMgY2xvc2Ugd2hlbiB0aGUKK2ZpbGVzIGFyZSByZWxhdGVkLCBidXQgcHJvZHVjZSBtdWx0aXBsZSBpbmRlcGVuZGVudCBwYWNrYWdlcy4KKworQSBwYWNrYWdlIGlzIHRoZSBzbWFsbGVzdCBlbGVtZW50IHRoYXQgbWF5IGJlIGluZGVwZW5kZW50bHkgaW5zdGFsbGVkIG9yCit1bmluc3RhbGxlZCAoYXMgdXNlZCBpbiB0aGlzIGluc3RhbGxlcikuIEZvciBleGFtcGxlLCB0aGUgdGVzdCBzdWl0ZSBoYXMKK2l0cyBvd24gcGFja2FnZSwgYXMgdXNlcnMgY2FuIGNob29zZSB0byBhZGQgb3IgcmVtb3ZlIGl0IGFmdGVyIHRoZQoraW5pdGlhbCBpbnN0YWxsYXRpb24uCisKK0FsbCB0aGUgZmlsZXMgaW5zdGFsbGVkIGJ5IGEgc2luZ2xlIHBhY2thZ2Ugc2hvdWxkIGJlIHJlbGF0ZWQsIHRob3VnaAorc29tZSBwYWNrYWdlcyBtYXkgbm90IGluc3RhbGwgYW55IGZpbGVzLiBGb3IgZXhhbXBsZSwgdGhlIHBpcCBwYWNrYWdlCitleGVjdXRlcyB0aGUgZW5zdXJlcGlwIHBhY2thZ2UsIGJ1dCBkb2VzIG5vdCBhZGQgb3IgcmVtb3ZlIGFueSBvZiBpdHMKK293biBmaWxlcy4gKEl0IGlzIHJlcHJlc2VudGVkIGFzIGEgcGFja2FnZSBiZWNhdXNlIG9mIGl0cworaW5zdGFsbGVkL3VuaW5zdGFsbGVkIG5hdHVyZSwgYXMgb3Bwb3NlZCB0byB0aGUgInByZWNvbXBpbGUgc3RhbmRhcmQKK2xpYnJhcnkiIG9wdGlvbiwgZm9yIGV4YW1wbGUuKSBEZXBlbmRlbmNpZXMgYmV0d2VlbiBwYWNrYWdlcyBhcmUgaGFuZGxlZAorYnkgdGhlIGJ1bmRsZSwgYnV0IHBhY2thZ2VzIHNob3VsZCBkZXRlY3Qgd2hlbiBkZXBlbmRlbmNpZXMgYXJlIG1pc3NpbmcKK2FuZCByYWlzZSBhbiBlcnJvci4KKworUGFja2FnZXMgdGhhdCBpbmNsdWRlIGEgbG90IG9mIGZpbGVzIG1heSB1c2UgYW4gSW5zdGFsbEZpbGVzIGVsZW1lbnQgaW4KK3RoZSAud2l4cHJvaiBmaWxlIHRvIGdlbmVyYXRlIHNvdXJjZXMuIFNlZSBsaWIvbGliLndpeHByb2ogZm9yIGFuCitleGFtcGxlLCBhbmQgbXNpLnRhcmdldHMgYW5kIGNzdl90b193eHMucHkgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbi4gVGhpcworZWxlbWVudCBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBjb2RlIGZvciBjbGVhbmluZyB1cCBhbmQKK3JlbW92aW5nIF9fcHljYWNoZV9fIGZvbGRlcnMgaW4gYW55IGRpcmVjdG9yeSBjb250YWluaW5nIC5weSBmaWxlcy4KKworQWxsIHBhY2thZ2VzIGFyZSBidWlsdCB3aXRoIHRoZSBUb29scy9tc2kvY29tbW9uLnd4cyBmaWxlLCBhbmQgc28gYW55CitkaXJlY3Rvcnkgb3IgcHJvcGVydHkgaW4gdGhpcyBmaWxlIG1heSBiZSByZWZlcmVuY2VkLiBPZiBwYXJ0aWN1bGFyCitpbnRlcmVzdDoKKworICBSRUdJU1RSWUtFWSAocHJvcGVydHkpCisgICAgVGhlIHJlZ2lzdHJ5IGtleSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uLgorCisgIEluc3RhbGxEaXJlY3RvcnkgKGRpcmVjdG9yeSkKKyAgICBUaGUgcm9vdCBpbnN0YWxsIGRpcmVjdG9yeSBmb3IgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uLiBTdWJkaXJlY3RvcmllcworICAgIGFyZSBhbHNvIHNwZWNpZmllZCBpbiB0aGlzIGZpbGUgKERMTHMsIExpYiwgZXRjLikKKworICBNZW51RGlyIChkaXJlY3RvcnkpCisgICAgVGhlIFN0YXJ0IE1lbnUgZm9sZGVyIGZvciB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24uCisKKyAgVXBncmFkZVRhYmxlIChwcm9wZXJ0eSkKKyAgICBFdmVyeSBwYWNrYWdlIHNob3VsZCByZWZlcmVuY2UgdGhpcyBwcm9wZXJ0eSB0byBpbmNsdWRlIHVwZ3JhZGUKKyAgICBpbmZvcm1hdGlvbi4KKworICBPcHRpb25hbEZlYXR1cmUgKENvbXBvbmVudCkKKyAgICBQYWNrYWdlcyB0aGF0IG1heSBiZSBlbmFibGVkIG9yIGRpc2FibGVkIHNob3VsZCByZWZlcmVuY2UgdGhpcyBjb21wb25lbnQKKyAgICBhbmQgaGF2ZSBhbiBPUFRJT05BTF9GRUFUVVJFUyBlbnRyeSBpbiB0aGUgYm9vdHN0cmFwIGFwcGxpY2F0aW9uIHRvCisgICAgcHJvcGVybHkgaGFuZGxlIE1vZGlmeSBhbmQgVXBncmFkZS4KKworVGhlIC53eGxfdGVtcGxhdGUgZmlsZSBpcyBzcGVjaWFsbHkgaGFuZGxlZCBieSB0aGUgYnVpbGQgc3lzdGVtIGZvciB0aGlzCitwcm9qZWN0IHRvIHBlcmZvcm0ge3tzdWJzdGl0dXRpb25zfX0gYXMgZGVmaW5lZCBpbiBtc2kudGFyZ2V0cy4gVGhleQorc2hvdWxkIGJlIGluY2x1ZGVkIGluIHByb2plY3RzIGFzIDxXeGxUZW1wbGF0ZT4gaXRlbXMsIHdoZXJlIC53eGwgZmlsZXMKK2FyZSBub3JtYWxseSBpbmNsdWRlZCBhcyA8RW1iZWRkZWRSZXNvdXJjZT4gaXRlbXMuCisKK0J1bmRsZQorLS0tLS0tCisKK1RoZSBidW5kbGUgaXMgY29tcGlsZWQgdG8gdGhlIG1haW4gRVhFIGVudHJ5IHBvaW50IHRoYXQgZm9yIG1vc3QgdXNlcnMKK3dpbGwgcmVwcmVzZW50IHRoZSBQeXRob24gaW5zdGFsbGVyLiBJdCBpcyBidWlsdCBmcm9tIFRvb2xzL21zaS9idW5kbGUKK3dpdGggcGFja2FnZXMgcmVmZXJlbmNlcyBpbiBUb29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMuCisKK0J1aWxkIGxvZ2ljIGZvciB0aGUgYnVuZGxlIGlzIGluIGJ1bmRsZS50YXJnZXRzLCBidXQgc2hvdWxkIGJlIGludm9rZWQKK3Rocm91Z2ggb25lIG9mIHRoZSAud2l4cHJvaiBmaWxlcyBhcyBkZXNjcmliZWQgaW4gQnVpbGRpbmcgdGhlCitJbnN0YWxsZXIuCisKK1RoZSBVSSBpcyBzZXBhcmF0ZWQgYmV0d2VlbiBEZWZhdWx0LnRobSAoVUkgbGF5b3V0KSwgRGVmYXVsdC53eGwKKyhzdHJpbmdzKSwgYnVuZGxlLnd4cyAocHJvcGVydGllcykgYW5kIHRoZSBib290c3RyYXAgYXBwbGljYXRpb24uCitCdW5kbGUud3hzIGFsc28gY29udGFpbnMgdGhlIGNoYWluLCB3aGljaCBpcyB0aGUgbGlzdCBvZiBwYWNrYWdlcyB0bworaW5zdGFsbCBhbmQgdGhlIG9yZGVyIHRoZXkgc2hvdWxkIGJlIGluc3RhbGxlZCBpbi4gVGhlc2UgcmVmZXIgdG8gbmFtZWQKK3BhY2thZ2UgZ3JvdXBzIGluIGJ1bmRsZS9wYWNrYWdlZ3JvdXBzLgorCitFYWNoIHBhY2thZ2UgZ3JvdXAgc3BlY2lmaWVzIG9uZSBvciBtb3JlIHBhY2thZ2VzIHRvIGluc3RhbGwuIE1vc3QKK3BhY2thZ2VzIHJlcXVpcmUgdHdvIHNlcGFyYXRlIGVudHJpZXMgdG8gc3VwcG9ydCBib3RoIHBlci11c2VyIGFuZAorYWxsLXVzZXJzIGluc3RhbGxhdGlvbnMuIEJlY2F1c2UgdGhlc2UgcmV1c2UgdGhlIHNhbWUgcGFja2FnZSwgaXQgZG9lcworbm90IGluY3JlYXNlIHRoZSBvdmVyYWxsIHNpemUgb2YgdGhlIHBhY2thZ2UuCisKK1BhY2thZ2UgZ3JvdXBzIHJlZmVyIHRvIHBheWxvYWQgZ3JvdXBzLCB3aGljaCBhbGxvdyBiZXR0ZXIgY29udHJvbCBvdmVyCitlbWJlZGRpbmcgYW5kIGRvd25sb2FkaW5nIGZpbGVzIHRoYW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MuIFdoZXRoZXIgZmlsZXMKK2FyZSBlbWJlZGRlZCBhbmQgd2hlcmUgdGhleSBhcmUgZG93bmxvYWRlZCBmcm9tIGRlcGVuZHMgb24gc2V0dGluZ3MKK2NyZWF0ZWQgYnkgdGhlIHByb2plY3QgZmlsZXMuCisKK1BhY2thZ2UgcmVmZXJlbmNlcyBjYW4gaW5jbHVkZSBpbnN0YWxsIGNvbmRpdGlvbnMgdGhhdCBkZXRlcm1pbmUgd2hlbiB0bworaW5zdGFsbCB0aGUgcGFja2FnZS4gV2hlbiBhIHBhY2thZ2UgaXMgYSBkZXBlbmRlbmN5IGZvciBvdGhlcnMsIHRoZQorY29uZGl0aW9uIHNob3VsZCBiZSBjcmFmdGVkIHRvIGVuc3VyZSBpdCBpcyBpbnN0YWxsZWQuCisKK01TSSBwYWNrYWdlcyBhcmUgaW5zdGFsbGVkIG9yIHVuaW5zdGFsbGVkIGJhc2VkIG9uIHRoZWlyIGN1cnJlbnQgc3RhdGUKK2FuZCB0aGUgaW5zdGFsbCBjb25kaXRpb24uIFRoaXMgbWFrZXMgdGhlbSBtb3N0IHN1aXRhYmxlIGZvciBmZWF0dXJlcwordGhhdCBhcmUgY2xlYXJseSBwcmVzZW50IG9yIGFic2VudCBmcm9tIHRoZSB1c2VyJ3MgbWFjaGluZS4KKworRVhFIHBhY2thZ2VzIGFyZSBleGVjdXRlZCBiYXNlZCBvbiBhIGN1c3RvbWlzYWJsZSBjb25kaXRpb24gdGhhdCBjYW4gYmUKK29taXR0ZWQuIFRoaXMgbWFrZXMgdGhlbSBzdWl0YWJsZSBmb3IgcHJlLSBvciBwb3N0LWluc3RhbGwgdGFza3MgdGhhdAorbmVlZCB0byBydW4gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGZlYXR1cmVzIGhhdmUgYmVlbiBhZGRlZCBvciByZW1vdmVkLgorCitCb290c3RyYXAgQXBwbGljYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYm9vdHN0cmFwIGFwcGxpY2F0aW9uIGlzIGEgQysrIGFwcGxpY2F0aW9uIHRoYXQgY29udHJvbHMgdGhlIFVJIGFuZAoraW5zdGFsbGF0aW9uLiBXaGlsZSBpdCBkb2VzIG5vdCBkaXJlY3RseSBjb21waWxlIGludG8gdGhlIG1haW4gRVhFIG9mCit0aGUgaW5zdGFsbGVyLCBpdCBmb3JtcyB0aGUgbWFpbiBhY3RpdmUgY29tcG9uZW50LiBNb3N0IG9mIHRoZQoraW5zdGFsbGF0aW9uIGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQgYnkgV2lYLCBhbmQgc28gdGhlIGJvb3RzdHJhcAorYXBwbGljYXRpb24gaXMgcHJlZG9taW5hbnRseSByZXNwb25zaWJsZSBmb3IgdGhlIGNvZGUgYmVoaW5kIHRoZSBVSSB0aGF0CitpcyBkZWZpbmVkIGluIHRoZSBEZWZhdWx0LnRobSBmaWxlLiBUaGUgYm9vdHN0cmFwIGFwcGxpY2F0aW9uIGNvZGUgaXMgaW4KK2J1bmRsZS9ib290c3RyYXAgYW5kIGlzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgd2hlbiBidWlsZGluZyB0aGUgYnVuZGxlLgorCitJbnN0YWxsYXRpb24gTGF5b3V0Cis9PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSB0d28gaW5zdGFsbGF0aW9uIGxheW91dHMgZm9yIFB5dGhvbiBvbiBXaW5kb3dzLCB3aXRoIHRoZSBvbmx5CitkaWZmZXJlbmNlcyBiZWluZyBzdXBwb3J0aW5nIGZpbGVzLiBBIGxheW91dCBpcyBzZWxlY3RlZCBpbXBsaWNpdGx5CitiYXNlZCBvbiB3aGV0aGVyIHRoZSBpbnN0YWxsIGlzIGZvciBhbGwgdXNlcnMgb2YgdGhlIG1hY2hpbmUgb3IganVzdCBmb3IKK3RoZSB1c2VyIHBlcmZvcm1pbmcgdGhlIGluc3RhbGxhdGlvbi4KKworVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGxvY2F0aW9uIHdoZW4gaW5zdGFsbGluZyBmb3IgYWxsIHVzZXJzIGlzCisiJVByb2dyYW1GaWxlcyVcUHl0aG9uIDMuWCIgZm9yIHRoZSA2NC1iaXQgaW50ZXJwcmV0ZXIgYW5kCisiJVByb2dyYW1GaWxlcyh4ODYpJVxQeXRob24gMy5YIiBmb3IgdGhlIDMyLWJpdCBpbnRlcnByZXRlci4gKE5vdGUgdGhhdAordGhlIGxhdHRlciBwYXRoIGlzIGVxdWl2YWxlbnQgdG8gIiVQcm9ncmFtRmlsZXMlXFB5dGhvbiAzLlgiIHdoZW4KK3J1bm5pbmcgYSAzMi1iaXQgdmVyc2lvbiBvZiBXaW5kb3dzLikgVGhpcyBsb2NhdGlvbiByZXF1aXJlcworYWRtaW5pc3RyYXRpdmUgcHJpdmlsZWdlcyB0byBpbnN0YWxsIG9yIGxhdGVyIG1vZGlmeSB0aGUgaW5zdGFsbGF0aW9uLgorCitUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gbG9jYXRpb24gd2hlbiBpbnN0YWxsaW5nIGZvciB0aGUgY3VycmVudCB1c2VyCitpcyAiJUxvY2FsQXBwRGF0YSVcUHJvZ3JhbXNcUHl0aG9uXFB5dGhvbjNYIiBmb3IgdGhlIDY0LWJpdCBpbnRlcnByZXRlcgorYW5kICIlTG9jYWxBcHBEYXRhJVxQcm9ncmFtc1xQeXRob25cUHl0aG9uM1gtMzIiIGZvciB0aGUgMzItYml0CitpbnRlcnByZXRlci4gT25seSB0aGUgY3VycmVudCB1c2VyIGNhbiBhY2Nlc3MgdGhpcyBsb2NhdGlvbi4gVGhpcworcHJvdmlkZXMgYSBzdWl0YWJsZSBsZXZlbCBvZiBwcm90ZWN0aW9uIGFnYWluc3QgbWFsaWNpb3VzIG1vZGlmaWNhdGlvbgorb2YgUHl0aG9uJ3MgZmlsZXMuCisKK1dpdGhpbiB0aGlzIGluc3RhbGwgZGlyZWN0b3J5IGlzIHRoZSBmb2xsb3dpbmcgYXBwcm94aW1hdGUgbGF5b3V0OgorCisuXHB5dGhvblt3XS5leGUgVGhlIGNvcmUgZXhlY3V0YWJsZSBmaWxlcworLlxETExzICAgICAgICAgIFN0ZGxpYiBleHRlbnNpb25zICgqLnB5ZCkgYW5kIGRlcGVuZGVuY2llcworLlxEb2MgICAgICAgICAgIERvY3VtZW50YXRpb24gKCouY2htKQorLlxpbmNsdWRlICAgICAgIERldmVsb3BtZW50IGhlYWRlcnMgKCouaCkKKy5cTGliICAgICAgICAgICBTdGFuZGFyZCBsaWJyYXJ5CisuXExpYlx0ZXN0ICAgICAgVGVzdCBzdWl0ZQorLlxsaWJzICAgICAgICAgIERldmVsb3BtZW50IGxpYnJhcmllcyAoKi5saWIpCisuXFNjcmlwdHMgICAgICAgTGF1bmNoZXIgc2NyaXB0cyAoKi5leGUsICoucHkpCisuXHRjbCAgICAgICAgICAgVGNsIGRlcGVuZGVuY2llcyAoKi5kbGwsICoudGNsIGFuZCBvdGhlcnMpCisuXFRvb2xzICAgICAgICAgVG9vbCBzY3JpcHRzICgqLnB5KQorCitXaGVuIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzLCB0aGUgZm9sbG93aW5nIGZpbGVzIGFyZSBpbnN0YWxsZWQgdG8KK2VpdGhlciAiJVN5c3RlbVJvb3QlXFN5c3RlbTMyIiBvciAiJVN5c3RlbVJvb3QlXFN5c1dPVzY0IiBhcworYXBwcm9wcmlhdGUuIEZvciB0aGUgY3VycmVudCB1c2VyLCB0aGV5IGFyZSBpbnN0YWxsZWQgaW4gdGhlIFB5dGhvbgoraW5zdGFsbCBkaXJlY3RvcnkuCisKKy5ccHl0aG9uM3guZGxsICAgICAgVGhlIGNvcmUgaW50ZXJwcmV0ZXIKKy5ccHl0aG9uMy5kbGwgICAgICAgVGhlIHN0YWJsZSBBQkkgcmVmZXJlbmNlCisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMsIHRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGluc3RhbGxlZCB0bworIiVTeXN0ZW1Sb290JSIgKHR5cGljYWxseSAiQzpcV2luZG93cyIpIHRvIGVuc3VyZSB0aGV5IGFyZSBhbHdheXMKK2F2YWlsYWJsZSBvbiBQQVRILiAoU2VlIExhdW5jaGluZyBQeXRob24gYmVsb3cuKSBGb3IgdGhlIGN1cnJlbnQgdXNlciwKK3RoZXkgYXJlIGluc3RhbGxlZCBpbiAiJUxvY2FsQXBwRGF0YSVcUHJvZ3JhbXNcUHl0aG9uXFB5TGF1bmNoZXIiLgorCisuXHB5W3ddLmV4ZSAgICAgICAgIFBFUCAzOTcgbGF1bmNoZXIKKworU3lzdGVtIFNldHRpbmdzCis9PT09PT09PT09PT09PT0KKworT24gaW5zdGFsbGF0aW9uLCByZWdpc3RyeSBrZXlzIGFyZSBjcmVhdGVkIHNvIHRoYXQgb3RoZXIgYXBwbGljYXRpb25zCitjYW4gbG9jYXRlIGFuZCBpZGVudGlmeSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbi4gVGhlIGxvY2F0aW9ucyBvZiB0aGVzZQora2V5cyB2YXJ5IGJhc2VkIG9uIHRoZSBpbnN0YWxsIHR5cGUuCisKK0ZvciA2NC1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzLCB0aGUgcm9vdCBrZXkgaXM6CisgICAgSEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXDMuWAorCitGb3IgMzItYml0IGludGVycHJldGVycyBpbnN0YWxsZWQgZm9yIGFsbCB1c2VycyBvbiBhIDY0LWJpdCBvcGVyYXRpbmcKK3N5c3RlbSwgdGhlIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxXb3c2NDMyTm9kZVxQeXRob25cUHl0aG9uQ29yZVwzLlgtMzIKKworRm9yIDMyLWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSAzMi1iaXQgb3BlcmF0aW5nCitzeXN0ZW0sIHRoZSByb290IGtleSBpczoKKyAgICBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcMy5YLTMyCisKK0ZvciA2NC1iaXQgaW50ZXJwcmV0ZXJzIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlcjoKKyAgICBIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwzLlgKKworRm9yIDMyLWJpdCBpbnRlcnByZXRlcnMgaW5zdGFsbGVkIGZvciB0aGUgY3VycmVudCB1c2VyOgorICAgIEhLRVlfQ1VSUkVOVF9VU0VSXFNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXDMuWC0zMgorCitXaGVuIHRoZSBjb3JlIFB5dGhvbiBleGVjdXRhYmxlcyBhcmUgaW5zdGFsbGVkLCBhIGtleSAiSW5zdGFsbFBhdGgiIGlzCitjcmVhdGVkIHdpdGhpbiB0aGUgcm9vdCBrZXkgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZSBzZXQgdG8gdGhlCitleGVjdXRhYmxlJ3MgaW5zdGFsbCBkaXJlY3RvcnkuIEEgdmFsdWUgbmFtZWQgIkV4ZWN1dGFibGVQYXRoIiBpcyBhZGRlZAord2l0aCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBtYWluIFB5dGhvbiBpbnRlcnByZXRlciwgYW5kIGEga2V5CisiSW5zdGFsbEdyb3VwIiBpcyBjcmVhdGVkIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBwcm9kdWN0CituYW1lICJQeXRob24gMy5YIi4KKworV2hlbiB0aGUgUHl0aG9uIHN0YW5kYXJkIGxpYnJhcnkgaXMgaW5zdGFsbGVkLCBhIGtleSAiUHl0aG9uUGF0aCIgaXMKK2NyZWF0ZWQgd2l0aGluIHRoZSByb290IGtleSB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlIHNldCB0byB0aGUgZnVsbCBwYXRoCit0byB0aGUgTGliIGZvbGRlciBmb2xsb3dlZCBieSB0aGUgcGF0aCB0byB0aGUgRExMcyBmb2xkZXIsIHNlcGFyYXRlZCBieQorYSBzZW1pY29sb24uCisKK1doZW4gdGhlIGRvY3VtZW50YXRpb24gaXMgaW5zdGFsbGVkLCBhIGtleSAiSGVscCIgaXMgY3JlYXRlZCB3aXRoaW4gdGhlCityb290IGtleSwgd2l0aCBhIHN1YmtleSAiTWFpbiBQeXRob24gRG9jdW1lbnRhdGlvbiIgd2l0aCBpdHMgZGVmYXVsdAordmFsdWUgc2V0IHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGluc3RhbGxlZCBDSE0gZmlsZS4KKworCitUaGUgcHkuZXhlIGxhdW5jaGVyIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIGEgcmVndWxhciBQeXRob24gaW5zdGFsbCwKK2J1dCB1c2luZyBhIHNlcGFyYXRlIG1lY2hhbmlzbSB0aGF0IGFsbG93cyBpdCB0byBtb3JlIGVhc2lseSBzcGFuCit2ZXJzaW9ucyBvZiBQeXRob24uIEFzIGEgcmVzdWx0LCBpdCBoYXMgZGlmZmVyZW50IHJvb3Qga2V5cyBmb3IgaXRzCityZWdpc3RyeSBlbnRyaWVzOgorCitXaGVuIGluc3RhbGxlZCBmb3IgYWxsIHVzZXJzIG9uIGEgNjQtYml0IG9wZXJhdGluZyBzeXN0ZW0sIHRoZQorbGF1bmNoZXIncyByb290IGtleSBpczoKKyAgICBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcV293NjQzMk5vZGVcUHl0aG9uXExhdW5jaGVyCisKK1doZW4gaW5zdGFsbGVkIGZvciBhbGwgdXNlcnMgb24gYSAzMi1iaXQgb3BlcmF0aW5nIHN5c3RlbSwgdGhlCitsYXVuY2hlcidzIHJvb3Qga2V5IGlzOgorICAgIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxQeXRob25cTGF1bmNoZXIKKworV2hlbiBpbnN0YWxsZWQgZm9yIHRoZSBjdXJyZW50IHVzZXI6CisgICAgSEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcUHl0aG9uXExhdW5jaGVyCisKK1doZW4gdGhlIGxhdW5jaGVyIGlzIGluc3RhbGxlZCwgYSBrZXkgIkluc3RhbGxQYXRoIiBpcyBjcmVhdGVkIHdpdGhpbgoraXRzIHJvb3Qga2V5IHdpdGggaXRzIGRlZmF1bHQgdmFsdWUgc2V0IHRvIHRoZSBsYXVuY2hlcidzIGluc3RhbGwKK2RpcmVjdG9yeS4gRmlsZSBhc3NvY2lhdGlvbnMgYXJlIGFsc28gY3JlYXRlZCBmb3IgLnB5LCAucHl3LCAucHljIGFuZAorLnB5byBmaWxlcy4KKworTGF1bmNoaW5nIFB5dGhvbgorPT09PT09PT09PT09PT09PQorCitXaGVuIGEgZmVhdHVyZSBvZmZlcmluZyB1c2VyIGVudHJ5IHBvaW50cyBpbiB0aGUgU3RhcnQgTWVudSBpcworaW5zdGFsbGVkLCBhIGZvbGRlciAiUHl0aG9uIDMuWCIgaXMgY3JlYXRlZC4gRXZlcnkgc2hvcnRjdXQgc2hvdWxkIGJlCitjcmVhdGVkIHdpdGhpbiB0aGlzIGZvbGRlciwgYW5kIGVhY2ggc2hvcnRjdXQgc2hvdWxkIGluY2x1ZGUgdGhlIHZlcnNpb24KK2FuZCBwbGF0Zm9ybSB0byBhbGxvdyB1c2VycyB0byBpZGVudGlmeSB0aGUgc2hvcnRjdXQgaW4gYSBzZWFyY2ggcmVzdWx0cworcGFnZS4KKworVGhlIGNvcmUgUHl0aG9uIGV4ZWN1dGFibGVzIGNyZWF0ZXMgYSBzaG9ydGN1dCAiUHl0aG9uIDMuWCAoMzItYml0KSIgb3IKKyJQeXRob24gMy5YICg2NC1iaXQpIiBkZXBlbmRpbmcgb24gdGhlIGludGVycHJldGVyLgorCitUaGUgZG9jdW1lbnRhdGlvbiBjcmVhdGVzIGEgc2hvcnRjdXQgIlB5dGhvbiAzLlggMzItYml0IE1hbnVhbHMiIG9yCisiUHl0aG9uIDMuWCA2NC1iaXQgTWFudWFscyIuIFRoZSBkb2N1bWVudGF0aW9uIGlzIGlkZW50aWNhbCBmb3IgYWxsCitwbGF0Zm9ybXMsIGJ1dCB0aGUgc2hvcnRjdXRzIG5lZWQgdG8gYmUgc2VwYXJhdGUgdG8gYXZvaWQgdW5pbnN0YWxsYXRpb24KK2NvbmZsaWN0cy4KKworSW5zdGFsbGluZyBJRExFIGNyZWF0ZXMgYSBzaG9ydGN1dCAiSURMRSAoUHl0aG9uIDMuWCAzMi1iaXQpIiBvciAiSURMRQorKFB5dGhvbiAzLlggNjQtYml0KSIgZGVwZW5kaW5nIG9uIHRoZSBpbnRlcnByZXRlci4KKworCitGb3IgdXNlcnMgd2hvIG9mdGVuIGxhdW5jaCBQeXRob24gZnJvbSBhIENvbW1hbmQgUHJvbXB0LCBhbiBvcHRpb24gaXMKK3Byb3ZpZGVkIHRvIGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgcHl0aG9uLmV4ZSB0byB0aGUgdXNlciBvcgorc3lzdGVtIFBBVEggdmFyaWFibGUuIElmIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeQorYW5kIHRoZSBTY3JpcHRzIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc3lzdGVtIFBBVEgKK2ZvciBhbiBhbGwgdXNlcnMgaW5zdGFsbCBhbmQgdGhlIHVzZXIgUEFUSCBmb3IgYSBwZXItdXNlciBpbnN0YWxsLgorCitXaGVuIHRoZSB1c2VyIG9ubHkgaGFzIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiBpbnN0YWxsZWQsIHRoaXMgd2lsbCBiZWhhdmUKK2FzIGV4cGVjdGVkLiBIb3dldmVyLCBiZWNhdXNlIFdpbmRvd3Mgc2VhcmNoZXMgdGhlIHN5c3RlbSBQQVRIIGJlZm9yZQordGhlIHVzZXIgUEFUSCwgdXNlcnMgY2Fubm90IG92ZXJyaWRlIGEgc3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9uIG9mCitQeXRob24gb24gdGhlaXIgUEFUSC4gRnVydGhlciwgYmVjYXVzZSB0aGUgaW5zdGFsbGVyIGNhbiBvbmx5IHByZXBlbmQgdG8KK3RoZSBwYXRoLCBsYXRlciBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiB3aWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyCitlYXJsaWVyIGluc3RhbGxhdGlvbnMsIHJlZ2FyZGxlc3Mgb2YgaW50ZXJwcmV0ZXIgdmVyc2lvbi4KKworQmVjYXVzZSBpdCBpcyBub3QgcG9zc2libGUgdG8gYXV0b21hdGljYWxseSBjcmVhdGUgYSBzZW5zaWJsZSBQQVRICitjb25maWd1cmF0aW9uLCB1c2VycyBhcmUgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBweS5leGUgbGF1bmNoZXIgYW5kCittYW51YWxseSBtb2RpZnkgdGhlaXIgUEFUSCB2YXJpYWJsZSB0byBhZGQgU2NyaXB0cyBkaXJlY3RvcmllcyBpbiB0aGVpcgorcHJlZmVycmVkIG9yZGVyLiBTeXN0ZW0td2lkZSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiBzaG91bGQgY29uc2lkZXIgbm90Cittb2RpZnlpbmcgUEFUSCwgb3IgdXNpbmcgYW4gYWx0ZXJuYXRpdmUgdGVjaG5vbG9neSB0byBtb2RpZnkgdGhlaXIKK3VzZXJzJyBQQVRIIHZhcmlhYmxlcy4KKworCitUaGUgcHkuZXhlIGxhdW5jaGVyIGlzIHJlY29tbWVuZGVkIGJlY2F1c2UgaXQgdXNlcyBhIGNvbnNpc3RlbnQgYW5kCitzZW5zaWJsZSBzZWFyY2ggb3JkZXIgZm9yIFB5dGhvbiBpbnN0YWxsYXRpb25zLiBVc2VyIGluc3RhbGxhdGlvbnMgYXJlCitwcmVmZXJyZWQgb3ZlciBzeXN0ZW0td2lkZSBpbnN0YWxscywgYW5kIGxhdGVyIHZlcnNpb25zIGFyZSBwcmVmZXJyZWQKK3JlZ2FyZGxlc3Mgb2YgaW5zdGFsbGF0aW9uIG9yZGVyICh3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBweS5leGUKK2N1cnJlbnRseSBwcmVmZXJzIDIueCB2ZXJzaW9ucyBvdmVyIDMueCB2ZXJzaW9ucyB3aXRob3V0IHRoZSAtMyBjb21tYW5kCitsaW5lIGFyZ3VtZW50KS4KKworRm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgaW50ZXJwcmV0ZXJzLCB0aGUgMzItYml0IHZlcnNpb24gb2YgdGhlCitsYXVuY2hlciBpcyBpbnN0YWxsZWQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBzZWFyY2ggb3JkZXIgaXMgYWx3YXlzCitjb25zaXN0ZW50IChhcyB0aGUgNjQtYml0IGxhdW5jaGVyIGlzIHN1YnRseSBkaWZmZXJlbnQgZnJvbSB0aGUgMzItYml0CitsYXVuY2hlcikgYW5kIGFsc28gYXZvaWRzIHRoZSBuZWVkIHRvIGluc3RhbGwgaXQgbXVsdGlwbGUgdGltZXMuIEZ1dHVyZQordmVyc2lvbnMgb2YgUHl0aG9uIHdpbGwgdXBncmFkZSB0aGUgbGF1bmNoZXIgaW4tcGxhY2UsIHVzaW5nIFdpbmRvd3MKK0luc3RhbGxlcidzIHVwZ3JhZGUgZnVuY3Rpb25hbGl0eSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBlYXJsaWVyCitpbnN0YWxsZWQgdmVyc2lvbnMuCisKK1doZW4gaW5zdGFsbGVkLCBmaWxlIGFzc29jaWF0aW9ucyBhcmUgY3JlYXRlZCBmb3IgLnB5LCAucHljIGFuZCAucHlvCitmaWxlcyB0byBsYXVuY2ggd2l0aCBweS5leGUgYW5kIC5weXcgZmlsZXMgdG8gbGF1bmNoIHdpdGggcHl3LmV4ZS4gVGhpcworbWFrZXMgUHl0aG9uIGZpbGVzIHJlc3BlY3Qgc2hlYmFuZyBsaW5lcyBieSBkZWZhdWx0IGFuZCBhbHNvIGF2b2lkcworY29uZmxpY3RzIGJldHdlZW4gbXVsdGlwbGUgUHl0aG9uIGluc3RhbGxhdGlvbnMuCisKKworUmVwYWlyLCBNb2RpZnkgYW5kIFVuaW5zdGFsbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBZnRlciBpbnN0YWxsYXRpb24sIFB5dGhvbiBtYXkgYmUgbW9kaWZpZWQsIHJlcGFpcmVkIG9yIHVuaW5zdGFsbGVkIGJ5CitydW5uaW5nIHRoZSBvcmlnaW5hbCBFWEUgYWdhaW4gb3IgdmlhIHRoZSBQcm9ncmFtcyBhbmQgRmVhdHVyZXMgYXBwbGV0CisoZm9ybWVybHkga25vd24gYXMgQWRkIG9yIFJlbW92ZSBQcm9ncmFtcykuCisKK01vZGlmaWNhdGlvbnMgYWxsb3cgZmVhdHVyZXMgdG8gYmUgYWRkZWQgb3IgcmVtb3ZlZC4gVGhlIGluc3RhbGwKK2RpcmVjdG9yeSBhbmQga2luZCAoYWxsIHVzZXJzL3NpbmdsZSB1c2VyKSBjYW5ub3QgYmUgbW9kaWZpZWQuIEJlY2F1c2UKK1dpbmRvd3MgSW5zdGFsbGVyIGNhY2hlcyBpbnN0YWxsYXRpb24gcGFja2FnZXMsIHJlbW92aW5nIGZlYXR1cmVzIHdpbGwKK25vdCByZXF1aXJlIGludGVybmV0IGFjY2VzcyB1bmxlc3MgdGhlIHBhY2thZ2UgY2FjaGUgaGFzIGJlZW4gY29ycnVwdGVkCitvciBkZWxldGVkLiBBZGRpbmcgZmVhdHVyZXMgdGhhdCB3ZXJlIG5vdCBwcmV2aW91c2x5IGluc3RhbGxlZCBhbmQgYXJlCitub3QgZW1iZWRkZWQgb3Igb3RoZXJ3aXNlIGF2YWlsYWJsZSB3aWxsIHJlcXVpcmUgaW50ZXJuZXQgYWNjZXNzLgorCitSZXBhaXJpbmcgd2lsbCByZXJ1biB0aGUgaW5zdGFsbGF0aW9uIGZvciBhbGwgY3VycmVudGx5IGluc3RhbGxlZAorZmVhdHVyZXMsIHJlc3RvcmluZyBmaWxlcyBhbmQgcmVnaXN0cnkga2V5cyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCBvcgorcmVtb3ZlZC4gVGhpcyBvcGVyYXRpb24gZ2VuZXJhbGx5IHdpbGwgbm90IHJlZG93bmxvYWQgYW55IGZpbGVzIHVubGVzcwordGhlIGNhY2hlZCBwYWNrYWdlcyBoYXZlIGJlZW4gY29ycnVwdGVkIG9yIGRlbGV0ZWQuCisKK1JlbW92aW5nIFB5dGhvbiB3aWxsIGNsZWFuIHVwIGFsbCB0aGUgZmlsZXMgYW5kIHJlZ2lzdHJ5IGtleXMgdGhhdCB3ZXJlCitjcmVhdGVkIGJ5IHRoZSBpbnN0YWxsZXIsIGFzIHdlbGwgYXMgX19weWNhY2hlX18gZm9sZGVycyB0aGF0IGFyZQorZXhwbGljaXRseSBoYW5kbGVkIGJ5IHRoZSBpbnN0YWxsZXIuIFB5dGhvbiBwYWNrYWdlcyBpbnN0YWxsZWQgbGF0ZXIKK3VzaW5nIGEgdG9vbCBsaWtlIHBpcCB3aWxsIG5vdCBiZSByZW1vdmVkLiBTb21lIGNvbXBvbmVudHMgbWF5IGJlCitpbnN0YWxsZWQgYnkgb3RoZXIgaW5zdGFsbGVycyAoc3VjaCBhcyB0aGUgTVNWQ1JUKSBhbmQgdGhlc2Ugd2lsbCBub3QgYmUKK3JlbW92ZWQgaWYgYW5vdGhlciBwcm9kdWN0IGhhcyBhIGRlcGVuZGVuY3kgb24gdGhlbS4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkLmJhdCBiL1Rvb2xzL21zaS9idWlsZC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1M2ExYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idWlsZC5iYXQKQEAgLTAsMCArMSw3MCBAQAorQGVjaG8gb2ZmDQorc2V0bG9jYWwNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IEJVSUxEWDg2PQ0KK3NldCBCVUlMRFg2ND0NCitzZXQgQlVJTERET0M9DQorc2V0IEJVSUxEUFg9DQorc2V0IEJVSUxEUEFDSz0NCisNCis6Q2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICItaCIgZ290byBIZWxwDQoraWYgIiV+MSIgRVFVICIteDg2IiAoc2V0IEJVSUxEWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICItLWRvYyIgKHNldCBCVUlMRERPQz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlfjEiIEVRVSAiLS10ZXN0LW1hcmtlciIgKHNldCBCVUlMRFBYPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiV+MSIgRVFVICItLXBhY2siIChzZXQgQlVJTERQQUNLPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQorDQoraWYgbm90IGRlZmluZWQgQlVJTERYODYgaWYgbm90IGRlZmluZWQgQlVJTERYNjQgKHNldCBCVUlMRFg4Nj0xKSAmJiAoc2V0IEJVSUxEWDY0PTEpDQorDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQorDQoraWYgZGVmaW5lZCBCVUlMRFg4NiAoDQorICAgIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWQgLWUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKyAgICBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lDQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCispDQoraWYgZGVmaW5lZCBCVUlMRFg2NCAoDQorICAgIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLXAgeDY0IC1kIC1lDQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtcCB4NjQgLWUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KKykNCisNCitpZiBkZWZpbmVkIEJVSUxERE9DICgNCisgICAgY2FsbCAiJVBDQlVJTEQlLi5cRG9jXG1ha2UuYmF0IiBodG1saGVscA0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorKQ0KKw0KK3NldCBCVUlMRF9DTUQ9IiVEJWJ1bmRsZVxzbmFwc2hvdC53aXhwcm9qIg0KK2lmIGRlZmluZWQgQlVJTERQWCAoDQorICAgIHNldCBCVUlMRF9DTUQ9JUJVSUxEX0NNRCUgL3A6VXNlVGVzdE1hcmtlcj10cnVlDQorKQ0KK2lmIGRlZmluZWQgQlVJTERQQUNLICgNCisgICAgc2V0IEJVSUxEX0NNRD0lQlVJTERfQ01EJSAvcDpQYWNrPXRydWUNCispDQorDQoraWYgZGVmaW5lZCBCVUlMRFg4NiAoDQorICAgICIlUENCVUlMRCV3aW4zMlxweXRob24uZXhlIiAiJUQlZ2V0X3dpeC5weSINCisgICAgbXNidWlsZCAlQlVJTERfQ01EJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mDQorKQ0KK2lmIGRlZmluZWQgQlVJTERYNjQgKA0KKyAgICAiJVBDQlVJTEQlYW1kNjRccHl0aG9uLmV4ZSIgIiVEJWdldF93aXgucHkiDQorICAgIG1zYnVpbGQgL3A6UGxhdGZvcm09eDY0ICVCVUlMRF9DTUQlDQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCispDQorDQorZXhpdCAvQiAwDQorDQorOkhlbHANCitlY2hvIGJ1aWxkLmJhdCBbLXg4Nl0gWy14NjRdIFstLWRvY10gWy1oXSBbLS10ZXN0LW1hcmtlcl0gWy0tcGFja10NCitlY2hvLg0KK2VjaG8gICAgLXg4NiAgICAgICAgICAgICAgICBCdWlsZCB4ODYgaW5zdGFsbGVycw0KK2VjaG8gICAgLXg2NCAgICAgICAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycw0KK2VjaG8gICAgLS1kb2MgICAgICAgICAgICAgICBCdWlsZCBDSE0gZG9jdW1lbnRhdGlvbg0KK2VjaG8gICAgLS10ZXN0LW1hcmtlciAgICAgICBCdWlsZCBpbnN0YWxsZXJzIHdpdGggJ3gnIG1hcmtlcnMNCitlY2hvICAgIC0tcGFjayAgICAgICAgICAgICAgRW1iZWQgY29yZSBNU0lzIGludG8gaW5zdGFsbGVyDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjJiYTEwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTAsMCArMSwxNjYgQEAKK0BzZXRsb2NhbA0KK0BlY2hvIG9mZg0KKw0KK3JlbSBUaGlzIHNjcmlwdCBpcyBpbnRlbmRlZCBmb3IgYnVpbGRpbmcgb2ZmaWNpYWwgcmVsZWFzZXMgb2YgUHl0aG9uLg0KK3JlbSBUbyB1c2UgaXQgdG8gYnVpbGQgYWx0ZXJuYXRpdmUgcmVsZWFzZXMsIHlvdSBzaG91bGQgY2xvbmUgdGhpcyBmaWxlDQorcmVtIGFuZCBtb2RpZnkgdGhlIGZvbGxvd2luZyB0aHJlZSBVUklzLg0KK3JlbQ0KK3JlbSBUaGUgZmlyc3QgdHdvIHdpbGwgZW5zdXJlIHRoYXQgeW91ciByZWxlYXNlIGNhbiBiZSBpbnN0YWxsZWQNCityZW0gYWxvbmdzaWRlIGFuIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlLCB3aGlsZSB0aGUgc2Vjb25kIHNwZWNpZmllcw0KK3JlbSB0aGUgVVJMIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRvd25sb2FkIGluc3RhbGxhdGlvbiBmaWxlcy4gVGhlDQorcmVtIGZpbGVzIGF2YWlsYWJsZSBmcm9tIHRoaXMgVVJMICp3aWxsKiBjb25mbGljdCB3aXRoIHlvdXIgaW5zdGFsbGVyLg0KK3JlbSBUcnVzdCBtZSwgeW91IGRvbid0IHdhbnQgdGhlbSwgZXZlbiBpZiBpdCBzZWVtcyBsaWtlIGEgZ29vZCBpZGVhLg0KKw0KK3NldCBSRUxFQVNFX1VSSV9YODY9aHR0cDovL3d3dy5weXRob24ub3JnL3dpbjMyDQorc2V0IFJFTEVBU0VfVVJJX1g2ND1odHRwOi8vd3d3LnB5dGhvbi5vcmcvYW1kNjQNCitzZXQgRE9XTkxPQURfVVJMX0JBU0U9aHR0cHM6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uDQorc2V0IERPV05MT0FEX1VSTD0NCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IEJVSUxEWDg2PQ0KK3NldCBCVUlMRFg2ND0NCitzZXQgVEFSR0VUPVJlYnVpbGQNCitzZXQgVEVTVFRBUkdFVERJUj0NCisNCisNCis6Q2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1oIiBnb3RvIEhlbHANCitpZiAiJTEiIEVRVSAiLWMiIChzZXQgQ0VSVE5BTUU9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWNlcnRpZmljYXRlIiAoc2V0IENFUlROQU1FPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLW8iIChzZXQgT1VURElSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1vdXQiIChzZXQgT1VURElSPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLUQiIChzZXQgU0tJUERPQz0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXNraXAtZG9jIiAoc2V0IFNLSVBET0M9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLUIiIChzZXQgU0tJUEJVSUxEPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tc2tpcC1idWlsZCIgKHNldCBTS0lQQlVJTEQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1kb3dubG9hZCIgKHNldCBET1dOTE9BRF9VUkw9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXRlc3QiIChzZXQgVEVTVFRBUkdFVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1iIiAoc2V0IFRBUkdFVD1CdWlsZCkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1idWlsZCIgKHNldCBUQVJHRVQ9QnVpbGQpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi14ODYiIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXg2NCIgKHNldCBCVUlMRFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KKw0KK2lmIG5vdCBkZWZpbmVkIEJVSUxEWDg2IGlmIG5vdCBkZWZpbmVkIEJVSUxEWDY0IChzZXQgQlVJTERYODY9MSkgJiYgKHNldCBCVUlMRFg2ND0xKQ0KKw0KKzpidWlsZGRvYw0KK2lmICIlU0tJUEJVSUxEJSIgRVFVICIxIiBnb3RvIHNraXBkb2MNCitpZiAiJVNLSVBET0MlIiBFUVUgIjEiIGdvdG8gc2tpcGRvYw0KKw0KK2lmIG5vdCBkZWZpbmVkIFBZVEhPTiB3aGVyZSBweSAtcSB8fCBlY2hvIENhbm5vdCBmaW5kIHB5IG9uIHBhdGggYW5kIFBZVEhPTiBpcyBub3Qgc2V0LiAmJiBleGl0IC9CIDENCitpZiBub3QgZGVmaW5lZCBTUEhJTlhCVUlMRCB3aGVyZSBzcGhpbngtYnVpbGQgLXEgfHwgZWNobyBDYW5ub3QgZmluZCBzcGhpbngtYnVpbGQgb24gcGF0aCBhbmQgU1BISU5YQlVJTEQgaXMgbm90IHNldC4gJiYgZXhpdCAvQiAxDQorY2FsbCAiJUQlLi5cLi5cZG9jXG1ha2UuYmF0IiBodG1saGVscA0KK2lmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YNCis6c2tpcGRvYw0KKw0KK3doZXJlIGhnIC9xIHx8IGVjaG8gQ2Fubm90IGZpbmQgTWVyY3VyaWFsIG9uIFBBVEggJiYgZXhpdCAvQiAxDQorDQord2hlcmUgZGxsdG9vbCAvcSAmJiBnb3RvIHNraXBkbGx0b29sc2VhcmNoDQorc2V0IF9ETExUT09MX1BBVEg9DQord2hlcmUgL1IgIiVEJS4uXC4uXGV4dGVybmFscyIgZGxsdG9vbCA+ICIlVEVNUCVcZGxsdG9vbC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgX0RMTFRPT0xfUEFUSD0gPCAiJVRFTVAlXGRsbHRvb2wubG9jIiAmIGRlbCAiJVRFTVAlXGRsbHRvb2wubG9jIiANCitpZiBub3QgZXhpc3QgIiVfRExMVE9PTF9QQVRIJSIgZWNobyBDYW5ub3QgZmluZCBiaW51dGlscyBvbiBQQVRIIG9yIGluIGV4dGVybmFsICYmIGV4aXQgL0IgMQ0KK2ZvciAlJWYgaW4gKCVfRExMVE9PTF9QQVRIJSkgZG8gc2V0IFBBVEg9JVBBVEglOyUlfmRwZg0KK3NldCBfRExMVE9PTF9QQVRIPQ0KKzpza2lwZGxsdG9vbHNlYXJjaA0KKw0KK2lmIGRlZmluZWQgQlVJTERYODYgKA0KKyAgICBjYWxsIDpidWlsZCB4ODYNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgZGVmaW5lZCBCVUlMRFg2NCAoDQorICAgIGNhbGwgOmJ1aWxkIHg2NA0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitpZiBkZWZpbmVkIFRFU1RUQVJHRVRESVIgKA0KKyAgICBjYWxsICIlRCV0ZXN0cmVsZWFzZS5iYXQiIC10ICIlVEVTVFRBUkdFVERJUiUiDQorKQ0KKw0KK2V4aXQgL0IgMA0KKw0KKzpidWlsZA0KK0BzZXRsb2NhbA0KK0BlY2hvIG9mZg0KKw0KK2lmICIlMSIgRVFVICJ4ODYiICgNCisgICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQorICAgIHNldCBCVUlMRD0lUENCVUlMRCV3aW4zMlwNCisgICAgc2V0IEJVSUxEX1BMQVQ9V2luMzINCisgICAgc2V0IE9VVERJUl9QTEFUPXdpbjMyDQorICAgIHNldCBPQkpESVJfUExBVD14ODYNCisgICAgc2V0IFJFTEVBU0VfVVJJPSVSRUxFQVNFX1VSSV9YODYlDQorKSBFTFNFICgNCisgICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2X2FtZDY0DQorICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQorICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KKyAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQorICAgIHNldCBSRUxFQVNFX1VSST0lUkVMRUFTRV9VUklfWDY0JQ0KKykNCisNCitpZiBleGlzdCAiJUJVSUxEJWVuLXVzIiAoDQorICAgIGVjaG8gRGVsZXRpbmcgJUJVSUxEJWVuLXVzDQorICAgIHJtZGlyIC9xL3MgIiVCVUlMRCVlbi11cyINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgZXhpc3QgIiVEJW9ialxSZWxlYXNlXyVPQkpESVJfUExBVCUiICgNCisgICAgZWNobyBEZWxldGluZyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCisgICAgcm1kaXIgL3EvcyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQoraWYgbm90ICIlQ0VSVE5BTUUlIiBFUVUgIiIgKA0KKyAgICBzZXQgQ0VSVE9QVFM9Ii9wOlNpZ25pbmdDZXJ0aWZpY2F0ZT0lQ0VSVE5BTUUlIg0KKykgZWxzZSAoDQorICAgIHNldCBDRVJUT1BUUz0NCispDQorDQoraWYgbm90ICIlU0tJUEJVSUxEJSIgRVFVICIxIiAoDQorICAgIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1kIC10ICVUQVJHRVQlICVDRVJUT1BUUyUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKyAgICBAcmVtIGJ1aWxkLmJhdCB0dXJucyBlY2hvIGJhY2sgb24sIHNvIHdlIGRpc2FibGUgaXQgYWdhaW4NCisgICAgQGVjaG8gb2ZmDQorKQ0KKw0KKyIlQlVJTEQlcHl0aG9uLmV4ZSIgIiVEJWdldF93aXgucHkiDQorDQorc2V0IEJVSUxET1BUUz0vcDpQbGF0Zm9ybT0lMSAvcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCitpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPWZhbHNlDQoraWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisNCittc2J1aWxkICIlRCVtYWtlX3ppcC5wcm9qIiAvdDpCdWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlDQorDQoraWYgbm90ICIlT1VURElSJSIgRVFVICIiICgNCisgICAgbWtkaXIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLmNhYiIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLmV4ZSIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLm1zaSIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorICAgIGNvcHkgL1kgIiVCVUlMRCVlbi11c1wqLm1zdSIgIiVPVVRESVIlXCVPVVRESVJfUExBVCUiDQorKQ0KKw0KK2V4aXQgL0IgMA0KKw0KKzpIZWxwDQorZWNobyBidWlsZHJlbGVhc2UuYmF0IFstLW91dCBESVJdIFsteDg2XSBbLXg2NF0gWy0tY2VydGlmaWNhdGUgQ0VSVE5BTUVdIFstLWJ1aWxkXSBbLS1za2lwLWJ1aWxkXQ0KK2VjaG8gICAgICAgICAgICAgICAgICBbLS1za2lwLWRvY10gWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0gWy1oXQ0KK2VjaG8uDQorZWNobyAgICAtLW91dCAoLW8pICAgICAgICAgIFNwZWNpZnkgYW4gYWRkaXRpb25hbCBvdXRwdXQgZGlyZWN0b3J5IGZvciBpbnN0YWxsZXJzDQorZWNobyAgICAteDg2ICAgICAgICAgICAgICAgIEJ1aWxkIHg4NiBpbnN0YWxsZXJzDQorZWNobyAgICAteDY0ICAgICAgICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCitlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCitlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCitlY2hvICAgIC0tZG93bmxvYWQgICAgICAgICAgU3BlY2lmeSB0aGUgZnVsbCBkb3dubG9hZCBVUkwgZm9yIE1TSXMgKHNob3VsZCBpbmNsdWRlIHsyfSkNCitlY2hvICAgIC0tdGVzdCAgICAgICAgICAgICAgU3BlY2lmeSB0aGUgdGVzdCBkaXJlY3RvcnkgdG8gcnVuIHRoZSBpbnN0YWxsZXIgdGVzdHMNCitlY2hvICAgIC1oICAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCitlY2hvLg0KK2VjaG8gSWYgbm8gYXJjaGl0ZWN0dXJlIGlzIHNwZWNpZmllZCwgYWxsIGFyY2hpdGVjdHVyZXMgd2lsbCBiZSBidWlsdC4NCitlY2hvIElmIC0tdGVzdCBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgaW5zdGFsbGVyIHRlc3RzIGFyZSBub3QgcnVuLg0KK2VjaG8uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobSBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxOWJlYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KQEAgLTAsMCArMSwxMzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8VGhlbWUgeG1sbnM9Imh0dHA6Ly93aXh0b29sc2V0Lm9yZy9zY2hlbWFzL3RobXV0aWwvMjAxMCI+CisgICAgPFdpbmRvdyBXaWR0aD0iNjQwIiBIZWlnaHQ9IjM4MiIgSGV4U3R5bGU9IjEwMGEwMDAwIiBGb250SWQ9IjAiPiMobG9jLkNhcHRpb24pPC9XaW5kb3c+CisgICAgPEZvbnQgSWQ9IjAiIEhlaWdodD0iLTEyIiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSIxIiBIZWlnaHQ9Ii0yNCIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9IjAwMDAwMCIgQmFja2dyb3VuZD0iZmZmZmZmIj5TZWdvZSBVSTwvRm9udD4KKyAgICA8Rm9udCBJZD0iMiIgSGVpZ2h0PSItMjIiIFdlaWdodD0iNTAwIiBGb3JlZ3JvdW5kPSI4MDgwODAiIEJhY2tncm91bmQ9ImZmZmZmZiI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjMiIEhlaWdodD0iLTEyIiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iMDAwMDAwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorICAgIDxGb250IElkPSI0IiBIZWlnaHQ9Ii0xMiIgV2VpZ2h0PSI1MDAiIEZvcmVncm91bmQ9ImZmMDAwMCIgQmFja2dyb3VuZD0iZmZmZmZmIiBVbmRlcmxpbmU9InllcyI+U2Vnb2UgVUk8L0ZvbnQ+CisgICAgPEZvbnQgSWQ9IjUiIEhlaWdodD0iLTEyIiBXZWlnaHQ9IjUwMCIgRm9yZWdyb3VuZD0iODA4MDgwIiBCYWNrZ3JvdW5kPSJmZmZmZmYiPlNlZ29lIFVJPC9Gb250PgorCisgICAgPFBhZ2UgTmFtZT0iSGVscCI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5IZWxwSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNjIiIEhlaWdodD0iMzUyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPEh5cGVydGV4dCBYPSIxODUiIFk9IjUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9Ii0zNSIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLkhlbHBUZXh0KTwvSHlwZXJ0ZXh0PgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iSW5zdGFsbCI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5JbnN0YWxsSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNjIiIEhlaWdodD0iMzUyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisKKyAgICAgICAgPFRleHQgWD0iMTg1IiBZPSI1MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1MCIgRm9udElkPSIzIiBUYWJTdG9wPSJ5ZXMiPiMobG9jLkluc3RhbGxNZXNzYWdlKTwvVGV4dD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxCdXR0b24iIFg9IjE3NSIgWT0iMTAxIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjEwOSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiPiMobG9jLkluc3RhbGxCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbEN1c3RvbUJ1dHRvbiIgWD0iMTc1IiBZPSIyMjEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIj4jKGxvYy5JbnN0YWxsQ3VzdG9tQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxDaGVja2JveCBOYW1lPSJQcmVwZW5kUGF0aCIgWD0iMTg1IiBZPSItMTMiIFdpZHRoPSItMTAwIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyI+Iyhsb2MuU2hvcnRQcmVwZW5kUGF0aExhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxDaGVja2JveCBOYW1lPSJJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIgWD0iMTg1IiBZPSItMzMiIFdpZHRoPSItMTAwIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TaG9ydEluc3RhbGxMYXVuY2hlckFsbFVzZXJzTGFiZWwpPC9DaGVja2JveD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9IlVwZ3JhZGUiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjMyIiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuSW5zdGFsbFVwZ3JhZGVIZWFkZXIpPC9UZXh0PgorICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE2MiIgSGVpZ2h0PSIzNTIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KKworICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjUwIiBGb250SWQ9IjMiIFRhYlN0b3A9InllcyI+Iyhsb2MuSW5zdGFsbFVwZ3JhZGVNZXNzYWdlKTwvVGV4dD4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxVcGdyYWRlQnV0dG9uIiBYPSIxNzUiIFk9IjEwMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIxMjkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIj4jKGxvYy5JbnN0YWxsVXBncmFkZUJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJJbnN0YWxsVXBncmFkZUN1c3RvbUJ1dHRvbiIgWD0iMTc1IiBZPSIyNDEiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIj4jKGxvYy5JbnN0YWxsVXBncmFkZUN1c3RvbUJ1dHRvbik8L0J1dHRvbj4KKworICAgICAgICA8QnV0dG9uIE5hbWU9Ikluc3RhbGxDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iNzUiIEhlaWdodD0iMjMiIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DYW5jZWxCdXR0b24pPC9CdXR0b24+CisgICAgPC9QYWdlPgorICAgIDxQYWdlIE5hbWU9IlNpbXBsZUluc3RhbGwiPgorICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjMyIiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuSW5zdGFsbEhlYWRlcik8L1RleHQ+CisgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTYyIiBIZWlnaHQ9IjM1MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbFNpbXBsZUJ1dHRvbiIgWD0iMTc1IiBZPSIxMDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMTI5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIiBIZXhTdHlsZT0iMHhGIj4jKGxvYy5JbnN0YWxsU2ltcGxlQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxCdXR0b24gTmFtZT0iSW5zdGFsbENhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI3NSIgSGVpZ2h0PSIyMyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNhbmNlbEJ1dHRvbik8L0J1dHRvbj4KKyAgICA8L1BhZ2U+CisgICAgPFBhZ2UgTmFtZT0iQ3VzdG9tMSI+CisgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzIiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5DdXN0b20xSGVhZGVyKTwvVGV4dD4KKyAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNjIiIEhlaWdodD0iMzUyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV9kb2MiIFg9IjE4NSIgWT0iNTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkluY2x1ZGVfZG9jTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPFRleHQgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV9kb2NIZWxwTGFiZWwpPC9UZXh0PgorICAgICAgICAKKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkluY2x1ZGVfcGlwIiBYPSIxODUiIFk9Ijk2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX3BpcExhYmVsKTwvQ2hlY2tib3g+CisgICAgICAgIDxUZXh0IFg9IjIwNSIgWT0iMTE2IiBXaWR0aD0iLTExIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJubyIgRm9udElkPSI1Ij4jKGxvYy5JbmNsdWRlX3BpcEhlbHBMYWJlbCk8L1RleHQ+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV90Y2x0ayIgWD0iMTg1IiBZPSIxNDEiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLkluY2x1ZGVfdGNsdGtMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjE2MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+Iyhsb2MuSW5jbHVkZV90Y2x0a0hlbHBMYWJlbCk8L1RleHQ+CisgICAgICAgIAorICAgICAgICA8Q2hlY2tib3ggTmFtZT0iSW5jbHVkZV90ZXN0IiBYPSIxODUiIFk9IjE4NiIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5jbHVkZV90ZXN0TGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPFRleHQgWD0iMjA1IiBZPSIyMDYiIFdpZHRoPSItMTEiIEhlaWdodD0iMjAiIFRhYlN0b3A9Im5vIiBGb250SWQ9IjUiPiMobG9jLkluY2x1ZGVfdGVzdEhlbHBMYWJlbCk8L1RleHQ+CisKKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkluY2x1ZGVfbGF1bmNoZXIiIFg9IjE4NSIgWT0iMjMxIiBXaWR0aD0iMTAwIiBIZWlnaHQ9IjIwIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5JbmNsdWRlX2xhdW5jaGVyTGFiZWwpPC9DaGVja2JveD4KKyAgICAgICAgPENoZWNrYm94IE5hbWU9IkN1c3RvbUluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBYPSIyODUiIFk9IjIzMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNMYWJlbCk8L0NoZWNrYm94PgorICAgICAgICA8VGV4dCBYPSIyMDUiIFk9IjI1MSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIyMCIgVGFiU3RvcD0ibm8iIEZvbnRJZD0iNSI+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bCBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FmOTA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKQEAgLTAsMCArMSwxMjMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiBMYW5ndWFnZT0iMTAzMyIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvbG9jYWxpemF0aW9uIj4KKyAgPFN0cmluZyBJZD0iQ2FwdGlvbiI+W1dpeEJ1bmRsZU5hbWVdIFNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlRpdGxlIj5bV2l4QnVuZGxlTmFtZV08L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbGluZyI+SW5zdGFsbGluZzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsYXRpb24iPlNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeWluZyI+VXBkYXRpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZpY2F0aW9uIj5Nb2RpZnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyaW5nIj5SZXBhaXJpbmc8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUmVwYWlyIj5SZXBhaXI8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iVW5pbnN0YWxsaW5nIj5SZW1vdmluZzwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJVbmluc3RhbGxhdGlvbiI+VW5pbnN0YWxsPC9TdHJpbmc+CisgIAorICA8U3RyaW5nIElkPSJFbGV2YXRlRm9yQ1JUSW5zdGFsbCI+WW91IHdpbGwgYmUgcHJvbXB0ZWQgZm9yIEFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyB0byBpbnN0YWxsIGEgQyBSdW50aW1lIExpYnJhcnkgdXBkYXRlIChLQjI5OTkyMjYpLgorCisKK0NvbnRpbnVlPzwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iQ2FuY2VsQnV0dG9uIj4mYW1wO0NhbmNlbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDbG9zZUJ1dHRvbiI+JmFtcDtDbG9zZTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsSGVhZGVyIj5JbnN0YWxsIFtXaXhCdW5kbGVOYW1lXTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsTWVzc2FnZSI+U2VsZWN0IEluc3RhbGwgTm93IHRvIGluc3RhbGwgUHl0aG9uIHdpdGggZGVmYXVsdCBzZXR0aW5ncywgb3IgY2hvb3NlIEN1c3RvbWl6ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFZlcnNpb24iPlZlcnNpb24gW1dpeEJ1bmRsZVZlcnNpb25dPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlSGVhZGVyIj5VcGdyYWRlIHRvIFtXaXhCdW5kbGVOYW1lXTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsVXBncmFkZU1lc3NhZ2UiPlNlbGVjdCBVcGdyYWRlIE5vdyB0byBrZWVwIHlvdXIgY3VycmVudCBzZXR0aW5ncywgb3IgY2hvb3NlIEN1c3RvbWl6ZSB0byBlbmFibGUgb3IgZGlzYWJsZSBmZWF0dXJlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ29uZmlybUNhbmNlbE1lc3NhZ2UiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkV4ZWN1dGVVcGdyYWRlUmVsYXRlZEJ1bmRsZU1lc3NhZ2UiPlByZXZpb3VzIHZlcnNpb248L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSGVscEhlYWRlciI+U2V0dXAgSGVscDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJIZWxwVGV4dCI+VmlzaXQgJmx0O2EgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy9bU2hvcnRWZXJzaW9uXS91c2luZy93aW5kb3dzLmh0bWwiJmd0O2RvY3MucHl0aG9uLm9yZy9bU2hvcnRWZXJzaW9uXS91c2luZy93aW5kb3dzLmh0bWwmbHQ7L2EmZ3Q7IGZvciB0aGUgZnVsbCBsaXN0IG9mIG9wdGlvbnMsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byBlbmFibGUgYW5kIGRpc2FibGUgc3BlY2lmaWMgZmVhdHVyZXMuCisKKyIvcGFzc2l2ZSIgdG8gZGlzcGxheSBwcm9ncmVzcyB3aXRob3V0IHJlcXVpcmluZyB1c2VyIGludGVyYWN0aW9uCisKKyIvcXVpZXQiIHRvIGluc3RhbGwvdW5pbnN0YWxsIHdpdGhvdXQgZGlzcGxheWluZyBhbnkgVUkKKworIi9zaW1wbGUiIHRvIHByZXZlbnQgdXNlciBjdXN0b21pemF0aW9uCisKKyIvdW5pbnN0YWxsIiB0byByZW1vdmUgUHl0aG9uICh3aXRob3V0IGNvbmZpcm1hdGlvbikKKworIi9sYXlvdXQgW1xbXWRpcmVjdG9yeVtcXV0iIHRvIHByZS1kb3dubG9hZCBhbGwgY29tcG9uZW50cworCisiL2xvZyBbXFtdZmlsZW5hbWVbXF1dIiB0byBzcGVjaWZ5IGxvZyBmaWxlcyBsb2NhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsTGljZW5zZUxpbmtUZXh0Ij5bV2l4QnVuZGxlTmFtZV0gJmx0O2EgaHJlZj0iIyImZ3Q7bGljZW5zZSB0ZXJtcyZsdDsvYSZndDsuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxBY2NlcHRDaGVja2JveCI+SSAmYW1wO2FncmVlIHRvIHRoZSBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxCdXR0b24iPiZhbXA7SW5zdGFsbCBOb3c8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEJ1dHRvbk5vdGUiPltEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyXQorCitJbmNsdWRlcyBJRExFLCBwaXAgYW5kIGRvY3VtZW50YXRpb24KK0NyZWF0ZXMgc2hvcnRjdXRzIGFuZCBmaWxlIGFzc29jaWF0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsQ3VzdG9tQnV0dG9uIj5DJmFtcDt1c3RvbWl6ZSBpbnN0YWxsYXRpb248L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEN1c3RvbUJ1dHRvbk5vdGUiPkNob29zZSBsb2NhdGlvbiBhbmQgZmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFNpbXBsZUJ1dHRvbiI+JmFtcDtJbnN0YWxsPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxTaW1wbGVCdXR0b25Ob3RlIj5Vc2Ugc2V0dGluZ3MgcHJlc2VsZWN0ZWQgYnkgeW91ciBhZG1pbmlzdHJhdG9yCisKK1tTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb25dPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlQnV0dG9uIj4mYW1wO1VwZ3JhZGUgTm93PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxVcGdyYWRlQnV0dG9uTm90ZSI+W1RhcmdldERpcl0KKworUmVwbGFjZXMgeW91ciBleGlzdGluZyBpbnN0YWxsYXRpb24gd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KK1NlbGVjdCBDdXN0b21pemUgdG8gcmV2aWV3IGN1cnJlbnQgb3B0aW9ucy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbFVwZ3JhZGVDdXN0b21CdXR0b24iPkMmYW1wO3VzdG9taXplIGluc3RhbGxhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbnN0YWxsVXBncmFkZUN1c3RvbUJ1dHRvbk5vdGUiPkNob29zZSBsb2NhdGlvbiBhbmQgZmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tMUhlYWRlciI+T3B0aW9uYWwgRmVhdHVyZXM8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tMkhlYWRlciI+QWR2YW5jZWQgT3B0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Mb2NhdGlvbkxhYmVsIj5DdXN0b21pemUgaW5zdGFsbCBsb2NhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Mb2NhdGlvbkhlbHBMYWJlbCI+WW91IHdpbGwgcmVxdWlyZSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHNlbGVjdGVkIGxvY2F0aW9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21JbnN0YWxsQnV0dG9uIj4mYW1wO0luc3RhbGw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iQ3VzdG9tTmV4dEJ1dHRvbiI+JmFtcDtOZXh0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkN1c3RvbUJhY2tCdXR0b24iPiZhbXA7QmFjazwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDdXN0b21Ccm93c2VCdXR0b24iPkImYW1wO3Jvd3NlPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfZG9jTGFiZWwiPiZhbXA7RG9jdW1lbnRhdGlvbjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX2RvY0hlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZpbGUuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfcGlwTGFiZWwiPiZhbXA7cGlwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfcGlwSGVscExhYmVsIj5JbnN0YWxscyBwaXAsIHdoaWNoIGNhbiBkb3dubG9hZCBhbmQgaW5zdGFsbCBvdGhlciBQeXRob24gcGFja2FnZXMuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGNsdGtMYWJlbCI+dGNsL3RrIGFuZCAmYW1wO0lETEU8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV90Y2x0a0hlbHBMYWJlbCI+SW5zdGFsbHMgdGtpbnRlciBhbmQgdGhlIElETEUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGVzdExhYmVsIj5QeXRob24gJmFtcDt0ZXN0IHN1aXRlPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfdGVzdEhlbHBMYWJlbCI+SW5zdGFsbHMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdGVzdCBzdWl0ZS48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5jbHVkZV9sYXVuY2hlckxhYmVsIj5weSAmYW1wO2xhdW5jaGVyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfbGF1bmNoZXJIZWxwTGFiZWwiPkluc3RhbGxzIHRoZSBnbG9iYWwgJ3B5JyBsYXVuY2hlciB0byBtYWtlIGl0IGVhc2llciB0byBzdGFydCBQeXRob24uPC9TdHJpbmc+CisgIAorICA8U3RyaW5nIElkPSJBc3NvY2lhdGVGaWxlc0xhYmVsIj5Bc3NvY2lhdGUgJmFtcDtmaWxlcyB3aXRoIFB5dGhvbiAocmVxdWlyZXMgdGhlIHB5IGxhdW5jaGVyKTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTaG9ydGN1dHNMYWJlbCI+Q3JlYXRlIHNob3J0Y3V0cyBmb3IgaW5zdGFsbGVkIGFwcGxpY2F0aW9uczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJQcmVwZW5kUGF0aExhYmVsIj5BZGQgUHl0aG9uIHRvICZhbXA7ZW52aXJvbm1lbnQgdmFyaWFibGVzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlNob3J0UHJlcGVuZFBhdGhMYWJlbCI+QWRkICZhbXA7UHl0aG9uIFtTaG9ydFZlcnNpb25dIHRvIFBBVEg8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iSW5zdGFsbEFsbFVzZXJzTGFiZWwiPkluc3RhbGwgZm9yICZhbXA7YWxsIHVzZXJzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzTGFiZWwiPmZvciAmYW1wO2FsbCB1c2VycyAocmVxdWlyZXMgZWxldmF0aW9uKTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTaG9ydEluc3RhbGxMYXVuY2hlckFsbFVzZXJzTGFiZWwiPkluc3RhbGwgJmFtcDtsYXVuY2hlciBmb3IgYWxsIHVzZXJzIChyZWNvbW1lbmRlZCk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iUHJlY29tcGlsZUxhYmVsIj4mYW1wO1ByZWNvbXBpbGUgc3RhbmRhcmQgbGlicmFyeTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJJbmNsdWRlX3N5bWJvbHNMYWJlbCI+SW5zdGFsbCBkZWJ1Z2dpbmcgJmFtcDtzeW1ib2xzPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkluY2x1ZGVfZGVidWdMYWJlbCI+SW5zdGFsbCBkZWJ1JmFtcDtnIGJpbmFyaWVzIChyZXF1aXJlcyBWUyAyMDE1IG9yIGxhdGVyKTwvU3RyaW5nPgorICAKKyAgPFN0cmluZyBJZD0iUHJvZ3Jlc3NIZWFkZXIiPltBY3Rpb25MaWtlSW5zdGFsbGF0aW9uXSBQcm9ncmVzczwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJQcm9ncmVzc0xhYmVsIj5bQWN0aW9uTGlrZUluc3RhbGxpbmddOjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJPdmVyYWxsUHJvZ3Jlc3NQYWNrYWdlVGV4dCI+SW5pdGlhbGl6aW5nLi4uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeUhlYWRlciI+TW9kaWZ5IFNldHVwPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9Ik1vZGlmeU1vZGlmeUJ1dHRvbiI+JmFtcDtNb2RpZnk8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5QnV0dG9uTm90ZSI+QWRkIG9yIHJlbW92ZSBpbmRpdmlkdWFsIGZlYXR1cmVzLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJNb2RpZnlSZXBhaXJCdXR0b24iPiZhbXA7UmVwYWlyPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlJlcGFpckJ1dHRvbk5vdGUiPkVuc3VyZSBhbGwgY3VycmVudCBmZWF0dXJlcyBhcmUgY29ycmVjdGx5IGluc3RhbGxlZC48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iTW9kaWZ5VW5pbnN0YWxsQnV0dG9uIj4mYW1wO1VuaW5zdGFsbDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJVbmluc3RhbGxCdXR0b25Ob3RlIj5SZW1vdmUgdGhlIGVudGlyZSBbV2l4QnVuZGxlTmFtZV0gaW5zdGFsbGF0aW9uLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzSGVhZGVyIj5bQWN0aW9uTGlrZUluc3RhbGxhdGlvbl0gd2FzIHN1Y2Nlc3NmdWw8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc0xhdW5jaEJ1dHRvbiI+JmFtcDtMYXVuY2g8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1Jlc3RhcnRUZXh0Ij5Zb3UgbWF5IG5lZWQgdG8gcmVzdGFydCB5b3VyIGNvbXB1dGVyIHRvIGZpbmlzaCB1cGRhdGluZyBmaWxlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1Jlc3RhcnRCdXR0b24iPiZhbXA7UmVzdGFydDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzSW5zdGFsbE1lc3NhZ2UiPlNwZWNpYWwgdGhhbmtzIHRvIE1hcmsgSGFtbW9uZCwgd2l0aG91dCB3aG9zZSB5ZWFycyBvZiBmcmVlbHkgc2hhcmVkIFdpbmRvd3MgZXhwZXJ0aXNlLCBQeXRob24gZm9yIFdpbmRvd3Mgd291bGQgc3RpbGwgYmUgUHl0aG9uIGZvciBET1MuCisKK05ldyB0byBQeXRob24/IFN0YXJ0IHdpdGggdGhlICZsdDthIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnL1tTaG9ydFZlcnNpb25dL3R1dG9yaWFsL2luZGV4Lmh0bWwiJmd0O29ubGluZSB0dXRvcmlhbCZsdDsvYSZndDsgYW5kICZsdDthIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnL1tTaG9ydFZlcnNpb25dL2luZGV4Lmh0bWwiJmd0O2RvY3VtZW50YXRpb24mbHQ7L2EmZ3Q7LgorCitTZWUgJmx0O2EgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvW1Nob3J0VmVyc2lvbl0vd2hhdHNuZXcvW1Nob3J0VmVyc2lvbl0uaHRtbCImZ3Q7d2hhdCdzIG5ldyZsdDsvYSZndDsgaW4gdGhpcyByZWxlYXNlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzTW9kaWZ5TWVzc2FnZSI+VGhhbmsgeW91IGZvciB1c2luZyBbV2l4QnVuZGxlTmFtZV0uPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NSZXBhaXJNZXNzYWdlIj5UaGFuayB5b3UgZm9yIHVzaW5nIFtXaXhCdW5kbGVOYW1lXS4KKworRmVlbCBmcmVlIHRvIGVtYWlsICZsdDthIGhyZWY9Im1haWx0bzpweXRob24tbGlzdEBweXRob24ub3JnIiZndDtweXRob24tbGlzdEBweXRob24ub3JnJmx0Oy9hJmd0OyBpZiB5b3UgY29udGludWUgdG8gZW5jb3VudGVyIGlzc3Vlcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc1JlbW92ZU1lc3NhZ2UiPlRoYW5rIHlvdSBmb3IgdXNpbmcgW1dpeEJ1bmRsZU5hbWVdLgorCitGZWVsIGZyZWUgdG8gZW1haWwgJmx0O2EgaHJlZj0ibWFpbHRvOnB5dGhvbi1saXN0QHB5dGhvbi5vcmciJmd0O3B5dGhvbi1saXN0QHB5dGhvbi5vcmcmbHQ7L2EmZ3Q7IGlmIHlvdSBlbmNvdW50ZXJlZCBwcm9ibGVtcy48L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iRmFpbHVyZUhlYWRlciI+U2V0dXAgZmFpbGVkPC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVIeXBlcmxpbmtMb2dUZXh0Ij5PbmUgb3IgbW9yZSBpc3N1ZXMgY2F1c2VkIHRoZSBzZXR1cCB0byBmYWlsLiBQbGVhc2UgZml4IHRoZSBpc3N1ZXMgYW5kIHRoZW4gcmV0cnkgc2V0dXAuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgJmx0O2EgaHJlZj0iIyImZ3Q7bG9nIGZpbGUmbHQ7L2EmZ3Q7LjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlUmVzdGFydFRleHQiPllvdSBtdXN0IHJlc3RhcnQgeW91ciBjb21wdXRlciB0byBjb21wbGV0ZSB0aGUgcm9sbGJhY2sgb2YgdGhlIHNvZnR3YXJlLjwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJGYWlsdXJlUmVzdGFydEJ1dHRvbiI+JmFtcDtSZXN0YXJ0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IkZhaWx1cmVFeGlzdGluZ0luc3RhbGwiPlVuYWJsZSB0byBpbnN0YWxsIFtXaXhCdW5kbGVOYW1lXSBkdWUgdG8gYW4gZXhpc3RpbmcgaW5zdGFsbC4gVXNlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyB0byBtb2RpZnksIHJlcGFpciBvciByZW1vdmUgW1dpeEJ1bmRsZU5hbWVdLjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL1NpZGVCYXIucG5nIGIvVG9vbHMvbXNpL2J1bmRsZS9TaWRlQmFyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzE4ZmZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9TaWRlQmFyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9MSUNFTlNFLnR4dCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL0xJQ0VOU0UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OTFhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9MSUNFTlNFLnR4dApAQCAtMCwwICsxLDI1IEBACitUaGlzIGxpY2Vuc2UgYXBwbGllcyB0byB0aGUgYm9vdHN0cmFwcGVyIGFwcGxpY2F0aW9uIHRoYXQgaXMgZW1iZWRkZWQgd2l0aGluIHRoZSBpbnN0YWxsZXIuIEl0IGhhcyBubyBpbXBhY3Qgb24gdGhlIGxpY2Vuc2luZyBmb3IgdGhlIHJlc3Qgb2YgdGhlIGluc3RhbGxlciBvciBQeXRob24gaXRzZWxmLCBhcyBubyBjb2RlIGNvdmVyZWQgYnkgdGhpcyBsaWNlbnNlIGV4aXN0cyBpbiBhbnkgb3RoZXIgcGFydCBvZiB0aGUgcHJvZHVjdC4KKworLS0tCisKK01pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKQorCitUaGlzIGxpY2Vuc2UgZ292ZXJucyB1c2Ugb2YgdGhlIGFjY29tcGFueWluZyBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGUgc29mdHdhcmUsIHlvdSBhY2NlcHQgdGhpcyBsaWNlbnNlLiBJZiB5b3UgZG8gbm90IGFjY2VwdCB0aGUgbGljZW5zZSwgZG8gbm90IHVzZSB0aGUgc29mdHdhcmUuCisKKzEuIERlZmluaXRpb25zCisgVGhlIHRlcm1zICJyZXByb2R1Y2UsIiAicmVwcm9kdWN0aW9uLCIgImRlcml2YXRpdmUgd29ya3MsIiBhbmQgImRpc3RyaWJ1dGlvbiIgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGhlcmUgYXMgdW5kZXIgVS5TLiBjb3B5cmlnaHQgbGF3LgorIEEgImNvbnRyaWJ1dGlvbiIgaXMgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLCBvciBhbnkgYWRkaXRpb25zIG9yIGNoYW5nZXMgdG8gdGhlIHNvZnR3YXJlLgorIEEgImNvbnRyaWJ1dG9yIiBpcyBhbnkgcGVyc29uIHRoYXQgZGlzdHJpYnV0ZXMgaXRzIGNvbnRyaWJ1dGlvbiB1bmRlciB0aGlzIGxpY2Vuc2UuCisgIkxpY2Vuc2VkIHBhdGVudHMiIGFyZSBhIGNvbnRyaWJ1dG9yJ3MgcGF0ZW50IGNsYWltcyB0aGF0IHJlYWQgZGlyZWN0bHkgb24gaXRzIGNvbnRyaWJ1dGlvbi4KKworMi4gR3JhbnQgb2YgUmlnaHRzCisgKEEpIENvcHlyaWdodCBHcmFudC0gU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBsaWNlbnNlLCBpbmNsdWRpbmcgdGhlIGxpY2Vuc2UgY29uZGl0aW9ucyBhbmQgbGltaXRhdGlvbnMgaW4gc2VjdGlvbiAzLCBlYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UgaXRzIGNvbnRyaWJ1dGlvbiwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzIG9mIGl0cyBjb250cmlidXRpb24sIGFuZCBkaXN0cmlidXRlIGl0cyBjb250cmlidXRpb24gb3IgYW55IGRlcml2YXRpdmUgd29ya3MgdGhhdCB5b3UgY3JlYXRlLgorIChCKSBQYXRlbnQgR3JhbnQtIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgbGljZW5zZSwgaW5jbHVkaW5nIHRoZSBsaWNlbnNlIGNvbmRpdGlvbnMgYW5kIGxpbWl0YXRpb25zIGluIHNlY3Rpb24gMywgZWFjaCBjb250cmlidXRvciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgbGljZW5zZSB1bmRlciBpdHMgbGljZW5zZWQgcGF0ZW50cyB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCwgYW5kL29yIG90aGVyd2lzZSBkaXNwb3NlIG9mIGl0cyBjb250cmlidXRpb24gaW4gdGhlIHNvZnR3YXJlIG9yIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIGNvbnRyaWJ1dGlvbiBpbiB0aGUgc29mdHdhcmUuCisKKzMuIENvbmRpdGlvbnMgYW5kIExpbWl0YXRpb25zCisgKEEpIFJlY2lwcm9jYWwgR3JhbnRzLSBGb3IgYW55IGZpbGUgeW91IGRpc3RyaWJ1dGUgdGhhdCBjb250YWlucyBjb2RlIGZyb20gdGhlIHNvZnR3YXJlIChpbiBzb3VyY2UgY29kZSBvciBiaW5hcnkgZm9ybWF0KSwgeW91IG11c3QgcHJvdmlkZSByZWNpcGllbnRzIHRoZSBzb3VyY2UgY29kZSB0byB0aGF0IGZpbGUgYWxvbmcgd2l0aCBhIGNvcHkgb2YgdGhpcyBsaWNlbnNlLCB3aGljaCBsaWNlbnNlIHdpbGwgZ292ZXJuIHRoYXQgZmlsZS4gWW91IG1heSBsaWNlbnNlIG90aGVyIGZpbGVzIHRoYXQgYXJlIGVudGlyZWx5IHlvdXIgb3duIHdvcmsgYW5kIGRvIG5vdCBjb250YWluIGNvZGUgZnJvbSB0aGUgc29mdHdhcmUgdW5kZXIgYW55IHRlcm1zIHlvdSBjaG9vc2UuCisgKEIpIE5vIFRyYWRlbWFyayBMaWNlbnNlLSBUaGlzIGxpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgeW91IHJpZ2h0cyB0byB1c2UgYW55IGNvbnRyaWJ1dG9ycycgbmFtZSwgbG9nbywgb3IgdHJhZGVtYXJrcy4KKyAoQykgSWYgeW91IGJyaW5nIGEgcGF0ZW50IGNsYWltIGFnYWluc3QgYW55IGNvbnRyaWJ1dG9yIG92ZXIgcGF0ZW50cyB0aGF0IHlvdSBjbGFpbSBhcmUgaW5mcmluZ2VkIGJ5IHRoZSBzb2Z0d2FyZSwgeW91ciBwYXRlbnQgbGljZW5zZSBmcm9tIHN1Y2ggY29udHJpYnV0b3IgdG8gdGhlIHNvZnR3YXJlIGVuZHMgYXV0b21hdGljYWxseS4KKyAoRCkgSWYgeW91IGRpc3RyaWJ1dGUgYW55IHBvcnRpb24gb2YgdGhlIHNvZnR3YXJlLCB5b3UgbXVzdCByZXRhaW4gYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZCBhdHRyaWJ1dGlvbiBub3RpY2VzIHRoYXQgYXJlIHByZXNlbnQgaW4gdGhlIHNvZnR3YXJlLgorIChFKSBJZiB5b3UgZGlzdHJpYnV0ZSBhbnkgcG9ydGlvbiBvZiB0aGUgc29mdHdhcmUgaW4gc291cmNlIGNvZGUgZm9ybSwgeW91IG1heSBkbyBzbyBvbmx5IHVuZGVyIHRoaXMgbGljZW5zZSBieSBpbmNsdWRpbmcgYSBjb21wbGV0ZSBjb3B5IG9mIHRoaXMgbGljZW5zZSB3aXRoIHlvdXIgZGlzdHJpYnV0aW9uLiBJZiB5b3UgZGlzdHJpYnV0ZSBhbnkgcG9ydGlvbiBvZiB0aGUgc29mdHdhcmUgaW4gY29tcGlsZWQgb3Igb2JqZWN0IGNvZGUgZm9ybSwgeW91IG1heSBvbmx5IGRvIHNvIHVuZGVyIGEgbGljZW5zZSB0aGF0IGNvbXBsaWVzIHdpdGggdGhpcyBsaWNlbnNlLgorIChGKSBUaGUgc29mdHdhcmUgaXMgbGljZW5zZWQgImFzLWlzLiIgWW91IGJlYXIgdGhlIHJpc2sgb2YgdXNpbmcgaXQuIFRoZSBjb250cmlidXRvcnMgZ2l2ZSBubyBleHByZXNzIHdhcnJhbnRpZXMsIGd1YXJhbnRlZXMgb3IgY29uZGl0aW9ucy4gWW91IG1heSBoYXZlIGFkZGl0aW9uYWwgY29uc3VtZXIgcmlnaHRzIHVuZGVyIHlvdXIgbG9jYWwgbGF3cyB3aGljaCB0aGlzIGxpY2Vuc2UgY2Fubm90IGNoYW5nZS4gVG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgdW5kZXIgeW91ciBsb2NhbCBsYXdzLCB0aGUgY29udHJpYnV0b3JzIGV4Y2x1ZGUgdGhlIGltcGxpZWQgd2FycmFudGllcyBvZiBtZXJjaGFudGFiaWxpdHksIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlIGFuZCBub24taW5mcmluZ2VtZW50LgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZWQyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwzMTYyIEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0iV2l4U3RhbmRhcmRCb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisjaW5jbHVkZSAicGNoLmgiCisKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfV0lORE9XX0NMQVNTID0gTCJQeXRob25CQSI7CitzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCA9IEwiTGF1bmNoVGFyZ2V0IjsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCA9IEwiTGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCI7CitzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMgPSBMIkxhdW5jaEFyZ3VtZW50cyI7CitzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4gPSBMIkxhdW5jaEhpZGRlbiI7CitzdGF0aWMgY29uc3QgRFdPUkQgUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgPSAzMDsKK3N0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiA9IEwiV2l4QnVuZGxlRmlsZVZlcnNpb24iOworCitlbnVtIFBZQkFfU1RBVEUgeworICAgIFBZQkFfU1RBVEVfSU5JVElBTElaSU5HLAorICAgIFBZQkFfU1RBVEVfSU5JVElBTElaRUQsCisgICAgUFlCQV9TVEFURV9IRUxQLAorICAgIFBZQkFfU1RBVEVfREVURUNUSU5HLAorICAgIFBZQkFfU1RBVEVfREVURUNURUQsCisgICAgUFlCQV9TVEFURV9QTEFOTklORywKKyAgICBQWUJBX1NUQVRFX1BMQU5ORUQsCisgICAgUFlCQV9TVEFURV9BUFBMWUlORywKKyAgICBQWUJBX1NUQVRFX0NBQ0hJTkcsCisgICAgUFlCQV9TVEFURV9DQUNIRUQsCisgICAgUFlCQV9TVEFURV9FWEVDVVRJTkcsCisgICAgUFlCQV9TVEFURV9FWEVDVVRFRCwKKyAgICBQWUJBX1NUQVRFX0FQUExJRUQsCisgICAgUFlCQV9TVEFURV9GQUlMRUQsCit9OworCitzdGF0aWMgY29uc3QgaW50IFdNX1BZQkFfU0hPV19IRUxQID0gV01fQVBQICsgMTAwOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX0RFVEVDVF9QQUNLQUdFUyA9IFdNX0FQUCArIDEwMTsKK3N0YXRpYyBjb25zdCBpbnQgV01fUFlCQV9QTEFOX1BBQ0tBR0VTID0gV01fQVBQICsgMTAyOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX0FQUExZX1BBQ0tBR0VTID0gV01fQVBQICsgMTAzOworc3RhdGljIGNvbnN0IGludCBXTV9QWUJBX0NIQU5HRV9TVEFURSA9IFdNX0FQUCArIDEwNDsKK3N0YXRpYyBjb25zdCBpbnQgV01fUFlCQV9TSE9XX0ZBSUxVUkUgPSBXTV9BUFAgKyAxMDU7CisKKy8vIFRoaXMgZW51bSBtdXN0IGJlIGtlcHQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIFBBR0VfTkFNRVMgYXJyYXkuCitlbnVtIFBBR0UgeworICAgIFBBR0VfTE9BRElORywKKyAgICBQQUdFX0hFTFAsCisgICAgUEFHRV9JTlNUQUxMLAorICAgIFBBR0VfVVBHUkFERSwKKyAgICBQQUdFX1NJTVBMRV9JTlNUQUxMLAorICAgIFBBR0VfQ1VTVE9NMSwKKyAgICBQQUdFX0NVU1RPTTIsCisgICAgUEFHRV9NT0RJRlksCisgICAgUEFHRV9QUk9HUkVTUywKKyAgICBQQUdFX1BST0dSRVNTX1BBU1NJVkUsCisgICAgUEFHRV9TVUNDRVNTLAorICAgIFBBR0VfRkFJTFVSRSwKKyAgICBDT1VOVF9QQUdFLAorfTsKKworLy8gVGhpcyBhcnJheSBtdXN0IGJlIGtlcHQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIFBBR0UgZW51bS4KK3N0YXRpYyBMUENXU1RSIFBBR0VfTkFNRVNbXSA9IHsKKyAgICBMIkxvYWRpbmciLAorICAgIEwiSGVscCIsCisgICAgTCJJbnN0YWxsIiwKKyAgICBMIlVwZ3JhZGUiLAorICAgIEwiU2ltcGxlSW5zdGFsbCIsCisgICAgTCJDdXN0b20xIiwKKyAgICBMIkN1c3RvbTIiLAorICAgIEwiTW9kaWZ5IiwKKyAgICBMIlByb2dyZXNzIiwKKyAgICBMIlByb2dyZXNzUGFzc2l2ZSIsCisgICAgTCJTdWNjZXNzIiwKKyAgICBMIkZhaWx1cmUiLAorfTsKKworZW51bSBDT05UUk9MX0lEIHsKKyAgICAvLyBOb24tcGFnZWQgY29udHJvbHMKKyAgICBJRF9DTE9TRV9CVVRUT04gPSBUSEVNRV9GSVJTVF9BU1NJR05fQ09OVFJPTF9JRCwKKyAgICBJRF9NSU5JTUlaRV9CVVRUT04sCisKKyAgICAvLyBXZWxjb21lIHBhZ2UKKyAgICBJRF9JTlNUQUxMX0JVVFRPTiwKKyAgICBJRF9JTlNUQUxMX0NVU1RPTV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9TSU1QTEVfQlVUVE9OLAorICAgIElEX0lOU1RBTExfVVBHUkFERV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9VUEdSQURFX0NVU1RPTV9CVVRUT04sCisgICAgSURfSU5TVEFMTF9DQU5DRUxfQlVUVE9OLAorICAgIElEX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YLAorCisgICAgLy8gQ3VzdG9taXplIFBhZ2UKKyAgICBJRF9UQVJHRVRESVJfRURJVEJPWCwKKyAgICBJRF9DVVNUT01fQVNTT0NJQVRFX0ZJTEVTX0NIRUNLQk9YLAorICAgIElEX0NVU1RPTV9JTlNUQUxMX0FMTF9VU0VSU19DSEVDS0JPWCwKKyAgICBJRF9DVVNUT01fSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gsCisgICAgSURfQ1VTVE9NX0NPTVBJTEVfQUxMX0NIRUNLQk9YLAorICAgIElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OLAorICAgIElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OX0xBQkVMLAorICAgIElEX0NVU1RPTV9JTlNUQUxMX0JVVFRPTiwKKyAgICBJRF9DVVNUT01fTkVYVF9CVVRUT04sCisgICAgSURfQ1VTVE9NMV9CQUNLX0JVVFRPTiwKKyAgICBJRF9DVVNUT00yX0JBQ0tfQlVUVE9OLAorICAgIElEX0NVU1RPTTFfQ0FOQ0VMX0JVVFRPTiwKKyAgICBJRF9DVVNUT00yX0NBTkNFTF9CVVRUT04sCisKKyAgICAvLyBNb2RpZnkgcGFnZQorICAgIElEX01PRElGWV9CVVRUT04sCisgICAgSURfUkVQQUlSX0JVVFRPTiwKKyAgICBJRF9VTklOU1RBTExfQlVUVE9OLAorICAgIElEX01PRElGWV9DQU5DRUxfQlVUVE9OLAorCisgICAgLy8gUHJvZ3Jlc3MgcGFnZQorICAgIElEX0NBQ0hFX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwKKyAgICBJRF9DQUNIRV9QUk9HUkVTU19CQVIsCisgICAgSURfQ0FDSEVfUFJPR1JFU1NfVEVYVCwKKworICAgIElEX0VYRUNVVEVfUFJPR1JFU1NfUEFDS0FHRV9URVhULAorICAgIElEX0VYRUNVVEVfUFJPR1JFU1NfQkFSLAorICAgIElEX0VYRUNVVEVfUFJPR1JFU1NfVEVYVCwKKyAgICBJRF9FWEVDVVRFX1BST0dSRVNTX0FDVElPTkRBVEFfVEVYVCwKKworICAgIElEX09WRVJBTExfUFJPR1JFU1NfUEFDS0FHRV9URVhULAorICAgIElEX09WRVJBTExfUFJPR1JFU1NfQkFSLAorICAgIElEX09WRVJBTExfQ0FMQ1VMQVRFRF9QUk9HUkVTU19CQVIsCisgICAgSURfT1ZFUkFMTF9QUk9HUkVTU19URVhULAorCisgICAgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwKKworICAgIC8vIFN1Y2Nlc3MgcGFnZQorICAgIElEX0xBVU5DSF9CVVRUT04sCisgICAgSURfU1VDQ0VTU19URVhULAorICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULAorICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sCisgICAgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLAorCisgICAgLy8gRmFpbHVyZSBwYWdlCisgICAgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssCisgICAgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsCisgICAgSURfRkFJTFVSRV9SRVNUQVJUX1RFWFQsCisgICAgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTiwKKyAgICBJRF9GQUlMVVJFX0NBTkNFTF9CVVRUT04KK307CisKK3N0YXRpYyBUSEVNRV9BU1NJR05fQ09OVFJPTF9JRCBDT05UUk9MX0lEX05BTUVTW10gPSB7CisgICAgeyBJRF9DTE9TRV9CVVRUT04sIEwiQ2xvc2VCdXR0b24iIH0sCisgICAgeyBJRF9NSU5JTUlaRV9CVVRUT04sIEwiTWluaW1pemVCdXR0b24iIH0sCisKKyAgICB7IElEX0lOU1RBTExfQlVUVE9OLCBMIkluc3RhbGxCdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX0NVU1RPTV9CVVRUT04sIEwiSW5zdGFsbEN1c3RvbUJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfU0lNUExFX0JVVFRPTiwgTCJJbnN0YWxsU2ltcGxlQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9VUEdSQURFX0JVVFRPTiwgTCJJbnN0YWxsVXBncmFkZUJ1dHRvbiIgfSwKKyAgICB7IElEX0lOU1RBTExfVVBHUkFERV9DVVNUT01fQlVUVE9OLCBMIkluc3RhbGxVcGdyYWRlQ3VzdG9tQnV0dG9uIiB9LAorICAgIHsgSURfSU5TVEFMTF9DQU5DRUxfQlVUVE9OLCBMIkluc3RhbGxDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWCwgTCJJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyIgfSwKKworICAgIHsgSURfVEFSR0VURElSX0VESVRCT1gsIEwiVGFyZ2V0RGlyIiB9LAorICAgIHsgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgTCJBc3NvY2lhdGVGaWxlcyIgfSwKKyAgICB7IElEX0NVU1RPTV9JTlNUQUxMX0FMTF9VU0VSU19DSEVDS0JPWCwgTCJJbnN0YWxsQWxsVXNlcnMiIH0sCisgICAgeyBJRF9DVVNUT01fSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gsIEwiQ3VzdG9tSW5zdGFsbExhdW5jaGVyQWxsVXNlcnMiIH0sCisgICAgeyBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsIEwiQ29tcGlsZUFsbCIgfSwKKyAgICB7IElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OLCBMIkN1c3RvbUJyb3dzZUJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OX0xBQkVMLCBMIkN1c3RvbUJyb3dzZUJ1dHRvbkxhYmVsIiB9LAorICAgIHsgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBMIkN1c3RvbUluc3RhbGxCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT01fTkVYVF9CVVRUT04sIEwiQ3VzdG9tTmV4dEJ1dHRvbiIgfSwKKyAgICB7IElEX0NVU1RPTTFfQkFDS19CVVRUT04sIEwiQ3VzdG9tMUJhY2tCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00yX0JBQ0tfQlVUVE9OLCBMIkN1c3RvbTJCYWNrQnV0dG9uIiB9LAorICAgIHsgSURfQ1VTVE9NMV9DQU5DRUxfQlVUVE9OLCBMIkN1c3RvbTFDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9DVVNUT00yX0NBTkNFTF9CVVRUT04sIEwiQ3VzdG9tMkNhbmNlbEJ1dHRvbiIgfSwKKworICAgIHsgSURfTU9ESUZZX0JVVFRPTiwgTCJNb2RpZnlCdXR0b24iIH0sCisgICAgeyBJRF9SRVBBSVJfQlVUVE9OLCBMIlJlcGFpckJ1dHRvbiIgfSwKKyAgICB7IElEX1VOSU5TVEFMTF9CVVRUT04sIEwiVW5pbnN0YWxsQnV0dG9uIiB9LAorICAgIHsgSURfTU9ESUZZX0NBTkNFTF9CVVRUT04sIEwiTW9kaWZ5Q2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiQ2FjaGVQcm9ncmVzc1BhY2thZ2VUZXh0IiB9LAorICAgIHsgSURfQ0FDSEVfUFJPR1JFU1NfQkFSLCBMIkNhY2hlUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9DQUNIRV9QUk9HUkVTU19URVhULCBMIkNhY2hlUHJvZ3Jlc3NUZXh0IiB9LAorICAgIHsgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX0JBUiwgTCJFeGVjdXRlUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9FWEVDVVRFX1BST0dSRVNTX1RFWFQsIEwiRXhlY3V0ZVByb2dyZXNzVGV4dCIgfSwKKyAgICB7IElEX0VYRUNVVEVfUFJPR1JFU1NfQUNUSU9OREFUQV9URVhULCBMIkV4ZWN1dGVQcm9ncmVzc0FjdGlvbkRhdGFUZXh0IiB9LAorICAgIHsgSURfT1ZFUkFMTF9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzUGFja2FnZVRleHQiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX0JBUiwgTCJPdmVyYWxsUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9PVkVSQUxMX0NBTENVTEFURURfUFJPR1JFU1NfQkFSLCBMIk92ZXJhbGxDYWxjdWxhdGVkUHJvZ3Jlc3NiYXIiIH0sCisgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzVGV4dCIgfSwKKyAgICB7IElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEwiUHJvZ3Jlc3NDYW5jZWxCdXR0b24iIH0sCisKKyAgICB7IElEX0xBVU5DSF9CVVRUT04sIEwiTGF1bmNoQnV0dG9uIiB9LAorICAgIHsgSURfU1VDQ0VTU19URVhULCBMIlN1Y2Nlc3NUZXh0IiB9LAorICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIEwiU3VjY2Vzc1Jlc3RhcnRUZXh0IiB9LAorICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgTCJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgfSwKKyAgICB7IElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJTdWNjZXNzQ2FuY2VsQnV0dG9uIiB9LAorCisgICAgeyBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgTCJGYWlsdXJlTG9nRmlsZUxpbmsiIH0sCisgICAgeyBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgTCJGYWlsdXJlTWVzc2FnZVRleHQiIH0sCisgICAgeyBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwgTCJGYWlsdXJlUmVzdGFydFRleHQiIH0sCisgICAgeyBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBMIkZhaWx1cmVSZXN0YXJ0QnV0dG9uIiB9LAorICAgIHsgSURfRkFJTFVSRV9DQU5DRUxfQlVUVE9OLCBMIkZhaWx1cmVDYW5jZWxCdXR0b24iIH0sCit9OworCitzdGF0aWMgc3RydWN0IHsgTFBDV1NUUiByZWdOYW1lOyBMUENXU1RSIHZhcmlhYmxlTmFtZTsgfSBPUFRJT05BTF9GRUFUVVJFU1tdID0geworICAgIHsgTCJjb3JlX2QiLCBMIkluY2x1ZGVfZGVidWciIH0sCisgICAgeyBMImNvcmVfcGRiIiwgTCJJbmNsdWRlX3N5bWJvbHMiIH0sCisgICAgeyBMImRldiIsIEwiSW5jbHVkZV9kZXYiIH0sCisgICAgeyBMImRvYyIsIEwiSW5jbHVkZV9kb2MiIH0sCisgICAgeyBMImV4ZSIsIEwiSW5jbHVkZV9leGUiIH0sCisgICAgeyBMImxpYiIsIEwiSW5jbHVkZV9saWIiIH0sCisgICAgeyBMInBhdGgiLCBMIlByZXBlbmRQYXRoIiB9LAorICAgIHsgTCJwaXAiLCBMIkluY2x1ZGVfcGlwIiB9LAorICAgIHsgTCJ0Y2x0ayIsIEwiSW5jbHVkZV90Y2x0ayIgfSwKKyAgICB7IEwidGVzdCIsIEwiSW5jbHVkZV90ZXN0IiB9LAorICAgIHsgTCJ0b29scyIsIEwiSW5jbHVkZV90b29scyIgfSwKKyAgICB7IEwiU2hvcnRjdXRzIiwgTCJTaG9ydGN1dHMiIH0sCisgICAgLy8gSW5jbHVkZV9sYXVuY2hlciBhbmQgQXNzb2NpYXRlRmlsZXMgYXJlIGhhbmRsZWQgc2VwYXJhdGVseSBhbmQgc28gZG8KKyAgICAvLyBub3QgbmVlZCB0byBiZSBpbmNsdWRlZCBpbiB0aGlzIGxpc3QuCisgICAgeyBudWxscHRyLCBudWxscHRyIH0KK307CisKKworCitjbGFzcyBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbiA6IHB1YmxpYyBDQmFsQmFzZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIHsKKyAgICB2b2lkIFNob3dQYWdlKERXT1JEIG5ld1BhZ2VJZCkgeworICAgICAgICAvLyBQcm9jZXNzIGVhY2ggY29udHJvbCBmb3Igc3BlY2lhbCBoYW5kbGluZyBpbiB0aGUgbmV3IHBhZ2UuCisgICAgICAgIFByb2Nlc3NQYWdlQ29udHJvbHMoVGhlbWVHZXRQYWdlKF90aGVtZSwgbmV3UGFnZUlkKSk7CisKKyAgICAgICAgLy8gRW5hYmxlIGRpc2FibGUgY29udHJvbHMgcGVyLXBhZ2UuCisgICAgICAgIGlmIChfcGFnZUlkc1tQQUdFX0lOU1RBTExdID09IG5ld1BhZ2VJZCB8fAorICAgICAgICAgICAgX3BhZ2VJZHNbUEFHRV9TSU1QTEVfSU5TVEFMTF0gPT0gbmV3UGFnZUlkIHx8CisgICAgICAgICAgICBfcGFnZUlkc1tQQUdFX1VQR1JBREVdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgSW5zdGFsbFBhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfQ1VTVE9NMV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBDdXN0b20xUGFnZV9TaG93KCk7CisgICAgICAgIH0gZWxzZSBpZiAoX3BhZ2VJZHNbUEFHRV9DVVNUT00yXSA9PSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgIEN1c3RvbTJQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX01PRElGWV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBNb2RpZnlQYWdlX1Nob3coKTsKKyAgICAgICAgfSBlbHNlIGlmIChfcGFnZUlkc1tQQUdFX1NVQ0NFU1NdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgU3VjY2Vzc1BhZ2VfU2hvdygpOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfRkFJTFVSRV0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBGYWlsdXJlUGFnZV9TaG93KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQcmV2ZW50IHJlcGFpbnRpbmcgd2hpbGUgc3dpdGNoaW5nIHBhZ2UgdG8gYXZvaWQgdWdseSBmbGlja2VyaW5nCisgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gVFJVRTsKKyAgICAgICAgVGhlbWVTaG93UGFnZShfdGhlbWUsIG5ld1BhZ2VJZCwgU1dfU0hPVyk7CisgICAgICAgIFRoZW1lU2hvd1BhZ2UoX3RoZW1lLCBfdmlzaWJsZVBhZ2VJZCwgU1dfSElERSk7CisgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gRkFMU0U7CisgICAgICAgIEludmFsaWRhdGVSZWN0KF90aGVtZS0+aHduZFBhcmVudCwgbnVsbHB0ciwgVFJVRSk7CisgICAgICAgIF92aXNpYmxlUGFnZUlkID0gbmV3UGFnZUlkOworCisgICAgICAgIC8vIE9uIHRoZSBpbnN0YWxsIHBhZ2Ugc2V0IHRoZSBmb2N1cyB0byB0aGUgaW5zdGFsbCBidXR0b24gb3IKKyAgICAgICAgLy8gdGhlIG5leHQgZW5hYmxlZCBjb250cm9sIGlmIGluc3RhbGwgaXMgZGlzYWJsZWQKKyAgICAgICAgaWYgKF9wYWdlSWRzW1BBR0VfSU5TVEFMTF0gPT0gbmV3UGFnZUlkKSB7CisgICAgICAgICAgICBUaGVtZVNldEZvY3VzKF90aGVtZSwgSURfSU5TVEFMTF9CVVRUT04pOworICAgICAgICB9IGVsc2UgaWYgKF9wYWdlSWRzW1BBR0VfU0lNUExFX0lOU1RBTExdID09IG5ld1BhZ2VJZCkgeworICAgICAgICAgICAgVGhlbWVTZXRGb2N1cyhfdGhlbWUsIElEX0lOU1RBTExfU0lNUExFX0JVVFRPTik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLworICAgIC8vIEhhbmRsZXMgY29udHJvbCBjbGlja3MKKyAgICAvLworICAgIHZvaWQgT25Db21tYW5kKENPTlRST0xfSUQgaWQpIHsKKyAgICAgICAgTFBXU1RSIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgdGFyZ2V0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgTE9OR0xPTkcgZWxldmF0ZWQsIGNydEluc3RhbGxlZCwgaW5zdGFsbEFsbFVzZXJzOworICAgICAgICBCT09MIGNoZWNrZWQsIGxhdW5jaGVyQ2hlY2tlZDsKKyAgICAgICAgV0NIQVIgd3pQYXRoW01BWF9QQVRIXSA9IHsgfTsKKyAgICAgICAgQlJPV1NFSU5GT1cgYnJvd3NlSW5mbyA9IHsgfTsKKyAgICAgICAgUElETElTVF9BQlNPTFVURSBwaWRsID0gbnVsbHB0cjsKKyAgICAgICAgRFdPUkQgcGFnZUlkOworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBzd2l0Y2goaWQpIHsKKyAgICAgICAgY2FzZSBJRF9DTE9TRV9CVVRUT046CisgICAgICAgICAgICBPbkNsaWNrQ2xvc2VCdXR0b24oKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIEluc3RhbGwgY29tbWFuZHMKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX1NJTVBMRV9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9VUEdSQURFX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKworICAgICAgICAgICAgaWYgKCFXaWxsRWxldmF0ZSgpICYmICFRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaHIgPSBCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbnN0YWxsQWxsVXNlcnMiLCAmaW5zdGFsbEFsbFVzZXJzKTsKKyAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsIEwiRmFpbGVkIHRvIGdldCBpbnN0YWxsIHNjb3BlIik7CisKKyAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ29tcGlsZUFsbCIsIGluc3RhbGxBbGxVc2Vycyk7CisgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCBMIkZhaWxlZCB0byB1cGRhdGUgQ29tcGlsZUFsbCIpOworCisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhdGFyZ2V0RGlyIHx8ICF0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgdGFyZ2V0RGlyID0gbnVsbHB0cjsKKworICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGxVc2VycyA/IEwiRGVmYXVsdEFsbFVzZXJzVGFyZ2V0RGlyIiA6IEwiRGVmYXVsdEp1c3RGb3JNZVRhcmdldERpciIsCisgICAgICAgICAgICAgICAgICAgICZkZWZhdWx0RGlyCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCB0aGUgZGVmYXVsdCBpbnN0YWxsIGRpcmVjdG9yeSIpOworCisgICAgICAgICAgICAgICAgaWYgKCFkZWZhdWx0RGlyIHx8ICFkZWZhdWx0RGlyWzBdKSB7CisgICAgICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKEVfSU5WQUxJREFSRywgIkRlZmF1bHQgaW5zdGFsbCBkaXJlY3RvcnkgaXMgYmxhbmsiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhkZWZhdWx0RGlyLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgJyVscyciLCBkZWZhdWx0RGlyKTsKKworICAgICAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXREaXIiLCB0YXJnZXREaXIpOworICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2V0IGluc3RhbGwgdGFyZ2V0IGRpcmVjdG9yeSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUmVsZWFzZVN0cih0YXJnZXREaXIpOworCisgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfQ1VTVE9NMV9CQUNLX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGlmIChfbW9kaWZ5aW5nKSB7CisgICAgICAgICAgICAgICAgR29Ub1BhZ2UoUEFHRV9NT0RJRlkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0lOU1RBTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0NVU1RPTV9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9VUEdSQURFX0NVU1RPTV9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgSURfQ1VTVE9NMl9CQUNLX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgIEdvVG9QYWdlKFBBR0VfQ1VTVE9NMSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9ORVhUX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKyAgICAgICAgICAgIEdvVG9QYWdlKFBBR0VfQ1VTVE9NMik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9JTlNUQUxMX0JVVFRPTjoKKyAgICAgICAgICAgIFNhdmVQYWdlU2V0dGluZ3MoKTsKKworICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShMIlRhcmdldERpciIsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBDaGVjayB3aGV0aGVyIGRpcmVjdG9yeSBleGlzdHMgYW5kIGNvbnRhaW5zIGFub3RoZXIgaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cih0YXJnZXREaXIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIVdpbGxFbGV2YXRlKCkgJiYgIVF1ZXJ5RWxldmF0ZUZvckNydEluc3RhbGwoKSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBPblBsYW4oX2NvbW1hbmQuYWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1g6CisgICAgICAgICAgICBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgSURfSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbExhdW5jaGVyQWxsVXNlcnMiLCBjaGVja2VkKTsKKworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9JTlNUQUxMX0JVVFRPTiwgV2lsbEVsZXZhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX0NVU1RPTV9JTlNUQUxMX0xBVU5DSEVSX0FMTF9VU0VSU19DSEVDS0JPWDoKKyAgICAgICAgICAgIGNoZWNrZWQgPSBUaGVtZUlzQ29udHJvbENoZWNrZWQoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9MQVVOQ0hFUl9BTExfVVNFUlNfQ0hFQ0tCT1gpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbExhdW5jaGVyQWxsVXNlcnMiLCBjaGVja2VkKTsKKworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIFdpbGxFbGV2YXRlKCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9DVVNUT01fSU5TVEFMTF9BTExfVVNFUlNfQ0hFQ0tCT1g6CisgICAgICAgICAgICBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQUxMX1VTRVJTX0NIRUNLQk9YKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluc3RhbGxBbGxVc2VycyIsIGNoZWNrZWQpOworCisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX0NVU1RPTV9JTlNUQUxMX0JVVFRPTiwgV2lsbEVsZXZhdGUoKSk7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9DVVNUT01fQlJPV1NFX0JVVFRPTl9MQUJFTCwgIWNoZWNrZWQpOworICAgICAgICAgICAgaWYgKGNoZWNrZWQpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJDb21waWxlQWxsIiwgMSk7CisgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoX3RoZW1lLCBJRF9DVVNUT01fQ09NUElMRV9BTExfQ0hFQ0tCT1gsIEJNX1NFVENIRUNLLCBCU1RfQ0hFQ0tFRCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUaGVtZUdldFRleHRDb250cm9sKF90aGVtZSwgSURfVEFSR0VURElSX0VESVRCT1gsICZ0YXJnZXREaXIpOworICAgICAgICAgICAgaWYgKHRhcmdldERpcikgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHZhbHVlIGFnYWluc3QgdGhlIGRlZmF1bHQgdG8gc2VlCisgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc2hvdWxkIHN3aXRjaCBpdCBhdXRvbWF0aWNhbGx5LgorICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPyBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiIDogTCJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdERpcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZGVmYXVsdERpcikgeworICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHREaXJbMF0gJiYgU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhkZWZhdWx0RGlyLCAmZm9ybWF0dGVkKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3Y3NjbXAoZm9ybWF0dGVkLCB0YXJnZXREaXIpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGRlZmF1bHREaXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIoZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdERpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZGVmYXVsdERpciAmJiBkZWZhdWx0RGlyWzBdICYmIFNVQ0NFRURFRChCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdERpciwgJmZvcm1hdHRlZCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgZm9ybWF0dGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihmb3JtYXR0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihmb3JtYXR0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGRlZmF1bHREaXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfQ1VTVE9NX0JST1dTRV9CVVRUT046CisgICAgICAgICAgICBicm93c2VJbmZvLmh3bmRPd25lciA9IF9oV25kOworICAgICAgICAgICAgYnJvd3NlSW5mby5wc3pEaXNwbGF5TmFtZSA9IHd6UGF0aDsKKyAgICAgICAgICAgIGJyb3dzZUluZm8ubHBzelRpdGxlID0gX3RoZW1lLT5zY3pDYXB0aW9uOworICAgICAgICAgICAgYnJvd3NlSW5mby51bEZsYWdzID0gQklGX1JFVFVSTk9OTFlGU0RJUlMgfCBCSUZfVVNFTkVXVUk7CisgICAgICAgICAgICBwaWRsID0gOjpTSEJyb3dzZUZvckZvbGRlclcoJmJyb3dzZUluZm8pOworICAgICAgICAgICAgaWYgKHBpZGwgJiYgOjpTSEdldFBhdGhGcm9tSURMaXN0VyhwaWRsLCB3elBhdGgpKSB7CisgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCB3elBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocGlkbCkgeworICAgICAgICAgICAgICAgIDo6Q29UYXNrTWVtRnJlZShwaWRsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIE1vZGlmeSBjb21tYW5kcworICAgICAgICBjYXNlIElEX01PRElGWV9CVVRUT046CisgICAgICAgICAgICAvLyBTb21lIHZhcmlhYmxlcyBjYW5ub3QgYmUgbW9kaWZpZWQKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiSW5zdGFsbEFsbFVzZXJzU3RhdGUiLCBMImRpc2FibGUiKTsKKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNTdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXREaXJTdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJDdXN0b21Ccm93c2VCdXR0b25TdGF0ZSIsIEwiZGlzYWJsZSIpOworICAgICAgICAgICAgX21vZGlmeWluZyA9IFRSVUU7CisgICAgICAgICAgICBHb1RvUGFnZShQQUdFX0NVU1RPTTEpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9SRVBBSVJfQlVUVE9OOgorICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfVU5JTlNUQUxMX0JVVFRPTjoKKyAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB2b2lkIEluc3RhbGxQYWdlX1Nob3coKSB7CisgICAgICAgIC8vIEVuc3VyZSB0aGUgQWxsIFVzZXJzIGluc3RhbGwgYnV0dG9uIGhhcyBhIFVBQyBzaGllbGQKKyAgICAgICAgQk9PTCBlbGV2YXRlZCA9IFdpbGxFbGV2YXRlKCk7CisgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfSU5TVEFMTF9CVVRUT04sIGVsZXZhdGVkKTsKKyAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9JTlNUQUxMX1NJTVBMRV9CVVRUT04sIGVsZXZhdGVkKTsKKyAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9JTlNUQUxMX1VQR1JBREVfQlVUVE9OLCBlbGV2YXRlZCk7CisgICAgfQorCisgICAgdm9pZCBDdXN0b20xUGFnZV9TaG93KCkgeworICAgICAgICBMT05HTE9ORyBpbnN0YWxsTGF1bmNoZXJBbGxVc2VyczsKKworICAgICAgICBpZiAoRkFJTEVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIkluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiwgJmluc3RhbGxMYXVuY2hlckFsbFVzZXJzKSkpIHsKKyAgICAgICAgICAgIGluc3RhbGxMYXVuY2hlckFsbFVzZXJzID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIFRoZW1lU2VuZENvbnRyb2xNZXNzYWdlKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfTEFVTkNIRVJfQUxMX1VTRVJTX0NIRUNLQk9YLCBCTV9TRVRDSEVDSywKKyAgICAgICAgICAgIGluc3RhbGxMYXVuY2hlckFsbFVzZXJzID8gQlNUX0NIRUNLRUQgOiBCU1RfVU5DSEVDS0VELCAwKTsKKyAgICB9CisKKyAgICB2b2lkIEN1c3RvbTJQYWdlX1Nob3coKSB7CisgICAgICAgIEhSRVNVTFQgaHI7CisgICAgICAgIExPTkdMT05HIGluc3RhbGxBbGwsIGluY2x1ZGVMYXVuY2hlcjsKKyAgICAgICAgCisgICAgICAgIGlmIChGQUlMRUQoQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiSW5zdGFsbEFsbFVzZXJzIiwgJmluc3RhbGxBbGwpKSkgeworICAgICAgICAgICAgaW5zdGFsbEFsbCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoV2lsbEVsZXZhdGUoKSkgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9DVVNUT01fSU5TVEFMTF9CVVRUT04sIFRSVUUpOworICAgICAgICAgICAgVGhlbWVTaG93Q29udHJvbChfdGhlbWUsIElEX0NVU1RPTV9CUk9XU0VfQlVUVE9OX0xBQkVMLCBTV19ISURFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfQ1VTVE9NX0lOU1RBTExfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICBUaGVtZVNob3dDb250cm9sKF90aGVtZSwgSURfQ1VTVE9NX0JST1dTRV9CVVRUT05fTEFCRUwsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbmNsdWRlX2xhdW5jaGVyIiwgJmluY2x1ZGVMYXVuY2hlcikpICYmIGluY2x1ZGVMYXVuY2hlcikgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfQ1VTVE9NX0FTU09DSUFURV9GSUxFU19DSEVDS0JPWCwgVFJVRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBUaGVtZVNlbmRDb250cm9sTWVzc2FnZShfdGhlbWUsIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsIEJNX1NFVENIRUNLLCBCU1RfVU5DSEVDS0VELCAwKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0NVU1RPTV9BU1NPQ0lBVEVfRklMRVNfQ0hFQ0tCT1gsIEZBTFNFKTsKKyAgICAgICAgfQorCisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyOworICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIHRhcmdldERpciAmJiB0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9UQVJHRVRESVJfRURJVEJPWCwgdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIFN0ckZyZWUodGFyZ2V0RGlyKTsKKyAgICAgICAgfSBlbHNlIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBTdHJGcmVlKHRhcmdldERpcik7CisgICAgICAgICAgICB0YXJnZXREaXIgPSBudWxscHRyOworCisgICAgICAgICAgICBMUFdTVFIgZGVmYXVsdFRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiRGVmYXVsdEN1c3RvbVRhcmdldERpciIsICZkZWZhdWx0VGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpICYmIGRlZmF1bHRUYXJnZXREaXIgJiYgIWRlZmF1bHRUYXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgICAgICBTdHJGcmVlKGRlZmF1bHRUYXJnZXREaXIpOworICAgICAgICAgICAgICAgIGRlZmF1bHRUYXJnZXREaXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdFRhcmdldERpcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBkZWZhdWx0VGFyZ2V0RGlyKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRUYXJnZXREaXJbMF0gJiYgU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhkZWZhdWx0VGFyZ2V0RGlyLCAmdGFyZ2V0RGlyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX1RBUkdFVERJUl9FRElUQk9YLCB0YXJnZXREaXIpOworICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKHRhcmdldERpcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0ckZyZWUoZGVmYXVsdFRhcmdldERpcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIE1vZGlmeVBhZ2VfU2hvdygpIHsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUkVQQUlSX0JVVFRPTiwgIV9zdXBwcmVzc1JlcGFpcik7CisgICAgfQorCisgICAgdm9pZCBTdWNjZXNzUGFnZV9TaG93KCkgeworICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IG9yIGxhdW5jaCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKKyAgICAgICAgQk9PTCBsYXVuY2hUYXJnZXRFeGlzdHMgPSBGQUxTRTsKKyAgICAgICAgTE9DX1NUUklORyAqc3VjY2Vzc1RleHQgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgCisgICAgICAgIGlmIChfcmVzdGFydFJlcXVpcmVkKSB7CisgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUID09IF9jb21tYW5kLnJlc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoVGhlbWVDb250cm9sRXhpc3RzKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTikpIHsKKyAgICAgICAgICAgIGxhdW5jaFRhcmdldEV4aXN0cyA9IEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoX3BsYW5uZWRBY3Rpb24pIHsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEw6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NJbnN0YWxsTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlk6CisgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLlN1Y2Nlc3NNb2RpZnlNZXNzYWdlKSIsICZzdWNjZXNzVGV4dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUjoKKyAgICAgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuU3VjY2Vzc1JlcGFpck1lc3NhZ2UpIiwgJnN1Y2Nlc3NUZXh0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMOgorICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgTCIjKGxvYy5TdWNjZXNzUmVtb3ZlTWVzc2FnZSkiLCAmc3VjY2Vzc1RleHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3VjY2Vzc1RleHQpIHsKKyAgICAgICAgICAgIExQV1NUUiBmb3JtYXR0ZWRTdHJpbmcgPSBudWxscHRyOworICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKHN1Y2Nlc3NUZXh0LT53elRleHQsICZmb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgaWYgKGZvcm1hdHRlZFN0cmluZykgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9TVUNDRVNTX1RFWFQsIGZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICAgICAgU3RyRnJlZShmb3JtYXR0ZWRTdHJpbmcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTiwgbGF1bmNoVGFyZ2V0RXhpc3RzICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgX3BsYW5uZWRBY3Rpb24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgfQorCisgICAgdm9pZCBGYWlsdXJlUGFnZV9TaG93KCkgeworICAgICAgICAvLyBvbiB0aGUgIkZhaWx1cmUiIHBhZ2UsIHNob3cgZXJyb3IgbWVzc2FnZSBhbmQgY2hlY2sgaWYgdGhlIHJlc3RhcnQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgorCisgICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbG9nIGZpbGUgdmFyaWFibGUgdGhlbiB3ZSdsbCBhc3N1bWUgdGhlIGxvZyBmaWxlIGV4aXN0cy4KKyAgICAgICAgQk9PTCBzaG93TG9nTGluayA9IChfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlICYmICpfYnVuZGxlLnNjekxvZ1ZhcmlhYmxlKTsKKyAgICAgICAgQk9PTCBzaG93RXJyb3JNZXNzYWdlID0gRkFMU0U7CisgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKKworICAgICAgICBpZiAoRkFJTEVEKF9ockZpbmFsKSkgeworICAgICAgICAgICAgTFBXU1RSIHVuZm9ybWF0dGVkVGV4dCA9IG51bGxwdHI7CisgICAgICAgICAgICBMUFdTVFIgdGV4dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhlIGZhaWx1cmUgbWVzc2FnZSwgdXNlIHRoYXQuCisgICAgICAgICAgICBpZiAoX2ZhaWxlZE1lc3NhZ2UgJiYgKl9mYWlsZWRNZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgU3RyQWxsb2NTdHJpbmcoJnVuZm9ybWF0dGVkVGV4dCwgX2ZhaWxlZE1lc3NhZ2UsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyB0cnkgdG8gZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZyb20gdGhlIGVycm9yIGNvZGUuCisgICAgICAgICAgICAgICAgU3RyQWxsb2NGcm9tRXJyb3IoJnVuZm9ybWF0dGVkVGV4dCwgX2hyRmluYWwsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIGlmICghdW5mb3JtYXR0ZWRUZXh0IHx8ICEqdW5mb3JtYXR0ZWRUZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEVfRkFJTCwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEID09IF9ockZpbmFsKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuZm9ybWF0dGVkVGV4dCkgeworICAgICAgICAgICAgICAgICAgICBTdHJBbGxvY1N0cmluZygmdGV4dCwgdW5mb3JtYXR0ZWRUZXh0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZ0ZXh0LCBMIjB4JTA4eCAtICVscyIsIF9ockZpbmFsLCB1bmZvcm1hdHRlZFRleHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4dCkgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgdGV4dCk7CisgICAgICAgICAgICAgICAgc2hvd0Vycm9yTWVzc2FnZSA9IFRSVUU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlbGVhc2VTdHIodGV4dCk7CisgICAgICAgICAgICBSZWxlYXNlU3RyKHVuZm9ybWF0dGVkVGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiBCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgeworICAgICAgICAgICAgc2hvd1Jlc3RhcnRCdXR0b24gPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssIHNob3dMb2dMaW5rKTsKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsIHNob3dFcnJvck1lc3NhZ2UpOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisgICAgfQorCisKK3B1YmxpYzogLy8gSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVAgT25TdGFydHVwKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgRFdPUkQgZHdVSVRocmVhZElkID0gMDsKKworICAgICAgICAvLyBjcmVhdGUgVUkgdGhyZWFkCisgICAgICAgIF9oVWlUaHJlYWQgPSA6OkNyZWF0ZVRocmVhZChudWxscHRyLCAwLCBVaVRocmVhZFByb2MsIHRoaXMsIDAsICZkd1VJVGhyZWFkSWQpOworICAgICAgICBpZiAoIV9oVWlUaHJlYWQpIHsKKyAgICAgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblNodXRkb3duKCkgeworICAgICAgICBpbnQgblJlc3VsdCA9IElETk9BQ1RJT047CisKKyAgICAgICAgLy8gd2FpdCBmb3IgVUkgdGhyZWFkIHRvIHRlcm1pbmF0ZQorICAgICAgICBpZiAoX2hVaVRocmVhZCkgeworICAgICAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KF9oVWlUaHJlYWQsIElORklOSVRFKTsKKyAgICAgICAgICAgIFJlbGVhc2VIYW5kbGUoX2hVaVRocmVhZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBhIHJlc3RhcnQgd2FzIHJlcXVpcmVkLgorICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiBfYWxsb3dSZXN0YXJ0KSB7CisgICAgICAgICAgICBuUmVzdWx0ID0gSURSRVNUQVJUOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5SZXN1bHQ7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkRldGVjdFJlbGF0ZWRCdW5kbGUoCisgICAgICAgIF9faW4gTFBDV1NUUiB3ekJ1bmRsZUlkLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVElPTl9UWVBFIHJlbGF0aW9uVHlwZSwKKyAgICAgICAgX19pbiBMUENXU1RSIC8qd3pCdW5kbGVUYWcqLywKKyAgICAgICAgX19pbiBCT09MIGZQZXJNYWNoaW5lLAorICAgICAgICBfX2luIERXT1JENjQgLypkdzY0VmVyc2lvbiovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTiBvcGVyYXRpb24KKyAgICApIHsKKyAgICAgICAgQmFsSW5mb0FkZFJlbGF0ZWRCdW5kbGVBc1BhY2thZ2UoJl9idW5kbGUucGFja2FnZXMsIHd6QnVuZGxlSWQsIHJlbGF0aW9uVHlwZSwgZlBlck1hY2hpbmUpOworCisgICAgICAgIC8vIFJlbWVtYmVyIHdoZW4gb3VyIGJ1bmRsZSB3b3VsZCBjYXVzZSBhIGRvd25ncmFkZS4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9ET1dOR1JBREUgPT0gb3BlcmF0aW9uKSB7CisgICAgICAgICAgICBfZG93bmdyYWRpbmdPdGhlclZlcnNpb24gPSBUUlVFOworICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9NQUpPUl9VUEdSQURFID09IG9wZXJhdGlvbikgeworICAgICAgICAgICAgX3VwZ3JhZGluZ09sZFZlcnNpb24gPSBUUlVFOworCisgICAgICAgICAgICAvLyBBc3N1bWUgd2UgZG9uJ3Qgd2FudCB0aGUgbGF1bmNoZXIgb3IgZmlsZSBhc3NvY2lhdGlvbnMsIGFuZCBpZgorICAgICAgICAgICAgLy8gdGhleSBoYXZlIGFscmVhZHkgYmVlbiBpbnN0YWxsZWQgdGhlbiBsb2FkaW5nIHRoZSBzdGF0ZSB3aWxsCisgICAgICAgICAgICAvLyByZWFjdGl2YXRlIHRoZXNlIHNldHRpbmdzLgorICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5jbHVkZV9sYXVuY2hlciIsIDApOworICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQXNzb2NpYXRlRmlsZXMiLCAwKTsKKyAgICAgICAgICAgIGF1dG8gaHIgPSBMb2FkTGF1bmNoZXJTdGF0ZUZyb21LZXkoX2VuZ2luZSwgSEtFWV9DVVJSRU5UX1VTRVIpOworICAgICAgICAgICAgaWYgKGhyID09IFNfRkFMU0UpIHsKKyAgICAgICAgICAgICAgICBociA9IExvYWRMYXVuY2hlclN0YXRlRnJvbUtleShfZW5naW5lLCBIS0VZX0xPQ0FMX01BQ0hJTkUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9SRUxBVEVEX09QRVJBVElPTl9OT05FID09IG9wZXJhdGlvbikgeworICAgICAgICAgICAgaWYgKF9jb21tYW5kLmFjdGlvbiA9PSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwpIHsKKyAgICAgICAgICAgICAgICBMT0NfU1RSSU5HICpwTG9jU3RyaW5nID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkZhaWx1cmVFeGlzdGluZ0luc3RhbGwpIiwgJnBMb2NTdHJpbmcpKSAmJiBwTG9jU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIEJhbEZvcm1hdFN0cmluZyhwTG9jU3RyaW5nLT53elRleHQsICZfZmFpbGVkTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKEwiQ2Fubm90IGluc3RhbGwgW1dpeEJ1bmRsZU5hbWVdIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIiwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQmFsTG9nKAorICAgICAgICAgICAgICAgICAgICBCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAiUmVsYXRlZCBidW5kbGUgJWxzIGlzIHByZXZlbnRpbmcgaW5zdGFsbCIsCisgICAgICAgICAgICAgICAgICAgIHd6QnVuZGxlSWQKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfRkFJTEVELCBFX1dJWFNUREJBX0NPTkRJVElPTl9GQUlMRUQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSURPSzsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkRldGVjdFBhY2thZ2VDb21wbGV0ZSgKKyAgICAgICAgX19pbiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIEhSRVNVTFQgLypoclN0YXR1cyovLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9QQUNLQUdFX1NUQVRFIHN0YXRlCisgICAgKSB7IH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRGV0ZWN0Q29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzKSB7CisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpICYmIF9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJ1bm5pbmcgZGV0ZWN0IGNvbXBsZXRlIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25EZXRlY3RDb21wbGV0ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIGhyU3RhdHVzID0gRXZhbHVhdGVDb25kaXRpb25zKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBkZWZhdWx0IHBhdGggaGFzIGJlZW4gc2V0CisgICAgICAgICAgICBMT05HTE9ORyBpbnN0YWxsQWxsOworICAgICAgICAgICAgTFBXU1RSIHRhcmdldERpciA9IG51bGxwdHI7CisgICAgICAgICAgICBMUFdTVFIgZGVmYXVsdFRhcmdldERpciA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIGhyU3RhdHVzID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHJTdGF0dXMpIHx8ICF0YXJnZXREaXIgfHwgIXRhcmdldERpclswXSkgeworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICB0YXJnZXREaXIgPSBudWxscHRyOworCisgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChCYWxHZXROdW1lcmljVmFyaWFibGUoTCJJbnN0YWxsQWxsVXNlcnMiLCAmaW5zdGFsbEFsbCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGhyU3RhdHVzID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxBbGwgPyBMIkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgOiBMIkRlZmF1bHRKdXN0Rm9yTWVUYXJnZXREaXIiLAorICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdFRhcmdldERpcgorICAgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyU3RhdHVzKSAmJiBkZWZhdWx0VGFyZ2V0RGlyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0VGFyZ2V0RGlyWzBdICYmIFNVQ0NFRURFRChCYWxGb3JtYXRTdHJpbmcoZGVmYXVsdFRhcmdldERpciwgJnRhcmdldERpcikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoclN0YXR1cyA9IF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyIiwgdGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIodGFyZ2V0RGlyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKGRlZmF1bHRUYXJnZXREaXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfREVURUNURUQsIGhyU3RhdHVzKTsKKworICAgICAgICAvLyBJZiB3ZSdyZSBub3QgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgdXNlciBvciB3ZSdyZSBkb2luZyBhIGxheW91dCBvciB3ZSdyZSBqdXN0IGFmdGVyIGEgZm9yY2UgcmVzdGFydAorICAgICAgICAvLyB0aGVuIGF1dG9tYXRpY2FsbHkgc3RhcnQgcGxhbm5pbmcuCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9GVUxMID4gX2NvbW1hbmQuZGlzcGxheSB8fAorICAgICAgICAgICAgQk9PVFNUUkFQUEVSX0FDVElPTl9MQVlPVVQgPT0gX2NvbW1hbmQuYWN0aW9uIHx8CisgICAgICAgICAgICBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA9PSBfY29tbWFuZC5hY3Rpb24gfHwKKyAgICAgICAgICAgIEJPT1RTVFJBUFBFUl9SRVNVTUVfVFlQRV9SRUJPT1QgPT0gX2NvbW1hbmQucmVzdW1lVHlwZSkgeworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9QTEFOX1BBQ0tBR0VTLCAwLCBfY29tbWFuZC5hY3Rpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPblBsYW5SZWxhdGVkQnVuZGxlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiAvKnd6QnVuZGxlSWQqLywKKyAgICAgICAgX19pbm91dF96IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFKiBwUmVxdWVzdGVkU3RhdGUKKyAgICApIHsKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogSURPSzsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUGxhblBhY2thZ2VCZWdpbigKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW5vdXQgQk9PVFNUUkFQUEVSX1JFUVVFU1RfU1RBVEUgKnBSZXF1ZXN0U3RhdGUKKyAgICApIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIEJBTF9JTkZPX1BBQ0tBR0UqIHBQYWNrYWdlID0gbnVsbHB0cjsKKworICAgICAgICBpZiAoX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0KSB7CisgICAgICAgICAgICAvLyBBZnRlciByZXN0YXJ0IHdlIG5lZWQgdG8gZmluaXNoIHRoZSBkZXBlbmRlbmN5IHJlZ2lzdHJhdGlvbiBmb3Igb3VyIHBhY2thZ2Ugc28gYWxsb3cgdGhlIHBhY2thZ2UKKyAgICAgICAgICAgIC8vIHRvIGdvIHByZXNlbnQuCisgICAgICAgICAgICBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9ORVVUUkFMLCAwLCB3elBhY2thZ2VJZCwgLTEsIF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCwgLTEpKSB7CisgICAgICAgICAgICAgICAgLy8gRG8gbm90IGFsbG93IGEgcmVwYWlyIGJlY2F1c2UgdGhhdCBjb3VsZCBwdXQgdXMgaW4gYSBwZXJwZXR1YWwgcmVzdGFydCBsb29wLgorICAgICAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9SRVBBSVIgPT0gKnBSZXF1ZXN0U3RhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgKnBSZXF1ZXN0U3RhdGUgPSBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9QUkVTRU5UOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJlbGVhc2VOdWxsU3RyKF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCk7IC8vIG5vIG1vcmUgc2tpcHBpbmcgbm93LgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBub3QgdGhlIG1hdGNoaW5nIHBhY2thZ2UsIHNvIHNraXAgaXQuCisgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJTa2lwcGluZyBwYWNrYWdlOiAlbHMsIGFmdGVyIHJlc3RhcnQgYmVjYXVzZSBpdCB3YXMgYXBwbGllZCBiZWZvcmUgdGhlIHJlc3RhcnQuIiwgd3pQYWNrYWdlSWQpOworCisgICAgICAgICAgICAgICAgKnBSZXF1ZXN0U3RhdGUgPSBCT09UU1RSQVBQRVJfUkVRVUVTVF9TVEFURV9OT05FOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChfcGxhbm5lZEFjdGlvbiA9PSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgfHwgX3BsYW5uZWRBY3Rpb24gPT0gQk9PVFNUUkFQUEVSX0FDVElPTl9NT0RJRlkpICYmCisgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKEJhbEluZm9GaW5kUGFja2FnZUJ5SWQoJl9idW5kbGUucGFja2FnZXMsIHd6UGFja2FnZUlkLCAmcFBhY2thZ2UpKSkgeworICAgICAgICAgICAgQk9PTCBmID0gRkFMU0U7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKF9lbmdpbmUtPkV2YWx1YXRlQ29uZGl0aW9uKHBQYWNrYWdlLT5zY3pJbnN0YWxsQ29uZGl0aW9uLCAmZikpICYmIGYpIHsKKyAgICAgICAgICAgICAgICAqcFJlcXVlc3RTdGF0ZSA9IEJPT1RTVFJBUFBFUl9SRVFVRVNUX1NUQVRFX1BSRVNFTlQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBJRE9LOworICAgIH0KKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uUGxhbk1zaUZlYXR1cmUoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3ekZlYXR1cmVJZCwKKyAgICAgICAgX19pbm91dCBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURSogcFJlcXVlc3RlZFN0YXRlCisgICAgKSB7CisgICAgICAgIExPTkdMT05HIGluc3RhbGw7CisgICAgICAgIAorICAgICAgICBpZiAod2NzY21wKHd6RmVhdHVyZUlkLCBMIkFzc29jaWF0ZUZpbGVzIikgPT0gMCB8fCB3Y3NjbXAod3pGZWF0dXJlSWQsIEwiU2hvcnRjdXRzIikgPT0gMCkgeworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChfZW5naW5lLT5HZXRWYXJpYWJsZU51bWVyaWMod3pGZWF0dXJlSWQsICZpbnN0YWxsKSkgJiYgaW5zdGFsbCkgeworICAgICAgICAgICAgICAgICpwUmVxdWVzdGVkU3RhdGUgPSBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURV9MT0NBTDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnBSZXF1ZXN0ZWRTdGF0ZSA9IEJPT1RTVFJBUFBFUl9GRUFUVVJFX1NUQVRFX0FCU0VOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwUmVxdWVzdGVkU3RhdGUgPSBCT09UU1RSQVBQRVJfRkVBVFVSRV9TVEFURV9MT0NBTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gQ2hlY2tDYW5jZWxlZCgpID8gSURDQU5DRUwgOiBJRE5PQUNUSU9OOworICAgIH0KKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPblBsYW5Db21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChoclN0YXR1cykgJiYgX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBwbGFuIGNvbXBsZXRlIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25QbGFuQ29tcGxldGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfUExBTk5FRCwgaHJTdGF0dXMpOworCisgICAgICAgIGlmIChTVUNDRUVERUQoaHJTdGF0dXMpKSB7CisgICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9BUFBMWV9QQUNLQUdFUywgMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBfc3RhcnRlZEV4ZWN1dGlvbiA9IEZBTFNFOworICAgICAgICBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgPSAwOworICAgICAgICBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyA9IDA7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkNhY2hlUGFja2FnZUJlZ2luKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBEV09SRCBjQ2FjaGVQYXlsb2FkcywKKyAgICAgICAgX19pbiBEV09SRDY0IGR3NjRQYWNrYWdlQ2FjaGVTaXplCisgICAgKSB7CisgICAgICAgIGlmICh3elBhY2thZ2VJZCAmJiAqd3pQYWNrYWdlSWQpIHsKKyAgICAgICAgICAgIEJBTF9JTkZPX1BBQ0tBR0UqIHBQYWNrYWdlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBCYWxJbmZvRmluZFBhY2thZ2VCeUlkKCZfYnVuZGxlLnBhY2thZ2VzLCB3elBhY2thZ2VJZCwgJnBQYWNrYWdlKTsKKyAgICAgICAgICAgIExQQ1dTVFIgd3ogPSAoU1VDQ0VFREVEKGhyKSAmJiBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUpID8gcFBhY2thZ2UtPnNjekRpc3BsYXlOYW1lIDogd3pQYWNrYWdlSWQ7CisKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIHd6KTsKKworICAgICAgICAgICAgLy8gSWYgc29tZXRoaW5nIHN0YXJ0ZWQgZXhlY3V0aW5nLCBsZWF2ZSBpdCBpbiB0aGUgb3ZlcmFsbCBwcm9ncmVzcyB0ZXh0LgorICAgICAgICAgICAgaWYgKCFfc3RhcnRlZEV4ZWN1dGlvbikgeworICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgd3opOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVQYWNrYWdlQmVnaW4od3pQYWNrYWdlSWQsIGNDYWNoZVBheWxvYWRzLCBkdzY0UGFja2FnZUNhY2hlU2l6ZSk7CisgICAgfQorCisKKyAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8oaW50KSBPbkNhY2hlQWNxdWlyZVByb2dyZXNzKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VPckNvbnRhaW5lcklkLAorICAgICAgICBfX2luX3pfb3B0IExQQ1dTVFIgd3pQYXlsb2FkSWQsCisgICAgICAgIF9faW4gRFdPUkQ2NCBkdzY0UHJvZ3Jlc3MsCisgICAgICAgIF9faW4gRFdPUkQ2NCBkdzY0VG90YWwsCisgICAgICAgIF9faW4gRFdPUkQgZHdPdmVyYWxsUGVyY2VudGFnZQorICAgICkgeworICAgICAgICBXQ0hBUiB3elByb2dyZXNzWzVdID0geyB9OworCisjaWZkZWYgREVCVUcKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJQWUJBOiBPbkNhY2hlQWNxdWlyZVByb2dyZXNzKCkgLSBjb250YWluZXIvcGFja2FnZTogJWxzLCBwYXlsb2FkOiAlbHMsIHByb2dyZXNzOiAlSTY0dSwgdG90YWw6ICVJNjR1LCBvdmVyYWxsIHByb2dyZXNzOiAldSUlIiwgd3pQYWNrYWdlT3JDb250YWluZXJJZCwgd3pQYXlsb2FkSWQsIGR3NjRQcm9ncmVzcywgZHc2NFRvdGFsLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKyNlbmRpZgorCisgICAgICAgIDo6U3RyaW5nQ2NoUHJpbnRmVyh3elByb2dyZXNzLCBjb3VudG9mKHd6UHJvZ3Jlc3MpLCBMIiV1JSUiLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0NBQ0hFX1BST0dSRVNTX1RFWFQsIHd6UHJvZ3Jlc3MpOworCisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfQ0FDSEVfUFJPR1JFU1NfQkFSLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKworICAgICAgICBfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgPSBkd092ZXJhbGxQZXJjZW50YWdlICogUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgLyAxMDA7CisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9DQUxDVUxBVEVEX1BST0dSRVNTX0JBUiwgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzICsgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MpOworCisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcyhfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgKyBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyk7CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVBY3F1aXJlUHJvZ3Jlc3Mod3pQYWNrYWdlT3JDb250YWluZXJJZCwgd3pQYXlsb2FkSWQsIGR3NjRQcm9ncmVzcywgZHc2NFRvdGFsLCBkd092ZXJhbGxQZXJjZW50YWdlKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQ2FjaGVBY3F1aXJlQ29tcGxldGUoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZU9yQ29udGFpbmVySWQsCisgICAgICAgIF9faW5fel9vcHQgTFBDV1NUUiB3elBheWxvYWRJZCwKKyAgICAgICAgX19pbiBIUkVTVUxUIGhyU3RhdHVzLAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShoclN0YXR1cyk7CisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPbkNhY2hlQWNxdWlyZUNvbXBsZXRlKHd6UGFja2FnZU9yQ29udGFpbmVySWQsIHd6UGF5bG9hZElkLCBoclN0YXR1cywgblJlY29tbWVuZGF0aW9uKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQ2FjaGVWZXJpZnlDb21wbGV0ZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGF5bG9hZElkLAorICAgICAgICBfX2luIEhSRVNVTFQgaHJTdGF0dXMsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKGhyU3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uQ2FjaGVWZXJpZnlDb21wbGV0ZSh3elBhY2thZ2VJZCwgd3pQYXlsb2FkSWQsIGhyU3RhdHVzLCBuUmVjb21tZW5kYXRpb24pOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uQ2FjaGVDb21wbGV0ZShfX2luIEhSRVNVTFQgLypoclN0YXR1cyovKSB7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9DQUNIRV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiIik7CisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfQ0FDSEVELCBTX09LKTsgLy8gd2UgYWx3YXlzIHJldHVybiBzdWNjZXNzIGhlcmUgYW5kIGxldCBPbkFwcGx5Q29tcGxldGUoKSBkZWFsIHdpdGggdGhlIGVycm9yLgorICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25FcnJvcigKKyAgICAgICAgX19pbiBCT09UU1RSQVBQRVJfRVJST1JfVFlQRSBlcnJvclR5cGUsCisgICAgICAgIF9faW4gTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBEV09SRCBkd0NvZGUsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6RXJyb3IsCisgICAgICAgIF9faW4gRFdPUkQgZHdVSUhpbnQsCisgICAgICAgIF9faW4gRFdPUkQgLypjRGF0YSovLAorICAgICAgICBfX2luX2Vjb3VudF96X29wdChjRGF0YSkgTFBDV1NUUiogLypyZ3d6RGF0YSovLAorICAgICAgICBfX2luIGludCBuUmVjb21tZW5kYXRpb24KKyAgICApIHsKKyAgICAgICAgaW50IG5SZXN1bHQgPSBuUmVjb21tZW5kYXRpb247CisgICAgICAgIExQV1NUUiBzY3pFcnJvciA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0VNQkVEREVEID09IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBfZW5naW5lLT5TZW5kRW1iZWRkZWRFcnJvcihkd0NvZGUsIHd6RXJyb3IsIGR3VUlIaW50LCAmblJlc3VsdCk7CisgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBJREVSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlLCBsZXQgdGhlIGVuZ2luZSB0cnkgdG8gaGFuZGxlIGl0IGZvciB1cy4KKyAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRVJST1JfVFlQRV9IVFRQX0FVVEhfU0VSVkVSID09IGVycm9yVHlwZSB8fCBCT09UU1RSQVBQRVJfRVJST1JfVFlQRV9IVFRQX0FVVEhfUFJPWFkgPT0gZXJyb3JUeXBlKSB7CisgICAgICAgICAgICAgICAgblJlc3VsdCA9IElEVFJZQUdBSU47CisgICAgICAgICAgICB9IGVsc2UgLy8gc2hvdyBhIGdlbmVyaWMgZXJyb3IgbWVzc2FnZSBib3guCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQmFsUmV0cnlFcnJvck9jY3VycmVkKHd6UGFja2FnZUlkLCBkd0NvZGUpOworCisgICAgICAgICAgICAgICAgaWYgKCFfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiBubyBlcnJvciBtZXNzYWdlIHdhcyBwcm92aWRlZCwgdXNlIHRoZSBlcnJvciBjb2RlIHRvIHRyeSBhbmQgZ2V0IGFuIGVycm9yIG1lc3NhZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICghd3pFcnJvciB8fCAhKnd6RXJyb3IgfHwgQk9PVFNUUkFQUEVSX0VSUk9SX1RZUEVfV0lORE9XU19JTlNUQUxMRVIgIT0gZXJyb3JUeXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gU3RyQWxsb2NGcm9tRXJyb3IoJnNjekVycm9yLCBkd0NvZGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIXNjekVycm9yIHx8ICEqc2N6RXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJBbGxvY0Zvcm1hdHRlZCgmc2N6RXJyb3IsIEwiMHgleCIsIGR3Q29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBuUmVzdWx0ID0gOjpNZXNzYWdlQm94VyhfaFduZCwgc2N6RXJyb3IgPyBzY3pFcnJvciA6IHd6RXJyb3IsIF90aGVtZS0+c2N6Q2FwdGlvbiwgZHdVSUhpbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU2V0UHJvZ3Jlc3NTdGF0ZShIUkVTVUxUX0ZST01fV0lOMzIoZHdDb2RlKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBqdXN0IHRha2Ugbm90ZSBvZiB0aGUgZXJyb3IgY29kZSBhbmQgbGV0IHRoaW5ncyBjb250aW51ZS4KKyAgICAgICAgICAgIEJhbFJldHJ5RXJyb3JPY2N1cnJlZCh3elBhY2thZ2VJZCwgZHdDb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlbGVhc2VTdHIoc2N6RXJyb3IpOworICAgICAgICByZXR1cm4gblJlc3VsdDsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uRXhlY3V0ZU1zaU1lc3NhZ2UoCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLAorICAgICAgICBfX2luIElOU1RBTExNRVNTQUdFIG10LAorICAgICAgICBfX2luIFVJTlQgdWlGbGFncywKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pNZXNzYWdlLAorICAgICAgICBfX2luIERXT1JEIGNEYXRhLAorICAgICAgICBfX2luX2Vjb3VudF96X29wdChjRGF0YSkgTFBDV1NUUiogcmd3ekRhdGEsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworI2lmZGVmIERFQlVHCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUFlCQTogT25FeGVjdXRlTXNpTWVzc2FnZSgpIC0gcGFja2FnZTogJWxzLCBtZXNzYWdlOiAlbHMiLCB3elBhY2thZ2VJZCwgd3pNZXNzYWdlKTsKKyNlbmRpZgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA9PSBfY29tbWFuZC5kaXNwbGF5ICYmIChJTlNUQUxMTUVTU0FHRV9XQVJOSU5HID09IG10IHx8IElOU1RBTExNRVNTQUdFX1VTRVIgPT0gbXQpKSB7CisgICAgICAgICAgICBpbnQgblJlc3VsdCA9IDo6TWVzc2FnZUJveFcoX2hXbmQsIHd6TWVzc2FnZSwgX3RoZW1lLT5zY3pDYXB0aW9uLCB1aUZsYWdzKTsKKyAgICAgICAgICAgIHJldHVybiBuUmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKElOU1RBTExNRVNTQUdFX0FDVElPTlNUQVJUID09IG10KSB7CisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19BQ1RJT05EQVRBX1RFWFQsIHd6TWVzc2FnZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gX19zdXBlcjo6T25FeGVjdXRlTXNpTWVzc2FnZSh3elBhY2thZ2VJZCwgbXQsIHVpRmxhZ3MsIHd6TWVzc2FnZSwgY0RhdGEsIHJnd3pEYXRhLCBuUmVjb21tZW5kYXRpb24pOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25Qcm9ncmVzcyhfX2luIERXT1JEIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBfX2luIERXT1JEIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSkgeworICAgICAgICBXQ0hBUiB3elByb2dyZXNzWzVdID0geyB9OworCisjaWZkZWYgREVCVUcKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJQWUJBOiBPblByb2dyZXNzKCkgLSBwcm9ncmVzczogJXUlJSwgb3ZlcmFsbCBwcm9ncmVzczogJXUlJSIsIGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworI2VuZGlmCisKKyAgICAgICAgOjpTdHJpbmdDY2hQcmludGZXKHd6UHJvZ3Jlc3MsIGNvdW50b2Yod3pQcm9ncmVzcyksIEwiJXUlJSIsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIHd6UHJvZ3Jlc3MpOworCisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9QUk9HUkVTU19CQVIsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcyhkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworCisgICAgICAgIHJldHVybiBfX3N1cGVyOjpPblByb2dyZXNzKGR3UHJvZ3Jlc3NQZXJjZW50YWdlLCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25FeGVjdXRlUGFja2FnZUJlZ2luKF9faW5feiBMUENXU1RSIHd6UGFja2FnZUlkLCBfX2luIEJPT0wgZkV4ZWN1dGUpIHsKKyAgICAgICAgTFBXU1RSIHNjekZvcm1hdHRlZFN0cmluZyA9IG51bGxwdHI7CisKKyAgICAgICAgX3N0YXJ0ZWRFeGVjdXRpb24gPSBUUlVFOworCisgICAgICAgIGlmICh3elBhY2thZ2VJZCAmJiAqd3pQYWNrYWdlSWQpIHsKKyAgICAgICAgICAgIEJBTF9JTkZPX1BBQ0tBR0UqIHBQYWNrYWdlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJhbEluZm9GaW5kUGFja2FnZUJ5SWQoJl9idW5kbGUucGFja2FnZXMsIHd6UGFja2FnZUlkLCAmcFBhY2thZ2UpOworCisgICAgICAgICAgICBMUENXU1RSIHd6ID0gd3pQYWNrYWdlSWQ7CisgICAgICAgICAgICBpZiAocFBhY2thZ2UpIHsKKyAgICAgICAgICAgICAgICBMT0NfU1RSSU5HKiBwTG9jU3RyaW5nID0gbnVsbHB0cjsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAocFBhY2thZ2UtPnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEJBTF9JTkZPX1BBQ0tBR0VfVFlQRV9CVU5ETEVfQURET046CisgICAgICAgICAgICAgICAgICAgIExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkV4ZWN1dGVBZGRvblJlbGF0ZWRCdW5kbGVNZXNzYWdlKSIsICZwTG9jU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIEJBTF9JTkZPX1BBQ0tBR0VfVFlQRV9CVU5ETEVfUEFUQ0g6CisgICAgICAgICAgICAgICAgICAgIExvY0dldFN0cmluZyhfd2l4TG9jLCBMIiMobG9jLkV4ZWN1dGVQYXRjaFJlbGF0ZWRCdW5kbGVNZXNzYWdlKSIsICZwTG9jU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIEJBTF9JTkZPX1BBQ0tBR0VfVFlQRV9CVU5ETEVfVVBHUkFERToKKyAgICAgICAgICAgICAgICAgICAgTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRXhlY3V0ZVVwZ3JhZGVSZWxhdGVkQnVuZGxlTWVzc2FnZSkiLCAmcExvY1N0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwTG9jU3RyaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3aXggZGV2ZWxvcGVyIGlzIHNob3dpbmcgYSBoaWRkZW4gdmFyaWFibGUgaW4gdGhlIFVJLCB0aGVuIG9idmlvdXNseSB0aGV5IGRvbid0IGNhcmUgYWJvdXQga2VlcGluZyBpdCBzYWZlCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIGRvbid0IGdvIGRvd24gdGhlIHJhYmJpdCBob2xlIG9mIG1ha2luZyBzdXJlIHRoYXQgdGhpcyBpcyBzZWN1cmVseSBmcmVlZC4KKyAgICAgICAgICAgICAgICAgICAgQmFsRm9ybWF0U3RyaW5nKHBMb2NTdHJpbmctPnd6VGV4dCwgJnNjekZvcm1hdHRlZFN0cmluZyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgd3ogPSBzY3pGb3JtYXR0ZWRTdHJpbmcgPyBzY3pGb3JtYXR0ZWRTdHJpbmcgOiBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUgPyBwUGFja2FnZS0+c2N6RGlzcGxheU5hbWUgOiB3elBhY2thZ2VJZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBwUGFja2FnZSAmJiBwUGFja2FnZS0+ZkRpc3BsYXlJbnRlcm5hbFVJOworCisgICAgICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIHd6KTsKKyAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9PVkVSQUxMX1BST0dSRVNTX1BBQ0tBR0VfVEVYVCwgd3opOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIFJlbGVhc2VTdHIoc2N6Rm9ybWF0dGVkU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uRXhlY3V0ZVBhY2thZ2VCZWdpbih3elBhY2thZ2VJZCwgZkV4ZWN1dGUpOworICAgIH0KKworCisgICAgdmlydHVhbCBpbnQgX19zdGRjYWxsIE9uRXhlY3V0ZVByb2dyZXNzKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VJZCwKKyAgICAgICAgX19pbiBEV09SRCBkd1Byb2dyZXNzUGVyY2VudGFnZSwKKyAgICAgICAgX19pbiBEV09SRCBkd092ZXJhbGxQcm9ncmVzc1BlcmNlbnRhZ2UKKyAgICApIHsKKyAgICAgICAgV0NIQVIgd3pQcm9ncmVzc1s4XSA9IHsgfTsKKworI2lmZGVmIERFQlVHCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUFlCQTogT25FeGVjdXRlUHJvZ3Jlc3MoKSAtIHBhY2thZ2U6ICVscywgcHJvZ3Jlc3M6ICV1JSUsIG92ZXJhbGwgcHJvZ3Jlc3M6ICV1JSUiLCB3elBhY2thZ2VJZCwgZHdQcm9ncmVzc1BlcmNlbnRhZ2UsIGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSk7CisjZW5kaWYKKworICAgICAgICA6OlN0cmluZ0NjaFByaW50Zlcod3pQcm9ncmVzcywgY291bnRvZih3elByb2dyZXNzKSwgTCIldSUlIiwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX0VYRUNVVEVfUFJPR1JFU1NfVEVYVCwgd3pQcm9ncmVzcyk7CisKKyAgICAgICAgVGhlbWVTZXRQcm9ncmVzc0NvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX0JBUiwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKworICAgICAgICBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyA9IGR3T3ZlcmFsbFByb2dyZXNzUGVyY2VudGFnZSAqICgxMDAgLSBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSkgLyAxMDA7CisgICAgICAgIFRoZW1lU2V0UHJvZ3Jlc3NDb250cm9sKF90aGVtZSwgSURfT1ZFUkFMTF9DQUxDVUxBVEVEX1BST0dSRVNTX0JBUiwgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzICsgX2NhbGN1bGF0ZWRFeGVjdXRlUHJvZ3Jlc3MpOworCisgICAgICAgIFNldFRhc2tiYXJCdXR0b25Qcm9ncmVzcyhfY2FsY3VsYXRlZENhY2hlUHJvZ3Jlc3MgKyBfY2FsY3VsYXRlZEV4ZWN1dGVQcm9ncmVzcyk7CisKKyAgICAgICAgcmV0dXJuIF9fc3VwZXI6Ok9uRXhlY3V0ZVByb2dyZXNzKHd6UGFja2FnZUlkLCBkd1Byb2dyZXNzUGVyY2VudGFnZSwgZHdPdmVyYWxsUHJvZ3Jlc3NQZXJjZW50YWdlKTsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uRXhlY3V0ZVBhY2thZ2VDb21wbGV0ZSgKKyAgICAgICAgX19pbl96IExQQ1dTVFIgd3pQYWNrYWdlSWQsCisgICAgICAgIF9faW4gSFJFU1VMVCBockV4aXRDb2RlLAorICAgICAgICBfX2luIEJPT1RTVFJBUFBFUl9BUFBMWV9SRVNUQVJUIHJlc3RhcnQsCisgICAgICAgIF9faW4gaW50IG5SZWNvbW1lbmRhdGlvbgorICAgICkgeworICAgICAgICBTZXRQcm9ncmVzc1N0YXRlKGhyRXhpdENvZGUpOworCisgICAgICAgIGlmIChfd2NzbmljbXAod3pQYWNrYWdlSWQsIEwicGF0aF8iLCA1KSA9PSAwICYmIFNVQ0NFRURFRChockV4aXRDb2RlKSkgeworICAgICAgICAgICAgU2VuZE1lc3NhZ2VUaW1lb3V0VygKKyAgICAgICAgICAgICAgICBIV05EX0JST0FEQ0FTVCwKKyAgICAgICAgICAgICAgICBXTV9TRVRUSU5HQ0hBTkdFLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxMUEFSQU0+KEwiRW52aXJvbm1lbnQiKSwKKyAgICAgICAgICAgICAgICBTTVRPX0FCT1JUSUZIVU5HLAorICAgICAgICAgICAgICAgIDEwMDAsCisgICAgICAgICAgICAgICAgbnVsbHB0cgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBuUmVzdWx0ID0gX19zdXBlcjo6T25FeGVjdXRlUGFja2FnZUNvbXBsZXRlKHd6UGFja2FnZUlkLCBockV4aXRDb2RlLCByZXN0YXJ0LCBuUmVjb21tZW5kYXRpb24pOworCisgICAgICAgIHJldHVybiBuUmVzdWx0OworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uRXhlY3V0ZUNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cykgeworICAgICAgICBUaGVtZVNldFRleHRDb250cm9sKF90aGVtZSwgSURfRVhFQ1VURV9QUk9HUkVTU19QQUNLQUdFX1RFWFQsIEwiIik7CisgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBJRF9FWEVDVVRFX1BST0dSRVNTX0FDVElPTkRBVEFfVEVYVCwgTCIiKTsKKyAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIElEX09WRVJBTExfUFJPR1JFU1NfUEFDS0FHRV9URVhULCBMIiIpOworICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLCBGQUxTRSk7IC8vIG5vIG1vcmUgY2FuY2VsLgorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfRVhFQ1VURUQsIFNfT0spOyAvLyB3ZSBhbHdheXMgcmV0dXJuIHN1Y2Nlc3MgaGVyZSBhbmQgbGV0IE9uQXBwbHlDb21wbGV0ZSgpIGRlYWwgd2l0aCB0aGUgZXJyb3IuCisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHJTdGF0dXMpOworICAgIH0KKworCisgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKGludCkgT25SZXNvbHZlU291cmNlKAorICAgICAgICBfX2luX3ogTFBDV1NUUiB3elBhY2thZ2VPckNvbnRhaW5lcklkLAorICAgICAgICBfX2luX3pfb3B0IExQQ1dTVFIgd3pQYXlsb2FkSWQsCisgICAgICAgIF9faW5feiBMUENXU1RSIHd6TG9jYWxTb3VyY2UsCisgICAgICAgIF9faW5fel9vcHQgTFBDV1NUUiB3ekRvd25sb2FkU291cmNlCisgICAgKSB7CisgICAgICAgIGludCBuUmVzdWx0ID0gSURFUlJPUjsgLy8gYXNzdW1lIHdlIHdvbid0IHJlc29sdmUgc291cmNlIGFuZCB0aGF0IGlzIHVuZXhwZWN0ZWQuCisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPT0gX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgaWYgKHd6RG93bmxvYWRTb3VyY2UpIHsKKyAgICAgICAgICAgICAgICBuUmVzdWx0ID0gSURET1dOTE9BRDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcHJvbXB0IHRvIGNoYW5nZSB0aGUgc291cmNlIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgIE9QRU5GSUxFTkFNRVcgb2ZuID0geyB9OworICAgICAgICAgICAgICAgIFdDSEFSIHd6RmlsZVtNQVhfUEFUSF0gPSB7IH07CisKKyAgICAgICAgICAgICAgICA6OlN0cmluZ0NjaENvcHlXKHd6RmlsZSwgY291bnRvZih3ekZpbGUpLCB3ekxvY2FsU291cmNlKTsKKworICAgICAgICAgICAgICAgIG9mbi5sU3RydWN0U2l6ZSA9IHNpemVvZihvZm4pOworICAgICAgICAgICAgICAgIG9mbi5od25kT3duZXIgPSBfaFduZDsKKyAgICAgICAgICAgICAgICBvZm4ubHBzdHJGaWxlID0gd3pGaWxlOworICAgICAgICAgICAgICAgIG9mbi5uTWF4RmlsZSA9IGNvdW50b2Yod3pGaWxlKTsKKyAgICAgICAgICAgICAgICBvZm4ubHBzdHJGaWx0ZXIgPSBMIkFsbCBGaWxlc1wwKi4qXDAiOworICAgICAgICAgICAgICAgIG9mbi5uRmlsdGVySW5kZXggPSAxOworICAgICAgICAgICAgICAgIG9mbi5GbGFncyA9IE9GTl9QQVRITVVTVEVYSVNUIHwgT0ZOX0ZJTEVNVVNURVhJU1Q7CisgICAgICAgICAgICAgICAgb2ZuLmxwc3RyVGl0bGUgPSBfdGhlbWUtPnNjekNhcHRpb247CisKKyAgICAgICAgICAgICAgICBpZiAoOjpHZXRPcGVuRmlsZU5hbWVXKCZvZm4pKSB7CisgICAgICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBfZW5naW5lLT5TZXRMb2NhbFNvdXJjZSh3elBhY2thZ2VPckNvbnRhaW5lcklkLCB3elBheWxvYWRJZCwgb2ZuLmxwc3RyRmlsZSk7CisgICAgICAgICAgICAgICAgICAgIG5SZXN1bHQgPSBTVUNDRUVERUQoaHIpID8gSURSRVRSWSA6IElERVJST1I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgblJlc3VsdCA9IElEQ0FOQ0VMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh3ekRvd25sb2FkU291cmNlKSB7CisgICAgICAgICAgICAvLyBJZiBkb2luZyBhIG5vbi1pbnRlcmFjdGl2ZSBpbnN0YWxsIGFuZCBkb3dubG9hZCBzb3VyY2UgaXMgYXZhaWxhYmxlLCBsZXQncyB0cnkgZG93bmxvYWRpbmcgdGhlIHBhY2thZ2Ugc2lsZW50bHkKKyAgICAgICAgICAgIG5SZXN1bHQgPSBJRERPV05MT0FEOworICAgICAgICB9CisgICAgICAgIC8vIGVsc2UgdGhlcmUncyBub3RoaW5nIG1vcmUgd2UgY2FuIGRvIGluIG5vbi1pbnRlcmFjdGl2ZSBtb2RlCisKKyAgICAgICAgcmV0dXJuIENoZWNrQ2FuY2VsZWQoKSA/IElEQ0FOQ0VMIDogblJlc3VsdDsKKyAgICB9CisKKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyhpbnQpIE9uQXBwbHlDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMsIF9faW4gQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlQgcmVzdGFydCkgeworICAgICAgICBfcmVzdGFydFJlc3VsdCA9IHJlc3RhcnQ7IC8vIHJlbWVtYmVyIHRoZSByZXN0YXJ0IHJlc3VsdCBzbyB3ZSByZXR1cm4gdGhlIGNvcnJlY3QgZXJyb3IgY29kZSBubyBtYXR0ZXIgd2hhdCB0aGUgdXNlciBjaG9vc2VzIHRvIGRvIGluIHRoZSBVSS4KKworICAgICAgICAvLyBJZiBhIHJlc3RhcnQgd2FzIGVuY291bnRlcmVkIGFuZCB3ZSBhcmUgbm90IHN1cHByZXNzaW5nIHJlc3RhcnRzLCB0aGVuIHJlc3RhcnQgaXMgcmVxdWlyZWQuCisgICAgICAgIF9yZXN0YXJ0UmVxdWlyZWQgPSAoQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfTk9ORSAhPSByZXN0YXJ0ICYmIEJPT1RTVFJBUFBFUl9SRVNUQVJUX05FVkVSIDwgX2NvbW1hbmQucmVzdGFydCk7CisgICAgICAgIC8vIElmIGEgcmVzdGFydCBpcyByZXF1aXJlZCBhbmQgd2UncmUgbm90IGRpc3BsYXlpbmcgYSBVSSBvciB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIHByb21wdCBmb3IgcmVzdGFydCB0aGVuIGFsbG93IHRoZSByZXN0YXJ0LgorICAgICAgICBfYWxsb3dSZXN0YXJ0ID0gX3Jlc3RhcnRSZXF1aXJlZCAmJiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA+IF9jb21tYW5kLmRpc3BsYXkgfHwgQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUIDwgX2NvbW1hbmQucmVzdGFydCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHNob3dpbmcgVUksIHdhaXQgYSBiZWF0IGJlZm9yZSBtb3ZpbmcgdG8gdGhlIGZpbmFsIHNjcmVlbi4KKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9ESVNQTEFZX05PTkUgPCBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICA6OlNsZWVwKDI1MCk7CisgICAgICAgIH0KKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0FQUExJRUQsIGhyU3RhdHVzKTsKKyAgICAgICAgU2V0VGFza2JhckJ1dHRvblByb2dyZXNzKDEwMCk7IC8vIHNob3cgZnVsbCBwcm9ncmVzcyBiYXIsIGdyZWVuLCB5ZWxsb3csIG9yIHJlZAorCisgICAgICAgIHJldHVybiBJRE5PQUNUSU9OOworICAgIH0KKworICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkxhdW5jaEFwcHJvdmVkRXhlQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzLCBfX2luIERXT1JEIC8qcHJvY2Vzc0lkKi8pIHsKKyAgICAgICAgaWYgKEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9BQ0NFU1NfREVOSUVEKSA9PSBoclN0YXR1cykgeworICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKKyAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKworcHJpdmF0ZToKKyAgICAvLworICAgIC8vIFVpVGhyZWFkUHJvYyAtIGVudHJ5cG9pbnQgZm9yIFVJIHRocmVhZC4KKyAgICAvLworICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgVWlUaHJlYWRQcm9jKF9faW4gTFBWT0lEIHB2Q29udGV4dCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qIHBUaGlzID0gKFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKilwdkNvbnRleHQ7CisgICAgICAgIEJPT0wgY29tSW5pdGlhbGl6ZWQgPSBGQUxTRTsKKyAgICAgICAgQk9PTCByZXQgPSBGQUxTRTsKKyAgICAgICAgTVNHIG1zZyA9IHsgfTsKKworICAgICAgICAvLyBJbml0aWFsaXplIENPTSBhbmQgdGhlbWUuCisgICAgICAgIGhyID0gOjpDb0luaXRpYWxpemUobnVsbHB0cik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDT00uIik7CisgICAgICAgIGNvbUluaXRpYWxpemVkID0gVFJVRTsKKworICAgICAgICBociA9IFRoZW1lSW5pdGlhbGl6ZShwVGhpcy0+X2hNb2R1bGUpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlbWUgbWFuYWdlci4iKTsKKworICAgICAgICBociA9IHBUaGlzLT5Jbml0aWFsaXplRGF0YSgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgZGF0YSBpbiBib290c3RyYXBwZXIgYXBwbGljYXRpb24uIik7CisKKyAgICAgICAgLy8gQ3JlYXRlIG1haW4gd2luZG93LgorICAgICAgICBwVGhpcy0+SW5pdGlhbGl6ZVRhc2tiYXJCdXR0b24oKTsKKyAgICAgICAgaHIgPSBwVGhpcy0+Q3JlYXRlTWFpbldpbmRvdygpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBtYWluIHdpbmRvdy4iKTsKKworICAgICAgICBpZiAoRkFJTEVEKHBUaGlzLT5faHJGaW5hbCkpIHsKKyAgICAgICAgICAgIHBUaGlzLT5TZXRTdGF0ZShQWUJBX1NUQVRFX0ZBSUxFRCwgaHIpOworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcocFRoaXMtPl9oV25kLCBXTV9QWUJBX1NIT1dfRkFJTFVSRSwgMCwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBPa2F5LCB3ZSdyZSByZWFkeSBmb3IgcGFja2FnZXMgbm93LgorICAgICAgICAgICAgcFRoaXMtPlNldFN0YXRlKFBZQkFfU1RBVEVfSU5JVElBTElaRUQsIGhyKTsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKHBUaGlzLT5faFduZCwgQk9PVFNUUkFQUEVSX0FDVElPTl9IRUxQID09IHBUaGlzLT5fY29tbWFuZC5hY3Rpb24gPyBXTV9QWUJBX1NIT1dfSEVMUCA6IFdNX1BZQkFfREVURUNUX1BBQ0tBR0VTLCAwLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG1lc3NhZ2UgcHVtcAorICAgICAgICB3aGlsZSAoMCAhPSAocmV0ID0gOjpHZXRNZXNzYWdlVygmbXNnLCBudWxscHRyLCAwLCAwKSkpIHsKKyAgICAgICAgICAgIGlmICgtMSA9PSByZXQpIHsKKyAgICAgICAgICAgICAgICBociA9IEVfVU5FWFBFQ1RFRDsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiVW5leHBlY3RlZCByZXR1cm4gdmFsdWUgZnJvbSBtZXNzYWdlIHB1bXAuIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFUaGVtZUhhbmRsZUtleWJvYXJkTWVzc2FnZShwVGhpcy0+X3RoZW1lLCBtc2cuaHduZCwgJm1zZykpIHsKKyAgICAgICAgICAgICAgICA6OlRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7CisgICAgICAgICAgICAgICAgOjpEaXNwYXRjaE1lc3NhZ2VXKCZtc2cpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3VjY2VlZGVkIHRodXMgZmFyLCBjaGVjayB0byBzZWUgaWYgYW55dGhpbmcgd2VudCB3cm9uZyB3aGlsZSBhY3R1YWxseQorICAgICAgICAvLyBleGVjdXRpbmcgY2hhbmdlcy4KKyAgICAgICAgaWYgKEZBSUxFRChwVGhpcy0+X2hyRmluYWwpKSB7CisgICAgICAgICAgICBociA9IHBUaGlzLT5faHJGaW5hbDsKKyAgICAgICAgfSBlbHNlIGlmIChwVGhpcy0+Q2hlY2tDYW5jZWxlZCgpKSB7CisgICAgICAgICAgICBociA9IEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9JTlNUQUxMX1VTRVJFWElUKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIC8vIGRlc3Ryb3kgbWFpbiB3aW5kb3cKKyAgICAgICAgcFRoaXMtPkRlc3Ryb3lNYWluV2luZG93KCk7CisKKyAgICAgICAgLy8gaW5pdGlhdGUgZW5naW5lIHNodXRkb3duCisgICAgICAgIERXT1JEIGR3UXVpdCA9IEhSRVNVTFRfQ09ERShocik7CisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVF9JTklUSUFURUQgPT0gcFRoaXMtPl9yZXN0YXJ0UmVzdWx0KSB7CisgICAgICAgICAgICBkd1F1aXQgPSBFUlJPUl9TVUNDRVNTX1JFQk9PVF9JTklUSUFURUQ7CisgICAgICAgIH0gZWxzZSBpZiAoQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfUkVRVUlSRUQgPT0gcFRoaXMtPl9yZXN0YXJ0UmVzdWx0KSB7CisgICAgICAgICAgICBkd1F1aXQgPSBFUlJPUl9TVUNDRVNTX1JFQk9PVF9SRVFVSVJFRDsKKyAgICAgICAgfQorICAgICAgICBwVGhpcy0+X2VuZ2luZS0+UXVpdChkd1F1aXQpOworCisgICAgICAgIFJlbGVhc2VUaGVtZShwVGhpcy0+X3RoZW1lKTsKKyAgICAgICAgVGhlbWVVbmluaXRpYWxpemUoKTsKKworICAgICAgICAvLyB1bmluaXRpYWxpemUgQ09NCisgICAgICAgIGlmIChjb21Jbml0aWFsaXplZCkgeworICAgICAgICAgICAgOjpDb1VuaW5pdGlhbGl6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworICAgIC8vCisgICAgLy8gUGFyc2VWYXJpYWJsZXNGcm9tVW5hdHRlbmRYbWwgLSByZWFkcyBvcHRpb25zIGZyb20gdW5hdHRlbmQueG1sIGlmIGl0CisgICAgLy8gZXhpc3RzCisgICAgLy8KKyAgICBIUkVTVUxUIFBhcnNlVmFyaWFibGVzRnJvbVVuYXR0ZW5kWG1sKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjelVuYXR0ZW5kWG1sUGF0aCA9IG51bGxwdHI7CisgICAgICAgIElYTUxET01Eb2N1bWVudCAqcGl4ZFVuYXR0ZW5kID0gbnVsbHB0cjsKKyAgICAgICAgSVhNTERPTU5vZGVMaXN0ICpwTm9kZXMgPSBudWxscHRyOworICAgICAgICBJWE1MRE9NTm9kZSAqcE5vZGUgPSBudWxscHRyOworICAgICAgICBsb25nIGNOb2RlczsKKyAgICAgICAgRFdPUkQgZHdBdHRyOworICAgICAgICBMUFdTVFIgc2N6ID0gbnVsbHB0cjsKKyAgICAgICAgQk9PTCBiVmFsdWU7CisgICAgICAgIGludCBpVmFsdWU7CisgICAgICAgIEJPT0wgdHJ5Q29udmVydDsKKyAgICAgICAgQlNUUiBic3RyVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKEwiW1dpeEJ1bmRsZU9yaWdpbmFsU291cmNlRm9sZGVyXXVuYXR0ZW5kLnhtbCIsICZzY3pVbmF0dGVuZFhtbFBhdGgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNhbGN1bGF0ZSBwYXRoIHRvIHVuYXR0ZW5kLnhtbCIpOworCisgICAgICAgIGlmICghRmlsZUV4aXN0c0V4KHNjelVuYXR0ZW5kWG1sUGF0aCwgJmR3QXR0cikpIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1ZFUkJPU0UsICJEaWQgbm90IGZpbmQgJWxzIiwgc2N6VW5hdHRlbmRYbWxQYXRoKTsKKyAgICAgICAgICAgIGhyID0gU19GQUxTRTsKKyAgICAgICAgICAgIGdvdG8gTEV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBociA9IFhtbExvYWREb2N1bWVudEZyb21GaWxlKHNjelVuYXR0ZW5kWG1sUGF0aCwgJnBpeGRVbmF0dGVuZCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIHJlYWQgJWxzIiwgc2N6VW5hdHRlbmRYbWxQYXRoKTsKKworICAgICAgICAvLyBnZXQgdGhlIGxpc3Qgb2YgdmFyaWFibGVzIHVzZXJzIGhhdmUgb3ZlcnJpZGRlbgorICAgICAgICBociA9IFhtbFNlbGVjdE5vZGVzKHBpeGRVbmF0dGVuZCwgTCIvT3B0aW9ucy9PcHRpb24iLCAmcE5vZGVzKTsKKyAgICAgICAgaWYgKFNfRkFMU0UgPT0gaHIpIHsKKyAgICAgICAgICAgIEV4aXRGdW5jdGlvbjEoaHIgPSBTX09LKTsKKyAgICAgICAgfQorICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNlbGVjdCBvcHRpb24gbm9kZXMuIik7CisKKyAgICAgICAgaHIgPSBwTm9kZXMtPmdldF9sZW5ndGgoKGxvbmcqKSZjTm9kZXMpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBvcHRpb24gbm9kZSBjb3VudC4iKTsKKworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlJlYWRpbmcgc2V0dGluZ3MgZnJvbSAlbHMiLCBzY3pVbmF0dGVuZFhtbFBhdGgpOworCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBjTm9kZXM7ICsraSkgeworICAgICAgICAgICAgaHIgPSBYbWxOZXh0RWxlbWVudChwTm9kZXMsICZwTm9kZSwgbnVsbHB0cik7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBuZXh0IG5vZGUuIik7CisKKyAgICAgICAgICAgIC8vIEBOYW1lCisgICAgICAgICAgICBociA9IFhtbEdldEF0dHJpYnV0ZUV4KHBOb2RlLCBMIk5hbWUiLCAmc2N6KTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IEBOYW1lLiIpOworCisgICAgICAgICAgICB0cnlDb252ZXJ0ID0gVFJVRTsKKyAgICAgICAgICAgIGhyID0gWG1sR2V0QXR0cmlidXRlKHBOb2RlLCBMIlZhbHVlIiwgJmJzdHJWYWx1ZSk7CisgICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhYnN0clZhbHVlIHx8ICEqYnN0clZhbHVlKSB7CisgICAgICAgICAgICAgICAgaHIgPSBYbWxHZXRUZXh0KHBOb2RlLCAmYnN0clZhbHVlKTsKKyAgICAgICAgICAgICAgICB0cnlDb252ZXJ0ID0gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBAVmFsdWUuIik7CisKKyAgICAgICAgICAgIGlmICh0cnlDb252ZXJ0ICYmCisgICAgICAgICAgICAgICAgQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9JTlZBUklBTlQsIE5PUk1fSUdOT1JFQ0FTRSwgYnN0clZhbHVlLCAtMSwgTCJ5ZXMiLCAtMSkpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoc2N6LCAxKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHJ5Q29udmVydCAmJgorICAgICAgICAgICAgICAgICAgICAgICBDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX0lOVkFSSUFOVCwgTk9STV9JR05PUkVDQVNFLCBic3RyVmFsdWUsIC0xLCBMIm5vIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHNjeiwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRyeUNvbnZlcnQgJiYgOjpTdHJUb0ludEV4Vyhic3RyVmFsdWUsIFNUSUZfREVGQVVMVCwgJmlWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoc2N6LCBpVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhzY3osIGJzdHJWYWx1ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlbGVhc2VOdWxsQlNUUihic3RyVmFsdWUpOworICAgICAgICAgICAgUmVsZWFzZU51bGxTdHIoc2N6KTsKKyAgICAgICAgICAgIFJlbGVhc2VOdWxsT2JqZWN0KHBOb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmluaXNoZWQgcmVhZGluZyBmcm9tICVscyIsIHNjelVuYXR0ZW5kWG1sUGF0aCk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgUmVsZWFzZU9iamVjdChwTm9kZSk7CisgICAgICAgIFJlbGVhc2VPYmplY3QocE5vZGVzKTsKKyAgICAgICAgUmVsZWFzZU9iamVjdChwaXhkVW5hdHRlbmQpOworICAgICAgICBSZWxlYXNlU3RyKHNjelVuYXR0ZW5kWG1sUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBJbml0aWFsaXplRGF0YSAtIGluaXRpYWxpemVzIGFsbCB0aGUgcGFja2FnZSBpbmZvcm1hdGlvbi4KKyAgICAvLworICAgIEhSRVNVTFQgSW5pdGlhbGl6ZURhdGEoKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBMUFdTVFIgc2N6TW9kdWxlUGF0aCA9IG51bGxwdHI7CisgICAgICAgIElYTUxET01Eb2N1bWVudCAqcGl4ZE1hbmlmZXN0ID0gbnVsbHB0cjsKKworICAgICAgICBociA9IEJhbE1hbmlmZXN0TG9hZChfaE1vZHVsZSwgJnBpeGRNYW5pZmVzdCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24gbWFuaWZlc3QuIik7CisKKyAgICAgICAgaHIgPSBQYXJzZU92ZXJyaWRhYmxlVmFyaWFibGVzRnJvbVhtbChwaXhkTWFuaWZlc3QpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHJlYWQgb3ZlcnJpZGFibGUgdmFyaWFibGVzLiIpOworCisgICAgICAgIGhyID0gUGFyc2VWYXJpYWJsZXNGcm9tVW5hdHRlbmRYbWwoKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byByZWFkIHVuYXR0ZW5kLmluaSBmaWxlLiIpOworCisgICAgICAgIGhyID0gUHJvY2Vzc0NvbW1hbmRMaW5lKCZfbGFuZ3VhZ2UpOworICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiVW5rbm93biBjb21tYW5kbGluZSBwYXJhbWV0ZXJzLiIpOworCisgICAgICAgIGhyID0gUGF0aFJlbGF0aXZlVG9Nb2R1bGUoJnNjek1vZHVsZVBhdGgsIG51bGxwdHIsIF9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgbW9kdWxlIHBhdGguIik7CisKKyAgICAgICAgaHIgPSBMb2FkTG9jYWxpemF0aW9uKHNjek1vZHVsZVBhdGgsIF9sYW5ndWFnZSk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9hZCBsb2NhbGl6YXRpb24uIik7CisKKyAgICAgICAgaHIgPSBMb2FkVGhlbWUoc2N6TW9kdWxlUGF0aCwgX2xhbmd1YWdlKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIHRoZW1lLiIpOworCisgICAgICAgIGhyID0gQmFsSW5mb1BhcnNlRnJvbVhtbCgmX2J1bmRsZSwgcGl4ZE1hbmlmZXN0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIGJ1bmRsZSBpbmZvcm1hdGlvbi4iKTsKKworICAgICAgICBociA9IEJhbENvbmRpdGlvbnNQYXJzZUZyb21YbWwoJl9jb25kaXRpb25zLCBwaXhkTWFuaWZlc3QsIF93aXhMb2MpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgY29uZGl0aW9ucyBmcm9tIFhNTC4iKTsKKworICAgICAgICBociA9IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGxvYWQgYm9vdHN0cmFwcGVyIGZ1bmN0aW9ucy4iKTsKKyAgICAgICAgaHIgPSBVcGRhdGVVSVN0cmluZ3MoX2NvbW1hbmQuYWN0aW9uKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIFVJIHN0cmluZ3MuIik7CisKKyAgICAgICAgR2V0QnVuZGxlRmlsZVZlcnNpb24oKTsKKyAgICAgICAgLy8gZG9uJ3QgZmFpbCBpZiB3ZSBjb3VsZG4ndCBnZXQgdGhlIHZlcnNpb24gaW5mbzsgYmVzdC1lZmZvcnQgb25seQorICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlT2JqZWN0KHBpeGRNYW5pZmVzdCk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6TW9kdWxlUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBQcm9jZXNzQ29tbWFuZExpbmUgLSBwcm9jZXNzIHRoZSBwcm92aWRlZCBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorICAgIC8vCisgICAgSFJFU1VMVCBQcm9jZXNzQ29tbWFuZExpbmUoX19pbm91dCBMUFdTVFIqIHBzY3pMYW5ndWFnZSkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgaW50IGFyZ2MgPSAwOworICAgICAgICBMUFdTVFIqIGFyZ3YgPSBudWxscHRyOworICAgICAgICBMUFdTVFIgc2N6VmFyaWFibGVOYW1lID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjelZhcmlhYmxlVmFsdWUgPSBudWxscHRyOworCisgICAgICAgIGlmIChfY29tbWFuZC53ekNvbW1hbmRMaW5lICYmICpfY29tbWFuZC53ekNvbW1hbmRMaW5lKSB7CisgICAgICAgICAgICBhcmd2ID0gOjpDb21tYW5kTGluZVRvQXJndlcoX2NvbW1hbmQud3pDb21tYW5kTGluZSwgJmFyZ2MpOworICAgICAgICAgICAgRXhpdE9uTnVsbFdpdGhMYXN0RXJyb3IoYXJndiwgaHIsICJGYWlsZWQgdG8gZ2V0IGNvbW1hbmQgbGluZS4iKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdjOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXJndltpXVswXSA9PSBMJy0nIHx8IGFyZ3ZbaV1bMF0gPT0gTCcvJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9JTlZBUklBTlQsIE5PUk1fSUdOT1JFQ0FTRSwgJmFyZ3ZbaV1bMV0sIC0xLCBMImxhbmciLCAtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA+PSBhcmdjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBFX0lOVkFMSURBUkc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIk11c3Qgc3BlY2lmeSBhIGxhbmd1YWdlLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICArK2k7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcocHNjekxhbmd1YWdlLCAmYXJndltpXVswXSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNvcHkgbGFuZ3VhZ2UuIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQ1NUUl9FUVVBTCA9PSA6OkNvbXBhcmVTdHJpbmdXKExPQ0FMRV9JTlZBUklBTlQsIE5PUk1fSUdOT1JFQ0FTRSwgJmFyZ3ZbaV1bMV0sIC0xLCBMInNpbXBsZSIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiU2ltcGxlSW5zdGFsbCIsIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfb3ZlcnJpZGFibGVWYXJpYWJsZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlOworICAgICAgICAgICAgICAgICAgICBjb25zdCB3Y2hhcl90KiBwd2MgPSB3Y3NjaHIoYXJndltpXSwgTCc9Jyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwd2MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcoJnNjelZhcmlhYmxlTmFtZSwgYXJndltpXSwgcHdjIC0gYXJndltpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNvcHkgdmFyaWFibGUgbmFtZS4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBEaWN0S2V5RXhpc3RzKF9vdmVycmlkYWJsZVZhcmlhYmxlcywgc2N6VmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChFX05PVEZPVU5EID09IGhyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJJZ25vcmluZyBhdHRlbXB0IHRvIHNldCBub24tb3ZlcnJpZGFibGUgdmFyaWFibGU6ICclbHMnLiIsIHNjelZhcmlhYmxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBTX09LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjaGVjayB0aGUgZGljdGlvbmFyeSBvZiBvdmVycmlkYWJsZSB2YXJpYWJsZXMuIik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NTdHJpbmcoJnNjelZhcmlhYmxlVmFsdWUsICsrcHdjLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gY29weSB2YXJpYWJsZSB2YWx1ZS4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDo6U3RyVG9JbnRFeChzY3pWYXJpYWJsZVZhbHVlLCBTVElGX0RFRkFVTFQsICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBociA9IF9lbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhzY3pWYXJpYWJsZU5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZyhzY3pWYXJpYWJsZU5hbWUsIHNjelZhcmlhYmxlVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzZXQgdmFyaWFibGUuIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIklnbm9yaW5nIHVua25vd24gYXJndW1lbnQ6ICVscyIsIGFyZ3ZbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgaWYgKGFyZ3YpIHsKKyAgICAgICAgICAgIDo6TG9jYWxGcmVlKGFyZ3YpOworICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cihzY3pWYXJpYWJsZU5hbWUpOworICAgICAgICBSZWxlYXNlU3RyKHNjelZhcmlhYmxlVmFsdWUpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKyAgICBIUkVTVUxUIExvYWRMb2NhbGl6YXRpb24oX19pbl96IExQQ1dTVFIgd3pNb2R1bGVQYXRoLCBfX2luX3pfb3B0IExQQ1dTVFIgd3pMYW5ndWFnZSkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjekxvY1BhdGggPSBudWxscHRyOworICAgICAgICBMUENXU1RSIHd6TG9jRmlsZU5hbWUgPSBMIkRlZmF1bHQud3hsIjsKKworICAgICAgICBociA9IExvY1Byb2JlRm9yRmlsZSh3ek1vZHVsZVBhdGgsIHd6TG9jRmlsZU5hbWUsIHd6TGFuZ3VhZ2UsICZzY3pMb2NQYXRoKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTIoaHIsICJGYWlsZWQgdG8gcHJvYmUgZm9yIGxvYyBmaWxlOiAlbHMgaW4gcGF0aDogJWxzIiwgd3pMb2NGaWxlTmFtZSwgd3pNb2R1bGVQYXRoKTsKKworICAgICAgICBociA9IExvY0xvYWRGcm9tRmlsZShzY3pMb2NQYXRoLCAmX3dpeExvYyk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvYWQgbG9jIGZpbGUgZnJvbSBwYXRoOiAlbHMiLCBzY3pMb2NQYXRoKTsKKworICAgICAgICBpZiAoV0lYX0xPQ0FMSVpBVElPTl9MQU5HVUFHRV9OT1RfU0VUICE9IF93aXhMb2MtPmR3TGFuZ0lkKSB7CisgICAgICAgICAgICA6OlNldFRocmVhZExvY2FsZShfd2l4TG9jLT5kd0xhbmdJZCk7CisgICAgICAgIH0KKworICAgICAgICBociA9IFN0ckFsbG9jU3RyaW5nKCZfY29uZmlybUNsb3NlTWVzc2FnZSwgTCIjKGxvYy5Db25maXJtQ2FuY2VsTWVzc2FnZSkiLCAwKTsKKyAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBpbml0aWFsaXplIGNvbmZpcm0gbWVzc2FnZSBsb2MgaWRlbnRpZmllci4iKTsKKworICAgICAgICBociA9IExvY0xvY2FsaXplU3RyaW5nKF93aXhMb2MsICZfY29uZmlybUNsb3NlTWVzc2FnZSk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvY2FsaXplIGNvbmZpcm0gY2xvc2UgbWVzc2FnZTogJWxzIiwgX2NvbmZpcm1DbG9zZU1lc3NhZ2UpOworCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VTdHIoc2N6TG9jUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgSFJFU1VMVCBMb2FkVGhlbWUoX19pbl96IExQQ1dTVFIgd3pNb2R1bGVQYXRoLCBfX2luX3pfb3B0IExQQ1dTVFIgd3pMYW5ndWFnZSkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjelRoZW1lUGF0aCA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgd3pUaGVtZUZpbGVOYW1lID0gTCJEZWZhdWx0LnRobSI7CisgICAgICAgIExQV1NUUiBzY3pDYXB0aW9uID0gbnVsbHB0cjsKKworICAgICAgICBociA9IExvY1Byb2JlRm9yRmlsZSh3ek1vZHVsZVBhdGgsIHd6VGhlbWVGaWxlTmFtZSwgd3pMYW5ndWFnZSwgJnNjelRoZW1lUGF0aCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUyKGhyLCAiRmFpbGVkIHRvIHByb2JlIGZvciB0aGVtZSBmaWxlOiAlbHMgaW4gcGF0aDogJWxzIiwgd3pUaGVtZUZpbGVOYW1lLCB3ek1vZHVsZVBhdGgpOworCisgICAgICAgIGhyID0gVGhlbWVMb2FkRnJvbUZpbGUoc2N6VGhlbWVQYXRoLCAmX3RoZW1lKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbG9hZCB0aGVtZSBmcm9tIHBhdGg6ICVscyIsIHNjelRoZW1lUGF0aCk7CisKKyAgICAgICAgaHIgPSBUaGVtZUxvY2FsaXplKF90aGVtZSwgX3dpeExvYyk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxvY2FsaXplIHRoZW1lOiAlbHMiLCBzY3pUaGVtZVBhdGgpOworCisgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FwdGlvbiBpZiB0aGVyZSBhcmUgYW55IGZvcm1hdHRlZCBzdHJpbmdzIGluIGl0LgorICAgICAgICAvLyBJZiB0aGUgd2l4IGRldmVsb3BlciBpcyBzaG93aW5nIGEgaGlkZGVuIHZhcmlhYmxlIGluIHRoZSBVSSwgdGhlbgorICAgICAgICAvLyBvYnZpb3VzbHkgdGhleSBkb24ndCBjYXJlIGFib3V0IGtlZXBpbmcgaXQgc2FmZSBzbyBkb24ndCBnbyBkb3duIHRoZQorICAgICAgICAvLyByYWJiaXQgaG9sZSBvZiBtYWtpbmcgc3VyZSB0aGF0IHRoaXMgaXMgc2VjdXJlbHkgZnJlZWQuCisgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKF90aGVtZS0+c2N6Q2FwdGlvbiwgJnNjekNhcHRpb24pOworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgVGhlbWVVcGRhdGVDYXB0aW9uKF90aGVtZSwgc2N6Q2FwdGlvbik7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlU3RyKHNjekNhcHRpb24pOworICAgICAgICBSZWxlYXNlU3RyKHNjelRoZW1lUGF0aCk7CisKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgSFJFU1VMVCBQYXJzZU92ZXJyaWRhYmxlVmFyaWFibGVzRnJvbVhtbChfX2luIElYTUxET01Eb2N1bWVudCogcGl4ZE1hbmlmZXN0KSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBJWE1MRE9NTm9kZSogcE5vZGUgPSBudWxscHRyOworICAgICAgICBJWE1MRE9NTm9kZUxpc3QqIHBOb2RlcyA9IG51bGxwdHI7CisgICAgICAgIERXT1JEIGNOb2RlcyA9IDA7CisgICAgICAgIExQV1NUUiBzY3ogPSBudWxscHRyOworICAgICAgICBCT09MIGhpZGRlbiA9IEZBTFNFOworCisgICAgICAgIC8vIGdldCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMgdXNlcnMgY2FuIG92ZXJyaWRlIG9uIHRoZSBjb21tYW5kIGxpbmUKKyAgICAgICAgaHIgPSBYbWxTZWxlY3ROb2RlcyhwaXhkTWFuaWZlc3QsIEwiL0Jvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGF0YS9XaXhTdGRiYU92ZXJyaWRhYmxlVmFyaWFibGUiLCAmcE5vZGVzKTsKKyAgICAgICAgaWYgKFNfRkFMU0UgPT0gaHIpIHsKKyAgICAgICAgICAgIEV4aXRGdW5jdGlvbjEoaHIgPSBTX09LKTsKKyAgICAgICAgfQorICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHNlbGVjdCBvdmVycmlkYWJsZSB2YXJpYWJsZSBub2Rlcy4iKTsKKworICAgICAgICBociA9IHBOb2Rlcy0+Z2V0X2xlbmd0aCgobG9uZyopJmNOb2Rlcyk7CisgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IG92ZXJyaWRhYmxlIHZhcmlhYmxlIG5vZGUgY291bnQuIik7CisKKyAgICAgICAgaWYgKGNOb2RlcykgeworICAgICAgICAgICAgaHIgPSBEaWN0Q3JlYXRlU3RyaW5nTGlzdCgmX292ZXJyaWRhYmxlVmFyaWFibGVzLCAzMiwgRElDVF9GTEFHX05PTkUpOworICAgICAgICAgICAgRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgdGhlIHN0cmluZyBkaWN0aW9uYXJ5LiIpOworCisgICAgICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgY05vZGVzOyArK2kpIHsKKyAgICAgICAgICAgICAgICBociA9IFhtbE5leHRFbGVtZW50KHBOb2RlcywgJnBOb2RlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBuZXh0IG5vZGUuIik7CisKKyAgICAgICAgICAgICAgICAvLyBATmFtZQorICAgICAgICAgICAgICAgIGhyID0gWG1sR2V0QXR0cmlidXRlRXgocE5vZGUsIEwiTmFtZSIsICZzY3opOworICAgICAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZ2V0IEBOYW1lLiIpOworCisgICAgICAgICAgICAgICAgaHIgPSBYbWxHZXRZZXNOb0F0dHJpYnV0ZShwTm9kZSwgTCJIaWRkZW4iLCAmaGlkZGVuKTsKKworICAgICAgICAgICAgICAgIGlmICghaGlkZGVuKSB7CisgICAgICAgICAgICAgICAgICAgIGhyID0gRGljdEFkZEtleShfb3ZlcnJpZGFibGVWYXJpYWJsZXMsIHNjeik7CisgICAgICAgICAgICAgICAgICAgIEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGFkZCBcIiVsc1wiIHRvIHRoZSBzdHJpbmcgZGljdGlvbmFyeS4iLCBzY3opOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHByZXBhcmUgbmV4dCBpdGVyYXRpb24KKyAgICAgICAgICAgICAgICBSZWxlYXNlTnVsbE9iamVjdChwTm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlT2JqZWN0KHBOb2RlKTsKKyAgICAgICAgUmVsZWFzZU9iamVjdChwTm9kZXMpOworICAgICAgICBSZWxlYXNlU3RyKHNjeik7CisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gR2V0IHRoZSBmaWxlIHZlcnNpb24gb2YgdGhlIGJvb3RzdHJhcHBlciBhbmQgcmVjb3JkIGluIGJvb3RzdHJhcHBlciBsb2cgZmlsZQorICAgIC8vCisgICAgSFJFU1VMVCBHZXRCdW5kbGVGaWxlVmVyc2lvbigpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIFVMQVJHRV9JTlRFR0VSIHVsaVZlcnNpb24gPSB7IH07CisgICAgICAgIExQV1NUUiBzY3pDdXJyZW50UGF0aCA9IG51bGxwdHI7CisKKyAgICAgICAgaHIgPSBQYXRoRm9yQ3VycmVudFByb2Nlc3MoJnNjekN1cnJlbnRQYXRoLCBudWxscHRyKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgYnVuZGxlIHBhdGguIik7CisKKyAgICAgICAgaHIgPSBGaWxlVmVyc2lvbihzY3pDdXJyZW50UGF0aCwgJnVsaVZlcnNpb24uSGlnaFBhcnQsICZ1bGlWZXJzaW9uLkxvd1BhcnQpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGdldCBidW5kbGUgZmlsZSB2ZXJzaW9uLiIpOworCisgICAgICAgIGhyID0gX2VuZ2luZS0+U2V0VmFyaWFibGVWZXJzaW9uKFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiwgdWxpVmVyc2lvbi5RdWFkUGFydCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc2V0IFdpeEJ1bmRsZUZpbGVWZXJzaW9uIHZhcmlhYmxlLiIpOworCisgICAgTEV4aXQ6CisgICAgICAgIFJlbGVhc2VTdHIoc2N6Q3VycmVudFBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gQ3JlYXRlTWFpbldpbmRvdyAtIGNyZWF0ZXMgdGhlIG1haW4gaW5zdGFsbCB3aW5kb3cuCisgICAgLy8KKyAgICBIUkVTVUxUIENyZWF0ZU1haW5XaW5kb3coKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworICAgICAgICBISUNPTiBoSWNvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8SElDT04+KF90aGVtZS0+aEljb24pOworICAgICAgICBXTkRDTEFTU1cgd2MgPSB7IH07CisgICAgICAgIERXT1JEIGR3V2luZG93U3R5bGUgPSAwOworICAgICAgICBpbnQgeCA9IENXX1VTRURFRkFVTFQ7CisgICAgICAgIGludCB5ID0gQ1dfVVNFREVGQVVMVDsKKyAgICAgICAgUE9JTlQgcHRDdXJzb3IgPSB7IH07CisgICAgICAgIEhNT05JVE9SIGhNb25pdG9yID0gbnVsbHB0cjsKKyAgICAgICAgTU9OSVRPUklORk8gbWkgPSB7IH07CisgICAgICAgIENPTE9SUkVGIGZnLCBiZzsKKyAgICAgICAgSEJSVVNIIGJnQnJ1c2g7CisKKyAgICAgICAgLy8gSWYgdGhlIHRoZW1lIGRpZCBub3QgcHJvdmlkZSBhbiBpY29uLCB0cnkgdXNpbmcgdGhlIGljb24gZnJvbSB0aGUgYnVuZGxlIGVuZ2luZS4KKyAgICAgICAgaWYgKCFoSWNvbikgeworICAgICAgICAgICAgSE1PRFVMRSBoQm9vdHN0cmFwcGVyRW5naW5lID0gOjpHZXRNb2R1bGVIYW5kbGVXKG51bGxwdHIpOworICAgICAgICAgICAgaWYgKGhCb290c3RyYXBwZXJFbmdpbmUpIHsKKyAgICAgICAgICAgICAgICBoSWNvbiA9IDo6TG9hZEljb25XKGhCb290c3RyYXBwZXJFbmdpbmUsIE1BS0VJTlRSRVNPVVJDRVcoMSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmcgPSBSR0IoMCwgMCwgMCk7CisgICAgICAgIGJnID0gUkdCKDI1NSwgMjU1LCAyNTUpOworICAgICAgICBiZ0JydXNoID0gKEhCUlVTSCkoQ09MT1JfV0lORE9XKzEpOworICAgICAgICBpZiAoX3RoZW1lLT5kd0ZvbnRJZCA8IF90aGVtZS0+Y0ZvbnRzKSB7CisgICAgICAgICAgICBUSEVNRV9GT05UICpmb250ID0gJl90aGVtZS0+cmdGb250c1tfdGhlbWUtPmR3Rm9udElkXTsKKyAgICAgICAgICAgIGZnID0gZm9udC0+Y3JGb3JlZ3JvdW5kOworICAgICAgICAgICAgYmcgPSBmb250LT5jckJhY2tncm91bmQ7CisgICAgICAgICAgICBiZ0JydXNoID0gZm9udC0+aEJhY2tncm91bmQ7CisgICAgICAgICAgICBSZW1hcENvbG9yKCZmZywgJmJnLCAmYmdCcnVzaCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWdpc3RlciB0aGUgd2luZG93IGNsYXNzIGFuZCBjcmVhdGUgdGhlIHdpbmRvdy4KKyAgICAgICAgd2MubHBmblduZFByb2MgPSBQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbjo6V25kUHJvYzsKKyAgICAgICAgd2MuaEluc3RhbmNlID0gX2hNb2R1bGU7CisgICAgICAgIHdjLmhJY29uID0gaEljb247CisgICAgICAgIHdjLmhDdXJzb3IgPSA6OkxvYWRDdXJzb3JXKG51bGxwdHIsIChMUENXU1RSKUlEQ19BUlJPVyk7CisgICAgICAgIHdjLmhickJhY2tncm91bmQgPSBiZ0JydXNoOworICAgICAgICB3Yy5scHN6TWVudU5hbWUgPSBudWxscHRyOworICAgICAgICB3Yy5scHN6Q2xhc3NOYW1lID0gUFlCQV9XSU5ET1dfQ0xBU1M7CisgICAgICAgIGlmICghOjpSZWdpc3RlckNsYXNzVygmd2MpKSB7CisgICAgICAgICAgICBFeGl0V2l0aExhc3RFcnJvcihociwgIkZhaWxlZCB0byByZWdpc3RlciB3aW5kb3cuIik7CisgICAgICAgIH0KKworICAgICAgICBfcmVnaXN0ZXJlZCA9IFRSVUU7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB3aW5kb3cgc3R5bGUgYmFzZWQgb24gdGhlIHRoZW1lIHN0eWxlIGFuZCBjb21tYW5kIGRpc3BsYXkgdmFsdWUuCisgICAgICAgIGR3V2luZG93U3R5bGUgPSBfdGhlbWUtPmR3U3R5bGU7CisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9OT05FID49IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIGR3V2luZG93U3R5bGUgJj0gfldTX1ZJU0lCTEU7CisgICAgICAgIH0KKworICAgICAgICAvLyBEb24ndCBzaG93IHRoZSB3aW5kb3cgaWYgdGhlcmUgaXMgYSBzcGxhc2ggc2NyZWVuIChpdCB3aWxsIGJlIG1hZGUgdmlzaWJsZSB3aGVuIHRoZSBzcGxhc2ggc2NyZWVuIGlzIGhpZGRlbikKKyAgICAgICAgaWYgKDo6SXNXaW5kb3coX2NvbW1hbmQuaHduZFNwbGFzaFNjcmVlbikpIHsKKyAgICAgICAgICAgIGR3V2luZG93U3R5bGUgJj0gfldTX1ZJU0lCTEU7CisgICAgICAgIH0KKworICAgICAgICAvLyBDZW50ZXIgdGhlIHdpbmRvdyBvbiB0aGUgbW9uaXRvciB3aXRoIHRoZSBtb3VzZS4KKyAgICAgICAgaWYgKDo6R2V0Q3Vyc29yUG9zKCZwdEN1cnNvcikpIHsKKyAgICAgICAgICAgIGhNb25pdG9yID0gOjpNb25pdG9yRnJvbVBvaW50KHB0Q3Vyc29yLCBNT05JVE9SX0RFRkFVTFRUT05FQVJFU1QpOworICAgICAgICAgICAgaWYgKGhNb25pdG9yKSB7CisgICAgICAgICAgICAgICAgbWkuY2JTaXplID0gc2l6ZW9mKG1pKTsKKyAgICAgICAgICAgICAgICBpZiAoOjpHZXRNb25pdG9ySW5mb1coaE1vbml0b3IsICZtaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgeCA9IG1pLnJjV29yay5sZWZ0ICsgKG1pLnJjV29yay5yaWdodCAtIG1pLnJjV29yay5sZWZ0IC0gX3RoZW1lLT5uV2lkdGgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgeSA9IG1pLnJjV29yay50b3AgKyAobWkucmNXb3JrLmJvdHRvbSAtIG1pLnJjV29yay50b3AgLSBfdGhlbWUtPm5IZWlnaHQpIC8gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBfaFduZCA9IDo6Q3JlYXRlV2luZG93RXhXKAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIHdjLmxwc3pDbGFzc05hbWUsCisgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24sCisgICAgICAgICAgICBkd1dpbmRvd1N0eWxlLAorICAgICAgICAgICAgeCwKKyAgICAgICAgICAgIHksCisgICAgICAgICAgICBfdGhlbWUtPm5XaWR0aCwKKyAgICAgICAgICAgIF90aGVtZS0+bkhlaWdodCwKKyAgICAgICAgICAgIEhXTkRfREVTS1RPUCwKKyAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICBfaE1vZHVsZSwKKyAgICAgICAgICAgIHRoaXMKKyAgICAgICAgKTsKKyAgICAgICAgRXhpdE9uTnVsbFdpdGhMYXN0RXJyb3IoX2hXbmQsIGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSB3aW5kb3cuIik7CisKKyAgICAgICAgaHIgPSBTX09LOworCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gSW5pdGlhbGl6ZVRhc2tiYXJCdXR0b24gLSBpbml0aWFsaXplcyB0YXNrYmFyIGJ1dHRvbiBmb3IgcHJvZ3Jlc3MuCisgICAgLy8KKyAgICB2b2lkIEluaXRpYWxpemVUYXNrYmFyQnV0dG9uKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBociA9IDo6Q29DcmVhdGVJbnN0YW5jZShDTFNJRF9UYXNrYmFyTGlzdCwgbnVsbHB0ciwgQ0xTQ1RYX0FMTCwgX191dWlkb2YoSVRhc2tiYXJMaXN0MyksIHJlaW50ZXJwcmV0X2Nhc3Q8TFBWT0lEKj4oJl90YXNrYmFyTGlzdCkpOworICAgICAgICBpZiAoUkVHREJfRV9DTEFTU05PVFJFRyA9PSBocikgeworICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBiZWZvcmUgV2luZG93cyA3CisgICAgICAgICAgICBFeGl0RnVuY3Rpb24xKGhyID0gU19PSyk7CisgICAgICAgIH0KKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgSVRhc2tiYXJMaXN0My4gQ29udGludWluZy4iKTsKKworICAgICAgICBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlID0gOjpSZWdpc3RlcldpbmRvd01lc3NhZ2VXKEwiVGFza2JhckJ1dHRvbkNyZWF0ZWQiKTsKKyAgICAgICAgQmFsRXhpdE9uTnVsbFdpdGhMYXN0RXJyb3IoX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSwgaHIsICJGYWlsZWQgdG8gZ2V0IFRhc2tiYXJCdXR0b25DcmVhdGVkIG1lc3NhZ2UuIENvbnRpbnVpbmcuIik7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vCisgICAgLy8gRGVzdHJveU1haW5XaW5kb3cgLSBjbGVhbiB1cCBhbGwgdGhlIHdpbmRvdyByZWdpc3RyYXRpb24uCisgICAgLy8KKyAgICB2b2lkIERlc3Ryb3lNYWluV2luZG93KCkgeworICAgICAgICBpZiAoOjpJc1dpbmRvdyhfaFduZCkpIHsKKyAgICAgICAgICAgIDo6RGVzdHJveVdpbmRvdyhfaFduZCk7CisgICAgICAgICAgICBfaFduZCA9IG51bGxwdHI7CisgICAgICAgICAgICBfdGFza2JhckJ1dHRvbk9LID0gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX3JlZ2lzdGVyZWQpIHsKKyAgICAgICAgICAgIDo6VW5yZWdpc3RlckNsYXNzVyhQWUJBX1dJTkRPV19DTEFTUywgX2hNb2R1bGUpOworICAgICAgICAgICAgX3JlZ2lzdGVyZWQgPSBGQUxTRTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLy8KKyAgICAvLyBXbmRQcm9jIC0gc3RhbmRhcmQgd2luZG93cyBtZXNzYWdlIGhhbmRsZXIuCisgICAgLy8KKyAgICBzdGF0aWMgTFJFU1VMVCBDQUxMQkFDSyBXbmRQcm9jKAorICAgICAgICBfX2luIEhXTkQgaFduZCwKKyAgICAgICAgX19pbiBVSU5UIHVNc2csCisgICAgICAgIF9faW4gV1BBUkFNIHdQYXJhbSwKKyAgICAgICAgX19pbiBMUEFSQU0gbFBhcmFtCisgICAgKSB7CisjcHJhZ21hIHdhcm5pbmcoc3VwcHJlc3M6NDMxMikKKyAgICAgICAgYXV0byBwQkEgPSByZWludGVycHJldF9jYXN0PFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKj4oOjpHZXRXaW5kb3dMb25nUHRyVyhoV25kLCBHV0xQX1VTRVJEQVRBKSk7CisKKyAgICAgICAgc3dpdGNoICh1TXNnKSB7CisgICAgICAgIGNhc2UgV01fTkNDUkVBVEU6IHsKKyAgICAgICAgICAgIExQQ1JFQVRFU1RSVUNUIGxwY3MgPSByZWludGVycHJldF9jYXN0PExQQ1JFQVRFU1RSVUNUPihsUGFyYW0pOworICAgICAgICAgICAgcEJBID0gcmVpbnRlcnByZXRfY2FzdDxQeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbio+KGxwY3MtPmxwQ3JlYXRlUGFyYW1zKTsKKyNwcmFnbWEgd2FybmluZyhzdXBwcmVzczo0MjQ0KQorICAgICAgICAgICAgOjpTZXRXaW5kb3dMb25nUHRyVyhoV25kLCBHV0xQX1VTRVJEQVRBLCByZWludGVycHJldF9jYXN0PExPTkdfUFRSPihwQkEpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBXTV9OQ0RFU1RST1k6IHsKKyAgICAgICAgICAgIExSRVNVTFQgbHJlcyA9IFRoZW1lRGVmV2luZG93UHJvYyhwQkEgPyBwQkEtPl90aGVtZSA6IG51bGxwdHIsIGhXbmQsIHVNc2csIHdQYXJhbSwgbFBhcmFtKTsKKyAgICAgICAgICAgIDo6U2V0V2luZG93TG9uZ1B0clcoaFduZCwgR1dMUF9VU0VSREFUQSwgMCk7CisgICAgICAgICAgICByZXR1cm4gbHJlczsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgV01fQ1JFQVRFOiAKKyAgICAgICAgICAgIGlmICghcEJBLT5PbkNyZWF0ZShoV25kKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fUVVFUllFTkRTRVNTSU9OOgorICAgICAgICAgICAgcmV0dXJuIElEQ0FOQ0VMICE9IHBCQS0+T25TeXN0ZW1TaHV0ZG93bihzdGF0aWNfY2FzdDxEV09SRD4obFBhcmFtKSwgSURDQU5DRUwpOworCisgICAgICAgIGNhc2UgV01fQ0xPU0U6CisgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBjaG9zZSBub3QgdG8gY2xvc2UsIGRvICpub3QqIGxldCB0aGUgZGVmYXVsdCB3aW5kb3cgcHJvYyBoYW5kbGUgdGhlIG1lc3NhZ2UuCisgICAgICAgICAgICBpZiAoIXBCQS0+T25DbG9zZSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX0RFU1RST1k6CisgICAgICAgICAgICA6OlBvc3RRdWl0TWVzc2FnZSgwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fUEFJTlQ6IF9fZmFsbHRocm91Z2g7CisgICAgICAgIGNhc2UgV01fRVJBU0VCS0dORDoKKyAgICAgICAgICAgIGlmIChwQkEgJiYgcEJBLT5fc3VwcHJlc3NQYWludCkgeworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX1NIT1dfSEVMUDoKKyAgICAgICAgICAgIHBCQS0+T25TaG93SGVscCgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBXTV9QWUJBX0RFVEVDVF9QQUNLQUdFUzoKKyAgICAgICAgICAgIHBCQS0+T25EZXRlY3QoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9QTEFOX1BBQ0tBR0VTOgorICAgICAgICAgICAgcEJBLT5PblBsYW4oc3RhdGljX2Nhc3Q8Qk9PVFNUUkFQUEVSX0FDVElPTj4obFBhcmFtKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfQVBQTFlfUEFDS0FHRVM6CisgICAgICAgICAgICBwQkEtPk9uQXBwbHkoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgV01fUFlCQV9DSEFOR0VfU1RBVEU6CisgICAgICAgICAgICBwQkEtPk9uQ2hhbmdlU3RhdGUoc3RhdGljX2Nhc3Q8UFlCQV9TVEFURT4obFBhcmFtKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX1BZQkFfU0hPV19GQUlMVVJFOgorICAgICAgICAgICAgcEJBLT5PblNob3dGYWlsdXJlKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIFdNX0NPTU1BTkQ6CisgICAgICAgICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CisgICAgICAgICAgICAvLyBDdXN0b21pemUgY29tbWFuZHMKKyAgICAgICAgICAgIC8vIFN1Y2Nlc3MvZmFpbHVyZSBjb21tYW5kcworICAgICAgICAgICAgY2FzZSBJRF9MQVVOQ0hfQlVUVE9OOgorICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja0xhdW5jaEJ1dHRvbigpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBjYXNlIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT046CisgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrUmVzdGFydEJ1dHRvbigpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBjYXNlIElEQ0FOQ0VMOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9JTlNUQUxMX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0NVU1RPTTFfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfQ1VTVE9NMl9DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9NT0RJRllfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBJRF9GQUlMVVJFX0NBTkNFTF9CVVRUT046IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIElEX0NMT1NFX0JVVFRPTjoKKyAgICAgICAgICAgICAgICBwQkEtPk9uQ29tbWFuZChJRF9DTE9TRV9CVVRUT04pOworICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHBCQS0+T25Db21tYW5kKChDT05UUk9MX0lEKUxPV09SRCh3UGFyYW0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV01fTk9USUZZOgorICAgICAgICAgICAgaWYgKGxQYXJhbSkgeworICAgICAgICAgICAgICAgIExQTk1IRFIgcG5taGRyID0gcmVpbnRlcnByZXRfY2FzdDxMUE5NSERSPihsUGFyYW0pOworICAgICAgICAgICAgICAgIHN3aXRjaCAocG5taGRyLT5jb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBOTV9DTElDSzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICBjYXNlIE5NX1JFVFVSTjoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxEV09SRD4ocG5taGRyLT5pZEZyb20pKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9MT0dGSUxFX0xJTks6CisgICAgICAgICAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tMb2dGaWxlTGluaygpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdNX0NUTENPTE9SU1RBVElDOgorICAgICAgICBjYXNlIFdNX0NUTENPTE9SQlROOgorICAgICAgICAgICAgaWYgKHBCQSkgeworICAgICAgICAgICAgICAgIEhCUlVTSCBicnVzaCA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgaWYgKHBCQS0+U2V0Q29udHJvbENvbG9yKChIV05EKWxQYXJhbSwgKEhEQyl3UGFyYW0sICZicnVzaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChMUkVTVUxUKWJydXNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBCQSAmJiBwQkEtPl90YXNrYmFyTGlzdCAmJiB1TXNnID09IHBCQS0+X3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSkgeworICAgICAgICAgICAgcEJBLT5fdGFza2JhckJ1dHRvbk9LID0gVFJVRTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFRoZW1lRGVmV2luZG93UHJvYyhwQkEgPyBwQkEtPl90aGVtZSA6IG51bGxwdHIsIGhXbmQsIHVNc2csIHdQYXJhbSwgbFBhcmFtKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE9uQ3JlYXRlIC0gZmluaXNoZXMgbG9hZGluZyB0aGUgdGhlbWUuCisgICAgLy8KKyAgICBCT09MIE9uQ3JlYXRlKF9faW4gSFdORCBoV25kKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGhyID0gVGhlbWVMb2FkQ29udHJvbHMoX3RoZW1lLCBoV25kLCBDT05UUk9MX0lEX05BTUVTLCBjb3VudG9mKENPTlRST0xfSURfTkFNRVMpKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2FkIHRoZW1lIGNvbnRyb2xzLiIpOworCisgICAgICAgIENfQVNTRVJUKENPVU5UX1BBR0UgPT0gY291bnRvZihQQUdFX05BTUVTKSk7CisgICAgICAgIENfQVNTRVJUKGNvdW50b2YoX3BhZ2VJZHMpID09IGNvdW50b2YoUEFHRV9OQU1FUykpOworCisgICAgICAgIFRoZW1lR2V0UGFnZUlkcyhfdGhlbWUsIFBBR0VfTkFNRVMsIF9wYWdlSWRzLCBjb3VudG9mKF9wYWdlSWRzKSk7CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dCBvbiBhbGwgImFwcGxpY2F0aW9uIiAobm9uLXBhZ2UpIGNvbnRyb2xzLgorICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgX3RoZW1lLT5jQ29udHJvbHM7ICsraSkgeworICAgICAgICAgICAgVEhFTUVfQ09OVFJPTCogcENvbnRyb2wgPSBfdGhlbWUtPnJnQ29udHJvbHMgKyBpOworICAgICAgICAgICAgTFBXU1RSIHRleHQgPSBudWxscHRyOworICAgICAgICAgICAgTFBXU1RSIG5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgTE9DX1NUUklORyAqbG9jVGV4dCA9IG51bGxwdHI7CisKKyAgICAgICAgICAgIC8vIElmIGEgY29tbWFuZCBsaW5rIGhhcyBhIG5vdGUsIHRoZW4gYWRkIGl0LgorICAgICAgICAgICAgaWYgKChwQ29udHJvbC0+ZHdTdHlsZSAmIEJTX1RZUEVNQVNLKSA9PSBCU19DT01NQU5ETElOSyB8fAorICAgICAgICAgICAgICAgIChwQ29udHJvbC0+ZHdTdHlsZSAmIEJTX1RZUEVNQVNLKSA9PSBCU19ERUZDT01NQU5ETElOSykgeworICAgICAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJm5hbWUsIEwiIyhsb2MuJWxzTm90ZSkiLCBwQ29udHJvbC0+c2N6TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgbmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBsb2NUZXh0ICYmIGxvY1RleHQtPnd6VGV4dCAmJiBsb2NUZXh0LT53elRleHRbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKGxvY1RleHQtPnd6VGV4dCwgJnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgdGV4dCAmJiB0ZXh0WzBdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoX3RoZW1lLCBwQ29udHJvbC0+d0lkLCBCQ01fU0VUTk9URSwgMCwgKExQQVJBTSl0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlU3RyKHRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSBudWxscHRyOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGhyID0gU19PSzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFwQ29udHJvbC0+d1BhZ2VJZCAmJiBwQ29udHJvbC0+c2N6VGV4dCAmJiAqcENvbnRyb2wtPnNjelRleHQpIHsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIGhyRm9ybWF0OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3aXggZGV2ZWxvcGVyIGlzIHNob3dpbmcgYSBoaWRkZW4gdmFyaWFibGUgaW4gdGhlIFVJLAorICAgICAgICAgICAgICAgIC8vIHRoZW4gb2J2aW91c2x5IHRoZXkgZG9uJ3QgY2FyZSBhYm91dCBrZWVwaW5nIGl0IHNhZmUgc28gZG9uJ3QKKyAgICAgICAgICAgICAgICAvLyBnbyBkb3duIHRoZSByYWJiaXQgaG9sZSBvZiBtYWtpbmcgc3VyZSB0aGF0IHRoaXMgaXMgc2VjdXJlbHkKKyAgICAgICAgICAgICAgICAvLyBmcmVlZC4KKyAgICAgICAgICAgICAgICBockZvcm1hdCA9IEJhbEZvcm1hdFN0cmluZyhwQ29udHJvbC0+c2N6VGV4dCwgJnRleHQpOworICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHJGb3JtYXQpKSB7CisgICAgICAgICAgICAgICAgICAgIFRoZW1lU2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCB0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzZVN0cih0ZXh0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm4gU1VDQ0VFREVEKGhyKTsKKyAgICB9CisKKyAgICB2b2lkIFJlbWFwQ29sb3IoQ09MT1JSRUYgKmZnLCBDT0xPUlJFRiAqYmcsIEhCUlVTSCAqYmdCcnVzaCkgeworICAgICAgICBpZiAoKmZnID09IFJHQigwLCAwLCAwKSkgeworICAgICAgICAgICAgKmZnID0gR2V0U3lzQ29sb3IoQ09MT1JfV0lORE9XVEVYVCk7CisgICAgICAgIH0gZWxzZSBpZiAoKmZnID09IFJHQigxMjgsIDEyOCwgMTI4KSkgeworICAgICAgICAgICAgKmZnID0gR2V0U3lzQ29sb3IoQ09MT1JfR1JBWVRFWFQpOworICAgICAgICB9CisgICAgICAgIGlmICgqYmdCcnVzaCAmJiAqYmcgPT0gUkdCKDI1NSwgMjU1LCAyNTUpKSB7CisgICAgICAgICAgICAqYmcgPSBHZXRTeXNDb2xvcihDT0xPUl9XSU5ET1cpOworICAgICAgICAgICAgKmJnQnJ1c2ggPSBHZXRTeXNDb2xvckJydXNoKENPTE9SX1dJTkRPVyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBCT09MIFNldENvbnRyb2xDb2xvcihIV05EIGhXbmQsIEhEQyBoREMsIEhCUlVTSCAqYnJ1c2gpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBfdGhlbWUtPmNDb250cm9sczsgKytpKSB7CisgICAgICAgICAgICBpZiAoX3RoZW1lLT5yZ0NvbnRyb2xzW2ldLmhXbmQgIT0gaFduZCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBEV09SRCBmb250SWQgPSBfdGhlbWUtPnJnQ29udHJvbHNbaV0uZHdGb250SWQ7CisgICAgICAgICAgICBpZiAoZm9udElkID4gX3RoZW1lLT5jRm9udHMpIHsKKyAgICAgICAgICAgICAgICBmb250SWQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVEhFTUVfRk9OVCAqZm50ID0gJl90aGVtZS0+cmdGb250c1tmb250SWRdOworCisgICAgICAgICAgICBDT0xPUlJFRiBmZyA9IGZudC0+Y3JGb3JlZ3JvdW5kLCBiZyA9IGZudC0+Y3JCYWNrZ3JvdW5kOworICAgICAgICAgICAgKmJydXNoID0gZm50LT5oQmFja2dyb3VuZDsKKyAgICAgICAgICAgIFJlbWFwQ29sb3IoJmZnLCAmYmcsIGJydXNoKTsKKyAgICAgICAgICAgIDo6U2V0VGV4dENvbG9yKGhEQywgZmcpOworICAgICAgICAgICAgOjpTZXRCa0NvbG9yKGhEQywgYmcpOworCisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblNob3dGYWlsdXJlIC0gZGlzcGxheSB0aGUgZmFpbHVyZSBwYWdlLgorICAgIC8vCisgICAgdm9pZCBPblNob3dGYWlsdXJlKCkgeworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0ZBSUxFRCwgU19PSyk7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uU2hvd0hlbHAgLSBkaXNwbGF5IHRoZSBoZWxwIHBhZ2UuCisgICAgLy8KKyAgICB2b2lkIE9uU2hvd0hlbHAoKSB7CisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfSEVMUCwgU19PSyk7CisKKyAgICAgICAgLy8gSWYgdGhlIFVJIHNob3VsZCBiZSB2aXNpYmxlLCBkaXNwbGF5IGl0IG5vdyBhbmQgaGlkZSB0aGUgc3BsYXNoIHNjcmVlbgorICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfTk9ORSA8IF9jb21tYW5kLmRpc3BsYXkpIHsKKyAgICAgICAgICAgIDo6U2hvd1dpbmRvdyhfdGhlbWUtPmh3bmRQYXJlbnQsIFNXX1NIT1cpOworICAgICAgICB9CisKKyAgICAgICAgX2VuZ2luZS0+Q2xvc2VTcGxhc2hTY3JlZW4oKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uRGV0ZWN0IC0gc3RhcnQgdGhlIHByb2Nlc3Npbmcgb2YgcGFja2FnZXMuCisgICAgLy8KKyAgICB2b2lkIE9uRGV0ZWN0KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBkZXRlY3QgQkEgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGhyID0gX2JhRnVuY3Rpb24tPk9uRGV0ZWN0KCk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIGNhbGxpbmcgZGV0ZWN0IEJBIGZ1bmN0aW9uLiIpOworICAgICAgICB9CisKKyAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RJTkcsIGhyKTsKKworICAgICAgICAvLyBJZiB0aGUgVUkgc2hvdWxkIGJlIHZpc2libGUsIGRpc3BsYXkgaXQgbm93IGFuZCBoaWRlIHRoZSBzcGxhc2ggc2NyZWVuCisgICAgICAgIGlmIChCT09UU1RSQVBQRVJfRElTUExBWV9OT05FIDwgX2NvbW1hbmQuZGlzcGxheSkgeworICAgICAgICAgICAgOjpTaG93V2luZG93KF90aGVtZS0+aHduZFBhcmVudCwgU1dfU0hPVyk7CisgICAgICAgIH0KKworICAgICAgICBfZW5naW5lLT5DbG9zZVNwbGFzaFNjcmVlbigpOworCisgICAgICAgIC8vIFRlbGwgdGhlIGNvcmUgd2UncmUgcmVhZHkgZm9yIHRoZSBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgbm93LgorICAgICAgICBociA9IF9lbmdpbmUtPkRldGVjdCgpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHN0YXJ0IGRldGVjdGluZyBjaGFpbi4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9ERVRFQ1RJTkcsIGhyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgSFJFU1VMVCBVcGRhdGVVSVN0cmluZ3MoX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBDV1NUUiBsaWtlSW5zdGFsbGluZyA9IG51bGxwdHI7CisgICAgICAgIExQQ1dTVFIgbGlrZUluc3RhbGxhdGlvbiA9IG51bGxwdHI7CisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIkluc3RhbGxpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiSW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fTU9ESUZZOgorICAgICAgICAgICAgLy8gRm9yIG1vZGlmeSwgd2UgYWN0dWFsbHkgd2FudCB0byBwYXNzIElOU1RBTEwKKyAgICAgICAgICAgIGFjdGlvbiA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsaW5nID0gTCJNb2RpZnlpbmciOworICAgICAgICAgICAgbGlrZUluc3RhbGxhdGlvbiA9IEwiTW9kaWZpY2F0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fUkVQQUlSOgorICAgICAgICAgICAgbGlrZUluc3RhbGxpbmcgPSBMIlJlcGFpcmluZyI7CisgICAgICAgICAgICBsaWtlSW5zdGFsbGF0aW9uID0gTCJSZXBhaXIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEw6CisgICAgICAgICAgICBsaWtlSW5zdGFsbGluZyA9IEwiVW5pbnN0YWxsaW5nIjsKKyAgICAgICAgICAgIGxpa2VJbnN0YWxsYXRpb24gPSBMIlVuaW5zdGFsbGF0aW9uIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpa2VJbnN0YWxsaW5nKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsaW5nKTsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICAgICAgaHIgPSBMb2NHZXRTdHJpbmcoX3dpeExvYywgbG9jTmFtZSwgJmxvY1RleHQpOworICAgICAgICAgICAgICAgIFJlbGVhc2VTdHIobG9jTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfZW5naW5lLT5TZXRWYXJpYWJsZVN0cmluZygKKyAgICAgICAgICAgICAgICBMIkFjdGlvbkxpa2VJbnN0YWxsaW5nIiwKKyAgICAgICAgICAgICAgICBTVUNDRUVERUQoaHIpICYmIGxvY1RleHQgPyBsb2NUZXh0LT53elRleHQgOiBsaWtlSW5zdGFsbGluZworICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsaWtlSW5zdGFsbGF0aW9uKSB7CisgICAgICAgICAgICBMUFdTVFIgbG9jTmFtZSA9IG51bGxwdHI7CisgICAgICAgICAgICBMT0NfU1RSSU5HICpsb2NUZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGhyID0gU3RyQWxsb2NGb3JtYXR0ZWQoJmxvY05hbWUsIEwiIyhsb2MuJWxzKSIsIGxpa2VJbnN0YWxsYXRpb24pOworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICBociA9IExvY0dldFN0cmluZyhfd2l4TG9jLCBsb2NOYW1lLCAmbG9jVGV4dCk7CisgICAgICAgICAgICAgICAgUmVsZWFzZVN0cihsb2NOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKAorICAgICAgICAgICAgICAgIEwiQWN0aW9uTGlrZUluc3RhbGxhdGlvbiIsCisgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsb2NUZXh0ID8gbG9jVGV4dC0+d3pUZXh0IDogbGlrZUluc3RhbGxhdGlvbgorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaHI7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBPblBsYW4gLSBwbGFuIHRoZSBkZXRlY3RlZCBjaGFuZ2VzLgorICAgIC8vCisgICAgdm9pZCBPblBsYW4oX19pbiBCT09UU1RSQVBQRVJfQUNUSU9OIGFjdGlvbikgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBfcGxhbm5lZEFjdGlvbiA9IGFjdGlvbjsKKworICAgICAgICBociA9IFVwZGF0ZVVJU3RyaW5ncyhhY3Rpb24pOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIHVwZGF0ZSBzdHJpbmdzIik7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGdvaW5nIHRvIGFwcGx5IGEgZG93bmdyYWRlLCBiYWlsLgorICAgICAgICBpZiAoX2Rvd25ncmFkaW5nT3RoZXJWZXJzaW9uICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgYWN0aW9uKSB7CisgICAgICAgICAgICBpZiAoX3N1cHByZXNzRG93bmdyYWRlRmFpbHVyZSkgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiQSBuZXdlciB2ZXJzaW9uIG9mIHRoaXMgcHJvZHVjdCBpcyBpbnN0YWxsZWQgYnV0IGRvd25ncmFkZSBmYWlsdXJlIGhhcyBiZWVuIHN1cHByZXNzZWQ7IGNvbnRpbnVpbmcuLi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaHIgPSBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfUFJPRFVDVF9WRVJTSU9OKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiQ2Fubm90IGluc3RhbGwgYSBwcm9kdWN0IHdoZW4gYSBuZXdlciB2ZXJzaW9uIGlzIGluc3RhbGxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFNldFN0YXRlKFBZQkFfU1RBVEVfUExBTk5JTkcsIGhyKTsKKworICAgICAgICBpZiAoX2JhRnVuY3Rpb24pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiUnVubmluZyBwbGFuIEJBIGZ1bmN0aW9uIik7CisgICAgICAgICAgICBfYmFGdW5jdGlvbi0+T25QbGFuKCk7CisgICAgICAgIH0KKworICAgICAgICBociA9IF9lbmdpbmUtPlBsYW4oYWN0aW9uKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBzdGFydCBwbGFubmluZyBwYWNrYWdlcy4iKTsKKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9QTEFOTklORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkFwcGx5IC0gYXBwbHkgdGhlIHBhY2thZ2VzLgorICAgIC8vCisgICAgdm9pZCBPbkFwcGx5KCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKworICAgICAgICBTZXRTdGF0ZShQWUJBX1NUQVRFX0FQUExZSU5HLCBocik7CisgICAgICAgIFNldFByb2dyZXNzU3RhdGUoaHIpOworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoMCk7CisKKyAgICAgICAgaHIgPSBfZW5naW5lLT5BcHBseShfaFduZCk7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gc3RhcnQgYXBwbHlpbmcgcGFja2FnZXMuIik7CisKKyAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgVFJVRSk7IC8vIGVuc3VyZSB0aGUgY2FuY2VsIGJ1dHRvbiBpcyBlbmFibGVkIGJlZm9yZSBzdGFydGluZy4KKworICAgIExFeGl0OgorICAgICAgICBpZiAoRkFJTEVEKGhyKSkgeworICAgICAgICAgICAgU2V0U3RhdGUoUFlCQV9TVEFURV9BUFBMWUlORywgaHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNoYW5nZVN0YXRlIC0gY2hhbmdlIHN0YXRlLgorICAgIC8vCisgICAgdm9pZCBPbkNoYW5nZVN0YXRlKF9faW4gUFlCQV9TVEFURSBzdGF0ZSkgeworICAgICAgICBMUFdTVFIgdW5mb3JtYXR0ZWRUZXh0ID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhdGUgPSBzdGF0ZTsKKworICAgICAgICAvLyBJZiBvdXIgaW5zdGFsbCBpcyBhdCB0aGUgZW5kIChzdWNjZXNzIG9yIGZhaWx1cmUpIGFuZCB3ZSdyZSBub3Qgc2hvd2luZyBmdWxsIFVJCisgICAgICAgIC8vIHRoZW4gZXhpdCAocHJvbXB0IGZvciByZXN0YXJ0IGlmIHJlcXVpcmVkKS4KKyAgICAgICAgaWYgKChQWUJBX1NUQVRFX0FQUExJRUQgPD0gX3N0YXRlICYmIEJPT1RTVFJBUFBFUl9ESVNQTEFZX0ZVTEwgPiBfY29tbWFuZC5kaXNwbGF5KSkgeworICAgICAgICAgICAgLy8gSWYgYSByZXN0YXJ0IHdhcyByZXF1aXJlZCBidXQgd2Ugd2VyZSBub3QgYXV0b21hdGljYWxseSBhbGxvd2VkIHRvCisgICAgICAgICAgICAvLyBhY2NlcHQgdGhlIHJlYm9vdCB0aGVuIGRvIHRoZSBwcm9tcHQuCisgICAgICAgICAgICBpZiAoX3Jlc3RhcnRSZXF1aXJlZCAmJiAhX2FsbG93UmVzdGFydCkgeworICAgICAgICAgICAgICAgIFN0ckFsbG9jRnJvbUVycm9yKCZ1bmZvcm1hdHRlZFRleHQsIEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9TVUNDRVNTX1JFQk9PVF9SRVFVSVJFRCksIG51bGxwdHIpOworCisgICAgICAgICAgICAgICAgX2FsbG93UmVzdGFydCA9IElET0sgPT0gOjpNZXNzYWdlQm94VygKKyAgICAgICAgICAgICAgICAgICAgX2hXbmQsCisgICAgICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkVGV4dCA/IHVuZm9ybWF0dGVkVGV4dCA6IEwiVGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bC4gQ2hhbmdlcyB3aWxsIG5vdCBiZSBlZmZlY3RpdmUgdW50aWwgdGhlIHN5c3RlbSBpcyByZWJvb3RlZC4iLAorICAgICAgICAgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24sCisgICAgICAgICAgICAgICAgICAgIE1CX0lDT05FWENMQU1BVElPTiB8IE1CX09LQ0FOQ0VMCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUXVpZXRseSBleGl0LgorICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsgLy8gdHJ5IHRvIGNoYW5nZSB0aGUgcGFnZXMuCisgICAgICAgICAgICBEV09SRCBuZXdQYWdlSWQgPSAwOworICAgICAgICAgICAgRGV0ZXJtaW5lUGFnZUlkKF9zdGF0ZSwgJm5ld1BhZ2VJZCk7CisKKyAgICAgICAgICAgIGlmIChfdmlzaWJsZVBhZ2VJZCAhPSBuZXdQYWdlSWQpIHsKKyAgICAgICAgICAgICAgICBTaG93UGFnZShuZXdQYWdlSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVsZWFzZVN0cih1bmZvcm1hdHRlZFRleHQpOworICAgIH0KKworICAgIC8vCisgICAgLy8gQ2FsbGVkIGJlZm9yZSBzaG93aW5nIGEgcGFnZSB0byBoYW5kbGUgYWxsIGNvbnRyb2xzLgorICAgIC8vCisgICAgdm9pZCBQcm9jZXNzUGFnZUNvbnRyb2xzKFRIRU1FX1BBR0UgKnBQYWdlKSB7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIEJPT0wgZW5hYmxlQ29udHJvbCA9IFRSVUU7CisKKyAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuYW1lZCBjb250cm9sLCB0cnkgdG8gc2V0IGl0cyBkZWZhdWx0IHN0YXRlLgorICAgICAgICAgICAgaWYgKHBDb250cm9sLT5zY3pOYW1lICYmICpwQ29udHJvbC0+c2N6TmFtZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjaGVja2FibGUgY29udHJvbCwgdHJ5IHRvIHNldCBpdHMgZGVmYXVsdCBzdGF0ZQorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBzdGF0ZSBvZiBhIG1hdGNoaW5nIG5hbWVkIEJ1cm4gdmFyaWFibGUuCisgICAgICAgICAgICAgICAgaWYgKElzQ2hlY2thYmxlKHBDb250cm9sKSkgeworICAgICAgICAgICAgICAgICAgICBMT05HTE9ORyBsbFZhbHVlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShwQ29udHJvbC0+c2N6TmFtZSwgJmxsVmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjb250cm9sIHZhbHVlIGlzbid0IHNldCB0aGVuIGRpc2FibGUgaXQuCisgICAgICAgICAgICAgICAgICAgIGlmICghU1VDQ0VFREVEKGhyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29udHJvbCA9IEZBTFNFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTZW5kQ29udHJvbE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoZW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDb250cm9sLT53SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk1fU0VUQ0hFQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VDQ0VFREVEKGhyKSAmJiBsbFZhbHVlID8gQlNUX0NIRUNLRUQgOiBCU1RfVU5DSEVDS0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBIaWRlIG9yIGRpc2FibGUgY29udHJvbHMgYmFzZWQgb24gdGhlIGNvbnRyb2wgbmFtZSB3aXRoICdTdGF0ZScgYXBwZW5kZWQKKyAgICAgICAgICAgICAgICBMUFdTVFIgY29udHJvbE5hbWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBTdHJBbGxvY0Zvcm1hdHRlZCgmY29udHJvbE5hbWUsIEwiJWxzU3RhdGUiLCBwQ29udHJvbC0+c2N6TmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgTFBXU1RSIGNvbnRyb2xTdGF0ZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoY29udHJvbE5hbWUsICZjb250cm9sU3RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBjb250cm9sU3RhdGUgJiYgKmNvbnRyb2xTdGF0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2xTdGF0ZVswXSA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUFdTVFIgZm9ybWF0dGVkID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKEJhbEZvcm1hdFN0cmluZyhjb250cm9sU3RhdGUsICZmb3JtYXR0ZWQpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xTdGF0ZSA9IGZvcm1hdHRlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDU1RSX0VRVUFMID09IDo6Q29tcGFyZVN0cmluZ1coTE9DQUxFX05FVVRSQUwsIDAsIGNvbnRyb2xTdGF0ZSwgLTEsIEwiZGlzYWJsZSIsIC0xKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRGlzYWJsZSBjb250cm9sICVscyIsIHBDb250cm9sLT5zY3pOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVDb250cm9sID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKENTVFJfRVFVQUwgPT0gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgY29udHJvbFN0YXRlLCAtMSwgTCJoaWRlIiwgLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJIaWRlIGNvbnRyb2wgJWxzIiwgcENvbnRyb2wtPnNjek5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFRoaXMgZG9lc24ndCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlbWVTaG93Q29udHJvbChfdGhlbWUsIHBDb250cm9sLT53SWQsIFNXX0hJREUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbiBleHBsaWNpdCBzdGF0ZSBjYW4gb3ZlcnJpZGUgdGhlIGxhY2sgb2YgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2tpbmcgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQ29udHJvbCA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU3RyRnJlZShjb250cm9sU3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdHJGcmVlKGNvbnRyb2xOYW1lKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgcENvbnRyb2wtPndJZCwgZW5hYmxlQ29udHJvbCk7CisKKyAgICAgICAgICAgIC8vIEZvcm1hdCB0aGUgdGV4dCBpbiBlYWNoIG9mIHRoZSBuZXcgcGFnZSdzIGNvbnRyb2xzCisgICAgICAgICAgICBpZiAocENvbnRyb2wtPnNjelRleHQgJiYgKnBDb250cm9sLT5zY3pUZXh0KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdpeCBkZXZlbG9wZXIgaXMgc2hvd2luZyBhIGhpZGRlbiB2YXJpYWJsZQorICAgICAgICAgICAgICAgIC8vIGluIHRoZSBVSSwgdGhlbiBvYnZpb3VzbHkgdGhleSBkb24ndCBjYXJlIGFib3V0CisgICAgICAgICAgICAgICAgLy8ga2VlcGluZyBpdCBzYWZlIHNvIGRvbid0IGdvIGRvd24gdGhlIHJhYmJpdCBob2xlCisgICAgICAgICAgICAgICAgLy8gb2YgbWFraW5nIHN1cmUgdGhhdCB0aGlzIGlzIHNlY3VyZWx5IGZyZWVkLgorICAgICAgICAgICAgICAgIExQV1NUUiB0ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIGhyID0gQmFsRm9ybWF0U3RyaW5nKHBDb250cm9sLT5zY3pUZXh0LCAmdGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpIHsKKyAgICAgICAgICAgICAgICAgICAgVGhlbWVTZXRUZXh0Q29udHJvbChfdGhlbWUsIHBDb250cm9sLT53SWQsIHRleHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gT25DbG9zZSAtIGNhbGxlZCB3aGVuIHRoZSB3aW5kb3cgaXMgdHJ5aW5nIHRvIGJlIGNsb3NlZC4KKyAgICAvLworICAgIEJPT0wgT25DbG9zZSgpIHsKKyAgICAgICAgQk9PTCBjbG9zZSA9IEZBTFNFOworCisgICAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgc3VjY2VlZGVkIG9yIGZhaWxlZCBvciBzaG93aW5nIHRoZSBoZWxwIHBhZ2UsIGp1c3QgY2xvc2UgKHByb21wdHMgYXJlIGFubm95aW5nIGlmIHRoZSBib290c3RyYXBwZXIgaXMgZG9uZSkuCisgICAgICAgIGlmIChQWUJBX1NUQVRFX0FQUExJRUQgPD0gX3N0YXRlIHx8IFBZQkFfU1RBVEVfSEVMUCA9PSBfc3RhdGUpIHsKKyAgICAgICAgICAgIGNsb3NlID0gVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHByb21wdCB0aGUgdXNlciBvciBmb3JjZSB0aGUgY2FuY2VsIGlmIHRoZXJlIGlzIG5vIFVJLgorICAgICAgICAgICAgY2xvc2UgPSBQcm9tcHRDYW5jZWwoCisgICAgICAgICAgICAgICAgX2hXbmQsCisgICAgICAgICAgICAgICAgQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCAhPSBfY29tbWFuZC5kaXNwbGF5LAorICAgICAgICAgICAgICAgIF9jb25maXJtQ2xvc2VNZXNzYWdlID8gX2NvbmZpcm1DbG9zZU1lc3NhZ2UgOiBMIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWw/IiwKKyAgICAgICAgICAgICAgICBfdGhlbWUtPnNjekNhcHRpb24KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSdyZSBkb2luZyBwcm9ncmVzcyB0aGVuIHdlIG5ldmVyIGNsb3NlLCB3ZSBqdXN0IGNhbmNlbCB0byBsZXQgcm9sbGJhY2sgb2NjdXIuCisgICAgICAgIGlmIChQWUJBX1NUQVRFX0FQUExZSU5HIDw9IF9zdGF0ZSAmJiBQWUJBX1NUQVRFX0FQUExJRUQgPiBfc3RhdGUpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGNhbmNlbGVkIGRpc2FibGUgY2FuY2VsIGJ1dHRvbiBzaW5jZSBjbGlja2luZyBpdCBhZ2FpbiBpcyBzaWxseS4KKyAgICAgICAgICAgIGlmIChjbG9zZSkgeworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2xvc2UgPSBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjbG9zZTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIE9uQ2xpY2tDbG9zZUJ1dHRvbiAtIGNsb3NlIHRoZSBhcHBsaWNhdGlvbi4KKyAgICAvLworICAgIHZvaWQgT25DbGlja0Nsb3NlQnV0dG9uKCkgeworICAgICAgICA6OlNlbmRNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOworICAgIH0KKworCisgICAgLy8KKyAgICAvLyBPbkNsaWNrTGF1bmNoQnV0dG9uIC0gbGF1bmNoIHRoZSBhcHAgZnJvbSB0aGUgc3VjY2VzcyBwYWdlLgorICAgIC8vCisgICAgdm9pZCBPbkNsaWNrTGF1bmNoQnV0dG9uKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzID0gbnVsbHB0cjsKKyAgICAgICAgTFBXU1RSIHNjekFyZ3VtZW50cyA9IG51bGxwdHI7CisgICAgICAgIGludCBuQ21kU2hvdyA9IFNXX1NIT1dOT1JNQUw7CisKKyAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCwgJnNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGUgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOworCisgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0LCAmc2N6TGF1bmNoVGFyZ2V0KTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKKworICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKSkgeworICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQsICZzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IGVsZXZhdGVkIGlkICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKSkgeworICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMsICZzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIGFyZ3VtZW50cyAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTikpIHsKKyAgICAgICAgICAgIG5DbWRTaG93ID0gU1dfSElERTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkICYmICFfdHJpZWRUb0xhdW5jaEVsZXZhdGVkKSB7CisgICAgICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gVFJVRTsKKyAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+TGF1bmNoQXBwcm92ZWRFeGUoX2hXbmQsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAwKTsKKyAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICAgICAgQmFsTG9nRXJyb3IoaHIsICJGYWlsZWQgdG8gbGF1bmNoIGVsZXZhdGVkIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7CisKKyAgICAgICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQorICAgICAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cykgeworICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAmc2N6QXJndW1lbnRzKTsKKyAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIGFyZ3VtZW50cyB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBociA9IFNoZWxFeGVjKHNjekxhdW5jaFRhcmdldCwgc2N6QXJndW1lbnRzLCBMIm9wZW4iLCBudWxscHRyLCBuQ21kU2hvdywgX2hXbmQsIG51bGxwdHIpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbGF1bmNoIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0KTsKKworICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekFyZ3VtZW50cyk7CisgICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOworICAgICAgICBSZWxlYXNlU3RyKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOworICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pMYXVuY2hUYXJnZXQpOworICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvLworICAgIC8vIE9uQ2xpY2tSZXN0YXJ0QnV0dG9uIC0gYWxsb3dzIHRoZSByZXN0YXJ0IGFuZCBjbG9zZXMgdGhlIGFwcC4KKyAgICAvLworICAgIHZvaWQgT25DbGlja1Jlc3RhcnRCdXR0b24oKSB7CisgICAgICAgIEFzc2VydFN6KF9yZXN0YXJ0UmVxdWlyZWQsICJSZXN0YXJ0IG11c3QgYmUgcmVxdWVzdGVkIHRvIGJlIGFibGUgdG8gY2xpY2sgb24gdGhlIHJlc3RhcnQgYnV0dG9uLiIpOworCisgICAgICAgIF9hbGxvd1Jlc3RhcnQgPSBUUlVFOworICAgICAgICA6OlNlbmRNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gT25DbGlja0xvZ0ZpbGVMaW5rIC0gc2hvdyB0aGUgbG9nIGZpbGUuCisgICAgLy8KKyAgICB2b2lkIE9uQ2xpY2tMb2dGaWxlTGluaygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pMb2dGaWxlID0gbnVsbHB0cjsKKworICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKF9idW5kbGUuc2N6TG9nVmFyaWFibGUsICZzY3pMb2dGaWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxvZyBmaWxlIHZhcmlhYmxlICclbHMnLiIsIF9idW5kbGUuc2N6TG9nVmFyaWFibGUpOworCisgICAgICAgIGhyID0gU2hlbEV4ZWMoTCJub3RlcGFkLmV4ZSIsIHNjekxvZ0ZpbGUsIEwib3BlbiIsIG51bGxwdHIsIFNXX1NIT1dERUZBVUxULCBfaFduZCwgbnVsbHB0cik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIG9wZW4gbG9nIGZpbGUgdGFyZ2V0OiAlbHMiLCBzY3pMb2dGaWxlKTsKKworICAgIExFeGl0OgorICAgICAgICBSZWxlYXNlU3RyKHNjekxvZ0ZpbGUpOworCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gU2V0U3RhdGUKKyAgICAvLworICAgIHZvaWQgU2V0U3RhdGUoX19pbiBQWUJBX1NUQVRFIHN0YXRlLCBfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgaWYgKEZBSUxFRChoclN0YXR1cykpIHsKKyAgICAgICAgICAgIF9ockZpbmFsID0gaHJTdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRkFJTEVEKF9ockZpbmFsKSkgeworICAgICAgICAgICAgc3RhdGUgPSBQWUJBX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfc3RhdGUgIT0gc3RhdGUpIHsKKyAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9QWUJBX0NIQU5HRV9TVEFURSwgMCwgc3RhdGUpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8KKyAgICAvLyBHb1RvUGFnZQorICAgIC8vCisgICAgdm9pZCBHb1RvUGFnZShfX2luIFBBR0UgcGFnZSkgeworICAgICAgICBfaW5zdGFsbFBhZ2UgPSBwYWdlOworICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fUFlCQV9DSEFOR0VfU1RBVEUsIDAsIF9zdGF0ZSk7CisgICAgfQorCisgICAgdm9pZCBEZXRlcm1pbmVQYWdlSWQoX19pbiBQWUJBX1NUQVRFIHN0YXRlLCBfX291dCBEV09SRCogcGR3UGFnZUlkKSB7CisgICAgICAgIExPTkdMT05HIHNpbXBsZTsKKworICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfUEFTU0lWRSA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSU5JVElBTElaRUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSEVMUCA9PSBfY29tbWFuZC5hY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX0hFTFBdCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9MT0FESU5HXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0hFTFA6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfSEVMUF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RJTkc6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfTE9BRElOR10KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX0xPQURJTkddCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU19QQVNTSVZFXQorICAgICAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX1BST0dSRVNTX1BBU1NJVkVdCisgICAgICAgICAgICAgICAgICAgICAgICA6IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfREVURUNURUQ6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfUExBTk5JTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfUExBTk5FRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9BUFBMWUlORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9DQUNISU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hFRDogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRVhFQ1VURUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfUFJPR1JFU1NfUEFTU0lWRV0KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX1BST0dSRVNTX1BBU1NJVkVdCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoQk9PVFNUUkFQUEVSX0RJU1BMQVlfRlVMTCA9PSBfY29tbWFuZC5kaXNwbGF5KSB7CisgICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSU5JVElBTElaSU5HOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfSU5JVElBTElaRUQ6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSEVMUCA9PSBfY29tbWFuZC5hY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgPyBfcGFnZUlkc1tQQUdFX0hFTFBdCisgICAgICAgICAgICAgICAgICAgIDogX3BhZ2VJZHNbUEFHRV9MT0FESU5HXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0hFTFA6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfSEVMUF07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RJTkc6CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW1BBR0VfTE9BRElOR107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9ERVRFQ1RFRDoKKyAgICAgICAgICAgICAgICBpZiAoX2luc3RhbGxQYWdlID09IFBBR0VfTE9BRElORykgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb21tYW5kLmFjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXBncmFkaW5nT2xkVmVyc2lvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfVVBHUkFERTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoU1VDQ0VFREVEKEJhbEdldE51bWVyaWNWYXJpYWJsZShMIlNpbXBsZUluc3RhbGwiLCAmc2ltcGxlKSkgJiYgc2ltcGxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9TSU1QTEVfSU5TVEFMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2luc3RhbGxQYWdlID0gUEFHRV9JTlNUQUxMOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWTogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1JFUEFJUjogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTDoKKyAgICAgICAgICAgICAgICAgICAgICAgIF9pbnN0YWxsUGFnZSA9IFBBR0VfTU9ESUZZOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKnBkd1BhZ2VJZCA9IF9wYWdlSWRzW19pbnN0YWxsUGFnZV07CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTklORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9QTEFOTkVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0FQUExZSU5HOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0NBQ0hJTkc6IF9fZmFsbHRocm91Z2g7CisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfQ0FDSEVEOiBfX2ZhbGx0aHJvdWdoOworICAgICAgICAgICAgY2FzZSBQWUJBX1NUQVRFX0VYRUNVVElORzogX19mYWxsdGhyb3VnaDsKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9FWEVDVVRFRDoKKyAgICAgICAgICAgICAgICAqcGR3UGFnZUlkID0gX3BhZ2VJZHNbUEFHRV9QUk9HUkVTU107CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgUFlCQV9TVEFURV9BUFBMSUVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX1NVQ0NFU1NdOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIFBZQkFfU1RBVEVfRkFJTEVEOgorICAgICAgICAgICAgICAgICpwZHdQYWdlSWQgPSBfcGFnZUlkc1tQQUdFX0ZBSUxVUkVdOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQk9PTCBXaWxsRWxldmF0ZSgpIHsKKyAgICAgICAgc3RhdGljIEJBTF9DT05ESVRJT04gV0lMTF9FTEVWQVRFX0NPTkRJVElPTiA9IHsKKyAgICAgICAgICAgIEwibm90IFdpeEJ1bmRsZUVsZXZhdGVkIGFuZCAoSW5zdGFsbEFsbFVzZXJzIG9yIChJbnN0YWxsTGF1bmNoZXJBbGxVc2VycyBhbmQgSW5jbHVkZV9sYXVuY2hlcikpIiwKKyAgICAgICAgICAgIEwiIgorICAgICAgICB9OworICAgICAgICBCT09MIHJlc3VsdDsKKworICAgICAgICByZXR1cm4gU1VDQ0VFREVEKEJhbENvbmRpdGlvbkV2YWx1YXRlKCZXSUxMX0VMRVZBVEVfQ09ORElUSU9OLCBfZW5naW5lLCAmcmVzdWx0LCBudWxscHRyKSkgJiYgcmVzdWx0OworICAgIH0KKworICAgIEJPT0wgSXNDcnRJbnN0YWxsZWQoKSB7CisgICAgICAgIGlmIChfY3J0SW5zdGFsbGVkVG9rZW4gPiAwKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSBlbHNlIGlmIChfY3J0SW5zdGFsbGVkVG9rZW4gPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBDaGVjayB3aGV0aGVyIGF0IGxlYXN0IENSVCB2MTAuMC4xMDEzNy4wIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgLy8gSXQgc2hvdWxkIG9ubHkgYmUgaW5zdGFsbGVkIGFzIGEgV2luZG93cyBVcGRhdGUgcGFja2FnZSwgd2hpY2ggbWVhbnMKKyAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCAzMi1iaXQvNjQtYml0LgorICAgICAgICBMUENXU1RSIGNydEZpbGUgPSBMInVjcnRiYXNlLmRsbCI7CisKKyAgICAgICAgRFdPUkQgY2JWZXIgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhjcnRGaWxlLCBudWxscHRyKTsKKyAgICAgICAgaWYgKCFjYlZlcikgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgKnBEYXRhID0gbWFsbG9jKGNiVmVyKTsKKyAgICAgICAgaWYgKCFwRGF0YSkgeworICAgICAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gMDsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhjcnRGaWxlLCAwLCBjYlZlciwgcERhdGEpKSB7CisgICAgICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgICAgIF9jcnRJbnN0YWxsZWRUb2tlbiA9IDA7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBWU19GSVhFREZJTEVJTkZPICpmZmk7CisgICAgICAgIFVJTlQgY2I7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CisKKyAgICAgICAgaWYgKFZlclF1ZXJ5VmFsdWVXKHBEYXRhLCBMIlxcIiwgKExQVk9JRCopJmZmaSwgJmNiKSAmJgorICAgICAgICAgICAgZmZpLT5kd0ZpbGVWZXJzaW9uTVMgPT0gMHgwMDBBMDAwMCAmJiBmZmktPmR3RmlsZVZlcnNpb25MUyA+PSAweDI3OTkwMDAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmcmVlKHBEYXRhKTsKKyAgICAgICAgX2NydEluc3RhbGxlZFRva2VuID0gcmVzdWx0ID8gMSA6IDA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQk9PTCBRdWVyeUVsZXZhdGVGb3JDcnRJbnN0YWxsKCkgeworICAgICAgICAvLyBDYWxsZWQgdG8gcHJvbXB0IHRoZSB1c2VyIHRoYXQgZXZlbiB0aG91Z2ggdGhleSB0aGluayB0aGV5IHdvbid0IG5lZWQKKyAgICAgICAgLy8gdG8gZWxldmF0ZSwgdGhleSBhY3R1YWxseSB3aWxsIGJlY2F1c2Ugb2YgdGhlIENSVCBpbnN0YWxsLgorICAgICAgICBpZiAoSXNDcnRJbnN0YWxsZWQoKSkgeworICAgICAgICAgICAgLy8gQ1JUIGlzIGFscmVhZHkgaW5zdGFsbGVkIC0gbm8gbmVlZCB0byBwcm9tcHQKKyAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMT05HTE9ORyBlbGV2YXRlZDsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldE51bWVyaWNWYXJpYWJsZShMIldpeEJ1bmRsZUVsZXZhdGVkIiwgJmVsZXZhdGVkKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgZWxldmF0ZWQpIHsKKyAgICAgICAgICAgIC8vIEFscmVhZHkgZWxldmF0ZWQgLSBubyBuZWVkIHRvIHByb21wdAorICAgICAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBMT0NfU1RSSU5HICpsb2NTdHI7CisgICAgICAgIGhyID0gTG9jR2V0U3RyaW5nKF93aXhMb2MsIEwiIyhsb2MuRWxldmF0ZUZvckNSVEluc3RhbGwpIiwgJmxvY1N0cik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBnZXQgRWxldmF0ZUZvckNSVEluc3RhbGwgc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDo6TWVzc2FnZUJveFcoX2hXbmQsIGxvY1N0ci0+d3pUZXh0LCBfdGhlbWUtPnNjekNhcHRpb24sIE1CX1lFU05PKSAhPSBJRE5POworICAgIH0KKworICAgIEhSRVNVTFQgRXZhbHVhdGVDb25kaXRpb25zKCkgeworICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKKyAgICAgICAgQk9PTCByZXN1bHQgPSBGQUxTRTsKKworICAgICAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgX2NvbmRpdGlvbnMuY0NvbmRpdGlvbnM7ICsraSkgeworICAgICAgICAgICAgQkFMX0NPTkRJVElPTiogcENvbmRpdGlvbiA9IF9jb25kaXRpb25zLnJnQ29uZGl0aW9ucyArIGk7CisKKyAgICAgICAgICAgIGhyID0gQmFsQ29uZGl0aW9uRXZhbHVhdGUocENvbmRpdGlvbiwgX2VuZ2luZSwgJnJlc3VsdCwgJl9mYWlsZWRNZXNzYWdlKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gZXZhbHVhdGUgY29uZGl0aW9uLiIpOworCisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIC8vIEhvcGUgdGhleSBkaWRuJ3QgaGF2ZSBoaWRkZW4gdmFyaWFibGVzIGluIHRoZWlyIG1lc3NhZ2UsIGJlY2F1c2UgaXQncyBnb2luZyBpbiB0aGUgbG9nIGluIHBsYWludGV4dC4KKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIiVscyIsIF9mYWlsZWRNZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIGhyID0gRV9XSVhTVERCQV9DT05ESVRJT05fRkFJTEVEOworICAgICAgICAgICAgICAgIC8vIHRvZG86IHJlbW92ZSBpbiBXaVggdjQsIGluIGNhc2UgcGVvcGxlIGFyZSByZWx5aW5nIG9uIHYzLnggbG9nZ2luZyBiZWhhdmlvcgorICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiQnVuZGxlIGNvbmRpdGlvbiBldmFsdWF0ZWQgdG8gZmFsc2U6ICVscyIsIHBDb25kaXRpb24tPnNjekNvbmRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBSZWxlYXNlTnVsbFN0clNlY3VyZShfZmFpbGVkTWVzc2FnZSk7CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuIGhyOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uUHJvZ3Jlc3MoX19pbiBEV09SRCBkd092ZXJhbGxQZXJjZW50YWdlKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NWYWx1ZShfaFduZCwgZHdPdmVyYWxsUGVyY2VudGFnZSwgMTAwVUwpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHByb2dyZXNzIHRvOiAlZCUlLiIsIGR3T3ZlcmFsbFBlcmNlbnRhZ2UpOworICAgICAgICB9CisKKyAgICBMRXhpdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgdm9pZCBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoX19pbiBUQlBGTEFHIHRicEZsYWdzKSB7CisgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgICAgIGlmIChfdGFza2JhckJ1dHRvbk9LKSB7CisgICAgICAgICAgICBociA9IF90YXNrYmFyTGlzdC0+U2V0UHJvZ3Jlc3NTdGF0ZShfaFduZCwgdGJwRmxhZ3MpOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gc2V0IHRhc2tiYXIgYnV0dG9uIHN0YXRlLiIsIHRicEZsYWdzKTsKKyAgICAgICAgfQorCisgICAgTEV4aXQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIHZvaWQgU2V0UHJvZ3Jlc3NTdGF0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMpIHsKKyAgICAgICAgVEJQRkxBRyBmbGFnID0gVEJQRl9OT1JNQUw7CisKKyAgICAgICAgaWYgKElzQ2FuY2VsZWQoKSB8fCBIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfSU5TVEFMTF9VU0VSRVhJVCkgPT0gaHJTdGF0dXMpIHsKKyAgICAgICAgICAgIGZsYWcgPSBUQlBGX1BBVVNFRDsKKyAgICAgICAgfSBlbHNlIGlmIChJc1JvbGxpbmdCYWNrKCkgfHwgRkFJTEVEKGhyU3RhdHVzKSkgeworICAgICAgICAgICAgZmxhZyA9IFRCUEZfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBTZXRUYXNrYmFyQnV0dG9uU3RhdGUoZmxhZyk7CisgICAgfQorCisKKyAgICBIUkVTVUxUIExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIHsKKyAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CisgICAgICAgIExQV1NUUiBzY3pCYWZQYXRoID0gbnVsbHB0cjsKKworICAgICAgICBociA9IFBhdGhSZWxhdGl2ZVRvTW9kdWxlKCZzY3pCYWZQYXRoLCBMImJhZnVuY3Rpb25zLmRsbCIsIF9oTW9kdWxlKTsKKyAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBnZXQgcGF0aCB0byBCQSBmdW5jdGlvbiBETEwuIik7CisKKyNpZmRlZiBERUJVRworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gQkEgZnVuY3Rpb24gRExMICVscyIsIHNjekJhZlBhdGgpOworI2VuZGlmCisKKyAgICAgICAgX2hCQUZNb2R1bGUgPSA6OkxvYWRMaWJyYXJ5VyhzY3pCYWZQYXRoKTsKKyAgICAgICAgaWYgKF9oQkFGTW9kdWxlKSB7CisgICAgICAgICAgICBhdXRvIHBmbkJBRnVuY3Rpb25DcmVhdGUgPSByZWludGVycHJldF9jYXN0PFBGTl9CT09UU1RSQVBQRVJfQkFfRlVOQ1RJT05fQ1JFQVRFPig6OkdldFByb2NBZGRyZXNzKF9oQkFGTW9kdWxlLCAiQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiIpKTsKKyAgICAgICAgICAgIEJhbEV4aXRPbk51bGxXaXRoTGFzdEVycm9yMShwZm5CQUZ1bmN0aW9uQ3JlYXRlLCBociwgIkZhaWxlZCB0byBnZXQgQ3JlYXRlQm9vdHN0cmFwcGVyQkFGdW5jdGlvbiBlbnRyeS1wb2ludCBmcm9tOiAlbHMiLCBzY3pCYWZQYXRoKTsKKworICAgICAgICAgICAgaHIgPSBwZm5CQUZ1bmN0aW9uQ3JlYXRlKF9lbmdpbmUsIF9oQkFGTW9kdWxlLCAmX2JhRnVuY3Rpb24pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBjcmVhdGUgQkEgZnVuY3Rpb24uIik7CisgICAgICAgIH0KKyNpZmRlZiBERUJVRworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEJhbExvZ0Vycm9yKEhSRVNVTFRfRlJPTV9XSU4zMig6OkdldExhc3RFcnJvcigpKSwgIlBZQkE6IExvYWRCb290c3RyYXBwZXJCQUZ1bmN0aW9ucygpIC0gRmFpbGVkIHRvIGxvYWQgRExMICVscyIsIHNjekJhZlBhdGgpOworICAgICAgICB9CisjZW5kaWYKKworICAgIExFeGl0OgorICAgICAgICBpZiAoX2hCQUZNb2R1bGUgJiYgIV9iYUZ1bmN0aW9uKSB7CisgICAgICAgICAgICA6OkZyZWVMaWJyYXJ5KF9oQkFGTW9kdWxlKTsKKyAgICAgICAgICAgIF9oQkFGTW9kdWxlID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBSZWxlYXNlU3RyKHNjekJhZlBhdGgpOworCisgICAgICAgIHJldHVybiBocjsKKyAgICB9CisKKyAgICBCT09MIElzQ2hlY2thYmxlKFRIRU1FX0NPTlRST0wqIHBDb250cm9sKSB7CisgICAgICAgIGlmICghcENvbnRyb2wtPnNjek5hbWUgfHwgIXBDb250cm9sLT5zY3pOYW1lWzBdKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBpZiAocENvbnRyb2wtPnR5cGUgPT0gVEhFTUVfQ09OVFJPTF9UWVBFX0NIRUNLQk9YKSB7CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwQ29udHJvbC0+dHlwZSA9PSBUSEVNRV9DT05UUk9MX1RZUEVfQlVUVE9OKSB7CisgICAgICAgICAgICBpZiAoKHBDb250cm9sLT5kd1N0eWxlICYgQlNfVFlQRU1BU0spID09IEJTX0FVVE9SQURJT0JVVFRPTikgeworICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHZvaWQgU2F2ZVBhZ2VTZXR0aW5ncygpIHsKKyAgICAgICAgRFdPUkQgcGFnZUlkID0gMDsKKyAgICAgICAgVEhFTUVfUEFHRSogcFBhZ2UgPSBudWxscHRyOworCisgICAgICAgIERldGVybWluZVBhZ2VJZChfc3RhdGUsICZwYWdlSWQpOworICAgICAgICBwUGFnZSA9IFRoZW1lR2V0UGFnZShfdGhlbWUsIHBhZ2VJZCk7CisgICAgICAgIGlmICghcFBhZ2UpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBwUGFnZS0+Y0NvbnRyb2xJbmRpY2VzOyArK2kpIHsKKyAgICAgICAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIGNoZWNrYWJsZSBjb250cm9scyBhbmQgc2V0IGEgQnVybiB2YXJpYWJsZQorICAgICAgICAgICAgLy8gd2l0aCB0aGF0IG5hbWUgdG8gdHJ1ZSBvciBmYWxzZS4KKyAgICAgICAgICAgIFRIRU1FX0NPTlRST0wqIHBDb250cm9sID0gX3RoZW1lLT5yZ0NvbnRyb2xzICsgcFBhZ2UtPnJnZHdDb250cm9sSW5kaWNlc1tpXTsKKyAgICAgICAgICAgIGlmIChJc0NoZWNrYWJsZShwQ29udHJvbCkgJiYgVGhlbWVDb250cm9sRW5hYmxlZChfdGhlbWUsIHBDb250cm9sLT53SWQpKSB7CisgICAgICAgICAgICAgICAgQk9PTCBjaGVja2VkID0gVGhlbWVJc0NvbnRyb2xDaGVja2VkKF90aGVtZSwgcENvbnRyb2wtPndJZCk7CisgICAgICAgICAgICAgICAgX2VuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHBDb250cm9sLT5zY3pOYW1lLCBjaGVja2VkID8gMSA6IDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBlZGl0Ym94IGNvbnRyb2xzIHdpdGggbmFtZXMgYW5kIHNldCBhCisgICAgICAgICAgICAvLyBCdXJuIHZhcmlhYmxlIHdpdGggdGhhdCBuYW1lIHRvIHRoZSBjb250ZW50cy4KKyAgICAgICAgICAgIGlmIChUSEVNRV9DT05UUk9MX1RZUEVfRURJVEJPWCA9PSBwQ29udHJvbC0+dHlwZSAmJiBwQ29udHJvbC0+c2N6TmFtZSAmJiAqcENvbnRyb2wtPnNjek5hbWUpIHsKKyAgICAgICAgICAgICAgICBMUFdTVFIgc2N6VmFsdWUgPSBudWxscHRyOworICAgICAgICAgICAgICAgIFRoZW1lR2V0VGV4dENvbnRyb2woX3RoZW1lLCBwQ29udHJvbC0+d0lkLCAmc2N6VmFsdWUpOworICAgICAgICAgICAgICAgIF9lbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKHBDb250cm9sLT5zY3pOYW1lLCBzY3pWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBJc1RhcmdldFBsYXRmb3JteDY0KF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSkgeworICAgICAgICBXQ0hBUiBwbGF0Zm9ybVs4XTsKKyAgICAgICAgRFdPUkQgcGxhdGZvcm1MZW4gPSA4OworCisgICAgICAgIGlmIChGQUlMRUQocEVuZ2luZS0+R2V0VmFyaWFibGVTdHJpbmcoTCJUYXJnZXRQbGF0Zm9ybSIsIHBsYXRmb3JtLCAmcGxhdGZvcm1MZW4pKSkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gOjpDb21wYXJlU3RyaW5nVyhMT0NBTEVfTkVVVFJBTCwgMCwgcGxhdGZvcm0sIC0xLCBMIng2NCIsIC0xKSA9PSBDU1RSX0VRVUFMOworICAgIH0KKworICAgIHN0YXRpYyBIUkVTVUxUIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXNGcm9tS2V5KAorICAgICAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgICAgIF9faW4gSEtFWSBoa0hpdmUsCisgICAgICAgIF9faW4gTFBDV1NUUiBzdWJrZXkKKyAgICApIHsKKyAgICAgICAgSEtFWSBoS2V5OworICAgICAgICBMUkVTVUxUIHJlczsKKworICAgICAgICBpZiAoSXNUYXJnZXRQbGF0Zm9ybXg2NChwRW5naW5lKSkgeworICAgICAgICAgICAgcmVzID0gUmVnT3BlbktleUV4Vyhoa0hpdmUsIHN1YmtleSwgMCwgS0VZX1JFQUQgfCBLRVlfV09XNjRfNjRLRVksICZoS2V5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzMyS0VZLCAmaEtleSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICByZXR1cm4gSFJFU1VMVF9GUk9NX1dJTjMyKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGF1dG8gcCA9IE9QVElPTkFMX0ZFQVRVUkVTOyBwLT5yZWdOYW1lOyArK3ApIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgcC0+cmVnTmFtZSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHAtPnZhcmlhYmxlTmFtZSwgMCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKHAtPnZhcmlhYmxlTmFtZSwgMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICAgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisKKyAgICBzdGF0aWMgSFJFU1VMVCBMb2FkVGFyZ2V0RGlyRnJvbUtleSgKKyAgICAgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgICAgICBfX2luIEhLRVkgaGtIaXZlLAorICAgICAgICBfX2luIExQQ1dTVFIgc3Via2V5CisgICAgKSB7CisgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgTFJFU1VMVCByZXM7CisgICAgICAgIERXT1JEIGRhdGFUeXBlOworICAgICAgICBCWVRFIGJ1ZmZlclsxMDI0XTsKKyAgICAgICAgRFdPUkQgYnVmZmVyTGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisKKyAgICAgICAgaWYgKElzVGFyZ2V0UGxhdGZvcm14NjQocEVuZ2luZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZLCAmaEtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBSZWdPcGVuS2V5RXhXKGhrSGl2ZSwgc3Via2V5LCAwLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSwgJmhLZXkpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKKyAgICAgICAgICAgIHJldHVybiBTX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMgIT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgcmV0dXJuIEhSRVNVTFRfRlJPTV9XSU4zMihyZXMpOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCBudWxscHRyLCBudWxscHRyLCAmZGF0YVR5cGUsIGJ1ZmZlciwgJmJ1ZmZlckxlbik7CisgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUyAmJiBkYXRhVHlwZSA9PSBSRUdfU1ogJiYgYnVmZmVyTGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyIiwgcmVpbnRlcnByZXRfY2FzdDx3Y2hhcl90Kj4oYnVmZmVyKSk7CisgICAgICAgIH0KKyAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgIHJldHVybiBIUkVTVUxUX0ZST01fV0lOMzIocmVzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSFJFU1VMVCBMb2FkTGF1bmNoZXJTdGF0ZUZyb21LZXkoCisgICAgICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICAgICAgX19pbiBIS0VZIGhrSGl2ZQorICAgICkgeworICAgICAgICBjb25zdCBMUENXU1RSIHN1YmtleSA9IEwiU29mdHdhcmVcXFB5dGhvblxcUHlMYXVuY2hlciI7CisgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgTFJFU1VMVCByZXM7CisKKyAgICAgICAgaWYgKElzVGFyZ2V0UGxhdGZvcm14NjQocEVuZ2luZSkpIHsKKyAgICAgICAgICAgIHJlcyA9IFJlZ09wZW5LZXlFeFcoaGtIaXZlLCBzdWJrZXksIDAsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzY0S0VZLCAmaEtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBSZWdPcGVuS2V5RXhXKGhrSGl2ZSwgc3Via2V5LCAwLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSwgJmhLZXkpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkgeworICAgICAgICAgICAgcmV0dXJuIFNfRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlcyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICByZXR1cm4gSFJFU1VMVF9GUk9NX1dJTjMyKHJlcyk7CisgICAgICAgIH0KKworICAgICAgICByZXMgPSBSZWdRdWVyeVZhbHVlRXhXKGhLZXksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJJbmNsdWRlX2xhdW5jaGVyIiwgMCk7CisgICAgICAgIH0gZWxzZSBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIHBFbmdpbmUtPlNldFZhcmlhYmxlTnVtZXJpYyhMIkluY2x1ZGVfbGF1bmNoZXIiLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgTCJBc3NvY2lhdGVGaWxlcyIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBpZiAocmVzID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKSB7CisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJBc3NvY2lhdGVGaWxlcyIsIDApOworICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBwRW5naW5lLT5TZXRWYXJpYWJsZU51bWVyaWMoTCJBc3NvY2lhdGVGaWxlcyIsIDEpOworICAgICAgICB9CisKKyAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgIHJldHVybiBTX09LOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIExvYWRPcHRpb25hbEZlYXR1cmVTdGF0ZXMoX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lKSB7CisgICAgICAgIFdDSEFSIHN1YmtleUZtdFsyNTZdOworICAgICAgICBXQ0hBUiBzdWJrZXlbMjU2XTsKKyAgICAgICAgRFdPUkQgc3Via2V5TGVuOworICAgICAgICBIUkVTVUxUIGhyOworICAgICAgICBIS0VZIGhrSGl2ZTsKKworICAgICAgICAvLyBUaGUgbGF1bmNoZXIgaW5zdGFsbGF0aW9uIGlzIHNlcGFyYXRlIGZyb20gdGhlIFB5dGhvbiBpbnN0YWxsLCBzbyB3ZQorICAgICAgICAvLyBjaGVjayBpdHMgc3RhdGUgbGF0ZXIuIFRoaXMgYWxzbyBjaGVja3MgdGhlIGZpbGUgYXNzb2NpYXRpb24gb3B0aW9uLgorCisgICAgICAgIC8vIEdldCB0aGUgcmVnaXN0cnkga2V5IGZyb20gdGhlIGJ1bmRsZSwgdG8gc2F2ZSBoYXZpbmcgdG8gZHVwbGljYXRlIGl0CisgICAgICAgIC8vIGluIG11bHRpcGxlIHBsYWNlcy4KKyAgICAgICAgc3Via2V5TGVuID0gc2l6ZW9mKHN1YmtleUZtdCkgLyBzaXplb2Yoc3Via2V5Rm10WzBdKTsKKyAgICAgICAgaHIgPSBwRW5naW5lLT5HZXRWYXJpYWJsZVN0cmluZyhMIk9wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleSIsIHN1YmtleUZtdCwgJnN1YmtleUxlbik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUoaHIsICJGYWlsZWQgdG8gbG9jYXRlIHJlZ2lzdHJ5IGtleSIpOworICAgICAgICBzdWJrZXlMZW4gPSBzaXplb2Yoc3Via2V5KSAvIHNpemVvZihzdWJrZXlbMF0pOworICAgICAgICBociA9IHBFbmdpbmUtPkZvcm1hdFN0cmluZyhzdWJrZXlGbXQsIHN1YmtleSwgJnN1YmtleUxlbik7CisgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCAlbHMiLCBzdWJrZXlGbXQpOworCisgICAgICAgIC8vIENoZWNrIHRoZSBjdXJyZW50IHVzZXIncyByZWdpc3RyeSBmb3IgZXhpc3RpbmcgZmVhdHVyZXMKKyAgICAgICAgaGtIaXZlID0gSEtFWV9DVVJSRU5UX1VTRVI7CisgICAgICAgIGhyID0gTG9hZE9wdGlvbmFsRmVhdHVyZVN0YXRlc0Zyb21LZXkocEVuZ2luZSwgaGtIaXZlLCBzdWJrZXkpOworICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byByZWFkIGZyb20gSEtDVVxcJWxzIiwgc3Via2V5KTsKKyAgICAgICAgaWYgKGhyID09IFNfRkFMU0UpIHsKKyAgICAgICAgICAgIC8vIE5vdyBjaGVjayB0aGUgbG9jYWwgbWFjaGluZSByZWdpc3RyeQorICAgICAgICAgICAgaGtIaXZlID0gSEtFWV9MT0NBTF9NQUNISU5FOworICAgICAgICAgICAgaHIgPSBMb2FkT3B0aW9uYWxGZWF0dXJlU3RhdGVzRnJvbUtleShwRW5naW5lLCBoa0hpdmUsIHN1YmtleSk7CisgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byByZWFkIGZyb20gSEtMTVxcJWxzIiwgc3Via2V5KTsKKyAgICAgICAgICAgIGlmIChociA9PSBTX09LKSB7CisgICAgICAgICAgICAgICAgLy8gRm91bmQgYSBzeXN0ZW0td2lkZSBpbnN0YWxsLCBzbyBlbmFibGUgdGhlc2Ugc2V0dGluZ3MuCisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiSW5zdGFsbEFsbFVzZXJzIiwgMSk7CisgICAgICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ29tcGlsZUFsbCIsIDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGhyID09IFNfT0spIHsKKyAgICAgICAgICAgIC8vIENhbm5vdCBjaGFuZ2UgSW5zdGFsbEFsbFVzZXJzU3RhdGUgd2hlbiB1cGdyYWRpbmcuIFdoaWxlIHRoZXJlJ3MKKyAgICAgICAgICAgIC8vIG5vIGdvb2QgcmVhc29uIHRvIG5vdCBhbGxvdyBpbnN0YWxsaW5nIGEgcGVyLXVzZXIgYW5kIGFuIGFsbC11c2VyCisgICAgICAgICAgICAvLyB2ZXJzaW9uIHNpbXVsdGFuZW91c2x5LCBCdXJuIGNhbid0IGhhbmRsZSB0aGUgc3RhdGUgbWFuYWdlbWVudAorICAgICAgICAgICAgLy8gYW5kIHdpbGwgbmVlZCB0byB1bmluc3RhbGwgdGhlIG9sZCBvbmUuIAorICAgICAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVTdHJpbmcoTCJJbnN0YWxsQWxsVXNlcnNTdGF0ZSIsIEwiZGlzYWJsZSIpOworCisgICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGluc3RhbGwgZGlyZWN0b3J5LiBUaGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZQorICAgICAgICAgICAgLy8gdXNlci4KKyAgICAgICAgICAgIHN1YmtleUxlbiA9IHNpemVvZihzdWJrZXlGbXQpIC8gc2l6ZW9mKHN1YmtleUZtdFswXSk7CisgICAgICAgICAgICBociA9IHBFbmdpbmUtPkdldFZhcmlhYmxlU3RyaW5nKEwiVGFyZ2V0RGlyUmVnaXN0cnlLZXkiLCBzdWJrZXlGbXQsICZzdWJrZXlMZW4pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZShociwgIkZhaWxlZCB0byBsb2NhdGUgcmVnaXN0cnkga2V5Iik7CisgICAgICAgICAgICBzdWJrZXlMZW4gPSBzaXplb2Yoc3Via2V5KSAvIHNpemVvZihzdWJrZXlbMF0pOworICAgICAgICAgICAgaHIgPSBwRW5naW5lLT5Gb3JtYXRTdHJpbmcoc3Via2V5Rm10LCBzdWJrZXksICZzdWJrZXlMZW4pOworICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0ICVscyIsIHN1YmtleUZtdCk7CisgICAgICAgICAgICBMb2FkVGFyZ2V0RGlyRnJvbUtleShwRW5naW5lLCBoa0hpdmUsIHN1YmtleSk7CisgICAgICAgIH0KKworICAgIExFeGl0OgorICAgICAgICByZXR1cm47CisgICAgfQorCitwdWJsaWM6CisgICAgLy8KKyAgICAvLyBDb25zdHJ1Y3RvciAtIGluaXRpYWxpemUgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICAvLworICAgIFB5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgICAgICBfX2luIEhNT0RVTEUgaE1vZHVsZSwKKyAgICAgICAgX19pbiBCT09MIGZQcmVyZXEsCisgICAgICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICAgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgICAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZAorICAgICkgOiBDQmFsQmFzZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKHBFbmdpbmUsIHBDb21tYW5kLCAzLCAzMDAwKSB7CisgICAgICAgIF9oTW9kdWxlID0gaE1vZHVsZTsKKyAgICAgICAgbWVtY3B5X3MoJl9jb21tYW5kLCBzaXplb2YoX2NvbW1hbmQpLCBwQ29tbWFuZCwgc2l6ZW9mKEJPT1RTVFJBUFBFUl9DT01NQU5EKSk7CisKKyAgICAgICAgTE9OR0xPTkcgbGxJbnN0YWxsZWQgPSAwOworICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0TnVtZXJpY1ZhcmlhYmxlKEwiV2l4QnVuZGxlSW5zdGFsbGVkIiwgJmxsSW5zdGFsbGVkKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikgJiYgQk9PVFNUUkFQUEVSX1JFU1VNRV9UWVBFX1JFQk9PVCAhPSBfY29tbWFuZC5yZXN1bWVUeXBlICYmIDAgPCBsbEluc3RhbGxlZCAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgPT0gX2NvbW1hbmQuYWN0aW9uKSB7CisgICAgICAgICAgICBfY29tbWFuZC5hY3Rpb24gPSBCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWTsKKyAgICAgICAgfSBlbHNlIGlmICgwID09IGxsSW5zdGFsbGVkICYmIChCT09UU1RSQVBQRVJfQUNUSU9OX01PRElGWSA9PSBfY29tbWFuZC5hY3Rpb24gfHwgQk9PVFNUUkFQUEVSX0FDVElPTl9SRVBBSVIgPT0gX2NvbW1hbmQuYWN0aW9uKSkgeworICAgICAgICAgICAgX2NvbW1hbmQuYWN0aW9uID0gQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMOworICAgICAgICB9CisKKyAgICAgICAgX3BsYW5uZWRBY3Rpb24gPSBCT09UU1RSQVBQRVJfQUNUSU9OX1VOS05PV047CisKKworICAgICAgICAvLyBXaGVuIHJlc3VtaW5nIGZyb20gcmVzdGFydCBkb2luZyBzb21lIGluc3RhbGwtbGlrZSBvcGVyYXRpb24sIHRyeSB0byBmaW5kIHRoZSBwYWNrYWdlIHRoYXQgZm9yY2VkIHRoZQorICAgICAgICAvLyByZXN0YXJ0LiBXZSdsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBkdXJpbmcgcGxhbm5pbmcuCisgICAgICAgIF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCA9IG51bGxwdHI7CisKKyAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRVNVTUVfVFlQRV9SRUJPT1QgPT0gX2NvbW1hbmQucmVzdW1lVHlwZSAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA8IF9jb21tYW5kLmFjdGlvbikgeworICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBmb3JjZWQgcmVzdGFydCBwYWNrYWdlIHZhcmlhYmxlIGlzIG51bGwgd2hlbiBpdCBpcyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJXaXhCdW5kbGVGb3JjZWRSZXN0YXJ0UGFja2FnZSIsICZfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQpOworICAgICAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIV9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCB8fCAhKl9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCkgeworICAgICAgICAgICAgICAgIFJlbGVhc2VOdWxsU3RyKF9uZXh0UGFja2FnZUFmdGVyUmVzdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBfY3J0SW5zdGFsbGVkVG9rZW4gPSAtMTsKKyAgICAgICAgcEVuZ2luZS0+U2V0VmFyaWFibGVOdW1lcmljKEwiQ1JUSW5zdGFsbGVkIiwgSXNDcnRJbnN0YWxsZWQoKSA/IDEgOiAwKTsKKworICAgICAgICBfd2l4TG9jID0gbnVsbHB0cjsKKyAgICAgICAgbWVtc2V0KCZfYnVuZGxlLCAwLCBzaXplb2YoX2J1bmRsZSkpOworICAgICAgICBtZW1zZXQoJl9jb25kaXRpb25zLCAwLCBzaXplb2YoX2NvbmRpdGlvbnMpKTsKKyAgICAgICAgX2NvbmZpcm1DbG9zZU1lc3NhZ2UgPSBudWxscHRyOworICAgICAgICBfZmFpbGVkTWVzc2FnZSA9IG51bGxwdHI7CisKKyAgICAgICAgX2xhbmd1YWdlID0gbnVsbHB0cjsKKyAgICAgICAgX3RoZW1lID0gbnVsbHB0cjsKKyAgICAgICAgbWVtc2V0KF9wYWdlSWRzLCAwLCBzaXplb2YoX3BhZ2VJZHMpKTsKKyAgICAgICAgX2hVaVRocmVhZCA9IG51bGxwdHI7CisgICAgICAgIF9yZWdpc3RlcmVkID0gRkFMU0U7CisgICAgICAgIF9oV25kID0gbnVsbHB0cjsKKworICAgICAgICBfc3RhdGUgPSBQWUJBX1NUQVRFX0lOSVRJQUxJWklORzsKKyAgICAgICAgX3Zpc2libGVQYWdlSWQgPSAwOworICAgICAgICBfaW5zdGFsbFBhZ2UgPSBQQUdFX0xPQURJTkc7CisgICAgICAgIF9ockZpbmFsID0gaHJIb3N0SW5pdGlhbGl6YXRpb247CisKKyAgICAgICAgX2Rvd25ncmFkaW5nT3RoZXJWZXJzaW9uID0gRkFMU0U7CisgICAgICAgIF91cGdyYWRpbmdPbGRWZXJzaW9uID0gRkFMU0U7CisgICAgICAgIF9yZXN0YXJ0UmVzdWx0ID0gQk9PVFNUUkFQUEVSX0FQUExZX1JFU1RBUlRfTk9ORTsKKyAgICAgICAgX3Jlc3RhcnRSZXF1aXJlZCA9IEZBTFNFOworICAgICAgICBfYWxsb3dSZXN0YXJ0ID0gRkFMU0U7CisKKyAgICAgICAgX3N1cHByZXNzRG93bmdyYWRlRmFpbHVyZSA9IEZBTFNFOworICAgICAgICBfc3VwcHJlc3NSZXBhaXIgPSBGQUxTRTsKKyAgICAgICAgX21vZGlmeWluZyA9IEZBTFNFOworCisgICAgICAgIF9vdmVycmlkYWJsZVZhcmlhYmxlcyA9IG51bGxwdHI7CisgICAgICAgIF90YXNrYmFyTGlzdCA9IG51bGxwdHI7CisgICAgICAgIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UgPSBVSU5UX01BWDsKKyAgICAgICAgX3Rhc2tiYXJCdXR0b25PSyA9IEZBTFNFOworICAgICAgICBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSA9IEZBTFNFOworICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gRkFMU0U7CisKKyAgICAgICAgX3N1cHByZXNzUGFpbnQgPSBGQUxTRTsKKworICAgICAgICBwRW5naW5lLT5BZGRSZWYoKTsKKyAgICAgICAgX2VuZ2luZSA9IHBFbmdpbmU7CisKKyAgICAgICAgX2hCQUZNb2R1bGUgPSBudWxscHRyOworICAgICAgICBfYmFGdW5jdGlvbiA9IG51bGxwdHI7CisKKyAgICAgICAgTG9hZE9wdGlvbmFsRmVhdHVyZVN0YXRlcyhwRW5naW5lKTsKKyAgICB9CisKKworICAgIC8vCisgICAgLy8gRGVzdHJ1Y3RvciAtIHJlbGVhc2UgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICAvLworICAgIH5QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbigpIHsKKyAgICAgICAgQXNzZXJ0U3ooITo6SXNXaW5kb3coX2hXbmQpLCAiV2luZG93IHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGJlZm9yZSBkZXN0cnVjdG9yLiIpOworICAgICAgICBBc3NlcnRTeighX3RoZW1lLCAiVGhlbWUgc2hvdWxkIGhhdmUgYmVlbiByZWxlYXNlZCBiZWZvcmUgZGVzdHJ1Y3Rvci4iKTsKKworICAgICAgICBSZWxlYXNlT2JqZWN0KF90YXNrYmFyTGlzdCk7CisgICAgICAgIFJlbGVhc2VEaWN0KF9vdmVycmlkYWJsZVZhcmlhYmxlcyk7CisgICAgICAgIFJlbGVhc2VTdHIoX2ZhaWxlZE1lc3NhZ2UpOworICAgICAgICBSZWxlYXNlU3RyKF9jb25maXJtQ2xvc2VNZXNzYWdlKTsKKyAgICAgICAgQmFsQ29uZGl0aW9uc1VuaW5pdGlhbGl6ZSgmX2NvbmRpdGlvbnMpOworICAgICAgICBCYWxJbmZvVW5pbml0aWFsaXplKCZfYnVuZGxlKTsKKyAgICAgICAgTG9jRnJlZShfd2l4TG9jKTsKKworICAgICAgICBSZWxlYXNlU3RyKF9sYW5ndWFnZSk7CisgICAgICAgIFJlbGVhc2VTdHIoX25leHRQYWNrYWdlQWZ0ZXJSZXN0YXJ0KTsKKyAgICAgICAgUmVsZWFzZU51bGxPYmplY3QoX2VuZ2luZSk7CisKKyAgICAgICAgaWYgKF9oQkFGTW9kdWxlKSB7CisgICAgICAgICAgICA6OkZyZWVMaWJyYXJ5KF9oQkFGTW9kdWxlKTsKKyAgICAgICAgICAgIF9oQkFGTW9kdWxlID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAgICBITU9EVUxFIF9oTW9kdWxlOworICAgIEJPT1RTVFJBUFBFUl9DT01NQU5EIF9jb21tYW5kOworICAgIElCb290c3RyYXBwZXJFbmdpbmUqIF9lbmdpbmU7CisgICAgQk9PVFNUUkFQUEVSX0FDVElPTiBfcGxhbm5lZEFjdGlvbjsKKworICAgIExQV1NUUiBfbmV4dFBhY2thZ2VBZnRlclJlc3RhcnQ7CisKKyAgICBXSVhfTE9DQUxJWkFUSU9OKiBfd2l4TG9jOworICAgIEJBTF9JTkZPX0JVTkRMRSBfYnVuZGxlOworICAgIEJBTF9DT05ESVRJT05TIF9jb25kaXRpb25zOworICAgIExQV1NUUiBfZmFpbGVkTWVzc2FnZTsKKyAgICBMUFdTVFIgX2NvbmZpcm1DbG9zZU1lc3NhZ2U7CisKKyAgICBMUFdTVFIgX2xhbmd1YWdlOworICAgIFRIRU1FKiBfdGhlbWU7CisgICAgRFdPUkQgX3BhZ2VJZHNbY291bnRvZihQQUdFX05BTUVTKV07CisgICAgSEFORExFIF9oVWlUaHJlYWQ7CisgICAgQk9PTCBfcmVnaXN0ZXJlZDsKKyAgICBIV05EIF9oV25kOworCisgICAgUFlCQV9TVEFURSBfc3RhdGU7CisgICAgSFJFU1VMVCBfaHJGaW5hbDsKKyAgICBEV09SRCBfdmlzaWJsZVBhZ2VJZDsKKyAgICBQQUdFIF9pbnN0YWxsUGFnZTsKKworICAgIEJPT0wgX3N0YXJ0ZWRFeGVjdXRpb247CisgICAgRFdPUkQgX2NhbGN1bGF0ZWRDYWNoZVByb2dyZXNzOworICAgIERXT1JEIF9jYWxjdWxhdGVkRXhlY3V0ZVByb2dyZXNzOworCisgICAgQk9PTCBfZG93bmdyYWRpbmdPdGhlclZlcnNpb247CisgICAgQk9PTCBfdXBncmFkaW5nT2xkVmVyc2lvbjsKKyAgICBCT09UU1RSQVBQRVJfQVBQTFlfUkVTVEFSVCBfcmVzdGFydFJlc3VsdDsKKyAgICBCT09MIF9yZXN0YXJ0UmVxdWlyZWQ7CisgICAgQk9PTCBfYWxsb3dSZXN0YXJ0OworCisgICAgQk9PTCBfc3VwcHJlc3NEb3duZ3JhZGVGYWlsdXJlOworICAgIEJPT0wgX3N1cHByZXNzUmVwYWlyOworICAgIEJPT0wgX21vZGlmeWluZzsKKworICAgIGludCBfY3J0SW5zdGFsbGVkVG9rZW47CisKKyAgICBTVFJJTkdESUNUX0hBTkRMRSBfb3ZlcnJpZGFibGVWYXJpYWJsZXM7CisKKyAgICBJVGFza2Jhckxpc3QzKiBfdGFza2Jhckxpc3Q7CisgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOworICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKKyAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOworICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKKworICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CisKKyAgICBITU9EVUxFIF9oQkFGTW9kdWxlOworICAgIElCb290c3RyYXBwZXJCQUZ1bmN0aW9uKiBfYmFGdW5jdGlvbjsKK307CisKKy8vCisvLyBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbiAtIGNyZWF0ZXMgYSBuZXcgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIG9iamVjdC4KKy8vCitIUkVTVUxUIENyZWF0ZUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKAorICAgIF9faW4gSE1PRFVMRSBoTW9kdWxlLAorICAgIF9faW4gQk9PTCBmUHJlcmVxLAorICAgIF9faW4gSFJFU1VMVCBockhvc3RJbml0aWFsaXphdGlvbiwKKyAgICBfX2luIElCb290c3RyYXBwZXJFbmdpbmUqIHBFbmdpbmUsCisgICAgX19pbiBjb25zdCBCT09UU1RSQVBQRVJfQ09NTUFORCogcENvbW1hbmQsCisgICAgX19vdXQgSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uKiogcHBBcHBsaWNhdGlvbgorICAgICkgeworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgaWYgKGZQcmVyZXEpIHsKKyAgICAgICAgaHIgPSBFX0lOVkFMSURBUkc7CisgICAgICAgIEV4aXRXaXRoTGFzdEVycm9yKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBVSSB0aHJlYWQuIik7CisgICAgfQorCisgICAgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qIHBBcHBsaWNhdGlvbiA9IG51bGxwdHI7CisKKyAgICBwQXBwbGljYXRpb24gPSBuZXcgUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24oaE1vZHVsZSwgZlByZXJlcSwgaHJIb3N0SW5pdGlhbGl6YXRpb24sIHBFbmdpbmUsIHBDb21tYW5kKTsKKyAgICBFeGl0T25OdWxsKHBBcHBsaWNhdGlvbiwgaHIsIEVfT1VUT0ZNRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIG5ldyBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24gb2JqZWN0LiIpOworCisgICAgKnBwQXBwbGljYXRpb24gPSBwQXBwbGljYXRpb247CisgICAgcEFwcGxpY2F0aW9uID0gbnVsbHB0cjsKKworTEV4aXQ6CisgICAgUmVsZWFzZU9iamVjdChwQXBwbGljYXRpb24pOworICAgIHJldHVybiBocjsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOWYzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9wY2guY3BwCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlICJwY2guaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcGNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk1NjQxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3BjaC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gPGNvcHlyaWdodCBmaWxlPSJwcmVjb21wLmgiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLyAKKy8vIDxzdW1tYXJ5PgorLy8gICAgUHJlY29tcGlsZWQgaGVhZGVyIGZvciBzdGFuZGFyZCBib290c3RyYXBwZXIgYXBwbGljYXRpb24uCisvLyA8L3N1bW1hcnk+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8Z2RpcGx1cy5oPgorI2luY2x1ZGUgPFV4dGhlbWUuaD4KKyNpbmNsdWRlIDxtc2lxdWVyeS5oPgorI2luY2x1ZGUgPG9iamJhc2UuaD4KKyNpbmNsdWRlIDxzaGxvYmouaD4KKyNpbmNsdWRlIDxzaGx3YXBpLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3Ryc2FmZS5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSAiZHV0aWwuaCIKKyNpbmNsdWRlICJtZW11dGlsLmgiCisjaW5jbHVkZSAiZGljdHV0aWwuaCIKKyNpbmNsdWRlICJkaXJ1dGlsLmgiCisjaW5jbHVkZSAiZmlsZXV0aWwuaCIKKyNpbmNsdWRlICJsb2N1dGlsLmgiCisjaW5jbHVkZSAibG9ndXRpbC5oIgorI2luY2x1ZGUgInBhdGh1dGlsLmgiCisjaW5jbHVkZSAicmVzcnV0aWwuaCIKKyNpbmNsdWRlICJzaGVsdXRpbC5oIgorI2luY2x1ZGUgInN0cnV0aWwuaCIKKyNpbmNsdWRlICJ0aG11dGlsLmgiCisjaW5jbHVkZSAidXJpdXRpbC5oIgorI2luY2x1ZGUgInhtbHV0aWwuaCIKKworI2luY2x1ZGUgIklCb290c3RyYXBwZXJFbmdpbmUuaCIKKyNpbmNsdWRlICJJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uaCIKKworI2luY2x1ZGUgIkJhbEJhc2VCb290c3RyYXBwZXJBcHBsaWNhdGlvbi5oIgorI2luY2x1ZGUgImJhbGluZm8uaCIKKyNpbmNsdWRlICJiYWxjb25kaXRpb24uaCIKKworSFJFU1VMVCBDcmVhdGVCb290c3RyYXBwZXJBcHBsaWNhdGlvbigKKyAgICBfX2luIEhNT0RVTEUgaE1vZHVsZSwKKyAgICBfX2luIEJPT0wgZlByZXJlcSwKKyAgICBfX2luIEhSRVNVTFQgaHJIb3N0SW5pdGlhbGl6YXRpb24sCisgICAgX19pbiBJQm9vdHN0cmFwcGVyRW5naW5lKiBwRW5naW5lLAorICAgIF9faW4gY29uc3QgQk9PVFNUUkFQUEVSX0NPTU1BTkQqIHBDb21tYW5kLAorICAgIF9fb3V0IElCb290c3RyYXBwZXJBcHBsaWNhdGlvbioqIHBwQXBwbGljYXRpb24KKyk7CisKKyNpbmNsdWRlICJJQm9vdHN0cmFwcGVyQkFGdW5jdGlvbi5oIgorCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlNDVhZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmNwcApAQCAtMCwwICsxLDc2IEBACisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEuY3BwIiBjb21wYW55PSJPdXRlcmN1cnZlIEZvdW5kYXRpb24iPgorLy8gICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKy8vICAgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNaWNyb3NvZnQgUmVjaXByb2NhbCBMaWNlbnNlIChNUy1STCkuCisvLyAgIFRoZSBsaWNlbnNlIGFuZCBmdXJ0aGVyIGNvcHlyaWdodCB0ZXh0IGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorLy8gICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKy8vIDwvY29weXJpZ2h0PgorLy8KKy8vIDxzdW1tYXJ5PgorLy8gU2V0dXAgY2hhaW5lci9ib290c3RyYXBwZXIgc3RhbmRhcmQgVUkgZm9yIFdpWCB0b29sc2V0LgorLy8gPC9zdW1tYXJ5PgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlICJwY2guaCIKKworc3RhdGljIEhJTlNUQU5DRSB2aEluc3RhbmNlID0gTlVMTDsKKworZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBEbGxNYWluKAorICAgIElOIEhJTlNUQU5DRSBoSW5zdGFuY2UsCisgICAgSU4gRFdPUkQgZHdSZWFzb24sCisgICAgSU4gTFBWT0lEIC8qIHB2UmVzZXJ2ZWQgKi8KKyAgICApCit7CisgICAgc3dpdGNoKGR3UmVhc29uKQorICAgIHsKKyAgICBjYXNlIERMTF9QUk9DRVNTX0FUVEFDSDoKKyAgICAgICAgOjpEaXNhYmxlVGhyZWFkTGlicmFyeUNhbGxzKGhJbnN0YW5jZSk7CisgICAgICAgIHZoSW5zdGFuY2UgPSBoSW5zdGFuY2U7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6CisgICAgICAgIHZoSW5zdGFuY2UgPSBOVUxMOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gVFJVRTsKK30KKworCitleHRlcm4gIkMiIEhSRVNVTFQgV0lOQVBJIEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uQ3JlYXRlKAorICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZCwKKyAgICBfX291dCBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKiBwcEFwcGxpY2F0aW9uCisgICAgKQoreworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgQmFsSW5pdGlhbGl6ZShwRW5naW5lKTsKKworICAgIGhyID0gQ3JlYXRlQm9vdHN0cmFwcGVyQXBwbGljYXRpb24odmhJbnN0YW5jZSwgRkFMU0UsIFNfT0ssIHBFbmdpbmUsIHBDb21tYW5kLCBwcEFwcGxpY2F0aW9uKTsKKyAgICBCYWxFeGl0T25GYWlsdXJlKGhyLCAiRmFpbGVkIHRvIGNyZWF0ZSBib290c3RyYXBwZXIgYXBwbGljYXRpb24gaW50ZXJmYWNlLiIpOworCitMRXhpdDoKKyAgICByZXR1cm4gaHI7Cit9CisKKworZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3koKQoreworICAgIEJhbFVuaW5pdGlhbGl6ZSgpOworfQorCisKK2V4dGVybiAiQyIgSFJFU1VMVCBXSU5BUEkgTWJhUHJlcmVxQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUoCisgICAgX19pbiBIUkVTVUxUIGhySG9zdEluaXRpYWxpemF0aW9uLAorICAgIF9faW4gSUJvb3RzdHJhcHBlckVuZ2luZSogcEVuZ2luZSwKKyAgICBfX2luIGNvbnN0IEJPT1RTVFJBUFBFUl9DT01NQU5EKiBwQ29tbWFuZCwKKyAgICBfX291dCBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24qKiBwcEFwcGxpY2F0aW9uCisgICAgKQoreworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKKworZXh0ZXJuICJDIiB2b2lkIFdJTkFQSSBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3koKQoreyB9CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5kZWYgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjliM2ZhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLmRlZgpAQCAtMCwwICsxLDE4IEBACis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyA8Y29weXJpZ2h0IGZpbGU9IndpeHN0ZGJhLmRlZiIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKzsgICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKzsgICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKzsgICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKzsgICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKzsgPC9jb3B5cmlnaHQ+Cis7IAorOyA8c3VtbWFyeT4KKzsgICAgV2lYIFN0YW5kYXJkIEJvb3RzdHJhcHBlciBBcHBsaWNhdGlvbiBETEwgZW50cnkgcG9pbnRzLgorOyA8L3N1bW1hcnk+Cis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFWFBPUlRTCisgICAgQm9vdHN0cmFwcGVyQXBwbGljYXRpb25DcmVhdGUKKyAgICBCb290c3RyYXBwZXJBcHBsaWNhdGlvbkRlc3Ryb3kKKyAgICBNYmFQcmVyZXFCb290c3RyYXBwZXJBcHBsaWNhdGlvbkNyZWF0ZQorICAgIE1iYVByZXJlcUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uRGVzdHJveQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuc2xuIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcHl0aG9uYmEuc2xuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNDNmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS5zbG4KQEAgLTAsMCArMSwyMiBAQAor77u/CitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMi4wMAorIyBWaXN1YWwgU3R1ZGlvIDIwMTMKK1Zpc3VhbFN0dWRpb1ZlcnNpb24gPSAxMi4wLjMwNTAxLjAKK01pbmltdW1WaXN1YWxTdHVkaW9WZXJzaW9uID0gMTAuMC40MDIxOS4xCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmJhIiwgInB5dGhvbmJhLnZjeHByb2oiLCAiezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs3QTA5QjEzMi1CM0VFLTQ5OUItQTcwMC1BNEIyMTU3RkVBM0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezdBMDlCMTMyLUIzRUUtNDk5Qi1BNzAwLUE0QjIxNTdGRUEzRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3B5dGhvbmJhLnZjeHByb2ogYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMTI5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9weXRob25iYS52Y3hwcm9qCkBAIC0wLDAgKzEsNjkgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgIDxjb3B5cmlnaHQgZmlsZT0id2l4c3RkYmEudmN4cHJvaiIgY29tcGFueT0iT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uIj4KKyAgICBDb3B5cmlnaHQgKGMpIDIwMDQsIE91dGVyY3VydmUgRm91bmRhdGlvbi4KKyAgICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKyAgICBUaGUgbGljZW5zZSBhbmQgZnVydGhlciBjb3B5cmlnaHQgdGV4dCBjYW4gYmUgZm91bmQgaW4gdGhlIGZpbGUKKyAgICBMSUNFTlNFLlRYVCBhdCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgPC9jb3B5cmlnaHQ+CistLT4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxDb25maWd1cmF0aW9uIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICcnIj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8UGxhdGZvcm1Ub29sc2V0IENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJycgYW5kICckKFZDVGFyZ2V0c1BhdGgxNCknICE9ICcnIj52MTQwPC9QbGF0Zm9ybVRvb2xzZXQ+CisgICAgPFBsYXRmb3JtVG9vbHNldCBDb25kaXRpb249IickKFBsYXRmb3JtVG9vbHNldCknID09ICcnIGFuZCAnJChWQ1RhcmdldHNQYXRoMTIpJyAhPSAnJyI+djEyMDwvUGxhdGZvcm1Ub29sc2V0PgorICAgIDxQcm9qZWN0R3VpZD57N0EwOUIxMzItQjNFRS00OTlCLUE3MDAtQTRCMjE1N0ZFQTNEfTwvUHJvamVjdEd1aWQ+CisgICAgPFRhcmdldE5hbWU+UHl0aG9uQkE8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIuLlwuLlx3aXgucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICAgIDxJbnREaXI+JChQeVNvdXJjZVBhdGgpUENCdWlsZFxvYmpcJChDb25maWd1cmF0aW9uKV8kKFBsYXRmb3JtKV9TZXR1cFxCb290c3RyYXBcPC9JbnREaXI+CisgICAgPE91dERpcj4kKEludERpcik8L091dERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NURElPX0xFR0FDWV9XSURFX1NQRUNJRklFUlM9MTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKFdpeEluc3RhbGxQYXRoKXNka1xpbmM8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+VXNlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlckZpbGU+cGNoLmg8L1ByZWNvbXBpbGVkSGVhZGVyRmlsZT4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmNvbWN0bDMyLmxpYjtnZGlwbHVzLmxpYjttc2ltZzMyLmxpYjtzaGx3YXBpLmxpYjt3aW5pbmV0LmxpYjtkdXRpbC5saWI7YmFsdXRpbC5saWI7dmVyc2lvbi5saWI7dXh0aGVtZS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJ3YxNDAnIj4kKFdpeEluc3RhbGxQYXRoKXNka1x2czIwMTVcbGliXHg4NjwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm1Ub29sc2V0KScgPT0gJ3YxMjAnIj4kKFdpeEluc3RhbGxQYXRoKXNka1x2czIwMTNcbGliXHg4NjwvQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz4KKyAgICAgIDxNb2R1bGVEZWZpbml0aW9uRmlsZT5weXRob25iYS5kZWY8L01vZHVsZURlZmluaXRpb25GaWxlPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJz09J0RlYnVnJyI+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icHl0aG9uYmEuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0icGNoLmNwcCI+CisgICAgICA8UHJlY29tcGlsZWRIZWFkZXI+Q3JlYXRlPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJwY2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9InJlc291cmNlLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9InB5dGhvbmJhLmRlZiIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvcmVzb3VyY2UuaCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3Jlc291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjMDNjMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL3Jlc291cmNlLmgKQEAgLTAsMCArMSwyNSBAQAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyA8Y29weXJpZ2h0IGZpbGU9InJlc291cmNlLmgiIGNvbXBhbnk9Ik91dGVyY3VydmUgRm91bmRhdGlvbiI+CisvLyAgIENvcHlyaWdodCAoYykgMjAwNCwgT3V0ZXJjdXJ2ZSBGb3VuZGF0aW9uLgorLy8gICBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1pY3Jvc29mdCBSZWNpcHJvY2FsIExpY2Vuc2UgKE1TLVJMKS4KKy8vICAgVGhlIGxpY2Vuc2UgYW5kIGZ1cnRoZXIgY29weXJpZ2h0IHRleHQgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCisvLyAgIExJQ0VOU0UuVFhUIGF0IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgZGlzdHJpYnV0aW9uLgorLy8gPC9jb3B5cmlnaHQ+CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy97e05PX0RFUEVOREVOQ0lFU319CisvLyBNaWNyb3NvZnQgVmlzdWFsIEMrKyBnZW5lcmF0ZWQgaW5jbHVkZSBmaWxlLgorLy8KKyNkZWZpbmUgSURDX1NUQVRJQyAgICAgICAgICAgICAgICAgICAgICAtMQorCisKKy8vIE5leHQgZGVmYXVsdCB2YWx1ZXMgZm9yIG5ldyBvYmplY3RzCisvLyAKKyNpZmRlZiBBUFNUVURJT19JTlZPS0VECisjaWZuZGVmIEFQU1RVRElPX1JFQURPTkxZX1NZTUJPTFMKKyNkZWZpbmUgX0FQU19ORVhUX1JFU09VUkNFX1ZBTFVFICAgICAgICAxMDIKKyNkZWZpbmUgX0FQU19ORVhUX0NPTU1BTkRfVkFMVUUgICAgICAgICA0MDAwMQorI2RlZmluZSBfQVBTX05FWFRfQ09OVFJPTF9WQUxVRSAgICAgICAgIDEwMDMKKyNkZWZpbmUgX0FQU19ORVhUX1NZTUVEX1ZBTFVFICAgICAgICAgICAxMDEKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28gYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiNjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS50YXJnZXRzIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUudGFyZ2V0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzc2NDZiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUudGFyZ2V0cwpAQCAtMCwwICsxLDExMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiIFRyZWF0QXNMb2NhbFByb3BlcnR5PSJEb3dubG9hZFVybCI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dFR5cGU+QnVuZGxlPC9PdXRwdXRUeXBlPgorICAgICAgICAKKyAgICAgICAgPEJvb3RzdHJhcENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChCb290c3RyYXBDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0Jvb3RzdHJhcENvbmZpZ3VyYXRpb24+CisgICAgICAgIDxMaW5rZXJTdXBwcmVzc1NwZWNpZmljV2FybmluZ3M+MTEzMjsxMTM1OzExNDA8L0xpbmtlclN1cHByZXNzU3BlY2lmaWNXYXJuaW5ncz4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkiPiQoT3V0cHV0TmFtZSktJChQeXRob25WZXJzaW9uKTwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSIhJChCdWlsZEZvclJlbGVhc2UpIj4kKE91dHB1dE5hbWUpLSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpLiQoUmV2aXNpb25OdW1iZXIpPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj4kKE91dHB1dE5hbWUpLWFtZDY0PC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0TmFtZSBDb25kaXRpb249IickKE91dHB1dFN1ZmZpeCknICE9ICcnIj4kKE91dHB1dE5hbWUpLSQoT3V0cHV0U3VmZml4KTwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ0RlYnVnJyI+JChPdXRwdXROYW1lKS1kPC9PdXRwdXROYW1lPgorICAgICAgICA8VGFyZ2V0TmFtZT4kKE91dHB1dE5hbWUpPC9UYXJnZXROYW1lPgorCisgICAgICAgIDxPdXRwdXRQYXRoPiQoT3V0cHV0UGF0aCllbi11c1w8L091dHB1dFBhdGg+CisgICAgICAgIDxPdXREaXI+JChPdXRwdXRQYXRoKTwvT3V0RGlyPgorICAgICAgICAKKyAgICAgICAgPERvd25sb2FkVXJsIENvbmRpdGlvbj0iJyQoRG93bmxvYWRVcmwpJyA9PSAnJyBhbmQgJyQoRG93bmxvYWRVcmxCYXNlKScgIT0gJyciPiQoRG93bmxvYWRVcmxCYXNlLlRyaW1FbmQoYC9gKSkvJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcikvJChBcmNoTmFtZSkkKFJlbGVhc2VMZXZlbE5hbWUpLzwvRG93bmxvYWRVcmw+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSInJChEb3dubG9hZFVybCknICE9ICcnIj4kKERlZmluZUNvbnN0YW50cyk7RG93bmxvYWRVcmw9JChEb3dubG9hZFVybCl7Mn08L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IickKERvd25sb2FkVXJsKScgPT0gJyciPiQoRGVmaW5lQ29uc3RhbnRzKTtEb3dubG9hZFVybD17Mn08L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFdpeEV4dGVuc2lvbiBJbmNsdWRlPSJXaXhVdGlsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhVdGlsRXh0ZW5zaW9uPC9IaW50UGF0aD4KKyAgICAgICAgICAgIDxOYW1lPldpeFV0aWxFeHRlbnNpb248L05hbWU+CisgICAgICAgIDwvV2l4RXh0ZW5zaW9uPgorICAgICAgICA8V2l4RXh0ZW5zaW9uIEluY2x1ZGU9IldpeERlcGVuZGVuY3lFeHRlbnNpb24iPgorICAgICAgICAgICAgPEhpbnRQYXRoPldpeERlcGVuZGVuY3lFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4RGVwZW5kZW5jeUV4dGVuc2lvbjwvTmFtZT4KKyAgICAgICAgPC9XaXhFeHRlbnNpb24+CisgICAgICAgIDxXaXhFeHRlbnNpb24gSW5jbHVkZT0iV2l4QmFsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhCYWxFeHRlbnNpb248L0hpbnRQYXRoPgorICAgICAgICAgICAgPE5hbWU+V2l4QmFsRXh0ZW5zaW9uPC9OYW1lPgorICAgICAgICA8L1dpeEV4dGVuc2lvbj4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJidW5kbGUud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJwYWNrYWdlZ3JvdXBzXCoud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb250ZW50IEluY2x1ZGU9IkRlZmF1bHQudGhtIiAvPgorICAgICAgICA8Q29udGVudCBJbmNsdWRlPSJEZWZhdWx0Lnd4bCIgLz4KKyAgICAgICAgPENvbnRlbnQgSW5jbHVkZT0iU2lkZUJhci5wbmciIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iYnVuZGxlLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9IipfZW4tVVMud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKE91dHB1dFBhdGgpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT48L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgICAgICA8UGFja2FnZT4KKyAgICAgICAgICAgIDxQcm9wZXJ0aWVzPkJ1aWxkRm9yUmVsZWFzZT0kKEJ1aWxkRm9yUmVsZWFzZSk8L1Byb3BlcnRpZXM+CisgICAgICAgIDwvUGFja2FnZT4KKyAgICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPFBhY2thZ2UgSW5jbHVkZT0iLi5cY29yZVxjb3JlKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxkZXZcZGV2Ki53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxkb2NcZG9jKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxleGVcZXhlKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxsaWJcbGliKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlxwYXRoXHBhdGgqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHBpcFxwaXAqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRjbHRrXHRjbHRrKi53aXhwcm9qIiAvPgorICAgICAgICA8UGFja2FnZSBJbmNsdWRlPSIuLlx0ZXN0XHRlc3QqLndpeHByb2oiIC8+CisgICAgICAgIDxQYWNrYWdlIEluY2x1ZGU9Ii4uXHRvb2xzXHRvb2xzKi53aXhwcm9qIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8QnVpbGRQYWNrYWdlc1RhcmdldHM+QnVpbGQ8L0J1aWxkUGFja2FnZXNUYXJnZXRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9Il9TZXRSZWJ1aWxkVGFyZ2V0IiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVSZWJ1aWxkIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8QnVpbGRQYWNrYWdlc1RhcmdldHM+UmVidWlsZDwvQnVpbGRQYWNrYWdlc1RhcmdldHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IkJ1aWxkUGFja2FnZXMiIEJlZm9yZVRhcmdldHM9IkJlZm9yZUJ1aWxkIiBDb25kaXRpb249IickKFJlYnVpbGRBbGwpJyAhPSAnZmFsc2UnIj4KKyAgICAgICAgPE1TQnVpbGQgUHJvamVjdHM9IkAoUGFja2FnZSkiIFRhcmdldHM9IiQoQnVpbGRQYWNrYWdlc1RhcmdldHMpIiBCdWlsZEluUGFyYWxsZWw9InRydWUiIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJCdWlsZExhdW5jaGVyIiBCZWZvcmVUYXJnZXRzPSJCZWZvcmVCdWlsZCIgQ29uZGl0aW9uPSInJChSZWJ1aWxkQWxsKScgIT0gJ2ZhbHNlJyI+CisgICAgICAgIDwhLS0gQnVpbGQgdGhlIGxhdW5jaGVyIE1TSSB1c2luZyBFeGVjIHJhdGhlciB0aGFuIE1TQnVpbGQgLS0+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9J21zYnVpbGQgLi5cbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiAvcDpQbGF0Zm9ybT14ODYgL3A6T3V0cHV0UGF0aD0iJChCdWlsZFBhdGguVHJpbUVuZChgXGApKSIgL3A6T3V0cHV0U3VmZml4PSQoUGxhdGZvcm0pIC9wOkJ1aWxkRm9yUmVsZWFzZT0kKEJ1aWxkRm9yUmVsZWFzZSkgL3A6VXNlVGVzdE1hcmtlcj0kKFVzZVRlc3RNYXJrZXIpJworICAgICAgICAgICAgICBDb250aW51ZU9uRXJyb3I9ImZhbHNlIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iQnVpbGRCb290c3RyYXBBcHBsaWNhdGlvbiIgQmVmb3JlVGFyZ2V0cz0iQmVmb3JlQnVpbGQiPgorICAgICAgICA8TWVzc2FnZSBUZXh0PSJCdWlsZGluZyBib290c3RyYXAgYXBwIiBJbXBvcnRhbmNlPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPE1TQnVpbGQgUHJvamVjdHM9ImJvb3RzdHJhcFxweXRob25iYS52Y3hwcm9qIgorICAgICAgICAgICAgICAgICBUYXJnZXRzPSJCdWlsZDtHZXROYXRpdmVUYXJnZXRQYXRoIgorICAgICAgICAgICAgICAgICBVc2VSZXN1bHRzQ2FjaGU9InRydWUiCisgICAgICAgICAgICAgICAgIFByb3BlcnRpZXM9IkNvbmZpZ3VyYXRpb249JChCb290c3RyYXBDb25maWd1cmF0aW9uKTtQbGF0Zm9ybT1XaW4zMiI+CisgICAgICAgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IlRhcmdldE91dHB1dHMiIFByb3BlcnR5TmFtZT0iQm9vdHN0cmFwQXBwUGF0aCIgLz4KKyAgICAgICAgPC9NU0J1aWxkPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPiQoRGVmaW5lQ29uc3RhbnRzKTtCb290c3RyYXBBcHA9JChCb290c3RyYXBBcHBQYXRoKTwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eGwgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg0ZTBkYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4bApAQCAtMCwwICsxLDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICA8U3RyaW5nIElkPSJDUlREZXNjcmlwdGlvbiI+QyBSdW50aW1lIFVwZGF0ZSAoS0IyOTk5MjI2KTwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJDb21waWxlQWxsRGVzY3JpcHRpb24iPlByZWNvbXBpbGluZyBzdGFuZGFyZCBsaWJyYXJ5PC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzYyYzYyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCkBAIC0wLDAgKzEsOTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSIKKyAgICAgeG1sbnM6YmFsPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC9CYWxFeHRlbnNpb24iPgorICA8QnVuZGxlIE5hbWU9IiEobG9jLkZ1bGxQcm9kdWN0TmFtZSkiCisgICAgICAgICAgVXBncmFkZUNvZGU9IiQodmFyLkNvcmVVcGdyYWRlQ29kZSkiCisgICAgICAgICAgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiCisgICAgICAgICAgSWNvblNvdXJjZUZpbGU9ImJ1bmRsZS5pY28iCisgICAgICAgICAgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIgorICAgICAgICAgIEFib3V0VXJsPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgorICAgICAgICAgIERpc2FibGVNb2RpZnk9ImJ1dHRvbiIKKyAgICAgICAgICBDb21wcmVzc2VkPSJubyI+CisgICAgPEJvb3RzdHJhcHBlckFwcGxpY2F0aW9uIElkPSJQeXRob25CQSIgU291cmNlRmlsZT0iJCh2YXIuQm9vdHN0cmFwQXBwKSI+CisgICAgICAgIDxQYXlsb2FkIENvbXByZXNzZWQ9J3llcycgU291cmNlRmlsZT0nRGVmYXVsdC50aG0nIC8+CisgICAgICAgIDxQYXlsb2FkIENvbXByZXNzZWQ9J3llcycgU291cmNlRmlsZT0nRGVmYXVsdC53eGwnIC8+CisgICAgICAgIDxQYXlsb2FkIENvbXByZXNzZWQ9J3llcycgU291cmNlRmlsZT0nU2lkZUJhci5wbmcnIC8+CisgICAgPC9Cb290c3RyYXBwZXJBcHBsaWNhdGlvbj4KKworICAgIDwhLS0gTWF5IGJlIHNldCB0byAiUmVtb3ZpbmciIG9yICJSZXBhaXJpbmciIC0tPgorICAgIDxWYXJpYWJsZSBOYW1lPSJBY3Rpb25MaWtlSW5zdGFsbGluZyIgVmFsdWU9Ikluc3RhbGxpbmciIC8+CisgICAgPCEtLSBNYXkgYmUgc2V0IHRvICJVbmluc3RhbGxhdGlvbiIgb3IgIlJlcGFpciIgLS0+CisgICAgPFZhcmlhYmxlIE5hbWU9IkFjdGlvbkxpa2VJbnN0YWxsYXRpb24iIFZhbHVlPSJTZXR1cCIgLz4KKworICAgIDxWYXJpYWJsZSBOYW1lPSJTaG9ydFZlcnNpb24iIFZhbHVlPSIkKHZhci5NYWpvclZlcnNpb25OdW1iZXIpLiQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlNob3J0VmVyc2lvbk5vRG90IiBWYWx1ZT0iJCh2YXIuTWFqb3JWZXJzaW9uTnVtYmVyKSQodmFyLk1pbm9yVmVyc2lvbk51bWJlcikiIC8+CisKKyAgICA8VmFyaWFibGUgTmFtZT0iSW5zdGFsbEFsbFVzZXJzIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldERpciIgVmFsdWU9IiIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPD9pZiAkKHZhci5QbGF0Zm9ybSl+PSJ4NjQiID8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkRlZmF1bHRBbGxVc2Vyc1RhcmdldERpciIgVmFsdWU9IltQcm9ncmFtRmlsZXM2NEZvbGRlcl0kKHZhci5UZXN0UHJlZml4KVB5dGhvbiBbU2hvcnRWZXJzaW9uXSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlRhcmdldFBsYXRmb3JtIiBWYWx1ZT0ieDY0IiAvPgorICAgIDw/ZWxzZSA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0QWxsVXNlcnNUYXJnZXREaXIiIFZhbHVlPSJbUHJvZ3JhbUZpbGVzRm9sZGVyXSQodmFyLlRlc3RQcmVmaXgpUHl0aG9uIFtTaG9ydFZlcnNpb25dIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0UGxhdGZvcm0iIFZhbHVlPSJ4ODYiIC8+CisgICAgPD9lbmRpZiA/PgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0SnVzdEZvck1lVGFyZ2V0RGlyIiBWYWx1ZT0iW0xvY2FsQXBwRGF0YUZvbGRlcl1Qcm9ncmFtc1wkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeXRob25bU2hvcnRWZXJzaW9uTm9Eb3RdJCh2YXIuU3VmZml4MzIpIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5IiBWYWx1ZT0iU29mdHdhcmVcJCh2YXIuVGVzdFByZWZpeClQeXRob25cUHl0aG9uQ29yZVxbU2hvcnRWZXJzaW9uXSQodmFyLlN1ZmZpeDMyKVxJbnN0YWxsZWRGZWF0dXJlcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0RGlyUmVnaXN0cnlLZXkiIFZhbHVlPSJTb2Z0d2FyZVwkKHZhci5UZXN0UHJlZml4KVB5dGhvblxQeXRob25Db3JlXFtTaG9ydFZlcnNpb25dJCh2YXIuU3VmZml4MzIpXEluc3RhbGxQYXRoIiAvPgorICAgIAorICAgIDwhLS0KKyAgICBBbiBlbXB0eSBzdHJpbmcgd2lsbCB1c2UgdGhlIG90aGVyIGRlZmF1bHRzIGJhc2VkIG9uIEluc3RhbGxBbGxVc2VycworICAgIChhbmQgc3dpdGNoIGR5bmFtaWNhbGx5IGluIHRoZSBVSSkuIFRvIGdldCB0aGUgb2xkIGRlZmF1bHQsIHBhc3MKKyAgICB0aGlzIHByb3BlcnR5IG9uIHRoZSBjb21tYW5kIGxpbmU6CisgICAgICAgIERlZmF1bHRDdXN0b21UYXJnZXREaXI9W1dpbmRvd3NWb2x1bWVdUHl0aG9uW1Nob3J0VmVyc2lvbk5vRG90XQorICAgIC0tPgorICAgIDxWYXJpYWJsZSBOYW1lPSJEZWZhdWx0Q3VzdG9tVGFyZ2V0RGlyIiBWYWx1ZT0iIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKworICAgIDxWYXJpYWJsZSBOYW1lPSJJbnN0YWxsQWxsVXNlcnNTdGF0ZSIgVmFsdWU9ImVuYWJsZWQiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9Ikluc3RhbGxMYXVuY2hlckFsbFVzZXJzU3RhdGUiIFZhbHVlPSJlbmFibGVkIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ3VzdG9tSW5zdGFsbExhdW5jaGVyQWxsVXNlcnNTdGF0ZSIgVmFsdWU9IltJbnN0YWxsTGF1bmNoZXJBbGxVc2Vyc1N0YXRlXSIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iVGFyZ2V0RGlyU3RhdGUiIFZhbHVlPSJlbmFibGVkIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJDdXN0b21Ccm93c2VCdXR0b25TdGF0ZSIgVmFsdWU9ImVuYWJsZWQiIC8+CisKKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9jb3JlIiBWYWx1ZT0iMSIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9leGUiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9kZXYiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV9saWIiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV90ZXN0IiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfZG9jIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfdG9vbHMiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iSW5jbHVkZV90Y2x0ayIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX3BpcCIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2xhdW5jaGVyIiBWYWx1ZT0iMSIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IkluY2x1ZGVfc3ltYm9scyIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJJbmNsdWRlX2RlYnVnIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgCisgICAgPFZhcmlhYmxlIE5hbWU9IkxhdW5jaGVyT25seSIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDxWYXJpYWJsZSBOYW1lPSJBc3NvY2lhdGVGaWxlcyIgVmFsdWU9IjEiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIDxWYXJpYWJsZSBOYW1lPSJTaG9ydGN1dHMiIFZhbHVlPSIxIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iUHJlcGVuZFBhdGgiIFZhbHVlPSIwIiBiYWw6T3ZlcnJpZGFibGU9InllcyIgLz4KKyAgICA8VmFyaWFibGUgTmFtZT0iQ29tcGlsZUFsbCIgVmFsdWU9IjAiIGJhbDpPdmVycmlkYWJsZT0ieWVzIiAvPgorICAgIAorICAgIDxWYXJpYWJsZSBOYW1lPSJTaW1wbGVJbnN0YWxsIiBWYWx1ZT0iMCIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgPFZhcmlhYmxlIE5hbWU9IlNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbiIgVmFsdWU9IiIgYmFsOk92ZXJyaWRhYmxlPSJ5ZXMiIC8+CisgICAgCisgICAgPENoYWluIFBhcmFsbGVsQ2FjaGU9InllcyI+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnQiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjb3JlIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iZGV2IiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iZXhlIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0ibGliIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0idGVzdCIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImRvYyIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9InRvb2xzIiAvPgorICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0idGNsdGsiIC8+CisgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJsYXVuY2hlciIgLz4KKyAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9InBvc3RpbnN0YWxsIiAvPgorICAgIDwvQ2hhaW4+CisgIDwvQnVuZGxlPgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Z1bGwud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvZnVsbC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkYmRkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Z1bGwud2l4cHJvagpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57M0UyMDRBREQtMjM4RC00RDEwLTg1MkMtNEY4NTkzMjVDODM5fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD5mdWxsPC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzTVNJPXllczsKKyAgICAgICAgICAgIENvbXByZXNzUERCPXllczsKKyAgICAgICAgICAgIENvbXByZXNzTVNJX0Q9eWVzOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGUudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY29yZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY29yZS53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzZDBiNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9jb3JlLnd4cwpAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0iY29yZSI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImNvcmUubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImNvcmVfQWxsVXNlcnNfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iY29yZV9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfY29yZSBvciBJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0p1c3RGb3JNZV9wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJjb3JlX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJjb3JlX0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iY29yZV9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NydC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvY3J0Lnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzQwNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2NydC53eHMKQEAgLTAsMCArMSw0OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImNydCI+CisgICAgICAgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnRfMTQuMF92Ni4wIiAvPgorICAgICAgICAgICAgPFBhY2thZ2VHcm91cFJlZiBJZD0iY3J0XzE0LjBfdjYuMSIgLz4KKyAgICAgICAgICAgIDxQYWNrYWdlR3JvdXBSZWYgSWQ9ImNydF8xNC4wX3Y2LjIiIC8+CisgICAgICAgICAgICA8UGFja2FnZUdyb3VwUmVmIElkPSJjcnRfMTQuMF92Ni4zIiAvPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPD9mb3JlYWNoIHZlciBpbiB2Ni4wO3Y2LjE7djYuMjt2Ni4zID8+CisgICAgPD9pZiAiJCh2YXIudmVyKSIgPSAidjYuMCIgPz4KKyAgICA8P2RlZmluZSBtc3V2ZXI9Ni4wID8+CisgICAgPD9lbHNlaWYgIiQodmFyLnZlcikiID0gInY2LjEiID8+CisgICAgPD9kZWZpbmUgbXN1dmVyPTYuMSA/PgorICAgIDw/ZWxzZWlmICIkKHZhci52ZXIpIiA9ICJ2Ni4yIiA/PgorICAgIDw/ZGVmaW5lIG1zdXZlcj04LVJUID8+CisgICAgPD9lbHNlaWYgIiQodmFyLnZlcikiID0gInY2LjMiID8+CisgICAgPD9kZWZpbmUgbXN1dmVyPTguMSA/PgorICAgIDw/ZWxzZSA/PgorICAgIDw/ZXJyb3IgdW5rbm93biB2ZXJzaW9uICQodmFyLnZlcikgPz4KKyAgICA8P2VuZGlmID8+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImNydF8xNC4wXyQodmFyLnZlcikiPgorICAgICAgICAgICAgPE1zdVBhY2thZ2UgSWQ9ImNydF8xNC4wXyQodmFyLnZlcilfeDg2IgorICAgICAgICAgICAgICAgICAgICAgICAgS0I9IjI5OTkyMjYiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnJlZGlzdClcV2luZG93cyQodmFyLm1zdXZlciktS0IyOTk5MjI2LXg4Ni5tc3UiCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5TmFtZT0iIShsb2MuQ1JURGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLkNSVERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgQ1JUSW5zdGFsbGVkIGFuZCBWZXJzaW9uTlQgPSAkKHZhci52ZXIpIGFuZCBub3QgVmVyc2lvbk5UNjQgYW5kIChJbmNsdWRlX2NvcmUgb3IgSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIG5vdCBMYXVuY2hlck9ubHkiIC8+CisKKyAgICAgICAgICAgIDxNc3VQYWNrYWdlIElkPSJjcnRfMTQuMF8kKHZhci52ZXIpX3g2NCIKKyAgICAgICAgICAgICAgICAgICAgICAgIEtCPSIyOTk5MjI2IgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iIShiaW5kcGF0aC5yZWRpc3QpXFdpbmRvd3MkKHZhci5tc3V2ZXIpLUtCMjk5OTIyNi14NjQubXN1IgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNSVERlc2NyaXB0aW9uKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uPSIhKGxvYy5DUlREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IENSVEluc3RhbGxlZCBhbmQgVmVyc2lvbk5UNjQgPSAkKHZhci52ZXIpIGFuZCAoSW5jbHVkZV9jb3JlIG9yIEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPD91bmRlZiBtc3V2ZXIgPz4KKyAgICA8P2VuZGZvcmVhY2ggPz4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kZXYud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2Rldi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI4NGRiYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kZXYud3hzCkBAIC0wLDAgKzEsNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJkZXYiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZGV2X2QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZGV2X0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZGV2IGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRldl9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRldl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2RldiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2RvYy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYzOWZmNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9kb2Mud3hzCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImRvY19BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRvYy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZG9jIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZG9jX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImRvYy5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfZG9jIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2V4ZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvZXhlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTQ2NGM0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2V4ZS53eHMKQEAgLTAsMCArMSw2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImV4ZSI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0iZXhlLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImV4ZV9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0FsbFVzZXJzX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0iZXhlX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZS5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIChJbmNsdWRlX2V4ZSBvciBJbmNsdWRlX2xhdW5jaGVyIG9yIEluY2x1ZGVfcGlwKSBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImV4ZV9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCAoSW5jbHVkZV9leGUgb3IgSW5jbHVkZV9sYXVuY2hlciBvciBJbmNsdWRlX3BpcCkgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJleGVfSnVzdEZvck1lX2QiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJleGVfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0lfRCkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgKEluY2x1ZGVfZXhlIG9yIEluY2x1ZGVfbGF1bmNoZXIgb3IgSW5jbHVkZV9waXApIGFuZCBJbmNsdWRlX2RlYnVnIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2xhdW5jaGVyLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9sYXVuY2hlci53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdjNmFjNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9sYXVuY2hlci53eHMKQEAgLTAsMCArMSwyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQYWNrYWdlR3JvdXAgSWQ9ImxhdW5jaGVyIj4KKyAgICAgICAgICAgIDwhLS0gVGhlIEFsbCBVc2VycyBsYXVuY2hlciBpcyBhbHdheXMgdGhlIDMyLWJpdCB2ZXJzaW9uIC0tPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxhdW5jaGVyX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0ibGF1bmNoZXIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iKEluc3RhbGxBbGxVc2VycyBvciBJbnN0YWxsTGF1bmNoZXJBbGxVc2VycykgYW5kIEluY2x1ZGVfbGF1bmNoZXIiIC8+CisKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsYXVuY2hlcl9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsYXVuY2hlci5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCAoSW5zdGFsbEFsbFVzZXJzIG9yIEluc3RhbGxMYXVuY2hlckFsbFVzZXJzKSBhbmQgSW5jbHVkZV9sYXVuY2hlciIgLz4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL2xpYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIzZmJjMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9saWIud3hzCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJsaWIiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfbGliIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9BbGxVc2Vyc19wZGIiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWJfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9saWIgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfQWxsVXNlcnNfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9KdXN0Rm9yTWUiCisgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VGaWxlPSJsaWIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJsaWJfSnVzdEZvck1lX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9ImxpYl9KdXN0Rm9yTWVfZCIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9ImxpYl9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX2xpYiBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy9wb3N0aW5zdGFsbC53eHMgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcG9zdGluc3RhbGwud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMGYzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvcG9zdGluc3RhbGwud3hzCkBAIC0wLDAgKzEsNjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJwb3N0aW5zdGFsbCI+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGlwX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icGlwLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV9waXAgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGlwX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InBpcC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfcGlwIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0icGF0aF9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InBhdGgubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBQcmVwZW5kUGF0aCBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJwYXRoX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InBhdGgubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBQcmVwZW5kUGF0aCBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9kZWZpbmUgQ29tcGlsZUFsbENvbW1hbmQ9LSQodmFyLlNob3J0VmVyc2lvbikkKHZhci5TdWZmaXgzMikgLUUgLXMgLVdpICJbVGFyZ2V0RGlyXVxMaWJcY29tcGlsZWFsbC5weSIgLWYgLXggImJhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8cHkyX3xsaWIydG8zXFx0ZXN0c3x2ZW52XFxzY3JpcHRzIiAiW1RhcmdldERpcl1cTGliIj8+CisgICAgICAgICAgICA8RXhlUGFja2FnZSBJZD0iY29tcGlsZWFsbF9BbGxVc2VycyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InB5LmV4ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlOYW1lPSIhKGxvYy5Db21waWxlQWxsRGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbW1hbmQ9JyQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlcGFpckNvbW1hbmQ9JyQodmFyLkNvbXBpbGVBbGxDb21tYW5kKScKKyAgICAgICAgICAgICAgICAgICAgICAgIFBlcm1hbmVudD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgVml0YWw9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBDb21waWxlQWxsIGFuZCBub3QgTGF1bmNoZXJPbmx5IiAvPgorICAgICAgICAgICAgPEV4ZVBhY2thZ2UgSWQ9ImNvbXBpbGVhbGxfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0icHkuZXhlIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheU5hbWU9IiEobG9jLkNvbXBpbGVBbGxEZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29tbWFuZD0nJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUmVwYWlyQ29tbWFuZD0nJCh2YXIuQ29tcGlsZUFsbENvbW1hbmQpJworICAgICAgICAgICAgICAgICAgICAgICAgUGVybWFuZW50PSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBQZXJNYWNoaW5lPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIFZpdGFsPSJubyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Im5vdCBJbnN0YWxsQWxsVXNlcnMgYW5kIENvbXBpbGVBbGwgYW5kIG5vdCBMYXVuY2hlck9ubHkiIC8+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdGNsdGsud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3RjbHRrLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDAyOWE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3RjbHRrLnd4cwpAQCAtMCwwICsxLDY4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0idGNsdGsiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGsubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3RjbHRrIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0FsbFVzZXJzX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrX3BkYi5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc1BEQikiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBFbmFibGVGZWF0dXJlU2VsZWN0aW9uPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGNsdGsgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGtfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZUZlYXR1cmVTZWxlY3Rpb249InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKworICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRjbHRrLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0Y2x0a19KdXN0Rm9yTWVfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGtfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgSW5jbHVkZV9zeW1ib2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRjbHRrX0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGNsdGtfZC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSV9EKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9Im5vIgorICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlRmVhdHVyZVNlbGVjdGlvbj0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0ibm90IEluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90Y2x0ayBhbmQgSW5jbHVkZV9kZWJ1ZyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgPC9QYWNrYWdlR3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90ZXN0Lnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvcGFja2FnZWdyb3Vwcy90ZXN0Lnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmFjYWVmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rlc3Qud3hzCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UGFja2FnZUdyb3VwIElkPSJ0ZXN0Ij4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdC5tc2kiCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkPSIkKHZhci5Db21wcmVzc01TSSkiCisgICAgICAgICAgICAgICAgICAgICAgICBEb3dubG9hZFVybD0iJCh2YXIuRG93bmxvYWRVcmwpIgorICAgICAgICAgICAgICAgICAgICAgICAgRm9yY2VQZXJNYWNoaW5lPSJ5ZXMiCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJJbnN0YWxsQWxsVXNlcnMgYW5kIEluY2x1ZGVfdGVzdCBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0FsbFVzZXJzX3BkYiIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3RfcGRiLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzUERCKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIERvd25sb2FkVXJsPSIkKHZhci5Eb3dubG9hZFVybCkiCisgICAgICAgICAgICAgICAgICAgICAgICBGb3JjZVBlck1hY2hpbmU9InllcyIKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGxDb25kaXRpb249Ikluc3RhbGxBbGxVc2VycyBhbmQgSW5jbHVkZV90ZXN0IGFuZCBJbmNsdWRlX3N5bWJvbHMgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9BbGxVc2Vyc19kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdF9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisKKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0p1c3RGb3JNZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUZpbGU9InRlc3QubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idGVzdF9KdXN0Rm9yTWVfcGRiIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdF9wZGIubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NQREIpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIEluY2x1ZGVfc3ltYm9scyBhbmQgbm90IExhdW5jaGVyT25seSI+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9IlRBUkdFVERJUiIgVmFsdWU9IltUYXJnZXREaXJdIiAvPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVkiIFZhbHVlPSJbT3B0aW9uYWxGZWF0dXJlc1JlZ2lzdHJ5S2V5XSIgLz4KKyAgICAgICAgICAgIDwvTXNpUGFja2FnZT4KKyAgICAgICAgICAgIDxNc2lQYWNrYWdlIElkPSJ0ZXN0X0p1c3RGb3JNZV9kIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idGVzdF9kLm1zaSIKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWQ9IiQodmFyLkNvbXByZXNzTVNJX0QpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rlc3QgYW5kIEluY2x1ZGVfZGVidWcgYW5kIG5vdCBMYXVuY2hlck9ubHkiPgorICAgICAgICAgICAgICAgIDxNc2lQcm9wZXJ0eSBOYW1lPSJUQVJHRVRESVIiIFZhbHVlPSJbVGFyZ2V0RGlyXSIgLz4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iT1BUSU9OQUxGRUFUVVJFU1JFR0lTVFJZS0VZIiBWYWx1ZT0iW09wdGlvbmFsRmVhdHVyZXNSZWdpc3RyeUtleV0iIC8+CisgICAgICAgICAgICA8L01zaVBhY2thZ2U+CisgICAgICAgIDwvUGFja2FnZUdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3BhY2thZ2Vncm91cHMvdG9vbHMud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rvb2xzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDlhYjE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9wYWNrYWdlZ3JvdXBzL3Rvb2xzLnd4cwpAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFBhY2thZ2VHcm91cCBJZD0idG9vbHMiPgorICAgICAgICAgICAgPE1zaVBhY2thZ2UgSWQ9InRvb2xzX0FsbFVzZXJzIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idG9vbHMubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ieWVzIgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbENvbmRpdGlvbj0iSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rvb2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8TXNpUGFja2FnZSBJZD0idG9vbHNfSnVzdEZvck1lIgorICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlRmlsZT0idG9vbHMubXNpIgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZD0iJCh2YXIuQ29tcHJlc3NNU0kpIgorICAgICAgICAgICAgICAgICAgICAgICAgRG93bmxvYWRVcmw9IiQodmFyLkRvd25sb2FkVXJsKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvcmNlUGVyTWFjaGluZT0ibm8iCisgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsQ29uZGl0aW9uPSJub3QgSW5zdGFsbEFsbFVzZXJzIGFuZCBJbmNsdWRlX3Rvb2xzIGFuZCBub3QgTGF1bmNoZXJPbmx5Ij4KKyAgICAgICAgICAgICAgICA8TXNpUHJvcGVydHkgTmFtZT0iVEFSR0VURElSIiBWYWx1ZT0iW1RhcmdldERpcl0iIC8+CisgICAgICAgICAgICAgICAgPE1zaVByb3BlcnR5IE5hbWU9Ik9QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWSIgVmFsdWU9IltPcHRpb25hbEZlYXR1cmVzUmVnaXN0cnlLZXldIiAvPgorICAgICAgICAgICAgPC9Nc2lQYWNrYWdlPgorICAgICAgICA8L1BhY2thZ2VHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9yZWxlYXNlbG9jYWwud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZWxvY2FsLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzZGVlNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZWxvY2FsLndpeHByb2oKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0ZDRDQzQUM5LTk2OUYtNDlBMS04QUM1LUVEQzI3NTk5RDFFQn08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+PC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzTVNJPXllczsKKyAgICAgICAgICAgIENvbXByZXNzUERCPW5vOworICAgICAgICAgICAgQ29tcHJlc3NNU0lfRD1ubworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGUudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2V3ZWIud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvcmVsZWFzZXdlYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MGM3MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvYnVuZGxlL3JlbGVhc2V3ZWIud2l4cHJvagpAQCAtMCwwICsxLDIxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NzFDREUyMTMtQ0IzOS00QkQ5LUI4OUQtQkJCODc4Njg5MTQ0fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxPdXRwdXROYW1lPnB5dGhvbjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFN1ZmZpeD53ZWJpbnN0YWxsPC9PdXRwdXRTdWZmaXg+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisKKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIENvbXByZXNzTVNJPW5vOworICAgICAgICAgICAgQ29tcHJlc3NQREI9bm87CisgICAgICAgICAgICBDb21wcmVzc01TSV9EPW5vCisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9ImJ1bmRsZS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvc25hcHNob3Qud2l4cHJvaiBiL1Rvb2xzL21zaS9idW5kbGUvc25hcHNob3Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzQ1MDQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9zbmFwc2hvdC53aXhwcm9qCkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns4QTRBMTE2Mi00QkY5LTRGRjYtOUE5OC0zMTVGMDFFNDQ5MzJ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PjwvT3V0cHV0U3VmZml4PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSInJChQYWNrKScgIT0gJ3RydWUnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtDb21wcmVzc01TST1ubzsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSInJChQYWNrKScgPT0gJ3RydWUnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtDb21wcmVzc01TST15ZXM7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOworICAgICAgICAgICAgQ29tcHJlc3NQREI9bm87CisgICAgICAgICAgICBDb21wcmVzc01TSV9EPW5vOworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSJidW5kbGUudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uLnd4cyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmOTZiZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29tbW9uLnd4cwpAQCAtMCwwICsxLDExMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5IElkPSJSRUdJU1RSWUtFWSIgVmFsdWU9IlNvZnR3YXJlXCQodmFyLlRlc3RQcmVmaXgpUHl0aG9uXFB5dGhvbkNvcmVcJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlN1ZmZpeDMyKSIgLz4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudCBJZD0iT3B0aW9uYWxGZWF0dXJlIiBHdWlkPSIqIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPENvbmRpdGlvbj5PUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVk8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltPUFRJT05BTEZFQVRVUkVTUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBUeXBlPSJzdHJpbmciIE5hbWU9IiQodmFyLk9wdGlvbmFsRmVhdHVyZU5hbWUpIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgIDwvQ29tcG9uZW50PgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHkgSWQ9IlVwZ3JhZGVUYWJsZSIgVmFsdWU9IjEiIC8+CisgICAgICAgIAorICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IiQodmFyLlVwZ3JhZGVNaW5pbXVtVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CisgICAgICAgIDwvVXBncmFkZT4KKyAgICAgICAgCisgICAgICAgIDw/aWYgJCh2YXIuVXBncmFkZUNvZGUpIT0kKHZhci5Db3JlVXBncmFkZUNvZGUpID8+CisgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5Db3JlVXBncmFkZUNvZGUpIj4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iTUlTU0lOR19DT1JFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJ5ZXMiIE9ubHlEZXRlY3Q9InllcyIgLz4KKyAgICAgICAgPC9VcGdyYWRlPgorICAgICAgICA8P2VuZGlmID8+CisgICAgICAgIAorICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vRG93bmdyYWRlKSI+SW5zdGFsbGVkIE9SIE5PVCBET1dOR1JBREU8L0NvbmRpdGlvbj4KKyAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5JbmNvcnJlY3RDb3JlKSI+SW5zdGFsbGVkIE9SIE5PVCBNSVNTSU5HX0NPUkU8L0NvbmRpdGlvbj4KKyAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5Ob1RhcmdldERpcikiPkluc3RhbGxlZCBPUiBUQVJHRVRESVIgT1IgU3VwcHJlc3NfVEFSR0VURElSX0NoZWNrPC9Db25kaXRpb24+CisKKyAgICAgICAgPEluc3RhbGxFeGVjdXRlU2VxdWVuY2U+CisgICAgICAgICAgICA8UmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBBZnRlcj0iSW5zdGFsbEluaXRpYWxpemUiPlVQR1JBREU8L1JlbW92ZUV4aXN0aW5nUHJvZHVjdHM+CisgICAgICAgIDwvSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPCEtLSBJbmNsdWRlIGFuIGljb24gZm9yIHRoZSBQcm9ncmFtcyBhbmQgRmVhdHVyZXMgZGlhbG9nIC0tPgorICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENccHljb24uaWNvIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUFBST0RVQ1RJQ09OIiBWYWx1ZT0iQVJQSWNvbiIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBOT01PRElGWSIgVmFsdWU9IjEiIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iRElTQUJMRUFEVlRTSE9SVENVVFMiIFZhbHVlPSIxIiAvPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5IElkPSJUQVJHRVRESVIiIE5hbWU9IlNvdXJjZURpciI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJJbnN0YWxsRGlyZWN0b3J5IiBDb21wb25lbnRHdWlkR2VuZXJhdGlvblNlZWQ9IiQodmFyLkluc3RhbGxEaXJlY3RvcnlHdWlkU2VlZCkiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5PgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPCEtLSBUb3AtbGV2ZWwgZGlyZWN0b3JpZXMgLS0+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkRMTHMiIE5hbWU9IkRMTHMiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRG9jIiBOYW1lPSJEb2MiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iaW5jbHVkZSIgTmFtZT0iaW5jbHVkZSIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJMaWIiIE5hbWU9IkxpYiIgLz4KKyAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJsaWJzIiBOYW1lPSJsaWJzIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorCisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IlNjcmlwdHMiIE5hbWU9IlNjcmlwdHMiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0idGNsIiBOYW1lPSJ0Y2wiIC8+CisgICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iVG9vbHMiIE5hbWU9IlRvb2xzIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDwhLS0gU3RhcnQgTWVudSBmb2xkZXIgLS0+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJUQVJHRVRESVIiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iUHJvZ3JhbU1lbnVGb2xkZXIiPgorICAgICAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9Ik1lbnVEaXIiIE5hbWU9IiQodmFyLlRlc3RQcmVmaXgpIShsb2MuUHJvZHVjdE5hbWUpIiAvPgorICAgICAgICAgICAgPC9EaXJlY3Rvcnk+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9kLnd4cyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdlMDM5NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZC53eHMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlX2QpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJjb3JlX2RsbF9kIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29yZS9jb3JlX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9jb3JlL2NvcmVfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Nzc0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX2VuLVVTLnd4bApAQCAtMCwwICsxLDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkNvcmUgSW50ZXJwcmV0ZXI8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmNvcmU8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9maWxlcy53eHMgYi9Ub29scy9tc2kvY29yZS9jb3JlX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDVlMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9maWxlcy53eHMKQEAgLTAsMCArMSwzMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJjb3JlX2RsbCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fc3RhYmxlLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX3N0YWJsZS5kbGwiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbi5kbGwiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY29yZV9zeW1ib2xzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbi5wZGIiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbi5wZGIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpLnBkYiIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iY29yZV9kbGxfZCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob25fc3RhYmxlX2QuZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob25fc3RhYmxlX2QuZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpX2QuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbl9kLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHl0aG9uX2QuZGxsIiBOYW1lPSJweXRob24kKHZhci5NYWpvclZlcnNpb25OdW1iZXIpJCh2YXIuTWlub3JWZXJzaW9uTnVtYmVyKV9kLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJweXRob25fZC5wZGIiIE5hbWU9InB5dGhvbiQodmFyLk1ham9yVmVyc2lvbk51bWJlcikkKHZhci5NaW5vclZlcnNpb25OdW1iZXIpX2QucGRiIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb3JlL2NvcmVfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljODgzODkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntFOThFNzUzOS02NEU3LTREQ0UtQUFDRC0wMUUzQURFNDBFRkR9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5jb3JlX3BkYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iY29yZV9wZGIud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJjb3JlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud3hzIGIvVG9vbHMvbXNpL2NvcmUvY29yZV9wZGIud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYzMxNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvY29yZS9jb3JlX3BkYi53eHMKQEAgLTAsMCArMSwxNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJTeW1ib2xzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZVBkYikiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvblBkYikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJjb3JlX3N5bWJvbHMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jc3ZfdG9fd3hzLnB5IGIvVG9vbHMvbXNpL2Nzdl90b193eHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1YzhmOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9jc3ZfdG9fd3hzLnB5CkBAIC0wLDAgKzEsMTI3IEBACisnJycKK1Byb2Nlc3NlcyBhIENTViBmaWxlIGNvbnRhaW5pbmcgYSBsaXN0IG9mIGZpbGVzIGludG8gYSBXWFMgZmlsZSB3aXRoCitjb21wb25lbnRzIGZvciBlYWNoIGxpc3RlZCBmaWxlLgorCitUaGUgQ1NWIGNvbHVtbnMgYXJlOgorICAgIHNvdXJjZSBvZiBmaWxlLCB0YXJnZXQgZm9yIGZpbGUsIGdyb3VwIG5hbWUKKworVXNhZ2U6OgorICAgIHB5IHR4dF90b193eHMucHkgW3BhdGggdG8gZmlsZSBsaXN0IC5jc3ZdIFtwYXRoIHRvIGRlc3RpbmF0aW9uIC53eHNdCisKK1RoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBzdHJ1Y3R1cmVzIHdoZXJlIHNvbWUgZGlyZWN0b3JpZXMgb25seQorY29udGFpbiBvdGhlciBkaXJlY3Rvcmllcy4gTVNCdWlsZCBpcyBub3QgYWJsZSB0byBnZW5lcmF0ZSB0aGUKK0RpcmVjdG9yeSBlbnRyaWVzIGluIHRoZSBXWFMgZmlsZSBjb3JyZWN0bHksIGFzIGl0IG9wZXJhdGVzIG9uIGZpbGVzLgorUHl0aG9uLCBob3dldmVyLCBjYW4gZWFzaWx5IGZpbGwgaW4gdGhlIGdhcC4KKycnJworCitfX2F1dGhvcl9fID0gIlN0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPiIKKworaW1wb3J0IGNzdgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHppcF9sb25nZXN0Citmcm9tIHBhdGhsaWIgaW1wb3J0IFB1cmVXaW5kb3dzUGF0aAorZnJvbSB1dWlkIGltcG9ydCB1dWlkMQorCitJRF9DSEFSX1NVQlMgPSB7CisgICAgJy0nOiAnXycsCisgICAgJysnOiAnX1AnLAorfQorCitkZWYgbWFrZV9pZChwYXRoKToKKyAgICByZXR1cm4gcmUuc3ViKAorICAgICAgICByJ1teQS1aYS16MC05Xy5dJywKKyAgICAgICAgbGFtYmRhIG06IElEX0NIQVJfU1VCUy5nZXQobS5ncm91cCgwKSwgJ18nKSwKKyAgICAgICAgc3RyKHBhdGgpLnJzdHJpcCgnL1xcJyksCisgICAgICAgIGZsYWdzPXJlLkkKKyAgICApCisKK0RJUkVDVE9SSUVTID0gc2V0KCkKKworZGVmIG1haW4oZmlsZV9zb3VyY2UsIGluc3RhbGxfdGFyZ2V0KToKKyAgICB3aXRoIG9wZW4oZmlsZV9zb3VyY2UsICdyJywgbmV3bGluZT0nJykgYXMgZjoKKyAgICAgICAgZmlsZXMgPSBsaXN0KGNzdi5yZWFkZXIoZikpCisKKyAgICBhc3NlcnQgbGVuKGZpbGVzKSA9PSBsZW4oc2V0KG1ha2VfaWQoZlsxXSkgZm9yIGYgaW4gZmlsZXMpKSwgIkR1cGxpY2F0ZSBmaWxlIElEcyBleGlzdCIKKworICAgIGRpcmVjdG9yaWVzID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgIGNhY2hlX2RpcmVjdG9yaWVzID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgIGdyb3VwcyA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgZm9yIHNvdXJjZSwgdGFyZ2V0LCBncm91cCwgZGlza19pZCwgY29uZGl0aW9uIGluIGZpbGVzOgorICAgICAgICB0YXJnZXQgPSBQdXJlV2luZG93c1BhdGgodGFyZ2V0KQorICAgICAgICBncm91cHNbZ3JvdXBdLmFwcGVuZCgoc291cmNlLCB0YXJnZXQsIGRpc2tfaWQsIGNvbmRpdGlvbikpCisKKyAgICAgICAgaWYgdGFyZ2V0LnN1ZmZpeC5sb3dlcigpIGluIHsiLnB5IiwgIi5weXcifToKKyAgICAgICAgICAgIGNhY2hlX2RpcmVjdG9yaWVzW2dyb3VwXS5hZGQodGFyZ2V0LnBhcmVudCkKKworICAgICAgICBmb3IgZGlybmFtZSBpbiB0YXJnZXQucGFyZW50czoKKyAgICAgICAgICAgIHBhcmVudCA9IG1ha2VfaWQoZGlybmFtZS5wYXJlbnQpCisgICAgICAgICAgICBpZiBwYXJlbnQgYW5kIHBhcmVudCAhPSAnLic6CisgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXNbcGFyZW50XS5hZGQoZGlybmFtZS5uYW1lKQorCisgICAgbGluZXMgPSBbCisgICAgICAgICc8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4nLAorICAgICAgICAnICAgIDxGcmFnbWVudD4nLAorICAgIF0KKyAgICBmb3IgZGlyX3BhcmVudCBpbiBzb3J0ZWQoZGlyZWN0b3JpZXMpOgorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0ie30iPicuZm9ybWF0KGRpcl9wYXJlbnQpKQorICAgICAgICBmb3IgZGlyX25hbWUgaW4gc29ydGVkKGRpcmVjdG9yaWVzW2Rpcl9wYXJlbnRdKToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0ie31fe30iIE5hbWU9Int9IiAvPicuZm9ybWF0KGRpcl9wYXJlbnQsIG1ha2VfaWQoZGlyX25hbWUpLCBkaXJfbmFtZSkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICA8L0RpcmVjdG9yeVJlZj4nKQorICAgIGZvciBkaXJfcGFyZW50IGluIChtYWtlX2lkKGQpIGZvciBncm91cCBpbiBjYWNoZV9kaXJlY3Rvcmllcy52YWx1ZXMoKSBmb3IgZCBpbiBncm91cCk6CisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJ7fSI+Jy5mb3JtYXQoZGlyX3BhcmVudCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0ie31fX19weWNhY2hlX18iIE5hbWU9Il9fcHljYWNoZV9fIiAvPicuZm9ybWF0KGRpcl9wYXJlbnQpKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgPC9EaXJlY3RvcnlSZWY+JykKKyAgICBsaW5lcy5hcHBlbmQoJyAgICA8L0ZyYWdtZW50PicpCisKKyAgICBmb3IgZ3JvdXAgaW4gc29ydGVkKGdyb3Vwcyk6CisgICAgICAgIGxpbmVzLmV4dGVuZChbCisgICAgICAgICAgICAnICAgIDxGcmFnbWVudD4nLAorICAgICAgICAgICAgJyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ7fSI+Jy5mb3JtYXQoZ3JvdXApLAorICAgICAgICBdKQorICAgICAgICBmb3Igc291cmNlLCB0YXJnZXQsIGRpc2tfaWQsIGNvbmRpdGlvbiBpbiBncm91cHNbZ3JvdXBdOgorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ7fSIgRGlyZWN0b3J5PSJ7fSIgR3VpZD0iKiI+Jy5mb3JtYXQobWFrZV9pZCh0YXJnZXQpLCBtYWtlX2lkKHRhcmdldC5wYXJlbnQpKSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbjoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPnt9PC9Db25kaXRpb24+Jy5mb3JtYXQoY29uZGl0aW9uKSkKKworICAgICAgICAgICAgaWYgZGlza19pZDoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgICAgICA8RmlsZSBJZD0ie30iIE5hbWU9Int9IiBTb3VyY2U9Int9IiBEaXNrSWQ9Int9IiAvPicuZm9ybWF0KG1ha2VfaWQodGFyZ2V0KSwgdGFyZ2V0Lm5hbWUsIHNvdXJjZSwgZGlza19pZCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgICAgIDxGaWxlIElkPSJ7fSIgTmFtZT0ie30iIFNvdXJjZT0ie30iIC8+Jy5mb3JtYXQobWFrZV9pZCh0YXJnZXQpLCB0YXJnZXQubmFtZSwgc291cmNlKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICAgICAgPC9Db21wb25lbnQ+JykKKworICAgICAgICBjcmVhdGVfZm9sZGVycyA9IHttYWtlX2lkKHApICsgIl9fX3B5Y2FjaGVfXyIgZm9yIHAgaW4gY2FjaGVfZGlyZWN0b3JpZXNbZ3JvdXBdfQorICAgICAgICByZW1vdmVfZm9sZGVycyA9IHttYWtlX2lkKHAyKSBmb3IgcDEgaW4gY2FjaGVfZGlyZWN0b3JpZXNbZ3JvdXBdIGZvciBwMiBpbiBjaGFpbigocDEsKSwgcDEucGFyZW50cyl9CisgICAgICAgIGNyZWF0ZV9mb2xkZXJzLmRpc2NhcmQoIi4iKQorICAgICAgICByZW1vdmVfZm9sZGVycy5kaXNjYXJkKCIuIikKKyAgICAgICAgaWYgY3JlYXRlX2ZvbGRlcnMgb3IgcmVtb3ZlX2ZvbGRlcnM6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Int9X19weWNhY2hlX19mb2xkZXJzIiBEaXJlY3Rvcnk9IlRBUkdFVERJUiIgR3VpZD0ie30iPicuZm9ybWF0KGdyb3VwLCB1dWlkMSgpKSkKKyAgICAgICAgICAgIGxpbmVzLmV4dGVuZCgnICAgICAgICAgICAgICAgIDxDcmVhdGVGb2xkZXIgRGlyZWN0b3J5PSJ7fSIgLz4nLmZvcm1hdChwKSBmb3IgcCBpbiBjcmVhdGVfZm9sZGVycykKKyAgICAgICAgICAgIGxpbmVzLmV4dGVuZCgnICAgICAgICAgICAgICAgIDxSZW1vdmVGaWxlIElkPSJSZW1vdmVfezB9X2ZpbGVzIiBOYW1lPSIqIiBPbj0idW5pbnN0YWxsIiBEaXJlY3Rvcnk9InswfSIgLz4nLmZvcm1hdChwKSBmb3IgcCBpbiBjcmVhdGVfZm9sZGVycykKKyAgICAgICAgICAgIGxpbmVzLmV4dGVuZCgnICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV97MH1fZm9sZGVyIiBPbj0idW5pbnN0YWxsIiBEaXJlY3Rvcnk9InswfSIgLz4nLmZvcm1hdChwKSBmb3IgcCBpbiBjcmVhdGVfZm9sZGVycyB8IHJlbW92ZV9mb2xkZXJzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgICAgICA8L0NvbXBvbmVudD4nKQorCisgICAgICAgIGxpbmVzLmV4dGVuZChbCisgICAgICAgICAgICAnICAgICAgICA8L0NvbXBvbmVudEdyb3VwPicsCisgICAgICAgICAgICAnICAgIDwvRnJhZ21lbnQ+JywKKyAgICAgICAgXSkKKyAgICBsaW5lcy5hcHBlbmQoJzwvV2l4PicpCisKKyAgICAjIENoZWNrIGlmIHRoZSBmaWxlIG1hdGNoZXMuIElmIHNvLCB3ZSBkb24ndCB3YW50IHRvIHRvdWNoIGl0IHNvCisgICAgIyB0aGF0IHdlIGNhbiBza2lwIHJlYnVpbGRpbmcuCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oaW5zdGFsbF90YXJnZXQsICdyJykgYXMgZjoKKyAgICAgICAgICAgIGlmIGFsbCh4LnJzdHJpcCgnXHJcbicpID09IHkgZm9yIHgsIHkgaW4gemlwX2xvbmdlc3QoZiwgbGluZXMpKToKKyAgICAgICAgICAgICAgICBwcmludCgnRmlsZSBpcyB1cCB0byBkYXRlJykKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgcGFzcworCisgICAgd2l0aCBvcGVuKGluc3RhbGxfdGFyZ2V0LCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGVsaW5lcyhsaW5lICsgJ1xuJyBmb3IgbGluZSBpbiBsaW5lcykKKyAgICBwcmludCgnV3JvdGUge30gbGluZXMgdG8ge30nLmZvcm1hdChsZW4obGluZXMpLCBpbnN0YWxsX3RhcmdldCkpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbihzeXMuYXJndlsxXSwgc3lzLmFyZ3ZbMl0pCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldi53aXhwcm9qIGIvVG9vbHMvbXNpL2Rldi9kZXYud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODJiNjYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2Rldi9kZXYud2l4cHJvagpAQCAtMCwwICsxLDQ5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NUYyM0Y2MDgtRDc0Qi00MjU5LUEwQ0UtOERDNjVDQzdGRTUzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWUgQ29uZGl0aW9uPSInJChPdXRwdXROYW1lKScgPT0gJyciPmRldjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHMgQ29uZGl0aW9uPSIkKEJ1aWxkRm9yUmVsZWFzZSkiPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOworICAgICAgICAgICAgSW5jbHVkZU1pbkdXTGliPTE7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXYud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXZfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpaW5jbHVkZVwqLmgiPgorICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnNyYyk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD5kZXZfaW5jbHVkZTwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iQnVpbGRNaW5HV0xpYiIKKyAgICAgICAgICAgIElucHV0cz0iJChCdWlsZFBhdGgpJChQeURsbE5hbWUpLmRsbCIKKyAgICAgICAgICAgIE91dHB1dHM9IiQoQnVpbGRQYXRoKWxpYiQoUHlEbGxOYW1lKS5hIgorICAgICAgICAgICAgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiCisgICAgICAgICAgICBDb25kaXRpb249IiQoQnVpbGRGb3JSZWxlYXNlKSI+CisgICAgICAgIDwhLS0gQnVpbGQgbGlicHl0aG9uIyMuYSBhcyBwYXJ0IG9mIHRoaXMgcHJvamVjdC4gVGhpcyByZXF1aXJlcyBnZW5kZWYgYW5kIGRsbHRvb2wgb24gdGhlIHBhdGguIC0tPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfRGxsVG9vbE9wdHM+LW0gaTM4NiAtLWFzLWZsYWdzPS0tMzI8L19EbGxUb29sT3B0cz4KKyAgICAgICAgICAgIDxfRGxsVG9vbE9wdHMgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+LW0gaTM4Njp4ODYtNjQ8L19EbGxUb29sT3B0cz4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgICAgIDxFeGVjIENvbW1hbmQ9J2dlbmRlZiAtICIkKEJ1aWxkUGF0aCkkKFB5RGxsTmFtZSkuZGxsIiAmZ3Q7ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpbWluZ3dsaWIuZGVmIicgQ29udGludWVPbkVycm9yPSJmYWxzZSIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0nZGxsdG9vbCAtLWRsbG5hbWUgJChQeURsbE5hbWUpLmRsbCAtLWRlZiAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKW1pbmd3bGliLmRlZiIgLS1vdXRwdXQtbGliICIkKEJ1aWxkUGF0aClsaWIkKFB5RGxsTmFtZSkuYSIgJChfRGxsVG9vbE9wdHMpJyAvPgorICAgIDwvVGFyZ2V0PgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZGV2L2Rldi53eHMgYi9Ub29scy9tc2kvZGV2L2Rldi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA5ZTEzOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2Lnd4cwpAQCAtMCwwICsxLDE5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJkZXZfaW5jbHVkZSIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZGV2X3B5Y29uZmlnIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJkZXZfbGlicyIgLz4KKzw/aWZkZWYgSW5jbHVkZU1pbkdXTGliID8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImRldl9taW5ndyIgLz4KKzw/ZW5kaWYgPz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2Rldi9kZXZfZC53aXhwcm9qIGIvVG9vbHMvbXNpL2Rldi9kZXZfZC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYjA1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZGV2L2Rldl9kLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+e0MxMUI0OTQ1LTc2QkQtNDEzNy1CMkUzLTY0OTQ2MDExN0E3N308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmRldl9kPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJkZXZfZC53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImRldl9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kZXYvZGV2X2Qud3hzIGIvVG9vbHMvbXNpL2Rldi9kZXZfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2N2FhYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kZXYvZGV2X2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2Mud3hzIGIvVG9vbHMvbXNpL2RvYy9kb2Mud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZTMwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvYy53eHMKQEAgLTAsMCArMSwzMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZG9jIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZG9jIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2lmZGVmIERvY0ZpbGVuYW1lID8+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJkb2Nfc2hvcnRjdXQiIERpcmVjdG9yeT0iTWVudURpciIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW09QVElPTkFMRkVBVFVSRVNSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSIkKHZhci5PcHRpb25hbEZlYXR1cmVOYW1lKV9zaG9ydGN1dCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgICAgIDxTaG9ydGN1dCBJZD0icHl0aG9uLmNobSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0PSJbI3B5dGhvbi5jaG1dIgorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSIhKGxvYy5TaG9ydGN1dE5hbWUpIgorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbj0iIShsb2MuU2hvcnRjdXREZXNjcmlwdGlvbikiIC8+CisgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX01lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDw/ZW5kaWYgPz4KKworICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZG9jL2RvY19lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZG9jL2RvY19lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5NTU2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9kb2MvZG9jX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMCwwICsxLDcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+ZG9jPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iRGVzY3JpcHRvciI+RG9jdW1lbnRhdGlvbjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0gTWFudWFscyAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+VmlldyB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGRvY3VtZW50YXRpb24uPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9kb2MvZG9jX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9kb2MvZG9jX2ZpbGVzLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTA5YWZlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2RvYy9kb2NfZmlsZXMud3hzCkBAIC0wLDAgKzEsMTUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImRvYyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob24uY2htIiBEaXJlY3Rvcnk9IkRvYyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dGhvbi5jaG0iIE5hbWU9IiQodmFyLkRvY0ZpbGVuYW1lKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9IkhlbHBcTWFpbiBQeXRob24gRG9jdW1lbnRhdGlvbiIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNweXRob24uY2htXSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2RvYy9kb2Nfbm9fZmlsZXMud3hzIGIvVG9vbHMvbXNpL2RvYy9kb2Nfbm9fZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjdjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZG9jL2RvY19ub19maWxlcy53eHMKQEAgLTAsMCArMSwxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJkb2MiPgorICAgICAgICAgICAgPCEtLQorICAgICAgICAgICAgVGhpcyBmaWxlIGlzIGluY2x1ZGVkIHdoZW4gdGhlIENITSBpcyBub3QgYXZhaWxhYmxlLgorICAgICAgICAgICAgCisgICAgICAgICAgICBUaGlzIHdheSwgc25hcHNob3QgYnVpbGRzIGNhbiBzdWNjZWVkIHdpdGhvdXQgaGF2aW5nIHRvCisgICAgICAgICAgICBidWlsZCB0aGUgZG9jcy4KKyAgICAgICAgICAgIC0tPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iRW1wdHlEb2NGb2xkZXIiIERpcmVjdG9yeT0iRG9jIiBHdWlkPSJ7MjJGRDQyREItRUM2Ni00QjFDLUIxRkMtNDRFMENGN0IyNDYyfSI+CisgICAgICAgICAgICAgICAgPENyZWF0ZUZvbGRlciAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9FbXB0eURvY0ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jcnRsaWNlbnNlLnR4dCBiL1Rvb2xzL21zaS9leGUvY3J0bGljZW5zZS50eHQKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gVG9vbHMvbXNpL2NydGxpY2Vuc2UudHh0CnJlbmFtZSB0byBUb29scy9tc2kvZXhlL2NydGxpY2Vuc2UudHh0CmluZGV4IDkzNmJjNWEuLmY4Njg0MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jcnRsaWNlbnNlLnR4dAorKysgYi9Ub29scy9tc2kvZXhlL2NydGxpY2Vuc2UudHh0CkBAIC01LDExICs1LDggQEAKIAogVGhpcyBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIGFuZCB1c2VzIE1pY3Jvc29mdCBEaXN0cmlidXRhYmxlIENvZGUsCiBjb3B5cmlnaHRlZCBieSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIFRoZSBNaWNyb3NvZnQgRGlzdHJpYnV0YWJsZSBDb2RlCi1pbmNsdWRlcyB0aGUgZm9sbG93aW5nIGZpbGVzOgotCi1tc3ZjcjkwLmRsbAotbXN2Y3A5MC5kbGwKLW1zdmNtOTAuZGxsCitpcyBlbWJlZGRlZCBpbiBlYWNoIC5leGUsIC5kbGwgYW5kIC5weWQgZmlsZSBhcyBhIHJlc3VsdCBvZiBydW5uaW5nCit0aGUgY29kZSB0aHJvdWdoIGEgbGlua2VyLgogCiBJZiB5b3UgZnVydGhlciBkaXN0cmlidXRlIHByb2dyYW1zIHRoYXQgaW5jbHVkZSB0aGUgTWljcm9zb2Z0CiBEaXN0cmlidXRhYmxlIENvZGUsIHlvdSBtdXN0IGNvbXBseSB3aXRoIHRoZSByZXN0cmljdGlvbnMgb24KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNmE2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns2QkQ1MzMwNS1CMDNFLTQ5REMtODVGQi01NTUxQjhDQ0M4NDN9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGU8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8IS0tIFNob3J0Y3V0IHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAtLT4KKyAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U0MzwvU3VwcHJlc3NJQ0VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGUud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVMaWNlbnNlIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8TGljZW5zZUZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxJQ0VOU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNydGxpY2Vuc2UudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKGJ6MkRpcilMSUNFTlNFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9wZW5zc2xEaXIpTElDRU5TRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0Y2xEaXIpbGljZW5zZS50ZXJtczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0a0RpcilsaWNlbnNlLnRlcm1zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRpeERpcilsaWNlbnNlLnRlcm1zIiAvPgorICAgICAgICAgICAgPF9MaWNlbnNlRmlsZXMgSW5jbHVkZT0iQChMaWNlbnNlRmlsZXMpIj4KKyAgICAgICAgICAgICAgICA8Q29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoRnVsbFBhdGgpKSk8L0NvbnRlbnQ+CisgICAgICAgICAgICA8L19MaWNlbnNlRmlsZXM+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChCdWlsZFBhdGgpTElDRU5TRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcndyaXRlPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lcz0iQChfTGljZW5zZUZpbGVzLT4nJShDb250ZW50KScpIiAvPgorICAgIDwvVGFyZ2V0PgorICAgICAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2JmNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob24iIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3R4dCIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX2ljb25zIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImV4ZV9zaG9ydGN1dCIgRGlyZWN0b3J5PSJNZW51RGlyIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9InB5dGhvbi5leGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldD0iWyNweXRob24uZXhlXSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlNob3J0Y3V0RGVzY3JpcHRpb24pIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5Qcm9kdWN0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iU2hvcnRjdXRzIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzU0NWNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntCMUNBNzM5Qy04REIwLTQwM0ItOTAxMC1ENzk1MDc1MDdDRTl9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGVfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkYjZiYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud3hzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZV9kKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWJ1Z0JpbmFyaWVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZV9kKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uX2QpIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbl9kIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3ZmJlNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMCwwICsxLDcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkV4ZWN1dGFibGVzPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5leGVjdXRhYmxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+TGF1bmNoZXMgdGhlICEobG9jLlByb2R1Y3ROYW1lKSBpbnRlcnByZXRlci48L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDdiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKQEAgLTAsMCArMSw3NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfdHh0Ij4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxJQ0VOU0UudHh0IiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IkxJQ0VOU0UudHh0IiBTb3VyY2U9IkxJQ0VOU0UiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTkVXUy50eHQiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iTkVXUy50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpTWlzY1xORVdTIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlJFQURNRS50eHQiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iUkVBRE1FLnR4dCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylSRUFETUUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9weXRob24iPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uLmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob25FeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uLmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbSW5zdGFsbERpcmVjdG9yeV0iIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBOYW1lPSJFeGVjdXRhYmxlUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNweXRob24uZXhlXSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9udy5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ2Y3J1bnRpbWUxNDAuZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InZjcnVudGltZTE0MC5kbGwiIFNvdXJjZT0iIShiaW5kcGF0aC5yZWRpc3QpdmNydW50aW1lMTQwLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKworICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcHl0aG9uX3N5bWJvbHMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uLnBkYiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob24ucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253LnBkYiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcHl0aG9uX2QiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX2QuZXhlIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl9kLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9uX2QucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl9kLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9ud19kLmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253X2QuZXhlIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253X2QucGRiIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbndfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfaWNvbnMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHkuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHljLmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWMuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5Yy5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY0Yzg2OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCkBAIC0wLDAgKzEsMjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns0QTFGNzA0NS04RUUyLTQyNzYtQUJCOC01RTBDNDBFNUYzOEJ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5leGVfcGRiPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9Iioud3hsX3RlbXBsYXRlIiAvPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjUwOTRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVQZGIpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlN5bWJvbHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlUGRiKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uUGRiKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob25fc3ltYm9scyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2dlbmVyYXRlX21kNS5weSBiL1Rvb2xzL21zaS9nZW5lcmF0ZV9tZDUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU0YzE0NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9nZW5lcmF0ZV9tZDUucHkKQEAgLTAsMCArMSwyNyBAQAoraW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitkZWYgbWFpbigpOgorICAgIGZpbGVuYW1lcywgaGFzaGVzLCBzaXplcyA9IFtdLCBbXSwgW10KKworICAgIGZvciBmaWxlIGluIHN5cy5hcmd2WzE6XToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZpbGUpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICB3aXRoIG9wZW4oZmlsZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICAgICAgbWQ1ID0gaGFzaGxpYi5tZDUoKQorICAgICAgICAgICAgbWQ1LnVwZGF0ZShkYXRhKQorICAgICAgICAgICAgZmlsZW5hbWVzLmFwcGVuZChvcy5wYXRoLnNwbGl0KGZpbGUpWzFdKQorICAgICAgICAgICAgaGFzaGVzLmFwcGVuZChtZDUuaGV4ZGlnZXN0KCkpCisgICAgICAgICAgICBzaXplcy5hcHBlbmQoc3RyKGxlbihkYXRhKSkpCisKKyAgICBwcmludCgnezo0MHN9ICB7OjwzMnN9ICB7Ojw5c30nLmZvcm1hdCgnRmlsZScsICdNRDUnLCAnU2l6ZScpKQorICAgIGZvciBmLCBoLCBzIGluIHppcChmaWxlbmFtZXMsIGhhc2hlcywgc2l6ZXMpOgorICAgICAgICBwcmludCgnezo0MHN9ICB7Oj4zMnN9ICB7Oj45c30nLmZvcm1hdChmLCBoLCBzKSkKKworCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQoaW50KG1haW4oKSBvciAwKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9nZXRfd2l4LnB5IGIvVG9vbHMvbXNpL2dldF93aXgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIxNDE1NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9nZXRfd2l4LnB5CkBAIC0wLDAgKzEsNDkgQEAKKycnJworRG93bmxvYWRzIGFuZCBleHRyYWN0cyBXaVggdG8gYSBsb2NhbCBkaXJlY3RvcnkKKycnJworCitfX2F1dGhvcl9fID0gJ1N0ZXZlIERvd2VyIDxzdGV2ZS5kb3dlckBtaWNyb3NvZnQuY29tPicKKworaW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuCitmcm9tIHppcGZpbGUgaW1wb3J0IFppcEZpbGUKKworRVhURVJOQUxTX0RJUiA9IE5vbmUKK2ZvciBwIGluIChQYXRoLmN3ZCgpIC8gX19maWxlX18pLnBhcmVudHM6CisgICAgaWYgYW55KHAuZ2xvYigiUENCdWlsZC8qLnZjeHByb2oiKSk6CisgICAgICAgIEVYVEVSTkFMU19ESVIgPSBwIC8gImV4dGVybmFscyIKKyAgICAgICAgYnJlYWsKKworaWYgbm90IEVYVEVSTkFMU19ESVI6CisgICAgcHJpbnQoIkNhbm5vdCBmaW5kIHByb2plY3Qgcm9vdCIpCisgICAgc3lzLmV4aXQoMSkKKworV0lYX0JJTkFSSUVTX1pJUCA9ICdodHRwOi8vd2l4dG9vbHNldC5vcmcvZG93bmxvYWRzL3YzLjEwLjAuMTgyMy93aXgzMTAtYmluYXJpZXMuemlwJworVEFSR0VUX0JJTl9aSVAgPSBFWFRFUk5BTFNfRElSIC8gIndpeC56aXAiCitUQVJHRVRfQklOX0RJUiA9IEVYVEVSTkFMU19ESVIgLyAid2l4IgorCitQT1dFUlNIRUxMX0NPTU1BTkQgPSAiW0lPLkZpbGVdOjpXcml0ZUFsbEJ5dGVzKCd7fScsIChJbnZva2UtV2ViUmVxdWVzdCB7fSAtVXNlQmFzaWNQYXJzaW5nKS5Db250ZW50KSIKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpZiBUQVJHRVRfQklOX0RJUi5leGlzdHMoKSBhbmQgYW55KFRBUkdFVF9CSU5fRElSLmdsb2IoIioiKSk6CisgICAgICAgIHByaW50KCdXaVggaXMgYWxyZWFkeSBpbnN0YWxsZWQnKQorICAgICAgICBzeXMuZXhpdCgwKQorCisgICAgdHJ5OgorICAgICAgICBUQVJHRVRfQklOX0RJUi5ta2RpcigpCisgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgcGFzcworCisgICAgcHJpbnQoJ0Rvd25sb2FkaW5nIFdpWCB0bycsIFRBUkdFVF9CSU5fWklQKQorICAgIHAgPSBQb3BlbihbInBvd2Vyc2hlbGwuZXhlIiwgIi1Db21tYW5kIiwgUE9XRVJTSEVMTF9DT01NQU5ELmZvcm1hdChUQVJHRVRfQklOX1pJUCwgV0lYX0JJTkFSSUVTX1pJUCldKQorICAgIHAud2FpdCgpCisgICAgcHJpbnQoJ0V4dHJhY3RpbmcgV2lYIHRvJywgVEFSR0VUX0JJTl9ESVIpCisgICAgd2l0aCBaaXBGaWxlKHN0cihUQVJHRVRfQklOX1pJUCkpIGFzIHo6CisgICAgICAgIHouZXh0cmFjdGFsbChzdHIoVEFSR0VUX0JJTl9ESVIpKQorICAgIFRBUkdFVF9CSU5fWklQLnVubGluaygpCisKKyAgICBwcmludCgnRXh0cmFjdGVkIFdpWCcpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvaiBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZjI2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagpAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57OTIxQ0YwRTYtQUVCQy00Mzc2LUJBMUQtQ0Q0NkVCRkU2REE1fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+bGF1bmNoZXI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxhdW5jaGVyLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGF1bmNoZXJfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsYXVuY2hlcl9yZWcud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIwY2ZmOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKQEAgLTAsMCArMSwzMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHkgSWQ9IlN1cHByZXNzX1RBUkdFVERJUl9DaGVjayIgVmFsdWU9IjEiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IkFSUFBST0RVQ1RJQ09OIiAvPgorCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfZXhlIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgPEZlYXR1cmUgSWQ9IkFzc29jaWF0ZUZpbGVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsYXVuY2hlcl9leGUiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxhdW5jaGVyX3JlZyIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgICAgICAKKyAgICAgICAgPERpcmVjdG9yeSBJZD0iVEFSR0VURElSIiBOYW1lPSJTb3VyY2VEaXIiPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiAvPgorICAgICAgICA8L0RpcmVjdG9yeT4KKyAgICAgICAgCisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIiBQcm9wZXJ0eT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBWYWx1ZT0iW1dpbmRvd3NGb2xkZXJdIiAvPgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlDVSIgUHJvcGVydHk9IkxhdW5jaGVySW5zdGFsbERpcmVjdG9yeSIgVmFsdWU9IltMb2NhbEFwcERhdGFGb2xkZXJdUHJvZ3JhbXNcUHl0aG9uXExhdW5jaGVyIiAvPgorICAgICAgICAKKyAgICAgICAgPEluc3RhbGxFeGVjdXRlU2VxdWVuY2U+CisgICAgICAgICAgICA8Q3VzdG9tIEJlZm9yZT0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5Q1UiPk5PVCBJbnN0YWxsZWQgQU5EIE5PVCBBTExVU0VSUz0xPC9DdXN0b20+CisgICAgICAgICAgICA8Q3VzdG9tIEJlZm9yZT0iQ29zdEZpbmFsaXplIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIj5OT1QgSW5zdGFsbGVkIEFORCBBTExVU0VSUz0xPC9DdXN0b20+CisgICAgICAgIDwvSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NjFmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCkBAIC0wLDAgKzEsMTAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkxhdW5jaGVyPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5sYXVuY2hlcjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIEZpbGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25Ob0NvbkZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIEZpbGUgKG5vIGNvbnNvbGUpPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uQ29tcGlsZWRGaWxlRGVzY3JpcHRpb24iPkNvbXBpbGVkIFB5dGhvbiBGaWxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uIj5QeXRob24gWmlwIEFwcGxpY2F0aW9uIEZpbGUgKG5vIGNvbnNvbGUpPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9maWxlcy53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZmlsZXMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNDgyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZmlsZXMud3hzCkBAIC0wLDAgKzEsMjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGF1bmNoZXJfZXhlIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5LmV4ZSIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IntCNTEwNzQwMi02OTU4LTQ2MUItOEIwQS00MDM3RDMzMjcxNjB9Ij4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0icHkuZXhlIiBOYW1lPSJweSQodmFyLlRlc3RQcmVmaXgpLmV4ZSIgU291cmNlPSJweS5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXFB5dGhvblxQeUxhdW5jaGVyIiBWYWx1ZT0iWyNweS5leGVdIiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dy5leGUiIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7OEU1MkI4Q0QtNDhCQi00RDc0LTg0Q0QtNjIzOEJDRDExRjIwfSI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9InB5dy5leGUiIE5hbWU9InB5dyQodmFyLlRlc3RQcmVmaXgpLmV4ZSIgU291cmNlPSJweXcuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKworICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGF1bmNoZXJfcGF0aF9jdSIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins5NUFFQjkzMC0zNjdDLTQ3NUMtQTE3RS1BODlCRkNENEM2NzB9Ij4KKyAgICAgICAgICAgICAgICA8Q29uZGl0aW9uPk5PVCBBTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXCQodmFyLlRlc3RQcmVmaXgpUHl0aG9uXFB5TGF1bmNoZXIiIE5hbWU9Ikluc3RhbGxEaXIiIFZhbHVlPSJbTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5XSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9DVSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0xhdW5jaGVySW5zdGFsbERpcmVjdG9yeV0iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxhdW5jaGVyX3BhdGhfbG0iIERpcmVjdG9yeT0iTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSJ7NEE0MUMzNjUtNEUyNy00RDM4LUE2RDEtNEEwMUI0QTY1MDBDfSI+CisgICAgICAgICAgICAgICAgPENvbmRpdGlvbj5BTExVU0VSUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBSb290PSJIS01VIiBLZXk9IlNvZnR3YXJlXCQodmFyLlRlc3RQcmVmaXgpUHl0aG9uXFB5TGF1bmNoZXIiIE5hbWU9Ikluc3RhbGxEaXIiIFZhbHVlPSJbTGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5XSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDBmNDQyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKQEAgLTAsMCArMSw0NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsYXVuY2hlcl9yZWciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iZmlsZV9hc3NvY2lhdGlvbiIgRGlyZWN0b3J5PSJMYXVuY2hlckluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9Ins1QUY4NEQ5QS1EODIwLTQ1NkItQjIzMC02RTAxMDVBNTAyNzZ9Ij4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXlQYXRoPSJ5ZXMiIFJvb3Q9IkhLTVUiIEtleT0iU29mdHdhcmVcJCh2YXIuVGVzdFByZWZpeClQeXRob25cUHlMYXVuY2hlciIgTmFtZT0iQXNzb2NpYXRlRmlsZXMiIFZhbHVlPSIxIiBUeXBlPSJpbnRlZ2VyIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25GaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24pIiBDb250ZW50VHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbil3IiBDb250ZW50VHlwZT0idGV4dC9wbGFpbiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHl3LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgorICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLk5vQ29uRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Db21waWxlZEZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Db21waWxlZEZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbiljIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweS5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9IiQodmFyLkZpbGVFeHRlbnNpb24pbyIgLz4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkNvbXBpbGVkRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0iezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iIFR5cGU9InN0cmluZyIgLz4KKworICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IiQodmFyLlRlc3RQcmVmaXgpUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbil6IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uQXJjaGl2ZUZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9Ins2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iJCh2YXIuVGVzdFByZWZpeClQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0iJCh2YXIuRmlsZUV4dGVuc2lvbil6dyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgorICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5dy5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSIkKHZhci5UZXN0UHJlZml4KVB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIgVHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRlNTg3OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezExMzY3RTc2LTMzMzctNDYwMi04RjFFLTc3REI0RjM3MEQ3RX08L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPmxpYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX2ZpbGVzLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8RXhjbHVkZUZvbGRlcnMgSW5jbHVkZT0iTGliXHRlc3Q7TGliXHRlc3RzO0xpYlx0a2ludGVyO0xpYlxpZGxlbGliO0xpYlx0dXJ0bGVkZW1vIiAvPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGU9IiQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5YzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClMaWJcKipcKi5weW87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpTGliXHNpdGUtcGFja2FnZXNcUkVBRE1FOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAoRXhjbHVkZUZvbGRlcnMtPickKFB5U291cmNlUGF0aCklKElkZW50aXR5KVwqJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQChFeGNsdWRlRm9sZGVycy0+JyQoUHlTb3VyY2VQYXRoKSUoSWRlbnRpdHkpXCoqXConKSI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKFB5U291cmNlUGF0aClMaWI8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKUxpYlw8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKUxpYjwvVGFyZ2V0QmFzZT4KKyAgICAgICAgICAgIDxUYXJnZXRfPkxpYlw8L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+bGliX3B5PC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYi53eHMgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwNGJjYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwpAQCAtMCwwICsxLDE3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfcHkiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9maWxlcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliX2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODdhODJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZC53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns2QzQ0M0NEMy04MjU4LTQzMzUtQkEwMy00OURBOUMzNENFNER9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5saWJfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX2Qud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJsaWJfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZC53eHMgYi9Ub29scy9tc2kvbGliL2xpYl9kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YThhNTMwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZC53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlX2QpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IkRlYnVnQmluYXJpZXMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlX2QpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb25fZCkiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9uc19kIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9lbi1VUy53eGwgYi9Ub29scy9tc2kvbGliL2xpYl9lbi1VUy53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA1YmNjNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2VuLVVTLnd4bApAQCAtMCwwICsxLDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlN0YW5kYXJkIExpYnJhcnk8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmxpYjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE3OWE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwpAQCAtMCwwICsxLDc5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPD9kZWZpbmUgZXh0cz1weWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZDtfYnoyO19lbGVtZW50dHJlZTtfc29ja2V0O19zc2w7X21zaTtfY3R5cGVzO19oYXNobGliO19tdWx0aXByb2Nlc3Npbmc7X2x6bWE7X2RlY2ltYWw7X292ZXJsYXBwZWQ7X3NxbGl0ZTMgPz4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2V4dGVuc2lvbnMiPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2VuZGZvcmVhY2ggPz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ic3FsaXRlMy5kbGwiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0ic3FsaXRlMy5kbGwiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zX3N5bWJvbHMiPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+U1lNQk9MUz0xPC9Db25kaXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KS5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InNxbGl0ZTMucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTMucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2V4dGVuc2lvbnNfZCI+CisgICAgICAgICAgICA8P2ZvcmVhY2ggZXh0IGluICQodmFyLmV4dHMpPz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dClfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InNxbGl0ZTNfZC5kbGwiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0ic3FsaXRlM19kLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJzcWxpdGUzX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InNxbGl0ZTNfZC5wZGIiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfZmlsZXMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iUHl0aG9uUGF0aFJlZ2lzdHJ5IiBEaXJlY3Rvcnk9IkxpYiIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iUHl0aG9uUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iW0xpYl07W0RMTHNdIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzX1JFQURNRSIgRGlyZWN0b3J5PSJMaWJfc2l0ZV9wYWNrYWdlcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzX1JFQURNRSIgTmFtZT0iUkVBRE1FLnR4dCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylMaWJcc2l0ZS1wYWNrYWdlc1xSRUFETUUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlIiBEaXJlY3Rvcnk9IkxpYl9saWIydG8zIiBHdWlkPSIkKHZhci5SZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGaWxlIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZmlsZXMiIE5hbWU9IioucGlja2xlIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9mb2xkZXIiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iTGliIj4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzIiBOYW1lPSJzaXRlLXBhY2thZ2VzIiAvPgorICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9wZGIud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliX3BkYi53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMWI1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbGliL2xpYl9wZGIud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57NUUwQkNFOTMtRDFBQy00NTkxLUJCQ0ItM0EyQkU1QTRCM0QxfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+bGliX3BkYjwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0ibGliX3BkYi53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImxpYl9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9wZGIud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODM5ZThhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfcGRiLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVQZGIpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlN5bWJvbHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlUGRiKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uUGRiKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9leHRlbnNpb25zX3N5bWJvbHMiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qIGIvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY2ZmU4NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCkBAIC0wLDAgKzEsMzkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPnsxMDQ4Nzk0NS0xNUQxLTQwOTItQTIxNC0zMzgzOTVDNDExNkJ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPE91dHB1dE5hbWU+cHl0aG9uPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0U3VmZml4PjwvT3V0cHV0U3VmZml4PgorICAgICAgICA8U3VwcG9ydFNpZ25pbmc+ZmFsc2U8L1N1cHBvcnRTaWduaW5nPgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0ibXNpLnByb3BzIiAvPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxTaWduT3V0cHV0PmZhbHNlPC9TaWduT3V0cHV0PgorICAgICAgICA8VGFyZ2V0TmFtZT5weXRob24tJChQeXRob25WZXJzaW9uKS1lbWJlZC0kKEFyY2hOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICAgICAgPFRhcmdldEV4dD4uemlwPC9UYXJnZXRFeHQ+CisgICAgICAgIDxUYXJnZXRQYXRoPiQoT3V0cHV0UGF0aClcZW4tdXNcJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvVGFyZ2V0UGF0aD4KKyAgICAgICAgPEFyZ3VtZW50cz4iJChQeXRob25FeGUpIiAiJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXG1ha2VfemlwLnB5IjwvQXJndW1lbnRzPgorICAgICAgICA8QXJndW1lbnRzPiQoQXJndW1lbnRzKSAtZSAtbyAiJChUYXJnZXRQYXRoKSIgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcemlwXyQoQXJjaE5hbWUpIiAtYSAkKEFyY2hOYW1lKTwvQXJndW1lbnRzPgorICAgICAgICA8RW52aXJvbm1lbnQ+c2V0IERPQ19GSUxFTkFNRT1weXRob24kKFB5dGhvblZlcnNpb24pLmNobQorc2V0IFZDUkVESVNUX1BBVEg9JChWUzE0MENPTU5UT09MUylcLi5cLi5cVkNccmVkaXN0XCQoUGxhdGZvcm0pXE1pY3Jvc29mdC5WQzE0MC5DUlQ8L0Vudmlyb25tZW50PgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxUYXJnZXQgTmFtZT0iX0J1aWxkIj4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0ic2V0bG9jYWwKKyQoRW52aXJvbm1lbnQpCiskKEFyZ3VtZW50cykiIC8+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8VGFyZ2V0IE5hbWU9IkFmdGVyQnVpbGQiIC8+CisgICAgPFRhcmdldCBOYW1lPSJCdWlsZCIgRGVwZW5kc09uVGFyZ2V0cz0iX0J1aWxkO0FmdGVyQnVpbGQiIC8+CisKKyAgICA8VGFyZ2V0IE5hbWU9IlNob3dIYXNoZXMiPgorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPFVzZXJGaWxlcyBJbmNsdWRlPSJAKEZpbGUpIiBDb25kaXRpb249IiclKEZpbGUuQ29weVRvKScgPT0gJyQoRVhFVGFyZ2V0KSciIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorCisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBnZW5lcmF0ZV9tZDUucHkgQChVc2VyRmlsZXMtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgLz4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjU2MDA4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC0wLDAgKzEsMTgxIEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBweV9jb21waWxlCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQorCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKK2Zyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZSwgWklQX0RFRkxBVEVECitpbXBvcnQgc3VicHJvY2VzcworCitUS1RDTF9SRSA9IHJlLmNvbXBpbGUocideKF8/dGt8dGNsKS4rXC4ocHlkfGRsbCknLCByZS5JR05PUkVDQVNFKQorREVCVUdfUkUgPSByZS5jb21waWxlKHInX2RcLihweWR8ZGxsfGV4ZSkkJywgcmUuSUdOT1JFQ0FTRSkKK1BZVEhPTl9ETExfUkUgPSByZS5jb21waWxlKHIncHl0aG9uXGRcZD9cLmRsbCQnLCByZS5JR05PUkVDQVNFKQorCitkZWYgaXNfbm90X2RlYnVnKHApOgorICAgIGlmIERFQlVHX1JFLnNlYXJjaChwLm5hbWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIFRLVENMX1JFLnNlYXJjaChwLm5hbWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBwLm5hbWUubG93ZXIoKSBub3QgaW4geworICAgICAgICAnX2N0eXBlc190ZXN0LnB5ZCcsCisgICAgICAgICdfdGVzdGJ1ZmZlci5weWQnLAorICAgICAgICAnX3Rlc3RjYXBpLnB5ZCcsCisgICAgICAgICdfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCcsCisgICAgICAgICdfdGVzdG11bHRpcGhhc2UucHlkJywKKyAgICAgICAgJ3h4bGltaXRlZC5weWQnLAorICAgIH0KKworZGVmIGlzX25vdF9kZWJ1Z19vcl9weXRob24ocCk6CisgICAgcmV0dXJuIGlzX25vdF9kZWJ1ZyhwKSBhbmQgbm90IFBZVEhPTl9ETExfUkUuc2VhcmNoKHAubmFtZSkKKworZGVmIGluY2x1ZGVfaW5fbGliKHApOgorICAgIG5hbWUgPSBwLm5hbWUubG93ZXIoKQorICAgIGlmIHAuaXNfZGlyKCk6CisgICAgICAgIGlmIG5hbWUgaW4geydfX3B5Y2FjaGVfXycsICdlbnN1cmVwaXAnLCAnaWRsZWxpYicsICdweWRvY19kYXRhJywgJ3RraW50ZXInLCAndHVydGxlZGVtbyd9OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgncGxhdC0nKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBuYW1lID09ICd0ZXN0JyBhbmQgcC5wYXJ0c1stMl0ubG93ZXIoKSA9PSAnbGliJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgc3VmZml4ID0gcC5zdWZmaXgubG93ZXIoKQorICAgIHJldHVybiBzdWZmaXggbm90IGluIHsnLnB5YycsICcucHlvJ30KKworZGVmIGluY2x1ZGVfaW5fdG9vbHMocCk6CisgICAgaWYgcC5pc19kaXIoKSBhbmQgcC5uYW1lLmxvd2VyKCkgaW4geydzY3JpcHRzJywgJ2kxOG4nLCAncHluY2hlJywgJ2RlbW8nLCAncGFyc2VyJ306CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICByZXR1cm4gcC5zdWZmaXgubG93ZXIoKSBpbiB7Jy5weScsICcucHl3JywgJy50eHQnfQorCitGVUxMX0xBWU9VVCA9IFsKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9uKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdETExzLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ2luY2x1ZGUvJywgJ2luY2x1ZGUnLCAnKi5oJywgTm9uZSksCisgICAgKCdpbmNsdWRlLycsICdQQycsICdweWNvbmZpZy5oJywgTm9uZSksCisgICAgKCdMaWIvJywgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorICAgICgnVG9vbHMvJywgJ1Rvb2xzJywgJyoqLyonLCBpbmNsdWRlX2luX3Rvb2xzKSwKK10KKworRU1CRURfTEFZT1VUID0gWworICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgncHl0aG9uMzUuemlwJywgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorXQorCitpZiBvcy5nZXRlbnYoJ0RPQ19GSUxFTkFNRScpOgorICAgIEZVTExfTEFZT1VULmFwcGVuZCgoJ0RvYy8nLCAnRG9jL2J1aWxkL2h0bWxoZWxwJywgb3MuZ2V0ZW52KCdET0NfRklMRU5BTUUnKSwgTm9uZSkpCitpZiBvcy5nZXRlbnYoJ1ZDUkVESVNUX1BBVEgnKToKKyAgICBGVUxMX0xBWU9VVC5hcHBlbmQoKCcvJywgb3MuZ2V0ZW52KCdWQ1JFRElTVF9QQVRIJyksICd2Y3J1bnRpbWUqLmRsbCcsIE5vbmUpKQorICAgIEVNQkVEX0xBWU9VVC5hcHBlbmQoKCcvJywgb3MuZ2V0ZW52KCdWQ1JFRElTVF9QQVRIJyksICd2Y3J1bnRpbWUqLmRsbCcsIE5vbmUpKQorCitkZWYgY29weV90b19sYXlvdXQodGFyZ2V0LCByZWxfc291cmNlcyk6CisgICAgY291bnQgPSAwCisKKyAgICBpZiB0YXJnZXQuc3VmZml4Lmxvd2VyKCkgPT0gJy56aXAnOgorICAgICAgICBpZiB0YXJnZXQuZXhpc3RzKCk6CisgICAgICAgICAgICB0YXJnZXQudW5saW5rKCkKKworICAgICAgICB3aXRoIFppcEZpbGUoc3RyKHRhcmdldCksICd3JywgWklQX0RFRkxBVEVEKSBhcyBmOgorICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICAgICAgZm9yIHMsIHJlbCBpbiByZWxfc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmVsLnN1ZmZpeC5sb3dlcigpID09ICcucHknOgorICAgICAgICAgICAgICAgICAgICAgICAgcHljID0gUGF0aCh0bXBkaXIpIC8gcmVsLndpdGhfc3VmZml4KCcucHljJykubmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzdHIocyksIHN0cihweWMpLCBzdHIocmVsKSwgZG9yYWlzZT1UcnVlLCBvcHRpbWl6ZT0yKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHB5X2NvbXBpbGUuUHlDb21waWxlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzdHIocyksIHN0cihyZWwpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHN0cihweWMpLCBzdHIocmVsLndpdGhfc3VmZml4KCcucHljJykpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzdHIocyksIHN0cihyZWwpKQorICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxCisKKyAgICBlbHNlOgorICAgICAgICBmb3IgcywgcmVsIGluIHJlbF9zb3VyY2VzOgorICAgICAgICAgICAgZGVzdCA9IHRhcmdldCAvIHJlbAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlc3QucGFyZW50Lm1rZGlyKHBhcmVudHM9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYgZGVzdC5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgZGVzdC5jaG1vZChzdGF0LlNfSVdSSVRFKQorICAgICAgICAgICAgc2h1dGlsLmNvcHkoc3RyKHMpLCBzdHIoZGVzdCkpCisgICAgICAgICAgICBpZiBkZXN0LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICBkZXN0LmNobW9kKHN0YXQuU19JV1JJVEUpCisgICAgICAgICAgICBjb3VudCArPSAxCisKKyAgICByZXR1cm4gY291bnQKKworZGVmIHJnbG9iKHJvb3QsIHBhdHRlcm4sIGNvbmRpdGlvbik6CisgICAgZGlycyA9IFtyb290XQorICAgIHJlY3Vyc2UgPSBwYXR0ZXJuWzozXSBpbiB7JyoqLycsICcqKlxcJ30KKyAgICB3aGlsZSBkaXJzOgorICAgICAgICBkID0gZGlycy5wb3AoMCkKKyAgICAgICAgZm9yIGYgaW4gZC5nbG9iKHBhdHRlcm5bMzpdIGlmIHJlY3Vyc2UgZWxzZSBwYXR0ZXJuKToKKyAgICAgICAgICAgIGlmIHJlY3Vyc2UgYW5kIGYuaXNfZGlyKCkgYW5kIChub3QgY29uZGl0aW9uIG9yIGNvbmRpdGlvbihmKSk6CisgICAgICAgICAgICAgICAgZGlycy5hcHBlbmQoZikKKyAgICAgICAgICAgIGVsaWYgZi5pc19maWxlKCkgYW5kIChub3QgY29uZGl0aW9uIG9yIGNvbmRpdGlvbihmKSk6CisgICAgICAgICAgICAgICAgeWllbGQgZiwgZi5yZWxhdGl2ZV90byhyb290KQorCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXNvdXJjZScsIG1ldGF2YXI9J2RpcicsIGhlbHA9J1RoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcmVwb3NpdG9yeSByb290JywgdHlwZT1QYXRoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0JywgbWV0YXZhcj0nZmlsZScsIGhlbHA9J1RoZSBuYW1lIG9mIHRoZSBvdXRwdXQgc2VsZi1leHRyYWN0aW5nIGFyY2hpdmUnLCB0eXBlPVBhdGgsIHJlcXVpcmVkPVRydWUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10ZW1wJywgbWV0YXZhcj0nZGlyJywgaGVscD0nQSBkaXJlY3RvcnkgdG8gdGVtcG9yYXJpbHkgZXh0cmFjdCBmaWxlcyBpbnRvJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWUnLCAnLS1lbWJlZCcsIGhlbHA9J0NyZWF0ZSBhbiBlbWJlZGRpbmcgbGF5b3V0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWFyY2gnLCBoZWxwPSdTcGVjaWZ5IHRoZSBhcmNoaXRlY3R1cmUgdG8gdXNlICh3aW4zMi9hbWQ2NCknLCB0eXBlPXN0ciwgZGVmYXVsdD0id2luMzIiKQorICAgIG5zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgc291cmNlID0gbnMuc291cmNlIG9yIChQYXRoKF9fZmlsZV9fKS5wYXJlbnQucGFyZW50LnBhcmVudCkKKyAgICBvdXQgPSBucy5vdXQKKyAgICBhcmNoID0gbnMuYXJjaAorICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgUGF0aCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShvdXQsIFBhdGgpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYXJjaCwgc3RyKQorCisgICAgaWYgbnMudGVtcDoKKyAgICAgICAgdGVtcCA9IG5zLnRlbXAKKyAgICAgICAgZGVsZXRlX3RlbXAgPSBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHRlbXAgPSBQYXRoKHRlbXBmaWxlLm1rZHRlbXAoKSkKKyAgICAgICAgZGVsZXRlX3RlbXAgPSBUcnVlCisKKyAgICB0cnk6CisgICAgICAgIG91dC5wYXJlbnQubWtkaXIocGFyZW50cz1UcnVlKQorICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICB0cnk6CisgICAgICAgIHRlbXAubWtkaXIocGFyZW50cz1UcnVlKQorICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgIHBhc3MKKworICAgIGxheW91dCA9IEVNQkVEX0xBWU9VVCBpZiBucy5lbWJlZCBlbHNlIEZVTExfTEFZT1VUCisKKyAgICB0cnk6CisgICAgICAgIGZvciB0LCBzLCBwLCBjIGluIGxheW91dDoKKyAgICAgICAgICAgIHMgPSBzb3VyY2UgLyBzLnJlcGxhY2UoIiRhcmNoIiwgYXJjaCkKKyAgICAgICAgICAgIGNvcGllZCA9IGNvcHlfdG9fbGF5b3V0KHRlbXAgLyB0LnJzdHJpcCgnLycpLCByZ2xvYihzLCBwLCBjKSkKKyAgICAgICAgICAgIHByaW50KCdDb3BpZWQge30gZmlsZXMnLmZvcm1hdChjb3BpZWQpKQorCisgICAgICAgIHdpdGggb3BlbihzdHIodGVtcCAvICdweXZlbnYuY2ZnJyksICd3JykgYXMgZjoKKyAgICAgICAgICAgIHByaW50KCdhcHBsb2NhbCA9IHRydWUnLCBmaWxlPWYpCisKKyAgICAgICAgdG90YWwgPSBjb3B5X3RvX2xheW91dChvdXQsIHJnbG9iKHRlbXAsICcqJywgTm9uZSkpCisgICAgICAgIHByaW50KCdXcm90ZSB7fSBmaWxlcyB0byB7fScuZm9ybWF0KHRvdGFsLCBvdXQpKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGRlbGV0ZV90ZW1wOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0ZW1wLCBUcnVlKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgc3lzLmV4aXQoaW50KG1haW4oKSBvciAwKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHJvcHMgYi9Ub29scy9tc2kvbXNpLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNTJjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvbXNpLnByb3BzCkBAIC0wLDAgKzEsMTY4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiIFRyZWF0QXNMb2NhbFByb3BlcnR5PSJSZWxlYXNlVXJpIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFRhcmdldE5hbWU+JChPdXRwdXROYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICAgICAgPERlZmluZVNvbHV0aW9uUHJvcGVydGllcz5mYWxzZTwvRGVmaW5lU29sdXRpb25Qcm9wZXJ0aWVzPgorICAgICAgICA8VHJlYXRXYXJuaW5nc0FzRXJyb3JzPmZhbHNlPC9UcmVhdFdhcm5pbmdzQXNFcnJvcnM+CisgICAgICAgIDxTdXBwcmVzc0ljZXM+JChTdXBwcmVzc0ljZXMpO0lDRTAzO0lDRTU3O0lDRTYxPC9TdXBwcmVzc0ljZXM+CisgICAgICAgIDxDb21waWxlclN1cHByZXNzU3BlY2lmaWNXYXJuaW5ncz4xMDI2PC9Db21waWxlclN1cHByZXNzU3BlY2lmaWNXYXJuaW5ncz4KKyAgICAgICAgPEJ1aWxkRm9yUmVsZWFzZSBDb25kaXRpb249IickKEJ1aWxkRm9yUmVsZWFzZSknID09ICcnIj5mYWxzZTwvQnVpbGRGb3JSZWxlYXNlPgorICAgICAgICA8U2lnbk91dHB1dCBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIj50cnVlPC9TaWduT3V0cHV0PgorICAgICAgICA8Q29uZmlndXJhdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+eDg2PC9QbGF0Zm9ybT4KKyAgICAgICAgPEluc3RhbGxTY29wZSBDb25kaXRpb249IickKEluc3RhbGxTY29wZSknICE9ICdwZXJNYWNoaW5lJyI+cGVyVXNlcjwvSW5zdGFsbFNjb3BlPgorICAgICAgICA8IS0tCisgICAgICAgIFRoaXMgVVJJIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHZhcmlvdXMgR1VJRHMgdXNlZCBieSB0aGUgaW5zdGFsbGVyLgorICAgICAgICBJbnN0YWxsZXJzIGJ1aWx0IHdpdGggdGhlIHNhbWUgVVJJIHdpbGwgdXBncmFkZSBlYWNoIG90aGVyIG9yIGJsb2NrCisgICAgICAgIHdoZW4gYXR0ZW1wdGluZyB0byBkb3duZ3JhZGUuCisgICAgICAgIAorICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGlzIHRoZSBsb2NhbCBjb21wdXRlciBuYW1lLCB3aGljaCB3aWxsIHByb2R1Y2UKKyAgICAgICAgaW5zdGFsbGVycyB0aGF0IGRvIG5vdCBpbnRlcmZlcmUgd2l0aCBvdGhlciBpbnN0YWxsZXJzLiBQcm9kdWN0cworICAgICAgICB0aGF0IGludGVuZCB0byBidW5kbGUgUHl0aG9uIHNob3VsZCByZWJ1aWxkIHRoZXNlIG1vZHVsZXMgd2l0aCB0aGVpcgorICAgICAgICBvd24gVVJJIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGhlIG9mZmljaWFsIHJlbGVhc2VzLgorICAgICAgICAKKyAgICAgICAgVGhlIG9mZmljaWFsIHJlbGVhc2VzIGFyZSBidWlsdCB3aXRoIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8uCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgRG93bmxvYWRVcmwgcHJvcGVydHkgdXNlZCBpbiB0aGUgYnVuZGxlCisgICAgICAgIHByb2plY3RzLgorICAgICAgICAtLT4KKyAgICAgICAgPFJlbGVhc2VVcmkgQ29uZGl0aW9uPSInJChSZWxlYXNlVXJpKScgPT0gJyciPiQoQ29tcHV0ZXJOYW1lKTwvUmVsZWFzZVVyaT4KKyAgICAgICAgPFJlbGVhc2VVcmkgQ29uZGl0aW9uPSIhJChSZWxlYXNlVXJpLkVuZHNXaXRoKGAvYCkpIj4kKFJlbGVhc2VVcmkpLzwvUmVsZWFzZVVyaT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9IndpeC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRcdGNsdGsucHJvcHMiIC8+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpY29tbW9uLnd4cyIgLz4KKyAgICAgICAgPFd4bFRlbXBsYXRlIEluY2x1ZGU9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICAgICAgPFdpeEV4dGVuc2lvbiBJbmNsdWRlPSJXaXhVdGlsRXh0ZW5zaW9uIj4KKyAgICAgICAgICAgIDxIaW50UGF0aD5XaXhVdGlsRXh0ZW5zaW9uPC9IaW50UGF0aD4KKyAgICAgICAgICAgIDxOYW1lPldpeFV0aWxFeHRlbnNpb248L05hbWU+CisgICAgICAgIDwvV2l4RXh0ZW5zaW9uPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxJbnRlcm1lZGlhdGVPdXRwdXRQYXRoPiQoUHlTb3VyY2VQYXRoKVBDQnVpbGRcb2JqXCQoQ29uZmlndXJhdGlvbilfJChQbGF0Zm9ybSlfU2V0dXBcJChPdXRwdXROYW1lKTwvSW50ZXJtZWRpYXRlT3V0cHV0UGF0aD4KKyAgICAgICAgPEludGVybWVkaWF0ZU91dHB1dFBhdGggQ29uZGl0aW9uPSInJChPdXRwdXRTdWZmaXgpJyAhPSAnJyI+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKV8kKE91dHB1dFN1ZmZpeCk8L0ludGVybWVkaWF0ZU91dHB1dFBhdGg+CisgICAgICAgIDxPdXRwdXRQYXRoIENvbmRpdGlvbj0iJyQoT3V0cHV0UGF0aCknID09ICcnIj4kKEJ1aWxkUGF0aCk8L091dHB1dFBhdGg+CisgICAgICAgIDxPdXRwdXRQYXRoIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXRwdXRQYXRoKSkiPiQoT3V0cHV0UGF0aClcPC9PdXRwdXRQYXRoPgorICAgICAgICA8T3V0RGlyPiQoT3V0cHV0UGF0aCk8L091dERpcj4KKyAgICAgICAgPFJldXNlQ2FiaW5ldENhY2hlPnRydWU8L1JldXNlQ2FiaW5ldENhY2hlPgorICAgICAgICA8Q1JUUmVkaXN0IENvbmRpdGlvbj0iJyQoQ1JUUmVkaXN0KScgPT0gJyciPiQoRXh0ZXJuYWxzRGlyKVxyZWRpc3Q8L0NSVFJlZGlzdD4KKyAgICAgICAgPENSVFJlZGlzdCBDb25kaXRpb249IiFFeGlzdHMoJChDUlRSZWRpc3QpKSI+PC9DUlRSZWRpc3Q+CisgICAgICAgIDxEb2NGaWxlbmFtZT5weXRob24kKE1ham9yVmVyc2lvbk51bWJlcikkKE1pbm9yVmVyc2lvbk51bWJlcikkKE1pY3JvVmVyc2lvbk51bWJlcikkKFJlbGVhc2VMZXZlbE5hbWUpLmNobTwvRG9jRmlsZW5hbWU+CisKKyAgICAgICAgPEluc3RhbGxlclZlcnNpb24+JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKEZpZWxkM1ZhbHVlKS4wPC9JbnN0YWxsZXJWZXJzaW9uPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICAKKyAgICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IiEkKEJ1aWxkRm9yUmVsZWFzZSkiPgorICAgICAgICA8UmV2aXNpb25OdW1iZXIgQ29uZGl0aW9uPSInJChSZXZpc2lvbk51bWJlciknID09ICcnIj4kKFtTeXN0ZW0uTWF0aF06OkZsb29yKCQoW1N5c3RlbS5EYXRlVGltZV06Ok5vdy5TdWJ0cmFjdCgkKFtTeXN0ZW0uRGF0ZVRpbWVdOjpuZXcoMjAwMSwgMSwgMSkpKS5Ub3RhbERheXMpKSk8L1JldmlzaW9uTnVtYmVyPgorICAgICAgICA8UHl0aG9uVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKWRldiQoUmV2aXNpb25OdW1iZXIpPC9QeXRob25WZXJzaW9uPgorICAgICAgICA8SW5zdGFsbGVyVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoUmV2aXNpb25OdW1iZXIpLjA8L0luc3RhbGxlclZlcnNpb24+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8Qml0bmVzcz4zMi1iaXQ8L0JpdG5lc3M+CisgICAgICAgIDxCaXRuZXNzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPjY0LWJpdDwvQml0bmVzcz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTsKKyAgICAgICAgICAgIFZlcnNpb249JChJbnN0YWxsZXJWZXJzaW9uKTsKKyAgICAgICAgICAgIFNob3J0VmVyc2lvbj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpOworICAgICAgICAgICAgTG9uZ1ZlcnNpb249JChQeXRob25WZXJzaW9uKTsKKyAgICAgICAgICAgIE1ham9yVmVyc2lvbk51bWJlcj0kKE1ham9yVmVyc2lvbk51bWJlcik7CisgICAgICAgICAgICBNaW5vclZlcnNpb25OdW1iZXI9JChNaW5vclZlcnNpb25OdW1iZXIpOworICAgICAgICAgICAgVXBncmFkZU1pbmltdW1WZXJzaW9uPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuMC4wOworICAgICAgICAgICAgTmV4dE1ham9yVmVyc2lvbk51bWJlcj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChbbXNidWlsZF06OkFkZCgkKE1pbm9yVmVyc2lvbk51bWJlciksIDEpKS4wLjA7CisgICAgICAgICAgICBCaXRuZXNzPSQoQml0bmVzcyk7CisgICAgICAgICAgICBQeURlYnVnRXh0PSQoUHlEZWJ1Z0V4dCk7CisgICAgICAgICAgICBPcHRpb25hbEZlYXR1cmVOYW1lPSQoT3V0cHV0TmFtZSk7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJyQoQ1JUUmVkaXN0KScgIT0gJyciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO0NSVFJlZGlzdD0kKENSVFJlZGlzdCk7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJChVc2VUZXN0TWFya2VyKSAhPSAndHJ1ZSciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO1Rlc3RQcmVmaXg9O0ZpbGVFeHRlbnNpb249cHk7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJChVc2VUZXN0TWFya2VyKSA9PSAndHJ1ZSciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO1Rlc3RQcmVmaXg9eDtGaWxlRXh0ZW5zaW9uPXB4OworICAgICAgICA8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cyBDb25kaXRpb249IiQoUGxhdGZvcm0pICE9ICd4NjQnIj4KKyAgICAgICAgICAgICQoRGVmaW5lQ29uc3RhbnRzKTtTdWZmaXgzMj0tMzI7CisgICAgICAgIDwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzIENvbmRpdGlvbj0iJChQbGF0Zm9ybSkgPT0gJ3g2NCciPgorICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpO1N1ZmZpeDMyPTsKKyAgICAgICAgPC9EZWZpbmVDb25zdGFudHM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXM+CisgICAgICAgICAgICA8R3JvdXA+Z2VuZXJhdGVkX2ZpbGVsaXN0PC9Hcm91cD4KKyAgICAgICAgICAgIDxDb25kaXRpb24+PC9Db25kaXRpb24+CisgICAgICAgICAgICA8RGlza0lkPjwvRGlza0lkPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICAgICAgPFZpc2libGU+ZmFsc2U8L1Zpc2libGU+CisgICAgICAgIDwvTGlua2VyQmluZElucHV0UGF0aHM+CisgICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxMaW5rZXJCaW5kSW5wdXRQYXRocyBJbmNsdWRlPSIkKEJ1aWxkUGF0aCk7JChQeVNvdXJjZVBhdGgpRG9jXGJ1aWxkXGh0bWxoZWxwIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT48L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT5zcmM8L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHMgSW5jbHVkZT0iJCh0Y2x0a0RpcikiPgorICAgICAgICAgICAgPEJpbmROYW1lPnRjbHRrPC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoQ1JUUmVkaXN0KSIgQ29uZGl0aW9uPSInJChDUlRSZWRpc3QpJyAhPSAnJyI+CisgICAgICAgICAgICA8QmluZE5hbWU+cmVkaXN0PC9CaW5kTmFtZT4KKyAgICAgICAgPC9MaW5rZXJCaW5kSW5wdXRQYXRocz4KKyAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzIEluY2x1ZGU9IiQoVlMxNDBDT01OVE9PTFMpXC4uXC4uXFZDXHJlZGlzdFwkKFBsYXRmb3JtKVxNaWNyb3NvZnQuVkMxNDAuQ1JUIj4KKyAgICAgICAgICAgIDxCaW5kTmFtZT5yZWRpc3Q8L0JpbmROYW1lPgorICAgICAgICA8L0xpbmtlckJpbmRJbnB1dFBhdGhzPgorICAgIDwvSXRlbUdyb3VwPgorCisgICAgPFRhcmdldCBOYW1lPSJfVmFsaWRhdGVNc2lQcm9wcyIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlBsYXRmb3JtICckKFBsYXRmb3JtKScgaXMgbm90IHN1cHBvcnRlZC4gVXNlICd4ODYnIG9yICd4NjQnLiIgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSAhPSAneDg2JyBhbmQgJChQbGF0Zm9ybSkgIT0gJ3g2NCciIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IkNvcmVVcGdyYWRlQ29kZSI+CisgICAgICAgICAgICA8VXJpPnVwZ3JhZGVjb2RlPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJVcGdyYWRlQ29kZSI+CisgICAgICAgICAgICA8VXJpPnVwZ3JhZGVjb2RlLyQoT3V0cHV0TmFtZSk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9Ikluc3RhbGxEaXJlY3RvcnlHdWlkU2VlZCI+CisgICAgICAgICAgICA8VXJpPmluc3RhbGxkaXJlY3RvcnlzZWVkPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJQeXRob25FeGVDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cHl0aG9uLmV4ZTwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5weXRob253LmV4ZTwvVXJpPgorICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iUmVtb3ZlTGliMnRvM1BpY2tsZUNvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5saWIydG8zL3BpY2tsZXM8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8VGFyZ2V0IE5hbWU9Il9HZW5lcmF0ZUd1aWRzIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCI+CisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPF9VdWlkcz5AKF9VdWlkLT4nKCIlKElkZW50aXR5KSIsICIkKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLyUoVXJpKSIpJywnLCcpPC9fVXVpZHM+CisgICAgICAgICAgICA8X0dlbmVyYXRlQ29tbWFuZD5pbXBvcnQgdXVpZDsgcHJpbnQoJ1xuJy5qb2luKCd7fT17fScuZm9ybWF0KGksIHV1aWQudXVpZDUodXVpZC5VVUlEKCdjOGQ5NzMzZS1hNzBjLTQzZmYtYWIwYy1lMjY0NTZmMTEwODMnKSwgJyQoUmVsZWFzZVVyaSknICsgaikpIGZvciBpLGogaW4gWyQoX1V1aWRzLlJlcGxhY2UoYCJgLGAnYCkpXSkpPC9fR2VuZXJhdGVDb21tYW5kPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgICAgIAorICAgICAgICA8RXhlYyBDb21tYW5kPSciJChQeXRob25FeGUpIiAtYyAiJChfR2VuZXJhdGVDb21tYW5kKSIgJmd0OyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoT3V0cHV0TmFtZSlndWlkcy50eHQiJworICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiCisgICAgICAgICAgICAgIElnbm9yZUV4aXRDb2RlPSJmYWxzZSIgLz4KKyAgICAgICAgCisgICAgICAgIDxSZWFkTGluZXNGcm9tRmlsZSBGaWxlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChPdXRwdXROYW1lKWd1aWRzLnR4dCI+CisgICAgICAgICAgICA8T3V0cHV0IFRhc2tQYXJhbWV0ZXI9IkxpbmVzIiBJdGVtTmFtZT0iX1V1aWRWYWx1ZSIgLz4KKyAgICAgICAgPC9SZWFkTGluZXNGcm9tRmlsZT4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPERlZmluZUNvbnN0YW50cz4kKERlZmluZUNvbnN0YW50cyk7QChfVXVpZFZhbHVlLCc7Jyk7PC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnB5IGIvVG9vbHMvbXNpL21zaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUwMDU2YS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvbXNpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQ1NCArMCwwIEBACi0jIFB5dGhvbiBNU0kgR2VuZXJhdG9yCi0jIChDKSAyMDAzIE1hcnRpbiB2LiBMb2V3aXMKLSMgU2VlICJGT08iIGluIGNvbW1lbnRzIHJlZmVycyB0byBNU0ROIHNlY3Rpb25zIHdpdGggdGhlIHRpdGxlIEZPTy4KLWltcG9ydCBtc2lsaWIsIHNjaGVtYSwgc2VxdWVuY2UsIG9zLCBnbG9iLCB0aW1lLCByZSwgc2h1dGlsLCB6aXBmaWxlCi1pbXBvcnQgc3VicHJvY2VzcywgdGVtcGZpbGUKLWZyb20gbXNpbGliIGltcG9ydCBGZWF0dXJlLCBDQUIsIERpcmVjdG9yeSwgRGlhbG9nLCBCaW5hcnksIGFkZF9kYXRhCi1pbXBvcnQgdWlzYW1wbGUKLWZyb20gd2luMzJjb20uY2xpZW50IGltcG9ydCBjb25zdGFudHMKLWZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKLQotIyBTZXR0aW5ncyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBjb25maWcucHkgYmVsb3cKLSMgMCBmb3Igb2ZmaWNpYWwgcHl0aG9uLm9yZyByZWxlYXNlcwotIyAxIGZvciBpbnRlcm1lZGlhdGUgcmVsZWFzZXMgYnkgYW55Ym9keSwgd2l0aAotIyBhIG5ldyBwcm9kdWN0IGNvZGUgZm9yIGV2ZXJ5IHBhY2thZ2UuCi1zbmFwc2hvdCA9IDEKLSMgMSBtZWFucyB0aGF0IGZpbGUgZXh0ZW5zaW9uIGlzIHB4LCBub3QgcHksCi0jIGFuZCBiaW5hcmllcyBzdGFydCB3aXRoIHgKLXRlc3RwYWNrYWdlID0gMAotIyBMb2NhdGlvbiBvZiBidWlsZCB0cmVlCi1zcmNkaXIgPSBvcy5wYXRoLmFic3BhdGgoIi4uLy4uIikKLSMgVGV4dCB0byBiZSBkaXNwbGF5ZWQgYXMgdGhlIHZlcnNpb24gaW4gZGlhbG9ncyBldGMuCi0jIGdvZXMgaW50byBmaWxlIG5hbWUgYW5kIFByb2R1Y3RDb2RlLiBEZWZhdWx0cyB0bwotIyBjdXJyZW50X3ZlcnNpb24uZGF5IGZvciBTbmFwc2hvdCwgY3VycmVudF92ZXJzaW9uIG90aGVyd2lzZQotZnVsbF9jdXJyZW50X3ZlcnNpb24gPSBOb25lCi0jIElzIFRjbCBhdmFpbGFibGUgYXQgYWxsPwotaGF2ZV90Y2wgPSBUcnVlCi0jIHBhdGggdG8gUENidWlsZCBkaXJlY3RvcnkKLVBDQlVJTEQ9IlBDYnVpbGQiCi0jIG1zdmNydCB2ZXJzaW9uCi1NU1ZDUiA9ICIxMDAiCi0jIE5hbWUgb2YgY2VydGlmaWNhdGUgaW4gZGVmYXVsdCBzdG9yZSB0byBzaWduIE1TSSB3aXRoCi1jZXJ0bmFtZSA9IE5vbmUKLSMgTWFrZSBhIHppcCBmaWxlIGNvbnRhaW5pbmcgdGhlIFBEQiBmaWxlcyBmb3IgdGhpcyBidWlsZD8KLXBkYnppcCA9IFRydWUKLQotdHJ5OgotICAgIGZyb20gY29uZmlnIGltcG9ydCAqCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotCi0jIEV4dHJhY3QgY3VycmVudCB2ZXJzaW9uIGZyb20gSW5jbHVkZS9wYXRjaGxldmVsLmgKLWxpbmVzID0gb3BlbihzcmNkaXIgKyAiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIikucmVhZGxpbmVzKCkKLW1ham9yID0gbWlub3IgPSBtaWNybyA9IGxldmVsID0gc2VyaWFsID0gTm9uZQotbGV2ZWxzID0gewotICAgICdQWV9SRUxFQVNFX0xFVkVMX0FMUEhBJzoweEEsCi0gICAgJ1BZX1JFTEVBU0VfTEVWRUxfQkVUQSc6IDB4QiwKLSAgICAnUFlfUkVMRUFTRV9MRVZFTF9HQU1NQSc6MHhDLAotICAgICdQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMJzoweEYKLSAgICB9Ci1mb3IgbCBpbiBsaW5lczoKLSAgICBpZiBub3QgbC5zdGFydHN3aXRoKCIjZGVmaW5lIik6Ci0gICAgICAgIGNvbnRpbnVlCi0gICAgbCA9IGwuc3BsaXQoKQotICAgIGlmIGxlbihsKSAhPSAzOgotICAgICAgICBjb250aW51ZQotICAgIF8sIG5hbWUsIHZhbHVlID0gbAotICAgIGlmIG5hbWUgPT0gJ1BZX01BSk9SX1ZFUlNJT04nOiBtYWpvciA9IHZhbHVlCi0gICAgaWYgbmFtZSA9PSAnUFlfTUlOT1JfVkVSU0lPTic6IG1pbm9yID0gdmFsdWUKLSAgICBpZiBuYW1lID09ICdQWV9NSUNST19WRVJTSU9OJzogbWljcm8gPSB2YWx1ZQotICAgIGlmIG5hbWUgPT0gJ1BZX1JFTEVBU0VfTEVWRUwnOiBsZXZlbCA9IGxldmVsc1t2YWx1ZV0KLSAgICBpZiBuYW1lID09ICdQWV9SRUxFQVNFX1NFUklBTCc6IHNlcmlhbCA9IHZhbHVlCi0KLXNob3J0X3ZlcnNpb24gPSBtYWpvcisiLiIrbWlub3IKLSMgU2VlIFBDL21ha2VfdmVyc2lvbmluZm8uYwotRklFTEQzID0gMTAwMCppbnQobWljcm8pICsgMTAqbGV2ZWwgKyBpbnQoc2VyaWFsKQotY3VycmVudF92ZXJzaW9uID0gIiVzLiVkIiAlIChzaG9ydF92ZXJzaW9uLCBGSUVMRDMpCi0KLSMgVGhpcyBzaG91bGQgbmV2ZXIgY2hhbmdlLiBUaGUgVXBncmFkZUNvZGUgb2YgdGhpcyBwYWNrYWdlIGNhbiBiZQotIyB1c2VkIGluIHRoZSBVcGdyYWRlIHRhYmxlIG9mIGZ1dHVyZSBwYWNrYWdlcyB0byBtYWtlIHRoZSBmdXR1cmUKLSMgcGFja2FnZSByZXBsYWNlIHRoaXMgb25lLiBTZWUgIlVwZ3JhZGVDb2RlIFByb3BlcnR5Ii4KLSMgdXBncmFkZV9jb2RlIGdldHMgc2V0IHRvIHVwZ3JhZGVfY29kZV82NCB3aGVuIHdlIGhhdmUgZGV0ZXJtaW5lZAotIyB0aGF0IHRoZSB0YXJnZXQgaXMgV2luNjQuCi11cGdyYWRlX2NvZGVfc25hcHNob3Q9J3s5MkEyNDQ4MS0zRUNCLTQwRkMtODgzNi0wNEI3OTY2RUMwRDV9JwotdXBncmFkZV9jb2RlPSd7NjVFNkRFNDgtQTM1OC00MzRELUFBNEYtNEFGNzJEQjQ3MThGfScKLXVwZ3JhZGVfY29kZV82ND0nezZBOTY1QTBDLTZFRTYtNEUzQS05OTgzLTMyNjNGNTYzMTFFQ30nCi0KLWlmIHNuYXBzaG90OgotICAgIGN1cnJlbnRfdmVyc2lvbiA9ICIlcy4lcy4lcyIgJSAobWFqb3IsIG1pbm9yLCBpbnQodGltZS50aW1lKCkvMzYwMC8yNCkpCi0KLWlmIGZ1bGxfY3VycmVudF92ZXJzaW9uIGlzIE5vbmU6Ci0gICAgZnVsbF9jdXJyZW50X3ZlcnNpb24gPSBjdXJyZW50X3ZlcnNpb24KLQotZXh0ZW5zaW9ucyA9IFsKLSAgICAncHlleHBhdC5weWQnLAotICAgICdzZWxlY3QucHlkJywKLSAgICAndW5pY29kZWRhdGEucHlkJywKLSAgICAnd2luc291bmQucHlkJywKLSAgICAnX2J6Mi5weWQnLAotICAgICdfZWxlbWVudHRyZWUucHlkJywKLSAgICAnX3NvY2tldC5weWQnLAotICAgICdfc3NsLnB5ZCcsCi0gICAgJ190ZXN0Y2FwaS5weWQnLAotICAgICdfdGtpbnRlci5weWQnLAotICAgICdfbXNpLnB5ZCcsCi0gICAgJ19jdHlwZXMucHlkJywKLSAgICAnX2N0eXBlc190ZXN0LnB5ZCcsCi0gICAgJ19zcWxpdGUzLnB5ZCcsCi0gICAgJ19oYXNobGliLnB5ZCcsCi0gICAgJ19tdWx0aXByb2Nlc3NpbmcucHlkJywKLSAgICAnX2x6bWEucHlkJywKLSAgICAnX2RlY2ltYWwucHlkJywKLSAgICAnX3Rlc3RidWZmZXIucHlkJywKLSAgICAnX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQnLAotICAgICdfb3ZlcmxhcHBlZC5weWQnLAotXQotCi0jIFdlbGwta25vd24gY29tcG9uZW50IFVVSURzCi0jIFRoZXNlIGFyZSBuZWVkZWQgZm9yIFNoYXJlZERMTHMgcmVmZXJlbmNlIGNvdW50ZXI7IGlmCi0jIGEgZGlmZmVyZW50IFVVSUQgd2FzIHVzZWQgZm9yIGVhY2ggaW5jYXJuYXRpb24gb2YsIHNheSwKLSMgcHl0aG9uMjQuZGxsLCBhbiB1cGdyYWRlIHdvdWxkIHNldCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIKLSMgZnJvbSAxIHRvIDIgKGR1ZSB0byB3aGF0IEkgY29uc2lkZXIgYSBidWcgaW4gTVNJKQotIyBVc2luZyB0aGUgc2FtZSBVVUlEIGlzIGZpbmUgc2luY2UgdGhlc2UgZmlsZXMgYXJlIHZlcnNpb25lZCwKLSMgc28gSW5zdGFsbGVyIHdpbGwgYWx3YXlzIGtlZXAgdGhlIG5ld2VzdCB2ZXJzaW9uLgotIyBOT1RFOiBBbGwgdXVpZHMgYXJlIHNlbGYgZ2VuZXJhdGVkLgotcHl0aG9uZGxsX3V1aWQgPSB7Ci0gICAgIjI0IjoiezlCODFFNjE4LTIzMDEtNDAzNS1BQzc3LTc1RDlBQkVCNzMwMX0iLAotICAgICIyNSI6InsyZTQxYjExOC0zOGJkLTRjMWItYTg0MC02OTc3ZWZkMWI5MTF9IiwKLSAgICAiMjYiOiJ7MzRlYmVjYWMtZjA0Ni00ZTFjLWIwZTMtOWJhYzNjZGFhY2ZhfSIsCi0gICAgIjI3IjoiezRmZTIxYzc2LTE3NjAtNDM3Yi1hMmYyLTk5OTA5MTMwYTE3NX0iLAotICAgICIzMCI6Ins2OTUzYmMzYi02NzY4LTQyOTEtODQxMC03OTE0Y2U2ZTJjYTh9IiwKLSAgICAiMzEiOiJ7NGFmY2JhMGItMTNlNC00N2MzLWJlYmUtNDc3NDI4YjQ2OTEzfSIsCi0gICAgIjMyIjoiezNmZjk1MzE1LTEwOTYtNGQzMS1iZDg2LTYwMWQ1NDM4YWQ1ZX0iLAotICAgICIzMyI6IntmNzU4MWNhNC1kMzY4LTRlZWEtOGY4Mi1kNDhjNjRjNGYwNDd9IiwKLSAgICAiMzQiOiJ7N0EwQzU4MTItMjU4My00MEQ5LUJDQkItQ0Q3NDg1RjExMzc3fSIsCi0gICAgfSBbbWFqb3IrbWlub3JdCi0KLSMgQ29tcHV0ZSB0aGUgbmFtZSB0aGF0IFNwaGlueCBnaXZlcyB0byB0aGUgZG9jZmlsZQotZG9jZmlsZSA9IG1pY3JvCi1pZiBsZXZlbCA8IDB4ZjoKLSAgICBpZiBsZXZlbCA9PSAweEM6Ci0gICAgICAgIGRvY2ZpbGUgKz0gInJjJXMiICUgKHNlcmlhbCwpCi0gICAgZWxzZToKLSAgICAgICAgZG9jZmlsZSArPSAnJXglcycgJSAobGV2ZWwsIHNlcmlhbCkKLWRvY2ZpbGUgPSAncHl0aG9uJXMlcyVzLmNobScgJSAobWFqb3IsIG1pbm9yLCBkb2NmaWxlKQotCi0jIEJ1aWxkIHRoZSBtaW5ndyBpbXBvcnQgbGlicmFyeSwgbGlicHl0aG9uWFkuYQotIyBUaGlzIHJlcXVpcmVzICdubScgYW5kICdkbGx0b29sJyBleGVjdXRhYmxlcyBvbiB5b3VyIFBBVEgKLWRlZiBidWlsZF9taW5nd19saWIobGliX2ZpbGUsIGRlZl9maWxlLCBkbGxfZmlsZSwgbWluZ3dfbGliKToKLSAgICB3YXJuaW5nID0gIldBUk5JTkc6ICVzIC0gbGlicHl0aG9uWFguYSBub3QgYnVpbHQiCi0gICAgbm0gPSBmaW5kX2V4ZWN1dGFibGUoJ25tJykKLSAgICBkbGx0b29sID0gZmluZF9leGVjdXRhYmxlKCdkbGx0b29sJykKLQotICAgIGlmIG5vdCBubSBvciBub3QgZGxsdG9vbDoKLSAgICAgICAgcHJpbnQod2FybmluZyAlICJubSBhbmQvb3IgZGxsdG9vbCB3ZXJlIG5vdCBmb3VuZCIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgbm1fY29tbWFuZCA9ICclcyAtQ3MgJXMnICUgKG5tLCBsaWJfZmlsZSkKLSAgICBkbGx0b29sX2NvbW1hbmQgPSAiJXMgLS1kbGxuYW1lICVzIC0tZGVmICVzIC0tb3V0cHV0LWxpYiAlcyIgJSBcCi0gICAgICAgIChkbGx0b29sLCBkbGxfZmlsZSwgZGVmX2ZpbGUsIG1pbmd3X2xpYikKLSAgICBleHBvcnRfbWF0Y2ggPSByZS5jb21waWxlKHIiXl9pbXBfXyguKikgaW4gcHl0aG9uXGQrXC5kbGwiKS5tYXRjaAotCi0gICAgZiA9IG9wZW4oZGVmX2ZpbGUsJ3cnKQotICAgIGYud3JpdGUoIkxJQlJBUlkgJXNcbiIgJSBkbGxfZmlsZSkKLSAgICBmLndyaXRlKCJFWFBPUlRTXG4iKQotCi0gICAgbm1fcGlwZSA9IG9zLnBvcGVuKG5tX2NvbW1hbmQpCi0gICAgZm9yIGxpbmUgaW4gbm1fcGlwZS5yZWFkbGluZXMoKToKLSAgICAgICAgbSA9IGV4cG9ydF9tYXRjaChsaW5lKQotICAgICAgICBpZiBtOgotICAgICAgICAgICAgZi53cml0ZShtLmdyb3VwKDEpKyJcbiIpCi0gICAgZi5jbG9zZSgpCi0gICAgZXhpdCA9IG5tX3BpcGUuY2xvc2UoKQotCi0gICAgaWYgZXhpdDoKLSAgICAgICAgcHJpbnQod2FybmluZyAlICJubSBkaWQgbm90IHJ1biBzdWNjZXNzZnVsbHkiKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmIG9zLnN5c3RlbShkbGx0b29sX2NvbW1hbmQpICE9IDA6Ci0gICAgICAgIHByaW50KHdhcm5pbmcgJSAiZGxsdG9vbCBkaWQgbm90IHJ1biBzdWNjZXNzZnVsbHkiKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIHJldHVybiBUcnVlCi0KLSMgVGFyZ2V0IGZpbGVzICguZGVmIGFuZCAuYSkgZ28gaW4gUENCdWlsZCBkaXJlY3RvcnkKLWxpYl9maWxlID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgInB5dGhvbiVzJXMubGliIiAlIChtYWpvciwgbWlub3IpKQotZGVmX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCAicHl0aG9uJXMlcy5kZWYiICUgKG1ham9yLCBtaW5vcikpCi1kbGxfZmlsZSA9ICJweXRob24lcyVzLmRsbCIgJSAobWFqb3IsIG1pbm9yKQotbWluZ3dfbGliID0gb3MucGF0aC5qb2luKHNyY2RpciwgUENCVUlMRCwgImxpYnB5dGhvbiVzJXMuYSIgJSAobWFqb3IsIG1pbm9yKSkKLQotaGF2ZV9taW5ndyA9IGJ1aWxkX21pbmd3X2xpYihsaWJfZmlsZSwgZGVmX2ZpbGUsIGRsbF9maWxlLCBtaW5nd19saWIpCi0KLSMgRGV0ZXJtaW5lIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlCi1pZiBvcy5zeXN0ZW0oIm5tYWtlIC9ub2xvZ28gL2MgL2YgbXNpc3VwcG9ydC5tYWsiKSAhPSAwOgotICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiJ25tYWtlIC9mIG1zaXN1cHBvcnQubWFrJyBmYWlsZWQiKQotZGxsX3BhdGggPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBQQ0JVSUxELCBkbGxfZmlsZSkKLW1zaWxpYi5zZXRfYXJjaF9mcm9tX2ZpbGUoZGxsX3BhdGgpCi1pZiBtc2lsaWIucGVfdHlwZShkbGxfcGF0aCkgIT0gbXNpbGliLnBlX3R5cGUoIm1zaXN1cHBvcnQuZGxsIik6Ci0gICAgcmFpc2UgU3lzdGVtRXJyb3IoIm1zaXN1cHBvcnQuZGxsIGZvciBpbmNvcnJlY3QgYXJjaGl0ZWN0dXJlIikKLQotaWYgbXNpbGliLldpbjY0OgotICAgIHVwZ3JhZGVfY29kZSA9IHVwZ3JhZGVfY29kZV82NAotCi1pZiBzbmFwc2hvdDoKLSAgICBwcm9kdWN0X2NvZGUgPSBtc2lsaWIuZ2VuX3V1aWQoKQotZWxzZToKLSAgICAjIG9mZmljaWFsIHJlbGVhc2U6IGdlbmVyYXRlIFVVSUQgZnJvbSB0aGUgZG93bmxvYWQgbGluayB0aGF0IHRoZSBmaWxlIHdpbGwgaGF2ZQotICAgIGltcG9ydCB1dWlkCi0gICAgcHJvZHVjdF9jb2RlID0gdXVpZC51dWlkMyh1dWlkLk5BTUVTUEFDRV9VUkwsCi0gICAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8lcy4lcy4lcy9weXRob24tJXMlcy5tc2knICUKLSAgICAgICAgICAgICAgICAgICAgKG1ham9yLCBtaW5vciwgbWljcm8sIGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2lsaWIuYXJjaF9leHQpKQotICAgIHByb2R1Y3RfY29kZSA9ICd7JXN9JyAlIHByb2R1Y3RfY29kZQotCi1pZiB0ZXN0cGFja2FnZToKLSAgICBleHQgPSAncHgnCi0gICAgdGVzdHByZWZpeCA9ICd4JwotZWxzZToKLSAgICBleHQgPSAncHknCi0gICAgdGVzdHByZWZpeCA9ICcnCi0KLWlmIG1zaWxpYi5XaW42NDoKLSAgICBTeXN0ZW1Gb2xkZXJOYW1lID0gIltTeXN0ZW02NEZvbGRlcl0iCi0gICAgcmVnaXN0cnlfY29tcG9uZW50ID0gNHwyNTYKLWVsc2U6Ci0gICAgU3lzdGVtRm9sZGVyTmFtZSA9ICJbU3lzdGVtRm9sZGVyXSIKLSAgICByZWdpc3RyeV9jb21wb25lbnQgPSA0Ci0KLW1zaWxpYi5yZXNldCgpCi0KLSMgY29uZGl0aW9uIGluIHdoaWNoIHRvIGluc3RhbGwgcHl0aG9ueHkuZGxsIGluIHN5c3RlbTMyOgotIyBhKSBpdCBpcyBXaW5kb3dzIDl4IG9yCi0jIGIpIGl0IGlzIE5ULCB0aGUgdXNlciBpcyBwcml2aWxlZ2VkLCBhbmQgaGFzIGNob3NlbiBwZXItbWFjaGluZSBpbnN0YWxsYXRpb24KLXN5czMyY29uZCA9ICIoV2luZG93czl4IG9yIChQcml2aWxlZ2VkIGFuZCBBTExVU0VSUykpIgotCi1kZWYgYnVpbGRfZGF0YWJhc2UoKToKLSAgICAiIiJHZW5lcmF0ZSBhbiBlbXB0eSBkYXRhYmFzZSwgd2l0aCBqdXN0IHRoZSBzY2hlbWEgYW5kIHRoZQotICAgIFN1bW1hcnkgaW5mb3JtYXRpb24gc3RyZWFtLiIiIgotICAgIGlmIHNuYXBzaG90OgotICAgICAgICB1YyA9IHVwZ3JhZGVfY29kZV9zbmFwc2hvdAotICAgIGVsc2U6Ci0gICAgICAgIHVjID0gdXBncmFkZV9jb2RlCi0gICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBwcm9kdWN0c3VmZml4ID0gIiAoNjQtYml0KSIKLSAgICBlbHNlOgotICAgICAgICBwcm9kdWN0c3VmZml4ID0gIiIKLSAgICAjIHNjaGVtYSByZXByZXNlbnRzIHRoZSBpbnN0YWxsZXIgMi4wIGRhdGFiYXNlIHNjaGVtYS4KLSAgICAjIHNlcXVlbmNlIGlzIHRoZSBzZXQgb2Ygc3RhbmRhcmQgc2VxdWVuY2VzCi0gICAgIyAodWkvZXhlY3V0ZSwgYWRtaW4vYWR2dC9pbnN0YWxsKQotICAgIG1zaW5hbWUgPSAicHl0aG9uLSVzJXMubXNpIiAlIChmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KQotICAgIGRiID0gbXNpbGliLmluaXRfZGF0YWJhc2UobXNpbmFtZSwKLSAgICAgICAgICAgICAgICAgIHNjaGVtYSwgUHJvZHVjdE5hbWU9IlB5dGhvbiAiK2Z1bGxfY3VycmVudF92ZXJzaW9uK3Byb2R1Y3RzdWZmaXgsCi0gICAgICAgICAgICAgICAgICBQcm9kdWN0Q29kZT1wcm9kdWN0X2NvZGUsCi0gICAgICAgICAgICAgICAgICBQcm9kdWN0VmVyc2lvbj1jdXJyZW50X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICBNYW51ZmFjdHVyZXI9dSJQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIsCi0gICAgICAgICAgICAgICAgICByZXF1ZXN0X3VhYyA9IFRydWUpCi0gICAgIyBUaGUgZGVmYXVsdCBzZXF1ZW5jaW5nIG9mIHRoZSBSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIGFjdGlvbiBjYXVzZXMKLSAgICAjIHJlbW92YWwgb2YgZmlsZXMgdGhhdCBnb3QganVzdCBpbnN0YWxsZWQuIFBsYWNlIGl0IGFmdGVyCi0gICAgIyBJbnN0YWxsSW5pdGlhbGl6ZSwgc28gd2UgZmlyc3QgdW5pbnN0YWxsIGV2ZXJ5dGhpbmcsIGJ1dCBzdGlsbCByb2xsCi0gICAgIyBiYWNrIGluIGNhc2UgdGhlIGluc3RhbGxhdGlvbiBpcyBpbnRlcnJ1cHRlZAotICAgIG1zaWxpYi5jaGFuZ2Vfc2VxdWVuY2Uoc2VxdWVuY2UuSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIiwgMTUxMCkKLSAgICBtc2lsaWIuYWRkX3RhYmxlcyhkYiwgc2VxdWVuY2UpCi0gICAgIyBXZSBjYW5ub3Qgc2V0IEFMTFVTRVJTIGluIHRoZSBwcm9wZXJ0eSB0YWJsZSwgYXMgdGhpcyBjYW5ub3QgYmUKLSAgICAjIHJlc2V0IGlmIHRoZSB1c2VyIGNob3NlcyBhIHBlci11c2VyIGluc3RhbGxhdGlvbi4gSW5zdGVhZCwgd2UKLSAgICAjIG1haW50YWluIFdoaWNoVXNlcnMsIHdoaWNoIGNhbiBiZSAiQUxMIiBvciAiSlVTVE1FIi4gVGhlIFVJIG1hbmFnZXMKLSAgICAjIHRoaXMgcHJvcGVydHksIGFuZCB3aGVuIHRoZSBleGVjdXRpb24gc3RhcnRzLCBBTExVU0VSUyBpcyBzZXQKLSAgICAjIGFjY29yZGluZ2x5LgotICAgIGFkZF9kYXRhKGRiLCAiUHJvcGVydHkiLCBbKCJVcGdyYWRlQ29kZSIsIHVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiV2hpY2hVc2VycyIsICJBTEwiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiUHJvZHVjdExpbmUiLCAiUHl0aG9uJXMlcyIgJSAobWFqb3IsIG1pbm9yKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgZGIuQ29tbWl0KCkKLSAgICByZXR1cm4gZGIsIG1zaW5hbWUKLQotZGVmIHJlbW92ZV9vbGRfdmVyc2lvbnMoZGIpOgotICAgICJGaWxsIHRoZSB1cGdyYWRlIHRhYmxlLiIKLSAgICBzdGFydCA9ICIlcy4lcy4wIiAlIChtYWpvciwgbWlub3IpCi0gICAgIyBUaGlzIHJlcXVlc3RzIHRoYXQgZmVhdHVyZSBzZWxlY3Rpb24gc3RhdGVzIG9mIGFuIG9sZGVyCi0gICAgIyBpbnN0YWxsYXRpb24gc2hvdWxkIGJlIGZvcndhcmRlZCBpbnRvIHRoaXMgb25lLiBVcGdyYWRpbmcKLSAgICAjIHJlcXVpcmVzIHRoYXQgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IGluc3RhbGxhdGlvbiBhcmUKLSAgICAjIGVpdGhlciBib3RoIHBlci1tYWNoaW5lIG9yIHBlci11c2VyLgotICAgIG1pZ3JhdGVfZmVhdHVyZXMgPSAxCi0gICAgIyBTZWUgIlVwZ3JhZGUgVGFibGUiLiBXZSByZW1vdmUgcmVsZWFzZXMgd2l0aCB0aGUgc2FtZSBtYWpvciBhbmQKLSAgICAjIG1pbm9yIHZlcnNpb24uIEZvciBhbiBzbmFwc2hvdCwgd2UgcmVtb3ZlIGFsbCBlYXJsaWVyIHNuYXBzaG90cy4gRm9yCi0gICAgIyBhIHJlbGVhc2UsIHdlIHJlbW92ZSBhbGwgc25hcHNob3RzLCBhbmQgYWxsIGVhcmxpZXIgcmVsZWFzZXMuCi0gICAgaWYgc25hcHNob3Q6Ci0gICAgICAgIGFkZF9kYXRhKGRiLCAiVXBncmFkZSIsCi0gICAgICAgICAgICBbKHVwZ3JhZGVfY29kZV9zbmFwc2hvdCwgc3RhcnQsCi0gICAgICAgICAgICAgIGN1cnJlbnRfdmVyc2lvbiwKLSAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBsYW5ndWFnZQotICAgICAgICAgICAgICBtaWdyYXRlX2ZlYXR1cmVzLAotICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgICAgICAgICAgICMgTWlncmF0ZSBBTEwgZmVhdHVyZXMKLSAgICAgICAgICAgICAgIlJFTU9WRU9MRFNOQVBTSE9UIildKQotICAgICAgICBwcm9wcyA9ICJSRU1PVkVPTERTTkFQU0hPVCIKLSAgICBlbHNlOgotICAgICAgICBhZGRfZGF0YShkYiwgIlVwZ3JhZGUiLAotICAgICAgICAgICAgWyh1cGdyYWRlX2NvZGUsIHN0YXJ0LCBjdXJyZW50X3ZlcnNpb24sCi0gICAgICAgICAgICAgIE5vbmUsIG1pZ3JhdGVfZmVhdHVyZXMsIE5vbmUsICJSRU1PVkVPTERWRVJTSU9OIiksCi0gICAgICAgICAgICAgKHVwZ3JhZGVfY29kZV9zbmFwc2hvdCwgc3RhcnQsICIlcy4lZC4wIiAlIChtYWpvciwgaW50KG1pbm9yKSsxKSwKLSAgICAgICAgICAgICAgTm9uZSwgbWlncmF0ZV9mZWF0dXJlcywgTm9uZSwgIlJFTU9WRU9MRFNOQVBTSE9UIildKQotICAgICAgICBwcm9wcyA9ICJSRU1PVkVPTERTTkFQU0hPVDtSRU1PVkVPTERWRVJTSU9OIgotCi0gICAgcHJvcHMgKz0gIjtUQVJHRVRESVI7RExMRElSO0xBVU5DSEVSRElSIgotICAgICMgSW5zdGFsbGVyIGNvbGxlY3RzIHRoZSBwcm9kdWN0IGNvZGVzIG9mIHRoZSBlYXJsaWVyIHJlbGVhc2VzIGluCi0gICAgIyB0aGVzZSBwcm9wZXJ0aWVzLiBJbiBvcmRlciB0byBhbGxvdyBtb2RpZmljYXRpb24gb2YgdGhlIHByb3BlcnRpZXMsCi0gICAgIyB0aGV5IG11c3QgYmUgZGVjbGFyZWQgYXMgc2VjdXJlLiBTZWUgIlNlY3VyZUN1c3RvbVByb3BlcnRpZXMgUHJvcGVydHkiCi0gICAgYWRkX2RhdGEoZGIsICJQcm9wZXJ0eSIsIFsoIlNlY3VyZUN1c3RvbVByb3BlcnRpZXMiLCBwcm9wcyldKQotCi1jbGFzcyBQeURpYWxvZyhEaWFsb2cpOgotICAgICIiIkRpYWxvZyBjbGFzcyB3aXRoIGEgZml4ZWQgbGF5b3V0OiBjb250cm9scyBhdCB0aGUgdG9wLCB0aGVuIGEgcnVsZXIsCi0gICAgdGhlbiBhIGxpc3Qgb2YgYnV0dG9uczogYmFjaywgbmV4dCwgY2FuY2VsLiBPcHRpb25hbGx5IGEgYml0bWFwIGF0IHRoZQotICAgIGxlZnQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgIiIiRGlhbG9nKGRhdGFiYXNlLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyaWJ1dGVzLCB0aXRsZSwgZmlyc3QsCi0gICAgICAgIGRlZmF1bHQsIGNhbmNlbCwgYml0bWFwPXRydWUpIiIiCi0gICAgICAgIERpYWxvZy5fX2luaXRfXyhzZWxmLCAqYXJncykKLSAgICAgICAgcnVsZXIgPSBzZWxmLmggLSAzNgotICAgICAgICBibXdpZHRoID0gMTUyKnJ1bGVyLzMyOAotICAgICAgICBpZiBrdy5nZXQoImJpdG1hcCIsIFRydWUpOgotICAgICAgICAgICAgc2VsZi5iaXRtYXAoIkJpdG1hcCIsIDAsIDAsIGJtd2lkdGgsIHJ1bGVyLCAiUHl0aG9uV2luIikKLSAgICAgICAgc2VsZi5saW5lKCJCb3R0b21MaW5lIiwgMCwgcnVsZXIsIHNlbGYudywgMCkKLQotICAgIGRlZiB0aXRsZShzZWxmLCB0aXRsZSk6Ci0gICAgICAgICJTZXQgdGhlIHRpdGxlIHRleHQgb2YgdGhlIGRpYWxvZyBhdCB0aGUgdG9wLiIKLSAgICAgICAgIyBuYW1lLCB4LCB5LCB3LCBoLCBmbGFncz1WaXNpYmxlfEVuYWJsZWR8VHJhbnNwYXJlbnR8Tm9QcmVmaXgsCi0gICAgICAgICMgdGV4dCwgaW4gVmVyZGFuYUJvbGQxMAotICAgICAgICBzZWxmLnRleHQoIlRpdGxlIiwgMTM1LCAxMCwgMjIwLCA2MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgIHIie1xWZXJkYW5hQm9sZDEwfSVzIiAlIHRpdGxlKQotCi0gICAgZGVmIGJhY2soc2VsZiwgdGl0bGUsIG5leHQsIG5hbWUgPSAiQmFjayIsIGFjdGl2ZSA9IDEpOgotICAgICAgICAiIiJBZGQgYSBiYWNrIGJ1dHRvbiB3aXRoIGEgZ2l2ZW4gdGl0bGUsIHRoZSB0YWItbmV4dCBidXR0b24sCi0gICAgICAgIGl0cyBuYW1lIGluIHRoZSBDb250cm9sIHRhYmxlLCBwb3NzaWJseSBpbml0aWFsbHkgZGlzYWJsZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBidXR0b24sIHNvIHRoYXQgZXZlbnRzIGNhbiBiZSBhc3NvY2lhdGVkIiIiCi0gICAgICAgIGlmIGFjdGl2ZToKLSAgICAgICAgICAgIGZsYWdzID0gMyAjIFZpc2libGV8RW5hYmxlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmxhZ3MgPSAxICMgVmlzaWJsZQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIDE4MCwgc2VsZi5oLTI3ICwgNTYsIDE3LCBmbGFncywgdGl0bGUsIG5leHQpCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYsIHRpdGxlLCBuZXh0LCBuYW1lID0gIkNhbmNlbCIsIGFjdGl2ZSA9IDEpOgotICAgICAgICAiIiJBZGQgYSBjYW5jZWwgYnV0dG9uIHdpdGggYSBnaXZlbiB0aXRsZSwgdGhlIHRhYi1uZXh0IGJ1dHRvbiwKLSAgICAgICAgaXRzIG5hbWUgaW4gdGhlIENvbnRyb2wgdGFibGUsIHBvc3NpYmx5IGluaXRpYWxseSBkaXNhYmxlZC4KLQotICAgICAgICBSZXR1cm4gdGhlIGJ1dHRvbiwgc28gdGhhdCBldmVudHMgY2FuIGJlIGFzc29jaWF0ZWQiIiIKLSAgICAgICAgaWYgYWN0aXZlOgotICAgICAgICAgICAgZmxhZ3MgPSAzICMgVmlzaWJsZXxFbmFibGVkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmbGFncyA9IDEgIyBWaXNpYmxlCi0gICAgICAgIHJldHVybiBzZWxmLnB1c2hidXR0b24obmFtZSwgMzA0LCBzZWxmLmgtMjcsIDU2LCAxNywgZmxhZ3MsIHRpdGxlLCBuZXh0KQotCi0gICAgZGVmIG5leHQoc2VsZiwgdGl0bGUsIG5leHQsIG5hbWUgPSAiTmV4dCIsIGFjdGl2ZSA9IDEpOgotICAgICAgICAiIiJBZGQgYSBOZXh0IGJ1dHRvbiB3aXRoIGEgZ2l2ZW4gdGl0bGUsIHRoZSB0YWItbmV4dCBidXR0b24sCi0gICAgICAgIGl0cyBuYW1lIGluIHRoZSBDb250cm9sIHRhYmxlLCBwb3NzaWJseSBpbml0aWFsbHkgZGlzYWJsZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBidXR0b24sIHNvIHRoYXQgZXZlbnRzIGNhbiBiZSBhc3NvY2lhdGVkIiIiCi0gICAgICAgIGlmIGFjdGl2ZToKLSAgICAgICAgICAgIGZsYWdzID0gMyAjIFZpc2libGV8RW5hYmxlZAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmxhZ3MgPSAxICMgVmlzaWJsZQotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIDIzNiwgc2VsZi5oLTI3LCA1NiwgMTcsIGZsYWdzLCB0aXRsZSwgbmV4dCkKLQotICAgIGRlZiB4YnV0dG9uKHNlbGYsIG5hbWUsIHRpdGxlLCBuZXh0LCB4cG9zKToKLSAgICAgICAgIiIiQWRkIGEgYnV0dG9uIHdpdGggYSBnaXZlbiB0aXRsZSwgdGhlIHRhYi1uZXh0IGJ1dHRvbiwKLSAgICAgICAgaXRzIG5hbWUgaW4gdGhlIENvbnRyb2wgdGFibGUsIGdpdmluZyBpdHMgeCBwb3NpdGlvbjsgdGhlCi0gICAgICAgIHktcG9zaXRpb24gaXMgYWxpZ25lZCB3aXRoIHRoZSBvdGhlciBidXR0b25zLgotCi0gICAgICAgIFJldHVybiB0aGUgYnV0dG9uLCBzbyB0aGF0IGV2ZW50cyBjYW4gYmUgYXNzb2NpYXRlZCIiIgotICAgICAgICByZXR1cm4gc2VsZi5wdXNoYnV0dG9uKG5hbWUsIGludChzZWxmLncqeHBvcyAtIDI4KSwgc2VsZi5oLTI3LCA1NiwgMTcsIDMsIHRpdGxlLCBuZXh0KQotCi1kZWYgYWRkX3VpKGRiKToKLSAgICB4ID0geSA9IDUwCi0gICAgdyA9IDM3MAotICAgIGggPSAzMDAKLSAgICB0aXRsZSA9ICJbUHJvZHVjdE5hbWVdIFNldHVwIgotCi0gICAgIyBzZWUgIkRpYWxvZyBTdHlsZSBCaXRzIgotICAgIG1vZGFsID0gMyAgICAgICMgdmlzaWJsZSB8IG1vZGFsCi0gICAgbW9kZWxlc3MgPSAxICAgIyB2aXNpYmxlCi0gICAgdHJhY2tfZGlza19zcGFjZSA9IDMyCi0KLSAgICBhZGRfZGF0YShkYiwgJ0FjdGlvblRleHQnLCB1aXNhbXBsZS5BY3Rpb25UZXh0KQotICAgIGFkZF9kYXRhKGRiLCAnVUlUZXh0JywgdWlzYW1wbGUuVUlUZXh0KQotCi0gICAgIyBCaXRtYXBzCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNyY2RpcityIlxQQ1xweXRob25faWNvbi5leGUiKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJSdW4gaWNvbnMubWFrIGluIFBDIGRpcmVjdG9yeSIpCi0gICAgYWRkX2RhdGEoZGIsICJCaW5hcnkiLAotICAgICAgICAgICAgIFsoIlB5dGhvbldpbiIsIG1zaWxpYi5CaW5hcnkociIlc1xQQ2J1aWxkXGluc3RhbGxlci5ibXAiICUgc3JjZGlyKSksICMgMTUyeDMyOCBwaXhlbHMKLSAgICAgICAgICAgICAgKCJweS5pY28iLG1zaWxpYi5CaW5hcnkoc3JjZGlyK3IiXFBDXHB5LmljbyIpKSwKLSAgICAgICAgICAgICBdKQotICAgIGFkZF9kYXRhKGRiLCAiSWNvbiIsCi0gICAgICAgICAgICAgWygicHl0aG9uX2ljb24uZXhlIiwgbXNpbGliLkJpbmFyeShzcmNkaXIrciJcUENccHl0aG9uX2ljb24uZXhlIikpXSkKLQotICAgICMgU2NyaXB0cwotICAgICMgQ2hlY2tEaXIgc2V0cyBUYXJnZXRFeGlzdHMgaWYgVEFSR0VURElSIGV4aXN0cy4KLSAgICAjIFVwZGF0ZUVkaXRJRExFIHNldHMgdGhlIFJFR0lTVFJZLnRjbCBjb21wb25lbnQgaW50bwotICAgICMgdGhlIGluc3RhbGxlZC91bmluc3RhbGxlZCBzdGF0ZSBhY2NvcmRpbmcgdG8gYm90aCB0aGUKLSAgICAjIEV4dGVuc2lvbnMgYW5kIFRjbFRrIGZlYXR1cmVzLgotICAgIGFkZF9kYXRhKGRiLCAiQmluYXJ5IiwgWygiU2NyaXB0IiwgbXNpbGliLkJpbmFyeSgibXNpc3VwcG9ydC5kbGwiKSldKQotICAgICMgU2VlICJDdXN0b20gQWN0aW9uIFR5cGUgMSIKLSAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIENoZWNrRGlyID0gIkNoZWNrRGlyIgotICAgICAgICBVcGRhdGVFZGl0SURMRSA9ICJVcGRhdGVFZGl0SURMRSIKLSAgICBlbHNlOgotICAgICAgICBDaGVja0RpciA9ICAiX0NoZWNrRGlyQDQiCi0gICAgICAgIFVwZGF0ZUVkaXRJRExFID0gIl9VcGRhdGVFZGl0SURMRUA0IgotICAgIGFkZF9kYXRhKGRiLCAiQ3VzdG9tQWN0aW9uIiwKLSAgICAgICAgWygiQ2hlY2tEaXIiLCAxLCAiU2NyaXB0IiwgQ2hlY2tEaXIpXSkKLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgYWRkX2RhdGEoZGIsICJDdXN0b21BY3Rpb24iLAotICAgICAgICBbKCJVcGRhdGVFZGl0SURMRSIsIDEsICJTY3JpcHQiLCBVcGRhdGVFZGl0SURMRSldKQotCi0gICAgIyBVSSBjdXN0b21pemF0aW9uIHByb3BlcnRpZXMKLSAgICBhZGRfZGF0YShkYiwgIlByb3BlcnR5IiwKLSAgICAgICAgICAgICAjIFNlZSAiRGVmYXVsdFVJRm9udCBQcm9wZXJ0eSIKLSAgICAgICAgICAgICBbKCJEZWZhdWx0VUlGb250IiwgIkRsZ0ZvbnQ4IiksCi0gICAgICAgICAgICAgICMgU2VlICJFcnJvckRpYWxvZyBTdHlsZSBCaXQiCi0gICAgICAgICAgICAgICgiRXJyb3JEaWFsb2ciLCAiRXJyb3JEbGciKSwKLSAgICAgICAgICAgICAgKCJQcm9ncmVzczEiLCAiSW5zdGFsbCIpLCAgICMgbW9kaWZpZWQgaW4gbWFpbnRlbmFuY2UgdHlwZSBkbGcKLSAgICAgICAgICAgICAgKCJQcm9ncmVzczIiLCAiaW5zdGFsbHMiKSwKLSAgICAgICAgICAgICAgKCJNYWludGVuYW5jZUZvcm1fQWN0aW9uIiwgIlJlcGFpciIpXSkKLQotICAgICMgRm9udHMsIHNlZSAiVGV4dFN0eWxlIFRhYmxlIgotICAgIGFkZF9kYXRhKGRiLCAiVGV4dFN0eWxlIiwKLSAgICAgICAgICAgICBbKCJEbGdGb250OCIsICJUYWhvbWEiLCA5LCBOb25lLCAwKSwKLSAgICAgICAgICAgICAgKCJEbGdGb250Qm9sZDgiLCAiVGFob21hIiwgOCwgTm9uZSwgMSksICNib2xkCi0gICAgICAgICAgICAgICgiVmVyZGFuYUJvbGQxMCIsICJWZXJkYW5hIiwgMTAsIE5vbmUsIDEpLAotICAgICAgICAgICAgICAoIlZlcmRhbmFSZWQ5IiwgIlZlcmRhbmEiLCA5LCAyNTUsIDApLAotICAgICAgICAgICAgIF0pCi0KLSAgICBjb21waWxlYXJncyA9IHInLVdpICJbVEFSR0VURElSXUxpYlxjb21waWxlYWxsLnB5IiAtZiAteCAiYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xweTJffGxpYjJ0bzNcXHRlc3RzfHZlbnZcXHNjcmlwdHMiICJbVEFSR0VURElSXUxpYiInCi0gICAgbGliMnRvM2FyZ3MgPSByJy1jICJpbXBvcnQgbGliMnRvMy5weWdyYW0sIGxpYjJ0bzMucGF0Y29tcDtsaWIydG8zLnBhdGNvbXAuUGF0dGVybkNvbXBpbGVyKCkiJwotICAgIHVwZGF0ZXBpcGFyZ3MgPSByJy1tIGVuc3VyZXBpcCAtVSAtLWRlZmF1bHQtcGlwJwotICAgIHJlbW92ZXBpcGFyZ3MgPSByJy1CIC1tIGVuc3VyZXBpcC5fdW5pbnN0YWxsJwotICAgICMgU2VlICJDdXN0b21BY3Rpb24gVGFibGUiCi0gICAgYWRkX2RhdGEoZGIsICJDdXN0b21BY3Rpb24iLCBbCi0gICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlRmlyc3RTZXF1ZW5jZSArIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZVRleHREYXRhICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlUHJvcGVydHkKLSAgICAgICAgIyBTZWUgIkN1c3RvbSBBY3Rpb24gVHlwZSA1MSIsCi0gICAgICAgICMgIkN1c3RvbSBBY3Rpb24gRXhlY3V0aW9uIFNjaGVkdWxpbmcgT3B0aW9ucyIKLSAgICAgICAgKCJJbml0aWFsVGFyZ2V0RGlyIiwgMzA3LCAiVEFSR0VURElSIiwKLSAgICAgICAgICJbV2luZG93c1ZvbHVtZV1QeXRob24lcyVzIiAlIChtYWpvciwgbWlub3IpKSwKLSAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsIDMwNywgIkRMTERJUiIsICJbVEFSR0VURElSXSIpLAotICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAzMDcsICJETExESVIiLCBTeXN0ZW1Gb2xkZXJOYW1lKSwKLSAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1RBUkdFVERJUl0iKSwKLSAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsIDMwNywgIkxBVU5DSEVSRElSIiwgIltXaW5kb3dzRm9sZGVyXSIpLAotICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZUV4ZSArIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZVNvdXJjZUZpbGUKLSAgICAgICAgIyBTZWUgIkN1c3RvbSBBY3Rpb24gVHlwZSAxOCIKLSAgICAgICAgIyBtc2lkYkN1c3RvbUFjdGlvblR5cGVJblNjcmlwdCAoMTAyNCk7IHJ1biBkdXJpbmcgYWN0dWFsIGluc3RhbGxhdGlvbgotICAgICAgICAjIG1zaWRiQ3VzdG9tQWN0aW9uVHlwZU5vSW1wZXJzb25hdGUgKDIwNDgpOyBydW4gYWN0aW9uIGluIHN5c3RlbSBhY2NvdW50LCBub3QgdXNlciBhY2NvdW50Ci0gICAgICAgICgiQ29tcGlsZVB5YyIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCBjb21waWxlYXJncyksCi0gICAgICAgICgiQ29tcGlsZVB5byIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCAiLU8gIitjb21waWxlYXJncyksCi0gICAgICAgICgiQ29tcGlsZUdyYW1tYXIiLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgbGliMnRvM2FyZ3MpLAotICAgICAgICAoIlVwZGF0ZVBpcCIsIDE4KzEwMjQrMjA0OCwgInB5dGhvbi5leGUiLCB1cGRhdGVwaXBhcmdzKSwKLSAgICAgICAgKCJSZW1vdmVQaXAiLCAxOCsxMDI0KzIwNDgsICJweXRob24uZXhlIiwgcmVtb3ZlcGlwYXJncyksCi0gICAgICAgIF0pCi0KLSAgICAjIFVJIFNlcXVlbmNlcywgc2VlICJJbnN0YWxsVUlTZXF1ZW5jZSBUYWJsZSIsICJVc2luZyBhIFNlcXVlbmNlIFRhYmxlIgotICAgICMgTnVtYmVycyBpbmRpY2F0ZSBzZXF1ZW5jZTsgc2VlIHNlcXVlbmNlLnB5IGZvciBob3cgdGhlc2UgYWN0aW9uIGludGVncmF0ZQotICAgIGFkZF9kYXRhKGRiLCAiSW5zdGFsbFVJU2VxdWVuY2UiLAotICAgICAgICAgICAgIFsoIlByZXBhcmVEbGciLCAiTm90IFByaXZpbGVnZWQgb3IgV2luZG93czl4IG9yIEluc3RhbGxlZCIsIDE0MCksCi0gICAgICAgICAgICAgICgiV2hpY2hVc2Vyc0RsZyIsICJQcml2aWxlZ2VkIGFuZCBub3QgV2luZG93czl4IGFuZCBub3QgSW5zdGFsbGVkIiwgMTQxKSwKLSAgICAgICAgICAgICAgKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgICMgSW4gdGhlIHVzZXIgaW50ZXJmYWNlLCBhc3N1bWUgYWxsLXVzZXJzIGluc3RhbGxhdGlvbiBpZiBwcml2aWxlZ2VkLgotICAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAotICAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1MiksCi0gICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1dpbmRvd3MiLCAnTEFVTkNIRVJESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MyksCi0gICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCi0gICAgICAgICAgICAgICgiU2VsZWN0RGlyZWN0b3J5RGxnIiwgIk5vdCBJbnN0YWxsZWQiLCAxMjMwKSwKLSAgICAgICAgICAgICAgIyBYWFggbm8gc3VwcG9ydCBmb3IgcmVzdW1lIGluc3RhbGxhdGlvbnMgeWV0Ci0gICAgICAgICAgICAgICMoIlJlc3VtZURsZyIsICJJbnN0YWxsZWQgQU5EIChSRVNVTUUgT1IgUHJlc2VsZWN0ZWQpIiwgMTI0MCksCi0gICAgICAgICAgICAgICgiTWFpbnRlbmFuY2VUeXBlRGxnIiwgIkluc3RhbGxlZCBBTkQgTk9UIFJFU1VNRSBBTkQgTk9UIFByZXNlbGVjdGVkIiwgMTI1MCksCi0gICAgICAgICAgICAgICgiUHJvZ3Jlc3NEbGciLCBOb25lLCAxMjgwKV0pCi0gICAgYWRkX2RhdGEoZGIsICJBZG1pblVJU2VxdWVuY2UiLAotICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKLSAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAotICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAotICAgICAgICAgICAgIF0pCi0KLSAgICAjIFByZXBlbmQgVEFSR0VURElSIHRvIHRoZSBzeXN0ZW0gcGF0aCwgYW5kIHJlbW92ZSBpdCBvbiB1bmluc3RhbGwuCi0gICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCi0gICAgICAgICAgICAgWygiUGF0aEFkZGl0aW9uIiwgIj0tKlBhdGgiLCAiW1RBUkdFVERJUl07W1RBUkdFVERJUl1TY3JpcHRzO1t+XSIsICJSRUdJU1RSWS5wYXRoIildKQotCi0gICAgIyBFeGVjdXRlIFNlcXVlbmNlcwotICAgIGFkZF9kYXRhKGRiLCAiSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZSIsCi0gICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgKCJTZXRETExEaXJUb1N5c3RlbTMyIiwgJ0RMTERJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUxKSwKLSAgICAgICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgJ0RMTERJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1MiksCi0gICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKLSAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiIgYW5kIG5vdCAnICsgc3lzMzJjb25kLCA3NTQpLAotICAgICAgICAgICAgICgiVXBkYXRlRWRpdElETEUiLCBOb25lLCAxMDUwKSwKLSAgICAgICAgICAgICAjIHJ1biBjb21tYW5kIGlmIGluc3RhbGwgc3RhdGUgb2YgcGlwIGNoYW5nZXMgdG8gSU5TVEFMTFNUQVRFX0xPQ0FMCi0gICAgICAgICAgICAgIyBydW4gYWZ0ZXIgSW5zdGFsbEZpbGVzCi0gICAgICAgICAgICAgKCJVcGRhdGVQaXAiLCAiJnBpcF9mZWF0dXJlPTMiLCA0MDAxKSwKLSAgICAgICAgICAgICAjIHJlbW92ZSBwaXAgd2hlbiBzdGF0ZSBjaGFuZ2VzIHRvIElOU1RBTExTVEFURV9BQlNFTlQKLSAgICAgICAgICAgICAjIHJ1biBiZWZvcmUgUmVtb3ZlRmlsZXMKLSAgICAgICAgICAgICAoIlJlbW92ZVBpcCIsICImcGlwX2ZlYXR1cmU9MiIsIDM0OTkpLAotICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNDAwMiksCi0gICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA0MDAzKSwKLSAgICAgICAgICAgICAoIkNvbXBpbGVHcmFtbWFyIiwgIkNPTVBJTEVBTEwiLCA0MDA0KSwKLSAgICAgICAgICAgIF0pCi0gICAgYWRkX2RhdGEoZGIsICJBZG1pbkV4ZWN1dGVTZXF1ZW5jZSIsCi0gICAgICAgICAgICBbKCJJbml0aWFsVGFyZ2V0RGlyIiwgJ1RBUkdFVERJUj0iIicsIDc1MCksCi0gICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAotICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIicsIDc1MiksCi0gICAgICAgICAgICBdKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBTdGFuZGFyZCBkaWFsb2dzOiBGYXRhbEVycm9yLCBVc2VyRXhpdCwgRXhpdERpYWxvZwotICAgIGZhdGFsPVB5RGlhbG9nKGRiLCAiRmF0YWxFcnJvciIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgIkZpbmlzaCIsICJGaW5pc2giLCAiRmluaXNoIikKLSAgICBmYXRhbC50aXRsZSgiW1Byb2R1Y3ROYW1lXSBJbnN0YWxsZXIgZW5kZWQgcHJlbWF0dXJlbHkiKQotICAgIGZhdGFsLmJhY2soIjwgQmFjayIsICJGaW5pc2giLCBhY3RpdmUgPSAwKQotICAgIGZhdGFsLmNhbmNlbCgiQ2FuY2VsIiwgIkJhY2siLCBhY3RpdmUgPSAwKQotICAgIGZhdGFsLnRleHQoIkRlc2NyaXB0aW9uMSIsIDEzNSwgNzAsIDIyMCwgODAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiW1Byb2R1Y3ROYW1lXSBzZXR1cCBlbmRlZCBwcmVtYXR1cmVseSBiZWNhdXNlIG9mIGFuIGVycm9yLiAgWW91ciBzeXN0ZW0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiAgVG8gaW5zdGFsbCB0aGlzIHByb2dyYW0gYXQgYSBsYXRlciB0aW1lLCBwbGVhc2UgcnVuIHRoZSBpbnN0YWxsYXRpb24gYWdhaW4uIikKLSAgICBmYXRhbC50ZXh0KCJEZXNjcmlwdGlvbjIiLCAxMzUsIDE1NSwgMjIwLCAyMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJDbGljayB0aGUgRmluaXNoIGJ1dHRvbiB0byBleGl0IHRoZSBJbnN0YWxsZXIuIikKLSAgICBjPWZhdGFsLm5leHQoIkZpbmlzaCIsICJDYW5jZWwiLCBuYW1lPSJGaW5pc2giKQotICAgICMgU2VlICJDb250cm9sRXZlbnQgVGFibGUiLiBQYXJhbWV0ZXJzIGFyZSB0aGUgZXZlbnQsIHRoZSBwYXJhbWV0ZXIKLSAgICAjIHRvIHRoZSBhY3Rpb24sIGFuZCBvcHRpb25hbGx5IHRoZSBjb25kaXRpb24gZm9yIHRoZSBldmVudCwgYW5kIHRoZSBvcmRlcgotICAgICMgb2YgZXZlbnRzLgotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLQotICAgIHVzZXJfZXhpdD1QeURpYWxvZyhkYiwgIlVzZXJFeGl0IiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAiRmluaXNoIiwgIkZpbmlzaCIsICJGaW5pc2giKQotICAgIHVzZXJfZXhpdC50aXRsZSgiW1Byb2R1Y3ROYW1lXSBJbnN0YWxsZXIgd2FzIGludGVycnVwdGVkIikKLSAgICB1c2VyX2V4aXQuYmFjaygiPCBCYWNrIiwgIkZpbmlzaCIsIGFjdGl2ZSA9IDApCi0gICAgdXNlcl9leGl0LmNhbmNlbCgiQ2FuY2VsIiwgIkJhY2siLCBhY3RpdmUgPSAwKQotICAgIHVzZXJfZXhpdC50ZXh0KCJEZXNjcmlwdGlvbjEiLCAxMzUsIDcwLCAyMjAsIDgwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIltQcm9kdWN0TmFtZV0gc2V0dXAgd2FzIGludGVycnVwdGVkLiAgWW91ciBzeXN0ZW0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiAgIgotICAgICAgICAgICAgICAgIlRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLiIpCi0gICAgdXNlcl9leGl0LnRleHQoIkRlc2NyaXB0aW9uMiIsIDEzNSwgMTU1LCAyMjAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIkNsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIEluc3RhbGxlci4iKQotICAgIGMgPSB1c2VyX2V4aXQubmV4dCgiRmluaXNoIiwgIkNhbmNlbCIsIG5hbWU9IkZpbmlzaCIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIkV4aXQiKQotCi0gICAgZXhpdF9kaWFsb2cgPSBQeURpYWxvZyhkYiwgIkV4aXREaWFsb2ciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaCIsICJGaW5pc2giLCAiRmluaXNoIikKLSAgICBleGl0X2RpYWxvZy50aXRsZSgiQ29tcGxldGUgdGhlIFtQcm9kdWN0TmFtZV0gSW5zdGFsbGVyIikKLSAgICBleGl0X2RpYWxvZy5iYWNrKCI8IEJhY2siLCAiRmluaXNoIiwgYWN0aXZlID0gMCkKLSAgICBleGl0X2RpYWxvZy5jYW5jZWwoIkNhbmNlbCIsICJCYWNrIiwgYWN0aXZlID0gMCkKLSAgICBleGl0X2RpYWxvZy50ZXh0KCJBY2tub3dsZWRnZW1lbnRzIiwgMTM1LCA5NSwgMjIwLCAxMjAsIDB4MzAwMDMsCi0gICAgICAiU3BlY2lhbCBXaW5kb3dzIHRoYW5rcyB0bzpcbiIKLSAgICAgICIgICAgTWFyayBIYW1tb25kLCB3aXRob3V0IHdob3NlIHllYXJzIG9mIGZyZWVseSBcbiIKLSAgICAgICIgICAgc2hhcmVkIFdpbmRvd3MgZXhwZXJ0aXNlLCBQeXRob24gZm9yIFdpbmRvd3MgXG4iCi0gICAgICAiICAgIHdvdWxkIHN0aWxsIGJlIFB5dGhvbiBmb3IgRE9TLiIpCi0KLSAgICBjID0gZXhpdF9kaWFsb2cudGV4dCgid2FybmluZyIsIDEzNSwgMjAwLCAyMjAsIDQwLCAweDMwMDAzLAotICAgICAgICAgICAgIntcXFZlcmRhbmFSZWQ5fVdhcm5pbmc6IFB5dGhvbiAyLjUueCBpcyB0aGUgbGFzdCAiCi0gICAgICAgICAgICAiUHl0aG9uIHJlbGVhc2UgZm9yIFdpbmRvd3MgOXguIikKLSAgICBjLmNvbmRpdGlvbigiSGlkZSIsICJOT1QgVmVyc2lvbjlYIikKLQotICAgIGV4aXRfZGlhbG9nLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCAyMzUsIDIyMCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAiQ2xpY2sgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGUgSW5zdGFsbGVyLiIpCi0gICAgYyA9IGV4aXRfZGlhbG9nLm5leHQoIkZpbmlzaCIsICJDYW5jZWwiLCBuYW1lPSJGaW5pc2giKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBSZXF1aXJlZCBkaWFsb2c6IEZpbGVzSW5Vc2UsIEVycm9yRGxnCi0gICAgaW51c2UgPSBQeURpYWxvZyhkYiwgIkZpbGVzSW5Vc2UiLAotICAgICAgICAgICAgICAgICAgICAgeCwgeSwgdywgaCwKLSAgICAgICAgICAgICAgICAgICAgIDE5LCAgICAgICAgICAgICAgICAjIEtlZXBNb2RlbGVzc3xNb2RhbHxWaXNpYmxlCi0gICAgICAgICAgICAgICAgICAgICB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICJSZXRyeSIsICJSZXRyeSIsICJSZXRyeSIsIGJpdG1hcD1GYWxzZSkKLSAgICBpbnVzZS50ZXh0KCJUaXRsZSIsIDE1LCA2LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgciJ7XERsZ0ZvbnRCb2xkOH1GaWxlcyBpbiBVc2UiKQotICAgIGludXNlLnRleHQoIkRlc2NyaXB0aW9uIiwgMjAsIDIzLCAyODAsIDIwLCAweDMwMDAzLAotICAgICAgICAgICAgICAgIlNvbWUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYXJlIGN1cnJlbnRseSBpbiB1c2UuIikKLSAgICBpbnVzZS50ZXh0KCJUZXh0IiwgMjAsIDU1LCAzMzAsIDUwLCAzLAotICAgICAgICAgICAgICAgIlRoZSBmb2xsb3dpbmcgYXBwbGljYXRpb25zIGFyZSB1c2luZyBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCBieSB0aGlzIHNldHVwLiBDbG9zZSB0aGVzZSBhcHBsaWNhdGlvbnMgYW5kIHRoZW4gY2xpY2sgUmV0cnkgdG8gY29udGludWUgdGhlIGluc3RhbGxhdGlvbiBvciBDYW5jZWwgdG8gZXhpdCBpdC4iKQotICAgIGludXNlLmNvbnRyb2woIkxpc3QiLCAiTGlzdEJveCIsIDIwLCAxMDcsIDMzMCwgMTMwLCA3LCAiRmlsZUluVXNlUHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICBOb25lLCBOb25lLCBOb25lKQotICAgIGM9aW51c2UuYmFjaygiRXhpdCIsICJJZ25vcmUiLCBuYW1lPSJFeGl0IikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0gICAgYz1pbnVzZS5uZXh0KCJJZ25vcmUiLCAiUmV0cnkiLCBuYW1lPSJJZ25vcmUiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJJZ25vcmUiKQotICAgIGM9aW51c2UuY2FuY2VsKCJSZXRyeSIsICJFeGl0IiwgbmFtZT0iUmV0cnkiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsIlJldHJ5IikKLQotCi0gICAgIyBTZWUgIkVycm9yIERpYWxvZyIuIFNlZSAiSUNFMjAiIGZvciB0aGUgcmVxdWlyZWQgbmFtZXMgb2YgdGhlIGNvbnRyb2xzLgotICAgIGVycm9yID0gRGlhbG9nKGRiLCAiRXJyb3JEbGciLAotICAgICAgICAgICAgICAgICAgIDUwLCAxMCwgMzMwLCAxMDEsCi0gICAgICAgICAgICAgICAgICAgNjU1NDMsICAgICAgICMgRXJyb3J8TWluaW1pemV8TW9kYWx8VmlzaWJsZQotICAgICAgICAgICAgICAgICAgIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICJFcnJvclRleHQiLCBOb25lLCBOb25lKQotICAgIGVycm9yLnRleHQoIkVycm9yVGV4dCIsIDUwLDksMjgwLDQ4LDMsICIiKQotICAgIGVycm9yLmNvbnRyb2woIkVycm9ySWNvbiIsICJJY29uIiwgMTUsIDksIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwgInB5LmljbyIsIE5vbmUsIE5vbmUpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiTiIsMTIwLDcyLDgxLDIxLDMsIk5vIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JObyIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiWSIsMjQwLDcyLDgxLDIxLDMsIlllcyIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9yWWVzIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJBIiwwLDcyLDgxLDIxLDMsIkFib3J0IixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JBYm9ydCIpCi0gICAgZXJyb3IucHVzaGJ1dHRvbigiQyIsNDIsNzIsODEsMjEsMywiQ2FuY2VsIixOb25lKS5ldmVudCgiRW5kRGlhbG9nIiwiRXJyb3JDYW5jZWwiKQotICAgIGVycm9yLnB1c2hidXR0b24oIkkiLDgxLDcyLDgxLDIxLDMsIklnbm9yZSIsTm9uZSkuZXZlbnQoIkVuZERpYWxvZyIsIkVycm9ySWdub3JlIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJPIiwxNTksNzIsODEsMjEsMywiT2siLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvck9rIikKLSAgICBlcnJvci5wdXNoYnV0dG9uKCJSIiwxOTgsNzIsODEsMjEsMywiUmV0cnkiLE5vbmUpLmV2ZW50KCJFbmREaWFsb2ciLCJFcnJvclJldHJ5IikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgR2xvYmFsICJRdWVyeSBDYW5jZWwiIGRpYWxvZwotICAgIGNhbmNlbCA9IERpYWxvZyhkYiwgIkNhbmNlbERsZyIsIDUwLCAxMCwgMjYwLCA4NSwgMywgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICJObyIsICJObyIsICJObyIpCi0gICAgY2FuY2VsLnRleHQoIlRleHQiLCA0OCwgMTUsIDE5NCwgMzAsIDMsCi0gICAgICAgICAgICAgICAgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjYW5jZWwgW1Byb2R1Y3ROYW1lXSBpbnN0YWxsYXRpb24/IikKLSAgICBjYW5jZWwuY29udHJvbCgiSWNvbiIsICJJY29uIiwgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgInB5LmljbyIsIE5vbmUsIE5vbmUpCi0gICAgYz1jYW5jZWwucHVzaGJ1dHRvbigiWWVzIiwgNzIsIDU3LCA1NiwgMTcsIDMsICJZZXMiLCAiTm8iKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJFeGl0IikKLQotICAgIGM9Y2FuY2VsLnB1c2hidXR0b24oIk5vIiwgMTMyLCA1NywgNTYsIDE3LCAzLCAiTm8iLCAiWWVzIikKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgR2xvYmFsICJXYWl0IGZvciBjb3N0aW5nIiBkaWFsb2cKLSAgICBjb3N0aW5nID0gRGlhbG9nKGRiLCAiV2FpdEZvckNvc3RpbmdEbGciLCA1MCwgMTAsIDI2MCwgODUsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICJSZXR1cm4iLCAiUmV0dXJuIiwgIlJldHVybiIpCi0gICAgY29zdGluZy50ZXh0KCJUZXh0IiwgNDgsIDE1LCAxOTQsIDMwLCAzLAotICAgICAgICAgICAgICAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIGluc3RhbGxlciBmaW5pc2hlcyBkZXRlcm1pbmluZyB5b3VyIGRpc2sgc3BhY2UgcmVxdWlyZW1lbnRzLiIpCi0gICAgY29zdGluZy5jb250cm9sKCJJY29uIiwgIkljb24iLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgInB5LmljbyIsIE5vbmUsIE5vbmUpCi0gICAgYyA9IGNvc3RpbmcucHVzaGJ1dHRvbigiUmV0dXJuIiwgMTAyLCA1NywgNTYsIDE3LCAzLCAiUmV0dXJuIiwgTm9uZSkKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiRXhpdCIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFByZXBhcmF0aW9uIGRpYWxvZzogbm8gdXNlciBpbnB1dCBleGNlcHQgY2FuY2VsbGF0aW9uCi0gICAgcHJlcCA9IFB5RGlhbG9nKGRiLCAiUHJlcGFyZURsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIsICJDYW5jZWwiLCAiQ2FuY2VsIikKLSAgICBwcmVwLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCA3MCwgMjIwLCA0MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgcHJlcGFyZXMgdG8gZ3VpZGUgeW91IHRocm91Z2ggdGhlIGluc3RhbGxhdGlvbi4iKQotICAgIHByZXAudGl0bGUoIldlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gSW5zdGFsbGVyIikKLSAgICBjPXByZXAudGV4dCgiQWN0aW9uVGV4dCIsIDEzNSwgMTEwLCAyMjAsIDIwLCAweDMwMDAzLCAiUG9uZGVyaW5nLi4uIikKLSAgICBjLm1hcHBpbmcoIkFjdGlvblRleHQiLCAiVGV4dCIpCi0gICAgYz1wcmVwLnRleHQoIkFjdGlvbkRhdGEiLCAxMzUsIDEzNSwgMjIwLCAzMCwgMHgzMDAwMywgTm9uZSkKLSAgICBjLm1hcHBpbmcoIkFjdGlvbkRhdGEiLCAiVGV4dCIpCi0gICAgcHJlcC5iYWNrKCJCYWNrIiwgTm9uZSwgYWN0aXZlPTApCi0gICAgcHJlcC5uZXh0KCJOZXh0IiwgTm9uZSwgYWN0aXZlPTApCi0gICAgYz1wcmVwLmNhbmNlbCgiQ2FuY2VsIiwgTm9uZSkKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBUYXJnZXQgZGlyZWN0b3J5IHNlbGVjdGlvbgotICAgIHNlbGRsZyA9IFB5RGlhbG9nKGRiLCAiU2VsZWN0RGlyZWN0b3J5RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAiTmV4dCIsICJOZXh0IiwgIkNhbmNlbCIpCi0gICAgc2VsZGxnLnRpdGxlKCJTZWxlY3QgRGVzdGluYXRpb24gRGlyZWN0b3J5IikKLSAgICBjID0gc2VsZGxnLnRleHQoIkV4aXN0aW5nIiwgMTM1LCAyNSwgMjM1LCAzMCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICAgIntcVmVyZGFuYVJlZDl9VGhpcyB1cGRhdGUgd2lsbCByZXBsYWNlIHlvdXIgZXhpc3RpbmcgW1Byb2R1Y3RMaW5lXSBpbnN0YWxsYXRpb24uIikKLSAgICBjLmNvbmRpdGlvbigiSGlkZSIsICdSRU1PVkVPTERWRVJTSU9OPSIiIGFuZCBSRU1PVkVPTERTTkFQU0hPVD0iIicpCi0gICAgc2VsZGxnLnRleHQoIkRlc2NyaXB0aW9uIiwgMTM1LCA1MCwgMjIwLCA0MCwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICJQbGVhc2Ugc2VsZWN0IGEgZGlyZWN0b3J5IGZvciB0aGUgW1Byb2R1Y3ROYW1lXSBmaWxlcy4iKQotCi0gICAgc2VsZGxnLmJhY2soIjwgQmFjayIsIE5vbmUsIGFjdGl2ZT0wKQotICAgIGMgPSBzZWxkbGcubmV4dCgiTmV4dCA+IiwgIkNhbmNlbCIpCi0gICAgYy5ldmVudCgiRG9BY3Rpb24iLCAiQ2hlY2tEaXIiLCAiVGFyZ2V0RXhpc3RzT2s8PjEiLCBvcmRlcj0xKQotICAgICMgSWYgdGhlIHRhcmdldCBleGlzdHMsIGJ1dCB3ZSBmb3VuZCB0aGF0IHdlIGFyZSBnb2luZyB0byByZW1vdmUgb2xkIHZlcnNpb25zLCBkb24ndCBib3RoZXIKLSAgICAjIGNvbmZpcm1pbmcgdGhhdCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMuIFN0cmljdGx5IHNwZWFraW5nLCB3ZSBzaG91bGQgZGV0ZXJtaW5lIHRoYXQKLSAgICAjIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGlzIGluZGVlZCB0aGUgdGFyZ2V0IG9mIHRoZSBwcm9kdWN0IHRoYXQgd2UgYXJlIGdvaW5nIHRvIHJlbW92ZSwgYnV0Ci0gICAgIyBJIGRvbid0IGtub3cgaG93IHRvIGRvIHRoYXQuCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiRXhpc3RpbmdEaXJlY3RvcnlEbGciLCAnVGFyZ2V0RXhpc3RzPTEgYW5kIFJFTU9WRU9MRFZFUlNJT049IiIgYW5kIFJFTU9WRU9MRFNOQVBTSE9UPSIiJywgMikKLSAgICBjLmV2ZW50KCJTZXRUYXJnZXRQYXRoIiwgIlRBUkdFVERJUiIsICdUYXJnZXRFeGlzdHM9MCBvciBSRU1PVkVPTERWRVJTSU9OPD4iIiBvciBSRU1PVkVPTERTTkFQU0hPVDw+IiInLCAzKQotICAgIGMuZXZlbnQoIlNwYXduV2FpdERpYWxvZyIsICJXYWl0Rm9yQ29zdGluZ0RsZyIsICJDb3N0aW5nQ29tcGxldGU9MSIsIDQpCi0gICAgYy5ldmVudCgiTmV3RGlhbG9nIiwgIlNlbGVjdEZlYXR1cmVzRGxnIiwgJ1RhcmdldEV4aXN0cz0wIG9yIFJFTU9WRU9MRFZFUlNJT048PiIiIG9yIFJFTU9WRU9MRFNOQVBTSE9UPD4iIicsIDUpCi0KLSAgICBjID0gc2VsZGxnLmNhbmNlbCgiQ2FuY2VsIiwgIkRpcmVjdG9yeUNvbWJvIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJDYW5jZWxEbGciKQotCi0gICAgc2VsZGxnLmNvbnRyb2woIkRpcmVjdG9yeUNvbWJvIiwgIkRpcmVjdG9yeUNvbWJvIiwgMTM1LCA3MCwgMTcyLCA4MCwgMzkzMjE5LAotICAgICAgICAgICAgICAgICAgICJUQVJHRVRESVIiLCBOb25lLCAiRGlyZWN0b3J5TGlzdCIsIE5vbmUpCi0gICAgc2VsZGxnLmNvbnRyb2woIkRpcmVjdG9yeUxpc3QiLCAiRGlyZWN0b3J5TGlzdCIsIDEzNSwgOTAsIDIwOCwgMTM2LCAzLCAiVEFSR0VURElSIiwKLSAgICAgICAgICAgICAgICAgICBOb25lLCAiUGF0aEVkaXQiLCBOb25lKQotICAgIHNlbGRsZy5jb250cm9sKCJQYXRoRWRpdCIsICJQYXRoRWRpdCIsIDEzNSwgMjMwLCAyMDYsIDE2LCAzLCAiVEFSR0VURElSIiwgTm9uZSwgIk5leHQiLCBOb25lKQotICAgIGMgPSBzZWxkbGcucHVzaGJ1dHRvbigiVXAiLCAzMDYsIDcwLCAxOCwgMTgsIDMsICJVcCIsIE5vbmUpCi0gICAgYy5ldmVudCgiRGlyZWN0b3J5TGlzdFVwIiwgIjAiKQotICAgIGMgPSBzZWxkbGcucHVzaGJ1dHRvbigiTmV3RGlyIiwgMzI0LCA3MCwgMzAsIDE4LCAzLCAiTmV3IiwgTm9uZSkKLSAgICBjLmV2ZW50KCJEaXJlY3RvcnlMaXN0TmV3IiwgIjAiKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBTZWxlY3RGZWF0dXJlc0RsZwotICAgIGZlYXR1cmVzID0gUHlEaWFsb2coZGIsICJTZWxlY3RGZWF0dXJlc0RsZyIsIHgsIHksIHcsIGgsIG1vZGFsfHRyYWNrX2Rpc2tfc3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSwgIlRyZWUiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIGZlYXR1cmVzLnRpdGxlKCJDdXN0b21pemUgW1Byb2R1Y3ROYW1lXSIpCi0gICAgZmVhdHVyZXMudGV4dCgiRGVzY3JpcHRpb24iLCAxMzUsIDM1LCAyMjAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgIlNlbGVjdCB0aGUgd2F5IHlvdSB3YW50IGZlYXR1cmVzIHRvIGJlIGluc3RhbGxlZC4iKQotICAgIGZlYXR1cmVzLnRleHQoIlRleHQiLCAxMzUsNDUsMjIwLDMwLCAzLAotICAgICAgICAgICAgICAgICAgIkNsaWNrIG9uIHRoZSBpY29ucyBpbiB0aGUgdHJlZSBiZWxvdyB0byBjaGFuZ2UgdGhlIHdheSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZC4iKQotCi0gICAgYz1mZWF0dXJlcy5iYWNrKCI8IEJhY2siLCAiTmV4dCIpCi0gICAgYy5ldmVudCgiTmV3RGlhbG9nIiwgIlNlbGVjdERpcmVjdG9yeURsZyIpCi0KLSAgICBjPWZlYXR1cmVzLm5leHQoIk5leHQgPiIsICJDYW5jZWwiKQotICAgIGMubWFwcGluZygiU2VsZWN0aW9uTm9JdGVtcyIsICJFbmFibGVkIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJEaXNrQ29zdERsZyIsICJPdXRPZkRpc2tTcGFjZT0xIiwgb3JkZXI9MSkKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIiwgIk91dE9mRGlza1NwYWNlPD4xIiwgb3JkZXI9MikKLQotICAgIGM9ZmVhdHVyZXMuY2FuY2VsKCJDYW5jZWwiLCAiVHJlZSIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgICMgVGhlIGJyb3dzZSBwcm9wZXJ0eSBpcyBub3QgdXNlZCwgc2luY2Ugd2UgaGF2ZSBvbmx5IGEgc2luZ2xlIHRhcmdldCBwYXRoIChzZWxlY3RlZCBhbHJlYWR5KQotICAgIGZlYXR1cmVzLmNvbnRyb2woIlRyZWUiLCAiU2VsZWN0aW9uVHJlZSIsIDEzNSwgNzUsIDIyMCwgOTUsIDcsICJfQnJvd3NlUHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgIlRyZWUgb2Ygc2VsZWN0aW9ucyIsICJCYWNrIiwgTm9uZSkKLQotICAgICNjPWZlYXR1cmVzLnB1c2hidXR0b24oIlJlc2V0IiwgNDIsIDI0MywgNTYsIDE3LCAzLCAiUmVzZXQiLCAiRGlza0Nvc3QiKQotICAgICNjLm1hcHBpbmcoIlNlbGVjdGlvbk5vSXRlbXMiLCAiRW5hYmxlZCIpCi0gICAgI2MuZXZlbnQoIlJlc2V0IiwgIjAiKQotCi0gICAgZmVhdHVyZXMuY29udHJvbCgiQm94IiwgIkdyb3VwQm94IiwgMTM1LCAxNzAsIDIyNSwgOTAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpCi0KLSAgICBjPWZlYXR1cmVzLnhidXR0b24oIkRpc2tDb3N0IiwgIkRpc2sgJlVzYWdlIiwgTm9uZSwgMC4xMCkKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbk5vSXRlbXMiLCJFbmFibGVkIikKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJEaXNrQ29zdERsZyIpCi0KLSAgICBjPWZlYXR1cmVzLnhidXR0b24oIkFkdmFuY2VkIiwgIkFkdmFuY2VkIiwgTm9uZSwgMC4zMCkKLSAgICBjLmV2ZW50KCJTcGF3bkRpYWxvZyIsICJBZHZhbmNlZERsZyIpCi0KLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDQwLCAzLAotICAgICAgICAgICAgICAgICAgIk11bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbkRlc2NyaXB0aW9uIiwiVGV4dCIpCi0KLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMjUsIDIxMCwgMzMsIDMsCi0gICAgICAgICAgICAgICAgICAgICJUaGUgc2l6ZSBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKLSAgICBjLm1hcHBpbmcoIlNlbGVjdGlvblNpemUiLCAiVGV4dCIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIERpc2sgY29zdAotICAgIGNvc3QgPSBQeURpYWxvZyhkYiwgIkRpc2tDb3N0RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAiT0siLCAiT0siLCAiT0siLCBiaXRtYXA9RmFsc2UpCi0gICAgY29zdC50ZXh0KCJUaXRsZSIsIDE1LCA2LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQotICAgIGNvc3QudGV4dCgiRGVzY3JpcHRpb24iLCAyMCwgMjAsIDI4MCwgMjAsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICJUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuIikKLSAgICBjb3N0LnRleHQoIlRleHQiLCAyMCwgNTMsIDMzMCwgNjAsIDMsCi0gICAgICAgICAgICAgICJUaGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcyAoaWYgYW55KSBkbyBub3QgaGF2ZSBlbm91Z2ggZGlzayBzcGFjZSAiCi0gICAgICAgICAgICAgICJhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZmVhdHVyZXMuICBZb3UgY2FuIGVpdGhlciAiCi0gICAgICAgICAgICAgICJyZW1vdmUgc29tZSBmaWxlcyBmcm9tIHRoZSBoaWdobGlnaHRlZCB2b2x1bWVzLCBvciBjaG9vc2UgdG8gIgotICAgICAgICAgICAgICAiaW5zdGFsbCBsZXNzIGZlYXR1cmVzIG9udG8gbG9jYWwgZHJpdmUocyksIG9yIHNlbGVjdCBkaWZmZXJlbnQgIgotICAgICAgICAgICAgICAiZGVzdGluYXRpb24gZHJpdmUocykuIikKLSAgICBjb3N0LmNvbnRyb2woIlZvbHVtZUxpc3QiLCAiVm9sdW1lQ29zdExpc3QiLCAyMCwgMTAwLCAzMzAsIDE1MCwgMzkzMjIzLAotICAgICAgICAgICAgICAgICBOb25lLCAiezEyMH17NzB9ezcwfXs3MH17NzB9IiwgTm9uZSwgTm9uZSkKLSAgICBjb3N0LnhidXR0b24oIk9LIiwgIk9rIiwgTm9uZSwgMC41KS5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIpCi0KLSAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAgICAjIFdoaWNoVXNlcnMgRGlhbG9nLiBPbmx5IGF2YWlsYWJsZSBvbiBOVCwgYW5kIGZvciBwcml2aWxlZ2VkIHVzZXJzLgotICAgICMgVGhpcyBtdXN0IGJlIHJ1biBiZWZvcmUgRmluZFJlbGF0ZWRQcm9kdWN0cywgYmVjYXVzZSB0aGF0IHdpbGwKLSAgICAjIHRha2UgaW50byBhY2NvdW50IHdoZXRoZXIgdGhlIHByZXZpb3VzIGluc3RhbGxhdGlvbiB3YXMgcGVyLXVzZXIKLSAgICAjIG9yIHBlci1tYWNoaW5lLiBXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBnb2luZyBiYWNrIHRvIHRoaXMKLSAgICAjIGRpYWxvZyBhZnRlciAiTmV4dCIgd2FzIHNlbGVjdGVkOyB0byBzdXBwb3J0IHRoaXMsIHdlIHdvdWxkIG5lZWQgdG8KLSAgICAjIGZpbmQgaG93IHRvIHJlc2V0IHRoZSBBTExVU0VSUyBwcm9wZXJ0eSwgYW5kIGhvdyB0byByZS1ydW4KLSAgICAjIEZpbmRSZWxhdGVkUHJvZHVjdHMuCi0gICAgIyBPbiBXaW5kb3dzOXgsIHRoZSBBTExVU0VSUyBwcm9wZXJ0eSBpcyBpZ25vcmVkIG9uIHRoZSBjb21tYW5kIGxpbmUKLSAgICAjIGFuZCBpbiB0aGUgUHJvcGVydHkgdGFibGUsIGJ1dCBpbnN0YWxsZXIgZmFpbHMgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uCi0gICAgIyBpZiBhIGRpYWxvZyBhdHRlbXB0cyB0byBzZXQgQUxMVVNFUlMuCi0gICAgd2hpY2h1c2VycyA9IFB5RGlhbG9nKGRiLCAiV2hpY2hVc2Vyc0RsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJBZG1pbkluc3RhbGwiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIHdoaWNodXNlcnMudGl0bGUoIlNlbGVjdCB3aGV0aGVyIHRvIGluc3RhbGwgW1Byb2R1Y3ROYW1lXSBmb3IgYWxsIHVzZXJzIG9mIHRoaXMgY29tcHV0ZXIuIikKLSAgICAjIEEgcmFkaW8gZ3JvdXAgd2l0aCB0d28gb3B0aW9uczogYWxsdXNlcnMsIGp1c3RtZQotICAgIGcgPSB3aGljaHVzZXJzLnJhZGlvZ3JvdXAoIkFkbWluSW5zdGFsbCIsIDEzNSwgNjAsIDIzNSwgODAsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2hpY2hVc2VycyIsICIiLCAiTmV4dCIpCi0gICAgZy5jb25kaXRpb24oIkRpc2FibGUiLCAiVmVyc2lvbk5UPTYwMCIpICMgTm90IGF2YWlsYWJsZSBvbiBWaXN0YSBhbmQgV2luZG93cyAyMDA4Ci0gICAgZy5hZGQoIkFMTCIsIDAsIDUsIDE1MCwgMjAsICJJbnN0YWxsIGZvciBhbGwgdXNlcnMiKQotICAgIGcuYWRkKCJKVVNUTUUiLCAwLCAyNSwgMjM1LCAyMCwgIkluc3RhbGwganVzdCBmb3IgbWUgKG5vdCBhdmFpbGFibGUgb24gV2luZG93cyBWaXN0YSkiKQotCi0gICAgd2hpY2h1c2Vycy5iYWNrKCJCYWNrIiwgTm9uZSwgYWN0aXZlPTApCi0KLSAgICBjID0gd2hpY2h1c2Vycy5uZXh0KCJOZXh0ID4iLCAiQ2FuY2VsIikKLSAgICBjLmV2ZW50KCJbQUxMVVNFUlNdIiwgIjEiLCAnV2hpY2hVc2Vycz0iQUxMIicsIDEpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIsIG9yZGVyID0gMikKLQotICAgIGMgPSB3aGljaHVzZXJzLmNhbmNlbCgiQ2FuY2VsIiwgIkFkbWluSW5zdGFsbCIpCi0gICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotICAgICMgQWR2YW5jZWQgRGlhbG9nLgotICAgIGFkdmFuY2VkID0gUHlEaWFsb2coZGIsICJBZHZhbmNlZERsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb21waWxlUHljIiwgIk9rIiwgIk9rIikKLSAgICBhZHZhbmNlZC50aXRsZSgiQWR2YW5jZWQgT3B0aW9ucyBmb3IgW1Byb2R1Y3ROYW1lXSIpCi0KLSAgICAjIEEgY2hlY2tib3ggd2hldGhlciB0byBidWlsZCBweWMgZmlsZXMKLSAgICBhZHZhbmNlZC5jaGVja2JveCgiQ29tcGlsZVB5YyIsIDEzNSwgNjAsIDIzMCwgNTAsIDMsCi0gICAgICAgICAgICAgICAgICAgICAgIkNPTVBJTEVBTEwiLCAiQ29tcGlsZSAucHkgZmlsZXMgdG8gYnl0ZSBjb2RlIGFmdGVyIGluc3RhbGxhdGlvbiIsICJPayIpCi0KLSAgICBjID0gYWR2YW5jZWQuY2FuY2VsKCJPayIsICJDb21waWxlUHljIiwgbmFtZT0iT2siKSAjIEJ1dHRvbiBqdXN0IGhhcyBsb2NhdGlvbiBvZiBjYW5jZWwgYnV0dG9uLgotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBFeGlzdGluZyBEaXJlY3RvcnkgZGlhbG9nCi0gICAgZGxnID0gRGlhbG9nKGRiLCAiRXhpc3RpbmdEaXJlY3RvcnlEbGciLCA1MCwgMzAsIDIwMCwgODAsIG1vZGFsLCB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAiTm8iLCAiTm8iLCAiTm8iKQotICAgIGRsZy50ZXh0KCJUaXRsZSIsIDEwLCAyMCwgMTgwLCA0MCwgMywKLSAgICAgICAgICAgICAiW1RBUkdFVERJUl0gZXhpc3RzLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzPyIpCi0gICAgYz1kbGcucHVzaGJ1dHRvbigiWWVzIiwgMzAsIDYwLCA1NSwgMTcsIDMsICJZZXMiLCAiTm8iKQotICAgIGMuZXZlbnQoIltUYXJnZXRFeGlzdHNdIiwgIjAiLCBvcmRlcj0xKQotICAgIGMuZXZlbnQoIltUYXJnZXRFeGlzdHNPa10iLCAiMSIsIG9yZGVyPTIpCi0gICAgYy5ldmVudCgiRW5kRGlhbG9nIiwgIlJldHVybiIsIG9yZGVyPTMpCi0gICAgYz1kbGcucHVzaGJ1dHRvbigiTm8iLCAxMTUsIDYwLCA1NSwgMTcsIDMsICJObyIsICJZZXMiKQotICAgIGMuZXZlbnQoIkVuZERpYWxvZyIsICJSZXR1cm4iKQotCi0gICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gICAgIyBJbnN0YWxsYXRpb24gUHJvZ3Jlc3MgZGlhbG9nIChtb2RlbGVzcykKLSAgICBwcm9ncmVzcyA9IFB5RGlhbG9nKGRiLCAiUHJvZ3Jlc3NEbGciLCB4LCB5LCB3LCBoLCBtb2RlbGVzcywgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiLCBiaXRtYXA9RmFsc2UpCi0gICAgcHJvZ3Jlc3MudGV4dCgiVGl0bGUiLCAyMCwgMTUsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCi0gICAgcHJvZ3Jlc3MudGV4dCgiVGV4dCIsIDM1LCA2NSwgMzAwLCAzMCwgMywKLSAgICAgICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgSW5zdGFsbGVyIFtQcm9ncmVzczJdIFtQcm9kdWN0TmFtZV0uICIKLSAgICAgICAgICAgICAgICAgICJUaGlzIG1heSB0YWtlIHNldmVyYWwgbWludXRlcy4iKQotICAgIHByb2dyZXNzLnRleHQoIlN0YXR1c0xhYmVsIiwgMzUsIDEwMCwgMzUsIDIwLCAzLCAiU3RhdHVzOiIpCi0KLSAgICBjPXByb2dyZXNzLnRleHQoIkFjdGlvblRleHQiLCA3MCwgMTAwLCB3LTcwLCAyMCwgMywgIlBvbmRlcmluZy4uLiIpCi0gICAgYy5tYXBwaW5nKCJBY3Rpb25UZXh0IiwgIlRleHQiKQotCi0gICAgI2M9cHJvZ3Jlc3MudGV4dCgiQWN0aW9uRGF0YSIsIDM1LCAxNDAsIDMwMCwgMjAsIDMsIE5vbmUpCi0gICAgI2MubWFwcGluZygiQWN0aW9uRGF0YSIsICJUZXh0IikKLQotICAgIGM9cHJvZ3Jlc3MuY29udHJvbCgiUHJvZ3Jlc3NCYXIiLCAiUHJvZ3Jlc3NCYXIiLCAzNSwgMTIwLCAzMDAsIDEwLCA2NTUzNywKLSAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgIlByb2dyZXNzIGRvbmUiLCBOb25lLCBOb25lKQotICAgIGMubWFwcGluZygiU2V0UHJvZ3Jlc3MiLCAiUHJvZ3Jlc3MiKQotCi0gICAgcHJvZ3Jlc3MuYmFjaygiPCBCYWNrIiwgIk5leHQiLCBhY3RpdmU9RmFsc2UpCi0gICAgcHJvZ3Jlc3MubmV4dCgiTmV4dCA+IiwgIkNhbmNlbCIsIGFjdGl2ZT1GYWxzZSkKLSAgICBwcm9ncmVzcy5jYW5jZWwoIkNhbmNlbCIsICJCYWNrIikuZXZlbnQoIlNwYXduRGlhbG9nIiwgIkNhbmNlbERsZyIpCi0KLSAgICAjIE1haW50ZW5hbmNlIHR5cGU6IHJlcGFpci91bmluc3RhbGwKLSAgICBtYWludCA9IFB5RGlhbG9nKGRiLCAiTWFpbnRlbmFuY2VUeXBlRGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAotICAgICAgICAgICAgICAgICAgICAgIk5leHQiLCAiTmV4dCIsICJDYW5jZWwiKQotICAgIG1haW50LnRpdGxlKCJXZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIFNldHVwIFdpemFyZCIpCi0gICAgbWFpbnQudGV4dCgiQm9keVRleHQiLCAxMzUsIDYzLCAyMzAsIDQyLCAzLAotICAgICAgICAgICAgICAgIlNlbGVjdCB3aGV0aGVyIHlvdSB3YW50IHRvIHJlcGFpciBvciByZW1vdmUgW1Byb2R1Y3ROYW1lXS4iKQotICAgIGc9bWFpbnQucmFkaW9ncm91cCgiUmVwYWlyUmFkaW9Hcm91cCIsIDEzNSwgMTA4LCAyMzAsIDYwLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgIk1haW50ZW5hbmNlRm9ybV9BY3Rpb24iLCAiIiwgIk5leHQiKQotICAgIGcuYWRkKCJDaGFuZ2UiLCAwLCAwLCAyMDAsIDE3LCAiJkNoYW5nZSBbUHJvZHVjdE5hbWVdIikKLSAgICBnLmFkZCgiUmVwYWlyIiwgMCwgMTgsIDIwMCwgMTcsICImUmVwYWlyIFtQcm9kdWN0TmFtZV0iKQotICAgIGcuYWRkKCJSZW1vdmUiLCAwLCAzNiwgMjAwLCAxNywgIlJlJm1vdmUgW1Byb2R1Y3ROYW1lXSIpCi0KLSAgICBtYWludC5iYWNrKCI8IEJhY2siLCBOb25lLCBhY3RpdmU9RmFsc2UpCi0gICAgYz1tYWludC5uZXh0KCJGaW5pc2giLCAiQ2FuY2VsIikKLSAgICAjIENoYW5nZSBpbnN0YWxsYXRpb246IENoYW5nZSBwcm9ncmVzcyBkaWFsb2cgdG8gIkNoYW5nZSIsIHRoZW4gYXNrCi0gICAgIyBmb3IgZmVhdHVyZSBzZWxlY3Rpb24KLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MxXSIsICJDaGFuZ2UiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iQ2hhbmdlIicsIDEpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMl0iLCAiY2hhbmdlcyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJDaGFuZ2UiJywgMikKLQotICAgICMgUmVpbnN0YWxsOiBDaGFuZ2UgcHJvZ3Jlc3MgZGlhbG9nIHRvICJSZXBhaXIiLCB0aGVuIGludm9rZSByZWluc3RhbGwKLSAgICAjIEFsc28gc2V0IGxpc3Qgb2YgcmVpbnN0YWxsZWQgZmVhdHVyZXMgdG8gIkFMTCIKLSAgICBjLmV2ZW50KCJbUkVJTlNUQUxMXSIsICJBTEwiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVwYWlyIicsIDUpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMV0iLCAiUmVwYWlyaW5nIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlcGFpciInLCA2KQotICAgIGMuZXZlbnQoIltQcm9ncmVzczJdIiwgInJlcGFpcnMiLCAnTWFpbnRlbmFuY2VGb3JtX0FjdGlvbj0iUmVwYWlyIicsIDcpCi0gICAgYy5ldmVudCgiUmVpbnN0YWxsIiwgIkFMTCIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZXBhaXIiJywgOCkKLQotICAgICMgVW5pbnN0YWxsOiBDaGFuZ2UgcHJvZ3Jlc3MgdG8gIlJlbW92ZSIsIHRoZW4gaW52b2tlIHVuaW5zdGFsbAotICAgICMgQWxzbyBzZXQgbGlzdCBvZiByZW1vdmVkIGZlYXR1cmVzIHRvICJBTEwiCi0gICAgYy5ldmVudCgiW1JFTU9WRV0iLCAiQUxMIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IlJlbW92ZSInLCAxMSkKLSAgICBjLmV2ZW50KCJbUHJvZ3Jlc3MxXSIsICJSZW1vdmluZyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTIpCi0gICAgYy5ldmVudCgiW1Byb2dyZXNzMl0iLCAicmVtb3ZlcyIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTMpCi0gICAgYy5ldmVudCgiUmVtb3ZlIiwgIkFMTCIsICdNYWludGVuYW5jZUZvcm1fQWN0aW9uPSJSZW1vdmUiJywgMTQpCi0KLSAgICAjIENsb3NlIGRpYWxvZyB3aGVuIG1haW50ZW5hbmNlIGFjdGlvbiBzY2hlZHVsZWQKLSAgICBjLmV2ZW50KCJFbmREaWFsb2ciLCAiUmV0dXJuIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb248PiJDaGFuZ2UiJywgMjApCi0gICAgYy5ldmVudCgiTmV3RGlhbG9nIiwgIlNlbGVjdEZlYXR1cmVzRGxnIiwgJ01haW50ZW5hbmNlRm9ybV9BY3Rpb249IkNoYW5nZSInLCAyMSkKLQotICAgIG1haW50LmNhbmNlbCgiQ2FuY2VsIiwgIlJlcGFpclJhZGlvR3JvdXAiKS5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQ2FuY2VsRGxnIikKLQotCi0jIFNlZSAiRmVhdHVyZSBUYWJsZSIuIFRoZSBmZWF0dXJlIGxldmVsIGlzIDEgZm9yIGFsbCBmZWF0dXJlcywKLSMgYW5kIHRoZSBmZWF0dXJlIGF0dHJpYnV0ZXMgYXJlIDAgZm9yIHRoZSBEZWZhdWx0RmVhdHVyZSwgYW5kCi0jIEZvbGxvd1BhcmVudCBmb3IgYWxsIG90aGVyIGZlYXR1cmVzLiBUaGUgbnVtYmVycyBhcmUgdGhlIERpc3BsYXkKLSMgY29sdW1uLgotZGVmIGFkZF9mZWF0dXJlcyhkYik6Ci0gICAgIyBmZWF0dXJlIGF0dHJpYnV0ZXM6Ci0gICAgIyBtc2lkYkZlYXR1cmVBdHRyaWJ1dGVzRm9sbG93UGFyZW50ID09IDIKLSAgICAjIG1zaWRiRmVhdHVyZUF0dHJpYnV0ZXNEaXNhbGxvd0FkdmVydGlzZSA9PSA4Ci0gICAgIyBGZWF0dXJlcyB0aGF0IG5lZWQgdG8gYmUgaW5zdGFsbGVkIHdpdGggdG9nZXRoZXIgd2l0aCB0aGUgbWFpbiBmZWF0dXJlCi0gICAgIyAoaS5lLiBhZGRpdGlvbmFsIFB5dGhvbiBsaWJyYXJpZXMpIG5lZWQgdG8gZm9sbG93IHRoZSBwYXJlbnQgZmVhdHVyZS4KLSAgICAjIEZlYXR1cmVzIHRoYXQgaGF2ZSBubyBhZHZlcnRpc2VtZW50IHRyaWdnZXIgKGUuZy4gdGhlIHRlc3Qgc3VpdGUpCi0gICAgIyBtdXN0IG5vdCBzdXBwb3J0IGFkdmVydGlzZW1lbnQKLSAgICBnbG9iYWwgZGVmYXVsdF9mZWF0dXJlLCB0Y2x0aywgaHRtbGZpbGVzLCB0b29scywgdGVzdHN1aXRlCi0gICAgZ2xvYmFsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydCwgcHJlcGVuZF9wYXRoLCBwaXBfZmVhdHVyZQotICAgIGRlZmF1bHRfZmVhdHVyZSA9IEZlYXR1cmUoZGIsICJEZWZhdWx0RmVhdHVyZSIsICJQeXRob24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBJbnRlcnByZXRlciBhbmQgTGlicmFyaWVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGRpcmVjdG9yeSA9ICJUQVJHRVRESVIiKQotICAgIHNoYXJlZF9jcnQgPSBGZWF0dXJlKGRiLCAiU2hhcmVkQ1JUIiwgIk1TVkNSVCIsICJDIFJ1bi1UaW1lIChzeXN0ZW0td2lkZSkiLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTApCi0gICAgcHJpdmF0ZV9jcnQgPSBGZWF0dXJlKGRiLCAiUHJpdmF0ZUNSVCIsICJNU1ZDUlQiLCAiQyBSdW4tVGltZSAocHJpdmF0ZSkiLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0wKQotICAgIGFkZF9kYXRhKGRiLCAiQ29uZGl0aW9uIiwgWygiU2hhcmVkQ1JUIiwgMSwgc3lzMzJjb25kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIlByaXZhdGVDUlQiLCAxLCAibm90ICIrc3lzMzJjb25kKV0pCi0gICAgIyBXZSBkb24ndCBzdXBwb3J0IGFkdmVydGlzZW1lbnQgb2YgZXh0ZW5zaW9ucwotICAgIGV4dF9mZWF0dXJlID0gRmVhdHVyZShkYiwgIkV4dGVuc2lvbnMiLCAiUmVnaXN0ZXIgRXh0ZW5zaW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJNYWtlIHRoaXMgUHl0aG9uIGluc3RhbGxhdGlvbiB0aGUgZGVmYXVsdCBQeXRob24gaW5zdGFsbGF0aW9uIiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9Mnw4KQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2x0ayA9IEZlYXR1cmUoZGIsICJUY2xUayIsICJUY2wvVGsiLCAiVGtpbnRlciwgSURMRSwgcHlkb2MiLCA1LAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBkZWZhdWx0X2ZlYXR1cmUsIGF0dHJpYnV0ZXM9MikKLSAgICBodG1sZmlsZXMgPSBGZWF0dXJlKGRiLCAiRG9jdW1lbnRhdGlvbiIsICJEb2N1bWVudGF0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gSFRNTEhlbHAgRmlsZSIsIDcsIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSkKLSAgICB0b29scyA9IEZlYXR1cmUoZGIsICJUb29scyIsICJVdGlsaXR5IFNjcmlwdHMiLAotICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKSIsIDksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yKQotICAgICMgcGlwIGluc3RhbGxhdGlvbiBpc24ndCBlbmFibGVkIGJ5IGRlZmF1bHQgdW50aWwgYSBjbGVhbiB1bmluc3RhbGwgcHJvY2VkdXJlCi0gICAgIyBiZWNvbWVzIHBvc3NpYmxlCi0gICAgcGlwX2ZlYXR1cmUgPSBGZWF0dXJlKGRiLCAicGlwX2ZlYXR1cmUiLCAicGlwIiwKLSAgICAgICAgICAgICAgICAgICAgIkluc3RhbGwgKG9yIHVwZ3JhZGUgZnJvbSBhbiBlYXJsaWVyIHZlcnNpb24pIHBpcCwgIgotICAgICAgICAgICAgICAgICAgICAiYSB0b29sIGZvciBpbnN0YWxsaW5nIGFuZCBtYW5hZ2luZyBQeXRob24gcGFja2FnZXMuIiwgMTEsCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCi0gICAgdGVzdHN1aXRlID0gRmVhdHVyZShkYiwgIlRlc3RzdWl0ZSIsICJUZXN0IHN1aXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gdGVzdCBzdWl0ZSAoTGliL3Rlc3QvKSIsIDEzLAotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCkKLSAgICAjIHByZXBlbmRfcGF0aCBpcyBhbiBhZGRpdGlvbmFsIGZlYXR1cmUgd2hpY2ggaXMgdG8gYmUgb2ZmIGJ5IGRlZmF1bHQuCi0gICAgIyBTaW5jZSB0aGUgZGVmYXVsdCBsZXZlbCBmb3IgdGhlIGFib3ZlIGZlYXR1cmVzIGlzIDEsIHRoaXMgbmVlZHMgdG8gYmUKLSAgICAjIGF0IGxlYXN0IGxldmVsIGhpZ2hlci4KLSAgICBwcmVwZW5kX3BhdGggPSBGZWF0dXJlKGRiLCAiUHJlcGVuZFBhdGgiLCAiQWRkIHB5dGhvbi5leGUgdG8gUGF0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGVuZCBbVEFSR0VURElSXSB0byB0aGUgc3lzdGVtIFBhdGggdmFyaWFibGUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSAncHl0aG9uJyBpbnRvIGEgY29tbWFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAicHJvbXB0IHdpdGhvdXQgbmVlZGluZyB0aGUgZnVsbCBwYXRoLiIsIDE1LAotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlLCBhdHRyaWJ1dGVzPTJ8OCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTIpCi0KLWRlZiBleHRyYWN0X21zdmNyMTAwKCk6Ci0gICAgIyBGaW5kIHRoZSByZWRpc3RyaWJ1dGFibGUgZmlsZXMKLSAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIGFyY2ggPSAieDY0IgotICAgIGVsc2U6Ci0gICAgICAgIGFyY2ggPSAieDg2IgotICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydWUzEwMENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkMxMDAuQ1JUIiAlIGFyY2gpCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGluc3RhbGxlciA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKLSAgICAjIEF0IGxlYXN0IGZvciBWUzIwMTAsIG1hbmlmZXN0cyBhcmUgbm8gbG9uZ2VyIHByb3ZpZGVkCi0gICAgbmFtZSA9ICJtc3ZjcjEwMC5kbGwiCi0gICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIG5hbWUpCi0gICAga3cgPSB7J3NyYyc6cGF0aH0KLSAgICBrd1sndmVyc2lvbiddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDApCi0gICAga3dbJ2xhbmd1YWdlJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMSkKLSAgICByZXR1cm4gbmFtZSwga3cKLQotZGVmIGdlbmVyYXRlX2xpY2Vuc2UoKToKLSAgICBpbXBvcnQgc2h1dGlsLCBnbG9iCi0gICAgb3V0ID0gb3BlbigiTElDRU5TRS50eHQiLCAidyIpCi0gICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgIkxJQ0VOU0UiKSksIG91dCkKLSAgICBzaHV0aWwuY29weWZpbGVvYmoob3BlbigiY3J0bGljZW5zZS50eHQiKSwgb3V0KQotICAgIGZvciBuYW1lLCBwYXQsIGZpbGUgaW4gKCgiYnppcDIiLCJiemlwMi0qIiwgIkxJQ0VOU0UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIm9wZW5zc2wiLCAib3BlbnNzbC0qIiwgIkxJQ0VOU0UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIlRjbCIsICJ0Y2w4KiIsICJsaWNlbnNlLnRlcm1zIiksCi0gICAgICAgICAgICAgICAgICAgICAgKCJUayIsICJ0azgqIiwgImxpY2Vuc2UudGVybXMiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIlRpeCIsICJ0aXgtKiIsICJsaWNlbnNlLnRlcm1zIikpOgotICAgICAgICBvdXQud3JpdGUoIlxuVGhpcyBjb3B5IG9mIFB5dGhvbiBpbmNsdWRlcyBhIGNvcHkgb2YgJXMsIHdoaWNoIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBmb2xsb3dpbmcgdGVybXM6XG5cbiIgJSBuYW1lKQotICAgICAgICBkaXJzID0gZ2xvYi5nbG9iKHNyY2RpcisiL2V4dGVybmFscy8iK3BhdCkKLSAgICAgICAgaWYgbm90IGRpcnM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yLCAiQ291bGQgbm90IGZpbmQgIitzcmNkaXIrIi9leHRlcm5hbHMvIitwYXQKLSAgICAgICAgaWYgbGVuKGRpcnMpID4gMiBhbmQgbm90IHNuYXBzaG90OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIk11bHRpcGxlIGNvcGllcyBvZiAiK3BhdAotICAgICAgICBkaXIgPSBkaXJzWzBdCi0gICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKG9zLnBhdGguam9pbihkaXIsIGZpbGUpKSwgb3V0KQotICAgIG91dC5jbG9zZSgpCi0KLQotY2xhc3MgUHlEaXJlY3RvcnkoRGlyZWN0b3J5KToKLSAgICAiIiJCeSBkZWZhdWx0LCBhbGwgY29tcG9uZW50cyBpbiB0aGUgUHl0aG9uIGluc3RhbGxlcgotICAgIGNhbiBydW4gZnJvbSBzb3VyY2UuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgaWYgImNvbXBvbmVudGZsYWdzIiBub3QgaW4ga3c6Ci0gICAgICAgICAgICBrd1snY29tcG9uZW50ZmxhZ3MnXSA9IDIgI21zaWRiQ29tcG9uZW50QXR0cmlidXRlc09wdGlvbmFsCi0gICAgICAgIERpcmVjdG9yeS5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprdykKLQotZGVmIGhnbWFuaWZlc3QoKToKLSAgICAjIEZldGNoIGZpbGUgbGlzdCBmcm9tIE1lcmN1cmlhbAotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnaGcnLCAnbWFuaWZlc3QnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICMgQ3JlYXRlIG5lc3RlZCBkaXJlY3RvcmllcyBmb3IgZmlsZSB0cmVlCi0gICAgcmVzdWx0ID0ge30KLSAgICBmb3IgbGluZSBpbiBzdGRvdXQuc3BsaXRsaW5lcygpOgotICAgICAgICBjb21wb25lbnRzID0gbGluZS5zcGxpdCgnLycpCi0gICAgICAgIGQgPSByZXN1bHQKLSAgICAgICAgd2hpbGUgbGVuKGNvbXBvbmVudHMpID4gMToKLSAgICAgICAgICAgIGQxID0gZC5zZXRkZWZhdWx0KGNvbXBvbmVudHNbMF0sIHt9KQotICAgICAgICAgICAgZCA9IGQxCi0gICAgICAgICAgICBkZWwgY29tcG9uZW50c1swXQotICAgICAgICBkW2NvbXBvbmVudHNbMF1dID0gTm9uZQotICAgIHJldHVybiByZXN1bHQKLQotCi0jIFNlZSAiRmlsZSBUYWJsZSIsICJDb21wb25lbnQgVGFibGUiLCAiRGlyZWN0b3J5IFRhYmxlIiwKLSMgIkZlYXR1cmVDb21wb25lbnRzIFRhYmxlIgotZGVmIGFkZF9maWxlcyhkYik6Ci0gICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQotICAgIGhnZmlsZXMgPSBoZ21hbmlmZXN0KCkKLSAgICBjYWIgPSBDQUIoInB5dGhvbiIpCi0gICAgdG1wZmlsZXMgPSBbXQotICAgICMgQWRkIGFsbCBleGVjdXRhYmxlcywgaWNvbnMsIHRleHQgZmlsZXMgaW50byB0aGUgVEFSR0VURElSIGNvbXBvbmVudAotICAgIHJvb3QgPSBQeURpcmVjdG9yeShkYiwgY2FiLCBOb25lLCBzcmNkaXIsICJUQVJHRVRESVIiLCAiU291cmNlRGlyIikKLSAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQotICAgIHJvb3QuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgcm9vdC5hZGRfZmlsZSgiTkVXUy50eHQiLCBzcmM9Ik1pc2MvTkVXUyIpCi0gICAgZ2VuZXJhdGVfbGljZW5zZSgpCi0gICAgcm9vdC5hZGRfZmlsZSgiTElDRU5TRS50eHQiLCBzcmM9b3MucGF0aC5hYnNwYXRoKCJMSUNFTlNFLnR4dCIpKQotICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJweXRob24uZXhlIiwga2V5ZmlsZT0icHl0aG9uLmV4ZSIpCi0gICAgcm9vdC5hZGRfZmlsZSgiJXMvcHl0aG9uLmV4ZSIgJSBQQ0JVSUxEKQotICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJweXRob253LmV4ZSIsIGtleWZpbGU9InB5dGhvbncuZXhlIikKLSAgICByb290LmFkZF9maWxlKCIlcy9weXRob253LmV4ZSIgJSBQQ0JVSUxEKQotCi0gICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNTaGFyZWREbGxSZWZDb3VudCA9IDgsIHNlZSAiQ29tcG9uZW50IFRhYmxlIgotICAgIGRsbGRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkRMTERJUiIsICIuIikKLSAgICBsYXVuY2hlcmRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkxBVU5DSEVSRElSIiwgIi4iKQotCi0gICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXM2NGJpdCA9IDI1NjsgdGhpcyBkaXNhYmxlcyByZWdpc3RyeSByZWRpcmVjdGlvbgotICAgICMgdG8gYWxsb3cgc2V0dGluZyB0aGUgU2hhcmVkRExMcyBrZXkgaW4gdGhlIDY0LWJpdCBwb3J0aW9uIGV2ZW4gZm9yIGEKLSAgICAjIDMyLWJpdCBpbnN0YWxsZXIuCi0gICAgIyBYWFggZG9lcyB0aGlzIHN0aWxsIGFsbG93IHRvIGluc3RhbGwgdGhlIGNvbXBvbmVudCBvbiBhIDMyLWJpdCBzeXN0ZW0/Ci0gICAgIyBQaWNrIHVwIDMyLWJpdCBiaW5hcnkgYWx3YXlzCi0gICAgbGF1bmNoZXJzcmMgPSBQQ0JVSUxECi0gICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxceDY0LXBnbyc6Ci0gICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGRcXHdpbjMyLXBnbycKLSAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFxhbWQ2NCc6Ci0gICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGQnCi0gICAgbGF1bmNoZXIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5LmV4ZSIpCi0gICAgbGF1bmNoZXJkaXIuc3RhcnRfY29tcG9uZW50KCJsYXVuY2hlciIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5LmV4ZSIpCi0gICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXIsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMSkpCi0gICAgbGF1bmNoZXJ3ID0gb3MucGF0aC5qb2luKHNyY2RpciwgbGF1bmNoZXJzcmMsICJweXcuZXhlIikKLSAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVydyIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5dy5leGUiKQotICAgIGxhdW5jaGVyZGlyLmFkZF9maWxlKGxhdW5jaGVydywKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlcncsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlcncsIDEpKQotCi0gICAgcHlkbGwgPSAicHl0aG9uJXMlcy5kbGwiICUgKG1ham9yLCBtaW5vcikKLSAgICBweWRsbHNyYyA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsIHB5ZGxsKQotICAgIGRsbGRpci5zdGFydF9jb21wb25lbnQoIkRMTERJUiIsIGZsYWdzID0gOCwga2V5ZmlsZSA9IHB5ZGxsLCB1dWlkID0gcHl0aG9uZGxsX3V1aWQpCi0gICAgcHl2ZXJzaW9uID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHB5ZGxsc3JjLCAwKQotICAgIGlmIG5vdCBzbmFwc2hvdDoKLSAgICAgICAgIyBGb3IgcmVsZWFzZXMsIHRoZSBQeXRob24gRExMIGhhcyB0aGUgc2FtZSB2ZXJzaW9uIGFzIHRoZQotICAgICAgICAjIGluc3RhbGxlciBwYWNrYWdlLgotICAgICAgICBhc3NlcnQgcHl2ZXJzaW9uLnNwbGl0KCIuIilbOjNdID09IGN1cnJlbnRfdmVyc2lvbi5zcGxpdCgiLiIpCi0gICAgZGxsZGlyLmFkZF9maWxlKCIlcy9weXRob24lcyVzLmRsbCIgJSAoUENCVUlMRCwgbWFqb3IsIG1pbm9yKSwKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1weXZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihweWRsbHNyYywgMSkpCi0gICAgRExMcyA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciArICIvIiArIFBDQlVJTEQsICJETExzIiwgIkRMTFN8RExMcyIpCi0KLSAgICAjIG1zdmNyOTAuZGxsOiBOZWVkIHRvIHBsYWNlIHRoZSBETEwgYW5kIHRoZSBtYW5pZmVzdCBpbnRvIHRoZSByb290IGRpcmVjdG9yeSwKLSAgICAjIHBsdXMgYW5vdGhlciBjb3B5IG9mIHRoZSBtYW5pZmVzdCBpbiB0aGUgRExMcyBkaXJlY3RvcnksIHdpdGggdGhlIG1hbmlmZXN0Ci0gICAgIyBwb2ludGluZyB0byB0aGUgcm9vdCBkaXJlY3RvcnkKLSAgICByb290LnN0YXJ0X2NvbXBvbmVudCgibXN2Y3I5MCIsIGZlYXR1cmU9cHJpdmF0ZV9jcnQpCi0gICAgIyBSZXN1bHRzIGFyZSBJRCxrZXl3b3JkIHBhaXJzCi0gICAgY3J0ZGxsLCBrd2RzID0gZXh0cmFjdF9tc3ZjcjEwMCgpCi0gICAgcm9vdC5hZGRfZmlsZShjcnRkbGwsICoqa3dkcykKLSAgICAjIENvcHkgdGhlIG1hbmlmZXN0Ci0gICAgIyBBY3R1YWxseSwgZG9uJ3QgZG8gdGhhdCBhbnltb3JlIC0gbm8gRExMIGluIERMTHMgc2hvdWxkIGhhdmUgYSBtYW5pZmVzdAotICAgICMgZGVwZW5kZW5jeSBvbiBtc3ZjcjkwLmRsbCBhbnltb3JlLCBzbyB0aGlzIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5Ci0gICAgI21hbmlmZXN0X2RsbHMgPSBtYW5pZmVzdFswXSsiLnJvb3QiCi0gICAgI29wZW4obWFuaWZlc3RfZGxscywgInciKS53cml0ZShvcGVuKG1hbmlmZXN0WzFdWydzcmMnXSkucmVhZCgpLnJlcGxhY2UoIm1zdmNyIiwiLi4vbXN2Y3IiKSkKLSAgICAjRExMcy5zdGFydF9jb21wb25lbnQoIm1zdmNyOTBfZGxscyIsIGZlYXR1cmU9cHJpdmF0ZV9jcnQpCi0gICAgI0RMTHMuYWRkX2ZpbGUobWFuaWZlc3RbMF0sIHNyYz1vcy5wYXRoLmFic3BhdGgobWFuaWZlc3RfZGxscykpCi0KLSAgICAjIE5vdyBzdGFydCB0aGUgbWFpbiBjb21wb25lbnQgZm9yIHRoZSBETExzIGRpcmVjdG9yeTsKLSAgICAjIG5vIHJlZ3VsYXIgZmlsZXMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBkaXJlY3RvcnkgeWV0LgotICAgIERMTHMuc3RhcnRfY29tcG9uZW50KCkKLQotICAgICMgQ2hlY2sgaWYgX2N0eXBlcy5weWQgZXhpc3RzCi0gICAgaGF2ZV9jdHlwZXMgPSBvcy5wYXRoLmV4aXN0cyhzcmNkaXIrIi8lcy9fY3R5cGVzLnB5ZCIgJSBQQ0JVSUxEKQotICAgIGlmIG5vdCBoYXZlX2N0eXBlczoKLSAgICAgICAgcHJpbnQoIldBUk5JTkc6IF9jdHlwZXMucHlkIG5vdCBmb3VuZCwgY3R5cGVzIHdpbGwgbm90IGJlIGluY2x1ZGVkIikKLSAgICAgICAgZXh0ZW5zaW9ucy5yZW1vdmUoIl9jdHlwZXMucHlkIikKLQotICAgICMgQWRkIGFsbCAucHkgZmlsZXMgaW4gTGliLCBleGNlcHQgdGtpbnRlciwgdGVzdAotICAgIGRpcnMgPSBbXQotICAgIHB5ZGlycyA9IFsocm9vdCwgIkxpYiIsIGhnZmlsZXNbIkxpYiJdLCBkZWZhdWx0X2ZlYXR1cmUpXQotICAgIHdoaWxlIHB5ZGlyczoKLSAgICAgICAgIyBDb21taXQgZXZlcnkgbm93IGFuZCB0aGVuLCBvciBlbHNlIGluc3RhbGxlciB3aWxsIGNvbXBsYWluCi0gICAgICAgIGRiLkNvbW1pdCgpCi0gICAgICAgIHBhcmVudCwgZGlyLCBmaWxlcywgZmVhdHVyZSA9IHB5ZGlycy5wb3AoKQotICAgICAgICBpZiBkaXIuc3RhcnRzd2l0aCgicGxhdC0iKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIGRpciBpbiBbInRraW50ZXIiLCAiaWRsZWxpYiIsICJ0dXJ0bGVkZW1vIl06Ci0gICAgICAgICAgICBpZiBub3QgaGF2ZV90Y2w6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZlYXR1cmUgPSB0Y2x0awotICAgICAgICAgICAgdGNsdGsuc2V0X2N1cnJlbnQoKQotICAgICAgICBlbGlmIGRpciBpbiAoJ3Rlc3QnLCAndGVzdHMnKToKLSAgICAgICAgICAgIGZlYXR1cmUgPSB0ZXN0c3VpdGUKLSAgICAgICAgZWxpZiBub3QgaGF2ZV9jdHlwZXMgYW5kIGRpciA9PSAiY3R5cGVzIjoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZlYXR1cmUuc2V0X2N1cnJlbnQoKQotICAgICAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCBwYXJlbnQsIGRpciwgZGlyLCAiJXN8JXMiICUgKHBhcmVudC5tYWtlX3Nob3J0KGRpciksIGRpcikpCi0gICAgICAgIGRpcnMuYXBwZW5kKGxpYikKLSAgICAgICAgaGFzX3B5ID0gRmFsc2UKLSAgICAgICAgZm9yIG5hbWUsIHN1YmRpciBpbiBmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgaWYgc3ViZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQotICAgICAgICAgICAgICAgIGlmIG5hbWUgPT0gJ1JFQURNRSc6Ci0gICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgaGFzX3B5ID0gaGFzX3B5IG9yIG5hbWUuZW5kc3dpdGgoIi5weSIpIG9yIG5hbWUuZW5kc3dpdGgoIi5weXciKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBuYW1lKSkKLSAgICAgICAgICAgICAgICBweWRpcnMuYXBwZW5kKChsaWIsIG5hbWUsIHN1YmRpciwgZmVhdHVyZSkpCi0KLSAgICAgICAgaWYgaGFzX3B5OgotICAgICAgICAgICAgbGliLnJlbW92ZV9weWMoKQotICAgICMgQWRkIERMTHMKLSAgICBkZWZhdWx0X2ZlYXR1cmUuc2V0X2N1cnJlbnQoKQotICAgIGxpYiA9IERMTHMKLSAgICBsaWIuYWRkX2ZpbGUoInB5LmljbyIsIHNyYz1zcmNkaXIrIi9QQy9weS5pY28iKQotICAgIGxpYi5hZGRfZmlsZSgicHljLmljbyIsIHNyYz1zcmNkaXIrIi9QQy9weWMuaWNvIikKLSAgICBkbGxzID0gW10KLSAgICB0Y2xmaWxlcyA9IFtdCi0gICAgZm9yIGYgaW4gZXh0ZW5zaW9uczoKLSAgICAgICAgaWYgZj09Il90a2ludGVyLnB5ZCI6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3JjZGlyICsgIi8iICsgUENCVUlMRCArICIvIiArIGYpOgotICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IE1pc3NpbmcgZXh0ZW5zaW9uIiwgZikKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGRsbHMuYXBwZW5kKGYpCi0gICAgICAgIGxpYi5hZGRfZmlsZShmKQotICAgIGxpYi5hZGRfZmlsZSgncHl0aG9uMy5kbGwnKQotICAgICMgQWRkIHNxbGl0ZQotICAgIGlmIG1zaWxpYi5tc2lfdHlwZT09IkludGVsNjQ7MTAzMyI6Ci0gICAgICAgIHNxbGl0ZV9hcmNoID0gIi9pYTY0IgotICAgIGVsaWYgbXNpbGliLm1zaV90eXBlPT0ieDY0OzEwMzMiOgotICAgICAgICBzcWxpdGVfYXJjaCA9ICIvYW1kNjQiCi0gICAgICAgIHRjbHN1ZmZpeCA9ICI2NCIKLSAgICBlbHNlOgotICAgICAgICBzcWxpdGVfYXJjaCA9ICIiCi0gICAgICAgIHRjbHN1ZmZpeCA9ICIiCi0gICAgbGliLmFkZF9maWxlKCJzcWxpdGUzLmRsbCIpCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygiJXMvJXMvX3RraW50ZXIucHlkIiAlIChzcmNkaXIsIFBDQlVJTEQpKToKLSAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBNaXNzaW5nIF90a2ludGVyLnB5ZCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaWIuc3RhcnRfY29tcG9uZW50KCJUa0RMTHMiLCB0Y2x0aykKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiX3RraW50ZXIucHlkIikKLSAgICAgICAgICAgIGRsbHMuYXBwZW5kKCJfdGtpbnRlci5weWQiKQotICAgICAgICAgICAgdGNsZGlyID0gb3MucGF0aC5ub3JtcGF0aChzcmNkaXIrKCIvZXh0ZXJuYWxzL3RjbHRrJXMvYmluIiAlIHRjbHN1ZmZpeCkpCi0gICAgICAgICAgICBmb3IgZiBpbiBnbG9iLmdsb2IxKHRjbGRpciwgIiouZGxsIik6Ci0gICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKGYsIHNyYz1vcy5wYXRoLmpvaW4odGNsZGlyLCBmKSkKLSAgICAjIGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB1bmtub3duIGV4dGVuc2lvbnMKLSAgICBmb3IgZiBpbiBnbG9iLmdsb2IxKHNyY2RpcisiLyIrUENCVUlMRCwgIioucHlkIik6Ci0gICAgICAgIGlmIGYuZW5kc3dpdGgoIl9kLnB5ZCIpOiBjb250aW51ZSAjIGRlYnVnIHZlcnNpb24KLSAgICAgICAgaWYgZiBpbiBkbGxzOiBjb250aW51ZQotICAgICAgICBwcmludCgiV0FSTklORzogVW5rbm93biBleHRlbnNpb24iLCBmKQotCi0gICAgIyBBZGQgaGVhZGVycwotICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCi0gICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgImluY2x1ZGUiLCAiaW5jbHVkZSIsICJJTkNMVURFfGluY2x1ZGUiKQotICAgIGxpYi5nbG9iKCIqLmgiKQotICAgIGxpYi5hZGRfZmlsZSgicHljb25maWcuaCIsIHNyYz0iLi4vUEMvcHljb25maWcuaCIpCi0gICAgIyBBZGQgaW1wb3J0IGxpYnJhcmllcwotICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIFBDQlVJTEQsICJsaWJzIiwgIkxJQlN8bGlicyIpCi0gICAgZm9yIGYgaW4gZGxsczoKLSAgICAgICAgbGliLmFkZF9maWxlKGYucmVwbGFjZSgncHlkJywnbGliJykpCi0gICAgbGliLmFkZF9maWxlKCdweXRob24lcyVzLmxpYicgJSAobWFqb3IsIG1pbm9yKSkKLSAgICBsaWIuYWRkX2ZpbGUoJ3B5dGhvbjMubGliJykKLSAgICAjIEFkZCB0aGUgbWluZ3ctZm9ybWF0IGxpYnJhcnkKLSAgICBpZiBoYXZlX21pbmd3OgotICAgICAgICBsaWIuYWRkX2ZpbGUoJ2xpYnB5dGhvbiVzJXMuYScgJSAobWFqb3IsIG1pbm9yKSkKLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgIyBBZGQgVGNsL1RrCi0gICAgICAgIHRjbGRpcnMgPSBbKHJvb3QsICdleHRlcm5hbHMvdGNsdGslcy9saWInICUgdGNsc3VmZml4LCAndGNsJyldCi0gICAgICAgIHRjbHRrLnNldF9jdXJyZW50KCkKLSAgICAgICAgd2hpbGUgdGNsZGlyczoKLSAgICAgICAgICAgIHBhcmVudCwgcGh5cywgZGlyID0gdGNsZGlycy5wb3AoKQotICAgICAgICAgICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcGFyZW50LCBwaHlzLCBkaXIsICIlc3wlcyIgJSAocGFyZW50Lm1ha2Vfc2hvcnQoZGlyKSwgZGlyKSkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWIuYWJzb2x1dGUpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGxpYi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBmKSk6Ci0gICAgICAgICAgICAgICAgICAgIHRjbGRpcnMuYXBwZW5kKChsaWIsIGYsIGYpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShmKQotICAgICMgQWRkIHRvb2xzCi0gICAgdG9vbHMuc2V0X2N1cnJlbnQoKQotICAgIHRvb2xkaXIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCByb290LCAiVG9vbHMiLCAiVG9vbHMiLCAiVE9PTFN8VG9vbHMiKQotICAgIGZvciBmIGluIFsnaTE4bicsICdweW5jaGUnLCAnU2NyaXB0cyddOgotICAgICAgICBsaWIgPSBQeURpcmVjdG9yeShkYiwgY2FiLCB0b29sZGlyLCBmLCBmLCAiJXN8JXMiICUgKHRvb2xkaXIubWFrZV9zaG9ydChmKSwgZikpCi0gICAgICAgIGxpYi5nbG9iKCIqLnB5IikKLSAgICAgICAgbGliLmdsb2IoIioucHl3IikKLSAgICAgICAgbGliLnJlbW92ZV9weWMoKQotICAgICAgICBsaWIuZ2xvYigiKi50eHQiKQotICAgICAgICBpZiBmID09ICJweW5jaGUiOgotICAgICAgICAgICAgeCA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIGxpYiwgIlgiLCAiWCIsICJYfFgiKQotICAgICAgICAgICAgeC5nbG9iKCIqLnR4dCIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsICJSRUFETUUiKSk6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCi0gICAgICAgIGlmIGYgPT0gJ1NjcmlwdHMnOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCIydG8zLnB5Iiwgc3JjPSIydG8zIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHlkb2MzLnB5Iiwgc3JjPSJweWRvYzMiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweXZlbnYucHkiLCBzcmM9InB5dmVudiIpCi0gICAgIyBBZGQgZG9jdW1lbnRhdGlvbgotICAgIGh0bWxmaWxlcy5zZXRfY3VycmVudCgpCi0gICAgbGliID0gUHlEaXJlY3RvcnkoZGIsIGNhYiwgcm9vdCwgIkRvYyIsICJEb2MiLCAiRE9DfERvYyIpCi0gICAgbGliLnN0YXJ0X2NvbXBvbmVudCgiZG9jdW1lbnRhdGlvbiIsIGtleWZpbGU9ZG9jZmlsZSkKLSAgICBsaWIuYWRkX2ZpbGUoZG9jZmlsZSwgc3JjPSJidWlsZC9odG1saGVscC8iK2RvY2ZpbGUpCi0KLSAgICBjYWIuY29tbWl0KGRiKQotCi0gICAgZm9yIGYgaW4gdG1wZmlsZXM6Ci0gICAgICAgIG9zLnVubGluayhmKQotCi0jIFNlZSAiUmVnaXN0cnkgVGFibGUiLCAiQ29tcG9uZW50IFRhYmxlIgotZGVmIGFkZF9yZWdpc3RyeShkYik6Ci0gICAgIyBGaWxlIGV4dGVuc2lvbnMsIGFzc29jaWF0ZWQgd2l0aCB0aGUgUkVHSVNUUlkuZGVmIGNvbXBvbmVudAotICAgICMgSURMRSB2ZXJicyBkZXBlbmQgb24gdGhlIHRjbHRrIGZlYXR1cmUuCi0gICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNSZWdpc3RyeUtleVBhdGggPSA0Ci0gICAgIyAtMSBmb3IgUm9vdCBzcGVjaWZpZXMgImRlcGVuZGVudCBvbiBBTExVU0VSUyBwcm9wZXJ0eSIKLSAgICB0Y2xkYXRhID0gW10KLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgdGNsZGF0YSA9IFsKLSAgICAgICAgICAgICgiUkVHSVNUUlkudGNsIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCi0gICAgICAgICAgICAgInB5LklETEUiKV0KLSAgICBhZGRfZGF0YShkYiwgIkNvbXBvbmVudCIsCi0gICAgICAgICAgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNSZWdpc3RyeUtleVBhdGggPSA0Ci0gICAgICAgICAgICAgWygiUkVHSVNUUlkiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKLSAgICAgICAgICAgICAgICJJbnN0YWxsUGF0aCIpLAotICAgICAgICAgICAgICAoIlJFR0lTVFJZLmRvYyIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAotICAgICAgICAgICAgICAgIkRvY3VtZW50YXRpb24iKSwKLSAgICAgICAgICAgICAgKCJSRUdJU1RSWS5wYXRoIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsIE5vbmUsCi0gICAgICAgICAgICAgIE5vbmUpLAotICAgICAgICAgICAgICAoIlJFR0lTVFJZLmVuc3VyZXBpcCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCAiRW5zdXJlUGlwUnVuIiwKLSAgICAgICAgICAgICAgTm9uZSksCi0gICAgICAgICAgICAgICgiUkVHSVNUUlkuZGVmIiwgbXNpbGliLmdlbl91dWlkKCksICJUQVJHRVRESVIiLCByZWdpc3RyeV9jb21wb25lbnQsCi0gICAgICAgICAgICAgICBOb25lLCBOb25lKV0gKyB0Y2xkYXRhKQotICAgICMgU2VlICJGZWF0dXJlQ29tcG9uZW50cyBUYWJsZSIuCi0gICAgIyBUaGUgYXNzb2NpYXRpb24gYmV0d2VlbiBUY2xUayBhbmQgcHl0aG9udy5leGUgaXMgbmVjZXNzYXJ5IHRvIG1ha2UgSUNFNTkKLSAgICAjIGhhcHB5LCBiZWNhdXNlIHRoZSBpbnN0YWxsZXIgb3RoZXJ3aXNlIGJlbGlldmVzIHRoYXQgdGhlIElETEUgYW5kIFB5RG9jCi0gICAgIyBzaG9ydGN1dHMgbWlnaHQgZ2V0IGluc3RhbGxlZCB3aXRob3V0IHB5dGhvbncuZXhlIGJlaW5nIGluc3RhbGwuIFRoaXMKLSAgICAjIGlzIG5vdCB0cnVlLCBzaW5jZSBpbnN0YWxsaW5nIFRjbFRrIHdpbGwgaW5zdGFsbCB0aGUgZGVmYXVsdCBmZWF0dXJlLCB3aGljaAotICAgICMgd2lsbCBjYXVzZSBweXRob253LmV4ZSB0byBiZSBpbnN0YWxsZWQuCi0gICAgIyBSRUdJU1RSWS50Y2wgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgZmVhdHVyZSwgYXMgaXQgd2lsbCBiZSByZXF1ZXN0ZWQKLSAgICAjIHRocm91Z2ggYSBjdXN0b20gYWN0aW9uCi0gICAgdGNsZGF0YSA9IFtdCi0gICAgaWYgaGF2ZV90Y2w6Ci0gICAgICAgIHRjbGRhdGEgPSBbKHRjbHRrLmlkLCAicHl0aG9udy5leGUiKV0KLSAgICBhZGRfZGF0YShkYiwgIkZlYXR1cmVDb21wb25lbnRzIiwKLSAgICAgICAgICAgICBbKGRlZmF1bHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgIChodG1sZmlsZXMuaWQsICJSRUdJU1RSWS5kb2MiKSwKLSAgICAgICAgICAgICAgKHByZXBlbmRfcGF0aC5pZCwgIlJFR0lTVFJZLnBhdGgiKSwKLSAgICAgICAgICAgICAgKHBpcF9mZWF0dXJlLmlkLCAiUkVHSVNUUlkuZW5zdXJlcGlwIiksCi0gICAgICAgICAgICAgIChleHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZLmRlZiIpXSArCi0gICAgICAgICAgICAgIHRjbGRhdGEKLSAgICAgICAgICAgICAgKQotICAgICMgRXh0ZW5zaW9ucyBhcmUgbm90IGFkdmVydGlzZWQuIEZvciBhZHZlcnRpc2VkIGV4dGVuc2lvbnMsCi0gICAgIyB3ZSB3b3VsZCBuZWVkIHNlcGFyYXRlIGJpbmFyaWVzIHRoYXQgaW5zdGFsbCBhbG9uZyB3aXRoIHRoZQotICAgICMgZXh0ZW5zaW9uLgotICAgIHBhdCA9IHIiU29mdHdhcmVcQ2xhc3Nlc1wlc1B5dGhvbi4lc0ZpbGVcc2hlbGxcJXNcY29tbWFuZCIKLSAgICBld2kgPSAiRWRpdCB3aXRoIElETEUiCi0gICAgcGF0MiA9IHIiU29mdHdhcmVcQ2xhc3Nlc1wlc1B5dGhvbi4lc0ZpbGVcRGVmYXVsdEljb24iCi0gICAgcGF0MyA9IHIiU29mdHdhcmVcQ2xhc3Nlc1wlc1B5dGhvbi4lc0ZpbGUiCi0gICAgcGF0NCA9IHIiU29mdHdhcmVcQ2xhc3Nlc1wlc1B5dGhvbi4lc0ZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIKLSAgICB0Y2xfdmVyYnMgPSBbXQotICAgIGlmIGhhdmVfdGNsOgotICAgICAgICB0Y2xfdmVyYnM9WwotICAgICAgICAgICAgICgicHkuSURMRSIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIiIsIGV3aSksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbncuZXhlIiAiW1RBUkdFVERJUl1MaWJcaWRsZWxpYlxpZGxlLnB5dyIgLWUgIiUxIicsCi0gICAgICAgICAgICAgICJSRUdJU1RSWS50Y2wiKSwKLSAgICAgICAgICAgICAoInB5dy5JRExFIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiTm9Db24iLCBld2kpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob253LmV4ZSIgIltUQVJHRVRESVJdTGliXGlkbGVsaWJcaWRsZS5weXciIC1lICIlMSInLAotICAgICAgICAgICAgICAiUkVHSVNUUlkudGNsIiksCi0gICAgICAgIF0KLSAgICBhZGRfZGF0YShkYiwgIlJlZ2lzdHJ5IiwKLSAgICAgICAgICAgIFsjIEV4dGVuc2lvbnMKLSAgICAgICAgICAgICAoInB5LmV4dCIsIC0xLCByIlNvZnR3YXJlXENsYXNzZXNcLiIrZXh0LCAiIiwKLSAgICAgICAgICAgICAgIlB5dGhvbi5GaWxlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3LmV4dCIsIC0xLCByIlNvZnR3YXJlXENsYXNzZXNcLiIrZXh0Kyd3JywgIiIsCi0gICAgICAgICAgICAgICJQeXRob24uTm9Db25GaWxlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHljLmV4dCIsIC0xLCByIlNvZnR3YXJlXENsYXNzZXNcLiIrZXh0KydjJywgIiIsCi0gICAgICAgICAgICAgICJQeXRob24uQ29tcGlsZWRGaWxlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHlvLmV4dCIsIC0xLCByIlNvZnR3YXJlXENsYXNzZXNcLiIrZXh0KydvJywgIiIsCi0gICAgICAgICAgICAgICJQeXRob24uQ29tcGlsZWRGaWxlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICMgTUlNRSB0eXBlcwotICAgICAgICAgICAgICgicHkubWltZSIsIC0xLCByIlNvZnR3YXJlXENsYXNzZXNcLiIrZXh0LCAiQ29udGVudCBUeXBlIiwKLSAgICAgICAgICAgICAgInRleHQvcGxhaW4iLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweXcubWltZSIsIC0xLCByIlNvZnR3YXJlXENsYXNzZXNcLiIrZXh0Kyd3JywgIkNvbnRlbnQgVHlwZSIsCi0gICAgICAgICAgICAgICJ0ZXh0L3BsYWluIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICNWZXJicwotICAgICAgICAgICAgICgicHkub3BlbiIsIC0xLCBwYXQgJSAodGVzdHByZWZpeCwgIiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHkuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJOb0NvbiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHl3LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW0xBVU5DSEVSRElSXXB5LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICBdICsgdGNsX3ZlcmJzICsgWwotICAgICAgICAgICAgICNJY29ucwotICAgICAgICAgICAgICgicHkuaWNvbiIsIC0xLCBwYXQyICUgKHRlc3RwcmVmaXgsICIiKSwgIiIsCi0gICAgICAgICAgICAgIHInW0RMTHNdcHkuaWNvJywgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3Lmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiTm9Db24iKSwgIiIsCi0gICAgICAgICAgICAgIHInW0RMTHNdcHkuaWNvJywgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHljLmljb24iLCAtMSwgcGF0MiAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiKSwgIiIsCi0gICAgICAgICAgICAgIHInW0RMTHNdcHljLmljbycsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAjIERlc2NyaXB0aW9ucwotICAgICAgICAgICAgICgicHkudHh0IiwgLTEsIHBhdDMgJSAodGVzdHByZWZpeCwgIiIpLCAiIiwKLSAgICAgICAgICAgICAgIlB5dGhvbiBGaWxlIiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgICgicHl3LnR4dCIsIC0xLCBwYXQzICUgKHRlc3RwcmVmaXgsICJOb0NvbiIpLCAiIiwKLSAgICAgICAgICAgICAgIlB5dGhvbiBGaWxlIChubyBjb25zb2xlKSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5Yy50eHQiLCAtMSwgcGF0MyAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiKSwgIiIsCi0gICAgICAgICAgICAgICJDb21waWxlZCBQeXRob24gRmlsZSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAjIERyb3AgSGFuZGxlcgotICAgICAgICAgICAgICgicHkuZHJvcCIsIC0xLCBwYXQ0ICUgKHRlc3RwcmVmaXgsICIiKSwgIiIsCi0gICAgICAgICAgICAgICJ7NjAyNTRDQTUtOTUzQi0xMUNGLThDOTYtMDBBQTAwQjg3MDhDfSIsICJSRUdJU1RSWS5kZWYiKSwKLSAgICAgICAgICAgICAoInB5dy5kcm9wIiwgLTEsIHBhdDQgJSAodGVzdHByZWZpeCwgIk5vQ29uIiksICIiLAotICAgICAgICAgICAgICAiezYwMjU0Q0E1LTk1M0ItMTFDRi04Qzk2LTAwQUEwMEI4NzA4Q30iLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgKCJweWMuZHJvcCIsIC0xLCBwYXQ0ICUgKHRlc3RwcmVmaXgsICJDb21waWxlZCIpLCAiIiwKLSAgICAgICAgICAgICAgIns2MDI1NENBNS05NTNCLTExQ0YtOEM5Ni0wMEFBMDBCODcwOEN9IiwgIlJFR0lTVFJZLmRlZiIpLAotICAgICAgICAgICAgXSkKLQotICAgICMgUEFUSEVYVAotICAgIGFkZF9kYXRhKGRiLCAiRW52aXJvbm1lbnQiLAotICAgICAgICAgICAgIFsoIlBhdGhFeHRBZGRpdGlvbiIsICI9LSpQYXRoRXh0IiwgIlt+XTsuUFkiLCAiUkVHSVNUUlkuZGVmIildKQotCi0gICAgIyBSZWdpc3RyeSBrZXlzCi0gICAgcHJlZml4ID0gciJTb2Z0d2FyZVwlc1B5dGhvblxQeXRob25Db3JlXCVzIiAlICh0ZXN0cHJlZml4LCBzaG9ydF92ZXJzaW9uKQotICAgIGFkZF9kYXRhKGRiLCAiUmVnaXN0cnkiLAotICAgICAgICAgICAgIFsoIkluc3RhbGxQYXRoIiwgLTEsIHByZWZpeCtyIlxJbnN0YWxsUGF0aCIsICIiLCAiW1RBUkdFVERJUl0iLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgKCJJbnN0YWxsR3JvdXAiLCAtMSwgcHJlZml4K3IiXEluc3RhbGxQYXRoXEluc3RhbGxHcm91cCIsICIiLAotICAgICAgICAgICAgICAgIlB5dGhvbiAlcyIgJSBzaG9ydF92ZXJzaW9uLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgKCJQeXRob25QYXRoIiwgLTEsIHByZWZpeCtyIlxQeXRob25QYXRoIiwgIiIsCi0gICAgICAgICAgICAgICByIltUQVJHRVRESVJdTGliO1tUQVJHRVRESVJdRExMcyIsICJSRUdJU1RSWSIpLAotICAgICAgICAgICAgICAoIkRvY3VtZW50YXRpb24iLCAtMSwgcHJlZml4K3IiXEhlbHBcTWFpbiBQeXRob24gRG9jdW1lbnRhdGlvbiIsICIiLAotICAgICAgICAgICAgICAgIltUQVJHRVRESVJdRG9jXFwiK2RvY2ZpbGUgLCAiUkVHSVNUUlkuZG9jIiksCi0gICAgICAgICAgICAgICgiTW9kdWxlcyIsIC0xLCBwcmVmaXgrciJcTW9kdWxlcyIsICIrIiwgTm9uZSwgIlJFR0lTVFJZIiksCi0gICAgICAgICAgICAgICgiQXBwUGF0aHMiLCAtMSwgciJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxBcHAgUGF0aHNcUHl0aG9uLmV4ZSIsCi0gICAgICAgICAgICAgICAiIiwgciJbVEFSR0VURElSXVB5dGhvbi5leGUiLCAiUkVHSVNUUlkuZGVmIiksCi0gICAgICAgICAgICAgICgiRGlzcGxheUljb24iLCAtMSwKLSAgICAgICAgICAgICAgIHIiU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3NcQ3VycmVudFZlcnNpb25cVW5pbnN0YWxsXCVzIiAlIHByb2R1Y3RfY29kZSwKLSAgICAgICAgICAgICAgICJEaXNwbGF5SWNvbiIsICJbVEFSR0VURElSXXB5dGhvbi5leGUiLCAiUkVHSVNUUlkiKSwKLSAgICAgICAgICAgICAgIyBGYWtlIHJlZ2lzdHJ5IGVudHJ5IHRvIGFsbG93IGluc3RhbGxlciB0byB0cmFjayB3aGV0aGVyIGVuc3VyZXBpcCBoYXMgYmVlbiBydW4KLSAgICAgICAgICAgICAgKCJFbnN1cmVQaXBSdW4iLCAtMSwgcHJlZml4K3IiXEVuc3VyZVBpcFJ1biIsICIiLCAiIzEiLCAiUkVHSVNUUlkuZW5zdXJlcGlwIiksCi0gICAgICAgICAgICAgIF0pCi0gICAgIyBTaG9ydGN1dHMsIHNlZSAiU2hvcnRjdXQgVGFibGUiCi0gICAgYWRkX2RhdGEoZGIsICJEaXJlY3RvcnkiLAotICAgICAgICAgICAgIFsoIlByb2dyYW1NZW51Rm9sZGVyIiwgIlRBUkdFVERJUiIsICIuIiksCi0gICAgICAgICAgICAgICgiTWVudURpciIsICJQcm9ncmFtTWVudUZvbGRlciIsICJQWSVzJXN8JXNQeXRob24gJXMuJXMiICUgKG1ham9yLG1pbm9yLHRlc3RwcmVmaXgsbWFqb3IsbWlub3IpKV0pCi0gICAgYWRkX2RhdGEoZGIsICJSZW1vdmVGaWxlIiwKLSAgICAgICAgICAgICBbKCJNZW51RGlyIiwgIlRBUkdFVERJUiIsIE5vbmUsICJNZW51RGlyIiwgMildKQotICAgIHRjbHRrc2hvcnRjdXRzID0gW10KLSAgICBpZiBtc2lsaWIuV2luNjQ6Ci0gICAgICAgIGJpdHRlZCA9ICI2NCBiaXQiCi0gICAgZWxzZToKLSAgICAgICAgYml0dGVkID0gIjMyIGJpdCIKLSAgICBpZiBoYXZlX3RjbDoKLSAgICAgICAgdGNsdGtzaG9ydGN1dHMgPSBbCi0gICAgICAgICAgICAgICgiSURMRSIsICJNZW51RGlyIiwKLSAgICAgICAgICAgICAgICJJRExFfElETEUgKFB5dGhvbiAiK3Nob3J0X3ZlcnNpb24rIiBHVUkgLSAiK2JpdHRlZCsiKSIsCi0gICAgICAgICAgICAgICAicHl0aG9udy5leGUiLCB0Y2x0ay5pZCwgciciW1RBUkdFVERJUl1MaWJcaWRsZWxpYlxpZGxlLnB5dyInLAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgInB5dGhvbl9pY29uLmV4ZSIsIDAsIE5vbmUsICJUQVJHRVRESVIiKSwKLSAgICAgICAgICAgICAgXQotICAgIGFkZF9kYXRhKGRiLCAiU2hvcnRjdXQiLAotICAgICAgICAgICAgIHRjbHRrc2hvcnRjdXRzICsKLSAgICAgICAgICAgICBbIyBBZHZlcnRpc2VkIHNob3J0Y3V0czogdGFyZ2V0cyBhcmUgZmVhdHVyZXMsIG5vdCBmaWxlcwotICAgICAgICAgICAgICAoIlB5dGhvbiIsICJNZW51RGlyIiwKLSAgICAgICAgICAgICAgICJQWVRIT058UHl0aG9uICIrc2hvcnRfdmVyc2lvbisiIChjb21tYW5kIGxpbmUgLSAiK2JpdHRlZCsiKSIsCi0gICAgICAgICAgICAgICAicHl0aG9uLmV4ZSIsIGRlZmF1bHRfZmVhdHVyZS5pZCwgTm9uZSwgTm9uZSwgTm9uZSwKLSAgICAgICAgICAgICAgICJweXRob25faWNvbi5leGUiLCAyLCBOb25lLCAiVEFSR0VURElSIiksCi0gICAgICAgICAgICAgICMgQWR2ZXJ0aXNpbmcgdGhlIE1hbnVhbCBicmVha3Mgb24gKHNvbWU/KSBXaW45OCwgYW5kIHRoZSBzaG9ydGN1dCBsYWNrcyBhbgotICAgICAgICAgICAgICAjIGljb24gZmlyc3QuCi0gICAgICAgICAgICAgICMoIk1hbnVhbCIsICJNZW51RGlyIiwgIk1BTlVBTHxQeXRob24gTWFudWFscyIsICJkb2N1bWVudGF0aW9uIiwKLSAgICAgICAgICAgICAgIyBodG1sZmlsZXMuaWQsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotICAgICAgICAgICAgICAjIyBOb24tYWR2ZXJ0aXNlZCBzaG9ydGN1dHM6IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgcmVnaXN0cnkgY29tcG9uZW50Ci0gICAgICAgICAgICAgICgiTWFudWFsIiwgIk1lbnVEaXIiLCAiTUFOVUFMfFB5dGhvbiAiK3Nob3J0X3ZlcnNpb24rIiBNYW51YWxzIiwKLSAgICAgICAgICAgICAgICJSRUdJU1RSWS5kb2MiLCAiWyMlc10iICUgZG9jZmlsZSwKLSAgICAgICAgICAgICAgIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotICAgICAgICAgICAgICAoIlB5RG9jIiwgIk1lbnVEaXIiLAotICAgICAgICAgICAgICAgIk1PRERPQ1N8UHl0aG9uICIrc2hvcnRfdmVyc2lvbisiIERvY3MgU2VydmVyIChweWRvYyAtICIrCi0gICAgICAgICAgICAgICBiaXR0ZWQrIikiLCAicHl0aG9uLmV4ZSIsIGRlZmF1bHRfZmVhdHVyZS5pZCwgcictbSBweWRvYyAtYicsCi0gICAgICAgICAgICAgICBOb25lLCBOb25lLCAicHl0aG9uX2ljb24uZXhlIiwgMCwgTm9uZSwgIlRBUkdFVERJUiIpLAotICAgICAgICAgICAgICAoIlVuaW5zdGFsbCIsICJNZW51RGlyIiwgIlVOSU5TVHxVbmluc3RhbGwgUHl0aG9uICIrCi0gICAgICAgICAgICAgICBzaG9ydF92ZXJzaW9uKyIgKCIrYml0dGVkKyIpIiwgIlJFR0lTVFJZIiwKLSAgICAgICAgICAgICAgIFN5c3RlbUZvbGRlck5hbWUrIm1zaWV4ZWMiLCAgIi94JXMiICUgcHJvZHVjdF9jb2RlLAotICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0gICAgICAgICAgICAgIF0pCi0gICAgZGIuQ29tbWl0KCkKLQotZGVmIGJ1aWxkX3BkYnppcCgpOgotICAgIHBkYmV4Y2x1ZGUgPSBbJ2tpbGxfcHl0aG9uLnBkYicsICdtYWtlX2J1aWxkaW5mby5wZGInLAotICAgICAgICAgICAgICAgICAgJ21ha2VfdmVyc2lvbmluZm8ucGRiJ10KLSAgICBwYXRoID0gInB5dGhvbi0lcyVzLXBkYi56aXAiICUgKGZ1bGxfY3VycmVudF92ZXJzaW9uLCBtc2lsaWIuYXJjaF9leHQpCi0gICAgcGRiemlwID0gemlwZmlsZS5aaXBGaWxlKHBhdGgsICd3JykKLSAgICBmb3IgZiBpbiBnbG9iLmdsb2IxKG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQpLCAiKi5wZGIiKToKLSAgICAgICAgaWYgZiBub3QgaW4gcGRiZXhjbHVkZSBhbmQgbm90IGYuZW5kc3dpdGgoJ19kLnBkYicpOgotICAgICAgICAgICAgcGRiemlwLndyaXRlKG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsIGYpLCBmKQotICAgIHBkYnppcC5jbG9zZSgpCi0KLWRiLG1zaW5hbWUgPSBidWlsZF9kYXRhYmFzZSgpCi10cnk6Ci0gICAgYWRkX2ZlYXR1cmVzKGRiKQotICAgIGFkZF91aShkYikKLSAgICBhZGRfZmlsZXMoZGIpCi0gICAgYWRkX3JlZ2lzdHJ5KGRiKQotICAgIHJlbW92ZV9vbGRfdmVyc2lvbnMoZGIpCi0gICAgZGIuQ29tbWl0KCkKLWZpbmFsbHk6Ci0gICAgZGVsIGRiCi0KLSMgTWVyZ2UgQ1JUIGludG8gTVNJIGZpbGUuIFRoaXMgcmVxdWlyZXMgdGhlIGRhdGFiYXNlIHRvIGJlIGNsb3NlZC4KLW1vZF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsiUHJvZ3JhbUZpbGVzIl0sICJDb21tb24gRmlsZXMiLCAiTWVyZ2UgTW9kdWxlcyIpCi1pZiBtc2lsaWIuV2luNjQ6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDMTAwX0NSVF94NjQubXNtIl0KLWVsc2U6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDMTAwX0NSVF94ODYubXNtIl0KLQotZm9yIGksIG4gaW4gZW51bWVyYXRlKG1vZHVsZXMpOgotICAgIG1vZHVsZXNbaV0gPSBvcy5wYXRoLmpvaW4obW9kX2RpciwgbikKLQotZGVmIG1lcmdlKG1zaSwgZmVhdHVyZSwgcm9vdGRpciwgbW9kdWxlcyk6Ci0gICAgY2FiX2FuZF9maWxlY291bnQgPSBbXQotICAgICMgU3RlcCAxOiBNZXJnZSBkYXRhYmFzZXMsIGV4dHJhY3QgY2FiZmlsZXMKLSAgICBtID0gbXNpbGliLk1ha2VNZXJnZTIoKQotICAgIG0uT3BlbkxvZygibWVyZ2UubG9nIikKLSAgICBtLk9wZW5EYXRhYmFzZShtc2kpCi0gICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVzOgotICAgICAgICBwcmludCBtb2R1bGUKLSAgICAgICAgbS5PcGVuTW9kdWxlKG1vZHVsZSwwKQotICAgICAgICBtLk1lcmdlKGZlYXR1cmUsIHJvb3RkaXIpCi0gICAgICAgIHByaW50ICJFcnJvcnM6IgotICAgICAgICBmb3IgZSBpbiBtLkVycm9yczoKLSAgICAgICAgICAgIHByaW50IGUuVHlwZSwgZS5Nb2R1bGVUYWJsZSwgZS5EYXRhYmFzZVRhYmxlCi0gICAgICAgICAgICBwcmludCAiICAgTW9ka2V5czoiLAotICAgICAgICAgICAgZm9yIHMgaW4gZS5Nb2R1bGVLZXlzOiBwcmludCBzLAotICAgICAgICAgICAgcHJpbnQKLSAgICAgICAgICAgIHByaW50ICIgICBEQktleXM6IiwKLSAgICAgICAgICAgIGZvciBzIGluIGUuRGF0YWJhc2VLZXlzOiBwcmludCBzLAotICAgICAgICAgICAgcHJpbnQKLSAgICAgICAgY2FibmFtZSA9IHRlbXBmaWxlLm1rdGVtcChzdWZmaXg9Ii5jYWIiKQotICAgICAgICBtLkV4dHJhY3RDQUIoY2FibmFtZSkKLSAgICAgICAgY2FiX2FuZF9maWxlY291bnQuYXBwZW5kKChjYWJuYW1lLCBsZW4obS5Nb2R1bGVGaWxlcykpKQotICAgICAgICBtLkNsb3NlTW9kdWxlKCkKLSAgICBtLkNsb3NlRGF0YWJhc2UoVHJ1ZSkKLSAgICBtLkNsb3NlTG9nKCkKLQotICAgICMgU3RlcCAyOiBBZGQgQ0FCIGZpbGVzCi0gICAgaSA9IG1zaWxpYi5NYWtlSW5zdGFsbGVyKCkKLSAgICBkYiA9IGkuT3BlbkRhdGFiYXNlKG1zaSwgY29uc3RhbnRzLm1zaU9wZW5EYXRhYmFzZU1vZGVUcmFuc2FjdCkKLQotICAgIHYgPSBkYi5PcGVuVmlldygiU0VMRUNUIExhc3RTZXF1ZW5jZSBGUk9NIE1lZGlhIikKLSAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICBtYXhtZWRpYSA9IC0xCi0gICAgd2hpbGUgMToKLSAgICAgICAgciA9IHYuRmV0Y2goKQotICAgICAgICBpZiBub3QgcjogYnJlYWsKLSAgICAgICAgc2VxID0gci5JbnRlZ2VyRGF0YSgxKQotICAgICAgICBpZiBzZXEgPiBtYXhtZWRpYToKLSAgICAgICAgICAgIG1heG1lZGlhID0gc2VxCi0gICAgcHJpbnQgIlN0YXJ0IG9mIE1lZGlhIiwgbWF4bWVkaWEKLQotICAgIGZvciBjYWJuYW1lLCBjb3VudCBpbiBjYWJfYW5kX2ZpbGVjb3VudDoKLSAgICAgICAgc3RyZWFtID0gIm1lcmdlZCVkIiAlIG1heG1lZGlhCi0gICAgICAgIG1zaWxpYi5hZGRfZGF0YShkYiwgIk1lZGlhIiwKLSAgICAgICAgICAgICAgICBbKG1heG1lZGlhKzEsIG1heG1lZGlhK2NvdW50LCBOb25lLCAiIyIrc3RyZWFtLCBOb25lLCBOb25lKV0pCi0gICAgICAgIG1zaWxpYi5hZGRfc3RyZWFtKGRiLCBzdHJlYW0sICBjYWJuYW1lKQotICAgICAgICBvcy51bmxpbmsoY2FibmFtZSkKLSAgICAgICAgbWF4bWVkaWEgKz0gY291bnQKLSAgICAjIFRoZSBtZXJnZSBtb2R1bGUgc2V0cyBBTExVU0VSUyB0byAxIGluIHRoZSBwcm9wZXJ0eSB0YWJsZS4KLSAgICAjIFRoaXMgaXMgdW5kZXNpcmVkOyBkZWxldGUgdGhhdAotICAgIHYgPSBkYi5PcGVuVmlldygiREVMRVRFIEZST00gUHJvcGVydHkgV0hFUkUgUHJvcGVydHk9J0FMTFVTRVJTJyIpCi0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgdi5DbG9zZSgpCi0gICAgZGIuQ29tbWl0KCkKLQotbWVyZ2UobXNpbmFtZSwgIlNoYXJlZENSVCIsICJUQVJHRVRESVIiLCBtb2R1bGVzKQotCi0jIGNlcnRuYW1lIChmcm9tIGNvbmZpZy5weSkgc2hvdWxkIGJlIChhIHN1YnN0cmluZyBvZikKLSMgdGhlIGNlcnRpZmljYXRlIHN1YmplY3QsIGUuZy4gIlB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIgotaWYgY2VydG5hbWU6Ci0gICAgb3Muc3lzdGVtKCdzaWdudG9vbCBzaWduIC9uICIlcyIgJwotICAgICAgJy90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAnCi0gICAgICAnL2QgIlB5dGhvbiAlcyIgJwotICAgICAgJyVzJyAlIChjZXJ0bmFtZSwgZnVsbF9jdXJyZW50X3ZlcnNpb24sIG1zaW5hbWUpKQotCi1pZiBwZGJ6aXA6Ci0gICAgYnVpbGRfcGRiemlwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kudGFyZ2V0cyBiL1Rvb2xzL21zaS9tc2kudGFyZ2V0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDMxZGMyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL21zaS50YXJnZXRzCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisKKyAgICA8VGFyZ2V0IE5hbWU9IlByb2Nlc3NJbnN0YWxsRmlsZXMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IkAoSW5zdGFsbEZpbGVzKSAhPSAnJyI+CisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPF9GaWxlTGlzdFRhcmdldD4kKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChNU0J1aWxkUHJvamVjdE5hbWUpLmcuY3N2PC9fRmlsZUxpc3RUYXJnZXQ+CisgICAgICAgICAgICA8X0luc3RhbGxGaWxlc1RhcmdldD4kKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChNU0J1aWxkUHJvamVjdE5hbWUpLmcud3hzPC9fSW5zdGFsbEZpbGVzVGFyZ2V0PgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgICAgIAorICAgICAgICA8SXRlbUdyb3VwPgorICAgICAgICAgICAgPEluc3RhbGxGaWxlcz4KKyAgICAgICAgICAgICAgICA8X1NvdXJjZT4lKFNvdXJjZSkkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoU291cmNlQmFzZSksICUoRnVsbFBhdGgpKSk8L19Tb3VyY2U+CisgICAgICAgICAgICAgICAgPF9UYXJnZXQ+JShUYXJnZXRfKSQoW21zYnVpbGRdOjpNYWtlUmVsYXRpdmUoJShUYXJnZXRCYXNlKSwgJShGdWxsUGF0aCkpKTwvX1RhcmdldD4KKyAgICAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICAgICAgCisgICAgICAgIDxXcml0ZUxpbmVzVG9GaWxlIEZpbGU9IiQoX0ZpbGVMaXN0VGFyZ2V0KSIgTGluZXM9IkAoSW5zdGFsbEZpbGVzLT4nJnF1b3Q7JShfU291cmNlKSZxdW90OywmcXVvdDslKF9UYXJnZXQpJnF1b3Q7LCZxdW90OyUoR3JvdXApJnF1b3Q7LCZxdW90OyUoRGlza0lkKSZxdW90OywmcXVvdDslKENvbmRpdGlvbikmcXVvdDsnKSIgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSciJChQeXRob25FeGUpIiBjc3ZfdG9fd3hzLnB5ICIkKF9GaWxlTGlzdFRhcmdldCkiICIkKF9JbnN0YWxsRmlsZXNUYXJnZXQpIicKKyAgICAgICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIiAvPgorCisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKF9GaWxlTGlzdFRhcmdldCk7JChfSW5zdGFsbEZpbGVzVGFyZ2V0KSIgLz4KKyAgICAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9IiQoX0luc3RhbGxGaWxlc1RhcmdldCkiIC8+CisgICAgICAgIDwvSXRlbUdyb3VwPgorICAgIDwvVGFyZ2V0PgorCisgICAgPFRhcmdldCBOYW1lPSJfVHJhbnNmb3JtV3hsVGVtcGxhdGVzIiBBZnRlclRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgSW5wdXRzPSJAKFd4bFRlbXBsYXRlKTskKFB5U291cmNlUGF0aClpbmNsdWRlXHBhdGNobGV2ZWwuaCIgT3V0cHV0cz0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoRmlsZW5hbWUpLnd4bCI+CisgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICAgICAgPF9Db250ZW50PiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShXeGxUZW1wbGF0ZS5GdWxsUGF0aCkpLlJlcGxhY2UoYHt7U2hvcnRWZXJzaW9ufX1gLCBgJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKWApLlJlcGxhY2UoYHt7TG9uZ1ZlcnNpb259fWAsIGAkKFB5dGhvblZlcnNpb24pYCkuUmVwbGFjZShge3tCaXRuZXNzfX1gLCBgJChCaXRuZXNzKWApKTwvX0NvbnRlbnQ+CisgICAgICAgICAgICA8X0V4aXN0aW5nQ29udGVudCBDb25kaXRpb249IkV4aXN0cygnJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoV3hsVGVtcGxhdGUuRmlsZW5hbWUpLnd4bCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKFd4bFRlbXBsYXRlLkZpbGVuYW1lKS53eGwpKTwvX0V4aXN0aW5nQ29udGVudD4KKyAgICAgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgICAgICAKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoV3hsVGVtcGxhdGUuRmlsZW5hbWUpLnd4bCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZXM9IiQoX0NvbnRlbnQpIgorICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVyd3JpdGU9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbj0iJChfQ29udGVudCkgIT0gJChfRXhpc3RpbmdDb250ZW50KSIgLz4KKyAgICAgICAgCisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShXeGxUZW1wbGF0ZS5GaWxlbmFtZSkud3hsIiAvPgorICAgICAgICAgICAgPEZpbGVXcml0ZXMgSW5jbHVkZT0iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSUoV3hsVGVtcGxhdGUuRmlsZW5hbWUpLnd4bCIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgPC9UYXJnZXQ+CisKKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoV2l4VGFyZ2V0c1BhdGgpIiAvPgorCisgICAgPFRhcmdldCBOYW1lPSJTaWduQ2FicyI+CisgICAgICAgIDxFcnJvciBUZXh0PSJVbmFibGUgdG8gbG9jYXRlIHNpZ250b29sLmV4ZS4gU2V0IC9wOlNpZ25Ub29sUGF0aCBhbmQgcmVidWlsZCIgQ29uZGl0aW9uPSInJChfU2lnbkNvbW1hbmQpJyA9PSAnJyIgLz4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iJChfU2lnbkNvbW1hbmQpIEAoU2lnbkNhYnMtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgQ29udGludWVPbkVycm9yPSJmYWxzZSIgLz4KKyAgICA8L1RhcmdldD4KKyAgICA8VGFyZ2V0IE5hbWU9IlNpZ25Nc2kiPgorICAgICAgICA8RXJyb3IgVGV4dD0iVW5hYmxlIHRvIGxvY2F0ZSBzaWdudG9vbC5leGUuIFNldCAvcDpTaWduVG9vbFBhdGggYW5kIHJlYnVpbGQiIENvbmRpdGlvbj0iJyQoX1NpZ25Db21tYW5kKScgPT0gJyciIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiQoX1NpZ25Db21tYW5kKSBAKFNpZ25Nc2ktPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgQ29udGludWVPbkVycm9yPSJmYWxzZSIgLz4KKyAgICA8L1RhcmdldD4KKyAgICA8VGFyZ2V0IE5hbWU9IlNpZ25CdW5kbGVFbmdpbmUiPgorICAgICAgICA8RXJyb3IgVGV4dD0iVW5hYmxlIHRvIGxvY2F0ZSBzaWdudG9vbC5leGUuIFNldCAvcDpTaWduVG9vbFBhdGggYW5kIHJlYnVpbGQiIENvbmRpdGlvbj0iJyQoX1NpZ25Db21tYW5kKScgPT0gJyciIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiQoX1NpZ25Db21tYW5kKSBAKFNpZ25CdW5kbGVFbmdpbmUtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgQ29udGludWVPbkVycm9yPSJmYWxzZSIgLz4KKyAgICA8L1RhcmdldD4KKyAgICA8VGFyZ2V0IE5hbWU9IlNpZ25CdW5kbGUiPgorICAgICAgICA8RXJyb3IgVGV4dD0iVW5hYmxlIHRvIGxvY2F0ZSBzaWdudG9vbC5leGUuIFNldCAvcDpTaWduVG9vbFBhdGggYW5kIHJlYnVpbGQiIENvbmRpdGlvbj0iJyQoX1NpZ25Db21tYW5kKScgPT0gJyciIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiQoX1NpZ25Db21tYW5kKSBAKFNpZ25CdW5kbGUtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgQ29udGludWVPbkVycm9yPSJmYWxzZSIgLz4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpbGliLnB5IGIvVG9vbHMvbXNpL21zaWxpYi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIwOGI5MS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvbXNpbGliLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjc5ICswLDAgQEAKLSMgTWljcm9zb2Z0IEluc3RhbGxlciBMaWJyYXJ5Ci0jIChDKSAyMDAzIE1hcnRpbiB2LiBMb2V3aXMKLQotaW1wb3J0IHdpbjMyY29tLmNsaWVudC5nZW5jYWNoZQotaW1wb3J0IHdpbjMyY29tLmNsaWVudAotaW1wb3J0IHB5dGhvbmNvbSwgcHl3aW50eXBlcwotZnJvbSB3aW4zMmNvbS5jbGllbnQgaW1wb3J0IGNvbnN0YW50cwotaW1wb3J0IHJlLCBzdHJpbmcsIG9zLCBzZXRzLCBnbG9iLCBzdWJwcm9jZXNzLCBzeXMsIF93aW5yZWcsIHN0cnVjdCwgX21zaQotCi10cnk6Ci0gICAgYmFzZXN0cmluZwotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBiYXNlc3RyaW5nID0gKHN0ciwgdW5pY29kZSkKLQotIyBQYXJ0aWFsbHkgdGFrZW4gZnJvbSBXaW5lCi1kYXRhc2l6ZW1hc2s9ICAgICAgMHgwMGZmCi10eXBlX3ZhbGlkPSAgICAgICAgMHgwMTAwCi10eXBlX2xvY2FsaXphYmxlPSAgMHgwMjAwCi0KLXR5cGVtYXNrPSAgICAgICAgICAweDBjMDAKLXR5cGVfbG9uZz0gICAgICAgICAweDAwMDAKLXR5cGVfc2hvcnQ9ICAgICAgICAweDA0MDAKLXR5cGVfc3RyaW5nPSAgICAgICAweDBjMDAKLXR5cGVfYmluYXJ5PSAgICAgICAweDA4MDAKLQotdHlwZV9udWxsYWJsZT0gICAgIDB4MTAwMAotdHlwZV9rZXk9ICAgICAgICAgIDB4MjAwMAotIyBYWFggdGVtcG9yYXJ5LCBsb2NhbGl6YWJsZT8KLWtub3duYml0cyA9IGRhdGFzaXplbWFzayB8IHR5cGVfdmFsaWQgfCB0eXBlX2xvY2FsaXphYmxlIHwgXAotICAgICAgICAgICAgdHlwZW1hc2sgfCB0eXBlX251bGxhYmxlIHwgdHlwZV9rZXkKLQotIyBTdW1tYXJ5IEluZm8gUHJvcGVydHkgSURzCi1QSURfQ09ERVBBR0U9MQotUElEX1RJVExFPTIKLVBJRF9TVUJKRUNUPTMKLVBJRF9BVVRIT1I9NAotUElEX0tFWVdPUkRTPTUKLVBJRF9DT01NRU5UUz02Ci1QSURfVEVNUExBVEU9NwotUElEX0xBU1RBVVRIT1I9OAotUElEX1JFVk5VTUJFUj05Ci1QSURfTEFTVFBSSU5URUQ9MTEKLVBJRF9DUkVBVEVfRFRNPTEyCi1QSURfTEFTVFNBVkVfRFRNPTEzCi1QSURfUEFHRUNPVU5UPTE0Ci1QSURfV09SRENPVU5UPTE1Ci1QSURfQ0hBUkNPVU5UPTE2Ci1QSURfQVBQTkFNRT0xOAotUElEX1NFQ1VSSVRZPTE5Ci0KLWRlZiByZXNldCgpOgotICAgIGdsb2JhbCBfZGlyZWN0b3JpZXMKLSAgICBfZGlyZWN0b3JpZXMgPSBzZXRzLlNldCgpCi0KLWRlZiBFbnN1cmVNU0koKToKLSAgICB3aW4zMmNvbS5jbGllbnQuZ2VuY2FjaGUuRW5zdXJlTW9kdWxlKCd7MDAwQzEwOTItMDAwMC0wMDAwLUMwMDAtMDAwMDAwMDAwMDQ2fScsIDEwMzMsIDEsIDApCi0KLWRlZiBFbnN1cmVNU00oKToKLSAgICB0cnk6Ci0gICAgICAgIHdpbjMyY29tLmNsaWVudC5nZW5jYWNoZS5FbnN1cmVNb2R1bGUoJ3swQUREQTgyRi0yQzI2LTExRDItQUQ2NS0wMEEwQzlBRjExQTZ9JywgMCwgMSwgMCkKLSAgICBleGNlcHQgcHl3aW50eXBlcy5jb21fZXJyb3I6Ci0gICAgICAgIHdpbjMyY29tLmNsaWVudC5nZW5jYWNoZS5FbnN1cmVNb2R1bGUoJ3swQUREQTgyRi0yQzI2LTExRDItQUQ2NS0wMEEwQzlBRjExQTZ9JywgMCwgMiwgMCkKLQotX0luc3RhbGxlcj1Ob25lCi1kZWYgTWFrZUluc3RhbGxlcigpOgotICAgIGdsb2JhbCBfSW5zdGFsbGVyCi0gICAgaWYgX0luc3RhbGxlciBpcyBOb25lOgotICAgICAgICBFbnN1cmVNU0koKQotICAgICAgICBfSW5zdGFsbGVyID0gd2luMzJjb20uY2xpZW50LkRpc3BhdGNoKCdXaW5kb3dzSW5zdGFsbGVyLkluc3RhbGxlcicsCi0gICAgICAgICAgICAgICAgICAgICByZXN1bHRDTFNJRD0nezAwMEMxMDkwLTAwMDAtMDAwMC1DMDAwLTAwMDAwMDAwMDA0Nn0nKQotICAgIHJldHVybiBfSW5zdGFsbGVyCi0KLV9NZXJnZT1Ob25lCi1kZWYgTWFrZU1lcmdlMigpOgotICAgIGdsb2JhbCBfTWVyZ2UKLSAgICBpZiBfTWVyZ2UgaXMgTm9uZToKLSAgICAgICAgRW5zdXJlTVNNKCkKLSAgICAgICAgX01lcmdlID0gd2luMzJjb20uY2xpZW50LkRpc3BhdGNoKCJNc20uTWVyZ2UyLjEiKQotICAgIHJldHVybiBfTWVyZ2UKLQotY2xhc3MgVGFibGU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuZmllbGRzID0gW10KLQotICAgIGRlZiBhZGRfZmllbGQoc2VsZiwgaW5kZXgsIG5hbWUsIHR5cGUpOgotICAgICAgICBzZWxmLmZpZWxkcy5hcHBlbmQoKGluZGV4LG5hbWUsdHlwZSkpCi0KLSAgICBkZWYgc3FsKHNlbGYpOgotICAgICAgICBmaWVsZHMgPSBbXQotICAgICAgICBrZXlzID0gW10KLSAgICAgICAgc2VsZi5maWVsZHMuc29ydCgpCi0gICAgICAgIGZpZWxkcyA9IFtOb25lXSpsZW4oc2VsZi5maWVsZHMpCi0gICAgICAgIGZvciBpbmRleCwgbmFtZSwgdHlwZSBpbiBzZWxmLmZpZWxkczoKLSAgICAgICAgICAgIGluZGV4IC09IDEKLSAgICAgICAgICAgIHVuayA9IHR5cGUgJiB+a25vd25iaXRzCi0gICAgICAgICAgICBpZiB1bms6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIiVzLiVzIHVua25vd24gYml0cyAleCIgJSAoc2VsZi5uYW1lLCBuYW1lLCB1bmspCi0gICAgICAgICAgICBzaXplID0gdHlwZSAmIGRhdGFzaXplbWFzawotICAgICAgICAgICAgZHR5cGUgPSB0eXBlICYgdHlwZW1hc2sKLSAgICAgICAgICAgIGlmIGR0eXBlID09IHR5cGVfc3RyaW5nOgotICAgICAgICAgICAgICAgIGlmIHNpemU6Ci0gICAgICAgICAgICAgICAgICAgIHRuYW1lPSJDSEFSKCVkKSIgJSBzaXplCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdG5hbWU9IkNIQVIiCi0gICAgICAgICAgICBlbGlmIGR0eXBlID09IHR5cGVfc2hvcnQ6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHNpemU9PTIKLSAgICAgICAgICAgICAgICB0bmFtZSA9ICJTSE9SVCIKLSAgICAgICAgICAgIGVsaWYgZHR5cGUgPT0gdHlwZV9sb25nOgotICAgICAgICAgICAgICAgIGFzc2VydCBzaXplPT00Ci0gICAgICAgICAgICAgICAgdG5hbWU9IkxPTkciCi0gICAgICAgICAgICBlbGlmIGR0eXBlID09IHR5cGVfYmluYXJ5OgotICAgICAgICAgICAgICAgIGFzc2VydCBzaXplPT0wCi0gICAgICAgICAgICAgICAgdG5hbWU9Ik9CSkVDVCIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdG5hbWU9InVua25vd24iCi0gICAgICAgICAgICAgICAgcHJpbnQgIiVzLiVzdW5rbm93biBpbnRlZ2VyIHR5cGUgJWQiICUgKHNlbGYubmFtZSwgbmFtZSwgc2l6ZSkKLSAgICAgICAgICAgIGlmIHR5cGUgJiB0eXBlX251bGxhYmxlOgotICAgICAgICAgICAgICAgIGZsYWdzID0gIiIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmxhZ3MgPSAiIE5PVCBOVUxMIgotICAgICAgICAgICAgaWYgdHlwZSAmIHR5cGVfbG9jYWxpemFibGU6Ci0gICAgICAgICAgICAgICAgZmxhZ3MgKz0gIiBMT0NBTElaQUJMRSIKLSAgICAgICAgICAgIGZpZWxkc1tpbmRleF0gPSAiYCVzYCAlcyVzIiAlIChuYW1lLCB0bmFtZSwgZmxhZ3MpCi0gICAgICAgICAgICBpZiB0eXBlICYgdHlwZV9rZXk6Ci0gICAgICAgICAgICAgICAga2V5cy5hcHBlbmQoImAlc2AiICUgbmFtZSkKLSAgICAgICAgZmllbGRzID0gIiwgIi5qb2luKGZpZWxkcykKLSAgICAgICAga2V5cyA9ICIsICIuam9pbihrZXlzKQotICAgICAgICByZXR1cm4gIkNSRUFURSBUQUJMRSAlcyAoJXMgUFJJTUFSWSBLRVkgJXMpIiAlIChzZWxmLm5hbWUsIGZpZWxkcywga2V5cykKLQotICAgIGRlZiBjcmVhdGUoc2VsZiwgZGIpOgotICAgICAgICB2ID0gZGIuT3BlblZpZXcoc2VsZi5zcWwoKSkKLSAgICAgICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgICAgIHYuQ2xvc2UoKQotCi1jbGFzcyBCaW5hcnk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZuYW1lKToKLSAgICAgICAgc2VsZi5uYW1lID0gZm5hbWUKLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiJXMiKSknICUgc2VsZi5uYW1lCi0KLWRlZiBnZW5fc2NoZW1hKGRlc3RwYXRoLCBzY2hlbWFwYXRoKToKLSAgICBkID0gTWFrZUluc3RhbGxlcigpCi0gICAgc2NoZW1hID0gZC5PcGVuRGF0YWJhc2Uoc2NoZW1hcGF0aCwKLSAgICAgICAgICAgIHdpbjMyY29tLmNsaWVudC5jb25zdGFudHMubXNpT3BlbkRhdGFiYXNlTW9kZVJlYWRPbmx5KQotCi0gICAgIyBYWFggT1JCRVIgQlkKLSAgICB2PXNjaGVtYS5PcGVuVmlldygiU0VMRUNUICogRlJPTSBfQ29sdW1ucyIpCi0gICAgY3VydGFibGU9Tm9uZQotICAgIHRhYmxlcyA9IFtdCi0gICAgdi5FeGVjdXRlKE5vbmUpCi0gICAgZiA9IG9wZW4oZGVzdHBhdGgsICJ3dCIpCi0gICAgZi53cml0ZSgiZnJvbSBtc2lsaWIgaW1wb3J0IFRhYmxlXG4iKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIHI9di5GZXRjaCgpCi0gICAgICAgIGlmIG5vdCByOmJyZWFrCi0gICAgICAgIG5hbWU9ci5TdHJpbmdEYXRhKDEpCi0gICAgICAgIGlmIGN1cnRhYmxlICE9IG5hbWU6Ci0gICAgICAgICAgICBmLndyaXRlKCJcbiVzID0gVGFibGUoJyVzJylcbiIgJSAobmFtZSxuYW1lKSkKLSAgICAgICAgICAgIGN1cnRhYmxlID0gbmFtZQotICAgICAgICAgICAgdGFibGVzLmFwcGVuZChuYW1lKQotICAgICAgICBmLndyaXRlKCIlcy5hZGRfZmllbGQoJWQsJyVzJywlZClcbiIgJQotICAgICAgICAgICAgICAgIChuYW1lLCByLkludGVnZXJEYXRhKDIpLCByLlN0cmluZ0RhdGEoMyksIHIuSW50ZWdlckRhdGEoNCkpKQotICAgIHYuQ2xvc2UoKQotCi0gICAgZi53cml0ZSgiXG50YWJsZXM9WyVzXVxuXG4iICUgKCIsICIuam9pbih0YWJsZXMpKSkKLQotICAgICMgRmlsbCB0aGUgX1ZhbGlkYXRpb24gdGFibGUKLSAgICBmLndyaXRlKCJfVmFsaWRhdGlvbl9yZWNvcmRzID0gW1xuIikKLSAgICB2ID0gc2NoZW1hLk9wZW5WaWV3KCJTRUxFQ1QgKiBGUk9NIF9WYWxpZGF0aW9uIikKLSAgICB2LkV4ZWN1dGUoTm9uZSkKLSAgICB3aGlsZSAxOgotICAgICAgICByID0gdi5GZXRjaCgpCi0gICAgICAgIGlmIG5vdCByOmJyZWFrCi0gICAgICAgICMgVGFibGUsIENvbHVtbiwgTnVsbGFibGUKLSAgICAgICAgZi53cml0ZSgiKCVzLCVzLCVzLCIgJQotICAgICAgICAgICAgICAgIChgci5TdHJpbmdEYXRhKDEpYCwgYHIuU3RyaW5nRGF0YSgyKWAsIGByLlN0cmluZ0RhdGEoMylgKSkKLSAgICAgICAgZGVmIHB1dF9pbnQoaSk6Ci0gICAgICAgICAgICBpZiByLklzTnVsbChpKTpmLndyaXRlKCJOb25lLCAiKQotICAgICAgICAgICAgZWxzZTpmLndyaXRlKCIlZCwiICUgci5JbnRlZ2VyRGF0YShpKSkKLSAgICAgICAgZGVmIHB1dF9zdHIoaSk6Ci0gICAgICAgICAgICBpZiByLklzTnVsbChpKTpmLndyaXRlKCJOb25lLCAiKQotICAgICAgICAgICAgZWxzZTpmLndyaXRlKCIlcywiICUgYHIuU3RyaW5nRGF0YShpKWApCi0gICAgICAgIHB1dF9pbnQoNCkgIyBNaW5WYWx1ZQotICAgICAgICBwdXRfaW50KDUpICMgTWF4VmFsdWUKLSAgICAgICAgcHV0X3N0cig2KSAjIEtleVRhYmxlCi0gICAgICAgIHB1dF9pbnQoNykgIyBLZXlDb2x1bW4KLSAgICAgICAgcHV0X3N0cig4KSAjIENhdGVnb3J5Ci0gICAgICAgIHB1dF9zdHIoOSkgIyBTZXQKLSAgICAgICAgcHV0X3N0cigxMCkjIERlc2NyaXB0aW9uCi0gICAgICAgIGYud3JpdGUoIiksXG4iKQotICAgIGYud3JpdGUoIl1cblxuIikKLQotICAgIGYuY2xvc2UoKQotCi1kZWYgZ2VuX3NlcXVlbmNlKGRlc3RwYXRoLCBtc2lwYXRoKToKLSAgICBkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZGVzdHBhdGgpCi0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgIHNlcW1zaSA9IGQuT3BlbkRhdGFiYXNlKG1zaXBhdGgsCi0gICAgICAgICAgICB3aW4zMmNvbS5jbGllbnQuY29uc3RhbnRzLm1zaU9wZW5EYXRhYmFzZU1vZGVSZWFkT25seSkKLQotICAgIHYgPSBzZXFtc2kuT3BlblZpZXcoIlNFTEVDVCAqIEZST00gX1RhYmxlcyIpOwotICAgIHYuRXhlY3V0ZShOb25lKQotICAgIGYgPSBvcGVuKGRlc3RwYXRoLCAidyIpCi0gICAgcHJpbnQgPj5mLCAiaW1wb3J0IG1zaWxpYixvcztkaXJuYW1lPW9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykiCi0gICAgdGFibGVzID0gW10KLSAgICB3aGlsZSAxOgotICAgICAgICByID0gdi5GZXRjaCgpCi0gICAgICAgIGlmIG5vdCByOmJyZWFrCi0gICAgICAgIHRhYmxlID0gci5TdHJpbmdEYXRhKDEpCi0gICAgICAgIHRhYmxlcy5hcHBlbmQodGFibGUpCi0gICAgICAgIGYud3JpdGUoIiVzID0gW1xuIiAlIHRhYmxlKQotICAgICAgICB2MSA9IHNlcW1zaS5PcGVuVmlldygiU0VMRUNUICogRlJPTSBgJXNgIiAlIHRhYmxlKQotICAgICAgICB2MS5FeGVjdXRlKE5vbmUpCi0gICAgICAgIGluZm8gPSB2MS5Db2x1bW5JbmZvKGNvbnN0YW50cy5tc2lDb2x1bW5JbmZvVHlwZXMpCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICByID0gdjEuRmV0Y2goKQotICAgICAgICAgICAgaWYgbm90IHI6YnJlYWsKLSAgICAgICAgICAgIHJlYyA9IFtdCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxLHIuRmllbGRDb3VudCsxKToKLSAgICAgICAgICAgICAgICBpZiByLklzTnVsbChpKToKLSAgICAgICAgICAgICAgICAgICAgcmVjLmFwcGVuZChOb25lKQotICAgICAgICAgICAgICAgIGVsaWYgaW5mby5TdHJpbmdEYXRhKGkpWzBdIGluICJpSSI6Ci0gICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoci5JbnRlZ2VyRGF0YShpKSkKLSAgICAgICAgICAgICAgICBlbGlmIGluZm8uU3RyaW5nRGF0YShpKVswXSBpbiAic2xTTCI6Ci0gICAgICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoci5TdHJpbmdEYXRhKGkpKQotICAgICAgICAgICAgICAgIGVsaWYgaW5mby5TdHJpbmdEYXRhKGkpWzBdPT0idiI6Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgPSByLkRhdGFTaXplKGkpCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzID0gci5SZWFkU3RyZWFtKGksIHNpemUsIGNvbnN0YW50cy5tc2lSZWFkU3RyZWFtQnl0ZXMpCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzID0gYnl0ZXMuZW5jb2RlKCJsYXRpbi0xIikgIyBiaW5hcnkgZGF0YSByZXByZXNlbnRlZCAiYXMtaXMiCi0gICAgICAgICAgICAgICAgICAgIGlmIHRhYmxlID09ICJCaW5hcnkiOgotICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUgPSByZWNbMF0rIi5iaW4iCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGVuKG9zLnBhdGguam9pbihkaXIsZm5hbWUpLCJ3YiIpLndyaXRlKGJ5dGVzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVjLmFwcGVuZChCaW5hcnkoZm5hbWUpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVjLmFwcGVuZChieXRlcykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSAiVW5zdXBwb3J0ZWQgY29sdW1uIHR5cGUiLCBpbmZvLlN0cmluZ0RhdGEoaSkKLSAgICAgICAgICAgIGYud3JpdGUocmVwcih0dXBsZShyZWMpKSsiLFxuIikKLSAgICAgICAgdjEuQ2xvc2UoKQotICAgICAgICBmLndyaXRlKCJdXG5cbiIpCi0gICAgdi5DbG9zZSgpCi0gICAgZi53cml0ZSgidGFibGVzPSVzXG4iICUgcmVwcihtYXAoc3RyLHRhYmxlcykpKQotICAgIGYuY2xvc2UoKQotCi1jbGFzcyBfVW5zcGVjaWZpZWQ6cGFzcwotZGVmIGNoYW5nZV9zZXF1ZW5jZShzZXEsIGFjdGlvbiwgc2Vxbm89X1Vuc3BlY2lmaWVkLCBjb25kID0gX1Vuc3BlY2lmaWVkKToKLSAgICAiQ2hhbmdlIHRoZSBzZXF1ZW5jZSBudW1iZXIgb2YgYW4gYWN0aW9uIGluIGEgc2VxdWVuY2UgbGlzdCIKLSAgICBmb3IgaSBpbiByYW5nZShsZW4oc2VxKSk6Ci0gICAgICAgIGlmIHNlcVtpXVswXSA9PSBhY3Rpb246Ci0gICAgICAgICAgICBpZiBjb25kIGlzIF9VbnNwZWNpZmllZDoKLSAgICAgICAgICAgICAgICBjb25kID0gc2VxW2ldWzFdCi0gICAgICAgICAgICBpZiBzZXFubyBpcyBfVW5zcGVjaWZpZWQ6Ci0gICAgICAgICAgICAgICAgc2Vxbm8gPSBzZXFbaV1bMl0KLSAgICAgICAgICAgIHNlcVtpXSA9IChhY3Rpb24sIGNvbmQsIHNlcW5vKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgcmFpc2UgVmFsdWVFcnJvciwgIkFjdGlvbiBub3QgZm91bmQgaW4gc2VxdWVuY2UiCi0KLWRlZiBhZGRfZGF0YShkYiwgdGFibGUsIHZhbHVlcyk6Ci0gICAgZCA9IE1ha2VJbnN0YWxsZXIoKQotICAgIHYgPSBkYi5PcGVuVmlldygiU0VMRUNUICogRlJPTSBgJXNgIiAlIHRhYmxlKQotICAgIGNvdW50ID0gdi5Db2x1bW5JbmZvKDApLkZpZWxkQ291bnQKLSAgICByID0gZC5DcmVhdGVSZWNvcmQoY291bnQpCi0gICAgZm9yIHZhbHVlIGluIHZhbHVlczoKLSAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZSkgPT0gY291bnQsIHZhbHVlCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50KToKLSAgICAgICAgICAgIGZpZWxkID0gdmFsdWVbaV0KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmllbGQsIChpbnQsIGxvbmcpKToKLSAgICAgICAgICAgICAgICByLlNldEludGVnZXJEYXRhKGkrMSxmaWVsZCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWVsZCwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICAgICAgci5TZXRTdHJpbmdEYXRhKGkrMSxmaWVsZCkKLSAgICAgICAgICAgIGVsaWYgZmllbGQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmllbGQsIEJpbmFyeSk6Ci0gICAgICAgICAgICAgICAgci5TZXRTdHJlYW0oaSsxLCBmaWVsZC5uYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IsICJVbnN1cHBvcnRlZCB0eXBlICVzIiAlIGZpZWxkLl9fY2xhc3NfXy5fX25hbWVfXwotICAgICAgICB2Lk1vZGlmeSh3aW4zMmNvbS5jbGllbnQuY29uc3RhbnRzLm1zaVZpZXdNb2RpZnlJbnNlcnQsIHIpCi0gICAgICAgIHIuQ2xlYXJEYXRhKCkKLSAgICB2LkNsb3NlKCkKLQotZGVmIGFkZF9zdHJlYW0oZGIsIG5hbWUsIHBhdGgpOgotICAgIGQgPSBNYWtlSW5zdGFsbGVyKCkKLSAgICB2ID0gZGIuT3BlblZpZXcoIklOU0VSVCBJTlRPIF9TdHJlYW1zIChOYW1lLCBEYXRhKSBWQUxVRVMgKCclcycsID8pIiAlIG5hbWUpCi0gICAgciA9IGQuQ3JlYXRlUmVjb3JkKDEpCi0gICAgci5TZXRTdHJlYW0oMSwgcGF0aCkKLSAgICB2LkV4ZWN1dGUocikKLSAgICB2LkNsb3NlKCkKLQotZGVmIGluaXRfZGF0YWJhc2UobmFtZSwgc2NoZW1hLAotICAgICAgICAgICAgICAgICAgUHJvZHVjdE5hbWUsIFByb2R1Y3RDb2RlLCBQcm9kdWN0VmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgIE1hbnVmYWN0dXJlciwKLSAgICAgICAgICAgICAgICAgIHJlcXVlc3RfdWFjID0gRmFsc2UpOgotICAgIHRyeToKLSAgICAgICAgb3MudW5saW5rKG5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBQcm9kdWN0Q29kZSA9IFByb2R1Y3RDb2RlLnVwcGVyKCkKLSAgICBkID0gTWFrZUluc3RhbGxlcigpCi0gICAgIyBDcmVhdGUgdGhlIGRhdGFiYXNlCi0gICAgZGIgPSBkLk9wZW5EYXRhYmFzZShuYW1lLAotICAgICAgICAgd2luMzJjb20uY2xpZW50LmNvbnN0YW50cy5tc2lPcGVuRGF0YWJhc2VNb2RlQ3JlYXRlKQotICAgICMgQ3JlYXRlIHRoZSB0YWJsZXMKLSAgICBmb3IgdCBpbiBzY2hlbWEudGFibGVzOgotICAgICAgICB0LmNyZWF0ZShkYikKLSAgICAjIEZpbGwgdGhlIHZhbGlkYXRpb24gdGFibGUKLSAgICBhZGRfZGF0YShkYiwgIl9WYWxpZGF0aW9uIiwgc2NoZW1hLl9WYWxpZGF0aW9uX3JlY29yZHMpCi0gICAgIyBJbml0aWFsaXplIHRoZSBzdW1tYXJ5IGluZm9ybWF0aW9uLCBhbGxvd2luZyBhdCBtb3N0IDIwIHByb3BlcnRpZXMKLSAgICBzaSA9IGRiLkdldFN1bW1hcnlJbmZvcm1hdGlvbigyMCkKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfVElUTEUsICJJbnN0YWxsYXRpb24gRGF0YWJhc2UiKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9TVUJKRUNULCBQcm9kdWN0TmFtZSkKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfQVVUSE9SLCBNYW51ZmFjdHVyZXIpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1RFTVBMQVRFLCBtc2lfdHlwZSkKLSAgICBzaS5TZXRQcm9wZXJ0eShQSURfUkVWTlVNQkVSLCBnZW5fdXVpZCgpKQotICAgIGlmIHJlcXVlc3RfdWFjOgotICAgICAgICB3YyA9IDIgIyBsb25nIGZpbGUgbmFtZXMsIGNvbXByZXNzZWQsIG9yaWdpbmFsIG1lZGlhCi0gICAgZWxzZToKLSAgICAgICAgd2MgPSAyIHwgOCAjICtuZXZlciBpbnZva2UgVUFDCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1dPUkRDT1VOVCwgd2MpCi0gICAgc2kuU2V0UHJvcGVydHkoUElEX1BBR0VDT1VOVCwgMjAwKQotICAgIHNpLlNldFByb3BlcnR5KFBJRF9BUFBOQU1FLCAiUHl0aG9uIE1TSSBMaWJyYXJ5IikKLSAgICAjIFhYWCBtb3JlIHByb3BlcnRpZXMKLSAgICBzaS5QZXJzaXN0KCkKLSAgICBhZGRfZGF0YShkYiwgIlByb3BlcnR5IiwgWwotICAgICAgICAoIlByb2R1Y3ROYW1lIiwgUHJvZHVjdE5hbWUpLAotICAgICAgICAoIlByb2R1Y3RDb2RlIiwgUHJvZHVjdENvZGUpLAotICAgICAgICAoIlByb2R1Y3RWZXJzaW9uIiwgUHJvZHVjdFZlcnNpb24pLAotICAgICAgICAoIk1hbnVmYWN0dXJlciIsIE1hbnVmYWN0dXJlciksCi0gICAgICAgICgiUHJvZHVjdExhbmd1YWdlIiwgIjEwMzMiKV0pCi0gICAgZGIuQ29tbWl0KCkKLSAgICByZXR1cm4gZGIKLQotZGVmIGFkZF90YWJsZXMoZGIsIG1vZHVsZSk6Ci0gICAgZm9yIHRhYmxlIGluIG1vZHVsZS50YWJsZXM6Ci0gICAgICAgIGFkZF9kYXRhKGRiLCB0YWJsZSwgZ2V0YXR0cihtb2R1bGUsIHRhYmxlKSkKLQotZGVmIG1ha2VfaWQoc3RyKToKLSAgICAjc3RyID0gc3RyLnJlcGxhY2UoIi4iLCAiXyIpICMgY29sb25zIGFyZSBhbGxvd2VkCi0gICAgc3RyID0gc3RyLnJlcGxhY2UoIiAiLCAiXyIpCi0gICAgc3RyID0gc3RyLnJlcGxhY2UoIi0iLCAiXyIpCi0gICAgc3RyID0gc3RyLnJlcGxhY2UoIisiLCAiXyIpCi0gICAgaWYgc3RyWzBdIGluIHN0cmluZy5kaWdpdHM6Ci0gICAgICAgIHN0ciA9ICJfIitzdHIKLSAgICBhc3NlcnQgcmUubWF0Y2goIl5bQS1aYS16X11bQS1aYS16MC05Xy5dKiQiLCBzdHIpLCAiRklMRSIrc3RyCi0gICAgcmV0dXJuIHN0cgotCi1kZWYgZ2VuX3V1aWQoKToKLSAgICByZXR1cm4gc3RyKHB5dGhvbmNvbS5DcmVhdGVHdWlkKCkpCi0KLWNsYXNzIENBQjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5maWxlcyA9IFtdCi0gICAgICAgIHNlbGYuZmlsZW5hbWVzID0gc2V0cy5TZXQoKQotICAgICAgICBzZWxmLmluZGV4ID0gMAotCi0gICAgZGVmIGdlbl9pZChzZWxmLCBkaXIsIGZpbGUpOgotICAgICAgICBsb2dpY2FsID0gX2xvZ2ljYWwgPSBtYWtlX2lkKGZpbGUpCi0gICAgICAgIHBvcyA9IDEKLSAgICAgICAgd2hpbGUgbG9naWNhbCBpbiBzZWxmLmZpbGVuYW1lczoKLSAgICAgICAgICAgIGxvZ2ljYWwgPSAiJXMuJWQiICUgKF9sb2dpY2FsLCBwb3MpCi0gICAgICAgICAgICBwb3MgKz0gMQotICAgICAgICBzZWxmLmZpbGVuYW1lcy5hZGQobG9naWNhbCkKLSAgICAgICAgcmV0dXJuIGxvZ2ljYWwKLQotICAgIGRlZiBhcHBlbmQoc2VsZiwgZnVsbCwgZmlsZSwgbG9naWNhbCA9IE5vbmUpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGwpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBsb2dpY2FsOgotICAgICAgICAgICAgbG9naWNhbCA9IHNlbGYuZ2VuX2lkKGRpciwgZmlsZSkKLSAgICAgICAgc2VsZi5pbmRleCArPSAxCi0gICAgICAgIHNlbGYuZmlsZXMuYXBwZW5kKChmdWxsLCBsb2dpY2FsKSkKLSAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXgsIGxvZ2ljYWwKLQotICAgIGRlZiBjb21taXQoc2VsZiwgZGIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5uYW1lKyIuY2FiIikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIF9tc2kuRkNJQ3JlYXRlKHNlbGYubmFtZSsiLmNhYiIsIHNlbGYuZmlsZXMpCi0gICAgICAgIGFkZF9kYXRhKGRiLCAiTWVkaWEiLAotICAgICAgICAgICAgICAgIFsoMSwgc2VsZi5pbmRleCwgTm9uZSwgIiMiK3NlbGYubmFtZSwgTm9uZSwgTm9uZSldKQotICAgICAgICBhZGRfc3RyZWFtKGRiLCBzZWxmLm5hbWUsIHNlbGYubmFtZSsiLmNhYiIpCi0gICAgICAgIG9zLnVubGluayhzZWxmLm5hbWUrIi5jYWIiKQotICAgICAgICBkYi5Db21taXQoKQotCi1fZGlyZWN0b3JpZXMgPSBzZXRzLlNldCgpCi1jbGFzcyBEaXJlY3Rvcnk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRiLCBjYWIsIGJhc2VkaXIsIHBoeXNpY2FsLCBfbG9naWNhbCwgZGVmYXVsdCwgY29tcG9uZW50ZmxhZ3M9Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyBkaXJlY3RvcnkgaW4gdGhlIERpcmVjdG9yeSB0YWJsZS4gVGhlcmUgaXMgYSBjdXJyZW50IGNvbXBvbmVudAotICAgICAgICBhdCBlYWNoIHBvaW50IGluIHRpbWUgZm9yIHRoZSBkaXJlY3RvcnksIHdoaWNoIGlzIGVpdGhlciBleHBsaWNpdGx5IGNyZWF0ZWQKLSAgICAgICAgdGhyb3VnaCBzdGFydF9jb21wb25lbnQsIG9yIGltcGxpY2l0bHkgd2hlbiBmaWxlcyBhcmUgYWRkZWQgZm9yIHRoZSBmaXJzdAotICAgICAgICB0aW1lLiBGaWxlcyBhcmUgYWRkZWQgaW50byB0aGUgY3VycmVudCBjb21wb25lbnQsIGFuZCBpbnRvIHRoZSBjYWIgZmlsZS4KLSAgICAgICAgVG8gY3JlYXRlIGEgZGlyZWN0b3J5LCBhIGJhc2UgZGlyZWN0b3J5IG9iamVjdCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgKGNhbiBiZQotICAgICAgICBOb25lKSwgdGhlIHBhdGggdG8gdGhlIHBoeXNpY2FsIGRpcmVjdG9yeSwgYW5kIGEgbG9naWNhbCBkaXJlY3RvcnkgbmFtZS4KLSAgICAgICAgRGVmYXVsdCBzcGVjaWZpZXMgdGhlIERlZmF1bHREaXIgc2xvdCBpbiB0aGUgZGlyZWN0b3J5IHRhYmxlLiBjb21wb25lbnRmbGFncwotICAgICAgICBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgZmxhZ3MgdGhhdCBuZXcgY29tcG9uZW50cyBnZXQuIiIiCi0gICAgICAgIGluZGV4ID0gMQotICAgICAgICBfbG9naWNhbCA9IG1ha2VfaWQoX2xvZ2ljYWwpCi0gICAgICAgIGxvZ2ljYWwgPSBfbG9naWNhbAotICAgICAgICB3aGlsZSBsb2dpY2FsIGluIF9kaXJlY3RvcmllczoKLSAgICAgICAgICAgIGxvZ2ljYWwgPSAiJXMlZCIgJSAoX2xvZ2ljYWwsIGluZGV4KQotICAgICAgICAgICAgaW5kZXggKz0gMQotICAgICAgICBfZGlyZWN0b3JpZXMuYWRkKGxvZ2ljYWwpCi0gICAgICAgIHNlbGYuZGIgPSBkYgotICAgICAgICBzZWxmLmNhYiA9IGNhYgotICAgICAgICBzZWxmLmJhc2VkaXIgPSBiYXNlZGlyCi0gICAgICAgIHNlbGYucGh5c2ljYWwgPSBwaHlzaWNhbAotICAgICAgICBzZWxmLmxvZ2ljYWwgPSBsb2dpY2FsCi0gICAgICAgIHNlbGYuY29tcG9uZW50ID0gTm9uZQotICAgICAgICBzZWxmLnNob3J0X25hbWVzID0ge30KLSAgICAgICAgc2VsZi5pZHMgPSBzZXRzLlNldCgpCi0gICAgICAgIHNlbGYua2V5ZmlsZXMgPSB7fQotICAgICAgICBzZWxmLmNvbXBvbmVudGZsYWdzID0gY29tcG9uZW50ZmxhZ3MKLSAgICAgICAgaWYgYmFzZWRpcjoKLSAgICAgICAgICAgIHNlbGYuYWJzb2x1dGUgPSBvcy5wYXRoLmpvaW4oYmFzZWRpci5hYnNvbHV0ZSwgcGh5c2ljYWwpCi0gICAgICAgICAgICBibG9naWNhbCA9IGJhc2VkaXIubG9naWNhbAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hYnNvbHV0ZSA9IHBoeXNpY2FsCi0gICAgICAgICAgICBibG9naWNhbCA9IE5vbmUKLSAgICAgICAgIyBpbml0aWFsbHkgYXNzdW1lIHRoYXQgYWxsIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSB1bnBhY2thZ2VkCi0gICAgICAgICMgYXMgZmlsZXMgZnJvbSBzZWxmLmFic29sdXRlIGdldCBhZGRlZCwgdGhpcyBzZXQgaXMgcmVkdWNlZAotICAgICAgICBzZWxmLnVucGFja2FnZWRfZmlsZXMgPSBzZXQoKQotICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKHNlbGYuYWJzb2x1dGUpOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYWJzb2x1dGUsIGYpKToKLSAgICAgICAgICAgICAgICBzZWxmLnVucGFja2FnZWRfZmlsZXMuYWRkKGYpCi0gICAgICAgIGFkZF9kYXRhKGRiLCAiRGlyZWN0b3J5IiwgWyhsb2dpY2FsLCBibG9naWNhbCwgZGVmYXVsdCldKQotCi0gICAgZGVmIHN0YXJ0X2NvbXBvbmVudChzZWxmLCBjb21wb25lbnQgPSBOb25lLCBmZWF0dXJlID0gTm9uZSwgZmxhZ3MgPSBOb25lLCBrZXlmaWxlID0gTm9uZSwgdXVpZD1Ob25lKToKLSAgICAgICAgIiIiQWRkIGFuIGVudHJ5IHRvIHRoZSBDb21wb25lbnQgdGFibGUsIGFuZCBtYWtlIHRoaXMgY29tcG9uZW50IHRoZSBjdXJyZW50IGZvciB0aGlzCi0gICAgICAgIGRpcmVjdG9yeS4gSWYgbm8gY29tcG9uZW50IG5hbWUgaXMgZ2l2ZW4sIHRoZSBkaXJlY3RvcnkgbmFtZSBpcyB1c2VkLiBJZiBubyBmZWF0dXJlCi0gICAgICAgIGlzIGdpdmVuLCB0aGUgY3VycmVudCBmZWF0dXJlIGlzIHVzZWQuIElmIG5vIGZsYWdzIGFyZSBnaXZlbiwgdGhlIGRpcmVjdG9yeSdzIGRlZmF1bHQKLSAgICAgICAgZmxhZ3MgYXJlIHVzZWQuIElmIG5vIGtleWZpbGUgaXMgZ2l2ZW4sIHRoZSBLZXlQYXRoIGlzIGxlZnQgbnVsbCBpbiB0aGUgQ29tcG9uZW50Ci0gICAgICAgIHRhYmxlLiIiIgotICAgICAgICBpZiBmbGFncyBpcyBOb25lOgotICAgICAgICAgICAgZmxhZ3MgPSBzZWxmLmNvbXBvbmVudGZsYWdzCi0gICAgICAgIGlmIHV1aWQgaXMgTm9uZToKLSAgICAgICAgICAgIHV1aWQgPSBnZW5fdXVpZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1dWlkID0gdXVpZC51cHBlcigpCi0gICAgICAgIGlmIGNvbXBvbmVudCBpcyBOb25lOgotICAgICAgICAgICAgY29tcG9uZW50ID0gc2VsZi5sb2dpY2FsCi0gICAgICAgIHNlbGYuY29tcG9uZW50ID0gY29tcG9uZW50Ci0gICAgICAgIGlmIFdpbjY0OgotICAgICAgICAgICAgZmxhZ3MgfD0gMjU2Ci0gICAgICAgIGlmIGtleWZpbGU6Ci0gICAgICAgICAgICBrZXlpZCA9IHNlbGYuY2FiLmdlbl9pZChzZWxmLmFic29sdXRlLCBrZXlmaWxlKQotICAgICAgICAgICAgc2VsZi5rZXlmaWxlc1trZXlmaWxlXSA9IGtleWlkCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBrZXlpZCA9IE5vbmUKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNvbXBvbmVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbKGNvbXBvbmVudCwgdXVpZCwgc2VsZi5sb2dpY2FsLCBmbGFncywgTm9uZSwga2V5aWQpXSkKLSAgICAgICAgaWYgZmVhdHVyZSBpcyBOb25lOgotICAgICAgICAgICAgZmVhdHVyZSA9IGN1cnJlbnRfZmVhdHVyZQotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiRmVhdHVyZUNvbXBvbmVudHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyhmZWF0dXJlLmlkLCBjb21wb25lbnQpXSkKLQotICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgotICAgICAgICBsb25nID0gZmlsZQotICAgICAgICBmaWxlID0gcmUuc3ViKHInW1w/fD48Oi8qIissOz1cW1xdXScsICdfJywgZmlsZSkgIyByZXN0cmljdGlvbnMgb24gc2hvcnQgbmFtZXMKLSAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIiwgMSkKLSAgICAgICAgaWYgbGVuKHBhcnRzKT4xOgotICAgICAgICAgICAgc3VmZml4ID0gcGFydHNbMV0udXBwZXIoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3VmZml4ID0gJycKLSAgICAgICAgcHJlZml4ID0gcGFydHNbMF0udXBwZXIoKQotICAgICAgICBpZiBsZW4ocHJlZml4KSA8PSA4IGFuZCAnLicgbm90IGluIHN1ZmZpeCBhbmQgbGVuKHN1ZmZpeCkgPD0gMzoKLSAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSAgICAgICAgICAgICAgICBmaWxlID0gcHJlZml4KyIuIitzdWZmaXgKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeAotICAgICAgICAgICAgYXNzZXJ0IGZpbGUgbm90IGluIHNlbGYuc2hvcnRfbmFtZXMsIChmaWxlLCBzZWxmLnNob3J0X25hbWVzW2ZpbGVdKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJlZml4ID0gcHJlZml4Wzo2XQotICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgICMgbGFzdCB0aHJlZSBjaGFyYWN0ZXJzIG9mIGxhc3Qgc3VmZml4Ci0gICAgICAgICAgICAgICAgc3VmZml4ID0gc3VmZml4LnJzcGxpdCgnLicpWy0xXVs6M10KLSAgICAgICAgICAgIHBvcyA9IDEKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgaWYgc3VmZml4OgotICAgICAgICAgICAgICAgICAgICBmaWxlID0gIiVzfiVkLiVzIiAlIChwcmVmaXgsIHBvcywgc3VmZml4KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGUgPSAiJXN+JWQiICUgKHByZWZpeCwgcG9zKQotICAgICAgICAgICAgICAgIGlmIGZpbGUgbm90IGluIHNlbGYuc2hvcnRfbmFtZXM6IGJyZWFrCi0gICAgICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgICAgICAgICBhc3NlcnQgcG9zIDwgMTAwMDAKLSAgICAgICAgICAgICAgICBpZiBwb3MgaW4gKDEwLCAxMDAsIDEwMDApOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOi0xXQotICAgICAgICBzZWxmLnNob3J0X25hbWVzW2ZpbGVdID0gbG9uZwotICAgICAgICByZXR1cm4gZmlsZQotCi0gICAgZGVmIGFkZF9maWxlKHNlbGYsIGZpbGUsIHNyYz1Ob25lLCB2ZXJzaW9uPU5vbmUsIGxhbmd1YWdlPU5vbmUpOgotICAgICAgICAiIiJBZGQgYSBmaWxlIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBvZiB0aGUgZGlyZWN0b3J5LCBzdGFydGluZyBhIG5ldyBvbmUKLSAgICAgICAgaWYgdGhlcmUgaXMgbm8gY3VycmVudCBjb21wb25lbnQuIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIG5hbWUgaW4gdGhlIHNvdXJjZQotICAgICAgICBhbmQgdGhlIGZpbGUgdGFibGUgd2lsbCBiZSBpZGVudGljYWwuIElmIHRoZSBzcmMgZmlsZSBpcyBzcGVjaWZpZWQsIGl0IGlzCi0gICAgICAgIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gT3B0aW9uYWxseSwgYSB2ZXJzaW9uIGFuZCBhCi0gICAgICAgIGxhbmd1YWdlIGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSBlbnRyeSBpbiB0aGUgRmlsZSB0YWJsZS4iIiIKLSAgICAgICAgaWYgbm90IHNlbGYuY29tcG9uZW50OgotICAgICAgICAgICAgc2VsZi5zdGFydF9jb21wb25lbnQoc2VsZi5sb2dpY2FsLCBjdXJyZW50X2ZlYXR1cmUpCi0gICAgICAgIGlmIG5vdCBzcmM6Ci0gICAgICAgICAgICAjIEFsbG93IHJlbGF0aXZlIHBhdGhzIGZvciBmaWxlIGlmIHNyYyBpcyBub3Qgc3BlY2lmaWVkCi0gICAgICAgICAgICBzcmMgPSBmaWxlCi0gICAgICAgICAgICBmaWxlID0gb3MucGF0aC5iYXNlbmFtZShmaWxlKQotICAgICAgICBhYnNvbHV0ZSA9IG9zLnBhdGguam9pbihzZWxmLmFic29sdXRlLCBzcmMpCi0gICAgICAgIGlmIGFic29sdXRlLnN0YXJ0c3dpdGgoc2VsZi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICAjIG1hcmsgZmlsZSBhcyBwYWNrYWdlZAotICAgICAgICAgICAgcmVsYXRpdmUgPSBhYnNvbHV0ZVtsZW4oc2VsZi5hYnNvbHV0ZSkrMTpdCi0gICAgICAgICAgICBpZiByZWxhdGl2ZSBpbiBzZWxmLnVucGFja2FnZWRfZmlsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi51bnBhY2thZ2VkX2ZpbGVzLnJlbW92ZShyZWxhdGl2ZSkKLSAgICAgICAgYXNzZXJ0IG5vdCByZS5zZWFyY2gocidbXD98Pjw6LypdIicsIGZpbGUpICMgcmVzdHJpY3Rpb25zIG9uIGxvbmcgbmFtZXMKLSAgICAgICAgaWYgc2VsZi5rZXlmaWxlcy5oYXNfa2V5KGZpbGUpOgotICAgICAgICAgICAgbG9naWNhbCA9IHNlbGYua2V5ZmlsZXNbZmlsZV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2ljYWwgPSBOb25lCi0gICAgICAgIHNlcXVlbmNlLCBsb2dpY2FsID0gc2VsZi5jYWIuYXBwZW5kKGFic29sdXRlLCBmaWxlLCBsb2dpY2FsKQotICAgICAgICBhc3NlcnQgbG9naWNhbCBub3QgaW4gc2VsZi5pZHMKLSAgICAgICAgc2VsZi5pZHMuYWRkKGxvZ2ljYWwpCi0gICAgICAgIHNob3J0ID0gc2VsZi5tYWtlX3Nob3J0KGZpbGUpCi0gICAgICAgIGZ1bGwgPSAiJXN8JXMiICUgKHNob3J0LCBmaWxlKQotICAgICAgICBmaWxlc2l6ZSA9IG9zLnN0YXQoYWJzb2x1dGUpLnN0X3NpemUKLSAgICAgICAgIyBjb25zdGFudHMubXNpZGJGaWxlQXR0cmlidXRlc1ZpdGFsCi0gICAgICAgICMgQ29tcHJlc3NlZCBvbWl0dGVkLCBzaW5jZSBpdCBpcyB0aGUgZGF0YWJhc2UgZGVmYXVsdAotICAgICAgICAjIGNvdWxkIGFkZCByL28sIHN5c3RlbSwgaGlkZGVuCi0gICAgICAgIGF0dHJpYnV0ZXMgPSA1MTIKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgWyhsb2dpY2FsLCBzZWxmLmNvbXBvbmVudCwgZnVsbCwgZmlsZXNpemUsIHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2UsIGF0dHJpYnV0ZXMsIHNlcXVlbmNlKV0pCi0gICAgICAgIGlmIG5vdCB2ZXJzaW9uOgotICAgICAgICAgICAgIyBBZGQgaGFzaCBpZiB0aGUgZmlsZSBpcyBub3QgdmVyc2lvbmVkCi0gICAgICAgICAgICBmaWxlaGFzaCA9IE1ha2VJbnN0YWxsZXIoKS5GaWxlSGFzaChhYnNvbHV0ZSwgMCkKLSAgICAgICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJNc2lGaWxlSGFzaCIsCi0gICAgICAgICAgICAgICAgICAgICBbKGxvZ2ljYWwsIDAsIGZpbGVoYXNoLkludGVnZXJEYXRhKDEpLAotICAgICAgICAgICAgICAgICAgICAgICBmaWxlaGFzaC5JbnRlZ2VyRGF0YSgyKSwgZmlsZWhhc2guSW50ZWdlckRhdGEoMyksCi0gICAgICAgICAgICAgICAgICAgICAgIGZpbGVoYXNoLkludGVnZXJEYXRhKDQpKV0pCi0gICAgICAgICMgQXV0b21hdGljYWxseSByZW1vdmUgLnB5Yy8ucHlvIGZpbGVzIG9uIHVuaW5zdGFsbCAoMikKLSAgICAgICAgIyBYWFg6IGFkZGluZyBzbyBtYW55IFJlbW92ZUZpbGUgZW50cmllcyBtYWtlcyBpbnN0YWxsZXIgdW5iZWxpZXZhYmx5Ci0gICAgICAgICMgc2xvdy4gU28gaW5zdGVhZCwgd2UgaGF2ZSB0byB1c2Ugd2lsZGNhcmQgcmVtb3ZlIGVudHJpZXMKLSAgICAgICAgIyBpZiBmaWxlLmVuZHN3aXRoKCIucHkiKToKLSAgICAgICAgIyAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIlJlbW92ZUZpbGUiLAotICAgICAgICAjICAgICAgICAgICAgICBbKGxvZ2ljYWwrImMiLCBzZWxmLmNvbXBvbmVudCwgIiVzQ3wlc2MiICUgKHNob3J0LCBmaWxlKSwKLSAgICAgICAgIyAgICAgICAgICAgICAgICBzZWxmLmxvZ2ljYWwsIDIpLAotICAgICAgICAjICAgICAgICAgICAgICAgKGxvZ2ljYWwrIm8iLCBzZWxmLmNvbXBvbmVudCwgIiVzT3wlc28iICUgKHNob3J0LCBmaWxlKSwKLSAgICAgICAgIyAgICAgICAgICAgICAgICBzZWxmLmxvZ2ljYWwsIDIpXSkKLQotICAgIGRlZiBnbG9iKHNlbGYsIHBhdHRlcm4sIGV4Y2x1ZGUgPSBOb25lKToKLSAgICAgICAgIiIiQWRkIGEgbGlzdCBvZiBmaWxlcyB0byB0aGUgY3VycmVudCBjb21wb25lbnQgYXMgc3BlY2lmaWVkIGluIHRoZQotICAgICAgICBnbG9iIHBhdHRlcm4uIEluZGl2aWR1YWwgZmlsZXMgY2FuIGJlIGV4Y2x1ZGVkIGluIHRoZSBleGNsdWRlIGxpc3QuIiIiCi0gICAgICAgIGZpbGVzID0gZ2xvYi5nbG9iMShzZWxmLmFic29sdXRlLCBwYXR0ZXJuKQotICAgICAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIGV4Y2x1ZGUgYW5kIGYgaW4gZXhjbHVkZTogY29udGludWUKLSAgICAgICAgICAgIHNlbGYuYWRkX2ZpbGUoZikKLSAgICAgICAgcmV0dXJuIGZpbGVzCi0KLSAgICBkZWYgcmVtb3ZlX3B5YyhzZWxmKToKLSAgICAgICAgIlJlbW92ZSAucHljLy5weW8gZmlsZXMgZnJvbSBfX3B5Y2FjaGVfXyBvbiB1bmluc3RhbGwiCi0gICAgICAgIGRpcmVjdG9yeSA9IHNlbGYubG9naWNhbCArICJfcHljYWNoZSIKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkRpcmVjdG9yeSIsIFsoZGlyZWN0b3J5LCBzZWxmLmxvZ2ljYWwsICJfX1BZQ0F+MXxfX3B5Y2FjaGVfXyIpXSkKLSAgICAgICAgZmxhZ3MgPSAyNTYgaWYgV2luNjQgZWxzZSAwCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJDb21wb25lbnQiLAotICAgICAgICAgICAgICAgIFsoZGlyZWN0b3J5LCBnZW5fdXVpZCgpLCBkaXJlY3RvcnksIGZsYWdzLCBOb25lLCBOb25lKV0pCi0gICAgICAgIGFkZF9kYXRhKHNlbGYuZGIsICJGZWF0dXJlQ29tcG9uZW50cyIsIFsoY3VycmVudF9mZWF0dXJlLmlkLCBkaXJlY3RvcnkpXSkKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIkNyZWF0ZUZvbGRlciIsIFsoZGlyZWN0b3J5LCBkaXJlY3RvcnkpXSkKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIlJlbW92ZUZpbGUiLAotICAgICAgICAgICAgICAgICBbKHNlbGYuY29tcG9uZW50LCBzZWxmLmNvbXBvbmVudCwgIiouKiIsIGRpcmVjdG9yeSwgMiksCi0gICAgICAgICAgICAgICAgIF0pCi0KLSAgICBkZWYgcmVtb3ZlZmlsZShzZWxmLCBrZXksIHBhdHRlcm4pOgotICAgICAgICAiQWRkIGEgUmVtb3ZlRmlsZSBlbnRyeSIKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kYiwgIlJlbW92ZUZpbGUiLCBbKHNlbGYuY29tcG9uZW50K2tleSwgc2VsZi5jb21wb25lbnQsIHBhdHRlcm4sIHNlbGYubG9naWNhbCwgMildKQotCi0KLWNsYXNzIEZlYXR1cmU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRiLCBpZCwgdGl0bGUsIGRlc2MsIGRpc3BsYXksIGxldmVsID0gMSwKLSAgICAgICAgICAgICAgICAgcGFyZW50PU5vbmUsIGRpcmVjdG9yeSA9IE5vbmUsIGF0dHJpYnV0ZXM9MCk6Ci0gICAgICAgIHNlbGYuaWQgPSBpZAotICAgICAgICBpZiBwYXJlbnQ6Ci0gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQuaWQKLSAgICAgICAgYWRkX2RhdGEoZGIsICJGZWF0dXJlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsoaWQsIHBhcmVudCwgdGl0bGUsIGRlc2MsIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLCBkaXJlY3RvcnksIGF0dHJpYnV0ZXMpXSkKLSAgICBkZWYgc2V0X2N1cnJlbnQoc2VsZik6Ci0gICAgICAgIGdsb2JhbCBjdXJyZW50X2ZlYXR1cmUKLSAgICAgICAgY3VycmVudF9mZWF0dXJlID0gc2VsZgotCi1jbGFzcyBDb250cm9sOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkbGcsIG5hbWUpOgotICAgICAgICBzZWxmLmRsZyA9IGRsZwotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICBkZWYgZXZlbnQoc2VsZiwgZXYsIGFyZywgY29uZCA9ICIxIiwgb3JkZXIgPSBOb25lKToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kbGcuZGIsICJDb250cm9sRXZlbnQiLAotICAgICAgICAgICAgICAgICBbKHNlbGYuZGxnLm5hbWUsIHNlbGYubmFtZSwgZXYsIGFyZywgY29uZCwgb3JkZXIpXSkKLQotICAgIGRlZiBtYXBwaW5nKHNlbGYsIGV2LCBhdHRyKToKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kbGcuZGIsICJFdmVudE1hcHBpbmciLAotICAgICAgICAgICAgICAgICBbKHNlbGYuZGxnLm5hbWUsIHNlbGYubmFtZSwgZXYsIGF0dHIpXSkKLQotICAgIGRlZiBjb25kaXRpb24oc2VsZiwgYWN0aW9uLCBjb25kaXRpb24pOgotICAgICAgICBhZGRfZGF0YShzZWxmLmRsZy5kYiwgIkNvbnRyb2xDb25kaXRpb24iLAotICAgICAgICAgICAgICAgICBbKHNlbGYuZGxnLm5hbWUsIHNlbGYubmFtZSwgYWN0aW9uLCBjb25kaXRpb24pXSkKLQotY2xhc3MgUmFkaW9CdXR0b25Hcm91cChDb250cm9sKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGxnLCBuYW1lLCBwcm9wZXJ0eSk6Ci0gICAgICAgIHNlbGYuZGxnID0gZGxnCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5wcm9wZXJ0eSA9IHByb3BlcnR5Ci0gICAgICAgIHNlbGYuaW5kZXggPSAxCi0KLSAgICBkZWYgYWRkKHNlbGYsIG5hbWUsIHgsIHksIHcsIGgsIHRleHQsIHZhbHVlID0gTm9uZSk6Ci0gICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICB2YWx1ZSA9IG5hbWUKLSAgICAgICAgYWRkX2RhdGEoc2VsZi5kbGcuZGIsICJSYWRpb0J1dHRvbiIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5wcm9wZXJ0eSwgc2VsZi5pbmRleCwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgeCwgeSwgdywgaCwgdGV4dCwgTm9uZSldKQotICAgICAgICBzZWxmLmluZGV4ICs9IDEKLQotY2xhc3MgRGlhbG9nOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYiwgbmFtZSwgeCwgeSwgdywgaCwgYXR0ciwgdGl0bGUsIGZpcnN0LCBkZWZhdWx0LCBjYW5jZWwpOgotICAgICAgICBzZWxmLmRiID0gZGIKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBzZWxmLngsIHNlbGYueSwgc2VsZi53LCBzZWxmLmggPSB4LHksdyxoCi0gICAgICAgIGFkZF9kYXRhKGRiLCAiRGlhbG9nIiwgWyhuYW1lLCB4LHksdyxoLGF0dHIsdGl0bGUsZmlyc3QsZGVmYXVsdCxjYW5jZWwpXSkKLQotICAgIGRlZiBjb250cm9sKHNlbGYsIG5hbWUsIHR5cGUsIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQsIGhlbHApOgotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiQ29udHJvbCIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5uYW1lLCBuYW1lLCB0eXBlLCB4LCB5LCB3LCBoLCBhdHRyLCBwcm9wLCB0ZXh0LCBuZXh0LCBoZWxwKV0pCi0gICAgICAgIHJldHVybiBDb250cm9sKHNlbGYsIG5hbWUpCi0KLSAgICBkZWYgdGV4dChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCBhdHRyLCB0ZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiVGV4dCIsIHgsIHksIHcsIGgsIGF0dHIsIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB0ZXh0LCBOb25lLCBOb25lKQotCi0gICAgZGVmIGJpdG1hcChzZWxmLCBuYW1lLCB4LCB5LCB3LCBoLCB0ZXh0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbChuYW1lLCAiQml0bWFwIiwgeCwgeSwgdywgaCwgMSwgTm9uZSwgdGV4dCwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiBsaW5lKHNlbGYsIG5hbWUsIHgsIHksIHcsIGgpOgotICAgICAgICByZXR1cm4gc2VsZi5jb250cm9sKG5hbWUsICJMaW5lIiwgeCwgeSwgdywgaCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiBwdXNoYnV0dG9uKHNlbGYsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHIsIHRleHQsIG5leHQpOgotICAgICAgICByZXR1cm4gc2VsZi5jb250cm9sKG5hbWUsICJQdXNoQnV0dG9uIiwgeCwgeSwgdywgaCwgYXR0ciwgTm9uZSwgdGV4dCwgbmV4dCwgTm9uZSkKLQotICAgIGRlZiByYWRpb2dyb3VwKHNlbGYsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQpOgotICAgICAgICBhZGRfZGF0YShzZWxmLmRiLCAiQ29udHJvbCIsCi0gICAgICAgICAgICAgICAgIFsoc2VsZi5uYW1lLCBuYW1lLCAiUmFkaW9CdXR0b25Hcm91cCIsCi0gICAgICAgICAgICAgICAgICAgeCwgeSwgdywgaCwgYXR0ciwgcHJvcCwgdGV4dCwgbmV4dCwgTm9uZSldKQotICAgICAgICByZXR1cm4gUmFkaW9CdXR0b25Hcm91cChzZWxmLCBuYW1lLCBwcm9wKQotCi0gICAgZGVmIGNoZWNrYm94KHNlbGYsIG5hbWUsIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQpOgotICAgICAgICByZXR1cm4gc2VsZi5jb250cm9sKG5hbWUsICJDaGVja0JveCIsIHgsIHksIHcsIGgsIGF0dHIsIHByb3AsIHRleHQsIG5leHQsIE5vbmUpCi0KLWRlZiBwZV90eXBlKHBhdGgpOgotICAgIGhlYWRlciA9IG9wZW4ocGF0aCwgInJiIikucmVhZCgxMDAwKQotICAgICMgb2Zmc2V0IG9mIFBFIGhlYWRlciBpcyBhdCBvZmZzZXQgMHgzYwotICAgIHBlX29mZnNldCA9IHN0cnVjdC51bnBhY2soIjxpIiwgaGVhZGVyWzB4M2M6MHg0MF0pWzBdCi0gICAgYXNzZXJ0IGhlYWRlcltwZV9vZmZzZXQ6cGVfb2Zmc2V0KzRdID09ICJQRVwwXDAiCi0gICAgbWFjaGluZSA9IHN0cnVjdC51bnBhY2soIjxIIiwgaGVhZGVyW3BlX29mZnNldCs0OnBlX29mZnNldCs2XSlbMF0KLSAgICByZXR1cm4gbWFjaGluZQotCi1kZWYgc2V0X2FyY2hfZnJvbV9maWxlKHBhdGgpOgotICAgIGdsb2JhbCBtc2lfdHlwZSwgV2luNjQsIGFyY2hfZXh0Ci0gICAgbWFjaGluZSA9IHBlX3R5cGUocGF0aCkKLSAgICBpZiBtYWNoaW5lID09IDB4MTRjOgotICAgICAgICAjIGkzODYKLSAgICAgICAgbXNpX3R5cGUgPSAiSW50ZWwiCi0gICAgICAgIFdpbjY0ID0gMAotICAgICAgICBhcmNoX2V4dCA9ICcnCi0gICAgZWxpZiBtYWNoaW5lID09IDB4MjAwOgotICAgICAgICAjIEl0YW5pdW0KLSAgICAgICAgbXNpX3R5cGUgPSAiSW50ZWw2NCIKLSAgICAgICAgV2luNjQgPSAxCi0gICAgICAgIGFyY2hfZXh0ID0gJy5pYTY0JwotICAgIGVsaWYgbWFjaGluZSA9PSAweDg2NjQ6Ci0gICAgICAgICMgQU1ENjQKLSAgICAgICAgbXNpX3R5cGUgPSAieDY0IgotICAgICAgICBXaW42NCA9IDEKLSAgICAgICAgYXJjaF9leHQgPSAnLmFtZDY0JwotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IsICJVbnN1cHBvcnRlZCBhcmNoaXRlY3R1cmUiCi0gICAgbXNpX3R5cGUgKz0gIjsxMDMzIgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaXN1cHBvcnQuYyBiL1Rvb2xzL21zaS9tc2lzdXBwb3J0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZDJlZTQuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL21zaXN1cHBvcnQuYworKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLSNpbmNsdWRlICJ3aW5kb3dzLmgiCi0jaW5jbHVkZSAibXNpcXVlcnkuaCIKLQotLyogUHJpbnQgYSBkZWJ1ZyBtZXNzYWdlIHRvIHRoZSBpbnN0YWxsZXIgbG9nIGZpbGUuCi0gKiBUbyBzZWUgdGhlIGRlYnVnIG1lc3NhZ2VzLCBpbnN0YWxsIHdpdGgKLSAqIG1zaWV4ZWMgL2kgcHl0aG9ueHkubXNpIC9sKnYgcHl0aG9uLmxvZwotICovCi1zdGF0aWMgVUlOVCBkZWJ1ZyhNU0lIQU5ETEUgaEluc3RhbGwsIExQQ1NUUiBtc2cpCi17Ci0gICAgTVNJSEFORExFIGhSZWMgPSBNc2lDcmVhdGVSZWNvcmQoMSk7Ci0gICAgaWYgKCFoUmVjIHx8IE1zaVJlY29yZFNldFN0cmluZ0EoaFJlYywgMSwgbXNnKSAhPSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9JTlNUQUxMX0ZBSUxVUkU7Ci0gICAgfQotICAgIE1zaVByb2Nlc3NNZXNzYWdlKGhJbnN0YWxsLCBJTlNUQUxMTUVTU0FHRV9JTkZPLCBoUmVjKTsKLSAgICBNc2lDbG9zZUhhbmRsZShoUmVjKTsKLSAgICByZXR1cm4gRVJST1JfU1VDQ0VTUzsKLX0KLQotLyogQ2hlY2sgd2hldGhlciB0aGUgVEFSR0VURElSIGV4aXN0cyBhbmQgaXMgYSBkaXJlY3RvcnkuCi0gKiBTZXQgVGFyZ2V0RXhpc3RzIGFwcHJvcHJpYXRlbHkuCi0gKi8KLVVJTlQgX19kZWNsc3BlYyhkbGxleHBvcnQpIF9fc3RkY2FsbCBDaGVja0RpcihNU0lIQU5ETEUgaEluc3RhbGwpCi17Ci0jZGVmaW5lIFBTSVpFIDEwMjQKLSAgICBXQ0hBUiB3cGF0aFtQU0laRV07Ci0gICAgY2hhciBwYXRoW1BTSVpFXTsKLSAgICBVSU5UIHJlc3VsdDsKLSAgICBEV09SRCBzaXplID0gUFNJWkU7Ci0gICAgRFdPUkQgYXR0cmlidXRlczsKLQotCi0gICAgcmVzdWx0ID0gTXNpR2V0UHJvcGVydHlXKGhJbnN0YWxsLCBMIlRBUkdFVERJUiIsIHdwYXRoLCAmc2l6ZSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHdwYXRoW3NpemVdID0gTCdcMCc7Ci0gICAgcGF0aFtzaXplXSA9IEwnXDAnOwotCi0gICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cGF0aCk7Ci0gICAgaWYgKGF0dHJpYnV0ZXMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMgfHwKLSAgICAgICAgIShhdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBNc2lTZXRQcm9wZXJ0eUEoaEluc3RhbGwsICJUYXJnZXRFeGlzdHMiLCAiMCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBNc2lTZXRQcm9wZXJ0eUEoaEluc3RhbGwsICJUYXJnZXRFeGlzdHMiLCAiMSIpOwotICAgIH0KLX0KLQotLyogVXBkYXRlIHRoZSBzdGF0ZSBvZiB0aGUgUkVHSVNUUlkudGNsIGNvbXBvbmVudCBhY2NvcmRpbmcgdG8gdGhlCi0gKiBFeHRlbnNpb24gYW5kIFRjbFRrIGZlYXR1cmVzLiBSRUdJU1RSWS50Y2wgbXVzdCBiZSBpbnN0YWxsZWQKLSAqIGlmIGJvdGggZmVhdHVyZXMgYXJlIGluc3RhbGxlZCwgYW5kIG11c3QgYmUgYWJzZW50IG90aGVyd2lzZS4KLSAqLwotVUlOVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgX19zdGRjYWxsIFVwZGF0ZUVkaXRJRExFKE1TSUhBTkRMRSBoSW5zdGFsbCkKLXsKLSAgICBJTlNUQUxMU1RBVEUgZXh0X29sZCwgZXh0X25ldywgdGNsX29sZCwgdGNsX25ldywgcmVnX25ldzsKLSAgICBVSU5UIHJlc3VsdDsKLQotICAgIHJlc3VsdCA9IE1zaUdldEZlYXR1cmVTdGF0ZUEoaEluc3RhbGwsICJFeHRlbnNpb25zIiwgJmV4dF9vbGQsICZleHRfbmV3KTsKLSAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmVzdWx0ID0gTXNpR2V0RmVhdHVyZVN0YXRlQShoSW5zdGFsbCwgIlRjbFRrIiwgJnRjbF9vbGQsICZ0Y2xfbmV3KTsKLSAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAvKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBBYnNlbnQsIGFuZCB0aGUgdXNlciBkaWQgbm90IHNlbGVjdAotICAgICAgIHRoZSBmZWF0dXJlIGluIHRoZSBVSSwgSW5zdGFsbGVyIGFwcGFyZW50bHkgc2V0cyB0aGUgInNlbGVjdGVkIgotICAgICAgIHN0YXRlIHRvIHVua25vd24uIFVwZGF0ZSBpdCB0byB0aGUgY3VycmVudCB2YWx1ZSwgdGhlbi4gKi8KLSAgICBpZiAoZXh0X25ldyA9PSBJTlNUQUxMU1RBVEVfVU5LTk9XTikKLSAgICAgICAgZXh0X25ldyA9IGV4dF9vbGQ7Ci0gICAgaWYgKHRjbF9uZXcgPT0gSU5TVEFMTFNUQVRFX1VOS05PV04pCi0gICAgICAgIHRjbF9uZXcgPSB0Y2xfb2xkOwotCi0gICAgLy8gWFhYIGNvbnNpZGVyIGN1cnJlbnQgc3RhdGUgb2YgUkVHSVNUUlkudGNsPwotICAgIGlmICgoKHRjbF9uZXcgPT0gSU5TVEFMTFNUQVRFX0xPQ0FMKSB8fAotICAgICAgICAgICAgICh0Y2xfbmV3ID09IElOU1RBTExTVEFURV9TT1VSQ0UpIHx8Ci0gICAgICAgICAgICAgKHRjbF9uZXcgPT0gSU5TVEFMTFNUQVRFX0RFRkFVTFQpKSAmJgotICAgICAgICAoKGV4dF9uZXcgPT0gSU5TVEFMTFNUQVRFX0xPQ0FMKSB8fAotICAgICAgICAgKGV4dF9uZXcgPT0gSU5TVEFMTFNUQVRFX1NPVVJDRSkgfHwKLSAgICAgICAgIChleHRfbmV3ID09IElOU1RBTExTVEFURV9ERUZBVUxUKSkpIHsKLSAgICAgICAgcmVnX25ldyA9IElOU1RBTExTVEFURV9TT1VSQ0U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmVnX25ldyA9IElOU1RBTExTVEFURV9BQlNFTlQ7Ci0gICAgfQotICAgIHJlc3VsdCA9IE1zaVNldENvbXBvbmVudFN0YXRlQShoSW5zdGFsbCwgIlJFR0lTVFJZLnRjbCIsIHJlZ19uZXcpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUJPT0wgQVBJRU5UUlkgRGxsTWFpbihIQU5ETEUgaE1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICBEV09SRCAgdWxfcmVhc29uX2Zvcl9jYWxsLAotICAgICAgICAgICAgICAgICAgICAgIExQVk9JRCBscFJlc2VydmVkKQotewotICAgIHJldHVybiBUUlVFOwotfQotCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpc3VwcG9ydC5tYWsgYi9Ub29scy9tc2kvbXNpc3VwcG9ydC5tYWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MDVkYmUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL21zaXN1cHBvcnQubWFrCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0jIC9PUFQ6IFJFRiBhbmQgSUNGIGFyZSBhZGRlZCBieSBWUy5ORVQgYnkgZGVmYXVsdAotbXNpc3VwcG9ydC5kbGw6CW1zaXN1cHBvcnQub2JqCi0JbGluay5leGUgL09VVDptc2lzdXBwb3J0LmRsbCAvSU5DUkVNRU5UQUw6Tk8gL05PTE9HTyAvRExMIC9TVUJTWVNURU06V0lORE9XUyAvT1BUOlJFRiAvT1BUOklDRiBtc2lzdXBwb3J0Lm9iaiBtc2kubGliIGtlcm5lbDMyLmxpYgotCi0jIFdlIHJlcXVlc3QgYSBzdGF0aWMgQ1JULCBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gQ1JUIGRlcGVuZGVuY2llcwotIyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0uIFdlIGNhbm5vdCBkbyB3aXRob3V0IGEgQ1JULCBzaW5jZSBpdCBwcm92aWRlcwotIyB0aGUgRExMIGVudHJ5IHBvaW50LgotbXNpc3VwcG9ydC5vYmo6CW1zaXN1cHBvcnQuYwotCWNsIC9PMiAvRCBXSU4zMiAvRCBOREVCVUcgL0QgX1dJTkRPV1MgL01UIC9XMyAvYyBtc2lzdXBwb3J0LmMKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9wYXRoL3BhdGgud2l4cHJvaiBiL1Rvb2xzL21zaS9wYXRoL3BhdGgud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzkyZTE0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BhdGgvcGF0aC53aXhwcm9qCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPns5MUM5OTI5OC04RTJFLTQ0MjItQTVBRi1DQzRGRkY5QTU4RDN9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT5wYXRoPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgICAgICA8U3VwcHJlc3NJY2VzPklDRTcxPC9TdXBwcmVzc0ljZXM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9Iioud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BhdGgvcGF0aC53eHMgYi9Ub29scy9tc2kvcGF0aC9wYXRoLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjM3OTM2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BhdGgvcGF0aC53eHMKQEAgLTAsMCArMSwzOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlByZXBlbmRQYXRoX0NVIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+Tk9UIEFMTFVTRVJTPTE8L0NvbmRpdGlvbj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtDVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5UGF0aD0ieWVzIiBLZXk9Ikluc3RhbGxlZEZlYXR1cmVzIiBOYW1lPSIkKHZhci5PcHRpb25hbEZlYXR1cmVOYW1lKSIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiBUeXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8Q3JlYXRlRm9sZGVyIERpcmVjdG9yeT0iU2NyaXB0cyIgLz4KKyAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfU2NyaXB0c19DVSIgRGlyZWN0b3J5PSJTY3JpcHRzIiBPbj0idW5pbnN0YWxsIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUEFUSF9DVSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEgiIFBhcnQ9ImZpcnN0IiBWYWx1ZT0iW0luc3RhbGxEaXJlY3RvcnldIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iU0NSSVBUU19QQVRIX0NVIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSCIgUGFydD0iZmlyc3QiIFZhbHVlPSJbU2NyaXB0c10iIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlByZXBlbmRQYXRoX0xNIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxDb25kaXRpb24+QUxMVVNFUlM9MTwvQ29uZGl0aW9uPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS0xNIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXlQYXRoPSJ5ZXMiIEtleT0iSW5zdGFsbGVkRmVhdHVyZXMiIE5hbWU9IiQodmFyLk9wdGlvbmFsRmVhdHVyZU5hbWUpIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIFR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxDcmVhdGVGb2xkZXIgRGlyZWN0b3J5PSJTY3JpcHRzIiAvPgorICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9TY3JpcHRzX0xNIiBEaXJlY3Rvcnk9IlNjcmlwdHMiIE9uPSJ1bmluc3RhbGwiIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPEVudmlyb25tZW50IElkPSJQQVRIX0xNIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSCIgUGFydD0iZmlyc3QiIFZhbHVlPSJbSW5zdGFsbERpcmVjdG9yeV0iIFN5c3RlbT0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iU0NSSVBUU19QQVRIX0xNIiBBY3Rpb249InNldCIgTmFtZT0iUEFUSCIgUGFydD0iZmlyc3QiIFZhbHVlPSJbU2NyaXB0c10iIFN5c3RlbT0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUFlfUEFUSEVYVF9MTSIgQWN0aW9uPSJzZXQiIE5hbWU9IlBBVEhFWFQiIFBhcnQ9Imxhc3QiIFZhbHVlPSIuUFkiIFN5c3RlbT0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxFbnZpcm9ubWVudCBJZD0iUFlXX1BBVEhFWFRfTE0iIEFjdGlvbj0ic2V0IiBOYW1lPSJQQVRIRVhUIiBQYXJ0PSJsYXN0IiBWYWx1ZT0iLlBZVyIgU3lzdGVtPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgorCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvcGF0aC9wYXRoX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9wYXRoL3BhdGhfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTc4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvcGF0aC9wYXRoX2VuLVVTLnd4bApAQCAtMCwwICsxLDYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPkFkZCB0byBQYXRoPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5QYXRoPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTm9QeXRob24iPk5vICEobG9jLlByb2R1Y3ROYW1lKSBpbnN0YWxsYXRpb24gd2FzIGRldGVjdGVkLjwvU3RyaW5nPgorPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvcGlwL3BpcC53aXhwcm9qIGIvVG9vbHMvbXNpL3BpcC9waXAud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MThjMDJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3BpcC9waXAud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57OTFDOTkyOTgtOEUyRS00NDIyLUE1QUYtQ0M0RkZGOUE1OEQzfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+cGlwPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgICAgICA8U3VwcHJlc3NJY2VzPklDRTcxPC9TdXBwcmVzc0ljZXM+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9Iioud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3BpcC9waXAud3hzIGIvVG9vbHMvbXNpL3BpcC9waXAud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZTlmNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvcGlwL3BpcC53eHMKQEAgLTAsMCArMSwzOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgIDxQYWNrYWdlIEluc3RhbGxlclZlcnNpb249IjMwMCIgQ29tcHJlc3NlZD0ieWVzIiBJbnN0YWxsU2NvcGU9InBlclVzZXIiIFBsYXRmb3JtPSIkKHZhci5QbGF0Zm9ybSkiIC8+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlVwZ3JhZGVUYWJsZSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUFlUSE9OX0VYRSIgU2VjdXJlPSJ5ZXMiPgorICAgICAgICAgICAgPENvbXBvbmVudFNlYXJjaCBJZD0iUHl0aG9uRXhlIiBHdWlkPSIkKHZhci5QeXRob25FeGVDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPEZpbGVTZWFyY2ggTmFtZT0icHl0aG9uLmV4ZSIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50U2VhcmNoPgorICAgICAgICA8L1Byb3BlcnR5PgorCisgICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9QeXRob24pIj5QWVRIT05fRVhFPC9Db25kaXRpb24+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgCisgICAgICAgIDw/aWYgJCh2YXIuUGxhdGZvcm0pfj0ieDY0IiA/PgorICAgICAgICA8Q3VzdG9tQWN0aW9uIElkPSJVcGRhdGVQaXAiIEJpbmFyeUtleT0iV2l4Q0EiIERsbEVudHJ5PSJDQVF1aWV0RXhlYzY0IiBFeGVjdXRlPSJkZWZlcnJlZCIgUmV0dXJuPSJpZ25vcmUiLz4KKyAgICAgICAgPD9lbHNlID8+CisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlVwZGF0ZVBpcCIgQmluYXJ5S2V5PSJXaXhDQSIgRGxsRW50cnk9IkNBUXVpZXRFeGVjIiBFeGVjdXRlPSJkZWZlcnJlZCIgUmV0dXJuPSJpZ25vcmUiLz4KKyAgICAgICAgPD9lbmRpZiA/PgorICAgICAgICAKKyAgICAgICAgPCEtLSBJbnN0YWxsL3VuaW5zdGFsbCBwaXAgLS0+CisgICAgICAgIDxDdXN0b21BY3Rpb24gSWQ9IlNldFVwZGF0ZVBpcENvbW1hbmRMaW5lIiBQcm9wZXJ0eT0iVXBkYXRlUGlwIiBWYWx1ZT0nIltQWVRIT05fRVhFXSIgLUUgLXMgLW0gZW5zdXJlcGlwIC1VIC0tZGVmYXVsdC1waXAnIEV4ZWN1dGU9ImltbWVkaWF0ZSIgLz4KKyAgICAgICAgPEN1c3RvbUFjdGlvbiBJZD0iU2V0UmVtb3ZlUGlwQ29tbWFuZExpbmUiIFByb3BlcnR5PSJVcGRhdGVQaXAiIFZhbHVlPSciW1BZVEhPTl9FWEVdIiAtRSAtcyAtQiAtbSBlbnN1cmVwaXAuX3VuaW5zdGFsbCcgRXhlY3V0ZT0iaW1tZWRpYXRlIiAvPgorICAgICAgICAKKyAgICAgICAgPEluc3RhbGxFeGVjdXRlU2VxdWVuY2U+CisgICAgICAgICAgICA8Q3VzdG9tIEFjdGlvbj0iU2V0VXBkYXRlUGlwQ29tbWFuZExpbmUiIEJlZm9yZT0iVXBkYXRlUGlwIj4oJmFtcDtEZWZhdWx0RmVhdHVyZT0zKSBBTkQgTk9UICghRGVmYXVsdEZlYXR1cmU9Myk8L0N1c3RvbT4KKyAgICAgICAgICAgIDxDdXN0b20gQWN0aW9uPSJTZXRSZW1vdmVQaXBDb21tYW5kTGluZSIgQmVmb3JlPSJVcGRhdGVQaXAiPigmYW1wO0RlZmF1bHRGZWF0dXJlPTIpIEFORCAoIURlZmF1bHRGZWF0dXJlPTMpPC9DdXN0b20+CisKKyAgICAgICAgICAgIDxDdXN0b20gQWN0aW9uPSJVcGRhdGVQaXAiIEJlZm9yZT0iSW5zdGFsbEZpbmFsaXplIj5VcGRhdGVQaXA8L0N1c3RvbT4KKyAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgorCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvcGlwL3BpcF9lbi1VUy53eGwgYi9Ub29scy9tc2kvcGlwL3BpcF9lbi1VUy53eGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QwZDllZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9waXAvcGlwX2VuLVVTLnd4bApAQCAtMCwwICsxLDYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPnBpcCBCb290c3RyYXA8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPnBpcDwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik5vUHl0aG9uIj5ObyAhKGxvYy5Qcm9kdWN0TmFtZSkgaW5zdGFsbGF0aW9uIHdhcyBkZXRlY3RlZC48L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3NjaGVtYS5weSBiL1Rvb2xzL21zaS9zY2hlbWEucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmNzJlNWEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL3NjaGVtYS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwMDcgKzAsMCBAQAotZnJvbSBtc2lsaWIgaW1wb3J0IFRhYmxlCi0KLV9WYWxpZGF0aW9uID0gVGFibGUoJ19WYWxpZGF0aW9uJykKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCgxLCdUYWJsZScsMTE1NTIpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoMiwnQ29sdW1uJywxMTU1MikKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCgzLCdOdWxsYWJsZScsMzMzMikKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCg0LCdNaW5WYWx1ZScsNDM1NikKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCg1LCdNYXhWYWx1ZScsNDM1NikKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCg2LCdLZXlUYWJsZScsNzY3OSkKLV9WYWxpZGF0aW9uLmFkZF9maWVsZCg3LCdLZXlDb2x1bW4nLDUzNzgpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoOCwnQ2F0ZWdvcnknLDc0NTYpCi1fVmFsaWRhdGlvbi5hZGRfZmllbGQoOSwnU2V0Jyw3Njc5KQotX1ZhbGlkYXRpb24uYWRkX2ZpZWxkKDEwLCdEZXNjcmlwdGlvbicsNzY3OSkKLQotQWN0aW9uVGV4dCA9IFRhYmxlKCdBY3Rpb25UZXh0JykKLUFjdGlvblRleHQuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMTE1OTIpCi1BY3Rpb25UZXh0LmFkZF9maWVsZCgyLCdEZXNjcmlwdGlvbicsNzkzNikKLUFjdGlvblRleHQuYWRkX2ZpZWxkKDMsJ1RlbXBsYXRlJyw3OTM2KQotCi1BZG1pbkV4ZWN1dGVTZXF1ZW5jZSA9IFRhYmxlKCdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScpCi1BZG1pbkV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1BZG1pbkV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMiwnQ29uZGl0aW9uJyw3Njc5KQotQWRtaW5FeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1Db25kaXRpb24gPSBUYWJsZSgnQ29uZGl0aW9uJykKLUNvbmRpdGlvbi5hZGRfZmllbGQoMSwnRmVhdHVyZV8nLDExNTU4KQotQ29uZGl0aW9uLmFkZF9maWVsZCgyLCdMZXZlbCcsOTQ3NCkKLUNvbmRpdGlvbi5hZGRfZmllbGQoMywnQ29uZGl0aW9uJyw3Njc5KQotCi1BZG1pblVJU2VxdWVuY2UgPSBUYWJsZSgnQWRtaW5VSVNlcXVlbmNlJykKLUFkbWluVUlTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1BZG1pblVJU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUFkbWluVUlTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUFkdnRFeGVjdXRlU2VxdWVuY2UgPSBUYWJsZSgnQWR2dEV4ZWN1dGVTZXF1ZW5jZScpCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgxLCdBY3Rpb24nLDB4MkRGRikKLUFkdnRFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUFkdnRFeGVjdXRlU2VxdWVuY2UuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotCi1BZHZ0VUlTZXF1ZW5jZSA9IFRhYmxlKCdBZHZ0VUlTZXF1ZW5jZScpCi1BZHZ0VUlTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywxMTU5MikKLUFkdnRVSVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1BZHZ0VUlTZXF1ZW5jZS5hZGRfZmllbGQoMywnU2VxdWVuY2UnLDUzNzgpCi0KLUFwcElkID0gVGFibGUoJ0FwcElkJykKLUFwcElkLmFkZF9maWVsZCgxLCdBcHBJZCcsMTE1NTgpCi1BcHBJZC5hZGRfZmllbGQoMiwnUmVtb3RlU2VydmVyTmFtZScsNzY3OSkKLUFwcElkLmFkZF9maWVsZCgzLCdMb2NhbFNlcnZpY2UnLDc2NzkpCi1BcHBJZC5hZGRfZmllbGQoNCwnU2VydmljZVBhcmFtZXRlcnMnLDc2NzkpCi1BcHBJZC5hZGRfZmllbGQoNSwnRGxsU3Vycm9nYXRlJyw3Njc5KQotQXBwSWQuYWRkX2ZpZWxkKDYsJ0FjdGl2YXRlQXRTdG9yYWdlJyw1Mzc4KQotQXBwSWQuYWRkX2ZpZWxkKDcsJ1J1bkFzSW50ZXJhY3RpdmVVc2VyJyw1Mzc4KQotCi1BcHBTZWFyY2ggPSBUYWJsZSgnQXBwU2VhcmNoJykKLUFwcFNlYXJjaC5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotQXBwU2VhcmNoLmFkZF9maWVsZCgyLCdTaWduYXR1cmVfJywxMTU5MikKLQotUHJvcGVydHkgPSBUYWJsZSgnUHJvcGVydHknKQotUHJvcGVydHkuYWRkX2ZpZWxkKDEsJ1Byb3BlcnR5JywxMTU5MikKLVByb3BlcnR5LmFkZF9maWVsZCgyLCdWYWx1ZScsMzg0MCkKLQotQkJDb250cm9sID0gVGFibGUoJ0JCQ29udHJvbCcpCi1CQkNvbnRyb2wuYWRkX2ZpZWxkKDEsJ0JpbGxib2FyZF8nLDExNTcwKQotQkJDb250cm9sLmFkZF9maWVsZCgyLCdCQkNvbnRyb2wnLDExNTcwKQotQkJDb250cm9sLmFkZF9maWVsZCgzLCdUeXBlJywzMzc4KQotQkJDb250cm9sLmFkZF9maWVsZCg0LCdYJywxMjgyKQotQkJDb250cm9sLmFkZF9maWVsZCg1LCdZJywxMjgyKQotQkJDb250cm9sLmFkZF9maWVsZCg2LCdXaWR0aCcsMTI4MikKLUJCQ29udHJvbC5hZGRfZmllbGQoNywnSGVpZ2h0JywxMjgyKQotQkJDb250cm9sLmFkZF9maWVsZCg4LCdBdHRyaWJ1dGVzJyw0MzU2KQotQkJDb250cm9sLmFkZF9maWVsZCg5LCdUZXh0Jyw3OTg2KQotCi1CaWxsYm9hcmQgPSBUYWJsZSgnQmlsbGJvYXJkJykKLUJpbGxib2FyZC5hZGRfZmllbGQoMSwnQmlsbGJvYXJkJywxMTU3MCkKLUJpbGxib2FyZC5hZGRfZmllbGQoMiwnRmVhdHVyZV8nLDMzNjYpCi1CaWxsYm9hcmQuYWRkX2ZpZWxkKDMsJ0FjdGlvbicsNzQ3NCkKLUJpbGxib2FyZC5hZGRfZmllbGQoNCwnT3JkZXJpbmcnLDUzNzgpCi0KLUZlYXR1cmUgPSBUYWJsZSgnRmVhdHVyZScpCi1GZWF0dXJlLmFkZF9maWVsZCgxLCdGZWF0dXJlJywxMTU1OCkKLUZlYXR1cmUuYWRkX2ZpZWxkKDIsJ0ZlYXR1cmVfUGFyZW50Jyw3NDYyKQotRmVhdHVyZS5hZGRfZmllbGQoMywnVGl0bGUnLDgwMDApCi1GZWF0dXJlLmFkZF9maWVsZCg0LCdEZXNjcmlwdGlvbicsODE5MSkKLUZlYXR1cmUuYWRkX2ZpZWxkKDUsJ0Rpc3BsYXknLDUzNzgpCi1GZWF0dXJlLmFkZF9maWVsZCg2LCdMZXZlbCcsMTI4MikKLUZlYXR1cmUuYWRkX2ZpZWxkKDcsJ0RpcmVjdG9yeV8nLDB4MURGRikKLUZlYXR1cmUuYWRkX2ZpZWxkKDgsJ0F0dHJpYnV0ZXMnLDEyODIpCi0KLUJpbmFyeSA9IFRhYmxlKCdCaW5hcnknKQotQmluYXJ5LmFkZF9maWVsZCgxLCdOYW1lJywxMTU5MikKLUJpbmFyeS5hZGRfZmllbGQoMiwnRGF0YScsMjMwNCkKLQotQmluZEltYWdlID0gVGFibGUoJ0JpbmRJbWFnZScpCi1CaW5kSW1hZ2UuYWRkX2ZpZWxkKDEsJ0ZpbGVfJywweDJERkYpCi1CaW5kSW1hZ2UuYWRkX2ZpZWxkKDIsJ1BhdGgnLDc2NzkpCi0KLUZpbGUgPSBUYWJsZSgnRmlsZScpCi1GaWxlLmFkZF9maWVsZCgxLCdGaWxlJywweDJERkYpCi1GaWxlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLUZpbGUuYWRkX2ZpZWxkKDMsJ0ZpbGVOYW1lJyw0MDk1KQotRmlsZS5hZGRfZmllbGQoNCwnRmlsZVNpemUnLDI2MCkKLUZpbGUuYWRkX2ZpZWxkKDUsJ1ZlcnNpb24nLDB4MURGRikKLUZpbGUuYWRkX2ZpZWxkKDYsJ0xhbmd1YWdlJyw3NDQ0KQotRmlsZS5hZGRfZmllbGQoNywnQXR0cmlidXRlcycsNTM3OCkKLUZpbGUuYWRkX2ZpZWxkKDgsJ1NlcXVlbmNlJywxMjgyKQotCi1DQ1BTZWFyY2ggPSBUYWJsZSgnQ0NQU2VhcmNoJykKLUNDUFNlYXJjaC5hZGRfZmllbGQoMSwnU2lnbmF0dXJlXycsMTE1OTIpCi0KLUNoZWNrQm94ID0gVGFibGUoJ0NoZWNrQm94JykKLUNoZWNrQm94LmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1DaGVja0JveC5hZGRfZmllbGQoMiwnVmFsdWUnLDc0ODgpCi0KLUNsYXNzID0gVGFibGUoJ0NsYXNzJykKLUNsYXNzLmFkZF9maWVsZCgxLCdDTFNJRCcsMTE1NTgpCi1DbGFzcy5hZGRfZmllbGQoMiwnQ29udGV4dCcsMTE1NTIpCi1DbGFzcy5hZGRfZmllbGQoMywnQ29tcG9uZW50XycsMHgyREZGKQotQ2xhc3MuYWRkX2ZpZWxkKDQsJ1Byb2dJZF9EZWZhdWx0Jyw3Njc5KQotQ2xhc3MuYWRkX2ZpZWxkKDUsJ0Rlc2NyaXB0aW9uJyw4MTkxKQotQ2xhc3MuYWRkX2ZpZWxkKDYsJ0FwcElkXycsNzQ2MikKLUNsYXNzLmFkZF9maWVsZCg3LCdGaWxlVHlwZU1hc2snLDc2NzkpCi1DbGFzcy5hZGRfZmllbGQoOCwnSWNvbl8nLDc0OTYpCi1DbGFzcy5hZGRfZmllbGQoOSwnSWNvbkluZGV4Jyw1Mzc4KQotQ2xhc3MuYWRkX2ZpZWxkKDEwLCdEZWZJbnByb2NIYW5kbGVyJyw3NDU2KQotQ2xhc3MuYWRkX2ZpZWxkKDExLCdBcmd1bWVudCcsNzY3OSkKLUNsYXNzLmFkZF9maWVsZCgxMiwnRmVhdHVyZV8nLDMzNjYpCi1DbGFzcy5hZGRfZmllbGQoMTMsJ0F0dHJpYnV0ZXMnLDUzNzgpCi0KLUNvbXBvbmVudCA9IFRhYmxlKCdDb21wb25lbnQnKQotQ29tcG9uZW50LmFkZF9maWVsZCgxLCdDb21wb25lbnQnLDB4MkRGRikKLUNvbXBvbmVudC5hZGRfZmllbGQoMiwnQ29tcG9uZW50SWQnLDc0NjIpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDMsJ0RpcmVjdG9yeV8nLDB4REZGKQotQ29tcG9uZW50LmFkZF9maWVsZCg0LCdBdHRyaWJ1dGVzJywxMjgyKQotQ29tcG9uZW50LmFkZF9maWVsZCg1LCdDb25kaXRpb24nLDc2NzkpCi1Db21wb25lbnQuYWRkX2ZpZWxkKDYsJ0tleVBhdGgnLDB4MURGRikKLQotSWNvbiA9IFRhYmxlKCdJY29uJykKLUljb24uYWRkX2ZpZWxkKDEsJ05hbWUnLDExNTkyKQotSWNvbi5hZGRfZmllbGQoMiwnRGF0YScsMjMwNCkKLQotUHJvZ0lkID0gVGFibGUoJ1Byb2dJZCcpCi1Qcm9nSWQuYWRkX2ZpZWxkKDEsJ1Byb2dJZCcsMTE3NzUpCi1Qcm9nSWQuYWRkX2ZpZWxkKDIsJ1Byb2dJZF9QYXJlbnQnLDc2NzkpCi1Qcm9nSWQuYWRkX2ZpZWxkKDMsJ0NsYXNzXycsNzQ2MikKLVByb2dJZC5hZGRfZmllbGQoNCwnRGVzY3JpcHRpb24nLDgxOTEpCi1Qcm9nSWQuYWRkX2ZpZWxkKDUsJ0ljb25fJyw3NDk2KQotUHJvZ0lkLmFkZF9maWVsZCg2LCdJY29uSW5kZXgnLDUzNzgpCi0KLUNvbWJvQm94ID0gVGFibGUoJ0NvbWJvQm94JykKLUNvbWJvQm94LmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1Db21ib0JveC5hZGRfZmllbGQoMiwnT3JkZXInLDk0NzQpCi1Db21ib0JveC5hZGRfZmllbGQoMywnVmFsdWUnLDMzOTIpCi1Db21ib0JveC5hZGRfZmllbGQoNCwnVGV4dCcsODAwMCkKLQotQ29tcExvY2F0b3IgPSBUYWJsZSgnQ29tcExvY2F0b3InKQotQ29tcExvY2F0b3IuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotQ29tcExvY2F0b3IuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudElkJywzMzY2KQotQ29tcExvY2F0b3IuYWRkX2ZpZWxkKDMsJ1R5cGUnLDUzNzgpCi0KLUNvbXBsdXMgPSBUYWJsZSgnQ29tcGx1cycpCi1Db21wbHVzLmFkZF9maWVsZCgxLCdDb21wb25lbnRfJywweDJERkYpCi1Db21wbHVzLmFkZF9maWVsZCgyLCdFeHBUeXBlJywxMzU3MCkKLQotRGlyZWN0b3J5ID0gVGFibGUoJ0RpcmVjdG9yeScpCi1EaXJlY3RvcnkuYWRkX2ZpZWxkKDEsJ0RpcmVjdG9yeScsMHgyREZGKQotRGlyZWN0b3J5LmFkZF9maWVsZCgyLCdEaXJlY3RvcnlfUGFyZW50JywweDFERkYpCi1EaXJlY3RvcnkuYWRkX2ZpZWxkKDMsJ0RlZmF1bHREaXInLDQwOTUpCi0KLUNvbnRyb2wgPSBUYWJsZSgnQ29udHJvbCcpCi1Db250cm9sLmFkZF9maWVsZCgxLCdEaWFsb2dfJywxMTU5MikKLUNvbnRyb2wuYWRkX2ZpZWxkKDIsJ0NvbnRyb2wnLDExNTcwKQotQ29udHJvbC5hZGRfZmllbGQoMywnVHlwZScsMzM0OCkKLUNvbnRyb2wuYWRkX2ZpZWxkKDQsJ1gnLDEyODIpCi1Db250cm9sLmFkZF9maWVsZCg1LCdZJywxMjgyKQotQ29udHJvbC5hZGRfZmllbGQoNiwnV2lkdGgnLDEyODIpCi1Db250cm9sLmFkZF9maWVsZCg3LCdIZWlnaHQnLDEyODIpCi1Db250cm9sLmFkZF9maWVsZCg4LCdBdHRyaWJ1dGVzJyw0MzU2KQotQ29udHJvbC5hZGRfZmllbGQoOSwnUHJvcGVydHknLDc0NzQpCi1Db250cm9sLmFkZF9maWVsZCgxMCwnVGV4dCcsNzkzNikKLUNvbnRyb2wuYWRkX2ZpZWxkKDExLCdDb250cm9sX05leHQnLDc0NzQpCi1Db250cm9sLmFkZF9maWVsZCgxMiwnSGVscCcsNzk4NikKLQotRGlhbG9nID0gVGFibGUoJ0RpYWxvZycpCi1EaWFsb2cuYWRkX2ZpZWxkKDEsJ0RpYWxvZycsMTE1OTIpCi1EaWFsb2cuYWRkX2ZpZWxkKDIsJ0hDZW50ZXJpbmcnLDEyODIpCi1EaWFsb2cuYWRkX2ZpZWxkKDMsJ1ZDZW50ZXJpbmcnLDEyODIpCi1EaWFsb2cuYWRkX2ZpZWxkKDQsJ1dpZHRoJywxMjgyKQotRGlhbG9nLmFkZF9maWVsZCg1LCdIZWlnaHQnLDEyODIpCi1EaWFsb2cuYWRkX2ZpZWxkKDYsJ0F0dHJpYnV0ZXMnLDQzNTYpCi1EaWFsb2cuYWRkX2ZpZWxkKDcsJ1RpdGxlJyw4MDY0KQotRGlhbG9nLmFkZF9maWVsZCg4LCdDb250cm9sX0ZpcnN0JywzMzc4KQotRGlhbG9nLmFkZF9maWVsZCg5LCdDb250cm9sX0RlZmF1bHQnLDc0NzQpCi1EaWFsb2cuYWRkX2ZpZWxkKDEwLCdDb250cm9sX0NhbmNlbCcsNzQ3NCkKLQotQ29udHJvbENvbmRpdGlvbiA9IFRhYmxlKCdDb250cm9sQ29uZGl0aW9uJykKLUNvbnRyb2xDb25kaXRpb24uYWRkX2ZpZWxkKDEsJ0RpYWxvZ18nLDExNTkyKQotQ29udHJvbENvbmRpdGlvbi5hZGRfZmllbGQoMiwnQ29udHJvbF8nLDExNTcwKQotQ29udHJvbENvbmRpdGlvbi5hZGRfZmllbGQoMywnQWN0aW9uJywxMTU3MCkKLUNvbnRyb2xDb25kaXRpb24uYWRkX2ZpZWxkKDQsJ0NvbmRpdGlvbicsMTE3NzUpCi0KLUNvbnRyb2xFdmVudCA9IFRhYmxlKCdDb250cm9sRXZlbnQnKQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCgxLCdEaWFsb2dfJywxMTU5MikKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoMiwnQ29udHJvbF8nLDExNTcwKQotQ29udHJvbEV2ZW50LmFkZF9maWVsZCgzLCdFdmVudCcsMTE1NzApCi1Db250cm9sRXZlbnQuYWRkX2ZpZWxkKDQsJ0FyZ3VtZW50JywxMTc3NSkKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoNSwnQ29uZGl0aW9uJywxNTg3MSkKLUNvbnRyb2xFdmVudC5hZGRfZmllbGQoNiwnT3JkZXJpbmcnLDUzNzgpCi0KLUNyZWF0ZUZvbGRlciA9IFRhYmxlKCdDcmVhdGVGb2xkZXInKQotQ3JlYXRlRm9sZGVyLmFkZF9maWVsZCgxLCdEaXJlY3RvcnlfJywweDJERkYpCi1DcmVhdGVGb2xkZXIuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4MkRGRikKLQotQ3VzdG9tQWN0aW9uID0gVGFibGUoJ0N1c3RvbUFjdGlvbicpCi1DdXN0b21BY3Rpb24uYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotQ3VzdG9tQWN0aW9uLmFkZF9maWVsZCgyLCdUeXBlJywxMjgyKQotQ3VzdG9tQWN0aW9uLmFkZF9maWVsZCgzLCdTb3VyY2UnLDB4MURGRikKLUN1c3RvbUFjdGlvbi5hZGRfZmllbGQoNCwnVGFyZ2V0Jyw3Njc5KQotCi1EckxvY2F0b3IgPSBUYWJsZSgnRHJMb2NhdG9yJykKLURyTG9jYXRvci5hZGRfZmllbGQoMSwnU2lnbmF0dXJlXycsMTE1OTIpCi1EckxvY2F0b3IuYWRkX2ZpZWxkKDIsJ1BhcmVudCcsMTU2ODgpCi1EckxvY2F0b3IuYWRkX2ZpZWxkKDMsJ1BhdGgnLDE1ODcxKQotRHJMb2NhdG9yLmFkZF9maWVsZCg0LCdEZXB0aCcsNTM3OCkKLQotRHVwbGljYXRlRmlsZSA9IFRhYmxlKCdEdXBsaWNhdGVGaWxlJykKLUR1cGxpY2F0ZUZpbGUuYWRkX2ZpZWxkKDEsJ0ZpbGVLZXknLDExNTkyKQotRHVwbGljYXRlRmlsZS5hZGRfZmllbGQoMiwnQ29tcG9uZW50XycsMHhERkYpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCgzLCdGaWxlXycsMHhERkYpCi1EdXBsaWNhdGVGaWxlLmFkZF9maWVsZCg0LCdEZXN0TmFtZScsODE5MSkKLUR1cGxpY2F0ZUZpbGUuYWRkX2ZpZWxkKDUsJ0Rlc3RGb2xkZXInLDc0OTYpCi0KLUVudmlyb25tZW50ID0gVGFibGUoJ0Vudmlyb25tZW50JykKLUVudmlyb25tZW50LmFkZF9maWVsZCgxLCdFbnZpcm9ubWVudCcsMTE1OTIpCi1FbnZpcm9ubWVudC5hZGRfZmllbGQoMiwnTmFtZScsNDA5NSkKLUVudmlyb25tZW50LmFkZF9maWVsZCgzLCdWYWx1ZScsODE5MSkKLUVudmlyb25tZW50LmFkZF9maWVsZCg0LCdDb21wb25lbnRfJywweERGRikKLQotRXJyb3IgPSBUYWJsZSgnRXJyb3InKQotRXJyb3IuYWRkX2ZpZWxkKDEsJ0Vycm9yJyw5NDc0KQotRXJyb3IuYWRkX2ZpZWxkKDIsJ01lc3NhZ2UnLDc5MzYpCi0KLUV2ZW50TWFwcGluZyA9IFRhYmxlKCdFdmVudE1hcHBpbmcnKQotRXZlbnRNYXBwaW5nLmFkZF9maWVsZCgxLCdEaWFsb2dfJywxMTU5MikKLUV2ZW50TWFwcGluZy5hZGRfZmllbGQoMiwnQ29udHJvbF8nLDExNTcwKQotRXZlbnRNYXBwaW5nLmFkZF9maWVsZCgzLCdFdmVudCcsMTE1NzApCi1FdmVudE1hcHBpbmcuYWRkX2ZpZWxkKDQsJ0F0dHJpYnV0ZScsMzM3OCkKLQotRXh0ZW5zaW9uID0gVGFibGUoJ0V4dGVuc2lvbicpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDEsJ0V4dGVuc2lvbicsMTE3NzUpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4MkRGRikKLUV4dGVuc2lvbi5hZGRfZmllbGQoMywnUHJvZ0lkXycsNzY3OSkKLUV4dGVuc2lvbi5hZGRfZmllbGQoNCwnTUlNRV8nLDc0ODgpCi1FeHRlbnNpb24uYWRkX2ZpZWxkKDUsJ0ZlYXR1cmVfJywzMzY2KQotCi1NSU1FID0gVGFibGUoJ01JTUUnKQotTUlNRS5hZGRfZmllbGQoMSwnQ29udGVudFR5cGUnLDExNTg0KQotTUlNRS5hZGRfZmllbGQoMiwnRXh0ZW5zaW9uXycsMzU4MykKLU1JTUUuYWRkX2ZpZWxkKDMsJ0NMU0lEJyw3NDYyKQotCi1GZWF0dXJlQ29tcG9uZW50cyA9IFRhYmxlKCdGZWF0dXJlQ29tcG9uZW50cycpCi1GZWF0dXJlQ29tcG9uZW50cy5hZGRfZmllbGQoMSwnRmVhdHVyZV8nLDExNTU4KQotRmVhdHVyZUNvbXBvbmVudHMuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4MkRGRikKLQotRmlsZVNGUENhdGFsb2cgPSBUYWJsZSgnRmlsZVNGUENhdGFsb2cnKQotRmlsZVNGUENhdGFsb2cuYWRkX2ZpZWxkKDEsJ0ZpbGVfJywweDJERkYpCi1GaWxlU0ZQQ2F0YWxvZy5hZGRfZmllbGQoMiwnU0ZQQ2F0YWxvZ18nLDExNzc1KQotCi1TRlBDYXRhbG9nID0gVGFibGUoJ1NGUENhdGFsb2cnKQotU0ZQQ2F0YWxvZy5hZGRfZmllbGQoMSwnU0ZQQ2F0YWxvZycsMTE3NzUpCi1TRlBDYXRhbG9nLmFkZF9maWVsZCgyLCdDYXRhbG9nJywyMzA0KQotU0ZQQ2F0YWxvZy5hZGRfZmllbGQoMywnRGVwZW5kZW5jeScsNzQyNCkKLQotRm9udCA9IFRhYmxlKCdGb250JykKLUZvbnQuYWRkX2ZpZWxkKDEsJ0ZpbGVfJywweDJERkYpCi1Gb250LmFkZF9maWVsZCgyLCdGb250VGl0bGUnLDc1NTIpCi0KLUluaUZpbGUgPSBUYWJsZSgnSW5pRmlsZScpCi1JbmlGaWxlLmFkZF9maWVsZCgxLCdJbmlGaWxlJywxMTU5MikKLUluaUZpbGUuYWRkX2ZpZWxkKDIsJ0ZpbGVOYW1lJyw0MDk1KQotSW5pRmlsZS5hZGRfZmllbGQoMywnRGlyUHJvcGVydHknLDc0OTYpCi1JbmlGaWxlLmFkZF9maWVsZCg0LCdTZWN0aW9uJywzOTM2KQotSW5pRmlsZS5hZGRfZmllbGQoNSwnS2V5JywzOTY4KQotSW5pRmlsZS5hZGRfZmllbGQoNiwnVmFsdWUnLDQwOTUpCi1JbmlGaWxlLmFkZF9maWVsZCg3LCdBY3Rpb24nLDEyODIpCi1JbmlGaWxlLmFkZF9maWVsZCg4LCdDb21wb25lbnRfJywweERGRikKLQotSW5pTG9jYXRvciA9IFRhYmxlKCdJbmlMb2NhdG9yJykKLUluaUxvY2F0b3IuYWRkX2ZpZWxkKDEsJ1NpZ25hdHVyZV8nLDExNTkyKQotSW5pTG9jYXRvci5hZGRfZmllbGQoMiwnRmlsZU5hbWUnLDM1ODMpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCgzLCdTZWN0aW9uJywzNDI0KQotSW5pTG9jYXRvci5hZGRfZmllbGQoNCwnS2V5JywzNDU2KQotSW5pTG9jYXRvci5hZGRfZmllbGQoNSwnRmllbGQnLDUzNzgpCi1JbmlMb2NhdG9yLmFkZF9maWVsZCg2LCdUeXBlJyw1Mzc4KQotCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlID0gVGFibGUoJ0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnKQotSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZS5hZGRfZmllbGQoMSwnQWN0aW9uJywweDJERkYpCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgyLCdDb25kaXRpb24nLDc2NzkpCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotSW5zdGFsbFVJU2VxdWVuY2UgPSBUYWJsZSgnSW5zdGFsbFVJU2VxdWVuY2UnKQotSW5zdGFsbFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDEsJ0FjdGlvbicsMHgyREZGKQotSW5zdGFsbFVJU2VxdWVuY2UuYWRkX2ZpZWxkKDIsJ0NvbmRpdGlvbicsNzY3OSkKLUluc3RhbGxVSVNlcXVlbmNlLmFkZF9maWVsZCgzLCdTZXF1ZW5jZScsNTM3OCkKLQotSXNvbGF0ZWRDb21wb25lbnQgPSBUYWJsZSgnSXNvbGF0ZWRDb21wb25lbnQnKQotSXNvbGF0ZWRDb21wb25lbnQuYWRkX2ZpZWxkKDEsJ0NvbXBvbmVudF9TaGFyZWQnLDB4MkRGRikKLUlzb2xhdGVkQ29tcG9uZW50LmFkZF9maWVsZCgyLCdDb21wb25lbnRfQXBwbGljYXRpb24nLDB4MkRGRikKLQotTGF1bmNoQ29uZGl0aW9uID0gVGFibGUoJ0xhdW5jaENvbmRpdGlvbicpCi1MYXVuY2hDb25kaXRpb24uYWRkX2ZpZWxkKDEsJ0NvbmRpdGlvbicsMTE3NzUpCi1MYXVuY2hDb25kaXRpb24uYWRkX2ZpZWxkKDIsJ0Rlc2NyaXB0aW9uJyw0MDk1KQotCi1MaXN0Qm94ID0gVGFibGUoJ0xpc3RCb3gnKQotTGlzdEJveC5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotTGlzdEJveC5hZGRfZmllbGQoMiwnT3JkZXInLDk0NzQpCi1MaXN0Qm94LmFkZF9maWVsZCgzLCdWYWx1ZScsMzM5MikKLUxpc3RCb3guYWRkX2ZpZWxkKDQsJ1RleHQnLDgwMDApCi0KLUxpc3RWaWV3ID0gVGFibGUoJ0xpc3RWaWV3JykKLUxpc3RWaWV3LmFkZF9maWVsZCgxLCdQcm9wZXJ0eScsMTE1OTIpCi1MaXN0Vmlldy5hZGRfZmllbGQoMiwnT3JkZXInLDk0NzQpCi1MaXN0Vmlldy5hZGRfZmllbGQoMywnVmFsdWUnLDMzOTIpCi1MaXN0Vmlldy5hZGRfZmllbGQoNCwnVGV4dCcsODAwMCkKLUxpc3RWaWV3LmFkZF9maWVsZCg1LCdCaW5hcnlfJyw3NDk2KQotCi1Mb2NrUGVybWlzc2lvbnMgPSBUYWJsZSgnTG9ja1Blcm1pc3Npb25zJykKLUxvY2tQZXJtaXNzaW9ucy5hZGRfZmllbGQoMSwnTG9ja09iamVjdCcsMTE1OTIpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDIsJ1RhYmxlJywxMTU1MikKLUxvY2tQZXJtaXNzaW9ucy5hZGRfZmllbGQoMywnRG9tYWluJywxNTg3MSkKLUxvY2tQZXJtaXNzaW9ucy5hZGRfZmllbGQoNCwnVXNlcicsMTE3NzUpCi1Mb2NrUGVybWlzc2lvbnMuYWRkX2ZpZWxkKDUsJ1Blcm1pc3Npb24nLDQzNTYpCi0KLU1lZGlhID0gVGFibGUoJ01lZGlhJykKLU1lZGlhLmFkZF9maWVsZCgxLCdEaXNrSWQnLDk0NzQpCi1NZWRpYS5hZGRfZmllbGQoMiwnTGFzdFNlcXVlbmNlJywxMjgyKQotTWVkaWEuYWRkX2ZpZWxkKDMsJ0Rpc2tQcm9tcHQnLDgwMDApCi1NZWRpYS5hZGRfZmllbGQoNCwnQ2FiaW5ldCcsNzY3OSkKLU1lZGlhLmFkZF9maWVsZCg1LCdWb2x1bWVMYWJlbCcsNzQ1NikKLU1lZGlhLmFkZF9maWVsZCg2LCdTb3VyY2UnLDc0OTYpCi0KLU1vdmVGaWxlID0gVGFibGUoJ01vdmVGaWxlJykKLU1vdmVGaWxlLmFkZF9maWVsZCgxLCdGaWxlS2V5JywxMTU5MikKLU1vdmVGaWxlLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLU1vdmVGaWxlLmFkZF9maWVsZCgzLCdTb3VyY2VOYW1lJyw4MTkxKQotTW92ZUZpbGUuYWRkX2ZpZWxkKDQsJ0Rlc3ROYW1lJyw4MTkxKQotTW92ZUZpbGUuYWRkX2ZpZWxkKDUsJ1NvdXJjZUZvbGRlcicsNzQ5NikKLU1vdmVGaWxlLmFkZF9maWVsZCg2LCdEZXN0Rm9sZGVyJywzNDAwKQotTW92ZUZpbGUuYWRkX2ZpZWxkKDcsJ09wdGlvbnMnLDEyODIpCi0KLU1zaUFzc2VtYmx5ID0gVGFibGUoJ01zaUFzc2VtYmx5JykKLU1zaUFzc2VtYmx5LmFkZF9maWVsZCgxLCdDb21wb25lbnRfJywweDJERkYpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoMiwnRmVhdHVyZV8nLDMzNjYpCi1Nc2lBc3NlbWJseS5hZGRfZmllbGQoMywnRmlsZV9NYW5pZmVzdCcsMHgxREZGKQotTXNpQXNzZW1ibHkuYWRkX2ZpZWxkKDQsJ0ZpbGVfQXBwbGljYXRpb24nLDB4MURGRikKLU1zaUFzc2VtYmx5LmFkZF9maWVsZCg1LCdBdHRyaWJ1dGVzJyw1Mzc4KQotCi1Nc2lBc3NlbWJseU5hbWUgPSBUYWJsZSgnTXNpQXNzZW1ibHlOYW1lJykKLU1zaUFzc2VtYmx5TmFtZS5hZGRfZmllbGQoMSwnQ29tcG9uZW50XycsMHgyREZGKQotTXNpQXNzZW1ibHlOYW1lLmFkZF9maWVsZCgyLCdOYW1lJywxMTc3NSkKLU1zaUFzc2VtYmx5TmFtZS5hZGRfZmllbGQoMywnVmFsdWUnLDM1ODMpCi0KLU1zaURpZ2l0YWxDZXJ0aWZpY2F0ZSA9IFRhYmxlKCdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnKQotTXNpRGlnaXRhbENlcnRpZmljYXRlLmFkZF9maWVsZCgxLCdEaWdpdGFsQ2VydGlmaWNhdGUnLDExNTkyKQotTXNpRGlnaXRhbENlcnRpZmljYXRlLmFkZF9maWVsZCgyLCdDZXJ0RGF0YScsMjMwNCkKLQotTXNpRGlnaXRhbFNpZ25hdHVyZSA9IFRhYmxlKCdNc2lEaWdpdGFsU2lnbmF0dXJlJykKLU1zaURpZ2l0YWxTaWduYXR1cmUuYWRkX2ZpZWxkKDEsJ1RhYmxlJywxMTU1MikKLU1zaURpZ2l0YWxTaWduYXR1cmUuYWRkX2ZpZWxkKDIsJ1NpZ25PYmplY3QnLDExNTkyKQotTXNpRGlnaXRhbFNpZ25hdHVyZS5hZGRfZmllbGQoMywnRGlnaXRhbENlcnRpZmljYXRlXycsMzQwMCkKLU1zaURpZ2l0YWxTaWduYXR1cmUuYWRkX2ZpZWxkKDQsJ0hhc2gnLDY0MDApCi0KLU1zaUZpbGVIYXNoID0gVGFibGUoJ01zaUZpbGVIYXNoJykKLU1zaUZpbGVIYXNoLmFkZF9maWVsZCgxLCdGaWxlXycsMHgyREZGKQotTXNpRmlsZUhhc2guYWRkX2ZpZWxkKDIsJ09wdGlvbnMnLDEyODIpCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoMywnSGFzaFBhcnQxJywyNjApCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoNCwnSGFzaFBhcnQyJywyNjApCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoNSwnSGFzaFBhcnQzJywyNjApCi1Nc2lGaWxlSGFzaC5hZGRfZmllbGQoNiwnSGFzaFBhcnQ0JywyNjApCi0KLU1zaVBhdGNoSGVhZGVycyA9IFRhYmxlKCdNc2lQYXRjaEhlYWRlcnMnKQotTXNpUGF0Y2hIZWFkZXJzLmFkZF9maWVsZCgxLCdTdHJlYW1SZWYnLDExNTU4KQotTXNpUGF0Y2hIZWFkZXJzLmFkZF9maWVsZCgyLCdIZWFkZXInLDIzMDQpCi0KLU9EQkNBdHRyaWJ1dGUgPSBUYWJsZSgnT0RCQ0F0dHJpYnV0ZScpCi1PREJDQXR0cmlidXRlLmFkZF9maWVsZCgxLCdEcml2ZXJfJywxMTU5MikKLU9EQkNBdHRyaWJ1dGUuYWRkX2ZpZWxkKDIsJ0F0dHJpYnV0ZScsMTE1NjApCi1PREJDQXR0cmlidXRlLmFkZF9maWVsZCgzLCdWYWx1ZScsODE5MSkKLQotT0RCQ0RyaXZlciA9IFRhYmxlKCdPREJDRHJpdmVyJykKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDEsJ0RyaXZlcicsMTE1OTIpCi1PREJDRHJpdmVyLmFkZF9maWVsZCgyLCdDb21wb25lbnRfJywweERGRikKLU9EQkNEcml2ZXIuYWRkX2ZpZWxkKDMsJ0Rlc2NyaXB0aW9uJywzNTgzKQotT0RCQ0RyaXZlci5hZGRfZmllbGQoNCwnRmlsZV8nLDB4REZGKQotT0RCQ0RyaXZlci5hZGRfZmllbGQoNSwnRmlsZV9TZXR1cCcsMHgxREZGKQotCi1PREJDRGF0YVNvdXJjZSA9IFRhYmxlKCdPREJDRGF0YVNvdXJjZScpCi1PREJDRGF0YVNvdXJjZS5hZGRfZmllbGQoMSwnRGF0YVNvdXJjZScsMHgyREZGKQotT0RCQ0RhdGFTb3VyY2UuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotT0RCQ0RhdGFTb3VyY2UuYWRkX2ZpZWxkKDMsJ0Rlc2NyaXB0aW9uJywzNTgzKQotT0RCQ0RhdGFTb3VyY2UuYWRkX2ZpZWxkKDQsJ0RyaXZlckRlc2NyaXB0aW9uJywzNTgzKQotT0RCQ0RhdGFTb3VyY2UuYWRkX2ZpZWxkKDUsJ1JlZ2lzdHJhdGlvbicsMTI4MikKLQotT0RCQ1NvdXJjZUF0dHJpYnV0ZSA9IFRhYmxlKCdPREJDU291cmNlQXR0cmlidXRlJykKLU9EQkNTb3VyY2VBdHRyaWJ1dGUuYWRkX2ZpZWxkKDEsJ0RhdGFTb3VyY2VfJywxMTU5MikKLU9EQkNTb3VyY2VBdHRyaWJ1dGUuYWRkX2ZpZWxkKDIsJ0F0dHJpYnV0ZScsMTE1NTIpCi1PREJDU291cmNlQXR0cmlidXRlLmFkZF9maWVsZCgzLCdWYWx1ZScsODE5MSkKLQotT0RCQ1RyYW5zbGF0b3IgPSBUYWJsZSgnT0RCQ1RyYW5zbGF0b3InKQotT0RCQ1RyYW5zbGF0b3IuYWRkX2ZpZWxkKDEsJ1RyYW5zbGF0b3InLDExNTkyKQotT0RCQ1RyYW5zbGF0b3IuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotT0RCQ1RyYW5zbGF0b3IuYWRkX2ZpZWxkKDMsJ0Rlc2NyaXB0aW9uJywzNTgzKQotT0RCQ1RyYW5zbGF0b3IuYWRkX2ZpZWxkKDQsJ0ZpbGVfJywweERGRikKLU9EQkNUcmFuc2xhdG9yLmFkZF9maWVsZCg1LCdGaWxlX1NldHVwJywweDFERkYpCi0KLVBhdGNoID0gVGFibGUoJ1BhdGNoJykKLVBhdGNoLmFkZF9maWVsZCgxLCdGaWxlXycsMTE1OTIpCi1QYXRjaC5hZGRfZmllbGQoMiwnU2VxdWVuY2UnLDk0NzQpCi1QYXRjaC5hZGRfZmllbGQoMywnUGF0Y2hTaXplJywyNjApCi1QYXRjaC5hZGRfZmllbGQoNCwnQXR0cmlidXRlcycsMTI4MikKLVBhdGNoLmFkZF9maWVsZCg1LCdIZWFkZXInLDY0MDApCi1QYXRjaC5hZGRfZmllbGQoNiwnU3RyZWFtUmVmXycsNzQ2MikKLQotUGF0Y2hQYWNrYWdlID0gVGFibGUoJ1BhdGNoUGFja2FnZScpCi1QYXRjaFBhY2thZ2UuYWRkX2ZpZWxkKDEsJ1BhdGNoSWQnLDExNTU4KQotUGF0Y2hQYWNrYWdlLmFkZF9maWVsZCgyLCdNZWRpYV8nLDEyODIpCi0KLVB1Ymxpc2hDb21wb25lbnQgPSBUYWJsZSgnUHVibGlzaENvbXBvbmVudCcpCi1QdWJsaXNoQ29tcG9uZW50LmFkZF9maWVsZCgxLCdDb21wb25lbnRJZCcsMTE1NTgpCi1QdWJsaXNoQ29tcG9uZW50LmFkZF9maWVsZCgyLCdRdWFsaWZpZXInLDExNzc1KQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoMywnQ29tcG9uZW50XycsMHgyREZGKQotUHVibGlzaENvbXBvbmVudC5hZGRfZmllbGQoNCwnQXBwRGF0YScsODE5MSkKLVB1Ymxpc2hDb21wb25lbnQuYWRkX2ZpZWxkKDUsJ0ZlYXR1cmVfJywzMzY2KQotCi1SYWRpb0J1dHRvbiA9IFRhYmxlKCdSYWRpb0J1dHRvbicpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoMSwnUHJvcGVydHknLDExNTkyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDIsJ09yZGVyJyw5NDc0KQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDMsJ1ZhbHVlJywzMzkyKQotUmFkaW9CdXR0b24uYWRkX2ZpZWxkKDQsJ1gnLDEyODIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoNSwnWScsMTI4MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg2LCdXaWR0aCcsMTI4MikKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg3LCdIZWlnaHQnLDEyODIpCi1SYWRpb0J1dHRvbi5hZGRfZmllbGQoOCwnVGV4dCcsODAwMCkKLVJhZGlvQnV0dG9uLmFkZF9maWVsZCg5LCdIZWxwJyw3OTg2KQotCi1SZWdpc3RyeSA9IFRhYmxlKCdSZWdpc3RyeScpCi1SZWdpc3RyeS5hZGRfZmllbGQoMSwnUmVnaXN0cnknLDB4MkRGRikKLVJlZ2lzdHJ5LmFkZF9maWVsZCgyLCdSb290JywxMjgyKQotUmVnaXN0cnkuYWRkX2ZpZWxkKDMsJ0tleScsNDA5NSkKLVJlZ2lzdHJ5LmFkZF9maWVsZCg0LCdOYW1lJyw4MTkxKQotUmVnaXN0cnkuYWRkX2ZpZWxkKDUsJ1ZhbHVlJyw3OTM2KQotUmVnaXN0cnkuYWRkX2ZpZWxkKDYsJ0NvbXBvbmVudF8nLDB4REZGKQotCi1SZWdMb2NhdG9yID0gVGFibGUoJ1JlZ0xvY2F0b3InKQotUmVnTG9jYXRvci5hZGRfZmllbGQoMSwnU2lnbmF0dXJlXycsMTE1OTIpCi1SZWdMb2NhdG9yLmFkZF9maWVsZCgyLCdSb290JywxMjgyKQotUmVnTG9jYXRvci5hZGRfZmllbGQoMywnS2V5JywzNTgzKQotUmVnTG9jYXRvci5hZGRfZmllbGQoNCwnTmFtZScsNzY3OSkKLVJlZ0xvY2F0b3IuYWRkX2ZpZWxkKDUsJ1R5cGUnLDUzNzgpCi0KLVJlbW92ZUZpbGUgPSBUYWJsZSgnUmVtb3ZlRmlsZScpCi1SZW1vdmVGaWxlLmFkZF9maWVsZCgxLCdGaWxlS2V5JywxMTU5MikKLVJlbW92ZUZpbGUuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotUmVtb3ZlRmlsZS5hZGRfZmllbGQoMywnRmlsZU5hbWUnLDgxOTEpCi1SZW1vdmVGaWxlLmFkZF9maWVsZCg0LCdEaXJQcm9wZXJ0eScsMzQwMCkKLVJlbW92ZUZpbGUuYWRkX2ZpZWxkKDUsJ0luc3RhbGxNb2RlJywxMjgyKQotCi1SZW1vdmVJbmlGaWxlID0gVGFibGUoJ1JlbW92ZUluaUZpbGUnKQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoMSwnUmVtb3ZlSW5pRmlsZScsMTE1OTIpCi1SZW1vdmVJbmlGaWxlLmFkZF9maWVsZCgyLCdGaWxlTmFtZScsNDA5NSkKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDMsJ0RpclByb3BlcnR5Jyw3NDk2KQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoNCwnU2VjdGlvbicsMzkzNikKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDUsJ0tleScsMzk2OCkKLVJlbW92ZUluaUZpbGUuYWRkX2ZpZWxkKDYsJ1ZhbHVlJyw4MTkxKQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoNywnQWN0aW9uJywxMjgyKQotUmVtb3ZlSW5pRmlsZS5hZGRfZmllbGQoOCwnQ29tcG9uZW50XycsMHhERkYpCi0KLVJlbW92ZVJlZ2lzdHJ5ID0gVGFibGUoJ1JlbW92ZVJlZ2lzdHJ5JykKLVJlbW92ZVJlZ2lzdHJ5LmFkZF9maWVsZCgxLCdSZW1vdmVSZWdpc3RyeScsMTE1OTIpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoMiwnUm9vdCcsMTI4MikKLVJlbW92ZVJlZ2lzdHJ5LmFkZF9maWVsZCgzLCdLZXknLDQwOTUpCi1SZW1vdmVSZWdpc3RyeS5hZGRfZmllbGQoNCwnTmFtZScsODE5MSkKLVJlbW92ZVJlZ2lzdHJ5LmFkZF9maWVsZCg1LCdDb21wb25lbnRfJywweERGRikKLQotUmVzZXJ2ZUNvc3QgPSBUYWJsZSgnUmVzZXJ2ZUNvc3QnKQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDEsJ1Jlc2VydmVLZXknLDExNTkyKQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDIsJ0NvbXBvbmVudF8nLDB4REZGKQotUmVzZXJ2ZUNvc3QuYWRkX2ZpZWxkKDMsJ1Jlc2VydmVGb2xkZXInLDc0OTYpCi1SZXNlcnZlQ29zdC5hZGRfZmllbGQoNCwnUmVzZXJ2ZUxvY2FsJywyNjApCi1SZXNlcnZlQ29zdC5hZGRfZmllbGQoNSwnUmVzZXJ2ZVNvdXJjZScsMjYwKQotCi1TZWxmUmVnID0gVGFibGUoJ1NlbGZSZWcnKQotU2VsZlJlZy5hZGRfZmllbGQoMSwnRmlsZV8nLDB4MkRGRikKLVNlbGZSZWcuYWRkX2ZpZWxkKDIsJ0Nvc3QnLDUzNzgpCi0KLVNlcnZpY2VDb250cm9sID0gVGFibGUoJ1NlcnZpY2VDb250cm9sJykKLVNlcnZpY2VDb250cm9sLmFkZF9maWVsZCgxLCdTZXJ2aWNlQ29udHJvbCcsMTE1OTIpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoMiwnTmFtZScsNDA5NSkKLVNlcnZpY2VDb250cm9sLmFkZF9maWVsZCgzLCdFdmVudCcsMTI4MikKLVNlcnZpY2VDb250cm9sLmFkZF9maWVsZCg0LCdBcmd1bWVudHMnLDgxOTEpCi1TZXJ2aWNlQ29udHJvbC5hZGRfZmllbGQoNSwnV2FpdCcsNTM3OCkKLVNlcnZpY2VDb250cm9sLmFkZF9maWVsZCg2LCdDb21wb25lbnRfJywweERGRikKLQotU2VydmljZUluc3RhbGwgPSBUYWJsZSgnU2VydmljZUluc3RhbGwnKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDEsJ1NlcnZpY2VJbnN0YWxsJywxMTU5MikKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgyLCdOYW1lJywzNTgzKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDMsJ0Rpc3BsYXlOYW1lJyw4MTkxKQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDQsJ1NlcnZpY2VUeXBlJywyNjApCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoNSwnU3RhcnRUeXBlJywyNjApCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoNiwnRXJyb3JDb250cm9sJywyNjApCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoNywnTG9hZE9yZGVyR3JvdXAnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoOCwnRGVwZW5kZW5jaWVzJyw3Njc5KQotU2VydmljZUluc3RhbGwuYWRkX2ZpZWxkKDksJ1N0YXJ0TmFtZScsNzY3OSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgxMCwnUGFzc3dvcmQnLDc2NzkpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMTEsJ0FyZ3VtZW50cycsNzY3OSkKLVNlcnZpY2VJbnN0YWxsLmFkZF9maWVsZCgxMiwnQ29tcG9uZW50XycsMHhERkYpCi1TZXJ2aWNlSW5zdGFsbC5hZGRfZmllbGQoMTMsJ0Rlc2NyaXB0aW9uJyw4MTkxKQotCi1TaG9ydGN1dCA9IFRhYmxlKCdTaG9ydGN1dCcpCi1TaG9ydGN1dC5hZGRfZmllbGQoMSwnU2hvcnRjdXQnLDExNTkyKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDIsJ0RpcmVjdG9yeV8nLDB4REZGKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDMsJ05hbWUnLDM5NjgpCi1TaG9ydGN1dC5hZGRfZmllbGQoNCwnQ29tcG9uZW50XycsMHhERkYpCi1TaG9ydGN1dC5hZGRfZmllbGQoNSwnVGFyZ2V0JywzNDAwKQotU2hvcnRjdXQuYWRkX2ZpZWxkKDYsJ0FyZ3VtZW50cycsNzY3OSkKLVNob3J0Y3V0LmFkZF9maWVsZCg3LCdEZXNjcmlwdGlvbicsODE5MSkKLVNob3J0Y3V0LmFkZF9maWVsZCg4LCdIb3RrZXknLDUzNzgpCi1TaG9ydGN1dC5hZGRfZmllbGQoOSwnSWNvbl8nLDc0OTYpCi1TaG9ydGN1dC5hZGRfZmllbGQoMTAsJ0ljb25JbmRleCcsNTM3OCkKLVNob3J0Y3V0LmFkZF9maWVsZCgxMSwnU2hvd0NtZCcsNTM3OCkKLVNob3J0Y3V0LmFkZF9maWVsZCgxMiwnV2tEaXInLDc0OTYpCi0KLVNpZ25hdHVyZSA9IFRhYmxlKCdTaWduYXR1cmUnKQotU2lnbmF0dXJlLmFkZF9maWVsZCgxLCdTaWduYXR1cmUnLDExNTkyKQotU2lnbmF0dXJlLmFkZF9maWVsZCgyLCdGaWxlTmFtZScsMzU4MykKLVNpZ25hdHVyZS5hZGRfZmllbGQoMywnTWluVmVyc2lvbicsNzQ0NCkKLVNpZ25hdHVyZS5hZGRfZmllbGQoNCwnTWF4VmVyc2lvbicsNzQ0NCkKLVNpZ25hdHVyZS5hZGRfZmllbGQoNSwnTWluU2l6ZScsNDM1NikKLVNpZ25hdHVyZS5hZGRfZmllbGQoNiwnTWF4U2l6ZScsNDM1NikKLVNpZ25hdHVyZS5hZGRfZmllbGQoNywnTWluRGF0ZScsNDM1NikKLVNpZ25hdHVyZS5hZGRfZmllbGQoOCwnTWF4RGF0ZScsNDM1NikKLVNpZ25hdHVyZS5hZGRfZmllbGQoOSwnTGFuZ3VhZ2VzJyw3Njc5KQotCi1UZXh0U3R5bGUgPSBUYWJsZSgnVGV4dFN0eWxlJykKLVRleHRTdHlsZS5hZGRfZmllbGQoMSwnVGV4dFN0eWxlJywxMTU5MikKLVRleHRTdHlsZS5hZGRfZmllbGQoMiwnRmFjZU5hbWUnLDMzNjApCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDMsJ1NpemUnLDEyODIpCi1UZXh0U3R5bGUuYWRkX2ZpZWxkKDQsJ0NvbG9yJyw0MzU2KQotVGV4dFN0eWxlLmFkZF9maWVsZCg1LCdTdHlsZUJpdHMnLDUzNzgpCi0KLVR5cGVMaWIgPSBUYWJsZSgnVHlwZUxpYicpCi1UeXBlTGliLmFkZF9maWVsZCgxLCdMaWJJRCcsMTE1NTgpCi1UeXBlTGliLmFkZF9maWVsZCgyLCdMYW5ndWFnZScsOTQ3NCkKLVR5cGVMaWIuYWRkX2ZpZWxkKDMsJ0NvbXBvbmVudF8nLDB4MkRGRikKLVR5cGVMaWIuYWRkX2ZpZWxkKDQsJ1ZlcnNpb24nLDQzNTYpCi1UeXBlTGliLmFkZF9maWVsZCg1LCdEZXNjcmlwdGlvbicsODA2NCkKLVR5cGVMaWIuYWRkX2ZpZWxkKDYsJ0RpcmVjdG9yeV8nLDB4MURGRikKLVR5cGVMaWIuYWRkX2ZpZWxkKDcsJ0ZlYXR1cmVfJywzMzY2KQotVHlwZUxpYi5hZGRfZmllbGQoOCwnQ29zdCcsNDM1NikKLQotVUlUZXh0ID0gVGFibGUoJ1VJVGV4dCcpCi1VSVRleHQuYWRkX2ZpZWxkKDEsJ0tleScsMTE1OTIpCi1VSVRleHQuYWRkX2ZpZWxkKDIsJ1RleHQnLDgxOTEpCi0KLVVwZ3JhZGUgPSBUYWJsZSgnVXBncmFkZScpCi1VcGdyYWRlLmFkZF9maWVsZCgxLCdVcGdyYWRlQ29kZScsMTE1NTgpCi1VcGdyYWRlLmFkZF9maWVsZCgyLCdWZXJzaW9uTWluJywxNTYzNikKLVVwZ3JhZGUuYWRkX2ZpZWxkKDMsJ1ZlcnNpb25NYXgnLDE1NjM2KQotVXBncmFkZS5hZGRfZmllbGQoNCwnTGFuZ3VhZ2UnLDE1ODcxKQotVXBncmFkZS5hZGRfZmllbGQoNSwnQXR0cmlidXRlcycsODQ1MikKLVVwZ3JhZGUuYWRkX2ZpZWxkKDYsJ1JlbW92ZScsNzY3OSkKLVVwZ3JhZGUuYWRkX2ZpZWxkKDcsJ0FjdGlvblByb3BlcnR5JywzNDAwKQotCi1WZXJiID0gVGFibGUoJ1ZlcmInKQotVmVyYi5hZGRfZmllbGQoMSwnRXh0ZW5zaW9uXycsMTE3NzUpCi1WZXJiLmFkZF9maWVsZCgyLCdWZXJiJywxMTU1MikKLVZlcmIuYWRkX2ZpZWxkKDMsJ1NlcXVlbmNlJyw1Mzc4KQotVmVyYi5hZGRfZmllbGQoNCwnQ29tbWFuZCcsODE5MSkKLVZlcmIuYWRkX2ZpZWxkKDUsJ0FyZ3VtZW50Jyw4MTkxKQotCi10YWJsZXM9W19WYWxpZGF0aW9uLCBBY3Rpb25UZXh0LCBBZG1pbkV4ZWN1dGVTZXF1ZW5jZSwgQ29uZGl0aW9uLCBBZG1pblVJU2VxdWVuY2UsIEFkdnRFeGVjdXRlU2VxdWVuY2UsIEFkdnRVSVNlcXVlbmNlLCBBcHBJZCwgQXBwU2VhcmNoLCBQcm9wZXJ0eSwgQkJDb250cm9sLCBCaWxsYm9hcmQsIEZlYXR1cmUsIEJpbmFyeSwgQmluZEltYWdlLCBGaWxlLCBDQ1BTZWFyY2gsIENoZWNrQm94LCBDbGFzcywgQ29tcG9uZW50LCBJY29uLCBQcm9nSWQsIENvbWJvQm94LCBDb21wTG9jYXRvciwgQ29tcGx1cywgRGlyZWN0b3J5LCBDb250cm9sLCBEaWFsb2csIENvbnRyb2xDb25kaXRpb24sIENvbnRyb2xFdmVudCwgQ3JlYXRlRm9sZGVyLCBDdXN0b21BY3Rpb24sIERyTG9jYXRvciwgRHVwbGljYXRlRmlsZSwgRW52aXJvbm1lbnQsIEVycm9yLCBFdmVudE1hcHBpbmcsIEV4dGVuc2lvbiwgTUlNRSwgRmVhdHVyZUNvbXBvbmVudHMsIEZpbGVTRlBDYXRhbG9nLCBTRlBDYXRhbG9nLCBGb250LCBJbmlGaWxlLCBJbmlMb2NhdG9yLCBJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlLCBJbnN0YWxsVUlTZXF1ZW5jZSwgSXNvbGF0ZWRDb21wb25lbnQsIExhdW5jaENvbmRpdGlvbiwgTGlzdEJveCwgTGlzdFZpZXcsIExvY2tQZXJtaXNzaW9ucywgTWVkaWEsIE1vdmVGaWxlLCBNc2lBc3NlbWJseSwgTXNpQXNzZW1ibHlOYW1lLCBNc2lEaWdpdGFsQ2VydGlmaWNhdGUsIE1zaURpZ2l0YWxTaWduYXR1cmUsIE1zaUZpbGVIYXNoLCBNc2lQYXRjaEhlYWRlcnMsIE9EQkNBdHRyaWJ1dGUsIE9EQkNEcml2ZXIsIE9EQkNEYXRhU291cmNlLCBPREJDU291cmNlQXR0cmlidXRlLCBPREJDVHJhbnNsYXRvciwgUGF0Y2gsIFBhdGNoUGFja2FnZSwgUHVibGlzaENvbXBvbmVudCwgUmFkaW9CdXR0b24sIFJlZ2lzdHJ5LCBSZWdMb2NhdG9yLCBSZW1vdmVGaWxlLCBSZW1vdmVJbmlGaWxlLCBSZW1vdmVSZWdpc3RyeSwgUmVzZXJ2ZUNvc3QsIFNlbGZSZWcsIFNlcnZpY2VDb250cm9sLCBTZXJ2aWNlSW5zdGFsbCwgU2hvcnRjdXQsIFNpZ25hdHVyZSwgVGV4dFN0eWxlLCBUeXBlTGliLCBVSVRleHQsIFVwZ3JhZGUsIFZlcmJdCi0KLV9WYWxpZGF0aW9uX3JlY29yZHMgPSBbCi0odSdfVmFsaWRhdGlvbicsdSdUYWJsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0YWJsZScsKSwKLSh1J19WYWxpZGF0aW9uJyx1J0NvbHVtbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBjb2x1bW4nLCksCi0odSdfVmFsaWRhdGlvbicsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnRGVzY3JpcHRpb24gb2YgY29sdW1uJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnU2V0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdTZXQgb2YgdmFsdWVzIHRoYXQgYXJlIHBlcm1pdHRlZCcsKSwKLSh1J19WYWxpZGF0aW9uJyx1J0NhdGVnb3J5Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dDtGb3JtYXR0ZWQ7VGVtcGxhdGU7Q29uZGl0aW9uO0d1aWQ7UGF0aDtWZXJzaW9uO0xhbmd1YWdlO0lkZW50aWZpZXI7QmluYXJ5O1VwcGVyQ2FzZTtMb3dlckNhc2U7RmlsZW5hbWU7UGF0aHM7QW55UGF0aDtXaWxkQ2FyZEZpbGVuYW1lO1JlZ1BhdGg7S2V5Rm9ybWF0dGVkO0N1c3RvbVNvdXJjZTtQcm9wZXJ0eTtDYWJpbmV0O1Nob3J0Y3V0O1VSTCcsdSdTdHJpbmcgY2F0ZWdvcnknLCksCi0odSdfVmFsaWRhdGlvbicsdSdLZXlDb2x1bW4nLHUnWScsMSwzMixOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbHVtbiB0byB3aGljaCBmb3JlaWduIGtleSBjb25uZWN0cycsKSwKLSh1J19WYWxpZGF0aW9uJyx1J0tleVRhYmxlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3IgZm9yZWlnbiBrZXksIE5hbWUgb2YgdGFibGUgdG8gd2hpY2ggZGF0YSBtdXN0IGxpbmsnLCksCi0odSdfVmFsaWRhdGlvbicsdSdNYXhWYWx1ZScsdSdZJywtMjE0NzQ4MzY0NywyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWF4aW11bSB2YWx1ZSBhbGxvd2VkJywpLAotKHUnX1ZhbGlkYXRpb24nLHUnTWluVmFsdWUnLHUnWScsLTIxNDc0ODM2NDcsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01pbmltdW0gdmFsdWUgYWxsb3dlZCcsKSwKLSh1J19WYWxpZGF0aW9uJyx1J051bGxhYmxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnWTtOO0AnLHUnV2hldGhlciB0aGUgY29sdW1uIGlzIG51bGxhYmxlJywpLAotKHUnQWN0aW9uVGV4dCcsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTG9jYWxpemVkIGRlc2NyaXB0aW9uIGRpc3BsYXllZCBpbiBwcm9ncmVzcyBkaWFsb2cgYW5kIGxvZyB3aGVuIGFjdGlvbiBpcyBleGVjdXRpbmcuJywpLAotKHUnQWN0aW9uVGV4dCcsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGJlIGRlc2NyaWJlZC4nLCksCi0odSdBY3Rpb25UZXh0Jyx1J1RlbXBsYXRlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGVtcGxhdGUnLE5vbmUsIHUnT3B0aW9uYWwgbG9jYWxpemVkIGZvcm1hdCB0ZW1wbGF0ZSB1c2VkIHRvIGZvcm1hdCBhY3Rpb24gZGF0YSByZWNvcmRzIGZvciBkaXNwbGF5IGR1cmluZyBhY3Rpb24gZXhlY3V0aW9uLicsKSwKLSh1J0FkbWluRXhlY3V0ZVNlcXVlbmNlJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJywpLAotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0FkbWluRXhlY3V0ZVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnQ29uZGl0aW9uJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdFeHByZXNzaW9uIGV2YWx1YXRlZCB0byBkZXRlcm1pbmUgaWYgTGV2ZWwgaW4gdGhlIEZlYXR1cmUgdGFibGUgaXMgdG8gY2hhbmdlLicsKSwKLSh1J0NvbmRpdGlvbicsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBhIEZlYXR1cmUgZW50cnkgaW4gRmVhdHVyZSB0YWJsZS4nLCksCi0odSdDb25kaXRpb24nLHUnTGV2ZWwnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J05ldyBzZWxlY3Rpb24gTGV2ZWwgdG8gc2V0IGluIEZlYXR1cmUgdGFibGUgaWYgQ29uZGl0aW9uIGV2YWx1YXRlcyB0byBUUlVFLicsKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnT3B0aW9uYWwgZXhwcmVzc2lvbiB3aGljaCBza2lwcyB0aGUgYWN0aW9uIGlmIGV2YWx1YXRlcyB0byBleHBGYWxzZS5JZiB0aGUgZXhwcmVzc2lvbiBzeW50YXggaXMgaW52YWxpZCwgdGhlIGVuZ2luZSB3aWxsIHRlcm1pbmF0ZSwgcmV0dXJuaW5nIGllc0JhZEFjdGlvbkRhdGEuJywpLAotKHUnQWRtaW5VSVNlcXVlbmNlJyx1J1NlcXVlbmNlJyx1J1knLC00LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJywpLAotKHUnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdBZHZ0VUlTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0FkdnRVSVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdBZHZ0VUlTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0FwcElkJyx1J0FwcElkJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J0FjdGl2YXRlQXRTdG9yYWdlJyx1J1knLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnRGxsU3Vycm9nYXRlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgTm9uZSwgKSwKLSh1J0FwcElkJyx1J0xvY2FsU2VydmljZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdSZW1vdGVTZXJ2ZXJOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCBOb25lLCApLAotKHUnQXBwSWQnLHUnUnVuQXNJbnRlcmFjdGl2ZVVzZXInLHUnWScsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsICksCi0odSdBcHBJZCcsdSdTZXJ2aWNlUGFyYW1ldGVycycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIE5vbmUsICksCi0odSdBcHBTZWFyY2gnLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBwcm9wZXJ0eSBhc3NvY2lhdGVkIHdpdGggYSBTaWduYXR1cmUnLCksCi0odSdBcHBTZWFyY2gnLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J1NpZ25hdHVyZTtSZWdMb2NhdG9yO0luaUxvY2F0b3I7RHJMb2NhdG9yO0NvbXBMb2NhdG9yJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlLCAgUmVnTG9jYXRvciwgSW5pTG9jYXRvciwgQ29tcExvY2F0b3IgYW5kIHRoZSBEckxvY2F0b3IgdGFibGVzLicsKSwKLSh1J1Byb3BlcnR5Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHByb3BlcnR5LCB1cHBlcmNhc2UgaWYgc2V0dGFibGUgYnkgbGF1bmNoZXIgb3IgbG9hZGVyLicsKSwKLSh1J1Byb3BlcnR5Jyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdTdHJpbmcgdmFsdWUgZm9yIHByb3BlcnR5LiAgTmV2ZXIgbnVsbCBvciBlbXB0eS4nLCksCi0odSdCQkNvbnRyb2wnLHUnVHlwZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J1knLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Egc3RyaW5nIHVzZWQgdG8gc2V0IHRoZSBpbml0aWFsIHRleHQgY29udGFpbmVkIHdpdGhpbiBhIGNvbnRyb2wgKGlmIGFwcHJvcHJpYXRlKS4nLCksCi0odSdCQkNvbnRyb2wnLHUnQkJDb250cm9sJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRoZSBjb250cm9sLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgYmlsbGJvYXJkLCBidXQgY2FuIHJlcGVhdCBvbiBkaWZmZXJlbnQgYmlsbGJvYXJkLicsKSwKLSh1J0JCQ29udHJvbCcsdSdBdHRyaWJ1dGVzJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgMzItYml0IHdvcmQgdGhhdCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZSBmbGFncyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgY29udHJvbC4nLCksCi0odSdCQkNvbnRyb2wnLHUnQmlsbGJvYXJkXycsdSdOJyxOb25lLCBOb25lLCB1J0JpbGxib2FyZCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRXh0ZXJuYWwga2V5IHRvIHRoZSBCaWxsYm9hcmQgdGFibGUsIG5hbWUgb2YgdGhlIGJpbGxib2FyZC4nLCksCi0odSdCQkNvbnRyb2wnLHUnSGVpZ2h0Jyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdCQkNvbnRyb2wnLHUnV2lkdGgnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1dpZHRoIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQkJDb250cm9sJyx1J1gnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdCaWxsYm9hcmQnLHUnQWN0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbmFtZSBvZiBhbiBhY3Rpb24uIFRoZSBiaWxsYm9hcmQgaXMgZGlzcGxheWVkIGR1cmluZyB0aGUgcHJvZ3Jlc3MgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGlzIGFjdGlvbi4nLCksCi0odSdCaWxsYm9hcmQnLHUnQmlsbGJvYXJkJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHRoZSBiaWxsYm9hcmQuJywpLAotKHUnQmlsbGJvYXJkJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnQW4gZXh0ZXJuYWwga2V5IHRvIHRoZSBGZWF0dXJlIFRhYmxlLiBUaGUgYmlsbGJvYXJkIGlzIHNob3duIG9ubHkgaWYgdGhpcyBmZWF0dXJlIGlzIGJlaW5nIGluc3RhbGxlZC4nLCksCi0odSdCaWxsYm9hcmQnLHUnT3JkZXJpbmcnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlci4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBiaWxsYm9hcmQgY29ycmVzcG9uZGluZyB0byBhbiBhY3Rpb24gdGhleSB3aWxsIGJlIHNob3duIGluIHRoZSBvcmRlciBkZWZpbmVkIGJ5IHRoaXMgY29sdW1uLicsKSwKLSh1J0ZlYXR1cmUnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0xvbmdlciBkZXNjcmlwdGl2ZSB0ZXh0IGRlc2NyaWJpbmcgYSB2aXNpYmxlIGZlYXR1cmUgaXRlbS4nLCksCi0odSdGZWF0dXJlJyx1J0F0dHJpYnV0ZXMnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScwOzE7Mjs0OzU7Njs4Ozk7MTA7MTY7MTc7MTg7MjA7MjE7MjI7MjQ7MjU7MjY7MzI7MzM7MzQ7MzY7Mzc7Mzg7NDg7NDk7NTA7NTI7NTM7NTQnLHUnRmVhdHVyZSBhdHRyaWJ1dGVzJywpLAotKHUnRmVhdHVyZScsdSdGZWF0dXJlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmZWF0dXJlIHJlY29yZC4nLCksCi0odSdGZWF0dXJlJyx1J0RpcmVjdG9yeV8nLHUnWScsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdVcHBlckNhc2UnLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIERpcmVjdG9yeSB0aGF0IGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBVSS4gQSBub24tbnVsbCB2YWx1ZSB3aWxsIGVuYWJsZSB0aGUgYnJvd3NlIGJ1dHRvbi4nLCksCi0odSdGZWF0dXJlJyx1J0xldmVsJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaW5zdGFsbCBsZXZlbCBhdCB3aGljaCByZWNvcmQgd2lsbCBiZSBpbml0aWFsbHkgc2VsZWN0ZWQuIEFuIGluc3RhbGwgbGV2ZWwgb2YgMCB3aWxsIGRpc2FibGUgYW4gaXRlbSBhbmQgcHJldmVudCBpdHMgZGlzcGxheS4nLCksCi0odSdGZWF0dXJlJyx1J1RpdGxlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdTaG9ydCB0ZXh0IGlkZW50aWZ5aW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJywpLAotKHUnRmVhdHVyZScsdSdEaXNwbGF5Jyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1lcmljIHNvcnQgb3JkZXIsIHVzZWQgdG8gZm9yY2UgYSBzcGVjaWZpYyBkaXNwbGF5IG9yZGVyaW5nLicsKSwKLSh1J0ZlYXR1cmUnLHUnRmVhdHVyZV9QYXJlbnQnLHUnWScsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdPcHRpb25hbCBrZXkgb2YgYSBwYXJlbnQgcmVjb3JkIGluIHRoZSBzYW1lIHRhYmxlLiBJZiB0aGUgcGFyZW50IGlzIG5vdCBzZWxlY3RlZCwgdGhlbiB0aGUgcmVjb3JkIHdpbGwgbm90IGJlIGluc3RhbGxlZC4gTnVsbCBpbmRpY2F0ZXMgYSByb290IGl0ZW0uJywpLAotKHUnQmluYXJ5Jyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1VuaXF1ZSBrZXkgaWRlbnRpZnlpbmcgdGhlIGJpbmFyeSBkYXRhLicsKSwKLSh1J0JpbmFyeScsdSdEYXRhJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J1RoZSB1bmZvcm1hdHRlZCBiaW5hcnkgZGF0YS4nLCksCi0odSdCaW5kSW1hZ2UnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgaW5kZXggaW50byB0aGUgRmlsZSB0YWJsZS4gVGhpcyBtdXN0IGJlIGFuIGV4ZWN1dGFibGUgZmlsZS4nLCksCi0odSdCaW5kSW1hZ2UnLHUnUGF0aCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1BhdGhzJyxOb25lLCB1J0EgbGlzdCBvZiA7ICBkZWxpbWl0ZWQgcGF0aHMgdGhhdCByZXByZXNlbnQgdGhlIHBhdGhzIHRvIGJlIHNlYXJjaGVkIGZvciB0aGUgaW1wb3J0IERMTFMuIFRoZSBsaXN0IGlzIHVzdWFsbHkgYSBsaXN0IG9mIHByb3BlcnRpZXMgZWFjaCBlbmNsb3NlZCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzIFtdIC4nLCksCi0odSdGaWxlJyx1J1NlcXVlbmNlJyx1J04nLDEsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTZXF1ZW5jZSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1lZGlhIGltYWdlczsgb3JkZXIgbXVzdCB0cmFjayBjYWJpbmV0IG9yZGVyLicsKSwKLSh1J0ZpbGUnLHUnQXR0cmlidXRlcycsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBjb250YWluaW5nIGJpdCBmbGFncyByZXByZXNlbnRpbmcgZmlsZSBhdHRyaWJ1dGVzICh3aXRoIHRoZSBkZWNpbWFsIHZhbHVlIG9mIGVhY2ggYml0IHBvc2l0aW9uIGluIHBhcmVudGhlc2VzKScsKSwKLSh1J0ZpbGUnLHUnRmlsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LiAgRm9yIHVuY29tcHJlc3NlZCBmaWxlcywgdGhpcyBmaWVsZCBpcyBpZ25vcmVkLicsKSwKLSh1J0ZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGZpbGUuJywpLAotKHUnRmlsZScsdSdGaWxlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J0ZpbGUgbmFtZSB1c2VkIGZvciBpbnN0YWxsYXRpb24sIG1heSBiZSBsb2NhbGl6ZWQuICBUaGlzIG1heSBjb250YWluIGEgInNob3J0IG5hbWV8bG9uZyBuYW1lIiBwYWlyLicsKSwKLSh1J0ZpbGUnLHUnRmlsZVNpemUnLHUnTicsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J0ZpbGUnLHUnTGFuZ3VhZ2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsTm9uZSwgdSdMaXN0IG9mIGRlY2ltYWwgbGFuZ3VhZ2UgSWRzLCBjb21tYS1zZXBhcmF0ZWQgaWYgbW9yZSB0aGFuIG9uZS4nLCksCi0odSdGaWxlJyx1J1ZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnVmVyc2lvbicsTm9uZSwgdSdWZXJzaW9uIHN0cmluZyBmb3IgdmVyc2lvbmVkIGZpbGVzOyAgQmxhbmsgZm9yIHVudmVyc2lvbmVkIGZpbGVzLicsKSwKLSh1J0NDUFNlYXJjaCcsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnU2lnbmF0dXJlO1JlZ0xvY2F0b3I7SW5pTG9jYXRvcjtEckxvY2F0b3I7Q29tcExvY2F0b3InLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUsICBSZWdMb2NhdG9yLCBJbmlMb2NhdG9yLCBDb21wTG9jYXRvciBhbmQgdGhlIERyTG9jYXRvciB0YWJsZXMuJywpLAotKHUnQ2hlY2tCb3gnLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGUgaXRlbS4nLCksCi0odSdDaGVja0JveCcsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGUgaXRlbS4nLCksCi0odSdDbGFzcycsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnTG9jYWxpemVkIGRlc2NyaXB0aW9uIGZvciB0aGUgQ2xhc3MuJywpLAotKHUnQ2xhc3MnLHUnQXR0cmlidXRlcycsdSdZJyxOb25lLCAzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NsYXNzIHJlZ2lzdHJhdGlvbiBhdHRyaWJ1dGVzLicsKSwKLSh1J0NsYXNzJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSBUYWJsZSwgc3BlY2lmeWluZyB0aGUgZmVhdHVyZSB0byB2YWxpZGF0ZSBvciBpbnN0YWxsIGluIG9yZGVyIGZvciB0aGUgQ0xTSUQgZmFjdG9yeSB0byBiZSBvcGVyYXRpb25hbC4nLCksCi0odSdDbGFzcycsdSdBcHBJZF8nLHUnWScsTm9uZSwgTm9uZSwgdSdBcHBJZCcsMSx1J0d1aWQnLE5vbmUsIHUnT3B0aW9uYWwgQXBwSUQgY29udGFpbmluZyBEQ09NIGluZm9ybWF0aW9uIGZvciBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIChzdHJpbmcgR1VJRCkuJywpLAotKHUnQ2xhc3MnLHUnQXJndW1lbnQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnb3B0aW9uYWwgYXJndW1lbnQgZm9yIExvY2FsU2VydmVycy4nLCksCi0odSdDbGFzcycsdSdDTFNJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnVGhlIENMU0lEIG9mIGFuIE9MRSBmYWN0b3J5LicsKSwKLSh1J0NsYXNzJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicsKSwKLSh1J0NsYXNzJyx1J0NvbnRleHQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBudW1lcmljIHNlcnZlciBjb250ZXh0IGZvciB0aGlzIHNlcnZlci4gQ0xTQ1RYX3h4eHgnLCksCi0odSdDbGFzcycsdSdEZWZJbnByb2NIYW5kbGVyJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLHUnMTsyOzMnLHUnT3B0aW9uYWwgZGVmYXVsdCBpbnByb2MgaGFuZGxlci4gIE9ubHkgb3B0aW9uYWxseSBwcm92aWRlZCBpZiBDb250ZXh0PUNMU0NUWF9MT0NBTF9TRVJWRVIuICBUeXBpY2FsbHkgIm9sZTMyLmRsbCIgb3IgIm1hcGkzMi5kbGwiJywpLAotKHUnQ2xhc3MnLHUnRmlsZVR5cGVNYXNrJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdPcHRpb25hbCBzdHJpbmcgY29udGFpbmluZyBpbmZvcm1hdGlvbiBmb3IgdGhlIEhLQ1J0aGlzIENMU0lEKSBrZXkuIElmIG11bHRpcGxlIHBhdHRlcm5zIGV4aXN0LCB0aGV5IG11c3QgYmUgZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uLCBhbmQgbnVtZXJpYyBzdWJrZXlzIHdpbGwgYmUgZ2VuZXJhdGVkOiAwLDEsMi4uLicsKSwKLSh1J0NsYXNzJyx1J0ljb25fJyx1J1knLE5vbmUsIE5vbmUsIHUnSWNvbicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnT3B0aW9uYWwgZm9yZWlnbiBrZXkgaW50byB0aGUgSWNvbiBUYWJsZSwgc3BlY2lmeWluZyB0aGUgaWNvbiBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENMU0lELiBXaWxsIGJlIHdyaXR0ZW4gdW5kZXIgdGhlIERlZmF1bHRJY29uIGtleS4nLCksCi0odSdDbGFzcycsdSdJY29uSW5kZXgnLHUnWScsLTMyNzY3LDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnT3B0aW9uYWwgaWNvbiBpbmRleC4nLCksCi0odSdDbGFzcycsdSdQcm9nSWRfRGVmYXVsdCcsdSdZJyxOb25lLCBOb25lLCB1J1Byb2dJZCcsMSx1J1RleHQnLE5vbmUsIHUnT3B0aW9uYWwgUHJvZ0lkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENMU0lELicsKSwKLSh1J0NvbXBvbmVudCcsdSdDb25kaXRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUiQSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCB3aWxsIGRpc2FibGUgdGhpcyBjb21wb25lbnQgaWYgdGhlIHNwZWNpZmllZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRoZSAnVHJ1ZScgc3RhdGUuIElmIGEgY29tcG9uZW50IGlzIGRpc2FibGVkLCBpdCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlICdBY3Rpb24nIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LiIsKSwKLSh1J0NvbXBvbmVudCcsdSdBdHRyaWJ1dGVzJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVtb3RlIGV4ZWN1dGlvbiBvcHRpb24sIG9uZSBvZiBpcnNFbnVtJywpLAotKHUnQ29tcG9uZW50Jyx1J0NvbXBvbmVudCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgY29tcG9uZW50IHJlY29yZC4nLCksCi0odSdDb21wb25lbnQnLHUnQ29tcG9uZW50SWQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJyxOb25lLCB1J0Egc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuJywpLAotKHUnQ29tcG9uZW50Jyx1J0RpcmVjdG9yeV8nLHUnTicsTm9uZSwgTm9uZSwgdSdEaXJlY3RvcnknLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlcXVpcmVkIGtleSBvZiBhIERpcmVjdG9yeSB0YWJsZSByZWNvcmQuIFRoaXMgaXMgYWN0dWFsbHkgYSBwcm9wZXJ0eSBuYW1lIHdob3NlIHZhbHVlIGNvbnRhaW5zIHRoZSBhY3R1YWwgcGF0aCwgc2V0IGVpdGhlciBieSB0aGUgQXBwU2VhcmNoIGFjdGlvbiBvciB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmcgb2J0YWluZWQgZnJvbSB0aGUgRGlyZWN0b3J5IHRhYmxlLicsKSwKLSh1J0NvbXBvbmVudCcsdSdLZXlQYXRoJyx1J1knLE5vbmUsIE5vbmUsIHUnRmlsZTtSZWdpc3RyeTtPREJDRGF0YVNvdXJjZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRWl0aGVyIHRoZSBwcmltYXJ5IGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlLCBSZWdpc3RyeSB0YWJsZSwgb3IgT0RCQ0RhdGFTb3VyY2UgdGFibGUuIFRoaXMgZXh0cmFjdCBwYXRoIGlzIHN0b3JlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5zdGFsbGVkLCBhbmQgaXMgdXNlZCB0byBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIHRoZSBjb21wb25lbnQgYW5kIHRvIHJldHVybiB0aGUgcGF0aCB0byBpdC4nLCksCi0odSdJY29uJyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LiBOYW1lIG9mIHRoZSBpY29uIGZpbGUuJywpLAotKHUnSWNvbicsdSdEYXRhJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J0JpbmFyeSBzdHJlYW0uIFRoZSBiaW5hcnkgaWNvbiBkYXRhIGluIFBFICguRExMIG9yIC5FWEUpIG9yIGljb24gKC5JQ08pIGZvcm1hdC4nLCksCi0odSdQcm9nSWQnLHUnRGVzY3JpcHRpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFByb2dyYW0gaWRlbnRpZmllci4nLCksCi0odSdQcm9nSWQnLHUnSWNvbl8nLHUnWScsTm9uZSwgTm9uZSwgdSdJY29uJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdPcHRpb25hbCBmb3JlaWduIGtleSBpbnRvIHRoZSBJY29uIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBpY29uIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgUHJvZ0lkLiBXaWxsIGJlIHdyaXR0ZW4gdW5kZXIgdGhlIERlZmF1bHRJY29uIGtleS4nLCksCi0odSdQcm9nSWQnLHUnSWNvbkluZGV4Jyx1J1knLC0zMjc2NywzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJywpLAotKHUnUHJvZ0lkJyx1J1Byb2dJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIFByb2dyYW0gSWRlbnRpZmllci4gUHJpbWFyeSBrZXkuJywpLAotKHUnUHJvZ0lkJyx1J0NsYXNzXycsdSdZJyxOb25lLCBOb25lLCB1J0NsYXNzJywxLHUnR3VpZCcsTm9uZSwgdSdUaGUgQ0xTSUQgb2YgYW4gT0xFIGZhY3RvcnkgY29ycmVzcG9uZGluZyB0byB0aGUgUHJvZ0lkLicsKSwKLSh1J1Byb2dJZCcsdSdQcm9nSWRfUGFyZW50Jyx1J1knLE5vbmUsIE5vbmUsIHUnUHJvZ0lkJywxLHUnVGV4dCcsTm9uZSwgdSdUaGUgUGFyZW50IFByb2dyYW0gSWRlbnRpZmllci4gSWYgc3BlY2lmaWVkLCB0aGUgUHJvZ0lkIGNvbHVtbiBiZWNvbWVzIGEgdmVyc2lvbiBpbmRlcGVuZGVudCBwcm9nIGlkLicsKSwKLSh1J0NvbWJvQm94Jyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicsKSwKLSh1J0NvbWJvQm94Jyx1J1Byb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgY29tYm9ib3guJywpLAotKHUnQ29tYm9Cb3gnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nLCksCi0odSdDb21ib0JveCcsdSdPcmRlcicsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Llx0VGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicsKSwKLSh1J0NvbXBMb2NhdG9yJyx1J1R5cGUnLHUnWScsMCwxLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBib29sZWFuIHZhbHVlIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgcmVnaXN0cnkgdmFsdWUgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbi4nLCksCi0odSdDb21wTG9jYXRvcicsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLicsKSwKLSh1J0NvbXBMb2NhdG9yJyx1J0NvbXBvbmVudElkJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdBIHN0cmluZyBHVUlEIHVuaXF1ZSB0byB0aGlzIGNvbXBvbmVudCwgdmVyc2lvbiwgYW5kIGxhbmd1YWdlLicsKSwKLSh1J0NvbXBsdXMnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIENvbVBsdXMgY29tcG9uZW50LicsKSwKLSh1J0NvbXBsdXMnLHUnRXhwVHlwZScsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29tUGx1cyBjb21wb25lbnQgYXR0cmlidXRlcy4nLCksCi0odSdEaXJlY3RvcnknLHUnRGlyZWN0b3J5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdVbmlxdWUgaWRlbnRpZmllciBmb3IgZGlyZWN0b3J5IGVudHJ5LCBwcmltYXJ5IGtleS4gSWYgYSBwcm9wZXJ0eSBieSB0aGlzIG5hbWUgaXMgZGVmaW5lZCwgaXQgY29udGFpbnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGlyZWN0b3J5LicsKSwKLSh1J0RpcmVjdG9yeScsdSdEZWZhdWx0RGlyJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdERpcicsTm9uZSwgdSJUaGUgZGVmYXVsdCBzdWItcGF0aCB1bmRlciBwYXJlbnQncyBwYXRoLiIsKSwKLSh1J0RpcmVjdG9yeScsdSdEaXJlY3RvcnlfUGFyZW50Jyx1J1knLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gdGhlIGVudHJ5IGluIHRoaXMgdGFibGUgc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBwYXJlbnQgZGlyZWN0b3J5LiBBIHJlY29yZCBwYXJlbnRlZCB0byBpdHNlbGYgb3Igd2l0aCBhIE51bGwgcGFyZW50IHJlcHJlc2VudHMgYSByb290IG9mIHRoZSBpbnN0YWxsIHRyZWUuJywpLAotKHUnQ29udHJvbCcsdSdUeXBlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdHlwZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdDb250cm9sJyx1J1knLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0Egc3RyaW5nIHVzZWQgdG8gc2V0IHRoZSBpbml0aWFsIHRleHQgY29udGFpbmVkIHdpdGhpbiBhIGNvbnRyb2wgKGlmIGFwcHJvcHJpYXRlKS4nLCksCi0odSdDb250cm9sJyx1J1Byb3BlcnR5Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbmFtZSBvZiBhIGRlZmluZWQgcHJvcGVydHkgdG8gYmUgbGlua2VkIHRvIHRoaXMgY29udHJvbC4gJywpLAotKHUnQ29udHJvbCcsdSdBdHRyaWJ1dGVzJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgMzItYml0IHdvcmQgdGhhdCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZSBmbGFncyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgY29udHJvbC4nLCksCi0odSdDb250cm9sJyx1J0hlaWdodCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbCcsdSdXaWR0aCcsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdDb250cm9sJyx1J1gnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdDb250cm9sJyx1J0NvbnRyb2wnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgdGhlIGNvbnRyb2wuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBkaWFsb2csIGJ1dCBjYW4gcmVwZWF0IG9uIGRpZmZlcmVudCBkaWFsb2dzLiAnLCksCi0odSdDb250cm9sJyx1J0NvbnRyb2xfTmV4dCcsdSdZJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBuYW1lIG9mIGFuIG90aGVyIGNvbnRyb2wgb24gdGhlIHNhbWUgZGlhbG9nLiBUaGlzIGxpbmsgZGVmaW5lcyB0aGUgdGFiIG9yZGVyIG9mIHRoZSBjb250cm9scy4gVGhlIGxpbmtzIGhhdmUgdG8gZm9ybSBvbmUgb3IgbW9yZSBjeWNsZXMhJywpLAotKHUnQ29udHJvbCcsdSdEaWFsb2dfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlhbG9nJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdFeHRlcm5hbCBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0NvbnRyb2wnLHUnSGVscCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGhlbHAgc3RyaW5ncyB1c2VkIHdpdGggdGhlIGJ1dHRvbi4gVGhlIHRleHQgaXMgb3B0aW9uYWwuICcsKSwKLSh1J0RpYWxvZycsdSdBdHRyaWJ1dGVzJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgMzItYml0IHdvcmQgdGhhdCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZSBmbGFncyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZGlhbG9nLicsKSwKLSh1J0RpYWxvZycsdSdIZWlnaHQnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hlaWdodCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnRGlhbG9nJyx1J1dpZHRoJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBkaWFsb2cuJywpLAotKHUnRGlhbG9nJyx1J0RpYWxvZycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0RpYWxvZycsdSdDb250cm9sX0NhbmNlbCcsdSdZJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0RlZmluZXMgdGhlIGNhbmNlbCBjb250cm9sLiBIaXR0aW5nIGVzY2FwZSBvciBjbGlja2luZyBvbiB0aGUgY2xvc2UgaWNvbiBvbiB0aGUgZGlhbG9nIGlzIGVxdWl2YWxlbnQgdG8gcHVzaGluZyB0aGlzIGJ1dHRvbi4nLCksCi0odSdEaWFsb2cnLHUnQ29udHJvbF9EZWZhdWx0Jyx1J1knLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb250cm9sLiBIaXR0aW5nIHJldHVybiBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJywpLAotKHUnRGlhbG9nJyx1J0NvbnRyb2xfRmlyc3QnLHUnTicsTm9uZSwgTm9uZSwgdSdDb250cm9sJywyLHUnSWRlbnRpZmllcicsTm9uZSwgdSdEZWZpbmVzIHRoZSBjb250cm9sIHRoYXQgaGFzIHRoZSBmb2N1cyB3aGVuIHRoZSBkaWFsb2cgaXMgY3JlYXRlZC4nLCksCi0odSdEaWFsb2cnLHUnSENlbnRlcmluZycsdSdOJywwLDEwMCxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyBvbiBhIDAtMTAwIHNjYWxlLiAwIG1lYW5zIGxlZnQgZW5kLCAxMDAgbWVhbnMgcmlnaHQgZW5kIG9mIHRoZSBzY3JlZW4sIDUwIGNlbnRlci4nLCksCi0odSdEaWFsb2cnLHUnVGl0bGUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUiQSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHRoZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRpdGxlIGJhciBvZiB0aGUgZGlhbG9nJ3Mgd2luZG93LiIsKSwKLSh1J0RpYWxvZycsdSdWQ2VudGVyaW5nJyx1J04nLDAsMTAwLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyBvbiBhIDAtMTAwIHNjYWxlLiAwIG1lYW5zIHRvcCBlbmQsIDEwMCBtZWFucyBib3R0b20gZW5kIG9mIHRoZSBzY3JlZW4sIDUwIGNlbnRlci4nLCksCi0odSdDb250cm9sQ29uZGl0aW9uJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHQ7RGlzYWJsZTtFbmFibGU7SGlkZTtTaG93Jyx1J1RoZSBkZXNpcmVkIGFjdGlvbiB0byBiZSB0YWtlbiBvbiB0aGUgc3BlY2lmaWVkIGNvbnRyb2wuJywpLAotKHUnQ29udHJvbENvbmRpdGlvbicsdSdDb25kaXRpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLE5vbmUsIHUnQSBzdGFuZGFyZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCBzcGVjaWZpZXMgdW5kZXIgd2hpY2ggY29uZGl0aW9ucyB0aGUgYWN0aW9uIHNob3VsZCBiZSB0cmlnZ2VyZWQuJywpLAotKHUnQ29udHJvbENvbmRpdGlvbicsdSdEaWFsb2dfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlhbG9nJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nLCksCi0odSdDb250cm9sQ29uZGl0aW9uJyx1J0NvbnRyb2xfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdDb250cm9sRXZlbnQnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgYW4gZXZlbnQgc2hvdWxkIGJlIHRyaWdnZXJlZC4nLCksCi0odSdDb250cm9sRXZlbnQnLHUnT3JkZXJpbmcnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB1c2VkIHRvIG9yZGVyIHNldmVyYWwgZXZlbnRzIHRpZWQgdG8gdGhlIHNhbWUgY29udHJvbC4gQ2FuIGJlIGxlZnQgYmxhbmsuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0FyZ3VtZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0EgdmFsdWUgdG8gYmUgdXNlZCBhcyBhIG1vZGlmaWVyIHdoZW4gdHJpZ2dlcmluZyBhIHBhcnRpY3VsYXIgZXZlbnQuJywpLAotKHUnQ29udHJvbEV2ZW50Jyx1J0RpYWxvZ18nLHUnTicsTm9uZSwgTm9uZSwgdSdEaWFsb2cnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIERpYWxvZyB0YWJsZSwgbmFtZSBvZiB0aGUgZGlhbG9nLicsKSwKLSh1J0NvbnRyb2xFdmVudCcsdSdDb250cm9sXycsdSdOJyxOb25lLCBOb25lLCB1J0NvbnRyb2wnLDIsdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgZm9yZWlnbiBrZXkgdG8gdGhlIENvbnRyb2wgdGFibGUsIG5hbWUgb2YgdGhlIGNvbnRyb2wnLCksCi0odSdDb250cm9sRXZlbnQnLHUnRXZlbnQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnQW4gaWRlbnRpZmllciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgdGhhdCBzaG91bGQgdGFrZSBwbGFjZSB3aGVuIHRoZSB1c2VyIGludGVyYWN0cyB3aXRoIGNvbnRyb2wgc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCB0d28gZW50cmllcy4nLCksCi0odSdDcmVhdGVGb2xkZXInLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J0NyZWF0ZUZvbGRlcicsdSdEaXJlY3RvcnlfJyx1J04nLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgY291bGQgYmUgZm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlLicsKSwKLSh1J0N1c3RvbUFjdGlvbicsdSdUeXBlJyx1J04nLDEsMTYzODMsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbnVtZXJpYyBjdXN0b20gYWN0aW9uIHR5cGUsIGNvbnNpc3Rpbmcgb2Ygc291cmNlIGxvY2F0aW9uLCBjb2RlIHR5cGUsIGVudHJ5LCBvcHRpb24gZmxhZ3MuJywpLAotKHUnQ3VzdG9tQWN0aW9uJyx1J0FjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5hbWUgb2YgYWN0aW9uLCBub3JtYWxseSBhcHBlYXJzIGluIHNlcXVlbmNlIHRhYmxlIHVubGVzcyBwcml2YXRlIHVzZS4nLCksCi0odSdDdXN0b21BY3Rpb24nLHUnU291cmNlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ3VzdG9tU291cmNlJyxOb25lLCB1J1RoZSB0YWJsZSByZWZlcmVuY2Ugb2YgdGhlIHNvdXJjZSBvZiB0aGUgY29kZS4nLCksCi0odSdDdXN0b21BY3Rpb24nLHUnVGFyZ2V0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0V4Y2VjdXRpb24gcGFyYW1ldGVyLCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIGN1c3RvbSBhY3Rpb24nLCksCi0odSdEckxvY2F0b3InLHUnU2lnbmF0dXJlXycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSB0YWJsZS4nLCksCi0odSdEckxvY2F0b3InLHUnUGF0aCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FueVBhdGgnLE5vbmUsIHUnVGhlIHBhdGggb24gdGhlIHVzZXIgc3lzdGVtLiBUaGlzIGlzIGEgZWl0aGVyIGEgc3VicGF0aCBiZWxvdyB0aGUgdmFsdWUgb2YgdGhlIFBhcmVudCBvciBhIGZ1bGwgcGF0aC4gVGhlIHBhdGggbWF5IGNvbnRhaW4gcHJvcGVydGllcyBlbmNsb3NlZCB3aXRoaW4gWyBdIHRoYXQgd2lsbCBiZSBleHBhbmRlZC4nLCksCi0odSdEckxvY2F0b3InLHUnRGVwdGgnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBkZXB0aCBiZWxvdyB0aGUgcGF0aCB0byB3aGljaCB0aGUgU2lnbmF0dXJlXyBpcyByZWN1cnNpdmVseSBzZWFyY2hlZC4gSWYgYWJzZW50LCB0aGUgZGVwdGggaXMgYXNzdW1lZCB0byBiZSAwLicsKSwKLSh1J0RyTG9jYXRvcicsdSdQYXJlbnQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSBwYXJlbnQgZmlsZSBzaWduYXR1cmUuIEl0IGlzIGFsc28gYSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLiBJZiBudWxsIGFuZCB0aGUgUGF0aCBjb2x1bW4gZG9lcyBub3QgZXhwYW5kIHRvIGEgZnVsbCBwYXRoLCB0aGVuIGFsbCB0aGUgZml4ZWQgZHJpdmVzIG9mIHRoZSB1c2VyIHN5c3RlbSBhcmUgc2VhcmNoZWQgdXNpbmcgdGhlIFBhdGguJywpLAotKHUnRHVwbGljYXRlRmlsZScsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIHRoZSBzb3VyY2UgZmlsZSB0byBiZSBkdXBsaWNhdGVkLicsKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGR1cGxpY2F0ZSBmaWxlLicsKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLHUnRGVzdEZvbGRlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRobmFtZSB0byBhIGRlc3RpbmF0aW9uIGZvbGRlci4nLCksCi0odSdEdXBsaWNhdGVGaWxlJyx1J0Rlc3ROYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnRmlsZW5hbWUgdG8gYmUgZ2l2ZW4gdG8gdGhlIGR1cGxpY2F0ZSBmaWxlLicsKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLHUnRmlsZUtleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmlsZSBlbnRyeScsKSwKLSh1J0Vudmlyb25tZW50Jyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudGFsIHZhbHVlLicsKSwKLSh1J0Vudmlyb25tZW50Jyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSB2YWx1ZSB0byBzZXQgaW4gdGhlIGVudmlyb25tZW50YWwgc2V0dGluZ3MuJywpLAotKHUnRW52aXJvbm1lbnQnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSBlbnZpcm9ubWVudGFsIHZhbHVlLicsKSwKLSh1J0Vudmlyb25tZW50Jyx1J0Vudmlyb25tZW50Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgc2V0dGluZycsKSwKLSh1J0Vycm9yJyx1J0Vycm9yJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGVycm9yIG51bWJlciwgb2J0YWluZWQgZnJvbSBoZWFkZXIgZmlsZSBJRXJyb3IoLi4uKSBtYWNyb3MuJywpLAotKHUnRXJyb3InLHUnTWVzc2FnZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJyxOb25lLCB1J0Vycm9yIGZvcm1hdHRpbmcgdGVtcGxhdGUsIG9idGFpbmVkIGZyb20gdXNlciBlZC4gb3IgbG9jYWxpemVycy4nLCksCi0odSdFdmVudE1hcHBpbmcnLHUnRGlhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J0RpYWxvZycsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBEaWFsb2cuJywpLAotKHUnRXZlbnRNYXBwaW5nJyx1J0NvbnRyb2xfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsMix1J0lkZW50aWZpZXInLE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgQ29udHJvbCB0YWJsZSwgbmFtZSBvZiB0aGUgY29udHJvbC4nLCksCi0odSdFdmVudE1hcHBpbmcnLHUnRXZlbnQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgdGhlIGNvbnRyb2wgc3Vic2NyaWJlcyB0by4nLCksCi0odSdFdmVudE1hcHBpbmcnLHUnQXR0cmlidXRlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBhdHRyaWJ1dGUsIHRoYXQgaXMgc2V0IHdoZW4gdGhpcyBldmVudCBpcyByZWNlaXZlZC4nLCksCi0odSdFeHRlbnNpb24nLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBGZWF0dXJlIFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBmZWF0dXJlIHRvIHZhbGlkYXRlIG9yIGluc3RhbGwgaW4gb3JkZXIgZm9yIHRoZSBDTFNJRCBmYWN0b3J5IHRvIGJlIG9wZXJhdGlvbmFsLicsKSwKLSh1J0V4dGVuc2lvbicsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGNvbXBvbmVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgcGF0aCB3aGVuIGNhbGxlZCB0aHJvdWdoIExvY2F0ZUNvbXBvbmVudC4nLCksCi0odSdFeHRlbnNpb24nLHUnRXh0ZW5zaW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFibGUgcm93LicsKSwKLSh1J0V4dGVuc2lvbicsdSdNSU1FXycsdSdZJyxOb25lLCBOb25lLCB1J01JTUUnLDEsdSdUZXh0JyxOb25lLCB1J09wdGlvbmFsIENvbnRleHQgaWRlbnRpZmllciwgdHlwaWNhbGx5ICJ0eXBlL2Zvcm1hdCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBleHRlbnNpb24nLCksCi0odSdFeHRlbnNpb24nLHUnUHJvZ0lkXycsdSdZJyxOb25lLCBOb25lLCB1J1Byb2dJZCcsMSx1J1RleHQnLE5vbmUsIHUnT3B0aW9uYWwgUHJvZ0lkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV4dGVuc2lvbi4nLCksCi0odSdNSU1FJyx1J0NMU0lEJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdPcHRpb25hbCBhc3NvY2lhdGVkIENMU0lELicsKSwKLSh1J01JTUUnLHUnQ29udGVudFR5cGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1ByaW1hcnkga2V5LiBDb250ZXh0IGlkZW50aWZpZXIsIHR5cGljYWxseSAidHlwZS9mb3JtYXQiLicsKSwKLSh1J01JTUUnLHUnRXh0ZW5zaW9uXycsdSdOJyxOb25lLCBOb25lLCB1J0V4dGVuc2lvbicsMSx1J1RleHQnLE5vbmUsIHUnT3B0aW9uYWwgYXNzb2NpYXRlZCBleHRlbnNpb24gKHdpdGhvdXQgZG90KScsKSwKLSh1J0ZlYXR1cmVDb21wb25lbnRzJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicsKSwKLSh1J0ZlYXR1cmVDb21wb25lbnRzJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J0ZpbGVTRlBDYXRhbG9nJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNhdGFsb2cnLCksCi0odSdGaWxlU0ZQQ2F0YWxvZycsdSdTRlBDYXRhbG9nXycsdSdOJyxOb25lLCBOb25lLCB1J1NGUENhdGFsb2cnLDEsdSdGaWxlbmFtZScsTm9uZSwgdSdDYXRhbG9nIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZScsKSwKLSh1J1NGUENhdGFsb2cnLHUnU0ZQQ2F0YWxvZycsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J0ZpbGUgbmFtZSBmb3IgdGhlIGNhdGFsb2cuJywpLAotKHUnU0ZQQ2F0YWxvZycsdSdDYXRhbG9nJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J1NGUCBDYXRhbG9nJywpLAotKHUnU0ZQQ2F0YWxvZycsdSdEZXBlbmRlbmN5Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1BhcmVudCBjYXRhbG9nIC0gb25seSB1c2VkIGJ5IFNGUCcsKSwKLSh1J0ZvbnQnLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgZm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlIHJlZmVyZW5jaW5nIGZvbnQgZmlsZS4nLCksCi0odSdGb250Jyx1J0ZvbnRUaXRsZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnRm9udCBuYW1lLicsKSwKLSh1J0luaUZpbGUnLHUnQWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMDsxOzMnLHUnVGhlIHR5cGUgb2YgbW9kaWZpY2F0aW9uIHRvIGJlIG1hZGUsIG9uZSBvZiBpaWZFbnVtJywpLAotKHUnSW5pRmlsZScsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgdG8gYmUgd3JpdHRlbi4nLCksCi0odSdJbmlGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgLklOSSB2YWx1ZS4nLCksCi0odSdJbmlGaWxlJyx1J0ZpbGVOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lIGluIHdoaWNoIHRvIHdyaXRlIHRoZSBpbmZvcm1hdGlvbicsKSwKLSh1J0luaUZpbGUnLHUnSW5pRmlsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnSW5pRmlsZScsdSdEaXJQcm9wZXJ0eScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5JTkkgZmlsZSBpcy4nLCksCi0odSdJbmlGaWxlJyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgLklOSSBmaWxlIGtleSBiZWxvdyBTZWN0aW9uLicsKSwKLSh1J0luaUZpbGUnLHUnU2VjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgLklOSSBmaWxlIFNlY3Rpb24uJywpLAotKHUnSW5pTG9jYXRvcicsdSdUeXBlJyx1J1knLDAsMixOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSAuSU5JIHZhbHVlIHJlYWQgaXMgYSBmaWxlbmFtZSBvciBhIGRpcmVjdG9yeSBsb2NhdGlvbiBvciB0byBiZSB1c2VkIGFzIGlzIHcvbyBpbnRlcnByZXRhdGlvbi4nLCksCi0odSdJbmlMb2NhdG9yJyx1J1NpZ25hdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJywpLAotKHUnSW5pTG9jYXRvcicsdSdGaWxlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZS4nLCksCi0odSdJbmlMb2NhdG9yJyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnS2V5IHZhbHVlIChmb2xsb3dlZCBieSBhbiBlcXVhbHMgc2lnbiBpbiBJTkkgZmlsZSkuJywpLAotKHUnSW5pTG9jYXRvcicsdSdTZWN0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdTZWN0aW9uIG5hbWUgd2l0aGluIGluIGZpbGUgKHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgaW4gSU5JIGZpbGUpLicsKSwKLSh1J0luaUxvY2F0b3InLHUnRmllbGQnLHUnWScsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBmaWVsZCBpbiB0aGUgLklOSSBsaW5lLiBJZiBGaWVsZCBpcyBudWxsIG9yIDAgdGhlIGVudGlyZSBsaW5lIGlzIHJlYWQuJywpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLHUnQ29uZGl0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicsKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLHUnU2VxdWVuY2UnLHUnWScsLTQsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nLCksCi0odSdJbnN0YWxsVUlTZXF1ZW5jZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicsKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJyx1J0NvbmRpdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nLCksCi0odSdJbnN0YWxsVUlTZXF1ZW5jZScsdSdTZXF1ZW5jZScsdSdZJywtNCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicsKSwKLSh1J0lzb2xhdGVkQ29tcG9uZW50Jyx1J0NvbXBvbmVudF9BcHBsaWNhdGlvbicsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnS2V5IHRvIENvbXBvbmVudCB0YWJsZSBpdGVtIGZvciBhcHBsaWNhdGlvbicsKSwKLSh1J0lzb2xhdGVkQ29tcG9uZW50Jyx1J0NvbXBvbmVudF9TaGFyZWQnLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSB0byBiZSBpc29sYXRlZCcsKSwKLSh1J0xhdW5jaENvbmRpdGlvbicsdSdEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdMb2NhbGl6YWJsZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBjb25kaXRpb24gZmFpbHMgYW5kIGluc3RhbGwgbXVzdCBhYm9ydC4nLCksCi0odSdMYXVuY2hDb25kaXRpb24nLHUnQ29uZGl0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJyxOb25lLCB1J0V4cHJlc3Npb24gd2hpY2ggbXVzdCBldmFsdWF0ZSB0byBUUlVFIGluIG9yZGVyIGZvciBpbnN0YWxsIHRvIGNvbW1lbmNlLicsKSwKLSh1J0xpc3RCb3gnLHUnVGV4dCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicsKSwKLSh1J0xpc3RCb3gnLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBsaXN0Ym94LicsKSwKLSh1J0xpc3RCb3gnLHUnVmFsdWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nLCksCi0odSdMaXN0Qm94Jyx1J09yZGVyJyx1J04nLDEsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nLCksCi0odSdMaXN0VmlldycsdSdUZXh0Jyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJywpLAotKHUnTGlzdFZpZXcnLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBsaXN0dmlldy4nLCksCi0odSdMaXN0VmlldycsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nLCksCi0odSdMaXN0VmlldycsdSdPcmRlcicsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJywpLAotKHUnTGlzdFZpZXcnLHUnQmluYXJ5XycsdSdZJyxOb25lLCBOb25lLCB1J0JpbmFyeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gYmUgZGlzcGxheWVkIHdpdGggdGhlIGljb24uIFRoZSBiaW5hcnkgaW5mb3JtYXRpb24gaXMgbG9va2VkIHVwIGZyb20gdGhlIEJpbmFyeSBUYWJsZS4nLCksCi0odSdMb2NrUGVybWlzc2lvbnMnLHUnVGFibGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyx1J0RpcmVjdG9yeTtGaWxlO1JlZ2lzdHJ5Jyx1J1JlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlIG5hbWUnLCksCi0odSdMb2NrUGVybWlzc2lvbnMnLHUnRG9tYWluJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0RvbWFpbiBuYW1lIGZvciB1c2VyIHdob3NlIHBlcm1pc3Npb25zIGFyZSBiZWluZyBzZXQuICh1c3VhbGx5IGEgcHJvcGVydHkpJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J0xvY2tPYmplY3QnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gUmVnaXN0cnkgb3IgRmlsZSB0YWJsZScsKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsdSdQZXJtaXNzaW9uJyx1J1knLC0yMTQ3NDgzNjQ3LDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQZXJtaXNzaW9uIEFjY2VzcyBtYXNrLiAgRnVsbCBDb250cm9sID0gMjY4NDM1NDU2IChHRU5FUklDX0FMTCA9IDB4MTAwMDAwMDApJywpLAotKHUnTG9ja1Blcm1pc3Npb25zJyx1J1VzZXInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVXNlciBmb3IgcGVybWlzc2lvbnMgdG8gYmUgc2V0LiAgKHVzdWFsbHkgYSBwcm9wZXJ0eSknLCksCi0odSdNZWRpYScsdSdTb3VyY2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcm9wZXJ0eScsTm9uZSwgdSdUaGUgcHJvcGVydHkgZGVmaW5pbmcgdGhlIGxvY2F0aW9uIG9mIHRoZSBjYWJpbmV0IGZpbGUuJywpLAotKHUnTWVkaWEnLHUnQ2FiaW5ldCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NhYmluZXQnLE5vbmUsIHUnSWYgc29tZSBvciBhbGwgb2YgdGhlIGZpbGVzIHN0b3JlZCBvbiB0aGUgbWVkaWEgYXJlIGNvbXByZXNzZWQgaW4gYSBjYWJpbmV0LCB0aGUgbmFtZSBvZiB0aGF0IGNhYmluZXQuJywpLAotKHUnTWVkaWEnLHUnRGlza0lkJyx1J04nLDEsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcmltYXJ5IGtleSwgaW50ZWdlciB0byBkZXRlcm1pbmUgc29ydCBvcmRlciBmb3IgdGFibGUuJywpLAotKHUnTWVkaWEnLHUnRGlza1Byb21wdCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnRGlzayBuYW1lOiB0aGUgdmlzaWJsZSB0ZXh0IGFjdHVhbGx5IHByaW50ZWQgb24gdGhlIGRpc2suICBUaGlzIHdpbGwgYmUgdXNlZCB0byBwcm9tcHQgdGhlIHVzZXIgd2hlbiB0aGlzIGRpc2sgbmVlZHMgdG8gYmUgaW5zZXJ0ZWQuJywpLAotKHUnTWVkaWEnLHUnTGFzdFNlcXVlbmNlJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlIHNlcXVlbmNlIG51bWJlciBmb3IgdGhlIGxhc3QgZmlsZSBmb3IgdGhpcyBtZWRpYS4nLCksCi0odSdNZWRpYScsdSdWb2x1bWVMYWJlbCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGxhYmVsIGF0dHJpYnV0ZWQgdG8gdGhlIHZvbHVtZS4nLCksCi0odSdNb2R1bGVDb21wb25lbnRzJyx1J0NvbXBvbmVudCcsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnQ29tcG9uZW50IGNvbnRhaW5lZCBpbiB0aGUgbW9kdWxlLicsKSwKLSh1J01vZHVsZUNvbXBvbmVudHMnLHUnTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDIsTm9uZSwgTm9uZSwgdSdEZWZhdWx0IGxhbmd1YWdlIElEIGZvciBtb2R1bGUgKG1heSBiZSBjaGFuZ2VkIGJ5IHRyYW5zZm9ybSkuJywpLAotKHUnTW9kdWxlQ29tcG9uZW50cycsdSdNb2R1bGVJRCcsdSdOJyxOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnTW9kdWxlIGNvbnRhaW5pbmcgdGhlIGNvbXBvbmVudC4nLCksCi0odSdNb2R1bGVTaWduYXR1cmUnLHUnTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0IGRlY2ltYWwgbGFuZ3VhZ2Ugb2YgbW9kdWxlLicsKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsdSdWZXJzaW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsTm9uZSwgdSdWZXJzaW9uIG9mIHRoZSBtb2R1bGUuJywpLAotKHUnTW9kdWxlU2lnbmF0dXJlJyx1J01vZHVsZUlEJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdNb2R1bGUgaWRlbnRpZmllciAoU3RyaW5nLkdVSUQpLicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnTW9kdWxlSUQnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J01vZHVsZSByZXF1aXJpbmcgdGhlIGRlcGVuZGVuY3kuJywpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsdSdNb2R1bGVMYW5ndWFnZScsdSdOJyxOb25lLCBOb25lLCB1J01vZHVsZVNpZ25hdHVyZScsMixOb25lLCBOb25lLCB1J0xhbmd1YWdlIG9mIG1vZHVsZSByZXF1aXJpbmcgdGhlIGRlcGVuZGVuY3kuJywpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsdSdSZXF1aXJlZElEJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgcmVxdWlyZWQgbW9kdWxlLicsKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLHUnUmVxdWlyZWRMYW5ndWFnZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlSUQgb2YgdGhlIHJlcXVpcmVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVEZXBlbmRlbmN5Jyx1J1JlcXVpcmVkVmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgcmVxdWlyZWQgdmVyc2lvbi4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnTW9kdWxlSUQnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1N0cmluZy5HVUlEIG9mIG1vZHVsZSB3aXRoIGV4Y2x1c2lvbiByZXF1aXJlbWVudC4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnTW9kdWxlTGFuZ3VhZ2UnLHUnTicsTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLDIsTm9uZSwgTm9uZSwgdSdMYW5ndWFnZUlEIG9mIG1vZHVsZSB3aXRoIGV4Y2x1c2lvbiByZXF1aXJlbWVudC4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnRXhjbHVkZWRJRCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1N0cmluZy5HVUlEIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnRXhjbHVkZWRMYW5ndWFnZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nLCksCi0odSdNb2R1bGVFeGNsdXNpb24nLHUnRXhjbHVkZWRNYXhWZXJzaW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsTm9uZSwgdSdNYXhpbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicsKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsdSdFeGNsdWRlZE1pblZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJyxOb25lLCB1J01pbmltdW0gdmVyc2lvbiBvZiBleGNsdWRlZCBtb2R1bGUuJywpLAotKHUnTW92ZUZpbGUnLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnSWYgdGhpcyBjb21wb25lbnQgaXMgbm90ICJzZWxlY3RlZCIgZm9yIGluc3RhbGxhdGlvbiBvciByZW1vdmFsLCBubyBhY3Rpb24gd2lsbCBiZSB0YWtlbiBvbiB0aGUgYXNzb2NpYXRlZCBNb3ZlRmlsZSBlbnRyeScsKSwKLSh1J01vdmVGaWxlJyx1J0Rlc3RGb2xkZXInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5JywpLAotKHUnTW92ZUZpbGUnLHUnRGVzdE5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsTm9uZSwgdSdOYW1lIHRvIGJlIGdpdmVuIHRvIHRoZSBvcmlnaW5hbCBmaWxlIGFmdGVyIGl0IGlzIG1vdmVkIG9yIGNvcGllZC4gIElmIGJsYW5rLCB0aGUgZGVzdGluYXRpb24gZmlsZSB3aWxsIGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHNvdXJjZSBmaWxlJywpLAotKHUnTW92ZUZpbGUnLHUnRmlsZUtleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcGFydGljdWxhciBNb3ZlRmlsZSByZWNvcmQnLCksCi0odSdNb3ZlRmlsZScsdSdPcHRpb25zJyx1J04nLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgTW92ZUZpbGUgb3BlcmF0aW5nIG1vZGUsIG9uZSBvZiBpbWZvRW51bScsKSwKLSh1J01vdmVGaWxlJyx1J1NvdXJjZUZvbGRlcicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgZGlyZWN0b3J5JywpLAotKHUnTW92ZUZpbGUnLHUnU291cmNlTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUiTmFtZSBvZiB0aGUgc291cmNlIGZpbGUocykgdG8gYmUgbW92ZWQgb3IgY29waWVkLiAgQ2FuIGNvbnRhaW4gdGhlICcqJyBvciAnPycgd2lsZGNhcmRzLiIsKSwKLSh1J01zaUFzc2VtYmx5Jyx1J0F0dHJpYnV0ZXMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBc3NlbWJseSBhdHRyaWJ1dGVzJywpLAotKHUnTXNpQXNzZW1ibHknLHUnRmVhdHVyZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGZWF0dXJlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIEZlYXR1cmUgdGFibGUuJywpLAotKHUnTXNpQXNzZW1ibHknLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJywpLAotKHUnTXNpQXNzZW1ibHknLHUnRmlsZV9BcHBsaWNhdGlvbicsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gRmlsZSB0YWJsZSwgZGVub3RpbmcgdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQgZm9yIHByaXZhdGUgYXNzZW1ibGllcy4gTnVsbCBmb3IgZ2xvYmFsIGFzc2VtYmxpZXMuJywpLAotKHUnTXNpQXNzZW1ibHknLHUnRmlsZV9NYW5pZmVzdCcsdSdZJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZpbGUgdGFibGUgZGVub3RpbmcgdGhlIG1hbmlmZXN0IGZpbGUgZm9yIHRoZSBhc3NlbWJseS4nLCksCi0odSdNc2lBc3NlbWJseU5hbWUnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIG5hbWUgcGFydCBvZiB0aGUgbmFtZS12YWx1ZSBwYWlycyBmb3IgdGhlIGFzc2VtYmx5IG5hbWUuJywpLAotKHUnTXNpQXNzZW1ibHlOYW1lJyx1J1ZhbHVlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgdmFsdWUgcGFydCBvZiB0aGUgbmFtZS12YWx1ZSBwYWlycyBmb3IgdGhlIGFzc2VtYmx5IG5hbWUuJywpLAotKHUnTXNpQXNzZW1ibHlOYW1lJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicsKSwKLSh1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsdSdDZXJ0RGF0YScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsTm9uZSwgdSdBIGNlcnRpZmljYXRlIGNvbnRleHQgYmxvYiBmb3IgYSBzaWduZXIgY2VydGlmaWNhdGUnLCksCi0odSdNc2lEaWdpdGFsQ2VydGlmaWNhdGUnLHUnRGlnaXRhbENlcnRpZmljYXRlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcm93JywpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsdSdUYWJsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01lZGlhJyx1J1JlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlIG5hbWUgKG9ubHkgTWVkaWEgdGFibGUgaXMgc3VwcG9ydGVkKScsKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLHUnRGlnaXRhbENlcnRpZmljYXRlXycsdSdOJyxOb25lLCBOb25lLCB1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgdG8gTXNpRGlnaXRhbENlcnRpZmljYXRlIHRhYmxlIGlkZW50aWZ5aW5nIHRoZSBzaWduZXIgY2VydGlmaWNhdGUnLCksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJyx1J0hhc2gnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnVGhlIGVuY29kZWQgaGFzaCBibG9iIGZyb20gdGhlIGRpZ2l0YWwgc2lnbmF0dXJlJywpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsdSdTaWduT2JqZWN0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdGb3JlaWduIGtleSB0byBNZWRpYSB0YWJsZScsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIGZvcmVpZ24ga2V5IGludG8gRmlsZSB0YWJsZSByZWZlcmVuY2luZyBmaWxlIHdpdGggdGhpcyBoYXNoJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnT3B0aW9ucycsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmFyaW91cyBvcHRpb25zIGFuZCBhdHRyaWJ1dGVzIGZvciB0aGlzIGhhc2guJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnSGFzaFBhcnQxJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J01zaUZpbGVIYXNoJyx1J0hhc2hQYXJ0MicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nLCksCi0odSdNc2lGaWxlSGFzaCcsdSdIYXNoUGFydDMnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnTXNpRmlsZUhhc2gnLHUnSGFzaFBhcnQ0Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBmaWxlIGluIGJ5dGVzIChsb25nIGludGVnZXIpLicsKSwKLSh1J01zaVBhdGNoSGVhZGVycycsdSdTdHJlYW1SZWYnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcm93LicsKSwKLSh1J01zaVBhdGNoSGVhZGVycycsdSdIZWFkZXInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLE5vbmUsIHUnQmluYXJ5IHN0cmVhbS4gVGhlIHBhdGNoIGhlYWRlciwgdXNlZCBmb3IgcGF0Y2ggdmFsaWRhdGlvbi4nLCksCi0odSdPREJDQXR0cmlidXRlJyx1J1ZhbHVlJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdWYWx1ZSBmb3IgT0RCQyBkcml2ZXIgYXR0cmlidXRlJywpLAotKHUnT0RCQ0F0dHJpYnV0ZScsdSdBdHRyaWJ1dGUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J05hbWUgb2YgT0RCQyBkcml2ZXIgYXR0cmlidXRlJywpLAotKHUnT0RCQ0F0dHJpYnV0ZScsdSdEcml2ZXJfJyx1J04nLE5vbmUsIE5vbmUsIHUnT0RCQ0RyaXZlcicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIE9EQkMgZHJpdmVyIGluIE9EQkNEcml2ZXIgdGFibGUnLCksCi0odSdPREJDRHJpdmVyJyx1J0Rlc2NyaXB0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciBkcml2ZXIsIG5vbi1sb2NhbGl6ZWQnLCksCi0odSdPREJDRHJpdmVyJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmlsZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSBkcml2ZXIgZmlsZScsKSwKLSh1J09EQkNEcml2ZXInLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGFzc29jaWF0ZWQgY29tcG9uZW50JywpLAotKHUnT0RCQ0RyaXZlcicsdSdEcml2ZXInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkLmludGVybmFsIHRva2VuIGZvciBkcml2ZXInLCksCi0odSdPREJDRHJpdmVyJyx1J0ZpbGVfU2V0dXAnLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdPcHRpb25hbCByZWZlcmVuY2UgdG8ga2V5IGRyaXZlciBzZXR1cCBETEwnLCksCi0odSdPREJDRGF0YVNvdXJjZScsdSdEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZGF0YSBzb3VyY2UnLCksCi0odSdPREJDRGF0YVNvdXJjZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gYXNzb2NpYXRlZCBjb21wb25lbnQnLCksCi0odSdPREJDRGF0YVNvdXJjZScsdSdEYXRhU291cmNlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZGF0YSBzb3VyY2UnLCksCi0odSdPREJDRGF0YVNvdXJjZScsdSdEcml2ZXJEZXNjcmlwdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnUmVmZXJlbmNlIHRvIGRyaXZlciBkZXNjcmlwdGlvbiwgbWF5IGJlIGV4aXN0aW5nIGRyaXZlcicsKSwKLSh1J09EQkNEYXRhU291cmNlJyx1J1JlZ2lzdHJhdGlvbicsdSdOJywwLDEsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdpc3RyYXRpb24gb3B0aW9uOiAwPW1hY2hpbmUsIDE9dXNlciwgb3RoZXJzIHQuYi5kLicsKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1ZhbHVlIGZvciBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScsKSwKLSh1J09EQkNTb3VyY2VBdHRyaWJ1dGUnLHUnQXR0cmlidXRlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdOYW1lIG9mIE9EQkMgZGF0YSBzb3VyY2UgYXR0cmlidXRlJywpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsdSdEYXRhU291cmNlXycsdSdOJyxOb25lLCBOb25lLCB1J09EQkNEYXRhU291cmNlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8gT0RCQyBkYXRhIHNvdXJjZSBpbiBPREJDRGF0YVNvdXJjZSB0YWJsZScsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J0Rlc2NyaXB0aW9uJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciB0cmFuc2xhdG9yJywpLAotKHUnT0RCQ1RyYW5zbGF0b3InLHUnRmlsZV8nLHUnTicsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZWZlcmVuY2UgdG8ga2V5IHRyYW5zbGF0b3IgZmlsZScsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcsKSwKLSh1J09EQkNUcmFuc2xhdG9yJyx1J0ZpbGVfU2V0dXAnLHUnWScsTm9uZSwgTm9uZSwgdSdGaWxlJywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdPcHRpb25hbCByZWZlcmVuY2UgdG8ga2V5IHRyYW5zbGF0b3Igc2V0dXAgRExMJywpLAotKHUnT0RCQ1RyYW5zbGF0b3InLHUnVHJhbnNsYXRvcicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQuaW50ZXJuYWwgdG9rZW4gZm9yIHRyYW5zbGF0b3InLCksCi0odSdQYXRjaCcsdSdTZXF1ZW5jZScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJpbWFyeSBrZXksIHNlcXVlbmNlIHdpdGggcmVzcGVjdCB0byB0aGUgbWVkaWEgaW1hZ2VzOyBvcmRlciBtdXN0IHRyYWNrIGNhYmluZXQgb3JkZXIuJywpLAotKHUnUGF0Y2gnLHUnQXR0cmlidXRlcycsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSW50ZWdlciBjb250YWluaW5nIGJpdCBmbGFncyByZXByZXNlbnRpbmcgcGF0Y2ggYXR0cmlidXRlcycsKSwKLSh1J1BhdGNoJyx1J0ZpbGVfJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbiwgZm9yZWlnbiBrZXkgdG8gRmlsZSB0YWJsZSwgbXVzdCBtYXRjaCBpZGVudGlmaWVyIGluIGNhYmluZXQuJywpLAotKHUnUGF0Y2gnLHUnSGVhZGVyJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JyxOb25lLCB1J0JpbmFyeSBzdHJlYW0uIFRoZSBwYXRjaCBoZWFkZXIsIHVzZWQgZm9yIHBhdGNoIHZhbGlkYXRpb24uJywpLAotKHUnUGF0Y2gnLHUnUGF0Y2hTaXplJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgcGF0Y2ggaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJywpLAotKHUnUGF0Y2gnLHUnU3RyZWFtUmVmXycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnSWRlbnRpZmllci4gRm9yZWlnbiBrZXkgdG8gdGhlIFN0cmVhbVJlZiBjb2x1bW4gb2YgdGhlIE1zaVBhdGNoSGVhZGVycyB0YWJsZS4nLCksCi0odSdQYXRjaFBhY2thZ2UnLHUnTWVkaWFfJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JlaWduIGtleSB0byBEaXNrSWQgY29sdW1uIG9mIE1lZGlhIHRhYmxlLiBJbmRpY2F0ZXMgdGhlIGRpc2sgY29udGFpbmluZyB0aGUgcGF0Y2ggcGFja2FnZS4nLCksCi0odSdQYXRjaFBhY2thZ2UnLHUnUGF0Y2hJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnQSB1bmlxdWUgc3RyaW5nIEdVSUQgcmVwcmVzZW50aW5nIHRoaXMgcGF0Y2guJywpLAotKHUnUHVibGlzaENvbXBvbmVudCcsdSdGZWF0dXJlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZlYXR1cmUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgdGFibGUuJywpLAotKHUnUHVibGlzaENvbXBvbmVudCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUuJywpLAotKHUnUHVibGlzaENvbXBvbmVudCcsdSdDb21wb25lbnRJZCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnQSBzdHJpbmcgR1VJRCB0aGF0IHJlcHJlc2VudHMgdGhlIGNvbXBvbmVudCBpZCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIGJ5IHRoZSBhbGllbiBwcm9kdWN0LicsKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLHUnQXBwRGF0YScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhpcyBpcyBsb2NhbGlzYWJsZSBBcHBsaWNhdGlvbiBzcGVjaWZpYyBkYXRhIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIFF1YWxpZmllZCBDb21wb25lbnQuJywpLAotKHUnUHVibGlzaENvbXBvbmVudCcsdSdRdWFsaWZpZXInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoaXMgaXMgZGVmaW5lZCBvbmx5IHdoZW4gdGhlIENvbXBvbmVudElkIGNvbHVtbiBpcyBhbiBRdWFsaWZpZWQgQ29tcG9uZW50IElkLiBUaGlzIGlzIHRoZSBRdWFsaWZpZXIgZm9yIFByb3ZpZGVDb21wb25lbnRJbmRpcmVjdC4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdZJyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgdmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcmFkaW8gYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSB2aXNpYmxlIHRpdGxlIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSByYWRpbyBidXR0b24uJywpLAotKHUnUmFkaW9CdXR0b24nLHUnUHJvcGVydHknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIHJhZGlvIGJ1dHRvbi4gQWxsIHRoZSBidXR0b25zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgZ3JvdXAuJywpLAotKHUnUmFkaW9CdXR0b24nLHUnSGVpZ2h0Jyx1J04nLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaGVpZ2h0IG9mIHRoZSBidXR0b24uJywpLAotKHUnUmFkaW9CdXR0b24nLHUnV2lkdGgnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB3aWR0aCBvZiB0aGUgYnV0dG9uLicsKSwKLSh1J1JhZGlvQnV0dG9uJyx1J1gnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBob3Jpem9udGFsIGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIHJhZGlvIGJ1dHRvbi4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdWYWx1ZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1dHRvbi4gU2VsZWN0aW5nIHRoZSBidXR0b24gd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nLCksCi0odSdSYWRpb0J1dHRvbicsdSdPcmRlcicsdSdOJywxLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBwb3NpdGl2ZSBpbnRlZ2VyIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBvcmRlcmluZyBvZiB0aGUgaXRlbXMgd2l0aGluIG9uZSBsaXN0Li5UaGUgaW50ZWdlcnMgZG8gbm90IGhhdmUgdG8gYmUgY29uc2VjdXRpdmUuJywpLAotKHUnUmFkaW9CdXR0b24nLHUnSGVscCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIGhlbHAgc3RyaW5ncyB1c2VkIHdpdGggdGhlIGJ1dHRvbi4gVGhlIHRleHQgaXMgb3B0aW9uYWwuJywpLAotKHUnUmVnaXN0cnknLHUnTmFtZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nLCksCi0odSdSZWdpc3RyeScsdSdWYWx1ZScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUuJywpLAotKHUnUmVnaXN0cnknLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBpbnN0YWxsaW5nIG9mIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZWdpc3RyeScsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJyxOb25lLCB1J1RoZSBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZWdpc3RyeScsdSdSZWdpc3RyeScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnUmVnaXN0cnknLHUnUm9vdCcsdSdOJywtMSwzLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0uJywpLAotKHUnUmVnTG9jYXRvcicsdSdOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicsKSwKLSh1J1JlZ0xvY2F0b3InLHUnVHlwZScsdSdZJywwLDE4LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGRldGVybWluZXMgaWYgdGhlIHJlZ2lzdHJ5IHZhbHVlIGlzIGEgZmlsZW5hbWUgb3IgYSBkaXJlY3RvcnkgbG9jYXRpb24gb3IgdG8gYmUgdXNlZCBhcyBpcyB3L28gaW50ZXJwcmV0YXRpb24uJywpLAotKHUnUmVnTG9jYXRvcicsdSdTaWduYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLiBJZiB0aGUgdHlwZSBpcyAwLCB0aGUgcmVnaXN0cnkgdmFsdWVzIHJlZmVycyBhIGRpcmVjdG9yeSwgYW5kIF9TaWduYXR1cmUgaXMgbm90IGEgZm9yZWlnbiBrZXkuJywpLAotKHUnUmVnTG9jYXRvcicsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJyxOb25lLCB1J1RoZSBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZS4nLCksCi0odSdSZWdMb2NhdG9yJyx1J1Jvb3QnLHUnTicsMCwzLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0uJywpLAotKHUnUmVtb3ZlRmlsZScsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyBDb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicsKSwKLSh1J1JlbW92ZUZpbGUnLHUnRmlsZUtleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmlsZSBlbnRyeScsKSwKLSh1J1JlbW92ZUZpbGUnLHUnRmlsZU5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWxkQ2FyZEZpbGVuYW1lJyxOb25lLCB1J05hbWUgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nLCksCi0odSdSZW1vdmVGaWxlJyx1J0RpclByb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGhuYW1lIHRvIHRoZSBmb2xkZXIgb2YgdGhlIGZpbGUgdG8gYmUgcmVtb3ZlZC4nLCksCi0odSdSZW1vdmVGaWxlJyx1J0luc3RhbGxNb2RlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnMTsyOzMnLHUnSW5zdGFsbGF0aW9uIG9wdGlvbiwgb25lIG9mIGlpbUVudW0uJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdBY3Rpb24nLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScyOzQnLHUnVGhlIHR5cGUgb2YgbW9kaWZpY2F0aW9uIHRvIGJlIG1hZGUsIG9uZSBvZiBpaWZFbnVtLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnVmFsdWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIHZhbHVlIHRvIGJlIGRlbGV0ZWQuIFRoZSB2YWx1ZSBpcyByZXF1aXJlZCB3aGVuIEFjdGlvbiBpcyBpaWZJbmlSZW1vdmVUYWcnLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZGVsZXRpb24gb2YgdGhlIC5JTkkgdmFsdWUuJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdGaWxlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZSBpbiB3aGljaCB0byBkZWxldGUgdGhlIGluZm9ybWF0aW9uJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdEaXJQcm9wZXJ0eScsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5JTkkgZmlsZSBpcy4nLCksCi0odSdSZW1vdmVJbmlGaWxlJyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgLklOSSBmaWxlIGtleSBiZWxvdyBTZWN0aW9uLicsKSwKLSh1J1JlbW92ZUluaUZpbGUnLHUnU2VjdGlvbicsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdUaGUgLklOSSBmaWxlIFNlY3Rpb24uJywpLAotKHUnUmVtb3ZlSW5pRmlsZScsdSdSZW1vdmVJbmlGaWxlJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdSZW1vdmVSZWdpc3RyeScsdSdOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicsKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgZGVsZXRpb24gb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5Jyx1J0tleScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1JlZ1BhdGgnLE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicsKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5Jyx1J1Jvb3QnLHUnTicsLTEsMyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtJywpLAotKHUnUmVtb3ZlUmVnaXN0cnknLHUnUmVtb3ZlUmVnaXN0cnknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1Jlc2VydmVDb3N0Jyx1J0NvbXBvbmVudF8nLHUnTicsTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J1Jlc2VydmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mIHNwYWNlIGlmIHRoaXMgY29tcG9uZW50IGlzIHRvIGJlIGluc3RhbGxlZC4nLCksCi0odSdSZXNlcnZlQ29zdCcsdSdSZXNlcnZlRm9sZGVyJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIGEgcHJvcGVydHkgd2hvc2UgdmFsdWUgaXMgYXNzdW1lZCB0byByZXNvbHZlIHRvIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeScsKSwKLSh1J1Jlc2VydmVDb3N0Jyx1J1Jlc2VydmVLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5IHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyBhIHBhcnRpY3VsYXIgUmVzZXJ2ZUNvc3QgcmVjb3JkJywpLAotKHUnUmVzZXJ2ZUNvc3QnLHUnUmVzZXJ2ZUxvY2FsJyx1J04nLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCBsb2NhbGx5LicsKSwKLSh1J1Jlc2VydmVDb3N0Jyx1J1Jlc2VydmVTb3VyY2UnLHUnTicsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGlzayBzcGFjZSB0byByZXNlcnZlIGlmIGxpbmtlZCBjb21wb25lbnQgaXMgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIHRoZSBzb3VyY2UgbG9jYXRpb24uJywpLAotKHUnU2VsZlJlZycsdSdGaWxlXycsdSdOJyxOb25lLCBOb25lLCB1J0ZpbGUnLDEsdSdJZGVudGlmaWVyJyxOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZpbGUgdGFibGUgZGVub3RpbmcgdGhlIG1vZHVsZSB0aGF0IG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQuJywpLAotKHUnU2VsZlJlZycsdSdDb3N0Jyx1J1knLDAsMzI3NjcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgY29zdCBvZiByZWdpc3RlcmluZyB0aGUgbW9kdWxlLicsKSwKLSh1J1NlcnZpY2VDb250cm9sJyx1J05hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnTmFtZSBvZiBhIHNlcnZpY2UuIC8sIFxcLCBjb21tYSBhbmQgc3BhY2UgYXJlIGludmFsaWQnLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUgdGhhdCBjb250cm9scyB0aGUgc3RhcnR1cCBvZiB0aGUgc2VydmljZScsKSwKLSh1J1NlcnZpY2VDb250cm9sJyx1J0V2ZW50Jyx1J04nLDAsMTg3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQml0IGZpZWxkOiAgSW5zdGFsbDogIDB4MSA9IFN0YXJ0LCAweDIgPSBTdG9wLCAweDggPSBEZWxldGUsIFVuaW5zdGFsbDogMHgxMCA9IFN0YXJ0LCAweDIwID0gU3RvcCwgMHg4MCA9IERlbGV0ZScsKSwKLSh1J1NlcnZpY2VDb250cm9sJyx1J1NlcnZpY2VDb250cm9sJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdBcmd1bWVudHMnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnQXJndW1lbnRzIGZvciB0aGUgc2VydmljZS4gIFNlcGFyYXRlIGJ5IFt+XS4nLCksCi0odSdTZXJ2aWNlQ29udHJvbCcsdSdXYWl0Jyx1J1knLDAsMSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Jvb2xlYW4gZm9yIHdoZXRoZXIgdG8gd2FpdCBmb3IgdGhlIHNlcnZpY2UgdG8gZnVsbHkgc3RhcnQnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdOYW1lJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0ludGVybmFsIE5hbWUgb2YgdGhlIFNlcnZpY2UnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnRGVzY3JpcHRpb24gb2Ygc2VydmljZS4nLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdSZXF1aXJlZCBmb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgVGFibGUgdGhhdCBjb250cm9scyB0aGUgc3RhcnR1cCBvZiB0aGUgc2VydmljZScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0FyZ3VtZW50cycsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdBcmd1bWVudHMgdG8gaW5jbHVkZSBpbiBldmVyeSBzdGFydCBvZiB0aGUgc2VydmljZSwgcGFzc2VkIHRvIFdpbk1haW4nLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdTZXJ2aWNlSW5zdGFsbCcsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnRGVwZW5kZW5jaWVzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J090aGVyIHNlcnZpY2VzIHRoaXMgZGVwZW5kcyBvbiB0byBzdGFydC4gIFNlcGFyYXRlIGJ5IFt+XSwgYW5kIGVuZCB3aXRoIFt+XVt+XScsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J0Rpc3BsYXlOYW1lJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J0V4dGVybmFsIE5hbWUgb2YgdGhlIFNlcnZpY2UnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdFcnJvckNvbnRyb2wnLHUnTicsLTIxNDc0ODM2NDcsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NldmVyaXR5IG9mIGVycm9yIGlmIHNlcnZpY2UgZmFpbHMgdG8gc3RhcnQnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdMb2FkT3JkZXJHcm91cCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdMb2FkT3JkZXJHcm91cCcsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J1Bhc3N3b3JkJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J3Bhc3N3b3JkIHRvIHJ1biBzZXJ2aWNlIHdpdGguICAod2l0aCBTdGFydE5hbWUpJywpLAotKHUnU2VydmljZUluc3RhbGwnLHUnU2VydmljZVR5cGUnLHUnTicsLTIxNDc0ODM2NDcsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnLCksCi0odSdTZXJ2aWNlSW5zdGFsbCcsdSdTdGFydE5hbWUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVXNlciBvciBvYmplY3QgbmFtZSB0byBydW4gc2VydmljZSBhcycsKSwKLSh1J1NlcnZpY2VJbnN0YWxsJyx1J1N0YXJ0VHlwZScsdSdOJywwLDQsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUeXBlIG9mIHRoZSBzZXJ2aWNlJywpLAotKHUnU2hvcnRjdXQnLHUnTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBzaG9ydGN1dCB0byBiZSBjcmVhdGVkLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0Rlc2NyaXB0aW9uJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsTm9uZSwgdSdUaGUgZGVzY3JpcHRpb24gZm9yIHRoZSBzaG9ydGN1dC4nLCksCi0odSdTaG9ydGN1dCcsdSdDb21wb25lbnRfJyx1J04nLE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgZGVub3RpbmcgdGhlIGNvbXBvbmVudCB3aG9zZSBzZWxlY3Rpb24gZ2F0ZXMgdGhlIHNob3J0Y3V0IGNyZWF0aW9uL2RlbGV0aW9uLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0ljb25fJyx1J1knLE5vbmUsIE5vbmUsIHUnSWNvbicsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmlsZSB0YWJsZSBkZW5vdGluZyB0aGUgZXh0ZXJuYWwgaWNvbiBmaWxlIGZvciB0aGUgc2hvcnRjdXQuJywpLAotKHUnU2hvcnRjdXQnLHUnSWNvbkluZGV4Jyx1J1knLC0zMjc2NywzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBpY29uIGluZGV4IGZvciB0aGUgc2hvcnRjdXQuJywpLAotKHUnU2hvcnRjdXQnLHUnRGlyZWN0b3J5XycsdSdOJyxOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNob3J0Y3V0IGZpbGUgaXMgY3JlYXRlZC4nLCksCi0odSdTaG9ydGN1dCcsdSdUYXJnZXQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaG9ydGN1dCcsTm9uZSwgdSdUaGUgc2hvcnRjdXQgdGFyZ2V0LiBUaGlzIGlzIHVzdWFsbHkgYSBwcm9wZXJ0eSB0aGF0IGlzIGV4cGFuZGVkIHRvIGEgZmlsZSBvciBhIGZvbGRlciB0aGF0IHRoZSBzaG9ydGN1dCBwb2ludHMgdG8uJywpLAotKHUnU2hvcnRjdXQnLHUnQXJndW1lbnRzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJyxOb25lLCB1J1RoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGZvciB0aGUgc2hvcnRjdXQuJywpLAotKHUnU2hvcnRjdXQnLHUnU2hvcnRjdXQnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J0hvdGtleScsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhvdGtleSBmb3IgdGhlIHNob3J0Y3V0LiBJdCBoYXMgdGhlIHZpcnR1YWwta2V5IGNvZGUgZm9yIHRoZSBrZXkgaW4gdGhlIGxvdy1vcmRlciBieXRlLCBhbmQgdGhlIG1vZGlmaWVyIGZsYWdzIGluIHRoZSBoaWdoLW9yZGVyIGJ5dGUuICcsKSwKLSh1J1Nob3J0Y3V0Jyx1J1Nob3dDbWQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScxOzM7NycsdSdUaGUgc2hvdyBjb21tYW5kIGZvciB0aGUgYXBwbGljYXRpb24gd2luZG93LlRoZSBmb2xsb3dpbmcgdmFsdWVzIG1heSBiZSB1c2VkLicsKSwKLSh1J1Nob3J0Y3V0Jyx1J1drRGlyJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsTm9uZSwgdSdOYW1lIG9mIHByb3BlcnR5IGRlZmluaW5nIGxvY2F0aW9uIG9mIHdvcmtpbmcgZGlyZWN0b3J5LicsKSwKLSh1J1NpZ25hdHVyZScsdSdGaWxlTmFtZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJyxOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBmaWxlLiBUaGlzIG1heSBjb250YWluIGEgInNob3J0IG5hbWV8bG9uZyBuYW1lIiBwYWlyLicsKSwKLSh1J1NpZ25hdHVyZScsdSdTaWduYXR1cmUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmUgcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTGFuZ3VhZ2VzJyx1J1knLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLE5vbmUsIHUnVGhlIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01heERhdGUnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG1heGltdW0gY3JlYXRpb24gZGF0ZSBvZiB0aGUgZmlsZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTWF4U2l6ZScsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBmaWxlLiAnLCksCi0odSdTaWduYXR1cmUnLHUnTWF4VmVyc2lvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIG1heGltdW0gdmVyc2lvbiBvZiB0aGUgZmlsZS4nLCksCi0odSdTaWduYXR1cmUnLHUnTWluRGF0ZScsdSdZJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBjcmVhdGlvbiBkYXRlIG9mIHRoZSBmaWxlLicsKSwKLSh1J1NpZ25hdHVyZScsdSdNaW5TaXplJyx1J1knLDAsMjE0NzQ4MzY0NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGUuJywpLAotKHUnU2lnbmF0dXJlJyx1J01pblZlcnNpb24nLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBtaW5pbXVtIHZlcnNpb24gb2YgdGhlIGZpbGUuJywpLAotKHUnVGV4dFN0eWxlJyx1J1RleHRTdHlsZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLE5vbmUsIHUnTmFtZSBvZiB0aGUgc3R5bGUuIFRoZSBwcmltYXJ5IGtleSBvZiB0aGlzIHRhYmxlLiBUaGlzIG5hbWUgaXMgZW1iZWRkZWQgaW4gdGhlIHRleHRzIHRvIGluZGljYXRlIGEgc3R5bGUgY2hhbmdlLicsKSwKLSh1J1RleHRTdHlsZScsdSdDb2xvcicsdSdZJywwLDE2Nzc3MjE1LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSBsb25nIGludGVnZXIgaW5kaWNhdGluZyB0aGUgY29sb3Igb2YgdGhlIHN0cmluZyBpbiB0aGUgUkdCIGZvcm1hdCAoUmVkLCBHcmVlbiwgQmx1ZSBlYWNoIDAtMjU1LCBSR0IgPSBSICsgMjU2KkcgKyAyNTZeMipCKS4nLCksCi0odSdUZXh0U3R5bGUnLHUnRmFjZU5hbWUnLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J0Egc3RyaW5nIGluZGljYXRpbmcgdGhlIG5hbWUgb2YgdGhlIGZvbnQgdXNlZC4gUmVxdWlyZWQuIFRoZSBzdHJpbmcgbXVzdCBiZSBhdCBtb3N0IDMxIGNoYXJhY3RlcnMgbG9uZy4nLCksCi0odSdUZXh0U3R5bGUnLHUnU2l6ZScsdSdOJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHNpemUgb2YgdGhlIGZvbnQgdXNlZC4gVGhpcyBzaXplIGlzIGdpdmVuIGluIG91ciB1bml0cyAoMS8xMiBvZiB0aGUgc3lzdGVtIGZvbnQgaGVpZ2h0KS4gQXNzdW1pbmcgdGhhdCB0aGUgc3lzdGVtIGZvbnQgaXMgc2V0IHRvIDEyIHBvaW50IHNpemUsIHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgcG9pbnQgc2l6ZS4nLCksCi0odSdUZXh0U3R5bGUnLHUnU3R5bGVCaXRzJyx1J1knLDAsMTUsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGNvbWJpbmF0aW9uIG9mIHN0eWxlIGJpdHMuJywpLAotKHUnVHlwZUxpYicsdSdEZXNjcmlwdGlvbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIE5vbmUsICksCi0odSdUeXBlTGliJyx1J0ZlYXR1cmVfJyx1J04nLE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSBUYWJsZSwgc3BlY2lmeWluZyB0aGUgZmVhdHVyZSB0byB2YWxpZGF0ZSBvciBpbnN0YWxsIGluIG9yZGVyIGZvciB0aGUgdHlwZSBsaWJyYXJ5IHRvIGJlIG9wZXJhdGlvbmFsLicsKSwKLSh1J1R5cGVMaWInLHUnQ29tcG9uZW50XycsdSdOJyxOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsMSx1J0lkZW50aWZpZXInLE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBjb21wb25lbnQgZm9yIHdoaWNoIHRvIHJldHVybiBhIHBhdGggd2hlbiBjYWxsZWQgdGhyb3VnaCBMb2NhdGVDb21wb25lbnQuJywpLAotKHUnVHlwZUxpYicsdSdEaXJlY3RvcnlfJyx1J1knLE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywxLHUnSWRlbnRpZmllcicsTm9uZSwgdSdPcHRpb25hbC4gVGhlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgcGF0aCB0byB0aGUgaGVscCBmaWxlIGZvciB0aGUgdHlwZSBsaWJyYXJ5LicsKSwKLSh1J1R5cGVMaWInLHUnTGFuZ3VhZ2UnLHUnTicsMCwzMjc2NyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBsYW5ndWFnZSBvZiB0aGUgbGlicmFyeS4nLCksCi0odSdUeXBlTGliJyx1J1ZlcnNpb24nLHUnWScsMCwxNjc3NzIxNSxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LiBUaGUgbWlub3IgdmVyc2lvbiBpcyBpbiB0aGUgbG93ZXIgOCBiaXRzIG9mIHRoZSBpbnRlZ2VyLiBUaGUgbWFqb3IgdmVyc2lvbiBpcyBpbiB0aGUgbmV4dCAxNiBiaXRzLiAnLCksCi0odSdUeXBlTGliJyx1J0Nvc3QnLHUnWScsMCwyMTQ3NDgzNjQ3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpc3RyYXRpb24gb2YgdGhlIHR5cGVsaWIuIFRoaXMgY29sdW1uIGlzIGN1cnJlbnRseSBvcHRpb25hbC4nLCksCi0odSdUeXBlTGliJyx1J0xpYklEJyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsTm9uZSwgdSdUaGUgR1VJRCB0aGF0IHJlcHJlc2VudHMgdGhlIGxpYnJhcnkuJywpLAotKHUnVUlUZXh0Jyx1J1RleHQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBsb2NhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLicsKSwKLSh1J1VJVGV4dCcsdSdLZXknLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJyxOb25lLCB1J0EgdW5pcXVlIGtleSB0aGF0IGlkZW50aWZpZXMgdGhlIHBhcnRpY3VsYXIgc3RyaW5nLicsKSwKLSh1J1VwZ3JhZGUnLHUnQXR0cmlidXRlcycsdSdOJywwLDIxNDc0ODM2NDcsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgYXR0cmlidXRlcyBvZiB0aGlzIHByb2R1Y3Qgc2V0LicsKSwKLSh1J1VwZ3JhZGUnLHUnTGFuZ3VhZ2UnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsTm9uZSwgdSdBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGxhbmd1YWdlcyBmb3IgZWl0aGVyIHByb2R1Y3RzIGluIHRoaXMgc2V0IG9yIHByb2R1Y3RzIG5vdCBpbiB0aGlzIHNldC4nLCksCi0odSdVcGdyYWRlJyx1J0FjdGlvblByb3BlcnR5Jyx1J04nLE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVXBwZXJDYXNlJyxOb25lLCB1J1RoZSBwcm9wZXJ0eSB0byBzZXQgd2hlbiBhIHByb2R1Y3QgaW4gdGhpcyBzZXQgaXMgZm91bmQuJywpLAotKHUnVXBncmFkZScsdSdSZW1vdmUnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIGxpc3Qgb2YgZmVhdHVyZXMgdG8gcmVtb3ZlIHdoZW4gdW5pbnN0YWxsaW5nIGEgcHJvZHVjdCBmcm9tIHRoaXMgc2V0LiAgVGhlIGRlZmF1bHQgaXMgIkFMTCIuJywpLAotKHUnVXBncmFkZScsdSdVcGdyYWRlQ29kZScsdSdOJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLE5vbmUsIHUnVGhlIFVwZ3JhZGVDb2RlIEdVSUQgYmVsb25naW5nIHRvIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4nLCksCi0odSdVcGdyYWRlJyx1J1ZlcnNpb25NYXgnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSBtYXhpbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicsKSwKLSh1J1VwZ3JhZGUnLHUnVmVyc2lvbk1pbicsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLE5vbmUsIHUnVGhlIG1pbmltdW0gUHJvZHVjdFZlcnNpb24gb2YgdGhlIHByb2R1Y3RzIGluIHRoaXMgc2V0LiAgVGhlIHNldCBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHByb2R1Y3RzIHdpdGggdGhpcyBwYXJ0aWN1bGFyIHZlcnNpb24uJywpLAotKHUnVmVyYicsdSdTZXF1ZW5jZScsdSdZJywwLDMyNzY3LE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnT3JkZXIgd2l0aGluIHRoZSB2ZXJicyBmb3IgYSBwYXJ0aWN1bGFyIGV4dGVuc2lvbi4gQWxzbyB1c2VkIHNpbXBseSB0byBzcGVjaWZ5IHRoZSBkZWZhdWx0IHZlcmIuJywpLAotKHUnVmVyYicsdSdBcmd1bWVudCcsdSdZJyxOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsTm9uZSwgdSdPcHRpb25hbCB2YWx1ZSBmb3IgdGhlIGNvbW1hbmQgYXJndW1lbnRzLicsKSwKLSh1J1ZlcmInLHUnRXh0ZW5zaW9uXycsdSdOJyxOb25lLCBOb25lLCB1J0V4dGVuc2lvbicsMSx1J1RleHQnLE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nLCksCi0odSdWZXJiJyx1J1ZlcmInLHUnTicsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JyxOb25lLCB1J1RoZSB2ZXJiIGZvciB0aGUgY29tbWFuZC4nLCksCi0odSdWZXJiJyx1J0NvbW1hbmQnLHUnWScsTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLE5vbmUsIHUnVGhlIGNvbW1hbmQgdGV4dC4nLCksCi1dCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvc2VxdWVuY2UucHkgYi9Ub29scy9tc2kvc2VxdWVuY2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMzhmN2EuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL3NlcXVlbmNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLUFkbWluRXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnSW5zdGFsbEZpbGVzJywgTm9uZSwgNDAwMCksCi0odSdJbnN0YWxsQWRtaW5QYWNrYWdlJywgTm9uZSwgMzkwMCksCi0odSdGaWxlQ29zdCcsIE5vbmUsIDkwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotXQotCi1BZG1pblVJU2VxdWVuY2UgPSBbCi0odSdGaWxlQ29zdCcsIE5vbmUsIDkwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0V4ZWN1dGVBY3Rpb24nLCBOb25lLCAxMzAwKSwKLSh1J0V4aXREaWFsb2cnLCBOb25lLCAtMSksCi0odSdGYXRhbEVycm9yJywgTm9uZSwgLTMpLAotKHUnVXNlckV4aXQnLCBOb25lLCAtMiksCi1dCi0KLUFkdnRFeGVjdXRlU2VxdWVuY2UgPSBbCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotKHUnQ3JlYXRlU2hvcnRjdXRzJywgTm9uZSwgNDUwMCksCi0odSdNc2lQdWJsaXNoQXNzZW1ibGllcycsIE5vbmUsIDYyNTApLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCBOb25lLCA2MjAwKSwKLSh1J1B1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDYzMDApLAotKHUnUHVibGlzaFByb2R1Y3QnLCBOb25lLCA2NDAwKSwKLSh1J1JlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgNDYwMCksCi0odSdSZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCA0NzAwKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCA0OTAwKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDQ4MDApLAotXQotCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbEluaXRpYWxpemUnLCBOb25lLCAxNTAwKSwKLSh1J0luc3RhbGxGaW5hbGl6ZScsIE5vbmUsIDY2MDApLAotKHUnSW5zdGFsbEZpbGVzJywgTm9uZSwgNDAwMCksCi0odSdGaWxlQ29zdCcsIE5vbmUsIDkwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0luc3RhbGxWYWxpZGF0ZScsIE5vbmUsIDE0MDApLAotKHUnQ3JlYXRlU2hvcnRjdXRzJywgTm9uZSwgNDUwMCksCi0odSdNc2lQdWJsaXNoQXNzZW1ibGllcycsIE5vbmUsIDYyNTApLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCBOb25lLCA2MjAwKSwKLSh1J1B1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDYzMDApLAotKHUnUHVibGlzaFByb2R1Y3QnLCBOb25lLCA2NDAwKSwKLSh1J1JlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgNDYwMCksCi0odSdSZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCA0NzAwKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCA0OTAwKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDQ4MDApLAotKHUnQWxsb2NhdGVSZWdpc3RyeVNwYWNlJywgdSdOT1QgSW5zdGFsbGVkJywgMTU1MCksCi0odSdBcHBTZWFyY2gnLCBOb25lLCA0MDApLAotKHUnQmluZEltYWdlJywgTm9uZSwgNDMwMCksCi0odSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotKHUnQ3JlYXRlRm9sZGVycycsIE5vbmUsIDM3MDApLAotKHUnRGVsZXRlU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDIwMDApLAotKHUnRHVwbGljYXRlRmlsZXMnLCBOb25lLCA0MjEwKSwKLSh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCBOb25lLCAyMDApLAotKHUnSW5zdGFsbE9EQkMnLCBOb25lLCA1NDAwKSwKLSh1J0luc3RhbGxTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgNTgwMCksCi0odSdJc29sYXRlQ29tcG9uZW50cycsIE5vbmUsIDk1MCksCi0odSdMYXVuY2hDb25kaXRpb25zJywgTm9uZSwgMTAwKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0odSdNb3ZlRmlsZXMnLCBOb25lLCAzODAwKSwKLSh1J1BhdGNoRmlsZXMnLCBOb25lLCA0MDkwKSwKLSh1J1Byb2Nlc3NDb21wb25lbnRzJywgTm9uZSwgMTYwMCksCi0odSdSZWdpc3RlckNvbVBsdXMnLCBOb25lLCA1NzAwKSwKLSh1J1JlZ2lzdGVyRm9udHMnLCBOb25lLCA1MzAwKSwKLSh1J1JlZ2lzdGVyUHJvZHVjdCcsIE5vbmUsIDYxMDApLAotKHUnUmVnaXN0ZXJUeXBlTGlicmFyaWVzJywgTm9uZSwgNTUwMCksCi0odSdSZWdpc3RlclVzZXInLCBOb25lLCA2MDAwKSwKLSh1J1JlbW92ZUR1cGxpY2F0ZUZpbGVzJywgTm9uZSwgMzQwMCksCi0odSdSZW1vdmVFbnZpcm9ubWVudFN0cmluZ3MnLCBOb25lLCAzMzAwKSwKLSh1J1JlbW92ZUV4aXN0aW5nUHJvZHVjdHMnLCBOb25lLCA2NzAwKSwKLSh1J1JlbW92ZUZpbGVzJywgTm9uZSwgMzUwMCksCi0odSdSZW1vdmVGb2xkZXJzJywgTm9uZSwgMzYwMCksCi0odSdSZW1vdmVJbmlWYWx1ZXMnLCBOb25lLCAzMTAwKSwKLSh1J1JlbW92ZU9EQkMnLCBOb25lLCAyNDAwKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5VmFsdWVzJywgTm9uZSwgMjYwMCksCi0odSdSZW1vdmVTaG9ydGN1dHMnLCBOb25lLCAzMjAwKSwKLSh1J1JNQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNjAwKSwKLSh1J1NlbGZSZWdNb2R1bGVzJywgTm9uZSwgNTYwMCksCi0odSdTZWxmVW5yZWdNb2R1bGVzJywgTm9uZSwgMjIwMCksCi0odSdTZXRPREJDRm9sZGVycycsIE5vbmUsIDExMDApLAotKHUnU3RhcnRTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgNTkwMCksCi0odSdTdG9wU2VydmljZXMnLCB1J1ZlcnNpb25OVCcsIDE5MDApLAotKHUnTXNpVW5wdWJsaXNoQXNzZW1ibGllcycsIE5vbmUsIDE3NTApLAotKHUnVW5wdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDE3MDApLAotKHUnVW5wdWJsaXNoRmVhdHVyZXMnLCBOb25lLCAxODAwKSwKLSh1J1VucmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCAyNzAwKSwKLSh1J1VucmVnaXN0ZXJDb21QbHVzJywgTm9uZSwgMjEwMCksCi0odSdVbnJlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDI4MDApLAotKHUnVW5yZWdpc3RlckZvbnRzJywgTm9uZSwgMjUwMCksCi0odSdVbnJlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCAzMDAwKSwKLSh1J1VucmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgMjkwMCksCi0odSdVbnJlZ2lzdGVyVHlwZUxpYnJhcmllcycsIE5vbmUsIDIzMDApLAotKHUnVmFsaWRhdGVQcm9kdWN0SUQnLCBOb25lLCA3MDApLAotKHUnV3JpdGVFbnZpcm9ubWVudFN0cmluZ3MnLCBOb25lLCA1MjAwKSwKLSh1J1dyaXRlSW5pVmFsdWVzJywgTm9uZSwgNTEwMCksCi0odSdXcml0ZVJlZ2lzdHJ5VmFsdWVzJywgTm9uZSwgNTAwMCksCi1dCi0KLUluc3RhbGxVSVNlcXVlbmNlID0gWwotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0odSdFeGl0RGlhbG9nJywgTm9uZSwgLTEpLAotKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotKHUnQXBwU2VhcmNoJywgTm9uZSwgNDAwKSwKLSh1J0NDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDUwMCksCi0odSdGaW5kUmVsYXRlZFByb2R1Y3RzJywgTm9uZSwgMjAwKSwKLSh1J0lzb2xhdGVDb21wb25lbnRzJywgTm9uZSwgOTUwKSwKLSh1J0xhdW5jaENvbmRpdGlvbnMnLCBOb25lLCAxMDApLAotKHUnTWlncmF0ZUZlYXR1cmVTdGF0ZXMnLCBOb25lLCAxMjAwKSwKLSh1J1JNQ0NQU2VhcmNoJywgdSdOT1QgSW5zdGFsbGVkJywgNjAwKSwKLSh1J1ZhbGlkYXRlUHJvZHVjdElEJywgTm9uZSwgNzAwKSwKLV0KLQotdGFibGVzPVsnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCAnQWRtaW5VSVNlcXVlbmNlJywgJ0FkdnRFeGVjdXRlU2VxdWVuY2UnLCAnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsICdJbnN0YWxsVUlTZXF1ZW5jZSddCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGsud2l4cHJvaiBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0ay53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NmZjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGsud2l4cHJvagpAQCAtMCwwICsxLDUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57REIzNTA2MDAtMTg2Qy00RTUyLUJBOTgtMjZBN0NFQ0IwNjdGfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dGNsdGs8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8IS0tIFNob3J0Y3V0IHZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAtLT4KKyAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U0MzwvU3VwcHJlc3NJQ0VzPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0ay53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRjbHRrX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfcmVnLnd4cyIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8V3hsVGVtcGxhdGUgSW5jbHVkZT0iKi53eGxfdGVtcGxhdGUiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKHRjbHRrRGlyKWJpblwqLmRsbCIgRXhjbHVkZT0iJCh0Y2x0a0RpciliaW5cKmcuZGxsIj4KKyAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQodGNsdGtEaXIpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnRjbHRrKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JCh0Y2x0a0RpciliaW48L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz5ETExzXDwvVGFyZ2V0Xz4KKyAgICAgICAgICAgIDxHcm91cD50Y2x0a19kbGxzPC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisKKyAgICAgICAgPEluc3RhbGxGaWxlcyBJbmNsdWRlPSIkKHRjbHRrRGlyKWxpYlwqKlwqIj4KKyAgICAgICAgICAgIDxTb3VyY2VCYXNlPiQodGNsdGtEaXIpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgPFNvdXJjZT4hKGJpbmRwYXRoLnRjbHRrKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JCh0Y2x0a0RpcilsaWI8L1RhcmdldEJhc2U+CisgICAgICAgICAgICA8VGFyZ2V0Xz50Y2xcPC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRjbHRrX2xpYjwvR3JvdXA+CisgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorCisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpTGliXHRraW50ZXJcKipcKjskKFB5U291cmNlUGF0aClMaWJcaWRsZWxpYlwqKlwqOyQoUHlTb3VyY2VQYXRoKUxpYlx0dXJ0bGVkZW1vXCoqXCoiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZT0iJChQeVNvdXJjZVBhdGgpTGliXCoqXCoucHljOyQoUHlTb3VyY2VQYXRoKUxpYlwqKlwqLnB5byI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKFB5U291cmNlUGF0aCk8L1NvdXJjZUJhc2U+CisgICAgICAgICAgICA8U291cmNlPiEoYmluZHBhdGguc3JjKTwvU291cmNlPgorICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+PC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRraW50ZXJfbGliPC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGsud3hzIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjgzYzVjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrLnd4cwpAQCAtMCwwICsxLDY0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGUpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5IElkPSJQWVRIT05fRVhFIiBTZWN1cmU9InllcyI+CisgICAgICAgICAgICA8Q29tcG9uZW50U2VhcmNoIElkPSJQeXRob25FeGUiIEd1aWQ9IiQodmFyLlB5dGhvbkV4ZUNvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8RmlsZVNlYXJjaCBOYW1lPSJweXRob24uZXhlIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnRTZWFyY2g+CisgICAgICAgIDwvUHJvcGVydHk+CisgICAgICAgIAorICAgICAgICA8UHJvcGVydHkgSWQ9IlBZVEhPTldfRVhFIiBTZWN1cmU9InllcyI+CisgICAgICAgICAgICA8Q29tcG9uZW50U2VhcmNoIElkPSJQeXRob253RXhlIiBHdWlkPSIkKHZhci5QeXRob253RXhlQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxGaWxlU2VhcmNoIE5hbWU9InB5dGhvbncuZXhlIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnRTZWFyY2g+CisgICAgICAgIDwvUHJvcGVydHk+CisgICAgICAgIAorICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vUHl0aG9uKSI+UFlUSE9OX0VYRSBhbmQgUFlUSE9OV19FWEU8L0NvbmRpdGlvbj4KKworICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRraW50ZXJfZXh0ZW5zaW9uIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0Y2x0a19kbGxzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0Y2x0a19saWIiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRraW50ZXJfbGliIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImlkbGVfcmVnIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleVBhdGg9InllcyIgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldXElkbGUiIFR5cGU9InN0cmluZyIgVmFsdWU9IlsjTGliX2lkbGVsaWJfaWRsZS5weXddIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgPEZlYXR1cmUgSWQ9IkFzc29jaWF0ZUZpbGVzIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0a2ludGVyX2xpYiIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iaWRsZV9yZWciIC8+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICAgICAgPEZlYXR1cmUgSWQ9IlNob3J0Y3V0cyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idGtpbnRlcl9saWIiIC8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImlkbGVfc2hvcnRjdXQiIERpcmVjdG9yeT0iTWVudURpciI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldXElkbGVTaG9ydGN1dHMiIFR5cGU9ImludGVnZXIiIFZhbHVlPSIxIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX01lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CisKKyAgICAgICAgICAgICAgICA8U2hvcnRjdXQgSWQ9IklETEUiCisgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeT0iTWVudURpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iIShsb2MuU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlNob3J0Y3V0RGVzY3JpcHRpb24pIgorICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXQ9IltQWVRIT05XX0VYRV0iCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50cz0nIlsjTGliX2lkbGVsaWJfaWRsZS5weXddIicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSWNvbj0iaWRsZS5leGUiPgorICAgICAgICAgICAgICAgICAgICA8SWNvbiBJZD0iaWRsZS5leGUiIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKUxpYlxpZGxlbGliXEljb25zXGlkbGUuaWNvIiAvPgorICAgICAgICAgICAgICAgIDwvU2hvcnRjdXQ+CisgICAgICAgICAgICAgICAgPFNob3J0Y3V0IElkPSJweWRvYy5weSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0PSJbUFlUSE9OX0VYRV0iCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50cz0nLW0gcHlkb2MgLWInCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IiEobG9jLlB5RG9jU2hvcnRjdXROYW1lKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb249IiEobG9jLlB5RG9jU2hvcnRjdXREZXNjcmlwdGlvbikiCisgICAgICAgICAgICAgICAgICAgICAgICAgIEljb249ImlkbGUuZXhlIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvRmVhdHVyZT4KKyAgICA8L1Byb2R1Y3Q+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19kLndpeHByb2ogYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNjYxOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53aXhwcm9qCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgPFByb2plY3RHdWlkPntFREExRkE1QS1FMkFBLTRFQUYtQjQ5Qi04N0Q5ODFDRDBGMTZ9PC9Qcm9qZWN0R3VpZD4KKyAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgorICAgICAgICA8T3V0cHV0TmFtZT50Y2x0a19kPC9PdXRwdXROYW1lPgorICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS5wcm9wcyIgLz4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJ0Y2x0a19kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGNsdGtfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxXeGxUZW1wbGF0ZSBJbmNsdWRlPSIqLnd4bF90ZW1wbGF0ZSIgLz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICA8SXRlbUdyb3VwPgorICAgICAgICA8SW5zdGFsbEZpbGVzIEluY2x1ZGU9IiQodGNsdGtEaXIpYmluXCpnLmRsbCI+CisgICAgICAgICAgICA8U291cmNlQmFzZT4kKHRjbHRrRGlyKTwvU291cmNlQmFzZT4KKyAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC50Y2x0ayk8L1NvdXJjZT4KKyAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQodGNsdGtEaXIpYmluPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgPFRhcmdldF8+RExMc1w8L1RhcmdldF8+CisgICAgICAgICAgICA8R3JvdXA+dGNsdGtfZGxsc19kPC9Hcm91cD4KKyAgICAgICAgPC9JbnN0YWxsRmlsZXM+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfZC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkMGQyNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90Y2x0ay90Y2x0a19kLnd4cwpAQCAtMCwwICsxLDE0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVfZCkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+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+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53eHMgYi9Ub29scy9tc2kvdGNsdGsvdGNsdGtfcGRiLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDQ1NGYzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3RjbHRrL3RjbHRrX3BkYi53eHMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxQcm9kdWN0IElkPSIqIiBMYW5ndWFnZT0iIShsb2MuTENJRCkiIE5hbWU9IiEobG9jLlRpdGxlUGRiKSIgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIgVXBncmFkZUNvZGU9IiQodmFyLlVwZ3JhZGVDb2RlKSI+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+PC9UYXJnZXRfPgorICAgICAgICAgICAgPEdyb3VwPnRlc3RfcHk8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdC53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJlZDY0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3Qud3hzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfcHkiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9ucyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KKyAgICAgICAgPC9GZWF0dXJlPgorICAgIDwvUHJvZHVjdD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2ogYi9Ub29scy9tc2kvdGVzdC90ZXN0X2Qud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2IwNGJlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLndpeHByb2oKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezQxRjVBRThELTI0Q0QtNEQwMy1CRTc1LUFBNkY3RkFCNDA5N308L1Byb2plY3RHdWlkPgorICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CisgICAgICAgIDxPdXRwdXROYW1lPnRlc3RfZDwvT3V0cHV0TmFtZT4KKyAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kucHJvcHMiIC8+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9kLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2Qud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTU0ODc2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9kLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVfZCkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVidWdCaW5hcmllcyIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGVfZCkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbl9kKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9uc19kIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2VuLVVTLnd4bCBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZW4tVVMud3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTVjN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2VuLVVTLnd4bApAQCAtMCwwICsxLDcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlRlc3QgU3VpdGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPnRlc3Q8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOYXRpdmVNb2R1bGVzVGl0bGUiPiEobG9jLkZ1bGxQcm9kdWN0TmFtZSkgbmF0aXZlIGxpYnRlc3Q8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJOYXRpdmVNb2R1bGVzRGVzY3JpcHRpb24iPiEobG9jLlByb2R1Y3ROYW1lKSBOYXRpdmUgVGVzdCBNb2R1bGVzPC9TdHJpbmc+Cis8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwM2FhMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCkBAIC0wLDAgKzEsNzcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5weWQiIE5hbWU9Il90ZXN0Y2FwaS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0LnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlci5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0YnVmZmVyLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXIucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zX3N5bWJvbHMiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RjYXBpLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpLnBkYiIgTmFtZT0iX3Rlc3RjYXBpLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX2N0eXBlc190ZXN0LnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0LnBkYiIgTmFtZT0iX2N0eXBlc190ZXN0LnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RidWZmZXIucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlci5wZGIiIE5hbWU9Il90ZXN0YnVmZmVyLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19kIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucHlkIiBOYW1lPSJfdGVzdGNhcGlfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucHlkIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXJfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucGRiIiBOYW1lPSJfdGVzdGNhcGlfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucGRiIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgTmFtZT0iX3Rlc3RidWZmZXJfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud2l4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjVmMGVkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3QvdGVzdF9wZGIud2l4cHJvagpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57N0NGNDhBREQtQ0ZBQS00OTlGLTlBMDUtQkExODQ0MEEzMzQ0fTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dGVzdF9wZGI8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRlc3RfcGRiLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idGVzdF9maWxlcy53eHMiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CisgICAgPC9JdGVtR3JvdXA+CisgICAgCisgICAgPEltcG9ydCBQcm9qZWN0PSIuLlxtc2kudGFyZ2V0cyIgLz4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53eHMgYi9Ub29scy9tc2kvdGVzdC90ZXN0X3BkYi53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2MzRhMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfcGRiLnd4cwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPFByb2R1Y3QgSWQ9IioiIExhbmd1YWdlPSIhKGxvYy5MQ0lEKSIgTmFtZT0iIShsb2MuVGl0bGVQZGIpIiBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBVcGdyYWRlQ29kZT0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgPFBhY2thZ2UgSW5zdGFsbGVyVmVyc2lvbj0iMzAwIiBDb21wcmVzc2VkPSJ5ZXMiIEluc3RhbGxTY29wZT0icGVyVXNlciIgUGxhdGZvcm09IiQodmFyLlBsYXRmb3JtKSIgLz4KKyAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KKyAgICAgICAgCisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iVXBncmFkZVRhYmxlIiAvPgorICAgICAgICAKKyAgICAgICAgPEZlYXR1cmUgSWQ9IlN5bWJvbHMiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlUGRiKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uUGRiKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRlc3RfZXh0ZW5zaW9uc19zeW1ib2xzIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL3Rlc3RyZWxlYXNlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTg5NTc1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rlc3RyZWxlYXNlLmJhdApAQCAtMCwwICsxLDExNyBAQAorQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMNCitAZWNobyBvZmYNCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IFRBUkdFVERJUj0lVEVNUCUNCitzZXQgVEVTVFg4Nj0NCitzZXQgVEVTVFg2ND0NCitzZXQgVEVTVEFMTFVTRVI9DQorc2V0IFRFU1RQRVJVU0VSPQ0KKw0KKzpDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLWgiIGdvdG8gSGVscA0KK2lmICIlMSIgRVFVICIteDg2IiAoc2V0IFRFU1RYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLXg2NCIgKHNldCBURVNUWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi10IiAoc2V0IFRBUkdFVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tdGFyZ2V0IiAoc2V0IFRBUkdFVERJUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi1hIiAoc2V0IFRFU1RBTExVU0VSPTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tYWxsdXNlciIgKHNldCBURVNUQUxMVVNFUj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItcCIgKHNldCBURVNUUEVSVVNFUj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXBlcnVzZXIiIChzZXQgVEVTVFBFUlVTRVI9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCisNCitpZiBub3QgZGVmaW5lZCBURVNUWDg2IGlmIG5vdCBkZWZpbmVkIFRFU1RYNjQgKHNldCBURVNUWDg2PTEpICYmIChzZXQgVEVTVFg2ND0xKQ0KK2lmIG5vdCBkZWZpbmVkIFRFU1RBTExVU0VSIGlmIG5vdCBkZWZpbmVkIFRFU1RQRVJVU0VSIChzZXQgVEVTVEFMTFVTRVI9MSkgJiYgKHNldCBURVNUUEVSVVNFUj0xKQ0KKw0KKw0KK2lmIGRlZmluZWQgVEVTVFg4NiAoDQorICAgIGZvciAlJWYgaW4gKCIlUENCVUlMRCV3aW4zMlxlbi11c1wqLmV4ZSIpIGRvICgNCisgICAgICAgIGlmIGRlZmluZWQgVEVTVEFMTFVTRVIgY2FsbCA6dGVzdCAiJSV+ZmYiICIlVEFSR0VURElSJVwlJX5uZi1hbGx1c2VyIiAiSW5zdGFsbEFsbFVzZXJzPTEgQ29tcGlsZUFsbD0xIg0KKyAgICAgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgICAgIGlmIGRlZmluZWQgVEVTVFBFUlVTRVIgY2FsbCA6dGVzdCAiJSV+ZmYiICIlVEFSR0VURElSJVwlJX5uZi1wZXJ1c2VyIiAiSW5zdGFsbEFsbFVzZXJzPTAgQ29tcGlsZUFsbD0wIg0KKyAgICAgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCisgICAgKQ0KKykNCisNCitpZiBkZWZpbmVkIFRFU1RYNjQgKA0KKyAgICBmb3IgJSVmIGluICgiJVBDQlVJTEQlYW1kNjRcZW4tdXNcKi5leGUiKSBkbyAoDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RBTExVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtYWxsdXNlciIgIkluc3RhbGxBbGxVc2Vycz0xIENvbXBpbGVBbGw9MSINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICAgICBpZiBkZWZpbmVkIFRFU1RQRVJVU0VSIGNhbGwgOnRlc3QgIiUlfmZmIiAiJVRBUkdFVERJUiVcJSV+bmYtcGVydXNlciIgIkluc3RhbGxBbGxVc2Vycz0wIENvbXBpbGVBbGw9MCINCisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgICkNCispDQorDQorZXhpdCAvQiAwDQorDQorOnRlc3QNCitAc2V0bG9jYWwNCitAZWNobyBvbg0KKw0KK0BpZiBub3QgZXhpc3QgIiV+MSIgZXhpdCAvQiAxDQorDQorQHNldCBFWEU9JX4xDQorQGlmIG5vdCAiJUVYRTplbWJlZD0lIj09IiVFWEUlIiBleGl0IC9CIDANCisNCitAc2V0IEVYSVRDT0RFPTANCitAZWNobyBJbnN0YWxsaW5nICUxIGludG8gJTINCisiJX4xIiAvcGFzc2l2ZSAvbG9nICIlfjJcaW5zdGFsbFxsb2cudHh0IiBUYXJnZXREaXI9IiV+MlxQeXRob24iIEluY2x1ZGVfZGVidWc9MSBJbmNsdWRlX3N5bWJvbHM9MSAlfjMNCisNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIFByaW50aW5nIHZlcnNpb24NCisgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLWMgImltcG9ydCBzeXM7IHByaW50KHN5cy52ZXJzaW9uKSIgPiAiJX4yXHZlcnNpb24udHh0IiAyPiYxDQorKQ0KKw0KK0BpZiBub3QgZXJyb3JsZXZlbCAxICgNCisgICAgQGVjaG8gQ2FwdHVyaW5nIFN0YXJ0IE1lbnUNCisgICAgQGRpciAvcy9iICIlUFJPR1JBTURBVEElXE1pY3Jvc29mdFxXaW5kb3dzXFN0YXJ0IE1lbnVcUHJvZ3JhbXMiIHwgZmluZHN0ciAvaWM6InB5dGhvbiIgPiAiJX4yXHN0YXJ0bWVudS50eHQiIDI+JjENCisgICAgQGRpciAvcy9iICIlQVBQREFUQSVcTWljcm9zb2Z0XFdpbmRvd3NcU3RhcnQgTWVudVxQcm9ncmFtcyIgfCBmaW5kc3RyIC9pYzoicHl0aG9uIiAgPj4gIiV+MlxzdGFydG1lbnUudHh0IiAyPiYxDQorDQorICAgIEBlY2hvIENhcHR1cmluZyByZWdpc3RyeQ0KKyAgICBAZm9yIC9GICJ1c2ViYWNrcSIgJSVmIGluIChgcmVnIHF1ZXJ5IEhLQ1IgL3MgL2YgcHl0aG9uIC9rYCkgZG8gQCgNCisgICAgICAgIGVjaG8gJSVmID4+ICIlfjJcaGtjci50eHQiDQorICAgICAgICByZWcgcXVlcnkgIiUlZiIgL3MgPj4gIiV+Mlxoa2NyLnR4dCIgMj4mMQ0KKyAgICApDQorICAgIEByZWcgcXVlcnkgSEtDVVxTb2Z0d2FyZVxQeXRob24gL3MgPiAiJX4yXGhrY3UudHh0IiAyPiYxDQorICAgIEByZWcgcXVlcnkgSEtMTVxTb2Z0d2FyZVxQeXRob24gL3JlZzozMiAvcyA+ICIlfjJcaGtsbS50eHQiIDI+JjENCisgICAgQHJlZyBxdWVyeSBIS0xNXFNvZnR3YXJlXFB5dGhvbiAvcmVnOjY0IC9zID4+ICIlfjJcaGtsbS50eHQiIDI+JjENCisgICAgY21kIC9rIGV4aXQgMA0KKykNCisNCitAaWYgbm90IGVycm9ybGV2ZWwgMSAoDQorICAgIEBlY2hvIEluc3RhbGxpbmcgcGFja2FnZQ0KKyAgICAiJX4yXFB5dGhvblxweXRob24uZXhlIiAtbSBwaXAgaW5zdGFsbCAiYXp1cmU8MC4xMCIgPiAiJX4yXHBpcC50eHQiIDI+JjENCisgICAgQGlmIG5vdCBlcnJvcmxldmVsIDEgKA0KKyAgICAgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLW0gcGlwIHVuaW5zdGFsbCAteSBhenVyZSBweXRob24tZGF0ZXV0aWwgc2l4ID4+ICIlfjJccGlwLnR4dCIgMj4mMQ0KKyAgICApDQorKQ0KK0BpZiBub3QgZXJyb3JsZXZlbCAxICgNCisgICAgQGVjaG8gVGVzdGluZyBUY2wvdGsNCisgICAgQHNldCBUQ0xfTElCUkFSWT0lfjJcUHl0aG9uXHRjbFx0Y2w4LjYNCisgICAgIiV+MlxQeXRob25ccHl0aG9uLmV4ZSIgLW0gdGVzdCAtdWFsbCAtdiB0ZXN0X3R0a19ndWlvbmx5IHRlc3RfdGsgdGVzdF9pZGxlID4gIiV+Mlx0Y2x0ay50eHQiIDI+JjENCisgICAgQHNldCBUQ0xfTElCUkFSWT0NCispDQorDQorQHNldCBFWElUQ09ERT0lRVJST1JMRVZFTCUNCisNCitAZWNobyBSZXN1bHQgd2FzICVFWElUQ09ERSUNCitAZWNobyBSZW1vdmluZyAlMQ0KKyIlfjEiIC9wYXNzaXZlIC91bmluc3RhbGwgL2xvZyAiJX4yXHVuaW5zdGFsbFxsb2cudHh0Ig0KKw0KK0BlY2hvIG9mZg0KK2V4aXQgL0IgJUVYSVRDT0RFJQ0KKw0KKzpIZWxwDQorZWNobyB0ZXN0cmVsZWFzZS5iYXQgWy0tdGFyZ2V0IFRBUkdFVF0gWy14ODZdIFsteDY0XSBbLS1hbGx1c2VyXSBbLS1wZXJ1c2VyXSBbLWhdDQorZWNoby4NCitlY2hvICAgIC0tdGFyZ2V0ICgtdCkgICBTcGVjaWZ5IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGZvciBpbnN0YWxscyBhbmQgbG9ncw0KK2VjaG8gICAgLXg4NiAgICAgICAgICAgIFJ1biB0ZXN0cyBmb3IgeDg2IGluc3RhbGxlcnMNCitlY2hvICAgIC14NjQgICAgICAgICAgICBSdW4gdGVzdHMgZm9yIHg2NCBpbnN0YWxsZXJzDQorZWNobyAgICAtLWFsbHVzZXIgKC1hKSAgUnVuIHRlc3RzIGZvciBhbGwtdXNlciBpbnN0YWxscyAocmVxdWlyZXMgQWRtaW5pc3RyYXRvcikNCitlY2hvICAgIC0tcGVydXNlciAoLXApICBSdW4gdGVzdHMgZm9yIHBlci11c2VyIGluc3RhbGxzDQorZWNobyAgICAtaCAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCitlY2hvLg0KK2VjaG8gSWYgbm8gdGVzdCBhcmNoaXRlY3R1cmUgaXMgc3BlY2lmaWVkLCBhbGwgYXJjaGl0ZWN0dXJlcyB3aWxsIGJlIHRlc3RlZC4NCitlY2hvIElmIG5vIGluc3RhbGwgdHlwZSBpcyBzZWxlY3RlZCwgYWxsIGluc3RhbGwgdHlwZXMgd2lsbCBiZSB0ZXN0ZWQuDQorZWNoby4NCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvaiBiL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0M2NmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgIDxQcm9qZWN0R3VpZD57MjRDQkVCOTUtQkMxRS00RUE5LUFFQTktMzM4MzRCQ0NEMEVDfTwvUHJvamVjdEd1aWQ+CisgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KKyAgICAgICAgPE91dHB1dE5hbWU+dG9vbHM8L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+CisgICAgPC9Qcm9wZXJ0eUdyb3VwPgorICAgIDxJbXBvcnQgUHJvamVjdD0iLi5cbXNpLnByb3BzIiAvPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9InRvb2xzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0idG9vbHNfZmlsZXMud3hzIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxUb29sRGlyZWN0b3JpZXMgSW5jbHVkZT0ic2NyaXB0cztpMThuO3B5bmNoZTtweW5jaGVcWDtkZW1vIiAvPgorICAgIDwvSXRlbUdyb3VwPgorICAgIDxJdGVtR3JvdXA+CisgICAgICAgIDxJbnN0YWxsRmlsZXMgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpVG9vbHNcc2NyaXB0c1wqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHNjcmlwdHNcKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcc2NyaXB0c1wqKlwqLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xpMThuXCoqXCoucHk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcaTE4blwqKlwqLnB5dzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xpMThuXCoqXCoudHh0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHB5bmNoZVwqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXHB5bmNoZVwqKlwqLnB5dzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xweW5jaGVcKipcKi50eHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcZGVtb1wqKlwqLnB5OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoUHlTb3VyY2VQYXRoKVRvb2xzXGRlbW9cKipcKi5weXc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChQeVNvdXJjZVBhdGgpVG9vbHNcZGVtb1wqKlwqLnR4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKFB5U291cmNlUGF0aClUb29sc1xwYXJzZXJcKipcKi5weSI+CisgICAgICAgICAgICAgICAgPFNvdXJjZUJhc2U+JChQeVNvdXJjZVBhdGgpPC9Tb3VyY2VCYXNlPgorICAgICAgICAgICAgICAgIDxTb3VyY2U+IShiaW5kcGF0aC5zcmMpPC9Tb3VyY2U+CisgICAgICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgorICAgICAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KKyAgICAgICAgICAgICAgICA8R3JvdXA+dG9vbHNfcHk8L0dyb3VwPgorICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICA8L0l0ZW1Hcm91cD4KKyAgICAKKyAgICA8SW1wb3J0IFByb2plY3Q9Ii4uXG1zaS50YXJnZXRzIiAvPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29scy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmODQxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCkBAIC0wLDAgKzEsMTUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8UHJvZHVjdCBJZD0iKiIgTGFuZ3VhZ2U9IiEobG9jLkxDSUQpIiBOYW1lPSIhKGxvYy5UaXRsZSkiIFZlcnNpb249IiQodmFyLlZlcnNpb24pIiBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiIFVwZ3JhZGVDb2RlPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICA8UGFja2FnZSBJbnN0YWxsZXJWZXJzaW9uPSIzMDAiIENvbXByZXNzZWQ9InllcyIgSW5zdGFsbFNjb3BlPSJwZXJVc2VyIiBQbGF0Zm9ybT0iJCh2YXIuUGxhdGZvcm0pIiAvPgorICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgorICAgICAgICAKKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJVcGdyYWRlVGFibGUiIC8+CisgICAgICAgIAorICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3B5IiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19zY3JpcHRzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgorICAgICAgICA8L0ZlYXR1cmU+CisgICAgPC9Qcm9kdWN0PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZW4tVVMud3hsIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2VuLVVTLnd4bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTM4NDE3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2VuLVVTLnd4bApAQCAtMCwwICsxLDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8V2l4TG9jYWxpemF0aW9uIEN1bHR1cmU9ImVuLXVzIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi9sb2NhbGl6YXRpb24iPgorICAgIDxTdHJpbmcgSWQ9IkRlc2NyaXB0b3IiPlV0aWxpdHkgU2NyaXB0czwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+dG9vbHM8L1N0cmluZz4KKzwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FlMGRiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0b29sc19zY3JpcHRzIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlRvb2xzX3NjcmlwdHNfMnRvMy5weSIgRGlyZWN0b3J5PSJUb29sc19zY3JpcHRzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iVG9vbHNfc2NyaXB0c18ydG8zLnB5IiBOYW1lPSIydG8zLnB5IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVRvb2xzXHNjcmlwdHNcMnRvMyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iVG9vbHNfc2NyaXB0c19weWRvYzMucHkiIERpcmVjdG9yeT0iVG9vbHNfc2NyaXB0cyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9IlRvb2xzX3NjcmlwdHNfcHlkb2MzLnB5IiBOYW1lPSJweWRvYzMucHkiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpVG9vbHNcc2NyaXB0c1xweWRvYzMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlRvb2xzX3NjcmlwdHNfcHl2ZW52LnB5IiBEaXJlY3Rvcnk9IlRvb2xzX3NjcmlwdHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJUb29sc19zY3JpcHRzX3B5dmVudi5weSIgTmFtZT0icHl2ZW52LnB5IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVRvb2xzXHNjcmlwdHNccHl2ZW52IiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Vpc2FtcGxlLnB5IGIvVG9vbHMvbXNpL3Vpc2FtcGxlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDMwODA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS91aXNhbXBsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDAgKzAsMCBAQAotCi1pbXBvcnQgbXNpbGliLG9zO2Rpcm5hbWU9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotQWRtaW5FeGVjdXRlU2VxdWVuY2UgPSBbCi0odSdJbnN0YWxsVmFsaWRhdGUnLCBOb25lLCAxNDAwKSwKLSh1J0luc3RhbGxJbml0aWFsaXplJywgTm9uZSwgMTUwMCksCi0odSdJbnN0YWxsRmluYWxpemUnLCBOb25lLCA2NjAwKSwKLSh1J0luc3RhbGxGaWxlcycsIE5vbmUsIDQwMDApLAotKHUnSW5zdGFsbEFkbWluUGFja2FnZScsIE5vbmUsIDM5MDApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi1dCi0KLUFkbWluVUlTZXF1ZW5jZSA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIE5vbmUsIDEyMzApLAotKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotKHUnQ29zdEluaXRpYWxpemUnLCBOb25lLCA4MDApLAotKHUnQ29zdEZpbmFsaXplJywgTm9uZSwgMTAwMCksCi0odSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0odSdFeGl0RGlhbG9nJywgTm9uZSwgLTEpLAotKHUnRmF0YWxFcnJvcicsIE5vbmUsIC0zKSwKLSh1J1ByZXBhcmVEbGcnLCBOb25lLCAxNDApLAotKHUnUHJvZ3Jlc3NEbGcnLCBOb25lLCAxMjgwKSwKLSh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotXQotCi1BZHZ0RXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdDb3N0SW5pdGlhbGl6ZScsIE5vbmUsIDgwMCksCi0odSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIE5vbmUsIDQ1MDApLAotKHUnUHVibGlzaENvbXBvbmVudHMnLCBOb25lLCA2MjAwKSwKLSh1J1B1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDYzMDApLAotKHUnUHVibGlzaFByb2R1Y3QnLCBOb25lLCA2NDAwKSwKLSh1J1JlZ2lzdGVyQ2xhc3NJbmZvJywgTm9uZSwgNDYwMCksCi0odSdSZWdpc3RlckV4dGVuc2lvbkluZm8nLCBOb25lLCA0NzAwKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCBOb25lLCA0OTAwKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIE5vbmUsIDQ4MDApLAotXQotCi1CQkNvbnRyb2wgPSBbCi1dCi0KLUJpbGxib2FyZCA9IFsKLV0KLQotQmluYXJ5ID0gWwotKHUnYmFubnJibXAnLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJiYW5ucmJtcC5iaW4iKSkpLAotKHUnY29tcGxldGknLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJjb21wbGV0aS5iaW4iKSkpLAotKHUnY3VzdGljb24nLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJjdXN0aWNvbi5iaW4iKSkpLAotKHUnZGxnYm1wJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiZGxnYm1wLmJpbiIpKSksCi0odSdleGNsYW1pYycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsImV4Y2xhbWljLmJpbiIpKSksCi0odSdpbmZvJywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiaW5mby5iaW4iKSkpLAotKHUnaW5zdGljb24nLCBtc2lsaWIuQmluYXJ5KG9zLnBhdGguam9pbihkaXJuYW1lLCJpbnN0aWNvbi5iaW4iKSkpLAotKHUnTmV3JywgbXNpbGliLkJpbmFyeShvcy5wYXRoLmpvaW4oZGlybmFtZSwiTmV3LmJpbiIpKSksCi0odSdyZW1vdmljbycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsInJlbW92aWNvLmJpbiIpKSksCi0odSdyZXBhaXJpYycsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsInJlcGFpcmljLmJpbiIpKSksCi0odSdVcCcsIG1zaWxpYi5CaW5hcnkob3MucGF0aC5qb2luKGRpcm5hbWUsIlVwLmJpbiIpKSksCi1dCi0KLUNoZWNrQm94ID0gWwotXQotCi1Qcm9wZXJ0eSA9IFsKLSh1J0Jhbm5lckJpdG1hcCcsIHUnYmFubnJibXAnKSwKLSh1J0lBZ3JlZScsIHUnTm8nKSwKLSh1J1Byb2R1Y3RJRCcsIHUnbm9uZScpLAotKHUnQVJQSEVMUExJTksnLCB1J2h0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9tYW5hZ2VtZW50JyksCi0odSdCdXR0b25UZXh0X0JhY2snLCB1JzwgJkJhY2snKSwKLSh1J0J1dHRvblRleHRfQnJvd3NlJywgdSdCciZvd3NlJyksCi0odSdCdXR0b25UZXh0X0NhbmNlbCcsIHUnQ2FuY2VsJyksCi0odSdCdXR0b25UZXh0X0V4aXQnLCB1JyZFeGl0JyksCi0odSdCdXR0b25UZXh0X0ZpbmlzaCcsIHUnJkZpbmlzaCcpLAotKHUnQnV0dG9uVGV4dF9JZ25vcmUnLCB1JyZJZ25vcmUnKSwKLSh1J0J1dHRvblRleHRfSW5zdGFsbCcsIHUnJkluc3RhbGwnKSwKLSh1J0J1dHRvblRleHRfTmV4dCcsIHUnJk5leHQgPicpLAotKHUnQnV0dG9uVGV4dF9ObycsIHUnJk5vJyksCi0odSdCdXR0b25UZXh0X09LJywgdSdPSycpLAotKHUnQnV0dG9uVGV4dF9SZW1vdmUnLCB1JyZSZW1vdmUnKSwKLSh1J0J1dHRvblRleHRfUmVwYWlyJywgdScmUmVwYWlyJyksCi0odSdCdXR0b25UZXh0X1Jlc2V0JywgdScmUmVzZXQnKSwKLSh1J0J1dHRvblRleHRfUmVzdW1lJywgdScmUmVzdW1lJyksCi0odSdCdXR0b25UZXh0X1JldHJ5JywgdScmUmV0cnknKSwKLSh1J0J1dHRvblRleHRfUmV0dXJuJywgdScmUmV0dXJuJyksCi0odSdCdXR0b25UZXh0X1llcycsIHUnJlllcycpLAotKHUnQ29tcGxldGVTZXR1cEljb24nLCB1J2NvbXBsZXRpJyksCi0odSdDb21wb25lbnREb3dubG9hZCcsIHUnZnRwOi8vYW5vbnltb3VzQG1pY3Jvc29mdC5jb20vY29tcG9uZW50cy8nKSwKLSh1J0N1c3RvbVNldHVwSWNvbicsIHUnY3VzdGljb24nKSwKLSh1J0RlZmF1bHRVSUZvbnQnLCB1J0RsZ0ZvbnQ4JyksCi0odSdEaWFsb2dCaXRtYXAnLCB1J2RsZ2JtcCcpLAotKHUnRGxnVGl0bGVGb250JywgdSd7JkRsZ0ZvbnRCb2xkOH0nKSwKLSh1J0Vycm9yRGlhbG9nJywgdSdFcnJvckRsZycpLAotKHUnRXhjbGFtYXRpb25JY29uJywgdSdleGNsYW1pYycpLAotKHUnSW5mb0ljb24nLCB1J2luZm8nKSwKLSh1J0luc3RhbGxlckljb24nLCB1J2luc3RpY29uJyksCi0odSdJTlNUQUxMTEVWRUwnLCB1JzMnKSwKLSh1J0luc3RhbGxNb2RlJywgdSdUeXBpY2FsJyksCi0odSdQSURUZW1wbGF0ZScsIHUnMTIzNDU8IyMjLSUlJSUlJSU+QEBAQEAnKSwKLSModSdQcm9kdWN0TGFuZ3VhZ2UnLCB1JzEwMzMnKSwKLSh1J1Byb2dyZXNzMScsIHUnSW5zdGFsbGluZycpLAotKHUnUHJvZ3Jlc3MyJywgdSdpbnN0YWxscycpLAotKHUnUFJPTVBUUk9MTEJBQ0tDT1NUJywgdSdQJyksCi0odSdSZW1vdmVJY29uJywgdSdyZW1vdmljbycpLAotKHUnUmVwYWlySWNvbicsIHUncmVwYWlyaWMnKSwKLSh1J1NldHVwJywgdSdTZXR1cCcpLAotKHUnU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1JzEnKSwKLSh1J1dpemFyZCcsIHUnU2V0dXAgV2l6YXJkJyksCi1dCi0KLUNvbWJvQm94ID0gWwotXQotCi1Db250cm9sID0gWwotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGNyZWF0ZSBhIHNlcnZlciBpbWFnZSBvZiBbUHJvZHVjdE5hbWVdLCBhdCBhIHNwZWNpZmllZCBuZXR3b3JrIGxvY2F0aW9uLiAgQ2xpY2sgTmV4dCB0byBjb250aW51ZSBvciBDYW5jZWwgdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbldlbGNvbWVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9V2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCaXRtYXAnLCBOb25lKSwKLSh1J0V4aXREaWFsb2cnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J0NsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnRXhpdERpYWxvZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31Db21wbGV0aW5nIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnRmluaXNoJywgTm9uZSksCi0odSdFeGl0RGlhbG9nJywgdSdGaW5pc2gnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0ZpbmlzaF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQmFjaycsIE5vbmUpLAotKHUnRmF0YWxFcnJvcicsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVtQcm9kdWN0TmFtZV0gW1dpemFyZF0gZW5kZWQgcHJlbWF0dXJlbHknLCBOb25lLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdGaW5pc2gnLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0ZpbmlzaCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfRmluaXNoXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdEZXNjcmlwdGlvbjEnLCB1J1RleHQnLCAxMzUsIDcwLCAyMjAsIDQwLCAxOTY2MTEsIE5vbmUsIHUnW1Byb2R1Y3ROYW1lXSBzZXR1cCBlbmRlZCBwcmVtYXR1cmVseSBiZWNhdXNlIG9mIGFuIGVycm9yLiAgWW91ciBzeXN0ZW0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkLiAgVG8gaW5zdGFsbCB0aGlzIHByb2dyYW0gYXQgYSBsYXRlciB0aW1lLCBwbGVhc2UgcnVuIHRoZSBpbnN0YWxsYXRpb24gYWdhaW4uJywgTm9uZSwgTm9uZSksCi0odSdGYXRhbEVycm9yJywgdSdEZXNjcmlwdGlvbjInLCB1J1RleHQnLCAxMzUsIDExNSwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J0NsaWNrIHRoZSBGaW5pc2ggYnV0dG9uIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzAsIDIzNCwgMSwgTm9uZSwgdSdbRGlhbG9nQml0bWFwXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCaXRtYXAnLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSB3YWl0IHdoaWxlIHRoZSBbV2l6YXJkXSBwcmVwYXJlcyB0byBndWlkZSB5b3UgdGhyb3VnaCB0aGUgaW5zdGFsbGF0aW9uLicsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31XZWxjb21lIHRvIHRoZSBbUHJvZHVjdE5hbWVdIFtXaXphcmRdJywgTm9uZSwgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIE5vbmUsIE5vbmUpLAotKHUnUHJlcGFyZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0FjdGlvbkRhdGEnLCB1J1RleHQnLCAxMzUsIDEyNSwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ByZXBhcmVEbGcnLCB1J0FjdGlvblRleHQnLCB1J1RleHQnLCAxMzUsIDEwMCwgMjIwLCAyMCwgMTk2NjExLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMzUsIDY1LCAzMDAsIDIwLCAzLCBOb25lLCB1J1BsZWFzZSB3YWl0IHdoaWxlIHRoZSBbV2l6YXJkXSBbUHJvZ3Jlc3MyXSBbUHJvZHVjdE5hbWVdLiAgVGhpcyBtYXkgdGFrZSBzZXZlcmFsIG1pbnV0ZXMuJywgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDIwLCAxNSwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdW1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXScsIE5vbmUsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J0FjdGlvblRleHQnLCB1J1RleHQnLCA3MCwgMTAwLCAyNjUsIDEwLCAzLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdQcm9ncmVzc0JhcicsIHUnUHJvZ3Jlc3NCYXInLCAzNSwgMTE1LCAzMDAsIDEwLCA2NTUzNywgTm9uZSwgdSdQcm9ncmVzcyBkb25lJywgTm9uZSwgTm9uZSksCi0odSdQcm9ncmVzc0RsZycsIHUnU3RhdHVzTGFiZWwnLCB1J1RleHQnLCAzNSwgMTAwLCAzNSwgMTAsIDMsIE5vbmUsIHUnU3RhdHVzOicsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdVc2VyRXhpdCcsIHUnVGl0bGUnLCB1J1RleHQnLCAxMzUsIDIwLCAyMjAsIDYwLCAxOTY2MTEsIE5vbmUsIHUne1xcVmVyZGFuYUJvbGQxM31bUHJvZHVjdE5hbWVdIFtXaXphcmRdIHdhcyBpbnRlcnJ1cHRlZCcsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdGaW5pc2gnLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdGaW5pc2gnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0ZpbmlzaF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0Rlc2NyaXB0aW9uMScsIHUnVGV4dCcsIDEzNSwgNzAsIDIyMCwgNDAsIDE5NjYxMSwgTm9uZSwgdSdbUHJvZHVjdE5hbWVdIHNldHVwIHdhcyBpbnRlcnJ1cHRlZC4gIFlvdXIgc3lzdGVtIGhhcyBub3QgYmVlbiBtb2RpZmllZC4gIFRvIGluc3RhbGwgdGhpcyBwcm9ncmFtIGF0IGEgbGF0ZXIgdGltZSwgcGxlYXNlIHJ1biB0aGUgaW5zdGFsbGF0aW9uIGFnYWluLicsIE5vbmUsIE5vbmUpLAotKHUnVXNlckV4aXQnLCB1J0Rlc2NyaXB0aW9uMicsIHUnVGV4dCcsIDEzNSwgMTE1LCAyMjAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnQ2xpY2sgdGhlIEZpbmlzaCBidXR0b24gdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnVXAnLCB1J1B1c2hCdXR0b24nLCAyOTgsIDU1LCAxOSwgMTksIDM2NzAwMTksIE5vbmUsIHUnVXAnLCB1J05ld0ZvbGRlcicsIHUnVXAgT25lIExldmVsfCcpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnUGF0aEVkaXQnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdQYXRoRWRpdCcsIHUnUGF0aEVkaXQnLCA4NCwgMjAyLCAyNjEsIDE3LCAzLCB1J1RBUkdFVERJUicsIE5vbmUsIHUnT0snLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAyNDAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0NvbWJvTGFiZWwnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdDb21ib0xhYmVsJywgdSdUZXh0JywgMjUsIDU4LCA0NCwgMTAsIDMsIE5vbmUsIHUnJkxvb2sgaW46JywgdSdEaXJlY3RvcnlDb21ibycsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J0RpcmVjdG9yeUNvbWJvJywgdSdEaXJlY3RvcnlDb21ibycsIDcwLCA1NSwgMjIwLCA4MCwgNDU4NzU1LCB1J1RBUkdFVERJUicsIE5vbmUsIHUnVXAnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J0Jyb3dzZSB0byB0aGUgZGVzdGluYXRpb24gZm9sZGVyJywgTm9uZSwgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnRGlyZWN0b3J5TGlzdCcsIDI1LCA4MywgMzIwLCAxMTAsIDcsIHUnVEFSR0VURElSJywgTm9uZSwgdSdQYXRoTGFiZWwnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdQYXRoTGFiZWwnLCB1J1RleHQnLCAyNSwgMjA1LCA1OSwgMTAsIDMsIE5vbmUsIHUnJkZvbGRlciBuYW1lOicsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnTmV3Rm9sZGVyJywgdSdQdXNoQnV0dG9uJywgMzI1LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J05ldycsIHUnRGlyZWN0b3J5TGlzdCcsIHUnQ3JlYXRlIEEgTmV3IEZvbGRlcnwnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1DaGFuZ2UgY3VycmVudCBkZXN0aW5hdGlvbiBmb2xkZXInLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDgwLCAzMjAsIDEwLCAzLCBOb25lLCB1JyZFbnRlciBhIG5ldyBuZXR3b3JrIGxvY2F0aW9uIG9yIGNsaWNrIEJyb3dzZSB0byBicm93c2UgdG8gb25lLicsIHUnUGF0aEVkaXQnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1RleHQnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdQYXRoRWRpdCcsIHUnUGF0aEVkaXQnLCAyNSwgOTMsIDMyMCwgMTgsIDMsIHUnVEFSR0VURElSJywgTm9uZSwgdSdCcm93c2UnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIwLCAyODAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnUGxlYXNlIHNwZWNpZnkgYSBuZXR3b3JrIGxvY2F0aW9uIGZvciB0aGUgc2VydmVyIGltYWdlIG9mIFtQcm9kdWN0TmFtZV0gcHJvZHVjdCcsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XU5ldHdvcmsgTG9jYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCcm93c2UnLCB1J1B1c2hCdXR0b24nLCAyODksIDExOSwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0Jyb3dzZV0nLCB1J0JhY2snLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1BsZWFzZSBlbnRlciB5b3VyIGNvbXBhbnkgaW5mb3JtYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1Db21wYW55IEluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDY1NTM5LCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgdSdUZXh0JywgNDUsIDcxLCAyODUsIDMwLCAzLCBOb25lLCB1JyZQbGVhc2UgZW50ZXIgdGhlIG5hbWUgb2YgeW91ciBvcmdhbml6YXRpb24gaW4gdGhlIGJveCBiZWxvdy4gIFRoaXMgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgY29tcGFueSBuYW1lIGZvciBzdWJzZXF1ZW50IGluc3RhbGxhdGlvbnMgb2YgW1Byb2R1Y3ROYW1lXTonLCB1J09yZ2FuaXphdGlvbkVkaXQnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdDREtleUVkaXQnLCB1J01hc2tlZEVkaXQnLCA0NSwgMTQzLCAyNTAsIDE2LCAzLCB1J1BJREtFWScsIHUnW1BJRFRlbXBsYXRlXScsIHUnQmFjaycsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J0NES2V5TGFiZWwnLCB1J1RleHQnLCA0NSwgMTMwLCA1MCwgMTAsIDMsIE5vbmUsIHUnQ0QgJktleTonLCB1J0NES2V5RWRpdCcsIE5vbmUpLAotKHUnQWRtaW5SZWdpc3RyYXRpb25EbGcnLCB1J09yZ2FuaXphdGlvbkVkaXQnLCB1J0VkaXQnLCA0NSwgMTA1LCAyMjAsIDE4LCAzLCB1J0NPTVBBTllOQU1FJywgdSd7ODB9JywgdSdDREtleUxhYmVsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J1VwJywgdSdQdXNoQnV0dG9uJywgMjk4LCA1NSwgMTksIDE5LCAzNjcwMDE5LCBOb25lLCB1J1VwJywgdSdOZXdGb2xkZXInLCB1J1VwIE9uZSBMZXZlbHwnKSwKLSh1J0Jyb3dzZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdQYXRoRWRpdCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdQYXRoRWRpdCcsIHUnUGF0aEVkaXQnLCA4NCwgMjAyLCAyNjEsIDE4LCAxMSwgdSdfQnJvd3NlUHJvcGVydHknLCBOb25lLCB1J09LJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMjQwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdDb21ib0xhYmVsJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0NvbWJvTGFiZWwnLCB1J1RleHQnLCAyNSwgNTgsIDQ0LCAxMCwgMywgTm9uZSwgdScmTG9vayBpbjonLCB1J0RpcmVjdG9yeUNvbWJvJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0RpcmVjdG9yeUNvbWJvJywgdSdEaXJlY3RvcnlDb21ibycsIDcwLCA1NSwgMjIwLCA4MCwgMzkzMjI3LCB1J19Ccm93c2VQcm9wZXJ0eScsIE5vbmUsIHUnVXAnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdCcm93c2UgdG8gdGhlIGRlc3RpbmF0aW9uIGZvbGRlcicsIE5vbmUsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlMaXN0JywgdSdEaXJlY3RvcnlMaXN0JywgMjUsIDgzLCAzMjAsIDExMCwgMTUsIHUnX0Jyb3dzZVByb3BlcnR5JywgTm9uZSwgdSdQYXRoTGFiZWwnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnUGF0aExhYmVsJywgdSdUZXh0JywgMjUsIDIwNSwgNTksIDEwLCAzLCBOb25lLCB1JyZGb2xkZXIgbmFtZTonLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQnJvd3NlRGxnJywgdSdOZXdGb2xkZXInLCB1J1B1c2hCdXR0b24nLCAzMjUsIDU1LCAxOSwgMTksIDM2NzAwMTksIE5vbmUsIHUnTmV3JywgdSdEaXJlY3RvcnlMaXN0JywgdSdDcmVhdGUgQSBOZXcgRm9sZGVyfCcpLAotKHUnQnJvd3NlRGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ2hhbmdlIGN1cnJlbnQgZGVzdGluYXRpb24gZm9sZGVyJywgTm9uZSwgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J1RleHQnLCB1J1RleHQnLCA0OCwgMTUsIDE5NCwgMzAsIDMsIE5vbmUsIHUnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbCBbUHJvZHVjdE5hbWVdIGluc3RhbGxhdGlvbj8nLCBOb25lLCBOb25lKSwKLSh1J0NhbmNlbERsZycsIHUnSWNvbicsIHUnSWNvbicsIDE1LCAxNSwgMjQsIDI0LCA1MjQyODgxLCBOb25lLCB1J1tJbmZvSWNvbl0nLCBOb25lLCB1J0luZm9ybWF0aW9uIGljb258JyksCi0odSdDYW5jZWxEbGcnLCB1J05vJywgdSdQdXNoQnV0dG9uJywgMTMyLCA1NywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05vXScsIHUnWWVzJywgTm9uZSksCi0odSdDYW5jZWxEbGcnLCB1J1llcycsIHUnUHVzaEJ1dHRvbicsIDcyLCA1NywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1llc10nLCB1J05vJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyNSwgNTUsIDMyMCwgMjAsIDMsIE5vbmUsIHUnQ2xpY2sgb24gdGhlIGljb25zIGluIHRoZSB0cmVlIGJlbG93IHRvIGNoYW5nZSB0aGUgd2F5IGZlYXR1cmVzIHdpbGwgYmUgaW5zdGFsbGVkLicsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1RyZWUnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1NlbGVjdCB0aGUgd2F5IHlvdSB3YW50IGZlYXR1cmVzIHRvIGJlIGluc3RhbGxlZC4nLCBOb25lLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQ3VzdG9tIFNldHVwJywgTm9uZSwgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQnJvd3NlJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyMDAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ccm93c2VdJywgdSdSZXNldCcsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdUcmVlJywgdSdTZWxlY3Rpb25UcmVlJywgMjUsIDg1LCAxNzUsIDk1LCA3LCB1J19Ccm93c2VQcm9wZXJ0eScsIHUnVHJlZSBvZiBzZWxlY3Rpb25zJywgdSdCcm93c2UnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQm94JywgdSdHcm91cEJveCcsIDIxMCwgODEsIDE0MCwgOTgsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdSZXNldCcsIHUnUHVzaEJ1dHRvbicsIDQyLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXNldF0nLCB1J0Rpc2tDb3N0JywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0Rpc2tDb3N0JywgdSdQdXNoQnV0dG9uJywgMTExLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdEaXNrICZVc2FnZScsIHUnQmFjaycsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdJdGVtRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyMTUsIDkwLCAxMzEsIDMwLCAzLCBOb25lLCB1J011bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uJywgTm9uZSwgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0l0ZW1TaXplJywgdSdUZXh0JywgMjE1LCAxMzAsIDEzMSwgNDUsIDMsIE5vbmUsIHUnVGhlIHNpemUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLicsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnVGV4dCcsIDc1LCAyMDAsIDIxNSwgMjAsIDMsIE5vbmUsIHUiPFRoZSBzZWxlY3Rpb24ncyBwYXRoPiIsIE5vbmUsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbkxhYmVsJywgdSdUZXh0JywgMjUsIDIwMCwgNTAsIDEwLCAzLCBOb25lLCB1J0xvY2F0aW9uOicsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyMCwgNTMsIDMzMCwgNDAsIDMsIE5vbmUsIHUnVGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMgKGlmIGFueSkgZG8gbm90IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2UgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmVzLiAgWW91IGNhbiBlaXRoZXIgcmVtb3ZlIHNvbWUgZmlsZXMgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcywgb3IgY2hvb3NlIHRvIGluc3RhbGwgbGVzcyBmZWF0dXJlcyBvbnRvIGxvY2FsIGRyaXZlKHMpLCBvciBzZWxlY3QgZGlmZmVyZW50IGRlc3RpbmF0aW9uIGRyaXZlKHMpLicsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnT0snLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdEaXNrQ29zdERsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1RoZSBkaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBmZWF0dXJlcy4nLCBOb25lLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J0Rpc2tDb3N0RGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cycsIE5vbmUsIE5vbmUpLAotKHUnRGlza0Nvc3REbGcnLCB1J1ZvbHVtZUxpc3QnLCB1J1ZvbHVtZUNvc3RMaXN0JywgMjAsIDEwMCwgMzMwLCAxMjAsIDM5MzIyMywgTm9uZSwgdSd7MTIwfXs3MH17NzB9ezcwfXs3MH0nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdZJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1llc10nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdBJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdDJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdFcnJvckljb24nLCB1J0ljb24nLCAxNSwgMTUsIDI0LCAyNCwgNTI0Mjg4MSwgTm9uZSwgdSdbSW5mb0ljb25dJywgTm9uZSwgdSdJbmZvcm1hdGlvbiBpY29ufCcpLAotKHUnRXJyb3JEbGcnLCB1J0Vycm9yVGV4dCcsIHUnVGV4dCcsIDQ4LCAxNSwgMjA1LCA2MCwgMywgTm9uZSwgdSdJbmZvcm1hdGlvbiB0ZXh0JywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnSScsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9JZ25vcmVdJywgTm9uZSwgTm9uZSksCi0odSdFcnJvckRsZycsIHUnTicsIHUnUHVzaEJ1dHRvbicsIDEwMCwgODAsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ob10nLCBOb25lLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdPJywgdSdQdXNoQnV0dG9uJywgMTAwLCA4MCwgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X09LXScsIE5vbmUsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J1InLCB1J1B1c2hCdXR0b24nLCAxMDAsIDgwLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfUmV0cnldJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDU1LCAzMzAsIDMwLCAzLCBOb25lLCB1J1RoZSBmb2xsb3dpbmcgYXBwbGljYXRpb25zIGFyZSB1c2luZyBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCBieSB0aGlzIHNldHVwLiBDbG9zZSB0aGVzZSBhcHBsaWNhdGlvbnMgYW5kIHRoZW4gY2xpY2sgUmV0cnkgdG8gY29udGludWUgdGhlIGluc3RhbGxhdGlvbiBvciBDYW5jZWwgdG8gZXhpdCBpdC4nLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnUmV0cnknLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMywgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J1NvbWUgZmlsZXMgdGhhdCBuZWVkIHRvIGJlIHVwZGF0ZWQgYXJlIGN1cnJlbnRseSBpbiB1c2UuJywgTm9uZSwgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1GaWxlcyBpbiBVc2UnLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J1JldHJ5JywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXRyeV0nLCB1J0lnbm9yZScsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnRXhpdCcsIHUnUHVzaEJ1dHRvbicsIDE2NiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfRXhpdF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnSWdub3JlJywgdSdQdXNoQnV0dG9uJywgMjM1LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9JZ25vcmVdJywgdSdFeGl0JywgTm9uZSksCi0odSdGaWxlc0luVXNlJywgdSdMaXN0JywgdSdMaXN0Qm94JywgMjAsIDg3LCAzMzAsIDEzMCwgNywgdSdGaWxlSW5Vc2VQcm9jZXNzJywgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J0FncmVlbWVudFRleHQnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdQbGVhc2UgcmVhZCB0aGUgZm9sbG93aW5nIGxpY2Vuc2UgYWdyZWVtZW50IGNhcmVmdWxseScsIE5vbmUsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdRW5kLVVzZXIgTGljZW5zZSBBZ3JlZW1lbnQnLCBOb25lLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdBZ3JlZW1lbnRUZXh0JywgdSdTY3JvbGxhYmxlVGV4dCcsIDIwLCA2MCwgMzMwLCAxMjAsIDcsIE5vbmUsIHUne1xccnRmMVxcYW5zaVxcYW5zaWNwZzEyNTJcXGRlZmYwXFxkZWZ0YWI3MjB7XFxmb250dGJse1xcZjBcXGZyb21hblxcZnBycTIgVGltZXMgTmV3IFJvbWFuO319e1xcY29sb3J0YmxcXHJlZDBcXGdyZWVuMFxcYmx1ZTA7fSBcXGRlZmxhbmcxMDMzXFxob3J6ZG9je1xcKlxcZmNoYXJzIH17XFwqXFxsY2hhcnMgfVxccGFyZFxccGxhaW5cXGYwXFxmczIwIDxZb3VyIGxpY2Vuc2UgYWdyZWVtZW50IHNob3VsZCBnbyBoZXJlLj5cXHBhciB9JywgdSdCdXR0b25zJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCdXR0b25zJywgdSdSYWRpb0J1dHRvbkdyb3VwJywgMjAsIDE4NywgMzMwLCA0MCwgMywgdSdJQWdyZWUnLCBOb25lLCB1J0JhY2snLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdDaGFuZ2VMYWJlbCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnU2VsZWN0IHRoZSBvcGVyYXRpb24geW91IHdpc2ggdG8gcGVyZm9ybS4nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjQwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdTW9kaWZ5LCBSZXBhaXIgb3IgUmVtb3ZlIGluc3RhbGxhdGlvbicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdOZXh0JywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMSwgTm9uZSwgdSdbQnV0dG9uVGV4dF9OZXh0XScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUxhYmVsJywgdSdUZXh0JywgMTA1LCA2NSwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XSZNb2RpZnknLCB1J0NoYW5nZUJ1dHRvbicsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgNjUsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbQ3VzdG9tU2V0dXBJY29uXScsIHUnUmVwYWlyTGFiZWwnLCB1J01vZGlmeSBJbnN0YWxsYXRpb258JyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckxhYmVsJywgdSdUZXh0JywgMTA1LCAxMTQsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1SZSZwYWlyJywgdSdSZXBhaXJCdXR0b24nLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnQ2hhbmdlVGV4dCcsIHUnVGV4dCcsIDEwNSwgNzgsIDIzMCwgMjAsIDMsIE5vbmUsIHUnQWxsb3dzIHVzZXJzIHRvIGNoYW5nZSB0aGUgd2F5IGZlYXR1cmVzIGFyZSBpbnN0YWxsZWQuJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZUJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxNjMsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbUmVtb3ZlSWNvbl0nLCB1J0JhY2snLCB1J1JlbW92ZSBJbnN0YWxsYXRpb258JyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlbW92ZUxhYmVsJywgdSdUZXh0JywgMTA1LCAxNjMsIDEwMCwgMTAsIDMsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF0mUmVtb3ZlJywgdSdSZW1vdmVCdXR0b24nLCBOb25lKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlVGV4dCcsIHUnVGV4dCcsIDEwNSwgMTc2LCAyMzAsIDIwLCAzLCBOb25lLCB1J1JlbW92ZXMgW1Byb2R1Y3ROYW1lXSBmcm9tIHlvdXIgY29tcHV0ZXIuJywgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxMTQsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbUmVwYWlySWNvbl0nLCB1J1JlbW92ZUxhYmVsJywgdSdSZXBhaXIgSW5zdGFsbGF0aW9ufCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZXBhaXJUZXh0JywgdSdUZXh0JywgMTA1LCAxMjcsIDIzMCwgMzAsIDMsIE5vbmUsIHUnUmVwYWlycyBlcnJvcnMgaW4gdGhlIG1vc3QgcmVjZW50IGluc3RhbGxhdGlvbiBzdGF0ZSAtIGZpeGVzIG1pc3Npbmcgb3IgY29ycnVwdCBmaWxlcywgc2hvcnRjdXRzIGFuZCByZWdpc3RyeSBlbnRyaWVzLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGFsbG93IHlvdSB0byBjaGFuZ2UgdGhlIHdheSBbUHJvZHVjdE5hbWVdIGZlYXR1cmVzIGFyZSBpbnN0YWxsZWQgb24geW91ciBjb21wdXRlciBvciBldmVuIHRvIHJlbW92ZSBbUHJvZHVjdE5hbWVdIGZyb20geW91ciBjb21wdXRlci4gIENsaWNrIE5leHQgdG8gY29udGludWUgb3IgQ2FuY2VsIHRvIGV4aXQgdGhlIFtXaXphcmRdLicsIE5vbmUsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDEzNSwgMjAsIDIyMCwgNjAsIDE5NjYxMSwgTm9uZSwgdSd7XFxWZXJkYW5hQm9sZDEzfVdlbGNvbWUgdG8gdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjAsIDUzLCAzMzAsIDQwLCAzLCBOb25lLCB1J1RoZSBoaWdobGlnaHRlZCB2b2x1bWVzIGRvIG5vdCBoYXZlIGVub3VnaCBkaXNrIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBmZWF0dXJlcy4gIFlvdSBjYW4gZWl0aGVyIHJlbW92ZSBzb21lIGZpbGVzIGZyb20gdGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMsIG9yIGNob29zZSB0byBpbnN0YWxsIGxlc3MgZmVhdHVyZXMgb250byBsb2NhbCBkcml2ZShzKSwgb3Igc2VsZWN0IGRpZmZlcmVudCBkZXN0aW5hdGlvbiBkcml2ZShzKS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdPSycsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZkRpc2tEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjAsIDIwLCAyODAsIDIwLCAxOTY2MTEsIE5vbmUsIHUnRGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBleGNlZWRzIGF2YWlsYWJsZSBkaXNrIHNwYWNlLicsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZEaXNrRGxnJywgdSdPSycsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfT0tdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdT3V0IG9mIERpc2sgU3BhY2UnLCBOb25lLCBOb25lKSwKLSh1J091dE9mRGlza0RsZycsIHUnVm9sdW1lTGlzdCcsIHUnVm9sdW1lQ29zdExpc3QnLCAyMCwgMTAwLCAzMzAsIDEyMCwgMzkzMjIzLCBOb25lLCB1J3sxMjB9ezcwfXs3MH17NzB9ezcwfScsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyMCwgNTMsIDMzMCwgNDAsIDMsIE5vbmUsIHUnVGhlIGhpZ2hsaWdodGVkIHZvbHVtZXMgZG8gbm90IGhhdmUgZW5vdWdoIGRpc2sgc3BhY2UgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZlYXR1cmVzLiAgWW91IGNhbiBlaXRoZXIgcmVtb3ZlIHNvbWUgZmlsZXMgZnJvbSB0aGUgaGlnaGxpZ2h0ZWQgdm9sdW1lcywgb3IgY2hvb3NlIHRvIGluc3RhbGwgbGVzcyBmZWF0dXJlcyBvbnRvIGxvY2FsIGRyaXZlKHMpLCBvciBzZWxlY3QgZGlmZmVyZW50IGRlc3RpbmF0aW9uIGRyaXZlKHMpLicsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnTm8nLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDIwLCAyMCwgMjgwLCAyMCwgMTk2NjExLCBOb25lLCB1J0Rpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gZXhjZWVkcyBhdmFpbGFibGUgZGlzayBzcGFjZS4nLCBOb25lLCBOb25lKSwKLSh1J091dE9mUmJEaXNrRGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1PdXQgb2YgRGlzayBTcGFjZScsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J05vJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9Ob10nLCB1J1llcycsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1llcycsIHUnUHVzaEJ1dHRvbicsIDI0MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfWWVzXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnVm9sdW1lTGlzdCcsIHUnVm9sdW1lQ29zdExpc3QnLCAyMCwgMTQwLCAzMzAsIDgwLCA0NTg3NTI3LCBOb25lLCB1J3sxMjB9ezcwfXs3MH17NzB9ezcwfScsIE5vbmUsIE5vbmUpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1RleHQyJywgdSdUZXh0JywgMjAsIDk0LCAzMzAsIDQwLCAzLCBOb25lLCB1IkFsdGVybmF0aXZlbHksIHlvdSBtYXkgY2hvb3NlIHRvIGRpc2FibGUgdGhlIGluc3RhbGxlcidzIHJvbGxiYWNrIGZ1bmN0aW9uYWxpdHkuICBUaGlzIGFsbG93cyB0aGUgaW5zdGFsbGVyIHRvIHJlc3RvcmUgeW91ciBjb21wdXRlcidzIG9yaWdpbmFsIHN0YXRlIHNob3VsZCB0aGUgaW5zdGFsbGF0aW9uIGJlIGludGVycnVwdGVkIGluIGFueSB3YXkuICBDbGljayBZZXMgaWYgeW91IHdpc2ggdG8gdGFrZSB0aGUgcmlzayB0byBkaXNhYmxlIHJvbGxiYWNrLiIsIE5vbmUsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3MCwgMjM0LCAxLCBOb25lLCB1J1tEaWFsb2dCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQml0bWFwJywgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMTM1LCA3MCwgMjIwLCAzMCwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSB3aWxsIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgW1Byb2R1Y3ROYW1lXSBvbiB5b3VyIGNvbXB1dGVyLiAgQ2xpY2sgSW5zdGFsbCB0byBjb250aW51ZSBvciBDYW5jZWwgdG8gZXhpdCB0aGUgW1dpemFyZF0uJywgTm9uZSwgTm9uZSksCi0odSdSZXN1bWVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9UmVzdW1pbmcgdGhlIFtQcm9kdWN0TmFtZV0gW1dpemFyZF0nLCBOb25lLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J0luc3RhbGwnLCBOb25lKSwKLSh1J1Jlc3VtZURsZycsIHUnSW5zdGFsbCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfSW5zdGFsbF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J1R5cGljYWxMYWJlbCcsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnUHVzaEJ1dHRvbicsIDMwNCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQ2FuY2VsXScsIHUnQmFubmVyQml0bWFwJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnQ2hvb3NlIHRoZSBzZXR1cCB0eXBlIHRoYXQgYmVzdCBzdWl0cyB5b3VyIG5lZWRzJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUNob29zZSBTZXR1cCBUeXBlJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdOZXh0JywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAxLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbExhYmVsJywgdSdUZXh0JywgMTA1LCA2NSwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XSZUeXBpY2FsJywgdSdUeXBpY2FsQnV0dG9uJywgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdQdXNoQnV0dG9uJywgNTAsIDE3MSwgMzgsIDM4LCA1NzY3MTcxLCBOb25lLCB1J1tDb21wbGV0ZVNldHVwSWNvbl0nLCB1J0JhY2snLCB1J0NvbXBsZXRlIEluc3RhbGxhdGlvbnwnKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVMYWJlbCcsIHUnVGV4dCcsIDEwNSwgMTcxLCAxMDAsIDEwLCAzLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdQyZvbXBsZXRlJywgdSdDb21wbGV0ZUJ1dHRvbicsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDb21wbGV0ZVRleHQnLCB1J1RleHQnLCAxMDUsIDE4NCwgMjMwLCAyMCwgMywgTm9uZSwgdSdBbGwgcHJvZ3JhbSBmZWF0dXJlcyB3aWxsIGJlIGluc3RhbGxlZC4gIChSZXF1aXJlcyBtb3N0IGRpc2sgc3BhY2UpJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0N1c3RvbUJ1dHRvbicsIHUnUHVzaEJ1dHRvbicsIDUwLCAxMTgsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbQ3VzdG9tU2V0dXBJY29uXScsIHUnQ29tcGxldGVMYWJlbCcsIHUnQ3VzdG9tIEluc3RhbGxhdGlvbnwnKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tTGFiZWwnLCB1J1RleHQnLCAxMDUsIDExOCwgMTAwLCAxMCwgMywgTm9uZSwgdSdbRGxnVGl0bGVGb250XUMmdXN0b20nLCB1J0N1c3RvbUJ1dHRvbicsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDdXN0b21UZXh0JywgdSdUZXh0JywgMTA1LCAxMzEsIDIzMCwgMzAsIDMsIE5vbmUsIHUnQWxsb3dzIHVzZXJzIHRvIGNob29zZSB3aGljaCBwcm9ncmFtIGZlYXR1cmVzIHdpbGwgYmUgaW5zdGFsbGVkIGFuZCB3aGVyZSB0aGV5IHdpbGwgYmUgaW5zdGFsbGVkLiBSZWNvbW1lbmRlZCBmb3IgYWR2YW5jZWQgdXNlcnMuJywgTm9uZSwgTm9uZSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxCdXR0b24nLCB1J1B1c2hCdXR0b24nLCA1MCwgNjUsIDM4LCAzOCwgNTc2NzE3MSwgTm9uZSwgdSdbSW5zdGFsbGVySWNvbl0nLCB1J0N1c3RvbUxhYmVsJywgdSdUeXBpY2FsIEluc3RhbGxhdGlvbnwnKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbFRleHQnLCB1J1RleHQnLCAxMDUsIDc4LCAyMzAsIDIwLCAzLCBOb25lLCB1J0luc3RhbGxzIHRoZSBtb3N0IGNvbW1vbiBwcm9ncmFtIGZlYXR1cmVzLiBSZWNvbW1lbmRlZCBmb3IgbW9zdCB1c2Vycy4nLCBOb25lLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0Jhbm5lckJpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzc0LCA0NCwgMSwgTm9uZSwgdSdbQmFubmVyQml0bWFwXScsIHUnTmFtZUxhYmVsJywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYW5uZXJMaW5lJywgdSdMaW5lJywgMCwgNDQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0Rlc2NyaXB0aW9uJywgdSdUZXh0JywgMjUsIDIzLCAyODAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnUGxlYXNlIGVudGVyIHlvdXIgY3VzdG9tZXIgaW5mb3JtYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XUN1c3RvbWVyIEluZm9ybWF0aW9uJywgTm9uZSwgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdCYWNrJywgdSdQdXNoQnV0dG9uJywgMTgwLCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9CYWNrXScsIHUnTmV4dCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnUHVzaEJ1dHRvbicsIDIzNiwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfTmV4dF0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnT3JnYW5pemF0aW9uTGFiZWwnLCB1J1RleHQnLCA0NSwgMTEwLCAxMDAsIDE1LCAzLCBOb25lLCB1JyZPcmdhbml6YXRpb246JywgdSdPcmdhbml6YXRpb25FZGl0JywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdDREtleUVkaXQnLCB1J01hc2tlZEVkaXQnLCA0NSwgMTU5LCAyNTAsIDE2LCAzLCB1J1BJREtFWScsIHUnW1BJRFRlbXBsYXRlXScsIHUnQmFjaycsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnQ0RLZXlMYWJlbCcsIHUnVGV4dCcsIDQ1LCAxNDcsIDUwLCAxMCwgMywgTm9uZSwgdSdDRCAmS2V5OicsIHUnQ0RLZXlFZGl0JywgTm9uZSksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdPcmdhbml6YXRpb25FZGl0JywgdSdFZGl0JywgNDUsIDEyMiwgMjIwLCAxOCwgMywgdSdDT01QQU5ZTkFNRScsIHUnezgwfScsIHUnQ0RLZXlMYWJlbCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmFtZUxhYmVsJywgdSdUZXh0JywgNDUsIDczLCAxMDAsIDE1LCAzLCBOb25lLCB1JyZVc2VyIE5hbWU6JywgdSdOYW1lRWRpdCcsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmFtZUVkaXQnLCB1J0VkaXQnLCA0NSwgODUsIDIyMCwgMTgsIDMsIHUnVVNFUk5BTUUnLCB1J3s4MH0nLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnVGV4dCcsIHUnVGV4dCcsIDI1LCA3MCwgMzIwLCAyMCwgMywgTm9uZSwgdSdDbGljayBJbnN0YWxsIHRvIGJlZ2luIHRoZSBpbnN0YWxsYXRpb24uICBJZiB5b3Ugd2FudCB0byByZXZpZXcgb3IgY2hhbmdlIGFueSBvZiB5b3VyIGluc3RhbGxhdGlvbiBzZXR0aW5ncywgY2xpY2sgQmFjay4gIENsaWNrIENhbmNlbCB0byBleGl0IHRoZSB3aXphcmQuJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSBpcyByZWFkeSB0byBiZWdpbiB0aGUgW0luc3RhbGxNb2RlXSBpbnN0YWxsYXRpb24nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdUaXRsZScsIHUnVGV4dCcsIDE1LCA2LCAyMDAsIDE1LCAxOTY2MTEsIE5vbmUsIHUnW0RsZ1RpdGxlRm9udF1SZWFkeSB0byBJbnN0YWxsJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J0luc3RhbGwnLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9JbnN0YWxsXScsIHUnQ2FuY2VsJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1RleHQnLCB1J1RleHQnLCAyNSwgNzAsIDMyMCwgMzAsIDMsIE5vbmUsIHUnQ2xpY2sgUmVtb3ZlIHRvIHJlbW92ZSBbUHJvZHVjdE5hbWVdIGZyb20geW91ciBjb21wdXRlci4gIElmIHlvdSB3YW50IHRvIHJldmlldyBvciBjaGFuZ2UgYW55IG9mIHlvdXIgaW5zdGFsbGF0aW9uIHNldHRpbmdzLCBjbGljayBCYWNrLiAgQ2xpY2sgQ2FuY2VsIHRvIGV4aXQgdGhlIHdpemFyZC4nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQmFubmVyQml0bWFwJywgdSdCaXRtYXAnLCAwLCAwLCAzNzQsIDQ0LCAxLCBOb25lLCB1J1tCYW5uZXJCaXRtYXBdJywgdSdCYWNrJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0Jhbm5lckxpbmUnLCB1J0xpbmUnLCAwLCA0NCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQm90dG9tTGluZScsIHUnTGluZScsIDAsIDIzNCwgMzc0LCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQ2FuY2VsJywgdSdQdXNoQnV0dG9uJywgMzA0LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9DYW5jZWxdJywgdSdCYW5uZXJCaXRtYXAnLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAyNSwgMjMsIDI4MCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdZb3UgaGF2ZSBjaG9zZW4gdG8gcmVtb3ZlIHRoZSBwcm9ncmFtIGZyb20geW91ciBjb21wdXRlci4nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnVGl0bGUnLCB1J1RleHQnLCAxNSwgNiwgMjAwLCAxNSwgMTk2NjExLCBOb25lLCB1J1tEbGdUaXRsZUZvbnRdUmVtb3ZlIFtQcm9kdWN0TmFtZV0nLCBOb25lLCBOb25lKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDMsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J1JlbW92ZScsIE5vbmUpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1JlbW92ZV0nLCB1J0NhbmNlbCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdUZXh0JywgdSdUZXh0JywgMjUsIDcwLCAzMjAsIDMwLCAzLCBOb25lLCB1J0NsaWNrIFJlcGFpciB0byByZXBhaXIgdGhlIGluc3RhbGxhdGlvbiBvZiBbUHJvZHVjdE5hbWVdLiAgSWYgeW91IHdhbnQgdG8gcmV2aWV3IG9yIGNoYW5nZSBhbnkgb2YgeW91ciBpbnN0YWxsYXRpb24gc2V0dGluZ3MsIGNsaWNrIEJhY2suICBDbGljayBDYW5jZWwgdG8gZXhpdCB0aGUgd2l6YXJkLicsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCYW5uZXJCaXRtYXAnLCB1J0JpdG1hcCcsIDAsIDAsIDM3NCwgNDQsIDEsIE5vbmUsIHUnW0Jhbm5lckJpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnQmFubmVyTGluZScsIHUnTGluZScsIDAsIDQ0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCb3R0b21MaW5lJywgdSdMaW5lJywgMCwgMjM0LCAzNzQsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0Jhbm5lckJpdG1hcCcsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdEZXNjcmlwdGlvbicsIHUnVGV4dCcsIDI1LCAyMywgMjgwLCAxNSwgMTk2NjExLCBOb25lLCB1J1RoZSBbV2l6YXJkXSBpcyByZWFkeSB0byBiZWdpbiB0aGUgcmVwYWlyIG9mIFtQcm9kdWN0TmFtZV0uJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTUsIDYsIDIwMCwgMTUsIDE5NjYxMSwgTm9uZSwgdSdbRGxnVGl0bGVGb250XVJlcGFpciBbUHJvZHVjdE5hbWVdJywgTm9uZSwgTm9uZSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J0JhY2snLCB1J1B1c2hCdXR0b24nLCAxODAsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0JhY2tdJywgdSdSZXBhaXInLCBOb25lKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdQdXNoQnV0dG9uJywgMjM2LCAyNDMsIDU2LCAxNywgMywgTm9uZSwgdSdbQnV0dG9uVGV4dF9SZXBhaXJdJywgdSdDYW5jZWwnLCBOb25lKSwKLSh1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdUZXh0JywgdSdUZXh0JywgNDgsIDE1LCAxOTQsIDMwLCAzLCBOb25lLCB1J1BsZWFzZSB3YWl0IHdoaWxlIHRoZSBpbnN0YWxsZXIgZmluaXNoZXMgZGV0ZXJtaW5pbmcgeW91ciBkaXNrIHNwYWNlIHJlcXVpcmVtZW50cy4nLCBOb25lLCBOb25lKSwKLSh1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdJY29uJywgdSdJY29uJywgMTUsIDE1LCAyNCwgMjQsIDUyNDI4ODEsIE5vbmUsIHUnW0V4Y2xhbWF0aW9uSWNvbl0nLCBOb25lLCB1J0V4Y2xhbWF0aW9uIGljb258JyksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnUmV0dXJuJywgdSdQdXNoQnV0dG9uJywgMTAyLCA1NywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X1JldHVybl0nLCBOb25lLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0JpdG1hcCcsIHUnQml0bWFwJywgMCwgMCwgMzcwLCAyMzQsIDEsIE5vbmUsIHUnW0RpYWxvZ0JpdG1hcF0nLCB1J0JhY2snLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0JvdHRvbUxpbmUnLCB1J0xpbmUnLCAwLCAyMzQsIDM3NCwgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSksCi0odSdXZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1B1c2hCdXR0b24nLCAzMDQsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X0NhbmNlbF0nLCB1J0JpdG1hcCcsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnRGVzY3JpcHRpb24nLCB1J1RleHQnLCAxMzUsIDcwLCAyMjAsIDMwLCAxOTY2MTEsIE5vbmUsIHUnVGhlIFtXaXphcmRdIHdpbGwgaW5zdGFsbCBbUHJvZHVjdE5hbWVdIG9uIHlvdXIgY29tcHV0ZXIuICBDbGljayBOZXh0IHRvIGNvbnRpbnVlIG9yIENhbmNlbCB0byBleGl0IHRoZSBbV2l6YXJkXS4nLCBOb25lLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J1RpdGxlJywgdSdUZXh0JywgMTM1LCAyMCwgMjIwLCA2MCwgMTk2NjExLCBOb25lLCB1J3tcXFZlcmRhbmFCb2xkMTN9V2VsY29tZSB0byB0aGUgW1Byb2R1Y3ROYW1lXSBbV2l6YXJkXScsIE5vbmUsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnQmFjaycsIHUnUHVzaEJ1dHRvbicsIDE4MCwgMjQzLCA1NiwgMTcsIDEsIE5vbmUsIHUnW0J1dHRvblRleHRfQmFja10nLCB1J05leHQnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J05leHQnLCB1J1B1c2hCdXR0b24nLCAyMzYsIDI0MywgNTYsIDE3LCAzLCBOb25lLCB1J1tCdXR0b25UZXh0X05leHRdJywgdSdDYW5jZWwnLCBOb25lKSwKLV0KLQotTGlzdEJveCA9IFsKLV0KLQotQWN0aW9uVGV4dCA9IFsKLSh1J0luc3RhbGxWYWxpZGF0ZScsIHUnVmFsaWRhdGluZyBpbnN0YWxsJywgTm9uZSksCi0odSdJbnN0YWxsRmlsZXMnLCB1J0NvcHlpbmcgbmV3IGZpbGVzJywgdSdGaWxlOiBbMV0sICBEaXJlY3Rvcnk6IFs5XSwgIFNpemU6IFs2XScpLAotKHUnSW5zdGFsbEFkbWluUGFja2FnZScsIHUnQ29weWluZyBuZXR3b3JrIGluc3RhbGwgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0sIFNpemU6IFs2XScpLAotKHUnRmlsZUNvc3QnLCB1J0NvbXB1dGluZyBzcGFjZSByZXF1aXJlbWVudHMnLCBOb25lKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgdSdDb21wdXRpbmcgc3BhY2UgcmVxdWlyZW1lbnRzJywgTm9uZSksCi0odSdDb3N0RmluYWxpemUnLCB1J0NvbXB1dGluZyBzcGFjZSByZXF1aXJlbWVudHMnLCBOb25lKSwKLSh1J0NyZWF0ZVNob3J0Y3V0cycsIHUnQ3JlYXRpbmcgc2hvcnRjdXRzJywgdSdTaG9ydGN1dDogWzFdJyksCi0odSdQdWJsaXNoQ29tcG9uZW50cycsIHUnUHVibGlzaGluZyBRdWFsaWZpZWQgQ29tcG9uZW50cycsIHUnQ29tcG9uZW50IElEOiBbMV0sIFF1YWxpZmllcjogWzJdJyksCi0odSdQdWJsaXNoRmVhdHVyZXMnLCB1J1B1Ymxpc2hpbmcgUHJvZHVjdCBGZWF0dXJlcycsIHUnRmVhdHVyZTogWzFdJyksCi0odSdQdWJsaXNoUHJvZHVjdCcsIHUnUHVibGlzaGluZyBwcm9kdWN0IGluZm9ybWF0aW9uJywgTm9uZSksCi0odSdSZWdpc3RlckNsYXNzSW5mbycsIHUnUmVnaXN0ZXJpbmcgQ2xhc3Mgc2VydmVycycsIHUnQ2xhc3MgSWQ6IFsxXScpLAotKHUnUmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgdSdSZWdpc3RlcmluZyBleHRlbnNpb24gc2VydmVycycsIHUnRXh0ZW5zaW9uOiBbMV0nKSwKLSh1J1JlZ2lzdGVyTUlNRUluZm8nLCB1J1JlZ2lzdGVyaW5nIE1JTUUgaW5mbycsIHUnTUlNRSBDb250ZW50IFR5cGU6IFsxXSwgRXh0ZW5zaW9uOiBbMl0nKSwKLSh1J1JlZ2lzdGVyUHJvZ0lkSW5mbycsIHUnUmVnaXN0ZXJpbmcgcHJvZ3JhbSBpZGVudGlmaWVycycsIHUnUHJvZ0lkOiBbMV0nKSwKLSh1J0FsbG9jYXRlUmVnaXN0cnlTcGFjZScsIHUnQWxsb2NhdGluZyByZWdpc3RyeSBzcGFjZScsIHUnRnJlZSBzcGFjZTogWzFdJyksCi0odSdBcHBTZWFyY2gnLCB1J1NlYXJjaGluZyBmb3IgaW5zdGFsbGVkIGFwcGxpY2F0aW9ucycsIHUnUHJvcGVydHk6IFsxXSwgU2lnbmF0dXJlOiBbMl0nKSwKLSh1J0JpbmRJbWFnZScsIHUnQmluZGluZyBleGVjdXRhYmxlcycsIHUnRmlsZTogWzFdJyksCi0odSdDQ1BTZWFyY2gnLCB1J1NlYXJjaGluZyBmb3IgcXVhbGlmeWluZyBwcm9kdWN0cycsIE5vbmUpLAotKHUnQ3JlYXRlRm9sZGVycycsIHUnQ3JlYXRpbmcgZm9sZGVycycsIHUnRm9sZGVyOiBbMV0nKSwKLSh1J0RlbGV0ZVNlcnZpY2VzJywgdSdEZWxldGluZyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzFdJyksCi0odSdEdXBsaWNhdGVGaWxlcycsIHUnQ3JlYXRpbmcgZHVwbGljYXRlIGZpbGVzJywgdSdGaWxlOiBbMV0sICBEaXJlY3Rvcnk6IFs5XSwgIFNpemU6IFs2XScpLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIHUnU2VhcmNoaW5nIGZvciByZWxhdGVkIGFwcGxpY2F0aW9ucycsIHUnRm91bmQgYXBwbGljYXRpb246IFsxXScpLAotKHUnSW5zdGFsbE9EQkMnLCB1J0luc3RhbGxpbmcgT0RCQyBjb21wb25lbnRzJywgTm9uZSksCi0odSdJbnN0YWxsU2VydmljZXMnLCB1J0luc3RhbGxpbmcgbmV3IHNlcnZpY2VzJywgdSdTZXJ2aWNlOiBbMl0nKSwKLSh1J0xhdW5jaENvbmRpdGlvbnMnLCB1J0V2YWx1YXRpbmcgbGF1bmNoIGNvbmRpdGlvbnMnLCBOb25lKSwKLSh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgdSdNaWdyYXRpbmcgZmVhdHVyZSBzdGF0ZXMgZnJvbSByZWxhdGVkIGFwcGxpY2F0aW9ucycsIHUnQXBwbGljYXRpb246IFsxXScpLAotKHUnTW92ZUZpbGVzJywgdSdNb3ZpbmcgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgIERpcmVjdG9yeTogWzldLCAgU2l6ZTogWzZdJyksCi0odSdQYXRjaEZpbGVzJywgdSdQYXRjaGluZyBmaWxlcycsIHUnRmlsZTogWzFdLCAgRGlyZWN0b3J5OiBbMl0sICBTaXplOiBbM10nKSwKLSh1J1Byb2Nlc3NDb21wb25lbnRzJywgdSdVcGRhdGluZyBjb21wb25lbnQgcmVnaXN0cmF0aW9uJywgTm9uZSksCi0odSdSZWdpc3RlckNvbVBsdXMnLCB1J1JlZ2lzdGVyaW5nIENPTSsgQXBwbGljYXRpb25zIGFuZCBDb21wb25lbnRzJywgdSdBcHBJZDogWzFde3ssIEFwcFR5cGU6IFsyXSwgVXNlcnM6IFszXSwgUlNOOiBbNF19fScpLAotKHUnUmVnaXN0ZXJGb250cycsIHUnUmVnaXN0ZXJpbmcgZm9udHMnLCB1J0ZvbnQ6IFsxXScpLAotKHUnUmVnaXN0ZXJQcm9kdWN0JywgdSdSZWdpc3RlcmluZyBwcm9kdWN0JywgdSdbMV0nKSwKLSh1J1JlZ2lzdGVyVHlwZUxpYnJhcmllcycsIHUnUmVnaXN0ZXJpbmcgdHlwZSBsaWJyYXJpZXMnLCB1J0xpYklEOiBbMV0nKSwKLSh1J1JlZ2lzdGVyVXNlcicsIHUnUmVnaXN0ZXJpbmcgdXNlcicsIHUnWzFdJyksCi0odSdSZW1vdmVEdXBsaWNhdGVGaWxlcycsIHUnUmVtb3ZpbmcgZHVwbGljYXRlZCBmaWxlcycsIHUnRmlsZTogWzFdLCBEaXJlY3Rvcnk6IFs5XScpLAotKHUnUmVtb3ZlRW52aXJvbm1lbnRTdHJpbmdzJywgdSdVcGRhdGluZyBlbnZpcm9ubWVudCBzdHJpbmdzJywgdSdOYW1lOiBbMV0sIFZhbHVlOiBbMl0sIEFjdGlvbiBbM10nKSwKLSh1J1JlbW92ZUV4aXN0aW5nUHJvZHVjdHMnLCB1J1JlbW92aW5nIGFwcGxpY2F0aW9ucycsIHUnQXBwbGljYXRpb246IFsxXSwgQ29tbWFuZCBsaW5lOiBbMl0nKSwKLSh1J1JlbW92ZUZpbGVzJywgdSdSZW1vdmluZyBmaWxlcycsIHUnRmlsZTogWzFdLCBEaXJlY3Rvcnk6IFs5XScpLAotKHUnUmVtb3ZlRm9sZGVycycsIHUnUmVtb3ZpbmcgZm9sZGVycycsIHUnRm9sZGVyOiBbMV0nKSwKLSh1J1JlbW92ZUluaVZhbHVlcycsIHUnUmVtb3ZpbmcgSU5JIGZpbGVzIGVudHJpZXMnLCB1J0ZpbGU6IFsxXSwgIFNlY3Rpb246IFsyXSwgIEtleTogWzNdLCBWYWx1ZTogWzRdJyksCi0odSdSZW1vdmVPREJDJywgdSdSZW1vdmluZyBPREJDIGNvbXBvbmVudHMnLCBOb25lKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5VmFsdWVzJywgdSdSZW1vdmluZyBzeXN0ZW0gcmVnaXN0cnkgdmFsdWVzJywgdSdLZXk6IFsxXSwgTmFtZTogWzJdJyksCi0odSdSZW1vdmVTaG9ydGN1dHMnLCB1J1JlbW92aW5nIHNob3J0Y3V0cycsIHUnU2hvcnRjdXQ6IFsxXScpLAotKHUnUk1DQ1BTZWFyY2gnLCB1J1NlYXJjaGluZyBmb3IgcXVhbGlmeWluZyBwcm9kdWN0cycsIE5vbmUpLAotKHUnU2VsZlJlZ01vZHVsZXMnLCB1J1JlZ2lzdGVyaW5nIG1vZHVsZXMnLCB1J0ZpbGU6IFsxXSwgRm9sZGVyOiBbMl0nKSwKLSh1J1NlbGZVbnJlZ01vZHVsZXMnLCB1J1VucmVnaXN0ZXJpbmcgbW9kdWxlcycsIHUnRmlsZTogWzFdLCBGb2xkZXI6IFsyXScpLAotKHUnU2V0T0RCQ0ZvbGRlcnMnLCB1J0luaXRpYWxpemluZyBPREJDIGRpcmVjdG9yaWVzJywgTm9uZSksCi0odSdTdGFydFNlcnZpY2VzJywgdSdTdGFydGluZyBzZXJ2aWNlcycsIHUnU2VydmljZTogWzFdJyksCi0odSdTdG9wU2VydmljZXMnLCB1J1N0b3BwaW5nIHNlcnZpY2VzJywgdSdTZXJ2aWNlOiBbMV0nKSwKLSh1J1VucHVibGlzaENvbXBvbmVudHMnLCB1J1VucHVibGlzaGluZyBRdWFsaWZpZWQgQ29tcG9uZW50cycsIHUnQ29tcG9uZW50IElEOiBbMV0sIFF1YWxpZmllcjogWzJdJyksCi0odSdVbnB1Ymxpc2hGZWF0dXJlcycsIHUnVW5wdWJsaXNoaW5nIFByb2R1Y3QgRmVhdHVyZXMnLCB1J0ZlYXR1cmU6IFsxXScpLAotKHUnVW5yZWdpc3RlckNsYXNzSW5mbycsIHUnVW5yZWdpc3RlciBDbGFzcyBzZXJ2ZXJzJywgdSdDbGFzcyBJZDogWzFdJyksCi0odSdVbnJlZ2lzdGVyQ29tUGx1cycsIHUnVW5yZWdpc3RlcmluZyBDT00rIEFwcGxpY2F0aW9ucyBhbmQgQ29tcG9uZW50cycsIHUnQXBwSWQ6IFsxXXt7LCBBcHBUeXBlOiBbMl19fScpLAotKHUnVW5yZWdpc3RlckV4dGVuc2lvbkluZm8nLCB1J1VucmVnaXN0ZXJpbmcgZXh0ZW5zaW9uIHNlcnZlcnMnLCB1J0V4dGVuc2lvbjogWzFdJyksCi0odSdVbnJlZ2lzdGVyRm9udHMnLCB1J1VucmVnaXN0ZXJpbmcgZm9udHMnLCB1J0ZvbnQ6IFsxXScpLAotKHUnVW5yZWdpc3Rlck1JTUVJbmZvJywgdSdVbnJlZ2lzdGVyaW5nIE1JTUUgaW5mbycsIHUnTUlNRSBDb250ZW50IFR5cGU6IFsxXSwgRXh0ZW5zaW9uOiBbMl0nKSwKLSh1J1VucmVnaXN0ZXJQcm9nSWRJbmZvJywgdSdVbnJlZ2lzdGVyaW5nIHByb2dyYW0gaWRlbnRpZmllcnMnLCB1J1Byb2dJZDogWzFdJyksCi0odSdVbnJlZ2lzdGVyVHlwZUxpYnJhcmllcycsIHUnVW5yZWdpc3RlcmluZyB0eXBlIGxpYnJhcmllcycsIHUnTGliSUQ6IFsxXScpLAotKHUnV3JpdGVFbnZpcm9ubWVudFN0cmluZ3MnLCB1J1VwZGF0aW5nIGVudmlyb25tZW50IHN0cmluZ3MnLCB1J05hbWU6IFsxXSwgVmFsdWU6IFsyXSwgQWN0aW9uIFszXScpLAotKHUnV3JpdGVJbmlWYWx1ZXMnLCB1J1dyaXRpbmcgSU5JIGZpbGVzIHZhbHVlcycsIHUnRmlsZTogWzFdLCAgU2VjdGlvbjogWzJdLCAgS2V5OiBbM10sIFZhbHVlOiBbNF0nKSwKLSh1J1dyaXRlUmVnaXN0cnlWYWx1ZXMnLCB1J1dyaXRpbmcgc3lzdGVtIHJlZ2lzdHJ5IHZhbHVlcycsIHUnS2V5OiBbMV0sIE5hbWU6IFsyXSwgVmFsdWU6IFszXScpLAotKHUnQWR2ZXJ0aXNlJywgdSdBZHZlcnRpc2luZyBhcHBsaWNhdGlvbicsIE5vbmUpLAotKHUnR2VuZXJhdGVTY3JpcHQnLCB1J0dlbmVyYXRpbmcgc2NyaXB0IG9wZXJhdGlvbnMgZm9yIGFjdGlvbjonLCB1J1sxXScpLAotKHUnSW5zdGFsbFNGUENhdGFsb2dGaWxlJywgdSdJbnN0YWxsaW5nIHN5c3RlbSBjYXRhbG9nJywgdSdGaWxlOiBbMV0sICBEZXBlbmRlbmNpZXM6IFsyXScpLAotKHUnTXNpUHVibGlzaEFzc2VtYmxpZXMnLCB1J1B1Ymxpc2hpbmcgYXNzZW1ibHkgaW5mb3JtYXRpb24nLCB1J0FwcGxpY2F0aW9uIENvbnRleHQ6WzFdLCBBc3NlbWJseSBOYW1lOlsyXScpLAotKHUnTXNpVW5wdWJsaXNoQXNzZW1ibGllcycsIHUnVW5wdWJsaXNoaW5nIGFzc2VtYmx5IGluZm9ybWF0aW9uJywgdSdBcHBsaWNhdGlvbiBDb250ZXh0OlsxXSwgQXNzZW1ibHkgTmFtZTpbMl0nKSwKLSh1J1JvbGxiYWNrJywgdSdSb2xsaW5nIGJhY2sgYWN0aW9uOicsIHUnWzFdJyksCi0odSdSb2xsYmFja0NsZWFudXAnLCB1J1JlbW92aW5nIGJhY2t1cCBmaWxlcycsIHUnRmlsZTogWzFdJyksCi0odSdVbm1vdmVGaWxlcycsIHUnUmVtb3ZpbmcgbW92ZWQgZmlsZXMnLCB1J0ZpbGU6IFsxXSwgRGlyZWN0b3J5OiBbOV0nKSwKLSh1J1VucHVibGlzaFByb2R1Y3QnLCB1J1VucHVibGlzaGluZyBwcm9kdWN0IGluZm9ybWF0aW9uJywgTm9uZSksCi1dCi0KLUNvbnRyb2xDb25kaXRpb24gPSBbCi0odSdDdXN0b21pemVEbGcnLCB1J0Jyb3dzZScsIHUnSGlkZScsIHUnSW5zdGFsbGVkJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0xvY2F0aW9uJywgdSdIaWRlJywgdSdJbnN0YWxsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnTG9jYXRpb25MYWJlbCcsIHUnSGlkZScsIHUnSW5zdGFsbGVkJyksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdEaXNhYmxlJywgdSdJQWdyZWUgPD4gIlllcyInKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J05leHQnLCB1J0VuYWJsZScsIHUnSUFncmVlID0gIlllcyInKSwKLV0KLQotQ29udHJvbEV2ZW50ID0gWwotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluV2VsY29tZURsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnMScsIDIpLAotKHUnQWRtaW5XZWxjb21lRGxnJywgdSdOZXh0JywgdSdbSW5zdGFsbE1vZGVdJywgdSdTZXJ2ZXIgSW1hZ2UnLCB1JzEnLCAxKSwKLSh1J0V4aXREaWFsb2cnLCB1J0ZpbmlzaCcsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCBOb25lKSwKLSh1J0ZhdGFsRXJyb3InLCB1J0ZpbmlzaCcsIHUnRW5kRGlhbG9nJywgdSdFeGl0JywgdScxJywgTm9uZSksCi0odSdQcmVwYXJlRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1Byb2dyZXNzRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1VzZXJFeGl0JywgdSdGaW5pc2gnLCB1J0VuZERpYWxvZycsIHUnRXhpdCcsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J1VwJywgdSdEaXJlY3RvcnlMaXN0VXAnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdDYW5jZWwnLCB1J1Jlc2V0JywgdScwJywgdScxJywgMSksCi0odSdBZG1pbkJyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J05ld0ZvbGRlcicsIHUnRGlyZWN0b3J5TGlzdE5ldycsIHUnMCcsIHUnMScsIE5vbmUpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQWRtaW5Ccm93c2VEbGcnLCB1J09LJywgdSdTZXRUYXJnZXRQYXRoJywgdSdUQVJHRVRESVInLCB1JzEnLCAxKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnTmV4dCcsIHUnU2V0VGFyZ2V0UGF0aCcsIHUnVEFSR0VURElSJywgdScxJywgMSksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZWFkeURsZycsIHUnMScsIDIpLAotKHUnQWRtaW5JbnN0YWxsUG9pbnREbGcnLCB1J0Jyb3dzZScsIHUnU3Bhd25EaWFsb2cnLCB1J0FkbWluQnJvd3NlRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdBZG1pblJlZ2lzdHJhdGlvbkRsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdBZG1pbldlbGNvbWVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdOZXh0JywgdSdOZXdEaWFsb2cnLCB1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdQcm9kdWN0SUQnLCAyKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgdSdOZXh0JywgdSdWYWxpZGF0ZVByb2R1Y3RJRCcsIHUnMCcsIHUnMCcsIDEpLAotKHUnQnJvd3NlRGxnJywgdSdVcCcsIHUnRGlyZWN0b3J5TGlzdFVwJywgdScwJywgdScxJywgTm9uZSksCi0odSdCcm93c2VEbGcnLCB1J0NhbmNlbCcsIHUnUmVzZXQnLCB1JzAnLCB1JzEnLCAxKSwKLSh1J0Jyb3dzZURsZycsIHUnQ2FuY2VsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnQnJvd3NlRGxnJywgdSdOZXdGb2xkZXInLCB1J0RpcmVjdG9yeUxpc3ROZXcnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0Jyb3dzZURsZycsIHUnT0snLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgMiksCi0odSdCcm93c2VEbGcnLCB1J09LJywgdSdTZXRUYXJnZXRQYXRoJywgdSdbX0Jyb3dzZVByb3BlcnR5XScsIHUnMScsIDEpLAotKHUnQ2FuY2VsRGxnJywgdSdObycsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1JzEnLCBOb25lKSwKLSh1J0NhbmNlbERsZycsIHUnWWVzJywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJDaGFuZ2UiJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJDdXN0b20iJywgTm9uZSksCi0odSdDdXN0b21pemVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVhZHlEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnQnJvd3NlJywgdSdTZWxlY3Rpb25Ccm93c2UnLCB1J0Jyb3dzZURsZycsIHUnMScsIE5vbmUpLAotKHUnQ3VzdG9taXplRGxnJywgdSdSZXNldCcsIHUnUmVzZXQnLCB1JzAnLCB1JzEnLCBOb25lKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnRGlza0Nvc3QnLCB1J1NwYXduRGlhbG9nJywgdSdEaXNrQ29zdERsZycsIHUnMScsIDIpLAotKHUnRGlza0Nvc3REbGcnLCB1J09LJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J1knLCB1J0VuZERpYWxvZycsIHUnRXJyb3JZZXMnLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdBJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yQWJvcnQnLCB1JzEnLCBOb25lKSwKLSh1J0Vycm9yRGxnJywgdSdDJywgdSdFbmREaWFsb2cnLCB1J0Vycm9yQ2FuY2VsJywgdScxJywgTm9uZSksCi0odSdFcnJvckRsZycsIHUnSScsIHUnRW5kRGlhbG9nJywgdSdFcnJvcklnbm9yZScsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J04nLCB1J0VuZERpYWxvZycsIHUnRXJyb3JObycsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J08nLCB1J0VuZERpYWxvZycsIHUnRXJyb3JPaycsIHUnMScsIE5vbmUpLAotKHUnRXJyb3JEbGcnLCB1J1InLCB1J0VuZERpYWxvZycsIHUnRXJyb3JSZXRyeScsIHUnMScsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnUmV0cnknLCB1J0VuZERpYWxvZycsIHUnUmV0cnknLCB1JzEnLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCB1J0V4aXQnLCB1J0VuZERpYWxvZycsIHUnRXhpdCcsIHUnMScsIE5vbmUpLAotKHUnRmlsZXNJblVzZScsIHUnSWdub3JlJywgdSdFbmREaWFsb2cnLCB1J0lnbm9yZScsIHUnMScsIE5vbmUpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J1dlbGNvbWVEbGcnLCB1JzEnLCBOb25lKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnU2V0dXBUeXBlRGxnJywgdSdJQWdyZWUgPSAiWWVzIiBBTkQgU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcgPD4gMScsIDMpLAotKHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdJQWdyZWUgPSAiWWVzIiBBTkQgU2hvd1VzZXJSZWdpc3RyYXRpb25EbGcgPSAxJywgMSksCi0odSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdSdOZXh0JywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMiksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnMScsIE5vbmUpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdDaGFuZ2VCdXR0b24nLCB1J05ld0RpYWxvZycsIHUnQ3VzdG9taXplRGxnJywgdScxJywgNCksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUJ1dHRvbicsIHUnW0luc3RhbGxNb2RlXScsIHUnQ2hhbmdlJywgdScxJywgMSksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUJ1dHRvbicsIHUnW1Byb2dyZXNzMV0nLCB1J0NoYW5naW5nJywgdScxJywgMiksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J0NoYW5nZUJ1dHRvbicsIHUnW1Byb2dyZXNzMl0nLCB1J2NoYW5nZXMnLCB1JzEnLCAzKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVtb3ZlQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlbW92ZURsZycsIHUnMScsIDQpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J1JlbW92ZScsIHUnMScsIDEpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1tQcm9ncmVzczFdJywgdSdSZW1vdmluZycsIHUnMScsIDIpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdSZW1vdmVCdXR0b24nLCB1J1tQcm9ncmVzczJdJywgdSdyZW1vdmVzJywgdScxJywgMyksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnTmV3RGlhbG9nJywgdSdWZXJpZnlSZXBhaXJEbGcnLCB1JzEnLCA0KSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVwYWlyQnV0dG9uJywgdSdbSW5zdGFsbE1vZGVdJywgdSdSZXBhaXInLCB1JzEnLCAxKSwKLSh1J01haW50ZW5hbmNlVHlwZURsZycsIHUnUmVwYWlyQnV0dG9uJywgdSdbUHJvZ3Jlc3MxXScsIHUnUmVwYWlyaW5nJywgdScxJywgMiksCi0odSdNYWludGVuYW5jZVR5cGVEbGcnLCB1J1JlcGFpckJ1dHRvbicsIHUnW1Byb2dyZXNzMl0nLCB1J3JlcGFpcnMnLCB1JzEnLCAzKSwKLSh1J01haW50ZW5hbmNlV2VsY29tZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J05leHQnLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdScxJywgMiksCi0odSdNYWludGVuYW5jZVdlbGNvbWVEbGcnLCB1J05leHQnLCB1J1NwYXduV2FpdERpYWxvZycsIHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J0Nvc3RpbmdDb21wbGV0ZSA9IDEnLCAxKSwKLSh1J091dE9mRGlza0RsZycsIHUnT0snLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnTm8nLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdScxJywgTm9uZSksCi0odSdPdXRPZlJiRGlza0RsZycsIHUnWWVzJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnMScsIDIpLAotKHUnT3V0T2ZSYkRpc2tEbGcnLCB1J1llcycsIHUnRW5hYmxlUm9sbGJhY2snLCB1J0ZhbHNlJywgdScxJywgMSksCi0odSdSZXN1bWVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNCksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMiksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZkRpc2tEbGcnLCB1JyhPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDEpIE9SIChPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRiIpJywgNiksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDMpLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsJywgdSdTcGF3bldhaXREaWFsb2cnLCB1J1dhaXRGb3JDb3N0aW5nRGxnJywgdSdDb3N0aW5nQ29tcGxldGUgPSAxJywgMSksCi0odSdSZXN1bWVEbGcnLCB1J0luc3RhbGwnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCB1J1Nob3dVc2VyUmVnaXN0cmF0aW9uRGxnIDw+IDEnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdTaG93VXNlclJlZ2lzdHJhdGlvbkRsZyA9IDEnLCBOb25lKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVCdXR0b24nLCB1J05ld0RpYWxvZycsIHUnVmVyaWZ5UmVhZHlEbGcnLCB1JzEnLCAzKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ29tcGxldGVCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J0NvbXBsZXRlJywgdScxJywgMSksCi0odSdTZXR1cFR5cGVEbGcnLCB1J0NvbXBsZXRlQnV0dG9uJywgdSdTZXRJbnN0YWxsTGV2ZWwnLCB1JzEwMDAnLCB1JzEnLCAyKSwKLSh1J1NldHVwVHlwZURsZycsIHUnQ3VzdG9tQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J0N1c3RvbWl6ZURsZycsIHUnMScsIDIpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdDdXN0b21CdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J0N1c3RvbScsIHUnMScsIDEpLAotKHUnU2V0dXBUeXBlRGxnJywgdSdUeXBpY2FsQnV0dG9uJywgdSdOZXdEaWFsb2cnLCB1J1ZlcmlmeVJlYWR5RGxnJywgdScxJywgMyksCi0odSdTZXR1cFR5cGVEbGcnLCB1J1R5cGljYWxCdXR0b24nLCB1J1tJbnN0YWxsTW9kZV0nLCB1J1R5cGljYWwnLCB1JzEnLCAxKSwKLSh1J1NldHVwVHlwZURsZycsIHUnVHlwaWNhbEJ1dHRvbicsIHUnU2V0SW5zdGFsbExldmVsJywgdSczJywgdScxJywgMiksCi0odSdVc2VyUmVnaXN0cmF0aW9uRGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTGljZW5zZUFncmVlbWVudERsZycsIHUnMScsIE5vbmUpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdTZXR1cFR5cGVEbGcnLCB1J1Byb2R1Y3RJRCcsIDMpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIHUnTmV4dCcsIHUnVmFsaWRhdGVQcm9kdWN0SUQnLCB1JzAnLCB1JzAnLCAxKSwKLSh1J1VzZXJSZWdpc3RyYXRpb25EbGcnLCB1J05leHQnLCB1J1NwYXduV2FpdERpYWxvZycsIHUnV2FpdEZvckNvc3RpbmdEbGcnLCB1J0Nvc3RpbmdDb21wbGV0ZSA9IDEnLCAyKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdDYW5jZWwnLCB1J1NwYXduRGlhbG9nJywgdSdDYW5jZWxEbGcnLCB1JzEnLCBOb25lKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J0FkbWluSW5zdGFsbFBvaW50RGxnJywgdSdJbnN0YWxsTW9kZSA9ICJTZXJ2ZXIgSW1hZ2UiJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdDdXN0b21pemVEbGcnLCB1J0luc3RhbGxNb2RlID0gIkN1c3RvbSIgT1IgSW5zdGFsbE1vZGUgPSAiQ2hhbmdlIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdSdJbnN0YWxsTW9kZSA9ICJSZXBhaXIiJywgTm9uZSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnQmFjaycsIHUnTmV3RGlhbG9nJywgdSdTZXR1cFR5cGVEbGcnLCB1J0luc3RhbGxNb2RlID0gIlR5cGljYWwiIE9SIEluc3RhbGxNb2RlID0gIkNvbXBsZXRlIicsIE5vbmUpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCAzKSwKLSh1J1ZlcmlmeVJlYWR5RGxnJywgdSdJbnN0YWxsJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDEpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCB1J0luc3RhbGwnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZkRpc2tEbGcnLCB1JyhPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDEpIE9SIChPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRiIpJywgNSksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnU3Bhd25EaWFsb2cnLCB1J091dE9mUmJEaXNrRGxnJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIChQUk9NUFRST0xMQkFDS0NPU1Q9IlAiIE9SIE5PVCBQUk9NUFRST0xMQkFDS0NPU1QpJywgMiksCi0odSdWZXJpZnlSZWFkeURsZycsIHUnSW5zdGFsbCcsIHUnRW5hYmxlUm9sbGJhY2snLCB1J0ZhbHNlJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCA0KSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnQ2FuY2VsJywgdSdTcGF3bkRpYWxvZycsIHUnQ2FuY2VsRGxnJywgdScxJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J0JhY2snLCB1J05ld0RpYWxvZycsIHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgdScxJywgTm9uZSksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnUmVtb3ZlJywgdSdBbGwnLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAxKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNCksCi0odSdWZXJpZnlSZW1vdmVEbGcnLCB1J1JlbW92ZScsIHUnRW5kRGlhbG9nJywgdSdSZXR1cm4nLCB1J091dE9mRGlza1NwYWNlIDw+IDEnLCAyKSwKLSh1J1ZlcmlmeVJlbW92ZURsZycsIHUnUmVtb3ZlJywgdSdTcGF3bkRpYWxvZycsIHUnT3V0T2ZEaXNrRGxnJywgdScoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAxKSBPUiAoT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkYiKScsIDYpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZlJiRGlza0RsZycsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCAoUFJPTVBUUk9MTEJBQ0tDT1NUPSJQIiBPUiBOT1QgUFJPTVBUUk9MTEJBQ0tDT1NUKScsIDMpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgdSdSZW1vdmUnLCB1J0VuYWJsZVJvbGxiYWNrJywgdSdGYWxzZScsIHUnT3V0T2ZEaXNrU3BhY2UgPSAxIEFORCBPdXRPZk5vUmJEaXNrU3BhY2UgPSAwIEFORCBQUk9NUFRST0xMQkFDS0NPU1Q9IkQiJywgNSksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdCYWNrJywgdSdOZXdEaWFsb2cnLCB1J01haW50ZW5hbmNlVHlwZURsZycsIHUnMScsIE5vbmUpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J0VuZERpYWxvZycsIHUnUmV0dXJuJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCA1KSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdFbmREaWFsb2cnLCB1J1JldHVybicsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDMpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J1NwYXduRGlhbG9nJywgdSdPdXRPZkRpc2tEbGcnLCB1JyhPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDEpIE9SIChPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRiIpJywgNyksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnU3Bhd25EaWFsb2cnLCB1J091dE9mUmJEaXNrRGxnJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIChQUk9NUFRST0xMQkFDS0NPU1Q9IlAiIE9SIE5PVCBQUk9NUFRST0xMQkFDS0NPU1QpJywgNCksCi0odSdWZXJpZnlSZXBhaXJEbGcnLCB1J1JlcGFpcicsIHUnRW5hYmxlUm9sbGJhY2snLCB1J0ZhbHNlJywgdSdPdXRPZkRpc2tTcGFjZSA9IDEgQU5EIE91dE9mTm9SYkRpc2tTcGFjZSA9IDAgQU5EIFBST01QVFJPTExCQUNLQ09TVD0iRCInLCA2KSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIHUnUmVwYWlyJywgdSdSZWluc3RhbGwnLCB1J0FsbCcsIHUnT3V0T2ZEaXNrU3BhY2UgPD4gMScsIDIpLAotKHUnVmVyaWZ5UmVwYWlyRGxnJywgdSdSZXBhaXInLCB1J1JlaW5zdGFsbE1vZGUnLCB1J2VjbXVzJywgdSdPdXRPZkRpc2tTcGFjZSA8PiAxJywgMSksCi0odSdXYWl0Rm9yQ29zdGluZ0RsZycsIHUnUmV0dXJuJywgdSdFbmREaWFsb2cnLCB1J0V4aXQnLCB1JzEnLCBOb25lKSwKLSh1J1dlbGNvbWVEbGcnLCB1J0NhbmNlbCcsIHUnU3Bhd25EaWFsb2cnLCB1J0NhbmNlbERsZycsIHUnMScsIE5vbmUpLAotKHUnV2VsY29tZURsZycsIHUnTmV4dCcsIHUnTmV3RGlhbG9nJywgdSdMaWNlbnNlQWdyZWVtZW50RGxnJywgdScxJywgTm9uZSksCi1dCi0KLURpYWxvZyA9IFsKLSh1J0FkbWluV2VsY29tZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0V4aXREaWFsb2cnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnRmluaXNoJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcpLAotKHUnRmF0YWxFcnJvcicsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdGaW5pc2gnLCB1J0ZpbmlzaCcsIHUnRmluaXNoJyksCi0odSdQcmVwYXJlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJywgdSdDYW5jZWwnKSwKLSh1J1Byb2dyZXNzRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0NhbmNlbCcsIHUnQ2FuY2VsJywgdSdDYW5jZWwnKSwKLSh1J1VzZXJFeGl0JywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0ZpbmlzaCcsIHUnRmluaXNoJywgdSdGaW5pc2gnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J1BhdGhFZGl0JywgdSdPSycsIHUnQ2FuY2VsJyksCi0odSdBZG1pbkluc3RhbGxQb2ludERsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdUZXh0JywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0FkbWluUmVnaXN0cmF0aW9uRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J09yZ2FuaXphdGlvbkxhYmVsJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0Jyb3dzZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdQYXRoRWRpdCcsIHUnT0snLCB1J0NhbmNlbCcpLAotKHUnQ2FuY2VsRGxnJywgNTAsIDEwLCAyNjAsIDg1LCAzLCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnTm8nLCB1J05vJywgdSdObycpLAotKHUnQ3VzdG9taXplRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMzUsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdUcmVlJywgdSdOZXh0JywgdSdDYW5jZWwnKSwKLSh1J0Rpc2tDb3N0RGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J09LJywgdSdPSycsIHUnT0snKSwKLSh1J0Vycm9yRGxnJywgNTAsIDEwLCAyNzAsIDEwNSwgNjU1MzksIHUnSW5zdGFsbGVyIEluZm9ybWF0aW9uJywgdSdFcnJvclRleHQnLCBOb25lLCBOb25lKSwKLSh1J0ZpbGVzSW5Vc2UnLCA1MCwgNTAsIDM3MCwgMjcwLCAxOSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J1JldHJ5JywgdSdSZXRyeScsIHUnUmV0cnknKSwKLSh1J0xpY2Vuc2VBZ3JlZW1lbnREbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzLCB1J1tQcm9kdWN0TmFtZV0gTGljZW5zZSBBZ3JlZW1lbnQnLCB1J0J1dHRvbnMnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotKHUnTWFpbnRlbmFuY2VUeXBlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0NoYW5nZUxhYmVsJywgdSdDaGFuZ2VCdXR0b24nLCB1J0NhbmNlbCcpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05leHQnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotKHUnT3V0T2ZEaXNrRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J09LJywgdSdPSycsIHUnT0snKSwKLSh1J091dE9mUmJEaXNrRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05vJywgdSdObycsIHUnTm8nKSwKLSh1J1Jlc3VtZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdJbnN0YWxsJywgdSdJbnN0YWxsJywgdSdDYW5jZWwnKSwKLSh1J1NldHVwVHlwZURsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdUeXBpY2FsTGFiZWwnLCB1J1R5cGljYWxCdXR0b24nLCB1J0NhbmNlbCcpLAotKHUnVXNlclJlZ2lzdHJhdGlvbkRsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdOYW1lTGFiZWwnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotKHUnVmVyaWZ5UmVhZHlEbGcnLCA1MCwgNTAsIDM3MCwgMjcwLCAzNSwgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J0luc3RhbGwnLCB1J0luc3RhbGwnLCB1J0NhbmNlbCcpLAotKHUnVmVyaWZ5UmVtb3ZlRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMzUsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdCYWNrJywgdSdCYWNrJywgdSdDYW5jZWwnKSwKLSh1J1ZlcmlmeVJlcGFpckRsZycsIDUwLCA1MCwgMzcwLCAyNzAsIDM1LCB1J1tQcm9kdWN0TmFtZV0gW1NldHVwXScsIHUnUmVwYWlyJywgdSdSZXBhaXInLCB1J0NhbmNlbCcpLAotKHUnV2FpdEZvckNvc3RpbmdEbGcnLCA1MCwgMTAsIDI2MCwgODUsIDMsIHUnW1Byb2R1Y3ROYW1lXSBbU2V0dXBdJywgdSdSZXR1cm4nLCB1J1JldHVybicsIHUnUmV0dXJuJyksCi0odSdXZWxjb21lRGxnJywgNTAsIDUwLCAzNzAsIDI3MCwgMywgdSdbUHJvZHVjdE5hbWVdIFtTZXR1cF0nLCB1J05leHQnLCB1J05leHQnLCB1J0NhbmNlbCcpLAotXQotCi1FdmVudE1hcHBpbmcgPSBbCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25EYXRhJywgdSdBY3Rpb25EYXRhJywgdSdUZXh0JyksCi0odSdQcmVwYXJlRGxnJywgdSdBY3Rpb25UZXh0JywgdSdBY3Rpb25UZXh0JywgdSdUZXh0JyksCi0odSdQcm9ncmVzc0RsZycsIHUnQWN0aW9uVGV4dCcsIHUnQWN0aW9uVGV4dCcsIHUnVGV4dCcpLAotKHUnUHJvZ3Jlc3NEbGcnLCB1J1Byb2dyZXNzQmFyJywgdSdTZXRQcm9ncmVzcycsIHUnUHJvZ3Jlc3MnKSwKLSh1J0FkbWluQnJvd3NlRGxnJywgdSdEaXJlY3RvcnlDb21ibycsIHUnSWdub3JlQ2hhbmdlJywgdSdJZ25vcmVDaGFuZ2UnKSwKLSh1J0Jyb3dzZURsZycsIHUnRGlyZWN0b3J5Q29tYm8nLCB1J0lnbm9yZUNoYW5nZScsIHUnSWdub3JlQ2hhbmdlJyksCi0odSdDdXN0b21pemVEbGcnLCB1J05leHQnLCB1J1NlbGVjdGlvbk5vSXRlbXMnLCB1J0VuYWJsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnUmVzZXQnLCB1J1NlbGVjdGlvbk5vSXRlbXMnLCB1J0VuYWJsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnRGlza0Nvc3QnLCB1J1NlbGVjdGlvbk5vSXRlbXMnLCB1J0VuYWJsZWQnKSwKLSh1J0N1c3RvbWl6ZURsZycsIHUnSXRlbURlc2NyaXB0aW9uJywgdSdTZWxlY3Rpb25EZXNjcmlwdGlvbicsIHUnVGV4dCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdJdGVtU2l6ZScsIHUnU2VsZWN0aW9uU2l6ZScsIHUnVGV4dCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnU2VsZWN0aW9uUGF0aCcsIHUnVGV4dCcpLAotKHUnQ3VzdG9taXplRGxnJywgdSdMb2NhdGlvbicsIHUnU2VsZWN0aW9uUGF0aE9uJywgdSdWaXNpYmxlJyksCi0odSdDdXN0b21pemVEbGcnLCB1J0xvY2F0aW9uTGFiZWwnLCB1J1NlbGVjdGlvblBhdGhPbicsIHUnVmlzaWJsZScpLAotXQotCi1JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlID0gWwotKHUnSW5zdGFsbFZhbGlkYXRlJywgTm9uZSwgMTQwMCksCi0odSdJbnN0YWxsSW5pdGlhbGl6ZScsIE5vbmUsIDE1MDApLAotKHUnSW5zdGFsbEZpbmFsaXplJywgTm9uZSwgNjYwMCksCi0odSdJbnN0YWxsRmlsZXMnLCBOb25lLCA0MDAwKSwKLSh1J0ZpbGVDb3N0JywgTm9uZSwgOTAwKSwKLSh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSh1J0Nvc3RGaW5hbGl6ZScsIE5vbmUsIDEwMDApLAotKHUnQ3JlYXRlU2hvcnRjdXRzJywgTm9uZSwgNDUwMCksCi0odSdQdWJsaXNoQ29tcG9uZW50cycsIE5vbmUsIDYyMDApLAotKHUnUHVibGlzaEZlYXR1cmVzJywgTm9uZSwgNjMwMCksCi0odSdQdWJsaXNoUHJvZHVjdCcsIE5vbmUsIDY0MDApLAotKHUnUmVnaXN0ZXJDbGFzc0luZm8nLCBOb25lLCA0NjAwKSwKLSh1J1JlZ2lzdGVyRXh0ZW5zaW9uSW5mbycsIE5vbmUsIDQ3MDApLAotKHUnUmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDQ5MDApLAotKHUnUmVnaXN0ZXJQcm9nSWRJbmZvJywgTm9uZSwgNDgwMCksCi0odSdWYWxpZGF0ZVByb2R1Y3RJRCcsIE5vbmUsIDcwMCksCi0odSdBbGxvY2F0ZVJlZ2lzdHJ5U3BhY2UnLCB1J05PVCBJbnN0YWxsZWQnLCAxNTUwKSwKLSh1J0FwcFNlYXJjaCcsIE5vbmUsIDQwMCksCi0odSdCaW5kSW1hZ2UnLCBOb25lLCA0MzAwKSwKLSh1J0NDUFNlYXJjaCcsIHUnTk9UIEluc3RhbGxlZCcsIDUwMCksCi0odSdDcmVhdGVGb2xkZXJzJywgTm9uZSwgMzcwMCksCi0odSdEZWxldGVTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgMjAwMCksCi0odSdEdXBsaWNhdGVGaWxlcycsIE5vbmUsIDQyMTApLAotKHUnRmluZFJlbGF0ZWRQcm9kdWN0cycsIE5vbmUsIDIwMCksCi0odSdJbnN0YWxsT0RCQycsIE5vbmUsIDU0MDApLAotKHUnSW5zdGFsbFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCA1ODAwKSwKLSh1J0xhdW5jaENvbmRpdGlvbnMnLCBOb25lLCAxMDApLAotKHUnTWlncmF0ZUZlYXR1cmVTdGF0ZXMnLCBOb25lLCAxMjAwKSwKLSh1J01vdmVGaWxlcycsIE5vbmUsIDM4MDApLAotKHUnUGF0Y2hGaWxlcycsIE5vbmUsIDQwOTApLAotKHUnUHJvY2Vzc0NvbXBvbmVudHMnLCBOb25lLCAxNjAwKSwKLSh1J1JlZ2lzdGVyQ29tUGx1cycsIE5vbmUsIDU3MDApLAotKHUnUmVnaXN0ZXJGb250cycsIE5vbmUsIDUzMDApLAotKHUnUmVnaXN0ZXJQcm9kdWN0JywgTm9uZSwgNjEwMCksCi0odSdSZWdpc3RlclR5cGVMaWJyYXJpZXMnLCBOb25lLCA1NTAwKSwKLSh1J1JlZ2lzdGVyVXNlcicsIE5vbmUsIDYwMDApLAotKHUnUmVtb3ZlRHVwbGljYXRlRmlsZXMnLCBOb25lLCAzNDAwKSwKLSh1J1JlbW92ZUVudmlyb25tZW50U3RyaW5ncycsIE5vbmUsIDMzMDApLAotKHUnUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cycsIE5vbmUsIDY3MDApLAotKHUnUmVtb3ZlRmlsZXMnLCBOb25lLCAzNTAwKSwKLSh1J1JlbW92ZUZvbGRlcnMnLCBOb25lLCAzNjAwKSwKLSh1J1JlbW92ZUluaVZhbHVlcycsIE5vbmUsIDMxMDApLAotKHUnUmVtb3ZlT0RCQycsIE5vbmUsIDI0MDApLAotKHUnUmVtb3ZlUmVnaXN0cnlWYWx1ZXMnLCBOb25lLCAyNjAwKSwKLSh1J1JlbW92ZVNob3J0Y3V0cycsIE5vbmUsIDMyMDApLAotKHUnUk1DQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA2MDApLAotKHUnU2VsZlJlZ01vZHVsZXMnLCBOb25lLCA1NjAwKSwKLSh1J1NlbGZVbnJlZ01vZHVsZXMnLCBOb25lLCAyMjAwKSwKLSh1J1NldE9EQkNGb2xkZXJzJywgTm9uZSwgMTEwMCksCi0odSdTdGFydFNlcnZpY2VzJywgdSdWZXJzaW9uTlQnLCA1OTAwKSwKLSh1J1N0b3BTZXJ2aWNlcycsIHUnVmVyc2lvbk5UJywgMTkwMCksCi0odSdVbnB1Ymxpc2hDb21wb25lbnRzJywgTm9uZSwgMTcwMCksCi0odSdVbnB1Ymxpc2hGZWF0dXJlcycsIE5vbmUsIDE4MDApLAotKHUnVW5yZWdpc3RlckNsYXNzSW5mbycsIE5vbmUsIDI3MDApLAotKHUnVW5yZWdpc3RlckNvbVBsdXMnLCBOb25lLCAyMTAwKSwKLSh1J1VucmVnaXN0ZXJFeHRlbnNpb25JbmZvJywgTm9uZSwgMjgwMCksCi0odSdVbnJlZ2lzdGVyRm9udHMnLCBOb25lLCAyNTAwKSwKLSh1J1VucmVnaXN0ZXJNSU1FSW5mbycsIE5vbmUsIDMwMDApLAotKHUnVW5yZWdpc3RlclByb2dJZEluZm8nLCBOb25lLCAyOTAwKSwKLSh1J1VucmVnaXN0ZXJUeXBlTGlicmFyaWVzJywgTm9uZSwgMjMwMCksCi0odSdXcml0ZUVudmlyb25tZW50U3RyaW5ncycsIE5vbmUsIDUyMDApLAotKHUnV3JpdGVJbmlWYWx1ZXMnLCBOb25lLCA1MTAwKSwKLSh1J1dyaXRlUmVnaXN0cnlWYWx1ZXMnLCBOb25lLCA1MDAwKSwKLV0KLQotSW5zdGFsbFVJU2VxdWVuY2UgPSBbCi0jKHUnRmlsZUNvc3QnLCBOb25lLCA5MDApLAotIyh1J0Nvc3RJbml0aWFsaXplJywgTm9uZSwgODAwKSwKLSModSdDb3N0RmluYWxpemUnLCBOb25lLCAxMDAwKSwKLSModSdFeGVjdXRlQWN0aW9uJywgTm9uZSwgMTMwMCksCi0jKHUnRXhpdERpYWxvZycsIE5vbmUsIC0xKSwKLSModSdGYXRhbEVycm9yJywgTm9uZSwgLTMpLAotKHUnUHJlcGFyZURsZycsIE5vbmUsIDE0MCksCi0odSdQcm9ncmVzc0RsZycsIE5vbmUsIDEyODApLAotIyh1J1VzZXJFeGl0JywgTm9uZSwgLTIpLAotKHUnTWFpbnRlbmFuY2VXZWxjb21lRGxnJywgdSdJbnN0YWxsZWQgQU5EIE5PVCBSRVNVTUUgQU5EIE5PVCBQcmVzZWxlY3RlZCcsIDEyNTApLAotKHUnUmVzdW1lRGxnJywgdSdJbnN0YWxsZWQgQU5EIChSRVNVTUUgT1IgUHJlc2VsZWN0ZWQpJywgMTI0MCksCi0odSdXZWxjb21lRGxnJywgdSdOT1QgSW5zdGFsbGVkJywgMTIzMCksCi0jKHUnQXBwU2VhcmNoJywgTm9uZSwgNDAwKSwKLSModSdDQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA1MDApLAotIyh1J0ZpbmRSZWxhdGVkUHJvZHVjdHMnLCBOb25lLCAyMDApLAotIyh1J0xhdW5jaENvbmRpdGlvbnMnLCBOb25lLCAxMDApLAotIyh1J01pZ3JhdGVGZWF0dXJlU3RhdGVzJywgTm9uZSwgMTIwMCksCi0jKHUnUk1DQ1BTZWFyY2gnLCB1J05PVCBJbnN0YWxsZWQnLCA2MDApLAotXQotCi1MaXN0VmlldyA9IFsKLV0KLQotUmFkaW9CdXR0b24gPSBbCi0odSdJQWdyZWUnLCAxLCB1J1llcycsIDUsIDAsIDI1MCwgMTUsIHUne1xcRGxnRm9udDh9SSAmYWNjZXB0IHRoZSB0ZXJtcyBpbiB0aGUgTGljZW5zZSBBZ3JlZW1lbnQnLCBOb25lKSwKLSh1J0lBZ3JlZScsIDIsIHUnTm8nLCA1LCAyMCwgMjUwLCAxNSwgdSd7XFxEbGdGb250OH1JICZkbyBub3QgYWNjZXB0IHRoZSB0ZXJtcyBpbiB0aGUgTGljZW5zZSBBZ3JlZW1lbnQnLCBOb25lKSwKLV0KLQotVGV4dFN0eWxlID0gWwotKHUnRGxnRm9udDgnLCB1J1RhaG9tYScsIDgsIE5vbmUsIDApLAotKHUnRGxnRm9udEJvbGQ4JywgdSdUYWhvbWEnLCA4LCBOb25lLCAxKSwKLSh1J1ZlcmRhbmFCb2xkMTMnLCB1J1ZlcmRhbmEnLCAxMywgTm9uZSwgMSksCi1dCi0KLVVJVGV4dCA9IFsKLSh1J0Fic2VudFBhdGgnLCBOb25lKSwKLSh1J2J5dGVzJywgdSdieXRlcycpLAotKHUnR0InLCB1J0dCJyksCi0odSdLQicsIHUnS0InKSwKLSh1J01CJywgdSdNQicpLAotKHUnTWVudUFic2VudCcsIHUnRW50aXJlIGZlYXR1cmUgd2lsbCBiZSB1bmF2YWlsYWJsZScpLAotKHUnTWVudUFkdmVydGlzZScsIHUnRmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdNZW51QWxsQ0QnLCB1J0VudGlyZSBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIENEJyksCi0odSdNZW51QWxsTG9jYWwnLCB1J0VudGlyZSBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIG9uIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J01lbnVBbGxOZXR3b3JrJywgdSdFbnRpcmUgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBuZXR3b3JrJyksCi0odSdNZW51Q0QnLCB1J1dpbGwgYmUgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIENEJyksCi0odSdNZW51TG9jYWwnLCB1J1dpbGwgYmUgaW5zdGFsbGVkIG9uIGxvY2FsIGhhcmQgZHJpdmUnKSwKLSh1J01lbnVOZXR3b3JrJywgdSdXaWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBuZXR3b3JrJyksCi0odSdTY3JpcHRJblByb2dyZXNzJywgdSdHYXRoZXJpbmcgcmVxdWlyZWQgaW5mb3JtYXRpb24uLi4nKSwKLSh1J1NlbEFic2VudEFic2VudCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgcmVtYWluIHVuaW5zdGFsbGVkJyksCi0odSdTZWxBYnNlbnRBZHZlcnRpc2UnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIHNldCB0byBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsQWJzZW50Q0QnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCB0byBydW4gZnJvbSBDRCcpLAotKHUnU2VsQWJzZW50TG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlIGluc3RhbGxlZCBvbiB0aGUgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsQWJzZW50TmV0d29yaycsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIHRvIHJ1biBmcm9tIHRoZSBuZXR3b3JrJyksCi0odSdTZWxBZHZlcnRpc2VBYnNlbnQnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIGJlY29tZSB1bmF2YWlsYWJsZScpLAotKHUnU2VsQWR2ZXJ0aXNlQWR2ZXJ0aXNlJywgdSdXaWxsIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdTZWxBZHZlcnRpc2VDRCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIENEJyksCi0odSdTZWxBZHZlcnRpc2VMb2NhbCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgaW5zdGFsbGVkIG9uIHlvdXIgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsQWR2ZXJ0aXNlTmV0d29yaycsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHJ1biBmcm9tIHRoZSBuZXR3b3JrJyksCi0odSdTZWxDREFic2VudCcsIHUiVGhpcyBmZWF0dXJlIHdpbGwgYmUgdW5pbnN0YWxsZWQgY29tcGxldGVseSwgeW91IHdvbid0IGJlIGFibGUgdG8gcnVuIGl0IGZyb20gQ0QiKSwKLSh1J1NlbENEQWR2ZXJ0aXNlJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBjaGFuZ2UgZnJvbSBydW4gZnJvbSBDRCBzdGF0ZSB0byBzZXQgdG8gYmUgaW5zdGFsbGVkIHdoZW4gcmVxdWlyZWQnKSwKLSh1J1NlbENEQ0QnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiB0byBiZSBydW4gZnJvbSBDRCcpLAotKHUnU2VsQ0RMb2NhbCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgY2hhbmdlIGZyb20gcnVuIGZyb20gQ0Qgc3RhdGUgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSBsb2NhbCBoYXJkIGRyaXZlJyksCi0odSdTZWxDaGlsZENvc3ROZWcnLCB1J1RoaXMgZmVhdHVyZSBmcmVlcyB1cCBbMV0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsQ2hpbGRDb3N0UG9zJywgdSdUaGlzIGZlYXR1cmUgcmVxdWlyZXMgWzFdIG9uIHlvdXIgaGFyZCBkcml2ZS4nKSwKLSh1J1NlbENvc3RQZW5kaW5nJywgdSdDb21waWxpbmcgY29zdCBmb3IgdGhpcyBmZWF0dXJlLi4uJyksCi0odSdTZWxMb2NhbEFic2VudCcsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgY29tcGxldGVseSByZW1vdmVkJyksCi0odSdTZWxMb2NhbEFkdmVydGlzZScsIHUnVGhpcyBmZWF0dXJlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHlvdXIgbG9jYWwgaGFyZCBkcml2ZSwgYnV0IHdpbGwgYmUgc2V0IHRvIGJlIGluc3RhbGxlZCB3aGVuIHJlcXVpcmVkJyksCi0odSdTZWxMb2NhbENEJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSByZW1vdmVkIGZyb20geW91ciBsb2NhbCBoYXJkIGRyaXZlLCBidXQgd2lsbCBiZSBzdGlsbCBhdmFpbGFibGUgdG8gcnVuIGZyb20gQ0QnKSwKLSh1J1NlbExvY2FsTG9jYWwnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiBvbiB5b3UgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsTG9jYWxOZXR3b3JrJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBiZSByZW1vdmVkIGZyb20geW91ciBsb2NhbCBoYXJkIGRyaXZlLCBidXQgd2lsbCBiZSBzdGlsbCBhdmFpbGFibGUgdG8gcnVuIGZyb20gdGhlIG5ldHdvcmsnKSwKLSh1J1NlbE5ldHdvcmtBYnNlbnQnLCB1IlRoaXMgZmVhdHVyZSB3aWxsIGJlIHVuaW5zdGFsbGVkIGNvbXBsZXRlbHksIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1biBpdCBmcm9tIHRoZSBuZXR3b3JrIiksCi0odSdTZWxOZXR3b3JrQWR2ZXJ0aXNlJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBjaGFuZ2UgZnJvbSBydW4gZnJvbSBuZXR3b3JrIHN0YXRlIHRvIHNldCB0byBiZSBpbnN0YWxsZWQgd2hlbiByZXF1aXJlZCcpLAotKHUnU2VsTmV0d29ya0xvY2FsJywgdSdUaGlzIGZlYXR1cmUgd2lsbCBjaGFuZ2UgZnJvbSBydW4gZnJvbSBuZXR3b3JrIHN0YXRlIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgbG9jYWwgaGFyZCBkcml2ZScpLAotKHUnU2VsTmV0d29ya05ldHdvcmsnLCB1J1RoaXMgZmVhdHVyZSB3aWxsIHJlbWFpbiB0byBiZSBydW4gZnJvbSB0aGUgbmV0d29yaycpLAotKHUnU2VsUGFyZW50Q29zdE5lZ05lZycsIHUnVGhpcyBmZWF0dXJlIGZyZWVzIHVwIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgZnJlZSB1cCBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsUGFyZW50Q29zdE5lZ1BvcycsIHUnVGhpcyBmZWF0dXJlIGZyZWVzIHVwIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgcmVxdWlyZSBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsUGFyZW50Q29zdFBvc05lZycsIHUnVGhpcyBmZWF0dXJlIHJlcXVpcmVzIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgZnJlZSB1cCBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnU2VsUGFyZW50Q29zdFBvc1BvcycsIHUnVGhpcyBmZWF0dXJlIHJlcXVpcmVzIFsxXSBvbiB5b3VyIGhhcmQgZHJpdmUuIEl0IGhhcyBbMl0gb2YgWzNdIHN1YmZlYXR1cmVzIHNlbGVjdGVkLiBUaGUgc3ViZmVhdHVyZXMgcmVxdWlyZSBbNF0gb24geW91ciBoYXJkIGRyaXZlLicpLAotKHUnVGltZVJlbWFpbmluZycsIHUnVGltZSByZW1haW5pbmc6IHtbMV0gbWludXRlcyB9e1syXSBzZWNvbmRzfScpLAotKHUnVm9sdW1lQ29zdEF2YWlsYWJsZScsIHUnQXZhaWxhYmxlJyksCi0odSdWb2x1bWVDb3N0RGlmZmVyZW5jZScsIHUnRGlmZmVyZW5jZScpLAotKHUnVm9sdW1lQ29zdFJlcXVpcmVkJywgdSdSZXF1aXJlZCcpLAotKHUnVm9sdW1lQ29zdFNpemUnLCB1J0Rpc2sgU2l6ZScpLAotKHUnVm9sdW1lQ29zdFZvbHVtZScsIHUnVm9sdW1lJyksCi1dCi0KLV9WYWxpZGF0aW9uID0gWwotKHUnQWRtaW5FeGVjdXRlU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQWRtaW5VSVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnQWRtaW5VSVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0FkbWluVUlTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQ29uZGl0aW9uJywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnRXhwcmVzc2lvbiBldmFsdWF0ZWQgdG8gZGV0ZXJtaW5lIGlmIExldmVsIGluIHRoZSBGZWF0dXJlIHRhYmxlIGlzIHRvIGNoYW5nZS4nKSwKLSh1J0NvbmRpdGlvbicsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhIEZlYXR1cmUgZW50cnkgaW4gRmVhdHVyZSB0YWJsZS4nKSwKLSh1J0NvbmRpdGlvbicsIHUnTGV2ZWwnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOZXcgc2VsZWN0aW9uIExldmVsIHRvIHNldCBpbiBGZWF0dXJlIHRhYmxlIGlmIENvbmRpdGlvbiBldmFsdWF0ZXMgdG8gVFJVRS4nKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdBZHZ0RXhlY3V0ZVNlcXVlbmNlJywgdSdTZXF1ZW5jZScsIHUnWScsIC00LCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1iZXIgdGhhdCBkZXRlcm1pbmVzIHRoZSBzb3J0IG9yZGVyIGluIHdoaWNoIHRoZSBhY3Rpb25zIGFyZSB0byBiZSBleGVjdXRlZC4gIExlYXZlIGJsYW5rIHRvIHN1cHByZXNzIGFjdGlvbi4nKSwKLSh1J0FkdnRFeGVjdXRlU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0JCQ29udHJvbCcsIHUnVHlwZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHR5cGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdCQkNvbnRyb2wnLCB1J0JCQ29udHJvbCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgY29udHJvbC4gVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIGJpbGxib2FyZCwgYnV0IGNhbiByZXBlYXQgb24gZGlmZmVyZW50IGJpbGxib2FyZC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnQmlsbGJvYXJkXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQmlsbGJvYXJkJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdFeHRlcm5hbCBrZXkgdG8gdGhlIEJpbGxib2FyZCB0YWJsZSwgbmFtZSBvZiB0aGUgYmlsbGJvYXJkLicpLAotKHUnQkJDb250cm9sJywgdSdYJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdZJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnV2lkdGgnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdIZWlnaHQnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0JCQ29udHJvbCcsIHUnQXR0cmlidXRlcycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQSAzMi1iaXQgd29yZCB0aGF0IHNwZWNpZmllcyB0aGUgYXR0cmlidXRlIGZsYWdzIHRvIGJlIGFwcGxpZWQgdG8gdGhpcyBjb250cm9sLicpLAotKHUnQkJDb250cm9sJywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdBIHN0cmluZyB1c2VkIHRvIHNldCB0aGUgaW5pdGlhbCB0ZXh0IGNvbnRhaW5lZCB3aXRoaW4gYSBjb250cm9sIChpZiBhcHByb3ByaWF0ZSkuJyksCi0odSdCaWxsYm9hcmQnLCB1J0FjdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIG5hbWUgb2YgYW4gYWN0aW9uLiBUaGUgYmlsbGJvYXJkIGlzIGRpc3BsYXllZCBkdXJpbmcgdGhlIHByb2dyZXNzIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhpcyBhY3Rpb24uJyksCi0odSdCaWxsYm9hcmQnLCB1J0JpbGxib2FyZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiB0aGUgYmlsbGJvYXJkLicpLAotKHUnQmlsbGJvYXJkJywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQW4gZXh0ZXJuYWwga2V5IHRvIHRoZSBGZWF0dXJlIFRhYmxlLiBUaGUgYmlsbGJvYXJkIGlzIHNob3duIG9ubHkgaWYgdGhpcyBmZWF0dXJlIGlzIGJlaW5nIGluc3RhbGxlZC4nKSwKLSh1J0JpbGxib2FyZCcsIHUnT3JkZXJpbmcnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIuIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYmlsbGJvYXJkIGNvcnJlc3BvbmRpbmcgdG8gYW4gYWN0aW9uIHRoZXkgd2lsbCBiZSBzaG93biBpbiB0aGUgb3JkZXIgZGVmaW5lZCBieSB0aGlzIGNvbHVtbi4nKSwKLSh1J0JpbmFyeScsIHUnTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVW5pcXVlIGtleSBpZGVudGlmeWluZyB0aGUgYmluYXJ5IGRhdGEuJyksCi0odSdCaW5hcnknLCB1J0RhdGEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIE5vbmUsIHUnVGhlIHVuZm9ybWF0dGVkIGJpbmFyeSBkYXRhLicpLAotKHUnQ2hlY2tCb3gnLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhlIGl0ZW0uJyksCi0odSdDaGVja0JveCcsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIGl0ZW0uJyksCi0odSdQcm9wZXJ0eScsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgcHJvcGVydHksIHVwcGVyY2FzZSBpZiBzZXR0YWJsZSBieSBsYXVuY2hlciBvciBsb2FkZXIuJyksCi0odSdQcm9wZXJ0eScsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1N0cmluZyB2YWx1ZSBmb3IgcHJvcGVydHkuICBOZXZlciBudWxsIG9yIGVtcHR5LicpLAotKHUnQ29tYm9Cb3gnLCB1J1RleHQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZpc2libGUgdGV4dCB0byBiZSBhc3NpZ25lZCB0byB0aGUgaXRlbS4gT3B0aW9uYWwuIElmIHRoaXMgZW50cnkgb3IgdGhlIGVudGlyZSBjb2x1bW4gaXMgbWlzc2luZywgdGhlIHRleHQgaXMgdGhlIHNhbWUgYXMgdGhlIHZhbHVlLicpLAotKHUnQ29tYm9Cb3gnLCB1J1Byb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIG5hbWVkIHByb3BlcnR5IHRvIGJlIHRpZWQgdG8gdGhpcyBpdGVtLiBBbGwgdGhlIGl0ZW1zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgY29tYm9ib3guJyksCi0odSdDb21ib0JveCcsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nKSwKLSh1J0NvbWJvQm94JywgdSdPcmRlcicsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC5cdFRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J0NvbnRyb2wnLCB1J1R5cGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0eXBlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnWCcsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0hvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgY29udHJvbC4nKSwKLSh1J0NvbnRyb2wnLCB1J1knLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnV2lkdGgnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdXaWR0aCBvZiB0aGUgYm91bmRpbmcgcmVjdGFuZ2xlIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbCcsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSGVpZ2h0IG9mIHRoZSBib3VuZGluZyByZWN0YW5nbGUgb2YgdGhlIGNvbnRyb2wuJyksCi0odSdDb250cm9sJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGNvbnRyb2wuJyksCi0odSdDb250cm9sJywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0Egc3RyaW5nIHVzZWQgdG8gc2V0IHRoZSBpbml0aWFsIHRleHQgY29udGFpbmVkIHdpdGhpbiBhIGNvbnRyb2wgKGlmIGFwcHJvcHJpYXRlKS4nKSwKLSh1J0NvbnRyb2wnLCB1J1Byb3BlcnR5JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgbmFtZSBvZiBhIGRlZmluZWQgcHJvcGVydHkgdG8gYmUgbGlua2VkIHRvIHRoaXMgY29udHJvbC4gJyksCi0odSdDb250cm9sJywgdSdDb250cm9sJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRoZSBjb250cm9sLiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlhbG9nLCBidXQgY2FuIHJlcGVhdCBvbiBkaWZmZXJlbnQgZGlhbG9ncy4gJyksCi0odSdDb250cm9sJywgdSdEaWFsb2dfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdEaWFsb2cnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0V4dGVybmFsIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdDb250cm9sJywgdSdDb250cm9sX05leHQnLCB1J1knLCBOb25lLCBOb25lLCB1J0NvbnRyb2wnLCAyLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIGFuIG90aGVyIGNvbnRyb2wgb24gdGhlIHNhbWUgZGlhbG9nLiBUaGlzIGxpbmsgZGVmaW5lcyB0aGUgdGFiIG9yZGVyIG9mIHRoZSBjb250cm9scy4gVGhlIGxpbmtzIGhhdmUgdG8gZm9ybSBvbmUgb3IgbW9yZSBjeWNsZXMhJyksCi0odSdDb250cm9sJywgdSdIZWxwJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgaGVscCBzdHJpbmdzIHVzZWQgd2l0aCB0aGUgYnV0dG9uLiBUaGUgdGV4dCBpcyBvcHRpb25hbC4gJyksCi0odSdJY29uJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleS4gTmFtZSBvZiB0aGUgaWNvbiBmaWxlLicpLAotKHUnSWNvbicsIHUnRGF0YScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgYmluYXJ5IGljb24gZGF0YSBpbiBQRSAoLkRMTCBvciAuRVhFKSBvciBpY29uICguSUNPKSBmb3JtYXQuJyksCi0odSdMaXN0Qm94JywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJyksCi0odSdMaXN0Qm94JywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBuYW1lZCBwcm9wZXJ0eSB0byBiZSB0aWVkIHRvIHRoaXMgaXRlbS4gQWxsIHRoZSBpdGVtcyB0aWVkIHRvIHRoZSBzYW1lIHByb3BlcnR5IGJlY29tZSBwYXJ0IG9mIHRoZSBzYW1lIGxpc3Rib3guJyksCi0odSdMaXN0Qm94JywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgdmFsdWUgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW0uIFNlbGVjdGluZyB0aGUgbGluZSB3aWxsIHNldCB0aGUgYXNzb2NpYXRlZCBwcm9wZXJ0eSB0byB0aGlzIHZhbHVlLicpLAotKHUnTGlzdEJveCcsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J0FjdGlvblRleHQnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gYmUgZGVzY3JpYmVkLicpLAotKHUnQWN0aW9uVGV4dCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBkaXNwbGF5ZWQgaW4gcHJvZ3Jlc3MgZGlhbG9nIGFuZCBsb2cgd2hlbiBhY3Rpb24gaXMgZXhlY3V0aW5nLicpLAotKHUnQWN0aW9uVGV4dCcsIHUnVGVtcGxhdGUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RlbXBsYXRlJywgTm9uZSwgdSdPcHRpb25hbCBsb2NhbGl6ZWQgZm9ybWF0IHRlbXBsYXRlIHVzZWQgdG8gZm9ybWF0IGFjdGlvbiBkYXRhIHJlY29yZHMgZm9yIGRpc3BsYXkgZHVyaW5nIGFjdGlvbiBleGVjdXRpb24uJyksCi0odSdDb250cm9sQ29uZGl0aW9uJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHQ7RGlzYWJsZTtFbmFibGU7SGlkZTtTaG93JywgdSdUaGUgZGVzaXJlZCBhY3Rpb24gdG8gYmUgdGFrZW4gb24gdGhlIHNwZWNpZmllZCBjb250cm9sLicpLAotKHUnQ29udHJvbENvbmRpdGlvbicsIHUnQ29uZGl0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J0Egc3RhbmRhcmQgY29uZGl0aW9uYWwgc3RhdGVtZW50IHRoYXQgc3BlY2lmaWVzIHVuZGVyIHdoaWNoIGNvbmRpdGlvbnMgdGhlIGFjdGlvbiBzaG91bGQgYmUgdHJpZ2dlcmVkLicpLAotKHUnQ29udHJvbENvbmRpdGlvbicsIHUnRGlhbG9nXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlhbG9nJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBEaWFsb2cgdGFibGUsIG5hbWUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0NvbnRyb2xDb25kaXRpb24nLCB1J0NvbnRyb2xfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnQSBzdGFuZGFyZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCBzcGVjaWZpZXMgdW5kZXIgd2hpY2ggY29uZGl0aW9ucyBhbiBldmVudCBzaG91bGQgYmUgdHJpZ2dlcmVkLicpLAotKHUnQ29udHJvbEV2ZW50JywgdSdPcmRlcmluZycsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB1c2VkIHRvIG9yZGVyIHNldmVyYWwgZXZlbnRzIHRpZWQgdG8gdGhlIHNhbWUgY29udHJvbC4gQ2FuIGJlIGxlZnQgYmxhbmsuJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0RpYWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpYWxvZycsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBkaWFsb2cuJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0NvbnRyb2xfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0V2ZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0FuIGlkZW50aWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgc2hvdWxkIHRha2UgcGxhY2Ugd2hlbiB0aGUgdXNlciBpbnRlcmFjdHMgd2l0aCBjb250cm9sIHNwZWNpZmllZCBieSB0aGUgZmlyc3QgdHdvIGVudHJpZXMuJyksCi0odSdDb250cm9sRXZlbnQnLCB1J0FyZ3VtZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0EgdmFsdWUgdG8gYmUgdXNlZCBhcyBhIG1vZGlmaWVyIHdoZW4gdHJpZ2dlcmluZyBhIHBhcnRpY3VsYXIgZXZlbnQuJyksCi0odSdEaWFsb2cnLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lkdGggb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnRGlhbG9nJywgdSdIZWlnaHQnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIZWlnaHQgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgZGlhbG9nLicpLAotKHUnRGlhbG9nJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIDMyLWJpdCB3b3JkIHRoYXQgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGUgZmxhZ3MgdG8gYmUgYXBwbGllZCB0byB0aGlzIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnVGl0bGUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUiQSB0ZXh0IHN0cmluZyBzcGVjaWZ5aW5nIHRoZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHRpdGxlIGJhciBvZiB0aGUgZGlhbG9nJ3Mgd2luZG93LiIpLAotKHUnRGlhbG9nJywgdSdEaWFsb2cnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGhlIGRpYWxvZy4nKSwKLSh1J0RpYWxvZycsIHUnSENlbnRlcmluZycsIHUnTicsIDAsIDEwMCwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBkaWFsb2cgb24gYSAwLTEwMCBzY2FsZS4gMCBtZWFucyBsZWZ0IGVuZCwgMTAwIG1lYW5zIHJpZ2h0IGVuZCBvZiB0aGUgc2NyZWVuLCA1MCBjZW50ZXIuJyksCi0odSdEaWFsb2cnLCB1J1ZDZW50ZXJpbmcnLCB1J04nLCAwLCAxMDAsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVydGljYWwgcG9zaXRpb24gb2YgdGhlIGRpYWxvZyBvbiBhIDAtMTAwIHNjYWxlLiAwIG1lYW5zIHRvcCBlbmQsIDEwMCBtZWFucyBib3R0b20gZW5kIG9mIHRoZSBzY3JlZW4sIDUwIGNlbnRlci4nKSwKLSh1J0RpYWxvZycsIHUnQ29udHJvbF9GaXJzdCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRGVmaW5lcyB0aGUgY29udHJvbCB0aGF0IGhhcyB0aGUgZm9jdXMgd2hlbiB0aGUgZGlhbG9nIGlzIGNyZWF0ZWQuJyksCi0odSdEaWFsb2cnLCB1J0NvbnRyb2xfRGVmYXVsdCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnQ29udHJvbCcsIDIsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb250cm9sLiBIaXR0aW5nIHJldHVybiBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJyksCi0odSdEaWFsb2cnLCB1J0NvbnRyb2xfQ2FuY2VsJywgdSdZJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdEZWZpbmVzIHRoZSBjYW5jZWwgY29udHJvbC4gSGl0dGluZyBlc2NhcGUgb3IgY2xpY2tpbmcgb24gdGhlIGNsb3NlIGljb24gb24gdGhlIGRpYWxvZyBpcyBlcXVpdmFsZW50IHRvIHB1c2hpbmcgdGhpcyBidXR0b24uJyksCi0odSdFdmVudE1hcHBpbmcnLCB1J0RpYWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J0RpYWxvZycsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSBmb3JlaWduIGtleSB0byB0aGUgRGlhbG9nIHRhYmxlLCBuYW1lIG9mIHRoZSBEaWFsb2cuJyksCi0odSdFdmVudE1hcHBpbmcnLCB1J0NvbnRyb2xfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb250cm9sJywgMiwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIGZvcmVpZ24ga2V5IHRvIHRoZSBDb250cm9sIHRhYmxlLCBuYW1lIG9mIHRoZSBjb250cm9sLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdFdmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQW4gaWRlbnRpZmllciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgdGhhdCB0aGUgY29udHJvbCBzdWJzY3JpYmVzIHRvLicpLAotKHUnRXZlbnRNYXBwaW5nJywgdSdBdHRyaWJ1dGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBjb250cm9sIGF0dHJpYnV0ZSwgdGhhdCBpcyBzZXQgd2hlbiB0aGlzIGV2ZW50IGlzIHJlY2VpdmVkLicpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGFjdGlvbiB0byBpbnZva2UsIGVpdGhlciBpbiB0aGUgZW5naW5lIG9yIHRoZSBoYW5kbGVyIERMTC4nKSwKLSh1J0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQXBwU2VhcmNoJywgdSdQcm9wZXJ0eScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHByb3BlcnR5IGFzc29jaWF0ZWQgd2l0aCBhIFNpZ25hdHVyZScpLAotKHUnQXBwU2VhcmNoJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nKSwKLSh1J0JpbmRJbWFnZScsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBpbmRleCBpbnRvIHRoZSBGaWxlIHRhYmxlLiBUaGlzIG11c3QgYmUgYW4gZXhlY3V0YWJsZSBmaWxlLicpLAotKHUnQmluZEltYWdlJywgdSdQYXRoJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQYXRocycsIE5vbmUsIHUnQSBsaXN0IG9mIDsgIGRlbGltaXRlZCBwYXRocyB0aGF0IHJlcHJlc2VudCB0aGUgcGF0aHMgdG8gYmUgc2VhcmNoZWQgZm9yIHRoZSBpbXBvcnQgRExMUy4gVGhlIGxpc3QgaXMgdXN1YWxseSBhIGxpc3Qgb2YgcHJvcGVydGllcyBlYWNoIGVuY2xvc2VkIHdpdGhpbiBzcXVhcmUgYnJhY2tldHMgW10gLicpLAotKHUnQ0NQU2VhcmNoJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdTaWduYXR1cmU7UmVnTG9jYXRvcjtJbmlMb2NhdG9yO0RyTG9jYXRvcjtDb21wTG9jYXRvcicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIFNpZ25hdHVyZV8gcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZSBhbmQgaXMgYWxzbyB0aGUgZm9yZWlnbiBrZXkgaW4gdGhlIFNpZ25hdHVyZSwgIFJlZ0xvY2F0b3IsIEluaUxvY2F0b3IsIENvbXBMb2NhdG9yIGFuZCB0aGUgRHJMb2NhdG9yIHRhYmxlcy4nKSwKLSh1J0luc3RhbGxVSVNlcXVlbmNlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYWN0aW9uIHRvIGludm9rZSwgZWl0aGVyIGluIHRoZSBlbmdpbmUgb3IgdGhlIGhhbmRsZXIgRExMLicpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLCB1J1NlcXVlbmNlJywgdSdZJywgLTQsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J051bWJlciB0aGF0IGRldGVybWluZXMgdGhlIHNvcnQgb3JkZXIgaW4gd2hpY2ggdGhlIGFjdGlvbnMgYXJlIHRvIGJlIGV4ZWN1dGVkLiAgTGVhdmUgYmxhbmsgdG8gc3VwcHJlc3MgYWN0aW9uLicpLAotKHUnSW5zdGFsbFVJU2VxdWVuY2UnLCB1J0NvbmRpdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ29uZGl0aW9uJywgTm9uZSwgdSdPcHRpb25hbCBleHByZXNzaW9uIHdoaWNoIHNraXBzIHRoZSBhY3Rpb24gaWYgZXZhbHVhdGVzIHRvIGV4cEZhbHNlLklmIHRoZSBleHByZXNzaW9uIHN5bnRheCBpcyBpbnZhbGlkLCB0aGUgZW5naW5lIHdpbGwgdGVybWluYXRlLCByZXR1cm5pbmcgaWVzQmFkQWN0aW9uRGF0YS4nKSwKLSh1J0xpc3RWaWV3JywgdSdUZXh0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgdmlzaWJsZSB0ZXh0IHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBpdGVtLiBPcHRpb25hbC4gSWYgdGhpcyBlbnRyeSBvciB0aGUgZW50aXJlIGNvbHVtbiBpcyBtaXNzaW5nLCB0aGUgdGV4dCBpcyB0aGUgc2FtZSBhcyB0aGUgdmFsdWUuJyksCi0odSdMaXN0VmlldycsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIGl0ZW0uIEFsbCB0aGUgaXRlbXMgdGllZCB0byB0aGUgc2FtZSBwcm9wZXJ0eSBiZWNvbWUgcGFydCBvZiB0aGUgc2FtZSBsaXN0dmlldy4nKSwKLSh1J0xpc3RWaWV3JywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBTZWxlY3RpbmcgdGhlIGxpbmUgd2lsbCBzZXQgdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgdG8gdGhpcyB2YWx1ZS4nKSwKLSh1J0xpc3RWaWV3JywgdSdPcmRlcicsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgcG9zaXRpdmUgaW50ZWdlciB1c2VkIHRvIGRldGVybWluZSB0aGUgb3JkZXJpbmcgb2YgdGhlIGl0ZW1zIHdpdGhpbiBvbmUgbGlzdC4uVGhlIGludGVnZXJzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnNlY3V0aXZlLicpLAotKHUnTGlzdFZpZXcnLCB1J0JpbmFyeV8nLCB1J1knLCBOb25lLCBOb25lLCB1J0JpbmFyeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIG5hbWUgb2YgdGhlIGljb24gdG8gYmUgZGlzcGxheWVkIHdpdGggdGhlIGljb24uIFRoZSBiaW5hcnkgaW5mb3JtYXRpb24gaXMgbG9va2VkIHVwIGZyb20gdGhlIEJpbmFyeSBUYWJsZS4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdYJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhvcml6b250YWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcmFkaW8gYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1knLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgdmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGJvdW5kaW5nIHJlY3RhbmdsZSBvZiB0aGUgcmFkaW8gYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1dpZHRoJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHdpZHRoIG9mIHRoZSBidXR0b24uJyksCi0odSdSYWRpb0J1dHRvbicsIHUnSGVpZ2h0JywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhlaWdodCBvZiB0aGUgYnV0dG9uLicpLAotKHUnUmFkaW9CdXR0b24nLCB1J1RleHQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSB2aXNpYmxlIHRpdGxlIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSByYWRpbyBidXR0b24uJyksCi0odSdSYWRpb0J1dHRvbicsIHUnUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0EgbmFtZWQgcHJvcGVydHkgdG8gYmUgdGllZCB0byB0aGlzIHJhZGlvIGJ1dHRvbi4gQWxsIHRoZSBidXR0b25zIHRpZWQgdG8gdGhlIHNhbWUgcHJvcGVydHkgYmVjb21lIHBhcnQgb2YgdGhlIHNhbWUgZ3JvdXAuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnVmFsdWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIHZhbHVlIHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBidXR0b24uIFNlbGVjdGluZyB0aGUgYnV0dG9uIHdpbGwgc2V0IHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IHRvIHRoaXMgdmFsdWUuJyksCi0odSdSYWRpb0J1dHRvbicsIHUnT3JkZXInLCB1J04nLCAxLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIHBvc2l0aXZlIGludGVnZXIgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG9yZGVyaW5nIG9mIHRoZSBpdGVtcyB3aXRoaW4gb25lIGxpc3QuLlRoZSBpbnRlZ2VycyBkbyBub3QgaGF2ZSB0byBiZSBjb25zZWN1dGl2ZS4nKSwKLSh1J1JhZGlvQnV0dG9uJywgdSdIZWxwJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgaGVscCBzdHJpbmdzIHVzZWQgd2l0aCB0aGUgYnV0dG9uLiBUaGUgdGV4dCBpcyBvcHRpb25hbC4nKSwKLSh1J1RleHRTdHlsZScsIHUnVGV4dFN0eWxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHRoZSBzdHlsZS4gVGhlIHByaW1hcnkga2V5IG9mIHRoaXMgdGFibGUuIFRoaXMgbmFtZSBpcyBlbWJlZGRlZCBpbiB0aGUgdGV4dHMgdG8gaW5kaWNhdGUgYSBzdHlsZSBjaGFuZ2UuJyksCi0odSdUZXh0U3R5bGUnLCB1J0ZhY2VOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBuYW1lIG9mIHRoZSBmb250IHVzZWQuIFJlcXVpcmVkLiBUaGUgc3RyaW5nIG11c3QgYmUgYXQgbW9zdCAzMSBjaGFyYWN0ZXJzIGxvbmcuJyksCi0odSdUZXh0U3R5bGUnLCB1J1NpemUnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgc2l6ZSBvZiB0aGUgZm9udCB1c2VkLiBUaGlzIHNpemUgaXMgZ2l2ZW4gaW4gb3VyIHVuaXRzICgxLzEyIG9mIHRoZSBzeXN0ZW0gZm9udCBoZWlnaHQpLiBBc3N1bWluZyB0aGF0IHRoZSBzeXN0ZW0gZm9udCBpcyBzZXQgdG8gMTIgcG9pbnQgc2l6ZSwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBwb2ludCBzaXplLicpLAotKHUnVGV4dFN0eWxlJywgdSdDb2xvcicsIHUnWScsIDAsIDE2Nzc3MjE1LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgbG9uZyBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNvbG9yIG9mIHRoZSBzdHJpbmcgaW4gdGhlIFJHQiBmb3JtYXQgKFJlZCwgR3JlZW4sIEJsdWUgZWFjaCAwLTI1NSwgUkdCID0gUiArIDI1NipHICsgMjU2XjIqQikuJyksCi0odSdUZXh0U3R5bGUnLCB1J1N0eWxlQml0cycsIHUnWScsIDAsIDE1LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0EgY29tYmluYXRpb24gb2Ygc3R5bGUgYml0cy4nKSwKLSh1J1VJVGV4dCcsIHUnVGV4dCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGxvY2FsaXplZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuJyksCi0odSdVSVRleHQnLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnQSB1bmlxdWUga2V5IHRoYXQgaWRlbnRpZmllcyB0aGUgcGFydGljdWxhciBzdHJpbmcuJyksCi0odSdfVmFsaWRhdGlvbicsIHUnVGFibGUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgdGFibGUnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnRGVzY3JpcHRpb24gb2YgY29sdW1uJyksCi0odSdfVmFsaWRhdGlvbicsIHUnQ29sdW1uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIGNvbHVtbicpLAotKHUnX1ZhbGlkYXRpb24nLCB1J051bGxhYmxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdZO047QCcsIHUnV2hldGhlciB0aGUgY29sdW1uIGlzIG51bGxhYmxlJyksCi0odSdfVmFsaWRhdGlvbicsIHUnTWluVmFsdWUnLCB1J1knLCAtMjE0NzQ4MzY0NywgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdNaW5pbXVtIHZhbHVlIGFsbG93ZWQnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdNYXhWYWx1ZScsIHUnWScsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J01heGltdW0gdmFsdWUgYWxsb3dlZCcpLAotKHUnX1ZhbGlkYXRpb24nLCB1J0tleVRhYmxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3IgZm9yZWlnbiBrZXksIE5hbWUgb2YgdGFibGUgdG8gd2hpY2ggZGF0YSBtdXN0IGxpbmsnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdLZXlDb2x1bW4nLCB1J1knLCAxLCAzMiwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb2x1bW4gdG8gd2hpY2ggZm9yZWlnbiBrZXkgY29ubmVjdHMnKSwKLSh1J19WYWxpZGF0aW9uJywgdSdDYXRlZ29yeScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dDtGb3JtYXR0ZWQ7VGVtcGxhdGU7Q29uZGl0aW9uO0d1aWQ7UGF0aDtWZXJzaW9uO0xhbmd1YWdlO0lkZW50aWZpZXI7QmluYXJ5O1VwcGVyQ2FzZTtMb3dlckNhc2U7RmlsZW5hbWU7UGF0aHM7QW55UGF0aDtXaWxkQ2FyZEZpbGVuYW1lO1JlZ1BhdGg7S2V5Rm9ybWF0dGVkO0N1c3RvbVNvdXJjZTtQcm9wZXJ0eTtDYWJpbmV0O1Nob3J0Y3V0O1VSTCcsIHUnU3RyaW5nIGNhdGVnb3J5JyksCi0odSdfVmFsaWRhdGlvbicsIHUnU2V0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTZXQgb2YgdmFsdWVzIHRoYXQgYXJlIHBlcm1pdHRlZCcpLAotKHUnQWR2dFVJU2VxdWVuY2UnLCB1J0FjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhY3Rpb24gdG8gaW52b2tlLCBlaXRoZXIgaW4gdGhlIGVuZ2luZSBvciB0aGUgaGFuZGxlciBETEwuJyksCi0odSdBZHZ0VUlTZXF1ZW5jZScsIHUnU2VxdWVuY2UnLCB1J1knLCAtNCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTnVtYmVyIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc29ydCBvcmRlciBpbiB3aGljaCB0aGUgYWN0aW9ucyBhcmUgdG8gYmUgZXhlY3V0ZWQuICBMZWF2ZSBibGFuayB0byBzdXBwcmVzcyBhY3Rpb24uJyksCi0odSdBZHZ0VUlTZXF1ZW5jZScsIHUnQ29uZGl0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb25kaXRpb24nLCBOb25lLCB1J09wdGlvbmFsIGV4cHJlc3Npb24gd2hpY2ggc2tpcHMgdGhlIGFjdGlvbiBpZiBldmFsdWF0ZXMgdG8gZXhwRmFsc2UuSWYgdGhlIGV4cHJlc3Npb24gc3ludGF4IGlzIGludmFsaWQsIHRoZSBlbmdpbmUgd2lsbCB0ZXJtaW5hdGUsIHJldHVybmluZyBpZXNCYWRBY3Rpb25EYXRhLicpLAotKHUnQXBwSWQnLCB1J0FwcElkJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgTm9uZSksCi0odSdBcHBJZCcsIHUnQWN0aXZhdGVBdFN0b3JhZ2UnLCB1J1knLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdEbGxTdXJyb2dhdGUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdMb2NhbFNlcnZpY2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdSZW1vdGVTZXJ2ZXJOYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCBOb25lKSwKLSh1J0FwcElkJywgdSdSdW5Bc0ludGVyYWN0aXZlVXNlcicsIHUnWScsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpLAotKHUnQXBwSWQnLCB1J1NlcnZpY2VQYXJhbWV0ZXJzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdGZWF0dXJlJywgdSdBdHRyaWJ1dGVzJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScwOzE7Mjs0OzU7Njs4Ozk7MTA7MTY7MTc7MTg7MjA7MjE7MjI7MjQ7MjU7MjY7MzI7MzM7MzQ7MzY7Mzc7Mzg7NDg7NDk7NTA7NTI7NTM7NTQnLCB1J0ZlYXR1cmUgYXR0cmlidXRlcycpLAotKHUnRmVhdHVyZScsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvbmdlciBkZXNjcmlwdGl2ZSB0ZXh0IGRlc2NyaWJpbmcgYSB2aXNpYmxlIGZlYXR1cmUgaXRlbS4nKSwKLSh1J0ZlYXR1cmUnLCB1J1RpdGxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdTaG9ydCB0ZXh0IGlkZW50aWZ5aW5nIGEgdmlzaWJsZSBmZWF0dXJlIGl0ZW0uJyksCi0odSdGZWF0dXJlJywgdSdGZWF0dXJlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmZWF0dXJlIHJlY29yZC4nKSwKLSh1J0ZlYXR1cmUnLCB1J0RpcmVjdG9yeV8nLCB1J1knLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnVXBwZXJDYXNlJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgRGlyZWN0b3J5IHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgdGhlIFVJLiBBIG5vbi1udWxsIHZhbHVlIHdpbGwgZW5hYmxlIHRoZSBicm93c2UgYnV0dG9uLicpLAotKHUnRmVhdHVyZScsIHUnTGV2ZWwnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgaW5zdGFsbCBsZXZlbCBhdCB3aGljaCByZWNvcmQgd2lsbCBiZSBpbml0aWFsbHkgc2VsZWN0ZWQuIEFuIGluc3RhbGwgbGV2ZWwgb2YgMCB3aWxsIGRpc2FibGUgYW4gaXRlbSBhbmQgcHJldmVudCBpdHMgZGlzcGxheS4nKSwKLSh1J0ZlYXR1cmUnLCB1J0Rpc3BsYXknLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdOdW1lcmljIHNvcnQgb3JkZXIsIHVzZWQgdG8gZm9yY2UgYSBzcGVjaWZpYyBkaXNwbGF5IG9yZGVyaW5nLicpLAotKHUnRmVhdHVyZScsIHUnRmVhdHVyZV9QYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIGtleSBvZiBhIHBhcmVudCByZWNvcmQgaW4gdGhlIHNhbWUgdGFibGUuIElmIHRoZSBwYXJlbnQgaXMgbm90IHNlbGVjdGVkLCB0aGVuIHRoZSByZWNvcmQgd2lsbCBub3QgYmUgaW5zdGFsbGVkLiBOdWxsIGluZGljYXRlcyBhIHJvb3QgaXRlbS4nKSwKLSh1J0ZpbGUnLCB1J1NlcXVlbmNlJywgdSdOJywgMSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2VxdWVuY2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBtZWRpYSBpbWFnZXM7IG9yZGVyIG11c3QgdHJhY2sgY2FiaW5ldCBvcmRlci4nKSwKLSh1J0ZpbGUnLCB1J0F0dHJpYnV0ZXMnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGNvbnRhaW5pbmcgYml0IGZsYWdzIHJlcHJlc2VudGluZyBmaWxlIGF0dHJpYnV0ZXMgKHdpdGggdGhlIGRlY2ltYWwgdmFsdWUgb2YgZWFjaCBiaXQgcG9zaXRpb24gaW4gcGFyZW50aGVzZXMpJyksCi0odSdGaWxlJywgdSdGaWxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbiwgbXVzdCBtYXRjaCBpZGVudGlmaWVyIGluIGNhYmluZXQuICBGb3IgdW5jb21wcmVzc2VkIGZpbGVzLCB0aGlzIGZpZWxkIGlzIGlnbm9yZWQuJyksCi0odSdGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlLicpLAotKHUnRmlsZScsIHUnRmlsZU5hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdGaWxlIG5hbWUgdXNlZCBmb3IgaW5zdGFsbGF0aW9uLCBtYXkgYmUgbG9jYWxpemVkLiAgVGhpcyBtYXkgY29udGFpbiBhICJzaG9ydCBuYW1lfGxvbmcgbmFtZSIgcGFpci4nKSwKLSh1J0ZpbGUnLCB1J0ZpbGVTaXplJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTaXplIG9mIGZpbGUgaW4gYnl0ZXMgKGxvbmcgaW50ZWdlcikuJyksCi0odSdGaWxlJywgdSdMYW5ndWFnZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2UnLCBOb25lLCB1J0xpc3Qgb2YgZGVjaW1hbCBsYW5ndWFnZSBJZHMsIGNvbW1hLXNlcGFyYXRlZCBpZiBtb3JlIHRoYW4gb25lLicpLAotKHUnRmlsZScsIHUnVmVyc2lvbicsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnVmVyc2lvbicsIE5vbmUsIHUnVmVyc2lvbiBzdHJpbmcgZm9yIHZlcnNpb25lZCBmaWxlczsgIEJsYW5rIGZvciB1bnZlcnNpb25lZCBmaWxlcy4nKSwKLSh1J0NsYXNzJywgdSdBdHRyaWJ1dGVzJywgdSdZJywgTm9uZSwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ2xhc3MgcmVnaXN0cmF0aW9uIGF0dHJpYnV0ZXMuJyksCi0odSdDbGFzcycsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJyksCi0odSdDbGFzcycsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIENsYXNzLicpLAotKHUnQ2xhc3MnLCB1J0FyZ3VtZW50JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J29wdGlvbmFsIGFyZ3VtZW50IGZvciBMb2NhbFNlcnZlcnMuJyksCi0odSdDbGFzcycsIHUnQXBwSWRfJywgdSdZJywgTm9uZSwgTm9uZSwgdSdBcHBJZCcsIDEsIHUnR3VpZCcsIE5vbmUsIHUnT3B0aW9uYWwgQXBwSUQgY29udGFpbmluZyBEQ09NIGluZm9ybWF0aW9uIGZvciBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIChzdHJpbmcgR1VJRCkuJyksCi0odSdDbGFzcycsIHUnQ0xTSUQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeS4nKSwKLSh1J0NsYXNzJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicpLAotKHUnQ2xhc3MnLCB1J0NvbnRleHQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBudW1lcmljIHNlcnZlciBjb250ZXh0IGZvciB0aGlzIHNlcnZlci4gQ0xTQ1RYX3h4eHgnKSwKLSh1J0NsYXNzJywgdSdEZWZJbnByb2NIYW5kbGVyJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIHUnMTsyOzMnLCB1J09wdGlvbmFsIGRlZmF1bHQgaW5wcm9jIGhhbmRsZXIuICBPbmx5IG9wdGlvbmFsbHkgcHJvdmlkZWQgaWYgQ29udGV4dD1DTFNDVFhfTE9DQUxfU0VSVkVSLiAgVHlwaWNhbGx5ICJvbGUzMi5kbGwiIG9yICJtYXBpMzIuZGxsIicpLAotKHUnQ2xhc3MnLCB1J0ZpbGVUeXBlTWFzaycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnT3B0aW9uYWwgc3RyaW5nIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBIS0NSdGhpcyBDTFNJRCkga2V5LiBJZiBtdWx0aXBsZSBwYXR0ZXJucyBleGlzdCwgdGhleSBtdXN0IGJlIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiwgYW5kIG51bWVyaWMgc3Via2V5cyB3aWxsIGJlIGdlbmVyYXRlZDogMCwxLDIuLi4nKSwKLSh1J0NsYXNzJywgdSdJY29uXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnSWNvbicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnT3B0aW9uYWwgZm9yZWlnbiBrZXkgaW50byB0aGUgSWNvbiBUYWJsZSwgc3BlY2lmeWluZyB0aGUgaWNvbiBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENMU0lELiBXaWxsIGJlIHdyaXR0ZW4gdW5kZXIgdGhlIERlZmF1bHRJY29uIGtleS4nKSwKLSh1J0NsYXNzJywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJyksCi0odSdDbGFzcycsIHUnUHJvZ0lkX0RlZmF1bHQnLCB1J1knLCBOb25lLCBOb25lLCB1J1Byb2dJZCcsIDEsIHUnVGV4dCcsIE5vbmUsIHUnT3B0aW9uYWwgUHJvZ0lkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENMU0lELicpLAotKHUnQ29tcG9uZW50JywgdSdDb25kaXRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUiQSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCB3aWxsIGRpc2FibGUgdGhpcyBjb21wb25lbnQgaWYgdGhlIHNwZWNpZmllZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRoZSAnVHJ1ZScgc3RhdGUuIElmIGEgY29tcG9uZW50IGlzIGRpc2FibGVkLCBpdCB3aWxsIG5vdCBiZSBpbnN0YWxsZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlICdBY3Rpb24nIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50LiIpLAotKHUnQ29tcG9uZW50JywgdSdBdHRyaWJ1dGVzJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZW1vdGUgZXhlY3V0aW9uIG9wdGlvbiwgb25lIG9mIGlyc0VudW0nKSwKLSh1J0NvbXBvbmVudCcsIHUnQ29tcG9uZW50JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBjb21wb25lbnQgcmVjb3JkLicpLAotKHUnQ29tcG9uZW50JywgdSdDb21wb25lbnRJZCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnQSBzdHJpbmcgR1VJRCB1bmlxdWUgdG8gdGhpcyBjb21wb25lbnQsIHZlcnNpb24sIGFuZCBsYW5ndWFnZS4nKSwKLSh1J0NvbXBvbmVudCcsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZXF1aXJlZCBrZXkgb2YgYSBEaXJlY3RvcnkgdGFibGUgcmVjb3JkLiBUaGlzIGlzIGFjdHVhbGx5IGEgcHJvcGVydHkgbmFtZSB3aG9zZSB2YWx1ZSBjb250YWlucyB0aGUgYWN0dWFsIHBhdGgsIHNldCBlaXRoZXIgYnkgdGhlIEFwcFNlYXJjaCBhY3Rpb24gb3Igd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5nIG9idGFpbmVkIGZyb20gdGhlIERpcmVjdG9yeSB0YWJsZS4nKSwKLSh1J0NvbXBvbmVudCcsIHUnS2V5UGF0aCcsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZTtSZWdpc3RyeTtPREJDRGF0YVNvdXJjZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRWl0aGVyIHRoZSBwcmltYXJ5IGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlLCBSZWdpc3RyeSB0YWJsZSwgb3IgT0RCQ0RhdGFTb3VyY2UgdGFibGUuIFRoaXMgZXh0cmFjdCBwYXRoIGlzIHN0b3JlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5zdGFsbGVkLCBhbmQgaXMgdXNlZCB0byBkZXRlY3QgdGhlIHByZXNlbmNlIG9mIHRoZSBjb21wb25lbnQgYW5kIHRvIHJldHVybiB0aGUgcGF0aCB0byBpdC4nKSwKLSh1J1Byb2dJZCcsIHUnRGVzY3JpcHRpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0xvY2FsaXplZCBkZXNjcmlwdGlvbiBmb3IgdGhlIFByb2dyYW0gaWRlbnRpZmllci4nKSwKLSh1J1Byb2dJZCcsIHUnSWNvbl8nLCB1J1knLCBOb25lLCBOb25lLCB1J0ljb24nLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIGZvcmVpZ24ga2V5IGludG8gdGhlIEljb24gVGFibGUsIHNwZWNpZnlpbmcgdGhlIGljb24gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBQcm9nSWQuIFdpbGwgYmUgd3JpdHRlbiB1bmRlciB0aGUgRGVmYXVsdEljb24ga2V5LicpLAotKHUnUHJvZ0lkJywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09wdGlvbmFsIGljb24gaW5kZXguJyksCi0odSdQcm9nSWQnLCB1J1Byb2dJZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIFByb2dyYW0gSWRlbnRpZmllci4gUHJpbWFyeSBrZXkuJyksCi0odSdQcm9nSWQnLCB1J0NsYXNzXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnQ2xhc3MnLCAxLCB1J0d1aWQnLCBOb25lLCB1J1RoZSBDTFNJRCBvZiBhbiBPTEUgZmFjdG9yeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQcm9nSWQuJyksCi0odSdQcm9nSWQnLCB1J1Byb2dJZF9QYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCB1J1Byb2dJZCcsIDEsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIFBhcmVudCBQcm9ncmFtIElkZW50aWZpZXIuIElmIHNwZWNpZmllZCwgdGhlIFByb2dJZCBjb2x1bW4gYmVjb21lcyBhIHZlcnNpb24gaW5kZXBlbmRlbnQgcHJvZyBpZC4nKSwKLSh1J0NvbXBMb2NhdG9yJywgdSdUeXBlJywgdSdZJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdBIGJvb2xlYW4gdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uLicpLAotKHUnQ29tcExvY2F0b3InLCB1J1NpZ25hdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJyksCi0odSdDb21wTG9jYXRvcicsIHUnQ29tcG9uZW50SWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0Egc3RyaW5nIEdVSUQgdW5pcXVlIHRvIHRoaXMgY29tcG9uZW50LCB2ZXJzaW9uLCBhbmQgbGFuZ3VhZ2UuJyksCi0odSdDb21wbHVzJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBDb21QbHVzIGNvbXBvbmVudC4nKSwKLSh1J0NvbXBsdXMnLCB1J0V4cFR5cGUnLCB1J1knLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdDb21QbHVzIGNvbXBvbmVudCBhdHRyaWJ1dGVzLicpLAotKHUnRGlyZWN0b3J5JywgdSdEaXJlY3RvcnknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1VuaXF1ZSBpZGVudGlmaWVyIGZvciBkaXJlY3RvcnkgZW50cnksIHByaW1hcnkga2V5LiBJZiBhIHByb3BlcnR5IGJ5IHRoaXMgbmFtZSBpcyBkZWZpbmVkLCBpdCBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkaXJlY3RvcnkuJyksCi0odSdEaXJlY3RvcnknLCB1J0RlZmF1bHREaXInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0RlZmF1bHREaXInLCBOb25lLCB1IlRoZSBkZWZhdWx0IHN1Yi1wYXRoIHVuZGVyIHBhcmVudCdzIHBhdGguIiksCi0odSdEaXJlY3RvcnknLCB1J0RpcmVjdG9yeV9QYXJlbnQnLCB1J1knLCBOb25lLCBOb25lLCB1J0RpcmVjdG9yeScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIHRoZSBlbnRyeSBpbiB0aGlzIHRhYmxlIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgcGFyZW50IGRpcmVjdG9yeS4gQSByZWNvcmQgcGFyZW50ZWQgdG8gaXRzZWxmIG9yIHdpdGggYSBOdWxsIHBhcmVudCByZXByZXNlbnRzIGEgcm9vdCBvZiB0aGUgaW5zdGFsbCB0cmVlLicpLAotKHUnQ3JlYXRlRm9sZGVyJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZS4nKSwKLSh1J0NyZWF0ZUZvbGRlcicsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgY291bGQgYmUgZm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdUeXBlJywgdSdOJywgMSwgMTYzODMsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIG51bWVyaWMgY3VzdG9tIGFjdGlvbiB0eXBlLCBjb25zaXN0aW5nIG9mIHNvdXJjZSBsb2NhdGlvbiwgY29kZSB0eXBlLCBlbnRyeSwgb3B0aW9uIGZsYWdzLicpLAotKHUnQ3VzdG9tQWN0aW9uJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBuYW1lIG9mIGFjdGlvbiwgbm9ybWFsbHkgYXBwZWFycyBpbiBzZXF1ZW5jZSB0YWJsZSB1bmxlc3MgcHJpdmF0ZSB1c2UuJyksCi0odSdDdXN0b21BY3Rpb24nLCB1J1NvdXJjZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQ3VzdG9tU291cmNlJywgTm9uZSwgdSdUaGUgdGFibGUgcmVmZXJlbmNlIG9mIHRoZSBzb3VyY2Ugb2YgdGhlIGNvZGUuJyksCi0odSdDdXN0b21BY3Rpb24nLCB1J1RhcmdldCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdFeGNlY3V0aW9uIHBhcmFtZXRlciwgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBjdXN0b20gYWN0aW9uJyksCi0odSdEckxvY2F0b3InLCB1J1NpZ25hdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJyksCi0odSdEckxvY2F0b3InLCB1J1BhdGgnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FueVBhdGgnLCBOb25lLCB1J1RoZSBwYXRoIG9uIHRoZSB1c2VyIHN5c3RlbS4gVGhpcyBpcyBhIGVpdGhlciBhIHN1YnBhdGggYmVsb3cgdGhlIHZhbHVlIG9mIHRoZSBQYXJlbnQgb3IgYSBmdWxsIHBhdGguIFRoZSBwYXRoIG1heSBjb250YWluIHByb3BlcnRpZXMgZW5jbG9zZWQgd2l0aGluIFsgXSB0aGF0IHdpbGwgYmUgZXhwYW5kZWQuJyksCi0odSdEckxvY2F0b3InLCB1J0RlcHRoJywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGRlcHRoIGJlbG93IHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBTaWduYXR1cmVfIGlzIHJlY3Vyc2l2ZWx5IHNlYXJjaGVkLiBJZiBhYnNlbnQsIHRoZSBkZXB0aCBpcyBhc3N1bWVkIHRvIGJlIDAuJyksCi0odSdEckxvY2F0b3InLCB1J1BhcmVudCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnVGhlIHBhcmVudCBmaWxlIHNpZ25hdHVyZS4gSXQgaXMgYWxzbyBhIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuIElmIG51bGwgYW5kIHRoZSBQYXRoIGNvbHVtbiBkb2VzIG5vdCBleHBhbmQgdG8gYSBmdWxsIHBhdGgsIHRoZW4gYWxsIHRoZSBmaXhlZCBkcml2ZXMgb2YgdGhlIHVzZXIgc3lzdGVtIGFyZSBzZWFyY2hlZCB1c2luZyB0aGUgUGF0aC4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSByZWZlcmVuY2luZyB0aGUgc291cmNlIGZpbGUgdG8gYmUgZHVwbGljYXRlZC4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgcmVmZXJlbmNpbmcgQ29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGR1cGxpY2F0ZSBmaWxlLicpLAotKHUnRHVwbGljYXRlRmlsZScsIHUnRGVzdEZvbGRlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRobmFtZSB0byBhIGRlc3RpbmF0aW9uIGZvbGRlci4nKSwKLSh1J0R1cGxpY2F0ZUZpbGUnLCB1J0Rlc3ROYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnRmlsZW5hbWUgdG8gYmUgZ2l2ZW4gdG8gdGhlIGR1cGxpY2F0ZSBmaWxlLicpLAotKHUnRHVwbGljYXRlRmlsZScsIHUnRmlsZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdXNlZCB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgZmlsZSBlbnRyeScpLAotKHUnRW52aXJvbm1lbnQnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudGFsIHZhbHVlLicpLAotKHUnRW52aXJvbm1lbnQnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSB0byBzZXQgaW4gdGhlIGVudmlyb25tZW50YWwgc2V0dGluZ3MuJyksCi0odSdFbnZpcm9ubWVudCcsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIGVudmlyb25tZW50YWwgdmFsdWUuJyksCi0odSdFbnZpcm9ubWVudCcsIHUnRW52aXJvbm1lbnQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1VuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBzZXR0aW5nJyksCi0odSdFcnJvcicsIHUnRXJyb3InLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJbnRlZ2VyIGVycm9yIG51bWJlciwgb2J0YWluZWQgZnJvbSBoZWFkZXIgZmlsZSBJRXJyb3IoLi4uKSBtYWNyb3MuJyksCi0odSdFcnJvcicsIHUnTWVzc2FnZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGVtcGxhdGUnLCBOb25lLCB1J0Vycm9yIGZvcm1hdHRpbmcgdGVtcGxhdGUsIG9idGFpbmVkIGZyb20gdXNlciBlZC4gb3IgbG9jYWxpemVycy4nKSwKLSh1J0V4dGVuc2lvbicsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIENMU0lEIGZhY3RvcnkgdG8gYmUgb3BlcmF0aW9uYWwuJyksCi0odSdFeHRlbnNpb24nLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlLCBzcGVjaWZ5aW5nIHRoZSBjb21wb25lbnQgZm9yIHdoaWNoIHRvIHJldHVybiBhIHBhdGggd2hlbiBjYWxsZWQgdGhyb3VnaCBMb2NhdGVDb21wb25lbnQuJyksCi0odSdFeHRlbnNpb24nLCB1J0V4dGVuc2lvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nKSwKLSh1J0V4dGVuc2lvbicsIHUnTUlNRV8nLCB1J1knLCBOb25lLCBOb25lLCB1J01JTUUnLCAxLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIENvbnRleHQgaWRlbnRpZmllciwgdHlwaWNhbGx5ICJ0eXBlL2Zvcm1hdCIgYXNzb2NpYXRlZCB3aXRoIHRoZSBleHRlbnNpb24nKSwKLSh1J0V4dGVuc2lvbicsIHUnUHJvZ0lkXycsIHUnWScsIE5vbmUsIE5vbmUsIHUnUHJvZ0lkJywgMSwgdSdUZXh0JywgTm9uZSwgdSdPcHRpb25hbCBQcm9nSWQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXh0ZW5zaW9uLicpLAotKHUnTUlNRScsIHUnQ0xTSUQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgQ0xTSUQuJyksCi0odSdNSU1FJywgdSdDb250ZW50VHlwZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnUHJpbWFyeSBrZXkuIENvbnRleHQgaWRlbnRpZmllciwgdHlwaWNhbGx5ICJ0eXBlL2Zvcm1hdCIuJyksCi0odSdNSU1FJywgdSdFeHRlbnNpb25fJywgdSdOJywgTm9uZSwgTm9uZSwgdSdFeHRlbnNpb24nLCAxLCB1J1RleHQnLCBOb25lLCB1J09wdGlvbmFsIGFzc29jaWF0ZWQgZXh0ZW5zaW9uICh3aXRob3V0IGRvdCknKSwKLSh1J0ZlYXR1cmVDb21wb25lbnRzJywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicpLAotKHUnRmVhdHVyZUNvbXBvbmVudHMnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJyksCi0odSdGaWxlU0ZQQ2F0YWxvZycsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXRhbG9nJyksCi0odSdGaWxlU0ZQQ2F0YWxvZycsIHUnU0ZQQ2F0YWxvZ18nLCB1J04nLCBOb25lLCBOb25lLCB1J1NGUENhdGFsb2cnLCAxLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdDYXRhbG9nIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZScpLAotKHUnU0ZQQ2F0YWxvZycsIHUnU0ZQQ2F0YWxvZycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J0ZpbGUgbmFtZSBmb3IgdGhlIGNhdGFsb2cuJyksCi0odSdTRlBDYXRhbG9nJywgdSdDYXRhbG9nJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCBOb25lLCB1J1NGUCBDYXRhbG9nJyksCi0odSdTRlBDYXRhbG9nJywgdSdEZXBlbmRlbmN5JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1BhcmVudCBjYXRhbG9nIC0gb25seSB1c2VkIGJ5IFNGUCcpLAotKHUnRm9udCcsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZm9udCBmaWxlLicpLAotKHUnRm9udCcsIHUnRm9udFRpdGxlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdGb250IG5hbWUuJyksCi0odSdJbmlGaWxlJywgdSdBY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzA7MTszJywgdSdUaGUgdHlwZSBvZiBtb2RpZmljYXRpb24gdG8gYmUgbWFkZSwgb25lIG9mIGlpZkVudW0nKSwKLSh1J0luaUZpbGUnLCB1J1ZhbHVlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSB3cml0dGVuLicpLAotKHUnSW5pRmlsZScsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUga2V5IGJlbG93IFNlY3Rpb24uJyksCi0odSdJbmlGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCB0YWJsZSByZWZlcmVuY2luZyBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgaW5zdGFsbGluZyBvZiB0aGUgLklOSSB2YWx1ZS4nKSwKLSh1J0luaUZpbGUnLCB1J0ZpbGVOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lIGluIHdoaWNoIHRvIHdyaXRlIHRoZSBpbmZvcm1hdGlvbicpLAotKHUnSW5pRmlsZScsIHUnSW5pRmlsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdJbmlGaWxlJywgdSdEaXJQcm9wZXJ0eScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRGlyZWN0b3J5IHRhYmxlIGRlbm90aW5nIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIC5JTkkgZmlsZSBpcy4nKSwKLSh1J0luaUZpbGUnLCB1J1NlY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBTZWN0aW9uLicpLAotKHUnSW5pTG9jYXRvcicsIHUnVHlwZScsIHUnWScsIDAsIDIsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQW4gaW50ZWdlciB2YWx1ZSB0aGF0IGRldGVybWluZXMgaWYgdGhlIC5JTkkgdmFsdWUgcmVhZCBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicpLAotKHUnSW5pTG9jYXRvcicsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdLZXkgdmFsdWUgKGZvbGxvd2VkIGJ5IGFuIGVxdWFscyBzaWduIGluIElOSSBmaWxlKS4nKSwKLSh1J0luaUxvY2F0b3InLCB1J1NpZ25hdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmVfIHJlcHJlc2VudHMgYSB1bmlxdWUgZmlsZSBzaWduYXR1cmUgYW5kIGlzIGFsc28gdGhlIGZvcmVpZ24ga2V5IGluIHRoZSBTaWduYXR1cmUgdGFibGUuJyksCi0odSdJbmlMb2NhdG9yJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSAuSU5JIGZpbGUgbmFtZS4nKSwKLSh1J0luaUxvY2F0b3InLCB1J1NlY3Rpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1NlY3Rpb24gbmFtZSB3aXRoaW4gaW4gZmlsZSAod2l0aGluIHNxdWFyZSBicmFja2V0cyBpbiBJTkkgZmlsZSkuJyksCi0odSdJbmlMb2NhdG9yJywgdSdGaWVsZCcsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBmaWVsZCBpbiB0aGUgLklOSSBsaW5lLiBJZiBGaWVsZCBpcyBudWxsIG9yIDAgdGhlIGVudGlyZSBsaW5lIGlzIHJlYWQuJyksCi0odSdJc29sYXRlZENvbXBvbmVudCcsIHUnQ29tcG9uZW50X0FwcGxpY2F0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSBmb3IgYXBwbGljYXRpb24nKSwKLSh1J0lzb2xhdGVkQ29tcG9uZW50JywgdSdDb21wb25lbnRfU2hhcmVkJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0tleSB0byBDb21wb25lbnQgdGFibGUgaXRlbSB0byBiZSBpc29sYXRlZCcpLAotKHUnTGF1bmNoQ29uZGl0aW9uJywgdSdDb25kaXRpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NvbmRpdGlvbicsIE5vbmUsIHUnRXhwcmVzc2lvbiB3aGljaCBtdXN0IGV2YWx1YXRlIHRvIFRSVUUgaW4gb3JkZXIgZm9yIGluc3RhbGwgdG8gY29tbWVuY2UuJyksCi0odSdMYXVuY2hDb25kaXRpb24nLCB1J0Rlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0xvY2FsaXphYmxlIHRleHQgdG8gZGlzcGxheSB3aGVuIGNvbmRpdGlvbiBmYWlscyBhbmQgaW5zdGFsbCBtdXN0IGFib3J0LicpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdUYWJsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIHUnRGlyZWN0b3J5O0ZpbGU7UmVnaXN0cnknLCB1J1JlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlIG5hbWUnKSwKLSh1J0xvY2tQZXJtaXNzaW9ucycsIHUnRG9tYWluJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0RvbWFpbiBuYW1lIGZvciB1c2VyIHdob3NlIHBlcm1pc3Npb25zIGFyZSBiZWluZyBzZXQuICh1c3VhbGx5IGEgcHJvcGVydHkpJyksCi0odSdMb2NrUGVybWlzc2lvbnMnLCB1J0xvY2tPYmplY3QnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gUmVnaXN0cnkgb3IgRmlsZSB0YWJsZScpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdQZXJtaXNzaW9uJywgdSdZJywgLTIxNDc0ODM2NDcsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUGVybWlzc2lvbiBBY2Nlc3MgbWFzay4gIEZ1bGwgQ29udHJvbCA9IDI2ODQzNTQ1NiAoR0VORVJJQ19BTEwgPSAweDEwMDAwMDAwKScpLAotKHUnTG9ja1Blcm1pc3Npb25zJywgdSdVc2VyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1VzZXIgZm9yIHBlcm1pc3Npb25zIHRvIGJlIHNldC4gICh1c3VhbGx5IGEgcHJvcGVydHkpJyksCi0odSdNZWRpYScsIHUnU291cmNlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdQcm9wZXJ0eScsIE5vbmUsIHUnVGhlIHByb3BlcnR5IGRlZmluaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgY2FiaW5ldCBmaWxlLicpLAotKHUnTWVkaWEnLCB1J0NhYmluZXQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0NhYmluZXQnLCBOb25lLCB1J0lmIHNvbWUgb3IgYWxsIG9mIHRoZSBmaWxlcyBzdG9yZWQgb24gdGhlIG1lZGlhIGFyZSBjb21wcmVzc2VkIGluIGEgY2FiaW5ldCwgdGhlIG5hbWUgb2YgdGhhdCBjYWJpbmV0LicpLAotKHUnTWVkaWEnLCB1J0Rpc2tJZCcsIHUnTicsIDEsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ByaW1hcnkga2V5LCBpbnRlZ2VyIHRvIGRldGVybWluZSBzb3J0IG9yZGVyIGZvciB0YWJsZS4nKSwKLSh1J01lZGlhJywgdSdEaXNrUHJvbXB0JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdEaXNrIG5hbWU6IHRoZSB2aXNpYmxlIHRleHQgYWN0dWFsbHkgcHJpbnRlZCBvbiB0aGUgZGlzay4gIFRoaXMgd2lsbCBiZSB1c2VkIHRvIHByb21wdCB0aGUgdXNlciB3aGVuIHRoaXMgZGlzayBuZWVkcyB0byBiZSBpbnNlcnRlZC4nKSwKLSh1J01lZGlhJywgdSdMYXN0U2VxdWVuY2UnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlIHNlcXVlbmNlIG51bWJlciBmb3IgdGhlIGxhc3QgZmlsZSBmb3IgdGhpcyBtZWRpYS4nKSwKLSh1J01lZGlhJywgdSdWb2x1bWVMYWJlbCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGxhYmVsIGF0dHJpYnV0ZWQgdG8gdGhlIHZvbHVtZS4nKSwKLSh1J01vZHVsZUNvbXBvbmVudHMnLCB1J0NvbXBvbmVudCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdDb21wb25lbnQgY29udGFpbmVkIGluIHRoZSBtb2R1bGUuJyksCi0odSdNb2R1bGVDb21wb25lbnRzJywgdSdMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMiwgTm9uZSwgTm9uZSwgdSdEZWZhdWx0IGxhbmd1YWdlIElEIGZvciBtb2R1bGUgKG1heSBiZSBjaGFuZ2VkIGJ5IHRyYW5zZm9ybSkuJyksCi0odSdNb2R1bGVDb21wb25lbnRzJywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdNb2R1bGUgY29udGFpbmluZyB0aGUgY29tcG9uZW50LicpLAotKHUnTW9kdWxlU2lnbmF0dXJlJywgdSdMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRGVmYXVsdCBkZWNpbWFsIGxhbmd1YWdlIG9mIG1vZHVsZS4nKSwKLSh1J01vZHVsZVNpZ25hdHVyZScsIHUnVmVyc2lvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVmVyc2lvbicsIE5vbmUsIHUnVmVyc2lvbiBvZiB0aGUgbW9kdWxlLicpLAotKHUnTW9kdWxlU2lnbmF0dXJlJywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTW9kdWxlIGlkZW50aWZpZXIgKFN0cmluZy5HVUlEKS4nKSwKLSh1J01vZHVsZURlcGVuZGVuY3knLCB1J01vZHVsZUlEJywgdSdOJywgTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J01vZHVsZSByZXF1aXJpbmcgdGhlIGRlcGVuZGVuY3kuJyksCi0odSdNb2R1bGVEZXBlbmRlbmN5JywgdSdNb2R1bGVMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMiwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZSBvZiBtb2R1bGUgcmVxdWlyaW5nIHRoZSBkZXBlbmRlbmN5LicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnUmVxdWlyZWRJRCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU3RyaW5nLkdVSUQgb2YgcmVxdWlyZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnUmVxdWlyZWRMYW5ndWFnZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTGFuZ3VhZ2VJRCBvZiB0aGUgcmVxdWlyZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRGVwZW5kZW5jeScsIHUnUmVxdWlyZWRWZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJywgTm9uZSwgdSdWZXJzaW9uIG9mIHRoZSByZXF1aXJlZCB2ZXJzaW9uLicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdNb2R1bGVJRCcsIHUnTicsIE5vbmUsIE5vbmUsIHUnTW9kdWxlU2lnbmF0dXJlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBtb2R1bGUgd2l0aCBleGNsdXNpb24gcmVxdWlyZW1lbnQuJyksCi0odSdNb2R1bGVFeGNsdXNpb24nLCB1J01vZHVsZUxhbmd1YWdlJywgdSdOJywgTm9uZSwgTm9uZSwgdSdNb2R1bGVTaWduYXR1cmUnLCAyLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlSUQgb2YgbW9kdWxlIHdpdGggZXhjbHVzaW9uIHJlcXVpcmVtZW50LicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdFeGNsdWRlZElEJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdTdHJpbmcuR1VJRCBvZiBleGNsdWRlZCBtb2R1bGUuJyksCi0odSdNb2R1bGVFeGNsdXNpb24nLCB1J0V4Y2x1ZGVkTGFuZ3VhZ2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlIG9mIGV4Y2x1ZGVkIG1vZHVsZS4nKSwKLSh1J01vZHVsZUV4Y2x1c2lvbicsIHUnRXhjbHVkZWRNYXhWZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWZXJzaW9uJywgTm9uZSwgdSdNYXhpbXVtIHZlcnNpb24gb2YgZXhjbHVkZWQgbW9kdWxlLicpLAotKHUnTW9kdWxlRXhjbHVzaW9uJywgdSdFeGNsdWRlZE1pblZlcnNpb24nLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1ZlcnNpb24nLCBOb25lLCB1J01pbmltdW0gdmVyc2lvbiBvZiBleGNsdWRlZCBtb2R1bGUuJyksCi0odSdNb3ZlRmlsZScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdJZiB0aGlzIGNvbXBvbmVudCBpcyBub3QgInNlbGVjdGVkIiBmb3IgaW5zdGFsbGF0aW9uIG9yIHJlbW92YWwsIG5vIGFjdGlvbiB3aWxsIGJlIHRha2VuIG9uIHRoZSBhc3NvY2lhdGVkIE1vdmVGaWxlIGVudHJ5JyksCi0odSdNb3ZlRmlsZScsIHUnRGVzdEZvbGRlcicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnknKSwKLSh1J01vdmVGaWxlJywgdSdEZXN0TmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J05hbWUgdG8gYmUgZ2l2ZW4gdG8gdGhlIG9yaWdpbmFsIGZpbGUgYWZ0ZXIgaXQgaXMgbW92ZWQgb3IgY29waWVkLiAgSWYgYmxhbmssIHRoZSBkZXN0aW5hdGlvbiBmaWxlIHdpbGwgYmUgZ2l2ZW4gdGhlIHNhbWUgbmFtZSBhcyB0aGUgc291cmNlIGZpbGUnKSwKLSh1J01vdmVGaWxlJywgdSdGaWxlS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgYSBwYXJ0aWN1bGFyIE1vdmVGaWxlIHJlY29yZCcpLAotKHUnTW92ZUZpbGUnLCB1J09wdGlvbnMnLCB1J04nLCAwLCAxLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgTW92ZUZpbGUgb3BlcmF0aW5nIG1vZGUsIG9uZSBvZiBpbWZvRW51bScpLAotKHUnTW92ZUZpbGUnLCB1J1NvdXJjZUZvbGRlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnTmFtZSBvZiBhIHByb3BlcnR5IHdob3NlIHZhbHVlIGlzIGFzc3VtZWQgdG8gcmVzb2x2ZSB0byB0aGUgZnVsbCBwYXRoIHRvIHRoZSBzb3VyY2UgZGlyZWN0b3J5JyksCi0odSdNb3ZlRmlsZScsIHUnU291cmNlTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUiTmFtZSBvZiB0aGUgc291cmNlIGZpbGUocykgdG8gYmUgbW92ZWQgb3IgY29waWVkLiAgQ2FuIGNvbnRhaW4gdGhlICcqJyBvciAnPycgd2lsZGNhcmRzLiIpLAotKHUnTXNpQXNzZW1ibHknLCB1J0F0dHJpYnV0ZXMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Fzc2VtYmx5IGF0dHJpYnV0ZXMnKSwKLSh1J01zaUFzc2VtYmx5JywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGZWF0dXJlIHRhYmxlLicpLAotKHUnTXNpQXNzZW1ibHknLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBDb21wb25lbnQgdGFibGUuJyksCi0odSdNc2lBc3NlbWJseScsIHUnRmlsZV9BcHBsaWNhdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byBGaWxlIHRhYmxlLCBkZW5vdGluZyB0aGUgYXBwbGljYXRpb24gY29udGV4dCBmb3IgcHJpdmF0ZSBhc3NlbWJsaWVzLiBOdWxsIGZvciBnbG9iYWwgYXNzZW1ibGllcy4nKSwKLSh1J01zaUFzc2VtYmx5JywgdSdGaWxlX01hbmlmZXN0JywgdSdZJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBtYW5pZmVzdCBmaWxlIGZvciB0aGUgYXNzZW1ibHkuJyksCi0odSdNc2lBc3NlbWJseU5hbWUnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBuYW1lIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicpLAotKHUnTXNpQXNzZW1ibHlOYW1lJywgdSdWYWx1ZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIHZhbHVlIHBhcnQgb2YgdGhlIG5hbWUtdmFsdWUgcGFpcnMgZm9yIHRoZSBhc3NlbWJseSBuYW1lLicpLAotKHUnTXNpQXNzZW1ibHlOYW1lJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gQ29tcG9uZW50IHRhYmxlLicpLAotKHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJywgdSdDZXJ0RGF0YScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdBIGNlcnRpZmljYXRlIGNvbnRleHQgYmxvYiBmb3IgYSBzaWduZXIgY2VydGlmaWNhdGUnKSwKLSh1J01zaURpZ2l0YWxDZXJ0aWZpY2F0ZScsIHUnRGlnaXRhbENlcnRpZmljYXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcm93JyksCi0odSdNc2lEaWdpdGFsU2lnbmF0dXJlJywgdSdUYWJsZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnTWVkaWEnLCB1J1JlZmVyZW5jZSB0byBhbm90aGVyIHRhYmxlIG5hbWUgKG9ubHkgTWVkaWEgdGFibGUgaXMgc3VwcG9ydGVkKScpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsIHUnRGlnaXRhbENlcnRpZmljYXRlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnTXNpRGlnaXRhbENlcnRpZmljYXRlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSB0byBNc2lEaWdpdGFsQ2VydGlmaWNhdGUgdGFibGUgaWRlbnRpZnlpbmcgdGhlIHNpZ25lciBjZXJ0aWZpY2F0ZScpLAotKHUnTXNpRGlnaXRhbFNpZ25hdHVyZScsIHUnSGFzaCcsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdUaGUgZW5jb2RlZCBoYXNoIGJsb2IgZnJvbSB0aGUgZGlnaXRhbCBzaWduYXR1cmUnKSwKLSh1J01zaURpZ2l0YWxTaWduYXR1cmUnLCB1J1NpZ25PYmplY3QnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHRvIE1lZGlhIHRhYmxlJyksCi0odSdNc2lGaWxlSGFzaCcsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBmb3JlaWduIGtleSBpbnRvIEZpbGUgdGFibGUgcmVmZXJlbmNpbmcgZmlsZSB3aXRoIHRoaXMgaGFzaCcpLAotKHUnTXNpRmlsZUhhc2gnLCB1J09wdGlvbnMnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdWYXJpb3VzIG9wdGlvbnMgYW5kIGF0dHJpYnV0ZXMgZm9yIHRoaXMgaGFzaC4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDEnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDMnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaUZpbGVIYXNoJywgdSdIYXNoUGFydDQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1NpemUgb2YgZmlsZSBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J01zaVBhdGNoSGVhZGVycycsIHUnU3RyZWFtUmVmJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleS4gQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJvdy4nKSwKLSh1J01zaVBhdGNoSGVhZGVycycsIHUnSGVhZGVyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdCaW5hcnknLCBOb25lLCB1J0JpbmFyeSBzdHJlYW0uIFRoZSBwYXRjaCBoZWFkZXIsIHVzZWQgZm9yIHBhdGNoIHZhbGlkYXRpb24uJyksCi0odSdPREJDQXR0cmlidXRlJywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVmFsdWUgZm9yIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScpLAotKHUnT0RCQ0F0dHJpYnV0ZScsIHUnQXR0cmlidXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdOYW1lIG9mIE9EQkMgZHJpdmVyIGF0dHJpYnV0ZScpLAotKHUnT0RCQ0F0dHJpYnV0ZScsIHUnRHJpdmVyXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnT0RCQ0RyaXZlcicsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIE9EQkMgZHJpdmVyIGluIE9EQkNEcml2ZXIgdGFibGUnKSwKLSh1J09EQkNEcml2ZXInLCB1J0Rlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUZXh0IHVzZWQgYXMgcmVnaXN0ZXJlZCBuYW1lIGZvciBkcml2ZXIsIG5vbi1sb2NhbGl6ZWQnKSwKLSh1J09EQkNEcml2ZXInLCB1J0ZpbGVfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdSZWZlcmVuY2UgdG8ga2V5IGRyaXZlciBmaWxlJyksCi0odSdPREJDRHJpdmVyJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcpLAotKHUnT0RCQ0RyaXZlcicsIHUnRHJpdmVyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgZHJpdmVyJyksCi0odSdPREJDRHJpdmVyJywgdSdGaWxlX1NldHVwJywgdSdZJywgTm9uZSwgTm9uZSwgdSdGaWxlJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbCByZWZlcmVuY2UgdG8ga2V5IGRyaXZlciBzZXR1cCBETEwnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdEZXNjcmlwdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGV4dCB1c2VkIGFzIHJlZ2lzdGVyZWQgbmFtZSBmb3IgZGF0YSBzb3VyY2UnKSwKLSh1J09EQkNEYXRhU291cmNlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLCB1J0RhdGFTb3VyY2UnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkLmludGVybmFsIHRva2VuIGZvciBkYXRhIHNvdXJjZScpLAotKHUnT0RCQ0RhdGFTb3VyY2UnLCB1J0RyaXZlckRlc2NyaXB0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdSZWZlcmVuY2UgdG8gZHJpdmVyIGRlc2NyaXB0aW9uLCBtYXkgYmUgZXhpc3RpbmcgZHJpdmVyJyksCi0odSdPREJDRGF0YVNvdXJjZScsIHUnUmVnaXN0cmF0aW9uJywgdSdOJywgMCwgMSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdpc3RyYXRpb24gb3B0aW9uOiAwPW1hY2hpbmUsIDE9dXNlciwgb3RoZXJzIHQuYi5kLicpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsIHUnVmFsdWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1ZhbHVlIGZvciBPREJDIGRhdGEgc291cmNlIGF0dHJpYnV0ZScpLAotKHUnT0RCQ1NvdXJjZUF0dHJpYnV0ZScsIHUnQXR0cmlidXRlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdOYW1lIG9mIE9EQkMgZGF0YSBzb3VyY2UgYXR0cmlidXRlJyksCi0odSdPREJDU291cmNlQXR0cmlidXRlJywgdSdEYXRhU291cmNlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnT0RCQ0RhdGFTb3VyY2UnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBPREJDIGRhdGEgc291cmNlIGluIE9EQkNEYXRhU291cmNlIHRhYmxlJyksCi0odSdPREJDVHJhbnNsYXRvcicsIHUnRGVzY3JpcHRpb24nLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RleHQgdXNlZCBhcyByZWdpc3RlcmVkIG5hbWUgZm9yIHRyYW5zbGF0b3InKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmlsZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVmZXJlbmNlIHRvIGtleSB0cmFuc2xhdG9yIGZpbGUnKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlZmVyZW5jZSB0byBhc3NvY2lhdGVkIGNvbXBvbmVudCcpLAotKHUnT0RCQ1RyYW5zbGF0b3InLCB1J0ZpbGVfU2V0dXAnLCB1J1knLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J09wdGlvbmFsIHJlZmVyZW5jZSB0byBrZXkgdHJhbnNsYXRvciBzZXR1cCBETEwnKSwKLSh1J09EQkNUcmFuc2xhdG9yJywgdSdUcmFuc2xhdG9yJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZC5pbnRlcm5hbCB0b2tlbiBmb3IgdHJhbnNsYXRvcicpLAotKHUnUGF0Y2gnLCB1J1NlcXVlbmNlJywgdSdOJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUHJpbWFyeSBrZXksIHNlcXVlbmNlIHdpdGggcmVzcGVjdCB0byB0aGUgbWVkaWEgaW1hZ2VzOyBvcmRlciBtdXN0IHRyYWNrIGNhYmluZXQgb3JkZXIuJyksCi0odSdQYXRjaCcsIHUnQXR0cmlidXRlcycsIHUnTicsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ludGVnZXIgY29udGFpbmluZyBiaXQgZmxhZ3MgcmVwcmVzZW50aW5nIHBhdGNoIGF0dHJpYnV0ZXMnKSwKLSh1J1BhdGNoJywgdSdGaWxlXycsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4sIGZvcmVpZ24ga2V5IHRvIEZpbGUgdGFibGUsIG11c3QgbWF0Y2ggaWRlbnRpZmllciBpbiBjYWJpbmV0LicpLAotKHUnUGF0Y2gnLCB1J0hlYWRlcicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQmluYXJ5JywgTm9uZSwgdSdCaW5hcnkgc3RyZWFtLiBUaGUgcGF0Y2ggaGVhZGVyLCB1c2VkIGZvciBwYXRjaCB2YWxpZGF0aW9uLicpLAotKHUnUGF0Y2gnLCB1J1BhdGNoU2l6ZScsIHUnTicsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2l6ZSBvZiBwYXRjaCBpbiBieXRlcyAobG9uZyBpbnRlZ2VyKS4nKSwKLSh1J1BhdGNoJywgdSdTdHJlYW1SZWZfJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdJZGVudGlmaWVyLiBGb3JlaWduIGtleSB0byB0aGUgU3RyZWFtUmVmIGNvbHVtbiBvZiB0aGUgTXNpUGF0Y2hIZWFkZXJzIHRhYmxlLicpLAotKHUnUGF0Y2hQYWNrYWdlJywgdSdNZWRpYV8nLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JlaWduIGtleSB0byBEaXNrSWQgY29sdW1uIG9mIE1lZGlhIHRhYmxlLiBJbmRpY2F0ZXMgdGhlIGRpc2sgY29udGFpbmluZyB0aGUgcGF0Y2ggcGFja2FnZS4nKSwKLSh1J1BhdGNoUGFja2FnZScsIHUnUGF0Y2hJZCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnQSB1bmlxdWUgc3RyaW5nIEdVSUQgcmVwcmVzZW50aW5nIHRoaXMgcGF0Y2guJyksCi0odSdQdWJsaXNoQ29tcG9uZW50JywgdSdGZWF0dXJlXycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRmVhdHVyZScsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgRmVhdHVyZSB0YWJsZS4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlLicpLAotKHUnUHVibGlzaENvbXBvbmVudCcsIHUnQ29tcG9uZW50SWQnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0d1aWQnLCBOb25lLCB1J0Egc3RyaW5nIEdVSUQgdGhhdCByZXByZXNlbnRzIHRoZSBjb21wb25lbnQgaWQgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCBieSB0aGUgYWxpZW4gcHJvZHVjdC4nKSwKLSh1J1B1Ymxpc2hDb21wb25lbnQnLCB1J0FwcERhdGEnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoaXMgaXMgbG9jYWxpc2FibGUgQXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YSB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBRdWFsaWZpZWQgQ29tcG9uZW50LicpLAotKHUnUHVibGlzaENvbXBvbmVudCcsIHUnUXVhbGlmaWVyJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGlzIGlzIGRlZmluZWQgb25seSB3aGVuIHRoZSBDb21wb25lbnRJZCBjb2x1bW4gaXMgYW4gUXVhbGlmaWVkIENvbXBvbmVudCBJZC4gVGhpcyBpcyB0aGUgUXVhbGlmaWVyIGZvciBQcm92aWRlQ29tcG9uZW50SW5kaXJlY3QuJyksCi0odSdSZWdpc3RyeScsIHUnTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUgbmFtZS4nKSwKLSh1J1JlZ2lzdHJ5JywgdSdWYWx1ZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZWdpc3RyeScsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJywgTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZWdpc3RyeScsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgcmVmZXJlbmNpbmcgY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGluc3RhbGxpbmcgb2YgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVnaXN0cnknLCB1J1JlZ2lzdHJ5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1JlZ2lzdHJ5JywgdSdSb290JywgdSdOJywgLTEsIDMsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHByZWRlZmluZWQgcm9vdCBrZXkgZm9yIHRoZSByZWdpc3RyeSB2YWx1ZSwgb25lIG9mIHJya0VudW0uJyksCi0odSdSZWdMb2NhdG9yJywgdSdOYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicpLAotKHUnUmVnTG9jYXRvcicsIHUnVHlwZScsIHUnWScsIDAsIDE4LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0FuIGludGVnZXIgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSByZWdpc3RyeSB2YWx1ZSBpcyBhIGZpbGVuYW1lIG9yIGEgZGlyZWN0b3J5IGxvY2F0aW9uIG9yIHRvIGJlIHVzZWQgYXMgaXMgdy9vIGludGVycHJldGF0aW9uLicpLAotKHUnUmVnTG9jYXRvcicsIHUnS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdSZWdQYXRoJywgTm9uZSwgdSdUaGUga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZWdMb2NhdG9yJywgdSdTaWduYXR1cmVfJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdUaGUgdGFibGUga2V5LiBUaGUgU2lnbmF0dXJlXyByZXByZXNlbnRzIGEgdW5pcXVlIGZpbGUgc2lnbmF0dXJlIGFuZCBpcyBhbHNvIHRoZSBmb3JlaWduIGtleSBpbiB0aGUgU2lnbmF0dXJlIHRhYmxlLiBJZiB0aGUgdHlwZSBpcyAwLCB0aGUgcmVnaXN0cnkgdmFsdWVzIHJlZmVycyBhIGRpcmVjdG9yeSwgYW5kIF9TaWduYXR1cmUgaXMgbm90IGEgZm9yZWlnbiBrZXkuJyksCi0odSdSZWdMb2NhdG9yJywgdSdSb290JywgdSdOJywgMCwgMywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgcHJlZGVmaW5lZCByb290IGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLCBvbmUgb2YgcnJrRW51bS4nKSwKLSh1J1JlbW92ZUZpbGUnLCB1J0luc3RhbGxNb2RlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScxOzI7MycsIHUnSW5zdGFsbGF0aW9uIG9wdGlvbiwgb25lIG9mIGlpbUVudW0uJyksCi0odSdSZW1vdmVGaWxlJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IHJlZmVyZW5jaW5nIENvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBmaWxlIHRvIGJlIHJlbW92ZWQuJyksCi0odSdSZW1vdmVGaWxlJywgdSdGaWxlS2V5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSB1c2VkIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmaWxlIGVudHJ5JyksCi0odSdSZW1vdmVGaWxlJywgdSdGaWxlTmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnV2lsZENhcmRGaWxlbmFtZScsIE5vbmUsIHUnTmFtZSBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicpLAotKHUnUmVtb3ZlRmlsZScsIHUnRGlyUHJvcGVydHknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aG5hbWUgdG8gdGhlIGZvbGRlciBvZiB0aGUgZmlsZSB0byBiZSByZW1vdmVkLicpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnQWN0aW9uJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdScyOzQnLCB1J1RoZSB0eXBlIG9mIG1vZGlmaWNhdGlvbiB0byBiZSBtYWRlLCBvbmUgb2YgaWlmRW51bS4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J1ZhbHVlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSB2YWx1ZSB0byBiZSBkZWxldGVkLiBUaGUgdmFsdWUgaXMgcmVxdWlyZWQgd2hlbiBBY3Rpb24gaXMgaWlmSW5pUmVtb3ZlVGFnJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdLZXknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBrZXkgYmVsb3cgU2VjdGlvbi4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkZWxldGlvbiBvZiB0aGUgLklOSSB2YWx1ZS4nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0ZpbGVOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGaWxlbmFtZScsIE5vbmUsIHUnVGhlIC5JTkkgZmlsZSBuYW1lIGluIHdoaWNoIHRvIGRlbGV0ZSB0aGUgaW5mb3JtYXRpb24nKSwKLSh1J1JlbW92ZUluaUZpbGUnLCB1J0RpclByb3BlcnR5JywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgLklOSSBmaWxlIGlzLicpLAotKHUnUmVtb3ZlSW5pRmlsZScsIHUnU2VjdGlvbicsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdUaGUgLklOSSBmaWxlIFNlY3Rpb24uJyksCi0odSdSZW1vdmVJbmlGaWxlJywgdSdSZW1vdmVJbmlGaWxlJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdQcmltYXJ5IGtleSwgbm9uLWxvY2FsaXplZCB0b2tlbi4nKSwKLSh1J1JlbW92ZVJlZ2lzdHJ5JywgdSdOYW1lJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSByZWdpc3RyeSB2YWx1ZSBuYW1lLicpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J0tleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnUmVnUGF0aCcsIE5vbmUsIHUnVGhlIGtleSBmb3IgdGhlIHJlZ2lzdHJ5IHZhbHVlLicpLAotKHUnUmVtb3ZlUmVnaXN0cnknLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnRm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IHRhYmxlIHJlZmVyZW5jaW5nIGNvbXBvbmVudCB0aGF0IGNvbnRyb2xzIHRoZSBkZWxldGlvbiBvZiB0aGUgcmVnaXN0cnkgdmFsdWUuJyksCi0odSdSZW1vdmVSZWdpc3RyeScsIHUnUm9vdCcsIHUnTicsIC0xLCAzLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBwcmVkZWZpbmVkIHJvb3Qga2V5IGZvciB0aGUgcmVnaXN0cnkgdmFsdWUsIG9uZSBvZiBycmtFbnVtJyksCi0odSdSZW1vdmVSZWdpc3RyeScsIHUnUmVtb3ZlUmVnaXN0cnknLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVzZXJ2ZSBhIHNwZWNpZmllZCBhbW91bnQgb2Ygc3BhY2UgaWYgdGhpcyBjb21wb25lbnQgaXMgdG8gYmUgaW5zdGFsbGVkLicpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J1Jlc2VydmVGb2xkZXInLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J05hbWUgb2YgYSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhc3N1bWVkIHRvIHJlc29sdmUgdG8gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5JyksCi0odSdSZXNlcnZlQ29zdCcsIHUnUmVzZXJ2ZUtleScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXkgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIGEgcGFydGljdWxhciBSZXNlcnZlQ29zdCByZWNvcmQnKSwKLSh1J1Jlc2VydmVDb3N0JywgdSdSZXNlcnZlTG9jYWwnLCB1J04nLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCBsb2NhbGx5LicpLAotKHUnUmVzZXJ2ZUNvc3QnLCB1J1Jlc2VydmVTb3VyY2UnLCB1J04nLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Rpc2sgc3BhY2UgdG8gcmVzZXJ2ZSBpZiBsaW5rZWQgY29tcG9uZW50IGlzIGluc3RhbGxlZCB0byBydW4gZnJvbSB0aGUgc291cmNlIGxvY2F0aW9uLicpLAotKHUnU2VsZlJlZycsIHUnRmlsZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZpbGUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J0ZvcmVpZ24ga2V5IGludG8gdGhlIEZpbGUgdGFibGUgZGVub3RpbmcgdGhlIG1vZHVsZSB0aGF0IG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQuJyksCi0odSdTZWxmUmVnJywgdSdDb3N0JywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3Qgb2YgcmVnaXN0ZXJpbmcgdGhlIG1vZHVsZS4nKSwKLSh1J1NlcnZpY2VDb250cm9sJywgdSdOYW1lJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J05hbWUgb2YgYSBzZXJ2aWNlLiAvLCBcXCwgY29tbWEgYW5kIHNwYWNlIGFyZSBpbnZhbGlkJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnRXZlbnQnLCB1J04nLCAwLCAxODcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQml0IGZpZWxkOiAgSW5zdGFsbDogIDB4MSA9IFN0YXJ0LCAweDIgPSBTdG9wLCAweDggPSBEZWxldGUsIFVuaW5zdGFsbDogMHgxMCA9IFN0YXJ0LCAweDIwID0gU3RvcCwgMHg4MCA9IERlbGV0ZScpLAotKHUnU2VydmljZUNvbnRyb2wnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1NlcnZpY2VDb250cm9sJywgdSdTZXJ2aWNlQ29udHJvbCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnQXJndW1lbnRzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0FyZ3VtZW50cyBmb3IgdGhlIHNlcnZpY2UuICBTZXBhcmF0ZSBieSBbfl0uJyksCi0odSdTZXJ2aWNlQ29udHJvbCcsIHUnV2FpdCcsIHUnWScsIDAsIDEsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnQm9vbGVhbiBmb3Igd2hldGhlciB0byB3YWl0IGZvciB0aGUgc2VydmljZSB0byBmdWxseSBzdGFydCcpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnSW50ZXJuYWwgTmFtZSBvZiB0aGUgU2VydmljZScpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdEZXNjcmlwdGlvbiBvZiBzZXJ2aWNlLicpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0NvbXBvbmVudF8nLCB1J04nLCBOb25lLCBOb25lLCB1J0NvbXBvbmVudCcsIDEsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUmVxdWlyZWQgZm9yZWlnbiBrZXkgaW50byB0aGUgQ29tcG9uZW50IFRhYmxlIHRoYXQgY29udHJvbHMgdGhlIHN0YXJ0dXAgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdBcmd1bWVudHMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnQXJndW1lbnRzIHRvIGluY2x1ZGUgaW4gZXZlcnkgc3RhcnQgb2YgdGhlIHNlcnZpY2UsIHBhc3NlZCB0byBXaW5NYWluJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnU2VydmljZUluc3RhbGwnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1ByaW1hcnkga2V5LCBub24tbG9jYWxpemVkIHRva2VuLicpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0RlcGVuZGVuY2llcycsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdPdGhlciBzZXJ2aWNlcyB0aGlzIGRlcGVuZHMgb24gdG8gc3RhcnQuICBTZXBhcmF0ZSBieSBbfl0sIGFuZCBlbmQgd2l0aCBbfl1bfl0nKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdEaXNwbGF5TmFtZScsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRm9ybWF0dGVkJywgTm9uZSwgdSdFeHRlcm5hbCBOYW1lIG9mIHRoZSBTZXJ2aWNlJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnRXJyb3JDb250cm9sJywgdSdOJywgLTIxNDc0ODM2NDcsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2V2ZXJpdHkgb2YgZXJyb3IgaWYgc2VydmljZSBmYWlscyB0byBzdGFydCcpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J0xvYWRPcmRlckdyb3VwJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J0xvYWRPcmRlckdyb3VwJyksCi0odSdTZXJ2aWNlSW5zdGFsbCcsIHUnUGFzc3dvcmQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUncGFzc3dvcmQgdG8gcnVuIHNlcnZpY2Ugd2l0aC4gICh3aXRoIFN0YXJ0TmFtZSknKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdTZXJ2aWNlVHlwZScsIHUnTicsIC0yMTQ3NDgzNjQ3LCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1R5cGUgb2YgdGhlIHNlcnZpY2UnKSwKLSh1J1NlcnZpY2VJbnN0YWxsJywgdSdTdGFydE5hbWUnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVXNlciBvciBvYmplY3QgbmFtZSB0byBydW4gc2VydmljZSBhcycpLAotKHUnU2VydmljZUluc3RhbGwnLCB1J1N0YXJ0VHlwZScsIHUnTicsIDAsIDQsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVHlwZSBvZiB0aGUgc2VydmljZScpLAotKHUnU2hvcnRjdXQnLCB1J05hbWUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0ZpbGVuYW1lJywgTm9uZSwgdSdUaGUgbmFtZSBvZiB0aGUgc2hvcnRjdXQgdG8gYmUgY3JlYXRlZC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdEZXNjcmlwdGlvbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnQ29tcG9uZW50XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnQ29tcG9uZW50JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBDb21wb25lbnQgdGFibGUgZGVub3RpbmcgdGhlIGNvbXBvbmVudCB3aG9zZSBzZWxlY3Rpb24gZ2F0ZXMgdGhlIHNob3J0Y3V0IGNyZWF0aW9uL2RlbGV0aW9uLicpLAotKHUnU2hvcnRjdXQnLCB1J0ljb25fJywgdSdZJywgTm9uZSwgTm9uZSwgdSdJY29uJywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBGaWxlIHRhYmxlIGRlbm90aW5nIHRoZSBleHRlcm5hbCBpY29uIGZpbGUgZm9yIHRoZSBzaG9ydGN1dC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdJY29uSW5kZXgnLCB1J1knLCAtMzI3NjcsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBpY29uIGluZGV4IGZvciB0aGUgc2hvcnRjdXQuJyksCi0odSdTaG9ydGN1dCcsIHUnRGlyZWN0b3J5XycsIHUnTicsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdGb3JlaWduIGtleSBpbnRvIHRoZSBEaXJlY3RvcnkgdGFibGUgZGVub3RpbmcgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2hvcnRjdXQgZmlsZSBpcyBjcmVhdGVkLicpLAotKHUnU2hvcnRjdXQnLCB1J1RhcmdldCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnU2hvcnRjdXQnLCBOb25lLCB1J1RoZSBzaG9ydGN1dCB0YXJnZXQuIFRoaXMgaXMgdXN1YWxseSBhIHByb3BlcnR5IHRoYXQgaXMgZXhwYW5kZWQgdG8gYSBmaWxlIG9yIGEgZm9sZGVyIHRoYXQgdGhlIHNob3J0Y3V0IHBvaW50cyB0by4nKSwKLSh1J1Nob3J0Y3V0JywgdSdBcmd1bWVudHMnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgZm9yIHRoZSBzaG9ydGN1dC4nKSwKLSh1J1Nob3J0Y3V0JywgdSdTaG9ydGN1dCcsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnSWRlbnRpZmllcicsIE5vbmUsIHUnUHJpbWFyeSBrZXksIG5vbi1sb2NhbGl6ZWQgdG9rZW4uJyksCi0odSdTaG9ydGN1dCcsIHUnSG90a2V5JywgdSdZJywgMCwgMzI3NjcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGhvdGtleSBmb3IgdGhlIHNob3J0Y3V0LiBJdCBoYXMgdGhlIHZpcnR1YWwta2V5IGNvZGUgZm9yIHRoZSBrZXkgaW4gdGhlIGxvdy1vcmRlciBieXRlLCBhbmQgdGhlIG1vZGlmaWVyIGZsYWdzIGluIHRoZSBoaWdoLW9yZGVyIGJ5dGUuICcpLAotKHUnU2hvcnRjdXQnLCB1J1Nob3dDbWQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1JzE7Mzs3JywgdSdUaGUgc2hvdyBjb21tYW5kIGZvciB0aGUgYXBwbGljYXRpb24gd2luZG93LlRoZSBmb2xsb3dpbmcgdmFsdWVzIG1heSBiZSB1c2VkLicpLAotKHUnU2hvcnRjdXQnLCB1J1drRGlyJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdOYW1lIG9mIHByb3BlcnR5IGRlZmluaW5nIGxvY2F0aW9uIG9mIHdvcmtpbmcgZGlyZWN0b3J5LicpLAotKHUnU2lnbmF0dXJlJywgdSdGaWxlTmFtZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnRmlsZW5hbWUnLCBOb25lLCB1J1RoZSBuYW1lIG9mIHRoZSBmaWxlLiBUaGlzIG1heSBjb250YWluIGEgInNob3J0IG5hbWV8bG9uZyBuYW1lIiBwYWlyLicpLAotKHUnU2lnbmF0dXJlJywgdSdTaWduYXR1cmUnLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1RoZSB0YWJsZSBrZXkuIFRoZSBTaWduYXR1cmUgcmVwcmVzZW50cyBhIHVuaXF1ZSBmaWxlIHNpZ25hdHVyZS4nKSwKLSh1J1NpZ25hdHVyZScsIHUnTGFuZ3VhZ2VzJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdMYW5ndWFnZScsIE5vbmUsIHUnVGhlIGxhbmd1YWdlcyBzdXBwb3J0ZWQgYnkgdGhlIGZpbGUuJyksCi0odSdTaWduYXR1cmUnLCB1J01heERhdGUnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIGNyZWF0aW9uIGRhdGUgb2YgdGhlIGZpbGUuJyksCi0odSdTaWduYXR1cmUnLCB1J01heFNpemUnLCB1J1knLCAwLCAyMTQ3NDgzNjQ3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGZpbGUuICcpLAotKHUnU2lnbmF0dXJlJywgdSdNYXhWZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbWF4aW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNaW5EYXRlJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBjcmVhdGlvbiBkYXRlIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNaW5TaXplJywgdSdZJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlLicpLAotKHUnU2lnbmF0dXJlJywgdSdNaW5WZXJzaW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgdSdUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBmaWxlLicpLAotKHUnVHlwZUxpYicsIHUnRmVhdHVyZV8nLCB1J04nLCBOb25lLCBOb25lLCB1J0ZlYXR1cmUnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIEZlYXR1cmUgVGFibGUsIHNwZWNpZnlpbmcgdGhlIGZlYXR1cmUgdG8gdmFsaWRhdGUgb3IgaW5zdGFsbCBpbiBvcmRlciBmb3IgdGhlIHR5cGUgbGlicmFyeSB0byBiZSBvcGVyYXRpb25hbC4nKSwKLSh1J1R5cGVMaWInLCB1J0Rlc2NyaXB0aW9uJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUZXh0JywgTm9uZSwgTm9uZSksCi0odSdUeXBlTGliJywgdSdDb21wb25lbnRfJywgdSdOJywgTm9uZSwgTm9uZSwgdSdDb21wb25lbnQnLCAxLCB1J0lkZW50aWZpZXInLCBOb25lLCB1J1JlcXVpcmVkIGZvcmVpZ24ga2V5IGludG8gdGhlIENvbXBvbmVudCBUYWJsZSwgc3BlY2lmeWluZyB0aGUgY29tcG9uZW50IGZvciB3aGljaCB0byByZXR1cm4gYSBwYXRoIHdoZW4gY2FsbGVkIHRocm91Z2ggTG9jYXRlQ29tcG9uZW50LicpLAotKHUnVHlwZUxpYicsIHUnRGlyZWN0b3J5XycsIHUnWScsIE5vbmUsIE5vbmUsIHUnRGlyZWN0b3J5JywgMSwgdSdJZGVudGlmaWVyJywgTm9uZSwgdSdPcHRpb25hbC4gVGhlIGZvcmVpZ24ga2V5IGludG8gdGhlIERpcmVjdG9yeSB0YWJsZSBkZW5vdGluZyB0aGUgcGF0aCB0byB0aGUgaGVscCBmaWxlIGZvciB0aGUgdHlwZSBsaWJyYXJ5LicpLAotKHUnVHlwZUxpYicsIHUnTGFuZ3VhZ2UnLCB1J04nLCAwLCAzMjc2NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgbGFuZ3VhZ2Ugb2YgdGhlIGxpYnJhcnkuJyksCi0odSdUeXBlTGliJywgdSdWZXJzaW9uJywgdSdZJywgMCwgMTY3NzcyMTUsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuIFRoZSBtaW5vciB2ZXJzaW9uIGlzIGluIHRoZSBsb3dlciA4IGJpdHMgb2YgdGhlIGludGVnZXIuIFRoZSBtYWpvciB2ZXJzaW9uIGlzIGluIHRoZSBuZXh0IDE2IGJpdHMuICcpLAotKHUnVHlwZUxpYicsIHUnQ29zdCcsIHUnWScsIDAsIDIxNDc0ODM2NDcsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGhlIGNvc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpc3RyYXRpb24gb2YgdGhlIHR5cGVsaWIuIFRoaXMgY29sdW1uIGlzIGN1cnJlbnRseSBvcHRpb25hbC4nKSwKLSh1J1R5cGVMaWInLCB1J0xpYklEJywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdHdWlkJywgTm9uZSwgdSdUaGUgR1VJRCB0aGF0IHJlcHJlc2VudHMgdGhlIGxpYnJhcnkuJyksCi0odSdVcGdyYWRlJywgdSdBdHRyaWJ1dGVzJywgdSdOJywgMCwgMjE0NzQ4MzY0NywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdUaGUgYXR0cmlidXRlcyBvZiB0aGlzIHByb2R1Y3Qgc2V0LicpLAotKHUnVXBncmFkZScsIHUnUmVtb3ZlJywgdSdZJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdGb3JtYXR0ZWQnLCBOb25lLCB1J1RoZSBsaXN0IG9mIGZlYXR1cmVzIHRvIHJlbW92ZSB3aGVuIHVuaW5zdGFsbGluZyBhIHByb2R1Y3QgZnJvbSB0aGlzIHNldC4gIFRoZSBkZWZhdWx0IGlzICJBTEwiLicpLAotKHUnVXBncmFkZScsIHUnTGFuZ3VhZ2UnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0xhbmd1YWdlJywgTm9uZSwgdSdBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGxhbmd1YWdlcyBmb3IgZWl0aGVyIHByb2R1Y3RzIGluIHRoaXMgc2V0IG9yIHByb2R1Y3RzIG5vdCBpbiB0aGlzIHNldC4nKSwKLSh1J1VwZ3JhZGUnLCB1J0FjdGlvblByb3BlcnR5JywgdSdOJywgTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSwgdSdVcHBlckNhc2UnLCBOb25lLCB1J1RoZSBwcm9wZXJ0eSB0byBzZXQgd2hlbiBhIHByb2R1Y3QgaW4gdGhpcyBzZXQgaXMgZm91bmQuJyksCi0odSdVcGdyYWRlJywgdSdVcGdyYWRlQ29kZScsIHUnTicsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnR3VpZCcsIE5vbmUsIHUnVGhlIFVwZ3JhZGVDb2RlIEdVSUQgYmVsb25naW5nIHRvIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4nKSwKLSh1J1VwZ3JhZGUnLCB1J1ZlcnNpb25NYXgnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSBtYXhpbXVtIFByb2R1Y3RWZXJzaW9uIG9mIHRoZSBwcm9kdWN0cyBpbiB0aGlzIHNldC4gIFRoZSBzZXQgbWF5IG9yIG1heSBub3QgaW5jbHVkZSBwcm9kdWN0cyB3aXRoIHRoaXMgcGFydGljdWxhciB2ZXJzaW9uLicpLAotKHUnVXBncmFkZScsIHUnVmVyc2lvbk1pbicsIHUnWScsIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIG1pbmltdW0gUHJvZHVjdFZlcnNpb24gb2YgdGhlIHByb2R1Y3RzIGluIHRoaXMgc2V0LiAgVGhlIHNldCBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIHByb2R1Y3RzIHdpdGggdGhpcyBwYXJ0aWN1bGFyIHZlcnNpb24uJyksCi0odSdWZXJiJywgdSdTZXF1ZW5jZScsIHUnWScsIDAsIDMyNzY3LCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J09yZGVyIHdpdGhpbiB0aGUgdmVyYnMgZm9yIGEgcGFydGljdWxhciBleHRlbnNpb24uIEFsc28gdXNlZCBzaW1wbHkgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB2ZXJiLicpLAotKHUnVmVyYicsIHUnQXJndW1lbnQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnT3B0aW9uYWwgdmFsdWUgZm9yIHRoZSBjb21tYW5kIGFyZ3VtZW50cy4nKSwKLSh1J1ZlcmInLCB1J0V4dGVuc2lvbl8nLCB1J04nLCBOb25lLCBOb25lLCB1J0V4dGVuc2lvbicsIDEsIHUnVGV4dCcsIE5vbmUsIHUnVGhlIGV4dGVuc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHRhYmxlIHJvdy4nKSwKLSh1J1ZlcmInLCB1J1ZlcmInLCB1J04nLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J1RleHQnLCBOb25lLCB1J1RoZSB2ZXJiIGZvciB0aGUgY29tbWFuZC4nKSwKLSh1J1ZlcmInLCB1J0NvbW1hbmQnLCB1J1knLCBOb25lLCBOb25lLCBOb25lLCBOb25lLCB1J0Zvcm1hdHRlZCcsIE5vbmUsIHUnVGhlIGNvbW1hbmQgdGV4dC4nKSwKLV0KLQotRXJyb3IgPSBbCi0oMCwgdSd7e0ZhdGFsIGVycm9yOiB9fScpLAotKDEsIHUne3tFcnJvciBbMV0uIH19JyksCi0oMiwgdSdXYXJuaW5nIFsxXS4gJyksCi0oMywgTm9uZSksCi0oNCwgdSdJbmZvIFsxXS4gJyksCi0oNSwgdSdUaGUgaW5zdGFsbGVyIGhhcyBlbmNvdW50ZXJlZCBhbiB1bmV4cGVjdGVkIGVycm9yIGluc3RhbGxpbmcgdGhpcyBwYWNrYWdlLiBUaGlzIG1heSBpbmRpY2F0ZSBhIHByb2JsZW0gd2l0aCB0aGlzIHBhY2thZ2UuIFRoZSBlcnJvciBjb2RlIGlzIFsxXS4ge3tUaGUgYXJndW1lbnRzIGFyZTogWzJdLCBbM10sIFs0XX19JyksCi0oNiwgTm9uZSksCi0oNywgdSd7e0Rpc2sgZnVsbDogfX0nKSwKLSg4LCB1J0FjdGlvbiBbVGltZV06IFsxXS4gWzJdJyksCi0oOSwgdSdbUHJvZHVjdE5hbWVdJyksCi0oMTAsIHUne1syXX17LCBbM119eywgWzRdfScpLAotKDExLCB1J01lc3NhZ2UgdHlwZTogWzFdLCBBcmd1bWVudDogWzJdJyksCi0oMTIsIHUnPT09IExvZ2dpbmcgc3RhcnRlZDogW0RhdGVdICBbVGltZV0gPT09JyksCi0oMTMsIHUnPT09IExvZ2dpbmcgc3RvcHBlZDogW0RhdGVdICBbVGltZV0gPT09JyksCi0oMTQsIHUnQWN0aW9uIHN0YXJ0IFtUaW1lXTogWzFdLicpLAotKDE1LCB1J0FjdGlvbiBlbmRlZCBbVGltZV06IFsxXS4gUmV0dXJuIHZhbHVlIFsyXS4nKSwKLSgxNiwgdSdUaW1lIHJlbWFpbmluZzoge1sxXSBtaW51dGVzIH17WzJdIHNlY29uZHN9JyksCi0oMTcsIHUnT3V0IG9mIG1lbW9yeS4gU2h1dCBkb3duIG90aGVyIGFwcGxpY2F0aW9ucyBiZWZvcmUgcmV0cnlpbmcuJyksCi0oMTgsIHUnSW5zdGFsbGVyIGlzIG5vIGxvbmdlciByZXNwb25kaW5nLicpLAotKDE5LCB1J0luc3RhbGxlciBzdG9wcGVkIHByZW1hdHVyZWx5LicpLAotKDIwLCB1J1BsZWFzZSB3YWl0IHdoaWxlIFdpbmRvd3MgY29uZmlndXJlcyBbUHJvZHVjdE5hbWVdJyksCi0oMjEsIHUnR2F0aGVyaW5nIHJlcXVpcmVkIGluZm9ybWF0aW9uLi4uJyksCi0oMjIsIHUnUmVtb3Zpbmcgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBhcHBsaWNhdGlvbi4uLicpLAotKDIzLCB1J1ByZXBhcmluZyB0byByZW1vdmUgb2xkZXIgdmVyc2lvbnMgb2YgdGhpcyBhcHBsaWNhdGlvbi4uLicpLAotKDMyLCB1J3tbUHJvZHVjdE5hbWVdIH1TZXR1cCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDMzLCB1J3tbUHJvZHVjdE5hbWVdIH1TZXR1cCBmYWlsZWQuJyksCi0oMTEwMSwgdSdFcnJvciByZWFkaW5nIGZyb20gZmlsZTogWzJdLiB7eyBTeXN0ZW0gZXJyb3IgWzNdLn19ICBWZXJpZnkgdGhhdCB0aGUgZmlsZSBleGlzdHMgYW5kIHRoYXQgeW91IGNhbiBhY2Nlc3MgaXQuJyksCi0oMTMwMSwgdSJDYW5ub3QgY3JlYXRlIHRoZSBmaWxlICdbMl0nLiAgQSBkaXJlY3Rvcnkgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuICBDYW5jZWwgdGhlIGluc3RhbGwgYW5kIHRyeSBpbnN0YWxsaW5nIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uLiIpLAotKDEzMDIsIHUnUGxlYXNlIGluc2VydCB0aGUgZGlzazogWzJdJyksCi0oMTMwMywgdSdUaGUgaW5zdGFsbGVyIGhhcyBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBhY2Nlc3MgdGhpcyBkaXJlY3Rvcnk6IFsyXS4gIFRoZSBpbnN0YWxsYXRpb24gY2Fubm90IGNvbnRpbnVlLiAgTG9nIG9uIGFzIGFkbWluaXN0cmF0b3Igb3IgY29udGFjdCB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yLicpLAotKDEzMDQsIHUnRXJyb3Igd3JpdGluZyB0byBmaWxlOiBbMl0uICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkuJyksCi0oMTMwNSwgdSdFcnJvciByZWFkaW5nIGZyb20gZmlsZSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMDYsIHUiQW5vdGhlciBhcHBsaWNhdGlvbiBoYXMgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgZmlsZSAnWzJdJy4gIFBsZWFzZSBzaHV0IGRvd24gYWxsIG90aGVyIGFwcGxpY2F0aW9ucywgdGhlbiBjbGljayBSZXRyeS4iKSwKLSgxMzA3LCB1J1RoZXJlIGlzIG5vdCBlbm91Z2ggZGlzayBzcGFjZSB0byBpbnN0YWxsIHRoaXMgZmlsZTogWzJdLiAgRnJlZSBzb21lIGRpc2sgc3BhY2UgYW5kIGNsaWNrIFJldHJ5LCBvciBjbGljayBDYW5jZWwgdG8gZXhpdC4nKSwKLSgxMzA4LCB1J1NvdXJjZSBmaWxlIG5vdCBmb3VuZDogWzJdLiAgVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMDksIHUnRXJyb3IgcmVhZGluZyBmcm9tIGZpbGU6IFszXS4ge3sgU3lzdGVtIGVycm9yIFsyXS59fSAgVmVyaWZ5IHRoYXQgdGhlIGZpbGUgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDEzMTAsIHUnRXJyb3Igd3JpdGluZyB0byBmaWxlOiBbM10uIHt7IFN5c3RlbSBlcnJvciBbMl0ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIGFjY2VzcyB0byB0aGF0IGRpcmVjdG9yeS4nKSwKLSgxMzExLCB1J1NvdXJjZSBmaWxlIG5vdCBmb3VuZHt7KGNhYmluZXQpfX06IFsyXS4gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxMzEyLCB1IkNhbm5vdCBjcmVhdGUgdGhlIGRpcmVjdG9yeSAnWzJdJy4gIEEgZmlsZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gIFBsZWFzZSByZW5hbWUgb3IgcmVtb3ZlIHRoZSBmaWxlIGFuZCBjbGljayByZXRyeSwgb3IgY2xpY2sgQ2FuY2VsIHRvIGV4aXQuIiksCi0oMTMxMywgdSdUaGUgdm9sdW1lIFsyXSBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuICBQbGVhc2Ugc2VsZWN0IGFub3RoZXIuJyksCi0oMTMxNCwgdSJUaGUgc3BlY2lmaWVkIHBhdGggJ1syXScgaXMgdW5hdmFpbGFibGUuIiksCi0oMTMxNSwgdSdVbmFibGUgdG8gd3JpdGUgdG8gdGhlIHNwZWNpZmllZCBmb2xkZXI6IFsyXS4nKSwKLSgxMzE2LCB1J0EgbmV0d29yayBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHJlYWQgZnJvbSB0aGUgZmlsZTogWzJdJyksCi0oMTMxNywgdSdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5OiBbMl0nKSwKLSgxMzE4LCB1J0EgbmV0d29yayBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5OiBbMl0nKSwKLSgxMzE5LCB1J0EgbmV0d29yayBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIG9wZW4gdGhlIHNvdXJjZSBmaWxlIGNhYmluZXQ6IFsyXScpLAotKDEzMjAsIHUnVGhlIHNwZWNpZmllZCBwYXRoIGlzIHRvbyBsb25nOiBbMl0nKSwKLSgxMzIxLCB1J1RoZSBJbnN0YWxsZXIgaGFzIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIG1vZGlmeSB0aGlzIGZpbGU6IFsyXS4nKSwKLSgxMzIyLCB1IkEgcG9ydGlvbiBvZiB0aGUgZm9sZGVyIHBhdGggJ1syXScgaXMgaW52YWxpZC4gIEl0IGlzIGVpdGhlciBlbXB0eSBvciBleGNlZWRzIHRoZSBsZW5ndGggYWxsb3dlZCBieSB0aGUgc3lzdGVtLiIpLAotKDEzMjMsIHUiVGhlIGZvbGRlciBwYXRoICdbMl0nIGNvbnRhaW5zIHdvcmRzIHRoYXQgYXJlIG5vdCB2YWxpZCBpbiBmb2xkZXIgcGF0aHMuIiksCi0oMTMyNCwgdSJUaGUgZm9sZGVyIHBhdGggJ1syXScgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXIuIiksCi0oMTMyNSwgdSInWzJdJyBpcyBub3QgYSB2YWxpZCBzaG9ydCBmaWxlIG5hbWUuIiksCi0oMTMyNiwgdSdFcnJvciBnZXR0aW5nIGZpbGUgc2VjdXJpdHk6IFszXSBHZXRMYXN0RXJyb3I6IFsyXScpLAotKDEzMjcsIHUnSW52YWxpZCBEcml2ZTogWzJdJyksCi0oMTMyOCwgdSdFcnJvciBhcHBseWluZyBwYXRjaCB0byBmaWxlIFsyXS4gIEl0IGhhcyBwcm9iYWJseSBiZWVuIHVwZGF0ZWQgYnkgb3RoZXIgbWVhbnMsIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIG1vZGlmaWVkIGJ5IHRoaXMgcGF0Y2guICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBjb250YWN0IHlvdXIgcGF0Y2ggdmVuZG9yLiAge3tTeXN0ZW0gRXJyb3I6IFszXX19JyksCi0oMTMyOSwgdSdBIGZpbGUgdGhhdCBpcyByZXF1aXJlZCBjYW5ub3QgYmUgaW5zdGFsbGVkIGJlY2F1c2UgdGhlIGNhYmluZXQgZmlsZSBbMl0gaXMgbm90IGRpZ2l0YWxseSBzaWduZWQuICBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSBjYWJpbmV0IGZpbGUgaXMgY29ycnVwdC4nKSwKLSgxMzMwLCB1J0EgZmlsZSB0aGF0IGlzIHJlcXVpcmVkIGNhbm5vdCBiZSBpbnN0YWxsZWQgYmVjYXVzZSB0aGUgY2FiaW5ldCBmaWxlIFsyXSBoYXMgYW4gaW52YWxpZCBkaWdpdGFsIHNpZ25hdHVyZS4gIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIGNhYmluZXQgZmlsZSBpcyBjb3JydXB0Lnt7ICBFcnJvciBbM10gd2FzIHJldHVybmVkIGJ5IFdpblZlcmlmeVRydXN0Ln19JyksCi0oMTMzMSwgdSdGYWlsZWQgdG8gY29ycmVjdGx5IGNvcHkgWzJdIGZpbGU6IENSQyBlcnJvci4nKSwKLSgxMzMyLCB1J0ZhaWxlZCB0byBjb3JyZWN0bHkgbW92ZSBbMl0gZmlsZTogQ1JDIGVycm9yLicpLAotKDEzMzMsIHUnRmFpbGVkIHRvIGNvcnJlY3RseSBwYXRjaCBbMl0gZmlsZTogQ1JDIGVycm9yLicpLAotKDEzMzQsIHUiVGhlIGZpbGUgJ1syXScgY2Fubm90IGJlIGluc3RhbGxlZCBiZWNhdXNlIHRoZSBmaWxlIGNhbm5vdCBiZSBmb3VuZCBpbiBjYWJpbmV0IGZpbGUgJ1szXScuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBuZXR3b3JrIGVycm9yLCBhbiBlcnJvciByZWFkaW5nIGZyb20gdGhlIENELVJPTSwgb3IgYSBwcm9ibGVtIHdpdGggdGhpcyBwYWNrYWdlLiIpLAotKDEzMzUsIHUiVGhlIGNhYmluZXQgZmlsZSAnWzJdJyByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsYXRpb24gaXMgY29ycnVwdCBhbmQgY2Fubm90IGJlIHVzZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBuZXR3b3JrIGVycm9yLCBhbiBlcnJvciByZWFkaW5nIGZyb20gdGhlIENELVJPTSwgb3IgYSBwcm9ibGVtIHdpdGggdGhpcyBwYWNrYWdlLiIpLAotKDEzMzYsIHUnVGhlcmUgd2FzIGFuIGVycm9yIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGZpbGUgdGhhdCBpcyBuZWVkZWQgdG8gY29tcGxldGUgdGhpcyBpbnN0YWxsYXRpb24ue3sgIEZvbGRlcjogWzNdLiBTeXN0ZW0gZXJyb3IgY29kZTogWzJdfX0nKSwKLSgxNDAxLCB1J0NvdWxkIG5vdCBjcmVhdGUga2V5OiBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuICcpLAotKDE0MDIsIHUnQ291bGQgbm90IG9wZW4ga2V5OiBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuICcpLAotKDE0MDMsIHUnQ291bGQgbm90IGRlbGV0ZSB2YWx1ZSBbMl0gZnJvbSBrZXkgWzNdLiB7eyBTeXN0ZW0gZXJyb3IgWzRdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDA0LCB1J0NvdWxkIG5vdCBkZWxldGUga2V5IFsyXS4ge3sgU3lzdGVtIGVycm9yIFszXS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4gJyksCi0oMTQwNSwgdSdDb3VsZCBub3QgcmVhZCB2YWx1ZSBbMl0gZnJvbSBrZXkgWzNdLiB7eyBTeXN0ZW0gZXJyb3IgWzRdLn19ICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGFjY2VzcyB0byB0aGF0IGtleSwgb3IgY29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLiAnKSwKLSgxNDA2LCB1J0NvdWxkIG5vdCB3cml0ZSB2YWx1ZSBbMl0gdG8ga2V5IFszXS4ge3sgU3lzdGVtIGVycm9yIFs0XS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxNDA3LCB1J0NvdWxkIG5vdCBnZXQgdmFsdWUgbmFtZXMgZm9yIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQwOCwgdSdDb3VsZCBub3QgZ2V0IHN1YiBrZXkgbmFtZXMgZm9yIGtleSBbMl0uIHt7IFN5c3RlbSBlcnJvciBbM10ufX0gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgYWNjZXNzIHRvIHRoYXQga2V5LCBvciBjb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTQwOSwgdSdDb3VsZCBub3QgcmVhZCBzZWN1cml0eSBpbmZvcm1hdGlvbiBmb3Iga2V5IFsyXS4ge3sgU3lzdGVtIGVycm9yIFszXS59fSAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBhY2Nlc3MgdG8gdGhhdCBrZXksIG9yIGNvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxNDEwLCB1J0NvdWxkIG5vdCBpbmNyZWFzZSB0aGUgYXZhaWxhYmxlIHJlZ2lzdHJ5IHNwYWNlLiBbMl0gS0Igb2YgZnJlZSByZWdpc3RyeSBzcGFjZSBpcyByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGlzIGFwcGxpY2F0aW9uLicpLAotKDE1MDAsIHUnQW5vdGhlciBpbnN0YWxsYXRpb24gaXMgaW4gcHJvZ3Jlc3MuIFlvdSBtdXN0IGNvbXBsZXRlIHRoYXQgaW5zdGFsbGF0aW9uIGJlZm9yZSBjb250aW51aW5nIHRoaXMgb25lLicpLAotKDE1MDEsIHUnRXJyb3IgYWNjZXNzaW5nIHNlY3VyZWQgZGF0YS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgV2luZG93cyBJbnN0YWxsZXIgaXMgY29uZmlndXJlZCBwcm9wZXJseSBhbmQgdHJ5IHRoZSBpbnN0YWxsIGFnYWluLicpLAotKDE1MDIsIHUiVXNlciAnWzJdJyBoYXMgcHJldmlvdXNseSBpbml0aWF0ZWQgYW4gaW5zdGFsbCBmb3IgcHJvZHVjdCAnWzNdJy4gIFRoYXQgdXNlciB3aWxsIG5lZWQgdG8gcnVuIHRoYXQgaW5zdGFsbCBhZ2FpbiBiZWZvcmUgdGhleSBjYW4gdXNlIHRoYXQgcHJvZHVjdC4gIFlvdXIgY3VycmVudCBpbnN0YWxsIHdpbGwgbm93IGNvbnRpbnVlLiIpLAotKDE1MDMsIHUiVXNlciAnWzJdJyBoYXMgcHJldmlvdXNseSBpbml0aWF0ZWQgYW4gaW5zdGFsbCBmb3IgcHJvZHVjdCAnWzNdJy4gIFRoYXQgdXNlciB3aWxsIG5lZWQgdG8gcnVuIHRoYXQgaW5zdGFsbCBhZ2FpbiBiZWZvcmUgdGhleSBjYW4gdXNlIHRoYXQgcHJvZHVjdC4iKSwKLSgxNjAxLCB1Ik91dCBvZiBkaXNrIHNwYWNlIC0tIFZvbHVtZTogJ1syXSc7IHJlcXVpcmVkIHNwYWNlOiBbM10gS0I7IGF2YWlsYWJsZSBzcGFjZTogWzRdIEtCLiAgRnJlZSBzb21lIGRpc2sgc3BhY2UgYW5kIHJldHJ5LiIpLAotKDE2MDIsIHUnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNhbmNlbD8nKSwKLSgxNjAzLCB1IlRoZSBmaWxlIFsyXVszXSBpcyBiZWluZyBoZWxkIGluIHVzZXsgYnkgdGhlIGZvbGxvd2luZyBwcm9jZXNzOiBOYW1lOiBbNF0sIElkOiBbNV0sIFdpbmRvdyBUaXRsZTogJ1s2XSd9LiAgQ2xvc2UgdGhhdCBhcHBsaWNhdGlvbiBhbmQgcmV0cnkuIiksCi0oMTYwNCwgdSJUaGUgcHJvZHVjdCAnWzJdJyBpcyBhbHJlYWR5IGluc3RhbGxlZCwgcHJldmVudGluZyB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoaXMgcHJvZHVjdC4gIFRoZSB0d28gcHJvZHVjdHMgYXJlIGluY29tcGF0aWJsZS4iKSwKLSgxNjA1LCB1IlRoZXJlIGlzIG5vdCBlbm91Z2ggZGlzayBzcGFjZSBvbiB0aGUgdm9sdW1lICdbMl0nIHRvIGNvbnRpbnVlIHRoZSBpbnN0YWxsIHdpdGggcmVjb3ZlcnkgZW5hYmxlZC4gWzNdIEtCIGFyZSByZXF1aXJlZCwgYnV0IG9ubHkgWzRdIEtCIGFyZSBhdmFpbGFibGUuIENsaWNrIElnbm9yZSB0byBjb250aW51ZSB0aGUgaW5zdGFsbCB3aXRob3V0IHNhdmluZyByZWNvdmVyeSBpbmZvcm1hdGlvbiwgY2xpY2sgUmV0cnkgdG8gY2hlY2sgZm9yIGF2YWlsYWJsZSBzcGFjZSBhZ2Fpbiwgb3IgY2xpY2sgQ2FuY2VsIHRvIHF1aXQgdGhlIGluc3RhbGxhdGlvbi4iKSwKLSgxNjA2LCB1J0NvdWxkIG5vdCBhY2Nlc3MgbmV0d29yayBsb2NhdGlvbiBbMl0uJyksCi0oMTYwNywgdSdUaGUgZm9sbG93aW5nIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgY2xvc2VkIGJlZm9yZSBjb250aW51aW5nIHRoZSBpbnN0YWxsOicpLAotKDE2MDgsIHUnQ291bGQgbm90IGZpbmQgYW55IHByZXZpb3VzbHkgaW5zdGFsbGVkIGNvbXBsaWFudCBwcm9kdWN0cyBvbiB0aGUgbWFjaGluZSBmb3IgaW5zdGFsbGluZyB0aGlzIHByb2R1Y3QuJyksCi0oMTYwOSwgdSJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhcHBseWluZyBzZWN1cml0eSBzZXR0aW5ncy4gWzJdIGlzIG5vdCBhIHZhbGlkIHVzZXIgb3IgZ3JvdXAuIFRoaXMgY291bGQgYmUgYSBwcm9ibGVtIHdpdGggdGhlIHBhY2thZ2UsIG9yIGEgcHJvYmxlbSBjb25uZWN0aW5nIHRvIGEgZG9tYWluIGNvbnRyb2xsZXIgb24gdGhlIG5ldHdvcmsuIENoZWNrIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGFuZCBjbGljayBSZXRyeSwgb3IgQ2FuY2VsIHRvIGVuZCB0aGUgaW5zdGFsbC4ge3tVbmFibGUgdG8gbG9jYXRlIHRoZSB1c2VyJ3MgU0lELCBzeXN0ZW0gZXJyb3IgWzNdfX0iKSwKLSgxNzAxLCB1J1RoZSBrZXkgWzJdIGlzIG5vdCB2YWxpZC4gIFZlcmlmeSB0aGF0IHlvdSBlbnRlcmVkIHRoZSBjb3JyZWN0IGtleS4nKSwKLSgxNzAyLCB1J1RoZSBpbnN0YWxsZXIgbXVzdCByZXN0YXJ0IHlvdXIgc3lzdGVtIGJlZm9yZSBjb25maWd1cmF0aW9uIG9mIFsyXSBjYW4gY29udGludWUuICBDbGljayBZZXMgdG8gcmVzdGFydCBub3cgb3IgTm8gaWYgeW91IHBsYW4gdG8gbWFudWFsbHkgcmVzdGFydCBsYXRlci4nKSwKLSgxNzAzLCB1J1lvdSBtdXN0IHJlc3RhcnQgeW91ciBzeXN0ZW0gZm9yIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgbWFkZSB0byBbMl0gdG8gdGFrZSBlZmZlY3QuIENsaWNrIFllcyB0byByZXN0YXJ0IG5vdyBvciBObyBpZiB5b3UgcGxhbiB0byBtYW51YWxseSByZXN0YXJ0IGxhdGVyLicpLAotKDE3MDQsIHUnQW4gaW5zdGFsbGF0aW9uIGZvciBbMl0gaXMgY3VycmVudGx5IHN1c3BlbmRlZC4gIFlvdSBtdXN0IHVuZG8gdGhlIGNoYW5nZXMgbWFkZSBieSB0aGF0IGluc3RhbGxhdGlvbiB0byBjb250aW51ZS4gIERvIHlvdSB3YW50IHRvIHVuZG8gdGhvc2UgY2hhbmdlcz8nKSwKLSgxNzA1LCB1J0EgcHJldmlvdXMgaW5zdGFsbGF0aW9uIGZvciB0aGlzIHByb2R1Y3QgaXMgaW4gcHJvZ3Jlc3MuICBZb3UgbXVzdCB1bmRvIHRoZSBjaGFuZ2VzIG1hZGUgYnkgdGhhdCBpbnN0YWxsYXRpb24gdG8gY29udGludWUuICBEbyB5b3Ugd2FudCB0byB1bmRvIHRob3NlIGNoYW5nZXM/JyksCi0oMTcwNiwgdSJBbiBpbnN0YWxsYXRpb24gcGFja2FnZSBmb3IgdGhlIHByb2R1Y3QgWzJdIGNhbm5vdCBiZSBmb3VuZC4gVHJ5IHRoZSBpbnN0YWxsYXRpb24gYWdhaW4gdXNpbmcgYSB2YWxpZCBjb3B5IG9mIHRoZSBpbnN0YWxsYXRpb24gcGFja2FnZSAnWzNdJy4iKSwKLSgxNzA3LCB1J0luc3RhbGxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDE3MDgsIHUnSW5zdGFsbGF0aW9uIGZhaWxlZC4nKSwKLSgxNzA5LCB1J1Byb2R1Y3Q6IFsyXSAtLSBbM10nKSwKLSgxNzEwLCB1J1lvdSBtYXkgZWl0aGVyIHJlc3RvcmUgeW91ciBjb21wdXRlciB0byBpdHMgcHJldmlvdXMgc3RhdGUgb3IgY29udGludWUgdGhlIGluc3RhbGwgbGF0ZXIuIFdvdWxkIHlvdSBsaWtlIHRvIHJlc3RvcmU/JyksCi0oMTcxMSwgdSdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB3cml0aW5nIGluc3RhbGxhdGlvbiBpbmZvcm1hdGlvbiB0byBkaXNrLiAgQ2hlY2sgdG8gbWFrZSBzdXJlIGVub3VnaCBkaXNrIHNwYWNlIGlzIGF2YWlsYWJsZSwgYW5kIGNsaWNrIFJldHJ5LCBvciBDYW5jZWwgdG8gZW5kIHRoZSBpbnN0YWxsLicpLAotKDE3MTIsIHUnT25lIG9yIG1vcmUgb2YgdGhlIGZpbGVzIHJlcXVpcmVkIHRvIHJlc3RvcmUgeW91ciBjb21wdXRlciB0byBpdHMgcHJldmlvdXMgc3RhdGUgY291bGQgbm90IGJlIGZvdW5kLiAgUmVzdG9yYXRpb24gd2lsbCBub3QgYmUgcG9zc2libGUuJyksCi0oMTcxMywgdSdbMl0gY2Fubm90IGluc3RhbGwgb25lIG9mIGl0cyByZXF1aXJlZCBwcm9kdWN0cy4gQ29udGFjdCB5b3VyIHRlY2huaWNhbCBzdXBwb3J0IGdyb3VwLiAge3tTeXN0ZW0gRXJyb3I6IFszXS59fScpLAotKDE3MTQsIHUnVGhlIG9sZGVyIHZlcnNpb24gb2YgWzJdIGNhbm5vdCBiZSByZW1vdmVkLiAgQ29udGFjdCB5b3VyIHRlY2huaWNhbCBzdXBwb3J0IGdyb3VwLiAge3tTeXN0ZW0gRXJyb3IgWzNdLn19JyksCi0oMTcxNSwgdSdJbnN0YWxsZWQgWzJdJyksCi0oMTcxNiwgdSdDb25maWd1cmVkIFsyXScpLAotKDE3MTcsIHUnUmVtb3ZlZCBbMl0nKSwKLSgxNzE4LCB1J0ZpbGUgWzJdIHdhcyByZWplY3RlZCBieSBkaWdpdGFsIHNpZ25hdHVyZSBwb2xpY3kuJyksCi0oMTcxOSwgdSdUaGUgV2luZG93cyBJbnN0YWxsZXIgU2VydmljZSBjb3VsZCBub3QgYmUgYWNjZXNzZWQuIFRoaXMgY2FuIG9jY3VyIGlmIHlvdSBhcmUgcnVubmluZyBXaW5kb3dzIGluIHNhZmUgbW9kZSwgb3IgaWYgdGhlIFdpbmRvd3MgSW5zdGFsbGVyIGlzIG5vdCBjb3JyZWN0bHkgaW5zdGFsbGVkLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgZm9yIGFzc2lzdGFuY2UuJyksCi0oMTcyMCwgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgc2NyaXB0IHJlcXVpcmVkIGZvciB0aGlzIGluc3RhbGwgdG8gY29tcGxldGUgY291bGQgbm90IGJlIHJ1bi4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIG9yIHBhY2thZ2UgdmVuZG9yLiAge3tDdXN0b20gYWN0aW9uIFsyXSBzY3JpcHQgZXJyb3IgWzNdLCBbNF06IFs1XSBMaW5lIFs2XSwgQ29sdW1uIFs3XSwgWzhdIH19JyksCi0oMTcyMSwgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgcHJvZ3JhbSByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsIHRvIGNvbXBsZXRlIGNvdWxkIG5vdCBiZSBydW4uIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4ge3tBY3Rpb246IFsyXSwgbG9jYXRpb246IFszXSwgY29tbWFuZDogWzRdIH19JyksCi0oMTcyMiwgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgcHJvZ3JhbSBydW4gYXMgcGFydCBvZiB0aGUgc2V0dXAgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQuIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbCBvciBwYWNrYWdlIHZlbmRvci4gIHt7QWN0aW9uIFsyXSwgbG9jYXRpb246IFszXSwgY29tbWFuZDogWzRdIH19JyksCi0oMTcyMywgdSdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGlzIFdpbmRvd3MgSW5zdGFsbGVyIHBhY2thZ2UuIEEgRExMIHJlcXVpcmVkIGZvciB0aGlzIGluc3RhbGwgdG8gY29tcGxldGUgY291bGQgbm90IGJlIHJ1bi4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsIG9yIHBhY2thZ2UgdmVuZG9yLiAge3tBY3Rpb24gWzJdLCBlbnRyeTogWzNdLCBsaWJyYXJ5OiBbNF0gfX0nKSwKLSgxNzI0LCB1J1JlbW92YWwgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4nKSwKLSgxNzI1LCB1J1JlbW92YWwgZmFpbGVkLicpLAotKDE3MjYsIHUnQWR2ZXJ0aXNlbWVudCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicpLAotKDE3MjcsIHUnQWR2ZXJ0aXNlbWVudCBmYWlsZWQuJyksCi0oMTcyOCwgdSdDb25maWd1cmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuJyksCi0oMTcyOSwgdSdDb25maWd1cmF0aW9uIGZhaWxlZC4nKSwKLSgxNzMwLCB1J1lvdSBtdXN0IGJlIGFuIEFkbWluaXN0cmF0b3IgdG8gcmVtb3ZlIHRoaXMgYXBwbGljYXRpb24uIFRvIHJlbW92ZSB0aGlzIGFwcGxpY2F0aW9uLCB5b3UgY2FuIGxvZyBvbiBhcyBhbiBBZG1pbmlzdHJhdG9yLCBvciBjb250YWN0IHlvdXIgdGVjaG5pY2FsIHN1cHBvcnQgZ3JvdXAgZm9yIGFzc2lzdGFuY2UuJyksCi0oMTgwMSwgdSdUaGUgcGF0aCBbMl0gaXMgbm90IHZhbGlkLiAgUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBwYXRoLicpLAotKDE4MDIsIHUnT3V0IG9mIG1lbW9yeS4gU2h1dCBkb3duIG90aGVyIGFwcGxpY2F0aW9ucyBiZWZvcmUgcmV0cnlpbmcuJyksCi0oMTgwMywgdSdUaGVyZSBpcyBubyBkaXNrIGluIGRyaXZlIFsyXS4gUGxlYXNlIGluc2VydCBvbmUgYW5kIGNsaWNrIFJldHJ5LCBvciBjbGljayBDYW5jZWwgdG8gZ28gYmFjayB0byB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB2b2x1bWUuJyksCi0oMTgwNCwgdSdUaGVyZSBpcyBubyBkaXNrIGluIGRyaXZlIFsyXS4gUGxlYXNlIGluc2VydCBvbmUgYW5kIGNsaWNrIFJldHJ5LCBvciBjbGljayBDYW5jZWwgdG8gcmV0dXJuIHRvIHRoZSBicm93c2UgZGlhbG9nIGFuZCBzZWxlY3QgYSBkaWZmZXJlbnQgdm9sdW1lLicpLAotKDE4MDUsIHUnVGhlIGZvbGRlciBbMl0gZG9lcyBub3QgZXhpc3QuICBQbGVhc2UgZW50ZXIgYSBwYXRoIHRvIGFuIGV4aXN0aW5nIGZvbGRlci4nKSwKLSgxODA2LCB1J1lvdSBoYXZlIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHJlYWQgdGhpcyBmb2xkZXIuJyksCi0oMTgwNywgdSdBIHZhbGlkIGRlc3RpbmF0aW9uIGZvbGRlciBmb3IgdGhlIGluc3RhbGwgY291bGQgbm90IGJlIGRldGVybWluZWQuJyksCi0oMTkwMSwgdSdFcnJvciBhdHRlbXB0aW5nIHRvIHJlYWQgZnJvbSB0aGUgc291cmNlIGluc3RhbGwgZGF0YWJhc2U6IFsyXS4nKSwKLSgxOTAyLCB1J1NjaGVkdWxpbmcgcmVib290IG9wZXJhdGlvbjogUmVuYW1pbmcgZmlsZSBbMl0gdG8gWzNdLiBNdXN0IHJlYm9vdCB0byBjb21wbGV0ZSBvcGVyYXRpb24uJyksCi0oMTkwMywgdSdTY2hlZHVsaW5nIHJlYm9vdCBvcGVyYXRpb246IERlbGV0aW5nIGZpbGUgWzJdLiBNdXN0IHJlYm9vdCB0byBjb21wbGV0ZSBvcGVyYXRpb24uJyksCi0oMTkwNCwgdSdNb2R1bGUgWzJdIGZhaWxlZCB0byByZWdpc3Rlci4gIEhSRVNVTFQgWzNdLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MDUsIHUnTW9kdWxlIFsyXSBmYWlsZWQgdG8gdW5yZWdpc3Rlci4gIEhSRVNVTFQgWzNdLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MDYsIHUnRmFpbGVkIHRvIGNhY2hlIHBhY2thZ2UgWzJdLiBFcnJvcjogWzNdLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTkwNywgdSdDb3VsZCBub3QgcmVnaXN0ZXIgZm9udCBbMl0uICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHBlcm1pc3Npb25zIHRvIGluc3RhbGwgZm9udHMsIGFuZCB0aGF0IHRoZSBzeXN0ZW0gc3VwcG9ydHMgdGhpcyBmb250LicpLAotKDE5MDgsIHUnQ291bGQgbm90IHVucmVnaXN0ZXIgZm9udCBbMl0uIFZlcmlmeSB0aGF0IHlvdSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcmVtb3ZlIGZvbnRzLicpLAotKDE5MDksIHUnQ291bGQgbm90IGNyZWF0ZSBTaG9ydGN1dCBbMl0uIFZlcmlmeSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBmb2xkZXIgZXhpc3RzIGFuZCB0aGF0IHlvdSBjYW4gYWNjZXNzIGl0LicpLAotKDE5MTAsIHUnQ291bGQgbm90IHJlbW92ZSBTaG9ydGN1dCBbMl0uIFZlcmlmeSB0aGF0IHRoZSBzaG9ydGN1dCBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTExLCB1J0NvdWxkIG5vdCByZWdpc3RlciB0eXBlIGxpYnJhcnkgZm9yIGZpbGUgWzJdLiAgQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MTIsIHUnQ291bGQgbm90IHVucmVnaXN0ZXIgdHlwZSBsaWJyYXJ5IGZvciBmaWxlIFsyXS4gIENvbnRhY3QgeW91ciBzdXBwb3J0IHBlcnNvbm5lbC4nKSwKLSgxOTEzLCB1J0NvdWxkIG5vdCB1cGRhdGUgdGhlIGluaSBmaWxlIFsyXVszXS4gIFZlcmlmeSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTE0LCB1J0NvdWxkIG5vdCBzY2hlZHVsZSBmaWxlIFsyXSB0byByZXBsYWNlIGZpbGUgWzNdIG9uIHJlYm9vdC4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHdyaXRlIHBlcm1pc3Npb25zIHRvIGZpbGUgWzNdLicpLAotKDE5MTUsIHUnRXJyb3IgcmVtb3ZpbmcgT0RCQyBkcml2ZXIgbWFuYWdlciwgT0RCQyBlcnJvciBbMl06IFszXS4gQ29udGFjdCB5b3VyIHN1cHBvcnQgcGVyc29ubmVsLicpLAotKDE5MTYsIHUnRXJyb3IgaW5zdGFsbGluZyBPREJDIGRyaXZlciBtYW5hZ2VyLCBPREJDIGVycm9yIFsyXTogWzNdLiBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwuJyksCi0oMTkxNywgdSdFcnJvciByZW1vdmluZyBPREJDIGRyaXZlcjogWzRdLCBPREJDIGVycm9yIFsyXTogWzNdLiBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gcmVtb3ZlIE9EQkMgZHJpdmVycy4nKSwKLSgxOTE4LCB1J0Vycm9yIGluc3RhbGxpbmcgT0RCQyBkcml2ZXI6IFs0XSwgT0RCQyBlcnJvciBbMl06IFszXS4gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgWzRdIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTE5LCB1J0Vycm9yIGNvbmZpZ3VyaW5nIE9EQkMgZGF0YSBzb3VyY2U6IFs0XSwgT0RCQyBlcnJvciBbMl06IFszXS4gVmVyaWZ5IHRoYXQgdGhlIGZpbGUgWzRdIGV4aXN0cyBhbmQgdGhhdCB5b3UgY2FuIGFjY2VzcyBpdC4nKSwKLSgxOTIwLCB1IlNlcnZpY2UgJ1syXScgKFszXSkgZmFpbGVkIHRvIHN0YXJ0LiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHN0YXJ0IHN5c3RlbSBzZXJ2aWNlcy4iKSwKLSgxOTIxLCB1IlNlcnZpY2UgJ1syXScgKFszXSkgY291bGQgbm90IGJlIHN0b3BwZWQuICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gc3RvcCBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyMiwgdSJTZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBkZWxldGVkLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIHJlbW92ZSBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyMywgdSJTZXJ2aWNlICdbMl0nIChbM10pIGNvdWxkIG5vdCBiZSBpbnN0YWxsZWQuICBWZXJpZnkgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gaW5zdGFsbCBzeXN0ZW0gc2VydmljZXMuIiksCi0oMTkyNCwgdSJDb3VsZCBub3QgdXBkYXRlIGVudmlyb25tZW50IHZhcmlhYmxlICdbMl0nLiAgVmVyaWZ5IHRoYXQgeW91IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIG1vZGlmeSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIiksCi0oMTkyNSwgdSdZb3UgZG8gbm90IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIGNvbXBsZXRlIHRoaXMgaW5zdGFsbGF0aW9uIGZvciBhbGwgdXNlcnMgb2YgdGhlIG1hY2hpbmUuICBMb2cgb24gYXMgYWRtaW5pc3RyYXRvciBhbmQgdGhlbiByZXRyeSB0aGlzIGluc3RhbGxhdGlvbi4nKSwKLSgxOTI2LCB1IkNvdWxkIG5vdCBzZXQgZmlsZSBzZWN1cml0eSBmb3IgZmlsZSAnWzNdJy4gRXJyb3I6IFsyXS4gIFZlcmlmeSB0aGF0IHlvdSBoYXZlIHN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBtb2RpZnkgdGhlIHNlY3VyaXR5IHBlcm1pc3Npb25zIGZvciB0aGlzIGZpbGUuIiksCi0oMTkyNywgdSdDb21wb25lbnQgU2VydmljZXMgKENPTSsgMS4wKSBhcmUgbm90IGluc3RhbGxlZCBvbiB0aGlzIGNvbXB1dGVyLiAgVGhpcyBpbnN0YWxsYXRpb24gcmVxdWlyZXMgQ29tcG9uZW50IFNlcnZpY2VzIGluIG9yZGVyIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4gIENvbXBvbmVudCBTZXJ2aWNlcyBhcmUgYXZhaWxhYmxlIG9uIFdpbmRvd3MgMjAwMC4nKSwKLSgxOTI4LCB1J0Vycm9yIHJlZ2lzdGVyaW5nIENPTSsgQXBwbGljYXRpb24uICBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyksCi0oMTkyOSwgdSdFcnJvciB1bnJlZ2lzdGVyaW5nIENPTSsgQXBwbGljYXRpb24uICBDb250YWN0IHlvdXIgc3VwcG9ydCBwZXJzb25uZWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJyksCi0oMTkzMCwgdSJUaGUgZGVzY3JpcHRpb24gZm9yIHNlcnZpY2UgJ1syXScgKFszXSkgY291bGQgbm90IGJlIGNoYW5nZWQuIiksCi0oMTkzMSwgdSdUaGUgV2luZG93cyBJbnN0YWxsZXIgc2VydmljZSBjYW5ub3QgdXBkYXRlIHRoZSBzeXN0ZW0gZmlsZSBbMl0gYmVjYXVzZSB0aGUgZmlsZSBpcyBwcm90ZWN0ZWQgYnkgV2luZG93cy4gIFlvdSBtYXkgbmVlZCB0byB1cGRhdGUgeW91ciBvcGVyYXRpbmcgc3lzdGVtIGZvciB0aGlzIHByb2dyYW0gdG8gd29yayBjb3JyZWN0bHkuIHt7UGFja2FnZSB2ZXJzaW9uOiBbM10sIE9TIFByb3RlY3RlZCB2ZXJzaW9uOiBbNF19fScpLAotKDE5MzIsIHUnVGhlIFdpbmRvd3MgSW5zdGFsbGVyIHNlcnZpY2UgY2Fubm90IHVwZGF0ZSB0aGUgcHJvdGVjdGVkIFdpbmRvd3MgZmlsZSBbMl0uIHt7UGFja2FnZSB2ZXJzaW9uOiBbM10sIE9TIFByb3RlY3RlZCB2ZXJzaW9uOiBbNF0sIFNGUCBFcnJvcjogWzVdfX0nKSwKLSgxOTMzLCB1J1RoZSBXaW5kb3dzIEluc3RhbGxlciBzZXJ2aWNlIGNhbm5vdCB1cGRhdGUgb25lIG9yIG1vcmUgcHJvdGVjdGVkIFdpbmRvd3MgZmlsZXMuIHt7U0ZQIEVycm9yOiBbMl0uICBMaXN0IG9mIHByb3RlY3RlZCBmaWxlczpcXHJcXG5bM119fScpLAotKDE5MzQsIHUnVXNlciBpbnN0YWxsYXRpb25zIGFyZSBkaXNhYmxlZCB2aWEgcG9saWN5IG9uIHRoZSBtYWNoaW5lLicpLAotKDE5MzUsIHUnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgYXNzZW1ibHkgY29tcG9uZW50IFsyXS4gSFJFU1VMVDogWzNdLiB7e2Fzc2VtYmx5IGludGVyZmFjZTogWzRdLCBmdW5jdGlvbjogWzVdLCBhc3NlbWJseSBuYW1lOiBbNl19fScpLAotXQotCi10YWJsZXM9WydBZG1pbkV4ZWN1dGVTZXF1ZW5jZScsICdBZG1pblVJU2VxdWVuY2UnLCAnQWR2dEV4ZWN1dGVTZXF1ZW5jZScsICdCQkNvbnRyb2wnLCAnQmlsbGJvYXJkJywgJ0JpbmFyeScsICdDaGVja0JveCcsICdQcm9wZXJ0eScsICdDb21ib0JveCcsICdDb250cm9sJywgJ0xpc3RCb3gnLCAnQWN0aW9uVGV4dCcsICdDb250cm9sQ29uZGl0aW9uJywgJ0NvbnRyb2xFdmVudCcsICdEaWFsb2cnLCAnRXZlbnRNYXBwaW5nJywgJ0luc3RhbGxFeGVjdXRlU2VxdWVuY2UnLCAnSW5zdGFsbFVJU2VxdWVuY2UnLCAnTGlzdFZpZXcnLCAnUmFkaW9CdXR0b24nLCAnVGV4dFN0eWxlJywgJ1VJVGV4dCcsICdfVmFsaWRhdGlvbicsICdFcnJvciddCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvdXBsb2FkcmVsZWFzZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2NzYzNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS91cGxvYWRyZWxlYXNlLmJhdApAQCAtMCwwICsxLDU2IEBACitAc2V0bG9jYWwNCitAZWNobyBvZmYNCisNCitzZXQgRD0lfmRwMA0KK3NldCBQQ0JVSUxEPSVEJS4uXC4uXFBDQnVpbGRcDQorDQorc2V0IEhPU1Q9DQorc2V0IFVTRVI9DQorc2V0IFRBUkdFVD0NCitzZXQgRFJZUlVOPWZhbHNlDQorDQorOkNoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItaCIgZ290byBIZWxwDQoraWYgIiUxIiBFUVUgIi1vIiAoc2V0IEhPU1Q9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLWhvc3QiIChzZXQgSE9TVD0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi11IiAoc2V0IFVTRVI9JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXVzZXIiIChzZXQgVVNFUj0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi10IiAoc2V0IFRBUkdFVD0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tdGFyZ2V0IiAoc2V0IFRBUkdFVD0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tZHJ5LXJ1biIgKHNldCBEUllSVU49dHJ1ZSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCisNCitpZiBub3QgZGVmaW5lZCBQTElOSyB3aGVyZSBwbGluayA+ICIlVEVNUCVccGxpbmsubG9jIiAyPiBudWwgJiYgc2V0IC9QIFBMSU5LPSA8ICIlVEVNUCVccGxpbmsubG9jIiAmIGRlbCAiJVRFTVAlXHBsaW5rLmxvYyINCitpZiBub3QgZGVmaW5lZCBQTElOSyB3aGVyZSAvUiAiJVByb2dyYW1GaWxlcyh4ODYpJVxQdVRUWSIgcGxpbmsgPiAiJVRFTVAlXHBsaW5rLmxvYyIgMj4gbnVsICYmIHNldCAvUCBQTElOSz0gPCAiJVRFTVAlXHBsaW5rLmxvYyIgJiBkZWwgIiVURU1QJVxwbGluay5sb2MiDQoraWYgbm90IGRlZmluZWQgUExJTksgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSUiIHBsaW5rID4gIiVURU1QJVxwbGluay5sb2MiIDI+IG51bCAmJiBzZXQgL1AgUExJTks9IDwgIiVURU1QJVxwbGluay5sb2MiICYgZGVsICIlVEVNUCVccGxpbmsubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBMSU5LIGVjaG8gQ2Fubm90IGxvY2F0ZSBwbGluay5leGUgJiBleGl0IC9CIDENCitlY2hvIEZvdW5kIHBsaW5rLmV4ZSBhdCAlUExJTkslDQorDQoraWYgbm90IGRlZmluZWQgUFNDUCB3aGVyZSBwc2NwID4gIiVURU1QJVxwc2NwLmxvYyIgMj4gbnVsICYmIHNldCAvUCBwc2NwPSA8ICIlVEVNUCVccHNjcC5sb2MiICYgZGVsICIlVEVNUCVccHNjcC5sb2MiDQoraWYgbm90IGRlZmluZWQgUFNDUCB3aGVyZSAvUiAiJVByb2dyYW1GaWxlcyh4ODYpJVxQdVRUWSIgcHNjcCA+ICIlVEVNUCVccHNjcC5sb2MiIDI+IG51bCAmJiBzZXQgL1AgcHNjcD0gPCAiJVRFTVAlXHBzY3AubG9jIiAmIGRlbCAiJVRFTVAlXHBzY3AubG9jIg0KK2lmIG5vdCBkZWZpbmVkIFBTQ1Agd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSUiIHBzY3AgPiAiJVRFTVAlXHBzY3AubG9jIiAyPiBudWwgJiYgc2V0IC9QIHBzY3A9IDwgIiVURU1QJVxwc2NwLmxvYyIgJiBkZWwgIiVURU1QJVxwc2NwLmxvYyINCitpZiBub3QgZGVmaW5lZCBQU0NQIGVjaG8gQ2Fubm90IGxvY2F0ZSBwc2NwLmV4ZSAmIGV4aXQgL0IgMQ0KK2VjaG8gRm91bmQgcHNjcC5leGUgYXQgJVBTQ1AlDQorDQoraWYgbm90IGRlZmluZWQgR1BHIHdoZXJlIGdwZzIgPiAiJVRFTVAlXGdwZy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgR1BHPSA8ICIlVEVNUCVcZ3BnLmxvYyIgJiBkZWwgIiVURU1QJVxncGcubG9jIg0KK2lmIG5vdCBkZWZpbmVkIEdQRyB3aGVyZSAvUiAiJVBDQlVJTEQlLi5cZXh0ZXJuYWxzIiBncGcyID4gIiVURU1QJVxncGcubG9jIiAyPiBudWwgJiYgc2V0IC9QIEdQRz0gPCAiJVRFTVAlXGdwZy5sb2MiICYgZGVsICIlVEVNUCVcZ3BnLmxvYyINCitpZiBub3QgZGVmaW5lZCBHUEcgZWNobyBDYW5ub3QgbG9jYXRlIGdwZzIuZXhlLiBTaWduYXR1cmVzIHdpbGwgbm90IGJlIHVwbG9hZGVkICYgcGF1c2UNCitlY2hvIEZvdW5kIGdwZzIuZXhlIGF0ICVHUEclDQorDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgPiBudWwgMj4gbnVsDQorcHVzaGQgIiVEJSINCittc2J1aWxkIC92Om0gL25vbG9nbyB1cGxvYWRyZWxlYXNlLnByb2ogL3Q6VXBsb2FkIC9wOlBsYXRmb3JtPXg4Ng0KK21zYnVpbGQgL3Y6bSAvbm9sb2dvIHVwbG9hZHJlbGVhc2UucHJvaiAvdDpVcGxvYWQgL3A6UGxhdGZvcm09eDY0IC9wOkluY2x1ZGVEb2M9ZmFsc2UNCittc2J1aWxkIC92Om0gL25vbG9nbyB1cGxvYWRyZWxlYXNlLnByb2ogL3Q6U2hvd0hhc2hlcyAvcDpQbGF0Zm9ybT14ODYNCittc2J1aWxkIC92Om0gL25vbG9nbyB1cGxvYWRyZWxlYXNlLnByb2ogL3Q6U2hvd0hhc2hlcyAvcDpQbGF0Zm9ybT14NjQgL3A6SW5jbHVkZURvYz1mYWxzZQ0KK3BvcGQNCitleGl0IC9CIDANCisNCis6SGVscA0KK2VjaG8gdXBsb2FkcmVsZWFzZS5iYXQgLS1ob3N0IEhPU1QgLS11c2VyIFVTRVJOQU1FIFstLXRhcmdldCBUQVJHRVRdIFstLWRyeS1ydW5dIFstaF0NCitlY2hvLg0KK2VjaG8gICAgLS1ob3N0ICgtbykgICAgIFNwZWNpZnkgdGhlIHVwbG9hZCBob3N0IChyZXF1aXJlZCkNCitlY2hvICAgIC0tdXNlciAoLXUpICAgICBTcGVjaWZ5IHRoZSB1c2VyIG9uIHRoZSBob3N0IChyZXF1aXJlZCkNCitlY2hvICAgIC0tdGFyZ2V0ICgtdCkgICBTcGVjaWZ5IHRoZSB0YXJnZXQgZGlyZWN0b3J5IG9uIHRoZSBob3N0DQorZWNobyAgICAtLWRyeS1ydW4gICAgICAgRGlzcGxheSBjb21tYW5kcyBhbmQgZmlsZW5hbWVzIHdpdGhvdXQgZXhlY3V0aW5nIHRoZW0NCitlY2hvICAgIC1oICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBpbmZvcm1hdGlvbg0KK2VjaG8uDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3VwbG9hZHJlbGVhc2UucHJvaiBiL1Rvb2xzL21zaS91cGxvYWRyZWxlYXNlLnByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM0ZWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS91cGxvYWRyZWxlYXNlLnByb2oKQEAgLTAsMCArMSw4MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8UHJvamVjdEd1aWQ+ezJENjlGMkFCLUQ1RDAtNDM0NC04NEI1LUVGNkRCMzRBOUJDOX08L1Byb2plY3RHdWlkPgorICAgICAgICA8T3V0cHV0TmFtZT5weXRob248L091dHB1dE5hbWU+CisgICAgICAgIDxPdXRwdXRTdWZmaXg+PC9PdXRwdXRTdWZmaXg+CisgICAgICAgIAorICAgICAgICA8RG93bmxvYWRVcmxCYXNlIENvbmRpdGlvbj0iJyQoRG93bmxvYWRVcmxCYXNlKScgPT0gJyciPiQoVEFSR0VUKTwvRG93bmxvYWRVcmxCYXNlPgorICAgICAgICA8RG93bmxvYWRVcmxCYXNlIENvbmRpdGlvbj0iJyQoRG93bmxvYWRVcmxCYXNlKScgPT0gJyciPi9zcnYvd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbjwvRG93bmxvYWRVcmxCYXNlPgorICAgICAgICA8SW5jbHVkZURvYyBDb25kaXRpb249IickKEluY2x1ZGVEb2MpJyA9PSAnJyI+dHJ1ZTwvSW5jbHVkZURvYz4KKyAgICAgICAgPERyeVJ1biBDb25kaXRpb249IickKERyeVJ1biknID09ICcnIj5mYWxzZTwvRHJ5UnVuPgorICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgIDxJbXBvcnQgUHJvamVjdD0ibXNpLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iYnVuZGxlXGJ1bmRsZS50YXJnZXRzIiAvPgorICAgIAorICAgIDxQcm9wZXJ0eUdyb3VwPgorICAgICAgICA8RVhFVGFyZ2V0PiQoRG93bmxvYWRVcmxCYXNlLlRyaW1FbmQoYC9gKSkvJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcik8L0VYRVRhcmdldD4KKyAgICAgICAgPE1TSVRhcmdldD4kKERvd25sb2FkVXJsLlRyaW1FbmQoYC9gKSk8L01TSVRhcmdldD4KKyAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgCisgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgPEZpbGUgSW5jbHVkZT0iJChPdXRwdXRQYXRoKVwqLm1zaTskKE91dHB1dFBhdGgpXCoubXN1Ij4KKyAgICAgICAgICAgIDxDb3B5VG8+JChNU0lUYXJnZXQpPC9Db3B5VG8+CisgICAgICAgIDwvRmlsZT4KKyAgICAgICAgPEZpbGUgSW5jbHVkZT0iJChPdXRwdXRQYXRoKVwqLmV4ZTskKE91dHB1dFBhdGgpXCouemlwIj4KKyAgICAgICAgICAgIDxDb3B5VG8+JChFWEVUYXJnZXQpPC9Db3B5VG8+CisgICAgICAgIDwvRmlsZT4KKyAgICAgICAgPEZpbGUgSW5jbHVkZT0iJChQeVNvdXJjZVBhdGgpRG9jXGJ1aWxkXGh0bWxoZWxwXHB5dGhvbiQoTWFqb3JWZXJzaW9uTnVtYmVyKSQoTWlub3JWZXJzaW9uTnVtYmVyKSQoTWljcm9WZXJzaW9uTnVtYmVyKSQoUmVsZWFzZUxldmVsTmFtZSkuY2htIiBDb25kaXRpb249IiQoSW5jbHVkZURvYykiPgorICAgICAgICAgICAgPENvcHlUbz4kKEVYRVRhcmdldCk8L0NvcHlUbz4KKyAgICAgICAgPC9GaWxlPgorICAgIDwvSXRlbUdyb3VwPgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX1ZhbGlkYXRlUHJvcGVydGllcyI+CisgICAgICAgIDxFcnJvciBUZXh0PSJObyB2YWx1ZSBmb3IgSG9zdCBwcm92aWRlZCIgQ29uZGl0aW9uPSInJChIb3N0KScgPT0gJyciIC8+CisgICAgICAgIDxFcnJvciBUZXh0PSJObyB2YWx1ZSBmb3IgVXNlciBwcm92aWRlZCIgQ29uZGl0aW9uPSInJChVc2VyKScgPT0gJyciIC8+CisgICAgICAgIDxFcnJvciBUZXh0PSJObyBwYXRoIGZvciBQU0NQIHByb3ZpZGVkIiBDb25kaXRpb249IickKFBTQ1ApJyA9PSAnJyIgLz4KKyAgICAgICAgPEVycm9yIFRleHQ9Ik5vIHBhdGggZm9yIFBMSU5LIHByb3ZpZGVkIiBDb25kaXRpb249IickKFBMSU5LKScgPT0gJyciIC8+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfUnVuR3BnIiBDb25kaXRpb249IickKEdQRyknICE9ICcnIiBJbnB1dHM9IkAoRmlsZSkiIE91dHB1dHM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcZ3BnXCUoRmlsZU5hbWUpJShFeHRlbnNpb24pLmFzYyI+CisgICAgICAgIDxNYWtlRGlyIERpcmVjdG9yaWVzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpZ3BnIiAvPgorICAgICAgICA8RGVsZXRlIEZpbGVzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXGdwZ1wlKEZpbGUuRmlsZU5hbWUpJShGaWxlLkV4dGVuc2lvbikuYXNjIiBDb25kaXRpb249IkV4aXN0cygnJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxncGdcJShGaWxlLkZpbGVOYW1lKSUoRmlsZS5FeHRlbnNpb24pLmFzYycpIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSImcXVvdDskKEdQRykmcXVvdDsgLWJhIC1vICZxdW90OyQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcZ3BnXCUoRmlsZS5GaWxlTmFtZSklKEZpbGUuRXh0ZW5zaW9uKS5hc2MmcXVvdDsgJnF1b3Q7JShGaWxlLkZ1bGxQYXRoKSZxdW90OyIgLz4KKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxGaWxlIEluY2x1ZGU9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcZ3BnXCUoRmlsZS5GaWxlTmFtZSklKEZpbGUuRXh0ZW5zaW9uKS5hc2MiPgorICAgICAgICAgICAgICAgIDxDb3B5VG8+JShGaWxlLkNvcHlUbyk8L0NvcHlUbz4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgPC9UYXJnZXQ+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJfVXBsb2FkIiBDb25kaXRpb249IiEkKERyeVJ1bikiPgorICAgICAgICA8RXhlYyBDb21tYW5kPSImcXVvdDskKFBMSU5LKSZxdW90OyAkKFVzZXIpQCQoSG9zdCkgbWtkaXIgJShGaWxlLkNvcHlUbykgXiZhbXA7XiZhbXA7IGNoZ3JwIGRvd25sb2FkcyAlKEZpbGUuQ29weVRvKSBeJmFtcDteJmFtcDsgY2htb2QgZy13LG8rcnggJShGaWxlLkNvcHlUbykKKyZxdW90OyQoUFNDUCkmcXVvdDsgQChGaWxlLCcgJykgJChVc2VyKUAkKEhvc3QpOiUoRmlsZS5Db3B5VG8pCismcXVvdDskKFBMSU5LKSZxdW90OyAkKFVzZXIpQCQoSG9zdCkgY2hncnAgZG93bmxvYWRzICUoRmlsZS5Db3B5VG8pLyo7IGNobW9kIGctdyxvK3IgJShGaWxlLkNvcHlUbykvKgorIiAvPgorICAgIDwvVGFyZ2V0PgorICAgIAorICAgIDxUYXJnZXQgTmFtZT0iX1ByaW50TmFtZXMiIENvbmRpdGlvbj0iJChEcnlSdW4pIj4KKyAgICAgICAgPEV4ZWMgQ29tbWFuZD0iZWNobyAmcXVvdDskKFBMSU5LKSZxdW90OyAkKFVzZXIpQCQoSG9zdCkgbWtkaXIgJShGaWxlLkNvcHlUbykgXiZhbXA7XiZhbXA7IGNoZ3JwIGRvd25sb2FkcyAlKEZpbGUuQ29weVRvKSBeJmFtcDteJmFtcDsgY2htb2QgZy13LG8rcnggJShGaWxlLkNvcHlUbykKK2VjaG8gJnF1b3Q7JChQU0NQKSZxdW90OyBAKEZpbGUsJyAnKSAkKFVzZXIpQCQoSG9zdCk6JShGaWxlLkNvcHlUbykKK2VjaG8gJnF1b3Q7JChQTElOSykmcXVvdDsgJChVc2VyKUAkKEhvc3QpIGNoZ3JwIGRvd25sb2FkcyAlKEZpbGUuQ29weVRvKS8qOyBjaG1vZCBnLXcsbytyICUoRmlsZS5Db3B5VG8pLyoKK2VjaG8uCitlY2hvLiIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IlVwbG9hZCIgRGVwZW5kc09uVGFyZ2V0cz0iX1ZhbGlkYXRlUHJvcGVydGllcztfUnVuR3BnO19QcmludE5hbWVzO19VcGxvYWQiIC8+CisgICAgCisgICAgPFRhcmdldCBOYW1lPSJTaG93SGFzaGVzIj4KKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxVc2VyRmlsZXMgSW5jbHVkZT0iQChGaWxlKSIgQ29uZGl0aW9uPSInJShGaWxlLkNvcHlUbyknID09ICckKEVYRVRhcmdldCknIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICAgICAgCisgICAgICAgIDxFeGVjIENvbW1hbmQ9IiZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBnZW5lcmF0ZV9tZDUucHkgQChVc2VyRmlsZXMtPicmcXVvdDslKEZ1bGxQYXRoKSZxdW90OycsJyAnKSIgLz4KKyAgICA8L1RhcmdldD4KKyAgICAKKyAgICA8VGFyZ2V0IE5hbWU9IkJ1aWxkIj4KKyAgICAgICAgPEVycm9yIFRleHQ9IlRoaXMgc2NyaXB0IHNob3VsZCBiZSBpbnZva2VkIHVzaW5nIHVwbG9hZHJlbGVhc2UuYmF0LiIgLz4KKyAgICA8L1RhcmdldD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS93aXgucHJvcHMgYi9Ub29scy9tc2kvd2l4LnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NDkyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvd2l4LnByb3BzCkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJbXBvcnQgUHJvamVjdD0iLi5cLi5cUENCdWlsZFxweXRob24ucHJvcHMiIC8+CisgIAorICA8UHJvcGVydHlHcm91cD4KKyAgICA8V2l4SW5zdGFsbFBhdGggQ29uZGl0aW9uPSInJChXaXhJbnN0YWxsUGF0aCknID09ICcnIGFuZCBFeGlzdHMoJyQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxXaXgnKSI+JChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXFdpeFw8L1dpeEluc3RhbGxQYXRoPgorICAgIDxXaXhJbnN0YWxsUGF0aCBDb25kaXRpb249IickKFdpeEluc3RhbGxQYXRoKScgPT0gJycgYW5kIEV4aXN0cygnJChFeHRlcm5hbHNEaXIpXFdpeCcpIj4kKEV4dGVybmFsc0RpcilcV2l4XDwvV2l4SW5zdGFsbFBhdGg+CisgICAgPFdpeEluc3RhbGxQYXRoIENvbmRpdGlvbj0iJyQoV2l4SW5zdGFsbFBhdGgpJyA9PSAnJyI+JChSZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcTWljcm9zb2Z0XFdpbmRvd3MgSW5zdGFsbGVyIFhNTFwzLjlASW5zdGFsbFJvb3QpPC9XaXhJbnN0YWxsUGF0aD4KKyAgICA8V2l4SW5zdGFsbFBhdGggQ29uZGl0aW9uPSInJChXaXhJbnN0YWxsUGF0aCknID09ICcnIj4kKFJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxXb3c2NDMyTm9kZVxNaWNyb3NvZnRcV2luZG93cyBJbnN0YWxsZXIgWE1MXDMuOUBJbnN0YWxsUm9vdCk8L1dpeEluc3RhbGxQYXRoPgorICAgIDxXaXhUYXJnZXRzUGF0aD4kKFdpeEluc3RhbGxQYXRoKVxXaXgudGFyZ2V0czwvV2l4VGFyZ2V0c1BhdGg+CisgIDwvUHJvcGVydHlHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IDgzN2NkODEuLmM4Mjg1NzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xMzgsNiArMTM4LDE0IEBACiAgICAgICAgIHNlbGYuZmlsbCgibm9ubG9jYWwgIikKICAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYud3JpdGUsIHQubmFtZXMpCiAKKyAgICBkZWYgX0F3YWl0KHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgc2VsZi53cml0ZSgiYXdhaXQiKQorICAgICAgICBpZiB0LnZhbHVlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCisgICAgICAgIHNlbGYud3JpdGUoIikiKQorCiAgICAgZGVmIF9ZaWVsZChzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSgiKCIpCiAgICAgICAgIHNlbGYud3JpdGUoInlpZWxkIikKQEAgLTIxMSwxNiArMjE5LDYgQEAKICAgICAgICAgICAgIGlmIGNvbW1hOiBzZWxmLndyaXRlKCIsICIpCiAgICAgICAgICAgICBlbHNlOiBjb21tYSA9IFRydWUKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2goZSkKLSAgICAgICAgaWYgdC5zdGFyYXJnczoKLSAgICAgICAgICAgIGlmIGNvbW1hOiBzZWxmLndyaXRlKCIsICIpCi0gICAgICAgICAgICBlbHNlOiBjb21tYSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYud3JpdGUoIioiKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnN0YXJhcmdzKQotICAgICAgICBpZiB0Lmt3YXJnczoKLSAgICAgICAgICAgIGlmIGNvbW1hOiBzZWxmLndyaXRlKCIsICIpCi0gICAgICAgICAgICBlbHNlOiBjb21tYSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYud3JpdGUoIioqIikKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5rd2FyZ3MpCiAgICAgICAgIHNlbGYud3JpdGUoIikiKQogCiAgICAgICAgIHNlbGYuZW50ZXIoKQpAQCAtMjI4LDExICsyMjYsMTggQEAKICAgICAgICAgc2VsZi5sZWF2ZSgpCiAKICAgICBkZWYgX0Z1bmN0aW9uRGVmKHNlbGYsIHQpOgorICAgICAgICBzZWxmLl9fRnVuY3Rpb25EZWZfaGVscGVyKHQsICJkZWYiKQorCisgICAgZGVmIF9Bc3luY0Z1bmN0aW9uRGVmKHNlbGYsIHQpOgorICAgICAgICBzZWxmLl9fRnVuY3Rpb25EZWZfaGVscGVyKHQsICJhc3luYyBkZWYiKQorCisgICAgZGVmIF9fRnVuY3Rpb25EZWZfaGVscGVyKHNlbGYsIHQsIGZpbGxfc3VmZml4KToKICAgICAgICAgc2VsZi53cml0ZSgiXG4iKQogICAgICAgICBmb3IgZGVjbyBpbiB0LmRlY29yYXRvcl9saXN0OgogICAgICAgICAgICAgc2VsZi5maWxsKCJAIikKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2goZGVjbykKLSAgICAgICAgc2VsZi5maWxsKCJkZWYgIit0Lm5hbWUgKyAiKCIpCisgICAgICAgIGRlZl9zdHIgPSBmaWxsX3N1ZmZpeCsiICIrdC5uYW1lICsgIigiCisgICAgICAgIHNlbGYuZmlsbChkZWZfc3RyKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYXJncykKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAgICAgICAgIGlmIHQucmV0dXJuczoKQEAgLTI0Myw3ICsyNDgsMTMgQEAKICAgICAgICAgc2VsZi5sZWF2ZSgpCiAKICAgICBkZWYgX0ZvcihzZWxmLCB0KToKLSAgICAgICAgc2VsZi5maWxsKCJmb3IgIikKKyAgICAgICAgc2VsZi5fX0Zvcl9oZWxwZXIoImZvciAiLCB0KQorCisgICAgZGVmIF9Bc3luY0ZvcihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5fX0Zvcl9oZWxwZXIoImFzeW5jIGZvciAiLCB0KQorCisgICAgZGVmIF9fRm9yX2hlbHBlcihzZWxmLCBmaWxsLCB0KToKKyAgICAgICAgc2VsZi5maWxsKGZpbGwpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC50YXJnZXQpCiAgICAgICAgIHNlbGYud3JpdGUoIiBpbiAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuaXRlcikKQEAgLTI5Nyw2ICszMDgsMTMgQEAKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCiAgICAgICAgIHNlbGYubGVhdmUoKQogCisgICAgZGVmIF9Bc3luY1dpdGgoc2VsZiwgdCk6CisgICAgICAgIHNlbGYuZmlsbCgiYXN5bmMgd2l0aCAiKQorICAgICAgICBpbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi5kaXNwYXRjaCwgdC5pdGVtcykKKyAgICAgICAgc2VsZi5lbnRlcigpCisgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQorICAgICAgICBzZWxmLmxlYXZlKCkKKwogICAgICMgZXhwcgogICAgIGRlZiBfQnl0ZXMoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0LnMpKQpAQCAtNDAxLDcgKzQxOSw3IEBACiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5vcGVyYW5kKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAotICAgIGJpbm9wID0geyAiQWRkIjoiKyIsICJTdWIiOiItIiwgIk11bHQiOiIqIiwgIkRpdiI6Ii8iLCAiTW9kIjoiJSIsCisgICAgYmlub3AgPSB7ICJBZGQiOiIrIiwgIlN1YiI6Ii0iLCAiTXVsdCI6IioiLCAiTWF0TXVsdCI6IkAiLCAiRGl2IjoiLyIsICJNb2QiOiIlIiwKICAgICAgICAgICAgICAgICAgICAgIkxTaGlmdCI6Ijw8IiwgIlJTaGlmdCI6Ij4+IiwgIkJpdE9yIjoifCIsICJCaXRYb3IiOiJeIiwgIkJpdEFuZCI6IiYiLAogICAgICAgICAgICAgICAgICAgICAiRmxvb3JEaXYiOiIvLyIsICJQb3ciOiAiKioifQogICAgIGRlZiBfQmluT3Aoc2VsZiwgdCk6CkBAIC00NTAsMTYgKzQ2OCw2IEBACiAgICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQogICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGUpCi0gICAgICAgIGlmIHQuc3RhcmFyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqIikKLSAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5zdGFyYXJncykKLSAgICAgICAgaWYgdC5rd2FyZ3M6Ci0gICAgICAgICAgICBpZiBjb21tYTogc2VsZi53cml0ZSgiLCAiKQotICAgICAgICAgICAgZWxzZTogY29tbWEgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLndyaXRlKCIqKiIpCi0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQua3dhcmdzKQogICAgICAgICBzZWxmLndyaXRlKCIpIikKIAogICAgIGRlZiBfU3Vic2NyaXB0KHNlbGYsIHQpOgpAQCAtNTQzLDggKzU1MSwxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5rd2FyZy5hbm5vdGF0aW9uKQogCiAgICAgZGVmIF9rZXl3b3JkKHNlbGYsIHQpOgotICAgICAgICBzZWxmLndyaXRlKHQuYXJnKQotICAgICAgICBzZWxmLndyaXRlKCI9IikKKyAgICAgICAgaWYgdC5hcmcgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIioqIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUodC5hcmcpCisgICAgICAgICAgICBzZWxmLndyaXRlKCI9IikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQogCiAgICAgZGVmIF9MYW1iZGEoc2VsZiwgdCk6CmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL1JFQURNRSBiL1Rvb2xzL3B5YmVuY2gvUkVBRE1FCmluZGV4IGU1OWU2YzAuLjQwZjdlZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvUkVBRE1FCisrKyBiL1Rvb2xzL3B5YmVuY2gvUkVBRE1FCkBAIC00LDcgKzQsNyBAQAogX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAKICAgICAgRXh0ZW5kYWJsZSBzdWl0ZSBvZiBsb3ctbGV2ZWwgYmVuY2htYXJrcyBmb3IgbWVhc3VyaW5nCi0gICAgICAgICAgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gCisgICAgICAgICAgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgKGludGVycHJldGVyLCBjb21waWxlciBvciBWTSkuCiAKIHB5YmVuY2ggaXMgYSBjb2xsZWN0aW9uIG9mIHRlc3RzIHRoYXQgcHJvdmlkZXMgYSBzdGFuZGFyZGl6ZWQgd2F5IHRvCkBAIC0zNCwxMSArMzQsMTEgQEAKIAogSXQgaXMgdXN1YWxseSBhIGdvb2QgaWRlYSB0byBydW4gcHliZW5jaC5weSBtdWx0aXBsZSB0aW1lcyB0byBzZWUKIHdoZXRoZXIgdGhlIGVudmlyb25tZW50LCB0aW1lcnMgYW5kIGJlbmNobWFyayBydW4tdGltZXMgYXJlIHN1aXRhYmxlCi1mb3IgZG9pbmcgYmVuY2htYXJrIHRlc3RzLiAKK2ZvciBkb2luZyBiZW5jaG1hcmsgdGVzdHMuCiAKIFlvdSBjYW4gdXNlIHRoZSBjb21wYXJpc29uIGZlYXR1cmUgb2YgcHliZW5jaC5weSAoJ3B5YmVuY2gucHkgLWMKIDxmaWxlPicpIHRvIGNoZWNrIGhvdyB3ZWxsIHRoZSBzeXN0ZW0gYmVoYXZlcyBpbiBjb21wYXJpc29uIHRvIGEKLXJlZmVyZW5jZSBydW4uIAorcmVmZXJlbmNlIHJ1bi4KIAogSWYgdGhlIGRpZmZlcmVuY2VzIGFyZSB3ZWxsIGJlbG93IDEwJSBmb3IgZWFjaCB0ZXN0LCB0aGVuIHlvdSBoYXZlIGEKIHN5c3RlbSB0aGF0IGlzIGdvb2QgZm9yIGRvaW5nIGJlbmNobWFyayB0ZXN0aW5ncy4gIE9mIHlvdSBnZXQgcmFuZG9tCkBAIC0yMzIsNyArMjMyLDcgQEAKICAgICAjIGZvciBjb21wYXJpc29ucyBvZiBiZW5jaG1hcmsgcnVucyAtIHRlc3RzIHdpdGggdW5lcXVhbCB2ZXJzaW9uCiAgICAgIyBudW1iZXIgd2lsbCBub3QgZ2V0IGNvbXBhcmVkLgogICAgIHZlcnNpb24gPSAxLjAKLSAgICAKKwogICAgICMgVGhlIG51bWJlciBvZiBhYnN0cmFjdCBvcGVyYXRpb25zIGRvbmUgaW4gZWFjaCByb3VuZCBvZiB0aGUKICAgICAjIHRlc3QuIEFuIG9wZXJhdGlvbiBpcyB0aGUgYmFzaWMgdW5pdCBvZiB3aGF0IHlvdSB3YW50IHRvCiAgICAgIyBtZWFzdXJlLiBUaGUgYmVuY2htYXJrIHdpbGwgb3V0cHV0IHRoZSBhbW91bnQgb2YgcnVuLXRpbWUgcGVyCkBAIC0yNjQsNyArMjY0LDcgQEAKIAogICAgICAgICAgICAgIyBSZXBlYXQgdGhlIG9wZXJhdGlvbnMgcGVyIHJvdW5kIHRvIHJhaXNlIHRoZSBydW4tdGltZQogICAgICAgICAgICAgIyBwZXIgb3BlcmF0aW9uIHNpZ25pZmljYW50bHkgYWJvdmUgdGhlIG5vaXNlIGxldmVsIG9mIHRoZQotICAgICAgICAgICAgIyBmb3ItbG9vcCBvdmVyaGVhZC4gCisgICAgICAgICAgICAjIGZvci1sb29wIG92ZXJoZWFkLgogCiAJICAgICMgRXhlY3V0ZSAyMCBvcGVyYXRpb25zIChhICs9IDEpOgogICAgICAgICAgICAgYSArPSAxCkBAIC0zNTgsOCArMzU4LDggQEAKICAgICAgICAgLSBjaGFuZ2VkIHRoZSBvdXRwdXQgZm9ybWF0IGEgYml0IHRvIG1ha2UgaXQgbG9vawogICAgICAgICAgIG5pY2VyCiAgICAgICAgIC0gcmVmYWN0b3JlZCB0aGUgQVBJcyBzb21ld2hhdAotICAxLjMrOiBTdGV2ZSBIb2xkZW4gYWRkZWQgdGhlIE5ld0luc3RhbmNlcyB0ZXN0IGFuZCB0aGUgZmlsdGVyaW5nIAotICAgICAgIG9wdGlvbiBkdXJpbmcgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQ7IHRoaXMgYWxzbyB0cmlnZ2VyZWQgYSBsb25nIAorICAxLjMrOiBTdGV2ZSBIb2xkZW4gYWRkZWQgdGhlIE5ld0luc3RhbmNlcyB0ZXN0IGFuZCB0aGUgZmlsdGVyaW5nCisgICAgICAgb3B0aW9uIGR1cmluZyB0aGUgTmVlZEZvclNwZWVkIHNwcmludDsgdGhpcyBhbHNvIHRyaWdnZXJlZCBhIGxvbmcKICAgICAgICBkaXNjdXNzaW9uIG9uIGhvdyB0byBpbXByb3ZlIGJlbmNobWFyayB0aW1pbmcgYW5kIGZpbmFsbHkKICAgICAgICByZXN1bHRlZCBpbiB0aGUgcmVsZWFzZSBvZiAyLjAKICAgMS4zOiBpbml0aWFsIGNoZWNraW4gaW50byB0aGUgUHl0aG9uIFNWTiByZXBvc2l0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9weW5jaGUvUkVBRE1FIGIvVG9vbHMvcHluY2hlL1JFQURNRQppbmRleCBkMjBlZmMzLi5lMDI2MTU5IDEwMDY0NAotLS0gYS9Ub29scy9weW5jaGUvUkVBRE1FCisrKyBiL1Rvb2xzL3B5bmNoZS9SRUFETUUKQEAgLTQ4LDcgKzQ4LDcgQEAKIAogICAgIC0taW5pdGZpbGUgZmlsZQogICAgIC1pIGZpbGUKLSAgICAgICAgQWx0ZXJuYXRlIGxvY2F0aW9uIG9mIHRoZSBwZXJzaXN0ZW50IGluaXRpYWxpemF0aW9uIGZpbGUuICBTZWUgCisgICAgICAgIEFsdGVybmF0ZSBsb2NhdGlvbiBvZiB0aGUgcGVyc2lzdGVudCBpbml0aWFsaXphdGlvbiBmaWxlLiAgU2VlCiAgICAgICAgIHRoZSBzZWN0aW9uIG9uIFBlcnNpc3RlbmN5IGJlbG93LgogCiAgICAgLS1pZ25vcmUKQEAgLTgwLDcgKzgwLDcgQEAKIAogICAgICAgICBweUNvbG9yQ2hvb3Nlci5hc2tjb2xvcigpCiAKLSAgICB3aGljaCB3aWxsIHBvcHVwIFB5bmNoZSBhcyBhIG1vZGFsIGRpYWxvZywgYW5kIHJldHVybiB0aGUgc2VsZWN0ZWQgCisgICAgd2hpY2ggd2lsbCBwb3B1cCBQeW5jaGUgYXMgYSBtb2RhbCBkaWFsb2csIGFuZCByZXR1cm4gdGhlIHNlbGVjdGVkCiAgICAgY29sb3IuCiAKICAgICBUaGVyZSBhcmUgc29tZSBVSSBkaWZmZXJlbmNlcyB3aGVuIHJ1bm5pbmcgYXMgYSBtb2RhbApAQCAtMTA2LDcgKzEwNiw3IEBACiAKICAgICAgICAgbWFzdGVyWypdCiAgICAgICAgICAgICB0aGUgbWFzdGVyIHdpbmRvdyB0byB1c2UgYXMgdGhlIHBhcmVudCBvZiB0aGUgbW9kYWwKLSAgICAgICAgICAgIGRpYWxvZy4gIFdpdGhvdXQgdGhpcyBhcmd1bWVudCwgcHlDb2xvckNob29zZXIgd2lsbCBjcmVhdGUgCisgICAgICAgICAgICBkaWFsb2cuICBXaXRob3V0IHRoaXMgYXJndW1lbnQsIHB5Q29sb3JDaG9vc2VyIHdpbGwgY3JlYXRlCiAgICAgICAgICAgICBpdHMgb3duIFRraW50ZXIuVGsgaW5zdGFuY2UgYXMgdGhlIG1hc3Rlci4gIFRoaXMgbWF5IG5vdAogICAgICAgICAgICAgYmUgd2hhdCB5b3Ugd2FudC4KIApAQCAtMTcwLDcgKzE3MCw3IEBACiAgICAgU2VsZWN0ZWQgY2hpcCBjb2xvciBleGFjdGx5IG1hdGNoZXMgdGhlIE5lYXJlc3QgY2hpcCBjb2xvciwgeW91CiAgICAgd2lsbCBzZWUgdGhlIGNvbG9yIG5hbWUgYXBwZWFyIGJlbG93IHRoZSBjb2xvciBzcGVjaWZpY2F0aW9uIGZvcgogICAgIHRoZSBTZWxlY3RlZCBjaGlwLgotICAgIAorCiAgICAgQ2xpY2tpbmcgb24gdGhlIE5lYXJlc3QgY29sb3IgY2hpcCBzZWxlY3RzIHRoYXQgY29sb3IuICBDb2xvcgogICAgIGRpc3RhbmNlIGlzIGNhbGN1bGF0ZWQgaW4gdGhlIDNEIHNwYWNlIG9mIHRoZSBSR0IgY29sb3Igc29saWQgYW5kCiAgICAgaWYgbW9yZSB0aGFuIG9uZSBjb2xvciBuYW1lIGlzIHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhlIHNlbGVjdGVkCkBAIC0zNjEsNyArMzYxLDcgQEAKICAgICBmb3JtYXQgZm9yIGJvdGggdmFsdWVzIGFuZCBuYW1lcwogCiAgICAgd2ViY29sb3JzLnR4dCAtLSBUaGUgMTQwIGNvbG9yIG5hbWVzIHRoYXQgVGltIFBldGVycyBhbmQgaGlzCi0gICAgc2lzdGVyIHNheSBOUyBhbmQgTVNJRSBib3RoIHVuZGVyc3RhbmQgKHdpdGggc29tZSBjb250cm92ZXJzeSBvdmVyIAorICAgIHNpc3RlciBzYXkgTlMgYW5kIE1TSUUgYm90aCB1bmRlcnN0YW5kICh3aXRoIHNvbWUgY29udHJvdmVyc3kgb3ZlcgogICAgIEFsaWNlQmx1ZSkuCiAKICAgICBuYW1lZGNvbG9ycy50eHQgLS0gYW4gYWx0ZXJuYXRpdmUgc2V0IG9mIE5ldHNjYXBlIGNvbG9ycy4KQEAgLTM2OSw4ICszNjksOCBAQAogICAgIFlvdSBjYW4gc3dpdGNoIGJldHdlZW4gZmlsZXMgYnkgY2hvb3NpbmcgIkxvYWQgcGFsZXR0ZS4uLiIgZnJvbQogICAgIHRoZSAiRmlsZSIgbWVudS4gIFRoaXMgYnJpbmdzIHVwIGEgc3RhbmRhcmQgVGsgZmlsZSBkaWFsb2cuCiAgICAgQ2hvb3NlIHRoZSBmaWxlIHlvdSB3YW50IGFuZCB0aGVuIGNsaWNrICJPayIuICBJZiBQeW5jaGUKLSAgICB1bmRlcnN0YW5kcyB0aGUgZm9ybWF0IGluIHRoaXMgZmlsZSwgaXQgd2lsbCBsb2FkIHRoZSBkYXRhYmFzZSBhbmQgCi0gICAgdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3dzLiAgSWYgbm90LCBpdCB3aWxsIGJyaW5nIHVwIGFuIGVycm9yIAorICAgIHVuZGVyc3RhbmRzIHRoZSBmb3JtYXQgaW4gdGhpcyBmaWxlLCBpdCB3aWxsIGxvYWQgdGhlIGRhdGFiYXNlIGFuZAorICAgIHVwZGF0ZSB0aGUgYXBwcm9wcmlhdGUgd2luZG93cy4gIElmIG5vdCwgaXQgd2lsbCBicmluZyB1cCBhbiBlcnJvcgogICAgIGRpYWxvZy4KIAogCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2RpZmYucHkgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKaW5kZXggOGJlNTI3Zi4uOTcyMGE0MyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpAQCAtOCw3ICs4LDcgQEAKIAogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBvcHRwYXJzZQoraW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIGFyZ3BhcnNlCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKIAogZGVmIGZpbGVfbXRpbWUocGF0aCk6CkBAIC0xOCwyMyArMTgsMjUgQEAKIAogZGVmIG1haW4oKToKIAotICAgIHVzYWdlID0gInVzYWdlOiAlcHJvZyBbb3B0aW9uc10gZnJvbWZpbGUgdG9maWxlIgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWMiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9kdWNlIGEgY29udGV4dCBmb3JtYXQgZGlmZiAoZGVmYXVsdCknKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1Byb2R1Y2UgYSB1bmlmaWVkIGZvcm1hdCBkaWZmJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLW0iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSdQcm9kdWNlIEhUTUwgc2lkZSBieSBzaWRlIGRpZmYgKGNhbiB1c2UgLWMgYW5kIC1sIGluIGNvbmp1bmN0aW9uKScpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1uIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0nUHJvZHVjZSBhIG5kaWZmIGZvcm1hdCBkaWZmJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWwiLCAiLS1saW5lcyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MywgaGVscD0nU2V0IG51bWJlciBvZiBjb250ZXh0IGxpbmVzIChkZWZhdWx0IDMpJykKLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICBpZiBsZW4oYXJncykgPT0gMDoKLSAgICAgICAgcGFyc2VyLnByaW50X2hlbHAoKQotICAgICAgICBzeXMuZXhpdCgxKQotICAgIGlmIGxlbihhcmdzKSAhPSAyOgotICAgICAgICBwYXJzZXIuZXJyb3IoIm5lZWQgdG8gc3BlY2lmeSBib3RoIGEgZnJvbWZpbGUgYW5kIHRvZmlsZSIpCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgYSBjb250ZXh0IGZvcm1hdCBkaWZmIChkZWZhdWx0KScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvZHVjZSBhIHVuaWZpZWQgZm9ybWF0IGRpZmYnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1tJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb2R1Y2UgSFRNTCBzaWRlIGJ5IHNpZGUgZGlmZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoY2FuIHVzZSAtYyBhbmQgLWwgaW4gY29uanVuY3Rpb24pJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm9kdWNlIGEgbmRpZmYgZm9ybWF0IGRpZmYnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGluZXMnLCB0eXBlPWludCwgZGVmYXVsdD0zLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2V0IG51bWJlciBvZiBjb250ZXh0IGxpbmVzIChkZWZhdWx0IDMpJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdmcm9tZmlsZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgndG9maWxlJykKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgbiA9IG9wdGlvbnMubGluZXMKLSAgICBmcm9tZmlsZSwgdG9maWxlID0gYXJncworICAgIGZyb21maWxlID0gb3B0aW9ucy5mcm9tZmlsZQorICAgIHRvZmlsZSA9IG9wdGlvbnMudG9maWxlCiAKICAgICBmcm9tZGF0ZSA9IGZpbGVfbXRpbWUoZnJvbWZpbGUpCiAgICAgdG9kYXRlID0gZmlsZV9tdGltZSh0b2ZpbGUpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2R1dHJlZS5kb2MgYi9Ub29scy9zY3JpcHRzL2R1dHJlZS5kb2MKaW5kZXggMmEwOTQyNi4uOTdiZDJlMiAxMDA2NDQKLS0tIGEvVG9vbHMvc2NyaXB0cy9kdXRyZWUuZG9jCisrKyBiL1Rvb2xzL3NjcmlwdHMvZHV0cmVlLmRvYwpAQCAtMzQsMTMgKzM0LDEzIEBACiA6ICAgICAgfCAgICAgICAxIHNtLmJhawogCiBBdCBmaXJzdCBJIHRob3VnaHQgSSBjb3VsZCBqdXN0IGtlZXAgb25lIGxvY2FsIGxpc3QgYXJvdW5kCi1hdCBvbmNlLCBidXQgdGhpcyBzZWVtcyBpbmhlcmVudGx5IHJlY3Vyc2l2ZS4gIFdoaWNoIG1lYW5zIAorYXQgb25jZSwgYnV0IHRoaXMgc2VlbXMgaW5oZXJlbnRseSByZWN1cnNpdmUuICBXaGljaCBtZWFucwogSSBuZWVkIGFuIHJlYWwgcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlLiAgTWF5YmUgeW91IGNvdWxkCiBkbyBpdCB3aXRoIG9uZSBvZiB0aGUgJWFzc29jIGFycmF5cyBMYXJyeSB1c2VzIGluIHRoZSBiZWdhdAogcHJvZ3JhbXMsIGJ1dCBJIGJyb2tlIGRvd24gYW5kIGdvdCBkaXJ0eS4gIEkgdGhpbmsgdGhlIGhhcmRlc3QKLXBhcnQgd2FzIG1hdGNoaW5nIEZlbGl4J3MgZGVzaXJlZCBvdXRwdXQgZXhhY3RseS4gIEl0J3Mgbm90IAorcGFydCB3YXMgbWF0Y2hpbmcgRmVsaXgncyBkZXNpcmVkIG91dHB1dCBleGFjdGx5LiAgSXQncyBub3QKIGJsYXppbmdseSBmYXN0OiBJIHNob3VsZCBwcm9iYWJseSBpbmxpbmUgdGhlICZjaGlsZG9mIHJvdXRpbmUsCi1idXQgaXQgKndhcyogZmFzdGVyIHRvIHdyaXRlIHRoYW4gSSBjb3VsZCBoYXZlIHdyaXR0ZW4gdGhlIAorYnV0IGl0ICp3YXMqIGZhc3RlciB0byB3cml0ZSB0aGFuIEkgY291bGQgaGF2ZSB3cml0dGVuIHRoZQogZXF1aXZhbGVudCBDIHByb2dyYW0uCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9lcHRhZ3MucHkgYi9Ub29scy9zY3JpcHRzL2VwdGFncy5weQppbmRleCA2NzFmZjExLi40MDFhYzdlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2VwdGFncy5weQorKysgYi9Ub29scy9zY3JpcHRzL2VwdGFncy5weQpAQCAtMjUsNyArMjUsNyBAQAogICAgICIiIkFwcGVuZCB0YWdzIGZvdW5kIGluIGZpbGUgbmFtZWQgJ2ZpbGVuYW1lJyB0byB0aGUgb3BlbiBmaWxlICdvdXRmcCciIiIKICAgICB0cnk6CiAgICAgICAgIGZwID0gb3BlbihmaWxlbmFtZSwgJ3InKQotICAgIGV4Y2VwdDoKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnQ2Fubm90IG9wZW4gJXNcbiclZmlsZW5hbWUpCiAgICAgICAgIHJldHVybgogICAgIGNoYXJubyA9IDAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weSBiL1Rvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25saW1pdC5weQppbmRleCAxMTcxMTQ2Li5iMjg0MmE2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpbmRfcmVjdXJzaW9ubGltaXQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbmxpbWl0LnB5CkBAIC05Miw3ICs5Miw3IEBACiBkZWYgdGVzdF9jb21waWxlcl9yZWN1cnNpb24oKToKICAgICAjIFRoZSBjb21waWxlciB1c2VzIGEgc2NhbGluZyBmYWN0b3IgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGxldmVscwogICAgICMgb2YgcmVjdXJzaW9uLiBUaGlzIGlzIGEgc2FuaXR5IGNoZWNrIG9mIHRoYXQgc2NhbGluZyB0byBlbnN1cmUKLSAgICAjIGl0IHN0aWxsIHJhaXNlcyBSdW50aW1lRXJyb3IgZXZlbiBhdCBoaWdoZXIgcmVjdXJzaW9uIGxpbWl0cworICAgICMgaXQgc3RpbGwgcmFpc2VzIFJlY3Vyc2lvbkVycm9yIGV2ZW4gYXQgaGlnaGVyIHJlY3Vyc2lvbiBsaW1pdHMKICAgICBjb21waWxlKCIoKSIgKiAoMTAgKiBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSksICI8c2luZ2xlPiIsICJzaW5nbGUiKQogCiBkZWYgY2hlY2tfbGltaXQobiwgdGVzdF9mdW5jX25hbWUpOgpAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgIyBBdHRyaWJ1dGVFcnJvciBjYW4gYmUgcmFpc2VkIGJlY2F1c2Ugb2YgdGhlIHdheSBlLmcuIFB5RGljdF9HZXRJdGVtKCkKICAgICAjIHNpbGVuY2VzIGFsbCBleGNlcHRpb25zIGFuZCByZXR1cm5zIE5VTEwsIHdoaWNoIGlzIHVzdWFsbHkgaW50ZXJwcmV0ZWQKICAgICAjIGFzICJtaXNzaW5nIGF0dHJpYnV0ZSIuCi0gICAgZXhjZXB0IChSdW50aW1lRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICBleGNlcHQgKFJlY3Vyc2lvbkVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgICAgIHBhc3MKICAgICBlbHNlOgogICAgICAgICBwcmludCgiWWlrZXMhIikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MmY5YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CkBAIC0wLDAgKzEsNTQgQEAKKyMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBvcGNvZGUuaCBoZWFkZXIgZmlsZS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorCitpbXBvcnQgc3lzCitoZWFkZXIgPSAiIiIvKiBBdXRvLWdlbmVyYXRlZCBieSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5ICovCisjaWZuZGVmIFB5X09QQ09ERV9ICisjZGVmaW5lIFB5X09QQ09ERV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKworICAgIC8qIEluc3RydWN0aW9uIG9wY29kZXMgZm9yIGNvbXBpbGVkIGNvZGUgKi8KKyIiIgorCitmb290ZXIgPSAiIiIKKy8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KKyAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQorICAgYXMgd2Ugd2FudCBpdCB0byBiZSBhdmFpbGFibGUgdG8gYm90aCBmcmFtZW9iamVjdC5jIGFuZCBjZXZhbC5jLCB3aGlsZQorICAgcmVtYWluaW5nIHByaXZhdGUuKi8KKyNkZWZpbmUgRVhDRVBUX0hBTkRMRVIgMjU3CisKKworZW51bSBjbXBfb3Age1B5Q21wX0xUPVB5X0xULCBQeUNtcF9MRT1QeV9MRSwgUHlDbXBfRVE9UHlfRVEsIFB5Q21wX05FPVB5X05FLAorICAgICAgICAgICAgICAgIFB5Q21wX0dUPVB5X0dULCBQeUNtcF9HRT1QeV9HRSwgUHlDbXBfSU4sIFB5Q21wX05PVF9JTiwKKyAgICAgICAgICAgICAgICBQeUNtcF9JUywgUHlDbXBfSVNfTk9ULCBQeUNtcF9FWENfTUFUQ0gsIFB5Q21wX0JBRH07CisKKyNkZWZpbmUgSEFTX0FSRyhvcCkgKChvcCkgPj0gSEFWRV9BUkdVTUVOVCkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfT1BDT0RFX0ggKi8KKyIiIgorCisKK2RlZiBtYWluKG9wY29kZV9weSwgb3V0ZmlsZT0nSW5jbHVkZS9vcGNvZGUuaCcpOgorICAgIG9wY29kZSA9IHt9CisgICAgZXhlYyhvcGVuKG9wY29kZV9weSkucmVhZCgpLCBvcGNvZGUpCisgICAgb3BtYXAgPSBvcGNvZGVbJ29wbWFwJ10KKyAgICB3aXRoIG9wZW4ob3V0ZmlsZSwgJ3cnKSBhcyBmb2JqOgorICAgICAgICBmb2JqLndyaXRlKGhlYWRlcikKKyAgICAgICAgZm9yIG5hbWUgaW4gb3Bjb2RlWydvcG5hbWUnXToKKyAgICAgICAgICAgIGlmIG5hbWUgaW4gb3BtYXA6CisgICAgICAgICAgICAgICAgZm9iai53cml0ZSgiI2RlZmluZSAlLTIzcyAlM3NcbiIgJSAobmFtZSwgb3BtYXBbbmFtZV0pKQorICAgICAgICAgICAgaWYgbmFtZSA9PSAnUE9QX0VYQ0VQVCc6ICMgU3BlY2lhbCBlbnRyeSBmb3IgSEFWRV9BUkdVTUVOVAorICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoIiNkZWZpbmUgJS0yM3MgJTNkXG4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0hBVkVfQVJHVU1FTlQnLCBvcGNvZGVbJ0hBVkVfQVJHVU1FTlQnXSkpCisgICAgICAgIGZvYmoud3JpdGUoZm9vdGVyKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbihzeXMuYXJndlsxXSwgc3lzLmFyZ3ZbMl0pCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weSBiL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CmluZGV4IGE2YzVkYTMuLmI1ODJlMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CkBAIC0zMyw4ICszMyw2IEBACiAgICAgIyBBbGxvdyB1c2VyLXNwZWNpZmllZCBpbnRlcnByZXRlciBvcHRpb25zIHRvIG92ZXJyaWRlIG91ciBkZWZhdWx0cy4KICAgICBhcmdzLmV4dGVuZCh0ZXN0LnN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCiAKLSAgICAjIFdvcmthcm91bmQgZm9yIGlzc3VlICMyMDM1NQotICAgIG9zLmVudmlyb24ucG9wKCJQWVRIT05XQVJOSU5HUyIsIE5vbmUpCiAgICAgIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMjAzNjEKICAgICBhcmdzLmV4dGVuZChbJy1XJywgJ2Vycm9yOjpCeXRlc1dhcm5pbmcnXSkKIApAQCAtNTAsNyArNDgsMTEgQEAKICAgICAgICAgYXJncy5leHRlbmQoWyctdScsICdhbGwsLWxhcmdlZmlsZSwtYXVkaW8sLWd1aSddKQogICAgIGFyZ3MuZXh0ZW5kKHJlZ3J0ZXN0X2FyZ3MpCiAgICAgcHJpbnQoJyAnLmpvaW4oYXJncykpCi0gICAgb3MuZXhlY3Yoc3lzLmV4ZWN1dGFibGUsIGFyZ3MpCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgY2FsbAorICAgICAgICBzeXMuZXhpdChjYWxsKGFyZ3MpKQorICAgIGVsc2U6CisgICAgICAgIG9zLmV4ZWN2KHN5cy5leGVjdXRhYmxlLCBhcmdzKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weSBiL1Rvb2xzL3NjcmlwdHMvd2luX2FkZDJwYXRoLnB5CmluZGV4IGM4NWJlYTUuLjFjOWFlZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvd2luX2FkZDJwYXRoLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvd2luX2FkZDJwYXRoLnB5CkBAIC0yMiw3ICsyMiw4IEBACiAgICAgc2NyaXB0cyA9IG9zLnBhdGguam9pbihweXRob25wYXRoLCAiU2NyaXB0cyIpCiAgICAgYXBwZGF0YSA9IG9zLmVudmlyb25bIkFQUERBVEEiXQogICAgIGlmIGhhc2F0dHIoc2l0ZSwgIlVTRVJfU0lURSIpOgotICAgICAgICB1c2VycGF0aCA9IHNpdGUuVVNFUl9TSVRFLnJlcGxhY2UoYXBwZGF0YSwgIiVBUFBEQVRBJSIpCisgICAgICAgIHVzZXJzaXRlID0gc2l0ZS5VU0VSX1NJVEUucmVwbGFjZShhcHBkYXRhLCAiJUFQUERBVEElIikKKyAgICAgICAgdXNlcnBhdGggPSBvcy5wYXRoLmRpcm5hbWUodXNlcnNpdGUpCiAgICAgICAgIHVzZXJzY3JpcHRzID0gb3MucGF0aC5qb2luKHVzZXJwYXRoLCAiU2NyaXB0cyIpCiAgICAgZWxzZToKICAgICAgICAgdXNlcnNjcmlwdHMgPSBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9zc2wvc3Nsc3BlZWQudmN4cHJvaiBiL1Rvb2xzL3NzbC9zc2xzcGVlZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYzQxMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zc2wvc3Nsc3BlZWQudmN4cHJvagpAQCAtMCwwICsxLDcwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0YwNjhCQ0NGLUMwRDYtNDc4RC1BMkM1LTI2QkEzMjM3Qzk5Mn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNzbHNwZWVkPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIAorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRccHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9Ii4uXC4uXFBDQnVpbGRcb3BlbnNzbC5wcm9wcyIgLz4KKyAgCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8T3JpZ2luYWxPdXREaXI+JChPdXREaXIpPC9PcmlnaW5hbE91dERpcj4KKyAgICA8T3V0RGlyPiQoTVNCdWlsZFByb2plY3REaXJlY3RvcnkpXCQoQXJjaE5hbWUpXDwvT3V0RGlyPgorICAgIDxJbnREaXI+JChNU0J1aWxkUHJvamVjdERpcmVjdG9yeSlcJChBcmNoTmFtZSlcb2JqXDwvSW50RGlyPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICAKKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIAorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChvcGVuc3NsRGlyKWFwcHNcc3BlZWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQob3BlbnNzbERpcilhcHBzXGFwcHMuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIAorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbEluY0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7Y3J5cHQzMi5saWI7bGliZWF5JChQeURlYnVnRXh0KS5saWI7c3NsZWF5JChQeURlYnVnRXh0KS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPiQoT3JpZ2luYWxPdXREaXIpOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKworICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9Ii4uXC4uXFBDQnVpbGRcc3NsZWF5LnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezEwNjE1YjI0LTczYmYtNGVmYS05M2FhLTIzNjkxNjMyMTMxN308L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSIuLlwuLlxQQ0J1aWxkXGxpYmVheS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntlNWIwNGNjMC1lYjRjLTQyYWItYjRkYy0xOGVmOTVmODY0YjB9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weSBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKaW5kZXggOThiMzk3NS4uNGMyMTQ2OSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQorKysgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CkBAIC0xMjcsNyArMTI3LDcgQEAKICAgICAgICAgcmV0dXJuICdOb25lJwogICAgIHRyeToKICAgICAgICAgbGVuKHQpCi0gICAgZXhjZXB0OgorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgIHJldHVybiAnMHglMCpYJyAlIChwcmVjaXNpb24sIHQpCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gJygnICsgJywgJy5qb2luKFsnMHglMCpYJyAlIChwcmVjaXNpb24sIGl0ZW0pCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CmluZGV4IDc2MzZhOTUuLjcxM2UxNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CkBAIC00Miw3ICs0Miw3IEBACiAjICAgKiBEb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QsIGFuZAogIyAgICogRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CiAjICAgKiBEb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0ICh0d28gb2NjdXJyZW5jZXMpCi1VTklEQVRBX1ZFUlNJT04gPSAiNi4zLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiOC4wLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKQEAgLTk5LDEwICs5OSwxMSBAQAogIyB0aGVzZSByYW5nZXMgbmVlZCB0byBtYXRjaCB1bmljb2RlZGF0YS5jOmlzX3VuaWZpZWRfaWRlb2dyYXBoCiBjamtfcmFuZ2VzID0gWwogICAgICgnMzQwMCcsICc0REI1JyksCi0gICAgKCc0RTAwJywgJzlGQ0MnKSwKKyAgICAoJzRFMDAnLCAnOUZENScpLAogICAgICgnMjAwMDAnLCAnMkE2RDYnKSwKICAgICAoJzJBNzAwJywgJzJCNzM0JyksCi0gICAgKCcyQjc0MCcsICcyQjgxRCcpCisgICAgKCcyQjc0MCcsICcyQjgxRCcpLAorICAgICgnMkI4MjAnLCAnMkNFQTEnKSwKIF0KIAogZGVmIG1ha2V0YWJsZXModHJhY2U9MCk6CmRpZmYgLS1naXQgYS9Ub29scy91bml0dGVzdGd1aS9SRUFETUUudHh0IGIvVG9vbHMvdW5pdHRlc3RndWkvUkVBRE1FLnR4dAppbmRleCA0ZDgwOWRmLi4wYTQ3N2UxIDEwMDY0NAotLS0gYS9Ub29scy91bml0dGVzdGd1aS9SRUFETUUudHh0CisrKyBiL1Rvb2xzL3VuaXR0ZXN0Z3VpL1JFQURNRS50eHQKQEAgLTEsNSArMSw1IEBACi11bml0dGVzdGd1aS5weSBpcyBHVUkgZnJhbWV3b3JrIGFuZCBhcHBsaWNhdGlvbiBmb3IgdXNlIHdpdGggUHl0aG9uIHVuaXQgCi10ZXN0aW5nIGZyYW1ld29yay4gSXQgZXhlY3V0ZXMgdGVzdHMgd3JpdHRlbiB1c2luZyB0aGUgZnJhbWV3b3JrIHByb3ZpZGVkIAordW5pdHRlc3RndWkucHkgaXMgR1VJIGZyYW1ld29yayBhbmQgYXBwbGljYXRpb24gZm9yIHVzZSB3aXRoIFB5dGhvbiB1bml0Cit0ZXN0aW5nIGZyYW1ld29yay4gSXQgZXhlY3V0ZXMgdGVzdHMgd3JpdHRlbiB1c2luZyB0aGUgZnJhbWV3b3JrIHByb3ZpZGVkCiBieSB0aGUgJ3VuaXR0ZXN0JyBtb2R1bGUuCiAKIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieSBTdGV2ZSBQdXJjZWxsLCBmcm9tOgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDdiOTFmOTEuLmU4MjNhMDggMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNiArMSw2IEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNC4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy41LgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy8+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+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTExODI2LDYgKzEyMTQ0LDcgQEAKICRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKIAorICAgICAgICBMSUJTPSIkTElCUyAtbHJ0IgogICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMSIgPj5jb25mZGVmcy5oCiAKIApAQCAtMTMwNzgsMTIgKzEzMzk3LDEzIEBACiAgIHJldHVybiAwOwogfQogX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgIGhhdmVfZ2NjX2FzbV9mb3JfeDY0PXllcwogZWxzZQogICBoYXZlX2djY19hc21fZm9yX3g2ND1ubwogZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID4mNQogJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPiY2OyB9CiBpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94NjQiID0geWVzCkBAIC0xMzI1NCwxMiArMTM1NzQsMTMgQEAKICAgcmV0dXJuIDA7CiB9CiBfQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAgaGF2ZV9nY2NfYXNtX2Zvcl94ODc9eWVzCiBlbHNlCiAgIGhhdmVfZ2NjX2FzbV9mb3JfeDg3PW5vCiBmaQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX3g4NyIgPiY1CiAkYXNfZWNobyAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA+JjY7IH0KIGlmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXMKQEAgLTEzMjY5LDYgKzEzNTkwLDM5IEBACiAKIGZpCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgbWM2ODg4MSBmcGNyLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIHVuc2lnbmVkIGludCBmcGNyOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKGZwY3IpKTsKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAoZnBjcikpOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPXllcworZWxzZQorICBoYXZlX2djY19hc21fZm9yX21jNjg4ODE9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID4mNQorJGFzX2VjaG8gIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID4mNjsgfQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MSIgPSB5ZXMKK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfQVNNX0ZPUl9NQzY4ODgxIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjIERldGVjdCB3aGV0aGVyIHN5c3RlbSBhcml0aG1ldGljIGlzIHN1YmplY3QgdG8geDg3LXN0eWxlIGRvdWJsZQogIyByb3VuZGluZyBpc3N1ZXMuICBUaGUgcmVzdWx0IG9mIHRoaXMgdGVzdCBoYXMgbGl0dGxlIG1lYW5pbmcgb24gbm9uCiAjIElFRUUgNzU0IHBsYXRmb3Jtcy4gIE9uIElFRUUgNzU0LCB0ZXN0IHNob3VsZCByZXR1cm4gMSBpZiByb3VuZGluZwpAQCAtMTQwMTEsMTMgKzE0MzY1LDEzIEBACiAkYXNfZWNobyAiJEFCSUZMQUdTIiA+JjY7IH0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgU09BQkkiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgU09BQkkuLi4gIiA+JjY7IH0KLVNPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30KK1NPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30ke1BMQVRGT1JNX1RSSVBMRVQ6Ky0kUExBVEZPUk1fVFJJUExFVH0KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkU09BQkkiID4mNQogJGFzX2VjaG8gIiRTT0FCSSIgPiY2OyB9CiAKIAogY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgIExpbnV4KnxHTlUqKQorICAgIExpbnV4KnxHTlUqfERhcndpbikKIAlFWFRfU1VGRklYPS4ke1NPQUJJfSR7U0hMSUJfU1VGRklYfTs7CiAgICAgKikKIAlFWFRfU1VGRklYPSR7U0hMSUJfU1VGRklYfTs7CkBAIC0xNDQxOCw2ICsxNDc3Miw0OSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcHBlbmRfaGlzdG9yeSBpbiAtbHJlYWRsaW5lIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcHBlbmRfaGlzdG9yeSBpbiAtbHJlYWRsaW5lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9yZWFkbGluZV9hcHBlbmRfaGlzdG9yeSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scmVhZGxpbmUgJFJFQURMSU5FX0xJQlMgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgYXBwZW5kX2hpc3RvcnkgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBhcHBlbmRfaGlzdG9yeSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3Rvcnk9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9yZWFkbGluZV9hcHBlbmRfaGlzdG9yeT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcmVhZGxpbmVfYXBwZW5kX2hpc3RvcnkiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkxfQVBQRU5EX0hJU1RPUlkgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKwogIyBFbmQgb2YgcmVhZGxpbmUgY2hlY2tzOiByZXN0b3JlIExJQlMKIExJQlM9JExJQlNfbm9fcmVhZGxpbmUKIApAQCAtMTUzMzQsNyArMTU3MzEsNyBAQAogZG9uZQogCiAKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMgUHJvZ3JhbXMiCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBidWlsZCBkaXJlY3RvcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYnVpbGQgZGlyZWN0b3JpZXMuLi4gIiA+JjY7IH0KIGZvciBkaXIgaW4gJFNSQ0RJUlM7IGRvCkBAIC0xNTQ3NSw2ICsxNTg3Miw3MiBAQAogICAgIGVzYWMKIGZpCiAKKyMgQ2hlY2sgZm9yIHN0ZGF0b21pYy5oCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdGRhdG9taWMuaCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3RkYXRvbWljLmguLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPHN0ZGF0b21pYy5oPgorICAgIGF0b21pY19pbnQgdmFsdWUgPSBBVE9NSUNfVkFSX0lOSVQoMSk7CisgICAgX0F0b21pYyB2b2lkICpweV9hdG9taWNfYWRkcmVzcyA9ICh2b2lkKikgJnZhbHVlOworICAgIGludCBtYWluKCkgeworICAgICAgaW50IGxvYWRlZF92YWx1ZSA9IGF0b21pY19sb2FkKCZ2YWx1ZSk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisKKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfc3RkYXRvbWljX2g9eWVzCitlbHNlCisgIGhhdmVfc3RkYXRvbWljX2g9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3RkYXRvbWljX2giID4mNQorJGFzX2VjaG8gIiRoYXZlX3N0ZGF0b21pY19oIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfc3RkYXRvbWljX2giID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1REX0FUT01JQyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworIyBDaGVjayBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucy4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKKyAgICB2b2xhdGlsZSBpbnQgdmFsID0gMTsKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIF9fYXRvbWljX2xvYWRfbigmdmFsLCBfX0FUT01JQ19TRVFfQ1NUKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9idWlsdGluX2F0b21pYz15ZXMKK2Vsc2UKKyAgaGF2ZV9idWlsdGluX2F0b21pYz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9idWlsdGluX2F0b21pYyIgPiY1CiskYXNfZWNobyAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID4mNjsgfQorCitpZiB0ZXN0ICIkaGF2ZV9idWlsdGluX2F0b21pYyIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9CVUlMVElOX0FUT01JQyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogIyBlbnN1cmVwaXAgb3B0aW9uCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlbnN1cmVwaXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVuc3VyZXBpcC4uLiAiID4mNjsgfQpAQCAtMTU1MDAsNiArMTU5NjMsNzQgQEAKICRhc19lY2hvICIkRU5TVVJFUElQIiA+JjY7IH0KIAogCisjIGNoZWNrIGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIG9mIGEgZF90eXBlIGZpZWxkIGFuZCBEVF9VTktOT1dOIGlzIGRlZmluZWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPGRpcmVudC5oPgorCisgICAgaW50IG1haW4oKSB7CisgICAgICBzdHJ1Y3QgZGlyZW50IGVudHJ5OworICAgICAgcmV0dXJuIGVudHJ5LmRfdHlwZSA9PSBEVF9VTktOT1dOOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9kaXJlbnRfZF90eXBlPXllcworZWxzZQorICBoYXZlX2RpcmVudF9kX3R5cGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2RpcmVudF9kX3R5cGUiID4mNQorJGFzX2VjaG8gIiRoYXZlX2RpcmVudF9kX3R5cGUiID4mNjsgfQorCitpZiB0ZXN0ICIkaGF2ZV9kaXJlbnRfZF90eXBlIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0RJUkVOVF9EX1RZUEUgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgY2hlY2sgaWYgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgYXZhaWxhYmxlCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCisgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgY29uc3QgaW50IGZsYWdzID0gMDsKKyAgICAgICAgY2hhciBidWZmZXJbMV07CisgICAgICAgIGludCBuOworICAgICAgICAvKiBpZ25vcmUgdGhlIHJlc3VsdCwgUHl0aG9uIGNoZWNrcyBmb3IgRU5PU1lTIGF0IHJ1bnRpbWUgKi8KKyAgICAgICAgKHZvaWQpc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCBmbGFncyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD15ZXMKK2Vsc2UKKyAgaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGwiID4mNQorJGFzX2VjaG8gIiRoYXZlX2dldHJhbmRvbV9zeXNjYWxsIiA+JjY7IH0KKworaWYgdGVzdCAiJGhhdmVfZ2V0cmFuZG9tX3N5c2NhbGwiID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjIE1pc2MvcHl0aG9uLWNvbmZpZy5zaCIKIApAQCAtMTYwMTIsNyArMTY1NDMsNyBAQAogIyByZXBvcnQgYWN0dWFsIGlucHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCiAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgogYWNfbG9nPSIKLVRoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjQsIHdoaWNoIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC0xNjA3NCw3ICsxNjYwNSw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy40CitweXRob24gY29uZmlnLnN0YXR1cyAzLjUKIGNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSwKICAgd2l0aCBvcHRpb25zIFxcIlwkYWNfY3NfY29uZmlnXFwiCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzMzk0ZDg0Li41NmE3M2RmIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDcgKzMsNyBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjQpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNSkKIAogQUNfUFJFUkVRKDIuNjUpCiAKQEAgLTQyNSw3ICs0MjUsNyBAQAogCWVzYWMKIAlfUFlUSE9OX0hPU1RfUExBVEZPUk09IiRNQUNIREVQJHtfaG9zdF9jcHU6Ky0kX2hvc3RfY3B1fSIKIGZpCi0JCisKICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBzdGFuZCBfWE9QRU5fU09VUkNFIGJlaW5nIGRlZmluZWQgYXQgYWxsOyB0aGV5CiAjIGRpc2FibGUgZmVhdHVyZXMgaWYgaXQgaXMgZGVmaW5lZCwgd2l0aG91dCBhbnkgbWVhbnMgdG8gYWNjZXNzIHRoZXNlCiAjIGZlYXR1cmVzIGFzIGV4dGVuc2lvbnMuIEZvciB0aGVzZSBzeXN0ZW1zLCB3ZSBza2lwIHRoZSBkZWZpbml0aW9uIG9mCkBAIC01NTYsOSArNTU2LDYgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKCRNQUNIREVQKQogCi1BQ19TVUJTVChQTEFURElSKQotUExBVERJUj1wbGF0LSRNQUNIREVQCi0KICMgUmVjb3JkIHRoZSBjb25maWd1cmUtdGltZSB2YWx1ZSBvZiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQsCiAjIGl0IG1heSBpbmZsdWVuY2UgdGhlIHdheSB3ZSBjYW4gYnVpbGQgZXh0ZW5zaW9ucywgc28gZGlzdHV0aWxzCiAjIG5lZWRzIHRvIGNoZWNrIGl0CkBAIC02NjcsNiArNjY0LDggQEAKIAlmaQogZmkKIEFDX1BST0dfQ0MKK0FDX1BST0dfQ1BQCitBQ19QUk9HX0dSRVAKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzI0LDYgKzcyMywxNDIgQEAKIGZpCiAKIAorTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQorQUNfU1VCU1QoTVVMVElBUkNIKQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCBiYXNlZCBvbiBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3NdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyN1bmRlZiBiZmluCisjdW5kZWYgY3JpcworI3VuZGVmIGZyMzAKKyN1bmRlZiBsaW51eAorI3VuZGVmIGhwcGEKKyN1bmRlZiBocHV4CisjdW5kZWYgaTM4NgorI3VuZGVmIG1pcHMKKyN1bmRlZiBwb3dlcnBjCisjdW5kZWYgc3BhcmMKKyN1bmRlZiB1bml4CisjaWYgZGVmaW5lZChfX2xpbnV4X18pCisjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKKyAgICAgICAgeDg2XzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIHg4Nl82NC1saW51eC1nbnV4MzIKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWdudQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCisjICBpZiBkZWZpbmVkKF9fSUxQMzJfXykKKyAgICAgICAgYWFyY2g2NF9iZV9pbHAzMi1saW51eC1nbnUKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NF9iZS1saW51eC1nbnUKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX2FscGhhX18pCisgICAgICAgIGFscGhhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmloZgorIyAgZWxzZQorICAgICAgICBhcm1lYi1saW51eC1nbnVlYWJpaGYKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fQVJNX1BDU19WRlApCisjICBpZiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWdudWVhYmkKKyMgIGVsc2UKKyAgICAgICAgYXJtZWItbGludXgtZ251ZWFiaQorIyAgZW5kaWYKKyMgZWxpZiBkZWZpbmVkKF9faHBwYV9fKQorICAgICAgICBocHBhLWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19pYTY0X18pCisgICAgICAgIGlhNjQtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX202OGtfXykgJiYgIWRlZmluZWQoX19tY29sZGZpcmVfXykKKyAgICAgICAgbTY4ay1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtZ251CisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJTjMyCisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMgorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19taXBzX2hhcmRfZmxvYXQpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzLWxpbnV4LWdudQorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSU4zMgorICAgICAgICBtaXBzNjQtbGludXgtZ251YWJpbjMyCisjICBlbGlmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKyAgICAgICAgbWlwczY0LWxpbnV4LWdudWFiaTY0CisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19vcjFrX18pCisgICAgICAgIG9yMWstbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgJiYgZGVmaW5lZChfX1NQRV9fKQorICAgICAgICBwb3dlcnBjLWxpbnV4LWdudXNwZQorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyMgIGlmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHBvd2VycGM2NGxlLWxpbnV4LWdudQorIyAgZWxzZQorICAgICAgICBwb3dlcnBjNjQtbGludXgtZ251CisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgICAgIHBvd2VycGMtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3MzOTB4X18pCisgICAgICAgIHMzOTB4LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zMzkwX18pCisgICAgICAgIHMzOTAtbGludXgtZ251CisjIGVsaWYgZGVmaW5lZChfX3NoX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCisgICAgICAgIHNoNC1saW51eC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9fc3BhcmNfXykgJiYgZGVmaW5lZChfX2FyY2g2NF9fKQorICAgICAgICBzcGFyYzY0LWxpbnV4LWdudQorIyBlbGlmIGRlZmluZWQoX19zcGFyY19fKQorICAgICAgICBzcGFyYy1saW51eC1nbnUKKyMgZWxzZQorIyAgIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisjIGlmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1rZnJlZWJzZC1nbnUKKyMgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICBpMzg2LWtmcmVlYnNkLWdudQorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fZ251X2h1cmRfXykKKyAgICAgICAgaTM4Ni1nbnUKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICBkYXJ3aW4KKyNlbHNlCisjIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAorI2VuZGlmCisKK0VPRgorCitpZiAkQ1BQIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBQTEFURk9STV9UUklQTEVUPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCcgfCB0ciAtZCAnIAknYAorICBBQ19NU0dfUkVTVUxUKFskUExBVEZPUk1fVFJJUExFVF0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQorICBmaQorZmkgCitQTEFURElSPXBsYXQtJE1BQ0hERVAKK0FDX1NVQlNUKFBMQVRESVIpCitBQ19TVUJTVChQTEFURk9STV9UUklQTEVUKQorCisKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgogTERGTEFHUz0iJExERkxBR1MgLVdsLC0tbm8tYXMtbmVlZGVkIgpAQCAtNzkxLDEwICs5MjYsNiBAQAogICAgIGVzYWM7OwogZXNhYwogCi1NVUxUSUFSQ0g9JCgkQ0MgLS1wcmludC1tdWx0aWFyY2ggMj4vZGV2L251bGwpCi1BQ19TVUJTVChNVUxUSUFSQ0gpCi0KLQogQUNfU1VCU1QoTElCUkFSWSkKIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQogaWYgdGVzdCAteiAiJExJQlJBUlkiCkBAIC05NjMsMTEgKzEwOTQsNiBAQAogCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCiAJICBCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCiAJICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgJHtMRF9MSUJSQVJZX1BBVEg6Kzoke0xEX0xJQlJBUllfUEFUSH19Ci0JICBjYXNlICRhY19zeXNfc3lzdGVtIGluCi0JICAgICAgRnJlZUJTRCopCi0JCVNPVkVSU0lPTj1gZWNobyAkU09WRVJTSU9OfGN1dCAtZCAiLiIgLWYgMWAKLQkJOzsKLQkgIGVzYWMKIAkgIElOU1RTT05BTUU9IiRMRExJQlJBUlkiLiRTT1ZFUlNJT04KIAkgIGlmIHRlc3QgIiR3aXRoX3B5ZGVidWciICE9IHllcwogICAgICAgICAgIHRoZW4KQEAgLTEwNDIsNiArMTE2OCwxNSBAQAogICAgIEFTRExHRU49IiRQWVRIT04iCiBmaQogCitBQ19TVUJTVChPUENPREVIR0VOKQorQUNfQ0hFQ0tfUFJPR1MoUFlUSE9OLCBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uLCBub3QtZm91bmQpCitpZiB0ZXN0ICIkUFlUSE9OIiA9IG5vdC1mb3VuZDsgdGhlbgorICAgIE9QQ09ERUhHRU49IkBlY2hvIHB5dGhvbjogJFBZVEhPTiEgY2Fubm90IHJ1biBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IgorZWxzZQorICAgIE9QQ09ERUhHRU49IiRQWVRIT04iCitmaQorCisKIAogY2FzZSAkTUFDSERFUCBpbgogYnNkb3MqfGhwKnxIUCopCkBAIC0xMjM2LDYgKzEzNzEsNTIgQEAKICAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgogICAgIGZpCiAKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdzaWduLWNvbXBhcmUiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPXllcworCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3NpZ25fY29tcGFyZV93YXJuaW5nPW5vCisJIF0pKQorICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZykKKworICAgIGlmIHRlc3QgJGFjX2N2X2VuYWJsZV9zaWduX2NvbXBhcmVfd2FybmluZyA9IHllcworICAgIHRoZW4KKyAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xc2lnbi1jb21wYXJlIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb24gJENDIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW5yZWFjaGFibGUtY29kZSIKKyAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9lbmFibGVfdW5yZWFjaGFibGVfY29kZV93YXJuaW5nLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorCSBdLFsKKyAgICAgICAgICAgYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZz15ZXMKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmc9bm8KKwkgXSkpCisgICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZW5hYmxlX3VucmVhY2hhYmxlX2NvZGVfd2FybmluZykKKworICAgICMgRG9uJ3QgZW5hYmxlIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZyBpbiBkZWJ1ZyBtb2RlLCBzaW5jZSBpdCB1c3VhbGx5CisgICAgIyByZXN1bHRzIGluIG5vbi1zdGFuZGFyZCBjb2RlIHBhdGhzLgorICAgIGlmIHRlc3QgJGFjX2N2X2VuYWJsZV91bnJlYWNoYWJsZV9jb2RlX3dhcm5pbmcgPSB5ZXMgJiYgdGVzdCAiJFB5X0RFQlVHIiAhPSAidHJ1ZSIKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV3VucmVhY2hhYmxlLWNvZGUiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KQEAgLTIzMzIsNiArMjUxMywxNyBAQAogXSwKIFtBQ19NU0dfUkVTVUxUKGRlZmF1bHQpXSkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXIpCitBQ19BUkdfV0lUSChhZGRyZXNzX3Nhbml0aXplciwKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYWRkcmVzcy1zYW5pdGl6ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBBZGRyZXNzU2FuaXRpemVyXSksCitbCitBQ19NU0dfUkVTVUxUKCR3aXRodmFsKQorQkFTRUNGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyICRCQVNFQ0ZMQUdTIgorTERGTEFHUz0iLWZzYW5pdGl6ZT1hZGRyZXNzICRMREZMQUdTIgorXSwKK1tBQ19NU0dfUkVTVUxUKG5vKV0pCisKICMgTW9zdCBTVlI0IHBsYXRmb3JtcyAoZS5nLiBTb2xhcmlzKSBuZWVkIC1sc29ja2V0IGFuZCAtbG5zbC4KIEFDX0NIRUNLX0xJQihuc2wsIHRfb3BlbiwgW0xJQlM9Ii1sbnNsICRMSUJTIl0pICMgU1ZSNAogQUNfQ0hFQ0tfTElCKHNvY2tldCwgc29ja2V0LCBbTElCUz0iLWxzb2NrZXQgJExJQlMiXSwgW10sICRMSUJTKSAjIFNWUjQgc29ja2V0cwpAQCAtMjgxNSw2ICszMDA3LDE2IEBACiAJZmkKIGZpCiAKK0FDX01TR19DSEVDS0lORyhmb3IgQ0FOX1JBV19GRF9GUkFNRVMpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIC8qIENBTl9SQVdfRkRfRlJBTUVTIGF2YWlsYWJsZSBjaGVjayAqLworI2luY2x1ZGUgPGxpbnV4L2Nhbi9yYXcuaD5dXSwKK1tbaW50IGNhbl9yYXdfZmRfZnJhbWVzID0gQ0FOX1JBV19GRF9GUkFNRVM7XV0pXSxbCisgIEFDX0RFRklORShIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTLCAxLCBbRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBMaW51eCAzLjYgb3IgbGF0ZXIuXSkKKyAgQUNfTVNHX1JFU1VMVCh5ZXMpCitdLFsKKyAgQUNfTVNHX1JFU1VMVChubykKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyKQogQUNfQ09NUElMRV9JRkVMU0UoWwogICBBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPl1dLCBbW0ZTSU9SZWZOdW0gZlJlZiA9IDBdXSkKQEAgLTMyNjMsNiArMzQ2NSw3IEBACiAKIEFDX0NIRUNLX0ZVTkNTKGNsb2NrX2dldHRpbWUsIFtdLCBbCiAgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXR0aW1lLCBbCisgICAgICAgIExJQlM9IiRMSUJTIC1scnQiCiAgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEpCiAgICAgICAgIEFDX0RFRklORShUSU1FTU9EVUxFX0xJQiwgW3J0XSwKICAgICAgICAgICAgICAgICAgIFtMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKV0pCkBAIC0zNzA3LDcgKzM5MTAsNyBAQAogIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlcikKLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKK0FDX0xJTktfSUZFTFNFKCAgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3ZxICVyY3gsICVyYXgiKTsKIF1dKV0sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PXllc10sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PW5vXSkKIEFDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfeDY0KQpAQCAtMzgwNSw3ICs0MDA4LDcgQEAKICMgc28gd2UgdHJ5IGl0IG9uIGFsbCBwbGF0Zm9ybXMuCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgeDg3IGNvbnRyb2wgd29yZCkKLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKK0FDX0xJTktfSUZFTFNFKCAgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKICAgdW5zaWduZWQgc2hvcnQgY3c7CiAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm5zdGN3ICUwIiA6ICI9bSIgKGN3KSk7CiAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZmxkY3cgJTAiIDogOiAibSIgKGN3KSk7CkBAIC0zODE3LDYgKzQwMjAsMTkgQEAKICAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgeDg3IGNvbnRyb2wgd29yZF0pCiBmaQogCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB3ZSBjYW4gdXNlIGdjYyBpbmxpbmUgYXNzZW1ibGVyIHRvIGdldCBhbmQgc2V0IG1jNjg4ODEgZnBjcikKK0FDX0xJTktfSUZFTFNFKCAgIFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKKyAgdW5zaWduZWQgaW50IGZwY3I7CisgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAoZnBjcikpOworICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChmcGNyKSk7CitdXSldLFtoYXZlX2djY19hc21fZm9yX21jNjg4ODE9eWVzXSxbaGF2ZV9nY2NfYXNtX2Zvcl9tYzY4ODgxPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfbWM2ODg4MSkKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX21jNjg4ODEiID0geWVzCit0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0NDX0FTTV9GT1JfTUM2ODg4MSwgMSwKKyAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgZ2NjIGlubGluZSBhc3NlbWJsZXIgdG8gZ2V0IGFuZCBzZXQgbWM2ODg4MSBmcGNyXSkKK2ZpCisKICMgRGV0ZWN0IHdoZXRoZXIgc3lzdGVtIGFyaXRobWV0aWMgaXMgc3ViamVjdCB0byB4ODctc3R5bGUgZG91YmxlCiAjIHJvdW5kaW5nIGlzc3Vlcy4gIFRoZSByZXN1bHQgb2YgdGhpcyB0ZXN0IGhhcyBsaXR0bGUgbWVhbmluZyBvbiBub24KICMgSUVFRSA3NTQgcGxhdGZvcm1zLiAgT24gSUVFRSA3NTQsIHRlc3Qgc2hvdWxkIHJldHVybiAxIGlmIHJvdW5kaW5nCkBAIC00MDk4LDEyICs0MzE0LDEyIEBACiBBQ19NU0dfQ0hFQ0tJTkcoQUJJRkxBR1MpCiBBQ19NU0dfUkVTVUxUKCRBQklGTEFHUykKIEFDX01TR19DSEVDS0lORyhTT0FCSSkKLVNPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30KK1NPQUJJPSdjcHl0aG9uLSdgZWNobyAkVkVSU0lPTiB8IHRyIC1kIC5gJHtBQklGTEFHU30ke1BMQVRGT1JNX1RSSVBMRVQ6Ky0kUExBVEZPUk1fVFJJUExFVH0KIEFDX01TR19SRVNVTFQoJFNPQUJJKQogCiBBQ19TVUJTVChFWFRfU1VGRklYKQogY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgIExpbnV4KnxHTlUqKQorICAgIExpbnV4KnxHTlUqfERhcndpbikKIAlFWFRfU1VGRklYPS4ke1NPQUJJfSR7U0hMSUJfU1VGRklYfTs7CiAgICAgKikKIAlFWFRfU1VGRklYPSR7U0hMSUJfU1VGRklYfTs7CkBAIC00MjM4LDYgKzQ0NTQsMTAgQEAKICAgW0RlZmluZSBpZiB5b3UgY2FuIHR1cm4gb2ZmIHJlYWRsaW5lJ3Mgc2lnbmFsIGhhbmRsaW5nLl0pLCApCiBmaQogCitBQ19DSEVDS19MSUIocmVhZGxpbmUsIGFwcGVuZF9oaXN0b3J5LAorCUFDX0RFRklORShIQVZFX1JMX0FQUEVORF9ISVNUT1JZLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHJlYWRsaW5lIHN1cHBvcnRzIGFwcGVuZF9oaXN0b3J5XSksICwkUkVBRExJTkVfTElCUykKKwogIyBFbmQgb2YgcmVhZGxpbmUgY2hlY2tzOiByZXN0b3JlIExJQlMKIExJQlM9JExJQlNfbm9fcmVhZGxpbmUKIApAQCAtNDcxNSw3ICs0OTM1LDcgQEAKIGRvbmUKIAogQUNfU1VCU1QoU1JDRElSUykKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMgUHJvZ3JhbXMiCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGJ1aWxkIGRpcmVjdG9yaWVzKQogZm9yIGRpciBpbiAkU1JDRElSUzsgZG8KICAgICBpZiB0ZXN0ICEgLWQgJGRpcjsgdGhlbgpAQCAtNDgwNyw2ICs1MDI3LDQ3IEBACiAgICAgZXNhYwogZmkKIAorIyBDaGVjayBmb3Igc3RkYXRvbWljLmgKK0FDX01TR19DSEVDS0lORyhmb3Igc3RkYXRvbWljLmgpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3RkYXRvbWljLmg+CisgICAgYXRvbWljX2ludCB2YWx1ZSA9IEFUT01JQ19WQVJfSU5JVCgxKTsKKyAgICBfQXRvbWljIHZvaWQgKnB5X2F0b21pY19hZGRyZXNzID0gKHZvaWQqKSAmdmFsdWU7CisgICAgaW50IG1haW4oKSB7CisgICAgICBpbnQgbG9hZGVkX3ZhbHVlID0gYXRvbWljX2xvYWQoJnZhbHVlKTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgXV0pCitdLFtoYXZlX3N0ZGF0b21pY19oPXllc10sW2hhdmVfc3RkYXRvbWljX2g9bm9dKQorCitBQ19NU0dfUkVTVUxUKCRoYXZlX3N0ZGF0b21pY19oKQorCitpZiB0ZXN0ICIkaGF2ZV9zdGRhdG9taWNfaCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9TVERfQVRPTUlDLCAxLAorICAgICAgICAgICAgICBbSGFzIHN0ZGF0b21pYy5oLCBhdG9taWNfaW50IGFuZCBfQXRvbWljIHZvaWQqIHR5cGVzIHdvcmtdKQorZmkKKworIyBDaGVjayBmb3IgR0NDID49IDQuNyBfX2F0b21pYyBidWlsdGlucworQUNfTVNHX0NIRUNLSU5HKGZvciBHQ0MgPj0gNC43IF9fYXRvbWljIGJ1aWx0aW5zKQorQUNfTElOS19JRkVMU0UoCitbCisgIEFDX0xBTkdfU09VUkNFKFtbCisgICAgdm9sYXRpbGUgaW50IHZhbCA9IDE7CisgICAgaW50IG1haW4oKSB7CisgICAgICBfX2F0b21pY19sb2FkX24oJnZhbCwgX19BVE9NSUNfU0VRX0NTVCk7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIF1dKQorXSxbaGF2ZV9idWlsdGluX2F0b21pYz15ZXNdLFtoYXZlX2J1aWx0aW5fYXRvbWljPW5vXSkKKworQUNfTVNHX1JFU1VMVCgkaGF2ZV9idWlsdGluX2F0b21pYykKKworaWYgdGVzdCAiJGhhdmVfYnVpbHRpbl9hdG9taWMiID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfQlVJTFRJTl9BVE9NSUMsIDEsIFtIYXMgYnVpbHRpbiBhdG9taWNzXSkKK2ZpCisKICMgZW5zdXJlcGlwIG9wdGlvbgogQUNfTVNHX0NIRUNLSU5HKGZvciBlbnN1cmVwaXApCiBBQ19BUkdfV0lUSChlbnN1cmVwaXAsCkBAIC00ODIyLDYgKzUwODMsNTAgQEAKIEFDX01TR19SRVNVTFQoJEVOU1VSRVBJUCkKIEFDX1NVQlNUKEVOU1VSRVBJUCkKIAorIyBjaGVjayBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBvZiBhIGRfdHlwZSBmaWVsZCBhbmQgRFRfVU5LTk9XTiBpcyBkZWZpbmVkCitBQ19NU0dfQ0hFQ0tJTkcoaWYgdGhlIGRpcmVudCBzdHJ1Y3R1cmUgb2YgYSBkX3R5cGUgZmllbGQpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8ZGlyZW50Lmg+CisKKyAgICBpbnQgbWFpbigpIHsKKyAgICAgIHN0cnVjdCBkaXJlbnQgZW50cnk7CisgICAgICByZXR1cm4gZW50cnkuZF90eXBlID09IERUX1VOS05PV047CisgICAgfQorICBdXSkKK10sW2hhdmVfZGlyZW50X2RfdHlwZT15ZXNdLFtoYXZlX2RpcmVudF9kX3R5cGU9bm9dKQorQUNfTVNHX1JFU1VMVCgkaGF2ZV9kaXJlbnRfZF90eXBlKQorCitpZiB0ZXN0ICIkaGF2ZV9kaXJlbnRfZF90eXBlIiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX0RJUkVOVF9EX1RZUEUsIDEsCisgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgZGlyZW50IHN0cnVjdHVyZSBoYXMgYSBkX3R5cGUgZmllbGRdKQorZmkKKworIyBjaGVjayBpZiB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBhdmFpbGFibGUKK0FDX01TR19DSEVDS0lORyhmb3IgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwpCitBQ19MSU5LX0lGRUxTRSgKK1sKKyAgQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKworICAgIGludCBtYWluKCkgeworICAgICAgICBjb25zdCBpbnQgZmxhZ3MgPSAwOworICAgICAgICBjaGFyIGJ1ZmZlclsxXTsKKyAgICAgICAgaW50IG47CisgICAgICAgIC8qIGlnbm9yZSB0aGUgcmVzdWx0LCBQeXRob24gY2hlY2tzIGZvciBFTk9TWVMgYXQgcnVudGltZSAqLworICAgICAgICAodm9pZClzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICBdXSkKK10sW2hhdmVfZ2V0cmFuZG9tX3N5c2NhbGw9eWVzXSxbaGF2ZV9nZXRyYW5kb21fc3lzY2FsbD1ub10pCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dldHJhbmRvbV9zeXNjYWxsKQorCitpZiB0ZXN0ICIkaGF2ZV9nZXRyYW5kb21fc3lzY2FsbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCwgMSwKKyAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZV0pCitmaQorCiAjIGdlbmVyYXRlIG91dHB1dCBmaWxlcwogQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlLnByZSBNb2R1bGVzL1NldHVwLmNvbmZpZyBNaXNjL3B5dGhvbi5wYyBNaXNjL3B5dGhvbi1jb25maWcuc2gpCiBBQ19DT05GSUdfRklMRVMoW01vZHVsZXMvbGRfc29fYWl4XSwgW2NobW9kICt4IE1vZHVsZXMvbGRfc29fYWl4XSkKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IDg1NDkwYzguLjBkNDBjOTQgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTAxLDYgKzEwMSw5IEBACiAvKiBEZWZpbmUgaWYgYHVuc2V0ZW52YCBkb2VzIG5vdCByZXR1cm4gYW4gaW50LiAqLwogI3VuZGVmIEhBVkVfQlJPS0VOX1VOU0VURU5WCiAKKy8qIEhhcyBidWlsdGluIGF0b21pY3MgKi8KKyN1bmRlZiBIQVZFX0JVSUxUSU5fQVRPTUlDCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLiAqLwogI3VuZGVmIEhBVkVfQzk5X0JPT0wKIApAQCAtMTgwLDYgKzE4Myw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0RJUkVDVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBkaXJlbnQgc3RydWN0dXJlIGhhcyBhIGRfdHlwZSBmaWVsZCAqLworI3VuZGVmIEhBVkVfRElSRU5UX0RfVFlQRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuCiAgICAqLwogI3VuZGVmIEhBVkVfRElSRU5UX0gKQEAgLTMxMyw2ICszMTksOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQU1NQQogCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCBtYzY4ODgxIGZwY3IgKi8KKyN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX01DNjg4ODEKKwogLyogRGVmaW5lIGlmIHdlIGNhbiB1c2UgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyICovCiAjdW5kZWYgSEFWRV9HQ0NfQVNNX0ZPUl9YNjQKIApAQCAtMzg2LDYgKzM5NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3ZW50JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFBXRU5UCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRyZXNnaWQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUUkVTR0lECiAKQEAgLTUxOSw2ICs1MzEsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9DQU5fSAogCisvKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIExpbnV4IDMuNiBvciBsYXRlci4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfRkRfRlJBTUVTCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuL3Jhdy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX0NBTl9SQVdfSAogCkBAIC02OTMsNiArNzA4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVuYW1lYXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVOQU1FQVQKIAorLyogRGVmaW5lIGlmIHJlYWRsaW5lIHN1cHBvcnRzIGFwcGVuZF9oaXN0b3J5ICovCisjdW5kZWYgSEFWRV9STF9BUFBFTkRfSElTVE9SWQorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4xICovCiAjdW5kZWYgSEFWRV9STF9DQUxMQkFDSwogCkBAIC04NzEsNiArODg5LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1RETElCX0gKIAorLyogSGFzIHN0ZGF0b21pYy5oLCBhdG9taWNfaW50IGFuZCBfQXRvbWljIHZvaWQqIHR5cGVzIHdvcmsgKi8KKyN1bmRlZiBIQVZFX1NURF9BVE9NSUMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSRFVQCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMjc3OTY1OC4uZGE2NzczMSAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTI1LDYgKzI1LDExIEBACiBweV9jZmxhZ3Nfbm9kaXN0ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWV9DRkxBR1NfTk9ESVNUJykKIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSBjZmxhZ3MgKyAnICcgKyBweV9jZmxhZ3Nfbm9kaXN0CiAKK2NsYXNzIER1bW15OgorICAgICIiIkhhY2sgZm9yIHBhcmFsbGVsIGJ1aWxkIiIiCisgICAgUHJvY2Vzc1Bvb2xFeGVjdXRvciA9IE5vbmUKK3N5cy5tb2R1bGVzWydjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcyddID0gRHVtbXkKKwogZGVmIGdldF9wbGF0Zm9ybSgpOgogICAgICMgY3Jvc3MgYnVpbGQKICAgICBpZiAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uOgpAQCAtMTczLDYgKzE3OCw5IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3QpOgogICAgICAgICBidWlsZF9leHQuX19pbml0X18oc2VsZiwgZGlzdCkKICAgICAgICAgc2VsZi5mYWlsZWQgPSBbXQorICAgICAgICBzZWxmLmZhaWxlZF9vbl9pbXBvcnQgPSBbXQorICAgICAgICBpZiAnLWonIGluIG9zLmVudmlyb24uZ2V0KCdNQUtFRkxBR1MnLCAnJyk6CisgICAgICAgICAgICBzZWxmLnBhcmFsbGVsID0gVHJ1ZQogCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbnMoc2VsZik6CiAKQEAgLTI1Miw5ICsyNjAsMTMgQEAKIAogICAgICAgICBidWlsZF9leHQuYnVpbGRfZXh0ZW5zaW9ucyhzZWxmKQogCisgICAgICAgIGZvciBleHQgaW4gc2VsZi5leHRlbnNpb25zOgorICAgICAgICAgICAgc2VsZi5jaGVja19leHRlbnNpb25faW1wb3J0KGV4dCkKKwogICAgICAgICBsb25nZXN0ID0gbWF4KFtsZW4oZS5uYW1lKSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdLCBkZWZhdWx0PTApCi0gICAgICAgIGlmIHNlbGYuZmFpbGVkOgotICAgICAgICAgICAgbG9uZ2VzdCA9IG1heChsb25nZXN0LCBtYXgoW2xlbihuYW1lKSBmb3IgbmFtZSBpbiBzZWxmLmZhaWxlZF0pKQorICAgICAgICBpZiBzZWxmLmZhaWxlZCBvciBzZWxmLmZhaWxlZF9vbl9pbXBvcnQ6CisgICAgICAgICAgICBhbGxfZmFpbGVkID0gc2VsZi5mYWlsZWQgKyBzZWxmLmZhaWxlZF9vbl9pbXBvcnQKKyAgICAgICAgICAgIGxvbmdlc3QgPSBtYXgobG9uZ2VzdCwgbWF4KFtsZW4obmFtZSkgZm9yIG5hbWUgaW4gYWxsX2ZhaWxlZF0pKQogCiAgICAgICAgIGRlZiBwcmludF90aHJlZV9jb2x1bW4obHN0KToKICAgICAgICAgICAgIGxzdC5zb3J0KGtleT1zdHIubG93ZXIpCkBAIC0yODIsNiArMjk0LDE0IEBACiAgICAgICAgICAgICBwcmludF90aHJlZV9jb2x1bW4oZmFpbGVkKQogICAgICAgICAgICAgcHJpbnQoKQogCisgICAgICAgIGlmIHNlbGYuZmFpbGVkX29uX2ltcG9ydDoKKyAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYuZmFpbGVkX29uX2ltcG9ydFs6XQorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoIkZvbGxvd2luZyBtb2R1bGVzIGJ1aWx0IHN1Y2Nlc3NmdWxseSIKKyAgICAgICAgICAgICAgICAgICIgYnV0IHdlcmUgcmVtb3ZlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIGltcG9ydGVkOiIpCisgICAgICAgICAgICBwcmludF90aHJlZV9jb2x1bW4oZmFpbGVkKQorICAgICAgICAgICAgcHJpbnQoKQorCiAgICAgZGVmIGJ1aWxkX2V4dGVuc2lvbihzZWxmLCBleHQpOgogCiAgICAgICAgIGlmIGV4dC5uYW1lID09ICdfY3R5cGVzJzoKQEAgLTI5NSw2ICszMTUsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBzeXMuZXhjX2luZm8oKVsxXSkpCiAgICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KKworICAgIGRlZiBjaGVja19leHRlbnNpb25faW1wb3J0KHNlbGYsIGV4dCk6CisgICAgICAgICMgRG9uJ3QgdHJ5IHRvIGltcG9ydCBhbiBleHRlbnNpb24gdGhhdCBoYXMgZmFpbGVkIHRvIGNvbXBpbGUKKyAgICAgICAgaWYgZXh0Lm5hbWUgaW4gc2VsZi5mYWlsZWQ6CisgICAgICAgICAgICBzZWxmLmFubm91bmNlKAorICAgICAgICAgICAgICAgICdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIGZhaWxlZCBidWlsZCAiJXMiJyAlCisgICAgICAgICAgICAgICAgZXh0Lm5hbWUsIGxldmVsPTEpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICAjIFdvcmthcm91bmQgZm9yIE1hYyBPUyBYOiBUaGUgQ2FyYm9uLWJhc2VkIG1vZHVsZXMgY2Fubm90IGJlCiAgICAgICAgICMgcmVsaWFibHkgaW1wb3J0ZWQgaW50byBhIGNvbW1hbmQtbGluZSBQeXRob24KICAgICAgICAgaWYgJ0NhcmJvbicgaW4gZXh0LmV4dHJhX2xpbmtfYXJnczoKQEAgLTMzOCw5ICszNjcsOSBAQAogICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oZXh0Lm5hbWUsIGV4dF9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlcj1sb2FkZXIpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9TcGVjTWV0aG9kcyhzcGVjKS5sb2FkKCkKKyAgICAgICAgICAgIGltcG9ydGxpYi5fYm9vdHN0cmFwLl9sb2FkKHNwZWMpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyB3aHk6Ci0gICAgICAgICAgICBzZWxmLmZhaWxlZC5hcHBlbmQoZXh0Lm5hbWUpCisgICAgICAgICAgICBzZWxmLmZhaWxlZF9vbl9pbXBvcnQuYXBwZW5kKGV4dC5uYW1lKQogICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgnKioqIFdBUk5JTkc6IHJlbmFtaW5nICIlcyIgc2luY2UgaW1wb3J0aW5nIGl0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZhaWxlZDogJXMnICUgKGV4dC5uYW1lLCB3aHkpLCBsZXZlbD0zKQogICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmlucGxhY2UKQEAgLTM1MCwxNyArMzc5LDYgQEAKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUobmV3bmFtZSkKICAgICAgICAgICAgIG9zLnJlbmFtZShleHRfZmlsZW5hbWUsIG5ld25hbWUpCiAKLSAgICAgICAgICAgICMgWFhYIC0tIFRoaXMgcmVsaWVzIG9uIGEgVmlsZSBIQUNLIGluCi0gICAgICAgICAgICAjIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dC5idWlsZF9leHRlbnNpb24oKS4gIFRoZQotICAgICAgICAgICAgIyBfYnVpbHRfb2JqZWN0cyBhdHRyaWJ1dGUgaXMgc3RvcmVkIHRoZXJlIHN0cmljdGx5IGZvcgotICAgICAgICAgICAgIyB1c2UgaGVyZS4KLSAgICAgICAgICAgICMgSWYgdGhlcmUgaXMgYSBmYWlsdXJlLCBfYnVpbHRfb2JqZWN0cyBtYXkgbm90IGJlIHRoZXJlLAotICAgICAgICAgICAgIyBzbyBjYXRjaCB0aGUgQXR0cmlidXRlRXJyb3IgYW5kIG1vdmUgb24uCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX2J1aWx0X29iamVjdHM6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLmFubm91bmNlKCd1bmFibGUgdG8gcmVtb3ZlIGZpbGVzIChpZ25vcmVkKScpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGV4Y190eXBlLCB3aHksIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoJyoqKiBXQVJOSU5HOiBpbXBvcnRpbmcgZXh0ZW5zaW9uICIlcyIgJwpAQCAtNjAyLDYgKzYyMCw4IEBACiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0YnVmZmVyJywgWydfdGVzdGJ1ZmZlci5jJ10pICkKICAgICAgICAgIyBUZXN0IGxvYWRpbmcgbXVsdGlwbGUgbW9kdWxlcyBmcm9tIG9uZSBjb21waWxlZCBmaWxlIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTY0MjEpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0aW1wb3J0bXVsdGlwbGUnLCBbJ190ZXN0aW1wb3J0bXVsdGlwbGUuYyddKSApCisgICAgICAgICMgVGVzdCBtdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXQgKFBFUCA0ODkpCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0bXVsdGlwaGFzZScsIFsnX3Rlc3RtdWx0aXBoYXNlLmMnXSkgKQogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKQEAgLTE1NTcsNyArMTU3Nyw3IEBACiAKICAgICAgICAgaWYgJ2QnIG5vdCBpbiBzeXMuYWJpZmxhZ3M6CiAgICAgICAgICAgICBleHQgPSBFeHRlbnNpb24oJ3h4bGltaXRlZCcsIFsneHhsaW1pdGVkLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsoJ1B5X0xJTUlURURfQVBJJywgJzB4MDMwNDAwMDAnKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bKCdQeV9MSU1JVEVEX0FQSScsICcweDAzMDUwMDAwJyldKQogICAgICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCiAKICAgICAgICAgcmV0dXJuIG1pc3NpbmcK